summaryrefslogtreecommitdiffstats
path: root/vendor
diff options
context:
space:
mode:
Diffstat (limited to 'vendor')
-rw-r--r--vendor/anstream-0.5.0/.cargo-checksum.json1
-rw-r--r--vendor/anstream-0.5.0/Cargo.toml140
-rw-r--r--vendor/anstream-0.5.0/LICENSE-APACHE (renamed from vendor/unicode_categories/LICENSE-APACHE)0
-rw-r--r--vendor/anstream-0.5.0/LICENSE-MIT (renamed from vendor/unicode_categories/LICENSE-MIT)2
-rw-r--r--vendor/anstream-0.5.0/README.md34
-rw-r--r--vendor/anstream-0.5.0/benches/stream.rs82
-rw-r--r--vendor/anstream-0.5.0/benches/strip.rs102
-rw-r--r--vendor/anstream-0.5.0/benches/wincon.rs26
-rw-r--r--vendor/anstream-0.5.0/src/adapter/mod.rs15
-rw-r--r--vendor/anstream-0.5.0/src/adapter/strip.rs513
-rw-r--r--vendor/anstream-0.5.0/src/adapter/wincon.rs304
-rw-r--r--vendor/anstream-0.5.0/src/auto.rs268
-rw-r--r--vendor/anstream-0.5.0/src/buffer.rs77
-rw-r--r--vendor/anstream-0.5.0/src/is_terminal.rs70
-rw-r--r--vendor/anstream-0.5.0/src/lib.rs81
-rw-r--r--vendor/anstream-0.5.0/src/lockable.rs51
-rw-r--r--vendor/anstream-0.5.0/src/macros.rs313
-rw-r--r--vendor/anstream-0.5.0/src/raw.rs40
-rw-r--r--vendor/anstream-0.5.0/src/strip.rs195
-rw-r--r--vendor/anstream-0.5.0/src/wincon.rs161
-rw-r--r--vendor/anstream/.cargo-checksum.json2
-rw-r--r--vendor/anstream/Cargo.toml2
-rw-r--r--vendor/anstream/src/auto.rs1
-rw-r--r--vendor/base64/.cargo-checksum.json2
-rw-r--r--vendor/base64/Cargo.lock122
-rw-r--r--vendor/base64/Cargo.toml17
-rw-r--r--vendor/base64/RELEASE-NOTES.md14
-rw-r--r--vendor/base64/benches/benchmarks.rs9
-rw-r--r--vendor/base64/src/chunked_encoder.rs10
-rw-r--r--vendor/base64/src/decode.rs8
-rw-r--r--vendor/base64/src/encode.rs31
-rw-r--r--vendor/base64/src/engine/general_purpose/mod.rs2
-rw-r--r--vendor/base64/src/engine/mod.rs17
-rw-r--r--vendor/base64/src/engine/naive.rs3
-rw-r--r--vendor/base64/src/lib.rs14
-rw-r--r--vendor/base64/src/prelude.rs3
-rw-r--r--vendor/base64/src/read/decoder_tests.rs2
-rw-r--r--vendor/base64/tests/encode.rs31
-rw-r--r--vendor/bitflags/.cargo-checksum.json2
-rw-r--r--vendor/bitflags/CHANGELOG.md7
-rw-r--r--vendor/bitflags/Cargo.lock73
-rw-r--r--vendor/bitflags/Cargo.toml2
-rw-r--r--vendor/bitflags/README.md8
-rw-r--r--vendor/bitflags/src/lib.rs8
-rw-r--r--vendor/bumpalo/.cargo-checksum.json2
-rw-r--r--vendor/bumpalo/CHANGELOG.md16
-rw-r--r--vendor/bumpalo/Cargo.toml5
-rw-r--r--vendor/bumpalo/README.md11
-rw-r--r--vendor/bumpalo/src/collections/vec.rs22
-rwxr-xr-xvendor/bumpalo/src/lib.rs8
-rw-r--r--vendor/bytecount/.cargo-checksum.json2
-rw-r--r--vendor/bytecount/Cargo.toml5
-rw-r--r--vendor/bytecount/README.md4
-rw-r--r--vendor/bytecount/benches/bench.rs69
-rw-r--r--[-rwxr-xr-x]vendor/bytecount/ci/miri.sh5
-rw-r--r--vendor/bytecount/src/integer_simd.rs20
-rw-r--r--vendor/bytecount/src/lib.rs35
-rw-r--r--vendor/bytecount/src/naive.rs9
-rw-r--r--vendor/bytecount/src/simd/aarch64.rs157
-rw-r--r--vendor/bytecount/src/simd/generic.rs20
-rw-r--r--vendor/bytecount/src/simd/mod.rs4
-rw-r--r--vendor/bytecount/src/simd/x86_avx2.rs52
-rw-r--r--vendor/bytecount/src/simd/x86_sse2.rs8
-rw-r--r--vendor/bytecount/tests/check.rs7
-rw-r--r--vendor/byteyarn/.cargo-checksum.json1
-rw-r--r--vendor/byteyarn/README.md59
-rw-r--r--vendor/byteyarn/rust-toolchain.toml3
-rw-r--r--vendor/byteyarn/rustfmt.toml2
-rw-r--r--vendor/byteyarn/src/boxed.rs714
-rw-r--r--vendor/byteyarn/src/convert.rs248
-rw-r--r--vendor/byteyarn/src/lib.rs113
-rw-r--r--vendor/byteyarn/src/raw.rs469
-rw-r--r--vendor/byteyarn/src/reffed.rs410
-rw-r--r--vendor/byteyarn/src/utf8.rs151
-rw-r--r--vendor/cargo_metadata/.cargo-checksum.json2
-rw-r--r--vendor/cargo_metadata/CHANGELOG.md6
-rw-r--r--vendor/cargo_metadata/Cargo.toml3
-rw-r--r--vendor/cargo_metadata/src/lib.rs90
-rw-r--r--vendor/cargo_metadata/src/libtest.rs165
-rw-r--r--vendor/cargo_metadata/tests/selftest.rs17
-rw-r--r--vendor/cargo_metadata/tests/test_samples.rs61
-rw-r--r--vendor/clap-cargo/.cargo-checksum.json1
-rw-r--r--vendor/clap-cargo/Cargo.lock201
-rw-r--r--vendor/clap-cargo/Cargo.toml106
-rw-r--r--vendor/clap-cargo/LICENSE-APACHE (renamed from vendor/byteyarn/LICENSE.md)6
-rw-r--r--vendor/clap-cargo/LICENSE-MIT19
-rw-r--r--vendor/clap-cargo/README.md62
-rw-r--r--vendor/clap-cargo/examples/flags.rs16
-rw-r--r--vendor/clap-cargo/src/features.rs168
-rw-r--r--vendor/clap-cargo/src/lib.rs52
-rw-r--r--vendor/clap-cargo/src/manifest.rs67
-rw-r--r--vendor/clap-cargo/src/style.rs23
-rw-r--r--vendor/clap-cargo/src/workspace.rs404
-rw-r--r--vendor/clap/.cargo-checksum.json2
-rw-r--r--vendor/clap/Cargo.lock83
-rw-r--r--vendor/clap/Cargo.toml16
-rw-r--r--vendor/clap_builder/.cargo-checksum.json2
-rw-r--r--vendor/clap_builder/Cargo.toml30
-rw-r--r--vendor/clap_builder/src/builder/arg.rs2
-rw-r--r--vendor/clap_builder/src/builder/command.rs60
-rw-r--r--vendor/clap_builder/src/builder/debug_asserts.rs16
-rw-r--r--vendor/clap_builder/src/builder/os_str.rs2
-rw-r--r--vendor/clap_builder/src/builder/str.rs2
-rw-r--r--vendor/clap_builder/src/parser/parser.rs6
-rw-r--r--vendor/clap_builder/src/util/any_value.rs2
-rw-r--r--vendor/clap_complete/.cargo-checksum.json2
-rw-r--r--vendor/clap_complete/Cargo.lock355
-rw-r--r--vendor/clap_complete/Cargo.toml17
-rw-r--r--vendor/clap_complete/README.md8
-rw-r--r--vendor/clap_complete/examples/dynamic.rs4
-rw-r--r--vendor/clap_complete/examples/exhaustive.rs203
-rw-r--r--vendor/clap_complete/src/dynamic.rs549
-rw-r--r--vendor/clap_complete/src/dynamic/completer.rs341
-rw-r--r--vendor/clap_complete/src/dynamic/mod.rs7
-rw-r--r--vendor/clap_complete/src/dynamic/shells/bash.rs121
-rw-r--r--vendor/clap_complete/src/dynamic/shells/fish.rs46
-rw-r--r--vendor/clap_complete/src/dynamic/shells/mod.rs82
-rw-r--r--vendor/clap_complete/src/dynamic/shells/shell.rs85
-rw-r--r--vendor/clap_complete/src/shells/bash.rs2
-rw-r--r--vendor/clap_complete/src/shells/fish.rs6
-rw-r--r--vendor/clap_complete/src/shells/powershell.rs4
-rw-r--r--vendor/clap_derive/.cargo-checksum.json2
-rw-r--r--vendor/clap_derive/Cargo.toml2
-rw-r--r--vendor/clap_derive/src/derives/args.rs2
-rw-r--r--vendor/clap_derive/src/derives/into_app.rs2
-rw-r--r--vendor/clap_derive/src/derives/parser.rs1
-rw-r--r--vendor/clap_derive/src/derives/subcommand.rs2
-rw-r--r--vendor/clap_derive/src/derives/value_enum.rs1
-rw-r--r--vendor/clap_lex/.cargo-checksum.json2
-rw-r--r--vendor/clap_lex/Cargo.toml4
-rw-r--r--vendor/clap_lex/README.md8
-rw-r--r--vendor/clap_lex/src/lib.rs46
-rw-r--r--vendor/color-print-proc-macro/.cargo-checksum.json2
-rw-r--r--vendor/color-print-proc-macro/Cargo.toml4
-rw-r--r--vendor/color-print-proc-macro/LICENSE-APACHE176
-rw-r--r--vendor/color-print-proc-macro/LICENSE-MIT (renamed from vendor/io-lifetimes/LICENSE-MIT)0
-rw-r--r--vendor/color-print-proc-macro/src/lib.rs13
-rw-r--r--vendor/color-print-proc-macro/src/untagged.rs2
-rw-r--r--vendor/color-print/.cargo-checksum.json2
-rw-r--r--vendor/color-print/Cargo.toml8
-rw-r--r--vendor/color-print/LICENSE-APACHE176
-rw-r--r--vendor/color-print/LICENSE-MIT (renamed from vendor/linux-raw-sys-0.3.2/LICENSE-MIT)0
-rw-r--r--vendor/color-print/README.md85
-rw-r--r--vendor/color-print/src/lib.rs91
-rw-r--r--vendor/compiler_builtins/.cargo-checksum.json2
-rw-r--r--vendor/compiler_builtins/Cargo.lock6
-rw-r--r--vendor/compiler_builtins/Cargo.toml2
-rw-r--r--vendor/compiler_builtins/build.rs8
-rw-r--r--vendor/compiler_builtins/src/lib.rs7
-rw-r--r--vendor/compiler_builtins/src/macros.rs2
-rw-r--r--vendor/compiler_builtins/src/math.rs4
-rw-r--r--vendor/derivative/.cargo-checksum.json1
-rw-r--r--vendor/derivative/CHANGELOG.md76
-rw-r--r--vendor/derivative/CONTRIBUTING.md14
-rw-r--r--vendor/derivative/Cargo.toml40
-rw-r--r--vendor/derivative/LICENSE-APACHE (renamed from vendor/io-lifetimes/LICENSE-APACHE)0
-rw-r--r--vendor/derivative/LICENSE-MIT19
-rw-r--r--vendor/derivative/README.md55
-rw-r--r--vendor/derivative/book.toml16
-rw-r--r--vendor/derivative/doc/Clone.md38
-rw-r--r--vendor/derivative/doc/Debug.md153
-rw-r--r--vendor/derivative/doc/Default.md106
-rw-r--r--vendor/derivative/doc/Hash.md83
-rw-r--r--vendor/derivative/doc/README.md125
-rw-r--r--vendor/derivative/doc/SUMMARY.md25
-rw-r--r--vendor/derivative/doc/cmp.md123
-rw-r--r--vendor/derivative/doc/custom.css24
-rw-r--r--vendor/derivative/doc/debug-transparent-orig.rs8
-rw-r--r--vendor/derivative/doc/debug-transparent.rs5
-rw-r--r--vendor/derivative/doc/default-enum-orig.rs19
-rw-r--r--vendor/derivative/doc/default-enum.rs11
-rw-r--r--vendor/derivative/doc/default-value-orig.rs27
-rw-r--r--vendor/derivative/doc/default-value.rs18
-rw-r--r--vendor/derivative/doc/eq-ignore-orig.rs40
-rw-r--r--vendor/derivative/doc/eq-ignore.rs26
-rw-r--r--vendor/derivative/doc/styles/website.css11
-rw-r--r--vendor/derivative/src/ast.rs160
-rw-r--r--vendor/derivative/src/attr.rs887
-rw-r--r--vendor/derivative/src/bound.rs175
-rw-r--r--vendor/derivative/src/clone.rs196
-rw-r--r--vendor/derivative/src/cmp.rs407
-rw-r--r--vendor/derivative/src/debug.rs225
-rw-r--r--vendor/derivative/src/default.rs120
-rw-r--r--vendor/derivative/src/hash.rs97
-rw-r--r--vendor/derivative/src/lib.rs94
-rw-r--r--vendor/derivative/src/matcher.rs336
-rw-r--r--vendor/derivative/src/paths.rs10
-rw-r--r--vendor/derivative/src/utils.rs43
-rw-r--r--vendor/derivative/tests/clippy-warning-clone-from.rs13
-rw-r--r--vendor/derivative/tests/compile-fail/derive-debug-unused.rs19
-rw-r--r--vendor/derivative/tests/compile-fail/derive-debug-unused.stderr11
-rw-r--r--vendor/derivative/tests/compile-fail/derive-debug.rs15
-rw-r--r--vendor/derivative/tests/compile-fail/derive-debug.stderr9
-rw-r--r--vendor/derivative/tests/compile-fail/derive-partial-ord.rs11
-rw-r--r--vendor/derivative/tests/compile-fail/derive-partial-ord.stderr5
-rw-r--r--vendor/derivative/tests/compile-fail/invalid-attribute.rs23
-rw-r--r--vendor/derivative/tests/compile-fail/invalid-attribute.stderr23
-rw-r--r--vendor/derivative/tests/compile-fail/unknown-attribute.rs15
-rw-r--r--vendor/derivative/tests/compile-fail/unknown-attribute.stderr11
-rw-r--r--vendor/derivative/tests/compile-fail/unknown-derive.rs22
-rw-r--r--vendor/derivative/tests/compile-fail/unknown-derive.stderr17
-rw-r--r--vendor/derivative/tests/compile-test.rs9
-rw-r--r--vendor/derivative/tests/derive-clone-generics.rs29
-rwxr-xr-xvendor/derivative/tests/derive-clone.rs66
-rw-r--r--vendor/derivative/tests/derive-debug-bounds.rs83
-rw-r--r--vendor/derivative/tests/derive-debug-generics.rs93
-rw-r--r--vendor/derivative/tests/derive-debug-packed.rs74
-rw-r--r--vendor/derivative/tests/derive-debug-transparent.rs39
-rw-r--r--vendor/derivative/tests/derive-debug.rs77
-rwxr-xr-xvendor/derivative/tests/derive-default-bounds.rs42
-rw-r--r--vendor/derivative/tests/derive-default.rs78
-rw-r--r--vendor/derivative/tests/derive-eq-packed.rs61
-rw-r--r--vendor/derivative/tests/derive-eq.rs50
-rwxr-xr-xvendor/derivative/tests/derive-hash.rs134
-rw-r--r--vendor/derivative/tests/derive-ord-packed.rs264
-rw-r--r--vendor/derivative/tests/derive-ord.rs266
-rw-r--r--vendor/derivative/tests/derive-partial-eq-packed.rs120
-rw-r--r--vendor/derivative/tests/derive-partial-eq.rs148
-rw-r--r--vendor/derivative/tests/issue-37-turbofish.rs12
-rw-r--r--vendor/derivative/tests/issue-55.rs21
-rw-r--r--vendor/derivative/tests/issue-57.rs19
-rw-r--r--vendor/derivative/tests/issue-58.rs18
-rw-r--r--vendor/derivative/tests/issue-67.rs11
-rw-r--r--vendor/derivative/tests/issue-82.rs13
-rw-r--r--vendor/derivative/tests/rustc-class-implement-traits.rs80
-rw-r--r--vendor/derivative/tests/rustc-deriving-bounds.rs24
-rw-r--r--vendor/derivative/tests/rustc-deriving-clone-array.rs27
-rw-r--r--vendor/derivative/tests/rustc-deriving-clone-enum.rs32
-rw-r--r--vendor/derivative/tests/rustc-deriving-clone-generic-enum.rs31
-rw-r--r--vendor/derivative/tests/rustc-deriving-clone-generic-tuple-struct.rs26
-rw-r--r--vendor/derivative/tests/rustc-deriving-clone-struct.rs47
-rw-r--r--vendor/derivative/tests/rustc-deriving-clone-tuple-struct.rs24
-rw-r--r--vendor/derivative/tests/rustc-deriving-cmp-generic-enum.rs68
-rw-r--r--vendor/derivative/tests/rustc-deriving-cmp-generic-struct-enum.rs66
-rw-r--r--vendor/derivative/tests/rustc-deriving-cmp-generic-struct.rs58
-rw-r--r--vendor/derivative/tests/rustc-deriving-cmp-generic-tuple-struct.rs55
-rw-r--r--vendor/derivative/tests/rustc-deriving-copyclone.rs61
-rw-r--r--vendor/derivative/tests/rustc-deriving-default-box.rs30
-rw-r--r--vendor/derivative/tests/rustc-deriving-enum-single-variant.rs30
-rw-r--r--vendor/derivative/tests/rustc-deriving-hash.rs83
-rw-r--r--vendor/derivative/tests/rustc-deriving-in-fn.rs27
-rw-r--r--vendor/derivative/tests/rustc-deriving-meta-multiple.rs42
-rw-r--r--vendor/derivative/tests/rustc-deriving-meta.rs39
-rw-r--r--vendor/derivative/tests/rustc-deriving-show-2.rs75
-rw-r--r--vendor/derivative/tests/rustc-deriving-show.rs51
-rw-r--r--vendor/derivative/tests/rustc-deriving-via-extension-hash-enum.rs36
-rw-r--r--vendor/derivative/tests/rustc-deriving-via-extension-hash-struct.rs34
-rw-r--r--vendor/derivative/tests/rustc-deriving-via-extension-type-params.rs33
-rw-r--r--vendor/derivative/tests/rustc-expr-copy.rs35
-rw-r--r--vendor/derivative/tests/rustc-exterior.rs41
-rw-r--r--vendor/derivative/tests/rustc-issue-12860.rs69
-rw-r--r--vendor/derivative/tests/rustc-issue-13434.rs38
-rw-r--r--vendor/derivative/tests/rustc-issue-16530.rs32
-rw-r--r--vendor/derivative/tests/rustc-issue-19037.rs38
-rw-r--r--vendor/derivative/tests/rustc-issue-19102.rs26
-rw-r--r--vendor/derivative/tests/rustc-issue-19135.rs30
-rw-r--r--vendor/derivative/tests/rustc-issue-19358.rs38
-rw-r--r--vendor/derivative/tests/rustc-issue-21402.rs29
-rw-r--r--vendor/derivative/tests/rustc-issue-23649-3.rs23
-rw-r--r--vendor/derivative/tests/rustc-issue-24085.rs38
-rw-r--r--vendor/derivative/tests/rustc-issue-25394.rs26
-rw-r--r--vendor/derivative/tests/rustc-issue-28561.rs136
-rw-r--r--vendor/derivative/tests/rustc-issue-29030.rs30
-rw-r--r--vendor/derivative/tests/rustc-issue-29540.rs509
-rw-r--r--vendor/derivative/tests/rustc-issue-29710.rs29
-rw-r--r--vendor/derivative/tests/rustc-issue-32292.rs27
-rw-r--r--vendor/derivative/tests/rustc-issue-3935.rs29
-rw-r--r--vendor/derivative/tests/rustc-issue-42453.rs28
-rw-r--r--vendor/derivative/tests/rustc-issue-58319.rs644
-rw-r--r--vendor/derivative/tests/rustc-issue-6341.rs30
-rw-r--r--vendor/derivative/tests/rustc-typeclasses-eq-example.rs83
-rw-r--r--vendor/derivative/tests/rustc-zero-sized-btreemap-insert.rs41
-rw-r--r--vendor/dirs-sys-0.3.7/.cargo-checksum.json (renamed from vendor/dirs-sys/.cargo-checksum.json)0
-rw-r--r--vendor/dirs-sys-0.3.7/Cargo.toml (renamed from vendor/dirs-sys/Cargo.toml)0
-rw-r--r--vendor/dirs-sys-0.3.7/LICENSE-APACHE (renamed from vendor/dirs-sys/LICENSE-APACHE)0
-rw-r--r--vendor/dirs-sys-0.3.7/LICENSE-MIT (renamed from vendor/dirs-sys/LICENSE-MIT)0
-rw-r--r--vendor/dirs-sys-0.3.7/README.md (renamed from vendor/dirs-sys/README.md)0
-rw-r--r--vendor/dirs-sys-0.3.7/src/lib.rs (renamed from vendor/dirs-sys/src/lib.rs)0
-rw-r--r--vendor/dirs-sys-0.3.7/src/xdg_user_dirs.rs (renamed from vendor/dirs-sys/src/xdg_user_dirs.rs)0
-rw-r--r--vendor/errno-dragonfly/.cargo-checksum.json1
-rw-r--r--vendor/errno-dragonfly/Cargo.toml27
-rw-r--r--vendor/errno-dragonfly/README.md3
-rw-r--r--vendor/errno-dragonfly/build.rs3
-rw-r--r--vendor/errno-dragonfly/src/errno.c3
-rw-r--r--vendor/errno-dragonfly/src/lib.rs6
-rw-r--r--vendor/errno/.cargo-checksum.json2
-rw-r--r--vendor/errno/CHANGELOG.md35
-rw-r--r--vendor/errno/Cargo.toml10
-rw-r--r--vendor/errno/src/hermit.rs2
-rw-r--r--vendor/errno/src/unix.rs19
-rw-r--r--vendor/fd-lock/.cargo-checksum.json2
-rw-r--r--vendor/fd-lock/Cargo.toml6
-rw-r--r--vendor/flate2/.cargo-checksum.json2
-rw-r--r--vendor/flate2/Cargo.lock2
-rw-r--r--vendor/flate2/Cargo.toml2
-rw-r--r--vendor/flate2/src/deflate/bufread.rs10
-rw-r--r--vendor/flate2/src/deflate/read.rs8
-rw-r--r--vendor/flate2/src/ffi/c.rs12
-rw-r--r--vendor/flate2/src/gz/bufread.rs16
-rw-r--r--vendor/flate2/src/gz/mod.rs9
-rw-r--r--vendor/flate2/src/gz/read.rs14
-rw-r--r--vendor/flate2/src/mem.rs58
-rw-r--r--vendor/flate2/src/zlib/bufread.rs10
-rw-r--r--vendor/flate2/src/zlib/read.rs8
-rw-r--r--vendor/git2/.cargo-checksum.json2
-rw-r--r--vendor/git2/CHANGELOG.md15
-rw-r--r--vendor/git2/Cargo.lock42
-rw-r--r--vendor/git2/Cargo.toml2
-rw-r--r--vendor/git2/README.md2
-rw-r--r--vendor/git2/src/lib.rs4
-rw-r--r--vendor/git2/src/remote.rs15
-rw-r--r--vendor/git2/src/stash.rs19
-rw-r--r--vendor/git2/src/tree.rs13
-rw-r--r--vendor/gix-actor/.cargo-checksum.json2
-rw-r--r--vendor/gix-actor/CHANGELOG.md26
-rw-r--r--vendor/gix-actor/Cargo.toml4
-rw-r--r--vendor/gix-attributes/.cargo-checksum.json2
-rw-r--r--vendor/gix-attributes/CHANGELOG.md42
-rw-r--r--vendor/gix-attributes/Cargo.toml11
-rw-r--r--vendor/gix-attributes/src/lib.rs11
-rw-r--r--vendor/gix-attributes/src/name.rs10
-rw-r--r--vendor/gix-attributes/src/parse.rs5
-rw-r--r--vendor/gix-attributes/src/search/mod.rs6
-rw-r--r--vendor/gix-attributes/src/search/outcome.rs40
-rw-r--r--vendor/gix-attributes/src/state.rs28
-rw-r--r--vendor/gix-command/.cargo-checksum.json2
-rw-r--r--vendor/gix-command/CHANGELOG.md29
-rw-r--r--vendor/gix-command/Cargo.toml2
-rw-r--r--vendor/gix-command/tests/command.rs18
-rw-r--r--vendor/gix-commitgraph/.cargo-checksum.json2
-rw-r--r--vendor/gix-commitgraph/CHANGELOG.md27
-rw-r--r--vendor/gix-commitgraph/Cargo.toml6
-rw-r--r--vendor/gix-commitgraph/src/lib.rs2
-rw-r--r--vendor/gix-config/.cargo-checksum.json2
-rw-r--r--vendor/gix-config/CHANGELOG.md35
-rw-r--r--vendor/gix-config/Cargo.toml8
-rw-r--r--vendor/gix-config/src/parse/section/mod.rs2
-rw-r--r--vendor/gix-credentials/.cargo-checksum.json2
-rw-r--r--vendor/gix-credentials/CHANGELOG.md26
-rw-r--r--vendor/gix-credentials/Cargo.lock18
-rw-r--r--vendor/gix-credentials/Cargo.toml6
-rw-r--r--vendor/gix-diff/.cargo-checksum.json2
-rw-r--r--vendor/gix-diff/CHANGELOG.md27
-rw-r--r--vendor/gix-diff/Cargo.toml6
-rw-r--r--vendor/gix-diff/src/tree/mod.rs2
-rw-r--r--vendor/gix-discover/.cargo-checksum.json2
-rw-r--r--vendor/gix-discover/CHANGELOG.md26
-rw-r--r--vendor/gix-discover/Cargo.toml6
-rw-r--r--vendor/gix-features-0.35.0/.cargo-checksum.json1
-rw-r--r--vendor/gix-features-0.35.0/CHANGELOG.md1563
-rw-r--r--vendor/gix-features-0.35.0/Cargo.toml184
-rw-r--r--vendor/gix-features-0.35.0/LICENSE-APACHE (renamed from vendor/rustix-0.37.6/LICENSE-Apache-2.0_WITH_LLVM-exception)31
-rw-r--r--vendor/gix-features-0.35.0/LICENSE-MIT21
-rw-r--r--vendor/gix-features-0.35.0/src/cache.rs76
-rw-r--r--vendor/gix-features-0.35.0/src/decode.rs38
-rw-r--r--vendor/gix-features-0.35.0/src/fs.rs118
-rw-r--r--vendor/gix-features-0.35.0/src/hash.rs190
-rw-r--r--vendor/gix-features-0.35.0/src/interrupt.rs161
-rw-r--r--vendor/gix-features-0.35.0/src/io.rs94
-rw-r--r--vendor/gix-features-0.35.0/src/lib.rs66
-rw-r--r--vendor/gix-features-0.35.0/src/parallel/eager_iter.rs124
-rw-r--r--vendor/gix-features-0.35.0/src/parallel/in_order.rs83
-rw-r--r--vendor/gix-features-0.35.0/src/parallel/in_parallel.rs301
-rw-r--r--vendor/gix-features-0.35.0/src/parallel/mod.rs178
-rw-r--r--vendor/gix-features-0.35.0/src/parallel/reduce.rs279
-rw-r--r--vendor/gix-features-0.35.0/src/parallel/serial.rs174
-rw-r--r--vendor/gix-features-0.35.0/src/progress.rs150
-rw-r--r--vendor/gix-features-0.35.0/src/threading.rs110
-rw-r--r--vendor/gix-features-0.35.0/src/zlib/mod.rs52
-rw-r--r--vendor/gix-features-0.35.0/src/zlib/stream/deflate/mod.rs113
-rw-r--r--vendor/gix-features-0.35.0/src/zlib/stream/deflate/tests.rs101
-rw-r--r--vendor/gix-features-0.35.0/src/zlib/stream/inflate.rs40
-rw-r--r--vendor/gix-features-0.35.0/src/zlib/stream/mod.rs4
-rw-r--r--vendor/gix-features-0.35.0/tests/features.rs1
-rw-r--r--vendor/gix-features-0.35.0/tests/hash.rs13
-rw-r--r--vendor/gix-features-0.35.0/tests/parallel/in_order_iter.rs54
-rw-r--r--vendor/gix-features-0.35.0/tests/parallel/mod.rs125
-rw-r--r--vendor/gix-features-0.35.0/tests/parallel_shared.rs1
-rw-r--r--vendor/gix-features-0.35.0/tests/parallel_shared_threaded.rs1
-rw-r--r--vendor/gix-features-0.35.0/tests/parallel_threaded.rs122
-rw-r--r--vendor/gix-features-0.35.0/tests/pipe.rs117
-rw-r--r--vendor/gix-features-0.35.0/tests/trace/mod.rs15
-rw-r--r--vendor/gix-features/.cargo-checksum.json2
-rw-r--r--vendor/gix-features/CHANGELOG.md34
-rw-r--r--vendor/gix-features/Cargo.toml4
-rw-r--r--vendor/gix-features/src/hash.rs28
-rw-r--r--vendor/gix-filter/.cargo-checksum.json2
-rw-r--r--vendor/gix-filter/CHANGELOG.md50
-rw-r--r--vendor/gix-filter/Cargo.lock60
-rw-r--r--vendor/gix-filter/Cargo.toml10
-rw-r--r--vendor/gix-filter/src/eol/convert_to_git.rs2
-rw-r--r--vendor/gix-filter/src/pipeline/convert.rs29
-rw-r--r--vendor/gix-filter/src/pipeline/util.rs2
-rw-r--r--vendor/gix-filter/tests/pipeline/convert_to_git.rs14
-rw-r--r--vendor/gix-fs/.cargo-checksum.json2
-rw-r--r--vendor/gix-fs/CHANGELOG.md26
-rw-r--r--vendor/gix-fs/Cargo.toml4
-rw-r--r--vendor/gix-glob/.cargo-checksum.json2
-rw-r--r--vendor/gix-glob/CHANGELOG.md26
-rw-r--r--vendor/gix-glob/Cargo.toml4
-rw-r--r--vendor/gix-hash/.cargo-checksum.json2
-rw-r--r--vendor/gix-hash/CHANGELOG.md28
-rw-r--r--vendor/gix-hash/Cargo.toml2
-rw-r--r--vendor/gix-hash/src/object_id.rs2
-rw-r--r--vendor/gix-ignore/.cargo-checksum.json2
-rw-r--r--vendor/gix-ignore/CHANGELOG.md26
-rw-r--r--vendor/gix-ignore/Cargo.toml4
-rw-r--r--vendor/gix-index/.cargo-checksum.json2
-rw-r--r--vendor/gix-index/CHANGELOG.md35
-rw-r--r--vendor/gix-index/Cargo.toml14
-rw-r--r--vendor/gix-index/src/access/mod.rs8
-rw-r--r--vendor/gix-index/src/entry/mod.rs8
-rw-r--r--vendor/gix-index/src/entry/stat.rs31
-rw-r--r--vendor/gix-index/src/file/init.rs2
-rw-r--r--vendor/gix-index/src/file/verify.rs2
-rw-r--r--vendor/gix-index/src/file/write.rs2
-rw-r--r--vendor/gix-index/src/init.rs2
-rw-r--r--vendor/gix-index/src/lib.rs7
-rw-r--r--vendor/gix-lock/.cargo-checksum.json2
-rw-r--r--vendor/gix-lock/CHANGELOG.md26
-rw-r--r--vendor/gix-lock/Cargo.toml4
-rw-r--r--vendor/gix-negotiate/.cargo-checksum.json2
-rw-r--r--vendor/gix-negotiate/CHANGELOG.md26
-rw-r--r--vendor/gix-negotiate/Cargo.toml10
-rw-r--r--vendor/gix-object/.cargo-checksum.json2
-rw-r--r--vendor/gix-object/CHANGELOG.md39
-rw-r--r--vendor/gix-object/Cargo.toml13
-rw-r--r--vendor/gix-object/src/blob.rs6
-rw-r--r--vendor/gix-object/src/commit/write.rs12
-rw-r--r--vendor/gix-object/src/encode.rs2
-rw-r--r--vendor/gix-object/src/lib.rs29
-rw-r--r--vendor/gix-object/src/object/mod.rs34
-rw-r--r--vendor/gix-object/src/tag/write.rs12
-rw-r--r--vendor/gix-object/src/traits.rs4
-rw-r--r--vendor/gix-object/src/tree/write.rs10
-rw-r--r--vendor/gix-odb/.cargo-checksum.json2
-rw-r--r--vendor/gix-odb/CHANGELOG.md36
-rw-r--r--vendor/gix-odb/Cargo.toml10
-rw-r--r--vendor/gix-odb/src/find.rs6
-rw-r--r--vendor/gix-odb/src/lib.rs2
-rw-r--r--vendor/gix-odb/src/sink.rs10
-rw-r--r--vendor/gix-odb/src/store_impls/dynamic/load_index.rs2
-rw-r--r--vendor/gix-odb/src/store_impls/loose/find.rs31
-rw-r--r--vendor/gix-odb/src/store_impls/loose/write.rs19
-rw-r--r--vendor/gix-pack/.cargo-checksum.json2
-rw-r--r--vendor/gix-pack/CHANGELOG.md35
-rw-r--r--vendor/gix-pack/Cargo.toml14
-rw-r--r--vendor/gix-pack/src/data/input/entries_to_bytes.rs2
-rw-r--r--vendor/gix-pack/src/verify.rs2
-rw-r--r--vendor/gix-packetline/.cargo-checksum.json2
-rw-r--r--vendor/gix-packetline/CHANGELOG.md33
-rw-r--r--vendor/gix-packetline/Cargo.toml2
-rw-r--r--vendor/gix-pathspec/.cargo-checksum.json2
-rw-r--r--vendor/gix-pathspec/CHANGELOG.md34
-rw-r--r--vendor/gix-pathspec/Cargo.toml6
-rw-r--r--vendor/gix-pathspec/src/lib.rs2
-rw-r--r--vendor/gix-pathspec/tests/search/mod.rs4
-rw-r--r--vendor/gix-protocol/.cargo-checksum.json2
-rw-r--r--vendor/gix-protocol/CHANGELOG.md58
-rw-r--r--vendor/gix-protocol/Cargo.toml12
-rw-r--r--vendor/gix-ref/.cargo-checksum.json2
-rw-r--r--vendor/gix-ref/CHANGELOG.md34
-rw-r--r--vendor/gix-ref/Cargo.toml16
-rw-r--r--vendor/gix-ref/src/lib.rs2
-rw-r--r--vendor/gix-ref/src/name.rs2
-rw-r--r--vendor/gix-ref/src/store/packed/transaction.rs2
-rw-r--r--vendor/gix-refspec/.cargo-checksum.json2
-rw-r--r--vendor/gix-refspec/CHANGELOG.md34
-rw-r--r--vendor/gix-refspec/Cargo.toml6
-rw-r--r--vendor/gix-refspec/src/spec.rs4
-rw-r--r--vendor/gix-revision/.cargo-checksum.json2
-rw-r--r--vendor/gix-revision/CHANGELOG.md27
-rw-r--r--vendor/gix-revision/Cargo.toml8
-rw-r--r--vendor/gix-revwalk/.cargo-checksum.json2
-rw-r--r--vendor/gix-revwalk/CHANGELOG.md33
-rw-r--r--vendor/gix-revwalk/Cargo.toml8
-rw-r--r--vendor/gix-revwalk/src/queue.rs2
-rw-r--r--vendor/gix-submodule/.cargo-checksum.json2
-rw-r--r--vendor/gix-submodule/CHANGELOG.md27
-rw-r--r--vendor/gix-submodule/Cargo.toml10
-rw-r--r--vendor/gix-tempfile/.cargo-checksum.json2
-rw-r--r--vendor/gix-tempfile/CHANGELOG.md26
-rw-r--r--vendor/gix-tempfile/Cargo.lock14
-rw-r--r--vendor/gix-tempfile/Cargo.toml4
-rw-r--r--vendor/gix-transport/.cargo-checksum.json2
-rw-r--r--vendor/gix-transport/CHANGELOG.md59
-rw-r--r--vendor/gix-transport/Cargo.toml12
-rw-r--r--vendor/gix-traverse/.cargo-checksum.json2
-rw-r--r--vendor/gix-traverse/CHANGELOG.md27
-rw-r--r--vendor/gix-traverse/Cargo.toml10
-rw-r--r--vendor/gix-traverse/src/tree/mod.rs2
-rw-r--r--vendor/gix-url/.cargo-checksum.json2
-rw-r--r--vendor/gix-url/CHANGELOG.md162
-rw-r--r--vendor/gix-url/Cargo.toml12
-rw-r--r--vendor/gix-url/src/expand_path.rs15
-rw-r--r--vendor/gix-url/src/lib.rs99
-rw-r--r--vendor/gix-url/src/parse.rs349
-rw-r--r--vendor/gix-url/src/scheme.rs3
-rw-r--r--vendor/gix-url/tests/baseline/main.rs217
-rw-r--r--vendor/gix-worktree/.cargo-checksum.json2
-rw-r--r--vendor/gix-worktree/CHANGELOG.md35
-rw-r--r--vendor/gix-worktree/Cargo.toml18
-rw-r--r--vendor/gix-worktree/src/lib.rs1
-rw-r--r--vendor/gix-worktree/src/stack/delegate.rs18
-rw-r--r--vendor/gix-worktree/src/stack/mod.rs21
-rw-r--r--vendor/gix-worktree/src/stack/state/mod.rs5
-rw-r--r--vendor/gix/.cargo-checksum.json2
-rw-r--r--vendor/gix/CHANGELOG.md138
-rw-r--r--vendor/gix/Cargo.lock180
-rw-r--r--vendor/gix/Cargo.toml74
-rw-r--r--vendor/gix/src/clone/fetch/mod.rs4
-rw-r--r--vendor/gix/src/clone/fetch/util.rs2
-rw-r--r--vendor/gix/src/config/cache/access.rs10
-rw-r--r--vendor/gix/src/config/tree/keys.rs2
-rw-r--r--vendor/gix/src/config/tree/sections/core.rs3
-rw-r--r--vendor/gix/src/filter.rs4
-rw-r--r--vendor/gix/src/head/peel.rs4
-rw-r--r--vendor/gix/src/lib.rs8
-rw-r--r--vendor/gix/src/object/blob.rs26
-rw-r--r--vendor/gix/src/object/commit.rs8
-rw-r--r--vendor/gix/src/object/impls.rs56
-rw-r--r--vendor/gix/src/object/mod.rs19
-rw-r--r--vendor/gix/src/object/tag.rs26
-rw-r--r--vendor/gix/src/object/tree/mod.rs26
-rw-r--r--vendor/gix/src/reference/errors.rs23
-rw-r--r--vendor/gix/src/reference/mod.rs2
-rw-r--r--vendor/gix/src/repository/cache.rs2
-rw-r--r--vendor/gix/src/repository/index.rs10
-rw-r--r--vendor/gix/src/repository/location.rs1
-rw-r--r--vendor/gix/src/repository/object.rs49
-rw-r--r--vendor/gix/src/repository/reference.rs9
-rw-r--r--vendor/gix/src/types.rs20
-rw-r--r--vendor/hashbrown/.cargo-checksum.json2
-rw-r--r--vendor/hashbrown/CHANGELOG.md34
-rw-r--r--vendor/hashbrown/Cargo.toml10
-rw-r--r--vendor/hashbrown/README.md2
-rw-r--r--vendor/hashbrown/src/external_trait_impls/rayon/map.rs40
-rw-r--r--vendor/hashbrown/src/external_trait_impls/rayon/mod.rs1
-rw-r--r--vendor/hashbrown/src/external_trait_impls/rayon/raw.rs23
-rw-r--r--vendor/hashbrown/src/external_trait_impls/rayon/set.rs34
-rw-r--r--vendor/hashbrown/src/external_trait_impls/rayon/table.rs252
-rw-r--r--vendor/hashbrown/src/external_trait_impls/serde.rs63
-rw-r--r--vendor/hashbrown/src/lib.rs22
-rw-r--r--vendor/hashbrown/src/map.rs614
-rw-r--r--vendor/hashbrown/src/raw/mod.rs1942
-rw-r--r--vendor/hashbrown/src/rustc_entry.rs26
-rw-r--r--vendor/hashbrown/src/set.rs154
-rw-r--r--vendor/hashbrown/src/table.rs2030
-rw-r--r--vendor/icu_list/.cargo-checksum.json2
-rw-r--r--vendor/icu_list/Cargo.lock147
-rw-r--r--vendor/icu_list/Cargo.toml49
-rw-r--r--vendor/icu_list/LICENSE79
-rw-r--r--vendor/icu_list/README.md22
-rw-r--r--vendor/icu_list/examples/and_list.rs8
-rw-r--r--vendor/icu_list/src/lib.rs15
-rw-r--r--vendor/icu_list/src/list_formatter.rs120
-rw-r--r--vendor/icu_list/src/provider/mod.rs35
-rw-r--r--vendor/icu_list/src/provider/serde_dfa.rs3
-rw-r--r--vendor/icu_list_data/.cargo-checksum.json1
-rw-r--r--vendor/icu_list_data/Cargo.toml33
-rw-r--r--vendor/icu_list_data/LICENSE44
-rw-r--r--vendor/icu_list_data/README.md11
-rw-r--r--vendor/icu_list_data/data/any.rs2
-rw-r--r--vendor/icu_list_data/data/macros.rs41
-rw-r--r--vendor/icu_list_data/data/macros/list_and_v1.data.rs140
-rw-r--r--vendor/icu_list_data/data/macros/list_or_v1.data.rs123
-rw-r--r--vendor/icu_list_data/data/macros/list_unit_v1.data.rs106
-rw-r--r--vendor/icu_list_data/data/mod.rs29
-rw-r--r--vendor/icu_list_data/src/lib.rs12
-rw-r--r--vendor/icu_locid/.cargo-checksum.json2
-rw-r--r--vendor/icu_locid/Cargo.lock267
-rw-r--r--vendor/icu_locid/Cargo.toml35
-rw-r--r--vendor/icu_locid/LICENSE79
-rw-r--r--vendor/icu_locid/README.md7
-rw-r--r--vendor/icu_locid/benches/iai_langid.rs4
-rw-r--r--vendor/icu_locid/src/extensions/other/mod.rs14
-rw-r--r--vendor/icu_locid/src/extensions/other/subtag.rs5
-rw-r--r--vendor/icu_locid/src/extensions/private/mod.rs16
-rw-r--r--vendor/icu_locid/src/extensions/private/other.rs3
-rw-r--r--vendor/icu_locid/src/extensions/transform/fields.rs23
-rw-r--r--vendor/icu_locid/src/extensions/transform/key.rs3
-rw-r--r--vendor/icu_locid/src/extensions/transform/mod.rs29
-rw-r--r--vendor/icu_locid/src/extensions/transform/value.rs20
-rw-r--r--vendor/icu_locid/src/extensions/unicode/attribute.rs6
-rw-r--r--vendor/icu_locid/src/extensions/unicode/attributes.rs12
-rw-r--r--vendor/icu_locid/src/extensions/unicode/key.rs3
-rw-r--r--vendor/icu_locid/src/extensions/unicode/keywords.rs40
-rw-r--r--vendor/icu_locid/src/extensions/unicode/mod.rs42
-rw-r--r--vendor/icu_locid/src/extensions/unicode/value.rs24
-rw-r--r--vendor/icu_locid/src/helpers.rs127
-rw-r--r--vendor/icu_locid/src/langid.rs26
-rw-r--r--vendor/icu_locid/src/lib.rs4
-rw-r--r--vendor/icu_locid/src/locale.rs28
-rw-r--r--vendor/icu_locid/src/parser/langid.rs6
-rw-r--r--vendor/icu_locid/src/subtags/language.rs7
-rw-r--r--vendor/icu_locid/src/subtags/mod.rs12
-rw-r--r--vendor/icu_locid/src/subtags/region.rs5
-rw-r--r--vendor/icu_locid/src/subtags/script.rs5
-rw-r--r--vendor/icu_locid/src/subtags/variant.rs5
-rw-r--r--vendor/icu_locid/src/subtags/variants.rs16
-rw-r--r--vendor/icu_locid/src/zerovec.rs4
-rw-r--r--vendor/icu_locid_transform/.cargo-checksum.json1
-rw-r--r--vendor/icu_locid_transform/Cargo.toml128
-rw-r--r--vendor/icu_locid_transform/LICENSE44
-rw-r--r--vendor/icu_locid_transform/README.md77
-rw-r--r--vendor/icu_locid_transform/benches/fixtures/locales.json41
-rw-r--r--vendor/icu_locid_transform/benches/fixtures/uncanonicalized-locales.json88
-rw-r--r--vendor/icu_locid_transform/benches/helpers/mod.rs15
-rw-r--r--vendor/icu_locid_transform/benches/locale_canonicalizer.rs99
-rw-r--r--vendor/icu_locid_transform/src/canonicalizer.rs618
-rw-r--r--vendor/icu_locid_transform/src/directionality.rs231
-rw-r--r--vendor/icu_locid_transform/src/error.rs27
-rw-r--r--vendor/icu_locid_transform/src/expander.rs722
-rw-r--r--vendor/icu_locid_transform/src/fallback/algorithms.rs (renamed from vendor/icu_provider_adapters/src/fallback/algorithms.rs)112
-rw-r--r--vendor/icu_locid_transform/src/fallback/mod.rs300
-rw-r--r--vendor/icu_locid_transform/src/lib.rs116
-rw-r--r--vendor/icu_locid_transform/src/provider/canonicalizer.rs81
-rw-r--r--vendor/icu_locid_transform/src/provider/directionality.rs36
-rw-r--r--vendor/icu_locid_transform/src/provider/expander.rs243
-rw-r--r--vendor/icu_locid_transform/src/provider/fallback.rs (renamed from vendor/icu_provider_adapters/src/fallback/provider.rs)43
-rw-r--r--vendor/icu_locid_transform/src/provider/mod.rs98
-rw-r--r--vendor/icu_locid_transform/tests/fixtures/canonicalize.json444
-rw-r--r--vendor/icu_locid_transform/tests/fixtures/maximize.json182
-rw-r--r--vendor/icu_locid_transform/tests/fixtures/minimize.json26
-rw-r--r--vendor/icu_locid_transform/tests/fixtures/mod.rs12
-rw-r--r--vendor/icu_locid_transform/tests/helpers/mod.rs15
-rw-r--r--vendor/icu_locid_transform/tests/locale_canonicalizer.rs82
-rw-r--r--vendor/icu_locid_transform_data/.cargo-checksum.json1
-rw-r--r--vendor/icu_locid_transform_data/Cargo.toml33
-rw-r--r--vendor/icu_locid_transform_data/LICENSE44
-rw-r--r--vendor/icu_locid_transform_data/README.md11
-rw-r--r--vendor/icu_locid_transform_data/data/any.rs2
-rw-r--r--vendor/icu_locid_transform_data/data/macros.rs66
-rw-r--r--vendor/icu_locid_transform_data/data/macros/fallback_likelysubtags_v1.data.rs44
-rw-r--r--vendor/icu_locid_transform_data/data/macros/fallback_parents_v1.data.rs32
-rw-r--r--vendor/icu_locid_transform_data/data/macros/fallback_supplement_co_v1.data.rs36
-rw-r--r--vendor/icu_locid_transform_data/data/macros/locid_transform_aliases_v1.data.rs66
-rw-r--r--vendor/icu_locid_transform_data/data/macros/locid_transform_likelysubtags_ext_v1.data.rs52
-rw-r--r--vendor/icu_locid_transform_data/data/macros/locid_transform_likelysubtags_l_v1.data.rs41
-rw-r--r--vendor/icu_locid_transform_data/data/macros/locid_transform_likelysubtags_sr_v1.data.rs40
-rw-r--r--vendor/icu_locid_transform_data/data/macros/locid_transform_script_dir_v1.data.rs27
-rw-r--r--vendor/icu_locid_transform_data/data/mod.rs39
-rw-r--r--vendor/icu_locid_transform_data/src/lib.rs12
-rw-r--r--vendor/icu_provider/.cargo-checksum.json2
-rw-r--r--vendor/icu_provider/Cargo.toml53
-rw-r--r--vendor/icu_provider/LICENSE79
-rw-r--r--vendor/icu_provider/README.md8
-rw-r--r--vendor/icu_provider/src/any.rs16
-rw-r--r--vendor/icu_provider/src/buf.rs5
-rw-r--r--vendor/icu_provider/src/constructors.rs302
-rw-r--r--vendor/icu_provider/src/datagen/data_conversion.rs10
-rw-r--r--vendor/icu_provider/src/datagen/mod.rs128
-rw-r--r--vendor/icu_provider/src/datagen/payload.rs99
-rw-r--r--vendor/icu_provider/src/dynutil.rs15
-rw-r--r--vendor/icu_provider/src/error.rs34
-rw-r--r--vendor/icu_provider/src/fallback.rs201
-rw-r--r--vendor/icu_provider/src/hello_world.rs86
-rw-r--r--vendor/icu_provider/src/helpers.rs309
-rw-r--r--vendor/icu_provider/src/key.rs173
-rw-r--r--vendor/icu_provider/src/lib.rs30
-rw-r--r--vendor/icu_provider/src/request.rs668
-rw-r--r--vendor/icu_provider/src/response.rs185
-rw-r--r--vendor/icu_provider/src/serde/mod.rs36
-rw-r--r--vendor/icu_provider_adapters/.cargo-checksum.json2
-rw-r--r--vendor/icu_provider_adapters/Cargo.toml33
-rw-r--r--vendor/icu_provider_adapters/LICENSE79
-rw-r--r--vendor/icu_provider_adapters/README.md4
-rw-r--r--vendor/icu_provider_adapters/src/fallback/adapter.rs284
-rw-r--r--vendor/icu_provider_adapters/src/fallback/mod.rs624
-rw-r--r--vendor/icu_provider_adapters/src/filter/impls.rs4
-rw-r--r--vendor/icu_provider_adapters/src/filter/mod.rs2
-rw-r--r--vendor/icu_provider_adapters/src/fork/by_error.rs10
-rw-r--r--vendor/icu_provider_adapters/src/fork/macros.rs25
-rw-r--r--vendor/icu_provider_adapters/src/fork/mod.rs20
-rw-r--r--vendor/icu_provider_adapters/src/fork/predicates.rs7
-rw-r--r--vendor/icu_provider_adapters/tests/data/blob.postcardbin0 -> 5210 bytes
-rw-r--r--vendor/icu_provider_adapters/tests/data/config.json21
-rw-r--r--vendor/icu_provider_adapters/tests/data/langtest/de.json23
-rw-r--r--vendor/icu_provider_adapters/tests/data/langtest/ro.json23
-rw-r--r--vendor/icu_provider_macros/.cargo-checksum.json2
-rw-r--r--vendor/icu_provider_macros/Cargo.toml14
-rw-r--r--vendor/icu_provider_macros/LICENSE79
-rw-r--r--vendor/icu_provider_macros/README.md4
-rw-r--r--vendor/icu_provider_macros/src/lib.rs325
-rw-r--r--vendor/icu_provider_macros/src/tests.rs65
-rw-r--r--vendor/io-lifetimes/.cargo-checksum.json1
-rw-r--r--vendor/io-lifetimes/CODE_OF_CONDUCT.md49
-rw-r--r--vendor/io-lifetimes/COPYRIGHT29
-rw-r--r--vendor/io-lifetimes/Cargo.toml99
-rw-r--r--vendor/io-lifetimes/LICENSE-Apache-2.0_WITH_LLVM-exception220
-rw-r--r--vendor/io-lifetimes/ORG_CODE_OF_CONDUCT.md143
-rw-r--r--vendor/io-lifetimes/README.md179
-rw-r--r--vendor/io-lifetimes/build.rs113
-rw-r--r--vendor/io-lifetimes/src/example_ffi.rs78
-rw-r--r--vendor/io-lifetimes/src/impls_async_std.rs509
-rw-r--r--vendor/io-lifetimes/src/impls_fs_err.rs62
-rw-r--r--vendor/io-lifetimes/src/impls_mio.rs454
-rw-r--r--vendor/io-lifetimes/src/impls_os_pipe.rs174
-rw-r--r--vendor/io-lifetimes/src/impls_socket2.rs94
-rw-r--r--vendor/io-lifetimes/src/impls_std.rs892
-rw-r--r--vendor/io-lifetimes/src/impls_tokio.rs214
-rw-r--r--vendor/io-lifetimes/src/lib.rs190
-rw-r--r--vendor/io-lifetimes/src/portability.rs526
-rw-r--r--vendor/io-lifetimes/src/raw.rs255
-rw-r--r--vendor/io-lifetimes/src/traits.rs290
-rw-r--r--vendor/io-lifetimes/src/types.rs880
-rw-r--r--vendor/io-lifetimes/src/views.rs277
-rw-r--r--vendor/itertools-0.10.5/.cargo-checksum.json1
-rw-r--r--vendor/itertools-0.10.5/CHANGELOG.md380
-rw-r--r--vendor/itertools-0.10.5/Cargo.toml88
-rw-r--r--vendor/itertools-0.10.5/LICENSE-APACHE (renamed from vendor/libm-0.1.4/LICENSE-APACHE)0
-rw-r--r--vendor/itertools-0.10.5/LICENSE-MIT (renamed from vendor/rustix-0.37.6/LICENSE-MIT)2
-rw-r--r--vendor/itertools-0.10.5/README.md44
-rw-r--r--vendor/itertools-0.10.5/benches/bench1.rs877
-rw-r--r--vendor/itertools-0.10.5/benches/combinations.rs125
-rw-r--r--vendor/itertools-0.10.5/benches/combinations_with_replacement.rs40
-rw-r--r--vendor/itertools-0.10.5/benches/extra/mod.rs2
-rw-r--r--vendor/itertools-0.10.5/benches/extra/zipslices.rs188
-rw-r--r--vendor/itertools-0.10.5/benches/fold_specialization.rs73
-rw-r--r--vendor/itertools-0.10.5/benches/powerset.rs44
-rw-r--r--vendor/itertools-0.10.5/benches/tree_fold1.rs144
-rw-r--r--vendor/itertools-0.10.5/benches/tuple_combinations.rs113
-rw-r--r--vendor/itertools-0.10.5/benches/tuples.rs213
-rw-r--r--vendor/itertools-0.10.5/clippy.toml (renamed from vendor/itertools/clippy.toml)0
-rw-r--r--vendor/itertools-0.10.5/examples/iris.data150
-rw-r--r--vendor/itertools-0.10.5/examples/iris.rs137
-rw-r--r--vendor/itertools-0.10.5/src/adaptors/coalesce.rs235
-rw-r--r--vendor/itertools-0.10.5/src/adaptors/map.rs124
-rw-r--r--vendor/itertools-0.10.5/src/adaptors/mod.rs1151
-rw-r--r--vendor/itertools-0.10.5/src/adaptors/multi_product.rs230
-rw-r--r--vendor/itertools-0.10.5/src/combinations.rs128
-rw-r--r--vendor/itertools-0.10.5/src/combinations_with_replacement.rs109
-rw-r--r--vendor/itertools-0.10.5/src/concat_impl.rs23
-rw-r--r--vendor/itertools-0.10.5/src/cons_tuples_impl.rs64
-rw-r--r--vendor/itertools-0.10.5/src/diff.rs61
-rw-r--r--vendor/itertools-0.10.5/src/duplicates_impl.rs216
-rw-r--r--vendor/itertools-0.10.5/src/either_or_both.rs254
-rw-r--r--vendor/itertools-0.10.5/src/exactly_one_err.rs110
-rw-r--r--vendor/itertools-0.10.5/src/extrema_set.rs48
-rw-r--r--vendor/itertools-0.10.5/src/flatten_ok.rs165
-rw-r--r--vendor/itertools-0.10.5/src/format.rs113
-rw-r--r--vendor/itertools-0.10.5/src/free.rs286
-rw-r--r--vendor/itertools-0.10.5/src/group_map.rs32
-rw-r--r--vendor/itertools-0.10.5/src/groupbylazy.rs571
-rw-r--r--vendor/itertools-0.10.5/src/grouping_map.rs535
-rw-r--r--vendor/itertools-0.10.5/src/impl_macros.rs29
-rw-r--r--vendor/itertools-0.10.5/src/intersperse.rs118
-rw-r--r--vendor/itertools-0.10.5/src/k_smallest.rs20
-rw-r--r--vendor/itertools-0.10.5/src/kmerge_impl.rs227
-rw-r--r--vendor/itertools-0.10.5/src/lazy_buffer.rs63
-rw-r--r--vendor/itertools-0.10.5/src/lib.rs3784
-rw-r--r--vendor/itertools-0.10.5/src/merge_join.rs169
-rw-r--r--vendor/itertools-0.10.5/src/minmax.rs115
-rw-r--r--vendor/itertools-0.10.5/src/multipeek_impl.rs101
-rw-r--r--vendor/itertools-0.10.5/src/pad_tail.rs96
-rw-r--r--vendor/itertools-0.10.5/src/peek_nth.rs102
-rw-r--r--vendor/itertools-0.10.5/src/peeking_take_while.rs154
-rw-r--r--vendor/itertools-0.10.5/src/permutations.rs277
-rw-r--r--vendor/itertools-0.10.5/src/powerset.rs90
-rw-r--r--vendor/itertools-0.10.5/src/process_results_impl.rs97
-rw-r--r--vendor/itertools-0.10.5/src/put_back_n_impl.rs61
-rw-r--r--vendor/itertools-0.10.5/src/rciter_impl.rs99
-rw-r--r--vendor/itertools-0.10.5/src/repeatn.rs59
-rw-r--r--vendor/itertools-0.10.5/src/size_hint.rs119
-rw-r--r--vendor/itertools-0.10.5/src/sources.rs183
-rw-r--r--vendor/itertools-0.10.5/src/tee.rs78
-rw-r--r--vendor/itertools-0.10.5/src/tuple_impl.rs331
-rw-r--r--vendor/itertools-0.10.5/src/unique_impl.rs179
-rw-r--r--vendor/itertools-0.10.5/src/unziptuple.rs80
-rw-r--r--vendor/itertools-0.10.5/src/with_position.rs100
-rw-r--r--vendor/itertools-0.10.5/src/zip_eq_impl.rs60
-rw-r--r--vendor/itertools-0.10.5/src/zip_longest.rs83
-rw-r--r--vendor/itertools-0.10.5/src/ziptuple.rs138
-rw-r--r--vendor/itertools-0.10.5/tests/adaptors_no_collect.rs46
-rw-r--r--vendor/itertools-0.10.5/tests/flatten_ok.rs76
-rw-r--r--vendor/itertools-0.10.5/tests/macros_hygiene.rs13
-rw-r--r--vendor/itertools-0.10.5/tests/merge_join.rs108
-rw-r--r--vendor/itertools-0.10.5/tests/peeking_take_while.rs50
-rw-r--r--vendor/itertools-0.10.5/tests/quick.rs1749
-rw-r--r--vendor/itertools-0.10.5/tests/specializations.rs153
-rw-r--r--vendor/itertools-0.10.5/tests/test_core.rs317
-rw-r--r--vendor/itertools-0.10.5/tests/test_std.rs1168
-rw-r--r--vendor/itertools-0.10.5/tests/tuples.rs86
-rw-r--r--vendor/itertools-0.10.5/tests/zip.rs77
-rw-r--r--vendor/itertools/.cargo-checksum.json2
-rw-r--r--vendor/itertools/CHANGELOG.md29
-rw-r--r--vendor/itertools/Cargo.lock681
-rw-r--r--vendor/itertools/Cargo.toml43
-rw-r--r--vendor/itertools/README.md2
-rw-r--r--vendor/itertools/src/either_or_both.rs259
-rw-r--r--vendor/itertools/src/format.rs95
-rw-r--r--vendor/itertools/src/groupbylazy.rs12
-rw-r--r--vendor/itertools/src/lib.rs261
-rw-r--r--vendor/itertools/src/merge_join.rs163
-rw-r--r--vendor/itertools/src/peeking_take_while.rs25
-rw-r--r--vendor/itertools/src/process_results_impl.rs35
-rw-r--r--vendor/itertools/src/take_while_inclusive.rs68
-rw-r--r--vendor/itertools/src/tuple_impl.rs4
-rw-r--r--vendor/itertools/src/with_position.rs36
-rw-r--r--vendor/itertools/tests/peeking_take_while.rs19
-rw-r--r--vendor/itertools/tests/quick.rs100
-rw-r--r--vendor/itertools/tests/test_std.rs20
-rw-r--r--vendor/jobserver/.cargo-checksum.json2
-rw-r--r--vendor/jobserver/Cargo.toml2
-rw-r--r--vendor/jobserver/LICENSE-APACHE402
-rw-r--r--vendor/jobserver/LICENSE-MIT50
-rw-r--r--vendor/jobserver/README.md78
-rw-r--r--vendor/jobserver/src/error.rs84
-rw-r--r--vendor/jobserver/src/lib.rs1140
-rw-r--r--vendor/jobserver/src/unix.rs908
-rw-r--r--vendor/jobserver/src/wasm.rs191
-rw-r--r--vendor/jobserver/src/windows.rs536
-rw-r--r--vendor/jobserver/tests/client-of-myself.rs118
-rw-r--r--vendor/jobserver/tests/client.rs396
-rw-r--r--vendor/jobserver/tests/helper.rs154
-rw-r--r--vendor/jobserver/tests/make-as-a-client.rs162
-rw-r--r--vendor/jobserver/tests/server.rs362
-rw-r--r--vendor/kstring/.cargo-checksum.json1
-rw-r--r--vendor/kstring/Cargo.lock814
-rw-r--r--vendor/kstring/Cargo.toml88
-rw-r--r--vendor/kstring/LICENSE-APACHE (renamed from vendor/linux-raw-sys-0.3.2/LICENSE-APACHE)0
-rw-r--r--vendor/kstring/LICENSE-MIT21
-rw-r--r--vendor/kstring/README.md58
-rw-r--r--vendor/kstring/benches/access.rs134
-rw-r--r--vendor/kstring/benches/clone.rs139
-rw-r--r--vendor/kstring/examples/bench.rs18
-rw-r--r--vendor/kstring/src/backend.rs97
-rw-r--r--vendor/kstring/src/lib.rs78
-rw-r--r--vendor/kstring/src/stack.rs457
-rw-r--r--vendor/kstring/src/string.rs865
-rw-r--r--vendor/kstring/src/string_cow.rs383
-rw-r--r--vendor/kstring/src/string_ref.rs277
-rw-r--r--vendor/libc/.cargo-checksum.json2
-rw-r--r--vendor/libc/Cargo.toml3
-rw-r--r--vendor/libc/README.md3
-rw-r--r--vendor/libc/build.rs14
-rw-r--r--vendor/libc/src/fuchsia/mod.rs88
-rw-r--r--vendor/libc/src/hermit/mod.rs5
-rw-r--r--vendor/libc/src/lib.rs10
-rw-r--r--vendor/libc/src/teeos/mod.rs1379
-rw-r--r--vendor/libc/src/unix/aix/mod.rs13
-rw-r--r--vendor/libc/src/unix/bsd/apple/mod.rs361
-rw-r--r--vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs6
-rw-r--r--vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs66
-rw-r--r--vendor/libc/src/unix/bsd/freebsdlike/mod.rs18
-rw-r--r--vendor/libc/src/unix/bsd/netbsdlike/mod.rs5
-rw-r--r--vendor/libc/src/unix/bsd/netbsdlike/netbsd/mips.rs21
-rw-r--r--vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs84
-rw-r--r--vendor/libc/src/unix/bsd/netbsdlike/netbsd/riscv64.rs21
-rw-r--r--vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs143
-rw-r--r--vendor/libc/src/unix/haiku/mod.rs10
-rw-r--r--vendor/libc/src/unix/hermit/aarch64.rs2
-rw-r--r--vendor/libc/src/unix/hermit/mod.rs1023
-rw-r--r--vendor/libc/src/unix/hermit/x86_64.rs2
-rw-r--r--vendor/libc/src/unix/hurd/align.rs1
-rw-r--r--vendor/libc/src/unix/hurd/b32.rs91
-rw-r--r--vendor/libc/src/unix/hurd/b64.rs93
-rw-r--r--vendor/libc/src/unix/hurd/mod.rs3107
-rw-r--r--vendor/libc/src/unix/hurd/no_align.rs1
-rw-r--r--vendor/libc/src/unix/linux_like/android/mod.rs26
-rw-r--r--vendor/libc/src/unix/linux_like/emscripten/lfs64.rs213
-rw-r--r--vendor/libc/src/unix/linux_like/emscripten/mod.rs150
-rw-r--r--vendor/libc/src/unix/linux_like/linux/arch/generic/mod.rs7
-rw-r--r--vendor/libc/src/unix/linux_like/linux/arch/mips/mod.rs7
-rw-r--r--vendor/libc/src/unix/linux_like/linux/arch/powerpc/mod.rs6
-rw-r--r--vendor/libc/src/unix/linux_like/linux/arch/sparc/mod.rs3
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b32/arm/mod.rs1
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b32/csky/mod.rs1
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs1
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b32/mips/mod.rs1
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b32/powerpc.rs1
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs1
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs1
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b32/x86/mod.rs1
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs1
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs15
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs1
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs1
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs1
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs1
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs1
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs1
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/mod.rs37
-rw-r--r--vendor/libc/src/unix/linux_like/linux/mod.rs111
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b32/arm/mod.rs7
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b32/hexagon.rs6
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b32/mips/mod.rs7
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b32/powerpc.rs7
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs8
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b32/x86/mod.rs7
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs4
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b64/mips64.rs4
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs4
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b64/powerpc64.rs4
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs7
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b64/s390x.rs4
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs4
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/mod.rs13
-rw-r--r--vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs6
-rw-r--r--vendor/libc/src/unix/linux_like/mod.rs6
-rw-r--r--vendor/libc/src/unix/mod.rs16
-rw-r--r--vendor/libc/src/unix/newlib/aarch64/mod.rs2
-rw-r--r--vendor/libc/src/unix/newlib/arm/mod.rs2
-rw-r--r--vendor/libc/src/unix/newlib/espidf/mod.rs2
-rw-r--r--vendor/libc/src/unix/newlib/generic.rs6
-rw-r--r--vendor/libc/src/unix/newlib/horizon/mod.rs2
-rw-r--r--vendor/libc/src/unix/newlib/mod.rs63
-rw-r--r--vendor/libc/src/unix/newlib/powerpc/mod.rs2
-rw-r--r--vendor/libc/src/unix/newlib/vita/mod.rs37
-rw-r--r--vendor/libc/src/unix/nto/mod.rs2
-rw-r--r--vendor/libc/src/unix/redox/mod.rs93
-rw-r--r--vendor/libc/src/vxworks/mod.rs27
-rw-r--r--vendor/libloading/.cargo-checksum.json2
-rw-r--r--vendor/libloading/Cargo.toml2
-rw-r--r--vendor/libloading/src/changelog.rs6
-rw-r--r--vendor/libloading/src/os/unix/consts.rs4
-rw-r--r--vendor/libm-0.1.4/.cargo-checksum.json1
-rw-r--r--vendor/libm-0.1.4/CHANGELOG.md97
-rw-r--r--vendor/libm-0.1.4/CONTRIBUTING.md95
-rw-r--r--vendor/libm-0.1.4/Cargo.toml34
-rw-r--r--vendor/libm-0.1.4/README.md58
-rw-r--r--vendor/libm-0.1.4/azure-pipelines.yml73
-rw-r--r--vendor/libm-0.1.4/build.rs444
-rw-r--r--vendor/libm-0.1.4/ci/azure-install-rust.yml25
-rw-r--r--vendor/libm-0.1.4/ci/docker/aarch64-unknown-linux-gnu/Dockerfile10
-rw-r--r--vendor/libm-0.1.4/ci/docker/arm-unknown-linux-gnueabi/Dockerfile9
-rw-r--r--vendor/libm-0.1.4/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile9
-rw-r--r--vendor/libm-0.1.4/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile9
-rw-r--r--vendor/libm-0.1.4/ci/docker/i686-unknown-linux-gnu/Dockerfile4
-rw-r--r--vendor/libm-0.1.4/ci/docker/mips-unknown-linux-gnu/Dockerfile12
-rw-r--r--vendor/libm-0.1.4/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile15
-rw-r--r--vendor/libm-0.1.4/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile14
-rw-r--r--vendor/libm-0.1.4/ci/docker/mipsel-unknown-linux-gnu/Dockerfile12
-rw-r--r--vendor/libm-0.1.4/ci/docker/powerpc-unknown-linux-gnu/Dockerfile12
-rw-r--r--vendor/libm-0.1.4/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile13
-rw-r--r--vendor/libm-0.1.4/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile13
-rw-r--r--vendor/libm-0.1.4/ci/docker/x86_64-unknown-linux-gnu/Dockerfile4
-rwxr-xr-xvendor/libm-0.1.4/ci/run-docker.sh37
-rwxr-xr-xvendor/libm-0.1.4/ci/run.sh11
-rw-r--r--vendor/libm-0.1.4/src/lib.rs642
-rw-r--r--vendor/libm-0.1.4/src/math/acos.rs114
-rw-r--r--vendor/libm-0.1.4/src/math/acosf.rs81
-rw-r--r--vendor/libm-0.1.4/src/math/acosh.rs26
-rw-r--r--vendor/libm-0.1.4/src/math/acoshf.rs25
-rw-r--r--vendor/libm-0.1.4/src/math/asin.rs121
-rw-r--r--vendor/libm-0.1.4/src/math/asinf.rs74
-rw-r--r--vendor/libm-0.1.4/src/math/asinh.rs39
-rw-r--r--vendor/libm-0.1.4/src/math/asinhf.rs38
-rw-r--r--vendor/libm-0.1.4/src/math/atan.rs185
-rw-r--r--vendor/libm-0.1.4/src/math/atan2.rs127
-rw-r--r--vendor/libm-0.1.4/src/math/atan2f.rs92
-rw-r--r--vendor/libm-0.1.4/src/math/atanf.rs113
-rw-r--r--vendor/libm-0.1.4/src/math/atanh.rs36
-rw-r--r--vendor/libm-0.1.4/src/math/atanhf.rs36
-rw-r--r--vendor/libm-0.1.4/src/math/cbrt.rs114
-rw-r--r--vendor/libm-0.1.4/src/math/cbrtf.rs76
-rw-r--r--vendor/libm-0.1.4/src/math/ceil.rs51
-rw-r--r--vendor/libm-0.1.4/src/math/ceilf.rs42
-rw-r--r--vendor/libm-0.1.4/src/math/copysign.rs11
-rw-r--r--vendor/libm-0.1.4/src/math/copysignf.rs11
-rw-r--r--vendor/libm-0.1.4/src/math/cos.rs74
-rw-r--r--vendor/libm-0.1.4/src/math/cosf.rs84
-rw-r--r--vendor/libm-0.1.4/src/math/cosh.rs39
-rw-r--r--vendor/libm-0.1.4/src/math/coshf.rs39
-rw-r--r--vendor/libm-0.1.4/src/math/erf.rs317
-rw-r--r--vendor/libm-0.1.4/src/math/erff.rs229
-rw-r--r--vendor/libm-0.1.4/src/math/exp.rs155
-rw-r--r--vendor/libm-0.1.4/src/math/exp10.rs21
-rw-r--r--vendor/libm-0.1.4/src/math/exp10f.rs21
-rw-r--r--vendor/libm-0.1.4/src/math/exp2.rs395
-rw-r--r--vendor/libm-0.1.4/src/math/exp2f.rs136
-rw-r--r--vendor/libm-0.1.4/src/math/expf.rs102
-rw-r--r--vendor/libm-0.1.4/src/math/expm1.rs145
-rw-r--r--vendor/libm-0.1.4/src/math/expm1f.rs135
-rw-r--r--vendor/libm-0.1.4/src/math/expo2.rs15
-rw-r--r--vendor/libm-0.1.4/src/math/fabs.rs18
-rw-r--r--vendor/libm-0.1.4/src/math/fabsf.rs16
-rw-r--r--vendor/libm-0.1.4/src/math/fdim.rs23
-rw-r--r--vendor/libm-0.1.4/src/math/fdimf.rs23
-rw-r--r--vendor/libm-0.1.4/src/math/fenv.rs33
-rw-r--r--vendor/libm-0.1.4/src/math/floor.rs41
-rw-r--r--vendor/libm-0.1.4/src/math/floorf.rs50
-rw-r--r--vendor/libm-0.1.4/src/math/fma.rs207
-rw-r--r--vendor/libm-0.1.4/src/math/fmaf.rs107
-rw-r--r--vendor/libm-0.1.4/src/math/fmax.rs13
-rw-r--r--vendor/libm-0.1.4/src/math/fmaxf.rs13
-rw-r--r--vendor/libm-0.1.4/src/math/fmin.rs13
-rw-r--r--vendor/libm-0.1.4/src/math/fminf.rs13
-rw-r--r--vendor/libm-0.1.4/src/math/fmod.rs81
-rw-r--r--vendor/libm-0.1.4/src/math/fmodf.rs90
-rw-r--r--vendor/libm-0.1.4/src/math/frexp.rs20
-rw-r--r--vendor/libm-0.1.4/src/math/frexpf.rs21
-rw-r--r--vendor/libm-0.1.4/src/math/hypot.rs76
-rw-r--r--vendor/libm-0.1.4/src/math/hypotf.rs44
-rw-r--r--vendor/libm-0.1.4/src/math/ilogb.rs31
-rw-r--r--vendor/libm-0.1.4/src/math/ilogbf.rs31
-rw-r--r--vendor/libm-0.1.4/src/math/j0.rs422
-rw-r--r--vendor/libm-0.1.4/src/math/j0f.rs359
-rw-r--r--vendor/libm-0.1.4/src/math/j1.rs414
-rw-r--r--vendor/libm-0.1.4/src/math/j1f.rs358
-rw-r--r--vendor/libm-0.1.4/src/math/jn.rs343
-rw-r--r--vendor/libm-0.1.4/src/math/jnf.rs259
-rw-r--r--vendor/libm-0.1.4/src/math/k_cos.rs63
-rw-r--r--vendor/libm-0.1.4/src/math/k_cosf.rs30
-rw-r--r--vendor/libm-0.1.4/src/math/k_expo2.rs15
-rw-r--r--vendor/libm-0.1.4/src/math/k_expo2f.rs15
-rw-r--r--vendor/libm-0.1.4/src/math/k_sin.rs58
-rw-r--r--vendor/libm-0.1.4/src/math/k_sinf.rs31
-rw-r--r--vendor/libm-0.1.4/src/math/k_tan.rs107
-rw-r--r--vendor/libm-0.1.4/src/math/k_tanf.rs47
-rw-r--r--vendor/libm-0.1.4/src/math/ldexp.rs5
-rw-r--r--vendor/libm-0.1.4/src/math/ldexpf.rs5
-rw-r--r--vendor/libm-0.1.4/src/math/lgamma.rs5
-rw-r--r--vendor/libm-0.1.4/src/math/lgamma_r.rs319
-rw-r--r--vendor/libm-0.1.4/src/math/lgammaf.rs5
-rw-r--r--vendor/libm-0.1.4/src/math/lgammaf_r.rs254
-rw-r--r--vendor/libm-0.1.4/src/math/log.rs118
-rw-r--r--vendor/libm-0.1.4/src/math/log10.rs118
-rw-r--r--vendor/libm-0.1.4/src/math/log10f.rs92
-rw-r--r--vendor/libm-0.1.4/src/math/log1p.rs144
-rw-r--r--vendor/libm-0.1.4/src/math/log1pf.rs99
-rw-r--r--vendor/libm-0.1.4/src/math/log2.rs107
-rw-r--r--vendor/libm-0.1.4/src/math/log2f.rs88
-rw-r--r--vendor/libm-0.1.4/src/math/logf.rs66
-rw-r--r--vendor/libm-0.1.4/src/math/mod.rs342
-rw-r--r--vendor/libm-0.1.4/src/math/modf.rs34
-rw-r--r--vendor/libm-0.1.4/src/math/modff.rs33
-rw-r--r--vendor/libm-0.1.4/src/math/pow.rs634
-rw-r--r--vendor/libm-0.1.4/src/math/powf.rs343
-rw-r--r--vendor/libm-0.1.4/src/math/rem_pio2.rs207
-rw-r--r--vendor/libm-0.1.4/src/math/rem_pio2_large.rs471
-rw-r--r--vendor/libm-0.1.4/src/math/rem_pio2f.rs63
-rw-r--r--vendor/libm-0.1.4/src/math/remquo.rs97
-rw-r--r--vendor/libm-0.1.4/src/math/remquof.rs96
-rw-r--r--vendor/libm-0.1.4/src/math/round.rs37
-rw-r--r--vendor/libm-0.1.4/src/math/roundf.rs35
-rw-r--r--vendor/libm-0.1.4/src/math/scalbn.rs34
-rw-r--r--vendor/libm-0.1.4/src/math/scalbnf.rs30
-rw-r--r--vendor/libm-0.1.4/src/math/sin.rs86
-rw-r--r--vendor/libm-0.1.4/src/math/sincos.rs59
-rw-r--r--vendor/libm-0.1.4/src/math/sincosf.rs123
-rw-r--r--vendor/libm-0.1.4/src/math/sinf.rs94
-rw-r--r--vendor/libm-0.1.4/src/math/sinh.rs50
-rw-r--r--vendor/libm-0.1.4/src/math/sinhf.rs31
-rw-r--r--vendor/libm-0.1.4/src/math/sqrt.rs223
-rw-r--r--vendor/libm-0.1.4/src/math/sqrtf.rs112
-rw-r--r--vendor/libm-0.1.4/src/math/tan.rs71
-rw-r--r--vendor/libm-0.1.4/src/math/tanf.rs79
-rw-r--r--vendor/libm-0.1.4/src/math/tanh.rs54
-rw-r--r--vendor/libm-0.1.4/src/math/tanhf.rs40
-rw-r--r--vendor/libm-0.1.4/src/math/tgamma.rs207
-rw-r--r--vendor/libm-0.1.4/src/math/tgammaf.rs5
-rw-r--r--vendor/libm-0.1.4/src/math/trunc.rs41
-rw-r--r--vendor/libm-0.1.4/src/math/truncf.rs41
-rw-r--r--vendor/linux-raw-sys-0.3.2/.cargo-checksum.json1
-rw-r--r--vendor/linux-raw-sys-0.3.2/CODE_OF_CONDUCT.md49
-rw-r--r--vendor/linux-raw-sys-0.3.2/COPYRIGHT29
-rw-r--r--vendor/linux-raw-sys-0.3.2/Cargo.toml76
-rw-r--r--vendor/linux-raw-sys-0.3.2/LICENSE-Apache-2.0_WITH_LLVM-exception220
-rw-r--r--vendor/linux-raw-sys-0.3.2/ORG_CODE_OF_CONDUCT.md143
-rw-r--r--vendor/linux-raw-sys-0.3.2/README.md44
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/aarch64/errno.rs135
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/aarch64/general.rs5256
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/aarch64/ioctl.rs1570
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/aarch64/netlink.rs2861
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/arm/errno.rs135
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/arm/general.rs5379
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/arm/ioctl.rs1465
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/arm/netlink.rs2861
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/lib.rs409
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/loongarch64/errno.rs135
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/loongarch64/general.rs5205
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/loongarch64/ioctl.rs1465
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/loongarch64/netlink.rs2860
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/mips/errno.rs137
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/mips/general.rs5544
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/mips/ioctl.rs1564
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/mips/netlink.rs2870
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/mips64/errno.rs137
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/mips64/general.rs5469
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/mips64/ioctl.rs1564
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/mips64/netlink.rs2870
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/powerpc/errno.rs135
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/powerpc/general.rs5465
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/powerpc/ioctl.rs1460
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/powerpc/netlink.rs2867
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/powerpc64/errno.rs135
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/powerpc64/general.rs5420
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/powerpc64/ioctl.rs1460
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/powerpc64/netlink.rs2867
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/riscv32/errno.rs135
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/riscv32/general.rs5264
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/riscv32/ioctl.rs3
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/riscv32/netlink.rs2860
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/riscv64/errno.rs135
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/riscv64/general.rs5257
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/riscv64/ioctl.rs1465
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/riscv64/netlink.rs2860
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/s390x/errno.rs135
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/s390x/general.rs5297
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/s390x/ioctl.rs1570
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/s390x/netlink.rs2869
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/sparc/errno.rs137
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/sparc/general.rs5642
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/sparc/ioctl.rs3
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/sparc/netlink.rs2861
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/sparc64/errno.rs137
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/sparc64/general.rs5604
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/sparc64/ioctl.rs3
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/sparc64/netlink.rs2867
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/x32/errno.rs135
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/x32/general.rs5314
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/x32/ioctl.rs1570
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/x32/netlink.rs2861
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/x86/errno.rs135
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/x86/general.rs5414
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/x86/ioctl.rs1570
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/x86/netlink.rs2861
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/x86_64/errno.rs135
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/x86_64/general.rs5320
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/x86_64/ioctl.rs1570
-rw-r--r--vendor/linux-raw-sys-0.3.2/src/x86_64/netlink.rs2861
-rw-r--r--vendor/linux-raw-sys/.cargo-checksum.json2
-rw-r--r--vendor/linux-raw-sys/Cargo.toml7
-rw-r--r--vendor/linux-raw-sys/src/aarch64/general.rs13
-rw-r--r--vendor/linux-raw-sys/src/aarch64/net.rs591
-rw-r--r--vendor/linux-raw-sys/src/arm/general.rs13
-rw-r--r--vendor/linux-raw-sys/src/arm/net.rs591
-rw-r--r--vendor/linux-raw-sys/src/csky/general.rs13
-rw-r--r--vendor/linux-raw-sys/src/csky/net.rs591
-rw-r--r--vendor/linux-raw-sys/src/elf.rs31
-rw-r--r--vendor/linux-raw-sys/src/loongarch64/general.rs13
-rw-r--r--vendor/linux-raw-sys/src/loongarch64/net.rs591
-rw-r--r--vendor/linux-raw-sys/src/mips/general.rs13
-rw-r--r--vendor/linux-raw-sys/src/mips/net.rs591
-rw-r--r--vendor/linux-raw-sys/src/mips32r6/general.rs13
-rw-r--r--vendor/linux-raw-sys/src/mips32r6/net.rs591
-rw-r--r--vendor/linux-raw-sys/src/mips64/general.rs13
-rw-r--r--vendor/linux-raw-sys/src/mips64/net.rs591
-rw-r--r--vendor/linux-raw-sys/src/mips64r6/general.rs13
-rw-r--r--vendor/linux-raw-sys/src/mips64r6/net.rs591
-rw-r--r--vendor/linux-raw-sys/src/powerpc/general.rs13
-rw-r--r--vendor/linux-raw-sys/src/powerpc/net.rs591
-rw-r--r--vendor/linux-raw-sys/src/powerpc64/general.rs13
-rw-r--r--vendor/linux-raw-sys/src/powerpc64/net.rs591
-rw-r--r--vendor/linux-raw-sys/src/riscv32/general.rs13
-rw-r--r--vendor/linux-raw-sys/src/riscv32/net.rs591
-rw-r--r--vendor/linux-raw-sys/src/riscv64/general.rs13
-rw-r--r--vendor/linux-raw-sys/src/riscv64/net.rs591
-rw-r--r--vendor/linux-raw-sys/src/s390x/general.rs13
-rw-r--r--vendor/linux-raw-sys/src/s390x/net.rs591
-rw-r--r--vendor/linux-raw-sys/src/sparc/general.rs13
-rw-r--r--vendor/linux-raw-sys/src/sparc/net.rs591
-rw-r--r--vendor/linux-raw-sys/src/sparc64/general.rs13
-rw-r--r--vendor/linux-raw-sys/src/sparc64/net.rs591
-rw-r--r--vendor/linux-raw-sys/src/x32/general.rs13
-rw-r--r--vendor/linux-raw-sys/src/x32/net.rs591
-rw-r--r--vendor/linux-raw-sys/src/x86/general.rs13
-rw-r--r--vendor/linux-raw-sys/src/x86/net.rs591
-rw-r--r--vendor/linux-raw-sys/src/x86_64/general.rs13
-rw-r--r--vendor/linux-raw-sys/src/x86_64/net.rs591
-rw-r--r--vendor/litemap/.cargo-checksum.json2
-rw-r--r--vendor/litemap/Cargo.lock405
-rw-r--r--vendor/litemap/Cargo.toml34
-rw-r--r--vendor/litemap/LICENSE79
-rw-r--r--vendor/litemap/README.md4
-rw-r--r--vendor/litemap/benches/litemap.rs22
-rw-r--r--vendor/litemap/benches/testdata/large_litemap.postcard1
-rw-r--r--vendor/litemap/examples/language_names_hash_map.rs3
-rw-r--r--vendor/litemap/examples/language_names_lite_map.rs3
-rw-r--r--vendor/litemap/examples/litemap_bincode.rs (renamed from vendor/litemap/benches/bin/litemap_bincode.rs)0
-rw-r--r--vendor/litemap/examples/litemap_postcard.rs (renamed from vendor/litemap/benches/bin/litemap_postcard.rs)0
-rw-r--r--vendor/litemap/src/lib.rs2
-rw-r--r--vendor/litemap/src/map.rs660
-rw-r--r--vendor/litemap/src/serde.rs5
-rw-r--r--vendor/litemap/src/store/mod.rs11
-rw-r--r--vendor/litemap/src/store/slice_impl.rs8
-rw-r--r--vendor/litemap/src/store/vec_impl.rs8
-rw-r--r--vendor/log/.cargo-checksum.json2
-rw-r--r--vendor/log/CHANGELOG.md6
-rw-r--r--vendor/log/Cargo.toml7
-rw-r--r--vendor/log/README.md1
-rw-r--r--vendor/log/src/__private_api.rs57
-rw-r--r--vendor/log/src/lib.rs63
-rw-r--r--vendor/log/src/macros.rs100
-rw-r--r--vendor/memchr/.cargo-checksum.json2
-rw-r--r--vendor/memchr/Cargo.toml17
-rw-r--r--vendor/memchr/README.md2
-rw-r--r--vendor/memchr/src/arch/all/memchr.rs57
-rw-r--r--vendor/minifier/.cargo-checksum.json2
-rw-r--r--vendor/minifier/Cargo.lock2
-rw-r--r--vendor/minifier/Cargo.toml10
-rw-r--r--vendor/minifier/README.md8
-rw-r--r--vendor/minifier/src/css/mod.rs2
-rw-r--r--vendor/minifier/src/css/tests.rs7
-rw-r--r--vendor/minifier/src/css/token.rs8
-rw-r--r--vendor/minifier/src/js/token.rs35
-rw-r--r--vendor/minifier/src/js/utils.rs22
-rw-r--r--vendor/packed_simd/.cargo-checksum.json1
-rw-r--r--vendor/packed_simd/Cargo.toml (renamed from vendor/packed_simd_2/Cargo.toml)32
-rw-r--r--vendor/packed_simd/LICENSE-APACHE (renamed from vendor/packed_simd_2/LICENSE-APACHE)0
-rw-r--r--vendor/packed_simd/LICENSE-MIT (renamed from vendor/packed_simd_2/LICENSE-MIT)0
-rw-r--r--vendor/packed_simd/README.md (renamed from vendor/packed_simd_2/README.md)48
-rw-r--r--vendor/packed_simd/bors.toml (renamed from vendor/packed_simd_2/bors.toml)0
-rw-r--r--vendor/packed_simd/build.rs (renamed from vendor/packed_simd_2/build.rs)0
-rwxr-xr-xvendor/packed_simd/ci/all.sh (renamed from vendor/packed_simd_2/ci/all.sh)0
-rw-r--r--vendor/packed_simd/ci/android-install-ndk.sh21
-rw-r--r--vendor/packed_simd/ci/android-install-sdk.sh (renamed from vendor/packed_simd_2/ci/android-install-sdk.sh)0
-rw-r--r--vendor/packed_simd/ci/android-sysimage.sh (renamed from vendor/packed_simd_2/ci/android-sysimage.sh)0
-rwxr-xr-xvendor/packed_simd/ci/benchmark.sh (renamed from vendor/packed_simd_2/ci/benchmark.sh)0
-rw-r--r--vendor/packed_simd/ci/deploy_and_run_on_ios_simulator.rs (renamed from vendor/packed_simd_2/ci/deploy_and_run_on_ios_simulator.rs)0
-rw-r--r--vendor/packed_simd/ci/docker/aarch64-linux-android/Dockerfile (renamed from vendor/packed_simd_2/ci/docker/aarch64-linux-android/Dockerfile)0
-rw-r--r--vendor/packed_simd/ci/docker/aarch64-unknown-linux-gnu/Dockerfile (renamed from vendor/packed_simd_2/ci/docker/aarch64-unknown-linux-gnu/Dockerfile)0
-rw-r--r--vendor/packed_simd/ci/docker/arm-unknown-linux-gnueabi/Dockerfile (renamed from vendor/packed_simd_2/ci/docker/arm-unknown-linux-gnueabi/Dockerfile)0
-rw-r--r--vendor/packed_simd/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile (renamed from vendor/packed_simd_2/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile)0
-rw-r--r--vendor/packed_simd/ci/docker/armv7-linux-androideabi/Dockerfile (renamed from vendor/packed_simd_2/ci/docker/arm-linux-androideabi/Dockerfile)0
-rw-r--r--vendor/packed_simd/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile (renamed from vendor/packed_simd_2/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile)0
-rw-r--r--vendor/packed_simd/ci/docker/i586-unknown-linux-gnu/Dockerfile (renamed from vendor/packed_simd_2/ci/docker/i586-unknown-linux-gnu/Dockerfile)0
-rw-r--r--vendor/packed_simd/ci/docker/i686-unknown-linux-gnu/Dockerfile (renamed from vendor/packed_simd_2/ci/docker/i686-unknown-linux-gnu/Dockerfile)0
-rw-r--r--vendor/packed_simd/ci/docker/mips-unknown-linux-gnu/Dockerfile (renamed from vendor/packed_simd_2/ci/docker/mips-unknown-linux-gnu/Dockerfile)0
-rw-r--r--vendor/packed_simd/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile (renamed from vendor/packed_simd_2/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile)0
-rw-r--r--vendor/packed_simd/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile (renamed from vendor/packed_simd_2/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile)0
-rw-r--r--vendor/packed_simd/ci/docker/mipsel-unknown-linux-musl/Dockerfile (renamed from vendor/packed_simd_2/ci/docker/mipsel-unknown-linux-musl/Dockerfile)0
-rw-r--r--vendor/packed_simd/ci/docker/powerpc-unknown-linux-gnu/Dockerfile (renamed from vendor/packed_simd_2/ci/docker/powerpc-unknown-linux-gnu/Dockerfile)2
-rw-r--r--vendor/packed_simd/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile (renamed from vendor/packed_simd_2/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile)2
-rw-r--r--vendor/packed_simd/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile (renamed from vendor/packed_simd_2/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile)2
-rw-r--r--vendor/packed_simd/ci/docker/s390x-unknown-linux-gnu/Dockerfile (renamed from vendor/packed_simd_2/ci/docker/s390x-unknown-linux-gnu/Dockerfile)4
-rw-r--r--vendor/packed_simd/ci/docker/sparc64-unknown-linux-gnu/Dockerfile (renamed from vendor/packed_simd_2/ci/docker/sparc64-unknown-linux-gnu/Dockerfile)4
-rw-r--r--vendor/packed_simd/ci/docker/thumbv7neon-linux-androideabi/Dockerfile (renamed from vendor/packed_simd_2/ci/docker/thumbv7neon-linux-androideabi/Dockerfile)0
-rw-r--r--vendor/packed_simd/ci/docker/thumbv7neon-unknown-linux-gnueabihf/Dockerfile (renamed from vendor/packed_simd_2/ci/docker/thumbv7neon-unknown-linux-gnueabihf/Dockerfile)0
-rw-r--r--vendor/packed_simd/ci/docker/wasm32-unknown-unknown/Dockerfile (renamed from vendor/packed_simd_2/ci/docker/wasm32-unknown-unknown/Dockerfile)9
-rw-r--r--vendor/packed_simd/ci/docker/x86_64-linux-android/Dockerfile (renamed from vendor/packed_simd_2/ci/docker/x86_64-linux-android/Dockerfile)16
-rw-r--r--vendor/packed_simd/ci/docker/x86_64-unknown-linux-gnu-emulated/Dockerfile (renamed from vendor/packed_simd_2/ci/docker/x86_64-unknown-linux-gnu-emulated/Dockerfile)0
-rw-r--r--vendor/packed_simd/ci/docker/x86_64-unknown-linux-gnu/Dockerfile (renamed from vendor/packed_simd_2/ci/docker/x86_64-unknown-linux-gnu/Dockerfile)0
-rwxr-xr-xvendor/packed_simd/ci/dox.sh (renamed from vendor/packed_simd_2/ci/dox.sh)0
-rw-r--r--vendor/packed_simd/ci/linux-s390x.sh (renamed from vendor/packed_simd_2/ci/linux-s390x.sh)0
-rw-r--r--vendor/packed_simd/ci/linux-sparc64.sh (renamed from vendor/packed_simd_2/ci/linux-sparc64.sh)0
-rw-r--r--vendor/packed_simd/ci/lld-shim.rs (renamed from vendor/packed_simd_2/ci/lld-shim.rs)0
-rwxr-xr-xvendor/packed_simd/ci/max_line_width.sh (renamed from vendor/packed_simd_2/ci/max_line_width.sh)0
-rwxr-xr-xvendor/packed_simd/ci/run-docker.sh (renamed from vendor/packed_simd_2/ci/run-docker.sh)0
-rwxr-xr-xvendor/packed_simd/ci/run.sh (renamed from vendor/packed_simd_2/ci/run.sh)3
-rw-r--r--vendor/packed_simd/ci/run_examples.sh (renamed from vendor/packed_simd_2/ci/run_examples.sh)0
-rw-r--r--vendor/packed_simd/ci/runtest-android.rs (renamed from vendor/packed_simd_2/ci/runtest-android.rs)0
-rwxr-xr-xvendor/packed_simd/ci/setup_benchmarks.sh (renamed from vendor/packed_simd_2/ci/setup_benchmarks.sh)0
-rwxr-xr-xvendor/packed_simd/ci/test-runner-linux (renamed from vendor/packed_simd_2/ci/test-runner-linux)0
-rw-r--r--vendor/packed_simd/contributing.md (renamed from vendor/packed_simd_2/contributing.md)0
-rw-r--r--vendor/packed_simd/perf-guide/book.toml (renamed from vendor/packed_simd_2/perf-guide/book.toml)0
-rw-r--r--vendor/packed_simd/perf-guide/src/SUMMARY.md (renamed from vendor/packed_simd_2/perf-guide/src/SUMMARY.md)0
-rw-r--r--vendor/packed_simd/perf-guide/src/ascii.css (renamed from vendor/packed_simd_2/perf-guide/src/ascii.css)0
-rw-r--r--vendor/packed_simd/perf-guide/src/bound_checks.md (renamed from vendor/packed_simd_2/perf-guide/src/bound_checks.md)0
-rw-r--r--vendor/packed_simd/perf-guide/src/float-math/approx.md (renamed from vendor/packed_simd_2/perf-guide/src/float-math/approx.md)0
-rw-r--r--vendor/packed_simd/perf-guide/src/float-math/fma.md (renamed from vendor/packed_simd_2/perf-guide/src/float-math/fma.md)0
-rw-r--r--vendor/packed_simd/perf-guide/src/float-math/fp.md (renamed from vendor/packed_simd_2/perf-guide/src/float-math/fp.md)0
-rw-r--r--vendor/packed_simd/perf-guide/src/float-math/svml.md (renamed from vendor/packed_simd_2/perf-guide/src/float-math/svml.md)0
-rw-r--r--vendor/packed_simd/perf-guide/src/introduction.md (renamed from vendor/packed_simd_2/perf-guide/src/introduction.md)0
-rw-r--r--vendor/packed_simd/perf-guide/src/prof/linux.md (renamed from vendor/packed_simd_2/perf-guide/src/prof/linux.md)0
-rw-r--r--vendor/packed_simd/perf-guide/src/prof/mca.md (renamed from vendor/packed_simd_2/perf-guide/src/prof/mca.md)0
-rw-r--r--vendor/packed_simd/perf-guide/src/prof/profiling.md (renamed from vendor/packed_simd_2/perf-guide/src/prof/profiling.md)0
-rw-r--r--vendor/packed_simd/perf-guide/src/target-feature/attribute.md (renamed from vendor/packed_simd_2/perf-guide/src/target-feature/attribute.md)0
-rw-r--r--vendor/packed_simd/perf-guide/src/target-feature/features.md (renamed from vendor/packed_simd_2/perf-guide/src/target-feature/features.md)0
-rw-r--r--vendor/packed_simd/perf-guide/src/target-feature/inlining.md (renamed from vendor/packed_simd_2/perf-guide/src/target-feature/inlining.md)0
-rw-r--r--vendor/packed_simd/perf-guide/src/target-feature/practice.md (renamed from vendor/packed_simd_2/perf-guide/src/target-feature/practice.md)0
-rw-r--r--vendor/packed_simd/perf-guide/src/target-feature/runtime.md (renamed from vendor/packed_simd_2/perf-guide/src/target-feature/runtime.md)0
-rw-r--r--vendor/packed_simd/perf-guide/src/target-feature/rustflags.md (renamed from vendor/packed_simd_2/perf-guide/src/target-feature/rustflags.md)0
-rw-r--r--vendor/packed_simd/perf-guide/src/vert-hor-ops.md (renamed from vendor/packed_simd_2/perf-guide/src/vert-hor-ops.md)0
-rw-r--r--vendor/packed_simd/rust-toolchain1
-rw-r--r--vendor/packed_simd/rustfmt.toml (renamed from vendor/packed_simd_2/rustfmt.toml)0
-rw-r--r--vendor/packed_simd/src/api.rs (renamed from vendor/packed_simd_2/src/api.rs)0
-rw-r--r--vendor/packed_simd/src/api/bit_manip.rs (renamed from vendor/packed_simd_2/src/api/bit_manip.rs)2
-rw-r--r--vendor/packed_simd/src/api/bitmask.rs (renamed from vendor/packed_simd_2/src/api/bitmask.rs)9
-rw-r--r--vendor/packed_simd/src/api/cast.rs (renamed from vendor/packed_simd_2/src/api/cast.rs)0
-rw-r--r--vendor/packed_simd/src/api/cast/macros.rs (renamed from vendor/packed_simd_2/src/api/cast/macros.rs)0
-rw-r--r--vendor/packed_simd/src/api/cast/v128.rs (renamed from vendor/packed_simd_2/src/api/cast/v128.rs)0
-rw-r--r--vendor/packed_simd/src/api/cast/v16.rs (renamed from vendor/packed_simd_2/src/api/cast/v16.rs)0
-rw-r--r--vendor/packed_simd/src/api/cast/v256.rs (renamed from vendor/packed_simd_2/src/api/cast/v256.rs)0
-rw-r--r--vendor/packed_simd/src/api/cast/v32.rs (renamed from vendor/packed_simd_2/src/api/cast/v32.rs)0
-rw-r--r--vendor/packed_simd/src/api/cast/v512.rs (renamed from vendor/packed_simd_2/src/api/cast/v512.rs)0
-rw-r--r--vendor/packed_simd/src/api/cast/v64.rs (renamed from vendor/packed_simd_2/src/api/cast/v64.rs)0
-rw-r--r--vendor/packed_simd/src/api/cmp.rs (renamed from vendor/packed_simd_2/src/api/cmp.rs)0
-rw-r--r--vendor/packed_simd/src/api/cmp/eq.rs (renamed from vendor/packed_simd_2/src/api/cmp/eq.rs)0
-rw-r--r--vendor/packed_simd/src/api/cmp/ord.rs (renamed from vendor/packed_simd_2/src/api/cmp/ord.rs)0
-rw-r--r--vendor/packed_simd/src/api/cmp/partial_eq.rs (renamed from vendor/packed_simd_2/src/api/cmp/partial_eq.rs)0
-rw-r--r--vendor/packed_simd/src/api/cmp/partial_ord.rs (renamed from vendor/packed_simd_2/src/api/cmp/partial_ord.rs)0
-rw-r--r--vendor/packed_simd/src/api/cmp/vertical.rs (renamed from vendor/packed_simd_2/src/api/cmp/vertical.rs)0
-rw-r--r--vendor/packed_simd/src/api/default.rs (renamed from vendor/packed_simd_2/src/api/default.rs)0
-rw-r--r--vendor/packed_simd/src/api/fmt.rs (renamed from vendor/packed_simd_2/src/api/fmt.rs)0
-rw-r--r--vendor/packed_simd/src/api/fmt/binary.rs (renamed from vendor/packed_simd_2/src/api/fmt/binary.rs)0
-rw-r--r--vendor/packed_simd/src/api/fmt/debug.rs (renamed from vendor/packed_simd_2/src/api/fmt/debug.rs)0
-rw-r--r--vendor/packed_simd/src/api/fmt/lower_hex.rs (renamed from vendor/packed_simd_2/src/api/fmt/lower_hex.rs)0
-rw-r--r--vendor/packed_simd/src/api/fmt/octal.rs (renamed from vendor/packed_simd_2/src/api/fmt/octal.rs)0
-rw-r--r--vendor/packed_simd/src/api/fmt/upper_hex.rs (renamed from vendor/packed_simd_2/src/api/fmt/upper_hex.rs)0
-rw-r--r--vendor/packed_simd/src/api/from.rs (renamed from vendor/packed_simd_2/src/api/from.rs)0
-rw-r--r--vendor/packed_simd/src/api/from/from_array.rs (renamed from vendor/packed_simd_2/src/api/from/from_array.rs)1
-rw-r--r--vendor/packed_simd/src/api/from/from_vector.rs (renamed from vendor/packed_simd_2/src/api/from/from_vector.rs)0
-rw-r--r--vendor/packed_simd/src/api/hash.rs (renamed from vendor/packed_simd_2/src/api/hash.rs)0
-rw-r--r--vendor/packed_simd/src/api/into_bits.rs (renamed from vendor/packed_simd_2/src/api/into_bits.rs)2
-rw-r--r--vendor/packed_simd/src/api/into_bits/arch_specific.rs (renamed from vendor/packed_simd_2/src/api/into_bits/arch_specific.rs)0
-rw-r--r--vendor/packed_simd/src/api/into_bits/macros.rs (renamed from vendor/packed_simd_2/src/api/into_bits/macros.rs)0
-rw-r--r--vendor/packed_simd/src/api/into_bits/v128.rs (renamed from vendor/packed_simd_2/src/api/into_bits/v128.rs)0
-rw-r--r--vendor/packed_simd/src/api/into_bits/v16.rs (renamed from vendor/packed_simd_2/src/api/into_bits/v16.rs)0
-rw-r--r--vendor/packed_simd/src/api/into_bits/v256.rs (renamed from vendor/packed_simd_2/src/api/into_bits/v256.rs)0
-rw-r--r--vendor/packed_simd/src/api/into_bits/v32.rs (renamed from vendor/packed_simd_2/src/api/into_bits/v32.rs)0
-rw-r--r--vendor/packed_simd/src/api/into_bits/v512.rs (renamed from vendor/packed_simd_2/src/api/into_bits/v512.rs)0
-rw-r--r--vendor/packed_simd/src/api/into_bits/v64.rs (renamed from vendor/packed_simd_2/src/api/into_bits/v64.rs)0
-rw-r--r--vendor/packed_simd/src/api/math.rs (renamed from vendor/packed_simd_2/src/api/math.rs)0
-rw-r--r--vendor/packed_simd/src/api/math/float.rs (renamed from vendor/packed_simd_2/src/api/math/float.rs)0
-rw-r--r--vendor/packed_simd/src/api/math/float/abs.rs (renamed from vendor/packed_simd_2/src/api/math/float/abs.rs)0
-rw-r--r--vendor/packed_simd/src/api/math/float/consts.rs (renamed from vendor/packed_simd_2/src/api/math/float/consts.rs)0
-rw-r--r--vendor/packed_simd/src/api/math/float/cos.rs (renamed from vendor/packed_simd_2/src/api/math/float/cos.rs)0
-rw-r--r--vendor/packed_simd/src/api/math/float/exp.rs (renamed from vendor/packed_simd_2/src/api/math/float/exp.rs)0
-rw-r--r--vendor/packed_simd/src/api/math/float/ln.rs (renamed from vendor/packed_simd_2/src/api/math/float/ln.rs)0
-rw-r--r--vendor/packed_simd/src/api/math/float/mul_add.rs (renamed from vendor/packed_simd_2/src/api/math/float/mul_add.rs)0
-rw-r--r--vendor/packed_simd/src/api/math/float/mul_adde.rs (renamed from vendor/packed_simd_2/src/api/math/float/mul_adde.rs)0
-rw-r--r--vendor/packed_simd/src/api/math/float/powf.rs (renamed from vendor/packed_simd_2/src/api/math/float/powf.rs)0
-rw-r--r--vendor/packed_simd/src/api/math/float/recpre.rs (renamed from vendor/packed_simd_2/src/api/math/float/recpre.rs)0
-rw-r--r--vendor/packed_simd/src/api/math/float/rsqrte.rs (renamed from vendor/packed_simd_2/src/api/math/float/rsqrte.rs)0
-rw-r--r--vendor/packed_simd/src/api/math/float/sin.rs (renamed from vendor/packed_simd_2/src/api/math/float/sin.rs)0
-rw-r--r--vendor/packed_simd/src/api/math/float/sqrt.rs (renamed from vendor/packed_simd_2/src/api/math/float/sqrt.rs)0
-rw-r--r--vendor/packed_simd/src/api/math/float/sqrte.rs (renamed from vendor/packed_simd_2/src/api/math/float/sqrte.rs)0
-rw-r--r--vendor/packed_simd/src/api/math/float/tanh.rs (renamed from vendor/packed_simd_2/src/api/math/float/tanh.rs)0
-rw-r--r--vendor/packed_simd/src/api/minimal.rs (renamed from vendor/packed_simd_2/src/api/minimal.rs)0
-rw-r--r--vendor/packed_simd/src/api/minimal/iuf.rs (renamed from vendor/packed_simd_2/src/api/minimal/iuf.rs)0
-rw-r--r--vendor/packed_simd/src/api/minimal/mask.rs (renamed from vendor/packed_simd_2/src/api/minimal/mask.rs)0
-rw-r--r--vendor/packed_simd/src/api/minimal/ptr.rs (renamed from vendor/packed_simd_2/src/api/minimal/ptr.rs)16
-rw-r--r--vendor/packed_simd/src/api/ops.rs (renamed from vendor/packed_simd_2/src/api/ops.rs)0
-rw-r--r--vendor/packed_simd/src/api/ops/scalar_arithmetic.rs (renamed from vendor/packed_simd_2/src/api/ops/scalar_arithmetic.rs)0
-rw-r--r--vendor/packed_simd/src/api/ops/scalar_bitwise.rs (renamed from vendor/packed_simd_2/src/api/ops/scalar_bitwise.rs)0
-rw-r--r--vendor/packed_simd/src/api/ops/scalar_mask_bitwise.rs (renamed from vendor/packed_simd_2/src/api/ops/scalar_mask_bitwise.rs)0
-rw-r--r--vendor/packed_simd/src/api/ops/scalar_shifts.rs (renamed from vendor/packed_simd_2/src/api/ops/scalar_shifts.rs)0
-rw-r--r--vendor/packed_simd/src/api/ops/vector_arithmetic.rs (renamed from vendor/packed_simd_2/src/api/ops/vector_arithmetic.rs)0
-rw-r--r--vendor/packed_simd/src/api/ops/vector_bitwise.rs (renamed from vendor/packed_simd_2/src/api/ops/vector_bitwise.rs)0
-rw-r--r--vendor/packed_simd/src/api/ops/vector_float_min_max.rs (renamed from vendor/packed_simd_2/src/api/ops/vector_float_min_max.rs)0
-rw-r--r--vendor/packed_simd/src/api/ops/vector_int_min_max.rs (renamed from vendor/packed_simd_2/src/api/ops/vector_int_min_max.rs)0
-rw-r--r--vendor/packed_simd/src/api/ops/vector_mask_bitwise.rs (renamed from vendor/packed_simd_2/src/api/ops/vector_mask_bitwise.rs)0
-rw-r--r--vendor/packed_simd/src/api/ops/vector_neg.rs (renamed from vendor/packed_simd_2/src/api/ops/vector_neg.rs)0
-rw-r--r--vendor/packed_simd/src/api/ops/vector_rotates.rs (renamed from vendor/packed_simd_2/src/api/ops/vector_rotates.rs)4
-rw-r--r--vendor/packed_simd/src/api/ops/vector_shifts.rs (renamed from vendor/packed_simd_2/src/api/ops/vector_shifts.rs)0
-rw-r--r--vendor/packed_simd/src/api/ptr.rs (renamed from vendor/packed_simd_2/src/api/ptr.rs)0
-rw-r--r--vendor/packed_simd/src/api/ptr/gather_scatter.rs (renamed from vendor/packed_simd_2/src/api/ptr/gather_scatter.rs)0
-rw-r--r--vendor/packed_simd/src/api/reductions.rs (renamed from vendor/packed_simd_2/src/api/reductions.rs)0
-rw-r--r--vendor/packed_simd/src/api/reductions/bitwise.rs (renamed from vendor/packed_simd_2/src/api/reductions/bitwise.rs)0
-rw-r--r--vendor/packed_simd/src/api/reductions/float_arithmetic.rs (renamed from vendor/packed_simd_2/src/api/reductions/float_arithmetic.rs)0
-rw-r--r--vendor/packed_simd/src/api/reductions/integer_arithmetic.rs (renamed from vendor/packed_simd_2/src/api/reductions/integer_arithmetic.rs)0
-rw-r--r--vendor/packed_simd/src/api/reductions/mask.rs (renamed from vendor/packed_simd_2/src/api/reductions/mask.rs)0
-rw-r--r--vendor/packed_simd/src/api/reductions/min_max.rs (renamed from vendor/packed_simd_2/src/api/reductions/min_max.rs)0
-rw-r--r--vendor/packed_simd/src/api/select.rs (renamed from vendor/packed_simd_2/src/api/select.rs)0
-rw-r--r--vendor/packed_simd/src/api/shuffle.rs (renamed from vendor/packed_simd_2/src/api/shuffle.rs)4
-rw-r--r--vendor/packed_simd/src/api/shuffle1_dyn.rs (renamed from vendor/packed_simd_2/src/api/shuffle1_dyn.rs)0
-rw-r--r--vendor/packed_simd/src/api/slice.rs (renamed from vendor/packed_simd_2/src/api/slice.rs)0
-rw-r--r--vendor/packed_simd/src/api/slice/from_slice.rs (renamed from vendor/packed_simd_2/src/api/slice/from_slice.rs)6
-rw-r--r--vendor/packed_simd/src/api/slice/write_to_slice.rs (renamed from vendor/packed_simd_2/src/api/slice/write_to_slice.rs)6
-rw-r--r--vendor/packed_simd/src/api/swap_bytes.rs (renamed from vendor/packed_simd_2/src/api/swap_bytes.rs)2
-rw-r--r--vendor/packed_simd/src/codegen.rs (renamed from vendor/packed_simd_2/src/codegen.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/bit_manip.rs (renamed from vendor/packed_simd_2/src/codegen/bit_manip.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/llvm.rs (renamed from vendor/packed_simd_2/src/codegen/llvm.rs)20
-rw-r--r--vendor/packed_simd/src/codegen/math.rs (renamed from vendor/packed_simd_2/src/codegen/math.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/math/float.rs (renamed from vendor/packed_simd_2/src/codegen/math/float.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/math/float/abs.rs (renamed from vendor/packed_simd_2/src/codegen/math/float/abs.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/math/float/cos.rs (renamed from vendor/packed_simd_2/src/codegen/math/float/cos.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/math/float/cos_pi.rs (renamed from vendor/packed_simd_2/src/codegen/math/float/cos_pi.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/math/float/exp.rs (renamed from vendor/packed_simd_2/src/codegen/math/float/exp.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/math/float/ln.rs (renamed from vendor/packed_simd_2/src/codegen/math/float/ln.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/math/float/macros.rs (renamed from vendor/packed_simd_2/src/codegen/math/float/macros.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/math/float/mul_add.rs (renamed from vendor/packed_simd_2/src/codegen/math/float/mul_add.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/math/float/mul_adde.rs (renamed from vendor/packed_simd_2/src/codegen/math/float/mul_adde.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/math/float/powf.rs (renamed from vendor/packed_simd_2/src/codegen/math/float/powf.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/math/float/sin.rs (renamed from vendor/packed_simd_2/src/codegen/math/float/sin.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/math/float/sin_cos_pi.rs (renamed from vendor/packed_simd_2/src/codegen/math/float/sin_cos_pi.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/math/float/sin_pi.rs (renamed from vendor/packed_simd_2/src/codegen/math/float/sin_pi.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/math/float/sqrt.rs (renamed from vendor/packed_simd_2/src/codegen/math/float/sqrt.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/math/float/sqrte.rs (renamed from vendor/packed_simd_2/src/codegen/math/float/sqrte.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/math/float/tanh.rs (renamed from vendor/packed_simd_2/src/codegen/math/float/tanh.rs)11
-rw-r--r--vendor/packed_simd/src/codegen/pointer_sized_int.rs (renamed from vendor/packed_simd_2/src/codegen/pointer_sized_int.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/reductions.rs (renamed from vendor/packed_simd_2/src/codegen/reductions.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/reductions/mask.rs (renamed from vendor/packed_simd_2/src/codegen/reductions/mask.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/reductions/mask/aarch64.rs (renamed from vendor/packed_simd_2/src/codegen/reductions/mask/aarch64.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/reductions/mask/arm.rs (renamed from vendor/packed_simd_2/src/codegen/reductions/mask/arm.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/reductions/mask/fallback.rs (renamed from vendor/packed_simd_2/src/codegen/reductions/mask/fallback.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/reductions/mask/fallback_impl.rs (renamed from vendor/packed_simd_2/src/codegen/reductions/mask/fallback_impl.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/reductions/mask/x86.rs (renamed from vendor/packed_simd_2/src/codegen/reductions/mask/x86.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/reductions/mask/x86/avx.rs (renamed from vendor/packed_simd_2/src/codegen/reductions/mask/x86/avx.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/reductions/mask/x86/avx2.rs (renamed from vendor/packed_simd_2/src/codegen/reductions/mask/x86/avx2.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/reductions/mask/x86/sse.rs (renamed from vendor/packed_simd_2/src/codegen/reductions/mask/x86/sse.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/reductions/mask/x86/sse2.rs (renamed from vendor/packed_simd_2/src/codegen/reductions/mask/x86/sse2.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/shuffle.rs (renamed from vendor/packed_simd_2/src/codegen/shuffle.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/shuffle1_dyn.rs (renamed from vendor/packed_simd_2/src/codegen/shuffle1_dyn.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/swap_bytes.rs (renamed from vendor/packed_simd_2/src/codegen/swap_bytes.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/v128.rs (renamed from vendor/packed_simd_2/src/codegen/v128.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/v16.rs (renamed from vendor/packed_simd_2/src/codegen/v16.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/v256.rs (renamed from vendor/packed_simd_2/src/codegen/v256.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/v32.rs (renamed from vendor/packed_simd_2/src/codegen/v32.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/v512.rs (renamed from vendor/packed_simd_2/src/codegen/v512.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/v64.rs (renamed from vendor/packed_simd_2/src/codegen/v64.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/vPtr.rs (renamed from vendor/packed_simd_2/src/codegen/vPtr.rs)0
-rw-r--r--vendor/packed_simd/src/codegen/vSize.rs (renamed from vendor/packed_simd_2/src/codegen/vSize.rs)0
-rw-r--r--vendor/packed_simd/src/lib.rs (renamed from vendor/packed_simd_2/src/lib.rs)15
-rw-r--r--vendor/packed_simd/src/masks.rs (renamed from vendor/packed_simd_2/src/masks.rs)0
-rw-r--r--vendor/packed_simd/src/sealed.rs (renamed from vendor/packed_simd_2/src/sealed.rs)0
-rw-r--r--vendor/packed_simd/src/testing.rs (renamed from vendor/packed_simd_2/src/testing.rs)0
-rw-r--r--vendor/packed_simd/src/testing/macros.rs (renamed from vendor/packed_simd_2/src/testing/macros.rs)0
-rw-r--r--vendor/packed_simd/src/testing/utils.rs (renamed from vendor/packed_simd_2/src/testing/utils.rs)0
-rw-r--r--vendor/packed_simd/src/v128.rs (renamed from vendor/packed_simd_2/src/v128.rs)0
-rw-r--r--vendor/packed_simd/src/v16.rs (renamed from vendor/packed_simd_2/src/v16.rs)0
-rw-r--r--vendor/packed_simd/src/v256.rs (renamed from vendor/packed_simd_2/src/v256.rs)0
-rw-r--r--vendor/packed_simd/src/v32.rs (renamed from vendor/packed_simd_2/src/v32.rs)0
-rw-r--r--vendor/packed_simd/src/v512.rs (renamed from vendor/packed_simd_2/src/v512.rs)0
-rw-r--r--vendor/packed_simd/src/v64.rs (renamed from vendor/packed_simd_2/src/v64.rs)0
-rw-r--r--vendor/packed_simd/src/vPtr.rs (renamed from vendor/packed_simd_2/src/vPtr.rs)0
-rw-r--r--vendor/packed_simd/src/vSize.rs (renamed from vendor/packed_simd_2/src/vSize.rs)0
-rw-r--r--vendor/packed_simd/tests/endianness.rs (renamed from vendor/packed_simd_2/tests/endianness.rs)2
-rw-r--r--vendor/packed_simd_2/.cargo-checksum.json1
-rw-r--r--vendor/packed_simd_2/ci/android-install-ndk.sh37
-rw-r--r--vendor/packed_simd_2/rust-toolchain1
-rw-r--r--vendor/papergrid/.cargo-checksum.json1
-rw-r--r--vendor/papergrid/Cargo.lock137
-rw-r--r--vendor/papergrid/Cargo.toml85
-rw-r--r--vendor/papergrid/LICENSE-MIT (renamed from vendor/errno-dragonfly/LICENSE)2
-rw-r--r--vendor/papergrid/README.md84
-rw-r--r--vendor/papergrid/examples/color_map.rs105
-rw-r--r--vendor/papergrid/examples/colored_border.rs74
-rw-r--r--vendor/papergrid/examples/common_grid.rs67
-rw-r--r--vendor/papergrid/examples/common_grid_no_std.rs73
-rw-r--r--vendor/papergrid/examples/hello_world.rs78
-rw-r--r--vendor/papergrid/examples/papergrid_color.rs69
-rw-r--r--vendor/papergrid/examples/span_usage.rs63
-rw-r--r--vendor/papergrid/src/color/ansi_color.rs86
-rw-r--r--vendor/papergrid/src/color/mod.rs51
-rw-r--r--vendor/papergrid/src/color/static_color.rs49
-rw-r--r--vendor/papergrid/src/colors.rs89
-rw-r--r--vendor/papergrid/src/config/alignment.rs21
-rw-r--r--vendor/papergrid/src/config/border.rs142
-rw-r--r--vendor/papergrid/src/config/borders.rs152
-rw-r--r--vendor/papergrid/src/config/compact/mod.rs141
-rw-r--r--vendor/papergrid/src/config/entity.rs120
-rw-r--r--vendor/papergrid/src/config/indent.rs31
-rw-r--r--vendor/papergrid/src/config/line.rs42
-rw-r--r--vendor/papergrid/src/config/mod.rs23
-rw-r--r--vendor/papergrid/src/config/position.rs13
-rw-r--r--vendor/papergrid/src/config/sides.rs37
-rw-r--r--vendor/papergrid/src/config/spanned/borders_config.rs486
-rw-r--r--vendor/papergrid/src/config/spanned/entity_map.rs108
-rw-r--r--vendor/papergrid/src/config/spanned/formatting.rs21
-rw-r--r--vendor/papergrid/src/config/spanned/mod.rs887
-rw-r--r--vendor/papergrid/src/config/spanned/offset.rs8
-rw-r--r--vendor/papergrid/src/dimension/compact.rs121
-rw-r--r--vendor/papergrid/src/dimension/mod.rs44
-rw-r--r--vendor/papergrid/src/dimension/spanned.rs329
-rw-r--r--vendor/papergrid/src/dimension/spanned_vec_records.rs332
-rw-r--r--vendor/papergrid/src/grid/compact.rs659
-rw-r--r--vendor/papergrid/src/grid/iterable.rs1358
-rw-r--r--vendor/papergrid/src/grid/mod.rs9
-rw-r--r--vendor/papergrid/src/grid/peekable.rs976
-rw-r--r--vendor/papergrid/src/lib.rs87
-rw-r--r--vendor/papergrid/src/records/exact_records.rs31
-rw-r--r--vendor/papergrid/src/records/into_records.rs33
-rw-r--r--vendor/papergrid/src/records/iter_records.rs87
-rw-r--r--vendor/papergrid/src/records/mod.rs31
-rw-r--r--vendor/papergrid/src/records/peekable_records.rs52
-rw-r--r--vendor/papergrid/src/records/vec_records/cell.rs19
-rw-r--r--vendor/papergrid/src/records/vec_records/cell_info.rs170
-rw-r--r--vendor/papergrid/src/records/vec_records/mod.rs124
-rw-r--r--vendor/papergrid/src/util/mod.rs3
-rw-r--r--vendor/papergrid/src/util/string.rs270
-rw-r--r--vendor/papergrid/tests/grid/column_span.rs431
-rw-r--r--vendor/papergrid/tests/grid/format_configuration.rs953
-rw-r--r--vendor/papergrid/tests/grid/mod.rs6
-rw-r--r--vendor/papergrid/tests/grid/render.rs251
-rw-r--r--vendor/papergrid/tests/grid/row_span.rs1062
-rw-r--r--vendor/papergrid/tests/grid/settings.rs265
-rw-r--r--vendor/papergrid/tests/grid/styling.rs334
-rw-r--r--vendor/papergrid/tests/main.rs3
-rw-r--r--vendor/papergrid/tests/util/grid_builder.rs139
-rw-r--r--vendor/papergrid/tests/util/mod.rs4
-rw-r--r--vendor/portable-atomic/.cargo-checksum.json2
-rw-r--r--vendor/portable-atomic/CHANGELOG.md47
-rw-r--r--vendor/portable-atomic/Cargo.toml10
-rw-r--r--vendor/portable-atomic/README.md4
-rw-r--r--vendor/portable-atomic/build.rs136
-rw-r--r--vendor/portable-atomic/no_atomic.rs5
-rw-r--r--vendor/portable-atomic/src/gen/utils.rs16
-rw-r--r--vendor/portable-atomic/src/imp/arm_linux.rs61
-rw-r--r--vendor/portable-atomic/src/imp/atomic128/README.md5
-rw-r--r--vendor/portable-atomic/src/imp/atomic128/aarch64.rs709
-rw-r--r--vendor/portable-atomic/src/imp/atomic128/detect/aarch64_aa64reg.rs352
-rw-r--r--vendor/portable-atomic/src/imp/atomic128/detect/aarch64_fuchsia.rs2
-rw-r--r--vendor/portable-atomic/src/imp/atomic128/detect/aarch64_macos.rs16
-rw-r--r--vendor/portable-atomic/src/imp/atomic128/detect/aarch64_windows.rs2
-rw-r--r--vendor/portable-atomic/src/imp/atomic128/detect/auxv.rs404
-rw-r--r--vendor/portable-atomic/src/imp/atomic128/detect/common.rs38
-rw-r--r--vendor/portable-atomic/src/imp/atomic128/detect/x86_64.rs60
-rw-r--r--vendor/portable-atomic/src/imp/atomic128/intrinsics.rs43
-rw-r--r--vendor/portable-atomic/src/imp/atomic128/macros.rs2
-rw-r--r--vendor/portable-atomic/src/imp/atomic128/powerpc64.rs279
-rw-r--r--vendor/portable-atomic/src/imp/atomic128/s390x.rs56
-rw-r--r--vendor/portable-atomic/src/imp/atomic128/x86_64.rs44
-rw-r--r--vendor/portable-atomic/src/imp/core_atomic.rs27
-rw-r--r--vendor/portable-atomic/src/imp/fallback/mod.rs112
-rw-r--r--vendor/portable-atomic/src/imp/fallback/outline_atomics.rs2
-rw-r--r--vendor/portable-atomic/src/imp/fallback/seq_lock.rs2
-rw-r--r--vendor/portable-atomic/src/imp/fallback/seq_lock_wide.rs2
-rw-r--r--vendor/portable-atomic/src/imp/fallback/utils.rs22
-rw-r--r--vendor/portable-atomic/src/imp/float.rs7
-rw-r--r--vendor/portable-atomic/src/imp/interrupt/README.md3
-rw-r--r--vendor/portable-atomic/src/imp/interrupt/armv4t.rs36
-rw-r--r--vendor/portable-atomic/src/imp/interrupt/armv6m.rs4
-rw-r--r--vendor/portable-atomic/src/imp/interrupt/avr.rs5
-rw-r--r--vendor/portable-atomic/src/imp/interrupt/mod.rs375
-rw-r--r--vendor/portable-atomic/src/imp/interrupt/msp430.rs5
-rw-r--r--vendor/portable-atomic/src/imp/interrupt/riscv.rs4
-rw-r--r--vendor/portable-atomic/src/imp/interrupt/xtensa.rs2
-rw-r--r--vendor/portable-atomic/src/imp/mod.rs475
-rw-r--r--vendor/portable-atomic/src/imp/msp430.rs11
-rw-r--r--vendor/portable-atomic/src/imp/riscv.rs553
-rw-r--r--vendor/portable-atomic/src/imp/x86.rs67
-rw-r--r--vendor/portable-atomic/src/lib.rs246
-rw-r--r--vendor/portable-atomic/src/tests/helper.rs57
-rw-r--r--vendor/portable-atomic/src/tests/mod.rs57
-rw-r--r--vendor/portable-atomic/src/tests/serde.rs38
-rw-r--r--vendor/portable-atomic/src/utils.rs232
-rw-r--r--vendor/portable-atomic/version.rs10
-rw-r--r--vendor/proc-macro2/.cargo-checksum.json2
-rw-r--r--vendor/proc-macro2/Cargo.toml2
-rw-r--r--vendor/proc-macro2/README.md2
-rw-r--r--vendor/proc-macro2/src/lib.rs9
-rw-r--r--vendor/proc-macro2/src/parse.rs10
-rw-r--r--vendor/proptest/.cargo-checksum.json2
-rw-r--r--vendor/proptest/CHANGELOG.md37
-rw-r--r--vendor/proptest/Cargo.lock209
-rw-r--r--vendor/proptest/Cargo.toml29
-rw-r--r--vendor/proptest/README.md5
-rw-r--r--vendor/proptest/src/arbitrary/_alloc/char.rs2
-rw-r--r--vendor/proptest/src/arbitrary/_std/path.rs112
-rw-r--r--vendor/proptest/src/bits.rs17
-rw-r--r--vendor/proptest/src/lib.rs7
-rw-r--r--vendor/proptest/src/num.rs15
-rw-r--r--vendor/proptest/src/path.rs55
-rw-r--r--vendor/proptest/src/sample.rs8
-rw-r--r--vendor/proptest/src/string.rs210
-rw-r--r--vendor/proptest/src/sugar.rs52
-rw-r--r--vendor/proptest/src/test_runner/config.rs3
-rw-r--r--vendor/proptest/src/test_runner/failure_persistence/file.rs19
-rw-r--r--vendor/proptest/src/test_runner/rng.rs19
-rw-r--r--vendor/proptest/src/test_runner/runner.rs22
-rw-r--r--vendor/rayon-core/.cargo-checksum.json2
-rw-r--r--vendor/rayon-core/Cargo.toml12
-rw-r--r--vendor/rayon-core/README.md2
-rw-r--r--vendor/rayon-core/src/broadcast/mod.rs5
-rw-r--r--vendor/rayon-core/src/broadcast/test.rs23
-rw-r--r--vendor/rayon-core/src/latch.rs168
-rw-r--r--vendor/rayon-core/src/lib.rs78
-rw-r--r--vendor/rayon-core/src/log.rs413
-rw-r--r--vendor/rayon-core/src/registry.rs174
-rw-r--r--vendor/rayon-core/src/scope/mod.rs116
-rw-r--r--vendor/rayon-core/src/sleep/counters.rs4
-rw-r--r--vendor/rayon-core/src/sleep/mod.rs95
-rw-r--r--vendor/rayon-core/src/thread_pool/test.rs4
-rw-r--r--vendor/rayon-core/tests/scoped_threadpool.rs2
-rw-r--r--vendor/rayon-core/tests/use_current_thread.rs57
-rw-r--r--vendor/rayon/.cargo-checksum.json2
-rw-r--r--vendor/rayon/Cargo.toml6
-rw-r--r--vendor/rayon/README.md4
-rw-r--r--vendor/rayon/RELEASES.md15
-rw-r--r--vendor/rayon/src/iter/extend.rs10
-rw-r--r--vendor/rayon/src/iter/from_par_iter.rs51
-rw-r--r--vendor/rayon/src/iter/mod.rs10
-rw-r--r--vendor/rayon/src/iter/par_bridge.rs5
-rw-r--r--vendor/rayon/src/iter/product.rs2
-rw-r--r--vendor/rayon/src/iter/sum.rs2
-rw-r--r--vendor/rayon/src/lib.rs2
-rw-r--r--vendor/rayon/src/slice/quicksort.rs42
-rw-r--r--vendor/redox_syscall-0.3.5/.cargo-checksum.json1
-rw-r--r--vendor/redox_syscall-0.3.5/Cargo.toml38
-rw-r--r--vendor/redox_syscall-0.3.5/LICENSE22
-rw-r--r--vendor/redox_syscall-0.3.5/README.md6
-rw-r--r--vendor/redox_syscall-0.3.5/src/arch/aarch64.rs150
-rw-r--r--vendor/redox_syscall-0.3.5/src/arch/nonredox.rs29
-rw-r--r--vendor/redox_syscall-0.3.5/src/arch/riscv64.rs93
-rw-r--r--vendor/redox_syscall-0.3.5/src/arch/x86.rs184
-rw-r--r--vendor/redox_syscall-0.3.5/src/arch/x86_64.rs157
-rw-r--r--vendor/redox_syscall-0.3.5/src/call.rs379
-rw-r--r--vendor/redox_syscall-0.3.5/src/data.rs297
-rw-r--r--vendor/redox_syscall-0.3.5/src/error.rs311
-rw-r--r--vendor/redox_syscall-0.3.5/src/flag.rs336
-rw-r--r--vendor/redox_syscall-0.3.5/src/io/dma.rs219
-rw-r--r--vendor/redox_syscall-0.3.5/src/io/io.rs71
-rw-r--r--vendor/redox_syscall-0.3.5/src/io/mmio.rs45
-rw-r--r--vendor/redox_syscall-0.3.5/src/io/mod.rs15
-rw-r--r--vendor/redox_syscall-0.3.5/src/io/pio.rs90
-rw-r--r--vendor/redox_syscall-0.3.5/src/lib.rs61
-rw-r--r--vendor/redox_syscall-0.3.5/src/number.rs73
-rwxr-xr-xvendor/redox_syscall-0.3.5/src/scheme/generate.sh23
-rw-r--r--vendor/redox_syscall-0.3.5/src/scheme/mod.rs18
-rw-r--r--vendor/redox_syscall-0.3.5/src/scheme/scheme.rs206
-rw-r--r--vendor/redox_syscall-0.3.5/src/scheme/scheme_block.rs206
-rw-r--r--vendor/redox_syscall-0.3.5/src/scheme/scheme_block_mut.rs206
-rw-r--r--vendor/redox_syscall-0.3.5/src/scheme/scheme_mut.rs206
-rw-r--r--vendor/redox_syscall-0.3.5/src/scheme/seek.rs33
-rw-r--r--vendor/redox_syscall-0.3.5/src/tests.rs442
-rw-r--r--vendor/redox_syscall/.cargo-checksum.json2
-rw-r--r--vendor/redox_syscall/Cargo.toml2
-rw-r--r--vendor/redox_syscall/src/call.rs15
-rw-r--r--vendor/redox_syscall/src/data.rs59
-rw-r--r--vendor/redox_syscall/src/error.rs6
-rw-r--r--vendor/redox_syscall/src/flag.rs40
-rw-r--r--vendor/redox_syscall/src/io/mmio.rs129
-rw-r--r--vendor/redox_syscall/src/number.rs20
-rwxr-xr-xvendor/redox_syscall/src/scheme/generate.sh2
-rw-r--r--vendor/redox_syscall/src/scheme/mod.rs50
-rw-r--r--vendor/redox_syscall/src/scheme/scheme.rs72
-rw-r--r--vendor/redox_syscall/src/scheme/scheme_block.rs72
-rw-r--r--vendor/redox_syscall/src/scheme/scheme_block_mut.rs72
-rw-r--r--vendor/redox_syscall/src/scheme/scheme_mut.rs72
-rw-r--r--vendor/redox_syscall/src/tests.rs26
-rw-r--r--vendor/rustix-0.37.6/.cargo-checksum.json1
-rw-r--r--vendor/rustix-0.37.6/CODE_OF_CONDUCT.md49
-rw-r--r--vendor/rustix-0.37.6/CONTRIBUTING.md27
-rw-r--r--vendor/rustix-0.37.6/COPYRIGHT29
-rw-r--r--vendor/rustix-0.37.6/Cargo.toml247
-rw-r--r--vendor/rustix-0.37.6/ORG_CODE_OF_CONDUCT.md143
-rw-r--r--vendor/rustix-0.37.6/README.md168
-rw-r--r--vendor/rustix-0.37.6/SECURITY.md29
-rw-r--r--vendor/rustix-0.37.6/benches/mod.rs186
-rw-r--r--vendor/rustix-0.37.6/build.rs280
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/c.rs9
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/conv.rs222
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/fs/dir.rs405
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/fs/inotify.rs121
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/fs/makedev.rs120
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/fs/mod.rs9
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/fs/syscalls.rs1810
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/fs/types.rs1150
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/io/epoll.rs366
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/io/errno.rs731
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/io/io_slice.rs87
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/io/mod.rs13
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/io/poll_fd.rs136
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/io/syscalls.rs677
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/io/types.rs153
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/io/windows_syscalls.rs39
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/io_lifetimes.rs82
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/io_uring/mod.rs1
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/io_uring/syscalls.rs55
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/mm/syscalls.rs218
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/mm/types.rs366
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/mod.rs107
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/net/addr.rs226
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/net/ext.rs193
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/net/mod.rs7
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/net/read_sockaddr.rs210
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/net/send_recv.rs65
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/net/syscalls.rs863
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/net/types.rs510
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/net/write_sockaddr.rs78
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/offset.rs412
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/param/auxv.rs54
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/param/mod.rs1
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/process/cpu_set.rs51
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/process/mod.rs12
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/process/syscalls.rs570
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/process/types.rs335
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/process/wait.rs9
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/rand/syscalls.rs16
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/rand/types.rs19
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/termios/mod.rs3
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/termios/syscalls.rs211
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/termios/types.rs780
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/thread/mod.rs2
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/thread/syscalls.rs363
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/time/mod.rs3
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/time/syscalls.rs472
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/time/types.rs356
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/weak.rs226
-rw-r--r--vendor/rustix-0.37.6/src/backend/libc/winsock_c.rs83
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/aarch64.rs268
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/arm.rs265
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/mips.rs543
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/mips64.rs466
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/mod.rs18
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/powerpc64.rs413
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/riscv64.rs265
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/thumb.rs322
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/x86.rs494
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/x86_64.rs293
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/arch/mod.rs222
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/aarch64.s119
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/arm.s135
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/mips.s213
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/mips64.s189
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/mod.rs33
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/nr_last.rs166
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/powerpc64.s132
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/riscv64.s116
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/x86.rs285
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/x86.s381
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/x86_64.s122
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/c.rs31
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/conv.rs857
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/elf.rs176
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/fs/dir.rs225
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/fs/inotify.rs108
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/fs/makedev.rs19
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/fs/mod.rs5
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/fs/syscalls.rs1512
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/fs/types.rs772
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/io/epoll.rs346
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/io/errno.rs524
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/io/io_slice.rs98
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/io/mod.rs7
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/io/poll_fd.rs93
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/io/syscalls.rs681
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/io/types.rs129
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/io_uring/mod.rs1
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/io_uring/syscalls.rs63
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/mm/mod.rs2
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/mm/syscalls.rs214
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/mm/types.rs208
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/mod.rs72
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/net/addr.rs172
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/net/mod.rs6
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/net/read_sockaddr.rs175
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/net/send_recv.rs42
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/net/syscalls.rs1258
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/net/types.rs282
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/net/write_sockaddr.rs60
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/param/auxv.rs377
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/param/libc_auxv.rs83
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/param/mod.rs12
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/param/mustang_auxv.rs159
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/process/cpu_set.rs49
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/process/mod.rs4
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/process/syscalls.rs661
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/process/types.rs246
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/process/wait.rs41
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/rand/mod.rs2
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/rand/syscalls.rs17
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/rand/types.rs15
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/reg.rs258
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/runtime/mod.rs2
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/runtime/syscalls.rs107
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/runtime/tls.rs63
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/termios/mod.rs2
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/termios/syscalls.rs302
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/termios/types.rs495
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/thread/futex.rs39
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/thread/mod.rs4
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/thread/syscalls.rs358
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/time/mod.rs3
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/time/syscalls.rs270
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/time/types.rs154
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/vdso.rs310
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/vdso_wrappers.rs399
-rw-r--r--vendor/rustix-0.37.6/src/backend/linux_raw/weak.rs228
-rw-r--r--vendor/rustix-0.37.6/src/const_assert.rs23
-rw-r--r--vendor/rustix-0.37.6/src/cstr.rs76
-rw-r--r--vendor/rustix-0.37.6/src/ffi/mod.rs16
-rw-r--r--vendor/rustix-0.37.6/src/fs/abs.rs55
-rw-r--r--vendor/rustix-0.37.6/src/fs/at.rs408
-rw-r--r--vendor/rustix-0.37.6/src/fs/constants.rs20
-rw-r--r--vendor/rustix-0.37.6/src/fs/copy_file_range.rs20
-rw-r--r--vendor/rustix-0.37.6/src/fs/cwd.rs32
-rw-r--r--vendor/rustix-0.37.6/src/fs/dir.rs5
-rw-r--r--vendor/rustix-0.37.6/src/fs/fadvise.rs19
-rw-r--r--vendor/rustix-0.37.6/src/fs/fcntl.rs123
-rw-r--r--vendor/rustix-0.37.6/src/fs/fcntl_apple.rs24
-rw-r--r--vendor/rustix-0.37.6/src/fs/fcopyfile.rs90
-rw-r--r--vendor/rustix-0.37.6/src/fs/fd.rs343
-rw-r--r--vendor/rustix-0.37.6/src/fs/file_type.rs4
-rw-r--r--vendor/rustix-0.37.6/src/fs/getpath.rs14
-rw-r--r--vendor/rustix-0.37.6/src/fs/makedev.rs37
-rw-r--r--vendor/rustix-0.37.6/src/fs/memfd_create.rs15
-rw-r--r--vendor/rustix-0.37.6/src/fs/mod.rs102
-rw-r--r--vendor/rustix-0.37.6/src/fs/mount.rs166
-rw-r--r--vendor/rustix-0.37.6/src/fs/openat2.rs23
-rw-r--r--vendor/rustix-0.37.6/src/fs/raw_dir.rs224
-rw-r--r--vendor/rustix-0.37.6/src/fs/sendfile.rs19
-rw-r--r--vendor/rustix-0.37.6/src/fs/statx.rs105
-rw-r--r--vendor/rustix-0.37.6/src/fs/sync.rs14
-rw-r--r--vendor/rustix-0.37.6/src/io/close.rs41
-rw-r--r--vendor/rustix-0.37.6/src/io/dup.rs83
-rw-r--r--vendor/rustix-0.37.6/src/io/errno.rs85
-rw-r--r--vendor/rustix-0.37.6/src/io/eventfd.rs16
-rw-r--r--vendor/rustix-0.37.6/src/io/fcntl.rs85
-rw-r--r--vendor/rustix-0.37.6/src/io/fd/mod.rs17
-rw-r--r--vendor/rustix-0.37.6/src/io/fd/owned.rs252
-rw-r--r--vendor/rustix-0.37.6/src/io/fd/raw.rs159
-rw-r--r--vendor/rustix-0.37.6/src/io/ioctl.rs112
-rw-r--r--vendor/rustix-0.37.6/src/io/is_read_write.rs20
-rw-r--r--vendor/rustix-0.37.6/src/io/kqueue.rs421
-rw-r--r--vendor/rustix-0.37.6/src/io/mod.rs54
-rw-r--r--vendor/rustix-0.37.6/src/io/pipe.rs132
-rw-r--r--vendor/rustix-0.37.6/src/io/poll.rs20
-rw-r--r--vendor/rustix-0.37.6/src/io/port.rs151
-rw-r--r--vendor/rustix-0.37.6/src/io/procfs.rs464
-rw-r--r--vendor/rustix-0.37.6/src/io/read_write.rs177
-rw-r--r--vendor/rustix-0.37.6/src/io/seek_from.rs48
-rw-r--r--vendor/rustix-0.37.6/src/io/stdio.rs365
-rw-r--r--vendor/rustix-0.37.6/src/io_uring.rs1439
-rw-r--r--vendor/rustix-0.37.6/src/lib.rs225
-rw-r--r--vendor/rustix-0.37.6/src/mm/madvise.rs35
-rw-r--r--vendor/rustix-0.37.6/src/mm/mmap.rs231
-rw-r--r--vendor/rustix-0.37.6/src/mm/mod.rs15
-rw-r--r--vendor/rustix-0.37.6/src/mm/msync.rs32
-rw-r--r--vendor/rustix-0.37.6/src/mm/userfaultfd.rs30
-rw-r--r--vendor/rustix-0.37.6/src/net/addr.rs641
-rw-r--r--vendor/rustix-0.37.6/src/net/ip.rs2068
-rw-r--r--vendor/rustix-0.37.6/src/net/mod.rs42
-rw-r--r--vendor/rustix-0.37.6/src/net/send_recv.rs210
-rw-r--r--vendor/rustix-0.37.6/src/net/socket.rs441
-rw-r--r--vendor/rustix-0.37.6/src/net/socket_addr_any.rs103
-rw-r--r--vendor/rustix-0.37.6/src/net/socketpair.rs21
-rw-r--r--vendor/rustix-0.37.6/src/net/sockopt.rs712
-rw-r--r--vendor/rustix-0.37.6/src/net/wsa.rs49
-rw-r--r--vendor/rustix-0.37.6/src/param/auxv.rs96
-rw-r--r--vendor/rustix-0.37.6/src/param/init.rs23
-rw-r--r--vendor/rustix-0.37.6/src/param/mod.rs16
-rw-r--r--vendor/rustix-0.37.6/src/path/arg.rs983
-rw-r--r--vendor/rustix-0.37.6/src/path/dec_int.rs126
-rw-r--r--vendor/rustix-0.37.6/src/path/mod.rs11
-rw-r--r--vendor/rustix-0.37.6/src/process/chdir.rs72
-rw-r--r--vendor/rustix-0.37.6/src/process/exit.rs34
-rw-r--r--vendor/rustix-0.37.6/src/process/id.rs325
-rw-r--r--vendor/rustix-0.37.6/src/process/kill.rs51
-rw-r--r--vendor/rustix-0.37.6/src/process/membarrier.rs93
-rw-r--r--vendor/rustix-0.37.6/src/process/mod.rs73
-rw-r--r--vendor/rustix-0.37.6/src/process/pidfd.rs25
-rw-r--r--vendor/rustix-0.37.6/src/process/prctl.rs1129
-rw-r--r--vendor/rustix-0.37.6/src/process/priority.rs131
-rw-r--r--vendor/rustix-0.37.6/src/process/procctl.rs520
-rw-r--r--vendor/rustix-0.37.6/src/process/rlimit.rs53
-rw-r--r--vendor/rustix-0.37.6/src/process/sched.rs110
-rw-r--r--vendor/rustix-0.37.6/src/process/sched_yield.rs16
-rw-r--r--vendor/rustix-0.37.6/src/process/umask.rs21
-rw-r--r--vendor/rustix-0.37.6/src/process/uname.rs101
-rw-r--r--vendor/rustix-0.37.6/src/process/wait.rs187
-rw-r--r--vendor/rustix-0.37.6/src/rand/getrandom.rs21
-rw-r--r--vendor/rustix-0.37.6/src/rand/mod.rs7
-rw-r--r--vendor/rustix-0.37.6/src/runtime.rs269
-rw-r--r--vendor/rustix-0.37.6/src/termios/cf.rs40
-rw-r--r--vendor/rustix-0.37.6/src/termios/constants.rs101
-rw-r--r--vendor/rustix-0.37.6/src/termios/mod.rs19
-rw-r--r--vendor/rustix-0.37.6/src/termios/tc.rs276
-rw-r--r--vendor/rustix-0.37.6/src/termios/tty.rs72
-rw-r--r--vendor/rustix-0.37.6/src/thread/clock.rs95
-rw-r--r--vendor/rustix-0.37.6/src/thread/futex.rs38
-rw-r--r--vendor/rustix-0.37.6/src/thread/id.rs111
-rw-r--r--vendor/rustix-0.37.6/src/thread/libcap.rs187
-rw-r--r--vendor/rustix-0.37.6/src/thread/mod.rs27
-rw-r--r--vendor/rustix-0.37.6/src/thread/prctl.rs982
-rw-r--r--vendor/rustix-0.37.6/src/thread/setns.rs125
-rw-r--r--vendor/rustix-0.37.6/src/time/clock.rs78
-rw-r--r--vendor/rustix-0.37.6/src/time/mod.rs13
-rw-r--r--vendor/rustix-0.37.6/src/time/timerfd.rs41
-rw-r--r--vendor/rustix-0.37.6/src/utils.rs29
-rw-r--r--vendor/rustix/.cargo-checksum.json2
-rw-r--r--vendor/rustix/CONTRIBUTING.md4
-rw-r--r--vendor/rustix/Cargo.toml11
-rw-r--r--vendor/rustix/README.md44
-rw-r--r--vendor/rustix/build.rs3
-rw-r--r--vendor/rustix/src/backend/libc/c.rs296
-rw-r--r--vendor/rustix/src/backend/libc/conv.rs11
-rw-r--r--vendor/rustix/src/backend/libc/event/epoll.rs24
-rw-r--r--vendor/rustix/src/backend/libc/event/mod.rs2
-rw-r--r--vendor/rustix/src/backend/libc/event/poll_fd.rs2
-rw-r--r--vendor/rustix/src/backend/libc/event/types.rs2
-rw-r--r--vendor/rustix/src/backend/libc/fs/dir.rs158
-rw-r--r--vendor/rustix/src/backend/libc/fs/inotify.rs25
-rw-r--r--vendor/rustix/src/backend/libc/fs/mod.rs1
-rw-r--r--vendor/rustix/src/backend/libc/fs/syscalls.rs143
-rw-r--r--vendor/rustix/src/backend/libc/fs/types.rs100
-rw-r--r--vendor/rustix/src/backend/libc/io/errno.rs107
-rw-r--r--vendor/rustix/src/backend/libc/io/syscalls.rs16
-rw-r--r--vendor/rustix/src/backend/libc/io/types.rs6
-rw-r--r--vendor/rustix/src/backend/libc/mm/syscalls.rs22
-rw-r--r--vendor/rustix/src/backend/libc/mm/types.rs38
-rw-r--r--vendor/rustix/src/backend/libc/mod.rs13
-rw-r--r--vendor/rustix/src/backend/libc/mount/types.rs72
-rw-r--r--vendor/rustix/src/backend/libc/net/addr.rs10
-rw-r--r--vendor/rustix/src/backend/libc/net/ext.rs8
-rw-r--r--vendor/rustix/src/backend/libc/net/mod.rs10
-rw-r--r--vendor/rustix/src/backend/libc/net/msghdr.rs2
-rw-r--r--vendor/rustix/src/backend/libc/net/read_sockaddr.rs71
-rw-r--r--vendor/rustix/src/backend/libc/net/send_recv.rs16
-rw-r--r--vendor/rustix/src/backend/libc/net/sockopt.rs1065
-rw-r--r--vendor/rustix/src/backend/libc/net/syscalls.rs700
-rw-r--r--vendor/rustix/src/backend/libc/net/write_sockaddr.rs15
-rw-r--r--vendor/rustix/src/backend/libc/param/auxv.rs2
-rw-r--r--vendor/rustix/src/backend/libc/pipe/types.rs5
-rw-r--r--vendor/rustix/src/backend/libc/process/mod.rs2
-rw-r--r--vendor/rustix/src/backend/libc/process/syscalls.rs105
-rw-r--r--vendor/rustix/src/backend/libc/process/types.rs8
-rw-r--r--vendor/rustix/src/backend/libc/pty/syscalls.rs6
-rw-r--r--vendor/rustix/src/backend/libc/rand/types.rs2
-rw-r--r--vendor/rustix/src/backend/libc/shm/mod.rs (renamed from vendor/rustix-0.37.6/src/backend/libc/mm/mod.rs)0
-rw-r--r--vendor/rustix/src/backend/libc/shm/syscalls.rs25
-rw-r--r--vendor/rustix/src/backend/libc/shm/types.rs30
-rw-r--r--vendor/rustix/src/backend/libc/system/syscalls.rs9
-rw-r--r--vendor/rustix/src/backend/libc/termios/syscalls.rs44
-rw-r--r--vendor/rustix/src/backend/libc/thread/syscalls.rs17
-rw-r--r--vendor/rustix/src/backend/libc/time/types.rs4
-rw-r--r--vendor/rustix/src/backend/linux_raw/c.rs128
-rw-r--r--vendor/rustix/src/backend/linux_raw/conv.rs15
-rw-r--r--vendor/rustix/src/backend/linux_raw/event/epoll.rs20
-rw-r--r--vendor/rustix/src/backend/linux_raw/event/mod.rs1
-rw-r--r--vendor/rustix/src/backend/linux_raw/event/poll_fd.rs2
-rw-r--r--vendor/rustix/src/backend/linux_raw/event/syscalls.rs20
-rw-r--r--vendor/rustix/src/backend/linux_raw/event/types.rs2
-rw-r--r--vendor/rustix/src/backend/linux_raw/fs/dir.rs95
-rw-r--r--vendor/rustix/src/backend/linux_raw/fs/inotify.rs17
-rw-r--r--vendor/rustix/src/backend/linux_raw/fs/syscalls.rs8
-rw-r--r--vendor/rustix/src/backend/linux_raw/fs/types.rs26
-rw-r--r--vendor/rustix/src/backend/linux_raw/io/errno.rs2
-rw-r--r--vendor/rustix/src/backend/linux_raw/io/syscalls.rs74
-rw-r--r--vendor/rustix/src/backend/linux_raw/io/types.rs6
-rw-r--r--vendor/rustix/src/backend/linux_raw/mm/syscalls.rs29
-rw-r--r--vendor/rustix/src/backend/linux_raw/mm/types.rs52
-rw-r--r--vendor/rustix/src/backend/linux_raw/mod.rs2
-rw-r--r--vendor/rustix/src/backend/linux_raw/mount/types.rs20
-rw-r--r--vendor/rustix/src/backend/linux_raw/net/mod.rs1
-rw-r--r--vendor/rustix/src/backend/linux_raw/net/msghdr.rs2
-rw-r--r--vendor/rustix/src/backend/linux_raw/net/read_sockaddr.rs6
-rw-r--r--vendor/rustix/src/backend/linux_raw/net/send_recv.rs10
-rw-r--r--vendor/rustix/src/backend/linux_raw/net/sockopt.rs879
-rw-r--r--vendor/rustix/src/backend/linux_raw/net/syscalls.rs640
-rw-r--r--vendor/rustix/src/backend/linux_raw/net/write_sockaddr.rs4
-rw-r--r--vendor/rustix/src/backend/linux_raw/param/auxv.rs61
-rw-r--r--vendor/rustix/src/backend/linux_raw/param/init.rs14
-rw-r--r--vendor/rustix/src/backend/linux_raw/param/libc_auxv.rs12
-rw-r--r--vendor/rustix/src/backend/linux_raw/pipe/types.rs4
-rw-r--r--vendor/rustix/src/backend/linux_raw/process/syscalls.rs27
-rw-r--r--vendor/rustix/src/backend/linux_raw/rand/types.rs2
-rw-r--r--vendor/rustix/src/backend/linux_raw/reg.rs12
-rw-r--r--vendor/rustix/src/backend/linux_raw/runtime/syscalls.rs10
-rw-r--r--vendor/rustix/src/backend/linux_raw/runtime/tls.rs24
-rw-r--r--vendor/rustix/src/backend/linux_raw/shm/mod.rs (renamed from vendor/rustix-0.37.6/src/backend/libc/rand/mod.rs)0
-rw-r--r--vendor/rustix/src/backend/linux_raw/shm/syscalls.rs47
-rw-r--r--vendor/rustix/src/backend/linux_raw/shm/types.rs30
-rw-r--r--vendor/rustix/src/backend/linux_raw/system/syscalls.rs17
-rw-r--r--vendor/rustix/src/backend/linux_raw/termios/syscalls.rs42
-rw-r--r--vendor/rustix/src/backend/linux_raw/time/types.rs4
-rw-r--r--vendor/rustix/src/backend/linux_raw/vdso.rs18
-rw-r--r--vendor/rustix/src/backend/linux_raw/vdso_wrappers.rs40
-rw-r--r--vendor/rustix/src/bitcast.rs2
-rw-r--r--vendor/rustix/src/check_types.rs8
-rw-r--r--vendor/rustix/src/clockid.rs18
-rw-r--r--vendor/rustix/src/cstr.rs5
-rw-r--r--vendor/rustix/src/event/kqueue.rs16
-rw-r--r--vendor/rustix/src/event/mod.rs2
-rw-r--r--vendor/rustix/src/fs/abs.rs9
-rw-r--r--vendor/rustix/src/fs/at.rs54
-rw-r--r--vendor/rustix/src/fs/constants.rs14
-rw-r--r--vendor/rustix/src/fs/fadvise.rs3
-rw-r--r--vendor/rustix/src/fs/fcntl.rs16
-rw-r--r--vendor/rustix/src/fs/fcopyfile.rs4
-rw-r--r--vendor/rustix/src/fs/fd.rs45
-rw-r--r--vendor/rustix/src/fs/file_type.rs4
-rw-r--r--vendor/rustix/src/fs/memfd_create.rs3
-rw-r--r--vendor/rustix/src/fs/mod.rs30
-rw-r--r--vendor/rustix/src/fs/mount.rs6
-rw-r--r--vendor/rustix/src/fs/raw_dir.rs9
-rw-r--r--vendor/rustix/src/fs/statx.rs13
-rw-r--r--vendor/rustix/src/fs/xattr.rs2
-rw-r--r--vendor/rustix/src/io/dup.rs1
-rw-r--r--vendor/rustix/src/io/fcntl.rs12
-rw-r--r--vendor/rustix/src/io/ioctl.rs18
-rw-r--r--vendor/rustix/src/io/read_write.rs6
-rw-r--r--vendor/rustix/src/io_uring.rs130
-rw-r--r--vendor/rustix/src/ioctl/linux.rs49
-rw-r--r--vendor/rustix/src/ioctl/mod.rs46
-rw-r--r--vendor/rustix/src/ioctl/patterns.rs14
-rw-r--r--vendor/rustix/src/lib.rs34
-rw-r--r--vendor/rustix/src/maybe_polyfill/no_std/net/mod.rs1
-rw-r--r--vendor/rustix/src/maybe_polyfill/no_std/os/fd/mod.rs8
-rw-r--r--vendor/rustix/src/maybe_polyfill/no_std/os/fd/owned.rs22
-rw-r--r--vendor/rustix/src/maybe_polyfill/no_std/os/fd/raw.rs7
-rw-r--r--vendor/rustix/src/mm/madvise.rs6
-rw-r--r--vendor/rustix/src/mm/mmap.rs93
-rw-r--r--vendor/rustix/src/mm/msync.rs6
-rw-r--r--vendor/rustix/src/net/send_recv/mod.rs16
-rw-r--r--vendor/rustix/src/net/send_recv/msg.rs110
-rw-r--r--vendor/rustix/src/net/socket.rs38
-rw-r--r--vendor/rustix/src/net/socket_addr_any.rs12
-rw-r--r--vendor/rustix/src/net/sockopt.rs2653
-rw-r--r--vendor/rustix/src/net/types.rs173
-rw-r--r--vendor/rustix/src/param/auxv.rs29
-rw-r--r--vendor/rustix/src/path/arg.rs12
-rw-r--r--vendor/rustix/src/path/dec_int.rs2
-rw-r--r--vendor/rustix/src/pid.rs9
-rw-r--r--vendor/rustix/src/pipe.rs9
-rw-r--r--vendor/rustix/src/prctl.rs2
-rw-r--r--vendor/rustix/src/process/chdir.rs11
-rw-r--r--vendor/rustix/src/process/id.rs3
-rw-r--r--vendor/rustix/src/process/ioctl.rs2
-rw-r--r--vendor/rustix/src/process/kill.rs4
-rw-r--r--vendor/rustix/src/process/membarrier.rs2
-rw-r--r--vendor/rustix/src/process/mod.rs15
-rw-r--r--vendor/rustix/src/process/pidfd.rs2
-rw-r--r--vendor/rustix/src/process/pidfd_getfd.rs2
-rw-r--r--vendor/rustix/src/process/prctl.rs37
-rw-r--r--vendor/rustix/src/process/procctl.rs15
-rw-r--r--vendor/rustix/src/process/sched.rs4
-rw-r--r--vendor/rustix/src/process/wait.rs90
-rw-r--r--vendor/rustix/src/procfs.rs114
-rw-r--r--vendor/rustix/src/pty.rs11
-rw-r--r--vendor/rustix/src/runtime.rs46
-rw-r--r--vendor/rustix/src/shm.rs40
-rw-r--r--vendor/rustix/src/signal.rs38
-rw-r--r--vendor/rustix/src/static_assertions.rs7
-rw-r--r--vendor/rustix/src/system.rs66
-rw-r--r--vendor/rustix/src/termios/tty.rs21
-rw-r--r--vendor/rustix/src/termios/types.rs28
-rw-r--r--vendor/rustix/src/thread/clock.rs3
-rw-r--r--vendor/rustix/src/thread/libcap.rs2
-rw-r--r--vendor/rustix/src/thread/prctl.rs31
-rw-r--r--vendor/rustix/src/thread/setns.rs4
-rw-r--r--vendor/rustix/src/timespec.rs25
-rw-r--r--vendor/semver/.cargo-checksum.json2
-rw-r--r--vendor/semver/Cargo.toml2
-rw-r--r--vendor/semver/src/impls.rs4
-rw-r--r--vendor/semver/src/lib.rs50
-rw-r--r--vendor/semver/tests/test_identifier.rs6
-rw-r--r--vendor/semver/tests/test_version.rs12
-rw-r--r--vendor/semver/tests/test_version_req.rs44
-rw-r--r--vendor/semver/tests/util/mod.rs17
-rw-r--r--vendor/serde/.cargo-checksum.json2
-rw-r--r--vendor/serde/Cargo.toml4
-rw-r--r--vendor/serde/build.rs6
-rw-r--r--vendor/serde/src/de/impls.rs26
-rw-r--r--vendor/serde/src/lib.rs9
-rw-r--r--vendor/serde_derive/.cargo-checksum.json2
-rw-r--r--vendor/serde_derive/Cargo.toml2
-rw-r--r--vendor/serde_derive/src/de.rs18
-rw-r--r--vendor/serde_derive/src/lib.rs2
-rw-r--r--vendor/serde_json/.cargo-checksum.json2
-rw-r--r--vendor/serde_json/Cargo.toml2
-rw-r--r--vendor/serde_json/README.md2
-rw-r--r--vendor/serde_json/build.rs37
-rw-r--r--vendor/serde_json/src/lib.rs9
-rw-r--r--vendor/serde_json/src/map.rs41
-rw-r--r--vendor/serde_json/src/number.rs27
-rw-r--r--vendor/serde_json/src/raw.rs248
-rw-r--r--vendor/serde_json/src/read.rs2
-rw-r--r--vendor/serde_json/src/value/from.rs34
-rw-r--r--vendor/serde_json/src/value/index.rs2
-rw-r--r--vendor/serde_json/src/value/mod.rs22
-rw-r--r--vendor/serde_json/src/value/partial_eq.rs4
-rw-r--r--vendor/serde_json/tests/lexical.rs5
-rw-r--r--vendor/serde_json/tests/lexical/parse.rs2
-rw-r--r--vendor/serde_json/tests/map.rs1
-rw-r--r--vendor/serde_json/tests/test.rs16
-rw-r--r--vendor/serde_spanned/.cargo-checksum.json2
-rw-r--r--vendor/serde_spanned/Cargo.toml4
-rw-r--r--vendor/serde_spanned/LICENSE-APACHE403
-rw-r--r--vendor/serde_spanned/LICENSE-MIT38
-rw-r--r--vendor/sha1/.cargo-checksum.json2
-rw-r--r--vendor/sha1/CHANGELOG.md6
-rw-r--r--vendor/sha1/Cargo.toml37
-rw-r--r--vendor/sha1/README.md8
-rw-r--r--vendor/sha1/src/compress.rs3
-rw-r--r--vendor/sha1/src/compress/loongarch64_asm.rs255
-rw-r--r--vendor/sha1/src/lib.rs4
-rw-r--r--vendor/sha2/.cargo-checksum.json2
-rw-r--r--vendor/sha2/CHANGELOG.md6
-rw-r--r--vendor/sha2/Cargo.toml3
-rw-r--r--vendor/sha2/src/sha256.rs3
-rw-r--r--vendor/sha2/src/sha256/loongarch64_asm.rs227
-rw-r--r--vendor/sha2/src/sha512.rs3
-rw-r--r--vendor/sha2/src/sha512/loongarch64_asm.rs242
-rw-r--r--vendor/snapbox/.cargo-checksum.json2
-rw-r--r--vendor/snapbox/Cargo.lock2
-rw-r--r--vendor/snapbox/Cargo.toml2
-rw-r--r--vendor/snapbox/src/report/diff.rs31
-rw-r--r--vendor/supports-hyperlinks/.cargo-checksum.json1
-rw-r--r--vendor/supports-hyperlinks/CHANGELOG.md49
-rw-r--r--vendor/supports-hyperlinks/Cargo.toml (renamed from vendor/byteyarn/Cargo.toml)21
-rw-r--r--vendor/supports-hyperlinks/LICENSE229
-rw-r--r--vendor/supports-hyperlinks/Makefile.toml11
-rw-r--r--vendor/supports-hyperlinks/README.md28
-rw-r--r--vendor/supports-hyperlinks/cliff.toml62
-rw-r--r--vendor/supports-hyperlinks/src/lib.rs67
-rw-r--r--vendor/syn/.cargo-checksum.json2
-rw-r--r--vendor/syn/Cargo.toml4
-rw-r--r--vendor/syn/src/custom_punctuation.rs2
-rw-r--r--vendor/syn/src/data.rs38
-rw-r--r--vendor/syn/src/ident.rs10
-rw-r--r--vendor/syn/src/item.rs253
-rw-r--r--vendor/syn/src/lib.rs2
-rw-r--r--vendor/syn/src/lifetime.rs10
-rw-r--r--vendor/syn/src/lit.rs31
-rw-r--r--vendor/syn/src/macros.rs17
-rw-r--r--vendor/syn/src/path.rs13
-rw-r--r--vendor/syn/src/token.rs63
-rw-r--r--vendor/syn/tests/common/eq.rs9
-rw-r--r--vendor/syn/tests/debug/gen.rs1
-rw-r--r--vendor/syn/tests/repo/mod.rs29
-rw-r--r--vendor/syn/tests/test_lit.rs16
-rw-r--r--vendor/syn/tests/test_precedence.rs98
-rw-r--r--vendor/tabled/.cargo-checksum.json1
-rw-r--r--vendor/tabled/Cargo.lock210
-rw-r--r--vendor/tabled/Cargo.toml367
-rw-r--r--vendor/tabled/LICENSE-MIT21
-rw-r--r--vendor/tabled/README.md92
-rw-r--r--vendor/tabled/examples/README.md831
-rw-r--r--vendor/tabled/examples/alphabet.rs13
-rw-r--r--vendor/tabled/examples/border_text.rs44
-rw-r--r--vendor/tabled/examples/builder.rs38
-rw-r--r--vendor/tabled/examples/builder_index.rs50
-rw-r--r--vendor/tabled/examples/chess.rs37
-rw-r--r--vendor/tabled/examples/col_row_macros.rs62
-rw-r--r--vendor/tabled/examples/color.rs74
-rw-r--r--vendor/tabled/examples/colored_borders.rs65
-rw-r--r--vendor/tabled/examples/colored_padding.rs173
-rw-r--r--vendor/tabled/examples/colorization.rs69
-rw-r--r--vendor/tabled/examples/column_names.rs63
-rw-r--r--vendor/tabled/examples/compact_table.rs23
-rw-r--r--vendor/tabled/examples/compact_table_2.rs20
-rw-r--r--vendor/tabled/examples/compact_table_3.rs19
-rw-r--r--vendor/tabled/examples/concat.rs58
-rw-r--r--vendor/tabled/examples/custom_style.rs54
-rw-r--r--vendor/tabled/examples/derive/display_with.rs65
-rw-r--r--vendor/tabled/examples/derive/inline.rs55
-rw-r--r--vendor/tabled/examples/derive/inline_enum.rs50
-rw-r--r--vendor/tabled/examples/derive/order.rs48
-rw-r--r--vendor/tabled/examples/derive/rename.rs45
-rw-r--r--vendor/tabled/examples/derive/rename_all.rs56
-rw-r--r--vendor/tabled/examples/derive/skip.rs49
-rw-r--r--vendor/tabled/examples/disable.rs49
-rw-r--r--vendor/tabled/examples/extended_display.rs35
-rw-r--r--vendor/tabled/examples/extract.rs106
-rw-r--r--vendor/tabled/examples/format.rs56
-rw-r--r--vendor/tabled/examples/formatting_settings.rs47
-rw-r--r--vendor/tabled/examples/grid_colors.rs46
-rw-r--r--vendor/tabled/examples/height.rs49
-rw-r--r--vendor/tabled/examples/highlight.rs28
-rw-r--r--vendor/tabled/examples/highlight_color.rs27
-rw-r--r--vendor/tabled/examples/hyperlink.rs83
-rw-r--r--vendor/tabled/examples/iter_table.rs31
-rw-r--r--vendor/tabled/examples/margin.rs21
-rw-r--r--vendor/tabled/examples/matrix.rs27
-rw-r--r--vendor/tabled/examples/merge_duplicates.rs58
-rw-r--r--vendor/tabled/examples/merge_duplicates_2.rs78
-rw-r--r--vendor/tabled/examples/nested_table.rs117
-rw-r--r--vendor/tabled/examples/nested_table_2.rs90
-rw-r--r--vendor/tabled/examples/nested_table_3.rs56
-rw-r--r--vendor/tabled/examples/panel.rs63
-rw-r--r--vendor/tabled/examples/pool_table.rs33
-rw-r--r--vendor/tabled/examples/pool_table2.rs26
-rw-r--r--vendor/tabled/examples/rotate.rs38
-rw-r--r--vendor/tabled/examples/settings_list.rs57
-rw-r--r--vendor/tabled/examples/shadow.rs160
-rw-r--r--vendor/tabled/examples/span.rs40
-rw-r--r--vendor/tabled/examples/split.rs43
-rw-r--r--vendor/tabled/examples/table.rs56
-rw-r--r--vendor/tabled/examples/table_width.rs40
-rw-r--r--vendor/tabled/examples/table_width_2.rs23
-rw-r--r--vendor/tabled/src/builder/index_builder.rs318
-rw-r--r--vendor/tabled/src/builder/mod.rs118
-rw-r--r--vendor/tabled/src/builder/table_builder.rs506
-rw-r--r--vendor/tabled/src/grid/colored_config.rs112
-rw-r--r--vendor/tabled/src/grid/compact_multiline_config.rs211
-rw-r--r--vendor/tabled/src/grid/dimension/complete_dimension.rs136
-rw-r--r--vendor/tabled/src/grid/dimension/complete_dimension_vec_records.rs128
-rw-r--r--vendor/tabled/src/grid/dimension/const_dimension.rs70
-rw-r--r--vendor/tabled/src/grid/dimension/mod.rs32
-rw-r--r--vendor/tabled/src/grid/dimension/peekable_dimension.rs335
-rw-r--r--vendor/tabled/src/grid/dimension/pool_table_dimension.rs36
-rw-r--r--vendor/tabled/src/grid/dimension/static_dimension.rs63
-rw-r--r--vendor/tabled/src/grid/mod.rs48
-rw-r--r--vendor/tabled/src/grid/records/empty_records.rs41
-rw-r--r--vendor/tabled/src/grid/records/into_records/buf_records.rs213
-rw-r--r--vendor/tabled/src/grid/records/into_records/either_string.rs22
-rw-r--r--vendor/tabled/src/grid/records/into_records/limit_column_records.rs82
-rw-r--r--vendor/tabled/src/grid/records/into_records/limit_row_records.rs59
-rw-r--r--vendor/tabled/src/grid/records/into_records/mod.rs26
-rw-r--r--vendor/tabled/src/grid/records/into_records/truncate_records.rs136
-rw-r--r--vendor/tabled/src/grid/records/mod.rs19
-rw-r--r--vendor/tabled/src/grid/records/records_mut.rs34
-rw-r--r--vendor/tabled/src/grid/records/resizable.rs217
-rw-r--r--vendor/tabled/src/lib.rs490
-rw-r--r--vendor/tabled/src/macros/col.rs50
-rw-r--r--vendor/tabled/src/macros/mod.rs6
-rw-r--r--vendor/tabled/src/macros/row.rs44
-rw-r--r--vendor/tabled/src/settings/alignment/mod.rs189
-rw-r--r--vendor/tabled/src/settings/cell_option.rs55
-rw-r--r--vendor/tabled/src/settings/color/mod.rs346
-rw-r--r--vendor/tabled/src/settings/concat/mod.rs171
-rw-r--r--vendor/tabled/src/settings/disable/mod.rs196
-rw-r--r--vendor/tabled/src/settings/duplicate/mod.rs150
-rw-r--r--vendor/tabled/src/settings/extract/mod.rs257
-rw-r--r--vendor/tabled/src/settings/format/format_config.rs14
-rw-r--r--vendor/tabled/src/settings/format/format_content.rs86
-rw-r--r--vendor/tabled/src/settings/format/format_positioned.rs51
-rw-r--r--vendor/tabled/src/settings/format/mod.rs144
-rw-r--r--vendor/tabled/src/settings/formatting/alignment_strategy.rs172
-rw-r--r--vendor/tabled/src/settings/formatting/charset.rs108
-rw-r--r--vendor/tabled/src/settings/formatting/justification.rs127
-rw-r--r--vendor/tabled/src/settings/formatting/mod.rs20
-rw-r--r--vendor/tabled/src/settings/formatting/tab_size.rs62
-rw-r--r--vendor/tabled/src/settings/formatting/trim_strategy.rs118
-rw-r--r--vendor/tabled/src/settings/height/cell_height_increase.rs98
-rw-r--r--vendor/tabled/src/settings/height/cell_height_limit.rs103
-rw-r--r--vendor/tabled/src/settings/height/height_list.rs47
-rw-r--r--vendor/tabled/src/settings/height/mod.rs228
-rw-r--r--vendor/tabled/src/settings/height/table_height_increase.rs90
-rw-r--r--vendor/tabled/src/settings/height/table_height_limit.rs123
-rw-r--r--vendor/tabled/src/settings/height/util.rs22
-rw-r--r--vendor/tabled/src/settings/highlight/mod.rs452
-rw-r--r--vendor/tabled/src/settings/locator/mod.rs202
-rw-r--r--vendor/tabled/src/settings/margin/mod.rs137
-rw-r--r--vendor/tabled/src/settings/measurement/mod.rs161
-rw-r--r--vendor/tabled/src/settings/merge/mod.rs196
-rw-r--r--vendor/tabled/src/settings/mod.rs135
-rw-r--r--vendor/tabled/src/settings/modify.rs81
-rw-r--r--vendor/tabled/src/settings/object/cell.rs70
-rw-r--r--vendor/tabled/src/settings/object/columns.rs209
-rw-r--r--vendor/tabled/src/settings/object/frame.rs69
-rw-r--r--vendor/tabled/src/settings/object/mod.rs765
-rw-r--r--vendor/tabled/src/settings/object/rows.rs213
-rw-r--r--vendor/tabled/src/settings/object/segment.rs151
-rw-r--r--vendor/tabled/src/settings/object/util.rs22
-rw-r--r--vendor/tabled/src/settings/padding/mod.rs164
-rw-r--r--vendor/tabled/src/settings/panel/footer.rs32
-rw-r--r--vendor/tabled/src/settings/panel/header.rs32
-rw-r--r--vendor/tabled/src/settings/panel/horizontal_panel.rs80
-rw-r--r--vendor/tabled/src/settings/panel/mod.rs127
-rw-r--r--vendor/tabled/src/settings/panel/vertical_panel.rs83
-rw-r--r--vendor/tabled/src/settings/peaker/mod.rs94
-rw-r--r--vendor/tabled/src/settings/rotate/mod.rs155
-rw-r--r--vendor/tabled/src/settings/settings_list.rs71
-rw-r--r--vendor/tabled/src/settings/shadow/mod.rs195
-rw-r--r--vendor/tabled/src/settings/span/column.rs125
-rw-r--r--vendor/tabled/src/settings/span/mod.rs68
-rw-r--r--vendor/tabled/src/settings/span/row.rs126
-rw-r--r--vendor/tabled/src/settings/split/mod.rs420
-rw-r--r--vendor/tabled/src/settings/style/border.rs159
-rw-r--r--vendor/tabled/src/settings/style/border_char.rs99
-rw-r--r--vendor/tabled/src/settings/style/border_color.rs155
-rw-r--r--vendor/tabled/src/settings/style/border_text.rs253
-rw-r--r--vendor/tabled/src/settings/style/builder.rs1208
-rw-r--r--vendor/tabled/src/settings/style/horizontal_line.rs69
-rw-r--r--vendor/tabled/src/settings/style/line.rs91
-rw-r--r--vendor/tabled/src/settings/style/mod.rs127
-rw-r--r--vendor/tabled/src/settings/style/offset.rs19
-rw-r--r--vendor/tabled/src/settings/style/raw_style.rs438
-rw-r--r--vendor/tabled/src/settings/style/span_border_correction.rs216
-rw-r--r--vendor/tabled/src/settings/style/vertical_line.rs50
-rw-r--r--vendor/tabled/src/settings/table_option.rs30
-rw-r--r--vendor/tabled/src/settings/themes/colorization.rs388
-rw-r--r--vendor/tabled/src/settings/themes/column_names.rs355
-rw-r--r--vendor/tabled/src/settings/themes/mod.rs9
-rw-r--r--vendor/tabled/src/settings/width/justify.rs96
-rw-r--r--vendor/tabled/src/settings/width/min_width.rs205
-rw-r--r--vendor/tabled/src/settings/width/mod.rs163
-rw-r--r--vendor/tabled/src/settings/width/truncate.rs505
-rw-r--r--vendor/tabled/src/settings/width/util.rs265
-rw-r--r--vendor/tabled/src/settings/width/width_list.rs50
-rw-r--r--vendor/tabled/src/settings/width/wrap.rs1468
-rw-r--r--vendor/tabled/src/tabled.rs150
-rw-r--r--vendor/tabled/src/tables/compact.rs309
-rw-r--r--vendor/tabled/src/tables/extended.rs338
-rw-r--r--vendor/tabled/src/tables/iter.rs344
-rw-r--r--vendor/tabled/src/tables/mod.rs48
-rw-r--r--vendor/tabled/src/tables/table.rs464
-rw-r--r--vendor/tabled/src/tables/table_pool.rs1607
-rw-r--r--vendor/tabled/src/tables/util/mod.rs2
-rw-r--r--vendor/tabled/src/tables/util/utf8_writer.rs29
-rw-r--r--vendor/tabled/tests/core/builder_test.rs748
-rw-r--r--vendor/tabled/tests/core/compact_table.rs119
-rw-r--r--vendor/tabled/tests/core/extended_table_test.rs472
-rw-r--r--vendor/tabled/tests/core/index_test.rs194
-rw-r--r--vendor/tabled/tests/core/iter_table.rs214
-rw-r--r--vendor/tabled/tests/core/mod.rs7
-rw-r--r--vendor/tabled/tests/core/pool_table.rs634
-rw-r--r--vendor/tabled/tests/core/table_test.rs847
-rw-r--r--vendor/tabled/tests/derive/derive_test.rs1090
-rw-r--r--vendor/tabled/tests/derive/mod.rs1
-rw-r--r--vendor/tabled/tests/macros/col_row_test.rs264
-rw-r--r--vendor/tabled/tests/macros/mod.rs1
-rw-r--r--vendor/tabled/tests/main.rs7
-rw-r--r--vendor/tabled/tests/matrix/matrix.rs161
-rw-r--r--vendor/tabled/tests/matrix/matrix_list.rs58
-rw-r--r--vendor/tabled/tests/matrix/mod.rs6
-rw-r--r--vendor/tabled/tests/settings/alignment_test.rs138
-rw-r--r--vendor/tabled/tests/settings/color_test.rs34
-rw-r--r--vendor/tabled/tests/settings/colorization.rs64
-rw-r--r--vendor/tabled/tests/settings/column_names_test.rs270
-rw-r--r--vendor/tabled/tests/settings/concat_test.rs140
-rw-r--r--vendor/tabled/tests/settings/disable_test.rs83
-rw-r--r--vendor/tabled/tests/settings/duplicate_test.rs189
-rw-r--r--vendor/tabled/tests/settings/extract_test.rs242
-rw-r--r--vendor/tabled/tests/settings/format_test.rs269
-rw-r--r--vendor/tabled/tests/settings/formatting_test.rs68
-rw-r--r--vendor/tabled/tests/settings/height_test.rs263
-rw-r--r--vendor/tabled/tests/settings/highlingt_test.rs419
-rw-r--r--vendor/tabled/tests/settings/margin_test.rs195
-rw-r--r--vendor/tabled/tests/settings/merge_test.rs196
-rw-r--r--vendor/tabled/tests/settings/mod.rs23
-rw-r--r--vendor/tabled/tests/settings/padding_test.rs138
-rw-r--r--vendor/tabled/tests/settings/panel_test.rs337
-rw-r--r--vendor/tabled/tests/settings/render_settings.rs292
-rw-r--r--vendor/tabled/tests/settings/rotate_test.rs214
-rw-r--r--vendor/tabled/tests/settings/shadow_test.rs105
-rw-r--r--vendor/tabled/tests/settings/span_test.rs1234
-rw-r--r--vendor/tabled/tests/settings/split_test.rs277
-rw-r--r--vendor/tabled/tests/settings/style_test.rs2606
-rw-r--r--vendor/tabled/tests/settings/width_test.rs2836
-rw-r--r--vendor/tempfile/.cargo-checksum.json2
-rw-r--r--vendor/tempfile/CHANGELOG.md6
-rw-r--r--vendor/tempfile/Cargo.toml6
-rw-r--r--vendor/tempfile/deny.toml40
-rw-r--r--vendor/tempfile/src/file/mod.rs6
-rw-r--r--vendor/thiserror-impl/.cargo-checksum.json2
-rw-r--r--vendor/thiserror-impl/Cargo.toml2
-rw-r--r--vendor/thiserror-impl/src/attr.rs4
-rw-r--r--vendor/thiserror-impl/src/expand.rs113
-rw-r--r--vendor/thiserror-impl/src/lib.rs3
-rw-r--r--vendor/thiserror-impl/src/prop.rs12
-rw-r--r--vendor/thiserror-impl/src/span.rs15
-rw-r--r--vendor/thiserror/.cargo-checksum.json2
-rw-r--r--vendor/thiserror/Cargo.toml4
-rw-r--r--vendor/thiserror/build.rs2
-rw-r--r--vendor/thiserror/src/display.rs36
-rw-r--r--vendor/thiserror/src/lib.rs9
-rw-r--r--vendor/thiserror/tests/test_display.rs2
-rw-r--r--vendor/thiserror/tests/test_expr.rs6
-rw-r--r--vendor/thiserror/tests/test_generics.rs2
-rw-r--r--vendor/thiserror/tests/ui/from-backtrace-backtrace.rs7
-rw-r--r--vendor/thiserror/tests/ui/from-backtrace-backtrace.stderr6
-rw-r--r--vendor/thiserror/tests/ui/no-display.stderr2
-rw-r--r--vendor/thiserror/tests/ui/source-enum-not-error.rs4
-rw-r--r--vendor/thiserror/tests/ui/source-enum-not-error.stderr38
-rw-r--r--vendor/thiserror/tests/ui/source-enum-unnamed-field-not-error.rs12
-rw-r--r--vendor/thiserror/tests/ui/source-enum-unnamed-field-not-error.stderr22
-rw-r--r--vendor/thiserror/tests/ui/source-struct-unnamed-field-not-error.rs10
-rw-r--r--vendor/thiserror/tests/ui/source-struct-unnamed-field-not-error.stderr21
-rw-r--r--vendor/thiserror/tests/ui/transparent-enum-not-error.rs9
-rw-r--r--vendor/thiserror/tests/ui/transparent-enum-not-error.stderr23
-rw-r--r--vendor/thiserror/tests/ui/transparent-enum-unnamed-field-not-error.rs9
-rw-r--r--vendor/thiserror/tests/ui/transparent-enum-unnamed-field-not-error.stderr23
-rw-r--r--vendor/thiserror/tests/ui/transparent-struct-not-error.rs9
-rw-r--r--vendor/thiserror/tests/ui/transparent-struct-not-error.stderr21
-rw-r--r--vendor/thiserror/tests/ui/transparent-struct-unnamed-field-not-error.rs7
-rw-r--r--vendor/thiserror/tests/ui/transparent-struct-unnamed-field-not-error.stderr21
-rw-r--r--vendor/tinystr/.cargo-checksum.json2
-rw-r--r--vendor/tinystr/Cargo.toml37
-rw-r--r--vendor/tinystr/LICENSE79
-rw-r--r--vendor/tinystr/README.md4
-rw-r--r--vendor/tinystr/benches/common/mod.rs24
-rw-r--r--vendor/tinystr/benches/construct.rs24
-rw-r--r--vendor/tinystr/benches/overview.rs74
-rw-r--r--vendor/tinystr/src/ascii.rs12
-rw-r--r--vendor/tinystr/src/databake.rs29
-rw-r--r--vendor/tinystr/src/lib.rs2
-rw-r--r--vendor/tinystr/src/serde.rs2
-rw-r--r--vendor/tinystr/src/ule.rs48
-rw-r--r--vendor/tinystr/src/unvalidated.rs104
-rw-r--r--vendor/toml-0.7.5/.cargo-checksum.json1
-rw-r--r--vendor/toml-0.7.5/Cargo.lock891
-rw-r--r--vendor/toml-0.7.5/Cargo.toml159
-rw-r--r--vendor/toml-0.7.5/LICENSE-APACHE (renamed from vendor/rustix-0.37.6/LICENSE-APACHE)0
-rw-r--r--vendor/toml-0.7.5/LICENSE-MIT (renamed from vendor/libm-0.1.4/LICENSE-MIT)2
-rw-r--r--vendor/toml-0.7.5/README.md29
-rw-r--r--vendor/toml-0.7.5/examples/decode.rs54
-rw-r--r--vendor/toml-0.7.5/examples/enum_external.rs45
-rw-r--r--vendor/toml-0.7.5/examples/toml2json.rs47
-rw-r--r--vendor/toml-0.7.5/src/de.rs322
-rw-r--r--vendor/toml-0.7.5/src/edit.rs91
-rw-r--r--vendor/toml-0.7.5/src/fmt.rs60
-rw-r--r--vendor/toml-0.7.5/src/lib.rs182
-rw-r--r--vendor/toml-0.7.5/src/macros.rs460
-rw-r--r--vendor/toml-0.7.5/src/map.rs595
-rw-r--r--vendor/toml-0.7.5/src/ser.rs1087
-rw-r--r--vendor/toml-0.7.5/src/table.rs114
-rw-r--r--vendor/toml-0.7.5/src/value.rs1455
-rw-r--r--vendor/toml-0.7.5/tests/decoder.rs67
-rw-r--r--vendor/toml-0.7.5/tests/decoder_compliance.rs21
-rw-r--r--vendor/toml-0.7.5/tests/encoder.rs81
-rw-r--r--vendor/toml-0.7.5/tests/encoder_compliance.rs14
-rw-r--r--vendor/toml-0.7.5/tests/testsuite/de_errors.rs460
-rw-r--r--vendor/toml-0.7.5/tests/testsuite/display.rs116
-rw-r--r--vendor/toml-0.7.5/tests/testsuite/display_tricky.rs55
-rw-r--r--vendor/toml-0.7.5/tests/testsuite/enum_external_deserialize.rs320
-rw-r--r--vendor/toml-0.7.5/tests/testsuite/float.rs80
-rw-r--r--vendor/toml-0.7.5/tests/testsuite/formatting.rs54
-rw-r--r--vendor/toml-0.7.5/tests/testsuite/macros.rs368
-rw-r--r--vendor/toml-0.7.5/tests/testsuite/main.rs15
-rw-r--r--vendor/toml-0.7.5/tests/testsuite/pretty.rs184
-rw-r--r--vendor/toml-0.7.5/tests/testsuite/serde.rs1096
-rw-r--r--vendor/toml-0.7.5/tests/testsuite/spanned.rs261
-rw-r--r--vendor/toml-0.7.5/tests/testsuite/spanned_impls.rs41
-rw-r--r--vendor/toml-0.7.5/tests/testsuite/tables_last.rs162
-rw-r--r--vendor/toml/.cargo-checksum.json2
-rw-r--r--vendor/toml/Cargo.lock40
-rw-r--r--vendor/toml/Cargo.toml16
-rw-r--r--vendor/toml/LICENSE-APACHE403
-rw-r--r--vendor/toml/LICENSE-MIT38
-rw-r--r--vendor/toml/src/fmt.rs32
-rw-r--r--vendor/toml/src/macros.rs6
-rw-r--r--vendor/toml/src/value.rs126
-rw-r--r--vendor/toml/tests/decoder.rs5
-rw-r--r--vendor/toml/tests/decoder_compliance.rs12
-rw-r--r--vendor/toml/tests/encoder.rs5
-rw-r--r--vendor/toml/tests/encoder_compliance.rs2
-rw-r--r--vendor/toml/tests/testsuite/float.rs4
-rw-r--r--vendor/toml/tests/testsuite/macros.rs15
-rw-r--r--vendor/toml/tests/testsuite/pretty.rs12
-rw-r--r--vendor/toml/tests/testsuite/serde.rs270
-rw-r--r--vendor/toml_datetime/.cargo-checksum.json2
-rw-r--r--vendor/toml_datetime/Cargo.toml4
-rw-r--r--vendor/toml_datetime/LICENSE-APACHE403
-rw-r--r--vendor/toml_datetime/LICENSE-MIT38
-rw-r--r--vendor/toml_datetime/src/datetime.rs15
-rw-r--r--vendor/toml_edit-0.19.11/.cargo-checksum.json1
-rw-r--r--vendor/toml_edit-0.19.11/Cargo.lock898
-rw-r--r--vendor/toml_edit-0.19.11/Cargo.toml156
-rw-r--r--vendor/toml_edit-0.19.11/LICENSE-APACHE201
-rw-r--r--vendor/toml_edit-0.19.11/LICENSE-MIT21
-rw-r--r--vendor/toml_edit-0.19.11/README.md59
-rw-r--r--vendor/toml_edit-0.19.11/examples/visit.rs284
-rw-r--r--vendor/toml_edit-0.19.11/src/array.rs389
-rw-r--r--vendor/toml_edit-0.19.11/src/array_of_tables.rs152
-rw-r--r--vendor/toml_edit-0.19.11/src/de/array.rs97
-rw-r--r--vendor/toml_edit-0.19.11/src/de/datetime.rs43
-rw-r--r--vendor/toml_edit-0.19.11/src/de/key.rs140
-rw-r--r--vendor/toml_edit-0.19.11/src/de/mod.rs289
-rw-r--r--vendor/toml_edit-0.19.11/src/de/spanned.rs70
-rw-r--r--vendor/toml_edit-0.19.11/src/de/table.rs213
-rw-r--r--vendor/toml_edit-0.19.11/src/de/table_enum.rs160
-rw-r--r--vendor/toml_edit-0.19.11/src/de/value.rs252
-rw-r--r--vendor/toml_edit-0.19.11/src/document.rs113
-rw-r--r--vendor/toml_edit-0.19.11/src/encode.rs569
-rw-r--r--vendor/toml_edit-0.19.11/src/index.rs156
-rw-r--r--vendor/toml_edit-0.19.11/src/inline_table.rs661
-rw-r--r--vendor/toml_edit-0.19.11/src/internal_string.rs183
-rw-r--r--vendor/toml_edit-0.19.11/src/item.rs381
-rw-r--r--vendor/toml_edit-0.19.11/src/key.rs333
-rw-r--r--vendor/toml_edit-0.19.11/src/lib.rs124
-rw-r--r--vendor/toml_edit-0.19.11/src/parser/array.rs147
-rw-r--r--vendor/toml_edit-0.19.11/src/parser/datetime.rs433
-rw-r--r--vendor/toml_edit-0.19.11/src/parser/document.rs148
-rw-r--r--vendor/toml_edit-0.19.11/src/parser/errors.rs476
-rw-r--r--vendor/toml_edit-0.19.11/src/parser/inline_table.rs182
-rw-r--r--vendor/toml_edit-0.19.11/src/parser/key.rs104
-rw-r--r--vendor/toml_edit-0.19.11/src/parser/macros.rs13
-rw-r--r--vendor/toml_edit-0.19.11/src/parser/mod.rs302
-rw-r--r--vendor/toml_edit-0.19.11/src/parser/numbers.rs369
-rw-r--r--vendor/toml_edit-0.19.11/src/parser/state.rs323
-rw-r--r--vendor/toml_edit-0.19.11/src/parser/strings.rs464
-rw-r--r--vendor/toml_edit-0.19.11/src/parser/table.rs89
-rw-r--r--vendor/toml_edit-0.19.11/src/parser/trivia.rs158
-rw-r--r--vendor/toml_edit-0.19.11/src/parser/value.rs157
-rw-r--r--vendor/toml_edit-0.19.11/src/raw_string.rs182
-rw-r--r--vendor/toml_edit-0.19.11/src/repr.rs253
-rw-r--r--vendor/toml_edit-0.19.11/src/ser/array.rs84
-rw-r--r--vendor/toml_edit-0.19.11/src/ser/key.rs173
-rw-r--r--vendor/toml_edit-0.19.11/src/ser/map.rs405
-rw-r--r--vendor/toml_edit-0.19.11/src/ser/mod.rs165
-rw-r--r--vendor/toml_edit-0.19.11/src/ser/pretty.rs45
-rw-r--r--vendor/toml_edit-0.19.11/src/ser/value.rs243
-rw-r--r--vendor/toml_edit-0.19.11/src/table.rs743
-rw-r--r--vendor/toml_edit-0.19.11/src/value.rs372
-rw-r--r--vendor/toml_edit-0.19.11/src/visit.rs236
-rw-r--r--vendor/toml_edit-0.19.11/src/visit_mut.rs252
-rw-r--r--vendor/toml_edit-0.19.11/tests/decoder.rs100
-rw-r--r--vendor/toml_edit-0.19.11/tests/decoder_compliance.rs17
-rw-r--r--vendor/toml_edit-0.19.11/tests/encoder.rs111
-rw-r--r--vendor/toml_edit-0.19.11/tests/encoder_compliance.rs14
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/double-comma-1.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/double-comma-2.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/extending-table.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/missing-separator.stderr (renamed from vendor/toml_edit/tests/fixtures/invalid/array/missing-separator.stderr)0
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/no-close-2.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/no-close-table-2.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/no-close-table.stderr (renamed from vendor/toml_edit/tests/fixtures/invalid/array/no-close-table.stderr)0
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/no-close.stderr (renamed from vendor/toml_edit/tests/fixtures/invalid/array/no-close.stderr)0
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/tables-1.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/tables-2.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/text-after-array-entries.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/text-before-array-separator.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/text-in-array.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/almost-false-with-extra.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/almost-false.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/almost-true-with-extra.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/almost-true.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/just-f.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/just-t.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/mixed-case.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/starting-same-false.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/starting-same-true.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/wrong-case-false.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/wrong-case-true.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/bare-cr.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/bare-formfeed.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/bare-null.stderrbin0 -> 126 bytes
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/bare-vertical-tab.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/comment-cr.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/comment-del.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/comment-lf.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/comment-null.stderrbin0 -> 124 bytes
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/comment-us.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/control.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/multi-del.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/multi-lf.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/multi-null.stderrbin0 -> 128 bytes
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/multi-us.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawmulti-del.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawmulti-lf.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawmulti-null.stderrbin0 -> 136 bytes
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawmulti-us.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawstring-del.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawstring-lf.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawstring-null.stderrbin0 -> 122 bytes
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawstring-us.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/string-bs.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/string-del.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/string-lf.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/string-null.stderrbin0 -> 114 bytes
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/string-us.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/hour-over.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/mday-over.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/mday-under.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/minute-over.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/month-over.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/month-under.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/no-leads-with-milli.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/no-leads.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/no-secs.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/no-t.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/second-over.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/time-no-leads-2.stderr (renamed from vendor/toml_edit/tests/fixtures/invalid/datetime/time-no-leads-2.stderr)0
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/time-no-leads.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/trailing-t.stderr (renamed from vendor/toml_edit/tests/fixtures/invalid/datetime/trailing-t.stderr)0
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-at-end.stderr1
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-in-comment.stderr1
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-in-multiline-literal.stderr1
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-in-multiline.stderr1
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-in-string-literal.stderr1
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-in-string.stderr1
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bom-not-at-start-1.stderr1
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bom-not-at-start-2.stderr1
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/utf16-bom.stderr1
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/utf16.stderrbin0 -> 105 bytes
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/double-point-1.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/double-point-2.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-double-e-1.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-double-e-2.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-double-us.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-leading-us.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-point-1.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-point-2.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-trailing-us.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/float.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/inf-incomplete-1.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/inf-incomplete-2.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/inf-incomplete-3.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/inf_underscore.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-point-neg.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-point-plus.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-point.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-us.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-zero-neg.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-zero-plus.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-zero.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/nan-incomplete-1.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/nan-incomplete-2.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/nan-incomplete-3.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/nan_underscore.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/trailing-point-min.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/trailing-point-plus.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/trailing-point.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/trailing-us-exp.stderr (renamed from vendor/toml_edit/tests/fixtures/invalid/float/trailing-us-exp.stderr)0
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/trailing-us.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/us-after-point.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/us-before-point.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/add.stderr (renamed from vendor/toml_edit/tests/fixtures/invalid/inline-table/add.stderr)0
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/double-comma.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/duplicate-key.stderr (renamed from vendor/toml_edit/tests/fixtures/invalid/inline-table/duplicate-key.stderr)0
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/empty.stderr (renamed from vendor/toml_edit/tests/fixtures/invalid/inline-table/empty.stderr)0
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/linebreak-1.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/linebreak-2.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/linebreak-3.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/linebreak-4.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/no-comma.stderr (renamed from vendor/toml_edit/tests/fixtures/invalid/inline-table/no-comma.stderr)0
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/overwrite.stderr (renamed from vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite.stderr)0
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/trailing-comma.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/capital-bin.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/capital-hex.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/capital-oct.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/double-sign-nex.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/double-sign-plus.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/double-us.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/incomplete-bin.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/incomplete-hex.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/incomplete-oct.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/integer.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/invalid-bin.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/invalid-hex.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/invalid-oct.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-us-bin.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-us-hex.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-us-oct.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-us.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-1.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-2.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-3.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-sign-1.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-sign-2.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-sign-3.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/negative-bin.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/negative-hex.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/negative-oct.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/positive-bin.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/positive-hex.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/positive-oct.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/text-after-integer.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/trailing-us-bin.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/trailing-us-hex.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/trailing-us-oct.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/trailing-us.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/us-after-bin.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/us-after-hex.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/us-after-oct.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/after-array.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/after-table.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/after-value.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/bare-invalid-character.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/dotted-redefine-table.stderr (renamed from vendor/toml_edit/tests/fixtures/invalid/key/dotted-redefine-table.stderr)0
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/duplicate-keys.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/duplicate.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/empty.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/escape.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/hash.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/multiline.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/newline.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/no-eol.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/open-bracket.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/partial-quoted.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/quoted-unclosed-1.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/quoted-unclosed-2.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/single-open-bracket.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/space.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/special-character.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/start-bracket.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/start-dot.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/two-equals.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/two-equals2.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/two-equals3.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/without-value-1.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/without-value-2.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/without-value-3.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/without-value-4.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/inline-table-2-0.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/inline-table-3-0.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/key-value-pair-1.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/keys-2.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/string-4-0.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/string-7-0.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/table-9-0.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/table-9-1.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-byte-escape.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-codepoint.stderr (renamed from vendor/toml_edit/tests/fixtures/invalid/string/bad-codepoint.stderr)0
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-concat.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-escape-1.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-escape-2.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-hex-esc-1.stderr (renamed from vendor/toml_edit/tests/fixtures/invalid/string/bad-hex-esc.stderr)0
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-hex-esc-2.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-hex-esc-3.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-hex-esc-4.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-hex-esc-5.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-hex-esc.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-multiline.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-slash-escape.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-uni-esc-1.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-uni-esc-2.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-uni-esc-3.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-uni-esc-4.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-uni-esc-5.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-byte-escapes.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-multiline-out-of-range-unicode-escape-1.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-multiline-out-of-range-unicode-escape-2.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-multiline-quotes.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-multiline-unknown-escape.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-out-of-range-unicode-escape-1.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-out-of-range-unicode-escape-2.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-unknown-escape.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/literal-multiline-quotes-1.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/literal-multiline-quotes-2.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/missing-quotes.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-bad-escape-1.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-bad-escape-2.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-bad-escape-3.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-escape-space.stderr (renamed from vendor/toml_edit/tests/fixtures/invalid/string/multiline-escape-space.stderr)0
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-no-close-2.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-no-close.stderr (renamed from vendor/toml_edit/tests/fixtures/invalid/string/multiline-no-close.stderr)0
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-quotes-1.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/no-close.stderr (renamed from vendor/toml_edit/tests/fixtures/invalid/string/no-close.stderr)0
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/text-after-string.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/wrong-close.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/append-with-dotted-keys-1.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/append-with-dotted-keys-2.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/array-empty.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/array-implicit.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/array-missing-bracket.stderr (renamed from vendor/toml_edit/tests/fixtures/invalid/table/array-missing-bracket.stderr)0
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate-key-dotted-table.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate-key-dotted-table2.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate-key-table.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate-table-array.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate-table-array2.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/empty-implicit-table.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/empty.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/equals-sign.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/llbrace.stderr5
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/nested-brackets-close.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/nested-brackets-open.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/quoted-no-close.stderr (renamed from vendor/toml_edit/tests/fixtures/invalid/table/quoted-no-close.stderr)0
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/redefine.stderr (renamed from vendor/toml_edit/tests/fixtures/invalid/table/redefine.stderr)0
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/rrbrace.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/text-after-table.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/whitespace.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/with-pound.stderr6
-rw-r--r--vendor/toml_edit-0.19.11/tests/invalid.rs26
-rw-r--r--vendor/toml_edit-0.19.11/tests/testsuite/convert.rs79
-rw-r--r--vendor/toml_edit-0.19.11/tests/testsuite/datetime.rs256
-rw-r--r--vendor/toml_edit-0.19.11/tests/testsuite/edit.rs855
-rw-r--r--vendor/toml_edit-0.19.11/tests/testsuite/invalid.rs211
-rw-r--r--vendor/toml_edit-0.19.11/tests/testsuite/main.rs8
-rw-r--r--vendor/toml_edit-0.19.11/tests/testsuite/parse.rs1490
-rw-r--r--vendor/toml_edit-0.19.11/tests/testsuite/stackoverflow.rs54
-rw-r--r--vendor/toml_edit/.cargo-checksum.json2
-rw-r--r--vendor/toml_edit/Cargo.lock31
-rw-r--r--vendor/toml_edit/Cargo.toml12
-rw-r--r--vendor/toml_edit/LICENSE-APACHE403
-rw-r--r--vendor/toml_edit/LICENSE-MIT4
-rw-r--r--vendor/toml_edit/README.md2
-rw-r--r--vendor/toml_edit/src/array.rs50
-rw-r--r--vendor/toml_edit/src/de/key.rs13
-rw-r--r--vendor/toml_edit/src/de/table_enum.rs76
-rw-r--r--vendor/toml_edit/src/de/value.rs2
-rw-r--r--vendor/toml_edit/src/encode.rs40
-rw-r--r--vendor/toml_edit/src/inline_table.rs34
-rw-r--r--vendor/toml_edit/src/item.rs9
-rw-r--r--vendor/toml_edit/src/parser/datetime.rs36
-rw-r--r--vendor/toml_edit/src/parser/errors.rs3
-rw-r--r--vendor/toml_edit/src/parser/inline_table.rs23
-rw-r--r--vendor/toml_edit/src/parser/key.rs2
-rw-r--r--vendor/toml_edit/src/parser/mod.rs4
-rw-r--r--vendor/toml_edit/src/parser/numbers.rs9
-rw-r--r--vendor/toml_edit/src/parser/state.rs8
-rw-r--r--vendor/toml_edit/src/parser/strings.rs8
-rw-r--r--vendor/toml_edit/src/parser/value.rs2
-rw-r--r--vendor/toml_edit/src/ser/map.rs271
-rw-r--r--vendor/toml_edit/src/ser/mod.rs2
-rw-r--r--vendor/toml_edit/src/ser/value.rs28
-rw-r--r--vendor/toml_edit/src/table.rs6
-rw-r--r--vendor/toml_edit/src/value.rs1
-rw-r--r--vendor/toml_edit/tests/decoder_compliance.rs12
-rw-r--r--vendor/toml_edit/tests/encoder_compliance.rs6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/array/array.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/array/double-comma-1.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/array/double-comma-2.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/array/extend-defined-aot.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/array/missing-separator-1.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/array/missing-separator-2.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/array/no-close-1.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/array/no-close-2.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/array/no-close-3.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/array/no-close-4.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/array/no-close-5.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/array/no-close-6.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/array/no-close-7.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/array/no-close-8.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/array/no-close-table-1.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/array/no-comma-1.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/array/no-comma-2.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/array/no-comma-3.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/array/only-comma-1.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/array/only-comma-2.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/bool/almost-false-with-extra.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/bool/almost-false.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/bool/almost-true-with-extra.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/bool/almost-true.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/bool/bool.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/bool/capitalized-false.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/bool/capitalized-true.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/bool/just-f.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/bool/just-t.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/bool/mixed-case-false.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/bool/mixed-case-true.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/bool/mixed-case.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/bool/starting-same-false.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/bool/starting-same-true.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/bool/wrong-case-false.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/bool/wrong-case-true.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/bare-formfeed.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/bare-null.stderrbin126 -> 142 bytes
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/comment-cr.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/comment-del.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/comment-ff.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/comment-lf.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/comment-null.stderrbin124 -> 128 bytes
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/comment-us.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/control.stderr9
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/multi-cr.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/multi-del.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/multi-lf.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/multi-us.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/rawmulti-cd.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/rawmulti-del.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/rawmulti-lf.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/rawmulti-us.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/rawstring-cr.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/rawstring-del.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/rawstring-lf.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/rawstring-us.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/string-bs.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/string-cr.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/string-del.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/string-lf.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/control/string-us.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/datetime/feb-29.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/datetime/feb-30.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/datetime/no-leads-month.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/datetime/time-no-leads.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/encoding/bad-codepoint.stderr1
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/float/exp-trailing-us.stderr7
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/float/inf-capital.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/float/nan-capital.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/float/trailing-us-exp-1.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/float/trailing-us-exp-2.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/inline-table/bad-key-syntax.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/inline-table/duplicate-key-1.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/inline-table/duplicate-key-2.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/inline-table/duplicate-key-3.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/inline-table/duplicate-key-4.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/inline-table/empty-1.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/inline-table/empty-2.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/inline-table/empty-3.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/inline-table/no-close-1.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/inline-table/no-close-2.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/inline-table/no-comma-1.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/inline-table/no-comma-2.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-1.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-2.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-3.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-4.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-5.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-6.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-7.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-8.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-9.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/integer/invalid-hex-1.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/integer/invalid-hex-2.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/integer/leading-us-bin.stderr2
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/integer/leading-us-hex.stderr2
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/integer/negative-oct.stderr2
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/integer/positive-oct.stderr2
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/key/dotted-redefine-table-1.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/key/dotted-redefine-table-2.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/key/end-in-escape.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/key/without-value-5.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/key/without-value-6.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/key/without-value-7.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-date/feb-29.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-date/feb-30.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-date/mday-over.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-date/mday-under.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-date/month-over.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-date/month-under.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-date/no-leads-with-milli.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-date/no-leads.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-date/trailing-t.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-datetime/feb-29.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-datetime/feb-30.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-datetime/hour-over.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-datetime/mday-over.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-datetime/mday-under.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-datetime/minute-over.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-datetime/month-over.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-datetime/month-under.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-datetime/no-leads-with-milli.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-datetime/no-leads.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-datetime/no-secs.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-datetime/no-t.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-datetime/second-over.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-datetime/time-no-leads.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-time/hour-over.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-time/minute-over.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-time/no-secs.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-time/second-over.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-time/time-no-leads-2.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/local-time/time-no-leads.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/bad-escape-3.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-1.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-2.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-3.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-4.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-5.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-6.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-7.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/multiline-bad-escape-4.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/multiline-escape-space-1.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/multiline-escape-space-2.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/multiline-lit-no-close-1.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/multiline-lit-no-close-2.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/multiline-lit-no-close-3.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/multiline-lit-no-close-4.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/multiline-no-close-1.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/multiline-no-close-3.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/multiline-no-close-4.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/multiline-no-close-5.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/no-close-1.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/no-close-2.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/no-close-3.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/no-close-4.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/string/string.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/table/append-to-array-with-dotted-keys.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/table/array-no-close-1.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/table/array-no-close-2.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/table/duplicate-key-dotted-array.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/table/no-close-1.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/table/no-close-2.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/table/no-close-3.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/table/no-close-4.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/table/no-close-5.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/table/overwrite-array-in-parent.stderr5
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/table/overwrite-bool-with-array.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/table/overwrite-with-deep-table.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/table/redefine-1.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/table/redefine-2.stderr6
-rw-r--r--vendor/toml_edit/tests/fixtures/invalid/table/redefine-3.stderr6
-rw-r--r--vendor/toml_edit/tests/testsuite/edit.rs7
-rw-r--r--vendor/toml_edit/tests/testsuite/float.rs60
-rw-r--r--vendor/toml_edit/tests/testsuite/main.rs1
-rw-r--r--vendor/toml_edit/tests/testsuite/parse.rs6
-rw-r--r--vendor/tracing-0.1.37/.cargo-checksum.json1
-rw-r--r--vendor/tracing-0.1.37/CHANGELOG.md806
-rw-r--r--vendor/tracing-0.1.37/Cargo.toml142
-rw-r--r--vendor/tracing-0.1.37/LICENSE25
-rw-r--r--vendor/tracing-0.1.37/README.md465
-rw-r--r--vendor/tracing-0.1.37/benches/baseline.rs24
-rw-r--r--vendor/tracing-0.1.37/benches/dispatch_get_clone.rs15
-rw-r--r--vendor/tracing-0.1.37/benches/dispatch_get_ref.rs16
-rw-r--r--vendor/tracing-0.1.37/benches/empty_span.rs43
-rw-r--r--vendor/tracing-0.1.37/benches/enter_span.rs16
-rw-r--r--vendor/tracing-0.1.37/benches/event.rs12
-rw-r--r--vendor/tracing-0.1.37/benches/shared.rs160
-rw-r--r--vendor/tracing-0.1.37/benches/span_fields.rs23
-rw-r--r--vendor/tracing-0.1.37/benches/span_no_fields.rs13
-rw-r--r--vendor/tracing-0.1.37/benches/span_repeated.rs20
-rw-r--r--vendor/tracing-0.1.37/src/dispatcher.rs145
-rw-r--r--vendor/tracing-0.1.37/src/field.rs170
-rw-r--r--vendor/tracing-0.1.37/src/instrument.rs370
-rw-r--r--vendor/tracing-0.1.37/src/level_filters.rs94
-rw-r--r--vendor/tracing-0.1.37/src/lib.rs1115
-rw-r--r--vendor/tracing-0.1.37/src/macros.rs2504
-rw-r--r--vendor/tracing-0.1.37/src/span.rs1623
-rw-r--r--vendor/tracing-0.1.37/src/stdlib.rs55
-rw-r--r--vendor/tracing-0.1.37/src/subscriber.rs65
-rw-r--r--vendor/tracing-0.1.37/tests/enabled.rs54
-rw-r--r--vendor/tracing-0.1.37/tests/event.rs500
-rw-r--r--vendor/tracing-0.1.37/tests/filter_caching_is_lexically_scoped.rs65
-rw-r--r--vendor/tracing-0.1.37/tests/filters_are_not_reevaluated_for_the_same_span.rs70
-rw-r--r--vendor/tracing-0.1.37/tests/filters_are_reevaluated_for_different_call_sites.rs80
-rw-r--r--vendor/tracing-0.1.37/tests/filters_dont_leak.rs81
-rw-r--r--vendor/tracing-0.1.37/tests/future_send.rs22
-rw-r--r--vendor/tracing-0.1.37/tests/macro_imports.rs23
-rw-r--r--vendor/tracing-0.1.37/tests/macros.rs963
-rw-r--r--vendor/tracing-0.1.37/tests/macros_incompatible_concat.rs24
-rw-r--r--vendor/tracing-0.1.37/tests/macros_redefined_core.rs (renamed from vendor/tracing/tests/macros_redefined_core.rs)0
-rw-r--r--vendor/tracing-0.1.37/tests/max_level_hint.rs37
-rw-r--r--vendor/tracing-0.1.37/tests/multiple_max_level_hints.rs69
-rw-r--r--vendor/tracing-0.1.37/tests/no_subscriber.rs15
-rw-r--r--vendor/tracing-0.1.37/tests/register_callsite_deadlock.rs47
-rw-r--r--vendor/tracing-0.1.37/tests/scoped_clobbers_default.rs35
-rw-r--r--vendor/tracing-0.1.37/tests/span.rs825
-rw-r--r--vendor/tracing-0.1.37/tests/subscriber.rs130
-rw-r--r--vendor/tracing-attributes/.cargo-checksum.json2
-rw-r--r--vendor/tracing-attributes/CHANGELOG.md15
-rw-r--r--vendor/tracing-attributes/Cargo.toml4
-rw-r--r--vendor/tracing-attributes/src/expand.rs8
-rw-r--r--vendor/tracing-attributes/src/lib.rs2
-rw-r--r--vendor/tracing-attributes/tests/async_fn.rs91
-rw-r--r--vendor/tracing-attributes/tests/destructuring.rs54
-rw-r--r--vendor/tracing-attributes/tests/err.rs101
-rw-r--r--vendor/tracing-attributes/tests/fields.rs53
-rw-r--r--vendor/tracing-attributes/tests/follows_from.rs26
-rw-r--r--vendor/tracing-attributes/tests/instrument.rs54
-rw-r--r--vendor/tracing-attributes/tests/levels.rs96
-rw-r--r--vendor/tracing-attributes/tests/names.rs24
-rw-r--r--vendor/tracing-attributes/tests/parents.rs14
-rw-r--r--vendor/tracing-attributes/tests/ret.rs92
-rw-r--r--vendor/tracing-attributes/tests/targets.rs40
-rw-r--r--vendor/tracing-core/.cargo-checksum.json2
-rw-r--r--vendor/tracing-core/CHANGELOG.md15
-rw-r--r--vendor/tracing-core/Cargo.toml2
-rw-r--r--vendor/tracing-core/src/callsite.rs4
-rw-r--r--vendor/tracing-core/src/dispatcher.rs4
-rw-r--r--vendor/tracing-core/src/field.rs50
-rw-r--r--vendor/tracing-core/src/lib.rs6
-rw-r--r--vendor/tracing/.cargo-checksum.json2
-rw-r--r--vendor/tracing/CHANGELOG.md135
-rw-r--r--vendor/tracing/Cargo.toml25
-rw-r--r--vendor/tracing/README.md16
-rw-r--r--vendor/tracing/src/field.rs6
-rw-r--r--vendor/tracing/src/instrument.rs85
-rw-r--r--vendor/tracing/src/level_filters.rs56
-rw-r--r--vendor/tracing/src/lib.rs64
-rw-r--r--vendor/tracing/src/macros.rs941
-rw-r--r--vendor/tracing/src/span.rs8
-rw-r--r--vendor/tracing/tests/enabled.rs4
-rw-r--r--vendor/tracing/tests/event.rs208
-rw-r--r--vendor/tracing/tests/filters_dont_leak.rs12
-rw-r--r--vendor/tracing/tests/instrument.rs59
-rw-r--r--vendor/tracing/tests/macros.rs624
-rw-r--r--vendor/tracing/tests/max_level_hint.rs8
-rw-r--r--vendor/tracing/tests/multiple_max_level_hints.rs18
-rw-r--r--vendor/tracing/tests/no_subscriber.rs9
-rw-r--r--vendor/tracing/tests/scoped_clobbers_default.rs4
-rw-r--r--vendor/tracing/tests/span.rs385
-rw-r--r--vendor/tracing/tests/subscriber.rs31
-rw-r--r--vendor/ui_test-0.20.0/.cargo-checksum.json1
-rw-r--r--vendor/ui_test/.cargo-checksum.json1
-rw-r--r--vendor/ui_test/CONTRIBUTING.md (renamed from vendor/ui_test-0.20.0/CONTRIBUTING.md)0
-rw-r--r--vendor/ui_test/Cargo.toml (renamed from vendor/ui_test-0.20.0/Cargo.toml)2
-rw-r--r--vendor/ui_test/README.md (renamed from vendor/ui_test-0.20.0/README.md)3
-rw-r--r--vendor/ui_test/shell.nix18
-rw-r--r--vendor/ui_test/src/cmd.rs (renamed from vendor/ui_test-0.20.0/src/cmd.rs)0
-rw-r--r--vendor/ui_test/src/config.rs (renamed from vendor/ui_test-0.20.0/src/config.rs)26
-rw-r--r--vendor/ui_test/src/config/args.rs (renamed from vendor/ui_test-0.20.0/src/config/args.rs)41
-rw-r--r--vendor/ui_test/src/dependencies.rs (renamed from vendor/ui_test-0.20.0/src/dependencies.rs)0
-rw-r--r--vendor/ui_test/src/diff.rs (renamed from vendor/ui_test-0.20.0/src/diff.rs)0
-rw-r--r--vendor/ui_test/src/error.rs (renamed from vendor/ui_test-0.20.0/src/error.rs)14
-rw-r--r--vendor/ui_test/src/github_actions.rs (renamed from vendor/ui_test-0.20.0/src/github_actions.rs)0
-rw-r--r--vendor/ui_test/src/lib.rs (renamed from vendor/ui_test-0.20.0/src/lib.rs)183
-rw-r--r--vendor/ui_test/src/mode.rs (renamed from vendor/ui_test-0.20.0/src/mode.rs)0
-rw-r--r--vendor/ui_test/src/parser.rs (renamed from vendor/ui_test-0.20.0/src/parser.rs)0
-rw-r--r--vendor/ui_test/src/parser/spanned.rs (renamed from vendor/ui_test-0.20.0/src/parser/spanned.rs)0
-rw-r--r--vendor/ui_test/src/parser/tests.rs (renamed from vendor/ui_test-0.20.0/src/parser/tests.rs)0
-rw-r--r--vendor/ui_test/src/rustc_stderr.rs (renamed from vendor/ui_test-0.20.0/src/rustc_stderr.rs)0
-rw-r--r--vendor/ui_test/src/status_emitter.rs (renamed from vendor/ui_test-0.20.0/src/status_emitter.rs)115
-rw-r--r--vendor/ui_test/src/tests.rs (renamed from vendor/ui_test-0.20.0/src/tests.rs)8
-rw-r--r--vendor/ui_test/tests/integration.rs (renamed from vendor/ui_test-0.20.0/tests/integration.rs)21
-rw-r--r--vendor/unicode-width/.cargo-checksum.json2
-rw-r--r--vendor/unicode-width/Cargo.toml2
-rwxr-xr-xvendor/unicode-width/scripts/unicode.py4
-rw-r--r--vendor/unicode-width/src/lib.rs6
-rw-r--r--vendor/unicode-width/src/tables.rs6
-rw-r--r--vendor/unicode_categories/.cargo-checksum.json1
-rw-r--r--vendor/unicode_categories/Cargo.toml10
-rw-r--r--vendor/unicode_categories/README.md37
-rw-r--r--vendor/unicode_categories/scripts/unicode.py93
-rw-r--r--vendor/unicode_categories/src/lib.rs421
-rw-r--r--vendor/unicode_categories/src/tables.rs3722
-rw-r--r--vendor/walkdir/.cargo-checksum.json2
-rw-r--r--vendor/walkdir/Cargo.toml2
-rw-r--r--vendor/walkdir/src/lib.rs27
-rw-r--r--vendor/walkdir/src/tests/recursive.rs71
-rw-r--r--vendor/winnow-0.4.7/.cargo-checksum.json1
-rw-r--r--vendor/winnow-0.4.7/Cargo.lock1353
-rw-r--r--vendor/winnow-0.4.7/Cargo.toml235
-rw-r--r--vendor/winnow-0.4.7/LICENSE-MIT18
-rw-r--r--vendor/winnow-0.4.7/README.md27
-rw-r--r--vendor/winnow-0.4.7/benches/contains_token.rs102
-rw-r--r--vendor/winnow-0.4.7/benches/number.rs70
-rw-r--r--vendor/winnow-0.4.7/examples/arithmetic/bench.rs19
-rw-r--r--vendor/winnow-0.4.7/examples/arithmetic/main.rs75
-rw-r--r--vendor/winnow-0.4.7/examples/arithmetic/parser.rs103
-rw-r--r--vendor/winnow-0.4.7/examples/arithmetic/parser_ast.rs162
-rw-r--r--vendor/winnow-0.4.7/examples/css/main.rs62
-rw-r--r--vendor/winnow-0.4.7/examples/css/parser.rs31
-rw-r--r--vendor/winnow-0.4.7/examples/custom_error.rs42
-rw-r--r--vendor/winnow-0.4.7/examples/http/bench.rs36
-rw-r--r--vendor/winnow-0.4.7/examples/http/main.rs47
-rw-r--r--vendor/winnow-0.4.7/examples/http/parser.rs141
-rw-r--r--vendor/winnow-0.4.7/examples/http/parser_streaming.rs143
-rw-r--r--vendor/winnow-0.4.7/examples/ini/bench.rs61
-rw-r--r--vendor/winnow-0.4.7/examples/ini/main.rs60
-rw-r--r--vendor/winnow-0.4.7/examples/ini/parser.rs146
-rw-r--r--vendor/winnow-0.4.7/examples/ini/parser_str.rs206
-rw-r--r--vendor/winnow-0.4.7/examples/iterator.rs81
-rw-r--r--vendor/winnow-0.4.7/examples/json/bench.rs60
-rw-r--r--vendor/winnow-0.4.7/examples/json/json.rs11
-rw-r--r--vendor/winnow-0.4.7/examples/json/main.rs118
-rw-r--r--vendor/winnow-0.4.7/examples/json/parser.rs315
-rw-r--r--vendor/winnow-0.4.7/examples/json/parser_dispatch.rs322
-rw-r--r--vendor/winnow-0.4.7/examples/json/parser_partial.rs338
-rw-r--r--vendor/winnow-0.4.7/examples/json_iterator.rs305
-rw-r--r--vendor/winnow-0.4.7/examples/ndjson/example.ndjson158
-rw-r--r--vendor/winnow-0.4.7/examples/ndjson/main.rs113
-rw-r--r--vendor/winnow-0.4.7/examples/ndjson/parser.rs328
-rw-r--r--vendor/winnow-0.4.7/examples/s_expression/main.rs20
-rw-r--r--vendor/winnow-0.4.7/examples/s_expression/parser.rs362
-rw-r--r--vendor/winnow-0.4.7/examples/string/main.rs70
-rw-r--r--vendor/winnow-0.4.7/examples/string/parser.rs165
-rw-r--r--vendor/winnow-0.4.7/src/_topic/arithmetic.rs13
-rw-r--r--vendor/winnow-0.4.7/src/_topic/error.rs13
-rw-r--r--vendor/winnow-0.4.7/src/_topic/fromstr.rs8
-rw-r--r--vendor/winnow-0.4.7/src/_topic/http.rs5
-rw-r--r--vendor/winnow-0.4.7/src/_topic/ini.rs5
-rw-r--r--vendor/winnow-0.4.7/src/_topic/json.rs5
-rw-r--r--vendor/winnow-0.4.7/src/_topic/language.rs315
-rw-r--r--vendor/winnow-0.4.7/src/_topic/mod.rs36
-rw-r--r--vendor/winnow-0.4.7/src/_topic/partial.rs46
-rw-r--r--vendor/winnow-0.4.7/src/_topic/performance.rs54
-rw-r--r--vendor/winnow-0.4.7/src/_topic/s_expression.rs5
-rw-r--r--vendor/winnow-0.4.7/src/_topic/stream.rs54
-rw-r--r--vendor/winnow-0.4.7/src/_topic/why.rs98
-rw-r--r--vendor/winnow-0.4.7/src/_tutorial/chapter_0.rs38
-rw-r--r--vendor/winnow-0.4.7/src/_tutorial/chapter_1.rs89
-rw-r--r--vendor/winnow-0.4.7/src/_tutorial/chapter_2.rs156
-rw-r--r--vendor/winnow-0.4.7/src/_tutorial/chapter_3.rs242
-rw-r--r--vendor/winnow-0.4.7/src/_tutorial/chapter_4.rs109
-rw-r--r--vendor/winnow-0.4.7/src/_tutorial/chapter_5.rs214
-rw-r--r--vendor/winnow-0.4.7/src/_tutorial/chapter_6.rs158
-rw-r--r--vendor/winnow-0.4.7/src/_tutorial/chapter_7.rs111
-rw-r--r--vendor/winnow-0.4.7/src/_tutorial/mod.rs12
-rw-r--r--vendor/winnow-0.4.7/src/ascii/mod.rs1783
-rw-r--r--vendor/winnow-0.4.7/src/ascii/tests.rs1496
-rw-r--r--vendor/winnow-0.4.7/src/binary/bits/mod.rs342
-rw-r--r--vendor/winnow-0.4.7/src/binary/bits/tests.rs190
-rw-r--r--vendor/winnow-0.4.7/src/binary/mod.rs2550
-rw-r--r--vendor/winnow-0.4.7/src/binary/tests.rs1214
-rw-r--r--vendor/winnow-0.4.7/src/bits.rs71
-rw-r--r--vendor/winnow-0.4.7/src/branch.rs10
-rw-r--r--vendor/winnow-0.4.7/src/bytes.rs26
-rw-r--r--vendor/winnow-0.4.7/src/character.rs342
-rw-r--r--vendor/winnow-0.4.7/src/combinator/branch.rs268
-rw-r--r--vendor/winnow-0.4.7/src/combinator/core.rs490
-rw-r--r--vendor/winnow-0.4.7/src/combinator/mod.rs172
-rw-r--r--vendor/winnow-0.4.7/src/combinator/multi.rs987
-rw-r--r--vendor/winnow-0.4.7/src/combinator/parser.rs827
-rw-r--r--vendor/winnow-0.4.7/src/combinator/sequence.rs164
-rw-r--r--vendor/winnow-0.4.7/src/combinator/tests.rs1267
-rw-r--r--vendor/winnow-0.4.7/src/error.rs722
-rw-r--r--vendor/winnow-0.4.7/src/lib.rs258
-rw-r--r--vendor/winnow-0.4.7/src/macros.rs78
-rw-r--r--vendor/winnow-0.4.7/src/multi.rs124
-rw-r--r--vendor/winnow-0.4.7/src/number.rs509
-rw-r--r--vendor/winnow-0.4.7/src/parser.rs931
-rw-r--r--vendor/winnow-0.4.7/src/sequence.rs9
-rw-r--r--vendor/winnow-0.4.7/src/stream/impls.rs537
-rw-r--r--vendor/winnow-0.4.7/src/stream/mod.rs2576
-rw-r--r--vendor/winnow-0.4.7/src/stream/tests.rs116
-rw-r--r--vendor/winnow-0.4.7/src/token/mod.rs1009
-rw-r--r--vendor/winnow-0.4.7/src/token/tests.rs700
-rw-r--r--vendor/winnow-0.4.7/src/trace/internals.rs248
-rw-r--r--vendor/winnow-0.4.7/src/trace/mod.rs119
-rw-r--r--vendor/writeable/.cargo-checksum.json2
-rw-r--r--vendor/writeable/Cargo.lock240
-rw-r--r--vendor/writeable/Cargo.toml21
-rw-r--r--vendor/writeable/LICENSE79
-rw-r--r--vendor/writeable/README.md4
-rw-r--r--vendor/writeable/src/ops.rs8
-rw-r--r--vendor/yoke-derive/.cargo-checksum.json2
-rw-r--r--vendor/yoke-derive/Cargo.lock54
-rw-r--r--vendor/yoke-derive/Cargo.toml16
-rw-r--r--vendor/yoke-derive/LICENSE79
-rw-r--r--vendor/yoke-derive/README.md4
-rw-r--r--vendor/yoke/.cargo-checksum.json2
-rw-r--r--vendor/yoke/Cargo.toml19
-rw-r--r--vendor/yoke/LICENSE79
-rw-r--r--vendor/yoke/README.md4
-rw-r--r--vendor/yoke/src/erased.rs8
-rw-r--r--vendor/yoke/src/kinda_sorta_dangling.rs94
-rw-r--r--vendor/yoke/src/lib.rs1
-rw-r--r--vendor/yoke/src/yoke.rs99
-rw-r--r--vendor/yoke/tests/bincode.rs83
-rw-r--r--vendor/yoke/tests/miri.rs15
-rw-r--r--vendor/zerofrom-derive/.cargo-checksum.json2
-rw-r--r--vendor/zerofrom-derive/Cargo.lock115
-rw-r--r--vendor/zerofrom-derive/Cargo.toml19
-rw-r--r--vendor/zerofrom-derive/LICENSE79
-rw-r--r--vendor/zerofrom-derive/README.md4
-rw-r--r--vendor/zerofrom-derive/examples/zf_derive.rs24
-rw-r--r--vendor/zerofrom-derive/src/lib.rs149
-rw-r--r--vendor/zerofrom-derive/src/visitor.rs20
-rw-r--r--vendor/zerofrom/.cargo-checksum.json2
-rw-r--r--vendor/zerofrom/Cargo.toml14
-rw-r--r--vendor/zerofrom/LICENSE79
-rw-r--r--vendor/zerofrom/README.md4
-rw-r--r--vendor/zerofrom/src/zero_from.rs4
-rw-r--r--vendor/zerovec-derive/.cargo-checksum.json2
-rw-r--r--vendor/zerovec-derive/Cargo.lock77
-rw-r--r--vendor/zerovec-derive/Cargo.toml22
-rw-r--r--vendor/zerovec-derive/LICENSE79
-rw-r--r--vendor/zerovec-derive/README.md4
-rw-r--r--vendor/zerovec-derive/examples/make_var.rs37
-rw-r--r--vendor/zerovec-derive/src/lib.rs7
-rw-r--r--vendor/zerovec-derive/src/make_ule.rs25
-rw-r--r--vendor/zerovec-derive/src/make_varule.rs78
-rw-r--r--vendor/zerovec-derive/src/utils.rs55
-rw-r--r--vendor/zerovec/.cargo-checksum.json2
-rw-r--r--vendor/zerovec/Cargo.lock301
-rw-r--r--vendor/zerovec/Cargo.toml49
-rw-r--r--vendor/zerovec/LICENSE79
-rw-r--r--vendor/zerovec/README.md10
-rw-r--r--vendor/zerovec/benches/testdata/large_hashmap.postcard1
-rw-r--r--vendor/zerovec/benches/testdata/large_zerohashmap.postcardbin3775153 -> 0 bytes
-rw-r--r--vendor/zerovec/benches/testdata/large_zeromap.postcardbin2726574 -> 0 bytes
-rw-r--r--vendor/zerovec/benches/zeromap.rs111
-rw-r--r--vendor/zerovec/src/flexzerovec/databake.rs6
-rw-r--r--vendor/zerovec/src/flexzerovec/slice.rs17
-rw-r--r--vendor/zerovec/src/hashmap/mod.rs18
-rw-r--r--vendor/zerovec/src/hashmap/serde.rs2
-rw-r--r--vendor/zerovec/src/lib.rs41
-rw-r--r--vendor/zerovec/src/map/borrowed.rs11
-rw-r--r--vendor/zerovec/src/map/databake.rs4
-rw-r--r--vendor/zerovec/src/map2d/borrowed.rs7
-rw-r--r--vendor/zerovec/src/map2d/databake.rs16
-rw-r--r--vendor/zerovec/src/map2d/map.rs16
-rw-r--r--vendor/zerovec/src/samples.rs30
-rw-r--r--vendor/zerovec/src/ule/chars.rs45
-rw-r--r--vendor/zerovec/src/ule/custom.rs4
-rw-r--r--vendor/zerovec/src/ule/encode.rs8
-rw-r--r--vendor/zerovec/src/ule/macros.rs29
-rw-r--r--vendor/zerovec/src/ule/mod.rs10
-rw-r--r--vendor/zerovec/src/ule/multi.rs8
-rw-r--r--vendor/zerovec/src/ule/option.rs3
-rw-r--r--vendor/zerovec/src/ule/plain.rs145
-rw-r--r--vendor/zerovec/src/ule/tuple.rs11
-rw-r--r--vendor/zerovec/src/ule/unvalidated.rs318
-rw-r--r--vendor/zerovec/src/varzerovec/components.rs23
-rw-r--r--vendor/zerovec/src/varzerovec/databake.rs8
-rw-r--r--vendor/zerovec/src/varzerovec/owned.rs22
-rw-r--r--vendor/zerovec/src/varzerovec/serde.rs26
-rw-r--r--vendor/zerovec/src/varzerovec/slice.rs10
-rw-r--r--vendor/zerovec/src/varzerovec/vec.rs34
-rw-r--r--vendor/zerovec/src/yoke_impls.rs47
-rw-r--r--vendor/zerovec/src/zerovec/databake.rs10
-rw-r--r--vendor/zerovec/src/zerovec/mod.rs165
-rw-r--r--vendor/zerovec/src/zerovec/serde.rs2
-rw-r--r--vendor/zerovec/src/zerovec/slice.rs29
3232 files changed, 221941 insertions, 241339 deletions
diff --git a/vendor/anstream-0.5.0/.cargo-checksum.json b/vendor/anstream-0.5.0/.cargo-checksum.json
new file mode 100644
index 000000000..617e38086
--- /dev/null
+++ b/vendor/anstream-0.5.0/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"a0da4d140af6474486430fbb0b30da25b3dac747393efefd8c97293ed8c897e9","LICENSE-APACHE":"c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08","LICENSE-MIT":"6efb0476a1cc085077ed49357026d8c173bf33017278ef440f222fb9cbcb66e6","README.md":"b230c2257d0c7a49b9bd97f2fa73abedcdc055757b5cedd2b0eb1a7a448ff461","benches/stream.rs":"94226af8a048d5db3d6a2e756ed0a1e3ca44a4927a7648ac673d6c3c621cda35","benches/strip.rs":"0569a82722cec5f2bbbf027ab279b7d946f9be7f2a8e698eb992e01c3d33898a","benches/wincon.rs":"680e86933c008b242a3286c5149c33d3c086426eb99fe134b6e79f7578f96663","src/adapter/mod.rs":"baf4237ea0b18df63609e49d93572ca27c2202a4cbec0220adb5a7e815c7d8ed","src/adapter/strip.rs":"010972f96708c56da9bced98287f134ce43a4f6459c22c1697abdc4fd6f82d00","src/adapter/wincon.rs":"9869aa553c253c49bebc0830628225cd294df8e84837b3952529173b06b24b85","src/auto.rs":"6559183bf11843dcef923d13239aae020e80a4cc62a912bf6a6f89ca047dd953","src/buffer.rs":"f307dc6556b38948a83da2c0fcdbf36495c11e0d51e21be33fd3ff1b60688356","src/is_terminal.rs":"e89c20e54364cc409bcd784dbcc0cca303acd741e2a8fd9bd47f90e82b39997b","src/lib.rs":"3f67e0cd2990cf4ab6d9593c218258e590a0246834664921c5bfcd0b9fe440e9","src/lockable.rs":"6ad88b75db8c5f8811447b0b8e5b4b2f47fb4db6187bc8cd30dc82885a34f13b","src/macros.rs":"9b8e1c5b0639c019fa2a84cc825e52fcd0749af4876a9ecf3a750f68469986aa","src/raw.rs":"c6f24602785dc33fb9042d91eebd593ce24ebac60a9895a7daf3dd62db7f0381","src/strip.rs":"cdd047183d31fc7c83bc12adb25e78c21aef2102b3d4a96da3654f902c220cb0","src/wincon.rs":"3a50c32035e7dc45c8c8e781865b298eb064a3ffc7d29c9823c9fecc8080ea51"},"package":"b1f58811cfac344940f1a400b6e6231ce35171f614f26439e80f8c1465c5cc0c"} \ No newline at end of file
diff --git a/vendor/anstream-0.5.0/Cargo.toml b/vendor/anstream-0.5.0/Cargo.toml
new file mode 100644
index 000000000..1b5193c11
--- /dev/null
+++ b/vendor/anstream-0.5.0/Cargo.toml
@@ -0,0 +1,140 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.70.0"
+name = "anstream"
+version = "0.5.0"
+include = [
+ "build.rs",
+ "src/**/*",
+ "Cargo.toml",
+ "Cargo.lock",
+ "LICENSE*",
+ "README.md",
+ "benches/**/*",
+ "examples/**/*",
+]
+description = "A simple cross platform library for writing colored text to a terminal."
+homepage = "https://github.com/rust-cli/anstyle"
+readme = "README.md"
+keywords = [
+ "ansi",
+ "terminal",
+ "color",
+ "strip",
+ "wincon",
+]
+categories = ["command-line-interface"]
+license = "MIT OR Apache-2.0"
+repository = "https://github.com/rust-cli/anstyle.git"
+
+[package.metadata.docs.rs]
+cargo-args = [
+ "-Zunstable-options",
+ "-Zrustdoc-scrape-examples",
+]
+rustdoc-args = [
+ "--cfg",
+ "docsrs",
+]
+
+[[package.metadata.release.pre-release-replacements]]
+file = "CHANGELOG.md"
+min = 1
+replace = "{{version}}"
+search = "Unreleased"
+
+[[package.metadata.release.pre-release-replacements]]
+exactly = 1
+file = "CHANGELOG.md"
+replace = "...{{tag_name}}"
+search = '\.\.\.HEAD'
+
+[[package.metadata.release.pre-release-replacements]]
+file = "CHANGELOG.md"
+min = 1
+replace = "{{date}}"
+search = "ReleaseDate"
+
+[[package.metadata.release.pre-release-replacements]]
+exactly = 1
+file = "CHANGELOG.md"
+replace = """
+<!-- next-header -->
+## [Unreleased] - ReleaseDate
+"""
+search = "<!-- next-header -->"
+
+[[package.metadata.release.pre-release-replacements]]
+exactly = 1
+file = "CHANGELOG.md"
+replace = """
+<!-- next-url -->
+[Unreleased]: https://github.com/rust-cli/anstyle/compare/{{tag_name}}...HEAD"""
+search = "<!-- next-url -->"
+
+[[bench]]
+name = "strip"
+harness = false
+
+[[bench]]
+name = "wincon"
+harness = false
+
+[[bench]]
+name = "stream"
+harness = false
+
+[dependencies.anstyle]
+version = "1.0.0"
+
+[dependencies.anstyle-parse]
+version = "0.2.0"
+
+[dependencies.anstyle-query]
+version = "1.0.0"
+optional = true
+
+[dependencies.colorchoice]
+version = "1.0.0"
+optional = true
+
+[dependencies.utf8parse]
+version = "0.2.1"
+
+[dev-dependencies.criterion]
+version = "0.4.0"
+
+[dev-dependencies.owo-colors]
+version = "3.5.0"
+
+[dev-dependencies.proptest]
+version = "1.1.0"
+
+[dev-dependencies.strip-ansi-escapes]
+version = "0.1.1"
+
+[features]
+auto = [
+ "dep:anstyle-query",
+ "dep:colorchoice",
+]
+default = [
+ "auto",
+ "wincon",
+]
+wincon = ["dep:anstyle-wincon"]
+
+[target."cfg(windows)".dependencies.anstyle-wincon]
+version = "2.0.0"
+optional = true
diff --git a/vendor/unicode_categories/LICENSE-APACHE b/vendor/anstream-0.5.0/LICENSE-APACHE
index 8f71f43fe..8f71f43fe 100644
--- a/vendor/unicode_categories/LICENSE-APACHE
+++ b/vendor/anstream-0.5.0/LICENSE-APACHE
diff --git a/vendor/unicode_categories/LICENSE-MIT b/vendor/anstream-0.5.0/LICENSE-MIT
index b96d18658..a2d01088b 100644
--- a/vendor/unicode_categories/LICENSE-MIT
+++ b/vendor/anstream-0.5.0/LICENSE-MIT
@@ -1,4 +1,4 @@
-Copyright (c) 2015 The unicode-categories Developers
+Copyright (c) Individual contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/anstream-0.5.0/README.md b/vendor/anstream-0.5.0/README.md
new file mode 100644
index 000000000..c3d926602
--- /dev/null
+++ b/vendor/anstream-0.5.0/README.md
@@ -0,0 +1,34 @@
+# anstream
+
+> A simple cross platform library for writing colored text to a terminal.
+
+*A portmanteau of "ansi stream"*
+
+[![Documentation](https://img.shields.io/badge/docs-master-blue.svg)][Documentation]
+![License](https://img.shields.io/crates/l/anstream.svg)
+[![Crates Status](https://img.shields.io/crates/v/anstream.svg)](https://crates.io/crates/anstream)
+
+Specialized `stdout` and `stderr` that accept ANSI escape codes and adapt them
+based on the terminal's capabilities.
+
+`anstream::adapter::strip_str` may also be of interest on its own for low
+overhead stripping of ANSI escape codes.
+
+## License
+
+Licensed under either of
+
+ * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
+ * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
+
+at your option.
+
+### Contribution
+
+Unless you explicitly state otherwise, any contribution intentionally
+submitted for inclusion in the work by you, as defined in the Apache-2.0
+license, shall be dual licensed as above, without any additional terms or
+conditions.
+
+[Crates.io]: https://crates.io/crates/anstream
+[Documentation]: https://docs.rs/anstream
diff --git a/vendor/anstream-0.5.0/benches/stream.rs b/vendor/anstream-0.5.0/benches/stream.rs
new file mode 100644
index 000000000..55c20b896
--- /dev/null
+++ b/vendor/anstream-0.5.0/benches/stream.rs
@@ -0,0 +1,82 @@
+use std::io::Write as _;
+
+use criterion::{black_box, Criterion};
+
+fn stream(c: &mut Criterion) {
+ for (name, content) in [
+ ("demo.vte", &include_bytes!("../tests/demo.vte")[..]),
+ ("rg_help.vte", &include_bytes!("../tests/rg_help.vte")[..]),
+ ("rg_linus.vte", &include_bytes!("../tests/rg_linus.vte")[..]),
+ (
+ "state_changes",
+ &b"\x1b]2;X\x1b\\ \x1b[0m \x1bP0@\x1b\\"[..],
+ ),
+ ] {
+ let mut group = c.benchmark_group(name);
+ group.bench_function("nop", |b| {
+ b.iter(|| {
+ let buffer = anstream::Buffer::with_capacity(content.len());
+ let mut stream = buffer;
+
+ stream.write_all(content).unwrap();
+
+ black_box(stream)
+ })
+ });
+ group.bench_function("StripStream", |b| {
+ b.iter(|| {
+ let buffer = anstream::Buffer::with_capacity(content.len());
+ let mut stream = anstream::StripStream::new(buffer);
+
+ stream.write_all(content).unwrap();
+
+ black_box(stream)
+ })
+ });
+ #[cfg(all(windows, feature = "wincon"))]
+ group.bench_function("WinconStream", |b| {
+ b.iter(|| {
+ let buffer = anstream::Buffer::with_capacity(content.len());
+ let mut stream =
+ anstream::WinconStream::new(anstyle_wincon::Console::new(buffer).unwrap());
+
+ stream.write_all(content).unwrap();
+
+ black_box(stream)
+ })
+ });
+ group.bench_function("AutoStream::always_ansi", |b| {
+ b.iter(|| {
+ let buffer = anstream::Buffer::with_capacity(content.len());
+ let mut stream = anstream::AutoStream::always_ansi(buffer);
+
+ stream.write_all(content).unwrap();
+
+ black_box(stream)
+ })
+ });
+ group.bench_function("AutoStream::always", |b| {
+ b.iter(|| {
+ let buffer = anstream::Buffer::with_capacity(content.len());
+ let mut stream = anstream::AutoStream::always(buffer);
+
+ stream.write_all(content).unwrap();
+
+ black_box(stream)
+ })
+ });
+ group.bench_function("AutoStream::never", |b| {
+ b.iter(|| {
+ let buffer = anstream::Buffer::with_capacity(content.len());
+ let mut stream = anstream::AutoStream::never(buffer);
+
+ stream.write_all(content).unwrap();
+
+ black_box(stream)
+ })
+ });
+ }
+}
+
+criterion::criterion_group!(benches, stream);
+criterion::criterion_main!(benches);
diff --git a/vendor/anstream-0.5.0/benches/strip.rs b/vendor/anstream-0.5.0/benches/strip.rs
new file mode 100644
index 000000000..af204bf96
--- /dev/null
+++ b/vendor/anstream-0.5.0/benches/strip.rs
@@ -0,0 +1,102 @@
+use criterion::{black_box, Criterion};
+
+#[derive(Default)]
+struct Strip(String);
+impl Strip {
+ fn with_capacity(capacity: usize) -> Self {
+ Self(String::with_capacity(capacity))
+ }
+}
+impl anstyle_parse::Perform for Strip {
+ fn print(&mut self, c: char) {
+ self.0.push(c);
+ }
+
+ fn execute(&mut self, byte: u8) {
+ if byte.is_ascii_whitespace() {
+ self.0.push(byte as char);
+ }
+ }
+}
+
+fn strip(c: &mut Criterion) {
+ for (name, content) in [
+ ("demo.vte", &include_bytes!("../tests/demo.vte")[..]),
+ ("rg_help.vte", &include_bytes!("../tests/rg_help.vte")[..]),
+ ("rg_linus.vte", &include_bytes!("../tests/rg_linus.vte")[..]),
+ (
+ "state_changes",
+ &b"\x1b]2;X\x1b\\ \x1b[0m \x1bP0@\x1b\\"[..],
+ ),
+ ] {
+ // Make sure the comparison is fair
+ if let Ok(content) = std::str::from_utf8(content) {
+ let mut stripped = Strip::with_capacity(content.len());
+ let mut parser = anstyle_parse::Parser::<anstyle_parse::DefaultCharAccumulator>::new();
+ for byte in content.as_bytes() {
+ parser.advance(&mut stripped, *byte);
+ }
+ assert_eq!(
+ stripped.0,
+ anstream::adapter::strip_str(content).to_string()
+ );
+ assert_eq!(
+ stripped.0,
+ String::from_utf8(anstream::adapter::strip_bytes(content.as_bytes()).into_vec())
+ .unwrap()
+ );
+ }
+
+ let mut group = c.benchmark_group(name);
+ group.bench_function("advance_strip", |b| {
+ b.iter(|| {
+ let mut stripped = Strip::with_capacity(content.len());
+ let mut parser =
+ anstyle_parse::Parser::<anstyle_parse::DefaultCharAccumulator>::new();
+
+ for byte in content {
+ parser.advance(&mut stripped, *byte);
+ }
+
+ black_box(stripped.0)
+ })
+ });
+ group.bench_function("strip_ansi_escapes", |b| {
+ b.iter(|| {
+ let stripped = strip_ansi_escapes::strip(content).unwrap();
+
+ black_box(stripped)
+ })
+ });
+ if let Ok(content) = std::str::from_utf8(content) {
+ group.bench_function("strip_str", |b| {
+ b.iter(|| {
+ let stripped = anstream::adapter::strip_str(content).to_string();
+
+ black_box(stripped)
+ })
+ });
+ group.bench_function("StripStr", |b| {
+ b.iter(|| {
+ let mut stripped = String::with_capacity(content.len());
+ let mut state = anstream::adapter::StripStr::new();
+ for printable in state.strip_next(content) {
+ stripped.push_str(printable);
+ }
+
+ black_box(stripped)
+ })
+ });
+ }
+ group.bench_function("strip_bytes", |b| {
+ b.iter(|| {
+ let stripped = anstream::adapter::strip_bytes(content).into_vec();
+
+ black_box(stripped)
+ })
+ });
+ }
+}
+
+criterion::criterion_group!(benches, strip);
+criterion::criterion_main!(benches);
diff --git a/vendor/anstream-0.5.0/benches/wincon.rs b/vendor/anstream-0.5.0/benches/wincon.rs
new file mode 100644
index 000000000..54e1f80af
--- /dev/null
+++ b/vendor/anstream-0.5.0/benches/wincon.rs
@@ -0,0 +1,26 @@
+use criterion::{black_box, Criterion};
+
+fn wincon(c: &mut Criterion) {
+ for (name, content) in [
+ ("demo.vte", &include_bytes!("../tests/demo.vte")[..]),
+ ("rg_help.vte", &include_bytes!("../tests/rg_help.vte")[..]),
+ ("rg_linus.vte", &include_bytes!("../tests/rg_linus.vte")[..]),
+ (
+ "state_changes",
+ &b"\x1b]2;X\x1b\\ \x1b[0m \x1bP0@\x1b\\"[..],
+ ),
+ ] {
+ let mut group = c.benchmark_group(name);
+ group.bench_function("wincon_bytes", |b| {
+ b.iter(|| {
+ let mut state = anstream::adapter::WinconBytes::new();
+ let stripped = state.extract_next(content).collect::<Vec<_>>();
+
+ black_box(stripped)
+ })
+ });
+ }
+}
+
+criterion::criterion_group!(benches, wincon);
+criterion::criterion_main!(benches);
diff --git a/vendor/anstream-0.5.0/src/adapter/mod.rs b/vendor/anstream-0.5.0/src/adapter/mod.rs
new file mode 100644
index 000000000..f266b6805
--- /dev/null
+++ b/vendor/anstream-0.5.0/src/adapter/mod.rs
@@ -0,0 +1,15 @@
+//! Gracefully degrade styled output
+
+mod strip;
+mod wincon;
+
+pub use strip::strip_bytes;
+pub use strip::strip_str;
+pub use strip::StripBytes;
+pub use strip::StripBytesIter;
+pub use strip::StripStr;
+pub use strip::StripStrIter;
+pub use strip::StrippedBytes;
+pub use strip::StrippedStr;
+pub use wincon::WinconBytes;
+pub use wincon::WinconBytesIter;
diff --git a/vendor/anstream-0.5.0/src/adapter/strip.rs b/vendor/anstream-0.5.0/src/adapter/strip.rs
new file mode 100644
index 000000000..5078c5153
--- /dev/null
+++ b/vendor/anstream-0.5.0/src/adapter/strip.rs
@@ -0,0 +1,513 @@
+use anstyle_parse::state::state_change;
+use anstyle_parse::state::Action;
+use anstyle_parse::state::State;
+
+/// Strip ANSI escapes from a `&str`, returning the printable content
+///
+/// This can be used to take output from a program that includes escape sequences and write it
+/// somewhere that does not easily support them, such as a log file.
+///
+/// For non-contiguous data, see [`StripStr`].
+///
+/// # Example
+///
+/// ```rust
+/// use std::io::Write as _;
+///
+/// let styled_text = "\x1b[32mfoo\x1b[m bar";
+/// let plain_str = anstream::adapter::strip_str(&styled_text).to_string();
+/// assert_eq!(plain_str, "foo bar");
+/// ```
+#[inline]
+pub fn strip_str(data: &str) -> StrippedStr<'_> {
+ StrippedStr::new(data)
+}
+
+/// See [`strip_str`]
+#[derive(Default, Clone, Debug, PartialEq, Eq)]
+pub struct StrippedStr<'s> {
+ bytes: &'s [u8],
+ state: State,
+}
+
+impl<'s> StrippedStr<'s> {
+ #[inline]
+ fn new(data: &'s str) -> Self {
+ Self {
+ bytes: data.as_bytes(),
+ state: State::Ground,
+ }
+ }
+
+ /// Create a [`String`] of the printable content
+ #[inline]
+ #[allow(clippy::inherent_to_string_shadow_display)] // Single-allocation implementation
+ pub fn to_string(&self) -> String {
+ use std::fmt::Write as _;
+ let mut stripped = String::with_capacity(self.bytes.len());
+ let _ = write!(&mut stripped, "{}", self);
+ stripped
+ }
+}
+
+impl<'s> std::fmt::Display for StrippedStr<'s> {
+ /// **Note:** this does *not* exhaust the [`Iterator`]
+ #[inline]
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ let iter = Self {
+ bytes: self.bytes,
+ state: self.state,
+ };
+ for printable in iter {
+ printable.fmt(f)?;
+ }
+ Ok(())
+ }
+}
+
+impl<'s> Iterator for StrippedStr<'s> {
+ type Item = &'s str;
+
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ next_str(&mut self.bytes, &mut self.state)
+ }
+}
+
+/// Incrementally strip non-contiguous data
+#[derive(Default, Clone, Debug, PartialEq, Eq)]
+pub struct StripStr {
+ state: State,
+}
+
+impl StripStr {
+ /// Initial state
+ pub fn new() -> Self {
+ Default::default()
+ }
+
+ /// Strip the next segment of data
+ pub fn strip_next<'s>(&'s mut self, data: &'s str) -> StripStrIter<'s> {
+ StripStrIter {
+ bytes: data.as_bytes(),
+ state: &mut self.state,
+ }
+ }
+}
+
+/// See [`StripStr`]
+#[derive(Debug, PartialEq, Eq)]
+pub struct StripStrIter<'s> {
+ bytes: &'s [u8],
+ state: &'s mut State,
+}
+
+impl<'s> Iterator for StripStrIter<'s> {
+ type Item = &'s str;
+
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ next_str(&mut self.bytes, self.state)
+ }
+}
+
+#[inline]
+fn next_str<'s>(bytes: &mut &'s [u8], state: &mut State) -> Option<&'s str> {
+ let offset = bytes.iter().copied().position(|b| {
+ let (next_state, action) = state_change(*state, b);
+ if next_state != State::Anywhere {
+ *state = next_state;
+ }
+ is_printable_str(action, b)
+ });
+ let (_, next) = bytes.split_at(offset.unwrap_or(bytes.len()));
+ *bytes = next;
+ *state = State::Ground;
+
+ let offset = bytes.iter().copied().position(|b| {
+ let (_next_state, action) = state_change(State::Ground, b);
+ !is_printable_str(action, b)
+ });
+ let (printable, next) = bytes.split_at(offset.unwrap_or(bytes.len()));
+ *bytes = next;
+ if printable.is_empty() {
+ None
+ } else {
+ let printable = unsafe {
+ from_utf8_unchecked(
+ printable,
+ "`bytes` was validated as UTF-8, the parser preserves UTF-8 continuations",
+ )
+ };
+ Some(printable)
+ }
+}
+
+#[inline]
+unsafe fn from_utf8_unchecked<'b>(bytes: &'b [u8], safety_justification: &'static str) -> &'b str {
+ if cfg!(debug_assertions) {
+ // Catch problems more quickly when testing
+ std::str::from_utf8(bytes).expect(safety_justification)
+ } else {
+ std::str::from_utf8_unchecked(bytes)
+ }
+}
+
+#[inline]
+fn is_printable_str(action: Action, byte: u8) -> bool {
+ // VT320 considered 0x7f to be `Print`able but we expect to be working in UTF-8 systems and not
+ // ISO Latin-1, making it DEL and non-printable
+ const DEL: u8 = 0x7f;
+ (action == Action::Print && byte != DEL)
+ || action == Action::BeginUtf8
+ // since we know the input is valid UTF-8, the only thing we can do with
+ // continuations is to print them
+ || is_utf8_continuation(byte)
+ || (action == Action::Execute && byte.is_ascii_whitespace())
+}
+
+#[inline]
+fn is_utf8_continuation(b: u8) -> bool {
+ matches!(b, 0x80..=0xbf)
+}
+
+/// Strip ANSI escapes from bytes, returning the printable content
+///
+/// This can be used to take output from a program that includes escape sequences and write it
+/// somewhere that does not easily support them, such as a log file.
+///
+/// # Example
+///
+/// ```rust
+/// use std::io::Write as _;
+///
+/// let styled_text = "\x1b[32mfoo\x1b[m bar";
+/// let plain_str = anstream::adapter::strip_bytes(styled_text.as_bytes()).into_vec();
+/// assert_eq!(plain_str.as_slice(), &b"foo bar"[..]);
+/// ```
+#[inline]
+pub fn strip_bytes(data: &[u8]) -> StrippedBytes<'_> {
+ StrippedBytes::new(data)
+}
+
+/// See [`strip_bytes`]
+#[derive(Default, Clone, Debug, PartialEq, Eq)]
+pub struct StrippedBytes<'s> {
+ bytes: &'s [u8],
+ state: State,
+ utf8parser: Utf8Parser,
+}
+
+impl<'s> StrippedBytes<'s> {
+ /// See [`strip_bytes`]
+ #[inline]
+ pub fn new(bytes: &'s [u8]) -> Self {
+ Self {
+ bytes,
+ state: State::Ground,
+ utf8parser: Default::default(),
+ }
+ }
+
+ /// Strip the next slice of bytes
+ ///
+ /// Used when the content is in several non-contiguous slices
+ ///
+ /// # Panic
+ ///
+ /// May panic if it is not exhausted / empty
+ #[inline]
+ pub fn extend(&mut self, bytes: &'s [u8]) {
+ debug_assert!(
+ self.is_empty(),
+ "current bytes must be processed to ensure we end at the right state"
+ );
+ self.bytes = bytes;
+ }
+
+ /// Report the bytes has been exhausted
+ #[inline]
+ pub fn is_empty(&self) -> bool {
+ self.bytes.is_empty()
+ }
+
+ /// Create a [`Vec`] of the printable content
+ #[inline]
+ pub fn into_vec(self) -> Vec<u8> {
+ let mut stripped = Vec::with_capacity(self.bytes.len());
+ for printable in self {
+ stripped.extend(printable);
+ }
+ stripped
+ }
+}
+
+impl<'s> Iterator for StrippedBytes<'s> {
+ type Item = &'s [u8];
+
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ next_bytes(&mut self.bytes, &mut self.state, &mut self.utf8parser)
+ }
+}
+
+/// Incrementally strip non-contiguous data
+#[derive(Default, Clone, Debug, PartialEq, Eq)]
+pub struct StripBytes {
+ state: State,
+ utf8parser: Utf8Parser,
+}
+
+impl StripBytes {
+ /// Initial state
+ pub fn new() -> Self {
+ Default::default()
+ }
+
+ /// Strip the next segment of data
+ pub fn strip_next<'s>(&'s mut self, bytes: &'s [u8]) -> StripBytesIter<'s> {
+ StripBytesIter {
+ bytes,
+ state: &mut self.state,
+ utf8parser: &mut self.utf8parser,
+ }
+ }
+}
+
+/// See [`StripBytes`]
+#[derive(Debug, PartialEq, Eq)]
+pub struct StripBytesIter<'s> {
+ bytes: &'s [u8],
+ state: &'s mut State,
+ utf8parser: &'s mut Utf8Parser,
+}
+
+impl<'s> Iterator for StripBytesIter<'s> {
+ type Item = &'s [u8];
+
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ next_bytes(&mut self.bytes, self.state, self.utf8parser)
+ }
+}
+
+#[inline]
+fn next_bytes<'s>(
+ bytes: &mut &'s [u8],
+ state: &mut State,
+ utf8parser: &mut Utf8Parser,
+) -> Option<&'s [u8]> {
+ let offset = bytes.iter().copied().position(|b| {
+ if *state == State::Utf8 {
+ true
+ } else {
+ let (next_state, action) = state_change(*state, b);
+ if next_state != State::Anywhere {
+ *state = next_state;
+ }
+ is_printable_bytes(action, b)
+ }
+ });
+ let (_, next) = bytes.split_at(offset.unwrap_or(bytes.len()));
+ *bytes = next;
+
+ let offset = bytes.iter().copied().position(|b| {
+ if *state == State::Utf8 {
+ if utf8parser.add(b) {
+ *state = State::Ground;
+ }
+ false
+ } else {
+ let (next_state, action) = state_change(State::Ground, b);
+ if next_state != State::Anywhere {
+ *state = next_state;
+ }
+ if *state == State::Utf8 {
+ utf8parser.add(b);
+ false
+ } else {
+ !is_printable_bytes(action, b)
+ }
+ }
+ });
+ let (printable, next) = bytes.split_at(offset.unwrap_or(bytes.len()));
+ *bytes = next;
+ if printable.is_empty() {
+ None
+ } else {
+ Some(printable)
+ }
+}
+
+#[derive(Default, Clone, Debug, PartialEq, Eq)]
+pub struct Utf8Parser {
+ utf8_parser: utf8parse::Parser,
+}
+
+impl Utf8Parser {
+ fn add(&mut self, byte: u8) -> bool {
+ let mut b = false;
+ let mut receiver = VtUtf8Receiver(&mut b);
+ self.utf8_parser.advance(&mut receiver, byte);
+ b
+ }
+}
+
+struct VtUtf8Receiver<'a>(&'a mut bool);
+
+impl<'a> utf8parse::Receiver for VtUtf8Receiver<'a> {
+ fn codepoint(&mut self, _: char) {
+ *self.0 = true;
+ }
+
+ fn invalid_sequence(&mut self) {
+ *self.0 = true;
+ }
+}
+
+#[inline]
+fn is_printable_bytes(action: Action, byte: u8) -> bool {
+ // VT320 considered 0x7f to be `Print`able but we expect to be working in UTF-8 systems and not
+ // ISO Latin-1, making it DEL and non-printable
+ const DEL: u8 = 0x7f;
+
+ // Continuations aren't included as they may also be control codes, requiring more context
+ (action == Action::Print && byte != DEL)
+ || action == Action::BeginUtf8
+ || (action == Action::Execute && byte.is_ascii_whitespace())
+}
+
+#[cfg(test)]
+mod test {
+ use super::*;
+ use proptest::prelude::*;
+
+ /// Model based off full parser
+ fn parser_strip(bytes: &[u8]) -> String {
+ #[derive(Default)]
+ struct Strip(String);
+ impl Strip {
+ fn with_capacity(capacity: usize) -> Self {
+ Self(String::with_capacity(capacity))
+ }
+ }
+ impl anstyle_parse::Perform for Strip {
+ fn print(&mut self, c: char) {
+ self.0.push(c);
+ }
+
+ fn execute(&mut self, byte: u8) {
+ if byte.is_ascii_whitespace() {
+ self.0.push(byte as char);
+ }
+ }
+ }
+
+ let mut stripped = Strip::with_capacity(bytes.len());
+ let mut parser = anstyle_parse::Parser::<anstyle_parse::DefaultCharAccumulator>::new();
+ for byte in bytes {
+ parser.advance(&mut stripped, *byte);
+ }
+ stripped.0
+ }
+
+ /// Model verifying incremental parsing
+ fn strip_char(mut s: &str) -> String {
+ let mut result = String::new();
+ let mut state = StripStr::new();
+ while !s.is_empty() {
+ let mut indices = s.char_indices();
+ indices.next(); // current
+ let offset = indices.next().map(|(i, _)| i).unwrap_or_else(|| s.len());
+ let (current, remainder) = s.split_at(offset);
+ for printable in state.strip_next(current) {
+ result.push_str(printable);
+ }
+ s = remainder;
+ }
+ result
+ }
+
+ /// Model verifying incremental parsing
+ fn strip_byte(s: &[u8]) -> Vec<u8> {
+ let mut result = Vec::new();
+ let mut state = StripBytes::default();
+ for start in 0..s.len() {
+ let current = &s[start..=start];
+ for printable in state.strip_next(current) {
+ result.extend(printable);
+ }
+ }
+ result
+ }
+
+ #[test]
+ fn test_strip_bytes_multibyte() {
+ let bytes = [240, 145, 141, 139];
+ let expected = parser_strip(&bytes);
+ let actual = String::from_utf8(strip_bytes(&bytes).into_vec()).unwrap();
+ assert_eq!(expected, actual);
+ }
+
+ #[test]
+ fn test_strip_byte_multibyte() {
+ let bytes = [240, 145, 141, 139];
+ let expected = parser_strip(&bytes);
+ let actual = String::from_utf8(strip_byte(&bytes).to_vec()).unwrap();
+ assert_eq!(expected, actual);
+ }
+
+ #[test]
+ fn test_strip_str_del() {
+ let input = std::str::from_utf8(&[0x7f]).unwrap();
+ let expected = "";
+ let actual = strip_str(input).to_string();
+ assert_eq!(expected, actual);
+ }
+
+ #[test]
+ fn test_strip_byte_del() {
+ let bytes = [0x7f];
+ let expected = "";
+ let actual = String::from_utf8(strip_byte(&bytes).to_vec()).unwrap();
+ assert_eq!(expected, actual);
+ }
+
+ proptest! {
+ #[test]
+ #[cfg_attr(miri, ignore)] // See https://github.com/AltSysrq/proptest/issues/253
+ fn strip_str_no_escapes(s in "\\PC*") {
+ let expected = parser_strip(s.as_bytes());
+ let actual = strip_str(&s).to_string();
+ assert_eq!(expected, actual);
+ }
+
+ #[test]
+ #[cfg_attr(miri, ignore)] // See https://github.com/AltSysrq/proptest/issues/253
+ fn strip_char_no_escapes(s in "\\PC*") {
+ let expected = parser_strip(s.as_bytes());
+ let actual = strip_char(&s);
+ assert_eq!(expected, actual);
+ }
+
+ #[test]
+ #[cfg_attr(miri, ignore)] // See https://github.com/AltSysrq/proptest/issues/253
+ fn strip_bytes_no_escapes(s in "\\PC*") {
+ dbg!(&s);
+ dbg!(s.as_bytes());
+ let expected = parser_strip(s.as_bytes());
+ let actual = String::from_utf8(strip_bytes(s.as_bytes()).into_vec()).unwrap();
+ assert_eq!(expected, actual);
+ }
+
+ #[test]
+ #[cfg_attr(miri, ignore)] // See https://github.com/AltSysrq/proptest/issues/253
+ fn strip_byte_no_escapes(s in "\\PC*") {
+ dbg!(&s);
+ dbg!(s.as_bytes());
+ let expected = parser_strip(s.as_bytes());
+ let actual = String::from_utf8(strip_byte(s.as_bytes()).to_vec()).unwrap();
+ assert_eq!(expected, actual);
+ }
+ }
+}
diff --git a/vendor/anstream-0.5.0/src/adapter/wincon.rs b/vendor/anstream-0.5.0/src/adapter/wincon.rs
new file mode 100644
index 000000000..71edc4cf5
--- /dev/null
+++ b/vendor/anstream-0.5.0/src/adapter/wincon.rs
@@ -0,0 +1,304 @@
+/// Incrementally convert to wincon calls for non-contiguous data
+#[derive(Default, Clone, Debug, PartialEq, Eq)]
+pub struct WinconBytes {
+ parser: anstyle_parse::Parser,
+ capture: WinconCapture,
+}
+
+impl WinconBytes {
+ /// Initial state
+ pub fn new() -> Self {
+ Default::default()
+ }
+
+ /// Strip the next segment of data
+ pub fn extract_next<'s>(&'s mut self, bytes: &'s [u8]) -> WinconBytesIter<'s> {
+ self.capture.reset();
+ self.capture.printable.reserve(bytes.len());
+ WinconBytesIter {
+ bytes,
+ parser: &mut self.parser,
+ capture: &mut self.capture,
+ }
+ }
+}
+
+/// See [`WinconBytes`]
+#[derive(Debug, PartialEq, Eq)]
+pub struct WinconBytesIter<'s> {
+ bytes: &'s [u8],
+ parser: &'s mut anstyle_parse::Parser,
+ capture: &'s mut WinconCapture,
+}
+
+impl<'s> Iterator for WinconBytesIter<'s> {
+ type Item = (anstyle::Style, String);
+
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ next_bytes(&mut self.bytes, self.parser, self.capture)
+ }
+}
+
+#[inline]
+fn next_bytes(
+ bytes: &mut &[u8],
+ parser: &mut anstyle_parse::Parser,
+ capture: &mut WinconCapture,
+) -> Option<(anstyle::Style, String)> {
+ capture.reset();
+ while capture.ready.is_none() {
+ let byte = if let Some((byte, remainder)) = (*bytes).split_first() {
+ *bytes = remainder;
+ *byte
+ } else {
+ break;
+ };
+ parser.advance(capture, byte);
+ }
+ if capture.printable.is_empty() {
+ return None;
+ }
+
+ let style = capture.ready.unwrap_or(capture.style);
+ Some((style, std::mem::take(&mut capture.printable)))
+}
+
+#[derive(Default, Clone, Debug, PartialEq, Eq)]
+struct WinconCapture {
+ style: anstyle::Style,
+ printable: String,
+ ready: Option<anstyle::Style>,
+}
+
+impl WinconCapture {
+ fn reset(&mut self) {
+ self.ready = None;
+ }
+}
+
+impl anstyle_parse::Perform for WinconCapture {
+ /// Draw a character to the screen and update states.
+ fn print(&mut self, c: char) {
+ self.printable.push(c);
+ }
+
+ /// Execute a C0 or C1 control function.
+ fn execute(&mut self, byte: u8) {
+ if byte.is_ascii_whitespace() {
+ self.printable.push(byte as char);
+ }
+ }
+
+ fn csi_dispatch(
+ &mut self,
+ params: &anstyle_parse::Params,
+ _intermediates: &[u8],
+ ignore: bool,
+ action: u8,
+ ) {
+ if ignore {
+ return;
+ }
+ if action != b'm' {
+ return;
+ }
+
+ let mut style = self.style;
+ for param in params {
+ let mut state = State::Normal;
+ let mut r = None;
+ let mut g = None;
+ let mut is_bg = false;
+ for value in param {
+ match (state, *value) {
+ (State::Normal, 0) => {
+ style = anstyle::Style::default();
+ break;
+ }
+ (State::Normal, 1) => {
+ style = style.bold();
+ break;
+ }
+ (State::Normal, 4) => {
+ style = style.underline();
+ break;
+ }
+ (State::Normal, 30..=37) => {
+ let color = to_ansi_color(value - 30).unwrap();
+ style = style.fg_color(Some(color.into()));
+ break;
+ }
+ (State::Normal, 38) => {
+ is_bg = false;
+ state = State::PrepareCustomColor;
+ }
+ (State::Normal, 39) => {
+ style = style.fg_color(None);
+ break;
+ }
+ (State::Normal, 40..=47) => {
+ let color = to_ansi_color(value - 40).unwrap();
+ style = style.bg_color(Some(color.into()));
+ break;
+ }
+ (State::Normal, 48) => {
+ is_bg = true;
+ state = State::PrepareCustomColor;
+ }
+ (State::Normal, 49) => {
+ style = style.bg_color(None);
+ break;
+ }
+ (State::Normal, 90..=97) => {
+ let color = to_ansi_color(value - 90).unwrap().bright(true);
+ style = style.fg_color(Some(color.into()));
+ break;
+ }
+ (State::Normal, 100..=107) => {
+ let color = to_ansi_color(value - 100).unwrap().bright(true);
+ style = style.bg_color(Some(color.into()));
+ break;
+ }
+ (State::PrepareCustomColor, 5) => {
+ state = State::Ansi256;
+ }
+ (State::PrepareCustomColor, 2) => {
+ state = State::Rgb;
+ r = None;
+ g = None;
+ }
+ (State::Ansi256, n) => {
+ let color = anstyle::Ansi256Color(n as u8);
+ if is_bg {
+ style = style.bg_color(Some(color.into()));
+ } else {
+ style = style.fg_color(Some(color.into()));
+ }
+ break;
+ }
+ (State::Rgb, b) => match (r, g) {
+ (None, _) => {
+ r = Some(b);
+ }
+ (Some(_), None) => {
+ g = Some(b);
+ }
+ (Some(r), Some(g)) => {
+ let color = anstyle::RgbColor(r as u8, g as u8, b as u8);
+ if is_bg {
+ style = style.bg_color(Some(color.into()));
+ } else {
+ style = style.fg_color(Some(color.into()));
+ }
+ break;
+ }
+ },
+ _ => {
+ break;
+ }
+ }
+ }
+ }
+
+ if style != self.style && !self.printable.is_empty() {
+ self.ready = Some(self.style);
+ }
+ self.style = style;
+ }
+}
+
+#[derive(Copy, Clone, PartialEq, Eq, Debug)]
+enum State {
+ Normal,
+ PrepareCustomColor,
+ Ansi256,
+ Rgb,
+}
+
+fn to_ansi_color(digit: u16) -> Option<anstyle::AnsiColor> {
+ match digit {
+ 0 => Some(anstyle::AnsiColor::Black),
+ 1 => Some(anstyle::AnsiColor::Red),
+ 2 => Some(anstyle::AnsiColor::Green),
+ 3 => Some(anstyle::AnsiColor::Yellow),
+ 4 => Some(anstyle::AnsiColor::Blue),
+ 5 => Some(anstyle::AnsiColor::Magenta),
+ 6 => Some(anstyle::AnsiColor::Cyan),
+ 7 => Some(anstyle::AnsiColor::White),
+ _ => None,
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use super::*;
+ use owo_colors::OwoColorize as _;
+ use proptest::prelude::*;
+
+ #[track_caller]
+ fn verify(input: &str, expected: Vec<(anstyle::Style, &str)>) {
+ let expected = expected
+ .into_iter()
+ .map(|(style, value)| (style, value.to_owned()))
+ .collect::<Vec<_>>();
+ let mut state = WinconBytes::new();
+ let actual = state.extract_next(input.as_bytes()).collect::<Vec<_>>();
+ assert_eq!(expected, actual);
+ }
+
+ #[test]
+ fn start() {
+ let input = format!("{} world!", "Hello".green().on_red());
+ let expected = vec![
+ (
+ anstyle::AnsiColor::Green.on(anstyle::AnsiColor::Red),
+ "Hello",
+ ),
+ (anstyle::Style::default(), " world!"),
+ ];
+ verify(&input, expected);
+ }
+
+ #[test]
+ fn middle() {
+ let input = format!("Hello {}!", "world".green().on_red());
+ let expected = vec![
+ (anstyle::Style::default(), "Hello "),
+ (
+ anstyle::AnsiColor::Green.on(anstyle::AnsiColor::Red),
+ "world",
+ ),
+ (anstyle::Style::default(), "!"),
+ ];
+ verify(&input, expected);
+ }
+
+ #[test]
+ fn end() {
+ let input = format!("Hello {}", "world!".green().on_red());
+ let expected = vec![
+ (anstyle::Style::default(), "Hello "),
+ (
+ anstyle::AnsiColor::Green.on(anstyle::AnsiColor::Red),
+ "world!",
+ ),
+ ];
+ verify(&input, expected);
+ }
+
+ proptest! {
+ #[test]
+ #[cfg_attr(miri, ignore)] // See https://github.com/AltSysrq/proptest/issues/253
+ fn wincon_no_escapes(s in "\\PC*") {
+ let expected = if s.is_empty() {
+ vec![]
+ } else {
+ vec![(anstyle::Style::default(), s.clone())]
+ };
+ let mut state = WinconBytes::new();
+ let actual = state.extract_next(s.as_bytes()).collect::<Vec<_>>();
+ assert_eq!(expected, actual);
+ }
+ }
+}
diff --git a/vendor/anstream-0.5.0/src/auto.rs b/vendor/anstream-0.5.0/src/auto.rs
new file mode 100644
index 000000000..969a8da99
--- /dev/null
+++ b/vendor/anstream-0.5.0/src/auto.rs
@@ -0,0 +1,268 @@
+#[cfg(feature = "auto")]
+use crate::ColorChoice;
+use crate::IsTerminal;
+use crate::Lockable;
+use crate::RawStream;
+use crate::StripStream;
+#[cfg(all(windows, feature = "wincon"))]
+use crate::WinconStream;
+
+/// [`std::io::Write`] that adapts ANSI escape codes to the underlying `Write`s capabilities
+#[derive(Debug)]
+pub struct AutoStream<S: RawStream> {
+ inner: StreamInner<S>,
+}
+
+#[derive(Debug)]
+enum StreamInner<S: RawStream> {
+ PassThrough(S),
+ Strip(StripStream<S>),
+ #[cfg(all(windows, feature = "wincon"))]
+ Wincon(WinconStream<S>),
+}
+
+impl<S> AutoStream<S>
+where
+ S: RawStream,
+{
+ /// Runtime control over styling behavior
+ #[cfg(feature = "auto")]
+ #[inline]
+ pub fn new(raw: S, choice: ColorChoice) -> Self {
+ match choice {
+ ColorChoice::Auto => Self::auto(raw),
+ ColorChoice::AlwaysAnsi => Self::always_ansi(raw),
+ ColorChoice::Always => Self::always(raw),
+ ColorChoice::Never => Self::never(raw),
+ }
+ }
+
+ /// Auto-adapt for the stream's capabilities
+ #[cfg(feature = "auto")]
+ #[inline]
+ pub fn auto(raw: S) -> Self {
+ let choice = Self::choice(&raw);
+ debug_assert_ne!(choice, ColorChoice::Auto);
+ Self::new(raw, choice)
+ }
+
+ /// Report the desired choice for the given stream
+ #[cfg(feature = "auto")]
+ pub fn choice(raw: &S) -> ColorChoice {
+ choice(raw)
+ }
+
+ /// Force ANSI escape codes to be passed through as-is, no matter what the inner `Write`
+ /// supports.
+ #[inline]
+ pub fn always_ansi(raw: S) -> Self {
+ #[cfg(feature = "auto")]
+ {
+ if raw.is_terminal() {
+ let _ = anstyle_query::windows::enable_ansi_colors();
+ }
+ }
+ Self::always_ansi_(raw)
+ }
+
+ #[inline]
+ fn always_ansi_(raw: S) -> Self {
+ let inner = StreamInner::PassThrough(raw);
+ AutoStream { inner }
+ }
+
+ /// Force color, no matter what the inner `Write` supports.
+ #[inline]
+ pub fn always(raw: S) -> Self {
+ if cfg!(windows) {
+ #[cfg(feature = "auto")]
+ let use_wincon = raw.is_terminal()
+ && !anstyle_query::windows::enable_ansi_colors().unwrap_or(true)
+ && !anstyle_query::term_supports_ansi_color();
+ #[cfg(not(feature = "auto"))]
+ let use_wincon = true;
+ if use_wincon {
+ Self::wincon(raw).unwrap_or_else(|raw| Self::always_ansi_(raw))
+ } else {
+ Self::always_ansi_(raw)
+ }
+ } else {
+ Self::always_ansi(raw)
+ }
+ }
+
+ /// Only pass printable data to the inner `Write`.
+ #[inline]
+ pub fn never(raw: S) -> Self {
+ let inner = StreamInner::Strip(StripStream::new(raw));
+ AutoStream { inner }
+ }
+
+ #[inline]
+ fn wincon(raw: S) -> Result<Self, S> {
+ #[cfg(all(windows, feature = "wincon"))]
+ {
+ let console = anstyle_wincon::Console::new(raw)?;
+ Ok(Self {
+ inner: StreamInner::Wincon(WinconStream::new(console)),
+ })
+ }
+ #[cfg(not(all(windows, feature = "wincon")))]
+ {
+ Err(raw)
+ }
+ }
+
+ /// Get the wrapped [`RawStream`]
+ #[inline]
+ pub fn into_inner(self) -> S {
+ match self.inner {
+ StreamInner::PassThrough(w) => w,
+ StreamInner::Strip(w) => w.into_inner(),
+ #[cfg(all(windows, feature = "wincon"))]
+ StreamInner::Wincon(w) => w.into_inner().into_inner(),
+ }
+ }
+
+ #[inline]
+ #[cfg(feature = "auto")]
+ pub fn is_terminal(&self) -> bool {
+ match &self.inner {
+ StreamInner::PassThrough(w) => w.is_terminal(),
+ StreamInner::Strip(w) => w.is_terminal(),
+ #[cfg(all(windows, feature = "wincon"))]
+ StreamInner::Wincon(_) => true, // its only ever a terminal
+ }
+ }
+}
+
+#[cfg(feature = "auto")]
+fn choice(raw: &dyn RawStream) -> ColorChoice {
+ let choice = ColorChoice::global();
+ match choice {
+ ColorChoice::Auto => {
+ let clicolor = anstyle_query::clicolor();
+ let clicolor_enabled = clicolor.unwrap_or(false);
+ let clicolor_disabled = !clicolor.unwrap_or(true);
+ if raw.is_terminal()
+ && !anstyle_query::no_color()
+ && !clicolor_disabled
+ && (anstyle_query::term_supports_color()
+ || clicolor_enabled
+ || anstyle_query::is_ci())
+ || anstyle_query::clicolor_force()
+ {
+ ColorChoice::Always
+ } else {
+ ColorChoice::Never
+ }
+ }
+ ColorChoice::AlwaysAnsi | ColorChoice::Always | ColorChoice::Never => choice,
+ }
+}
+
+#[cfg(feature = "auto")]
+impl<S> IsTerminal for AutoStream<S>
+where
+ S: RawStream,
+{
+ #[inline]
+ fn is_terminal(&self) -> bool {
+ self.is_terminal()
+ }
+}
+
+impl AutoStream<std::io::Stdout> {
+ /// Get exclusive access to the `AutoStream`
+ ///
+ /// Why?
+ /// - Faster performance when writing in a loop
+ /// - Avoid other threads interleaving output with the current thread
+ #[inline]
+ pub fn lock(self) -> <Self as Lockable>::Locked {
+ let inner = match self.inner {
+ StreamInner::PassThrough(w) => StreamInner::PassThrough(w.lock()),
+ StreamInner::Strip(w) => StreamInner::Strip(w.lock()),
+ #[cfg(all(windows, feature = "wincon"))]
+ StreamInner::Wincon(w) => StreamInner::Wincon(w.lock()),
+ };
+ AutoStream { inner }
+ }
+}
+
+impl AutoStream<std::io::Stderr> {
+ /// Get exclusive access to the `AutoStream`
+ ///
+ /// Why?
+ /// - Faster performance when writing in a loop
+ /// - Avoid other threads interleaving output with the current thread
+ #[inline]
+ pub fn lock(self) -> <Self as Lockable>::Locked {
+ let inner = match self.inner {
+ StreamInner::PassThrough(w) => StreamInner::PassThrough(w.lock()),
+ StreamInner::Strip(w) => StreamInner::Strip(w.lock()),
+ #[cfg(all(windows, feature = "wincon"))]
+ StreamInner::Wincon(w) => StreamInner::Wincon(w.lock()),
+ };
+ AutoStream { inner }
+ }
+}
+
+impl<S> std::io::Write for AutoStream<S>
+where
+ S: RawStream,
+{
+ #[inline]
+ fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
+ match &mut self.inner {
+ StreamInner::PassThrough(w) => w.write(buf),
+ StreamInner::Strip(w) => w.write(buf),
+ #[cfg(all(windows, feature = "wincon"))]
+ StreamInner::Wincon(w) => w.write(buf),
+ }
+ }
+
+ #[inline]
+ fn flush(&mut self) -> std::io::Result<()> {
+ match &mut self.inner {
+ StreamInner::PassThrough(w) => w.flush(),
+ StreamInner::Strip(w) => w.flush(),
+ #[cfg(all(windows, feature = "wincon"))]
+ StreamInner::Wincon(w) => w.flush(),
+ }
+ }
+
+ // Provide explicit implementations of trait methods
+ // - To reduce bookkeeping
+ // - Avoid acquiring / releasing locks in a loop
+
+ #[inline]
+ fn write_all(&mut self, buf: &[u8]) -> std::io::Result<()> {
+ match &mut self.inner {
+ StreamInner::PassThrough(w) => w.write_all(buf),
+ StreamInner::Strip(w) => w.write_all(buf),
+ #[cfg(all(windows, feature = "wincon"))]
+ StreamInner::Wincon(w) => w.write_all(buf),
+ }
+ }
+
+ // Not bothering with `write_fmt` as it just calls `write_all`
+}
+
+impl Lockable for AutoStream<std::io::Stdout> {
+ type Locked = AutoStream<<std::io::Stdout as Lockable>::Locked>;
+
+ #[inline]
+ fn lock(self) -> Self::Locked {
+ self.lock()
+ }
+}
+
+impl Lockable for AutoStream<std::io::Stderr> {
+ type Locked = AutoStream<<std::io::Stderr as Lockable>::Locked>;
+
+ #[inline]
+ fn lock(self) -> Self::Locked {
+ self.lock()
+ }
+}
diff --git a/vendor/anstream-0.5.0/src/buffer.rs b/vendor/anstream-0.5.0/src/buffer.rs
new file mode 100644
index 000000000..e635687c9
--- /dev/null
+++ b/vendor/anstream-0.5.0/src/buffer.rs
@@ -0,0 +1,77 @@
+use crate::IsTerminal;
+
+/// In-memory [`RawStream`][crate::RawStream]
+#[derive(Clone, Default, Debug, PartialEq, Eq)]
+pub struct Buffer(Vec<u8>);
+
+impl Buffer {
+ #[inline]
+ pub fn new() -> Self {
+ Default::default()
+ }
+
+ #[inline]
+ pub fn with_capacity(capacity: usize) -> Self {
+ Self(Vec::with_capacity(capacity))
+ }
+
+ #[inline]
+ pub fn as_bytes(&self) -> &[u8] {
+ &self.0
+ }
+}
+
+impl AsRef<[u8]> for Buffer {
+ #[inline]
+ fn as_ref(&self) -> &[u8] {
+ self.as_bytes()
+ }
+}
+
+impl IsTerminal for Buffer {
+ #[inline]
+ fn is_terminal(&self) -> bool {
+ false
+ }
+}
+
+impl std::io::Write for Buffer {
+ #[inline]
+ fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
+ self.0.extend(buf);
+ Ok(buf.len())
+ }
+
+ #[inline]
+ fn flush(&mut self) -> std::io::Result<()> {
+ Ok(())
+ }
+}
+
+#[cfg(all(windows, feature = "wincon"))]
+impl anstyle_wincon::WinconStream for Buffer {
+ fn set_colors(
+ &mut self,
+ fg: Option<anstyle::AnsiColor>,
+ bg: Option<anstyle::AnsiColor>,
+ ) -> std::io::Result<()> {
+ use std::io::Write as _;
+
+ if let Some(fg) = fg {
+ write!(self, "{}", fg.render_fg())?;
+ }
+ if let Some(bg) = bg {
+ write!(self, "{}", bg.render_bg())?;
+ }
+ if fg.is_none() && bg.is_none() {
+ write!(self, "{}", anstyle::Reset.render())?;
+ }
+ Ok(())
+ }
+
+ fn get_colors(
+ &self,
+ ) -> std::io::Result<(Option<anstyle::AnsiColor>, Option<anstyle::AnsiColor>)> {
+ Ok((None, None))
+ }
+}
diff --git a/vendor/anstream-0.5.0/src/is_terminal.rs b/vendor/anstream-0.5.0/src/is_terminal.rs
new file mode 100644
index 000000000..840f851d2
--- /dev/null
+++ b/vendor/anstream-0.5.0/src/is_terminal.rs
@@ -0,0 +1,70 @@
+pub trait IsTerminal {
+ fn is_terminal(&self) -> bool;
+}
+
+impl IsTerminal for std::io::Stdout {
+ #[inline]
+ fn is_terminal(&self) -> bool {
+ std::io::IsTerminal::is_terminal(self)
+ }
+}
+
+impl IsTerminal for std::io::StdoutLock<'static> {
+ #[inline]
+ fn is_terminal(&self) -> bool {
+ std::io::IsTerminal::is_terminal(self)
+ }
+}
+
+impl IsTerminal for std::io::Stderr {
+ #[inline]
+ fn is_terminal(&self) -> bool {
+ std::io::IsTerminal::is_terminal(self)
+ }
+}
+
+impl IsTerminal for std::io::StderrLock<'static> {
+ #[inline]
+ fn is_terminal(&self) -> bool {
+ std::io::IsTerminal::is_terminal(self)
+ }
+}
+
+#[cfg(all(windows, feature = "wincon"))]
+impl IsTerminal for anstyle_wincon::Console<std::io::Stdout> {
+ #[inline]
+ fn is_terminal(&self) -> bool {
+ self.is_terminal()
+ }
+}
+
+#[cfg(all(windows, feature = "wincon"))]
+impl IsTerminal for anstyle_wincon::Console<std::io::StdoutLock<'static>> {
+ #[inline]
+ fn is_terminal(&self) -> bool {
+ self.is_terminal()
+ }
+}
+
+#[cfg(all(windows, feature = "wincon"))]
+impl IsTerminal for anstyle_wincon::Console<std::io::Stderr> {
+ #[inline]
+ fn is_terminal(&self) -> bool {
+ self.is_terminal()
+ }
+}
+
+#[cfg(all(windows, feature = "wincon"))]
+impl IsTerminal for anstyle_wincon::Console<std::io::StderrLock<'static>> {
+ #[inline]
+ fn is_terminal(&self) -> bool {
+ self.is_terminal()
+ }
+}
+
+impl IsTerminal for std::fs::File {
+ #[inline]
+ fn is_terminal(&self) -> bool {
+ std::io::IsTerminal::is_terminal(self)
+ }
+}
diff --git a/vendor/anstream-0.5.0/src/lib.rs b/vendor/anstream-0.5.0/src/lib.rs
new file mode 100644
index 000000000..1799c16bc
--- /dev/null
+++ b/vendor/anstream-0.5.0/src/lib.rs
@@ -0,0 +1,81 @@
+//! **Auto-adapting [`stdout`] / [`stderr`] streams**
+//!
+//! *A portmanteau of "ansi stream"*
+//!
+//! [`AutoStream`] always accepts [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code),
+//! adapting to the user's terminal's capabilities.
+//!
+//! Benefits
+//! - Allows the caller to not be concerned with the terminal's capabilities
+//! - Semver safe way of passing styled text between crates as ANSI escape codes offer more
+//! compatibility than most crate APIs.
+//!
+//! Available styling crates:
+//! - [anstyle](https://docs.rs/anstyle) for minimal runtime styling, designed to go in public APIs
+//! (once it hits 1.0)
+//! - [owo-colors](https://docs.rs/owo-colors) for feature-rich runtime styling
+//! - [color-print](https://docs.rs/color-print) for feature-rich compile-time styling
+//!
+//! # Example
+//!
+//! ```
+//! # #[cfg(feature = "auto")] {
+//! use anstream::println;
+//! use owo_colors::OwoColorize as _;
+//!
+//! // Foreground colors
+//! println!("My number is {:#x}!", 10.green());
+//! // Background colors
+//! println!("My number is not {}!", 4.on_red());
+//! # }
+//! ```
+//!
+//! And this will correctly handle piping to a file, etc
+
+#![cfg_attr(docsrs, feature(doc_auto_cfg))]
+
+pub mod adapter;
+mod buffer;
+#[macro_use]
+mod macros;
+mod auto;
+mod is_terminal;
+mod lockable;
+mod raw;
+mod strip;
+#[cfg(all(windows, feature = "wincon"))]
+mod wincon;
+
+pub use auto::AutoStream;
+pub use is_terminal::IsTerminal;
+pub use lockable::Lockable;
+pub use raw::RawStream;
+pub use strip::StripStream;
+#[cfg(all(windows, feature = "wincon"))]
+pub use wincon::WinconStream;
+
+pub use buffer::Buffer;
+
+/// Create an ANSI escape code compatible stdout
+///
+/// **Note:** Call [`AutoStream::lock`] in loops to avoid the performance hit of acquiring/releasing
+/// from the implicit locking in each [`std::io::Write`] call
+#[cfg(feature = "auto")]
+pub fn stdout() -> AutoStream<std::io::Stdout> {
+ let stdout = std::io::stdout();
+ AutoStream::auto(stdout)
+}
+
+/// Create an ANSI escape code compatible stderr
+///
+/// **Note:** Call [`AutoStream::lock`] in loops to avoid the performance hit of acquiring/releasing
+/// from the implicit locking in each [`std::io::Write`] call
+#[cfg(feature = "auto")]
+pub fn stderr() -> AutoStream<std::io::Stderr> {
+ let stderr = std::io::stderr();
+ AutoStream::auto(stderr)
+}
+
+/// Selection for overriding color output
+#[cfg(feature = "auto")]
+pub use colorchoice::ColorChoice;
diff --git a/vendor/anstream-0.5.0/src/lockable.rs b/vendor/anstream-0.5.0/src/lockable.rs
new file mode 100644
index 000000000..19d06a01b
--- /dev/null
+++ b/vendor/anstream-0.5.0/src/lockable.rs
@@ -0,0 +1,51 @@
+/// Explicitly lock a [`std::io::Write`]able
+pub trait Lockable {
+ type Locked;
+
+ /// Get exclusive access to the `AutoStream`
+ ///
+ /// Why?
+ /// - Faster performance when writing in a loop
+ /// - Avoid other threads interleaving output with the current thread
+ fn lock(self) -> Self::Locked;
+}
+
+impl Lockable for std::io::Stdout {
+ type Locked = std::io::StdoutLock<'static>;
+
+ #[inline]
+ fn lock(self) -> Self::Locked {
+ #[allow(clippy::needless_borrow)] // Its needed to avoid recursion
+ (&self).lock()
+ }
+}
+
+impl Lockable for std::io::Stderr {
+ type Locked = std::io::StderrLock<'static>;
+
+ #[inline]
+ fn lock(self) -> Self::Locked {
+ #[allow(clippy::needless_borrow)] // Its needed to avoid recursion
+ (&self).lock()
+ }
+}
+
+#[cfg(all(windows, feature = "wincon"))]
+impl Lockable for anstyle_wincon::Console<std::io::Stdout> {
+ type Locked = anstyle_wincon::Console<std::io::StdoutLock<'static>>;
+
+ #[inline]
+ fn lock(self) -> Self::Locked {
+ self.lock()
+ }
+}
+
+#[cfg(all(windows, feature = "wincon"))]
+impl Lockable for anstyle_wincon::Console<std::io::Stderr> {
+ type Locked = anstyle_wincon::Console<std::io::StderrLock<'static>>;
+
+ #[inline]
+ fn lock(self) -> Self::Locked {
+ self.lock()
+ }
+}
diff --git a/vendor/anstream-0.5.0/src/macros.rs b/vendor/anstream-0.5.0/src/macros.rs
new file mode 100644
index 000000000..ea9095944
--- /dev/null
+++ b/vendor/anstream-0.5.0/src/macros.rs
@@ -0,0 +1,313 @@
+/// Prints to [`stdout`][crate::stdout].
+///
+/// Equivalent to the [`println!`] macro except that a newline is not printed at
+/// the end of the message.
+///
+/// Note that stdout is frequently line-buffered by default so it may be
+/// necessary to use [`std::io::Write::flush()`] to ensure the output is emitted
+/// immediately.
+///
+/// **NOTE:** The `print!` macro will lock the standard output on each call. If you call
+/// `print!` within a hot loop, this behavior may be the bottleneck of the loop.
+/// To avoid this, lock stdout with [`AutoStream::lock`][crate::AutoStream::lock]:
+/// ```
+/// # #[cfg(feature = "auto")] {
+/// use std::io::Write as _;
+///
+/// let mut lock = anstream::stdout().lock();
+/// write!(lock, "hello world").unwrap();
+/// # }
+/// ```
+///
+/// Use `print!` only for the primary output of your program. Use
+/// [`eprint!`] instead to print error and progress messages.
+///
+/// # Panics
+///
+/// Panics if writing to `stdout` fails for any reason **except** broken pipe.
+///
+/// Writing to non-blocking stdout can cause an error, which will lead
+/// this macro to panic.
+///
+/// # Examples
+///
+/// ```
+/// # #[cfg(feature = "auto")] {
+/// use std::io::Write as _;
+/// use anstream::print;
+/// use anstream::stdout;
+///
+/// print!("this ");
+/// print!("will ");
+/// print!("be ");
+/// print!("on ");
+/// print!("the ");
+/// print!("same ");
+/// print!("line ");
+///
+/// stdout().flush().unwrap();
+///
+/// print!("this string has a newline, why not choose println! instead?\n");
+///
+/// stdout().flush().unwrap();
+/// # }
+/// ```
+#[cfg(feature = "auto")]
+#[macro_export]
+macro_rules! print {
+ ($($arg:tt)*) => {{
+ use std::io::Write as _;
+
+ let mut stream = $crate::stdout();
+ match ::std::write!(&mut stream, $($arg)*) {
+ Err(e) if e.kind() != ::std::io::ErrorKind::BrokenPipe => {
+ ::std::panic!("failed printing to stdout: {e}");
+ }
+ Err(_) | Ok(_) => {}
+ }
+ }};
+}
+
+/// Prints to [`stdout`][crate::stdout], with a newline.
+///
+/// On all platforms, the newline is the LINE FEED character (`\n`/`U+000A`) alone
+/// (no additional CARRIAGE RETURN (`\r`/`U+000D`)).
+///
+/// This macro uses the same syntax as [`format!`], but writes to the standard output instead.
+/// See [`std::fmt`] for more information.
+///
+/// **NOTE:** The `println!` macro will lock the standard output on each call. If you call
+/// `println!` within a hot loop, this behavior may be the bottleneck of the loop.
+/// To avoid this, lock stdout with [`AutoStream::lock`][crate::AutoStream::lock]:
+/// ```
+/// # #[cfg(feature = "auto")] {
+/// use std::io::Write as _;
+///
+/// let mut lock = anstream::stdout().lock();
+/// writeln!(lock, "hello world").unwrap();
+/// # }
+/// ```
+///
+/// Use `println!` only for the primary output of your program. Use
+/// [`eprintln!`] instead to print error and progress messages.
+///
+/// # Panics
+///
+/// Panics if writing to `stdout` fails for any reason **except** broken pipe.
+///
+/// Writing to non-blocking stdout can cause an error, which will lead
+/// this macro to panic.
+///
+/// # Examples
+///
+/// ```
+/// # #[cfg(feature = "auto")] {
+/// use anstream::println;
+///
+/// println!(); // prints just a newline
+/// println!("hello there!");
+/// println!("format {} arguments", "some");
+/// let local_variable = "some";
+/// println!("format {local_variable} arguments");
+/// # }
+/// ```
+#[cfg(feature = "auto")]
+#[macro_export]
+macro_rules! println {
+ () => {
+ $crate::print!("\n")
+ };
+ ($($arg:tt)*) => {{
+ use std::io::Write as _;
+
+ let mut stream = $crate::stdout();
+ match ::std::writeln!(&mut stream, $($arg)*) {
+ Err(e) if e.kind() != ::std::io::ErrorKind::BrokenPipe => {
+ ::std::panic!("failed printing to stdout: {e}");
+ }
+ Err(_) | Ok(_) => {}
+ }
+ }};
+}
+
+/// Prints to [`stderr`][crate::stderr].
+///
+/// Equivalent to the [`print!`] macro, except that output goes to
+/// `stderr` instead of `stdout`. See [`print!`] for
+/// example usage.
+///
+/// Use `eprint!` only for error and progress messages. Use `print!`
+/// instead for the primary output of your program.
+///
+/// # Panics
+///
+/// Panics if writing to `stderr` fails for any reason **except** broken pipe.
+///
+/// Writing to non-blocking stdout can cause an error, which will lead
+/// this macro to panic.
+///
+/// # Examples
+///
+/// ```
+/// # #[cfg(feature = "auto")] {
+/// use anstream::eprint;
+///
+/// eprint!("Error: Could not complete task");
+/// # }
+/// ```
+#[cfg(feature = "auto")]
+#[macro_export]
+macro_rules! eprint {
+ ($($arg:tt)*) => {{
+ use std::io::Write as _;
+
+ let mut stream = $crate::stderr();
+ match ::std::write!(&mut stream, $($arg)*) {
+ Err(e) if e.kind() != ::std::io::ErrorKind::BrokenPipe => {
+ ::std::panic!("failed printing to stdout: {e}");
+ }
+ Err(_) | Ok(_) => {}
+ }
+ }};
+}
+
+/// Prints to [`stderr`][crate::stderr], with a newline.
+///
+/// Equivalent to the [`println!`] macro, except that output goes to
+/// `stderr` instead of `stdout`. See [`println!`] for
+/// example usage.
+///
+/// Use `eprintln!` only for error and progress messages. Use `println!`
+/// instead for the primary output of your program.
+///
+/// # Panics
+///
+/// Panics if writing to `stderr` fails for any reason **except** broken pipe.
+///
+/// Writing to non-blocking stdout can cause an error, which will lead
+/// this macro to panic.
+///
+/// # Examples
+///
+/// ```
+/// # #[cfg(feature = "auto")] {
+/// use anstream::eprintln;
+///
+/// eprintln!("Error: Could not complete task");
+/// # }
+/// ```
+#[cfg(feature = "auto")]
+#[macro_export]
+macro_rules! eprintln {
+ () => {
+ $crate::eprint!("\n")
+ };
+ ($($arg:tt)*) => {{
+ use std::io::Write as _;
+
+ let mut stream = $crate::stderr();
+ match ::std::writeln!(&mut stream, $($arg)*) {
+ Err(e) if e.kind() != ::std::io::ErrorKind::BrokenPipe => {
+ ::std::panic!("failed printing to stdout: {e}");
+ }
+ Err(_) | Ok(_) => {}
+ }
+ }};
+}
+
+/// Panics the current thread.
+///
+/// This allows a program to terminate immediately and provide feedback
+/// to the caller of the program.
+///
+/// This macro is the perfect way to assert conditions in example code and in
+/// tests. `panic!` is closely tied with the `unwrap` method of both
+/// [`Option`][ounwrap] and [`Result`][runwrap] enums. Both implementations call
+/// `panic!` when they are set to [`None`] or [`Err`] variants.
+///
+/// When using `panic!()` you can specify a string payload, that is built using
+/// the [`format!`] syntax. That payload is used when injecting the panic into
+/// the calling Rust thread, causing the thread to panic entirely.
+///
+/// The behavior of the default `std` hook, i.e. the code that runs directly
+/// after the panic is invoked, is to print the message payload to
+/// `stderr` along with the file/line/column information of the `panic!()`
+/// call. You can override the panic hook using [`std::panic::set_hook()`].
+/// Inside the hook a panic can be accessed as a `&dyn Any + Send`,
+/// which contains either a `&str` or `String` for regular `panic!()` invocations.
+/// To panic with a value of another other type, [`panic_any`] can be used.
+///
+/// See also the macro [`compile_error!`], for raising errors during compilation.
+///
+/// # When to use `panic!` vs `Result`
+///
+/// The Rust language provides two complementary systems for constructing /
+/// representing, reporting, propagating, reacting to, and discarding errors. These
+/// responsibilities are collectively known as "error handling." `panic!` and
+/// `Result` are similar in that they are each the primary interface of their
+/// respective error handling systems; however, the meaning these interfaces attach
+/// to their errors and the responsibilities they fulfill within their respective
+/// error handling systems differ.
+///
+/// The `panic!` macro is used to construct errors that represent a bug that has
+/// been detected in your program. With `panic!` you provide a message that
+/// describes the bug and the language then constructs an error with that message,
+/// reports it, and propagates it for you.
+///
+/// `Result` on the other hand is used to wrap other types that represent either
+/// the successful result of some computation, `Ok(T)`, or error types that
+/// represent an anticipated runtime failure mode of that computation, `Err(E)`.
+/// `Result` is used alongside user defined types which represent the various
+/// anticipated runtime failure modes that the associated computation could
+/// encounter. `Result` must be propagated manually, often with the the help of the
+/// `?` operator and `Try` trait, and they must be reported manually, often with
+/// the help of the `Error` trait.
+///
+/// For more detailed information about error handling check out the [book] or the
+/// [`std::result`] module docs.
+///
+/// [ounwrap]: Option::unwrap
+/// [runwrap]: Result::unwrap
+/// [`std::panic::set_hook()`]: ../std/panic/fn.set_hook.html
+/// [`panic_any`]: ../std/panic/fn.panic_any.html
+/// [`Box`]: ../std/boxed/struct.Box.html
+/// [`Any`]: crate::any::Any
+/// [`format!`]: ../std/macro.format.html
+/// [book]: ../book/ch09-00-error-handling.html
+/// [`std::result`]: ../std/result/index.html
+///
+/// # Current implementation
+///
+/// If the main thread panics it will terminate all your threads and end your
+/// program with code `101`.
+///
+/// # Examples
+///
+/// ```should_panic
+/// # #![allow(unreachable_code)]
+/// use anstream::panic;
+/// panic!();
+/// panic!("this is a terrible mistake!");
+/// panic!("this is a {} {message}", "fancy", message = "message");
+/// ```
+#[cfg(feature = "auto")]
+#[macro_export]
+macro_rules! panic {
+ () => {
+ ::std::panic!()
+ };
+ ($($arg:tt)*) => {{
+ use std::io::Write as _;
+
+ let panic_stream = std::io::stderr();
+ let choice = $crate::AutoStream::choice(&panic_stream);
+ let buffer = $crate::Buffer::new();
+ let mut stream = $crate::AutoStream::new(buffer, choice);
+ // Ignore errors rather than panic
+ let _ = ::std::write!(&mut stream, $($arg)*);
+ let buffer = stream.into_inner();
+ // Should be UTF-8 but not wanting to panic
+ let buffer = String::from_utf8_lossy(buffer.as_bytes()).into_owned();
+ ::std::panic!("{}", buffer)
+ }};
+}
diff --git a/vendor/anstream-0.5.0/src/raw.rs b/vendor/anstream-0.5.0/src/raw.rs
new file mode 100644
index 000000000..4a54b400b
--- /dev/null
+++ b/vendor/anstream-0.5.0/src/raw.rs
@@ -0,0 +1,40 @@
+use crate::IsTerminal;
+
+/// Required functionality for underlying [`std::io::Write`] for adaptation
+#[cfg(not(all(windows, feature = "wincon")))]
+pub trait RawStream: std::io::Write + IsTerminal + private::Sealed {}
+
+/// Required functionality for underlying [`std::io::Write`] for adaptation
+#[cfg(all(windows, feature = "wincon"))]
+pub trait RawStream:
+ std::io::Write + IsTerminal + anstyle_wincon::WinconStream + private::Sealed
+{
+}
+
+impl RawStream for std::io::Stdout {}
+
+impl RawStream for std::io::StdoutLock<'static> {}
+
+impl RawStream for std::io::Stderr {}
+
+impl RawStream for std::io::StderrLock<'static> {}
+
+impl RawStream for std::fs::File {}
+
+impl RawStream for crate::Buffer {}
+
+mod private {
+ pub trait Sealed {}
+
+ impl Sealed for std::io::Stdout {}
+
+ impl Sealed for std::io::StdoutLock<'static> {}
+
+ impl Sealed for std::io::Stderr {}
+
+ impl Sealed for std::io::StderrLock<'static> {}
+
+ impl Sealed for std::fs::File {}
+
+ impl Sealed for crate::Buffer {}
+}
diff --git a/vendor/anstream-0.5.0/src/strip.rs b/vendor/anstream-0.5.0/src/strip.rs
new file mode 100644
index 000000000..a5b809871
--- /dev/null
+++ b/vendor/anstream-0.5.0/src/strip.rs
@@ -0,0 +1,195 @@
+use crate::adapter::StripBytes;
+use crate::IsTerminal;
+use crate::Lockable;
+use crate::RawStream;
+
+/// Only pass printable data to the inner `Write`
+#[derive(Debug)]
+pub struct StripStream<S> {
+ raw: S,
+ state: StripBytes,
+}
+
+impl<S> StripStream<S>
+where
+ S: RawStream,
+{
+ /// Only pass printable data to the inner `Write`
+ #[inline]
+ pub fn new(raw: S) -> Self {
+ Self {
+ raw,
+ state: Default::default(),
+ }
+ }
+
+ /// Get the wrapped [`RawStream`]
+ #[inline]
+ pub fn into_inner(self) -> S {
+ self.raw
+ }
+
+ #[inline]
+ pub fn is_terminal(&self) -> bool {
+ self.raw.is_terminal()
+ }
+}
+
+impl<S> IsTerminal for StripStream<S>
+where
+ S: RawStream,
+{
+ #[inline]
+ fn is_terminal(&self) -> bool {
+ self.is_terminal()
+ }
+}
+
+impl<S> std::io::Write for StripStream<S>
+where
+ S: RawStream,
+{
+ #[inline]
+ fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
+ write(&mut self.raw, &mut self.state, buf)
+ }
+
+ #[inline]
+ fn flush(&mut self) -> std::io::Result<()> {
+ self.raw.flush()
+ }
+
+ // Provide explicit implementations of trait methods
+ // - To reduce bookkeeping
+ // - Avoid acquiring / releasing locks in a loop
+
+ #[inline]
+ fn write_all(&mut self, buf: &[u8]) -> std::io::Result<()> {
+ write_all(&mut self.raw, &mut self.state, buf)
+ }
+
+ // Not bothering with `write_fmt` as it just calls `write_all`
+}
+
+fn write(
+ raw: &mut dyn std::io::Write,
+ state: &mut StripBytes,
+ buf: &[u8],
+) -> std::io::Result<usize> {
+ let initial_state = state.clone();
+
+ for printable in state.strip_next(buf) {
+ let possible = printable.len();
+ let written = raw.write(printable)?;
+ if possible != written {
+ let divergence = &printable[written..];
+ let offset = offset_to(buf, divergence);
+ let consumed = &buf[offset..];
+ *state = initial_state;
+ state.strip_next(consumed).last();
+ return Ok(offset);
+ }
+ }
+ Ok(buf.len())
+}
+
+fn write_all(
+ raw: &mut dyn std::io::Write,
+ state: &mut StripBytes,
+ buf: &[u8],
+) -> std::io::Result<()> {
+ for printable in state.strip_next(buf) {
+ raw.write_all(printable)?;
+ }
+ Ok(())
+}
+
+#[inline]
+fn offset_to(total: &[u8], subslice: &[u8]) -> usize {
+ let total = total.as_ptr();
+ let subslice = subslice.as_ptr();
+
+ debug_assert!(
+ total <= subslice,
+ "`Offset::offset_to` only accepts slices of `self`"
+ );
+ subslice as usize - total as usize
+}
+
+impl<S> Lockable for StripStream<S>
+where
+ S: Lockable,
+{
+ type Locked = StripStream<<S as Lockable>::Locked>;
+
+ #[inline]
+ fn lock(self) -> Self::Locked {
+ Self::Locked {
+ raw: self.raw.lock(),
+ state: self.state,
+ }
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use super::*;
+ use proptest::prelude::*;
+ use std::io::Write as _;
+
+ proptest! {
+ #[test]
+ #[cfg_attr(miri, ignore)] // See https://github.com/AltSysrq/proptest/issues/253
+ fn write_all_no_escapes(s in "\\PC*") {
+ let buffer = crate::Buffer::new();
+ let mut stream = StripStream::new(buffer);
+ stream.write_all(s.as_bytes()).unwrap();
+ let buffer = stream.into_inner();
+ let actual = std::str::from_utf8(buffer.as_ref()).unwrap();
+ assert_eq!(s, actual);
+ }
+
+ #[test]
+ #[cfg_attr(miri, ignore)] // See https://github.com/AltSysrq/proptest/issues/253
+ fn write_byte_no_escapes(s in "\\PC*") {
+ let buffer = crate::Buffer::new();
+ let mut stream = StripStream::new(buffer);
+ for byte in s.as_bytes() {
+ stream.write_all(&[*byte]).unwrap();
+ }
+ let buffer = stream.into_inner();
+ let actual = std::str::from_utf8(buffer.as_ref()).unwrap();
+ assert_eq!(s, actual);
+ }
+
+ #[test]
+ #[cfg_attr(miri, ignore)] // See https://github.com/AltSysrq/proptest/issues/253
+ fn write_all_random(s in any::<Vec<u8>>()) {
+ let buffer = crate::Buffer::new();
+ let mut stream = StripStream::new(buffer);
+ stream.write_all(s.as_slice()).unwrap();
+ let buffer = stream.into_inner();
+ if let Ok(actual) = std::str::from_utf8(buffer.as_ref()) {
+ for char in actual.chars() {
+ assert!(!char.is_ascii() || !char.is_control() || char.is_ascii_whitespace(), "{:?} -> {:?}: {:?}", String::from_utf8_lossy(&s), actual, char);
+ }
+ }
+ }
+
+ #[test]
+ #[cfg_attr(miri, ignore)] // See https://github.com/AltSysrq/proptest/issues/253
+ fn write_byte_random(s in any::<Vec<u8>>()) {
+ let buffer = crate::Buffer::new();
+ let mut stream = StripStream::new(buffer);
+ for byte in s.as_slice() {
+ stream.write_all(&[*byte]).unwrap();
+ }
+ let buffer = stream.into_inner();
+ if let Ok(actual) = std::str::from_utf8(buffer.as_ref()) {
+ for char in actual.chars() {
+ assert!(!char.is_ascii() || !char.is_control() || char.is_ascii_whitespace(), "{:?} -> {:?}: {:?}", String::from_utf8_lossy(&s), actual, char);
+ }
+ }
+ }
+ }
+}
diff --git a/vendor/anstream-0.5.0/src/wincon.rs b/vendor/anstream-0.5.0/src/wincon.rs
new file mode 100644
index 000000000..8983db860
--- /dev/null
+++ b/vendor/anstream-0.5.0/src/wincon.rs
@@ -0,0 +1,161 @@
+use crate::adapter::WinconBytes;
+use crate::IsTerminal;
+use crate::Lockable;
+use crate::RawStream;
+
+/// Only pass printable data to the inner `Write`
+#[cfg(feature = "wincon")] // here mostly for documentation purposes
+#[derive(Debug)]
+pub struct WinconStream<S>
+where
+ S: RawStream,
+{
+ console: anstyle_wincon::Console<S>,
+ // `WinconBytes` is especially large compared to other variants of `AutoStream`, so boxing it
+ // here so `AutoStream` doesn't have to discard one allocation and create another one when
+ // calling `AutoStream::lock`
+ state: Box<WinconBytes>,
+}
+
+impl<S> WinconStream<S>
+where
+ S: RawStream,
+{
+ /// Only pass printable data to the inner `Write`
+ #[inline]
+ pub fn new(console: anstyle_wincon::Console<S>) -> Self {
+ Self {
+ console,
+ state: Box::default(),
+ }
+ }
+
+ /// Get the wrapped [`RawStream`]
+ #[inline]
+ pub fn into_inner(self) -> anstyle_wincon::Console<S> {
+ self.console
+ }
+
+ #[inline]
+ pub fn is_terminal(&self) -> bool {
+ // HACK: We can't get the console's stream to check but if there is a console, it likely is
+ // a terminal
+ true
+ }
+}
+
+impl<S> IsTerminal for WinconStream<S>
+where
+ S: RawStream,
+{
+ #[inline]
+ fn is_terminal(&self) -> bool {
+ self.is_terminal()
+ }
+}
+
+impl<S> std::io::Write for WinconStream<S>
+where
+ S: RawStream,
+{
+ fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
+ for (style, printable) in self.state.extract_next(buf) {
+ let fg = style.get_fg_color().and_then(cap_wincon_color);
+ let bg = style.get_bg_color().and_then(cap_wincon_color);
+ let written = self.console.write(fg, bg, printable.as_bytes())?;
+ let possible = printable.len();
+ if possible != written {
+ // HACK: Unsupported atm
+ break;
+ }
+ }
+ Ok(buf.len())
+ }
+ #[inline]
+ fn flush(&mut self) -> std::io::Result<()> {
+ self.console.flush()
+ }
+}
+
+impl Lockable for WinconStream<std::io::Stdout> {
+ type Locked = WinconStream<std::io::StdoutLock<'static>>;
+
+ #[inline]
+ fn lock(self) -> Self::Locked {
+ Self::Locked {
+ console: self.console.lock(),
+ state: self.state,
+ }
+ }
+}
+
+impl Lockable for WinconStream<std::io::Stderr> {
+ type Locked = WinconStream<std::io::StderrLock<'static>>;
+
+ #[inline]
+ fn lock(self) -> Self::Locked {
+ Self::Locked {
+ console: self.console.lock(),
+ state: self.state,
+ }
+ }
+}
+
+fn cap_wincon_color(color: anstyle::Color) -> Option<anstyle::AnsiColor> {
+ match color {
+ anstyle::Color::Ansi(c) => Some(c),
+ anstyle::Color::Ansi256(c) => c.into_ansi(),
+ anstyle::Color::Rgb(_) => None,
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use super::*;
+ use proptest::prelude::*;
+ use std::io::Write as _;
+
+ proptest! {
+ #[test]
+ #[cfg_attr(miri, ignore)] // See https://github.com/AltSysrq/proptest/issues/253
+ fn write_all_no_escapes(s in "\\PC*") {
+ let buffer = crate::Buffer::new();
+ let mut stream = WinconStream::new(anstyle_wincon::Console::new(buffer).unwrap());
+ stream.write_all(s.as_bytes()).unwrap();
+ let buffer = stream.into_inner().into_inner();
+ let actual = std::str::from_utf8(buffer.as_ref()).unwrap();
+ assert_eq!(s, actual);
+ }
+
+ #[test]
+ #[cfg_attr(miri, ignore)] // See https://github.com/AltSysrq/proptest/issues/253
+ fn write_byte_no_escapes(s in "\\PC*") {
+ let buffer = crate::Buffer::new();
+ let mut stream = WinconStream::new(anstyle_wincon::Console::new(buffer).unwrap());
+ for byte in s.as_bytes() {
+ stream.write_all(&[*byte]).unwrap();
+ }
+ let buffer = stream.into_inner().into_inner();
+ let actual = std::str::from_utf8(buffer.as_ref()).unwrap();
+ assert_eq!(s, actual);
+ }
+
+ #[test]
+ #[cfg_attr(miri, ignore)] // See https://github.com/AltSysrq/proptest/issues/253
+ fn write_all_random(s in any::<Vec<u8>>()) {
+ let buffer = crate::Buffer::new();
+ let mut stream = WinconStream::new(anstyle_wincon::Console::new(buffer).unwrap());
+ stream.write_all(s.as_slice()).unwrap();
+ }
+
+ #[test]
+ #[cfg_attr(miri, ignore)] // See https://github.com/AltSysrq/proptest/issues/253
+ fn write_byte_random(s in any::<Vec<u8>>()) {
+ let buffer = crate::Buffer::new();
+ let mut stream = WinconStream::new(anstyle_wincon::Console::new(buffer).unwrap());
+ for byte in s.as_slice() {
+ stream.write_all(&[*byte]).unwrap();
+ }
+ }
+ }
+}
diff --git a/vendor/anstream/.cargo-checksum.json b/vendor/anstream/.cargo-checksum.json
index a4d939b43..f3c04a0de 100644
--- a/vendor/anstream/.cargo-checksum.json
+++ b/vendor/anstream/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"5bd2428bd62a91e0f3be5e64d2df8facd8873ddad6ed3eb2335ec7292f09c7ae","LICENSE-APACHE":"c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08","LICENSE-MIT":"6efb0476a1cc085077ed49357026d8c173bf33017278ef440f222fb9cbcb66e6","README.md":"b230c2257d0c7a49b9bd97f2fa73abedcdc055757b5cedd2b0eb1a7a448ff461","benches/stream.rs":"7e666c4f4b79ddb5237361ed25264a966ee241192fbb2c1baea3006e3e0326b4","benches/strip.rs":"9603bd5ca1ae4661c2ccab50315dbfdec0c661ac2624262172bbd8f5d0bd87c9","benches/wincon.rs":"680e86933c008b242a3286c5149c33d3c086426eb99fe134b6e79f7578f96663","src/adapter/mod.rs":"baf4237ea0b18df63609e49d93572ca27c2202a4cbec0220adb5a7e815c7d8ed","src/adapter/strip.rs":"010972f96708c56da9bced98287f134ce43a4f6459c22c1697abdc4fd6f82d00","src/adapter/wincon.rs":"9869aa553c253c49bebc0830628225cd294df8e84837b3952529173b06b24b85","src/auto.rs":"36dafc3aabaff080198f901268d2aa5453cc4b1cd7b93277edf90cad6354cb72","src/buffer.rs":"83e7088b50dd3e2941c06a417d9eef75fda45311a2912ba94f480ec98d6f0183","src/fmt.rs":"cc11b005c4559843bd908a57958a13c8d0922fae6aff5261f3583c90e60da73c","src/lib.rs":"649b86b187835e0e33baaaf2242c5f331b7dff133fae8fc419c52b7add797c57","src/macros.rs":"a26ababe32a39732d0aade9674f6e5e267bd26c6ea06603ff9e61e80681195e0","src/stream.rs":"cbe8f61fba4c3c60934339c8bda5d1ff43320f57cdc4ed409aa173945a941b3d","src/strip.rs":"56e6516283b6c0dfa72a8e0e6679da8424295f50a3e56c44281e76de6aa0344b","src/wincon.rs":"fe5aff7bfd80b14c9a6b07143079d59b81831293ad766b845e46fad2e1459c9a"},"package":"83d7b3983a025adeb201ef26a5564ebd1641ea9851f6282aee4940f745a3c07c"} \ No newline at end of file
+{"files":{"Cargo.toml":"ac89e10e4244511bf48129651d095f676df422dc7c371e55cca0d7b8747b6275","LICENSE-APACHE":"c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08","LICENSE-MIT":"6efb0476a1cc085077ed49357026d8c173bf33017278ef440f222fb9cbcb66e6","README.md":"b230c2257d0c7a49b9bd97f2fa73abedcdc055757b5cedd2b0eb1a7a448ff461","benches/stream.rs":"7e666c4f4b79ddb5237361ed25264a966ee241192fbb2c1baea3006e3e0326b4","benches/strip.rs":"9603bd5ca1ae4661c2ccab50315dbfdec0c661ac2624262172bbd8f5d0bd87c9","benches/wincon.rs":"680e86933c008b242a3286c5149c33d3c086426eb99fe134b6e79f7578f96663","src/adapter/mod.rs":"baf4237ea0b18df63609e49d93572ca27c2202a4cbec0220adb5a7e815c7d8ed","src/adapter/strip.rs":"010972f96708c56da9bced98287f134ce43a4f6459c22c1697abdc4fd6f82d00","src/adapter/wincon.rs":"9869aa553c253c49bebc0830628225cd294df8e84837b3952529173b06b24b85","src/auto.rs":"71c249ab6b0af64c3946817ea9f1719d4b789128c244611a05075b1e13413007","src/buffer.rs":"83e7088b50dd3e2941c06a417d9eef75fda45311a2912ba94f480ec98d6f0183","src/fmt.rs":"cc11b005c4559843bd908a57958a13c8d0922fae6aff5261f3583c90e60da73c","src/lib.rs":"649b86b187835e0e33baaaf2242c5f331b7dff133fae8fc419c52b7add797c57","src/macros.rs":"a26ababe32a39732d0aade9674f6e5e267bd26c6ea06603ff9e61e80681195e0","src/stream.rs":"cbe8f61fba4c3c60934339c8bda5d1ff43320f57cdc4ed409aa173945a941b3d","src/strip.rs":"56e6516283b6c0dfa72a8e0e6679da8424295f50a3e56c44281e76de6aa0344b","src/wincon.rs":"fe5aff7bfd80b14c9a6b07143079d59b81831293ad766b845e46fad2e1459c9a"},"package":"2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44"} \ No newline at end of file
diff --git a/vendor/anstream/Cargo.toml b/vendor/anstream/Cargo.toml
index d60caca19..2919a8b1a 100644
--- a/vendor/anstream/Cargo.toml
+++ b/vendor/anstream/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.70.0"
name = "anstream"
-version = "0.6.3"
+version = "0.6.4"
include = [
"build.rs",
"src/**/*",
diff --git a/vendor/anstream/src/auto.rs b/vendor/anstream/src/auto.rs
index 2b9d361cd..7aaac6ae5 100644
--- a/vendor/anstream/src/auto.rs
+++ b/vendor/anstream/src/auto.rs
@@ -136,6 +136,7 @@ where
///
/// This doesn't report what is requested but what is currently active.
#[inline]
+ #[cfg(feature = "auto")]
pub fn current_choice(&self) -> ColorChoice {
match &self.inner {
StreamInner::PassThrough(_) => ColorChoice::AlwaysAnsi,
diff --git a/vendor/base64/.cargo-checksum.json b/vendor/base64/.cargo-checksum.json
index 22dff2d17..7aab19cee 100644
--- a/vendor/base64/.cargo-checksum.json
+++ b/vendor/base64/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"8b23494504aad8968c998b54d9201489ac9e8d3fa792e7c86fc3c0d9419d5722","Cargo.toml":"d7c38395300d1d122c8cfa70f902469edac765aebbc93d39356c2c634d0dd182","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0dd882e53de11566d50f8e8e2d5a651bcf3fabee4987d70f306233cf39094ba7","README.md":"df01f5b4317d601e7de86743f9818aec9196abf9e298f5e47679b7a966ecd945","RELEASE-NOTES.md":"8dd8a47135cb7660a4dd26fa13be26e97d1b4989ebcd2e0f3e6c35baec0a3821","benches/benchmarks.rs":"faf63c3d83fe1568927288cfcc7f9bd4bd15c6b531450c53d2c064386fc5c652","clippy.toml":"b26be4d15ed059985ce6994f11817fd7562046f46e460a0dc64dbb71cfc246d1","examples/base64.rs":"8c48673029aeeb1e06a2ecfd237acf8ef24349990e97f6d2c4d0fa2af36c94b3","icon_CLion.svg":"cffa044ba75cb998ee3306991dc4a3755ec2f39ab95ddd4b74bc21988389020f","src/alphabet.rs":"f0cba9462692db0bc9572e3d03c01ac77ff705fa9e664db4162da1a279a871e1","src/chunked_encoder.rs":"35b435042074f2ddd7dac6dae89c2ab6e5dfe173c73ccd1504c4f916f49151ef","src/decode.rs":"a43c5dc72524d49803f4170a84a975aa78040f457b4432ed22f04ab79bc1f3f4","src/display.rs":"31bf3e19274a0b80dd8948a81ea535944f756ef5b88736124c940f5fe1e8c71c","src/encode.rs":"8893d154878f894b3a8930e817ac8f0e4e8f67736f75200aa5eeee2ee813f626","src/engine/general_purpose/decode.rs":"ba8a76d333ab96dd07b3f84bd6d405d690d2d17e84bd0878f05245a82dc16853","src/engine/general_purpose/decode_suffix.rs":"71ceb066b73e8cc833916e2cedbf0a01b07c2f16e30b2b2f63aff1c823874b51","src/engine/general_purpose/mod.rs":"4acf7293e5bb83faf01edf2618bcb2b2aff2c2a3bcb85ddc815baa96e5751bb2","src/engine/mod.rs":"f1a307dadcab561719c868595cae5be0e37cdba337c2f8959d6ed1367030ed75","src/engine/naive.rs":"4ebd14e28502700d5de3e2aa193b6b384ad1189c6aa9368be3ab35775777aa4a","src/engine/tests.rs":"37bee2de07343bf5d37720f29cda291e8562f2363704e0ad91862d5991568d22","src/lib.rs":"b4699408a9356f88fd8a3aeffae97e54e7a249afe5d919ecf9d4092d1c8efde1","src/prelude.rs":"f82fcf5e31921060929f9e10efb2868ba7339b085ee76fc5e7077f6030fbb2cc","src/read/decoder.rs":"cc87daa4c52a23d1275352bccf07468baf2b60e90b2ac14f89a94254697cb83c","src/read/decoder_tests.rs":"cc3c2273867972a835f459073e3982f20a690c3b7d5f7546042e417d11c97a94","src/read/mod.rs":"e0b714eda02d16b1ffa6f78fd09b2f963e01c881b1f7c17b39db4e904be5e746","src/tests.rs":"90cb9f8a1ccb7c4ddc4f8618208e0031fc97e0df0e5aa466d6a5cf45d25967d8","src/write/encoder.rs":"c889c853249220fe2ddaeb77ee6e2ee2945f7db88cd6658ef89ff71b81255ea8","src/write/encoder_string_writer.rs":"0326c9d120369b9bbc35697b5b9b141bed24283374c93d5af1052eb042e47799","src/write/encoder_tests.rs":"28695a485b17cf5db73656aae5d90127f726e02c6d70efd83e5ab53a4cc17b38","src/write/mod.rs":"73cd98dadc9d712b3fefd9449d97e825e097397441b90588e0051e4d3b0911b9","tests/encode.rs":"ca8fb0c03f71563788cced06deb335f2c4bace0c875696662340c86ccedfdc7f","tests/tests.rs":"78efcf0dc4bb6ae52f7a91fcad89e44e4dce578224c36b4e6c1c306459be8500"},"package":"414dcefbc63d77c526a76b3afcf6fbb9b5e2791c19c3aa2297733208750c6e53"} \ No newline at end of file
+{"files":{"Cargo.lock":"3fcb2ea14aeaf0ebde20e464f0a735b2f58b0fecc99a20c11421ce47788911b8","Cargo.toml":"8a94eedc97a8458e7becfa780a67dfa2ea959bb5660c77dc8236fb7c6a9a64e6","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0dd882e53de11566d50f8e8e2d5a651bcf3fabee4987d70f306233cf39094ba7","README.md":"df01f5b4317d601e7de86743f9818aec9196abf9e298f5e47679b7a966ecd945","RELEASE-NOTES.md":"fa36233aeddb2e63dc0580ffc69a5a1cdbf24f962146ab2d6b817381e2f38cdd","benches/benchmarks.rs":"da4a49294a7fcaf718f2b062a52ed669ca096abce6c57b4025efdd24825048c2","clippy.toml":"b26be4d15ed059985ce6994f11817fd7562046f46e460a0dc64dbb71cfc246d1","examples/base64.rs":"8c48673029aeeb1e06a2ecfd237acf8ef24349990e97f6d2c4d0fa2af36c94b3","icon_CLion.svg":"cffa044ba75cb998ee3306991dc4a3755ec2f39ab95ddd4b74bc21988389020f","src/alphabet.rs":"f0cba9462692db0bc9572e3d03c01ac77ff705fa9e664db4162da1a279a871e1","src/chunked_encoder.rs":"edfdbb9a4329b80fb2c769ada81e234e00839e0fa85faaa70bacf40ce12e951c","src/decode.rs":"666ca75ccd975f0548d37312d2843ca4703b83697a044839bbefeba8f4f7874a","src/display.rs":"31bf3e19274a0b80dd8948a81ea535944f756ef5b88736124c940f5fe1e8c71c","src/encode.rs":"0c827067fced8a20723be2586ebbad94e4749e2cdad463091c4fd6899bd1d0e7","src/engine/general_purpose/decode.rs":"ba8a76d333ab96dd07b3f84bd6d405d690d2d17e84bd0878f05245a82dc16853","src/engine/general_purpose/decode_suffix.rs":"71ceb066b73e8cc833916e2cedbf0a01b07c2f16e30b2b2f63aff1c823874b51","src/engine/general_purpose/mod.rs":"9f49375fc03166a491acf464daa7a9e6540fdc2cca407da9a248e15640952c20","src/engine/mod.rs":"15210115e5f99e0d252a1240922deb1516778e318564f92a9d880a82fd82a55e","src/engine/naive.rs":"dc166010633e8de0fbff31e2f05d128506f3e0f34a6358c1a825b59a8ea1af0d","src/engine/tests.rs":"37bee2de07343bf5d37720f29cda291e8562f2363704e0ad91862d5991568d22","src/lib.rs":"c1eb62ba9f461dfa00b5297c9bc3d9f6c6702295806d43bb82e46ffb54ea61ed","src/prelude.rs":"c1587138e5301ac797c5c362cb3638649b33f79c20c16db6f38ad44330540752","src/read/decoder.rs":"cc87daa4c52a23d1275352bccf07468baf2b60e90b2ac14f89a94254697cb83c","src/read/decoder_tests.rs":"edeee377e70095532be1625d0148de2273b739e9069a05e616d3e67877d92f1d","src/read/mod.rs":"e0b714eda02d16b1ffa6f78fd09b2f963e01c881b1f7c17b39db4e904be5e746","src/tests.rs":"90cb9f8a1ccb7c4ddc4f8618208e0031fc97e0df0e5aa466d6a5cf45d25967d8","src/write/encoder.rs":"c889c853249220fe2ddaeb77ee6e2ee2945f7db88cd6658ef89ff71b81255ea8","src/write/encoder_string_writer.rs":"0326c9d120369b9bbc35697b5b9b141bed24283374c93d5af1052eb042e47799","src/write/encoder_tests.rs":"28695a485b17cf5db73656aae5d90127f726e02c6d70efd83e5ab53a4cc17b38","src/write/mod.rs":"73cd98dadc9d712b3fefd9449d97e825e097397441b90588e0051e4d3b0911b9","tests/encode.rs":"5309f4538b1df611436f7bfba7409c725161b6f841b1bbf8d9890ae185de7d88","tests/tests.rs":"78efcf0dc4bb6ae52f7a91fcad89e44e4dce578224c36b4e6c1c306459be8500"},"package":"35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9"} \ No newline at end of file
diff --git a/vendor/base64/Cargo.lock b/vendor/base64/Cargo.lock
index 990f04fc0..da628ba3f 100644
--- a/vendor/base64/Cargo.lock
+++ b/vendor/base64/Cargo.lock
@@ -4,9 +4,9 @@ version = 3
[[package]]
name = "aho-corasick"
-version = "1.0.4"
+version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6748e8def348ed4d14996fa801f4122cd763fff530258cdc03f64b25f89d3a5a"
+checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
dependencies = [
"memchr",
]
@@ -32,7 +32,7 @@ version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
dependencies = [
- "hermit-abi 0.1.19",
+ "hermit-abi",
"libc",
"winapi",
]
@@ -45,7 +45,7 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]]
name = "base64"
-version = "0.21.3"
+version = "0.21.5"
dependencies = [
"criterion",
"lazy_static",
@@ -63,9 +63,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bumpalo"
-version = "3.13.0"
+version = "3.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1"
+checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
[[package]]
name = "cast"
@@ -179,16 +179,6 @@ dependencies = [
]
[[package]]
-name = "crossbeam-channel"
-version = "0.5.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200"
-dependencies = [
- "cfg-if",
- "crossbeam-utils",
-]
-
-[[package]]
name = "crossbeam-deque"
version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -269,12 +259,6 @@ dependencies = [
]
[[package]]
-name = "hermit-abi"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
-
-[[package]]
name = "indexmap"
version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -316,9 +300,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
-version = "0.2.147"
+version = "0.2.149"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
+checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b"
[[package]]
name = "log"
@@ -328,9 +312,9 @@ checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
[[package]]
name = "memchr"
-version = "2.5.0"
+version = "2.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
[[package]]
name = "memoffset"
@@ -343,24 +327,14 @@ dependencies = [
[[package]]
name = "num-traits"
-version = "0.2.16"
+version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
+checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
dependencies = [
"autocfg",
]
[[package]]
-name = "num_cpus"
-version = "1.16.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
-dependencies = [
- "hermit-abi 0.3.2",
- "libc",
-]
-
-[[package]]
name = "once_cell"
version = "1.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -374,9 +348,9 @@ checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
[[package]]
name = "os_str_bytes"
-version = "6.5.1"
+version = "6.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac"
+checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1"
[[package]]
name = "plotters"
@@ -438,9 +412,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
-version = "1.0.66"
+version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"
+checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da"
dependencies = [
"unicode-ident",
]
@@ -486,9 +460,9 @@ dependencies = [
[[package]]
name = "rayon"
-version = "1.7.0"
+version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
+checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"
dependencies = [
"either",
"rayon-core",
@@ -496,21 +470,19 @@ dependencies = [
[[package]]
name = "rayon-core"
-version = "1.11.0"
+version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
+checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"
dependencies = [
- "crossbeam-channel",
"crossbeam-deque",
"crossbeam-utils",
- "num_cpus",
]
[[package]]
name = "regex"
-version = "1.9.3"
+version = "1.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a"
+checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
dependencies = [
"aho-corasick",
"memchr",
@@ -520,9 +492,9 @@ dependencies = [
[[package]]
name = "regex-automata"
-version = "0.3.6"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69"
+checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
dependencies = [
"aho-corasick",
"memchr",
@@ -531,9 +503,9 @@ dependencies = [
[[package]]
name = "regex-syntax"
-version = "0.7.4"
+version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2"
+checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
[[package]]
name = "rstest"
@@ -591,35 +563,35 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]]
name = "semver"
-version = "1.0.18"
+version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918"
+checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090"
[[package]]
name = "serde"
-version = "1.0.188"
+version = "1.0.189"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
+checksum = "8e422a44e74ad4001bdc8eede9a4570ab52f71190e9c076d14369f38b9200537"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.188"
+version = "1.0.189"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
+checksum = "1e48d1f918009ce3145511378cf68d613e3b3d9137d67272562080d68a2b32d5"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.38",
]
[[package]]
name = "serde_json"
-version = "1.0.105"
+version = "1.0.107"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360"
+checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65"
dependencies = [
"itoa",
"ryu",
@@ -669,9 +641,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.29"
+version = "2.0.38"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a"
+checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b"
dependencies = [
"proc-macro2",
"quote",
@@ -705,9 +677,9 @@ dependencies = [
[[package]]
name = "unicode-ident"
-version = "1.0.11"
+version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
[[package]]
name = "unicode-segmentation"
@@ -717,9 +689,9 @@ checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
[[package]]
name = "unicode-width"
-version = "0.1.10"
+version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
[[package]]
name = "vec_map"
@@ -735,9 +707,9 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]]
name = "walkdir"
-version = "2.3.3"
+version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
+checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
dependencies = [
"same-file",
"winapi-util",
@@ -770,7 +742,7 @@ dependencies = [
"once_cell",
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.38",
"wasm-bindgen-shared",
]
@@ -792,7 +764,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.29",
+ "syn 2.0.38",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@@ -831,9 +803,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-util"
-version = "0.1.5"
+version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
dependencies = [
"winapi",
]
diff --git a/vendor/base64/Cargo.toml b/vendor/base64/Cargo.toml
index c551663d4..2de75ab22 100644
--- a/vendor/base64/Cargo.toml
+++ b/vendor/base64/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2018"
rust-version = "1.48.0"
name = "base64"
-version = "0.21.3"
+version = "0.21.5"
authors = [
"Alice Maz <alice@alicemaz.com>",
"Marshall Pierce <marshall@mpierce.org>",
@@ -41,9 +41,22 @@ debug = 2
[profile.test]
opt-level = 3
+[[example]]
+name = "base64"
+required-features = ["std"]
+
+[[test]]
+name = "tests"
+required-features = ["alloc"]
+
+[[test]]
+name = "encode"
+required-features = ["alloc"]
+
[[bench]]
name = "benchmarks"
harness = false
+required-features = ["std"]
[dev-dependencies.criterion]
version = "0.4.0"
@@ -67,4 +80,4 @@ version = "0.3.26"
[features]
alloc = []
default = ["std"]
-std = []
+std = ["alloc"]
diff --git a/vendor/base64/RELEASE-NOTES.md b/vendor/base64/RELEASE-NOTES.md
index 6fa3e90ac..d6d94c5a8 100644
--- a/vendor/base64/RELEASE-NOTES.md
+++ b/vendor/base64/RELEASE-NOTES.md
@@ -1,3 +1,11 @@
+# 0.21.5
+
+- Add `Debug` and `Clone` impls for the general purpose Engine
+
+# 0.21.4
+
+- Make `encoded_len` `const`, allowing the creation of arrays sized to encode compile-time-known data lengths
+
# 0.21.3
- Implement `source` instead of `cause` on Error types
@@ -12,7 +20,8 @@
# 0.21.1
- Remove the possibility of panicking during decoded length calculations
-- `DecoderReader` no longer sometimes erroneously ignores padding [#226](https://github.com/marshallpierce/rust-base64/issues/226)
+- `DecoderReader` no longer sometimes erroneously ignores
+ padding [#226](https://github.com/marshallpierce/rust-base64/issues/226)
## Breaking changes
@@ -64,7 +73,8 @@ precisely, see the following table.
## Breaking changes
-- Re-exports of preconfigured engines in `engine` are removed in favor of `base64::prelude::...` that are better suited to those who wish to `use` the entire path to a name.
+- Re-exports of preconfigured engines in `engine` are removed in favor of `base64::prelude::...` that are better suited
+ to those who wish to `use` the entire path to a name.
# 0.21.0-beta.1
diff --git a/vendor/base64/benches/benchmarks.rs b/vendor/base64/benches/benchmarks.rs
index 61d542f36..802c8cca9 100644
--- a/vendor/base64/benches/benchmarks.rs
+++ b/vendor/base64/benches/benchmarks.rs
@@ -39,8 +39,7 @@ fn do_decode_bench_slice(b: &mut Bencher, &size: &usize) {
fill(&mut v);
let encoded = STANDARD.encode(&v);
- let mut buf = Vec::new();
- buf.resize(size, 0);
+ let mut buf = vec![0; size];
b.iter(|| {
STANDARD.decode_slice(&encoded, &mut buf).unwrap();
black_box(&buf);
@@ -52,8 +51,7 @@ fn do_decode_bench_stream(b: &mut Bencher, &size: &usize) {
fill(&mut v);
let encoded = STANDARD.encode(&v);
- let mut buf = Vec::new();
- buf.resize(size, 0);
+ let mut buf = vec![0; size];
buf.truncate(0);
b.iter(|| {
@@ -96,9 +94,8 @@ fn do_encode_bench_reuse_buf(b: &mut Bencher, &size: &usize) {
fn do_encode_bench_slice(b: &mut Bencher, &size: &usize) {
let mut v: Vec<u8> = Vec::with_capacity(size);
fill(&mut v);
- let mut buf = Vec::new();
// conservative estimate of encoded size
- buf.resize(v.len() * 2, 0);
+ let mut buf = vec![0; v.len() * 2];
b.iter(|| STANDARD.encode_slice(&v, &mut buf).unwrap());
}
diff --git a/vendor/base64/src/chunked_encoder.rs b/vendor/base64/src/chunked_encoder.rs
index 69bc7457e..817b339f3 100644
--- a/vendor/base64/src/chunked_encoder.rs
+++ b/vendor/base64/src/chunked_encoder.rs
@@ -2,9 +2,9 @@ use crate::{
encode::add_padding,
engine::{Config, Engine},
};
-#[cfg(any(feature = "alloc", feature = "std", test))]
+#[cfg(any(feature = "alloc", test))]
use alloc::string::String;
-#[cfg(any(feature = "alloc", feature = "std", test))]
+#[cfg(any(feature = "alloc", test))]
use core::str;
/// The output mechanism for ChunkedEncoder's encoded bytes.
@@ -47,19 +47,19 @@ impl<'e, E: Engine + ?Sized> ChunkedEncoder<'e, E> {
}
// A really simple sink that just appends to a string
-#[cfg(any(feature = "alloc", feature = "std", test))]
+#[cfg(any(feature = "alloc", test))]
pub(crate) struct StringSink<'a> {
string: &'a mut String,
}
-#[cfg(any(feature = "alloc", feature = "std", test))]
+#[cfg(any(feature = "alloc", test))]
impl<'a> StringSink<'a> {
pub(crate) fn new(s: &mut String) -> StringSink {
StringSink { string: s }
}
}
-#[cfg(any(feature = "alloc", feature = "std", test))]
+#[cfg(any(feature = "alloc", test))]
impl<'a> Sink for StringSink<'a> {
type Error = ();
diff --git a/vendor/base64/src/decode.rs b/vendor/base64/src/decode.rs
index f590cbdd0..5230fd3c9 100644
--- a/vendor/base64/src/decode.rs
+++ b/vendor/base64/src/decode.rs
@@ -1,5 +1,5 @@
use crate::engine::{general_purpose::STANDARD, DecodeEstimate, Engine};
-#[cfg(any(feature = "alloc", feature = "std", test))]
+#[cfg(any(feature = "alloc", test))]
use alloc::vec::Vec;
use core::fmt;
#[cfg(any(feature = "std", test))]
@@ -83,7 +83,7 @@ impl From<DecodeError> for DecodeSliceError {
///
/// See [Engine::decode].
#[deprecated(since = "0.21.0", note = "Use Engine::decode")]
-#[cfg(any(feature = "alloc", feature = "std", test))]
+#[cfg(any(feature = "alloc", test))]
pub fn decode<T: AsRef<[u8]>>(input: T) -> Result<Vec<u8>, DecodeError> {
STANDARD.decode(input)
}
@@ -93,7 +93,7 @@ pub fn decode<T: AsRef<[u8]>>(input: T) -> Result<Vec<u8>, DecodeError> {
/// See [Engine::decode].
///Returns a `Result` containing a `Vec<u8>`.
#[deprecated(since = "0.21.0", note = "Use Engine::decode")]
-#[cfg(any(feature = "alloc", feature = "std", test))]
+#[cfg(any(feature = "alloc", test))]
pub fn decode_engine<E: Engine, T: AsRef<[u8]>>(
input: T,
engine: &E,
@@ -104,7 +104,7 @@ pub fn decode_engine<E: Engine, T: AsRef<[u8]>>(
/// Decode from string reference as octets.
///
/// See [Engine::decode_vec].
-#[cfg(any(feature = "alloc", feature = "std", test))]
+#[cfg(any(feature = "alloc", test))]
#[deprecated(since = "0.21.0", note = "Use Engine::decode_vec")]
pub fn decode_engine_vec<E: Engine, T: AsRef<[u8]>>(
input: T,
diff --git a/vendor/base64/src/encode.rs b/vendor/base64/src/encode.rs
index 00ade7472..88e649924 100644
--- a/vendor/base64/src/encode.rs
+++ b/vendor/base64/src/encode.rs
@@ -1,10 +1,10 @@
-#[cfg(any(feature = "alloc", feature = "std", test))]
+#[cfg(any(feature = "alloc", test))]
use alloc::string::String;
use core::fmt;
#[cfg(any(feature = "std", test))]
use std::error;
-#[cfg(any(feature = "alloc", feature = "std", test))]
+#[cfg(any(feature = "alloc", test))]
use crate::engine::general_purpose::STANDARD;
use crate::engine::{Config, Engine};
use crate::PAD_BYTE;
@@ -14,7 +14,7 @@ use crate::PAD_BYTE;
/// See [Engine::encode].
#[allow(unused)]
#[deprecated(since = "0.21.0", note = "Use Engine::encode")]
-#[cfg(any(feature = "alloc", feature = "std", test))]
+#[cfg(any(feature = "alloc", test))]
pub fn encode<T: AsRef<[u8]>>(input: T) -> String {
STANDARD.encode(input)
}
@@ -24,7 +24,7 @@ pub fn encode<T: AsRef<[u8]>>(input: T) -> String {
/// See [Engine::encode].
#[allow(unused)]
#[deprecated(since = "0.21.0", note = "Use Engine::encode")]
-#[cfg(any(feature = "alloc", feature = "std", test))]
+#[cfg(any(feature = "alloc", test))]
pub fn encode_engine<E: Engine, T: AsRef<[u8]>>(input: T, engine: &E) -> String {
engine.encode(input)
}
@@ -34,7 +34,7 @@ pub fn encode_engine<E: Engine, T: AsRef<[u8]>>(input: T, engine: &E) -> String
/// See [Engine::encode_string].
#[allow(unused)]
#[deprecated(since = "0.21.0", note = "Use Engine::encode_string")]
-#[cfg(any(feature = "alloc", feature = "std", test))]
+#[cfg(any(feature = "alloc", test))]
pub fn encode_engine_string<E: Engine, T: AsRef<[u8]>>(
input: T,
output_buf: &mut String,
@@ -94,25 +94,32 @@ pub(crate) fn encode_with_padding<E: Engine + ?Sized>(
///
/// Returns `None` if the encoded length can't be represented in `usize`. This will happen for
/// input lengths in approximately the top quarter of the range of `usize`.
-pub fn encoded_len(bytes_len: usize, padding: bool) -> Option<usize> {
+pub const fn encoded_len(bytes_len: usize, padding: bool) -> Option<usize> {
let rem = bytes_len % 3;
let complete_input_chunks = bytes_len / 3;
- let complete_chunk_output = complete_input_chunks.checked_mul(4);
+ // `let Some(_) = _ else` requires 1.65.0, whereas this messier one works on 1.48
+ let complete_chunk_output =
+ if let Some(complete_chunk_output) = complete_input_chunks.checked_mul(4) {
+ complete_chunk_output
+ } else {
+ return None;
+ };
if rem > 0 {
if padding {
- complete_chunk_output.and_then(|c| c.checked_add(4))
+ complete_chunk_output.checked_add(4)
} else {
let encoded_rem = match rem {
1 => 2,
- 2 => 3,
- _ => unreachable!("Impossible remainder"),
+ // only other possible remainder is 2
+ // can't use a separate _ => unreachable!() in const fns in ancient rust versions
+ _ => 3,
};
- complete_chunk_output.and_then(|c| c.checked_add(encoded_rem))
+ complete_chunk_output.checked_add(encoded_rem)
}
} else {
- complete_chunk_output
+ Some(complete_chunk_output)
}
}
diff --git a/vendor/base64/src/engine/general_purpose/mod.rs b/vendor/base64/src/engine/general_purpose/mod.rs
index 01d22049a..e0227f3b8 100644
--- a/vendor/base64/src/engine/general_purpose/mod.rs
+++ b/vendor/base64/src/engine/general_purpose/mod.rs
@@ -19,6 +19,8 @@ pub(crate) const INVALID_VALUE: u8 = 255;
/// - It uses no vector CPU instructions, so it will work on any system.
/// - It is reasonably fast (~2-3GiB/s).
/// - It is not constant-time, though, so it is vulnerable to timing side-channel attacks. For loading cryptographic keys, etc, it is suggested to use the forthcoming constant-time implementation.
+
+#[derive(Debug, Clone)]
pub struct GeneralPurpose {
encode_table: [u8; 64],
decode_table: [u8; 256],
diff --git a/vendor/base64/src/engine/mod.rs b/vendor/base64/src/engine/mod.rs
index e10d66bb2..16c05d751 100644
--- a/vendor/base64/src/engine/mod.rs
+++ b/vendor/base64/src/engine/mod.rs
@@ -1,14 +1,14 @@
//! Provides the [Engine] abstraction and out of the box implementations.
-#[cfg(any(feature = "alloc", feature = "std", test))]
+#[cfg(any(feature = "alloc", test))]
use crate::chunked_encoder;
use crate::{
encode::{encode_with_padding, EncodeSliceError},
encoded_len, DecodeError, DecodeSliceError,
};
-#[cfg(any(feature = "alloc", feature = "std", test))]
+#[cfg(any(feature = "alloc", test))]
use alloc::vec::Vec;
-#[cfg(any(feature = "alloc", feature = "std", test))]
+#[cfg(any(feature = "alloc", test))]
use alloc::{string::String, vec};
pub mod general_purpose;
@@ -113,7 +113,7 @@ pub trait Engine: Send + Sync {
/// engine::GeneralPurpose::new(&alphabet::URL_SAFE, general_purpose::NO_PAD);
///
/// let b64_url = CUSTOM_ENGINE.encode(b"hello internet~");
- #[cfg(any(feature = "alloc", feature = "std", test))]
+ #[cfg(any(feature = "alloc", test))]
#[inline]
fn encode<T: AsRef<[u8]>>(&self, input: T) -> String {
fn inner<E>(engine: &E, input_bytes: &[u8]) -> String
@@ -153,7 +153,7 @@ pub trait Engine: Send + Sync {
/// println!("{}", buf);
/// }
/// ```
- #[cfg(any(feature = "alloc", feature = "std", test))]
+ #[cfg(any(feature = "alloc", test))]
#[inline]
fn encode_string<T: AsRef<[u8]>>(&self, input: T, output_buf: &mut String) {
fn inner<E>(engine: &E, input_bytes: &[u8], output_buf: &mut String)
@@ -178,7 +178,8 @@ pub trait Engine: Send + Sync {
///
/// # Example
///
- /// ```rust
+ #[cfg_attr(feature = "alloc", doc = "```")]
+ #[cfg_attr(not(feature = "alloc"), doc = "```ignore")]
/// use base64::{Engine as _, engine::general_purpose};
/// let s = b"hello internet!";
/// let mut buf = Vec::new();
@@ -241,7 +242,7 @@ pub trait Engine: Send + Sync {
/// .decode("aGVsbG8gaW50ZXJuZXR-Cg").unwrap();
/// println!("{:?}", bytes_url);
/// ```
- #[cfg(any(feature = "alloc", feature = "std", test))]
+ #[cfg(any(feature = "alloc", test))]
#[inline]
fn decode<T: AsRef<[u8]>>(&self, input: T) -> Result<Vec<u8>, DecodeError> {
fn inner<E>(engine: &E, input_bytes: &[u8]) -> Result<Vec<u8>, DecodeError>
@@ -293,7 +294,7 @@ pub trait Engine: Send + Sync {
/// println!("{:?}", buffer);
/// }
/// ```
- #[cfg(any(feature = "alloc", feature = "std", test))]
+ #[cfg(any(feature = "alloc", test))]
#[inline]
fn decode_vec<T: AsRef<[u8]>>(
&self,
diff --git a/vendor/base64/src/engine/naive.rs b/vendor/base64/src/engine/naive.rs
index 42b6085bd..6a50cbed9 100644
--- a/vendor/base64/src/engine/naive.rs
+++ b/vendor/base64/src/engine/naive.rs
@@ -6,8 +6,7 @@ use crate::{
},
DecodeError, PAD_BYTE,
};
-use alloc::ops::BitOr;
-use std::ops::{BitAnd, Shl, Shr};
+use std::ops::{BitAnd, BitOr, Shl, Shr};
/// Comparatively simple implementation that can be used as something to compare against in tests
pub struct Naive {
diff --git a/vendor/base64/src/lib.rs b/vendor/base64/src/lib.rs
index cc9d628df..6b11fa66b 100644
--- a/vendor/base64/src/lib.rs
+++ b/vendor/base64/src/lib.rs
@@ -81,7 +81,8 @@
//!
//! ## Using predefined engines
//!
-//! ```
+#![cfg_attr(feature = "alloc", doc = "```")]
+#![cfg_attr(not(feature = "alloc"), doc = "```ignore")]
//! use base64::{Engine as _, engine::general_purpose};
//!
//! let orig = b"data";
@@ -95,7 +96,8 @@
//!
//! ## Custom alphabet, config, and engine
//!
-//! ```
+#![cfg_attr(feature = "alloc", doc = "```")]
+#![cfg_attr(not(feature = "alloc"), doc = "```ignore")]
//! use base64::{engine, alphabet, Engine as _};
//!
//! // bizarro-world base64: +/ as the first symbols instead of the last
@@ -136,10 +138,8 @@
#![allow(clippy::single_component_path_imports)]
#![cfg_attr(not(any(feature = "std", test)), no_std)]
-#[cfg(all(feature = "alloc", not(any(feature = "std", test))))]
+#[cfg(any(feature = "alloc", test))]
extern crate alloc;
-#[cfg(any(feature = "std", test))]
-extern crate std as alloc;
// has to be included at top level because of the way rstest_reuse defines its macros
#[cfg(test)]
@@ -159,14 +159,14 @@ pub mod alphabet;
mod encode;
#[allow(deprecated)]
-#[cfg(any(feature = "alloc", feature = "std", test))]
+#[cfg(any(feature = "alloc", test))]
pub use crate::encode::{encode, encode_engine, encode_engine_string};
#[allow(deprecated)]
pub use crate::encode::{encode_engine_slice, encoded_len, EncodeSliceError};
mod decode;
#[allow(deprecated)]
-#[cfg(any(feature = "alloc", feature = "std", test))]
+#[cfg(any(feature = "alloc", test))]
pub use crate::decode::{decode, decode_engine, decode_engine_vec};
#[allow(deprecated)]
pub use crate::decode::{decode_engine_slice, decoded_len_estimate, DecodeError, DecodeSliceError};
diff --git a/vendor/base64/src/prelude.rs b/vendor/base64/src/prelude.rs
index fbeb5babc..df5fdb497 100644
--- a/vendor/base64/src/prelude.rs
+++ b/vendor/base64/src/prelude.rs
@@ -5,7 +5,8 @@
//!
//! # Examples
//!
-//! ```
+#![cfg_attr(feature = "alloc", doc = "```")]
+#![cfg_attr(not(feature = "alloc"), doc = "```ignore")]
//! use base64::prelude::{Engine as _, BASE64_STANDARD_NO_PAD};
//!
//! assert_eq!("c29tZSBieXRlcw", &BASE64_STANDARD_NO_PAD.encode(b"some bytes"));
diff --git a/vendor/base64/src/read/decoder_tests.rs b/vendor/base64/src/read/decoder_tests.rs
index 625a07dbd..099dd6388 100644
--- a/vendor/base64/src/read/decoder_tests.rs
+++ b/vendor/base64/src/read/decoder_tests.rs
@@ -76,7 +76,7 @@ fn trailing_junk() {
saw_error = true;
break;
}
- Ok(read) if read == 0 => break,
+ Ok(0) => break,
Ok(_) => (),
}
}
diff --git a/vendor/base64/tests/encode.rs b/vendor/base64/tests/encode.rs
index cf61e9ac9..9d6944741 100644
--- a/vendor/base64/tests/encode.rs
+++ b/vendor/base64/tests/encode.rs
@@ -44,3 +44,34 @@ fn encode_all_bytes_url() {
&engine::GeneralPurpose::new(&URL_SAFE, PAD).encode(bytes)
);
}
+
+#[test]
+fn encoded_len_unpadded() {
+ assert_eq!(0, encoded_len(0, false).unwrap());
+ assert_eq!(2, encoded_len(1, false).unwrap());
+ assert_eq!(3, encoded_len(2, false).unwrap());
+ assert_eq!(4, encoded_len(3, false).unwrap());
+ assert_eq!(6, encoded_len(4, false).unwrap());
+ assert_eq!(7, encoded_len(5, false).unwrap());
+ assert_eq!(8, encoded_len(6, false).unwrap());
+ assert_eq!(10, encoded_len(7, false).unwrap());
+}
+
+#[test]
+fn encoded_len_padded() {
+ assert_eq!(0, encoded_len(0, true).unwrap());
+ assert_eq!(4, encoded_len(1, true).unwrap());
+ assert_eq!(4, encoded_len(2, true).unwrap());
+ assert_eq!(4, encoded_len(3, true).unwrap());
+ assert_eq!(8, encoded_len(4, true).unwrap());
+ assert_eq!(8, encoded_len(5, true).unwrap());
+ assert_eq!(8, encoded_len(6, true).unwrap());
+ assert_eq!(12, encoded_len(7, true).unwrap());
+}
+#[test]
+fn encoded_len_overflow() {
+ let max_size = usize::MAX / 4 * 3 + 2;
+ assert_eq!(2, max_size % 3);
+ assert_eq!(Some(usize::MAX), encoded_len(max_size, false));
+ assert_eq!(None, encoded_len(max_size + 1, false));
+}
diff --git a/vendor/bitflags/.cargo-checksum.json b/vendor/bitflags/.cargo-checksum.json
index 9565a6617..99936c770 100644
--- a/vendor/bitflags/.cargo-checksum.json
+++ b/vendor/bitflags/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"233d0b9c9c8e2c89cd0e0dc225a3cf76c0a6fae357d2a02743fb4dff09286194","CODE_OF_CONDUCT.md":"42634d0f6d922f49857175af991802822f7f920487aefa2ee250a50d12251a66","CONTRIBUTING.md":"6c9f96eacb20af877ae2d16f024904f3038b93448a8488e9dbcac0df7f6439a5","Cargo.lock":"4db44aa18134aa14828cc0f99ff4329fbc9026dc89bb0503b9dc054d9ab62bc6","Cargo.toml":"6e552ff8a664536eb76313b23c84e895c0ce364506acace410c80d67b335a6cb","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"892ef45ec866633a928ad55f3083fe71fb5d311ea9f5ca2f4ba7d680f50ad724","SECURITY.md":"68704c8128fa2e776ed7cbda741fbf61ad52f998a96350ee7ee4dbf64c6573bc","benches/parse.rs":"f1390d62322c6880d65bd931e183d49b313f287879a6bfaa36b1cb1921090b51","examples/custom_bits_type.rs":"e53b32051adc5d97860e0b48c8f3a301a041d73b4939c0d7caa5f0cfcc0b9739","examples/custom_derive.rs":"29dd7b845345a103ca31e91b579aeb01fb74935b8223c29184eb42223edadb65","examples/fmt.rs":"87ba37a1fb8528570c74ea26d8e8948e1179c3d867b928bea1080880258e0a99","examples/macro_free.rs":"69e7f284b53b5214d51228a686e87f127b52a3b74711e45537ebfa5583a180e5","examples/serde.rs":"08b21b35d5c10fdca132fe0f36c8067bb44f559e96617a9257ab6316a20cbc75","spec.md":"fcdd939df30c59b0643be09027df664b71cbea9b9989185441482c5576160fed","src/example_generated.rs":"d018caf059f6ffc4c2403b771a6d76679fa5af03c329a91bd9252957df695e7f","src/external.rs":"11599248db17d395c6b45bf2400266f221d3eb1523908e5f17715964bf8d99ed","src/external/arbitrary.rs":"fa8c9187028b9bc54856977b0914676f62101010e7a9450abd577fd78c89552f","src/external/bytemuck.rs":"3afcef382122867040fddd5e4153d633d1ed5596fe5d7dfac66a8e61c2513df5","src/external/serde.rs":"4a09db12534a20fe554a08dc5f1c8124b379292d41fa75628abcd2ca21587573","src/internal.rs":"fd939154cbebf43bfc329a4a3cd08618ca30a6a5f6e6abea07d23f75bf5b3b2d","src/iter.rs":"dbaa6437c1c044f689185ce3fafe43df8796bed19bbdd2c20334a52de5eeee73","src/lib.rs":"28d42a2e573955ab816b937f8024f2bfc97663647558ace10914c224f4ddd296","src/parser.rs":"52f6352620ce3d5973bc38b42d56a760307294162c9d5668eb774eb92a6ef941","src/public.rs":"72b41639711bab95e8e75f37401a487088e7be1a427715cea40563fb3f64ed60","src/tests.rs":"b120c27ff0c67a819527de9d8171f1f4c5d37ba4009c54abeb869c70e6035f14","src/traits.rs":"0a8764c3e2378043e2724cf1bfc514d4ff1985026db33509f6451a7897e2675d"},"package":"b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"0905d91abfd8162750daeb51b69e1a4add85cd0e8e2b136a4fd20ea28df4da42","CODE_OF_CONDUCT.md":"42634d0f6d922f49857175af991802822f7f920487aefa2ee250a50d12251a66","CONTRIBUTING.md":"6c9f96eacb20af877ae2d16f024904f3038b93448a8488e9dbcac0df7f6439a5","Cargo.lock":"fb581ed64bd34dbdbcc2386c394394d5f46db3186edc7b129f1669cef66a0b57","Cargo.toml":"418f0ef5e370bf88b0d7bd8c3b2f25b533ae2b671036d30f7c524dc39133045c","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"a403792a6099aeda15dc7bf3da529409652039b5dd2227dfc5549bd2f3fad7db","SECURITY.md":"68704c8128fa2e776ed7cbda741fbf61ad52f998a96350ee7ee4dbf64c6573bc","benches/parse.rs":"f1390d62322c6880d65bd931e183d49b313f287879a6bfaa36b1cb1921090b51","examples/custom_bits_type.rs":"e53b32051adc5d97860e0b48c8f3a301a041d73b4939c0d7caa5f0cfcc0b9739","examples/custom_derive.rs":"29dd7b845345a103ca31e91b579aeb01fb74935b8223c29184eb42223edadb65","examples/fmt.rs":"87ba37a1fb8528570c74ea26d8e8948e1179c3d867b928bea1080880258e0a99","examples/macro_free.rs":"69e7f284b53b5214d51228a686e87f127b52a3b74711e45537ebfa5583a180e5","examples/serde.rs":"08b21b35d5c10fdca132fe0f36c8067bb44f559e96617a9257ab6316a20cbc75","spec.md":"fcdd939df30c59b0643be09027df664b71cbea9b9989185441482c5576160fed","src/example_generated.rs":"d018caf059f6ffc4c2403b771a6d76679fa5af03c329a91bd9252957df695e7f","src/external.rs":"11599248db17d395c6b45bf2400266f221d3eb1523908e5f17715964bf8d99ed","src/external/arbitrary.rs":"fa8c9187028b9bc54856977b0914676f62101010e7a9450abd577fd78c89552f","src/external/bytemuck.rs":"3afcef382122867040fddd5e4153d633d1ed5596fe5d7dfac66a8e61c2513df5","src/external/serde.rs":"4a09db12534a20fe554a08dc5f1c8124b379292d41fa75628abcd2ca21587573","src/internal.rs":"fd939154cbebf43bfc329a4a3cd08618ca30a6a5f6e6abea07d23f75bf5b3b2d","src/iter.rs":"dbaa6437c1c044f689185ce3fafe43df8796bed19bbdd2c20334a52de5eeee73","src/lib.rs":"e45c07f43b0e142c41e99de8d20ceb909148762c876d765c11ac8b8ceaca0af5","src/parser.rs":"52f6352620ce3d5973bc38b42d56a760307294162c9d5668eb774eb92a6ef941","src/public.rs":"72b41639711bab95e8e75f37401a487088e7be1a427715cea40563fb3f64ed60","src/tests.rs":"b120c27ff0c67a819527de9d8171f1f4c5d37ba4009c54abeb869c70e6035f14","src/traits.rs":"0a8764c3e2378043e2724cf1bfc514d4ff1985026db33509f6451a7897e2675d"},"package":"327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"} \ No newline at end of file
diff --git a/vendor/bitflags/CHANGELOG.md b/vendor/bitflags/CHANGELOG.md
index 2e97608d0..5081ed576 100644
--- a/vendor/bitflags/CHANGELOG.md
+++ b/vendor/bitflags/CHANGELOG.md
@@ -1,3 +1,10 @@
+# 2.4.1
+
+## What's Changed
+* Allow some new pedantic clippy lints by @KodrAus in https://github.com/bitflags/bitflags/pull/380
+
+**Full Changelog**: https://github.com/bitflags/bitflags/compare/2.4.0...2.4.1
+
# 2.4.0
## What's Changed
diff --git a/vendor/bitflags/Cargo.lock b/vendor/bitflags/Cargo.lock
index 172b677d1..53d2d7a68 100644
--- a/vendor/bitflags/Cargo.lock
+++ b/vendor/bitflags/Cargo.lock
@@ -4,9 +4,9 @@ version = 3
[[package]]
name = "arbitrary"
-version = "1.3.0"
+version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2d098ff73c1ca148721f37baad5ea6a465a13f9573aba8641fbbbae8164a54e"
+checksum = "a2e1373abdaa212b704512ec2bd8b26bd0b7d5c3f70117411a5d9a451383c859"
dependencies = [
"derive_arbitrary",
]
@@ -22,7 +22,7 @@ dependencies = [
[[package]]
name = "bitflags"
-version = "2.4.0"
+version = "2.4.1"
dependencies = [
"arbitrary",
"bytemuck",
@@ -39,18 +39,18 @@ dependencies = [
[[package]]
name = "bytemuck"
-version = "1.13.1"
+version = "1.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea"
+checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6"
dependencies = [
"bytemuck_derive",
]
[[package]]
name = "bytemuck_derive"
-version = "1.4.1"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fdde5c9cd29ebd706ce1b35600920a33550e402fc998a2e53ad3b42c3c47a192"
+checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1"
dependencies = [
"proc-macro2",
"quote",
@@ -59,15 +59,15 @@ dependencies = [
[[package]]
name = "byteorder"
-version = "1.4.3"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
[[package]]
name = "compiler_builtins"
-version = "0.1.100"
+version = "0.1.101"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6c0f24437059853f0fa64afc51f338f93647a3de4cf3358ba1bb4171a199775"
+checksum = "01a6d58e9c3408138099a396a98fd0d0e6cfb25d723594d2ae48b5004513fd5b"
[[package]]
name = "derive_arbitrary"
@@ -100,18 +100,18 @@ checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
[[package]]
name = "proc-macro2"
-version = "1.0.66"
+version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"
+checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
-version = "1.0.32"
+version = "1.0.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965"
+checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
dependencies = [
"proc-macro2",
]
@@ -136,15 +136,18 @@ checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
[[package]]
name = "serde"
-version = "1.0.183"
+version = "1.0.189"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3c"
+checksum = "8e422a44e74ad4001bdc8eede9a4570ab52f71190e9c076d14369f38b9200537"
+dependencies = [
+ "serde_derive",
+]
[[package]]
name = "serde_derive"
-version = "1.0.183"
+version = "1.0.189"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816"
+checksum = "1e48d1f918009ce3145511378cf68d613e3b3d9137d67272562080d68a2b32d5"
dependencies = [
"proc-macro2",
"quote",
@@ -153,9 +156,9 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.104"
+version = "1.0.107"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c"
+checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65"
dependencies = [
"itoa",
"ryu",
@@ -173,9 +176,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.28"
+version = "2.0.38"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567"
+checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b"
dependencies = [
"proc-macro2",
"quote",
@@ -184,18 +187,18 @@ dependencies = [
[[package]]
name = "termcolor"
-version = "1.2.0"
+version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
+checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64"
dependencies = [
"winapi-util",
]
[[package]]
name = "trybuild"
-version = "1.0.82"
+version = "1.0.85"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a84e0202ea606ba5ebee8507ab2bfbe89b98551ed9b8f0be198109275cff284b"
+checksum = "196a58260a906cedb9bf6d8034b6379d0c11f552416960452f267402ceeddff1"
dependencies = [
"basic-toml",
"glob",
@@ -208,9 +211,9 @@ dependencies = [
[[package]]
name = "unicode-ident"
-version = "1.0.11"
+version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
[[package]]
name = "winapi"
@@ -230,9 +233,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-util"
-version = "0.1.5"
+version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
dependencies = [
"winapi",
]
@@ -245,9 +248,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "zerocopy"
-version = "0.6.3"
+version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3b9c234616391070b0b173963ebc65a9195068e7ed3731c6edac2ec45ebe106"
+checksum = "20707b61725734c595e840fb3704378a0cd2b9c74cc9e6e20724838fc6a1e2f9"
dependencies = [
"byteorder",
"zerocopy-derive",
@@ -255,9 +258,9 @@ dependencies = [
[[package]]
name = "zerocopy-derive"
-version = "0.6.3"
+version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f7f3a471f98d0a61c34322fbbfd10c384b07687f680d4119813713f72308d91"
+checksum = "56097d5b91d711293a42be9289403896b68654625021732067eac7a4ca388a1f"
dependencies = [
"proc-macro2",
"quote",
diff --git a/vendor/bitflags/Cargo.toml b/vendor/bitflags/Cargo.toml
index 846d32178..5fd2c7dc1 100644
--- a/vendor/bitflags/Cargo.toml
+++ b/vendor/bitflags/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.56.0"
name = "bitflags"
-version = "2.4.0"
+version = "2.4.1"
authors = ["The Rust Project Developers"]
exclude = [
"tests",
diff --git a/vendor/bitflags/README.md b/vendor/bitflags/README.md
index 39224533d..ecad515e1 100644
--- a/vendor/bitflags/README.md
+++ b/vendor/bitflags/README.md
@@ -28,7 +28,7 @@ Add this to your `Cargo.toml`:
```toml
[dependencies]
-bitflags = "2.4.0"
+bitflags = "2.4.1"
```
and this to your source code:
@@ -46,11 +46,17 @@ use bitflags::bitflags;
// The `bitflags!` macro generates `struct`s that manage a set of flags.
bitflags! {
+ /// Represents a set of flags.
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
struct Flags: u32 {
+ /// The value `A`, at bit position `0`.
const A = 0b00000001;
+ /// The value `B`, at bit position `1`.
const B = 0b00000010;
+ /// The value `C`, at bit position `2`.
const C = 0b00000100;
+
+ /// The combination of `A`, `B`, and `C`.
const ABC = Self::A.bits() | Self::B.bits() | Self::C.bits();
}
}
diff --git a/vendor/bitflags/src/lib.rs b/vendor/bitflags/src/lib.rs
index 3d5377b8d..c8aff6873 100644
--- a/vendor/bitflags/src/lib.rs
+++ b/vendor/bitflags/src/lib.rs
@@ -17,7 +17,7 @@ Add `bitflags` to your `Cargo.toml`:
```toml
[dependencies.bitflags]
-version = "2.4.0"
+version = "2.4.1"
```
## Generating flags types
@@ -481,7 +481,8 @@ macro_rules! bitflags {
non_upper_case_globals,
clippy::assign_op_pattern,
clippy::indexing_slicing,
- clippy::same_name_method
+ clippy::same_name_method,
+ clippy::iter_without_into_iter,
)]
const _: () = {
// Declared in a "hidden" scope that can't be reached directly
@@ -553,7 +554,8 @@ macro_rules! bitflags {
unused_mut,
unused_imports,
non_upper_case_globals,
- clippy::assign_op_pattern
+ clippy::assign_op_pattern,
+ clippy::iter_without_into_iter,
)]
const _: () = {
__impl_public_bitflags! {
diff --git a/vendor/bumpalo/.cargo-checksum.json b/vendor/bumpalo/.cargo-checksum.json
index 7dc1ed8e3..7ed57af10 100644
--- a/vendor/bumpalo/.cargo-checksum.json
+++ b/vendor/bumpalo/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"0d910c4e21c0e6cb07753a942af001f0b8b3e34f1c1ad9ae9d0f150351f4ca28","Cargo.toml":"c1473a43df40e39c90e58d0d604279b1958768330b600a1899aebdc1d6162a38","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"65f94e99ddaf4f5d1782a6dae23f35d4293a9a01444a13135a6887017d353cee","README.md":"e5fb332ab51aed303b6c94ebad5c817fd7108285e671e0c4e7d67aa2909cd182","src/alloc.rs":"3a9645d9e8db1f2a8549ee928cafa5263a828f25c88ce4d2b07996ecc14bfa81","src/boxed.rs":"5fc935f8e1a7bc1b8f6a39b2bcc4355a2be4743f2308fe3ffd557455a3a27cb2","src/collections/collect_in.rs":"0588a4ff3967a4323abb4218bbd615af4b123639ab4fae9130c6590c258b3d15","src/collections/mod.rs":"d58dc46eb4f9fcdde574f09bc5b8646f53e42d49c169561d98e0c23e5b36848a","src/collections/raw_vec.rs":"8829cc9a693fde38aa93e47a7bbbc2dac247620d07f60519f2e6cb44f5494bc5","src/collections/str/lossy.rs":"c5d62b16e01071e2a574ae41ef6693ad12f1e6c786c5d38f7a13ebd6cb23c088","src/collections/str/mod.rs":"d82a8bd417fbf52a589d89a16ea2a0ac4f6ac920c3976ab1f5b6ac0c8493c4f2","src/collections/string.rs":"388d39b999788baf5c14ccc3f5cb57da728060ea3295ddfc28f0f2e1ca5858ec","src/collections/vec.rs":"2eaf52e085e6d04767e97b224e82688dd0debd231c6536d6034f431376aa8bf0","src/lib.rs":"0e88d5a3272a4e4f9a94f60824cf9f07ce7fcdfcd4b11794d804c8277cf1d917"},"package":"a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"2f3f6b5ae0beb2a5c97b3271ebd9d758b1f0d1cb303c035864668f7ebce8f66e","Cargo.toml":"0d9e665909b9251cefa7a045467396046b311cd39d67ad665272bc3faaee0b68","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"65f94e99ddaf4f5d1782a6dae23f35d4293a9a01444a13135a6887017d353cee","README.md":"2d137262a09477a0f46cd5383c6fb858649532e7c53a7de82cfc9145690f4f27","src/alloc.rs":"3a9645d9e8db1f2a8549ee928cafa5263a828f25c88ce4d2b07996ecc14bfa81","src/boxed.rs":"5fc935f8e1a7bc1b8f6a39b2bcc4355a2be4743f2308fe3ffd557455a3a27cb2","src/collections/collect_in.rs":"0588a4ff3967a4323abb4218bbd615af4b123639ab4fae9130c6590c258b3d15","src/collections/mod.rs":"d58dc46eb4f9fcdde574f09bc5b8646f53e42d49c169561d98e0c23e5b36848a","src/collections/raw_vec.rs":"8829cc9a693fde38aa93e47a7bbbc2dac247620d07f60519f2e6cb44f5494bc5","src/collections/str/lossy.rs":"c5d62b16e01071e2a574ae41ef6693ad12f1e6c786c5d38f7a13ebd6cb23c088","src/collections/str/mod.rs":"d82a8bd417fbf52a589d89a16ea2a0ac4f6ac920c3976ab1f5b6ac0c8493c4f2","src/collections/string.rs":"388d39b999788baf5c14ccc3f5cb57da728060ea3295ddfc28f0f2e1ca5858ec","src/collections/vec.rs":"c500cdfcf5b41bb5816c9984bf8b97ac2cec98a537dcb3178bfbf6e2219d4392","src/lib.rs":"d4b867af1cbe15b040aa56a4256458cfceebff9f11dd5aaf4c3dc15ccc251515"},"package":"7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"} \ No newline at end of file
diff --git a/vendor/bumpalo/CHANGELOG.md b/vendor/bumpalo/CHANGELOG.md
index 969d69c29..c9469f633 100644
--- a/vendor/bumpalo/CHANGELOG.md
+++ b/vendor/bumpalo/CHANGELOG.md
@@ -28,6 +28,18 @@ Released YYYY-MM-DD.
--------------------------------------------------------------------------------
+## 3.14.0
+
+Released 2023-09-14.
+
+### Added
+
+* Added the `std` cargo feature, which enables implementations of `std` traits
+ for various things. Right now that is just `std::io::Write` for
+ `bumpalo::collections::Vec`, but could be more in the future.
+
+--------------------------------------------------------------------------------
+
## 3.13.0
Released 2023-05-22.
@@ -530,7 +542,7 @@ Released 2019-12-20.
from the allocated chunks are slightly different from the old
`each_allocated_chunk`: only up to 16-byte alignment is supported now. If you
allocate anything with greater alignment than that into the bump arena, there
- might be uninitilized padding inserted in the chunks, and therefore it is no
+ might be uninitialized padding inserted in the chunks, and therefore it is no
longer safe to read them via `MaybeUninit::assume_init`. See also the note
about bump direction in the "changed" section; if you're iterating chunks,
you're likely affected by that change!
@@ -569,7 +581,7 @@ Released 2019-05-20.
* Fixed a bug where chunks were always deallocated with the default chunk
layout, not the layout that the chunk was actually allocated with (i.e. if we
- started growing largers chunks with larger layouts, we would deallocate those
+ started growing larger chunks with larger layouts, we would deallocate those
chunks with an incorrect layout).
--------------------------------------------------------------------------------
diff --git a/vendor/bumpalo/Cargo.toml b/vendor/bumpalo/Cargo.toml
index 4e6937978..2fa3c9339 100644
--- a/vendor/bumpalo/Cargo.toml
+++ b/vendor/bumpalo/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.60.0"
name = "bumpalo"
-version = "3.13.0"
+version = "3.14.0"
authors = ["Nick Fitzgerald <fitzgen@gmail.com>"]
exclude = [
"/.github/*",
@@ -30,7 +30,7 @@ categories = [
"rust-patterns",
"no-std",
]
-license = "MIT/Apache-2.0"
+license = "MIT OR Apache-2.0"
repository = "https://github.com/fitzgen/bumpalo"
[package.metadata.docs.rs]
@@ -70,3 +70,4 @@ allocator_api = []
boxed = []
collections = []
default = []
+std = []
diff --git a/vendor/bumpalo/README.md b/vendor/bumpalo/README.md
index 6a83b8c39..a21304152 100644
--- a/vendor/bumpalo/README.md
+++ b/vendor/bumpalo/README.md
@@ -155,7 +155,14 @@ in its space itself.
### `#![no_std]` Support
-Bumpalo is a `no_std` crate. It depends only on the `alloc` and `core` crates.
+Bumpalo is a `no_std` crate by default. It depends only on the `alloc` and `core` crates.
+
+### `std` Support
+
+You can optionally decide to enable the `std` feature in order to enable some
+std only trait implementations for some collections:
+
+* `std::io::Write` for `Vec<'bump, u8>`
### Thread support
@@ -179,7 +186,7 @@ First, enable the `allocator_api` feature in your `Cargo.toml`:
```toml
[dependencies]
-bumpalo = { version = "3.9", features = ["allocator_api"] }
+bumpalo = { version = "3", features = ["allocator_api"] }
```
Next, enable the `allocator_api` nightly Rust feature in your `src/lib.rs` or
diff --git a/vendor/bumpalo/src/collections/vec.rs b/vendor/bumpalo/src/collections/vec.rs
index 312aa055b..66c821b10 100644
--- a/vendor/bumpalo/src/collections/vec.rs
+++ b/vendor/bumpalo/src/collections/vec.rs
@@ -104,6 +104,8 @@ use core::ops::{Index, IndexMut, RangeBounds};
use core::ptr;
use core::ptr::NonNull;
use core::slice;
+#[cfg(feature = "std")]
+use std::io;
unsafe fn arith_offset<T>(p: *const T, offset: isize) -> *const T {
p.offset(offset)
@@ -2612,3 +2614,23 @@ where
}
}
}
+
+#[cfg(feature = "std")]
+impl<'bump> io::Write for Vec<'bump, u8> {
+ #[inline]
+ fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
+ self.extend_from_slice(buf);
+ Ok(buf.len())
+ }
+
+ #[inline]
+ fn write_all(&mut self, buf: &[u8]) -> io::Result<()> {
+ self.extend_from_slice(buf);
+ Ok(())
+ }
+
+ #[inline]
+ fn flush(&mut self) -> io::Result<()> {
+ Ok(())
+ }
+}
diff --git a/vendor/bumpalo/src/lib.rs b/vendor/bumpalo/src/lib.rs
index c25e03ca3..a173321e8 100755
--- a/vendor/bumpalo/src/lib.rs
+++ b/vendor/bumpalo/src/lib.rs
@@ -1,7 +1,7 @@
#![doc = include_str!("../README.md")]
#![deny(missing_debug_implementations)]
#![deny(missing_docs)]
-#![no_std]
+#![cfg_attr(not(feature = "std"), no_std)]
#![cfg_attr(feature = "allocator_api", feature(allocator_api))]
#[doc(hidden)]
@@ -1430,7 +1430,7 @@ impl Bump {
let aligned_ptr = ptr.wrapping_sub(rem);
if aligned_ptr >= start {
- let aligned_ptr = NonNull::new_unchecked(aligned_ptr as *mut u8);
+ let aligned_ptr = NonNull::new_unchecked(aligned_ptr);
footer.ptr.set(aligned_ptr);
Some(aligned_ptr)
} else {
@@ -1455,7 +1455,7 @@ impl Bump {
let current_footer = self.current_chunk_footer.get();
let current_footer = unsafe { current_footer.as_ref() };
- current_footer as *const _ as usize - current_footer.data.as_ptr() as usize
+ current_footer.ptr.get().as_ptr() as usize - current_footer.data.as_ptr() as usize
}
/// Slow path allocation for when we need to allocate a new chunk from the
@@ -1529,7 +1529,7 @@ impl Bump {
ptr,
new_footer
);
- let ptr = NonNull::new_unchecked(ptr as *mut u8);
+ let ptr = NonNull::new_unchecked(ptr);
new_footer.ptr.set(ptr);
// Return a pointer to the freshly allocated region in this chunk.
diff --git a/vendor/bytecount/.cargo-checksum.json b/vendor/bytecount/.cargo-checksum.json
index 9873561f5..dc54fec7c 100644
--- a/vendor/bytecount/.cargo-checksum.json
+++ b/vendor/bytecount/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"6c717facc1c70c392d84a7016618b5dab0de6288bed23ca8487b53066a5b46d6","LICENSE.Apache2":"b40930bbcf80744c86c46a12bc9da056641d722716c378f5659b9e555ef833e1","LICENSE.MIT":"a5dea80c1f383cb5f80a6bb0da5e55a2beb9f24adb123ce6300af2cbaaa3bf65","README.md":"82e221d833de855297b37c2ab48547ede0c7db5a7c303dd9fc314f7250abe456","benches/bench.rs":"085734cc7b3c3f6da30eeab8bf98d95fc2a9c0886c63f93edd98df356674bf8e","ci/miri.sh":"fb8d52144352c6b09ac925fb089177d30f46ab8b17dd378d68e414c6b6b5b709","src/integer_simd.rs":"5cd97182cd5aea5c5eab1e1cb5d9d409f263de9083c8e69cd7f9d1dd379dfb52","src/lib.rs":"000a6591306852b9ec892995cd6ab4247b8a727f4befa9dd6a9851c20a5f6552","src/naive.rs":"068dae3fba7d721227bb7a9ed9bdfe4a12cfb373a9de4852d6a517630fabf0c8","src/simd/generic.rs":"2f01963147fa97b5dbd7a166975e6f6660d3197f4b6d0a78ed138da9f78a269e","src/simd/mod.rs":"8ce4aac79520bd0d49f6e48471bf32a2d6d3cd8a3a1c65e393f4f4fae6c7f502","src/simd/x86_avx2.rs":"0345d5fbb74d907e3e6cd0d361427ce75645e7abf4c6efa17ef20ee8a4d8fc18","src/simd/x86_sse2.rs":"e7caab115d77118e6a7bca8daea4a9b6d2d318bd3e76ddc23dc4f023aced1f77","tests/check.rs":"e5075559155a1aae6326932e68410996ca52e4140db4b26eb8b9f03a07241b87"},"package":"2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c"} \ No newline at end of file
+{"files":{"Cargo.toml":"f97173c1fe76d88af268e9f9b352b28778bb557c843d906f331c4835153ebd68","LICENSE.Apache2":"b40930bbcf80744c86c46a12bc9da056641d722716c378f5659b9e555ef833e1","LICENSE.MIT":"a5dea80c1f383cb5f80a6bb0da5e55a2beb9f24adb123ce6300af2cbaaa3bf65","README.md":"7635ab65fbcaf6a8c9be2352061d32ec36df029a04b4d7d1e2dc0451cc57a883","benches/bench.rs":"c40a5b875fc0620c5f2e16ab0f62d9b78d09bf9e6edd4c5b5e781dfbaf892030","ci/miri.sh":"d633bcd4e428b7d713c05b847c88a3e375dbc42ecf9c7d4fd375efccfeb83fac","src/integer_simd.rs":"a4f60db4a902d458d0bc67dd918bc940de351c73133a81f39de21f70af2b52d2","src/lib.rs":"6be1425d3dfbe104cdfe7273e5a9e014953a1d7eb172b21d911af6f5e6f09585","src/naive.rs":"ea613ac2342fd55cd6a2dc3e5b71f65cc6d65ae1a5c302da8270f2e8cf16d503","src/simd/aarch64.rs":"aef42ab239ecd39cb59c939ae9a8e78ff0a02dd40c6320d835639f8d1ca494df","src/simd/generic.rs":"107bd263df09fa91fb551b4e96ef64a604aa1819e55e50d777f15fbb8eb02aae","src/simd/mod.rs":"570af12dec20692b9f92d779c9b9d3923a4f80d18cf81f35e73cf29d8346054c","src/simd/x86_avx2.rs":"48adfbc7a8a21968d67d14f429df00cf83bceb26b055c89cb708fd300edf771e","src/simd/x86_sse2.rs":"cfeb0468dbeb51e3e12a058f93b4eebaa262f0d31a2dbe2ab57c088143f21baa","tests/check.rs":"599d9f9cd296ad08e099e176d9ec9dabfde9782429fd405d33395564e7507ad0"},"package":"ad152d03a2c813c80bb94fedbf3a3f02b28f793e39e7c214c8a0bcc196343de7"} \ No newline at end of file
diff --git a/vendor/bytecount/Cargo.toml b/vendor/bytecount/Cargo.toml
index 4197a82ca..0525fcbe6 100644
--- a/vendor/bytecount/Cargo.toml
+++ b/vendor/bytecount/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2018"
name = "bytecount"
-version = "0.6.3"
+version = "0.6.4"
authors = [
"Andre Bogus <bogusandre@gmail.de>",
"Joshua Landau <joshua@landau.ws>",
@@ -40,10 +40,9 @@ harness = false
[dependencies.packed_simd]
version = "0.3.8"
optional = true
-package = "packed_simd_2"
[dev-dependencies.criterion]
-version = "0.3"
+version = "0.4"
default-features = false
[dev-dependencies.quickcheck]
diff --git a/vendor/bytecount/README.md b/vendor/bytecount/README.md
index 9ec89820f..91aa2101a 100644
--- a/vendor/bytecount/README.md
+++ b/vendor/bytecount/README.md
@@ -2,7 +2,7 @@
Counting bytes really fast
-[![Build Status](https://travis-ci.org/llogiq/bytecount.svg?branch=master)](https://travis-ci.org/llogiq/bytecount)
+[![Continuous integration](https://github.com/llogiq/bytecount/actions/workflows/ci.yml/badge.svg)](https://github.com/llogiq/bytecount/actions/workflows/ci.yml)
[![Windows build status](https://ci.appveyor.com/api/projects/status/github/llogiq/bytecount?svg=true)](https://ci.appveyor.com/project/llogiq/bytecount)
[![Current Version](https://img.shields.io/crates/v/bytecount.svg)](https://crates.io/crates/bytecount)
[![License: Apache 2.0/MIT](https://img.shields.io/crates/l/bytecount.svg)](#license)
@@ -12,7 +12,7 @@ The [newlinebench](https://github.com/llogiq/newlinebench) repository has furthe
To use bytecount in your crate, if you have [cargo-edit](https://github.com/killercup/cargo-edit), just type
`cargo add bytecount` in a terminal with the crate root as the current path. Otherwise you can manually edit your
-`Cargo.toml` to add `bytecount = 0.6.3` to your `[dependencies]` section.
+`Cargo.toml` to add `bytecount = 0.6.4` to your `[dependencies]` section.
In your crate root (`lib.rs` or `main.rs`, depending on if you are writing a
library or application), add `extern crate bytecount;`. Now you can simply use
diff --git a/vendor/bytecount/benches/bench.rs b/vendor/bytecount/benches/bench.rs
index 85d04dbb4..2e091fccc 100644
--- a/vendor/bytecount/benches/bench.rs
+++ b/vendor/bytecount/benches/bench.rs
@@ -1,17 +1,14 @@
#[macro_use]
extern crate criterion;
-extern crate rand;
extern crate bytecount;
+extern crate rand;
+use criterion::{Bencher, BenchmarkId, Criterion};
+use rand::RngCore;
use std::env;
use std::time::Duration;
-use rand::RngCore;
-use criterion::{Bencher, Criterion, ParameterizedBenchmark};
-use bytecount::{
- count, naive_count, naive_count_32,
- num_chars, naive_num_chars,
-};
+use bytecount::{count, naive_count, naive_count_32, naive_num_chars, num_chars};
fn random_bytes(len: usize) -> Vec<u8> {
let mut result = vec![0; len];
@@ -19,25 +16,29 @@ fn random_bytes(len: usize) -> Vec<u8> {
result
}
-static COUNTS : &[usize] = &[0, 10, 20, 30, 40, 50, 60, 70, 80, 90,
- 100, 120, 140, 170, 210, 250, 300, 400, 500, 600, 700, 800, 900,
- 1000, 1_000, 1_200, 1_400, 1_700, 2_100, 2_500, 3_000, 4_000,
- 5_000, 6_000, 7_000, 8_000, 9_000, 10_000, 12_000, 14_000, 17_000,
- 21_000, 25_000, 30_000, 100_000, 1_000_000];
+static COUNTS: &[usize] = &[
+ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 120, 140, 170, 210, 250, 300, 400, 500, 600, 700,
+ 800, 900, 1_000, 1_200, 1_400, 1_700, 2_100, 2_500, 3_000, 4_000, 5_000, 6_000, 7_000, 8_000,
+ 9_000, 10_000, 12_000, 14_000, 17_000, 21_000, 25_000, 30_000, 100_000, 1_000_000,
+];
fn get_counts() -> Vec<usize> {
- env::var("COUNTS").map(
- |s| s.split(',').map(
- |n| str::parse::<usize>(n).unwrap()).collect())
+ env::var("COUNTS")
+ .map(|s| {
+ s.split(',')
+ .map(|n| str::parse::<usize>(n).unwrap())
+ .collect()
+ })
.unwrap_or(COUNTS.to_owned())
}
fn get_config() -> Criterion {
if env::var("CI").is_ok() {
- Criterion::default().nresamples(5_000)
- .without_plots()
- .measurement_time(Duration::new(2, 0))
- .warm_up_time(Duration::new(1, 0))
+ Criterion::default()
+ .nresamples(5_000)
+ .without_plots()
+ .measurement_time(Duration::new(2, 0))
+ .warm_up_time(Duration::new(1, 0))
} else {
Criterion::default()
}
@@ -45,37 +46,43 @@ fn get_config() -> Criterion {
fn bench_counts(criterion: &mut Criterion) {
fn naive(b: &mut Bencher, s: &usize) {
- let haystack = random_bytes(*s);
+ let haystack = random_bytes(*s);
b.iter(|| naive_count(&haystack, 10))
}
fn naive_32(b: &mut Bencher, s: &usize) {
- let haystack = random_bytes(*s);
+ let haystack = random_bytes(*s);
b.iter(|| naive_count_32(&haystack, 10))
}
fn hyper(b: &mut Bencher, s: &usize) {
- let haystack = random_bytes(*s);
+ let haystack = random_bytes(*s);
b.iter(|| count(&haystack, 10))
}
let counts = get_counts();
- criterion.bench("counts",
- ParameterizedBenchmark::new("naive", naive, counts)
- .with_function("naive_32", naive_32)
- .with_function("hyper", hyper));
+ let mut group = criterion.benchmark_group("counts");
+ for count in counts {
+ group.throughput(criterion::Throughput::Bytes(count as u64));
+ group.bench_with_input(BenchmarkId::new("naive", count), &count, naive);
+ group.bench_with_input(BenchmarkId::new("naive_32", count), &count, naive_32);
+ group.bench_with_input(BenchmarkId::new("hyper", count), &count, hyper);
+ }
}
fn bench_num_chars(criterion: &mut Criterion) {
fn naive(b: &mut Bencher, s: &usize) {
- let haystack = random_bytes(*s);
+ let haystack = random_bytes(*s);
b.iter(|| naive_num_chars(&haystack))
}
fn hyper(b: &mut Bencher, s: &usize) {
- let haystack = random_bytes(*s);
+ let haystack = random_bytes(*s);
b.iter(|| num_chars(&haystack))
}
let counts = get_counts();
- criterion.bench("num_chars",
- ParameterizedBenchmark::new("naive", naive, counts)
- .with_function("hyper", hyper));
+ let mut group = criterion.benchmark_group("num_chars");
+ for count in counts {
+ group.throughput(criterion::Throughput::Bytes(count as u64));
+ group.bench_with_input(BenchmarkId::new("naive", count), &count, naive);
+ group.bench_with_input(BenchmarkId::new("hyper", count), &count, hyper);
+ }
}
criterion_group!(name = count_bench; config = get_config(); targets = bench_counts);
diff --git a/vendor/bytecount/ci/miri.sh b/vendor/bytecount/ci/miri.sh
index 8704ebc1d..5cb6f82dc 100755..100644
--- a/vendor/bytecount/ci/miri.sh
+++ b/vendor/bytecount/ci/miri.sh
@@ -9,7 +9,4 @@ rustup component add miri
# Run tests
cargo miri test
-cargo miri test --target=mips64-unknown-linux-gnuabi64 # big-endian architecture
-
-# Restore old state in case Travis uses this cache for other jobs.
-rustup default nightly
+cargo miri test --target=mips64-unknown-linux-gnuabi64 # big-endian architecture \ No newline at end of file
diff --git a/vendor/bytecount/src/integer_simd.rs b/vendor/bytecount/src/integer_simd.rs
index 48f2ee8d9..060419462 100644
--- a/vendor/bytecount/src/integer_simd.rs
+++ b/vendor/bytecount/src/integer_simd.rs
@@ -13,7 +13,7 @@ unsafe fn usize_load_unchecked(bytes: &[u8], offset: usize) -> usize {
ptr::copy_nonoverlapping(
bytes.as_ptr().add(offset),
&mut output as *mut usize as *mut u8,
- mem::size_of::<usize>()
+ mem::size_of::<usize>(),
);
output
}
@@ -65,11 +65,17 @@ pub fn chunk_count(haystack: &[u8], needle: u8) -> usize {
// 8
let mut counts = 0;
for i in 0..(haystack.len() - offset) / chunksize {
- counts += bytewise_equal(usize_load_unchecked(haystack, offset + i * chunksize), needles);
+ counts += bytewise_equal(
+ usize_load_unchecked(haystack, offset + i * chunksize),
+ needles,
+ );
}
if haystack.len() % 8 != 0 {
let mask = usize::from_le(!(!0 >> ((haystack.len() % chunksize) * 8)));
- counts += bytewise_equal(usize_load_unchecked(haystack, haystack.len() - chunksize), needles) & mask;
+ counts += bytewise_equal(
+ usize_load_unchecked(haystack, haystack.len() - chunksize),
+ needles,
+ ) & mask;
}
count += sum_usize(counts);
@@ -98,11 +104,15 @@ pub fn chunk_num_chars(utf8_chars: &[u8]) -> usize {
// 8
let mut counts = 0;
for i in 0..(utf8_chars.len() - offset) / chunksize {
- counts += is_leading_utf8_byte(usize_load_unchecked(utf8_chars, offset + i * chunksize));
+ counts +=
+ is_leading_utf8_byte(usize_load_unchecked(utf8_chars, offset + i * chunksize));
}
if utf8_chars.len() % 8 != 0 {
let mask = usize::from_le(!(!0 >> ((utf8_chars.len() % chunksize) * 8)));
- counts += is_leading_utf8_byte(usize_load_unchecked(utf8_chars, utf8_chars.len() - chunksize)) & mask;
+ counts += is_leading_utf8_byte(usize_load_unchecked(
+ utf8_chars,
+ utf8_chars.len() - chunksize,
+ )) & mask;
}
count += sum_usize(counts);
diff --git a/vendor/bytecount/src/lib.rs b/vendor/bytecount/src/lib.rs
index ef4235c26..24f40182b 100644
--- a/vendor/bytecount/src/lib.rs
+++ b/vendor/bytecount/src/lib.rs
@@ -32,7 +32,6 @@
//! still on small strings.
#![deny(missing_docs)]
-
#![cfg_attr(not(feature = "runtime-dispatch-simd"), no_std)]
#[cfg(not(feature = "runtime-dispatch-simd"))]
@@ -45,7 +44,11 @@ pub use naive::*;
mod integer_simd;
#[cfg(any(
- all(feature = "runtime-dispatch-simd", any(target_arch = "x86", target_arch = "x86_64")),
+ all(
+ feature = "runtime-dispatch-simd",
+ any(target_arch = "x86", target_arch = "x86_64")
+ ),
+ target_arch = "aarch64",
feature = "generic-simd"
))]
mod simd;
@@ -64,7 +67,9 @@ pub fn count(haystack: &[u8], needle: u8) -> usize {
#[cfg(all(feature = "runtime-dispatch-simd", target_arch = "x86_64"))]
{
if is_x86_feature_detected!("avx2") {
- unsafe { return simd::x86_avx2::chunk_count(haystack, needle); }
+ unsafe {
+ return simd::x86_avx2::chunk_count(haystack, needle);
+ }
}
}
@@ -80,7 +85,15 @@ pub fn count(haystack: &[u8], needle: u8) -> usize {
))]
{
if is_x86_feature_detected!("sse2") {
- unsafe { return simd::x86_sse2::chunk_count(haystack, needle); }
+ unsafe {
+ return simd::x86_sse2::chunk_count(haystack, needle);
+ }
+ }
+ }
+ #[cfg(all(target_arch = "aarch64", not(feature = "generic_simd")))]
+ {
+ unsafe {
+ return simd::aarch64::chunk_count(haystack, needle);
}
}
}
@@ -109,7 +122,9 @@ pub fn num_chars(utf8_chars: &[u8]) -> usize {
#[cfg(all(feature = "runtime-dispatch-simd", target_arch = "x86_64"))]
{
if is_x86_feature_detected!("avx2") {
- unsafe { return simd::x86_avx2::chunk_num_chars(utf8_chars); }
+ unsafe {
+ return simd::x86_avx2::chunk_num_chars(utf8_chars);
+ }
}
}
@@ -125,7 +140,15 @@ pub fn num_chars(utf8_chars: &[u8]) -> usize {
))]
{
if is_x86_feature_detected!("sse2") {
- unsafe { return simd::x86_sse2::chunk_num_chars(utf8_chars); }
+ unsafe {
+ return simd::x86_sse2::chunk_num_chars(utf8_chars);
+ }
+ }
+ }
+ #[cfg(all(target_arch = "aarch64", not(feature = "generic_simd")))]
+ {
+ unsafe {
+ return simd::aarch64::chunk_num_chars(utf8_chars);
}
}
}
diff --git a/vendor/bytecount/src/naive.rs b/vendor/bytecount/src/naive.rs
index 315c4b675..e3f6cf6c6 100644
--- a/vendor/bytecount/src/naive.rs
+++ b/vendor/bytecount/src/naive.rs
@@ -22,7 +22,9 @@ pub fn naive_count_32(haystack: &[u8], needle: u8) -> usize {
/// assert_eq!(number_of_spaces, 6);
/// ```
pub fn naive_count(utf8_chars: &[u8], needle: u8) -> usize {
- utf8_chars.iter().fold(0, |n, c| n + (*c == needle) as usize)
+ utf8_chars
+ .iter()
+ .fold(0, |n, c| n + (*c == needle) as usize)
}
/// Count the number of UTF-8 encoded Unicode codepoints in a slice of bytes, simple
@@ -38,5 +40,8 @@ pub fn naive_count(utf8_chars: &[u8], needle: u8) -> usize {
/// assert_eq!(char_count, 4);
/// ```
pub fn naive_num_chars(utf8_chars: &[u8]) -> usize {
- utf8_chars.iter().filter(|&&byte| (byte >> 6) != 0b10).count()
+ utf8_chars
+ .iter()
+ .filter(|&&byte| (byte >> 6) != 0b10)
+ .count()
}
diff --git a/vendor/bytecount/src/simd/aarch64.rs b/vendor/bytecount/src/simd/aarch64.rs
new file mode 100644
index 000000000..6544355fa
--- /dev/null
+++ b/vendor/bytecount/src/simd/aarch64.rs
@@ -0,0 +1,157 @@
+use core::arch::aarch64::{
+ uint8x16_t, uint8x16x4_t, vaddlvq_u8, vandq_u8, vceqq_u8, vdupq_n_u8, vld1q_u8, vld1q_u8_x4,
+ vmvnq_u8, vsubq_u8,
+};
+
+const MASK: [u8; 32] = [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255,
+];
+
+#[target_feature(enable = "neon")]
+unsafe fn u8x16_from_offset(slice: &[u8], offset: usize) -> uint8x16_t {
+ debug_assert!(
+ offset + 16 <= slice.len(),
+ "{} + 16 ≥ {}",
+ offset,
+ slice.len()
+ );
+ vld1q_u8(slice.as_ptr().add(offset) as *const _) // TODO: does this need to be aligned?
+}
+
+#[target_feature(enable = "neon")]
+unsafe fn u8x16_x4_from_offset(slice: &[u8], offset: usize) -> uint8x16x4_t {
+ debug_assert!(
+ offset + 64 <= slice.len(),
+ "{} + 64 ≥ {}",
+ offset,
+ slice.len()
+ );
+ vld1q_u8_x4(slice.as_ptr().add(offset) as *const _)
+}
+
+#[target_feature(enable = "neon")]
+unsafe fn sum(u8s: uint8x16_t) -> usize {
+ vaddlvq_u8(u8s) as usize
+}
+
+#[target_feature(enable = "neon")]
+pub unsafe fn chunk_count(haystack: &[u8], needle: u8) -> usize {
+ assert!(haystack.len() >= 16);
+
+ let mut offset = 0;
+ let mut count = 0;
+
+ let needles = vdupq_n_u8(needle);
+
+ // 16320
+ while haystack.len() >= offset + 64 * 255 {
+ let (mut count1, mut count2, mut count3, mut count4) =
+ (vdupq_n_u8(0), vdupq_n_u8(0), vdupq_n_u8(0), vdupq_n_u8(0));
+ for _ in 0..255 {
+ let uint8x16x4_t(h1, h2, h3, h4) = u8x16_x4_from_offset(haystack, offset);
+ count1 = vsubq_u8(count1, vceqq_u8(h1, needles));
+ count2 = vsubq_u8(count2, vceqq_u8(h2, needles));
+ count3 = vsubq_u8(count3, vceqq_u8(h3, needles));
+ count4 = vsubq_u8(count4, vceqq_u8(h4, needles));
+ offset += 64;
+ }
+ count += sum(count1) + sum(count2) + sum(count3) + sum(count4);
+ }
+
+ // 64
+ let (mut count1, mut count2, mut count3, mut count4) =
+ (vdupq_n_u8(0), vdupq_n_u8(0), vdupq_n_u8(0), vdupq_n_u8(0));
+ for _ in 0..(haystack.len() - offset) / 64 {
+ let uint8x16x4_t(h1, h2, h3, h4) = u8x16_x4_from_offset(haystack, offset);
+ count1 = vsubq_u8(count1, vceqq_u8(h1, needles));
+ count2 = vsubq_u8(count2, vceqq_u8(h2, needles));
+ count3 = vsubq_u8(count3, vceqq_u8(h3, needles));
+ count4 = vsubq_u8(count4, vceqq_u8(h4, needles));
+ offset += 64;
+ }
+ count += sum(count1) + sum(count2) + sum(count3) + sum(count4);
+
+ let mut counts = vdupq_n_u8(0);
+ // 16
+ for i in 0..(haystack.len() - offset) / 16 {
+ counts = vsubq_u8(
+ counts,
+ vceqq_u8(u8x16_from_offset(haystack, offset + i * 16), needles),
+ );
+ }
+ if haystack.len() % 16 != 0 {
+ counts = vsubq_u8(
+ counts,
+ vandq_u8(
+ vceqq_u8(u8x16_from_offset(haystack, haystack.len() - 16), needles),
+ u8x16_from_offset(&MASK, haystack.len() % 16),
+ ),
+ );
+ }
+ count + sum(counts)
+}
+
+#[target_feature(enable = "neon")]
+unsafe fn is_leading_utf8_byte(u8s: uint8x16_t) -> uint8x16_t {
+ vmvnq_u8(vceqq_u8(
+ vandq_u8(u8s, vdupq_n_u8(0b1100_0000)),
+ vdupq_n_u8(0b1000_0000),
+ ))
+}
+
+#[target_feature(enable = "neon")]
+pub unsafe fn chunk_num_chars(utf8_chars: &[u8]) -> usize {
+ assert!(utf8_chars.len() >= 16);
+
+ let mut offset = 0;
+ let mut count = 0;
+
+ // 4080
+ while utf8_chars.len() >= offset + 16 * 255 {
+ let mut counts = vdupq_n_u8(0);
+
+ for _ in 0..255 {
+ counts = vsubq_u8(
+ counts,
+ is_leading_utf8_byte(u8x16_from_offset(utf8_chars, offset)),
+ );
+ offset += 16;
+ }
+ count += sum(counts);
+ }
+
+ // 2048
+ if utf8_chars.len() >= offset + 16 * 128 {
+ let mut counts = vdupq_n_u8(0);
+ for _ in 0..128 {
+ counts = vsubq_u8(
+ counts,
+ is_leading_utf8_byte(u8x16_from_offset(utf8_chars, offset)),
+ );
+ offset += 16;
+ }
+ count += sum(counts);
+ }
+
+ // 16
+ let mut counts = vdupq_n_u8(0);
+ for i in 0..(utf8_chars.len() - offset) / 16 {
+ counts = vsubq_u8(
+ counts,
+ is_leading_utf8_byte(u8x16_from_offset(utf8_chars, offset + i * 16)),
+ );
+ }
+ if utf8_chars.len() % 16 != 0 {
+ counts = vsubq_u8(
+ counts,
+ vandq_u8(
+ is_leading_utf8_byte(u8x16_from_offset(utf8_chars, utf8_chars.len() - 16)),
+ u8x16_from_offset(&MASK, utf8_chars.len() % 16),
+ ),
+ );
+ }
+ count += sum(counts);
+
+ count
+}
diff --git a/vendor/bytecount/src/simd/generic.rs b/vendor/bytecount/src/simd/generic.rs
index 2031e730e..640ccd891 100644
--- a/vendor/bytecount/src/simd/generic.rs
+++ b/vendor/bytecount/src/simd/generic.rs
@@ -8,10 +8,9 @@ use std::mem;
use self::packed_simd::{u8x32, u8x64, FromCast};
const MASK: [u8; 64] = [
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
];
unsafe fn u8x64_from_offset(slice: &[u8], offset: usize) -> u8x64 {
@@ -66,15 +65,17 @@ pub fn chunk_count(haystack: &[u8], needle: u8) -> usize {
// 32
let mut counts = u8x32::splat(0);
for i in 0..(haystack.len() - offset) / 32 {
- counts -= u8x32::from_cast(u8x32_from_offset(haystack, offset + i * 32).eq(needles_x32));
+ counts -=
+ u8x32::from_cast(u8x32_from_offset(haystack, offset + i * 32).eq(needles_x32));
}
count += sum_x32(&counts);
// Straggler; need to reset counts because prior loop can run 255 times
counts = u8x32::splat(0);
if haystack.len() % 32 != 0 {
- counts -= u8x32::from_cast(u8x32_from_offset(haystack, haystack.len() - 32).eq(needles_x32)) &
- u8x32_from_offset(&MASK, haystack.len() % 32);
+ counts -=
+ u8x32::from_cast(u8x32_from_offset(haystack, haystack.len() - 32).eq(needles_x32))
+ & u8x32_from_offset(&MASK, haystack.len() % 32);
}
count += sum_x32(&counts);
@@ -127,8 +128,9 @@ pub fn chunk_num_chars(utf8_chars: &[u8]) -> usize {
// Straggler; need to reset counts because prior loop can run 255 times
counts = u8x32::splat(0);
if utf8_chars.len() % 32 != 0 {
- counts -= is_leading_utf8_byte_x32(u8x32_from_offset(utf8_chars, utf8_chars.len() - 32)) &
- u8x32_from_offset(&MASK, utf8_chars.len() % 32);
+ counts -=
+ is_leading_utf8_byte_x32(u8x32_from_offset(utf8_chars, utf8_chars.len() - 32))
+ & u8x32_from_offset(&MASK, utf8_chars.len() % 32);
}
count += sum_x32(&counts);
diff --git a/vendor/bytecount/src/simd/mod.rs b/vendor/bytecount/src/simd/mod.rs
index d144e1847..fa9857546 100644
--- a/vendor/bytecount/src/simd/mod.rs
+++ b/vendor/bytecount/src/simd/mod.rs
@@ -15,3 +15,7 @@ pub mod x86_sse2;
// Runtime feature detection is not available with no_std.
#[cfg(all(feature = "runtime-dispatch-simd", target_arch = "x86_64"))]
pub mod x86_avx2;
+
+/// Modern ARM machines are also quite capable thanks to NEON
+#[cfg(target_arch = "aarch64")]
+pub mod aarch64;
diff --git a/vendor/bytecount/src/simd/x86_avx2.rs b/vendor/bytecount/src/simd/x86_avx2.rs
index 90a55c0fb..ea191e278 100644
--- a/vendor/bytecount/src/simd/x86_avx2.rs
+++ b/vendor/bytecount/src/simd/x86_avx2.rs
@@ -1,14 +1,6 @@
use std::arch::x86_64::{
- __m256i,
- _mm256_and_si256,
- _mm256_cmpeq_epi8,
- _mm256_extract_epi64,
- _mm256_loadu_si256,
- _mm256_sad_epu8,
- _mm256_set1_epi8,
- _mm256_setzero_si256,
- _mm256_sub_epi8,
- _mm256_xor_si256,
+ __m256i, _mm256_and_si256, _mm256_cmpeq_epi8, _mm256_extract_epi64, _mm256_loadu_si256,
+ _mm256_sad_epu8, _mm256_set1_epi8, _mm256_setzero_si256, _mm256_sub_epi8, _mm256_xor_si256,
};
#[target_feature(enable = "avx2")]
@@ -22,10 +14,9 @@ pub unsafe fn mm256_cmpneq_epi8(a: __m256i, b: __m256i) -> __m256i {
}
const MASK: [u8; 64] = [
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
];
#[target_feature(enable = "avx2")]
@@ -36,10 +27,10 @@ unsafe fn mm256_from_offset(slice: &[u8], offset: usize) -> __m256i {
#[target_feature(enable = "avx2")]
unsafe fn sum(u8s: &__m256i) -> usize {
let sums = _mm256_sad_epu8(*u8s, _mm256_setzero_si256());
- (
- _mm256_extract_epi64(sums, 0) + _mm256_extract_epi64(sums, 1) +
- _mm256_extract_epi64(sums, 2) + _mm256_extract_epi64(sums, 3)
- ) as usize
+ (_mm256_extract_epi64(sums, 0)
+ + _mm256_extract_epi64(sums, 1)
+ + _mm256_extract_epi64(sums, 2)
+ + _mm256_extract_epi64(sums, 3)) as usize
}
#[target_feature(enable = "avx2")]
@@ -57,7 +48,7 @@ pub unsafe fn chunk_count(haystack: &[u8], needle: u8) -> usize {
for _ in 0..255 {
counts = _mm256_sub_epi8(
counts,
- _mm256_cmpeq_epi8(mm256_from_offset(haystack, offset), needles)
+ _mm256_cmpeq_epi8(mm256_from_offset(haystack, offset), needles),
);
offset += 32;
}
@@ -70,7 +61,7 @@ pub unsafe fn chunk_count(haystack: &[u8], needle: u8) -> usize {
for _ in 0..128 {
counts = _mm256_sub_epi8(
counts,
- _mm256_cmpeq_epi8(mm256_from_offset(haystack, offset), needles)
+ _mm256_cmpeq_epi8(mm256_from_offset(haystack, offset), needles),
);
offset += 32;
}
@@ -82,7 +73,7 @@ pub unsafe fn chunk_count(haystack: &[u8], needle: u8) -> usize {
for i in 0..(haystack.len() - offset) / 32 {
counts = _mm256_sub_epi8(
counts,
- _mm256_cmpeq_epi8(mm256_from_offset(haystack, offset + i * 32), needles)
+ _mm256_cmpeq_epi8(mm256_from_offset(haystack, offset + i * 32), needles),
);
}
if haystack.len() % 32 != 0 {
@@ -90,8 +81,8 @@ pub unsafe fn chunk_count(haystack: &[u8], needle: u8) -> usize {
counts,
_mm256_and_si256(
_mm256_cmpeq_epi8(mm256_from_offset(haystack, haystack.len() - 32), needles),
- mm256_from_offset(&MASK, haystack.len() % 32)
- )
+ mm256_from_offset(&MASK, haystack.len() % 32),
+ ),
);
}
count += sum(&counts);
@@ -101,7 +92,10 @@ pub unsafe fn chunk_count(haystack: &[u8], needle: u8) -> usize {
#[target_feature(enable = "avx2")]
unsafe fn is_leading_utf8_byte(u8s: __m256i) -> __m256i {
- mm256_cmpneq_epi8(_mm256_and_si256(u8s, _mm256_set1_epu8(0b1100_0000)), _mm256_set1_epu8(0b1000_0000))
+ mm256_cmpneq_epi8(
+ _mm256_and_si256(u8s, _mm256_set1_epu8(0b1100_0000)),
+ _mm256_set1_epu8(0b1000_0000),
+ )
}
#[target_feature(enable = "avx2")]
@@ -118,7 +112,7 @@ pub unsafe fn chunk_num_chars(utf8_chars: &[u8]) -> usize {
for _ in 0..255 {
counts = _mm256_sub_epi8(
counts,
- is_leading_utf8_byte(mm256_from_offset(utf8_chars, offset))
+ is_leading_utf8_byte(mm256_from_offset(utf8_chars, offset)),
);
offset += 32;
}
@@ -131,7 +125,7 @@ pub unsafe fn chunk_num_chars(utf8_chars: &[u8]) -> usize {
for _ in 0..128 {
counts = _mm256_sub_epi8(
counts,
- is_leading_utf8_byte(mm256_from_offset(utf8_chars, offset))
+ is_leading_utf8_byte(mm256_from_offset(utf8_chars, offset)),
);
offset += 32;
}
@@ -143,7 +137,7 @@ pub unsafe fn chunk_num_chars(utf8_chars: &[u8]) -> usize {
for i in 0..(utf8_chars.len() - offset) / 32 {
counts = _mm256_sub_epi8(
counts,
- is_leading_utf8_byte(mm256_from_offset(utf8_chars, offset + i * 32))
+ is_leading_utf8_byte(mm256_from_offset(utf8_chars, offset + i * 32)),
);
}
if utf8_chars.len() % 32 != 0 {
@@ -151,8 +145,8 @@ pub unsafe fn chunk_num_chars(utf8_chars: &[u8]) -> usize {
counts,
_mm256_and_si256(
is_leading_utf8_byte(mm256_from_offset(utf8_chars, utf8_chars.len() - 32)),
- mm256_from_offset(&MASK, utf8_chars.len() % 32)
- )
+ mm256_from_offset(&MASK, utf8_chars.len() % 32),
+ ),
);
}
count += sum(&counts);
diff --git a/vendor/bytecount/src/simd/x86_sse2.rs b/vendor/bytecount/src/simd/x86_sse2.rs
index 63d295eae..59c7d8d1e 100644
--- a/vendor/bytecount/src/simd/x86_sse2.rs
+++ b/vendor/bytecount/src/simd/x86_sse2.rs
@@ -3,11 +3,12 @@ use std::arch::x86::{
__m128i,
_mm_and_si128,
_mm_cmpeq_epi8,
- _mm_extract_epi32,
+ _mm_cvtsi128_si32,
_mm_loadu_si128,
_mm_sad_epu8,
_mm_set1_epi8,
_mm_setzero_si128,
+ _mm_shuffle_epi32,
_mm_sub_epi8,
_mm_xor_si128,
};
@@ -17,11 +18,12 @@ use std::arch::x86_64::{
__m128i,
_mm_and_si128,
_mm_cmpeq_epi8,
- _mm_extract_epi32,
+ _mm_cvtsi128_si32,
_mm_loadu_si128,
_mm_sad_epu8,
_mm_set1_epi8,
_mm_setzero_si128,
+ _mm_shuffle_epi32,
_mm_sub_epi8,
_mm_xor_si128,
};
@@ -49,7 +51,7 @@ unsafe fn mm_from_offset(slice: &[u8], offset: usize) -> __m128i {
#[target_feature(enable = "sse2")]
unsafe fn sum(u8s: &__m128i) -> usize {
let sums = _mm_sad_epu8(*u8s, _mm_setzero_si128());
- (_mm_extract_epi32(sums, 0) + _mm_extract_epi32(sums, 2)) as usize
+ (_mm_cvtsi128_si32(sums) + _mm_cvtsi128_si32(_mm_shuffle_epi32(sums, 0xaa))) as usize
}
#[target_feature(enable = "sse2")]
diff --git a/vendor/bytecount/tests/check.rs b/vendor/bytecount/tests/check.rs
index 147b466fc..5a999509a 100644
--- a/vendor/bytecount/tests/check.rs
+++ b/vendor/bytecount/tests/check.rs
@@ -3,10 +3,7 @@ extern crate bytecount;
extern crate quickcheck;
extern crate rand;
-use bytecount::{
- count, naive_count,
- num_chars, naive_num_chars,
-};
+use bytecount::{count, naive_count, naive_num_chars, num_chars};
use rand::RngCore;
fn random_bytes(len: usize) -> Vec<u8> {
@@ -59,8 +56,6 @@ fn check_count_overflow_many() {
}
}
-
-
quickcheck! {
fn check_num_chars_correct(haystack: Vec<u8>) -> bool {
num_chars(&haystack) == naive_num_chars(&haystack)
diff --git a/vendor/byteyarn/.cargo-checksum.json b/vendor/byteyarn/.cargo-checksum.json
deleted file mode 100644
index 57d38528b..000000000
--- a/vendor/byteyarn/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"Cargo.toml":"39d79ab0a70c48eb71cbe5005efb07e91ebdd33ea140e16fcecb637f47396c8c","LICENSE.md":"cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30","README.md":"bd28680ccef99a774747ced223550280b6beebf0621d5c69804e5b338c405a62","rust-toolchain.toml":"eec2edd95c031d416738b93e3e243e96e2fee9eb72db010be08a07bc695f6c1b","rustfmt.toml":"98164c76a38c770fdaf8fcc7d787aab3ca9fe56326bfbe4ae4dac44ffaa3d0cf","src/boxed.rs":"fbeed4e00d5afcf7b996ed1bcbfca047ccd0ff293e0aeb515f078b7ee1f2dbd1","src/convert.rs":"ee8e1200fde41022d7d512cef9cfb55b6f708f15f5a73340352cdc18951c4ef8","src/lib.rs":"4073f25466d1efa5c1b4a48ec36f81f01109cb13829d026887b56fa6e18a6ebf","src/raw.rs":"025d32775afb4753aeea63dbc436addce03aedb1f3bea487381d573cee823552","src/reffed.rs":"ab67ace303a05ed7e33955e1cf888e8e8f540deb60446860d38cf9dae0d49bca","src/utf8.rs":"1beb18af4074e5d90dba2849724c870955682c040eb262a66499c98bd0f85032"},"package":"a7534301c0ea17abb4db06d75efc7b4b0fa360fce8e175a4330d721c71c942ff"} \ No newline at end of file
diff --git a/vendor/byteyarn/README.md b/vendor/byteyarn/README.md
deleted file mode 100644
index 34d096c78..000000000
--- a/vendor/byteyarn/README.md
+++ /dev/null
@@ -1,59 +0,0 @@
-# byteyarn
-
-`byteyarn` - Space-efficient byte strings 🧶ðŸˆâ€â¬›
-
-A `Yarn` is a highly optimized string type that provides a number of
-useful properties over `String`:
-
-* Always two pointers wide, so it is always passed into and out of functions
- in registers.
-* Small string optimization (SSO) up to 15 bytes on 64-bit architectures.
-* Can be either an owned buffer or a borrowed buffer (like `Cow<str>`).
-* Can be upcast to `'static` lifetime if it was constructed from a
- known-static string.
-
-The main caveat is that `Yarn`s cannot be easily appended to, since they
-do not track an internal capacity, and the slice returned by
-`Yarn::as_slice()` does not have the same pointer stability properties as
-`String` (these are rarely needed, though).
-
----
-
-Yarns are useful for situations in which a copy-on-write string is necessary
-and most of the strings are relatively small. Although `Yarn` itself is
-not `Copy`, there is a separate `YarnRef` type that is. These types
-have equivalent representations, and can be cheaply cast between each other.
-
-The easiest way to create a yarn is with the `yarn!()` and `byarn!()`
-macros, which are similar to `format!()`.
-
-```rust
-// Create a new yarn via `fmt`ing.
-let yarn = yarn!("Answer: {}", 42);
-
-// Convert that yarn into a reference.
-let ry: YarnRef<str> = yarn.as_ref();
-
-// Try up-casting the yarn into an "immortal yarn" without copying.
-let copy: YarnRef<'static, str> = ry.immortalize().unwrap();
-
-assert_eq!(yarn, copy);
-```
-
-Yarns are intended for storing text, either as UTF-8 or as
-probably-UTF-8 bytes; `Yarn<str>` and `Yarn<[u8]>` serve these purposes,
-and can be inter-converted with each other. The `Yarn::utf8_chunks()`
-function can be used to iterate over definitely-valid-UTF-8 chunks within
-a string.
-
-Both kinds of yarns can be `Debug`ed and `Display`ed, and will print out as
-strings would. In particular, invalid UTF-8 is converted into either `\xNN`
-escapes or replacement characters (for `Debug` and `Display` respectively).
-
-```rust
-let invalid = ByteYarn::from_byte(0xff);
-assert_eq!(format!("{invalid:?}"), r#""\xFF""#);
-assert_eq!(format!("{invalid}"), "�");
-```
-
-License: Apache-2.0
diff --git a/vendor/byteyarn/rust-toolchain.toml b/vendor/byteyarn/rust-toolchain.toml
deleted file mode 100644
index f0d51c34a..000000000
--- a/vendor/byteyarn/rust-toolchain.toml
+++ /dev/null
@@ -1,3 +0,0 @@
-[toolchain]
-channel = "1.66.0"
-profile = "default"
diff --git a/vendor/byteyarn/rustfmt.toml b/vendor/byteyarn/rustfmt.toml
deleted file mode 100644
index 5ca604090..000000000
--- a/vendor/byteyarn/rustfmt.toml
+++ /dev/null
@@ -1,2 +0,0 @@
-max_width = 80
-tab_spaces = 2 \ No newline at end of file
diff --git a/vendor/byteyarn/src/boxed.rs b/vendor/byteyarn/src/boxed.rs
deleted file mode 100644
index c14beae88..000000000
--- a/vendor/byteyarn/src/boxed.rs
+++ /dev/null
@@ -1,714 +0,0 @@
-use std::cmp::Ordering;
-use std::fmt;
-use std::hash::Hash;
-use std::hash::Hasher;
-use std::marker::PhantomData;
-use std::mem;
-use std::ops::Deref;
-use std::str;
-use std::str::Utf8Error;
-
-use crate::raw::RawYarn;
-use crate::Utf8Chunks;
-use crate::YarnRef;
-
-#[cfg(doc)]
-use crate::*;
-
-/// An optimized, possibly heap-allocated string type.
-///
-/// This is the core data structure of `byteyarn`. It is a string that can be
-/// borrowed, boxed, or inlined. Generally, you'll want to use the [`Yarn`]
-/// or [`ByteYarn`] type aliases directly, instead.
-///
-/// The lifetime `'a` is the shortest lifetime this yarn can borrow for; often,
-/// this will be `'static`.
-///
-/// See the [crate documentation](crate) for general information.
-#[repr(transparent)]
-pub struct YarnBox<'a, Buf = [u8]>
-where
- Buf: crate::Buf + ?Sized,
-{
- raw: RawYarn,
- _ph: PhantomData<&'a Buf>,
-}
-
-impl<'a, Buf> YarnBox<'a, Buf>
-where
- Buf: crate::Buf + ?Sized,
-{
- /// Returns a reference to an empty yarn of any lifetime.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let empty: &Yarn = Yarn::empty();
- /// assert_eq!(empty, "");
- /// ```
- ///
- /// This will also be found by the `Default` impl for `&YarnBox`.
- pub fn empty<'b>() -> &'b Self {
- unsafe {
- // SAFETY: YarnBox is a transparent wrapper over RawYarn; even though
- // YarnBox has a destructor, this is fine, because this lifetime is 'static
- // and will thus never run a destructor.
- mem::transmute::<&'b RawYarn, &'b Self>(RawYarn::empty())
- }
- }
-
- /// Returns a yarn pointing to the given slice, without copying.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let foo = Yarn::new("Byzantium");
- /// assert_eq!(foo.len(), 9);
- /// ```
- pub const fn new(buf: &'a Buf) -> Self {
- YarnRef::new(buf).to_box()
- }
-
- /// Returns a new yarn containing the contents of the given slice.
- /// This function will always return an inlined string, or `None` if the
- /// given buffer is too big.
- ///
- /// Note that the maximum inlined size is architecture-dependent.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let smol = Yarn::inlined("smol");
- /// assert_eq!(smol.unwrap(), "smol");
- ///
- /// let big = Yarn::inlined("biiiiiiiiiiiiiiig");
- /// assert!(big.is_none());
- /// ```
- pub const fn inlined(buf: &Buf) -> Option<Self> {
- match YarnRef::inlined(buf) {
- Some(y) => Some(y.to_box()),
- None => None,
- }
- }
-
- /// Returns a new yarn that aliases the contents of this yarn.
- ///
- /// In effect, this is like `Copy`ing out of `*self`, by shortening the
- /// lifetime of the yarn.
- ///
- /// ```
- /// # use byteyarn::*;
- /// /// Joins two yarns with "and", but re-uses the buffer if one of them is
- /// /// `None`.
- /// fn and<'a>(a: Option<&'a YarnBox<str>>, b: Option<&'a YarnBox<str>>) -> YarnBox<'a, str> {
- /// match (a, b) {
- /// (Some(a), Some(b)) => yarn!("{a} and {b}"),
- /// (Some(a), None) => a.aliased(),
- /// (None, Some(b)) => b.aliased(),
- /// (None, None) => Yarn::default(),
- /// }
- /// }
- ///
- /// assert_eq!(and(Some(&yarn!("apples")), Some(&yarn!("oranges"))), "apples and oranges");
- /// assert_eq!(and(Some(&yarn!("apples")), None), "apples");
- /// assert_eq!(and(None, None), "");
- /// ```
- ///
- /// This function will be found by `From` impls from `&YarnBox`.
- ///
- /// Note also that unlike `YarnBox::new(y.as_ref())`, this will ensure the
- /// yarn remembers that it's a static string.
- ///
- /// ```
- /// # use byteyarn::*;
- /// use std::ptr;
- ///
- /// let lit = Yarn::from_static("nice long static string constant");
- ///
- /// // Immortalizing the aliased yarn does not require a new heap allocation.
- /// assert!(ptr::eq(lit.aliased().immortalize().as_slice(), lit.as_slice()));
- ///
- /// // We forgot this yarn was static, so immortalization requires a copy.
- /// assert!(!ptr::eq(YarnBox::<str>::new(&lit).immortalize().as_slice(), lit.as_slice()));
- /// ```
- pub const fn aliased(&self) -> YarnBox<Buf> {
- // NOTE: going through YarnRef will ensure we preserve static-ness.
- self.as_ref().to_box()
- }
-
- /// Returns a yarn containing a single UTF-8-encoded Unicode scalar.
- /// This function does not allocate: every `char` fits in an inlined yarn.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let a = Yarn::from_char('a');
- /// assert_eq!(a, "a");
- /// ```
- pub const fn from_char(c: char) -> Self {
- YarnRef::<Buf>::from_char(c).to_box()
- }
-
- /// Returns a yarn by taking ownership of an allocation.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let str = String::from("big string box").into_boxed_str();
- /// let yarn = Yarn::from_boxed_str(str);
- /// assert_eq!(yarn, "big string box");
- /// ```
- pub fn from_boxed_str(string: Box<str>) -> Self {
- let raw = RawYarn::from_heap(string.into());
- unsafe {
- // SAFETY: both [u8] and str can be safely constructed from a str. We have
- // unique ownership of raw's allocation because from_heap guarantees it.
- Self::from_raw(raw)
- }
- }
-
- /// Returns a yarn by taking ownership of an allocation.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let str = String::from("big string box");
- /// let yarn = Yarn::from_string(str);
- /// assert_eq!(yarn, "big string box");
- /// ```
- pub fn from_string(string: String) -> Self {
- Self::from_boxed_str(string.into())
- }
-
- /// Checks whether this yarn is empty.
- ///
- /// ```
- /// # use byteyarn::*;
- /// assert!(yarn!("").is_empty());
- /// assert!(!yarn!("xyz").is_empty());
- /// ```
- pub const fn is_empty(&self) -> bool {
- self.as_ref().is_empty()
- }
-
- /// Returns the length of this yarn, in bytes.
- ///
- /// ```
- /// # use byteyarn::*;
- /// assert_eq!(yarn!("").len(), 0);
- /// assert_eq!(yarn!("42").len(), 2);
- /// assert_eq!(yarn!("猫").len(), 3);
- /// assert_eq!(yarn!("ðŸˆâ€â¬›").len(), 10);
- ///
- /// assert_eq!(ByteYarn::new(b"").len(), 0);
- /// assert_eq!(ByteYarn::new(b"xyz").len(), 3);
- /// assert_eq!(ByteYarn::new(&[1, 2, 3]).len(), 3);
- /// ```
- pub const fn len(&self) -> usize {
- self.as_ref().len()
- }
-
- /// Converts this yarn into a slice.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let yarn = yarn!("jellybeans");
- /// let s: &str = yarn.as_slice();
- /// assert_eq!(s, "jellybeans");
- ///
- /// let yarn = ByteYarn::new(b"jellybeans");
- /// let s: &[u8] = yarn.as_slice();
- /// assert_eq!(s, b"jellybeans");
- /// ```
- pub const fn as_slice(&self) -> &Buf {
- unsafe {
- // SAFETY: converting back to buf from raw is ok here because this is
- // evidently a round-trip.
- YarnRef::raw2buf(self.as_bytes())
- }
- }
-
- /// Converts this owning yarn into a reference yarn.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let yarn = yarn!("jellybeans");
- /// let ry = yarn.as_ref();
- /// assert_eq!(ry, "jellybeans");
- /// ```
- pub const fn as_ref(&self) -> YarnRef<Buf> {
- if let Some(inl) = YarnRef::inlined(self.as_slice()) {
- return inl;
- }
-
- let raw = match self.raw.on_heap() {
- true => unsafe {
- // SAFETY: The returned YarnRef will prevent self from being used
- // until this raw yarn goes away, because it borrows self.
- RawYarn::alias_slice(self.as_bytes())
- },
- false => self.raw,
- };
-
- unsafe {
- // SAFETY: The lifetime of the output is shorter than that of
- // the input, so raw is valid for a yarn reference. Even in the case
- // that self.on_heap, the aliased slice will not outlive the &self of
- // this function.
- YarnRef::from_raw(raw)
- }
- }
-
- /// Converts this owning yarn into a reference yarn, with the same lifetime
- /// as this yarn.
- ///
- /// Note that if this yarn is on the heap, this function will return `None`.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let yarn = yarn!("lots and lots of jellybeans");
- /// assert_eq!(yarn.to_ref().unwrap(), "lots and lots of jellybeans");
- ///
- /// let boxed = Yarn::from_string(String::from("lots and lots of jellybeans"));
- /// assert!(boxed.to_ref().is_none());
- /// ```
- pub const fn to_ref(&self) -> Option<YarnRef<'a, Buf>> {
- if self.raw.on_heap() {
- return None;
- }
-
- unsafe {
- // SAFETY: The lifetime of the output is equal than that of
- // the input, so raw is valid for a yarn reference. We have excluded the
- // on_heap case above.
- Some(YarnRef::from_raw(self.raw))
- }
- }
-
- /// Converts this yarn into a byte slice.
- /// ```
- /// # use byteyarn::*;
- /// assert_eq!(yarn!("").as_bytes(), b"");
- /// assert_eq!(yarn!("猫").as_bytes(), b"\xE7\x8C\xAB");
- ///
- /// assert_eq!(ByteYarn::new(b"xyz").as_bytes(), b"xyz");
- /// assert_eq!(ByteYarn::new(&[1, 2, 3]).as_bytes(), [1, 2, 3]);
- /// ```
- pub const fn as_bytes(&self) -> &[u8] {
- self.raw.as_slice()
- }
-
- /// Converts this yarn into a boxed slice, potentially by copying it.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let boxed = yarn!("jellybeans").into_boxed_bytes();
- /// assert_eq!(&boxed[..], b"jellybeans");
- /// ```
- pub fn into_boxed_bytes(self) -> Box<[u8]> {
- let mut raw = self.into_raw();
- if !raw.on_heap() {
- return raw.as_slice().into();
- }
-
- unsafe {
- // SAFETY: raw is guaranteed to be on the heap, so this slice is on the
- // heap with the correct layout; because we called into_raw(), this
- // reference is uniquely owned.
- Box::from_raw(raw.as_mut_slice())
- }
- }
-
- /// Converts this yarn into a vector, potentially by copying it.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let mut vec = ByteYarn::new(b"jellybeans").into_vec();
- /// vec.extend_from_slice(b" & KNUCKLES");
- /// let yarn = ByteYarn::from_vec(vec);
- ///
- /// assert_eq!(yarn, b"jellybeans & KNUCKLES");
- /// ```
- pub fn into_vec(self) -> Vec<u8> {
- self.into_boxed_bytes().into()
- }
-
- /// Converts this yarn into a byte yarn.
- pub const fn into_bytes(self) -> YarnBox<'a, [u8]> {
- unsafe {
- // SAFETY: The lifetimes are the same, and [u8] is constructible from
- // either a [u8] or str, so this is just weakening the user-facing type.
- YarnBox::from_raw(self.into_raw())
- }
- }
-
- /// Extends the lifetime of this yarn if this yarn is dynamically known to
- /// point to immortal memory.
- ///
- /// If it doesn't, the contents are copied into a fresh heap allocation.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let bytes = Vec::from(*b"crunchcrunchcrunch");
- /// let yarn = YarnBox::new(&*bytes);
- ///
- /// let immortal: ByteYarn = yarn.immortalize();
- /// drop(bytes); // Show that yarn continues to exist despite `bytes` going
- /// // away.
- ///
- /// assert_eq!(immortal, b"crunchcrunchcrunch");
- /// ```
- pub fn immortalize(self) -> YarnBox<'static, Buf> {
- if self.raw.is_immortal() {
- unsafe {
- // SAFETY: We just validated that this raw is in fact suitable for use
- // with 'static lifetime, and all this cast is doing is extending the
- // lifetime on self.
- return YarnBox::from_raw(self.into_raw());
- }
- }
-
- let raw = RawYarn::copy_slice(self.as_bytes());
- unsafe {
- // SAFETY: RawYarn::copy_slice always returns an immortal, uniquely-owned
- // value.
- YarnBox::from_raw(raw)
- }
- }
-
- /// Returns a yarn consisting of the concatenation of the given slices.
- ///
- /// Does not allocate if the resulting concatenation can be inlined.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let yarn = Yarn::concat(&["foo", "bar", "baz"]);
- /// assert_eq!(yarn, "foobarbaz");
- /// ```
- pub fn concat(bufs: &[impl AsRef<Buf>]) -> Self {
- let total_len = bufs
- .iter()
- .map(|b| YarnRef::buf2raw(b.as_ref()).len())
- .sum();
- let iter = bufs.iter().map(|b| YarnRef::buf2raw(b.as_ref()));
-
- unsafe { Self::from_raw(RawYarn::concat(total_len, iter)) }
- }
-
- /// Tries to inline this yarn, if it's small enough.
- ///
- /// This operation has no directly visible side effects, and is only intended
- /// to provide a way to relieve memory pressure. In general, you should not
- /// have to call this function directly.
- pub fn inline_in_place(&mut self) {
- if let Some(inlined) = Self::inlined(self.as_slice()) {
- *self = inlined;
- }
- }
-
- /// Leaks any heap allocation associated with this yarn.
- ///
- /// The allocation is tagged as "static", so upcasting via
- /// [`Yarn::immortalize()`] will not need to reallocate.
- pub fn leak(&mut self) {
- if !self.raw.on_heap() {
- return;
- }
-
- unsafe {
- // SAFETY: We have unique ownership of this yarn, and we know it's HEAP,
- // so updating the tag from HEAP to STATIC will not change anything
- // except to make it immutable and to inhibit the destructor.
- self.raw = RawYarn::from_ptr_len_tag(
- self.as_bytes().as_ptr(),
- self.len(),
- RawYarn::STATIC,
- );
- }
- }
-
- /// Returns an iterator over the UTF-8 (or otherwise) chunks in this string.
- ///
- /// This iterator is also used for the `Debug` and `Display` formatter
- /// implementations.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let yarn = ByteYarn::new(b"abc\xFF\xFE\xFF\xF0\x9F\x90\x88\xE2\x80\x8D\xE2\xAC\x9B!");
- /// let chunks = yarn.utf8_chunks().collect::<Vec<_>>();
- /// assert_eq!(chunks, [
- /// Ok("abc"),
- /// Err(&[0xff][..]),
- /// Err(&[0xfe][..]),
- /// Err(&[0xff][..]),
- /// Ok("ðŸˆâ€â¬›!"),
- /// ]);
- ///
- /// assert_eq!(format!("{yarn:?}"), r#""abc\xFF\xFE\xFFðŸˆ\u{200d}⬛!""#);
- /// assert_eq!(format!("{yarn}"), "abc���ðŸˆâ€â¬›!");
- /// ```
- pub fn utf8_chunks(&self) -> Utf8Chunks {
- Utf8Chunks::new(self.as_bytes())
- }
-
- /// Returns a new yarn wrapping the given raw yarn.
- ///
- /// # Safety
- ///
- /// If `raw` is aliased, its lifetime must not be shorter than 'a.
- ///
- /// If `raw` is heap-allocated, no other yarn must be holding it.
- pub(crate) const unsafe fn from_raw(raw: RawYarn) -> Self {
- Self {
- raw,
- _ph: PhantomData,
- }
- }
-
- /// Consumes self, inhibits the destructor, and returns the raw yarn.
- pub(crate) const fn into_raw(self) -> RawYarn {
- let raw = self.raw;
- mem::forget(self);
- raw
- }
-}
-
-impl<Buf> YarnBox<'static, Buf>
-where
- Buf: crate::Buf + ?Sized,
-{
- /// Returns a yarn pointing to the given slice, without copying. This function
- /// has the benefit of creating a yarn that remembers that it came from a
- /// static string, meaning that it can be dynamically upcast back to a
- /// `'static` lifetime.
- ///
- /// This function will *not* be found by `From` impls.
- pub const fn from_static(buf: &'static Buf) -> Self {
- YarnRef::from_static(buf).to_box()
- }
-}
-
-impl<'a> YarnBox<'a, [u8]> {
- /// Returns a yarn containing a single byte, without allocating.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let a = ByteYarn::from_byte(0x20);
- /// assert_eq!(a, b" ");
- /// ```
- pub const fn from_byte(c: u8) -> Self {
- YarnRef::from_byte(c).to_box()
- }
-
- /// Returns a yarn by taking ownership of the given allocation.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let str = Box::new([0xf0, 0x9f, 0x90, 0x88, 0xe2, 0x80, 0x8d, 0xe2, 0xac, 0x9b]);
- /// let yarn = ByteYarn::from_boxed_bytes(str);
- /// assert_eq!(yarn, "ðŸˆâ€â¬›".as_bytes());
- /// ```
- pub fn from_boxed_bytes(bytes: Box<[u8]>) -> Self {
- let raw = RawYarn::from_heap(bytes);
- unsafe { Self::from_raw(raw) }
- }
-
- /// Returns a yarn by taking ownership of the given allocation.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let str = vec![0xf0, 0x9f, 0x90, 0x88, 0xe2, 0x80, 0x8d, 0xe2, 0xac, 0x9b];
- /// let yarn = ByteYarn::from_vec(str);
- /// assert_eq!(yarn, "ðŸˆâ€â¬›".as_bytes());
- /// ```
- pub fn from_vec(bytes: Vec<u8>) -> Self {
- Self::from_boxed_bytes(bytes.into_boxed_slice())
- }
-
- /// Tries to convert this yarn into a UTF-8 yarn via [`str::from_utf8()`].
- ///
- /// ```
- /// # use byteyarn::*;
- /// let yarn = ByteYarn::new(&[0xf0, 0x9f, 0x90, 0x88, 0xe2, 0x80, 0x8d, 0xe2, 0xac, 0x9b]);
- /// assert_eq!(yarn.to_utf8().unwrap(), "ðŸˆâ€â¬›");
- ///
- /// assert!(ByteYarn::from_byte(0xff).to_utf8().is_err());
- /// ```
- pub fn to_utf8(self) -> Result<YarnBox<'a, str>, Utf8Error> {
- self.to_utf8_or_bytes().map_err(|(_, e)| e)
- }
-
- /// Tries to convert this yarn into a UTF-8 yarn via [`str::from_utf8()`].
- ///
- /// If conversion fails, the original yarn is returned with the error.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let blob = ByteYarn::new(&[0xff; 5]);
- /// let (bad, _) = blob.to_utf8_or_bytes().unwrap_err();
- ///
- /// assert_eq!(bad, &[0xff; 5]);
- /// ```
- pub fn to_utf8_or_bytes(self) -> Result<YarnBox<'a, str>, (Self, Utf8Error)> {
- if let Err(e) = str::from_utf8(self.as_bytes()) {
- return Err((self, e));
- }
- unsafe { Ok(YarnBox::from_raw(self.into_raw())) }
- }
-
- /// Returns a mutable reference into this yarn's internal buffer.
- ///
- /// If the buffer is not uniquely owned (e.g., it is an alias of some other
- /// buffer or a string constant) this function will first perform a copy and
- /// possibly a heap allocation.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let mut yarn = ByteYarn::new(b"const but very long");
- /// assert!(yarn.try_mut().is_none());
- ///
- /// let mut smol = ByteYarn::new(b"smol const");
- /// smol.try_mut().unwrap()[3] = b'g';
- /// assert_eq!(smol, b"smog const");
- /// ```
- pub fn try_mut(&mut self) -> Option<&mut [u8]> {
- self.inline_in_place();
- if !self.raw.on_heap() && !self.raw.is_small() {
- return None;
- }
-
- Some(self.as_mut())
- }
-
- /// Returns a mutable reference into this yarn's internal buffer.
- ///
- /// If the buffer is not uniquely owned (e.g., it is an alias of some other
- /// buffer or a string constant) this function will first perform a copy and
- /// possibly a heap allocation.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let mut yarn = ByteYarn::new(b"const but very long");
- /// yarn.as_mut()[17] = b'_';
- /// assert_eq!(yarn, b"const but very lo_g");
- /// ```
- #[allow(clippy::should_implement_trait)]
- pub fn as_mut(&mut self) -> &mut [u8] {
- self.inline_in_place();
- if !self.raw.on_heap() && !self.raw.is_small() {
- *self = Self::from_boxed_bytes(mem::take(self).into_boxed_bytes());
- }
-
- unsafe { self.raw.as_mut_slice() }
- }
-}
-
-impl YarnBox<'_, str> {
- /// Builds a new yarn from the given formatting arguments
- /// (see [`format_args!()`]), allocating only when absolutely necessary.
- ///
- /// In general, you'll want to use the [`yarn!()`] macro, instead.
- pub fn from_fmt(args: fmt::Arguments) -> Self {
- unsafe { YarnBox::from_raw(RawYarn::from_fmt_args(args)) }
- }
-
- /// Converts this yarn into a string slice.
- pub fn as_str(&self) -> &str {
- self.as_slice()
- }
-
- /// Converts this yarn into a boxed slice, potentially by copying it.
- pub fn into_boxed_str(self) -> Box<str> {
- self.into_string().into()
- }
-
- /// Converts this yarn into a string, potentially by copying it.
- pub fn into_string(self) -> String {
- unsafe { String::from_utf8_unchecked(self.into_vec()) }
- }
-}
-
-impl<Buf> Deref for YarnBox<'_, Buf>
-where
- Buf: crate::Buf + ?Sized,
-{
- type Target = Buf;
- fn deref(&self) -> &Buf {
- self.as_slice()
- }
-}
-
-impl<Buf> Drop for YarnBox<'_, Buf>
-where
- Buf: crate::Buf + ?Sized,
-{
- fn drop(&mut self) {
- unsafe { self.raw.destroy() }
- }
-}
-
-impl<Buf> Clone for YarnBox<'_, Buf>
-where
- Buf: crate::Buf + ?Sized,
-{
- fn clone(&self) -> Self {
- if let Some(yr) = self.to_ref() {
- return yr.to_box();
- }
-
- let copy = RawYarn::copy_slice(self.as_bytes());
- unsafe { Self::from_raw(copy) }
- }
-}
-
-impl<Buf: crate::Buf + ?Sized> fmt::Debug for YarnBox<'_, Buf> {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- fmt::Debug::fmt(&self.as_ref(), f)
- }
-}
-
-impl<Buf: crate::Buf + ?Sized> fmt::Display for YarnBox<'_, Buf> {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- fmt::Display::fmt(&self.as_ref(), f)
- }
-}
-
-impl<Slice, Buf> PartialEq<Slice> for YarnBox<'_, Buf>
-where
- Buf: crate::Buf + ?Sized,
- Slice: AsRef<Buf> + ?Sized,
-{
- fn eq(&self, that: &Slice) -> bool {
- self.as_slice() == that.as_ref()
- }
-}
-
-impl<Buf: crate::Buf + Eq + ?Sized> Eq for YarnBox<'_, Buf> {}
-
-impl<Slice, Buf> PartialOrd<Slice> for YarnBox<'_, Buf>
-where
- Buf: crate::Buf + ?Sized,
- Slice: AsRef<Buf> + ?Sized,
-{
- fn partial_cmp(&self, that: &Slice) -> Option<Ordering> {
- self.as_slice().partial_cmp(that.as_ref())
- }
-}
-
-impl<Buf: crate::Buf + ?Sized> Ord for YarnBox<'_, Buf> {
- fn cmp(&self, that: &Self) -> Ordering {
- self.as_slice().cmp(that.as_slice())
- }
-}
-
-impl<Buf: crate::Buf + ?Sized> Hash for YarnBox<'_, Buf> {
- fn hash<H: Hasher>(&self, state: &mut H) {
- self.as_slice().hash(state)
- }
-}
-
-impl<Buf: crate::Buf + ?Sized> Default for YarnBox<'_, Buf> {
- fn default() -> Self {
- <&Self>::default().clone()
- }
-}
-
-impl<Buf: crate::Buf + ?Sized> Default for &YarnBox<'_, Buf> {
- fn default() -> Self {
- YarnBox::empty()
- }
-}
diff --git a/vendor/byteyarn/src/convert.rs b/vendor/byteyarn/src/convert.rs
deleted file mode 100644
index 2c4ea5357..000000000
--- a/vendor/byteyarn/src/convert.rs
+++ /dev/null
@@ -1,248 +0,0 @@
-use std::borrow::Borrow;
-use std::fmt;
-use std::str::Utf8Error;
-
-use crate::YarnBox;
-use crate::YarnRef;
-
-#[derive(Clone, Debug)]
-pub struct NonCopy(());
-
-impl fmt::Display for NonCopy {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- f.write_str("cannot convert yarn to non-owning yarn")
- }
-}
-
-impl<'a, Buf> TryFrom<YarnBox<'a, Buf>> for YarnRef<'a, Buf>
-where
- Buf: crate::Buf + ?Sized,
-{
- type Error = NonCopy;
-
- fn try_from(y: YarnBox<'a, Buf>) -> Result<Self, NonCopy> {
- y.to_ref().ok_or(NonCopy(()))
- }
-}
-
-impl<'a> TryFrom<YarnBox<'a, [u8]>> for YarnBox<'a, str> {
- type Error = Utf8Error;
-
- fn try_from(y: YarnBox<'a, [u8]>) -> Result<Self, Utf8Error> {
- y.to_utf8()
- }
-}
-
-impl<'a> TryFrom<YarnRef<'a, [u8]>> for YarnRef<'a, str> {
- type Error = Utf8Error;
-
- fn try_from(y: YarnRef<'a, [u8]>) -> Result<Self, Utf8Error> {
- y.to_utf8()
- }
-}
-
-impl<'a> From<YarnBox<'a, str>> for YarnBox<'a, [u8]> {
- fn from(y: YarnBox<'a, str>) -> Self {
- y.into_bytes()
- }
-}
-
-impl<'a> From<YarnRef<'a, str>> for YarnRef<'a, [u8]> {
- fn from(y: YarnRef<'a, str>) -> Self {
- y.into_bytes()
- }
-}
-
-impl From<u8> for YarnBox<'_, [u8]> {
- fn from(c: u8) -> Self {
- Self::from_byte(c)
- }
-}
-
-impl From<u8> for YarnRef<'_, [u8]> {
- fn from(c: u8) -> Self {
- Self::from_byte(c)
- }
-}
-
-impl<Buf> From<char> for YarnBox<'_, Buf>
-where
- Buf: crate::Buf + ?Sized,
-{
- fn from(c: char) -> Self {
- Self::from_char(c)
- }
-}
-
-impl<Buf> From<char> for YarnRef<'_, Buf>
-where
- Buf: crate::Buf + ?Sized,
-{
- fn from(c: char) -> Self {
- Self::from_char(c)
- }
-}
-
-impl<'a, Buf> From<&'a Buf> for YarnBox<'a, Buf>
-where
- Buf: crate::Buf + ?Sized,
-{
- fn from(s: &'a Buf) -> Self {
- Self::new(s)
- }
-}
-
-impl<'a, Buf> From<&'a YarnBox<'_, Buf>> for YarnBox<'a, Buf>
-where
- Buf: crate::Buf + ?Sized,
-{
- fn from(s: &'a YarnBox<'a, Buf>) -> Self {
- s.aliased()
- }
-}
-
-impl<'a, Buf> From<&'a YarnBox<'_, Buf>> for YarnRef<'a, Buf>
-where
- Buf: crate::Buf + ?Sized,
-{
- fn from(s: &'a YarnBox<'a, Buf>) -> Self {
- s.as_ref()
- }
-}
-
-impl<'a, Buf> From<&'a Buf> for YarnRef<'a, Buf>
-where
- Buf: crate::Buf + ?Sized,
-{
- fn from(s: &'a Buf) -> Self {
- Self::new(s)
- }
-}
-
-impl From<Box<[u8]>> for YarnBox<'_, [u8]> {
- fn from(s: Box<[u8]>) -> Self {
- Self::from_boxed_bytes(s)
- }
-}
-
-impl From<Vec<u8>> for YarnBox<'_, [u8]> {
- fn from(s: Vec<u8>) -> Self {
- Self::from_vec(s)
- }
-}
-
-impl<Buf> From<Box<str>> for YarnBox<'_, Buf>
-where
- Buf: crate::Buf + ?Sized,
-{
- fn from(s: Box<str>) -> Self {
- Self::from_boxed_str(s)
- }
-}
-
-impl<Buf> From<String> for YarnBox<'_, Buf>
-where
- Buf: crate::Buf + ?Sized,
-{
- fn from(s: String) -> Self {
- Self::from_string(s)
- }
-}
-
-impl<Buf> From<YarnBox<'_, Buf>> for Box<[u8]>
-where
- Buf: crate::Buf + ?Sized,
-{
- fn from(y: YarnBox<Buf>) -> Self {
- y.into_boxed_bytes()
- }
-}
-
-impl<Buf> From<YarnRef<'_, Buf>> for Box<[u8]>
-where
- Buf: crate::Buf + ?Sized,
-{
- fn from(y: YarnRef<Buf>) -> Self {
- y.to_boxed_bytes()
- }
-}
-
-impl<Buf> From<YarnBox<'_, Buf>> for Vec<u8>
-where
- Buf: crate::Buf + ?Sized,
-{
- fn from(y: YarnBox<Buf>) -> Self {
- y.into_vec()
- }
-}
-
-impl<Buf> From<YarnRef<'_, Buf>> for Vec<u8>
-where
- Buf: crate::Buf + ?Sized,
-{
- fn from(y: YarnRef<Buf>) -> Self {
- y.to_vec()
- }
-}
-
-impl From<YarnBox<'_, str>> for Box<str> {
- fn from(y: YarnBox<str>) -> Self {
- y.into_boxed_str()
- }
-}
-
-impl From<YarnRef<'_, str>> for Box<str> {
- fn from(y: YarnRef<str>) -> Self {
- y.to_boxed_str()
- }
-}
-
-impl From<YarnBox<'_, str>> for String {
- fn from(y: YarnBox<str>) -> Self {
- y.into_string()
- }
-}
-
-impl From<YarnRef<'_, str>> for String {
- fn from(y: YarnRef<str>) -> Self {
- y.to_string()
- }
-}
-
-// AsRef / Borrow
-
-impl<Buf> AsRef<Buf> for YarnBox<'_, Buf>
-where
- Buf: crate::Buf + ?Sized,
-{
- fn as_ref(&self) -> &Buf {
- self.as_slice()
- }
-}
-
-impl<Buf> AsRef<Buf> for YarnRef<'_, Buf>
-where
- Buf: crate::Buf + ?Sized,
-{
- fn as_ref(&self) -> &Buf {
- self.as_slice()
- }
-}
-
-impl<Buf> Borrow<Buf> for YarnBox<'_, Buf>
-where
- Buf: crate::Buf + ?Sized,
-{
- fn borrow(&self) -> &Buf {
- self.as_slice()
- }
-}
-
-impl<Buf> Borrow<Buf> for YarnRef<'_, Buf>
-where
- Buf: crate::Buf + ?Sized,
-{
- fn borrow(&self) -> &Buf {
- self.as_slice()
- }
-}
diff --git a/vendor/byteyarn/src/lib.rs b/vendor/byteyarn/src/lib.rs
deleted file mode 100644
index 38dfc111c..000000000
--- a/vendor/byteyarn/src/lib.rs
+++ /dev/null
@@ -1,113 +0,0 @@
-//! `byteyarn` - Space-efficient byte strings 🧶ðŸˆâ€â¬›
-//!
-//! A [`Yarn`] is a highly optimized string type that provides a number of
-//! useful properties over [`String`]:
-//!
-//! * Always two pointers wide, so it is always passed into and out of functions
-//! in registers.
-//! * Small string optimization (SSO) up to 15 bytes on 64-bit architectures.
-//! * Can be either an owned buffer or a borrowed buffer (like [`Cow<str>`]).
-//! * Can be upcast to `'static` lifetime if it was constructed from a
-//! known-static string.
-//!
-//! The main caveat is that [`Yarn`]s cannot be easily appended to, since they
-//! do not track an internal capacity, and the slice returned by
-//! [`Yarn::as_slice()`] does not have the same pointer stability properties as
-//! [`String`] (these are rarely needed, though).
-//!
-//! ---
-//!
-//! Yarns are useful for situations in which a copy-on-write string is necessary
-//! and most of the strings are relatively small. Although [`Yarn`] itself is
-//! not [`Copy`], there is a separate [`YarnRef`] type that is. These types
-//! have equivalent representations, and can be cheaply cast between each other.
-//!
-//! The easiest way to create a yarn is with the [`yarn!()`]
-//! macro, which is similar to [`format!()`].
-//!
-//! ```
-//! # use byteyarn::*;
-//! // Create a new yarn via `fmt`ing.
-//! let yarn = yarn!("Answer: {}", 42);
-//!
-//! // Convert that yarn into a reference.
-//! let ry: YarnRef<str> = yarn.as_ref();
-//!
-//! // Try up-casting the yarn into an "immortal yarn" without copying.
-//! let copy: YarnRef<'static, str> = ry.immortalize().unwrap();
-//!
-//! assert_eq!(yarn, copy);
-//! ```
-//!
-//! Yarns are intended for storing text, either as UTF-8 or as
-//! probably-UTF-8 bytes; [`Yarn<str>`] and [`Yarn<[u8]>`] serve these purposes,
-//! and can be inter-converted with each other. The [`Yarn::utf8_chunks()`]
-//! function can be used to iterate over definitely-valid-UTF-8 chunks within
-//! a string.
-//!
-//! Both kinds of yarns can be `Debug`ed and `Display`ed, and will print out as
-//! strings would. In particular, invalid UTF-8 is converted into either `\xNN`
-//! escapes or replacement characters (for `Debug` and `Display` respectively).
-//!
-//! ```
-//! # use byteyarn::*;
-//! let invalid = ByteYarn::from_byte(0xff);
-//! assert_eq!(format!("{invalid:?}"), r#""\xFF""#);
-//! assert_eq!(format!("{invalid}"), "�");
-//! ```
-
-#![deny(missing_docs)]
-
-use std::hash::Hash;
-
-#[cfg(doc)]
-use std::borrow::Cow;
-
-mod boxed;
-mod convert;
-mod raw;
-mod reffed;
-mod utf8;
-
-pub use boxed::YarnBox;
-pub use reffed::YarnRef;
-pub use utf8::Utf8Chunks;
-
-mod z {
- pub trait Sealed {}
-}
-
-// Macro stuff.
-#[doc(hidden)]
-pub mod m {
- pub extern crate std;
-}
-
-/// A trait for abstracting over `str` and `[u8]`.
-pub trait Buf: z::Sealed + Eq + Ord + Hash {}
-
-impl z::Sealed for [u8] {}
-impl z::Sealed for str {}
-
-impl Buf for [u8] {}
-impl Buf for str {}
-
-/// An optimized Unicode string.
-///
-/// See [`YarnBox`] for full type documentation.
-pub type Yarn = YarnBox<'static, str>;
-
-/// An optimized raw byte string.
-///
-/// See [`YarnBox`] for full type documentation.
-pub type ByteYarn = YarnBox<'static, [u8]>;
-
-/// Similar to [`format!()`], but returns a [`Yarn`], instead.
-///
-/// This macro calls out to [`Yarn::from_fmt()`] internally.
-#[macro_export]
-macro_rules! yarn {
- ($($args:tt)*) => {
- $crate::Yarn::from_fmt($crate::m::std::format_args!($($args)*))
- };
-}
diff --git a/vendor/byteyarn/src/raw.rs b/vendor/byteyarn/src/raw.rs
deleted file mode 100644
index b424df549..000000000
--- a/vendor/byteyarn/src/raw.rs
+++ /dev/null
@@ -1,469 +0,0 @@
-use std::alloc;
-use std::fmt;
-use std::fmt::Write;
-use std::mem;
-use std::mem::MaybeUninit;
-use std::num::NonZeroUsize;
-use std::slice;
-
-/// The core implementation of yarns.
-///
-/// This type encapsulates the various size optimizations that yarns make; this
-/// wrapper is shared between both owning and non-owning yarns.
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct RawYarn {
- ptr: PtrOrBytes,
- len: NonZeroUsize,
-}
-
-#[repr(C)]
-#[derive(Copy, Clone)]
-union PtrOrBytes {
- bytes: [u8; mem::size_of::<*const u8>()],
- ptr: *const u8,
-}
-
-#[repr(C)]
-#[derive(Copy, Clone)]
-struct Small {
- data: [u8; mem::size_of::<RawYarn>() - 1],
- len: u8,
-}
-
-#[repr(C)]
-#[derive(Copy, Clone)]
-struct Slice {
- ptr: *const u8,
- len: usize,
-}
-
-enum Layout<'a> {
- Small(&'a Small),
- Slice(&'a Slice),
-}
-
-enum LayoutMut<'a> {
- Small(&'a mut Small),
- Slice(&'a mut Slice),
-}
-
-// RawYarn does not expose &mut through &self.
-unsafe impl Send for RawYarn {}
-unsafe impl Sync for RawYarn {}
-
-#[test]
-fn has_niche() {
- assert_eq!(mem::size_of::<RawYarn>(), mem::size_of::<Option<RawYarn>>());
-}
-
-impl RawYarn {
- /// The number of bytes beyond the length byte that are usable for data.
- /// This is 7 on 32-bit and 15 on 64-bit.
- pub const SSO_LEN: usize = {
- let bytes_usable = mem::size_of::<usize>() * 2 - 1;
- let max_len = 1 << (8 - 2);
-
- let sso_len = if bytes_usable < max_len {
- bytes_usable
- } else {
- max_len
- };
-
- assert!(
- sso_len >= 4,
- "yarns are not supported on architectures with pointers this small"
- );
-
- sso_len
- };
-
- /// The tag for an SSO yarn.
- pub const SMALL: u8 = 0b11;
- /// The tag for a yarn that came from an immortal string slice.
- pub const STATIC: u8 = 0b01;
- /// The tag for a yarn that points to a dynamic string slice, on the heap,
- /// that we uniquely own.
- pub const HEAP: u8 = 0b10;
- /// The tag for a yarn that points to a dynamic string slice we don't
- /// uniquely own.
- ///
- /// Because the first word can never be zero, aliased yarns can never have
- /// zero length.
- pub const ALIASED: u8 = 0b00;
-
- /// Mask for extracting the tag out of the lowest byte of the yarn.
- const SHIFT8: u32 = u8::BITS - 2;
- const SHIFT: u32 = usize::BITS - 2;
-
- const MASK8: usize = !0 << Self::SHIFT8;
- const MASK: usize = !0 << Self::SHIFT;
-
- /// Returns the kind of yarn this is (one of the constants above).
- #[inline(always)]
- pub const fn kind(&self) -> u8 {
- // This used to be
- //
- // let ptr = self as *const Self as *const u8;
- // let hi_byte = unsafe {
- // // SAFETY: ptr is valid by construction; regardless of which union member
- // // is engaged, the lowest byte is always initialized.
- // *ptr.add(std::mem::size_of::<Self>() - 1)
- // };
- // hi_byte >> Self::SHIFT8
- //
- // But LLVM apparently upgrades this to a word-aligned load (i.e. the code
- // below) regardless. :D
-
- (self.len.get() >> Self::SHIFT) as u8
- }
-
- /// Creates a new, non-`SMALL` yarn with the given pointer, length, and tag.
- ///
- /// # Safety
- ///
- /// `ptr` must be valid for reading `len` bytes.
- ///
- /// If tag is `STATIC`, then `ptr` must never be deallocated. If the tag is
- /// `HEAP`, `ptr` must be free-able via dealloc with a (len, 1) layout and
- /// valid for writing `len` bytes.
- #[inline(always)]
- pub const unsafe fn from_ptr_len_tag(
- ptr: *const u8,
- len: usize,
- tag: u8,
- ) -> Self {
- assert!(
- len < usize::MAX / 4,
- "yarns cannot be larger than a quarter of the address space"
- );
- debug_assert!(
- tag != 0 || len != 0,
- "zero-length and zero tag are not permitted simultaneously."
- );
- debug_assert!(tag != Self::SMALL);
-
- Self {
- ptr: PtrOrBytes { ptr },
- len: NonZeroUsize::new_unchecked(len | (tag as usize) << Self::SHIFT),
- }
- }
-
- /// Returns the currently valid union variant for this yarn.
- #[inline(always)]
- const fn layout(&self) -> Layout {
- match self.is_small() {
- true => unsafe {
- // SAFETY: When self.is_small, the small variant is always active.
- Layout::Small(mem::transmute::<&RawYarn, &Small>(self))
- },
- false => unsafe {
- // SAFETY: Otherwise, the slice variant is always active.
- Layout::Slice(mem::transmute::<&RawYarn, &Slice>(self))
- },
- }
- }
-
- /// Returns the currently valid union variant for this yarn.
- #[inline(always)]
- fn layout_mut(&mut self) -> LayoutMut {
- match self.is_small() {
- true => unsafe {
- // SAFETY: When self.is_small, the small variant is always active.
- LayoutMut::Small(mem::transmute::<&mut RawYarn, &mut Small>(self))
- },
- false => unsafe {
- // SAFETY: Otherwise, the slice variant is always active.
- LayoutMut::Slice(mem::transmute::<&mut RawYarn, &mut Slice>(self))
- },
- }
- }
-
- /// Returns a reference to an empty `RawYarn` of any lifetime.
- #[inline]
- pub fn empty<'a>() -> &'a RawYarn {
- static STORAGE: MaybeUninit<RawYarn> = MaybeUninit::new(RawYarn::new(b""));
- unsafe {
- // SAFETY: MaybeUninit::new() creates well-initialized memory.
- STORAGE.assume_init_ref()
- }
- }
-
- /// Returns a `RawYarn` pointing to the given static string, without copying.
- #[inline]
- pub const fn new(s: &'static [u8]) -> Self {
- if s.len() < Self::SSO_LEN {
- unsafe {
- // SAFETY: We just checked s.len() < Self::SSO_LEN.
- return Self::from_slice_inlined_unchecked(s.as_ptr(), s.len());
- }
- }
-
- unsafe {
- // SAFETY: s is a static string, because the argument is 'static.
- Self::from_ptr_len_tag(s.as_ptr(), s.len(), Self::STATIC)
- }
- }
-
- /// Returns an empty `RawYarn`.
- #[inline(always)]
- pub const fn len(self) -> usize {
- match self.layout() {
- Layout::Small(s) => s.len as usize & !Self::MASK8,
- Layout::Slice(s) => s.len & !Self::MASK,
- }
- }
-
- /// Returns whether this `RawYarn` needs to be dropped (i.e., if it is holding
- /// onto memory resources).
- #[inline(always)]
- pub const fn on_heap(self) -> bool {
- self.kind() == Self::HEAP
- }
-
- /// Returns whether this `RawYarn` is SSO.
- #[inline(always)]
- pub const fn is_small(self) -> bool {
- self.kind() == Self::SMALL
- }
-
- /// Returns whether this `RawYarn` is SSO.
- #[inline(always)]
- pub const fn is_immortal(self) -> bool {
- self.kind() != Self::ALIASED
- }
-
- /// Frees heap memory owned by this raw yarn.
- ///
- /// # Safety
- ///
- /// This function must be called at most once, when the raw yarn is being
- /// disposed of.
- #[inline(always)]
- pub unsafe fn destroy(self) {
- if !self.on_heap() {
- return;
- }
-
- debug_assert!(self.len() > 0);
- let layout = alloc::Layout::for_value(self.as_slice());
- alloc::dealloc(self.ptr.ptr as *mut u8, layout)
- }
-
- /// Returns a pointer into the data for this raw yarn.
- #[inline(always)]
- pub const fn as_ptr(&self) -> *const u8 {
- match self.layout() {
- Layout::Small(s) => s.data.as_ptr().cast(),
- Layout::Slice(s) => s.ptr,
- }
- }
-
- /// Returns a pointer into the data for this raw yarn.
- #[inline(always)]
- pub fn as_mut_ptr(&mut self) -> *mut u8 {
- match self.layout_mut() {
- LayoutMut::Small(s) => s.data.as_mut_ptr().cast(),
- LayoutMut::Slice(s) => s.ptr.cast_mut(),
- }
- }
-
- /// Converts this RawYarn into a byte slice.
- #[inline(always)]
- pub const fn as_slice(&self) -> &[u8] {
- unsafe {
- // SAFETY: the output lifetime ensures that `self` cannot move away.
- slice::from_raw_parts(self.as_ptr(), self.len())
- }
- }
-
- /// Converts this RawYarn into a mutable byte slice.
- ///
- /// # Safety
- ///
- /// This must only be called on `SMALL` or `HEAP` yarns.
- #[inline(always)]
- pub unsafe fn as_mut_slice(&mut self) -> &mut [u8] {
- debug_assert!(self.is_small() || self.on_heap());
- unsafe {
- // SAFETY: the output lifetime ensures that `self` cannot move away.
- slice::from_raw_parts_mut(self.as_mut_ptr(), self.len())
- }
- }
-
- /// Returns a `RawYarn` by making a copy of the given slice.
- #[inline(always)]
- pub fn copy_slice(s: &[u8]) -> Self {
- match Self::from_slice_inlined(s) {
- Some(inl) => inl,
- None => Self::from_heap(s.into()),
- }
- }
-
- /// Returns a `RawYarn` by making an alias of the given slice.
- ///
- /// # Safety
- ///
- /// `s` must outlive all uses of the returned yarn.
- #[inline(always)]
- pub const unsafe fn alias_slice(s: &[u8]) -> Self {
- if let Some(inlined) = Self::from_slice_inlined(s) {
- return inlined;
- }
-
- Self::from_ptr_len_tag(s.as_ptr(), s.len(), Self::ALIASED)
- }
-
- /// Returns a new `RawYarn` containing the contents of the given slice.
- ///
- /// # Safety
- ///
- /// `len < Self::SSO`, and `ptr` must be valid for reading `len` bytes.
- #[inline]
- pub const unsafe fn from_slice_inlined_unchecked(
- ptr: *const u8,
- len: usize,
- ) -> Self {
- debug_assert!(len <= Self::SSO_LEN);
-
- let mut small = Small {
- data: [0; Self::SSO_LEN],
- len: (len as u8) | Self::SMALL << Self::SHIFT8,
- };
-
- // There's no way to get an *mut to `small.data`, so we do an iteration,
- // instead. This loop can be trivially converted into a memcpy by the
- // optimizer.
- let mut i = 0;
- while i < len {
- small.data[i] = *ptr.add(i);
- i += 1;
- }
-
- // Small and RawYarn are both POD.
- mem::transmute::<Small, RawYarn>(small)
- }
-
- /// Returns a new `RawYarn` containing the contents of the given slice.
- ///
- /// This function will always return an inlined string.
- #[inline]
- pub const fn from_slice_inlined(s: &[u8]) -> Option<Self> {
- if s.len() > Self::SSO_LEN {
- return None;
- }
-
- unsafe {
- // SAFETY: s.len() is within bounds; we just checked it above.
- Some(Self::from_slice_inlined_unchecked(s.as_ptr(), s.len()))
- }
- }
-
- /// Returns a `RawYarn` containing a single UTF-8-encoded Unicode scalar.
- ///
- /// This function does not allocate: every `char` fits in an inlined `RawYarn`.
- #[inline(always)]
- pub const fn from_char(c: char) -> Self {
- let (data, len) = crate::utf8::encode_utf8(c);
- unsafe {
- // SAFETY: len is at most 4, 4 < Self::SSO_LEN.
- Self::from_slice_inlined_unchecked(data.as_ptr(), len)
- }
- }
-
- /// Returns a `RawYarn` containing a single byte, without allocating.
- #[inline(always)]
- pub const fn from_byte(c: u8) -> Self {
- unsafe {
- // SAFETY: 1 < Self::SSO_LEN.
- Self::from_slice_inlined_unchecked(&c, 1)
- }
- }
-
- /// Returns a `RawYarn` consisting of the concatenation of the given slices.
- ///
- /// Does not allocate if the resulting concatenation can be inlined.
- ///
- /// # Safety
- ///
- /// `total_len < Self::SSO_LEN`.
- pub unsafe fn concat<'a>(
- total_len: usize,
- iter: impl IntoIterator<Item = &'a [u8]>,
- ) -> Self {
- if total_len > Self::SSO_LEN {
- let mut buf = Vec::with_capacity(total_len);
- for b in iter {
- buf.extend_from_slice(b);
- }
-
- return Self::from_heap(buf.into());
- }
-
- let mut cursor = 0;
- let mut data = [0; Self::SSO_LEN];
- for b in iter {
- data[cursor..cursor + b.len()].copy_from_slice(b);
- cursor += b.len();
- }
-
- Self::from_slice_inlined(&data[..cursor]).unwrap_unchecked()
- }
-
- /// Returns a `RawYarn` by taking ownership of the given allocation.
- #[inline]
- pub fn from_heap(s: Box<[u8]>) -> Self {
- if let Some(inline) = Self::from_slice_inlined(&s) {
- return inline;
- }
-
- let len = s.len();
- let ptr = Box::into_raw(s) as *mut u8;
- unsafe {
- // SAFETY: s is a heap allocation of the appropriate layout for HEAP,
- // which we own uniquely because we dismantled it from a box.
- Self::from_ptr_len_tag(ptr, len, Self::HEAP)
- }
- }
-
- /// Builds a new yarn from the given formatting arguments, without allocating
- /// in the trival and small cases.
- pub fn from_fmt_args(args: fmt::Arguments) -> Self {
- if let Some(constant) = args.as_str() {
- return Self::new(constant.as_bytes());
- }
-
- enum Buf {
- Sso(usize, [u8; RawYarn::SSO_LEN]),
- Vec(Vec<u8>),
- }
- impl fmt::Write for Buf {
- fn write_str(&mut self, s: &str) -> fmt::Result {
- match self {
- Self::Sso(len, bytes) => {
- let new_len = *len + s.len();
- if new_len > RawYarn::SSO_LEN {
- let mut vec = Vec::from(&bytes[..*len]);
- vec.extend_from_slice(s.as_bytes());
-
- *self = Self::Vec(vec);
- } else {
- let _ = &bytes[*len..new_len].copy_from_slice(s.as_bytes());
- *len = new_len;
- }
- }
- Self::Vec(vec) => vec.extend_from_slice(s.as_bytes()),
- }
-
- Ok(())
- }
- }
-
- let mut w = Buf::Sso(0, [0; RawYarn::SSO_LEN]);
- let _ = w.write_fmt(args);
- match w {
- Buf::Sso(len, bytes) => Self::from_slice_inlined(&bytes[..len]).unwrap(),
- Buf::Vec(vec) => Self::from_heap(vec.into()),
- }
- }
-}
diff --git a/vendor/byteyarn/src/reffed.rs b/vendor/byteyarn/src/reffed.rs
deleted file mode 100644
index a988b4085..000000000
--- a/vendor/byteyarn/src/reffed.rs
+++ /dev/null
@@ -1,410 +0,0 @@
-use std::cmp::Ordering;
-use std::fmt;
-use std::fmt::Write;
-use std::hash::Hash;
-use std::hash::Hasher;
-use std::marker::PhantomData;
-use std::mem;
-use std::ops::Deref;
-use std::str;
-use std::str::Utf8Error;
-
-use crate::raw::RawYarn;
-use crate::Utf8Chunks;
-use crate::YarnBox;
-
-#[cfg(doc)]
-use crate::*;
-
-/// An optimized, freely copyable string type.
-///
-/// Like a [`Yarn`], but [`Copy`].
-///
-/// In general, prefer to use [`Yarn`] except when you absolutely need the type
-/// to be [`Copy`]. [`YarnRef`] is very similar to [`Yarn`], although it can't
-/// provide full functionality because it can't own a heap allocation.
-///
-/// See the [crate documentation](crate) for general information.
-#[repr(transparent)]
-pub struct YarnRef<'a, Buf>
-where
- Buf: crate::Buf + ?Sized,
-{
- raw: RawYarn,
- _ph: PhantomData<&'a Buf>,
-}
-
-impl<'a, Buf> YarnRef<'a, Buf>
-where
- Buf: crate::Buf + ?Sized,
-{
- pub(crate) const fn buf2raw(buf: &Buf) -> &[u8] {
- let ptr = &buf as *const &Buf as *const &[u8];
- unsafe {
- // SAFETY: The safety rules of `Buf` make this valid.
- *ptr
- }
- }
-
- pub(crate) const unsafe fn raw2buf(buf: &[u8]) -> &Buf {
- let ptr = &buf as *const &[u8] as *const &Buf;
- *ptr
- }
-
- pub(crate) const unsafe fn from_raw(raw: RawYarn) -> Self {
- debug_assert!(!raw.on_heap());
- Self {
- raw,
- _ph: PhantomData,
- }
- }
-
- /// Returns a reference to an empty yarn of any lifetime.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let empty: &YarnRef<str> = YarnRef::empty();
- /// assert_eq!(empty, "");
- /// ```
- ///
- /// This will also be found by the `Default` impl for `&YarnRef`.
- pub fn empty<'b>() -> &'b Self {
- unsafe {
- // SAFETY: YarnRef is a transparent wrapper over RawYarn; even though
- // YarnRef has a destructor, this is fine.
- mem::transmute::<&'b RawYarn, &'b Self>(RawYarn::empty())
- }
- }
-
- /// Returns a yarn pointing to the given slice, without copying.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let foo = YarnRef::new("Byzantium");
- /// assert_eq!(foo.len(), 9);
- /// ```
- pub const fn new(buf: &'a Buf) -> Self {
- unsafe {
- // SAFETY: We copy the lifetime from buf into self, so this alias slice
- // must go away before buf can.
- let raw = RawYarn::alias_slice(Self::buf2raw(buf));
-
- // SAFETY: buf is a valid slice by construction, and alias_slice() never
- // returns a HEAP yarn.
- Self::from_raw(raw)
- }
- }
-
- /// Returns a new yarn containing the contents of the given slice.
- /// This function will always return an inlined string, or `None` if the
- /// given buffer is too big.
- ///
- /// Note that the maximum inlined size is architecture-dependent.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let smol = YarnRef::inlined("smol");
- /// assert_eq!(smol.unwrap(), "smol");
- ///
- /// let big = YarnRef::inlined("biiiiiiiiiiiiiiig");
- /// assert!(big.is_none());
- /// ```
- pub const fn inlined(buf: &Buf) -> Option<Self> {
- // This is a const fn, hence no ?.
- let Some(raw) = RawYarn::from_slice_inlined(Self::buf2raw(buf)) else {
- return None;
- };
-
- unsafe {
- // SAFETY: from_slice_inlined() always returns a SMALL yarn.
- Some(Self::from_raw(raw))
- }
- }
-
- /// Returns a yarn containing a single UTF-8-encoded Unicode scalar.
- /// This function does not allocate: every `char` fits in an inlined yarn.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let a = YarnRef::<str>::from_char('a');
- /// assert_eq!(a, "a");
- /// ```
- pub const fn from_char(c: char) -> Self {
- let raw = RawYarn::from_char(c);
- unsafe {
- // SAFETY: from_char() always returns a SMALL yarn.
- Self::from_raw(raw)
- }
- }
-
- /// Checks whether this yarn is empty.
- pub const fn is_empty(self) -> bool {
- self.len() == 0
- }
-
- /// Returns the length of this yarn, in bytes.
- pub const fn len(self) -> usize {
- self.raw.len()
- }
-
- /// Converts this yarn into a slice.
- pub const fn as_slice(&self) -> &Buf {
- unsafe { Self::raw2buf(self.as_bytes()) }
- }
-
- /// Converts this yarn into a byte slice.
- pub const fn as_bytes(&self) -> &[u8] {
- self.raw.as_slice()
- }
-
- /// Converts this reference yarn into a owning yarn of the same lifetime.
- ///
- /// This function does not make copies or allocations.
- pub const fn to_box(self) -> YarnBox<'a, Buf> {
- unsafe {
- // SAFETY: self is never HEAP, and the output lifetime is the same as the
- // input so if self is ALIASED it will not become invalid before the
- // returned yarn goes out of scope.
- YarnBox::from_raw(self.raw)
- }
- }
-
- /// Converts this yarn into a boxed slice by copying it.
- pub fn to_boxed_bytes(self) -> Box<[u8]> {
- self.to_box().into_boxed_bytes()
- }
-
- /// Converts this yarn into a vector by copying it.
- pub fn to_vec(self) -> Vec<u8> {
- self.to_box().into_vec()
- }
-
- /// Converts this yarn into a byte yarn.
- pub const fn into_bytes(self) -> YarnRef<'a, [u8]> {
- unsafe {
- // SAFETY: [u8] can be constructed from either str or [u8], so this
- // type parameter change is valid.
- YarnRef::from_raw(self.raw)
- }
- }
-
- /// Extends the lifetime of this yarn if this yarn is dynamically known to
- /// point to immortal memory.
- ///
- /// If it doesn't, this function returns `None`.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let yarn = YarnRef::<[u8]>::from_static(b"crunchcrunchcrunch");
- ///
- /// let immortal: YarnRef<'static, [u8]> = yarn.immortalize().unwrap();
- /// assert_eq!(immortal, b"crunchcrunchcrunch");
- ///
- /// let borrowed = YarnRef::new(&*immortal);
- /// assert!(borrowed.immortalize().is_none());
- /// ```
- pub fn immortalize(self) -> Option<YarnRef<'static, Buf>> {
- if !self.raw.is_immortal() {
- return None;
- }
-
- unsafe {
- // SAFETY: We just checked that self.raw is guaranteed immortal (and
- // can therefore be used for a 'static lifetime).
- Some(YarnRef::<'static, Buf>::from_raw(self.raw))
- }
- }
-
- /// Tries to inline this yarn, if it's small enough.
- ///
- /// This operation has no directly visible side effects, and is only intended
- /// to provide a way to relieve memory pressure. In general, you should not
- /// have to call this function directly.
- pub fn inline_in_place(&mut self) {
- if let Some(inlined) = Self::inlined(self.as_slice()) {
- *self = inlined;
- }
- }
-
- /// Returns an iterator over the UTF-8 (or otherwise) chunks in this string.
- ///
- /// This iterator is also used for the `Debug` and `Display` formatter
- /// implementations.
- ///
- /// ```
- /// # use byteyarn::*;
- /// let yarn = ByteYarn::new(b"abc\xFF\xFE\xFF\xF0\x9F\x90\x88\xE2\x80\x8D\xE2\xAC\x9B!");
- /// let yr = yarn.as_ref();
- /// let chunks = yr.utf8_chunks().collect::<Vec<_>>();
- /// assert_eq!(chunks, [
- /// Ok("abc"),
- /// Err(&[0xff][..]),
- /// Err(&[0xfe][..]),
- /// Err(&[0xff][..]),
- /// Ok("ðŸˆâ€â¬›!"),
- /// ]);
- ///
- /// assert_eq!(format!("{yarn:?}"), r#""abc\xFF\xFE\xFFðŸˆ\u{200d}⬛!""#);
- /// assert_eq!(format!("{yarn}"), "abc���ðŸˆâ€â¬›!");
- /// ```
- pub fn utf8_chunks(&self) -> Utf8Chunks {
- Utf8Chunks::new(self.as_bytes())
- }
-}
-
-impl<Buf> YarnRef<'static, Buf>
-where
- Buf: crate::Buf + ?Sized,
-{
- /// Returns a yarn pointing to the given slice, without copying. This function
- /// has the benefit of creating a yarn that remembers that it came from a
- /// static string, meaning that it can be dynamically upcast back to a
- /// `'static` lifetime.
- ///
- /// This function will *not* be found by `From` impls.
- pub const fn from_static(buf: &'static Buf) -> Self {
- let raw = RawYarn::new(Self::buf2raw(buf));
- unsafe { Self::from_raw(raw) }
- }
-}
-
-impl<'a> YarnRef<'a, [u8]> {
- /// Returns a yarn containing a single byte, without allocating.
- ///
- /// This function will be found by `From` impls.
- pub const fn from_byte(c: u8) -> Self {
- let raw = RawYarn::from_byte(c);
- unsafe { Self::from_raw(raw) }
- }
-
- /// Tries to convert this yarn into a UTF-8 yarn via [`str::from_utf8()`].
- ///
- /// ```
- /// # use byteyarn::*;
- /// let yarn = ByteYarn::new(&[0xf0, 0x9f, 0x90, 0x88, 0xe2, 0x80, 0x8d, 0xe2, 0xac, 0x9b]);
- /// assert_eq!(yarn.as_ref().to_utf8().unwrap(), "ðŸˆâ€â¬›");
- ///
- /// assert!(ByteYarn::from_byte(0xff).as_ref().to_utf8().is_err());
- /// ```
- pub fn to_utf8(self) -> Result<YarnRef<'a, str>, Utf8Error> {
- str::from_utf8(self.as_bytes())?;
- unsafe { Ok(YarnRef::from_raw(self.raw)) }
- }
-}
-
-impl<'a> YarnRef<'a, str> {
- /// Converts this yarn into a string slice.
- pub fn as_str(&self) -> &str {
- self.as_slice()
- }
-
- /// Converts this yarn into a boxed slice by copying it.
- pub fn to_boxed_str(self) -> Box<str> {
- self.to_box().into_boxed_str()
- }
-
- /// Converts this yarn into a string by copying it.
- // This does the same thing as to_string, but more efficiently. :)
- // The clippy diagnostic also seems wrong, because it says something about
- // this method taking &self? Very odd.
- #[allow(clippy::inherent_to_string_shadow_display)]
- pub fn to_string(self) -> String {
- self.to_box().into_string()
- }
-}
-
-impl<Buf> Deref for YarnRef<'_, Buf>
-where
- Buf: crate::Buf + ?Sized,
-{
- type Target = Buf;
- fn deref(&self) -> &Buf {
- self.as_slice()
- }
-}
-
-impl<Buf> Copy for YarnRef<'_, Buf> where Buf: crate::Buf + ?Sized {}
-impl<Buf> Clone for YarnRef<'_, Buf>
-where
- Buf: crate::Buf + ?Sized,
-{
- fn clone(&self) -> Self {
- *self
- }
-}
-
-impl<Buf: crate::Buf + ?Sized> fmt::Debug for YarnRef<'_, Buf> {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- write!(f, "\"")?;
- for chunk in self.utf8_chunks() {
- match chunk {
- Ok(utf8) => write!(f, "{}", utf8.escape_debug())?,
- Err(bytes) => {
- for b in bytes {
- write!(f, "\\x{:02X}", b)?;
- }
- }
- }
- }
- write!(f, "\"")
- }
-}
-
-impl<Buf: crate::Buf + ?Sized> fmt::Display for YarnRef<'_, Buf> {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- for chunk in self.utf8_chunks() {
- match chunk {
- Ok(utf8) => f.write_str(utf8)?,
- Err(..) => f.write_char(char::REPLACEMENT_CHARACTER)?,
- }
- }
-
- Ok(())
- }
-}
-
-impl<Slice, Buf> PartialEq<Slice> for YarnRef<'_, Buf>
-where
- Buf: crate::Buf + ?Sized,
- Slice: AsRef<Buf> + ?Sized,
-{
- fn eq(&self, that: &Slice) -> bool {
- self.as_slice() == that.as_ref()
- }
-}
-
-impl<Buf: crate::Buf + Eq + ?Sized> Eq for YarnRef<'_, Buf> {}
-
-impl<Slice, Buf> PartialOrd<Slice> for YarnRef<'_, Buf>
-where
- Buf: crate::Buf + ?Sized,
- Slice: AsRef<Buf> + ?Sized,
-{
- fn partial_cmp(&self, that: &Slice) -> Option<Ordering> {
- self.as_slice().partial_cmp(that.as_ref())
- }
-}
-
-impl<Buf: crate::Buf + ?Sized> Ord for YarnRef<'_, Buf> {
- fn cmp(&self, that: &Self) -> Ordering {
- self.as_slice().cmp(that.as_slice())
- }
-}
-
-impl<Buf: crate::Buf + ?Sized> Hash for YarnRef<'_, Buf> {
- fn hash<H: Hasher>(&self, state: &mut H) {
- self.as_slice().hash(state)
- }
-}
-
-impl<Buf: crate::Buf + ?Sized> Default for YarnRef<'_, Buf> {
- fn default() -> Self {
- *<&Self>::default()
- }
-}
-
-impl<Buf: crate::Buf + ?Sized> Default for &YarnRef<'_, Buf> {
- fn default() -> Self {
- YarnRef::empty()
- }
-}
diff --git a/vendor/byteyarn/src/utf8.rs b/vendor/byteyarn/src/utf8.rs
deleted file mode 100644
index a0006807e..000000000
--- a/vendor/byteyarn/src/utf8.rs
+++ /dev/null
@@ -1,151 +0,0 @@
-//! UTF-8 utilities not provided by the standard library.
-
-use std::str;
-
-#[cfg(doc)]
-use crate::*;
-
-/// An iterator over UTF-8 chunks in a byte buffer.
-///
-/// Any time non-UTF-8 bytes are encountered, they are returned as `Err`s
-/// from the iterator.
-///
-/// See [`Yarn::utf8_chunks()`].
-#[derive(Copy, Clone)]
-pub struct Utf8Chunks<'a> {
- buf: &'a [u8],
- invalid_prefix: Option<usize>,
-}
-
-impl<'a> Utf8Chunks<'a> {
- /// Returns the rest of the underlying byte buffer that has not been yielded.
- pub fn rest(self) -> &'a [u8] {
- self.buf
- }
-
- pub(crate) fn new(buf: &'a [u8]) -> Self {
- Self {
- buf,
- invalid_prefix: None,
- }
- }
-
- unsafe fn take(&mut self, len: usize) -> &'a [u8] {
- debug_assert!(len <= self.buf.len());
-
- let pre = self.buf.get_unchecked(..len);
- self.buf = self.buf.get_unchecked(len..);
- pre
- }
-}
-
-impl<'a> Iterator for Utf8Chunks<'a> {
- type Item = Result<&'a str, &'a [u8]>;
-
- fn next(&mut self) -> Option<Self::Item> {
- if let Some(prefix) = self.invalid_prefix.take() {
- let bytes = unsafe {
- // SAFETY: self.invalid_prefix is only ever written to in this function,
- // where it gets set to a value that is known to be in-range.
- self.take(prefix)
- };
-
- return Some(Err(bytes));
- }
-
- if self.buf.is_empty() {
- return None;
- }
-
- let utf8 = match str::from_utf8(self.buf) {
- Ok(utf8) => {
- self.buf = &[];
- utf8
- }
- Err(e) => {
- let bytes = unsafe {
- // SAFETY: valid_up_to() always returns a value in range of self.buf.
- self.take(e.valid_up_to())
- };
-
- let utf8 = match cfg!(debug_assertions) {
- true => str::from_utf8(bytes).unwrap(),
-
- // SAFETY: the value of valid_up_to() delimits valid UTF-8, by
- // definition.
- false => unsafe { str::from_utf8_unchecked(bytes) },
- };
-
- self.invalid_prefix = match e.error_len() {
- Some(len) => Some(len),
- None => Some(self.buf.len()),
- };
-
- if utf8.is_empty() {
- return self.next();
- }
-
- utf8
- }
- };
-
- Some(Ok(utf8))
- }
-}
-
-/// `const`-enabled UTF-8 encoding.
-///
-/// Returns the encoded bytes in a static array, and the number of those bytes
-/// that are pertinent.
-pub const fn encode_utf8(c: char) -> ([u8; 4], usize) {
- const CONT: u8 = 0b1000_0000;
- const CONT_MASK: u8 = !CONT >> 1;
-
- const B1: u8 = 0b0000_0000;
- const B1_MASK: u8 = !B1 >> 1;
-
- const B2: u8 = 0b1100_0000;
- const B2_MASK: u8 = !B2 >> 1;
-
- const B3: u8 = 0b1110_0000;
- const B3_MASK: u8 = !B3 >> 1;
-
- const B4: u8 = 0b1111_0000;
- const B4_MASK: u8 = !B4 >> 1;
-
- const fn sextet(c: char, idx: u32) -> u8 {
- ((c as u32) >> (idx * 6)) as u8
- }
-
- match c.len_utf8() {
- 1 => ([sextet(c, 0) & B1_MASK | B1, 0, 0, 0], 1),
- 2 => (
- [
- sextet(c, 1) & B2_MASK | B2,
- sextet(c, 0) & CONT_MASK | CONT,
- 0,
- 0,
- ],
- 2,
- ),
- 3 => (
- [
- sextet(c, 2) & B3_MASK | B3,
- sextet(c, 1) & CONT_MASK | CONT,
- sextet(c, 0) & CONT_MASK | CONT,
- 0,
- ],
- 3,
- ),
- 4 => (
- [
- sextet(c, 3) & B4_MASK | B4,
- sextet(c, 2) & CONT_MASK | CONT,
- sextet(c, 1) & CONT_MASK | CONT,
- sextet(c, 0) & CONT_MASK | CONT,
- ],
- 4,
- ),
- _ => unreachable!(),
- }
-}
diff --git a/vendor/cargo_metadata/.cargo-checksum.json b/vendor/cargo_metadata/.cargo-checksum.json
index a2fc9f56f..b686d1b95 100644
--- a/vendor/cargo_metadata/.cargo-checksum.json
+++ b/vendor/cargo_metadata/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"2e68a86864c8d2c00e40f0f9d53a8507cc69bc124f1779e795b5334451ce75bb","Cargo.toml":"cc68bf23ad777a381d94a2d0a40758412d7ba5323750965427cb6b4537616fbd","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"6be7aaba23d8646b470a966eef2f00c9fa04cf4d1de25cfb71680cef562e1574","clippy.toml":"0eb773e1a242ba7e06f0ca5c23be71b5989f4952fe18cae35e5322066e706495","src/dependency.rs":"c593ddc73d863c5712e2aba58b5f4d9bd915a5ac0bc17df71642aa79aa93bfdc","src/diagnostic.rs":"fee47d27390f1026ff99ffade5dfd2ab3e9b9839c3f33ce91a7dcde875551374","src/errors.rs":"797afd61efdd843ae570d9e972dd2425d33823d4a78c0c488028493dffb45c7a","src/lib.rs":"f436be9c0ded5ce27198ba145dce70673e37d0d53728e11b12276ef0c55741ec","src/messages.rs":"b16fd1d8a1a7099d371edb5d2e1495871afb61856025b0128a9e2262517e2099","tests/selftest.rs":"73afd494c1bf7dd4e1a99971e9ff66a0e21fc7bf3e327663df15d2350dcdfc70","tests/test_samples.rs":"f5015e6635935b505ad9a09caf8b05b980ff248adaaaf7bde166f8bce2152823"},"package":"e7daec1a2a2129eeba1644b220b4647ec537b0b5d4bfd6876fcc5a540056b592"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"5c0030a1b27f047409d0fdf83f6458017c10e14b047347d2ce272250d818b86a","Cargo.toml":"0e1d4e7281f6404de243ec62cb3022fb13f0be663c6980f933204e30d33b9857","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"6be7aaba23d8646b470a966eef2f00c9fa04cf4d1de25cfb71680cef562e1574","clippy.toml":"0eb773e1a242ba7e06f0ca5c23be71b5989f4952fe18cae35e5322066e706495","src/dependency.rs":"c593ddc73d863c5712e2aba58b5f4d9bd915a5ac0bc17df71642aa79aa93bfdc","src/diagnostic.rs":"fee47d27390f1026ff99ffade5dfd2ab3e9b9839c3f33ce91a7dcde875551374","src/errors.rs":"797afd61efdd843ae570d9e972dd2425d33823d4a78c0c488028493dffb45c7a","src/lib.rs":"6e1fb60137253ea074d17c2cd83208de3d46d7f20927efd307a52b02baa0d87d","src/libtest.rs":"705519c92f6f1ad1594908b9024d6311777a3c20e23e74a3424e4577850f374c","src/messages.rs":"b16fd1d8a1a7099d371edb5d2e1495871afb61856025b0128a9e2262517e2099","tests/selftest.rs":"926ab92fd8823f9e43bacf753343cfa8a24e38d8d384604f274f1e9df500a511","tests/test_samples.rs":"f7dce6f723da930f822cf5eceda20af6473e8ac0302957cccff06479aabb8678"},"package":"2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037"} \ No newline at end of file
diff --git a/vendor/cargo_metadata/CHANGELOG.md b/vendor/cargo_metadata/CHANGELOG.md
index 0759858a2..c045c7d04 100644
--- a/vendor/cargo_metadata/CHANGELOG.md
+++ b/vendor/cargo_metadata/CHANGELOG.md
@@ -38,3 +38,9 @@
- Updated `derive_builder` to the latest version.
- Made use of `matches!` macros where possible.
- Fixed some tests
+
+## [0.15.1] - 2022-10-13
+
+### Added
+
+- Added `TestMessage`, `TestEvent`, `SuiteEvent` for parsing the `cargo test -- --format json` output.
diff --git a/vendor/cargo_metadata/Cargo.toml b/vendor/cargo_metadata/Cargo.toml
index 6ae78b7b0..4465fd7f0 100644
--- a/vendor/cargo_metadata/Cargo.toml
+++ b/vendor/cargo_metadata/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2018"
rust-version = "1.56.0"
name = "cargo_metadata"
-version = "0.17.0"
+version = "0.18.1"
authors = ["Oliver Schneider <git-spam-no-reply9815368754983@oli-obk.de>"]
description = "structured access to the output of `cargo metadata`"
readme = "README.md"
@@ -53,3 +53,4 @@ version = "1.0.31"
[features]
builder = ["derive_builder"]
default = []
+unstable = []
diff --git a/vendor/cargo_metadata/src/lib.rs b/vendor/cargo_metadata/src/lib.rs
index c222c130e..061fd8bc6 100644
--- a/vendor/cargo_metadata/src/lib.rs
+++ b/vendor/cargo_metadata/src/lib.rs
@@ -99,6 +99,8 @@ pub use dependency::DependencyBuilder;
pub use dependency::{Dependency, DependencyKind};
use diagnostic::Diagnostic;
pub use errors::{Error, Result};
+#[cfg(feature = "unstable")]
+pub use libtest::TestMessage;
#[allow(deprecated)]
pub use messages::parse_messages;
pub use messages::{
@@ -115,6 +117,8 @@ use serde::{Deserialize, Deserializer, Serialize};
mod dependency;
pub mod diagnostic;
mod errors;
+#[cfg(feature = "unstable")]
+pub mod libtest;
mod messages;
/// An "opaque" identifier for a package.
@@ -151,6 +155,11 @@ pub struct Metadata {
pub packages: Vec<Package>,
/// A list of all workspace members
pub workspace_members: Vec<PackageId>,
+ /// The list of default workspace members
+ ///
+ /// This not available if running with a version of Cargo older than 1.71.
+ #[serde(skip_serializing_if = "workspace_default_members_is_missing")]
+ pub workspace_default_members: WorkspaceDefaultMembers,
/// Dependencies graph
pub resolve: Option<Resolve>,
/// Workspace root
@@ -190,6 +199,18 @@ impl Metadata {
.filter(|&p| self.workspace_members.contains(&p.id))
.collect()
}
+
+ /// Get the workspace default packages.
+ ///
+ /// # Panics
+ ///
+ /// This will panic if running with a version of Cargo older than 1.71.
+ pub fn workspace_default_packages(&self) -> Vec<&Package> {
+ self.packages
+ .iter()
+ .filter(|&p| self.workspace_default_members.contains(&p.id))
+ .collect()
+ }
}
impl<'a> std::ops::Index<&'a PackageId> for Metadata {
@@ -203,6 +224,41 @@ impl<'a> std::ops::Index<&'a PackageId> for Metadata {
}
}
+#[derive(Clone, Debug, Deserialize, Serialize)]
+#[serde(transparent)]
+/// A list of default workspace members.
+///
+/// See [`Metadata::workspace_default_members`].
+///
+/// It is only available if running a version of Cargo of 1.71 or newer.
+///
+/// # Panics
+///
+/// Dereferencing when running an older version of Cargo will panic.
+pub struct WorkspaceDefaultMembers(Option<Vec<PackageId>>);
+
+impl core::ops::Deref for WorkspaceDefaultMembers {
+ type Target = [PackageId];
+
+ fn deref(&self) -> &Self::Target {
+ self.0
+ .as_ref()
+ .expect("WorkspaceDefaultMembers should only be dereferenced on Cargo versions >= 1.71")
+ }
+}
+
+/// Return true if a valid value for [`WorkspaceDefaultMembers`] is missing, and
+/// dereferencing it would panic.
+///
+/// Internal helper for `skip_serializing_if` and test code. Might be removed in
+/// the future.
+#[doc(hidden)]
+pub fn workspace_default_members_is_missing(
+ workspace_default_members: &WorkspaceDefaultMembers,
+) -> bool {
+ workspace_default_members.0.is_none()
+}
+
#[derive(Clone, Serialize, Deserialize, Debug)]
#[cfg_attr(feature = "builder", derive(Builder))]
#[non_exhaustive]
@@ -289,11 +345,12 @@ pub struct DepKindInfo {
/// Each [`target`][Package::targets] of a `Package` will be built as a crate.
/// For more information, see <https://doc.rust-lang.org/book/ch07-01-packages-and-crates.html>.
pub struct Package {
- /// Name as given in the `Cargo.toml`
+ /// The [`name` field](https://doc.rust-lang.org/cargo/reference/manifest.html#the-name-field) as given in the `Cargo.toml`
+ // (We say "given in" instead of "specified in" since the `name` key cannot be inherited from the workspace.)
pub name: String,
- /// Version given in the `Cargo.toml`
+ /// The [`version` field](https://doc.rust-lang.org/cargo/reference/manifest.html#the-version-field) as specified in the `Cargo.toml`
pub version: Version,
- /// Authors given in the `Cargo.toml`
+ /// The [`authors` field](https://doc.rust-lang.org/cargo/reference/manifest.html#the-authors-field) as specified in the `Cargo.toml`
#[serde(default)]
pub authors: Vec<String>,
/// An opaque identifier for a package
@@ -301,12 +358,13 @@ pub struct Package {
/// The source of the package, e.g.
/// crates.io or `None` for local projects.
pub source: Option<Source>,
- /// Description as given in the `Cargo.toml`
+ /// The [`description` field](https://doc.rust-lang.org/cargo/reference/manifest.html#the-description-field) as specified in the `Cargo.toml`
pub description: Option<String>,
/// List of dependencies of this particular package
pub dependencies: Vec<Dependency>,
- /// License as given in the `Cargo.toml`
+ /// The [`license` field](https://doc.rust-lang.org/cargo/reference/manifest.html#the-license-and-license-file-fields) as specified in the `Cargo.toml`
pub license: Option<String>,
+ /// The [`license-file` field](https://doc.rust-lang.org/cargo/reference/manifest.html#the-license-and-license-file-fields) as specified in the `Cargo.toml`.
/// If the package is using a nonstandard license, this key may be specified instead of
/// `license`, and must point to a file relative to the manifest.
pub license_file: Option<Utf8PathBuf>,
@@ -316,32 +374,33 @@ pub struct Package {
pub features: BTreeMap<String, Vec<String>>,
/// Path containing the `Cargo.toml`
pub manifest_path: Utf8PathBuf,
- /// Categories as given in the `Cargo.toml`
+ /// The [`categories` field](https://doc.rust-lang.org/cargo/reference/manifest.html#the-categories-field) as specified in the `Cargo.toml`
#[serde(default)]
pub categories: Vec<String>,
- /// Keywords as given in the `Cargo.toml`
+ /// The [`keywords` field](https://doc.rust-lang.org/cargo/reference/manifest.html#the-keywords-field) as specified in the `Cargo.toml`
#[serde(default)]
pub keywords: Vec<String>,
- /// Readme as given in the `Cargo.toml`
+ /// The [`readme` field](https://doc.rust-lang.org/cargo/reference/manifest.html#the-readme-field) as specified in the `Cargo.toml`
pub readme: Option<Utf8PathBuf>,
- /// Repository as given in the `Cargo.toml`
+ /// The [`repository` URL](https://doc.rust-lang.org/cargo/reference/manifest.html#the-repository-field) as specified in the `Cargo.toml`
// can't use `url::Url` because that requires a more recent stable compiler
pub repository: Option<String>,
- /// Homepage as given in the `Cargo.toml`
+ /// The [`homepage` URL](https://doc.rust-lang.org/cargo/reference/manifest.html#the-homepage-field) as specified in the `Cargo.toml`.
///
/// On versions of cargo before 1.49, this will always be [`None`].
pub homepage: Option<String>,
- /// Documentation URL as given in the `Cargo.toml`
+ /// The [`documentation` URL](https://doc.rust-lang.org/cargo/reference/manifest.html#the-documentation-field) as specified in the `Cargo.toml`.
///
/// On versions of cargo before 1.49, this will always be [`None`].
pub documentation: Option<String>,
- /// Default Rust edition for the package
+ /// The default Rust edition for the package (either what's specified in the [`edition` field](https://doc.rust-lang.org/cargo/reference/manifest.html#the-edition-field)
+ /// or defaulting to [`Edition::E2015`]).
///
/// Beware that individual targets may specify their own edition in
/// [`Target::edition`].
#[serde(default)]
pub edition: Edition,
- /// Contents of the free form package.metadata section
+ /// Contents of the free form [`package.metadata` section](https://doc.rust-lang.org/cargo/reference/manifest.html#the-metadata-table).
///
/// This contents can be serialized to a struct using serde:
///
@@ -368,16 +427,19 @@ pub struct Package {
pub metadata: serde_json::Value,
/// The name of a native library the package is linking to.
pub links: Option<String>,
- /// List of registries to which this package may be published.
+ /// List of registries to which this package may be published (derived from the [`publish` field](https://doc.rust-lang.org/cargo/reference/manifest.html#the-publish-field)).
///
/// Publishing is unrestricted if `None`, and forbidden if the `Vec` is empty.
///
/// This is always `None` if running with a version of Cargo older than 1.39.
pub publish: Option<Vec<String>>,
+ /// The [`default-run` field](https://doc.rust-lang.org/cargo/reference/manifest.html#the-default-run-field) as given in the `Cargo.toml`
+ // (We say "given in" instead of "specified in" since the `default-run` key cannot be inherited from the workspace.)
/// The default binary to run by `cargo run`.
///
/// This is always `None` if running with a version of Cargo older than 1.55.
pub default_run: Option<String>,
+ /// The [`rust-version` field](https://doc.rust-lang.org/cargo/reference/manifest.html#the-rust-version-field) as specified in the `Cargo.toml`.
/// The minimum supported Rust version of this package.
///
/// This is always `None` if running with a version of Cargo older than 1.58.
diff --git a/vendor/cargo_metadata/src/libtest.rs b/vendor/cargo_metadata/src/libtest.rs
new file mode 100644
index 000000000..4de86e7d2
--- /dev/null
+++ b/vendor/cargo_metadata/src/libtest.rs
@@ -0,0 +1,165 @@
+//! Parses output of [libtest](https://github.com/rust-lang/rust/blob/master/library/test/src/formatters/json.rs).
+//!
+//! Since this module parses output in an unstable format, all structs in this module may change at any time, and are exempt from semver guarantees.
+use serde::{Deserialize, Serialize};
+
+/// Suite related event
+#[derive(Debug, PartialEq, Deserialize, Serialize)]
+#[serde(tag = "event")]
+#[serde(rename_all = "lowercase")]
+/// Suite event
+pub enum SuiteEvent {
+ /// emitted on the start of a test run, and the start of the doctests
+ Started {
+ /// number of tests in this suite
+ test_count: usize,
+ },
+ /// the suite has finished
+ Ok {
+ /// the number of tests that passed
+ passed: usize,
+ /// the number of tests that failed
+ failed: usize,
+ /// number of tests that were ignored
+ ignored: usize,
+ /// number of benchmarks run
+ measured: usize,
+ /// i think this is based on what you specify in the cargo test argument
+ filtered_out: usize,
+ /// how long the suite took to run
+ exec_time: f32,
+ },
+ /// the suite has at least one failing test
+ Failed {
+ /// the number of tests that passed
+ passed: usize,
+ /// the number of tests that failed
+ failed: usize,
+ /// number of tests that were ignored
+ ignored: usize,
+ /// i think its something to do with benchmarks?
+ measured: usize,
+ /// i think this is based on what you specify in the cargo test argument
+ filtered_out: usize,
+ /// how long the suite took to run
+ exec_time: f32,
+ },
+}
+
+#[derive(Debug, PartialEq, Deserialize, Serialize)]
+#[serde(tag = "event")]
+#[serde(rename_all = "lowercase")]
+/// Test event
+pub enum TestEvent {
+ /// a new test starts
+ Started {
+ /// the name of this test
+ name: String,
+ },
+ /// the test has finished
+ Ok {
+ /// which one
+ name: String,
+ /// in how long
+ exec_time: f32,
+ /// what did it say?
+ stdout: Option<String>,
+ },
+ /// the test has failed
+ Failed {
+ /// which one
+ name: String,
+ /// in how long
+ exec_time: f32,
+ /// why?
+ stdout: Option<String>,
+ /// it timed out?
+ reason: Option<String>,
+ /// what message
+ message: Option<String>,
+ },
+ /// the test has been ignored
+ Ignored {
+ /// which one
+ name: String,
+ },
+ /// the test has timed out
+ Timeout {
+ /// which one
+ name: String,
+ },
+}
+
+impl TestEvent {
+ /// Get the name of this test
+ pub fn name(&self) -> &str {
+ let (Self::Started { name }
+ | Self::Ok { name, .. }
+ | Self::Ignored { name }
+ | Self::Failed { name, .. }
+ | Self::Timeout { name }) = self;
+ name
+ }
+
+ /// Get the stdout of this test, if available.
+ pub fn stdout(&self) -> Option<&str> {
+ match self {
+ Self::Ok { stdout, .. } | Self::Failed { stdout, .. } => stdout.as_deref(),
+ _ => None,
+ }
+ }
+}
+
+#[derive(Debug, PartialEq, Deserialize, Serialize)]
+/// Represents the output of `cargo test -- -Zunstable-options --report-time --show-output --format json`.
+///
+/// requires --report-time
+///
+/// # Stability
+///
+/// As this struct is for interfacing with the unstable libtest json output, this struct may change at any time, without semver guarantees.
+#[serde(tag = "type")]
+#[serde(rename_all = "lowercase")]
+pub enum TestMessage {
+ /// suite related message
+ Suite(SuiteEvent),
+ /// test related message
+ Test(TestEvent),
+ /// bench related message
+ Bench {
+ /// name of benchmark
+ name: String,
+ /// distribution
+ median: f32,
+ /// deviation
+ deviation: f32,
+ /// thruput in MiB per second
+ mib_per_second: Option<f32>,
+ },
+}
+
+#[test]
+fn deser() {
+ macro_rules! run {
+ ($($input:literal parses to $output:expr),+) => {
+ $(assert_eq!(dbg!(serde_json::from_str::<TestMessage>($input)).unwrap(), $output);)+
+ };
+ }
+ run![
+ r#"{ "type": "suite", "event": "started", "test_count": 2 }"# parses to TestMessage::Suite(SuiteEvent::Started { test_count: 2 }),
+ r#"{ "type": "test", "event": "started", "name": "fail" }"# parses to TestMessage::Test(TestEvent::Started { name: "fail".into() }),
+ r#"{ "type": "test", "name": "fail", "event": "ok", "exec_time": 0.000003428, "stdout": "hello world" }"# parses to TestMessage::Test(TestEvent::Ok { name: "fail".into(), exec_time: 0.000003428, stdout: Some("hello world".into()) }),
+ r#"{ "type": "test", "event": "started", "name": "nope" }"# parses to TestMessage::Test(TestEvent::Started { name: "nope".into() }),
+ r#"{ "type": "test", "name": "nope", "event": "ignored" }"# parses to TestMessage::Test(TestEvent::Ignored { name: "nope".into() }),
+ r#"{ "type": "suite", "event": "ok", "passed": 1, "failed": 0, "ignored": 1, "measured": 0, "filtered_out": 0, "exec_time": 0.000684028 }"# parses to TestMessage::Suite(SuiteEvent::Ok { passed: 1, failed: 0, ignored: 1, measured: 0, filtered_out: 0, exec_time: 0.000684028 })
+ ];
+
+ run![
+ r#"{ "type": "suite", "event": "started", "test_count": 2 }"# parses to TestMessage::Suite(SuiteEvent::Started { test_count: 2 }),
+ r#"{ "type": "test", "event": "started", "name": "fail" }"# parses to TestMessage::Test(TestEvent::Started { name: "fail".into() }),
+ r#"{ "type": "test", "event": "started", "name": "benc" }"# parses to TestMessage::Test(TestEvent::Started { name: "benc".into() }),
+ r#"{ "type": "bench", "name": "benc", "median": 0, "deviation": 0 }"# parses to TestMessage::Bench { name: "benc".into(), median: 0., deviation: 0., mib_per_second: None },
+ r#"{ "type": "test", "name": "fail", "event": "failed", "exec_time": 0.000081092, "stdout": "thread 'fail' panicked" }"# parses to TestMessage::Test(TestEvent::Failed { name: "fail".into(), exec_time: 0.000081092, stdout: Some("thread 'fail' panicked".into()), reason: None, message: None} ),
+ r#"{ "type": "suite", "event": "failed", "passed": 0, "failed": 1, "ignored": 0, "measured": 1, "filtered_out": 0, "exec_time": 0.000731068 }"# parses to TestMessage::Suite(SuiteEvent::Failed { passed: 0, failed: 1, ignored: 0, measured: 1, filtered_out: 0, exec_time: 0.000731068 })
+ ];
+}
diff --git a/vendor/cargo_metadata/tests/selftest.rs b/vendor/cargo_metadata/tests/selftest.rs
index d6ab61832..dbcc67ec2 100644
--- a/vendor/cargo_metadata/tests/selftest.rs
+++ b/vendor/cargo_metadata/tests/selftest.rs
@@ -161,3 +161,20 @@ fn metadata_deps() {
assert!(serde.req.matches(&Version::parse("1.99.99").unwrap()));
assert!(!serde.req.matches(&Version::parse("2.0.0").unwrap()));
}
+
+#[test]
+fn workspace_default_packages() {
+ use cargo_metadata::workspace_default_members_is_missing;
+
+ let metadata = MetadataCommand::new()
+ .manifest_path("Cargo.toml")
+ .exec()
+ .unwrap();
+ let workspace_packages = metadata.workspace_packages();
+ // this will only trigger on cargo versions that expose
+ // workspace_default_members (that is, cargo >= 1.71)
+ if !workspace_default_members_is_missing(&metadata.workspace_default_members) {
+ let default_packages = metadata.workspace_default_packages();
+ assert_eq!(default_packages, workspace_packages);
+ }
+}
diff --git a/vendor/cargo_metadata/tests/test_samples.rs b/vendor/cargo_metadata/tests/test_samples.rs
index 15128b075..c834778af 100644
--- a/vendor/cargo_metadata/tests/test_samples.rs
+++ b/vendor/cargo_metadata/tests/test_samples.rs
@@ -5,19 +5,19 @@ extern crate serde_json;
use camino::Utf8PathBuf;
use cargo_metadata::{
- ArtifactDebuginfo, CargoOpt, DependencyKind, Edition, Message, Metadata, MetadataCommand,
+ workspace_default_members_is_missing, ArtifactDebuginfo, CargoOpt, DependencyKind, Edition,
+ Message, Metadata, MetadataCommand,
};
-#[test]
-fn old_minimal() {
- // Output from oldest supported version (1.24).
- // This intentionally has as many null fields as possible.
- // 1.8 is when metadata was introduced.
- // Older versions not supported because the following are required:
- // - `workspace_members` added in 1.13
- // - `target_directory` added in 1.19
- // - `workspace_root` added in 1.24
- let json = r#"
+/// Output from oldest version ever supported (1.24).
+///
+/// This intentionally has as many null fields as possible.
+/// 1.8 is when metadata was introduced.
+/// Older versions not supported because the following are required:
+/// - `workspace_members` added in 1.13
+/// - `target_directory` added in 1.19
+/// - `workspace_root` added in 1.24
+const JSON_OLD_MINIMAL: &str = r#"
{
"packages": [
{
@@ -65,7 +65,10 @@ fn old_minimal() {
"workspace_root": "/foo"
}
"#;
- let meta: Metadata = serde_json::from_str(json).unwrap();
+
+#[test]
+fn old_minimal() {
+ let meta: Metadata = serde_json::from_str(JSON_OLD_MINIMAL).unwrap();
assert_eq!(meta.packages.len(), 1);
let pkg = &meta.packages[0];
assert_eq!(pkg.name, "foo");
@@ -121,6 +124,15 @@ fn old_minimal() {
assert_eq!(meta.workspace_root, "/foo");
assert_eq!(meta.workspace_metadata, serde_json::Value::Null);
assert_eq!(meta.target_directory, "/foo/target");
+
+ assert!(workspace_default_members_is_missing(
+ &meta.workspace_default_members
+ ));
+ let serialized = serde_json::to_value(meta).unwrap();
+ assert!(!serialized
+ .as_object()
+ .unwrap()
+ .contains_key("workspace_default_members"));
}
macro_rules! sorted {
@@ -178,6 +190,7 @@ fn all_the_fields() {
// path added in 1.51
// default_run added in 1.55
// rust_version added in 1.58
+ // workspace_default_members added in 1.71
eprintln!("Skipping all_the_fields test, cargo {} is too old.", ver);
return;
}
@@ -187,7 +200,7 @@ fn all_the_fields() {
.unwrap();
assert_eq!(meta.workspace_root.file_name().unwrap(), "all");
assert_eq!(
- serde_json::from_value::<WorkspaceMetadata>(meta.workspace_metadata).unwrap(),
+ serde_json::from_value::<WorkspaceMetadata>(meta.workspace_metadata.clone()).unwrap(),
WorkspaceMetadata {
testobject: TestObject {
myvalue: "abc".to_string()
@@ -196,6 +209,9 @@ fn all_the_fields() {
);
assert_eq!(meta.workspace_members.len(), 1);
assert!(meta.workspace_members[0].to_string().starts_with("all"));
+ if ver >= semver::Version::parse("1.71.0").unwrap() {
+ assert_eq!(&*meta.workspace_default_members, &meta.workspace_members);
+ }
assert_eq!(meta.packages.len(), 9);
let all = meta.packages.iter().find(|p| p.name == "all").unwrap();
@@ -450,6 +466,18 @@ fn all_the_fields() {
kind.target.as_ref().map(|x| x.to_string()),
Some("cfg(windows)".to_string())
);
+
+ let serialized = serde_json::to_value(meta).unwrap();
+ if ver >= semver::Version::parse("1.71.0").unwrap() {
+ assert!(serialized.as_object().unwrap()["workspace_default_members"]
+ .as_array()
+ .is_some());
+ } else {
+ assert!(!serialized
+ .as_object()
+ .unwrap()
+ .contains_key("workspace_default_members"));
+ }
}
#[test]
@@ -690,3 +718,10 @@ fn debuginfo_variants() {
}
}
}
+
+#[test]
+#[should_panic = "WorkspaceDefaultMembers should only be dereferenced on Cargo versions >= 1.71"]
+fn missing_workspace_default_members() {
+ let meta: Metadata = serde_json::from_str(JSON_OLD_MINIMAL).unwrap();
+ let _ = &*meta.workspace_default_members;
+}
diff --git a/vendor/clap-cargo/.cargo-checksum.json b/vendor/clap-cargo/.cargo-checksum.json
new file mode 100644
index 000000000..b4f52fece
--- /dev/null
+++ b/vendor/clap-cargo/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.lock":"64154f8e54375bbb9fde579d12a0f0912bc62145be36d5313a7c5b4194ab7316","Cargo.toml":"2bdf880caade5e7e101eee6117e0165b5d9a6d2ad8ad96d2ab0a04f845da12da","LICENSE-APACHE":"c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08","LICENSE-MIT":"6efb0476a1cc085077ed49357026d8c173bf33017278ef440f222fb9cbcb66e6","README.md":"185ddae3da9e22278c250a6a8f7b7bd7ef6683bf1f68906edc1ea9591ba5313c","examples/flags.rs":"4f9d14c2158bc4071283ba2782426474a62d196b7eb52a5ac20c5e906aa6e87a","src/features.rs":"b248ccb0fa068a543da93971403dda86f396ba756e9bdb51efb41d58da4a33a4","src/lib.rs":"62ede0ccbbf98deeb5f4755f12676a89617c5630b62540555a92eb7ac64ec92e","src/manifest.rs":"5c620ae16c369c41d42dc76fd9bb6fca6df428549d33f385d22905082a020c32","src/style.rs":"2c12178c8914ce9d6ed528122dd25d92782bb319ba559a3067e78600353716b0","src/workspace.rs":"c44f68b6d0d941962c91baff0c7f838ea330112ce1c02cde7806c23e84f92ebf"},"package":"383f21342a464d4af96e9a4cad22a0b4f2880d4a5b3bbf5c9654dd1d9a224ee4"} \ No newline at end of file
diff --git a/vendor/clap-cargo/Cargo.lock b/vendor/clap-cargo/Cargo.lock
new file mode 100644
index 000000000..b7d5072b4
--- /dev/null
+++ b/vendor/clap-cargo/Cargo.lock
@@ -0,0 +1,201 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "anstyle"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b84bf0a05bbb2a83e5eb6fa36bb6e87baa08193c35ff52bbf6b38d8af2890e46"
+
+[[package]]
+name = "camino"
+version = "1.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c530edf18f37068ac2d977409ed5cd50d53d73bc653c7647b48eb78976ac9ae2"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "cargo-platform"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "cargo_metadata"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7daec1a2a2129eeba1644b220b4647ec537b0b5d4bfd6876fcc5a540056b592"
+dependencies = [
+ "camino",
+ "cargo-platform",
+ "semver",
+ "serde",
+ "serde_json",
+ "thiserror",
+]
+
+[[package]]
+name = "clap"
+version = "4.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a13b88d2c62ff462f88e4a121f17a82c1af05693a2f192b5c38d14de73c19f6"
+dependencies = [
+ "clap_builder",
+ "clap_derive",
+]
+
+[[package]]
+name = "clap-cargo"
+version = "0.12.0"
+dependencies = [
+ "anstyle",
+ "cargo_metadata",
+ "clap",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2bb9faaa7c2ef94b2743a21f5a29e6f0010dff4caa69ac8e9d6cf8b6fa74da08"
+dependencies = [
+ "anstyle",
+ "clap_lex",
+]
+
+[[package]]
+name = "clap_derive"
+version = "4.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961"
+
+[[package]]
+name = "heck"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+
+[[package]]
+name = "itoa"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.56"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "ryu"
+version = "1.0.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
+
+[[package]]
+name = "semver"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.159"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c04e8343c3daeec41f58990b9d77068df31209f2af111e059e9fe9646693065"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.159"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c614d17805b093df4b147b51339e7e44bf05ef59fba1e45d83500bcfb4d8585"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.95"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d721eca97ac802aa7777b701877c8004d950fc142651367300d21c1cc0194744"
+dependencies = [
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c9da457c5285ac1f936ebd076af6dac17a61cfe7826f2076b4d015cf47bc8ec"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
diff --git a/vendor/clap-cargo/Cargo.toml b/vendor/clap-cargo/Cargo.toml
new file mode 100644
index 000000000..259d6e726
--- /dev/null
+++ b/vendor/clap-cargo/Cargo.toml
@@ -0,0 +1,106 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.70.0"
+name = "clap-cargo"
+version = "0.12.0"
+authors = ["Ed Page <eopage@gmail.com>"]
+include = [
+ "build.rs",
+ "src/**/*",
+ "Cargo.toml",
+ "Cargo.lock",
+ "LICENSE*",
+ "README.md",
+ "benches/**/*",
+ "examples/**/*",
+]
+description = "Re-usable CLI flags for `cargo` plugins"
+documentation = "https://docs.rs/clap-cargo"
+readme = "README.md"
+keywords = ["cargo"]
+categories = ["development-tools::cargo-plugins"]
+license = "MIT OR Apache-2.0"
+repository = "https://github.com/crate-ci/clap-cargo"
+
+[package.metadata.docs.rs]
+all-features = true
+rustdoc-args = [
+ "--cfg",
+ "docsrs",
+]
+
+[[package.metadata.release.pre-release-replacements]]
+file = "CHANGELOG.md"
+min = 1
+replace = "{{version}}"
+search = "Unreleased"
+
+[[package.metadata.release.pre-release-replacements]]
+exactly = 1
+file = "CHANGELOG.md"
+replace = "...{{tag_name}}"
+search = '\.\.\.HEAD'
+
+[[package.metadata.release.pre-release-replacements]]
+file = "CHANGELOG.md"
+min = 1
+replace = "{{date}}"
+search = "ReleaseDate"
+
+[[package.metadata.release.pre-release-replacements]]
+exactly = 1
+file = "CHANGELOG.md"
+replace = """
+<!-- next-header -->
+## [Unreleased] - ReleaseDate
+"""
+search = "<!-- next-header -->"
+
+[[package.metadata.release.pre-release-replacements]]
+exactly = 1
+file = "CHANGELOG.md"
+replace = """
+<!-- next-url -->
+[Unreleased]: https://github.com/crate-ci/clap-cargo/compare/{{tag_name}}...HEAD"""
+search = "<!-- next-url -->"
+
+[[package.metadata.release.pre-release-replacements]]
+exactly = 1
+file = "README.md"
+replace = "clap-cargo = \"{{version}}\""
+search = "clap-cargo = \"[0-9]+.[0-9]+.[0-9]+\""
+
+[[example]]
+name = "flags"
+required-features = ["clap"]
+
+[dependencies.anstyle]
+version = "1.0.3"
+
+[dependencies.cargo_metadata]
+version = "0.17"
+optional = true
+
+[dependencies.clap]
+version = "4.4.1"
+features = [
+ "std",
+ "derive",
+]
+optional = true
+default-features = false
+
+[features]
+clap = ["dep:clap"]
+default = ["clap"]
diff --git a/vendor/byteyarn/LICENSE.md b/vendor/clap-cargo/LICENSE-APACHE
index d64569567..8f71f43fe 100644
--- a/vendor/byteyarn/LICENSE.md
+++ b/vendor/clap-cargo/LICENSE-APACHE
@@ -1,4 +1,3 @@
-
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
@@ -179,7 +178,7 @@
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
+ boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
@@ -187,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.
- Copyright [yyyy] [name of copyright owner]
+ Copyright {yyyy} {name of copyright owner}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -200,3 +199,4 @@
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+
diff --git a/vendor/clap-cargo/LICENSE-MIT b/vendor/clap-cargo/LICENSE-MIT
new file mode 100644
index 000000000..a2d01088b
--- /dev/null
+++ b/vendor/clap-cargo/LICENSE-MIT
@@ -0,0 +1,19 @@
+Copyright (c) Individual contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/clap-cargo/README.md b/vendor/clap-cargo/README.md
new file mode 100644
index 000000000..a9c545414
--- /dev/null
+++ b/vendor/clap-cargo/README.md
@@ -0,0 +1,62 @@
+# clap-cargo
+
+> Re-usable CLI flags for `cargo` plugins
+
+[![codecov](https://codecov.io/gh/crate-ci/clap-cargo/branch/master/graph/badge.svg)](https://codecov.io/gh/crate-ci/clap-cargo)
+[![Documentation](https://img.shields.io/badge/docs-master-blue.svg)][Documentation]
+![License](https://img.shields.io/crates/l/clap-cargo.svg)
+[![Crates Status](https://img.shields.io/crates/v/clap-cargo.svg)](https://crates.io/crates/clap-cargo)
+
+## Install
+
+Add to your `Cargo.toml`:
+
+```toml
+[dependencies]
+clap-cargo = "0.12.0"
+```
+
+## Examples
+
+```rust
+// ...
+#[derive(Debug, clap::Parser)]
+struct Cli {
+ #[command(flatten)]
+ manifest: clap_cargo::Manifest,
+ #[command(flatten)]
+ workspace: clap_cargo::Workspace,
+ #[command(flatten)]
+ features: clap_cargo::Features,
+}
+```
+
+## Relevant crates
+
+Other crates that might be useful for cargo plugins:
+* [escargot][escargot] for wrapping `cargo-build`, `carg-run`, `cargo-test`, etc.
+* [cargo_metadata][cargo_metadata] for getting crate information.
+* [clap-verbosity][clap-verbosity] for adding logging to your CLI.
+
+[escargot]: https://crates.io/crates/escargot
+[cargo_metadata]: https://crates.io/crates/cargo_metadata
+[clap-verbosity]: https://crates.io/crates/clap-verbosity-flag
+
+## License
+
+Licensed under either of
+
+ * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
+ * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
+
+at your option.
+
+### Contribution
+
+Unless you explicitly state otherwise, any contribution intentionally
+submitted for inclusion in the work by you, as defined in the Apache-2.0
+license, shall be dual licensed as above, without any additional terms or
+conditions.
+
+[Crates.io]: https://crates.io/crates/clap-cargo
+[Documentation]: https://docs.rs/clap-cargo
diff --git a/vendor/clap-cargo/examples/flags.rs b/vendor/clap-cargo/examples/flags.rs
new file mode 100644
index 000000000..a77877852
--- /dev/null
+++ b/vendor/clap-cargo/examples/flags.rs
@@ -0,0 +1,16 @@
+use clap::Parser;
+
+#[derive(Debug, Parser)]
+struct Cli {
+ #[clap(flatten)]
+ manifest: clap_cargo::Manifest,
+ #[clap(flatten)]
+ workspace: clap_cargo::Workspace,
+ #[clap(flatten)]
+ features: clap_cargo::Features,
+}
+
+fn main() {
+ let args = Cli::parse();
+ println!("args = {:#?}", args);
+}
diff --git a/vendor/clap-cargo/src/features.rs b/vendor/clap-cargo/src/features.rs
new file mode 100644
index 000000000..21a7513d2
--- /dev/null
+++ b/vendor/clap-cargo/src/features.rs
@@ -0,0 +1,168 @@
+//! Cargo Feature Flags.
+
+#[derive(Default, Clone, Debug, PartialEq, Eq)]
+#[cfg_attr(feature = "clap", derive(clap::Args))]
+#[non_exhaustive]
+pub struct Features {
+ #[cfg_attr(feature = "clap", arg(long))]
+ /// Activate all available features
+ pub all_features: bool,
+ #[cfg_attr(feature = "clap", arg(long))]
+ /// Do not activate the `default` feature
+ pub no_default_features: bool,
+ #[cfg_attr(feature = "clap", arg(short = 'F', long, value_delimiter = ' '))]
+ /// Space-separated list of features to activate
+ pub features: Vec<String>,
+}
+
+#[cfg(feature = "cargo_metadata")]
+impl Features {
+ /// Forward these flags to the `cargo_metadata` crate.
+ ///
+ /// Note: Requires the features `cargo_metadata`.
+ pub fn forward_metadata<'m>(
+ &self,
+ meta: &'m mut cargo_metadata::MetadataCommand,
+ ) -> &'m mut cargo_metadata::MetadataCommand {
+ if self.all_features {
+ meta.features(cargo_metadata::CargoOpt::AllFeatures);
+ }
+ if self.no_default_features {
+ meta.features(cargo_metadata::CargoOpt::NoDefaultFeatures);
+ }
+ if !self.features.is_empty() {
+ meta.features(cargo_metadata::CargoOpt::SomeFeatures(
+ self.features.clone(),
+ ));
+ }
+ meta
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use super::*;
+
+ #[test]
+ #[cfg(feature = "clap")]
+ fn verify_app() {
+ #[derive(Debug, clap::Parser)]
+ struct Cli {
+ #[command(flatten)]
+ features: Features,
+ }
+
+ use clap::CommandFactory;
+ Cli::command().debug_assert()
+ }
+
+ #[test]
+ #[cfg(feature = "clap")]
+ fn parse_multiple_occurrences() {
+ use clap::Parser;
+
+ #[derive(PartialEq, Eq, Debug, Parser)]
+ struct Args {
+ positional: Option<String>,
+ #[command(flatten)]
+ features: Features,
+ }
+
+ assert_eq!(
+ Args {
+ positional: None,
+ features: Features {
+ all_features: false,
+ no_default_features: false,
+ features: vec![]
+ }
+ },
+ Args::parse_from(["test"])
+ );
+ assert_eq!(
+ Args {
+ positional: Some("foo".to_owned()),
+ features: Features {
+ all_features: false,
+ no_default_features: false,
+ features: vec![]
+ }
+ },
+ Args::parse_from(["test", "foo"])
+ );
+ assert_eq!(
+ Args {
+ positional: None,
+ features: Features {
+ all_features: false,
+ no_default_features: false,
+ features: vec!["foo".to_owned()]
+ }
+ },
+ Args::parse_from(["test", "--features", "foo"])
+ );
+ assert_eq!(
+ Args {
+ positional: None,
+ features: Features {
+ all_features: false,
+ no_default_features: false,
+ features: vec!["foo".to_owned(), "bar".to_owned()]
+ }
+ },
+ Args::parse_from(["test", "--features", "foo bar"])
+ );
+ assert_eq!(
+ Args {
+ positional: Some("baz".to_owned()),
+ features: Features {
+ all_features: false,
+ no_default_features: false,
+ features: vec!["foo".to_owned(), "bar".to_owned()]
+ }
+ },
+ Args::parse_from(["test", "--features", "foo bar", "baz"])
+ );
+ assert_eq!(
+ Args {
+ positional: Some("baz".to_owned()),
+ features: Features {
+ all_features: false,
+ no_default_features: false,
+ features: vec!["foo".to_owned(), "bar".to_owned()]
+ }
+ },
+ Args::parse_from(["test", "--features", "foo", "--features", "bar", "baz"])
+ );
+ }
+
+ #[cfg(feature = "cargo_metadata")]
+ #[test]
+ fn features_all() {
+ let mut metadata = cargo_metadata::MetadataCommand::new();
+ metadata.manifest_path("tests/fixtures/simple/Cargo.toml");
+
+ let features = Features {
+ all_features: true,
+ ..Default::default()
+ };
+ features.forward_metadata(&mut metadata);
+ metadata.exec().unwrap();
+ // TODO verify we forwarded correctly.
+ }
+
+ #[cfg(feature = "cargo_metadata")]
+ #[test]
+ fn features_none() {
+ let mut metadata = cargo_metadata::MetadataCommand::new();
+ metadata.manifest_path("tests/fixtures/simple/Cargo.toml");
+
+ let features = Features {
+ no_default_features: true,
+ ..Default::default()
+ };
+ features.forward_metadata(&mut metadata);
+ metadata.exec().unwrap();
+ // TODO verify we forwarded correctly.
+ }
+}
diff --git a/vendor/clap-cargo/src/lib.rs b/vendor/clap-cargo/src/lib.rs
new file mode 100644
index 000000000..e7acd5774
--- /dev/null
+++ b/vendor/clap-cargo/src/lib.rs
@@ -0,0 +1,52 @@
+//! **clap-cargo**: Re-usable CLI flags for `cargo` plugins
+//!
+//! ## Install
+//!
+//! Add to your `Cargo.toml`:
+//!
+//! ```toml
+//! [dependencies]
+//! clap-cargo = "0.1"
+//! ```
+//!
+//! ## Examples
+//!
+//! ```rust
+//! # #[cfg(feature = "clap")] {
+//! // ...
+//! #[derive(Debug, clap::Parser)]
+//! struct Cli {
+//! #[command(flatten)]
+//! manifest: clap_cargo::Manifest,
+//! #[command(flatten)]
+//! workspace: clap_cargo::Workspace,
+//! #[command(flatten)]
+//! features: clap_cargo::Features,
+//! }
+//! # }
+//! ```
+//!
+//! ## Relevant crates
+//!
+//! Other crates that might be useful for cargo plugins:
+//! * [escargot][escargot] for wrapping `cargo-build`, `carg-run`, `cargo-test`, etc.
+//! * [cargo_metadata][cargo_metadata] for getting crate information.
+//! * [clap-verbosity][clap-verbosity] for adding logging to your CLI.
+//!
+//! [escargot]: https://crates.io/crates/escargot
+//! [cargo_metadata]: https://crates.io/crates/cargo_metadata
+//! [clap-verbosity]: https://crates.io/crates/clap-verbosity-flag
+
+#![cfg_attr(docsrs, feature(doc_auto_cfg))]
+#![warn(missing_debug_implementations)]
+#![warn(unused_extern_crates)]
+
+mod features;
+mod manifest;
+mod workspace;
+
+pub mod style;
+
+pub use features::*;
+pub use manifest::*;
+pub use workspace::*;
diff --git a/vendor/clap-cargo/src/manifest.rs b/vendor/clap-cargo/src/manifest.rs
new file mode 100644
index 000000000..c7d4764ff
--- /dev/null
+++ b/vendor/clap-cargo/src/manifest.rs
@@ -0,0 +1,67 @@
+//! Cargo flag for selecting the relevant crate.
+
+use std::path;
+
+#[derive(Default, Clone, Debug, PartialEq, Eq)]
+#[cfg_attr(feature = "clap", derive(clap::Args))]
+#[non_exhaustive]
+pub struct Manifest {
+ #[cfg_attr(feature = "clap", arg(long, name = "PATH"))]
+ /// Path to Cargo.toml
+ pub manifest_path: Option<path::PathBuf>,
+}
+
+#[cfg(feature = "cargo_metadata")]
+impl Manifest {
+ /// Create a `cargo_metadata::MetadataCommand`
+ ///
+ /// Note: Requires the features `cargo_metadata`.
+ pub fn metadata(&self) -> cargo_metadata::MetadataCommand {
+ let mut c = cargo_metadata::MetadataCommand::new();
+ if let Some(ref manifest_path) = self.manifest_path {
+ c.manifest_path(manifest_path);
+ }
+ c
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use super::*;
+
+ #[test]
+ #[cfg(feature = "clap")]
+ fn verify_app() {
+ #[derive(Debug, clap::Parser)]
+ struct Cli {
+ #[command(flatten)]
+ manifest: Manifest,
+ }
+
+ use clap::CommandFactory;
+ Cli::command().debug_assert()
+ }
+
+ #[cfg(feature = "cargo_metadata")]
+ #[test]
+ fn metadata_with_path() {
+ let manifest = Manifest {
+ manifest_path: Some(path::PathBuf::from("tests/fixtures/simple/Cargo.toml")),
+ };
+ let metadata = manifest.metadata();
+ metadata.exec().unwrap();
+ // TODO verify we forwarded correctly.
+ }
+
+ #[cfg(feature = "cargo_metadata")]
+ #[test]
+ fn metadata_without_path() {
+ let cwd = path::PathBuf::from("tests/fixtures/simple");
+ let manifest = Manifest {
+ manifest_path: None,
+ };
+ let mut metadata = manifest.metadata();
+ metadata.current_dir(cwd).exec().unwrap();
+ // TODO verify we forwarded correctly.
+ }
+}
diff --git a/vendor/clap-cargo/src/style.rs b/vendor/clap-cargo/src/style.rs
new file mode 100644
index 000000000..4ff33d43d
--- /dev/null
+++ b/vendor/clap-cargo/src/style.rs
@@ -0,0 +1,23 @@
+use anstyle::*;
+
+pub const NOP: Style = Style::new();
+pub const HEADER: Style = AnsiColor::Green.on_default().effects(Effects::BOLD);
+pub const USAGE: Style = AnsiColor::Green.on_default().effects(Effects::BOLD);
+pub const LITERAL: Style = AnsiColor::Cyan.on_default().effects(Effects::BOLD);
+pub const PLACEHOLDER: Style = AnsiColor::Cyan.on_default();
+pub const ERROR: Style = AnsiColor::Red.on_default().effects(Effects::BOLD);
+pub const WARN: Style = AnsiColor::Yellow.on_default().effects(Effects::BOLD);
+pub const NOTE: Style = AnsiColor::Cyan.on_default().effects(Effects::BOLD);
+pub const GOOD: Style = AnsiColor::Green.on_default().effects(Effects::BOLD);
+pub const VALID: Style = AnsiColor::Cyan.on_default().effects(Effects::BOLD);
+pub const INVALID: Style = AnsiColor::Yellow.on_default().effects(Effects::BOLD);
+
+#[cfg(feature = "clap")]
+pub const CLAP_STYLING: clap::builder::styling::Styles = clap::builder::styling::Styles::styled()
+ .header(HEADER)
+ .usage(USAGE)
+ .literal(LITERAL)
+ .placeholder(PLACEHOLDER)
+ .error(ERROR)
+ .valid(VALID)
+ .invalid(INVALID);
diff --git a/vendor/clap-cargo/src/workspace.rs b/vendor/clap-cargo/src/workspace.rs
new file mode 100644
index 000000000..09e6e93a9
--- /dev/null
+++ b/vendor/clap-cargo/src/workspace.rs
@@ -0,0 +1,404 @@
+//! Cargo flags for selecting crates in a workspace.
+
+#[derive(Default, Clone, Debug, PartialEq, Eq)]
+#[cfg_attr(feature = "clap", derive(clap::Args))]
+#[non_exhaustive]
+pub struct Workspace {
+ #[cfg_attr(feature = "clap", arg(short, long, value_name = "SPEC"))]
+ /// Package to process (see `cargo help pkgid`)
+ pub package: Vec<String>,
+ #[cfg_attr(feature = "clap", arg(long))]
+ /// Process all packages in the workspace
+ pub workspace: bool,
+ #[cfg_attr(
+ feature = "clap",
+ arg(long, hide_short_help(true), hide_long_help(true))
+ )]
+ /// Process all packages in the workspace
+ pub all: bool,
+ #[cfg_attr(feature = "clap", arg(long, value_name = "SPEC"))]
+ /// Exclude packages from being processed
+ pub exclude: Vec<String>,
+}
+
+#[cfg(feature = "cargo_metadata")]
+impl Workspace {
+ /// Partition workspace members into those selected and those excluded.
+ ///
+ /// Notes:
+ /// - Requires the features `cargo_metadata`.
+ /// - Requires not calling `MetadataCommand::no_deps`
+ pub fn partition_packages<'m>(
+ &self,
+ meta: &'m cargo_metadata::Metadata,
+ ) -> (
+ Vec<&'m cargo_metadata::Package>,
+ Vec<&'m cargo_metadata::Package>,
+ ) {
+ let selection =
+ Packages::from_flags(self.workspace || self.all, &self.exclude, &self.package);
+ let workspace_members: std::collections::HashSet<_> =
+ meta.workspace_members.iter().collect();
+ let base_ids: std::collections::HashSet<_> = match selection {
+ Packages::Default => {
+ // Deviating from cargo because Metadata doesn't have default members
+ let resolve = meta.resolve.as_ref().expect("no-deps is unsupported");
+ match &resolve.root {
+ Some(root) => {
+ let mut base_ids = std::collections::HashSet::new();
+ base_ids.insert(root);
+ base_ids
+ }
+ None => workspace_members,
+ }
+ }
+ Packages::All => workspace_members,
+ Packages::OptOut(_) => workspace_members, // Deviating from cargo by only checking workspace members
+ Packages::Packages(patterns) => {
+ meta.packages
+ .iter()
+ // Deviating from cargo by not supporting patterns
+ // Deviating from cargo by only checking workspace members
+ .filter(|p| workspace_members.contains(&p.id) && patterns.contains(&p.name))
+ .map(|p| &p.id)
+ .collect()
+ }
+ };
+
+ meta.packages
+ .iter()
+ // Deviating from cargo by not supporting patterns
+ .partition(|p| base_ids.contains(&p.id) && !self.exclude.contains(&p.name))
+ }
+}
+
+// See cargo's src/cargo/ops/cargo_compile.rs
+#[derive(Clone, PartialEq, Eq, Debug)]
+#[cfg(feature = "cargo_metadata")]
+#[allow(clippy::enum_variant_names)]
+enum Packages<'p> {
+ Default,
+ All,
+ OptOut(&'p [String]),
+ Packages(&'p [String]),
+}
+
+#[cfg(feature = "cargo_metadata")]
+impl<'p> Packages<'p> {
+ pub fn from_flags(all: bool, exclude: &'p [String], package: &'p [String]) -> Self {
+ match (all, exclude.len(), package.len()) {
+ (false, 0, 0) => Packages::Default,
+ (false, 0, _) => Packages::Packages(package),
+ (false, _, 0) => Packages::OptOut(exclude), // Deviating from cargo because we don't do error handling
+ (false, _, _) => Packages::Packages(package), // Deviating from cargo because we don't do error handling
+ (true, 0, _) => Packages::All,
+ (true, _, _) => Packages::OptOut(exclude),
+ }
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use super::*;
+
+ #[test]
+ #[cfg(feature = "clap")]
+ fn verify_app() {
+ #[derive(Debug, clap::Parser)]
+ struct Cli {
+ #[command(flatten)]
+ workspace: Workspace,
+ }
+
+ use clap::CommandFactory;
+ Cli::command().debug_assert()
+ }
+
+ #[test]
+ #[cfg(feature = "clap")]
+ fn parse_multiple_occurrences() {
+ use clap::Parser;
+
+ #[derive(PartialEq, Eq, Debug, Parser)]
+ struct Args {
+ positional: Option<String>,
+ #[command(flatten)]
+ workspace: Workspace,
+ }
+
+ assert_eq!(
+ Args {
+ positional: None,
+ workspace: Workspace {
+ package: vec![],
+ workspace: false,
+ all: false,
+ exclude: vec![],
+ }
+ },
+ Args::parse_from(["test"])
+ );
+ assert_eq!(
+ Args {
+ positional: Some("baz".to_owned()),
+ workspace: Workspace {
+ package: vec!["foo".to_owned(), "bar".to_owned()],
+ workspace: false,
+ all: false,
+ exclude: vec![],
+ }
+ },
+ Args::parse_from(["test", "--package", "foo", "--package", "bar", "baz"])
+ );
+ assert_eq!(
+ Args {
+ positional: Some("baz".to_owned()),
+ workspace: Workspace {
+ package: vec![],
+ workspace: false,
+ all: false,
+ exclude: vec!["foo".to_owned(), "bar".to_owned()],
+ }
+ },
+ Args::parse_from(["test", "--exclude", "foo", "--exclude", "bar", "baz"])
+ );
+ }
+
+ #[cfg(feature = "cargo_metadata")]
+ #[cfg(test)]
+ mod partition_default {
+ use super::*;
+
+ #[test]
+ fn single_crate() {
+ let mut metadata = cargo_metadata::MetadataCommand::new();
+ metadata.manifest_path("tests/fixtures/simple/Cargo.toml");
+ let metadata = metadata.exec().unwrap();
+
+ let workspace = Workspace {
+ ..Default::default()
+ };
+ let (included, excluded) = workspace.partition_packages(&metadata);
+ assert_eq!(included.len(), 1);
+ assert_eq!(excluded.len(), 0);
+ }
+
+ #[test]
+ fn mixed_ws_root() {
+ let mut metadata = cargo_metadata::MetadataCommand::new();
+ metadata.manifest_path("tests/fixtures/mixed_ws/Cargo.toml");
+ let metadata = metadata.exec().unwrap();
+
+ let workspace = Workspace {
+ ..Default::default()
+ };
+ let (included, excluded) = workspace.partition_packages(&metadata);
+ assert_eq!(included.len(), 1);
+ assert_eq!(excluded.len(), 2);
+ }
+
+ #[test]
+ fn mixed_ws_leaf() {
+ let mut metadata = cargo_metadata::MetadataCommand::new();
+ metadata.manifest_path("tests/fixtures/mixed_ws/c/Cargo.toml");
+ let metadata = metadata.exec().unwrap();
+
+ let workspace = Workspace {
+ ..Default::default()
+ };
+ let (included, excluded) = workspace.partition_packages(&metadata);
+ assert_eq!(included.len(), 1);
+ assert_eq!(excluded.len(), 2);
+ }
+
+ #[test]
+ fn pure_ws_root() {
+ let mut metadata = cargo_metadata::MetadataCommand::new();
+ metadata.manifest_path("tests/fixtures/pure_ws/Cargo.toml");
+ let metadata = metadata.exec().unwrap();
+
+ let workspace = Workspace {
+ ..Default::default()
+ };
+ let (included, excluded) = workspace.partition_packages(&metadata);
+ assert_eq!(included.len(), 3);
+ assert_eq!(excluded.len(), 0);
+ }
+
+ #[test]
+ fn pure_ws_leaf() {
+ let mut metadata = cargo_metadata::MetadataCommand::new();
+ metadata.manifest_path("tests/fixtures/pure_ws/c/Cargo.toml");
+ let metadata = metadata.exec().unwrap();
+
+ let workspace = Workspace {
+ ..Default::default()
+ };
+ let (included, excluded) = workspace.partition_packages(&metadata);
+ assert_eq!(included.len(), 1);
+ assert_eq!(excluded.len(), 2);
+ }
+ }
+
+ #[cfg(feature = "cargo_metadata")]
+ #[cfg(test)]
+ mod partition_all {
+ use super::*;
+
+ #[test]
+ fn single_crate() {
+ let mut metadata = cargo_metadata::MetadataCommand::new();
+ metadata.manifest_path("tests/fixtures/simple/Cargo.toml");
+ let metadata = metadata.exec().unwrap();
+
+ let workspace = Workspace {
+ all: true,
+ ..Default::default()
+ };
+ let (included, excluded) = workspace.partition_packages(&metadata);
+ assert_eq!(included.len(), 1);
+ assert_eq!(excluded.len(), 0);
+ }
+
+ #[test]
+ fn mixed_ws_root() {
+ let mut metadata = cargo_metadata::MetadataCommand::new();
+ metadata.manifest_path("tests/fixtures/mixed_ws/Cargo.toml");
+ let metadata = metadata.exec().unwrap();
+
+ let workspace = Workspace {
+ all: true,
+ ..Default::default()
+ };
+ let (included, excluded) = workspace.partition_packages(&metadata);
+ assert_eq!(included.len(), 3);
+ assert_eq!(excluded.len(), 0);
+ }
+
+ #[test]
+ fn mixed_ws_leaf() {
+ let mut metadata = cargo_metadata::MetadataCommand::new();
+ metadata.manifest_path("tests/fixtures/mixed_ws/c/Cargo.toml");
+ let metadata = metadata.exec().unwrap();
+
+ let workspace = Workspace {
+ all: true,
+ ..Default::default()
+ };
+ let (included, excluded) = workspace.partition_packages(&metadata);
+ assert_eq!(included.len(), 3);
+ assert_eq!(excluded.len(), 0);
+ }
+
+ #[test]
+ fn pure_ws_root() {
+ let mut metadata = cargo_metadata::MetadataCommand::new();
+ metadata.manifest_path("tests/fixtures/pure_ws/Cargo.toml");
+ let metadata = metadata.exec().unwrap();
+
+ let workspace = Workspace {
+ all: true,
+ ..Default::default()
+ };
+ let (included, excluded) = workspace.partition_packages(&metadata);
+ assert_eq!(included.len(), 3);
+ assert_eq!(excluded.len(), 0);
+ }
+
+ #[test]
+ fn pure_ws_leaf() {
+ let mut metadata = cargo_metadata::MetadataCommand::new();
+ metadata.manifest_path("tests/fixtures/pure_ws/c/Cargo.toml");
+ let metadata = metadata.exec().unwrap();
+
+ let workspace = Workspace {
+ all: true,
+ ..Default::default()
+ };
+ let (included, excluded) = workspace.partition_packages(&metadata);
+ assert_eq!(included.len(), 3);
+ assert_eq!(excluded.len(), 0);
+ }
+ }
+
+ #[cfg(feature = "cargo_metadata")]
+ #[cfg(test)]
+ mod partition_package {
+ use super::*;
+
+ #[test]
+ fn single_crate() {
+ let mut metadata = cargo_metadata::MetadataCommand::new();
+ metadata.manifest_path("tests/fixtures/simple/Cargo.toml");
+ let metadata = metadata.exec().unwrap();
+
+ let workspace = Workspace {
+ package: vec!["simple".to_owned()],
+ ..Default::default()
+ };
+ let (included, excluded) = workspace.partition_packages(&metadata);
+ assert_eq!(included.len(), 1);
+ assert_eq!(excluded.len(), 0);
+ }
+
+ #[test]
+ fn mixed_ws_root() {
+ let mut metadata = cargo_metadata::MetadataCommand::new();
+ metadata.manifest_path("tests/fixtures/mixed_ws/Cargo.toml");
+ let metadata = metadata.exec().unwrap();
+
+ let workspace = Workspace {
+ package: vec!["a".to_owned()],
+ ..Default::default()
+ };
+ let (included, excluded) = workspace.partition_packages(&metadata);
+ assert_eq!(included.len(), 1);
+ assert_eq!(excluded.len(), 2);
+ }
+
+ #[test]
+ fn mixed_ws_leaf() {
+ let mut metadata = cargo_metadata::MetadataCommand::new();
+ metadata.manifest_path("tests/fixtures/mixed_ws/c/Cargo.toml");
+ let metadata = metadata.exec().unwrap();
+
+ let workspace = Workspace {
+ package: vec!["a".to_owned()],
+ ..Default::default()
+ };
+ let (included, excluded) = workspace.partition_packages(&metadata);
+ assert_eq!(included.len(), 1);
+ assert_eq!(excluded.len(), 2);
+ }
+
+ #[test]
+ fn pure_ws_root() {
+ let mut metadata = cargo_metadata::MetadataCommand::new();
+ metadata.manifest_path("tests/fixtures/pure_ws/Cargo.toml");
+ let metadata = metadata.exec().unwrap();
+
+ let workspace = Workspace {
+ package: vec!["a".to_owned()],
+ ..Default::default()
+ };
+ let (included, excluded) = workspace.partition_packages(&metadata);
+ assert_eq!(included.len(), 1);
+ assert_eq!(excluded.len(), 2);
+ }
+
+ #[test]
+ fn pure_ws_leaf() {
+ let mut metadata = cargo_metadata::MetadataCommand::new();
+ metadata.manifest_path("tests/fixtures/pure_ws/c/Cargo.toml");
+ let metadata = metadata.exec().unwrap();
+
+ let workspace = Workspace {
+ package: vec!["a".to_owned()],
+ ..Default::default()
+ };
+ let (included, excluded) = workspace.partition_packages(&metadata);
+ assert_eq!(included.len(), 1);
+ assert_eq!(excluded.len(), 2);
+ }
+ }
+}
diff --git a/vendor/clap/.cargo-checksum.json b/vendor/clap/.cargo-checksum.json
index 8b7a95a92..770204c19 100644
--- a/vendor/clap/.cargo-checksum.json
+++ b/vendor/clap/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"684709c1a736c3af005dc93b5f851de8394f7b55d8c673837bc42d73993d5681","Cargo.toml":"4ad53d2295d5afb453ac1cb5f2db7f51f5cade7dea32b648d62f77b5d7f6d8f9","LICENSE-APACHE":"c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08","LICENSE-MIT":"6efb0476a1cc085077ed49357026d8c173bf33017278ef440f222fb9cbcb66e6","README.md":"bcb96a3aedd4da85e24e201a4922e435928b0c0a2f97fd5843d0793a54e6a09f","examples/README.md":"c5f45032ee7acda0c5f98db456cbf4f9b0362d62dc81218fcf03bcdfbd19af05","examples/cargo-example-derive.md":"66d7455f08a038872f42d9d45f9b47ebbdbf9366fafa16b749ece8ba5bdcfcce","examples/cargo-example-derive.rs":"748ba54fb553e797996014e706320b62fad645acca50565a4c6fcd40e8aa1128","examples/cargo-example.md":"60a1d0f253142de5003a9474b28a5a8324a9860fc646af6309d84594d97356bd","examples/cargo-example.rs":"2c2eda50605a5e48c2ba78083e0f545e1df2411b9efaf994c95c9a0357ecbfb1","examples/demo.md":"6c00568794ff99007ab0f08bf7e06fe521cb1f2f0fab30c219f16c6f54bf638d","examples/demo.rs":"08cdd247b47a5202de9b7df7c1f3e7e30da975e56256d930d9db0f6c36741933","examples/derive_ref/augment_args.rs":"274bbe3c91d72609289274a22330067dd0ab42eb9bc3c44c94ed6da149ed56eb","examples/derive_ref/augment_subcommands.rs":"f202fd8a836552c53bb4b33a652b577f254726334f8a72f5fac0526937ab15ef","examples/derive_ref/flatten_hand_args.rs":"d3783fdea6297ffef23939df913ece655670b617f39addfab5147dc217e70fb1","examples/derive_ref/hand_subcommand.rs":"be49b475f86862295eb4d0a00086d5874896f9a66f28cca8fcdf6548943beba7","examples/derive_ref/interop_tests.md":"aaf307e313c3926b14f1265199ab18665bb3dea723729a7e6cbf3b237fa73941","examples/escaped-positional-derive.md":"fb4b4351ceb43ef0c25048e8603dab6fdf4391b84e9b3ad9593602fa89abc572","examples/escaped-positional-derive.rs":"4fe5f9dfbd15d3efcff7ff9b214d00c189ac0592e30b297b154df789e49dbfa3","examples/escaped-positional.md":"b44e23e5706eb815e7875825be815a370f2ba38e41d7998ea762d0ef1fb2ba56","examples/escaped-positional.rs":"e1e784bb90805ef3412f002d9660c979ebbd2d59eb609ceb7f8926c0ad8e7c31","examples/find.md":"acb72e150f9feeb5d7828163f0e36ff5004ae667f6ddbb06d2838a75037177ee","examples/find.rs":"0a9824ae817345e6989ad51b7d514101ee0e842da380e5bad4019ddd2cccedd0","examples/git-derive.md":"d214127af66033e0de4f9da869eb7e6ca073e7c7d7fdf8b6792cba75d39d68e9","examples/git-derive.rs":"4b0a28ef89e2c1578a9f134325495d303663d3cfcacb900ef6efcd38ef5fca44","examples/git.md":"449a75c1e0c7b2dd948b856c81a868f6b8f0c300667b17ec5dd638c6739d2175","examples/git.rs":"8b935b4f516802a9f64654719485fbe8cfc96263e3acd23a74235c3dbdf651ab","examples/multicall-busybox.md":"b8e8a89312e2088b6dd1fac5b5b92266fda9b82c40a650dae2d41b5fcc253594","examples/multicall-busybox.rs":"0be842810003f69de33c9e65258f74a5d1ec742fb0ebc8a49fdebfecc861c408","examples/multicall-hostname.md":"1dedcdcc9927c08cebee11fa01fda7a730f5ddf5227c4902e1eb5ff847a80346","examples/multicall-hostname.rs":"cc58a924dd2e57281f36e30481a1cbc8186952adbf149f9e1e13f9c673614fd9","examples/pacman.md":"a050be1727605a4202faf69db7f991bf974bba51ce0fbd41413de68e6a4af5aa","examples/pacman.rs":"e2183dd3c60f7c3949be6f3d21c85bf8a6b2a14913b675649a770be21c764eda","examples/repl.rs":"972ed0b06962f9daf20b7cee5dd6dc873fc31747e84bce646c0e057678c653f3","examples/tutorial_builder/01_quick.md":"d2a242a6ba832cdb0a2b6f55d428d62e7048f6b7d8d8f4a75f7923da85628ca8","examples/tutorial_builder/01_quick.rs":"7921943f7b697cf9413a87d0ebf32d6db4a93b2674cb66d9ca66530626088d1f","examples/tutorial_builder/02_app_settings.md":"4e7097deb0eb8e926978ef383b0da4bda33966d4e760ac0d258cd4127a054fba","examples/tutorial_builder/02_app_settings.rs":"c050d19fa8c0ecefde73746200fb513da0dd78d904011a1c0a75835fd9c172b3","examples/tutorial_builder/02_apps.md":"3cbc7010e0214d047d98104dadb76ee02ec3c5bba868758e35aebb2fdfd0fa22","examples/tutorial_builder/02_apps.rs":"e654126b44161d5b20ce2e576a6022f027060d003e07ae74c7bbdeddd6fcb880","examples/tutorial_builder/02_crate.md":"995dc62680b9d7c1983c673bf5775c07ae96175db186b5313c0d614308569ec0","examples/tutorial_builder/02_crate.rs":"b0bdc601133bf9e566231dd6be439d0ce82b6911ca53ae4b5c1b5da62eb2acd8","examples/tutorial_builder/03_01_flag_bool.md":"326d8267ce6fcc62e95fdb19f77bdc959067e41af48c7d6e465c0eafe2db741c","examples/tutorial_builder/03_01_flag_bool.rs":"d49b30b527faa6a383b334e572d546fab5c4b298a5549842073ab42a33a05c94","examples/tutorial_builder/03_01_flag_count.md":"c34ff091d239f5861a868bda051322774340be9a63dea32cbfabe8c0cc4dfd94","examples/tutorial_builder/03_01_flag_count.rs":"a003825bc045d4d89265344cfb00082da379150e72fc5d16b33ee93ec9ec0927","examples/tutorial_builder/03_02_option.md":"f436d35a7f2aece1a30f0258f44ae09166fb4faae3b6623beb6a824d2ed234fd","examples/tutorial_builder/03_02_option.rs":"13e58e3f922ef79bb4f3cec63f84dc906bb20ea8bbd33e5ca3cb8cfce847095a","examples/tutorial_builder/03_02_option_mult.md":"c83e0f52f97f38154be30ac34d7d60b9271fd8a0dcab629929ee785d3baa07a2","examples/tutorial_builder/03_02_option_mult.rs":"bd3e522d6ff4a1a9f5849924650acf8ea8afc1f4c3ba633e45926a479f54b7c7","examples/tutorial_builder/03_03_positional.md":"dc2e13cf897e2e2d2b397a1ab739bfd290ec04f437128030eb7f6f609b910be7","examples/tutorial_builder/03_03_positional.rs":"582ffa5b056363a74d2ba966d212fbd6b00f42fe42f0e71ae95009fe75746349","examples/tutorial_builder/03_03_positional_mult.md":"f1d03ca58d9ee75ec9a4cc980006a666e2c529ab6f7deaf6bd88b3fbaf09fc07","examples/tutorial_builder/03_03_positional_mult.rs":"271a9ee04038244fdf378c6a603af9d4cb6a401d82f9e28928c2e7ad971aff10","examples/tutorial_builder/03_04_subcommands.md":"64f5899e1bfb8c5f166642db89ba1de1a7f2dc88b3ea0025b3ce5543f12a605f","examples/tutorial_builder/03_04_subcommands.rs":"a309a332004edbed6dc14b64b1ba6cc0cd42871f3c5b8da7daab772764839c68","examples/tutorial_builder/03_05_default_values.md":"c30c72c85190aaddc06a7c0ed1cf87356eb81f03284b0e9c5f47d4f233d06a00","examples/tutorial_builder/03_05_default_values.rs":"96c8bd0004cf0dc0338851ccf4ae3309ec49e61cc90f41bcf912207eac95ea18","examples/tutorial_builder/04_01_enum.md":"c89cef996c17aa909031233b283349b23427c065b634d43ee82b974f4f28d1c6","examples/tutorial_builder/04_01_enum.rs":"04795a5d702f166e6283e1d4cc7dbaabdbe85e3e941b0cbf7ae1b205de72596b","examples/tutorial_builder/04_01_possible.md":"e16ec1ee5e7a67ab040afd4c87c3ebf84e5ab229491b73f3da337160a0dd14bb","examples/tutorial_builder/04_01_possible.rs":"3d781b26d257061b55a957744c2dbd99c1d2346c151230fb18fe5f576d19585c","examples/tutorial_builder/04_02_parse.md":"d02e8e79e96c2def7a2576a5acc06ba539061a221960ce89eeca1a51e52ef317","examples/tutorial_builder/04_02_parse.rs":"fb9f82791717775b7112bc829e950db29277c5b21367d73e322a87f326678fd4","examples/tutorial_builder/04_02_validate.md":"3f9f29b3629f0d20d8ff149ec721ee67a4baad39c12e2e379d472865c6cf682f","examples/tutorial_builder/04_02_validate.rs":"a5c03e60d4e475d23c38b253bcea29a4673f9494f60359a243f09b84c34e5a2a","examples/tutorial_builder/04_03_relations.md":"cfc6a4ee6d6912566773c9c86b92466725e8eb90c5c765d7cb603f2ffd0d911a","examples/tutorial_builder/04_03_relations.rs":"f367c93ddc7db37ec002a59e12d93ad58bdcf8b4b832c45adb4f6b197db31f0f","examples/tutorial_builder/04_04_custom.md":"11581660afa0679cda9355965cf55e0a282da9184f8d2eec97a415f48878002e","examples/tutorial_builder/04_04_custom.rs":"1da17cebc5a6a2887ba8f39070a47408c7ca6f16256a071f10d10a151b5e1f40","examples/tutorial_builder/05_01_assert.rs":"c42469ab8eeaaaab6dcec816459a934fb1380d208b14055d15e3e877b375bb20","examples/tutorial_derive/01_quick.md":"345bbe0689766fd83929826bffc32c9067c8e97c42fb7390db2620931bd27834","examples/tutorial_derive/01_quick.rs":"e00b44cd37ec6c618c94886438a18b3fc4dd507bdda483d177d7e50657d00c83","examples/tutorial_derive/02_app_settings.md":"7b3ef753653be837d6c7d92c805a8238dd61fce2fc46d58b860c3771dbfec113","examples/tutorial_derive/02_app_settings.rs":"23679bfe015a35a31e48c50a46d031a424fdb3ced7d35a787a35763addd932b9","examples/tutorial_derive/02_apps.md":"166b48034c788304ce9d3f48f91dd7b1b7e18a6d66f689114ba618d79b60cc24","examples/tutorial_derive/02_apps.rs":"9dc8a352dacd46e46ed325f1c64054cda6793b295317baf212691acb683d8eb3","examples/tutorial_derive/02_crate.md":"c15606793151791bddf5763f660a913f799303e8de4c1d28334449d0d184681d","examples/tutorial_derive/02_crate.rs":"8096171c44d7582d23f3f9732c017fb09bfa697bf0fe8c9736f27f27e060e4e1","examples/tutorial_derive/03_01_flag_bool.md":"7ffa235eb4bc61aaa15d63d4301250e2a6635520c02a55aa6294afe6798f39a0","examples/tutorial_derive/03_01_flag_bool.rs":"2a71de11b6362609bd3e59e81ec8c50de0f45d76e5e14507ab243b35e576574d","examples/tutorial_derive/03_01_flag_count.md":"02e6dc26d00cc82109350ca7910e4962007b91fe82fde1c8b86ae49dc4428a76","examples/tutorial_derive/03_01_flag_count.rs":"09715f20ef0c138e9d330b412c0fc3776601dfaaf0399abbc4e853cf0dc68142","examples/tutorial_derive/03_02_option.md":"3ff91da5ee7bb987bf3e4e66ab1148973664ca9b50b9dd97d40b76f623a0f607","examples/tutorial_derive/03_02_option.rs":"4b6a052257bb74818a22d55f9251060ae82b8a79d109b8ef1c1db786e46035e6","examples/tutorial_derive/03_02_option_mult.md":"7a98b02fc3ddf9506134d6bb04d7967b234dac694c2a4e65398e69d53b0e9240","examples/tutorial_derive/03_02_option_mult.rs":"e4683aa309a1d4e301a93fb57338e33f7f64c117390e3013bdbfe5387f7f12ea","examples/tutorial_derive/03_03_positional.md":"52a5c10dccc3774a29e1fe6f7ff87d44eaee67d723404ddcbec24f32b7b0f048","examples/tutorial_derive/03_03_positional.rs":"ed20f87f79e707f0d37428f5b0bb1e3eef92c91bb8b5a240bfb96700fc9333e3","examples/tutorial_derive/03_03_positional_mult.md":"00e3fc665835a4df1190a5ecb7c854b1259ab2324966d69ac40770cde8e2dd21","examples/tutorial_derive/03_03_positional_mult.rs":"a24ab54fbd7569f41b89693ee82c583efd2278af811f7d16326063877700853c","examples/tutorial_derive/03_04_subcommands.md":"361ef1b34f84919831248a8ea141474a89efb1bc46b977ade51f61cc3dfc85a1","examples/tutorial_derive/03_04_subcommands.rs":"dc1676288d344d3e1c84e1cf966efd3710fd8b960d241b2983d9c0c5768d51bc","examples/tutorial_derive/03_04_subcommands_alt.rs":"6f72b64d40a6bfdd0efea7091369ed4bc211c6bece930a661c8b57db5d869611","examples/tutorial_derive/03_05_default_values.md":"b09e17bf0322311801881f53d9b86e5179163d4b05263988a79fd7d2b5c1eb79","examples/tutorial_derive/03_05_default_values.rs":"525fc5b62634c1a264896bc14349d62268870a30148f559635272b7578b15196","examples/tutorial_derive/04_01_enum.md":"fa1deb854c06f6ca921b53e9fd98eaf8ff0a641095a592552537ed74197ef801","examples/tutorial_derive/04_01_enum.rs":"20ae81993a8d8af4cebb2a6c424d2df0bda8cb9d252e7151927462857539d89c","examples/tutorial_derive/04_02_parse.md":"a87492c5d6fb9817345f67389142282394c525fbeade3a2750b84d949cba1c7e","examples/tutorial_derive/04_02_parse.rs":"25fbe9a2621cda28a108aadb22d48d09eec8b5f5e58abc22e4628ec13ddfb2c2","examples/tutorial_derive/04_02_validate.md":"8f83fdf4ccb89550c0df20eef49358cb222ca1a7404c18e3eafed6413c0e1313","examples/tutorial_derive/04_02_validate.rs":"14dceb712b19ee28ea2c5acb53f19eaa507a9c7f85aa1bdf2b88f711ff983d5a","examples/tutorial_derive/04_03_relations.md":"15172a1e5b056ee30b6ab1fbe848c71d8499b06aa74ce30219275989034c76ac","examples/tutorial_derive/04_03_relations.rs":"c6391c46ddc5ca73423f1d290b590eff8a5280ffa6a98b198cda8d256b9d2c3f","examples/tutorial_derive/04_04_custom.md":"f96f4ced9cce7e04e5150c2906cac315bce04a5319cab080917dd976cb815bdc","examples/tutorial_derive/04_04_custom.rs":"fa5082c4e895bb73eb8ed0bcf2c1e0ca84e76240392aa1d618bec5aca36a8166","examples/tutorial_derive/05_01_assert.rs":"04927db39bdecc354f88ecbe6366b565e0f1a01c8de7c78e8db717b1e847596f","examples/typed-derive.md":"6eacd8a18cf5c77f974247e00d2f60f58b6520915c9956cb7f432be2da1757d9","examples/typed-derive.rs":"ce8b7ca425bc0b3cfe6017d119cd7a54617081392cdea4830ecff1b4e5c5c8cb","src/_cookbook/cargo_example.rs":"fe7594a5233e9106a159aa1f5d5f0cde0d844356f630d55c78b8ef322327d4e5","src/_cookbook/cargo_example_derive.rs":"badf3e931ef5d5b7f5addc4912aca057ba83ee6302c43d7eeecd1661673fd407","src/_cookbook/escaped_positional.rs":"2789d8fea126355805b29e76b52c6cea4982565014087a46e0d48e4ddfbed7ab","src/_cookbook/escaped_positional_derive.rs":"802d0b672f4ed48152235d4a26a64c97fa921b361177bdd3a1a33cbac96f665d","src/_cookbook/find.rs":"6152ad5df466adc6de56bddb0f01930b4e4db1997fa972b055217cc7d6748a0a","src/_cookbook/git.rs":"372977252a22fc776e3acaa4629e964114ccd6a49b8ef334d2b6646f12e8b5ee","src/_cookbook/git_derive.rs":"4ab7c0197efda06607ca60c2a85ea743aed3494f5fe9e408d935ea0500a345fc","src/_cookbook/mod.rs":"a8f69fa55207d276471298acc7e22f2f08558dcaa826efbfe4ca8cf66ada2034","src/_cookbook/multicall_busybox.rs":"56176b4fa15e7a39c433706971d4e68aaf26ddc2a5790078b6dbe722ee13efee","src/_cookbook/multicall_hostname.rs":"907f8decf81ea4d4cbf81639ea4cd2f925eda64d4831454a7656369b65522780","src/_cookbook/pacman.rs":"863125b2d3d7931a9e4541c8ab1242b8bfcb421d8b5c604ea681efd805f68da7","src/_cookbook/repl.rs":"1393209b2cc5c203296d57c5a065b764b4318be7855e48baf16de851e250cf90","src/_cookbook/typed_derive.rs":"3d28e78cd0b068b4fcb32a7fea6244de176f2fe75dfcb59e99c33b66a7ae4864","src/_derive/_tutorial/chapter_0.rs":"830267bbb1b54cba4dbdec887877e9a2444dfa525896810c1a982bbb1c3c3056","src/_derive/_tutorial/chapter_1.rs":"4644a756f76bdf37b40296f3e80be0a2c33867c710e9d87e799d16ba1772c10e","src/_derive/_tutorial/chapter_2.rs":"e11c39bdb68e5d5c7791b3c1a30fddd7a24c6ddb18c94f4dc8b67ef2e96113a4","src/_derive/_tutorial/chapter_3.rs":"e2e1e95a8824a73e719651e485e95b72be7ee8730fd6f8744beef77875ceb594","src/_derive/_tutorial/chapter_4.rs":"427ccc31481d0884de70d4bed8ce98d8c602cdb1028cd97196e69ba3fbb0de90","src/_derive/_tutorial/chapter_5.rs":"7d723bfe574f9c38418b17883b7fbaa10f4babcf78d6443f7075a4ad923b5bd5","src/_derive/_tutorial/mod.rs":"9253795ea95033c1271b340fcb05ff0da52cc76b820e8a0c9083e63ca3ef7194","src/_derive/mod.rs":"f75a06f1499f1aff0613902649ad1b738a74cc6ff8765a112e70f8f60696be2c","src/_faq.rs":"52f274439b3608a6fea5b2d0096ee36869603afc505767fb44e7f7823162f5e0","src/_features.rs":"1ad6c43256efcd1fa9b42f837e79f252412d6691332b5317081e31a29a717a76","src/_tutorial/chapter_0.rs":"14ec920659bcda23dd4f392a987a6961bb7c04d2c01655dc2bc9c818f0e32f7f","src/_tutorial/chapter_1.rs":"719d6e4316d3496046077bf1cea91ee2c4444f100f6837d60031e1c624876202","src/_tutorial/chapter_2.rs":"0eb36348ab64c6560d4d0eb562f9f0fb02b94ccd58837efd3e64bb3092aee717","src/_tutorial/chapter_3.rs":"6f336c84909e809283309706239ba56a03ee23d13aa95e9b4eeb4d314ed50f87","src/_tutorial/chapter_4.rs":"beae5be9b371fb9139421ce668a27304c64beb78e5ab6e4b3c624d849f364850","src/_tutorial/chapter_5.rs":"e85e08d4d9daf0f7f23a6b3b1f4fc612d3b910d370836883f262ec11d8634d23","src/_tutorial/mod.rs":"cb73f13e7c8b006185a8323580f0495e1580047c426dd6d515afeb40d69bfaef","src/bin/stdio-fixture.rs":"87d1028fb4a3c8fb887586ea962a7b791f09216d1c944f4906df7a3e3b5e3e02","src/lib.rs":"083ce57674d79a5494bddac3554a4f8e608c8ce4624d10b398a78b1502250663"},"package":"d04704f56c2cde07f43e8e2c154b43f216dc5c92fc98ada720177362f953b956"} \ No newline at end of file
+{"files":{"Cargo.lock":"7024241a3021686909cd3000b0dfea83c0664f1e7c49f0c7cd4cd5191a23316b","Cargo.toml":"a27d6570407a597fd8344c278096969a5d9913e12823b1eeea34acd94d2ada8f","LICENSE-APACHE":"c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08","LICENSE-MIT":"6efb0476a1cc085077ed49357026d8c173bf33017278ef440f222fb9cbcb66e6","README.md":"bcb96a3aedd4da85e24e201a4922e435928b0c0a2f97fd5843d0793a54e6a09f","examples/README.md":"c5f45032ee7acda0c5f98db456cbf4f9b0362d62dc81218fcf03bcdfbd19af05","examples/cargo-example-derive.md":"66d7455f08a038872f42d9d45f9b47ebbdbf9366fafa16b749ece8ba5bdcfcce","examples/cargo-example-derive.rs":"748ba54fb553e797996014e706320b62fad645acca50565a4c6fcd40e8aa1128","examples/cargo-example.md":"60a1d0f253142de5003a9474b28a5a8324a9860fc646af6309d84594d97356bd","examples/cargo-example.rs":"2c2eda50605a5e48c2ba78083e0f545e1df2411b9efaf994c95c9a0357ecbfb1","examples/demo.md":"6c00568794ff99007ab0f08bf7e06fe521cb1f2f0fab30c219f16c6f54bf638d","examples/demo.rs":"08cdd247b47a5202de9b7df7c1f3e7e30da975e56256d930d9db0f6c36741933","examples/derive_ref/augment_args.rs":"274bbe3c91d72609289274a22330067dd0ab42eb9bc3c44c94ed6da149ed56eb","examples/derive_ref/augment_subcommands.rs":"f202fd8a836552c53bb4b33a652b577f254726334f8a72f5fac0526937ab15ef","examples/derive_ref/flatten_hand_args.rs":"d3783fdea6297ffef23939df913ece655670b617f39addfab5147dc217e70fb1","examples/derive_ref/hand_subcommand.rs":"be49b475f86862295eb4d0a00086d5874896f9a66f28cca8fcdf6548943beba7","examples/derive_ref/interop_tests.md":"aaf307e313c3926b14f1265199ab18665bb3dea723729a7e6cbf3b237fa73941","examples/escaped-positional-derive.md":"fb4b4351ceb43ef0c25048e8603dab6fdf4391b84e9b3ad9593602fa89abc572","examples/escaped-positional-derive.rs":"4fe5f9dfbd15d3efcff7ff9b214d00c189ac0592e30b297b154df789e49dbfa3","examples/escaped-positional.md":"b44e23e5706eb815e7875825be815a370f2ba38e41d7998ea762d0ef1fb2ba56","examples/escaped-positional.rs":"e1e784bb90805ef3412f002d9660c979ebbd2d59eb609ceb7f8926c0ad8e7c31","examples/find.md":"acb72e150f9feeb5d7828163f0e36ff5004ae667f6ddbb06d2838a75037177ee","examples/find.rs":"0a9824ae817345e6989ad51b7d514101ee0e842da380e5bad4019ddd2cccedd0","examples/git-derive.md":"d214127af66033e0de4f9da869eb7e6ca073e7c7d7fdf8b6792cba75d39d68e9","examples/git-derive.rs":"4b0a28ef89e2c1578a9f134325495d303663d3cfcacb900ef6efcd38ef5fca44","examples/git.md":"449a75c1e0c7b2dd948b856c81a868f6b8f0c300667b17ec5dd638c6739d2175","examples/git.rs":"8b935b4f516802a9f64654719485fbe8cfc96263e3acd23a74235c3dbdf651ab","examples/multicall-busybox.md":"b8e8a89312e2088b6dd1fac5b5b92266fda9b82c40a650dae2d41b5fcc253594","examples/multicall-busybox.rs":"0be842810003f69de33c9e65258f74a5d1ec742fb0ebc8a49fdebfecc861c408","examples/multicall-hostname.md":"1dedcdcc9927c08cebee11fa01fda7a730f5ddf5227c4902e1eb5ff847a80346","examples/multicall-hostname.rs":"cc58a924dd2e57281f36e30481a1cbc8186952adbf149f9e1e13f9c673614fd9","examples/pacman.md":"a050be1727605a4202faf69db7f991bf974bba51ce0fbd41413de68e6a4af5aa","examples/pacman.rs":"e2183dd3c60f7c3949be6f3d21c85bf8a6b2a14913b675649a770be21c764eda","examples/repl.rs":"972ed0b06962f9daf20b7cee5dd6dc873fc31747e84bce646c0e057678c653f3","examples/tutorial_builder/01_quick.md":"d2a242a6ba832cdb0a2b6f55d428d62e7048f6b7d8d8f4a75f7923da85628ca8","examples/tutorial_builder/01_quick.rs":"7921943f7b697cf9413a87d0ebf32d6db4a93b2674cb66d9ca66530626088d1f","examples/tutorial_builder/02_app_settings.md":"4e7097deb0eb8e926978ef383b0da4bda33966d4e760ac0d258cd4127a054fba","examples/tutorial_builder/02_app_settings.rs":"c050d19fa8c0ecefde73746200fb513da0dd78d904011a1c0a75835fd9c172b3","examples/tutorial_builder/02_apps.md":"3cbc7010e0214d047d98104dadb76ee02ec3c5bba868758e35aebb2fdfd0fa22","examples/tutorial_builder/02_apps.rs":"e654126b44161d5b20ce2e576a6022f027060d003e07ae74c7bbdeddd6fcb880","examples/tutorial_builder/02_crate.md":"995dc62680b9d7c1983c673bf5775c07ae96175db186b5313c0d614308569ec0","examples/tutorial_builder/02_crate.rs":"b0bdc601133bf9e566231dd6be439d0ce82b6911ca53ae4b5c1b5da62eb2acd8","examples/tutorial_builder/03_01_flag_bool.md":"326d8267ce6fcc62e95fdb19f77bdc959067e41af48c7d6e465c0eafe2db741c","examples/tutorial_builder/03_01_flag_bool.rs":"d49b30b527faa6a383b334e572d546fab5c4b298a5549842073ab42a33a05c94","examples/tutorial_builder/03_01_flag_count.md":"c34ff091d239f5861a868bda051322774340be9a63dea32cbfabe8c0cc4dfd94","examples/tutorial_builder/03_01_flag_count.rs":"a003825bc045d4d89265344cfb00082da379150e72fc5d16b33ee93ec9ec0927","examples/tutorial_builder/03_02_option.md":"f436d35a7f2aece1a30f0258f44ae09166fb4faae3b6623beb6a824d2ed234fd","examples/tutorial_builder/03_02_option.rs":"13e58e3f922ef79bb4f3cec63f84dc906bb20ea8bbd33e5ca3cb8cfce847095a","examples/tutorial_builder/03_02_option_mult.md":"c83e0f52f97f38154be30ac34d7d60b9271fd8a0dcab629929ee785d3baa07a2","examples/tutorial_builder/03_02_option_mult.rs":"bd3e522d6ff4a1a9f5849924650acf8ea8afc1f4c3ba633e45926a479f54b7c7","examples/tutorial_builder/03_03_positional.md":"dc2e13cf897e2e2d2b397a1ab739bfd290ec04f437128030eb7f6f609b910be7","examples/tutorial_builder/03_03_positional.rs":"582ffa5b056363a74d2ba966d212fbd6b00f42fe42f0e71ae95009fe75746349","examples/tutorial_builder/03_03_positional_mult.md":"f1d03ca58d9ee75ec9a4cc980006a666e2c529ab6f7deaf6bd88b3fbaf09fc07","examples/tutorial_builder/03_03_positional_mult.rs":"271a9ee04038244fdf378c6a603af9d4cb6a401d82f9e28928c2e7ad971aff10","examples/tutorial_builder/03_04_subcommands.md":"64f5899e1bfb8c5f166642db89ba1de1a7f2dc88b3ea0025b3ce5543f12a605f","examples/tutorial_builder/03_04_subcommands.rs":"a309a332004edbed6dc14b64b1ba6cc0cd42871f3c5b8da7daab772764839c68","examples/tutorial_builder/03_05_default_values.md":"c30c72c85190aaddc06a7c0ed1cf87356eb81f03284b0e9c5f47d4f233d06a00","examples/tutorial_builder/03_05_default_values.rs":"96c8bd0004cf0dc0338851ccf4ae3309ec49e61cc90f41bcf912207eac95ea18","examples/tutorial_builder/04_01_enum.md":"c89cef996c17aa909031233b283349b23427c065b634d43ee82b974f4f28d1c6","examples/tutorial_builder/04_01_enum.rs":"04795a5d702f166e6283e1d4cc7dbaabdbe85e3e941b0cbf7ae1b205de72596b","examples/tutorial_builder/04_01_possible.md":"e16ec1ee5e7a67ab040afd4c87c3ebf84e5ab229491b73f3da337160a0dd14bb","examples/tutorial_builder/04_01_possible.rs":"3d781b26d257061b55a957744c2dbd99c1d2346c151230fb18fe5f576d19585c","examples/tutorial_builder/04_02_parse.md":"d02e8e79e96c2def7a2576a5acc06ba539061a221960ce89eeca1a51e52ef317","examples/tutorial_builder/04_02_parse.rs":"fb9f82791717775b7112bc829e950db29277c5b21367d73e322a87f326678fd4","examples/tutorial_builder/04_02_validate.md":"3f9f29b3629f0d20d8ff149ec721ee67a4baad39c12e2e379d472865c6cf682f","examples/tutorial_builder/04_02_validate.rs":"a5c03e60d4e475d23c38b253bcea29a4673f9494f60359a243f09b84c34e5a2a","examples/tutorial_builder/04_03_relations.md":"cfc6a4ee6d6912566773c9c86b92466725e8eb90c5c765d7cb603f2ffd0d911a","examples/tutorial_builder/04_03_relations.rs":"f367c93ddc7db37ec002a59e12d93ad58bdcf8b4b832c45adb4f6b197db31f0f","examples/tutorial_builder/04_04_custom.md":"11581660afa0679cda9355965cf55e0a282da9184f8d2eec97a415f48878002e","examples/tutorial_builder/04_04_custom.rs":"1da17cebc5a6a2887ba8f39070a47408c7ca6f16256a071f10d10a151b5e1f40","examples/tutorial_builder/05_01_assert.rs":"c42469ab8eeaaaab6dcec816459a934fb1380d208b14055d15e3e877b375bb20","examples/tutorial_derive/01_quick.md":"345bbe0689766fd83929826bffc32c9067c8e97c42fb7390db2620931bd27834","examples/tutorial_derive/01_quick.rs":"e00b44cd37ec6c618c94886438a18b3fc4dd507bdda483d177d7e50657d00c83","examples/tutorial_derive/02_app_settings.md":"7b3ef753653be837d6c7d92c805a8238dd61fce2fc46d58b860c3771dbfec113","examples/tutorial_derive/02_app_settings.rs":"23679bfe015a35a31e48c50a46d031a424fdb3ced7d35a787a35763addd932b9","examples/tutorial_derive/02_apps.md":"166b48034c788304ce9d3f48f91dd7b1b7e18a6d66f689114ba618d79b60cc24","examples/tutorial_derive/02_apps.rs":"9dc8a352dacd46e46ed325f1c64054cda6793b295317baf212691acb683d8eb3","examples/tutorial_derive/02_crate.md":"c15606793151791bddf5763f660a913f799303e8de4c1d28334449d0d184681d","examples/tutorial_derive/02_crate.rs":"8096171c44d7582d23f3f9732c017fb09bfa697bf0fe8c9736f27f27e060e4e1","examples/tutorial_derive/03_01_flag_bool.md":"7ffa235eb4bc61aaa15d63d4301250e2a6635520c02a55aa6294afe6798f39a0","examples/tutorial_derive/03_01_flag_bool.rs":"2a71de11b6362609bd3e59e81ec8c50de0f45d76e5e14507ab243b35e576574d","examples/tutorial_derive/03_01_flag_count.md":"02e6dc26d00cc82109350ca7910e4962007b91fe82fde1c8b86ae49dc4428a76","examples/tutorial_derive/03_01_flag_count.rs":"09715f20ef0c138e9d330b412c0fc3776601dfaaf0399abbc4e853cf0dc68142","examples/tutorial_derive/03_02_option.md":"3ff91da5ee7bb987bf3e4e66ab1148973664ca9b50b9dd97d40b76f623a0f607","examples/tutorial_derive/03_02_option.rs":"4b6a052257bb74818a22d55f9251060ae82b8a79d109b8ef1c1db786e46035e6","examples/tutorial_derive/03_02_option_mult.md":"7a98b02fc3ddf9506134d6bb04d7967b234dac694c2a4e65398e69d53b0e9240","examples/tutorial_derive/03_02_option_mult.rs":"e4683aa309a1d4e301a93fb57338e33f7f64c117390e3013bdbfe5387f7f12ea","examples/tutorial_derive/03_03_positional.md":"52a5c10dccc3774a29e1fe6f7ff87d44eaee67d723404ddcbec24f32b7b0f048","examples/tutorial_derive/03_03_positional.rs":"ed20f87f79e707f0d37428f5b0bb1e3eef92c91bb8b5a240bfb96700fc9333e3","examples/tutorial_derive/03_03_positional_mult.md":"00e3fc665835a4df1190a5ecb7c854b1259ab2324966d69ac40770cde8e2dd21","examples/tutorial_derive/03_03_positional_mult.rs":"a24ab54fbd7569f41b89693ee82c583efd2278af811f7d16326063877700853c","examples/tutorial_derive/03_04_subcommands.md":"361ef1b34f84919831248a8ea141474a89efb1bc46b977ade51f61cc3dfc85a1","examples/tutorial_derive/03_04_subcommands.rs":"dc1676288d344d3e1c84e1cf966efd3710fd8b960d241b2983d9c0c5768d51bc","examples/tutorial_derive/03_04_subcommands_alt.rs":"6f72b64d40a6bfdd0efea7091369ed4bc211c6bece930a661c8b57db5d869611","examples/tutorial_derive/03_05_default_values.md":"b09e17bf0322311801881f53d9b86e5179163d4b05263988a79fd7d2b5c1eb79","examples/tutorial_derive/03_05_default_values.rs":"525fc5b62634c1a264896bc14349d62268870a30148f559635272b7578b15196","examples/tutorial_derive/04_01_enum.md":"fa1deb854c06f6ca921b53e9fd98eaf8ff0a641095a592552537ed74197ef801","examples/tutorial_derive/04_01_enum.rs":"20ae81993a8d8af4cebb2a6c424d2df0bda8cb9d252e7151927462857539d89c","examples/tutorial_derive/04_02_parse.md":"a87492c5d6fb9817345f67389142282394c525fbeade3a2750b84d949cba1c7e","examples/tutorial_derive/04_02_parse.rs":"25fbe9a2621cda28a108aadb22d48d09eec8b5f5e58abc22e4628ec13ddfb2c2","examples/tutorial_derive/04_02_validate.md":"8f83fdf4ccb89550c0df20eef49358cb222ca1a7404c18e3eafed6413c0e1313","examples/tutorial_derive/04_02_validate.rs":"14dceb712b19ee28ea2c5acb53f19eaa507a9c7f85aa1bdf2b88f711ff983d5a","examples/tutorial_derive/04_03_relations.md":"15172a1e5b056ee30b6ab1fbe848c71d8499b06aa74ce30219275989034c76ac","examples/tutorial_derive/04_03_relations.rs":"c6391c46ddc5ca73423f1d290b590eff8a5280ffa6a98b198cda8d256b9d2c3f","examples/tutorial_derive/04_04_custom.md":"f96f4ced9cce7e04e5150c2906cac315bce04a5319cab080917dd976cb815bdc","examples/tutorial_derive/04_04_custom.rs":"fa5082c4e895bb73eb8ed0bcf2c1e0ca84e76240392aa1d618bec5aca36a8166","examples/tutorial_derive/05_01_assert.rs":"04927db39bdecc354f88ecbe6366b565e0f1a01c8de7c78e8db717b1e847596f","examples/typed-derive.md":"6eacd8a18cf5c77f974247e00d2f60f58b6520915c9956cb7f432be2da1757d9","examples/typed-derive.rs":"ce8b7ca425bc0b3cfe6017d119cd7a54617081392cdea4830ecff1b4e5c5c8cb","src/_cookbook/cargo_example.rs":"fe7594a5233e9106a159aa1f5d5f0cde0d844356f630d55c78b8ef322327d4e5","src/_cookbook/cargo_example_derive.rs":"badf3e931ef5d5b7f5addc4912aca057ba83ee6302c43d7eeecd1661673fd407","src/_cookbook/escaped_positional.rs":"2789d8fea126355805b29e76b52c6cea4982565014087a46e0d48e4ddfbed7ab","src/_cookbook/escaped_positional_derive.rs":"802d0b672f4ed48152235d4a26a64c97fa921b361177bdd3a1a33cbac96f665d","src/_cookbook/find.rs":"6152ad5df466adc6de56bddb0f01930b4e4db1997fa972b055217cc7d6748a0a","src/_cookbook/git.rs":"372977252a22fc776e3acaa4629e964114ccd6a49b8ef334d2b6646f12e8b5ee","src/_cookbook/git_derive.rs":"4ab7c0197efda06607ca60c2a85ea743aed3494f5fe9e408d935ea0500a345fc","src/_cookbook/mod.rs":"a8f69fa55207d276471298acc7e22f2f08558dcaa826efbfe4ca8cf66ada2034","src/_cookbook/multicall_busybox.rs":"56176b4fa15e7a39c433706971d4e68aaf26ddc2a5790078b6dbe722ee13efee","src/_cookbook/multicall_hostname.rs":"907f8decf81ea4d4cbf81639ea4cd2f925eda64d4831454a7656369b65522780","src/_cookbook/pacman.rs":"863125b2d3d7931a9e4541c8ab1242b8bfcb421d8b5c604ea681efd805f68da7","src/_cookbook/repl.rs":"1393209b2cc5c203296d57c5a065b764b4318be7855e48baf16de851e250cf90","src/_cookbook/typed_derive.rs":"3d28e78cd0b068b4fcb32a7fea6244de176f2fe75dfcb59e99c33b66a7ae4864","src/_derive/_tutorial/chapter_0.rs":"830267bbb1b54cba4dbdec887877e9a2444dfa525896810c1a982bbb1c3c3056","src/_derive/_tutorial/chapter_1.rs":"4644a756f76bdf37b40296f3e80be0a2c33867c710e9d87e799d16ba1772c10e","src/_derive/_tutorial/chapter_2.rs":"e11c39bdb68e5d5c7791b3c1a30fddd7a24c6ddb18c94f4dc8b67ef2e96113a4","src/_derive/_tutorial/chapter_3.rs":"e2e1e95a8824a73e719651e485e95b72be7ee8730fd6f8744beef77875ceb594","src/_derive/_tutorial/chapter_4.rs":"427ccc31481d0884de70d4bed8ce98d8c602cdb1028cd97196e69ba3fbb0de90","src/_derive/_tutorial/chapter_5.rs":"7d723bfe574f9c38418b17883b7fbaa10f4babcf78d6443f7075a4ad923b5bd5","src/_derive/_tutorial/mod.rs":"9253795ea95033c1271b340fcb05ff0da52cc76b820e8a0c9083e63ca3ef7194","src/_derive/mod.rs":"f75a06f1499f1aff0613902649ad1b738a74cc6ff8765a112e70f8f60696be2c","src/_faq.rs":"52f274439b3608a6fea5b2d0096ee36869603afc505767fb44e7f7823162f5e0","src/_features.rs":"1ad6c43256efcd1fa9b42f837e79f252412d6691332b5317081e31a29a717a76","src/_tutorial/chapter_0.rs":"14ec920659bcda23dd4f392a987a6961bb7c04d2c01655dc2bc9c818f0e32f7f","src/_tutorial/chapter_1.rs":"719d6e4316d3496046077bf1cea91ee2c4444f100f6837d60031e1c624876202","src/_tutorial/chapter_2.rs":"0eb36348ab64c6560d4d0eb562f9f0fb02b94ccd58837efd3e64bb3092aee717","src/_tutorial/chapter_3.rs":"6f336c84909e809283309706239ba56a03ee23d13aa95e9b4eeb4d314ed50f87","src/_tutorial/chapter_4.rs":"beae5be9b371fb9139421ce668a27304c64beb78e5ab6e4b3c624d849f364850","src/_tutorial/chapter_5.rs":"e85e08d4d9daf0f7f23a6b3b1f4fc612d3b910d370836883f262ec11d8634d23","src/_tutorial/mod.rs":"cb73f13e7c8b006185a8323580f0495e1580047c426dd6d515afeb40d69bfaef","src/bin/stdio-fixture.rs":"87d1028fb4a3c8fb887586ea962a7b791f09216d1c944f4906df7a3e3b5e3e02","src/lib.rs":"083ce57674d79a5494bddac3554a4f8e608c8ce4624d10b398a78b1502250663"},"package":"ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b"} \ No newline at end of file
diff --git a/vendor/clap/Cargo.lock b/vendor/clap/Cargo.lock
index 98f743cec..15690211c 100644
--- a/vendor/clap/Cargo.lock
+++ b/vendor/clap/Cargo.lock
@@ -118,7 +118,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "clap"
-version = "4.4.6"
+version = "4.4.7"
dependencies = [
"clap_builder",
"clap_derive",
@@ -126,17 +126,15 @@ dependencies = [
"rustversion",
"shlex",
"snapbox",
- "static_assertions",
"trybuild",
"trycmd",
- "unic-emoji-char",
]
[[package]]
name = "clap_builder"
-version = "4.4.6"
+version = "4.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e231faeaca65ebd1ea3c737966bf858971cd38c3849107aa3ea7de90a804e45"
+checksum = "c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663"
dependencies = [
"anstream",
"anstyle",
@@ -150,9 +148,9 @@ dependencies = [
[[package]]
name = "clap_derive"
-version = "4.4.2"
+version = "4.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873"
+checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442"
dependencies = [
"heck",
"proc-macro2",
@@ -162,9 +160,9 @@ dependencies = [
[[package]]
name = "clap_lex"
-version = "0.5.0"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b"
+checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1"
[[package]]
name = "colorchoice"
@@ -262,9 +260,9 @@ checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4"
[[package]]
name = "glob"
-version = "0.3.0"
+version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
+checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
[[package]]
name = "hashbrown"
@@ -515,18 +513,18 @@ dependencies = [
[[package]]
name = "serde_spanned"
-version = "0.6.2"
+version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93107647184f6027e3b7dcb2e11034cf95ffa1e3a682c67951963ac69c1c007d"
+checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186"
dependencies = [
"serde",
]
[[package]]
name = "shlex"
-version = "1.1.0"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
+checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380"
[[package]]
name = "similar"
@@ -562,12 +560,6 @@ dependencies = [
]
[[package]]
-name = "static_assertions"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
-
-[[package]]
name = "strsim"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -605,9 +597,9 @@ dependencies = [
[[package]]
name = "toml_datetime"
-version = "0.6.2"
+version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a76a9312f5ba4c2dec6b9161fdf25d87ad8a09256ccea5a556fef03c706a10f"
+checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
dependencies = [
"serde",
]
@@ -627,9 +619,9 @@ dependencies = [
[[package]]
name = "trybuild"
-version = "1.0.83"
+version = "1.0.85"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6df60d81823ed9c520ee897489573da4b1d79ffbe006b8134f46de1a1aa03555"
+checksum = "196a58260a906cedb9bf6d8034b6379d0c11f552416960452f267402ceeddff1"
dependencies = [
"basic-toml",
"glob",
@@ -657,47 +649,6 @@ dependencies = [
]
[[package]]
-name = "unic-char-property"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221"
-dependencies = [
- "unic-char-range",
-]
-
-[[package]]
-name = "unic-char-range"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc"
-
-[[package]]
-name = "unic-common"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc"
-
-[[package]]
-name = "unic-emoji-char"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b07221e68897210270a38bde4babb655869637af0f69407f96053a34f76494d"
-dependencies = [
- "unic-char-property",
- "unic-char-range",
- "unic-ucd-version",
-]
-
-[[package]]
-name = "unic-ucd-version"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4"
-dependencies = [
- "unic-common",
-]
-
-[[package]]
name = "unicase"
version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/vendor/clap/Cargo.toml b/vendor/clap/Cargo.toml
index 980d42a79..0e670f5bf 100644
--- a/vendor/clap/Cargo.toml
+++ b/vendor/clap/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.70.0"
name = "clap"
-version = "4.4.6"
+version = "4.4.7"
include = [
"build.rs",
"src/**/*",
@@ -367,11 +367,11 @@ path = "examples/derive_ref/flatten_hand_args.rs"
required-features = ["derive"]
[dependencies.clap_builder]
-version = "=4.4.6"
+version = "=4.4.7"
default-features = false
[dependencies.clap_derive]
-version = "=4.4.2"
+version = "=4.4.7"
optional = true
[dev-dependencies.humantime]
@@ -381,16 +381,13 @@ version = "2.1.0"
version = "1.0.14"
[dev-dependencies.shlex]
-version = "1.1.0"
+version = "1.2.0"
[dev-dependencies.snapbox]
version = "0.4.13"
-[dev-dependencies.static_assertions]
-version = "1.1.0"
-
[dev-dependencies.trybuild]
-version = "1.0.83"
+version = "1.0.85"
[dev-dependencies.trycmd]
version = "0.14.18"
@@ -401,9 +398,6 @@ features = [
]
default-features = false
-[dev-dependencies.unic-emoji-char]
-version = "0.9.0"
-
[features]
cargo = ["clap_builder/cargo"]
color = ["clap_builder/color"]
diff --git a/vendor/clap_builder/.cargo-checksum.json b/vendor/clap_builder/.cargo-checksum.json
index f107a15d3..c19dd2b4b 100644
--- a/vendor/clap_builder/.cargo-checksum.json
+++ b/vendor/clap_builder/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"9fbd8b138d9dc414f6637500bb6cd733ff509394498499aef6aaa89411a13c27","LICENSE-APACHE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","LICENSE-MIT":"0d687e1f07b58fe68bda74668ff6326125e5e5efa184cce755cd84ac535b7058","README.md":"60b99346464866941b21928d3c4699fd6a3ca85a541da7577f60bc691b7afef8","src/builder/action.rs":"9b920d2d405825ce89a5ba3b59edc66e3b849841819e9742b19010a81584fee7","src/builder/app_settings.rs":"286f925717fa54fe9d2ed6f2f338293b7a5981fee0fe687fe706118cebf1f6f4","src/builder/arg.rs":"032d895f056c29e5bef013b5eedcce396e4770a39a7f628fb29480e2a97e9220","src/builder/arg_group.rs":"82a6e9afeea1792a4ca99baa3b0d3235eb012b037cc19333ed9b03a13bb66f30","src/builder/arg_predicate.rs":"4fe55fdd0441acb1577f28188c86f920df4863f451a7dcad8e050dbb6e1e7516","src/builder/arg_settings.rs":"e8ad1bd6d36da43d7329b6cd86833d4cc63734e64119c6b950a45ded5e3aec9c","src/builder/command.rs":"c66c2e2b3ce9e6dfcf46ce12853d96fde671c4bf3275478d97c65adfd5909e4d","src/builder/debug_asserts.rs":"8c51bed316deceb349f900c83233866388eceb8d6ad6641e60bf2cb17738a808","src/builder/ext.rs":"736cfb56f765cbe23301ebcad83fbe3edfc778954edc4747ccf7c23104d85638","src/builder/mod.rs":"478946dd41eb4adcfd7a3e6159ad1474993fa89e9f1ec62aaf05c213d33be9d7","src/builder/os_str.rs":"2b635e4fa8ecc42ad1d964a8b2f0fe17aa57d976c163d3bf77f213de254d844f","src/builder/possible_value.rs":"2ed44c5a353c0abab337ac0f00995066f96ff27c33098613642725991163edff","src/builder/range.rs":"63583801f2f9daa43906bda84eb3a2ba9d6b5157745180acbc0a3284babe2d94","src/builder/resettable.rs":"c4cd481051ec361529817ebae73b4dd307b0a4a3b88a3ddcecb8dd45b05db431","src/builder/str.rs":"e51a1e5c18364c9132d1c7df113e6a462265e40f767087fa9664bfcd5f5d91b4","src/builder/styled_str.rs":"9a605e1fe93f602809645447b4560ad767292eac9a17614c8cdca697d813425e","src/builder/styling.rs":"3aac44f140d5247d27f661e328a05eae0bd8c6685c8bfc88ec703d3a21a47f50","src/builder/tests.rs":"565f5efd38c6596e55fa1c077a11cc07be94ca201527963d27fd42ddce6dbbe8","src/builder/value_hint.rs":"66588792cddf7e3bb2912da4e0a53584169c266f9e4e6dcb990295998d158f93","src/builder/value_parser.rs":"915fb8d50910711d5b704fab4c8fbcb3f1e0e2e66fef722e5806513618864477","src/derive.rs":"7e9e33ecb4c834ff1b6bcffd24358b3e2cfc946a5dc69f5ca8088f7ac4f145ce","src/error/context.rs":"156d2611a349ce826378476c9dcb3242a01ad834a095baad096a10cc2f73e1ed","src/error/format.rs":"33903b182f9b8fde0a2ad2f5f96582ed3812d37c51a03f2c775553db8351e5e8","src/error/kind.rs":"29603c64b8cea7886498afc3f7e7c489505c9820c5159e99d153d57fdafe95ec","src/error/mod.rs":"2ebe49387552c56e1b632fe647e45cbb71d590366785972758aecd04f88f9b90","src/lib.rs":"8b08b2d74ffc9c383f861ec94e41d02ea7c035081f44acd37079baeb1888e5a8","src/macros.rs":"f2c7145b2b10d36a7c2e0cc02502115be4162d2256e12328222121f4eefeb2b5","src/mkeymap.rs":"a644643a54ab1a6e353af4c746efc2c2e9e161e64fe3f3635c644748e02690d8","src/output/fmt.rs":"17d7c95bae851fd0ffb7d3ea4c3c1830963c8b863aa8e4e296e3d824a1da18dc","src/output/help.rs":"b3bb6cfffe9c1113d377f1f4951a22b6ad2ba2813dcc55a146899c808cd393d3","src/output/help_template.rs":"19e725674a92ef2a529e7583c0c139d04a420617be5e91e65341a2063b3d8a68","src/output/mod.rs":"74ea52be8981c30d10fda3f6c80cf51aafb15700de99aa73bc94700bca25ae11","src/output/textwrap/core.rs":"0d45b1ebe8bba3e54e8bcbfec015be626d55803a0a46aef753eb3a4be3cabab4","src/output/textwrap/mod.rs":"1bc5056701b6651a98b0eea482db5235ba3342a24a02d776ad364fec6919cecc","src/output/textwrap/word_separators.rs":"ae3af310295e707ae1aa95633f6bb078cedf8f65662a86caa9d25420f459acc1","src/output/textwrap/wrap_algorithms.rs":"a6eb1491ef5e64dbd2ef55d367e46747fcf2fb22fdb66a2b7c3cb9ba3a02d86a","src/output/usage.rs":"45dcf5520f0625da75f1ceb1d749aaeb13db882f64025ea89d039a2acfd72898","src/parser/arg_matcher.rs":"b6f17cfc48d18d192d6f4f45b9daf342b93d847ce7d52a3f68266c15566c3849","src/parser/error.rs":"7def6f001ad6dfd262d71149c6e4f3845a6f7bf246a92edc6d872e3ca4e2ae01","src/parser/features/mod.rs":"6ed075e97af56bff22f22ed1ee83ff6479360e05f9d3661a3145f822c242b694","src/parser/features/suggestions.rs":"832b62f927f9f4ffb95abdcef09c8b675045aab0b5471bae484e5d07f18f7621","src/parser/matches/arg_matches.rs":"902f512272d9c4a0c8be7ff3e5122b088ee6fde1694a7b4cfba88f941b361a3b","src/parser/matches/matched_arg.rs":"8533197ac8f1a1a218844c34923beabd0ed0d28447b03bd9d4d199cc7ff251d0","src/parser/matches/mod.rs":"5578335f4b9103cc4060546621e5664d5e92c43848ec48c2d95a4b045373de1f","src/parser/matches/value_source.rs":"ecb9e09db06579489daa9cbcf351381041dff7c5e2956fb96052b70b9360955b","src/parser/mod.rs":"34d689dac5d878790e5c29872f59ccec000ceab737ddaa642054cb464e26edb8","src/parser/parser.rs":"2c7951e94952ce86005115cd3b3d68bf36b9001cbbcbef360843294bb016cd2b","src/parser/validator.rs":"107c4eaa1615c0414553862f0250e9bf4241cccb7d7ec6df4ac8784f5f850d11","src/util/any_value.rs":"f3666cf322e87daf83f1474d5449e9b526b80b835f032e4090c5e1abddf6f044","src/util/color.rs":"04cc72927ad1e7f5490e1db39b7f79b16ed613b7b81cfe0285b38ba9d0afb875","src/util/flat_map.rs":"89e6471d099485f943ed7331626db6fddd75598f2c98623a13f262ff1a08b509","src/util/flat_set.rs":"334f3b8a72a897fbabd68f2330a8ecc18af74492036822b2e3764d461ddf31b4","src/util/graph.rs":"f35396b6e2a427377dcbbca69b1b98737d89684a3834cfda98cbf8cc70ff9c2f","src/util/id.rs":"5f025a05e4752ef7d610d6490f4a83ab489b1e5038c1a15067c0be51caafde87","src/util/mod.rs":"010f54d58906f4ae0106f2f1a891ea80a55fd52c64b8946a6b59e20f9c502418","src/util/str_to_bool.rs":"1ce90b4939a884eeefc73392722bdfcf906e3070c4398e1557c586c10c684cd0"},"package":"0e231faeaca65ebd1ea3c737966bf858971cd38c3849107aa3ea7de90a804e45"} \ No newline at end of file
+{"files":{"Cargo.toml":"1e0275e303ef6639e44aafe136acac3c656531119a895688e9e5e23d3e9af1a1","LICENSE-APACHE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","LICENSE-MIT":"0d687e1f07b58fe68bda74668ff6326125e5e5efa184cce755cd84ac535b7058","README.md":"60b99346464866941b21928d3c4699fd6a3ca85a541da7577f60bc691b7afef8","src/builder/action.rs":"9b920d2d405825ce89a5ba3b59edc66e3b849841819e9742b19010a81584fee7","src/builder/app_settings.rs":"286f925717fa54fe9d2ed6f2f338293b7a5981fee0fe687fe706118cebf1f6f4","src/builder/arg.rs":"6d70b08ed37bfc389a4caa4a3b483cae6ed6742d6adb60ab1663cf429805ebd6","src/builder/arg_group.rs":"82a6e9afeea1792a4ca99baa3b0d3235eb012b037cc19333ed9b03a13bb66f30","src/builder/arg_predicate.rs":"4fe55fdd0441acb1577f28188c86f920df4863f451a7dcad8e050dbb6e1e7516","src/builder/arg_settings.rs":"e8ad1bd6d36da43d7329b6cd86833d4cc63734e64119c6b950a45ded5e3aec9c","src/builder/command.rs":"ec064237a6f7504eac26e0394117ea0422465e6817e718a3dc7e380403d0c304","src/builder/debug_asserts.rs":"ee0bc672dac85590102ae3189f61af2c1b202ceaa7835e3df45d89dca274cdae","src/builder/ext.rs":"736cfb56f765cbe23301ebcad83fbe3edfc778954edc4747ccf7c23104d85638","src/builder/mod.rs":"478946dd41eb4adcfd7a3e6159ad1474993fa89e9f1ec62aaf05c213d33be9d7","src/builder/os_str.rs":"8d9efc619a697e314c42bf8c320f26e7d5ca33996ea577d3f74325a8dbf43df5","src/builder/possible_value.rs":"2ed44c5a353c0abab337ac0f00995066f96ff27c33098613642725991163edff","src/builder/range.rs":"63583801f2f9daa43906bda84eb3a2ba9d6b5157745180acbc0a3284babe2d94","src/builder/resettable.rs":"c4cd481051ec361529817ebae73b4dd307b0a4a3b88a3ddcecb8dd45b05db431","src/builder/str.rs":"270f21e462fd7ebe54a3c0f3010d6b1a7f672e4135cb77f51b6188c7f8d46ca7","src/builder/styled_str.rs":"9a605e1fe93f602809645447b4560ad767292eac9a17614c8cdca697d813425e","src/builder/styling.rs":"3aac44f140d5247d27f661e328a05eae0bd8c6685c8bfc88ec703d3a21a47f50","src/builder/tests.rs":"565f5efd38c6596e55fa1c077a11cc07be94ca201527963d27fd42ddce6dbbe8","src/builder/value_hint.rs":"66588792cddf7e3bb2912da4e0a53584169c266f9e4e6dcb990295998d158f93","src/builder/value_parser.rs":"915fb8d50910711d5b704fab4c8fbcb3f1e0e2e66fef722e5806513618864477","src/derive.rs":"7e9e33ecb4c834ff1b6bcffd24358b3e2cfc946a5dc69f5ca8088f7ac4f145ce","src/error/context.rs":"156d2611a349ce826378476c9dcb3242a01ad834a095baad096a10cc2f73e1ed","src/error/format.rs":"33903b182f9b8fde0a2ad2f5f96582ed3812d37c51a03f2c775553db8351e5e8","src/error/kind.rs":"29603c64b8cea7886498afc3f7e7c489505c9820c5159e99d153d57fdafe95ec","src/error/mod.rs":"2ebe49387552c56e1b632fe647e45cbb71d590366785972758aecd04f88f9b90","src/lib.rs":"8b08b2d74ffc9c383f861ec94e41d02ea7c035081f44acd37079baeb1888e5a8","src/macros.rs":"f2c7145b2b10d36a7c2e0cc02502115be4162d2256e12328222121f4eefeb2b5","src/mkeymap.rs":"a644643a54ab1a6e353af4c746efc2c2e9e161e64fe3f3635c644748e02690d8","src/output/fmt.rs":"17d7c95bae851fd0ffb7d3ea4c3c1830963c8b863aa8e4e296e3d824a1da18dc","src/output/help.rs":"b3bb6cfffe9c1113d377f1f4951a22b6ad2ba2813dcc55a146899c808cd393d3","src/output/help_template.rs":"19e725674a92ef2a529e7583c0c139d04a420617be5e91e65341a2063b3d8a68","src/output/mod.rs":"74ea52be8981c30d10fda3f6c80cf51aafb15700de99aa73bc94700bca25ae11","src/output/textwrap/core.rs":"0d45b1ebe8bba3e54e8bcbfec015be626d55803a0a46aef753eb3a4be3cabab4","src/output/textwrap/mod.rs":"1bc5056701b6651a98b0eea482db5235ba3342a24a02d776ad364fec6919cecc","src/output/textwrap/word_separators.rs":"ae3af310295e707ae1aa95633f6bb078cedf8f65662a86caa9d25420f459acc1","src/output/textwrap/wrap_algorithms.rs":"a6eb1491ef5e64dbd2ef55d367e46747fcf2fb22fdb66a2b7c3cb9ba3a02d86a","src/output/usage.rs":"45dcf5520f0625da75f1ceb1d749aaeb13db882f64025ea89d039a2acfd72898","src/parser/arg_matcher.rs":"b6f17cfc48d18d192d6f4f45b9daf342b93d847ce7d52a3f68266c15566c3849","src/parser/error.rs":"7def6f001ad6dfd262d71149c6e4f3845a6f7bf246a92edc6d872e3ca4e2ae01","src/parser/features/mod.rs":"6ed075e97af56bff22f22ed1ee83ff6479360e05f9d3661a3145f822c242b694","src/parser/features/suggestions.rs":"832b62f927f9f4ffb95abdcef09c8b675045aab0b5471bae484e5d07f18f7621","src/parser/matches/arg_matches.rs":"902f512272d9c4a0c8be7ff3e5122b088ee6fde1694a7b4cfba88f941b361a3b","src/parser/matches/matched_arg.rs":"8533197ac8f1a1a218844c34923beabd0ed0d28447b03bd9d4d199cc7ff251d0","src/parser/matches/mod.rs":"5578335f4b9103cc4060546621e5664d5e92c43848ec48c2d95a4b045373de1f","src/parser/matches/value_source.rs":"ecb9e09db06579489daa9cbcf351381041dff7c5e2956fb96052b70b9360955b","src/parser/mod.rs":"34d689dac5d878790e5c29872f59ccec000ceab737ddaa642054cb464e26edb8","src/parser/parser.rs":"f177bf3182addb6d271f8a676fb145337a1e7b1eeec7adcc5b61548d11947eb6","src/parser/validator.rs":"107c4eaa1615c0414553862f0250e9bf4241cccb7d7ec6df4ac8784f5f850d11","src/util/any_value.rs":"ac88e78c520ae84edb160c121d1277ce64db3aea7199fbddfe1024d6c312f722","src/util/color.rs":"04cc72927ad1e7f5490e1db39b7f79b16ed613b7b81cfe0285b38ba9d0afb875","src/util/flat_map.rs":"89e6471d099485f943ed7331626db6fddd75598f2c98623a13f262ff1a08b509","src/util/flat_set.rs":"334f3b8a72a897fbabd68f2330a8ecc18af74492036822b2e3764d461ddf31b4","src/util/graph.rs":"f35396b6e2a427377dcbbca69b1b98737d89684a3834cfda98cbf8cc70ff9c2f","src/util/id.rs":"5f025a05e4752ef7d610d6490f4a83ab489b1e5038c1a15067c0be51caafde87","src/util/mod.rs":"010f54d58906f4ae0106f2f1a891ea80a55fd52c64b8946a6b59e20f9c502418","src/util/str_to_bool.rs":"1ce90b4939a884eeefc73392722bdfcf906e3070c4398e1557c586c10c684cd0"},"package":"c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663"} \ No newline at end of file
diff --git a/vendor/clap_builder/Cargo.toml b/vendor/clap_builder/Cargo.toml
index e02965142..a0d1232de 100644
--- a/vendor/clap_builder/Cargo.toml
+++ b/vendor/clap_builder/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.70.0"
name = "clap_builder"
-version = "4.4.6"
+version = "4.4.7"
include = [
"build.rs",
"src/**/*",
@@ -70,7 +70,7 @@ version = "0.3.67"
optional = true
[dependencies.clap_lex]
-version = "0.5.0"
+version = "0.6.0"
[dependencies.strsim]
version = "0.10.0"
@@ -89,35 +89,11 @@ version = "0.1.9"
optional = true
[dev-dependencies.color-print]
-version = "0.3.4"
-
-[dev-dependencies.humantime]
-version = "2.1.0"
-
-[dev-dependencies.rustversion]
-version = "1.0.14"
-
-[dev-dependencies.shlex]
-version = "1.1.0"
-
-[dev-dependencies.snapbox]
-version = "0.4.13"
+version = "0.3.5"
[dev-dependencies.static_assertions]
version = "1.1.0"
-[dev-dependencies.trybuild]
-version = "1.0.83"
-
-[dev-dependencies.trycmd]
-version = "0.14.18"
-features = [
- "color-auto",
- "diff",
- "examples",
-]
-default-features = false
-
[dev-dependencies.unic-emoji-char]
version = "0.9.0"
diff --git a/vendor/clap_builder/src/builder/arg.rs b/vendor/clap_builder/src/builder/arg.rs
index 5634078c5..8e247c176 100644
--- a/vendor/clap_builder/src/builder/arg.rs
+++ b/vendor/clap_builder/src/builder/arg.rs
@@ -1617,7 +1617,7 @@ impl Arg {
/// ```
///
/// Will result in everything after `--` to be considered one raw argument. This behavior
- /// may not be exactly what you are expecting and using [`crate::Command::trailing_var_arg`]
+ /// may not be exactly what you are expecting and using [`Arg::trailing_var_arg`]
/// may be more appropriate.
///
/// **NOTE:** Implicitly sets [`Arg::action(ArgAction::Set)`] [`Arg::num_args(1..)`],
diff --git a/vendor/clap_builder/src/builder/command.rs b/vendor/clap_builder/src/builder/command.rs
index b1623cf8c..edcbace76 100644
--- a/vendor/clap_builder/src/builder/command.rs
+++ b/vendor/clap_builder/src/builder/command.rs
@@ -746,7 +746,7 @@ impl Command {
I: IntoIterator<Item = T>,
T: Into<OsString> + Clone,
{
- let mut raw_args = clap_lex::RawArgs::new(itr.into_iter());
+ let mut raw_args = clap_lex::RawArgs::new(itr);
let mut cursor = raw_args.cursor();
if self.settings.is_set(AppSettings::Multicall) {
@@ -1244,12 +1244,41 @@ impl Command {
/// # use clap_builder as clap;
/// # use clap::{Command, error::ErrorKind};
/// let res = Command::new("myprog")
+ /// .version("1.0.0")
/// .disable_version_flag(true)
/// .try_get_matches_from(vec![
+ /// "myprog", "--version"
+ /// ]);
+ /// assert!(res.is_err());
+ /// assert_eq!(res.unwrap_err().kind(), ErrorKind::UnknownArgument);
+ /// ```
+ ///
+ /// You can create a custom version flag with [`ArgAction::Version`]
+ /// ```rust
+ /// # use clap_builder as clap;
+ /// # use clap::{Command, Arg, ArgAction, error::ErrorKind};
+ /// let mut cmd = Command::new("myprog")
+ /// .version("1.0.0")
+ /// // Remove the `-V` short flag
+ /// .disable_version_flag(true)
+ /// .arg(
+ /// Arg::new("version")
+ /// .long("version")
+ /// .action(ArgAction::Version)
+ /// .help("Print version")
+ /// );
+ ///
+ /// let res = cmd.try_get_matches_from_mut(vec![
/// "myprog", "-V"
/// ]);
/// assert!(res.is_err());
/// assert_eq!(res.unwrap_err().kind(), ErrorKind::UnknownArgument);
+ ///
+ /// let res = cmd.try_get_matches_from_mut(vec![
+ /// "myprog", "--version"
+ /// ]);
+ /// assert!(res.is_err());
+ /// assert_eq!(res.unwrap_err().kind(), ErrorKind::DisplayVersion);
/// ```
#[inline]
pub fn disable_version_flag(self, yes: bool) -> Self {
@@ -1329,6 +1358,35 @@ impl Command {
/// assert!(res.is_err());
/// assert_eq!(res.unwrap_err().kind(), ErrorKind::UnknownArgument);
/// ```
+ ///
+ /// You can create a custom version flag with [`ArgAction::Help`], [`ArgAction::HelpShort`], or
+ /// [`ArgAction::HelpLong`]
+ /// ```rust
+ /// # use clap_builder as clap;
+ /// # use clap::{Command, Arg, ArgAction, error::ErrorKind};
+ /// let mut cmd = Command::new("myprog")
+ /// // Change help short flag to `?`
+ /// .disable_help_flag(true)
+ /// .arg(
+ /// Arg::new("help")
+ /// .short('?')
+ /// .long("help")
+ /// .action(ArgAction::Help)
+ /// .help("Print help")
+ /// );
+ ///
+ /// let res = cmd.try_get_matches_from_mut(vec![
+ /// "myprog", "-h"
+ /// ]);
+ /// assert!(res.is_err());
+ /// assert_eq!(res.unwrap_err().kind(), ErrorKind::UnknownArgument);
+ ///
+ /// let res = cmd.try_get_matches_from_mut(vec![
+ /// "myprog", "-?"
+ /// ]);
+ /// assert!(res.is_err());
+ /// assert_eq!(res.unwrap_err().kind(), ErrorKind::DisplayHelp);
+ /// ```
#[inline]
pub fn disable_help_flag(self, yes: bool) -> Self {
if yes {
diff --git a/vendor/clap_builder/src/builder/debug_asserts.rs b/vendor/clap_builder/src/builder/debug_asserts.rs
index afc181c54..2b633849f 100644
--- a/vendor/clap_builder/src/builder/debug_asserts.rs
+++ b/vendor/clap_builder/src/builder/debug_asserts.rs
@@ -405,6 +405,12 @@ impl PartialEq for Flag<'_> {
impl PartialOrd for Flag<'_> {
fn partial_cmp(&self, other: &Flag) -> Option<Ordering> {
+ Some(self.cmp(other))
+ }
+}
+
+impl Ord for Flag<'_> {
+ fn cmp(&self, other: &Self) -> Ordering {
use Flag::*;
match (self, other) {
@@ -413,21 +419,15 @@ impl PartialOrd for Flag<'_> {
| (Command(s1, _), Arg(s2, _))
| (Arg(s1, _), Command(s2, _)) => {
if s1 == s2 {
- Some(Ordering::Equal)
+ Ordering::Equal
} else {
- s1.partial_cmp(s2)
+ s1.cmp(s2)
}
}
}
}
}
-impl Ord for Flag<'_> {
- fn cmp(&self, other: &Self) -> Ordering {
- self.partial_cmp(other).unwrap()
- }
-}
-
fn detect_duplicate_flags(flags: &[Flag], short_or_long: &str) {
use Flag::*;
diff --git a/vendor/clap_builder/src/builder/os_str.rs b/vendor/clap_builder/src/builder/os_str.rs
index 6bd9282ec..fe8928e09 100644
--- a/vendor/clap_builder/src/builder/os_str.rs
+++ b/vendor/clap_builder/src/builder/os_str.rs
@@ -316,7 +316,7 @@ impl PartialEq for Inner {
impl PartialOrd for Inner {
fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
- self.as_os_str().partial_cmp(other.as_os_str())
+ Some(self.cmp(other))
}
}
diff --git a/vendor/clap_builder/src/builder/str.rs b/vendor/clap_builder/src/builder/str.rs
index 9bded8147..cf876910a 100644
--- a/vendor/clap_builder/src/builder/str.rs
+++ b/vendor/clap_builder/src/builder/str.rs
@@ -290,7 +290,7 @@ impl PartialEq for Inner {
impl PartialOrd for Inner {
fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
- self.as_str().partial_cmp(other.as_str())
+ Some(self.cmp(other))
}
}
diff --git a/vendor/clap_builder/src/parser/parser.rs b/vendor/clap_builder/src/parser/parser.rs
index fcde4a86e..4b24eb0de 100644
--- a/vendor/clap_builder/src/parser/parser.rs
+++ b/vendor/clap_builder/src/parser/parser.rs
@@ -643,7 +643,7 @@ impl<'cmd> Parser<'cmd> {
if self.cmd[current_positional.get_id()].is_allow_hyphen_values_set()
|| (self.cmd[current_positional.get_id()].is_allow_negative_numbers_set()
- && next.is_number())
+ && next.is_negative_number())
{
// If allow hyphen, this isn't a new arg.
debug!("Parser::is_new_arg: Allow hyphen");
@@ -841,7 +841,7 @@ impl<'cmd> Parser<'cmd> {
#[allow(clippy::blocks_in_if_conditions)]
if matches!(parse_state, ParseState::Opt(opt) | ParseState::Pos(opt)
- if self.cmd[opt].is_allow_hyphen_values_set() || (self.cmd[opt].is_allow_negative_numbers_set() && short_arg.is_number()))
+ if self.cmd[opt].is_allow_hyphen_values_set() || (self.cmd[opt].is_allow_negative_numbers_set() && short_arg.is_negative_number()))
{
debug!("Parser::parse_short_args: prior arg accepts hyphenated values",);
return Ok(ParseResult::MaybeHyphenValue);
@@ -851,7 +851,7 @@ impl<'cmd> Parser<'cmd> {
.get(&pos_counter)
.map(|arg| arg.is_allow_negative_numbers_set())
.unwrap_or_default()
- && short_arg.is_number()
+ && short_arg.is_negative_number()
{
debug!("Parser::parse_short_arg: negative number");
return Ok(ParseResult::MaybeHyphenValue);
diff --git a/vendor/clap_builder/src/util/any_value.rs b/vendor/clap_builder/src/util/any_value.rs
index 6f1e3665e..19aa82b4f 100644
--- a/vendor/clap_builder/src/util/any_value.rs
+++ b/vendor/clap_builder/src/util/any_value.rs
@@ -65,7 +65,7 @@ impl Eq for AnyValueId {}
impl PartialOrd for AnyValueId {
fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
- self.type_id.partial_cmp(&other.type_id)
+ Some(self.cmp(other))
}
}
diff --git a/vendor/clap_complete/.cargo-checksum.json b/vendor/clap_complete/.cargo-checksum.json
index 6450aa7f9..0386d8294 100644
--- a/vendor/clap_complete/.cargo-checksum.json
+++ b/vendor/clap_complete/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"459c4073d0c76c4838fbdf7b5e341d0bb24d919098a9a5c9ae0a8ea035957080","Cargo.toml":"da0fb52fa6fc22c4a5f3b7e97f8fcdfb8cbb2712f0319a768a13a5fc289c3d68","LICENSE-APACHE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","LICENSE-MIT":"0d687e1f07b58fe68bda74668ff6326125e5e5efa184cce755cd84ac535b7058","README.md":"7292d866750439d0bd43b4833d02fe681e1097602a2647bbdad5705c39ea4e74","examples/completion-derive.rs":"9df678ff1b67b7e8e829d53d983960429eb809aac4e72f4c5415a59cee8684a6","examples/completion.rs":"d81c0281ae87280d40381e468c0fa2bb4d8751022fdfd0d11ed9d54598e18d8d","examples/dynamic.rs":"47c023b8d684e39bd95d1837dcbe3980ff29d3c3b19c685f3029c3fa260b882e","src/dynamic.rs":"4577d56abe90307a9e2c3189f3d96d2eaaff6639c07aa411eaa814c396d195f5","src/generator/mod.rs":"054bc08444ee7389168bcd74954c0ac448df186ddf2c8491dca01aff2456b6d7","src/generator/utils.rs":"2486cdfc9edf1678fed953080ce48b3350e7b4a2f29e7e3a681b64d621f40f47","src/lib.rs":"8ad5e4171dd7ba9dbad24c7e8c90bdf0444a8cc427fe8e5ce2b6407d0dc018ac","src/macros.rs":"8445231263f03893ab3806e3f50747113bf8d638bd81e2a6bf33c9a0df224421","src/shells/bash.rs":"d5d4cef101f0742a8695a7036a4b63151f86225d70898c500ddb0e739b682c4e","src/shells/elvish.rs":"c09e570414213f779b2126eb33784bc39774269ffe4a0654fc32e17d4ac649ae","src/shells/fish.rs":"2266faee22d38f3886792ac14e589cb2a3859593f779789fd4903f3ba6cb10c2","src/shells/mod.rs":"002352299be1ece75540e7b1502120590f4635f69a925b19484d272bd5491505","src/shells/powershell.rs":"d6e4e93afecd6c765fbe2438159a9b11de76c696a5b89d85ec279fb79e43e7d5","src/shells/shell.rs":"4dd9df0bd1f371da370c66808d16ad00a045ba3b997844b1164518b094bba951","src/shells/zsh.rs":"bf73a3253dfc023f1704d8ab28efbf5aa17e390a0fa337eebd3369684857a118"},"package":"7f6b5c519bab3ea61843a7923d074b04245624bb84a64a8c150f5deb014e388b"} \ No newline at end of file
+{"files":{"Cargo.lock":"40ae0595e56e26762bea08190bec066f169116d12ca1ef54f16026db6241aa88","Cargo.toml":"a4058f4f3fc85bb43cd265899209c6a0e0150d7d5bca688f3c414534aff33a08","LICENSE-APACHE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","LICENSE-MIT":"0d687e1f07b58fe68bda74668ff6326125e5e5efa184cce755cd84ac535b7058","README.md":"c16463f56e2dae5b976ca630c2e5399ed8357865dcd361ce3863733bf561ad83","examples/completion-derive.rs":"9df678ff1b67b7e8e829d53d983960429eb809aac4e72f4c5415a59cee8684a6","examples/completion.rs":"d81c0281ae87280d40381e468c0fa2bb4d8751022fdfd0d11ed9d54598e18d8d","examples/dynamic.rs":"0fa838cd9b5f406b5adb467827be43120752673f8d8eca011a01a3e91f26678b","examples/exhaustive.rs":"3acc2b4c1591b0488c721fbff4bb4bbd8d71b58ce3534d82d41f6b2977aff054","src/dynamic/completer.rs":"fb304b3348eb0cc0849cefcd918715612ed3823d67de75368c6d71374ebe7562","src/dynamic/mod.rs":"99e6cf37f53f22394c827bf872801fd93ecc4dffc0e618fdc71d6a04890deaa6","src/dynamic/shells/bash.rs":"359e180a9c5a74a1b3c4e72f25c767d7df4fd93bf589b927dc83b6d35b699b80","src/dynamic/shells/fish.rs":"9575092d165e4a9c52c599f0c143ded40418b4ba9e3400f423e4836925ff2f4e","src/dynamic/shells/mod.rs":"3f1dbdba2cae6bc3eea708a8a264e8e8cfa752c2b00a29054ae1dcd6e860bcd5","src/dynamic/shells/shell.rs":"2e98ba5d9405bd41efeb9982e7b7b4aa5f5ee650b19c79e7c38b068c01c2d7c3","src/generator/mod.rs":"054bc08444ee7389168bcd74954c0ac448df186ddf2c8491dca01aff2456b6d7","src/generator/utils.rs":"2486cdfc9edf1678fed953080ce48b3350e7b4a2f29e7e3a681b64d621f40f47","src/lib.rs":"8ad5e4171dd7ba9dbad24c7e8c90bdf0444a8cc427fe8e5ce2b6407d0dc018ac","src/macros.rs":"8445231263f03893ab3806e3f50747113bf8d638bd81e2a6bf33c9a0df224421","src/shells/bash.rs":"5b60f9ebb995dfa4858eed9615efbffa0cd81842479a701b13374a5047aef22a","src/shells/elvish.rs":"c09e570414213f779b2126eb33784bc39774269ffe4a0654fc32e17d4ac649ae","src/shells/fish.rs":"52007ac76cd4275f128ab46b1df6aa1fe7534d253f0df93d13a19e16c32567c9","src/shells/mod.rs":"002352299be1ece75540e7b1502120590f4635f69a925b19484d272bd5491505","src/shells/powershell.rs":"26137941c89029b493a04667ce45ff705c960f10c8df0b725110708b79c120e2","src/shells/shell.rs":"4dd9df0bd1f371da370c66808d16ad00a045ba3b997844b1164518b094bba951","src/shells/zsh.rs":"bf73a3253dfc023f1704d8ab28efbf5aa17e390a0fa337eebd3369684857a118"},"package":"e3ae8ba90b9d8b007efe66e55e48fb936272f5ca00349b5b0e89877520d35ea7"} \ No newline at end of file
diff --git a/vendor/clap_complete/Cargo.lock b/vendor/clap_complete/Cargo.lock
index baabc4700..bef75813b 100644
--- a/vendor/clap_complete/Cargo.lock
+++ b/vendor/clap_complete/Cargo.lock
@@ -19,30 +19,29 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
[[package]]
name = "anstream"
-version = "0.3.0"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e579a7752471abc2a8268df8b20005e3eadd975f585398f17efcfd8d4927371"
+checksum = "bff2cf94a3dbe2d57cbd56485e1bd7436455058034d6c2d47be51d4e5e4bc6ab"
dependencies = [
"anstyle",
"anstyle-parse",
"anstyle-query",
"anstyle-wincon",
"colorchoice",
- "is-terminal",
"utf8parse",
]
[[package]]
name = "anstyle"
-version = "1.0.0"
+version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41ed9a86bf92ae6580e0a31281f65a1b1d867c0cc68d5346e2ae128dddfa6a7d"
+checksum = "15c4c2c83f81532e5845a733998b6971faca23490340a418e9b72a3ec9de12ea"
[[package]]
name = "anstyle-parse"
-version = "0.2.0"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e765fd216e48e067936442276d1d57399e37bce53c264d6fefbe298080cb57ee"
+checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333"
dependencies = [
"utf8parse",
]
@@ -58,15 +57,21 @@ dependencies = [
[[package]]
name = "anstyle-wincon"
-version = "1.0.0"
+version = "3.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4bcd8291a340dd8ac70e18878bc4501dd7b4ff970cfa21c207d36ece51ea88fd"
+checksum = "0238ca56c96dfa37bdf7c373c8886dd591322500aceeeccdb2216fe06dc2f796"
dependencies = [
"anstyle",
"windows-sys 0.48.0",
]
[[package]]
+name = "arrayvec"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
+
+[[package]]
name = "autocfg"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -95,9 +100,12 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "cc"
-version = "1.0.79"
+version = "1.0.83"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
+dependencies = [
+ "libc",
+]
[[package]]
name = "cfg-if"
@@ -130,10 +138,11 @@ dependencies = [
[[package]]
name = "clap_complete"
-version = "4.3.1"
+version = "4.4.3"
dependencies = [
"clap",
"clap_lex",
+ "completest",
"is_executable",
"pathdiff",
"shlex",
@@ -167,6 +176,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
[[package]]
+name = "completest"
+version = "0.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ce6edca5001784bf331c3e712f9098a9346debeded6611206ed921a3f704474"
+dependencies = [
+ "ptyprocess",
+ "vt100",
+]
+
+[[package]]
+name = "content_inspector"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7bda66e858c683005a53a9a60c69a4aca7eeaa45d124526e389f7aec8e62f38"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
name = "crossbeam-channel"
version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -196,7 +224,7 @@ dependencies = [
"autocfg",
"cfg-if",
"crossbeam-utils",
- "memoffset",
+ "memoffset 0.6.5",
"scopeguard",
]
@@ -210,6 +238,12 @@ dependencies = [
]
[[package]]
+name = "dunce"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b"
+
+[[package]]
name = "either"
version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -217,9 +251,9 @@ checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797"
[[package]]
name = "errno"
-version = "0.3.1"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a"
+checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f"
dependencies = [
"errno-dragonfly",
"libc",
@@ -249,6 +283,27 @@ dependencies = [
]
[[package]]
+name = "fastrand"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
+dependencies = [
+ "instant",
+]
+
+[[package]]
+name = "filetime"
+version = "0.2.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
name = "gimli"
version = "0.27.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -268,9 +323,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
[[package]]
name = "heck"
-version = "0.4.0"
+version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9"
+checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
[[package]]
name = "hermit-abi"
@@ -282,12 +337,6 @@ dependencies = [
]
[[package]]
-name = "hermit-abi"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286"
-
-[[package]]
name = "humantime"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -314,25 +363,22 @@ dependencies = [
]
[[package]]
-name = "io-lifetimes"
-version = "1.0.3"
+name = "instant"
+version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c"
+checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
dependencies = [
- "libc",
- "windows-sys 0.42.0",
+ "cfg-if",
]
[[package]]
-name = "is-terminal"
-version = "0.4.7"
+name = "io-lifetimes"
+version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f"
+checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c"
dependencies = [
- "hermit-abi 0.3.1",
- "io-lifetimes",
- "rustix",
- "windows-sys 0.48.0",
+ "libc",
+ "windows-sys 0.42.0",
]
[[package]]
@@ -346,15 +392,15 @@ dependencies = [
[[package]]
name = "itoa"
-version = "1.0.4"
+version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc"
+checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
[[package]]
name = "libc"
-version = "0.2.144"
+version = "0.2.147"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b00cc1c228a6782d0f076e7b232802e0c5689d41bb5df366f2a6b6621cfdfe1"
+checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
[[package]]
name = "linux-raw-sys"
@@ -387,6 +433,15 @@ dependencies = [
]
[[package]]
+name = "memoffset"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
name = "miniz_oxide"
version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -396,6 +451,20 @@ dependencies = [
]
[[package]]
+name = "nix"
+version = "0.26.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfdda3d196821d6af13126e40375cdf7da646a96114af134d5f417a9a1dc8e1a"
+dependencies = [
+ "bitflags",
+ "cfg-if",
+ "libc",
+ "memoffset 0.7.1",
+ "pin-utils",
+ "static_assertions",
+]
+
+[[package]]
name = "normalize-line-endings"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -407,7 +476,7 @@ version = "1.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5"
dependencies = [
- "hermit-abi 0.1.19",
+ "hermit-abi",
"libc",
]
@@ -422,9 +491,9 @@ dependencies = [
[[package]]
name = "once_cell"
-version = "1.17.1"
+version = "1.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
+checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
[[package]]
name = "os_pipe"
@@ -443,19 +512,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd"
[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+[[package]]
name = "proc-macro2"
-version = "1.0.58"
+version = "1.0.66"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa1fb82fc0c281dd9671101b66b771ebbe1eaf967b96ac8740dcba4b70005ca8"
+checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"
dependencies = [
"unicode-ident",
]
[[package]]
+name = "ptyprocess"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e05aef7befb11a210468a2d77d978dde2c6381a0381e33beb575e91f57fe8cf"
+dependencies = [
+ "nix",
+]
+
+[[package]]
name = "quote"
-version = "1.0.26"
+version = "1.0.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
+checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965"
dependencies = [
"proc-macro2",
]
@@ -483,6 +567,15 @@ dependencies = [
]
[[package]]
+name = "redox_syscall"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
+dependencies = [
+ "bitflags",
+]
+
+[[package]]
name = "rustc-demangle"
version = "0.1.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -509,6 +602,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
name = "scopeguard"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -516,18 +618,18 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
[[package]]
name = "serde"
-version = "1.0.158"
+version = "1.0.180"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
+checksum = "0ea67f183f058fe88a4e3ec6e2788e003840893b91bac4559cabedd00863b3ed"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.158"
+version = "1.0.180"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
+checksum = "24e744d7782b686ab3b73267ef05697159cc0e5abbed3f47f9933165e5219036"
dependencies = [
"proc-macro2",
"quote",
@@ -536,9 +638,9 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.87"
+version = "1.0.104"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45"
+checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c"
dependencies = [
"itoa",
"ryu",
@@ -568,36 +670,47 @@ checksum = "62ac7f900db32bf3fd12e0117dd3dc4da74bc52ebaac97f39668446d89694803"
[[package]]
name = "snapbox"
-version = "0.4.11"
+version = "0.4.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6bccd62078347f89a914e3004d94582e13824d4e3d8a816317862884c423835"
+checksum = "7b439536a42c43be148b610c7f7f968fb79a457254910a9cb20900da73cd3271"
dependencies = [
"anstream",
"anstyle",
+ "content_inspector",
+ "dunce",
"escargot",
+ "filetime",
"libc",
"normalize-line-endings",
"os_pipe",
"similar",
"snapbox-macros",
+ "tempfile",
"wait-timeout",
- "windows-sys 0.45.0",
+ "walkdir",
+ "windows-sys 0.48.0",
]
[[package]]
name = "snapbox-macros"
-version = "0.3.4"
+version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eaaf09df9f0eeae82be96290918520214530e738a7fe5a351b0f24cf77c0ca31"
+checksum = "ed1559baff8a696add3322b9be3e940d433e7bb4e38d79017205fd37ff28b28e"
dependencies = [
"anstream",
]
[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
name = "syn"
-version = "2.0.16"
+version = "2.0.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a6f671d4b5ffdb8eadec19c0ae67fe2639df8684bd7bc4b83d986b8db549cf01"
+checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567"
dependencies = [
"proc-macro2",
"quote",
@@ -605,6 +718,19 @@ dependencies = [
]
[[package]]
+name = "tempfile"
+version = "3.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998"
+dependencies = [
+ "cfg-if",
+ "fastrand",
+ "redox_syscall",
+ "rustix",
+ "windows-sys 0.45.0",
+]
+
+[[package]]
name = "toml_datetime"
version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -628,9 +754,9 @@ dependencies = [
[[package]]
name = "trycmd"
-version = "0.14.16"
+version = "0.14.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2925e71868a12b173c1eb166018c2d2f9dfaedfcaec747bdb6ea2246785d258e"
+checksum = "a5bff680f217f2c7cc246aa5313ef9c1802449b1b8f859d28765355fda1c421f"
dependencies = [
"glob",
"humantime",
@@ -649,6 +775,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
[[package]]
+name = "unicode-width"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+
+[[package]]
name = "unicode-xid"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -661,6 +793,39 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
[[package]]
+name = "vt100"
+version = "0.15.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84cd863bf0db7e392ba3bd04994be3473491b31e66340672af5d11943c6274de"
+dependencies = [
+ "itoa",
+ "log",
+ "unicode-width",
+ "vte",
+]
+
+[[package]]
+name = "vte"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f5022b5fbf9407086c180e9557be968742d839e68346af7792b8592489732197"
+dependencies = [
+ "arrayvec",
+ "utf8parse",
+ "vte_generate_state_changes",
+]
+
+[[package]]
+name = "vte_generate_state_changes"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff"
+dependencies = [
+ "proc-macro2",
+ "quote",
+]
+
+[[package]]
name = "wait-timeout"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -670,6 +835,17 @@ dependencies = [
]
[[package]]
+name = "walkdir"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
+dependencies = [
+ "same-file",
+ "winapi",
+ "winapi-util",
+]
+
+[[package]]
name = "winapi"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -686,6 +862,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
+name = "winapi-util"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -721,7 +906,7 @@ version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
dependencies = [
- "windows-targets 0.48.0",
+ "windows-targets 0.48.5",
]
[[package]]
@@ -741,17 +926,17 @@ dependencies = [
[[package]]
name = "windows-targets"
-version = "0.48.0"
+version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
dependencies = [
- "windows_aarch64_gnullvm 0.48.0",
- "windows_aarch64_msvc 0.48.0",
- "windows_i686_gnu 0.48.0",
- "windows_i686_msvc 0.48.0",
- "windows_x86_64_gnu 0.48.0",
- "windows_x86_64_gnullvm 0.48.0",
- "windows_x86_64_msvc 0.48.0",
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
]
[[package]]
@@ -762,9 +947,9 @@ checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
[[package]]
name = "windows_aarch64_gnullvm"
-version = "0.48.0"
+version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
[[package]]
name = "windows_aarch64_msvc"
@@ -774,9 +959,9 @@ checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
[[package]]
name = "windows_aarch64_msvc"
-version = "0.48.0"
+version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
[[package]]
name = "windows_i686_gnu"
@@ -786,9 +971,9 @@ checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
[[package]]
name = "windows_i686_gnu"
-version = "0.48.0"
+version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
[[package]]
name = "windows_i686_msvc"
@@ -798,9 +983,9 @@ checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
[[package]]
name = "windows_i686_msvc"
-version = "0.48.0"
+version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
[[package]]
name = "windows_x86_64_gnu"
@@ -810,9 +995,9 @@ checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
[[package]]
name = "windows_x86_64_gnu"
-version = "0.48.0"
+version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
[[package]]
name = "windows_x86_64_gnullvm"
@@ -822,9 +1007,9 @@ checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
[[package]]
name = "windows_x86_64_gnullvm"
-version = "0.48.0"
+version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
[[package]]
name = "windows_x86_64_msvc"
@@ -834,9 +1019,9 @@ checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
[[package]]
name = "windows_x86_64_msvc"
-version = "0.48.0"
+version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
[[package]]
name = "winnow"
diff --git a/vendor/clap_complete/Cargo.toml b/vendor/clap_complete/Cargo.toml
index a1a1f95f9..442371d29 100644
--- a/vendor/clap_complete/Cargo.toml
+++ b/vendor/clap_complete/Cargo.toml
@@ -11,9 +11,9 @@
[package]
edition = "2021"
-rust-version = "1.64.0"
+rust-version = "1.70.0"
name = "clap_complete"
-version = "4.3.1"
+version = "4.4.3"
include = [
"build.rs",
"src/**/*",
@@ -121,12 +121,19 @@ features = [
]
default-features = false
+[dev-dependencies.completest]
+version = "0.0.20"
+
[dev-dependencies.snapbox]
-version = "0.4.11"
-features = ["diff"]
+version = "0.4.13"
+features = [
+ "diff",
+ "path",
+ "examples",
+]
[dev-dependencies.trycmd]
-version = "0.14.16"
+version = "0.14.18"
features = [
"color-auto",
"diff",
diff --git a/vendor/clap_complete/README.md b/vendor/clap_complete/README.md
index 4713a3887..b09fbd7a3 100644
--- a/vendor/clap_complete/README.md
+++ b/vendor/clap_complete/README.md
@@ -5,16 +5,16 @@
[![Crates.io](https://img.shields.io/crates/v/clap_complete?style=flat-square)](https://crates.io/crates/clap_complete)
[![Crates.io](https://img.shields.io/crates/d/clap_complete?style=flat-square)](https://crates.io/crates/clap_complete)
-[![License](https://img.shields.io/badge/license-Apache%202.0-blue?style=flat-square)](https://github.com/clap-rs/clap/blob/clap_complete-v4.3.1/LICENSE-APACHE)
-[![License](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](https://github.com/clap-rs/clap/blob/clap_complete-v4.3.1/LICENSE-MIT)
+[![License](https://img.shields.io/badge/license-Apache%202.0-blue?style=flat-square)](https://github.com/clap-rs/clap/blob/clap_complete-v4.4.3/LICENSE-APACHE)
+[![License](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](https://github.com/clap-rs/clap/blob/clap_complete-v4.4.3/LICENSE-MIT)
Dual-licensed under [Apache 2.0](LICENSE-APACHE) or [MIT](LICENSE-MIT).
1. [About](#about)
2. [API Reference](https://docs.rs/clap_complete)
3. [Questions & Discussions](https://github.com/clap-rs/clap/discussions)
-4. [CONTRIBUTING](https://github.com/clap-rs/clap/blob/clap_complete-v4.3.1/clap_complete/CONTRIBUTING.md)
-5. [Sponsors](https://github.com/clap-rs/clap/blob/clap_complete-v4.3.1/README.md#sponsors)
+4. [CONTRIBUTING](https://github.com/clap-rs/clap/blob/clap_complete-v4.4.3/clap_complete/CONTRIBUTING.md)
+5. [Sponsors](https://github.com/clap-rs/clap/blob/clap_complete-v4.4.3/README.md#sponsors)
## About
diff --git a/vendor/clap_complete/examples/dynamic.rs b/vendor/clap_complete/examples/dynamic.rs
index 5f1f30acd..ccaf7d8ad 100644
--- a/vendor/clap_complete/examples/dynamic.rs
+++ b/vendor/clap_complete/examples/dynamic.rs
@@ -16,14 +16,14 @@ fn command() -> clap::Command {
.value_parser(["json", "yaml", "toml"]),
)
.args_conflicts_with_subcommands(true);
- clap_complete::dynamic::bash::CompleteCommand::augment_subcommands(cmd)
+ clap_complete::dynamic::shells::CompleteCommand::augment_subcommands(cmd)
}
fn main() {
let cmd = command();
let matches = cmd.get_matches();
if let Ok(completions) =
- clap_complete::dynamic::bash::CompleteCommand::from_arg_matches(&matches)
+ clap_complete::dynamic::shells::CompleteCommand::from_arg_matches(&matches)
{
completions.complete(&mut command());
} else {
diff --git a/vendor/clap_complete/examples/exhaustive.rs b/vendor/clap_complete/examples/exhaustive.rs
new file mode 100644
index 000000000..de00da622
--- /dev/null
+++ b/vendor/clap_complete/examples/exhaustive.rs
@@ -0,0 +1,203 @@
+use clap::builder::PossibleValue;
+#[cfg(feature = "unstable-dynamic")]
+use clap::{FromArgMatches, Subcommand};
+use clap_complete::{generate, Generator, Shell};
+
+fn main() {
+ let matches = cli().get_matches();
+ if let Some(generator) = matches.get_one::<Shell>("generate") {
+ let mut cmd = cli();
+ eprintln!("Generating completion file for {generator}...");
+ print_completions(*generator, &mut cmd);
+ return;
+ }
+
+ #[cfg(feature = "unstable-dynamic")]
+ if let Ok(completions) =
+ clap_complete::dynamic::shells::CompleteCommand::from_arg_matches(&matches)
+ {
+ completions.complete(&mut cli());
+ return;
+ };
+
+ println!("{:?}", matches);
+}
+
+fn print_completions<G: Generator>(gen: G, cmd: &mut clap::Command) {
+ generate(gen, cmd, cmd.get_name().to_string(), &mut std::io::stdout());
+}
+
+#[allow(clippy::let_and_return)]
+fn cli() -> clap::Command {
+ let cli = clap::Command::new("exhaustive")
+ .version("3.0")
+ .propagate_version(true)
+ .args([
+ clap::Arg::new("global")
+ .long("global")
+ .global(true)
+ .action(clap::ArgAction::SetTrue)
+ .help("everywhere"),
+ clap::Arg::new("generate")
+ .long("generate")
+ .value_name("SHELL")
+ .value_parser(clap::value_parser!(Shell))
+ .help("generate"),
+ ])
+ .subcommands([
+ clap::Command::new("action").args([
+ clap::Arg::new("set-true")
+ .long("set-true")
+ .action(clap::ArgAction::SetTrue)
+ .help("bool"),
+ clap::Arg::new("set")
+ .long("set")
+ .action(clap::ArgAction::Set)
+ .help("value"),
+ clap::Arg::new("count")
+ .long("count")
+ .action(clap::ArgAction::Count)
+ .help("number"),
+ clap::Arg::new("choice")
+ .long("choice")
+ .value_parser(["first", "second"])
+ .help("enum"),
+ ]),
+ clap::Command::new("quote")
+ .args([
+ clap::Arg::new("single-quotes")
+ .long("single-quotes")
+ .action(clap::ArgAction::SetTrue)
+ .help("Can be 'always', 'auto', or 'never'"),
+ clap::Arg::new("double-quotes")
+ .long("double-quotes")
+ .action(clap::ArgAction::SetTrue)
+ .help("Can be \"always\", \"auto\", or \"never\""),
+ clap::Arg::new("backticks")
+ .long("backticks")
+ .action(clap::ArgAction::SetTrue)
+ .help("For more information see `echo test`"),
+ clap::Arg::new("backslash")
+ .long("backslash")
+ .action(clap::ArgAction::SetTrue)
+ .help("Avoid '\\n'"),
+ clap::Arg::new("brackets")
+ .long("brackets")
+ .action(clap::ArgAction::SetTrue)
+ .help("List packages [filter]"),
+ clap::Arg::new("expansions")
+ .long("expansions")
+ .action(clap::ArgAction::SetTrue)
+ .help("Execute the shell command with $SHELL"),
+ clap::Arg::new("choice")
+ .long("choice")
+ .action(clap::ArgAction::Set)
+ .value_parser(clap::builder::PossibleValuesParser::new([
+ PossibleValue::new("bash").help("bash (shell)"),
+ PossibleValue::new("fish").help("fish shell"),
+ PossibleValue::new("zsh").help("zsh shell"),
+ ])),
+ ])
+ .subcommands([
+ clap::Command::new("cmd-single-quotes")
+ .about("Can be 'always', 'auto', or 'never'"),
+ clap::Command::new("cmd-double-quotes")
+ .about("Can be \"always\", \"auto\", or \"never\""),
+ clap::Command::new("cmd-backticks")
+ .about("For more information see `echo test`"),
+ clap::Command::new("cmd-backslash").about("Avoid '\\n'"),
+ clap::Command::new("cmd-brackets").about("List packages [filter]"),
+ clap::Command::new("cmd-expansions")
+ .about("Execute the shell command with $SHELL"),
+ clap::Command::new("escape-help").about("\\tab\t\"'\nNew Line"),
+ ]),
+ clap::Command::new("value").args([
+ clap::Arg::new("delim").long("delim").value_delimiter(','),
+ clap::Arg::new("tuple").long("tuple").num_args(2),
+ clap::Arg::new("require-eq")
+ .long("require-eq")
+ .require_equals(true),
+ clap::Arg::new("term").num_args(1..).value_terminator(";"),
+ ]),
+ clap::Command::new("pacman").subcommands([
+ clap::Command::new("one").long_flag("one").short_flag('o'),
+ clap::Command::new("two").long_flag("two").short_flag('t'),
+ ]),
+ clap::Command::new("last")
+ .args([clap::Arg::new("first"), clap::Arg::new("free").last(true)]),
+ clap::Command::new("alias").args([
+ clap::Arg::new("flag")
+ .short('f')
+ .visible_short_alias('F')
+ .long("flag")
+ .action(clap::ArgAction::SetTrue)
+ .visible_alias("flg")
+ .help("cmd flag"),
+ clap::Arg::new("option")
+ .short('o')
+ .visible_short_alias('O')
+ .long("option")
+ .visible_alias("opt")
+ .help("cmd option")
+ .action(clap::ArgAction::Set),
+ clap::Arg::new("positional"),
+ ]),
+ clap::Command::new("hint").args([
+ clap::Arg::new("choice")
+ .long("choice")
+ .action(clap::ArgAction::Set)
+ .value_parser(["bash", "fish", "zsh"]),
+ clap::Arg::new("unknown")
+ .long("unknown")
+ .value_hint(clap::ValueHint::Unknown),
+ clap::Arg::new("other")
+ .long("other")
+ .value_hint(clap::ValueHint::Other),
+ clap::Arg::new("path")
+ .long("path")
+ .short('p')
+ .value_hint(clap::ValueHint::AnyPath),
+ clap::Arg::new("file")
+ .long("file")
+ .short('f')
+ .value_hint(clap::ValueHint::FilePath),
+ clap::Arg::new("dir")
+ .long("dir")
+ .short('d')
+ .value_hint(clap::ValueHint::DirPath),
+ clap::Arg::new("exe")
+ .long("exe")
+ .short('e')
+ .value_hint(clap::ValueHint::ExecutablePath),
+ clap::Arg::new("cmd_name")
+ .long("cmd-name")
+ .value_hint(clap::ValueHint::CommandName),
+ clap::Arg::new("cmd")
+ .long("cmd")
+ .short('c')
+ .value_hint(clap::ValueHint::CommandString),
+ clap::Arg::new("command_with_args")
+ .action(clap::ArgAction::Set)
+ .num_args(1..)
+ .trailing_var_arg(true)
+ .value_hint(clap::ValueHint::CommandWithArguments),
+ clap::Arg::new("user")
+ .short('u')
+ .long("user")
+ .value_hint(clap::ValueHint::Username),
+ clap::Arg::new("host")
+ .short('H')
+ .long("host")
+ .value_hint(clap::ValueHint::Hostname),
+ clap::Arg::new("url")
+ .long("url")
+ .value_hint(clap::ValueHint::Url),
+ clap::Arg::new("email")
+ .long("email")
+ .value_hint(clap::ValueHint::EmailAddress),
+ ]),
+ ]);
+ #[cfg(feature = "unstable-dynamic")]
+ let cli = clap_complete::dynamic::shells::CompleteCommand::augment_subcommands(cli);
+ cli
+}
diff --git a/vendor/clap_complete/src/dynamic.rs b/vendor/clap_complete/src/dynamic.rs
deleted file mode 100644
index f25b4a48d..000000000
--- a/vendor/clap_complete/src/dynamic.rs
+++ /dev/null
@@ -1,549 +0,0 @@
-//! Complete commands within shells
-
-/// Complete commands within bash
-pub mod bash {
- use std::ffi::OsStr;
- use std::ffi::OsString;
- use std::io::Write;
-
- use clap_lex::OsStrExt as _;
- use unicode_xid::UnicodeXID;
-
- #[derive(clap::Subcommand)]
- #[command(hide = true)]
- #[allow(missing_docs)]
- #[derive(Clone, Debug)]
- pub enum CompleteCommand {
- /// Register shell completions for this program
- Complete(CompleteArgs),
- }
-
- #[derive(clap::Args)]
- #[command(group = clap::ArgGroup::new("complete").multiple(true).conflicts_with("register"))]
- #[allow(missing_docs)]
- #[derive(Clone, Debug)]
- pub struct CompleteArgs {
- /// Path to write completion-registration to
- #[arg(long, required = true)]
- register: Option<std::path::PathBuf>,
-
- #[arg(
- long,
- required = true,
- value_name = "COMP_CWORD",
- hide_short_help = true,
- group = "complete"
- )]
- index: Option<usize>,
-
- #[arg(long, hide_short_help = true, group = "complete")]
- ifs: Option<String>,
-
- #[arg(
- long = "type",
- required = true,
- hide_short_help = true,
- group = "complete"
- )]
- comp_type: Option<CompType>,
-
- #[arg(long, hide_short_help = true, group = "complete")]
- space: bool,
-
- #[arg(
- long,
- conflicts_with = "space",
- hide_short_help = true,
- group = "complete"
- )]
- no_space: bool,
-
- #[arg(raw = true, hide_short_help = true, group = "complete")]
- comp_words: Vec<OsString>,
- }
-
- impl CompleteCommand {
- /// Process the completion request
- pub fn complete(&self, cmd: &mut clap::Command) -> std::convert::Infallible {
- self.try_complete(cmd).unwrap_or_else(|e| e.exit());
- std::process::exit(0)
- }
-
- /// Process the completion request
- pub fn try_complete(&self, cmd: &mut clap::Command) -> clap::error::Result<()> {
- debug!("CompleteCommand::try_complete: {self:?}");
- let CompleteCommand::Complete(args) = self;
- if let Some(out_path) = args.register.as_deref() {
- let mut buf = Vec::new();
- let name = cmd.get_name();
- let bin = cmd.get_bin_name().unwrap_or_else(|| cmd.get_name());
- register(name, [bin], bin, &Behavior::default(), &mut buf)?;
- if out_path == std::path::Path::new("-") {
- std::io::stdout().write_all(&buf)?;
- } else if out_path.is_dir() {
- let out_path = out_path.join(file_name(name));
- std::fs::write(out_path, buf)?;
- } else {
- std::fs::write(out_path, buf)?;
- }
- } else {
- let index = args.index.unwrap_or_default();
- let comp_type = args.comp_type.unwrap_or_default();
- let space = match (args.space, args.no_space) {
- (true, false) => Some(true),
- (false, true) => Some(false),
- (true, true) => {
- unreachable!("`--space` and `--no-space` set, clap should prevent this")
- }
- (false, false) => None,
- }
- .unwrap();
- let current_dir = std::env::current_dir().ok();
- let completions = complete(
- cmd,
- args.comp_words.clone(),
- index,
- comp_type,
- space,
- current_dir.as_deref(),
- )?;
-
- let mut buf = Vec::new();
- for (i, completion) in completions.iter().enumerate() {
- if i != 0 {
- write!(&mut buf, "{}", args.ifs.as_deref().unwrap_or("\n"))?;
- }
- write!(&mut buf, "{}", completion.to_string_lossy())?;
- }
- std::io::stdout().write_all(&buf)?;
- }
-
- Ok(())
- }
- }
-
- /// The recommended file name for the registration code
- pub fn file_name(name: &str) -> String {
- format!("{name}.bash")
- }
-
- /// Define the completion behavior
- pub enum Behavior {
- /// Bare bones behavior
- Minimal,
- /// Fallback to readline behavior when no matches are generated
- Readline,
- /// Customize bash's completion behavior
- Custom(String),
- }
-
- impl Default for Behavior {
- fn default() -> Self {
- Self::Readline
- }
- }
-
- /// Generate code to register the dynamic completion
- pub fn register(
- name: &str,
- executables: impl IntoIterator<Item = impl AsRef<str>>,
- completer: &str,
- behavior: &Behavior,
- buf: &mut dyn Write,
- ) -> Result<(), std::io::Error> {
- let escaped_name = name.replace('-', "_");
- debug_assert!(
- escaped_name.chars().all(|c| c.is_xid_continue()),
- "`name` must be an identifier, got `{escaped_name}`"
- );
- let mut upper_name = escaped_name.clone();
- upper_name.make_ascii_uppercase();
-
- let executables = executables
- .into_iter()
- .map(|s| shlex::quote(s.as_ref()).into_owned())
- .collect::<Vec<_>>()
- .join(" ");
-
- let options = match behavior {
- Behavior::Minimal => "-o nospace -o bashdefault",
- Behavior::Readline => "-o nospace -o default -o bashdefault",
- Behavior::Custom(c) => c.as_str(),
- };
-
- let completer = shlex::quote(completer);
-
- let script = r#"
-_clap_complete_NAME() {
- local IFS=$'\013'
- local SUPPRESS_SPACE=0
- if compopt +o nospace 2> /dev/null; then
- SUPPRESS_SPACE=1
- fi
- if [[ ${SUPPRESS_SPACE} == 1 ]]; then
- SPACE_ARG="--no-space"
- else
- SPACE_ARG="--space"
- fi
- COMPREPLY=( $("COMPLETER" complete --index ${COMP_CWORD} --type ${COMP_TYPE} ${SPACE_ARG} --ifs="$IFS" -- "${COMP_WORDS[@]}") )
- if [[ $? != 0 ]]; then
- unset COMPREPLY
- elif [[ $SUPPRESS_SPACE == 1 ]] && [[ "${COMPREPLY-}" =~ [=/:]$ ]]; then
- compopt -o nospace
- fi
-}
-complete OPTIONS -F _clap_complete_NAME EXECUTABLES
-"#
- .replace("NAME", &escaped_name)
- .replace("EXECUTABLES", &executables)
- .replace("OPTIONS", options)
- .replace("COMPLETER", &completer)
- .replace("UPPER", &upper_name);
-
- writeln!(buf, "{script}")?;
- Ok(())
- }
-
- /// Type of completion attempted that caused a completion function to be called
- #[derive(Copy, Clone, Debug, PartialEq, Eq)]
- #[non_exhaustive]
- pub enum CompType {
- /// Normal completion
- Normal,
- /// List completions after successive tabs
- Successive,
- /// List alternatives on partial word completion
- Alternatives,
- /// List completions if the word is not unmodified
- Unmodified,
- /// Menu completion
- Menu,
- }
-
- impl clap::ValueEnum for CompType {
- fn value_variants<'a>() -> &'a [Self] {
- &[
- Self::Normal,
- Self::Successive,
- Self::Alternatives,
- Self::Unmodified,
- Self::Menu,
- ]
- }
- fn to_possible_value(&self) -> ::std::option::Option<clap::builder::PossibleValue> {
- match self {
- Self::Normal => {
- let value = "9";
- debug_assert_eq!(b'\t'.to_string(), value);
- Some(
- clap::builder::PossibleValue::new(value)
- .alias("normal")
- .help("Normal completion"),
- )
- }
- Self::Successive => {
- let value = "63";
- debug_assert_eq!(b'?'.to_string(), value);
- Some(
- clap::builder::PossibleValue::new(value)
- .alias("successive")
- .help("List completions after successive tabs"),
- )
- }
- Self::Alternatives => {
- let value = "33";
- debug_assert_eq!(b'!'.to_string(), value);
- Some(
- clap::builder::PossibleValue::new(value)
- .alias("alternatives")
- .help("List alternatives on partial word completion"),
- )
- }
- Self::Unmodified => {
- let value = "64";
- debug_assert_eq!(b'@'.to_string(), value);
- Some(
- clap::builder::PossibleValue::new(value)
- .alias("unmodified")
- .help("List completions if the word is not unmodified"),
- )
- }
- Self::Menu => {
- let value = "37";
- debug_assert_eq!(b'%'.to_string(), value);
- Some(
- clap::builder::PossibleValue::new(value)
- .alias("menu")
- .help("Menu completion"),
- )
- }
- }
- }
- }
-
- impl Default for CompType {
- fn default() -> Self {
- Self::Normal
- }
- }
-
- /// Complete the command specified
- pub fn complete(
- cmd: &mut clap::Command,
- args: Vec<std::ffi::OsString>,
- arg_index: usize,
- _comp_type: CompType,
- _trailing_space: bool,
- current_dir: Option<&std::path::Path>,
- ) -> Result<Vec<std::ffi::OsString>, std::io::Error> {
- cmd.build();
-
- let raw_args = clap_lex::RawArgs::new(args.into_iter());
- let mut cursor = raw_args.cursor();
- let mut target_cursor = raw_args.cursor();
- raw_args.seek(
- &mut target_cursor,
- clap_lex::SeekFrom::Start(arg_index as u64),
- );
- // As we loop, `cursor` will always be pointing to the next item
- raw_args.next_os(&mut target_cursor);
-
- // TODO: Multicall support
- if !cmd.is_no_binary_name_set() {
- raw_args.next_os(&mut cursor);
- }
-
- let mut current_cmd = &*cmd;
- let mut pos_index = 1;
- let mut is_escaped = false;
- while let Some(arg) = raw_args.next(&mut cursor) {
- if cursor == target_cursor {
- return complete_arg(&arg, current_cmd, current_dir, pos_index, is_escaped);
- }
-
- debug!("complete::next: Begin parsing '{:?}'", arg.to_value_os(),);
-
- if let Ok(value) = arg.to_value() {
- if let Some(next_cmd) = current_cmd.find_subcommand(value) {
- current_cmd = next_cmd;
- pos_index = 0;
- continue;
- }
- }
-
- if is_escaped {
- pos_index += 1;
- } else if arg.is_escape() {
- is_escaped = true;
- } else if let Some(_long) = arg.to_long() {
- } else if let Some(_short) = arg.to_short() {
- } else {
- pos_index += 1;
- }
- }
-
- Err(std::io::Error::new(
- std::io::ErrorKind::Other,
- "No completion generated",
- ))
- }
-
- fn complete_arg(
- arg: &clap_lex::ParsedArg<'_>,
- cmd: &clap::Command,
- current_dir: Option<&std::path::Path>,
- pos_index: usize,
- is_escaped: bool,
- ) -> Result<Vec<std::ffi::OsString>, std::io::Error> {
- debug!(
- "complete_arg: arg={:?}, cmd={:?}, current_dir={:?}, pos_index={}, is_escaped={}",
- arg,
- cmd.get_name(),
- current_dir,
- pos_index,
- is_escaped
- );
- let mut completions = Vec::new();
-
- if !is_escaped {
- if let Some((flag, value)) = arg.to_long() {
- if let Ok(flag) = flag {
- if let Some(value) = value {
- if let Some(arg) = cmd.get_arguments().find(|a| a.get_long() == Some(flag))
- {
- completions.extend(
- complete_arg_value(value.to_str().ok_or(value), arg, current_dir)
- .into_iter()
- .map(|os| {
- // HACK: Need better `OsStr` manipulation
- format!("--{}={}", flag, os.to_string_lossy()).into()
- }),
- )
- }
- } else {
- completions.extend(
- crate::generator::utils::longs_and_visible_aliases(cmd)
- .into_iter()
- .filter_map(|f| {
- f.starts_with(flag).then(|| format!("--{f}").into())
- }),
- );
- }
- }
- } else if arg.is_escape() || arg.is_stdio() || arg.is_empty() {
- // HACK: Assuming knowledge of is_escape / is_stdio
- completions.extend(
- crate::generator::utils::longs_and_visible_aliases(cmd)
- .into_iter()
- .map(|f| format!("--{f}").into()),
- );
- }
-
- if arg.is_empty() || arg.is_stdio() || arg.is_short() {
- // HACK: Assuming knowledge of is_stdio
- completions.extend(
- crate::generator::utils::shorts_and_visible_aliases(cmd)
- .into_iter()
- // HACK: Need better `OsStr` manipulation
- .map(|f| format!("{}{}", arg.to_value_os().to_string_lossy(), f).into()),
- );
- }
- }
-
- if let Some(positional) = cmd
- .get_positionals()
- .find(|p| p.get_index() == Some(pos_index))
- {
- completions.extend(complete_arg_value(arg.to_value(), positional, current_dir));
- }
-
- if let Ok(value) = arg.to_value() {
- completions.extend(complete_subcommand(value, cmd));
- }
-
- Ok(completions)
- }
-
- fn complete_arg_value(
- value: Result<&str, &OsStr>,
- arg: &clap::Arg,
- current_dir: Option<&std::path::Path>,
- ) -> Vec<OsString> {
- let mut values = Vec::new();
- debug!("complete_arg_value: arg={arg:?}, value={value:?}");
-
- if let Some(possible_values) = crate::generator::utils::possible_values(arg) {
- if let Ok(value) = value {
- values.extend(possible_values.into_iter().filter_map(|p| {
- let name = p.get_name();
- name.starts_with(value).then(|| name.into())
- }));
- }
- } else {
- let value_os = match value {
- Ok(value) => OsStr::new(value),
- Err(value_os) => value_os,
- };
- match arg.get_value_hint() {
- clap::ValueHint::Other => {
- // Should not complete
- }
- clap::ValueHint::Unknown | clap::ValueHint::AnyPath => {
- values.extend(complete_path(value_os, current_dir, |_| true));
- }
- clap::ValueHint::FilePath => {
- values.extend(complete_path(value_os, current_dir, |p| p.is_file()));
- }
- clap::ValueHint::DirPath => {
- values.extend(complete_path(value_os, current_dir, |p| p.is_dir()));
- }
- clap::ValueHint::ExecutablePath => {
- use is_executable::IsExecutable;
- values.extend(complete_path(value_os, current_dir, |p| p.is_executable()));
- }
- clap::ValueHint::CommandName
- | clap::ValueHint::CommandString
- | clap::ValueHint::CommandWithArguments
- | clap::ValueHint::Username
- | clap::ValueHint::Hostname
- | clap::ValueHint::Url
- | clap::ValueHint::EmailAddress => {
- // No completion implementation
- }
- _ => {
- // Safe-ish fallback
- values.extend(complete_path(value_os, current_dir, |_| true));
- }
- }
- values.sort();
- }
-
- values
- }
-
- fn complete_path(
- value_os: &OsStr,
- current_dir: Option<&std::path::Path>,
- is_wanted: impl Fn(&std::path::Path) -> bool,
- ) -> Vec<OsString> {
- let mut completions = Vec::new();
-
- let current_dir = match current_dir {
- Some(current_dir) => current_dir,
- None => {
- // Can't complete without a `current_dir`
- return Vec::new();
- }
- };
- let (existing, prefix) = value_os
- .split_once("\\")
- .unwrap_or((OsStr::new(""), value_os));
- let root = current_dir.join(existing);
- debug!("complete_path: root={root:?}, prefix={prefix:?}");
- let prefix = prefix.to_string_lossy();
-
- for entry in std::fs::read_dir(&root)
- .ok()
- .into_iter()
- .flatten()
- .filter_map(Result::ok)
- {
- let raw_file_name = OsString::from(entry.file_name());
- if !raw_file_name.starts_with(&prefix) {
- continue;
- }
-
- if entry.metadata().map(|m| m.is_dir()).unwrap_or(false) {
- let path = entry.path();
- let mut suggestion = pathdiff::diff_paths(&path, current_dir).unwrap_or(path);
- suggestion.push(""); // Ensure trailing `/`
- completions.push(suggestion.as_os_str().to_owned());
- } else {
- let path = entry.path();
- if is_wanted(&path) {
- let suggestion = pathdiff::diff_paths(&path, current_dir).unwrap_or(path);
- completions.push(suggestion.as_os_str().to_owned());
- }
- }
- }
-
- completions
- }
-
- fn complete_subcommand(value: &str, cmd: &clap::Command) -> Vec<OsString> {
- debug!(
- "complete_subcommand: cmd={:?}, value={:?}",
- cmd.get_name(),
- value
- );
-
- let mut scs = crate::generator::utils::all_subcommands(cmd)
- .into_iter()
- .filter(|x| x.0.starts_with(value))
- .map(|x| OsString::from(&x.0))
- .collect::<Vec<_>>();
- scs.sort();
- scs.dedup();
- scs
- }
-}
diff --git a/vendor/clap_complete/src/dynamic/completer.rs b/vendor/clap_complete/src/dynamic/completer.rs
new file mode 100644
index 000000000..3813e910a
--- /dev/null
+++ b/vendor/clap_complete/src/dynamic/completer.rs
@@ -0,0 +1,341 @@
+use std::ffi::OsStr;
+use std::ffi::OsString;
+
+use clap::builder::StyledStr;
+use clap_lex::OsStrExt as _;
+
+/// Shell-specific completions
+pub trait Completer {
+ /// The recommended file name for the registration code
+ fn file_name(&self, name: &str) -> String;
+ /// Register for completions
+ fn write_registration(
+ &self,
+ name: &str,
+ bin: &str,
+ completer: &str,
+ buf: &mut dyn std::io::Write,
+ ) -> Result<(), std::io::Error>;
+ /// Complete the command
+ fn write_complete(
+ &self,
+ cmd: &mut clap::Command,
+ args: Vec<std::ffi::OsString>,
+ current_dir: Option<&std::path::Path>,
+ buf: &mut dyn std::io::Write,
+ ) -> Result<(), std::io::Error>;
+}
+
+/// Complete the command specified
+pub fn complete(
+ cmd: &mut clap::Command,
+ args: Vec<std::ffi::OsString>,
+ arg_index: usize,
+ current_dir: Option<&std::path::Path>,
+) -> Result<Vec<(std::ffi::OsString, Option<StyledStr>)>, std::io::Error> {
+ cmd.build();
+
+ let raw_args = clap_lex::RawArgs::new(args.into_iter());
+ let mut cursor = raw_args.cursor();
+ let mut target_cursor = raw_args.cursor();
+ raw_args.seek(
+ &mut target_cursor,
+ clap_lex::SeekFrom::Start(arg_index as u64),
+ );
+ // As we loop, `cursor` will always be pointing to the next item
+ raw_args.next_os(&mut target_cursor);
+
+ // TODO: Multicall support
+ if !cmd.is_no_binary_name_set() {
+ raw_args.next_os(&mut cursor);
+ }
+
+ let mut current_cmd = &*cmd;
+ let mut pos_index = 1;
+ let mut is_escaped = false;
+ while let Some(arg) = raw_args.next(&mut cursor) {
+ if cursor == target_cursor {
+ return complete_arg(&arg, current_cmd, current_dir, pos_index, is_escaped);
+ }
+
+ debug!("complete::next: Begin parsing '{:?}'", arg.to_value_os(),);
+
+ if let Ok(value) = arg.to_value() {
+ if let Some(next_cmd) = current_cmd.find_subcommand(value) {
+ current_cmd = next_cmd;
+ pos_index = 1;
+ continue;
+ }
+ }
+
+ if is_escaped {
+ pos_index += 1;
+ } else if arg.is_escape() {
+ is_escaped = true;
+ } else if let Some(_long) = arg.to_long() {
+ } else if let Some(_short) = arg.to_short() {
+ } else {
+ pos_index += 1;
+ }
+ }
+
+ Err(std::io::Error::new(
+ std::io::ErrorKind::Other,
+ "no completion generated",
+ ))
+}
+
+fn complete_arg(
+ arg: &clap_lex::ParsedArg<'_>,
+ cmd: &clap::Command,
+ current_dir: Option<&std::path::Path>,
+ pos_index: usize,
+ is_escaped: bool,
+) -> Result<Vec<(std::ffi::OsString, Option<StyledStr>)>, std::io::Error> {
+ debug!(
+ "complete_arg: arg={:?}, cmd={:?}, current_dir={:?}, pos_index={}, is_escaped={}",
+ arg,
+ cmd.get_name(),
+ current_dir,
+ pos_index,
+ is_escaped
+ );
+ let mut completions = Vec::new();
+
+ if !is_escaped {
+ if let Some((flag, value)) = arg.to_long() {
+ if let Ok(flag) = flag {
+ if let Some(value) = value {
+ if let Some(arg) = cmd.get_arguments().find(|a| a.get_long() == Some(flag)) {
+ completions.extend(
+ complete_arg_value(value.to_str().ok_or(value), arg, current_dir)
+ .into_iter()
+ .map(|(os, help)| {
+ // HACK: Need better `OsStr` manipulation
+ (format!("--{}={}", flag, os.to_string_lossy()).into(), help)
+ }),
+ )
+ }
+ } else {
+ completions.extend(longs_and_visible_aliases(cmd).into_iter().filter_map(
+ |(f, help)| f.starts_with(flag).then(|| (format!("--{f}").into(), help)),
+ ));
+ }
+ }
+ } else if arg.is_escape() || arg.is_stdio() || arg.is_empty() {
+ // HACK: Assuming knowledge of is_escape / is_stdio
+ completions.extend(
+ longs_and_visible_aliases(cmd)
+ .into_iter()
+ .map(|(f, help)| (format!("--{f}").into(), help)),
+ );
+ }
+
+ if arg.is_empty() || arg.is_stdio() || arg.is_short() {
+ let dash_or_arg = if arg.is_empty() {
+ "-".into()
+ } else {
+ arg.to_value_os().to_string_lossy()
+ };
+ // HACK: Assuming knowledge of is_stdio
+ completions.extend(
+ shorts_and_visible_aliases(cmd)
+ .into_iter()
+ // HACK: Need better `OsStr` manipulation
+ .map(|(f, help)| (format!("{}{}", dash_or_arg, f).into(), help)),
+ );
+ }
+ }
+
+ if let Some(positional) = cmd
+ .get_positionals()
+ .find(|p| p.get_index() == Some(pos_index))
+ {
+ completions.extend(complete_arg_value(arg.to_value(), positional, current_dir));
+ }
+
+ if let Ok(value) = arg.to_value() {
+ completions.extend(complete_subcommand(value, cmd));
+ }
+
+ Ok(completions)
+}
+
+fn complete_arg_value(
+ value: Result<&str, &OsStr>,
+ arg: &clap::Arg,
+ current_dir: Option<&std::path::Path>,
+) -> Vec<(OsString, Option<StyledStr>)> {
+ let mut values = Vec::new();
+ debug!("complete_arg_value: arg={arg:?}, value={value:?}");
+
+ if let Some(possible_values) = possible_values(arg) {
+ if let Ok(value) = value {
+ values.extend(possible_values.into_iter().filter_map(|p| {
+ let name = p.get_name();
+ name.starts_with(value)
+ .then(|| (name.into(), p.get_help().cloned()))
+ }));
+ }
+ } else {
+ let value_os = match value {
+ Ok(value) => OsStr::new(value),
+ Err(value_os) => value_os,
+ };
+ match arg.get_value_hint() {
+ clap::ValueHint::Other => {
+ // Should not complete
+ }
+ clap::ValueHint::Unknown | clap::ValueHint::AnyPath => {
+ values.extend(complete_path(value_os, current_dir, |_| true));
+ }
+ clap::ValueHint::FilePath => {
+ values.extend(complete_path(value_os, current_dir, |p| p.is_file()));
+ }
+ clap::ValueHint::DirPath => {
+ values.extend(complete_path(value_os, current_dir, |p| p.is_dir()));
+ }
+ clap::ValueHint::ExecutablePath => {
+ use is_executable::IsExecutable;
+ values.extend(complete_path(value_os, current_dir, |p| p.is_executable()));
+ }
+ clap::ValueHint::CommandName
+ | clap::ValueHint::CommandString
+ | clap::ValueHint::CommandWithArguments
+ | clap::ValueHint::Username
+ | clap::ValueHint::Hostname
+ | clap::ValueHint::Url
+ | clap::ValueHint::EmailAddress => {
+ // No completion implementation
+ }
+ _ => {
+ // Safe-ish fallback
+ values.extend(complete_path(value_os, current_dir, |_| true));
+ }
+ }
+ values.sort();
+ }
+
+ values
+}
+
+fn complete_path(
+ value_os: &OsStr,
+ current_dir: Option<&std::path::Path>,
+ is_wanted: impl Fn(&std::path::Path) -> bool,
+) -> Vec<(OsString, Option<StyledStr>)> {
+ let mut completions = Vec::new();
+
+ let current_dir = match current_dir {
+ Some(current_dir) => current_dir,
+ None => {
+ // Can't complete without a `current_dir`
+ return Vec::new();
+ }
+ };
+ let (existing, prefix) = value_os
+ .split_once("\\")
+ .unwrap_or((OsStr::new(""), value_os));
+ let root = current_dir.join(existing);
+ debug!("complete_path: root={root:?}, prefix={prefix:?}");
+ let prefix = prefix.to_string_lossy();
+
+ for entry in std::fs::read_dir(&root)
+ .ok()
+ .into_iter()
+ .flatten()
+ .filter_map(Result::ok)
+ {
+ let raw_file_name = entry.file_name();
+ if !raw_file_name.starts_with(&prefix) {
+ continue;
+ }
+
+ if entry.metadata().map(|m| m.is_dir()).unwrap_or(false) {
+ let path = entry.path();
+ let mut suggestion = pathdiff::diff_paths(&path, current_dir).unwrap_or(path);
+ suggestion.push(""); // Ensure trailing `/`
+ completions.push((suggestion.as_os_str().to_owned(), None));
+ } else {
+ let path = entry.path();
+ if is_wanted(&path) {
+ let suggestion = pathdiff::diff_paths(&path, current_dir).unwrap_or(path);
+ completions.push((suggestion.as_os_str().to_owned(), None));
+ }
+ }
+ }
+
+ completions
+}
+
+fn complete_subcommand(value: &str, cmd: &clap::Command) -> Vec<(OsString, Option<StyledStr>)> {
+ debug!(
+ "complete_subcommand: cmd={:?}, value={:?}",
+ cmd.get_name(),
+ value
+ );
+
+ let mut scs = subcommands(cmd)
+ .into_iter()
+ .filter(|x| x.0.starts_with(value))
+ .map(|x| (OsString::from(&x.0), x.1))
+ .collect::<Vec<_>>();
+ scs.sort();
+ scs.dedup();
+ scs
+}
+
+/// Gets all the long options, their visible aliases and flags of a [`clap::Command`].
+/// Includes `help` and `version` depending on the [`clap::Command`] settings.
+fn longs_and_visible_aliases(p: &clap::Command) -> Vec<(String, Option<StyledStr>)> {
+ debug!("longs: name={}", p.get_name());
+
+ p.get_arguments()
+ .filter_map(|a| {
+ a.get_long_and_visible_aliases().map(|longs| {
+ longs
+ .into_iter()
+ .map(|s| (s.to_string(), a.get_help().cloned()))
+ })
+ })
+ .flatten()
+ .collect()
+}
+
+/// Gets all the short options, their visible aliases and flags of a [`clap::Command`].
+/// Includes `h` and `V` depending on the [`clap::Command`] settings.
+fn shorts_and_visible_aliases(p: &clap::Command) -> Vec<(char, Option<StyledStr>)> {
+ debug!("shorts: name={}", p.get_name());
+
+ p.get_arguments()
+ .filter_map(|a| {
+ a.get_short_and_visible_aliases()
+ .map(|shorts| shorts.into_iter().map(|s| (s, a.get_help().cloned())))
+ })
+ .flatten()
+ .collect()
+}
+
+/// Get the possible values for completion
+fn possible_values(a: &clap::Arg) -> Option<Vec<clap::builder::PossibleValue>> {
+ if !a.get_num_args().expect("built").takes_values() {
+ None
+ } else {
+ a.get_value_parser()
+ .possible_values()
+ .map(|pvs| pvs.collect())
+ }
+}
+
+/// Gets subcommands of [`clap::Command`] in the form of `("name", "bin_name")`.
+///
+/// Subcommand `rustup toolchain install` would be converted to
+/// `("install", "rustup toolchain install")`.
+fn subcommands(p: &clap::Command) -> Vec<(String, Option<StyledStr>)> {
+ debug!("subcommands: name={}", p.get_name());
+ debug!("subcommands: Has subcommands...{:?}", p.has_subcommands());
+
+ p.get_subcommands()
+ .map(|sc| (sc.get_name().to_string(), sc.get_about().cloned()))
+ .collect()
+}
diff --git a/vendor/clap_complete/src/dynamic/mod.rs b/vendor/clap_complete/src/dynamic/mod.rs
new file mode 100644
index 000000000..f7c985704
--- /dev/null
+++ b/vendor/clap_complete/src/dynamic/mod.rs
@@ -0,0 +1,7 @@
+//! Complete commands within shells
+
+mod completer;
+
+pub mod shells;
+
+pub use completer::*;
diff --git a/vendor/clap_complete/src/dynamic/shells/bash.rs b/vendor/clap_complete/src/dynamic/shells/bash.rs
new file mode 100644
index 000000000..43c128e5b
--- /dev/null
+++ b/vendor/clap_complete/src/dynamic/shells/bash.rs
@@ -0,0 +1,121 @@
+use unicode_xid::UnicodeXID as _;
+
+/// Bash completions
+#[derive(Copy, Clone, PartialEq, Eq, Debug)]
+pub struct Bash;
+
+impl crate::dynamic::Completer for Bash {
+ fn file_name(&self, name: &str) -> String {
+ format!("{name}.bash")
+ }
+ fn write_registration(
+ &self,
+ name: &str,
+ bin: &str,
+ completer: &str,
+ buf: &mut dyn std::io::Write,
+ ) -> Result<(), std::io::Error> {
+ let escaped_name = name.replace('-', "_");
+ debug_assert!(
+ escaped_name.chars().all(|c| c.is_xid_continue()),
+ "`name` must be an identifier, got `{escaped_name}`"
+ );
+ let mut upper_name = escaped_name.clone();
+ upper_name.make_ascii_uppercase();
+
+ let completer = shlex::quote(completer);
+
+ let script = r#"
+_clap_complete_NAME() {
+ export IFS=$'\013'
+ export _CLAP_COMPLETE_INDEX=${COMP_CWORD}
+ export _CLAP_COMPLETE_COMP_TYPE=${COMP_TYPE}
+ if compopt +o nospace 2> /dev/null; then
+ export _CLAP_COMPLETE_SPACE=false
+ else
+ export _CLAP_COMPLETE_SPACE=true
+ fi
+ COMPREPLY=( $("COMPLETER" complete --shell bash -- "${COMP_WORDS[@]}") )
+ if [[ $? != 0 ]]; then
+ unset COMPREPLY
+ elif [[ $SUPPRESS_SPACE == 1 ]] && [[ "${COMPREPLY-}" =~ [=/:]$ ]]; then
+ compopt -o nospace
+ fi
+}
+complete -o nospace -o bashdefault -F _clap_complete_NAME BIN
+"#
+ .replace("NAME", &escaped_name)
+ .replace("BIN", bin)
+ .replace("COMPLETER", &completer)
+ .replace("UPPER", &upper_name);
+
+ writeln!(buf, "{script}")?;
+ Ok(())
+ }
+ fn write_complete(
+ &self,
+ cmd: &mut clap::Command,
+ args: Vec<std::ffi::OsString>,
+ current_dir: Option<&std::path::Path>,
+ buf: &mut dyn std::io::Write,
+ ) -> Result<(), std::io::Error> {
+ let index: usize = std::env::var("_CLAP_COMPLETE_INDEX")
+ .ok()
+ .and_then(|i| i.parse().ok())
+ .unwrap_or_default();
+ let _comp_type: CompType = std::env::var("_CLAP_COMPLETE_COMP_TYPE")
+ .ok()
+ .and_then(|i| i.parse().ok())
+ .unwrap_or_default();
+ let _space: Option<bool> = std::env::var("_CLAP_COMPLETE_SPACE")
+ .ok()
+ .and_then(|i| i.parse().ok());
+ let ifs: Option<String> = std::env::var("IFS").ok().and_then(|i| i.parse().ok());
+ let completions = crate::dynamic::complete(cmd, args, index, current_dir)?;
+
+ for (i, (completion, _)) in completions.iter().enumerate() {
+ if i != 0 {
+ write!(buf, "{}", ifs.as_deref().unwrap_or("\n"))?;
+ }
+ write!(buf, "{}", completion.to_string_lossy())?;
+ }
+ Ok(())
+ }
+}
+
+/// Type of completion attempted that caused a completion function to be called
+#[derive(Copy, Clone, Debug, PartialEq, Eq)]
+#[non_exhaustive]
+enum CompType {
+ /// Normal completion
+ Normal,
+ /// List completions after successive tabs
+ Successive,
+ /// List alternatives on partial word completion
+ Alternatives,
+ /// List completions if the word is not unmodified
+ Unmodified,
+ /// Menu completion
+ Menu,
+}
+
+impl std::str::FromStr for CompType {
+ type Err = String;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ match s {
+ "9" => Ok(Self::Normal),
+ "63" => Ok(Self::Successive),
+ "33" => Ok(Self::Alternatives),
+ "64" => Ok(Self::Unmodified),
+ "37" => Ok(Self::Menu),
+ _ => Err(format!("unsupported COMP_TYPE `{}`", s)),
+ }
+ }
+}
+
+impl Default for CompType {
+ fn default() -> Self {
+ Self::Normal
+ }
+}
diff --git a/vendor/clap_complete/src/dynamic/shells/fish.rs b/vendor/clap_complete/src/dynamic/shells/fish.rs
new file mode 100644
index 000000000..9d7e8c684
--- /dev/null
+++ b/vendor/clap_complete/src/dynamic/shells/fish.rs
@@ -0,0 +1,46 @@
+/// Fish completions
+#[derive(Copy, Clone, PartialEq, Eq, Debug)]
+pub struct Fish;
+
+impl crate::dynamic::Completer for Fish {
+ fn file_name(&self, name: &str) -> String {
+ format!("{name}.fish")
+ }
+ fn write_registration(
+ &self,
+ _name: &str,
+ bin: &str,
+ completer: &str,
+ buf: &mut dyn std::io::Write,
+ ) -> Result<(), std::io::Error> {
+ let bin = shlex::quote(bin);
+ let completer = shlex::quote(completer);
+ writeln!(
+ buf,
+ r#"complete -x -c {bin} -a "("'{completer}'" complete --shell fish -- (commandline --current-process --tokenize --cut-at-cursor) (commandline --current-token))""#
+ )
+ }
+ fn write_complete(
+ &self,
+ cmd: &mut clap::Command,
+ args: Vec<std::ffi::OsString>,
+ current_dir: Option<&std::path::Path>,
+ buf: &mut dyn std::io::Write,
+ ) -> Result<(), std::io::Error> {
+ let index = args.len() - 1;
+ let completions = crate::dynamic::complete(cmd, args, index, current_dir)?;
+
+ for (completion, help) in completions {
+ write!(buf, "{}", completion.to_string_lossy())?;
+ if let Some(help) = help {
+ write!(
+ buf,
+ "\t{}",
+ help.to_string().lines().next().unwrap_or_default()
+ )?;
+ }
+ writeln!(buf)?;
+ }
+ Ok(())
+ }
+}
diff --git a/vendor/clap_complete/src/dynamic/shells/mod.rs b/vendor/clap_complete/src/dynamic/shells/mod.rs
new file mode 100644
index 000000000..54d23a3d4
--- /dev/null
+++ b/vendor/clap_complete/src/dynamic/shells/mod.rs
@@ -0,0 +1,82 @@
+//! Shell support
+
+mod bash;
+mod fish;
+mod shell;
+
+pub use bash::*;
+pub use fish::*;
+pub use shell::*;
+
+use std::ffi::OsString;
+use std::io::Write as _;
+
+use crate::dynamic::Completer as _;
+
+#[derive(clap::Subcommand)]
+#[allow(missing_docs)]
+#[derive(Clone, Debug)]
+pub enum CompleteCommand {
+ /// Register shell completions for this program
+ #[command(hide = true)]
+ Complete(CompleteArgs),
+}
+
+#[derive(clap::Args)]
+#[command(arg_required_else_help = true)]
+#[command(group = clap::ArgGroup::new("complete").multiple(true).conflicts_with("register"))]
+#[allow(missing_docs)]
+#[derive(Clone, Debug)]
+pub struct CompleteArgs {
+ /// Specify shell to complete for
+ #[arg(long)]
+ shell: Shell,
+
+ /// Path to write completion-registration to
+ #[arg(long, required = true)]
+ register: Option<std::path::PathBuf>,
+
+ #[arg(raw = true, hide_short_help = true, group = "complete")]
+ comp_words: Vec<OsString>,
+}
+
+impl CompleteCommand {
+ /// Process the completion request
+ pub fn complete(&self, cmd: &mut clap::Command) -> std::convert::Infallible {
+ self.try_complete(cmd).unwrap_or_else(|e| e.exit());
+ std::process::exit(0)
+ }
+
+ /// Process the completion request
+ pub fn try_complete(&self, cmd: &mut clap::Command) -> clap::error::Result<()> {
+ debug!("CompleteCommand::try_complete: {self:?}");
+ let CompleteCommand::Complete(args) = self;
+ if let Some(out_path) = args.register.as_deref() {
+ let mut buf = Vec::new();
+ let name = cmd.get_name();
+ let bin = cmd.get_bin_name().unwrap_or_else(|| cmd.get_name());
+ args.shell.write_registration(name, bin, bin, &mut buf)?;
+ if out_path == std::path::Path::new("-") {
+ std::io::stdout().write_all(&buf)?;
+ } else if out_path.is_dir() {
+ let out_path = out_path.join(args.shell.file_name(name));
+ std::fs::write(out_path, buf)?;
+ } else {
+ std::fs::write(out_path, buf)?;
+ }
+ } else {
+ let current_dir = std::env::current_dir().ok();
+
+ let mut buf = Vec::new();
+ args.shell.write_complete(
+ cmd,
+ args.comp_words.clone(),
+ current_dir.as_deref(),
+ &mut buf,
+ )?;
+ std::io::stdout().write_all(&buf)?;
+ }
+
+ Ok(())
+ }
+}
diff --git a/vendor/clap_complete/src/dynamic/shells/shell.rs b/vendor/clap_complete/src/dynamic/shells/shell.rs
new file mode 100644
index 000000000..a9f48cee9
--- /dev/null
+++ b/vendor/clap_complete/src/dynamic/shells/shell.rs
@@ -0,0 +1,85 @@
+use std::fmt::Display;
+use std::str::FromStr;
+
+use clap::builder::PossibleValue;
+use clap::ValueEnum;
+
+/// Shell with auto-generated completion script available.
+#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
+#[non_exhaustive]
+pub enum Shell {
+ /// Bourne Again SHell (bash)
+ Bash,
+ /// Friendly Interactive SHell (fish)
+ Fish,
+}
+
+impl Display for Shell {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ self.to_possible_value()
+ .expect("no values are skipped")
+ .get_name()
+ .fmt(f)
+ }
+}
+
+impl FromStr for Shell {
+ type Err = String;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ for variant in Self::value_variants() {
+ if variant.to_possible_value().unwrap().matches(s, false) {
+ return Ok(*variant);
+ }
+ }
+ Err(format!("invalid variant: {s}"))
+ }
+}
+
+// Hand-rolled so it can work even when `derive` feature is disabled
+impl ValueEnum for Shell {
+ fn value_variants<'a>() -> &'a [Self] {
+ &[Shell::Bash, Shell::Fish]
+ }
+
+ fn to_possible_value<'a>(&self) -> Option<PossibleValue> {
+ Some(match self {
+ Shell::Bash => PossibleValue::new("bash"),
+ Shell::Fish => PossibleValue::new("fish"),
+ })
+ }
+}
+
+impl Shell {
+ fn completer(&self) -> &dyn crate::dynamic::Completer {
+ match self {
+ Self::Bash => &super::Bash,
+ Self::Fish => &super::Fish,
+ }
+ }
+}
+
+impl crate::dynamic::Completer for Shell {
+ fn file_name(&self, name: &str) -> String {
+ self.completer().file_name(name)
+ }
+ fn write_registration(
+ &self,
+ name: &str,
+ bin: &str,
+ completer: &str,
+ buf: &mut dyn std::io::Write,
+ ) -> Result<(), std::io::Error> {
+ self.completer()
+ .write_registration(name, bin, completer, buf)
+ }
+ fn write_complete(
+ &self,
+ cmd: &mut clap::Command,
+ args: Vec<std::ffi::OsString>,
+ current_dir: Option<&std::path::Path>,
+ buf: &mut dyn std::io::Write,
+ ) -> Result<(), std::io::Error> {
+ self.completer().write_complete(cmd, args, current_dir, buf)
+ }
+}
diff --git a/vendor/clap_complete/src/shells/bash.rs b/vendor/clap_complete/src/shells/bash.rs
index 60e6b346c..2a97e1de2 100644
--- a/vendor/clap_complete/src/shells/bash.rs
+++ b/vendor/clap_complete/src/shells/bash.rs
@@ -58,7 +58,7 @@ impl Generator for Bash {
esac
}}
-complete -F _{name} -o bashdefault -o default {name}
+complete -F _{name} -o nosort -o bashdefault -o default {name}
",
name = bin_name,
cmd = bin_name.replace('-', "__"),
diff --git a/vendor/clap_complete/src/shells/fish.rs b/vendor/clap_complete/src/shells/fish.rs
index 5a069d35b..7dae5b6d6 100644
--- a/vendor/clap_complete/src/shells/fish.rs
+++ b/vendor/clap_complete/src/shells/fish.rs
@@ -168,10 +168,12 @@ fn value_completion(option: &Arg) -> String {
.filter_map(|value| if value.is_hide_set() {
None
} else {
+ // The help text after \t is wrapped in '' to make sure that the it is taken literally
+ // and there is no command substitution or variable expansion resulting in unexpected errors
Some(format!(
- "{}\t{}",
+ "{}\t'{}'",
escape_string(value.get_name(), true).as_str(),
- escape_string(&value.get_help().unwrap_or_default().to_string(), true)
+ escape_string(&value.get_help().unwrap_or_default().to_string(), false)
))
})
.collect::<Vec<_>>()
diff --git a/vendor/clap_complete/src/shells/powershell.rs b/vendor/clap_complete/src/shells/powershell.rs
index 417facf70..6b09b2e3a 100644
--- a/vendor/clap_complete/src/shells/powershell.rs
+++ b/vendor/clap_complete/src/shells/powershell.rs
@@ -124,7 +124,9 @@ fn generate_aliases(completions: &mut String, preamble: &String, arg: &Arg) {
for alias in aliases {
let _ = write!(
completions,
- "{preamble}'-{alias}', '{alias}', [CompletionResultType]::ParameterName, '{tooltip}')"
+ "{preamble}'-{alias}', '{alias}{}', [CompletionResultType]::ParameterName, '{tooltip}')",
+ // make PowerShell realize there is a difference between `-s` and `-S`
+ if alias.is_uppercase() { " " } else { "" },
);
}
}
diff --git a/vendor/clap_derive/.cargo-checksum.json b/vendor/clap_derive/.cargo-checksum.json
index eafc6fa50..98ff2f6c4 100644
--- a/vendor/clap_derive/.cargo-checksum.json
+++ b/vendor/clap_derive/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"5e8f33f26ee81eac9aec9b5e185e72a410e70161913f15e1c3807ba3f603c8bd","LICENSE-APACHE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","LICENSE-MIT":"0d687e1f07b58fe68bda74668ff6326125e5e5efa184cce755cd84ac535b7058","README.md":"425bac05c6433fcda018d78beae9543e4421b2d715a459f5bdef67a927574991","src/attr.rs":"ad973925fdeef693ac1eb31b84f57d4860507e3d39bb00ca2c73b4a362245936","src/derives/args.rs":"88cf3c80101b4f93291d6f972582ba6f2bf60d9650b7fbff448122166e7282fd","src/derives/into_app.rs":"fa721689fd8a53e6f7b320644356007cd65fabea689a445e2eaf5e3638e7580a","src/derives/mod.rs":"ff7947fddee4b3d8365e29459a02458382e13df022aee822e09bce1ac255d3bb","src/derives/parser.rs":"a2d4bfbc6b794f9d0c79d3c0228464097135398988a29991f3b8f287e2e5e19f","src/derives/subcommand.rs":"4c0103cd781093b0ac63dcfe7082fc3f98880d2200d2fa63751bb396dc5ff7ff","src/derives/value_enum.rs":"7357f8967c776c9ca98680dc6ee2b4cdbec56fe730d9c4b4582c86ba1f5c5f9e","src/dummies.rs":"71938428ae479a7fa0e9b919434385202bb4f09620a329e4ffc7a742fc0ee706","src/item.rs":"0eb31936875055d6484cf6f72d5d60bdf80e5961f39b2c027f048ca94c27018f","src/lib.rs":"887dec4b7de56101551ef9f7a3b4856ae7764e9ea073c2b935171bd42cb8b4d0","src/macros.rs":"3f60c5673c005548bbcd47f84e1f0fc6d1fb190d467681c3d9c52014bb4c6d36","src/utils/doc_comments.rs":"e986ad438add0684b961d072855cab822765d88aa7268484719e883f3d57ee21","src/utils/error.rs":"ac1ac681e5660044b8ad7420f98ed31ad5cf564f83a3e60673d03fb0e5da13d6","src/utils/mod.rs":"76c2dfb6801155f2354fd752407f2b3a26ec404a45e11a7de02db7b4e664f345","src/utils/spanned.rs":"39f7fb9bda1a2c56c358ab60a23d459fffd913b966b819160fae8ae2f7f20075","src/utils/ty.rs":"c8e9cb8b46e514e3a189dadf1d2c2741ca1469049b2d40b5fa72b83689d37c6f"},"package":"0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873"} \ No newline at end of file
+{"files":{"Cargo.toml":"b45ad55c4fbcc8b2c5db29c4145ec7a13a391786466fb44ddfbf5204bd37c41a","LICENSE-APACHE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","LICENSE-MIT":"0d687e1f07b58fe68bda74668ff6326125e5e5efa184cce755cd84ac535b7058","README.md":"425bac05c6433fcda018d78beae9543e4421b2d715a459f5bdef67a927574991","src/attr.rs":"ad973925fdeef693ac1eb31b84f57d4860507e3d39bb00ca2c73b4a362245936","src/derives/args.rs":"69b9033bf0a632b36a5ce49468465dca529c74d2acd62e91cb136382c5c1dbed","src/derives/into_app.rs":"ef1964e386515cdad095231ad2a7e2914a364c76b1893ee08b00605af4d6b7b1","src/derives/mod.rs":"ff7947fddee4b3d8365e29459a02458382e13df022aee822e09bce1ac255d3bb","src/derives/parser.rs":"371fe5774fd5015f7c283e8a46abd8d4ff6894e52d6cc38fb9737c106db0e4c0","src/derives/subcommand.rs":"6cf078f65d2b05850511f9b8733c7241fc85edc4ab0198115adf19c5920b5e1c","src/derives/value_enum.rs":"c05b99628737342957797ff55fce146ef89c4a0b4863432eb0706627738624f1","src/dummies.rs":"71938428ae479a7fa0e9b919434385202bb4f09620a329e4ffc7a742fc0ee706","src/item.rs":"0eb31936875055d6484cf6f72d5d60bdf80e5961f39b2c027f048ca94c27018f","src/lib.rs":"887dec4b7de56101551ef9f7a3b4856ae7764e9ea073c2b935171bd42cb8b4d0","src/macros.rs":"3f60c5673c005548bbcd47f84e1f0fc6d1fb190d467681c3d9c52014bb4c6d36","src/utils/doc_comments.rs":"e986ad438add0684b961d072855cab822765d88aa7268484719e883f3d57ee21","src/utils/error.rs":"ac1ac681e5660044b8ad7420f98ed31ad5cf564f83a3e60673d03fb0e5da13d6","src/utils/mod.rs":"76c2dfb6801155f2354fd752407f2b3a26ec404a45e11a7de02db7b4e664f345","src/utils/spanned.rs":"39f7fb9bda1a2c56c358ab60a23d459fffd913b966b819160fae8ae2f7f20075","src/utils/ty.rs":"c8e9cb8b46e514e3a189dadf1d2c2741ca1469049b2d40b5fa72b83689d37c6f"},"package":"cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442"} \ No newline at end of file
diff --git a/vendor/clap_derive/Cargo.toml b/vendor/clap_derive/Cargo.toml
index 2c82923a4..67663eec5 100644
--- a/vendor/clap_derive/Cargo.toml
+++ b/vendor/clap_derive/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.70.0"
name = "clap_derive"
-version = "4.4.2"
+version = "4.4.7"
include = [
"build.rs",
"src/**/*",
diff --git a/vendor/clap_derive/src/derives/args.rs b/vendor/clap_derive/src/derives/args.rs
index 20164ff2e..279f6ca0d 100644
--- a/vendor/clap_derive/src/derives/args.rs
+++ b/vendor/clap_derive/src/derives/args.rs
@@ -104,6 +104,7 @@ pub fn gen_for_struct(
clippy::cargo,
clippy::suspicious_else_formatting,
clippy::almost_swapped,
+ clippy::redundant_locals,
)]
#[automatically_derived]
impl #impl_generics clap::FromArgMatches for #item_name #ty_generics #where_clause {
@@ -146,6 +147,7 @@ pub fn gen_for_struct(
clippy::cargo,
clippy::suspicious_else_formatting,
clippy::almost_swapped,
+ clippy::redundant_locals,
)]
#[automatically_derived]
impl #impl_generics clap::Args for #item_name #ty_generics #where_clause {
diff --git a/vendor/clap_derive/src/derives/into_app.rs b/vendor/clap_derive/src/derives/into_app.rs
index 0bd636245..5abf4ea6d 100644
--- a/vendor/clap_derive/src/derives/into_app.rs
+++ b/vendor/clap_derive/src/derives/into_app.rs
@@ -47,6 +47,7 @@ pub fn gen_for_struct(
clippy::cargo,
clippy::suspicious_else_formatting,
clippy::almost_swapped,
+ clippy::redundant_locals,
)]
#[automatically_derived]
impl #impl_generics clap::CommandFactory for #item_name #ty_generics #where_clause {
@@ -94,6 +95,7 @@ pub fn gen_for_enum(
clippy::cargo,
clippy::suspicious_else_formatting,
clippy::almost_swapped,
+ clippy::redundant_locals,
)]
#[automatically_derived]
impl #impl_generics clap::CommandFactory for #item_name #ty_generics #where_clause {
diff --git a/vendor/clap_derive/src/derives/parser.rs b/vendor/clap_derive/src/derives/parser.rs
index 272948b63..e511bda05 100644
--- a/vendor/clap_derive/src/derives/parser.rs
+++ b/vendor/clap_derive/src/derives/parser.rs
@@ -89,6 +89,7 @@ fn gen_for_struct(
#[automatically_derived]
#[allow(
unused_qualifications,
+ clippy::redundant_locals,
)]
impl #impl_generics clap::Parser for #item_name #ty_generics #where_clause {}
diff --git a/vendor/clap_derive/src/derives/subcommand.rs b/vendor/clap_derive/src/derives/subcommand.rs
index 125a40f61..da438d328 100644
--- a/vendor/clap_derive/src/derives/subcommand.rs
+++ b/vendor/clap_derive/src/derives/subcommand.rs
@@ -84,6 +84,7 @@ pub fn gen_for_enum(
clippy::cargo,
clippy::suspicious_else_formatting,
clippy::almost_swapped,
+ clippy::redundant_locals,
)]
#[automatically_derived]
impl #impl_generics clap::FromArgMatches for #item_name #ty_generics #where_clause {
@@ -117,6 +118,7 @@ pub fn gen_for_enum(
clippy::cargo,
clippy::suspicious_else_formatting,
clippy::almost_swapped,
+ clippy::redundant_locals,
)]
#[automatically_derived]
impl #impl_generics clap::Subcommand for #item_name #ty_generics #where_clause {
diff --git a/vendor/clap_derive/src/derives/value_enum.rs b/vendor/clap_derive/src/derives/value_enum.rs
index 397eb3323..c0e043481 100644
--- a/vendor/clap_derive/src/derives/value_enum.rs
+++ b/vendor/clap_derive/src/derives/value_enum.rs
@@ -69,6 +69,7 @@ pub fn gen_for_enum(
clippy::cargo,
clippy::suspicious_else_formatting,
clippy::almost_swapped,
+ clippy::redundant_locals,
)]
#[automatically_derived]
impl clap::ValueEnum for #item_name {
diff --git a/vendor/clap_lex/.cargo-checksum.json b/vendor/clap_lex/.cargo-checksum.json
index 25c2e4c4a..d154bda49 100644
--- a/vendor/clap_lex/.cargo-checksum.json
+++ b/vendor/clap_lex/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"b0a0a9111e2a86bb007b835e8480b5d132b0291699156adc9ed2fd2967e3da43","LICENSE-APACHE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","LICENSE-MIT":"0d687e1f07b58fe68bda74668ff6326125e5e5efa184cce755cd84ac535b7058","README.md":"cf2d9c398038ce33c6ee39aac0aff84c550e041a4b5a79dc9c95258e2f416e3a","src/ext.rs":"f16c249c340d3c42aa566f2ff279878f807cbc74f17de19dc388f8ab352f8f1d","src/lib.rs":"db7106a744428be0915f94f4c053d04c5dd5332a1f8f57ca54a5aa7d566bae47"},"package":"2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b"} \ No newline at end of file
+{"files":{"Cargo.toml":"84a1a0e3c1e608ba7f120659c895dda038d727d654f3f454b1ab6d516c3a8e3e","LICENSE-APACHE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","LICENSE-MIT":"0d687e1f07b58fe68bda74668ff6326125e5e5efa184cce755cd84ac535b7058","README.md":"27a4b2cc30f5cf707c0d1c8a5e115ab695e750e44b70b51191413021237abfee","src/ext.rs":"f16c249c340d3c42aa566f2ff279878f807cbc74f17de19dc388f8ab352f8f1d","src/lib.rs":"c9996067be89f93bd7da29d64b4565c472de25ae5e1e2b40a4d05b9639f07237"},"package":"702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1"} \ No newline at end of file
diff --git a/vendor/clap_lex/Cargo.toml b/vendor/clap_lex/Cargo.toml
index 8b2791423..a1680fbfe 100644
--- a/vendor/clap_lex/Cargo.toml
+++ b/vendor/clap_lex/Cargo.toml
@@ -11,9 +11,9 @@
[package]
edition = "2021"
-rust-version = "1.64.0"
+rust-version = "1.70.0"
name = "clap_lex"
-version = "0.5.0"
+version = "0.6.0"
include = [
"build.rs",
"src/**/*",
diff --git a/vendor/clap_lex/README.md b/vendor/clap_lex/README.md
index 5d97fc4d3..17a40c38d 100644
--- a/vendor/clap_lex/README.md
+++ b/vendor/clap_lex/README.md
@@ -5,15 +5,15 @@
[![Crates.io](https://img.shields.io/crates/v/clap_lex?style=flat-square)](https://crates.io/crates/clap_lex)
[![Crates.io](https://img.shields.io/crates/d/clap_lex?style=flat-square)](https://crates.io/crates/clap_lex)
-[![License](https://img.shields.io/badge/license-Apache%202.0-blue?style=flat-square)](https://github.com/clap-rs/clap/blob/clap_lex-v0.5.0/LICENSE-APACHE)
-[![License](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](https://github.com/clap-rs/clap/blob/clap_lex-v0.5.0/LICENSE-MIT)
+[![License](https://img.shields.io/badge/license-Apache%202.0-blue?style=flat-square)](https://github.com/clap-rs/clap/blob/clap_lex-v0.6.0/LICENSE-APACHE)
+[![License](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](https://github.com/clap-rs/clap/blob/clap_lex-v0.6.0/LICENSE-MIT)
Dual-licensed under [Apache 2.0](LICENSE-APACHE) or [MIT](LICENSE-MIT).
1. [About](#about)
2. [API Reference](https://docs.rs/clap_lex)
3. [Questions & Discussions](https://github.com/clap-rs/clap/discussions)
-4. [CONTRIBUTING](https://github.com/clap-rs/clap/blob/clap_lex-v0.5.0/clap_lex/CONTRIBUTING.md)
-5. [Sponsors](https://github.com/clap-rs/clap/blob/clap_lex-v0.5.0/README.md#sponsors)
+4. [CONTRIBUTING](https://github.com/clap-rs/clap/blob/clap_lex-v0.6.0/clap_lex/CONTRIBUTING.md)
+5. [Sponsors](https://github.com/clap-rs/clap/blob/clap_lex-v0.6.0/README.md#sponsors)
## About
diff --git a/vendor/clap_lex/src/lib.rs b/vendor/clap_lex/src/lib.rs
index d519a10c5..581595a2c 100644
--- a/vendor/clap_lex/src/lib.rs
+++ b/vendor/clap_lex/src/lib.rs
@@ -300,10 +300,14 @@ impl<'s> ParsedArg<'s> {
self.inner == "--"
}
- /// Does the argument look like a number
- pub fn is_number(&self) -> bool {
+ /// Does the argument look like a negative number?
+ ///
+ /// This won't parse the number in full but attempts to see if this looks
+ /// like something along the lines of `-3`, `-0.3`, or `-33.03`
+ pub fn is_negative_number(&self) -> bool {
self.to_value()
- .map(|s| s.parse::<f64>().is_ok())
+ .ok()
+ .and_then(|s| Some(is_number(s.strip_prefix('-')?)))
.unwrap_or_default()
}
@@ -408,8 +412,8 @@ impl<'s> ShortFlags<'s> {
/// Does the short flag look like a number
///
/// Ideally call this before doing any iterator
- pub fn is_number(&self) -> bool {
- self.invalid_suffix.is_none() && self.utf8_prefix.as_str().parse::<f64>().is_ok()
+ pub fn is_negative_number(&self) -> bool {
+ self.invalid_suffix.is_none() && is_number(self.utf8_prefix.as_str())
}
/// Advance the iterator, returning the next short flag on success
@@ -466,3 +470,35 @@ fn split_nonutf8_once(b: &OsStr) -> (&str, Option<&OsStr>) {
}
}
}
+
+fn is_number(arg: &str) -> bool {
+ // Return true if this looks like an integer or a float where it's all
+ // digits plus an optional single dot after some digits.
+ //
+ // For floats allow forms such as `1.`, `1.2`, `1.2e10`, etc.
+ let mut seen_dot = false;
+ let mut position_of_e = None;
+ for (i, c) in arg.as_bytes().iter().enumerate() {
+ match c {
+ // Digits are always valid
+ b'0'..=b'9' => {}
+
+ // Allow a `.`, but only one, only if it comes before an
+ // optional exponent, and only if it's not the first character.
+ b'.' if !seen_dot && position_of_e.is_none() && i > 0 => seen_dot = true,
+
+ // Allow an exponent `e` but only at most one after the first
+ // character.
+ b'e' if position_of_e.is_none() && i > 0 => position_of_e = Some(i),
+
+ _ => return false,
+ }
+ }
+
+ // Disallow `-1e` which isn't a valid float since it doesn't actually have
+ // an exponent.
+ match position_of_e {
+ Some(i) => i != arg.len() - 1,
+ None => true,
+ }
+}
diff --git a/vendor/color-print-proc-macro/.cargo-checksum.json b/vendor/color-print-proc-macro/.cargo-checksum.json
index 2499f5c8d..96b602e99 100644
--- a/vendor/color-print-proc-macro/.cargo-checksum.json
+++ b/vendor/color-print-proc-macro/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"8ac4063e0ac255132c5e99f2fa6941bf2ea6ddd0946ce356855bc9f25d77a221","README.md":"9a5ff8085236dba1ae98af8f79a14edee3a39783e5a85cdb6112e4ce17ddf6e8","src/ansi.rs":"4766888c2c7167e3697a880aebdc240fb275a997b7e8d586fa4b4adad4133576","src/ansi_constants.rs":"f51a2d843a5f6b83074a013264c2d40973033c9467ee8e1dcac0f3e99cf8e93f","src/color_context.rs":"bbf63024d21f49e2fe405af0ffe5e915c2aa96dd4db4e88e43d613c797733671","src/error.rs":"8fbbc47be0eecff0fbf02da79bb43adaa95e6c01dd8260f38739919b1e58b22e","src/format_args/format_arg.rs":"7ae199222f4ba96dca6b9e8b4f67dd41bbbde7b93906bb4c2c9e57d4104aaae8","src/format_args/mod.rs":"a192c44403db996f73e6647cef6884c5d692162629da7969bd6187780934a855","src/lib.rs":"0ab03fcb5a2e4216eaa96c771004992386d1e33915adb0ae54426dae9404a3e3","src/parse/color_tag.rs":"84a9329c574349a802de1fd103992a71fbbbd76bda254be70bd7a142f30a98d8","src/parse/mod.rs":"85427cffa6ebf0b2c55b30c0d78c54dc25b89deb5d64f0af76a285fd59f1d6a7","src/parse/nom_prelude.rs":"d3760f485a8334879c6684fdf5a60c71ac57f2255759a23a002b6da1de5b6c9e","src/parse/types.rs":"9ea58a095971453c5a3695578df66682f5513c6e33ea788f53fb320680838435","src/parse/util.rs":"08d8804fbd303c965dbb7a969d3be3c04d3d4758c7d167a6748b116a25f779dd","src/terminfo.rs":"18ef9f9188e7bafda3e4354a5b10271ff02465664183cb55218f6d5eca58c411","src/untagged.rs":"9afcd21a23ee237d35adbf6622e3d41c3ddb0e12f2084a260596241217c7fc4b","src/util.rs":"f1c8ce8fdddaf90333eee57f15682132c7e00549841a3e717cf9b13a3f3e704a"},"package":"d51beaa537d73d2d1ff34ee70bc095f170420ab2ec5d687ecd3ec2b0d092514b"} \ No newline at end of file
+{"files":{"Cargo.toml":"061da5fda8b6b12cff16f15f9564f27fe5959b46b43e5eaa9dc527e6fa17bb32","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"9a5ff8085236dba1ae98af8f79a14edee3a39783e5a85cdb6112e4ce17ddf6e8","src/ansi.rs":"4766888c2c7167e3697a880aebdc240fb275a997b7e8d586fa4b4adad4133576","src/ansi_constants.rs":"f51a2d843a5f6b83074a013264c2d40973033c9467ee8e1dcac0f3e99cf8e93f","src/color_context.rs":"bbf63024d21f49e2fe405af0ffe5e915c2aa96dd4db4e88e43d613c797733671","src/error.rs":"8fbbc47be0eecff0fbf02da79bb43adaa95e6c01dd8260f38739919b1e58b22e","src/format_args/format_arg.rs":"7ae199222f4ba96dca6b9e8b4f67dd41bbbde7b93906bb4c2c9e57d4104aaae8","src/format_args/mod.rs":"a192c44403db996f73e6647cef6884c5d692162629da7969bd6187780934a855","src/lib.rs":"702e8fd5a0bc34c674b73de3e4916608e4b744b7dabf3e7c9ba8ea74eb7d90d6","src/parse/color_tag.rs":"84a9329c574349a802de1fd103992a71fbbbd76bda254be70bd7a142f30a98d8","src/parse/mod.rs":"85427cffa6ebf0b2c55b30c0d78c54dc25b89deb5d64f0af76a285fd59f1d6a7","src/parse/nom_prelude.rs":"d3760f485a8334879c6684fdf5a60c71ac57f2255759a23a002b6da1de5b6c9e","src/parse/types.rs":"9ea58a095971453c5a3695578df66682f5513c6e33ea788f53fb320680838435","src/parse/util.rs":"08d8804fbd303c965dbb7a969d3be3c04d3d4758c7d167a6748b116a25f779dd","src/terminfo.rs":"18ef9f9188e7bafda3e4354a5b10271ff02465664183cb55218f6d5eca58c411","src/untagged.rs":"1bebefce8aae0b2cca8dc641a1bb532f918e2f4c4d61912a032f0819f04b496b","src/util.rs":"f1c8ce8fdddaf90333eee57f15682132c7e00549841a3e717cf9b13a3f3e704a"},"package":"57e37866456a721d0a404439a1adae37a31be4e0055590d053dfe6981e05003f"} \ No newline at end of file
diff --git a/vendor/color-print-proc-macro/Cargo.toml b/vendor/color-print-proc-macro/Cargo.toml
index 0cada3be6..3132a3b17 100644
--- a/vendor/color-print-proc-macro/Cargo.toml
+++ b/vendor/color-print-proc-macro/Cargo.toml
@@ -12,12 +12,12 @@
[package]
edition = "2018"
name = "color-print-proc-macro"
-version = "0.3.4"
+version = "0.3.5"
authors = ["Johann David <johann.david.dev@protonmail.com>"]
description = "Implementation for the package color-print"
readme = "README.md"
license = "MIT OR Apache-2.0"
-repository = "https://gitlab.com/yolenoyer/color-print"
+repository = "https://gitlab.com/dajoha/color-print"
[lib]
proc-macro = true
diff --git a/vendor/color-print-proc-macro/LICENSE-APACHE b/vendor/color-print-proc-macro/LICENSE-APACHE
new file mode 100644
index 000000000..1b5ec8b78
--- /dev/null
+++ b/vendor/color-print-proc-macro/LICENSE-APACHE
@@ -0,0 +1,176 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
diff --git a/vendor/io-lifetimes/LICENSE-MIT b/vendor/color-print-proc-macro/LICENSE-MIT
index 31aa79387..31aa79387 100644
--- a/vendor/io-lifetimes/LICENSE-MIT
+++ b/vendor/color-print-proc-macro/LICENSE-MIT
diff --git a/vendor/color-print-proc-macro/src/lib.rs b/vendor/color-print-proc-macro/src/lib.rs
index 51d8c5f30..6f60056ab 100644
--- a/vendor/color-print-proc-macro/src/lib.rs
+++ b/vendor/color-print-proc-macro/src/lib.rs
@@ -87,7 +87,8 @@ pub fn cprintln(input: TokenStream) -> TokenStream {
/// Colorizes a string literal, without formatting the `format!`-like placeholders.
///
-/// Accepts only one argument.
+/// * Accepts only one argument;
+/// * Will panic if feature `terminfo` is activated.
///
/// #### Example
///
@@ -122,6 +123,16 @@ pub fn untagged(input: TokenStream) -> TokenStream {
.into()
}
+/// Colorizes a string literal, without formatting the `format!`-like placeholders.
+///
+/// * Accepts only one argument;
+/// * Will panic if feature `terminfo` is activated.
+#[cfg(feature = "terminfo")]
+#[proc_macro]
+pub fn cstr(_: TokenStream) -> TokenStream {
+ panic!("Macro cstr!() cannot be used with terminfo feature")
+}
+
/// Renders a whole processed macro.
fn get_macro(macro_name: &str, input: TokenStream) -> TokenStream {
#[cfg(not(feature = "terminfo"))]
diff --git a/vendor/color-print-proc-macro/src/untagged.rs b/vendor/color-print-proc-macro/src/untagged.rs
index feaa7edda..4e7ec4255 100644
--- a/vendor/color-print-proc-macro/src/untagged.rs
+++ b/vendor/color-print-proc-macro/src/untagged.rs
@@ -1,4 +1,4 @@
-//! Implements the [`untagged!()`] proc macro.
+//! Implements the [`crate::untagged!()`] proc macro.
use proc_macro::TokenStream;
use proc_macro2::TokenStream as TokenStream2;
diff --git a/vendor/color-print/.cargo-checksum.json b/vendor/color-print/.cargo-checksum.json
index 871d737ec..61950cc41 100644
--- a/vendor/color-print/.cargo-checksum.json
+++ b/vendor/color-print/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"97eb241a94d6f8a01f4d50ed811f69eef330ee6b6f03dd5d51d64f8efab2a229","README.md":"09328783ec3cb27264a3e680ce47ac2526ccb1d7f477660426c44ba4dee8dcf2","src/lib.rs":"f54df22e565638b204adf93385728cba2d4fa049b8ef4e92d03f7f02a5aafcf1","src/terminfo/color.rs":"2e107814075997bb2c5f62c35e0a2f2f13fdb2c971657147c7038878629b014a","src/terminfo/mod.rs":"928c664c0b8f034cde427eb99f534d810d11ddfb12c30930dabc8a3d3c0dd675","src/terminfo/style.rs":"5c664ed3b1f285796dfb57bca4f60e18224f235ede9b30ca4c8a949112b1f989"},"package":"f2a5e6504ed8648554968650feecea00557a3476bc040d0ffc33080e66b646d0"} \ No newline at end of file
+{"files":{"Cargo.toml":"2da886b5fa05f2a2e0137c8e0a537fefe4bd2a571a109a6f1c747fdb9b6ab641","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"53b1e4d8492a4cabff5baf358b304143da3276ef11e0d8880e12ef11904913aa","src/lib.rs":"d8bb0478b4e402ff9e56b1be5ad31cf8d402fdd46ff1d040ed1bb90a64079bf8","src/terminfo/color.rs":"2e107814075997bb2c5f62c35e0a2f2f13fdb2c971657147c7038878629b014a","src/terminfo/mod.rs":"928c664c0b8f034cde427eb99f534d810d11ddfb12c30930dabc8a3d3c0dd675","src/terminfo/style.rs":"5c664ed3b1f285796dfb57bca4f60e18224f235ede9b30ca4c8a949112b1f989"},"package":"7a858372ff14bab9b1b30ea504f2a4bc534582aee3e42ba2d41d2a7baba63d5d"} \ No newline at end of file
diff --git a/vendor/color-print/Cargo.toml b/vendor/color-print/Cargo.toml
index 72a4386f7..0622b21c8 100644
--- a/vendor/color-print/Cargo.toml
+++ b/vendor/color-print/Cargo.toml
@@ -12,9 +12,9 @@
[package]
edition = "2018"
name = "color-print"
-version = "0.3.4"
+version = "0.3.5"
authors = ["Johann David <johann.david.dev@protonmail.com>"]
-description = "Colorize and stylize strings at compile-time, by using an HTML-like syntax"
+description = "Colorize and stylize strings for terminal at compile-time, by using an HTML-like syntax"
readme = "README.md"
keywords = [
"color",
@@ -23,10 +23,10 @@ keywords = [
"terminfo",
]
license = "MIT OR Apache-2.0"
-repository = "https://gitlab.com/yolenoyer/color-print"
+repository = "https://gitlab.com/dajoha/color-print"
[dependencies.color-print-proc-macro]
-version = "0.3.4"
+version = "0.3.5"
[dependencies.lazy_static]
version = "1.4"
diff --git a/vendor/color-print/LICENSE-APACHE b/vendor/color-print/LICENSE-APACHE
new file mode 100644
index 000000000..1b5ec8b78
--- /dev/null
+++ b/vendor/color-print/LICENSE-APACHE
@@ -0,0 +1,176 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
diff --git a/vendor/linux-raw-sys-0.3.2/LICENSE-MIT b/vendor/color-print/LICENSE-MIT
index 31aa79387..31aa79387 100644
--- a/vendor/linux-raw-sys-0.3.2/LICENSE-MIT
+++ b/vendor/color-print/LICENSE-MIT
diff --git a/vendor/color-print/README.md b/vendor/color-print/README.md
index d721cff83..6b4417421 100644
--- a/vendor/color-print/README.md
+++ b/vendor/color-print/README.md
@@ -1,6 +1,6 @@
# color-print
-Colorize and stylize strings at compile-time, by using an HTML-like syntax.
+Colorize and stylize strings for terminal at compile-time, by using an HTML-like syntax.
This library provides the following macros:
@@ -12,22 +12,21 @@ This library provides the following macros:
`cformat!()`, `cprint!()`, and `cprintln!()` have the same syntax as `format!()`,
`print!()` and `println!()` respectively, but they accept an additional syntax inside the
-format string: HTML-like tags which add terminal colors/styles at compile-time.
-
-*Note*: these tags are commonly named "*color tags*" in the documentation below.
+format string: HTML-like tags which add ANSI colors/styles at compile-time.
`cstr!()` only transforms the given string literal into another string literal, without
formatting anything else than the colors tag.
-`untagged!()` removes all the color tags found in the given string literal.
+`untagged!()` removes all the tags found in the given string literal.
### What does it do ?
-By default, the provided macros will replace the color tags found in the format string by ANSI
+By default, the provided macros will replace the tags found in the format string by ANSI
hexadecimal escape codes. E.g.:
```rust
cprintln!("HELLO <green>WORLD</green>")
+cprintln!("HELLO <green>WORLD</>"); // Alternative, shorter syntax
```
will be replaced by:
@@ -44,7 +43,7 @@ each kind of styling/colorizing (see below for more detail).
### Pros
-* Styling is processed at compile-time, so the runtime payload is quite inexistant (unless the
+* Styling is processed at compile-time, so the runtime payload is inexistant (unless the
feature `terminfo` is activated);
* Nested tags are well handled, e.g. `"<green>...<blue>...</blue>...</green>"`;
* Some optimizations are performed to avoid redundant ANSI sequences, because these
@@ -52,16 +51,12 @@ each kind of styling/colorizing (see below for more detail).
* Almost every tag has a short name, so colorizing can be done quickly: `"my <b>blue</> word"`;
* Each provided macro can be used exactly in the same way as the standard `format!`-like
macros; e.g., positional arguments and named arguments can be used as usual;
-* Fine-grained error handling.
+* Supports 16, 256 and 16M colors;
+* Fine-grained error handling (errors will be given at compile-time).
### Cons
-* Many CLI programs detect on runtime if they are actually piped to another command or not, and
- decide to colorize their output based on this information. As `color-print` formats strings at
- compile-time, this is not possible to do that easily;
-* Not compatible with non-ANSI Windows terminals (and not tested at all on Windows, feedbacks
- are welcome);
-* Not tested on Mac, feedbacks are welcome.
+* Not compatible with non-ANSI terminals.
## Introduction
@@ -74,8 +69,9 @@ cprintln!("Hello <green>world</green>!");
### Closing a tag more simply: the `</>` tag
-Basically, tags must be closed by giving exactly the same colors/styles of the matching open
-tag (with a slash `/` at the beginning). But it can be tedious!
+Basically, tags must be closed by giving *exactly* the same colors/styles as their matching
+open tag (with a slash `/` at the beginning), e.g: `<blue,bold>...</blue,bold>`. But it can be
+tedious!
So, it is also possible to close the last open tag simply with `</>`:
@@ -85,7 +81,7 @@ cprintln!("Hello <green>world</>!");
### Combining colors and styles
-Multiple styles and color(s) can be combined into a single tag by separating them with the `,`
+Multiple styles and colors can be combined into a single tag by separating them with the `,`
comma character:
```rust
@@ -94,13 +90,14 @@ cprintln!("This a <green,bold>green and bold text</green,bold>.");
cprintln!("This a <green,bold>green and bold text</>.");
```
-Of course, combining multiple foreground colors or multiple background colors into the same tag
-is useless (in such a case, only the last one is taken into account).
-
### Nesting tags
-Any tag can be nested with any other, as long as the closing tags match correctly (following
-the basic rules of nesting for HTML tags):
+Any tag can be nested with any other.
+
+*Note*: The closing tags must match correctly (following the basic rules of nesting for HTML
+tags), but it can always be simplified by using the tag `</>`.
+
+Example of nested tags:
```rust
cprintln!("<green>This is green, <bold>then green and bold</bold>, then green again</green>");
@@ -124,7 +121,8 @@ cprintln!("<green><bold>Hello</></>");
### How to display the chars `<` and `>` verbatim
-As for `{` and `}`, the chars `<` and `>` have to be doubled in order to display them verbatim:
+As for `{` and `}` in standard format strings, the chars `<` and `>` have to be doubled in
+order to display them verbatim:
```rust
cprintln!("This is an angle bracket character: <<, and here is another one: >>");
@@ -133,22 +131,22 @@ cprintln!("This is an angle bracket character: <<, and here is another one: >>")
## Optimization: no redundant ANSI codes
The expanded format string will only contain the *needed* ANSI codes. This is done by making a
-diff of the different style attributes, each time a color tag is encountered, instead of
-mechanically adding the ANSI codes.
+diff of the different style attributes, each time a tag is encountered, instead of mechanically
+adding the ANSI codes.
E.g., several nested `<bold>` tags will only produce one bold ANSI sequence:
```rust
-cprintln!("<bold><bold>A <bold,blue>B C D</> E</></>")
+cprintln!("<bold><bold> A <bold,blue> B </> C </></>")
```
will be replaced by:
```rust
-println!("\u{1b}[1mA \u{1b}[34mB C D\u{1b}[39m E\u{1b}[22m")
-// ^-------^ ^--------^ ^--------^ ^--------^
-// bold blue color bold
-// reset reset
+println!("\u{1b}[1m A \u{1b}[34m B \u{1b}[39m C \u{1b}[22m")
+// ^-------^ ^--------^ ^--------^ ^--------^
+// bold blue color bold
+// reset reset
```
## The feature `terminfo`
@@ -175,38 +173,37 @@ This has one pro and several cons:
`lazy_static`: https://crates.io/crates/lazy_static
`terminfo`: https://crates.io/crates/terminfo
-## Naming rules of the color tags:
+## Naming rules of the tags:
-Each color/style tag has at least a long name, like `<magenta>` or `<underline>`.
+Each tag has at least a **long name**, like `<magenta>` or `<underline>`.
The tags directly relative to *colors* (like `<red>`, `<bg:blue>`, `<bg:bright-green>`..., as
opposed to *style* tags like `<bold>`, `<italics>`...) have some common naming rules:
- * Each color tag has four variants:
+ * Each tag has four variants:
- `<mycolor>`: the normal, foreground color;
- `<bright-mycolor>` or `<mycolor!>`: the bright, foreground color;
- - `<bg:mycolor>`: the normal, background color;
+ - `<bg:mycolor>`, `<MYCOLOR>`: the normal, background color;
- `<bg:bright-mycolor>`, `<bg:mycolor!>`, `<BRIGHT-MYCOLOR>` or `<MYCOLOR!>`: the bright,
background color;
- * Each color tag has a *shortcut*, with a base letter for each color (example with the `x`
- letter):
+ * Each tag has a *shortcut*, with a base letter for each color; example with the `x` letter:
- `<x>`: the normal, foreground color;
- `<x!>`: the bright, foreground color;
- - `<bg:x>` or `<X>`: the normal, background color;
- - `<bg:x!>` or `<X!>`: the bright, background color;
- * Except for the color `<black>`, each color's shortcut letter is simply the first letter of
- its name, e.g. `<y>` is the shortcut for `<yellow>`;
- * Each color's tag which is uppercase is a background color;
- * Each tag which has a trailing exclamation point `!` is a bright color;
+ - `<bg:x>`, `<X>`: the normal, background color;
+ - `<bg:x!>`, `<X!>`: the bright, background color;
+ * Each color's shortcut letter is simply the **first letter of its name** (excepted for `<k>`
+ which is the shortcut for `<black>`), e.g. `<y>` is the shortcut for `<yellow>`;
+ * Each color's tag which is uppercase is a **background color**;
+ * Each tag which has a trailing exclamation point `!` is a **bright color**;
-## List of accepted color/style tags:
+## List of accepted tags:
The two first columns show which styles are supported, respectively with the default crate
features (ANSI column), and with the feature `terminfo` being activated.
| ANSI | Terminfo | Shortcuts | Long names | Aliases |
| ---- | -------- | --------- | ----------------------- | ----------------------------------------------- |
-| X | X | `<s>` | `<bold>` | `<em>` `<strong>` |
+| X | X | `<s>` | `<strong>` | `<em>` `<bold>` |
| X | X | | `<dim>` | |
| X | X | `<u>` | `<underline>` | |
| X | | | `<strike>` | |
diff --git a/vendor/color-print/src/lib.rs b/vendor/color-print/src/lib.rs
index 14535f5db..2a5c1d14a 100644
--- a/vendor/color-print/src/lib.rs
+++ b/vendor/color-print/src/lib.rs
@@ -1,4 +1,4 @@
-//! Colorize and stylize strings at compile-time, by using an HTML-like syntax.
+//! Colorize and stylize strings for terminal at compile-time, by using an HTML-like syntax.
//!
//! This library provides the following macros:
//!
@@ -10,24 +10,23 @@
//!
//! [`cformat!()`], [`cprint!()`], and [`cprintln!()`] have the same syntax as `format!()`,
//! `print!()` and `println!()` respectively, but they accept an additional syntax inside the
-//! format string: HTML-like tags which add terminal colors/styles at compile-time.
-//!
-//! *Note*: these tags are commonly named "*color tags*" in the documentation below.
+//! format string: HTML-like tags which add ANSI colors/styles at compile-time.
//!
//! [`cstr!()`] only transforms the given string literal into another string literal, without
//! formatting anything else than the colors tag.
//!
-//! [`untagged!()`] removes all the color tags found in the given string literal.
+//! [`untagged!()`] removes all the tags found in the given string literal.
//!
//! ## What does it do ?
//!
-//! By default, the provided macros will replace the color tags found in the format string by ANSI
+//! By default, the provided macros will replace the tags found in the format string by ANSI
//! hexadecimal escape codes. E.g.:
//!
//! ```
//! # use color_print::cprintln;
//! # fn main() {
-//! cprintln!("HELLO <green>WORLD</green>")
+//! cprintln!("HELLO <green>WORLD</green>");
+//! cprintln!("HELLO <green>WORLD</>"); // Alternative, shorter syntax
//! # }
//! ```
//!
@@ -48,7 +47,7 @@
//!
//! ## Pros
//!
-//! * Styling is processed at compile-time, so the runtime payload is quite inexistant (unless the
+//! * Styling is processed at compile-time, so the runtime payload is inexistant (unless the
//! feature `terminfo` is activated);
//! * Nested tags are well handled, e.g. `"<green>...<blue>...</blue>...</green>"`;
//! * Some optimizations are performed to avoid redundant ANSI sequences, because these
@@ -56,16 +55,12 @@
//! * Almost every tag has a short name, so colorizing can be done quickly: `"my <b>blue</> word"`;
//! * Each provided macro can be used exactly in the same way as the standard `format!`-like
//! macros; e.g., positional arguments and named arguments can be used as usual;
-//! * Fine-grained error handling.
+//! * Supports 16, 256 and 16M colors;
+//! * Fine-grained error handling (errors will be given at compile-time).
//!
//! ## Cons
//!
-//! * Many CLI programs detect on runtime if they are actually piped to another command or not, and
-//! decide to colorize their output based on this information. As `color-print` formats strings at
-//! compile-time, this is not possible to do that easily;
-//! * Not compatible with non-ANSI Windows terminals (and not tested at all on Windows, feedbacks
-//! are welcome);
-//! * Not tested on Mac, feedbacks are welcome.
+//! * Not compatible with non-ANSI terminals.
//!
//! # Introduction
//!
@@ -78,8 +73,9 @@
//!
//! ## Closing a tag more simply: the `</>` tag
//!
-//! Basically, tags must be closed by giving exactly the same colors/styles of the matching open
-//! tag (with a slash `/` at the beginning). But it can be tedious!
+//! Basically, tags must be closed by giving *exactly* the same colors/styles as their matching
+//! open tag (with a slash `/` at the beginning), e.g: `<blue,bold>...</blue,bold>`. But it can be
+//! tedious!
//!
//! So, it is also possible to close the last open tag simply with `</>`:
//!
@@ -92,7 +88,7 @@
//!
//! ## Combining colors and styles
//!
-//! Multiple styles and color(s) can be combined into a single tag by separating them with the `,`
+//! Multiple styles and colors can be combined into a single tag by separating them with the `,`
//! comma character:
//!
//! ```
@@ -104,13 +100,14 @@
//! # }
//! ```
//!
-//! Of course, combining multiple foreground colors or multiple background colors into the same tag
-//! is useless (in such a case, only the last one is taken into account).
-//!
//! ## Nesting tags
//!
-//! Any tag can be nested with any other, as long as the closing tags match correctly (following
-//! the basic rules of nesting for HTML tags):
+//! Any tag can be nested with any other.
+//!
+//! *Note*: The closing tags must match correctly (following the basic rules of nesting for HTML
+//! tags), but it can always be simplified by using the tag `</>`.
+//!
+//! Example of nested tags:
//!
//! ```
//! # use color_print::cprintln;
@@ -140,7 +137,8 @@
//!
//! ## How to display the chars `<` and `>` verbatim
//!
-//! As for `{` and `}`, the chars `<` and `>` have to be doubled in order to display them verbatim:
+//! As for `{` and `}` in standard format strings, the chars `<` and `>` have to be doubled in
+//! order to display them verbatim:
//!
//! ```
//! # use color_print::cprintln;
@@ -152,15 +150,15 @@
//! # Optimization: no redundant ANSI codes
//!
//! The expanded format string will only contain the *needed* ANSI codes. This is done by making a
-//! diff of the different style attributes, each time a color tag is encountered, instead of
-//! mechanically adding the ANSI codes.
+//! diff of the different style attributes, each time a tag is encountered, instead of mechanically
+//! adding the ANSI codes.
//!
//! E.g., several nested `<bold>` tags will only produce one bold ANSI sequence:
//!
//! ```
//! # use color_print::cprintln;
//! # fn main() {
-//! cprintln!("<bold><bold>A <bold,blue>B C D</> E</></>")
+//! cprintln!("<bold><bold> A <bold,blue> B </> C </></>")
//! # }
//! ```
//!
@@ -169,10 +167,10 @@
//! ```
//! # use color_print::cprintln;
//! # fn main() {
-//! println!("\u{1b}[1mA \u{1b}[34mB C D\u{1b}[39m E\u{1b}[22m")
-//! // ^-------^ ^--------^ ^--------^ ^--------^
-//! // bold blue color bold
-//! // reset reset
+//! println!("\u{1b}[1m A \u{1b}[34m B \u{1b}[39m C \u{1b}[22m")
+//! // ^-------^ ^--------^ ^--------^ ^--------^
+//! // bold blue color bold
+//! // reset reset
//! # }
//! ```
//!
@@ -200,38 +198,37 @@
//! [`lazy_static`]: https://crates.io/crates/lazy_static
//! [`terminfo`]: https://crates.io/crates/terminfo
//!
-//! # Naming rules of the color tags:
+//! # Naming rules of the tags:
//!
-//! Each color/style tag has at least a long name, like `<magenta>` or `<underline>`.
+//! Each tag has at least a **long name**, like `<magenta>` or `<underline>`.
//!
//! The tags directly relative to *colors* (like `<red>`, `<bg:blue>`, `<bg:bright-green>`..., as
//! opposed to *style* tags like `<bold>`, `<italics>`...) have some common naming rules:
//!
-//! * Each color tag has four variants:
+//! * Each tag has four variants:
//! - `<mycolor>`: the normal, foreground color;
//! - `<bright-mycolor>` or `<mycolor!>`: the bright, foreground color;
-//! - `<bg:mycolor>`: the normal, background color;
+//! - `<bg:mycolor>`, `<MYCOLOR>`: the normal, background color;
//! - `<bg:bright-mycolor>`, `<bg:mycolor!>`, `<BRIGHT-MYCOLOR>` or `<MYCOLOR!>`: the bright,
//! background color;
-//! * Each color tag has a *shortcut*, with a base letter for each color (example with the `x`
-//! letter):
+//! * Each tag has a *shortcut*, with a base letter for each color; example with the `x` letter:
//! - `<x>`: the normal, foreground color;
//! - `<x!>`: the bright, foreground color;
-//! - `<bg:x>` or `<X>`: the normal, background color;
-//! - `<bg:x!>` or `<X!>`: the bright, background color;
-//! * Except for the color `<black>`, each color's shortcut letter is simply the first letter of
-//! its name, e.g. `<y>` is the shortcut for `<yellow>`;
-//! * Each color's tag which is uppercase is a background color;
-//! * Each tag which has a trailing exclamation point `!` is a bright color;
+//! - `<bg:x>`, `<X>`: the normal, background color;
+//! - `<bg:x!>`, `<X!>`: the bright, background color;
+//! * Each color's shortcut letter is simply the **first letter of its name** (excepted for `<k>`
+//! which is the shortcut for `<black>`), e.g. `<y>` is the shortcut for `<yellow>`;
+//! * Each color's tag which is uppercase is a **background color**;
+//! * Each tag which has a trailing exclamation point `!` is a **bright color**;
//!
-//! # List of accepted color/style tags:
+//! # List of accepted tags:
//!
//! The two first columns show which styles are supported, respectively with the default crate
//! features (ANSI column), and with the feature `terminfo` being activated.
//!
//! | ANSI | Terminfo | Shortcuts | Long names | Aliases |
//! | ---- | -------- | --------- | ----------------------- | ----------------------------------------------- |
-//! | X | X | `<s>` | `<bold>` | `<em>` `<strong>` |
+//! | X | X | `<s>` | `<strong>` | `<em>` `<bold>` |
//! | X | X | | `<dim>` | |
//! | X | X | `<u>` | `<underline>` | |
//! | X | | | `<strike>` | |
@@ -276,9 +273,7 @@
//! | X | | `<0>`...`<255>` | `<palette(...)>` | `<p(...)>` `<pal(...)>` |
//! | X | | `<P(...)>` | `<bg:palette(...)>` | `<PALETTE(...)>` `<PAL(...)>` `<bg:p(...)>` `<bg:pal(...)>` |
-pub use color_print_proc_macro::{cformat, cprint, cprintln, untagged};
-#[cfg(not(feature = "terminfo"))]
-pub use color_print_proc_macro::cstr;
+pub use color_print_proc_macro::{cformat, cprint, cprintln, cstr, untagged};
#[cfg(feature = "terminfo")]
mod terminfo;
diff --git a/vendor/compiler_builtins/.cargo-checksum.json b/vendor/compiler_builtins/.cargo-checksum.json
index a6794a357..c4e30e372 100644
--- a/vendor/compiler_builtins/.cargo-checksum.json
+++ b/vendor/compiler_builtins/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"29b713e2a5a07bddda680aff24dc5d75db229d45996cd42ea49a6b6f6cec9125","Cargo.toml":"0d96be441176100c0464d3da474a877c0d9c818015a39f04c42bbbb629aba5aa","LICENSE.txt":"0e13fed90654e0bc677d624a2d770833a09541fe0c0bdb3d051b3d081207393a","README.md":"693b529db2e5dd13069c05ef2e76e26c1fe1b2a590b07cd8e26dfb2df087ba62","build.rs":"254c36fa4cd3835468e679fdf7e47abe98570a4af35afa215cf252eeaa818151","examples/intrinsics.rs":"5a1b3dbebfb8bbf96a1e9001f04f31a6e408d0e384c6d2f71e2d79c0945e1be5","libm/src/math/acos.rs":"fb066ba84aba1372d706425ec14f35ff8d971756d15eeebd22ecf42a716493bb","libm/src/math/acosf.rs":"a112b82309bba1d35c4e3d6ad4d6c21ef305343d9ab601ddf4bc61d43bc9f1af","libm/src/math/acosh.rs":"99de01ded7922bb93a882ad5ad8b472b5cae0059dea0bdca2077f65e94483150","libm/src/math/acoshf.rs":"10750c4d39ef6717b20a15ef1ce43e15eb851682d2f820f7e94501adec98b9a5","libm/src/math/asin.rs":"095a1e98996daff45df0b154ca0ec35bbf31db964ee9fdda0207308cb20df441","libm/src/math/asinf.rs":"49cccb4db2881982643a4a7d5453f4f8daf527711bbb67313607a3c178856d61","libm/src/math/asinh.rs":"4dd51affa71cce34a192ad66154e248f8d1c4b40fb497f29052333e425bb740f","libm/src/math/asinhf.rs":"914bfecf449f5e2bce786aa12c056d419073c6011d41c1bab7c39ba765fa4c53","libm/src/math/atan.rs":"d4fe46e1c5739dd09997869dcfbc3c85f03c534af52e700d6c6bcf9c3fedda07","libm/src/math/atan2.rs":"2623bc8ca707d13a7092ce49adf68e9cbf4452ad1bf4a861dc40ca858606a747","libm/src/math/atan2f.rs":"dd01943e0e1f1955912e5c3ffc9467529cf64bd02ac0a6ad5ab31dbe6657f05d","libm/src/math/atanf.rs":"e41b41569474a59c970ede3538e00bda4072cf4d90040017101cc79d7dc28caa","libm/src/math/atanh.rs":"57a8fb3f0f116fa4a966ac6bc2abd5f80236ead8e79013f468bd3786921f7110","libm/src/math/atanhf.rs":"6f2e57aaec1b5fc7609cb3938b3d155f51b4237dbda530739c34a0448cd9beb9","libm/src/math/cbrt.rs":"f2c45612d2eecd93cfcdd9ebf824c754fc8f8dfd6d16862c0b9c4ccea78c2a0f","libm/src/math/cbrtf.rs":"ad0b483854aa9f17a44d36c049bf0e8ebab34c27e90b787c05f45cc230ec7d19","libm/src/math/ceil.rs":"57ba5b6e207a0ccbd34190d1aa544389ca12126be23821dfb5746497f620ce03","libm/src/math/ceilf.rs":"c922a0475a599b9ea5473e615f74700b99707cebd6927f24ea59cb2a3cb3bbc3","libm/src/math/copysign.rs":"8b6440a251f0f1509d87f18122f74d0d5c03d0b60517e89e441434a3c5d84591","libm/src/math/copysignf.rs":"87d35436d224852ada93a2e93f6730cf1a727b808dd10e7d49ab4585866e336b","libm/src/math/cos.rs":"74babdc13ede78e400c5ca1854c3e22d2e08cbdc5618aefa5bba6f9303ef65b6","libm/src/math/cosf.rs":"09c40f93c445b741e22477ceedf163ca33b6a47f973f7c9876cfba2692edb29c","libm/src/math/cosh.rs":"0d0a7cef18577f321996b8b87561963139f754ad7f2ea0a3b3883811f3f0693a","libm/src/math/coshf.rs":"be8ca8739e4cf1978425b349f941cb4838bba8c10cb559c7940b9fd4fdde21ad","libm/src/math/erf.rs":"de69e6669ce1014e5b5086a7a6d01c4755f2f0590e204d2a77bea455764114f7","libm/src/math/erff.rs":"6acdbb07f74296067bb0380b850918cfb5806a89f9ff04352a7a0b921d728944","libm/src/math/exp.rs":"ca7405ad0d1993fffcf9aae96f9256307bed3c4916545aaebd1cf1d2df1807fa","libm/src/math/exp10.rs":"2e136c6ecedd8e57a6c31796f57fae4546fcfd8bc6be66c836f553df9c74b907","libm/src/math/exp10f.rs":"9a3ce506ec587066a355ab74e0eb69a03a214ac405718087ae9772365050b20b","libm/src/math/exp2.rs":"94a9304a2ce3bc81f6d2aefd3cde6faa30f13260d46cb13692863cdea1c9a3a1","libm/src/math/exp2f.rs":"785f2630accd35118ec07bf60273e219ed91a215b956b1552eeea5bc2a708cc8","libm/src/math/expf.rs":"ec14c18f891a9e37735ec39e6fc2e9bf674a2c2e083f22e2533b481177359c98","libm/src/math/expm1.rs":"124069f456c8ad331f265c7509d9e223b2a300e461bbfd3d6adfdcdd2ee5b8ac","libm/src/math/expm1f.rs":"18e2116d31ea8410051cc709b9d04b754b0e3ba6758ee1bf0b48749f4999b840","libm/src/math/expo2.rs":"4f4f9fecfccb43f30c2784aa7c0bb656754a52b8ab431f7d1b551c673ab133f1","libm/src/math/fabs.rs":"e6c7db39f98508098cdf64ac0c2f53866c466149a7490afb9fe22b44c4dd81b3","libm/src/math/fabsf.rs":"83a1f5f4d9ca899ba2b701d7332e18b40258b83e111db4c5d8fab2cc1be58aa3","libm/src/math/fdim.rs":"8ec091996005207297c2389ae563e1b18dbc6a9eac951de29a976c5cd7bc32a7","libm/src/math/fdimf.rs":"c7f3f2269834d55be26b6580ddc07c42531577955fa4de35bad1e2a361085614","libm/src/math/fenv.rs":"916ae11e4763588518d64dee82afb41be9d1ee38ecc0679c821d4e7e22cd3dc5","libm/src/math/floor.rs":"5050804cae173af6775c0678d6c1aafb5ca2b744bc8a2f50d9d03b95dcee1fb0","libm/src/math/floorf.rs":"c903e0c57bc60a888c513eb7a873a87a4759ba68fc791b6b931652f8ee74cc03","libm/src/math/fma.rs":"d87963472cd5bfcb83eb4010c67f3653857cf28f11378e06d63abae14c723e5d","libm/src/math/fmaf.rs":"1db6ee0d47ddbdb441cfe167edf89b431239f5805708fd0376cf5c01349a4bd6","libm/src/math/fmax.rs":"f6c8e96a8b1a170648d2fa3513e7b6b459085d708c839869f82e305fe58fac37","libm/src/math/fmaxf.rs":"dff0025433232e8a5ec7bd54d847ccf596d762ea4e35f5c54fbaac9404d732fd","libm/src/math/fmin.rs":"95b6cb66ca0e0e22276f0bf88dbe8fb69796a69a196a7491bd4802efbcf2e298","libm/src/math/fminf.rs":"304bc839b15ea3d84e68d2af9f40524ec120d30a36a667b22fcb98a6c258f4c7","libm/src/math/fmod.rs":"a1c0550fc7df8164733d914e222ff0966a2ab886d6e75a1098f24fe0283ae227","libm/src/math/fmodf.rs":"ee51ed092c0eeb8195f35735ff725cfd46612e0d689a7c483538bd92fbe61828","libm/src/math/frexp.rs":"28af70026922a8ab979744c7ad4d8faba6079c4743b7eeb6d14c983a982fbbcc","libm/src/math/frexpf.rs":"2e2593ae8002ba420809ebfaf737ef001cdc912354be3d978a8c0cb930350d4d","libm/src/math/hypot.rs":"841131c4a0cea75bc8a86e29f3f6d0815a61fc99731c9984651ce83d3050d218","libm/src/math/hypotf.rs":"5f317323edc2eb699580fe54b074b7e570a7734d51a0a149c0b49b54470a836c","libm/src/math/ilogb.rs":"d178ad7ca3439f82d565962b143f20448e45b2e2c51357b127abaec683297e32","libm/src/math/ilogbf.rs":"00f2b1b0496e21c6a42d68aea74d7156fa2ff0a735741b9051f3ca1cf0f57586","libm/src/math/j0.rs":"9572b6396c489927d332d0e717920e61ec0618e5e9c31f7eeeec70f5e4abab06","libm/src/math/j0f.rs":"802c8254bded9b3afb6eea8b9af240038a5a4a5d811396729f69ca509e3e7d87","libm/src/math/j1.rs":"97b1af1611fa3d110c2b349ee8e4176100132ea1391b619086b47ac063b81803","libm/src/math/j1f.rs":"9c9b128752e8ea2e7d81b637ba84907ab54a545e7602c49167b313743927930b","libm/src/math/jn.rs":"847d122334e5707ad9627146cddccc082a1f2f5bcd3e5ef54399013a7007ce88","libm/src/math/jnf.rs":"4045076f7d1a1b89882ed60d4dd60a4cbbc66b85cfb90491378c8015effcc476","libm/src/math/k_cos.rs":"f34a69e44d6b8901b03b578a75972f438ab20a7b98a0903fc1903d6fde3899be","libm/src/math/k_cosf.rs":"8f7117ff21cebf8e890a5bcfd7ea858a94172f4172b79a66d53824c2cb0888b1","libm/src/math/k_expo2.rs":"eb4ca9e6a525b7ea6da868c3cb136896682cc46f8396ba2a2ebc3ae9e9ba54b0","libm/src/math/k_expo2f.rs":"d51ad5df61cb5d1258bdb90c52bfed4572bb446a9337de9c04411ed9454ae0cb","libm/src/math/k_sin.rs":"14b2aba6ca07150c92768b5a72acaf5cde6a11d6619e14896512a7ba242e289a","libm/src/math/k_sinf.rs":"2775fcc710807164e6f37a4f8da3c8143cd5f16e19ce7c31c5591522151d7a96","libm/src/math/k_tan.rs":"a72beae4ccd9631eeeb61d6365bbeecae81c8411f3120a999c515cca0d5ea5c5","libm/src/math/k_tanf.rs":"6a794be56fa4b2f60452b9bab19af01c388f174560acbf829a351378ea39495d","libm/src/math/ldexp.rs":"b647f0096e80e4d926d8dd18d294c892ee2cb1778effe2c5e1b2664ae5cb1a4e","libm/src/math/ldexpf.rs":"98743fad2cd97a7be496f40ba3157ac1438fce0d0c25d5ab90c3b8c71c3fd0ed","libm/src/math/lgamma.rs":"0edd18e4f96bfcbe8b1b5af3eeca5208cd6d2d479dfa5ad117c9dfeccecf614f","libm/src/math/lgamma_r.rs":"f44a37aeccd56559ef784ae8edf217d14ad5cc2d910f0a65e70ffc86d7dc23dd","libm/src/math/lgammaf.rs":"967845357758b868a571857ec001f9f9154001110b8e97c08b6d10586bed9c49","libm/src/math/lgammaf_r.rs":"7143016d60e11fa235d53968125e57231b1104ce52149b5e1eed39629e0d1ff0","libm/src/math/log.rs":"b5e0c5f30d9e94351488732801be3107c12b854c3f95ad37e256dd88eeca408f","libm/src/math/log10.rs":"3425ff8be001fd1646ba15e254eb6ef4bdc6ccaf0cbee27ddf1fa84e04178b90","libm/src/math/log10f.rs":"fee4f71879bc4c99259e68c0c641364901629fb29a8ebddfcc0d090102cceddd","libm/src/math/log1p.rs":"9cf400852f165e6be19b97036ae9521fb9ca857d0a9a91c117d9123221622185","libm/src/math/log1pf.rs":"2716e6d2afa271996b7c8f47fd9e4952c88f4c1fd8c07c3e8ce8c62794bf71d8","libm/src/math/log2.rs":"dbbbfbaaa8aa6a4dbefea554ea3983090a9691228b011910c751f6adca912c40","libm/src/math/log2f.rs":"92a90350d8edce21c31c285c3e620fca7c62a2366008921715945c2c73b5b79f","libm/src/math/logf.rs":"845342cffc34d3db1f5ec12d8e5b773cd5a79056e28662fcb9bcd80207596f50","libm/src/math/mod.rs":"d694260529d51d0bc17f88ad557d852b9bb0bc3f7466cf7f62b679dc95ebba42","libm/src/math/modf.rs":"d012ed5a708ef52b6d1313c22a46cadaf5764dde1220816e3df2f03a0fcc60ae","libm/src/math/modff.rs":"f8f1e4c27a85d2cdb3c8e74439d59ef64aa543b948f22c23227d02d8388d61c2","libm/src/math/nextafter.rs":"3282e7eef214a32736fb6928d490198ad394b26b402b45495115b104839eebfe","libm/src/math/nextafterf.rs":"0937dc8a8155c19842c12181e741cec1f7df1f7a00cee81fcb2475e2842761b7","libm/src/math/pow.rs":"17c38297c5bf99accd915f292b777f8716ecf328916297c8bb9dfde6fd8ce522","libm/src/math/powf.rs":"2c423a0ea57fdc4e20f3533f744c6e6288c998b4de8f2914fafaa0e78be81b04","libm/src/math/rem_pio2.rs":"3e53234977daf61c89c29c940791714aad2f676a6f38188c7d17543a2aa8806f","libm/src/math/rem_pio2_large.rs":"482f31ff4e4eacf885f6130ae26a1d59f76b382059d6c742f30e5036811d3ca8","libm/src/math/rem_pio2f.rs":"07fb48f6d5cbadfd32ce4124b2b74af98b8391a2a6f36ce2a7d32e4500cb65ac","libm/src/math/remainder.rs":"63865f4370853c476b45bb27a5c54a4072146aa4a626835ae5263871a4e7e5dc","libm/src/math/remainderf.rs":"dd3fa432dbda8f2135428198be7bd69c57f8d13df3f365b12f52bf6a82352ac4","libm/src/math/remquo.rs":"3cc0bf55069f165c4843f2c358b3a27279c01e8cdd99f9057a3f7f31f45408f2","libm/src/math/remquof.rs":"cc749e18ecb7e766b8b8eeabdbf89ac99087d3d587e71e30f690676a3d2c1f9b","libm/src/math/rint.rs":"2c17047bcfd0ccdca8669f7cf70c628154ae4abc142660f30e37f9c073928706","libm/src/math/rintf.rs":"3b54af9eaa1bb6808159ca435246acf6a4e7aebbc344e3f4a4c5636345155897","libm/src/math/round.rs":"f10797ef15dd34a74e912ba8621d60bc0200c87b94308c9de3cc88d7aec4feb4","libm/src/math/roundf.rs":"27e37cfcf82373709e7debf9c0c18f7ed00ae0f5d97a214c388041f7a6996d35","libm/src/math/scalbn.rs":"b5c9d6d4177fe393cbfe1c634d75ce14b754f6cbce87c5bf979a9661491748a2","libm/src/math/scalbnf.rs":"4f198d06db1896386256fb9a5ac5b805b16b836226c18780a475cf18d7c1449c","libm/src/math/sin.rs":"bb483a2138ca779e03a191222636f0c60fd75a77a2a12f263bda4b6aa9136317","libm/src/math/sincos.rs":"1cf62a16c215e367f51078a3ba23a3f257682032a8f3c657293029a886b18d82","libm/src/math/sincosf.rs":"b0f589e6ada8215944d7784f420c6721c90387d799e349ce7676674f3c475e75","libm/src/math/sinf.rs":"dcddac1d56b084cbb8d0e019433c9c5fe2201d9b257a7dcf2f85c9a8f14b79cf","libm/src/math/sinh.rs":"d8ee4c7af883a526f36c1a6da13bb81fba9181b477e2f2538161a2bee97edc35","libm/src/math/sinhf.rs":"d06eb030ba9dbf7094df127262bfe99f149b4db49fa8ab8c15499660f1e46b26","libm/src/math/sqrt.rs":"5f3a0a582b174fcfccb9c5274899cb05b664ccb92bf1d42caa58890947b68256","libm/src/math/sqrtf.rs":"da926ac27af6eecdf8b62d8baeefcfe1627110592e44298f6b7f05b7ac12fe7e","libm/src/math/tan.rs":"930ecedaadc60f704c2dfa4e15186f59713c1ba7d948529d215223b424827db5","libm/src/math/tanf.rs":"894156a3b107aee08461eb4e7e412fc049aa237d176ae705c6e3e2d7060d94e3","libm/src/math/tanh.rs":"f1f08eb98ed959a17370a7aaf0177be36e3764543424e78feb033ed3f5e8ec98","libm/src/math/tanhf.rs":"74027b0c672a4e64bdef6d7a3069b90caec50e1e7dbb2c12d2828f310502f41e","libm/src/math/tgamma.rs":"c889cfa49bbeb4dbb0941fe9fac3b4da7d5879dcf04a3b9bb6e56de529baf374","libm/src/math/tgammaf.rs":"0737b34777095d0e4d07fe533e8f105082dd4e8ece411bba6ae5993b45b9388c","libm/src/math/trunc.rs":"642264897cc1505e720c8cf313be81aa9fd53aae866644a2e988d01dbc77fd8a","libm/src/math/truncf.rs":"dee3607baf1af0f01deae46e429e097234c50b268eaefebbe716f19f38597900","src/aarch64.rs":"c414ad2cd6af35bf0bfe1ddd0d2e6e07a7a0051490e11346ad689436711e385c","src/aarch64_linux.rs":"a4bf136ba1624f253132a8588aac438ce23244a16655149320338ac980ad48cc","src/arm.rs":"d26d44f9e9a8b79b6b3a44373c454da401ce2040348de55688bb637d18d7672b","src/arm_linux.rs":"35a4cb7b75015543feb15b0c692da0faf0e6037d3b97a4a18067ba416eae1a70","src/float/add.rs":"cfb03a04c339054463e63db643455e61313079061759a85823d7a4ce44823837","src/float/cmp.rs":"01fae56128e062c9581d53f90b7d110c9c5083093690227b25bd412c5e17362e","src/float/conv.rs":"8bf710288f88cfbf67e510f68abbb5a4f7173d2ea9ef32f98d594935fc051641","src/float/div.rs":"c945c0692f1127a471a317b77a73d4c1e23b7c802413cc422054e782266e277b","src/float/extend.rs":"a76854d816453aa6e0ec6e047c10ace22634bfb3b9b7b11311b33a65a23997aa","src/float/mod.rs":"a91cf65abb6e715c5559e3e4bd87a69cd99a9552d54804d0b7137c02c513f158","src/float/mul.rs":"230048d5ff8279d560ed834b3c8d41e5961d21fd9579f47466602409fe133cd3","src/float/pow.rs":"64d1d0b02085b7d2e565b6b2115691819ad86bd730247038c9176e8253ea623f","src/float/sub.rs":"365e744e3d23badca8ecf2949e468c9119aa5d49d5406830b7ffdf8231e634ae","src/float/trunc.rs":"5862eb01674119ea7fe137e1b6c2f40c2739c8a5372487e0b492cbd50e123d5b","src/int/addsub.rs":"89d9687f662a5cb7a57c9b42d056775c33e4f935b7285f5f1558c7ca4b605133","src/int/leading_zeros.rs":"ccf5e9d098c80034dcf6e38437c9a2eb670fa8043558bbfb574f2293164729a6","src/int/mod.rs":"bab1b77535ceebdebb89fd4e59e7105f8c45347bb638351a626615b24544a0b1","src/int/mul.rs":"ead0733d605575eba996f94cdf804e5e6eaab290e213707a40278863b1889d30","src/int/sdiv.rs":"01d62e65f34ec0d3dbca41ea350e241367d4cf8dcc55882e09c701d4e84ae895","src/int/shift.rs":"ade15d5ede477e2cc21d7538ffe26efe45880bbfb6e3a2924e05c99b4b371b61","src/int/specialized_div_rem/asymmetric.rs":"27f5bf70a35109f9d4e4e1ad1e8003aa17da5a1e436bf3e63a493d7528a3a566","src/int/specialized_div_rem/binary_long.rs":"6bdb94c349705e68ca17ae6ac53a87658d2e0b1860ee72d73c53cc9d171062ae","src/int/specialized_div_rem/delegate.rs":"9df141af98e391361e25d71ae38d5e845a91d896edd2c041132fd46af8268e85","src/int/specialized_div_rem/mod.rs":"3f6c132fecf9bec02e403e38c1c93ab4dc604819bec690e9a83c573cea40339b","src/int/specialized_div_rem/norm_shift.rs":"3be7ee0dea545c1f702d9daf67dad2b624bf7b17b075c8b90d3d3f7b53df4c21","src/int/specialized_div_rem/trifecta.rs":"87eef69da255b809fd710b14f2eb3f9f59e3dac625f8564ebc8ba78f9763523b","src/int/udiv.rs":"e451ead3c1c8cf38c71288d7473d6fb47e567c33d07f68b39e91081b1dff346c","src/lib.rs":"5bcf6cec1b152730566d4ecdca94421647f49ed9d1fd05bce545104334ec988a","src/macros.rs":"af2adb26bf636d54f09cc7399d455c256081347f8d52aefd5e23b7cdcb9d03d5","src/math.rs":"b3df5e710a2ff8fe04c1e8c56a12c2b085343bfba1abae8878218565430f4e25","src/mem/impls.rs":"8b389b9aeb43dd55351a86abd4b5fc311f7161e1a4023ca3c5a4c57b49650881","src/mem/mod.rs":"714763d045a20e0a68c04f929d14fb3d7b28662dda4a2622970416642af833dc","src/mem/x86_64.rs":"2f29fb392086b3f7e2e78fcfcbf0f0e205822eb4599f1bdf93e41833e1bd2766","src/probestack.rs":"ef5c07e9b95de7b2b77a937789fcfefd9846274317489ad6d623e377c9888601","src/riscv.rs":"50ddd6c732a9f810ab6e15a97b22fdc94cfc1dea09c45d87c833937f9206bee0","src/x86.rs":"117b50d6725ee0af0a7b3d197ea580655561f66a870ebc450d96af22bf7f39f6","src/x86_64.rs":"aa26062784eff574fee4075d23b0ea2fdd1bdbc9a7458b099c8fd307ee61024f"},"package":"01a6d58e9c3408138099a396a98fd0d0e6cfb25d723594d2ae48b5004513fd5b"} \ No newline at end of file
+{"files":{"Cargo.lock":"accac1c724d759e2592c5bc13dbec648f89f3f8f2c282bfdf0304caba22a739e","Cargo.toml":"b0b19b312fcb8a2213695d5177a6d5e1ca135d8b22245ba5e67f7d2df4aa401a","LICENSE.txt":"0e13fed90654e0bc677d624a2d770833a09541fe0c0bdb3d051b3d081207393a","README.md":"693b529db2e5dd13069c05ef2e76e26c1fe1b2a590b07cd8e26dfb2df087ba62","build.rs":"c3d31731175775918d2e7b3e4c19457085be966b85992e33e75435bda32acd9f","examples/intrinsics.rs":"5a1b3dbebfb8bbf96a1e9001f04f31a6e408d0e384c6d2f71e2d79c0945e1be5","libm/src/math/acos.rs":"fb066ba84aba1372d706425ec14f35ff8d971756d15eeebd22ecf42a716493bb","libm/src/math/acosf.rs":"a112b82309bba1d35c4e3d6ad4d6c21ef305343d9ab601ddf4bc61d43bc9f1af","libm/src/math/acosh.rs":"99de01ded7922bb93a882ad5ad8b472b5cae0059dea0bdca2077f65e94483150","libm/src/math/acoshf.rs":"10750c4d39ef6717b20a15ef1ce43e15eb851682d2f820f7e94501adec98b9a5","libm/src/math/asin.rs":"095a1e98996daff45df0b154ca0ec35bbf31db964ee9fdda0207308cb20df441","libm/src/math/asinf.rs":"49cccb4db2881982643a4a7d5453f4f8daf527711bbb67313607a3c178856d61","libm/src/math/asinh.rs":"4dd51affa71cce34a192ad66154e248f8d1c4b40fb497f29052333e425bb740f","libm/src/math/asinhf.rs":"914bfecf449f5e2bce786aa12c056d419073c6011d41c1bab7c39ba765fa4c53","libm/src/math/atan.rs":"d4fe46e1c5739dd09997869dcfbc3c85f03c534af52e700d6c6bcf9c3fedda07","libm/src/math/atan2.rs":"2623bc8ca707d13a7092ce49adf68e9cbf4452ad1bf4a861dc40ca858606a747","libm/src/math/atan2f.rs":"dd01943e0e1f1955912e5c3ffc9467529cf64bd02ac0a6ad5ab31dbe6657f05d","libm/src/math/atanf.rs":"e41b41569474a59c970ede3538e00bda4072cf4d90040017101cc79d7dc28caa","libm/src/math/atanh.rs":"57a8fb3f0f116fa4a966ac6bc2abd5f80236ead8e79013f468bd3786921f7110","libm/src/math/atanhf.rs":"6f2e57aaec1b5fc7609cb3938b3d155f51b4237dbda530739c34a0448cd9beb9","libm/src/math/cbrt.rs":"f2c45612d2eecd93cfcdd9ebf824c754fc8f8dfd6d16862c0b9c4ccea78c2a0f","libm/src/math/cbrtf.rs":"ad0b483854aa9f17a44d36c049bf0e8ebab34c27e90b787c05f45cc230ec7d19","libm/src/math/ceil.rs":"57ba5b6e207a0ccbd34190d1aa544389ca12126be23821dfb5746497f620ce03","libm/src/math/ceilf.rs":"c922a0475a599b9ea5473e615f74700b99707cebd6927f24ea59cb2a3cb3bbc3","libm/src/math/copysign.rs":"8b6440a251f0f1509d87f18122f74d0d5c03d0b60517e89e441434a3c5d84591","libm/src/math/copysignf.rs":"87d35436d224852ada93a2e93f6730cf1a727b808dd10e7d49ab4585866e336b","libm/src/math/cos.rs":"74babdc13ede78e400c5ca1854c3e22d2e08cbdc5618aefa5bba6f9303ef65b6","libm/src/math/cosf.rs":"09c40f93c445b741e22477ceedf163ca33b6a47f973f7c9876cfba2692edb29c","libm/src/math/cosh.rs":"0d0a7cef18577f321996b8b87561963139f754ad7f2ea0a3b3883811f3f0693a","libm/src/math/coshf.rs":"be8ca8739e4cf1978425b349f941cb4838bba8c10cb559c7940b9fd4fdde21ad","libm/src/math/erf.rs":"de69e6669ce1014e5b5086a7a6d01c4755f2f0590e204d2a77bea455764114f7","libm/src/math/erff.rs":"6acdbb07f74296067bb0380b850918cfb5806a89f9ff04352a7a0b921d728944","libm/src/math/exp.rs":"ca7405ad0d1993fffcf9aae96f9256307bed3c4916545aaebd1cf1d2df1807fa","libm/src/math/exp10.rs":"2e136c6ecedd8e57a6c31796f57fae4546fcfd8bc6be66c836f553df9c74b907","libm/src/math/exp10f.rs":"9a3ce506ec587066a355ab74e0eb69a03a214ac405718087ae9772365050b20b","libm/src/math/exp2.rs":"94a9304a2ce3bc81f6d2aefd3cde6faa30f13260d46cb13692863cdea1c9a3a1","libm/src/math/exp2f.rs":"785f2630accd35118ec07bf60273e219ed91a215b956b1552eeea5bc2a708cc8","libm/src/math/expf.rs":"ec14c18f891a9e37735ec39e6fc2e9bf674a2c2e083f22e2533b481177359c98","libm/src/math/expm1.rs":"124069f456c8ad331f265c7509d9e223b2a300e461bbfd3d6adfdcdd2ee5b8ac","libm/src/math/expm1f.rs":"18e2116d31ea8410051cc709b9d04b754b0e3ba6758ee1bf0b48749f4999b840","libm/src/math/expo2.rs":"4f4f9fecfccb43f30c2784aa7c0bb656754a52b8ab431f7d1b551c673ab133f1","libm/src/math/fabs.rs":"e6c7db39f98508098cdf64ac0c2f53866c466149a7490afb9fe22b44c4dd81b3","libm/src/math/fabsf.rs":"83a1f5f4d9ca899ba2b701d7332e18b40258b83e111db4c5d8fab2cc1be58aa3","libm/src/math/fdim.rs":"8ec091996005207297c2389ae563e1b18dbc6a9eac951de29a976c5cd7bc32a7","libm/src/math/fdimf.rs":"c7f3f2269834d55be26b6580ddc07c42531577955fa4de35bad1e2a361085614","libm/src/math/fenv.rs":"916ae11e4763588518d64dee82afb41be9d1ee38ecc0679c821d4e7e22cd3dc5","libm/src/math/floor.rs":"5050804cae173af6775c0678d6c1aafb5ca2b744bc8a2f50d9d03b95dcee1fb0","libm/src/math/floorf.rs":"c903e0c57bc60a888c513eb7a873a87a4759ba68fc791b6b931652f8ee74cc03","libm/src/math/fma.rs":"d87963472cd5bfcb83eb4010c67f3653857cf28f11378e06d63abae14c723e5d","libm/src/math/fmaf.rs":"1db6ee0d47ddbdb441cfe167edf89b431239f5805708fd0376cf5c01349a4bd6","libm/src/math/fmax.rs":"f6c8e96a8b1a170648d2fa3513e7b6b459085d708c839869f82e305fe58fac37","libm/src/math/fmaxf.rs":"dff0025433232e8a5ec7bd54d847ccf596d762ea4e35f5c54fbaac9404d732fd","libm/src/math/fmin.rs":"95b6cb66ca0e0e22276f0bf88dbe8fb69796a69a196a7491bd4802efbcf2e298","libm/src/math/fminf.rs":"304bc839b15ea3d84e68d2af9f40524ec120d30a36a667b22fcb98a6c258f4c7","libm/src/math/fmod.rs":"a1c0550fc7df8164733d914e222ff0966a2ab886d6e75a1098f24fe0283ae227","libm/src/math/fmodf.rs":"ee51ed092c0eeb8195f35735ff725cfd46612e0d689a7c483538bd92fbe61828","libm/src/math/frexp.rs":"28af70026922a8ab979744c7ad4d8faba6079c4743b7eeb6d14c983a982fbbcc","libm/src/math/frexpf.rs":"2e2593ae8002ba420809ebfaf737ef001cdc912354be3d978a8c0cb930350d4d","libm/src/math/hypot.rs":"841131c4a0cea75bc8a86e29f3f6d0815a61fc99731c9984651ce83d3050d218","libm/src/math/hypotf.rs":"5f317323edc2eb699580fe54b074b7e570a7734d51a0a149c0b49b54470a836c","libm/src/math/ilogb.rs":"d178ad7ca3439f82d565962b143f20448e45b2e2c51357b127abaec683297e32","libm/src/math/ilogbf.rs":"00f2b1b0496e21c6a42d68aea74d7156fa2ff0a735741b9051f3ca1cf0f57586","libm/src/math/j0.rs":"9572b6396c489927d332d0e717920e61ec0618e5e9c31f7eeeec70f5e4abab06","libm/src/math/j0f.rs":"802c8254bded9b3afb6eea8b9af240038a5a4a5d811396729f69ca509e3e7d87","libm/src/math/j1.rs":"97b1af1611fa3d110c2b349ee8e4176100132ea1391b619086b47ac063b81803","libm/src/math/j1f.rs":"9c9b128752e8ea2e7d81b637ba84907ab54a545e7602c49167b313743927930b","libm/src/math/jn.rs":"847d122334e5707ad9627146cddccc082a1f2f5bcd3e5ef54399013a7007ce88","libm/src/math/jnf.rs":"4045076f7d1a1b89882ed60d4dd60a4cbbc66b85cfb90491378c8015effcc476","libm/src/math/k_cos.rs":"f34a69e44d6b8901b03b578a75972f438ab20a7b98a0903fc1903d6fde3899be","libm/src/math/k_cosf.rs":"8f7117ff21cebf8e890a5bcfd7ea858a94172f4172b79a66d53824c2cb0888b1","libm/src/math/k_expo2.rs":"eb4ca9e6a525b7ea6da868c3cb136896682cc46f8396ba2a2ebc3ae9e9ba54b0","libm/src/math/k_expo2f.rs":"d51ad5df61cb5d1258bdb90c52bfed4572bb446a9337de9c04411ed9454ae0cb","libm/src/math/k_sin.rs":"14b2aba6ca07150c92768b5a72acaf5cde6a11d6619e14896512a7ba242e289a","libm/src/math/k_sinf.rs":"2775fcc710807164e6f37a4f8da3c8143cd5f16e19ce7c31c5591522151d7a96","libm/src/math/k_tan.rs":"a72beae4ccd9631eeeb61d6365bbeecae81c8411f3120a999c515cca0d5ea5c5","libm/src/math/k_tanf.rs":"6a794be56fa4b2f60452b9bab19af01c388f174560acbf829a351378ea39495d","libm/src/math/ldexp.rs":"b647f0096e80e4d926d8dd18d294c892ee2cb1778effe2c5e1b2664ae5cb1a4e","libm/src/math/ldexpf.rs":"98743fad2cd97a7be496f40ba3157ac1438fce0d0c25d5ab90c3b8c71c3fd0ed","libm/src/math/lgamma.rs":"0edd18e4f96bfcbe8b1b5af3eeca5208cd6d2d479dfa5ad117c9dfeccecf614f","libm/src/math/lgamma_r.rs":"f44a37aeccd56559ef784ae8edf217d14ad5cc2d910f0a65e70ffc86d7dc23dd","libm/src/math/lgammaf.rs":"967845357758b868a571857ec001f9f9154001110b8e97c08b6d10586bed9c49","libm/src/math/lgammaf_r.rs":"7143016d60e11fa235d53968125e57231b1104ce52149b5e1eed39629e0d1ff0","libm/src/math/log.rs":"b5e0c5f30d9e94351488732801be3107c12b854c3f95ad37e256dd88eeca408f","libm/src/math/log10.rs":"3425ff8be001fd1646ba15e254eb6ef4bdc6ccaf0cbee27ddf1fa84e04178b90","libm/src/math/log10f.rs":"fee4f71879bc4c99259e68c0c641364901629fb29a8ebddfcc0d090102cceddd","libm/src/math/log1p.rs":"9cf400852f165e6be19b97036ae9521fb9ca857d0a9a91c117d9123221622185","libm/src/math/log1pf.rs":"2716e6d2afa271996b7c8f47fd9e4952c88f4c1fd8c07c3e8ce8c62794bf71d8","libm/src/math/log2.rs":"dbbbfbaaa8aa6a4dbefea554ea3983090a9691228b011910c751f6adca912c40","libm/src/math/log2f.rs":"92a90350d8edce21c31c285c3e620fca7c62a2366008921715945c2c73b5b79f","libm/src/math/logf.rs":"845342cffc34d3db1f5ec12d8e5b773cd5a79056e28662fcb9bcd80207596f50","libm/src/math/mod.rs":"d694260529d51d0bc17f88ad557d852b9bb0bc3f7466cf7f62b679dc95ebba42","libm/src/math/modf.rs":"d012ed5a708ef52b6d1313c22a46cadaf5764dde1220816e3df2f03a0fcc60ae","libm/src/math/modff.rs":"f8f1e4c27a85d2cdb3c8e74439d59ef64aa543b948f22c23227d02d8388d61c2","libm/src/math/nextafter.rs":"3282e7eef214a32736fb6928d490198ad394b26b402b45495115b104839eebfe","libm/src/math/nextafterf.rs":"0937dc8a8155c19842c12181e741cec1f7df1f7a00cee81fcb2475e2842761b7","libm/src/math/pow.rs":"17c38297c5bf99accd915f292b777f8716ecf328916297c8bb9dfde6fd8ce522","libm/src/math/powf.rs":"2c423a0ea57fdc4e20f3533f744c6e6288c998b4de8f2914fafaa0e78be81b04","libm/src/math/rem_pio2.rs":"3e53234977daf61c89c29c940791714aad2f676a6f38188c7d17543a2aa8806f","libm/src/math/rem_pio2_large.rs":"482f31ff4e4eacf885f6130ae26a1d59f76b382059d6c742f30e5036811d3ca8","libm/src/math/rem_pio2f.rs":"07fb48f6d5cbadfd32ce4124b2b74af98b8391a2a6f36ce2a7d32e4500cb65ac","libm/src/math/remainder.rs":"63865f4370853c476b45bb27a5c54a4072146aa4a626835ae5263871a4e7e5dc","libm/src/math/remainderf.rs":"dd3fa432dbda8f2135428198be7bd69c57f8d13df3f365b12f52bf6a82352ac4","libm/src/math/remquo.rs":"3cc0bf55069f165c4843f2c358b3a27279c01e8cdd99f9057a3f7f31f45408f2","libm/src/math/remquof.rs":"cc749e18ecb7e766b8b8eeabdbf89ac99087d3d587e71e30f690676a3d2c1f9b","libm/src/math/rint.rs":"2c17047bcfd0ccdca8669f7cf70c628154ae4abc142660f30e37f9c073928706","libm/src/math/rintf.rs":"3b54af9eaa1bb6808159ca435246acf6a4e7aebbc344e3f4a4c5636345155897","libm/src/math/round.rs":"f10797ef15dd34a74e912ba8621d60bc0200c87b94308c9de3cc88d7aec4feb4","libm/src/math/roundf.rs":"27e37cfcf82373709e7debf9c0c18f7ed00ae0f5d97a214c388041f7a6996d35","libm/src/math/scalbn.rs":"b5c9d6d4177fe393cbfe1c634d75ce14b754f6cbce87c5bf979a9661491748a2","libm/src/math/scalbnf.rs":"4f198d06db1896386256fb9a5ac5b805b16b836226c18780a475cf18d7c1449c","libm/src/math/sin.rs":"bb483a2138ca779e03a191222636f0c60fd75a77a2a12f263bda4b6aa9136317","libm/src/math/sincos.rs":"1cf62a16c215e367f51078a3ba23a3f257682032a8f3c657293029a886b18d82","libm/src/math/sincosf.rs":"b0f589e6ada8215944d7784f420c6721c90387d799e349ce7676674f3c475e75","libm/src/math/sinf.rs":"dcddac1d56b084cbb8d0e019433c9c5fe2201d9b257a7dcf2f85c9a8f14b79cf","libm/src/math/sinh.rs":"d8ee4c7af883a526f36c1a6da13bb81fba9181b477e2f2538161a2bee97edc35","libm/src/math/sinhf.rs":"d06eb030ba9dbf7094df127262bfe99f149b4db49fa8ab8c15499660f1e46b26","libm/src/math/sqrt.rs":"5f3a0a582b174fcfccb9c5274899cb05b664ccb92bf1d42caa58890947b68256","libm/src/math/sqrtf.rs":"da926ac27af6eecdf8b62d8baeefcfe1627110592e44298f6b7f05b7ac12fe7e","libm/src/math/tan.rs":"930ecedaadc60f704c2dfa4e15186f59713c1ba7d948529d215223b424827db5","libm/src/math/tanf.rs":"894156a3b107aee08461eb4e7e412fc049aa237d176ae705c6e3e2d7060d94e3","libm/src/math/tanh.rs":"f1f08eb98ed959a17370a7aaf0177be36e3764543424e78feb033ed3f5e8ec98","libm/src/math/tanhf.rs":"74027b0c672a4e64bdef6d7a3069b90caec50e1e7dbb2c12d2828f310502f41e","libm/src/math/tgamma.rs":"c889cfa49bbeb4dbb0941fe9fac3b4da7d5879dcf04a3b9bb6e56de529baf374","libm/src/math/tgammaf.rs":"0737b34777095d0e4d07fe533e8f105082dd4e8ece411bba6ae5993b45b9388c","libm/src/math/trunc.rs":"642264897cc1505e720c8cf313be81aa9fd53aae866644a2e988d01dbc77fd8a","libm/src/math/truncf.rs":"dee3607baf1af0f01deae46e429e097234c50b268eaefebbe716f19f38597900","src/aarch64.rs":"c414ad2cd6af35bf0bfe1ddd0d2e6e07a7a0051490e11346ad689436711e385c","src/aarch64_linux.rs":"a4bf136ba1624f253132a8588aac438ce23244a16655149320338ac980ad48cc","src/arm.rs":"d26d44f9e9a8b79b6b3a44373c454da401ce2040348de55688bb637d18d7672b","src/arm_linux.rs":"35a4cb7b75015543feb15b0c692da0faf0e6037d3b97a4a18067ba416eae1a70","src/float/add.rs":"cfb03a04c339054463e63db643455e61313079061759a85823d7a4ce44823837","src/float/cmp.rs":"01fae56128e062c9581d53f90b7d110c9c5083093690227b25bd412c5e17362e","src/float/conv.rs":"8bf710288f88cfbf67e510f68abbb5a4f7173d2ea9ef32f98d594935fc051641","src/float/div.rs":"c945c0692f1127a471a317b77a73d4c1e23b7c802413cc422054e782266e277b","src/float/extend.rs":"a76854d816453aa6e0ec6e047c10ace22634bfb3b9b7b11311b33a65a23997aa","src/float/mod.rs":"a91cf65abb6e715c5559e3e4bd87a69cd99a9552d54804d0b7137c02c513f158","src/float/mul.rs":"230048d5ff8279d560ed834b3c8d41e5961d21fd9579f47466602409fe133cd3","src/float/pow.rs":"64d1d0b02085b7d2e565b6b2115691819ad86bd730247038c9176e8253ea623f","src/float/sub.rs":"365e744e3d23badca8ecf2949e468c9119aa5d49d5406830b7ffdf8231e634ae","src/float/trunc.rs":"5862eb01674119ea7fe137e1b6c2f40c2739c8a5372487e0b492cbd50e123d5b","src/int/addsub.rs":"89d9687f662a5cb7a57c9b42d056775c33e4f935b7285f5f1558c7ca4b605133","src/int/leading_zeros.rs":"ccf5e9d098c80034dcf6e38437c9a2eb670fa8043558bbfb574f2293164729a6","src/int/mod.rs":"bab1b77535ceebdebb89fd4e59e7105f8c45347bb638351a626615b24544a0b1","src/int/mul.rs":"ead0733d605575eba996f94cdf804e5e6eaab290e213707a40278863b1889d30","src/int/sdiv.rs":"01d62e65f34ec0d3dbca41ea350e241367d4cf8dcc55882e09c701d4e84ae895","src/int/shift.rs":"ade15d5ede477e2cc21d7538ffe26efe45880bbfb6e3a2924e05c99b4b371b61","src/int/specialized_div_rem/asymmetric.rs":"27f5bf70a35109f9d4e4e1ad1e8003aa17da5a1e436bf3e63a493d7528a3a566","src/int/specialized_div_rem/binary_long.rs":"6bdb94c349705e68ca17ae6ac53a87658d2e0b1860ee72d73c53cc9d171062ae","src/int/specialized_div_rem/delegate.rs":"9df141af98e391361e25d71ae38d5e845a91d896edd2c041132fd46af8268e85","src/int/specialized_div_rem/mod.rs":"3f6c132fecf9bec02e403e38c1c93ab4dc604819bec690e9a83c573cea40339b","src/int/specialized_div_rem/norm_shift.rs":"3be7ee0dea545c1f702d9daf67dad2b624bf7b17b075c8b90d3d3f7b53df4c21","src/int/specialized_div_rem/trifecta.rs":"87eef69da255b809fd710b14f2eb3f9f59e3dac625f8564ebc8ba78f9763523b","src/int/udiv.rs":"e451ead3c1c8cf38c71288d7473d6fb47e567c33d07f68b39e91081b1dff346c","src/lib.rs":"42638f66c9f864a3c6db25acea1d5e8ad224b0db79f3d0eea37ec582bf820b84","src/macros.rs":"33166bf8978961cf0179baa1e52148345414cfe6217bded4fbaa909a99f1a6d1","src/math.rs":"ff1c7c659f7dcf27dd968364a3675d62078e7ea74f72e25b04f6aa8d6f2d01c2","src/mem/impls.rs":"8b389b9aeb43dd55351a86abd4b5fc311f7161e1a4023ca3c5a4c57b49650881","src/mem/mod.rs":"714763d045a20e0a68c04f929d14fb3d7b28662dda4a2622970416642af833dc","src/mem/x86_64.rs":"2f29fb392086b3f7e2e78fcfcbf0f0e205822eb4599f1bdf93e41833e1bd2766","src/probestack.rs":"ef5c07e9b95de7b2b77a937789fcfefd9846274317489ad6d623e377c9888601","src/riscv.rs":"50ddd6c732a9f810ab6e15a97b22fdc94cfc1dea09c45d87c833937f9206bee0","src/x86.rs":"117b50d6725ee0af0a7b3d197ea580655561f66a870ebc450d96af22bf7f39f6","src/x86_64.rs":"aa26062784eff574fee4075d23b0ea2fdd1bdbc9a7458b099c8fd307ee61024f"},"package":"a3b73c3443a5fd2438d7ba4853c64e4c8efc2404a9e28a9234cc2d5eebc6c242"} \ No newline at end of file
diff --git a/vendor/compiler_builtins/Cargo.lock b/vendor/compiler_builtins/Cargo.lock
index 1c374638f..bffe5f1e2 100644
--- a/vendor/compiler_builtins/Cargo.lock
+++ b/vendor/compiler_builtins/Cargo.lock
@@ -4,13 +4,13 @@ version = 3
[[package]]
name = "cc"
-version = "1.0.0"
+version = "1.0.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7db2f146208d7e0fbee761b09cd65a7f51ccc38705d4e7262dad4d73b12a76b1"
+checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
[[package]]
name = "compiler_builtins"
-version = "0.1.101"
+version = "0.1.103"
dependencies = [
"cc",
"rustc-std-workspace-core",
diff --git a/vendor/compiler_builtins/Cargo.toml b/vendor/compiler_builtins/Cargo.toml
index 269e5b020..05b0f72b9 100644
--- a/vendor/compiler_builtins/Cargo.toml
+++ b/vendor/compiler_builtins/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2018"
name = "compiler_builtins"
-version = "0.1.101"
+version = "0.1.103"
authors = ["Jorge Aparicio <japaricious@gmail.com>"]
links = "compiler-rt"
include = [
diff --git a/vendor/compiler_builtins/build.rs b/vendor/compiler_builtins/build.rs
index 10c7aaa63..048611677 100644
--- a/vendor/compiler_builtins/build.rs
+++ b/vendor/compiler_builtins/build.rs
@@ -1,4 +1,4 @@
-use std::{collections::HashMap, env, sync::atomic::Ordering};
+use std::{collections::BTreeMap, env, sync::atomic::Ordering};
fn main() {
println!("cargo:rerun-if-changed=build.rs");
@@ -118,7 +118,7 @@ fn generate_aarch64_outlined_atomics() {
// Generate different macros for add/clr/eor/set so that we can test them separately.
let sym_names = ["cas", "ldadd", "ldclr", "ldeor", "ldset", "swp"];
- let mut macros = HashMap::new();
+ let mut macros = BTreeMap::new();
for sym in sym_names {
macros.insert(sym, gen_macro(sym));
}
@@ -146,7 +146,7 @@ fn generate_aarch64_outlined_atomics() {
let mut buf = String::new();
for macro_def in macros.values().chain(std::iter::once(&cas16)) {
buf += macro_def;
- buf += "}; }";
+ buf += "}; }\n";
}
let dst = std::env::var("OUT_DIR").unwrap() + "/outlined_atomics.rs";
std::fs::write(dst, buf).unwrap();
@@ -320,6 +320,7 @@ mod c {
// include them.
if target_os != "ios"
&& target_os != "watchos"
+ && target_os != "tvos"
&& (target_vendor != "apple" || target_arch != "x86")
{
sources.extend(&[
@@ -391,6 +392,7 @@ mod c {
if target_arch == "arm"
&& target_os != "ios"
&& target_os != "watchos"
+ && target_os != "tvos"
&& target_env != "msvc"
{
sources.extend(&[
diff --git a/vendor/compiler_builtins/src/lib.rs b/vendor/compiler_builtins/src/lib.rs
index d1195a4a8..3e5491878 100644
--- a/vendor/compiler_builtins/src/lib.rs
+++ b/vendor/compiler_builtins/src/lib.rs
@@ -45,11 +45,8 @@ pub mod int;
#[cfg(any(
all(target_family = "wasm", target_os = "unknown"),
- all(target_arch = "x86_64", target_os = "none"),
- all(target_arch = "x86_64", target_os = "uefi"),
- all(target_arch = "arm", target_os = "none"),
- all(target_arch = "xtensa", target_os = "none"),
- all(target_arch = "mips", target_os = "none"),
+ target_os = "uefi",
+ target_os = "none",
target_os = "xous",
all(target_vendor = "fortanix", target_env = "sgx"),
target_os = "windows"
diff --git a/vendor/compiler_builtins/src/macros.rs b/vendor/compiler_builtins/src/macros.rs
index d2b5734d5..2aa9a742c 100644
--- a/vendor/compiler_builtins/src/macros.rs
+++ b/vendor/compiler_builtins/src/macros.rs
@@ -369,7 +369,7 @@ macro_rules! intrinsics {
#[cfg(target_arch = "arm")]
pub mod $alias {
#[cfg_attr(not(feature = "mangled-names"), no_mangle)]
- #[cfg_attr(any(all(not(windows), not(target_vendor="apple"), feature = "weak-intrinsics")), linkage = "weak")]
+ #[cfg_attr(any(all(not(windows), not(target_vendor="apple")), feature = "weak-intrinsics"), linkage = "weak")]
pub extern "aapcs" fn $alias( $($argname: $ty),* ) $(-> $ret)? {
super::$name($($argname),*)
}
diff --git a/vendor/compiler_builtins/src/math.rs b/vendor/compiler_builtins/src/math.rs
index f8f9d225b..63d858333 100644
--- a/vendor/compiler_builtins/src/math.rs
+++ b/vendor/compiler_builtins/src/math.rs
@@ -22,7 +22,7 @@ macro_rules! no_mangle {
not(target_env = "wasi")
),
target_os = "xous",
- all(target_arch = "x86_64", target_os = "uefi"),
+ target_os = "uefi",
all(target_arch = "xtensa", target_os = "none"),
all(target_vendor = "fortanix", target_env = "sgx")
))]
@@ -94,7 +94,7 @@ no_mangle! {
not(target_env = "wasi")
),
target_os = "xous",
- all(target_arch = "x86_64", target_os = "uefi"),
+ target_os = "uefi",
all(target_arch = "xtensa", target_os = "none"),
all(target_vendor = "fortanix", target_env = "sgx"),
target_os = "windows"
diff --git a/vendor/derivative/.cargo-checksum.json b/vendor/derivative/.cargo-checksum.json
new file mode 100644
index 000000000..87be63889
--- /dev/null
+++ b/vendor/derivative/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"CHANGELOG.md":"092ab0f1848e7d8df682d4f2949773a530e5f08e5a20963a1e0c87977c9ecd94","CONTRIBUTING.md":"c0652d83a460d4a7fa4d25a88cd6b436d7bf2da83186cd18170187fe43297502","Cargo.toml":"facfa3aa874a8e11be2678464da82680a992c78753ba8d8ba90fda57be9cc6e5","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"e94997ba9934ce993406caf5d5002a99ac7b0692363cb801e777b961d1934b98","README.md":"65c92addca07a0fc7c01e5399848876d50548e210e5272388d2c42286a5a421e","book.toml":"12a9954378c736c880cb3347355ed0a54c1bc30424d3ef01782bdf869c203dad","doc/Clone.md":"1b6eaa318c4549537c42a7c5b2940ca2eb7af2315dea43d4fe814ad1ae558642","doc/Debug.md":"5c94cf9a59d2b049c5b77ae503be8a275610009c12d7bf1475dffba85737e0e5","doc/Default.md":"30f9e3bc8c5570751d5e8cc8c06326d6b0c8fcd189296d4e3864ad3825400e45","doc/Hash.md":"f3fd21be426bc0fd823245445ed7765d9b158934686a1c7bb3011f99e2eba287","doc/README.md":"0107b47c86b3a0c4efcd719ddfed3bb50cb8aa87f02484bf6a2349b2a7b92963","doc/SUMMARY.md":"e4a8fbebc75befcac4c17cc8d2b06c593b4ab143efc75bb563d22818c6a5e680","doc/cmp.md":"42f95d52f1e393e59935f8e0dd19d87d4c664e8eaab80e8cf20afd18afff9374","doc/custom.css":"6d26d0483b1b69b236d7a320c5f95b24186d7d1d8609ad4e17433719898a3619","doc/debug-transparent-orig.rs":"dd9ae1fc8914ea0ca6167a22f94e6679cfe5d2e3735515c04c42c51ba265a6ef","doc/debug-transparent.rs":"923db7de034a9dfec13fd60231df89d83a680746220d89474b47fd96e3cab567","doc/default-enum-orig.rs":"d1390b4ca8a1e2482e2beb70ebac9a4b8922af8fba54fc2cc41623549865c4e0","doc/default-enum.rs":"3f87634a2c79b2ce526ae7cdfab3d037d1f744072b445f0d3c8a155f456b83bc","doc/default-value-orig.rs":"873c599d74003f4896ae7785b2c60e3fbc0625e56fd51c865243acda318025c6","doc/default-value.rs":"97fc93cb3c138fb5956cd7a221454a2cdc5dd65a1fdf25bc3701d4071e55d7d6","doc/eq-ignore-orig.rs":"de33bd171339aa7ff39bc891665d4b8cd6b557212371eee69395f0975047fb3f","doc/eq-ignore.rs":"df84bfce35e3d3add596b6c83b823471911340e051d0b00d320bef5f5953135e","doc/styles/website.css":"5aa8dfc3c73061bb3f01172057613b623c038c3c3df65be7456711279f71f2dc","src/ast.rs":"955c218a9e33e60d74019fe5b14eb01f232f90e0d152d6bdc61d4277cb0da82f","src/attr.rs":"55c5a2db82ade119288f0fabd713cd16274d28c01465c1a52abfd991a9f839a2","src/bound.rs":"5301cd93e7b38fa4cf306ee48a58de88a25f347d960f44e34ded7c5b7e92148b","src/clone.rs":"0259b59bdf187d78b55a46095a08495262e1ff674f117e6af56078acc1c7a9a8","src/cmp.rs":"a4a47ab3dcfee3f236cc611e76bdb5cf7bd0fa24593e48a4e2ad972b97cb63d9","src/debug.rs":"6747d5f78d5918d5e133878f03b574bc6b1b239ca95397e0c9eb414cc80cbc01","src/default.rs":"fc3e553a5ed104b5d43b21249c123a555098fb848b88e17815833f3941ad5e38","src/hash.rs":"67147861123a28e7e390b267a46151ee23bdd5e37347be08c451c831e37861c1","src/lib.rs":"9007d81f66cf3965fdb9a30adfd7c8d3e402aafb3e4cfa8da07ea1cd06d686cc","src/matcher.rs":"3e9754ef40f6546852e3290a33bb220c3c7dd21908d5edc339f4083d2e0659af","src/paths.rs":"94e76fdc5e7355c46766420e22fc79be9870f1cc2ecff9b84df3b00bd316bbac","src/utils.rs":"a14bd907e2b39f30e42b19e869a360f45f35bcf69f2c5eec6a237f53b02a24c9","tests/clippy-warning-clone-from.rs":"f693afac895843ffca6f0bd287695c51ca08a395cbbca088d2c8f7efeb0800d5","tests/compile-fail/derive-debug-unused.rs":"e27b0afef3e828aee94f9fb4a56f388e9983f3643a18309b256c1edd359e14ac","tests/compile-fail/derive-debug-unused.stderr":"e18e1bcc17edfed30b9d81b2d7106582ca50fcfc6516b223b409ca980b0817ad","tests/compile-fail/derive-debug.rs":"1cce8f5612cf7502cfaccdde74ae3c1c965795fab0b7586ac3619f3852433846","tests/compile-fail/derive-debug.stderr":"41db2d73012ec4cfac8198833eed3b91434a29531c934274ad6dfaadb513f1ee","tests/compile-fail/derive-partial-ord.rs":"5bc715422b33ecef76151ec5c99b10241fdac32116016f67e0dc64efee7a0e81","tests/compile-fail/derive-partial-ord.stderr":"5ea6bd3d52836b70d91e7bdd72cec08aa5690472a7f908b6234eec5648f74c0e","tests/compile-fail/invalid-attribute.rs":"4fa02ae9be8aefc4d4045aa0c50d30845b4d49b1048063ee5b0db99c3b16d0c1","tests/compile-fail/invalid-attribute.stderr":"593106861246871b34b4da72e2d6ba5c6759b298d87c68ff720a9bc7b2cfa193","tests/compile-fail/unknown-attribute.rs":"a746db58ff8e191b75f8a9c10c2eefc86b0f63b729fc8b140a7dd0b6c138ae2f","tests/compile-fail/unknown-attribute.stderr":"d5b24c84484677b618cea25d6896ac85a709e9ddfe907c30bc12afb443a929a5","tests/compile-fail/unknown-derive.rs":"84a4917e3ce627cc3f91930868e383d5f095730dc226e6c60563f3450b473aa0","tests/compile-fail/unknown-derive.stderr":"6e789593968794358d94f463f605491a79820b6c2de84cd46d4efa7ab01106ac","tests/compile-test.rs":"31c30e57d302f7540d721a3bc8381491ecf5441db4ec57a7fac1399d7e4de770","tests/derive-clone-generics.rs":"475f1d3bd1f3b0e916f9ee9f88ae373e64c9a68297a0d46cfc6c44e981a1a209","tests/derive-clone.rs":"358a2a501a4cb3aacf3d7ef2f3bfe5fa72c1fcbd8a1b693ae61cddf5ea468188","tests/derive-debug-bounds.rs":"ddcd33f77cf2bc66e42ea68b9e64f399c66bcf09fc3d24e179761e09c15d2c7d","tests/derive-debug-generics.rs":"8a12be8ae70831a3a0f78dbda062dc631c60870c8e34ca1b750756678e7f1d28","tests/derive-debug-packed.rs":"dab1ab95d0373dc4985971f17088bae5cf54bdf31563ddf898314054d7a79f1d","tests/derive-debug-transparent.rs":"955ec08fa7b72072f02aaf7f0c01e90b2d2e0d5b905bff30e17a872dcbeccbae","tests/derive-debug.rs":"8d22095a24c6c5f8843b68f9c9bd66cd5b4cbf8f77c6bc6bce8903b74ebbc8e7","tests/derive-default-bounds.rs":"c4444ff95e56cee027f767c06750e5311b94e3b31e7d1048093cc944160920f7","tests/derive-default.rs":"4730ce9cc728124f9f132f222030ea303b215d8710d2f46e0d6dc03f06aa81ba","tests/derive-eq-packed.rs":"39183b23d3135110e88a2b02ffc5ef2bcfa9335b8eed9a5625875dd73204eac7","tests/derive-eq.rs":"a50e1cc00a15aeef1af1a2b522eb06e42bf74951762ff2ee3ebd21697841d951","tests/derive-hash.rs":"2ca685c9b23c0a4ecac7a49a7373c2cbc2ad9b6c3cf11d041ea9d47e734415ee","tests/derive-ord-packed.rs":"fb7f43cf57a9d12b4227d41d8c9dc0562fdd6a780949b4eeaa0a127527da444d","tests/derive-ord.rs":"f75f8e93ff3114624fb851b3f8e87cb75b556f4a65d22e0c7bd9386cbed43025","tests/derive-partial-eq-packed.rs":"b4e97dbb4db3fb6c9cd325b289fb28b25b366911eda4fcbf177a0f835bb4c6db","tests/derive-partial-eq.rs":"d698dbbb742d605becea5a53c00f07fcda26fbbc319cef3ceb51ea2d90f369a7","tests/issue-37-turbofish.rs":"a764c62bac99c8b3cbece751842cecebdb095eda82f1799854a91a45519a79aa","tests/issue-55.rs":"6369af939a63b4cc3005cb6dcfcfa11c30fbb95fcf36e6ed507802a8cccc976f","tests/issue-57.rs":"7aa8e493630af3734167f1d682b82b167337efd2dcb15a799e8aa0f40832ddaa","tests/issue-58.rs":"66a341be75c76b4ce0353ed27ca4ab426ce123cb34cc3122aa615bf4f88612a6","tests/issue-67.rs":"aa17dbd0a508f05e5f3b2cd210a67fd6d5f53032dc1dcd81ec99836d4615d422","tests/issue-82.rs":"74338c02ba0c0d287a863bd07a9f6bf849aa46319fb7a82707bcaea188248ad0","tests/rustc-class-implement-traits.rs":"0db94627fa5fd39fc840168acf9a95b3bbf8c4c1dbdc38399f2e89a57391ad1b","tests/rustc-deriving-bounds.rs":"5b36074a476b7ecf1819d3c69d869bf938aa167f54732fd1fd8738fbe0610773","tests/rustc-deriving-clone-array.rs":"66c7d2275578f52e5cd9a64fbf43f1d68a52b7eeabd456509dbb430ef180cf3d","tests/rustc-deriving-clone-enum.rs":"44cdb8703c5b7e14a3921867d638065aacbed0ff0772249aaba3806f9b5d57aa","tests/rustc-deriving-clone-generic-enum.rs":"939c754f019026a60f2ef6320a207261400da08cb8a3a90792b34d95ce7b1291","tests/rustc-deriving-clone-generic-tuple-struct.rs":"e88751ff59207c2b67d462af99437479eea90d1f796304c6f8677e7391b09407","tests/rustc-deriving-clone-struct.rs":"7123824d3ed591527e682270fbc05fa6e11b3e4ba6dffc82136c17d0034ca885","tests/rustc-deriving-clone-tuple-struct.rs":"85464fc39ac16fd84d0fc2e47a54a22ebeb01972c0418b7b9c78801efbd22a3c","tests/rustc-deriving-cmp-generic-enum.rs":"c3f4f5ca69bdf0026d41a4068364ab40097754156ea14ff7588f06e292a43fd8","tests/rustc-deriving-cmp-generic-struct-enum.rs":"b91090b31ee52cb8a07a8393c7a68df0a05ecb4af7d6cce6485c44e102402237","tests/rustc-deriving-cmp-generic-struct.rs":"7d95b78821c7b80da4d76678d7da148ce7575fe0be4c2abb70496c67def06ea7","tests/rustc-deriving-cmp-generic-tuple-struct.rs":"3f61566dd2524d2bc4feabe5605ba4e2f2ebf24fb3d1507bee287e582e96ac6c","tests/rustc-deriving-copyclone.rs":"7afd040a11d557bf403b27ed1c30a512123afaa77841b4e0e1d9cfc0edb497e3","tests/rustc-deriving-default-box.rs":"002f32d294f3e837b2fc98b823248c1131c650b4bbe74ad945c2a6101fa55edf","tests/rustc-deriving-enum-single-variant.rs":"bd3ddd0d1e0244b5632b0292301e8690334b1aff4f4f3d8be1ceaaa96c759e24","tests/rustc-deriving-hash.rs":"bbac3ae2f3a76f1c3fa44ef40b8f64b76274d1d710f8055dc54f2d02dc98baa3","tests/rustc-deriving-in-fn.rs":"8cd53d58a22aa1d5b9a7f26b7fb976e0d55dfd23de181d264964e8a29f126a69","tests/rustc-deriving-meta-multiple.rs":"cdb9f6ef2f46c392d059479778bd1dfbff3c221349c92b6acd2cf2c9ddb37de3","tests/rustc-deriving-meta.rs":"0d03a96f1e9eb9c20bce6db4ea9d951c4fc6323348d1b4a238b9cfc0c102f0b3","tests/rustc-deriving-show-2.rs":"f81a0c5578b1bb7734868021f51a572ec99bebdad7c84bea010bd9b979bf7849","tests/rustc-deriving-show.rs":"198a6c7e12548c45386c14e0a34b00cd41b0457b283eda7ac3d8d4668be9d5ca","tests/rustc-deriving-via-extension-hash-enum.rs":"d3745842c76149ac0dd44afab1b0dd1fda45b8e209fa5b2194bc8ed3f4462369","tests/rustc-deriving-via-extension-hash-struct.rs":"3c5090aa4945283bf61d27600e8d30e1e98c93dd11bfa3bcf1b1f6da1e6d6d4c","tests/rustc-deriving-via-extension-type-params.rs":"c26b31b763b0872b3a11a690e0694a98a1bdc4f305dec05af514f87c2060e62a","tests/rustc-expr-copy.rs":"35c8658a331c1153fc3540125eba9866561ecc9633f82782bd432697a17534c6","tests/rustc-exterior.rs":"cd34d539dae467f27942af90c8007986608f70cfaed020aa8e4ed73b42220ba3","tests/rustc-issue-12860.rs":"b050cbd745ba2c1881344522ec5d0307c7f05ea771a8251784e292362df0a370","tests/rustc-issue-13434.rs":"030a2a7d47e53c2153b9b7ef072ba12aa8a6fef0ec511cfcd0c9d09968c41c07","tests/rustc-issue-16530.rs":"4fbe95ca9cffb9dd2b8a60f98ce64996eb8611e2881dcdff4da111563c3eed6d","tests/rustc-issue-19037.rs":"8728e176d24ae0803ef93ef4c81d17a7fd0c7dd84f175a345c6de7ca09c95069","tests/rustc-issue-19102.rs":"7c08c4a3625d585e8f7218b5864912c9d9b02ef81659e601849f22b4bf2fec62","tests/rustc-issue-19135.rs":"537227d0146be2093be0f4641a9860a68bc5e4660ccd30d2e2a10b39794f4c1f","tests/rustc-issue-19358.rs":"38d50e72f619a6a7214094f103ef04cbe4f6fcbf6a11eab7c247a53e60ce3f02","tests/rustc-issue-21402.rs":"842431d5dbcdb72ab20749480f4334a9a63d68357780469fa28755cda4072f80","tests/rustc-issue-23649-3.rs":"dc66e6707881cf01dc8cd499ea5eae989a724885716b94079f869175c3770bf1","tests/rustc-issue-24085.rs":"abd26755ae5d322c6af20fedef1faf8a3fe43c6c79385200413d7a04138b1c6e","tests/rustc-issue-25394.rs":"643e7f990acc72eaba9403d515c4762393cdee50398cdc9231c841682717ea5d","tests/rustc-issue-28561.rs":"3f703d54fbb86d4fa0cadf1b7d3a60d09b50dc95690b81a287c8a35d4e77ff52","tests/rustc-issue-29030.rs":"741fee2ee04ff650445537555299347930ec3479ff9f0a85845271c48696ccf6","tests/rustc-issue-29540.rs":"d7b28cf54f8346215ebf909fab1cab9b60aed93d3089d23d7818e557daae9fdb","tests/rustc-issue-29710.rs":"5b6ba4496f31faa4d419975fe0f059bee923a3fb4053315c5a78d512fa5ba2ea","tests/rustc-issue-32292.rs":"e2825020deff6b73bdc51b452a34520b30344cce33efe40242baa599b7999e77","tests/rustc-issue-3935.rs":"1460907d4f5cda59b48a7c1a449b376a0797d7fd14ea4971484705d34c79a0fe","tests/rustc-issue-42453.rs":"a28b83ea4dbe1ae6ea6e4614cf49235f646ff6b8db6c5fa658ad6a34cada5baa","tests/rustc-issue-58319.rs":"47545e8180b3cbfdc45cf2c7d0d810dc0ebdd154fb0fae087ab078d2f2d87ebe","tests/rustc-issue-6341.rs":"7563bdc3556cfbfd15d61911f2bf45ba9e2334316d9939aacbd150b36ad461e1","tests/rustc-typeclasses-eq-example.rs":"cf067051f8d62125d0244f8918ec5f0ccc7d4a4b6b74a8811c0e723091c23682","tests/rustc-zero-sized-btreemap-insert.rs":"2da53be3a7fe9cb2f66829d2ea798bc4024f1625e52f85d5b3087a3e3bc82fa3"},"package":"fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"} \ No newline at end of file
diff --git a/vendor/derivative/CHANGELOG.md b/vendor/derivative/CHANGELOG.md
new file mode 100644
index 000000000..95262fa56
--- /dev/null
+++ b/vendor/derivative/CHANGELOG.md
@@ -0,0 +1,76 @@
+# Change Log
+All notable changes to this project will be documented in this file.
+
+
+## 2.2.0
+* Add support for deriving traits on `repr(packed)` types ([#84]).
+* Fix bug with `Debug` bounds ([#83]).
+* Migrate documentation to `mdbook` and fix issues found in examples ([#83]).
+
+## 2.1.3
+* Fix Clippy warning ([#81]).
+
+## 2.1.2
+* Fix bug when used in combination with other attributes ([#79]).
+
+## 2.1.1
+* Improve error reporting. ([#70])
+* Fix a Clippy warning in generated code. ([#71]).
+
+## 2.1.0
+* `feature_allow_slow_enum` is not required anymore on `enum` with `PartialEq`. ([#64])
+* `PartialEq` generates more efficient code for C-like `enum`. ([#65])
+* Fix issue with deriving `Hash` on generic `enums` #68. ([#68])
+
+## 2.0.2
+* Fix a bug with `format_with` on `Debug` derives with generic types with trait bounds.
+
+## 2.0.1
+* Fix a hygiene bug with `Debug`. ([#60])
+
+## 2.0.0
+This release should be compatible with version 1.*, but now requires rustc version 1.34 or later.
+* Update `syn`, `quote`, and `proc-macro2` dependencies. ([#59])
+
+## 1.0.4
+This is the last version to support rustc versions 1.15 to 1.33.
+
+* Implement `PartialOrd` and `Ord` deriving.
+
+## 1.0.3
+* Do not require `syn`'s `full` feature anymore. ([#38], [#45])
+* Fix an issue with using `#[derivative(Debug(format_with = "…"))]` on non-generic types. ([#40])
+* Fix some warnings in the library with recent versions of `rustc`.
+* Fix some `clippy::pedantic` warnings in generated code. ([#46])
+
+## 1.0.2
+* Add `use_core` feature to make `Derivative` usable in `core` crates.
+
+## 1.0.1
+* Updated `syn` to `0.15`. ([#25])
+* Updated `quote` to `0.6`. ([#25])
+
+## 1.0.0
+* Make stable.
+
+## 0.3.1
+* Fix a warning in `derivative(Debug)`.
+* Remove all `feature`s, this makes the crate usable on `beta`.
+
+[#25]: https://github.com/mcarton/rust-derivative/issues/25
+[#38]: https://github.com/mcarton/rust-derivative/pull/38
+[#40]: https://github.com/mcarton/rust-derivative/pull/40
+[#45]: https://github.com/mcarton/rust-derivative/pull/45
+[#46]: https://github.com/mcarton/rust-derivative/pull/46
+[#59]: https://github.com/mcarton/rust-derivative/pull/59
+[#60]: https://github.com/mcarton/rust-derivative/pull/60
+[#61]: https://github.com/mcarton/rust-derivative/pull/61
+[#64]: https://github.com/mcarton/rust-derivative/pull/64
+[#65]: https://github.com/mcarton/rust-derivative/pull/65
+[#68]: https://github.com/mcarton/rust-derivative/pull/68
+[#70]: https://github.com/mcarton/rust-derivative/pull/70
+[#71]: https://github.com/mcarton/rust-derivative/pull/71
+[#79]: https://github.com/mcarton/rust-derivative/pull/79
+[#81]: https://github.com/mcarton/rust-derivative/pull/81
+[#83]: https://github.com/mcarton/rust-derivative/pull/83
+[#84]: https://github.com/mcarton/rust-derivative/pull/84 \ No newline at end of file
diff --git a/vendor/derivative/CONTRIBUTING.md b/vendor/derivative/CONTRIBUTING.md
new file mode 100644
index 000000000..c7db610fc
--- /dev/null
+++ b/vendor/derivative/CONTRIBUTING.md
@@ -0,0 +1,14 @@
+Contributions are welcome!
+
+There are several ways you can contribute:
+
+* Submit ideas and feature requests on the [issue tracker].
+* File bug reports on the [issue tracker]. Include as much details as you can
+ and, ideally, a self-contained example if you can make one.
+* Improve the [documentation]. It consists of markdown files in the [doc](doc)
+ directory. It uses [mdBook] to generate the website.
+* Implement something, fix bugs, etc. You know the deal.
+
+[documentation]: https://mcarton.github.io/rust-derivative/
+[mdBook]: https://rust-lang.github.io/mdBook/
+[issue tracker]: https://github.com/mcarton/rust-derivative/issues
diff --git a/vendor/derivative/Cargo.toml b/vendor/derivative/Cargo.toml
new file mode 100644
index 000000000..95741fb21
--- /dev/null
+++ b/vendor/derivative/Cargo.toml
@@ -0,0 +1,40 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies
+#
+# If you believe there's an error in this file please file an
+# issue against the rust-lang/cargo repository. If you're
+# editing this file be aware that the upstream Cargo.toml
+# will likely look very different (and much more reasonable)
+
+[package]
+name = "derivative"
+version = "2.2.0"
+authors = ["mcarton <cartonmartin+git@gmail.com>"]
+description = "A set of alternative `derive` attributes for Rust"
+documentation = "https://mcarton.github.io/rust-derivative/"
+readme = "README.md"
+keywords = ["derive", "macro", "macro1-1", "plugin"]
+categories = ["rust-patterns"]
+license = "MIT/Apache-2.0"
+repository = "https://github.com/mcarton/rust-derivative"
+
+[lib]
+proc-macro = true
+[dependencies.proc-macro2]
+version = "1.0"
+
+[dependencies.quote]
+version = "1.0"
+
+[dependencies.syn]
+version = "1.0.3"
+features = ["visit", "extra-traits"]
+[dev-dependencies.trybuild]
+version = "1.0.18, <1.0.23"
+
+[features]
+use_core = []
diff --git a/vendor/io-lifetimes/LICENSE-APACHE b/vendor/derivative/LICENSE-APACHE
index 16fe87b06..16fe87b06 100644
--- a/vendor/io-lifetimes/LICENSE-APACHE
+++ b/vendor/derivative/LICENSE-APACHE
diff --git a/vendor/derivative/LICENSE-MIT b/vendor/derivative/LICENSE-MIT
new file mode 100644
index 000000000..bd774806a
--- /dev/null
+++ b/vendor/derivative/LICENSE-MIT
@@ -0,0 +1,19 @@
+Copyright (c) 2016 Martin Carton
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/derivative/README.md b/vendor/derivative/README.md
new file mode 100644
index 000000000..36e998aa7
--- /dev/null
+++ b/vendor/derivative/README.md
@@ -0,0 +1,55 @@
+# Derivative
+
+[![Crates.io](https://img.shields.io/crates/v/derivative.svg?maxAge=3600)](https://crates.io/crates/derivative)
+[![Crates.io](https://img.shields.io/crates/l/derivative.svg?maxAge=3600)](https://github.com/mcarton/rust-derivative#license)
+![Continuous integration](https://github.com/mcarton/rust-derivative/workflows/Continuous%20integration/badge.svg)
+
+This crate provides a set of alternative customizable `#[derive]` attributes for Rust.
+
+## [Documentation][documentation]
+## Stability
+
+This crate is stable and follows semver. It requires *rustc 1.34 or later* and changing the minimal rustc version will be considered a semver breaking change.
+
+## What it does
+
+```rust
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct Foo {
+ foo: u8,
+ #[derivative(Debug="ignore")]
+ bar: u8,
+}
+
+// Prints `Foo { foo: 42 }`
+println!("{:?}", Foo { foo: 42, bar: 1 });
+```
+
+Check the [documentation] for more!
+
+## License
+
+Licensed under either of
+ * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or
+ <http://www.apache.org/licenses/LICENSE-2.0>)
+ * MIT license ([LICENSE-MIT](LICENSE-MIT) or <http://opensource.org/licenses/MIT>)
+
+at your option.
+
+## Acknowledgements
+
+This is inspired from how [`serde`] wonderfully handles attributes.
+This also takes some code and ideas from `serde` itself.
+
+Some tests are directly adapted from `rustc`'s tests.
+
+## Contribution
+
+Unless you explicitly state otherwise, any contribution intentionally submitted
+for inclusion in the work by you, as defined in the Apache-2.0 license, shall
+be dual licensed as above, without any additional terms or conditions.
+
+[`serde`]: https://crates.io/crates/serde
+[documentation]: https://mcarton.github.io/rust-derivative/latest/index.html
+[rustc]: https://github.com/rust-lang/rust
diff --git a/vendor/derivative/book.toml b/vendor/derivative/book.toml
new file mode 100644
index 000000000..e9aaf5a12
--- /dev/null
+++ b/vendor/derivative/book.toml
@@ -0,0 +1,16 @@
+[book]
+title = "Derivative"
+src = "doc"
+
+[rust]
+edition = "2018"
+
+[build]
+create-missing = false
+
+[output.html.search]
+limit-results = 15
+
+[output.html]
+additional-css = ["doc/custom.css"]
+git-repository-url = "https://github.com/mcarton/rust-derivative" \ No newline at end of file
diff --git a/vendor/derivative/doc/Clone.md b/vendor/derivative/doc/Clone.md
new file mode 100644
index 000000000..25ea2158b
--- /dev/null
+++ b/vendor/derivative/doc/Clone.md
@@ -0,0 +1,38 @@
+# Custom attributes
+
+The `Copy` and `Clone` traits support the following attributes:
+
+* **Container attributes**
+ * [`<Copy or Clone>(bound="<where-clause or empty>")`](#custom-bound)
+ * [`Clone(clone_from="true")`](#clone-from)
+* **Field attributes**
+ * [`<Copy or Clone>(bound="<where-clause or empty>")`](#custom-bound)
+
+# `clone_from`
+
+The [`Clone`] trait has a default implementation for [`clone_from`] and
+`derive(Clone)` never implements that method. *derivative* can implement it if
+asked explicitly.
+
+Note that while the generated implementation is good for structures, it might
+not be very efficient for enumerations. What it does is check if both `self`
+and the clone-from value have the same variant, if they have, use `clone_from`
+on the members, otherwise fallback to `*self = other.clone();`. Ask yourself if
+you really need this.
+
+# Custom bound
+As most other traits, `Copy` and `Debug` support a custom bound on container
+and fields. See [`Debug`'s documentation](Debug.md#custom-bound) for more
+information.
+
+# Limitations
+
+*rustc* can optimize `derive(Clone, Copy)` to generate faster, smaller code.
+So does *derivative*. But *rustc* does not know about `derivative(Copy)` and
+would not optimize `#[derivative(Copy)] #[derive(Clone)]`.
+To avoid that issue, you should avoid deriving `Clone` using *rustc*'s default
+`derive` and `Copy` using `derivative`. *derivative* will error if it detects
+that, but can't always do it.
+
+[`Clone`]: https://doc.rust-lang.org/std/clone/trait.Clone.html
+[`clone_from`]: https://doc.rust-lang.org/std/clone/trait.Clone.html#method.clone_from
diff --git a/vendor/derivative/doc/Debug.md b/vendor/derivative/doc/Debug.md
new file mode 100644
index 000000000..25b66be2e
--- /dev/null
+++ b/vendor/derivative/doc/Debug.md
@@ -0,0 +1,153 @@
+# Custom attributes
+The `Debug` trait supports the following attributes:
+
+* **Container attributes**
+ * [`Debug(bound="<where-clause or empty>")`](#custom-bound)
+ * [`Debug="transparent"`](#hiding-newtypes)
+* **Variant attributes**
+ * [`Debug="transparent"`](#hiding-newtypes)
+* **Field attributes**
+ * [`Debug(bound="<where-clause or empty>")`](#custom-bound)
+ * [`Debug(format_with="<path>")`](#format-with)
+ * [`Debug="ignore"`](#ignoring-a-field)
+
+# Ignoring a field
+
+You can use *derivative* to hide fields from a structure or enumeration `Debug`
+implementation:
+
+```rust
+# extern crate derivative;
+# use derivative::Derivative;
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct Foo {
+ foo: u8,
+ #[derivative(Debug="ignore")]
+ bar: u8,
+}
+
+println!("{:?}", Foo { foo: 42, bar: 1 }); // Foo { foo: 42 }
+```
+
+# Hiding newtypes
+
+You can use *derivative* to automatically unwrap newtypes and enumeration
+variants with only one field:
+
+```rust
+# extern crate derivative;
+# use derivative::Derivative;
+#[derive(Derivative)]
+#[derivative(Debug="transparent")]
+struct A(isize);
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+enum C {
+ Foo(u8),
+ #[derivative(Debug="transparent")]
+ Bar(u8),
+}
+
+println!("{:?}", A(42)); // 42
+println!("{:?}", C::Bar(42)); // 42
+
+// But:
+println!("{:?}", C::Foo(42)); // Foo(42)
+```
+
+# Format with
+
+You can pass a field to a format function:
+
+```rust
+# extern crate derivative;
+# use derivative::Derivative;
+# mod path {
+# pub struct SomeTypeThatMightNotBeDebug;
+# pub mod to {
+# pub fn my_fmt_fn(_: &super::SomeTypeThatMightNotBeDebug, _: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> { unimplemented!() }
+# }
+# }
+# use path::SomeTypeThatMightNotBeDebug;
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct Foo {
+ foo: u32,
+ #[derivative(Debug(format_with="path::to::my_fmt_fn"))]
+ bar: SomeTypeThatMightNotBeDebug,
+}
+```
+
+The field `bar` will be displayed with `path::to::my_fmt_fn(&bar, &mut fmt)`
+where `fmt` is the current [`Formatter`].
+
+The function must the following prototype:
+
+```rust,ignore
+fn fmt(&T, &mut std::fmt::Formatter) -> Result<(), std::fmt::Error>;
+```
+
+# Custom bound
+
+Usually, *derivative* will add a `T: Debug` bound for each type parameter `T`
+of the current type. If you do not want that, you can specify an explicit bound:
+
+* Either on the type. This replaces all bounds:
+
+```rust
+# extern crate derivative;
+# use derivative::Derivative;
+# trait MyDebug {
+# fn my_fmt(&self, _: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error>;
+# }
+# use std::fmt::Debug;
+#[derive(Derivative)]
+#[derivative(Debug(bound="T: Debug, U: MyDebug"))]
+struct Foo<T, U> {
+ foo: T,
+ #[derivative(Debug(format_with="MyDebug::my_fmt"))]
+ bar: U,
+}
+```
+
+* Or on a field. This replaces the bound *derivative* guessed for that field. The example below is equivalent to the above:
+
+```rust
+# extern crate derivative;
+# use derivative::Derivative;
+# trait MyDebug {
+# fn my_fmt(&self, _: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error>;
+# }
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct Foo<T, U> {
+ foo: T,
+ #[derivative(Debug(format_with="MyDebug::my_fmt", bound="U: MyDebug"))]
+ bar: U,
+}
+```
+
+With `bound=""` it is possible to remove any bound for the type. This is useful
+if your type contains a `Foo<T>` that is `Debug` even if `T` is not.
+
+[`Formatter`]: https://doc.rust-lang.org/std/fmt/struct.Formatter.html
+
+# Packed structures
+
+You can use *derivative* to implement `Debug` on packed structures. Unlike the standard `derive(debug)`, *derivative* does not require the structure itself to be `Copy`, but like the standard `derive(debug)`, it requires each (non-ignored) field to be `Copy`.
+
+```rust
+# extern crate derivative;
+# use derivative::Derivative;
+#[derive(Derivative)]
+#[derivative(Debug)]
+#[repr(C, packed)]
+struct Foo {
+ foo: u8,
+ // `String` isn't `Copy` so it must be ignored to derive `Debug`
+ #[derivative(Debug="ignore")]
+ bar: String,
+}
+``` \ No newline at end of file
diff --git a/vendor/derivative/doc/Default.md b/vendor/derivative/doc/Default.md
new file mode 100644
index 000000000..f61bbc9a7
--- /dev/null
+++ b/vendor/derivative/doc/Default.md
@@ -0,0 +1,106 @@
+# Custom attributes
+The `Default` trait supports the following attributes:
+
+* **Container attributes**
+ * [`Default(bound="<where-clause or empty>")`](#custom-bound)
+ * [`Default="new"`](#new-function)
+* **Variant attributes**
+ * [`Default`](#default-enumeration)
+* **Field attributes**
+ * [`Default(bound="<where-clause or empty>")`](#custom-bound)
+ * [`Default(value="<expr>")`](#setting-the-value-of-a-field)
+
+# Default enumeration
+
+You can use *derivative* to derive a default implementation on enumerations!
+This does not work with *rustc*'s `#[derive(Default)]`.
+All you need is to specify what variant is the default value:
+
+```rust
+# extern crate derivative;
+# use derivative::Derivative;
+#[derive(Debug, Derivative)]
+#[derivative(Default)]
+enum Enum {
+ A,
+ #[derivative(Default)]
+ B,
+}
+
+println!("{:?}", Enum::default()); // B
+```
+
+# Setting the value of a field
+
+You can use *derivative* to change the default value of a field in a `Default`
+implementation:
+
+```rust
+# extern crate derivative;
+# use derivative::Derivative;
+#[derive(Debug, Derivative)]
+#[derivative(Default)]
+struct Foo {
+ foo: u8,
+ #[derivative(Default(value="42"))]
+ bar: u8,
+}
+
+println!("{:?}", Foo::default()); // Foo { foo: 0, bar: 42 }
+```
+
+# `new` function
+
+You can use *derivative* to derive a convenience `new` method for your type
+that calls `Default::default`:
+
+```rust
+# extern crate derivative;
+# use derivative::Derivative;
+#[derive(Debug, Derivative)]
+#[derivative(Default(new="true"))]
+struct Foo {
+ foo: u8,
+ bar: u8,
+}
+
+println!("{:?}", Foo::new()); // Foo { foo: 0, bar: 0 }
+```
+
+# Custom bound
+
+The following does not work because `derive` adds a `T: Default` bound on the
+`impl Default for Foo<T>`:
+
+```rust,compile_fail
+# extern crate derivative;
+# use derivative::Derivative;
+#[derive(Default)]
+struct Foo<T> {
+ foo: Option<T>,
+}
+
+struct NonDefault;
+
+Foo::<NonDefault>::default(); // gives:
+// error: no associated item named `default` found for type `Foo<NonDefault>` in the current scope
+// = note: the method `default` exists but the following trait bounds were not satisfied: `NonDefault : std::default::Default`
+```
+
+That bound however is useless as `Option<T>: Default` for any `T`.
+`derivative` allows you to explicitly specify a bound if the inferred one is not
+correct:
+
+```rust
+# extern crate derivative;
+# use derivative::Derivative;
+#[derive(Derivative)]
+#[derivative(Default(bound=""))] // don't need any bound
+struct Foo<T> {
+ foo: Option<T>,
+}
+
+struct NonDefault;
+
+Foo::<NonDefault>::default(); // works!
+```
diff --git a/vendor/derivative/doc/Hash.md b/vendor/derivative/doc/Hash.md
new file mode 100644
index 000000000..71c6f0867
--- /dev/null
+++ b/vendor/derivative/doc/Hash.md
@@ -0,0 +1,83 @@
+# Custom attributes
+The `Hash` trait supports the following attributes:
+
+* **Container attributes**
+ * [`Hash(bound="<where-clause or empty>")`](#custom-bound)
+* **Field attributes**
+ * [`Hash(bound="<where-clause or empty>")`](#custom-bound)
+ * [`Hash(hash_with="<path>")`](#hash-with)
+ * [`Hash="ignore"`](#ignoring-a-field)
+
+# Ignoring a field
+
+You can use *derivative* to ignore fields from a `Hash` implementation:
+
+```rust
+# extern crate derivative;
+# use derivative::Derivative;
+#[derive(Derivative)]
+#[derivative(Hash)]
+struct Foo {
+ foo: u8,
+ #[derivative(Hash="ignore")]
+ bar: i32,
+}
+
+#[derive(Hash)]
+struct Bar {
+ foo: u8,
+}
+
+# fn hash<T: std::hash::Hash>(t: &T) -> u64 {
+# use std::hash::Hasher;
+# let mut s = std::collections::hash_map::DefaultHasher::new();
+# t.hash(&mut s);
+# s.finish()
+# }
+#
+assert_eq!(hash(&Foo { foo: 42, bar: -1337 }), hash(&Bar { foo: 42 }));
+```
+
+# Hash with
+
+You can pass a field to a hash function:
+
+```rust
+# extern crate derivative;
+# use derivative::Derivative;
+# mod path {
+# pub struct SomeTypeThatMightNotBeHash;
+# pub mod to {
+# pub fn my_hash_fn<H>(_: &super::SomeTypeThatMightNotBeHash, state: &mut H) where H: std::hash::Hasher { unimplemented!() }
+# }
+# }
+# use path::SomeTypeThatMightNotBeHash;
+#[derive(Derivative)]
+#[derivative(Hash)]
+struct Foo {
+ foo: u32,
+ #[derivative(Hash(hash_with="path::to::my_hash_fn"))]
+ bar: SomeTypeThatMightNotBeHash,
+}
+```
+
+The field `bar` will be hashed with `path::to::my_hash_fn(&bar, &mut state)`
+where `state` is the current [`Hasher`].
+
+The function must the following prototype:
+
+```rust,ignore
+fn my_hash_fn<H>(&T, state: &mut H) where H: Hasher;
+```
+
+# Limitations
+
+On structure, `derivative(Hash)` will produce the same hash as `derive(Hash)`.
+On unions however, it will produces the same hashes *only for unitary
+variants*!
+
+# Custom bound
+As most other traits, `Hash` supports a custom bound on container and fields.
+See [`Debug`'s documentation](Debug.md#custom-bound) for more information.
+
+[`Hasher`]: https://doc.rust-lang.org/std/hash/trait.Hasher.html
diff --git a/vendor/derivative/doc/README.md b/vendor/derivative/doc/README.md
new file mode 100644
index 000000000..62d73bca4
--- /dev/null
+++ b/vendor/derivative/doc/README.md
@@ -0,0 +1,125 @@
+# Derivative
+
+This crate provides a set of alternative `#[derive]` attributes for Rust.
+
+## Examples
+
+*derivative* uses attributes to make it possible to derive more implementations
+than the built-in `derive(Trait)`. Here are a few examples of stuffs you cannot
+just `derive`.
+
+You can derive `Default` on enumerations:
+
+<table>
+<tr>
+<th>
+
+With *derivative*
+</th>
+<th>
+
+[Original][default-value-source]
+</th>
+</tr>
+<tr>
+</tr>
+<tr class="readme-example">
+<td>
+
+{{#playground default-enum.rs}}
+</td>
+<td>
+
+{{#playground default-enum-orig.rs}}
+</td>
+</tr>
+</table>
+
+You can use different default values for some fields:
+
+<table>
+<tr>
+<th>
+
+With *derivative*
+</th>
+<th>
+
+[Original][default-value-source]
+</th>
+</tr>
+<tr>
+</tr>
+<tr class="readme-example">
+<td>
+
+{{#playground default-value.rs}}
+</td>
+<td>
+
+{{#playground default-value-orig.rs}}
+</td>
+</tr>
+</table>
+
+
+Want a transparent `Debug` implementation for your wrapper? We got that:
+
+<table>
+<tr>
+<th>
+
+With *derivative*
+</th>
+<th>
+
+[Original][transparent-source]
+</th>
+</tr>
+<tr>
+</tr>
+<tr class="readme-example">
+<td>
+
+{{#playground debug-transparent.rs}}
+</td>
+<td>
+
+{{#playground debug-transparent-orig.rs}}
+</td>
+</tr>
+</table>
+
+
+Need to ignore a field? We got that too:
+
+<table>
+<tr>
+<th>
+
+With *derivative*
+</th>
+<th>
+
+[Original][eq-ignore-source]
+</th>
+</tr>
+<tr>
+</tr>
+<tr class="readme-example">
+<td>
+
+{{#playground eq-ignore.rs}}
+</td>
+<td>
+
+{{#playground eq-ignore-orig.rs}}
+</td>
+</tr>
+</table>
+
+
+[default-value-source]: https://github.com/rust-lang-nursery/regex/blob/3cfef1e79d135a3e8a670aff53e7fabef453a3e1/src/re_builder.rs#L12-L39
+[default-enum-source]: https://github.com/rust-lang/rust/blob/16eeeac783d2ede28e09f2a433c612dea309fe33/src/libcore/option.rs#L714-L718
+[transparent-source]: https://github.com/rust-lang/rust/blob/5457c35ece57bbc4a65baff239a02d6abb81c8a2/src/libcore/num/mod.rs#L46-L54
+[eq-ignore-source]: https://github.com/steveklabnik/semver/blob/baa0fbb57c80a7fb344fbeedac24a28439ddf5b5/src/version.rs#L196-L205
diff --git a/vendor/derivative/doc/SUMMARY.md b/vendor/derivative/doc/SUMMARY.md
new file mode 100644
index 000000000..66762936f
--- /dev/null
+++ b/vendor/derivative/doc/SUMMARY.md
@@ -0,0 +1,25 @@
+# Summary
+
+* [Overview](README.md)
+* [`Copy` and `Clone` traits](Clone.md)
+ <!-- * [`clone_from`](Clone.md#clone-from) -->
+ <!-- * [Custom bound](Clone.md#custom-bound) -->
+* [`Debug` trait](Debug.md)
+ <!-- * [Hiding fields](Debug.md#ignoring-a-field) -->
+ <!-- * [Hiding newtypes](Debug.md#hiding-newtypes) -->
+ <!-- * [Alternative format function](Debug.md#format-with) -->
+ <!-- * [Custom bound](Debug.md#custom-bound) -->
+* [`Default` trait](Default.md)
+ <!-- * [Default enumeration](Default.md#default-enumeration) -->
+ <!-- * [Setting the value of a field](Default.md#setting-the-value-of-a-field) -->
+ <!-- * [`new` function](Default.md#new-function) -->
+ <!-- * [Custom bound](Default.md#custom-bound) -->
+* [`Hash` trait](Hash.md)
+ <!-- * [Ignoring fields](Hash.md#ignoring-a-field) -->
+ <!-- * [Alternative hash function](Debug.md#hash-with) -->
+ <!-- * [Custom bound](Hash.md#custom-bound) -->
+* [Comparison traits](cmp.md)
+ <!-- * [Note about enumerations](cmp.md#enumerations) -->
+ <!-- * [Ignoring fields](cmp.md#ignoring-a-field) -->
+ <!-- * [Alternative comparison function](cmp.md#compare-with) -->
+ <!-- * [Custom bound](cmp.md#custom-bound) -->
diff --git a/vendor/derivative/doc/cmp.md b/vendor/derivative/doc/cmp.md
new file mode 100644
index 000000000..b6ff4903e
--- /dev/null
+++ b/vendor/derivative/doc/cmp.md
@@ -0,0 +1,123 @@
+# Custom attributes
+The `PartialEq`, `Eq`, `PartialOrd` and `Eq` and traits support the following attributes:
+
+* **Container attributes**
+ * [`<CmpTrait>(bound="<where-clause or empty>")`](#custom-bound)
+* **Field attributes**
+ * [`<CmpTrait>(bound="<where-clause or empty>")`](#custom-bound)
+
+The `PartialEq`, `PartialOrd` and `Ord` traits also supports the following attributes:
+
+* **Container attributes**
+ * [`<CmpTrait>="feature_allow_slow_enum"`](#enumerations)
+* **Field attributes**
+ * [`<CmpTrait>="ignore"`](#ignoring-a-field)
+ * [`<CmpTrait>(compare_with="<path>")`](#compare-with)
+
+(These attributes are not relevant for `Eq` which is just a marker trait.)
+
+# Enumerations
+
+Unfortunately, there is no way for derivative to derive `PartialOrd` or `Ord` on
+enumerations as efficiently as the built-in `derive(…)` yet.
+
+If you want to use derivative on enumerations anyway, you can add
+
+```rust,ignore
+#[derivative(PartialOrd="feature_allow_slow_enum")]
+```
+
+to your enumeration. This acts as a “feature-gateâ€.
+
+This attribute is also allowed for `PartialEq` for historical reason. It is not
+necessary anymore as of v2.1.0. It was never necessary nor allowed for `Eq`.
+
+# Ignoring a field
+
+You can use *derivative* to ignore a field when comparing:
+
+```rust
+# extern crate derivative;
+# use derivative::Derivative;
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+struct Foo {
+ foo: u8,
+ #[derivative(PartialEq="ignore")]
+ bar: u8,
+}
+
+assert!(Foo { foo: 0, bar: 42 } == Foo { foo: 0, bar: 7});
+assert!(Foo { foo: 42, bar: 0 } != Foo { foo: 7, bar: 0});
+```
+
+# Compare with
+
+Usually fields are compared using `==`, `PartialOrd::partial_cmp` or `Ord::cmp`. You can use an alternative comparison
+function if you like:
+
+```rust
+# extern crate derivative;
+# use derivative::Derivative;
+# mod path {
+# pub struct SomeTypeThatMightNotBePartialEq;
+# pub mod to {
+# pub fn my_cmp_fn(_: &super::SomeTypeThatMightNotBePartialEq, _: &super::SomeTypeThatMightNotBePartialEq) -> bool { false }
+# }
+# }
+# use path::SomeTypeThatMightNotBePartialEq;
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+struct Foo {
+ foo: u32,
+ #[derivative(PartialEq(compare_with="path::to::my_cmp_fn"))]
+ bar: SomeTypeThatMightNotBePartialEq,
+}
+```
+
+`foo` will be compared with `==` and `bar` will be compared with
+`path::to::my_cmp_fn` which must have the following prototype:
+
+| Trait | Signature |
+|--------------|-----------|
+| `PartialEq` | <span class="rust">`fn my_cmp_fn(&T, &T) -> bool;`</span>
+| `PartialOrd` | <span class="rust">`fn my_cmp_fn(&T, &T) -> std::option::Option<std::cmp::Ordering>;`</span>
+| `Ord` | <span class="rust">`fn my_cmp_fn(&T, &T) -> std::cmp::Ordering;`</span>
+
+# Custom bound
+
+Usually if you derive `CmpTrait`, a `T: CmpTrait` bound is added for each type parameter `T`. You can use
+override this behavior if the inferred bound is not correct for you.
+
+Eg. comparing raw pointers does not require the type to be `Eq`, so you could
+use:
+
+```rust
+# extern crate derivative;
+# use derivative::Derivative;
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+struct WithPtr<T: ?Sized> {
+ #[derivative(PartialEq(bound=""))]
+ foo: *const T
+}
+```
+
+See [`Default`'s documentation](./Default.md#custom-bound) for more details.
+
+# Packed structures
+
+You can use *derivative* to implement the comparison traits on packed structures. Unlike the standard `derive`, *derivative* does not require the structure itself to be `Copy`, but like the standard `derive`, it requires each (non-ignored) field to be `Copy`.
+
+```rust
+# extern crate derivative;
+# use derivative::Derivative;
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+#[repr(C, packed)]
+struct Foo {
+ f: u32,
+ #[derivative(PartialEq = "ignore")]
+ t: String,
+}
+``` \ No newline at end of file
diff --git a/vendor/derivative/doc/custom.css b/vendor/derivative/doc/custom.css
new file mode 100644
index 000000000..3ccc00806
--- /dev/null
+++ b/vendor/derivative/doc/custom.css
@@ -0,0 +1,24 @@
+#content > main > table {
+ position: relative;
+ left: 50%;
+ transform: translateX(-50%);
+
+ margin-left: 0px;
+ margin-right: 0px;
+}
+
+#content > main > table td {
+ vertical-align: top;
+}
+
+#content > main > table .hljs {
+ background: none;
+}
+
+.readme-example {
+ background: #f1f1f1;
+}
+
+table .readme-example > td {
+ border: 1px hsl(0, 0%, 0%) solid;
+} \ No newline at end of file
diff --git a/vendor/derivative/doc/debug-transparent-orig.rs b/vendor/derivative/doc/debug-transparent-orig.rs
new file mode 100644
index 000000000..387ab7f74
--- /dev/null
+++ b/vendor/derivative/doc/debug-transparent-orig.rs
@@ -0,0 +1,8 @@
+# use std::fmt;
+pub struct Wrapping<T>(pub T);
+
+impl<T: fmt::Debug> fmt::Debug for Wrapping<T> {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ self.0.fmt(f)
+ }
+} \ No newline at end of file
diff --git a/vendor/derivative/doc/debug-transparent.rs b/vendor/derivative/doc/debug-transparent.rs
new file mode 100644
index 000000000..227049589
--- /dev/null
+++ b/vendor/derivative/doc/debug-transparent.rs
@@ -0,0 +1,5 @@
+# extern crate derivative;
+# use derivative::Derivative;
+#[derive(Derivative)]
+#[derivative(Debug="transparent")]
+pub struct Wrapping<T>(pub T); \ No newline at end of file
diff --git a/vendor/derivative/doc/default-enum-orig.rs b/vendor/derivative/doc/default-enum-orig.rs
new file mode 100644
index 000000000..4f459d77d
--- /dev/null
+++ b/vendor/derivative/doc/default-enum-orig.rs
@@ -0,0 +1,19 @@
+# #![no_implicit_prelude]
+# extern crate core;
+# use core::default::Default;
+# use Option::None;
+#
+pub enum Option<T> {
+ /// No value
+ None,
+ /// Some value `T`
+ Some(T),
+}
+
+impl<T> Default for Option<T> {
+ /// Returns None.
+ #[inline]
+ fn default() -> Option<T> {
+ None
+ }
+}
diff --git a/vendor/derivative/doc/default-enum.rs b/vendor/derivative/doc/default-enum.rs
new file mode 100644
index 000000000..79ec81eb0
--- /dev/null
+++ b/vendor/derivative/doc/default-enum.rs
@@ -0,0 +1,11 @@
+# extern crate derivative;
+# use derivative::Derivative;
+#[derive(Derivative)]
+#[derivative(Default(bound=""))]
+pub enum Option<T> {
+ #[derivative(Default)]
+ /// No value
+ None,
+ /// Some value `T`
+ Some(T),
+} \ No newline at end of file
diff --git a/vendor/derivative/doc/default-value-orig.rs b/vendor/derivative/doc/default-value-orig.rs
new file mode 100644
index 000000000..6e016cc64
--- /dev/null
+++ b/vendor/derivative/doc/default-value-orig.rs
@@ -0,0 +1,27 @@
+pub struct RegexOptions {
+ pub pats: Vec<String>,
+ pub size_limit: usize,
+ pub dfa_size_limit: usize,
+ pub case_insensitive: bool,
+ pub multi_line: bool,
+ pub dot_matches_new_line: bool,
+ pub swap_greed: bool,
+ pub ignore_whitespace: bool,
+ pub unicode: bool,
+}
+
+impl Default for RegexOptions {
+ fn default() -> Self {
+ RegexOptions {
+ pats: vec![],
+ size_limit: 10 * (1 << 20),
+ dfa_size_limit: 2 * (1 << 20),
+ case_insensitive: false,
+ multi_line: false,
+ dot_matches_new_line: false,
+ swap_greed: false,
+ ignore_whitespace: false,
+ unicode: true,
+ }
+ }
+} \ No newline at end of file
diff --git a/vendor/derivative/doc/default-value.rs b/vendor/derivative/doc/default-value.rs
new file mode 100644
index 000000000..deced9836
--- /dev/null
+++ b/vendor/derivative/doc/default-value.rs
@@ -0,0 +1,18 @@
+# extern crate derivative;
+# use derivative::Derivative;
+#[derive(Derivative)]
+#[derivative(Default)]
+pub struct RegexOptions {
+ pub pats: Vec<String>,
+ #[derivative(Default(value="10 * (1 << 20)"))]
+ pub size_limit: usize,
+ #[derivative(Default(value="2 * (1 << 20)"))]
+ pub dfa_size_limit: usize,
+ pub case_insensitive: bool,
+ pub multi_line: bool,
+ pub dot_matches_new_line: bool,
+ pub swap_greed: bool,
+ pub ignore_whitespace: bool,
+ #[derivative(Default(value="true"))]
+ pub unicode: bool,
+} \ No newline at end of file
diff --git a/vendor/derivative/doc/eq-ignore-orig.rs b/vendor/derivative/doc/eq-ignore-orig.rs
new file mode 100644
index 000000000..235a74959
--- /dev/null
+++ b/vendor/derivative/doc/eq-ignore-orig.rs
@@ -0,0 +1,40 @@
+# use std::{cmp, hash};
+# #[derive(PartialEq, Hash)]
+# struct Identifier;
+pub struct Version {
+ /// The major version.
+ pub major: u64,
+ /// The minor version.
+ pub minor: u64,
+ /// The patch version.
+ pub patch: u64,
+ /// The pre-release version identifier.
+ pub pre: Vec<Identifier>,
+ /// The build metadata, ignored when
+ /// determining version precedence.
+ pub build: Vec<Identifier>,
+}
+
+impl cmp::PartialEq for Version {
+ #[inline]
+ fn eq(&self, other: &Version) -> bool {
+ // We should ignore build metadata
+ // here, otherwise versions v1 and
+ // v2 can exist such that !(v1 < v2)
+ // && !(v1 > v2) && v1 != v2, which
+ // violate strict total ordering rules.
+ self.major == other.major &&
+ self.minor == other.minor &&
+ self.patch == other.patch &&
+ self.pre == other.pre
+ }
+}
+
+impl hash::Hash for Version {
+ fn hash<H: hash::Hasher>(&self, into: &mut H) {
+ self.major.hash(into);
+ self.minor.hash(into);
+ self.patch.hash(into);
+ self.pre.hash(into);
+ }
+} \ No newline at end of file
diff --git a/vendor/derivative/doc/eq-ignore.rs b/vendor/derivative/doc/eq-ignore.rs
new file mode 100644
index 000000000..a83af2c61
--- /dev/null
+++ b/vendor/derivative/doc/eq-ignore.rs
@@ -0,0 +1,26 @@
+# extern crate derivative;
+# use derivative::Derivative;
+# #[derive(PartialEq, Hash)]
+# struct Identifier;
+#[derive(Derivative)]
+#[derivative(PartialEq, Hash)]
+pub struct Version {
+ /// The major version.
+ pub major: u64,
+ /// The minor version.
+ pub minor: u64,
+ /// The patch version.
+ pub patch: u64,
+ /// The pre-release version identifier.
+ pub pre: Vec<Identifier>,
+ // We should ignore build metadata
+ // here, otherwise versions v1 and
+ // v2 can exist such that !(v1 < v2)
+ // && !(v1 > v2) && v1 != v2, which
+ // violate strict total ordering rules.
+ #[derivative(PartialEq="ignore")]
+ #[derivative(Hash="ignore")]
+ /// The build metadata, ignored when
+ /// determining version precedence.
+ pub build: Vec<Identifier>,
+} \ No newline at end of file
diff --git a/vendor/derivative/doc/styles/website.css b/vendor/derivative/doc/styles/website.css
new file mode 100644
index 000000000..55351deba
--- /dev/null
+++ b/vendor/derivative/doc/styles/website.css
@@ -0,0 +1,11 @@
+code .hljs-meta {
+ color: #969896
+}
+
+code .hljs-meta-string {
+ color: #183691
+}
+
+code .hljs-title {
+ color: #a71d5d !important
+}
diff --git a/vendor/derivative/src/ast.rs b/vendor/derivative/src/ast.rs
new file mode 100644
index 000000000..cf06995fa
--- /dev/null
+++ b/vendor/derivative/src/ast.rs
@@ -0,0 +1,160 @@
+use attr;
+use proc_macro2;
+use syn;
+use syn::spanned::Spanned as SynSpanned;
+
+#[derive(Debug)]
+pub struct Input<'a> {
+ pub attrs: attr::Input,
+ pub body: Body<'a>,
+ pub generics: &'a syn::Generics,
+ pub ident: syn::Ident,
+ pub span: proc_macro2::Span,
+}
+
+#[derive(Debug)]
+pub enum Body<'a> {
+ Enum(Vec<Variant<'a>>),
+ Struct(Style, Vec<Field<'a>>),
+}
+
+#[derive(Debug)]
+pub struct Variant<'a> {
+ pub attrs: attr::Input,
+ pub fields: Vec<Field<'a>>,
+ pub ident: syn::Ident,
+ pub style: Style,
+}
+
+#[derive(Debug)]
+pub struct Field<'a> {
+ pub attrs: attr::Field,
+ pub ident: Option<syn::Ident>,
+ pub ty: &'a syn::Type,
+ pub span: proc_macro2::Span,
+}
+
+#[derive(Clone, Copy, Debug)]
+pub enum Style {
+ Struct,
+ Tuple,
+ Unit,
+}
+
+impl<'a> Input<'a> {
+ pub fn from_ast(
+ item: &'a syn::DeriveInput,
+ errors: &mut proc_macro2::TokenStream,
+ ) -> Result<Input<'a>, ()> {
+ let attrs = attr::Input::from_ast(&item.attrs, errors)?;
+
+ let body = match item.data {
+ syn::Data::Enum(syn::DataEnum { ref variants, .. }) => {
+ Body::Enum(enum_from_ast(variants, errors)?)
+ }
+ syn::Data::Struct(syn::DataStruct { ref fields, .. }) => {
+ let (style, fields) = struct_from_ast(fields, errors)?;
+ Body::Struct(style, fields)
+ }
+ syn::Data::Union(..) => {
+ errors.extend(
+ syn::Error::new_spanned(item, "derivative does not support unions")
+ .to_compile_error(),
+ );
+ return Err(());
+ }
+ };
+
+ Ok(Input {
+ attrs,
+ body,
+ generics: &item.generics,
+ ident: item.ident.clone(),
+ span: item.span(),
+ })
+ }
+
+ /// Checks whether this type is an enum with only unit variants.
+ pub fn is_trivial_enum(&self) -> bool {
+ match &self.body {
+ Body::Enum(e) => e.iter().all(|v| v.is_unit()),
+ Body::Struct(..) => false,
+ }
+ }
+}
+
+impl<'a> Body<'a> {
+ pub fn all_fields(&self) -> Vec<&Field> {
+ match *self {
+ Body::Enum(ref variants) => variants
+ .iter()
+ .flat_map(|variant| variant.fields.iter())
+ .collect(),
+ Body::Struct(_, ref fields) => fields.iter().collect(),
+ }
+ }
+
+ pub fn is_empty(&self) -> bool {
+ match *self {
+ Body::Enum(ref variants) => variants.is_empty(),
+ Body::Struct(_, ref fields) => fields.is_empty(),
+ }
+ }
+}
+
+impl<'a> Variant<'a> {
+ /// Checks whether this variant is a unit variant.
+ pub fn is_unit(&self) -> bool {
+ self.fields.is_empty()
+ }
+}
+
+fn enum_from_ast<'a>(
+ variants: &'a syn::punctuated::Punctuated<syn::Variant, syn::token::Comma>,
+ errors: &mut proc_macro2::TokenStream,
+) -> Result<Vec<Variant<'a>>, ()> {
+ variants
+ .iter()
+ .map(|variant| {
+ let (style, fields) = struct_from_ast(&variant.fields, errors)?;
+ Ok(Variant {
+ attrs: attr::Input::from_ast(&variant.attrs, errors)?,
+ fields,
+ ident: variant.ident.clone(),
+ style,
+ })
+ })
+ .collect()
+}
+
+fn struct_from_ast<'a>(
+ fields: &'a syn::Fields,
+ errors: &mut proc_macro2::TokenStream,
+) -> Result<(Style, Vec<Field<'a>>), ()> {
+ match *fields {
+ syn::Fields::Named(ref fields) => {
+ Ok((Style::Struct, fields_from_ast(&fields.named, errors)?))
+ }
+ syn::Fields::Unnamed(ref fields) => {
+ Ok((Style::Tuple, fields_from_ast(&fields.unnamed, errors)?))
+ }
+ syn::Fields::Unit => Ok((Style::Unit, Vec::new())),
+ }
+}
+
+fn fields_from_ast<'a>(
+ fields: &'a syn::punctuated::Punctuated<syn::Field, syn::token::Comma>,
+ errors: &mut proc_macro2::TokenStream,
+) -> Result<Vec<Field<'a>>, ()> {
+ fields
+ .iter()
+ .map(|field| {
+ Ok(Field {
+ attrs: attr::Field::from_ast(field, errors)?,
+ ident: field.ident.clone(),
+ ty: &field.ty,
+ span: field.span(),
+ })
+ })
+ .collect()
+}
diff --git a/vendor/derivative/src/attr.rs b/vendor/derivative/src/attr.rs
new file mode 100644
index 000000000..01ac740bd
--- /dev/null
+++ b/vendor/derivative/src/attr.rs
@@ -0,0 +1,887 @@
+use proc_macro2;
+use syn;
+use syn::spanned::Spanned;
+
+/// Represent the `derivative` attributes on the input type (`struct`/`enum`).
+#[derive(Debug, Default)]
+pub struct Input {
+ /// Whether `Clone` is present and its specific attributes.
+ pub clone: Option<InputClone>,
+ /// Whether `Copy` is present and its specific attributes.
+ pub copy: Option<InputCopy>,
+ /// Whether `Debug` is present and its specific attributes.
+ pub debug: Option<InputDebug>,
+ /// Whether `Default` is present and its specific attributes.
+ pub default: Option<InputDefault>,
+ /// Whether `Eq` is present and its specific attributes.
+ pub eq: Option<InputEq>,
+ /// Whether `Hash` is present and its specific attributes.
+ pub hash: Option<InputHash>,
+ /// Whether `PartialEq` is present and its specific attributes.
+ pub partial_eq: Option<InputPartialEq>,
+ /// Whether `PartialOrd` is present and its specific attributes.
+ pub partial_ord: Option<InputPartialOrd>,
+ /// Whether `Ord` is present and its specific attributes.
+ pub ord: Option<InputOrd>,
+ pub is_packed: bool,
+}
+
+#[derive(Debug, Default)]
+/// Represent the `derivative` attributes on a field.
+pub struct Field {
+ /// The parameters for `Clone`.
+ clone: FieldClone,
+ /// The parameters for `Copy`.
+ copy_bound: Option<Vec<syn::WherePredicate>>,
+ /// The parameters for `Debug`.
+ debug: FieldDebug,
+ /// The parameters for `Default`.
+ default: FieldDefault,
+ /// The parameters for `Eq`.
+ eq_bound: Option<Vec<syn::WherePredicate>>,
+ /// The parameters for `Hash`.
+ hash: FieldHash,
+ /// The parameters for `PartialEq`.
+ partial_eq: FieldPartialEq,
+ /// The parameters for `PartialOrd`.
+ partial_ord: FieldPartialOrd,
+ /// The parameters for `Ord`.
+ ord: FieldOrd,
+}
+
+#[derive(Debug, Default)]
+/// Represent the `derivative(Clone(…))` attributes on an input.
+pub struct InputClone {
+ /// The `bound` attribute if present and the corresponding bounds.
+ bounds: Option<Vec<syn::WherePredicate>>,
+ /// Whether the implementation should have an explicit `clone_from`.
+ pub clone_from: bool,
+}
+
+#[derive(Debug, Default)]
+/// Represent the `derivative(Clone(…))` attributes on an input.
+pub struct InputCopy {
+ /// The `bound` attribute if present and the corresponding bounds.
+ bounds: Option<Vec<syn::WherePredicate>>,
+}
+
+#[derive(Debug, Default)]
+/// Represent the `derivative(Debug(…))` attributes on an input.
+pub struct InputDebug {
+ /// The `bound` attribute if present and the corresponding bounds.
+ bounds: Option<Vec<syn::WherePredicate>>,
+ /// Whether the type is marked `transparent`.
+ pub transparent: bool,
+}
+
+#[derive(Debug, Default)]
+/// Represent the `derivative(Default(…))` attributes on an input.
+pub struct InputDefault {
+ /// The `bound` attribute if present and the corresponding bounds.
+ bounds: Option<Vec<syn::WherePredicate>>,
+ /// Whether the type is marked with `new`.
+ pub new: bool,
+}
+
+#[derive(Debug, Default)]
+/// Represent the `derivative(Eq(…))` attributes on an input.
+pub struct InputEq {
+ /// The `bound` attribute if present and the corresponding bounds.
+ bounds: Option<Vec<syn::WherePredicate>>,
+}
+
+#[derive(Debug, Default)]
+/// Represent the `derivative(Hash(…))` attributes on an input.
+pub struct InputHash {
+ /// The `bound` attribute if present and the corresponding bounds.
+ bounds: Option<Vec<syn::WherePredicate>>,
+}
+
+#[derive(Debug, Default)]
+/// Represent the `derivative(PartialEq(…))` attributes on an input.
+pub struct InputPartialEq {
+ /// The `bound` attribute if present and the corresponding bounds.
+ bounds: Option<Vec<syn::WherePredicate>>,
+}
+
+#[derive(Debug, Default)]
+/// Represent the `derivative(PartialOrd(…))` attributes on an input.
+pub struct InputPartialOrd {
+ /// The `bound` attribute if present and the corresponding bounds.
+ bounds: Option<Vec<syn::WherePredicate>>,
+ /// Allow `derivative(PartialOrd)` on enums:
+ on_enum: bool,
+}
+
+#[derive(Debug, Default)]
+/// Represent the `derivative(Ord(…))` attributes on an input.
+pub struct InputOrd {
+ /// The `bound` attribute if present and the corresponding bounds.
+ bounds: Option<Vec<syn::WherePredicate>>,
+ /// Allow `derivative(Ord)` on enums:
+ on_enum: bool,
+}
+
+#[derive(Debug, Default)]
+/// Represents the `derivative(Clone(…))` attributes on a field.
+pub struct FieldClone {
+ /// The `bound` attribute if present and the corresponding bounds.
+ bounds: Option<Vec<syn::WherePredicate>>,
+ /// The `clone_with` attribute if present and the path to the cloning function.
+ clone_with: Option<syn::Path>,
+}
+
+#[derive(Debug, Default)]
+/// Represents the `derivative(Debug(…))` attributes on a field.
+pub struct FieldDebug {
+ /// The `bound` attribute if present and the corresponding bounds.
+ bounds: Option<Vec<syn::WherePredicate>>,
+ /// The `format_with` attribute if present and the path to the formatting function.
+ format_with: Option<syn::Path>,
+ /// Whether the field is to be ignored from output.
+ ignore: bool,
+}
+
+#[derive(Debug, Default)]
+/// Represent the `derivative(Default(…))` attributes on a field.
+pub struct FieldDefault {
+ /// The `bound` attribute if present and the corresponding bounds.
+ bounds: Option<Vec<syn::WherePredicate>>,
+ /// The default value for the field if present.
+ pub value: Option<proc_macro2::TokenStream>,
+}
+
+#[derive(Debug, Default)]
+/// Represents the `derivative(Hash(…))` attributes on a field.
+pub struct FieldHash {
+ /// The `bound` attribute if present and the corresponding bounds.
+ bounds: Option<Vec<syn::WherePredicate>>,
+ /// The `hash_with` attribute if present and the path to the hashing function.
+ hash_with: Option<syn::Path>,
+ /// Whether the field is to be ignored when hashing.
+ ignore: bool,
+}
+
+#[derive(Debug, Default)]
+/// Represent the `derivative(PartialEq(…))` attributes on a field.
+pub struct FieldPartialEq {
+ /// The `bound` attribute if present and the corresponding bounds.
+ bounds: Option<Vec<syn::WherePredicate>>,
+ /// The `compare_with` attribute if present and the path to the comparison function.
+ compare_with: Option<syn::Path>,
+ /// Whether the field is to be ignored when comparing.
+ ignore: bool,
+}
+
+#[derive(Debug, Default)]
+/// Represent the `derivative(PartialOrd(…))` attributes on a field.
+pub struct FieldPartialOrd {
+ /// The `bound` attribute if present and the corresponding bounds.
+ bounds: Option<Vec<syn::WherePredicate>>,
+ /// The `compare_with` attribute if present and the path to the comparison function.
+ compare_with: Option<syn::Path>,
+ /// Whether the field is to be ignored when comparing.
+ ignore: bool,
+}
+
+#[derive(Debug, Default)]
+/// Represent the `derivative(Ord(…))` attributes on a field.
+pub struct FieldOrd {
+ /// The `bound` attribute if present and the corresponding bounds.
+ bounds: Option<Vec<syn::WherePredicate>>,
+ /// The `compare_with` attribute if present and the path to the comparison function.
+ compare_with: Option<syn::Path>,
+ /// Whether the field is to be ignored when comparing.
+ ignore: bool,
+}
+
+macro_rules! for_all_attr {
+ ($errors:ident; for ($name:ident, $value:ident) in $attrs:expr; $($body:tt)*) => {
+ for meta_items in $attrs.iter() {
+ let meta_items = derivative_attribute(meta_items, $errors);
+ if let Some(meta_items) = meta_items {
+ for meta_item in meta_items.iter() {
+ let meta_item = read_items(meta_item, $errors);
+ let MetaItem($name, $value) = try!(meta_item);
+ match $name.to_string().as_ref() {
+ $($body)*
+ }
+ }
+ }
+ }
+ };
+}
+
+macro_rules! match_attributes {
+ ($errors:ident for $trait:expr; let Some($name:ident) = $unwrapped:expr; for $value:ident in $values:expr; $($body:tt)* ) => {
+ let mut $name = $unwrapped.take().unwrap_or_default();
+
+ match_attributes! {
+ $errors for $trait;
+ for $value in $values;
+ $($body)*
+ }
+
+ $unwrapped = Some($name);
+ };
+
+ ($errors:ident for $trait:expr; for $value:ident in $values:expr; $($body:tt)* ) => {
+ for (name, $value) in $values {
+ match name {
+ Some(ident) => {
+ match ident.to_string().as_ref() {
+ $($body)*
+ unknown => {
+ let message = format!("Unknown attribute `{}` for trait `{}`", unknown, $trait);
+ $errors.extend(quote_spanned! {ident.span()=>
+ compile_error!(#message);
+ });
+ }
+ }
+ }
+ None => {
+ let value = $value.expect("Expected value to be passed");
+ match value.value().as_ref() {
+ $($body)*
+ unknown => {
+ let message = format!("Unknown attribute `{}` for trait `{}`", unknown, $trait);
+ let span = value.span();
+ $errors.extend(quote_spanned! {span=>
+ compile_error!(#message);
+ });
+ }
+ }
+ }
+ }
+ }
+ };
+}
+
+impl Input {
+ /// Parse the `derivative` attributes on a type.
+ #[allow(clippy::cognitive_complexity)] // mostly macros
+ pub fn from_ast(
+ attrs: &[syn::Attribute],
+ errors: &mut proc_macro2::TokenStream,
+ ) -> Result<Input, ()> {
+ let mut input = Input {
+ is_packed: attrs.iter().any(has_repr_packed_attr),
+ ..Default::default()
+ };
+
+ for_all_attr! {
+ errors;
+ for (name, values) in attrs;
+ "Clone" => {
+ match_attributes! {
+ errors for "Clone";
+ let Some(clone) = input.clone;
+ for value in values;
+ "bound" => parse_bound(&mut clone.bounds, value, errors),
+ "clone_from" => {
+ clone.clone_from = parse_boolean_meta_item(value, true, "clone_from", errors);
+ }
+ }
+ }
+ "Copy" => {
+ match_attributes! {
+ errors for "Copy";
+ let Some(copy) = input.copy;
+ for value in values;
+ "bound" => parse_bound(&mut copy.bounds, value, errors),
+ }
+ }
+ "Debug" => {
+ match_attributes! {
+ errors for "Debug";
+ let Some(debug) = input.debug;
+ for value in values;
+ "bound" => parse_bound(&mut debug.bounds, value, errors),
+ "transparent" => {
+ debug.transparent = parse_boolean_meta_item(value, true, "transparent", errors);
+ }
+ }
+ }
+ "Default" => {
+ match_attributes! {
+ errors for "Default";
+ let Some(default) = input.default;
+ for value in values;
+ "bound" => parse_bound(&mut default.bounds, value, errors),
+ "new" => {
+ default.new = parse_boolean_meta_item(value, true, "new", errors);
+ }
+ }
+ }
+ "Eq" => {
+ match_attributes! {
+ errors for "Eq";
+ let Some(eq) = input.eq;
+ for value in values;
+ "bound" => parse_bound(&mut eq.bounds, value, errors),
+ }
+ }
+ "Hash" => {
+ match_attributes! {
+ errors for "Hash";
+ let Some(hash) = input.hash;
+ for value in values;
+ "bound" => parse_bound(&mut hash.bounds, value, errors),
+ }
+ }
+ "PartialEq" => {
+ match_attributes! {
+ errors for "PartialEq";
+ let Some(partial_eq) = input.partial_eq;
+ for value in values;
+ "bound" => parse_bound(&mut partial_eq.bounds, value, errors),
+ "feature_allow_slow_enum" => (), // backward compatibility, now unnecessary
+ }
+ }
+ "PartialOrd" => {
+ match_attributes! {
+ errors for "PartialOrd";
+ let Some(partial_ord) = input.partial_ord;
+ for value in values;
+ "bound" => parse_bound(&mut partial_ord.bounds, value, errors),
+ "feature_allow_slow_enum" => {
+ partial_ord.on_enum = parse_boolean_meta_item(value, true, "feature_allow_slow_enum", errors);
+ }
+ }
+ }
+ "Ord" => {
+ match_attributes! {
+ errors for "Ord";
+ let Some(ord) = input.ord;
+ for value in values;
+ "bound" => parse_bound(&mut ord.bounds, value, errors),
+ "feature_allow_slow_enum" => {
+ ord.on_enum = parse_boolean_meta_item(value, true, "feature_allow_slow_enum", errors);
+ }
+ }
+ }
+ unknown => {
+ let message = format!("deriving `{}` is not supported by derivative", unknown);
+ errors.extend(quote_spanned! {name.span()=>
+ compile_error!(#message);
+ });
+ }
+ }
+
+ Ok(input)
+ }
+
+ pub fn clone_bound(&self) -> Option<&[syn::WherePredicate]> {
+ self.clone
+ .as_ref()
+ .and_then(|d| d.bounds.as_ref().map(Vec::as_slice))
+ }
+
+ pub fn clone_from(&self) -> bool {
+ self.clone.as_ref().map_or(false, |d| d.clone_from)
+ }
+
+ pub fn copy_bound(&self) -> Option<&[syn::WherePredicate]> {
+ self.copy
+ .as_ref()
+ .and_then(|d| d.bounds.as_ref().map(Vec::as_slice))
+ }
+
+ pub fn debug_bound(&self) -> Option<&[syn::WherePredicate]> {
+ self.debug
+ .as_ref()
+ .and_then(|d| d.bounds.as_ref().map(Vec::as_slice))
+ }
+
+ pub fn debug_transparent(&self) -> bool {
+ self.debug.as_ref().map_or(false, |d| d.transparent)
+ }
+
+ pub fn default_bound(&self) -> Option<&[syn::WherePredicate]> {
+ self.default
+ .as_ref()
+ .and_then(|d| d.bounds.as_ref().map(Vec::as_slice))
+ }
+
+ pub fn eq_bound(&self) -> Option<&[syn::WherePredicate]> {
+ self.eq
+ .as_ref()
+ .and_then(|d| d.bounds.as_ref().map(Vec::as_slice))
+ }
+
+ pub fn hash_bound(&self) -> Option<&[syn::WherePredicate]> {
+ self.hash
+ .as_ref()
+ .and_then(|d| d.bounds.as_ref().map(Vec::as_slice))
+ }
+
+ pub fn partial_eq_bound(&self) -> Option<&[syn::WherePredicate]> {
+ self.partial_eq
+ .as_ref()
+ .and_then(|d| d.bounds.as_ref().map(Vec::as_slice))
+ }
+
+ pub fn partial_ord_bound(&self) -> Option<&[syn::WherePredicate]> {
+ self.partial_ord
+ .as_ref()
+ .and_then(|d| d.bounds.as_ref().map(Vec::as_slice))
+ }
+
+ pub fn ord_bound(&self) -> Option<&[syn::WherePredicate]> {
+ self.ord
+ .as_ref()
+ .and_then(|d| d.bounds.as_ref().map(Vec::as_slice))
+ }
+
+ pub fn partial_ord_on_enum(&self) -> bool {
+ self.partial_ord.as_ref().map_or(false, |d| d.on_enum)
+ }
+
+ pub fn ord_on_enum(&self) -> bool {
+ self.ord.as_ref().map_or(false, |d| d.on_enum)
+ }
+}
+
+impl Field {
+ /// Parse the `derivative` attributes on a type.
+ #[allow(clippy::cognitive_complexity)] // mostly macros
+ pub fn from_ast(
+ field: &syn::Field,
+ errors: &mut proc_macro2::TokenStream,
+ ) -> Result<Field, ()> {
+ let mut out = Field::default();
+
+ for_all_attr! {
+ errors;
+ for (name, values) in field.attrs;
+ "Clone" => {
+ match_attributes! {
+ errors for "Clone";
+ for value in values;
+ "bound" => parse_bound(&mut out.clone.bounds, value, errors),
+ "clone_with" => {
+ let path = value.expect("`clone_with` needs a value");
+ out.clone.clone_with = parse_str_lit(&path, errors).ok();
+ }
+ }
+ }
+ "Debug" => {
+ match_attributes! {
+ errors for "Debug";
+ for value in values;
+ "bound" => parse_bound(&mut out.debug.bounds, value, errors),
+ "format_with" => {
+ let path = value.expect("`format_with` needs a value");
+ out.debug.format_with = parse_str_lit(&path, errors).ok();
+ }
+ "ignore" => {
+ out.debug.ignore = parse_boolean_meta_item(value, true, "ignore", errors);
+ }
+ }
+ }
+ "Default" => {
+ match_attributes! {
+ errors for "Default";
+ for value in values;
+ "bound" => parse_bound(&mut out.default.bounds, value, errors),
+ "value" => {
+ let value = value.expect("`value` needs a value");
+ out.default.value = parse_str_lit(&value, errors).ok();
+ }
+ }
+ }
+ "Eq" => {
+ match_attributes! {
+ errors for "Eq";
+ for value in values;
+ "bound" => parse_bound(&mut out.eq_bound, value, errors),
+ }
+ }
+ "Hash" => {
+ match_attributes! {
+ errors for "Hash";
+ for value in values;
+ "bound" => parse_bound(&mut out.hash.bounds, value, errors),
+ "hash_with" => {
+ let path = value.expect("`hash_with` needs a value");
+ out.hash.hash_with = parse_str_lit(&path, errors).ok();
+ }
+ "ignore" => {
+ out.hash.ignore = parse_boolean_meta_item(value, true, "ignore", errors);
+ }
+ }
+ }
+ "PartialEq" => {
+ match_attributes! {
+ errors for "PartialEq";
+ for value in values;
+ "bound" => parse_bound(&mut out.partial_eq.bounds, value, errors),
+ "compare_with" => {
+ let path = value.expect("`compare_with` needs a value");
+ out.partial_eq.compare_with = parse_str_lit(&path, errors).ok();
+ }
+ "ignore" => {
+ out.partial_eq.ignore = parse_boolean_meta_item(value, true, "ignore", errors);
+ }
+ }
+ }
+ "PartialOrd" => {
+ match_attributes! {
+ errors for "PartialOrd";
+ for value in values;
+ "bound" => parse_bound(&mut out.partial_ord.bounds, value, errors),
+ "compare_with" => {
+ let path = value.expect("`compare_with` needs a value");
+ out.partial_ord.compare_with = parse_str_lit(&path, errors).ok();
+ }
+ "ignore" => {
+ out.partial_ord.ignore = parse_boolean_meta_item(value, true, "ignore", errors);
+ }
+ }
+ }
+ "Ord" => {
+ match_attributes! {
+ errors for "Ord";
+ for value in values;
+ "bound" => parse_bound(&mut out.ord.bounds, value, errors),
+ "compare_with" => {
+ let path = value.expect("`compare_with` needs a value");
+ out.ord.compare_with = parse_str_lit(&path, errors).ok();
+ }
+ "ignore" => {
+ out.ord.ignore = parse_boolean_meta_item(value, true, "ignore", errors);
+ }
+ }
+ }
+ unknown => {
+ let message = format!("deriving `{}` is not supported by derivative", unknown);
+ errors.extend(quote_spanned! {name.span()=>
+ compile_error!(#message);
+ });
+ }
+ }
+
+ Ok(out)
+ }
+
+ pub fn clone_bound(&self) -> Option<&[syn::WherePredicate]> {
+ self.clone.bounds.as_ref().map(Vec::as_slice)
+ }
+
+ pub fn clone_with(&self) -> Option<&syn::Path> {
+ self.clone.clone_with.as_ref()
+ }
+
+ pub fn copy_bound(&self) -> Option<&[syn::WherePredicate]> {
+ self.copy_bound.as_ref().map(Vec::as_slice)
+ }
+
+ pub fn debug_bound(&self) -> Option<&[syn::WherePredicate]> {
+ self.debug.bounds.as_ref().map(Vec::as_slice)
+ }
+
+ pub fn debug_format_with(&self) -> Option<&syn::Path> {
+ self.debug.format_with.as_ref()
+ }
+
+ pub fn ignore_debug(&self) -> bool {
+ self.debug.ignore
+ }
+
+ pub fn ignore_hash(&self) -> bool {
+ self.hash.ignore
+ }
+
+ pub fn default_bound(&self) -> Option<&[syn::WherePredicate]> {
+ self.default.bounds.as_ref().map(Vec::as_slice)
+ }
+
+ pub fn default_value(&self) -> Option<&proc_macro2::TokenStream> {
+ self.default.value.as_ref()
+ }
+
+ pub fn eq_bound(&self) -> Option<&[syn::WherePredicate]> {
+ self.eq_bound.as_ref().map(Vec::as_slice)
+ }
+
+ pub fn hash_bound(&self) -> Option<&[syn::WherePredicate]> {
+ self.hash.bounds.as_ref().map(Vec::as_slice)
+ }
+
+ pub fn hash_with(&self) -> Option<&syn::Path> {
+ self.hash.hash_with.as_ref()
+ }
+
+ pub fn partial_eq_bound(&self) -> Option<&[syn::WherePredicate]> {
+ self.partial_eq.bounds.as_ref().map(Vec::as_slice)
+ }
+
+ pub fn partial_ord_bound(&self) -> Option<&[syn::WherePredicate]> {
+ self.partial_ord.bounds.as_ref().map(Vec::as_slice)
+ }
+
+ pub fn ord_bound(&self) -> Option<&[syn::WherePredicate]> {
+ self.ord.bounds.as_ref().map(Vec::as_slice)
+ }
+
+ pub fn partial_eq_compare_with(&self) -> Option<&syn::Path> {
+ self.partial_eq.compare_with.as_ref()
+ }
+
+ pub fn partial_ord_compare_with(&self) -> Option<&syn::Path> {
+ self.partial_ord.compare_with.as_ref()
+ }
+
+ pub fn ord_compare_with(&self) -> Option<&syn::Path> {
+ self.ord.compare_with.as_ref()
+ }
+
+ pub fn ignore_partial_eq(&self) -> bool {
+ self.partial_eq.ignore
+ }
+
+ pub fn ignore_partial_ord(&self) -> bool {
+ self.partial_ord.ignore
+ }
+
+ pub fn ignore_ord(&self) -> bool {
+ self.ord.ignore
+ }
+}
+
+/// Represent an attribute.
+///
+/// We only have a limited set of possible attributes:
+///
+/// * `#[derivative(Debug)]` is represented as `(Debug, [])`;
+/// * `#[derivative(Debug="foo")]` is represented as `(Debug, [(None, Some("foo"))])`;
+/// * `#[derivative(Debug(foo="bar")]` is represented as `(Debug, [(Some(foo), Some("bar"))])`.
+struct MetaItem<'a>(
+ &'a syn::Ident,
+ Vec<(Option<&'a syn::Ident>, Option<&'a syn::LitStr>)>,
+);
+
+/// Parse an arbitrary item for our limited `MetaItem` subset.
+fn read_items<'a>(item: &'a syn::NestedMeta, errors: &mut proc_macro2::TokenStream) -> Result<MetaItem<'a>, ()> {
+ let item = match *item {
+ syn::NestedMeta::Meta(ref item) => item,
+ syn::NestedMeta::Lit(ref lit) => {
+ errors.extend(quote_spanned! {lit.span()=>
+ compile_error!("expected meta-item but found literal");
+ });
+
+ return Err(());
+ }
+ };
+ match *item {
+ syn::Meta::Path(ref path) => match path.get_ident() {
+ Some(name) => Ok(MetaItem(name, Vec::new())),
+ None => {
+ errors.extend(quote_spanned! {path.span()=>
+ compile_error!("expected derivative attribute to be a string, but found a path");
+ });
+
+ Err(())
+ }
+ },
+ syn::Meta::List(syn::MetaList {
+ ref path,
+ nested: ref values,
+ ..
+ }) => {
+ let values = values
+ .iter()
+ .map(|value| {
+ if let syn::NestedMeta::Meta(syn::Meta::NameValue(syn::MetaNameValue {
+ ref path,
+ lit: ref value,
+ ..
+ })) = *value
+ {
+ let (name, value) = ensure_str_lit(&path, &value, errors)?;
+
+ Ok((Some(name), Some(value)))
+ } else {
+ errors.extend(quote_spanned! {value.span()=>
+ compile_error!("expected named value");
+ });
+
+ Err(())
+ }
+ })
+ .collect::<Result<_, _>>()?;
+
+ let name = match path.get_ident() {
+ Some(name) => name,
+ None => {
+ errors.extend(quote_spanned! {path.span()=>
+ compile_error!("expected derivative attribute to be a string, but found a path");
+ });
+
+ return Err(());
+ }
+ };
+
+ Ok(MetaItem(name, values))
+ }
+ syn::Meta::NameValue(syn::MetaNameValue {
+ ref path,
+ lit: ref value,
+ ..
+ }) => {
+ let (name, value) = ensure_str_lit(&path, &value, errors)?;
+
+ Ok(MetaItem(name, vec![(None, Some(value))]))
+ }
+ }
+}
+
+/// Filter the `derivative` items from an attribute.
+fn derivative_attribute(
+ attribute: &syn::Attribute,
+ errors: &mut proc_macro2::TokenStream,
+) -> Option<syn::punctuated::Punctuated<syn::NestedMeta, syn::token::Comma>> {
+ if !attribute.path.is_ident("derivative") {
+ return None;
+ }
+ match attribute.parse_meta() {
+ Ok(syn::Meta::List(meta_list)) => Some(meta_list.nested),
+ Ok(_) => None,
+ Err(e) => {
+ let message = format!("invalid attribute: {}", e);
+ errors.extend(quote_spanned! {e.span()=>
+ compile_error!(#message);
+ });
+
+ None
+ }
+ }
+}
+
+/// Parse an item value as a boolean. Accepted values are the string literal `"true"` and
+/// `"false"`. The `default` parameter specifies what the value of the boolean is when only its
+/// name is specified (eg. `Debug="ignore"` is equivalent to `Debug(ignore="true")`). The `name`
+/// parameter is used for error reporting.
+fn parse_boolean_meta_item(
+ item: Option<&syn::LitStr>,
+ default: bool,
+ name: &str,
+ errors: &mut proc_macro2::TokenStream,
+) -> bool {
+ if let Some(item) = item.as_ref() {
+ match item.value().as_ref() {
+ "true" => true,
+ "false" => false,
+ val => {
+ if val == name {
+ true
+ } else {
+ let message = format!(
+ r#"expected `"true"` or `"false"` for `{}`, got `{}`"#,
+ name, val
+ );
+ errors.extend(quote_spanned! {item.span()=>
+ compile_error!(#message);
+ });
+
+ default
+ }
+ }
+ }
+ } else {
+ default
+ }
+}
+
+/// Parse a `bound` item.
+fn parse_bound(
+ opt_bounds: &mut Option<Vec<syn::WherePredicate>>,
+ value: Option<&syn::LitStr>,
+ errors: &mut proc_macro2::TokenStream,
+) {
+ let bound = value.expect("`bound` needs a value");
+ let bound_value = bound.value();
+
+ *opt_bounds = if !bound_value.is_empty() {
+ let where_string = syn::LitStr::new(&format!("where {}", bound_value), bound.span());
+
+ let bounds = parse_str_lit::<syn::WhereClause>(&where_string, errors)
+ .map(|wh| wh.predicates.into_iter().collect());
+
+ match bounds {
+ Ok(bounds) => Some(bounds),
+ Err(_) => {
+ errors.extend(quote_spanned! {where_string.span()=>
+ compile_error!("could not parse bound");
+ });
+
+ None
+ }
+ }
+ } else {
+ Some(vec![])
+ };
+}
+
+fn parse_str_lit<T>(value: &syn::LitStr, errors: &mut proc_macro2::TokenStream) -> Result<T, ()>
+where
+ T: syn::parse::Parse,
+{
+ match value.parse() {
+ Ok(value) => Ok(value),
+ Err(e) => {
+ let message = format!("could not parse string literal: {}", e);
+ errors.extend(quote_spanned! {value.span()=>
+ compile_error!(#message);
+ });
+ Err(())
+ }
+ }
+}
+
+fn ensure_str_lit<'a>(
+ attr_path: &'a syn::Path,
+ lit: &'a syn::Lit,
+ errors: &mut proc_macro2::TokenStream,
+) -> Result<(&'a syn::Ident, &'a syn::LitStr), ()> {
+ let attr_name = match attr_path.get_ident() {
+ Some(attr_name) => attr_name,
+ None => {
+ errors.extend(quote_spanned! {attr_path.span()=>
+ compile_error!("expected derivative attribute to be a string, but found a path");
+ });
+ return Err(());
+ }
+ };
+
+ if let syn::Lit::Str(ref lit) = *lit {
+ Ok((attr_name, lit))
+ } else {
+ let message = format!(
+ "expected derivative {} attribute to be a string: `{} = \"...\"`",
+ attr_name, attr_name
+ );
+ errors.extend(quote_spanned! {lit.span()=>
+ compile_error!(#message);
+ });
+ Err(())
+ }
+}
+
+pub fn has_repr_packed_attr(attr: &syn::Attribute) -> bool {
+ if let Ok(attr) = attr.parse_meta() {
+ if attr.path().get_ident().map(|i| i == "repr") == Some(true) {
+ if let syn::Meta::List(items) = attr {
+ for item in items.nested {
+ if let syn::NestedMeta::Meta(item) = item {
+ if item.path().get_ident().map(|i| i == "packed") == Some(true) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ false
+}
diff --git a/vendor/derivative/src/bound.rs b/vendor/derivative/src/bound.rs
new file mode 100644
index 000000000..4c1361c0a
--- /dev/null
+++ b/vendor/derivative/src/bound.rs
@@ -0,0 +1,175 @@
+/* This file incorporates work covered by the following copyright and
+ * permission notice:
+ * Copyright 2016 The serde Developers. See
+ * https://github.com/serde-rs/serde/blob/3f28a9324042950afa80354722aeeee1a55cbfa3/README.md#license.
+ *
+ * Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+ * http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+ * <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+ * option. This file may not be copied, modified, or distributed
+ * except according to those terms.
+ */
+
+use ast;
+use attr;
+use std::collections::HashSet;
+use syn::{self, visit, GenericParam};
+
+// use internals::ast::Item;
+// use internals::attr;
+
+/// Remove the default from every type parameter because in the generated `impl`s
+/// they look like associated types: "error: associated type bindings are not
+/// allowed here".
+pub fn without_defaults(generics: &syn::Generics) -> syn::Generics {
+ syn::Generics {
+ params: generics
+ .params
+ .iter()
+ .map(|generic_param| match *generic_param {
+ GenericParam::Type(ref ty_param) => syn::GenericParam::Type(syn::TypeParam {
+ default: None,
+ ..ty_param.clone()
+ }),
+ ref param => param.clone(),
+ })
+ .collect(),
+ ..generics.clone()
+ }
+}
+
+pub fn with_where_predicates(
+ generics: &syn::Generics,
+ predicates: &[syn::WherePredicate],
+) -> syn::Generics {
+ let mut cloned = generics.clone();
+ cloned
+ .make_where_clause()
+ .predicates
+ .extend(predicates.iter().cloned());
+ cloned
+}
+
+pub fn with_where_predicates_from_fields<F>(
+ item: &ast::Input,
+ generics: &syn::Generics,
+ from_field: F,
+) -> syn::Generics
+where
+ F: Fn(&attr::Field) -> Option<&[syn::WherePredicate]>,
+{
+ let mut cloned = generics.clone();
+ {
+ let fields = item.body.all_fields();
+ let field_where_predicates = fields
+ .iter()
+ .flat_map(|field| from_field(&field.attrs))
+ .flat_map(|predicates| predicates.to_vec());
+
+ cloned
+ .make_where_clause()
+ .predicates
+ .extend(field_where_predicates);
+ }
+ cloned
+}
+
+/// Puts the given bound on any generic type parameters that are used in fields
+/// for which filter returns true.
+///
+/// For example, the following structure needs the bound `A: Debug, B: Debug`.
+///
+/// ```ignore
+/// struct S<'b, A, B: 'b, C> {
+/// a: A,
+/// b: Option<&'b B>
+/// #[derivative(Debug="ignore")]
+/// c: C,
+/// }
+/// ```
+pub fn with_bound<F>(
+ item: &ast::Input,
+ generics: &syn::Generics,
+ filter: F,
+ bound: &syn::Path,
+) -> syn::Generics
+where
+ F: Fn(&attr::Field) -> bool,
+{
+ #[derive(Debug)]
+ struct FindTyParams {
+ /// Set of all generic type parameters on the current struct (A, B, C in
+ /// the example). Initialized up front.
+ all_ty_params: HashSet<syn::Ident>,
+ /// Set of generic type parameters used in fields for which filter
+ /// returns true (A and B in the example). Filled in as the visitor sees
+ /// them.
+ relevant_ty_params: HashSet<syn::Ident>,
+ }
+ impl<'ast> visit::Visit<'ast> for FindTyParams {
+ fn visit_path(&mut self, path: &'ast syn::Path) {
+ if is_phantom_data(path) {
+ // Hardcoded exception, because `PhantomData<T>` implements
+ // most traits whether or not `T` implements it.
+ return;
+ }
+ if path.leading_colon.is_none() && path.segments.len() == 1 {
+ let id = &path.segments[0].ident;
+ if self.all_ty_params.contains(id) {
+ self.relevant_ty_params.insert(id.clone());
+ }
+ }
+ visit::visit_path(self, path);
+ }
+ }
+
+ let all_ty_params: HashSet<_> = generics
+ .type_params()
+ .map(|ty_param| ty_param.ident.clone())
+ .collect();
+
+ let relevant_tys = item
+ .body
+ .all_fields()
+ .into_iter()
+ .filter(|field| {
+ if let syn::Type::Path(syn::TypePath { ref path, .. }) = *field.ty {
+ !is_phantom_data(path)
+ } else {
+ true
+ }
+ })
+ .filter(|field| filter(&field.attrs))
+ .map(|field| &field.ty);
+
+ let mut visitor = FindTyParams {
+ all_ty_params,
+ relevant_ty_params: HashSet::new(),
+ };
+ for ty in relevant_tys {
+ visit::visit_type(&mut visitor, ty);
+ }
+
+ let mut cloned = generics.clone();
+ {
+ let relevant_where_predicates = generics
+ .type_params()
+ .map(|ty_param| &ty_param.ident)
+ .filter(|id| visitor.relevant_ty_params.contains(id))
+ .map(|id| -> syn::WherePredicate { parse_quote!( #id : #bound ) });
+
+ cloned
+ .make_where_clause()
+ .predicates
+ .extend(relevant_where_predicates);
+ }
+ cloned
+}
+
+#[allow(clippy::match_like_matches_macro)] // needs rustc 1.42
+fn is_phantom_data(path: &syn::Path) -> bool {
+ match path.segments.last() {
+ Some(path) if path.ident == "PhantomData" => true,
+ _ => false,
+ }
+}
diff --git a/vendor/derivative/src/clone.rs b/vendor/derivative/src/clone.rs
new file mode 100644
index 000000000..3594e9498
--- /dev/null
+++ b/vendor/derivative/src/clone.rs
@@ -0,0 +1,196 @@
+use proc_macro2;
+
+use ast;
+use attr;
+use matcher;
+use syn;
+use utils;
+
+/// Derive `Copy` for `input`.
+pub fn derive_copy(input: &ast::Input) -> proc_macro2::TokenStream {
+ let name = &input.ident;
+
+ let copy_trait_path = copy_trait_path();
+ let generics = utils::build_impl_generics(
+ input,
+ &copy_trait_path,
+ |attrs| attrs.copy_bound().is_none(),
+ |field| field.copy_bound(),
+ |input| input.copy_bound(),
+ );
+ let (impl_generics, ty_generics, where_clause) = generics.split_for_impl();
+
+ quote! {
+ #[allow(unused_qualifications)]
+ impl #impl_generics #copy_trait_path for #name #ty_generics #where_clause {}
+ }
+}
+
+/// Derive `Clone` for `input`.
+pub fn derive_clone(input: &ast::Input) -> proc_macro2::TokenStream {
+ let name = &input.ident;
+
+ let clone_trait_path = clone_trait_path();
+ let generics = utils::build_impl_generics(
+ input,
+ &clone_trait_path,
+ needs_clone_bound,
+ |field| field.clone_bound(),
+ |input| input.clone_bound(),
+ );
+ let (impl_generics, ty_generics, where_clause) = generics.split_for_impl();
+
+ let is_copy = input.attrs.copy.is_some();
+ if is_copy && input.generics.type_params().count() == 0 {
+ quote! {
+ #[allow(unused_qualifications)]
+ impl #impl_generics #clone_trait_path for #name #ty_generics #where_clause {
+ fn clone(&self) -> Self {
+ *self
+ }
+ }
+ }
+ } else {
+ let body = matcher::Matcher::new(matcher::BindingStyle::Ref, input.attrs.is_packed).build_arms(
+ input,
+ "__arg",
+ |arm_path, _, _, style, _, bis| {
+ let field_clones = bis.iter().map(|bi| {
+ let arg = &bi.expr;
+
+ let clone = if let Some(clone_with) = bi.field.attrs.clone_with() {
+ quote!(#clone_with(&#arg))
+ } else {
+ quote!(#arg.clone())
+ };
+
+ if let Some(ref name) = bi.field.ident {
+ quote! {
+ #name: #clone
+ }
+ } else {
+ clone
+ }
+ });
+
+ match style {
+ ast::Style::Struct => {
+ quote! {
+ #arm_path {
+ #(#field_clones),*
+ }
+ }
+ }
+ ast::Style::Tuple => {
+ quote! {
+ #arm_path (#(#field_clones),*)
+ }
+ }
+ ast::Style::Unit => {
+ quote! {
+ #arm_path
+ }
+ }
+ }
+ },
+ );
+
+ let clone_from = if input.attrs.clone_from() {
+ Some(
+ matcher::Matcher::new(matcher::BindingStyle::RefMut, input.attrs.is_packed).build_arms(
+ input,
+ "__arg",
+ |outer_arm_path, _, _, _, _, outer_bis| {
+ let body = matcher::Matcher::new(matcher::BindingStyle::Ref, input.attrs.is_packed).build_arms(
+ input,
+ "__other",
+ |inner_arm_path, _, _, _, _, inner_bis| {
+ if outer_arm_path == inner_arm_path {
+ let field_clones = outer_bis.iter().zip(inner_bis).map(
+ |(outer_bi, inner_bi)| {
+ let outer = &outer_bi.expr;
+ let inner = &inner_bi.expr;
+
+ quote!(#outer.clone_from(&#inner);)
+ },
+ );
+
+ quote! {
+ #(#field_clones)*
+ return;
+ }
+ } else {
+ quote!()
+ }
+ },
+ );
+
+ quote! {
+ match *other {
+ #body
+ }
+ }
+ },
+ ),
+ )
+ } else {
+ None
+ };
+
+ let clone_from = clone_from.map(|body| {
+ // Enumerations are only cloned-from if both variants are the same.
+ // If they are different, fallback to normal cloning.
+ let fallback = if let ast::Body::Enum(_) = input.body {
+ Some(quote!(*self = other.clone();))
+ } else {
+ None
+ };
+
+ quote! {
+ #[allow(clippy::needless_return)]
+ fn clone_from(&mut self, other: &Self) {
+ match *self {
+ #body
+ }
+
+ #fallback
+ }
+ }
+ });
+
+ quote! {
+ #[allow(unused_qualifications)]
+ impl #impl_generics #clone_trait_path for #name #ty_generics #where_clause {
+ fn clone(&self) -> Self {
+ match *self {
+ #body
+ }
+ }
+
+ #clone_from
+ }
+ }
+ }
+}
+
+fn needs_clone_bound(attrs: &attr::Field) -> bool {
+ attrs.clone_bound().is_none()
+}
+
+/// Return the path of the `Clone` trait, that is `::std::clone::Clone`.
+fn clone_trait_path() -> syn::Path {
+ if cfg!(feature = "use_core") {
+ parse_quote!(::core::clone::Clone)
+ } else {
+ parse_quote!(::std::clone::Clone)
+ }
+}
+
+/// Return the path of the `Copy` trait, that is `::std::marker::Copy`.
+fn copy_trait_path() -> syn::Path {
+ if cfg!(feature = "use_core") {
+ parse_quote!(::core::marker::Copy)
+ } else {
+ parse_quote!(::std::marker::Copy)
+ }
+}
diff --git a/vendor/derivative/src/cmp.rs b/vendor/derivative/src/cmp.rs
new file mode 100644
index 000000000..573c5fa79
--- /dev/null
+++ b/vendor/derivative/src/cmp.rs
@@ -0,0 +1,407 @@
+// https://github.com/rust-lang/rust/issues/13101
+
+use ast;
+use attr;
+use matcher;
+use paths;
+use proc_macro2;
+use syn;
+use utils;
+
+/// Derive `Eq` for `input`.
+pub fn derive_eq(input: &ast::Input) -> proc_macro2::TokenStream {
+ let name = &input.ident;
+
+ let eq_trait_path = eq_trait_path();
+ let generics = utils::build_impl_generics(
+ input,
+ &eq_trait_path,
+ needs_eq_bound,
+ |field| field.eq_bound(),
+ |input| input.eq_bound(),
+ );
+ let new_where_clause;
+ let (impl_generics, ty_generics, mut where_clause) = generics.split_for_impl();
+
+ if let Some(new_where_clause2) =
+ maybe_add_copy(input, where_clause, |f| !f.attrs.ignore_partial_eq())
+ {
+ new_where_clause = new_where_clause2;
+ where_clause = Some(&new_where_clause);
+ }
+
+ quote! {
+ #[allow(unused_qualifications)]
+ impl #impl_generics #eq_trait_path for #name #ty_generics #where_clause {}
+ }
+}
+
+/// Derive `PartialEq` for `input`.
+pub fn derive_partial_eq(input: &ast::Input) -> proc_macro2::TokenStream {
+ let discriminant_cmp = if let ast::Body::Enum(_) = input.body {
+ let discriminant_path = paths::discriminant_path();
+
+ quote!((#discriminant_path(&*self) == #discriminant_path(&*other)))
+ } else {
+ quote!(true)
+ };
+
+ let name = &input.ident;
+
+ let partial_eq_trait_path = partial_eq_trait_path();
+ let generics = utils::build_impl_generics(
+ input,
+ &partial_eq_trait_path,
+ needs_partial_eq_bound,
+ |field| field.partial_eq_bound(),
+ |input| input.partial_eq_bound(),
+ );
+ let new_where_clause;
+ let (impl_generics, ty_generics, mut where_clause) = generics.split_for_impl();
+
+ let match_fields = if input.is_trivial_enum() {
+ quote!(true)
+ } else {
+ matcher::Matcher::new(matcher::BindingStyle::Ref, input.attrs.is_packed)
+ .with_field_filter(|f: &ast::Field| !f.attrs.ignore_partial_eq())
+ .build_2_arms(
+ (quote!(*self), quote!(*other)),
+ (input, "__self"),
+ (input, "__other"),
+ |_, _, _, (left_variant, right_variant)| {
+ let cmp = left_variant.iter().zip(&right_variant).map(|(o, i)| {
+ let outer_name = &o.expr;
+ let inner_name = &i.expr;
+
+ if o.field.attrs.ignore_partial_eq() {
+ None
+ } else if let Some(compare_fn) = o.field.attrs.partial_eq_compare_with() {
+ Some(quote!(&& #compare_fn(&#outer_name, &#inner_name)))
+ } else {
+ Some(quote!(&& &#outer_name == &#inner_name))
+ }
+ });
+
+ quote!(true #(#cmp)*)
+ },
+ )
+ };
+
+ if let Some(new_where_clause2) =
+ maybe_add_copy(input, where_clause, |f| !f.attrs.ignore_partial_eq())
+ {
+ new_where_clause = new_where_clause2;
+ where_clause = Some(&new_where_clause);
+ }
+
+ quote! {
+ #[allow(unused_qualifications)]
+ #[allow(clippy::unneeded_field_pattern)]
+ impl #impl_generics #partial_eq_trait_path for #name #ty_generics #where_clause {
+ fn eq(&self, other: &Self) -> bool {
+ #discriminant_cmp && #match_fields
+ }
+ }
+ }
+}
+
+/// Derive `PartialOrd` for `input`.
+pub fn derive_partial_ord(
+ input: &ast::Input,
+ errors: &mut proc_macro2::TokenStream,
+) -> proc_macro2::TokenStream {
+ if let ast::Body::Enum(_) = input.body {
+ if !input.attrs.partial_ord_on_enum() {
+ let message = "can't use `#[derivative(PartialOrd)]` on an enumeration without \
+ `feature_allow_slow_enum`; see the documentation for more details";
+ errors.extend(syn::Error::new(input.span, message).to_compile_error());
+ }
+ }
+
+ let option_path = option_path();
+ let ordering_path = ordering_path();
+
+ let body = matcher::Matcher::new(matcher::BindingStyle::Ref, input.attrs.is_packed)
+ .with_field_filter(|f: &ast::Field| !f.attrs.ignore_partial_ord())
+ .build_arms(input, "__self", |_, n, _, _, _, outer_bis| {
+ let body = matcher::Matcher::new(matcher::BindingStyle::Ref, input.attrs.is_packed)
+ .with_field_filter(|f: &ast::Field| !f.attrs.ignore_partial_ord())
+ .build_arms(input, "__other", |_, m, _, _, _, inner_bis| {
+ match n.cmp(&m) {
+ ::std::cmp::Ordering::Less => {
+ quote!(#option_path::Some(#ordering_path::Less))
+ }
+ ::std::cmp::Ordering::Greater => {
+ quote!(#option_path::Some(#ordering_path::Greater))
+ }
+ ::std::cmp::Ordering::Equal => {
+ let equal_path = quote!(#ordering_path::Equal);
+ outer_bis
+ .iter()
+ .rev()
+ .zip(inner_bis.into_iter().rev())
+ .fold(quote!(#option_path::Some(#equal_path)), |acc, (o, i)| {
+ let outer_name = &o.expr;
+ let inner_name = &i.expr;
+
+ if o.field.attrs.ignore_partial_ord() {
+ acc
+ } else {
+ let cmp_fn = o
+ .field
+ .attrs
+ .partial_ord_compare_with()
+ .map(|f| quote!(#f))
+ .unwrap_or_else(|| {
+ let path = partial_ord_trait_path();
+ quote!(#path::partial_cmp)
+ });
+
+ quote!(match #cmp_fn(&#outer_name, &#inner_name) {
+ #option_path::Some(#equal_path) => #acc,
+ __derive_ordering_other => __derive_ordering_other,
+ })
+ }
+ })
+ }
+ }
+ });
+
+ quote! {
+ match *other {
+ #body
+ }
+
+ }
+ });
+
+ let name = &input.ident;
+
+ let partial_ord_trait_path = partial_ord_trait_path();
+ let generics = utils::build_impl_generics(
+ input,
+ &partial_ord_trait_path,
+ needs_partial_ord_bound,
+ |field| field.partial_ord_bound(),
+ |input| input.partial_ord_bound(),
+ );
+ let new_where_clause;
+ let (impl_generics, ty_generics, mut where_clause) = generics.split_for_impl();
+
+ if let Some(new_where_clause2) =
+ maybe_add_copy(input, where_clause, |f| !f.attrs.ignore_partial_ord())
+ {
+ new_where_clause = new_where_clause2;
+ where_clause = Some(&new_where_clause);
+ }
+
+ quote! {
+ #[allow(unused_qualifications)]
+ #[allow(clippy::unneeded_field_pattern)]
+ impl #impl_generics #partial_ord_trait_path for #name #ty_generics #where_clause {
+ fn partial_cmp(&self, other: &Self) -> #option_path<#ordering_path> {
+ match *self {
+ #body
+ }
+ }
+ }
+ }
+}
+
+/// Derive `Ord` for `input`.
+pub fn derive_ord(
+ input: &ast::Input,
+ errors: &mut proc_macro2::TokenStream,
+) -> proc_macro2::TokenStream {
+ if let ast::Body::Enum(_) = input.body {
+ if !input.attrs.ord_on_enum() {
+ let message = "can't use `#[derivative(Ord)]` on an enumeration without \
+ `feature_allow_slow_enum`; see the documentation for more details";
+ errors.extend(syn::Error::new(input.span, message).to_compile_error());
+ }
+ }
+
+ let ordering_path = ordering_path();
+
+ let body = matcher::Matcher::new(matcher::BindingStyle::Ref, input.attrs.is_packed)
+ .with_field_filter(|f: &ast::Field| !f.attrs.ignore_ord())
+ .build_arms(input, "__self", |_, n, _, _, _, outer_bis| {
+ let body = matcher::Matcher::new(matcher::BindingStyle::Ref, input.attrs.is_packed)
+ .with_field_filter(|f: &ast::Field| !f.attrs.ignore_ord())
+ .build_arms(input, "__other", |_, m, _, _, _, inner_bis| {
+ match n.cmp(&m) {
+ ::std::cmp::Ordering::Less => quote!(#ordering_path::Less),
+ ::std::cmp::Ordering::Greater => quote!(#ordering_path::Greater),
+ ::std::cmp::Ordering::Equal => {
+ let equal_path = quote!(#ordering_path::Equal);
+ outer_bis
+ .iter()
+ .rev()
+ .zip(inner_bis.into_iter().rev())
+ .fold(quote!(#equal_path), |acc, (o, i)| {
+ let outer_name = &o.expr;
+ let inner_name = &i.expr;
+
+ if o.field.attrs.ignore_ord() {
+ acc
+ } else {
+ let cmp_fn = o
+ .field
+ .attrs
+ .ord_compare_with()
+ .map(|f| quote!(#f))
+ .unwrap_or_else(|| {
+ let path = ord_trait_path();
+ quote!(#path::cmp)
+ });
+
+ quote!(match #cmp_fn(&#outer_name, &#inner_name) {
+ #equal_path => #acc,
+ __derive_ordering_other => __derive_ordering_other,
+ })
+ }
+ })
+ }
+ }
+ });
+
+ quote! {
+ match *other {
+ #body
+ }
+
+ }
+ });
+
+ let name = &input.ident;
+
+ let ord_trait_path = ord_trait_path();
+ let generics = utils::build_impl_generics(
+ input,
+ &ord_trait_path,
+ needs_ord_bound,
+ |field| field.ord_bound(),
+ |input| input.ord_bound(),
+ );
+ let new_where_clause;
+ let (impl_generics, ty_generics, mut where_clause) = generics.split_for_impl();
+
+ if let Some(new_where_clause2) = maybe_add_copy(input, where_clause, |f| !f.attrs.ignore_ord())
+ {
+ new_where_clause = new_where_clause2;
+ where_clause = Some(&new_where_clause);
+ }
+
+ quote! {
+ #[allow(unused_qualifications)]
+ #[allow(clippy::unneeded_field_pattern)]
+ impl #impl_generics #ord_trait_path for #name #ty_generics #where_clause {
+ fn cmp(&self, other: &Self) -> #ordering_path {
+ match *self {
+ #body
+ }
+ }
+ }
+ }
+}
+
+fn needs_partial_eq_bound(attrs: &attr::Field) -> bool {
+ !attrs.ignore_partial_eq() && attrs.partial_eq_bound().is_none()
+}
+
+fn needs_partial_ord_bound(attrs: &attr::Field) -> bool {
+ !attrs.ignore_partial_ord() && attrs.partial_ord_bound().is_none()
+}
+
+fn needs_ord_bound(attrs: &attr::Field) -> bool {
+ !attrs.ignore_ord() && attrs.ord_bound().is_none()
+}
+
+fn needs_eq_bound(attrs: &attr::Field) -> bool {
+ !attrs.ignore_partial_eq() && attrs.eq_bound().is_none()
+}
+
+/// Return the path of the `Eq` trait, that is `::std::cmp::Eq`.
+fn eq_trait_path() -> syn::Path {
+ if cfg!(feature = "use_core") {
+ parse_quote!(::core::cmp::Eq)
+ } else {
+ parse_quote!(::std::cmp::Eq)
+ }
+}
+
+/// Return the path of the `PartialEq` trait, that is `::std::cmp::PartialEq`.
+fn partial_eq_trait_path() -> syn::Path {
+ if cfg!(feature = "use_core") {
+ parse_quote!(::core::cmp::PartialEq)
+ } else {
+ parse_quote!(::std::cmp::PartialEq)
+ }
+}
+
+/// Return the path of the `PartialOrd` trait, that is `::std::cmp::PartialOrd`.
+fn partial_ord_trait_path() -> syn::Path {
+ if cfg!(feature = "use_core") {
+ parse_quote!(::core::cmp::PartialOrd)
+ } else {
+ parse_quote!(::std::cmp::PartialOrd)
+ }
+}
+
+/// Return the path of the `Ord` trait, that is `::std::cmp::Ord`.
+fn ord_trait_path() -> syn::Path {
+ if cfg!(feature = "use_core") {
+ parse_quote!(::core::cmp::Ord)
+ } else {
+ parse_quote!(::std::cmp::Ord)
+ }
+}
+
+/// Return the path of the `Option` trait, that is `::std::option::Option`.
+fn option_path() -> syn::Path {
+ if cfg!(feature = "use_core") {
+ parse_quote!(::core::option::Option)
+ } else {
+ parse_quote!(::std::option::Option)
+ }
+}
+
+/// Return the path of the `Ordering` trait, that is `::std::cmp::Ordering`.
+fn ordering_path() -> syn::Path {
+ if cfg!(feature = "use_core") {
+ parse_quote!(::core::cmp::Ordering)
+ } else {
+ parse_quote!(::std::cmp::Ordering)
+ }
+}
+
+fn maybe_add_copy(
+ input: &ast::Input,
+ where_clause: Option<&syn::WhereClause>,
+ field_filter: impl Fn(&ast::Field) -> bool,
+) -> Option<syn::WhereClause> {
+ if input.attrs.is_packed && !input.body.is_empty() {
+ let mut new_where_clause = where_clause.cloned().unwrap_or_else(|| syn::WhereClause {
+ where_token: parse_quote!(where),
+ predicates: Default::default(),
+ });
+
+ new_where_clause.predicates.extend(
+ input
+ .body
+ .all_fields()
+ .into_iter()
+ .filter(|f| field_filter(f))
+ .map(|f| {
+ let ty = f.ty;
+
+ let pred: syn::WherePredicate = parse_quote!(#ty: Copy);
+ pred
+ }),
+ );
+
+ Some(new_where_clause)
+ } else {
+ None
+ }
+}
diff --git a/vendor/derivative/src/debug.rs b/vendor/derivative/src/debug.rs
new file mode 100644
index 000000000..ed667c1d7
--- /dev/null
+++ b/vendor/derivative/src/debug.rs
@@ -0,0 +1,225 @@
+use proc_macro2;
+
+use ast;
+use attr;
+use matcher;
+use syn;
+use syn::spanned::Spanned;
+use utils;
+
+pub fn derive(input: &ast::Input) -> proc_macro2::TokenStream {
+ let debug_trait_path = debug_trait_path();
+ let fmt_path = fmt_path();
+
+ let formatter = quote_spanned! {input.span=> __f};
+
+ let body = matcher::Matcher::new(matcher::BindingStyle::Ref, input.attrs.is_packed)
+ .with_field_filter(|f: &ast::Field| !f.attrs.ignore_debug())
+ .build_arms(input, "__arg", |_, _, arm_name, style, attrs, bis| {
+ let field_prints = bis.iter().filter_map(|bi| {
+ if bi.field.attrs.ignore_debug() {
+ return None;
+ }
+
+ if attrs.debug_transparent() {
+ return Some(quote_spanned! {arm_name.span()=>
+ #debug_trait_path::fmt(__arg_0, #formatter)
+ });
+ }
+
+ let arg_expr = &bi.expr;
+ let arg_ident = &bi.ident;
+
+ let dummy_debug = bi.field.attrs.debug_format_with().map(|format_fn| {
+ format_with(
+ bi.field,
+ &input.attrs.debug_bound(),
+ &arg_expr,
+ &arg_ident,
+ format_fn,
+ input.generics.clone(),
+ )
+ });
+ let expr = if bi.field.attrs.debug_format_with().is_some() {
+ quote_spanned! {arm_name.span()=>
+ &#arg_ident
+ }
+ } else {
+ quote_spanned! {arm_name.span()=>
+ &&#arg_expr
+ }
+ };
+
+ let builder = if let Some(ref name) = bi.field.ident {
+ let name = name.to_string();
+ quote_spanned! {arm_name.span()=>
+ #dummy_debug
+ let _ = __debug_trait_builder.field(#name, #expr);
+ }
+ } else {
+ quote_spanned! {arm_name.span()=>
+ #dummy_debug
+ let _ = __debug_trait_builder.field(#expr);
+ }
+ };
+
+ Some(builder)
+ });
+
+ let method = match style {
+ ast::Style::Struct => "debug_struct",
+ ast::Style::Tuple | ast::Style::Unit => "debug_tuple",
+ };
+ let method = syn::Ident::new(method, proc_macro2::Span::call_site());
+
+ if attrs.debug_transparent() {
+ quote_spanned! {arm_name.span()=>
+ #(#field_prints)*
+ }
+ } else {
+ let name = arm_name.to_string();
+ quote_spanned! {arm_name.span()=>
+ let mut __debug_trait_builder = #formatter.#method(#name);
+ #(#field_prints)*
+ __debug_trait_builder.finish()
+ }
+ }
+ });
+
+ let name = &input.ident;
+
+ let generics = utils::build_impl_generics(
+ input,
+ &debug_trait_path,
+ needs_debug_bound,
+ |field| field.debug_bound(),
+ |input| input.debug_bound(),
+ );
+ let (impl_generics, ty_generics, where_clause) = generics.split_for_impl();
+
+ // don't attach a span to prevent issue #58
+ let match_self = quote!(match *self);
+ quote_spanned! {input.span=>
+ #[allow(unused_qualifications)]
+ #[allow(clippy::unneeded_field_pattern)]
+ impl #impl_generics #debug_trait_path for #name #ty_generics #where_clause {
+ fn fmt(&self, #formatter: &mut #fmt_path::Formatter) -> #fmt_path::Result {
+ #match_self {
+ #body
+ }
+ }
+ }
+ }
+}
+
+fn needs_debug_bound(attrs: &attr::Field) -> bool {
+ !attrs.ignore_debug() && attrs.debug_bound().is_none()
+}
+
+/// Return the path of the `Debug` trait, that is `::std::fmt::Debug`.
+fn debug_trait_path() -> syn::Path {
+ if cfg!(feature = "use_core") {
+ parse_quote!(::core::fmt::Debug)
+ } else {
+ parse_quote!(::std::fmt::Debug)
+ }
+}
+
+/// Return the path of the `fmt` module, that is `::std::fmt`.
+fn fmt_path() -> syn::Path {
+ if cfg!(feature = "use_core") {
+ parse_quote!(::core::fmt)
+ } else {
+ parse_quote!(::std::fmt)
+ }
+}
+
+/// Return the path of the `PhantomData` type, that is `::std::marker::PhantomData`.
+fn phantom_path() -> syn::Path {
+ if cfg!(feature = "use_core") {
+ parse_quote!(::core::marker::PhantomData)
+ } else {
+ parse_quote!(::std::marker::PhantomData)
+ }
+}
+
+fn format_with(
+ f: &ast::Field,
+ bounds: &Option<&[syn::WherePredicate]>,
+ arg_expr: &proc_macro2::TokenStream,
+ arg_ident: &syn::Ident,
+ format_fn: &syn::Path,
+ mut generics: syn::Generics,
+) -> proc_macro2::TokenStream {
+ let debug_trait_path = debug_trait_path();
+ let fmt_path = fmt_path();
+ let phantom_path = phantom_path();
+
+ generics
+ .make_where_clause()
+ .predicates
+ .extend(f.attrs.debug_bound().unwrap_or(&[]).iter().cloned());
+
+ generics
+ .params
+ .push(syn::GenericParam::Lifetime(syn::LifetimeDef::new(
+ parse_quote!('_derivative),
+ )));
+ let where_predicates = generics
+ .type_params()
+ .map(|ty| {
+ let mut bounds = syn::punctuated::Punctuated::new();
+ bounds.push(syn::TypeParamBound::Lifetime(syn::Lifetime::new(
+ "'_derivative",
+ proc_macro2::Span::call_site(),
+ )));
+
+ let path = syn::Path::from(syn::PathSegment::from(ty.ident.clone()));
+
+ syn::WherePredicate::Type(syn::PredicateType {
+ lifetimes: None,
+ bounded_ty: syn::Type::Path(syn::TypePath { qself: None, path }),
+ colon_token: Default::default(),
+ bounds,
+ })
+ })
+ .chain(bounds.iter().flat_map(|b| b.iter().cloned()))
+ .collect::<Vec<_>>();
+ generics
+ .make_where_clause()
+ .predicates
+ .extend(where_predicates);
+
+ let (impl_generics, ty_generics, where_clause) = generics.split_for_impl();
+
+ let ty = f.ty;
+
+ // Leave off the type parameter bounds, defaults, and attributes
+ let phantom = generics.type_params().map(|tp| &tp.ident);
+
+ let mut ctor_generics = generics.clone();
+ *ctor_generics
+ .lifetimes_mut()
+ .last()
+ .expect("There must be a '_derivative lifetime") = syn::LifetimeDef::new(parse_quote!('_));
+ let (_, ctor_ty_generics, _) = ctor_generics.split_for_impl();
+ let ctor_ty_generics = ctor_ty_generics.as_turbofish();
+
+ // don't attach a span to prevent issue #58
+ let match_self = quote!(match self.0);
+ quote_spanned!(format_fn.span()=>
+ let #arg_ident = {
+ struct Dummy #impl_generics (&'_derivative #ty, #phantom_path <(#(#phantom,)*)>) #where_clause;
+
+ impl #impl_generics #debug_trait_path for Dummy #ty_generics #where_clause {
+ fn fmt(&self, __f: &mut #fmt_path::Formatter) -> #fmt_path::Result {
+ #match_self {
+ this => #format_fn(this, __f)
+ }
+ }
+ }
+
+ Dummy #ctor_ty_generics (&&#arg_expr, #phantom_path)
+ };
+ )
+}
diff --git a/vendor/derivative/src/default.rs b/vendor/derivative/src/default.rs
new file mode 100644
index 000000000..f36947533
--- /dev/null
+++ b/vendor/derivative/src/default.rs
@@ -0,0 +1,120 @@
+use proc_macro2;
+
+use ast;
+use attr;
+use syn;
+use utils;
+
+/// Derive `Default` for `input`.
+pub fn derive(input: &ast::Input, default: &attr::InputDefault) -> proc_macro2::TokenStream {
+ fn make_variant_data(
+ variant_name: &proc_macro2::TokenStream,
+ style: ast::Style,
+ fields: &[ast::Field],
+ ) -> proc_macro2::TokenStream {
+ let default_trait_path = default_trait_path();
+
+ match style {
+ ast::Style::Struct => {
+ let mut defaults = Vec::new();
+
+ for f in fields {
+ let name = f
+ .ident
+ .as_ref()
+ .expect("A structure field must have a name");
+ let default = f
+ .attrs
+ .default_value()
+ .map_or_else(|| quote!(#default_trait_path::default()), |v| quote!(#v));
+
+ defaults.push(quote!(#name: #default));
+ }
+
+ quote!(#variant_name { #(#defaults),* })
+ }
+ ast::Style::Tuple => {
+ let mut defaults = Vec::new();
+
+ for f in fields {
+ let default = f
+ .attrs
+ .default_value()
+ .map_or_else(|| quote!(#default_trait_path::default()), |v| quote!(#v));
+
+ defaults.push(default);
+ }
+
+ quote!(#variant_name ( #(#defaults),* ))
+ }
+ ast::Style::Unit => quote!(#variant_name),
+ }
+ }
+
+ let name = &input.ident;
+ let default_trait_path = default_trait_path();
+ let generics = utils::build_impl_generics(
+ input,
+ &default_trait_path,
+ |attrs| attrs.default_bound().is_none(),
+ |field| field.default_bound(),
+ |input| input.default_bound(),
+ );
+ let (impl_generics, ty_generics, where_clause) = generics.split_for_impl();
+
+ let body = match input.body {
+ ast::Body::Enum(ref data) => {
+ let arms = data.iter().filter_map(|variant| {
+ if variant.attrs.default.is_some() {
+ let vname = &variant.ident;
+
+ Some(make_variant_data(
+ &quote!(#name::#vname),
+ variant.style,
+ &variant.fields,
+ ))
+ } else {
+ None
+ }
+ });
+
+ quote!(#(#arms),*)
+ }
+ ast::Body::Struct(style, ref vd) => make_variant_data(&quote!(#name), style, vd),
+ };
+
+ let new_fn = if default.new {
+ Some(quote!(
+ #[allow(unused_qualifications)]
+ impl #impl_generics #name #ty_generics #where_clause {
+ /// Creates a default value for this type.
+ #[inline]
+ pub fn new() -> Self {
+ <Self as #default_trait_path>::default()
+ }
+ }
+ ))
+ } else {
+ None
+ };
+
+ quote!(
+ #new_fn
+
+ #[allow(unused_qualifications)]
+ impl #impl_generics #default_trait_path for #name #ty_generics #where_clause {
+ fn default() -> Self {
+ #body
+ }
+ }
+ )
+}
+
+/// Return the path of the `Default` trait, that is `::std::default::Default`.
+fn default_trait_path() -> syn::Path {
+ if cfg!(feature = "use_core") {
+ parse_quote!(::core::default::Default)
+ } else {
+ parse_quote!(::std::default::Default)
+ }
+}
diff --git a/vendor/derivative/src/hash.rs b/vendor/derivative/src/hash.rs
new file mode 100644
index 000000000..8f13f80f2
--- /dev/null
+++ b/vendor/derivative/src/hash.rs
@@ -0,0 +1,97 @@
+use proc_macro2;
+
+use ast;
+use attr;
+use matcher;
+use paths;
+use syn;
+use utils;
+
+pub fn derive(input: &ast::Input) -> proc_macro2::TokenStream {
+ let hasher_trait_path = hasher_trait_path();
+ let hash_trait_path = hash_trait_path();
+
+ let discriminant = if let ast::Body::Enum(_) = input.body {
+ let discriminant = paths::discriminant_path();
+ Some(quote!(
+ #hash_trait_path::hash(&#discriminant(self), __state);
+ ))
+ } else {
+ None
+ };
+
+ let body = matcher::Matcher::new(matcher::BindingStyle::Ref, input.attrs.is_packed).build_arms(
+ input,
+ "__arg",
+ |_, _, _, _, _, bis| {
+ let field_prints = bis.iter().filter_map(|bi| {
+ if bi.field.attrs.ignore_hash() {
+ return None;
+ }
+
+ let arg = &bi.expr;
+
+ if let Some(hash_with) = bi.field.attrs.hash_with() {
+ Some(quote! {
+ #hash_with(&#arg, __state);
+ })
+ } else {
+ Some(quote! {
+ #hash_trait_path::hash(&#arg, __state);
+ })
+ }
+ });
+
+ quote! {
+ #(#field_prints)*
+ }
+ },
+ );
+
+ let name = &input.ident;
+ let generics = utils::build_impl_generics(
+ input,
+ &hash_trait_path,
+ needs_hash_bound,
+ |field| field.hash_bound(),
+ |input| input.hash_bound(),
+ );
+ let (impl_generics, ty_generics, where_clause) = generics.split_for_impl();
+
+ let hasher_ty_parameter = utils::hygienic_type_parameter(input, "__H");
+ quote! {
+ #[allow(unused_qualifications)]
+ impl #impl_generics #hash_trait_path for #name #ty_generics #where_clause {
+ fn hash<#hasher_ty_parameter>(&self, __state: &mut #hasher_ty_parameter)
+ where #hasher_ty_parameter: #hasher_trait_path
+ {
+ #discriminant
+ match *self {
+ #body
+ }
+ }
+ }
+ }
+}
+
+fn needs_hash_bound(attrs: &attr::Field) -> bool {
+ !attrs.ignore_hash() && attrs.hash_bound().is_none()
+}
+
+/// Return the path of the `Hash` trait, that is `::std::hash::Hash`.
+fn hash_trait_path() -> syn::Path {
+ if cfg!(feature = "use_core") {
+ parse_quote!(::core::hash::Hash)
+ } else {
+ parse_quote!(::std::hash::Hash)
+ }
+}
+
+/// Return the path of the `Hasher` trait, that is `::std::hash::Hasher`.
+fn hasher_trait_path() -> syn::Path {
+ if cfg!(feature = "use_core") {
+ parse_quote!(::core::hash::Hasher)
+ } else {
+ parse_quote!(::std::hash::Hasher)
+ }
+}
diff --git a/vendor/derivative/src/lib.rs b/vendor/derivative/src/lib.rs
new file mode 100644
index 000000000..d891948f9
--- /dev/null
+++ b/vendor/derivative/src/lib.rs
@@ -0,0 +1,94 @@
+// We need to support Rust 1.34 to stable
+#![allow(deprecated)]
+
+#![allow(renamed_and_removed_lints)] // support for multiple Clippy versions
+#![allow(clippy::unknown_clippy_lints)] // because of other #![allow]s
+#![allow(clippy::mem_replace_with_default)] // needs rustc 1.40
+#![allow(clippy::option_as_ref_deref)] // needs rustc 1.40
+#![allow(clippy::cyclomatic_complexity)] // old name of cognitive_complexity
+#![allow(clippy::cognitive_complexity)] // in code generated by macros
+#![allow(clippy::redundant_closure)]
+
+extern crate proc_macro;
+extern crate proc_macro2;
+#[macro_use]
+extern crate syn;
+
+#[macro_use]
+extern crate quote;
+
+mod ast;
+mod attr;
+mod bound;
+mod clone;
+mod cmp;
+mod debug;
+mod default;
+mod hash;
+mod matcher;
+mod paths;
+mod utils;
+
+use proc_macro::TokenStream;
+
+fn derive_impls(
+ input: &mut ast::Input,
+ errors: &mut proc_macro2::TokenStream,
+) -> proc_macro2::TokenStream {
+ let mut tokens = proc_macro2::TokenStream::new();
+
+ if input.attrs.clone.is_some() {
+ tokens.extend(clone::derive_clone(input));
+ }
+ if input.attrs.copy.is_some() {
+ tokens.extend(clone::derive_copy(input));
+ }
+ if input.attrs.debug.is_some() {
+ tokens.extend(debug::derive(input));
+ }
+ if let Some(ref default) = input.attrs.default {
+ tokens.extend(default::derive(input, default));
+ }
+ if input.attrs.eq.is_some() {
+ tokens.extend(cmp::derive_eq(input));
+ }
+ if input.attrs.hash.is_some() {
+ tokens.extend(hash::derive(input));
+ }
+ if input.attrs.partial_eq.is_some() {
+ tokens.extend(cmp::derive_partial_eq(input));
+ }
+ if input.attrs.partial_ord.is_some() {
+ tokens.extend(cmp::derive_partial_ord(input, errors));
+ }
+ if input.attrs.ord.is_some() {
+ tokens.extend(cmp::derive_ord(input, errors));
+ }
+
+ tokens.extend(std::mem::replace(
+ errors,
+ Default::default(),
+ ));
+
+ tokens
+}
+
+#[cfg_attr(not(test), proc_macro_derive(Derivative, attributes(derivative)))]
+pub fn derivative(input: TokenStream) -> TokenStream {
+ let mut errors = proc_macro2::TokenStream::new();
+
+ let mut output = match syn::parse::<syn::DeriveInput>(input) {
+ Ok(parsed) => {
+ ast::Input::from_ast(&parsed, &mut errors)
+ .map(|mut input| derive_impls(&mut input, &mut errors))
+ .unwrap_or_default()
+ },
+ Err(error) => {
+ errors.extend(error.to_compile_error());
+ Default::default()
+ }
+ };
+
+ output.extend(errors);
+ output.into()
+} \ No newline at end of file
diff --git a/vendor/derivative/src/matcher.rs b/vendor/derivative/src/matcher.rs
new file mode 100644
index 000000000..4b78fa4da
--- /dev/null
+++ b/vendor/derivative/src/matcher.rs
@@ -0,0 +1,336 @@
+#![allow(dead_code)] // TODO: remove
+
+// This is inspired from `synstructure`, but `synstructure` is not adapted in severals ways
+// including:
+// * `&mut` everywhere
+// * not generic, we use our own `ast`, `synstructure` only knows about `syn`
+// * missing information (what arm are we in?, what attributes? etc.)
+
+use proc_macro2::{self, TokenStream};
+use quote::ToTokens;
+use syn;
+
+use ast;
+use attr;
+use quote;
+
+/// The type of binding to use when generating a pattern.
+#[derive(Debug, Copy, Clone)]
+pub enum BindingStyle {
+ /// `x`
+ Move,
+ /// `mut x`
+ MoveMut,
+ /// `ref x`
+ Ref,
+ /// `ref mut x`
+ RefMut,
+}
+
+impl BindingStyle {
+ fn with_packed(self, is_packed: bool) -> BindingStyle {
+ match self {
+ BindingStyle::Move | BindingStyle::MoveMut => self,
+ BindingStyle::Ref if is_packed => BindingStyle::Move,
+ BindingStyle::RefMut if is_packed => BindingStyle::MoveMut,
+ BindingStyle::Ref | BindingStyle::RefMut => self,
+ }
+ }
+}
+
+impl quote::ToTokens for BindingStyle {
+ fn to_tokens(&self, tokens: &mut TokenStream) {
+ match *self {
+ BindingStyle::Move => (),
+ BindingStyle::MoveMut => tokens.extend(quote!(mut)),
+ BindingStyle::Ref => tokens.extend(quote!(ref)),
+ BindingStyle::RefMut => {
+ tokens.extend(quote!(ref mut));
+ }
+ }
+ }
+}
+
+#[derive(Debug)]
+pub struct BindingInfo<'a> {
+ pub expr: TokenStream,
+ pub ident: syn::Ident,
+ pub field: &'a ast::Field<'a>,
+}
+
+#[derive(Debug)]
+pub struct CommonVariant<'a> {
+ path: syn::Path,
+ name: &'a syn::Ident,
+ style: ast::Style,
+ attrs: &'a attr::Input,
+}
+
+pub struct Matcher<T> {
+ binding_name: String,
+ binding_style: BindingStyle,
+ is_packed: bool,
+ field_filter: T,
+}
+
+impl Matcher<fn (&ast::Field) -> bool> {
+ pub fn new(style: BindingStyle, is_packed: bool) -> Self {
+ Matcher {
+ binding_name: "__arg".into(),
+ binding_style: style.with_packed(is_packed),
+ is_packed,
+ field_filter: |_| true,
+ }
+ }
+}
+
+impl<T: Fn (&ast::Field) -> bool> Matcher<T> {
+ pub fn with_name(self, name: String) -> Self {
+ Matcher {
+ binding_name: name,
+ ..self
+ }
+ }
+
+ pub fn with_field_filter<P>(self, field_filter: P) -> Matcher<P> {
+ Matcher {
+ field_filter,
+ binding_name: self.binding_name,
+ binding_style: self.binding_style,
+ is_packed: self.is_packed,
+ }
+ }
+
+ pub fn build_arms<F>(self, input: &ast::Input, binding_name: &str, f: F) -> TokenStream
+ where
+ F: Fn(
+ syn::Path,
+ usize,
+ &syn::Ident,
+ ast::Style,
+ &attr::Input,
+ Vec<BindingInfo>,
+ ) -> TokenStream,
+ {
+ let variants = self.build_match_pattern(input, binding_name);
+
+ // Now that we have the patterns, generate the actual branches of the match
+ // expression
+ let mut t = TokenStream::new();
+ for (i, (variant, (pat, bindings))) in variants.into_iter().enumerate() {
+ let body = f(
+ variant.path,
+ i,
+ variant.name,
+ variant.style,
+ variant.attrs,
+ bindings,
+ );
+ quote!(#pat => { #body }).to_tokens(&mut t);
+ }
+
+ t
+ }
+
+ pub fn build_2_arms<F>(
+ self,
+ (left_matched_expr, right_matched_expr): (TokenStream, TokenStream),
+ left: (&ast::Input, &str),
+ right: (&ast::Input, &str),
+ f: F,
+ ) -> TokenStream
+ where
+ F: Fn(
+ usize,
+ CommonVariant,
+ CommonVariant,
+ (Vec<BindingInfo>, Vec<BindingInfo>),
+ ) -> TokenStream,
+ {
+ let left_variants = self.build_match_pattern(left.0, left.1);
+ let right_variants = self.build_match_pattern(right.0, right.1);
+
+ assert_eq!(left_variants.len(), right_variants.len());
+
+ if left_variants.len() == 1 {
+ let (left, (left_pat, left_bindings)) = left_variants.into_iter().next().unwrap();
+ let (right, (right_pat, right_bindings)) = right_variants.into_iter().next().unwrap();
+
+ let body = f(0, left, right, (left_bindings, right_bindings));
+
+ quote! {
+ match #left_matched_expr {
+ #left_pat => match #right_matched_expr {
+ #right_pat => #body,
+ },
+ }
+ }
+ } else {
+ // Now that we have the patterns, generate the actual branches of the match
+ // expression
+ let mut t = TokenStream::new();
+ for (i, (left, right)) in left_variants.into_iter().zip(right_variants).enumerate() {
+ let (left, (left_pat, left_bindings)) = left;
+ let (right, (right_pat, right_bindings)) = right;
+
+ let body = f(i, left, right, (left_bindings, right_bindings));
+ quote!((#left_pat, #right_pat) => { #body }).to_tokens(&mut t);
+ }
+
+ quote! {
+ match (&#left_matched_expr, &#right_matched_expr) {
+ #t
+ _ => unreachable!(),
+ }
+ }
+ }
+ }
+
+ /// Generate patterns for matching against all of the variants
+ pub fn build_match_pattern<'a>(
+ &self,
+ input: &'a ast::Input,
+ binding_name: &str,
+ ) -> Vec<(CommonVariant<'a>, (TokenStream, Vec<BindingInfo<'a>>))> {
+ let ident = &input.ident;
+
+ match input.body {
+ ast::Body::Enum(ref variants) => variants
+ .iter()
+ .map(|variant| {
+ let variant_ident = &variant.ident;
+ let path = parse_quote!(#ident::#variant_ident);
+
+ let pat = self.build_match_pattern_impl(
+ &path,
+ variant.style,
+ &variant.fields,
+ binding_name,
+ );
+
+ (
+ CommonVariant {
+ path,
+ name: variant_ident,
+ style: variant.style,
+ attrs: &variant.attrs,
+ },
+ pat,
+ )
+ })
+ .collect(),
+ ast::Body::Struct(style, ref vd) => {
+ let path = parse_quote!(#ident);
+ vec![(
+ CommonVariant {
+ path,
+ name: ident,
+ style,
+ attrs: &input.attrs,
+ },
+ self.build_match_pattern_impl(ident, style, vd, binding_name),
+ )]
+ }
+ }
+ }
+
+ fn build_match_pattern_impl<'a, N>(
+ &self,
+ name: &N,
+ style: ast::Style,
+ fields: &'a [ast::Field<'a>],
+ binding_name: &str,
+ ) -> (TokenStream, Vec<BindingInfo<'a>>)
+ where
+ N: quote::ToTokens,
+ {
+ let (stream, matches) = match style {
+ ast::Style::Unit => (TokenStream::new(), Vec::new()),
+ ast::Style::Tuple => {
+ let (stream, matches) = fields.iter().enumerate().fold(
+ (TokenStream::new(), Vec::new()),
+ |(stream, matches), field| {
+ self.build_inner_pattern(
+ (stream, matches),
+ field,
+ binding_name,
+ |f, ident, binding| {
+ if (self.field_filter)(f) {
+ quote!(#binding #ident ,)
+ } else {
+ quote!(_ ,)
+ }
+ },
+ )
+ },
+ );
+
+ (quote! { ( #stream ) }, matches)
+ }
+ ast::Style::Struct => {
+ let (stream, matches) = fields.iter().enumerate().fold(
+ (TokenStream::new(), Vec::new()),
+ |(stream, matches), field| {
+ self.build_inner_pattern(
+ (stream, matches),
+ field,
+ binding_name,
+ |field, ident, binding| {
+ let field_name = field.ident.as_ref().unwrap();
+ if (self.field_filter)(field) {
+ quote!(#field_name : #binding #ident ,)
+ } else {
+ quote!(#field_name : _ ,)
+ }
+ },
+ )
+ },
+ );
+
+ (quote! { { #stream } }, matches)
+ }
+ };
+
+ let mut all_tokens = TokenStream::new();
+ name.to_tokens(&mut all_tokens);
+ all_tokens.extend(stream);
+
+ (all_tokens, matches)
+ }
+
+ fn build_inner_pattern<'a>(
+ &self,
+ (mut stream, mut matches): (TokenStream, Vec<BindingInfo<'a>>),
+ (i, field): (usize, &'a ast::Field),
+ binding_name: &str,
+ f: impl FnOnce(&ast::Field, &syn::Ident, BindingStyle) -> TokenStream,
+ ) -> (TokenStream, Vec<BindingInfo<'a>>) {
+ let binding_style = self.binding_style;
+
+ let ident: syn::Ident = syn::Ident::new(
+ &format!("{}_{}", binding_name, i),
+ proc_macro2::Span::call_site(),
+ );
+ let expr = syn::Expr::Path(syn::ExprPath {
+ attrs: vec![],
+ qself: None,
+ path: syn::Path::from(ident.clone())
+ });
+
+ let expr = if self.is_packed {
+ expr.into_token_stream()
+ } else {
+ quote!((*#expr))
+ };
+
+ f(field, &ident, binding_style).to_tokens(&mut stream);
+
+ matches.push(BindingInfo {
+ expr,
+ ident,
+ field,
+ });
+
+ (stream, matches)
+ }
+}
diff --git a/vendor/derivative/src/paths.rs b/vendor/derivative/src/paths.rs
new file mode 100644
index 000000000..7a6ec7de3
--- /dev/null
+++ b/vendor/derivative/src/paths.rs
@@ -0,0 +1,10 @@
+//! Contains some standard paths.
+
+/// Return the path of the `discriminant` function, that is `::std::mem::discriminant`.
+pub fn discriminant_path() -> syn::Path {
+ if cfg!(feature = "use_core") {
+ parse_quote!(::core::mem::discriminant)
+ } else {
+ parse_quote!(::std::mem::discriminant)
+ }
+} \ No newline at end of file
diff --git a/vendor/derivative/src/utils.rs b/vendor/derivative/src/utils.rs
new file mode 100644
index 000000000..9db21f5be
--- /dev/null
+++ b/vendor/derivative/src/utils.rs
@@ -0,0 +1,43 @@
+use proc_macro2;
+
+use ast;
+use attr;
+use bound;
+use syn;
+
+/// Make generic with all the generics in the input, plus a bound `T: <trait_path>` for each
+/// generic field type that will be shown.
+pub fn build_impl_generics<F, G, H>(
+ item: &ast::Input,
+ trait_path: &syn::Path,
+ needs_debug_bound: F,
+ field_bound: G,
+ input_bound: H,
+) -> syn::Generics
+where
+ F: Fn(&attr::Field) -> bool,
+ G: Fn(&attr::Field) -> Option<&[syn::WherePredicate]>,
+ H: Fn(&attr::Input) -> Option<&[syn::WherePredicate]>,
+{
+ let generics = bound::without_defaults(item.generics);
+ let generics = bound::with_where_predicates_from_fields(item, &generics, field_bound);
+
+ match input_bound(&item.attrs) {
+ Some(predicates) => bound::with_where_predicates(&generics, predicates),
+ None => bound::with_bound(item, &generics, needs_debug_bound, trait_path),
+ }
+}
+
+/// Construct a name for the inner type parameter that can't collide with any
+/// type parameters of the item. This is achieved by starting with a base and
+/// then concatenating the names of all other type parameters.
+pub fn hygienic_type_parameter(item: &ast::Input, base: &str) -> syn::Ident {
+ let mut typaram = String::with_capacity(150);
+ typaram.push_str(base);
+ let typaram = item.generics.type_params().fold(typaram, |mut acc, ty| {
+ acc.push_str(&format!("{}", &ty.ident));
+ acc
+ });
+
+ syn::Ident::new(&typaram, proc_macro2::Span::call_site())
+}
diff --git a/vendor/derivative/tests/clippy-warning-clone-from.rs b/vendor/derivative/tests/clippy-warning-clone-from.rs
new file mode 100644
index 000000000..6811e1a4b
--- /dev/null
+++ b/vendor/derivative/tests/clippy-warning-clone-from.rs
@@ -0,0 +1,13 @@
+#![deny(clippy::all)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Clone(clone_from = "true"))]
+pub struct Foo {}
+
+fn main() {}
diff --git a/vendor/derivative/tests/compile-fail/derive-debug-unused.rs b/vendor/derivative/tests/compile-fail/derive-debug-unused.rs
new file mode 100644
index 000000000..91cc077c7
--- /dev/null
+++ b/vendor/derivative/tests/compile-fail/derive-debug-unused.rs
@@ -0,0 +1,19 @@
+#![deny(dead_code)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct Foo {
+ foo: u8,
+ #[derivative(Debug="ignore")]
+ bar: u8,
+}
+
+fn main() {
+ let _ = Foo { foo: 42, bar: 1 };
+} \ No newline at end of file
diff --git a/vendor/derivative/tests/compile-fail/derive-debug-unused.stderr b/vendor/derivative/tests/compile-fail/derive-debug-unused.stderr
new file mode 100644
index 000000000..a56c9a2c6
--- /dev/null
+++ b/vendor/derivative/tests/compile-fail/derive-debug-unused.stderr
@@ -0,0 +1,11 @@
+error: field is never used: `bar`
+ --> $DIR/derive-debug-unused.rs:14:5
+ |
+14 | bar: u8,
+ | ^^^^^^^
+ |
+note: lint level defined here
+ --> $DIR/derive-debug-unused.rs:1:9
+ |
+1 | #![deny(dead_code)]
+ | ^^^^^^^^^
diff --git a/vendor/derivative/tests/compile-fail/derive-debug.rs b/vendor/derivative/tests/compile-fail/derive-debug.rs
new file mode 100644
index 000000000..82822a853
--- /dev/null
+++ b/vendor/derivative/tests/compile-fail/derive-debug.rs
@@ -0,0 +1,15 @@
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct Foo<T, U> {
+ foo: T,
+ #[derivative(Debug(format_with="std::fmt::Debug::fmt"))]
+ bar: U,
+}
+
+fn main() {} \ No newline at end of file
diff --git a/vendor/derivative/tests/compile-fail/derive-debug.stderr b/vendor/derivative/tests/compile-fail/derive-debug.stderr
new file mode 100644
index 000000000..9bca7161e
--- /dev/null
+++ b/vendor/derivative/tests/compile-fail/derive-debug.stderr
@@ -0,0 +1,9 @@
+error[E0277]: `U` doesn't implement `std::fmt::Debug`
+ --> $DIR/derive-debug.rs:11:36
+ |
+11 | #[derivative(Debug(format_with="std::fmt::Debug::fmt"))]
+ | ^^^^^^^^^^^^^^^^^^^^^^ `U` cannot be formatted using `{:?}` because it doesn't implement `std::fmt::Debug`
+ |
+ = help: the trait `std::fmt::Debug` is not implemented for `U`
+ = help: consider adding a `where U: std::fmt::Debug` bound
+ = note: required by `std::fmt::Debug::fmt`
diff --git a/vendor/derivative/tests/compile-fail/derive-partial-ord.rs b/vendor/derivative/tests/compile-fail/derive-partial-ord.rs
new file mode 100644
index 000000000..619788be7
--- /dev/null
+++ b/vendor/derivative/tests/compile-fail/derive-partial-ord.rs
@@ -0,0 +1,11 @@
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative, PartialEq)]
+#[derivative(PartialOrd)]
+enum Option {
+ Some,
+ None,
+}
+
+fn main() {}
diff --git a/vendor/derivative/tests/compile-fail/derive-partial-ord.stderr b/vendor/derivative/tests/compile-fail/derive-partial-ord.stderr
new file mode 100644
index 000000000..5786998cd
--- /dev/null
+++ b/vendor/derivative/tests/compile-fail/derive-partial-ord.stderr
@@ -0,0 +1,5 @@
+error: can't use `#[derivative(PartialOrd)]` on an enumeration without `feature_allow_slow_enum`; see the documentation for more details
+ --> $DIR/derive-partial-ord.rs:5:1
+ |
+5 | #[derivative(PartialOrd)]
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/vendor/derivative/tests/compile-fail/invalid-attribute.rs b/vendor/derivative/tests/compile-fail/invalid-attribute.rs
new file mode 100644
index 000000000..b03412356
--- /dev/null
+++ b/vendor/derivative/tests/compile-fail/invalid-attribute.rs
@@ -0,0 +1,23 @@
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Clone = not_a_string)]
+struct Foo1;
+
+#[derive(Derivative)]
+#[derivative(Clone = 1+2)]
+struct Foo2;
+
+#[derive(Derivative)]
+#[derivative(Default(new = "True"))]
+struct Foo3;
+
+#[derive(Derivative)]
+#[derivative(Debug(bound))]
+struct Foo4;
+
+fn main() {} \ No newline at end of file
diff --git a/vendor/derivative/tests/compile-fail/invalid-attribute.stderr b/vendor/derivative/tests/compile-fail/invalid-attribute.stderr
new file mode 100644
index 000000000..e3e0bb7b6
--- /dev/null
+++ b/vendor/derivative/tests/compile-fail/invalid-attribute.stderr
@@ -0,0 +1,23 @@
+error: invalid attribute: expected literal
+ --> $DIR/invalid-attribute.rs:8:22
+ |
+8 | #[derivative(Clone = not_a_string)]
+ | ^^^^^^^^^^^^
+
+error: invalid attribute: expected `,`
+ --> $DIR/invalid-attribute.rs:12:23
+ |
+12 | #[derivative(Clone = 1+2)]
+ | ^
+
+error: expected `"true"` or `"false"` for `new`, got `True`
+ --> $DIR/invalid-attribute.rs:16:28
+ |
+16 | #[derivative(Default(new = "True"))]
+ | ^^^^^^
+
+error: expected named value
+ --> $DIR/invalid-attribute.rs:20:20
+ |
+20 | #[derivative(Debug(bound))]
+ | ^^^^^
diff --git a/vendor/derivative/tests/compile-fail/unknown-attribute.rs b/vendor/derivative/tests/compile-fail/unknown-attribute.rs
new file mode 100644
index 000000000..31cdaf431
--- /dev/null
+++ b/vendor/derivative/tests/compile-fail/unknown-attribute.rs
@@ -0,0 +1,15 @@
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Clone = "does_not_exist")]
+struct Foo;
+
+#[derive(Derivative)]
+#[derivative(Clone(does_not_exist = "true"))]
+struct Bar;
+
+fn main() {} \ No newline at end of file
diff --git a/vendor/derivative/tests/compile-fail/unknown-attribute.stderr b/vendor/derivative/tests/compile-fail/unknown-attribute.stderr
new file mode 100644
index 000000000..5383a2f4a
--- /dev/null
+++ b/vendor/derivative/tests/compile-fail/unknown-attribute.stderr
@@ -0,0 +1,11 @@
+error: Unknown attribute `does_not_exist` for trait `Clone`
+ --> $DIR/unknown-attribute.rs:8:22
+ |
+8 | #[derivative(Clone = "does_not_exist")]
+ | ^^^^^^^^^^^^^^^^
+
+error: Unknown attribute `does_not_exist` for trait `Clone`
+ --> $DIR/unknown-attribute.rs:12:20
+ |
+12 | #[derivative(Clone(does_not_exist = "true"))]
+ | ^^^^^^^^^^^^^^
diff --git a/vendor/derivative/tests/compile-fail/unknown-derive.rs b/vendor/derivative/tests/compile-fail/unknown-derive.rs
new file mode 100644
index 000000000..0a9a689ae
--- /dev/null
+++ b/vendor/derivative/tests/compile-fail/unknown-derive.rs
@@ -0,0 +1,22 @@
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(DoesNotExist1)]
+struct Foo;
+
+#[derive(Derivative)]
+#[derivative(DoesNotExist2(with_some="argument"))]
+struct Bar;
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct Baz {
+ #[derivative(DoesNotExist3)]
+ _baz: (),
+}
+
+fn main() {} \ No newline at end of file
diff --git a/vendor/derivative/tests/compile-fail/unknown-derive.stderr b/vendor/derivative/tests/compile-fail/unknown-derive.stderr
new file mode 100644
index 000000000..2d83f1834
--- /dev/null
+++ b/vendor/derivative/tests/compile-fail/unknown-derive.stderr
@@ -0,0 +1,17 @@
+error: deriving `DoesNotExist1` is not supported by derivative
+ --> $DIR/unknown-derive.rs:8:14
+ |
+8 | #[derivative(DoesNotExist1)]
+ | ^^^^^^^^^^^^^
+
+error: deriving `DoesNotExist2` is not supported by derivative
+ --> $DIR/unknown-derive.rs:12:14
+ |
+12 | #[derivative(DoesNotExist2(with_some="argument"))]
+ | ^^^^^^^^^^^^^
+
+error: deriving `DoesNotExist3` is not supported by derivative
+ --> $DIR/unknown-derive.rs:18:18
+ |
+18 | #[derivative(DoesNotExist3)]
+ | ^^^^^^^^^^^^^
diff --git a/vendor/derivative/tests/compile-test.rs b/vendor/derivative/tests/compile-test.rs
new file mode 100644
index 000000000..361332a1c
--- /dev/null
+++ b/vendor/derivative/tests/compile-test.rs
@@ -0,0 +1,9 @@
+extern crate trybuild;
+
+#[test]
+#[ignore]
+fn compile_test() {
+ let t = trybuild::TestCases::new();
+ let pattern = std::env::var("DERIVATIVE_TEST_FILTER").unwrap_or_else(|_| String::from("*.rs"));
+ t.compile_fail(format!("tests/compile-fail/{}", pattern));
+}
diff --git a/vendor/derivative/tests/derive-clone-generics.rs b/vendor/derivative/tests/derive-clone-generics.rs
new file mode 100644
index 000000000..96919f9b3
--- /dev/null
+++ b/vendor/derivative/tests/derive-clone-generics.rs
@@ -0,0 +1,29 @@
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+use std::marker::PhantomData;
+
+struct NoClone;
+
+#[derive(Derivative)]
+#[derivative(Clone, PartialEq)]
+struct PhantomField<T> {
+ foo: PhantomData<T>,
+}
+
+#[derive(Derivative)]
+#[derivative(Clone, PartialEq)]
+struct PhantomTuple<T> {
+ foo: PhantomData<(T,)>,
+}
+
+#[test]
+fn main() {
+ let phantom_field = PhantomField::<NoClone> { foo: Default::default() };
+ let phantom_tuple = PhantomTuple::<NoClone> { foo: Default::default() };
+ assert!(phantom_field == phantom_field.clone());
+ assert!(phantom_tuple == phantom_tuple.clone());
+}
diff --git a/vendor/derivative/tests/derive-clone.rs b/vendor/derivative/tests/derive-clone.rs
new file mode 100755
index 000000000..9120d3ee3
--- /dev/null
+++ b/vendor/derivative/tests/derive-clone.rs
@@ -0,0 +1,66 @@
+#![allow(clippy::blacklisted_name, clippy::redundant_clone, clippy::trivially_copy_pass_by_ref)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Debug, Derivative, PartialEq)]
+#[derivative(Clone)]
+struct Foo {
+ foo: u8,
+ #[derivative(Clone(clone_with="seventh"))]
+ bar: u8,
+}
+
+fn seventh(a: &u8) -> u8 {
+ a/7
+}
+
+#[derive(Debug, PartialEq)]
+struct EvilCloneFrom(u8);
+
+impl Clone for EvilCloneFrom {
+ fn clone(&self) -> Self {
+ EvilCloneFrom(self.0)
+ }
+
+ fn clone_from(&mut self, _: &Self) {
+ self.0 = 42;
+ }
+}
+
+#[derive(Derivative)]
+#[derivative(Clone(clone_from="true"))]
+struct StructWithCloneFrom(EvilCloneFrom);
+
+#[derive(Debug, Derivative, PartialEq)]
+#[derivative(Clone(clone_from="true"))]
+enum EnumWithCloneFrom {
+ Evil(EvilCloneFrom),
+ Good(u32),
+ None
+}
+
+#[test]
+fn main() {
+ let foo = Foo { foo: 31, bar: 42 };
+ assert_eq!(Foo { foo: 31, bar: 6 }, foo.clone());
+
+ let mut foo = StructWithCloneFrom(EvilCloneFrom(27));
+ foo.clone_from(&StructWithCloneFrom(EvilCloneFrom(0)));
+ assert_eq!((foo.0).0, 42);
+
+ let mut foo = EnumWithCloneFrom::Evil(EvilCloneFrom(27));
+ foo.clone_from(&EnumWithCloneFrom::Evil(EvilCloneFrom(0)));
+ assert_eq!(foo, EnumWithCloneFrom::Evil(EvilCloneFrom(42)));
+
+ let mut foo = EnumWithCloneFrom::Evil(EvilCloneFrom(27));
+ foo.clone_from(&EnumWithCloneFrom::None);
+ assert_eq!(foo, EnumWithCloneFrom::None);
+
+ let mut foo = EnumWithCloneFrom::Good(27);
+ foo.clone_from(&EnumWithCloneFrom::None);
+ assert_eq!(foo, EnumWithCloneFrom::None);
+}
diff --git a/vendor/derivative/tests/derive-debug-bounds.rs b/vendor/derivative/tests/derive-debug-bounds.rs
new file mode 100644
index 000000000..c572a508f
--- /dev/null
+++ b/vendor/derivative/tests/derive-debug-bounds.rs
@@ -0,0 +1,83 @@
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+use std::fmt::{Formatter, Result as FmtResult};
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct Foo<T, U> {
+ foo: T,
+ #[derivative(Debug(format_with="MyDebug::my_fmt", bound="U: MyDebug"))]
+ bar: U,
+}
+
+#[derive(Derivative)]
+#[derivative(Debug(bound="T: std::fmt::Debug, U: MyDebug"))]
+struct Foo2<T, U> {
+ foo: T,
+ #[derivative(Debug(format_with="MyDebug::my_fmt"))]
+ bar: U,
+}
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct Bar<T, U> (
+ T,
+ #[derivative(Debug(format_with="MyDebug::my_fmt", bound="U: MyDebug"))]
+ U,
+);
+
+#[derive(Derivative)]
+#[derivative(Debug(bound="T: std::fmt::Debug, U: MyDebug"))]
+struct Bar2<T, U> (
+ T,
+ #[derivative(Debug(format_with="MyDebug::my_fmt"))]
+ U,
+);
+
+struct NoDebug;
+
+struct GenericNeedsNoDebug<T>(T);
+impl<T> std::fmt::Debug for GenericNeedsNoDebug<T> {
+ fn fmt(&self, f: &mut std::fmt::Formatter) -> FmtResult {
+ f.write_str("GenericNeedsNoDebug")
+ }
+}
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct TestUnneededBound<T>( // Test that we don't add T: Debug
+ #[derivative(Debug(bound=""))] GenericNeedsNoDebug<T>,
+);
+
+trait MyDebug {
+ fn my_fmt(&self, f: &mut Formatter) -> FmtResult {
+ f.write_str("MyDebug")
+ }
+}
+
+impl MyDebug for i32 { }
+impl<'a, T> MyDebug for &'a T { }
+
+
+trait ToDebug {
+ fn to_show(&self) -> String;
+}
+
+impl<T: std::fmt::Debug> ToDebug for T {
+ fn to_show(&self) -> String {
+ format!("{:?}", self)
+ }
+}
+
+#[test]
+fn main() {
+ assert_eq!(Foo { foo: 42, bar: 0 }.to_show(), "Foo { foo: 42, bar: MyDebug }".to_string());
+ assert_eq!(Foo2 { foo: 42, bar: 0 }.to_show(), "Foo2 { foo: 42, bar: MyDebug }".to_string());
+ assert_eq!(Bar(42, 0).to_show(), "Bar(42, MyDebug)".to_string());
+ assert_eq!(Bar2(42, 0).to_show(), "Bar2(42, MyDebug)".to_string());
+ assert_eq!(TestUnneededBound(GenericNeedsNoDebug(NoDebug)).to_show(), "TestUnneededBound(GenericNeedsNoDebug)".to_string());
+}
diff --git a/vendor/derivative/tests/derive-debug-generics.rs b/vendor/derivative/tests/derive-debug-generics.rs
new file mode 100644
index 000000000..97104c1d2
--- /dev/null
+++ b/vendor/derivative/tests/derive-debug-generics.rs
@@ -0,0 +1,93 @@
+#![allow(dead_code)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+use std::marker::PhantomData;
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct Foo<T, U> {
+ foo: T,
+ #[derivative(Debug="ignore")]
+ bar: U,
+}
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct Bar<T, U> (
+ T,
+ #[derivative(Debug="ignore")]
+ U,
+);
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+enum C<T, U> {
+ V1(T),
+ V2(#[derivative(Debug="ignore")] U),
+ V3(String),
+}
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+enum D<U> {
+ V1 {
+ #[derivative(Debug="ignore")]
+ a: U
+ }
+}
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct F<U>(#[derivative(Debug="ignore")] U);
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct G<U>(isize, #[derivative(Debug="ignore")] U);
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct J<U>(#[derivative(Debug="ignore")] U);
+
+struct NoDebug;
+
+trait ToDebug {
+ fn to_show(&self) -> String;
+}
+
+impl<T: std::fmt::Debug> ToDebug for T {
+ fn to_show(&self) -> String {
+ format!("{:?}", self)
+ }
+}
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct PhantomField<T> {
+ foo: PhantomData<T>,
+}
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct PhantomTuple<T> {
+ foo: PhantomData<(T,)>,
+}
+
+#[test]
+fn main() {
+ assert_eq!(Foo { foo: 42, bar: NoDebug }.to_show(), "Foo { foo: 42 }".to_string());
+ assert_eq!(Bar(42, NoDebug).to_show(), "Bar(42)".to_string());
+ assert_eq!(C::V1::<i32, NoDebug>(12).to_show(), "V1(12)".to_string());
+ assert_eq!(C::V2::<i32, NoDebug>(NoDebug).to_show(), "V2".to_string());
+ assert_eq!(C::V3::<i32, NoDebug>("foo".to_string()).to_show(), "V3(\"foo\")".to_string());
+ assert_eq!(D::V1 { a: NoDebug }.to_show(), "V1".to_string());
+ assert_eq!(F(NoDebug).to_show(), "F".to_string());
+ assert_eq!(G(42, NoDebug).to_show(), "G(42)".to_string());
+ assert_eq!(J(NoDebug).to_show(), "J".to_string());
+ assert_eq!(&format!("{:?}", PhantomField::<NoDebug> { foo: Default::default() }), "PhantomField { foo: PhantomData }");
+ assert_eq!(&format!("{:?}", PhantomTuple::<NoDebug> { foo: Default::default() }), "PhantomTuple { foo: PhantomData }");
+}
diff --git a/vendor/derivative/tests/derive-debug-packed.rs b/vendor/derivative/tests/derive-debug-packed.rs
new file mode 100644
index 000000000..08ece8fea
--- /dev/null
+++ b/vendor/derivative/tests/derive-debug-packed.rs
@@ -0,0 +1,74 @@
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+#[repr(C, packed)]
+struct Foo {
+ foo: u8,
+ #[derivative(Debug="ignore")]
+ bar: u8,
+}
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+#[repr(C, packed)]
+struct Bar (
+ u8,
+ #[derivative(Debug="ignore")]
+ u8,
+);
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+#[repr(C, packed)]
+struct F(#[derivative(Debug="ignore")] isize);
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+#[repr(C, packed)]
+struct G(isize, #[derivative(Debug="ignore")] isize);
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+#[repr(C, packed)]
+struct J(#[derivative(Debug="ignore")] NoDebug);
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+#[repr(C, packed)]
+struct K(isize, #[derivative(Debug="ignore")] NoDebug);
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+#[repr(C, packed)]
+struct L {
+ #[derivative(Debug="ignore")]
+ foo: NoDebug
+}
+
+struct NoDebug;
+
+trait ToDebug {
+ fn to_show(&self) -> String;
+}
+
+impl<T: std::fmt::Debug> ToDebug for T {
+ fn to_show(&self) -> String {
+ format!("{:?}", self)
+ }
+}
+
+#[test]
+fn main() {
+ assert_eq!(Foo { foo: 42, bar: 1 }.to_show(), "Foo { foo: 42 }".to_string());
+ assert_eq!(Bar(42, 1).to_show(), "Bar(42)".to_string());
+ assert_eq!(F(42).to_show(), "F".to_string());
+ assert_eq!(G(42, 0).to_show(), "G(42)".to_string());
+ assert_eq!(J(NoDebug).to_show(), "J".to_string());
+ assert_eq!(K(42, NoDebug).to_show(), "K(42)".to_string());
+ assert_eq!(L{ foo: NoDebug }.to_show(), "L".to_string());
+}
diff --git a/vendor/derivative/tests/derive-debug-transparent.rs b/vendor/derivative/tests/derive-debug-transparent.rs
new file mode 100644
index 000000000..fcbc587f8
--- /dev/null
+++ b/vendor/derivative/tests/derive-debug-transparent.rs
@@ -0,0 +1,39 @@
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Debug="transparent")]
+struct A(isize);
+
+#[derive(Derivative)]
+#[derivative(Debug="transparent")]
+struct B([isize; 1]);
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+enum C {
+ Foo(u8),
+ #[derivative(Debug="transparent")]
+ Bar(u8),
+}
+
+trait ToDebug {
+ fn to_show(&self) -> String;
+}
+
+impl<T: std::fmt::Debug> ToDebug for T {
+ fn to_show(&self) -> String {
+ format!("{:?}", self)
+ }
+}
+
+#[test]
+fn main() {
+ assert_eq!(A(42).to_show(), "42".to_string());
+ assert_eq!(B([42]).to_show(), "[42]".to_string());
+ assert_eq!(C::Foo(42).to_show(), "Foo(42)".to_string());
+ assert_eq!(C::Bar(42).to_show(), "42".to_string());
+}
diff --git a/vendor/derivative/tests/derive-debug.rs b/vendor/derivative/tests/derive-debug.rs
new file mode 100644
index 000000000..1c218bbeb
--- /dev/null
+++ b/vendor/derivative/tests/derive-debug.rs
@@ -0,0 +1,77 @@
+#![allow(dead_code)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct Foo {
+ foo: u8,
+ #[derivative(Debug="ignore")]
+ bar: u8,
+}
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct Bar (
+ u8,
+ #[derivative(Debug="ignore")]
+ u8,
+);
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+enum C {
+ V1(isize),
+ V2(#[derivative(Debug="ignore")] i32),
+ V3(String),
+}
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+enum D {
+ V1 {
+ #[derivative(Debug="ignore")]
+ a: isize
+ }
+}
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct F(#[derivative(Debug="ignore")] isize);
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct G(isize, #[derivative(Debug="ignore")] isize);
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct J(#[derivative(Debug="ignore")] NoDebug);
+
+struct NoDebug;
+
+trait ToDebug {
+ fn to_show(&self) -> String;
+}
+
+impl<T: std::fmt::Debug> ToDebug for T {
+ fn to_show(&self) -> String {
+ format!("{:?}", self)
+ }
+}
+
+#[test]
+fn main() {
+ assert_eq!(Foo { foo: 42, bar: 1 }.to_show(), "Foo { foo: 42 }".to_string());
+ assert_eq!(Bar(42, 1).to_show(), "Bar(42)".to_string());
+ assert_eq!(C::V1(12).to_show(), "V1(12)".to_string());
+ assert_eq!(C::V2(12).to_show(), "V2".to_string());
+ assert_eq!(C::V3("foo".to_string()).to_show(), "V3(\"foo\")".to_string());
+ assert_eq!(D::V1 { a: 42 }.to_show(), "V1".to_string());
+ assert_eq!(F(42).to_show(), "F".to_string());
+ assert_eq!(G(42, 0).to_show(), "G(42)".to_string());
+ assert_eq!(J(NoDebug).to_show(), "J".to_string());
+}
diff --git a/vendor/derivative/tests/derive-default-bounds.rs b/vendor/derivative/tests/derive-default-bounds.rs
new file mode 100755
index 000000000..fda2efc98
--- /dev/null
+++ b/vendor/derivative/tests/derive-default-bounds.rs
@@ -0,0 +1,42 @@
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Debug, Derivative, PartialEq)]
+#[derivative(Default="new")]
+struct Foo<T, U> {
+ foo: T,
+ #[derivative(Default(value="min()", bound="U: std::ops::Not<Output=U>, U: Default"))]
+ bar: U,
+}
+
+#[derive(Debug, Derivative, PartialEq)]
+#[derivative(Default(bound="T: Default, U: std::ops::Not<Output=U>, U: Default", new="true"))]
+struct Bar<T, U> {
+ foo: T,
+ #[derivative(Default(value="min()"))]
+ bar: U,
+}
+
+fn min<T: Default + std::ops::Not<Output=T>>() -> T {
+ !T::default()
+}
+
+#[derive(Debug, Derivative, PartialEq)]
+#[derivative(Default(bound=""))]
+struct WithOption<T> {
+ foo: Option<T>,
+}
+
+struct NonDefault;
+
+#[test]
+fn main() {
+ assert_eq!(Foo::default(), Foo { foo: 0u8, bar: 0xffu8 });
+ assert_eq!(Bar::default(), Bar { foo: 0u8, bar: 0xffu8 });
+ assert_eq!(Foo::new(), Foo { foo: 0u8, bar: 0xffu8 });
+ assert_eq!(Bar::new(), Bar { foo: 0u8, bar: 0xffu8 });
+ WithOption::<NonDefault>::default();
+}
diff --git a/vendor/derivative/tests/derive-default.rs b/vendor/derivative/tests/derive-default.rs
new file mode 100644
index 000000000..34e0806b8
--- /dev/null
+++ b/vendor/derivative/tests/derive-default.rs
@@ -0,0 +1,78 @@
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Debug, Derivative, PartialEq)]
+#[derivative(Default="new")]
+struct Foo {
+ foo: u8,
+ #[derivative(Default(value="42"))]
+ bar: u8,
+}
+
+#[derive(Debug, Derivative, PartialEq)]
+#[derivative(Default(new="true"))]
+struct Bar (
+ u8,
+ #[derivative(Default(value="42"))]
+ u8,
+);
+
+#[derive(Debug, PartialEq)]
+struct B1(u8, u8);
+#[derive(Debug, PartialEq)]
+struct B2{a:u8, b:u8}
+
+#[derive(Debug, Derivative, PartialEq)]
+#[derivative(Default(new="true"))]
+struct Baz (
+ #[derivative(Default(value="[1,2]"))]
+ [u8;2],
+ #[derivative(Default(value="[3;2]"))]
+ [u8;2],
+ #[derivative(Default(value="(4,5)"))]
+ (u8, u8),
+ #[derivative(Default(value="B1(6,7)"))]
+ B1,
+ #[derivative(Default(value="B2{a:8,b:9}"))]
+ B2,
+);
+
+#[derive(Debug, Derivative, PartialEq)]
+#[derivative(Default)]
+enum Enum1 {
+ #[allow(dead_code)]
+ A,
+ #[derivative(Default)]
+ B,
+}
+
+#[derive(Debug, Derivative, PartialEq)]
+#[derivative(Default)]
+enum Enum2 {
+ #[derivative(Default)]
+ A,
+ #[allow(dead_code)]
+ B,
+}
+
+#[derive(Debug, Derivative, PartialEq)]
+#[derivative(Default)]
+struct A(#[derivative(Default(value="NoDefault"))] NoDefault);
+
+#[derive(Debug, PartialEq)]
+struct NoDefault;
+
+#[test]
+fn main() {
+ assert_eq!(Foo::default(), Foo { foo: 0, bar: 42 });
+ assert_eq!(Foo::new(), Foo { foo: 0, bar: 42 });
+ assert_eq!(Bar::default(), Bar(0, 42));
+ assert_eq!(Bar::new(), Bar(0, 42));
+ assert_eq!(Baz::new(), Baz([1,2], [3,3], (4,5), B1(6,7), B2{a:8,b:9}));
+ assert_eq!(A::default(), A(NoDefault));
+ assert_eq!(Enum1::default(), Enum1::B);
+ assert_eq!(Enum2::default(), Enum2::A);
+}
diff --git a/vendor/derivative/tests/derive-eq-packed.rs b/vendor/derivative/tests/derive-eq-packed.rs
new file mode 100644
index 000000000..6e495c274
--- /dev/null
+++ b/vendor/derivative/tests/derive-eq-packed.rs
@@ -0,0 +1,61 @@
+#![allow(clippy::eq_op)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative, PartialEq)]
+#[derivative(Eq)]
+#[repr(C, packed)]
+struct Foo {
+ foo: u8
+}
+
+#[derive(Derivative)]
+#[derivative(Eq)]
+#[repr(C, packed)]
+struct WithPtr<T: ?Sized> {
+ #[derivative(Eq(bound=""))]
+ foo: *const T
+}
+
+impl<T: ?Sized> PartialEq for WithPtr<T> {
+ fn eq(&self, other: &Self) -> bool {
+ self.foo == other.foo
+ }
+}
+
+#[derive(Derivative)]
+#[derivative(PartialEq, Eq)]
+#[repr(C, packed)]
+struct Generic<T>(T);
+
+trait SomeTrait {}
+#[derive(Clone, Copy, PartialEq, Eq)]
+struct SomeType {
+ #[allow(dead_code)]
+ foo: u8
+}
+impl SomeTrait for SomeType {}
+
+fn assert_eq<T: Eq>(_: T) {}
+
+#[test]
+fn main() {
+ assert!(Foo { foo: 7 } == Foo { foo: 7 });
+ assert!(Foo { foo: 7 } != Foo { foo: 42 });
+
+ assert_eq(Foo { foo: 7 });
+
+ let ptr1: *const dyn SomeTrait = &SomeType { foo: 0 };
+ let ptr2: *const dyn SomeTrait = &SomeType { foo: 1 };
+ assert!(WithPtr { foo: ptr1 } == WithPtr { foo: ptr1 });
+ assert!(WithPtr { foo: ptr1 } != WithPtr { foo: ptr2 });
+
+ assert_eq(WithPtr { foo: ptr1 });
+
+ assert!(Generic(SomeType { foo: 0 }) == Generic(SomeType { foo: 0 }));
+ assert_eq(Generic(SomeType { foo: 0 }));
+}
diff --git a/vendor/derivative/tests/derive-eq.rs b/vendor/derivative/tests/derive-eq.rs
new file mode 100644
index 000000000..c52a5d3b3
--- /dev/null
+++ b/vendor/derivative/tests/derive-eq.rs
@@ -0,0 +1,50 @@
+#![allow(clippy::eq_op)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative, PartialEq)]
+#[derivative(Eq)]
+struct Foo {
+ foo: u8
+}
+
+#[derive(Derivative)]
+#[derivative(Eq)]
+struct WithPtr<T: ?Sized> {
+ #[derivative(Eq(bound=""))]
+ foo: *const T
+}
+
+impl<T: ?Sized> PartialEq for WithPtr<T> {
+ fn eq(&self, other: &Self) -> bool {
+ self.foo == other.foo
+ }
+}
+
+trait SomeTrait {}
+struct SomeType {
+ #[allow(dead_code)]
+ foo: u8
+}
+impl SomeTrait for SomeType {}
+
+fn assert_eq<T: Eq>(_: T) {}
+
+#[test]
+fn main() {
+ assert!(Foo { foo: 7 } == Foo { foo: 7 });
+ assert!(Foo { foo: 7 } != Foo { foo: 42 });
+
+ assert_eq(Foo { foo: 7 });
+
+ let ptr1: *const dyn SomeTrait = &SomeType { foo: 0 };
+ let ptr2: *const dyn SomeTrait = &SomeType { foo: 1 };
+ assert!(WithPtr { foo: ptr1 } == WithPtr { foo: ptr1 });
+ assert!(WithPtr { foo: ptr1 } != WithPtr { foo: ptr2 });
+
+ assert_eq(WithPtr { foo: ptr1 });
+}
diff --git a/vendor/derivative/tests/derive-hash.rs b/vendor/derivative/tests/derive-hash.rs
new file mode 100755
index 000000000..e7d057aed
--- /dev/null
+++ b/vendor/derivative/tests/derive-hash.rs
@@ -0,0 +1,134 @@
+//! This tests that we compute the same hash as `derive(Hash)`.
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+macro_rules! define {
+ ($kw:tt $($rest:tt)*) => {
+ #[derive(Derivative)]
+ #[derivative(Hash)]
+ $kw Ours $($rest)*
+
+ #[derive(Hash)]
+ $kw Theirs $($rest)*
+ }
+}
+
+struct FakeHasher<'a>(&'a mut Vec<u8>);
+impl<'a> ::std::hash::Hasher for FakeHasher<'a> {
+ fn finish(&self) -> u64 {
+ unimplemented!()
+ }
+
+ fn write(&mut self, bytes: &[u8]) {
+ self.0.extend(bytes);
+ }
+}
+
+fn fake_hash<E: ::std::hash::Hash>(e: E) -> Vec<u8> {
+ let mut v = Vec::new();
+ e.hash(&mut FakeHasher(&mut v));
+ v
+}
+
+#[test]
+fn main() {
+ {
+ define! {
+ struct;
+ }
+
+ assert_eq!(fake_hash(Ours), fake_hash(Theirs));
+ }
+
+ {
+ define! {
+ struct {
+ foo: u8
+ }
+ }
+
+ assert_eq!(fake_hash(Ours { foo: 0 }), fake_hash(Theirs { foo: 0 }));
+ assert_eq!(fake_hash(Ours { foo: 42 }), fake_hash(Theirs { foo: 42 }));
+ }
+
+ {
+ define! {
+ struct<'a> {
+ foo: u8,
+ bar: &'a str,
+ }
+ }
+
+ assert_eq!(fake_hash(Ours { foo: 0, bar: "bar" }), fake_hash(Theirs { foo: 0, bar: "bar" }));
+ assert_eq!(fake_hash(Ours { foo: 42, bar: "bar" }), fake_hash(Theirs { foo: 42, bar: "bar" }));
+ }
+
+ {
+ define! {
+ struct<'a> (u8, &'a str);
+ }
+
+ assert_eq!(fake_hash(Ours ( 0, "bar" )), fake_hash(Theirs ( 0, "bar" )));
+ assert_eq!(fake_hash(Ours ( 42, "bar" )), fake_hash(Theirs ( 42, "bar" )));
+ }
+
+ {
+ define! {
+ enum {
+ A, B, C
+ }
+ }
+
+ assert_eq!(fake_hash(Ours::A), fake_hash(Theirs::A));
+ assert_eq!(fake_hash(Ours::B), fake_hash(Theirs::B));
+ assert_eq!(fake_hash(Ours::C), fake_hash(Theirs::C));
+ }
+
+ {
+ define! {
+ enum {
+ A, B = 42, C
+ }
+ }
+
+ assert_eq!(fake_hash(Ours::A), fake_hash(Theirs::A));
+ assert_eq!(fake_hash(Ours::B), fake_hash(Theirs::B));
+ assert_eq!(fake_hash(Ours::C), fake_hash(Theirs::C));
+ }
+
+ {
+ define! {
+ enum {
+ A, B = 42, C=1
+ }
+ }
+
+ assert_eq!(fake_hash(Ours::A), fake_hash(Theirs::A));
+ assert_eq!(fake_hash(Ours::B), fake_hash(Theirs::B));
+ assert_eq!(fake_hash(Ours::C), fake_hash(Theirs::C));
+ }
+
+ {
+ #[derive(Derivative)]
+ #[derivative(Hash)]
+ struct Ours<'a> {
+ foo: u8,
+ #[derivative(Hash="ignore")]
+ bar: &'a str,
+ baz: i64,
+ }
+
+ #[derive(Hash)]
+ struct Theirs {
+ foo: u8,
+ baz: i64,
+ }
+
+ assert_eq!(fake_hash(Ours { foo: 0, bar: "bar", baz: 312 }), fake_hash(Theirs { foo: 0, baz: 312 }));
+ assert_eq!(fake_hash(Ours { foo: 42, bar: "bar", baz: 312 }), fake_hash(Theirs { foo: 42, baz: 312 }));
+ }
+}
diff --git a/vendor/derivative/tests/derive-ord-packed.rs b/vendor/derivative/tests/derive-ord-packed.rs
new file mode 100644
index 000000000..7b4cad711
--- /dev/null
+++ b/vendor/derivative/tests/derive-ord-packed.rs
@@ -0,0 +1,264 @@
+#![allow(renamed_and_removed_lints)] // clippy::cyclomatic_complexity → clippy::cognitive_complexity
+#![allow(clippy::cyclomatic_complexity)]
+#![allow(clippy::cognitive_complexity)]
+#![allow(clippy::trivially_copy_pass_by_ref)]
+#![allow(clippy::unknown_clippy_lints)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(PartialEq, Eq, Derivative)]
+#[derivative(PartialOrd, Ord)]
+#[repr(C, packed)]
+struct Foo {
+ foo: u8,
+}
+
+#[derive(Derivative)]
+#[derivative(PartialEq, PartialOrd, Ord, Eq)]
+#[repr(C, packed)]
+struct WithPtr<T: ?Sized> {
+ #[derivative(PartialEq(bound = ""))]
+ #[derivative(PartialOrd(bound = ""))]
+ #[derivative(Ord(bound = ""))]
+ #[derivative(Eq(bound = ""))]
+ foo: *const T,
+}
+
+#[derive(PartialEq, Eq, Derivative)]
+#[derivative(PartialOrd, Ord)]
+#[repr(C, packed)]
+struct Empty;
+
+#[derive(PartialEq, Eq, Derivative)]
+#[derivative(PartialOrd, Ord)]
+#[repr(C, packed)]
+struct AllIgnored {
+ #[derivative(PartialOrd = "ignore")]
+ #[derivative(Ord = "ignore")]
+ foo: u8,
+}
+
+#[derive(PartialEq, Eq, Derivative)]
+#[derivative(PartialOrd, Ord)]
+#[repr(C, packed)]
+struct OneIgnored {
+ #[derivative(PartialOrd = "ignore")]
+ #[derivative(Ord = "ignore")]
+ foo: u8,
+ bar: u8,
+}
+
+#[derive(PartialEq, Eq, Derivative)]
+#[derivative(PartialOrd, Ord)]
+#[repr(C, packed)]
+struct Tenth(
+ #[derivative(
+ PartialOrd(compare_with = "partial_cmp_tenth"),
+ Ord(compare_with = "cmp_tenth")
+ )]
+ u8,
+);
+
+fn partial_cmp_tenth(lhs: &u8, rhs: &u8) -> std::option::Option<std::cmp::Ordering> {
+ if *lhs == 0 {
+ None
+ } else {
+ Some((lhs / 10).cmp(&(rhs / 10)))
+ }
+}
+fn cmp_tenth(lhs: &u8, rhs: &u8) -> std::cmp::Ordering {
+ (lhs / 10).cmp(&(rhs / 10))
+}
+
+#[derive(Derivative)]
+#[derivative(PartialOrd, Ord, PartialEq, Eq)]
+#[repr(C, packed)]
+struct Generic<T>(
+ #[derivative(
+ PartialEq = "ignore",
+ PartialOrd(compare_with = "dummy_partial_cmp", bound = ""),
+ Ord(compare_with = "dummy_cmp", bound = "")
+ )]
+ T,
+);
+
+fn dummy_partial_cmp<T>(_: &T, _: &T) -> std::option::Option<std::cmp::Ordering> {
+ Some(std::cmp::Ordering::Less)
+}
+fn dummy_cmp<T>(_: &T, _: &T) -> std::cmp::Ordering {
+ std::cmp::Ordering::Less
+}
+
+struct NonPartialOrd;
+
+#[derive(Derivative)]
+#[derivative(PartialEq, PartialOrd, Ord, Eq)]
+#[repr(C, packed)]
+struct GenericIgnore<T> {
+ f: u32,
+ #[derivative(PartialEq = "ignore")]
+ #[derivative(PartialOrd = "ignore")]
+ #[derivative(Ord = "ignore")]
+ t: T,
+}
+
+trait SomeTrait {}
+
+#[derive(Clone, Copy)]
+struct SomeType {
+ #[allow(dead_code)]
+ foo: u8,
+}
+impl SomeTrait for SomeType {}
+
+#[test]
+fn main() {
+ use std::cmp::Ordering;
+
+ assert_eq!(
+ Foo { foo: 7 }.partial_cmp(&Foo { foo: 42 }),
+ Some(Ordering::Less)
+ );
+ assert_eq!(
+ Foo { foo: 42 }.partial_cmp(&Foo { foo: 42 }),
+ Some(Ordering::Equal)
+ );
+ assert_eq!(
+ Foo { foo: 42 }.partial_cmp(&Foo { foo: 7 }),
+ Some(Ordering::Greater)
+ );
+ assert_eq!(Foo { foo: 7 }.cmp(&Foo { foo: 42 }), Ordering::Less);
+ assert_eq!(Foo { foo: 42 }.cmp(&Foo { foo: 42 }), Ordering::Equal);
+ assert_eq!(Foo { foo: 42 }.cmp(&Foo { foo: 7 }), Ordering::Greater);
+
+ let pointers: [*const dyn SomeTrait; 2] = [&SomeType { foo: 1 }, &SomeType { foo: 0 }];
+ let ptr1: *const dyn SomeTrait = pointers[0];
+ let ptr2: *const dyn SomeTrait = pointers[1];
+ let (ptr1, ptr2) = (std::cmp::min(ptr1, ptr2), std::cmp::max(ptr1, ptr2));
+ assert_eq!(
+ WithPtr { foo: ptr1 }.partial_cmp(&WithPtr { foo: ptr1 }),
+ Some(Ordering::Equal)
+ );
+ assert_eq!(
+ WithPtr { foo: ptr1 }.cmp(&WithPtr { foo: ptr1 }),
+ Ordering::Equal
+ );
+ assert_eq!(
+ WithPtr { foo: ptr1 }.partial_cmp(&WithPtr { foo: ptr2 }),
+ Some(Ordering::Less)
+ );
+ assert_eq!(
+ WithPtr { foo: ptr1 }.cmp(&WithPtr { foo: ptr2 }),
+ Ordering::Less
+ );
+
+ assert_eq!(Empty.partial_cmp(&Empty), Some(Ordering::Equal));
+ assert_eq!(
+ AllIgnored { foo: 0 }.partial_cmp(&AllIgnored { foo: 42 }),
+ Some(Ordering::Equal)
+ );
+ assert_eq!(
+ OneIgnored { foo: 0, bar: 6 }.partial_cmp(&OneIgnored { foo: 42, bar: 7 }),
+ Some(Ordering::Less)
+ );
+ assert_eq!(
+ OneIgnored { foo: 0, bar: 6 }.partial_cmp(&OneIgnored { foo: 42, bar: 6 }),
+ Some(Ordering::Equal)
+ );
+ assert_eq!(
+ OneIgnored { foo: 0, bar: 7 }.partial_cmp(&OneIgnored { foo: 42, bar: 6 }),
+ Some(Ordering::Greater)
+ );
+ assert_eq!(Empty.cmp(&Empty), Ordering::Equal);
+ assert_eq!(
+ AllIgnored { foo: 0 }.cmp(&AllIgnored { foo: 42 }),
+ Ordering::Equal
+ );
+ assert_eq!(
+ OneIgnored { foo: 0, bar: 6 }.cmp(&OneIgnored { foo: 42, bar: 7 }),
+ Ordering::Less
+ );
+ assert_eq!(
+ OneIgnored { foo: 0, bar: 6 }.cmp(&OneIgnored { foo: 42, bar: 6 }),
+ Ordering::Equal
+ );
+ assert_eq!(
+ OneIgnored { foo: 0, bar: 7 }.cmp(&OneIgnored { foo: 42, bar: 6 }),
+ Ordering::Greater
+ );
+
+ assert_eq!(
+ Option::None::<u8>.partial_cmp(&Option::Some(7)),
+ Some(Ordering::Less)
+ );
+ assert_eq!(
+ Option::Some(6).partial_cmp(&Option::Some(7)),
+ Some(Ordering::Less)
+ );
+ assert_eq!(
+ Option::Some(42).partial_cmp(&Option::Some(42)),
+ Some(Ordering::Equal)
+ );
+ assert_eq!(
+ Option::None::<u8>.partial_cmp(&Option::None::<u8>),
+ Some(Ordering::Equal)
+ );
+ assert_eq!(
+ Option::Some(7).partial_cmp(&Option::Some(6)),
+ Some(Ordering::Greater)
+ );
+ assert_eq!(
+ Option::Some(7).partial_cmp(&Option::None::<u8>),
+ Some(Ordering::Greater)
+ );
+ assert_eq!(Option::None::<u8>.cmp(&Option::Some(7)), Ordering::Less);
+ assert_eq!(Option::Some(6).cmp(&Option::Some(7)), Ordering::Less);
+ assert_eq!(Option::Some(42).cmp(&Option::Some(42)), Ordering::Equal);
+ assert_eq!(Option::None::<u8>.cmp(&Option::None::<u8>), Ordering::Equal);
+ assert_eq!(Option::Some(7).cmp(&Option::Some(6)), Ordering::Greater);
+ assert_eq!(Option::Some(7).cmp(&Option::None::<u8>), Ordering::Greater);
+
+ assert_eq!(Tenth(0).partial_cmp(&Tenth(67)), None);
+ assert_eq!(Tenth(42).partial_cmp(&Tenth(67)), Some(Ordering::Less));
+ assert_eq!(Tenth(60).partial_cmp(&Tenth(67)), Some(Ordering::Equal));
+ assert_eq!(Tenth(100).partial_cmp(&Tenth(67)), Some(Ordering::Greater));
+ assert_eq!(Tenth(42).cmp(&Tenth(67)), Ordering::Less);
+ assert_eq!(Tenth(60).cmp(&Tenth(67)), Ordering::Equal);
+ assert_eq!(Tenth(100).cmp(&Tenth(67)), Ordering::Greater);
+
+ assert_eq!(
+ Generic(SomeType { foo: 0 }).partial_cmp(&Generic(SomeType { foo: 0 })),
+ Some(Ordering::Less)
+ );
+ assert_eq!(
+ Generic(SomeType { foo: 0 }).cmp(&Generic(SomeType { foo: 0 })),
+ Ordering::Less
+ );
+
+ assert_eq!(
+ GenericIgnore {
+ f: 123,
+ t: NonPartialOrd
+ }
+ .cmp(&GenericIgnore {
+ f: 123,
+ t: NonPartialOrd
+ }),
+ Ordering::Equal
+ );
+ assert_eq!(
+ GenericIgnore {
+ f: 123,
+ t: NonPartialOrd
+ }
+ .partial_cmp(&GenericIgnore {
+ f: 123,
+ t: NonPartialOrd
+ }),
+ Some(Ordering::Equal)
+ );
+}
diff --git a/vendor/derivative/tests/derive-ord.rs b/vendor/derivative/tests/derive-ord.rs
new file mode 100644
index 000000000..cb55a19e8
--- /dev/null
+++ b/vendor/derivative/tests/derive-ord.rs
@@ -0,0 +1,266 @@
+#![allow(renamed_and_removed_lints)] // clippy::cyclomatic_complexity → clippy::cognitive_complexity
+#![allow(clippy::cyclomatic_complexity)]
+#![allow(clippy::cognitive_complexity)]
+#![allow(clippy::trivially_copy_pass_by_ref)]
+#![allow(clippy::unknown_clippy_lints)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+use std::marker::PhantomData;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(PartialEq, Eq, Derivative)]
+#[derivative(PartialOrd, Ord)]
+struct Foo {
+ foo: u8,
+}
+
+#[derive(PartialEq, Eq, Derivative)]
+#[derivative(
+ PartialOrd = "feature_allow_slow_enum",
+ Ord = "feature_allow_slow_enum"
+)]
+enum Option<T> {
+ None,
+ Some(T),
+}
+
+#[derive(Derivative)]
+#[derivative(PartialEq, PartialOrd, Ord, Eq)]
+struct WithPtr<T: ?Sized> {
+ #[derivative(PartialEq(bound = ""))]
+ #[derivative(PartialOrd(bound = ""))]
+ #[derivative(Ord(bound = ""))]
+ #[derivative(Eq(bound = ""))]
+ foo: *const T,
+}
+
+#[derive(PartialEq, Eq, Derivative)]
+#[derivative(PartialOrd, Ord)]
+struct Empty;
+
+#[derive(PartialEq, Eq, Derivative)]
+#[derivative(PartialOrd, Ord)]
+struct AllIgnored {
+ #[derivative(PartialOrd = "ignore")]
+ #[derivative(Ord = "ignore")]
+ foo: u8,
+}
+
+#[derive(PartialEq, Eq, Derivative)]
+#[derivative(PartialOrd, Ord)]
+struct OneIgnored {
+ #[derivative(PartialOrd = "ignore")]
+ #[derivative(Ord = "ignore")]
+ foo: u8,
+ bar: u8,
+}
+
+#[derive(PartialEq, Eq, Derivative)]
+#[derivative(PartialOrd, Ord)]
+struct Tenth(
+ #[derivative(
+ PartialOrd(compare_with = "partial_cmp_tenth"),
+ Ord(compare_with = "cmp_tenth")
+ )]
+ u8,
+);
+
+fn partial_cmp_tenth(lhs: &u8, rhs: &u8) -> std::option::Option<std::cmp::Ordering> {
+ if *lhs == 0 {
+ None
+ } else {
+ Some((lhs / 10).cmp(&(rhs / 10)))
+ }
+}
+fn cmp_tenth(lhs: &u8, rhs: &u8) -> std::cmp::Ordering {
+ (lhs / 10).cmp(&(rhs / 10))
+}
+
+#[derive(Derivative)]
+#[derivative(PartialOrd, Ord, PartialEq, Eq)]
+struct Generic<T>(
+ #[derivative(
+ PartialEq = "ignore",
+ PartialOrd(compare_with = "dummy_partial_cmp", bound = ""),
+ Ord(compare_with = "dummy_cmp", bound = "")
+ )]
+ T,
+);
+
+fn dummy_partial_cmp<T>(_: &T, _: &T) -> std::option::Option<std::cmp::Ordering> {
+ Some(std::cmp::Ordering::Less)
+}
+fn dummy_cmp<T>(_: &T, _: &T) -> std::cmp::Ordering {
+ std::cmp::Ordering::Less
+}
+
+struct NonPartialOrd;
+
+#[derive(Derivative)]
+#[derivative(PartialEq, PartialOrd, Ord, Eq)]
+struct GenericIgnore<T> {
+ f: u32,
+ #[derivative(PartialEq = "ignore")]
+ #[derivative(PartialOrd = "ignore")]
+ #[derivative(Ord = "ignore")]
+ t: PhantomData<T>,
+}
+
+trait SomeTrait {}
+struct SomeType {
+ #[allow(dead_code)]
+ foo: u8,
+}
+impl SomeTrait for SomeType {}
+
+#[test]
+fn main() {
+ use std::cmp::Ordering;
+
+ assert_eq!(
+ Foo { foo: 7 }.partial_cmp(&Foo { foo: 42 }),
+ Some(Ordering::Less)
+ );
+ assert_eq!(
+ Foo { foo: 42 }.partial_cmp(&Foo { foo: 42 }),
+ Some(Ordering::Equal)
+ );
+ assert_eq!(
+ Foo { foo: 42 }.partial_cmp(&Foo { foo: 7 }),
+ Some(Ordering::Greater)
+ );
+ assert_eq!(Foo { foo: 7 }.cmp(&Foo { foo: 42 }), Ordering::Less);
+ assert_eq!(Foo { foo: 42 }.cmp(&Foo { foo: 42 }), Ordering::Equal);
+ assert_eq!(Foo { foo: 42 }.cmp(&Foo { foo: 7 }), Ordering::Greater);
+
+ let pointers: [*const dyn SomeTrait; 2] = [&SomeType { foo: 1 }, &SomeType { foo: 0 }];
+ let ptr1: *const dyn SomeTrait = pointers[0];
+ let ptr2: *const dyn SomeTrait = pointers[1];
+ let (ptr1, ptr2) = (std::cmp::min(ptr1, ptr2), std::cmp::max(ptr1, ptr2));
+ assert_eq!(
+ WithPtr { foo: ptr1 }.partial_cmp(&WithPtr { foo: ptr1 }),
+ Some(Ordering::Equal)
+ );
+ assert_eq!(
+ WithPtr { foo: ptr1 }.cmp(&WithPtr { foo: ptr1 }),
+ Ordering::Equal
+ );
+ assert_eq!(
+ WithPtr { foo: ptr1 }.partial_cmp(&WithPtr { foo: ptr2 }),
+ Some(Ordering::Less)
+ );
+ assert_eq!(
+ WithPtr { foo: ptr1 }.cmp(&WithPtr { foo: ptr2 }),
+ Ordering::Less
+ );
+
+ assert_eq!(Empty.partial_cmp(&Empty), Some(Ordering::Equal));
+ assert_eq!(
+ AllIgnored { foo: 0 }.partial_cmp(&AllIgnored { foo: 42 }),
+ Some(Ordering::Equal)
+ );
+ assert_eq!(
+ OneIgnored { foo: 0, bar: 6 }.partial_cmp(&OneIgnored { foo: 42, bar: 7 }),
+ Some(Ordering::Less)
+ );
+ assert_eq!(
+ OneIgnored { foo: 0, bar: 6 }.partial_cmp(&OneIgnored { foo: 42, bar: 6 }),
+ Some(Ordering::Equal)
+ );
+ assert_eq!(
+ OneIgnored { foo: 0, bar: 7 }.partial_cmp(&OneIgnored { foo: 42, bar: 6 }),
+ Some(Ordering::Greater)
+ );
+ assert_eq!(Empty.cmp(&Empty), Ordering::Equal);
+ assert_eq!(
+ AllIgnored { foo: 0 }.cmp(&AllIgnored { foo: 42 }),
+ Ordering::Equal
+ );
+ assert_eq!(
+ OneIgnored { foo: 0, bar: 6 }.cmp(&OneIgnored { foo: 42, bar: 7 }),
+ Ordering::Less
+ );
+ assert_eq!(
+ OneIgnored { foo: 0, bar: 6 }.cmp(&OneIgnored { foo: 42, bar: 6 }),
+ Ordering::Equal
+ );
+ assert_eq!(
+ OneIgnored { foo: 0, bar: 7 }.cmp(&OneIgnored { foo: 42, bar: 6 }),
+ Ordering::Greater
+ );
+
+ assert_eq!(
+ Option::None::<u8>.partial_cmp(&Option::Some(7)),
+ Some(Ordering::Less)
+ );
+ assert_eq!(
+ Option::Some(6).partial_cmp(&Option::Some(7)),
+ Some(Ordering::Less)
+ );
+ assert_eq!(
+ Option::Some(42).partial_cmp(&Option::Some(42)),
+ Some(Ordering::Equal)
+ );
+ assert_eq!(
+ Option::None::<u8>.partial_cmp(&Option::None::<u8>),
+ Some(Ordering::Equal)
+ );
+ assert_eq!(
+ Option::Some(7).partial_cmp(&Option::Some(6)),
+ Some(Ordering::Greater)
+ );
+ assert_eq!(
+ Option::Some(7).partial_cmp(&Option::None::<u8>),
+ Some(Ordering::Greater)
+ );
+ assert_eq!(Option::None::<u8>.cmp(&Option::Some(7)), Ordering::Less);
+ assert_eq!(Option::Some(6).cmp(&Option::Some(7)), Ordering::Less);
+ assert_eq!(Option::Some(42).cmp(&Option::Some(42)), Ordering::Equal);
+ assert_eq!(Option::None::<u8>.cmp(&Option::None::<u8>), Ordering::Equal);
+ assert_eq!(Option::Some(7).cmp(&Option::Some(6)), Ordering::Greater);
+ assert_eq!(Option::Some(7).cmp(&Option::None::<u8>), Ordering::Greater);
+
+ assert_eq!(Tenth(0).partial_cmp(&Tenth(67)), None);
+ assert_eq!(Tenth(42).partial_cmp(&Tenth(67)), Some(Ordering::Less));
+ assert_eq!(Tenth(60).partial_cmp(&Tenth(67)), Some(Ordering::Equal));
+ assert_eq!(Tenth(100).partial_cmp(&Tenth(67)), Some(Ordering::Greater));
+ assert_eq!(Tenth(42).cmp(&Tenth(67)), Ordering::Less);
+ assert_eq!(Tenth(60).cmp(&Tenth(67)), Ordering::Equal);
+ assert_eq!(Tenth(100).cmp(&Tenth(67)), Ordering::Greater);
+
+ assert_eq!(
+ Generic(SomeType { foo: 0 }).partial_cmp(&Generic(SomeType { foo: 0 })),
+ Some(Ordering::Less)
+ );
+ assert_eq!(
+ Generic(SomeType { foo: 0 }).cmp(&Generic(SomeType { foo: 0 })),
+ Ordering::Less
+ );
+
+ assert_eq!(
+ GenericIgnore {
+ f: 123,
+ t: PhantomData::<NonPartialOrd>::default()
+ }
+ .cmp(&GenericIgnore {
+ f: 123,
+ t: PhantomData::<NonPartialOrd>::default()
+ }),
+ Ordering::Equal
+ );
+ assert_eq!(
+ GenericIgnore {
+ f: 123,
+ t: PhantomData::<NonPartialOrd>::default()
+ }
+ .partial_cmp(&GenericIgnore {
+ f: 123,
+ t: PhantomData::<NonPartialOrd>::default()
+ }),
+ Some(Ordering::Equal)
+ );
+}
diff --git a/vendor/derivative/tests/derive-partial-eq-packed.rs b/vendor/derivative/tests/derive-partial-eq-packed.rs
new file mode 100644
index 000000000..e3bce6c78
--- /dev/null
+++ b/vendor/derivative/tests/derive-partial-eq-packed.rs
@@ -0,0 +1,120 @@
+#![allow(clippy::eq_op, clippy::trivially_copy_pass_by_ref)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+#[repr(C, packed)]
+struct Foo {
+ foo: u8,
+}
+
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+#[repr(C, packed)]
+struct WithPtr<T: ?Sized> {
+ #[derivative(PartialEq(bound = ""))]
+ foo: *const T,
+}
+
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+#[repr(C, packed)]
+struct Empty;
+
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+#[repr(C, packed)]
+struct AllIgnored {
+ #[derivative(PartialEq = "ignore")]
+ foo: u8,
+}
+
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+#[repr(C, packed)]
+struct OneIgnored {
+ #[derivative(PartialEq = "ignore")]
+ foo: u8,
+ bar: u8,
+}
+
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+#[repr(C, packed)]
+struct Parity(#[derivative(PartialEq(compare_with = "same_parity"))] u8);
+
+fn same_parity(lhs: &u8, rhs: &u8) -> bool {
+ lhs % 2 == rhs % 2
+}
+
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+#[repr(C, packed)]
+struct Generic<T>(#[derivative(PartialEq(compare_with = "dummy_cmp", bound = ""))] T);
+
+fn dummy_cmp<T>(_: &T, _: &T) -> bool {
+ true
+}
+
+struct NonPartialEq;
+
+#[derive(Derivative)]
+#[derivative(PartialEq, Eq)]
+#[repr(C, packed)]
+struct GenericIgnore<T> {
+ f: u32,
+ #[derivative(PartialEq = "ignore")]
+ t: T,
+}
+
+trait SomeTrait {}
+
+#[derive(Copy, Clone)]
+struct SomeType {
+ #[allow(dead_code)]
+ foo: u8,
+}
+impl SomeTrait for SomeType {}
+
+#[test]
+fn main() {
+ assert!(Foo { foo: 7 } == Foo { foo: 7 });
+ assert!(Foo { foo: 7 } != Foo { foo: 42 });
+
+ let ptr1: *const dyn SomeTrait = &SomeType { foo: 0 };
+ let ptr2: *const dyn SomeTrait = &SomeType { foo: 1 };
+ assert!(WithPtr { foo: ptr1 } == WithPtr { foo: ptr1 });
+ assert!(WithPtr { foo: ptr1 } != WithPtr { foo: ptr2 });
+
+ assert!(Empty == Empty);
+ assert!(AllIgnored { foo: 0 } == AllIgnored { foo: 42 });
+ assert!(OneIgnored { foo: 0, bar: 6 } == OneIgnored { foo: 42, bar: 6 });
+ assert!(OneIgnored { foo: 0, bar: 6 } != OneIgnored { foo: 42, bar: 7 });
+
+ assert!(Option::Some(42) == Option::Some(42));
+ assert!(Option::Some(0) != Option::Some(42));
+ assert!(Option::Some(42) != Option::None);
+ assert!(Option::None != Option::Some(42));
+ assert!(Option::None::<u8> == Option::None::<u8>);
+
+ assert!(Parity(3) == Parity(7));
+ assert!(Parity(2) == Parity(42));
+ assert!(Parity(3) != Parity(42));
+ assert!(Parity(2) != Parity(7));
+
+ assert!(Generic(SomeType { foo: 0 }) == Generic(SomeType { foo: 0 }));
+ assert!(
+ GenericIgnore {
+ f: 123,
+ t: NonPartialEq
+ } == GenericIgnore {
+ f: 123,
+ t: NonPartialEq
+ }
+ );
+}
diff --git a/vendor/derivative/tests/derive-partial-eq.rs b/vendor/derivative/tests/derive-partial-eq.rs
new file mode 100644
index 000000000..d9e67f38d
--- /dev/null
+++ b/vendor/derivative/tests/derive-partial-eq.rs
@@ -0,0 +1,148 @@
+#![allow(clippy::eq_op, clippy::trivially_copy_pass_by_ref, dead_code)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+use std::marker::PhantomData;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+struct Foo {
+ foo: u8,
+}
+
+/// Test for backward compatibility.
+#[derive(Derivative)]
+#[derivative(PartialEq = "feature_allow_slow_enum")]
+#[allow(unused)]
+enum AllowsFeature<T> {
+ Some(T),
+ None,
+}
+
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+enum Option<T> {
+ Some(T),
+ None,
+}
+
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+enum SimpleEnum {
+ Some,
+ None,
+}
+
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+enum UnitEnum {
+ Single,
+}
+
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+struct WithPtr<T: ?Sized> {
+ #[derivative(PartialEq(bound = ""))]
+ foo: *const T,
+}
+
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+struct Empty;
+
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+struct AllIgnored {
+ #[derivative(PartialEq = "ignore")]
+ foo: u8,
+}
+
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+struct OneIgnored {
+ #[derivative(PartialEq = "ignore")]
+ foo: u8,
+ bar: u8,
+}
+
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+struct Parity(#[derivative(PartialEq(compare_with = "same_parity"))] u8);
+
+fn same_parity(lhs: &u8, rhs: &u8) -> bool {
+ lhs % 2 == rhs % 2
+}
+
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+struct Generic<T>(#[derivative(PartialEq(compare_with = "dummy_cmp", bound = ""))] T);
+
+fn dummy_cmp<T>(_: &T, _: &T) -> bool {
+ true
+}
+
+struct NonPartialEq;
+
+#[derive(Derivative)]
+#[derivative(PartialEq, Eq)]
+struct GenericIgnore<T> {
+ f: u32,
+ #[derivative(PartialEq = "ignore")]
+ t: PhantomData<T>,
+}
+
+trait SomeTrait {}
+struct SomeType {
+ #[allow(dead_code)]
+ foo: u8,
+}
+impl SomeTrait for SomeType {}
+
+#[test]
+fn main() {
+ assert!(Foo { foo: 7 } == Foo { foo: 7 });
+ assert!(Foo { foo: 7 } != Foo { foo: 42 });
+
+ let ptr1: *const dyn SomeTrait = &SomeType { foo: 0 };
+ let ptr2: *const dyn SomeTrait = &SomeType { foo: 1 };
+ assert!(WithPtr { foo: ptr1 } == WithPtr { foo: ptr1 });
+ assert!(WithPtr { foo: ptr1 } != WithPtr { foo: ptr2 });
+
+ assert!(Empty == Empty);
+ assert!(AllIgnored { foo: 0 } == AllIgnored { foo: 42 });
+ assert!(OneIgnored { foo: 0, bar: 6 } == OneIgnored { foo: 42, bar: 6 });
+ assert!(OneIgnored { foo: 0, bar: 6 } != OneIgnored { foo: 42, bar: 7 });
+
+ assert!(Option::Some(42) == Option::Some(42));
+ assert!(Option::Some(0) != Option::Some(42));
+ assert!(Option::Some(42) != Option::None);
+ assert!(Option::None != Option::Some(42));
+ assert!(Option::None::<u8> == Option::None::<u8>);
+
+ assert!(SimpleEnum::Some == SimpleEnum::Some);
+ assert!(SimpleEnum::None == SimpleEnum::None);
+ assert!(SimpleEnum::Some != SimpleEnum::None);
+ assert!(SimpleEnum::None != SimpleEnum::Some);
+
+ assert!(UnitEnum::Single == UnitEnum::Single);
+
+ assert!(Parity(3) == Parity(7));
+ assert!(Parity(2) == Parity(42));
+ assert!(Parity(3) != Parity(42));
+ assert!(Parity(2) != Parity(7));
+
+ assert!(Generic(SomeType { foo: 0 }) == Generic(SomeType { foo: 0 }));
+ assert!(
+ GenericIgnore {
+ f: 123,
+ t: PhantomData::<NonPartialEq>::default()
+ } == GenericIgnore {
+ f: 123,
+ t: PhantomData::<NonPartialEq>::default()
+ }
+ );
+}
diff --git a/vendor/derivative/tests/issue-37-turbofish.rs b/vendor/derivative/tests/issue-37-turbofish.rs
new file mode 100644
index 000000000..4e634b8c1
--- /dev/null
+++ b/vendor/derivative/tests/issue-37-turbofish.rs
@@ -0,0 +1,12 @@
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+pub struct A {
+ #[derivative(Debug(format_with = "std::fmt::Debug::fmt"))]
+ v: u64,
+}
diff --git a/vendor/derivative/tests/issue-55.rs b/vendor/derivative/tests/issue-55.rs
new file mode 100644
index 000000000..7b98142f5
--- /dev/null
+++ b/vendor/derivative/tests/issue-55.rs
@@ -0,0 +1,21 @@
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+trait Foo {}
+
+fn fmt<T>(_: &T, _: &mut std::fmt::Formatter) -> std::fmt::Result {
+ unimplemented!()
+}
+
+#[derive(Debug)]
+struct Qux<'a, T: Foo>(&'a T);
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct _Bar<'a, T: Foo>(#[derivative(Debug(format_with="fmt"))] Qux<'a, T>);
+
+fn main() {
+} \ No newline at end of file
diff --git a/vendor/derivative/tests/issue-57.rs b/vendor/derivative/tests/issue-57.rs
new file mode 100644
index 000000000..e3dc6502c
--- /dev/null
+++ b/vendor/derivative/tests/issue-57.rs
@@ -0,0 +1,19 @@
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+macro_rules! gen {
+ ($name:ident) => {
+ #[derive(Derivative)]
+ #[derivative(Debug)]
+ pub struct $name {
+ a: i32
+ }
+ };
+}
+
+gen!(Test);
+
+fn main() {} \ No newline at end of file
diff --git a/vendor/derivative/tests/issue-58.rs b/vendor/derivative/tests/issue-58.rs
new file mode 100644
index 000000000..313ffd5c2
--- /dev/null
+++ b/vendor/derivative/tests/issue-58.rs
@@ -0,0 +1,18 @@
+#![deny(clippy::all)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Default, Derivative)]
+#[derivative(Debug)]
+pub struct Foo {
+ foo: u8,
+}
+
+fn main() {
+ let foo1 = Foo::default();
+ println!("foo = {:?}", foo1);
+}
diff --git a/vendor/derivative/tests/issue-67.rs b/vendor/derivative/tests/issue-67.rs
new file mode 100644
index 000000000..27af67fb5
--- /dev/null
+++ b/vendor/derivative/tests/issue-67.rs
@@ -0,0 +1,11 @@
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Hash)]
+enum _Enumeration<T> {
+ _Variant(T),
+} \ No newline at end of file
diff --git a/vendor/derivative/tests/issue-82.rs b/vendor/derivative/tests/issue-82.rs
new file mode 100644
index 000000000..69913d494
--- /dev/null
+++ b/vendor/derivative/tests/issue-82.rs
@@ -0,0 +1,13 @@
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Copy, Clone, Derivative)]
+#[derivative(Debug)]
+#[repr(C, packed)]
+struct Test {
+ a: u8,
+ b: u32,
+} \ No newline at end of file
diff --git a/vendor/derivative/tests/rustc-class-implement-traits.rs b/vendor/derivative/tests/rustc-class-implement-traits.rs
new file mode 100644
index 000000000..3e4574dfc
--- /dev/null
+++ b/vendor/derivative/tests/rustc-class-implement-traits.rs
@@ -0,0 +1,80 @@
+// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![allow(non_camel_case_types)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+trait noisy {
+ fn speak(&mut self);
+}
+
+#[derive(Derivative)]
+#[derivative(Clone)]
+struct cat {
+ meows : usize,
+
+ how_hungry : isize,
+ name : String,
+}
+
+impl cat {
+ fn meow(&mut self) {
+ println!("Meow");
+ self.meows += 1_usize;
+ if self.meows % 5_usize == 0_usize {
+ self.how_hungry += 1;
+ }
+ }
+}
+
+impl cat {
+ pub fn eat(&mut self) -> bool {
+ if self.how_hungry > 0 {
+ println!("OM NOM NOM");
+ self.how_hungry -= 2;
+ true
+ } else {
+ println!("Not hungry!");
+ false
+ }
+ }
+}
+
+impl noisy for cat {
+ fn speak(&mut self) { self.meow(); }
+}
+
+fn cat(in_x : usize, in_y : isize, in_name: String) -> cat {
+ cat {
+ meows: in_x,
+ how_hungry: in_y,
+ name: in_name,
+ }
+}
+
+
+fn make_speak<C:noisy>(mut c: C) {
+ c.speak();
+}
+
+#[test]
+fn main() {
+ let mut nyan = cat(0_usize, 2, "nyan".to_string());
+ nyan.eat();
+ assert!((!nyan.eat()));
+ for _ in 1_usize..10_usize {
+ make_speak(nyan.clone());
+ }
+}
diff --git a/vendor/derivative/tests/rustc-deriving-bounds.rs b/vendor/derivative/tests/rustc-deriving-bounds.rs
new file mode 100644
index 000000000..7be0c57e7
--- /dev/null
+++ b/vendor/derivative/tests/rustc-deriving-bounds.rs
@@ -0,0 +1,24 @@
+// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Copy, Clone)]
+struct Test;
+
+#[test]
+fn main() {
+ let _ = Test;
+}
diff --git a/vendor/derivative/tests/rustc-deriving-clone-array.rs b/vendor/derivative/tests/rustc-deriving-clone-array.rs
new file mode 100644
index 000000000..446eb49cf
--- /dev/null
+++ b/vendor/derivative/tests/rustc-deriving-clone-array.rs
@@ -0,0 +1,27 @@
+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// test for issue #30244
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Copy, Clone)]
+#[allow(dead_code)]
+struct Array {
+ arr: [[u8; 256]; 4]
+}
+
+#[test]
+fn main() {}
diff --git a/vendor/derivative/tests/rustc-deriving-clone-enum.rs b/vendor/derivative/tests/rustc-deriving-clone-enum.rs
new file mode 100644
index 000000000..0464d970f
--- /dev/null
+++ b/vendor/derivative/tests/rustc-deriving-clone-enum.rs
@@ -0,0 +1,32 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// pretty-expanded FIXME #23616
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Clone)]
+enum E {
+ A,
+ B(()),
+ C,
+}
+
+#[test]
+fn main() {
+ let _ = E::A.clone();
+ let _ = E::B(()).clone();
+ let _ = E::C.clone();
+}
diff --git a/vendor/derivative/tests/rustc-deriving-clone-generic-enum.rs b/vendor/derivative/tests/rustc-deriving-clone-generic-enum.rs
new file mode 100644
index 000000000..58b9b1e28
--- /dev/null
+++ b/vendor/derivative/tests/rustc-deriving-clone-generic-enum.rs
@@ -0,0 +1,31 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// pretty-expanded FIXME #23616
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Clone)]
+#[allow(dead_code)]
+enum E<T,U> {
+ A(T),
+ B(T,U),
+ C
+}
+
+#[test]
+fn main() {
+ let _ = E::A::<isize, isize>(1).clone();
+}
diff --git a/vendor/derivative/tests/rustc-deriving-clone-generic-tuple-struct.rs b/vendor/derivative/tests/rustc-deriving-clone-generic-tuple-struct.rs
new file mode 100644
index 000000000..e1cc22454
--- /dev/null
+++ b/vendor/derivative/tests/rustc-deriving-clone-generic-tuple-struct.rs
@@ -0,0 +1,26 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// pretty-expanded FIXME #23616
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Clone)]
+struct S<T>(T, ());
+
+#[test]
+fn main() {
+ let _ = S(1, ()).clone();
+}
diff --git a/vendor/derivative/tests/rustc-deriving-clone-struct.rs b/vendor/derivative/tests/rustc-deriving-clone-struct.rs
new file mode 100644
index 000000000..2e0440518
--- /dev/null
+++ b/vendor/derivative/tests/rustc-deriving-clone-struct.rs
@@ -0,0 +1,47 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// pretty-expanded FIXME #23616
+
+#![allow(clippy::redundant_clone)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Default, Derivative)]
+#[derivative(Clone)]
+struct S {
+ _int: isize,
+ _i8: i8,
+ _i16: i16,
+ _i32: i32,
+ _i64: i64,
+
+ _uint: usize,
+ _u8: u8,
+ _u16: u16,
+ _u32: u32,
+ _u64: u64,
+
+ _f32: f32,
+ _f64: f64,
+
+ _bool: bool,
+ _char: char,
+ _nil: ()
+}
+
+#[test]
+fn main() {
+ let _ = S::default().clone();
+}
diff --git a/vendor/derivative/tests/rustc-deriving-clone-tuple-struct.rs b/vendor/derivative/tests/rustc-deriving-clone-tuple-struct.rs
new file mode 100644
index 000000000..f5815d633
--- /dev/null
+++ b/vendor/derivative/tests/rustc-deriving-clone-tuple-struct.rs
@@ -0,0 +1,24 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// pretty-expanded FIXME #23616
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Clone)]
+struct S((), ());
+
+#[test]
+fn main() {}
diff --git a/vendor/derivative/tests/rustc-deriving-cmp-generic-enum.rs b/vendor/derivative/tests/rustc-deriving-cmp-generic-enum.rs
new file mode 100644
index 000000000..d7bbe3998
--- /dev/null
+++ b/vendor/derivative/tests/rustc-deriving-cmp-generic-enum.rs
@@ -0,0 +1,68 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// no-pretty-expanded FIXME #15189
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(
+ PartialEq = "feature_allow_slow_enum",
+ Eq,
+ PartialOrd = "feature_allow_slow_enum",
+ Ord = "feature_allow_slow_enum"
+)]
+enum E<T> {
+ V0,
+ V1(T),
+ V2(T, T),
+}
+
+#[test]
+fn main() {
+ let e0 = E::V0;
+ let e11 = E::V1(1);
+ let e12 = E::V1(2);
+ let e21 = E::V2(1, 1);
+ let e22 = E::V2(1, 2);
+
+ // in order for both PartialOrd and Ord
+ let es = [e0, e11, e12, e21, e22];
+
+ for (i, e1) in es.iter().enumerate() {
+ for (j, e2) in es.iter().enumerate() {
+ let ord = i.cmp(&j);
+
+ let eq = i == j;
+ let lt = i < j;
+ let le = i <= j;
+ let gt = i > j;
+ let ge = i >= j;
+
+ // PartialEq
+ assert_eq!(*e1 == *e2, eq);
+ assert_eq!(*e1 != *e2, !eq);
+
+ // PartialOrd
+ assert_eq!(*e1 < *e2, lt);
+ assert_eq!(*e1 > *e2, gt);
+
+ assert_eq!(*e1 <= *e2, le);
+ assert_eq!(*e1 >= *e2, ge);
+
+ // Ord
+ assert_eq!(e1.cmp(e2), ord);
+ }
+ }
+}
diff --git a/vendor/derivative/tests/rustc-deriving-cmp-generic-struct-enum.rs b/vendor/derivative/tests/rustc-deriving-cmp-generic-struct-enum.rs
new file mode 100644
index 000000000..780ef3a79
--- /dev/null
+++ b/vendor/derivative/tests/rustc-deriving-cmp-generic-struct-enum.rs
@@ -0,0 +1,66 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// no-pretty-expanded FIXME #15189
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(
+ PartialEq = "feature_allow_slow_enum",
+ Eq,
+ PartialOrd = "feature_allow_slow_enum",
+ Ord = "feature_allow_slow_enum"
+)]
+enum ES<T> {
+ ES1 { x: T },
+ ES2 { x: T, y: T },
+}
+
+
+pub fn main() {
+ let (es11, es12, es21, es22) = (
+ ES::ES1 { x: 1 },
+ ES::ES1 { x: 2 },
+ ES::ES2 { x: 1, y: 1 },
+ ES::ES2 { x: 1, y: 2 },
+ );
+
+ // in order for both PartialOrd and Ord
+ let ess = [es11, es12, es21, es22];
+
+ for (i, es1) in ess.iter().enumerate() {
+ for (j, es2) in ess.iter().enumerate() {
+ let ord = i.cmp(&j);
+
+ let eq = i == j;
+ let (lt, le) = (i < j, i <= j);
+ let (gt, ge) = (i > j, i >= j);
+
+ // PartialEq
+ assert_eq!(*es1 == *es2, eq);
+ assert_eq!(*es1 != *es2, !eq);
+
+ // PartialOrd
+ assert_eq!(*es1 < *es2, lt);
+ assert_eq!(*es1 > *es2, gt);
+
+ assert_eq!(*es1 <= *es2, le);
+ assert_eq!(*es1 >= *es2, ge);
+
+ // Ord
+ assert_eq!(es1.cmp(es2), ord);
+ }
+ }
+}
diff --git a/vendor/derivative/tests/rustc-deriving-cmp-generic-struct.rs b/vendor/derivative/tests/rustc-deriving-cmp-generic-struct.rs
new file mode 100644
index 000000000..2c387282e
--- /dev/null
+++ b/vendor/derivative/tests/rustc-deriving-cmp-generic-struct.rs
@@ -0,0 +1,58 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// no-pretty-expanded FIXME #15189
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(PartialEq, Eq, PartialOrd, Ord)]
+struct S<T> {
+ x: T,
+ y: T,
+}
+
+pub fn main() {
+ let s1 = S { x: 1, y: 1 };
+ let s2 = S { x: 1, y: 2 };
+
+ // in order for both PartialOrd and Ord
+ let ss = [s1, s2];
+
+ for (i, s1) in ss.iter().enumerate() {
+ for (j, s2) in ss.iter().enumerate() {
+ let ord = i.cmp(&j);
+
+ let eq = i == j;
+ let lt = i < j;
+ let le = i <= j;
+ let gt = i > j;
+ let ge = i >= j;
+
+ // PartialEq
+ assert_eq!(*s1 == *s2, eq);
+ assert_eq!(*s1 != *s2, !eq);
+
+ // PartialOrd
+ assert_eq!(*s1 < *s2, lt);
+ assert_eq!(*s1 > *s2, gt);
+
+ assert_eq!(*s1 <= *s2, le);
+ assert_eq!(*s1 >= *s2, ge);
+
+ // Ord
+ assert_eq!(s1.cmp(s2), ord);
+ }
+ }
+}
diff --git a/vendor/derivative/tests/rustc-deriving-cmp-generic-tuple-struct.rs b/vendor/derivative/tests/rustc-deriving-cmp-generic-tuple-struct.rs
new file mode 100644
index 000000000..ffcb177ef
--- /dev/null
+++ b/vendor/derivative/tests/rustc-deriving-cmp-generic-tuple-struct.rs
@@ -0,0 +1,55 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// no-pretty-expanded FIXME #15189
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(PartialEq, Eq, PartialOrd, Ord)]
+struct TS<T>(T, T);
+
+pub fn main() {
+ let ts1 = TS(1, 1);
+ let ts2 = TS(1, 2);
+
+ // in order for both PartialOrd and Ord
+ let tss = [ts1, ts2];
+
+ for (i, ts1) in tss.iter().enumerate() {
+ for (j, ts2) in tss.iter().enumerate() {
+ let ord = i.cmp(&j);
+
+ let eq = i == j;
+ let lt = i < j;
+ let le = i <= j;
+ let gt = i > j;
+ let ge = i >= j;
+
+ // PartialEq
+ assert_eq!(*ts1 == *ts2, eq);
+ assert_eq!(*ts1 != *ts2, !eq);
+
+ // PartialOrd
+ assert_eq!(*ts1 < *ts2, lt);
+ assert_eq!(*ts1 > *ts2, gt);
+
+ assert_eq!(*ts1 <= *ts2, le);
+ assert_eq!(*ts1 >= *ts2, ge);
+
+ // Ord
+ assert_eq!(ts1.cmp(ts2), ord);
+ }
+ }
+}
diff --git a/vendor/derivative/tests/rustc-deriving-copyclone.rs b/vendor/derivative/tests/rustc-deriving-copyclone.rs
new file mode 100644
index 000000000..873263386
--- /dev/null
+++ b/vendor/derivative/tests/rustc-deriving-copyclone.rs
@@ -0,0 +1,61 @@
+// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+//! Test that #[derive(Copy, Clone)] produces a shallow copy
+//! even when a member violates RFC 1521
+
+#![allow(clippy::clone_on_copy)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+use std::sync::atomic::{AtomicBool, Ordering};
+
+/// A struct that pretends to be Copy, but actually does something
+/// in its Clone impl
+#[derive(Copy)]
+struct Liar;
+
+/// Static cooperating with the rogue Clone impl
+static CLONED: AtomicBool = AtomicBool::new(false);
+
+impl Clone for Liar {
+ fn clone(&self) -> Self {
+ // this makes Clone vs Copy observable
+ CLONED.store(true, Ordering::SeqCst);
+
+ *self
+ }
+}
+
+/// This struct is actually Copy... at least, it thinks it is!
+#[derive(Copy, Clone)]
+struct TheirTheir(Liar);
+
+#[derive(Derivative)]
+#[derivative(Copy, Clone)]
+struct OurOur1(Liar);
+#[derive(Derivative)]
+#[derivative(Clone, Copy)]
+struct OurOur2(Liar);
+
+#[test]
+fn main() {
+ let _ = TheirTheir(Liar).clone();
+ assert!(!CLONED.load(Ordering::SeqCst), "TheirTheir");
+
+ let _ = OurOur1(Liar).clone();
+ assert!(!CLONED.load(Ordering::SeqCst), "OurOur1");
+ let _ = OurOur2(Liar).clone();
+ assert!(!CLONED.load(Ordering::SeqCst), "OurOur2");
+}
diff --git a/vendor/derivative/tests/rustc-deriving-default-box.rs b/vendor/derivative/tests/rustc-deriving-default-box.rs
new file mode 100644
index 000000000..adcdd9261
--- /dev/null
+++ b/vendor/derivative/tests/rustc-deriving-default-box.rs
@@ -0,0 +1,30 @@
+// Copyright 2013-2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+use std::default::Default;
+
+#[derive(Derivative)]
+#[derivative(Default)]
+struct A {
+ foo: Box<[bool]>,
+}
+
+#[test]
+fn main() {
+ let a: A = Default::default();
+ let b: Box<[_]> = Box::<[bool; 0]>::new([]);
+ assert_eq!(a.foo, b);
+}
diff --git a/vendor/derivative/tests/rustc-deriving-enum-single-variant.rs b/vendor/derivative/tests/rustc-deriving-enum-single-variant.rs
new file mode 100644
index 000000000..70b647c88
--- /dev/null
+++ b/vendor/derivative/tests/rustc-deriving-enum-single-variant.rs
@@ -0,0 +1,30 @@
+// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// pretty-expanded FIXME #23616
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+pub type TaskId = isize;
+
+#[derive(Derivative)]
+#[derivative(PartialEq="feature_allow_slow_enum")]
+pub enum Task {
+ TaskHandle(TaskId)
+}
+
+#[test]
+fn main() {
+ let _ = Task::TaskHandle(42);
+}
diff --git a/vendor/derivative/tests/rustc-deriving-hash.rs b/vendor/derivative/tests/rustc-deriving-hash.rs
new file mode 100644
index 000000000..bae6e8c8e
--- /dev/null
+++ b/vendor/derivative/tests/rustc-deriving-hash.rs
@@ -0,0 +1,83 @@
+// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![allow(non_camel_case_types)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+use std::hash::{Hash, Hasher};
+use std::collections::hash_map::DefaultHasher;
+
+#[derive(Derivative)]
+#[derivative(Hash)]
+struct Person {
+ id: u16,
+ name: String,
+ phone: u64,
+}
+
+// test for hygiene name collisions
+#[derive(Derivative)]
+#[derivative(Hash)] struct __H__H;
+#[derive(Derivative)]
+#[allow(dead_code)] #[derivative(Hash)] struct Collision<__H> ( __H );
+// TODO(rustc) #[derivative(Hash)] enum Collision<__H> { __H { __H__H: __H } }
+
+#[derive(Derivative)]
+#[derivative(Hash)]
+enum E { A=1, B }
+
+fn hash<T: Hash>(t: &T) -> u64 {
+ let mut s = DefaultHasher::new();
+ t.hash(&mut s);
+ s.finish()
+}
+
+struct FakeHasher<'a>(&'a mut Vec<u8>);
+impl<'a> Hasher for FakeHasher<'a> {
+ fn finish(&self) -> u64 {
+ unimplemented!()
+ }
+
+ fn write(&mut self, bytes: &[u8]) {
+ self.0.extend(bytes);
+ }
+}
+
+fn fake_hash(v: &mut Vec<u8>, e: E) {
+ e.hash(&mut FakeHasher(v));
+}
+
+#[test]
+fn main() {
+ let person1 = Person {
+ id: 5,
+ name: "Janet".to_string(),
+ phone: 555_666_777,
+ };
+ let person2 = Person {
+ id: 5,
+ name: "Bob".to_string(),
+ phone: 555_666_777,
+ };
+ assert_eq!(hash(&person1), hash(&person1));
+ assert!(hash(&person1) != hash(&person2));
+
+ // test #21714
+ let mut va = vec![];
+ let mut vb = vec![];
+ fake_hash(&mut va, E::A);
+ fake_hash(&mut vb, E::B);
+ assert!(va != vb);
+}
diff --git a/vendor/derivative/tests/rustc-deriving-in-fn.rs b/vendor/derivative/tests/rustc-deriving-in-fn.rs
new file mode 100644
index 000000000..7d38e749d
--- /dev/null
+++ b/vendor/derivative/tests/rustc-deriving-in-fn.rs
@@ -0,0 +1,27 @@
+// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[test]
+fn main() {
+ #[derive(Derivative)]
+ #[derivative(Debug)]
+ struct Foo {
+ foo: isize,
+ }
+
+ let f = Foo { foo: 10 };
+ format!("{:?}", f);
+}
diff --git a/vendor/derivative/tests/rustc-deriving-meta-multiple.rs b/vendor/derivative/tests/rustc-deriving-meta-multiple.rs
new file mode 100644
index 000000000..beb41d696
--- /dev/null
+++ b/vendor/derivative/tests/rustc-deriving-meta-multiple.rs
@@ -0,0 +1,42 @@
+// Copyright 2013-2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// pretty-expanded FIXME #23616
+
+#![allow(clippy::eq_op, clippy::redundant_clone)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+use std::hash::Hash;
+
+// testing multiple separate deriving attributes
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+#[derivative(Clone)]
+#[derivative(Hash)]
+struct Foo {
+ bar: usize,
+ baz: isize
+}
+
+fn hash<T: Hash>(_t: &T) {}
+
+#[test]
+fn main() {
+ let a = Foo {bar: 4, baz: -3};
+
+ let _ = a == a; // check for PartialEq impl w/o testing its correctness
+ let _ = a.clone(); // check for Clone impl w/o testing its correctness
+ hash(&a); // check for Hash impl w/o testing its correctness
+}
diff --git a/vendor/derivative/tests/rustc-deriving-meta.rs b/vendor/derivative/tests/rustc-deriving-meta.rs
new file mode 100644
index 000000000..9281e3e05
--- /dev/null
+++ b/vendor/derivative/tests/rustc-deriving-meta.rs
@@ -0,0 +1,39 @@
+// Copyright 2013-2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// pretty-expanded FIXME #23616
+
+#![allow(clippy::eq_op, clippy::redundant_clone)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+use std::hash::Hash;
+
+#[derive(Derivative)]
+#[derivative(PartialEq, Clone, Hash)]
+struct Foo {
+ bar: usize,
+ baz: isize
+}
+
+fn hash<T: Hash>(_t: &T) {}
+
+#[test]
+fn main() {
+ let a = Foo {bar: 4, baz: -3};
+
+ let _ = a == a; // check for PartialEq impl w/o testing its correctness
+ let _ = a.clone(); // check for Clone impl w/o testing its correctness
+ hash(&a); // check for Hash impl w/o testing its correctness
+}
diff --git a/vendor/derivative/tests/rustc-deriving-show-2.rs b/vendor/derivative/tests/rustc-deriving-show-2.rs
new file mode 100644
index 000000000..f4c173cb4
--- /dev/null
+++ b/vendor/derivative/tests/rustc-deriving-show-2.rs
@@ -0,0 +1,75 @@
+#![allow(dead_code)]
+#![deny(unused_variables)] // We used to generate warning: unused variable: `f`
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+use std::fmt;
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+enum A {}
+#[derive(Derivative)]
+#[derivative(Debug)]
+enum B { V1, V2, V3 }
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+enum C { V1(isize), V2(B), V3(String) }
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+enum D { V1{ a: isize } }
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct E;
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct F(isize);
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct G(isize, isize);
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct H { a: isize }
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct I { a: isize, b: isize }
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct J(Custom);
+
+struct Custom;
+impl fmt::Debug for Custom {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ write!(f, "yay")
+ }
+}
+
+trait ToDebug {
+ fn to_show(&self) -> String;
+}
+
+impl<T: fmt::Debug> ToDebug for T {
+ fn to_show(&self) -> String {
+ format!("{:?}", self)
+ }
+}
+
+#[test]
+fn main() {
+ assert_eq!(B::V1.to_show(), "V1".to_string());
+ assert_eq!(B::V2.to_show(), "V2".to_string());
+ assert_eq!(C::V1(3).to_show(), "V1(3)".to_string());
+ assert_eq!(C::V2(B::V2).to_show(), "V2(V2)".to_string());
+ assert_eq!(D::V1{ a: 2 }.to_show(), "V1 { a: 2 }".to_string());
+ assert_eq!(E.to_show(), "E".to_string());
+ assert_eq!(F(3).to_show(), "F(3)".to_string());
+ assert_eq!(G(3, 4).to_show(), "G(3, 4)".to_string());
+ assert_eq!(I{ a: 2, b: 4 }.to_show(), "I { a: 2, b: 4 }".to_string());
+ assert_eq!(J(Custom).to_show(), "J(yay)".to_string());
+}
diff --git a/vendor/derivative/tests/rustc-deriving-show.rs b/vendor/derivative/tests/rustc-deriving-show.rs
new file mode 100644
index 000000000..525d6020e
--- /dev/null
+++ b/vendor/derivative/tests/rustc-deriving-show.rs
@@ -0,0 +1,51 @@
+// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct Unit;
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct Tuple(isize, usize);
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct Struct { x: isize, y: usize }
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+enum Enum {
+ Nullary,
+ Variant(isize, usize),
+ StructVariant { x: isize, y : usize }
+}
+
+macro_rules! t {
+ ($x:expr, $expected:expr) => {
+ assert_eq!(format!("{:?}", $x), $expected.to_string())
+ }
+}
+
+#[test]
+fn main() {
+ t!(Unit, "Unit");
+ t!(Tuple(1, 2), "Tuple(1, 2)");
+ t!(Struct { x: 1, y: 2 }, "Struct { x: 1, y: 2 }");
+ t!(Enum::Nullary, "Nullary");
+ t!(Enum::Variant(1, 2), "Variant(1, 2)");
+ t!(Enum::StructVariant { x: 1, y: 2 }, "StructVariant { x: 1, y: 2 }");
+}
diff --git a/vendor/derivative/tests/rustc-deriving-via-extension-hash-enum.rs b/vendor/derivative/tests/rustc-deriving-via-extension-hash-enum.rs
new file mode 100644
index 000000000..c5348587d
--- /dev/null
+++ b/vendor/derivative/tests/rustc-deriving-via-extension-hash-enum.rs
@@ -0,0 +1,36 @@
+// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Hash)]
+#[allow(dead_code)]
+enum Foo {
+ Bar(isize, char),
+ Baz(char, isize)
+}
+
+#[derive(Derivative)]
+#[derivative(Hash)]
+#[allow(dead_code)]
+enum A {
+ B,
+ C,
+ D,
+ E
+}
+
+#[test]
+fn main(){}
diff --git a/vendor/derivative/tests/rustc-deriving-via-extension-hash-struct.rs b/vendor/derivative/tests/rustc-deriving-via-extension-hash-struct.rs
new file mode 100644
index 000000000..c653154c5
--- /dev/null
+++ b/vendor/derivative/tests/rustc-deriving-via-extension-hash-struct.rs
@@ -0,0 +1,34 @@
+// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// pretty-expanded FIXME #23616
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+use std::collections::hash_map::DefaultHasher;
+
+#[derive(Derivative)]
+#[derivative(Hash)]
+struct Foo {
+ x: isize,
+ y: isize,
+ z: isize
+}
+
+#[test]
+fn main() {
+ use std::hash::Hash;
+ let mut hasher = DefaultHasher::new();
+ Foo { x: 0, y: 0, z: 0 }.hash(&mut hasher);
+}
diff --git a/vendor/derivative/tests/rustc-deriving-via-extension-type-params.rs b/vendor/derivative/tests/rustc-deriving-via-extension-type-params.rs
new file mode 100644
index 000000000..9fb62ce1c
--- /dev/null
+++ b/vendor/derivative/tests/rustc-deriving-via-extension-type-params.rs
@@ -0,0 +1,33 @@
+// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(PartialEq, Hash, Debug)]
+struct Foo<T> {
+ x: isize,
+ y: T,
+ z: isize
+}
+
+#[test]
+fn main() {
+ let a = Foo { x: 1, y: 2.0f64, z: 3 };
+ let b = Foo { x: 1, y: 2.0f64, z: 3 };
+ assert_eq!(a, b);
+ assert!(!(a != b));
+ assert!(a.eq(&b));
+ assert!(!a.ne(&b));
+}
diff --git a/vendor/derivative/tests/rustc-expr-copy.rs b/vendor/derivative/tests/rustc-expr-copy.rs
new file mode 100644
index 000000000..ab3ae912e
--- /dev/null
+++ b/vendor/derivative/tests/rustc-expr-copy.rs
@@ -0,0 +1,35 @@
+// Copyright 2012-2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+
+fn f(arg: &mut A) {
+ arg.a = 100;
+}
+
+#[derive(Derivative)]
+#[derivative(Copy, Clone)]
+struct A { a: isize }
+
+#[test]
+fn main() {
+ let mut x = A {a: 10};
+ f(&mut x);
+ assert_eq!(x.a, 100);
+ x.a = 20;
+ let mut y = x;
+ f(&mut y);
+ assert_eq!(x.a, 20);
+}
diff --git a/vendor/derivative/tests/rustc-exterior.rs b/vendor/derivative/tests/rustc-exterior.rs
new file mode 100644
index 000000000..ec59daa0e
--- /dev/null
+++ b/vendor/derivative/tests/rustc-exterior.rs
@@ -0,0 +1,41 @@
+// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+use std::cell::Cell;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Copy, Clone)]
+struct Point {x: isize, y: isize, z: isize}
+
+fn f(p: &Cell<Point>) {
+ assert_eq!(p.get().z, 12);
+ p.set(Point {x: 10, y: 11, z: 13});
+ assert_eq!(p.get().z, 13);
+}
+
+#[test]
+fn main() {
+ let a: Point = Point {x: 10, y: 11, z: 12};
+ let b: &Cell<Point> = &Cell::new(a);
+ assert_eq!(b.get().z, 12);
+ f(b);
+ assert_eq!(a.x, 10);
+ assert_eq!(a.y, 11);
+ assert_eq!(a.z, 12);
+ assert_eq!(b.get().x, 10);
+ assert_eq!(b.get().y, 11);
+ assert_eq!(b.get().z, 13);
+}
diff --git a/vendor/derivative/tests/rustc-issue-12860.rs b/vendor/derivative/tests/rustc-issue-12860.rs
new file mode 100644
index 000000000..b4d878ce2
--- /dev/null
+++ b/vendor/derivative/tests/rustc-issue-12860.rs
@@ -0,0 +1,69 @@
+// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![allow(clippy::derive_hash_xor_eq)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+use std::collections::HashSet;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Hash)]
+#[derive(Copy, Clone, PartialEq, Eq)]
+struct XYZ {
+ x: isize,
+ y: isize,
+ z: isize
+}
+
+#[test]
+fn main() {
+ let mut connected = HashSet::new();
+ let mut border = HashSet::new();
+
+ let middle = XYZ{x: 0, y: 0, z: 0};
+ border.insert(middle);
+
+ while !border.is_empty() && connected.len() < 10000 {
+ let choice = *(border.iter().next().unwrap());
+ border.remove(&choice);
+ connected.insert(choice);
+
+ let cxp = XYZ{x: choice.x + 1, y: choice.y, z: choice.z};
+ let cxm = XYZ{x: choice.x - 1, y: choice.y, z: choice.z};
+ let cyp = XYZ{x: choice.x, y: choice.y + 1, z: choice.z};
+ let cym = XYZ{x: choice.x, y: choice.y - 1, z: choice.z};
+ let czp = XYZ{x: choice.x, y: choice.y, z: choice.z + 1};
+ let czm = XYZ{x: choice.x, y: choice.y, z: choice.z - 1};
+
+ if !connected.contains(&cxp) {
+ border.insert(cxp);
+ }
+ if !connected.contains(&cxm){
+ border.insert(cxm);
+ }
+ if !connected.contains(&cyp){
+ border.insert(cyp);
+ }
+ if !connected.contains(&cym) {
+ border.insert(cym);
+ }
+ if !connected.contains(&czp){
+ border.insert(czp);
+ }
+ if !connected.contains(&czm) {
+ border.insert(czm);
+ }
+ }
+}
diff --git a/vendor/derivative/tests/rustc-issue-13434.rs b/vendor/derivative/tests/rustc-issue-13434.rs
new file mode 100644
index 000000000..f2ccab5e8
--- /dev/null
+++ b/vendor/derivative/tests/rustc-issue-13434.rs
@@ -0,0 +1,38 @@
+// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct MyStruct;
+
+trait Repro {
+ fn repro(self, s: MyStruct) -> String;
+}
+
+impl<F> Repro for F where F: FnOnce(MyStruct) -> String {
+ fn repro(self, s: MyStruct) -> String {
+ self(s)
+ }
+}
+
+fn do_stuff<R: Repro>(r: R) -> String {
+ r.repro(MyStruct)
+}
+
+#[test]
+fn main() {
+ assert_eq!("MyStruct".to_string(), do_stuff(|s: MyStruct| format!("{:?}", s)));
+}
diff --git a/vendor/derivative/tests/rustc-issue-16530.rs b/vendor/derivative/tests/rustc-issue-16530.rs
new file mode 100644
index 000000000..3cf55c671
--- /dev/null
+++ b/vendor/derivative/tests/rustc-issue-16530.rs
@@ -0,0 +1,32 @@
+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![allow(deprecated)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+use std::hash::{SipHasher, Hasher, Hash};
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Hash)]
+struct Empty;
+
+#[test]
+fn main() {
+ let mut s1 = SipHasher::new_with_keys(0, 0);
+ Empty.hash(&mut s1);
+ let mut s2 = SipHasher::new_with_keys(0, 0);
+ Empty.hash(&mut s2);
+ assert_eq!(s1.finish(), s2.finish());
+}
diff --git a/vendor/derivative/tests/rustc-issue-19037.rs b/vendor/derivative/tests/rustc-issue-19037.rs
new file mode 100644
index 000000000..06f461ab1
--- /dev/null
+++ b/vendor/derivative/tests/rustc-issue-19037.rs
@@ -0,0 +1,38 @@
+// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// pretty-expanded FIXME #23616
+
+#![allow(dead_code)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+struct Str([u8]);
+
+#[derive(Derivative)]
+#[derivative(Clone)]
+struct CharSplits<'a, Sep> {
+ string: &'a Str,
+ sep: Sep,
+ allow_trailing_empty: bool,
+ only_ascii: bool,
+ finished: bool,
+}
+
+fn clone(s: &Str) -> &Str {
+ Clone::clone(&s)
+}
+
+#[test]
+fn main() {}
diff --git a/vendor/derivative/tests/rustc-issue-19102.rs b/vendor/derivative/tests/rustc-issue-19102.rs
new file mode 100644
index 000000000..8530b843a
--- /dev/null
+++ b/vendor/derivative/tests/rustc-issue-19102.rs
@@ -0,0 +1,26 @@
+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![deny(unused_qualifications)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(PartialEq="feature_allow_slow_enum")]
+pub enum A {
+ B,
+}
+
+#[test]
+fn main() {}
diff --git a/vendor/derivative/tests/rustc-issue-19135.rs b/vendor/derivative/tests/rustc-issue-19135.rs
new file mode 100644
index 000000000..a73625c97
--- /dev/null
+++ b/vendor/derivative/tests/rustc-issue-19135.rs
@@ -0,0 +1,30 @@
+// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+use std::marker::PhantomData;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct LifetimeStruct<'a>(PhantomData<&'a ()>);
+
+#[test]
+fn main() {
+ takes_hrtb_closure(|lts| println!("{:?}", lts));
+}
+
+fn takes_hrtb_closure<F: for<'a>FnMut(LifetimeStruct<'a>)>(mut f: F) {
+ f(LifetimeStruct(PhantomData));
+}
diff --git a/vendor/derivative/tests/rustc-issue-19358.rs b/vendor/derivative/tests/rustc-issue-19358.rs
new file mode 100644
index 000000000..6f528adfe
--- /dev/null
+++ b/vendor/derivative/tests/rustc-issue-19358.rs
@@ -0,0 +1,38 @@
+// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+trait Trait { fn dummy(&self) { } }
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct Foo<T: Trait> {
+ foo: T,
+}
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct Bar<T> where T: Trait {
+ bar: T,
+}
+
+impl Trait for isize {}
+
+#[test]
+fn main() {
+ let a = Foo { foo: 12 };
+ let b = Bar { bar: 12 };
+ println!("{:?} {:?}", a, b);
+}
diff --git a/vendor/derivative/tests/rustc-issue-21402.rs b/vendor/derivative/tests/rustc-issue-21402.rs
new file mode 100644
index 000000000..6e951178d
--- /dev/null
+++ b/vendor/derivative/tests/rustc-issue-21402.rs
@@ -0,0 +1,29 @@
+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// pretty-expanded FIXME #23616
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Hash)]
+#[allow(dead_code)]
+struct Foo {
+ a: Vec<bool>,
+ b: (bool, bool),
+ c: [bool; 2],
+}
+
+#[test]
+fn main() {}
diff --git a/vendor/derivative/tests/rustc-issue-23649-3.rs b/vendor/derivative/tests/rustc-issue-23649-3.rs
new file mode 100644
index 000000000..1437fe1e1
--- /dev/null
+++ b/vendor/derivative/tests/rustc-issue-23649-3.rs
@@ -0,0 +1,23 @@
+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[allow(dead_code)]
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+struct Slice { slice: [u8] }
+
+#[test]
+fn main() {}
diff --git a/vendor/derivative/tests/rustc-issue-24085.rs b/vendor/derivative/tests/rustc-issue-24085.rs
new file mode 100644
index 000000000..d3db02615
--- /dev/null
+++ b/vendor/derivative/tests/rustc-issue-24085.rs
@@ -0,0 +1,38 @@
+// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// Regression test for #24085. Errors were occurring in region
+// inference due to the requirement that `'a:b'`, which was getting
+// incorrectly translated in connection with the closure below.
+
+#![allow(clippy::redundant_closure)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Copy,Clone)]
+#[allow(dead_code)]
+struct Path<'a:'b, 'b> {
+ x: &'a i32,
+ tail: Option<&'b Path<'a, 'b>>
+}
+
+#[allow(dead_code, unconditional_recursion)]
+fn foo<'a,'b,F>(p: Path<'a, 'b>, mut f: F)
+ where F: for<'c> FnMut(Path<'a, 'c>) {
+ foo(p, |x| f(x))
+}
+
+#[test]
+fn main() { }
diff --git a/vendor/derivative/tests/rustc-issue-25394.rs b/vendor/derivative/tests/rustc-issue-25394.rs
new file mode 100644
index 000000000..7f75ef993
--- /dev/null
+++ b/vendor/derivative/tests/rustc-issue-25394.rs
@@ -0,0 +1,26 @@
+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct Row<T>([T]);
+
+fn use_row(_: &Row<u8>) {}
+
+#[test]
+fn main() {
+ let _ = use_row;
+}
diff --git a/vendor/derivative/tests/rustc-issue-28561.rs b/vendor/derivative/tests/rustc-issue-28561.rs
new file mode 100644
index 000000000..4476646fa
--- /dev/null
+++ b/vendor/derivative/tests/rustc-issue-28561.rs
@@ -0,0 +1,136 @@
+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![allow(clippy::zero_prefixed_literal, clippy::type_complexity)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Debug, Default, Eq, Hash, PartialEq)]
+// TODO: Ord, PartialOrd
+struct Array<T> {
+ f00: [T; 00],
+ f01: [T; 01],
+ f02: [T; 02],
+ f03: [T; 03],
+ f04: [T; 04],
+ f05: [T; 05],
+ f06: [T; 06],
+ f07: [T; 07],
+ f08: [T; 08],
+ f09: [T; 09],
+ f10: [T; 10],
+ f11: [T; 11],
+ f12: [T; 12],
+ f13: [T; 13],
+ f14: [T; 14],
+ f15: [T; 15],
+ f16: [T; 16],
+ f17: [T; 17],
+ f18: [T; 18],
+ f19: [T; 19],
+ f20: [T; 20],
+ f21: [T; 21],
+ f22: [T; 22],
+ f23: [T; 23],
+ f24: [T; 24],
+ f25: [T; 25],
+ f26: [T; 26],
+ f27: [T; 27],
+ f28: [T; 28],
+ f29: [T; 29],
+ f30: [T; 30],
+ f31: [T; 31],
+ f32: [T; 32],
+}
+
+// FIXME(#7622): merge with `Array` once `[T; N]: Clone` where `T: Clone`
+#[derive(Derivative)]
+#[derivative(Clone, Copy)]
+struct CopyArray<T: Copy> {
+ f00: [T; 00],
+ f01: [T; 01],
+ f02: [T; 02],
+ f03: [T; 03],
+ f04: [T; 04],
+ f05: [T; 05],
+ f06: [T; 06],
+ f07: [T; 07],
+ f08: [T; 08],
+ f09: [T; 09],
+ f10: [T; 10],
+ f11: [T; 11],
+ f12: [T; 12],
+ f13: [T; 13],
+ f14: [T; 14],
+ f15: [T; 15],
+ f16: [T; 16],
+ f17: [T; 17],
+ f18: [T; 18],
+ f19: [T; 19],
+ f20: [T; 20],
+ f21: [T; 21],
+ f22: [T; 22],
+ f23: [T; 23],
+ f24: [T; 24],
+ f25: [T; 25],
+ f26: [T; 26],
+ f27: [T; 27],
+ f28: [T; 28],
+ f29: [T; 29],
+ f30: [T; 30],
+ f31: [T; 31],
+ f32: [T; 32],
+}
+
+#[derive(Derivative)]
+#[derivative(Clone, Copy, Debug, Eq, Hash, PartialEq)]
+// TODO: Ord, PartialOrd
+struct Fn<A, B, C, D, E, F, G, H, I, J, K, L> {
+ f00: fn(),
+ f01: fn(A),
+ f02: fn(A, B),
+ f03: fn(A, B, C),
+ f04: fn(A, B, C, D),
+ f05: fn(A, B, C, D, E),
+ f06: fn(A, B, C, D, E, F),
+ f07: fn(A, B, C, D, E, F, G),
+ f08: fn(A, B, C, D, E, F, G, H),
+ f09: fn(A, B, C, D, E, F, G, H, I),
+ f10: fn(A, B, C, D, E, F, G, H, I, J),
+ f11: fn(A, B, C, D, E, F, G, H, I, J, K),
+ f12: fn(A, B, C, D, E, F, G, H, I, J, K, L),
+}
+
+#[derive(Derivative)]
+#[derivative(Clone, Copy, Debug, Default, Eq, Hash, PartialEq)]
+// TODO: Ord, PartialOrd
+struct Tuple<A, B, C, D, E, F, G, H, I, J, K, L> {
+ f00: (),
+ f01: (A,),
+ f02: (A, B),
+ f03: (A, B, C),
+ f04: (A, B, C, D),
+ f05: (A, B, C, D, E),
+ f06: (A, B, C, D, E, F),
+ f07: (A, B, C, D, E, F, G),
+ f08: (A, B, C, D, E, F, G, H),
+ f09: (A, B, C, D, E, F, G, H, I),
+ f10: (A, B, C, D, E, F, G, H, I, J),
+ f11: (A, B, C, D, E, F, G, H, I, J, K),
+ f12: (A, B, C, D, E, F, G, H, I, J, K, L),
+}
+
+#[test]
+fn main() {}
diff --git a/vendor/derivative/tests/rustc-issue-29030.rs b/vendor/derivative/tests/rustc-issue-29030.rs
new file mode 100644
index 000000000..c893ece7d
--- /dev/null
+++ b/vendor/derivative/tests/rustc-issue-29030.rs
@@ -0,0 +1,30 @@
+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct Message<'a, P: 'a = &'a [u8]> {
+ header: &'a [u8],
+ payload: P,
+}
+
+#[test]
+fn main() {
+ let _ = Message {
+ header: &[1],
+ payload: &[1],
+ };
+}
diff --git a/vendor/derivative/tests/rustc-issue-29540.rs b/vendor/derivative/tests/rustc-issue-29540.rs
new file mode 100644
index 000000000..3b1fcf74d
--- /dev/null
+++ b/vendor/derivative/tests/rustc-issue-29540.rs
@@ -0,0 +1,509 @@
+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+pub struct Config {
+ pub name: String,
+ pub cluster: String,
+ pub debug_none: String,
+ pub debug_lockdep: String,
+ pub debug_context: String,
+ pub debug_crush: String,
+ pub debug_mds: String,
+ pub debug_mds_balancer: String,
+ pub debug_mds_locker: String,
+ pub debug_mds_log: String,
+ pub debug_mds_log_expire: String,
+ pub debug_mds_migrator: String,
+ pub debug_buffer: String,
+ pub debug_timer: String,
+ pub debug_filer: String,
+ pub debug_striper: String,
+ pub debug_objecter: String,
+ pub debug_rados: String,
+ pub debug_rbd: String,
+ pub debug_journaler: String,
+ pub debug_objectcacher: String,
+ pub debug_client: String,
+ pub debug_osd: String,
+ pub debug_optracker: String,
+ pub debug_objclass: String,
+ pub debug_filestore: String,
+ pub debug_keyvaluestore: String,
+ pub debug_journal: String,
+ pub debug_ms: String,
+ pub debug_mon: String,
+ pub debug_monc: String,
+ pub debug_paxos: String,
+ pub debug_tp: String,
+ pub debug_auth: String,
+ pub debug_crypto: String,
+ pub debug_finisher: String,
+ pub debug_heartbeatmap: String,
+ pub debug_perfcounter: String,
+ pub debug_rgw: String,
+ pub debug_civetweb: String,
+ pub debug_javaclient: String,
+ pub debug_asok: String,
+ pub debug_throttle: String,
+ pub host: String,
+ pub fsid: String,
+ pub public_addr: String,
+ pub cluster_addr: String,
+ pub public_network: String,
+ pub cluster_network: String,
+ pub num_client: String,
+ pub monmap: String,
+ pub mon_host: String,
+ pub lockdep: String,
+ pub run_dir: String,
+ pub admin_socket: String,
+ pub daemonize: String,
+ pub pid_file: String,
+ pub chdir: String,
+ pub max_open_files: String,
+ pub restapi_log_level: String,
+ pub restapi_base_url: String,
+ pub fatal_signal_handlers: String,
+ pub log_file: String,
+ pub log_max_new: String,
+ pub log_max_recent: String,
+ pub log_to_stderr: String,
+ pub err_to_stderr: String,
+ pub log_to_syslog: String,
+ pub err_to_syslog: String,
+ pub log_flush_on_exit: String,
+ pub log_stop_at_utilization: String,
+ pub clog_to_monitors: String,
+ pub clog_to_syslog: String,
+ pub clog_to_syslog_level: String,
+ pub clog_to_syslog_facility: String,
+ pub mon_cluster_log_to_syslog: String,
+ pub mon_cluster_log_to_syslog_level: String,
+ pub mon_cluster_log_to_syslog_facility: String,
+ pub mon_cluster_log_file: String,
+ pub mon_cluster_log_file_level: String,
+ pub key: String,
+ pub keyfile: String,
+ pub keyring: String,
+ pub heartbeat_interval: String,
+ pub heartbeat_file: String,
+ pub heartbeat_inject_failure: String,
+ pub perf: String,
+ pub ms_tcp_nodelay: String,
+ pub ms_tcp_rcvbuf: String,
+ pub ms_initial_backoff: String,
+ pub ms_max_backoff: String,
+ pub ms_nocrc: String,
+ pub ms_die_on_bad_msg: String,
+ pub ms_die_on_unhandled_msg: String,
+ pub ms_die_on_old_message: String,
+ pub ms_dispatch_throttle_bytes: String,
+ pub ms_bind_ipv6: String,
+ pub ms_bind_port_min: String,
+ pub ms_bind_port_max: String,
+ pub ms_rwthread_stack_bytes: String,
+ pub ms_tcp_read_timeout: String,
+ pub ms_pq_max_tokens_per_priority: String,
+ pub ms_pq_min_cost: String,
+ pub ms_inject_socket_failures: String,
+ pub ms_inject_delay_type: String,
+ pub ms_inject_delay_msg_type: String,
+ pub ms_inject_delay_max: String,
+ pub ms_inject_delay_probability: String,
+ pub ms_inject_internal_delays: String,
+ pub ms_dump_on_send: String,
+ pub inject_early_sigterm: String,
+ pub mon_data: String,
+ pub mon_initial_members: String,
+ pub mon_sync_fs_threshold: String,
+ pub mon_compact_on_start: String,
+ pub mon_compact_on_bootstrap: String,
+ pub mon_compact_on_trim: String,
+ pub mon_tick_interval: String,
+ pub mon_subscribe_interval: String,
+ pub mon_delta_reset_interval: String,
+ pub mon_osd_laggy_halflife: String,
+ pub mon_osd_laggy_weight: String,
+ pub mon_osd_adjust_heartbeat_grace: String,
+ pub mon_osd_adjust_down_out_interval: String,
+ pub mon_osd_auto_mark_in: String,
+ pub mon_osd_auto_mark_auto_out_in: String,
+ pub mon_osd_auto_mark_new_in: String,
+ pub mon_osd_down_out_interval: String,
+ pub mon_osd_down_out_subtree_limit: String,
+ pub mon_osd_min_up_ratio: String,
+ pub mon_osd_min_in_ratio: String,
+ pub mon_osd_max_op_age: String,
+ pub mon_osd_max_split_count: String,
+ pub mon_osd_allow_primary_temp: String,
+ pub mon_osd_allow_primary_affinity: String,
+ pub mon_stat_smooth_intervals: String,
+ pub mon_lease: String,
+ pub mon_lease_renew_interval: String,
+ pub mon_lease_ack_timeout: String,
+ pub mon_clock_drift_allowed: String,
+ pub mon_clock_drift_warn_backoff: String,
+ pub mon_timecheck_interval: String,
+ pub mon_accept_timeout: String,
+ pub mon_pg_create_interval: String,
+ pub mon_pg_stuck_threshold: String,
+ pub mon_pg_warn_min_per_osd: String,
+ pub mon_pg_warn_max_object_skew: String,
+ pub mon_pg_warn_min_objects: String,
+ pub mon_pg_warn_min_pool_objects: String,
+ pub mon_cache_target_full_warn_ratio: String,
+ pub mon_osd_full_ratio: String,
+ pub mon_osd_nearfull_ratio: String,
+ pub mon_globalid_prealloc: String,
+ pub mon_osd_report_timeout: String,
+ pub mon_force_standby_active: String,
+ pub mon_warn_on_old_mons: String,
+ pub mon_warn_on_legacy_crush_tunables: String,
+ pub mon_warn_on_osd_down_out_interval_zero: String,
+ pub mon_warn_on_cache_pools_without_hit_sets: String,
+ pub mon_min_osdmap_epochs: String,
+ pub mon_max_pgmap_epochs: String,
+ pub mon_max_log_epochs: String,
+ pub mon_max_mdsmap_epochs: String,
+ pub mon_max_osd: String,
+ pub mon_probe_timeout: String,
+ pub mon_slurp_timeout: String,
+ pub mon_slurp_bytes: String,
+ pub mon_client_bytes: String,
+ pub mon_daemon_bytes: String,
+ pub mon_max_log_entries_per_event: String,
+ pub mon_health_data_update_interval: String,
+ pub mon_data_avail_crit: String,
+ pub mon_data_avail_warn: String,
+ pub mon_config_key_max_entry_size: String,
+ pub mon_sync_timeout: String,
+ pub mon_sync_max_payload_size: String,
+ pub mon_sync_debug: String,
+ pub mon_sync_debug_leader: String,
+ pub mon_sync_debug_provider: String,
+ pub mon_sync_debug_provider_fallback: String,
+ pub mon_inject_sync_get_chunk_delay: String,
+ pub mon_osd_min_down_reporters: String,
+ pub mon_osd_min_down_reports: String,
+ pub mon_osd_force_trim_to: String,
+ pub mon_mds_force_trim_to: String,
+ pub mon_advanced_debug_mode: String,
+ pub mon_debug_dump_transactions: String,
+ pub mon_debug_dump_location: String,
+ pub mon_sync_provider_kill_at: String,
+ pub mon_sync_requester_kill_at: String,
+ pub mon_leveldb_write_buffer_size: String,
+ pub mon_leveldb_cache_size: String,
+ pub mon_leveldb_block_size: String,
+ pub mon_leveldb_bloom_size: String,
+ pub mon_leveldb_max_open_files: String,
+ pub mon_leveldb_compression: String,
+ pub mon_leveldb_paranoid: String,
+ pub mon_leveldb_log: String,
+ pub mon_leveldb_size_warn: String,
+ pub mon_force_quorum_join: String,
+ pub paxos_stash_full_interval: String,
+ pub paxos_max_join_drift: String,
+ pub paxos_propose_interval: String,
+ pub paxos_min_wait: String,
+ pub paxos_min: String,
+ pub paxos_trim_min: String,
+ pub paxos_trim_max: String,
+ pub paxos_service_trim_min: String,
+ pub paxos_service_trim_max: String,
+ pub paxos_kill_at: String,
+ pub clock_offset: String,
+ pub auth_cluster_required: String,
+ pub auth_service_required: String,
+ pub auth_client_required: String,
+ pub auth_supported: String,
+ pub cephx_require_signatures: String,
+ pub cephx_cluster_require_signatures: String,
+ pub cephx_service_require_signatures: String,
+ pub cephx_sign_messages: String,
+ pub auth_mon_ticket_ttl: String,
+ pub auth_service_ticket_ttl: String,
+ pub auth_debug: String,
+ pub mon_client_hunt_interval: String,
+ pub mon_client_ping_interval: String,
+ pub mon_client_ping_timeout: String,
+ pub mon_client_hunt_interval_backoff: String,
+ pub mon_client_hunt_interval_max_multiple: String,
+ pub mon_client_max_log_entries_per_message: String,
+ pub mon_max_pool_pg_num: String,
+ pub mon_pool_quota_warn_threshold: String,
+ pub mon_pool_quota_crit_threshold: String,
+ pub client_cache_size: String,
+ pub client_cache_mid: String,
+ pub client_use_random_mds: String,
+ pub client_mount_timeout: String,
+ pub client_tick_interval: String,
+ pub client_trace: String,
+ pub client_readahead_min: String,
+ pub client_readahead_max_bytes: String,
+ pub client_readahead_max_periods: String,
+ pub client_snapdir: String,
+ pub client_mountpoint: String,
+ pub client_notify_timeout: String,
+ pub osd_client_watch_timeout: String,
+ pub client_caps_release_delay: String,
+ pub client_oc: String,
+ pub client_oc_size: String,
+ pub client_oc_max_dirty: String,
+ pub client_oc_target_dirty: String,
+ pub client_oc_max_dirty_age: String,
+ pub client_oc_max_objects: String,
+ pub client_debug_force_sync_read: String,
+ pub client_debug_inject_tick_delay: String,
+ pub client_max_inline_size: String,
+ pub fuse_use_invalidate_cb: String,
+ pub fuse_allow_other: String,
+ pub fuse_default_permissions: String,
+ pub fuse_big_writes: String,
+ pub fuse_atomic_o_trunc: String,
+ pub fuse_debug: String,
+ pub fuse_multithreaded: String,
+ pub crush_location: String,
+ pub objecter_tick_interval: String,
+ pub objecter_timeout: String,
+ pub objecter_inflight_op_bytes: String,
+ pub objecter_inflight_ops: String,
+ pub journaler_allow_split_entries: String,
+ pub journaler_write_head_interval: String,
+ pub journaler_prefetch_periods: String,
+ pub journaler_prezero_periods: String,
+ pub journaler_batch_interval: String,
+ pub journaler_batch_max: String,
+ pub mds_data: String,
+ pub mds_max_file_size: String,
+ pub mds_cache_size: String,
+ pub mds_cache_mid: String,
+ pub mds_mem_max: String,
+ pub mds_dir_max_commit_size: String,
+ pub mds_decay_halflife: String,
+ pub mds_beacon_interval: String,
+ pub mds_beacon_grace: String,
+ pub mds_enforce_unique_name: String,
+ pub mds_blacklist_interval: String,
+ pub mds_session_timeout: String,
+ pub mds_freeze_tree_timeout: String,
+ pub mds_session_autoclose: String,
+ pub mds_reconnect_timeout: String,
+ pub mds_tick_interval: String,
+ pub mds_dirstat_min_interval: String,
+ pub mds_scatter_nudge_interval: String,
+ pub mds_client_prealloc_inos: String,
+ pub mds_early_reply: String,
+ pub mds_default_dir_hash: String,
+ pub mds_log: String,
+ pub mds_log_skip_corrupt_events: String,
+ pub mds_log_max_events: String,
+ pub mds_log_segment_size: String,
+ pub mds_log_max_segments: String,
+ pub mds_log_max_expiring: String,
+ pub mds_bal_sample_interval: String,
+ pub mds_bal_replicate_threshold: String,
+ pub mds_bal_unreplicate_threshold: String,
+ pub mds_bal_frag: String,
+ pub mds_bal_split_size: String,
+ pub mds_bal_split_rd: String,
+ pub mds_bal_split_wr: String,
+ pub mds_bal_split_bits: String,
+ pub mds_bal_merge_size: String,
+ pub mds_bal_merge_rd: String,
+ pub mds_bal_merge_wr: String,
+ pub mds_bal_interval: String,
+ pub mds_bal_fragment_interval: String,
+ pub mds_bal_idle_threshold: String,
+ pub mds_bal_max: String,
+ pub mds_bal_max_until: String,
+ pub mds_bal_mode: String,
+ pub mds_bal_min_rebalance: String,
+ pub mds_bal_min_start: String,
+ pub mds_bal_need_min: String,
+ pub mds_bal_need_max: String,
+ pub mds_bal_midchunk: String,
+ pub mds_bal_minchunk: String,
+ pub mds_bal_target_removal_min: String,
+ pub mds_bal_target_removal_max: String,
+ pub mds_replay_interval: String,
+ pub mds_shutdown_check: String,
+ pub mds_thrash_exports: String,
+ pub mds_thrash_fragments: String,
+ pub mds_dump_cache_on_map: String,
+ pub mds_dump_cache_after_rejoin: String,
+ pub mds_verify_scatter: String,
+ pub mds_debug_scatterstat: String,
+ pub mds_debug_frag: String,
+ pub mds_debug_auth_pins: String,
+ pub mds_debug_subtrees: String,
+ pub mds_kill_mdstable_at: String,
+ pub mds_kill_export_at: String,
+ pub mds_kill_import_at: String,
+ pub mds_kill_link_at: String,
+ pub mds_kill_rename_at: String,
+ pub mds_kill_openc_at: String,
+ pub mds_kill_journal_at: String,
+ pub mds_kill_journal_expire_at: String,
+ pub mds_kill_journal_replay_at: String,
+ pub mds_kill_create_at: String,
+ pub mds_open_remote_link_mode: String,
+ pub mds_inject_traceless_reply_probability: String,
+ pub mds_wipe_sessions: String,
+ pub mds_wipe_ino_prealloc: String,
+ pub mds_skip_ino: String,
+ pub max_mds: String,
+ pub mds_standby_for_name: String,
+ pub mds_standby_for_rank: String,
+ pub mds_standby_replay: String,
+ pub osd_compact_leveldb_on_mount: String,
+ pub osd_max_backfills: String,
+ pub osd_backfill_full_ratio: String,
+ pub osd_backfill_retry_interval: String,
+ pub osd_agent_max_ops: String,
+ pub osd_agent_min_evict_effort: String,
+ pub osd_agent_quantize_effort: String,
+ pub osd_agent_delay_time: String,
+ pub osd_agent_hist_halflife: String,
+ pub osd_agent_slop: String,
+ pub osd_uuid: String,
+ pub osd_data: String,
+ pub osd_journal: String,
+ pub osd_journal_size: String,
+ pub osd_max_write_size: String,
+ pub osd_max_pgls: String,
+ pub osd_client_message_size_cap: String,
+ pub osd_client_message_cap: String,
+ pub osd_pg_bits: String,
+ pub osd_pgp_bits: String,
+ pub osd_crush_chooseleaf_type: String,
+ pub osd_pool_default_crush_rule: String,
+ pub osd_pool_default_crush_replicated_ruleset: String,
+ pub osd_pool_erasure_code_stripe_width: String,
+ pub osd_pool_default_size: String,
+ pub osd_pool_default_min_size: String,
+ pub osd_pool_default_pg_num: String,
+ pub osd_pool_default_pgp_num: String,
+ pub osd_pool_default_erasure_code_directory: String,
+ pub osd_pool_default_erasure_code_profile: String,
+ pub osd_erasure_code_plugins: String,
+ pub osd_pool_default_flags: String,
+ pub osd_pool_default_flag_hashpspool: String,
+ pub osd_pool_default_hit_set_bloom_fpp: String,
+ pub osd_pool_default_cache_target_dirty_ratio: String,
+ pub osd_pool_default_cache_target_full_ratio: String,
+ pub osd_pool_default_cache_min_flush_age: String,
+ pub osd_pool_default_cache_min_evict_age: String,
+ pub osd_hit_set_min_size: String,
+ pub osd_hit_set_max_size: String,
+ pub osd_hit_set_namespace: String,
+ pub osd_tier_default_cache_mode: String,
+ pub osd_tier_default_cache_hit_set_count: String,
+ pub osd_tier_default_cache_hit_set_period: String,
+ pub osd_tier_default_cache_hit_set_type: String,
+ pub osd_map_dedup: String,
+ pub osd_map_max_advance: String,
+ pub osd_map_cache_size: String,
+ pub osd_map_message_max: String,
+ pub osd_map_share_max_epochs: String,
+ pub osd_op_threads: String,
+ pub osd_peering_wq_batch_size: String,
+ pub osd_op_pq_max_tokens_per_priority: String,
+ pub osd_op_pq_min_cost: String,
+ pub osd_disk_threads: String,
+ pub osd_disk_thread_ioprio_class: String,
+ pub osd_disk_thread_ioprio_priority: String,
+ pub osd_recovery_threads: String,
+ pub osd_recover_clone_overlap: String,
+ pub osd_recover_clone_overlap_limit: String,
+ pub osd_backfill_scan_min: String,
+ pub osd_backfill_scan_max: String,
+ pub osd_op_thread_timeout: String,
+ pub osd_recovery_thread_timeout: String,
+ pub osd_snap_trim_thread_timeout: String,
+ pub osd_snap_trim_sleep: String,
+ pub osd_scrub_thread_timeout: String,
+ pub osd_scrub_finalize_thread_timeout: String,
+ pub osd_scrub_invalid_stats: String,
+ pub osd_remove_thread_timeout: String,
+ pub osd_command_thread_timeout: String,
+ pub osd_age: String,
+ pub osd_age_time: String,
+ pub osd_heartbeat_addr: String,
+ pub osd_heartbeat_interval: String,
+ pub osd_heartbeat_grace: String,
+ pub osd_heartbeat_min_peers: String,
+ pub osd_pg_max_concurrent_snap_trims: String,
+ pub osd_heartbeat_min_healthy_ratio: String,
+ pub osd_mon_heartbeat_interval: String,
+ pub osd_mon_report_interval_max: String,
+ pub osd_mon_report_interval_min: String,
+ pub osd_pg_stat_report_interval_max: String,
+ pub osd_mon_ack_timeout: String,
+ pub osd_default_data_pool_replay_window: String,
+ pub osd_preserve_trimmed_log: String,
+ pub osd_auto_mark_unfound_lost: String,
+ pub osd_recovery_delay_start: String,
+ pub osd_recovery_max_active: String,
+ pub osd_recovery_max_single_start: String,
+ pub osd_recovery_max_chunk: String,
+ pub osd_copyfrom_max_chunk: String,
+ pub osd_push_per_object_cost: String,
+ pub osd_max_push_cost: String,
+ pub osd_max_push_objects: String,
+ pub osd_recovery_forget_lost_objects: String,
+ pub osd_max_scrubs: String,
+ pub osd_scrub_load_threshold: String,
+ pub osd_scrub_min_interval: String,
+ pub osd_scrub_max_interval: String,
+ pub osd_scrub_chunk_min: String,
+ pub osd_scrub_chunk_max: String,
+ pub osd_scrub_sleep: String,
+ pub osd_deep_scrub_interval: String,
+ pub osd_deep_scrub_stride: String,
+ pub osd_scan_list_ping_tp_interval: String,
+ pub osd_auto_weight: String,
+ pub osd_class_dir: String,
+ pub osd_open_classes_on_start: String,
+ pub osd_check_for_log_corruption: String,
+ pub osd_use_stale_snap: String,
+ pub osd_rollback_to_cluster_snap: String,
+ pub osd_default_notify_timeout: String,
+ pub osd_kill_backfill_at: String,
+ pub osd_pg_epoch_persisted_max_stale: String,
+ pub osd_min_pg_log_entries: String,
+ pub osd_max_pg_log_entries: String,
+ pub osd_op_complaint_time: String,
+ pub osd_command_max_records: String,
+ pub osd_op_log_threshold: String,
+ pub osd_verify_sparse_read_holes: String,
+ pub osd_debug_drop_ping_probability: String,
+ pub osd_debug_drop_ping_duration: String,
+ pub osd_debug_drop_pg_create_probability: String,
+ pub osd_debug_drop_pg_create_duration: String,
+ pub osd_debug_drop_op_probability: String,
+ pub osd_debug_op_order: String,
+ pub osd_debug_verify_snaps_on_info: String,
+ pub osd_debug_verify_stray_on_activate: String,
+ pub osd_debug_skip_full_check_in_backfill_reservation: String,
+ pub osd_debug_reject_backfill_probability: String,
+ pub osd_enable_op_tracker: String,
+}
+
+#[test]
+fn main() {}
diff --git a/vendor/derivative/tests/rustc-issue-29710.rs b/vendor/derivative/tests/rustc-issue-29710.rs
new file mode 100644
index 000000000..d2198ed7a
--- /dev/null
+++ b/vendor/derivative/tests/rustc-issue-29710.rs
@@ -0,0 +1,29 @@
+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![deny(unused_results)]
+#![allow(dead_code)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct A(usize);
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct B { a: usize }
+
+#[test]
+fn main() {}
diff --git a/vendor/derivative/tests/rustc-issue-32292.rs b/vendor/derivative/tests/rustc-issue-32292.rs
new file mode 100644
index 000000000..6d4be3838
--- /dev/null
+++ b/vendor/derivative/tests/rustc-issue-32292.rs
@@ -0,0 +1,27 @@
+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![deny(warnings)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Hash, Eq, PartialEq, Debug, Clone, Copy)]
+// TODO: Ord, PartialOrd
+struct Foo;
+
+#[test]
+fn main() {
+ let _ = Foo;
+}
diff --git a/vendor/derivative/tests/rustc-issue-3935.rs b/vendor/derivative/tests/rustc-issue-3935.rs
new file mode 100644
index 000000000..a63e6a771
--- /dev/null
+++ b/vendor/derivative/tests/rustc-issue-3935.rs
@@ -0,0 +1,29 @@
+// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+struct Bike {
+ name: String,
+}
+
+#[test]
+fn main() {
+ let town_bike = Bike { name: "schwinn".to_string() };
+ let my_bike = Bike { name: "surly".to_string() };
+
+ assert!(town_bike != my_bike);
+}
diff --git a/vendor/derivative/tests/rustc-issue-42453.rs b/vendor/derivative/tests/rustc-issue-42453.rs
new file mode 100644
index 000000000..bd349de77
--- /dev/null
+++ b/vendor/derivative/tests/rustc-issue-42453.rs
@@ -0,0 +1,28 @@
+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![deny(warnings)]
+
+#![allow(dead_code)]
+#![allow(non_camel_case_types)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(Debug)]
+struct builder;
+
+fn main() {
+
+}
diff --git a/vendor/derivative/tests/rustc-issue-58319.rs b/vendor/derivative/tests/rustc-issue-58319.rs
new file mode 100644
index 000000000..4bb0077da
--- /dev/null
+++ b/vendor/derivative/tests/rustc-issue-58319.rs
@@ -0,0 +1,644 @@
+// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![deny(warnings)]
+
+#![allow(dead_code)]
+#![allow(non_camel_case_types)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+fn main() {}
+
+#[derive(Derivative)]
+#[derivative(Clone)]
+pub struct Little;
+
+#[derive(Clone)]
+pub struct Big(
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+ Little,
+);
diff --git a/vendor/derivative/tests/rustc-issue-6341.rs b/vendor/derivative/tests/rustc-issue-6341.rs
new file mode 100644
index 000000000..674f1918c
--- /dev/null
+++ b/vendor/derivative/tests/rustc-issue-6341.rs
@@ -0,0 +1,30 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// pretty-expanded FIXME #23616
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+#[derive(Derivative)]
+#[derivative(PartialEq)]
+struct A { x: usize }
+
+impl Drop for A {
+ fn drop(&mut self) {}
+}
+
+#[test]
+fn main() {
+ A { x: 42 };
+}
diff --git a/vendor/derivative/tests/rustc-typeclasses-eq-example.rs b/vendor/derivative/tests/rustc-typeclasses-eq-example.rs
new file mode 100644
index 000000000..4755df5b9
--- /dev/null
+++ b/vendor/derivative/tests/rustc-typeclasses-eq-example.rs
@@ -0,0 +1,83 @@
+// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![allow(non_snake_case)]
+#![allow(non_camel_case_types)]
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+// Example from lkuper's intern talk, August 2012.
+use Color::{cyan, magenta, yellow, black};
+use ColorTree::{leaf, branch};
+
+trait Equal {
+ fn isEq(&self, a: &Self) -> bool;
+}
+
+#[derive(Derivative)]
+#[derivative(Clone, Copy)]
+enum Color { cyan, magenta, yellow, black }
+
+impl Equal for Color {
+ fn isEq(&self, a: &Color) -> bool {
+ match (*self, *a) {
+ (cyan, cyan) => { true }
+ (magenta, magenta) => { true }
+ (yellow, yellow) => { true }
+ (black, black) => { true }
+ _ => { false }
+ }
+ }
+}
+
+#[derive(Derivative)]
+#[derivative(Clone)]
+enum ColorTree {
+ leaf(Color),
+ branch(Box<ColorTree>, Box<ColorTree>)
+}
+
+impl Equal for ColorTree {
+ fn isEq(&self, a: &ColorTree) -> bool {
+ match (self, a) {
+ (&leaf(ref x), &leaf(ref y)) => { x.isEq(&(*y)) }
+ (&branch(ref l1, ref r1), &branch(ref l2, ref r2)) => {
+ (*l1).isEq(&(**l2).clone()) && (*r1).isEq(&(**r2).clone())
+ }
+ _ => { false }
+ }
+ }
+}
+
+#[test]
+fn main() {
+ assert!(cyan.isEq(&cyan));
+ assert!(magenta.isEq(&magenta));
+ assert!(!cyan.isEq(&yellow));
+ assert!(!magenta.isEq(&cyan));
+
+ assert!(leaf(cyan).isEq(&leaf(cyan)));
+ assert!(!leaf(cyan).isEq(&leaf(yellow)));
+
+ assert!(branch(Box::new(leaf(magenta)), Box::new(leaf(cyan)))
+ .isEq(&branch(Box::new(leaf(magenta)), Box::new(leaf(cyan)))));
+
+ assert!(branch(Box::new(leaf(black)), Box::new(leaf(cyan)))
+ .isEq(&branch(Box::new(leaf(black)), Box::new(leaf(cyan)))));
+
+ assert!(!branch(Box::new(leaf(magenta)), Box::new(leaf(cyan)))
+ .isEq(&branch(Box::new(leaf(magenta)), Box::new(leaf(magenta)))));
+
+ println!("Assertions all succeeded!");
+}
diff --git a/vendor/derivative/tests/rustc-zero-sized-btreemap-insert.rs b/vendor/derivative/tests/rustc-zero-sized-btreemap-insert.rs
new file mode 100644
index 000000000..b6329f5d4
--- /dev/null
+++ b/vendor/derivative/tests/rustc-zero-sized-btreemap-insert.rs
@@ -0,0 +1,41 @@
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#[cfg(feature = "use_core")]
+extern crate core;
+
+#[macro_use]
+extern crate derivative;
+
+use std::collections::BTreeMap;
+use std::iter::Iterator;
+
+#[derive(Derivative)]
+#[derive(Ord, PartialOrd)]
+#[derivative(Eq, Hash, Debug, PartialEq)]
+// TODO: Ord, PartialOrd
+struct Zst;
+
+#[test]
+fn main() {
+ const N: usize = 8;
+
+ for len in 0..N {
+ let mut tester = BTreeMap::new();
+ assert_eq!(tester.len(), 0);
+ for _ in 0..len {
+ tester.insert(Zst, ());
+ }
+ assert_eq!(tester.len(), if len == 0 { 0 } else { 1 });
+ assert_eq!(tester.iter().count(), if len == 0 { 0 } else { 1 });
+ assert_eq!(tester.get(&Zst).is_some(), len > 0);
+ tester.clear();
+ }
+}
diff --git a/vendor/dirs-sys/.cargo-checksum.json b/vendor/dirs-sys-0.3.7/.cargo-checksum.json
index 3bf19bb8d..3bf19bb8d 100644
--- a/vendor/dirs-sys/.cargo-checksum.json
+++ b/vendor/dirs-sys-0.3.7/.cargo-checksum.json
diff --git a/vendor/dirs-sys/Cargo.toml b/vendor/dirs-sys-0.3.7/Cargo.toml
index 9951d2414..9951d2414 100644
--- a/vendor/dirs-sys/Cargo.toml
+++ b/vendor/dirs-sys-0.3.7/Cargo.toml
diff --git a/vendor/dirs-sys/LICENSE-APACHE b/vendor/dirs-sys-0.3.7/LICENSE-APACHE
index 91e18a62b..91e18a62b 100644
--- a/vendor/dirs-sys/LICENSE-APACHE
+++ b/vendor/dirs-sys-0.3.7/LICENSE-APACHE
diff --git a/vendor/dirs-sys/LICENSE-MIT b/vendor/dirs-sys-0.3.7/LICENSE-MIT
index 1452dc143..1452dc143 100644
--- a/vendor/dirs-sys/LICENSE-MIT
+++ b/vendor/dirs-sys-0.3.7/LICENSE-MIT
diff --git a/vendor/dirs-sys/README.md b/vendor/dirs-sys-0.3.7/README.md
index c1234148a..c1234148a 100644
--- a/vendor/dirs-sys/README.md
+++ b/vendor/dirs-sys-0.3.7/README.md
diff --git a/vendor/dirs-sys/src/lib.rs b/vendor/dirs-sys-0.3.7/src/lib.rs
index 4f9d67e76..4f9d67e76 100644
--- a/vendor/dirs-sys/src/lib.rs
+++ b/vendor/dirs-sys-0.3.7/src/lib.rs
diff --git a/vendor/dirs-sys/src/xdg_user_dirs.rs b/vendor/dirs-sys-0.3.7/src/xdg_user_dirs.rs
index de7e9e9d2..de7e9e9d2 100644
--- a/vendor/dirs-sys/src/xdg_user_dirs.rs
+++ b/vendor/dirs-sys-0.3.7/src/xdg_user_dirs.rs
diff --git a/vendor/errno-dragonfly/.cargo-checksum.json b/vendor/errno-dragonfly/.cargo-checksum.json
deleted file mode 100644
index 2579ff65f..000000000
--- a/vendor/errno-dragonfly/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"Cargo.toml":"36cf2ca7d85e09d22a7dd384f95c51eb6a7f1a6234d3c54d251dfa575b990430","LICENSE":"e5b1e4fcd8ea2b20b09f378e44ef3f51f4b6a72a72b9f6a729e0f87bddcef97f","README.md":"1e8440a65b6befd65a507b60fb11ab29f314dd77012aa7a11b5d1fadbb5f908f","build.rs":"10d4f05ac56556fea0e98732dc4250ddf3f1acc3fea541c63a0bc130aca772e6","src/errno.c":"a857e47b114acb85fddcb252a610ab5734d225c26b7bedd7c35d7789d46c8526","src/lib.rs":"47245dcfc2d5797584444e70edb1997b2f5e39ecc0779599a7fcded379966c0f"},"package":"aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"} \ No newline at end of file
diff --git a/vendor/errno-dragonfly/Cargo.toml b/vendor/errno-dragonfly/Cargo.toml
deleted file mode 100644
index 51e21437b..000000000
--- a/vendor/errno-dragonfly/Cargo.toml
+++ /dev/null
@@ -1,27 +0,0 @@
-# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
-#
-# When uploading crates to the registry Cargo will automatically
-# "normalize" Cargo.toml files for maximal compatibility
-# with all versions of Cargo and also rewrite `path` dependencies
-# to registry (e.g., crates.io) dependencies
-#
-# If you believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
-
-[package]
-edition = "2018"
-name = "errno-dragonfly"
-version = "0.1.2"
-authors = ["Michael Neumann <mneumann@ntecs.de>"]
-include = ["Cargo.toml", "LICENSE", "README.md", "build.rs", "src/lib.rs", "src/errno.c"]
-description = "Exposes errno functionality to stable Rust on DragonFlyBSD"
-keywords = ["dragonfly"]
-license = "MIT"
-repository = "https://github.com/mneumann/errno-dragonfly-rs"
-[dependencies.libc]
-version = "0.2"
-default-features = false
-[build-dependencies.cc]
-version = "1.0"
diff --git a/vendor/errno-dragonfly/README.md b/vendor/errno-dragonfly/README.md
deleted file mode 100644
index 9218a7b88..000000000
--- a/vendor/errno-dragonfly/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# errno-dragonfly-rs
-
-Exposing `errno` functionality to stable Rust on DragonFly BSD.
diff --git a/vendor/errno-dragonfly/build.rs b/vendor/errno-dragonfly/build.rs
deleted file mode 100644
index b93b9ef87..000000000
--- a/vendor/errno-dragonfly/build.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-fn main() {
- cc::Build::new().file("src/errno.c").compile("liberrno.a");
-}
diff --git a/vendor/errno-dragonfly/src/errno.c b/vendor/errno-dragonfly/src/errno.c
deleted file mode 100644
index 32fb4dab4..000000000
--- a/vendor/errno-dragonfly/src/errno.c
+++ /dev/null
@@ -1,3 +0,0 @@
-#include <errno.h>
-
-int *errno_location() { return &errno; }
diff --git a/vendor/errno-dragonfly/src/lib.rs b/vendor/errno-dragonfly/src/lib.rs
deleted file mode 100644
index 4208344d3..000000000
--- a/vendor/errno-dragonfly/src/lib.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-#![no_std]
-
-#[link(name = "errno", kind = "static")]
-extern "C" {
- pub fn errno_location() -> *mut libc::c_int;
-}
diff --git a/vendor/errno/.cargo-checksum.json b/vendor/errno/.cargo-checksum.json
index 93f00ae56..15c4378d0 100644
--- a/vendor/errno/.cargo-checksum.json
+++ b/vendor/errno/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"de0a0148de26643113bc5a65e6954ecbd92ba99abc694da4944c7495cfd92b66","Cargo.toml":"7148d6f70b6070cb1b5714143c9695189121619232eafdef9bd0d5b7dbc3e930","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"8764a597675778ddfd4e25f81b08a05dbcf089ac05662df7613fe67f150e3aa2","README.md":"96a40903ea0fe68cf512d176a230f4a37df76de262f047f01a46f31de75402bd","clippy.toml":"2c27890fbf0454bb2405bdb013b1daeb78d57c5844b964bcac9afcc125fa46e4","src/hermit.rs":"a0d6839cbef77e2e93acafc629c76805b858311982f19b99c3389e43cfbebfbf","src/lib.rs":"318f864b8cb9296c85f70f9dfb855c552303630b3a9390f147bb4b581b8d8b5c","src/unix.rs":"6b884aad20e0bc015ec3a99c2f48c886345533fd92787c3b18742654071b7741","src/wasi.rs":"c606886ebda52b5dc7682c0f3aaf51e146692455acd5e303812cf0d634589d05","src/windows.rs":"7cbcdb8e74582f357fa945bb1c44c4d19c1a10bec958da1223305bf68ec35baf"},"package":"4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"0e7e9b66ccefbe89e04196022c35a799cd6cd9399fc72935efab6b76544d89cc","Cargo.toml":"a93ea470beb86eabc94f7a4bacc40d7837b336a77dc8c02317da75c26386ad88","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"8764a597675778ddfd4e25f81b08a05dbcf089ac05662df7613fe67f150e3aa2","README.md":"96a40903ea0fe68cf512d176a230f4a37df76de262f047f01a46f31de75402bd","clippy.toml":"2c27890fbf0454bb2405bdb013b1daeb78d57c5844b964bcac9afcc125fa46e4","src/hermit.rs":"ad03355bc4d79c180ab3210e1d3edd538eccaaea8d4f9a9b7eb8a0dc2d39b5df","src/lib.rs":"318f864b8cb9296c85f70f9dfb855c552303630b3a9390f147bb4b581b8d8b5c","src/unix.rs":"dc11866f338b4b40ebafb3fc8a2ac7079ea932fe8090d9cae37e4b10d97fca5a","src/wasi.rs":"c606886ebda52b5dc7682c0f3aaf51e146692455acd5e303812cf0d634589d05","src/windows.rs":"7cbcdb8e74582f357fa945bb1c44c4d19c1a10bec958da1223305bf68ec35baf"},"package":"ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860"} \ No newline at end of file
diff --git a/vendor/errno/CHANGELOG.md b/vendor/errno/CHANGELOG.md
index 0c8f3daca..fa43eec6e 100644
--- a/vendor/errno/CHANGELOG.md
+++ b/vendor/errno/CHANGELOG.md
@@ -1,5 +1,34 @@
# [Unreleased]
+# [0.3.5] - 2023-10-08
+
+- Use __errno_location on DragonFly BSD
+ [#82](https://github.com/lambda-fairy/rust-errno/pull/82)
+
+# [0.3.4] - 2023-10-01
+
+- Add GNU/Hurd support
+ [#80](https://github.com/lambda-fairy/rust-errno/pull/80)
+
+# [0.3.3] - 2023-08-28
+
+- Disable "libc/std" in no-std configurations.
+ [#77](https://github.com/lambda-fairy/rust-errno/pull/77)
+
+- Bump errno-dragonfly to 0.1.2
+ [#75](https://github.com/lambda-fairy/rust-errno/pull/75)
+
+- Support for the ESP-IDF framework
+ [#74](https://github.com/lambda-fairy/rust-errno/pull/74)
+
+# [0.3.2] - 2023-07-30
+
+- Fix build on Hermit
+ [#73](https://github.com/lambda-fairy/rust-errno/pull/73)
+
+- Add support for QNX Neutrino
+ [#72](https://github.com/lambda-fairy/rust-errno/pull/72)
+
# [0.3.1] - 2023-04-08
- Correct link name on redox
@@ -33,7 +62,11 @@
- Optionally support no_std
[#31](https://github.com/lambda-fairy/rust-errno/pull/31)
-[Unreleased]: https://github.com/lambda-fairy/rust-errno/compare/v0.3.1...HEAD
+[Unreleased]: https://github.com/lambda-fairy/rust-errno/compare/v0.3.5...HEAD
+[0.3.5]: https://github.com/lambda-fairy/rust-errno/compare/v0.3.4...v0.3.5
+[0.3.4]: https://github.com/lambda-fairy/rust-errno/compare/v0.3.3...v0.3.4
+[0.3.3]: https://github.com/lambda-fairy/rust-errno/compare/v0.3.2...v0.3.3
+[0.3.2]: https://github.com/lambda-fairy/rust-errno/compare/v0.3.1...v0.3.2
[0.3.1]: https://github.com/lambda-fairy/rust-errno/compare/v0.3.0...v0.3.1
[0.3.0]: https://github.com/lambda-fairy/rust-errno/compare/v0.2.8...v0.3.0
[0.2.8]: https://github.com/lambda-fairy/rust-errno/compare/v0.2.7...v0.2.8
diff --git a/vendor/errno/Cargo.toml b/vendor/errno/Cargo.toml
index bf54b1f46..d35ef19cd 100644
--- a/vendor/errno/Cargo.toml
+++ b/vendor/errno/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2018"
rust-version = "1.48"
name = "errno"
-version = "0.3.1"
+version = "0.3.5"
authors = ["Chris Wong <lambda.fairy@gmail.com>"]
description = "Cross-platform interface to the `errno` variable."
documentation = "https://docs.rs/errno"
@@ -27,19 +27,19 @@ repository = "https://github.com/lambda-fairy/rust-errno"
[features]
default = ["std"]
-std = []
-
-[target."cfg(target_os=\"dragonfly\")".dependencies.errno-dragonfly]
-version = "0.1.1"
+std = ["libc/std"]
[target."cfg(target_os=\"hermit\")".dependencies.libc]
version = "0.2"
+default-features = false
[target."cfg(target_os=\"wasi\")".dependencies.libc]
version = "0.2"
+default-features = false
[target."cfg(unix)".dependencies.libc]
version = "0.2"
+default-features = false
[target."cfg(windows)".dependencies.windows-sys]
version = "0.48"
diff --git a/vendor/errno/src/hermit.rs b/vendor/errno/src/hermit.rs
index 99d4c3286..331b6b152 100644
--- a/vendor/errno/src/hermit.rs
+++ b/vendor/errno/src/hermit.rs
@@ -14,7 +14,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
-use Errno;
+use crate::Errno;
pub fn with_description<F, T>(_err: Errno, callback: F) -> T
where
diff --git a/vendor/errno/src/unix.rs b/vendor/errno/src/unix.rs
index 2f0286000..86a35d9be 100644
--- a/vendor/errno/src/unix.rs
+++ b/vendor/errno/src/unix.rs
@@ -13,8 +13,6 @@
// except according to those terms.
use core::str;
-#[cfg(target_os = "dragonfly")]
-use errno_dragonfly::errno_location;
use libc::{self, c_char, c_int, size_t, strlen};
use crate::Errno;
@@ -57,7 +55,6 @@ pub fn set_errno(Errno(errno): Errno) {
}
extern "C" {
- #[cfg(not(target_os = "dragonfly"))]
#[cfg_attr(
any(target_os = "macos", target_os = "ios", target_os = "freebsd"),
link_name = "__error"
@@ -67,7 +64,8 @@ extern "C" {
target_os = "openbsd",
target_os = "netbsd",
target_os = "bitrig",
- target_os = "android"
+ target_os = "android",
+ target_os = "espidf"
),
link_name = "__errno"
)]
@@ -77,12 +75,21 @@ extern "C" {
)]
#[cfg_attr(target_os = "haiku", link_name = "_errnop")]
#[cfg_attr(
- any(target_os = "linux", target_os = "redox"),
+ any(
+ target_os = "linux",
+ target_os = "hurd",
+ target_os = "redox",
+ target_os = "dragonfly"
+ ),
link_name = "__errno_location"
)]
#[cfg_attr(target_os = "aix", link_name = "_Errno")]
+ #[cfg_attr(target_os = "nto", link_name = "__get_errno_ptr")]
fn errno_location() -> *mut c_int;
- #[cfg_attr(target_os = "linux", link_name = "__xpg_strerror_r")]
+ #[cfg_attr(
+ any(target_os = "linux", target_os = "hurd"),
+ link_name = "__xpg_strerror_r"
+ )]
fn strerror_r(errnum: c_int, buf: *mut c_char, buflen: size_t) -> c_int;
}
diff --git a/vendor/fd-lock/.cargo-checksum.json b/vendor/fd-lock/.cargo-checksum.json
index 565f4d1d8..240613617 100644
--- a/vendor/fd-lock/.cargo-checksum.json
+++ b/vendor/fd-lock/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"8c183b851ee565c1b50aea2b41ff378c4143f5ea5d6c5e7b1cbba5a94b217088","LICENSE-APACHE":"b00ec75cd7ef2a62ff1f26c0ddafbc508282d15dce149506f983ce6c8e7a4876","LICENSE-MIT":"ce688e08d0454a032063ff701c4e88051ed89f0c5c9c391cbe58e4099769ae5d","README.md":"ede6ce06722fa6bc718ef44ba9605ef1ff4f0d13551dfb648f889c2d08826f01","src/lib.rs":"1bb896e8d6be4e0a344132cd3cbfd89b08a8ee84414be2151fe1ecbdba88cb6d","src/read_guard.rs":"ebe8f40501456a127dfe96625cb78ed3647489a9b570c0b527cc504a9b87a3e2","src/rw_lock.rs":"a5360aba83a03e25d7fee58b4e56ce8e18aaa360f6458a7b45b4a9af8fc85f4f","src/sys/mod.rs":"af808ccf3e9a2e480b2113915a9018bc5698b1156eec16ced69131ff22010a04","src/sys/unix/mod.rs":"af44a486cd53b0367b2466cf4e4240ad9ebfb77274ed7dd73a8b722be9f1fb0d","src/sys/unix/read_guard.rs":"debf4cbdbbbf5d1f31b2f420e7ef85cadb56d5d63b6be0101ff60970aa23af4d","src/sys/unix/rw_lock.rs":"695cf947892b4f6cf24ed80151d485edfc3ae48d1111df7e028f1590000ce1cd","src/sys/unix/write_guard.rs":"8b1249e51aba8e6812277856cb449e27433ff14c1e761c53e43a4fc81d79324d","src/sys/unsupported/mod.rs":"da50072981243d69b2f3cd43d0d314184d9fe32f4d1f83f9d65ffa56be591d35","src/sys/unsupported/read_guard.rs":"996e4137fd5f6a4ee586d3988f399c01886a4ff517caf605b0b15b15ec1d1921","src/sys/unsupported/rw_lock.rs":"0ab0291a20cd802099e9330140ad81778f60656185df1b3bd35b1aaabcd3476d","src/sys/unsupported/utils.rs":"c0c608a32b8686f4242d3639b8d490efcfbc2385910f369e1dac741fb173e83d","src/sys/unsupported/write_guard.rs":"b2c02e43c4a939370a65ec33b949246d4486118631e1178b79d8d8c83fc59d13","src/sys/windows/mod.rs":"299c760cfd51ac2905750b29ae9662fb5c637ad43edd7f0d738955d52002faa3","src/sys/windows/read_guard.rs":"7d11990c5f5e16305ee62dd305eeb94494649dcba83556035336934017382bc0","src/sys/windows/rw_lock.rs":"f7afca581d24eed33f1f5163ea66830a09201c4e72b0fefffe1b186433e7fa87","src/sys/windows/utils.rs":"908f71e686f835ccddfb338fdea22e56b58685a6b90036aea60bcfa693d19f39","src/sys/windows/write_guard.rs":"a1b31035ad8a02dc62a81101698e073c930222ce4108757530c352014274a7a3","src/write_guard.rs":"84126fcfe536f51c9fd97c86c4abf0dd55ff28a165652d75f78e546331590bee","tests/test.rs":"ccf921d67af1a2197077b5a4c37d87e096f97658e5d663b4e312e133d8b4b236"},"package":"9799aefb4a2e4a01cc47610b1dd47c18ab13d991f27bbcaed9296f5a53d5cbad"} \ No newline at end of file
+{"files":{"Cargo.toml":"ebcdaf258b72c558e8d24383af3e5f01900fea590d6558c8cf02b1ee722f3394","LICENSE-APACHE":"b00ec75cd7ef2a62ff1f26c0ddafbc508282d15dce149506f983ce6c8e7a4876","LICENSE-MIT":"ce688e08d0454a032063ff701c4e88051ed89f0c5c9c391cbe58e4099769ae5d","README.md":"ede6ce06722fa6bc718ef44ba9605ef1ff4f0d13551dfb648f889c2d08826f01","src/lib.rs":"1bb896e8d6be4e0a344132cd3cbfd89b08a8ee84414be2151fe1ecbdba88cb6d","src/read_guard.rs":"ebe8f40501456a127dfe96625cb78ed3647489a9b570c0b527cc504a9b87a3e2","src/rw_lock.rs":"a5360aba83a03e25d7fee58b4e56ce8e18aaa360f6458a7b45b4a9af8fc85f4f","src/sys/mod.rs":"af808ccf3e9a2e480b2113915a9018bc5698b1156eec16ced69131ff22010a04","src/sys/unix/mod.rs":"af44a486cd53b0367b2466cf4e4240ad9ebfb77274ed7dd73a8b722be9f1fb0d","src/sys/unix/read_guard.rs":"debf4cbdbbbf5d1f31b2f420e7ef85cadb56d5d63b6be0101ff60970aa23af4d","src/sys/unix/rw_lock.rs":"695cf947892b4f6cf24ed80151d485edfc3ae48d1111df7e028f1590000ce1cd","src/sys/unix/write_guard.rs":"8b1249e51aba8e6812277856cb449e27433ff14c1e761c53e43a4fc81d79324d","src/sys/unsupported/mod.rs":"da50072981243d69b2f3cd43d0d314184d9fe32f4d1f83f9d65ffa56be591d35","src/sys/unsupported/read_guard.rs":"996e4137fd5f6a4ee586d3988f399c01886a4ff517caf605b0b15b15ec1d1921","src/sys/unsupported/rw_lock.rs":"0ab0291a20cd802099e9330140ad81778f60656185df1b3bd35b1aaabcd3476d","src/sys/unsupported/utils.rs":"c0c608a32b8686f4242d3639b8d490efcfbc2385910f369e1dac741fb173e83d","src/sys/unsupported/write_guard.rs":"b2c02e43c4a939370a65ec33b949246d4486118631e1178b79d8d8c83fc59d13","src/sys/windows/mod.rs":"299c760cfd51ac2905750b29ae9662fb5c637ad43edd7f0d738955d52002faa3","src/sys/windows/read_guard.rs":"7d11990c5f5e16305ee62dd305eeb94494649dcba83556035336934017382bc0","src/sys/windows/rw_lock.rs":"f7afca581d24eed33f1f5163ea66830a09201c4e72b0fefffe1b186433e7fa87","src/sys/windows/utils.rs":"908f71e686f835ccddfb338fdea22e56b58685a6b90036aea60bcfa693d19f39","src/sys/windows/write_guard.rs":"a1b31035ad8a02dc62a81101698e073c930222ce4108757530c352014274a7a3","src/write_guard.rs":"84126fcfe536f51c9fd97c86c4abf0dd55ff28a165652d75f78e546331590bee","tests/test.rs":"ccf921d67af1a2197077b5a4c37d87e096f97658e5d663b4e312e133d8b4b236"},"package":"ef033ed5e9bad94e55838ca0ca906db0e043f517adda0c8b79c7a8c66c93c1b5"} \ No newline at end of file
diff --git a/vendor/fd-lock/Cargo.toml b/vendor/fd-lock/Cargo.toml
index d995177bf..8d0b8f014 100644
--- a/vendor/fd-lock/Cargo.toml
+++ b/vendor/fd-lock/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2018"
name = "fd-lock"
-version = "3.0.11"
+version = "3.0.13"
authors = ["Yoshua Wuyts <yoshuawuyts@gmail.com>"]
description = "Advisory cross-platform lock on a file using a file descriptor to it."
documentation = "https://docs.rs/fd-lock"
@@ -41,11 +41,11 @@ version = "1.0.0"
version = "3.0.8"
[target."cfg(unix)".dependencies.rustix]
-version = "0.37.0"
+version = "0.38.0"
features = ["fs"]
[target."cfg(windows)".dependencies.windows-sys]
-version = "0.45.0"
+version = "0.48.0"
features = [
"Win32_Foundation",
"Win32_Storage_FileSystem",
diff --git a/vendor/flate2/.cargo-checksum.json b/vendor/flate2/.cargo-checksum.json
index e4f368733..be6b4dd18 100644
--- a/vendor/flate2/.cargo-checksum.json
+++ b/vendor/flate2/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"5b74a7b515d919a6daa450d673aca5b4a9e65d78883f4c59bf51ce9b5ac9d2dc","Cargo.toml":"abfa5f6669c976afea17a44d1c9249e0b3db8610322566083f48d4bfe33da10b","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","MAINTENANCE.md":"20ef2cb336c850d849652b110ec4806b71e69ed5dd50518a95eb9d453f8bf645","README.md":"a8fab33160befebe83eece4801f401da5932c0e1cca8e97a7ae4bce4aae1b061","examples/compress_file.rs":"cbdb8b0c556409b82f894ad5326babb6dba42c219d2d675927e7f5820053b295","examples/decompress_file.rs":"cd50dfbaccc905b3e02d6c50b26586196a682880203a8694343e0391799b70d5","examples/deflatedecoder-bufread.rs":"5b8abebce157f9b7cc3f6b5c90b9d533890a514e5f8d91bb43439f52fdc9ddce","examples/deflatedecoder-read.rs":"921e13031c5436494d8af0a8705a0adda2da536edefef2e1e311dffa8acd120f","examples/deflatedecoder-write.rs":"cfce37e8758c6d543dd130c7bdff571af3c8cd11bafcc933740107a3576832df","examples/deflateencoder-bufread.rs":"9fdd7d632d861f099d19a3ec1de539d9600f8004a119dd2a70f6aba5965b2e1c","examples/deflateencoder-read.rs":"8740a942ec7d07ccb4b57c5baac7a4d649817bffe4e37ce9a06c7d6d70378e4c","examples/deflateencoder-write.rs":"8e45425684b2368ef95f3704dce6f8077f38b9a90a38d147594c7c570f0d1c6c","examples/gzbuilder.rs":"d09c83417e4a01a8593ce3462a33340e6fe17fa51b4b0b3a6005b68959df4d8c","examples/gzdecoder-bufread.rs":"76880f3e6e10ed4a0bf564be9ddae1c50811aeabf61fb573039538b81805f390","examples/gzdecoder-read.rs":"d99e9a9ce03a27f280244a24e8f5a3282e5af15b455270d99c4bfecd19238d0d","examples/gzdecoder-write.rs":"d0a982377ca1d2fd1786bb32f16454b4f0afdba5e1c7f0ab97e15e8827d351d5","examples/gzencoder-bufread.rs":"760670c124b1c5776b63c300c7e8a1dcd5e0ae633017dcf2e3d2d6e997dcc9c4","examples/gzencoder-read.rs":"27ec68675418bb7d1a110b8d1f33e7b1069f42bcce6f21f8d9235bde405cdf9f","examples/gzencoder-write.rs":"f127f2e398231d03269770fa18ac5d465f8d56d283f1118055f04f1d03369c31","examples/gzmultidecoder-bufread.rs":"bfa6c5554c3da5a61a7d1e1dad115b7ee784d136e2ac61272c87ad3e1eb4ec4c","examples/gzmultidecoder-read.rs":"c058d5eee5bf45b38132f8e487a714c9521191c7dabe2459362d2f8de689c6bf","examples/hello_world.txt":"d2a84f4b8b650937ec8f73cd8be2c74add5a911ba64df27458ed8229da804a26","examples/hello_world.txt.gz":"8b4c5972b92b8ee8dc99116e278afb9165276ddb13c0d334c8da2770fd4d1f7d","examples/zlibdecoder-bufread.rs":"0f541ec64c635d45fc206a02718c0b90c49123a0441a95455d6a8a9e0d20e011","examples/zlibdecoder-read.rs":"bbd85b47b8b804c3294b3f23f978eaf6fb09a187cb46eb86ae1ae2790dfab8d9","examples/zlibdecoder-write.rs":"f347a831d7201d3efd604b006c88421fa2a5906c6377b47c7ae391d0809186e6","examples/zlibencoder-bufread.rs":"e0e05686ad4521ba18b742a5cbbc5937cec1fd8b9e8313070b32c6f178dfbaf6","examples/zlibencoder-read.rs":"4a3156dc73cd77e6ac56700680652be63a1270d95ce384ebcd5c014cce2d5179","examples/zlibencoder-write.rs":"822d4cd326ac7402ff8f828c1dbb3aa108c68a89fc04488da252ca6a74e624b0","src/bufreader.rs":"2d6a59330e8f838eb6474d19104f21cb98236125c189f36bdff75a069a4cea8f","src/crc.rs":"f02b9ffbedf06360c8164f98ecf51fe7f70c48cdb3bfc72e176421419c1de030","src/deflate/bufread.rs":"76af1e22d74571304f7a632751bf80ad946808ff516138696cc6b3d6c586529b","src/deflate/mod.rs":"d33ef6a3d502d599a4ba6ac99c6312b414002dba43c388d271fc1f8c9c609363","src/deflate/read.rs":"122632aff99207af0d998b0890bad44cbc68bb671dcf086cf35adae847175c66","src/deflate/write.rs":"fef4deebc0dc29d4ad481718613c694f6d1b733199e241a1f7f064e2707e4908","src/ffi/c.rs":"f564f9b27278e770006ffda9b078a6a9f5219ffd3fbbc9e315c27bc134b0c32f","src/ffi/mod.rs":"2b811be787e23654e56a1a5748f64f6b6953a829594aef9bdb8f223fe9a1bba9","src/ffi/rust.rs":"0a69aac9bd08728d212f503a16c0e7fb64a7822a7531bc3a96e78c89c09b6e80","src/gz/bufread.rs":"ff18bb9bb6564e45ee2b6dbf4c9dbfe72b25982cd26748b6121f9cab8a7b0dab","src/gz/mod.rs":"2cbcf00c6372d9dd383197bdeceec80dacc8d73d8d5ff44a05fa88040681c5cb","src/gz/read.rs":"68c79bcd34ff14e7572b2f9862f3fb12a26885986783180b7fdce77ae4fb9260","src/gz/write.rs":"78954929f24229875503ffdc04944924120c199fa502a0742e195cffcc135631","src/lib.rs":"9651a09ff275d464ff4865974797a6dc8f2f786225e159b6bd0dbbfd5afc0cef","src/mem.rs":"e563f95d7ab3343b4c86c968c8810b96d74d8cf7612818dd60cd1f6bc4f63eb3","src/zio.rs":"ed5f375f5d6c4f094dfdd43185c9af5e91d1129bfbfa31edc6902a1f7496920b","src/zlib/bufread.rs":"4ef683b9035720d19eec5f21f46f70b7d8eaf9385caddcfd9e48533c619cbb26","src/zlib/mod.rs":"18ea5785b913d90191c6ad8483f57d0c5f98599137659e72f3c0c78324b4f8fa","src/zlib/read.rs":"7dea75ca1dec5a2175b0f45fb2445a345fbe1d220cf4c599e25dece43c520271","src/zlib/write.rs":"5cb973ffb9fc0e6ee8f3cc4537d0b32f826dbe7c367723752d2db708af8831bb","tests/corrupt-gz-file.bin":"083dd284aa1621916a2d0f66ea048c8d3ba7a722b22d0d618722633f51e7d39c","tests/early-flush.rs":"9a4db8fcbac659c52cafe5e1ab647d86781cf8b1f298d8dee34223c0292e0d74","tests/empty-read.rs":"39143ff0383655bb115e995b2a953f11e82d0ac03b4bec080973be7c2d421054","tests/good-file.gz":"87296963e53024a74752179ce7e54087565d358a85d3e65c3b37ef36eaa3d4a6","tests/good-file.txt":"bc4e03658a441fe2ad2df7cd2197144b87e41696f01e327b380e869cd9b485a0","tests/gunzip.rs":"c00946db2147b23c4300c77fedf0a04e65c774101575e9828433831311416a50","tests/multi.gz":"efa3341da052f95056314cc6920e02a3da15bdef30234b2552fb407812db5cc6","tests/multi.txt":"dbea9325179efe46ea2add94f7b6b745ca983fabb208dc6d34aa064623d7ee23","tests/zero-write.rs":"cde1a675491d88e59a711103d3b0df4c77b60e8152b90d5a4f01b97879f8f8dc"},"package":"c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010"} \ No newline at end of file
+{"files":{"Cargo.lock":"2721de22957f2a734adfc7415f27f5219bab8c60dea870f8b1c2dbd30cc46c62","Cargo.toml":"b0c766bc094342b650ce071fe410f4446b6adbe4a776253b2d906ce68393209d","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","MAINTENANCE.md":"20ef2cb336c850d849652b110ec4806b71e69ed5dd50518a95eb9d453f8bf645","README.md":"a8fab33160befebe83eece4801f401da5932c0e1cca8e97a7ae4bce4aae1b061","examples/compress_file.rs":"cbdb8b0c556409b82f894ad5326babb6dba42c219d2d675927e7f5820053b295","examples/decompress_file.rs":"cd50dfbaccc905b3e02d6c50b26586196a682880203a8694343e0391799b70d5","examples/deflatedecoder-bufread.rs":"5b8abebce157f9b7cc3f6b5c90b9d533890a514e5f8d91bb43439f52fdc9ddce","examples/deflatedecoder-read.rs":"921e13031c5436494d8af0a8705a0adda2da536edefef2e1e311dffa8acd120f","examples/deflatedecoder-write.rs":"cfce37e8758c6d543dd130c7bdff571af3c8cd11bafcc933740107a3576832df","examples/deflateencoder-bufread.rs":"9fdd7d632d861f099d19a3ec1de539d9600f8004a119dd2a70f6aba5965b2e1c","examples/deflateencoder-read.rs":"8740a942ec7d07ccb4b57c5baac7a4d649817bffe4e37ce9a06c7d6d70378e4c","examples/deflateencoder-write.rs":"8e45425684b2368ef95f3704dce6f8077f38b9a90a38d147594c7c570f0d1c6c","examples/gzbuilder.rs":"d09c83417e4a01a8593ce3462a33340e6fe17fa51b4b0b3a6005b68959df4d8c","examples/gzdecoder-bufread.rs":"76880f3e6e10ed4a0bf564be9ddae1c50811aeabf61fb573039538b81805f390","examples/gzdecoder-read.rs":"d99e9a9ce03a27f280244a24e8f5a3282e5af15b455270d99c4bfecd19238d0d","examples/gzdecoder-write.rs":"d0a982377ca1d2fd1786bb32f16454b4f0afdba5e1c7f0ab97e15e8827d351d5","examples/gzencoder-bufread.rs":"760670c124b1c5776b63c300c7e8a1dcd5e0ae633017dcf2e3d2d6e997dcc9c4","examples/gzencoder-read.rs":"27ec68675418bb7d1a110b8d1f33e7b1069f42bcce6f21f8d9235bde405cdf9f","examples/gzencoder-write.rs":"f127f2e398231d03269770fa18ac5d465f8d56d283f1118055f04f1d03369c31","examples/gzmultidecoder-bufread.rs":"bfa6c5554c3da5a61a7d1e1dad115b7ee784d136e2ac61272c87ad3e1eb4ec4c","examples/gzmultidecoder-read.rs":"c058d5eee5bf45b38132f8e487a714c9521191c7dabe2459362d2f8de689c6bf","examples/hello_world.txt":"d2a84f4b8b650937ec8f73cd8be2c74add5a911ba64df27458ed8229da804a26","examples/hello_world.txt.gz":"8b4c5972b92b8ee8dc99116e278afb9165276ddb13c0d334c8da2770fd4d1f7d","examples/zlibdecoder-bufread.rs":"0f541ec64c635d45fc206a02718c0b90c49123a0441a95455d6a8a9e0d20e011","examples/zlibdecoder-read.rs":"bbd85b47b8b804c3294b3f23f978eaf6fb09a187cb46eb86ae1ae2790dfab8d9","examples/zlibdecoder-write.rs":"f347a831d7201d3efd604b006c88421fa2a5906c6377b47c7ae391d0809186e6","examples/zlibencoder-bufread.rs":"e0e05686ad4521ba18b742a5cbbc5937cec1fd8b9e8313070b32c6f178dfbaf6","examples/zlibencoder-read.rs":"4a3156dc73cd77e6ac56700680652be63a1270d95ce384ebcd5c014cce2d5179","examples/zlibencoder-write.rs":"822d4cd326ac7402ff8f828c1dbb3aa108c68a89fc04488da252ca6a74e624b0","src/bufreader.rs":"2d6a59330e8f838eb6474d19104f21cb98236125c189f36bdff75a069a4cea8f","src/crc.rs":"f02b9ffbedf06360c8164f98ecf51fe7f70c48cdb3bfc72e176421419c1de030","src/deflate/bufread.rs":"49b3d3414343811f96f2ce66bf4db2cf02770986ac500368722111060c4de8b1","src/deflate/mod.rs":"d33ef6a3d502d599a4ba6ac99c6312b414002dba43c388d271fc1f8c9c609363","src/deflate/read.rs":"57f7a9609a111e88fb079188fdc0a79e1e20d97d363bd133f134ad11049220e0","src/deflate/write.rs":"fef4deebc0dc29d4ad481718613c694f6d1b733199e241a1f7f064e2707e4908","src/ffi/c.rs":"9a5648a29a534945244376777c41f9b4f100679ebc2ba3016c7e698181fb5cbf","src/ffi/mod.rs":"2b811be787e23654e56a1a5748f64f6b6953a829594aef9bdb8f223fe9a1bba9","src/ffi/rust.rs":"0a69aac9bd08728d212f503a16c0e7fb64a7822a7531bc3a96e78c89c09b6e80","src/gz/bufread.rs":"fd87b3600af9f22b52aa5e9e6f5636ade64573042f852158584234c2895b35f7","src/gz/mod.rs":"c3449201bd4bad2e4289f4cd1081a4be4505e7d9e8fee5a2838248bf979ef9f0","src/gz/read.rs":"4956e0dbe921810e88f86623c28c74f62aa3b0f36a4461a9dbaeabb2d77ef5bb","src/gz/write.rs":"78954929f24229875503ffdc04944924120c199fa502a0742e195cffcc135631","src/lib.rs":"9651a09ff275d464ff4865974797a6dc8f2f786225e159b6bd0dbbfd5afc0cef","src/mem.rs":"9ef7db386d178ef6426877d2b459165e42757b17ea01bd750e26b74f5691e97a","src/zio.rs":"ed5f375f5d6c4f094dfdd43185c9af5e91d1129bfbfa31edc6902a1f7496920b","src/zlib/bufread.rs":"9284cb80c00ff8e78f2845c1a2911a99c99745b1558085d5f42e26520ff011be","src/zlib/mod.rs":"18ea5785b913d90191c6ad8483f57d0c5f98599137659e72f3c0c78324b4f8fa","src/zlib/read.rs":"4a06d07ea137390efd823554afed7d05a8acfc3ab4f5a5382202030380281f23","src/zlib/write.rs":"5cb973ffb9fc0e6ee8f3cc4537d0b32f826dbe7c367723752d2db708af8831bb","tests/corrupt-gz-file.bin":"083dd284aa1621916a2d0f66ea048c8d3ba7a722b22d0d618722633f51e7d39c","tests/early-flush.rs":"9a4db8fcbac659c52cafe5e1ab647d86781cf8b1f298d8dee34223c0292e0d74","tests/empty-read.rs":"39143ff0383655bb115e995b2a953f11e82d0ac03b4bec080973be7c2d421054","tests/good-file.gz":"87296963e53024a74752179ce7e54087565d358a85d3e65c3b37ef36eaa3d4a6","tests/good-file.txt":"bc4e03658a441fe2ad2df7cd2197144b87e41696f01e327b380e869cd9b485a0","tests/gunzip.rs":"c00946db2147b23c4300c77fedf0a04e65c774101575e9828433831311416a50","tests/multi.gz":"efa3341da052f95056314cc6920e02a3da15bdef30234b2552fb407812db5cc6","tests/multi.txt":"dbea9325179efe46ea2add94f7b6b745ca983fabb208dc6d34aa064623d7ee23","tests/zero-write.rs":"cde1a675491d88e59a711103d3b0df4c77b60e8152b90d5a4f01b97879f8f8dc"},"package":"46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"} \ No newline at end of file
diff --git a/vendor/flate2/Cargo.lock b/vendor/flate2/Cargo.lock
index f4aa76087..ee16dc6a5 100644
--- a/vendor/flate2/Cargo.lock
+++ b/vendor/flate2/Cargo.lock
@@ -49,7 +49,7 @@ dependencies = [
[[package]]
name = "flate2"
-version = "1.0.27"
+version = "1.0.28"
dependencies = [
"cloudflare-zlib-sys",
"crc32fast",
diff --git a/vendor/flate2/Cargo.toml b/vendor/flate2/Cargo.toml
index f37e09968..c7b2e8373 100644
--- a/vendor/flate2/Cargo.toml
+++ b/vendor/flate2/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2018"
name = "flate2"
-version = "1.0.27"
+version = "1.0.28"
authors = [
"Alex Crichton <alex@alexcrichton.com>",
"Josh Triplett <josh@joshtriplett.org>",
diff --git a/vendor/flate2/src/deflate/bufread.rs b/vendor/flate2/src/deflate/bufread.rs
index e375952d0..c70a63031 100644
--- a/vendor/flate2/src/deflate/bufread.rs
+++ b/vendor/flate2/src/deflate/bufread.rs
@@ -7,9 +7,10 @@ use crate::{Compress, Decompress};
/// A DEFLATE encoder, or compressor.
///
-/// This structure consumes a [`BufRead`] interface, reading uncompressed data
-/// from the underlying reader, and emitting compressed data.
+/// This structure implements a [`Read`] interface. When read from, it reads
+/// uncompressed data from the underlying [`BufRead`] and provides the compressed data.
///
+/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
/// [`BufRead`]: https://doc.rust-lang.org/std/io/trait.BufRead.html
///
/// # Examples
@@ -123,9 +124,10 @@ impl<W: BufRead + Write> Write for DeflateEncoder<W> {
/// A DEFLATE decoder, or decompressor.
///
-/// This structure consumes a [`BufRead`] interface, reading compressed data
-/// from the underlying reader, and emitting uncompressed data.
+/// This structure implements a [`Read`] interface. When read from, it reads
+/// compressed data from the underlying [`BufRead`] and provides the uncompressed data.
///
+/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
/// [`BufRead`]: https://doc.rust-lang.org/std/io/trait.BufRead.html
///
/// # Examples
diff --git a/vendor/flate2/src/deflate/read.rs b/vendor/flate2/src/deflate/read.rs
index 5937e6f64..2b6b8f2f7 100644
--- a/vendor/flate2/src/deflate/read.rs
+++ b/vendor/flate2/src/deflate/read.rs
@@ -6,8 +6,8 @@ use crate::bufreader::BufReader;
/// A DEFLATE encoder, or compressor.
///
-/// This structure implements a [`Read`] interface and will read uncompressed
-/// data from an underlying stream and emit a stream of compressed data.
+/// This structure implements a [`Read`] interface. When read from, it reads
+/// uncompressed data from the underlying [`Read`] and provides the compressed data.
///
/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
///
@@ -120,8 +120,8 @@ impl<W: Read + Write> Write for DeflateEncoder<W> {
/// A DEFLATE decoder, or decompressor.
///
-/// This structure implements a [`Read`] interface and takes a stream of
-/// compressed data as input, providing the decompressed data when read from.
+/// This structure implements a [`Read`] interface. When read from, it reads
+/// compressed data from the underlying [`Read`] and provides the uncompressed data.
///
/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
///
diff --git a/vendor/flate2/src/ffi/c.rs b/vendor/flate2/src/ffi/c.rs
index 48acd438c..32864f8f9 100644
--- a/vendor/flate2/src/ffi/c.rs
+++ b/vendor/flate2/src/ffi/c.rs
@@ -226,6 +226,12 @@ impl InflateBackend for Inflate {
self.inner.total_in += (raw.next_in as usize - input.as_ptr() as usize) as u64;
self.inner.total_out += (raw.next_out as usize - output.as_ptr() as usize) as u64;
+ // reset these pointers so we don't accidentally read them later
+ raw.next_in = ptr::null_mut();
+ raw.avail_in = 0;
+ raw.next_out = ptr::null_mut();
+ raw.avail_out = 0;
+
match rc {
MZ_DATA_ERROR | MZ_STREAM_ERROR => mem::decompress_failed(self.inner.msg()),
MZ_OK => Ok(Status::Ok),
@@ -314,6 +320,12 @@ impl DeflateBackend for Deflate {
self.inner.total_in += (raw.next_in as usize - input.as_ptr() as usize) as u64;
self.inner.total_out += (raw.next_out as usize - output.as_ptr() as usize) as u64;
+ // reset these pointers so we don't accidentally read them later
+ raw.next_in = ptr::null_mut();
+ raw.avail_in = 0;
+ raw.next_out = ptr::null_mut();
+ raw.avail_out = 0;
+
match rc {
MZ_OK => Ok(Status::Ok),
MZ_BUF_ERROR => Ok(Status::BufError),
diff --git a/vendor/flate2/src/gz/bufread.rs b/vendor/flate2/src/gz/bufread.rs
index 6fc48bcdd..679b4a7de 100644
--- a/vendor/flate2/src/gz/bufread.rs
+++ b/vendor/flate2/src/gz/bufread.rs
@@ -19,10 +19,10 @@ fn copy(into: &mut [u8], from: &[u8], pos: &mut usize) -> usize {
/// A gzip streaming encoder
///
-/// This structure exposes a [`BufRead`] interface that will read uncompressed data
-/// from the underlying reader and expose the compressed version as a [`BufRead`]
-/// interface.
+/// This structure implements a [`Read`] interface. When read from, it reads
+/// uncompressed data from the underlying [`BufRead`] and provides the compressed data.
///
+/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
/// [`BufRead`]: https://doc.rust-lang.org/std/io/trait.BufRead.html
///
/// # Examples
@@ -165,8 +165,8 @@ impl<R: BufRead + Write> Write for GzEncoder<R> {
/// A decoder for a single member of a [gzip file].
///
-/// This structure exposes a [`BufRead`] interface, reading compressed data
-/// from the underlying reader, and emitting uncompressed data.
+/// This structure implements a [`Read`] interface. When read from, it reads
+/// compressed data from the underlying [`BufRead`] and provides the uncompressed data.
///
/// After reading a single member of the gzip data this reader will return
/// Ok(0) even if there are more bytes available in the underlying reader.
@@ -178,6 +178,7 @@ impl<R: BufRead + Write> Write for GzEncoder<R> {
/// [in the introduction](../index.html#about-multi-member-gzip-files).
///
/// [gzip file]: https://www.rfc-editor.org/rfc/rfc1952#page-5
+/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
/// [`BufRead`]: https://doc.rust-lang.org/std/io/trait.BufRead.html
///
/// # Examples
@@ -351,8 +352,8 @@ impl<R: BufRead + Write> Write for GzDecoder<R> {
/// A gzip streaming decoder that decodes a [gzip file] that may have multiple members.
///
-/// This structure exposes a [`BufRead`] interface that will consume compressed
-/// data from the underlying reader and emit uncompressed data.
+/// This structure implements a [`Read`] interface. When read from, it reads
+/// compressed data from the underlying [`BufRead`] and provides the uncompressed data.
///
/// A gzip file consists of a series of *members* concatenated one after another.
/// MultiGzDecoder decodes all members from the data and only returns Ok(0) when the
@@ -362,6 +363,7 @@ impl<R: BufRead + Write> Write for GzDecoder<R> {
/// [in the introduction](../index.html#about-multi-member-gzip-files).
///
/// [gzip file]: https://www.rfc-editor.org/rfc/rfc1952#page-5
+/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
/// [`BufRead`]: https://doc.rust-lang.org/std/io/trait.BufRead.html
///
/// # Examples
diff --git a/vendor/flate2/src/gz/mod.rs b/vendor/flate2/src/gz/mod.rs
index e8e05c6eb..31a696116 100644
--- a/vendor/flate2/src/gz/mod.rs
+++ b/vendor/flate2/src/gz/mod.rs
@@ -87,7 +87,7 @@ impl GzHeader {
}
}
-#[derive(Debug, Default)]
+#[derive(Debug)]
pub enum GzHeaderState {
Start(u8, [u8; 10]),
Xlen(Option<Box<Crc>>, u8, [u8; 2]),
@@ -95,10 +95,15 @@ pub enum GzHeaderState {
Filename(Option<Box<Crc>>),
Comment(Option<Box<Crc>>),
Crc(Option<Box<Crc>>, u8, [u8; 2]),
- #[default]
Complete,
}
+impl Default for GzHeaderState {
+ fn default() -> Self {
+ Self::Complete
+ }
+}
+
#[derive(Debug, Default)]
pub struct GzHeaderParser {
state: GzHeaderState,
diff --git a/vendor/flate2/src/gz/read.rs b/vendor/flate2/src/gz/read.rs
index 5a65526ce..9dbadbda7 100644
--- a/vendor/flate2/src/gz/read.rs
+++ b/vendor/flate2/src/gz/read.rs
@@ -8,9 +8,8 @@ use crate::Compression;
/// A gzip streaming encoder
///
-/// This structure exposes a [`Read`] interface that will read uncompressed data
-/// from the underlying reader and expose the compressed version as a [`Read`]
-/// interface.
+/// This structure implements a [`Read`] interface. When read from, it reads
+/// uncompressed data from the underlying [`Read`] and provides the compressed data.
///
/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
///
@@ -92,8 +91,8 @@ impl<R: Read + Write> Write for GzEncoder<R> {
/// A decoder for a single member of a [gzip file].
///
-/// This structure exposes a [`Read`] interface that will consume compressed
-/// data from the underlying reader and emit uncompressed data.
+/// This structure implements a [`Read`] interface. When read from, it reads
+/// compressed data from the underlying [`Read`] and provides the uncompressed data.
///
/// After reading a single member of the gzip data this reader will return
/// Ok(0) even if there are more bytes available in the underlying reader.
@@ -201,8 +200,9 @@ impl<R: Read + Write> Write for GzDecoder<R> {
/// A gzip streaming decoder that decodes a [gzip file] that may have multiple members.
///
-/// This structure exposes a [`Read`] interface that will consume compressed
-/// data from the underlying reader and emit uncompressed data.
+/// This structure implements a [`Read`] interface. When read from, it reads
+/// compressed data from the underlying [`Read`] and provides the uncompressed
+/// data.
///
/// A gzip file consists of a series of *members* concatenated one after another.
/// MultiGzDecoder decodes all members of a file and returns Ok(0) once the
diff --git a/vendor/flate2/src/mem.rs b/vendor/flate2/src/mem.rs
index 6313c220d..d4a509179 100644
--- a/vendor/flate2/src/mem.rs
+++ b/vendor/flate2/src/mem.rs
@@ -1,7 +1,6 @@
use std::error::Error;
use std::fmt;
use std::io;
-use std::slice;
use crate::ffi::{self, Backend, Deflate, DeflateBackend, ErrorMessage, Inflate, InflateBackend};
use crate::Compression;
@@ -342,19 +341,12 @@ impl Compress {
output: &mut Vec<u8>,
flush: FlushCompress,
) -> Result<Status, CompressError> {
- let cap = output.capacity();
- let len = output.len();
-
- unsafe {
+ write_to_spare_capacity_of_vec(output, |out| {
let before = self.total_out();
- let ret = {
- let ptr = output.as_mut_ptr().add(len);
- let out = slice::from_raw_parts_mut(ptr, cap - len);
- self.compress(input, out, flush)
- };
- output.set_len((self.total_out() - before) as usize + len);
- ret
- }
+ let ret = self.compress(input, out, flush);
+ let bytes_written = self.total_out() - before;
+ (bytes_written as usize, ret)
+ })
}
}
@@ -473,19 +465,12 @@ impl Decompress {
output: &mut Vec<u8>,
flush: FlushDecompress,
) -> Result<Status, DecompressError> {
- let cap = output.capacity();
- let len = output.len();
-
- unsafe {
+ write_to_spare_capacity_of_vec(output, |out| {
let before = self.total_out();
- let ret = {
- let ptr = output.as_mut_ptr().add(len);
- let out = slice::from_raw_parts_mut(ptr, cap - len);
- self.decompress(input, out, flush)
- };
- output.set_len((self.total_out() - before) as usize + len);
- ret
- }
+ let ret = self.decompress(input, out, flush);
+ let bytes_written = self.total_out() - before;
+ (bytes_written as usize, ret)
+ })
}
/// Specifies the decompression dictionary to use.
@@ -574,6 +559,29 @@ impl fmt::Display for CompressError {
}
}
+/// Allows `writer` to write data into the spare capacity of the `output` vector.
+/// This will not reallocate the vector provided or attempt to grow it, so space
+/// for the `output` must be reserved by the caller before calling this
+/// function.
+///
+/// `writer` needs to return the number of bytes written (and can also return
+/// another arbitrary return value).
+fn write_to_spare_capacity_of_vec<T>(
+ output: &mut Vec<u8>,
+ writer: impl FnOnce(&mut [u8]) -> (usize, T),
+) -> T {
+ let cap = output.capacity();
+ let len = output.len();
+
+ output.resize(output.capacity(), 0);
+ let (bytes_written, ret) = writer(&mut output[len..]);
+
+ let new_len = core::cmp::min(len + bytes_written, cap); // Sanitizes `bytes_written`.
+ output.resize(new_len, 0 /* unused */);
+
+ ret
+}
+
#[cfg(test)]
mod tests {
use std::io::Write;
diff --git a/vendor/flate2/src/zlib/bufread.rs b/vendor/flate2/src/zlib/bufread.rs
index aa8af64f8..85bbd38a6 100644
--- a/vendor/flate2/src/zlib/bufread.rs
+++ b/vendor/flate2/src/zlib/bufread.rs
@@ -7,9 +7,10 @@ use crate::{Compress, Decompress};
/// A ZLIB encoder, or compressor.
///
-/// This structure consumes a [`BufRead`] interface, reading uncompressed data
-/// from the underlying reader, and emitting compressed data.
+/// This structure implements a [`Read`] interface. When read from, it reads
+/// uncompressed data from the underlying [`BufRead`] and provides the compressed data.
///
+/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
/// [`BufRead`]: https://doc.rust-lang.org/std/io/trait.BufRead.html
///
/// # Examples
@@ -128,9 +129,10 @@ impl<R: BufRead + Write> Write for ZlibEncoder<R> {
/// A ZLIB decoder, or decompressor.
///
-/// This structure consumes a [`BufRead`] interface, reading compressed data
-/// from the underlying reader, and emitting uncompressed data.
+/// This structure implements a [`Read`] interface. When read from, it reads
+/// compressed data from the underlying [`BufRead`] and provides the uncompressed data.
///
+/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
/// [`BufRead`]: https://doc.rust-lang.org/std/io/trait.BufRead.html
///
/// # Examples
diff --git a/vendor/flate2/src/zlib/read.rs b/vendor/flate2/src/zlib/read.rs
index fbae74867..3b41ae6c1 100644
--- a/vendor/flate2/src/zlib/read.rs
+++ b/vendor/flate2/src/zlib/read.rs
@@ -7,8 +7,8 @@ use crate::Decompress;
/// A ZLIB encoder, or compressor.
///
-/// This structure implements a [`Read`] interface and will read uncompressed
-/// data from an underlying stream and emit a stream of compressed data.
+/// This structure implements a [`Read`] interface. When read from, it reads
+/// uncompressed data from the underlying [`Read`] and provides the compressed data.
///
/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
///
@@ -126,8 +126,8 @@ impl<W: Read + Write> Write for ZlibEncoder<W> {
/// A ZLIB decoder, or decompressor.
///
-/// This structure implements a [`Read`] interface and takes a stream of
-/// compressed data as input, providing the decompressed data when read from.
+/// This structure implements a [`Read`] interface. When read from, it reads
+/// compressed data from the underlying [`Read`] and provides the uncompressed data.
///
/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
///
diff --git a/vendor/git2/.cargo-checksum.json b/vendor/git2/.cargo-checksum.json
index 77b4a2171..2470bc6ff 100644
--- a/vendor/git2/.cargo-checksum.json
+++ b/vendor/git2/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"a9cd75f1c05b4e96d0e8df5a1f78a2f78b28396fa6dd9f79568ad2397352a3b6","CONTRIBUTING.md":"906cd099f712ba8a4050899e1db5cc242027122421e3cb9e3ba919b597323925","Cargo.lock":"a4fe8c67b4bb94f77083300233e4695bc7fcf229ad14e034917c1f7826a2f324","Cargo.toml":"4fcbd97a84a6963402b81f357c6241cfc242adf6551ce091f21b1bab91bc8d96","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"956299bbdecc2738553fad067bcb23b66d8f2f197b2827aa44d8d132cafd6a4d","ci/publish.sh":"8588ad2974afd40b934b7bf5b0849579567a72b89be89dc051089d1ba66439b2","examples/add.rs":"a9903f7a1af1b199783099509de3b640a3d039e9ad0b8c752c908e7fedf59b88","examples/blame.rs":"b59dc1daff18dee256038ea5e66c478678e51df1aacd20325f01d4e270fe3f20","examples/cat-file.rs":"93da1bf8891e43c308390e02f3c32106fcc085755e7f3e184d58aa2288c30cf4","examples/clone.rs":"822e6dac8f71877e8966ab72d3896dc82dfd7b525dbd54b1867964c2a9b241fd","examples/diff.rs":"0c182b4658354b01435d77c2f0c60851e1a09b469fce80062f92a17b6fd813ba","examples/fetch.rs":"a34826b1f4448b688313b0322c951401e19b62c8f6cf28d06251bd148d842128","examples/init.rs":"3a88038e2e6eb1ff555db5cec0beff466ee500de03eaa075af3a5920d59db81b","examples/log.rs":"ea825b4b3c1410e7c14832ca87e4c1f291b5f8f83c527672be8d61d188326a16","examples/ls-remote.rs":"9e1d2fb2441c535f8abc5f1d146dd1d499e518f583baaae99b5234195153cf82","examples/pull.rs":"6c6043caecc73629423d59a8fe9f80a1d4ddb2cd158779ea113c38a8cc6bdf6a","examples/rev-list.rs":"2e18eea067c0d684dd89f6d86b4ddb052a3d594471b17eddfac9d0c18f64ae67","examples/rev-parse.rs":"125e80a916a3476d894aa555e2b780a8cf1316a0b5b850b9918b3c1af5c00dd4","examples/status.rs":"89ec5127e44123afaf429233c885cd547d7a28670512bf87c30770eba615e061","examples/tag.rs":"881ba5797fe5133c6321927518198c3ad42dd81499b57e9f32df590505b49d17","src/apply.rs":"1ca5b0c06b96cd0af13dc322bf858e375a50f76d887c61052115ea8af2245847","src/attr.rs":"bc1957f495cf3aed4a663b50b43dd8deee6770ab259283673a883ac3c66908a7","src/blame.rs":"87cefd39c2bbb6fc7f9ecb549d44541f44ce61505a92368a93378b81df0b3c22","src/blob.rs":"7cb0326521dec9548a05c155283495c33f629678d9f7263e9de500c32052fb74","src/branch.rs":"1afa850c4c3a22531baddf5636bf55c9122a76b0d010e8392fbf04f1b76067ed","src/buf.rs":"d4d9795afc04eba6eb6a08c5dbcbc8e3e8341adc11701c65198d514f6cdfbac0","src/build.rs":"a4e2e7074b395ca1d4c085667aee565b66b20fd739ea69d9c5a31e8261588043","src/call.rs":"e5d3c59df621224c44f8caf8bd71997c33306ba251fbb58f411020377b1bc354","src/cert.rs":"6e8a78340cb8b3908977892d6d1723cebe70ff63819b28a63688e0fb4428b859","src/cherrypick.rs":"1ce882b6be825243d5551f11e1f48f53acc4aa52c4c5fb5510e69fd077a512bc","src/commit.rs":"0cb8fde0fedc3ca2b21fa8d13746e005f56b848c87e5031e316f3cdda77d3859","src/config.rs":"1109a50de982d4796605abe143a5844dc312c58379e05ad7d790d5cc8f4cd186","src/cred.rs":"25ce633857cb7a3c57fa5d677b65759f54cd683d01ade64901d59d04d783e1a6","src/describe.rs":"3adb68b3118bfa18c09f7ca767afa38d76e22130b1cebf20cc3b97c9a198957a","src/diff.rs":"bd6b0397847f1b3f3d5e268371d75c83ec3b8948d461d52227aeebe7f10241ec","src/email.rs":"b95f32739a2adac55016e892d913fb4b03d10c0583569a613f6c13946238759d","src/error.rs":"cd72f5f51d0c76f6bddd5d0f9e4d4e4190b40e15cebc3627fca2ba8f293964a4","src/index.rs":"1f34cbc31ecb7d536f4138a2c4a35d9e24703c4d78575e4528c7bdf78c30e87c","src/indexer.rs":"36221447975f235abbe53135166ea4bc6833a2835a7e343271fd9bdf45af0421","src/lib.rs":"a3342ad4e7ef297902f97c69ab4469eb22097ac9ce1f55bbd9669477b24e6388","src/mailmap.rs":"a034b1c86c8a8d4362939e2e2c1d0b1b2f5c71bac883b2b1b65b64078c70349e","src/mempack.rs":"8549f984360ac12868018e4f107a60386474c58cfb6c41993cbb0a820bd28908","src/merge.rs":"681f2f1e59cec49a8618a894e22645915e8f8a815a71d4ca7c6ab10fbdaeb919","src/message.rs":"ba445c543e2637b07c995ebc7a4f7b3c352061e2fecb83f9d95fce9c24f95d6c","src/note.rs":"55b286c3736833432d391184136f0fb0928e337990d1558166e2d998dc63f0dd","src/object.rs":"8b66f1c34570b37d204d0b3f626edbdd0baa7eb9734e3e444b72bf3e8fc46a27","src/odb.rs":"7088257f15b5c86774a62dc0dc42ac939348077eed7db8b3b6919aaea836c27b","src/oid.rs":"dc284f1523b3109e9721165289adcd820733fe72d5807f7739d307c2f88d2006","src/oid_array.rs":"4820657a5d4460a77a31fe0ba04c5575f6900a1767925a40464fadcacaf6a066","src/opts.rs":"7fe4baf924712816f2c7e51543820094e714e2b564dfc0450a885a6f8e218107","src/packbuilder.rs":"649246626d600f7d023e73ab3e3d4ca691d482d85de11338f3c5cea66f7f84ee","src/panic.rs":"62ef0684379f4cdebf9477e2f63c9f0ecc80fe608de2df32bca13ce0086249d6","src/patch.rs":"740fa2a29148605e3dac16f58fd603b408283cfe148b922fbe6b5a5d62f18db0","src/pathspec.rs":"3a98f924094c5f85c3b5dfed7dc271324f46a4ef82de78af3677f058e149784c","src/proxy_options.rs":"cfa029317ae00a15074d4fd5de5d7c8da982459b915399c1d6010ddbee43ab28","src/push_update.rs":"af8108cdbac8c5c22811c1063a2c4706070b4f4e69ac4151ab84963f04dbaaca","src/rebase.rs":"179fc17e402d902300de8d37a65ceb0c29d6e8f4ba50cc8b7a7d8b09cfe9ef55","src/reference.rs":"3f2def9ea8a16c36685f71324bcb99d325161cfc59b844ac4d5387408d0ef0a8","src/reflog.rs":"b13ed72912f5375996b9ffb3a415371ae6c220de5a01226b13ca04fe97692f77","src/refspec.rs":"5107582963524fe9ff312a280232dba08d25be06fdf8f278c0bbfdbfa7a50402","src/remote.rs":"54c6443a0a1bd0c0fd1df332475012ae77c1b4375c03fe6ec3a9af989e06ef79","src/remote_callbacks.rs":"338ae362638084592697783e39996a37061e0ef88dbb9e81a56459b0e0c27190","src/repo.rs":"6c7d8b0b74876aa9325be2df563f39704a04eeb9745045ae6a82d890bee332a7","src/revert.rs":"b51dd98a9775e80dfd56b2fe13737e15baf64d3ac9c56546b2bbdfd53d1de7f9","src/revspec.rs":"29df0754775603ed1189bbe28f933f5851d50936eda380a57f175ec35496d637","src/revwalk.rs":"5b792871595ddd2bbc259de7d52174087ca34080c31fd907e23704001d7f4c61","src/signature.rs":"5ff7a60deb1a449679835edf7a1fae730a85973483ca24f6fc15cbd146429d00","src/stash.rs":"641da998fff3a23fa733c81c09f6c62f4af2fc694fec1670de1cc433e4f946b4","src/status.rs":"13712d5a07780fde16286fa897b965e2bf7881ed64468ebed1bbf9380f7c2a91","src/string_array.rs":"04501c0ca8440ec4460cc89a1c7f004dda027f8f0dc9b94a0f372a2391328d65","src/submodule.rs":"1d41cafa2523fdf4d8aae7d5dc38647c6062586d0ee1d91bc99be5d87ec6b2ee","src/tag.rs":"b7292fc74485950acfc484d4542d8a1bd135b957f0ad9c70e92762b805d73cd3","src/tagforeach.rs":"04ea7ff4072a270c5febaee8133ae93040eb81a139ed987238e0b500e9626c4c","src/test.rs":"74c34ed48ff74bdcf3f92d8d44ba15d2b3bc0960847c6839e7c9d2e9c4518369","src/time.rs":"7fd2bcdda9baf24c6292edd04be6112c83a57e8f9e566d6d219563ad98c12203","src/tracing.rs":"6c2ecd839cbbdc70efea854fa8a19eb8700f3450f46f7ba8ab9b280e194700b8","src/transaction.rs":"6bb080f30646b5b3f22ac37f61945e58ce823944248e97fc58389cc8ca6c5895","src/transport.rs":"6505ed35be2a2bf7893fc3ee2d1a21bd2984fda5a350bd8ee3dd08ffac484a42","src/tree.rs":"1d126a0dcdad422074068f93180b4d9430b1e6440f82a1922f7d58563dd27500","src/treebuilder.rs":"b04a16cd22e40f6c2e4d26d4ce343a2853e943474080e95b0e2250a5961e6c1d","src/util.rs":"5ea4d156845e62d167d2885c76ba9f623944939464b9e372bb4172656ec7e08b","src/version.rs":"bcc26c9dcc5bf872afd0741233f07981df0a4be28faeba9ad52eb437961eb30f","src/worktree.rs":"eb2fbc678e7beb456720b9bec18189b0ba668335d93dad589170c11e52cbd558","tests/add_extensions.rs":"af6c4e7e3d1e84fa5e64a958fa93de5b9e0f913f9b5baaf46ea14a4d0c49e935","tests/get_extensions.rs":"a317ebd1b947bb72001b7fec7a0babd21fa6f28061852d4f495a029252f569db","tests/global_state.rs":"c75947eca9718277da08722ca9a58d9b4154b36b1aca6453bb198238c17904ce","tests/remove_extensions.rs":"9eca08d8781bda478365bf79f52276c3083f49e41cccbac7e779d4f54e894265"},"package":"12ef350ba88a33b4d524b1d1c79096c9ade5ef8c59395df0e60d1e1889414c0e"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"98f4961074ea029211bd998c73503f58de55aafa6751a0411996a3eae63b4ccd","CONTRIBUTING.md":"906cd099f712ba8a4050899e1db5cc242027122421e3cb9e3ba919b597323925","Cargo.lock":"7af1c845b4a7b0401f35ef53183498fde2b4b42b7f3c86aa435ef9cf5b58f14d","Cargo.toml":"9f17f23b7d99fdec3362036a5396529495fe5dda50bdf44dc0100863332ff761","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"4776fc2032b7cf4aed2370371f0e48b2c7e53f92ed60182ef384dd9e3f463dff","ci/publish.sh":"8588ad2974afd40b934b7bf5b0849579567a72b89be89dc051089d1ba66439b2","examples/add.rs":"a9903f7a1af1b199783099509de3b640a3d039e9ad0b8c752c908e7fedf59b88","examples/blame.rs":"b59dc1daff18dee256038ea5e66c478678e51df1aacd20325f01d4e270fe3f20","examples/cat-file.rs":"93da1bf8891e43c308390e02f3c32106fcc085755e7f3e184d58aa2288c30cf4","examples/clone.rs":"822e6dac8f71877e8966ab72d3896dc82dfd7b525dbd54b1867964c2a9b241fd","examples/diff.rs":"0c182b4658354b01435d77c2f0c60851e1a09b469fce80062f92a17b6fd813ba","examples/fetch.rs":"a34826b1f4448b688313b0322c951401e19b62c8f6cf28d06251bd148d842128","examples/init.rs":"3a88038e2e6eb1ff555db5cec0beff466ee500de03eaa075af3a5920d59db81b","examples/log.rs":"ea825b4b3c1410e7c14832ca87e4c1f291b5f8f83c527672be8d61d188326a16","examples/ls-remote.rs":"9e1d2fb2441c535f8abc5f1d146dd1d499e518f583baaae99b5234195153cf82","examples/pull.rs":"6c6043caecc73629423d59a8fe9f80a1d4ddb2cd158779ea113c38a8cc6bdf6a","examples/rev-list.rs":"2e18eea067c0d684dd89f6d86b4ddb052a3d594471b17eddfac9d0c18f64ae67","examples/rev-parse.rs":"125e80a916a3476d894aa555e2b780a8cf1316a0b5b850b9918b3c1af5c00dd4","examples/status.rs":"89ec5127e44123afaf429233c885cd547d7a28670512bf87c30770eba615e061","examples/tag.rs":"881ba5797fe5133c6321927518198c3ad42dd81499b57e9f32df590505b49d17","src/apply.rs":"1ca5b0c06b96cd0af13dc322bf858e375a50f76d887c61052115ea8af2245847","src/attr.rs":"bc1957f495cf3aed4a663b50b43dd8deee6770ab259283673a883ac3c66908a7","src/blame.rs":"87cefd39c2bbb6fc7f9ecb549d44541f44ce61505a92368a93378b81df0b3c22","src/blob.rs":"7cb0326521dec9548a05c155283495c33f629678d9f7263e9de500c32052fb74","src/branch.rs":"1afa850c4c3a22531baddf5636bf55c9122a76b0d010e8392fbf04f1b76067ed","src/buf.rs":"d4d9795afc04eba6eb6a08c5dbcbc8e3e8341adc11701c65198d514f6cdfbac0","src/build.rs":"a4e2e7074b395ca1d4c085667aee565b66b20fd739ea69d9c5a31e8261588043","src/call.rs":"e5d3c59df621224c44f8caf8bd71997c33306ba251fbb58f411020377b1bc354","src/cert.rs":"6e8a78340cb8b3908977892d6d1723cebe70ff63819b28a63688e0fb4428b859","src/cherrypick.rs":"1ce882b6be825243d5551f11e1f48f53acc4aa52c4c5fb5510e69fd077a512bc","src/commit.rs":"0cb8fde0fedc3ca2b21fa8d13746e005f56b848c87e5031e316f3cdda77d3859","src/config.rs":"1109a50de982d4796605abe143a5844dc312c58379e05ad7d790d5cc8f4cd186","src/cred.rs":"25ce633857cb7a3c57fa5d677b65759f54cd683d01ade64901d59d04d783e1a6","src/describe.rs":"3adb68b3118bfa18c09f7ca767afa38d76e22130b1cebf20cc3b97c9a198957a","src/diff.rs":"bd6b0397847f1b3f3d5e268371d75c83ec3b8948d461d52227aeebe7f10241ec","src/email.rs":"b95f32739a2adac55016e892d913fb4b03d10c0583569a613f6c13946238759d","src/error.rs":"cd72f5f51d0c76f6bddd5d0f9e4d4e4190b40e15cebc3627fca2ba8f293964a4","src/index.rs":"1f34cbc31ecb7d536f4138a2c4a35d9e24703c4d78575e4528c7bdf78c30e87c","src/indexer.rs":"36221447975f235abbe53135166ea4bc6833a2835a7e343271fd9bdf45af0421","src/lib.rs":"3e38de29a876061a0fe687aa32905605fb4a93acef1dff067b6e4ae2a3a9efef","src/mailmap.rs":"a034b1c86c8a8d4362939e2e2c1d0b1b2f5c71bac883b2b1b65b64078c70349e","src/mempack.rs":"8549f984360ac12868018e4f107a60386474c58cfb6c41993cbb0a820bd28908","src/merge.rs":"681f2f1e59cec49a8618a894e22645915e8f8a815a71d4ca7c6ab10fbdaeb919","src/message.rs":"ba445c543e2637b07c995ebc7a4f7b3c352061e2fecb83f9d95fce9c24f95d6c","src/note.rs":"55b286c3736833432d391184136f0fb0928e337990d1558166e2d998dc63f0dd","src/object.rs":"8b66f1c34570b37d204d0b3f626edbdd0baa7eb9734e3e444b72bf3e8fc46a27","src/odb.rs":"7088257f15b5c86774a62dc0dc42ac939348077eed7db8b3b6919aaea836c27b","src/oid.rs":"dc284f1523b3109e9721165289adcd820733fe72d5807f7739d307c2f88d2006","src/oid_array.rs":"4820657a5d4460a77a31fe0ba04c5575f6900a1767925a40464fadcacaf6a066","src/opts.rs":"7fe4baf924712816f2c7e51543820094e714e2b564dfc0450a885a6f8e218107","src/packbuilder.rs":"649246626d600f7d023e73ab3e3d4ca691d482d85de11338f3c5cea66f7f84ee","src/panic.rs":"62ef0684379f4cdebf9477e2f63c9f0ecc80fe608de2df32bca13ce0086249d6","src/patch.rs":"740fa2a29148605e3dac16f58fd603b408283cfe148b922fbe6b5a5d62f18db0","src/pathspec.rs":"3a98f924094c5f85c3b5dfed7dc271324f46a4ef82de78af3677f058e149784c","src/proxy_options.rs":"cfa029317ae00a15074d4fd5de5d7c8da982459b915399c1d6010ddbee43ab28","src/push_update.rs":"af8108cdbac8c5c22811c1063a2c4706070b4f4e69ac4151ab84963f04dbaaca","src/rebase.rs":"179fc17e402d902300de8d37a65ceb0c29d6e8f4ba50cc8b7a7d8b09cfe9ef55","src/reference.rs":"3f2def9ea8a16c36685f71324bcb99d325161cfc59b844ac4d5387408d0ef0a8","src/reflog.rs":"b13ed72912f5375996b9ffb3a415371ae6c220de5a01226b13ca04fe97692f77","src/refspec.rs":"5107582963524fe9ff312a280232dba08d25be06fdf8f278c0bbfdbfa7a50402","src/remote.rs":"d0f04af6f4ebf2c319a31cc43cac10a241ebe9e4fde74e00e33d7c0b3735462a","src/remote_callbacks.rs":"338ae362638084592697783e39996a37061e0ef88dbb9e81a56459b0e0c27190","src/repo.rs":"6c7d8b0b74876aa9325be2df563f39704a04eeb9745045ae6a82d890bee332a7","src/revert.rs":"b51dd98a9775e80dfd56b2fe13737e15baf64d3ac9c56546b2bbdfd53d1de7f9","src/revspec.rs":"29df0754775603ed1189bbe28f933f5851d50936eda380a57f175ec35496d637","src/revwalk.rs":"5b792871595ddd2bbc259de7d52174087ca34080c31fd907e23704001d7f4c61","src/signature.rs":"5ff7a60deb1a449679835edf7a1fae730a85973483ca24f6fc15cbd146429d00","src/stash.rs":"332cbec27ea7bff2f832173b7adfd3ed00e936022dc43797f31f06284bc1b93d","src/status.rs":"13712d5a07780fde16286fa897b965e2bf7881ed64468ebed1bbf9380f7c2a91","src/string_array.rs":"04501c0ca8440ec4460cc89a1c7f004dda027f8f0dc9b94a0f372a2391328d65","src/submodule.rs":"1d41cafa2523fdf4d8aae7d5dc38647c6062586d0ee1d91bc99be5d87ec6b2ee","src/tag.rs":"b7292fc74485950acfc484d4542d8a1bd135b957f0ad9c70e92762b805d73cd3","src/tagforeach.rs":"04ea7ff4072a270c5febaee8133ae93040eb81a139ed987238e0b500e9626c4c","src/test.rs":"74c34ed48ff74bdcf3f92d8d44ba15d2b3bc0960847c6839e7c9d2e9c4518369","src/time.rs":"7fd2bcdda9baf24c6292edd04be6112c83a57e8f9e566d6d219563ad98c12203","src/tracing.rs":"6c2ecd839cbbdc70efea854fa8a19eb8700f3450f46f7ba8ab9b280e194700b8","src/transaction.rs":"6bb080f30646b5b3f22ac37f61945e58ce823944248e97fc58389cc8ca6c5895","src/transport.rs":"6505ed35be2a2bf7893fc3ee2d1a21bd2984fda5a350bd8ee3dd08ffac484a42","src/tree.rs":"466610384d9c7341b7e326acf6ae269ea9820c5359edd8350d88b966b66f61c8","src/treebuilder.rs":"b04a16cd22e40f6c2e4d26d4ce343a2853e943474080e95b0e2250a5961e6c1d","src/util.rs":"5ea4d156845e62d167d2885c76ba9f623944939464b9e372bb4172656ec7e08b","src/version.rs":"bcc26c9dcc5bf872afd0741233f07981df0a4be28faeba9ad52eb437961eb30f","src/worktree.rs":"eb2fbc678e7beb456720b9bec18189b0ba668335d93dad589170c11e52cbd558","tests/add_extensions.rs":"af6c4e7e3d1e84fa5e64a958fa93de5b9e0f913f9b5baaf46ea14a4d0c49e935","tests/get_extensions.rs":"a317ebd1b947bb72001b7fec7a0babd21fa6f28061852d4f495a029252f569db","tests/global_state.rs":"c75947eca9718277da08722ca9a58d9b4154b36b1aca6453bb198238c17904ce","tests/remove_extensions.rs":"9eca08d8781bda478365bf79f52276c3083f49e41cccbac7e779d4f54e894265"},"package":"fbf97ba92db08df386e10c8ede66a2a0369bd277090afd8710e19e38de9ec0cd"} \ No newline at end of file
diff --git a/vendor/git2/CHANGELOG.md b/vendor/git2/CHANGELOG.md
index 6cc0d7396..efdcfcace 100644
--- a/vendor/git2/CHANGELOG.md
+++ b/vendor/git2/CHANGELOG.md
@@ -1,5 +1,20 @@
# Changelog
+## 0.18.1 - 2023-09-20
+[0.18.0...0.18.1](https://github.com/rust-lang/git2-rs/compare/git2-0.18.0...git2-0.18.1)
+
+### Added
+
+- Added `FetchOptions::depth` to set the depth of a fetch or clone, adding support for shallow clones.
+ [#979](https://github.com/rust-lang/git2-rs/pull/979)
+
+### Fixed
+
+- Fixed an internal data type (`TreeWalkCbData`) to not assume it is a transparent type while casting.
+ [#989](https://github.com/rust-lang/git2-rs/pull/989)
+- Fixed so that `DiffPatchidOptions` and `StashSaveOptions` are publicly exported allowing the corresponding APIs to actually be used.
+ [#988](https://github.com/rust-lang/git2-rs/pull/988)
+
## 0.18.0 - 2023-08-28
[0.17.2...0.18.0](https://github.com/rust-lang/git2-rs/compare/0.17.2...git2-0.18.0)
diff --git a/vendor/git2/Cargo.lock b/vendor/git2/Cargo.lock
index a8e9def99..06e9aa423 100644
--- a/vendor/git2/Cargo.lock
+++ b/vendor/git2/Cargo.lock
@@ -76,9 +76,9 @@ dependencies = [
[[package]]
name = "errno"
-version = "0.3.2"
+version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f"
+checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd"
dependencies = [
"errno-dragonfly",
"libc",
@@ -112,7 +112,7 @@ dependencies = [
[[package]]
name = "git2"
-version = "0.18.0"
+version = "0.18.1"
dependencies = [
"bitflags 2.4.0",
"libc",
@@ -171,15 +171,15 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
-version = "0.2.147"
+version = "0.2.148"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
+checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b"
[[package]]
name = "libgit2-sys"
-version = "0.16.0+1.7.1"
+version = "0.16.1+1.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "280a2a3ed6f7669a1f9e762ace03ede3343f17756cb7b32b69478a61b190f69c"
+checksum = "f2a2bb3680b094add03bb3732ec520ece34da31a8cd2d633d1389d0f0fb60d0c"
dependencies = [
"cc",
"libc",
@@ -218,9 +218,9 @@ dependencies = [
[[package]]
name = "linux-raw-sys"
-version = "0.4.5"
+version = "0.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503"
+checksum = "1a9bad9f94746442c783ca431b22403b519cd7fbeed0533fdd6328b2f2212128"
[[package]]
name = "log"
@@ -236,18 +236,18 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
[[package]]
name = "openssl-src"
-version = "111.27.0+1.1.1v"
+version = "300.1.5+3.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06e8f197c82d7511c5b014030c9b1efeda40d7d5f99d23b4ceed3524a5e63f02"
+checksum = "559068e4c12950d7dcaa1857a61725c0d38d4fc03ff8e070ab31a75d6e316491"
dependencies = [
"cc",
]
[[package]]
name = "openssl-sys"
-version = "0.9.92"
+version = "0.9.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db7e971c2c2bba161b2d2fdf37080177eff520b3bc044787c7f1f5f9e78d869b"
+checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d"
dependencies = [
"cc",
"libc",
@@ -294,9 +294,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
-version = "1.0.66"
+version = "1.0.67"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"
+checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"
dependencies = [
"unicode-ident",
]
@@ -321,9 +321,9 @@ dependencies = [
[[package]]
name = "rustix"
-version = "0.38.9"
+version = "0.38.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9bfe0f2582b4931a45d1fa608f8a8722e8b3c7ac54dd6d5f3b3212791fedef49"
+checksum = "747c788e9ce8e92b12cd485c49ddf90723550b654b32508f979b71a7b1ecda4f"
dependencies = [
"bitflags 2.4.0",
"errno",
@@ -429,9 +429,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
[[package]]
name = "unicode-ident"
-version = "1.0.11"
+version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
[[package]]
name = "unicode-normalization"
@@ -450,9 +450,9 @@ checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
[[package]]
name = "unicode-width"
-version = "0.1.10"
+version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
[[package]]
name = "url"
diff --git a/vendor/git2/Cargo.toml b/vendor/git2/Cargo.toml
index aee58df9c..9e8924e68 100644
--- a/vendor/git2/Cargo.toml
+++ b/vendor/git2/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2018"
name = "git2"
-version = "0.18.0"
+version = "0.18.1"
authors = [
"Josh Triplett <josh@joshtriplett.org>",
"Alex Crichton <alex@alexcrichton.com>",
diff --git a/vendor/git2/README.md b/vendor/git2/README.md
index e10fbcbdb..ba75127ac 100644
--- a/vendor/git2/README.md
+++ b/vendor/git2/README.md
@@ -6,7 +6,7 @@ libgit2 bindings for Rust.
```toml
[dependencies]
-git2 = "0.18.0"
+git2 = "0.18.1"
```
## Rust version requirements
diff --git a/vendor/git2/src/lib.rs b/vendor/git2/src/lib.rs
index 6dd75093b..3dd6fe92e 100644
--- a/vendor/git2/src/lib.rs
+++ b/vendor/git2/src/lib.rs
@@ -91,7 +91,7 @@ pub use crate::config::{Config, ConfigEntries, ConfigEntry};
pub use crate::cred::{Cred, CredentialHelper};
pub use crate::describe::{Describe, DescribeFormatOptions, DescribeOptions};
pub use crate::diff::{Deltas, Diff, DiffDelta, DiffFile, DiffOptions};
-pub use crate::diff::{DiffBinary, DiffBinaryFile, DiffBinaryKind};
+pub use crate::diff::{DiffBinary, DiffBinaryFile, DiffBinaryKind, DiffPatchidOptions};
pub use crate::diff::{DiffFindOptions, DiffHunk, DiffLine, DiffLineType, DiffStats};
pub use crate::email::{Email, EmailCreateOptions};
pub use crate::error::Error;
@@ -131,7 +131,7 @@ pub use crate::revert::RevertOptions;
pub use crate::revspec::Revspec;
pub use crate::revwalk::Revwalk;
pub use crate::signature::Signature;
-pub use crate::stash::{StashApplyOptions, StashApplyProgressCb, StashCb};
+pub use crate::stash::{StashApplyOptions, StashApplyProgressCb, StashCb, StashSaveOptions};
pub use crate::status::{StatusEntry, StatusIter, StatusOptions, StatusShow, Statuses};
pub use crate::submodule::{Submodule, SubmoduleUpdateOptions};
pub use crate::tag::Tag;
diff --git a/vendor/git2/src/remote.rs b/vendor/git2/src/remote.rs
index f36db6844..c8f5a935a 100644
--- a/vendor/git2/src/remote.rs
+++ b/vendor/git2/src/remote.rs
@@ -41,6 +41,7 @@ pub struct RemoteHead<'remote> {
/// Options which can be specified to various fetch operations.
pub struct FetchOptions<'cb> {
callbacks: Option<RemoteCallbacks<'cb>>,
+ depth: i32,
proxy: Option<ProxyOptions<'cb>>,
prune: FetchPrune,
update_fetchhead: bool,
@@ -509,6 +510,7 @@ impl<'cb> FetchOptions<'cb> {
follow_redirects: RemoteRedirect::Initial,
custom_headers: Vec::new(),
custom_headers_ptrs: Vec::new(),
+ depth: 0, // Not limited depth
}
}
@@ -538,6 +540,17 @@ impl<'cb> FetchOptions<'cb> {
self
}
+ /// Set fetch depth, a value less or equal to 0 is interpreted as pull
+ /// everything (effectively the same as not declaring a limit depth).
+
+ // FIXME(blyxyas): We currently don't have a test for shallow functions
+ // because libgit2 doesn't support local shallow clones.
+ // https://github.com/rust-lang/git2-rs/pull/979#issuecomment-1716299900
+ pub fn depth(&mut self, depth: i32) -> &mut Self {
+ self.depth = depth.max(0);
+ self
+ }
+
/// Set how to behave regarding tags on the remote, such as auto-downloading
/// tags for objects we're downloading or downloading all of them.
///
@@ -590,7 +603,7 @@ impl<'cb> Binding for FetchOptions<'cb> {
prune: crate::call::convert(&self.prune),
update_fetchhead: crate::call::convert(&self.update_fetchhead),
download_tags: crate::call::convert(&self.download_tags),
- depth: 0, // GIT_FETCH_DEPTH_FULL.
+ depth: self.depth,
follow_redirects: self.follow_redirects.raw(),
custom_headers: git_strarray {
count: self.custom_headers_ptrs.len(),
diff --git a/vendor/git2/src/stash.rs b/vendor/git2/src/stash.rs
index 6fcd525d2..ea898e46b 100644
--- a/vendor/git2/src/stash.rs
+++ b/vendor/git2/src/stash.rs
@@ -5,7 +5,6 @@ use libc::{c_char, c_int, c_void, size_t};
use std::ffi::{c_uint, CStr, CString};
use std::mem;
-#[allow(unused)]
/// Stash application options structure
pub struct StashSaveOptions<'a> {
message: Option<CString>,
@@ -72,13 +71,14 @@ impl<'a> StashSaveOptions<'a> {
///
/// Return `true` to continue processing, or `false` to
/// abort the stash application.
+// FIXME: This probably should have been pub(crate) since it is not used anywhere.
pub type StashApplyProgressCb<'a> = dyn FnMut(StashApplyProgress) -> bool + 'a;
/// This is a callback function you can provide to iterate over all the
/// stashed states that will be invoked per entry.
+// FIXME: This probably should have been pub(crate) since it is not used anywhere.
pub type StashCb<'a> = dyn FnMut(usize, &str, &Oid) -> bool + 'a;
-#[allow(unused)]
/// Stash application options structure
pub struct StashApplyOptions<'cb> {
progress: Option<Box<StashApplyProgressCb<'cb>>>,
@@ -144,22 +144,20 @@ impl<'cb> StashApplyOptions<'cb> {
}
}
-#[allow(unused)]
-pub struct StashCbData<'a> {
+pub(crate) struct StashCbData<'a> {
pub callback: &'a mut StashCb<'a>,
}
-#[allow(unused)]
-pub extern "C" fn stash_cb(
+pub(crate) extern "C" fn stash_cb(
index: size_t,
message: *const c_char,
stash_id: *const raw::git_oid,
payload: *mut c_void,
) -> c_int {
panic::wrap(|| unsafe {
- let mut data = &mut *(payload as *mut StashCbData<'_>);
+ let data = &mut *(payload as *mut StashCbData<'_>);
let res = {
- let mut callback = &mut data.callback;
+ let callback = &mut data.callback;
callback(
index,
CStr::from_ptr(message).to_str().unwrap(),
@@ -191,15 +189,14 @@ fn convert_progress(progress: raw::git_stash_apply_progress_t) -> StashApplyProg
}
}
-#[allow(unused)]
extern "C" fn stash_apply_progress_cb(
progress: raw::git_stash_apply_progress_t,
payload: *mut c_void,
) -> c_int {
panic::wrap(|| unsafe {
- let mut options = &mut *(payload as *mut StashApplyOptions<'_>);
+ let options = &mut *(payload as *mut StashApplyOptions<'_>);
let res = {
- let mut callback = options.progress.as_mut().unwrap();
+ let callback = options.progress.as_mut().unwrap();
callback(convert_progress(progress))
};
diff --git a/vendor/git2/src/tree.rs b/vendor/git2/src/tree.rs
index 78b241384..9a38244cf 100644
--- a/vendor/git2/src/tree.rs
+++ b/vendor/git2/src/tree.rs
@@ -122,10 +122,6 @@ impl<'repo> Tree<'repo> {
C: FnMut(&str, &TreeEntry<'_>) -> T,
T: Into<i32>,
{
- #[allow(unused)]
- struct TreeWalkCbData<'a, T> {
- pub callback: &'a mut TreeWalkCb<'a, T>,
- }
unsafe {
let mut data = TreeWalkCbData {
callback: &mut callback,
@@ -209,6 +205,10 @@ impl<'repo> Tree<'repo> {
type TreeWalkCb<'a, T> = dyn FnMut(&str, &TreeEntry<'_>) -> T + 'a;
+struct TreeWalkCbData<'a, T> {
+ callback: &'a mut TreeWalkCb<'a, T>,
+}
+
extern "C" fn treewalk_cb<T: Into<i32>>(
root: *const c_char,
entry: *const raw::git_tree_entry,
@@ -220,8 +220,9 @@ extern "C" fn treewalk_cb<T: Into<i32>>(
_ => return -1,
};
let entry = entry_from_raw_const(entry);
- let payload = payload as *mut &mut TreeWalkCb<'_, T>;
- (*payload)(root, &entry).into()
+ let payload = &mut *(payload as *mut TreeWalkCbData<'_, T>);
+ let callback = &mut payload.callback;
+ callback(root, &entry).into()
}) {
Some(value) => value,
None => -1,
diff --git a/vendor/gix-actor/.cargo-checksum.json b/vendor/gix-actor/.cargo-checksum.json
index eade43f4d..3d8af62fe 100644
--- a/vendor/gix-actor/.cargo-checksum.json
+++ b/vendor/gix-actor/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"4d23bfab2ce24229b157e40c25be6935b117101f3a4b9657c8d480ae35328f0b","Cargo.toml":"39cf3cbf5b769647a7e0e3b3f8dec6cdf36d768e89da649c1de2a8cd927ecfb7","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/identity.rs":"1534f25898efc4aec271b743279952f1b5a222bddfacc4023291354c846afcd3","src/lib.rs":"b544f690c01d0fe6db17bcfa6c2e1e9a0e1f55f61bd8e8511243d65b035a2608","src/signature/decode.rs":"b0cebe96df024207fe2182d45f2895e264da964952530be96c31ff4f5e58a7fe","src/signature/mod.rs":"fcb0fb7662b0b2283919f959bc15c6a2a793085d3c96643dc27188ea216e5545"},"package":"08c60e982c5290897122d4e2622447f014a2dadd5a18cb73d50bb91b31645e27"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"14ba2e57b5efedc67987395093b3a98ee77bf8bc2ee69c9baa74f64d62f416b2","Cargo.toml":"3bee571fefe0918b9cd279fac674684975b50e77e114bdbff453e03c744b200d","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/identity.rs":"1534f25898efc4aec271b743279952f1b5a222bddfacc4023291354c846afcd3","src/lib.rs":"b544f690c01d0fe6db17bcfa6c2e1e9a0e1f55f61bd8e8511243d65b035a2608","src/signature/decode.rs":"b0cebe96df024207fe2182d45f2895e264da964952530be96c31ff4f5e58a7fe","src/signature/mod.rs":"fcb0fb7662b0b2283919f959bc15c6a2a793085d3c96643dc27188ea216e5545"},"package":"948a5f9e43559d16faf583694f1c742eb401ce24ce8e6f2238caedea7486433c"} \ No newline at end of file
diff --git a/vendor/gix-actor/CHANGELOG.md b/vendor/gix-actor/CHANGELOG.md
index 08c2f7896..8d47c134e 100644
--- a/vendor/gix-actor/CHANGELOG.md
+++ b/vendor/gix-actor/CHANGELOG.md
@@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-## 0.27.0 (2023-09-24)
+## 0.28.0 (2023-10-12)
A maintenance release without user-facing changes.
@@ -14,6 +14,29 @@ A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
- 1 commit contributed to the release.
+ - 17 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+</details>
+
+## 0.27.0 (2023-09-24)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 2 commits contributed to the release.
- 16 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,6 +48,7 @@ A maintenance release without user-facing changes.
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
</details>
diff --git a/vendor/gix-actor/Cargo.toml b/vendor/gix-actor/Cargo.toml
index 3c656e23c..d66a445d8 100644
--- a/vendor/gix-actor/Cargo.toml
+++ b/vendor/gix-actor/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-actor"
-version = "0.27.0"
+version = "0.28.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
include = [
"src/**/*",
@@ -54,7 +54,7 @@ optional = true
version = "^0.8.0"
[dependencies.gix-features]
-version = "^0.35.0"
+version = "^0.36.0"
optional = true
[dependencies.itoa]
diff --git a/vendor/gix-attributes/.cargo-checksum.json b/vendor/gix-attributes/.cargo-checksum.json
index 7a1ce1338..ba3606d66 100644
--- a/vendor/gix-attributes/.cargo-checksum.json
+++ b/vendor/gix-attributes/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"248497e6900b4d3cbd8ccb2f9106a5320d4937a41b431714df2159d43f33d0b0","Cargo.toml":"75b41f081632894eb22d51a47fb5528b5938283240d6fcc247e541e62143da83","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/assignment.rs":"779ab52656857bee716823315e440f6ac8577dd8cc2c7e084e2791e06755a537","src/lib.rs":"6f4141f34abf9327defcb42878d8d9bd6c201d03cee279806932b8163f751bdb","src/name.rs":"6e836c21bab5fa4a3cdd8ff06a5c50b71ae14b67996955c232eeb81f96a65da6","src/parse.rs":"3a455fb8b76bf1d572d3e28577243ef177190a6b8e4b64ed48521abb1d71c71c","src/search/attributes.rs":"a8ae59f5c34941a8a49dde1c214f67971b397a6b3c8c50b95963ac0b8ca587f3","src/search/mod.rs":"4944ca12129e7a75e4edc0b787f7749bbc632814435980bf45f5d98926e6aa87","src/search/outcome.rs":"cc906556a3c4420ede6d4944f00164d8eed44d3f05c8b40a92e9f0a41748b13a","src/search/refmap.rs":"08bba1460e70966ea84a2604621ab480b28e3102c75f17033a457cfa132d5f80","src/source.rs":"81092fff85f1f31c8daa1bac313ffd44511c64617e272d4f4225ed714bf89464","src/state.rs":"708db0b6c37e97fa32cd8b59776528e3401ee883b8a7f35f77f9de3a270e70d8"},"package":"2451665e70709ba4753b623ef97511ee98c4a73816b2c5b5df25678d607ed820"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"eb167b5134cd80e7dde337630af9627b0d8aed558b56836e9e169daacb215403","Cargo.toml":"759f79963bad14135a4be663e3cd160f0f4ad716400ea3027d15728756a2452a","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/assignment.rs":"779ab52656857bee716823315e440f6ac8577dd8cc2c7e084e2791e06755a537","src/lib.rs":"d0abd5cf5f07b08e8303aef14f436ce767b540dfcfb5b68704e42dc80593bd93","src/name.rs":"6020a168779414bda21227d5486781a0238b379c4b05d19da8ac3ae27c671887","src/parse.rs":"3277b36bf1989440f5428b9c2087645bdd818c8d992cb4c550aa3f591f725a67","src/search/attributes.rs":"a8ae59f5c34941a8a49dde1c214f67971b397a6b3c8c50b95963ac0b8ca587f3","src/search/mod.rs":"2d33ed41119377c884e5e029eb1593c6950746f2c0cdd739b3fd989eb438835d","src/search/outcome.rs":"cb260a9df1866f9758b8bdef1ecd5449324b1351dff1ca74c64083de68994cc0","src/search/refmap.rs":"08bba1460e70966ea84a2604621ab480b28e3102c75f17033a457cfa132d5f80","src/source.rs":"81092fff85f1f31c8daa1bac313ffd44511c64617e272d4f4225ed714bf89464","src/state.rs":"0551a2a68baa671bde06d2ab8213c8a06ed1dea466132b29efafc803217bd6fe"},"package":"dca120f0c6562d2d7cae467f2466e576d9f7f189beec2af2e026145107c729e2"} \ No newline at end of file
diff --git a/vendor/gix-attributes/CHANGELOG.md b/vendor/gix-attributes/CHANGELOG.md
index fdc678344..fae25cf55 100644
--- a/vendor/gix-attributes/CHANGELOG.md
+++ b/vendor/gix-attributes/CHANGELOG.md
@@ -5,6 +5,45 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.20.0 (2023-10-12)
+
+### Bug Fixes
+
+ - <csr-id-ac1d8d4a323fc5fb27b8c458f1babb4acc56ca52/> revert 'byteyarn' addition in favor of `kstring`
+ It turns out not to work on certain 32bit targets that `gix` now has to support
+ due to Fedora packaging.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 6 commits contributed to the release over the course of 10 calendar days.
+ - 17 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 1 unique issue was worked on: [#1050](https://github.com/Byron/gitoxide/issues/1050)
+
+### Thanks Clippy
+
+<csr-read-only-do-not-edit/>
+
+[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic.
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **[#1050](https://github.com/Byron/gitoxide/issues/1050)**
+ - Revert "feat!: Use `yarn` for lower memory footprint and better performance." ([`355fd19`](https://github.com/Byron/gitoxide/commit/355fd191dbdae803c660781603d7986047760471))
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+ - Revert 'byteyarn' addition in favor of `kstring` ([`ac1d8d4`](https://github.com/Byron/gitoxide/commit/ac1d8d4a323fc5fb27b8c458f1babb4acc56ca52))
+ - Thanks clippy ([`345712d`](https://github.com/Byron/gitoxide/commit/345712dcdfddcccc630bbfef2ed4f461b21550d3))
+ - Merge branch 'improvements' ([`3939a45`](https://github.com/Byron/gitoxide/commit/3939a455be2269280248cdfed4a5983f8d178141))
+ - Optimize Yarn instantiation ([`82874cd`](https://github.com/Byron/gitoxide/commit/82874cd04d6bb4635016391a43f51fca078195c7))
+</details>
+
## 0.19.0 (2023-09-24)
### New Features (BREAKING)
@@ -16,7 +55,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<csr-read-only-do-not-edit/>
- - 3 commits contributed to the release over the course of 14 calendar days.
+ - 4 commits contributed to the release over the course of 14 calendar days.
- 16 days passed between releases.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -28,6 +67,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
- Merge branch 'yarn' ([`53bbd06`](https://github.com/Byron/gitoxide/commit/53bbd06d2b4380452d24d2c999f43b489b7446af))
- Use `yarn` for lower memory footprint and better performance. ([`7911d53`](https://github.com/Byron/gitoxide/commit/7911d53b48263c35d9684e1a329588499eadd822))
diff --git a/vendor/gix-attributes/Cargo.toml b/vendor/gix-attributes/Cargo.toml
index 08fd832c2..4e7cf4953 100644
--- a/vendor/gix-attributes/Cargo.toml
+++ b/vendor/gix-attributes/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-attributes"
-version = "0.19.0"
+version = "0.20.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
include = [
"src/**/*",
@@ -43,15 +43,12 @@ features = [
]
default-features = false
-[dependencies.byteyarn]
-version = "0.2.3"
-
[dependencies.document-features]
version = "0.2.1"
optional = true
[dependencies.gix-glob]
-version = "^0.13.0"
+version = "^0.14.0"
[dependencies.gix-path]
version = "^0.10.0"
@@ -62,6 +59,9 @@ version = "^0.4.7"
[dependencies.gix-trace]
version = "^0.1.3"
+[dependencies.kstring]
+version = "2.0.0"
+
[dependencies.serde]
version = "1.0.114"
features = ["derive"]
@@ -84,4 +84,5 @@ serde = [
"dep:serde",
"bstr/serde",
"gix-glob/serde",
+ "kstring/serde",
]
diff --git a/vendor/gix-attributes/src/lib.rs b/vendor/gix-attributes/src/lib.rs
index c45b8f9f3..7eaac4282 100644
--- a/vendor/gix-attributes/src/lib.rs
+++ b/vendor/gix-attributes/src/lib.rs
@@ -8,8 +8,8 @@
#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
#![deny(missing_docs, rust_2018_idioms, unsafe_code)]
-use byteyarn::{Yarn, YarnRef};
pub use gix_glob as glob;
+use kstring::{KString, KStringRef};
mod assignment;
///
@@ -34,6 +34,7 @@ pub fn parse(bytes: &[u8]) -> parse::Lines<'_> {
///
/// Note that this doesn't contain the name.
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone, Copy)]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum StateRef<'a> {
/// The attribute is listed, or has the special value 'true'
Set,
@@ -41,6 +42,7 @@ pub enum StateRef<'a> {
Unset,
/// The attribute is set to the given value, which followed the `=` sign.
/// Note that values can be empty.
+ #[cfg_attr(feature = "serde", serde(borrow))]
Value(state::ValueRef<'a>),
/// The attribute isn't mentioned with a given path or is explicitly set to `Unspecified` using the `!` sign.
Unspecified,
@@ -50,6 +52,7 @@ pub enum StateRef<'a> {
///
/// Note that this doesn't contain the name.
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone)]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum State {
/// The attribute is listed, or has the special value 'true'
Set,
@@ -64,14 +67,16 @@ pub enum State {
/// Represents a validated attribute name
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone)]
-pub struct Name(pub(crate) Yarn);
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+pub struct Name(pub(crate) KString);
/// Holds a validated attribute name as a reference
#[derive(Copy, Clone, PartialEq, Eq, Debug, Hash, Ord, PartialOrd)]
-pub struct NameRef<'a>(YarnRef<'a, str>);
+pub struct NameRef<'a>(KStringRef<'a>);
/// Name an attribute and describe it's assigned state.
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone)]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct Assignment {
/// The validated name of the attribute.
pub name: Name,
diff --git a/vendor/gix-attributes/src/name.rs b/vendor/gix-attributes/src/name.rs
index 43a78bddb..40d86fd4c 100644
--- a/vendor/gix-attributes/src/name.rs
+++ b/vendor/gix-attributes/src/name.rs
@@ -1,16 +1,12 @@
use bstr::{BStr, BString, ByteSlice};
-use byteyarn::YarnRef;
+use kstring::KStringRef;
use crate::{Name, NameRef};
impl<'a> NameRef<'a> {
/// Turn this ref into its owned counterpart.
pub fn to_owned(self) -> Name {
- Name(
- self.0
- .immortalize()
- .map_or_else(|| self.0.to_boxed_str().into(), YarnRef::to_box),
- )
+ Name(self.0.into())
}
/// Return the inner `str`.
@@ -39,7 +35,7 @@ impl<'a> TryFrom<&'a BStr> for NameRef<'a> {
}
attr_valid(attr)
- .then(|| NameRef(YarnRef::from(attr.to_str().expect("no illformed utf8"))))
+ .then(|| NameRef(KStringRef::from_ref(attr.to_str().expect("no illformed utf8"))))
.ok_or_else(|| Error { attribute: attr.into() })
}
}
diff --git a/vendor/gix-attributes/src/parse.rs b/vendor/gix-attributes/src/parse.rs
index 7d8d6277a..2d90a006d 100644
--- a/vendor/gix-attributes/src/parse.rs
+++ b/vendor/gix-attributes/src/parse.rs
@@ -1,12 +1,13 @@
use std::borrow::Cow;
use bstr::{BStr, ByteSlice};
-use byteyarn::YarnRef;
+use kstring::KStringRef;
use crate::{name, AssignmentRef, Name, NameRef, StateRef};
/// The kind of attribute that was parsed.
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone)]
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum Kind {
/// A pattern to match paths against
Pattern(gix_glob::Pattern),
@@ -75,7 +76,7 @@ fn check_attr(attr: &BStr) -> Result<NameRef<'_>, name::Error> {
}
attr_valid(attr)
- .then(|| NameRef(YarnRef::from(attr.to_str().expect("no illformed utf8"))))
+ .then(|| NameRef(KStringRef::from_ref(attr.to_str().expect("no illformed utf8"))))
.ok_or_else(|| name::Error { attribute: attr.into() })
}
diff --git a/vendor/gix-attributes/src/search/mod.rs b/vendor/gix-attributes/src/search/mod.rs
index f06928bf2..83c6d4192 100644
--- a/vendor/gix-attributes/src/search/mod.rs
+++ b/vendor/gix-attributes/src/search/mod.rs
@@ -1,6 +1,6 @@
use std::collections::HashMap;
-use byteyarn::Yarn;
+use kstring::KString;
use smallvec::SmallVec;
use crate::{Assignment, AssignmentRef};
@@ -99,7 +99,7 @@ pub struct Outcome {
/// A stack of attributes to use for processing attributes of matched patterns and for resolving their macros.
attrs_stack: SmallVec<[(AttributeId, Assignment, Option<AttributeId>); 8]>,
/// A set of attributes we should limit ourselves to, or empty if we should fill in all attributes, made of
- selected: SmallVec<[(Yarn, Option<AttributeId>); AVERAGE_NUM_ATTRS]>,
+ selected: SmallVec<[(KString, Option<AttributeId>); AVERAGE_NUM_ATTRS]>,
/// storage for all patterns we have matched so far (in order to avoid referencing them, we copy them, but only once).
patterns: RefMap<gix_glob::Pattern>,
/// storage for all assignments we have matched so far (in order to avoid referencing them, we copy them, but only once).
@@ -135,7 +135,7 @@ pub struct MetadataCollection {
/// A mapping of an attribute or macro name to its order, that is the time when it was *first* seen.
///
/// This is the inverse of the order attributes are searched.
- name_to_meta: HashMap<Yarn, Metadata>,
+ name_to_meta: HashMap<KString, Metadata>,
}
/// Metadata associated with an attribute or macro name.
diff --git a/vendor/gix-attributes/src/search/outcome.rs b/vendor/gix-attributes/src/search/outcome.rs
index 9ad8a81e1..7cea3bd19 100644
--- a/vendor/gix-attributes/src/search/outcome.rs
+++ b/vendor/gix-attributes/src/search/outcome.rs
@@ -1,6 +1,6 @@
use bstr::{BString, ByteSlice};
-use byteyarn::Yarn;
use gix_glob::Pattern;
+use kstring::{KString, KStringRef};
use crate::{
search::{
@@ -44,7 +44,7 @@ impl Outcome {
pub fn initialize_with_selection<'a>(
&mut self,
collection: &MetadataCollection,
- attribute_names: impl IntoIterator<Item = impl Into<&'a str>>,
+ attribute_names: impl IntoIterator<Item = impl Into<KStringRef<'a>>>,
) {
self.initialize_with_selection_inner(collection, &mut attribute_names.into_iter().map(Into::into))
}
@@ -52,15 +52,15 @@ impl Outcome {
fn initialize_with_selection_inner(
&mut self,
collection: &MetadataCollection,
- attribute_names: &mut dyn Iterator<Item = &str>,
+ attribute_names: &mut dyn Iterator<Item = KStringRef<'_>>,
) {
self.initialize(collection);
self.selected.clear();
self.selected.extend(attribute_names.map(|name| {
(
- Yarn::inlined(name).unwrap_or_else(|| name.to_string().into_boxed_str().into()),
- collection.name_to_meta.get(name).map(|meta| meta.id),
+ name.to_owned(),
+ collection.name_to_meta.get(name.as_str()).map(|meta| meta.id),
)
}));
self.reset_remaining();
@@ -176,12 +176,11 @@ impl Outcome {
source: Option<&std::path::PathBuf>,
sequence_number: usize,
) -> bool {
- self.attrs_stack.extend(attrs.filter_map(|attr| {
- self.matches_by_id[attr.id.0]
- .r#match
- .is_none()
- .then(|| (attr.id, attr.inner.clone(), None))
- }));
+ self.attrs_stack.extend(
+ attrs
+ .filter(|attr| self.matches_by_id[attr.id.0].r#match.is_none())
+ .map(|attr| (attr.id, attr.inner.clone(), None)),
+ );
while let Some((id, assignment, parent_order)) = self.attrs_stack.pop() {
let slot = &mut self.matches_by_id[id.0];
if slot.r#match.is_some() {
@@ -212,12 +211,12 @@ impl Outcome {
if is_macro {
// TODO(borrowchk): one fine day we should be able to re-borrow `slot` without having to redo the array access.
let slot = &self.matches_by_id[id.0];
- self.attrs_stack.extend(slot.macro_attributes.iter().filter_map(|attr| {
- self.matches_by_id[attr.id.0]
- .r#match
- .is_none()
- .then(|| (attr.id, attr.inner.clone(), Some(id)))
- }));
+ self.attrs_stack.extend(
+ slot.macro_attributes
+ .iter()
+ .filter(|attr| self.matches_by_id[attr.id.0].r#match.is_none())
+ .map(|attr| (attr.id, attr.inner.clone(), Some(id))),
+ );
}
}
false
@@ -315,7 +314,7 @@ impl MetadataCollection {
None => {
let order = AttributeId(self.name_to_meta.len());
self.name_to_meta.insert(
- Yarn::inlined(name).unwrap_or_else(|| name.to_string().into_boxed_str().into()),
+ KString::from_ref(name),
Metadata {
id: order,
macro_attributes: Default::default(),
@@ -335,10 +334,7 @@ impl MetadataCollection {
Some(meta) => meta.id,
None => {
let order = AttributeId(self.name_to_meta.len());
- self.name_to_meta.insert(
- Yarn::inlined(name).unwrap_or_else(|| name.to_string().into_boxed_str().into()),
- order.into(),
- );
+ self.name_to_meta.insert(KString::from_ref(name), order.into());
order
}
}
diff --git a/vendor/gix-attributes/src/state.rs b/vendor/gix-attributes/src/state.rs
index 585e05adc..80ebcfead 100644
--- a/vendor/gix-attributes/src/state.rs
+++ b/vendor/gix-attributes/src/state.rs
@@ -1,21 +1,29 @@
use bstr::{BStr, ByteSlice};
-use byteyarn::{ByteYarn, YarnRef};
+use kstring::{KString, KStringRef};
use crate::{State, StateRef};
/// A container to encapsulate a tightly packed and typically unallocated byte value that isn't necessarily UTF8 encoded.
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone)]
-pub struct Value(ByteYarn);
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+pub struct Value(KString);
/// A reference container to encapsulate a tightly packed and typically unallocated byte value that isn't necessarily UTF8 encoded.
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone, Copy)]
-pub struct ValueRef<'a>(YarnRef<'a, [u8]>);
+#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
+pub struct ValueRef<'a>(#[cfg_attr(feature = "serde", serde(borrow))] KStringRef<'a>);
/// Lifecycle
impl<'a> ValueRef<'a> {
/// Keep `input` as our value.
pub fn from_bytes(input: &'a [u8]) -> Self {
- Self(YarnRef::from(input))
+ Self(KStringRef::from_ref(
+ // SAFETY: our API makes accessing that value as `str` impossible, so illformed UTF8 is never exposed as such.
+ #[allow(unsafe_code)]
+ unsafe {
+ std::str::from_utf8_unchecked(input)
+ },
+ ))
}
}
@@ -34,25 +42,19 @@ impl ValueRef<'_> {
impl<'a> From<&'a str> for ValueRef<'a> {
fn from(v: &'a str) -> Self {
- ValueRef(v.as_bytes().into())
+ ValueRef(v.into())
}
}
impl<'a> From<ValueRef<'a>> for Value {
fn from(v: ValueRef<'a>) -> Self {
- Value(
- v.0.immortalize()
- .map_or_else(|| v.0.to_boxed_bytes().into(), YarnRef::to_box),
- )
+ Value(v.0.into())
}
}
impl From<&str> for Value {
fn from(v: &str) -> Self {
- Value(
- ByteYarn::inlined(v.as_bytes())
- .unwrap_or_else(|| ByteYarn::from_boxed_bytes(v.as_bytes().to_vec().into_boxed_slice())),
- )
+ Value(KString::from_ref(v))
}
}
diff --git a/vendor/gix-command/.cargo-checksum.json b/vendor/gix-command/.cargo-checksum.json
index 30a5bed6a..10887293e 100644
--- a/vendor/gix-command/.cargo-checksum.json
+++ b/vendor/gix-command/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"b54be458a722939f06aee80930d67da1fc7e3abe47c088f3ae49940ef734f93f","Cargo.toml":"1e626d8f563e16ed17ee17d09552802908bfbd1fc35dd9c22e982bfcce53beeb","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/lib.rs":"a8149c52abe2f2c2f9883a816ceff553bd67eff1e05aae591df0a12edcbbbbd9","tests/command.rs":"d863fefac90fd9a11f2d26b557f3db98612c49e2df51a5eba3774d47852ca15f"},"package":"0f28f654184b5f725c5737c7e4f466cbd8f0102ac352d5257eeab19647ee4256"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"b8107f9d62dab5b15c41cbf5805f2b29c35087f4c680fe898876f3afd8ed5096","Cargo.toml":"ede3b6a8e18bd482082cc4cff39f1043b8101099b2f399d8401e27f03412f864","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/lib.rs":"a8149c52abe2f2c2f9883a816ceff553bd67eff1e05aae591df0a12edcbbbbd9","tests/command.rs":"0005efdd3ab1ebe627ee2ba03f079c1f8cc3af98c558bbdf65efe4b0ed458b7b"},"package":"3c576cfbf577f72c097b5f88aedea502cd62952bdc1fb3adcab4531d5525a4c7"} \ No newline at end of file
diff --git a/vendor/gix-command/CHANGELOG.md b/vendor/gix-command/CHANGELOG.md
index 08269436c..1eb9447f7 100644
--- a/vendor/gix-command/CHANGELOG.md
+++ b/vendor/gix-command/CHANGELOG.md
@@ -5,6 +5,32 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.2.10 (2023-10-12)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 4 commits contributed to the release over the course of 51 calendar days.
+ - 51 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+ - Merge branch 'reset' ([`b842691`](https://github.com/Byron/gitoxide/commit/b8426919a491dc3a7df01ee3f258fc0d8a3a327c))
+ - Fix gix-command tests on windows ([`67a0220`](https://github.com/Byron/gitoxide/commit/67a0220dc4c4ff6f79a24771fb175baec22bc6b0))
+ - Merge branch 'gix-submodule' ([`363ee77`](https://github.com/Byron/gitoxide/commit/363ee77400805f473c9ad66eadad9214e7ab66f4))
+</details>
+
## 0.2.9 (2023-08-22)
<csr-id-229bd4899213f749a7cc124aa2b82a1368fba40f/>
@@ -17,7 +43,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<csr-read-only-do-not-edit/>
- - 4 commits contributed to the release over the course of 18 calendar days.
+ - 5 commits contributed to the release over the course of 18 calendar days.
- 30 days passed between releases.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -29,6 +55,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-date v0.7.3, gix-hash v0.12.0, gix-features v0.33.0, gix-actor v0.25.0, gix-object v0.35.0, gix-path v0.9.0, gix-glob v0.11.0, gix-quote v0.4.7, gix-attributes v0.17.0, gix-command v0.2.9, gix-packetline-blocking v0.16.5, gix-filter v0.3.0, gix-fs v0.5.0, gix-commitgraph v0.19.0, gix-hashtable v0.3.0, gix-revwalk v0.6.0, gix-traverse v0.31.0, gix-worktree-stream v0.3.0, gix-archive v0.3.0, gix-config-value v0.13.0, gix-tempfile v8.0.0, gix-lock v8.0.0, gix-ref v0.35.0, gix-sec v0.9.0, gix-config v0.28.0, gix-prompt v0.6.0, gix-url v0.22.0, gix-credentials v0.18.0, gix-diff v0.34.0, gix-discover v0.23.0, gix-ignore v0.6.0, gix-bitmap v0.2.7, gix-index v0.22.0, gix-mailmap v0.17.0, gix-negotiate v0.6.0, gix-pack v0.41.0, gix-odb v0.51.0, gix-pathspec v0.1.0, gix-packetline v0.16.5, gix-transport v0.35.0, gix-protocol v0.38.0, gix-revision v0.20.0, gix-refspec v0.16.0, gix-submodule v0.2.0, gix-worktree v0.24.0, gix-worktree-state v0.1.0, gix v0.52.0, gitoxide-core v0.31.0, gitoxide v0.29.0, safety bump 41 crates ([`30b2761`](https://github.com/Byron/gitoxide/commit/30b27615047692d3ced1b2d9c2ac15a80f79fbee))
- Update changelogs prior to release ([`f23ea88`](https://github.com/Byron/gitoxide/commit/f23ea8828f2d9ba7559973daca388c9591bcc5fc))
- Don't call crate 'WIP' in manifest anymore. ([`229bd48`](https://github.com/Byron/gitoxide/commit/229bd4899213f749a7cc124aa2b82a1368fba40f))
- Merge branch 'dev-on-linux' ([`6b4a303`](https://github.com/Byron/gitoxide/commit/6b4a30330fe49fc97daa73f55bf56580cc0597aa))
diff --git a/vendor/gix-command/Cargo.toml b/vendor/gix-command/Cargo.toml
index 163a5bc90..4d0a4e186 100644
--- a/vendor/gix-command/Cargo.toml
+++ b/vendor/gix-command/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-command"
-version = "0.2.9"
+version = "0.2.10"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
description = "A crate of the gitoxide project handling internal git command execution"
license = "MIT OR Apache-2.0"
diff --git a/vendor/gix-command/tests/command.rs b/vendor/gix-command/tests/command.rs
index e2faa7fc9..606066da1 100644
--- a/vendor/gix-command/tests/command.rs
+++ b/vendor/gix-command/tests/command.rs
@@ -82,32 +82,26 @@ mod spawn {
#[test]
fn sh_shell_specific_script_code_with_single_extra_arg() -> crate::Result {
- let out = gix_command::prepare("echo")
+ let out = gix_command::prepare("printf")
.with_shell()
.arg("1")
.spawn()?
.wait_with_output()?;
assert!(out.status.success());
- #[cfg(not(windows))]
- assert_eq!(out.stdout.as_bstr(), "1\n");
- #[cfg(windows)]
- assert_eq!(out.stdout.as_bstr(), "1\r\n");
+ assert_eq!(out.stdout.as_bstr(), "1");
Ok(())
}
#[test]
fn sh_shell_specific_script_code_with_multiple_extra_args() -> crate::Result {
- let out = gix_command::prepare("echo")
+ let out = gix_command::prepare("printf")
.with_shell()
- .arg("1")
- .arg("2")
+ .arg("%s")
+ .arg("arg")
.spawn()?
.wait_with_output()?;
assert!(out.status.success());
- #[cfg(not(windows))]
- assert_eq!(out.stdout.as_bstr(), "1 2\n");
- #[cfg(windows)]
- assert_eq!(out.stdout.as_bstr(), "1 2\r\n");
+ assert_eq!(out.stdout.as_bstr(), "arg");
Ok(())
}
}
diff --git a/vendor/gix-commitgraph/.cargo-checksum.json b/vendor/gix-commitgraph/.cargo-checksum.json
index 90d433eb3..a32cdfadf 100644
--- a/vendor/gix-commitgraph/.cargo-checksum.json
+++ b/vendor/gix-commitgraph/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"838c516b40b10b9f5a09b20c0853a96f94c5f656de6ddb6b03e495bf0a24f14c","Cargo.toml":"cded627c2736b3e73a9e38010cbf1aba5ac025d2552d711c7d8e9e1d51d4c95f","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/access.rs":"b3ec297607f77f7093d7bb8f361d07cb44dce86909193a63e634b953277bc35f","src/file/access.rs":"83a5dd11a669104ee0ecdfe2aa76f722dc9f6d2bd48f5226bbf7b40b40a272ee","src/file/commit.rs":"cc279b9f180c29b3515cb0f64f3e745a32000e615bed5dd24d014d45f6a4fd1d","src/file/init.rs":"8d93d50c71ac0d868a383b48b0d00abd9383db2b2184688cfa04ba640a159696","src/file/mod.rs":"c8bc1c0e89918c48c8a7b316bdb31213401b9f5e20b682be726d4a73e18c817c","src/file/verify.rs":"a5a4622962362b001905bc2d8c4958e8bfc9f05c7dff0c6d4dd2e6027b24de94","src/init.rs":"50fd7fbfab7cefc65b4f6c441d330805d7cf9b0626e05f8c68b9b364bbc3f213","src/lib.rs":"713ba68dfa3962fa6ef5a84131c5f7820a6127292876d013a12c3174b025524c","src/verify.rs":"3c67abd7c76f4e336b9fc850ff6f9269841e6b26f9450e96471f4d9ea61db7ff"},"package":"e75a975ee22cf0a002bfe9b5d5cb3d2a88e263a8a178cd7509133cff10f4df8a"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"80a283507f17188b6c06b9357c7704e1a73edbfe407bd93b1c70f2476e9829d4","Cargo.toml":"5f00b4eafcd6330e992b80708966435f508759dcc0a9feaea6bf33b417bf60d2","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/access.rs":"b3ec297607f77f7093d7bb8f361d07cb44dce86909193a63e634b953277bc35f","src/file/access.rs":"83a5dd11a669104ee0ecdfe2aa76f722dc9f6d2bd48f5226bbf7b40b40a272ee","src/file/commit.rs":"cc279b9f180c29b3515cb0f64f3e745a32000e615bed5dd24d014d45f6a4fd1d","src/file/init.rs":"8d93d50c71ac0d868a383b48b0d00abd9383db2b2184688cfa04ba640a159696","src/file/mod.rs":"c8bc1c0e89918c48c8a7b316bdb31213401b9f5e20b682be726d4a73e18c817c","src/file/verify.rs":"a5a4622962362b001905bc2d8c4958e8bfc9f05c7dff0c6d4dd2e6027b24de94","src/init.rs":"50fd7fbfab7cefc65b4f6c441d330805d7cf9b0626e05f8c68b9b364bbc3f213","src/lib.rs":"83d3cc2c8a668f69c9fa3b092b993b018b0e78112d9c2a5829171964855f32a6","src/verify.rs":"3c67abd7c76f4e336b9fc850ff6f9269841e6b26f9450e96471f4d9ea61db7ff"},"package":"7e8bc78b1a6328fa6d8b3a53b6c73997af37fd6bfc1d6c49f149e63bda5cbb36"} \ No newline at end of file
diff --git a/vendor/gix-commitgraph/CHANGELOG.md b/vendor/gix-commitgraph/CHANGELOG.md
index 8c1ffaa35..3c2cb618d 100644
--- a/vendor/gix-commitgraph/CHANGELOG.md
+++ b/vendor/gix-commitgraph/CHANGELOG.md
@@ -5,6 +5,30 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.22.0 (2023-10-12)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 2 commits contributed to the release over the course of 6 calendar days.
+ - 17 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+ - Fix docs ([`995bc84`](https://github.com/Byron/gitoxide/commit/995bc840664cbd4aeb7f95592e3125dee63bdcd4))
+</details>
+
## 0.21.0 (2023-09-24)
A maintenance release without user-facing changes.
@@ -13,7 +37,7 @@ A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
- - 1 commit contributed to the release.
+ - 2 commits contributed to the release.
- 16 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,6 +49,7 @@ A maintenance release without user-facing changes.
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
</details>
diff --git a/vendor/gix-commitgraph/Cargo.toml b/vendor/gix-commitgraph/Cargo.toml
index c38cba49b..3b3c033e8 100644
--- a/vendor/gix-commitgraph/Cargo.toml
+++ b/vendor/gix-commitgraph/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-commitgraph"
-version = "0.21.0"
+version = "0.22.0"
authors = [
"Conor Davis <gitoxide@conor.fastmail.fm>",
"Sebastian Thiel <sebastian.thiel@icloud.com>",
@@ -52,11 +52,11 @@ optional = true
version = "^0.4.4"
[dependencies.gix-features]
-version = "^0.35.0"
+version = "^0.36.0"
features = ["rustsha1"]
[dependencies.gix-hash]
-version = "^0.13.0"
+version = "^0.13.1"
[dependencies.memmap2]
version = "0.7.0"
diff --git a/vendor/gix-commitgraph/src/lib.rs b/vendor/gix-commitgraph/src/lib.rs
index a247ccd87..d7fb23d38 100644
--- a/vendor/gix-commitgraph/src/lib.rs
+++ b/vendor/gix-commitgraph/src/lib.rs
@@ -20,7 +20,7 @@ use std::path::Path;
/// A single commit-graph file.
///
/// All operations on a `File` are local to that graph file. Since a commit graph can span multiple
-/// files, all interesting graph operations belong on [`Graph`][crate::Graph].
+/// files, all interesting graph operations belong on [`Graph`].
pub struct File {
base_graph_count: u8,
base_graphs_list_offset: Option<usize>,
diff --git a/vendor/gix-config/.cargo-checksum.json b/vendor/gix-config/.cargo-checksum.json
index 5980d277e..9d2d3936e 100644
--- a/vendor/gix-config/.cargo-checksum.json
+++ b/vendor/gix-config/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"c7420b36fdb8df169d5602db844ca9ae6e7ccff9ffb5a839c67f7fc237b23409","Cargo.toml":"3a1f6695b5517513fcb28b6c36ee6c3da8515ecd7dd438c0426de7ddd1cd5d5a","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","README.md":"e57a2cbe8b6bbe265bb59ac9c27fe3cbe97b325d7bce60f25654bda3fa7686f4","src/file/access/comfort.rs":"35cc4a95b75bf2a9eee0658d92a2f9ed1aa435f9789924ac935e45787d9ca804","src/file/access/mod.rs":"89141297ba7e1651c60a3637760598f8509fe651a80dc5801aace66bd2c52292","src/file/access/mutate.rs":"7bfade3b76dcd41f52ef15cdd39aa0ee3b2faa7d299b60eeb1f59ecd25cd2138","src/file/access/raw.rs":"7efa0a466a682fea7e34e8eba59c5faa2f3b4d74c0323876d71676d1639f3566","src/file/access/read_only.rs":"e525277fb12e0d8487c18d9df54d3ec0a473844ef5505f3e217c19c6b9a13af8","src/file/impls.rs":"c066fdeaeca00a8899704216be060d2b461aa21bd9800883d29e3cc0a59f5fd8","src/file/includes/mod.rs":"f82ed5445391c8442da672b7f8c92f85844ba58d35aa0dfcaf2dfa8c209307d2","src/file/includes/types.rs":"0c1c7c52cee624d840e356f0db0c7791392f89cc6ab0fc7cf074bd05d952c85a","src/file/init/comfort.rs":"f53191855e04022bd1ee54dae89bd51866ebfd7c17518f2ace576d7f8dd1cf0e","src/file/init/from_env.rs":"97f976c4114d9bb6654ffd744b3e7be827134274affe5e902026730bc4e5e8f5","src/file/init/from_paths.rs":"af6d2aefb7abe28393982c4899379a8878cf277e510bf97fa9319034518ea29a","src/file/init/mod.rs":"3432a5eac10605c86c6fcff6dab169a8e3ddba8fe8f90603559a9e94f1ac3474","src/file/init/types.rs":"ceeceed969b084123b9c82cbefd0d2b1bae0dcd12714dad1ce99d6ee75866d62","src/file/meta.rs":"02c46267b6088e7d1be3f7402929b3b98cdab71c682e1efae2c0eebd88ac97ad","src/file/mod.rs":"161fa786ead8ca043467fd5c7714db6ecb277b09f9a0e6034c5427bc6ccc8650","src/file/mutable/mod.rs":"cd2a5d54b9d8f45c01a1938fdc8d48f5416b3ce9c80923ce53fd57d897c0c627","src/file/mutable/multi_value.rs":"b3824387af097c410c8a9627239036e15525af5d4113ebcfbb4c48e6f8591337","src/file/mutable/section.rs":"2fcf2a642d1ebc14292484748e967f0a9de0cc8bb45518a36e951575973c53cc","src/file/mutable/value.rs":"4211ff648477e37c4f8bcf7fa497233b09a24a8b411e57fc4be441d793377f4d","src/file/section/body.rs":"475982db8cc36f9e265e7302f8e21c39dcd145644fd8b4961a93a68cd98ed382","src/file/section/mod.rs":"f86284e584e0f945c7d3b75b76a64ad8e7deb62917edd77cab624c2c01fda326","src/file/tests.rs":"cceccb786694f29e858e54a6fdc6769a64ae58989809bdd60e09041156050f1e","src/file/util.rs":"2b9c52b242c45cf7075cddf5383523c095c01ce612b9da139a853039beff6bc8","src/file/write.rs":"8a2ee27cdcbc487575f0839a4d30d62c56bbf60eb26aaca427343482b3b480cf","src/lib.rs":"3067b8d857e4ba7db9c4d620bc6f166119ae15f884606b20885a568361e927f9","src/lookup.rs":"205df00cabf25f0fd3709325e75cdc2c1cd2af4ef86bbd15253543a9bb962e62","src/parse/comment.rs":"dfe1ad56385490062792c59b3068552e847b9c55b7a91ee480b7ea6026f12889","src/parse/error.rs":"7e3ce30c7036cb6900be5e751657b879fc8a7dcab760f10ea481d4a57a90b347","src/parse/event.rs":"1130a828c5b7cad96074c9359d42d7327c5c6b8c7eceadacca8f667c36d0d9b1","src/parse/events.rs":"7e5f5010425838bde9f773bb5051c9851276b71471ded47d1abaedd3af0a82f6","src/parse/key.rs":"d9e9bf4249bdf1563613c0994888caac5824c8e9e1fa87e5deeb28e84a52c5ad","src/parse/mod.rs":"ca9469b95273ccdd8f7a21da73f2833e8f56d0b6f4c7e358eca745bb7942c9fd","src/parse/nom/mod.rs":"0e0f4d795e937dec90f4c660d2d3ffc53195ea5cc019dfe1bf094d8f784ac3a2","src/parse/nom/tests.rs":"9e4edcc7b9f5a3ba2e0a3f24f97bf0f8d5b611ff767edc640a6d49b68eb04876","src/parse/section/header.rs":"449c37a084752d32a37d14d47e996d21b614f0f5f14047747cd5947a08b810d1","src/parse/section/mod.rs":"5be22e4d120a12a59be38fcb25a95ce7b0e581ded53e99311ffb0f3780ac841a","src/parse/section/unvalidated.rs":"ffbc552e5c6f78fca05ad05f703fef9889777c22facb526ea5fca9c0121ae8c4","src/parse/tests.rs":"911f6972060feb521448f4e6ec9824ff524a9bc51d80fe1460548a6b88036dc4","src/source.rs":"719ed8b2df9079816420a27f3d9ed3cd66f00c1603b1ef76d13145fa93a59928","src/types.rs":"7a05db6b5fd1c43a0a908f223bdb301c16406dbd20bc3a165205244df3933296","src/value/mod.rs":"1e46a250fc69cecb11d762290fa0c5a2b8f51451541e9e457d0bacafd160e54d","src/value/normalize.rs":"54ca650fdaaf24124df0c6d9137eb90dfda314b28386778970aa25e6b01397f5"},"package":"c171514b40487d3f677ae37efc0f45ac980e3169f23c27eb30a70b47fdf88ab5"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"268dd659f182a10184fffae16e1c699c7dfbb2c8e104c8edd092990d1d46102f","Cargo.toml":"578ec7b6cb115c8941cde9408e9de35a3ba88536e12a95a1b099d7ccff348b4a","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","README.md":"e57a2cbe8b6bbe265bb59ac9c27fe3cbe97b325d7bce60f25654bda3fa7686f4","src/file/access/comfort.rs":"35cc4a95b75bf2a9eee0658d92a2f9ed1aa435f9789924ac935e45787d9ca804","src/file/access/mod.rs":"89141297ba7e1651c60a3637760598f8509fe651a80dc5801aace66bd2c52292","src/file/access/mutate.rs":"7bfade3b76dcd41f52ef15cdd39aa0ee3b2faa7d299b60eeb1f59ecd25cd2138","src/file/access/raw.rs":"7efa0a466a682fea7e34e8eba59c5faa2f3b4d74c0323876d71676d1639f3566","src/file/access/read_only.rs":"e525277fb12e0d8487c18d9df54d3ec0a473844ef5505f3e217c19c6b9a13af8","src/file/impls.rs":"c066fdeaeca00a8899704216be060d2b461aa21bd9800883d29e3cc0a59f5fd8","src/file/includes/mod.rs":"f82ed5445391c8442da672b7f8c92f85844ba58d35aa0dfcaf2dfa8c209307d2","src/file/includes/types.rs":"0c1c7c52cee624d840e356f0db0c7791392f89cc6ab0fc7cf074bd05d952c85a","src/file/init/comfort.rs":"f53191855e04022bd1ee54dae89bd51866ebfd7c17518f2ace576d7f8dd1cf0e","src/file/init/from_env.rs":"97f976c4114d9bb6654ffd744b3e7be827134274affe5e902026730bc4e5e8f5","src/file/init/from_paths.rs":"af6d2aefb7abe28393982c4899379a8878cf277e510bf97fa9319034518ea29a","src/file/init/mod.rs":"3432a5eac10605c86c6fcff6dab169a8e3ddba8fe8f90603559a9e94f1ac3474","src/file/init/types.rs":"ceeceed969b084123b9c82cbefd0d2b1bae0dcd12714dad1ce99d6ee75866d62","src/file/meta.rs":"02c46267b6088e7d1be3f7402929b3b98cdab71c682e1efae2c0eebd88ac97ad","src/file/mod.rs":"161fa786ead8ca043467fd5c7714db6ecb277b09f9a0e6034c5427bc6ccc8650","src/file/mutable/mod.rs":"cd2a5d54b9d8f45c01a1938fdc8d48f5416b3ce9c80923ce53fd57d897c0c627","src/file/mutable/multi_value.rs":"b3824387af097c410c8a9627239036e15525af5d4113ebcfbb4c48e6f8591337","src/file/mutable/section.rs":"2fcf2a642d1ebc14292484748e967f0a9de0cc8bb45518a36e951575973c53cc","src/file/mutable/value.rs":"4211ff648477e37c4f8bcf7fa497233b09a24a8b411e57fc4be441d793377f4d","src/file/section/body.rs":"475982db8cc36f9e265e7302f8e21c39dcd145644fd8b4961a93a68cd98ed382","src/file/section/mod.rs":"f86284e584e0f945c7d3b75b76a64ad8e7deb62917edd77cab624c2c01fda326","src/file/tests.rs":"cceccb786694f29e858e54a6fdc6769a64ae58989809bdd60e09041156050f1e","src/file/util.rs":"2b9c52b242c45cf7075cddf5383523c095c01ce612b9da139a853039beff6bc8","src/file/write.rs":"8a2ee27cdcbc487575f0839a4d30d62c56bbf60eb26aaca427343482b3b480cf","src/lib.rs":"3067b8d857e4ba7db9c4d620bc6f166119ae15f884606b20885a568361e927f9","src/lookup.rs":"205df00cabf25f0fd3709325e75cdc2c1cd2af4ef86bbd15253543a9bb962e62","src/parse/comment.rs":"dfe1ad56385490062792c59b3068552e847b9c55b7a91ee480b7ea6026f12889","src/parse/error.rs":"7e3ce30c7036cb6900be5e751657b879fc8a7dcab760f10ea481d4a57a90b347","src/parse/event.rs":"1130a828c5b7cad96074c9359d42d7327c5c6b8c7eceadacca8f667c36d0d9b1","src/parse/events.rs":"7e5f5010425838bde9f773bb5051c9851276b71471ded47d1abaedd3af0a82f6","src/parse/key.rs":"d9e9bf4249bdf1563613c0994888caac5824c8e9e1fa87e5deeb28e84a52c5ad","src/parse/mod.rs":"ca9469b95273ccdd8f7a21da73f2833e8f56d0b6f4c7e358eca745bb7942c9fd","src/parse/nom/mod.rs":"0e0f4d795e937dec90f4c660d2d3ffc53195ea5cc019dfe1bf094d8f784ac3a2","src/parse/nom/tests.rs":"9e4edcc7b9f5a3ba2e0a3f24f97bf0f8d5b611ff767edc640a6d49b68eb04876","src/parse/section/header.rs":"449c37a084752d32a37d14d47e996d21b614f0f5f14047747cd5947a08b810d1","src/parse/section/mod.rs":"85b51dac232a15810f11ef49afe8817127c366d00bbe21fe3859beb44d23184a","src/parse/section/unvalidated.rs":"ffbc552e5c6f78fca05ad05f703fef9889777c22facb526ea5fca9c0121ae8c4","src/parse/tests.rs":"911f6972060feb521448f4e6ec9824ff524a9bc51d80fe1460548a6b88036dc4","src/source.rs":"719ed8b2df9079816420a27f3d9ed3cd66f00c1603b1ef76d13145fa93a59928","src/types.rs":"7a05db6b5fd1c43a0a908f223bdb301c16406dbd20bc3a165205244df3933296","src/value/mod.rs":"1e46a250fc69cecb11d762290fa0c5a2b8f51451541e9e457d0bacafd160e54d","src/value/normalize.rs":"54ca650fdaaf24124df0c6d9137eb90dfda314b28386778970aa25e6b01397f5"},"package":"5cae98c6b4c66c09379bc35274b172587d6b0ac369a416c39128ad8c6454f9bb"} \ No newline at end of file
diff --git a/vendor/gix-config/CHANGELOG.md b/vendor/gix-config/CHANGELOG.md
index a26ae116b..19d318895 100644
--- a/vendor/gix-config/CHANGELOG.md
+++ b/vendor/gix-config/CHANGELOG.md
@@ -5,6 +5,36 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.31.0 (2023-10-12)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 2 commits contributed to the release over the course of 6 calendar days.
+ - 17 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Thanks Clippy
+
+<csr-read-only-do-not-edit/>
+
+[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic.
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+ - Thanks clippy ([`345712d`](https://github.com/Byron/gitoxide/commit/345712dcdfddcccc630bbfef2ed4f461b21550d3))
+</details>
+
## 0.30.0 (2023-09-24)
<csr-id-db0c4017142fd25d26d1c6860972b1ac84b24a6e/>
@@ -22,7 +52,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<csr-read-only-do-not-edit/>
- - 3 commits contributed to the release over the course of 15 calendar days.
+ - 4 commits contributed to the release over the course of 15 calendar days.
- 16 days passed between releases.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -34,6 +64,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
- Merge branch 'path-config' ([`9c528dc`](https://github.com/Byron/gitoxide/commit/9c528dc8282c8b2f3a023e523dccdd0f7a711e61))
- Add more test cases to pin behaviour around string and path handling. ([`db0c401`](https://github.com/Byron/gitoxide/commit/db0c4017142fd25d26d1c6860972b1ac84b24a6e))
@@ -2712,7 +2743,7 @@ This is a maintenance release without functional changes.
- _None._
<csr-unknown>
-lenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopen<csr-unknown/>
+lenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopen<csr-unknown/>
<csr-unknown/>
## v0.1.1 (2021-05-09)
diff --git a/vendor/gix-config/Cargo.toml b/vendor/gix-config/Cargo.toml
index 77df2601d..48f7df60c 100644
--- a/vendor/gix-config/Cargo.toml
+++ b/vendor/gix-config/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-config"
-version = "0.30.0"
+version = "0.31.0"
authors = ["Edward Shen <code@eddie.sh>"]
include = [
"src/**/*",
@@ -63,16 +63,16 @@ optional = true
version = "^0.14.0"
[dependencies.gix-features]
-version = "^0.35.0"
+version = "^0.36.0"
[dependencies.gix-glob]
-version = "^0.13.0"
+version = "^0.14.0"
[dependencies.gix-path]
version = "^0.10.0"
[dependencies.gix-ref]
-version = "^0.37.0"
+version = "^0.38.0"
[dependencies.gix-sec]
version = "^0.10.0"
diff --git a/vendor/gix-config/src/parse/section/mod.rs b/vendor/gix-config/src/parse/section/mod.rs
index 7ba08b87d..5af292675 100644
--- a/vendor/gix-config/src/parse/section/mod.rs
+++ b/vendor/gix-config/src/parse/section/mod.rs
@@ -88,7 +88,7 @@ mod types {
impl PartialOrd for $name<'_> {
fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
- self.cmp(other).into()
+ Some(self.cmp(other))
}
}
diff --git a/vendor/gix-credentials/.cargo-checksum.json b/vendor/gix-credentials/.cargo-checksum.json
index b6b7c26bc..32b3fcb7c 100644
--- a/vendor/gix-credentials/.cargo-checksum.json
+++ b/vendor/gix-credentials/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"18f404a290327b8f9e60627ca8e24f2cf848fc07239d44d1361367f0e03db700","Cargo.lock":"87a59a3bc9214d292b558ccd313b678d37eef6855a9ec60f359e02b6b0c440fb","Cargo.toml":"de713a96ef47b8842f67ac269db64e6a1d02f8efe8a603e0d4e5d904d7897832","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","examples/custom-helper.rs":"fadd3fe61cf2d3038cdb6b634e5a52f298d2c156c2317f5e7c703715a9096dff","examples/git-credential-lite.rs":"f25a670f26e3b4ec444afea3354a94ab1c075c6988314e0925e530e6f0dcf46b","examples/invoke-git-credential.rs":"85d2662bcc37fa4425e967149e141caa7e739fe8bc7dc8cdcc872ea5c0c6a6c5","src/helper/cascade.rs":"9b46c0a51e3493c321e67d316687602f31f690af58057819cebbcf9bd7e30a89","src/helper/invoke.rs":"d2a0dae23778647c3e6c0ebb403387d18d2a30eabf696934e52204238bd57e61","src/helper/mod.rs":"df942a16e9e80b2e63d3fa44c8317e078ed35cc0682ec967d234743529b3dc0e","src/lib.rs":"f99aead3fa9ba153b33c93541c0063550e646d121543d9fb07aa52860100cd48","src/program/main.rs":"22f6fd7103d3b4e01ea1a4843229ca3955460ea9975e7a7000868f5cfe6087a5","src/program/mod.rs":"2364d3ddb51f7b4f3575aca343b4ffc286bdb67d16947d1d590a7e9b4961dc76","src/protocol/context/mod.rs":"e7a8c322326832d4935b7daf75d1f8d91852fc9e5204bd61c133df8ba9ac1e75","src/protocol/context/serde.rs":"e41d3de04747ab5546d9297031ade61df772c62ec4593b0592062f90ad3f8e17","src/protocol/mod.rs":"acc1bc337267c3f295b5c9570284bb10c2508dd744296a28bdfabb7cd1201586","tests/credentials.rs":"7af4899fa6582525f33a39b3f5874eebc42b3a94788ac4b0180f25aadf9fc0b2","tests/fixtures/all-but-credentials.sh":"df53ad6402be8133c2ea4fa3f3b54471b629dde48f4f0fb3affb770c22961f81","tests/fixtures/custom-helper.sh":"4484e5ab3447136490161cb7cc8c63ee6807b8dec5feed0e95824fb83ae0e044","tests/fixtures/fail.sh":"93f2c30907443ad1411fbba7a1c6be1f05e0a349a7321d764e0f641218c497e6","tests/fixtures/last-pass.sh":"84722968b9e510f37267a97ce6cd29a64b33d228a1b1117958629abcc0c8b8b0","tests/fixtures/password.sh":"0eda11e74bd2603121ee1de795cbb6b7f9055ea4dd5783aa0f82960e7d9c6d05","tests/fixtures/reflect.sh":"104643bd6928f5e0c402f7e4fe5f6f12ad372859737b8a3a24fd5c38dc3a42e5","tests/fixtures/url.sh":"b887d0f70b8d8ea294aba4ebebd9d7edacd87a21413797ea03d2f282ccdc7af3","tests/fixtures/username.sh":"2f0363864dc67df16cb6c71422eee0cd34b4f6230be54206c02ce8b2111c2225","tests/helper/cascade.rs":"40752df9705581ea7c51376cedddc16c7a5f53afe3344f55f37e371a8d15b6c8","tests/helper/context.rs":"efd10518c8b97db402e75004d888cd96d2061a19a2b57e94df26863c6c418b8c","tests/helper/invoke.rs":"26909033ebe2d6f4b683d2e9a1fd572419fa154c95da2f5a2b7d5f8bee26afdc","tests/helper/mod.rs":"4ba9732420f2d0c25199a8a6e4056064c5df753a73dd2c4a4d6163b5b4dc2600","tests/program/from_custom_definition.rs":"b229b88038ed26e6b9984660575f6f488b861bf98f4bac6565130065d9da18a3","tests/program/mod.rs":"a1618f6a32c09ed909204cbb01ddd50c20e481e0a6e8d0b02d23a148b4b12e0f","tests/protocol/context.rs":"19af6d90a7a70fde1d6741f55fbe7445d5b4bdab58b5a70cc26a56f7903e1bf4","tests/protocol/mod.rs":"56b54a6a05c127cfc99fe60bbb24f9cc931b6579e394a5b0079022a8cb6ef3d1"},"package":"46900b884cc5af6a6c141ee741607c0c651a4e1d33614b8d888a1ba81cc0bc8a"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"55e6e80530e5e664aa303df6711576f69b9b1a5f1813bf50fb9dc4dac92e69c3","Cargo.lock":"424f54f268c98645ede47f71794e718651d9e118f347398759e68f326530251b","Cargo.toml":"4585c9be7d79ea18ef631c8850ead16d08f1950f1a0b3acf8fb89acdb7f31c09","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","examples/custom-helper.rs":"fadd3fe61cf2d3038cdb6b634e5a52f298d2c156c2317f5e7c703715a9096dff","examples/git-credential-lite.rs":"f25a670f26e3b4ec444afea3354a94ab1c075c6988314e0925e530e6f0dcf46b","examples/invoke-git-credential.rs":"85d2662bcc37fa4425e967149e141caa7e739fe8bc7dc8cdcc872ea5c0c6a6c5","src/helper/cascade.rs":"9b46c0a51e3493c321e67d316687602f31f690af58057819cebbcf9bd7e30a89","src/helper/invoke.rs":"d2a0dae23778647c3e6c0ebb403387d18d2a30eabf696934e52204238bd57e61","src/helper/mod.rs":"df942a16e9e80b2e63d3fa44c8317e078ed35cc0682ec967d234743529b3dc0e","src/lib.rs":"f99aead3fa9ba153b33c93541c0063550e646d121543d9fb07aa52860100cd48","src/program/main.rs":"22f6fd7103d3b4e01ea1a4843229ca3955460ea9975e7a7000868f5cfe6087a5","src/program/mod.rs":"2364d3ddb51f7b4f3575aca343b4ffc286bdb67d16947d1d590a7e9b4961dc76","src/protocol/context/mod.rs":"e7a8c322326832d4935b7daf75d1f8d91852fc9e5204bd61c133df8ba9ac1e75","src/protocol/context/serde.rs":"e41d3de04747ab5546d9297031ade61df772c62ec4593b0592062f90ad3f8e17","src/protocol/mod.rs":"acc1bc337267c3f295b5c9570284bb10c2508dd744296a28bdfabb7cd1201586","tests/credentials.rs":"7af4899fa6582525f33a39b3f5874eebc42b3a94788ac4b0180f25aadf9fc0b2","tests/fixtures/all-but-credentials.sh":"df53ad6402be8133c2ea4fa3f3b54471b629dde48f4f0fb3affb770c22961f81","tests/fixtures/custom-helper.sh":"4484e5ab3447136490161cb7cc8c63ee6807b8dec5feed0e95824fb83ae0e044","tests/fixtures/fail.sh":"93f2c30907443ad1411fbba7a1c6be1f05e0a349a7321d764e0f641218c497e6","tests/fixtures/last-pass.sh":"84722968b9e510f37267a97ce6cd29a64b33d228a1b1117958629abcc0c8b8b0","tests/fixtures/password.sh":"0eda11e74bd2603121ee1de795cbb6b7f9055ea4dd5783aa0f82960e7d9c6d05","tests/fixtures/reflect.sh":"104643bd6928f5e0c402f7e4fe5f6f12ad372859737b8a3a24fd5c38dc3a42e5","tests/fixtures/url.sh":"b887d0f70b8d8ea294aba4ebebd9d7edacd87a21413797ea03d2f282ccdc7af3","tests/fixtures/username.sh":"2f0363864dc67df16cb6c71422eee0cd34b4f6230be54206c02ce8b2111c2225","tests/helper/cascade.rs":"40752df9705581ea7c51376cedddc16c7a5f53afe3344f55f37e371a8d15b6c8","tests/helper/context.rs":"efd10518c8b97db402e75004d888cd96d2061a19a2b57e94df26863c6c418b8c","tests/helper/invoke.rs":"26909033ebe2d6f4b683d2e9a1fd572419fa154c95da2f5a2b7d5f8bee26afdc","tests/helper/mod.rs":"4ba9732420f2d0c25199a8a6e4056064c5df753a73dd2c4a4d6163b5b4dc2600","tests/program/from_custom_definition.rs":"b229b88038ed26e6b9984660575f6f488b861bf98f4bac6565130065d9da18a3","tests/program/mod.rs":"a1618f6a32c09ed909204cbb01ddd50c20e481e0a6e8d0b02d23a148b4b12e0f","tests/protocol/context.rs":"19af6d90a7a70fde1d6741f55fbe7445d5b4bdab58b5a70cc26a56f7903e1bf4","tests/protocol/mod.rs":"56b54a6a05c127cfc99fe60bbb24f9cc931b6579e394a5b0079022a8cb6ef3d1"},"package":"1c5c5d74069b842a1861e581027ac6b7ad9ff66f5911c89b9f45484d7ebda6a4"} \ No newline at end of file
diff --git a/vendor/gix-credentials/CHANGELOG.md b/vendor/gix-credentials/CHANGELOG.md
index 089028828..79a17a356 100644
--- a/vendor/gix-credentials/CHANGELOG.md
+++ b/vendor/gix-credentials/CHANGELOG.md
@@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-## 0.20.0 (2023-09-24)
+## 0.21.0 (2023-10-12)
A maintenance release without user-facing changes.
@@ -14,6 +14,29 @@ A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
- 1 commit contributed to the release.
+ - 17 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+</details>
+
+## 0.20.0 (2023-09-24)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 2 commits contributed to the release.
- 16 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,6 +48,7 @@ A maintenance release without user-facing changes.
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
</details>
diff --git a/vendor/gix-credentials/Cargo.lock b/vendor/gix-credentials/Cargo.lock
index b5b6e1b4d..e4067d04b 100644
--- a/vendor/gix-credentials/Cargo.lock
+++ b/vendor/gix-credentials/Cargo.lock
@@ -95,9 +95,9 @@ dependencies = [
[[package]]
name = "gix-command"
-version = "0.2.9"
+version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f28f654184b5f725c5737c7e4f466cbd8f0102ac352d5257eeab19647ee4256"
+checksum = "3c576cfbf577f72c097b5f88aedea502cd62952bdc1fb3adcab4531d5525a4c7"
dependencies = [
"bstr",
]
@@ -117,7 +117,7 @@ dependencies = [
[[package]]
name = "gix-credentials"
-version = "0.20.0"
+version = "0.21.0"
dependencies = [
"bstr",
"document-features",
@@ -133,9 +133,9 @@ dependencies = [
[[package]]
name = "gix-features"
-version = "0.35.0"
+version = "0.36.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b9ff423ae4983f762659040d13dd7a5defbd54b6a04ac3cc7347741cec828cd"
+checksum = "51f4365ba17c4f218d7fd9ec102b8d2d3cb0ca200a835e81151ace7778aec827"
dependencies = [
"gix-hash",
"gix-trace",
@@ -144,9 +144,9 @@ dependencies = [
[[package]]
name = "gix-hash"
-version = "0.13.0"
+version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2ccf425543779cddaa4a7c62aba3fa9d90ea135b160be0a72dd93c063121ad4a"
+checksum = "1884c7b41ea0875217c1be9ce91322f90bde433e91d374d0e1276073a51ccc60"
dependencies = [
"faster-hex",
"thiserror",
@@ -199,9 +199,9 @@ checksum = "96b6d623a1152c3facb79067d6e2ecdae48130030cf27d6eb21109f13bd7b836"
[[package]]
name = "gix-url"
-version = "0.24.0"
+version = "0.25.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6125ecf46e8c68bf7202da6cad239831daebf0247ffbab30210d72f3856e420f"
+checksum = "fa9a4e69d57162242b32cc05e1b96681cb8e513210e3a0b4e89ff647a5b2ab50"
dependencies = [
"bstr",
"gix-features",
diff --git a/vendor/gix-credentials/Cargo.toml b/vendor/gix-credentials/Cargo.toml
index b41be2301..cdaa358d8 100644
--- a/vendor/gix-credentials/Cargo.toml
+++ b/vendor/gix-credentials/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-credentials"
-version = "0.20.0"
+version = "0.21.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
description = "A crate of the gitoxide project to interact with git credentials helpers"
license = "MIT OR Apache-2.0"
@@ -40,7 +40,7 @@ version = "0.2.1"
optional = true
[dependencies.gix-command]
-version = "^0.2.9"
+version = "^0.2.10"
[dependencies.gix-config-value]
version = "^0.14.0"
@@ -55,7 +55,7 @@ version = "^0.7.0"
version = "^0.10.0"
[dependencies.gix-url]
-version = "^0.24.0"
+version = "^0.25.0"
[dependencies.serde]
version = "1.0.114"
diff --git a/vendor/gix-diff/.cargo-checksum.json b/vendor/gix-diff/.cargo-checksum.json
index 3d5fbfc4b..be0a727fb 100644
--- a/vendor/gix-diff/.cargo-checksum.json
+++ b/vendor/gix-diff/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"566ce02ee8fa673cce038a30761a7f5e376c02dfff24c1674152f1f18747fbef","Cargo.toml":"7fcf446571292a4b4be999270efddd73f0cbe2199db9f0780b56e24e929a4e21","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/blob.rs":"2ee987cc738042ed3d5a001943685abe8692a49a3a1c253a0f6fd96702c35240","src/lib.rs":"dad21febb5a349ad70e4b79b980c54038a57bf28ed114c3ac5a3054cc953f560","src/tree/changes.rs":"ca134d8abf6934416002658da0724a4150b074de70b9ed5f03d5a71344649cb0","src/tree/mod.rs":"e82dc5ba05a10f85cdb01d7a6d14911e83f3e01fc6e4ca7b9d6835f3ac42b79a","src/tree/recorder.rs":"9170902868720607ad18c25a81a2ac172c4ce641f632fd6b9408538d98b47f71","src/tree/visit.rs":"823ca26b1658ed101da8ae400d481b3008670aeb3ff72680a29f8b2bc5029ba1"},"package":"788ddb152c388206e81f36bcbb574e7ed7827c27d8fa62227b34edc333d8928c"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"bab6defc9b6df696bf60f4ff7e1b8a962ba9eec62c46d02035dc69087c3deabd","Cargo.toml":"191601bc8eab8717eb45936e1c9bd540ea2b20ec4d162fca4289cf27920939fb","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/blob.rs":"2ee987cc738042ed3d5a001943685abe8692a49a3a1c253a0f6fd96702c35240","src/lib.rs":"dad21febb5a349ad70e4b79b980c54038a57bf28ed114c3ac5a3054cc953f560","src/tree/changes.rs":"ca134d8abf6934416002658da0724a4150b074de70b9ed5f03d5a71344649cb0","src/tree/mod.rs":"a1d7fe6b23bd76b37d3f29fc358e049abfbea46d2707cd6727b8622cd8393261","src/tree/recorder.rs":"9170902868720607ad18c25a81a2ac172c4ce641f632fd6b9408538d98b47f71","src/tree/visit.rs":"823ca26b1658ed101da8ae400d481b3008670aeb3ff72680a29f8b2bc5029ba1"},"package":"931394f69fb8c9ed6afc0aae3487bd869e936339bcc13ed8884472af072e0554"} \ No newline at end of file
diff --git a/vendor/gix-diff/CHANGELOG.md b/vendor/gix-diff/CHANGELOG.md
index e1dae90b3..d7e06008b 100644
--- a/vendor/gix-diff/CHANGELOG.md
+++ b/vendor/gix-diff/CHANGELOG.md
@@ -5,6 +5,30 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.37.0 (2023-10-12)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 2 commits contributed to the release over the course of 6 calendar days.
+ - 17 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+ - Fix docs ([`995bc84`](https://github.com/Byron/gitoxide/commit/995bc840664cbd4aeb7f95592e3125dee63bdcd4))
+</details>
+
## 0.36.0 (2023-09-24)
A maintenance release without user-facing changes.
@@ -13,7 +37,7 @@ A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
- - 1 commit contributed to the release.
+ - 2 commits contributed to the release.
- 16 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,6 +49,7 @@ A maintenance release without user-facing changes.
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
</details>
diff --git a/vendor/gix-diff/Cargo.toml b/vendor/gix-diff/Cargo.toml
index bbbdfb880..681db4e74 100644
--- a/vendor/gix-diff/Cargo.toml
+++ b/vendor/gix-diff/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-diff"
-version = "0.36.0"
+version = "0.37.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
include = [
"src/**/*",
@@ -47,10 +47,10 @@ optional = true
default-features = false
[dependencies.gix-hash]
-version = "^0.13.0"
+version = "^0.13.1"
[dependencies.gix-object]
-version = "^0.37.0"
+version = "^0.38.0"
[dependencies.imara-diff]
version = "0.1.3"
diff --git a/vendor/gix-diff/src/tree/mod.rs b/vendor/gix-diff/src/tree/mod.rs
index fea4550f6..77e125e91 100644
--- a/vendor/gix-diff/src/tree/mod.rs
+++ b/vendor/gix-diff/src/tree/mod.rs
@@ -41,7 +41,7 @@ pub mod visit;
#[doc(inline)]
pub use visit::Visit;
-/// A [Visit][visit::Visit] implementation to record every observed change and keep track of the changed paths.
+/// A [Visit] implementation to record every observed change and keep track of the changed paths.
#[derive(Clone, Debug)]
pub struct Recorder {
path_deque: VecDeque<BString>,
diff --git a/vendor/gix-discover/.cargo-checksum.json b/vendor/gix-discover/.cargo-checksum.json
index c2c103b54..36ea36a80 100644
--- a/vendor/gix-discover/.cargo-checksum.json
+++ b/vendor/gix-discover/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"b89e1460aafcbb1c3769489b3f2d9e9db974882692315b225cae9ab66f21134c","Cargo.toml":"41f2b03079d5064d28dbcc77c2b72c1b31ffe25851cf60f82aee3085f3903a36","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/is.rs":"c447365cbc376ba022cba7d33389ca20b4ed2789d80fcf3998ac20330dbd99ca","src/lib.rs":"fd5a8db07b8e9372ba2e7317620978660c3d75ad3c8a444d850ef0b64757ab63","src/parse.rs":"04a95307b39485f8ecd7b23c353ce4c0ba46dbe854f61fc037c7dff82f0d412b","src/path.rs":"40eb99a452ac822328272a08319e32c2319f659ae0e6e63ebdd6af55a36d8dcd","src/repository.rs":"e9f8739c89984858fd88b71e904b5744ff3e68b8afe22c1015a57d4f036f6108","src/upwards/mod.rs":"ab0532fd5e074dc28034f01427f611f0cd38dd11cee12740d5c9a60e709e93c0","src/upwards/types.rs":"652a11f0ac9c28fd07b2b3413cb52413345c87afce1af17331376592f1f605f3","src/upwards/util.rs":"20516a8572736cc8b308396acc004fe364df5c389bc460ffcfc6081fa8251b82"},"package":"69507643d75a0ea9a402fcf73ced517d2b95cc95385904ac09d03e0b952fde33"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"17e28440e1ca25d63d1c2d017053daaaca0ba628b6daf1847330f359c989a35d","Cargo.toml":"df7aa337a555f1adf2892817e4f4ae5a7e575a6dc28681820304ea61fd1718a1","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/is.rs":"c447365cbc376ba022cba7d33389ca20b4ed2789d80fcf3998ac20330dbd99ca","src/lib.rs":"fd5a8db07b8e9372ba2e7317620978660c3d75ad3c8a444d850ef0b64757ab63","src/parse.rs":"04a95307b39485f8ecd7b23c353ce4c0ba46dbe854f61fc037c7dff82f0d412b","src/path.rs":"40eb99a452ac822328272a08319e32c2319f659ae0e6e63ebdd6af55a36d8dcd","src/repository.rs":"e9f8739c89984858fd88b71e904b5744ff3e68b8afe22c1015a57d4f036f6108","src/upwards/mod.rs":"ab0532fd5e074dc28034f01427f611f0cd38dd11cee12740d5c9a60e709e93c0","src/upwards/types.rs":"652a11f0ac9c28fd07b2b3413cb52413345c87afce1af17331376592f1f605f3","src/upwards/util.rs":"20516a8572736cc8b308396acc004fe364df5c389bc460ffcfc6081fa8251b82"},"package":"a45d5cf0321178883e38705ab2b098f625d609a7d4c391b33ac952eff2c490f2"} \ No newline at end of file
diff --git a/vendor/gix-discover/CHANGELOG.md b/vendor/gix-discover/CHANGELOG.md
index 4406f2a1a..94e94a863 100644
--- a/vendor/gix-discover/CHANGELOG.md
+++ b/vendor/gix-discover/CHANGELOG.md
@@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-## 0.25.0 (2023-09-24)
+## 0.26.0 (2023-10-12)
A maintenance release without user-facing changes.
@@ -14,6 +14,29 @@ A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
- 1 commit contributed to the release.
+ - 17 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+</details>
+
+## 0.25.0 (2023-09-24)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 2 commits contributed to the release.
- 16 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,6 +48,7 @@ A maintenance release without user-facing changes.
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
</details>
diff --git a/vendor/gix-discover/Cargo.toml b/vendor/gix-discover/Cargo.toml
index 6a46886d6..e7792ef0b 100644
--- a/vendor/gix-discover/Cargo.toml
+++ b/vendor/gix-discover/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-discover"
-version = "0.25.0"
+version = "0.26.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
include = [
"src/**/*",
@@ -36,13 +36,13 @@ features = [
default-features = false
[dependencies.gix-hash]
-version = "^0.13.0"
+version = "^0.13.1"
[dependencies.gix-path]
version = "^0.10.0"
[dependencies.gix-ref]
-version = "^0.37.0"
+version = "^0.38.0"
[dependencies.gix-sec]
version = "^0.10.0"
diff --git a/vendor/gix-features-0.35.0/.cargo-checksum.json b/vendor/gix-features-0.35.0/.cargo-checksum.json
new file mode 100644
index 000000000..086fdc237
--- /dev/null
+++ b/vendor/gix-features-0.35.0/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"CHANGELOG.md":"ad033e719adbd1f2d77a83005e05e205ab72271ad0119d49743f6defee9da073","Cargo.toml":"3c40a4a3227333b290498f1d2b3ed975165704007f95f2dbdeefe75638a7761e","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/cache.rs":"0f66cbbe9f5808b21ee255e157a88e2cf7717427214a08b5b9b4f65e4153a617","src/decode.rs":"bf614320c6b69556da40d8412c73fb6a8648c80b7d75b9b2525eb62ac6c8d802","src/fs.rs":"cdcd94974e87e64e98d227876c57e4c198f7920538621b726c0d02466cbed691","src/hash.rs":"62a6c705a9dc7c03214f55bb0f9b2607dbecac5eed81b4883bc5d9970afdb072","src/interrupt.rs":"e2cc5cf58d596ffff9d6b91952a659e4cb7211cb62423b520737abe98a8c25de","src/io.rs":"031f3a9aefb8eff48b98d5794d9c5f277781a4e1ad6ba22f43d79f5ce5b70e14","src/lib.rs":"3b1c85dc37cfc3f1240b5bfe6ba1b0ad70361e3c4f992c1c06badf295bf2056a","src/parallel/eager_iter.rs":"6ab493e6d868c3ac64f4038934a6a71d0d0cbd6e52c4addeec54887aaeab9e8c","src/parallel/in_order.rs":"a1c8c2f6ee4a91d6103f3fc6f27525e309cccc49ffc661d1403dbcdc57d120ad","src/parallel/in_parallel.rs":"4a24250843a3eb0fabe272eeec53bfd5d2c838cdff9e66fb6827fd0c85b81e78","src/parallel/mod.rs":"87abd8147a53ec8d02defd9044e8e12c18fb018446a7cb98ec90cf2fb47133ed","src/parallel/reduce.rs":"3ed124c86af1860dbb07f01ad0249714955327c687bda7ee024cf3a3baf94186","src/parallel/serial.rs":"ee4ff7d6546dc8304e60df9b564d8540b173c093dc9cc78f0ef6caa902fafdd7","src/progress.rs":"1710618bece767f07c05da99a54d27d55a817e69f58a7fdb3b9caafd89f25252","src/threading.rs":"60ff581054d27a0d6ba3df1c14919966274c8f2853981886e3f75812e601fdc3","src/zlib/mod.rs":"720eebfa556bff56a9d90042d4c922f0be0259a9ff921b4f7edf1be0c09ae660","src/zlib/stream/deflate/mod.rs":"c712255c72fa74e2d79af27ad90905d3389e5f760c3f396d936f82906e7c1e14","src/zlib/stream/deflate/tests.rs":"c82d29bf27d1ba54cca4447a750bbaac94547a7ed4eb6e9a311600b8da9a63b8","src/zlib/stream/inflate.rs":"8bad4115c592310cf9f0053f635c8882a0d39e582119ac12dd321ac43d84d1a0","src/zlib/stream/mod.rs":"0af2967eb75a07308c789a4187490cc7c36693b7f7d8a4f7705f3b4b90568f6f","tests/features.rs":"573ade257c38b53430be7e724705e68f7cbca258413c11cd0eec64981c44d97f","tests/hash.rs":"d03f99e2ed1f00066e14212e7e65ee3ae076df42935d38c47d5a563b69367e8c","tests/parallel/in_order_iter.rs":"acd746c25929406748de5080b7ae5dcb2516269f037944d7aa84802520b885b4","tests/parallel/mod.rs":"798b36204033558adb16f44d494e893ea593ef92d09418f8b84ac7cb4cf278af","tests/parallel_shared.rs":"5d8dabaa42fce087e2ec57843cfe69f2be1ca2fa3518030b5a31aeaa706675e0","tests/parallel_shared_threaded.rs":"5d8dabaa42fce087e2ec57843cfe69f2be1ca2fa3518030b5a31aeaa706675e0","tests/parallel_threaded.rs":"02cfb39c7e81bca7e92a851c731e993cad13eff87ec1f8a228d74761ec964f7a","tests/pipe.rs":"ea9e429327dd86002c001f8fc069ac798bd7952ddf3f3b0dd24e3fa69d73c08b","tests/trace/mod.rs":"9896e8394068e99e460607d75291912f511479b223a4722389c26d23eb512d3c"},"package":"9b9ff423ae4983f762659040d13dd7a5defbd54b6a04ac3cc7347741cec828cd"} \ No newline at end of file
diff --git a/vendor/gix-features-0.35.0/CHANGELOG.md b/vendor/gix-features-0.35.0/CHANGELOG.md
new file mode 100644
index 000000000..fa3adcfee
--- /dev/null
+++ b/vendor/gix-features-0.35.0/CHANGELOG.md
@@ -0,0 +1,1563 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## 0.35.0 (2023-09-24)
+
+### New Features
+
+ - <csr-id-51971969d2cf13587d4bfbd4cb047f2377b8bc0f/> Add `threading::make_mut()` to allow obtaining a mutable reference to shared data.
+ This is particularly useful when handling an index file, which may be shared across clones of
+ a repository.
+
+### Bug Fixes
+
+ - <csr-id-7a8f79357ce99c4b86e22be166b54f7376c71469/> cargo-auditable build error
+ Use `prodash` instead of `dep:prodash` in gix-features and `tracing`
+ instead of `dep:tracing` in gitoxide-core.
+
+ The `dep:mydep` syntax removes the implicit `mydep` feature for optional
+ dependencies, this triggers a bug in cargo that affects
+ `cargo-auditable`. See https://github.com/rust-lang/cargo/issues/12336
+
+ This affects some Linux distributions like NixOS which use
+ `cargo-auditable` by default. Related issues:
+
+ - https://github.com/NixOS/nixpkgs/issues/253911
+- https://github.com/rust-secure-code/cargo-auditable/issues/124
+
+### Bug Fixes (BREAKING)
+
+ - <csr-id-70c7c29266bc4396c968c7aa311c9721929a7cab/> parallel utilities that create thread-state now use `FnOnce`.
+ This way, all unnecessary cloning is avoided.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 8 commits contributed to the release over the course of 15 calendar days.
+ - 16 days passed between releases.
+ - 3 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
+ - Merge branch 'reset' ([`54a8495`](https://github.com/Byron/gitoxide/commit/54a849545140f7f1c0c7564c418071c0a76a34e7))
+ - Add `threading::make_mut()` to allow obtaining a mutable reference to shared data. ([`5197196`](https://github.com/Byron/gitoxide/commit/51971969d2cf13587d4bfbd4cb047f2377b8bc0f))
+ - Parallel utilities that create thread-state now use `FnOnce`. ([`70c7c29`](https://github.com/Byron/gitoxide/commit/70c7c29266bc4396c968c7aa311c9721929a7cab))
+ - Merge pull request #1024 from Byron/nix-adjustments ([`14e0763`](https://github.com/Byron/gitoxide/commit/14e0763cbf368bda476046a0fd28be230d67b1bd))
+ - Cargo-auditable build error ([`7a8f793`](https://github.com/Byron/gitoxide/commit/7a8f79357ce99c4b86e22be166b54f7376c71469))
+ - Merge branch 'optimize/progress-use' ([`1f2ffb6`](https://github.com/Byron/gitoxide/commit/1f2ffb6d86ef073caf43a2f7a77fe712a1aa495e))
+ - Use trait object for `progress` in `PrepareFetch::fetch_only` ([`70989b3`](https://github.com/Byron/gitoxide/commit/70989b3965077ae00ec6cf344f31627a804a8225))
+</details>
+
+## 0.34.0 (2023-09-08)
+
+<csr-id-ed327f6163f54756e58c20f86a563a97efb256ca/>
+
+### Chore (BREAKING)
+
+ - <csr-id-ed327f6163f54756e58c20f86a563a97efb256ca/> update to the latest `prodash`
+ It makes proper usage of `Progress` types easier and allows them to be used
+ as `dyn` traits as well.
+
+### New Features (BREAKING)
+
+ - <csr-id-24dd870919ba444aa8099c63a78ea120d47ec28e/> use `prodash::Count` to indicate that nothing more than counting is performed, in place of `prodash::Progress`
+
+### Bug Fixes (BREAKING)
+
+ - <csr-id-072ee32f693a31161cd6a843da6582d13efbb20b/> use `dyn` trait where possible.
+ This reduces compile time due to avoiding duplication.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 7 commits contributed to the release over the course of 17 calendar days.
+ - 17 days passed between releases.
+ - 3 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Release gix-date v0.8.0, gix-hash v0.13.0, gix-features v0.34.0, gix-actor v0.26.0, gix-object v0.36.0, gix-path v0.10.0, gix-glob v0.12.0, gix-attributes v0.18.0, gix-packetline-blocking v0.16.6, gix-filter v0.4.0, gix-fs v0.6.0, gix-commitgraph v0.20.0, gix-hashtable v0.4.0, gix-revwalk v0.7.0, gix-traverse v0.32.0, gix-worktree-stream v0.4.0, gix-archive v0.4.0, gix-config-value v0.14.0, gix-tempfile v9.0.0, gix-lock v9.0.0, gix-ref v0.36.0, gix-sec v0.10.0, gix-config v0.29.0, gix-prompt v0.7.0, gix-url v0.23.0, gix-credentials v0.19.0, gix-diff v0.35.0, gix-discover v0.24.0, gix-ignore v0.7.0, gix-index v0.24.0, gix-macros v0.1.0, gix-mailmap v0.18.0, gix-negotiate v0.7.0, gix-pack v0.42.0, gix-odb v0.52.0, gix-pathspec v0.2.0, gix-packetline v0.16.6, gix-transport v0.36.0, gix-protocol v0.39.0, gix-revision v0.21.0, gix-refspec v0.17.0, gix-submodule v0.3.0, gix-worktree v0.25.0, gix-worktree-state v0.2.0, gix v0.53.0, safety bump 39 crates ([`8bd0456`](https://github.com/Byron/gitoxide/commit/8bd045676bb2cdc02624ab93e73ff8518064ca38))
+ - Prepare changelogs for release ([`375db06`](https://github.com/Byron/gitoxide/commit/375db06a8442378c3f7a922fae38e2a6694d9d04))
+ - Merge branch `dyn`ification ([`f658fcc`](https://github.com/Byron/gitoxide/commit/f658fcc52dc2200ae34ca53dc10be97fb9012057))
+ - Use `dyn` trait where possible. ([`072ee32`](https://github.com/Byron/gitoxide/commit/072ee32f693a31161cd6a843da6582d13efbb20b))
+ - Use `prodash::Count` to indicate that nothing more than counting is performed, in place of `prodash::Progress` ([`24dd870`](https://github.com/Byron/gitoxide/commit/24dd870919ba444aa8099c63a78ea120d47ec28e))
+ - Update to the latest `prodash` ([`ed327f6`](https://github.com/Byron/gitoxide/commit/ed327f6163f54756e58c20f86a563a97efb256ca))
+ - Merge branch 'gix-submodule' ([`363ee77`](https://github.com/Byron/gitoxide/commit/363ee77400805f473c9ad66eadad9214e7ab66f4))
+</details>
+
+## 0.33.0 (2023-08-22)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 2 commits contributed to the release.
+ - 30 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Release gix-date v0.7.3, gix-hash v0.12.0, gix-features v0.33.0, gix-actor v0.25.0, gix-object v0.35.0, gix-path v0.9.0, gix-glob v0.11.0, gix-quote v0.4.7, gix-attributes v0.17.0, gix-command v0.2.9, gix-packetline-blocking v0.16.5, gix-filter v0.3.0, gix-fs v0.5.0, gix-commitgraph v0.19.0, gix-hashtable v0.3.0, gix-revwalk v0.6.0, gix-traverse v0.31.0, gix-worktree-stream v0.3.0, gix-archive v0.3.0, gix-config-value v0.13.0, gix-tempfile v8.0.0, gix-lock v8.0.0, gix-ref v0.35.0, gix-sec v0.9.0, gix-config v0.28.0, gix-prompt v0.6.0, gix-url v0.22.0, gix-credentials v0.18.0, gix-diff v0.34.0, gix-discover v0.23.0, gix-ignore v0.6.0, gix-bitmap v0.2.7, gix-index v0.22.0, gix-mailmap v0.17.0, gix-negotiate v0.6.0, gix-pack v0.41.0, gix-odb v0.51.0, gix-pathspec v0.1.0, gix-packetline v0.16.5, gix-transport v0.35.0, gix-protocol v0.38.0, gix-revision v0.20.0, gix-refspec v0.16.0, gix-submodule v0.2.0, gix-worktree v0.24.0, gix-worktree-state v0.1.0, gix v0.52.0, gitoxide-core v0.31.0, gitoxide v0.29.0, safety bump 41 crates ([`30b2761`](https://github.com/Byron/gitoxide/commit/30b27615047692d3ced1b2d9c2ac15a80f79fbee))
+ - Update changelogs prior to release ([`f23ea88`](https://github.com/Byron/gitoxide/commit/f23ea8828f2d9ba7559973daca388c9591bcc5fc))
+</details>
+
+## 0.32.1 (2023-07-22)
+
+### New Features
+
+ - <csr-id-717950977fa758812bc4dd5713f96995bddc491a/> add `interrupt::Write` to auto-fail writes on interrupt.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 7 commits contributed to the release over the course of 1 calendar day.
+ - 3 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Release gix-features v0.32.1, gix-actor v0.24.1, gix-validate v0.7.7, gix-object v0.33.1, gix-path v0.8.4, gix-glob v0.10.1, gix-quote v0.4.6, gix-attributes v0.16.0, gix-command v0.2.8, gix-packetline-blocking v0.16.4, gix-filter v0.2.0, gix-fs v0.4.1, gix-chunk v0.4.4, gix-commitgraph v0.18.1, gix-hashtable v0.2.4, gix-revwalk v0.4.1, gix-traverse v0.30.1, gix-worktree-stream v0.2.0, gix-archive v0.2.0, gix-config-value v0.12.5, gix-tempfile v7.0.1, gix-utils v0.1.5, gix-lock v7.0.2, gix-ref v0.33.1, gix-sec v0.8.4, gix-prompt v0.5.4, gix-url v0.21.1, gix-credentials v0.17.1, gix-diff v0.33.1, gix-discover v0.22.1, gix-ignore v0.5.1, gix-bitmap v0.2.6, gix-index v0.21.1, gix-mailmap v0.16.1, gix-negotiate v0.5.1, gix-pack v0.40.1, gix-odb v0.50.1, gix-packetline v0.16.4, gix-transport v0.34.1, gix-protocol v0.36.1, gix-revision v0.18.1, gix-refspec v0.14.1, gix-worktree v0.23.0, gix v0.50.0, safety bump 5 crates ([`16295b5`](https://github.com/Byron/gitoxide/commit/16295b58e2581d2e8b8b762816f52baabe871c75))
+ - Prepare more changelogs ([`c4cc5f2`](https://github.com/Byron/gitoxide/commit/c4cc5f261d29f712a101033a18293a97a9d4ae85))
+ - Release gix-date v0.7.1, gix-hash v0.11.4, gix-trace v0.1.3, gix-features v0.32.0, gix-actor v0.24.0, gix-validate v0.7.7, gix-object v0.33.0, gix-path v0.8.4, gix-glob v0.10.0, gix-quote v0.4.6, gix-attributes v0.15.0, gix-command v0.2.7, gix-packetline-blocking v0.16.3, gix-filter v0.1.0, gix-fs v0.4.0, gix-chunk v0.4.4, gix-commitgraph v0.18.0, gix-hashtable v0.2.4, gix-revwalk v0.4.0, gix-traverse v0.30.0, gix-worktree-stream v0.2.0, gix-archive v0.2.0, gix-config-value v0.12.4, gix-tempfile v7.0.1, gix-utils v0.1.5, gix-lock v7.0.2, gix-ref v0.33.0, gix-sec v0.8.4, gix-prompt v0.5.3, gix-url v0.21.0, gix-credentials v0.17.0, gix-diff v0.33.0, gix-discover v0.22.0, gix-ignore v0.5.0, gix-bitmap v0.2.6, gix-index v0.21.0, gix-mailmap v0.16.0, gix-negotiate v0.5.0, gix-pack v0.40.0, gix-odb v0.50.0, gix-packetline v0.16.4, gix-transport v0.34.0, gix-protocol v0.36.0, gix-revision v0.18.0, gix-refspec v0.14.0, gix-worktree v0.22.0, gix v0.49.1 ([`5cb3589`](https://github.com/Byron/gitoxide/commit/5cb3589b74fc5376e02cbfe151e71344e1c417fe))
+ - Update changelogs prior to release ([`2fc66b5`](https://github.com/Byron/gitoxide/commit/2fc66b55097ed494b72d1af939ba5561f71fde97))
+ - Merge branch 'gix-archive' ([`1dda48b`](https://github.com/Byron/gitoxide/commit/1dda48ba2fccb93ebac00fe3460e923af43c86ce))
+ - Add `interrupt::Write` to auto-fail writes on interrupt. ([`7179509`](https://github.com/Byron/gitoxide/commit/717950977fa758812bc4dd5713f96995bddc491a))
+ - Update license field following SPDX 2.1 license expression standard ([`9064ea3`](https://github.com/Byron/gitoxide/commit/9064ea31fae4dc59a56bdd3a06c0ddc990ee689e))
+</details>
+
+## 0.32.0 (2023-07-19)
+
+### New Features
+
+ - <csr-id-2a76929ece48c3b0fbdba7e08ae5d7e647db4d36/> add `in_parallel_with_finalize` to support a usecase for `gix-worktree`
+ - <csr-id-717950977fa758812bc4dd5713f96995bddc491a/> add `interrupt::Write` to auto-fail writes on interrupt.
+
+### Changed (BREAKING)
+
+ - <csr-id-032cea3d6cfde80fdfc7bfe8722e2514d2bcb5cf/> remove `zlib::stream::inflate::ReadBoxed`.
+ It was a special-case type that was only used in one spot, and thus
+ not really that interesting to have in a shared place.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 7 commits contributed to the release over the course of 10 calendar days.
+ - 19 days passed between releases.
+ - 2 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Release gix-features v0.32.0, gix-actor v0.24.0, gix-glob v0.10.0, gix-attributes v0.15.0, gix-commitgraph v0.18.0, gix-config-value v0.12.4, gix-fs v0.4.0, gix-object v0.33.0, gix-ref v0.33.0, gix-config v0.26.0, gix-command v0.2.7, gix-url v0.21.0, gix-credentials v0.17.0, gix-diff v0.33.0, gix-discover v0.22.0, gix-filter v0.1.0, gix-ignore v0.5.0, gix-revwalk v0.4.0, gix-traverse v0.30.0, gix-index v0.21.0, gix-mailmap v0.16.0, gix-negotiate v0.5.0, gix-pack v0.40.0, gix-odb v0.50.0, gix-transport v0.34.0, gix-protocol v0.36.0, gix-revision v0.18.0, gix-refspec v0.14.0, gix-worktree v0.22.0, gix v0.49.0 ([`68ae3ff`](https://github.com/Byron/gitoxide/commit/68ae3ff9d642ec56f088a6a682a073dc16f4e8ca))
+ - Adjust package versions (by cargo-smart-release) ([`c70e54f`](https://github.com/Byron/gitoxide/commit/c70e54f163c312c87753a506eeaad462e8579bfb))
+ - Prepare changelogs prior to release ([`e4dded0`](https://github.com/Byron/gitoxide/commit/e4dded05138562f9737a7dcfb60570c55769486d))
+ - Merge branch 'refactor-pack-streaming' ([`8a46a7e`](https://github.com/Byron/gitoxide/commit/8a46a7ef3efc22241b67f3447223b2505e205442))
+ - Remove `zlib::stream::inflate::ReadBoxed`. ([`032cea3`](https://github.com/Byron/gitoxide/commit/032cea3d6cfde80fdfc7bfe8722e2514d2bcb5cf))
+ - Merge branch 'integrate-filtering' ([`b19a56d`](https://github.com/Byron/gitoxide/commit/b19a56dcfa9bea86332a84aa4e8fad445e7d1724))
+ - Add `in_parallel_with_finalize` to support a usecase for `gix-worktree` ([`2a76929`](https://github.com/Byron/gitoxide/commit/2a76929ece48c3b0fbdba7e08ae5d7e647db4d36))
+</details>
+
+## 0.31.1 (2023-06-29)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 3 commits contributed to the release.
+ - 6 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Release gix-features v0.31.1, gix-path v0.8.3, gix v0.48.0 ([`9ca3464`](https://github.com/Byron/gitoxide/commit/9ca346462806671fbc49643a87cea25ab0da3be8))
+ - Prepare changelogs once more ([`4bf355a`](https://github.com/Byron/gitoxide/commit/4bf355a8c6a7dbcdb49105af3208d56a0ed8628d))
+ - Adjust `gix-trace` to the latest version. ([`353df4b`](https://github.com/Byron/gitoxide/commit/353df4bf59c7aa98da48bcdcc299f947d9449f55))
+</details>
+
+## 0.31.0 (2023-06-22)
+
+<csr-id-bcad5c22049d56a25ef69d6c7a3344e78f9a1d4d/>
+
+### Chore
+
+ - <csr-id-bcad5c22049d56a25ef69d6c7a3344e78f9a1d4d/> Add `clippy::redundant-closure-for-method-calls` lint
+
+### New Features
+
+ - <csr-id-093efafa7c39aa03bfef4894779cca6e3716f471/> add `tracing` feature toggle to provide minimal tracing API
+ This API is based on `tracing-core`, not on tracing, and provides a limited
+ API that is always available, while being a no-op if `tracing` isn't enabled.
+
+ That way, plumbing crates can add instrumentation at will.
+
+### Bug Fixes (BREAKING)
+
+ - <csr-id-bc69804d5f6cba56349b5b15a2f6d1741849a5eb/> `new_thread_state()` functions are now `FnOnce` across the board.
+ This properly communicates that they will only be called once per thread,
+ while providing more options to the implementor.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 8 commits contributed to the release over the course of 10 calendar days.
+ - 15 days passed between releases.
+ - 3 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Release gix-date v0.6.0, gix-hash v0.11.3, gix-trace v0.1.1, gix-features v0.31.0, gix-actor v0.22.0, gix-path v0.8.2, gix-glob v0.9.0, gix-quote v0.4.5, gix-attributes v0.14.0, gix-chunk v0.4.3, gix-commitgraph v0.17.0, gix-config-value v0.12.2, gix-fs v0.3.0, gix-tempfile v7.0.0, gix-utils v0.1.3, gix-lock v7.0.0, gix-validate v0.7.6, gix-object v0.31.0, gix-ref v0.31.0, gix-sec v0.8.2, gix-config v0.24.0, gix-command v0.2.6, gix-prompt v0.5.2, gix-url v0.20.0, gix-credentials v0.16.0, gix-diff v0.31.0, gix-discover v0.20.0, gix-hashtable v0.2.2, gix-ignore v0.4.0, gix-bitmap v0.2.5, gix-revwalk v0.2.0, gix-traverse v0.28.0, gix-index v0.19.0, gix-mailmap v0.14.0, gix-negotiate v0.3.0, gix-pack v0.38.0, gix-odb v0.48.0, gix-packetline v0.16.3, gix-transport v0.33.0, gix-protocol v0.34.0, gix-revision v0.16.0, gix-refspec v0.12.0, gix-worktree v0.20.0, gix v0.47.0, gitoxide-core v0.29.0, gitoxide v0.27.0, safety bump 30 crates ([`ea9f942`](https://github.com/Byron/gitoxide/commit/ea9f9424e777f10da0e33bb9ffbbefd01c4c5a74))
+ - Prepare changelogs prior to release ([`18b0a37`](https://github.com/Byron/gitoxide/commit/18b0a371941aa2d4d62512437d5daa351ba99ffd))
+ - Merge branch 'corpus' ([`aa16c8c`](https://github.com/Byron/gitoxide/commit/aa16c8ce91452a3e3063cf1cf0240b6014c4743f))
+ - Change MSRV to 1.65 ([`4f635fc`](https://github.com/Byron/gitoxide/commit/4f635fc4429350bae2582d25de86429969d28f30))
+ - Add `tracing` feature toggle to provide minimal tracing API ([`093efaf`](https://github.com/Byron/gitoxide/commit/093efafa7c39aa03bfef4894779cca6e3716f471))
+ - `new_thread_state()` functions are now `FnOnce` across the board. ([`bc69804`](https://github.com/Byron/gitoxide/commit/bc69804d5f6cba56349b5b15a2f6d1741849a5eb))
+ - Merge branch 'help-874-redundant-closures' ([`fe59956`](https://github.com/Byron/gitoxide/commit/fe59956ad667303a923d7cfd9ffd72283df41d78))
+ - Add `clippy::redundant-closure-for-method-calls` lint ([`bcad5c2`](https://github.com/Byron/gitoxide/commit/bcad5c22049d56a25ef69d6c7a3344e78f9a1d4d))
+</details>
+
+## 0.30.0 (2023-06-06)
+
+### New Features
+
+ - <csr-id-d81b7e3036371d0a2a22f02a92df3c2b2950ff22/> add `zlib::Inflate::reset()`.
+ That way, each instance can be reused.
+ - <csr-id-add5ea8b83d00972b560536da82f9914ef6080d3/> make `prodash::RawProgress` available.
+ It's an object-safe version of the `Progress` trait.
+
+### New Features (BREAKING)
+
+ - <csr-id-0fa04bcbdf3102c5435e64cfef894a1bfc8d6e7b/> make current thread-count accessible in slice-workers.
+ Threads started for working on an entry in a slice can now see the amount
+ of threads left for use (and manipulate that variable) which effectively
+ allows them to implement their own parallelization on top of the current one.
+
+ This is useful if there is there is very imbalanced work within the slice itself.
+
+ While at it, we also make consumer functions mutable as they exsit per thread.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 20 commits contributed to the release over the course of 22 calendar days.
+ - 48 days passed between releases.
+ - 3 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 1 unique issue was worked on: [#851](https://github.com/Byron/gitoxide/issues/851)
+
+### Thanks Clippy
+
+<csr-read-only-do-not-edit/>
+
+[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic.
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **[#851](https://github.com/Byron/gitoxide/issues/851)**
+ - Make current thread-count accessible in slice-workers. ([`0fa04bc`](https://github.com/Byron/gitoxide/commit/0fa04bcbdf3102c5435e64cfef894a1bfc8d6e7b))
+ * **Uncategorized**
+ - Release gix-date v0.5.1, gix-hash v0.11.2, gix-features v0.30.0, gix-actor v0.21.0, gix-path v0.8.1, gix-glob v0.8.0, gix-quote v0.4.4, gix-attributes v0.13.0, gix-chunk v0.4.2, gix-commitgraph v0.16.0, gix-config-value v0.12.1, gix-fs v0.2.0, gix-tempfile v6.0.0, gix-utils v0.1.2, gix-lock v6.0.0, gix-validate v0.7.5, gix-object v0.30.0, gix-ref v0.30.0, gix-sec v0.8.1, gix-config v0.23.0, gix-command v0.2.5, gix-prompt v0.5.1, gix-url v0.19.0, gix-credentials v0.15.0, gix-diff v0.30.0, gix-discover v0.19.0, gix-hashtable v0.2.1, gix-ignore v0.3.0, gix-bitmap v0.2.4, gix-traverse v0.26.0, gix-index v0.17.0, gix-mailmap v0.13.0, gix-revision v0.15.0, gix-negotiate v0.2.0, gix-pack v0.36.0, gix-odb v0.46.0, gix-packetline v0.16.2, gix-transport v0.32.0, gix-protocol v0.33.0, gix-refspec v0.11.0, gix-worktree v0.18.0, gix v0.45.0, safety bump 29 crates ([`9a9fa96`](https://github.com/Byron/gitoxide/commit/9a9fa96fa8a722bddc5c3b2270b0edf8f6615141))
+ - Prepare changelogs prior to release ([`8f15cec`](https://github.com/Byron/gitoxide/commit/8f15cec1ec7d5a9d56bb158f155011ef2bb3539b))
+ - Merge branch 'integrate-gix-negotiate' ([`ae845de`](https://github.com/Byron/gitoxide/commit/ae845dea6cee6523c88a23d7a14293589cf8092f))
+ - Thanks clippy ([`9525ac8`](https://github.com/Byron/gitoxide/commit/9525ac822aa902f5325f17e7b08ffb60b683e0e7))
+ - Merge branch 'fix-alloc' ([`d9d9bc0`](https://github.com/Byron/gitoxide/commit/d9d9bc01b34ac75b28a5f1b75f40123aa6d83c60))
+ - Add `zlib::Inflate::reset()`. ([`d81b7e3`](https://github.com/Byron/gitoxide/commit/d81b7e3036371d0a2a22f02a92df3c2b2950ff22))
+ - Merge branch 'fix-docs' ([`420553a`](https://github.com/Byron/gitoxide/commit/420553a10d780e0b2dc466cac120989298a5f187))
+ - Cleaning up documentation ([`2578e57`](https://github.com/Byron/gitoxide/commit/2578e576bfa365d194a23a1fb0bf09be230873de))
+ - Merge branch 'auto-clippy' ([`dbf8aa1`](https://github.com/Byron/gitoxide/commit/dbf8aa19d19109195d0274928eae4b94f248cd88))
+ - Autofix map-or-unwrap clippy lint (and manual fix what was left) ([`2087032`](https://github.com/Byron/gitoxide/commit/2087032b5956dcd82bce6ac57e530e8724b57f17))
+ - Merge branch 'main' into auto-clippy ([`3ef5c90`](https://github.com/Byron/gitoxide/commit/3ef5c90aebce23385815f1df674c1d28d58b4b0d))
+ - Auto-fix clippy to remove explicit iter looping ([`3eff567`](https://github.com/Byron/gitoxide/commit/3eff567c683b5c650c14792b68968cbdbc90ec5c))
+ - Merge pull request #865 from nyurik/fix-tests ([`3a45973`](https://github.com/Byron/gitoxide/commit/3a45973c61c4816940b1c9bae4fe60af47a3f6c6))
+ - Merge branch 'blinxen/main' ([`9375cd7`](https://github.com/Byron/gitoxide/commit/9375cd75b01aa22a0e2eed6305fe45fabfd6c1ac))
+ - Include custom clippy settings ([`b057500`](https://github.com/Byron/gitoxide/commit/b057500dd3e6b75be3ebcd258cda0b946bedd9e1))
+ - Make cargo check to pass all tests ([`f4a44f7`](https://github.com/Byron/gitoxide/commit/f4a44f71e894dd8a08dd898a099b743a3ccff557))
+ - Include license files in all crates ([`facaaf6`](https://github.com/Byron/gitoxide/commit/facaaf633f01c857dcf2572c6dbe0a92b7105c1c))
+ - Merge branch 'fix-851' ([`2f275d5`](https://github.com/Byron/gitoxide/commit/2f275d5d3cb49b3b8ba53b30e4b4386fac32662b))
+ - Make `prodash::RawProgress` available. ([`add5ea8`](https://github.com/Byron/gitoxide/commit/add5ea8b83d00972b560536da82f9914ef6080d3))
+</details>
+
+## 0.29.0 (2023-04-19)
+
+### New Features (BREAKING)
+
+ - <csr-id-b645d28f9641c6b4022e1e37ad9fe528922ec747/> remove types that are now available in `gix-os`
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 9 commits contributed to the release over the course of 6 calendar days.
+ - 35 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Release gix-utils v0.1.0, gix-hash v0.11.0, gix-date v0.5.0, gix-features v0.29.0, gix-actor v0.20.0, gix-object v0.29.0, gix-archive v0.1.0, gix-fs v0.1.0, safety bump 25 crates ([`8dbd0a6`](https://github.com/Byron/gitoxide/commit/8dbd0a60557a85acfa231800a058cbac0271a8cf))
+ - Prepare changelog prior to release ([`7f06458`](https://github.com/Byron/gitoxide/commit/7f064583bd0e1b078df89a7750f5a25deb70f516))
+ - Support native zlib-ng via flate2's zlib-ng feature ([`9a6e0d7`](https://github.com/Byron/gitoxide/commit/9a6e0d7b418ea721da6a7e4bc48c47b47d4dfa79))
+ - Merge branch 'main' into dev ([`23ee47f`](https://github.com/Byron/gitoxide/commit/23ee47fb24c197f8437bd426544b2aa74e005bdc))
+ - Merge branch 'worktree-stack' ([`3d47919`](https://github.com/Byron/gitoxide/commit/3d47919c1a2f83fc7c1fd7ae590d098057a22626))
+ - Remove types that are now available in `gix-os` ([`b645d28`](https://github.com/Byron/gitoxide/commit/b645d28f9641c6b4022e1e37ad9fe528922ec747))
+ - Use existing concurrency primitive in_parallel ([`c5f3fc8`](https://github.com/Byron/gitoxide/commit/c5f3fc8b5875745eb50bd80005b43a66cf255acb))
+ - Parallel status check ([`d7f250d`](https://github.com/Byron/gitoxide/commit/d7f250ddbd53a994a17db41f86cc780b45e9ee5a))
+ - Release gix-hash v0.10.4, gix-hashtable v0.1.3 ([`b574a39`](https://github.com/Byron/gitoxide/commit/b574a3904203762a6b9e475e16a7c358d7616599))
+</details>
+
+## 0.28.1 (2023-03-14)
+
+A maintenance release without any user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 3 commits contributed to the release over the course of 1 calendar day.
+ - 9 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Release gix-features v0.28.1, gix-tempfile v5.0.1, gix-ref v0.27.1, gix-pack v0.33.1, gix-packetline v0.15.0, gix-transport v0.29.0, gix-protocol v0.30.0, gix v0.42.0, safety bump 3 crates ([`c1f1bfb`](https://github.com/Byron/gitoxide/commit/c1f1bfb8dc0e73993678353e4492d0614b642ed1))
+ - Prepare changelogs prior to release ([`c66e298`](https://github.com/Byron/gitoxide/commit/c66e2982577e4cd9faef63798986b8cf8ece93a2))
+ - Make fmt ([`3836cc0`](https://github.com/Byron/gitoxide/commit/3836cc0c9c3e1158b56142b924483c8a77217d53))
+</details>
+
+## 0.28.0 (2023-03-04)
+
+### New Features (BREAKING)
+
+ - <csr-id-571ec0d7c3e1eb167d55daa6551bd2b27d3c5b25/> use `std::thread::scope()` instead of `crossbeam-utils::thread::scope()`.
+ This cuts a direct dependency.
+ We can't removed `crossbeam-channel` yet due to the need for single-produce-multiple-consumer
+ channels.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 4 commits contributed to the release over the course of 1 calendar day.
+ - 3 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Release gix-features v0.28.0, gix-actor v0.19.0, gix-object v0.28.0, gix-diff v0.28.0, gix-traverse v0.24.0, gix-pack v0.32.0, safety bump 20 crates ([`0f411e9`](https://github.com/Byron/gitoxide/commit/0f411e93ec812592bb9d3a52b751399dd86f76f7))
+ - Prepare changelogs prior to release of `gix-pack` ([`6db30ef`](https://github.com/Byron/gitoxide/commit/6db30ef6b5e931bbf12135507a3d922051de4d4b))
+ - Merge branch 'adjustments-for-cargo' ([`04ab852`](https://github.com/Byron/gitoxide/commit/04ab852f3be76bdf151affa25cf4b999b127bdfe))
+ - Use `std::thread::scope()` instead of `crossbeam-utils::thread::scope()`. ([`571ec0d`](https://github.com/Byron/gitoxide/commit/571ec0d7c3e1eb167d55daa6551bd2b27d3c5b25))
+</details>
+
+## 0.27.0 (2023-03-01)
+
+<csr-id-cce96ee1382d3d56d77820a2aba6e2d17b52f91c/>
+
+### Chore
+
+ - <csr-id-cce96ee1382d3d56d77820a2aba6e2d17b52f91c/> replace `quick-error` with `thiserror`
+ This increases the compile time of the crate alone if there is no proc-macro
+ in the dependency tree, but will ever so slightly improve compile times for `gix`
+ as a whole.
+
+### New Features
+
+ - <csr-id-7a442313c57f58fec5217484f268516711c3d52b/> make `bytesize` available in `progress`.
+ Note that it is stubbed out unless the `progress-unit-bytes` feature is set.
+ - <csr-id-7f6a807ea506358b6dc4fd0c7a648770f1dc91e9/> add `progress::count_with_decimals()` and `progress-unit-*` feature toggles.
+ The new feature toggles allow controlling the inclusion of the `bytesize` and `human_format`
+ crates, which can be toggled with the `progress-unit-bytes` and `progress-unit-human-numbers` respectively.
+
+ Without these features, the respective functions exist but don't provide special formatting, making bytes and
+ larger numbers harder to read.
+
+### Bug Fixes
+
+ - <csr-id-264f78a508d3030cb346623f57ac75add7682169/> remove `num_cpus` in favor of `std::thread::available_parallelism()`.
+ `num_cpus` was needed back in the days when `std` didn't support such
+ functionality yet.
+
+### Changed (BREAKING)
+
+ - <csr-id-0cc548041a861be21001462cbe0ef29b1d61d1c4/> use new `dep:` syntax to hide optional features from feature-set.
+ That way, the set of features is clearly defined and controlled.
+ This migth break applications who relied on direect access to features named
+ after optional dependencies.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 11 commits contributed to the release over the course of 3 calendar days.
+ - 8 days passed between releases.
+ - 5 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Release gix-features v0.27.0, gix-actor v0.18.0, gix-quote v0.4.3, gix-attributes v0.9.0, gix-object v0.27.0, gix-ref v0.25.0, gix-config v0.17.0, gix-url v0.14.0, gix-credentials v0.10.0, gix-diff v0.27.0, gix-discover v0.14.0, gix-hashtable v0.1.2, gix-bitmap v0.2.2, gix-traverse v0.23.0, gix-index v0.13.0, gix-mailmap v0.10.0, gix-pack v0.31.0, gix-odb v0.41.0, gix-transport v0.26.0, gix-protocol v0.27.0, gix-revision v0.11.0, gix-refspec v0.8.0, gix-worktree v0.13.0, gix v0.38.0 ([`e6cc618`](https://github.com/Byron/gitoxide/commit/e6cc6184a7a49dbc2503c1c1bdd3688ca5cec5fe))
+ - Adjust manifests prior to release ([`addd789`](https://github.com/Byron/gitoxide/commit/addd78958fdd1e54eb702854e96079539d01965a))
+ - Prepare changelogs prior to release ([`94c99c7`](https://github.com/Byron/gitoxide/commit/94c99c71520f33269cc8dbc26f82a74747cc7e16))
+ - Merge branch 'adjustments-for-cargo' ([`d686d94`](https://github.com/Byron/gitoxide/commit/d686d94e1030a8591ba074757d56927a346c8351))
+ - Depend on latest version of `prodash` for performance improvements. ([`5d00324`](https://github.com/Byron/gitoxide/commit/5d003242abe82b1604e2188d49dec9690ebb2a6a))
+ - Make `bytesize` available in `progress`. ([`7a44231`](https://github.com/Byron/gitoxide/commit/7a442313c57f58fec5217484f268516711c3d52b))
+ - Add `progress::count_with_decimals()` and `progress-unit-*` feature toggles. ([`7f6a807`](https://github.com/Byron/gitoxide/commit/7f6a807ea506358b6dc4fd0c7a648770f1dc91e9))
+ - Use new `dep:` syntax to hide optional features from feature-set. ([`0cc5480`](https://github.com/Byron/gitoxide/commit/0cc548041a861be21001462cbe0ef29b1d61d1c4))
+ - Remove `num_cpus` in favor of `std::thread::available_parallelism()`. ([`264f78a`](https://github.com/Byron/gitoxide/commit/264f78a508d3030cb346623f57ac75add7682169))
+ - Replace `quick-error` with `thiserror` ([`cce96ee`](https://github.com/Byron/gitoxide/commit/cce96ee1382d3d56d77820a2aba6e2d17b52f91c))
+ - Make fmt ([`8ef1cb2`](https://github.com/Byron/gitoxide/commit/8ef1cb293434c7b9e1fda4a6963368e0435920a9))
+</details>
+
+## 0.26.5 (2023-02-20)
+
+### Bug Fixes
+
+ - <csr-id-e14dc7d475373d2c266e84ff8f1826c68a34ab92/> note that crates have been renamed from `git-*` to `gix-*`.
+ This also means that the `git-*` prefixed crates of the `gitoxide` project
+ are effectively unmaintained.
+ Use the crates with the `gix-*` prefix instead.
+
+ If you were using `git-repository`, then `gix` is its substitute.
+ - <csr-id-135d317065aae87af302beb6c26bb6ca8e30b6aa/> compatibility with `bstr` v1.3, use `*.as_bytes()` instead of `.as_ref()`.
+ `as_ref()` relies on a known target type which isn't always present. However, once
+ there is only one implementation, that's no problem, but when that changes compilation
+ fails due to ambiguity.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 2 commits contributed to the release.
+ - 3 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Release gix-date v0.4.3, gix-hash v0.10.3, gix-features v0.26.5, gix-actor v0.17.2, gix-glob v0.5.5, gix-path v0.7.2, gix-quote v0.4.2, gix-attributes v0.8.3, gix-validate v0.7.3, gix-object v0.26.2, gix-ref v0.24.1, gix-config v0.16.2, gix-command v0.2.4, gix-url v0.13.3, gix-credentials v0.9.2, gix-discover v0.13.1, gix-index v0.12.4, gix-mailmap v0.9.3, gix-pack v0.30.3, gix-packetline v0.14.3, gix-transport v0.25.6, gix-protocol v0.26.4, gix-revision v0.10.4, gix-refspec v0.7.3, gix-worktree v0.12.3, gix v0.36.1 ([`9604783`](https://github.com/Byron/gitoxide/commit/96047839a20a657a559376b0b14c65aeab96acbd))
+ - Compatibility with `bstr` v1.3, use `*.as_bytes()` instead of `.as_ref()`. ([`135d317`](https://github.com/Byron/gitoxide/commit/135d317065aae87af302beb6c26bb6ca8e30b6aa))
+</details>
+
+## 0.26.4 (2023-02-17)
+
+<csr-id-5bf0034fb3918e57562b7089ceba83d63a1854bf/>
+<csr-id-ab6f98b905f13ed2a7c0c483f34fab63141fbc5b/>
+<csr-id-f7f136dbe4f86e7dee1d54835c420ec07c96cd78/>
+<csr-id-361892ca15aa648802f6701ab6a5a30aedde3449/>
+
+### New Features (BREAKING)
+
+ - <csr-id-0f27c67c92fc0bc23a6712b5c4c730ad6a0156bf/> add support for explicit non-parallel iteration.
+ That way we can allow the implementation to choose whether they
+ need greatest speed at some cost or not.
+
+ This also allows us to create a new thread-pool on each iteration
+ as those who expect high cost or many files will likely chose to do
+ that instead of single-threaded iteration, which nicely contains the
+ threads needed and avoids keeping them alive as part of some global pool.
+ - <csr-id-3b29fc18672c0176684c797a0f16f85d09369bf8/> make jwalk fully optional
+ - <csr-id-d078d6ee76a80d1dfaf71608c12d8a402bd670d4/> mild refactor of paths module to waste less on unix
+ Previously it might have performed find-and-replace on unix paths even
+ though they wouldn't have changed afterwards, yet costing an allocation.
+
+ There is also the realization that it should go into its own crate to have
+ neater import paths and more convenience.
+ - <csr-id-8945d95f7fa88562d37ff67ac6e38bead73dd2df/> `interrupt::Iter`, rename `interrupt::Iter` -> `interrupt::IterWithError`
+
+### Chore (BREAKING)
+
+ - <csr-id-5bf0034fb3918e57562b7089ceba83d63a1854bf/> upgrade to prodash v23
+
+### Changed (BREAKING)
+
+ - <csr-id-38446dc8824afef30ef121598de3451d13b9262c/> remove `fs-jwalk-single-threaded` in favor of `fs-walkdir-parallel`.
+ This way, `jwalk` and the dependencies (and troubles) it brings have to
+ be opted in, but also allow other users to actually opt out while
+ allowing the `parallel` feature to be in effect.
+
+ In other words, previously the `parallel` feature conflated `jwalk`
+ dependencies into the tree, which isn't the case anymore.
+ - <csr-id-89a41bf2b37db29b9983b4e5492cfd67ed490b23/> remove local-time-support feature toggle.
+ We treat local time as default feature without a lot of fuzz, and
+ will eventually document that definitive support needs a compile
+ time switch in the compiler (`--cfg unsound_local_offset` or something).
+
+ One day it will perish. Failure is possible anyway and we will write
+ code to deal with it while minimizing the amount of system time
+ fetches when asking for the current local time.
+ - <csr-id-90611ce1527618bcc738440bfc1ccc7a45319974/> remove `path` module in favor of `git-path` crate
+ - <csr-id-61e5cfece4d8f405e35fc1957b00ce1da7526c26/> renamed `progress::Read::reader` -> `progress::Read::inner`
+ - <csr-id-e7526b2a7b51cbac4018e1ab3b623a85987fadc2/> parallel utilities now use `Send + Clone` insted of `Send + Sync`
+ This helps to assure that thread-local computations always work with the
+ kind of types we provide. The ones that are carrying out actions are
+ notably not `Sync` anymore.
+
+ We cater to that by defining our bounds accordingly, but for those
+ who want to use other utilities that need Sync, using types like
+ `Repository` and `thread_local!()` is the only way to make this
+ work.
+
+### Other
+
+ - <csr-id-ab6f98b905f13ed2a7c0c483f34fab63141fbc5b/> try-join with static typing works, but…
+ …seems like a lot of effort. Probably not worth continuing here
+
+### Bug Fixes
+
+ - <csr-id-234cd10ca55482ce1a840ce3244308d249895bcc/> Assure std::io::copy() doesn't hang when we cause an interrupt
+ The user can ask for interruptions which previously used the
+ error kind Interrupted. This however has special meaning and
+ usually means to retry.
+
+### Documentation
+
+ - <csr-id-39ed9eda62b7718d5109135e5ad406fb1fe2978c/> fix typos
+
+### Chore
+
+ - <csr-id-f7f136dbe4f86e7dee1d54835c420ec07c96cd78/> uniformize deny attributes
+ - <csr-id-361892ca15aa648802f6701ab6a5a30aedde3449/> update sha-1 dependency to 0.10
+
+### New Features
+
+ - <csr-id-a3bd14a7753716e7ad67cd56d24eee1fa099a6fd/> re-export `prodash::progress::(Task|Value)` directly under `progress`
+ This is in addition to the `progress` re-export which allows everything
+ but yields less optimal import paths.
+ - <csr-id-426057247a80821b3da22b4ae5d67bda89ce0631/> re-export `prodash` in `progress` module.
+ That way one can access all types even if they are not re-exported.
+ - <csr-id-c4a7634b0b29c74625e183953e59c65987e9d66c/> export `prodash::progress::Id` in the `progress` module for convenience.
+ - <csr-id-25ad372bf500b851105f53b10369b5a689ba167e/> zlib::inflate::Error can now represent zlib status codes that represent failure.
+ - <csr-id-6d530a1dc77f0f4ac00622a2fd47c7bdb731a77a/> name spawned threads
+ That way it's a bit more obvious what's happening when the CPU goes
+ up in flames.
+ - <csr-id-c8835c6edae784c9ffcb69a674c0a6545dbb2af3/> upgrade to `prodash 21.1` and add `Ids` to all progress instances.
+ That way callers can identify progress they are interested in, say, for
+ selective visualizations.
+ - <csr-id-9076ce33ec167e425a0163d3e40a81a3fd0db6cd/> `fs::Snapshot` can `Clone` if `T` can `Clone`.
+ - <csr-id-a7c11d2cb5f88a4ff322d9a9848459062790d8b3/> perfect granularity for threads processing with `in_parallel_with_slice()`
+ - <csr-id-ff1db66f2dad3afc8bc77610006bca9fea5947d2/> add `progress::Step|StepShared` as types of `prodash`
+ This may help to use the `Progress::counter()` method as part of method
+ signatures, being an `Option<progress::StepShared>`.
+ - <csr-id-cfe46b502afc3ecb312849ddbd7748007d432cd1/> add zlib-ng feature to allow linking against system libz-ng
+ Allow to use zlib-ng (zlib-ng-sys) with native API (no compat mode)
+ that can co-exist with system libz (loaded by e.g. libcurl).
+ This is used in gitoxide package on Alpine Linux.
+ - <csr-id-b1c40b0364ef092cd52d03b34f491b254816b18d/> use docsrs feature in code to show what is feature-gated automatically on docs.rs
+ - <csr-id-517677147f1c17304c62cf97a1dd09f232ebf5db/> pass --cfg docsrs when compiling for https://docs.rs
+ - <csr-id-f498d35baba52e40ecd47381e87c1ce49cf13285/> add `fs-jwalk-single-threaded` feature to specifically decouple `jwalk` from rayon
+ It has been an issue in https://github.com/starship/starship/issues/4251
+ apparently and rayon interactions can be difficult.
+ - <csr-id-7f199f0e5246809efde9880110093fbd11a4f8fe/> `fs::Snapshot` to on-demand reload shared resources.
+ - <csr-id-c76fde7de278b49ded13b655d5345e4eb8c1b134/> initialize `Time` from `now_utc` and `now_local`
+ Localtime support depends on some other factors now, but that
+ will only get better over time.
+
+ We might have to document `unsound_local_time` at some point.
+ - <csr-id-e4d6685064ad2b433f8acd3a74b320bf0169a994/> Add `git_config::values::Path` for a typesafe git path
+ Add a `Path` type to the `git_config::values` which
+ can be interpolated according to gits own path interpolation
+ rules.
+ - <csr-id-3c8581fc294c65c9eb42698969fe3263135a864e/> add new 'path' module for all path-related conversions
+ It's meant to unify all path and byte related handling to help assuring
+ encoding is handled correctly or at least similarly everywhere.
+ - <csr-id-15ff212b17087de93f259e366f4e4b821cfbc28e/> in-manifest and in-lib documentation of feature toggles
+ - <csr-id-cb7e4e784d615f9fa3d6fb9c36240f0592403358/> Add InOrderIter to 'parallel' module
+ This iterator makes possible identifies results using a sequence id
+ and returns only consecutive items.
+
+ Use it to collect unordered results produced by threads.
+ It's advantage to collecting yourself and sorting is the potential
+ for a smaller memory footprint of in-flight results, one doesn't
+ have to collect them all for ordering, necessarily.
+ - <csr-id-ca095ed881db2a8f06a6b067dbaac17e923b0945/> Make a scope-like abstraction available
+ This allows more delicate threading control like is required for the
+ index.
+ - <csr-id-b8400ed80543d67a5895c975ba9b1fc28427411c/> decoding of variable int numbers.
+ It's here only so that we can share the code across crates, for now
+ without any feature toggles.
+ - <csr-id-0a749a22057b5513a8cefa0e26b0a9a268c769d3/> Add `progress::Write` to automatically pass bytes written to a progress instance
+ - <csr-id-7e95d8ab29051ffc892f2dcbaf5369e8c7e7b294/> add threading primitives with feature toggle
+ If the `threading` feature is set, the `threading` module will contain thread-safe primitives
+ for shared ownership and mutation, otherwise these will be their single threaded counterparts.
+
+ This way, single-threaded applications don't have to pay for threaded primitives.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 509 commits contributed to the release over the course of 962 calendar days.
+ - 38 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 21 unique issues were worked on: [#198](https://github.com/Byron/gitoxide/issues/198), [#222](https://github.com/Byron/gitoxide/issues/222), [#259](https://github.com/Byron/gitoxide/issues/259), [#263](https://github.com/Byron/gitoxide/issues/263), [#266](https://github.com/Byron/gitoxide/issues/266), [#279](https://github.com/Byron/gitoxide/issues/279), [#287](https://github.com/Byron/gitoxide/issues/287), [#293](https://github.com/Byron/gitoxide/issues/293), [#298](https://github.com/Byron/gitoxide/issues/298), [#301](https://github.com/Byron/gitoxide/issues/301), [#329](https://github.com/Byron/gitoxide/issues/329), [#331](https://github.com/Byron/gitoxide/issues/331), [#333](https://github.com/Byron/gitoxide/issues/333), [#366](https://github.com/Byron/gitoxide/issues/366), [#427](https://github.com/Byron/gitoxide/issues/427), [#450](https://github.com/Byron/gitoxide/issues/450), [#470](https://github.com/Byron/gitoxide/issues/470), [#503](https://github.com/Byron/gitoxide/issues/503), [#524](https://github.com/Byron/gitoxide/issues/524), [#63](https://github.com/Byron/gitoxide/issues/63), [#691](https://github.com/Byron/gitoxide/issues/691)
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **[#198](https://github.com/Byron/gitoxide/issues/198)**
+ - Handle changelogs with upcoming version section if they were left for editing ([`0f5f47d`](https://github.com/Byron/gitoxide/commit/0f5f47da4662b596cbbbd9c0d83e135e2cc52c11))
+ - Deduplicate conventional message ids ([`e695eda`](https://github.com/Byron/gitoxide/commit/e695eda8cd183f703d9a3e59b7c3c7fa496ea1d2))
+ - Regenerate all changelogs to get links ([`0c81769`](https://github.com/Byron/gitoxide/commit/0c817690bd444f52bed2936b2b451cafd87dde92))
+ - Mention actual issues that where worked on ([`a517e39`](https://github.com/Byron/gitoxide/commit/a517e39a81145b331f6c7a6cc2fc22e25daf42e2))
+ - Allow 'refactor' and 'other' in conventional messages if they have breaking changes ([`4eebaac`](https://github.com/Byron/gitoxide/commit/4eebaac669e590beed112b622752997c64772ef1))
+ - New changelogs for actor and features crates ([`e0d437c`](https://github.com/Byron/gitoxide/commit/e0d437c4cfa06e0792609f41ed5876c390634921))
+ * **[#222](https://github.com/Byron/gitoxide/issues/222)**
+ - Update changelogs prior to release ([`9a493d0`](https://github.com/Byron/gitoxide/commit/9a493d0651b0b6d71cf230dc510a658be7f8cb19))
+ - Stabilize changelogs ([`920e832`](https://github.com/Byron/gitoxide/commit/920e83219911df1c440d3fe42fd5ec3a295b0bb8))
+ - Update changelogs prior to release ([`b3e2252`](https://github.com/Byron/gitoxide/commit/b3e2252f7461a003d9a4612da60ba931dd8c0bef))
+ * **[#259](https://github.com/Byron/gitoxide/issues/259)**
+ - Unify trait bounds for parallel code: prefer Clone over Sync ([`c805d0b`](https://github.com/Byron/gitoxide/commit/c805d0b231cf4d2f51dae7705bfbbc6562f86c32))
+ - Remove trait bounds to allow single-threaded applications to exist ([`3c790e0`](https://github.com/Byron/gitoxide/commit/3c790e01de0dbd3ffa2683d5cf060723d11d64a5))
+ * **[#263](https://github.com/Byron/gitoxide/issues/263)**
+ - Make it possible to return read guards with packed buffers ([`f5c3c8f`](https://github.com/Byron/gitoxide/commit/f5c3c8f7309bf53b9e53f786e75931d701a8585c))
+ - Parallel utilities now use `Send + Clone` insted of `Send + Sync` ([`e7526b2`](https://github.com/Byron/gitoxide/commit/e7526b2a7b51cbac4018e1ab3b623a85987fadc2))
+ - A mad attempt to use thread-local everywhere and avoid Sync… ([`0af5077`](https://github.com/Byron/gitoxide/commit/0af5077e1f028c1c69bbdc098bb567e486282c37))
+ - Add threading primitives with feature toggle ([`7e95d8a`](https://github.com/Byron/gitoxide/commit/7e95d8ab29051ffc892f2dcbaf5369e8c7e7b294))
+ * **[#266](https://github.com/Byron/gitoxide/issues/266)**
+ - Update sha-1 dependency to 0.10 ([`361892c`](https://github.com/Byron/gitoxide/commit/361892ca15aa648802f6701ab6a5a30aedde3449))
+ - Remove slow/unnecessary threading utilities ([`269b7ef`](https://github.com/Byron/gitoxide/commit/269b7efc47bb1d6380b2059f63bd0c53fcd285de))
+ * **[#279](https://github.com/Byron/gitoxide/issues/279)**
+ - Add `progress::Write` to automatically pass bytes written to a progress instance ([`0a749a2`](https://github.com/Byron/gitoxide/commit/0a749a22057b5513a8cefa0e26b0a9a268c769d3))
+ - Renamed `progress::Read::reader` -> `progress::Read::inner` ([`61e5cfe`](https://github.com/Byron/gitoxide/commit/61e5cfece4d8f405e35fc1957b00ce1da7526c26))
+ - Adjust to changes in git-hash and git-pack ([`0cae25b`](https://github.com/Byron/gitoxide/commit/0cae25b1bb3c902ec323f17a1d9743e42fe213d0))
+ * **[#287](https://github.com/Byron/gitoxide/issues/287)**
+ - Upgrade to prodash 17 ([`47860b7`](https://github.com/Byron/gitoxide/commit/47860b7e2769260cfb8522ae455c491605093423))
+ * **[#293](https://github.com/Byron/gitoxide/issues/293)**
+ - Prepare changelogs for git-index and dependencies ([`f54bf4b`](https://github.com/Byron/gitoxide/commit/f54bf4bde92b892b6d425987a6a37e10319c4635))
+ - Fix docs ([`3f89b63`](https://github.com/Byron/gitoxide/commit/3f89b6336e79bc12bc31d40b74221e79a72d2b36))
+ - Fix build ([`e3977fe`](https://github.com/Byron/gitoxide/commit/e3977fe033550bfd3297cdd674934e40476aa38b))
+ - Use InOrderIter from git-features ([`7721b5f`](https://github.com/Byron/gitoxide/commit/7721b5fc7cba86d785e0936fdfab2ea41163219f))
+ - Add InOrderIter to 'parallel' module ([`cb7e4e7`](https://github.com/Byron/gitoxide/commit/cb7e4e784d615f9fa3d6fb9c36240f0592403358))
+ - Make a scope-like abstraction available ([`ca095ed`](https://github.com/Byron/gitoxide/commit/ca095ed881db2a8f06a6b067dbaac17e923b0945))
+ - Single and multi-threaded index tests ([`a22cb0f`](https://github.com/Byron/gitoxide/commit/a22cb0f1ead9a2f32e43eb2fb378281e592a4ed3))
+ - Decoding of variable int numbers. ([`b8400ed`](https://github.com/Byron/gitoxide/commit/b8400ed80543d67a5895c975ba9b1fc28427411c))
+ * **[#298](https://github.com/Byron/gitoxide/issues/298)**
+ - Enforce path conversion on windows gnu, it doesn't seem to like slashes ([`4d55a8f`](https://github.com/Byron/gitoxide/commit/4d55a8f99f2a0b7c0c4ed70a615b7e58b5bee04b))
+ - Use hash_hasher based hash state for better keys/less collisions ([`814de07`](https://github.com/Byron/gitoxide/commit/814de079f4226f42efa49ad334a348bce67184e4))
+ - Upgrade parking_lot and cargo_toml ([`f95c1a0`](https://github.com/Byron/gitoxide/commit/f95c1a0d9c19bcc6feb9b8739a09d86f9970a0e0))
+ * **[#301](https://github.com/Byron/gitoxide/issues/301)**
+ - Update changelogs prior to release ([`84cb256`](https://github.com/Byron/gitoxide/commit/84cb25614a5fcddff297c1713eba4efbb6ff1596))
+ - Remove `path` module in favor of `git-path` crate ([`90611ce`](https://github.com/Byron/gitoxide/commit/90611ce1527618bcc738440bfc1ccc7a45319974))
+ - Mild refactor of paths module to waste less on unix ([`d078d6e`](https://github.com/Byron/gitoxide/commit/d078d6ee76a80d1dfaf71608c12d8a402bd670d4))
+ - Refactor ([`8345b7c`](https://github.com/Byron/gitoxide/commit/8345b7caa0cc1cd8489e41822eea89da4c539e6d))
+ - More stable testing of perviously racy test for new parallelization mechanism ([`0b4b90f`](https://github.com/Byron/gitoxide/commit/0b4b90fa498d9e07a55b72af2f799da4cd2da81f))
+ - Salvage an alternative parallelization approach which might be good for index-creation ([`7e76796`](https://github.com/Byron/gitoxide/commit/7e76796d5c2956961bd998286bec05fca1ba8fc4))
+ - Refactor ([`f86eacc`](https://github.com/Byron/gitoxide/commit/f86eacc5cfaf6d88ead4f8dbd65989d32674c213))
+ - Use hopefully faster crossbeam channel to receive parallelized results ([`3b324b8`](https://github.com/Byron/gitoxide/commit/3b324b868d9d172038797f911eeebfcba8107865))
+ - Switch index checkout to chunk-based operation ([`e5f6943`](https://github.com/Byron/gitoxide/commit/e5f69433e4a6cc7866b666e0baccfa32efb92a7f))
+ - Add thread-count and chunk-size computation; interrupt capability ([`8cbe85d`](https://github.com/Byron/gitoxide/commit/8cbe85d135898826a91939726465a9e295c1e24b))
+ - `interrupt::Iter`, rename `interrupt::Iter` -> `interrupt::IterWithError` ([`8945d95`](https://github.com/Byron/gitoxide/commit/8945d95f7fa88562d37ff67ac6e38bead73dd2df))
+ - Fix `interrupt::Iter` ([`0f0d390`](https://github.com/Byron/gitoxide/commit/0f0d390c475044a75e5db4dcd831d755e74aa3e9))
+ * **[#329](https://github.com/Byron/gitoxide/issues/329)**
+ - In-manifest and in-lib documentation of feature toggles ([`15ff212`](https://github.com/Byron/gitoxide/commit/15ff212b17087de93f259e366f4e4b821cfbc28e))
+ * **[#331](https://github.com/Byron/gitoxide/issues/331)**
+ - Remove local-time-support feature toggle. ([`89a41bf`](https://github.com/Byron/gitoxide/commit/89a41bf2b37db29b9983b4e5492cfd67ed490b23))
+ - Initialize `Time` from `now_utc` and `now_local` ([`c76fde7`](https://github.com/Byron/gitoxide/commit/c76fde7de278b49ded13b655d5345e4eb8c1b134))
+ - A first sketch on how identity management could look like. ([`780f14f`](https://github.com/Byron/gitoxide/commit/780f14f5c270802e51cf039639c2fbdb5ac5a85e))
+ - Update changelog prior to release ([`1d07934`](https://github.com/Byron/gitoxide/commit/1d079346e789b0acc9a4bdf7577b21c1c37b6106))
+ - Remove Option return values in favor of Result ([`493dbae`](https://github.com/Byron/gitoxide/commit/493dbae434e8e4a939e90d03ec3f500744c0725a))
+ - Add `git_config::values::Path` for a typesafe git path ([`e4d6685`](https://github.com/Byron/gitoxide/commit/e4d6685064ad2b433f8acd3a74b320bf0169a994))
+ * **[#333](https://github.com/Byron/gitoxide/issues/333)**
+ - Use git_features::path everywhere where there is a path conversion ([`2e1437c`](https://github.com/Byron/gitoxide/commit/2e1437cb0b5dc77f2317881767f71eaf9b009ebf))
+ - Make real clear panics are only possible on windows ([`6b283dc`](https://github.com/Byron/gitoxide/commit/6b283dc7b9339fd65ea35f56eb29f121f571caf7))
+ - One usage of os_str_bytes down, along with some custom conversion code ([`1cc95ce`](https://github.com/Byron/gitoxide/commit/1cc95cefbd132a4277ec52c2147f7c81fea92d48))
+ - Gitoxide-core without os-str-bytes ([`909aa14`](https://github.com/Byron/gitoxide/commit/909aa1402c82c3128052023613a297b213716e3d))
+ - Remove os_str_bytes from git-pack ([`86f6e50`](https://github.com/Byron/gitoxide/commit/86f6e5054ea11b7aeb9c85321913de090f71e3a1))
+ - Don't use os_str_ext in git-features; adapt git-ref ([`9258b7b`](https://github.com/Byron/gitoxide/commit/9258b7baf0895593c13a152ff9e6f52e036cebe1))
+ - Add new 'path' module for all path-related conversions ([`3c8581f`](https://github.com/Byron/gitoxide/commit/3c8581fc294c65c9eb42698969fe3263135a864e))
+ * **[#366](https://github.com/Byron/gitoxide/issues/366)**
+ - The first possibly working version of loading a mailmap with multiple sources ([`98d745e`](https://github.com/Byron/gitoxide/commit/98d745e8080975a91cff1ce75e187258c851d3f4))
+ - Cleanup bstr usage to not accidentally pull in unicode ([`8ff53af`](https://github.com/Byron/gitoxide/commit/8ff53af9876a5e35bcfd076124ad776e1b6ff331))
+ * **[#427](https://github.com/Byron/gitoxide/issues/427)**
+ - Make fmt ([`4b320e7`](https://github.com/Byron/gitoxide/commit/4b320e773368ac5e8c38dd8a779ef3d6d2d024ec))
+ - Optimize some portions of the Snapshot code for speed. ([`711fd5c`](https://github.com/Byron/gitoxide/commit/711fd5c6c221440917fa68248e45d5278c780a9e))
+ - More convenient API for fs::Snapshots ([`561d2e7`](https://github.com/Byron/gitoxide/commit/561d2e746b1b82ac20f6f14b9c4e3910240075b4))
+ - `fs::Snapshot` to on-demand reload shared resources. ([`7f199f0`](https://github.com/Byron/gitoxide/commit/7f199f0e5246809efde9880110093fbd11a4f8fe))
+ - Use generalized reload-on-demand in `git-ref` ([`8d0cce7`](https://github.com/Byron/gitoxide/commit/8d0cce7d1521374d5199552fc69a417a957519bc))
+ - Now it's possible to update packed refs using the shared code ([`78222c2`](https://github.com/Byron/gitoxide/commit/78222c2e39aa24c84852e999448c042f2fd37db4))
+ - The first step towards using the generalized `ReloadIfChanged` in git-ref ([`e8de0ef`](https://github.com/Byron/gitoxide/commit/e8de0ef38db2f2d83cb277ed101464f23c0e98e4))
+ - Generalized port of packed-refs update logic for use in index ([`e3aff0c`](https://github.com/Byron/gitoxide/commit/e3aff0c2b83720e5745f3d7a8d0f571421a26d99))
+ - Turn on performance mode for sha-1 computation ([`44371a1`](https://github.com/Byron/gitoxide/commit/44371a10f464f32db346aa6b8309e983cfa20933))
+ * **[#450](https://github.com/Byron/gitoxide/issues/450)**
+ - Upgrade to `prodash` v21 ([`a0655dc`](https://github.com/Byron/gitoxide/commit/a0655dc7bc5dff388bc69a648e7f16b44fd1abd9))
+ - `fs::Snapshot` can `Clone` if `T` can `Clone`. ([`9076ce3`](https://github.com/Byron/gitoxide/commit/9076ce33ec167e425a0163d3e40a81a3fd0db6cd))
+ * **[#470](https://github.com/Byron/gitoxide/issues/470)**
+ - Update changelogs prior to release ([`caa7a1b`](https://github.com/Byron/gitoxide/commit/caa7a1bdef74d7d3166a7e38127a59f5ab3cfbdd))
+ - Working progress printing ([`67ec2c7`](https://github.com/Byron/gitoxide/commit/67ec2c7f9a4a6cefdf7148f5c7e48a79f201c4d2))
+ - First attempt to get progress information from stat worker. ([`0947c70`](https://github.com/Byron/gitoxide/commit/0947c703f9cecc31ceba101565e6ecafb00adb08))
+ - Upgrade to prodash 20.1 for `Progress::counter()` feature ([`0ac4a2c`](https://github.com/Byron/gitoxide/commit/0ac4a2c514aeb94d8e90ce28ae7a0e0350c21ab2))
+ * **[#503](https://github.com/Byron/gitoxide/issues/503)**
+ - Prepare changelog ([`3c99e7f`](https://github.com/Byron/gitoxide/commit/3c99e7f02ada72a171856ffc5b870da83fffc703))
+ * **[#524](https://github.com/Byron/gitoxide/issues/524)**
+ - Prepare changelogs prior to release ([`6446b39`](https://github.com/Byron/gitoxide/commit/6446b395d5926565ef899b0c923f35468ccf1921))
+ * **[#63](https://github.com/Byron/gitoxide/issues/63)**
+ - Git-protocol uses `oid` type ([`3930a6f`](https://github.com/Byron/gitoxide/commit/3930a6ff508f5bb2249fb2c2f21e00b74fecda22))
+ - Make ObjectId/oid happen! ([`ca78d15`](https://github.com/Byron/gitoxide/commit/ca78d15373ec988d909be8f240baefe75555e077))
+ - Move git-hash::owned::Id into git-hash::Id ([`fdbe704`](https://github.com/Byron/gitoxide/commit/fdbe704b6c9ace2b8f629f681a0580b24749a238))
+ - Rename `git_hash::*::Digest` to `Id` ([`188d90a`](https://github.com/Byron/gitoxide/commit/188d90ad463d342d715af701b03f0ed392c977fc))
+ * **[#691](https://github.com/Byron/gitoxide/issues/691)**
+ - Set `rust-version` to 1.64 ([`55066ce`](https://github.com/Byron/gitoxide/commit/55066ce5fd71209abb5d84da2998b903504584bb))
+ * **Uncategorized**
+ - Release gix-features v0.26.4, gix-actor v0.17.1, gix-glob v0.5.3, gix-path v0.7.1, gix-quote v0.4.1, gix-attributes v0.8.2, gix-config-value v0.10.1, gix-tempfile v3.0.2, gix-lock v3.0.2, gix-validate v0.7.2, gix-object v0.26.1, gix-ref v0.24.0, gix-sec v0.6.2, gix-config v0.16.1, gix-command v0.2.3, gix-prompt v0.3.2, gix-url v0.13.2, gix-credentials v0.9.1, gix-diff v0.26.1, gix-discover v0.13.0, gix-hashtable v0.1.1, gix-bitmap v0.2.1, gix-traverse v0.22.1, gix-index v0.12.3, gix-mailmap v0.9.2, gix-chunk v0.4.1, gix-pack v0.30.2, gix-odb v0.40.2, gix-packetline v0.14.2, gix-transport v0.25.4, gix-protocol v0.26.3, gix-revision v0.10.3, gix-refspec v0.7.2, gix-worktree v0.12.2, gix v0.36.0 ([`6efd0d3`](https://github.com/Byron/gitoxide/commit/6efd0d31fbeca31ab7319aa2ac97bb31dc4ce055))
+ - Release gix-date v0.4.2, gix-hash v0.10.2, gix-features v0.26.4, gix-actor v0.17.1, gix-glob v0.5.3, gix-path v0.7.1, gix-quote v0.4.1, gix-attributes v0.8.2, gix-config-value v0.10.1, gix-tempfile v3.0.2, gix-lock v3.0.2, gix-validate v0.7.2, gix-object v0.26.1, gix-ref v0.24.0, gix-sec v0.6.2, gix-config v0.16.1, gix-command v0.2.3, gix-prompt v0.3.2, gix-url v0.13.2, gix-credentials v0.9.1, gix-diff v0.26.1, gix-discover v0.13.0, gix-hashtable v0.1.1, gix-bitmap v0.2.1, gix-traverse v0.22.1, gix-index v0.12.3, gix-mailmap v0.9.2, gix-chunk v0.4.1, gix-pack v0.30.2, gix-odb v0.40.2, gix-packetline v0.14.2, gix-transport v0.25.4, gix-protocol v0.26.3, gix-revision v0.10.3, gix-refspec v0.7.2, gix-worktree v0.12.2, gix v0.36.0 ([`6ccc88a`](https://github.com/Byron/gitoxide/commit/6ccc88a8e4a56973b1a358cf72dc012ee3c75d56))
+ - Merge branch 'rename-crates' into inform-about-gix-rename ([`c9275b9`](https://github.com/Byron/gitoxide/commit/c9275b99ea43949306d93775d9d78c98fb86cfb1))
+ - Rename `git-testtools` to `gix-testtools` ([`b65c33d`](https://github.com/Byron/gitoxide/commit/b65c33d256cfed65d11adeff41132e3e58754089))
+ - Adjust to renaming of `git-pack` to `gix-pack` ([`1ee81ad`](https://github.com/Byron/gitoxide/commit/1ee81ad310285ee4aa118118a2be3810dbace574))
+ - Adjust to renaming of `git-odb` to `gix-odb` ([`476e2ad`](https://github.com/Byron/gitoxide/commit/476e2ad1a64e9e3f0d7c8651d5bcbee36cd78241))
+ - Adjust to renaming of `git-index` to `gix-index` ([`86db5e0`](https://github.com/Byron/gitoxide/commit/86db5e09fc58ce66b252dc13b8d7e2c48e4d5062))
+ - Adjust to renaming of `git-diff` to `gix-diff` ([`49a163e`](https://github.com/Byron/gitoxide/commit/49a163ec8b18f0e5fcd05a315de16d5d8be7650e))
+ - Adjust to renaming of `git-commitgraph` to `gix-commitgraph` ([`f1dd0a3`](https://github.com/Byron/gitoxide/commit/f1dd0a3366e31259af029da73228e8af2f414244))
+ - Adjust to renaming of `git-mailmap` to `gix-mailmap` ([`2e28c56`](https://github.com/Byron/gitoxide/commit/2e28c56bb9f70de6f97439818118d3a25859698f))
+ - Adjust to renaming of `git-discover` to `gix-discover` ([`53adfe1`](https://github.com/Byron/gitoxide/commit/53adfe1c34e9ea3b27067a97b5e7ac80b351c441))
+ - Adjust to renaming of `git-chunk` to `gix-chunk` ([`59194e3`](https://github.com/Byron/gitoxide/commit/59194e3a07853eae0624ebc4907478d1de4f7599))
+ - Adjust to renaming of `git-bitmap` to `gix-bitmap` ([`75f2a07`](https://github.com/Byron/gitoxide/commit/75f2a079b17489f62bc43e1f1d932307375c4f9d))
+ - Adjust to renaming for `git-protocol` to `gix-protocol` ([`823795a`](https://github.com/Byron/gitoxide/commit/823795addea3810243cab7936cd8ec0137cbc224))
+ - Adjust to renaming of `git-refspec` to `gix-refspec` ([`c958802`](https://github.com/Byron/gitoxide/commit/c9588020561577736faa065e7e5b5bb486ca8fe1))
+ - Adjust to renaming of `git-revision` to `gix-revision` ([`ee0ee84`](https://github.com/Byron/gitoxide/commit/ee0ee84607c2ffe11ee75f27a31903db68afed02))
+ - Adjust to renaming of `git-transport` to `gix-transport` ([`b2ccf71`](https://github.com/Byron/gitoxide/commit/b2ccf716dc4425bb96651d4d58806a3cc2da219e))
+ - Adjust to renaming of `git-credentials` to `gix-credentials` ([`6b18abc`](https://github.com/Byron/gitoxide/commit/6b18abcf2856f02ab938d535a65e51ac282bf94a))
+ - Adjust to renaming of `git-prompt` to `gix-prompt` ([`6a4654e`](https://github.com/Byron/gitoxide/commit/6a4654e0d10ab773dd219cb4b731c0fc1471c36d))
+ - Adjust to renaming of `git-command` to `gix-command` ([`d26b8e0`](https://github.com/Byron/gitoxide/commit/d26b8e046496894ae06b0bbfdba77196976cd975))
+ - Adjust to renaming of `git-packetline` to `gix-packetline` ([`5cbd22c`](https://github.com/Byron/gitoxide/commit/5cbd22cf42efb760058561c6c3bbcd4dab8c8be1))
+ - Adjust to renaming of `git-worktree` to `gix-worktree` ([`73a1282`](https://github.com/Byron/gitoxide/commit/73a12821b3d9b66ec1714d07dd27eb7a73e3a544))
+ - Adjust to renamining of `git-hashtable` to `gix-hashtable` ([`26a0c98`](https://github.com/Byron/gitoxide/commit/26a0c98d0a389b03e3dc7bfc758b37155e285244))
+ - Adjust to renamining of `git-worktree` to `gix-worktree` ([`108bb1a`](https://github.com/Byron/gitoxide/commit/108bb1a634f4828853fb590e9fc125f79441dd38))
+ - Adjust to renaming of `git-url` to `gix-url` ([`b50817a`](https://github.com/Byron/gitoxide/commit/b50817aadb143e19f61f64e19b19ec1107d980c6))
+ - Adjust to renaming of `git-date` to `gix-date` ([`9a79ff2`](https://github.com/Byron/gitoxide/commit/9a79ff2d5cc74c1efad9f41e21095ae498cce00b))
+ - Adjust to renamining of `git-attributes` to `gix-attributes` ([`4a8b3b8`](https://github.com/Byron/gitoxide/commit/4a8b3b812ac26f2a2aee8ce8ca81591273383c84))
+ - Adjust to renaminig of `git-quote` to `gix-quote` ([`648025b`](https://github.com/Byron/gitoxide/commit/648025b7ca94411fdd0d90c53e5faede5fde6c8d))
+ - Adjust to renaming of `git-config` to `gix-config` ([`3a861c8`](https://github.com/Byron/gitoxide/commit/3a861c8f049f6502d3bcbdac752659aa1aeda46a))
+ - Adjust to renaming of `git-ref` to `gix-ref` ([`1f5f695`](https://github.com/Byron/gitoxide/commit/1f5f695407b034377d94b172465ff573562b3fc3))
+ - Adjust to renaming of `git-lock` to `gix-lock` ([`2028e78`](https://github.com/Byron/gitoxide/commit/2028e7884ae1821edeec81612f501e88e4722b17))
+ - Adjust to renaming of `git-tempfile` to `gix-tempfile` ([`b6cc3eb`](https://github.com/Byron/gitoxide/commit/b6cc3ebb5137084a6327af16a7d9364d8f092cc9))
+ - Adjust to renaming of `git-object` to `gix-object` ([`fc86a1e`](https://github.com/Byron/gitoxide/commit/fc86a1e710ad7bf076c25cc6f028ddcf1a5a4311))
+ - Adjust to renaming of `git-actor` to `gix-actor` ([`4dc9b44`](https://github.com/Byron/gitoxide/commit/4dc9b44dc52f2486ffa2040585c6897c1bf55df4))
+ - Adjust to renaming of `git-validate` to `gix-validate` ([`5e40ad0`](https://github.com/Byron/gitoxide/commit/5e40ad078af3d08cbc2ca81ce755c0ed8a065b4f))
+ - Adjust to renaming of `git-hash` to `gix-hash` ([`4a9d025`](https://github.com/Byron/gitoxide/commit/4a9d0257110c3efa61d08c8457c4545b200226d1))
+ - Adjust to renaming of `git-features` to `gix-features` ([`e2dd68a`](https://github.com/Byron/gitoxide/commit/e2dd68a417aad229e194ff20dbbfd77668096ec6))
+ - Rename `git-features` to `gix-features` ([`85f7e1a`](https://github.com/Byron/gitoxide/commit/85f7e1a97c936f7cbebfbb3b2952f965601a7cbb))
+ - Adjust to renaming of `git-glob` to `gix-glob` ([`35b2a3a`](https://github.com/Byron/gitoxide/commit/35b2a3acbc8f2a03f151bc0a3863163844e0ca86))
+ - Adjust to renaming of `git-sec` to `gix-sec` ([`eabbb92`](https://github.com/Byron/gitoxide/commit/eabbb923bd5a32fc80fa80f96cfdc2ab7bb2ed17))
+ - Adapt to renaming of `git-path` to `gix-path` ([`d3bbcfc`](https://github.com/Byron/gitoxide/commit/d3bbcfccad80fc44ea8e7bf819f23adaca06ba2d))
+ - Adjust to rename of `git-config-value` to `gix-config-value` ([`622b3e1`](https://github.com/Byron/gitoxide/commit/622b3e1d0bffa0f8db73697960f9712024fac430))
+ - Release git-features v0.26.4 ([`109f434`](https://github.com/Byron/gitoxide/commit/109f434e66559a791d541f86876ded8df10766f1))
+ - Re-export `prodash::progress::(Task|Value)` directly under `progress` ([`a3bd14a`](https://github.com/Byron/gitoxide/commit/a3bd14a7753716e7ad67cd56d24eee1fa099a6fd))
+ - Release git-features v0.26.3 ([`1ecfb7f`](https://github.com/Byron/gitoxide/commit/1ecfb7f8bfb24432690d8f31367488f2e59a642a))
+ - Re-export `prodash` in `progress` module. ([`4260572`](https://github.com/Byron/gitoxide/commit/426057247a80821b3da22b4ae5d67bda89ce0631))
+ - Release git-date v0.4.2, git-hash v0.10.2, git-features v0.26.2, git-actor v0.17.1, git-glob v0.5.3, git-path v0.7.1, git-quote v0.4.1, git-attributes v0.8.2, git-config-value v0.10.1, git-tempfile v3.0.2, git-lock v3.0.2, git-validate v0.7.2, git-object v0.26.1, git-ref v0.24.0, git-sec v0.6.2, git-config v0.16.0, git-command v0.2.3, git-prompt v0.3.2, git-url v0.13.2, git-credentials v0.9.1, git-diff v0.26.1, git-discover v0.13.0, git-hashtable v0.1.1, git-bitmap v0.2.1, git-traverse v0.22.1, git-index v0.12.3, git-mailmap v0.9.2, git-chunk v0.4.1, git-pack v0.30.2, git-odb v0.40.2, git-packetline v0.14.2, git-transport v0.25.4, git-protocol v0.26.3, git-revision v0.10.2, git-refspec v0.7.2, git-worktree v0.12.2, git-repository v0.34.0, safety bump 3 crates ([`c196d20`](https://github.com/Byron/gitoxide/commit/c196d206d57a310b1ce974a1cf0e7e6d6db5c4d6))
+ - Prepare changelogs prior to release ([`7c846d2`](https://github.com/Byron/gitoxide/commit/7c846d2102dc767366771925212712ef8cc9bf07))
+ - Merge branch 'Lioness100/main' ([`1e544e8`](https://github.com/Byron/gitoxide/commit/1e544e82455bf9ecb5e3c2146280eaf7ecd81f16))
+ - Fix typos ([`39ed9ed`](https://github.com/Byron/gitoxide/commit/39ed9eda62b7718d5109135e5ad406fb1fe2978c))
+ - Make fmt ([`e22080e`](https://github.com/Byron/gitoxide/commit/e22080e4a29d0bad15a99d565a5e3e304a8743ec))
+ - Merge branch 'adjustments-for-cargo' ([`7bba270`](https://github.com/Byron/gitoxide/commit/7bba2709488b7eb999b8136dbab03af977241678))
+ - Export `prodash::progress::Id` in the `progress` module for convenience. ([`c4a7634`](https://github.com/Byron/gitoxide/commit/c4a7634b0b29c74625e183953e59c65987e9d66c))
+ - Release git-date v0.4.1, git-features v0.26.1, git-glob v0.5.2, git-attributes v0.8.1, git-tempfile v3.0.1, git-ref v0.23.1, git-sec v0.6.1, git-config v0.15.1, git-prompt v0.3.1, git-url v0.13.1, git-discover v0.12.1, git-index v0.12.2, git-mailmap v0.9.1, git-pack v0.30.1, git-odb v0.40.1, git-transport v0.25.3, git-protocol v0.26.2, git-revision v0.10.1, git-refspec v0.7.1, git-worktree v0.12.1, git-repository v0.33.0 ([`5b5b380`](https://github.com/Byron/gitoxide/commit/5b5b3809faa71c658db38b40dfc410224d08a367))
+ - Prepare changelogs prior to release ([`93bef97`](https://github.com/Byron/gitoxide/commit/93bef97b3c0c75d4bf7119fdd787516e1efc77bf))
+ - Merge branch 'patch-1' ([`b93f0c4`](https://github.com/Byron/gitoxide/commit/b93f0c49fc677b6c19aea332cbfc1445ce475375))
+ - Thanks clippy ([`9e04685`](https://github.com/Byron/gitoxide/commit/9e04685dd3f109bfb27663f9dc7c04102e660bf2))
+ - Release git-features v0.26.0, git-actor v0.16.0, git-attributes v0.8.0, git-object v0.25.0, git-ref v0.22.0, git-config v0.14.0, git-command v0.2.1, git-url v0.13.0, git-credentials v0.9.0, git-diff v0.25.0, git-discover v0.11.0, git-traverse v0.21.0, git-index v0.11.0, git-mailmap v0.8.0, git-pack v0.29.0, git-odb v0.39.0, git-transport v0.25.0, git-protocol v0.26.0, git-revision v0.9.0, git-refspec v0.6.0, git-worktree v0.11.0, git-repository v0.31.0, safety bump 24 crates ([`5ac9fbe`](https://github.com/Byron/gitoxide/commit/5ac9fbe265a5b61c533a2a6b3abfed2bdf7f89ad))
+ - Prepare changelogs prior to release ([`30d8ca1`](https://github.com/Byron/gitoxide/commit/30d8ca19284049dcfbb0de2698cafae1d1a16b0c))
+ - Make fmt ([`511ed00`](https://github.com/Byron/gitoxide/commit/511ed0000397a5b268530c8f5362e7d25b7c1594))
+ - Merge branch 'adjustments-for-cargo' ([`f8c562a`](https://github.com/Byron/gitoxide/commit/f8c562a559e6dc3377583cc7200585dad7c3d481))
+ - Upgrade to prodash v23 ([`5bf0034`](https://github.com/Byron/gitoxide/commit/5bf0034fb3918e57562b7089ceba83d63a1854bf))
+ - Release git-features v0.25.1, git-url v0.12.2, git-odb v0.38.1, git-transport v0.24.2, git-repository v0.30.2 ([`bb0a07b`](https://github.com/Byron/gitoxide/commit/bb0a07b5edd5f980989d1a92e74df7f183febe87))
+ - Merge branch 'loose-find-panic' ([`95cccdd`](https://github.com/Byron/gitoxide/commit/95cccddd3c181eb2a85b12823c27beb054adf5d8))
+ - Zlib::inflate::Error can now represent zlib status codes that represent failure. ([`25ad372`](https://github.com/Byron/gitoxide/commit/25ad372bf500b851105f53b10369b5a689ba167e))
+ - Release git-date v0.3.1, git-features v0.25.0, git-actor v0.15.0, git-glob v0.5.1, git-path v0.7.0, git-attributes v0.7.0, git-config-value v0.10.0, git-lock v3.0.1, git-validate v0.7.1, git-object v0.24.0, git-ref v0.21.0, git-sec v0.6.0, git-config v0.13.0, git-prompt v0.3.0, git-url v0.12.0, git-credentials v0.8.0, git-diff v0.24.0, git-discover v0.10.0, git-traverse v0.20.0, git-index v0.10.0, git-mailmap v0.7.0, git-pack v0.28.0, git-odb v0.38.0, git-packetline v0.14.1, git-transport v0.24.0, git-protocol v0.25.0, git-revision v0.8.0, git-refspec v0.5.0, git-worktree v0.10.0, git-repository v0.30.0, safety bump 26 crates ([`e6b9906`](https://github.com/Byron/gitoxide/commit/e6b9906c486b11057936da16ed6e0ec450a0fb83))
+ - Prepare chnagelogs prior to git-repository release ([`7114bbb`](https://github.com/Byron/gitoxide/commit/7114bbb6732aa8571d4ab74f28ed3e26e9fbe4d0))
+ - Merge branch 'main' into read-split-index ([`c57bdde`](https://github.com/Byron/gitoxide/commit/c57bdde6de37eca9672ea715962bbd02aa3eb055))
+ - Merge branch 'adjustments-for-cargo' ([`083909b`](https://github.com/Byron/gitoxide/commit/083909bc7eb902eeee2002034fdb6ed88280dc5c))
+ - Thanks clippy ([`f1160fb`](https://github.com/Byron/gitoxide/commit/f1160fb42acf59b37cbeda546a7079af3c9bc050))
+ - Add support for explicit non-parallel iteration. ([`0f27c67`](https://github.com/Byron/gitoxide/commit/0f27c67c92fc0bc23a6712b5c4c730ad6a0156bf))
+ - Merge branch 'adjustments-for-cargo' ([`70ccbb2`](https://github.com/Byron/gitoxide/commit/70ccbb21b1113bdeb20b52d274141a9fdb75f579))
+ - Upgrade to prodash v22 for API improvements ([`77ab98d`](https://github.com/Byron/gitoxide/commit/77ab98dd41c3849b674d8b3794ef29219ca1447d))
+ - Release git-hash v0.10.1, git-hashtable v0.1.0 ([`7717170`](https://github.com/Byron/gitoxide/commit/771717095d9a67b0625021eb0928828ab686e772))
+ - Merge branch 'main' into http-config ([`6b9632e`](https://github.com/Byron/gitoxide/commit/6b9632e16c416841ffff1b767ee7a6c89b421220))
+ - Release git-features v0.24.1, git-actor v0.14.1, git-index v0.9.1 ([`7893502`](https://github.com/Byron/gitoxide/commit/789350208efc9d5fc6f9bc4f113f77f9cb445156))
+ - Merge branch 'named-threads' ([`726dd87`](https://github.com/Byron/gitoxide/commit/726dd87b5db45c333ccad898338a1cacea9e3269))
+ - Name spawned threads ([`6d530a1`](https://github.com/Byron/gitoxide/commit/6d530a1dc77f0f4ac00622a2fd47c7bdb731a77a))
+ - Upgrade to `prodash 21.1` and add `Ids` to all progress instances. ([`c8835c6`](https://github.com/Byron/gitoxide/commit/c8835c6edae784c9ffcb69a674c0a6545dbb2af3))
+ - Merge branch 'main' into http-config ([`bcd9654`](https://github.com/Byron/gitoxide/commit/bcd9654e56169799eb706646da6ee1f4ef2021a9))
+ - Release git-hash v0.10.0, git-features v0.24.0, git-date v0.3.0, git-actor v0.14.0, git-glob v0.5.0, git-path v0.6.0, git-quote v0.4.0, git-attributes v0.6.0, git-config-value v0.9.0, git-tempfile v3.0.0, git-lock v3.0.0, git-validate v0.7.0, git-object v0.23.0, git-ref v0.20.0, git-sec v0.5.0, git-config v0.12.0, git-command v0.2.0, git-prompt v0.2.0, git-url v0.11.0, git-credentials v0.7.0, git-diff v0.23.0, git-discover v0.9.0, git-bitmap v0.2.0, git-traverse v0.19.0, git-index v0.9.0, git-mailmap v0.6.0, git-chunk v0.4.0, git-pack v0.27.0, git-odb v0.37.0, git-packetline v0.14.0, git-transport v0.23.0, git-protocol v0.24.0, git-revision v0.7.0, git-refspec v0.4.0, git-worktree v0.9.0, git-repository v0.29.0, git-commitgraph v0.11.0, gitoxide-core v0.21.0, gitoxide v0.19.0, safety bump 28 crates ([`b2c301e`](https://github.com/Byron/gitoxide/commit/b2c301ef131ffe1871314e19f387cf10a8d2ac16))
+ - Prepare changelogs prior to release ([`e4648f8`](https://github.com/Byron/gitoxide/commit/e4648f827c97e9d13636d1bbdc83dd63436e6e5c))
+ - Release git-features v0.23.1, git-glob v0.4.1, git-config-value v0.8.1, git-tempfile v2.0.6, git-object v0.22.1, git-ref v0.18.0, git-sec v0.4.2, git-config v0.10.0, git-prompt v0.1.1, git-url v0.10.1, git-credentials v0.6.1, git-diff v0.21.0, git-discover v0.7.0, git-index v0.7.0, git-pack v0.25.0, git-odb v0.35.0, git-transport v0.21.1, git-protocol v0.22.0, git-refspec v0.3.1, git-worktree v0.7.0, git-repository v0.26.0, git-commitgraph v0.10.0, gitoxide-core v0.19.0, gitoxide v0.17.0, safety bump 9 crates ([`d071583`](https://github.com/Byron/gitoxide/commit/d071583c5576fdf5f7717765ffed5681792aa81f))
+ - Prepare changelogs prior to release ([`423af90`](https://github.com/Byron/gitoxide/commit/423af90c8202d62dc1ea4a76a0df6421d1f0aa06))
+ - Merge branch 'main' into write-sparse-index ([`c4e6849`](https://github.com/Byron/gitoxide/commit/c4e68496c368611ebe17c6693d06c8147c28c717))
+ - Merge branch 'gix-clone' ([`def53b3`](https://github.com/Byron/gitoxide/commit/def53b36c3dec26fa78939ab0584fe4ff930909c))
+ - Thanks clippy ([`ad96233`](https://github.com/Byron/gitoxide/commit/ad96233e1aa77fb7d9185f653f3e9519128cf20f))
+ - Release git-hash v0.9.11, git-features v0.23.0, git-actor v0.13.0, git-attributes v0.5.0, git-object v0.22.0, git-ref v0.17.0, git-sec v0.4.1, git-config v0.9.0, git-url v0.10.0, git-credentials v0.6.0, git-diff v0.20.0, git-discover v0.6.0, git-traverse v0.18.0, git-index v0.6.0, git-mailmap v0.5.0, git-pack v0.24.0, git-odb v0.34.0, git-packetline v0.13.1, git-transport v0.21.0, git-protocol v0.21.0, git-revision v0.6.0, git-refspec v0.3.0, git-worktree v0.6.0, git-repository v0.25.0, safety bump 24 crates ([`104d922`](https://github.com/Byron/gitoxide/commit/104d922add61ab21c534c24ce8ed37cddf3e275a))
+ - Prepare changelogs for release ([`d232567`](https://github.com/Byron/gitoxide/commit/d23256701a95284857dc8d1cb37c7c94cada973c))
+ - Remove `fs-jwalk-single-threaded` in favor of `fs-walkdir-parallel`. ([`38446dc`](https://github.com/Byron/gitoxide/commit/38446dc8824afef30ef121598de3451d13b9262c))
+ - Make jwalk fully optional ([`3b29fc1`](https://github.com/Byron/gitoxide/commit/3b29fc18672c0176684c797a0f16f85d09369bf8))
+ - Merge branch 'main' into new-http-impl ([`702a161`](https://github.com/Byron/gitoxide/commit/702a161ef11fc959611bf44b70e9ffe04561c7ad))
+ - Merge branch 'main' into clone ([`acb0738`](https://github.com/Byron/gitoxide/commit/acb07382a9306d6962bea60e8977d83d021743f4))
+ - Merge branch 'delta-tree-parallelization' ([`cca2ad5`](https://github.com/Byron/gitoxide/commit/cca2ad5ee9483d7da968658e0a4d610dbc4ad4d6))
+ - Don't enforce Send bounds in serial version of `in_parallel_with_slice()` ([`dda661e`](https://github.com/Byron/gitoxide/commit/dda661e1b7cc0ace6cd9504233f20980e1e52387))
+ - Allow discarding the state which could otherwise be used for aggregation. ([`56792fb`](https://github.com/Byron/gitoxide/commit/56792fb53299d52073555c8646360ec0ae88c86d))
+ - Allow input for `in_parallel_with_slice` to be mutable. ([`e928bf7`](https://github.com/Byron/gitoxide/commit/e928bf7c699a7e48ad283c2cf7fd7479c37c70fc))
+ - Perfect granularity for threads processing with `in_parallel_with_slice()` ([`a7c11d2`](https://github.com/Byron/gitoxide/commit/a7c11d2cb5f88a4ff322d9a9848459062790d8b3))
+ - Add `progress::Step|StepShared` as types of `prodash` ([`ff1db66`](https://github.com/Byron/gitoxide/commit/ff1db66f2dad3afc8bc77610006bca9fea5947d2))
+ - Merge branch 'fix-git-features' ([`82fd251`](https://github.com/Byron/gitoxide/commit/82fd251ac80d07bc9da8a4d36e517aa35580d188))
+ - Merge branch 'diff' ([`25a7726`](https://github.com/Byron/gitoxide/commit/25a7726377fbe400ea3c4927d04e9dec99802b7b))
+ - Release git-hash v0.9.10, git-features v0.22.5, git-date v0.2.0, git-actor v0.12.0, git-glob v0.4.0, git-path v0.5.0, git-quote v0.3.0, git-attributes v0.4.0, git-config-value v0.8.0, git-tempfile v2.0.5, git-validate v0.6.0, git-object v0.21.0, git-ref v0.16.0, git-sec v0.4.0, git-config v0.8.0, git-discover v0.5.0, git-traverse v0.17.0, git-index v0.5.0, git-worktree v0.5.0, git-testtools v0.9.0, git-command v0.1.0, git-prompt v0.1.0, git-url v0.9.0, git-credentials v0.5.0, git-diff v0.19.0, git-mailmap v0.4.0, git-chunk v0.3.2, git-pack v0.23.0, git-odb v0.33.0, git-packetline v0.13.0, git-transport v0.20.0, git-protocol v0.20.0, git-revision v0.5.0, git-refspec v0.2.0, git-repository v0.24.0, git-commitgraph v0.9.0, gitoxide-core v0.18.0, gitoxide v0.16.0, safety bump 28 crates ([`29a043b`](https://github.com/Byron/gitoxide/commit/29a043be6808a3e9199a9b26bd076fe843afe4f4))
+ - Release git-features v0.22.6 ([`c9eda72`](https://github.com/Byron/gitoxide/commit/c9eda729d8f8bc266c7516c613d38acfb83a4743))
+ - Update changelog prior to release ([`ff80042`](https://github.com/Byron/gitoxide/commit/ff80042c9691e5dba5834c674174fdf6d3bdfe7d))
+ - Fix git-features docs build ([`e5963fe`](https://github.com/Byron/gitoxide/commit/e5963fea183d81db1fe502121b494146a58bd86e))
+ - Upgrade all dependencies, except for `windows` ([`2968181`](https://github.com/Byron/gitoxide/commit/29681819ffe53d3926d631dc482f71d6200cb549))
+ - Merge branch 'dep-upgrade' ([`59767b1`](https://github.com/Byron/gitoxide/commit/59767b1fc1d07b8a7a9333a719e3716746611bc4))
+ - Upgrade prodash and crosstermion to latest versions ([`ab7ee5b`](https://github.com/Byron/gitoxide/commit/ab7ee5b5d5c15771f431ada9c3b4f53e4be2afdd))
+ - Add zlib-ng feature to allow linking against system libz-ng ([`cfe46b5`](https://github.com/Byron/gitoxide/commit/cfe46b502afc3ecb312849ddbd7748007d432cd1))
+ - Merge branch 'main' into filter-refs-by-spec ([`9aa1d3d`](https://github.com/Byron/gitoxide/commit/9aa1d3dc46d4b1c76af257f573aff3aeef2d3fa8))
+ - Release git-features v0.22.4, git-url v0.8.0, safety bump 4 crates ([`1d4600a`](https://github.com/Byron/gitoxide/commit/1d4600ae51475c2e225f96c16c41e2c4a2b3f2aa))
+ - Merge branch 'main' into filter-refs-by-spec ([`1f6e5ab`](https://github.com/Byron/gitoxide/commit/1f6e5ab15f5fd8d23719b13e6aea59cd231ac0fe))
+ - Merge branch 'fix-522' ([`5869e9f`](https://github.com/Byron/gitoxide/commit/5869e9ff2508d5a93c07635277af8764fcb57713))
+ - Release git-hash v0.9.9 ([`da0716f`](https://github.com/Byron/gitoxide/commit/da0716f8c27b4f29cfff0e5ce7fcb3d7240f4aeb))
+ - Merge branch 'main' into index-from-tree ([`bc64b96`](https://github.com/Byron/gitoxide/commit/bc64b96a2ec781c72d1d4daad38aa7fb8b74f99b))
+ - Merge branch 'main' into filter-refs-by-spec ([`cef0b51`](https://github.com/Byron/gitoxide/commit/cef0b51ade2a3301fa09ede7a425aa1fe3527e78))
+ - Release git-features v0.22.3, git-revision v0.4.4 ([`c2660e2`](https://github.com/Byron/gitoxide/commit/c2660e2503323531ba02519eaa51124ee22fec51))
+ - Merge branch 'main' into filter-refs-by-spec ([`dbfa328`](https://github.com/Byron/gitoxide/commit/dbfa3282cf876596b250b2040c1ec0b761741796))
+ - Merge branch 'zlib-sys' ([`7b48297`](https://github.com/Byron/gitoxide/commit/7b482977a556d28f5d9759e1be33cdf3d85c8665))
+ - Restrict `sha1` `asm` to supported archs ([`b383fab`](https://github.com/Byron/gitoxide/commit/b383fabbe10868317be51b99cfdd9b0981816042))
+ - Add feature to link to traditional zlib for dynamic linking support ([`c954bbf`](https://github.com/Byron/gitoxide/commit/c954bbff60ba70a0f1680e3978dd1f8fc1e3a0e7))
+ - Merge branch 'main' into filter-refs-by-spec ([`cfa1440`](https://github.com/Byron/gitoxide/commit/cfa144031dbcac2707ab0cec012bc35e78f9c475))
+ - Release git-date v0.0.5, git-hash v0.9.8, git-features v0.22.2, git-actor v0.11.3, git-glob v0.3.2, git-quote v0.2.1, git-attributes v0.3.2, git-tempfile v2.0.4, git-lock v2.1.1, git-validate v0.5.5, git-object v0.20.2, git-ref v0.15.2, git-sec v0.3.1, git-config v0.7.0, git-credentials v0.4.0, git-diff v0.17.2, git-discover v0.4.1, git-bitmap v0.1.2, git-index v0.4.2, git-mailmap v0.3.2, git-chunk v0.3.1, git-traverse v0.16.2, git-pack v0.21.2, git-odb v0.31.2, git-packetline v0.12.7, git-url v0.7.2, git-transport v0.19.2, git-protocol v0.19.0, git-revision v0.4.2, git-refspec v0.1.0, git-worktree v0.4.2, git-repository v0.22.0, safety bump 4 crates ([`4974eca`](https://github.com/Byron/gitoxide/commit/4974eca96d525d1ee4f8cad79bb713af7a18bf9d))
+ - Merge branch 'main' into remote-ls-refs ([`e2ee3de`](https://github.com/Byron/gitoxide/commit/e2ee3ded97e5c449933712883535b30d151c7c78))
+ - Merge branch 'docsrs-show-features' ([`31c2351`](https://github.com/Byron/gitoxide/commit/31c235140cad212d16a56195763fbddd971d87ce))
+ - Use docsrs feature in code to show what is feature-gated automatically on docs.rs ([`b1c40b0`](https://github.com/Byron/gitoxide/commit/b1c40b0364ef092cd52d03b34f491b254816b18d))
+ - Uniformize deny attributes ([`f7f136d`](https://github.com/Byron/gitoxide/commit/f7f136dbe4f86e7dee1d54835c420ec07c96cd78))
+ - Pass --cfg docsrs when compiling for https://docs.rs ([`5176771`](https://github.com/Byron/gitoxide/commit/517677147f1c17304c62cf97a1dd09f232ebf5db))
+ - Merge branch 'main' into remote-ls-refs ([`bd5f3e8`](https://github.com/Byron/gitoxide/commit/bd5f3e8db7e0bb4abfb7b0f79f585ab82c3a14ab))
+ - Release git-hash v0.9.7, git-features v0.22.1 ([`232784a`](https://github.com/Byron/gitoxide/commit/232784a59ded3e8016e4257c7e146ad385cdd64a))
+ - Add `fs-jwalk-single-threaded` feature to specifically decouple `jwalk` from rayon ([`f498d35`](https://github.com/Byron/gitoxide/commit/f498d35baba52e40ecd47381e87c1ce49cf13285))
+ - Merge branch 'rev-parse-delegate' ([`2f506c7`](https://github.com/Byron/gitoxide/commit/2f506c7c2988477b0f97d272a9ac9ed47b236457))
+ - Thanks clippy! ([`c072dbb`](https://github.com/Byron/gitoxide/commit/c072dbb3e203e4a42843895b7d99404d900fdccd))
+ - Merge pull request #2 from SidneyDouw/main ([`ce885ad`](https://github.com/Byron/gitoxide/commit/ce885ad4c3324c09c83751c32e014f246c748766))
+ - Merge branch 'Byron:main' into main ([`9b9ea02`](https://github.com/Byron/gitoxide/commit/9b9ea0275f8ff5862f24cf5a4ca53bb1cd610709))
+ - Merge branch 'main' into rev-parse-delegate ([`6da8250`](https://github.com/Byron/gitoxide/commit/6da82507588d3bc849217c11d9a1d398b67f2ed6))
+ - Merge branch 'main' into pathspec ([`7b61506`](https://github.com/Byron/gitoxide/commit/7b615060712565f515515e35a3e8346278ad770c))
+ - Merge branch 'kianmeng-fix-typos' ([`4e7b343`](https://github.com/Byron/gitoxide/commit/4e7b34349c0a01ad8686bbb4eb987e9338259d9c))
+ - Fix typos ([`e9fcb70`](https://github.com/Byron/gitoxide/commit/e9fcb70e429edb2974afa3f58d181f3ef14c3da3))
+ - Release git-hash v0.9.6, git-features v0.22.0, git-date v0.0.2, git-actor v0.11.0, git-glob v0.3.1, git-path v0.4.0, git-attributes v0.3.0, git-tempfile v2.0.2, git-object v0.20.0, git-ref v0.15.0, git-sec v0.3.0, git-config v0.6.0, git-credentials v0.3.0, git-diff v0.17.0, git-discover v0.3.0, git-index v0.4.0, git-mailmap v0.3.0, git-traverse v0.16.0, git-pack v0.21.0, git-odb v0.31.0, git-url v0.7.0, git-transport v0.19.0, git-protocol v0.18.0, git-revision v0.3.0, git-worktree v0.4.0, git-repository v0.20.0, git-commitgraph v0.8.0, gitoxide-core v0.15.0, gitoxide v0.13.0, safety bump 22 crates ([`4737b1e`](https://github.com/Byron/gitoxide/commit/4737b1eea1d4c9a8d5a69fb63ecac5aa5d378ae5))
+ - Prepare changelog prior to release ([`3c50625`](https://github.com/Byron/gitoxide/commit/3c50625fa51350ec885b0f38ec9e92f9444df0f9))
+ - Merge branch 'config-cascade' ([`f144eaf`](https://github.com/Byron/gitoxide/commit/f144eaf5863ae5cac63103f0db51c35fcf03a948))
+ - Merge pull request #1 from Byron/main ([`085e76b`](https://github.com/Byron/gitoxide/commit/085e76b121291ed9bd324139105d2bd4117bedf8))
+ - Git-features' walkdir: 2.3.1 -> 2.3.2 ([`41dd754`](https://github.com/Byron/gitoxide/commit/41dd7545234e6d2637d2bca5bb6d4f6d8bfc8f57))
+ - Merge branch 'main' into pathspec ([`89ea12b`](https://github.com/Byron/gitoxide/commit/89ea12b558bcc056b892193ee8fb44b8664b5da4))
+ - Merge branch 'main' into cont_include_if ([`41ea8ba`](https://github.com/Byron/gitoxide/commit/41ea8ba78e74f5c988148367386a1f4f304cb951))
+ - Release git-date v0.0.1, git-hash v0.9.5, git-features v0.21.1, git-actor v0.10.1, git-path v0.2.0, git-attributes v0.2.0, git-ref v0.14.0, git-sec v0.2.0, git-config v0.5.0, git-credentials v0.2.0, git-discover v0.2.0, git-pack v0.20.0, git-odb v0.30.0, git-url v0.6.0, git-transport v0.18.0, git-protocol v0.17.0, git-revision v0.2.1, git-worktree v0.3.0, git-repository v0.19.0, safety bump 13 crates ([`a417177`](https://github.com/Byron/gitoxide/commit/a41717712578f590f04a33d27adaa63171f25267))
+ - Update changelogs prior to release ([`bb424f5`](https://github.com/Byron/gitoxide/commit/bb424f51068b8a8e762696890a55ab48900ab980))
+ - Assure we used most recent version of crossbeam-utils ([`033f0d3`](https://github.com/Byron/gitoxide/commit/033f0d3e0015b7eead6408c775d2101eb413ffbf))
+ - Merge branch 'main' into SidneyDouw-pathspec ([`a22b1d8`](https://github.com/Byron/gitoxide/commit/a22b1d88a21311d44509018729c3ef1936cf052a))
+ - Merge branch 'main' into git_includeif ([`598c853`](https://github.com/Byron/gitoxide/commit/598c853087fcf8f77299aa5b9803bcec705c0cd0))
+ - Release git-hash v0.9.4, git-features v0.21.0, git-actor v0.10.0, git-glob v0.3.0, git-path v0.1.1, git-attributes v0.1.0, git-sec v0.1.0, git-config v0.3.0, git-credentials v0.1.0, git-validate v0.5.4, git-object v0.19.0, git-diff v0.16.0, git-lock v2.1.0, git-ref v0.13.0, git-discover v0.1.0, git-index v0.3.0, git-mailmap v0.2.0, git-traverse v0.15.0, git-pack v0.19.0, git-odb v0.29.0, git-packetline v0.12.5, git-url v0.5.0, git-transport v0.17.0, git-protocol v0.16.0, git-revision v0.2.0, git-worktree v0.2.0, git-repository v0.17.0, safety bump 20 crates ([`654cf39`](https://github.com/Byron/gitoxide/commit/654cf39c92d5aa4c8d542a6cadf13d4acef6a78e))
+ - Merge branch 'main' into msrv-for-windows ([`7cb1972`](https://github.com/Byron/gitoxide/commit/7cb19729133325bdfacedf44cdc0500cbcf36684))
+ - Merge branch 'worktree-stack' ([`98da8ba`](https://github.com/Byron/gitoxide/commit/98da8ba52cef8ec27f705fcbc84773e5bacc4e10))
+ - Thanks clippy ([`380174f`](https://github.com/Byron/gitoxide/commit/380174f0ad9e60ccafcd4cfb24e244f106137964))
+ - Release git-features v0.20.0, git-config v0.2.0 ([`a6460db`](https://github.com/Byron/gitoxide/commit/a6460db80ba3c49ea37c712465c7cbdefa5c32b6))
+ - Release git-hash v0.9.3, git-features v0.20.0, git-config v0.2.0, safety bump 12 crates ([`f0cbb24`](https://github.com/Byron/gitoxide/commit/f0cbb24b2e3d8f028be0e773f9da530da2656257))
+ - Remove 'unused_mut' warning on windows ([`4733e6c`](https://github.com/Byron/gitoxide/commit/4733e6c6f5ea7d5afa4dd171bbba066cf5120ddc))
+ - Make fmt ([`7cf3545`](https://github.com/Byron/gitoxide/commit/7cf354509b545f7e7c99e159b5989ddfbe86273d))
+ - Commit to using 'unicode' feature of bstr as git-object wants it too ([`471fa62`](https://github.com/Byron/gitoxide/commit/471fa62b142ba744541d7472464d62826f5c6b93))
+ - Assure std::io::copy() doesn't hang when we cause an interrupt ([`234cd10`](https://github.com/Byron/gitoxide/commit/234cd10ca55482ce1a840ce3244308d249895bcc))
+ - Upgrade to prodash 19 ([`90c6c5a`](https://github.com/Byron/gitoxide/commit/90c6c5aec4015ff969d6e2514fa4d49873ee80f5))
+ - Thanks clippy ([`07a4094`](https://github.com/Byron/gitoxide/commit/07a4094965ac1b4eb223da8e5ca5cc4a86c5f596))
+ - Properly document optional features ([`572e57d`](https://github.com/Byron/gitoxide/commit/572e57d5796692764c5c9633969aad25a6f9221a))
+ - Merge branch 'svetli-n-path_value' ([`e8383ca`](https://github.com/Byron/gitoxide/commit/e8383caf6db211beb57d70019fe4ad13ce9066ee))
+ - Small refactoring and documentation. ([`fefb01b`](https://github.com/Byron/gitoxide/commit/fefb01b84f954700b19e010282c4b413de8e03d2))
+ - Upgrade document-features ([`c35e62e`](https://github.com/Byron/gitoxide/commit/c35e62e0da9ac1f7dcb863f5f9c69108c728d32e))
+ - Merge branch 'unify-path-encoding' ([`566ff8a`](https://github.com/Byron/gitoxide/commit/566ff8a3597b889899d41ca15e5b9af7e05f1a4b))
+ - Thanks clippy ([`a8e9497`](https://github.com/Byron/gitoxide/commit/a8e9497caebf1c0e9faac537717cd86378f1acf6))
+ - Release git-features v0.19.1, git-actor v0.8.0, git-config v0.1.10, git-object v0.17.0, git-diff v0.13.0, git-tempfile v1.0.4, git-chunk v0.3.0, git-traverse v0.12.0, git-pack v0.16.0, git-odb v0.26.0, git-packetline v0.12.3, git-url v0.3.5, git-transport v0.15.0, git-protocol v0.14.0, git-ref v0.11.0, git-repository v0.14.0, cargo-smart-release v0.8.0 ([`d78aab7`](https://github.com/Byron/gitoxide/commit/d78aab7b9c4b431d437ac70a0ef96263acb64e46))
+ - Release git-hash v0.9.1, git-features v0.19.1, git-actor v0.8.0, git-config v0.1.10, git-object v0.17.0, git-diff v0.13.0, git-tempfile v1.0.4, git-chunk v0.3.0, git-traverse v0.12.0, git-pack v0.16.0, git-odb v0.26.0, git-packetline v0.12.3, git-url v0.3.5, git-transport v0.15.0, git-protocol v0.14.0, git-ref v0.11.0, git-repository v0.14.0, cargo-smart-release v0.8.0, safety bump 4 crates ([`373cbc8`](https://github.com/Byron/gitoxide/commit/373cbc877f7ad60dac682e57c52a7b90f108ebe3))
+ - Prepare changelogs for release ([`674ec73`](https://github.com/Byron/gitoxide/commit/674ec73b0816baa2c63b4ef1b40b7a41849c5e95))
+ - Prepar changelogs for cargo-smart-release release ([`8900d69`](https://github.com/Byron/gitoxide/commit/8900d699226eb0995be70d66249827ce348261df))
+ - Upgrade to tui 0.17 and prodash 18 ([`eba101a`](https://github.com/Byron/gitoxide/commit/eba101a576ecb7bc0f63357d0dd81eb817b94be4))
+ - Release git-bitmap v0.0.1, git-hash v0.9.0, git-features v0.19.0, git-index v0.1.0, safety bump 9 crates ([`4624725`](https://github.com/Byron/gitoxide/commit/4624725f54a34dd6b35d3632fb3516965922f60a))
+ - Upgrade dependencies ([`968df47`](https://github.com/Byron/gitoxide/commit/968df4746729556dcf4f5039b1d1ed1a1da2705a))
+ - Refactor ([`e7fbd9f`](https://github.com/Byron/gitoxide/commit/e7fbd9f3700496ad7bb7e71226c4d25429f0ccd5))
+ - Merge branch 'sync-db-draft' ([`7d2e20c`](https://github.com/Byron/gitoxide/commit/7d2e20c6fedc2c7e71a307d8d072412fa847a4aa))
+ - Thanks clippy ([`7dd2313`](https://github.com/Byron/gitoxide/commit/7dd2313d980fe7c058319ae66d313b3097e3ae5f))
+ - Release git-features v0.18.0, git-actor v0.7.0, git-config v0.1.9, git-object v0.16.0, git-diff v0.12.0, git-traverse v0.11.0, git-pack v0.15.0, git-odb v0.25.0, git-packetline v0.12.2, git-transport v0.14.0, git-protocol v0.13.0, git-ref v0.10.0, git-repository v0.13.0, cargo-smart-release v0.7.0, safety bump 12 crates ([`acd3737`](https://github.com/Byron/gitoxide/commit/acd37371dcd92ebac3d1f039224d02f2b4e9fa0b))
+ - Adjust changelogs prior to release ([`ec38950`](https://github.com/Byron/gitoxide/commit/ec3895005d141abe79764eaff7c0f04153e38d73))
+ - Thanks clippy ([`db1bb99`](https://github.com/Byron/gitoxide/commit/db1bb99101a9248b464b0df9f526067b8f2a184e))
+ - Merge branch 'pack-consistency' ([`5982406`](https://github.com/Byron/gitoxide/commit/5982406b4e1b26fd383d9ec21a3cf652ec8ab25f))
+ - Release git-hash v0.8.0, git-features v0.17.0, git-actor v0.6.0, git-object v0.15.0, git-diff v0.11.0, git-traverse v0.10.0, git-pack v0.13.0, git-odb v0.23.0, git-packetline v0.12.0, git-transport v0.13.0, git-protocol v0.12.0, git-ref v0.9.0, git-repository v0.11.0, git-commitgraph v0.6.0, gitoxide-core v0.12.0, gitoxide v0.10.0, cargo-smart-release v0.5.0, safety bump 16 crates ([`0e02953`](https://github.com/Byron/gitoxide/commit/0e029537a7f6242d02ccf7e63d8d92f5246e6c5e))
+ - Release git-hash v0.7.0, git-features v0.16.5, git-actor v0.5.3, git-config v0.1.7, git-validate v0.5.3, git-object v0.14.1, git-diff v0.10.0, git-tempfile v1.0.3, git-lock v1.0.1, git-traverse v0.9.0, git-pack v0.12.0, git-odb v0.22.0, git-packetline v0.11.0, git-url v0.3.4, git-transport v0.12.0, git-protocol v0.11.0, git-ref v0.8.0, git-repository v0.10.0, cargo-smart-release v0.4.0 ([`59ffbd9`](https://github.com/Byron/gitoxide/commit/59ffbd9f15583c8248b7f48b3f55ec6faffe7cfe))
+ - Adjusting changelogs prior to release of git-hash v0.7.0, git-features v0.16.5, git-actor v0.5.3, git-validate v0.5.3, git-object v0.14.1, git-diff v0.10.0, git-tempfile v1.0.3, git-lock v1.0.1, git-traverse v0.9.0, git-pack v0.12.0, git-odb v0.22.0, git-packetline v0.11.0, git-url v0.3.4, git-transport v0.12.0, git-protocol v0.11.0, git-ref v0.8.0, git-repository v0.10.0, cargo-smart-release v0.4.0, safety bump 3 crates ([`a474395`](https://github.com/Byron/gitoxide/commit/a47439590e36b1cb8b516b6053fd5cbfc42efed7))
+ - Make fmt, but now it picked up some parts that usually don't get altered… ([`01f7b72`](https://github.com/Byron/gitoxide/commit/01f7b729337bd2c99498321c479a9a13b1858e3e))
+ - Release git-features v0.16.4 ([`fd189c7`](https://github.com/Byron/gitoxide/commit/fd189c7d973ad2a639d319f3761f37aa90712ef6))
+ - Merge branch 'repository-integration' ([`49f5453`](https://github.com/Byron/gitoxide/commit/49f5453629646ac24d752f53c532e5f67eb09374))
+ - Bump git-hash v0.6.0 ([`6efd90d`](https://github.com/Byron/gitoxide/commit/6efd90db54f7f7441b76159dba3be80c15657a3d))
+ - [features #190] be more explicit about why sha1-asm is disabled ([`507d710`](https://github.com/Byron/gitoxide/commit/507d710d837c3911a9329c1c132eee912a37e1a8))
+ - [various #190] rename 'local-offset' to 'local-time-support' ([`3a7d379`](https://github.com/Byron/gitoxide/commit/3a7d3793a235ac872437f3bfedb9dd8fde9b31b1))
+ - [actor #190] methods to get an actor signature at the current time ([`6d0bedd`](https://github.com/Byron/gitoxide/commit/6d0beddb20092a80b113a39c862d6b680d79deb6))
+ - [features #189] simple UTC-offset support for git-features ([`b58134b`](https://github.com/Byron/gitoxide/commit/b58134bbd132f9e685d1adf7859ec5219c16dd25))
+ - [features #???] WIP local time ([`1388ebf`](https://github.com/Byron/gitoxide/commit/1388ebf0925eb326ec3045d7f83bd5beda22a6fe))
+ - [#189] Upgrade to prodash 16… ([`8e98418`](https://github.com/Byron/gitoxide/commit/8e98418652926860f58906a6f21a3210e2f0183f))
+ - [pack #67] Optimize caches based on cache debugging ([`1271c01`](https://github.com/Byron/gitoxide/commit/1271c01d2635ab49474add61a9feb78b98bd6180))
+ - [pack #67] Add cache debugging capabilities to git-features ([`8776c98`](https://github.com/Byron/gitoxide/commit/8776c9834ac4622b3057f5db464a9817ed9acdb0))
+ - Merge branch 'main' into 162-repo-design-sketch ([`e63b634`](https://github.com/Byron/gitoxide/commit/e63b63412c02db469fbdb17da82cd1e9fda1ef0f))
+ - Thanks clippy ([`d689599`](https://github.com/Byron/gitoxide/commit/d689599d1b819c18a3be60075170dbe00462e216))
+ - [features] refactor ([`0958fc8`](https://github.com/Byron/gitoxide/commit/0958fc8dbaa72dda0c1e2d40a88d74b4e18bfe39))
+ - [features] refactor ([`d4605cd`](https://github.com/Byron/gitoxide/commit/d4605cde6d825c0bfaf4282c4cbd85d9f07dc43f))
+ - Release git-features v0.16.2 ([`42861ca`](https://github.com/Byron/gitoxide/commit/42861ca4f0cc9b741d033d4ffa50147b08513b58))
+ - Apply nightly rustfmt rules. ([`5e0edba`](https://github.com/Byron/gitoxide/commit/5e0edbadb39673d4de640f112fa306349fb11814))
+ - (cargo-release) version 0.16.1 ([`e10e55c`](https://github.com/Byron/gitoxide/commit/e10e55c1bf1b40965da9b8b6c87953e6eafda09a))
+ - (cargo-release) version 0.5.0 ([`ae02dab`](https://github.com/Byron/gitoxide/commit/ae02dabae961089a92a21e6a60a7006de4b56dad))
+ - (cargo-release) version 0.16.0 ([`1231dbd`](https://github.com/Byron/gitoxide/commit/1231dbd16dacefb39adec8e067c312d313a82e3c))
+ - Upgrade prodash/crosstermion ([`f109409`](https://github.com/Byron/gitoxide/commit/f1094099de028deabbee3587a70291a7e625e328))
+ - Clippy on tests and thanks clippy ([`a77a71c`](https://github.com/Byron/gitoxide/commit/a77a71cf02d328a2a964388928d6b2a235a0aa85))
+ - [pack] fix build ([`98dd557`](https://github.com/Byron/gitoxide/commit/98dd557b963acfe1c4e717451d222c187c46a5da))
+ - [pack] all tests running for now, but… ([`aec8439`](https://github.com/Byron/gitoxide/commit/aec8439683c639f7b6e344cb76bf1dd9fc769d17))
+ - Refactor sha-1 specification to avoid duplication ([`e23d19c`](https://github.com/Byron/gitoxide/commit/e23d19cd339f0ca5420c82e8125d2c9c7dfcb0da))
+ - Resolver = 2: works! ([`6dc8779`](https://github.com/Byron/gitoxide/commit/6dc877993135ce86649b239821e5b374251743d0))
+ - Try windows one more time: resolver = "2" ([`69d52b8`](https://github.com/Byron/gitoxide/commit/69d52b8ed7a733fe7f31826e576ba8b19619b148))
+ - Fix windows, leave todo, move on ([`2de9e78`](https://github.com/Byron/gitoxide/commit/2de9e78dba35de31456eb553ae703120de23cba6))
+ - See if turning off "asm" support entirely fixes windows ([`b804ef2`](https://github.com/Byron/gitoxide/commit/b804ef2ea6da1ebffaab4d09d0b91eae98ff70c9))
+ - Try to fix build, again ([`c616627`](https://github.com/Byron/gitoxide/commit/c616627cc9984e40798120a801387fc179d6640b))
+ - Don't use ASM on windows for Sha1 as it fails to build there. ([`ba1fb7a`](https://github.com/Byron/gitoxide/commit/ba1fb7ab5bc03f5a23ece32ff1e144544e1eaeae))
+ - [features] enable ASM for everyone… ([`7a1128f`](https://github.com/Byron/gitoxide/commit/7a1128f594c5395a22e5e2b23772bce1d4de7a37))
+ - [ref] reproducible loose ref iteration with built-in sorting ([`e138748`](https://github.com/Byron/gitoxide/commit/e13874807ccc3cbc2b4aacccf63ac5c3dd21c445))
+ - [features] fix docs in the absence of sha1 related features ([`6ca02ac`](https://github.com/Byron/gitoxide/commit/6ca02ace7552c1ffaead81929bc751d96afa713a))
+ - Remove unnecessary pub(crate) exports ([`3d2456e`](https://github.com/Byron/gitoxide/commit/3d2456e11709f0461b37c6df55ecc3861ca4cab5))
+ - [ref] first rough implementation of loose ref iteration ([`918af42`](https://github.com/Byron/gitoxide/commit/918af425298a1fdbb8e7dd6328daefe9eaa10cef))
+ - Refactor ([`2174513`](https://github.com/Byron/gitoxide/commit/21745135ced62411be535ebbc827b3638726318b))
+ - Fix docs ([`e68d460`](https://github.com/Byron/gitoxide/commit/e68d460716dc51c7f4757c11f3c8af6c3881e2cf))
+ - Remove mentions of interrupt handling feature toggles ([`833ac04`](https://github.com/Byron/gitoxide/commit/833ac0464b42bd3ecc76c6263b4b06e8ab4ff182))
+ - Fix everything up so that… ([`5930563`](https://github.com/Byron/gitoxide/commit/5930563601d6c2148cf39e109f69f8b7c7dfcb36))
+ - A first attempt to make intrerupt tools work, but… ([`8fb8d37`](https://github.com/Byron/gitoxide/commit/8fb8d374ecfeffa3ae1bd07bf9bc5014351730f5))
+ - First step towards moving git-features::interrupt… ([`8a741d0`](https://github.com/Byron/gitoxide/commit/8a741d0c5423ed7c35d9382307c760a6b9460ccd))
+ - Fix build ([`ea2bfac`](https://github.com/Byron/gitoxide/commit/ea2bfac65f742ca7617bc77a50376c29156c4ea5))
+ - Refactor ([`7f9be36`](https://github.com/Byron/gitoxide/commit/7f9be36ea909ee67555591287bcb140fdc54c801))
+ - And one less usage of the global interrupt handler… ([`5da57a3`](https://github.com/Byron/gitoxide/commit/5da57a3b0efef75ad82cb4d1cd496fc7fc0f1c23))
+ - Make most interrupts local to the method or function ([`4588993`](https://github.com/Byron/gitoxide/commit/458899306a3f3c8578f185d7ecbf1ade2a7142dd))
+ - Fix build ([`04d919f`](https://github.com/Byron/gitoxide/commit/04d919f9228d287912554275194487870500d18c))
+ - Refactor ([`e0b7f69`](https://github.com/Byron/gitoxide/commit/e0b7f695ee6bd1032544a29d91906f9b75e12d46))
+ - [features] sketch of iterator to auto-check for interruptions ([`61d3a15`](https://github.com/Byron/gitoxide/commit/61d3a15c66b4c1be1d98715b8a60705a3a314455))
+ - [tempfile] integrate with git-features to have a single top-level interrupt… ([`6e9400d`](https://github.com/Byron/gitoxide/commit/6e9400d9cb8e370d870c3aa635718b134c82268f))
+ - [features] protect interrupt handler from multi-initialization ([`592404c`](https://github.com/Byron/gitoxide/commit/592404c2b24dc9d24465ff5f73216213436a277a))
+ - [interrupt] remove any user mesasages as it can't be done in a handler. ([`8a10af7`](https://github.com/Byron/gitoxide/commit/8a10af77db654ebce940bb05f8eefd171036ef40))
+ - [tempfile] a first somewhat working version of signal-hooks for interrupt handling ([`07b3242`](https://github.com/Byron/gitoxide/commit/07b3242e446cb4520dbc54308632ab6221fc19c8))
+ - Update to latest prodash to get rid of ctrlc ([`c070d6f`](https://github.com/Byron/gitoxide/commit/c070d6f5273d7ef9049ddd02fd26332623dc0ae6))
+ - Refactor ([`2e86723`](https://github.com/Byron/gitoxide/commit/2e8672312a4b1e2638e3ffe82a97cc2f87b496cf))
+ - Bump crossbeam-utils from 0.8.4 to 0.8.5 ([`fce4d10`](https://github.com/Byron/gitoxide/commit/fce4d107c7abc778bbdfcd37349c3075e54fd756))
+ - (cargo-release) version 0.4.0 ([`866f86f`](https://github.com/Byron/gitoxide/commit/866f86f59e66652968dcafc1a57912f9849cb21d))
+ - [git-pack] fix docs ([`efd20d4`](https://github.com/Byron/gitoxide/commit/efd20d4e1afbfbe573d620dea4761c06f948a296))
+ - [git-features] fix compilation ([`38c7961`](https://github.com/Byron/gitoxide/commit/38c796142dc5823e1cb14906d9cd4040a8c3be3a))
+ - [git-pack] move hash-writer to git-features as it's quite general purpose ([`80e5640`](https://github.com/Byron/gitoxide/commit/80e5640169363910b4189fda58bb495c6677eaaa))
+ - [git-features] Remove feature that would break licensing agreements ([`cd6ce67`](https://github.com/Byron/gitoxide/commit/cd6ce673308e7e5b1e86fb682ee3ace2ca9ae18c))
+ - [git-features] fix typo ([`c6f342f`](https://github.com/Byron/gitoxide/commit/c6f342f3d29a969a08d037f01eb24555bc03e85e))
+ - [git-features] Finally zlib with feature toggles is working… ([`057016e`](https://github.com/Byron/gitoxide/commit/057016e2df3138992c4857f9b65bf19dc2c9a097))
+ - [git-features] And now zlib finally works! ([`6d887d5`](https://github.com/Byron/gitoxide/commit/6d887d589a57e159986f049c8a9e19c52ce7b85b))
+ - [git-features] simplify even more ([`ca54d97`](https://github.com/Byron/gitoxide/commit/ca54d97d579dd4f16025a2325d5e39431f6e8a36))
+ - [git-features] refactor to help understand a zlib-related logic bug ([`ae826e8`](https://github.com/Byron/gitoxide/commit/ae826e8c3240efd14939beedd33a06695a6c112b))
+ - [git-features] a first step towards supporting a pure rust zlib backend ([`040cab7`](https://github.com/Byron/gitoxide/commit/040cab7f27de83b283957189244d523d71ca1457))
+ - [git-features] Add zlib module to allow changing implementation on the fly ([`4bdf783`](https://github.com/Byron/gitoxide/commit/4bdf7833d99d3c2884b9747614f9c14a06c1e945))
+ - (cargo-release) version 0.15.0 ([`d69d9fb`](https://github.com/Byron/gitoxide/commit/d69d9fb0931f8257cef96ef14a89da9340ad9738))
+ - Put prodash behind a feature toggle, too ([`966058d`](https://github.com/Byron/gitoxide/commit/966058d611c548e90c050462de52e36f1925e775))
+ - Put 'walkdir' behind a feature flag/make it optional. ([`1a3cc5b`](https://github.com/Byron/gitoxide/commit/1a3cc5bea1868ed3ae015403fbe0cdec788be749))
+ - Put 'sha1' behind a feature toggle ([`4f326bc`](https://github.com/Byron/gitoxide/commit/4f326bc261c4e7f0d5510df74ad4215da3580696))
+ - Use crc32fast instead of `crc` ([`11955f9`](https://github.com/Byron/gitoxide/commit/11955f95e200ef75e752a833952d288fbd0fc389))
+ - Put crc functionality behind a feature toggle ([`458fa6e`](https://github.com/Byron/gitoxide/commit/458fa6ec726ec7901c1f6d970cbb1c1ea975dded))
+ - (cargo-release) version 0.14.0 ([`a760f8c`](https://github.com/Byron/gitoxide/commit/a760f8c013e13ba82daa1acf1a4a57e0818a008d))
+ - Upgrade to prodash 13/tui 0.15 ([`1c99f51`](https://github.com/Byron/gitoxide/commit/1c99f51b35b4ba85792a3b32dbb7e48052facc5e))
+ - (cargo-release) version 0.3.0 ([`e9665c7`](https://github.com/Byron/gitoxide/commit/e9665c784ae7e5cdaf662151395ee2355e9b57b6))
+ - Allow calling 'finalize()' on the entries iterator ([`3c617bc`](https://github.com/Byron/gitoxide/commit/3c617bc2ae59adbb12c254308269e745149d462b))
+ - Git-odb without cargo warnings due to using the same test twice ([`8945f95`](https://github.com/Byron/gitoxide/commit/8945f95364b489e7a639d74dd0f28b17e82e70f3))
+ - Fix compile warning for git-features ([`d457faa`](https://github.com/Byron/gitoxide/commit/d457faac6bb56a229b74147c8a4cf2484026bb1a))
+ - Fix doc links ([`870af2a`](https://github.com/Byron/gitoxide/commit/870af2a6949bcb1f7f45bc0ff98d9e9a07014b22))
+ - Run git-odb tests in parallel, too; improved threaded error handling ([`40802fd`](https://github.com/Byron/gitoxide/commit/40802fd8bbb15b8a61249522d67f3a5b28da64b3))
+ - Refactor ([`82c2f42`](https://github.com/Byron/gitoxide/commit/82c2f428e22c3cda79913c9ca2f092c377d692aa))
+ - Refactor ([`7a6b514`](https://github.com/Byron/gitoxide/commit/7a6b514a5b9b93bf574cd3a114f27ad5967e89ac))
+ - Refactor ([`5ef1f22`](https://github.com/Byron/gitoxide/commit/5ef1f22c1e12ff8d607663d4dfbbbfe426a29e0f))
+ - Fix docs #(67) ([`01db10a`](https://github.com/Byron/gitoxide/commit/01db10a27431ad89a68ed3e4eabae810748a6f29))
+ - Refactor ([`3e908bd`](https://github.com/Byron/gitoxide/commit/3e908bd4b4077c4a5d113cefc113f9d71f249133))
+ - Refactor ([`409d763`](https://github.com/Byron/gitoxide/commit/409d763d2fca974a647487c72d15f568a9b62ccb))
+ - Refactor ([`896ab94`](https://github.com/Byron/gitoxide/commit/896ab940bcd475d026e4009b3aa2fa6a025c14bc))
+ - Remove unused dependency ([`26beb2a`](https://github.com/Byron/gitoxide/commit/26beb2a5ad87e173fd3d13d17b0e9676a650cac9))
+ - Don't finish the computation on drop of SteppedReduce ([`6453633`](https://github.com/Byron/gitoxide/commit/6453633f1420327aee07dca2ad27abd8f96108c0))
+ - Thanks clippy ([`c320761`](https://github.com/Byron/gitoxide/commit/c320761821b08946a2b37e219400ded853a86408))
+ - Remove unsafe interface for stepped computation #(67) ([`c856613`](https://github.com/Byron/gitoxide/commit/c856613a35aea7dea1d093bfcfe1ddbde93fdf26))
+ - A first working version of a static parallel iterator #(67) ([`d7d5c68`](https://github.com/Byron/gitoxide/commit/d7d5c6855a038a8b01571a6a16a61fe0d8036d30))
+ - A way iteration won't work with 'static #(67) ([`6fda1f2`](https://github.com/Byron/gitoxide/commit/6fda1f20a57b9dcc1a5818d8d0b656218b383230))
+ - Sketch of machinery for producing pack entries #(67) ([`ac8e7fb`](https://github.com/Byron/gitoxide/commit/ac8e7fb6c8ae4ac42f56482d9d7744aa66132702))
+ - Less restrictive requirements: Clone instead of Copy #(67) ([`410e7d6`](https://github.com/Byron/gitoxide/commit/410e7d64049b5a749113126f5412a61ae4b79887))
+ - Improve Safety docs #(67) ([`15e4748`](https://github.com/Byron/gitoxide/commit/15e47480054d9a517c28f47db3b5fa87968a307e))
+ - A test to assure referenced input and references in 'consume' work #(67) ([`4526d82`](https://github.com/Byron/gitoxide/commit/4526d82fab4d6e8f2ab05497aa5893d5a8f8b253))
+ - Make iterator creation unsafe and document why #(67) ([`593d5df`](https://github.com/Byron/gitoxide/commit/593d5df478e67e28f9b3d48b201ff6830208726f))
+ - First seemingly working version of an iterator which allows controlling threaded work #(67) ([`4a7ef7d`](https://github.com/Byron/gitoxide/commit/4a7ef7d6398c2ff5dd6aac41f8224cd2d61ee189))
+ - Make the parallel SteppedReduce compile #(67) ([`017fdf4`](https://github.com/Byron/gitoxide/commit/017fdf48972a6a09e5155bd76bd437d8e195dae3))
+ - More docs to differentiate SteppedReduce from in_parallel() #(67) ([`153c083`](https://github.com/Byron/gitoxide/commit/153c0837bbf1df3b5cb386e08265f9b06eaee2a9))
+ - Serial version of SteppedReduce seems to be working #(67) ([`779542e`](https://github.com/Byron/gitoxide/commit/779542e4f4c951e9b16d2310146020da9ce36859))
+ - Only store thread state #(67) ([`0bf8a9b`](https://github.com/Byron/gitoxide/commit/0bf8a9b3c4a086732ee04f81c6a214296d49eab9))
+ - Sketch instantiation of iterator adapter #(67) ([`a3083ad`](https://github.com/Byron/gitoxide/commit/a3083ad3aad7984afc6b6d343ca7453f79897062))
+ - A reducer test in preparation for allow it to be used as iterator #(67) ([`1c2adf4`](https://github.com/Byron/gitoxide/commit/1c2adf4a546273489bf8224eb7982dbdf3fb6aca))
+ - (cargo-release) version 0.13.0 ([`ac2eddb`](https://github.com/Byron/gitoxide/commit/ac2eddb06eb3d8a9a3dcdcd796eb54a7e45ab935))
+ - Allow parallel reducers to produce something during 'feed()' #(67) ([`6c04fcd`](https://github.com/Byron/gitoxide/commit/6c04fcd643083d9db633edd3bb838b4f5de8f0db))
+ - (cargo-release) version 0.12.0 ([`3b71e7e`](https://github.com/Byron/gitoxide/commit/3b71e7e8416e550b47e5aed2259c1181497ac9e8))
+ - (cargo-release) version 0.2.0 ([`4ec09f4`](https://github.com/Byron/gitoxide/commit/4ec09f4d2239ea1d44f7145027e64191bf2c158c))
+ - Refactor ([`dee8c66`](https://github.com/Byron/gitoxide/commit/dee8c66e300dc2a2b6e1a6d6c3674a7ce6aac687))
+ - (cargo-release) version 0.11.0 ([`1aa1f5e`](https://github.com/Byron/gitoxide/commit/1aa1f5e84a07427d5d7f3231735fe9c1923f506f))
+ - (cargo-release) version 0.10.1 ([`0dcdfd7`](https://github.com/Byron/gitoxide/commit/0dcdfd754649240f43fe0f4b6e1245e8c7b89635))
+ - Remove usage of gitfeatures::fs in organize subcommand ([`b567d37`](https://github.com/Byron/gitoxide/commit/b567d3709a74e9fdafef54b0fe58ca82721cd773))
+ - Assure basic 'organize' operation is working as expected ([`deb6073`](https://github.com/Byron/gitoxide/commit/deb6073671ae95de674aaef7ca01e03f95b41ca8))
+ - A first stab at finding git repositories ([`e4dc964`](https://github.com/Byron/gitoxide/commit/e4dc96403894f1fe509335905679347ecdf535c7))
+ - Upgrade 'jwalk' ([`cba048f`](https://github.com/Byron/gitoxide/commit/cba048f094858388f4242e37a2409fe0822f8c07))
+ - Upgrade 'bytes' ([`3934392`](https://github.com/Byron/gitoxide/commit/39343922b4a1129394aa788a9591920aee077569))
+ - Upgrade prodash and friends ([`50755bc`](https://github.com/Byron/gitoxide/commit/50755bc83f73072dc629301bf69c5c065d5c2aa4))
+ - Add missing '.' at end of doc comments ([`7136854`](https://github.com/Byron/gitoxide/commit/71368544f97369a4d371d43513607c4805bd0fd0))
+ - Use git-hash in git-features ([`5b307e0`](https://github.com/Byron/gitoxide/commit/5b307e076f6f5975592c8b177c122c91c1d809c6))
+ - (cargo-release) version 0.9.0 ([`a89fdb9`](https://github.com/Byron/gitoxide/commit/a89fdb98f64bb0ca070fa79a1f58f1232bb14090))
+ - (cargo-release) version 0.5.0 ([`fc7d600`](https://github.com/Byron/gitoxide/commit/fc7d600ac2c438c8b6b91f67cb69b0ac5ec37675))
+ - More docs for owned git-object ([`b79101d`](https://github.com/Byron/gitoxide/commit/b79101d714f59a42a30eb47776486a212ec0f738))
+ - Fix io::pipe tests ([`9604154`](https://github.com/Byron/gitoxide/commit/9604154e687813a11f0eee469e408561a6a74a4e))
+ - Uograde everything else ([`0cd79d0`](https://github.com/Byron/gitoxide/commit/0cd79d00bce3f042b5cc849cf48739e29f95fcb0))
+ - Upgrade prodash and tui ([`b5eadca`](https://github.com/Byron/gitoxide/commit/b5eadca343bbaa1af86722b5f1bcd33f4e3939a6))
+ - Add remaining docs to git-features using the missing_docs directive ([`f8aafd6`](https://github.com/Byron/gitoxide/commit/f8aafd6c78687899a2ca3a3e6147d93fc45b8cb9))
+ - (cargo-release) version 0.8.0 ([`47c00c2`](https://github.com/Byron/gitoxide/commit/47c00c2228cf25c79e1fa3eb4229c7ab24de91e5))
+ - Finish git-features documentation ([`934a26c`](https://github.com/Byron/gitoxide/commit/934a26c5e254baf2be9178096b6dead0e4c1ed1d))
+ - Refactor ([`b3a8bb5`](https://github.com/Byron/gitoxide/commit/b3a8bb5f7f0c6e80259922546928c2739c24f7b5))
+ - Refactor ([`f9e8d29`](https://github.com/Byron/gitoxide/commit/f9e8d2932c02c22bf57acd39fb0a9e6d521070bd))
+ - Docs for the git-features::pipe module ([`67a950a`](https://github.com/Byron/gitoxide/commit/67a950a2e0fd56b29565668ed0a0f399d5aa989d))
+ - Document git-features::parallel ([`b899227`](https://github.com/Byron/gitoxide/commit/b8992275cd4310b05494be41c059e9b6049d06b1))
+ - Dependency update ([`fb077f9`](https://github.com/Byron/gitoxide/commit/fb077f9fecb89ed8a60d57b45726401883e838bf))
+ - Finish git_features::interrupt docs ([`471a1bf`](https://github.com/Byron/gitoxide/commit/471a1bf24efee70f21b15839cdc9f8ebe319f917))
+ - Dependency update ([`b3b4aba`](https://github.com/Byron/gitoxide/commit/b3b4aba5e05596befecd17e225067be9315b74fd))
+ - Docs for git-features::hash ([`a3fdecc`](https://github.com/Byron/gitoxide/commit/a3fdecc9a3587b20c01e3b3a2d51190138131c3d))
+ - First sketch of filesystem docs for git-features ([`1a8141c`](https://github.com/Byron/gitoxide/commit/1a8141c2c4a8bcc79d68049a35bd8aba5ab822a3))
+ - (cargo-release) version 0.7.0 ([`7fa7bae`](https://github.com/Byron/gitoxide/commit/7fa7baeb3e7d008a25e4d714eff908e2516c828b))
+ - Merge branch 'commit-graph' into main ([`9cb09b2`](https://github.com/Byron/gitoxide/commit/9cb09b248796f0ff5c9d3f3e857de4731324cfd5))
+ - Specify the hash to create with 'hash::bytes_of_file' ([`c000294`](https://github.com/Byron/gitoxide/commit/c000294423ae0759b978399db3b69ac07c20578d))
+ - Move 'git_odb::hash::bytes_of_file' into git_features::hash ([`c5f6b45`](https://github.com/Byron/gitoxide/commit/c5f6b4587ee4042a080c0505613b0c72fdfe5273))
+ - Remove dash in all repository links ([`98c1360`](https://github.com/Byron/gitoxide/commit/98c1360ba4d2fb3443602b7da8775906224feb1d))
+ - Merge branch 'main' into commit-graph ([`ca5b801`](https://github.com/Byron/gitoxide/commit/ca5b80174b73cc9ac162b3f33b5d3721ef936cb1))
+ - Use parallel walkdir (via jwalk) when parallel feature is enabled ([`f444c85`](https://github.com/Byron/gitoxide/commit/f444c859f5b215ea70a46d5493a2babbf7a98235))
+ - Merge from main. ([`b59bd5e`](https://github.com/Byron/gitoxide/commit/b59bd5e0b0895c7d1d585816cec8be4dea78c278))
+ - Refactor ([`e4bcfe6`](https://github.com/Byron/gitoxide/commit/e4bcfe6406b14feffa63598c7cdcc8ecc73222bd))
+ - (cargo-release) version 0.6.0 ([`9ef184e`](https://github.com/Byron/gitoxide/commit/9ef184e35712f938fb4f9f6da7390a8777a9284e))
+ - Switch to prodash 10 and safe a lot of trait bounds in the process ([`e2fb1d9`](https://github.com/Byron/gitoxide/commit/e2fb1d944b4d803a11c91f868b831d406fb5e35f))
+ - (cargo-release) version 0.5.0 ([`82b7313`](https://github.com/Byron/gitoxide/commit/82b73131b79ec3c42a712dad1c0766a72209d737))
+ - [clone] This actually works: first MVP of retrieving packs via clone ([`c06d819`](https://github.com/Byron/gitoxide/commit/c06d8194173f9ec468ddd0faf72dd6d8dbf7d35d))
+ - [clone] test (and fix) for piped line reading ([`afe2996`](https://github.com/Byron/gitoxide/commit/afe2996689b5bea915ac5f142d320056faf49899))
+ - [clone] Send headers with BufReaders ([`6a95aaa`](https://github.com/Byron/gitoxide/commit/6a95aaab582941c6d1697dde6982c0aa8896c73d))
+ - [clone] pipe allows to send errors as well ([`69286ec`](https://github.com/Byron/gitoxide/commit/69286ecb3680b5071693ef0d9fb2e9345b2722d4))
+ - [clone] BufRead for Reader… ([`bf1d40f`](https://github.com/Byron/gitoxide/commit/bf1d40f2d44a9b04ffe2134ddcd3779985cdafc4))
+ - [clone] a piped iterator ([`5148c85`](https://github.com/Byron/gitoxide/commit/5148c85efc70c0ec06be3ebce267ce727c8ee4e1))
+ - [clone] pipe probably shouldn't abort on empty writes ([`9cfa9b7`](https://github.com/Byron/gitoxide/commit/9cfa9b79841187167f0f96abfd1c17a37b4c365d))
+ - Thanks clippy ([`c4f570f`](https://github.com/Byron/gitoxide/commit/c4f570fcae7e21745a37a4265b05d21e6149157b))
+ - [clone] more pipe tests ([`1652a74`](https://github.com/Byron/gitoxide/commit/1652a74761631cadfc6feab366adc0808d83063d))
+ - [clone] first working pipe implementation ([`490a9b9`](https://github.com/Byron/gitoxide/commit/490a9b96915a760e339e576d9f49737b43a8739f))
+ - [clone] frame for implementing 'pipe' support ([`c555681`](https://github.com/Byron/gitoxide/commit/c55568127ff943cc6749dba5054d7b3e93c049eb))
+ - Fix git-features hash tests ([`35e8809`](https://github.com/Byron/gitoxide/commit/35e8809f6bc7d19ed9e0bac8e3af85f433978901))
+ - Bump git-features to 0.4 to allow publishes after breaking changes ([`9d6b879`](https://github.com/Byron/gitoxide/commit/9d6b8790e2edd7fa01b3239adff86a7cd2393f10))
+ - [protocol] properly implement remote progress reporting ([`a81954a`](https://github.com/Byron/gitoxide/commit/a81954a6a37afacd51add6661a656b8fb663ca54))
+ - Allow dual-licensing with Apache 2.0 ([`ea353eb`](https://github.com/Byron/gitoxide/commit/ea353eb02fd4f75508600cc5676107bc7e627f1e))
+ - Add 'disable-interrupts' feature flag ([`ccd9c3e`](https://github.com/Byron/gitoxide/commit/ccd9c3e2d37aa6898dc17f47a82c187baa810b03))
+ - Refactor ([`b4a6e16`](https://github.com/Byron/gitoxide/commit/b4a6e16364822c0dccb56f98dbfb0ca4c8007069))
+ - Bump minor version to 0.3 ([`4351e28`](https://github.com/Byron/gitoxide/commit/4351e2871c9dcf342b8471fffa74cae338a53269))
+ - Thanks clippy ([`6725104`](https://github.com/Byron/gitoxide/commit/6725104d2841e6518db641d06e3e107cf4f40f96))
+ - First step towards parallelizing file hashes and traversal! ([`9573836`](https://github.com/Byron/gitoxide/commit/95738369e0d3accf7f6239c8cd966a7f5c36825a))
+ - Better usability for units ([`b226253`](https://github.com/Byron/gitoxide/commit/b226253636d8146a084a7bcd7c0c320e37f9d2fb))
+ - Update dependencie ([`ade06b4`](https://github.com/Byron/gitoxide/commit/ade06b46bb3c16ac1e26dbbb4a7045f0c09f2d8e))
+ - Make obvious that interrupt request was received ([`34b2373`](https://github.com/Byron/gitoxide/commit/34b23737f560fe52d4f98fb886eba754652f9a5e))
+ - Remove once_cell dependency as it is really not required anymore ([`5ac9538`](https://github.com/Byron/gitoxide/commit/5ac95385cc8d1c50c16da6e5fb0c66ac138f9966))
+ - Make interrupt handler work reliably ([`e71da0f`](https://github.com/Byron/gitoxide/commit/e71da0fce6d6eab68f7b81b13cdc78ce8e9b7ee3))
+ - Conditionally use an eager iterator… ([`e9b5511`](https://github.com/Byron/gitoxide/commit/e9b5511568f4e64968596994855783f19672d678))
+ - Refactor ([`d14f0f6`](https://github.com/Byron/gitoxide/commit/d14f0f6c3b5f303df75b33aadbf16653075d2272))
+ - Allow eager iterator to behave properly when used with index writing ([`66ebc5f`](https://github.com/Byron/gitoxide/commit/66ebc5f1ad5f262eb464dc7ca0892ec952d34382))
+ - First successful test of moving the streaming iterator into its own thread ([`c9fcb68`](https://github.com/Byron/gitoxide/commit/c9fcb68c644c96a15cb9956a754bec7b65bb5fbd))
+ - Now it's order preserving ([`4c8711e`](https://github.com/Byron/gitoxide/commit/4c8711e51efd88e0f159ad02de2692c4cb72ce27))
+ - First sketch of order-destroying eager iterator ([`20fca45`](https://github.com/Byron/gitoxide/commit/20fca4515f6e9ea320d0bf21c15cd6d2c3cff742))
+ - Print read throughput automatically ([`0a71b48`](https://github.com/Byron/gitoxide/commit/0a71b482310a129aa8757475290b3b24a200b702))
+ - Make sure interrupt logic works even without an interrupt handler… ([`66b1644`](https://github.com/Byron/gitoxide/commit/66b164472f5893f9e634ac1f9147a41dc742296d))
+ - Add percentage and throughput to tasks that matter ([`763d7ca`](https://github.com/Byron/gitoxide/commit/763d7caa4c70111b7cb3ef5733d2c3c697758c28))
+ - Upgrade to latest iteration of prodash ([`3a4faec`](https://github.com/Byron/gitoxide/commit/3a4faecab56e37670c553e6563f11a46d740c333))
+ - First part of migration to prodash 8.0, but… ([`6901a09`](https://github.com/Byron/gitoxide/commit/6901a098641820c8d974ce56a24d6cdca779730d))
+ - Thanks clippy ([`ed5882d`](https://github.com/Byron/gitoxide/commit/ed5882d75e0a9fceb0628e84302eb49a66277fa6))
+ - Write about user interfaces and the use/non-use of async ([`91ba045`](https://github.com/Byron/gitoxide/commit/91ba0457745f860b7a68cb38b13e69754747e8d9))
+ - Interrupt support for pretty plumbing ([`bca7ce2`](https://github.com/Byron/gitoxide/commit/bca7ce2e668a4be2600d2d04d00f46b21c82eee2))
+ - Support for interruptible operations ([`a025593`](https://github.com/Byron/gitoxide/commit/a02559378f9165df97a217f24834a851be719b08))
+ - Refactor ([`413968d`](https://github.com/Byron/gitoxide/commit/413968dfee5e5a66ed9e63823f6bda5a5a22753e))
+ - Receive progress information when reading packs in bundle ([`759091d`](https://github.com/Byron/gitoxide/commit/759091d3c6696b427d7b5aab1b6da05a0d268c04))
+ - Initial batch of progress usage for index creation… ([`b10e5c6`](https://github.com/Byron/gitoxide/commit/b10e5c664be9bd1bdb2b72b858ebaf35c1ed4cb4))
+ - First stab at streaming pack header encoding ([`3c6e78b`](https://github.com/Byron/gitoxide/commit/3c6e78bec9cbd4df842919cc8dc3c575414ed002))
+ - We can now restore (possibly half-written) packs ([`b1daa46`](https://github.com/Byron/gitoxide/commit/b1daa465c40ea8c7c9de69a18e467d69459d911e))
+ - See how big a Sha1 hasher really is ([`26b271d`](https://github.com/Byron/gitoxide/commit/26b271d44863fb184b0a947c3a9da2b3252f9a78))
+ - First sketch of new verify expressed in terms of traversal ([`4cb570f`](https://github.com/Byron/gitoxide/commit/4cb570f96ddd7ee2faa62e54927afd78ba7822af))
+ - (cargo-release) version 0.2.0 ([`0bb8314`](https://github.com/Byron/gitoxide/commit/0bb831480d8657e1bb29ee7009aeac673471403e))
+ - Incorporate dynamic chunking into 'less-time' algorithm ([`295aa2f`](https://github.com/Byron/gitoxide/commit/295aa2f01dc596a8880cd2f68a8d83bc6913ce48))
+ - Integrate new chunk size code into lookup code ([`a8422cf`](https://github.com/Byron/gitoxide/commit/a8422cf0b0c9ff4d3275cc17a68a74811b5bd01f))
+ - First round of number tuning done ([`a647b2d`](https://github.com/Byron/gitoxide/commit/a647b2da2905c4079e646ea44cbec778f3f7c71f))
+ - Somehow handle chunk size in absence of known chunk amount ([`acfccad`](https://github.com/Byron/gitoxide/commit/acfccadef40ebcc67f8dea4e58c02392b7e2e7de))
+ - Chunk computation seems alright, what about realistic values ([`973e6bb`](https://github.com/Byron/gitoxide/commit/973e6bb3d67d89eec2faf2467a129d992b90ed72))
+ - Getting there… ([`a1b5d56`](https://github.com/Byron/gitoxide/commit/a1b5d565f305f0f2666fd59272d9bf9c62ae2962))
+ - First step towards computing better chunk sizes and thread limits ([`1cdde7d`](https://github.com/Byron/gitoxide/commit/1cdde7d339a6ed3650c54f9b48154089d7da9919))
+ - Add 'inc()' convenience methods to progress ([`2e46c9b`](https://github.com/Byron/gitoxide/commit/2e46c9b72a2a5b90bcdac249de07ffbc124cfb04))
+ - (more) graceful shutdown of failing parallel tasks ([`163f50f`](https://github.com/Byron/gitoxide/commit/163f50fab81b425e6e306ec54fb1eb60a7c02cf8))
+ - Respect thread limit in 'in_parallel' ([`babfd84`](https://github.com/Byron/gitoxide/commit/babfd84cba77ef7a0f541ba921b31ebd3f3c50e3))
+ - Make crates publishable ([`5688a34`](https://github.com/Byron/gitoxide/commit/5688a3427ff3673e1422d43106f4d685fa837aed))
+ - Flume isn't actually needed for that… ([`c750022`](https://github.com/Byron/gitoxide/commit/c750022394928aa37a8400611f6fdf4ee77c0f69))
+ - Don't just ignore send errors - we should panic for now ([`f128117`](https://github.com/Byron/gitoxide/commit/f128117138b24de780a00bb96e7c1c9f987e8aa0))
+ - Proper implementation of line renderer into 'lean' CLI ([`e98e7c2`](https://github.com/Byron/gitoxide/commit/e98e7c280d73e9d9ebd13202afb93a56cb2f7c9c))
+ - Upgrade to prodash version 7 ([`af02b46`](https://github.com/Byron/gitoxide/commit/af02b46cc1eff5ba1da7da20d3f524a79fad686f))
+ - Update prodash to verion 6.0 ([`a4731a3`](https://github.com/Byron/gitoxide/commit/a4731a3aca159f8916b29d9ce5a71856089c5a6b))
+ - Add metadata to allow docs.rs build all featueres ([`10f9386`](https://github.com/Byron/gitoxide/commit/10f9386a12decc1f13999aee72be484c8f6d48ce))
+ - Switch to prodash 5.0 for windows support ([`88542e1`](https://github.com/Byron/gitoxide/commit/88542e117dd1c2e7606fcbe88b30c51b4c115989))
+ - Allow to limit the logging depth for less cluttered output ([`fce7035`](https://github.com/Byron/gitoxide/commit/fce703531d7006f7d961d6ffa66f51f6c9bc0efc))
+ - Finally speed up logging progress properly - needs input throttling ([`1a550c6`](https://github.com/Byron/gitoxide/commit/1a550c6458b10fad2e42b641899216c5517c6e26))
+ - Avoid calling system time too often in logs, it reduced performance ([`b17bd76`](https://github.com/Byron/gitoxide/commit/b17bd76d35822b3af174c74af3d6fac887889fe2))
+ - Revert "ABORT: try-join with static typing works, but…" ([`b8b979b`](https://github.com/Byron/gitoxide/commit/b8b979b99b5f3848e0a6884c58594ba2b481a147))
+ - Try-join with static typing works, but… ([`ab6f98b`](https://github.com/Byron/gitoxide/commit/ab6f98b905f13ed2a7c0c483f34fab63141fbc5b))
+ - Remove dependency to git-object from git-features - it better remains free ([`67c3a6a`](https://github.com/Byron/gitoxide/commit/67c3a6ab4cc32358a1406c2f863e26a4c2929867))
+ - \#[forbid(unsafe)] for all crates ([`afda803`](https://github.com/Byron/gitoxide/commit/afda8039259b7a30cfed5dbcdd9caf4773b4c234))
+ - Allow for more screen space when formatting ([`6794300`](https://github.com/Byron/gitoxide/commit/67943002e7f4215b5383bd0538786ce2857f011e))
+ - Refactor ([`7add82c`](https://github.com/Byron/gitoxide/commit/7add82c39169e3c2fff76c48cdd318fe6040d7bc))
+ - Automatically close the TUI when there is no progress anymore. ([`c416152`](https://github.com/Byron/gitoxide/commit/c416152b04051958de7bd161a8a2ee42ca163275))
+ - Pretty progress in a generalized form ([`caa883b`](https://github.com/Byron/gitoxide/commit/caa883b96827deb63b5c8787ed820d22f2c85249))
+ - Express DoOrDiscard in terms of Either (progress) ([`cb29a45`](https://github.com/Byron/gitoxide/commit/cb29a45f4e73bfaa25cbf623b1cda2435673028b))
+ - Provide 'either' type with implementation for Progress ([`237bb5e`](https://github.com/Byron/gitoxide/commit/237bb5ee1c2b677f5bfd9ca7fdea9d9d2db865b3))
+ - Better trait bounds of `in_parallel_if`… ([`6264f2f`](https://github.com/Byron/gitoxide/commit/6264f2f99929ffaa4d50cdcae7bc296e1b4762f4))
+ - First implementation of logging per thread ([`477dd90`](https://github.com/Byron/gitoxide/commit/477dd90ce5e102875b19489bf8ae9877522ef9c8))
+ - Support for providing progress to threads ([`2815858`](https://github.com/Byron/gitoxide/commit/2815858adf7ac0f7b4cbc88cf05df0ea6aef4116))
+ - First very basic progress implementation ([`b820717`](https://github.com/Byron/gitoxide/commit/b8207177daee8a9ffa23c7c052cf9ca651b15804))
+ - Pass progress everywhere, for now just to discard it ([`da3ae1c`](https://github.com/Byron/gitoxide/commit/da3ae1c82cd726b8fae9b8d26069719930e9ba99))
+ - Implement `Progress` trait for prodash::tree::Item ([`0eeb6d7`](https://github.com/Byron/gitoxide/commit/0eeb6d770d58621427bc88107a20860b89b86a24))
+ - Implement progress trait for logs with throttling ([`287eca9`](https://github.com/Byron/gitoxide/commit/287eca91b244ccbc703cb275b1ae032bfeb02532))
+ - Add 'fast-sha1' to git-features ([`b22541f`](https://github.com/Byron/gitoxide/commit/b22541f0c39af470877119b136e4eb1b82dff2db))
+ - A new crate to represent features that can toggle from the top-level ([`23c420c`](https://github.com/Byron/gitoxide/commit/23c420cc95219dc7c04d3905aaa03281cb51724e))
+</details>
+
+## 0.26.3 (2023-02-14)
+
+### New Features
+
+ - <csr-id-426057247a80821b3da22b4ae5d67bda89ce0631/> re-export `prodash` in `progress` module.
+ That way one can access all types even if they are not re-exported.
+
+## 0.26.2 (2023-02-09)
+
+### Documentation
+
+ - <csr-id-39ed9eda62b7718d5109135e5ad406fb1fe2978c/> fix typos
+
+### New Features
+
+ - <csr-id-c4a7634b0b29c74625e183953e59c65987e9d66c/> export `prodash::progress::Id` in the `progress` module for convenience.
+
+## 0.26.1 (2023-01-10)
+
+A maintenance release without user-facing changes.
+
+## 0.26.0 (2022-12-30)
+
+<csr-id-5bf0034fb3918e57562b7089ceba83d63a1854bf/>
+
+### Chore (BREAKING)
+
+ - <csr-id-5bf0034fb3918e57562b7089ceba83d63a1854bf/> upgrade to prodash v23
+
+## 0.25.1 (2022-12-26)
+
+### New Features
+
+ - <csr-id-25ad372bf500b851105f53b10369b5a689ba167e/> zlib::inflate::Error can now represent zlib status codes that represent failure.
+
+## 0.25.0 (2022-12-19)
+
+### New Features (BREAKING)
+
+ - <csr-id-0f27c67c92fc0bc23a6712b5c4c730ad6a0156bf/> add support for explicit non-parallel iteration.
+ That way we can allow the implementation to choose whether they
+ need greatest speed at some cost or not.
+
+ This also allows us to create a new thread-pool on each iteration
+ as those who expect high cost or many files will likely chose to do
+ that instead of single-threaded iteration, which nicely contains the
+ threads needed and avoids keeping them alive as part of some global pool.
+
+## 0.24.1 (2022-11-27)
+
+### New Features
+
+ - <csr-id-6d530a1dc77f0f4ac00622a2fd47c7bdb731a77a/> name spawned threads
+ That way it's a bit more obvious what's happening when the CPU goes
+ up in flames.
+ - <csr-id-c8835c6edae784c9ffcb69a674c0a6545dbb2af3/> upgrade to `prodash 21.1` and add `Ids` to all progress instances.
+ That way callers can identify progress they are interested in, say, for
+ selective visualizations.
+
+## 0.24.0 (2022-11-21)
+
+A maintenance release without user facing changes.
+
+## 0.23.1 (2022-11-06)
+
+### New Features
+
+ - <csr-id-9076ce33ec167e425a0163d3e40a81a3fd0db6cd/> `fs::Snapshot` can `Clone` if `T` can `Clone`.
+
+## 0.23.0 (2022-10-10)
+
+### New Features
+
+ - <csr-id-a7c11d2cb5f88a4ff322d9a9848459062790d8b3/> perfect granularity for threads processing with `in_parallel_with_slice()`
+ - <csr-id-ff1db66f2dad3afc8bc77610006bca9fea5947d2/> add `progress::Step|StepShared` as types of `prodash`
+ This may help to use the `Progress::counter()` method as part of method
+ signatures, being an `Option<progress::StepShared>`.
+
+### Changed (BREAKING)
+
+ - <csr-id-38446dc8824afef30ef121598de3451d13b9262c/> remove `fs-jwalk-single-threaded` in favor of `fs-walkdir-parallel`.
+ This way, `jwalk` and the dependencies (and troubles) it brings have to
+ be opted in, but also allow other users to actually opt out while
+ allowing the `parallel` feature to be in effect.
+
+ In other words, previously the `parallel` feature conflated `jwalk`
+ dependencies into the tree, which isn't the case anymore.
+
+### New Features (BREAKING)
+
+ - <csr-id-3b29fc18672c0176684c797a0f16f85d09369bf8/> make jwalk fully optional
+
+## 0.22.6 (2022-09-16)
+
+Fix docs.rs rendering.
+
+### New Features
+
+ - <csr-id-cfe46b502afc3ecb312849ddbd7748007d432cd1/> add zlib-ng feature to allow linking against system libz-ng
+ Allow to use zlib-ng (zlib-ng-sys) with native API (no compat mode)
+ that can co-exist with system libz (loaded by e.g. libcurl).
+ This is used in gitoxide package on Alpine Linux.
+
+## 0.22.5 (2022-09-20)
+
+### New Features
+
+ - <csr-id-cfe46b502afc3ecb312849ddbd7748007d432cd1/> add zlib-ng feature to allow linking against system libz-ng
+ Allow to use zlib-ng (zlib-ng-sys) with native API (no compat mode)
+ that can co-exist with system libz (loaded by e.g. libcurl).
+ This is used in gitoxide package on Alpine Linux.
+
+## 0.22.4 (2022-09-04)
+
+A maintenance release without breaking changes.
+
+## 0.22.3 (2022-08-27)
+
+### Fix
+
+- restrict `sha1` `asm` to supported archs ([`b383fab`](https://github.com/Byron/gitoxide/commit/b383fabbe10868317be51b99cfdd9b0981816042))
+
+## 0.22.2 (2022-08-24)
+
+<csr-id-f7f136dbe4f86e7dee1d54835c420ec07c96cd78/>
+
+### Chore
+
+ - <csr-id-f7f136dbe4f86e7dee1d54835c420ec07c96cd78/> uniformize deny attributes
+
+### New Features
+
+ - <csr-id-b1c40b0364ef092cd52d03b34f491b254816b18d/> use docsrs feature in code to show what is feature-gated automatically on docs.rs
+ - <csr-id-517677147f1c17304c62cf97a1dd09f232ebf5db/> pass --cfg docsrs when compiling for https://docs.rs
+
+## 0.22.1 (2022-08-15)
+
+### New Features
+
+ - <csr-id-f498d35baba52e40ecd47381e87c1ce49cf13285/> add `fs-jwalk-single-threaded` feature to specifically decouple `jwalk` from rayon
+ It has been an issue in https://github.com/starship/starship/issues/4251
+ apparently and rayon interactions can be difficult.
+ - <csr-id-7f199f0e5246809efde9880110093fbd11a4f8fe/> `fs::Snapshot` to on-demand reload shared resources.
+
+## 0.22.0 (2022-07-22)
+
+### New Features
+
+ - <csr-id-c76fde7de278b49ded13b655d5345e4eb8c1b134/> initialize `Time` from `now_utc` and `now_local`
+ Localtime support depends on some other factors now, but that
+ will only get better over time.
+
+ We might have to document `unsound_local_time` at some point.
+
+### Changed (BREAKING)
+
+ - <csr-id-89a41bf2b37db29b9983b4e5492cfd67ed490b23/> remove local-time-support feature toggle.
+ We treat local time as default feature without a lot of fuzz, and
+ will eventually document that definitive support needs a compile
+ time switch in the compiler (`--cfg unsound_local_offset` or something).
+
+ One day it will perish. Failure is possible anyway and we will write
+ code to deal with it while minimizing the amount of system time
+ fetches when asking for the current local time.
+
+## 0.21.1 (2022-06-13)
+
+A maintenance release without user-facing changes.
+
+## 0.21.0 (2022-05-18)
+
+### Changed (BREAKING)
+
+ - <csr-id-90611ce1527618bcc738440bfc1ccc7a45319974/> remove `path` module in favor of `gix-path` crate
+
+### New Features (BREAKING)
+
+ - <csr-id-d078d6ee76a80d1dfaf71608c12d8a402bd670d4/> mild refactor of paths module to waste less on unix
+ Previously it might have performed find-and-replace on unix paths even
+ though they wouldn't have changed afterwards, yet costing an allocation.
+
+ There is also the realization that it should go into its own crate to have
+ neater import paths and more convenience.
+
+## 0.20.0 (2022-04-02)
+
+### New Features
+
+ - <csr-id-e4d6685064ad2b433f8acd3a74b320bf0169a994/> Add `gix_config::values::Path` for a typesafe git path
+ Add a `Path` type to the `gix_config::values` which
+ can be interpolated according to gits own path interpolation
+ rules.
+ - <csr-id-3c8581fc294c65c9eb42698969fe3263135a864e/> add new 'path' module for all path-related conversions
+ It's meant to unify all path and byte related handling to help assuring
+ encoding is handled correctly or at least similarly everywhere.
+ - <csr-id-15ff212b17087de93f259e366f4e4b821cfbc28e/> in-manifest and in-lib documentation of feature toggles
+
+### Bug Fixes
+
+ - <csr-id-234cd10ca55482ce1a840ce3244308d249895bcc/> Assure std::io::copy() doesn't hang when we cause an interrupt
+ The user can ask for interruptions which previously used the
+ error kind Interrupted. This however has special meaning and
+ usually means to retry.
+
+### New Features (BREAKING)
+
+ - <csr-id-8945d95f7fa88562d37ff67ac6e38bead73dd2df/> `interrupt::Iter`, rename `interrupt::Iter` -> `interrupt::IterWithError`
+
+## 0.19.1 (2022-01-23)
+
+<csr-id-361892ca15aa648802f6701ab6a5a30aedde3449/>
+
+A maintenance release thanks to upgrade to `prodash` 18.
+
+### Changed (BREAKING)
+
+ - <csr-id-61e5cfece4d8f405e35fc1957b00ce1da7526c26/> renamed `progress::Read::reader` -> `progress::Read::inner`
+
+### New Features
+
+ - <csr-id-cb7e4e784d615f9fa3d6fb9c36240f0592403358/> Add InOrderIter to 'parallel' module
+ This iterator makes possible identifies results using a sequence id
+ and returns only consecutive items.
+
+ Use it to collect unordered results produced by threads.
+ It's advantage to collecting yourself and sorting is the potential
+ for a smaller memory footprint of in-flight results, one doesn't
+ have to collect them all for ordering, necessarily.
+ - <csr-id-ca095ed881db2a8f06a6b067dbaac17e923b0945/> Make a scope-like abstraction available
+ This allows more delicate threading control like is required for the
+ index.
+ - <csr-id-b8400ed80543d67a5895c975ba9b1fc28427411c/> decoding of variable int numbers.
+ It's here only so that we can share the code across crates, for now
+ without any feature toggles.
+ - <csr-id-0a749a22057b5513a8cefa0e26b0a9a268c769d3/> Add `progress::Write` to automatically pass bytes written to a progress instance
+
+### Chore
+
+ - <csr-id-361892ca15aa648802f6701ab6a5a30aedde3449/> update sha-1 dependency to 0.10
+
+## 0.19.0 (2022-01-19)
+
+<csr-id-361892ca15aa648802f6701ab6a5a30aedde3449/>
+
+### Chore
+
+ - <csr-id-361892ca15aa648802f6701ab6a5a30aedde3449/> update sha-1 dependency to 0.10
+
+### New Features
+
+ - <csr-id-cb7e4e784d615f9fa3d6fb9c36240f0592403358/> Add InOrderIter to 'parallel' module
+ This iterator makes possible identifies results using a sequence id
+ and returns only consecutive items.
+
+ Use it to collect unordered results produced by threads.
+ It's advantage to collecting yourself and sorting is the potential
+ for a smaller memory footprint of in-flight results, one doesn't
+ have to collect them all for ordering, necessarily.
+ - <csr-id-ca095ed881db2a8f06a6b067dbaac17e923b0945/> Make a scope-like abstraction available
+ This allows more delicate threading control like is required for the
+ index.
+ - <csr-id-b8400ed80543d67a5895c975ba9b1fc28427411c/> decoding of variable int numbers.
+ It's here only so that we can share the code across crates, for now
+ without any feature toggles.
+ - <csr-id-0a749a22057b5513a8cefa0e26b0a9a268c769d3/> Add `progress::Write` to automatically pass bytes written to a progress instance
+
+### Changed (BREAKING)
+
+ - <csr-id-61e5cfece4d8f405e35fc1957b00ce1da7526c26/> renamed `progress::Read::reader` -> `progress::Read::inner`
+
+## 0.18.0 (2021-11-29)
+
+### New Features
+
+ - <csr-id-7e95d8ab29051ffc892f2dcbaf5369e8c7e7b294/> add threading primitives with feature toggle
+ If the `threading` feature is set, the `threading` module will contain thread-safe primitives
+ for shared ownership and mutation, otherwise these will be their single threaded counterparts.
+
+ This way, single-threaded applications don't have to pay for threaded primitives.
+
+### Changed (BREAKING)
+
+ - <csr-id-e7526b2a7b51cbac4018e1ab3b623a85987fadc2/> parallel utilities now use `Send + Clone` instead of `Send + Sync`
+ This helps to assure that thread-local computations always work with the
+ kind of types we provide. The ones that are carrying out actions are
+ notably not `Sync` anymore.
+
+ We cater to that by defining our bounds accordingly, but for those
+ who want to use other utilities that need Sync, using types like
+ `Repository` and `thread_local!()` is the only way to make this
+ work.
+
+## v0.17.0 (2021-10-19)
+
+A maintenance release due to properly dealing with previously breaking changes in `gix-hash`.
+
+## v0.16.5 (2021-10-15)
+
+This release contains no functional changes.
+
+## v0.16.4 (2021-09-07)
+
+## v0.16.3 (2021-08-27)
+
+## v0.16.2 (2021-08-17)
+
+## v0.16.1 (2021-08-10)
+
+## v0.16.0 (2021-08-10)
+
+## v0.14.0 (2021-05-08)
+
+## v0.13.0 (2021-04-30)
+
+## v0.12.0 (2021-04-08)
+
+## v0.11.0 (2021-01-24)
+
+## v0.10.1 (2021-01-24)
+
+## v0.10.0 (2020-12-16)
+
+## v0.9.0 (2020-12-15)
+
+## v0.8.0 (2020-11-26)
+
+## v0.7.0 (2020-11-18)
+
+## v0.6.0 (2020-09-14)
+
+## v0.5.0 (2020-09-12)
+
+## v0.4.0 (2020-08-18)
+
+## v0.3.0 (2020-08-12)
+
+## v0.2.0 (2020-07-23)
+
+## v0.1.0 (2020-07-12)
+
+<csr-id-ab6f98b905f13ed2a7c0c483f34fab63141fbc5b/>
+
+### Other
+
+ - <csr-id-ab6f98b905f13ed2a7c0c483f34fab63141fbc5b/> try-join with static typing works, but…
+ …seems like a lot of effort. Probably not worth continuing here
+
diff --git a/vendor/gix-features-0.35.0/Cargo.toml b/vendor/gix-features-0.35.0/Cargo.toml
new file mode 100644
index 000000000..114f245c1
--- /dev/null
+++ b/vendor/gix-features-0.35.0/Cargo.toml
@@ -0,0 +1,184 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.65"
+name = "gix-features"
+version = "0.35.0"
+authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
+description = "A crate to integrate various capabilities using compile-time feature flags"
+license = "MIT OR Apache-2.0"
+repository = "https://github.com/Byron/gitoxide"
+
+[package.metadata.docs.rs]
+all-features = true
+features = ["document-features"]
+rustdoc-args = [
+ "--cfg",
+ "docsrs",
+]
+
+[lib]
+test = false
+doctest = false
+
+[[test]]
+name = "hash"
+path = "tests/hash.rs"
+required-features = ["rustsha1"]
+
+[[test]]
+name = "parallel"
+path = "tests/parallel_threaded.rs"
+required-features = [
+ "parallel",
+ "rustsha1",
+]
+
+[[test]]
+name = "multi-threaded"
+path = "tests/parallel_shared_threaded.rs"
+required-features = [
+ "parallel",
+ "rustsha1",
+]
+
+[[test]]
+name = "single-threaded"
+path = "tests/parallel_shared.rs"
+required-features = ["rustsha1"]
+
+[[test]]
+name = "pipe"
+path = "tests/pipe.rs"
+required-features = ["io-pipe"]
+
+[dependencies.bytes]
+version = "1.0.0"
+optional = true
+
+[dependencies.bytesize]
+version = "1.0.1"
+optional = true
+
+[dependencies.crc32fast]
+version = "1.2.1"
+optional = true
+
+[dependencies.crossbeam-channel]
+version = "0.5.0"
+optional = true
+
+[dependencies.document-features]
+version = "0.2.0"
+optional = true
+
+[dependencies.flate2]
+version = "1.0.25"
+optional = true
+default-features = false
+
+[dependencies.gix-hash]
+version = "^0.13.0"
+
+[dependencies.gix-trace]
+version = "^0.1.3"
+
+[dependencies.jwalk]
+version = "0.8.1"
+optional = true
+
+[dependencies.once_cell]
+version = "1.13.0"
+optional = true
+
+[dependencies.parking_lot]
+version = "0.12.0"
+optional = true
+default-features = false
+
+[dependencies.prodash]
+version = "26.2.2"
+optional = true
+default-features = false
+
+[dependencies.sha1]
+version = "0.10.0"
+optional = true
+
+[dependencies.sha1_smol]
+version = "1.0.0"
+optional = true
+
+[dependencies.thiserror]
+version = "1.0.38"
+optional = true
+
+[dependencies.walkdir]
+version = "2.3.2"
+optional = true
+
+[dev-dependencies.bstr]
+version = "1.3.0"
+default-features = false
+
+[features]
+cache-efficiency-debug = []
+crc32 = ["dep:crc32fast"]
+default = []
+fast-sha1 = ["dep:sha1"]
+fs-walkdir-parallel = ["dep:jwalk"]
+io-pipe = ["dep:bytes"]
+once_cell = ["dep:once_cell"]
+parallel = [
+ "dep:crossbeam-channel",
+ "dep:parking_lot",
+]
+progress = ["prodash"]
+progress-unit-bytes = [
+ "dep:bytesize",
+ "prodash?/unit-bytes",
+]
+progress-unit-human-numbers = ["prodash?/unit-human"]
+rustsha1 = ["dep:sha1_smol"]
+tracing = ["gix-trace/tracing"]
+tracing-detail = ["gix-trace/tracing-detail"]
+walkdir = ["dep:walkdir"]
+zlib = [
+ "dep:flate2",
+ "flate2?/rust_backend",
+ "dep:thiserror",
+]
+zlib-ng = [
+ "zlib",
+ "flate2?/zlib-ng",
+]
+zlib-ng-compat = [
+ "zlib",
+ "flate2?/zlib-ng-compat",
+]
+zlib-rust-backend = [
+ "zlib",
+ "flate2?/rust_backend",
+]
+zlib-stock = [
+ "zlib",
+ "flate2?/zlib",
+]
+
+[target."cfg(all(any(target_arch = \"aarch64\", target_arch = \"x86\", target_arch = \"x86_64\"), not(target_env = \"msvc\")))".dependencies.sha1]
+version = "0.10.0"
+features = ["asm"]
+optional = true
+
+[target."cfg(unix)".dependencies.libc]
+version = "0.2.119"
diff --git a/vendor/rustix-0.37.6/LICENSE-Apache-2.0_WITH_LLVM-exception b/vendor/gix-features-0.35.0/LICENSE-APACHE
index f9d81955f..a51f59a06 100644
--- a/vendor/rustix-0.37.6/LICENSE-Apache-2.0_WITH_LLVM-exception
+++ b/vendor/gix-features-0.35.0/LICENSE-APACHE
@@ -176,18 +176,7 @@
END OF TERMS AND CONDITIONS
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
+ Copyright 2018-2021 Sebastian Thiel, and [contributors](https://github.com/byron/gitoxide/contributors)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -200,21 +189,3 @@
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-
-
---- LLVM Exceptions to the Apache 2.0 License ----
-
-As an exception, if, as a result of your compiling your source code, portions
-of this Software are embedded into an Object form of such source code, you
-may redistribute such embedded portions in such Object form without complying
-with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
-
-In addition, if you combine or link compiled forms of this Software with
-software that is licensed under the GPLv2 ("Combined Software") and if a
-court of competent jurisdiction determines that the patent provision (Section
-3), the indemnity provision (Section 9) or other Section of the License
-conflicts with the conditions of the GPLv2, you may retroactively and
-prospectively choose to deem waived or otherwise exclude such Section(s) of
-the License, but only in their entirety and only with respect to the Combined
-Software.
-
diff --git a/vendor/gix-features-0.35.0/LICENSE-MIT b/vendor/gix-features-0.35.0/LICENSE-MIT
new file mode 100644
index 000000000..b58e818f1
--- /dev/null
+++ b/vendor/gix-features-0.35.0/LICENSE-MIT
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018-2021 Sebastian Thiel, and [contributors](https://github.com/byron/gitoxide/contributors).
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/gix-features-0.35.0/src/cache.rs b/vendor/gix-features-0.35.0/src/cache.rs
new file mode 100644
index 000000000..c56a34e12
--- /dev/null
+++ b/vendor/gix-features-0.35.0/src/cache.rs
@@ -0,0 +1,76 @@
+#[cfg(feature = "cache-efficiency-debug")]
+mod impl_ {
+ /// A helper to collect useful information about cache efficiency.
+ pub struct Debug {
+ owner: String,
+ hits: usize,
+ puts: usize,
+ misses: usize,
+ }
+
+ impl Debug {
+ /// Create a new instance
+ #[inline]
+ pub fn new(owner: String) -> Self {
+ Debug {
+ owner,
+ hits: 0,
+ puts: 0,
+ misses: 0,
+ }
+ }
+ /// Count cache insertions
+ #[inline]
+ pub fn put(&mut self) {
+ self.puts += 1;
+ }
+ /// Count hits
+ #[inline]
+ pub fn hit(&mut self) {
+ self.hits += 1;
+ }
+ /// Count misses
+ #[inline]
+ pub fn miss(&mut self) {
+ self.misses += 1;
+ }
+ }
+
+ impl Drop for Debug {
+ fn drop(&mut self) {
+ let hits = self.hits;
+ let misses = self.misses;
+ let ratio = hits as f32 / misses as f32;
+ eprintln!(
+ "{}[{:0x}]: {} / {} (hits/misses) = {:.02}%, puts = {}",
+ self.owner,
+ self as *const _ as usize,
+ hits,
+ misses,
+ ratio * 100.0,
+ self.puts
+ );
+ }
+ }
+}
+#[cfg(not(feature = "cache-efficiency-debug"))]
+mod impl_ {
+ /// The disabled, zero size do-nothing equivalent
+ pub struct Debug;
+
+ impl Debug {
+ /// Create a new instance
+ #[inline]
+ pub fn new(_owner: String) -> Self {
+ Debug
+ }
+ /// noop
+ pub fn put(&mut self) {}
+ /// noop
+ pub fn hit(&mut self) {}
+ /// noop
+ pub fn miss(&mut self) {}
+ }
+}
+
+pub use impl_::Debug;
diff --git a/vendor/gix-features-0.35.0/src/decode.rs b/vendor/gix-features-0.35.0/src/decode.rs
new file mode 100644
index 000000000..0df38710d
--- /dev/null
+++ b/vendor/gix-features-0.35.0/src/decode.rs
@@ -0,0 +1,38 @@
+use std::io::Read;
+
+/// Decode variable int numbers from a `Read` implementation.
+///
+/// Note: currently overflow checks are only done in debug mode.
+#[inline]
+pub fn leb64_from_read(mut r: impl Read) -> Result<(u64, usize), std::io::Error> {
+ let mut b = [0u8; 1];
+ let mut i = 0;
+ r.read_exact(&mut b)?;
+ i += 1;
+ let mut value = b[0] as u64 & 0x7f;
+ while b[0] & 0x80 != 0 {
+ r.read_exact(&mut b)?;
+ i += 1;
+ debug_assert!(i <= 10, "Would overflow value at 11th iteration");
+ value += 1;
+ value = (value << 7) + (b[0] as u64 & 0x7f)
+ }
+ Ok((value, i))
+}
+
+/// Decode variable int numbers.
+#[inline]
+pub fn leb64(d: &[u8]) -> (u64, usize) {
+ let mut i = 0;
+ let mut c = d[i];
+ i += 1;
+ let mut value = c as u64 & 0x7f;
+ while c & 0x80 != 0 {
+ c = d[i];
+ i += 1;
+ debug_assert!(i <= 10, "Would overflow value at 11th iteration");
+ value += 1;
+ value = (value << 7) + (c as u64 & 0x7f)
+ }
+ (value, i)
+}
diff --git a/vendor/gix-features-0.35.0/src/fs.rs b/vendor/gix-features-0.35.0/src/fs.rs
new file mode 100644
index 000000000..8b3a7d3e7
--- /dev/null
+++ b/vendor/gix-features-0.35.0/src/fs.rs
@@ -0,0 +1,118 @@
+//! Filesystem utilities
+//!
+//! These are will be parallel if the `parallel` feature is enabled, at the expense of compiling additional dependencies
+//! along with runtime costs for maintaining a global [`rayon`](https://docs.rs/rayon) thread pool.
+//!
+//! For information on how to use the [`WalkDir`] type, have a look at
+//! * [`jwalk::WalkDir`](https://docs.rs/jwalk/0.5.1/jwalk/type.WalkDir.html) if `parallel` feature is enabled
+//! * [walkdir::WalkDir](https://docs.rs/walkdir/2.3.1/walkdir/struct.WalkDir.html) otherwise
+
+#[cfg(any(feature = "walkdir", feature = "fs-walkdir-parallel"))]
+mod shared {
+ /// The desired level of parallelism.
+ pub enum Parallelism {
+ /// Do not parallelize at all by making a serial traversal on the current thread.
+ Serial,
+ /// Create a new thread pool for each traversal with up to 16 threads or the amount of logical cores of the machine.
+ ThreadPoolPerTraversal {
+ /// The base name of the threads we create as part of the thread-pool.
+ thread_name: &'static str,
+ },
+ }
+}
+
+///
+#[cfg(feature = "fs-walkdir-parallel")]
+pub mod walkdir {
+ use std::path::Path;
+
+ pub use jwalk::{DirEntry as DirEntryGeneric, DirEntryIter as DirEntryIterGeneric, Error, WalkDir};
+
+ pub use super::shared::Parallelism;
+
+ /// An alias for an uncustomized directory entry to match the one of the non-parallel version offered by `walkdir`.
+ pub type DirEntry = DirEntryGeneric<((), ())>;
+
+ impl From<Parallelism> for jwalk::Parallelism {
+ fn from(v: Parallelism) -> Self {
+ match v {
+ Parallelism::Serial => jwalk::Parallelism::Serial,
+ Parallelism::ThreadPoolPerTraversal { thread_name } => std::thread::available_parallelism()
+ .map_or_else(
+ |_| Parallelism::Serial.into(),
+ |threads| {
+ let pool = jwalk::rayon::ThreadPoolBuilder::new()
+ .num_threads(threads.get().min(16))
+ .stack_size(128 * 1024)
+ .thread_name(move |idx| format!("{thread_name} {idx}"))
+ .build()
+ .expect("we only set options that can't cause a build failure");
+ jwalk::Parallelism::RayonExistingPool {
+ pool: pool.into(),
+ busy_timeout: None,
+ }
+ },
+ ),
+ }
+ }
+ }
+
+ /// Instantiate a new directory iterator which will not skip hidden files, with the given level of `parallelism`.
+ pub fn walkdir_new(root: &Path, parallelism: Parallelism) -> WalkDir {
+ WalkDir::new(root).skip_hidden(false).parallelism(parallelism.into())
+ }
+
+ /// Instantiate a new directory iterator which will not skip hidden files and is sorted
+ pub fn walkdir_sorted_new(root: &Path, parallelism: Parallelism) -> WalkDir {
+ WalkDir::new(root)
+ .skip_hidden(false)
+ .sort(true)
+ .parallelism(parallelism.into())
+ }
+
+ /// The Iterator yielding directory items
+ pub type DirEntryIter = DirEntryIterGeneric<((), ())>;
+}
+
+#[cfg(all(feature = "walkdir", not(feature = "fs-walkdir-parallel")))]
+///
+pub mod walkdir {
+ use std::path::Path;
+
+ pub use walkdir::{DirEntry, Error, WalkDir};
+
+ pub use super::shared::Parallelism;
+
+ /// Instantiate a new directory iterator which will not skip hidden files, with the given level of `parallelism`.
+ pub fn walkdir_new(root: &Path, _: Parallelism) -> WalkDir {
+ WalkDir::new(root)
+ }
+
+ /// Instantiate a new directory iterator which will not skip hidden files and is sorted, with the given level of `parallelism`.
+ pub fn walkdir_sorted_new(root: &Path, _: Parallelism) -> WalkDir {
+ WalkDir::new(root).sort_by_file_name()
+ }
+
+ /// The Iterator yielding directory items
+ pub type DirEntryIter = walkdir::IntoIter;
+}
+
+#[cfg(any(feature = "walkdir", feature = "fs-walkdir-parallel"))]
+pub use self::walkdir::{walkdir_new, walkdir_sorted_new, WalkDir};
+
+/// Prepare open options which won't follow symlinks when the file is opened.
+///
+/// Note: only effective on unix currently.
+pub fn open_options_no_follow() -> std::fs::OpenOptions {
+ #[cfg_attr(not(unix), allow(unused_mut))]
+ let mut options = std::fs::OpenOptions::new();
+ #[cfg(unix)]
+ {
+ /// Make sure that it's impossible to follow through to the target of symlinks.
+ /// Note that this will still follow symlinks in the path, which is what we assume
+ /// has been checked separately.
+ use std::os::unix::fs::OpenOptionsExt;
+ options.custom_flags(libc::O_NOFOLLOW);
+ }
+ options
+}
diff --git a/vendor/gix-features-0.35.0/src/hash.rs b/vendor/gix-features-0.35.0/src/hash.rs
new file mode 100644
index 000000000..435e018e9
--- /dev/null
+++ b/vendor/gix-features-0.35.0/src/hash.rs
@@ -0,0 +1,190 @@
+//! Hash functions and hash utilities
+//!
+//! With the `fast-sha1` feature, the `Sha1` hash type will use a more elaborate implementation utilizing hardware support
+//! in case it is available. Otherwise the `rustsha1` feature should be set. `fast-sha1` will take precedence.
+//! Otherwise, a minimal yet performant implementation is used instead for a decent trade-off between compile times and run-time performance.
+#[cfg(all(feature = "rustsha1", not(feature = "fast-sha1")))]
+mod _impl {
+ use super::Sha1Digest;
+
+ /// A implementation of the Sha1 hash, which can be used once.
+ #[derive(Default, Clone)]
+ pub struct Sha1(sha1_smol::Sha1);
+
+ impl Sha1 {
+ /// Digest the given `bytes`.
+ pub fn update(&mut self, bytes: &[u8]) {
+ self.0.update(bytes)
+ }
+ /// Finalize the hash and produce a digest.
+ pub fn digest(self) -> Sha1Digest {
+ self.0.digest().bytes()
+ }
+ }
+}
+
+/// A 20 bytes digest produced by a [`Sha1`] hash implementation.
+#[cfg(any(feature = "fast-sha1", feature = "rustsha1"))]
+pub type Sha1Digest = [u8; 20];
+
+#[cfg(feature = "fast-sha1")]
+mod _impl {
+ use sha1::Digest;
+
+ use super::Sha1Digest;
+
+ /// A implementation of the Sha1 hash, which can be used once.
+ #[derive(Default, Clone)]
+ pub struct Sha1(sha1::Sha1);
+
+ impl Sha1 {
+ /// Digest the given `bytes`.
+ pub fn update(&mut self, bytes: &[u8]) {
+ self.0.update(bytes)
+ }
+ /// Finalize the hash and produce a digest.
+ pub fn digest(self) -> Sha1Digest {
+ self.0.finalize().into()
+ }
+ }
+}
+
+#[cfg(any(feature = "rustsha1", feature = "fast-sha1"))]
+pub use _impl::Sha1;
+
+/// Compute a CRC32 hash from the given `bytes`, returning the CRC32 hash.
+///
+/// When calling this function for the first time, `previous_value` should be `0`. Otherwise it
+/// should be the previous return value of this function to provide a hash of multiple sequential
+/// chunks of `bytes`.
+#[cfg(feature = "crc32")]
+pub fn crc32_update(previous_value: u32, bytes: &[u8]) -> u32 {
+ let mut h = crc32fast::Hasher::new_with_initial(previous_value);
+ h.update(bytes);
+ h.finalize()
+}
+
+/// Compute a CRC32 value of the given input `bytes`.
+///
+/// In case multiple chunks of `bytes` are present, one should use [`crc32_update()`] instead.
+#[cfg(feature = "crc32")]
+pub fn crc32(bytes: &[u8]) -> u32 {
+ let mut h = crc32fast::Hasher::new();
+ h.update(bytes);
+ h.finalize()
+}
+
+/// Produce a hasher suitable for the given kind of hash.
+#[cfg(any(feature = "rustsha1", feature = "fast-sha1"))]
+pub fn hasher(kind: gix_hash::Kind) -> Sha1 {
+ match kind {
+ gix_hash::Kind::Sha1 => Sha1::default(),
+ }
+}
+
+/// Compute the hash of `kind` for the bytes in the file at `path`, hashing only the first `num_bytes_from_start`
+/// while initializing and calling `progress`.
+///
+/// `num_bytes_from_start` is useful to avoid reading trailing hashes, which are never part of the hash itself,
+/// denoting the amount of bytes to hash starting from the beginning of the file.
+///
+/// # Note
+///
+/// * Only available with the `gix-object` feature enabled due to usage of the [`gix_hash::Kind`] enum and the
+/// [`gix_hash::ObjectId`] return value.
+/// * [Interrupts][crate::interrupt] are supported.
+#[cfg(all(feature = "progress", any(feature = "rustsha1", feature = "fast-sha1")))]
+pub fn bytes_of_file(
+ path: &std::path::Path,
+ num_bytes_from_start: usize,
+ kind: gix_hash::Kind,
+ progress: &mut dyn crate::progress::Progress,
+ should_interrupt: &std::sync::atomic::AtomicBool,
+) -> std::io::Result<gix_hash::ObjectId> {
+ bytes(
+ &mut std::fs::File::open(path)?,
+ num_bytes_from_start,
+ kind,
+ progress,
+ should_interrupt,
+ )
+}
+
+/// Similar to [`bytes_of_file`], but operates on an already open file.
+#[cfg(all(feature = "progress", any(feature = "rustsha1", feature = "fast-sha1")))]
+pub fn bytes(
+ read: &mut dyn std::io::Read,
+ num_bytes_from_start: usize,
+ kind: gix_hash::Kind,
+ progress: &mut dyn crate::progress::Progress,
+ should_interrupt: &std::sync::atomic::AtomicBool,
+) -> std::io::Result<gix_hash::ObjectId> {
+ let mut hasher = hasher(kind);
+ let start = std::time::Instant::now();
+ // init progress before the possibility for failure, as convenience in case people want to recover
+ progress.init(Some(num_bytes_from_start), crate::progress::bytes());
+
+ const BUF_SIZE: usize = u16::MAX as usize;
+ let mut buf = [0u8; BUF_SIZE];
+ let mut bytes_left = num_bytes_from_start;
+
+ while bytes_left > 0 {
+ let out = &mut buf[..BUF_SIZE.min(bytes_left)];
+ read.read_exact(out)?;
+ bytes_left -= out.len();
+ progress.inc_by(out.len());
+ hasher.update(out);
+ if should_interrupt.load(std::sync::atomic::Ordering::SeqCst) {
+ return Err(std::io::Error::new(std::io::ErrorKind::Other, "Interrupted"));
+ }
+ }
+
+ let id = gix_hash::ObjectId::from(hasher.digest());
+ progress.show_throughput(start);
+ Ok(id)
+}
+
+#[cfg(any(feature = "rustsha1", feature = "fast-sha1"))]
+mod write {
+ use crate::hash::Sha1;
+
+ /// A utility to automatically generate a hash while writing into an inner writer.
+ pub struct Write<T> {
+ /// The hash implementation.
+ pub hash: Sha1,
+ /// The inner writer.
+ pub inner: T,
+ }
+
+ impl<T> std::io::Write for Write<T>
+ where
+ T: std::io::Write,
+ {
+ fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
+ let written = self.inner.write(buf)?;
+ self.hash.update(&buf[..written]);
+ Ok(written)
+ }
+
+ fn flush(&mut self) -> std::io::Result<()> {
+ self.inner.flush()
+ }
+ }
+
+ impl<T> Write<T>
+ where
+ T: std::io::Write,
+ {
+ /// Create a new hash writer which hashes all bytes written to `inner` with a hash of `kind`.
+ pub fn new(inner: T, object_hash: gix_hash::Kind) -> Self {
+ match object_hash {
+ gix_hash::Kind::Sha1 => Write {
+ inner,
+ hash: Sha1::default(),
+ },
+ }
+ }
+ }
+}
+#[cfg(any(feature = "rustsha1", feature = "fast-sha1"))]
+pub use write::Write;
diff --git a/vendor/gix-features-0.35.0/src/interrupt.rs b/vendor/gix-features-0.35.0/src/interrupt.rs
new file mode 100644
index 000000000..dc7a2db17
--- /dev/null
+++ b/vendor/gix-features-0.35.0/src/interrupt.rs
@@ -0,0 +1,161 @@
+//! Utilities to cause interruptions in common traits, like Read/Write and Iterator.
+use std::{
+ io,
+ sync::atomic::{AtomicBool, Ordering},
+};
+
+/// A wrapper for an inner iterator which will check for interruptions on each iteration, stopping the iteration when
+/// that is requested.
+pub struct Iter<'a, I> {
+ /// The actual iterator to yield elements from.
+ pub inner: I,
+ should_interrupt: &'a AtomicBool,
+}
+
+impl<'a, I> Iter<'a, I>
+where
+ I: Iterator,
+{
+ /// Create a new iterator over `inner` which checks for interruptions on each iteration on `should_interrupt`.
+ ///
+ /// Note that this means the consumer of the iterator data should also be able to access `should_interrupt` and
+ /// consider it when producing the final result to avoid claiming success even though the operation is only partially
+ /// complete.
+ pub fn new(inner: I, should_interrupt: &'a AtomicBool) -> Self {
+ Iter {
+ inner,
+ should_interrupt,
+ }
+ }
+}
+
+impl<'a, I> Iterator for Iter<'a, I>
+where
+ I: Iterator,
+{
+ type Item = I::Item;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if self.should_interrupt.load(Ordering::Relaxed) {
+ return None;
+ }
+ self.inner.next()
+ }
+}
+
+/// A wrapper for an inner iterator which will check for interruptions on each iteration.
+pub struct IterWithErr<'a, I, EFN> {
+ /// The actual iterator to yield elements from.
+ pub inner: I,
+ make_err: Option<EFN>,
+ should_interrupt: &'a AtomicBool,
+}
+
+impl<'a, I, EFN, E> IterWithErr<'a, I, EFN>
+where
+ I: Iterator,
+ EFN: FnOnce() -> E,
+{
+ /// Create a new iterator over `inner` which checks for interruptions on each iteration and calls `make_err()` to
+ /// signal an interruption happened, causing no further items to be iterated from that point on.
+ pub fn new(inner: I, make_err: EFN, should_interrupt: &'a AtomicBool) -> Self {
+ IterWithErr {
+ inner,
+ make_err: Some(make_err),
+ should_interrupt,
+ }
+ }
+}
+
+impl<'a, I, EFN, E> Iterator for IterWithErr<'a, I, EFN>
+where
+ I: Iterator,
+ EFN: FnOnce() -> E,
+{
+ type Item = Result<I::Item, E>;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ self.make_err.as_ref()?;
+ if self.should_interrupt.load(Ordering::Relaxed) {
+ return self.make_err.take().map(|f| Err(f()));
+ }
+ match self.inner.next() {
+ Some(next) => Some(Ok(next)),
+ None => {
+ self.make_err = None;
+ None
+ }
+ }
+ }
+}
+
+/// A wrapper for implementors of [`std::io::Read`] or [`std::io::BufRead`] with interrupt support.
+///
+/// It fails a [read][std::io::Read::read] while an interrupt was requested.
+pub struct Read<'a, R> {
+ /// The actual implementor of [`std::io::Read`] to which interrupt support will be added.
+ pub inner: R,
+ /// The flag to trigger interruption
+ pub should_interrupt: &'a AtomicBool,
+}
+
+impl<'a, R> io::Read for Read<'a, R>
+where
+ R: io::Read,
+{
+ fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
+ if self.should_interrupt.load(Ordering::Relaxed) {
+ return Err(std::io::Error::new(std::io::ErrorKind::Other, "Interrupted"));
+ }
+ self.inner.read(buf)
+ }
+}
+
+impl<'a, R> io::BufRead for Read<'a, R>
+where
+ R: io::BufRead,
+{
+ fn fill_buf(&mut self) -> io::Result<&[u8]> {
+ self.inner.fill_buf()
+ }
+
+ fn consume(&mut self, amt: usize) {
+ self.inner.consume(amt)
+ }
+}
+
+/// A wrapper for implementors of [`std::io::Write`] with interrupt checks on each write call.
+///
+/// It fails a [write][std::io::Write::write] while an interrupt was requested.
+pub struct Write<'a, W> {
+ /// The actual implementor of [`std::io::Write`] to which interrupt support will be added.
+ pub inner: W,
+ /// The flag to trigger interruption
+ pub should_interrupt: &'a AtomicBool,
+}
+
+impl<W> io::Write for Write<'_, W>
+where
+ W: std::io::Write,
+{
+ fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
+ if self.should_interrupt.load(Ordering::Relaxed) {
+ return Err(std::io::Error::new(std::io::ErrorKind::Other, "Interrupted"));
+ }
+ self.inner.write(buf)
+ }
+
+ fn flush(&mut self) -> io::Result<()> {
+ // Don't interrupt here, allow flushes to happen to prefer disk consistency.
+ self.inner.flush()
+ }
+}
+
+impl<W> io::Seek for Write<'_, W>
+where
+ W: std::io::Seek,
+{
+ fn seek(&mut self, pos: io::SeekFrom) -> io::Result<u64> {
+ self.inner.seek(pos)
+ }
+}
diff --git a/vendor/gix-features-0.35.0/src/io.rs b/vendor/gix-features-0.35.0/src/io.rs
new file mode 100644
index 000000000..fba273693
--- /dev/null
+++ b/vendor/gix-features-0.35.0/src/io.rs
@@ -0,0 +1,94 @@
+//!A unidirectional pipe for bytes, analogous to a unix pipe. Available with the `io-pipe` feature toggle.
+
+/// A unidirectional pipe for bytes, analogous to a unix pipe. Available with the `io-pipe` feature toggle.
+#[cfg(feature = "io-pipe")]
+pub mod pipe {
+ use std::io;
+
+ use bytes::{Buf, BufMut, BytesMut};
+
+ /// The write-end of the pipe, receiving items to become available in the [`Reader`].
+ ///
+ /// It's commonly used with the [`std::io::Write`] trait it implements.
+ pub struct Writer {
+ /// The channel through which bytes are transferred. Useful for sending [`std::io::Error`]s instead.
+ pub channel: std::sync::mpsc::SyncSender<io::Result<BytesMut>>,
+ buf: BytesMut,
+ }
+
+ /// The read-end of the pipe, implementing the [`std::io::Read`] trait.
+ pub struct Reader {
+ channel: std::sync::mpsc::Receiver<io::Result<BytesMut>>,
+ buf: BytesMut,
+ }
+
+ impl io::BufRead for Reader {
+ fn fill_buf(&mut self) -> io::Result<&[u8]> {
+ if self.buf.is_empty() {
+ match self.channel.recv() {
+ Ok(Ok(buf)) => self.buf = buf,
+ Ok(Err(err)) => return Err(err),
+ Err(_) => {}
+ }
+ };
+ Ok(&self.buf)
+ }
+
+ fn consume(&mut self, amt: usize) {
+ self.buf.advance(amt.min(self.buf.len()));
+ }
+ }
+
+ impl io::Read for Reader {
+ fn read(&mut self, mut out: &mut [u8]) -> io::Result<usize> {
+ let mut written = 0;
+ while !out.is_empty() {
+ if self.buf.is_empty() {
+ match self.channel.recv() {
+ Ok(Ok(buf)) => self.buf = buf,
+ Ok(Err(err)) => return Err(err),
+ Err(_) => break,
+ }
+ }
+ let bytes_to_write = self.buf.len().min(out.len());
+ let (to_write, rest) = out.split_at_mut(bytes_to_write);
+ self.buf.split_to(bytes_to_write).copy_to_slice(to_write);
+ out = rest;
+ written += bytes_to_write;
+ }
+ Ok(written)
+ }
+ }
+
+ impl io::Write for Writer {
+ fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
+ self.buf.put_slice(buf);
+ self.channel
+ .send(Ok(self.buf.split()))
+ .map_err(|err| io::Error::new(io::ErrorKind::BrokenPipe, err))?;
+ Ok(buf.len())
+ }
+
+ fn flush(&mut self) -> io::Result<()> {
+ Ok(())
+ }
+ }
+
+ /// Returns the _([`write`][Writer], [`read`][Reader])_ ends of a pipe for transferring bytes, analogous to a unix pipe.
+ ///
+ /// * `in_flight_writes` defines the amount of chunks of bytes to keep in memory until the `write` end will block when writing.
+ /// If `0`, the `write` end will always block until the `read` end consumes the transferred bytes.
+ pub fn unidirectional(in_flight_writes: usize) -> (Writer, Reader) {
+ let (tx, rx) = std::sync::mpsc::sync_channel(in_flight_writes);
+ (
+ Writer {
+ channel: tx,
+ buf: BytesMut::with_capacity(4096),
+ },
+ Reader {
+ channel: rx,
+ buf: BytesMut::new(),
+ },
+ )
+ }
+}
diff --git a/vendor/gix-features-0.35.0/src/lib.rs b/vendor/gix-features-0.35.0/src/lib.rs
new file mode 100644
index 000000000..f343b2647
--- /dev/null
+++ b/vendor/gix-features-0.35.0/src/lib.rs
@@ -0,0 +1,66 @@
+//! A crate providing foundational capabilities to other `git-*` crates with trade-offs between compile time, binary size or speed
+//! selectable using cargo feature toggles.
+//!
+//! It's designed to allow the application level crate to configure feature toggles, affecting all other `git-*` crates using
+//! this one.
+//!
+//! Thus all features provided here commonly have a 'cheap' base implementation, with the option to pull in
+//! counterparts with higher performance.
+//! ## Feature Flags
+#![cfg_attr(
+ feature = "document-features",
+ cfg_attr(doc, doc = ::document_features::document_features!())
+)]
+#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
+#![deny(missing_docs, rust_2018_idioms, unsafe_code)]
+
+///
+pub mod cache;
+///
+pub mod decode;
+pub mod fs;
+pub mod hash;
+pub mod interrupt;
+#[cfg(feature = "io-pipe")]
+pub mod io;
+pub mod parallel;
+#[cfg(feature = "progress")]
+pub mod progress;
+pub mod threading;
+pub use gix_trace as trace;
+
+///
+#[cfg(feature = "zlib")]
+pub mod zlib;
+
+///
+pub mod iter {
+ /// An iterator over chunks of input, producing `Vec<Item>` with a size of `size`, with the last chunk being the remainder and thus
+ /// potentially smaller than `size`.
+ pub struct Chunks<I> {
+ /// The inner iterator to ask for items.
+ pub inner: I,
+ /// The size of chunks to produce
+ pub size: usize,
+ }
+
+ impl<I, Item> Iterator for Chunks<I>
+ where
+ I: Iterator<Item = Item>,
+ {
+ type Item = Vec<Item>;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ let mut res = Vec::with_capacity(self.size);
+ let mut items_left = self.size;
+ for item in &mut self.inner {
+ res.push(item);
+ items_left -= 1;
+ if items_left == 0 {
+ break;
+ }
+ }
+ (!res.is_empty()).then_some(res)
+ }
+ }
+}
diff --git a/vendor/gix-features-0.35.0/src/parallel/eager_iter.rs b/vendor/gix-features-0.35.0/src/parallel/eager_iter.rs
new file mode 100644
index 000000000..9a1735f72
--- /dev/null
+++ b/vendor/gix-features-0.35.0/src/parallel/eager_iter.rs
@@ -0,0 +1,124 @@
+/// Evaluate any iterator in their own thread.
+///
+/// This is particularly useful if the wrapped iterator performs IO and/or heavy computations.
+/// Use [`EagerIter::new()`] for instantiation.
+pub struct EagerIter<I: Iterator> {
+ receiver: std::sync::mpsc::Receiver<Vec<I::Item>>,
+ chunk: Option<std::vec::IntoIter<I::Item>>,
+ size_hint: (usize, Option<usize>),
+}
+
+impl<I> EagerIter<I>
+where
+ I: Iterator + Send + 'static,
+ <I as Iterator>::Item: Send,
+{
+ /// Return a new `EagerIter` which evaluates `iter` in its own thread,
+ /// with a given `chunk_size` allowing a maximum `chunks_in_flight`.
+ ///
+ /// * `chunk_size` describes how many items returned by `iter` will be a single item of this `EagerIter`.
+ /// This helps to reduce the overhead imposed by transferring many small items.
+ /// If this number is 1, each item will become a single chunk. 0 is invalid.
+ /// * `chunks_in_flight` describes how many chunks can be kept in memory in case the consumer of the `EagerIter`s items
+ /// isn't consuming them fast enough. Setting this number to 0 effectively turns off any caching, but blocks `EagerIter`
+ /// if its items aren't consumed fast enough.
+ pub fn new(iter: I, chunk_size: usize, chunks_in_flight: usize) -> Self {
+ let (sender, receiver) = std::sync::mpsc::sync_channel(chunks_in_flight);
+ let size_hint = iter.size_hint();
+ assert!(chunk_size > 0, "non-zero chunk size is needed");
+
+ std::thread::spawn(move || {
+ let mut out = Vec::with_capacity(chunk_size);
+ for item in iter {
+ out.push(item);
+ if out.len() == chunk_size {
+ if sender.send(out).is_err() {
+ return;
+ }
+ out = Vec::with_capacity(chunk_size);
+ }
+ }
+ if !out.is_empty() {
+ sender.send(out).ok();
+ }
+ });
+ EagerIter {
+ receiver,
+ chunk: None,
+ size_hint,
+ }
+ }
+
+ fn fill_buf_and_pop(&mut self) -> Option<I::Item> {
+ self.chunk = self.receiver.recv().ok().map(|v| {
+ assert!(!v.is_empty());
+ v.into_iter()
+ });
+ self.chunk.as_mut().and_then(Iterator::next)
+ }
+}
+
+impl<I> Iterator for EagerIter<I>
+where
+ I: Iterator + Send + 'static,
+ <I as Iterator>::Item: Send,
+{
+ type Item = I::Item;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ match self.chunk.as_mut() {
+ Some(chunk) => chunk.next().or_else(|| self.fill_buf_and_pop()),
+ None => self.fill_buf_and_pop(),
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ self.size_hint
+ }
+}
+
+/// An conditional `EagerIter`, which may become a just-in-time iterator running in the main thread depending on a condition.
+pub enum EagerIterIf<I: Iterator> {
+ /// A separate thread will eagerly evaluate iterator `I`.
+ Eager(EagerIter<I>),
+ /// The current thread evaluates `I`.
+ OnDemand(I),
+}
+
+impl<I> EagerIterIf<I>
+where
+ I: Iterator + Send + 'static,
+ <I as Iterator>::Item: Send,
+{
+ /// Return a new `EagerIterIf` if `condition()` returns true.
+ ///
+ /// For all other parameters, please see [`EagerIter::new()`].
+ pub fn new(condition: impl FnOnce() -> bool, iter: I, chunk_size: usize, chunks_in_flight: usize) -> Self {
+ if condition() {
+ EagerIterIf::Eager(EagerIter::new(iter, chunk_size, chunks_in_flight))
+ } else {
+ EagerIterIf::OnDemand(iter)
+ }
+ }
+}
+impl<I> Iterator for EagerIterIf<I>
+where
+ I: Iterator + Send + 'static,
+ <I as Iterator>::Item: Send,
+{
+ type Item = I::Item;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ match self {
+ EagerIterIf::OnDemand(i) => i.next(),
+ EagerIterIf::Eager(i) => i.next(),
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ match self {
+ EagerIterIf::OnDemand(i) => i.size_hint(),
+ EagerIterIf::Eager(i) => i.size_hint(),
+ }
+ }
+}
diff --git a/vendor/gix-features-0.35.0/src/parallel/in_order.rs b/vendor/gix-features-0.35.0/src/parallel/in_order.rs
new file mode 100644
index 000000000..7928ac692
--- /dev/null
+++ b/vendor/gix-features-0.35.0/src/parallel/in_order.rs
@@ -0,0 +1,83 @@
+use std::{cmp::Ordering, collections::BTreeMap};
+
+/// A counter for items that are in sequence, to be able to put them back into original order later.
+pub type SequenceId = usize;
+
+/// An iterator which olds iterated items with a **sequential** ID starting at 0 long enough to dispense them in order.
+pub struct InOrderIter<T, I> {
+ /// The iterator yielding the out-of-order elements we are to yield in order.
+ pub inner: I,
+ store: BTreeMap<SequenceId, T>,
+ next_chunk: SequenceId,
+ is_done: bool,
+}
+
+impl<T, E, I> From<I> for InOrderIter<T, I>
+where
+ I: Iterator<Item = Result<(SequenceId, T), E>>,
+{
+ fn from(iter: I) -> Self {
+ InOrderIter {
+ inner: iter,
+ store: Default::default(),
+ next_chunk: 0,
+ is_done: false,
+ }
+ }
+}
+
+impl<T, E, I> Iterator for InOrderIter<T, I>
+where
+ I: Iterator<Item = Result<(SequenceId, T), E>>,
+{
+ type Item = Result<T, E>;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if self.is_done {
+ return None;
+ }
+ 'find_next_in_sequence: loop {
+ match self.inner.next() {
+ Some(Ok((c, v))) => match c.cmp(&self.next_chunk) {
+ Ordering::Equal => {
+ self.next_chunk += 1;
+ return Some(Ok(v));
+ }
+ Ordering::Less => {
+ unreachable!("in a correctly ordered sequence we can never see keys again, got {}", c)
+ }
+ Ordering::Greater => {
+ let previous = self.store.insert(c, v);
+ assert!(
+ previous.is_none(),
+ "Chunks are returned only once, input is an invalid sequence"
+ );
+ if let Some(v) = self.store.remove(&self.next_chunk) {
+ self.next_chunk += 1;
+ return Some(Ok(v));
+ }
+ continue 'find_next_in_sequence;
+ }
+ },
+ Some(Err(e)) => {
+ self.is_done = true;
+ self.store.clear();
+ return Some(Err(e));
+ }
+ None => match self.store.remove(&self.next_chunk) {
+ Some(v) => {
+ self.next_chunk += 1;
+ return Some(Ok(v));
+ }
+ None => {
+ debug_assert!(
+ self.store.is_empty(),
+ "When iteration is done we should not have stored items left"
+ );
+ return None;
+ }
+ },
+ }
+ }
+ }
+}
diff --git a/vendor/gix-features-0.35.0/src/parallel/in_parallel.rs b/vendor/gix-features-0.35.0/src/parallel/in_parallel.rs
new file mode 100644
index 000000000..a80762bad
--- /dev/null
+++ b/vendor/gix-features-0.35.0/src/parallel/in_parallel.rs
@@ -0,0 +1,301 @@
+use std::sync::atomic::{AtomicBool, AtomicIsize, AtomicUsize, Ordering};
+
+use crate::parallel::{num_threads, Reduce};
+
+/// A scope to start threads within.
+pub type Scope<'scope, 'env> = std::thread::Scope<'scope, 'env>;
+
+/// Runs `left` and `right` in parallel, returning their output when both are done.
+pub fn join<O1: Send, O2: Send>(left: impl FnOnce() -> O1 + Send, right: impl FnOnce() -> O2 + Send) -> (O1, O2) {
+ std::thread::scope(|s| {
+ let left = std::thread::Builder::new()
+ .name("gitoxide.join.left".into())
+ .spawn_scoped(s, left)
+ .expect("valid name");
+ let right = std::thread::Builder::new()
+ .name("gitoxide.join.right".into())
+ .spawn_scoped(s, right)
+ .expect("valid name");
+ (left.join().unwrap(), right.join().unwrap())
+ })
+}
+
+/// Runs `f` with a scope to be used for spawning threads that will not outlive the function call.
+/// That way it's possible to handle threads without needing the 'static lifetime for data they interact with.
+///
+/// Note that the threads should not rely on actual parallelism as threading might be turned off entirely, hence should not
+/// connect each other with channels as deadlock would occur in single-threaded mode.
+pub fn threads<'env, F, R>(f: F) -> R
+where
+ F: for<'scope> FnOnce(&'scope std::thread::Scope<'scope, 'env>) -> R,
+{
+ std::thread::scope(f)
+}
+
+/// Create a builder for threads which allows them to be spawned into a scope and configured prior to spawning.
+pub fn build_thread() -> std::thread::Builder {
+ std::thread::Builder::new()
+}
+
+/// Read items from `input` and `consume` them in multiple threads,
+/// whose output output is collected by a `reducer`. Its task is to
+/// aggregate these outputs into the final result returned by this function with the benefit of not having to be thread-safe.
+///
+/// * if `thread_limit` is `Some`, the given amount of threads will be used. If `None`, all logical cores will be used.
+/// * `new_thread_state(thread_number) -> State` produces thread-local state once per thread to be based to `consume`
+/// * `consume(Item, &mut State) -> Output` produces an output given an input obtained by `input` along with mutable state initially
+/// created by `new_thread_state(…)`.
+/// * For `reducer`, see the [`Reduce`] trait
+pub fn in_parallel<I, S, O, R>(
+ input: impl Iterator<Item = I> + Send,
+ thread_limit: Option<usize>,
+ new_thread_state: impl FnOnce(usize) -> S + Send + Clone,
+ consume: impl FnMut(I, &mut S) -> O + Send + Clone,
+ mut reducer: R,
+) -> Result<<R as Reduce>::Output, <R as Reduce>::Error>
+where
+ R: Reduce<Input = O>,
+ I: Send,
+ O: Send,
+{
+ let num_threads = num_threads(thread_limit);
+ std::thread::scope(move |s| {
+ let receive_result = {
+ let (send_input, receive_input) = crossbeam_channel::bounded::<I>(num_threads);
+ let (send_result, receive_result) = crossbeam_channel::bounded::<O>(num_threads);
+ for thread_id in 0..num_threads {
+ std::thread::Builder::new()
+ .name(format!("gitoxide.in_parallel.produce.{thread_id}"))
+ .spawn_scoped(s, {
+ let send_result = send_result.clone();
+ let receive_input = receive_input.clone();
+ let new_thread_state = new_thread_state.clone();
+ let mut consume = consume.clone();
+ move || {
+ let mut state = new_thread_state(thread_id);
+ for item in receive_input {
+ if send_result.send(consume(item, &mut state)).is_err() {
+ break;
+ }
+ }
+ }
+ })
+ .expect("valid name");
+ }
+ std::thread::Builder::new()
+ .name("gitoxide.in_parallel.feed".into())
+ .spawn_scoped(s, move || {
+ for item in input {
+ if send_input.send(item).is_err() {
+ break;
+ }
+ }
+ })
+ .expect("valid name");
+ receive_result
+ };
+
+ for item in receive_result {
+ drop(reducer.feed(item)?);
+ }
+ reducer.finalize()
+ })
+}
+
+/// Read items from `input` and `consume` them in multiple threads,
+/// whose output output is collected by a `reducer`. Its task is to
+/// aggregate these outputs into the final result returned by this function with the benefit of not having to be thread-safe.
+/// Caall `finalize` to finish the computation, once per thread, if there was no error sending results earlier.
+///
+/// * if `thread_limit` is `Some`, the given amount of threads will be used. If `None`, all logical cores will be used.
+/// * `new_thread_state(thread_number) -> State` produces thread-local state once per thread to be based to `consume`
+/// * `consume(Item, &mut State) -> Output` produces an output given an input obtained by `input` along with mutable state initially
+/// created by `new_thread_state(…)`.
+/// * `finalize(State) -> Output` is called to potentially process remaining work that was placed in `State`.
+/// * For `reducer`, see the [`Reduce`] trait
+pub fn in_parallel_with_finalize<I, S, O, R>(
+ input: impl Iterator<Item = I> + Send,
+ thread_limit: Option<usize>,
+ new_thread_state: impl FnOnce(usize) -> S + Send + Clone,
+ consume: impl FnMut(I, &mut S) -> O + Send + Clone,
+ finalize: impl FnOnce(S) -> O + Send + Clone,
+ mut reducer: R,
+) -> Result<<R as Reduce>::Output, <R as Reduce>::Error>
+where
+ R: Reduce<Input = O>,
+ I: Send,
+ O: Send,
+{
+ let num_threads = num_threads(thread_limit);
+ std::thread::scope(move |s| {
+ let receive_result = {
+ let (send_input, receive_input) = crossbeam_channel::bounded::<I>(num_threads);
+ let (send_result, receive_result) = crossbeam_channel::bounded::<O>(num_threads);
+ for thread_id in 0..num_threads {
+ std::thread::Builder::new()
+ .name(format!("gitoxide.in_parallel.produce.{thread_id}"))
+ .spawn_scoped(s, {
+ let send_result = send_result.clone();
+ let receive_input = receive_input.clone();
+ let new_thread_state = new_thread_state.clone();
+ let mut consume = consume.clone();
+ let finalize = finalize.clone();
+ move || {
+ let mut state = new_thread_state(thread_id);
+ let mut can_send = true;
+ for item in receive_input {
+ if send_result.send(consume(item, &mut state)).is_err() {
+ can_send = false;
+ break;
+ }
+ }
+ if can_send {
+ send_result.send(finalize(state)).ok();
+ }
+ }
+ })
+ .expect("valid name");
+ }
+ std::thread::Builder::new()
+ .name("gitoxide.in_parallel.feed".into())
+ .spawn_scoped(s, move || {
+ for item in input {
+ if send_input.send(item).is_err() {
+ break;
+ }
+ }
+ })
+ .expect("valid name");
+ receive_result
+ };
+
+ for item in receive_result {
+ drop(reducer.feed(item)?);
+ }
+ reducer.finalize()
+ })
+}
+
+/// An experiment to have fine-grained per-item parallelization with built-in aggregation via thread state.
+/// This is only good for operations where near-random access isn't detrimental, so it's not usually great
+/// for file-io as it won't make use of sorted inputs well.
+/// Note that `periodic` is not guaranteed to be called in case other threads come up first and finish too fast.
+/// `consume(&mut item, &mut stat, &Scope, &threads_available, &should_interrupt)` is called for performing the actual computation.
+/// Note that `threads_available` should be decremented to start a thread that can steal your own work (as stored in `item`),
+/// which allows callees to implement their own work-stealing in case the work is distributed unevenly.
+/// Work stealing should only start after having processed at least one item to give all threads naturally operating on the slice
+/// some time to start. Starting threads while slice-workers are still starting up would lead to over-allocation of threads,
+/// which is why the number of threads left may turn negative. Once threads are started and stopped, be sure to adjust
+/// the thread-count accordingly.
+// TODO: better docs
+pub fn in_parallel_with_slice<I, S, R, E>(
+ input: &mut [I],
+ thread_limit: Option<usize>,
+ new_thread_state: impl FnOnce(usize) -> S + Send + Clone,
+ consume: impl FnMut(&mut I, &mut S, &AtomicIsize, &AtomicBool) -> Result<(), E> + Send + Clone,
+ mut periodic: impl FnMut() -> Option<std::time::Duration> + Send,
+ state_to_rval: impl FnOnce(S) -> R + Send + Clone,
+) -> Result<Vec<R>, E>
+where
+ I: Send,
+ E: Send,
+ R: Send,
+{
+ let num_threads = num_threads(thread_limit);
+ let mut results = Vec::with_capacity(num_threads);
+ let stop_everything = &AtomicBool::default();
+ let index = &AtomicUsize::default();
+ let threads_left = &AtomicIsize::new(num_threads as isize);
+
+ std::thread::scope({
+ move |s| {
+ std::thread::Builder::new()
+ .name("gitoxide.in_parallel_with_slice.watch-interrupts".into())
+ .spawn_scoped(s, {
+ move || loop {
+ if stop_everything.load(Ordering::Relaxed) {
+ break;
+ }
+
+ match periodic() {
+ Some(duration) => std::thread::sleep(duration),
+ None => {
+ stop_everything.store(true, Ordering::Relaxed);
+ break;
+ }
+ }
+ }
+ })
+ .expect("valid name");
+
+ let input_len = input.len();
+ struct Input<I>(*mut [I])
+ where
+ I: Send;
+
+ // SAFETY: I is Send + Sync, so is a *mut [I]
+ #[allow(unsafe_code)]
+ unsafe impl<I> Send for Input<I> where I: Send {}
+
+ let threads: Vec<_> = (0..num_threads)
+ .map(|thread_id| {
+ std::thread::Builder::new()
+ .name(format!("gitoxide.in_parallel_with_slice.produce.{thread_id}"))
+ .spawn_scoped(s, {
+ let new_thread_state = new_thread_state.clone();
+ let state_to_rval = state_to_rval.clone();
+ let mut consume = consume.clone();
+ let input = Input(input as *mut [I]);
+ move || {
+ let _ = &input;
+ threads_left.fetch_sub(1, Ordering::SeqCst);
+ let mut state = new_thread_state(thread_id);
+ let res = (|| {
+ while let Ok(input_index) =
+ index.fetch_update(Ordering::SeqCst, Ordering::SeqCst, |x| {
+ (x < input_len).then_some(x + 1)
+ })
+ {
+ if stop_everything.load(Ordering::Relaxed) {
+ break;
+ }
+ // SAFETY: our atomic counter for `input_index` is only ever incremented, yielding
+ // each item exactly once.
+ let item = {
+ #[allow(unsafe_code)]
+ unsafe {
+ &mut (&mut *input.0)[input_index]
+ }
+ };
+ if let Err(err) = consume(item, &mut state, threads_left, stop_everything) {
+ stop_everything.store(true, Ordering::Relaxed);
+ return Err(err);
+ }
+ }
+ Ok(state_to_rval(state))
+ })();
+ threads_left.fetch_add(1, Ordering::SeqCst);
+ res
+ }
+ })
+ .expect("valid name")
+ })
+ .collect();
+ for thread in threads {
+ match thread.join() {
+ Ok(res) => {
+ results.push(res?);
+ }
+ Err(err) => {
+ // a panic happened, stop the world gracefully (even though we panic later)
+ stop_everything.store(true, Ordering::Relaxed);
+ std::panic::resume_unwind(err);
+ }
+ }
+ }
+
+ stop_everything.store(true, Ordering::Relaxed);
+ Ok(results)
+ }
+ })
+}
diff --git a/vendor/gix-features-0.35.0/src/parallel/mod.rs b/vendor/gix-features-0.35.0/src/parallel/mod.rs
new file mode 100644
index 000000000..5a0a4b589
--- /dev/null
+++ b/vendor/gix-features-0.35.0/src/parallel/mod.rs
@@ -0,0 +1,178 @@
+//! Run computations in parallel, or not based the `parallel` feature toggle.
+//!
+//! ### `in_parallel`(…)
+//!
+//! The [`in_parallel(…)`][in_parallel()] is the typical fan-out-fan-in mode of parallelism, with thread local storage
+//! made available to a `consume(…)` function to process input. The result is sent to the [`Reduce`] running in the calling
+//! thread to aggregate the results into a single output, which is returned by [`in_parallel()`].
+//!
+//! Interruptions can be achieved by letting the reducers [`feed(…)`][Reduce::feed()] method fail.
+//!
+//! It gets a boost in usability as it allows threads to borrow variables from the stack, most commonly the repository itself
+//! or the data to work on.
+//!
+//! This mode of operation doesn't lend itself perfectly to being wrapped for `async` as it appears like a single long-running
+//! operation which runs as fast as possible, which is cancellable only by merit of stopping the input or stopping the output
+//! aggregation.
+//!
+//! ### `reduce::Stepwise`
+//!
+//! The [`Stepwise`][reduce::Stepwise] iterator works exactly as [`in_parallel()`] except that the processing of the output produced by
+//! `consume(I, &mut State) -> O` is made accessible by the `Iterator` trait's `next()` method. As produced work is not
+//! buffered, the owner of the iterator controls the progress made.
+//!
+//! Getting the final output of the [`Reduce`] is achieved through the consuming [`Stepwise::finalize()`][reduce::Stepwise::finalize()] method, which
+//! is functionally equivalent to calling [`in_parallel()`].
+//!
+//! In an `async` context this means that progress is only made each time `next()` is called on the iterator, while merely dropping
+//! the iterator will wind down the computation without any result.
+//!
+//! #### Maintaining Safety
+//!
+//! In order to assure that threads don't outlive the data they borrow because their handles are leaked, we enforce
+//! the `'static` lifetime for its inputs, making it less intuitive to use. It is, however, possible to produce
+//! suitable input iterators as long as they can hold something on the heap.
+#[cfg(feature = "parallel")]
+mod in_parallel;
+#[cfg(feature = "parallel")]
+pub use in_parallel::{
+ build_thread, in_parallel, in_parallel_with_finalize, in_parallel_with_slice, join, threads, Scope,
+};
+
+mod serial;
+#[cfg(not(feature = "parallel"))]
+pub use serial::{build_thread, in_parallel, in_parallel_with_finalize, in_parallel_with_slice, join, threads, Scope};
+
+mod in_order;
+pub use in_order::{InOrderIter, SequenceId};
+
+mod eager_iter;
+pub use eager_iter::{EagerIter, EagerIterIf};
+
+/// A no-op returning the input _(`desired_chunk_size`, `Some(thread_limit)`, `thread_limit)_ used
+/// when the `parallel` feature toggle is not set.
+#[cfg(not(feature = "parallel"))]
+pub fn optimize_chunk_size_and_thread_limit(
+ desired_chunk_size: usize,
+ _num_items: Option<usize>,
+ thread_limit: Option<usize>,
+ _available_threads: Option<usize>,
+) -> (usize, Option<usize>, usize) {
+ (desired_chunk_size, thread_limit, num_threads(thread_limit))
+}
+
+/// Return the 'optimal' _(`size of chunks`, `amount of threads as Option`, `amount of threads`)_ to use in [`in_parallel()`] for the given
+/// `desired_chunk_size`, `num_items`, `thread_limit` and `available_threads`.
+///
+/// * `desired_chunk_size` is the amount of items per chunk you think should be used.
+/// * `num_items` is the total amount of items in the iteration, if `Some`.
+/// Otherwise this knowledge will not affect the output of this function.
+/// * `thread_limit` is the amount of threads to use at most, if `Some`.
+/// Otherwise this knowledge will not affect the output of this function.
+/// * `available_threads` is the total amount of threads available, if `Some`.
+/// Otherwise the actual amount of available threads is determined by querying the system.
+///
+/// `Note` that this implementation is available only if the `parallel` feature toggle is set.
+#[cfg(feature = "parallel")]
+pub fn optimize_chunk_size_and_thread_limit(
+ desired_chunk_size: usize,
+ num_items: Option<usize>,
+ thread_limit: Option<usize>,
+ available_threads: Option<usize>,
+) -> (usize, Option<usize>, usize) {
+ let available_threads =
+ available_threads.unwrap_or_else(|| std::thread::available_parallelism().map_or(1, Into::into));
+ let available_threads = thread_limit.map_or(available_threads, |l| if l == 0 { available_threads } else { l });
+
+ let (lower, upper) = (50, 1000);
+ let (chunk_size, thread_limit) = num_items.map_or(
+ {
+ let chunk_size = if available_threads == 1 {
+ desired_chunk_size
+ } else if desired_chunk_size < lower {
+ lower
+ } else {
+ desired_chunk_size.min(upper)
+ };
+ (chunk_size, available_threads)
+ },
+ |num_items| {
+ let desired_chunks_per_thread_at_least = 2;
+ let items = num_items;
+ let chunk_size = (items / (available_threads * desired_chunks_per_thread_at_least)).clamp(1, upper);
+ let num_chunks = items / chunk_size;
+ let thread_limit = if num_chunks <= available_threads {
+ (num_chunks / desired_chunks_per_thread_at_least).max(1)
+ } else {
+ available_threads
+ };
+ (chunk_size, thread_limit)
+ },
+ );
+ (chunk_size, Some(thread_limit), thread_limit)
+}
+
+/// Always returns 1, available when the `parallel` feature toggle is unset.
+#[cfg(not(feature = "parallel"))]
+pub fn num_threads(_thread_limit: Option<usize>) -> usize {
+ 1
+}
+
+/// Returns the amount of threads the system can effectively use as the amount of its logical cores.
+///
+/// Only available with the `parallel` feature toggle set.
+#[cfg(feature = "parallel")]
+pub fn num_threads(thread_limit: Option<usize>) -> usize {
+ let logical_cores = std::thread::available_parallelism().map_or(1, Into::into);
+ thread_limit.map_or(logical_cores, |l| if l == 0 { logical_cores } else { l })
+}
+
+/// Run [`in_parallel()`] only if the given `condition()` returns true when eagerly evaluated.
+///
+/// For parameters, see the documentation of [`in_parallel()`]
+#[cfg(feature = "parallel")]
+pub fn in_parallel_if<I, S, O, R>(
+ condition: impl FnOnce() -> bool,
+ input: impl Iterator<Item = I> + Send,
+ thread_limit: Option<usize>,
+ new_thread_state: impl FnOnce(usize) -> S + Send + Clone,
+ consume: impl FnMut(I, &mut S) -> O + Send + Clone,
+ reducer: R,
+) -> Result<<R as Reduce>::Output, <R as Reduce>::Error>
+where
+ R: Reduce<Input = O>,
+ I: Send,
+ O: Send,
+{
+ if num_threads(thread_limit) > 1 && condition() {
+ in_parallel(input, thread_limit, new_thread_state, consume, reducer)
+ } else {
+ serial::in_parallel(input, thread_limit, new_thread_state, consume, reducer)
+ }
+}
+
+/// Run [`in_parallel()`] only if the given `condition()` returns true when eagerly evaluated.
+///
+/// For parameters, see the documentation of [`in_parallel()`]
+///
+/// Note that the non-parallel version is equivalent to [`in_parallel()`].
+#[cfg(not(feature = "parallel"))]
+pub fn in_parallel_if<I, S, O, R>(
+ _condition: impl FnOnce() -> bool,
+ input: impl Iterator<Item = I>,
+ thread_limit: Option<usize>,
+ new_thread_state: impl FnOnce(usize) -> S,
+ consume: impl FnMut(I, &mut S) -> O,
+ reducer: R,
+) -> Result<<R as Reduce>::Output, <R as Reduce>::Error>
+where
+ R: Reduce<Input = O>,
+ I: Send,
+ O: Send,
+{
+ serial::in_parallel(input, thread_limit, new_thread_state, consume, reducer)
+}
+
+///
+pub mod reduce;
+pub use reduce::Reduce;
diff --git a/vendor/gix-features-0.35.0/src/parallel/reduce.rs b/vendor/gix-features-0.35.0/src/parallel/reduce.rs
new file mode 100644
index 000000000..f9992cfd2
--- /dev/null
+++ b/vendor/gix-features-0.35.0/src/parallel/reduce.rs
@@ -0,0 +1,279 @@
+#[cfg(feature = "parallel")]
+mod stepped {
+ use crate::parallel::num_threads;
+
+ /// An iterator adaptor to allow running computations using [`in_parallel()`][crate::parallel::in_parallel()] in a step-wise manner, see the [module docs][crate::parallel]
+ /// for details.
+ pub struct Stepwise<Reduce: super::Reduce> {
+ /// This field is first to assure it's dropped first and cause threads that are dropped next to stop their loops
+ /// as sending results fails when the receiver is dropped.
+ receive_result: std::sync::mpsc::Receiver<Reduce::Input>,
+ /// `join()` will be called on these guards to assure every thread tries to send through a closed channel. When
+ /// that happens, they break out of their loops.
+ threads: Vec<std::thread::JoinHandle<()>>,
+ /// The reducer is called only in the thread using the iterator, dropping it has no side effects.
+ reducer: Option<Reduce>,
+ }
+
+ impl<Reduce: super::Reduce> Drop for Stepwise<Reduce> {
+ fn drop(&mut self) {
+ let (_, sink) = std::sync::mpsc::channel();
+ drop(std::mem::replace(&mut self.receive_result, sink));
+
+ let mut last_err = None;
+ for handle in std::mem::take(&mut self.threads) {
+ if let Err(err) = handle.join() {
+ last_err = Some(err);
+ };
+ }
+ if let Some(thread_err) = last_err {
+ std::panic::resume_unwind(thread_err);
+ }
+ }
+ }
+
+ impl<Reduce: super::Reduce> Stepwise<Reduce> {
+ /// Instantiate a new iterator and start working in threads.
+ /// For a description of parameters, see [`in_parallel()`][crate::parallel::in_parallel()].
+ pub fn new<InputIter, ThreadStateFn, ConsumeFn, I, O, S>(
+ input: InputIter,
+ thread_limit: Option<usize>,
+ new_thread_state: ThreadStateFn,
+ consume: ConsumeFn,
+ reducer: Reduce,
+ ) -> Self
+ where
+ InputIter: Iterator<Item = I> + Send + 'static,
+ ThreadStateFn: Fn(usize) -> S + Send + Clone + 'static,
+ ConsumeFn: Fn(I, &mut S) -> O + Send + Clone + 'static,
+ Reduce: super::Reduce<Input = O> + 'static,
+ I: Send + 'static,
+ O: Send + 'static,
+ {
+ let num_threads = num_threads(thread_limit);
+ let mut threads = Vec::with_capacity(num_threads + 1);
+ let receive_result = {
+ let (send_input, receive_input) = crossbeam_channel::bounded::<I>(num_threads);
+ let (send_result, receive_result) = std::sync::mpsc::sync_channel::<O>(num_threads);
+ for thread_id in 0..num_threads {
+ let handle = std::thread::spawn({
+ let send_result = send_result.clone();
+ let receive_input = receive_input.clone();
+ let new_thread_state = new_thread_state.clone();
+ let consume = consume.clone();
+ move || {
+ let mut state = new_thread_state(thread_id);
+ for item in receive_input {
+ if send_result.send(consume(item, &mut state)).is_err() {
+ break;
+ }
+ }
+ }
+ });
+ threads.push(handle);
+ }
+ threads.push(std::thread::spawn(move || {
+ for item in input {
+ if send_input.send(item).is_err() {
+ break;
+ }
+ }
+ }));
+ receive_result
+ };
+ Stepwise {
+ threads,
+ receive_result,
+ reducer: Some(reducer),
+ }
+ }
+
+ /// Consume the iterator by finishing its iteration and calling [`Reduce::finalize()`][crate::parallel::Reduce::finalize()].
+ pub fn finalize(mut self) -> Result<Reduce::Output, Reduce::Error> {
+ for value in self.by_ref() {
+ drop(value?);
+ }
+ self.reducer
+ .take()
+ .expect("this is the last call before consumption")
+ .finalize()
+ }
+ }
+
+ impl<Reduce: super::Reduce> Iterator for Stepwise<Reduce> {
+ type Item = Result<Reduce::FeedProduce, Reduce::Error>;
+
+ fn next(&mut self) -> Option<<Self as Iterator>::Item> {
+ self.receive_result
+ .recv()
+ .ok()
+ .and_then(|input| self.reducer.as_mut().map(|r| r.feed(input)))
+ }
+ }
+
+ impl<R: super::Reduce> super::Finalize for Stepwise<R> {
+ type Reduce = R;
+
+ fn finalize(
+ self,
+ ) -> Result<
+ <<Self as super::Finalize>::Reduce as super::Reduce>::Output,
+ <<Self as super::Finalize>::Reduce as super::Reduce>::Error,
+ > {
+ Stepwise::finalize(self)
+ }
+ }
+}
+
+#[cfg(not(feature = "parallel"))]
+mod stepped {
+ /// An iterator adaptor to allow running computations using [`in_parallel()`][crate::parallel::in_parallel()] in a step-wise manner, see the [module docs][crate::parallel]
+ /// for details.
+ pub struct Stepwise<InputIter, ConsumeFn, ThreadState, Reduce> {
+ input: InputIter,
+ consume: ConsumeFn,
+ thread_state: ThreadState,
+ reducer: Reduce,
+ }
+
+ impl<InputIter, ConsumeFn, Reduce, I, O, S> Stepwise<InputIter, ConsumeFn, S, Reduce>
+ where
+ InputIter: Iterator<Item = I>,
+ ConsumeFn: Fn(I, &mut S) -> O,
+ Reduce: super::Reduce<Input = O>,
+ {
+ /// Instantiate a new iterator.
+ /// For a description of parameters, see [`in_parallel()`][crate::parallel::in_parallel()].
+ pub fn new<ThreadStateFn>(
+ input: InputIter,
+ _thread_limit: Option<usize>,
+ new_thread_state: ThreadStateFn,
+ consume: ConsumeFn,
+ reducer: Reduce,
+ ) -> Self
+ where
+ ThreadStateFn: Fn(usize) -> S,
+ {
+ Stepwise {
+ input,
+ consume,
+ thread_state: new_thread_state(0),
+ reducer,
+ }
+ }
+
+ /// Consume the iterator by finishing its iteration and calling [`Reduce::finalize()`][crate::parallel::Reduce::finalize()].
+ pub fn finalize(mut self) -> Result<Reduce::Output, Reduce::Error> {
+ for value in self.by_ref() {
+ drop(value?);
+ }
+ self.reducer.finalize()
+ }
+ }
+
+ impl<InputIter, ConsumeFn, ThreadState, Reduce, I, O> Iterator for Stepwise<InputIter, ConsumeFn, ThreadState, Reduce>
+ where
+ InputIter: Iterator<Item = I>,
+ ConsumeFn: Fn(I, &mut ThreadState) -> O,
+ Reduce: super::Reduce<Input = O>,
+ {
+ type Item = Result<Reduce::FeedProduce, Reduce::Error>;
+
+ fn next(&mut self) -> Option<<Self as Iterator>::Item> {
+ self.input
+ .next()
+ .map(|input| self.reducer.feed((self.consume)(input, &mut self.thread_state)))
+ }
+ }
+
+ impl<InputIter, ConsumeFn, R, I, O, S> super::Finalize for Stepwise<InputIter, ConsumeFn, S, R>
+ where
+ InputIter: Iterator<Item = I>,
+ ConsumeFn: Fn(I, &mut S) -> O,
+ R: super::Reduce<Input = O>,
+ {
+ type Reduce = R;
+
+ fn finalize(
+ self,
+ ) -> Result<
+ <<Self as super::Finalize>::Reduce as super::Reduce>::Output,
+ <<Self as super::Finalize>::Reduce as super::Reduce>::Error,
+ > {
+ Stepwise::finalize(self)
+ }
+ }
+}
+
+use std::marker::PhantomData;
+
+pub use stepped::Stepwise;
+
+/// An trait for aggregating items commonly produced in threads into a single result, without itself
+/// needing to be thread safe.
+pub trait Reduce {
+ /// The type fed to the reducer in the [`feed()`][Reduce::feed()] method.
+ ///
+ /// It's produced by a function that may run on multiple threads.
+ type Input;
+ /// The type produced in Ok(…) by [`feed()`][Reduce::feed()].
+ /// Most reducers by nature use `()` here as the value is in the aggregation.
+ /// However, some may use it to collect statistics only and return their Input
+ /// in some form as a result here for [`Stepwise`] to be useful.
+ type FeedProduce;
+ /// The type produced once by the [`finalize()`][Reduce::finalize()] method.
+ ///
+ /// For traditional reducers, this is the value produced by the entire operation.
+ /// For those made for step-wise iteration this may be aggregated statistics.
+ type Output;
+ /// The error type to use for all methods of this trait.
+ type Error;
+ /// Called each time a new `item` was produced in order to aggregate it into the final result.
+ ///
+ /// If an `Error` is returned, the entire operation will be stopped.
+ fn feed(&mut self, item: Self::Input) -> Result<Self::FeedProduce, Self::Error>;
+ /// Called once once all items where passed to `feed()`, producing the final `Output` of the operation or an `Error`.
+ fn finalize(self) -> Result<Self::Output, Self::Error>;
+}
+
+/// An identity reducer for those who want to use [`Stepwise`] or [`in_parallel()`][crate::parallel::in_parallel()]
+/// without the use of non-threaded reduction of products created in threads.
+pub struct IdentityWithResult<Input, Error> {
+ _input: PhantomData<Input>,
+ _error: PhantomData<Error>,
+}
+
+impl<Input, Error> Default for IdentityWithResult<Input, Error> {
+ fn default() -> Self {
+ IdentityWithResult {
+ _input: Default::default(),
+ _error: Default::default(),
+ }
+ }
+}
+
+impl<Input, Error> Reduce for IdentityWithResult<Input, Error> {
+ type Input = Result<Input, Self::Error>;
+ type FeedProduce = Input;
+ type Output = ();
+ type Error = Error;
+
+ fn feed(&mut self, item: Self::Input) -> Result<Self::FeedProduce, Self::Error> {
+ item
+ }
+
+ fn finalize(self) -> Result<Self::Output, Self::Error> {
+ Ok(())
+ }
+}
+
+/// A trait reflecting the `finalize()` method of [`Reduce`] implementations
+pub trait Finalize {
+ /// An implementation of [`Reduce`]
+ type Reduce: self::Reduce;
+
+ /// Similar to the [`Reduce::finalize()`] method
+ fn finalize(
+ self,
+ ) -> Result<<<Self as Finalize>::Reduce as self::Reduce>::Output, <<Self as Finalize>::Reduce as self::Reduce>::Error>;
+}
diff --git a/vendor/gix-features-0.35.0/src/parallel/serial.rs b/vendor/gix-features-0.35.0/src/parallel/serial.rs
new file mode 100644
index 000000000..7665d3ffa
--- /dev/null
+++ b/vendor/gix-features-0.35.0/src/parallel/serial.rs
@@ -0,0 +1,174 @@
+use crate::parallel::Reduce;
+
+#[cfg(not(feature = "parallel"))]
+mod not_parallel {
+ use std::sync::atomic::{AtomicBool, AtomicIsize};
+
+ /// Runs `left` and then `right`, one after another, returning their output when both are done.
+ pub fn join<O1, O2>(left: impl FnOnce() -> O1, right: impl FnOnce() -> O2) -> (O1, O2) {
+ (left(), right())
+ }
+
+ /// A scope for spawning threads.
+ pub struct Scope<'scope, 'env: 'scope> {
+ _scope: std::marker::PhantomData<&'scope mut &'scope ()>,
+ _env: std::marker::PhantomData<&'env mut &'env ()>,
+ }
+
+ pub struct ThreadBuilder;
+
+ /// Create a builder for threads which allows them to be spawned into a scope and configured prior to spawning.
+ pub fn build_thread() -> ThreadBuilder {
+ ThreadBuilder
+ }
+
+ #[allow(unsafe_code)]
+ unsafe impl Sync for Scope<'_, '_> {}
+
+ impl ThreadBuilder {
+ pub fn name(self, _new: String) -> Self {
+ self
+ }
+ pub fn spawn_scoped<'scope, 'env, F, T>(
+ &self,
+ scope: &'scope Scope<'scope, 'env>,
+ f: F,
+ ) -> std::io::Result<ScopedJoinHandle<'scope, T>>
+ where
+ F: FnOnce() -> T + 'scope,
+ T: 'scope,
+ {
+ Ok(scope.spawn(f))
+ }
+ }
+
+ impl<'scope, 'env> Scope<'scope, 'env> {
+ /// Provided with this scope, let `f` start new threads that live within it.
+ pub fn spawn<F, T>(&'scope self, f: F) -> ScopedJoinHandle<'scope, T>
+ where
+ F: FnOnce() -> T + 'scope,
+ T: 'scope,
+ {
+ ScopedJoinHandle {
+ result: f(),
+ _marker: Default::default(),
+ }
+ }
+ }
+
+ /// Runs `f` with a scope to be used for spawning threads that will not outlive the function call.
+ /// Note that this implementation will run the spawned functions immediately.
+ pub fn threads<'env, F, R>(f: F) -> R
+ where
+ F: for<'scope> FnOnce(&'scope Scope<'scope, 'env>) -> R,
+ {
+ f(&Scope {
+ _scope: Default::default(),
+ _env: Default::default(),
+ })
+ }
+
+ /// A handle that can be used to join its scoped thread.
+ ///
+ /// This struct is created by the [`Scope::spawn`] method and the
+ /// [`ScopedThreadBuilder::spawn`] method.
+ pub struct ScopedJoinHandle<'scope, T> {
+ /// Holds the result of the inner closure.
+ result: T,
+ _marker: std::marker::PhantomData<&'scope mut &'scope ()>,
+ }
+
+ impl<T> ScopedJoinHandle<'_, T> {
+ pub fn join(self) -> std::thread::Result<T> {
+ Ok(self.result)
+ }
+ pub fn is_finished(&self) -> bool {
+ true
+ }
+ }
+
+ /// An experiment to have fine-grained per-item parallelization with built-in aggregation via thread state.
+ /// This is only good for operations where near-random access isn't detrimental, so it's not usually great
+ /// for file-io as it won't make use of sorted inputs well.
+ // TODO: better docs
+ pub fn in_parallel_with_slice<I, S, R, E>(
+ input: &mut [I],
+ _thread_limit: Option<usize>,
+ new_thread_state: impl FnOnce(usize) -> S + Clone,
+ mut consume: impl FnMut(&mut I, &mut S, &AtomicIsize, &AtomicBool) -> Result<(), E> + Clone,
+ mut periodic: impl FnMut() -> Option<std::time::Duration>,
+ state_to_rval: impl FnOnce(S) -> R + Clone,
+ ) -> Result<Vec<R>, E> {
+ let mut state = new_thread_state(0);
+ let should_interrupt = &AtomicBool::default();
+ let threads_left = &AtomicIsize::default();
+ for item in input {
+ consume(item, &mut state, threads_left, should_interrupt)?;
+ if periodic().is_none() {
+ break;
+ }
+ }
+ Ok(vec![state_to_rval(state)])
+ }
+}
+
+#[cfg(not(feature = "parallel"))]
+pub use not_parallel::{build_thread, in_parallel_with_slice, join, threads, Scope, ScopedJoinHandle};
+
+/// Read items from `input` and `consume` them in a single thread, producing an output to be collected by a `reducer`,
+/// whose task is to aggregate these outputs into the final result returned by this function.
+///
+/// * `new_thread_state(thread_number) -> State` produces thread-local state once per thread to be based to `consume`
+/// * `consume(Item, &mut State) -> Output` produces an output given an input along with mutable state.
+/// * For `reducer`, see the [`Reduce`] trait
+/// * if `thread_limit` has no effect as everything is run on the main thread, but is present to keep the signature
+/// similar to the parallel version.
+///
+/// **This serial version performing all calculations on the current thread.**
+pub fn in_parallel<I, S, O, R>(
+ input: impl Iterator<Item = I>,
+ _thread_limit: Option<usize>,
+ new_thread_state: impl FnOnce(usize) -> S,
+ mut consume: impl FnMut(I, &mut S) -> O,
+ mut reducer: R,
+) -> Result<<R as Reduce>::Output, <R as Reduce>::Error>
+where
+ R: Reduce<Input = O>,
+{
+ let mut state = new_thread_state(0);
+ for item in input {
+ drop(reducer.feed(consume(item, &mut state))?);
+ }
+ reducer.finalize()
+}
+
+/// Read items from `input` and `consume` them in multiple threads,
+/// whose output output is collected by a `reducer`. Its task is to
+/// aggregate these outputs into the final result returned by this function with the benefit of not having to be thread-safe.
+/// Caall `finalize` to finish the computation, once per thread, if there was no error sending results earlier.
+///
+/// * if `thread_limit` is `Some`, the given amount of threads will be used. If `None`, all logical cores will be used.
+/// * `new_thread_state(thread_number) -> State` produces thread-local state once per thread to be based to `consume`
+/// * `consume(Item, &mut State) -> Output` produces an output given an input obtained by `input` along with mutable state initially
+/// created by `new_thread_state(…)`.
+/// * `finalize(State) -> Output` is called to potentially process remaining work that was placed in `State`.
+/// * For `reducer`, see the [`Reduce`] trait
+#[cfg(not(feature = "parallel"))]
+pub fn in_parallel_with_finalize<I, S, O, R>(
+ input: impl Iterator<Item = I>,
+ _thread_limit: Option<usize>,
+ new_thread_state: impl FnOnce(usize) -> S,
+ mut consume: impl FnMut(I, &mut S) -> O,
+ finalize: impl FnOnce(S) -> O + Send + Clone,
+ mut reducer: R,
+) -> Result<<R as Reduce>::Output, <R as Reduce>::Error>
+where
+ R: Reduce<Input = O>,
+{
+ let mut state = new_thread_state(0);
+ for item in input {
+ drop(reducer.feed(consume(item, &mut state))?);
+ }
+ reducer.feed(finalize(state))?;
+ reducer.finalize()
+}
diff --git a/vendor/gix-features-0.35.0/src/progress.rs b/vendor/gix-features-0.35.0/src/progress.rs
new file mode 100644
index 000000000..6a8c9e1bd
--- /dev/null
+++ b/vendor/gix-features-0.35.0/src/progress.rs
@@ -0,0 +1,150 @@
+//! Various `prodash` types along with various utilities for comfort.
+use std::io;
+
+#[cfg(feature = "progress-unit-bytes")]
+pub use bytesize;
+pub use prodash::{
+ self,
+ messages::MessageLevel,
+ progress::{
+ AtomicStep, Discard, DoOrDiscard, Either, Id, Step, StepShared, Task, ThroughputOnDrop, Value, UNKNOWN,
+ },
+ unit, BoxedDynNestedProgress, Count, DynNestedProgress, DynNestedProgressToNestedProgress, NestedProgress,
+ Progress, Unit,
+};
+/// A stub for the portions of the `bytesize` crate that we use internally in `gitoxide`.
+#[cfg(not(feature = "progress-unit-bytes"))]
+pub mod bytesize {
+ /// A stub for the `ByteSize` wrapper.
+ pub struct ByteSize(pub u64);
+
+ impl std::fmt::Display for ByteSize {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ self.0.fmt(f)
+ }
+ }
+}
+
+/// A unit for displaying bytes with throughput and progress percentage.
+#[cfg(feature = "progress-unit-bytes")]
+pub fn bytes() -> Option<Unit> {
+ Some(unit::dynamic_and_mode(
+ unit::Bytes,
+ unit::display::Mode::with_throughput().and_percentage(),
+ ))
+}
+
+/// A unit for displaying bytes with throughput and progress percentage.
+#[cfg(not(feature = "progress-unit-bytes"))]
+pub fn bytes() -> Option<Unit> {
+ Some(unit::label_and_mode(
+ "B",
+ unit::display::Mode::with_throughput().and_percentage(),
+ ))
+}
+
+/// A unit for displaying human readable numbers with throughput and progress percentage, and a single decimal place.
+pub fn count(name: &'static str) -> Option<Unit> {
+ count_with_decimals(name, 1)
+}
+
+/// A unit for displaying human readable numbers with `name` suffix,
+/// with throughput and progress percentage, and `decimals` decimal places.
+#[cfg(feature = "progress-unit-human-numbers")]
+pub fn count_with_decimals(name: &'static str, decimals: usize) -> Option<Unit> {
+ Some(unit::dynamic_and_mode(
+ unit::Human::new(
+ {
+ let mut f = unit::human::Formatter::new();
+ f.with_decimals(decimals);
+ f
+ },
+ name,
+ ),
+ unit::display::Mode::with_throughput().and_percentage(),
+ ))
+}
+
+/// A unit for displaying human readable numbers with `name` suffix,
+/// with throughput and progress percentage, and `decimals` decimal places.
+#[cfg(not(feature = "progress-unit-human-numbers"))]
+pub fn count_with_decimals(name: &'static str, _decimals: usize) -> Option<Unit> {
+ Some(unit::label_and_mode(
+ name,
+ unit::display::Mode::with_throughput().and_percentage(),
+ ))
+}
+
+/// A predefined unit for displaying a multi-step progress
+pub fn steps() -> Option<Unit> {
+ Some(unit::dynamic(unit::Range::new("steps")))
+}
+
+/// A structure passing every [`read`](std::io::Read::read()) call through to the contained Progress instance using [`inc_by(bytes_read)`](Count::inc_by()).
+pub struct Read<T, P> {
+ /// The implementor of [`std::io::Read`] to which progress is added
+ pub inner: T,
+ /// The progress instance receiving progress information on each invocation of `reader`
+ pub progress: P,
+}
+
+impl<T, P> io::Read for Read<T, P>
+where
+ T: io::Read,
+ P: Progress,
+{
+ fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
+ let bytes_read = self.inner.read(buf)?;
+ self.progress.inc_by(bytes_read);
+ Ok(bytes_read)
+ }
+}
+
+impl<T, P> io::BufRead for Read<T, P>
+where
+ T: io::BufRead,
+ P: Progress,
+{
+ fn fill_buf(&mut self) -> io::Result<&[u8]> {
+ self.inner.fill_buf()
+ }
+
+ fn consume(&mut self, amt: usize) {
+ self.inner.consume(amt)
+ }
+}
+
+/// A structure passing every [`write`][std::io::Write::write()] call through to the contained Progress instance using [`inc_by(bytes_written)`](Count::inc_by()).
+///
+/// This is particularly useful if the final size of the bytes to write is known or can be estimated precisely enough.
+pub struct Write<T, P> {
+ /// The implementor of [`std::io::Write`] to which progress is added
+ pub inner: T,
+ /// The progress instance receiving progress information on each invocation of `reader`
+ pub progress: P,
+}
+
+impl<T, P> io::Write for Write<T, P>
+where
+ T: io::Write,
+ P: Progress,
+{
+ fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
+ let written = self.inner.write(buf)?;
+ self.progress.inc_by(written);
+ Ok(written)
+ }
+
+ fn flush(&mut self) -> io::Result<()> {
+ self.inner.flush()
+ }
+}
+
+impl<T, P> io::Seek for Write<T, P>
+where
+ T: io::Seek,
+{
+ fn seek(&mut self, pos: io::SeekFrom) -> io::Result<u64> {
+ self.inner.seek(pos)
+ }
+}
diff --git a/vendor/gix-features-0.35.0/src/threading.rs b/vendor/gix-features-0.35.0/src/threading.rs
new file mode 100644
index 000000000..5f92ba2a8
--- /dev/null
+++ b/vendor/gix-features-0.35.0/src/threading.rs
@@ -0,0 +1,110 @@
+//! Type definitions for putting shared ownership and synchronized mutation behind the `threading` feature toggle.
+//!
+//! That way, single-threaded applications will not have to use thread-safe primitives, and simply do not specify the 'threading' feature.
+
+#[cfg(feature = "parallel")]
+mod _impl {
+ use std::sync::Arc;
+
+ /// A thread-safe cell which can be written to only once.
+ #[cfg(feature = "once_cell")]
+ pub type OnceCell<T> = once_cell::sync::OnceCell<T>;
+ /// A reference counted pointer type for shared ownership.
+ pub type OwnShared<T> = Arc<T>;
+ /// A synchronization primitive which can start read-only and transition to support mutation.
+ pub type MutableOnDemand<T> = parking_lot::RwLock<T>;
+ /// A synchronization primitive which provides read-write access right away.
+ pub type Mutable<T> = parking_lot::Mutex<T>;
+ /// A guarded reference suitable for safekeeping in a struct.
+ pub type RefGuard<'a, T> = parking_lot::RwLockReadGuard<'a, T>;
+ /// A mapped reference created from a `RefGuard`
+ pub type MappedRefGuard<'a, U> = parking_lot::MappedRwLockReadGuard<'a, U>;
+
+ /// Get a shared reference through a [`MutableOnDemand`] for read-only access.
+ pub fn get_ref<T>(v: &MutableOnDemand<T>) -> RefGuard<'_, T> {
+ v.read()
+ }
+
+ /// Get a mutable reference through a [`MutableOnDemand`] for read-write access.
+ pub fn get_mut<T>(v: &MutableOnDemand<T>) -> parking_lot::RwLockWriteGuard<'_, T> {
+ v.write()
+ }
+
+ /// Get a mutable reference to the underlying data, with semantics similar to [Arc::make_mut()].
+ pub fn make_mut<T: Clone>(this: &mut OwnShared<T>) -> &mut T {
+ OwnShared::make_mut(this)
+ }
+
+ /// Get a mutable reference through a [`Mutable`] for read-write access.
+ pub fn lock<T>(v: &Mutable<T>) -> parking_lot::MutexGuard<'_, T> {
+ v.lock()
+ }
+
+ /// Downgrade a handle previously obtained with [`get_mut()`] to drop mutation support.
+ pub fn downgrade_mut_to_ref<'a, T>(
+ v: parking_lot::RwLockWriteGuard<'a, T>,
+ _orig: &'a MutableOnDemand<T>,
+ ) -> RefGuard<'a, T> {
+ parking_lot::RwLockWriteGuard::downgrade(v)
+ }
+
+ /// Map a read guard into a sub-type it contains.
+ pub fn map_ref<T, U: ?Sized>(v: RefGuard<'_, T>, f: impl FnOnce(&T) -> &U) -> MappedRefGuard<'_, U> {
+ parking_lot::RwLockReadGuard::map(v, f)
+ }
+}
+
+#[cfg(not(feature = "parallel"))]
+mod _impl {
+ use std::{
+ cell::{Ref, RefCell, RefMut},
+ rc::Rc,
+ };
+
+ /// A thread-safe cell which can be written to only once.
+ #[cfg(feature = "once_cell")]
+ pub type OnceCell<T> = once_cell::unsync::OnceCell<T>;
+ /// A reference counted pointer type for shared ownership.
+ pub type OwnShared<T> = Rc<T>;
+ /// A synchronization primitive which can start read-only and transition to support mutation.
+ pub type MutableOnDemand<T> = RefCell<T>;
+ /// A synchronization primitive which provides read-write access right away.
+ pub type Mutable<T> = RefCell<T>;
+ /// A guarded reference suitable for safekeeping in a struct.
+ pub type RefGuard<'a, T> = Ref<'a, T>;
+ /// A mapped reference created from a RefGuard
+ pub type MappedRefGuard<'a, U> = Ref<'a, U>;
+
+ /// Get a shared reference through a [`MutableOnDemand`] for read-only access.
+ pub fn get_mut<T>(v: &RefCell<T>) -> RefMut<'_, T> {
+ v.borrow_mut()
+ }
+
+ /// Get a mutable reference to the underlying data, with semantics similar to [Rc::make_mut()].
+ pub fn make_mut<T: Clone>(this: &mut OwnShared<T>) -> &mut T {
+ OwnShared::make_mut(this)
+ }
+
+ /// Get a mutable reference through a [`Mutable`] for read-write access.
+ pub fn lock<T>(v: &Mutable<T>) -> RefMut<'_, T> {
+ v.borrow_mut()
+ }
+
+ /// Get a mutable reference through a [`MutableOnDemand`] for read-write access.
+ pub fn get_ref<T>(v: &RefCell<T>) -> RefGuard<'_, T> {
+ v.borrow()
+ }
+
+ /// Downgrade a handle previously obtained with [`upgrade_ref_to_mut()`] to drop mutation support.
+ pub fn downgrade_mut_to_ref<'a, T>(v: RefMut<'a, T>, orig: &'a RefCell<T>) -> RefGuard<'a, T> {
+ drop(v);
+ orig.borrow()
+ }
+
+ /// Map a read guard into a sub-type it contains.
+ pub fn map_ref<T, U: ?Sized>(v: RefGuard<'_, T>, f: impl FnOnce(&T) -> &U) -> MappedRefGuard<'_, U> {
+ Ref::map(v, f)
+ }
+}
+
+pub use _impl::*;
diff --git a/vendor/gix-features-0.35.0/src/zlib/mod.rs b/vendor/gix-features-0.35.0/src/zlib/mod.rs
new file mode 100644
index 000000000..f55660075
--- /dev/null
+++ b/vendor/gix-features-0.35.0/src/zlib/mod.rs
@@ -0,0 +1,52 @@
+pub use flate2::{Decompress, Status};
+
+/// non-streaming interfaces for decompression
+pub mod inflate {
+ /// The error returned by various [Inflate methods][super::Inflate]
+ #[derive(Debug, thiserror::Error)]
+ #[allow(missing_docs)]
+ pub enum Error {
+ #[error("Could not write all bytes when decompressing content")]
+ WriteInflated(#[from] std::io::Error),
+ #[error("Could not decode zip stream, status was '{0:?}'")]
+ Inflate(#[from] flate2::DecompressError),
+ #[error("The zlib status indicated an error, status was '{0:?}'")]
+ Status(flate2::Status),
+ }
+}
+
+/// Decompress a few bytes of a zlib stream without allocation
+pub struct Inflate {
+ /// The actual decompressor doing all the work.
+ pub state: Decompress,
+}
+
+impl Default for Inflate {
+ fn default() -> Self {
+ Inflate {
+ state: Decompress::new(true),
+ }
+ }
+}
+
+impl Inflate {
+ /// Run the decompressor exactly once. Cannot be run multiple times
+ pub fn once(&mut self, input: &[u8], out: &mut [u8]) -> Result<(flate2::Status, usize, usize), inflate::Error> {
+ let before_in = self.state.total_in();
+ let before_out = self.state.total_out();
+ let status = self.state.decompress(input, out, flate2::FlushDecompress::None)?;
+ Ok((
+ status,
+ (self.state.total_in() - before_in) as usize,
+ (self.state.total_out() - before_out) as usize,
+ ))
+ }
+
+ /// Ready this instance for decoding another data stream.
+ pub fn reset(&mut self) {
+ self.state.reset(true);
+ }
+}
+
+///
+pub mod stream;
diff --git a/vendor/gix-features-0.35.0/src/zlib/stream/deflate/mod.rs b/vendor/gix-features-0.35.0/src/zlib/stream/deflate/mod.rs
new file mode 100644
index 000000000..567e8fece
--- /dev/null
+++ b/vendor/gix-features-0.35.0/src/zlib/stream/deflate/mod.rs
@@ -0,0 +1,113 @@
+use flate2::Compress;
+
+const BUF_SIZE: usize = 4096 * 8;
+
+/// A utility to zlib compress anything that is written via its [Write][std::io::Write] implementation.
+///
+/// Be sure to call `flush()` when done to finalize the deflate stream.
+pub struct Write<W> {
+ compressor: Compress,
+ inner: W,
+ buf: [u8; BUF_SIZE],
+}
+
+impl<W> Clone for Write<W>
+where
+ W: Clone,
+{
+ fn clone(&self) -> Self {
+ Write {
+ compressor: impls::new_compress(),
+ inner: self.inner.clone(),
+ buf: self.buf,
+ }
+ }
+}
+
+mod impls {
+ use std::io;
+
+ use flate2::{Compress, Compression, FlushCompress, Status};
+
+ use crate::zlib::stream::deflate;
+
+ pub(crate) fn new_compress() -> Compress {
+ Compress::new(Compression::fast(), true)
+ }
+
+ impl<W> deflate::Write<W>
+ where
+ W: io::Write,
+ {
+ /// Create a new instance writing compressed bytes to `inner`.
+ pub fn new(inner: W) -> deflate::Write<W> {
+ deflate::Write {
+ compressor: new_compress(),
+ inner,
+ buf: [0; deflate::BUF_SIZE],
+ }
+ }
+
+ /// Reset the compressor, starting a new compression stream.
+ ///
+ /// That way multiple streams can be written to the same inner writer.
+ pub fn reset(&mut self) {
+ self.compressor.reset();
+ }
+
+ /// Consume `self` and return the inner writer.
+ pub fn into_inner(self) -> W {
+ self.inner
+ }
+
+ fn write_inner(&mut self, mut buf: &[u8], flush: FlushCompress) -> io::Result<usize> {
+ let total_in_when_start = self.compressor.total_in();
+ loop {
+ let last_total_in = self.compressor.total_in();
+ let last_total_out = self.compressor.total_out();
+
+ let status = self
+ .compressor
+ .compress(buf, &mut self.buf, flush)
+ .map_err(|err| io::Error::new(io::ErrorKind::Other, err))?;
+
+ let written = self.compressor.total_out() - last_total_out;
+ if written > 0 {
+ self.inner.write_all(&self.buf[..written as usize])?;
+ }
+
+ match status {
+ Status::StreamEnd => return Ok((self.compressor.total_in() - total_in_when_start) as usize),
+ Status::Ok | Status::BufError => {
+ let consumed = self.compressor.total_in() - last_total_in;
+ buf = &buf[consumed as usize..];
+
+ // output buffer still makes progress
+ if self.compressor.total_out() > last_total_out {
+ continue;
+ }
+ // input still makes progress
+ if self.compressor.total_in() > last_total_in {
+ continue;
+ }
+ // input also makes no progress anymore, need more so leave with what we have
+ return Ok((self.compressor.total_in() - total_in_when_start) as usize);
+ }
+ }
+ }
+ }
+ }
+
+ impl<W: io::Write> io::Write for deflate::Write<W> {
+ fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
+ self.write_inner(buf, FlushCompress::None)
+ }
+
+ fn flush(&mut self) -> io::Result<()> {
+ self.write_inner(&[], FlushCompress::Finish).map(|_| ())
+ }
+ }
+}
+
+#[cfg(test)]
+mod tests;
diff --git a/vendor/gix-features-0.35.0/src/zlib/stream/deflate/tests.rs b/vendor/gix-features-0.35.0/src/zlib/stream/deflate/tests.rs
new file mode 100644
index 000000000..7c5865e0b
--- /dev/null
+++ b/vendor/gix-features-0.35.0/src/zlib/stream/deflate/tests.rs
@@ -0,0 +1,101 @@
+mod deflate_stream {
+ use std::{
+ io,
+ io::{Read, Write},
+ };
+
+ use bstr::ByteSlice;
+ use flate2::Decompress;
+
+ use crate::zlib::stream::deflate;
+
+ /// Provide streaming decompression using the `std::io::Read` trait.
+ /// If `std::io::BufReader` is used, an allocation for the input buffer will be performed.
+ struct InflateReader<R> {
+ inner: R,
+ decompressor: Decompress,
+ }
+
+ impl<R> InflateReader<R>
+ where
+ R: io::BufRead,
+ {
+ pub fn from_read(read: R) -> InflateReader<R> {
+ InflateReader {
+ decompressor: Decompress::new(true),
+ inner: read,
+ }
+ }
+ }
+
+ impl<R> io::Read for InflateReader<R>
+ where
+ R: io::BufRead,
+ {
+ fn read(&mut self, into: &mut [u8]) -> io::Result<usize> {
+ crate::zlib::stream::inflate::read(&mut self.inner, &mut self.decompressor, into)
+ }
+ }
+
+ #[test]
+ fn small_file_decompress() -> Result<(), Box<dyn std::error::Error>> {
+ fn fixture_path(path: &str) -> std::path::PathBuf {
+ std::path::PathBuf::from("tests/fixtures").join(path)
+ }
+ let r = InflateReader::from_read(io::BufReader::new(std::fs::File::open(fixture_path(
+ "objects/37/d4e6c5c48ba0d245164c4e10d5f41140cab980",
+ ))?));
+ let mut bytes = r.bytes();
+ let content = bytes.by_ref().take(16).collect::<Result<Vec<_>, _>>()?;
+ assert_eq!(content.as_slice().as_bstr(), b"blob 9\0hi there\n".as_bstr());
+ assert!(bytes.next().is_none());
+ Ok(())
+ }
+
+ #[test]
+ fn all_at_once() -> Result<(), Box<dyn std::error::Error>> {
+ let mut w = deflate::Write::new(Vec::new());
+ assert_eq!(w.write(b"hello")?, 5);
+ w.flush()?;
+
+ let out = w.inner;
+ assert!(out.len() == 12 || out.len() == 13);
+
+ assert_deflate_buffer(out, b"hello")
+ }
+
+ fn assert_deflate_buffer(out: Vec<u8>, expected: &[u8]) -> Result<(), Box<dyn std::error::Error>> {
+ let mut actual = Vec::new();
+ InflateReader::from_read(out.as_slice()).read_to_end(&mut actual)?;
+ assert_eq!(actual, expected);
+ Ok(())
+ }
+
+ #[test]
+ fn big_file_small_writes() -> Result<(), Box<dyn std::error::Error>> {
+ let mut w = deflate::Write::new(Vec::new());
+ let bytes = include_bytes!(
+ "../../../../../gix-odb/tests/fixtures/objects/pack/pack-11fdfa9e156ab73caae3b6da867192221f2089c2.pack"
+ );
+ for chunk in bytes.chunks(2) {
+ assert_eq!(w.write(chunk)?, chunk.len());
+ }
+ w.flush()?;
+
+ assert_deflate_buffer(w.inner, bytes)
+ }
+
+ #[test]
+ fn big_file_a_few_big_writes() -> Result<(), Box<dyn std::error::Error>> {
+ let mut w = deflate::Write::new(Vec::new());
+ let bytes = include_bytes!(
+ "../../../../../gix-odb/tests/fixtures/objects/pack/pack-11fdfa9e156ab73caae3b6da867192221f2089c2.pack"
+ );
+ for chunk in bytes.chunks(4096 * 9) {
+ assert_eq!(w.write(chunk)?, chunk.len());
+ }
+ w.flush()?;
+
+ assert_deflate_buffer(w.inner, bytes)
+ }
+}
diff --git a/vendor/gix-features-0.35.0/src/zlib/stream/inflate.rs b/vendor/gix-features-0.35.0/src/zlib/stream/inflate.rs
new file mode 100644
index 000000000..11dc92800
--- /dev/null
+++ b/vendor/gix-features-0.35.0/src/zlib/stream/inflate.rs
@@ -0,0 +1,40 @@
+use std::{io, io::BufRead};
+
+use flate2::{Decompress, FlushDecompress, Status};
+
+/// Read bytes from `rd` and decompress them using `state` into a pre-allocated fitting buffer `dst`, returning the amount of bytes written.
+pub fn read(rd: &mut impl BufRead, state: &mut Decompress, mut dst: &mut [u8]) -> io::Result<usize> {
+ let mut total_written = 0;
+ loop {
+ let (written, consumed, ret, eof);
+ {
+ let input = rd.fill_buf()?;
+ eof = input.is_empty();
+ let before_out = state.total_out();
+ let before_in = state.total_in();
+ let flush = if eof {
+ FlushDecompress::Finish
+ } else {
+ FlushDecompress::None
+ };
+ ret = state.decompress(input, dst, flush);
+ written = (state.total_out() - before_out) as usize;
+ total_written += written;
+ dst = &mut dst[written..];
+ consumed = (state.total_in() - before_in) as usize;
+ }
+ rd.consume(consumed);
+
+ match ret {
+ // The stream has officially ended, nothing more to do here.
+ Ok(Status::StreamEnd) => return Ok(total_written),
+ // Either input our output are depleted even though the stream is not depleted yet.
+ Ok(Status::Ok | Status::BufError) if eof || dst.is_empty() => return Ok(total_written),
+ // Some progress was made in both the input and the output, it must continue to reach the end.
+ Ok(Status::Ok | Status::BufError) if consumed != 0 || written != 0 => continue,
+ // A strange state, where zlib makes no progress but isn't done either. Call it out.
+ Ok(Status::Ok | Status::BufError) => unreachable!("Definitely a bug somewhere"),
+ Err(..) => return Err(io::Error::new(io::ErrorKind::InvalidInput, "corrupt deflate stream")),
+ }
+ }
+}
diff --git a/vendor/gix-features-0.35.0/src/zlib/stream/mod.rs b/vendor/gix-features-0.35.0/src/zlib/stream/mod.rs
new file mode 100644
index 000000000..7fb239d36
--- /dev/null
+++ b/vendor/gix-features-0.35.0/src/zlib/stream/mod.rs
@@ -0,0 +1,4 @@
+///
+pub mod deflate;
+///
+pub mod inflate;
diff --git a/vendor/gix-features-0.35.0/tests/features.rs b/vendor/gix-features-0.35.0/tests/features.rs
new file mode 100644
index 000000000..fc1f25c36
--- /dev/null
+++ b/vendor/gix-features-0.35.0/tests/features.rs
@@ -0,0 +1 @@
+mod trace;
diff --git a/vendor/gix-features-0.35.0/tests/hash.rs b/vendor/gix-features-0.35.0/tests/hash.rs
new file mode 100644
index 000000000..c8e48da57
--- /dev/null
+++ b/vendor/gix-features-0.35.0/tests/hash.rs
@@ -0,0 +1,13 @@
+use gix_features::hash::Sha1;
+
+#[cfg(not(feature = "fast-sha1"))]
+#[test]
+fn size_of_sha1() {
+ assert_eq!(std::mem::size_of::<Sha1>(), 96)
+}
+
+#[cfg(feature = "fast-sha1")]
+#[test]
+fn size_of_sha1() {
+ assert_eq!(std::mem::size_of::<Sha1>(), 104)
+}
diff --git a/vendor/gix-features-0.35.0/tests/parallel/in_order_iter.rs b/vendor/gix-features-0.35.0/tests/parallel/in_order_iter.rs
new file mode 100644
index 000000000..9e1881215
--- /dev/null
+++ b/vendor/gix-features-0.35.0/tests/parallel/in_order_iter.rs
@@ -0,0 +1,54 @@
+use std::convert::Infallible;
+
+use gix_features::parallel::InOrderIter;
+
+#[test]
+fn in_order_stays_in_order() {
+ assert_eq!(
+ InOrderIter::from(vec![Ok::<_, Infallible>((0usize, 'a')), Ok((1, 'b')), Ok((2, 'c'))].into_iter())
+ .collect::<Result<Vec<_>, _>>()
+ .expect("infallible"),
+ vec!['a', 'b', 'c']
+ )
+}
+
+#[test]
+fn out_of_order_items_are_held_until_the_sequence_is_complete() {
+ assert_eq!(
+ InOrderIter::from(
+ vec![
+ Ok::<_, Infallible>((2usize, 'c')),
+ Ok((1, 'b')),
+ Ok((0, 'a')),
+ Ok((3, 'd'))
+ ]
+ .into_iter()
+ )
+ .collect::<Result<Vec<_>, _>>()
+ .expect("infallible"),
+ vec!['a', 'b', 'c', 'd']
+ )
+}
+
+#[test]
+fn in_sequence_errors_immediately_trigger_a_fuse() {
+ let mut iter = InOrderIter::from(vec![Ok::<_, &'static str>((0usize, 'a')), Err("err"), Ok((1, 'b'))].into_iter());
+ assert_eq!(iter.next(), Some(Ok('a')));
+ assert_eq!(iter.next(), Some(Err("err")));
+ assert_eq!(
+ iter.next(),
+ None,
+ "fuse should have triggered so we don't see anything else"
+ );
+}
+
+#[test]
+fn out_of_sequence_errors_immediately_trigger_a_fuse() {
+ let mut iter = InOrderIter::from(vec![Ok::<_, &'static str>((1usize, 'b')), Err("err"), Ok((0, 'a'))].into_iter());
+ assert_eq!(iter.next(), Some(Err("err")));
+ assert_eq!(
+ iter.next(),
+ None,
+ "fuse should have triggered so we don't see anything else"
+ );
+}
diff --git a/vendor/gix-features-0.35.0/tests/parallel/mod.rs b/vendor/gix-features-0.35.0/tests/parallel/mod.rs
new file mode 100644
index 000000000..cc824332d
--- /dev/null
+++ b/vendor/gix-features-0.35.0/tests/parallel/mod.rs
@@ -0,0 +1,125 @@
+//! Tests that are working similarly in parallel and serial mode
+use gix_features::parallel;
+
+mod in_order_iter;
+
+#[derive(Default)]
+struct Adder {
+ count: usize,
+}
+
+impl parallel::Reduce for Adder {
+ type Input = usize;
+ type FeedProduce = usize;
+ type Output = usize;
+ type Error = ();
+
+ fn feed(&mut self, item: Self::Input) -> Result<Self::FeedProduce, Self::Error> {
+ self.count += item;
+ Ok(item)
+ }
+
+ fn finalize(self) -> Result<Self::Output, Self::Error> {
+ Ok(self.count)
+ }
+}
+
+#[test]
+fn in_parallel() {
+ let res = parallel::in_parallel(
+ std::iter::from_fn(|| Some(1)).take(100),
+ None,
+ |_n| (),
+ |input, _state| input,
+ Adder::default(),
+ )
+ .expect("successful computation");
+ assert_eq!(res, 100);
+}
+
+#[test]
+fn in_parallel_with_mut_slice_in_chunks() {
+ let num_items = 33;
+ let mut input: Vec<_> = std::iter::repeat(1).take(num_items).collect();
+ let counts = parallel::in_parallel_with_slice(
+ &mut input,
+ None,
+ |_| 0usize,
+ |item, acc, _threads_eft, _should_interrupt| {
+ *acc += *item;
+ *item += 1;
+ Ok::<_, ()>(())
+ },
+ || Some(std::time::Duration::from_millis(10)),
+ std::convert::identity,
+ )
+ .unwrap();
+ let expected = std::iter::repeat(1).take(num_items).sum::<usize>();
+ assert_eq!(counts.iter().sum::<usize>(), expected);
+ assert_eq!(input.iter().sum::<usize>(), expected * 2, "we increment each entry");
+}
+
+#[test]
+fn stepped_reduce_next() {
+ let mut iter = parallel::reduce::Stepwise::new(
+ std::iter::from_fn(|| Some(1)).take(100),
+ None,
+ |_n| (),
+ |input, _state| input,
+ Adder::default(),
+ );
+
+ let mut aggregate = 0;
+ for value in iter.by_ref() {
+ aggregate += value.expect("success");
+ }
+ assert_eq!(aggregate, 100);
+}
+
+#[test]
+fn stepped_reduce_ref_input_and_consume() {
+ let seq = std::sync::Arc::new(vec![0usize, 1, 2]);
+ struct ArcIter(std::sync::Arc<Vec<usize>>, usize);
+ impl Iterator for ArcIter {
+ type Item = usize;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ let n = self.0.get(self.1).copied();
+ self.1 += 1;
+ n
+ }
+ }
+
+ let mut iter = parallel::reduce::Stepwise::new(
+ ArcIter(seq.clone(), 0).enumerate(),
+ None,
+ {
+ let seq = std::sync::Arc::clone(&seq);
+ move |_n| seq.len()
+ },
+ {
+ let seq = std::sync::Arc::clone(&seq);
+ move |(idx, ref_val): (usize, usize), _state| seq[idx] * ref_val
+ },
+ Adder::default(),
+ );
+
+ let mut aggregate = 0;
+ for value in iter.by_ref() {
+ aggregate += value.expect("success");
+ }
+ assert_eq!(aggregate, 5);
+}
+
+#[test]
+fn stepped_reduce_finalize() {
+ let iter = parallel::reduce::Stepwise::new(
+ std::iter::from_fn(|| Some(1)).take(100),
+ None,
+ |_n| (),
+ |input, _state| input,
+ Adder::default(),
+ );
+
+ assert_eq!(iter.finalize().expect("success"), 100);
+}
diff --git a/vendor/gix-features-0.35.0/tests/parallel_shared.rs b/vendor/gix-features-0.35.0/tests/parallel_shared.rs
new file mode 100644
index 000000000..055a899ea
--- /dev/null
+++ b/vendor/gix-features-0.35.0/tests/parallel_shared.rs
@@ -0,0 +1 @@
+mod parallel;
diff --git a/vendor/gix-features-0.35.0/tests/parallel_shared_threaded.rs b/vendor/gix-features-0.35.0/tests/parallel_shared_threaded.rs
new file mode 100644
index 000000000..055a899ea
--- /dev/null
+++ b/vendor/gix-features-0.35.0/tests/parallel_shared_threaded.rs
@@ -0,0 +1 @@
+mod parallel;
diff --git a/vendor/gix-features-0.35.0/tests/parallel_threaded.rs b/vendor/gix-features-0.35.0/tests/parallel_threaded.rs
new file mode 100644
index 000000000..05f49d195
--- /dev/null
+++ b/vendor/gix-features-0.35.0/tests/parallel_threaded.rs
@@ -0,0 +1,122 @@
+mod optimize_chunk_size_and_thread_limit {
+ use gix_features::parallel::optimize_chunk_size_and_thread_limit;
+
+ #[test]
+ fn not_enough_chunks_for_threads() {
+ assert_eq!(
+ optimize_chunk_size_and_thread_limit(1, Some(10), None, Some(10)),
+ (1, Some(5), 5)
+ );
+ assert_eq!(
+ optimize_chunk_size_and_thread_limit(1, Some(10), Some(3), Some(10)),
+ (1, Some(3), 3),
+ "the thread limit is always respected"
+ );
+ }
+
+ #[test]
+ fn some_more_chunks_per_thread() {
+ assert_eq!(
+ optimize_chunk_size_and_thread_limit(1, Some(30), None, Some(10)),
+ (1, Some(10), 10)
+ );
+ assert_eq!(
+ optimize_chunk_size_and_thread_limit(1, Some(30), Some(5), Some(10)),
+ (3, Some(5), 5),
+ "the thread limit is always respected"
+ );
+ }
+
+ #[test]
+ fn chunk_size_too_small() {
+ assert_eq!(
+ optimize_chunk_size_and_thread_limit(1, Some(100), None, Some(10)),
+ (5, Some(10), 10)
+ );
+ assert_eq!(
+ optimize_chunk_size_and_thread_limit(1, Some(100), Some(5), Some(10)),
+ (10, Some(5), 5),
+ "the thread limit is always respected"
+ );
+ }
+
+ #[test]
+ fn chunk_size_too_big() {
+ assert_eq!(
+ optimize_chunk_size_and_thread_limit(50, Some(100), None, Some(10)),
+ (5, Some(10), 10)
+ );
+ assert_eq!(
+ optimize_chunk_size_and_thread_limit(50, Some(100), Some(5), Some(10)),
+ (10, Some(5), 5),
+ "the thread limit is always respected"
+ );
+ }
+
+ mod unknown_chunk_count {
+ use gix_features::parallel::optimize_chunk_size_and_thread_limit;
+
+ #[test]
+ fn medium_chunk_size_many_threads() {
+ assert_eq!(
+ optimize_chunk_size_and_thread_limit(50, None, None, Some(4)),
+ (50, Some(4), 4),
+ "really, what do we know"
+ );
+ }
+
+ #[test]
+ fn medium_chunk_size_single_thread() {
+ assert_eq!(
+ optimize_chunk_size_and_thread_limit(50, None, None, Some(1)),
+ (50, Some(1), 1),
+ "single threaded - we don't touch that"
+ );
+ }
+
+ #[test]
+ fn small_chunk_size_single_thread() {
+ assert_eq!(
+ optimize_chunk_size_and_thread_limit(1, None, None, Some(1)),
+ (1, Some(1), 1),
+ "single threaded - we don't touch that"
+ );
+ }
+
+ #[test]
+ fn small_chunk_size_many_threads() {
+ assert_eq!(
+ optimize_chunk_size_and_thread_limit(1, None, None, Some(4)),
+ (50, Some(4), 4),
+ "we prefer an arbitrary number, which should really be based on effort, but the caller has to adjust for that"
+ );
+ }
+ }
+
+ mod real_values {
+ use gix_features::parallel::optimize_chunk_size_and_thread_limit;
+
+ #[test]
+ fn linux_kernel_pack_my_machine_lookup() {
+ assert_eq!(
+ optimize_chunk_size_and_thread_limit(10000, Some(7_500_000), None, Some(4)),
+ (1000, Some(4), 4),
+ "the bucket size is capped actually, somewhat arbitrarily"
+ );
+ }
+
+ #[test]
+ fn linux_kernel_pack_my_machine_indexed() {
+ assert_eq!(
+ optimize_chunk_size_and_thread_limit(1, None, None, Some(4)),
+ (50, Some(4), 4),
+ "low values are raised to arbitrary value"
+ );
+ assert_eq!(
+ optimize_chunk_size_and_thread_limit(10000, None, None, Some(4)),
+ (1000, Some(4), 4),
+ "high values are capped"
+ );
+ }
+ }
+}
diff --git a/vendor/gix-features-0.35.0/tests/pipe.rs b/vendor/gix-features-0.35.0/tests/pipe.rs
new file mode 100644
index 000000000..38cd8e598
--- /dev/null
+++ b/vendor/gix-features-0.35.0/tests/pipe.rs
@@ -0,0 +1,117 @@
+mod io {
+ use std::io::{BufRead, ErrorKind, Read, Write};
+
+ use gix_features::io;
+
+ #[test]
+ fn threaded_read_to_end() {
+ let (mut writer, mut reader) = gix_features::io::pipe::unidirectional(0);
+
+ let message = "Hello, world!";
+ std::thread::spawn(move || {
+ writer
+ .write_all(message.as_bytes())
+ .expect("writes to work if reader is present")
+ });
+
+ let mut received = String::new();
+ reader.read_to_string(&mut received).unwrap();
+
+ assert_eq!(&received, message);
+ }
+
+ #[test]
+ fn lack_of_reader_fails_with_broken_pipe() {
+ let (mut writer, _) = io::pipe::unidirectional(0);
+ assert_eq!(
+ writer.write_all(b"must fail").unwrap_err().kind(),
+ ErrorKind::BrokenPipe
+ );
+ }
+ #[test]
+ fn line_reading_one_by_one() {
+ let (mut writer, mut reader) = io::pipe::unidirectional(2);
+ writer.write_all(b"a\n").expect("success");
+ writer.write_all(b"b\nc").expect("success");
+ drop(writer);
+ let mut buf = String::new();
+ for expected in &["a\n", "b\n", "c"] {
+ buf.clear();
+ assert_eq!(reader.read_line(&mut buf).expect("success"), expected.len());
+ assert_eq!(buf, *expected);
+ }
+ }
+
+ #[test]
+ fn line_reading() {
+ let (mut writer, reader) = io::pipe::unidirectional(2);
+ writer.write_all(b"a\n").expect("success");
+ writer.write_all(b"b\nc\n").expect("success");
+ drop(writer);
+ assert_eq!(
+ reader.lines().map_while(Result::ok).collect::<Vec<_>>(),
+ vec!["a", "b", "c"]
+ )
+ }
+
+ #[test]
+ fn writer_can_inject_errors() {
+ let (writer, mut reader) = io::pipe::unidirectional(1);
+ writer
+ .channel
+ .send(Err(std::io::Error::new(std::io::ErrorKind::Other, "the error")))
+ .expect("send success");
+ let mut buf = [0];
+ assert_eq!(
+ reader.read(&mut buf).unwrap_err().to_string(),
+ "the error",
+ "using Read trait, errors are propagated"
+ );
+
+ writer
+ .channel
+ .send(Err(std::io::Error::new(std::io::ErrorKind::Other, "the error")))
+ .expect("send success");
+ assert_eq!(
+ reader.fill_buf().unwrap_err().to_string(),
+ "the error",
+ "using BufRead trait, errors are propagated"
+ );
+ }
+
+ #[test]
+ fn continue_on_empty_writes() {
+ let (mut writer, mut reader) = io::pipe::unidirectional(2);
+ writer.write_all(&[]).expect("write successful and non-blocking");
+ let input = b"hello";
+ writer
+ .write_all(input)
+ .expect("second write works as well as there is capacity");
+ let mut buf = vec![0u8; input.len()];
+ assert_eq!(reader.read(&mut buf).expect("read succeeds"), input.len());
+ assert_eq!(buf, &input[..]);
+ }
+
+ #[test]
+ fn small_reads() {
+ const BLOCK_SIZE: usize = 20;
+ let block_count = 20;
+ let (mut writer, mut reader) = io::pipe::unidirectional(4);
+ std::thread::spawn(move || {
+ for _ in 0..block_count {
+ let data = &[0; BLOCK_SIZE];
+ writer.write_all(data).unwrap();
+ }
+ });
+
+ let mut small_read_buf = [0; BLOCK_SIZE / 2];
+ let mut bytes_read = 0;
+ while let Ok(size) = reader.read(&mut small_read_buf) {
+ if size == 0 {
+ break;
+ }
+ bytes_read += size;
+ }
+ assert_eq!(block_count * BLOCK_SIZE, bytes_read);
+ }
+}
diff --git a/vendor/gix-features-0.35.0/tests/trace/mod.rs b/vendor/gix-features-0.35.0/tests/trace/mod.rs
new file mode 100644
index 000000000..614a0bb62
--- /dev/null
+++ b/vendor/gix-features-0.35.0/tests/trace/mod.rs
@@ -0,0 +1,15 @@
+use gix_features::trace::{coarse, detail, span};
+#[test]
+fn span() {
+ let _x = span!(gix_features::trace::Level::Coarse, "hello");
+ span!(gix_features::trace::Level::Coarse, "hello", x = "value", y = 42);
+ span!(target: "other", gix_features::trace::Level::Coarse, "hello", x = "value", y = 42);
+
+ let _x = coarse!("hello");
+ coarse!("hello", x = "value", y = 42);
+ coarse!(target: "other", "hello", x = "value", y = 42);
+
+ let _y = detail!("hello");
+ detail!("hello", x = "value", y = 42);
+ detail!(target: "other", "hello", x = "value", y = 42);
+}
diff --git a/vendor/gix-features/.cargo-checksum.json b/vendor/gix-features/.cargo-checksum.json
index 086fdc237..906c5fecc 100644
--- a/vendor/gix-features/.cargo-checksum.json
+++ b/vendor/gix-features/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"ad033e719adbd1f2d77a83005e05e205ab72271ad0119d49743f6defee9da073","Cargo.toml":"3c40a4a3227333b290498f1d2b3ed975165704007f95f2dbdeefe75638a7761e","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/cache.rs":"0f66cbbe9f5808b21ee255e157a88e2cf7717427214a08b5b9b4f65e4153a617","src/decode.rs":"bf614320c6b69556da40d8412c73fb6a8648c80b7d75b9b2525eb62ac6c8d802","src/fs.rs":"cdcd94974e87e64e98d227876c57e4c198f7920538621b726c0d02466cbed691","src/hash.rs":"62a6c705a9dc7c03214f55bb0f9b2607dbecac5eed81b4883bc5d9970afdb072","src/interrupt.rs":"e2cc5cf58d596ffff9d6b91952a659e4cb7211cb62423b520737abe98a8c25de","src/io.rs":"031f3a9aefb8eff48b98d5794d9c5f277781a4e1ad6ba22f43d79f5ce5b70e14","src/lib.rs":"3b1c85dc37cfc3f1240b5bfe6ba1b0ad70361e3c4f992c1c06badf295bf2056a","src/parallel/eager_iter.rs":"6ab493e6d868c3ac64f4038934a6a71d0d0cbd6e52c4addeec54887aaeab9e8c","src/parallel/in_order.rs":"a1c8c2f6ee4a91d6103f3fc6f27525e309cccc49ffc661d1403dbcdc57d120ad","src/parallel/in_parallel.rs":"4a24250843a3eb0fabe272eeec53bfd5d2c838cdff9e66fb6827fd0c85b81e78","src/parallel/mod.rs":"87abd8147a53ec8d02defd9044e8e12c18fb018446a7cb98ec90cf2fb47133ed","src/parallel/reduce.rs":"3ed124c86af1860dbb07f01ad0249714955327c687bda7ee024cf3a3baf94186","src/parallel/serial.rs":"ee4ff7d6546dc8304e60df9b564d8540b173c093dc9cc78f0ef6caa902fafdd7","src/progress.rs":"1710618bece767f07c05da99a54d27d55a817e69f58a7fdb3b9caafd89f25252","src/threading.rs":"60ff581054d27a0d6ba3df1c14919966274c8f2853981886e3f75812e601fdc3","src/zlib/mod.rs":"720eebfa556bff56a9d90042d4c922f0be0259a9ff921b4f7edf1be0c09ae660","src/zlib/stream/deflate/mod.rs":"c712255c72fa74e2d79af27ad90905d3389e5f760c3f396d936f82906e7c1e14","src/zlib/stream/deflate/tests.rs":"c82d29bf27d1ba54cca4447a750bbaac94547a7ed4eb6e9a311600b8da9a63b8","src/zlib/stream/inflate.rs":"8bad4115c592310cf9f0053f635c8882a0d39e582119ac12dd321ac43d84d1a0","src/zlib/stream/mod.rs":"0af2967eb75a07308c789a4187490cc7c36693b7f7d8a4f7705f3b4b90568f6f","tests/features.rs":"573ade257c38b53430be7e724705e68f7cbca258413c11cd0eec64981c44d97f","tests/hash.rs":"d03f99e2ed1f00066e14212e7e65ee3ae076df42935d38c47d5a563b69367e8c","tests/parallel/in_order_iter.rs":"acd746c25929406748de5080b7ae5dcb2516269f037944d7aa84802520b885b4","tests/parallel/mod.rs":"798b36204033558adb16f44d494e893ea593ef92d09418f8b84ac7cb4cf278af","tests/parallel_shared.rs":"5d8dabaa42fce087e2ec57843cfe69f2be1ca2fa3518030b5a31aeaa706675e0","tests/parallel_shared_threaded.rs":"5d8dabaa42fce087e2ec57843cfe69f2be1ca2fa3518030b5a31aeaa706675e0","tests/parallel_threaded.rs":"02cfb39c7e81bca7e92a851c731e993cad13eff87ec1f8a228d74761ec964f7a","tests/pipe.rs":"ea9e429327dd86002c001f8fc069ac798bd7952ddf3f3b0dd24e3fa69d73c08b","tests/trace/mod.rs":"9896e8394068e99e460607d75291912f511479b223a4722389c26d23eb512d3c"},"package":"9b9ff423ae4983f762659040d13dd7a5defbd54b6a04ac3cc7347741cec828cd"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"efc2c2a6729341c09c114b89b81b8e52040ac8fea98e599c32a439a4ca140f2b","Cargo.toml":"9360a9748c34b0e765fb676618096168346c6788f2dd22f4f1ac1162dd072003","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/cache.rs":"0f66cbbe9f5808b21ee255e157a88e2cf7717427214a08b5b9b4f65e4153a617","src/decode.rs":"bf614320c6b69556da40d8412c73fb6a8648c80b7d75b9b2525eb62ac6c8d802","src/fs.rs":"cdcd94974e87e64e98d227876c57e4c198f7920538621b726c0d02466cbed691","src/hash.rs":"3dd15036189e7691c3a55105df366a38893e29ccec97a7a653197fec9df75a35","src/interrupt.rs":"e2cc5cf58d596ffff9d6b91952a659e4cb7211cb62423b520737abe98a8c25de","src/io.rs":"031f3a9aefb8eff48b98d5794d9c5f277781a4e1ad6ba22f43d79f5ce5b70e14","src/lib.rs":"3b1c85dc37cfc3f1240b5bfe6ba1b0ad70361e3c4f992c1c06badf295bf2056a","src/parallel/eager_iter.rs":"6ab493e6d868c3ac64f4038934a6a71d0d0cbd6e52c4addeec54887aaeab9e8c","src/parallel/in_order.rs":"a1c8c2f6ee4a91d6103f3fc6f27525e309cccc49ffc661d1403dbcdc57d120ad","src/parallel/in_parallel.rs":"4a24250843a3eb0fabe272eeec53bfd5d2c838cdff9e66fb6827fd0c85b81e78","src/parallel/mod.rs":"87abd8147a53ec8d02defd9044e8e12c18fb018446a7cb98ec90cf2fb47133ed","src/parallel/reduce.rs":"3ed124c86af1860dbb07f01ad0249714955327c687bda7ee024cf3a3baf94186","src/parallel/serial.rs":"ee4ff7d6546dc8304e60df9b564d8540b173c093dc9cc78f0ef6caa902fafdd7","src/progress.rs":"1710618bece767f07c05da99a54d27d55a817e69f58a7fdb3b9caafd89f25252","src/threading.rs":"60ff581054d27a0d6ba3df1c14919966274c8f2853981886e3f75812e601fdc3","src/zlib/mod.rs":"720eebfa556bff56a9d90042d4c922f0be0259a9ff921b4f7edf1be0c09ae660","src/zlib/stream/deflate/mod.rs":"c712255c72fa74e2d79af27ad90905d3389e5f760c3f396d936f82906e7c1e14","src/zlib/stream/deflate/tests.rs":"c82d29bf27d1ba54cca4447a750bbaac94547a7ed4eb6e9a311600b8da9a63b8","src/zlib/stream/inflate.rs":"8bad4115c592310cf9f0053f635c8882a0d39e582119ac12dd321ac43d84d1a0","src/zlib/stream/mod.rs":"0af2967eb75a07308c789a4187490cc7c36693b7f7d8a4f7705f3b4b90568f6f","tests/features.rs":"573ade257c38b53430be7e724705e68f7cbca258413c11cd0eec64981c44d97f","tests/hash.rs":"d03f99e2ed1f00066e14212e7e65ee3ae076df42935d38c47d5a563b69367e8c","tests/parallel/in_order_iter.rs":"acd746c25929406748de5080b7ae5dcb2516269f037944d7aa84802520b885b4","tests/parallel/mod.rs":"798b36204033558adb16f44d494e893ea593ef92d09418f8b84ac7cb4cf278af","tests/parallel_shared.rs":"5d8dabaa42fce087e2ec57843cfe69f2be1ca2fa3518030b5a31aeaa706675e0","tests/parallel_shared_threaded.rs":"5d8dabaa42fce087e2ec57843cfe69f2be1ca2fa3518030b5a31aeaa706675e0","tests/parallel_threaded.rs":"02cfb39c7e81bca7e92a851c731e993cad13eff87ec1f8a228d74761ec964f7a","tests/pipe.rs":"ea9e429327dd86002c001f8fc069ac798bd7952ddf3f3b0dd24e3fa69d73c08b","tests/trace/mod.rs":"9896e8394068e99e460607d75291912f511479b223a4722389c26d23eb512d3c"},"package":"51f4365ba17c4f218d7fd9ec102b8d2d3cb0ca200a835e81151ace7778aec827"} \ No newline at end of file
diff --git a/vendor/gix-features/CHANGELOG.md b/vendor/gix-features/CHANGELOG.md
index fa3adcfee..cef88480b 100644
--- a/vendor/gix-features/CHANGELOG.md
+++ b/vendor/gix-features/CHANGELOG.md
@@ -5,6 +5,36 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.36.0 (2023-10-12)
+
+### New Features (BREAKING)
+
+ - <csr-id-4c03fdbc831349ea7f45b68331f554ade859abf5/> add `hash::bytes_with_header()`, also make it 32bit compatible.
+ That way it's possible to hash entire files as object.
+ Previously it wasn't possible to read more than u32::MAX bytes even
+ on 32 bit system even though we are streaming the data.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 3 commits contributed to the release over the course of 13 calendar days.
+ - 17 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+ - Merge branch 'reset' ([`b842691`](https://github.com/Byron/gitoxide/commit/b8426919a491dc3a7df01ee3f258fc0d8a3a327c))
+ - Add `hash::bytes_with_header()`, also make it 32bit compatible. ([`4c03fdb`](https://github.com/Byron/gitoxide/commit/4c03fdbc831349ea7f45b68331f554ade859abf5))
+</details>
+
## 0.35.0 (2023-09-24)
### New Features
@@ -27,7 +57,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
`cargo-auditable` by default. Related issues:
- https://github.com/NixOS/nixpkgs/issues/253911
-- https://github.com/rust-secure-code/cargo-auditable/issues/124
### Bug Fixes (BREAKING)
@@ -38,7 +67,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<csr-read-only-do-not-edit/>
- - 8 commits contributed to the release over the course of 15 calendar days.
+ - 9 commits contributed to the release over the course of 15 calendar days.
- 16 days passed between releases.
- 3 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -50,6 +79,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
- Merge branch 'reset' ([`54a8495`](https://github.com/Byron/gitoxide/commit/54a849545140f7f1c0c7564c418071c0a76a34e7))
- Add `threading::make_mut()` to allow obtaining a mutable reference to shared data. ([`5197196`](https://github.com/Byron/gitoxide/commit/51971969d2cf13587d4bfbd4cb047f2377b8bc0f))
diff --git a/vendor/gix-features/Cargo.toml b/vendor/gix-features/Cargo.toml
index 114f245c1..3cbf222a7 100644
--- a/vendor/gix-features/Cargo.toml
+++ b/vendor/gix-features/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-features"
-version = "0.35.0"
+version = "0.36.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
description = "A crate to integrate various capabilities using compile-time feature flags"
license = "MIT OR Apache-2.0"
@@ -88,7 +88,7 @@ optional = true
default-features = false
[dependencies.gix-hash]
-version = "^0.13.0"
+version = "^0.13.1"
[dependencies.gix-trace]
version = "^0.1.3"
diff --git a/vendor/gix-features/src/hash.rs b/vendor/gix-features/src/hash.rs
index 435e018e9..33054a783 100644
--- a/vendor/gix-features/src/hash.rs
+++ b/vendor/gix-features/src/hash.rs
@@ -96,7 +96,7 @@ pub fn hasher(kind: gix_hash::Kind) -> Sha1 {
#[cfg(all(feature = "progress", any(feature = "rustsha1", feature = "fast-sha1")))]
pub fn bytes_of_file(
path: &std::path::Path,
- num_bytes_from_start: usize,
+ num_bytes_from_start: u64,
kind: gix_hash::Kind,
progress: &mut dyn crate::progress::Progress,
should_interrupt: &std::sync::atomic::AtomicBool,
@@ -110,28 +110,42 @@ pub fn bytes_of_file(
)
}
-/// Similar to [`bytes_of_file`], but operates on an already open file.
+/// Similar to [`bytes_of_file`], but operates on a stream of bytes.
#[cfg(all(feature = "progress", any(feature = "rustsha1", feature = "fast-sha1")))]
pub fn bytes(
read: &mut dyn std::io::Read,
- num_bytes_from_start: usize,
+ num_bytes_from_start: u64,
kind: gix_hash::Kind,
progress: &mut dyn crate::progress::Progress,
should_interrupt: &std::sync::atomic::AtomicBool,
) -> std::io::Result<gix_hash::ObjectId> {
- let mut hasher = hasher(kind);
+ bytes_with_hasher(read, num_bytes_from_start, hasher(kind), progress, should_interrupt)
+}
+
+/// Similar to [`bytes()`], but takes a `hasher` instead of a hash kind.
+#[cfg(all(feature = "progress", any(feature = "rustsha1", feature = "fast-sha1")))]
+pub fn bytes_with_hasher(
+ read: &mut dyn std::io::Read,
+ num_bytes_from_start: u64,
+ mut hasher: Sha1,
+ progress: &mut dyn crate::progress::Progress,
+ should_interrupt: &std::sync::atomic::AtomicBool,
+) -> std::io::Result<gix_hash::ObjectId> {
let start = std::time::Instant::now();
// init progress before the possibility for failure, as convenience in case people want to recover
- progress.init(Some(num_bytes_from_start), crate::progress::bytes());
+ progress.init(
+ Some(num_bytes_from_start as prodash::progress::Step),
+ crate::progress::bytes(),
+ );
const BUF_SIZE: usize = u16::MAX as usize;
let mut buf = [0u8; BUF_SIZE];
let mut bytes_left = num_bytes_from_start;
while bytes_left > 0 {
- let out = &mut buf[..BUF_SIZE.min(bytes_left)];
+ let out = &mut buf[..BUF_SIZE.min(bytes_left as usize)];
read.read_exact(out)?;
- bytes_left -= out.len();
+ bytes_left -= out.len() as u64;
progress.inc_by(out.len());
hasher.update(out);
if should_interrupt.load(std::sync::atomic::Ordering::SeqCst) {
diff --git a/vendor/gix-filter/.cargo-checksum.json b/vendor/gix-filter/.cargo-checksum.json
index 203b42b3a..710f52e3b 100644
--- a/vendor/gix-filter/.cargo-checksum.json
+++ b/vendor/gix-filter/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"840e33c40020b813371613365e13ef1dee679e9c644c812b5c983054c92ae061","Cargo.lock":"108da2aa8f8baac64c3686555565c795b39a2eb50a419bc734fdfe89dc026337","Cargo.toml":"03088c52929252a2faeb38667dad2b5f0106c973b3afc71ff672b1b23c3e62c0","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","examples/arrow.rs":"9dad54b7a3b3032560788209357b2f37e487899e46e521a345d30ec48e151b8f","src/driver/apply.rs":"71237764befa14039bc8001e61b3277f79b4100fc0d987127306699210f517e9","src/driver/delayed.rs":"990f52963dae9aef2c32a1f63fecfe5721022b432296770a871a779b43932e1b","src/driver/init.rs":"18220c5d5da678508352bcc78dab6551c14df75c943614951e5c00aecd0c692d","src/driver/mod.rs":"b43227e3c329db27d8aa121f4adc34e7ba6921db63e76534cf08fb73c5bc3d89","src/driver/process/client.rs":"3501764e9fa3eca5e038d956c207b90400539416f7eda634830ff032fe61dcf2","src/driver/process/mod.rs":"9eefffe43dbd5315441cd08cdb813d047e3d624d0840030ee7bb8b450d9d3cfc","src/driver/process/server.rs":"964acb09eb447c8129f25ba2a488b697b041828b5e130425ab7ae0425022b013","src/driver/shutdown.rs":"27002849563468693d98eb6f2788cec272b5c8915bb42a0fc00c4a92d3ccba72","src/eol/convert_to_git.rs":"e9c1865c3e5a788b2751b7188eedf7ac788f6cce23447e68044d2e383309f5e4","src/eol/convert_to_worktree.rs":"9a9c06b129c9f61d2aed9b7fa9224f7d31996712be81a119fe7f7d4422060e73","src/eol/mod.rs":"9bed52dcbbb4455ec7b1b0ff16ef158afcd063d6bb740d7d3690a4912f4d9e54","src/eol/utils.rs":"7afb1702f595e54a53bce55b3ac42ddcc494b193fb2d5f8adf29c6463c0717fd","src/ident.rs":"574bba21fc10c2e2c1847cc9bf32e03a469e22dd6b9c360196ffa66cf3f11c40","src/lib.rs":"4c8e58f6b0758e9f6442fc19652d4ddf6c366890b91a9b53a1be85869b5bff66","src/pipeline/convert.rs":"54c39d1f5a56e84b22f49876c5106e8760fedd528685879d63a9684f39d4a23e","src/pipeline/mod.rs":"8d008f4d83846c145a4188776c7df635707486ae6bd6f12f3850e5a418eeab52","src/pipeline/tests.rs":"57081ae094bb4384f8cc0f651f1b9def696a7c5416c9a7737bc19c9513c409eb","src/pipeline/util.rs":"79c38e60cd23e96e976c76b6674db9678ddff307934fe31292ac91d81417eae3","src/worktree/encode_to_git.rs":"e7ee1b2ea8f3c8b5a67b816c03d30de554d28e0c8a2ef7fb4a08a21877c4d29a","src/worktree/encode_to_worktree.rs":"5c6c07b0510467c5bc23ec2d6b0b9588fbe83033270e6b8eecb95ddd2faf0da4","src/worktree/encoding.rs":"f6be0f6de6016ea7e8dd66695ad5b33d273d911056726aef5937b8b724b35544","src/worktree/mod.rs":"49b88cc411797a7492ea8ff168cbfc2ccbfc4c20a0d50ad0c382f4b3f731f034","tests/driver/mod.rs":"5f5971585c723543c6027d9c88a9a5518d09107c79af2eadfe3c5248c05e9aff","tests/eol/convert_to_git.rs":"eab4d779cd5994dad2d8fee7e1cd07715c852ea8d4919d2acc15df44c4c5171c","tests/eol/convert_to_worktree.rs":"f60a67ce7d1ae89ebb9d12792f36ff69454b207ab19318a01a5533ece2a8cb2f","tests/eol/mod.rs":"443cdf101fb949f5a1fee83e3c47279258c39c0e808210fdac29322fb8930fa4","tests/filter.rs":"a239e58925089504903eb2d52ff617ca58eca42d80173045a0fbfb3a340e366c","tests/fixtures/baseline.sh":"8e9e2982b2050fa41c851811ff92b1920c431f05daccd6e05ef3fae5788f3abc","tests/fixtures/generated-archives/pipeline_repos.tar.xz":"756c232a96c52fe02bd9002b6813edccfea7c1889075946e2f490da8b058bb80","tests/fixtures/pipeline_repos.sh":"2a168ce8d09fdd5d03ca82deaf105e8dcc51831d9f71a065bc56e35b2f5e5e68","tests/ident/mod.rs":"dc4d68ab493e63abed0c171cccb823eb90981a9b51e7ba824bf1f1377388eead","tests/pipeline/convert_to_git.rs":"0038002616a772af4c37427f52ff3138024fe1f962a9564a964fe90043f64876","tests/pipeline/convert_to_worktree.rs":"76fe13e9df083b2d5830170d3aaf0feac7329cdddc9c7b4f10e855ad8cd84047","tests/pipeline/mod.rs":"4edc80271c76e59a53cf57d09ebba7be3ea2999a0128f39bcda2f972786bf204","tests/worktree/mod.rs":"0f1d7d4e9e8a8211a8107854903e4792b70bcad51427d308624f6d27a14a017c"},"package":"1be40d28cd41445bb6cd52c4d847d915900e5466f7433eaee6a9e0a3d1d88b08"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"932775fa0d68646cb5b8520590b7ac3af4b7d5e82f1050334bab143970d79cfc","Cargo.lock":"b69116ce660d74eb3e4305d8aeb893a7ce29ac91f06511043d80c29f0dd7a0e3","Cargo.toml":"d3a517da8bf1ff9643973f09fbf9945ff43b306599fbb49e2642fe8c7e1d29ad","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","examples/arrow.rs":"9dad54b7a3b3032560788209357b2f37e487899e46e521a345d30ec48e151b8f","src/driver/apply.rs":"71237764befa14039bc8001e61b3277f79b4100fc0d987127306699210f517e9","src/driver/delayed.rs":"990f52963dae9aef2c32a1f63fecfe5721022b432296770a871a779b43932e1b","src/driver/init.rs":"18220c5d5da678508352bcc78dab6551c14df75c943614951e5c00aecd0c692d","src/driver/mod.rs":"b43227e3c329db27d8aa121f4adc34e7ba6921db63e76534cf08fb73c5bc3d89","src/driver/process/client.rs":"3501764e9fa3eca5e038d956c207b90400539416f7eda634830ff032fe61dcf2","src/driver/process/mod.rs":"9eefffe43dbd5315441cd08cdb813d047e3d624d0840030ee7bb8b450d9d3cfc","src/driver/process/server.rs":"964acb09eb447c8129f25ba2a488b697b041828b5e130425ab7ae0425022b013","src/driver/shutdown.rs":"27002849563468693d98eb6f2788cec272b5c8915bb42a0fc00c4a92d3ccba72","src/eol/convert_to_git.rs":"6155ded8ea4b2de480f9cd4d40bc64238e35c405109f6ddf1f967eb2557f2d29","src/eol/convert_to_worktree.rs":"9a9c06b129c9f61d2aed9b7fa9224f7d31996712be81a119fe7f7d4422060e73","src/eol/mod.rs":"9bed52dcbbb4455ec7b1b0ff16ef158afcd063d6bb740d7d3690a4912f4d9e54","src/eol/utils.rs":"7afb1702f595e54a53bce55b3ac42ddcc494b193fb2d5f8adf29c6463c0717fd","src/ident.rs":"574bba21fc10c2e2c1847cc9bf32e03a469e22dd6b9c360196ffa66cf3f11c40","src/lib.rs":"4c8e58f6b0758e9f6442fc19652d4ddf6c366890b91a9b53a1be85869b5bff66","src/pipeline/convert.rs":"2d7b0c6baa92901c6b6b7c2ce9b2e1c0fa1eb8ec09f76714a0a01a0113d8165f","src/pipeline/mod.rs":"8d008f4d83846c145a4188776c7df635707486ae6bd6f12f3850e5a418eeab52","src/pipeline/tests.rs":"57081ae094bb4384f8cc0f651f1b9def696a7c5416c9a7737bc19c9513c409eb","src/pipeline/util.rs":"dc48f234895a234bb435ae2e1b3884cc4b7a931eb3aba56fc05051d963c943bb","src/worktree/encode_to_git.rs":"e7ee1b2ea8f3c8b5a67b816c03d30de554d28e0c8a2ef7fb4a08a21877c4d29a","src/worktree/encode_to_worktree.rs":"5c6c07b0510467c5bc23ec2d6b0b9588fbe83033270e6b8eecb95ddd2faf0da4","src/worktree/encoding.rs":"f6be0f6de6016ea7e8dd66695ad5b33d273d911056726aef5937b8b724b35544","src/worktree/mod.rs":"49b88cc411797a7492ea8ff168cbfc2ccbfc4c20a0d50ad0c382f4b3f731f034","tests/driver/mod.rs":"5f5971585c723543c6027d9c88a9a5518d09107c79af2eadfe3c5248c05e9aff","tests/eol/convert_to_git.rs":"eab4d779cd5994dad2d8fee7e1cd07715c852ea8d4919d2acc15df44c4c5171c","tests/eol/convert_to_worktree.rs":"f60a67ce7d1ae89ebb9d12792f36ff69454b207ab19318a01a5533ece2a8cb2f","tests/eol/mod.rs":"443cdf101fb949f5a1fee83e3c47279258c39c0e808210fdac29322fb8930fa4","tests/filter.rs":"a239e58925089504903eb2d52ff617ca58eca42d80173045a0fbfb3a340e366c","tests/fixtures/baseline.sh":"8e9e2982b2050fa41c851811ff92b1920c431f05daccd6e05ef3fae5788f3abc","tests/fixtures/generated-archives/pipeline_repos.tar.xz":"756c232a96c52fe02bd9002b6813edccfea7c1889075946e2f490da8b058bb80","tests/fixtures/pipeline_repos.sh":"2a168ce8d09fdd5d03ca82deaf105e8dcc51831d9f71a065bc56e35b2f5e5e68","tests/ident/mod.rs":"dc4d68ab493e63abed0c171cccb823eb90981a9b51e7ba824bf1f1377388eead","tests/pipeline/convert_to_git.rs":"8d64ed5445c6093d67c850526e18e0c51928ee35c6c4c8a384bd90cc719b38db","tests/pipeline/convert_to_worktree.rs":"76fe13e9df083b2d5830170d3aaf0feac7329cdddc9c7b4f10e855ad8cd84047","tests/pipeline/mod.rs":"4edc80271c76e59a53cf57d09ebba7be3ea2999a0128f39bcda2f972786bf204","tests/worktree/mod.rs":"0f1d7d4e9e8a8211a8107854903e4792b70bcad51427d308624f6d27a14a017c"},"package":"92f674d3fdb6b1987b04521ec9a5b7be8650671f2c4bbd17c3c81e2a364242ff"} \ No newline at end of file
diff --git a/vendor/gix-filter/CHANGELOG.md b/vendor/gix-filter/CHANGELOG.md
index 946c14d95..368d21716 100644
--- a/vendor/gix-filter/CHANGELOG.md
+++ b/vendor/gix-filter/CHANGELOG.md
@@ -5,6 +5,53 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.6.0 (2023-10-12)
+
+### Bug Fixes
+
+ - <csr-id-b5b50f8fdb781b7c9a2ff5c8b462940e5098a94d/> hanging `Read` implementation of `pipeline::convert::ToGitOutcome`.
+ This codepath was never tested and its function more subtle than one could have known.
+ Also fix incorrect configuration handling which could lead to binary files with `text=auto`
+ to be identified as text, which would then require conversion.
+
+### Bug Fixes (BREAKING)
+
+ - <csr-id-260c78191e88d2e2c744d85e6f75e7941c24ef43/> don't provide path to object-retrieval callback of `Pipeline::convert::to_git::IndexObjectFn()`.
+ It implies that one has to be ready to fetch any kind of path from the index, even though it's always the path to
+ the file that is currently converted.
+
+ Also fix a bug that could cause it to return input as unchanged even though it was read into a buffer already.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 6 commits contributed to the release over the course of 8 calendar days.
+ - 17 days passed between releases.
+ - 2 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Thanks Clippy
+
+<csr-read-only-do-not-edit/>
+
+[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic.
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+ - Fix docs ([`995bc84`](https://github.com/Byron/gitoxide/commit/995bc840664cbd4aeb7f95592e3125dee63bdcd4))
+ - Thanks clippy ([`345712d`](https://github.com/Byron/gitoxide/commit/345712dcdfddcccc630bbfef2ed4f461b21550d3))
+ - Merge branch 'reset' ([`b842691`](https://github.com/Byron/gitoxide/commit/b8426919a491dc3a7df01ee3f258fc0d8a3a327c))
+ - Hanging `Read` implementation of `pipeline::convert::ToGitOutcome`. ([`b5b50f8`](https://github.com/Byron/gitoxide/commit/b5b50f8fdb781b7c9a2ff5c8b462940e5098a94d))
+ - Don't provide path to object-retrieval callback of `Pipeline::convert::to_git::IndexObjectFn()`. ([`260c781`](https://github.com/Byron/gitoxide/commit/260c78191e88d2e2c744d85e6f75e7941c24ef43))
+</details>
+
## 0.5.0 (2023-09-24)
A maintenance release without user-facing changes.
@@ -13,7 +60,7 @@ A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
- - 1 commit contributed to the release.
+ - 2 commits contributed to the release.
- 16 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,6 +72,7 @@ A maintenance release without user-facing changes.
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
</details>
diff --git a/vendor/gix-filter/Cargo.lock b/vendor/gix-filter/Cargo.lock
index 9c70b109b..db4c91b82 100644
--- a/vendor/gix-filter/Cargo.lock
+++ b/vendor/gix-filter/Cargo.lock
@@ -35,12 +35,6 @@ dependencies = [
]
[[package]]
-name = "byteyarn"
-version = "0.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7534301c0ea17abb4db06d75efc7b4b0fa360fce8e175a4330d721c71c942ff"
-
-[[package]]
name = "cfg-if"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -66,9 +60,9 @@ dependencies = [
[[package]]
name = "gix-actor"
-version = "0.27.0"
+version = "0.28.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08c60e982c5290897122d4e2622447f014a2dadd5a18cb73d50bb91b31645e27"
+checksum = "948a5f9e43559d16faf583694f1c742eb401ce24ce8e6f2238caedea7486433c"
dependencies = [
"bstr",
"btoi",
@@ -80,16 +74,16 @@ dependencies = [
[[package]]
name = "gix-attributes"
-version = "0.19.0"
+version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2451665e70709ba4753b623ef97511ee98c4a73816b2c5b5df25678d607ed820"
+checksum = "dca120f0c6562d2d7cae467f2466e576d9f7f189beec2af2e026145107c729e2"
dependencies = [
"bstr",
- "byteyarn",
"gix-glob",
"gix-path",
"gix-quote",
"gix-trace",
+ "kstring",
"smallvec",
"thiserror",
"unicode-bom",
@@ -97,9 +91,9 @@ dependencies = [
[[package]]
name = "gix-command"
-version = "0.2.9"
+version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f28f654184b5f725c5737c7e4f466cbd8f0102ac352d5257eeab19647ee4256"
+checksum = "3c576cfbf577f72c097b5f88aedea502cd62952bdc1fb3adcab4531d5525a4c7"
dependencies = [
"bstr",
]
@@ -118,19 +112,20 @@ dependencies = [
[[package]]
name = "gix-features"
-version = "0.35.0"
+version = "0.36.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b9ff423ae4983f762659040d13dd7a5defbd54b6a04ac3cc7347741cec828cd"
+checksum = "51f4365ba17c4f218d7fd9ec102b8d2d3cb0ca200a835e81151ace7778aec827"
dependencies = [
"gix-hash",
"gix-trace",
"libc",
+ "prodash",
"sha1_smol",
]
[[package]]
name = "gix-filter"
-version = "0.5.0"
+version = "0.6.0"
dependencies = [
"bstr",
"encoding_rs",
@@ -149,9 +144,9 @@ dependencies = [
[[package]]
name = "gix-glob"
-version = "0.13.0"
+version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9d76e85f11251dcf751d2c5e918a14f562db5be6f727fd24775245653e9b19d"
+checksum = "8fac08925dbc14d414bd02eb45ffb4cecd912d1fce3883f867bd0103c192d3e4"
dependencies = [
"bitflags",
"bstr",
@@ -161,9 +156,9 @@ dependencies = [
[[package]]
name = "gix-hash"
-version = "0.13.0"
+version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2ccf425543779cddaa4a7c62aba3fa9d90ea135b160be0a72dd93c063121ad4a"
+checksum = "1884c7b41ea0875217c1be9ce91322f90bde433e91d374d0e1276073a51ccc60"
dependencies = [
"faster-hex",
"thiserror",
@@ -171,9 +166,9 @@ dependencies = [
[[package]]
name = "gix-object"
-version = "0.37.0"
+version = "0.38.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e7e19616c67967374137bae83e950e9b518a9ea8a605069bd6716ada357fd6f"
+checksum = "740f2a44267f58770a1cb3a3d01d14e67b089c7136c48d4bddbb3cfd2bf86a51"
dependencies = [
"bstr",
"btoi",
@@ -255,6 +250,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
[[package]]
+name = "kstring"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec3066350882a1cd6d950d055997f379ac37fd39f81cd4d8ed186032eb3c5747"
+dependencies = [
+ "static_assertions",
+]
+
+[[package]]
name = "libc"
version = "0.2.147"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -300,6 +304,12 @@ dependencies = [
]
[[package]]
+name = "prodash"
+version = "26.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "794b5bf8e2d19b53dcdcec3e4bba628e20f5b6062503ba89281fa7037dd7bbcf"
+
+[[package]]
name = "quote"
version = "1.0.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -347,6 +357,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9"
[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
name = "syn"
version = "2.0.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/vendor/gix-filter/Cargo.toml b/vendor/gix-filter/Cargo.toml
index 3d8edccbe..cec28d7f2 100644
--- a/vendor/gix-filter/Cargo.toml
+++ b/vendor/gix-filter/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-filter"
-version = "0.5.0"
+version = "0.6.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
description = "A crate of the gitoxide project implementing git filters"
license = "MIT OR Apache-2.0"
@@ -31,16 +31,16 @@ default-features = false
version = "0.8.32"
[dependencies.gix-attributes]
-version = "^0.19.0"
+version = "^0.20.0"
[dependencies.gix-command]
-version = "^0.2.9"
+version = "^0.2.10"
[dependencies.gix-hash]
-version = "^0.13.0"
+version = "^0.13.1"
[dependencies.gix-object]
-version = "^0.37.0"
+version = "^0.38.0"
[dependencies.gix-packetline]
version = "^0.16.6"
diff --git a/vendor/gix-filter/src/eol/convert_to_git.rs b/vendor/gix-filter/src/eol/convert_to_git.rs
index 1bd1e919f..94258ed9d 100644
--- a/vendor/gix-filter/src/eol/convert_to_git.rs
+++ b/vendor/gix-filter/src/eol/convert_to_git.rs
@@ -81,7 +81,7 @@ pub(crate) mod function {
return Ok(false);
}
- if let Some(()) = index_object(buf).map_err(|err| Error::FetchObjectFromIndex(err))? {
+ if let Some(()) = index_object(buf).map_err(Error::FetchObjectFromIndex)? {
let has_crlf_in_index = buf
.find_byte(b'\r')
.map(|_| Stats::from_bytes(buf))
diff --git a/vendor/gix-filter/src/pipeline/convert.rs b/vendor/gix-filter/src/pipeline/convert.rs
index 1294944cb..85f6a9b18 100644
--- a/vendor/gix-filter/src/pipeline/convert.rs
+++ b/vendor/gix-filter/src/pipeline/convert.rs
@@ -21,12 +21,9 @@ pub mod configuration {
///
pub mod to_git {
- use bstr::BStr;
-
- /// A function that writes a buffer like `fn(rela_path, &mut buf)` with by tes of an object in the index that is the one
- /// that should be converted.
+ /// A function that fills `buf` `fn(&mut buf)` with the data stored in the index of the file that should be converted.
pub type IndexObjectFn<'a> =
- dyn FnMut(&BStr, &mut Vec<u8>) -> Result<Option<()>, Box<dyn std::error::Error + Send + Sync>> + 'a;
+ dyn FnMut(&mut Vec<u8>) -> Result<Option<()>, Box<dyn std::error::Error + Send + Sync>> + 'a;
/// The error returned by [Pipeline::convert_to_git()][super::Pipeline::convert_to_git()].
#[derive(Debug, thiserror::Error)]
@@ -91,7 +88,7 @@ impl Pipeline {
self.options.eol_config,
)?;
- let mut changed = false;
+ let mut in_buffer = false;
// this is just an approximation, but it's as good as it gets without reading the actual input.
let would_convert_eol = eol::convert_to_git(
b"\r\n",
@@ -119,12 +116,13 @@ impl Pipeline {
}
self.bufs.clear();
read.read_to_end(&mut self.bufs.src)?;
- changed = true;
+ in_buffer = true;
}
}
- if !changed && (apply_ident_filter || encoding.is_some() || would_convert_eol) {
+ if !in_buffer && (apply_ident_filter || encoding.is_some() || would_convert_eol) {
self.bufs.clear();
src.read_to_end(&mut self.bufs.src)?;
+ in_buffer = true;
}
if let Some(encoding) = encoding {
@@ -139,28 +137,25 @@ impl Pipeline {
},
)?;
self.bufs.swap();
- changed = true;
}
if eol::convert_to_git(
&self.bufs.src,
digest,
&mut self.bufs.dest,
- &mut |buf| index_object(bstr_path.as_ref(), buf),
+ &mut |buf| index_object(buf),
eol::convert_to_git::Options {
round_trip_check: self.options.crlf_roundtrip_check.to_eol_roundtrip_check(rela_path),
config: self.options.eol_config,
},
)? {
self.bufs.swap();
- changed = true;
}
if apply_ident_filter && ident::undo(&self.bufs.src, &mut self.bufs.dest) {
self.bufs.swap();
- changed = true;
}
- Ok(if changed {
+ Ok(if in_buffer {
ToGitOutcome::Buffer(&self.bufs.src)
} else {
ToGitOutcome::Unchanged(src)
@@ -263,7 +258,7 @@ pub enum ToWorktreeOutcome<'input, 'pipeline> {
}
impl<'input, 'pipeline> ToWorktreeOutcome<'input, 'pipeline> {
- /// Return true if this outcome is delayed. In that case, one isn't allowed to use [`Read`][std::io::Read] or cause a panic.
+ /// Return true if this outcome is delayed. In that case, one isn't allowed to use [`Read`] or cause a panic.
pub fn is_delayed(&self) -> bool {
matches!(
self,
@@ -320,17 +315,17 @@ where
match self {
ToGitOutcome::Unchanged(r) => r.read(buf),
ToGitOutcome::Process(r) => r.read(buf),
- ToGitOutcome::Buffer(mut r) => r.read(buf),
+ ToGitOutcome::Buffer(r) => r.read(buf),
}
}
}
-impl<R> ToGitOutcome<'_, R>
+impl<'a, R> ToGitOutcome<'a, R>
where
R: std::io::Read,
{
/// If we contain a buffer, and not a stream, return it.
- pub fn as_bytes(&self) -> Option<&[u8]> {
+ pub fn as_bytes(&self) -> Option<&'a [u8]> {
match self {
ToGitOutcome::Unchanged(_) | ToGitOutcome::Process(_) => None,
ToGitOutcome::Buffer(b) => Some(b),
diff --git a/vendor/gix-filter/src/pipeline/util.rs b/vendor/gix-filter/src/pipeline/util.rs
index a92ac25ef..ab10db08e 100644
--- a/vendor/gix-filter/src/pipeline/util.rs
+++ b/vendor/gix-filter/src/pipeline/util.rs
@@ -170,7 +170,7 @@ impl<'driver> Configuration<'driver> {
let attr_digest = digest;
digest = match digest {
None => Some(config.auto_crlf.into()),
- Some(AttributesDigest::TextAuto) => Some(config.to_eol().into()),
+ Some(AttributesDigest::Text) => Some(config.to_eol().into()),
_ => digest,
};
diff --git a/vendor/gix-filter/tests/pipeline/convert_to_git.rs b/vendor/gix-filter/tests/pipeline/convert_to_git.rs
index 3a627f28d..cfa747e2b 100644
--- a/vendor/gix-filter/tests/pipeline/convert_to_git.rs
+++ b/vendor/gix-filter/tests/pipeline/convert_to_git.rs
@@ -1,6 +1,6 @@
use std::{io::Read, path::Path};
-use bstr::{BStr, ByteSlice};
+use bstr::ByteSlice;
use gix_filter::{eol, pipeline::CrlfRoundTripCheck};
use crate::{driver::apply::driver_with_process, pipeline::pipeline};
@@ -19,7 +19,7 @@ fn no_driver_but_filter_with_autocrlf() -> gix_testtools::Result {
)
})?;
- let out = pipe.convert_to_git(
+ let mut out = pipe.convert_to_git(
"hi\r\n".as_bytes(),
Path::new("any.txt"),
&mut |_path, _attrs| {},
@@ -31,6 +31,9 @@ fn no_driver_but_filter_with_autocrlf() -> gix_testtools::Result {
"hi\n",
"the read is read into memory if there is no driver"
);
+ let mut buf = Vec::new();
+ out.read_to_end(&mut buf)?;
+ assert_eq!(buf.as_bstr(), "hi\n", "we can consume the output");
Ok(())
}
@@ -132,14 +135,11 @@ fn no_filter_means_reader_is_returned_unchanged() -> gix_testtools::Result {
}
#[allow(clippy::ptr_arg)]
-fn no_call(_path: &BStr, _buf: &mut Vec<u8>) -> Result<Option<()>, Box<dyn std::error::Error + Send + Sync>> {
+fn no_call(_buf: &mut Vec<u8>) -> Result<Option<()>, Box<dyn std::error::Error + Send + Sync>> {
unreachable!("index function will not be called")
}
#[allow(clippy::ptr_arg)]
-fn no_object_in_index(
- _path: &BStr,
- _buf: &mut Vec<u8>,
-) -> Result<Option<()>, Box<dyn std::error::Error + Send + Sync>> {
+fn no_object_in_index(_buf: &mut Vec<u8>) -> Result<Option<()>, Box<dyn std::error::Error + Send + Sync>> {
Ok(None)
}
diff --git a/vendor/gix-fs/.cargo-checksum.json b/vendor/gix-fs/.cargo-checksum.json
index 45a24bb07..a75b830de 100644
--- a/vendor/gix-fs/.cargo-checksum.json
+++ b/vendor/gix-fs/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"762c017435bf17e7ab4cf10d0f1ffa95d2268d220f1dd599ed24e25846253b62","Cargo.toml":"d7b80f493d90211c314b375425b430f2fa70fb2891d313ef678a0e9c7586b32f","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/capabilities.rs":"a784f08597dbfed3f42c5ef028b288cf97fc6b64bcb75e6c8f4e43668c88d6fb","src/dir/create.rs":"a0684526b608bec00ec9bc77ac58cf8ae39a65678f6c4d1ad39b1c0801202923","src/dir/mod.rs":"bf7413a8cc754d8921159d830d8df5b532e9b50aac708c24d6865b4e4b39c788","src/dir/remove.rs":"baead58ddea10770a46cc0822572b8cb21f3085ec692efb1bcd27919b622e4c7","src/lib.rs":"42f5434fd415a9616773ac585a333be6b7cf894a92bf8620014e8c8881d9c842","src/snapshot.rs":"436c8c5b72bc0b10f22a58e80304ae8e479a877007f7acb7746ae278417d239a","src/stack.rs":"c431124f93d17b0984640ebdcba6d9b8662f0e9a36feda33bc6b74fa6df4b872","src/symlink.rs":"8e69a221190d82cf97ebbbdf7acc1443e1329aaa9d5ec614d49f13388f253bdf","tests/capabilities/mod.rs":"5925cb271fc616225c0b0ef7f1c03247e33b10bc799c50774f29891bd5b2dde0","tests/dir/create.rs":"6943308c9509b3dfffa0fafd633ecf531d95ca2a6b5893ec54ae9a3f9bf2d91e","tests/dir/mod.rs":"0655b7cfcce3dc4e28e9e854564ab2532942582ff4da2f375a930888615651da","tests/dir/remove.rs":"83b2c265820192946f0c429aeb59c9fc212247df99868578bd7f28730730320d","tests/fs.rs":"313928b6aef5f194231f40c93aea015ef44d27d356eb6979fc8cfa34126160ca","tests/stack/mod.rs":"9f6cb3a0c8bd75584c18b58811b1a264df6fed79f0d22ea39ffe08e68a3f15d1"},"package":"09815faba62fe9b32d918b75a554686c98e43f7d48c43a80df58eb718e5c6635"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"23356c80c3cfba487eea05087c3aa030696f7b9883c431d7c3a03e2135004810","Cargo.toml":"eb6e0c419a8cabbc99d72b3dc2021e7eca30fcf6ba24c5459308c192aaf57c3f","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/capabilities.rs":"a784f08597dbfed3f42c5ef028b288cf97fc6b64bcb75e6c8f4e43668c88d6fb","src/dir/create.rs":"a0684526b608bec00ec9bc77ac58cf8ae39a65678f6c4d1ad39b1c0801202923","src/dir/mod.rs":"bf7413a8cc754d8921159d830d8df5b532e9b50aac708c24d6865b4e4b39c788","src/dir/remove.rs":"baead58ddea10770a46cc0822572b8cb21f3085ec692efb1bcd27919b622e4c7","src/lib.rs":"42f5434fd415a9616773ac585a333be6b7cf894a92bf8620014e8c8881d9c842","src/snapshot.rs":"436c8c5b72bc0b10f22a58e80304ae8e479a877007f7acb7746ae278417d239a","src/stack.rs":"c431124f93d17b0984640ebdcba6d9b8662f0e9a36feda33bc6b74fa6df4b872","src/symlink.rs":"8e69a221190d82cf97ebbbdf7acc1443e1329aaa9d5ec614d49f13388f253bdf","tests/capabilities/mod.rs":"5925cb271fc616225c0b0ef7f1c03247e33b10bc799c50774f29891bd5b2dde0","tests/dir/create.rs":"6943308c9509b3dfffa0fafd633ecf531d95ca2a6b5893ec54ae9a3f9bf2d91e","tests/dir/mod.rs":"0655b7cfcce3dc4e28e9e854564ab2532942582ff4da2f375a930888615651da","tests/dir/remove.rs":"83b2c265820192946f0c429aeb59c9fc212247df99868578bd7f28730730320d","tests/fs.rs":"313928b6aef5f194231f40c93aea015ef44d27d356eb6979fc8cfa34126160ca","tests/stack/mod.rs":"9f6cb3a0c8bd75584c18b58811b1a264df6fed79f0d22ea39ffe08e68a3f15d1"},"package":"8cd171c0cae97cd0dc57e7b4601cb1ebf596450e263ef3c02be9107272c877bd"} \ No newline at end of file
diff --git a/vendor/gix-fs/CHANGELOG.md b/vendor/gix-fs/CHANGELOG.md
index efa95ea09..2c318cc40 100644
--- a/vendor/gix-fs/CHANGELOG.md
+++ b/vendor/gix-fs/CHANGELOG.md
@@ -5,6 +5,29 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.8.0 (2023-10-12)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 1 commit contributed to the release.
+ - 17 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+</details>
+
## 0.7.0 (2023-09-24)
### New Features
@@ -16,7 +39,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<csr-read-only-do-not-edit/>
- - 3 commits contributed to the release over the course of 1 calendar day.
+ - 4 commits contributed to the release over the course of 1 calendar day.
- 16 days passed between releases.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -28,6 +51,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
- Merge branch 'reset' ([`54a8495`](https://github.com/Byron/gitoxide/commit/54a849545140f7f1c0c7564c418071c0a76a34e7))
- Add `DerefMut` implementation for `FileSnapshot`. ([`7a96a25`](https://github.com/Byron/gitoxide/commit/7a96a258cc8a5bad6414367cdbce390b7ac88b19))
diff --git a/vendor/gix-fs/Cargo.toml b/vendor/gix-fs/Cargo.toml
index a1d382256..996ced187 100644
--- a/vendor/gix-fs/Cargo.toml
+++ b/vendor/gix-fs/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-fs"
-version = "0.7.0"
+version = "0.8.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
description = "A crate providing file system specific utilities to `gitoxide`"
license = "MIT OR Apache-2.0"
@@ -23,7 +23,7 @@ repository = "https://github.com/Byron/gitoxide"
doctest = false
[dependencies.gix-features]
-version = "^0.35.0"
+version = "^0.36.0"
[dev-dependencies.tempfile]
version = "3.5.0"
diff --git a/vendor/gix-glob/.cargo-checksum.json b/vendor/gix-glob/.cargo-checksum.json
index 23c862b29..2612ec109 100644
--- a/vendor/gix-glob/.cargo-checksum.json
+++ b/vendor/gix-glob/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"de636fd42226103d91ccea1f5ba464d1bbd9726d454c4aa53aaffde9db3fb4b0","Cargo.toml":"1d2d4235972424597c3711b4a0e0b1e21d1d972d8fd0bc5c60377012846873f0","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/lib.rs":"988fab13064310afa7982ad4c0011839cba1d176ef4acc72a5228e99bf341c2b","src/parse.rs":"9d7a40e1c75c6283029f919623f1b70c3b318db51b72f238870a5a0914cecbe8","src/pattern.rs":"eab7fe5a2946d5f2a8ba95796edf82e5ec270cf665d5aa2c76fb31ec1165796b","src/search/mod.rs":"eecdaad067ad60cb62a9291a2672bf480937bd17446d7048d5cec8ffdef5b67e","src/search/pattern.rs":"1df39783d8e5cff1b02bf4b97dc2343a6c23aa6558bcd7e70d71424c9a755cb1","src/wildmatch.rs":"f64da7dc4e7c1cd269dfa01f707909fd9af41176ebff498050b9311c41e6ccf1","tests/fixtures/generated-archives/make_baseline.tar.xz":"6bda59c1591dfd35f09cad5d09e2950b2a6ff885d9f7900535144a5275ab51c3","tests/fixtures/make_baseline.sh":"d6e93d2facf3bbd8e14b7bb579cea3be2e81f8fda8609ddde739d024fb019066","tests/glob.rs":"70c3b09855e0a495aa031586bc249a0b0270d72448f4d75277955019d7b11db0","tests/parse/mod.rs":"2bb2445b6d73c4614a7344c4ea10c7ff1dfd3da001d39c4b3ee19db54befa31c","tests/pattern/matching.rs":"73f0306f29121b7de67dd63d25b0070f9f3290b5089dff33d9235357804a1769","tests/pattern/mod.rs":"28f9f3f99092be3813f93a4e0af149746305fa15326682adcbf3c61fa818534f","tests/search/mod.rs":"078b7bdaa0c022e1cdc88b69afa88a82033852137e69ce18995657d8e3fee6ca","tests/search/pattern.rs":"522c24287461a9e1126339e4bc7fc953eec309cf9323faeae433fd962b1c44d2","tests/wildmatch/mod.rs":"ec5b3c652cab808dd0cf5a1c37e56c9d61ccb2ca52ec25049c9414b4667e7c11"},"package":"a9d76e85f11251dcf751d2c5e918a14f562db5be6f727fd24775245653e9b19d"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"4e4a70dd3063e9eefdcab5d4359689b49a4f9ad3b5217b5b79002fd840796db5","Cargo.toml":"be120d6e6ce33413b69c63d17f5749bfc876041670417ebe08461848bd268fcf","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/lib.rs":"988fab13064310afa7982ad4c0011839cba1d176ef4acc72a5228e99bf341c2b","src/parse.rs":"9d7a40e1c75c6283029f919623f1b70c3b318db51b72f238870a5a0914cecbe8","src/pattern.rs":"eab7fe5a2946d5f2a8ba95796edf82e5ec270cf665d5aa2c76fb31ec1165796b","src/search/mod.rs":"eecdaad067ad60cb62a9291a2672bf480937bd17446d7048d5cec8ffdef5b67e","src/search/pattern.rs":"1df39783d8e5cff1b02bf4b97dc2343a6c23aa6558bcd7e70d71424c9a755cb1","src/wildmatch.rs":"f64da7dc4e7c1cd269dfa01f707909fd9af41176ebff498050b9311c41e6ccf1","tests/fixtures/generated-archives/make_baseline.tar.xz":"6bda59c1591dfd35f09cad5d09e2950b2a6ff885d9f7900535144a5275ab51c3","tests/fixtures/make_baseline.sh":"d6e93d2facf3bbd8e14b7bb579cea3be2e81f8fda8609ddde739d024fb019066","tests/glob.rs":"70c3b09855e0a495aa031586bc249a0b0270d72448f4d75277955019d7b11db0","tests/parse/mod.rs":"2bb2445b6d73c4614a7344c4ea10c7ff1dfd3da001d39c4b3ee19db54befa31c","tests/pattern/matching.rs":"73f0306f29121b7de67dd63d25b0070f9f3290b5089dff33d9235357804a1769","tests/pattern/mod.rs":"28f9f3f99092be3813f93a4e0af149746305fa15326682adcbf3c61fa818534f","tests/search/mod.rs":"078b7bdaa0c022e1cdc88b69afa88a82033852137e69ce18995657d8e3fee6ca","tests/search/pattern.rs":"522c24287461a9e1126339e4bc7fc953eec309cf9323faeae433fd962b1c44d2","tests/wildmatch/mod.rs":"ec5b3c652cab808dd0cf5a1c37e56c9d61ccb2ca52ec25049c9414b4667e7c11"},"package":"8fac08925dbc14d414bd02eb45ffb4cecd912d1fce3883f867bd0103c192d3e4"} \ No newline at end of file
diff --git a/vendor/gix-glob/CHANGELOG.md b/vendor/gix-glob/CHANGELOG.md
index 89cb2c376..2f9a59bf7 100644
--- a/vendor/gix-glob/CHANGELOG.md
+++ b/vendor/gix-glob/CHANGELOG.md
@@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-## 0.13.0 (2023-09-24)
+## 0.14.0 (2023-10-12)
A maintenance release without user-facing changes.
@@ -14,6 +14,29 @@ A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
- 1 commit contributed to the release.
+ - 17 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+</details>
+
+## 0.13.0 (2023-09-24)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 2 commits contributed to the release.
- 16 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,6 +48,7 @@ A maintenance release without user-facing changes.
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
</details>
diff --git a/vendor/gix-glob/Cargo.toml b/vendor/gix-glob/Cargo.toml
index 802ab730c..9c1871599 100644
--- a/vendor/gix-glob/Cargo.toml
+++ b/vendor/gix-glob/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-glob"
-version = "0.13.0"
+version = "0.14.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
description = "A crate of the gitoxide project dealing with pattern matching"
license = "MIT OR Apache-2.0"
@@ -43,7 +43,7 @@ version = "0.2.0"
optional = true
[dependencies.gix-features]
-version = "^0.35.0"
+version = "^0.36.0"
[dependencies.gix-path]
version = "^0.10.0"
diff --git a/vendor/gix-hash/.cargo-checksum.json b/vendor/gix-hash/.cargo-checksum.json
index 17a023f80..d72ca63d7 100644
--- a/vendor/gix-hash/.cargo-checksum.json
+++ b/vendor/gix-hash/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"a6b8740d3509850b2673eb8ca4eef60513a7525cd7818324c53247af0cda4389","Cargo.toml":"46d309d485955146ed1a5afc19bb024b9b174bfefa490c16324c9dcba28297fc","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/kind.rs":"b76634865925155fddcf10a94ec37f08be8a61855438ce2577566fda816006f0","src/lib.rs":"9079b3ac1e6471a5fd05dbea751d1ef29bea008be3d2a11978d1ead757441c56","src/object_id.rs":"086df4c0ef60091aab53010061a6fbeecc655994a1d792106c1ea37ef7ef2449","src/oid.rs":"6b3bc5808b1220ebfa32c137024112d1162df88e5dede117fb6ecaa21867092b","src/prefix.rs":"d9281644da9ec8939452cb4ad42aa7229c754e32ad45e6d3b7f82b7ec868b092"},"package":"2ccf425543779cddaa4a7c62aba3fa9d90ea135b160be0a72dd93c063121ad4a"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"59b94652dc040220e6d147c76aa484cf0e95dfb77594d2de98eec10abe51e4b9","Cargo.toml":"c4c546ee8dc2f065258cb35d125b1ffc7469ca4d58e758deafd763ca991cdee1","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/kind.rs":"b76634865925155fddcf10a94ec37f08be8a61855438ce2577566fda816006f0","src/lib.rs":"9079b3ac1e6471a5fd05dbea751d1ef29bea008be3d2a11978d1ead757441c56","src/object_id.rs":"74df1fb6335707fd0a694b1e003c221c9a165cc06e6395786b8620a9a6e37a5d","src/oid.rs":"6b3bc5808b1220ebfa32c137024112d1162df88e5dede117fb6ecaa21867092b","src/prefix.rs":"d9281644da9ec8939452cb4ad42aa7229c754e32ad45e6d3b7f82b7ec868b092"},"package":"1884c7b41ea0875217c1be9ce91322f90bde433e91d374d0e1276073a51ccc60"} \ No newline at end of file
diff --git a/vendor/gix-hash/CHANGELOG.md b/vendor/gix-hash/CHANGELOG.md
index 86d3693b5..d445a4d8f 100644
--- a/vendor/gix-hash/CHANGELOG.md
+++ b/vendor/gix-hash/CHANGELOG.md
@@ -5,6 +5,31 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.13.1 (2023-10-12)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 3 commits contributed to the release.
+ - 33 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+ - Merge branch 'improvements' ([`429e7b2`](https://github.com/Byron/gitoxide/commit/429e7b25f93c8a7947db19bafa74babf199a1aa6))
+ - Add another doc-alias for a commonly used hash method ([`ed458c0`](https://github.com/Byron/gitoxide/commit/ed458c08133ddf1ea3b05b3c95c6534f80763259))
+</details>
+
## 0.13.0 (2023-09-08)
### Bug Fixes (BREAKING)
@@ -16,7 +41,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<csr-read-only-do-not-edit/>
- - 4 commits contributed to the release over the course of 17 calendar days.
+ - 5 commits contributed to the release over the course of 17 calendar days.
- 17 days passed between releases.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -28,6 +53,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-date v0.8.0, gix-hash v0.13.0, gix-features v0.34.0, gix-actor v0.26.0, gix-object v0.36.0, gix-path v0.10.0, gix-glob v0.12.0, gix-attributes v0.18.0, gix-packetline-blocking v0.16.6, gix-filter v0.4.0, gix-fs v0.6.0, gix-commitgraph v0.20.0, gix-hashtable v0.4.0, gix-revwalk v0.7.0, gix-traverse v0.32.0, gix-worktree-stream v0.4.0, gix-archive v0.4.0, gix-config-value v0.14.0, gix-tempfile v9.0.0, gix-lock v9.0.0, gix-ref v0.36.0, gix-sec v0.10.0, gix-config v0.29.0, gix-prompt v0.7.0, gix-url v0.23.0, gix-credentials v0.19.0, gix-diff v0.35.0, gix-discover v0.24.0, gix-ignore v0.7.0, gix-index v0.24.0, gix-macros v0.1.0, gix-mailmap v0.18.0, gix-negotiate v0.7.0, gix-pack v0.42.0, gix-odb v0.52.0, gix-pathspec v0.2.0, gix-packetline v0.16.6, gix-transport v0.36.0, gix-protocol v0.39.0, gix-revision v0.21.0, gix-refspec v0.17.0, gix-submodule v0.3.0, gix-worktree v0.25.0, gix-worktree-state v0.2.0, gix v0.53.0, safety bump 39 crates ([`8bd0456`](https://github.com/Byron/gitoxide/commit/8bd045676bb2cdc02624ab93e73ff8518064ca38))
- Prepare changelogs for release ([`375db06`](https://github.com/Byron/gitoxide/commit/375db06a8442378c3f7a922fae38e2a6694d9d04))
- Merge branch `dyn`ification ([`f658fcc`](https://github.com/Byron/gitoxide/commit/f658fcc52dc2200ae34ca53dc10be97fb9012057))
- Use `dyn` trait where possible. ([`072ee32`](https://github.com/Byron/gitoxide/commit/072ee32f693a31161cd6a843da6582d13efbb20b))
diff --git a/vendor/gix-hash/Cargo.toml b/vendor/gix-hash/Cargo.toml
index b3f515ac0..68dd948a3 100644
--- a/vendor/gix-hash/Cargo.toml
+++ b/vendor/gix-hash/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-hash"
-version = "0.13.0"
+version = "0.13.1"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
include = [
"src/**/*",
diff --git a/vendor/gix-hash/src/object_id.rs b/vendor/gix-hash/src/object_id.rs
index fe1b2e9ba..4234d63b5 100644
--- a/vendor/gix-hash/src/object_id.rs
+++ b/vendor/gix-hash/src/object_id.rs
@@ -123,6 +123,7 @@ impl ObjectId {
/// Returns an instances whose bytes are all zero.
#[inline]
+ #[doc(alias = "zero", alias = "git2")]
pub const fn null(kind: Kind) -> ObjectId {
match kind {
Kind::Sha1 => Self::null_sha1(),
@@ -131,6 +132,7 @@ impl ObjectId {
/// Returns `true` if this hash consists of all null bytes.
#[inline]
+ #[doc(alias = "is_zero", alias = "git2")]
pub fn is_null(&self) -> bool {
match self {
ObjectId::Sha1(digest) => &digest[..] == oid::null_sha1().as_bytes(),
diff --git a/vendor/gix-ignore/.cargo-checksum.json b/vendor/gix-ignore/.cargo-checksum.json
index 9eb286cc0..7ee2dc335 100644
--- a/vendor/gix-ignore/.cargo-checksum.json
+++ b/vendor/gix-ignore/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"4fa9e6966f62f5da7dff23ebce6eae6b9f142a23ec013f9c67d304d3a2d87364","Cargo.toml":"942d55400eb183efba559158ded736c243cbd489dde86f3fdf637623b4445c19","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/lib.rs":"455b36514f19f0f8a2bad71c3b14cf1e09ff0387006a6d53216a4032b7478fc9","src/parse.rs":"1ff89eb91bf98473494b459eb334ed8c4665e352247ccd02708568ff0a85172b","src/search.rs":"85a631107bf9e8a25f493a04b006aa17da674e94a2723dd03ab9a1bd55f48a42"},"package":"b048f443a1f6b02da4205c34d2e287e3fd45d75e8e2f06cfb216630ea9bff5e3"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"720516f6a2c08638dbde2e3b3d6d4743495b6ababebd5c482680574f16a2a594","Cargo.toml":"56f4134002686327fceb092e120412fce58c9c08d885891906853c0487759344","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/lib.rs":"455b36514f19f0f8a2bad71c3b14cf1e09ff0387006a6d53216a4032b7478fc9","src/parse.rs":"1ff89eb91bf98473494b459eb334ed8c4665e352247ccd02708568ff0a85172b","src/search.rs":"85a631107bf9e8a25f493a04b006aa17da674e94a2723dd03ab9a1bd55f48a42"},"package":"1e73c07763a8005ae02cb5cf83040729cea9bb70c7cef68ec6c24159904c499a"} \ No newline at end of file
diff --git a/vendor/gix-ignore/CHANGELOG.md b/vendor/gix-ignore/CHANGELOG.md
index b2a5ce046..056022a1e 100644
--- a/vendor/gix-ignore/CHANGELOG.md
+++ b/vendor/gix-ignore/CHANGELOG.md
@@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-## 0.8.0 (2023-09-24)
+## 0.9.0 (2023-10-12)
A maintenance release without user-facing changes.
@@ -14,6 +14,29 @@ A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
- 1 commit contributed to the release.
+ - 17 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+</details>
+
+## 0.8.0 (2023-09-24)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 2 commits contributed to the release.
- 16 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,6 +48,7 @@ A maintenance release without user-facing changes.
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
</details>
diff --git a/vendor/gix-ignore/Cargo.toml b/vendor/gix-ignore/Cargo.toml
index d33902fa2..c24f1481b 100644
--- a/vendor/gix-ignore/Cargo.toml
+++ b/vendor/gix-ignore/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-ignore"
-version = "0.8.0"
+version = "0.9.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
include = [
"src/**/*",
@@ -48,7 +48,7 @@ version = "0.2.1"
optional = true
[dependencies.gix-glob]
-version = "^0.13.0"
+version = "^0.14.0"
[dependencies.gix-path]
version = "^0.10.0"
diff --git a/vendor/gix-index/.cargo-checksum.json b/vendor/gix-index/.cargo-checksum.json
index 40c6b9e9e..7667e2043 100644
--- a/vendor/gix-index/.cargo-checksum.json
+++ b/vendor/gix-index/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"a41b5defb7051ee80bcd82a6398ffff375b0a82d3f64f8046379c49d0eefb422","Cargo.toml":"39629ab1d6629c39eec7e97b1b90b956957c5eec22fd4b06c7dce0be4334f743","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","README.md":"5b2b4dc7ee56738b6049fb41ff03dd3d71fbdc1f0f72080f47c0d24f79c4b5cd","src/access/mod.rs":"bc18f80f6e0ac72e08e61779bb596afc8961ab5af89aa3bc63ff70ff45ef2652","src/access/sparse.rs":"06b49a6a4578be70814a85e376fda23d0a2465ca83d7a201f9f365b29710a50b","src/decode/entries.rs":"b3e7f09eb9532ae7dbbe51fc1924c94b8a0440b00e4259474c1032509354b480","src/decode/header.rs":"dc8b369949e811e7f6f7234f0b2f344645582079af4fd63f02d7f30c0495ba43","src/decode/mod.rs":"19e9b9cbe6aa7cc35ede8d9e7d7d2695b78c5880350480005f258740b3d56656","src/entry/flags.rs":"b32458d6567bc005c3da72552205788c5191b4fb0de80ebc8fccc86c934e2dc9","src/entry/mod.rs":"eb8f7627124a680ebff0797f888618964a5f80a5c819f56f5f4573b0da74cb4f","src/entry/mode.rs":"66564a179a5273f8101c1515573ac5e910ebc96f01cc06fee3d344f944d9fc7b","src/entry/stat.rs":"0b08093293be4cea17a9655add779b909e65129709c048a77cc04db610cacf75","src/entry/write.rs":"9b1aa309fff759bd5791c39fb348ceb5cc6ce935d7eddaf841b9bea7672aa1c8","src/extension/decode.rs":"b39f3dbde55511e348514a9960f1ec6c724b7f1c222a0d246b6155966ec29624","src/extension/end_of_index_entry/decode.rs":"cfd8f5c3d5657669448826292737460a1dad124f3162ea0323c2e7a7b3bc259a","src/extension/end_of_index_entry/mod.rs":"4f05ce9eecdd91af4ecec5aeb46d3cd90cb96b718b87ce72a5cb7577c5e2a697","src/extension/end_of_index_entry/write.rs":"2a95dc2b10c40b18d2da5bf3cce787b47c09b83efb1cf75a4b70a6258978f897","src/extension/fs_monitor.rs":"ef45ee058ece94470c1c8ac47a84b542f7cfab47bbe49862d0c92310946fcab0","src/extension/index_entry_offset_table.rs":"4f51387b087abbdeb96c87cf935602749bfe36f1d44779c44b24d719d2689de0","src/extension/iter.rs":"d3f3efd6fc542fcc5ec2631083b8ecd764c00838f5614ae4a9f8f6c5436b0009","src/extension/link.rs":"22bdaf6f25d869481cfa230c8b07d565b928ca8d977e28be7bee6a74131a5a25","src/extension/mod.rs":"358dcf44248ce3920af9ff3764e972e69ecddd9f12c34faeab1bec85b6c85996","src/extension/resolve_undo.rs":"37d29f82d8fc2926e9ad36796753e7c63c15ab96418577e50f2be78b4c539cf2","src/extension/sparse.rs":"d95d64d39b1007ad1039ab3584671c25b0069e28b2cddfcdc91b090ee4eea684","src/extension/tree/decode.rs":"fda161e6e83f14356fe737ff66bb6cf01f759e584ca271bceff028e4da43a0c7","src/extension/tree/mod.rs":"a7ae7ee2bbacacf3536051f479c4f8c0cab73fa2dd270ab50ec96bdb49fc88db","src/extension/tree/verify.rs":"7a39f730d9e79bb3a2f521514e9c635b3c8e3b4c3262f5bffe7e6612c8759bee","src/extension/tree/write.rs":"bb71478fff5773385109c2006ecd7e84808691d566e2be04d8b90c048c9895b6","src/extension/untracked_cache.rs":"14cb9fc4dd097e0faa497a6d27393a9055b0066e63bf9a2350ee02c5f7669f70","src/file/init.rs":"9906c7ba573de75f4823f61cdaceaf7de876f51891a398528dd424d7d3686d6c","src/file/mod.rs":"6737b994a21d519550d2930dab1d1de2e1cd42f0fc41c2fa10f6c37d24f14045","src/file/verify.rs":"57c5619a5a85cd708d3788d5727a7227777ea1b99643c9b95ac881a0442ffa0a","src/file/write.rs":"342c1902b1cf01b3e6ba89d868ba6f2df654f020919a20491ca6c164c709a1cd","src/init.rs":"66d623fe96deea6db9e40091c4caa75f8066c12f7a9283b523b34646d60fbdaa","src/lib.rs":"61bc554d273e75130905f0db63d01528c0f7671b50fdaf17483b905b857ea5d3","src/verify.rs":"207c4b9723fc70b2b9219f39c5992216a4e6cc440247c5a452d2787941c53b3b","src/write.rs":"60fb380ae27962d1f59f117ded6eab56758b04da2e98984635fc7292ed9a929a"},"package":"f54d63a9d13c13088f41f5a3accbec284e492ac8f4f707fcc307c139622e17b7"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"917727b1d72c19c14c8d922c5073e8d73287210d54ff4c6887dbeeee9102b4ef","Cargo.toml":"32874f8d79db9e10e2618a9acd2a8d8ca83f03c24d08397501057d452cdd1bc4","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","README.md":"5b2b4dc7ee56738b6049fb41ff03dd3d71fbdc1f0f72080f47c0d24f79c4b5cd","src/access/mod.rs":"1060edabbbfdde70f82bdcb3a9ba5b25f32ac5d7a00309ee2aa5f8bfa80bc82c","src/access/sparse.rs":"06b49a6a4578be70814a85e376fda23d0a2465ca83d7a201f9f365b29710a50b","src/decode/entries.rs":"b3e7f09eb9532ae7dbbe51fc1924c94b8a0440b00e4259474c1032509354b480","src/decode/header.rs":"dc8b369949e811e7f6f7234f0b2f344645582079af4fd63f02d7f30c0495ba43","src/decode/mod.rs":"19e9b9cbe6aa7cc35ede8d9e7d7d2695b78c5880350480005f258740b3d56656","src/entry/flags.rs":"b32458d6567bc005c3da72552205788c5191b4fb0de80ebc8fccc86c934e2dc9","src/entry/mod.rs":"5f2af3e8b7234afc6e9ef09d9fac1bbcff2d0cd56d213070263c19eec3d3eb3a","src/entry/mode.rs":"66564a179a5273f8101c1515573ac5e910ebc96f01cc06fee3d344f944d9fc7b","src/entry/stat.rs":"fa00d668f6d231ce70ec31da602582449241776f161e36bfd4bbb0ab6f537191","src/entry/write.rs":"9b1aa309fff759bd5791c39fb348ceb5cc6ce935d7eddaf841b9bea7672aa1c8","src/extension/decode.rs":"b39f3dbde55511e348514a9960f1ec6c724b7f1c222a0d246b6155966ec29624","src/extension/end_of_index_entry/decode.rs":"cfd8f5c3d5657669448826292737460a1dad124f3162ea0323c2e7a7b3bc259a","src/extension/end_of_index_entry/mod.rs":"4f05ce9eecdd91af4ecec5aeb46d3cd90cb96b718b87ce72a5cb7577c5e2a697","src/extension/end_of_index_entry/write.rs":"2a95dc2b10c40b18d2da5bf3cce787b47c09b83efb1cf75a4b70a6258978f897","src/extension/fs_monitor.rs":"ef45ee058ece94470c1c8ac47a84b542f7cfab47bbe49862d0c92310946fcab0","src/extension/index_entry_offset_table.rs":"4f51387b087abbdeb96c87cf935602749bfe36f1d44779c44b24d719d2689de0","src/extension/iter.rs":"d3f3efd6fc542fcc5ec2631083b8ecd764c00838f5614ae4a9f8f6c5436b0009","src/extension/link.rs":"22bdaf6f25d869481cfa230c8b07d565b928ca8d977e28be7bee6a74131a5a25","src/extension/mod.rs":"358dcf44248ce3920af9ff3764e972e69ecddd9f12c34faeab1bec85b6c85996","src/extension/resolve_undo.rs":"37d29f82d8fc2926e9ad36796753e7c63c15ab96418577e50f2be78b4c539cf2","src/extension/sparse.rs":"d95d64d39b1007ad1039ab3584671c25b0069e28b2cddfcdc91b090ee4eea684","src/extension/tree/decode.rs":"fda161e6e83f14356fe737ff66bb6cf01f759e584ca271bceff028e4da43a0c7","src/extension/tree/mod.rs":"a7ae7ee2bbacacf3536051f479c4f8c0cab73fa2dd270ab50ec96bdb49fc88db","src/extension/tree/verify.rs":"7a39f730d9e79bb3a2f521514e9c635b3c8e3b4c3262f5bffe7e6612c8759bee","src/extension/tree/write.rs":"bb71478fff5773385109c2006ecd7e84808691d566e2be04d8b90c048c9895b6","src/extension/untracked_cache.rs":"14cb9fc4dd097e0faa497a6d27393a9055b0066e63bf9a2350ee02c5f7669f70","src/file/init.rs":"1d28b7c07664a9fda2720de0c7e12063e044f3bcaf3310dcd48f38a56f074258","src/file/mod.rs":"6737b994a21d519550d2930dab1d1de2e1cd42f0fc41c2fa10f6c37d24f14045","src/file/verify.rs":"8dfec40e5cc0c48f0da93fe22fcb069b87a97150061a0615e235c82aae17dffb","src/file/write.rs":"68279fd02dfd390e6f8a84cc3f96c9afb98b887a0222509391f97dbb0b0fddf8","src/init.rs":"565d94c145cc3ab928c8bbae07ee7b097e8f2375f7943643e81cb75f3e9c4ff2","src/lib.rs":"ec62a77dbafe0d03008ecb4ca2f3dd5116ed6215ab3fe9f587340b2260dc120f","src/verify.rs":"207c4b9723fc70b2b9219f39c5992216a4e6cc440247c5a452d2787941c53b3b","src/write.rs":"60fb380ae27962d1f59f117ded6eab56758b04da2e98984635fc7292ed9a929a"},"package":"c83a4fcc121b2f2e109088f677f89f85e7a8ebf39e8e6659c0ae54d4283b1650"} \ No newline at end of file
diff --git a/vendor/gix-index/CHANGELOG.md b/vendor/gix-index/CHANGELOG.md
index bc5a540a8..90d256244 100644
--- a/vendor/gix-index/CHANGELOG.md
+++ b/vendor/gix-index/CHANGELOG.md
@@ -5,6 +5,38 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.26.0 (2023-10-12)
+
+### Bug Fixes (BREAKING)
+
+ - <csr-id-a1794b537c036e5469f7c2808d460bffcc6eeb5a/> use `PathStorageRef` in place of `&PathStorage`
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 8 commits contributed to the release over the course of 13 calendar days.
+ - 17 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+ - Merge branch 'fix-input' ([`a899f74`](https://github.com/Byron/gitoxide/commit/a899f74a20c3e9a40f456387d71b48ca9187af17))
+ - Assure a prefixed entries range is never empty. ([`357ba13`](https://github.com/Byron/gitoxide/commit/357ba137fe63e4b3f92732d665870085be888223))
+ - Fix docs ([`995bc84`](https://github.com/Byron/gitoxide/commit/995bc840664cbd4aeb7f95592e3125dee63bdcd4))
+ - Merge branch 'reset' ([`b842691`](https://github.com/Byron/gitoxide/commit/b8426919a491dc3a7df01ee3f258fc0d8a3a327c))
+ - Use `PathStorageRef` in place of `&PathStorage` ([`a1794b5`](https://github.com/Byron/gitoxide/commit/a1794b537c036e5469f7c2808d460bffcc6eeb5a))
+ - Add more traces to potentially longer-running operations ([`1568948`](https://github.com/Byron/gitoxide/commit/15689482351691079652d7b9b80b5aaecb7da863))
+ - Adapt to `gix-features` ([`9e7c3e1`](https://github.com/Byron/gitoxide/commit/9e7c3e12528833023bf37ada4e2e90989d848e99))
+</details>
+
## 0.25.0 (2023-09-24)
### New Features
@@ -21,7 +53,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<csr-read-only-do-not-edit/>
- - 4 commits contributed to the release over the course of 1 calendar day.
+ - 5 commits contributed to the release over the course of 1 calendar day.
- 16 days passed between releases.
- 2 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -33,6 +65,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
- Merge branch 'reset' ([`54a8495`](https://github.com/Byron/gitoxide/commit/54a849545140f7f1c0c7564c418071c0a76a34e7))
- Make time conversion more robust ([`fd034e0`](https://github.com/Byron/gitoxide/commit/fd034e03b5a05dcc7a01014ce6a97b7cf93086be))
diff --git a/vendor/gix-index/Cargo.toml b/vendor/gix-index/Cargo.toml
index 5adb14cf1..300c3cdb4 100644
--- a/vendor/gix-index/Cargo.toml
+++ b/vendor/gix-index/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-index"
-version = "0.25.0"
+version = "0.26.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
include = [
"src/**/*",
@@ -62,26 +62,26 @@ version = "0.2.15"
version = "^0.2.7"
[dependencies.gix-features]
-version = "^0.35.0"
+version = "^0.36.0"
features = [
"rustsha1",
"progress",
]
[dependencies.gix-fs]
-version = "^0.7.0"
+version = "^0.8.0"
[dependencies.gix-hash]
-version = "^0.13.0"
+version = "^0.13.1"
[dependencies.gix-lock]
-version = "^10.0.0"
+version = "^11.0.0"
[dependencies.gix-object]
-version = "^0.37.0"
+version = "^0.38.0"
[dependencies.gix-traverse]
-version = "^0.33.0"
+version = "^0.34.0"
[dependencies.itoa]
version = "1.0.3"
diff --git a/vendor/gix-index/src/access/mod.rs b/vendor/gix-index/src/access/mod.rs
index 08cb23020..2a3e85f11 100644
--- a/vendor/gix-index/src/access/mod.rs
+++ b/vendor/gix-index/src/access/mod.rs
@@ -4,7 +4,7 @@ use std::ops::Range;
use bstr::{BStr, ByteSlice, ByteVec};
use filetime::FileTime;
-use crate::{entry, extension, Entry, PathStorage, State, Version};
+use crate::{entry, extension, Entry, PathStorage, PathStorageRef, State, Version};
// TODO: integrate this somehow, somewhere, depending on later usage.
#[allow(dead_code)]
@@ -41,7 +41,7 @@ impl State {
&self.entries
}
/// Return our path backing, the place which keeps all paths one after another, with entries storing only the range to access them.
- pub fn path_backing(&self) -> &PathStorage {
+ pub fn path_backing(&self) -> &PathStorageRef {
&self.path_backing
}
@@ -58,7 +58,7 @@ impl State {
/// Return mutable entries along with their path, as obtained from `backing`.
pub fn entries_mut_with_paths_in<'state, 'backing>(
&'state mut self,
- backing: &'backing PathStorage,
+ backing: &'backing PathStorageRef,
) -> impl Iterator<Item = (&'state mut Entry, &'backing BStr)> {
self.entries.iter_mut().map(move |e| {
let path = backing[e.path.clone()].as_bstr();
@@ -279,7 +279,7 @@ impl State {
}
/// Return a writable slice to entries and read-access to their path storage at the same time.
- pub fn entries_mut_and_pathbacking(&mut self) -> (&mut [Entry], &PathStorage) {
+ pub fn entries_mut_and_pathbacking(&mut self) -> (&mut [Entry], &PathStorageRef) {
(&mut self.entries, &self.path_backing)
}
diff --git a/vendor/gix-index/src/entry/mod.rs b/vendor/gix-index/src/entry/mod.rs
index e680e08b0..2f257ef63 100644
--- a/vendor/gix-index/src/entry/mod.rs
+++ b/vendor/gix-index/src/entry/mod.rs
@@ -1,4 +1,8 @@
-/// The stage of an entry, one of 0 = base, 1 = ours, 2 = theirs
+/// The stage of an entry, one of…
+/// * 0 = no conflict,
+/// * 1 = base,
+/// * 2 = ours,
+/// * 3 = theirs
pub type Stage = u32;
///
@@ -71,7 +75,7 @@ mod access {
backing[self.path.clone()].as_bstr()
}
- /// Return an entry's stage.
+ /// Return an entry's stage. See [entry::Stage] for possible values.
pub fn stage(&self) -> entry::Stage {
self.flags.stage()
}
diff --git a/vendor/gix-index/src/entry/stat.rs b/vendor/gix-index/src/entry/stat.rs
index 7bde71763..5e60f8540 100644
--- a/vendor/gix-index/src/entry/stat.rs
+++ b/vendor/gix-index/src/entry/stat.rs
@@ -92,21 +92,22 @@ impl Stat {
size: fstat.len() as u32,
};
#[cfg(unix)]
- use std::os::unix::fs::MetadataExt;
- #[cfg(unix)]
- let res = Stat {
- mtime: mtime.try_into().unwrap_or_default(),
- ctime: ctime.try_into().unwrap_or_default(),
- // truncating to 32 bits is fine here because
- // that's what the linux syscalls returns
- // just rust upcasts to 64 bits for some reason?
- // numbers this large are impractical anyway (that's a lot of hard-drives).
- dev: fstat.dev() as u32,
- ino: fstat.ino() as u32,
- uid: fstat.uid(),
- gid: fstat.gid(),
- // truncation to 32 bits is on purpose (git does the same).
- size: fstat.len() as u32,
+ let res = {
+ use std::os::unix::fs::MetadataExt;
+ Stat {
+ mtime: mtime.try_into().unwrap_or_default(),
+ ctime: ctime.try_into().unwrap_or_default(),
+ // truncating to 32 bits is fine here because
+ // that's what the linux syscalls returns
+ // just rust upcasts to 64 bits for some reason?
+ // numbers this large are impractical anyway (that's a lot of hard-drives).
+ dev: fstat.dev() as u32,
+ ino: fstat.ino() as u32,
+ uid: fstat.uid(),
+ gid: fstat.gid(),
+ // truncation to 32 bits is on purpose (git does the same).
+ size: fstat.len() as u32,
+ }
};
Ok(res)
diff --git a/vendor/gix-index/src/file/init.rs b/vendor/gix-index/src/file/init.rs
index 99f4be258..ed13bed6e 100644
--- a/vendor/gix-index/src/file/init.rs
+++ b/vendor/gix-index/src/file/init.rs
@@ -78,7 +78,7 @@ impl File {
let num_bytes_to_hash = meta.len() - object_hash.len_in_bytes() as u64;
let actual_hash = gix_features::hash::bytes(
&mut file,
- num_bytes_to_hash as usize,
+ num_bytes_to_hash,
object_hash,
&mut gix_features::progress::Discard,
&Default::default(),
diff --git a/vendor/gix-index/src/file/verify.rs b/vendor/gix-index/src/file/verify.rs
index 3890acd95..1c0dc7539 100644
--- a/vendor/gix-index/src/file/verify.rs
+++ b/vendor/gix-index/src/file/verify.rs
@@ -27,7 +27,7 @@ impl File {
let should_interrupt = AtomicBool::new(false);
let actual = gix_features::hash::bytes_of_file(
&self.path,
- num_bytes_to_hash as usize,
+ num_bytes_to_hash,
checksum.kind(),
&mut gix_features::progress::Discard,
&should_interrupt,
diff --git a/vendor/gix-index/src/file/write.rs b/vendor/gix-index/src/file/write.rs
index 47a4cde96..0623f6c59 100644
--- a/vendor/gix-index/src/file/write.rs
+++ b/vendor/gix-index/src/file/write.rs
@@ -22,6 +22,7 @@ impl File {
mut out: impl std::io::Write,
options: write::Options,
) -> std::io::Result<(Version, gix_hash::ObjectId)> {
+ let _span = gix_features::trace::detail!("gix_index::File::write_to()", skip_hash = options.skip_hash);
let (version, hash) = if options.skip_hash {
let out: &mut dyn std::io::Write = &mut out;
let version = self.state.write_to(out, options)?;
@@ -40,6 +41,7 @@ impl File {
///
/// Note that the hash produced will be stored which is why we need to be mutable.
pub fn write(&mut self, options: write::Options) -> Result<(), Error> {
+ let _span = gix_features::trace::detail!("gix_index::File::write()", path = ?self.path);
let mut lock = std::io::BufWriter::with_capacity(
64 * 1024,
gix_lock::File::acquire_to_update_resource(&self.path, gix_lock::acquire::Fail::Immediately, None)?,
diff --git a/vendor/gix-index/src/init.rs b/vendor/gix-index/src/init.rs
index 9fe0b8e27..ec09af538 100644
--- a/vendor/gix-index/src/init.rs
+++ b/vendor/gix-index/src/init.rs
@@ -31,7 +31,7 @@ mod from_tree {
fs_monitor: None,
}
}
- /// Create an index [`State`][crate::State] by traversing `tree` recursively, accessing sub-trees
+ /// Create an index [`State`] by traversing `tree` recursively, accessing sub-trees
/// with `find`.
///
/// **No extension data is currently produced**.
diff --git a/vendor/gix-index/src/lib.rs b/vendor/gix-index/src/lib.rs
index 1fb1f6800..55b332a82 100644
--- a/vendor/gix-index/src/lib.rs
+++ b/vendor/gix-index/src/lib.rs
@@ -121,9 +121,10 @@ mod impls {
f,
"{} {}{:?} {} {}",
match entry.flags.stage() {
- 0 => "BASE ",
- 1 => "OURS ",
- 2 => "THEIRS ",
+ 0 => " ",
+ 1 => "BASE ",
+ 2 => "OURS ",
+ 3 => "THEIRS ",
_ => "UNKNOWN",
},
if entry.flags.is_empty() {
diff --git a/vendor/gix-lock/.cargo-checksum.json b/vendor/gix-lock/.cargo-checksum.json
index 805e773ff..09aad9d39 100644
--- a/vendor/gix-lock/.cargo-checksum.json
+++ b/vendor/gix-lock/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"d60ec0a1155080d0360afa34a871dc099bc7c06ece9a888698e857105738b27d","Cargo.toml":"1f7ffbf8228a7c5599c9d75168da3bc47085b46f622fe52b405b5faad3db1102","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","README.md":"cf2fb5b63a81699b01aaa03994874d70af2d8650a047b41350924c8f900c7ea9","src/acquire.rs":"6f950e6e66f824c24f605dbc5c0ddba587db69917d0e8f8976d9a331088497ca","src/commit.rs":"5dd467479f5eed435c7ddc4b5b4b9d89acd88521ce8d747efda92a3ce881df46","src/file.rs":"34e3a20237b86ec7f9703afd1ab89e13fad1c067dfc67b035924773548d2e849","src/lib.rs":"b77b9ac6e1e28bfe71fb12f509c880bdd226c3bad4b30085923e0cdf7464febc"},"package":"47fc96fa8b6b6d33555021907c81eb3b27635daecf6e630630bdad44f8feaa95"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"6880053d57add73809a5fd477666f7f841b203589519d7b84ed652799993870e","Cargo.toml":"1ed459ae488b16b71e277665306d6c0d8d5e0b552bbb3021b5ac4bdec3439fb3","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","README.md":"cf2fb5b63a81699b01aaa03994874d70af2d8650a047b41350924c8f900c7ea9","src/acquire.rs":"6f950e6e66f824c24f605dbc5c0ddba587db69917d0e8f8976d9a331088497ca","src/commit.rs":"5dd467479f5eed435c7ddc4b5b4b9d89acd88521ce8d747efda92a3ce881df46","src/file.rs":"34e3a20237b86ec7f9703afd1ab89e13fad1c067dfc67b035924773548d2e849","src/lib.rs":"b77b9ac6e1e28bfe71fb12f509c880bdd226c3bad4b30085923e0cdf7464febc"},"package":"f4feb1dcd304fe384ddc22edba9dd56a42b0800032de6537728cea2f033a4f37"} \ No newline at end of file
diff --git a/vendor/gix-lock/CHANGELOG.md b/vendor/gix-lock/CHANGELOG.md
index 7c0ecfc59..49d6667b3 100644
--- a/vendor/gix-lock/CHANGELOG.md
+++ b/vendor/gix-lock/CHANGELOG.md
@@ -5,6 +5,29 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 11.0.0 (2023-10-12)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 1 commit contributed to the release.
+ - 17 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+</details>
+
## 10.0.0 (2023-09-24)
<csr-id-ae298262add18049969f9451ed2a704d248eed41/>
@@ -22,7 +45,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<csr-read-only-do-not-edit/>
- - 4 commits contributed to the release over the course of 3 calendar days.
+ - 5 commits contributed to the release over the course of 3 calendar days.
- 16 days passed between releases.
- 2 commits were understood as [conventional](https://www.conventionalcommits.org).
- 1 unique issue was worked on: [#1026](https://github.com/Byron/gitoxide/issues/1026)
@@ -36,6 +59,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
* **[#1026](https://github.com/Byron/gitoxide/issues/1026)**
- Make clear that locks can leak and what that means on acquiring a lock ([`ae29826`](https://github.com/Byron/gitoxide/commit/ae298262add18049969f9451ed2a704d248eed41))
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
- Merge branch 'gix-lock-improvements' ([`b009db0`](https://github.com/Byron/gitoxide/commit/b009db018df435a8c57848dc4cdc52d4278a6d9d))
- Make it easy to configure lock acquisition failure from Duration. ([`fda4337`](https://github.com/Byron/gitoxide/commit/fda433757e3cd6645edfd2e18dcd2e67d1ef930f))
diff --git a/vendor/gix-lock/Cargo.toml b/vendor/gix-lock/Cargo.toml
index 983638ca4..4401fafc5 100644
--- a/vendor/gix-lock/Cargo.toml
+++ b/vendor/gix-lock/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-lock"
-version = "10.0.0"
+version = "11.0.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
include = [
"src/**/*",
@@ -31,7 +31,7 @@ test = true
doctest = false
[dependencies.gix-tempfile]
-version = "^10.0.0"
+version = "^11.0.0"
default-features = false
[dependencies.gix-utils]
diff --git a/vendor/gix-negotiate/.cargo-checksum.json b/vendor/gix-negotiate/.cargo-checksum.json
index 03aa46f32..a0342841a 100644
--- a/vendor/gix-negotiate/.cargo-checksum.json
+++ b/vendor/gix-negotiate/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"cb38da277ca9303070b8ef9c5fef3f788760af0fbe264b010bac52e6d345de20","Cargo.toml":"4abaee5b0f9da153ed5db6df1ed03ed82cf7bd16e29a4b377e06f18848eb7717","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/consecutive.rs":"04760aa71a0cec31c019911000e13e7aa4d0b2b83dac740060a28276912c777d","src/lib.rs":"af465ffa6f78c00e219426906f589712f0e3f91a0b199411d09d1687df9ce253","src/noop.rs":"448f0ee6e34eec63037009bdfcaf6e50cd3c0139540899e3e004d7825af7139a","src/skipping.rs":"3014e6a0174a476b3d7b021afdc3af94f293cebb61f03edd6636e3136dda03fb","tests/baseline/mod.rs":"9b0fb3ce68c07548305da2555b4c95adb447ea2978d9edd459d067c10697de30","tests/fixtures/generated-archives/make_repos.tar.xz":"dcfe215bf6f1db2f757b9201c5c3682ddc4340a627832a03a70d5768fe192beb","tests/fixtures/make_repos.sh":"03145c0e92e14f55b9d4b3500de8736f77ab4cfb04184aa6b87dc043e16a44fb","tests/negotiate.rs":"1755d692580e5781548cf92368055f1f2aa797780ffc00aa74621d525c46d0da"},"package":"6f1697bf9911c6d1b8d709b9e6ef718cb5ea5821a1b7991520125a8134448004"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"ca3a515b955ac5cf91d9c76e55022f370ba4f2e2dc2c1cbe654effd855f6666f","Cargo.toml":"8228c34fa73ef927645083a97989037cfb258e2143959c701388c80523b58b33","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/consecutive.rs":"04760aa71a0cec31c019911000e13e7aa4d0b2b83dac740060a28276912c777d","src/lib.rs":"af465ffa6f78c00e219426906f589712f0e3f91a0b199411d09d1687df9ce253","src/noop.rs":"448f0ee6e34eec63037009bdfcaf6e50cd3c0139540899e3e004d7825af7139a","src/skipping.rs":"3014e6a0174a476b3d7b021afdc3af94f293cebb61f03edd6636e3136dda03fb","tests/baseline/mod.rs":"9b0fb3ce68c07548305da2555b4c95adb447ea2978d9edd459d067c10697de30","tests/fixtures/generated-archives/make_repos.tar.xz":"dcfe215bf6f1db2f757b9201c5c3682ddc4340a627832a03a70d5768fe192beb","tests/fixtures/make_repos.sh":"03145c0e92e14f55b9d4b3500de8736f77ab4cfb04184aa6b87dc043e16a44fb","tests/negotiate.rs":"1755d692580e5781548cf92368055f1f2aa797780ffc00aa74621d525c46d0da"},"package":"2a5cdcf491ecc9ce39dcc227216c540355fe0024ae7c38e94557752ca5ebb67f"} \ No newline at end of file
diff --git a/vendor/gix-negotiate/CHANGELOG.md b/vendor/gix-negotiate/CHANGELOG.md
index 9933728d5..756f11ff8 100644
--- a/vendor/gix-negotiate/CHANGELOG.md
+++ b/vendor/gix-negotiate/CHANGELOG.md
@@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-## 0.8.0 (2023-09-24)
+## 0.9.0 (2023-10-12)
A maintenance release without user-facing changes.
@@ -14,6 +14,29 @@ A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
- 1 commit contributed to the release.
+ - 17 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+</details>
+
+## 0.8.0 (2023-09-24)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 2 commits contributed to the release.
- 16 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,6 +48,7 @@ A maintenance release without user-facing changes.
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
</details>
diff --git a/vendor/gix-negotiate/Cargo.toml b/vendor/gix-negotiate/Cargo.toml
index 32b004cde..e4ac882b0 100644
--- a/vendor/gix-negotiate/Cargo.toml
+++ b/vendor/gix-negotiate/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-negotiate"
-version = "0.8.0"
+version = "0.9.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
description = "A crate of the gitoxide project implementing negotiation algorithms"
license = "MIT OR Apache-2.0"
@@ -27,19 +27,19 @@ doctest = false
version = "2"
[dependencies.gix-commitgraph]
-version = "^0.21.0"
+version = "^0.22.0"
[dependencies.gix-date]
version = "^0.8.0"
[dependencies.gix-hash]
-version = "^0.13.0"
+version = "^0.13.1"
[dependencies.gix-object]
-version = "^0.37.0"
+version = "^0.38.0"
[dependencies.gix-revwalk]
-version = "^0.8.0"
+version = "^0.9.0"
[dependencies.smallvec]
version = "1.10.0"
diff --git a/vendor/gix-object/.cargo-checksum.json b/vendor/gix-object/.cargo-checksum.json
index 1c2d578fd..53b817439 100644
--- a/vendor/gix-object/.cargo-checksum.json
+++ b/vendor/gix-object/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"df234e21d8d0bc316a0ac6adeacbd901b965acd9bdad0b9454ac36e19567ffbb","Cargo.toml":"778daa8a0e3e036dce919a051c716d0138326a771922a3d6f7c048ef3ed1e013","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/blob.rs":"498e4d4d54c2ba9455614f3e0b06b6b9bbfcfd1fab2b4a18371f791114ba494c","src/commit/decode.rs":"d63699485135c2100459cf3683f24c24edf9f8b214076585a1423747d0ea5efc","src/commit/message/body.rs":"3ada2e797423756202e86db398fefc704fcaf6e42b4d8fe42ca839b14863b883","src/commit/message/decode.rs":"df0dd08b400c030dbf3a9da3733c2e5199423c643db4f3bfd4f58832c2d9d4ff","src/commit/message/mod.rs":"3c88e53583cbbc8606ba400bba3d54f2ce6fa75ce4c78d73e2d8bae2b8f45046","src/commit/mod.rs":"81b8f7305945de51cc4d828d53837b7e013e68c4a8d896d445fe29972a6bca03","src/commit/ref_iter.rs":"3f1216d00b7bcfd0bd9eff3ee767f706b42472aa429246375fc770b543dbac84","src/commit/write.rs":"18df601baab03e03ab414b91631087c46dab63f6d6a46fd1fbf04b6b55f1edb8","src/data.rs":"fd1f9281274855d26570d866335ebf5f27709a80308f3c4e5da26a0e7db4be5c","src/encode.rs":"cac3ac7a9263f31e2b19a434938607500ac3256b6bd3bf9ffa24dd6ef401b3a3","src/kind.rs":"f6af54494ddf2e42d07e1ebbc2aad25a3e291f0e7275618ab0758d8802963ca5","src/lib.rs":"509f5326ae54c9f5ad0d65bf701d44b98c57fe735604a55d6c45519bee2b83cd","src/object/convert.rs":"5fa061ce08c12cd59cc5e6975c9e6b57a5ac596c5fe63eeb5758080e7dd7a328","src/object/mod.rs":"81ec0da8639b2339c809a84057582efaf5776d48e39e9b00a2af6bbb794eab1c","src/parse.rs":"3e4095cd579aa216e42dc3bb63d01b21c8e8b12d07faa09786fac0950a3d138e","src/tag/decode.rs":"090a128e1c1bebb69633e6e6bda9cf501b606e491be5bb7f9c3ce3f6bd8ab4c1","src/tag/mod.rs":"9532c15c6e90428dffe7dd80bcfe8bea2fd3210e43e0d4b583f7813a8bae4fe5","src/tag/ref_iter.rs":"b7df75f1555dacddaf0b83777e2281679163b52f3cf086b33b24af4b0b582caa","src/tag/write.rs":"61f92cfe525137da564b24816b806da65f45168a0880de1fbbd4899929460d5e","src/tag/write/tests.rs":"e3c3674d73d3436f10c268154b9362eb380ff9c014b6db2a141bd0a0747c4aff","src/traits.rs":"279302ec53f7bfce2aefba1967acd1c033b66199df622c589c65f146e5036ce6","src/tree/mod.rs":"2e3c330b0947d2e24fa7b5ad58690261d313a705671fd97834278fa72a10e39f","src/tree/ref_iter.rs":"2c2c106550cdd21f6a5340abfb8e95661f240130cc4a5346989b67c1c1d6ace8","src/tree/write.rs":"02c68d954428805f59e4407586337c6fe8265e7a80e20bb83f8fe88fe0e0cf9a"},"package":"1e7e19616c67967374137bae83e950e9b518a9ea8a605069bd6716ada357fd6f"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"93395b1678cd57b2a3e591784eff127cb99ffc75fd0e26b6256607d685f41197","Cargo.toml":"14691a203f35c395cd41a78b7b95effefffe6373804a10f5e9481f704bb2d7b3","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/blob.rs":"37877b2a784f556140b4096fcfd9512da59028869ce6d77fb498a1fffd36f7ed","src/commit/decode.rs":"d63699485135c2100459cf3683f24c24edf9f8b214076585a1423747d0ea5efc","src/commit/message/body.rs":"3ada2e797423756202e86db398fefc704fcaf6e42b4d8fe42ca839b14863b883","src/commit/message/decode.rs":"df0dd08b400c030dbf3a9da3733c2e5199423c643db4f3bfd4f58832c2d9d4ff","src/commit/message/mod.rs":"3c88e53583cbbc8606ba400bba3d54f2ce6fa75ce4c78d73e2d8bae2b8f45046","src/commit/mod.rs":"81b8f7305945de51cc4d828d53837b7e013e68c4a8d896d445fe29972a6bca03","src/commit/ref_iter.rs":"3f1216d00b7bcfd0bd9eff3ee767f706b42472aa429246375fc770b543dbac84","src/commit/write.rs":"3ab066802c522c2e91344fcf13c46bb62261d7e60fdb62c1b5d24e3a9ba3b37b","src/data.rs":"fd1f9281274855d26570d866335ebf5f27709a80308f3c4e5da26a0e7db4be5c","src/encode.rs":"ef9eab5c54ac8d3dc88908004c1cac0242c17cc72bbaaad132a616785637286d","src/kind.rs":"f6af54494ddf2e42d07e1ebbc2aad25a3e291f0e7275618ab0758d8802963ca5","src/lib.rs":"591e192b8ee456e72d935ba633e20983f2d4b05b6099d964b940afe4c91f4455","src/object/convert.rs":"5fa061ce08c12cd59cc5e6975c9e6b57a5ac596c5fe63eeb5758080e7dd7a328","src/object/mod.rs":"f6017649d479fd4e4869e358993db8e7820f6303e8496c88a5bda3995acf4cb4","src/parse.rs":"3e4095cd579aa216e42dc3bb63d01b21c8e8b12d07faa09786fac0950a3d138e","src/tag/decode.rs":"090a128e1c1bebb69633e6e6bda9cf501b606e491be5bb7f9c3ce3f6bd8ab4c1","src/tag/mod.rs":"9532c15c6e90428dffe7dd80bcfe8bea2fd3210e43e0d4b583f7813a8bae4fe5","src/tag/ref_iter.rs":"b7df75f1555dacddaf0b83777e2281679163b52f3cf086b33b24af4b0b582caa","src/tag/write.rs":"19ef152a3b7e7bf1f2f260b53e21e34499e952ff6bebafdb0d2894c1123f85ea","src/tag/write/tests.rs":"e3c3674d73d3436f10c268154b9362eb380ff9c014b6db2a141bd0a0747c4aff","src/traits.rs":"b3188ab649098677c4075ed0e8c19a1b103eccf21368d3e1cb3f3809d653d3a7","src/tree/mod.rs":"2e3c330b0947d2e24fa7b5ad58690261d313a705671fd97834278fa72a10e39f","src/tree/ref_iter.rs":"2c2c106550cdd21f6a5340abfb8e95661f240130cc4a5346989b67c1c1d6ace8","src/tree/write.rs":"d71db3581d5c5b130ed826a12c16ae0baf62ed710f5c3d0ee1a2c1b18ca06ec3"},"package":"740f2a44267f58770a1cb3a3d01d14e67b089c7136c48d4bddbb3cfd2bf86a51"} \ No newline at end of file
diff --git a/vendor/gix-object/CHANGELOG.md b/vendor/gix-object/CHANGELOG.md
index c88bda31d..5f444025b 100644
--- a/vendor/gix-object/CHANGELOG.md
+++ b/vendor/gix-object/CHANGELOG.md
@@ -5,6 +5,42 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.38.0 (2023-10-12)
+
+### New Features
+
+ - <csr-id-5bb55decbab55f0480165a756893b0af111e485c/> add `compute_stream_hash` method as lower-level way of hashing objects.
+
+### Bug Fixes (BREAKING)
+
+ - <csr-id-9283a9d2ec460c1380cf6c40d876f477cb552826/> `encode::loose_header()` now supports large objects even on 32 bit systems.
+ Previously, larger than 4GB files wouldn't be supported, which causes problems when
+ genrating hashes even when streaming data.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 6 commits contributed to the release over the course of 8 calendar days.
+ - 17 days passed between releases.
+ - 2 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+ - Merge branch 'improvements' ([`429e7b2`](https://github.com/Byron/gitoxide/commit/429e7b25f93c8a7947db19bafa74babf199a1aa6))
+ - Add `compute_stream_hash` method as lower-level way of hashing objects. ([`5bb55de`](https://github.com/Byron/gitoxide/commit/5bb55decbab55f0480165a756893b0af111e485c))
+ - Fix docs ([`995bc84`](https://github.com/Byron/gitoxide/commit/995bc840664cbd4aeb7f95592e3125dee63bdcd4))
+ - Merge branch 'reset' ([`b842691`](https://github.com/Byron/gitoxide/commit/b8426919a491dc3a7df01ee3f258fc0d8a3a327c))
+ - `encode::loose_header()` now supports large objects even on 32 bit systems. ([`9283a9d`](https://github.com/Byron/gitoxide/commit/9283a9d2ec460c1380cf6c40d876f477cb552826))
+</details>
+
## 0.37.0 (2023-09-24)
A maintenance release without user-facing changes.
@@ -13,7 +49,7 @@ A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
- - 1 commit contributed to the release.
+ - 2 commits contributed to the release.
- 16 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,6 +61,7 @@ A maintenance release without user-facing changes.
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
</details>
diff --git a/vendor/gix-object/Cargo.toml b/vendor/gix-object/Cargo.toml
index 2d1142e20..db0fd4819 100644
--- a/vendor/gix-object/Cargo.toml
+++ b/vendor/gix-object/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-object"
-version = "0.37.0"
+version = "0.38.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
include = [
"src/**/*",
@@ -56,17 +56,20 @@ version = "0.2.0"
optional = true
[dependencies.gix-actor]
-version = "^0.27.0"
+version = "^0.28.0"
[dependencies.gix-date]
version = "^0.8.0"
[dependencies.gix-features]
-version = "^0.35.0"
-features = ["rustsha1"]
+version = "^0.36.0"
+features = [
+ "rustsha1",
+ "progress",
+]
[dependencies.gix-hash]
-version = "^0.13.0"
+version = "^0.13.1"
[dependencies.gix-validate]
version = "^0.8.0"
diff --git a/vendor/gix-object/src/blob.rs b/vendor/gix-object/src/blob.rs
index d0a42092c..57db54758 100644
--- a/vendor/gix-object/src/blob.rs
+++ b/vendor/gix-object/src/blob.rs
@@ -12,8 +12,8 @@ impl<'a> crate::WriteTo for BlobRef<'a> {
Kind::Blob
}
- fn size(&self) -> usize {
- self.data.len()
+ fn size(&self) -> u64 {
+ self.data.len() as u64
}
}
@@ -27,7 +27,7 @@ impl crate::WriteTo for Blob {
Kind::Blob
}
- fn size(&self) -> usize {
+ fn size(&self) -> u64 {
self.to_ref().size()
}
}
diff --git a/vendor/gix-object/src/commit/write.rs b/vendor/gix-object/src/commit/write.rs
index 667d25763..efad2b6db 100644
--- a/vendor/gix-object/src/commit/write.rs
+++ b/vendor/gix-object/src/commit/write.rs
@@ -27,9 +27,9 @@ impl crate::WriteTo for Commit {
Kind::Commit
}
- fn size(&self) -> usize {
+ fn size(&self) -> u64 {
let hash_in_hex = self.tree.kind().len_in_hex();
- b"tree".len() + 1 /*space*/ + hash_in_hex + 1 /* nl */
+ (b"tree".len() + 1 /*space*/ + hash_in_hex + 1 /* nl */
+ self.parents.iter().count() * (b"parent".len() + 1 + hash_in_hex + 1)
+ b"author".len() + 1 /* space */ + self.author.size() + 1 /* nl */
+ b"committer".len() + 1 /* space */ + self.committer.size() + 1 /* nl */
@@ -46,7 +46,7 @@ impl crate::WriteTo for Commit {
})
.sum::<usize>()
+ 1 /* nl */
- + self.message.len()
+ + self.message.len()) as u64
}
}
@@ -73,9 +73,9 @@ impl<'a> crate::WriteTo for CommitRef<'a> {
Kind::Commit
}
- fn size(&self) -> usize {
+ fn size(&self) -> u64 {
let hash_in_hex = self.tree().kind().len_in_hex();
- b"tree".len() + 1 /* space */ + hash_in_hex + 1 /* nl */
+ (b"tree".len() + 1 /* space */ + hash_in_hex + 1 /* nl */
+ self.parents.iter().count() * (b"parent".len() + 1 /* space */ + hash_in_hex + 1 /* nl */)
+ b"author".len() + 1 /* space */ + self.author.size() + 1 /* nl */
+ b"committer".len() + 1 /* space */ + self.committer.size() + 1 /* nl */
@@ -92,6 +92,6 @@ impl<'a> crate::WriteTo for CommitRef<'a> {
})
.sum::<usize>()
+ 1 /* nl */
- + self.message.len()
+ + self.message.len()) as u64
}
}
diff --git a/vendor/gix-object/src/encode.rs b/vendor/gix-object/src/encode.rs
index 3ba7db0b5..04a791948 100644
--- a/vendor/gix-object/src/encode.rs
+++ b/vendor/gix-object/src/encode.rs
@@ -19,7 +19,7 @@ macro_rules! check {
};
}
/// Generates a loose header buffer
-pub fn loose_header(kind: crate::Kind, size: usize) -> smallvec::SmallVec<[u8; 28]> {
+pub fn loose_header(kind: crate::Kind, size: u64) -> smallvec::SmallVec<[u8; 28]> {
let mut v = smallvec::SmallVec::new();
check!(v.write_all(kind.as_bytes()));
check!(v.write_all(SPACE));
diff --git a/vendor/gix-object/src/lib.rs b/vendor/gix-object/src/lib.rs
index 56e0019fd..a07502917 100644
--- a/vendor/gix-object/src/lib.rs
+++ b/vendor/gix-object/src/lib.rs
@@ -98,7 +98,7 @@ pub struct CommitRef<'a> {
pub extra_headers: Vec<(&'a BStr, Cow<'a, BStr>)>,
}
-/// Like [`CommitRef`][crate::CommitRef], but as `Iterator` to support (up to) entirely allocation free parsing.
+/// Like [`CommitRef`], but as `Iterator` to support (up to) entirely allocation free parsing.
/// It's particularly useful to traverse the commit graph without ever allocating arrays for parents.
#[derive(Copy, Clone)]
pub struct CommitRefIter<'a> {
@@ -345,7 +345,7 @@ pub mod decode {
/// ([`kind`](super::Kind), `size`, `consumed bytes`).
///
/// `size` is the uncompressed size of the payload in bytes.
- pub fn loose_header(input: &[u8]) -> Result<(super::Kind, usize, usize), LooseHeaderDecodeError> {
+ pub fn loose_header(input: &[u8]) -> Result<(super::Kind, u64, usize), LooseHeaderDecodeError> {
use LooseHeaderDecodeError::*;
let kind_end = input.find_byte(0x20).ok_or(InvalidHeader {
message: "Expected '<type> <size>'",
@@ -364,9 +364,10 @@ pub mod decode {
}
}
-/// A standalone function to compute a hash of kind `hash_kind` for an object of `object_kind` and its `data`.
+/// A function to compute a hash of kind `hash_kind` for an object of `object_kind` and its `data`.
+#[doc(alias = "hash_object", alias = "git2")]
pub fn compute_hash(hash_kind: gix_hash::Kind, object_kind: Kind, data: &[u8]) -> gix_hash::ObjectId {
- let header = encode::loose_header(object_kind, data.len());
+ let header = encode::loose_header(object_kind, data.len() as u64);
let mut hasher = gix_features::hash::hasher(hash_kind);
hasher.update(&header);
@@ -374,3 +375,23 @@ pub fn compute_hash(hash_kind: gix_hash::Kind, object_kind: Kind, data: &[u8]) -
hasher.digest().into()
}
+
+/// A function to compute a hash of kind `hash_kind` for an object of `object_kind` and its data read from `stream`
+/// which has to yield exactly `stream_len` bytes.
+/// Use `progress` to learn about progress in bytes processed and `should_interrupt` to be able to abort the operation
+/// if set to `true`.
+#[doc(alias = "hash_file", alias = "git2")]
+pub fn compute_stream_hash(
+ hash_kind: gix_hash::Kind,
+ object_kind: Kind,
+ stream: &mut dyn std::io::Read,
+ stream_len: u64,
+ progress: &mut dyn gix_features::progress::Progress,
+ should_interrupt: &std::sync::atomic::AtomicBool,
+) -> std::io::Result<gix_hash::ObjectId> {
+ let header = encode::loose_header(object_kind, stream_len);
+ let mut hasher = gix_features::hash::hasher(hash_kind);
+
+ hasher.update(&header);
+ gix_features::hash::bytes_with_hasher(stream, stream_len, hasher, progress, should_interrupt)
+}
diff --git a/vendor/gix-object/src/object/mod.rs b/vendor/gix-object/src/object/mod.rs
index bebc1cc65..e7f775cd4 100644
--- a/vendor/gix-object/src/object/mod.rs
+++ b/vendor/gix-object/src/object/mod.rs
@@ -24,7 +24,7 @@ mod write {
self.kind()
}
- fn size(&self) -> usize {
+ fn size(&self) -> u64 {
use crate::ObjectRef::*;
match self {
Tree(v) => v.size(),
@@ -52,7 +52,7 @@ mod write {
self.kind()
}
- fn size(&self) -> usize {
+ fn size(&self) -> u64 {
use crate::Object::*;
match self {
Tree(v) => v.size(),
@@ -66,35 +66,35 @@ mod write {
/// Convenient extraction of typed object.
impl Object {
- /// Turns this instance into a [`Blob`][Blob], panic otherwise.
+ /// Turns this instance into a [`Blob`], panic otherwise.
pub fn into_blob(self) -> Blob {
match self {
Object::Blob(v) => v,
_ => panic!("BUG: not a blob"),
}
}
- /// Turns this instance into a [`Commit`][Commit] panic otherwise.
+ /// Turns this instance into a [`Commit`] panic otherwise.
pub fn into_commit(self) -> Commit {
match self {
Object::Commit(v) => v,
_ => panic!("BUG: not a commit"),
}
}
- /// Turns this instance into a [`Tree`][Tree] panic otherwise.
+ /// Turns this instance into a [`Tree`] panic otherwise.
pub fn into_tree(self) -> Tree {
match self {
Object::Tree(v) => v,
_ => panic!("BUG: not a tree"),
}
}
- /// Turns this instance into a [`Tag`][Tag] panic otherwise.
+ /// Turns this instance into a [`Tag`] panic otherwise.
pub fn into_tag(self) -> Tag {
match self {
Object::Tag(v) => v,
_ => panic!("BUG: not a tag"),
}
}
- /// Turns this instance into a [`Blob`][Blob] if it is one.
+ /// Turns this instance into a [`Blob`] if it is one.
#[allow(clippy::result_large_err)]
pub fn try_into_blob(self) -> Result<Blob, Self> {
match self {
@@ -102,14 +102,14 @@ impl Object {
_ => Err(self),
}
}
- /// Turns this instance into a [`BlobRef`][BlobRef] if it is a blob.
+ /// Turns this instance into a [`BlobRef`] if it is a blob.
pub fn try_into_blob_ref(&self) -> Option<BlobRef<'_>> {
match self {
Object::Blob(v) => Some(v.to_ref()),
_ => None,
}
}
- /// Turns this instance into a [`Commit`][Commit] if it is one.
+ /// Turns this instance into a [`Commit`] if it is one.
#[allow(clippy::result_large_err)]
pub fn try_into_commit(self) -> Result<Commit, Self> {
match self {
@@ -117,7 +117,7 @@ impl Object {
_ => Err(self),
}
}
- /// Turns this instance into a [`Tree`][Tree] if it is one.
+ /// Turns this instance into a [`Tree`] if it is one.
#[allow(clippy::result_large_err)]
pub fn try_into_tree(self) -> Result<Tree, Self> {
match self {
@@ -125,7 +125,7 @@ impl Object {
_ => Err(self),
}
}
- /// Turns this instance into a [`Tag`][Tag] if it is one.
+ /// Turns this instance into a [`Tag`] if it is one.
#[allow(clippy::result_large_err)]
pub fn try_into_tag(self) -> Result<Tag, Self> {
match self {
@@ -134,28 +134,28 @@ impl Object {
}
}
- /// Returns a [`Blob`][Blob] if it is one.
+ /// Returns a [`Blob`] if it is one.
pub fn as_blob(&self) -> Option<&Blob> {
match self {
Object::Blob(v) => Some(v),
_ => None,
}
}
- /// Returns a [`Commit`][Commit] if it is one.
+ /// Returns a [`Commit`] if it is one.
pub fn as_commit(&self) -> Option<&Commit> {
match self {
Object::Commit(v) => Some(v),
_ => None,
}
}
- /// Returns a [`Tree`][Tree] if it is one.
+ /// Returns a [`Tree`] if it is one.
pub fn as_tree(&self) -> Option<&Tree> {
match self {
Object::Tree(v) => Some(v),
_ => None,
}
}
- /// Returns a [`Tag`][Tag] if it is one.
+ /// Returns a [`Tag`] if it is one.
pub fn as_tag(&self) -> Option<&Tag> {
match self {
Object::Tag(v) => Some(v),
@@ -185,6 +185,8 @@ pub enum LooseDecodeError {
InvalidHeader(#[from] LooseHeaderDecodeError),
#[error(transparent)]
InvalidContent(#[from] DecodeError),
+ #[error("Object sized {size} does not fit into memory - this can happen on 32 bit systems")]
+ OutOfMemory { size: u64 },
}
impl<'a> ObjectRef<'a> {
@@ -193,7 +195,7 @@ impl<'a> ObjectRef<'a> {
let (kind, size, offset) = loose_header(data)?;
let body = &data[offset..]
- .get(..size)
+ .get(..size.try_into().map_err(|_| LooseDecodeError::OutOfMemory { size })?)
.ok_or(LooseHeaderDecodeError::InvalidHeader {
message: "object data was shorter than its size declared in the header",
})?;
diff --git a/vendor/gix-object/src/tag/write.rs b/vendor/gix-object/src/tag/write.rs
index cee9e587c..dc8fd1ba3 100644
--- a/vendor/gix-object/src/tag/write.rs
+++ b/vendor/gix-object/src/tag/write.rs
@@ -44,8 +44,8 @@ impl crate::WriteTo for Tag {
Kind::Tag
}
- fn size(&self) -> usize {
- b"object".len() + 1 /* space */ + self.target.kind().len_in_hex() + 1 /* nl */
+ fn size(&self) -> u64 {
+ (b"object".len() + 1 /* space */ + self.target.kind().len_in_hex() + 1 /* nl */
+ b"type".len() + 1 /* space */ + self.target_kind.as_bytes().len() + 1 /* nl */
+ b"tag".len() + 1 /* space */ + self.name.len() + 1 /* nl */
+ self
@@ -53,7 +53,7 @@ impl crate::WriteTo for Tag {
.as_ref()
.map_or(0, |t| b"tagger".len() + 1 /* space */ + t.size() + 1 /* nl */)
+ 1 /* nl */ + self.message.len()
- + self.pgp_signature.as_ref().map_or(0, |m| 1 /* nl */ + m.len())
+ + self.pgp_signature.as_ref().map_or(0, |m| 1 /* nl */ + m.len())) as u64
}
}
@@ -81,8 +81,8 @@ impl<'a> crate::WriteTo for TagRef<'a> {
Kind::Tag
}
- fn size(&self) -> usize {
- b"object".len() + 1 /* space */ + self.target().kind().len_in_hex() + 1 /* nl */
+ fn size(&self) -> u64 {
+ (b"object".len() + 1 /* space */ + self.target().kind().len_in_hex() + 1 /* nl */
+ b"type".len() + 1 /* space */ + self.target_kind.as_bytes().len() + 1 /* nl */
+ b"tag".len() + 1 /* space */ + self.name.len() + 1 /* nl */
+ self
@@ -90,7 +90,7 @@ impl<'a> crate::WriteTo for TagRef<'a> {
.as_ref()
.map_or(0, |t| b"tagger".len() + 1 /* space */ + t.size() + 1 /* nl */)
+ 1 /* nl */ + self.message.len()
- + self.pgp_signature.as_ref().map_or(0, |m| 1 /* nl */ + m.len())
+ + self.pgp_signature.as_ref().map_or(0, |m| 1 /* nl */ + m.len())) as u64
}
}
diff --git a/vendor/gix-object/src/traits.rs b/vendor/gix-object/src/traits.rs
index c0c4adee2..ce0463c98 100644
--- a/vendor/gix-object/src/traits.rs
+++ b/vendor/gix-object/src/traits.rs
@@ -17,7 +17,7 @@ pub trait WriteTo {
/// the object, as such it's possible for [`size`](Self::size) to
/// return a sensible value but [`write_to`](Self::write_to) to
/// fail because the object was not actually valid in some way.
- fn size(&self) -> usize;
+ fn size(&self) -> u64;
/// Returns a loose object header based on the object's data
fn loose_header(&self) -> smallvec::SmallVec<[u8; 28]> {
@@ -37,7 +37,7 @@ where
<T as WriteTo>::kind(self)
}
- fn size(&self) -> usize {
+ fn size(&self) -> u64 {
<T as WriteTo>::size(self)
}
}
diff --git a/vendor/gix-object/src/tree/write.rs b/vendor/gix-object/src/tree/write.rs
index 91e1dc2e0..e1a82720f 100644
--- a/vendor/gix-object/src/tree/write.rs
+++ b/vendor/gix-object/src/tree/write.rs
@@ -57,10 +57,12 @@ impl crate::WriteTo for Tree {
Kind::Tree
}
- fn size(&self) -> usize {
+ fn size(&self) -> u64 {
self.entries
.iter()
- .map(|Entry { mode, filename, oid }| mode.as_bytes().len() + 1 + filename.len() + 1 + oid.as_bytes().len())
+ .map(|Entry { mode, filename, oid }| {
+ (mode.as_bytes().len() + 1 + filename.len() + 1 + oid.as_bytes().len()) as u64
+ })
.sum()
}
}
@@ -100,11 +102,11 @@ impl<'a> crate::WriteTo for TreeRef<'a> {
Kind::Tree
}
- fn size(&self) -> usize {
+ fn size(&self) -> u64 {
self.entries
.iter()
.map(|EntryRef { mode, filename, oid }| {
- mode.as_bytes().len() + 1 + filename.len() + 1 + oid.as_bytes().len()
+ (mode.as_bytes().len() + 1 + filename.len() + 1 + oid.as_bytes().len()) as u64
})
.sum()
}
diff --git a/vendor/gix-odb/.cargo-checksum.json b/vendor/gix-odb/.cargo-checksum.json
index 6c557413d..deb54b22b 100644
--- a/vendor/gix-odb/.cargo-checksum.json
+++ b/vendor/gix-odb/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"342ad969a43d9a1950733b04aed37239fd72d33c8f399f2ebf64ca97fe75e023","Cargo.toml":"ff36058d885a5080a5da793cde1226e9e75a482240f2ace5d96930e8c66688a9","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/alternate/mod.rs":"18913fe47e6527f7bdcf251a794fda764f3ba750aa890b8ee4b35328f0f04c6a","src/alternate/parse.rs":"418f5c54d6293ceb886d44a3482dd3a2378d50031ff04186541c5e09be2eedcc","src/cache.rs":"02a4fcc9ab540799fc8529830738284f4cff0bbfebf4f336e5611b1206ed9ab6","src/find.rs":"96d3b0d53f17ddc829b915259c5da7ef91c23575f8578bbe1c7ecec88c959590","src/lib.rs":"84f2f19a5e3f43e04b1829bff265a22f414e2399e4e2af3930bfd7af042e6d9a","src/sink.rs":"bdefb41defd4c8b1b152772d927ae70c63af559ce5b52a8d0f41584954a53d66","src/store_impls/dynamic/access.rs":"524b85c6f523f24ba6c0a2abc5cb9555b535dd5d1ce4d42beedd2aae28e6d938","src/store_impls/dynamic/find.rs":"14cf1303704e5c4d426edf356c9e0003a4722f757fe01befe01f7781ee60b1e0","src/store_impls/dynamic/handle.rs":"9bc5a010125e3c38ca5f95b990b40e0e6a1f61885ed7b6e0578f813bd13c6dec","src/store_impls/dynamic/header.rs":"18632eeb39f1382bbd3a8c17fff9fa12084f6cd024675a63b1e21ee0ec5a80d1","src/store_impls/dynamic/init.rs":"f6c23c8f634d18f154bf4772531b2cd43737c195c844167025584af0a7dc79f6","src/store_impls/dynamic/iter.rs":"6473eb899855f7588482674b7561cdf444b0366d4af9e3b92831d0d8b090fff7","src/store_impls/dynamic/load_index.rs":"675cd09d46359a73e0e9f7ddac59e1bb3ca8500265eb495b649b88daa1610b92","src/store_impls/dynamic/load_one.rs":"fa0393f14a653d9116c7b470219175cccffa8bb2e981afc89d62a48778a6d825","src/store_impls/dynamic/metrics.rs":"ab54a9986a58e72301ed9a85155572e7a8e0df977177dc51491fc776883c4200","src/store_impls/dynamic/mod.rs":"5363636ea3ad3f63c66d5e34b9d750025058ce2ea14352ad518563c811f8dd3b","src/store_impls/dynamic/prefix.rs":"d6c0702a5dbc55b62d54fea24b6b00a7ec88fc76917dbf5901ce699a0902b9a5","src/store_impls/dynamic/structure.rs":"2231e15b6e26d398978f147875cbbd83c0704dd4449c75274c6bc1887b6149b4","src/store_impls/dynamic/types.rs":"98974099d9fbda59458b4db0b2dd46fd1e8c1a7bdef83ee68600f29c664227c5","src/store_impls/dynamic/verify.rs":"2a0fd7b54ec9ad1e8651769daffeba3b355993c2a0300f952748ddcf92247974","src/store_impls/dynamic/write.rs":"b83d47499e9fa07d8e45db8f1d78fd638c6b43defb28dc7372588ea21f1bb75f","src/store_impls/loose/find.rs":"1afcc151f989ecd3c6e5166e8fc8eef919ffdb18d2f0560bf4ae5d26d8291ae8","src/store_impls/loose/iter.rs":"52dd3df3148aa057efcbb2c86bb631834cbe9afdfb4a487fb6d1fe3e947b2c86","src/store_impls/loose/mod.rs":"9008a952ad41b7a9672028b6dd6d7fd613328694657f13e55ef078872ab8975e","src/store_impls/loose/verify.rs":"c4f2f6449b518ce36ee19b6500c08befd402056195f71a49f0a3a5869f42ead4","src/store_impls/loose/write.rs":"45240b4320ef95d4985247fec07e70f9faacc606ced23f3de1819ca8102e77b7","src/store_impls/mod.rs":"d5f123c2037dd5ee538721ad626aebf845d445d43438c3e10daac34d73fdc779","src/traits.rs":"3b12c04823e64db00bfa6490a9f538715c049ad6825f524c4ff5a52943f4ceb7"},"package":"8d6a392c6ba3a2f133cdc63120e9bc7aec81eef763db372c817de31febfe64bf"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"f7b8b76552dcc107a10a76e968438cf1e5a5338fbef62e16df23333a9e1a09c5","Cargo.toml":"bc5469a9cd2a459934907e0bb7b7f56aa2c00c710bd718d0db3543711b86c7af","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/alternate/mod.rs":"18913fe47e6527f7bdcf251a794fda764f3ba750aa890b8ee4b35328f0f04c6a","src/alternate/parse.rs":"418f5c54d6293ceb886d44a3482dd3a2378d50031ff04186541c5e09be2eedcc","src/cache.rs":"02a4fcc9ab540799fc8529830738284f4cff0bbfebf4f336e5611b1206ed9ab6","src/find.rs":"1778200423a1850b6449c935e7c05cbe97d000efb1b12403ee2459beac1d4914","src/lib.rs":"c729eeeeec5f8555c4f325246d1ac3d552fd34f1561231886a50cb2f5088a014","src/sink.rs":"e9d88f5f7e4938e0b9de50aed5258c938db24b0fcb8b686531ee4316cfcc90f8","src/store_impls/dynamic/access.rs":"524b85c6f523f24ba6c0a2abc5cb9555b535dd5d1ce4d42beedd2aae28e6d938","src/store_impls/dynamic/find.rs":"14cf1303704e5c4d426edf356c9e0003a4722f757fe01befe01f7781ee60b1e0","src/store_impls/dynamic/handle.rs":"9bc5a010125e3c38ca5f95b990b40e0e6a1f61885ed7b6e0578f813bd13c6dec","src/store_impls/dynamic/header.rs":"18632eeb39f1382bbd3a8c17fff9fa12084f6cd024675a63b1e21ee0ec5a80d1","src/store_impls/dynamic/init.rs":"f6c23c8f634d18f154bf4772531b2cd43737c195c844167025584af0a7dc79f6","src/store_impls/dynamic/iter.rs":"6473eb899855f7588482674b7561cdf444b0366d4af9e3b92831d0d8b090fff7","src/store_impls/dynamic/load_index.rs":"8e983b0d6d71782adf6f46677be02e231bd3a61a2da5438ca847bbb339cc335b","src/store_impls/dynamic/load_one.rs":"fa0393f14a653d9116c7b470219175cccffa8bb2e981afc89d62a48778a6d825","src/store_impls/dynamic/metrics.rs":"ab54a9986a58e72301ed9a85155572e7a8e0df977177dc51491fc776883c4200","src/store_impls/dynamic/mod.rs":"5363636ea3ad3f63c66d5e34b9d750025058ce2ea14352ad518563c811f8dd3b","src/store_impls/dynamic/prefix.rs":"d6c0702a5dbc55b62d54fea24b6b00a7ec88fc76917dbf5901ce699a0902b9a5","src/store_impls/dynamic/structure.rs":"2231e15b6e26d398978f147875cbbd83c0704dd4449c75274c6bc1887b6149b4","src/store_impls/dynamic/types.rs":"98974099d9fbda59458b4db0b2dd46fd1e8c1a7bdef83ee68600f29c664227c5","src/store_impls/dynamic/verify.rs":"2a0fd7b54ec9ad1e8651769daffeba3b355993c2a0300f952748ddcf92247974","src/store_impls/dynamic/write.rs":"b83d47499e9fa07d8e45db8f1d78fd638c6b43defb28dc7372588ea21f1bb75f","src/store_impls/loose/find.rs":"80afef4f2bb0aab237b4e780f121a4294527700a3e9313af3eaca6cc0ce6953b","src/store_impls/loose/iter.rs":"52dd3df3148aa057efcbb2c86bb631834cbe9afdfb4a487fb6d1fe3e947b2c86","src/store_impls/loose/mod.rs":"9008a952ad41b7a9672028b6dd6d7fd613328694657f13e55ef078872ab8975e","src/store_impls/loose/verify.rs":"c4f2f6449b518ce36ee19b6500c08befd402056195f71a49f0a3a5869f42ead4","src/store_impls/loose/write.rs":"ce18c92d56ea53c54c3298d63ad2327c57316ccba418c3a5a2ae4eda5967e5b0","src/store_impls/mod.rs":"d5f123c2037dd5ee538721ad626aebf845d445d43438c3e10daac34d73fdc779","src/traits.rs":"3b12c04823e64db00bfa6490a9f538715c049ad6825f524c4ff5a52943f4ceb7"},"package":"8630b56cb80d8fa684d383dad006a66401ee8314e12fbf0e566ddad8c115143b"} \ No newline at end of file
diff --git a/vendor/gix-odb/CHANGELOG.md b/vendor/gix-odb/CHANGELOG.md
index 0032f0d90..63f497c5d 100644
--- a/vendor/gix-odb/CHANGELOG.md
+++ b/vendor/gix-odb/CHANGELOG.md
@@ -5,6 +5,39 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.54.0 (2023-10-12)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 5 commits contributed to the release over the course of 8 calendar days.
+ - 17 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Thanks Clippy
+
+<csr-read-only-do-not-edit/>
+
+[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic.
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+ - Fix docs ([`995bc84`](https://github.com/Byron/gitoxide/commit/995bc840664cbd4aeb7f95592e3125dee63bdcd4))
+ - Thanks clippy ([`345712d`](https://github.com/Byron/gitoxide/commit/345712dcdfddcccc630bbfef2ed4f461b21550d3))
+ - Merge branch 'reset' ([`b842691`](https://github.com/Byron/gitoxide/commit/b8426919a491dc3a7df01ee3f258fc0d8a3a327c))
+ - Adapt to changes in `gix-object` ([`ffcb110`](https://github.com/Byron/gitoxide/commit/ffcb110135e4597d8953b97da3db9ecc3cf12e34))
+</details>
+
## 0.53.0 (2023-09-24)
A maintenance release without user-facing changes.
@@ -13,7 +46,7 @@ A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
- - 1 commit contributed to the release.
+ - 2 commits contributed to the release.
- 16 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,6 +58,7 @@ A maintenance release without user-facing changes.
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
</details>
diff --git a/vendor/gix-odb/Cargo.toml b/vendor/gix-odb/Cargo.toml
index cf5b98392..e5f0a6ce1 100644
--- a/vendor/gix-odb/Cargo.toml
+++ b/vendor/gix-odb/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-odb"
-version = "0.53.0"
+version = "0.54.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
include = [
"src/**/*",
@@ -49,7 +49,7 @@ optional = true
version = "^0.8.0"
[dependencies.gix-features]
-version = "^0.35.0"
+version = "^0.36.0"
features = [
"rustsha1",
"walkdir",
@@ -58,13 +58,13 @@ features = [
]
[dependencies.gix-hash]
-version = "^0.13.0"
+version = "^0.13.1"
[dependencies.gix-object]
-version = "^0.37.0"
+version = "^0.38.0"
[dependencies.gix-pack]
-version = "^0.43.0"
+version = "^0.44.0"
default-features = false
[dependencies.gix-path]
diff --git a/vendor/gix-odb/src/find.rs b/vendor/gix-odb/src/find.rs
index bf807e27c..196845c4d 100644
--- a/vendor/gix-odb/src/find.rs
+++ b/vendor/gix-odb/src/find.rs
@@ -104,11 +104,11 @@ mod header {
}
}
- impl From<(usize, gix_object::Kind)> for Header {
- fn from((object_size, kind): (usize, gix_object::Kind)) -> Self {
+ impl From<(u64, gix_object::Kind)> for Header {
+ fn from((object_size, kind): (u64, gix_object::Kind)) -> Self {
Header::Loose {
kind,
- size: object_size as u64,
+ size: object_size,
}
}
}
diff --git a/vendor/gix-odb/src/lib.rs b/vendor/gix-odb/src/lib.rs
index 5aee76ca2..a6aa4caee 100644
--- a/vendor/gix-odb/src/lib.rs
+++ b/vendor/gix-odb/src/lib.rs
@@ -50,7 +50,7 @@ pub struct Cache<S> {
pub mod cache;
///
-/// It can optionally compress the content, similarly to what would happen when using a [`loose::Store`][crate::loose::Store].
+/// It can optionally compress the content, similarly to what would happen when using a [`loose::Store`].
///
#[derive(Clone)]
pub struct Sink {
diff --git a/vendor/gix-odb/src/sink.rs b/vendor/gix-odb/src/sink.rs
index f6334a51c..7784901a8 100644
--- a/vendor/gix-odb/src/sink.rs
+++ b/vendor/gix-odb/src/sink.rs
@@ -1,6 +1,5 @@
use std::{
cell::RefCell,
- convert::TryInto,
io::{self, Write},
};
@@ -24,11 +23,10 @@ impl crate::traits::Write for Sink {
fn write_stream(
&self,
kind: gix_object::Kind,
- size: u64,
+ mut size: u64,
from: &mut dyn io::Read,
) -> Result<gix_hash::ObjectId, crate::write::Error> {
- let mut size = size.try_into().expect("object size to fit into usize");
- let mut buf = [0u8; 8096];
+ let mut buf = [0u8; u16::MAX as usize];
let header = gix_object::encode::loose_header(kind, size);
let possibly_compress = |buf: &[u8]| -> io::Result<()> {
@@ -43,11 +41,11 @@ impl crate::traits::Write for Sink {
possibly_compress(&header).map_err(Box::new)?;
while size != 0 {
- let bytes = size.min(buf.len());
+ let bytes = (size as usize).min(buf.len());
from.read_exact(&mut buf[..bytes]).map_err(Box::new)?;
hasher.update(&buf[..bytes]);
possibly_compress(&buf[..bytes]).map_err(Box::new)?;
- size -= bytes;
+ size -= bytes as u64;
}
if let Some(compressor) = self.compressor.as_ref() {
let mut c = compressor.borrow_mut();
diff --git a/vendor/gix-odb/src/store_impls/dynamic/load_index.rs b/vendor/gix-odb/src/store_impls/dynamic/load_index.rs
index 4716a5806..a255f6c4b 100644
--- a/vendor/gix-odb/src/store_impls/dynamic/load_index.rs
+++ b/vendor/gix-odb/src/store_impls/dynamic/load_index.rs
@@ -711,7 +711,7 @@ impl PartialEq<Self> for Either {
impl PartialOrd<Self> for Either {
fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
- self.path().partial_cmp(other.path())
+ Some(self.path().cmp(other.path()))
}
}
diff --git a/vendor/gix-odb/src/store_impls/loose/find.rs b/vendor/gix-odb/src/store_impls/loose/find.rs
index 91bf0ba87..4116a0453 100644
--- a/vendor/gix-odb/src/store_impls/loose/find.rs
+++ b/vendor/gix-odb/src/store_impls/loose/find.rs
@@ -14,13 +14,11 @@ pub enum Error {
path: PathBuf,
},
#[error("file at '{path}' showed invalid size of inflated data, expected {expected}, got {actual}")]
- SizeMismatch {
- actual: usize,
- expected: usize,
- path: PathBuf,
- },
+ SizeMismatch { actual: u64, expected: u64, path: PathBuf },
#[error(transparent)]
Decode(#[from] gix_object::decode::LooseHeaderDecodeError),
+ #[error("Cannot store {size} in memory as it's not representable")]
+ OutOfMemory { size: u64 },
#[error("Could not {action} data at '{path}'")]
Io {
source: std::io::Error,
@@ -137,7 +135,7 @@ impl Store {
/// Return only the decompressed size of the object and its kind without fully reading it into memory as tuple of `(size, kind)`.
/// Returns `None` if `id` does not exist in the database.
- pub fn try_header(&self, id: &gix_hash::oid) -> Result<Option<(usize, gix_object::Kind)>, Error> {
+ pub fn try_header(&self, id: &gix_hash::oid) -> Result<Option<(u64, gix_object::Kind)>, Error> {
const BUF_SIZE: usize = 256;
let mut buf = [0_u8; BUF_SIZE];
let path = hash_path(id, self.path.clone());
@@ -224,16 +222,17 @@ impl Store {
let decompressed_body_bytes_sans_header =
decompressed_start + header_size..decompressed_start + consumed_out;
- if consumed_out != size + header_size {
+ if consumed_out as u64 != size + header_size as u64 {
return Err(Error::SizeMismatch {
- expected: size + header_size,
- actual: consumed_out,
+ expected: size + header_size as u64,
+ actual: consumed_out as u64,
path,
});
}
buf.copy_within(decompressed_body_bytes_sans_header, 0);
} else {
- buf.resize(bytes_read + size + header_size, 0);
+ let new_len = bytes_read as u64 + size + header_size as u64;
+ buf.resize(new_len.try_into().map_err(|_| Error::OutOfMemory { size: new_len })?, 0);
{
let (input, output) = buf.split_at_mut(bytes_read);
let num_decompressed_bytes = zlib::stream::inflate::read(
@@ -246,17 +245,21 @@ impl Store {
action: "deflate",
path: path.to_owned(),
})?;
- if num_decompressed_bytes + consumed_out != size + header_size {
+ if num_decompressed_bytes as u64 + consumed_out as u64 != size + header_size as u64 {
return Err(Error::SizeMismatch {
- expected: size + header_size,
- actual: num_decompressed_bytes + consumed_out,
+ expected: size + header_size as u64,
+ actual: num_decompressed_bytes as u64 + consumed_out as u64,
path,
});
}
};
buf.copy_within(decompressed_start + header_size.., 0);
}
- buf.resize(size, 0);
+ buf.resize(
+ size.try_into()
+ .expect("BUG: here the size is already confirmed to fit into memory"),
+ 0,
+ );
Ok(gix_object::Data { kind, data: buf })
}
}
diff --git a/vendor/gix-odb/src/store_impls/loose/write.rs b/vendor/gix-odb/src/store_impls/loose/write.rs
index e537eda92..2cac12d18 100644
--- a/vendor/gix-odb/src/store_impls/loose/write.rs
+++ b/vendor/gix-odb/src/store_impls/loose/write.rs
@@ -1,4 +1,4 @@
-use std::{convert::TryInto, fs, io, io::Write, path::PathBuf};
+use std::{fs, io, io::Write, path::PathBuf};
use gix_features::{hash, zlib::stream::deflate};
use gix_object::WriteTo;
@@ -48,7 +48,7 @@ impl crate::traits::Write for Store {
/// This will cost at least 4 IO operations.
fn write_buf(&self, kind: gix_object::Kind, from: &[u8]) -> Result<gix_hash::ObjectId, crate::write::Error> {
let mut to = self.dest().map_err(Box::new)?;
- to.write_all(&gix_object::encode::loose_header(kind, from.len()))
+ to.write_all(&gix_object::encode::loose_header(kind, from.len() as u64))
.map_err(|err| Error::Io {
source: err,
message: "write header to tempfile in",
@@ -74,15 +74,12 @@ impl crate::traits::Write for Store {
mut from: &mut dyn io::Read,
) -> Result<gix_hash::ObjectId, crate::write::Error> {
let mut to = self.dest().map_err(Box::new)?;
- to.write_all(&gix_object::encode::loose_header(
- kind,
- size.try_into().expect("object size to fit into usize"),
- ))
- .map_err(|err| Error::Io {
- source: err,
- message: "write header to tempfile in",
- path: self.path.to_owned(),
- })?;
+ to.write_all(&gix_object::encode::loose_header(kind, size))
+ .map_err(|err| Error::Io {
+ source: err,
+ message: "write header to tempfile in",
+ path: self.path.to_owned(),
+ })?;
io::copy(&mut from, &mut to)
.map_err(|err| Error::Io {
diff --git a/vendor/gix-pack/.cargo-checksum.json b/vendor/gix-pack/.cargo-checksum.json
index 7598cab91..320d78a21 100644
--- a/vendor/gix-pack/.cargo-checksum.json
+++ b/vendor/gix-pack/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"f0292e4c78da3bdeb48d06f5b481618fa52c3028682e4173e8c358a95c65c4a2","Cargo.toml":"121d2cc62e872849df3fb6ac3af2982417ce56f01ba31157010d16c9f8c38c6f","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/bundle/find.rs":"f6ac1a7b11c13ee8eb1eda5a3a967f99bdc49af9d0869354b6fa617d0c749837","src/bundle/init.rs":"78582570130e4b7e67bbf01395317ec4727be7cee01d310d07180bb79f61ea1d","src/bundle/mod.rs":"cc6b3794389ce9ed3b99a4da20e7cd1ee0e027ac2032b6da08f829c185608bc6","src/bundle/write/error.rs":"f978b1622ac1354f44a7160d2439d5ac697dd92b67631d8c846ae2621be489ae","src/bundle/write/mod.rs":"9e0a3cae664583dfed7c93606d72e9fbb25637cdd99f8476a04a5e7cb558fd29","src/bundle/write/types.rs":"faef010d8680b85b08ad2aaca291fed1e07ddf00a5f407f1c60d657b0ef6ed5b","src/cache/delta/from_offsets.rs":"21b6ae005f11441a6be09c5939db4c047e142d8369167d2b775ef084172a968a","src/cache/delta/mod.rs":"52e7aa488fc2eb478ac91be0c6f4179e78c9620094b3a0d9adee03b776b1636e","src/cache/delta/traverse/mod.rs":"43a7854d1bc10cfb5fccedc9686d6cdfcbe1aae2dd712731bee6b701fc0a3a2a","src/cache/delta/traverse/resolve.rs":"b432abdafb1a131413dcd2688cd57549ffcec99c13933c057fe354c776226186","src/cache/delta/traverse/util.rs":"eced32d724ad66766b5c9933d0324ef351436740266a85491238ec8d26010b7d","src/cache/lru.rs":"557043f806f754fadae96199d2261a8df184f86bf0dd525efe091c5fa3a793da","src/cache/mod.rs":"1fd545e5944ec378f5a89825840fc869684ca571ea7859213ea38d674e991fb1","src/cache/object.rs":"abbdd67a9f101d9df707057fcbd5fe23e1464d0e312807348bfe610c64a410c5","src/data/delta.rs":"915c10207f5897d473cc806ae31de98e90f41e5e99361e18cb1e42177137c024","src/data/entry/decode.rs":"c3fa9509fcb93b455d679366d390b660b2807a1a7aa743b3882acd22d5bdeb8f","src/data/entry/header.rs":"5b1e5485215f203031d2762b13ed7915367f4c2f86fd1cdb5adfa91a06b62198","src/data/entry/mod.rs":"543c2ed9985bdc7077655deaaeb4d1745d03ae74db03842ae97e2c0fb4880db7","src/data/file/decode/entry.rs":"6399d1d9a4d71180d0216af1e9d4efcc3913a62736588ff6274ed69d191decff","src/data/file/decode/header.rs":"2e1bf2bd6191d16ecb2b835386a43f2d79a8ebbf9c1ed3d8a57d7845fdeaa2bc","src/data/file/decode/mod.rs":"bed7398ba3c6a48d2c7af96a2044ee56ba3d9e757995e06493517db27c743712","src/data/file/init.rs":"16a594f4245be493e3ca61fabe730d796e1d2235de7c0b38609e394df9737c86","src/data/file/mod.rs":"4b6a8a99a4864365592733836d654cc30ab717bf8a69569d02fac3ef0b88fac2","src/data/file/verify.rs":"8deb230289e2cd29b4af49d777ce84731fcb216194df157ab1fc76c9d60bfd84","src/data/header.rs":"cc86b9b6d45c7764217bcea615e5640fbbb4af0d17d25cc24073d48d2b9fd206","src/data/input/bytes_to_entries.rs":"97a4ccc355a50603c8e301edbdeeb33829438b82bc4e68925fae1691994f2c00","src/data/input/entries_to_bytes.rs":"f13bc7a0637182a4c9588dcfa4ab8bb9d88c64f037c33991fd0c9dc36bd324c7","src/data/input/entry.rs":"84c2278258981685bb927d5dbd2cc7b981c371a66f22a86f22772a5c11535bc4","src/data/input/lookup_ref_delta_objects.rs":"12aca3bfe7546f65e6ce9dff454c69e3c55bc6bd23df65bfb469f088a109d215","src/data/input/mod.rs":"386167c1f33fad1b20718c8664a7bd2984c498affaffa29cc54dff13a5d9f3b8","src/data/input/types.rs":"b48be6950d83ebb4019a5a53ced7fa37b6763f4f50510230fce90761ca85d7ae","src/data/mod.rs":"09e4550448b99015accdab97926c7672d5a0c84caee349b105d5be6c7fd7597d","src/data/output/bytes.rs":"3fa26f3197bc8cee5fb141cd67c3f233481350422f9acfcb3138f97d58792238","src/data/output/count/mod.rs":"12fd6fb32b1467467b4d92a458d6b5017644f4c7e35098553f66c618b8a71a1d","src/data/output/count/objects/mod.rs":"70ac448eae2d3b0d4491922bbb3ad25813d404441a41e7617c3464d918dc83e3","src/data/output/count/objects/reduce.rs":"a02c32cfc1b62b07072123c922ff5790b293a5e2e87f6f1c12db806521418ecb","src/data/output/count/objects/tree.rs":"7d6bfbe55d32c3c13fe1c9004e0671a8fc7379d73985ef69da0d1d2d153315e3","src/data/output/count/objects/types.rs":"00864c5daec66e5b58d814b5fc2151e1d046a6eb84a5d175f84c165ef93cb6ba","src/data/output/count/objects/util.rs":"f018375fa5d1dbf48a714f99768b6ab45e5403a2ed59b70829dae172c65c187b","src/data/output/entry/iter_from_counts.rs":"bf5d4bb30673dd0729a8057ff6cf99e9dc606ea054e4ff9cd271b0dfeddec8c7","src/data/output/entry/mod.rs":"0352e7acbd09ca868bc7dd51b1bbb12d5417d5fa8282cece52d6f77174979678","src/data/output/mod.rs":"ac037fc6111d8f32f1d807bb3d34c2af351b99bdc97c600992d64c90fdb4fa1e","src/find.rs":"380c4d0e77c73486650e0c8b1b661df9e810cd356fbf71efaf7ba4b0c518304c","src/find_traits.rs":"2b978fab38dda58f3e32dd0e352a7cb59fbf282ab22110a37cc02e76ea2302d0","src/index/access.rs":"28605818e941df33ec7835759a09146e8fc5a05027521f81e1612d35e04b8d10","src/index/encode.rs":"91dfbd431439e5e19f763653b3aa7217096c8b16c8ec2512a97666643fa9f90e","src/index/init.rs":"d25b0865859f505fba4b02437faad6f02b264585906c9cdc1743b64f7f238148","src/index/mod.rs":"40bdc4fc5ae804abe993c73f5c44fa2709aa63f93b01426cf012fb0167820c71","src/index/traverse/error.rs":"d520a384e3737ac973a9d84cf6dbd7ebda6f459d26560e6e40555eacede8c7f6","src/index/traverse/mod.rs":"64cf4783cab2572c164e0400519854cb6797d020cf4fb8047f48ab45fa0a7de5","src/index/traverse/reduce.rs":"0f3614232888f66c5ad13552875ced211c79dad656093e080b16bfc25ff5d7b1","src/index/traverse/types.rs":"a9ad1e3b6944d62c38fcde4823a46809736516e9753dc16d15f38ac2bb74041e","src/index/traverse/with_index.rs":"105461d0787e55df10208b217b30f1dd307a8adaac841616fa9c37597adfeb97","src/index/traverse/with_lookup.rs":"4689744f43581b3f3dd462c8a9e64b89f2e13d7d26dcce72310d514b68d0e0c6","src/index/util.rs":"de1ab39c296dc74c01edcd5ec7a9ce872acbd07aed796b8b06310d1d6e0893ea","src/index/verify.rs":"050a10ec67594fda1bf28f9d7593a58725c3d59fafa61ef5f63e522bd9408e7d","src/index/write/error.rs":"5294efe0508252d5942183fa5ab5139dc10e33ccfb28698a6101fc360990d688","src/index/write/mod.rs":"8117fe768a417b1d8fe7643fae0427be354c26d80d787c62cd6e714599207e3f","src/lib.rs":"7b72df6596c2501d8bb9c0bde09620e6b497ce4561191c59eae0d4229356d97b","src/multi_index/access.rs":"53ce7098eb88d4f847477941cd75bf01ab27f71e260f449eceb7f52ff9f95b61","src/multi_index/chunk.rs":"842f8b85b7c01293dad0eb6e786880e1acf89c9ea570bcd8f890776d9b4be0ac","src/multi_index/init.rs":"290daf86cfe21127a27c5bea49d3b1ef4812bde968ff30b36e4cef278bc513c9","src/multi_index/mod.rs":"38ac324b03c7ed2a7a3d169ff1997a7799f343c86bf9b5b026be00def7685fc9","src/multi_index/verify.rs":"ce63542ff4b8ee35a04051813bc1a19187b78a72f60d958787d6316deb822592","src/multi_index/write.rs":"3168e8a2c5100942b0f694719cf16fa55a7201e4ad436d61b285133d2ab415c1","src/verify.rs":"74a644a2db5b643f21a0927b0c75c99359b9d42242ed4089fe10069b17067df7"},"package":"7536203a45b31e1bc5694bbf90ba8da1b736c77040dd6a520db369f371eb1ab3"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"9f346cb1073e239c86597179ef76dbf73a3768cb8dda5b6f8a19bf9b4f07ea93","Cargo.toml":"b2754018a2f9b7999fe4d76e5615a7a770ab6cebdcf3c26743f2545619887922","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/bundle/find.rs":"f6ac1a7b11c13ee8eb1eda5a3a967f99bdc49af9d0869354b6fa617d0c749837","src/bundle/init.rs":"78582570130e4b7e67bbf01395317ec4727be7cee01d310d07180bb79f61ea1d","src/bundle/mod.rs":"cc6b3794389ce9ed3b99a4da20e7cd1ee0e027ac2032b6da08f829c185608bc6","src/bundle/write/error.rs":"f978b1622ac1354f44a7160d2439d5ac697dd92b67631d8c846ae2621be489ae","src/bundle/write/mod.rs":"9e0a3cae664583dfed7c93606d72e9fbb25637cdd99f8476a04a5e7cb558fd29","src/bundle/write/types.rs":"faef010d8680b85b08ad2aaca291fed1e07ddf00a5f407f1c60d657b0ef6ed5b","src/cache/delta/from_offsets.rs":"21b6ae005f11441a6be09c5939db4c047e142d8369167d2b775ef084172a968a","src/cache/delta/mod.rs":"52e7aa488fc2eb478ac91be0c6f4179e78c9620094b3a0d9adee03b776b1636e","src/cache/delta/traverse/mod.rs":"43a7854d1bc10cfb5fccedc9686d6cdfcbe1aae2dd712731bee6b701fc0a3a2a","src/cache/delta/traverse/resolve.rs":"b432abdafb1a131413dcd2688cd57549ffcec99c13933c057fe354c776226186","src/cache/delta/traverse/util.rs":"eced32d724ad66766b5c9933d0324ef351436740266a85491238ec8d26010b7d","src/cache/lru.rs":"557043f806f754fadae96199d2261a8df184f86bf0dd525efe091c5fa3a793da","src/cache/mod.rs":"1fd545e5944ec378f5a89825840fc869684ca571ea7859213ea38d674e991fb1","src/cache/object.rs":"abbdd67a9f101d9df707057fcbd5fe23e1464d0e312807348bfe610c64a410c5","src/data/delta.rs":"915c10207f5897d473cc806ae31de98e90f41e5e99361e18cb1e42177137c024","src/data/entry/decode.rs":"c3fa9509fcb93b455d679366d390b660b2807a1a7aa743b3882acd22d5bdeb8f","src/data/entry/header.rs":"5b1e5485215f203031d2762b13ed7915367f4c2f86fd1cdb5adfa91a06b62198","src/data/entry/mod.rs":"543c2ed9985bdc7077655deaaeb4d1745d03ae74db03842ae97e2c0fb4880db7","src/data/file/decode/entry.rs":"6399d1d9a4d71180d0216af1e9d4efcc3913a62736588ff6274ed69d191decff","src/data/file/decode/header.rs":"2e1bf2bd6191d16ecb2b835386a43f2d79a8ebbf9c1ed3d8a57d7845fdeaa2bc","src/data/file/decode/mod.rs":"bed7398ba3c6a48d2c7af96a2044ee56ba3d9e757995e06493517db27c743712","src/data/file/init.rs":"16a594f4245be493e3ca61fabe730d796e1d2235de7c0b38609e394df9737c86","src/data/file/mod.rs":"4b6a8a99a4864365592733836d654cc30ab717bf8a69569d02fac3ef0b88fac2","src/data/file/verify.rs":"8deb230289e2cd29b4af49d777ce84731fcb216194df157ab1fc76c9d60bfd84","src/data/header.rs":"cc86b9b6d45c7764217bcea615e5640fbbb4af0d17d25cc24073d48d2b9fd206","src/data/input/bytes_to_entries.rs":"97a4ccc355a50603c8e301edbdeeb33829438b82bc4e68925fae1691994f2c00","src/data/input/entries_to_bytes.rs":"67f33fdc69c1444112760189daf66c8f568b3deec13cf294795dab9fc10b2577","src/data/input/entry.rs":"84c2278258981685bb927d5dbd2cc7b981c371a66f22a86f22772a5c11535bc4","src/data/input/lookup_ref_delta_objects.rs":"12aca3bfe7546f65e6ce9dff454c69e3c55bc6bd23df65bfb469f088a109d215","src/data/input/mod.rs":"386167c1f33fad1b20718c8664a7bd2984c498affaffa29cc54dff13a5d9f3b8","src/data/input/types.rs":"b48be6950d83ebb4019a5a53ced7fa37b6763f4f50510230fce90761ca85d7ae","src/data/mod.rs":"09e4550448b99015accdab97926c7672d5a0c84caee349b105d5be6c7fd7597d","src/data/output/bytes.rs":"3fa26f3197bc8cee5fb141cd67c3f233481350422f9acfcb3138f97d58792238","src/data/output/count/mod.rs":"12fd6fb32b1467467b4d92a458d6b5017644f4c7e35098553f66c618b8a71a1d","src/data/output/count/objects/mod.rs":"70ac448eae2d3b0d4491922bbb3ad25813d404441a41e7617c3464d918dc83e3","src/data/output/count/objects/reduce.rs":"a02c32cfc1b62b07072123c922ff5790b293a5e2e87f6f1c12db806521418ecb","src/data/output/count/objects/tree.rs":"7d6bfbe55d32c3c13fe1c9004e0671a8fc7379d73985ef69da0d1d2d153315e3","src/data/output/count/objects/types.rs":"00864c5daec66e5b58d814b5fc2151e1d046a6eb84a5d175f84c165ef93cb6ba","src/data/output/count/objects/util.rs":"f018375fa5d1dbf48a714f99768b6ab45e5403a2ed59b70829dae172c65c187b","src/data/output/entry/iter_from_counts.rs":"bf5d4bb30673dd0729a8057ff6cf99e9dc606ea054e4ff9cd271b0dfeddec8c7","src/data/output/entry/mod.rs":"0352e7acbd09ca868bc7dd51b1bbb12d5417d5fa8282cece52d6f77174979678","src/data/output/mod.rs":"ac037fc6111d8f32f1d807bb3d34c2af351b99bdc97c600992d64c90fdb4fa1e","src/find.rs":"380c4d0e77c73486650e0c8b1b661df9e810cd356fbf71efaf7ba4b0c518304c","src/find_traits.rs":"2b978fab38dda58f3e32dd0e352a7cb59fbf282ab22110a37cc02e76ea2302d0","src/index/access.rs":"28605818e941df33ec7835759a09146e8fc5a05027521f81e1612d35e04b8d10","src/index/encode.rs":"91dfbd431439e5e19f763653b3aa7217096c8b16c8ec2512a97666643fa9f90e","src/index/init.rs":"d25b0865859f505fba4b02437faad6f02b264585906c9cdc1743b64f7f238148","src/index/mod.rs":"40bdc4fc5ae804abe993c73f5c44fa2709aa63f93b01426cf012fb0167820c71","src/index/traverse/error.rs":"d520a384e3737ac973a9d84cf6dbd7ebda6f459d26560e6e40555eacede8c7f6","src/index/traverse/mod.rs":"64cf4783cab2572c164e0400519854cb6797d020cf4fb8047f48ab45fa0a7de5","src/index/traverse/reduce.rs":"0f3614232888f66c5ad13552875ced211c79dad656093e080b16bfc25ff5d7b1","src/index/traverse/types.rs":"a9ad1e3b6944d62c38fcde4823a46809736516e9753dc16d15f38ac2bb74041e","src/index/traverse/with_index.rs":"105461d0787e55df10208b217b30f1dd307a8adaac841616fa9c37597adfeb97","src/index/traverse/with_lookup.rs":"4689744f43581b3f3dd462c8a9e64b89f2e13d7d26dcce72310d514b68d0e0c6","src/index/util.rs":"de1ab39c296dc74c01edcd5ec7a9ce872acbd07aed796b8b06310d1d6e0893ea","src/index/verify.rs":"050a10ec67594fda1bf28f9d7593a58725c3d59fafa61ef5f63e522bd9408e7d","src/index/write/error.rs":"5294efe0508252d5942183fa5ab5139dc10e33ccfb28698a6101fc360990d688","src/index/write/mod.rs":"8117fe768a417b1d8fe7643fae0427be354c26d80d787c62cd6e714599207e3f","src/lib.rs":"7b72df6596c2501d8bb9c0bde09620e6b497ce4561191c59eae0d4229356d97b","src/multi_index/access.rs":"53ce7098eb88d4f847477941cd75bf01ab27f71e260f449eceb7f52ff9f95b61","src/multi_index/chunk.rs":"842f8b85b7c01293dad0eb6e786880e1acf89c9ea570bcd8f890776d9b4be0ac","src/multi_index/init.rs":"290daf86cfe21127a27c5bea49d3b1ef4812bde968ff30b36e4cef278bc513c9","src/multi_index/mod.rs":"38ac324b03c7ed2a7a3d169ff1997a7799f343c86bf9b5b026be00def7685fc9","src/multi_index/verify.rs":"ce63542ff4b8ee35a04051813bc1a19187b78a72f60d958787d6316deb822592","src/multi_index/write.rs":"3168e8a2c5100942b0f694719cf16fa55a7201e4ad436d61b285133d2ab415c1","src/verify.rs":"32331ed00590e4c6b5d2f729242358a50f24b2a8c57c4d35f8e979cd95efa908"},"package":"1431ba2e30deff1405920693d54ab231c88d7c240dd6ccc936ee223d8f8697c3"} \ No newline at end of file
diff --git a/vendor/gix-pack/CHANGELOG.md b/vendor/gix-pack/CHANGELOG.md
index eb29fb276..a40704cc1 100644
--- a/vendor/gix-pack/CHANGELOG.md
+++ b/vendor/gix-pack/CHANGELOG.md
@@ -5,6 +5,38 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.44.0 (2023-10-12)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 4 commits contributed to the release over the course of 13 calendar days.
+ - 17 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Thanks Clippy
+
+<csr-read-only-do-not-edit/>
+
+[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic.
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+ - Thanks clippy ([`345712d`](https://github.com/Byron/gitoxide/commit/345712dcdfddcccc630bbfef2ed4f461b21550d3))
+ - Merge branch 'reset' ([`b842691`](https://github.com/Byron/gitoxide/commit/b8426919a491dc3a7df01ee3f258fc0d8a3a327c))
+ - Adapt to `gix-features` ([`9e7c3e1`](https://github.com/Byron/gitoxide/commit/9e7c3e12528833023bf37ada4e2e90989d848e99))
+</details>
+
## 0.43.0 (2023-09-24)
A maintenance release without user-facing changes.
@@ -13,7 +45,7 @@ A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
- - 1 commit contributed to the release.
+ - 2 commits contributed to the release.
- 16 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,6 +57,7 @@ A maintenance release without user-facing changes.
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
</details>
diff --git a/vendor/gix-pack/Cargo.toml b/vendor/gix-pack/Cargo.toml
index d6e0fa0b4..0749ec959 100644
--- a/vendor/gix-pack/Cargo.toml
+++ b/vendor/gix-pack/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-pack"
-version = "0.43.0"
+version = "0.44.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
include = [
"src/**/*",
@@ -53,12 +53,12 @@ optional = true
version = "^0.4.4"
[dependencies.gix-diff]
-version = "^0.36.0"
+version = "^0.37.0"
optional = true
default-features = false
[dependencies.gix-features]
-version = "^0.35.0"
+version = "^0.36.0"
features = [
"crc32",
"rustsha1",
@@ -67,19 +67,19 @@ features = [
]
[dependencies.gix-hash]
-version = "^0.13.0"
+version = "^0.13.1"
[dependencies.gix-hashtable]
version = "^0.4.0"
[dependencies.gix-object]
-version = "^0.37.0"
+version = "^0.38.0"
[dependencies.gix-path]
version = "^0.10.0"
[dependencies.gix-traverse]
-version = "^0.33.0"
+version = "^0.34.0"
optional = true
[dependencies.memmap2]
@@ -127,5 +127,5 @@ streaming-input = []
wasm = ["gix-diff?/wasm"]
[target."cfg(not(target_arch = \"wasm32\"))".dependencies.gix-tempfile]
-version = "^10.0.0"
+version = "^11.0.0"
default-features = false
diff --git a/vendor/gix-pack/src/data/input/entries_to_bytes.rs b/vendor/gix-pack/src/data/input/entries_to_bytes.rs
index 27cd04648..dc2ac5884 100644
--- a/vendor/gix-pack/src/data/input/entries_to_bytes.rs
+++ b/vendor/gix-pack/src/data/input/entries_to_bytes.rs
@@ -97,7 +97,7 @@ where
let interrupt_never = std::sync::atomic::AtomicBool::new(false);
let digest = hash::bytes(
&mut self.output,
- num_bytes_written as usize,
+ num_bytes_written,
self.object_hash,
&mut gix_features::progress::Discard,
&interrupt_never,
diff --git a/vendor/gix-pack/src/verify.rs b/vendor/gix-pack/src/verify.rs
index d502ada38..fff99c75d 100644
--- a/vendor/gix-pack/src/verify.rs
+++ b/vendor/gix-pack/src/verify.rs
@@ -39,7 +39,7 @@ pub fn checksum_on_disk_or_mmap(
let data_len_without_trailer = data.len() - object_hash.len_in_bytes();
let actual = match gix_features::hash::bytes_of_file(
data_path,
- data_len_without_trailer,
+ data_len_without_trailer as u64,
object_hash,
progress,
should_interrupt,
diff --git a/vendor/gix-packetline/.cargo-checksum.json b/vendor/gix-packetline/.cargo-checksum.json
index 098611924..6fb4c7e7a 100644
--- a/vendor/gix-packetline/.cargo-checksum.json
+++ b/vendor/gix-packetline/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"2910fcbf41473d8ead25bf4b12cc8be5a080f938233245d1756e4ece3c59d07f","Cargo.toml":"6ae5a59e2f9ae65880f429a5881ea571327aea31c4ebf7afda11c3316d989f6d","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/decode.rs":"8edad2d5aae96c384dc522ebdbf3b12224387cf8e6b4fadcefec88f72313f6b7","src/encode/async_io.rs":"a1d6f14a07c386c357359c8654597994e9206ad9fca24e09f4200767ecadcd81","src/encode/blocking_io.rs":"58526393c361fccb786b94d4170264199e0d9b4a93c6878de406d9747bf05f81","src/encode/mod.rs":"ad736f1730f056d4143575fdcd0931e6365912fb8629f0a5fa12a47ae3e93a2a","src/lib.rs":"53f89f86469f105b6701200e15ce9c1dddc9d0c0a41b3b9a0d4fa956f996566a","src/line/async_io.rs":"875ae42f351faf46b5df2db46fb1a291dc1d558ce79945f0bea5d47aecf6bef5","src/line/blocking_io.rs":"c89811d17365f57759d496d8d2d1a1c2c368c39182cda51e64a2d2a9b37d8aca","src/line/mod.rs":"0eb03c4086ef6508fe56a5f94dfda121c412344392d51c317069af2c5899944f","src/read/async_io.rs":"fe3124c2b55cd8dfef610b8e2e2bd069ff7f35ba547d2f7450a350d4a1b8692c","src/read/blocking_io.rs":"d18d67bf2d03f47c5d9212a4f9475021b6694a886a4be4101f0379bf2aa5351b","src/read/mod.rs":"61abd34a7127099cbf3f790b8700939b070a0a3212c9e18cfd28dd9fe918f949","src/read/sidebands/async_io.rs":"232cb87708264b52b48716ae398016a864fafc9e49a66cd17e0c6bf54ed9ecd5","src/read/sidebands/blocking_io.rs":"701f6785ba3063d97319ebfe3c7bf3edd977540872cffe5a5d6143178364fefd","src/read/sidebands/mod.rs":"8861e041d7da5d96fc0d4ae52f30d6ede64501b2de95cf866e85d26ce4255bc3","src/write/async_io.rs":"23a523c0fec725dded47d09a866c5f2d4fe837cc3466bf4e31b411b1f4e36af2","src/write/blocking_io.rs":"485baff59b71611b9f8e1b448ea954cafe8e3b57511aa2e50cf458685c3b42ed","src/write/mod.rs":"348a7a8b7aed93bbfaab61db91b54a0a7e57d2b7bb4622bdaa8eecda715189cb"},"package":"d6df0b75361353e7c0a6d72d49617a37379a7a22cba4569ae33a7720a4c8755a"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"3ffe98b94d00cebb114d989558c240bff14b24a0935fb5f55673b6b8e06b5743","Cargo.toml":"1296b260f9b9a26c58c4d5fc28b9308434f2755d2a49379b9070ba422840948b","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/decode.rs":"8edad2d5aae96c384dc522ebdbf3b12224387cf8e6b4fadcefec88f72313f6b7","src/encode/async_io.rs":"a1d6f14a07c386c357359c8654597994e9206ad9fca24e09f4200767ecadcd81","src/encode/blocking_io.rs":"58526393c361fccb786b94d4170264199e0d9b4a93c6878de406d9747bf05f81","src/encode/mod.rs":"ad736f1730f056d4143575fdcd0931e6365912fb8629f0a5fa12a47ae3e93a2a","src/lib.rs":"53f89f86469f105b6701200e15ce9c1dddc9d0c0a41b3b9a0d4fa956f996566a","src/line/async_io.rs":"875ae42f351faf46b5df2db46fb1a291dc1d558ce79945f0bea5d47aecf6bef5","src/line/blocking_io.rs":"c89811d17365f57759d496d8d2d1a1c2c368c39182cda51e64a2d2a9b37d8aca","src/line/mod.rs":"0eb03c4086ef6508fe56a5f94dfda121c412344392d51c317069af2c5899944f","src/read/async_io.rs":"fe3124c2b55cd8dfef610b8e2e2bd069ff7f35ba547d2f7450a350d4a1b8692c","src/read/blocking_io.rs":"d18d67bf2d03f47c5d9212a4f9475021b6694a886a4be4101f0379bf2aa5351b","src/read/mod.rs":"61abd34a7127099cbf3f790b8700939b070a0a3212c9e18cfd28dd9fe918f949","src/read/sidebands/async_io.rs":"232cb87708264b52b48716ae398016a864fafc9e49a66cd17e0c6bf54ed9ecd5","src/read/sidebands/blocking_io.rs":"701f6785ba3063d97319ebfe3c7bf3edd977540872cffe5a5d6143178364fefd","src/read/sidebands/mod.rs":"8861e041d7da5d96fc0d4ae52f30d6ede64501b2de95cf866e85d26ce4255bc3","src/write/async_io.rs":"23a523c0fec725dded47d09a866c5f2d4fe837cc3466bf4e31b411b1f4e36af2","src/write/blocking_io.rs":"485baff59b71611b9f8e1b448ea954cafe8e3b57511aa2e50cf458685c3b42ed","src/write/mod.rs":"348a7a8b7aed93bbfaab61db91b54a0a7e57d2b7bb4622bdaa8eecda715189cb"},"package":"8a8384b1e964151aff0d5632dd9b191059d07dff358b96bd940f1b452600d7ab"} \ No newline at end of file
diff --git a/vendor/gix-packetline/CHANGELOG.md b/vendor/gix-packetline/CHANGELOG.md
index 346f64c4a..5faf03695 100644
--- a/vendor/gix-packetline/CHANGELOG.md
+++ b/vendor/gix-packetline/CHANGELOG.md
@@ -5,6 +5,36 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.16.7 (2023-10-12)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 2 commits contributed to the release over the course of 6 calendar days.
+ - 33 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Thanks Clippy
+
+<csr-read-only-do-not-edit/>
+
+[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic.
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+ - Thanks clippy ([`345712d`](https://github.com/Byron/gitoxide/commit/345712dcdfddcccc630bbfef2ed4f461b21550d3))
+</details>
+
## 0.16.6 (2023-09-08)
A maintenance release without user-facing changes.
@@ -13,7 +43,7 @@ A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
- - 5 commits contributed to the release over the course of 17 calendar days.
+ - 6 commits contributed to the release over the course of 17 calendar days.
- 17 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -31,6 +61,7 @@ A maintenance release without user-facing changes.
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-date v0.8.0, gix-hash v0.13.0, gix-features v0.34.0, gix-actor v0.26.0, gix-object v0.36.0, gix-path v0.10.0, gix-glob v0.12.0, gix-attributes v0.18.0, gix-packetline-blocking v0.16.6, gix-filter v0.4.0, gix-fs v0.6.0, gix-commitgraph v0.20.0, gix-hashtable v0.4.0, gix-revwalk v0.7.0, gix-traverse v0.32.0, gix-worktree-stream v0.4.0, gix-archive v0.4.0, gix-config-value v0.14.0, gix-tempfile v9.0.0, gix-lock v9.0.0, gix-ref v0.36.0, gix-sec v0.10.0, gix-config v0.29.0, gix-prompt v0.7.0, gix-url v0.23.0, gix-credentials v0.19.0, gix-diff v0.35.0, gix-discover v0.24.0, gix-ignore v0.7.0, gix-index v0.24.0, gix-macros v0.1.0, gix-mailmap v0.18.0, gix-negotiate v0.7.0, gix-pack v0.42.0, gix-odb v0.52.0, gix-pathspec v0.2.0, gix-packetline v0.16.6, gix-transport v0.36.0, gix-protocol v0.39.0, gix-revision v0.21.0, gix-refspec v0.17.0, gix-submodule v0.3.0, gix-worktree v0.25.0, gix-worktree-state v0.2.0, gix v0.53.0, safety bump 39 crates ([`8bd0456`](https://github.com/Byron/gitoxide/commit/8bd045676bb2cdc02624ab93e73ff8518064ca38))
- Prepare changelogs for release ([`375db06`](https://github.com/Byron/gitoxide/commit/375db06a8442378c3f7a922fae38e2a6694d9d04))
- Merge branch 'optimizations' ([`6135a5e`](https://github.com/Byron/gitoxide/commit/6135a5ea8709646f01da62939a59dd3a9750e007))
- Adapt to changes in `gix` ([`805b8aa`](https://github.com/Byron/gitoxide/commit/805b8aa74b064b7aa08d87094a994bb8c7aae6ed))
diff --git a/vendor/gix-packetline/Cargo.toml b/vendor/gix-packetline/Cargo.toml
index 904d20302..eaf533bf9 100644
--- a/vendor/gix-packetline/Cargo.toml
+++ b/vendor/gix-packetline/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-packetline"
-version = "0.16.6"
+version = "0.16.7"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
include = [
"src/**/*",
diff --git a/vendor/gix-pathspec/.cargo-checksum.json b/vendor/gix-pathspec/.cargo-checksum.json
index 776151660..a97967184 100644
--- a/vendor/gix-pathspec/.cargo-checksum.json
+++ b/vendor/gix-pathspec/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"e260578f0c5595ab2d17eddd0309da451ee37752b8ec31c09193670c5f6dfe6e","Cargo.toml":"bdb90604393782c6ea835edad435a65ccff130a667fed4471b7bc6edf9bca307","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","README.md":"ec95cf838fbde2a636e2b1de88ddde926ddbc59b496590d7a8edbd283d87875f","src/defaults.rs":"ff76c0704678059c26924f729c36f40c501d21cb0afa793359a73e67a0f2e736","src/lib.rs":"74f77299f99c32714396a2815e014474af44414941786a82cc1a3be930d47a9d","src/parse.rs":"c279f433b8585447c2f6e1d02329f8a2eb86694333b2dd6af45fedbb1faef724","src/pattern.rs":"629c3225eb83eb9e3606eeda558f8e66c12defacc99f95f00e177308322bb576","src/search/init.rs":"a26f6335f8feb7c8feac0390c07da0b64499d5a7a7d3f263149ddfe678025356","src/search/matching.rs":"e9529ca5c88762f19c890a5f210339d4b1febe8fc6633eb6f1b2d69367855d93","src/search/mod.rs":"31a3b65392c3791cb9b66f8a799275ba5d4b13a0e82bd1401bbb114cd3357ef0","tests/defaults.rs":"fb9e0c78258e96f89138e77f1d9fbb009de2ff490a3c2ecd0637e826a105dd69","tests/fixtures/generated-archives/match_baseline.tar.xz":"0ba46801dfab65bcc77c8ce0dc9144d77fd142be847f3340af6ae8fcba44c82d","tests/fixtures/generated-archives/match_baseline_dirs.tar.xz":"742241f4ea290fc9088fd5e32423859929bc4b39dccd31d205c67fe3ac9128c0","tests/fixtures/generated-archives/match_baseline_files.tar.xz":"b0c722ab08de2ab63b9f222747cf898f5b6bb6b76ec55ccd176bab3b854ef7bb","tests/fixtures/generated-archives/parse_baseline.tar.xz":"123da727b33802a3a2dc80e948b07cbf133c2d66129693f4896cba2f6b92b02f","tests/fixtures/match_baseline_dirs.sh":"202f2d67ed9107507e4c648b2ad78934ea2a3f6b6865f0a8367fe7aa6aca7614","tests/fixtures/match_baseline_files.sh":"3fa45af77c32b570c419b9746539ee9f074e13113437f5a29931126b155cb1ff","tests/fixtures/parse_baseline.sh":"55415e80ce66bce46bf342036b7fd6e8a3a9094cb058cade13af325347e8bb73","tests/normalize/mod.rs":"6d39e550b255da354b1566f01d21f270b5235bbae760448ceec734cef3930569","tests/parse/invalid.rs":"7bc793a7718a46fd08c2de87d971cdc044788d9df8c6499ca4e3022caed6d955","tests/parse/mod.rs":"e712b38cc012ff5775a9ff60c1a6f70a7c2411dad42ae5e496068db71b1565d4","tests/parse/valid.rs":"ab1f68baaeaef7d6320304117e39531e78d36ec038f78a74d49f82ac66675950","tests/pathspec.rs":"63ed83deae59a91ba60b36ffccebd5ea01229eb20a10f654595441f511dea14f","tests/search/mod.rs":"b701d3431edb87032bc85b0375cd47050210af7ab438f598c71733ad41558d97"},"package":"c3e26c9b47c51be73f98d38c84494bd5fb99334c5d6fda14ef5d036d50a9e5fd"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"9bdb992f7380e018fb6f96a4c72fa0acaf0199f66fdbf32ecaeba65ab1e5c25d","Cargo.toml":"93c707a0881ec751086ce00043ada23b7e4d660a684bafe2c53da921720bcfc3","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","README.md":"ec95cf838fbde2a636e2b1de88ddde926ddbc59b496590d7a8edbd283d87875f","src/defaults.rs":"ff76c0704678059c26924f729c36f40c501d21cb0afa793359a73e67a0f2e736","src/lib.rs":"489131bfe45d9040a4b8283c94eb7f423216de2e492b29762c008d5258e04177","src/parse.rs":"c279f433b8585447c2f6e1d02329f8a2eb86694333b2dd6af45fedbb1faef724","src/pattern.rs":"629c3225eb83eb9e3606eeda558f8e66c12defacc99f95f00e177308322bb576","src/search/init.rs":"a26f6335f8feb7c8feac0390c07da0b64499d5a7a7d3f263149ddfe678025356","src/search/matching.rs":"e9529ca5c88762f19c890a5f210339d4b1febe8fc6633eb6f1b2d69367855d93","src/search/mod.rs":"31a3b65392c3791cb9b66f8a799275ba5d4b13a0e82bd1401bbb114cd3357ef0","tests/defaults.rs":"fb9e0c78258e96f89138e77f1d9fbb009de2ff490a3c2ecd0637e826a105dd69","tests/fixtures/generated-archives/match_baseline.tar.xz":"0ba46801dfab65bcc77c8ce0dc9144d77fd142be847f3340af6ae8fcba44c82d","tests/fixtures/generated-archives/match_baseline_dirs.tar.xz":"742241f4ea290fc9088fd5e32423859929bc4b39dccd31d205c67fe3ac9128c0","tests/fixtures/generated-archives/match_baseline_files.tar.xz":"b0c722ab08de2ab63b9f222747cf898f5b6bb6b76ec55ccd176bab3b854ef7bb","tests/fixtures/generated-archives/parse_baseline.tar.xz":"123da727b33802a3a2dc80e948b07cbf133c2d66129693f4896cba2f6b92b02f","tests/fixtures/match_baseline_dirs.sh":"202f2d67ed9107507e4c648b2ad78934ea2a3f6b6865f0a8367fe7aa6aca7614","tests/fixtures/match_baseline_files.sh":"3fa45af77c32b570c419b9746539ee9f074e13113437f5a29931126b155cb1ff","tests/fixtures/parse_baseline.sh":"55415e80ce66bce46bf342036b7fd6e8a3a9094cb058cade13af325347e8bb73","tests/normalize/mod.rs":"6d39e550b255da354b1566f01d21f270b5235bbae760448ceec734cef3930569","tests/parse/invalid.rs":"7bc793a7718a46fd08c2de87d971cdc044788d9df8c6499ca4e3022caed6d955","tests/parse/mod.rs":"e712b38cc012ff5775a9ff60c1a6f70a7c2411dad42ae5e496068db71b1565d4","tests/parse/valid.rs":"ab1f68baaeaef7d6320304117e39531e78d36ec038f78a74d49f82ac66675950","tests/pathspec.rs":"63ed83deae59a91ba60b36ffccebd5ea01229eb20a10f654595441f511dea14f","tests/search/mod.rs":"2540ce1fc004bdcc355ca2a0e3dbcb22c943e209f93c311e2be3a04f8f1855b5"},"package":"e9cc7194fdcf43b4a1ccfa13ffae1d79f83beb4becff7761d88dd99faeafe625"} \ No newline at end of file
diff --git a/vendor/gix-pathspec/CHANGELOG.md b/vendor/gix-pathspec/CHANGELOG.md
index d742565d3..ffced1757 100644
--- a/vendor/gix-pathspec/CHANGELOG.md
+++ b/vendor/gix-pathspec/CHANGELOG.md
@@ -5,6 +5,37 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.4.0 (2023-10-12)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 3 commits contributed to the release over the course of 6 calendar days.
+ - 17 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Thanks Clippy
+
+<csr-read-only-do-not-edit/>
+
+[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic.
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+ - Fix docs ([`995bc84`](https://github.com/Byron/gitoxide/commit/995bc840664cbd4aeb7f95592e3125dee63bdcd4))
+ - Thanks clippy ([`345712d`](https://github.com/Byron/gitoxide/commit/345712dcdfddcccc630bbfef2ed4f461b21550d3))
+</details>
+
## 0.3.0 (2023-09-24)
<csr-id-832b34570bde97499e75a174bc818113092b3145/>
@@ -17,7 +48,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<csr-read-only-do-not-edit/>
- - 3 commits contributed to the release over the course of 1 calendar day.
+ - 4 commits contributed to the release over the course of 1 calendar day.
- 16 days passed between releases.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -29,6 +60,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
- Merge branch 'reset' ([`54a8495`](https://github.com/Byron/gitoxide/commit/54a849545140f7f1c0c7564c418071c0a76a34e7))
- Improve documentation of `common_prefix()` and `pattern_matching_relative_path()`. ([`832b345`](https://github.com/Byron/gitoxide/commit/832b34570bde97499e75a174bc818113092b3145))
diff --git a/vendor/gix-pathspec/Cargo.toml b/vendor/gix-pathspec/Cargo.toml
index 57527a4f4..ba6e987c9 100644
--- a/vendor/gix-pathspec/Cargo.toml
+++ b/vendor/gix-pathspec/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-pathspec"
-version = "0.3.0"
+version = "0.4.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
description = "A crate of the gitoxide project dealing magical pathspecs"
readme = "README.md"
@@ -32,13 +32,13 @@ features = ["std"]
default-features = false
[dependencies.gix-attributes]
-version = "^0.19.0"
+version = "^0.20.0"
[dependencies.gix-config-value]
version = "^0.14.0"
[dependencies.gix-glob]
-version = "^0.13.0"
+version = "^0.14.0"
[dependencies.gix-path]
version = "^0.10.0"
diff --git a/vendor/gix-pathspec/src/lib.rs b/vendor/gix-pathspec/src/lib.rs
index 9f91567da..e271cdb06 100644
--- a/vendor/gix-pathspec/src/lib.rs
+++ b/vendor/gix-pathspec/src/lib.rs
@@ -134,7 +134,7 @@ pub enum SearchMode {
PathAwareGlob,
}
-/// Parse a git-style pathspec into a [`Pattern`][Pattern],
+/// Parse a git-style pathspec into a [`Pattern`],
/// setting the given `default` values in case these aren't specified in `input`.
///
/// Note that empty [paths](Pattern::path) are allowed here, and generally some processing has to be performed.
diff --git a/vendor/gix-pathspec/tests/search/mod.rs b/vendor/gix-pathspec/tests/search/mod.rs
index 638709c35..5266f3d0c 100644
--- a/vendor/gix-pathspec/tests/search/mod.rs
+++ b/vendor/gix-pathspec/tests/search/mod.rs
@@ -219,8 +219,8 @@ mod baseline {
is_inconsistent = spec.as_bstr() == "git-inconsistency";
!is_inconsistent
})
- .filter_map(|s| (!s.trim().is_empty()).then(|| s.trim()))
- .map(|pathspec| gix_pathspec::parse(pathspec, Default::default()).expect("valid pathspec"))
+ .filter(|s| !s.trim().is_empty())
+ .map(|pathspec| gix_pathspec::parse(pathspec.trim(), Default::default()).expect("valid pathspec"))
.collect();
Expected {
pathspecs,
diff --git a/vendor/gix-protocol/.cargo-checksum.json b/vendor/gix-protocol/.cargo-checksum.json
index c86c48660..89b428dd9 100644
--- a/vendor/gix-protocol/.cargo-checksum.json
+++ b/vendor/gix-protocol/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"8e4d151deb3e9305a3544c28872eaa680fa34c816f059f093dcf99c6f316dbab","Cargo.toml":"9b452b1e1940c2adf3d83ae5e6b0ff4868905621e7424751cc3ba235f6b00635","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/command/mod.rs":"cfd960eabb45461502c66a1eb520b504e582d9fbdc965ab8b32cc41e014d73b8","src/command/tests.rs":"42f5c98a4a8cf1f58c4c97c0f6c61ecf5e6f8380032a8452e8dfd8f093e7a975","src/fetch/arguments/async_io.rs":"5cc55867527012cd27fec718d06d468c075f3f5e9569e389b5d8fbcd9814ca5c","src/fetch/arguments/blocking_io.rs":"3536611fcfe4958a953314875ae330572a1a5e3160e5a979527ce58bf4465f37","src/fetch/arguments/mod.rs":"7763c6f9352b8bffd28b750da6ea0650215603509aa725b63bda6c896f497c34","src/fetch/delegate.rs":"4ef365ebc3db6beb77fc78d2a877d98d50577afd67d9a357e5365c99f4c324d6","src/fetch/error.rs":"63d305d921765056e179a5c19cfe1075319eaaa661877f4cefdc4dc247f3bb44","src/fetch/handshake.rs":"374a0b8394a362cd7fab30aaed2a9fa5a1f047c590da4ee7cfd9c432adc4755a","src/fetch/mod.rs":"94db03392ab0e62d5c33fc02dc6889b8d65c304637d7a9d9b27104f81424c460","src/fetch/response/async_io.rs":"3164a586423029c80bb40e6c9932df068a71b2cdbc0d567d1d463599771b6418","src/fetch/response/blocking_io.rs":"a74308b8f9221ce44898ed4f1d5d6b86ef9cfac80ca1529a2001414e848ca0f2","src/fetch/response/mod.rs":"7fcaac06b56309d0e2eb99be2cebbb755599b95e14c6b8de46c1e8a5a38b1e91","src/fetch/tests.rs":"12d20117c4744afdcc1ae18f80b9d1ace624e2b33ff704229b3d755913ff3970","src/fetch_fn.rs":"d8a2879b81604eef717cfe32853134280762736c0da672bb34aa8b84748b7084","src/handshake/function.rs":"ce0675aa16493404a8dd2d47ad7200faa96e3e10bd6ade0cb24641b99fc03914","src/handshake/mod.rs":"4f77d9898ef461bdad78adb889fe1abb6a8eff6c720931a7d82f881b01e5eb62","src/handshake/refs/async_io.rs":"1f8143928517f5dcdbeb01b4f98774cf17afe6e37db75558752599ba7b88fd20","src/handshake/refs/blocking_io.rs":"9475538f6b90e46174438a08f89b0cc5ba938644ae409d5c32a5d9fd3e023862","src/handshake/refs/mod.rs":"eeeabd63d239d70a4454d50c70e691f945c774be4bd2d1a9b057666232a96132","src/handshake/refs/shared.rs":"cccf9f168e88de9e04430fada9d699aa8847305758fe04fca8b8503d52b86706","src/handshake/refs/tests.rs":"834c9f783a35b75f5f93727312c9436db1cc91627758f71ac293049a71de5cd9","src/lib.rs":"37d70654d2b4bca30f53681b62888bd0b69cc143ee3e5239089842065f1c0b52","src/ls_refs.rs":"7ce35ad174d57f939f79b2a3ba5b7e8cf040bac2fb4b1a9044a4350f458623a4","src/remote_progress.rs":"2cdbeca25dc66612f8d39eb2be27de6da1b984caaee32390375005f72abe7687","src/util.rs":"d83861fd81167f09ba0e93278703f827b201299e1991382f6274b6ba8abce6cd"},"package":"cc7b700dc20cc9be8a5130a1fd7e10c34117ffa7068431c8c24d963f0a2e0c9b"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"7525666663a17f52e48066f12ab8b1a4267ee30003b6c766ac601f3794a398f8","Cargo.toml":"d7154308092d7520e1969c140128f55e497c9eac0cfd6e8f0f3e31bf56b346a7","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/command/mod.rs":"cfd960eabb45461502c66a1eb520b504e582d9fbdc965ab8b32cc41e014d73b8","src/command/tests.rs":"42f5c98a4a8cf1f58c4c97c0f6c61ecf5e6f8380032a8452e8dfd8f093e7a975","src/fetch/arguments/async_io.rs":"5cc55867527012cd27fec718d06d468c075f3f5e9569e389b5d8fbcd9814ca5c","src/fetch/arguments/blocking_io.rs":"3536611fcfe4958a953314875ae330572a1a5e3160e5a979527ce58bf4465f37","src/fetch/arguments/mod.rs":"7763c6f9352b8bffd28b750da6ea0650215603509aa725b63bda6c896f497c34","src/fetch/delegate.rs":"4ef365ebc3db6beb77fc78d2a877d98d50577afd67d9a357e5365c99f4c324d6","src/fetch/error.rs":"63d305d921765056e179a5c19cfe1075319eaaa661877f4cefdc4dc247f3bb44","src/fetch/handshake.rs":"374a0b8394a362cd7fab30aaed2a9fa5a1f047c590da4ee7cfd9c432adc4755a","src/fetch/mod.rs":"94db03392ab0e62d5c33fc02dc6889b8d65c304637d7a9d9b27104f81424c460","src/fetch/response/async_io.rs":"3164a586423029c80bb40e6c9932df068a71b2cdbc0d567d1d463599771b6418","src/fetch/response/blocking_io.rs":"a74308b8f9221ce44898ed4f1d5d6b86ef9cfac80ca1529a2001414e848ca0f2","src/fetch/response/mod.rs":"7fcaac06b56309d0e2eb99be2cebbb755599b95e14c6b8de46c1e8a5a38b1e91","src/fetch/tests.rs":"12d20117c4744afdcc1ae18f80b9d1ace624e2b33ff704229b3d755913ff3970","src/fetch_fn.rs":"d8a2879b81604eef717cfe32853134280762736c0da672bb34aa8b84748b7084","src/handshake/function.rs":"ce0675aa16493404a8dd2d47ad7200faa96e3e10bd6ade0cb24641b99fc03914","src/handshake/mod.rs":"4f77d9898ef461bdad78adb889fe1abb6a8eff6c720931a7d82f881b01e5eb62","src/handshake/refs/async_io.rs":"1f8143928517f5dcdbeb01b4f98774cf17afe6e37db75558752599ba7b88fd20","src/handshake/refs/blocking_io.rs":"9475538f6b90e46174438a08f89b0cc5ba938644ae409d5c32a5d9fd3e023862","src/handshake/refs/mod.rs":"eeeabd63d239d70a4454d50c70e691f945c774be4bd2d1a9b057666232a96132","src/handshake/refs/shared.rs":"cccf9f168e88de9e04430fada9d699aa8847305758fe04fca8b8503d52b86706","src/handshake/refs/tests.rs":"834c9f783a35b75f5f93727312c9436db1cc91627758f71ac293049a71de5cd9","src/lib.rs":"37d70654d2b4bca30f53681b62888bd0b69cc143ee3e5239089842065f1c0b52","src/ls_refs.rs":"7ce35ad174d57f939f79b2a3ba5b7e8cf040bac2fb4b1a9044a4350f458623a4","src/remote_progress.rs":"2cdbeca25dc66612f8d39eb2be27de6da1b984caaee32390375005f72abe7687","src/util.rs":"d83861fd81167f09ba0e93278703f827b201299e1991382f6274b6ba8abce6cd"},"package":"391e3feabdfa5f90dad6673ce59e3291ac28901b2ff248d86c5a7fbde0391e0e"} \ No newline at end of file
diff --git a/vendor/gix-protocol/CHANGELOG.md b/vendor/gix-protocol/CHANGELOG.md
index 1aea1ffb8..774c4118a 100644
--- a/vendor/gix-protocol/CHANGELOG.md
+++ b/vendor/gix-protocol/CHANGELOG.md
@@ -5,6 +5,61 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.41.1 (2023-10-13)
+
+### Bug Fixes
+
+ - <csr-id-8011c73ee401bfca03811a249c46a4dd468af1b8/> bump `gix-transport` version to prevent it from being picked up.
+ `gix-transport` v0.37.1 could accidentally be picked up by older, incompatible,
+ `gix` versions which now fail to build.
+
+ Thus v0.37.1 is now yanked and replaced with v0.38.0 along with a new
+ release of `gix` to go with it.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 2 commits contributed to the release.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`12b5caf`](https://github.com/Byron/gitoxide/commit/12b5cafc49baf07d00313de468970a2db33ac1f8))
+ - Bump `gix-transport` version to prevent it from being picked up. ([`8011c73`](https://github.com/Byron/gitoxide/commit/8011c73ee401bfca03811a249c46a4dd468af1b8))
+</details>
+
+## 0.41.0 (2023-10-12)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 3 commits contributed to the release.
+ - 17 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Release gix-transport v0.37.1, gix-protocol v0.41.0, gix-revision v0.23.0, gix-refspec v0.19.0, gix-worktree v0.27.0, gix-status v0.2.0, gix-submodule v0.5.0, gix-worktree-state v0.4.0, gix v0.55.0 ([`14ddbd4`](https://github.com/Byron/gitoxide/commit/14ddbd4c15128b1d5631a2388a00e024842b7b83))
+ - Release gix-hash v0.13.1, gix-features v0.36.0, gix-actor v0.28.0, gix-object v0.38.0, gix-glob v0.14.0, gix-attributes v0.20.0, gix-command v0.2.10, gix-filter v0.6.0, gix-fs v0.8.0, gix-commitgraph v0.22.0, gix-revwalk v0.9.0, gix-traverse v0.34.0, gix-worktree-stream v0.6.0, gix-archive v0.6.0, gix-tempfile v11.0.0, gix-lock v11.0.0, gix-ref v0.38.0, gix-config v0.31.0, gix-url v0.25.0, gix-credentials v0.21.0, gix-diff v0.37.0, gix-discover v0.26.0, gix-ignore v0.9.0, gix-index v0.26.0, gix-mailmap v0.20.0, gix-negotiate v0.9.0, gix-pack v0.44.0, gix-odb v0.54.0, gix-pathspec v0.4.0, gix-packetline v0.16.7, gix-transport v0.37.0, gix-protocol v0.41.0, gix-revision v0.23.0, gix-refspec v0.19.0, gix-worktree v0.27.0, gix-status v0.2.0, gix-submodule v0.5.0, gix-worktree-state v0.4.0, gix v0.55.0, safety bump 37 crates ([`68e5432`](https://github.com/Byron/gitoxide/commit/68e54326e527a55dd5b5079921fc251615833040))
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+</details>
+
## 0.40.0 (2023-09-24)
A maintenance release without user-facing changes.
@@ -13,7 +68,7 @@ A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
- - 1 commit contributed to the release.
+ - 2 commits contributed to the release.
- 15 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,6 +80,7 @@ A maintenance release without user-facing changes.
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
</details>
diff --git a/vendor/gix-protocol/Cargo.toml b/vendor/gix-protocol/Cargo.toml
index 038e3192d..19d1a22da 100644
--- a/vendor/gix-protocol/Cargo.toml
+++ b/vendor/gix-protocol/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-protocol"
-version = "0.40.0"
+version = "0.41.1"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
include = [
"src/**/*",
@@ -77,20 +77,20 @@ version = "1.12.0"
optional = true
[dependencies.gix-credentials]
-version = "^0.20.0"
+version = "^0.21.0"
[dependencies.gix-date]
version = "^0.8.0"
[dependencies.gix-features]
-version = "^0.35.0"
+version = "^0.36.0"
features = ["progress"]
[dependencies.gix-hash]
-version = "^0.13.0"
+version = "^0.13.1"
[dependencies.gix-transport]
-version = "^0.37.0"
+version = "^0.38.0"
[dependencies.maybe-async]
version = "0.2.6"
@@ -113,7 +113,7 @@ version = "1.9.0"
features = ["attributes"]
[dev-dependencies.gix-packetline]
-version = "^0.16.6"
+version = "^0.16.7"
[features]
async-client = [
diff --git a/vendor/gix-ref/.cargo-checksum.json b/vendor/gix-ref/.cargo-checksum.json
index 4fd8b3ec5..f48806001 100644
--- a/vendor/gix-ref/.cargo-checksum.json
+++ b/vendor/gix-ref/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"53d04619ade7bfdd6662ec553096a5bfe8dc328a4a52d1b33c74227145507dfa","Cargo.toml":"f912223744e62b28347d40cbb2fa4ab62d0697058a295a561491b5087821bb8b","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/fullname.rs":"43499835464fc1a6d761ab82e3589df81b5d1e6653d1a60dfd80c083f9000e6f","src/lib.rs":"ad09e55cccdab1308f488ae2fdde80cb65f05b4136dd083998f67fdd472a6a63","src/log.rs":"93deed22815142228ec068da01bb43156b15319e549b8f5122c8183d97e2d1a6","src/name.rs":"d2b6d4921c3f7bd4672f4e8d9844528c4a3f5652b222727b2f807fc59eec9858","src/namespace.rs":"50899ab15a1c8efc11f12018b7f23125e06507087460c75f511ce8ee59dad1fd","src/parse.rs":"d86fa3274ba2de9ce58590a3cfbcecd7b2ae24bc45820bbdafbf07fcc7c31529","src/peel.rs":"3c00bcd07ef5be99cdccca0d24d40a23e30ae1180020b845c78ab69947540896","src/raw.rs":"d2ebd06b2b34553732a771a3e61102b0e786bdfb7960d095d001372c4c9a1f6e","src/store/file/find.rs":"27f16f08c8c70c9e558a85e91b4bc33316c0656924f68e0b52f55d4e9760ab4b","src/store/file/log/iter.rs":"cfba6583d0fbf21e16d515e14d6e71a624291bc6910dde60642c309b24a9c275","src/store/file/log/line.rs":"5cc39e727766b8574b80a7fa1dfec5da96f28b0a417f2383e5062fe0fdb84ee1","src/store/file/log/mod.rs":"2f3ce7b943f3fdd4dfdfd7b18f051a38d7e5e64067d144315faa4b47c22dc10b","src/store/file/loose/iter.rs":"fc29f9bb56fd8971a988e0fd02f4f9db8850f550abb2af1cbf8f6b145d678593","src/store/file/loose/mod.rs":"3dd7602d0ccf22bdc1069e76c1669c6a2ca12714259d392bfccb870728b43195","src/store/file/loose/reference/decode.rs":"ff43e2d9fe7954ff330760beeb119fdca97a14f572ba8f1182e3fe8b1d736378","src/store/file/loose/reference/logiter.rs":"dc25b669f26f9c6c8aaf2186e48714bec065e80e9d06112b31e462bbd5c0f2f2","src/store/file/loose/reference/mod.rs":"bfbf39a4c7b9ff8dac40a6fcc334992fbe778de86d86787cf8c7ac5467d65304","src/store/file/loose/reflog.rs":"d485af3a5c8a49c194e4ba2b60138a5cd2776452e965cef0b0321d827c7f9904","src/store/file/loose/reflog/create_or_update/tests.rs":"7e8c8c997d1ab8e1a6f724b609af0a412e97ccdfffab15d6513f6b9cb914b7ef","src/store/file/mod.rs":"dab1cabd111bcd68c0ec62ba0b9034f9665a79673cae23bcff269fa4b162ceb9","src/store/file/overlay_iter.rs":"ff50d4f2906a3314c3dbc59713888bad5cf024b695668b739714f744cec13003","src/store/file/packed.rs":"1a4c2dfe39fdfe94ff6b045a1021ff3fd8f15332558eb23b7ce330e1abb258c7","src/store/file/raw_ext.rs":"792033a588b87eeb63b13acb16b0e88a7761947ca39300fdcb07cb62f263b949","src/store/file/transaction/commit.rs":"216a279e0d5d66618ed310914f950c73ce2a15d658760979aab7ef024f4c5710","src/store/file/transaction/mod.rs":"ec8effa27e13dd41751ad7c2296242393db0d5826e929b48863504145e19866d","src/store/file/transaction/prepare.rs":"ee231b1c0a390042e9a94637d364bb3efa47889da83b5276ca3c1151497cf707","src/store/general/handle/find.rs":"ce98351447a6f6c3cf27995430198eb4af14ba3f80b3605de230ab549db8773e","src/store/general/handle/mod.rs":"5f6c9bc2a2a20bc08807bdf2324e2f22461dbed609cebe5dfa25d6c096514f40","src/store/general/init.rs":"36fcd249b985822b58565a29a2c7aab1e488adec68b03a8b8b0d4a32e4df3640","src/store/general/mod.rs":"0ed6247438790f38b75ab62bffa70ddb73c873fd2d05552c19af1fdaf604773b","src/store/mod.rs":"d160b6f8a2388fe6978cd94675af910d85f2030168bba4a173a30384948ac3ec","src/store/packed/buffer.rs":"26bea9c1d01eabd266bf987b0cef218cd6444522ef7bb8a71d7fcb54e7b4b3de","src/store/packed/decode.rs":"accec22f92aecf96ecfcb627f9399d848740595dd29bf45f8665e77ef62485a5","src/store/packed/decode/tests.rs":"47161918e5e937b45c3299b1c6aba781fc2b13f57480ecba318ea283d57eb2e1","src/store/packed/find.rs":"fdcd2d62d8add368062a6d795b81c7eb0db6306c85d80a3d8484b6ccc25f1fe2","src/store/packed/iter.rs":"1f004cac1e02ee7c74c7855706a858aa0a6e56b2841080135904a5959ad5ef90","src/store/packed/mod.rs":"711cf43cf67dff52dab1ccc7624962f805b4f4c1337ce5bfca3d315261bdf607","src/store/packed/transaction.rs":"945a3ae126f7c4334ae613f42a9438c85479d5be65140463e38c2a2a7cbce527","src/target.rs":"dce5cedb767a4ec03d3882881c5aa4af4fbf2d68240233386650badee73086fe","src/transaction/ext.rs":"9c2ad85facee08aa74befe6e271c170d1bcc235651ac298d9b55bf5d4310ba0b","src/transaction/mod.rs":"0cdd10cc2a510d4bdc305ff8c451cb7aaed34a1986cb04671aaf04dc0c98929a"},"package":"22e6b749660b613641769edc1954132eb8071a13c32224891686091bef078de4"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"35447ccd47e89cdd33c5339354030796b2bdbc8041040685f32dd5dc092330a7","Cargo.toml":"40f065535d1eb81e945a784221e6486615827c8edad9b90e03c868d3acf41b8f","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/fullname.rs":"43499835464fc1a6d761ab82e3589df81b5d1e6653d1a60dfd80c083f9000e6f","src/lib.rs":"7cbdd1bed852a4d42005aabe8007a9449abbd30e3b5f97f3ec990a6b7d10d840","src/log.rs":"93deed22815142228ec068da01bb43156b15319e549b8f5122c8183d97e2d1a6","src/name.rs":"ffbff14b30f7cd3abaeb1904ff2b6b85daebf4079fcbe141e3c04c0e25f2f2f8","src/namespace.rs":"50899ab15a1c8efc11f12018b7f23125e06507087460c75f511ce8ee59dad1fd","src/parse.rs":"d86fa3274ba2de9ce58590a3cfbcecd7b2ae24bc45820bbdafbf07fcc7c31529","src/peel.rs":"3c00bcd07ef5be99cdccca0d24d40a23e30ae1180020b845c78ab69947540896","src/raw.rs":"d2ebd06b2b34553732a771a3e61102b0e786bdfb7960d095d001372c4c9a1f6e","src/store/file/find.rs":"27f16f08c8c70c9e558a85e91b4bc33316c0656924f68e0b52f55d4e9760ab4b","src/store/file/log/iter.rs":"cfba6583d0fbf21e16d515e14d6e71a624291bc6910dde60642c309b24a9c275","src/store/file/log/line.rs":"5cc39e727766b8574b80a7fa1dfec5da96f28b0a417f2383e5062fe0fdb84ee1","src/store/file/log/mod.rs":"2f3ce7b943f3fdd4dfdfd7b18f051a38d7e5e64067d144315faa4b47c22dc10b","src/store/file/loose/iter.rs":"fc29f9bb56fd8971a988e0fd02f4f9db8850f550abb2af1cbf8f6b145d678593","src/store/file/loose/mod.rs":"3dd7602d0ccf22bdc1069e76c1669c6a2ca12714259d392bfccb870728b43195","src/store/file/loose/reference/decode.rs":"ff43e2d9fe7954ff330760beeb119fdca97a14f572ba8f1182e3fe8b1d736378","src/store/file/loose/reference/logiter.rs":"dc25b669f26f9c6c8aaf2186e48714bec065e80e9d06112b31e462bbd5c0f2f2","src/store/file/loose/reference/mod.rs":"bfbf39a4c7b9ff8dac40a6fcc334992fbe778de86d86787cf8c7ac5467d65304","src/store/file/loose/reflog.rs":"d485af3a5c8a49c194e4ba2b60138a5cd2776452e965cef0b0321d827c7f9904","src/store/file/loose/reflog/create_or_update/tests.rs":"7e8c8c997d1ab8e1a6f724b609af0a412e97ccdfffab15d6513f6b9cb914b7ef","src/store/file/mod.rs":"dab1cabd111bcd68c0ec62ba0b9034f9665a79673cae23bcff269fa4b162ceb9","src/store/file/overlay_iter.rs":"ff50d4f2906a3314c3dbc59713888bad5cf024b695668b739714f744cec13003","src/store/file/packed.rs":"1a4c2dfe39fdfe94ff6b045a1021ff3fd8f15332558eb23b7ce330e1abb258c7","src/store/file/raw_ext.rs":"792033a588b87eeb63b13acb16b0e88a7761947ca39300fdcb07cb62f263b949","src/store/file/transaction/commit.rs":"216a279e0d5d66618ed310914f950c73ce2a15d658760979aab7ef024f4c5710","src/store/file/transaction/mod.rs":"ec8effa27e13dd41751ad7c2296242393db0d5826e929b48863504145e19866d","src/store/file/transaction/prepare.rs":"ee231b1c0a390042e9a94637d364bb3efa47889da83b5276ca3c1151497cf707","src/store/general/handle/find.rs":"ce98351447a6f6c3cf27995430198eb4af14ba3f80b3605de230ab549db8773e","src/store/general/handle/mod.rs":"5f6c9bc2a2a20bc08807bdf2324e2f22461dbed609cebe5dfa25d6c096514f40","src/store/general/init.rs":"36fcd249b985822b58565a29a2c7aab1e488adec68b03a8b8b0d4a32e4df3640","src/store/general/mod.rs":"0ed6247438790f38b75ab62bffa70ddb73c873fd2d05552c19af1fdaf604773b","src/store/mod.rs":"d160b6f8a2388fe6978cd94675af910d85f2030168bba4a173a30384948ac3ec","src/store/packed/buffer.rs":"26bea9c1d01eabd266bf987b0cef218cd6444522ef7bb8a71d7fcb54e7b4b3de","src/store/packed/decode.rs":"accec22f92aecf96ecfcb627f9399d848740595dd29bf45f8665e77ef62485a5","src/store/packed/decode/tests.rs":"47161918e5e937b45c3299b1c6aba781fc2b13f57480ecba318ea283d57eb2e1","src/store/packed/find.rs":"fdcd2d62d8add368062a6d795b81c7eb0db6306c85d80a3d8484b6ccc25f1fe2","src/store/packed/iter.rs":"1f004cac1e02ee7c74c7855706a858aa0a6e56b2841080135904a5959ad5ef90","src/store/packed/mod.rs":"711cf43cf67dff52dab1ccc7624962f805b4f4c1337ce5bfca3d315261bdf607","src/store/packed/transaction.rs":"f1c3d4cd3a08306834ae2ecefcbc369999e3b664a14ada2f4e302f6adaaae0f1","src/target.rs":"dce5cedb767a4ec03d3882881c5aa4af4fbf2d68240233386650badee73086fe","src/transaction/ext.rs":"9c2ad85facee08aa74befe6e271c170d1bcc235651ac298d9b55bf5d4310ba0b","src/transaction/mod.rs":"0cdd10cc2a510d4bdc305ff8c451cb7aaed34a1986cb04671aaf04dc0c98929a"},"package":"0ec2f6d07ac88d2fb8007ee3fa3e801856fb9d82e7366ec0ca332eb2c9d74a52"} \ No newline at end of file
diff --git a/vendor/gix-ref/CHANGELOG.md b/vendor/gix-ref/CHANGELOG.md
index f8d3d719e..dbfc2dc6e 100644
--- a/vendor/gix-ref/CHANGELOG.md
+++ b/vendor/gix-ref/CHANGELOG.md
@@ -5,6 +5,37 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.38.0 (2023-10-12)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 3 commits contributed to the release over the course of 6 calendar days.
+ - 17 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Thanks Clippy
+
+<csr-read-only-do-not-edit/>
+
+[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic.
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+ - Fix docs ([`995bc84`](https://github.com/Byron/gitoxide/commit/995bc840664cbd4aeb7f95592e3125dee63bdcd4))
+ - Thanks clippy ([`345712d`](https://github.com/Byron/gitoxide/commit/345712dcdfddcccc630bbfef2ed4f461b21550d3))
+</details>
+
## 0.37.0 (2023-09-24)
A maintenance release without user-facing changes.
@@ -13,7 +44,7 @@ A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
- - 1 commit contributed to the release.
+ - 2 commits contributed to the release.
- 16 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,6 +56,7 @@ A maintenance release without user-facing changes.
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
</details>
diff --git a/vendor/gix-ref/Cargo.toml b/vendor/gix-ref/Cargo.toml
index 90391d722..68ba9db6e 100644
--- a/vendor/gix-ref/Cargo.toml
+++ b/vendor/gix-ref/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-ref"
-version = "0.37.0"
+version = "0.38.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
include = [
"src/**/*",
@@ -44,32 +44,32 @@ version = "0.2.1"
optional = true
[dependencies.gix-actor]
-version = "^0.27.0"
+version = "^0.28.0"
[dependencies.gix-date]
version = "^0.8.0"
[dependencies.gix-features]
-version = "^0.35.0"
+version = "^0.36.0"
features = ["walkdir"]
[dependencies.gix-fs]
-version = "^0.7.0"
+version = "^0.8.0"
[dependencies.gix-hash]
-version = "^0.13.0"
+version = "^0.13.1"
[dependencies.gix-lock]
-version = "^10.0.0"
+version = "^11.0.0"
[dependencies.gix-object]
-version = "^0.37.0"
+version = "^0.38.0"
[dependencies.gix-path]
version = "^0.10.0"
[dependencies.gix-tempfile]
-version = "^10.0.0"
+version = "^11.0.0"
default-features = false
[dependencies.gix-validate]
diff --git a/vendor/gix-ref/src/lib.rs b/vendor/gix-ref/src/lib.rs
index 2c714d47a..aea2da812 100644
--- a/vendor/gix-ref/src/lib.rs
+++ b/vendor/gix-ref/src/lib.rs
@@ -5,7 +5,7 @@
//! Refs are the way to keep track of objects and come in two flavors.
//!
//! * symbolic refs are pointing to another reference
-//! * peeled refs point to the an object by its [`ObjectId`][gix_hash::ObjectId]
+//! * peeled refs point to the an object by its [`ObjectId`]
//!
//! They can be identified by a relative path and stored in various flavors.
//!
diff --git a/vendor/gix-ref/src/name.rs b/vendor/gix-ref/src/name.rs
index 81b90a020..353328537 100644
--- a/vendor/gix-ref/src/name.rs
+++ b/vendor/gix-ref/src/name.rs
@@ -4,7 +4,7 @@ use gix_object::bstr::{BStr, BString, ByteSlice, ByteVec};
use crate::{Category, FullName, FullNameRef, PartialName, PartialNameRef};
-/// The error used in the [`PartialNameRef`][super::PartialNameRef]`::try_from`(…) implementations.
+/// The error used in the [`PartialNameRef`]`::try_from`(…) implementations.
pub type Error = gix_validate::reference::name::Error;
impl<'a> Category<'a> {
diff --git a/vendor/gix-ref/src/store/packed/transaction.rs b/vendor/gix-ref/src/store/packed/transaction.rs
index 4c503d711..e2955f8e0 100644
--- a/vendor/gix-ref/src/store/packed/transaction.rs
+++ b/vendor/gix-ref/src/store/packed/transaction.rs
@@ -78,7 +78,7 @@ impl packed::Transaction {
edit.peeled = loop {
let kind = find(next_id, &mut buf)?;
match kind {
- Some(kind) if kind == gix_object::Kind::Tag => {
+ Some(gix_object::Kind::Tag) => {
next_id = gix_object::TagRefIter::from_bytes(&buf).target_id().map_err(|_| {
prepare::Error::Resolve(
format!("Couldn't get target object id from tag {next_id}").into(),
diff --git a/vendor/gix-refspec/.cargo-checksum.json b/vendor/gix-refspec/.cargo-checksum.json
index 7edc2f50e..bbf8a4c50 100644
--- a/vendor/gix-refspec/.cargo-checksum.json
+++ b/vendor/gix-refspec/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"1a35b76732ab858e9f565ba0d5d668192d2015ff9f09da89f6f690d495800f82","Cargo.toml":"01b1b6438f801f2ba91d1895a5aa86e6f644793b33a47d09a350b4f4b9cfb94f","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","README.md":"1b08787d12bb32a8b5a3a48c3198435d9691d15c3b623727a6ff6188b4106d65","src/instruction.rs":"95a283f5df4239b7f875ce23a31bf9265369a7e5450a084eb2853dad17ca35e6","src/lib.rs":"493fe85e248c19665667a44d445314c4536fe197eafac92c65e12d2a9ded44f6","src/match_group/mod.rs":"38d9b71f36bb21e5ebadd551e06d8f11ecc97ec99434dbf17e90a621794bdeb2","src/match_group/types.rs":"a3e0bb1d555955e9415c26b011cc0e84f8b07166479ae09861dc988d453476e5","src/match_group/util.rs":"4a0d71099fd4de97ad1d2668758c1d0b8587b57756322323144f775e1030f9c9","src/match_group/validate.rs":"5b5afe026356f8a4abff2c766b475f105752b6c2c8ce4360c1b4ae8c282cc3e4","src/parse.rs":"1ad3f6bf4eb9e0bf81af11739e5370127b689eddc694f7eb9cfcf94e1fb69475","src/spec.rs":"075891c45b6afdf51be72eb960d26854bfcf3df4b922ab64f2236b130f25fdf0","src/types.rs":"af5efab6fc8179262d0a368f72624efe68f48dec7afb74f2e7ef932f140d42ff","src/write.rs":"582e8fa57568c7209af7e0acdc7b871b53e757d577db7999f8beb6cf7ca46d5e"},"package":"0895cb7b1e70f3c3bd4550c329e9f5caf2975f97fcd4238e05754e72208ef61e"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"7503271426af45fbfc5e493610c99c212d706197494c65edf92cb7c2cec320e1","Cargo.toml":"23a5042be729ff2504b4922400e760f2e56f6beb2af6d026fa84b44d226bdce7","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","README.md":"1b08787d12bb32a8b5a3a48c3198435d9691d15c3b623727a6ff6188b4106d65","src/instruction.rs":"95a283f5df4239b7f875ce23a31bf9265369a7e5450a084eb2853dad17ca35e6","src/lib.rs":"493fe85e248c19665667a44d445314c4536fe197eafac92c65e12d2a9ded44f6","src/match_group/mod.rs":"38d9b71f36bb21e5ebadd551e06d8f11ecc97ec99434dbf17e90a621794bdeb2","src/match_group/types.rs":"a3e0bb1d555955e9415c26b011cc0e84f8b07166479ae09861dc988d453476e5","src/match_group/util.rs":"4a0d71099fd4de97ad1d2668758c1d0b8587b57756322323144f775e1030f9c9","src/match_group/validate.rs":"5b5afe026356f8a4abff2c766b475f105752b6c2c8ce4360c1b4ae8c282cc3e4","src/parse.rs":"1ad3f6bf4eb9e0bf81af11739e5370127b689eddc694f7eb9cfcf94e1fb69475","src/spec.rs":"c898d1ef43a027f3a8c54b7acd4a25d103b579ae6d83acd98b7e86641c6b489c","src/types.rs":"af5efab6fc8179262d0a368f72624efe68f48dec7afb74f2e7ef932f140d42ff","src/write.rs":"582e8fa57568c7209af7e0acdc7b871b53e757d577db7999f8beb6cf7ca46d5e"},"package":"ccb0974cc41dbdb43a180c7f67aa481e1c1e160fcfa8f4a55291fd1126c1a6e7"} \ No newline at end of file
diff --git a/vendor/gix-refspec/CHANGELOG.md b/vendor/gix-refspec/CHANGELOG.md
index 9899cac7f..a998db21b 100644
--- a/vendor/gix-refspec/CHANGELOG.md
+++ b/vendor/gix-refspec/CHANGELOG.md
@@ -5,6 +5,37 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.19.0 (2023-10-12)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 3 commits contributed to the release over the course of 6 calendar days.
+ - 17 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Thanks Clippy
+
+<csr-read-only-do-not-edit/>
+
+[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic.
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Release gix-hash v0.13.1, gix-features v0.36.0, gix-actor v0.28.0, gix-object v0.38.0, gix-glob v0.14.0, gix-attributes v0.20.0, gix-command v0.2.10, gix-filter v0.6.0, gix-fs v0.8.0, gix-commitgraph v0.22.0, gix-revwalk v0.9.0, gix-traverse v0.34.0, gix-worktree-stream v0.6.0, gix-archive v0.6.0, gix-tempfile v11.0.0, gix-lock v11.0.0, gix-ref v0.38.0, gix-config v0.31.0, gix-url v0.25.0, gix-credentials v0.21.0, gix-diff v0.37.0, gix-discover v0.26.0, gix-ignore v0.9.0, gix-index v0.26.0, gix-mailmap v0.20.0, gix-negotiate v0.9.0, gix-pack v0.44.0, gix-odb v0.54.0, gix-pathspec v0.4.0, gix-packetline v0.16.7, gix-transport v0.37.0, gix-protocol v0.41.0, gix-revision v0.23.0, gix-refspec v0.19.0, gix-worktree v0.27.0, gix-status v0.2.0, gix-submodule v0.5.0, gix-worktree-state v0.4.0, gix v0.55.0, safety bump 37 crates ([`68e5432`](https://github.com/Byron/gitoxide/commit/68e54326e527a55dd5b5079921fc251615833040))
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+ - Thanks clippy ([`345712d`](https://github.com/Byron/gitoxide/commit/345712dcdfddcccc630bbfef2ed4f461b21550d3))
+</details>
+
## 0.18.0 (2023-09-24)
A maintenance release without user-facing changes.
@@ -13,7 +44,7 @@ A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
- - 1 commit contributed to the release.
+ - 2 commits contributed to the release.
- 15 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,6 +56,7 @@ A maintenance release without user-facing changes.
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
</details>
diff --git a/vendor/gix-refspec/Cargo.toml b/vendor/gix-refspec/Cargo.toml
index 3f92a9ca8..9c8e4657d 100644
--- a/vendor/gix-refspec/Cargo.toml
+++ b/vendor/gix-refspec/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-refspec"
-version = "0.18.0"
+version = "0.19.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
include = [
"src/**/*",
@@ -35,10 +35,10 @@ features = ["std"]
default-features = false
[dependencies.gix-hash]
-version = "^0.13.0"
+version = "^0.13.1"
[dependencies.gix-revision]
-version = "^0.22.0"
+version = "^0.23.0"
default-features = false
[dependencies.gix-validate]
diff --git a/vendor/gix-refspec/src/spec.rs b/vendor/gix-refspec/src/spec.rs
index e6e39ddd7..28f63392d 100644
--- a/vendor/gix-refspec/src/spec.rs
+++ b/vendor/gix-refspec/src/spec.rs
@@ -65,13 +65,13 @@ mod impls {
impl PartialOrd for RefSpecRef<'_> {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
- self.instruction().partial_cmp(&other.instruction())
+ Some(self.cmp(other))
}
}
impl PartialOrd for RefSpec {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
- self.to_ref().partial_cmp(&other.to_ref())
+ Some(self.to_ref().cmp(&other.to_ref()))
}
}
diff --git a/vendor/gix-revision/.cargo-checksum.json b/vendor/gix-revision/.cargo-checksum.json
index 8aa0046ff..2d28cfbc5 100644
--- a/vendor/gix-revision/.cargo-checksum.json
+++ b/vendor/gix-revision/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"8a93dabd626f8f83ccf37696b66179b0de068772a8c0187a254f89575e2678b8","Cargo.toml":"b5bfc16fd6b71064a8e8ea7a8e0978bfccb2eddebbeabf404cee357138360d88","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","README.md":"809c88a6c70ec74eabc883e40f5be368890c1929f7575e49e38256cde671f813","src/describe.rs":"d1e27dcbfcc98ac9d44b5f1eebb1b719c9db43557d71be6a3149e5571856dd0e","src/lib.rs":"358e81820364814468147c715ddedd4d31519ae18fbca16f23c31c05b50f3506","src/spec/mod.rs":"f95f2d547c913aace4a0e895b9cfda7d38400f171886a85f6ee2f73313d27950","src/spec/parse/delegate.rs":"b00c2d9ab8fdea72200f7f781662bf07f31164cb8b5a9831824c8a8d9d0c2277","src/spec/parse/function.rs":"c0a15e2e0aa489a5cd9fb9ec8d9ecc14920485718a4009d1c897f456922c51de","src/spec/parse/mod.rs":"a5a565d483088cd3a4a48cad09fa78f9eae2f18fd844ffb0b9fb0afd4bfd7617"},"package":"c8c4b15cf2ab7a35f5bcb3ef146187c8d36df0177e171ca061913cbaaa890e89"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"5e5b357e2f676c845eddce8f1a924b1a41607d0b110ee0e12c5065925ab1edae","Cargo.toml":"3834bddc62e8d0bdc11775b42897a0ee9d7c71f542ae6595dccb091576d0cdb6","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","README.md":"809c88a6c70ec74eabc883e40f5be368890c1929f7575e49e38256cde671f813","src/describe.rs":"d1e27dcbfcc98ac9d44b5f1eebb1b719c9db43557d71be6a3149e5571856dd0e","src/lib.rs":"358e81820364814468147c715ddedd4d31519ae18fbca16f23c31c05b50f3506","src/spec/mod.rs":"f95f2d547c913aace4a0e895b9cfda7d38400f171886a85f6ee2f73313d27950","src/spec/parse/delegate.rs":"b00c2d9ab8fdea72200f7f781662bf07f31164cb8b5a9831824c8a8d9d0c2277","src/spec/parse/function.rs":"c0a15e2e0aa489a5cd9fb9ec8d9ecc14920485718a4009d1c897f456922c51de","src/spec/parse/mod.rs":"a5a565d483088cd3a4a48cad09fa78f9eae2f18fd844ffb0b9fb0afd4bfd7617"},"package":"2ca97ac73459a7f3766aa4a5638a6e37d56d4c7962bc1986fbaf4883d0772588"} \ No newline at end of file
diff --git a/vendor/gix-revision/CHANGELOG.md b/vendor/gix-revision/CHANGELOG.md
index d07031db6..396de568c 100644
--- a/vendor/gix-revision/CHANGELOG.md
+++ b/vendor/gix-revision/CHANGELOG.md
@@ -5,6 +5,30 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.23.0 (2023-10-12)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 2 commits contributed to the release.
+ - 17 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Release gix-hash v0.13.1, gix-features v0.36.0, gix-actor v0.28.0, gix-object v0.38.0, gix-glob v0.14.0, gix-attributes v0.20.0, gix-command v0.2.10, gix-filter v0.6.0, gix-fs v0.8.0, gix-commitgraph v0.22.0, gix-revwalk v0.9.0, gix-traverse v0.34.0, gix-worktree-stream v0.6.0, gix-archive v0.6.0, gix-tempfile v11.0.0, gix-lock v11.0.0, gix-ref v0.38.0, gix-config v0.31.0, gix-url v0.25.0, gix-credentials v0.21.0, gix-diff v0.37.0, gix-discover v0.26.0, gix-ignore v0.9.0, gix-index v0.26.0, gix-mailmap v0.20.0, gix-negotiate v0.9.0, gix-pack v0.44.0, gix-odb v0.54.0, gix-pathspec v0.4.0, gix-packetline v0.16.7, gix-transport v0.37.0, gix-protocol v0.41.0, gix-revision v0.23.0, gix-refspec v0.19.0, gix-worktree v0.27.0, gix-status v0.2.0, gix-submodule v0.5.0, gix-worktree-state v0.4.0, gix v0.55.0, safety bump 37 crates ([`68e5432`](https://github.com/Byron/gitoxide/commit/68e54326e527a55dd5b5079921fc251615833040))
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+</details>
+
## 0.22.0 (2023-09-24)
A maintenance release without user-facing changes.
@@ -13,7 +37,7 @@ A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
- - 1 commit contributed to the release.
+ - 2 commits contributed to the release.
- 15 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,6 +49,7 @@ A maintenance release without user-facing changes.
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
</details>
diff --git a/vendor/gix-revision/Cargo.toml b/vendor/gix-revision/Cargo.toml
index e489bb8c3..e8f920c04 100644
--- a/vendor/gix-revision/Cargo.toml
+++ b/vendor/gix-revision/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-revision"
-version = "0.22.0"
+version = "0.23.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
include = [
"src/**/*",
@@ -50,16 +50,16 @@ optional = true
version = "^0.8.0"
[dependencies.gix-hash]
-version = "^0.13.0"
+version = "^0.13.1"
[dependencies.gix-hashtable]
version = "^0.4.0"
[dependencies.gix-object]
-version = "^0.37.0"
+version = "^0.38.0"
[dependencies.gix-revwalk]
-version = "^0.8.0"
+version = "^0.9.0"
[dependencies.gix-trace]
version = "^0.1.3"
diff --git a/vendor/gix-revwalk/.cargo-checksum.json b/vendor/gix-revwalk/.cargo-checksum.json
index c1733154f..a953f0320 100644
--- a/vendor/gix-revwalk/.cargo-checksum.json
+++ b/vendor/gix-revwalk/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"a83a435b02523ec39e8b3e8726445dfb53664d5a6518fd3bc85caf84a249c408","Cargo.toml":"b0ed7bf94a3077ecf3e1d40b27b8a1ad96622ea253deaadd86f5d4d7946ea193","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/graph/commit.rs":"c80c4947dad34f09ce6b4c93f047e5ffb20c4ccd921d835a0f28000959082510","src/graph/errors.rs":"5b76551bae0cea85ca3d21fd1a1c86453d96cd49692159b822f403e92eb1a2b4","src/graph/mod.rs":"ba3278e12630a6a060470f00b4b4a9355acd952993488a2a65c977c95f71fa8a","src/lib.rs":"af9a314a8a1bdbc7eda8732803dfb6aaa4364a378911d8374c559ac037673a6f","src/queue.rs":"463474cc20d698211f4b9efa593d015b7aa904c3e5660dda97bb0e3d72bd1c70"},"package":"e9870c6b1032f2084567710c3b2106ac603377f8d25766b8a6b7c33e6e3ca279"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"b20a781de9b4377eef60eed6e90d87313bcd54e8012c864245d2ee1ba713834d","Cargo.toml":"65f2337eaaafc89c686b8ee086143d1bc34f8c27dc4799614072f9d29d621b95","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/graph/commit.rs":"c80c4947dad34f09ce6b4c93f047e5ffb20c4ccd921d835a0f28000959082510","src/graph/errors.rs":"5b76551bae0cea85ca3d21fd1a1c86453d96cd49692159b822f403e92eb1a2b4","src/graph/mod.rs":"ba3278e12630a6a060470f00b4b4a9355acd952993488a2a65c977c95f71fa8a","src/lib.rs":"af9a314a8a1bdbc7eda8732803dfb6aaa4364a378911d8374c559ac037673a6f","src/queue.rs":"7a4d60523673a6e5ab678168af464acd181be94c15a5114855fdd3c2074f3547"},"package":"a16d8c892e4cd676d86f0265bf9d40cefd73d8d94f86b213b8b77d50e77efae0"} \ No newline at end of file
diff --git a/vendor/gix-revwalk/CHANGELOG.md b/vendor/gix-revwalk/CHANGELOG.md
index 496b1036e..37b8e3705 100644
--- a/vendor/gix-revwalk/CHANGELOG.md
+++ b/vendor/gix-revwalk/CHANGELOG.md
@@ -5,6 +5,36 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.9.0 (2023-10-12)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 2 commits contributed to the release over the course of 6 calendar days.
+ - 17 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Thanks Clippy
+
+<csr-read-only-do-not-edit/>
+
+[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic.
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+ - Thanks clippy ([`345712d`](https://github.com/Byron/gitoxide/commit/345712dcdfddcccc630bbfef2ed4f461b21550d3))
+</details>
+
## 0.8.0 (2023-09-24)
A maintenance release without user-facing changes.
@@ -13,7 +43,7 @@ A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
- - 1 commit contributed to the release.
+ - 2 commits contributed to the release.
- 16 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,6 +55,7 @@ A maintenance release without user-facing changes.
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
</details>
diff --git a/vendor/gix-revwalk/Cargo.toml b/vendor/gix-revwalk/Cargo.toml
index 82c90bfea..b1a61c25a 100644
--- a/vendor/gix-revwalk/Cargo.toml
+++ b/vendor/gix-revwalk/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-revwalk"
-version = "0.8.0"
+version = "0.9.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
include = [
"src/**/*",
@@ -28,19 +28,19 @@ repository = "https://github.com/Byron/gitoxide"
doctest = false
[dependencies.gix-commitgraph]
-version = "^0.21.0"
+version = "^0.22.0"
[dependencies.gix-date]
version = "^0.8.0"
[dependencies.gix-hash]
-version = "^0.13.0"
+version = "^0.13.1"
[dependencies.gix-hashtable]
version = "^0.4.0"
[dependencies.gix-object]
-version = "^0.37.0"
+version = "^0.38.0"
[dependencies.smallvec]
version = "1.10.0"
diff --git a/vendor/gix-revwalk/src/queue.rs b/vendor/gix-revwalk/src/queue.rs
index 4a1fba9fd..1cae356be 100644
--- a/vendor/gix-revwalk/src/queue.rs
+++ b/vendor/gix-revwalk/src/queue.rs
@@ -29,7 +29,7 @@ impl<K: Ord, T> Eq for Item<K, T> {}
impl<K: Ord, T> PartialOrd<Self> for Item<K, T> {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
- Ord::cmp(self, other).into()
+ Some(Ord::cmp(self, other))
}
}
diff --git a/vendor/gix-submodule/.cargo-checksum.json b/vendor/gix-submodule/.cargo-checksum.json
index 6b7ad8938..72c1e3993 100644
--- a/vendor/gix-submodule/.cargo-checksum.json
+++ b/vendor/gix-submodule/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"0aea97d3e31f29941e3a88f4860b893321f455ee0e1244ce08bce0e5446c41a0","Cargo.toml":"7dab80e931c6f5c9fae910a71694c95b229756153f0aff62cfd548d438a3b6e8","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/access.rs":"162ad231287795c40681f47eb516b91c706215687ea7ed7d7a98b762feb46d8c","src/config.rs":"2062c34f82e42517ac0d8d2d564643883249f6f44b5e8cc49f00f085ce66b31d","src/is_active_platform.rs":"fa89ba25ae7cde8f0b04bb032a27ad22919aeea7d285c003355cd9ea0d980157","src/lib.rs":"a896e4f0188322673835674b49be1b013f4aefa997fe25f34ad8d4fcc9c8d850","tests/file/baseline.rs":"8d80db5bdfcb0625153617c39fdada700921487a083391822dec4363c33fadb4","tests/file/mod.rs":"aa7b943bf8518e79df663e0de32b0266ac00bae2aa9f9c7653cf6745031a14a1","tests/fixtures/basic.sh":"22a14fd8fac3377b9a7653f60348ba0906777b2ecc23405c4b604c4834e7eec4","tests/fixtures/generated-archives/basic.tar.xz":"f1213af1023577c8c59e1a065530785e28ee10e4e04f731597aebc6a63e3dc86","tests/submodule.rs":"e42d1f34b35a3230f29ae4f04524c113b5059aa5753bbee1818e245888457ddd"},"package":"dd0150e82e9282d3f2ab2dd57a22f9f6c3447b9d9856e5321ac92d38e3e0e2b7"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"d0e4158ec6a71783e7e2b37449b2fcc873610eb58715a44bd473eeb901da8e22","Cargo.toml":"b7d40e0d304ddf3e001ebf490a5a9a217de9daf08d99be2306f65faa02e12830","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/access.rs":"162ad231287795c40681f47eb516b91c706215687ea7ed7d7a98b762feb46d8c","src/config.rs":"2062c34f82e42517ac0d8d2d564643883249f6f44b5e8cc49f00f085ce66b31d","src/is_active_platform.rs":"fa89ba25ae7cde8f0b04bb032a27ad22919aeea7d285c003355cd9ea0d980157","src/lib.rs":"a896e4f0188322673835674b49be1b013f4aefa997fe25f34ad8d4fcc9c8d850","tests/file/baseline.rs":"8d80db5bdfcb0625153617c39fdada700921487a083391822dec4363c33fadb4","tests/file/mod.rs":"aa7b943bf8518e79df663e0de32b0266ac00bae2aa9f9c7653cf6745031a14a1","tests/fixtures/basic.sh":"22a14fd8fac3377b9a7653f60348ba0906777b2ecc23405c4b604c4834e7eec4","tests/fixtures/generated-archives/basic.tar.xz":"f1213af1023577c8c59e1a065530785e28ee10e4e04f731597aebc6a63e3dc86","tests/submodule.rs":"e42d1f34b35a3230f29ae4f04524c113b5059aa5753bbee1818e245888457ddd"},"package":"bba78c8d12aa24370178453ec3a472ff08dfaa657d116229f57f2c9cd469a1c2"} \ No newline at end of file
diff --git a/vendor/gix-submodule/CHANGELOG.md b/vendor/gix-submodule/CHANGELOG.md
index f5a4ed63e..3bfdabc18 100644
--- a/vendor/gix-submodule/CHANGELOG.md
+++ b/vendor/gix-submodule/CHANGELOG.md
@@ -5,6 +5,30 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.5.0 (2023-10-12)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 2 commits contributed to the release.
+ - 17 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Release gix-hash v0.13.1, gix-features v0.36.0, gix-actor v0.28.0, gix-object v0.38.0, gix-glob v0.14.0, gix-attributes v0.20.0, gix-command v0.2.10, gix-filter v0.6.0, gix-fs v0.8.0, gix-commitgraph v0.22.0, gix-revwalk v0.9.0, gix-traverse v0.34.0, gix-worktree-stream v0.6.0, gix-archive v0.6.0, gix-tempfile v11.0.0, gix-lock v11.0.0, gix-ref v0.38.0, gix-config v0.31.0, gix-url v0.25.0, gix-credentials v0.21.0, gix-diff v0.37.0, gix-discover v0.26.0, gix-ignore v0.9.0, gix-index v0.26.0, gix-mailmap v0.20.0, gix-negotiate v0.9.0, gix-pack v0.44.0, gix-odb v0.54.0, gix-pathspec v0.4.0, gix-packetline v0.16.7, gix-transport v0.37.0, gix-protocol v0.41.0, gix-revision v0.23.0, gix-refspec v0.19.0, gix-worktree v0.27.0, gix-status v0.2.0, gix-submodule v0.5.0, gix-worktree-state v0.4.0, gix v0.55.0, safety bump 37 crates ([`68e5432`](https://github.com/Byron/gitoxide/commit/68e54326e527a55dd5b5079921fc251615833040))
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+</details>
+
## 0.4.0 (2023-09-24)
A maintenance release without user-facing changes.
@@ -13,7 +37,7 @@ A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
- - 1 commit contributed to the release.
+ - 2 commits contributed to the release.
- 15 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,6 +49,7 @@ A maintenance release without user-facing changes.
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
</details>
diff --git a/vendor/gix-submodule/Cargo.toml b/vendor/gix-submodule/Cargo.toml
index 51c44c86a..6f31ca684 100644
--- a/vendor/gix-submodule/Cargo.toml
+++ b/vendor/gix-submodule/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-submodule"
-version = "0.4.0"
+version = "0.5.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
description = "A crate of the gitoxide project dealing git submodules"
license = "MIT OR Apache-2.0"
@@ -27,19 +27,19 @@ version = "1.5.0"
default-features = false
[dependencies.gix-config]
-version = "^0.30.0"
+version = "^0.31.0"
[dependencies.gix-path]
version = "^0.10.0"
[dependencies.gix-pathspec]
-version = "^0.3.0"
+version = "^0.4.0"
[dependencies.gix-refspec]
-version = "^0.18.0"
+version = "^0.19.0"
[dependencies.gix-url]
-version = "^0.24.0"
+version = "^0.25.0"
[dependencies.thiserror]
version = "1.0.44"
diff --git a/vendor/gix-tempfile/.cargo-checksum.json b/vendor/gix-tempfile/.cargo-checksum.json
index 30fb7da0e..6cd886a01 100644
--- a/vendor/gix-tempfile/.cargo-checksum.json
+++ b/vendor/gix-tempfile/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"1bdcea781377f7f37697e21ff27d805ac84e205e1093d066f7cb474df04302f5","Cargo.lock":"2e5c541a95a292d9b6d6bbd6948c1a92dbb514f34a217181f960f9cfa2618289","Cargo.toml":"9ae2d890f1bf96dc7cc7af589dd3a72cd27e37ea4e0110c6400c19138b9f68f6","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","README.md":"48a31dad99a7ea256f4b0eb80726e12c77d3796069d3d40c0dada3790520617c","src/forksafe.rs":"1e21f40b0095197155f6a4335a3d89fa55c350137d5c57640e42539bec30d49c","src/handle.rs":"3129079ef9e0f188d5b3da34e0e0960ffbc518a35378b7735f354fcfbf13ee72","src/lib.rs":"7608da0ae96e887bed3c508f058f127640cddbfcd6c80263fb03ea5158ae5f17","src/registry.rs":"5f65f5c454e5a0c186839f0e25b99d6c352c1ed094b2859a170a5de6e66ecf09","src/signal.rs":"ce4145c7bdd3ce1e1b8a8c5cf43b8f0c99f932daadcea873ea2d5ed11dbd839d"},"package":"5ae0978f3e11dc57290ee75ac2477c815bca1ce2fa7ed5dc5f16db067410ac4d"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"2ccaf8464f5e7a2545fc389d0236839c3c14184dad01f4a60fa9088b9b34ddbc","Cargo.lock":"a37da8edd58b96cd9c81b7518b33c422c5673c4b7bcf91cfbf02c3bdc4167211","Cargo.toml":"bdea22750032817e8a0bd62a9b4a1fe0b67b7d07646ce947ab4bef4622438056","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","README.md":"48a31dad99a7ea256f4b0eb80726e12c77d3796069d3d40c0dada3790520617c","src/forksafe.rs":"1e21f40b0095197155f6a4335a3d89fa55c350137d5c57640e42539bec30d49c","src/handle.rs":"3129079ef9e0f188d5b3da34e0e0960ffbc518a35378b7735f354fcfbf13ee72","src/lib.rs":"7608da0ae96e887bed3c508f058f127640cddbfcd6c80263fb03ea5158ae5f17","src/registry.rs":"5f65f5c454e5a0c186839f0e25b99d6c352c1ed094b2859a170a5de6e66ecf09","src/signal.rs":"ce4145c7bdd3ce1e1b8a8c5cf43b8f0c99f932daadcea873ea2d5ed11dbd839d"},"package":"05cc2205cf10d99f70b96e04e16c55d4c7cf33efc151df1f793e29fd12a931f8"} \ No newline at end of file
diff --git a/vendor/gix-tempfile/CHANGELOG.md b/vendor/gix-tempfile/CHANGELOG.md
index 0ae4e22e5..658890931 100644
--- a/vendor/gix-tempfile/CHANGELOG.md
+++ b/vendor/gix-tempfile/CHANGELOG.md
@@ -5,6 +5,29 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 11.0.0 (2023-10-12)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 1 commit contributed to the release.
+ - 17 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+</details>
+
## 10.0.0 (2023-09-24)
<csr-id-a8b227ebe7dd140361de9bd7f0d88debfc2416d0/>
@@ -17,7 +40,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<csr-read-only-do-not-edit/>
- - 3 commits contributed to the release over the course of 3 calendar days.
+ - 4 commits contributed to the release over the course of 3 calendar days.
- 16 days passed between releases.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 1 unique issue was worked on: [#1026](https://github.com/Byron/gitoxide/issues/1026)
@@ -31,6 +54,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
* **[#1026](https://github.com/Byron/gitoxide/issues/1026)**
- Improve documentation to make possibility of leaks more clear ([`a8b227e`](https://github.com/Byron/gitoxide/commit/a8b227ebe7dd140361de9bd7f0d88debfc2416d0))
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
- Merge branch 'gix-lock-improvements' ([`b009db0`](https://github.com/Byron/gitoxide/commit/b009db018df435a8c57848dc4cdc52d4278a6d9d))
</details>
diff --git a/vendor/gix-tempfile/Cargo.lock b/vendor/gix-tempfile/Cargo.lock
index 70a38dfc1..04f629b6a 100644
--- a/vendor/gix-tempfile/Cargo.lock
+++ b/vendor/gix-tempfile/Cargo.lock
@@ -89,9 +89,9 @@ dependencies = [
[[package]]
name = "gix-features"
-version = "0.35.0"
+version = "0.36.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b9ff423ae4983f762659040d13dd7a5defbd54b6a04ac3cc7347741cec828cd"
+checksum = "51f4365ba17c4f218d7fd9ec102b8d2d3cb0ca200a835e81151ace7778aec827"
dependencies = [
"gix-hash",
"gix-trace",
@@ -100,18 +100,18 @@ dependencies = [
[[package]]
name = "gix-fs"
-version = "0.7.0"
+version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09815faba62fe9b32d918b75a554686c98e43f7d48c43a80df58eb718e5c6635"
+checksum = "8cd171c0cae97cd0dc57e7b4601cb1ebf596450e263ef3c02be9107272c877bd"
dependencies = [
"gix-features",
]
[[package]]
name = "gix-hash"
-version = "0.13.0"
+version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2ccf425543779cddaa4a7c62aba3fa9d90ea135b160be0a72dd93c063121ad4a"
+checksum = "1884c7b41ea0875217c1be9ce91322f90bde433e91d374d0e1276073a51ccc60"
dependencies = [
"faster-hex",
"thiserror",
@@ -119,7 +119,7 @@ dependencies = [
[[package]]
name = "gix-tempfile"
-version = "10.0.0"
+version = "11.0.0"
dependencies = [
"dashmap",
"document-features",
diff --git a/vendor/gix-tempfile/Cargo.toml b/vendor/gix-tempfile/Cargo.toml
index 806081f2d..c660eb862 100644
--- a/vendor/gix-tempfile/Cargo.toml
+++ b/vendor/gix-tempfile/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-tempfile"
-version = "10.0.0"
+version = "11.0.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
include = [
"src/**/*",
@@ -62,7 +62,7 @@ version = "0.2.0"
optional = true
[dependencies.gix-fs]
-version = "^0.7.0"
+version = "^0.8.0"
[dependencies.once_cell]
version = "1.8.0"
diff --git a/vendor/gix-transport/.cargo-checksum.json b/vendor/gix-transport/.cargo-checksum.json
index c8627fafd..74299e753 100644
--- a/vendor/gix-transport/.cargo-checksum.json
+++ b/vendor/gix-transport/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"a1c54de10ea7fbb380ed09ae67e85e28d109945a57d9524f448bf619fadb2f9c","Cargo.toml":"e7237f1f668533b07c3dad7d0f54435534ff16cb93fd734769ceb11716c4cfe2","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/client/async_io/bufread_ext.rs":"d9ef051c5bd1abd62ab43db6a50b4bdf163e1d50e8b25624e12aaed1bd8ece52","src/client/async_io/connect.rs":"012344d9e66b11e520f8c3bbb1f1d7fcb3553a8cbf26bb8eff417736a1c2315d","src/client/async_io/mod.rs":"5ddd26a991e7ff55b04730df0940047d68ca247c7c7d79d0f35f6731c704b121","src/client/async_io/request.rs":"6844d8804f1b99836994fdc2faa636542336b988b7ab15d118ea1aa24315cd65","src/client/async_io/traits.rs":"f0ec02bce105d138e438daa1397ff92b82230c19171039b12e995eb2011b8f1e","src/client/blocking_io/bufread_ext.rs":"ffb691bac5e4c7e35506f01aaee3560c80de8143e9eb5755cab2a3da545ed113","src/client/blocking_io/connect.rs":"e146594221beae80385b08094a128066a8772127b989bb63e8bb0b5d7dc7f82d","src/client/blocking_io/file.rs":"cbcaa7163ae67f75900156bbc328c7539efd20d58f1ec303978c3dabc94f2682","src/client/blocking_io/http/curl/mod.rs":"4fa0027b0aabdb71676c5267d8dab446ccd81863dd80dc9ac8f43e7710099ca4","src/client/blocking_io/http/curl/remote.rs":"3aa78601b3fead94434ee517713abae4c866060e3b5ab13cfa2e36ed4e84a05c","src/client/blocking_io/http/mod.rs":"77a9b103964334ec74ffa3799b918b5a91fca7c82c7a5365bbdbdc61029dd36d","src/client/blocking_io/http/redirect.rs":"1f6d57c8a87a9cb4c3699c53f5e05468d99b89d49532c1f805931dcdcff36c0b","src/client/blocking_io/http/reqwest/mod.rs":"08d09aefaddbd0049676bdbe403fca2282c9da4484a6d7cd8e84ec8a46060184","src/client/blocking_io/http/reqwest/remote.rs":"d77f98548c192df5f9f3685b41ff88fa5cd73452caeaac09e8606db03f632ec1","src/client/blocking_io/http/traits.rs":"520d9789ee9e5cee861a068f8ca0bd5309c853f288a065d3cfb86d8e0145942f","src/client/blocking_io/mod.rs":"b3b09948dcad91f5e9060875e5096c3d4155e3fdf33af0415b04f9c6246adec2","src/client/blocking_io/request.rs":"1602b053538b864557729fa6b3f74aa91020ead2bdcd55c86dd10c13c9168b94","src/client/blocking_io/ssh/mod.rs":"020c9f634dc45b27d345af14b00561670c86ea65bd833f35a797320b796defcd","src/client/blocking_io/ssh/program_kind.rs":"4ac6133bbd9ec0d9823ef25468a42d6f01cccd32bce8bdfe34aac6516e8dcfd7","src/client/blocking_io/ssh/tests.rs":"21836e0188548ea148775861771a7105091f5b0c432f5d84eeb1343b50ad20bd","src/client/blocking_io/traits.rs":"7e1ef1d6cd6c03f493fe55dd3ba6ad2a5059db16a22b9b75bbda8b055c207813","src/client/capabilities.rs":"fade3556cac458dfff1200d69bdaeefecef10fb4f9369df7991282b4f9a3560e","src/client/git/async_io.rs":"97b8dccc93bf5a62349aec7dc967acb59212ca66a49347564da50e4fc64864ec","src/client/git/blocking_io.rs":"42e3ee0f597cc31bd87027e21573ccfd4270b835795526f65ef193cff0da077c","src/client/git/mod.rs":"1c3ad5b754becfbca63b76fab85ebd97c2c5902f907fffbac994caffb82ee4a1","src/client/mod.rs":"563bb655c93af9dde121a6c8ddb94055aac862da5ac3e9d0420ca5eb21892387","src/client/non_io_types.rs":"9ea8334d6271118b1207634d425bf170ca93c221ab84072d7aa40576ea37ed24","src/client/traits.rs":"5c7b1f9d4b35ae049e81aa7aea09c0b142df023005d876765581b6b267a015d6","src/lib.rs":"7a3949cacacf1f9bbfbe0e4b8923d4fa9eb8deae953c547b270c7fb4aa83e74b"},"package":"b9ec726e6a245e68ace59a34126a1d679de60360676612985e70b0d3b102fb4e"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"ed22a145a95d7975a448b13a6a89672b47bf37d018ab1f30c3f6e2c681158445","Cargo.toml":"6874e03319e5493fbdfb507f25415a6981aa34e797764bdedae33f40f3848906","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/client/async_io/bufread_ext.rs":"d9ef051c5bd1abd62ab43db6a50b4bdf163e1d50e8b25624e12aaed1bd8ece52","src/client/async_io/connect.rs":"012344d9e66b11e520f8c3bbb1f1d7fcb3553a8cbf26bb8eff417736a1c2315d","src/client/async_io/mod.rs":"5ddd26a991e7ff55b04730df0940047d68ca247c7c7d79d0f35f6731c704b121","src/client/async_io/request.rs":"6844d8804f1b99836994fdc2faa636542336b988b7ab15d118ea1aa24315cd65","src/client/async_io/traits.rs":"f0ec02bce105d138e438daa1397ff92b82230c19171039b12e995eb2011b8f1e","src/client/blocking_io/bufread_ext.rs":"ffb691bac5e4c7e35506f01aaee3560c80de8143e9eb5755cab2a3da545ed113","src/client/blocking_io/connect.rs":"e146594221beae80385b08094a128066a8772127b989bb63e8bb0b5d7dc7f82d","src/client/blocking_io/file.rs":"cbcaa7163ae67f75900156bbc328c7539efd20d58f1ec303978c3dabc94f2682","src/client/blocking_io/http/curl/mod.rs":"4fa0027b0aabdb71676c5267d8dab446ccd81863dd80dc9ac8f43e7710099ca4","src/client/blocking_io/http/curl/remote.rs":"3aa78601b3fead94434ee517713abae4c866060e3b5ab13cfa2e36ed4e84a05c","src/client/blocking_io/http/mod.rs":"77a9b103964334ec74ffa3799b918b5a91fca7c82c7a5365bbdbdc61029dd36d","src/client/blocking_io/http/redirect.rs":"1f6d57c8a87a9cb4c3699c53f5e05468d99b89d49532c1f805931dcdcff36c0b","src/client/blocking_io/http/reqwest/mod.rs":"08d09aefaddbd0049676bdbe403fca2282c9da4484a6d7cd8e84ec8a46060184","src/client/blocking_io/http/reqwest/remote.rs":"d77f98548c192df5f9f3685b41ff88fa5cd73452caeaac09e8606db03f632ec1","src/client/blocking_io/http/traits.rs":"520d9789ee9e5cee861a068f8ca0bd5309c853f288a065d3cfb86d8e0145942f","src/client/blocking_io/mod.rs":"b3b09948dcad91f5e9060875e5096c3d4155e3fdf33af0415b04f9c6246adec2","src/client/blocking_io/request.rs":"1602b053538b864557729fa6b3f74aa91020ead2bdcd55c86dd10c13c9168b94","src/client/blocking_io/ssh/mod.rs":"020c9f634dc45b27d345af14b00561670c86ea65bd833f35a797320b796defcd","src/client/blocking_io/ssh/program_kind.rs":"4ac6133bbd9ec0d9823ef25468a42d6f01cccd32bce8bdfe34aac6516e8dcfd7","src/client/blocking_io/ssh/tests.rs":"21836e0188548ea148775861771a7105091f5b0c432f5d84eeb1343b50ad20bd","src/client/blocking_io/traits.rs":"7e1ef1d6cd6c03f493fe55dd3ba6ad2a5059db16a22b9b75bbda8b055c207813","src/client/capabilities.rs":"fade3556cac458dfff1200d69bdaeefecef10fb4f9369df7991282b4f9a3560e","src/client/git/async_io.rs":"97b8dccc93bf5a62349aec7dc967acb59212ca66a49347564da50e4fc64864ec","src/client/git/blocking_io.rs":"42e3ee0f597cc31bd87027e21573ccfd4270b835795526f65ef193cff0da077c","src/client/git/mod.rs":"1c3ad5b754becfbca63b76fab85ebd97c2c5902f907fffbac994caffb82ee4a1","src/client/mod.rs":"563bb655c93af9dde121a6c8ddb94055aac862da5ac3e9d0420ca5eb21892387","src/client/non_io_types.rs":"9ea8334d6271118b1207634d425bf170ca93c221ab84072d7aa40576ea37ed24","src/client/traits.rs":"5c7b1f9d4b35ae049e81aa7aea09c0b142df023005d876765581b6b267a015d6","src/lib.rs":"7a3949cacacf1f9bbfbe0e4b8923d4fa9eb8deae953c547b270c7fb4aa83e74b"},"package":"2f209a93364e24f20319751bc11092272e2f3fe82bb72592b2822679cf5be752"} \ No newline at end of file
diff --git a/vendor/gix-transport/CHANGELOG.md b/vendor/gix-transport/CHANGELOG.md
index 8d7be4632..a488684dd 100644
--- a/vendor/gix-transport/CHANGELOG.md
+++ b/vendor/gix-transport/CHANGELOG.md
@@ -5,6 +5,62 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.38.0 (2023-10-13)
+
+### Bug Fixes
+
+ - <csr-id-8011c73ee401bfca03811a249c46a4dd468af1b8/> bump `gix-transport` version to prevent it from being picked up.
+ `gix-transport` v0.37.1 could accidentally be picked up by older, incompatible,
+ `gix` versions which now fail to build.
+
+ Thus v0.37.1 is now yanked and replaced with v0.38.0 along with a new
+ release of `gix` to go with it.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 2 commits contributed to the release.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`12b5caf`](https://github.com/Byron/gitoxide/commit/12b5cafc49baf07d00313de468970a2db33ac1f8))
+ - Bump `gix-transport` version to prevent it from being picked up. ([`8011c73`](https://github.com/Byron/gitoxide/commit/8011c73ee401bfca03811a249c46a4dd468af1b8))
+</details>
+
+## 0.37.1 (2023-10-12)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 4 commits contributed to the release.
+ - 17 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Release gix-transport v0.37.1, gix-protocol v0.41.0, gix-revision v0.23.0, gix-refspec v0.19.0, gix-worktree v0.27.0, gix-status v0.2.0, gix-submodule v0.5.0, gix-worktree-state v0.4.0, gix v0.55.0 ([`14ddbd4`](https://github.com/Byron/gitoxide/commit/14ddbd4c15128b1d5631a2388a00e024842b7b83))
+ - Prepare another changelog prior to release ([`029dbc1`](https://github.com/Byron/gitoxide/commit/029dbc1601a0a9c76261667377a73af41aa41c8f))
+ - Release gix-hash v0.13.1, gix-features v0.36.0, gix-actor v0.28.0, gix-object v0.38.0, gix-glob v0.14.0, gix-attributes v0.20.0, gix-command v0.2.10, gix-filter v0.6.0, gix-fs v0.8.0, gix-commitgraph v0.22.0, gix-revwalk v0.9.0, gix-traverse v0.34.0, gix-worktree-stream v0.6.0, gix-archive v0.6.0, gix-tempfile v11.0.0, gix-lock v11.0.0, gix-ref v0.38.0, gix-config v0.31.0, gix-url v0.25.0, gix-credentials v0.21.0, gix-diff v0.37.0, gix-discover v0.26.0, gix-ignore v0.9.0, gix-index v0.26.0, gix-mailmap v0.20.0, gix-negotiate v0.9.0, gix-pack v0.44.0, gix-odb v0.54.0, gix-pathspec v0.4.0, gix-packetline v0.16.7, gix-transport v0.37.0, gix-protocol v0.41.0, gix-revision v0.23.0, gix-refspec v0.19.0, gix-worktree v0.27.0, gix-status v0.2.0, gix-submodule v0.5.0, gix-worktree-state v0.4.0, gix v0.55.0, safety bump 37 crates ([`68e5432`](https://github.com/Byron/gitoxide/commit/68e54326e527a55dd5b5079921fc251615833040))
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+</details>
+
## 0.37.0 (2023-09-24)
### Bug Fixes
@@ -16,7 +72,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<csr-read-only-do-not-edit/>
- - 3 commits contributed to the release.
+ - 4 commits contributed to the release.
- 15 days passed between releases.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -28,6 +84,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
- Merge branch 'fix-exploit' ([`c53bbd2`](https://github.com/Byron/gitoxide/commit/c53bbd265005c7eedc316205b217e137e2b9896e))
- Prevent hosts or paths that look like arguments to be passed to invoked commands. ([`b06a0dd`](https://github.com/Byron/gitoxide/commit/b06a0dd781accad317fdec5f86f069df4c21875c))
diff --git a/vendor/gix-transport/Cargo.toml b/vendor/gix-transport/Cargo.toml
index b944afe63..a48b4e46f 100644
--- a/vendor/gix-transport/Cargo.toml
+++ b/vendor/gix-transport/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-transport"
-version = "0.37.0"
+version = "0.38.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
include = [
"src/**/*",
@@ -96,17 +96,17 @@ version = "1.12.0"
optional = true
[dependencies.gix-command]
-version = "^0.2.9"
+version = "^0.2.10"
[dependencies.gix-credentials]
-version = "^0.20.0"
+version = "^0.21.0"
optional = true
[dependencies.gix-features]
-version = "^0.35.0"
+version = "^0.36.0"
[dependencies.gix-packetline]
-version = "^0.16.6"
+version = "^0.16.7"
[dependencies.gix-quote]
version = "^0.4.7"
@@ -115,7 +115,7 @@ version = "^0.4.7"
version = "^0.10.0"
[dependencies.gix-url]
-version = "^0.24.0"
+version = "^0.25.0"
[dependencies.pin-project-lite]
version = "0.2.6"
diff --git a/vendor/gix-traverse/.cargo-checksum.json b/vendor/gix-traverse/.cargo-checksum.json
index 532b878a0..fcd5af290 100644
--- a/vendor/gix-traverse/.cargo-checksum.json
+++ b/vendor/gix-traverse/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"5d14e0cb429e00c1adec4b334b92cba631291f1e4109e1af0d1aabc1b78a8980","Cargo.toml":"4a6ab338aa87d52bf6f1baa1bcb6d3a7c9ae4f48f760344070a374336107a02c","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/commit.rs":"75da6c4897140a844c7349bf505b46ea086dd588379f9b88d70ffef2aa997cd4","src/lib.rs":"e393d36a432571c44efd478739fb5ff6779b188618aac2058e1d45af809ecc54","src/tree/breadthfirst.rs":"399b898d3fd22e58601ed449f6c3fed6284350a467f7eabef8bbe51857ac6f0a","src/tree/mod.rs":"7d8c982aabf8b0cf4952fe542cd7623e17a171c2c689e141b5a711549c5e708f","src/tree/recorder.rs":"da18f92a15b76d886e57e10e586951287110cb8062ecff1f4c11195838eb2625"},"package":"22ef04ab3643acba289b5cedd25d6f53c0430770b1d689d1d654511e6fb81ba0"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"31a4591e02750a4848a340b228076fedffd16bc7552552b0977c40009fc2ff61","Cargo.toml":"fd3940415d91f7c95af20a1a1663c10635bd099514634adfb65710847c26ee09","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/commit.rs":"75da6c4897140a844c7349bf505b46ea086dd588379f9b88d70ffef2aa997cd4","src/lib.rs":"e393d36a432571c44efd478739fb5ff6779b188618aac2058e1d45af809ecc54","src/tree/breadthfirst.rs":"399b898d3fd22e58601ed449f6c3fed6284350a467f7eabef8bbe51857ac6f0a","src/tree/mod.rs":"a16b7b0d69f0c07b9ba264a7ada321575151690e06e80e0bfc636dae75a4fe6c","src/tree/recorder.rs":"da18f92a15b76d886e57e10e586951287110cb8062ecff1f4c11195838eb2625"},"package":"14d050ec7d4e1bb76abf0636cf4104fb915b70e54e3ced9a4427c999100ff38a"} \ No newline at end of file
diff --git a/vendor/gix-traverse/CHANGELOG.md b/vendor/gix-traverse/CHANGELOG.md
index 58c9bf929..478675386 100644
--- a/vendor/gix-traverse/CHANGELOG.md
+++ b/vendor/gix-traverse/CHANGELOG.md
@@ -5,6 +5,30 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.34.0 (2023-10-12)
+
+A maintenance release without user-facing changes.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 2 commits contributed to the release over the course of 6 calendar days.
+ - 17 days passed between releases.
+ - 0 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+ - Fix docs ([`995bc84`](https://github.com/Byron/gitoxide/commit/995bc840664cbd4aeb7f95592e3125dee63bdcd4))
+</details>
+
## 0.33.0 (2023-09-24)
A maintenance release without user-facing changes.
@@ -13,7 +37,7 @@ A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
- - 1 commit contributed to the release.
+ - 2 commits contributed to the release.
- 16 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,6 +49,7 @@ A maintenance release without user-facing changes.
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
</details>
diff --git a/vendor/gix-traverse/Cargo.toml b/vendor/gix-traverse/Cargo.toml
index 3efde7153..a2ae8585f 100644
--- a/vendor/gix-traverse/Cargo.toml
+++ b/vendor/gix-traverse/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-traverse"
-version = "0.33.0"
+version = "0.34.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
include = [
"src/**/*",
@@ -29,22 +29,22 @@ repository = "https://github.com/Byron/gitoxide"
doctest = false
[dependencies.gix-commitgraph]
-version = "^0.21.0"
+version = "^0.22.0"
[dependencies.gix-date]
version = "^0.8.0"
[dependencies.gix-hash]
-version = "^0.13.0"
+version = "^0.13.1"
[dependencies.gix-hashtable]
version = "^0.4.0"
[dependencies.gix-object]
-version = "^0.37.0"
+version = "^0.38.0"
[dependencies.gix-revwalk]
-version = "^0.8.0"
+version = "^0.9.0"
[dependencies.smallvec]
version = "1.10.0"
diff --git a/vendor/gix-traverse/src/tree/mod.rs b/vendor/gix-traverse/src/tree/mod.rs
index 5ae01736c..d5b6f5d45 100644
--- a/vendor/gix-traverse/src/tree/mod.rs
+++ b/vendor/gix-traverse/src/tree/mod.rs
@@ -27,7 +27,7 @@ pub trait Visit {
fn visit_nontree(&mut self, entry: &gix_object::tree::EntryRef<'_>) -> visit::Action;
}
-/// A [Visit][Visit] implementation to record every observed change and keep track of the changed paths.
+/// A [Visit] implementation to record every observed change and keep track of the changed paths.
///
/// Recorders can also be instructed to track the filename only, or no location at all.
#[derive(Clone, Debug)]
diff --git a/vendor/gix-url/.cargo-checksum.json b/vendor/gix-url/.cargo-checksum.json
index c08420faf..be0da2737 100644
--- a/vendor/gix-url/.cargo-checksum.json
+++ b/vendor/gix-url/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"338023cb41d05fc178ad5e7df70a104269322894e1d46d61ebb277e2a4bcd353","Cargo.toml":"fa44109c10a7f056540bb2adef13defb6907ca69690def04ecb10ae254bd7496","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/expand_path.rs":"b0d2fe688c170dfa1381b3cb7add373a618a8ac2520ebdeb2ea721318bb88566","src/impls.rs":"3e47180ec440b42bbd0ba2bdbcbfc247fbfd4020066ce5ca0f4c137b36807323","src/lib.rs":"62e4beec340b5ab0debd6e36207c50634207b33c94c07ff74b2db7ddd70bf22d","src/parse.rs":"0dd96b53e86df347388c9d05be66e49cc2aa4bdec439304c53d4e28664644a14","src/scheme.rs":"02a6a230eea7459b05959ff4e8ce30f4d45526e1f1a47ff88b260bb1943d2433","tests/baseline/main.rs":"2826825460579010a346fba32a875f28e35addb55c1ef7882e5c622943352ec0"},"package":"6125ecf46e8c68bf7202da6cad239831daebf0247ffbab30210d72f3856e420f"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"fd99224bb13c423da1438bbf9eee77ff16f0c4830d3adb594aecacd64f4baed3","Cargo.toml":"4a79cde98365962dc3ed2a9de3d135fd050ffe31294115b4d2d11b1b30f76b30","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/expand_path.rs":"237e0507aca81bd2f8cc36c9007780808763f1fe42ec3f63b08657fe91edebbf","src/impls.rs":"3e47180ec440b42bbd0ba2bdbcbfc247fbfd4020066ce5ca0f4c137b36807323","src/lib.rs":"f3b7b61875350f3575b888acd89a697cbe978e46ce51d16e5b24cba3d39e5894","src/parse.rs":"dd5e0329b07ed7ee587a3909303cb6a7944728fffa1cf60e14cb03b589ca48cc","src/scheme.rs":"1c094d383a0af2fce2bd7411fdd4766ba13e70e03bf7f778b07d2a496f01c404"},"package":"b1b9ac8ed32ad45f9fc6c5f8c0be2ed911e544a5a19afd62d95d524ebaa95671"} \ No newline at end of file
diff --git a/vendor/gix-url/CHANGELOG.md b/vendor/gix-url/CHANGELOG.md
index ce61c98c0..607887d28 100644
--- a/vendor/gix-url/CHANGELOG.md
+++ b/vendor/gix-url/CHANGELOG.md
@@ -5,6 +5,94 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.25.1 (2023-10-14)
+
+### Bug Fixes
+
+ - <csr-id-562b0c931db1d22b8e59903cb59afa9a36d5884c/> make file:// url parsing with full backslashed path more robust on windows.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 3 commits contributed to the release.
+ - 1 day passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 1 unique issue was worked on: [#1063](https://github.com/Byron/gitoxide/issues/1063)
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **[#1063](https://github.com/Byron/gitoxide/issues/1063)**
+ - Make file:// url parsing with full backslashed path more robust on windows. ([`562b0c9`](https://github.com/Byron/gitoxide/commit/562b0c931db1d22b8e59903cb59afa9a36d5884c))
+ * **Uncategorized**
+ - Merge branch 'head-conversions' ([`c2cf20c`](https://github.com/Byron/gitoxide/commit/c2cf20cd2d685c2c24527729fff35fd0a7903742))
+ - Fix yet another fuzzed test-case related to url::parse DoS ([`21729ed`](https://github.com/Byron/gitoxide/commit/21729edb0c12831eb9ea488cc3b66b5e79eacfae))
+</details>
+
+## 0.25.0 (2023-10-12)
+
+This release contains a complete rewrite of the internal url parsing logic, the public interface stays mostly the same however. Gitoxide will now be
+more correct, interpreting more urls the same way Git does. Improvements include the added support for ssh aliases (`github:byron/gitoxide` has previously
+been parsed as local path), adjustments around the interpretation of colons in file names (previously we disallowed colons that were not followed up
+with a slash character) and some smaller changes that bring the interpretation of file urls more in line with Git's implementation. Additionally, the
+error types have been adjusted to print a more comprehensive message by default, making sure they stay helpful even when bubbled up through multiple abstraction
+layers.
+
+There are still many (edge) cases in Git's url parsing implementation which are not handled correctly by Gitoxide. If you notice any such deviation please
+open a new issue to help us making Gitoxide even more correct.
+
+### Bug Fixes
+
+ - <csr-id-ea0ea88dfc232601b462fcf52fed4d34a17bc116/> another fuzz-issue that could cause long parse times of URLs
+ - <csr-id-60126d7097280bf364fb83ef73588df414198855/> denial of service attack by passing a URL with a very long host.
+ We now check for certain size limits and prevent passing long URLs to
+ the `url` crate.
+
+### New Features
+
+ - <csr-id-4184a5e9019f2ac20213b5362d60c71e0bf295d3/> enable fuzzing for git url parsing
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 19 commits contributed to the release over the course of 17 calendar days.
+ - 17 days passed between releases.
+ - 3 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Release gix-hash v0.13.1, gix-features v0.36.0, gix-actor v0.28.0, gix-object v0.38.0, gix-glob v0.14.0, gix-attributes v0.20.0, gix-command v0.2.10, gix-filter v0.6.0, gix-fs v0.8.0, gix-commitgraph v0.22.0, gix-revwalk v0.9.0, gix-traverse v0.34.0, gix-worktree-stream v0.6.0, gix-archive v0.6.0, gix-tempfile v11.0.0, gix-lock v11.0.0, gix-ref v0.38.0, gix-config v0.31.0, gix-url v0.25.0, gix-credentials v0.21.0, gix-diff v0.37.0, gix-discover v0.26.0, gix-ignore v0.9.0, gix-index v0.26.0, gix-mailmap v0.20.0, gix-negotiate v0.9.0, gix-pack v0.44.0, gix-odb v0.54.0, gix-pathspec v0.4.0, gix-packetline v0.16.7, gix-transport v0.37.0, gix-protocol v0.41.0, gix-revision v0.23.0, gix-refspec v0.19.0, gix-worktree v0.27.0, gix-status v0.2.0, gix-submodule v0.5.0, gix-worktree-state v0.4.0, gix v0.55.0, safety bump 37 crates ([`68e5432`](https://github.com/Byron/gitoxide/commit/68e54326e527a55dd5b5079921fc251615833040))
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+ - Another fuzz-issue that could cause long parse times of URLs ([`ea0ea88`](https://github.com/Byron/gitoxide/commit/ea0ea88dfc232601b462fcf52fed4d34a17bc116))
+ - Add yet another bypass attack that runs into the `url` DoS issue ([`6aa63b1`](https://github.com/Byron/gitoxide/commit/6aa63b19338d1b4d86906a1e16eeb7b48cbc83a4))
+ - Merge branch 'improvements' ([`3939a45`](https://github.com/Byron/gitoxide/commit/3939a455be2269280248cdfed4a5983f8d178141))
+ - Assure we don't accidentally parse a valid-looking URL to `url` and cause long compute times. ([`7497553`](https://github.com/Byron/gitoxide/commit/7497553e753dcff92cc7c78941d8bbef8b97bdb7))
+ - Merge branch 'gix-url-fixture-improvements' ([`3d60c02`](https://github.com/Byron/gitoxide/commit/3d60c0245ec4b787cfcb111319d730a6e5031ef4))
+ - Fix panics not shown in gix-url baseline generation ([`2488ad9`](https://github.com/Byron/gitoxide/commit/2488ad9f5ca2913a1a67f40b91291463602a3f21))
+ - Improve output of the gix-url baseline test ([`a530037`](https://github.com/Byron/gitoxide/commit/a5300378899d205ce96f53581b98d3149e1e8c66))
+ - Denial of service attack by passing a URL with a very long host. ([`60126d7`](https://github.com/Byron/gitoxide/commit/60126d7097280bf364fb83ef73588df414198855))
+ - Merge branch 'gix-url-parse-rewrite' ([`a12e4a8`](https://github.com/Byron/gitoxide/commit/a12e4a88d5f5636cd694c72ce45a8b75aa754d28))
+ - Enable fuzzing for git url parsing ([`4184a5e`](https://github.com/Byron/gitoxide/commit/4184a5e9019f2ac20213b5362d60c71e0bf295d3))
+ - Assure we don't loose test coverage; possibly adjust expecations ([`30bb7dc`](https://github.com/Byron/gitoxide/commit/30bb7dc27f4b5def6abb91adc81ff49a1b935cff))
+ - Refactor ([`e318a4c`](https://github.com/Byron/gitoxide/commit/e318a4c243f67807bee55ea4571dfb1c068f1d09))
+ - Refactor baseline tests ([`4b4ac8a`](https://github.com/Byron/gitoxide/commit/4b4ac8abee65a27f8677ef25f4f127bf6f6416b7))
+ - Add platform specific baseline tests and run always run them. ([`e9aa690`](https://github.com/Byron/gitoxide/commit/e9aa690d7c0692e5476c2065feb31b0c75e81128))
+ - Update changelogs ([`4349353`](https://github.com/Byron/gitoxide/commit/43493531bbf3049bee3d7b14b7a6dbe874e37ebc))
+ - Align test with real behavior ([`a31af62`](https://github.com/Byron/gitoxide/commit/a31af624f88f80dab0a3f2ccd36502bb494ab046))
+ - Fix absolute windows file urls with extra slash ([`3bf12a3`](https://github.com/Byron/gitoxide/commit/3bf12a3e9bda6ebe0f8942d9b3f1f7c3e357b435))
+</details>
+
## 0.24.0 (2023-09-24)
### New Features
@@ -22,7 +110,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<csr-read-only-do-not-edit/>
- - 4 commits contributed to the release.
+ - 14 commits contributed to the release over the course of 14 calendar days.
- 16 days passed between releases.
- 2 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -34,10 +122,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
- Merge branch 'fix-exploit' ([`c53bbd2`](https://github.com/Byron/gitoxide/commit/c53bbd265005c7eedc316205b217e137e2b9896e))
- Prevent hosts or paths that look like arguments to be passed to invoked commands. ([`b06a0dd`](https://github.com/Byron/gitoxide/commit/b06a0dd781accad317fdec5f86f069df4c21875c))
- Add `Url::host_argument_safe()` and `Url::path_argument_safe()` ([`d80b5f6`](https://github.com/Byron/gitoxide/commit/d80b5f69772a6e36b0131d3a538e896a8a6a29b1))
+ - Parse absolute paths in file urls on Windows ([`637e1ae`](https://github.com/Byron/gitoxide/commit/637e1ae996610b28812cf27efe13777666b44cc9))
+ - Parse absolute paths as local urls on Windows ([`3af8834`](https://github.com/Byron/gitoxide/commit/3af8834a4a6ee33473d1690fd98b40b22d41a55d))
+ - Create test urls from raw parts directly ([`5ac705c`](https://github.com/Byron/gitoxide/commit/5ac705cfaf8932469115f25b54a47f444c163bc0))
+ - Fix file urls with dos driver letter on unix ([`99f4447`](https://github.com/Byron/gitoxide/commit/99f444799d44bbe54ac05307b79da6add9181b8b))
+ - Fix dropping of host during file url conversion ([`f3e1331`](https://github.com/Byron/gitoxide/commit/f3e13312c2f0ea50b716189902c8b809a1a98cbc))
+ - Use helper function for common url parsing steps ([`2344f91`](https://github.com/Byron/gitoxide/commit/2344f913b0539942ae852e2b093558e04c79bb8a))
+ - Thanks clippy ([`d077f56`](https://github.com/Byron/gitoxide/commit/d077f56aa220d83f46e8d318c7bf48ec77072fdc))
+ - Add missing slash to file url test ([`ffaead6`](https://github.com/Byron/gitoxide/commit/ffaead685b49d6c6eebdf5c563d2dc3cdbfb9e13))
+ - Remove wrong ssh alias url test ([`4da440d`](https://github.com/Byron/gitoxide/commit/4da440d0f81a2fc462b2c04840a83beb7a738344))
</details>
## 0.23.0 (2023-09-08)
@@ -51,7 +149,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<csr-read-only-do-not-edit/>
- - 5 commits contributed to the release over the course of 17 calendar days.
+ - 8 commits contributed to the release over the course of 17 calendar days.
- 17 days passed between releases.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -67,17 +165,66 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Prepare changelogs for release ([`375db06`](https://github.com/Byron/gitoxide/commit/375db06a8442378c3f7a922fae38e2a6694d9d04))
- Merge branch `dyn`ification ([`f658fcc`](https://github.com/Byron/gitoxide/commit/f658fcc52dc2200ae34ca53dc10be97fb9012057))
- Use `dyn` trait where possible. ([`072ee32`](https://github.com/Byron/gitoxide/commit/072ee32f693a31161cd6a843da6582d13efbb20b))
+ - Handle missing host and path separator in file url ([`f05edae`](https://github.com/Byron/gitoxide/commit/f05edaef5e8d6a2d90adc84c8dc5c4b5ab0017b6))
+ - Use same logic for file urls and local file paths ([`679a7f4`](https://github.com/Byron/gitoxide/commit/679a7f46e8121b5a0a5a396c2ce89f6706068507))
+ - Return errors for empty paths and relative urls ([`8af79ec`](https://github.com/Byron/gitoxide/commit/8af79ec98d82f3d2542fc43928103a20c2e4fc1a))
- Merge branch 'gix-submodule' ([`363ee77`](https://github.com/Byron/gitoxide/commit/363ee77400805f473c9ad66eadad9214e7ab66f4))
</details>
## 0.22.0 (2023-08-22)
<csr-id-229bd4899213f749a7cc124aa2b82a1368fba40f/>
+<csr-id-313a7b3ddc5786af1f120fa99dd659d725b6845a/>
### Chore
- <csr-id-229bd4899213f749a7cc124aa2b82a1368fba40f/> don't call crate 'WIP' in manifest anymore.
+### Reverted (BREAKING)
+
+ - <csr-id-fb0b8a769a8992e8079c66fea7d4708d9db0323d/> url parsing error NotALocalFile
+ The `NotALocalFile` error variant was previously returned if the input
+ url contained a colon but the slice after that character contained no
+ slash character (`/` or `\`). This behavior is wrong.
+
+ SCP like URLs may not need a slash character to specify the repositories
+ location. Similarly, a local directory that contains a colon in its name
+ is a valid repository path as well.
+
+ The new implementation correctly parses such URLs.
+ - <csr-id-dd1a1257d66d2f280be0adfce0a100a6a83e1c65/> url parsing error MissingResourceLocation
+ The `MissingResourceLocation` error variant was previously returned if
+ the input URL had either scheme ssh (no matter if URL or SCP format) or
+ git and the URL contained no or an empty path section. In the future we
+ will instead return the `MissingRepositoryPath` error in such a case.
+
+ The only benefit of such a seperation is that it allows the caller to
+ infer the kind of URL we tried to parse. A future commit will add a new
+ field to the `MissingRepositoryPath` error variant which will clearly
+ communicate this information and can therefore be used instead for this
+ purpose.
+
+### Chore (BREAKING)
+
+ - <csr-id-313a7b3ddc5786af1f120fa99dd659d725b6845a/> restructure gix-url parsing error variants
+ All error variants now own a copy of the input which is used in their
+ display implementation. I noticed that URL parsing errors are almost never
+ acted upon but only wrapped and bubbled up to the user. It therefore
+ makes sense to ensure the message for this error is informative enough
+ by default.
+
+ If an error can be thrown for different types of URLs it now also
+ includes a kind field. With this field the caller can determine what
+ kind of URL we tried to parse. Additionally, this information is used
+ for the error message too.
+
+ For testing the assert_matches crate was added which implements the
+ unstable feature with the same name in stable rust. It makes testing the
+ invalid variants much more convenient.
+
+ BREAKING because public fields of some error variants are now no longer
+ available
+
### Bug Fixes (BREAKING)
- <csr-id-8857580cb270b737bf04437a6f5e65307df1c99b/> let `Url::canonicalize(d)()` take the current working dir as argument.
@@ -87,9 +234,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<csr-read-only-do-not-edit/>
- - 21 commits contributed to the release over the course of 17 calendar days.
+ - 28 commits contributed to the release over the course of 17 calendar days.
- 30 days passed between releases.
- - 2 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 5 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
### Commit Details
@@ -103,11 +250,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Make `gix-url` publishable by adding baseline test ([`d3746df`](https://github.com/Byron/gitoxide/commit/d3746df5dd402d8a461c2b07eaa0f8d8803fadf8))
- Release gix-date v0.7.3, gix-hash v0.12.0, gix-features v0.33.0, gix-actor v0.25.0, gix-object v0.35.0, gix-path v0.9.0, gix-glob v0.11.0, gix-quote v0.4.7, gix-attributes v0.17.0, gix-command v0.2.9, gix-packetline-blocking v0.16.5, gix-filter v0.3.0, gix-fs v0.5.0, gix-commitgraph v0.19.0, gix-hashtable v0.3.0, gix-revwalk v0.6.0, gix-traverse v0.31.0, gix-worktree-stream v0.3.0, gix-archive v0.3.0, gix-config-value v0.13.0, gix-tempfile v8.0.0, gix-lock v8.0.0, gix-ref v0.35.0, gix-sec v0.9.0, gix-config v0.28.0, gix-prompt v0.6.0, gix-url v0.22.0, gix-credentials v0.18.0, gix-diff v0.34.0, gix-discover v0.23.0, gix-ignore v0.6.0, gix-bitmap v0.2.7, gix-index v0.22.0, gix-mailmap v0.17.0, gix-negotiate v0.6.0, gix-pack v0.41.0, gix-odb v0.51.0, gix-pathspec v0.1.0, gix-packetline v0.16.5, gix-transport v0.35.0, gix-protocol v0.38.0, gix-revision v0.20.0, gix-refspec v0.16.0, gix-submodule v0.2.0, gix-worktree v0.24.0, gix-worktree-state v0.1.0, gix v0.52.0, gitoxide-core v0.31.0, gitoxide v0.29.0, safety bump 41 crates ([`30b2761`](https://github.com/Byron/gitoxide/commit/30b27615047692d3ced1b2d9c2ac15a80f79fbee))
- Update changelogs prior to release ([`f23ea88`](https://github.com/Byron/gitoxide/commit/f23ea8828f2d9ba7559973daca388c9591bcc5fc))
+ - Restructure gix-url parsing error variants ([`313a7b3`](https://github.com/Byron/gitoxide/commit/313a7b3ddc5786af1f120fa99dd659d725b6845a))
+ - Url parsing error NotALocalFile ([`fb0b8a7`](https://github.com/Byron/gitoxide/commit/fb0b8a769a8992e8079c66fea7d4708d9db0323d))
+ - Url parsing error MissingResourceLocation ([`dd1a125`](https://github.com/Byron/gitoxide/commit/dd1a1257d66d2f280be0adfce0a100a6a83e1c65))
+ - Rewrite gix-url parsing ([`14facd9`](https://github.com/Byron/gitoxide/commit/14facd98632b44eb350c33a5aa425d2e68d25889))
- Merge branch 'gix-url-fixture-tests' ([`1b957c5`](https://github.com/Byron/gitoxide/commit/1b957c524cae288ac2063f6ba7e4d10d523eb8f3))
- For now, ignore baseline tests as most of them fail. ([`c0be6ab`](https://github.com/Byron/gitoxide/commit/c0be6aba49d734d166f279933220b02989c584de))
- Don't call crate 'WIP' in manifest anymore. ([`229bd48`](https://github.com/Byron/gitoxide/commit/229bd4899213f749a7cc124aa2b82a1368fba40f))
- Merge branch 'submodule-active' ([`a3afaa4`](https://github.com/Byron/gitoxide/commit/a3afaa42741616a0f1abeef9b54557e7c2b800cb))
+ - Add support for "git+ssh" and "ssh+git" urls ([`3faac36`](https://github.com/Byron/gitoxide/commit/3faac3648b4d39bff4a05602b481bf8e6d71b77e))
- Let `Url::canonicalize(d)()` take the current working dir as argument. ([`8857580`](https://github.com/Byron/gitoxide/commit/8857580cb270b737bf04437a6f5e65307df1c99b))
+ - Fix wrong assertion in gix-url baseline test ([`f18bfd8`](https://github.com/Byron/gitoxide/commit/f18bfd8d81a56e9a68d465c49ef2da192de6c279))
+ - Improve error printing for gix-url baseline test ([`0e9a18e`](https://github.com/Byron/gitoxide/commit/0e9a18ed6921116cca6e48345d6937ad7120e83e))
- Fix prints of panics in gix-url baseline test ([`938baee`](https://github.com/Byron/gitoxide/commit/938baee58383fd995d39c5528e2a104d33de8826))
- Add assert output to failures in gix-url baseline test ([`163e139`](https://github.com/Byron/gitoxide/commit/163e1391526dad528e0bca0cc876e50e48381e74))
- Thanks clippy ([`fe5dbe1`](https://github.com/Byron/gitoxide/commit/fe5dbe16b5a8cfefa31a561506218ede73f3ec7e))
diff --git a/vendor/gix-url/Cargo.toml b/vendor/gix-url/Cargo.toml
index e3a109e8c..cc301a278 100644
--- a/vendor/gix-url/Cargo.toml
+++ b/vendor/gix-url/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-url"
-version = "0.24.0"
+version = "0.25.1"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
include = [
"src/**/*",
@@ -36,10 +36,6 @@ rustdoc-args = [
[lib]
doctest = false
-[[test]]
-name = "baseline"
-harness = false
-
[dependencies.bstr]
version = "1.3.0"
features = ["std"]
@@ -50,7 +46,7 @@ version = "0.2.0"
optional = true
[dependencies.gix-features]
-version = "^0.35.0"
+version = "^0.36.0"
[dependencies.gix-path]
version = "^0.10.0"
@@ -73,8 +69,8 @@ version = "1.0.32"
[dependencies.url]
version = "2.1.1"
-[dev-dependencies.libtest-mimic]
-version = "0.6.1"
+[dev-dependencies.assert_matches]
+version = "1.5.0"
[features]
serde = [
diff --git a/vendor/gix-url/src/expand_path.rs b/vendor/gix-url/src/expand_path.rs
index 85fb0da50..e62a8b51e 100644
--- a/vendor/gix-url/src/expand_path.rs
+++ b/vendor/gix-url/src/expand_path.rs
@@ -22,7 +22,7 @@ impl From<ForUser> for Option<BString> {
}
}
-/// The error used by [`parse()`], [`with()`] and [`expand_path()`].
+/// The error used by [`parse()`], [`with()`] and [`expand_path()`](crate::expand_path()).
#[derive(Debug, thiserror::Error)]
#[allow(missing_docs)]
pub enum Error {
@@ -112,16 +112,3 @@ pub fn with(
None => path.into(),
})
}
-
-/// Expand `path` for the given `user`, which can be obtained by [`parse()`], resolving the home directories
-/// of `user` automatically.
-///
-/// If more precise control of the resolution mechanism is needed, then use the [`with()`] function.
-pub fn expand_path(user: Option<&ForUser>, path: &BStr) -> Result<PathBuf, Error> {
- with(user, path, |user| match user {
- ForUser::Current => home::home_dir(),
- ForUser::Name(user) => {
- home::home_dir().and_then(|home| home.parent().map(|home_dirs| home_dirs.join(user.to_string())))
- }
- })
-}
diff --git a/vendor/gix-url/src/lib.rs b/vendor/gix-url/src/lib.rs
index 1d90689ae..a86713e85 100644
--- a/vendor/gix-url/src/lib.rs
+++ b/vendor/gix-url/src/lib.rs
@@ -10,28 +10,58 @@
use bstr::{BStr, BString};
use std::borrow::Cow;
-
-///
-pub mod parse;
-#[doc(inline)]
-pub use parse::parse;
+use std::path::PathBuf;
///
pub mod expand_path;
-#[doc(inline)]
-pub use expand_path::expand_path;
mod scheme;
pub use scheme::Scheme;
+mod impls;
+
+///
+pub mod parse;
+
+/// Parse the given `bytes` as a [git url](Url).
+///
+/// # Note
+///
+/// We cannot and should never have to deal with UTF-16 encoded windows strings, so bytes input is acceptable.
+/// For file-paths, we don't expect UTF8 encoding either.
+pub fn parse(input: &BStr) -> Result<Url, parse::Error> {
+ use parse::InputScheme;
+ match parse::find_scheme(input) {
+ InputScheme::Local => parse::local(input),
+ InputScheme::Url { protocol_end } if input[..protocol_end].eq_ignore_ascii_case(b"file") => {
+ parse::file_url(input, protocol_end)
+ }
+ InputScheme::Url { protocol_end } => parse::url(input, protocol_end),
+ InputScheme::Scp { colon } => parse::scp(input, colon),
+ }
+}
+
+/// Expand `path` for the given `user`, which can be obtained by [`parse()`], resolving the home directories
+/// of `user` automatically.
+///
+/// If more precise control of the resolution mechanism is needed, then use the [expand_path::with()] function.
+pub fn expand_path(user: Option<&expand_path::ForUser>, path: &BStr) -> Result<PathBuf, expand_path::Error> {
+ expand_path::with(user, path, |user| match user {
+ expand_path::ForUser::Current => home::home_dir(),
+ expand_path::ForUser::Name(user) => {
+ home::home_dir().and_then(|home| home.parent().map(|home_dirs| home_dirs.join(user.to_string())))
+ }
+ })
+}
/// A URL with support for specialized git related capabilities.
///
-/// Additionally there is support for [deserialization][Url::from_bytes()] and serialization
-/// (_see the `Display::fmt()` implementation_).
+/// Additionally there is support for [deserialization](Url::from_bytes()) and serialization
+/// (_see the [`std::fmt::Display::fmt()`] implementation_).
///
-/// # Deviation
+/// # Security Warning
///
-/// Note that we do not support passing the password using the URL as it's likely leading to accidents.
+/// URLs may contain passwords and we serialize them when [formatting](std::fmt::Display) or
+/// [serializing losslessly](Url::to_bstring()).
#[derive(PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct Url {
@@ -55,7 +85,7 @@ pub struct Url {
/// the invocation of programs from an attacker controlled URL. See <https://secure.phabricator.com/T12961> for details.
///
/// If this value is going to be used in a command-line application, call [Self::path_argument_safe()] instead.
- pub path: bstr::BString,
+ pub path: BString,
}
/// Instantiation
@@ -88,7 +118,7 @@ impl Url {
/// Modification
impl Url {
- /// Set the given `user`, with `None` unsetting it. Returns the previous value.
+ /// Set the given `user`, or unset it with `None`. Return the previous value.
pub fn set_user(&mut self, user: Option<String>) -> Option<String> {
let prev = self.user.take();
self.user = user;
@@ -228,7 +258,7 @@ impl Url {
}
/// Transform ourselves into a binary string, losslessly, or fail if the URL is malformed due to host or user parts being incorrect.
- pub fn to_bstring(&self) -> bstr::BString {
+ pub fn to_bstring(&self) -> BString {
let mut buf = Vec::with_capacity(
(5 + 3)
+ self.user.as_ref().map(String::len).unwrap_or_default()
@@ -250,4 +280,43 @@ impl Url {
}
}
-mod impls;
+/// This module contains extensions to the [Url] struct which are only intended to be used
+/// for testing code. Do not use this module in production! For all intends and purposes the APIs of
+/// all functions and types exposed by this module are considered unstable and are allowed to break
+/// even in patch releases!
+#[doc(hidden)]
+#[cfg(debug_assertions)]
+pub mod testing {
+ use bstr::BString;
+
+ use crate::{Scheme, Url};
+
+ /// Additional functions for [Url] which are only intended to be used for tests.
+ pub trait TestUrlExtension {
+ /// Create a new instance from the given parts without validating them.
+ ///
+ /// This function is primarily intended for testing purposes. For production code please
+ /// consider using [Url::from_parts] instead!
+ fn from_parts_unchecked(
+ scheme: Scheme,
+ user: Option<String>,
+ password: Option<String>,
+ host: Option<String>,
+ port: Option<u16>,
+ path: BString,
+ serialize_alternative_form: bool,
+ ) -> Url {
+ Url {
+ scheme,
+ user,
+ password,
+ host,
+ port,
+ path,
+ serialize_alternative_form,
+ }
+ }
+ }
+
+ impl TestUrlExtension for Url {}
+}
diff --git a/vendor/gix-url/src/parse.rs b/vendor/gix-url/src/parse.rs
index e6e7d4872..382666368 100644
--- a/vendor/gix-url/src/parse.rs
+++ b/vendor/gix-url/src/parse.rs
@@ -1,25 +1,30 @@
-use std::{borrow::Cow, convert::Infallible};
-
-pub use bstr;
-use bstr::{BStr, BString, ByteSlice};
+use std::convert::Infallible;
use crate::Scheme;
+use bstr::{BStr, BString, ByteSlice};
-/// The Error returned by [`parse()`]
+/// The error returned by [parse()](crate::parse()).
#[derive(Debug, thiserror::Error)]
#[allow(missing_docs)]
pub enum Error {
- #[error("Could not decode URL as UTF8")]
- Utf8(#[from] std::str::Utf8Error),
- #[error(transparent)]
- Url(#[from] url::ParseError),
- #[error("URLs need to specify the path to the repository")]
- MissingResourceLocation,
- #[error("file URLs require an absolute or relative path to the repository")]
- MissingRepositoryPath,
- #[error("\"{url}\" is not a valid local path")]
- NotALocalFile { url: BString },
- #[error("Relative URLs are not permitted: {url:?}")]
+ #[error("{} \"{url}\" is not valid UTF-8", kind.as_str())]
+ Utf8 {
+ url: BString,
+ kind: UrlKind,
+ source: std::str::Utf8Error,
+ },
+ #[error("{} {url:?} can not be parsed as valid URL", kind.as_str())]
+ Url {
+ url: String,
+ kind: UrlKind,
+ source: url::ParseError,
+ },
+
+ #[error("The host portion of the following URL is too long ({} bytes, {len} bytes total): {truncated_url:?}", truncated_url.len())]
+ TooLong { truncated_url: BString, len: usize },
+ #[error("{} \"{url}\" does not specify a path to a repository", kind.as_str())]
+ MissingRepositoryPath { url: BString, kind: UrlKind },
+ #[error("URL {url:?} is relative which is not allowed in this context")]
RelativeUrl { url: String },
}
@@ -29,145 +34,229 @@ impl From<Infallible> for Error {
}
}
-fn str_to_protocol(s: &str) -> Scheme {
- Scheme::from(s)
+///
+#[derive(Debug, Clone, Copy)]
+pub enum UrlKind {
+ ///
+ Url,
+ ///
+ Scp,
+ ///
+ Local,
}
-fn guess_protocol(url: &[u8]) -> Option<&str> {
- match url.find_byte(b':') {
- Some(colon_pos) => {
- if url[..colon_pos].find_byteset(b"@.").is_some() {
- "ssh"
- } else {
- url.get(colon_pos + 1..).and_then(|from_colon| {
- (from_colon.contains(&b'/') || from_colon.contains(&b'\\')).then_some("file")
- })?
- }
+impl UrlKind {
+ fn as_str(&self) -> &'static str {
+ match self {
+ UrlKind::Url => "URL",
+ UrlKind::Scp => "SCP-like target",
+ UrlKind::Local => "local path",
}
- None => "file",
}
- .into()
}
-/// Extract the path part from an SCP-like URL `[user@]host.xz:path/to/repo.git/`
-fn extract_scp_path(url: &str) -> Option<&str> {
- url.splitn(2, ':').last()
+pub(crate) enum InputScheme {
+ Url { protocol_end: usize },
+ Scp { colon: usize },
+ Local,
}
-fn sanitize_for_protocol<'a>(protocol: &str, url: &'a str) -> Cow<'a, str> {
- match protocol {
- "ssh" => url.replacen(':', "/", 1).into(),
- _ => url.into(),
+pub(crate) fn find_scheme(input: &BStr) -> InputScheme {
+ // TODO: url's may only contain `:/`, we should additionally check if the characters used for
+ // protocol are all valid
+ if let Some(protocol_end) = input.find("://") {
+ return InputScheme::Url { protocol_end };
}
-}
-fn has_no_explicit_protocol(url: &[u8]) -> bool {
- url.find(b"://").is_none()
+ if let Some(colon) = input.find_byte(b':') {
+ // allow user to select files containing a `:` by passing them as absolute or relative path
+ // this is behavior explicitly mentioned by the scp and git manuals
+ let explicitly_local = &input[..colon].contains(&b'/');
+ let dos_driver_letter = cfg!(windows) && input[..colon].len() == 1;
+
+ if !explicitly_local && !dos_driver_letter {
+ return InputScheme::Scp { colon };
+ }
+ }
+
+ InputScheme::Local
}
-fn to_owned_url(url: url::Url) -> Result<crate::Url, Error> {
- let password = url.password();
+pub(crate) fn url(input: &BStr, protocol_end: usize) -> Result<crate::Url, Error> {
+ const MAX_LEN: usize = 1024;
+ let bytes_to_path = input[protocol_end + "://".len()..]
+ .iter()
+ .filter(|b| !b.is_ascii_whitespace())
+ .skip_while(|b| **b == b'/' || **b == b'\\')
+ .position(|b| *b == b'/')
+ .unwrap_or(input.len() - protocol_end);
+ if bytes_to_path > MAX_LEN || protocol_end > MAX_LEN {
+ return Err(Error::TooLong {
+ truncated_url: input[..(protocol_end + "://".len() + MAX_LEN).min(input.len())].into(),
+ len: input.len(),
+ });
+ }
+ let (input, url) = input_to_utf8_and_url(input, UrlKind::Url)?;
+ let scheme = url.scheme().into();
+
+ if matches!(scheme, Scheme::Git | Scheme::Ssh) && url.path().is_empty() {
+ return Err(Error::MissingRepositoryPath {
+ url: input.into(),
+ kind: UrlKind::Url,
+ });
+ }
+
+ if url.cannot_be_a_base() {
+ return Err(Error::RelativeUrl { url: input.to_owned() });
+ }
+
Ok(crate::Url {
serialize_alternative_form: false,
- scheme: str_to_protocol(url.scheme()),
- password: password.map(ToOwned::to_owned),
- user: if url.username().is_empty() && password.is_none() {
- None
- } else {
- Some(url.username().into())
- },
+ scheme,
+ user: url_user(&url),
+ password: url.password().map(Into::into),
host: url.host_str().map(Into::into),
port: url.port(),
path: url.path().into(),
})
}
-/// Parse the given `bytes` as git url.
-///
-/// # Note
-///
-/// We cannot and should never have to deal with UTF-16 encoded windows strings, so bytes input is acceptable.
-/// For file-paths, we don't expect UTF8 encoding either.
-pub fn parse(input: &BStr) -> Result<crate::Url, Error> {
- let guessed_protocol = guess_protocol(input).ok_or_else(|| Error::NotALocalFile { url: input.into() })?;
- let path_without_file_protocol = input.strip_prefix(b"file://");
- if path_without_file_protocol.is_some() || (has_no_explicit_protocol(input) && guessed_protocol == "file") {
- let path: BString = path_without_file_protocol.map_or_else(
- || input.into(),
- |stripped_path| {
- #[cfg(windows)]
- {
- if stripped_path.starts_with(b"/") {
- input
- .to_str()
- .ok()
- .and_then(|url| {
- let path = url::Url::parse(url).ok()?.to_file_path().ok()?;
- path.is_absolute().then(|| gix_path::into_bstr(path).into_owned())
- })
- .unwrap_or_else(|| stripped_path.into())
- } else {
- stripped_path.into()
- }
- }
- #[cfg(not(windows))]
- {
- stripped_path.into()
- }
- },
- );
- if path.is_empty() {
- return Err(Error::MissingRepositoryPath);
- }
- let input_starts_with_file_protocol = input.starts_with(b"file://");
- if input_starts_with_file_protocol {
- let wanted = cfg!(windows).then(|| &[b'\\', b'/'] as &[_]).unwrap_or(&[b'/']);
- if !wanted.iter().any(|w| path.contains(w)) {
- return Err(Error::MissingRepositoryPath);
- }
- }
- return Ok(crate::Url {
- scheme: Scheme::File,
- path,
- serialize_alternative_form: !input_starts_with_file_protocol,
- ..Default::default()
+pub(crate) fn scp(input: &BStr, colon: usize) -> Result<crate::Url, Error> {
+ let input = input_to_utf8(input, UrlKind::Scp)?;
+
+ // TODO: this incorrectly splits at IPv6 addresses, check for `[]` before splitting
+ let (host, path) = input.split_at(colon);
+ debug_assert_eq!(path.get(..1), Some(":"), "{path} should start with :");
+ let path = &path[1..];
+
+ if path.is_empty() {
+ return Err(Error::MissingRepositoryPath {
+ url: input.to_owned().into(),
+ kind: UrlKind::Scp,
});
}
- let url_str = std::str::from_utf8(input)?;
- let (mut url, mut scp_path) = match url::Url::parse(url_str) {
- Ok(url) => (url, None),
- Err(url::ParseError::RelativeUrlWithoutBase) => {
- // happens with bare paths as well as scp like paths. The latter contain a ':' past the host portion,
- // which we are trying to detect.
- (
- url::Url::parse(&format!(
- "{}://{}",
- guessed_protocol,
- sanitize_for_protocol(guessed_protocol, url_str)
- ))?,
- extract_scp_path(url_str),
- )
+ // The path returned by the parsed url often has the wrong number of leading `/` characters but
+ // should never differ in any other way (ssh URLs should not contain a query or fragment part).
+ // To avoid the various off-by-one errors caused by the `/` characters, we keep using the path
+ // determined above and can therefore skip parsing it here as well.
+ let url = url::Url::parse(&format!("ssh://{host}")).map_err(|source| Error::Url {
+ url: input.to_owned(),
+ kind: UrlKind::Scp,
+ source,
+ })?;
+
+ Ok(crate::Url {
+ serialize_alternative_form: true,
+ scheme: url.scheme().into(),
+ user: url_user(&url),
+ password: url.password().map(Into::into),
+ host: url.host_str().map(Into::into),
+ port: url.port(),
+ path: path.into(),
+ })
+}
+
+fn url_user(url: &url::Url) -> Option<String> {
+ if url.username().is_empty() && url.password().is_none() {
+ None
+ } else {
+ Some(url.username().into())
+ }
+}
+
+pub(crate) fn file_url(input: &BStr, protocol_colon: usize) -> Result<crate::Url, Error> {
+ let input = input_to_utf8(input, UrlKind::Url)?;
+ let input_after_protocol = &input[protocol_colon + "://".len()..];
+
+ let Some(first_slash) = input_after_protocol
+ .find('/')
+ .or_else(|| cfg!(windows).then(|| input_after_protocol.find('\\')).flatten())
+ else {
+ return Err(Error::MissingRepositoryPath {
+ url: input.to_owned().into(),
+ kind: UrlKind::Url,
+ });
+ };
+
+ // We cannot use the url crate to parse host and path because it special cases Windows
+ // driver letters. With the url crate an input of `file://x:/path/to/git` is parsed as empty
+ // host and with `x:/path/to/git` as path. This behavior is wrong for Git which only follows
+ // that rule on Windows and parses `x:` as host on Unix platforms. Additionally the url crate
+ // does not account for Windows special UNC path support.
+
+ // TODO: implement UNC path special case
+ let windows_special_path = if cfg!(windows) {
+ // Inputs created via url::Url::from_file_path contain an additional `/` between the
+ // protocol and the absolute path. Make sure we ignore that first slash character to avoid
+ // producing invalid paths.
+ let input_after_protocol = if first_slash == 0 {
+ &input_after_protocol[1..]
+ } else {
+ input_after_protocol
+ };
+ // parse `file://x:/path/to/git` as explained above
+ if input_after_protocol.chars().nth(1) == Some(':') {
+ Some(input_after_protocol)
+ } else {
+ None
}
- Err(err) => return Err(err.into()),
+ } else {
+ None
};
- // SCP like URLs without user parse as 'something' with the scheme being the 'host'. Hosts always have dots.
- if url.scheme().find('.').is_some() {
- // try again with prefixed protocol
- url = url::Url::parse(&format!("ssh://{}", sanitize_for_protocol("ssh", url_str)))?;
- scp_path = extract_scp_path(url_str);
- }
- if url.path().is_empty() && ["ssh", "git"].contains(&url.scheme()) {
- return Err(Error::MissingResourceLocation);
- }
- if url.cannot_be_a_base() {
- return Err(Error::RelativeUrl { url: url.into() });
- }
- let mut url = to_owned_url(url)?;
- if let Some(path) = scp_path {
- url.path = path.into();
- url.serialize_alternative_form = true;
+ let host = if windows_special_path.is_some() || first_slash == 0 {
+ // `file:///path/to/git` or a windows special case was triggered
+ None
+ } else {
+ // `file://host/path/to/git`
+ Some(&input_after_protocol[..first_slash])
+ };
+
+ // default behavior on Unix platforms and if no Windows special case was triggered
+ let path = windows_special_path.unwrap_or(&input_after_protocol[first_slash..]);
+
+ Ok(crate::Url {
+ serialize_alternative_form: false,
+ host: host.map(Into::into),
+ ..local(path.into())?
+ })
+}
+
+pub(crate) fn local(input: &BStr) -> Result<crate::Url, Error> {
+ if input.is_empty() {
+ return Err(Error::MissingRepositoryPath {
+ url: input.to_owned(),
+ kind: UrlKind::Local,
+ });
}
- Ok(url)
+
+ Ok(crate::Url {
+ serialize_alternative_form: true,
+ scheme: Scheme::File,
+ password: None,
+ user: None,
+ host: None,
+ port: None,
+ path: input.to_owned(),
+ })
+}
+
+fn input_to_utf8(input: &BStr, kind: UrlKind) -> Result<&str, Error> {
+ std::str::from_utf8(input).map_err(|source| Error::Utf8 {
+ url: input.to_owned(),
+ kind,
+ source,
+ })
+}
+
+fn input_to_utf8_and_url(input: &BStr, kind: UrlKind) -> Result<(&str, url::Url), Error> {
+ let input = input_to_utf8(input, kind)?;
+ url::Url::parse(input)
+ .map(|url| (input, url))
+ .map_err(|source| Error::Url {
+ url: input.to_owned(),
+ kind,
+ source,
+ })
}
diff --git a/vendor/gix-url/src/scheme.rs b/vendor/gix-url/src/scheme.rs
index 1c5f04526..a50b735c7 100644
--- a/vendor/gix-url/src/scheme.rs
+++ b/vendor/gix-url/src/scheme.rs
@@ -24,7 +24,8 @@ pub enum Scheme {
impl<'a> From<&'a str> for Scheme {
fn from(value: &'a str) -> Self {
match value {
- "ssh" => Scheme::Ssh,
+ // "ssh+git" and "git+ssh" are legacy, but Git still allows them and so should we
+ "ssh" | "ssh+git" | "git+ssh" => Scheme::Ssh,
"file" => Scheme::File,
"git" => Scheme::Git,
"http" => Scheme::Http,
diff --git a/vendor/gix-url/tests/baseline/main.rs b/vendor/gix-url/tests/baseline/main.rs
deleted file mode 100644
index 7843e6e18..000000000
--- a/vendor/gix-url/tests/baseline/main.rs
+++ /dev/null
@@ -1,217 +0,0 @@
-use bstr::ByteSlice;
-use libtest_mimic::{Arguments, Failed, Trial};
-
-fn main() {
- // We do not need to set this hook back to its default, because this test gets compiled to its
- // own binary and does therefore not interfere with other tests.
- std::panic::set_hook(Box::new(|_| {}));
-
- let args = Arguments::from_args();
- let tests = get_baseline_test_cases();
-
- libtest_mimic::run(&args, tests).exit();
-}
-
-fn get_baseline_test_cases() -> Vec<Trial> {
- baseline::URLS
- .iter()
- .map(|(url, expected)| {
- Trial::test(
- format!("baseline {}", url.to_str().expect("url is valid utf-8")),
- move || {
- std::panic::catch_unwind(|| {
- assert_urls_equal(expected, &gix_url::parse(url).expect("valid urls can be parsed"))
- })
- .map_err(|err| {
- // Succeeds whenever `panic!` was given a string literal (for example if
- // `assert!` is given a string literal).
- match err.downcast_ref::<&str>() {
- Some(panic_message) => panic_message.into(),
- None => {
- // Succeeds whenever `panic!` was given an owned String (for
- // example when using the `format!` syntax and always for
- // `assert_*!` macros).
- match err.downcast_ref::<String>() {
- Some(panic_message) => panic_message.into(),
- None => Failed::without_message(),
- }
- }
- }
- })
- },
- )
- .with_ignored_flag(true /* currently most of these fail */)
- })
- .collect::<_>()
-}
-
-fn assert_urls_equal(expected: &baseline::GitDiagUrl<'_>, actual: &gix_url::Url) {
- assert_eq!(
- gix_url::Scheme::from(expected.protocol.to_str().unwrap()),
- actual.scheme
- );
-
- match expected.host {
- baseline::GitDiagHost::NonSsh { host_and_port } => match host_and_port {
- Some(host_and_port) => {
- assert!(actual.host().is_some());
-
- let mut gix_host_and_port = String::with_capacity(host_and_port.len());
-
- if let Some(user) = actual.user() {
- gix_host_and_port.push_str(user);
- gix_host_and_port.push('@');
- }
-
- gix_host_and_port.push_str(actual.host().unwrap());
-
- if let Some(port) = actual.port {
- gix_host_and_port.push(':');
- gix_host_and_port.push_str(&port.to_string());
- }
-
- assert_eq!(host_and_port, gix_host_and_port);
- }
- None => {
- assert!(actual.host().is_none());
- assert!(actual.port.is_none());
- }
- },
- baseline::GitDiagHost::Ssh { user_and_host, port } => {
- match user_and_host {
- Some(user_and_host) => {
- assert!(actual.host().is_some());
-
- let mut gix_user_and_host = String::with_capacity(user_and_host.len());
- if let Some(user) = actual.user() {
- gix_user_and_host.push_str(user);
- gix_user_and_host.push('@');
- }
- gix_user_and_host.push_str(actual.host().unwrap());
-
- assert_eq!(user_and_host, gix_user_and_host);
- }
- None => {
- assert!(actual.host().is_none());
- assert!(actual.user().is_none());
- }
- }
- match port {
- Some(port) => {
- assert!(actual.port.is_some());
- assert_eq!(port, actual.port.unwrap().to_string());
- }
- None => {
- assert!(actual.port.is_none());
- }
- }
- }
- }
-
- match expected.path {
- Some(path) => {
- assert_eq!(path, actual.path);
- }
- None => {
- // I guess? This case does not happen a single time in the current fixtures...
- assert!(actual.path.is_empty());
- }
- }
-}
-
-mod baseline {
- use bstr::{BStr, BString, ByteSlice};
- use gix_testtools::once_cell::sync::Lazy;
-
- static BASELINE: Lazy<BString> = Lazy::new(|| {
- let base = gix_testtools::scripted_fixture_read_only("make_baseline.sh").unwrap();
- BString::from(std::fs::read(base.join("git-baseline.generic")).expect("fixture file exists"))
- });
-
- pub static URLS: Lazy<Vec<(&'static BStr, GitDiagUrl<'static>)>> = Lazy::new(|| {
- let mut out = Vec::new();
-
- let url_block = BASELINE
- .split(|c| c == &b';')
- .filter(|url| !url.is_empty())
- .map(ByteSlice::trim);
-
- for block in url_block {
- let (url, diag_url) = GitDiagUrl::parse(block.as_bstr());
- out.push((url, diag_url));
- }
- out
- });
-
- #[derive(Debug)]
- pub struct GitDiagUrl<'a> {
- pub protocol: &'a BStr,
- pub host: GitDiagHost<'a>,
- pub path: Option<&'a BStr>,
- }
-
- impl GitDiagUrl<'_> {
- /// Parses the given string into a [GitDiagUrl] according to the format
- /// specified in [Git's `connect.c`][git_src].
- ///
- /// [git_src]: https://github.com/git/git/blob/master/connect.c#L1415
- fn parse(diag_url: &BStr) -> (&'_ BStr, GitDiagUrl<'_>) {
- let mut lines = diag_url.lines().map(ByteSlice::trim);
- let mut next_attr = |name: &str| {
- lines
- .next()
- .expect("well-known format")
- .strip_prefix(format!("Diag: {name}=").as_bytes())
- .expect("attribute is at the correct location")
- .as_bstr()
- };
-
- let url = next_attr("url");
- let protocol = next_attr("protocol");
-
- let host = if protocol == "ssh" {
- let user_and_host = next_attr("userandhost");
- let port = next_attr("port");
- GitDiagHost::Ssh {
- user_and_host: if user_and_host == "NULL" {
- None
- } else {
- Some(user_and_host)
- },
- port: if port == "NONE" { None } else { Some(port) },
- }
- } else {
- let host_and_port = next_attr("hostandport");
- GitDiagHost::NonSsh {
- host_and_port: if host_and_port == "NULL" {
- None
- } else {
- Some(host_and_port)
- },
- }
- };
-
- let path = next_attr("path");
- assert!(lines.next().is_none(), "we consume everything");
- (
- url,
- GitDiagUrl {
- protocol,
- host,
- path: if path == "NULL" { None } else { Some(path) },
- },
- )
- }
- }
-
- #[derive(Debug)]
- pub enum GitDiagHost<'a> {
- NonSsh {
- host_and_port: Option<&'a BStr>,
- },
- Ssh {
- user_and_host: Option<&'a BStr>,
- port: Option<&'a BStr>,
- },
- }
-}
diff --git a/vendor/gix-worktree/.cargo-checksum.json b/vendor/gix-worktree/.cargo-checksum.json
index 6f3364629..d05846bb1 100644
--- a/vendor/gix-worktree/.cargo-checksum.json
+++ b/vendor/gix-worktree/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"3371d15a605196c4184b9f1091271e1dcbd15bacb24bdffaccf018f5036f9b04","Cargo.toml":"1627d1b359c58caa675f7098a8e2276d9f5563bfd36a5fa315ee7a0ec1ddacfe","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/lib.rs":"05c141d039a666eb2c16fe9ca3169ea05eaa345dcb0e177760259b4af3442852","src/stack/delegate.rs":"62c099bf3cff362844b2306d8d3b2abdb7db5224c8975d8a19f77b62d81e49fb","src/stack/mod.rs":"31fcc73e73a7b39515422a6d057acd7d2fcba70301ee736041430eeb1d327b5f","src/stack/platform.rs":"08826af920e873d8495d844b57286428b79d954eda0acc05181b469e953b28ff","src/stack/state/attributes.rs":"4fb3aaa51bd60e2d38e86b901cead2d8085b2dc12866e2061a9ba37a5d36275c","src/stack/state/ignore.rs":"93affcabaf9bd0c23d047b7fbaca45a7bfa0522064c45127e07079a26f894c51","src/stack/state/mod.rs":"af9a438581392c6334f642b4fc4c8da5d76d691e4c7eeb7d5447504256369e60"},"package":"9f5e32972801bd82d56609e6fc84efc358fa1f11f25c5e83b7807ee2280f14fe"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"633a8ec8c396a1fd07149c505048e6e59faaff85cecb2fab83e2f8794a3ff428","Cargo.toml":"af8df02f737cff9e04d2c6b60057dd2229361bd7d2cee70bbe4a8c96020d1707","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/lib.rs":"7bbe788826dd799aeddc696f213a17a0976321c5f181e3d836f9e3b420470793","src/stack/delegate.rs":"b1e1ea27aa30b923b6b599be8e47c83ab4198fb838712e72133e3951680a1783","src/stack/mod.rs":"bbe0e26b204698384cece1c6548f10a8e5403920173b644e65e47e56904e391f","src/stack/platform.rs":"08826af920e873d8495d844b57286428b79d954eda0acc05181b469e953b28ff","src/stack/state/attributes.rs":"4fb3aaa51bd60e2d38e86b901cead2d8085b2dc12866e2061a9ba37a5d36275c","src/stack/state/ignore.rs":"93affcabaf9bd0c23d047b7fbaca45a7bfa0522064c45127e07079a26f894c51","src/stack/state/mod.rs":"00dd12c0032c75d6027af7549ecd144eee4134fa5a64b0d31f653192b7367e0e"},"package":"ddaf79e721dba64fe726a42f297a3c8ed42e55cdc0d81ca68452f2def3c2d7fd"} \ No newline at end of file
diff --git a/vendor/gix-worktree/CHANGELOG.md b/vendor/gix-worktree/CHANGELOG.md
index de794b02c..920422cb0 100644
--- a/vendor/gix-worktree/CHANGELOG.md
+++ b/vendor/gix-worktree/CHANGELOG.md
@@ -5,6 +5,38 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.27.0 (2023-10-12)
+
+### New Features (BREAKING)
+
+ - <csr-id-f1597756e5f6294f4757d90484f63e8d68bc05fa/> add `Stack::from_state_and_ignore_case()`.
+ It adds `Stack::from_state_and_ignore_case()` as utility to more easily instantiate
+ a stack the is configured correctly.
+ This also removes the `stack::State::for_status()` method as it's not actually
+ suitable for status retrieval per se.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 4 commits contributed to the release over the course of 8 calendar days.
+ - 17 days passed between releases.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Release gix-hash v0.13.1, gix-features v0.36.0, gix-actor v0.28.0, gix-object v0.38.0, gix-glob v0.14.0, gix-attributes v0.20.0, gix-command v0.2.10, gix-filter v0.6.0, gix-fs v0.8.0, gix-commitgraph v0.22.0, gix-revwalk v0.9.0, gix-traverse v0.34.0, gix-worktree-stream v0.6.0, gix-archive v0.6.0, gix-tempfile v11.0.0, gix-lock v11.0.0, gix-ref v0.38.0, gix-config v0.31.0, gix-url v0.25.0, gix-credentials v0.21.0, gix-diff v0.37.0, gix-discover v0.26.0, gix-ignore v0.9.0, gix-index v0.26.0, gix-mailmap v0.20.0, gix-negotiate v0.9.0, gix-pack v0.44.0, gix-odb v0.54.0, gix-pathspec v0.4.0, gix-packetline v0.16.7, gix-transport v0.37.0, gix-protocol v0.41.0, gix-revision v0.23.0, gix-refspec v0.19.0, gix-worktree v0.27.0, gix-status v0.2.0, gix-submodule v0.5.0, gix-worktree-state v0.4.0, gix v0.55.0, safety bump 37 crates ([`68e5432`](https://github.com/Byron/gitoxide/commit/68e54326e527a55dd5b5079921fc251615833040))
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+ - Merge branch 'reset' ([`b842691`](https://github.com/Byron/gitoxide/commit/b8426919a491dc3a7df01ee3f258fc0d8a3a327c))
+ - Add `Stack::from_state_and_ignore_case()`. ([`f159775`](https://github.com/Byron/gitoxide/commit/f1597756e5f6294f4757d90484f63e8d68bc05fa))
+</details>
+
## 0.26.0 (2023-09-24)
A maintenance release without user-facing changes.
@@ -13,7 +45,7 @@ A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
- - 1 commit contributed to the release.
+ - 2 commits contributed to the release.
- 15 days passed between releases.
- 0 commits were understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -25,6 +57,7 @@ A maintenance release without user-facing changes.
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix-features v0.35.0, gix-actor v0.27.0, gix-object v0.37.0, gix-glob v0.13.0, gix-attributes v0.19.0, gix-filter v0.5.0, gix-fs v0.7.0, gix-commitgraph v0.21.0, gix-revwalk v0.8.0, gix-traverse v0.33.0, gix-worktree-stream v0.5.0, gix-archive v0.5.0, gix-tempfile v10.0.0, gix-lock v10.0.0, gix-ref v0.37.0, gix-config v0.30.0, gix-url v0.24.0, gix-credentials v0.20.0, gix-diff v0.36.0, gix-discover v0.25.0, gix-ignore v0.8.0, gix-index v0.25.0, gix-mailmap v0.19.0, gix-negotiate v0.8.0, gix-pack v0.43.0, gix-odb v0.53.0, gix-pathspec v0.3.0, gix-transport v0.37.0, gix-protocol v0.40.0, gix-revision v0.22.0, gix-refspec v0.18.0, gix-status v0.1.0, gix-submodule v0.4.0, gix-worktree v0.26.0, gix-worktree-state v0.3.0, gix v0.54.0, gitoxide-core v0.32.0, gitoxide v0.30.0, safety bump 37 crates ([`7891fb1`](https://github.com/Byron/gitoxide/commit/7891fb17348ec2f4c997665f9a25be36e2713da4))
- Prepare changelogs prior to release ([`8a60d5b`](https://github.com/Byron/gitoxide/commit/8a60d5b80877c213c3b646d3061e8a33e0e433ec))
</details>
diff --git a/vendor/gix-worktree/Cargo.toml b/vendor/gix-worktree/Cargo.toml
index 5b8133ecf..74bfb3430 100644
--- a/vendor/gix-worktree/Cargo.toml
+++ b/vendor/gix-worktree/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix-worktree"
-version = "0.26.0"
+version = "0.27.0"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
include = [
"src/**/*",
@@ -47,29 +47,29 @@ version = "0.2.0"
optional = true
[dependencies.gix-attributes]
-version = "^0.19.0"
+version = "^0.20.0"
optional = true
[dependencies.gix-features]
-version = "^0.35.0"
+version = "^0.36.0"
[dependencies.gix-fs]
-version = "^0.7.0"
+version = "^0.8.0"
[dependencies.gix-glob]
-version = "^0.13.0"
+version = "^0.14.0"
[dependencies.gix-hash]
-version = "^0.13.0"
+version = "^0.13.1"
[dependencies.gix-ignore]
-version = "^0.8.0"
+version = "^0.9.0"
[dependencies.gix-index]
-version = "^0.25.0"
+version = "^0.26.0"
[dependencies.gix-object]
-version = "^0.37.0"
+version = "^0.38.0"
[dependencies.gix-path]
version = "^0.10.0"
diff --git a/vendor/gix-worktree/src/lib.rs b/vendor/gix-worktree/src/lib.rs
index 32d1d7c0e..b8e2e8974 100644
--- a/vendor/gix-worktree/src/lib.rs
+++ b/vendor/gix-worktree/src/lib.rs
@@ -10,6 +10,7 @@
#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
#![deny(missing_docs, rust_2018_idioms, unsafe_code)]
use bstr::BString;
+pub use gix_glob;
/// A cache for efficiently executing operations on directories and files which are encountered in sorted order.
/// That way, these operations can be re-used for subsequent invocations in the same directory.
diff --git a/vendor/gix-worktree/src/stack/delegate.rs b/vendor/gix-worktree/src/stack/delegate.rs
index 28d8ecf34..8e48057de 100644
--- a/vendor/gix-worktree/src/stack/delegate.rs
+++ b/vendor/gix-worktree/src/stack/delegate.rs
@@ -56,7 +56,7 @@ impl<'a, 'find> gix_fs::stack::Delegate for StackDelegate<'a, 'find> {
};
match &mut self.state {
#[cfg(feature = "attributes")]
- State::CreateDirectoryAndAttributesStack { attributes, .. } => {
+ State::CreateDirectoryAndAttributesStack { attributes, .. } | State::AttributesStack(attributes) => {
attributes.push_directory(
stack.root(),
stack.current(),
@@ -89,16 +89,6 @@ impl<'a, 'find> gix_fs::stack::Delegate for StackDelegate<'a, 'find> {
&mut self.statistics.ignore,
)?
}
- #[cfg(feature = "attributes")]
- State::AttributesStack(attributes) => attributes.push_directory(
- stack.root(),
- stack.current(),
- rela_dir,
- self.buf,
- self.id_mappings,
- &mut self.find,
- &mut self.statistics.attributes,
- )?,
State::IgnoreStack(ignore) => ignore.push_directory(
stack.root(),
stack.current(),
@@ -139,7 +129,7 @@ impl<'a, 'find> gix_fs::stack::Delegate for StackDelegate<'a, 'find> {
self.statistics.delegate.pop_directory += 1;
match &mut self.state {
#[cfg(feature = "attributes")]
- State::CreateDirectoryAndAttributesStack { attributes, .. } => {
+ State::CreateDirectoryAndAttributesStack { attributes, .. } | State::AttributesStack(attributes) => {
attributes.pop_directory();
}
#[cfg(feature = "attributes")]
@@ -147,10 +137,6 @@ impl<'a, 'find> gix_fs::stack::Delegate for StackDelegate<'a, 'find> {
attributes.pop_directory();
ignore.pop_directory();
}
- #[cfg(feature = "attributes")]
- State::AttributesStack(attributes) => {
- attributes.pop_directory();
- }
State::IgnoreStack(ignore) => {
ignore.pop_directory();
}
diff --git a/vendor/gix-worktree/src/stack/mod.rs b/vendor/gix-worktree/src/stack/mod.rs
index c10320199..228467f5b 100644
--- a/vendor/gix-worktree/src/stack/mod.rs
+++ b/vendor/gix-worktree/src/stack/mod.rs
@@ -77,6 +77,27 @@ impl Stack {
statistics: Statistics::default(),
}
}
+
+ /// Create a new stack that takes into consideration the `ignore_case` result of a filesystem probe in `root`. It takes a configured
+ /// `state` to control what it can do, while initializing attribute or ignore files that are to be queried from the ODB using
+ /// `index` and `path_backing`.
+ ///
+ /// This is the easiest way to correctly setup a stack.
+ pub fn from_state_and_ignore_case(
+ root: impl Into<PathBuf>,
+ ignore_case: bool,
+ state: State,
+ index: &gix_index::State,
+ path_backing: &gix_index::PathStorageRef,
+ ) -> Self {
+ let case = if ignore_case {
+ gix_glob::pattern::Case::Fold
+ } else {
+ gix_glob::pattern::Case::Sensitive
+ };
+ let attribute_files = state.id_mappings_from_index(index, path_backing, case);
+ Stack::new(root, state, case, Vec::with_capacity(512), attribute_files)
+ }
}
/// Entry points for attribute query
diff --git a/vendor/gix-worktree/src/stack/state/mod.rs b/vendor/gix-worktree/src/stack/state/mod.rs
index 0b371425a..30e3c609f 100644
--- a/vendor/gix-worktree/src/stack/state/mod.rs
+++ b/vendor/gix-worktree/src/stack/state/mod.rs
@@ -71,11 +71,6 @@ impl State {
pub fn for_add(attributes: Attributes, ignore: Ignore) -> Self {
State::AttributesAndIgnoreStack { attributes, ignore }
}
-
- /// Configure a state for status retrieval, which needs access to ignore files only.
- pub fn for_status(ignore: Ignore) -> Self {
- State::IgnoreStack(ignore)
- }
}
/// Utilities
diff --git a/vendor/gix/.cargo-checksum.json b/vendor/gix/.cargo-checksum.json
index 4c3735e08..7ac96fdd7 100644
--- a/vendor/gix/.cargo-checksum.json
+++ b/vendor/gix/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"1d19c01836b4304d7ff947d7d708c920c82bb3e890c409bc3a595f04e8a53f7c","Cargo.lock":"a6d5cde82a8ae844af84ae8aeea87244b431b9d89625e5fcc7fd75659dd40a0b","Cargo.toml":"411958a94d8058aaffc2ba36b91605162a10d5387475e58cf8f48e49eedb874c","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/assets/init/HEAD":"28d25bf82af4c0e2b72f50959b2beb859e3e60b9630a5e8c603dad4ddb2b6e80","src/assets/init/description":"47aad2f8621afc777c66085c31f5ed14656df9bcfa5a2ae445680f175d0d2d0c","src/assets/init/hooks/applypatch-msg.sample":"1ae81b995a5c8c54582e1977084babed1e947a5a5c247ad29563142e432955ab","src/assets/init/hooks/commit-msg.sample":"b1451a4c89ee4406ba56f003a7e3d142e24a7452861fddddc23bfc77163c8650","src/assets/init/hooks/docs.url":"4424200fb80650f5063a3ec0a3864af4aaa3103f1319fe576b64d3bfc74f8a67","src/assets/init/hooks/fsmonitor-watchman.sample":"99ed87d785ada3687b4d86b8d9aa562f3430ce7061834e5381166b6a35a0d495","src/assets/init/hooks/post-update.sample":"e6d88132de729f20c45f66c2df51cc2e223a4b8b1512a2ce1cfdd0033ee53e53","src/assets/init/hooks/pre-applypatch.sample":"4c9754cac1c73109e4113ffd76070ae528a42667a85135e87fb826d572d13a4c","src/assets/init/hooks/pre-commit.sample":"1dd0fb2a11956784eb184e72af2fd87feca9050903400f163b90d4db7f19ce78","src/assets/init/hooks/pre-merge-commit.sample":"fca192309544e8e23638bd0987be7a5d00e271599b55382c1c6a4812070da223","src/assets/init/hooks/pre-push.sample":"0e6762e0b35b2475849d11c71d504cfae10cab2be0b947d7caa1e0d5959f2cec","src/assets/init/hooks/pre-rebase.sample":"d7c629ddbaa5f984d21c97a14889599d2019230220d3459aa103648316500968","src/assets/init/hooks/prepare-commit-msg.sample":"f804b4efd22ef832b49506a815a6a6b1103b8f77b6d6556fc3756232727396d8","src/assets/init/info/exclude":"df4c844761dc873ca9ea2f6fabcc2e2460b2f804ca65f8470e39ffbda7c3446e","src/attribute_stack.rs":"835abb1ed1477b26d6e57eb25b418096ad09b3c2d4781bc5f21bf72741846a42","src/clone/access.rs":"285795cc8f32a66cfb7a98ad7458dad29415ef8331eff995ca0b87a63aa39410","src/clone/checkout.rs":"bfb9f26cb9e471e0af0cdcd417a87bbbf28f4f7cabe3443480be5471f35c0be1","src/clone/fetch/mod.rs":"f00acfadcd4f9a1759ca029593be6692a1a913b5b41308464d163e9eac2f6bbe","src/clone/fetch/util.rs":"27ab217f25aa73690e3a31acf5655bd412c1f47653860bcb6a9a668d0b7ef01d","src/clone/mod.rs":"f4238d146b6cd29bbb12c77f08efc25efd33f50eb4834daecead2176154fab79","src/commit.rs":"3cf4f1f485c025982e9bb398c48d356af321d9fd8775de7c1a911de1052a1ece","src/config/cache/access.rs":"d7942372d42748ee5a04c8cb8dbff8c0fcb710109c9b56f53eb4edfe0ac0914c","src/config/cache/incubate.rs":"75a949861c7c2d11eec84dea92c80059b68a6ebedaf399690305544836e0a7d3","src/config/cache/init.rs":"37fee4c9c661a37d2186940b832c2a067cfcaa2ea9ebc185ce8fb4bbb6ec72f5","src/config/cache/mod.rs":"3cce2cf0fafbc4f828870b85fef411a826ad6d1fe3ac5b6cbd2f5e049331aebf","src/config/cache/util.rs":"6dbd15b84e47d3d32c6535d1b9f6a9ad73171137411d5a8bb764c5d1f60b005e","src/config/mod.rs":"7895c0860c3b84faaf5df05a2cf06065fc2ade4b0e01e1322040713b559d8d67","src/config/overrides.rs":"ca3b08e3ab4d292c904ef3a0746e937c4e90440ae19389b03321c5645177e39e","src/config/snapshot/_impls.rs":"edae9b731c69828effbdfe01d32b7caa8c536df81d33de1cb67b88ece01a7218","src/config/snapshot/access.rs":"c08dfa7bb0c969913efb6e08692203c5bed7ef2502053a89f6181846aec5918a","src/config/snapshot/credential_helpers.rs":"cd269ffb60aab86a752839294b3514b31bd59de5b4ae941f25111dfba25aad33","src/config/snapshot/mod.rs":"21f6eaeb511e470df6f3d8948dfd65b688741b39d534fbaf78e3ee620bc6a5c5","src/config/tree/keys.rs":"16b9625821e1d7bba9dc79181fbf34b0266cea4ffda5108c36fd23325c157253","src/config/tree/mod.rs":"be9654a1c844b8444c2f5d0003937fbc06bae7f934073eb206e0541df3b81425","src/config/tree/sections/author.rs":"a27cf6ad5150aa5ccbd64d2786183983e1567c094a221b016875864c9e8f6980","src/config/tree/sections/branch.rs":"105211bb0eefbdc718923d5e770261889163a5d61dc8f0c22af33473cfb32100","src/config/tree/sections/checkout.rs":"329ebe10cca7c5414f9e6229d6dce3178cdb5821a1b7e72bbfac3a60b5b42dc2","src/config/tree/sections/clone.rs":"bbc86890044721ac34ae7610b14987035ab8714c856cec2787fae49c286a6d6d","src/config/tree/sections/committer.rs":"2f99b8bc6e2c4ad9bdba3a85bc6b717acb5b09d1ada2723d3ba5954f804368eb","src/config/tree/sections/core.rs":"e5f04b31611fab9252ff0f00b8e95e1e06ad36c0e5e8fcc2fa5495537152c9f4","src/config/tree/sections/credential.rs":"e1ce72dc24b9d2f06827b9fc6e8c963f888844ab5a4b48f6d867ad8542909b94","src/config/tree/sections/diff.rs":"9c577772d544d9c9c0d06485955aecab0c64d8e1a0117e71a33f75dd281baa83","src/config/tree/sections/extensions.rs":"f73c444f2e2c8fbc8d1b1991c0d63532c792362e42833f3ae06059c07387cf66","src/config/tree/sections/fetch.rs":"437a6a13df2e1da4a06e9a28d9da020eccab395f13150d398e94bf4cd3e690f8","src/config/tree/sections/gitoxide.rs":"a483361a58e3221bbaf64847cfe70698fc4a73d24ce80875e4970af889fbf5b7","src/config/tree/sections/http.rs":"58c9a9b8abcee4066eb4e20f9679dbbf888c04c21f4dbfff0d2ad7f0a18d4fcd","src/config/tree/sections/index.rs":"30166326b339c9d0b171ebfd1c1f0fb90e38dc8b2edcd66dfead2a87c38eb938","src/config/tree/sections/init.rs":"e87e33ac5091797bde302f78c8fb7cefce0fb1752610409c1db53c3f7b4179af","src/config/tree/sections/mod.rs":"31f480fde038af3532667fb3ff511b6b978de262fa6cef4e19e1e64655060bc8","src/config/tree/sections/pack.rs":"0a6dcdc7603b0d7a84159a70789b63b6c26d539f98808c520a8e644fc9dbd2f3","src/config/tree/sections/protocol.rs":"feae4977f6576adb446d0599f018d41421a7b1b0871a74e8fcfe5e2b7104de74","src/config/tree/sections/remote.rs":"eb06d89125dc72b5754b642cf561e6e430cad4fbbd57dcd1049d306291afc41f","src/config/tree/sections/safe.rs":"4e96f49ff56d6ebb8944406fe2ae3c4a1fa80c5383f08935015ddc6036b583c3","src/config/tree/sections/ssh.rs":"7db83236912bcb7aa1770f0eb1a388ee0fac94c1548bd9a19051b34c25622841","src/config/tree/sections/url.rs":"e342edcd20979feaf54663a919a0751aaf32b4e1f2e47cf5d028faec62e6b731","src/config/tree/sections/user.rs":"8f02172a5db830832b4edf28693fdef33cece6ba1990c4d7a338e4c9291375ab","src/config/tree/traits.rs":"524f1752e9131c27db3a9016ee6c3abc61175345c2167426ffd5a41602cb950d","src/create.rs":"7da6fbdf8c18a32ad4ab9cea8a062fb8aadb08d8478c9d1c3de09c7e6e4448fe","src/diff.rs":"52bc752a2a8decff56b7a41d1ae97b90c0f3422332f999ced67fc884d6b25d18","src/discover.rs":"41631f880b7880f62d77bfb0511f4d85a82a574ca5f53b8cb8fe35edd5b886f6","src/env.rs":"57da96b315b6fe057a326639cd3e85849793449c4c8f3477b79a032b1a029b31","src/ext/mod.rs":"cc6a4c10c2eb53eb261e0186ee51411dada06bbb245c205356fce1de9d4628f5","src/ext/object_id.rs":"a70afd79c84731df0023d738332b3688a2adbcbdda802f8ee70297fc8fe0ca38","src/ext/reference.rs":"a51fe4f63e5708afa4fbabd13638b88c34845a64263db77308cd1b974a0f325f","src/ext/rev_spec.rs":"c196f21a3981b7ad84e9385ba3924a554accf9c7a3b4f8e2bba13cb74f108ec8","src/ext/tree.rs":"60753a38cfd6cbb43b794236de0258a5af40f0a88864dde9e1f7d6cdb8cbb04f","src/filter.rs":"5f106fe06646beb2beb3f181258e7b717f7b3111ed41380c5e22fb3db215bd89","src/head/log.rs":"0de9d5f834b633756001bdd246e98266084d521d7f775537e6e6ead5ed93d7e4","src/head/mod.rs":"5be9b17e6ffb5dd4c9548b8a4d9e25d6ab6600450762293c43ca0bcbd2a6284f","src/head/peel.rs":"4d92eb96c94abfcc653fbd00fcb0800985105d9b7804f5dbe81756da3b8b8bae","src/id.rs":"1f5f97d24d8c00460d085e2815c08b89632ae1e3cde283a4362798cc4b1276ea","src/init.rs":"ac6f329feb2d33cd8a5f0ce21bb77a166e18656a9952d4cba147196242558c9a","src/interrupt.rs":"217d8611ebe2932e7cb52f77a90cec4a6dbe0bd69eb16b951a70fbd8b5e95853","src/lib.rs":"28fabd0194e9cb3168a46f6552752dd02f21736dc42b301653e74ae619d21428","src/mailmap.rs":"415301bdcb3d6991675c7ea86a92eea152cf65df7b2d14da4b58b3b605039e4e","src/object/blob.rs":"5b613976f017190b857e1ace8140ae0b2656da5d94389dfc84525919eeea54f6","src/object/commit.rs":"533da4ff0639db444548bcb3345fb34db505af997dd477f7ad53a8000ef24e75","src/object/errors.rs":"b2b456480e10dc4cdd213650dacb619d96bd9770e19d6042a80621991acd5255","src/object/impls.rs":"6b9f76d332da496148adaa9b5b5de5dcf98c3fd92deba245dd2e6c2a3895eb77","src/object/mod.rs":"158263fe6f6a8db6ecebc741dac012a517508d5041e70909228e1c0ae9cee1c7","src/object/peel.rs":"c23ac9baac1216d9320c71926f56548d18f7f3964bdbcccd8ca81f6b756f7ad9","src/object/tag.rs":"b40e2b908de9dd500d297f1bcbd969facfe7beadcf62cc6a7cb975169f2da8be","src/object/tree/diff/change.rs":"95df7e1fb3b58fa2a0086f205c39940fb590ccdac92aee53a6cff5f29181f30c","src/object/tree/diff/for_each.rs":"da534722f9dbfdf26e66dc564de0c7e694e92cf54f33e29f3364ed056cea8c78","src/object/tree/diff/mod.rs":"672ef727e70da7a6f214e59ea45b16833c68c5b57a95fe7e71c89aac054eaaf4","src/object/tree/diff/rewrites.rs":"d91983f629bf3f0256da17d0067daf8271503345423f725d3a23fb5a40eac4d2","src/object/tree/diff/tracked.rs":"4b8226a3722b08e41b00c800efc81ee611f801cf42606203c26d568f2d6d16fa","src/object/tree/iter.rs":"cf3ae9dfd5018b55228ccc0b4b707b39a3fa2c5d2b130e209da5dcf9080e10ca","src/object/tree/mod.rs":"b0ba34a7227ce7ff82cc7686061251e8e6789d9ef04f5b9d6590cc5242488909","src/object/tree/traverse.rs":"ae0342857d42b6afb82167423dfdac9611ce1b7281b6b9b542e230960c564c0f","src/open/mod.rs":"d25c11246536e7d57172b375569bd8545b8060f13bbfbc49cbf0f85636627076","src/open/options.rs":"1ffda0517724d1328b2fb296a782d89305a482be65ed24a1d9d867bead8eb5a5","src/open/permissions.rs":"5a55970e738ba7a9af7b51cdeb03955af533b3306baaef278b398cf99f8a312b","src/open/repository.rs":"ae4100ee1dd30890d961dc12a57dcf03dee1ffa9a99c54a6704dde5493416764","src/path.rs":"3cd4c92a626384f8f4db89b2f7594923b922d7b841681c167748a01abc7dc3f7","src/pathspec.rs":"bddfa7360ee13ac72a97fa0e1388c9605518da3fc96fd35e76e245f25b73b813","src/prelude.rs":"8dc6fa25bb01fbc1e012364949982e406b17ab22bde464e154f12286fba293cf","src/progress.rs":"a9ba8ec6cc21eea78121b02d1feaba8f6aab04be441bfe8be9f3dffe4c5e0ba5","src/reference/edits.rs":"5d857cd65d7415d4de5aed1ea8acc9c227000a71b2e202293546cd23be1f62b2","src/reference/errors.rs":"f0699048b34163a8e9fb19306827f16dd0d8376660787646ee75e73c70fe7497","src/reference/iter.rs":"1feb3aaed665b39780136f0d703f67f4b34f6239e90cd2a0c632aad40523e025","src/reference/log.rs":"f1eab69b8272b15bd23beeb68e88a8b53f003f74d86783196b2de4a84f0497fd","src/reference/mod.rs":"1920cf8657100d1ea50efdc510333fc073ae756d9778553d06ee0a17ea5f4414","src/reference/remote.rs":"4467c1bf9d463d1781a3254a3874c7fc763201e33d51e1a92a6f0dcbc6776135","src/remote/access.rs":"76e75baca0155710c2eea0e439df0774ecb0cd6c7e6b950876dd9e6e75be5e9f","src/remote/build.rs":"0bfcf98ee6b96c401a410c71b749426e84a78c17eff944ea7d6229ef2dc3e5e8","src/remote/connect.rs":"a147cf33f7ac1413e07d7b5aae0c6a557ee9b29f9172e7ea2413446d670ac71b","src/remote/connection/access.rs":"075f04705680959074cf3db6856bf34180d68d1a3065011ca56b67a861e2b168","src/remote/connection/fetch/config.rs":"93b1392fdc409dba073e96272f13ad7ab996522d59df819edc800431ee36975b","src/remote/connection/fetch/error.rs":"21ccf5ff0cba287247581849c510aa3dd1acdd510cfbb858a579dd85b2c7b050","src/remote/connection/fetch/mod.rs":"c88b8b968debe3192ecc6a5e46a1587f590b1ae45b76df4c13d8a64df956860c","src/remote/connection/fetch/negotiate.rs":"7258ddb2d5adf92f5041709bda16f1d19313ec867717ed270c6a191fdc92b3b9","src/remote/connection/fetch/receive_pack.rs":"d3d4809a7e4ae52868d5975c5de8d16e1218f662ee83e35498291ee582accdc9","src/remote/connection/fetch/update_refs/mod.rs":"f28b33d42f0992b3e91b7eba3672d6fe4d41811f8ea170e9bf11fac688c6e882","src/remote/connection/fetch/update_refs/tests.rs":"69a25df4dc1f84b5a7cb603e2451114cf0a7e356c026317995f3d14bfd07a345","src/remote/connection/fetch/update_refs/update.rs":"729ae1cfef895df37ae5a34c19d9aac9b77e664f107f3adf81a79ae58412e960","src/remote/connection/mod.rs":"863f4a7f2476f5b5d8622959d5069424decea29ba7f66619f679344e6fb5a5d1","src/remote/connection/ref_map.rs":"35913d6c4d8976025ff880ac71bd8e5af0b73fd83e6ca53be1ec275b6dc009e4","src/remote/errors.rs":"6c4986618c55c2a86e4623b02837918dc61849c3d634e7d474a123eb7e01bcbc","src/remote/fetch.rs":"cf78b682074ad700ea6eb4d511401a737a905bd4af0dcfd639b7f850227f5978","src/remote/init.rs":"87576486ae399945b2134dbce70e960ff4c2b3a3046988449f6da0c25f6d646c","src/remote/mod.rs":"14a1532470cc76cf3b727657439923f3515dd781ebfc7030d9481056c6bbf162","src/remote/name.rs":"9fa7e81a157375ecb40ddfba5da850fef7513296a68014a50f5148d57f40b8b7","src/remote/save.rs":"a8b2160cde235c9a2ecddc0181d1cca57a01e046eae8d3b11fa7b29e43ca6866","src/remote/url/mod.rs":"a3279f5330fc83193e583f2b839ab08006c293b0040db6cc74969d50813fbbaa","src/remote/url/rewrite.rs":"4d43167909020458abc5e3e7310e3efaddb9fc7c783581fbc9422fa8b057d95d","src/remote/url/scheme_permission.rs":"4f6e528260c67af54171477d97707050f048c0c35e77f088f8ddc4ae135e6386","src/repository/attributes.rs":"6c28910869eafda6c4c9d6a2b06a2a881f2d5fcf6f5c084ac501850ced2af810","src/repository/cache.rs":"72d41c8f90d2e49c10b884582613fa5941ea0e1d15cc7d0a4d0d7be0b0243d4d","src/repository/config/mod.rs":"b6d7d9b3fb86f0e76cc585efb110aec0bdee4b82c8bdbe6a3bb67d65ffd31de9","src/repository/config/transport.rs":"78683c40947e95d9835809d6b9adc89bbce4e8a06345279c56554b2a76dc4e7c","src/repository/filter.rs":"cc65692a78e3cc28166f595d3bf05c0d3f12757fc8d320512638f6edb724c209","src/repository/graph.rs":"07763932b3215ac25e3981a60ab0750449af992475da7fd47bb0412cdf0fc727","src/repository/identity.rs":"0d7c575578eef869d16d99ce465696f41b1c7e8d2bdba93945219d7453b3d717","src/repository/impls.rs":"b07dd79074b3a175df1ec43042c6cd0ad98b884885e25deae6828a59cc290e2a","src/repository/index.rs":"44e74a6f5be41da88a42a1b5fc5f9b4a70fb42302696a6b4394822fab918ba05","src/repository/init.rs":"f72f56ff1ebb225d043a088c922adb24495d4031d4de2edf6a144156f1f6305e","src/repository/kind.rs":"a32375689f9de7c74d29079caa2f025db8a4b13a3dc31a587039548343b23ade","src/repository/location.rs":"31204869db066e0a1ea58be0b5c41b247f581b16a2ea011942d8d6b5702403b8","src/repository/mailmap.rs":"3ca35665ac2d2c6f100826169822750e1b6647b1f284206f408126e749718030","src/repository/mod.rs":"2154ccecc6167644cd02b88906597d735632a8ed8c5f60dfac5934a7dc7198ea","src/repository/object.rs":"dd2ea672c630aacfda15366349562f3e2dbabcf8bc9201775dc4c0e86633f488","src/repository/pathspec.rs":"6da21d9a2f75ace735cc96aa6dd709bf323f2c5fc05daa40dfc3d393b2485187","src/repository/permissions.rs":"9f7f41fd250d043cea7ee6ff0cdc315838dbb6226bde3dca2a7666f01d648090","src/repository/reference.rs":"9a5f7109bee3bb165bf7da31ef7ae3b3a9018573da1b82407fe158a0ffb13851","src/repository/remote.rs":"4ecc9021f3369d9530a130fe2dbe3c98dc50b593a5194c8584293808fc2bc4a4","src/repository/revision.rs":"c2d50c2bed8b465e5e2f24483d5cc54791fa68c6f558feea5871dfdcc7f6c4ec","src/repository/shallow.rs":"ce0b3358ed0ccca6ac52a985555793013f7c2d5de83291cd9810181ac22e714a","src/repository/state.rs":"040cca4a26463211aef85e4539d084969240f30d985c1bd3ae9bb3cd01009d1d","src/repository/submodule.rs":"a44ebd1132a898bbd8454628888bb8ce41611066ca8d78004242fcc522aac27c","src/repository/thread_safe.rs":"40e455ea3b5637da6e2acae4f5d13c4b8e8a25b8944a4c2870243e31f7f13632","src/repository/worktree.rs":"1a7eaf3eb18d55018fd5a3a04b9faa8db96d05aa9debf553cd15ea1ad4e9e928","src/revision/mod.rs":"d3c83f7ae1ac71a18f79cb73a95997432936b11b94f2ad6a2fe6b3fc23554f96","src/revision/spec/mod.rs":"aa1516ed667a49bfa0db55fdea0bfbcc3227411be105496f0867bd7efb5d5dda","src/revision/spec/parse/delegate/mod.rs":"8ee9c646a16c8f46551c03f1bdf450a71fda79ce691dfcd0e1b56631a3fa3d9a","src/revision/spec/parse/delegate/navigate.rs":"2d720500c83e9b80ff1e33e8ad3faf59502116a9e29ee44385510c9a6c8114c8","src/revision/spec/parse/delegate/revision.rs":"b3ee71f7ec701a202c8e1b9fcc6a9397a8dfb251f195fa218429e630b0280ab4","src/revision/spec/parse/error.rs":"48c0c2e7dcffe80aac5563094787e0502c4275619fc35467a2687499bbad0fef","src/revision/spec/parse/mod.rs":"5f16d2141f7e5959b0a83b4f4035ceaadbaef6b7f563bc05d45257fcec9d340e","src/revision/spec/parse/types.rs":"8876e1b5caf323d4c671f31fc06c07043df10592cecec6dcd62714826ba09bfe","src/revision/walk.rs":"aa84696ba6ea7a293e834121ae2e6b79428b637333d2f7673083adbd1a18c522","src/shallow.rs":"4296fb5298ef71eb1d78aae21d11bfb129a4f5a5f3cf43bf6d5256fec40f8dc3","src/state.rs":"1e3c5e1df4016e8b3e60028def84b0f706c4fcffaba11b1152d9240e144f21e8","src/submodule/errors.rs":"996617b2e707f903de4316e775b8bac03a925959c2c70278aa84f56fa68a9fb0","src/submodule/mod.rs":"00c860ed710f4eab48dfdf54b640750f24721be89fda168cfc1c529492901f9c","src/tag.rs":"f60043aaa7afb54652ab6cf64765ebd61607f19a83dd5960abf8077d2cb91d44","src/types.rs":"daa1706f19f9b257de8d875b73553561da107429e0988f610972354d1d8a85e3","src/worktree/mod.rs":"2053c334a780377e12679a363df6441605f5ca1893237304490cb69b8d7068ca","src/worktree/proxy.rs":"07ff3cfc6a8f326fb7d62f6762f682498e9e5f131ece935acfd26b5223a338f1"},"package":"ad6d32e74454459690d57d18ea4ebec1629936e6b130b51d12cb4a81630ac953"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"d7458903f64e1f690bc0e45ecc850476dafe90ff0618e92db40ed38c865070fd","Cargo.lock":"a680b27e388f17f6d528775fbddde500223fa88744892913394b693762e92710","Cargo.toml":"52ccf36b026646ed3d9763311a33138b1f38c80b1445323fb765df7d83cf2b78","LICENSE-APACHE":"cb4780590812826851ba250f90bed0ed19506ec98f6865a0e2e20bbf62391ff9","LICENSE-MIT":"49df47913ab2beafe8dc45607877ae64198bf0eee64aaad3e82ed9e4d27424e8","src/assets/init/HEAD":"28d25bf82af4c0e2b72f50959b2beb859e3e60b9630a5e8c603dad4ddb2b6e80","src/assets/init/description":"47aad2f8621afc777c66085c31f5ed14656df9bcfa5a2ae445680f175d0d2d0c","src/assets/init/hooks/applypatch-msg.sample":"1ae81b995a5c8c54582e1977084babed1e947a5a5c247ad29563142e432955ab","src/assets/init/hooks/commit-msg.sample":"b1451a4c89ee4406ba56f003a7e3d142e24a7452861fddddc23bfc77163c8650","src/assets/init/hooks/docs.url":"4424200fb80650f5063a3ec0a3864af4aaa3103f1319fe576b64d3bfc74f8a67","src/assets/init/hooks/fsmonitor-watchman.sample":"99ed87d785ada3687b4d86b8d9aa562f3430ce7061834e5381166b6a35a0d495","src/assets/init/hooks/post-update.sample":"e6d88132de729f20c45f66c2df51cc2e223a4b8b1512a2ce1cfdd0033ee53e53","src/assets/init/hooks/pre-applypatch.sample":"4c9754cac1c73109e4113ffd76070ae528a42667a85135e87fb826d572d13a4c","src/assets/init/hooks/pre-commit.sample":"1dd0fb2a11956784eb184e72af2fd87feca9050903400f163b90d4db7f19ce78","src/assets/init/hooks/pre-merge-commit.sample":"fca192309544e8e23638bd0987be7a5d00e271599b55382c1c6a4812070da223","src/assets/init/hooks/pre-push.sample":"0e6762e0b35b2475849d11c71d504cfae10cab2be0b947d7caa1e0d5959f2cec","src/assets/init/hooks/pre-rebase.sample":"d7c629ddbaa5f984d21c97a14889599d2019230220d3459aa103648316500968","src/assets/init/hooks/prepare-commit-msg.sample":"f804b4efd22ef832b49506a815a6a6b1103b8f77b6d6556fc3756232727396d8","src/assets/init/info/exclude":"df4c844761dc873ca9ea2f6fabcc2e2460b2f804ca65f8470e39ffbda7c3446e","src/attribute_stack.rs":"835abb1ed1477b26d6e57eb25b418096ad09b3c2d4781bc5f21bf72741846a42","src/clone/access.rs":"285795cc8f32a66cfb7a98ad7458dad29415ef8331eff995ca0b87a63aa39410","src/clone/checkout.rs":"bfb9f26cb9e471e0af0cdcd417a87bbbf28f4f7cabe3443480be5471f35c0be1","src/clone/fetch/mod.rs":"155a0ef9d742ee32325a60c613590bfe8dbb6ec393a2c84b272569d50904a921","src/clone/fetch/util.rs":"7a630bb12215431b5f9ea2f54b14819cc8611b6a78b60a08dce76f4112ca6262","src/clone/mod.rs":"f4238d146b6cd29bbb12c77f08efc25efd33f50eb4834daecead2176154fab79","src/commit.rs":"3cf4f1f485c025982e9bb398c48d356af321d9fd8775de7c1a911de1052a1ece","src/config/cache/access.rs":"9284a3cfa5e95c843f37f813129e269bf6515dc02c6ee1cce69da213a9144bc1","src/config/cache/incubate.rs":"75a949861c7c2d11eec84dea92c80059b68a6ebedaf399690305544836e0a7d3","src/config/cache/init.rs":"37fee4c9c661a37d2186940b832c2a067cfcaa2ea9ebc185ce8fb4bbb6ec72f5","src/config/cache/mod.rs":"3cce2cf0fafbc4f828870b85fef411a826ad6d1fe3ac5b6cbd2f5e049331aebf","src/config/cache/util.rs":"6dbd15b84e47d3d32c6535d1b9f6a9ad73171137411d5a8bb764c5d1f60b005e","src/config/mod.rs":"7895c0860c3b84faaf5df05a2cf06065fc2ade4b0e01e1322040713b559d8d67","src/config/overrides.rs":"ca3b08e3ab4d292c904ef3a0746e937c4e90440ae19389b03321c5645177e39e","src/config/snapshot/_impls.rs":"edae9b731c69828effbdfe01d32b7caa8c536df81d33de1cb67b88ece01a7218","src/config/snapshot/access.rs":"c08dfa7bb0c969913efb6e08692203c5bed7ef2502053a89f6181846aec5918a","src/config/snapshot/credential_helpers.rs":"cd269ffb60aab86a752839294b3514b31bd59de5b4ae941f25111dfba25aad33","src/config/snapshot/mod.rs":"21f6eaeb511e470df6f3d8948dfd65b688741b39d534fbaf78e3ee620bc6a5c5","src/config/tree/keys.rs":"604c522d4b456d162a33adfef52ec0ef35dd83b0ab86a6a9bdcedb0c5de7e46a","src/config/tree/mod.rs":"be9654a1c844b8444c2f5d0003937fbc06bae7f934073eb206e0541df3b81425","src/config/tree/sections/author.rs":"a27cf6ad5150aa5ccbd64d2786183983e1567c094a221b016875864c9e8f6980","src/config/tree/sections/branch.rs":"105211bb0eefbdc718923d5e770261889163a5d61dc8f0c22af33473cfb32100","src/config/tree/sections/checkout.rs":"329ebe10cca7c5414f9e6229d6dce3178cdb5821a1b7e72bbfac3a60b5b42dc2","src/config/tree/sections/clone.rs":"bbc86890044721ac34ae7610b14987035ab8714c856cec2787fae49c286a6d6d","src/config/tree/sections/committer.rs":"2f99b8bc6e2c4ad9bdba3a85bc6b717acb5b09d1ada2723d3ba5954f804368eb","src/config/tree/sections/core.rs":"48ffa3a7c71706287a85ad2867b97f04983069bc274c22d02c309294376ca112","src/config/tree/sections/credential.rs":"e1ce72dc24b9d2f06827b9fc6e8c963f888844ab5a4b48f6d867ad8542909b94","src/config/tree/sections/diff.rs":"9c577772d544d9c9c0d06485955aecab0c64d8e1a0117e71a33f75dd281baa83","src/config/tree/sections/extensions.rs":"f73c444f2e2c8fbc8d1b1991c0d63532c792362e42833f3ae06059c07387cf66","src/config/tree/sections/fetch.rs":"437a6a13df2e1da4a06e9a28d9da020eccab395f13150d398e94bf4cd3e690f8","src/config/tree/sections/gitoxide.rs":"a483361a58e3221bbaf64847cfe70698fc4a73d24ce80875e4970af889fbf5b7","src/config/tree/sections/http.rs":"58c9a9b8abcee4066eb4e20f9679dbbf888c04c21f4dbfff0d2ad7f0a18d4fcd","src/config/tree/sections/index.rs":"30166326b339c9d0b171ebfd1c1f0fb90e38dc8b2edcd66dfead2a87c38eb938","src/config/tree/sections/init.rs":"e87e33ac5091797bde302f78c8fb7cefce0fb1752610409c1db53c3f7b4179af","src/config/tree/sections/mod.rs":"31f480fde038af3532667fb3ff511b6b978de262fa6cef4e19e1e64655060bc8","src/config/tree/sections/pack.rs":"0a6dcdc7603b0d7a84159a70789b63b6c26d539f98808c520a8e644fc9dbd2f3","src/config/tree/sections/protocol.rs":"feae4977f6576adb446d0599f018d41421a7b1b0871a74e8fcfe5e2b7104de74","src/config/tree/sections/remote.rs":"eb06d89125dc72b5754b642cf561e6e430cad4fbbd57dcd1049d306291afc41f","src/config/tree/sections/safe.rs":"4e96f49ff56d6ebb8944406fe2ae3c4a1fa80c5383f08935015ddc6036b583c3","src/config/tree/sections/ssh.rs":"7db83236912bcb7aa1770f0eb1a388ee0fac94c1548bd9a19051b34c25622841","src/config/tree/sections/url.rs":"e342edcd20979feaf54663a919a0751aaf32b4e1f2e47cf5d028faec62e6b731","src/config/tree/sections/user.rs":"8f02172a5db830832b4edf28693fdef33cece6ba1990c4d7a338e4c9291375ab","src/config/tree/traits.rs":"524f1752e9131c27db3a9016ee6c3abc61175345c2167426ffd5a41602cb950d","src/create.rs":"7da6fbdf8c18a32ad4ab9cea8a062fb8aadb08d8478c9d1c3de09c7e6e4448fe","src/diff.rs":"52bc752a2a8decff56b7a41d1ae97b90c0f3422332f999ced67fc884d6b25d18","src/discover.rs":"41631f880b7880f62d77bfb0511f4d85a82a574ca5f53b8cb8fe35edd5b886f6","src/env.rs":"57da96b315b6fe057a326639cd3e85849793449c4c8f3477b79a032b1a029b31","src/ext/mod.rs":"cc6a4c10c2eb53eb261e0186ee51411dada06bbb245c205356fce1de9d4628f5","src/ext/object_id.rs":"a70afd79c84731df0023d738332b3688a2adbcbdda802f8ee70297fc8fe0ca38","src/ext/reference.rs":"a51fe4f63e5708afa4fbabd13638b88c34845a64263db77308cd1b974a0f325f","src/ext/rev_spec.rs":"c196f21a3981b7ad84e9385ba3924a554accf9c7a3b4f8e2bba13cb74f108ec8","src/ext/tree.rs":"60753a38cfd6cbb43b794236de0258a5af40f0a88864dde9e1f7d6cdb8cbb04f","src/filter.rs":"484a6b55008eb4a1a337dffdde477ad6013dcaacb5383ab7791ef7d8f53a2b3d","src/head/log.rs":"0de9d5f834b633756001bdd246e98266084d521d7f775537e6e6ead5ed93d7e4","src/head/mod.rs":"5be9b17e6ffb5dd4c9548b8a4d9e25d6ab6600450762293c43ca0bcbd2a6284f","src/head/peel.rs":"ee6a605878d5146e388417db7dce963b70a6ccfd2659bb0f6a14c7291b042537","src/id.rs":"1f5f97d24d8c00460d085e2815c08b89632ae1e3cde283a4362798cc4b1276ea","src/init.rs":"ac6f329feb2d33cd8a5f0ce21bb77a166e18656a9952d4cba147196242558c9a","src/interrupt.rs":"217d8611ebe2932e7cb52f77a90cec4a6dbe0bd69eb16b951a70fbd8b5e95853","src/lib.rs":"ae780106efabe63365db85d404dc289c52b9006283d4706e135e6d772a1419e8","src/mailmap.rs":"415301bdcb3d6991675c7ea86a92eea152cf65df7b2d14da4b58b3b605039e4e","src/object/blob.rs":"6afd58e1ac97490e22e46abc948f08a3843df53fd0fe7480426d9961beba199e","src/object/commit.rs":"d61d8de2c8ae76afab284e38a18b33a9c3ca1ae872a1cfc37aea59d7286702be","src/object/errors.rs":"b2b456480e10dc4cdd213650dacb619d96bd9770e19d6042a80621991acd5255","src/object/impls.rs":"16467413024515d6805b1f0d47ed568d19f70a317b3fb806023028a31357bbbd","src/object/mod.rs":"e436e50c2b4d24e24215481213951404f73d2726499b4ef650c75d147654efec","src/object/peel.rs":"c23ac9baac1216d9320c71926f56548d18f7f3964bdbcccd8ca81f6b756f7ad9","src/object/tag.rs":"ab212a0d5d82e787000fbac1aa3769b97b01a0df8b851f31c7d5c8534fe2191a","src/object/tree/diff/change.rs":"95df7e1fb3b58fa2a0086f205c39940fb590ccdac92aee53a6cff5f29181f30c","src/object/tree/diff/for_each.rs":"da534722f9dbfdf26e66dc564de0c7e694e92cf54f33e29f3364ed056cea8c78","src/object/tree/diff/mod.rs":"672ef727e70da7a6f214e59ea45b16833c68c5b57a95fe7e71c89aac054eaaf4","src/object/tree/diff/rewrites.rs":"d91983f629bf3f0256da17d0067daf8271503345423f725d3a23fb5a40eac4d2","src/object/tree/diff/tracked.rs":"4b8226a3722b08e41b00c800efc81ee611f801cf42606203c26d568f2d6d16fa","src/object/tree/iter.rs":"cf3ae9dfd5018b55228ccc0b4b707b39a3fa2c5d2b130e209da5dcf9080e10ca","src/object/tree/mod.rs":"151d4e50a054aa0dbeecb1e084aac5a1f6f35044a4edda1289e9ee4ed5fb0bba","src/object/tree/traverse.rs":"ae0342857d42b6afb82167423dfdac9611ce1b7281b6b9b542e230960c564c0f","src/open/mod.rs":"d25c11246536e7d57172b375569bd8545b8060f13bbfbc49cbf0f85636627076","src/open/options.rs":"1ffda0517724d1328b2fb296a782d89305a482be65ed24a1d9d867bead8eb5a5","src/open/permissions.rs":"5a55970e738ba7a9af7b51cdeb03955af533b3306baaef278b398cf99f8a312b","src/open/repository.rs":"ae4100ee1dd30890d961dc12a57dcf03dee1ffa9a99c54a6704dde5493416764","src/path.rs":"3cd4c92a626384f8f4db89b2f7594923b922d7b841681c167748a01abc7dc3f7","src/pathspec.rs":"bddfa7360ee13ac72a97fa0e1388c9605518da3fc96fd35e76e245f25b73b813","src/prelude.rs":"8dc6fa25bb01fbc1e012364949982e406b17ab22bde464e154f12286fba293cf","src/progress.rs":"a9ba8ec6cc21eea78121b02d1feaba8f6aab04be441bfe8be9f3dffe4c5e0ba5","src/reference/edits.rs":"5d857cd65d7415d4de5aed1ea8acc9c227000a71b2e202293546cd23be1f62b2","src/reference/errors.rs":"1ac9e6e902ee561b0c6ad08ebf110216a34405948200a9aff177ebe0395a23a4","src/reference/iter.rs":"1feb3aaed665b39780136f0d703f67f4b34f6239e90cd2a0c632aad40523e025","src/reference/log.rs":"f1eab69b8272b15bd23beeb68e88a8b53f003f74d86783196b2de4a84f0497fd","src/reference/mod.rs":"29610488dc03b6a98cbdfb06e1c29b80d2d2ade9f4e555f4acaf4b5948688e19","src/reference/remote.rs":"4467c1bf9d463d1781a3254a3874c7fc763201e33d51e1a92a6f0dcbc6776135","src/remote/access.rs":"76e75baca0155710c2eea0e439df0774ecb0cd6c7e6b950876dd9e6e75be5e9f","src/remote/build.rs":"0bfcf98ee6b96c401a410c71b749426e84a78c17eff944ea7d6229ef2dc3e5e8","src/remote/connect.rs":"a147cf33f7ac1413e07d7b5aae0c6a557ee9b29f9172e7ea2413446d670ac71b","src/remote/connection/access.rs":"075f04705680959074cf3db6856bf34180d68d1a3065011ca56b67a861e2b168","src/remote/connection/fetch/config.rs":"93b1392fdc409dba073e96272f13ad7ab996522d59df819edc800431ee36975b","src/remote/connection/fetch/error.rs":"21ccf5ff0cba287247581849c510aa3dd1acdd510cfbb858a579dd85b2c7b050","src/remote/connection/fetch/mod.rs":"c88b8b968debe3192ecc6a5e46a1587f590b1ae45b76df4c13d8a64df956860c","src/remote/connection/fetch/negotiate.rs":"7258ddb2d5adf92f5041709bda16f1d19313ec867717ed270c6a191fdc92b3b9","src/remote/connection/fetch/receive_pack.rs":"d3d4809a7e4ae52868d5975c5de8d16e1218f662ee83e35498291ee582accdc9","src/remote/connection/fetch/update_refs/mod.rs":"f28b33d42f0992b3e91b7eba3672d6fe4d41811f8ea170e9bf11fac688c6e882","src/remote/connection/fetch/update_refs/tests.rs":"69a25df4dc1f84b5a7cb603e2451114cf0a7e356c026317995f3d14bfd07a345","src/remote/connection/fetch/update_refs/update.rs":"729ae1cfef895df37ae5a34c19d9aac9b77e664f107f3adf81a79ae58412e960","src/remote/connection/mod.rs":"863f4a7f2476f5b5d8622959d5069424decea29ba7f66619f679344e6fb5a5d1","src/remote/connection/ref_map.rs":"35913d6c4d8976025ff880ac71bd8e5af0b73fd83e6ca53be1ec275b6dc009e4","src/remote/errors.rs":"6c4986618c55c2a86e4623b02837918dc61849c3d634e7d474a123eb7e01bcbc","src/remote/fetch.rs":"cf78b682074ad700ea6eb4d511401a737a905bd4af0dcfd639b7f850227f5978","src/remote/init.rs":"87576486ae399945b2134dbce70e960ff4c2b3a3046988449f6da0c25f6d646c","src/remote/mod.rs":"14a1532470cc76cf3b727657439923f3515dd781ebfc7030d9481056c6bbf162","src/remote/name.rs":"9fa7e81a157375ecb40ddfba5da850fef7513296a68014a50f5148d57f40b8b7","src/remote/save.rs":"a8b2160cde235c9a2ecddc0181d1cca57a01e046eae8d3b11fa7b29e43ca6866","src/remote/url/mod.rs":"a3279f5330fc83193e583f2b839ab08006c293b0040db6cc74969d50813fbbaa","src/remote/url/rewrite.rs":"4d43167909020458abc5e3e7310e3efaddb9fc7c783581fbc9422fa8b057d95d","src/remote/url/scheme_permission.rs":"4f6e528260c67af54171477d97707050f048c0c35e77f088f8ddc4ae135e6386","src/repository/attributes.rs":"6c28910869eafda6c4c9d6a2b06a2a881f2d5fcf6f5c084ac501850ced2af810","src/repository/cache.rs":"daa9e03d59475b99d3e5c736a66f8b2f82035566906e900502195cf93adc3e1b","src/repository/config/mod.rs":"b6d7d9b3fb86f0e76cc585efb110aec0bdee4b82c8bdbe6a3bb67d65ffd31de9","src/repository/config/transport.rs":"78683c40947e95d9835809d6b9adc89bbce4e8a06345279c56554b2a76dc4e7c","src/repository/filter.rs":"cc65692a78e3cc28166f595d3bf05c0d3f12757fc8d320512638f6edb724c209","src/repository/graph.rs":"07763932b3215ac25e3981a60ab0750449af992475da7fd47bb0412cdf0fc727","src/repository/identity.rs":"0d7c575578eef869d16d99ce465696f41b1c7e8d2bdba93945219d7453b3d717","src/repository/impls.rs":"b07dd79074b3a175df1ec43042c6cd0ad98b884885e25deae6828a59cc290e2a","src/repository/index.rs":"92902245189577362acd6e0f2ef58d9b55def7dfa4ad4409759ca020ddd889ca","src/repository/init.rs":"f72f56ff1ebb225d043a088c922adb24495d4031d4de2edf6a144156f1f6305e","src/repository/kind.rs":"a32375689f9de7c74d29079caa2f025db8a4b13a3dc31a587039548343b23ade","src/repository/location.rs":"542c6db1c9781de566a6996c4211ddcb748d5c48ce3a49004c638fa6a461bc12","src/repository/mailmap.rs":"3ca35665ac2d2c6f100826169822750e1b6647b1f284206f408126e749718030","src/repository/mod.rs":"2154ccecc6167644cd02b88906597d735632a8ed8c5f60dfac5934a7dc7198ea","src/repository/object.rs":"76dd9b13d79e3ebef592410285681d85ea0c91ad295fe724dafb5617b7045491","src/repository/pathspec.rs":"6da21d9a2f75ace735cc96aa6dd709bf323f2c5fc05daa40dfc3d393b2485187","src/repository/permissions.rs":"9f7f41fd250d043cea7ee6ff0cdc315838dbb6226bde3dca2a7666f01d648090","src/repository/reference.rs":"51a794c69e54bbf441ad27a98289167c338c37107c680e6e57042acc33647e3b","src/repository/remote.rs":"4ecc9021f3369d9530a130fe2dbe3c98dc50b593a5194c8584293808fc2bc4a4","src/repository/revision.rs":"c2d50c2bed8b465e5e2f24483d5cc54791fa68c6f558feea5871dfdcc7f6c4ec","src/repository/shallow.rs":"ce0b3358ed0ccca6ac52a985555793013f7c2d5de83291cd9810181ac22e714a","src/repository/state.rs":"040cca4a26463211aef85e4539d084969240f30d985c1bd3ae9bb3cd01009d1d","src/repository/submodule.rs":"a44ebd1132a898bbd8454628888bb8ce41611066ca8d78004242fcc522aac27c","src/repository/thread_safe.rs":"40e455ea3b5637da6e2acae4f5d13c4b8e8a25b8944a4c2870243e31f7f13632","src/repository/worktree.rs":"1a7eaf3eb18d55018fd5a3a04b9faa8db96d05aa9debf553cd15ea1ad4e9e928","src/revision/mod.rs":"d3c83f7ae1ac71a18f79cb73a95997432936b11b94f2ad6a2fe6b3fc23554f96","src/revision/spec/mod.rs":"aa1516ed667a49bfa0db55fdea0bfbcc3227411be105496f0867bd7efb5d5dda","src/revision/spec/parse/delegate/mod.rs":"8ee9c646a16c8f46551c03f1bdf450a71fda79ce691dfcd0e1b56631a3fa3d9a","src/revision/spec/parse/delegate/navigate.rs":"2d720500c83e9b80ff1e33e8ad3faf59502116a9e29ee44385510c9a6c8114c8","src/revision/spec/parse/delegate/revision.rs":"b3ee71f7ec701a202c8e1b9fcc6a9397a8dfb251f195fa218429e630b0280ab4","src/revision/spec/parse/error.rs":"48c0c2e7dcffe80aac5563094787e0502c4275619fc35467a2687499bbad0fef","src/revision/spec/parse/mod.rs":"5f16d2141f7e5959b0a83b4f4035ceaadbaef6b7f563bc05d45257fcec9d340e","src/revision/spec/parse/types.rs":"8876e1b5caf323d4c671f31fc06c07043df10592cecec6dcd62714826ba09bfe","src/revision/walk.rs":"aa84696ba6ea7a293e834121ae2e6b79428b637333d2f7673083adbd1a18c522","src/shallow.rs":"4296fb5298ef71eb1d78aae21d11bfb129a4f5a5f3cf43bf6d5256fec40f8dc3","src/state.rs":"1e3c5e1df4016e8b3e60028def84b0f706c4fcffaba11b1152d9240e144f21e8","src/submodule/errors.rs":"996617b2e707f903de4316e775b8bac03a925959c2c70278aa84f56fa68a9fb0","src/submodule/mod.rs":"00c860ed710f4eab48dfdf54b640750f24721be89fda168cfc1c529492901f9c","src/tag.rs":"f60043aaa7afb54652ab6cf64765ebd61607f19a83dd5960abf8077d2cb91d44","src/types.rs":"285a14e8447c1b646c690cdb1b8430463adb4d4a236370447c81f26cad2e7887","src/worktree/mod.rs":"2053c334a780377e12679a363df6441605f5ca1893237304490cb69b8d7068ca","src/worktree/proxy.rs":"07ff3cfc6a8f326fb7d62f6762f682498e9e5f131ece935acfd26b5223a338f1"},"package":"002667cd1ebb789313d0d0afe3d23b2821cf3b0e91605095f0e6d8751f0ceeea"} \ No newline at end of file
diff --git a/vendor/gix/CHANGELOG.md b/vendor/gix/CHANGELOG.md
index eec514b03..5aea6d751 100644
--- a/vendor/gix/CHANGELOG.md
+++ b/vendor/gix/CHANGELOG.md
@@ -5,6 +5,141 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.55.2 (2023-10-13)
+
+### Bug Fixes
+
+ - <csr-id-8011c73ee401bfca03811a249c46a4dd468af1b8/> bump `gix-transport` version to prevent it from being picked up.
+ `gix-transport` v0.37.1 could accidentally be picked up by older, incompatible,
+ `gix` versions which now fail to build.
+
+ Thus v0.37.1 is now yanked and replaced with v0.38.0 along with a new
+ release of `gix` to go with it.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 2 commits contributed to the release.
+ - 1 commit was understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Prepare changelogs prior to release ([`12b5caf`](https://github.com/Byron/gitoxide/commit/12b5cafc49baf07d00313de468970a2db33ac1f8))
+ - Bump `gix-transport` version to prevent it from being picked up. ([`8011c73`](https://github.com/Byron/gitoxide/commit/8011c73ee401bfca03811a249c46a4dd468af1b8))
+</details>
+
+## 0.55.1 (2023-10-12)
+
+### New Features
+
+ - <csr-id-5732303180d26374016b70bdd7fa0278dd84cff3/> Add `take_data()` to all primitive object types.
+ That is the new, most direct way to obtain its data which otherwise
+ is immovable.
+ - <csr-id-88f2e6c4c540b9c8032e6eee9c5da65a9bcfeef8/> Add `detach()` and `detached()` too all object types.
+ That way, the detachment API is symmetric.
+ It's required to overcome the `Drop` implementation of each of these types
+ which prevents moving data out of the object (easily).
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 3 commits contributed to the release.
+ - 2 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Release gix v0.55.1 ([`4642c0c`](https://github.com/Byron/gitoxide/commit/4642c0c78f45b1956837bc874f6757fc302bee4a))
+ - Add `take_data()` to all primitive object types. ([`5732303`](https://github.com/Byron/gitoxide/commit/5732303180d26374016b70bdd7fa0278dd84cff3))
+ - Add `detach()` and `detached()` too all object types. ([`88f2e6c`](https://github.com/Byron/gitoxide/commit/88f2e6c4c540b9c8032e6eee9c5da65a9bcfeef8))
+</details>
+
+## 0.55.0 (2023-10-12)
+
+<csr-id-f478a3722f0be35c109ea60b79cd4ac6e607480b/>
+
+This release contains a complete rewrite of the internal url parsing logic, the public interface stays mostly the same however. Gitoxide will now be
+more correct, interpreting more urls the same way Git does. Improvements include the added support for ssh aliases (`github:byron/gitoxide` has previously
+been parsed as local path), adjustments around the interpretation of colons in file names (previously we disallowed colons that were not followed up
+with a slash character) and some smaller changes that bring the interpretation of file urls more in line with Git's implementation. Additionally, the
+error types have been adjusted to print a more comprehensive message by default, making sure they stay helpful even when bubbled up through multiple abstraction
+layers.
+
+There are still many (edge) cases in Git's url parsing implementation which are not handled correctly by Gitoxide. If you notice any such deviation please
+open a new issue to help us making Gitoxide even more correct.
+
+### Other
+
+ - <csr-id-f478a3722f0be35c109ea60b79cd4ac6e607480b/> inform about the absence of strict hash verification and strict object creation.
+ Those are present in `git2` and enabled by default, and `gitoxde` definitely
+ wants to do the same at some point.
+
+### New Features
+
+ - <csr-id-c79a7daa30fe90d14d8e3387ec48116b37faf460/> add `Repository::head_tree()` to more easily obtain the current tree.
+ - <csr-id-787a9aa91c1abaa7572f5d19f8a2acbb7ecc0732/> Add `Repository::has_object()` as a high-level alternative.
+ Previously, one would have to call `repo.objects.contains()`, which
+ is fine, but this method is necessary for symmetry of the API
+ and one shouldn't have to drop down a level to do this.
+
+ This method also knows empty trees as special case.
+ - <csr-id-3cec935e692eeb33ffcac98988e34a390f755bf3/> add `Object::try_into_blob()` and `into_blob()` and `Repository::empty_blob()`
+ This way it's easier to assert that an object is actually a blob.
+ - <csr-id-7d9ecdd1c230204468a965f703d5efd00fa7fb79/> add `Repository::index_or_empty()`.
+ This is useful if a missing index should mean it's empty.
+
+### Commit Statistics
+
+<csr-read-only-do-not-edit/>
+
+ - 15 commits contributed to the release over the course of 16 calendar days.
+ - 17 days passed between releases.
+ - 5 commits were understood as [conventional](https://www.conventionalcommits.org).
+ - 0 issues like '(#ID)' were seen in commit messages
+
+### Thanks Clippy
+
+<csr-read-only-do-not-edit/>
+
+[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic.
+
+### Commit Details
+
+<csr-read-only-do-not-edit/>
+
+<details><summary>view details</summary>
+
+ * **Uncategorized**
+ - Release gix-transport v0.37.1, gix-protocol v0.41.0, gix-revision v0.23.0, gix-refspec v0.19.0, gix-worktree v0.27.0, gix-status v0.2.0, gix-submodule v0.5.0, gix-worktree-state v0.4.0, gix v0.55.0 ([`14ddbd4`](https://github.com/Byron/gitoxide/commit/14ddbd4c15128b1d5631a2388a00e024842b7b83))
+ - Release gix-hash v0.13.1, gix-features v0.36.0, gix-actor v0.28.0, gix-object v0.38.0, gix-glob v0.14.0, gix-attributes v0.20.0, gix-command v0.2.10, gix-filter v0.6.0, gix-fs v0.8.0, gix-commitgraph v0.22.0, gix-revwalk v0.9.0, gix-traverse v0.34.0, gix-worktree-stream v0.6.0, gix-archive v0.6.0, gix-tempfile v11.0.0, gix-lock v11.0.0, gix-ref v0.38.0, gix-config v0.31.0, gix-url v0.25.0, gix-credentials v0.21.0, gix-diff v0.37.0, gix-discover v0.26.0, gix-ignore v0.9.0, gix-index v0.26.0, gix-mailmap v0.20.0, gix-negotiate v0.9.0, gix-pack v0.44.0, gix-odb v0.54.0, gix-pathspec v0.4.0, gix-packetline v0.16.7, gix-transport v0.37.0, gix-protocol v0.41.0, gix-revision v0.23.0, gix-refspec v0.19.0, gix-worktree v0.27.0, gix-status v0.2.0, gix-submodule v0.5.0, gix-worktree-state v0.4.0, gix v0.55.0, safety bump 37 crates ([`68e5432`](https://github.com/Byron/gitoxide/commit/68e54326e527a55dd5b5079921fc251615833040))
+ - Prepare changelogs prior to release ([`1347a54`](https://github.com/Byron/gitoxide/commit/1347a54f84599d8f0aa935d6e64b16c2298d25cf))
+ - Merge branch 'improvements' ([`429e7b2`](https://github.com/Byron/gitoxide/commit/429e7b25f93c8a7947db19bafa74babf199a1aa6))
+ - Inform about the absence of strict hash verification and strict object creation. ([`f478a37`](https://github.com/Byron/gitoxide/commit/f478a3722f0be35c109ea60b79cd4ac6e607480b))
+ - Add `Repository::head_tree()` to more easily obtain the current tree. ([`c79a7da`](https://github.com/Byron/gitoxide/commit/c79a7daa30fe90d14d8e3387ec48116b37faf460))
+ - Add `Repository::has_object()` as a high-level alternative. ([`787a9aa`](https://github.com/Byron/gitoxide/commit/787a9aa91c1abaa7572f5d19f8a2acbb7ecc0732))
+ - Add `Object::try_into_blob()` and `into_blob()` and `Repository::empty_blob()` ([`3cec935`](https://github.com/Byron/gitoxide/commit/3cec935e692eeb33ffcac98988e34a390f755bf3))
+ - Thanks clippy ([`345712d`](https://github.com/Byron/gitoxide/commit/345712dcdfddcccc630bbfef2ed4f461b21550d3))
+ - Merge branch 'reset' ([`b842691`](https://github.com/Byron/gitoxide/commit/b8426919a491dc3a7df01ee3f258fc0d8a3a327c))
+ - Trust Ctime again ([`f929d42`](https://github.com/Byron/gitoxide/commit/f929d420cb768f2df1d7886564ca03b3c3254a82))
+ - Add `Repository::index_or_empty()`. ([`7d9ecdd`](https://github.com/Byron/gitoxide/commit/7d9ecdd1c230204468a965f703d5efd00fa7fb79))
+ - Adapt to changes in `gix-status` ([`54fb7c2`](https://github.com/Byron/gitoxide/commit/54fb7c24a97cb2339a67ad269344ce65166a545d))
+ - Merge branch 'gix-url-parse-rewrite' ([`a12e4a8`](https://github.com/Byron/gitoxide/commit/a12e4a88d5f5636cd694c72ce45a8b75aa754d28))
+ - Update changelogs ([`4349353`](https://github.com/Byron/gitoxide/commit/43493531bbf3049bee3d7b14b7a6dbe874e37ebc))
+</details>
+
## 0.54.1 (2023-09-25)
### Bug Fixes
@@ -19,7 +154,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<csr-read-only-do-not-edit/>
- - 1 commit contributed to the release.
+ - 2 commits contributed to the release.
- 1 commit was understood as [conventional](https://www.conventionalcommits.org).
- 0 issues like '(#ID)' were seen in commit messages
@@ -30,6 +165,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
<details><summary>view details</summary>
* **Uncategorized**
+ - Release gix v0.54.1 ([`f603fd7`](https://github.com/Byron/gitoxide/commit/f603fd7a68206a6989a9f959216eba6cca0a6733))
- Local refs created during fetching will now always be valid. ([`300a838`](https://github.com/Byron/gitoxide/commit/300a83821358f2a43649515606ebb84741e82780))
</details>
diff --git a/vendor/gix/Cargo.lock b/vendor/gix/Cargo.lock
index 9f8f5a075..b87494c7e 100644
--- a/vendor/gix/Cargo.lock
+++ b/vendor/gix/Cargo.lock
@@ -290,12 +290,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "38fcc2979eff34a4b84e1cf9a1e3da42a7d44b3b690a40cdcb23e3d556cfb2e5"
[[package]]
-name = "byteyarn"
-version = "0.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7534301c0ea17abb4db06d75efc7b4b0fa360fce8e175a4330d721c71c942ff"
-
-[[package]]
name = "cc"
version = "1.0.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -751,7 +745,7 @@ checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e"
[[package]]
name = "gix"
-version = "0.54.1"
+version = "0.55.2"
dependencies = [
"anyhow",
"async-std",
@@ -818,9 +812,9 @@ dependencies = [
[[package]]
name = "gix-actor"
-version = "0.27.0"
+version = "0.28.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08c60e982c5290897122d4e2622447f014a2dadd5a18cb73d50bb91b31645e27"
+checksum = "948a5f9e43559d16faf583694f1c742eb401ce24ce8e6f2238caedea7486433c"
dependencies = [
"bstr",
"btoi",
@@ -833,9 +827,9 @@ dependencies = [
[[package]]
name = "gix-archive"
-version = "0.5.0"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab71635f7fb38ad4cc7da7e98af79e3010e35b05de5cb6eb79b2da68ab93eac7"
+checksum = "909f8417346ebae6a8ca4e947966541a30a1eaac0d67c816f735cba03f0ff09d"
dependencies = [
"bstr",
"gix-date",
@@ -846,16 +840,16 @@ dependencies = [
[[package]]
name = "gix-attributes"
-version = "0.19.0"
+version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2451665e70709ba4753b623ef97511ee98c4a73816b2c5b5df25678d607ed820"
+checksum = "dca120f0c6562d2d7cae467f2466e576d9f7f189beec2af2e026145107c729e2"
dependencies = [
"bstr",
- "byteyarn",
"gix-glob",
"gix-path",
"gix-quote",
"gix-trace",
+ "kstring",
"serde",
"smallvec",
"thiserror",
@@ -882,18 +876,18 @@ dependencies = [
[[package]]
name = "gix-command"
-version = "0.2.9"
+version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f28f654184b5f725c5737c7e4f466cbd8f0102ac352d5257eeab19647ee4256"
+checksum = "3c576cfbf577f72c097b5f88aedea502cd62952bdc1fb3adcab4531d5525a4c7"
dependencies = [
"bstr",
]
[[package]]
name = "gix-commitgraph"
-version = "0.21.0"
+version = "0.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e75a975ee22cf0a002bfe9b5d5cb3d2a88e263a8a178cd7509133cff10f4df8a"
+checksum = "7e8bc78b1a6328fa6d8b3a53b6c73997af37fd6bfc1d6c49f149e63bda5cbb36"
dependencies = [
"bstr",
"gix-chunk",
@@ -906,9 +900,9 @@ dependencies = [
[[package]]
name = "gix-config"
-version = "0.30.0"
+version = "0.31.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c171514b40487d3f677ae37efc0f45ac980e3169f23c27eb30a70b47fdf88ab5"
+checksum = "5cae98c6b4c66c09379bc35274b172587d6b0ac369a416c39128ad8c6454f9bb"
dependencies = [
"bstr",
"gix-config-value",
@@ -940,9 +934,9 @@ dependencies = [
[[package]]
name = "gix-credentials"
-version = "0.20.0"
+version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46900b884cc5af6a6c141ee741607c0c651a4e1d33614b8d888a1ba81cc0bc8a"
+checksum = "1c5c5d74069b842a1861e581027ac6b7ad9ff66f5911c89b9f45484d7ebda6a4"
dependencies = [
"bstr",
"gix-command",
@@ -970,9 +964,9 @@ dependencies = [
[[package]]
name = "gix-diff"
-version = "0.36.0"
+version = "0.37.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "788ddb152c388206e81f36bcbb574e7ed7827c27d8fa62227b34edc333d8928c"
+checksum = "931394f69fb8c9ed6afc0aae3487bd869e936339bcc13ed8884472af072e0554"
dependencies = [
"gix-hash",
"gix-object",
@@ -982,9 +976,9 @@ dependencies = [
[[package]]
name = "gix-discover"
-version = "0.25.0"
+version = "0.26.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69507643d75a0ea9a402fcf73ced517d2b95cc95385904ac09d03e0b952fde33"
+checksum = "a45d5cf0321178883e38705ab2b098f625d609a7d4c391b33ac952eff2c490f2"
dependencies = [
"bstr",
"dunce",
@@ -997,9 +991,9 @@ dependencies = [
[[package]]
name = "gix-features"
-version = "0.35.0"
+version = "0.36.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b9ff423ae4983f762659040d13dd7a5defbd54b6a04ac3cc7347741cec828cd"
+checksum = "51f4365ba17c4f218d7fd9ec102b8d2d3cb0ca200a835e81151ace7778aec827"
dependencies = [
"bytes",
"bytesize",
@@ -1021,9 +1015,9 @@ dependencies = [
[[package]]
name = "gix-filter"
-version = "0.5.0"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1be40d28cd41445bb6cd52c4d847d915900e5466f7433eaee6a9e0a3d1d88b08"
+checksum = "92f674d3fdb6b1987b04521ec9a5b7be8650671f2c4bbd17c3c81e2a364242ff"
dependencies = [
"bstr",
"encoding_rs",
@@ -1041,18 +1035,18 @@ dependencies = [
[[package]]
name = "gix-fs"
-version = "0.7.0"
+version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09815faba62fe9b32d918b75a554686c98e43f7d48c43a80df58eb718e5c6635"
+checksum = "8cd171c0cae97cd0dc57e7b4601cb1ebf596450e263ef3c02be9107272c877bd"
dependencies = [
"gix-features",
]
[[package]]
name = "gix-glob"
-version = "0.13.0"
+version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9d76e85f11251dcf751d2c5e918a14f562db5be6f727fd24775245653e9b19d"
+checksum = "8fac08925dbc14d414bd02eb45ffb4cecd912d1fce3883f867bd0103c192d3e4"
dependencies = [
"bitflags 2.3.3",
"bstr",
@@ -1063,9 +1057,9 @@ dependencies = [
[[package]]
name = "gix-hash"
-version = "0.13.0"
+version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2ccf425543779cddaa4a7c62aba3fa9d90ea135b160be0a72dd93c063121ad4a"
+checksum = "1884c7b41ea0875217c1be9ce91322f90bde433e91d374d0e1276073a51ccc60"
dependencies = [
"faster-hex",
"serde",
@@ -1085,9 +1079,9 @@ dependencies = [
[[package]]
name = "gix-ignore"
-version = "0.8.0"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b048f443a1f6b02da4205c34d2e287e3fd45d75e8e2f06cfb216630ea9bff5e3"
+checksum = "1e73c07763a8005ae02cb5cf83040729cea9bb70c7cef68ec6c24159904c499a"
dependencies = [
"bstr",
"gix-glob",
@@ -1098,9 +1092,9 @@ dependencies = [
[[package]]
name = "gix-index"
-version = "0.25.0"
+version = "0.26.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f54d63a9d13c13088f41f5a3accbec284e492ac8f4f707fcc307c139622e17b7"
+checksum = "c83a4fcc121b2f2e109088f677f89f85e7a8ebf39e8e6659c0ae54d4283b1650"
dependencies = [
"bitflags 2.3.3",
"bstr",
@@ -1122,9 +1116,9 @@ dependencies = [
[[package]]
name = "gix-lock"
-version = "10.0.0"
+version = "11.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "47fc96fa8b6b6d33555021907c81eb3b27635daecf6e630630bdad44f8feaa95"
+checksum = "f4feb1dcd304fe384ddc22edba9dd56a42b0800032de6537728cea2f033a4f37"
dependencies = [
"gix-tempfile",
"gix-utils",
@@ -1144,9 +1138,9 @@ dependencies = [
[[package]]
name = "gix-mailmap"
-version = "0.19.0"
+version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "40f00fa96e29e066ef208f5d13e0f5f95fa70c3ae4bd4f0234272ed4d708a7db"
+checksum = "496141bc97ca2074401dfd3049a958554ab5a80c7f00a9dcfb41d29a7396f9e2"
dependencies = [
"bstr",
"gix-actor",
@@ -1157,9 +1151,9 @@ dependencies = [
[[package]]
name = "gix-negotiate"
-version = "0.8.0"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f1697bf9911c6d1b8d709b9e6ef718cb5ea5821a1b7991520125a8134448004"
+checksum = "2a5cdcf491ecc9ce39dcc227216c540355fe0024ae7c38e94557752ca5ebb67f"
dependencies = [
"bitflags 2.3.3",
"gix-commitgraph",
@@ -1173,9 +1167,9 @@ dependencies = [
[[package]]
name = "gix-object"
-version = "0.37.0"
+version = "0.38.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e7e19616c67967374137bae83e950e9b518a9ea8a605069bd6716ada357fd6f"
+checksum = "740f2a44267f58770a1cb3a3d01d14e67b089c7136c48d4bddbb3cfd2bf86a51"
dependencies = [
"bstr",
"btoi",
@@ -1193,9 +1187,9 @@ dependencies = [
[[package]]
name = "gix-odb"
-version = "0.53.0"
+version = "0.54.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d6a392c6ba3a2f133cdc63120e9bc7aec81eef763db372c817de31febfe64bf"
+checksum = "8630b56cb80d8fa684d383dad006a66401ee8314e12fbf0e566ddad8c115143b"
dependencies = [
"arc-swap",
"gix-date",
@@ -1213,9 +1207,9 @@ dependencies = [
[[package]]
name = "gix-pack"
-version = "0.43.0"
+version = "0.44.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7536203a45b31e1bc5694bbf90ba8da1b736c77040dd6a520db369f371eb1ab3"
+checksum = "1431ba2e30deff1405920693d54ab231c88d7c240dd6ccc936ee223d8f8697c3"
dependencies = [
"clru",
"gix-chunk",
@@ -1235,9 +1229,9 @@ dependencies = [
[[package]]
name = "gix-packetline"
-version = "0.16.6"
+version = "0.16.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6df0b75361353e7c0a6d72d49617a37379a7a22cba4569ae33a7720a4c8755a"
+checksum = "8a8384b1e964151aff0d5632dd9b191059d07dff358b96bd940f1b452600d7ab"
dependencies = [
"bstr",
"faster-hex",
@@ -1273,9 +1267,9 @@ dependencies = [
[[package]]
name = "gix-pathspec"
-version = "0.3.0"
+version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3e26c9b47c51be73f98d38c84494bd5fb99334c5d6fda14ef5d036d50a9e5fd"
+checksum = "e9cc7194fdcf43b4a1ccfa13ffae1d79f83beb4becff7761d88dd99faeafe625"
dependencies = [
"bitflags 2.3.3",
"bstr",
@@ -1301,9 +1295,9 @@ dependencies = [
[[package]]
name = "gix-protocol"
-version = "0.40.0"
+version = "0.41.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc7b700dc20cc9be8a5130a1fd7e10c34117ffa7068431c8c24d963f0a2e0c9b"
+checksum = "391e3feabdfa5f90dad6673ce59e3291ac28901b2ff248d86c5a7fbde0391e0e"
dependencies = [
"async-trait",
"bstr",
@@ -1334,9 +1328,9 @@ dependencies = [
[[package]]
name = "gix-ref"
-version = "0.37.0"
+version = "0.38.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22e6b749660b613641769edc1954132eb8071a13c32224891686091bef078de4"
+checksum = "0ec2f6d07ac88d2fb8007ee3fa3e801856fb9d82e7366ec0ca332eb2c9d74a52"
dependencies = [
"gix-actor",
"gix-date",
@@ -1356,9 +1350,9 @@ dependencies = [
[[package]]
name = "gix-refspec"
-version = "0.18.0"
+version = "0.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0895cb7b1e70f3c3bd4550c329e9f5caf2975f97fcd4238e05754e72208ef61e"
+checksum = "ccb0974cc41dbdb43a180c7f67aa481e1c1e160fcfa8f4a55291fd1126c1a6e7"
dependencies = [
"bstr",
"gix-hash",
@@ -1370,9 +1364,9 @@ dependencies = [
[[package]]
name = "gix-revision"
-version = "0.22.0"
+version = "0.23.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8c4b15cf2ab7a35f5bcb3ef146187c8d36df0177e171ca061913cbaaa890e89"
+checksum = "2ca97ac73459a7f3766aa4a5638a6e37d56d4c7962bc1986fbaf4883d0772588"
dependencies = [
"bstr",
"gix-date",
@@ -1387,9 +1381,9 @@ dependencies = [
[[package]]
name = "gix-revwalk"
-version = "0.8.0"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e9870c6b1032f2084567710c3b2106ac603377f8d25766b8a6b7c33e6e3ca279"
+checksum = "a16d8c892e4cd676d86f0265bf9d40cefd73d8d94f86b213b8b77d50e77efae0"
dependencies = [
"gix-commitgraph",
"gix-date",
@@ -1415,27 +1409,29 @@ dependencies = [
[[package]]
name = "gix-status"
-version = "0.1.0"
+version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "082801c42ba707f2407b5cce3d99b89cfa84f3794962946dc94cfdc00ae522fa"
+checksum = "1c54271ffb47bce5826be9214a3993d595c5285c1ec23c036d9b1012920f6ab0"
dependencies = [
"bstr",
"filetime",
"gix-features",
+ "gix-filter",
"gix-fs",
"gix-hash",
"gix-index",
"gix-object",
"gix-path",
"gix-pathspec",
+ "gix-worktree",
"thiserror",
]
[[package]]
name = "gix-submodule"
-version = "0.4.0"
+version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd0150e82e9282d3f2ab2dd57a22f9f6c3447b9d9856e5321ac92d38e3e0e2b7"
+checksum = "bba78c8d12aa24370178453ec3a472ff08dfaa657d116229f57f2c9cd469a1c2"
dependencies = [
"bstr",
"gix-config",
@@ -1448,9 +1444,9 @@ dependencies = [
[[package]]
name = "gix-tempfile"
-version = "10.0.0"
+version = "11.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ae0978f3e11dc57290ee75ac2477c815bca1ce2fa7ed5dc5f16db067410ac4d"
+checksum = "05cc2205cf10d99f70b96e04e16c55d4c7cf33efc151df1f793e29fd12a931f8"
dependencies = [
"dashmap",
"gix-fs",
@@ -1470,9 +1466,9 @@ checksum = "96b6d623a1152c3facb79067d6e2ecdae48130030cf27d6eb21109f13bd7b836"
[[package]]
name = "gix-transport"
-version = "0.37.0"
+version = "0.38.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9ec726e6a245e68ace59a34126a1d679de60360676612985e70b0d3b102fb4e"
+checksum = "2f209a93364e24f20319751bc11092272e2f3fe82bb72592b2822679cf5be752"
dependencies = [
"async-std",
"async-trait",
@@ -1496,9 +1492,9 @@ dependencies = [
[[package]]
name = "gix-traverse"
-version = "0.33.0"
+version = "0.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22ef04ab3643acba289b5cedd25d6f53c0430770b1d689d1d654511e6fb81ba0"
+checksum = "14d050ec7d4e1bb76abf0636cf4104fb915b70e54e3ced9a4427c999100ff38a"
dependencies = [
"gix-commitgraph",
"gix-date",
@@ -1512,9 +1508,9 @@ dependencies = [
[[package]]
name = "gix-url"
-version = "0.24.0"
+version = "0.25.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6125ecf46e8c68bf7202da6cad239831daebf0247ffbab30210d72f3856e420f"
+checksum = "fa9a4e69d57162242b32cc05e1b96681cb8e513210e3a0b4e89ff647a5b2ab50"
dependencies = [
"bstr",
"gix-features",
@@ -1546,9 +1542,9 @@ dependencies = [
[[package]]
name = "gix-worktree"
-version = "0.26.0"
+version = "0.27.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f5e32972801bd82d56609e6fc84efc358fa1f11f25c5e83b7807ee2280f14fe"
+checksum = "ddaf79e721dba64fe726a42f297a3c8ed42e55cdc0d81ca68452f2def3c2d7fd"
dependencies = [
"bstr",
"gix-attributes",
@@ -1565,9 +1561,9 @@ dependencies = [
[[package]]
name = "gix-worktree-state"
-version = "0.3.0"
+version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3aeb06960f2c5ac9e4cdb6b38eb3c2b99d5e525e68285fef21ed17dfbd597ad"
+checksum = "34a2fcccdcaf3c71c00a03df31c9aa459d444cabbec4ed9ca1fa64e43406bed4"
dependencies = [
"bstr",
"gix-features",
@@ -1585,9 +1581,9 @@ dependencies = [
[[package]]
name = "gix-worktree-stream"
-version = "0.5.0"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c89fe93a12e45cc3ad6ba429a7dd7506b03d7d406374a65ad9998b5cb2627569"
+checksum = "ee4b34b6f8c9347327682064627e3e72c1fc545849b6d4c183fdfa84af71af2c"
dependencies = [
"gix-attributes",
"gix-features",
@@ -1888,6 +1884,16 @@ dependencies = [
]
[[package]]
+name = "kstring"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec3066350882a1cd6d950d055997f379ac37fd39f81cd4d8ed186032eb3c5747"
+dependencies = [
+ "serde",
+ "static_assertions",
+]
+
+[[package]]
name = "kv-log-macro"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2721,6 +2727,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
name = "syn"
version = "1.0.109"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/vendor/gix/Cargo.toml b/vendor/gix/Cargo.toml
index a6ec392f3..bedeebaeb 100644
--- a/vendor/gix/Cargo.toml
+++ b/vendor/gix/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.65"
name = "gix"
-version = "0.54.1"
+version = "0.55.2"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
include = [
"src/**/*",
@@ -55,90 +55,90 @@ version = "0.2.0"
optional = true
[dependencies.gix-actor]
-version = "^0.27.0"
+version = "^0.28.0"
[dependencies.gix-archive]
-version = "^0.5.0"
+version = "^0.6.0"
optional = true
default-features = false
[dependencies.gix-attributes]
-version = "^0.19.0"
+version = "^0.20.0"
optional = true
[dependencies.gix-commitgraph]
-version = "^0.21.0"
+version = "^0.22.0"
[dependencies.gix-config]
-version = "^0.30.0"
+version = "^0.31.0"
[dependencies.gix-credentials]
-version = "^0.20.0"
+version = "^0.21.0"
optional = true
[dependencies.gix-date]
version = "^0.8.0"
[dependencies.gix-diff]
-version = "^0.36.0"
+version = "^0.37.0"
default-features = false
[dependencies.gix-discover]
-version = "^0.25.0"
+version = "^0.26.0"
[dependencies.gix-features]
-version = "^0.35.0"
+version = "^0.36.0"
features = [
"progress",
"once_cell",
]
[dependencies.gix-filter]
-version = "^0.5.0"
+version = "^0.6.0"
optional = true
[dependencies.gix-fs]
-version = "^0.7.0"
+version = "^0.8.0"
[dependencies.gix-glob]
-version = "^0.13.0"
+version = "^0.14.0"
[dependencies.gix-hash]
-version = "^0.13.0"
+version = "^0.13.1"
[dependencies.gix-hashtable]
version = "^0.4.0"
[dependencies.gix-ignore]
-version = "^0.8.0"
+version = "^0.9.0"
optional = true
[dependencies.gix-index]
-version = "^0.25.0"
+version = "^0.26.0"
optional = true
[dependencies.gix-lock]
-version = "^10.0.0"
+version = "^11.0.0"
[dependencies.gix-macros]
version = "^0.1.0"
[dependencies.gix-mailmap]
-version = "^0.19.0"
+version = "^0.20.0"
optional = true
[dependencies.gix-negotiate]
-version = "^0.8.0"
+version = "^0.9.0"
optional = true
[dependencies.gix-object]
-version = "^0.37.0"
+version = "^0.38.0"
[dependencies.gix-odb]
-version = "^0.53.0"
+version = "^0.54.0"
[dependencies.gix-pack]
-version = "^0.43.0"
+version = "^0.44.0"
features = ["object-cache-dynamic"]
default-features = false
@@ -146,7 +146,7 @@ default-features = false
version = "^0.10.0"
[dependencies.gix-pathspec]
-version = "^0.3.0"
+version = "^0.4.0"
optional = true
[dependencies.gix-prompt]
@@ -154,49 +154,49 @@ version = "^0.7.0"
optional = true
[dependencies.gix-protocol]
-version = "^0.40.0"
+version = "^0.41.1"
optional = true
[dependencies.gix-ref]
-version = "^0.37.0"
+version = "^0.38.0"
[dependencies.gix-refspec]
-version = "^0.18.0"
+version = "^0.19.0"
[dependencies.gix-revision]
-version = "^0.22.0"
+version = "^0.23.0"
default-features = false
[dependencies.gix-revwalk]
-version = "^0.8.0"
+version = "^0.9.0"
[dependencies.gix-sec]
version = "^0.10.0"
[dependencies.gix-status]
-version = "^0.1.0"
+version = "^0.2.0"
optional = true
[dependencies.gix-submodule]
-version = "^0.4.0"
+version = "^0.5.0"
optional = true
[dependencies.gix-tempfile]
-version = "^10.0.0"
+version = "^11.0.0"
default-features = false
[dependencies.gix-trace]
version = "^0.1.3"
[dependencies.gix-transport]
-version = "^0.37.0"
+version = "^0.38.0"
optional = true
[dependencies.gix-traverse]
-version = "^0.33.0"
+version = "^0.34.0"
[dependencies.gix-url]
-version = "^0.24.0"
+version = "^0.25.0"
[dependencies.gix-utils]
version = "^0.1.5"
@@ -205,16 +205,16 @@ version = "^0.1.5"
version = "^0.8.0"
[dependencies.gix-worktree]
-version = "^0.26.0"
+version = "^0.27.0"
optional = true
default-features = false
[dependencies.gix-worktree-state]
-version = "^0.3.0"
+version = "^0.4.0"
optional = true
[dependencies.gix-worktree-stream]
-version = "^0.5.0"
+version = "^0.6.0"
optional = true
[dependencies.once_cell]
diff --git a/vendor/gix/src/clone/fetch/mod.rs b/vendor/gix/src/clone/fetch/mod.rs
index c03b8f839..663822212 100644
--- a/vendor/gix/src/clone/fetch/mod.rs
+++ b/vendor/gix/src/clone/fetch/mod.rs
@@ -94,7 +94,7 @@ impl PrepareFetch {
.expect("valid static spec");
let mut clone_fetch_tags = None;
if let Some(f) = self.configure_remote.as_mut() {
- remote = f(remote).map_err(|err| Error::RemoteConfiguration(err))?;
+ remote = f(remote).map_err(Error::RemoteConfiguration)?;
} else {
clone_fetch_tags = remote::fetch::Tags::All.into();
}
@@ -117,7 +117,7 @@ impl PrepareFetch {
let pending_pack: remote::fetch::Prepare<'_, '_, _> = {
let mut connection = remote.connect(remote::Direction::Fetch).await?;
if let Some(f) = self.configure_connection.as_mut() {
- f(&mut connection).map_err(|err| Error::RemoteConnection(err))?;
+ f(&mut connection).map_err(Error::RemoteConnection)?;
}
connection
.prepare_fetch(&mut *progress, {
diff --git a/vendor/gix/src/clone/fetch/util.rs b/vendor/gix/src/clone/fetch/util.rs
index ab90435d0..db9bc0a1c 100644
--- a/vendor/gix/src/clone/fetch/util.rs
+++ b/vendor/gix/src/clone/fetch/util.rs
@@ -189,7 +189,7 @@ fn setup_branch_config(
remote_name: &BStr,
) -> Result<(), Error> {
let short_name = match branch.category_and_short_name() {
- Some((cat, shortened)) if cat == gix_ref::Category::LocalBranch => match shortened.to_str() {
+ Some((gix_ref::Category::LocalBranch, shortened)) => match shortened.to_str() {
Ok(s) => s,
Err(_) => return Ok(()),
},
diff --git a/vendor/gix/src/config/cache/access.rs b/vendor/gix/src/config/cache/access.rs
index 352bc9712..3e763c028 100644
--- a/vendor/gix/src/config/cache/access.rs
+++ b/vendor/gix/src/config/cache/access.rs
@@ -158,13 +158,7 @@ impl Cache {
pub(crate) fn stat_options(&self) -> Result<gix_index::entry::stat::Options, config::stat_options::Error> {
use crate::config::tree::gitoxide;
Ok(gix_index::entry::stat::Options {
- trust_ctime: boolean(
- self,
- "core.trustCTime",
- &Core::TRUST_C_TIME,
- // For now, on MacOS it's known to not be trust-worthy at least with the Rust STDlib, being 2s off
- !cfg!(target_os = "macos"),
- )?,
+ trust_ctime: boolean(self, "core.trustCTime", &Core::TRUST_C_TIME, true)?,
use_nsec: boolean(self, "gitoxide.core.useNsec", &gitoxide::Core::USE_NSEC, false)?,
use_stdev: boolean(self, "gitoxide.core.useStdev", &gitoxide::Core::USE_STDEV, false)?,
check_stat: self
@@ -309,7 +303,7 @@ impl Cache {
&gitoxide::Pathspec::LITERAL,
]
.iter()
- .find_map(|key| (key.environment_override().expect("set") == name).then_some(key))
+ .find(|key| key.environment_override().expect("set") == name)
.expect("we must know all possible input variable names");
let val = self
diff --git a/vendor/gix/src/config/tree/keys.rs b/vendor/gix/src/config/tree/keys.rs
index 5a5257af5..15cfba2d9 100644
--- a/vendor/gix/src/config/tree/keys.rs
+++ b/vendor/gix/src/config/tree/keys.rs
@@ -237,7 +237,7 @@ mod lock_timeout {
let value = value.map_err(|err| config::lock_timeout::Error::from(self).with_source(err))?;
Ok(match value {
val if val < 0 => Fail::AfterDurationWithBackoff(Duration::from_secs(u64::MAX)),
- val if val == 0 => Fail::Immediately,
+ 0 => Fail::Immediately,
val => Fail::AfterDurationWithBackoff(Duration::from_millis(
val.try_into().expect("i64 to u64 always works if positive"),
)),
diff --git a/vendor/gix/src/config/tree/sections/core.rs b/vendor/gix/src/config/tree/sections/core.rs
index ab3e2bab9..2ec5c279e 100644
--- a/vendor/gix/src/config/tree/sections/core.rs
+++ b/vendor/gix/src/config/tree/sections/core.rs
@@ -45,8 +45,7 @@ impl Core {
/// The `core.symlinks` key.
pub const SYMLINKS: keys::Boolean = keys::Boolean::new_boolean("symlinks", &config::Tree::CORE);
/// The `core.trustCTime` key.
- pub const TRUST_C_TIME: keys::Boolean = keys::Boolean::new_boolean("trustCTime", &config::Tree::CORE)
- .with_deviation("Currently the default is false, instead of true, as it seems to be 2s off in tests");
+ pub const TRUST_C_TIME: keys::Boolean = keys::Boolean::new_boolean("trustCTime", &config::Tree::CORE);
/// The `core.worktree` key.
pub const WORKTREE: keys::Any = keys::Any::new("worktree", &config::Tree::CORE)
.with_environment_override("GIT_WORK_TREE")
diff --git a/vendor/gix/src/filter.rs b/vendor/gix/src/filter.rs
index 935c91108..b106840a7 100644
--- a/vendor/gix/src/filter.rs
+++ b/vendor/gix/src/filter.rs
@@ -150,8 +150,8 @@ impl<'repo> Pipeline<'repo> {
&mut |_, attrs| {
entry.matching_attributes(attrs);
},
- &mut |rela_path, buf| -> Result<_, gix_odb::find::Error> {
- let entry = match index.entry_by_path(rela_path) {
+ &mut |buf| -> Result<_, gix_odb::find::Error> {
+ let entry = match index.entry_by_path(gix_path::into_bstr(rela_path).as_ref()) {
None => return Ok(None),
Some(entry) => entry,
};
diff --git a/vendor/gix/src/head/peel.rs b/vendor/gix/src/head/peel.rs
index a4f7c71b0..88e23636f 100644
--- a/vendor/gix/src/head/peel.rs
+++ b/vendor/gix/src/head/peel.rs
@@ -47,6 +47,10 @@ impl<'repo> Head<'repo> {
}
// TODO: tests
+ // TODO: Fix this! It's not consistently peeling tags. The whole peeling business should be reconsidered to do what people usually
+ // want which is to peel references, if present, and then peel objects with control over which object type to end at.
+ // Finding a good interface for that isn't easy as ideally, it's an iterator that shows the intermediate objects so the user
+ // can select which tag of a chain to choose.
/// Follow the symbolic reference of this head until its target object and peel it by following tag objects until there is no
/// more object to follow, and return that object id.
///
diff --git a/vendor/gix/src/lib.rs b/vendor/gix/src/lib.rs
index 672d5c91c..8218defc8 100644
--- a/vendor/gix/src/lib.rs
+++ b/vendor/gix/src/lib.rs
@@ -75,6 +75,11 @@
//! * [`git2::build::CheckoutBuilder::disable_filters()](https://docs.rs/git2/*/git2/build/struct.CheckoutBuilder.html#method.disable_filters) ➡ ⌠*(filters are always applied during checkouts)*
//! * [`git2::Repository::submodule_status()`](https://docs.rs/git2/*/git2/struct.Repository.html#method.submodule_status) âž¡ [`Submodule::state()`] - status provides more information and conveniences though, and an actual worktree status isn't performed.
//!
+//! #### Integrity checks
+//!
+//! `git2` by default performs integrity checks via [`strict_hash_verification()`](https://docs.rs/git2/latest/git2/opts/fn.strict_hash_verification.html) and
+//! [`strict_object_creation`](https://docs.rs/git2/latest/git2/opts/fn.strict_object_creation.html) which `gitoxide` *currently* **does not have**.
+//!
//! ### Feature Flags
#![cfg_attr(
feature = "document-features",
@@ -158,7 +163,8 @@ mod types;
#[cfg(any(feature = "excludes", feature = "attributes"))]
pub use types::AttributeStack;
pub use types::{
- Commit, Head, Id, Object, ObjectDetached, Reference, Remote, Repository, Tag, ThreadSafeRepository, Tree, Worktree,
+ Blob, Commit, Head, Id, Object, ObjectDetached, Reference, Remote, Repository, Tag, ThreadSafeRepository, Tree,
+ Worktree,
};
#[cfg(feature = "attributes")]
pub use types::{Pathspec, PathspecDetached, Submodule};
diff --git a/vendor/gix/src/object/blob.rs b/vendor/gix/src/object/blob.rs
index 00b3519ed..ef19c302a 100644
--- a/vendor/gix/src/object/blob.rs
+++ b/vendor/gix/src/object/blob.rs
@@ -1,3 +1,5 @@
+use crate::{Blob, ObjectDetached};
+
///
#[cfg(feature = "blob-diff")]
pub mod diff {
@@ -147,3 +149,27 @@ pub mod diff {
}
}
}
+
+/// Remove Lifetime
+impl Blob<'_> {
+ /// Create an owned instance of this object, copying our data in the process.
+ pub fn detached(&self) -> ObjectDetached {
+ ObjectDetached {
+ id: self.id,
+ kind: gix_object::Kind::Blob,
+ data: self.data.clone(),
+ }
+ }
+
+ /// Sever the connection to the `Repository` and turn this instance into a standalone object.
+ pub fn detach(self) -> ObjectDetached {
+ self.into()
+ }
+
+ /// Retrieve this instance's data, leaving its own data empty.
+ ///
+ /// This method works around the immovability of members of this type.
+ pub fn take_data(&mut self) -> Vec<u8> {
+ std::mem::take(&mut self.data)
+ }
+}
diff --git a/vendor/gix/src/object/commit.rs b/vendor/gix/src/object/commit.rs
index 1fb9eff67..bb2e3a99e 100644
--- a/vendor/gix/src/object/commit.rs
+++ b/vendor/gix/src/object/commit.rs
@@ -20,6 +20,7 @@ mod error {
pub use error::Error;
+/// Remove Lifetime
impl<'repo> Commit<'repo> {
/// Create an owned instance of this object, copying our data in the process.
pub fn detached(&self) -> ObjectDetached {
@@ -34,6 +35,13 @@ impl<'repo> Commit<'repo> {
pub fn detach(self) -> ObjectDetached {
self.into()
}
+
+ /// Retrieve this instance's encoded data, leaving its own data empty.
+ ///
+ /// This method works around the immovability of members of this type.
+ pub fn take_data(&mut self) -> Vec<u8> {
+ std::mem::take(&mut self.data)
+ }
}
impl<'repo> Commit<'repo> {
diff --git a/vendor/gix/src/object/impls.rs b/vendor/gix/src/object/impls.rs
index 3453b1b3c..5d2ad8160 100644
--- a/vendor/gix/src/object/impls.rs
+++ b/vendor/gix/src/object/impls.rs
@@ -1,13 +1,13 @@
use std::convert::TryFrom;
-use crate::{object, Commit, Object, ObjectDetached, Tag, Tree};
+use crate::{object, Blob, Commit, Object, ObjectDetached, Tag, Tree};
impl<'repo> From<Object<'repo>> for ObjectDetached {
fn from(mut v: Object<'repo>) -> Self {
ObjectDetached {
id: v.id,
kind: v.kind,
- data: std::mem::take(&mut v.data),
+ data: steal_from_freelist(&mut v.data),
}
}
}
@@ -17,7 +17,7 @@ impl<'repo> From<Commit<'repo>> for ObjectDetached {
ObjectDetached {
id: v.id,
kind: gix_object::Kind::Commit,
- data: std::mem::take(&mut v.data),
+ data: steal_from_freelist(&mut v.data),
}
}
}
@@ -27,7 +27,27 @@ impl<'repo> From<Tag<'repo>> for ObjectDetached {
ObjectDetached {
id: v.id,
kind: gix_object::Kind::Tag,
- data: std::mem::take(&mut v.data),
+ data: steal_from_freelist(&mut v.data),
+ }
+ }
+}
+
+impl<'repo> From<Blob<'repo>> for ObjectDetached {
+ fn from(mut v: Blob<'repo>) -> Self {
+ ObjectDetached {
+ id: v.id,
+ kind: gix_object::Kind::Blob,
+ data: steal_from_freelist(&mut v.data),
+ }
+ }
+}
+
+impl<'repo> From<Tree<'repo>> for ObjectDetached {
+ fn from(mut v: Tree<'repo>) -> Self {
+ ObjectDetached {
+ id: v.id,
+ kind: gix_object::Kind::Tree,
+ data: steal_from_freelist(&mut v.data),
}
}
}
@@ -59,11 +79,11 @@ impl<'repo> TryFrom<Object<'repo>> for Commit<'repo> {
type Error = Object<'repo>;
fn try_from(mut value: Object<'repo>) -> Result<Self, Self::Error> {
- let handle = value.repo;
+ let repo = value.repo;
match value.kind {
object::Kind::Commit => Ok(Commit {
id: value.id,
- repo: handle,
+ repo,
data: steal_from_freelist(&mut value.data),
}),
_ => Err(value),
@@ -75,11 +95,11 @@ impl<'repo> TryFrom<Object<'repo>> for Tag<'repo> {
type Error = Object<'repo>;
fn try_from(mut value: Object<'repo>) -> Result<Self, Self::Error> {
- let handle = value.repo;
+ let repo = value.repo;
match value.kind {
object::Kind::Tag => Ok(Tag {
id: value.id,
- repo: handle,
+ repo,
data: steal_from_freelist(&mut value.data),
}),
_ => Err(value),
@@ -91,11 +111,27 @@ impl<'repo> TryFrom<Object<'repo>> for Tree<'repo> {
type Error = Object<'repo>;
fn try_from(mut value: Object<'repo>) -> Result<Self, Self::Error> {
- let handle = value.repo;
+ let repo = value.repo;
match value.kind {
object::Kind::Tree => Ok(Tree {
id: value.id,
- repo: handle,
+ repo,
+ data: steal_from_freelist(&mut value.data),
+ }),
+ _ => Err(value),
+ }
+ }
+}
+
+impl<'repo> TryFrom<Object<'repo>> for Blob<'repo> {
+ type Error = Object<'repo>;
+
+ fn try_from(mut value: Object<'repo>) -> Result<Self, Self::Error> {
+ let repo = value.repo;
+ match value.kind {
+ object::Kind::Blob => Ok(Blob {
+ id: value.id,
+ repo,
data: steal_from_freelist(&mut value.data),
}),
_ => Err(value),
diff --git a/vendor/gix/src/object/mod.rs b/vendor/gix/src/object/mod.rs
index d0a37db6c..ca2b07f8b 100644
--- a/vendor/gix/src/object/mod.rs
+++ b/vendor/gix/src/object/mod.rs
@@ -4,7 +4,7 @@ use std::convert::TryInto;
use gix_hash::ObjectId;
pub use gix_object::Kind;
-use crate::{Commit, Id, Object, ObjectDetached, Tag, Tree};
+use crate::{Blob, Commit, Id, Object, ObjectDetached, Tag, Tree};
mod errors;
pub(crate) mod cache {
@@ -74,6 +74,14 @@ impl<'repo> Object<'repo> {
}
}
+ /// Transform this object into a blob, or panic if it is none.
+ pub fn into_blob(self) -> Blob<'repo> {
+ match self.try_into() {
+ Ok(tree) => tree,
+ Err(this) => panic!("Tried to use {} as tree, but was {}", this.id, this.kind),
+ }
+ }
+
/// Transform this object into a tree, or panic if it is none.
pub fn into_tree(self) -> Tree<'repo> {
match self.try_into() {
@@ -124,6 +132,15 @@ impl<'repo> Object<'repo> {
expected: gix_object::Kind::Tree,
})
}
+
+ /// Transform this object into a blob, or return it as part of the `Err` if it is no blob.
+ pub fn try_into_blob(self) -> Result<Blob<'repo>, try_into::Error> {
+ self.try_into().map_err(|this: Self| try_into::Error {
+ id: this.id,
+ actual: this.kind,
+ expected: gix_object::Kind::Blob,
+ })
+ }
}
impl<'repo> Object<'repo> {
diff --git a/vendor/gix/src/object/tag.rs b/vendor/gix/src/object/tag.rs
index 77eaaa259..1a7a3de86 100644
--- a/vendor/gix/src/object/tag.rs
+++ b/vendor/gix/src/object/tag.rs
@@ -1,4 +1,4 @@
-use crate::{ext::ObjectIdExt, Tag};
+use crate::{ext::ObjectIdExt, ObjectDetached, Tag};
impl<'repo> Tag<'repo> {
/// Decode the entire tag object and return it for accessing all tag information.
@@ -24,3 +24,27 @@ impl<'repo> Tag<'repo> {
gix_object::TagRefIter::from_bytes(&self.data).tagger()
}
}
+
+/// Remove Lifetime
+impl Tag<'_> {
+ /// Create an owned instance of this object, copying our data in the process.
+ pub fn detached(&self) -> ObjectDetached {
+ ObjectDetached {
+ id: self.id,
+ kind: gix_object::Kind::Tag,
+ data: self.data.clone(),
+ }
+ }
+
+ /// Sever the connection to the `Repository` and turn this instance into a standalone object.
+ pub fn detach(self) -> ObjectDetached {
+ self.into()
+ }
+
+ /// Retrieve this instance's encoded data, leaving its own data empty.
+ ///
+ /// This method works around the immovability of members of this type.
+ pub fn take_data(&mut self) -> Vec<u8> {
+ std::mem::take(&mut self.data)
+ }
+}
diff --git a/vendor/gix/src/object/tree/mod.rs b/vendor/gix/src/object/tree/mod.rs
index 5bf59a25c..e4dac24f8 100644
--- a/vendor/gix/src/object/tree/mod.rs
+++ b/vendor/gix/src/object/tree/mod.rs
@@ -4,7 +4,7 @@ pub use gix_object::tree::EntryMode;
use gix_object::{bstr::BStr, TreeRefIter};
use gix_odb::FindExt;
-use crate::{object::find, Id, Tree};
+use crate::{object::find, Id, ObjectDetached, Tree};
/// Initialization
impl<'repo> Tree<'repo> {
@@ -250,3 +250,27 @@ mod _impls {
}
}
}
+
+/// Remove Lifetime
+impl Tree<'_> {
+ /// Create an owned instance of this object, copying our data in the process.
+ pub fn detached(&self) -> ObjectDetached {
+ ObjectDetached {
+ id: self.id,
+ kind: gix_object::Kind::Tree,
+ data: self.data.clone(),
+ }
+ }
+
+ /// Sever the connection to the `Repository` and turn this instance into a standalone object.
+ pub fn detach(self) -> ObjectDetached {
+ self.into()
+ }
+
+ /// Retrieve this instance's encoded data, leaving its own data empty.
+ ///
+ /// This method works around the immovability of members of this type.
+ pub fn take_data(&mut self) -> Vec<u8> {
+ std::mem::take(&mut self.data)
+ }
+}
diff --git a/vendor/gix/src/reference/errors.rs b/vendor/gix/src/reference/errors.rs
index a931b3974..ff3802e94 100644
--- a/vendor/gix/src/reference/errors.rs
+++ b/vendor/gix/src/reference/errors.rs
@@ -22,8 +22,8 @@ pub mod edit {
///
pub mod peel {
- /// The error returned by [`Reference::peel_to_id_in_place(…)`][crate::Reference::peel_to_id_in_place()] and
- /// [`Reference::into_fully_peeled_id(…)`][crate::Reference::into_fully_peeled_id()].
+ /// The error returned by [`Reference::peel_to_id_in_place(…)`](crate::Reference::peel_to_id_in_place()) and
+ /// [`Reference::into_fully_peeled_id(…)`](crate::Reference::into_fully_peeled_id()).
#[derive(Debug, thiserror::Error)]
#[allow(missing_docs)]
pub enum Error {
@@ -36,7 +36,7 @@ pub mod peel {
///
pub mod head_id {
- /// The error returned by [`Repository::head_id(…)`][crate::Repository::head_id()].
+ /// The error returned by [`Repository::head_id(…)`](crate::Repository::head_id()).
#[derive(Debug, thiserror::Error)]
#[allow(missing_docs)]
pub enum Error {
@@ -51,7 +51,7 @@ pub mod head_id {
///
pub mod head_commit {
- /// The error returned by [`Repository::head_commit`(…)][crate::Repository::head_commit()].
+ /// The error returned by [`Repository::head_commit`(…)](crate::Repository::head_commit()).
#[derive(Debug, thiserror::Error)]
#[allow(missing_docs)]
pub enum Error {
@@ -63,6 +63,21 @@ pub mod head_commit {
}
///
+pub mod head_tree_id {
+ /// The error returned by [`Repository::head_tree_id`(…)](crate::Repository::head_tree_id()).
+ #[derive(Debug, thiserror::Error)]
+ #[allow(missing_docs)]
+ pub enum Error {
+ #[error(transparent)]
+ Head(#[from] crate::reference::find::existing::Error),
+ #[error(transparent)]
+ PeelToCommit(#[from] crate::head::peel::to_commit::Error),
+ #[error(transparent)]
+ DecodeCommit(#[from] gix_object::decode::Error),
+ }
+}
+
+///
pub mod find {
///
pub mod existing {
diff --git a/vendor/gix/src/reference/mod.rs b/vendor/gix/src/reference/mod.rs
index e80057fb4..2d32f595d 100644
--- a/vendor/gix/src/reference/mod.rs
+++ b/vendor/gix/src/reference/mod.rs
@@ -10,7 +10,7 @@ pub mod iter;
pub mod remote;
mod errors;
-pub use errors::{edit, find, head_commit, head_id, peel};
+pub use errors::{edit, find, head_commit, head_id, head_tree_id, peel};
use crate::ext::ObjectIdExt;
diff --git a/vendor/gix/src/repository/cache.rs b/vendor/gix/src/repository/cache.rs
index 7dcd844e6..03c2ff019 100644
--- a/vendor/gix/src/repository/cache.rs
+++ b/vendor/gix/src/repository/cache.rs
@@ -11,7 +11,7 @@ impl crate::Repository {
pub fn object_cache_size(&mut self, bytes: impl Into<Option<usize>>) {
let bytes = bytes.into();
match bytes {
- Some(bytes) if bytes == 0 => self.objects.unset_object_cache(),
+ Some(0) => self.objects.unset_object_cache(),
Some(bytes) => self
.objects
.set_object_cache(move || Box::new(crate::object::cache::MemoryCappedHashmap::new(bytes))),
diff --git a/vendor/gix/src/repository/index.rs b/vendor/gix/src/repository/index.rs
index a21b138a5..59666fc5f 100644
--- a/vendor/gix/src/repository/index.rs
+++ b/vendor/gix/src/repository/index.rs
@@ -55,6 +55,16 @@ impl crate::Repository {
})
}
+ /// Return the shared worktree index if present, or return a new empty one which has an association to the place where the index would be.
+ pub fn index_or_empty(&self) -> Result<worktree::Index, worktree::open_index::Error> {
+ Ok(self.try_index()?.unwrap_or_else(|| {
+ worktree::Index::new(gix_fs::FileSnapshot::new(gix_index::File::from_state(
+ gix_index::State::new(self.object_hash()),
+ self.index_path(),
+ )))
+ }))
+ }
+
/// Return a shared worktree index which is updated automatically if the in-memory snapshot has become stale as the underlying file
/// on disk has changed, or `None` if no such file exists.
///
diff --git a/vendor/gix/src/repository/location.rs b/vendor/gix/src/repository/location.rs
index 5811e7bf9..8ee907ca9 100644
--- a/vendor/gix/src/repository/location.rs
+++ b/vendor/gix/src/repository/location.rs
@@ -37,6 +37,7 @@ impl crate::Repository {
}
/// Return the work tree containing all checked out files, if there is one.
+ #[doc(alias = "workdir", alias = "git2")]
pub fn work_dir(&self) -> Option<&std::path::Path> {
self.work_tree.as_deref()
}
diff --git a/vendor/gix/src/repository/object.rs b/vendor/gix/src/repository/object.rs
index c156971d0..0b894939f 100644
--- a/vendor/gix/src/repository/object.rs
+++ b/vendor/gix/src/repository/object.rs
@@ -10,7 +10,7 @@ use gix_ref::{
};
use smallvec::SmallVec;
-use crate::{commit, ext::ObjectIdExt, object, tag, Id, Object, Reference, Tree};
+use crate::{commit, ext::ObjectIdExt, object, tag, Blob, Id, Object, Reference, Tree};
/// Methods related to object creation.
impl crate::Repository {
@@ -26,7 +26,7 @@ impl crate::Repository {
#[momo]
pub fn find_object(&self, id: impl Into<ObjectId>) -> Result<Object<'_>, object::find::existing::Error> {
let id = id.into();
- if id == gix_hash::ObjectId::empty_tree(self.object_hash()) {
+ if id == ObjectId::empty_tree(self.object_hash()) {
return Ok(Object {
id,
kind: gix_object::Kind::Tree,
@@ -46,7 +46,7 @@ impl crate::Repository {
#[momo]
pub fn find_header(&self, id: impl Into<ObjectId>) -> Result<gix_odb::find::Header, object::find::existing::Error> {
let id = id.into();
- if id == gix_hash::ObjectId::empty_tree(self.object_hash()) {
+ if id == ObjectId::empty_tree(self.object_hash()) {
return Ok(gix_odb::find::Header::Loose {
kind: gix_object::Kind::Tree,
size: 0,
@@ -55,6 +55,25 @@ impl crate::Repository {
self.objects.header(id)
}
+ /// Return `true` if `id` exists in the object database.
+ ///
+ /// # Performance
+ ///
+ /// This method can be slow if the underlying [object database](crate::Repository::objects) has
+ /// an unsuitable [RefreshMode](gix_odb::store::RefreshMode) and `id` is not likely to exist.
+ /// Use [`repo.objects.refresh_never()`](gix_odb::store::Handle::refresh_never) to avoid expensive
+ /// IO-bound refreshes if an object wasn't found.
+ #[doc(alias = "exists", alias = "git2")]
+ #[momo]
+ pub fn has_object(&self, id: impl AsRef<gix_hash::oid>) -> bool {
+ let id = id.as_ref();
+ if id == ObjectId::empty_tree(self.object_hash()) {
+ true
+ } else {
+ self.objects.contains(id)
+ }
+ }
+
/// Obtain information about an object without fully decoding it, or `None` if the object doesn't exist.
///
/// Note that despite being cheaper than [`Self::try_find_object()`], there is still some effort traversing delta-chains.
@@ -64,7 +83,7 @@ impl crate::Repository {
id: impl Into<ObjectId>,
) -> Result<Option<gix_odb::find::Header>, object::find::Error> {
let id = id.into();
- if id == gix_hash::ObjectId::empty_tree(self.object_hash()) {
+ if id == ObjectId::empty_tree(self.object_hash()) {
return Ok(Some(gix_odb::find::Header::Loose {
kind: gix_object::Kind::Tree,
size: 0,
@@ -77,7 +96,7 @@ impl crate::Repository {
#[momo]
pub fn try_find_object(&self, id: impl Into<ObjectId>) -> Result<Option<Object<'_>>, object::find::Error> {
let id = id.into();
- if id == gix_hash::ObjectId::empty_tree(self.object_hash()) {
+ if id == ObjectId::empty_tree(self.object_hash()) {
return Ok(Some(Object {
id,
kind: gix_object::Kind::Tree,
@@ -236,7 +255,7 @@ impl crate::Repository {
reference: FullName,
message: &str,
tree: ObjectId,
- parents: SmallVec<[gix_hash::ObjectId; 1]>,
+ parents: SmallVec<[ObjectId; 1]>,
) -> Result<Id<'_>, commit::Error> {
use gix_ref::{
transaction::{Change, RefEdit},
@@ -310,13 +329,25 @@ impl crate::Repository {
self.commit_as(committer, author, reference, message, tree, parents)
}
- /// Return an empty tree object, suitable for [getting changes](crate::Tree::changes()).
+ /// Return an empty tree object, suitable for [getting changes](Tree::changes()).
///
- /// Note that it is special and doesn't physically exist in the object database even though it can be returned.
+ /// Note that the returned object is special and doesn't necessarily physically exist in the object database.
/// This means that this object can be used in an uninitialized, empty repository which would report to have no objects at all.
pub fn empty_tree(&self) -> Tree<'_> {
- self.find_object(gix_hash::ObjectId::empty_tree(self.object_hash()))
+ self.find_object(ObjectId::empty_tree(self.object_hash()))
.expect("always present")
.into_tree()
}
+
+ /// Return an empty blob object.
+ ///
+ /// Note that the returned object is special and doesn't necessarily physically exist in the object database.
+ /// This means that this object can be used in an uninitialized, empty repository which would report to have no objects at all.
+ pub fn empty_blob(&self) -> Blob<'_> {
+ Blob {
+ id: gix_hash::ObjectId::empty_blob(self.object_hash()),
+ data: Vec::new(),
+ repo: self,
+ }
+ }
}
diff --git a/vendor/gix/src/repository/reference.rs b/vendor/gix/src/repository/reference.rs
index 5a14c60b5..e57ca63c0 100644
--- a/vendor/gix/src/repository/reference.rs
+++ b/vendor/gix/src/repository/reference.rs
@@ -212,6 +212,15 @@ impl crate::Repository {
Ok(self.head()?.peel_to_commit_in_place()?)
}
+ /// Return the tree id the `HEAD` reference currently points to after peeling it fully.
+ ///
+ /// Note that this may fail for various reasons, most notably because the repository
+ /// is freshly initialized and doesn't have any commits yet. It could also fail if the
+ /// head does not point to a commit.
+ pub fn head_tree_id(&self) -> Result<crate::Id<'_>, reference::head_tree_id::Error> {
+ Ok(self.head()?.peel_to_commit_in_place()?.tree_id()?)
+ }
+
/// Find the reference with the given partial or full `name`, like `main`, `HEAD`, `heads/branch` or `origin/other`,
/// or return an error if it wasn't found.
///
diff --git a/vendor/gix/src/types.rs b/vendor/gix/src/types.rs
index 0739cdd25..0dc81abae 100644
--- a/vendor/gix/src/types.rs
+++ b/vendor/gix/src/types.rs
@@ -31,6 +31,7 @@ pub struct Id<'r> {
}
/// A decoded object with a reference to its owning repository.
+#[derive(Clone)]
pub struct Object<'repo> {
/// The id of the object
pub id: ObjectId,
@@ -47,7 +48,24 @@ impl<'a> Drop for Object<'a> {
}
}
+/// A blob along with access to its owning repository.
+#[derive(Clone)]
+pub struct Blob<'repo> {
+ /// The id of the tree
+ pub id: ObjectId,
+ /// The blob's data.
+ pub data: Vec<u8>,
+ pub(crate) repo: &'repo Repository,
+}
+
+impl<'a> Drop for Blob<'a> {
+ fn drop(&mut self) {
+ self.repo.reuse_buffer(&mut self.data);
+ }
+}
+
/// A decoded tree object with access to its owning repository.
+#[derive(Clone)]
pub struct Tree<'repo> {
/// The id of the tree
pub id: ObjectId,
@@ -63,6 +81,7 @@ impl<'a> Drop for Tree<'a> {
}
/// A decoded tag object with access to its owning repository.
+#[derive(Clone)]
pub struct Tag<'repo> {
/// The id of the tree
pub id: ObjectId,
@@ -78,6 +97,7 @@ impl<'a> Drop for Tag<'a> {
}
/// A decoded commit object with access to its owning repository.
+#[derive(Clone)]
pub struct Commit<'repo> {
/// The id of the commit
pub id: ObjectId,
diff --git a/vendor/hashbrown/.cargo-checksum.json b/vendor/hashbrown/.cargo-checksum.json
index aed788fc5..6bb5ac55f 100644
--- a/vendor/hashbrown/.cargo-checksum.json
+++ b/vendor/hashbrown/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"f4769b4c6f44e09c379f55694f89a189620a78586a030a6c6c8d183265c31c52","Cargo.toml":"7a3568541b22e0e7dd0a8c2227699c84474673870f5e46dbb7db61ac2eac391f","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"ff8f68cb076caf8cefe7a6430d4ac086ce6af2ca8ce2c4e5a2004d4552ef52a2","README.md":"00e45d59f6f8537aa0f8e3dec17e24e9838b52f35aa9c1815c71ab1e8f63888e","benches/bench.rs":"ef7bc025922f077d307c565640c005d056e3d6c1713448a95aae92d3c22c1005","benches/insert_unique_unchecked.rs":"cb84275f22d5f95a5ac995ac6b2df74ffcf342765b401d27c95f2955c7b7cb9f","clippy.toml":"7535949f908c6d9aea4f9a9f3a7625552c93fc29e963d059d40f4def9d77ea7b","src/external_trait_impls/mod.rs":"0625e6a5e3b8ecc8901a12aeeea54393fd84617fb3a14d98a34d2d2bddb8d257","src/external_trait_impls/rayon/helpers.rs":"ba105bf0853ebc45157f22116ad0f55d3bdab75e721d8e7a677c7b912d0c0c6d","src/external_trait_impls/rayon/map.rs":"c0f50c8c6f2f70c70994a3243d92de3bbda5e78519c906c4f81f207ed63e5cc3","src/external_trait_impls/rayon/mod.rs":"156de9c1ad0123334ea3b7e5a17444faf1b8bf971aa88a1f23e2f2d1c3021141","src/external_trait_impls/rayon/raw.rs":"e62c5f3ca5fffea47357e64b6f8c34cec94af62d9bd28a2b87934da46c22b66e","src/external_trait_impls/rayon/set.rs":"c4c44d44e56c2f59e9e1355662e29d8744ac96645ca4414127a359fb46cb0fbf","src/external_trait_impls/rkyv/hash_map.rs":"7abe24318143b776016052b05840656afc858b1ba5252f3d418d61972477f53d","src/external_trait_impls/rkyv/hash_set.rs":"38d969125d17d606492ec4ec9fc06b7e7118eb903240dacf40de21b9b06fa5c8","src/external_trait_impls/rkyv/mod.rs":"54399ce5574fd1d84b7b0cb4238fa3e898575e89a6724299be009d2172bda02e","src/external_trait_impls/serde.rs":"0bc1a1f218d1ae7a5262557a5e3737b9334caf7d50c136dbdc75ff75680c223b","src/lib.rs":"662765875308544b71a46e20f18782e7a3246fddb11496206e296a24b78b56a5","src/macros.rs":"98a26b908fc0fbe6a58d008a317e550013d615eb3cc17a5054a573c62c1d74cb","src/map.rs":"4f4bdc2a2eb3c4395d655f5ce12d217b82f6edeef3579efcb6b18d08345f1d52","src/raw/alloc.rs":"902f8588d0fdee3e5c3dc02410f41d4b38ac88843727387f929f3186b3a2d322","src/raw/bitmask.rs":"3b3dce8d6a48856ada19085abf43908f124ab3419fcf434b9ca64d7bff243f67","src/raw/generic.rs":"efc5e603be3e9a17935aef1836a38ce01c78a0093b2af0671548eb5459b37921","src/raw/mod.rs":"cecbe517b36042094818887d41226bdafd78c6f67657540a8c1ea020cd5d302f","src/raw/neon.rs":"9907d8ebc36fc3df562dde478ea9b72213fda65288a304718d8647f0029dc9ad","src/raw/sse2.rs":"39038e3344e49f4638e211bcdbf56565ac53e90dce56172cc3b526fea911c2af","src/rustc_entry.rs":"19d3346843bc62c7c0165e8824d26355ab2666086f3088b1150a8b3f59376a76","src/scopeguard.rs":"1a246e08a63c06cd8ad934bd7da229421bf804f991ae93cd7e242da27ca6c601","src/set.rs":"349a1523656a8a3f364b5313d98a969444717461a7ab7133c8e5f215ac2c329d","tests/equivalent_trait.rs":"84faa3fe9d67c375d03fec81f0f1412c47862477d42e84e7d235258236338d5b","tests/hasher.rs":"9a8fdf67e4415618e16729969c386eefe71408cded5d46cf7b67d969276a3452","tests/raw.rs":"43ed2f98877533a0905611d9a30f26b183dd3e103e3856eeab80e7b8ac7894d3","tests/rayon.rs":"39cb24ab45fce8087bb54948715c8b6973ebfba1a325292b5b3cd9aab50b5fd2","tests/serde.rs":"6bac8054db722dd049901b37a6e006535bac30f425eb5cd91af19b5bc1dfe78e","tests/set.rs":"9f8011c29d1059aadb54b6dd4623521d5178b4278b4a56021ef2cee4bbb19fd9"},"package":"2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"9cff035ecd949ca041cae2ab20be5c642360b369a499286ea830d4a48bf3b284","Cargo.toml":"a23bc72f1aed8ac540796975437fb8e158e7b4a186c1d646711717f57c4473ce","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"ff8f68cb076caf8cefe7a6430d4ac086ce6af2ca8ce2c4e5a2004d4552ef52a2","README.md":"84c222ce49510535419d338b7532a72a2bf22b7466e44de78d92d25b6c7d636b","benches/bench.rs":"ef7bc025922f077d307c565640c005d056e3d6c1713448a95aae92d3c22c1005","benches/insert_unique_unchecked.rs":"cb84275f22d5f95a5ac995ac6b2df74ffcf342765b401d27c95f2955c7b7cb9f","clippy.toml":"7535949f908c6d9aea4f9a9f3a7625552c93fc29e963d059d40f4def9d77ea7b","src/external_trait_impls/mod.rs":"0625e6a5e3b8ecc8901a12aeeea54393fd84617fb3a14d98a34d2d2bddb8d257","src/external_trait_impls/rayon/helpers.rs":"ba105bf0853ebc45157f22116ad0f55d3bdab75e721d8e7a677c7b912d0c0c6d","src/external_trait_impls/rayon/map.rs":"96fdf39b3f601f77152d7ce84541b8f51f32b9274b7da9c294862892e721a5d8","src/external_trait_impls/rayon/mod.rs":"126edc882501dddd25e442d9236508b5b386eb8c0a9f5d654f2dd081086c1616","src/external_trait_impls/rayon/raw.rs":"04012fb2e99648819b4bc0044107ed3cb94013e242b7865075c5bd9ebf1b6865","src/external_trait_impls/rayon/set.rs":"7539348ff7bc6e3cce6b3c019d62dc401eea0138c578fef729c2593e8ead1cfa","src/external_trait_impls/rayon/table.rs":"8778d29509c68b5b7cb66859db025d3939ce22e7cf370b20ff3dea4fe4b29fd0","src/external_trait_impls/rkyv/hash_map.rs":"7abe24318143b776016052b05840656afc858b1ba5252f3d418d61972477f53d","src/external_trait_impls/rkyv/hash_set.rs":"38d969125d17d606492ec4ec9fc06b7e7118eb903240dacf40de21b9b06fa5c8","src/external_trait_impls/rkyv/mod.rs":"54399ce5574fd1d84b7b0cb4238fa3e898575e89a6724299be009d2172bda02e","src/external_trait_impls/serde.rs":"6dbe104dee16b453b6b048b541c6e02c6d067d970dfafd243fc4360288b0168c","src/lib.rs":"fbc05970d6458046590e9c4a33fc9a6fdc94ef725b9b00354fa609e207e6ae50","src/macros.rs":"98a26b908fc0fbe6a58d008a317e550013d615eb3cc17a5054a573c62c1d74cb","src/map.rs":"688f2ccecd38f32c66c7fc905703f363dd88511fc29c99bc260bb6973db66430","src/raw/alloc.rs":"902f8588d0fdee3e5c3dc02410f41d4b38ac88843727387f929f3186b3a2d322","src/raw/bitmask.rs":"3b3dce8d6a48856ada19085abf43908f124ab3419fcf434b9ca64d7bff243f67","src/raw/generic.rs":"efc5e603be3e9a17935aef1836a38ce01c78a0093b2af0671548eb5459b37921","src/raw/mod.rs":"73038e430bd54d56c484b6798e67dece4d67b3cf86031639a819629e8376d673","src/raw/neon.rs":"9907d8ebc36fc3df562dde478ea9b72213fda65288a304718d8647f0029dc9ad","src/raw/sse2.rs":"39038e3344e49f4638e211bcdbf56565ac53e90dce56172cc3b526fea911c2af","src/rustc_entry.rs":"8142ed89b50155602ef8c1628382bd62d3ee903920fe49d403d4100a278c6ba4","src/scopeguard.rs":"1a246e08a63c06cd8ad934bd7da229421bf804f991ae93cd7e242da27ca6c601","src/set.rs":"4069da81fc978f6d3b9605d8cf349c2b1b8c7766ab6bf3fec83b6442718fdce7","src/table.rs":"b64e4c4910b911175ae0eb72e744986ce695d3ecc0b52b70d916e3adefdd1908","tests/equivalent_trait.rs":"84faa3fe9d67c375d03fec81f0f1412c47862477d42e84e7d235258236338d5b","tests/hasher.rs":"9a8fdf67e4415618e16729969c386eefe71408cded5d46cf7b67d969276a3452","tests/raw.rs":"43ed2f98877533a0905611d9a30f26b183dd3e103e3856eeab80e7b8ac7894d3","tests/rayon.rs":"39cb24ab45fce8087bb54948715c8b6973ebfba1a325292b5b3cd9aab50b5fd2","tests/serde.rs":"6bac8054db722dd049901b37a6e006535bac30f425eb5cd91af19b5bc1dfe78e","tests/set.rs":"9f8011c29d1059aadb54b6dd4623521d5178b4278b4a56021ef2cee4bbb19fd9"},"package":"f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156"} \ No newline at end of file
diff --git a/vendor/hashbrown/CHANGELOG.md b/vendor/hashbrown/CHANGELOG.md
index 8837c51ca..0e13b230c 100644
--- a/vendor/hashbrown/CHANGELOG.md
+++ b/vendor/hashbrown/CHANGELOG.md
@@ -7,6 +7,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
## [Unreleased]
+## [v0.14.2] - 2023-10-19
+
+### Added
+
+- `HashTable` type which provides a low-level but safe API with explicit hashing. (#466)
+
+### Fixed
+
+- Disabled the use of NEON instructions on big-endian ARM. (#475)
+- Disabled the use of NEON instructions on Miri. (#476)
+
+## [v0.14.1] - 2023-09-28
+
+### Added
+
+- Allow serializing `HashMap`s that use a custom allocator. (#449)
+
+### Changed
+
+- Use the `Equivalent` trait from the `equivalent` crate. (#442)
+- Slightly improved performance of table resizing. (#451)
+- Relaxed MSRV to 1.63.0. (#457)
+- Removed `Clone` requirement from custom allocators. (#468)
+
+### Fixed
+
+- Fixed custom allocators being leaked in some situations. (#439, #465)
+
## [v0.14.0] - 2023-06-01
### Added
@@ -22,7 +50,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
### Changed
- Optimized insertion to only perform a single lookup. (#277)
-- `DrainFilter` has been renamed to `ExtractIf` and no longer drops remaining
+- `DrainFilter` (`drain_filter`) has been renamed to `ExtractIf` and no longer drops remaining
elements when the iterator is dropped. #(374)
- Bumped MSRV to 1.64.0. (#431)
- `{Map,Set}::raw_table` now returns an immutable reference. (#404)
@@ -433,7 +461,9 @@ This release was _yanked_ due to a breaking change for users of `no-default-feat
- Initial release
-[Unreleased]: https://github.com/rust-lang/hashbrown/compare/v0.14.0...HEAD
+[Unreleased]: https://github.com/rust-lang/hashbrown/compare/v0.14.2...HEAD
+[v0.14.2]: https://github.com/rust-lang/hashbrown/compare/v0.14.1...v0.14.2
+[v0.14.1]: https://github.com/rust-lang/hashbrown/compare/v0.14.0...v0.14.1
[v0.14.0]: https://github.com/rust-lang/hashbrown/compare/v0.13.2...v0.14.0
[v0.13.2]: https://github.com/rust-lang/hashbrown/compare/v0.13.1...v0.13.2
[v0.13.1]: https://github.com/rust-lang/hashbrown/compare/v0.12.3...v0.13.1
diff --git a/vendor/hashbrown/Cargo.toml b/vendor/hashbrown/Cargo.toml
index 27e3f9b4f..2f374f446 100644
--- a/vendor/hashbrown/Cargo.toml
+++ b/vendor/hashbrown/Cargo.toml
@@ -11,9 +11,9 @@
[package]
edition = "2021"
-rust-version = "1.64.0"
+rust-version = "1.63.0"
name = "hashbrown"
-version = "0.14.0"
+version = "0.14.2"
authors = ["Amanieu d'Antras <amanieu@gmail.com>"]
exclude = [
".github",
@@ -41,6 +41,7 @@ features = [
"serde",
"raw",
]
+rustdoc-args = ["--generate-link-to-definition"]
[dependencies.ahash]
version = "0.8.0"
@@ -67,6 +68,11 @@ version = "1.0.0"
optional = true
package = "rustc-std-workspace-core"
+[dependencies.equivalent]
+version = "1.0"
+optional = true
+default-features = false
+
[dependencies.rayon]
version = "1.0"
optional = true
diff --git a/vendor/hashbrown/README.md b/vendor/hashbrown/README.md
index d0c4261e9..5eaef8bd0 100644
--- a/vendor/hashbrown/README.md
+++ b/vendor/hashbrown/README.md
@@ -4,7 +4,7 @@ hashbrown
[![Build Status](https://github.com/rust-lang/hashbrown/actions/workflows/rust.yml/badge.svg)](https://github.com/rust-lang/hashbrown/actions)
[![Crates.io](https://img.shields.io/crates/v/hashbrown.svg)](https://crates.io/crates/hashbrown)
[![Documentation](https://docs.rs/hashbrown/badge.svg)](https://docs.rs/hashbrown)
-[![Rust](https://img.shields.io/badge/rust-1.64.0%2B-blue.svg?maxAge=3600)](https://github.com/rust-lang/hashbrown)
+[![Rust](https://img.shields.io/badge/rust-1.63.0%2B-blue.svg?maxAge=3600)](https://github.com/rust-lang/hashbrown)
This crate is a Rust port of Google's high-performance [SwissTable] hash
map, adapted to make it a drop-in replacement for Rust's standard `HashMap`
diff --git a/vendor/hashbrown/src/external_trait_impls/rayon/map.rs b/vendor/hashbrown/src/external_trait_impls/rayon/map.rs
index 1124bfd32..2534dc9b2 100644
--- a/vendor/hashbrown/src/external_trait_impls/rayon/map.rs
+++ b/vendor/hashbrown/src/external_trait_impls/rayon/map.rs
@@ -232,11 +232,11 @@ impl<K: Eq + Hash, V: fmt::Debug> fmt::Debug for ParValuesMut<'_, K, V> {
/// [`into_par_iter`]: /hashbrown/struct.HashMap.html#method.into_par_iter
/// [`HashMap`]: /hashbrown/struct.HashMap.html
/// [`IntoParallelIterator`]: https://docs.rs/rayon/1.0/rayon/iter/trait.IntoParallelIterator.html
-pub struct IntoParIter<K, V, A: Allocator + Clone = Global> {
+pub struct IntoParIter<K, V, A: Allocator = Global> {
inner: RawIntoParIter<(K, V), A>,
}
-impl<K: Send, V: Send, A: Allocator + Clone + Send> ParallelIterator for IntoParIter<K, V, A> {
+impl<K: Send, V: Send, A: Allocator + Send> ParallelIterator for IntoParIter<K, V, A> {
type Item = (K, V);
#[cfg_attr(feature = "inline-more", inline)]
@@ -248,9 +248,7 @@ impl<K: Send, V: Send, A: Allocator + Clone + Send> ParallelIterator for IntoPar
}
}
-impl<K: fmt::Debug + Eq + Hash, V: fmt::Debug, A: Allocator + Clone> fmt::Debug
- for IntoParIter<K, V, A>
-{
+impl<K: fmt::Debug + Eq + Hash, V: fmt::Debug, A: Allocator> fmt::Debug for IntoParIter<K, V, A> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
ParIter {
inner: unsafe { self.inner.par_iter() },
@@ -267,11 +265,11 @@ impl<K: fmt::Debug + Eq + Hash, V: fmt::Debug, A: Allocator + Clone> fmt::Debug
///
/// [`par_drain`]: /hashbrown/struct.HashMap.html#method.par_drain
/// [`HashMap`]: /hashbrown/struct.HashMap.html
-pub struct ParDrain<'a, K, V, A: Allocator + Clone = Global> {
+pub struct ParDrain<'a, K, V, A: Allocator = Global> {
inner: RawParDrain<'a, (K, V), A>,
}
-impl<K: Send, V: Send, A: Allocator + Clone + Sync> ParallelIterator for ParDrain<'_, K, V, A> {
+impl<K: Send, V: Send, A: Allocator + Sync> ParallelIterator for ParDrain<'_, K, V, A> {
type Item = (K, V);
#[cfg_attr(feature = "inline-more", inline)]
@@ -283,9 +281,7 @@ impl<K: Send, V: Send, A: Allocator + Clone + Sync> ParallelIterator for ParDrai
}
}
-impl<K: fmt::Debug + Eq + Hash, V: fmt::Debug, A: Allocator + Clone> fmt::Debug
- for ParDrain<'_, K, V, A>
-{
+impl<K: fmt::Debug + Eq + Hash, V: fmt::Debug, A: Allocator> fmt::Debug for ParDrain<'_, K, V, A> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
ParIter {
inner: unsafe { self.inner.par_iter() },
@@ -295,7 +291,7 @@ impl<K: fmt::Debug + Eq + Hash, V: fmt::Debug, A: Allocator + Clone> fmt::Debug
}
}
-impl<K: Sync, V: Sync, S, A: Allocator + Clone> HashMap<K, V, S, A> {
+impl<K: Sync, V: Sync, S, A: Allocator> HashMap<K, V, S, A> {
/// Visits (potentially in parallel) immutably borrowed keys in an arbitrary order.
#[cfg_attr(feature = "inline-more", inline)]
pub fn par_keys(&self) -> ParKeys<'_, K, V> {
@@ -315,7 +311,7 @@ impl<K: Sync, V: Sync, S, A: Allocator + Clone> HashMap<K, V, S, A> {
}
}
-impl<K: Send, V: Send, S, A: Allocator + Clone> HashMap<K, V, S, A> {
+impl<K: Send, V: Send, S, A: Allocator> HashMap<K, V, S, A> {
/// Visits (potentially in parallel) mutably borrowed values in an arbitrary order.
#[cfg_attr(feature = "inline-more", inline)]
pub fn par_values_mut(&mut self) -> ParValuesMut<'_, K, V> {
@@ -340,7 +336,7 @@ where
K: Eq + Hash + Sync,
V: PartialEq + Sync,
S: BuildHasher + Sync,
- A: Allocator + Clone + Sync,
+ A: Allocator + Sync,
{
/// Returns `true` if the map is equal to another,
/// i.e. both maps contain the same keys mapped to the same values.
@@ -354,9 +350,7 @@ where
}
}
-impl<K: Send, V: Send, S, A: Allocator + Clone + Send> IntoParallelIterator
- for HashMap<K, V, S, A>
-{
+impl<K: Send, V: Send, S, A: Allocator + Send> IntoParallelIterator for HashMap<K, V, S, A> {
type Item = (K, V);
type Iter = IntoParIter<K, V, A>;
@@ -368,9 +362,7 @@ impl<K: Send, V: Send, S, A: Allocator + Clone + Send> IntoParallelIterator
}
}
-impl<'a, K: Sync, V: Sync, S, A: Allocator + Clone> IntoParallelIterator
- for &'a HashMap<K, V, S, A>
-{
+impl<'a, K: Sync, V: Sync, S, A: Allocator> IntoParallelIterator for &'a HashMap<K, V, S, A> {
type Item = (&'a K, &'a V);
type Iter = ParIter<'a, K, V>;
@@ -383,9 +375,7 @@ impl<'a, K: Sync, V: Sync, S, A: Allocator + Clone> IntoParallelIterator
}
}
-impl<'a, K: Sync, V: Send, S, A: Allocator + Clone> IntoParallelIterator
- for &'a mut HashMap<K, V, S, A>
-{
+impl<'a, K: Sync, V: Send, S, A: Allocator> IntoParallelIterator for &'a mut HashMap<K, V, S, A> {
type Item = (&'a K, &'a mut V);
type Iter = ParIterMut<'a, K, V>;
@@ -424,7 +414,7 @@ where
K: Eq + Hash + Send,
V: Send,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
fn par_extend<I>(&mut self, par_iter: I)
where
@@ -440,7 +430,7 @@ where
K: Copy + Eq + Hash + Sync,
V: Copy + Sync,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
fn par_extend<I>(&mut self, par_iter: I)
where
@@ -456,7 +446,7 @@ where
K: Eq + Hash,
S: BuildHasher,
I: IntoParallelIterator,
- A: Allocator + Clone,
+ A: Allocator,
HashMap<K, V, S, A>: Extend<I::Item>,
{
let (list, len) = super::helpers::collect(par_iter);
diff --git a/vendor/hashbrown/src/external_trait_impls/rayon/mod.rs b/vendor/hashbrown/src/external_trait_impls/rayon/mod.rs
index 99337a1ce..61ca69b61 100644
--- a/vendor/hashbrown/src/external_trait_impls/rayon/mod.rs
+++ b/vendor/hashbrown/src/external_trait_impls/rayon/mod.rs
@@ -2,3 +2,4 @@ mod helpers;
pub(crate) mod map;
pub(crate) mod raw;
pub(crate) mod set;
+pub(crate) mod table;
diff --git a/vendor/hashbrown/src/external_trait_impls/rayon/raw.rs b/vendor/hashbrown/src/external_trait_impls/rayon/raw.rs
index 883303e27..612be47a5 100644
--- a/vendor/hashbrown/src/external_trait_impls/rayon/raw.rs
+++ b/vendor/hashbrown/src/external_trait_impls/rayon/raw.rs
@@ -1,7 +1,6 @@
use crate::raw::Bucket;
use crate::raw::{Allocator, Global, RawIter, RawIterRange, RawTable};
use crate::scopeguard::guard;
-use alloc::alloc::dealloc;
use core::marker::PhantomData;
use core::mem;
use core::ptr::NonNull;
@@ -76,18 +75,18 @@ impl<T> UnindexedProducer for ParIterProducer<T> {
}
/// Parallel iterator which consumes a table and returns elements.
-pub struct RawIntoParIter<T, A: Allocator + Clone = Global> {
+pub struct RawIntoParIter<T, A: Allocator = Global> {
table: RawTable<T, A>,
}
-impl<T, A: Allocator + Clone> RawIntoParIter<T, A> {
+impl<T, A: Allocator> RawIntoParIter<T, A> {
#[cfg_attr(feature = "inline-more", inline)]
pub(super) unsafe fn par_iter(&self) -> RawParIter<T> {
self.table.par_iter()
}
}
-impl<T: Send, A: Allocator + Clone + Send> ParallelIterator for RawIntoParIter<T, A> {
+impl<T: Send, A: Allocator + Send> ParallelIterator for RawIntoParIter<T, A> {
type Item = T;
#[cfg_attr(feature = "inline-more", inline)]
@@ -97,9 +96,9 @@ impl<T: Send, A: Allocator + Clone + Send> ParallelIterator for RawIntoParIter<T
{
let iter = unsafe { self.table.iter().iter };
let _guard = guard(self.table.into_allocation(), |alloc| {
- if let Some((ptr, layout)) = *alloc {
+ if let Some((ptr, layout, ref alloc)) = *alloc {
unsafe {
- dealloc(ptr.as_ptr(), layout);
+ alloc.deallocate(ptr, layout);
}
}
});
@@ -109,23 +108,23 @@ impl<T: Send, A: Allocator + Clone + Send> ParallelIterator for RawIntoParIter<T
}
/// Parallel iterator which consumes elements without freeing the table storage.
-pub struct RawParDrain<'a, T, A: Allocator + Clone = Global> {
+pub struct RawParDrain<'a, T, A: Allocator = Global> {
// We don't use a &'a mut RawTable<T> because we want RawParDrain to be
// covariant over T.
table: NonNull<RawTable<T, A>>,
marker: PhantomData<&'a RawTable<T, A>>,
}
-unsafe impl<T: Send, A: Allocator + Clone> Send for RawParDrain<'_, T, A> {}
+unsafe impl<T: Send, A: Allocator> Send for RawParDrain<'_, T, A> {}
-impl<T, A: Allocator + Clone> RawParDrain<'_, T, A> {
+impl<T, A: Allocator> RawParDrain<'_, T, A> {
#[cfg_attr(feature = "inline-more", inline)]
pub(super) unsafe fn par_iter(&self) -> RawParIter<T> {
self.table.as_ref().par_iter()
}
}
-impl<T: Send, A: Allocator + Clone> ParallelIterator for RawParDrain<'_, T, A> {
+impl<T: Send, A: Allocator> ParallelIterator for RawParDrain<'_, T, A> {
type Item = T;
#[cfg_attr(feature = "inline-more", inline)]
@@ -143,7 +142,7 @@ impl<T: Send, A: Allocator + Clone> ParallelIterator for RawParDrain<'_, T, A> {
}
}
-impl<T, A: Allocator + Clone> Drop for RawParDrain<'_, T, A> {
+impl<T, A: Allocator> Drop for RawParDrain<'_, T, A> {
fn drop(&mut self) {
// If drive_unindexed is not called then simply clear the table.
unsafe {
@@ -204,7 +203,7 @@ impl<T> Drop for ParDrainProducer<T> {
}
}
-impl<T, A: Allocator + Clone> RawTable<T, A> {
+impl<T, A: Allocator> RawTable<T, A> {
/// Returns a parallel iterator over the elements in a `RawTable`.
#[cfg_attr(feature = "inline-more", inline)]
pub unsafe fn par_iter(&self) -> RawParIter<T> {
diff --git a/vendor/hashbrown/src/external_trait_impls/rayon/set.rs b/vendor/hashbrown/src/external_trait_impls/rayon/set.rs
index ee4f6e669..3de98fccb 100644
--- a/vendor/hashbrown/src/external_trait_impls/rayon/set.rs
+++ b/vendor/hashbrown/src/external_trait_impls/rayon/set.rs
@@ -16,11 +16,11 @@ use rayon::iter::{FromParallelIterator, IntoParallelIterator, ParallelExtend, Pa
/// [`into_par_iter`]: /hashbrown/struct.HashSet.html#method.into_par_iter
/// [`HashSet`]: /hashbrown/struct.HashSet.html
/// [`IntoParallelIterator`]: https://docs.rs/rayon/1.0/rayon/iter/trait.IntoParallelIterator.html
-pub struct IntoParIter<T, A: Allocator + Clone = Global> {
+pub struct IntoParIter<T, A: Allocator = Global> {
inner: map::IntoParIter<T, (), A>,
}
-impl<T: Send, A: Allocator + Clone + Send> ParallelIterator for IntoParIter<T, A> {
+impl<T: Send, A: Allocator + Send> ParallelIterator for IntoParIter<T, A> {
type Item = T;
fn drive_unindexed<C>(self, consumer: C) -> C::Result
@@ -38,11 +38,11 @@ impl<T: Send, A: Allocator + Clone + Send> ParallelIterator for IntoParIter<T, A
///
/// [`par_drain`]: /hashbrown/struct.HashSet.html#method.par_drain
/// [`HashSet`]: /hashbrown/struct.HashSet.html
-pub struct ParDrain<'a, T, A: Allocator + Clone = Global> {
+pub struct ParDrain<'a, T, A: Allocator = Global> {
inner: map::ParDrain<'a, T, (), A>,
}
-impl<T: Send, A: Allocator + Clone + Send + Sync> ParallelIterator for ParDrain<'_, T, A> {
+impl<T: Send, A: Allocator + Send + Sync> ParallelIterator for ParDrain<'_, T, A> {
type Item = T;
fn drive_unindexed<C>(self, consumer: C) -> C::Result
@@ -85,7 +85,7 @@ impl<'a, T: Sync> ParallelIterator for ParIter<'a, T> {
///
/// [`par_difference`]: /hashbrown/struct.HashSet.html#method.par_difference
/// [`HashSet`]: /hashbrown/struct.HashSet.html
-pub struct ParDifference<'a, T, S, A: Allocator + Clone = Global> {
+pub struct ParDifference<'a, T, S, A: Allocator = Global> {
a: &'a HashSet<T, S, A>,
b: &'a HashSet<T, S, A>,
}
@@ -94,7 +94,7 @@ impl<'a, T, S, A> ParallelIterator for ParDifference<'a, T, S, A>
where
T: Eq + Hash + Sync,
S: BuildHasher + Sync,
- A: Allocator + Clone + Sync,
+ A: Allocator + Sync,
{
type Item = &'a T;
@@ -118,7 +118,7 @@ where
///
/// [`par_symmetric_difference`]: /hashbrown/struct.HashSet.html#method.par_symmetric_difference
/// [`HashSet`]: /hashbrown/struct.HashSet.html
-pub struct ParSymmetricDifference<'a, T, S, A: Allocator + Clone = Global> {
+pub struct ParSymmetricDifference<'a, T, S, A: Allocator = Global> {
a: &'a HashSet<T, S, A>,
b: &'a HashSet<T, S, A>,
}
@@ -127,7 +127,7 @@ impl<'a, T, S, A> ParallelIterator for ParSymmetricDifference<'a, T, S, A>
where
T: Eq + Hash + Sync,
S: BuildHasher + Sync,
- A: Allocator + Clone + Sync,
+ A: Allocator + Sync,
{
type Item = &'a T;
@@ -150,7 +150,7 @@ where
///
/// [`par_intersection`]: /hashbrown/struct.HashSet.html#method.par_intersection
/// [`HashSet`]: /hashbrown/struct.HashSet.html
-pub struct ParIntersection<'a, T, S, A: Allocator + Clone = Global> {
+pub struct ParIntersection<'a, T, S, A: Allocator = Global> {
a: &'a HashSet<T, S, A>,
b: &'a HashSet<T, S, A>,
}
@@ -159,7 +159,7 @@ impl<'a, T, S, A> ParallelIterator for ParIntersection<'a, T, S, A>
where
T: Eq + Hash + Sync,
S: BuildHasher + Sync,
- A: Allocator + Clone + Sync,
+ A: Allocator + Sync,
{
type Item = &'a T;
@@ -181,7 +181,7 @@ where
///
/// [`par_union`]: /hashbrown/struct.HashSet.html#method.par_union
/// [`HashSet`]: /hashbrown/struct.HashSet.html
-pub struct ParUnion<'a, T, S, A: Allocator + Clone = Global> {
+pub struct ParUnion<'a, T, S, A: Allocator = Global> {
a: &'a HashSet<T, S, A>,
b: &'a HashSet<T, S, A>,
}
@@ -190,7 +190,7 @@ impl<'a, T, S, A> ParallelIterator for ParUnion<'a, T, S, A>
where
T: Eq + Hash + Sync,
S: BuildHasher + Sync,
- A: Allocator + Clone + Sync,
+ A: Allocator + Sync,
{
type Item = &'a T;
@@ -216,7 +216,7 @@ impl<T, S, A> HashSet<T, S, A>
where
T: Eq + Hash + Sync,
S: BuildHasher + Sync,
- A: Allocator + Clone + Sync,
+ A: Allocator + Sync,
{
/// Visits (potentially in parallel) the values representing the union,
/// i.e. all the values in `self` or `other`, without duplicates.
@@ -289,7 +289,7 @@ where
impl<T, S, A> HashSet<T, S, A>
where
T: Eq + Hash + Send,
- A: Allocator + Clone + Send,
+ A: Allocator + Send,
{
/// Consumes (potentially in parallel) all values in an arbitrary order,
/// while preserving the set's allocated memory for reuse.
@@ -301,7 +301,7 @@ where
}
}
-impl<T: Send, S, A: Allocator + Clone + Send> IntoParallelIterator for HashSet<T, S, A> {
+impl<T: Send, S, A: Allocator + Send> IntoParallelIterator for HashSet<T, S, A> {
type Item = T;
type Iter = IntoParIter<T, A>;
@@ -313,7 +313,7 @@ impl<T: Send, S, A: Allocator + Clone + Send> IntoParallelIterator for HashSet<T
}
}
-impl<'a, T: Sync, S, A: Allocator + Clone> IntoParallelIterator for &'a HashSet<T, S, A> {
+impl<'a, T: Sync, S, A: Allocator> IntoParallelIterator for &'a HashSet<T, S, A> {
type Item = &'a T;
type Iter = ParIter<'a, T>;
@@ -374,7 +374,7 @@ fn extend<T, S, I, A>(set: &mut HashSet<T, S, A>, par_iter: I)
where
T: Eq + Hash,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
I: IntoParallelIterator,
HashSet<T, S, A>: Extend<I::Item>,
{
diff --git a/vendor/hashbrown/src/external_trait_impls/rayon/table.rs b/vendor/hashbrown/src/external_trait_impls/rayon/table.rs
new file mode 100644
index 000000000..e8e50944a
--- /dev/null
+++ b/vendor/hashbrown/src/external_trait_impls/rayon/table.rs
@@ -0,0 +1,252 @@
+//! Rayon extensions for `HashTable`.
+
+use super::raw::{RawIntoParIter, RawParDrain, RawParIter};
+use crate::hash_table::HashTable;
+use crate::raw::{Allocator, Global};
+use core::fmt;
+use core::marker::PhantomData;
+use rayon::iter::plumbing::UnindexedConsumer;
+use rayon::iter::{IntoParallelIterator, ParallelIterator};
+
+/// Parallel iterator over shared references to entries in a map.
+///
+/// This iterator is created by the [`par_iter`] method on [`HashTable`]
+/// (provided by the [`IntoParallelRefIterator`] trait).
+/// See its documentation for more.
+///
+/// [`par_iter`]: /hashbrown/struct.HashTable.html#method.par_iter
+/// [`HashTable`]: /hashbrown/struct.HashTable.html
+/// [`IntoParallelRefIterator`]: https://docs.rs/rayon/1.0/rayon/iter/trait.IntoParallelRefIterator.html
+pub struct ParIter<'a, T> {
+ inner: RawParIter<T>,
+ marker: PhantomData<&'a T>,
+}
+
+impl<'a, T: Sync> ParallelIterator for ParIter<'a, T> {
+ type Item = &'a T;
+
+ #[cfg_attr(feature = "inline-more", inline)]
+ fn drive_unindexed<C>(self, consumer: C) -> C::Result
+ where
+ C: UnindexedConsumer<Self::Item>,
+ {
+ self.inner
+ .map(|x| unsafe { x.as_ref() })
+ .drive_unindexed(consumer)
+ }
+}
+
+impl<T> Clone for ParIter<'_, T> {
+ #[cfg_attr(feature = "inline-more", inline)]
+ fn clone(&self) -> Self {
+ Self {
+ inner: self.inner.clone(),
+ marker: PhantomData,
+ }
+ }
+}
+
+impl<T: fmt::Debug> fmt::Debug for ParIter<'_, T> {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ let iter = unsafe { self.inner.iter() }.map(|x| unsafe { x.as_ref() });
+ f.debug_list().entries(iter).finish()
+ }
+}
+
+/// Parallel iterator over mutable references to entries in a map.
+///
+/// This iterator is created by the [`par_iter_mut`] method on [`HashTable`]
+/// (provided by the [`IntoParallelRefMutIterator`] trait).
+/// See its documentation for more.
+///
+/// [`par_iter_mut`]: /hashbrown/struct.HashTable.html#method.par_iter_mut
+/// [`HashTable`]: /hashbrown/struct.HashTable.html
+/// [`IntoParallelRefMutIterator`]: https://docs.rs/rayon/1.0/rayon/iter/trait.IntoParallelRefMutIterator.html
+pub struct ParIterMut<'a, T> {
+ inner: RawParIter<T>,
+ marker: PhantomData<&'a mut T>,
+}
+
+impl<'a, T: Send> ParallelIterator for ParIterMut<'a, T> {
+ type Item = &'a mut T;
+
+ #[cfg_attr(feature = "inline-more", inline)]
+ fn drive_unindexed<C>(self, consumer: C) -> C::Result
+ where
+ C: UnindexedConsumer<Self::Item>,
+ {
+ self.inner
+ .map(|x| unsafe { x.as_mut() })
+ .drive_unindexed(consumer)
+ }
+}
+
+impl<T: fmt::Debug> fmt::Debug for ParIterMut<'_, T> {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ ParIter {
+ inner: self.inner.clone(),
+ marker: PhantomData,
+ }
+ .fmt(f)
+ }
+}
+
+/// Parallel iterator over entries of a consumed map.
+///
+/// This iterator is created by the [`into_par_iter`] method on [`HashTable`]
+/// (provided by the [`IntoParallelIterator`] trait).
+/// See its documentation for more.
+///
+/// [`into_par_iter`]: /hashbrown/struct.HashTable.html#method.into_par_iter
+/// [`HashTable`]: /hashbrown/struct.HashTable.html
+/// [`IntoParallelIterator`]: https://docs.rs/rayon/1.0/rayon/iter/trait.IntoParallelIterator.html
+pub struct IntoParIter<T, A: Allocator = Global> {
+ inner: RawIntoParIter<T, A>,
+}
+
+impl<T: Send, A: Allocator + Send> ParallelIterator for IntoParIter<T, A> {
+ type Item = T;
+
+ #[cfg_attr(feature = "inline-more", inline)]
+ fn drive_unindexed<C>(self, consumer: C) -> C::Result
+ where
+ C: UnindexedConsumer<Self::Item>,
+ {
+ self.inner.drive_unindexed(consumer)
+ }
+}
+
+impl<T: fmt::Debug, A: Allocator> fmt::Debug for IntoParIter<T, A> {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ ParIter {
+ inner: unsafe { self.inner.par_iter() },
+ marker: PhantomData,
+ }
+ .fmt(f)
+ }
+}
+
+/// Parallel draining iterator over entries of a map.
+///
+/// This iterator is created by the [`par_drain`] method on [`HashTable`].
+/// See its documentation for more.
+///
+/// [`par_drain`]: /hashbrown/struct.HashTable.html#method.par_drain
+/// [`HashTable`]: /hashbrown/struct.HashTable.html
+pub struct ParDrain<'a, T, A: Allocator = Global> {
+ inner: RawParDrain<'a, T, A>,
+}
+
+impl<T: Send, A: Allocator + Sync> ParallelIterator for ParDrain<'_, T, A> {
+ type Item = T;
+
+ #[cfg_attr(feature = "inline-more", inline)]
+ fn drive_unindexed<C>(self, consumer: C) -> C::Result
+ where
+ C: UnindexedConsumer<Self::Item>,
+ {
+ self.inner.drive_unindexed(consumer)
+ }
+}
+
+impl<T: fmt::Debug, A: Allocator> fmt::Debug for ParDrain<'_, T, A> {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ ParIter {
+ inner: unsafe { self.inner.par_iter() },
+ marker: PhantomData,
+ }
+ .fmt(f)
+ }
+}
+
+impl<T: Send, A: Allocator> HashTable<T, A> {
+ /// Consumes (potentially in parallel) all values in an arbitrary order,
+ /// while preserving the map's allocated memory for reuse.
+ #[cfg_attr(feature = "inline-more", inline)]
+ pub fn par_drain(&mut self) -> ParDrain<'_, T, A> {
+ ParDrain {
+ inner: self.raw.par_drain(),
+ }
+ }
+}
+
+impl<T: Send, A: Allocator + Send> IntoParallelIterator for HashTable<T, A> {
+ type Item = T;
+ type Iter = IntoParIter<T, A>;
+
+ #[cfg_attr(feature = "inline-more", inline)]
+ fn into_par_iter(self) -> Self::Iter {
+ IntoParIter {
+ inner: self.raw.into_par_iter(),
+ }
+ }
+}
+
+impl<'a, T: Sync, A: Allocator> IntoParallelIterator for &'a HashTable<T, A> {
+ type Item = &'a T;
+ type Iter = ParIter<'a, T>;
+
+ #[cfg_attr(feature = "inline-more", inline)]
+ fn into_par_iter(self) -> Self::Iter {
+ ParIter {
+ inner: unsafe { self.raw.par_iter() },
+ marker: PhantomData,
+ }
+ }
+}
+
+impl<'a, T: Send, A: Allocator> IntoParallelIterator for &'a mut HashTable<T, A> {
+ type Item = &'a mut T;
+ type Iter = ParIterMut<'a, T>;
+
+ #[cfg_attr(feature = "inline-more", inline)]
+ fn into_par_iter(self) -> Self::Iter {
+ ParIterMut {
+ inner: unsafe { self.raw.par_iter() },
+ marker: PhantomData,
+ }
+ }
+}
+
+#[cfg(test)]
+mod test_par_table {
+ use alloc::vec::Vec;
+ use core::sync::atomic::{AtomicUsize, Ordering};
+
+ use rayon::prelude::*;
+
+ use crate::{
+ hash_map::{make_hash, DefaultHashBuilder},
+ hash_table::HashTable,
+ };
+
+ #[test]
+ fn test_iterate() {
+ let hasher = DefaultHashBuilder::default();
+ let mut a = HashTable::new();
+ for i in 0..32 {
+ a.insert_unique(make_hash(&hasher, &i), i, |x| make_hash(&hasher, x));
+ }
+ let observed = AtomicUsize::new(0);
+ a.par_iter().for_each(|k| {
+ observed.fetch_or(1 << *k, Ordering::Relaxed);
+ });
+ assert_eq!(observed.into_inner(), 0xFFFF_FFFF);
+ }
+
+ #[test]
+ fn test_move_iter() {
+ let hasher = DefaultHashBuilder::default();
+ let hs = {
+ let mut hs = HashTable::new();
+
+ hs.insert_unique(make_hash(&hasher, &'a'), 'a', |x| make_hash(&hasher, x));
+ hs.insert_unique(make_hash(&hasher, &'b'), 'b', |x| make_hash(&hasher, x));
+
+ hs
+ };
+
+ let v = hs.into_par_iter().collect::<Vec<char>>();
+ assert!(v == ['a', 'b'] || v == ['b', 'a']);
+ }
+}
diff --git a/vendor/hashbrown/src/external_trait_impls/serde.rs b/vendor/hashbrown/src/external_trait_impls/serde.rs
index 4d62deeb7..0a76dbec2 100644
--- a/vendor/hashbrown/src/external_trait_impls/serde.rs
+++ b/vendor/hashbrown/src/external_trait_impls/serde.rs
@@ -11,6 +11,7 @@ mod size_hint {
}
mod map {
+ use crate::raw::Allocator;
use core::fmt;
use core::hash::{BuildHasher, Hash};
use core::marker::PhantomData;
@@ -21,11 +22,12 @@ mod map {
use super::size_hint;
- impl<K, V, H> Serialize for HashMap<K, V, H>
+ impl<K, V, H, A> Serialize for HashMap<K, V, H, A>
where
K: Serialize + Eq + Hash,
V: Serialize,
H: BuildHasher,
+ A: Allocator,
{
#[cfg_attr(feature = "inline-more", inline)]
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
@@ -36,40 +38,46 @@ mod map {
}
}
- impl<'de, K, V, S> Deserialize<'de> for HashMap<K, V, S>
+ impl<'de, K, V, S, A> Deserialize<'de> for HashMap<K, V, S, A>
where
K: Deserialize<'de> + Eq + Hash,
V: Deserialize<'de>,
S: BuildHasher + Default,
+ A: Allocator + Default,
{
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: Deserializer<'de>,
{
- struct MapVisitor<K, V, S> {
- marker: PhantomData<HashMap<K, V, S>>,
+ struct MapVisitor<K, V, S, A>
+ where
+ A: Allocator,
+ {
+ marker: PhantomData<HashMap<K, V, S, A>>,
}
- impl<'de, K, V, S> Visitor<'de> for MapVisitor<K, V, S>
+ impl<'de, K, V, S, A> Visitor<'de> for MapVisitor<K, V, S, A>
where
K: Deserialize<'de> + Eq + Hash,
V: Deserialize<'de>,
S: BuildHasher + Default,
+ A: Allocator + Default,
{
- type Value = HashMap<K, V, S>;
+ type Value = HashMap<K, V, S, A>;
fn expecting(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
formatter.write_str("a map")
}
#[cfg_attr(feature = "inline-more", inline)]
- fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error>
+ fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
where
- A: MapAccess<'de>,
+ M: MapAccess<'de>,
{
- let mut values = HashMap::with_capacity_and_hasher(
+ let mut values = HashMap::with_capacity_and_hasher_in(
size_hint::cautious(map.size_hint()),
S::default(),
+ A::default(),
);
while let Some((key, value)) = map.next_entry()? {
@@ -89,6 +97,7 @@ mod map {
}
mod set {
+ use crate::raw::Allocator;
use core::fmt;
use core::hash::{BuildHasher, Hash};
use core::marker::PhantomData;
@@ -99,10 +108,11 @@ mod set {
use super::size_hint;
- impl<T, H> Serialize for HashSet<T, H>
+ impl<T, H, A> Serialize for HashSet<T, H, A>
where
T: Serialize + Eq + Hash,
H: BuildHasher,
+ A: Allocator,
{
#[cfg_attr(feature = "inline-more", inline)]
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
@@ -113,38 +123,44 @@ mod set {
}
}
- impl<'de, T, S> Deserialize<'de> for HashSet<T, S>
+ impl<'de, T, S, A> Deserialize<'de> for HashSet<T, S, A>
where
T: Deserialize<'de> + Eq + Hash,
S: BuildHasher + Default,
+ A: Allocator + Default,
{
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: Deserializer<'de>,
{
- struct SeqVisitor<T, S> {
- marker: PhantomData<HashSet<T, S>>,
+ struct SeqVisitor<T, S, A>
+ where
+ A: Allocator,
+ {
+ marker: PhantomData<HashSet<T, S, A>>,
}
- impl<'de, T, S> Visitor<'de> for SeqVisitor<T, S>
+ impl<'de, T, S, A> Visitor<'de> for SeqVisitor<T, S, A>
where
T: Deserialize<'de> + Eq + Hash,
S: BuildHasher + Default,
+ A: Allocator + Default,
{
- type Value = HashSet<T, S>;
+ type Value = HashSet<T, S, A>;
fn expecting(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
formatter.write_str("a sequence")
}
#[cfg_attr(feature = "inline-more", inline)]
- fn visit_seq<A>(self, mut seq: A) -> Result<Self::Value, A::Error>
+ fn visit_seq<M>(self, mut seq: M) -> Result<Self::Value, M::Error>
where
- A: SeqAccess<'de>,
+ M: SeqAccess<'de>,
{
- let mut values = HashSet::with_capacity_and_hasher(
+ let mut values = HashSet::with_capacity_and_hasher_in(
size_hint::cautious(seq.size_hint()),
S::default(),
+ A::default(),
);
while let Some(value) = seq.next_element()? {
@@ -166,12 +182,15 @@ mod set {
where
D: Deserializer<'de>,
{
- struct SeqInPlaceVisitor<'a, T, S>(&'a mut HashSet<T, S>);
+ struct SeqInPlaceVisitor<'a, T, S, A>(&'a mut HashSet<T, S, A>)
+ where
+ A: Allocator;
- impl<'a, 'de, T, S> Visitor<'de> for SeqInPlaceVisitor<'a, T, S>
+ impl<'a, 'de, T, S, A> Visitor<'de> for SeqInPlaceVisitor<'a, T, S, A>
where
T: Deserialize<'de> + Eq + Hash,
S: BuildHasher + Default,
+ A: Allocator,
{
type Value = ();
@@ -180,9 +199,9 @@ mod set {
}
#[cfg_attr(feature = "inline-more", inline)]
- fn visit_seq<A>(self, mut seq: A) -> Result<Self::Value, A::Error>
+ fn visit_seq<M>(self, mut seq: M) -> Result<Self::Value, M::Error>
where
- A: SeqAccess<'de>,
+ M: SeqAccess<'de>,
{
self.0.clear();
self.0.reserve(size_hint::cautious(seq.size_hint()));
diff --git a/vendor/hashbrown/src/lib.rs b/vendor/hashbrown/src/lib.rs
index 013a9ddd9..6e9592abe 100644
--- a/vendor/hashbrown/src/lib.rs
+++ b/vendor/hashbrown/src/lib.rs
@@ -81,6 +81,7 @@ mod map;
mod rustc_entry;
mod scopeguard;
mod set;
+mod table;
pub mod hash_map {
//! A hash map implemented with quadratic probing and SIMD lookup.
@@ -113,10 +114,30 @@ pub mod hash_set {
pub use crate::external_trait_impls::rayon::set::*;
}
}
+pub mod hash_table {
+ //! A hash table implemented with quadratic probing and SIMD lookup.
+ pub use crate::table::*;
+
+ #[cfg(feature = "rayon")]
+ /// [rayon]-based parallel iterator types for hash tables.
+ /// You will rarely need to interact with it directly unless you have need
+ /// to name one of the iterator types.
+ ///
+ /// [rayon]: https://docs.rs/rayon/1.0/rayon
+ pub mod rayon {
+ pub use crate::external_trait_impls::rayon::table::*;
+ }
+}
pub use crate::map::HashMap;
pub use crate::set::HashSet;
+pub use crate::table::HashTable;
+
+#[cfg(feature = "equivalent")]
+pub use equivalent::Equivalent;
+// This is only used as a fallback when building as part of `std`.
+#[cfg(not(feature = "equivalent"))]
/// Key equivalence trait.
///
/// This trait defines the function used to compare the input value with the
@@ -140,6 +161,7 @@ pub trait Equivalent<K: ?Sized> {
fn equivalent(&self, key: &K) -> bool;
}
+#[cfg(not(feature = "equivalent"))]
impl<Q: ?Sized, K: ?Sized> Equivalent<K> for Q
where
Q: Eq,
diff --git a/vendor/hashbrown/src/map.rs b/vendor/hashbrown/src/map.rs
index 548ca0f9e..b5e657bc6 100644
--- a/vendor/hashbrown/src/map.rs
+++ b/vendor/hashbrown/src/map.rs
@@ -1,4 +1,6 @@
-use crate::raw::{Allocator, Bucket, Global, RawDrain, RawIntoIter, RawIter, RawTable};
+use crate::raw::{
+ Allocator, Bucket, Global, RawDrain, RawExtractIf, RawIntoIter, RawIter, RawTable,
+};
use crate::{Equivalent, TryReserveError};
use core::borrow::Borrow;
use core::fmt::{self, Debug};
@@ -185,7 +187,7 @@ pub enum DefaultHashBuilder {}
/// .iter().cloned().collect();
/// // use the values stored in map
/// ```
-pub struct HashMap<K, V, S = DefaultHashBuilder, A: Allocator + Clone = Global> {
+pub struct HashMap<K, V, S = DefaultHashBuilder, A: Allocator = Global> {
pub(crate) hash_builder: S,
pub(crate) table: RawTable<(K, V), A>,
}
@@ -324,7 +326,7 @@ impl<K, V> HashMap<K, V, DefaultHashBuilder> {
}
#[cfg(feature = "ahash")]
-impl<K, V, A: Allocator + Clone> HashMap<K, V, DefaultHashBuilder, A> {
+impl<K, V, A: Allocator> HashMap<K, V, DefaultHashBuilder, A> {
/// Creates an empty `HashMap` using the given allocator.
///
/// The hash map is initially created with a capacity of 0, so it will not allocate until it
@@ -505,7 +507,7 @@ impl<K, V, S> HashMap<K, V, S> {
}
}
-impl<K, V, S, A: Allocator + Clone> HashMap<K, V, S, A> {
+impl<K, V, S, A: Allocator> HashMap<K, V, S, A> {
/// Returns a reference to the underlying allocator.
#[inline]
pub fn allocator(&self) -> &A {
@@ -944,6 +946,8 @@ impl<K, V, S, A: Allocator + Clone> HashMap<K, V, S, A> {
///
/// Keeps the allocated memory for reuse.
///
+ /// [`retain()`]: HashMap::retain
+ ///
/// # Examples
///
/// ```
@@ -977,7 +981,7 @@ impl<K, V, S, A: Allocator + Clone> HashMap<K, V, S, A> {
{
ExtractIf {
f,
- inner: ExtractIfInner {
+ inner: RawExtractIf {
iter: unsafe { self.table.iter() },
table: &mut self.table,
},
@@ -1069,7 +1073,7 @@ impl<K, V, S, A> HashMap<K, V, S, A>
where
K: Eq + Hash,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
/// Reserves capacity for at least `additional` more elements to be inserted
/// in the `HashMap`. The collection may reserve more space to avoid
@@ -1936,7 +1940,7 @@ where
}
}
-impl<K, V, S, A: Allocator + Clone> HashMap<K, V, S, A> {
+impl<K, V, S, A: Allocator> HashMap<K, V, S, A> {
/// Creates a raw entry builder for the HashMap.
///
/// Raw entries provide the lowest level of control for searching and
@@ -2167,7 +2171,7 @@ where
K: Eq + Hash,
V: PartialEq,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
fn eq(&self, other: &Self) -> bool {
if self.len() != other.len() {
@@ -2184,7 +2188,7 @@ where
K: Eq + Hash,
V: Eq,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
}
@@ -2192,7 +2196,7 @@ impl<K, V, S, A> Debug for HashMap<K, V, S, A>
where
K: Debug,
V: Debug,
- A: Allocator + Clone,
+ A: Allocator,
{
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_map().entries(self.iter()).finish()
@@ -2202,7 +2206,7 @@ where
impl<K, V, S, A> Default for HashMap<K, V, S, A>
where
S: Default,
- A: Default + Allocator + Clone,
+ A: Default + Allocator,
{
/// Creates an empty `HashMap<K, V, S, A>`, with the `Default` value for the hasher and allocator.
///
@@ -2230,7 +2234,7 @@ where
K: Eq + Hash,
Q: Hash + Equivalent<K>,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
type Output = V;
@@ -2261,7 +2265,7 @@ where
impl<K, V, A, const N: usize> From<[(K, V); N]> for HashMap<K, V, DefaultHashBuilder, A>
where
K: Eq + Hash,
- A: Default + Allocator + Clone,
+ A: Default + Allocator,
{
/// # Examples
///
@@ -2406,11 +2410,11 @@ impl<K, V> IterMut<'_, K, V> {
/// assert_eq!(iter.next(), None);
/// assert_eq!(iter.next(), None);
/// ```
-pub struct IntoIter<K, V, A: Allocator + Clone = Global> {
+pub struct IntoIter<K, V, A: Allocator = Global> {
inner: RawIntoIter<(K, V), A>,
}
-impl<K, V, A: Allocator + Clone> IntoIter<K, V, A> {
+impl<K, V, A: Allocator> IntoIter<K, V, A> {
/// Returns a iterator of references over the remaining items.
#[cfg_attr(feature = "inline-more", inline)]
pub(super) fn iter(&self) -> Iter<'_, K, V> {
@@ -2450,11 +2454,11 @@ impl<K, V, A: Allocator + Clone> IntoIter<K, V, A> {
/// assert_eq!(keys.next(), None);
/// assert_eq!(keys.next(), None);
/// ```
-pub struct IntoKeys<K, V, A: Allocator + Clone = Global> {
+pub struct IntoKeys<K, V, A: Allocator = Global> {
inner: IntoIter<K, V, A>,
}
-impl<K, V, A: Allocator + Clone> Iterator for IntoKeys<K, V, A> {
+impl<K, V, A: Allocator> Iterator for IntoKeys<K, V, A> {
type Item = K;
#[inline]
@@ -2467,16 +2471,16 @@ impl<K, V, A: Allocator + Clone> Iterator for IntoKeys<K, V, A> {
}
}
-impl<K, V, A: Allocator + Clone> ExactSizeIterator for IntoKeys<K, V, A> {
+impl<K, V, A: Allocator> ExactSizeIterator for IntoKeys<K, V, A> {
#[inline]
fn len(&self) -> usize {
self.inner.len()
}
}
-impl<K, V, A: Allocator + Clone> FusedIterator for IntoKeys<K, V, A> {}
+impl<K, V, A: Allocator> FusedIterator for IntoKeys<K, V, A> {}
-impl<K: Debug, V: Debug, A: Allocator + Clone> fmt::Debug for IntoKeys<K, V, A> {
+impl<K: Debug, V: Debug, A: Allocator> fmt::Debug for IntoKeys<K, V, A> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_list()
.entries(self.inner.iter().map(|(k, _)| k))
@@ -2512,11 +2516,11 @@ impl<K: Debug, V: Debug, A: Allocator + Clone> fmt::Debug for IntoKeys<K, V, A>
/// assert_eq!(values.next(), None);
/// assert_eq!(values.next(), None);
/// ```
-pub struct IntoValues<K, V, A: Allocator + Clone = Global> {
+pub struct IntoValues<K, V, A: Allocator = Global> {
inner: IntoIter<K, V, A>,
}
-impl<K, V, A: Allocator + Clone> Iterator for IntoValues<K, V, A> {
+impl<K, V, A: Allocator> Iterator for IntoValues<K, V, A> {
type Item = V;
#[inline]
@@ -2529,16 +2533,16 @@ impl<K, V, A: Allocator + Clone> Iterator for IntoValues<K, V, A> {
}
}
-impl<K, V, A: Allocator + Clone> ExactSizeIterator for IntoValues<K, V, A> {
+impl<K, V, A: Allocator> ExactSizeIterator for IntoValues<K, V, A> {
#[inline]
fn len(&self) -> usize {
self.inner.len()
}
}
-impl<K, V, A: Allocator + Clone> FusedIterator for IntoValues<K, V, A> {}
+impl<K, V, A: Allocator> FusedIterator for IntoValues<K, V, A> {}
-impl<K, V: Debug, A: Allocator + Clone> fmt::Debug for IntoValues<K, V, A> {
+impl<K, V: Debug, A: Allocator> fmt::Debug for IntoValues<K, V, A> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_list()
.entries(self.inner.iter().map(|(_, v)| v))
@@ -2670,11 +2674,11 @@ impl<K, V: Debug> fmt::Debug for Values<'_, K, V> {
/// assert_eq!(drain_iter.next(), None);
/// assert_eq!(drain_iter.next(), None);
/// ```
-pub struct Drain<'a, K, V, A: Allocator + Clone = Global> {
+pub struct Drain<'a, K, V, A: Allocator = Global> {
inner: RawDrain<'a, (K, V), A>,
}
-impl<K, V, A: Allocator + Clone> Drain<'_, K, V, A> {
+impl<K, V, A: Allocator> Drain<'_, K, V, A> {
/// Returns a iterator of references over the remaining items.
#[cfg_attr(feature = "inline-more", inline)]
pub(super) fn iter(&self) -> Iter<'_, K, V> {
@@ -2717,24 +2721,24 @@ impl<K, V, A: Allocator + Clone> Drain<'_, K, V, A> {
/// assert_eq!(map.len(), 1);
/// ```
#[must_use = "Iterators are lazy unless consumed"]
-pub struct ExtractIf<'a, K, V, F, A: Allocator + Clone = Global>
+pub struct ExtractIf<'a, K, V, F, A: Allocator = Global>
where
F: FnMut(&K, &mut V) -> bool,
{
f: F,
- inner: ExtractIfInner<'a, K, V, A>,
+ inner: RawExtractIf<'a, (K, V), A>,
}
impl<K, V, F, A> Iterator for ExtractIf<'_, K, V, F, A>
where
F: FnMut(&K, &mut V) -> bool,
- A: Allocator + Clone,
+ A: Allocator,
{
type Item = (K, V);
#[cfg_attr(feature = "inline-more", inline)]
fn next(&mut self) -> Option<Self::Item> {
- self.inner.next(&mut self.f)
+ self.inner.next(|&mut (ref k, ref mut v)| (self.f)(k, v))
}
#[inline]
@@ -2745,30 +2749,6 @@ where
impl<K, V, F> FusedIterator for ExtractIf<'_, K, V, F> where F: FnMut(&K, &mut V) -> bool {}
-/// Portions of `ExtractIf` shared with `set::ExtractIf`
-pub(super) struct ExtractIfInner<'a, K, V, A: Allocator + Clone> {
- pub iter: RawIter<(K, V)>,
- pub table: &'a mut RawTable<(K, V), A>,
-}
-
-impl<K, V, A: Allocator + Clone> ExtractIfInner<'_, K, V, A> {
- #[cfg_attr(feature = "inline-more", inline)]
- pub(super) fn next<F>(&mut self, f: &mut F) -> Option<(K, V)>
- where
- F: FnMut(&K, &mut V) -> bool,
- {
- unsafe {
- for item in &mut self.iter {
- let &mut (ref key, ref mut value) = item.as_mut();
- if f(key, value) {
- return Some(self.table.remove(item).0);
- }
- }
- }
- None
- }
-}
-
/// A mutable iterator over the values of a `HashMap` in arbitrary order.
/// The iterator element type is `&'a mut V`.
///
@@ -2855,7 +2835,7 @@ pub struct ValuesMut<'a, K, V> {
///
/// assert_eq!(map.len(), 6);
/// ```
-pub struct RawEntryBuilderMut<'a, K, V, S, A: Allocator + Clone = Global> {
+pub struct RawEntryBuilderMut<'a, K, V, S, A: Allocator = Global> {
map: &'a mut HashMap<K, V, S, A>,
}
@@ -2943,7 +2923,7 @@ pub struct RawEntryBuilderMut<'a, K, V, S, A: Allocator + Clone = Global> {
/// vec.sort_unstable();
/// assert_eq!(vec, [('a', 10), ('b', 20), ('c', 30), ('d', 40), ('e', 50), ('f', 60)]);
/// ```
-pub enum RawEntryMut<'a, K, V, S, A: Allocator + Clone = Global> {
+pub enum RawEntryMut<'a, K, V, S, A: Allocator = Global> {
/// An occupied entry.
///
/// # Examples
@@ -3034,7 +3014,7 @@ pub enum RawEntryMut<'a, K, V, S, A: Allocator + Clone = Global> {
/// assert_eq!(map.get(&"b"), None);
/// assert_eq!(map.len(), 1);
/// ```
-pub struct RawOccupiedEntryMut<'a, K, V, S, A: Allocator + Clone = Global> {
+pub struct RawOccupiedEntryMut<'a, K, V, S, A: Allocator = Global> {
elem: Bucket<(K, V)>,
table: &'a mut RawTable<(K, V), A>,
hash_builder: &'a S,
@@ -3045,7 +3025,7 @@ where
K: Send,
V: Send,
S: Send,
- A: Send + Allocator + Clone,
+ A: Send + Allocator,
{
}
unsafe impl<K, V, S, A> Sync for RawOccupiedEntryMut<'_, K, V, S, A>
@@ -3053,7 +3033,7 @@ where
K: Sync,
V: Sync,
S: Sync,
- A: Sync + Allocator + Clone,
+ A: Sync + Allocator,
{
}
@@ -3105,7 +3085,7 @@ where
/// }
/// assert!(map[&"c"] == 30 && map.len() == 3);
/// ```
-pub struct RawVacantEntryMut<'a, K, V, S, A: Allocator + Clone = Global> {
+pub struct RawVacantEntryMut<'a, K, V, S, A: Allocator = Global> {
table: &'a mut RawTable<(K, V), A>,
hash_builder: &'a S,
}
@@ -3144,11 +3124,11 @@ pub struct RawVacantEntryMut<'a, K, V, S, A: Allocator + Clone = Global> {
/// assert_eq!(map.raw_entry().from_key_hashed_nocheck(hash, &k), kv);
/// }
/// ```
-pub struct RawEntryBuilder<'a, K, V, S, A: Allocator + Clone = Global> {
+pub struct RawEntryBuilder<'a, K, V, S, A: Allocator = Global> {
map: &'a HashMap<K, V, S, A>,
}
-impl<'a, K, V, S, A: Allocator + Clone> RawEntryBuilderMut<'a, K, V, S, A> {
+impl<'a, K, V, S, A: Allocator> RawEntryBuilderMut<'a, K, V, S, A> {
/// Creates a `RawEntryMut` from the given key.
///
/// # Examples
@@ -3205,7 +3185,7 @@ impl<'a, K, V, S, A: Allocator + Clone> RawEntryBuilderMut<'a, K, V, S, A> {
}
}
-impl<'a, K, V, S, A: Allocator + Clone> RawEntryBuilderMut<'a, K, V, S, A> {
+impl<'a, K, V, S, A: Allocator> RawEntryBuilderMut<'a, K, V, S, A> {
/// Creates a `RawEntryMut` from the given hash and matching function.
///
/// # Examples
@@ -3256,7 +3236,7 @@ impl<'a, K, V, S, A: Allocator + Clone> RawEntryBuilderMut<'a, K, V, S, A> {
}
}
-impl<'a, K, V, S, A: Allocator + Clone> RawEntryBuilder<'a, K, V, S, A> {
+impl<'a, K, V, S, A: Allocator> RawEntryBuilder<'a, K, V, S, A> {
/// Access an immutable entry by key.
///
/// # Examples
@@ -3349,7 +3329,7 @@ impl<'a, K, V, S, A: Allocator + Clone> RawEntryBuilder<'a, K, V, S, A> {
}
}
-impl<'a, K, V, S, A: Allocator + Clone> RawEntryMut<'a, K, V, S, A> {
+impl<'a, K, V, S, A: Allocator> RawEntryMut<'a, K, V, S, A> {
/// Sets the value of the entry, and returns a RawOccupiedEntryMut.
///
/// # Examples
@@ -3543,7 +3523,7 @@ impl<'a, K, V, S, A: Allocator + Clone> RawEntryMut<'a, K, V, S, A> {
}
}
-impl<'a, K, V, S, A: Allocator + Clone> RawOccupiedEntryMut<'a, K, V, S, A> {
+impl<'a, K, V, S, A: Allocator> RawOccupiedEntryMut<'a, K, V, S, A> {
/// Gets a reference to the key in the entry.
///
/// # Examples
@@ -3942,7 +3922,7 @@ impl<'a, K, V, S, A: Allocator + Clone> RawOccupiedEntryMut<'a, K, V, S, A> {
}
}
-impl<'a, K, V, S, A: Allocator + Clone> RawVacantEntryMut<'a, K, V, S, A> {
+impl<'a, K, V, S, A: Allocator> RawVacantEntryMut<'a, K, V, S, A> {
/// Sets the value of the entry with the VacantEntry's key,
/// and returns a mutable reference to it.
///
@@ -4088,13 +4068,13 @@ impl<'a, K, V, S, A: Allocator + Clone> RawVacantEntryMut<'a, K, V, S, A> {
}
}
-impl<K, V, S, A: Allocator + Clone> Debug for RawEntryBuilderMut<'_, K, V, S, A> {
+impl<K, V, S, A: Allocator> Debug for RawEntryBuilderMut<'_, K, V, S, A> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("RawEntryBuilder").finish()
}
}
-impl<K: Debug, V: Debug, S, A: Allocator + Clone> Debug for RawEntryMut<'_, K, V, S, A> {
+impl<K: Debug, V: Debug, S, A: Allocator> Debug for RawEntryMut<'_, K, V, S, A> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match *self {
RawEntryMut::Vacant(ref v) => f.debug_tuple("RawEntry").field(v).finish(),
@@ -4103,7 +4083,7 @@ impl<K: Debug, V: Debug, S, A: Allocator + Clone> Debug for RawEntryMut<'_, K, V
}
}
-impl<K: Debug, V: Debug, S, A: Allocator + Clone> Debug for RawOccupiedEntryMut<'_, K, V, S, A> {
+impl<K: Debug, V: Debug, S, A: Allocator> Debug for RawOccupiedEntryMut<'_, K, V, S, A> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("RawOccupiedEntryMut")
.field("key", self.key())
@@ -4112,13 +4092,13 @@ impl<K: Debug, V: Debug, S, A: Allocator + Clone> Debug for RawOccupiedEntryMut<
}
}
-impl<K, V, S, A: Allocator + Clone> Debug for RawVacantEntryMut<'_, K, V, S, A> {
+impl<K, V, S, A: Allocator> Debug for RawVacantEntryMut<'_, K, V, S, A> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("RawVacantEntryMut").finish()
}
}
-impl<K, V, S, A: Allocator + Clone> Debug for RawEntryBuilder<'_, K, V, S, A> {
+impl<K, V, S, A: Allocator> Debug for RawEntryBuilder<'_, K, V, S, A> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("RawEntryBuilder").finish()
}
@@ -4169,7 +4149,7 @@ impl<K, V, S, A: Allocator + Clone> Debug for RawEntryBuilder<'_, K, V, S, A> {
/// ```
pub enum Entry<'a, K, V, S, A = Global>
where
- A: Allocator + Clone,
+ A: Allocator,
{
/// An occupied entry.
///
@@ -4202,7 +4182,7 @@ where
Vacant(VacantEntry<'a, K, V, S, A>),
}
-impl<K: Debug, V: Debug, S, A: Allocator + Clone> Debug for Entry<'_, K, V, S, A> {
+impl<K: Debug, V: Debug, S, A: Allocator> Debug for Entry<'_, K, V, S, A> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match *self {
Entry::Vacant(ref v) => f.debug_tuple("Entry").field(v).finish(),
@@ -4251,7 +4231,7 @@ impl<K: Debug, V: Debug, S, A: Allocator + Clone> Debug for Entry<'_, K, V, S, A
/// assert_eq!(map.get(&"c"), None);
/// assert_eq!(map.len(), 2);
/// ```
-pub struct OccupiedEntry<'a, K, V, S = DefaultHashBuilder, A: Allocator + Clone = Global> {
+pub struct OccupiedEntry<'a, K, V, S = DefaultHashBuilder, A: Allocator = Global> {
hash: u64,
key: Option<K>,
elem: Bucket<(K, V)>,
@@ -4263,7 +4243,7 @@ where
K: Send,
V: Send,
S: Send,
- A: Send + Allocator + Clone,
+ A: Send + Allocator,
{
}
unsafe impl<K, V, S, A> Sync for OccupiedEntry<'_, K, V, S, A>
@@ -4271,11 +4251,11 @@ where
K: Sync,
V: Sync,
S: Sync,
- A: Sync + Allocator + Clone,
+ A: Sync + Allocator,
{
}
-impl<K: Debug, V: Debug, S, A: Allocator + Clone> Debug for OccupiedEntry<'_, K, V, S, A> {
+impl<K: Debug, V: Debug, S, A: Allocator> Debug for OccupiedEntry<'_, K, V, S, A> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("OccupiedEntry")
.field("key", self.key())
@@ -4314,13 +4294,13 @@ impl<K: Debug, V: Debug, S, A: Allocator + Clone> Debug for OccupiedEntry<'_, K,
/// }
/// assert!(map[&"b"] == 20 && map.len() == 2);
/// ```
-pub struct VacantEntry<'a, K, V, S = DefaultHashBuilder, A: Allocator + Clone = Global> {
+pub struct VacantEntry<'a, K, V, S = DefaultHashBuilder, A: Allocator = Global> {
hash: u64,
key: K,
table: &'a mut HashMap<K, V, S, A>,
}
-impl<K: Debug, V, S, A: Allocator + Clone> Debug for VacantEntry<'_, K, V, S, A> {
+impl<K: Debug, V, S, A: Allocator> Debug for VacantEntry<'_, K, V, S, A> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_tuple("VacantEntry").field(self.key()).finish()
}
@@ -4380,7 +4360,7 @@ impl<K: Debug, V, S, A: Allocator + Clone> Debug for VacantEntry<'_, K, V, S, A>
/// ```
pub enum EntryRef<'a, 'b, K, Q: ?Sized, V, S, A = Global>
where
- A: Allocator + Clone,
+ A: Allocator,
{
/// An occupied entry.
///
@@ -4413,7 +4393,7 @@ where
Vacant(VacantEntryRef<'a, 'b, K, Q, V, S, A>),
}
-impl<K: Borrow<Q>, Q: ?Sized + Debug, V: Debug, S, A: Allocator + Clone> Debug
+impl<K: Borrow<Q>, Q: ?Sized + Debug, V: Debug, S, A: Allocator> Debug
for EntryRef<'_, '_, K, Q, V, S, A>
{
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
@@ -4491,7 +4471,7 @@ impl<'a, K: Borrow<Q>, Q: ?Sized> AsRef<Q> for KeyOrRef<'a, K, Q> {
/// assert_eq!(map.get("c"), None);
/// assert_eq!(map.len(), 2);
/// ```
-pub struct OccupiedEntryRef<'a, 'b, K, Q: ?Sized, V, S, A: Allocator + Clone = Global> {
+pub struct OccupiedEntryRef<'a, 'b, K, Q: ?Sized, V, S, A: Allocator = Global> {
hash: u64,
key: Option<KeyOrRef<'b, K, Q>>,
elem: Bucket<(K, V)>,
@@ -4504,7 +4484,7 @@ where
Q: Sync + ?Sized,
V: Send,
S: Send,
- A: Send + Allocator + Clone,
+ A: Send + Allocator,
{
}
unsafe impl<'a, 'b, K, Q, V, S, A> Sync for OccupiedEntryRef<'a, 'b, K, Q, V, S, A>
@@ -4513,11 +4493,11 @@ where
Q: Sync + ?Sized,
V: Sync,
S: Sync,
- A: Sync + Allocator + Clone,
+ A: Sync + Allocator,
{
}
-impl<K: Borrow<Q>, Q: ?Sized + Debug, V: Debug, S, A: Allocator + Clone> Debug
+impl<K: Borrow<Q>, Q: ?Sized + Debug, V: Debug, S, A: Allocator> Debug
for OccupiedEntryRef<'_, '_, K, Q, V, S, A>
{
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
@@ -4558,13 +4538,13 @@ impl<K: Borrow<Q>, Q: ?Sized + Debug, V: Debug, S, A: Allocator + Clone> Debug
/// }
/// assert!(map["b"] == 20 && map.len() == 2);
/// ```
-pub struct VacantEntryRef<'a, 'b, K, Q: ?Sized, V, S, A: Allocator + Clone = Global> {
+pub struct VacantEntryRef<'a, 'b, K, Q: ?Sized, V, S, A: Allocator = Global> {
hash: u64,
key: KeyOrRef<'b, K, Q>,
table: &'a mut HashMap<K, V, S, A>,
}
-impl<K: Borrow<Q>, Q: ?Sized + Debug, V, S, A: Allocator + Clone> Debug
+impl<K: Borrow<Q>, Q: ?Sized + Debug, V, S, A: Allocator> Debug
for VacantEntryRef<'_, '_, K, Q, V, S, A>
{
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
@@ -4596,14 +4576,14 @@ impl<K: Borrow<Q>, Q: ?Sized + Debug, V, S, A: Allocator + Clone> Debug
/// }
/// assert_eq!(map[&"a"], 100);
/// ```
-pub struct OccupiedError<'a, K, V, S, A: Allocator + Clone = Global> {
+pub struct OccupiedError<'a, K, V, S, A: Allocator = Global> {
/// The entry in the map that was already occupied.
pub entry: OccupiedEntry<'a, K, V, S, A>,
/// The value which was not inserted, because the entry was already occupied.
pub value: V,
}
-impl<K: Debug, V: Debug, S, A: Allocator + Clone> Debug for OccupiedError<'_, K, V, S, A> {
+impl<K: Debug, V: Debug, S, A: Allocator> Debug for OccupiedError<'_, K, V, S, A> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("OccupiedError")
.field("key", self.entry.key())
@@ -4613,9 +4593,7 @@ impl<K: Debug, V: Debug, S, A: Allocator + Clone> Debug for OccupiedError<'_, K,
}
}
-impl<'a, K: Debug, V: Debug, S, A: Allocator + Clone> fmt::Display
- for OccupiedError<'a, K, V, S, A>
-{
+impl<'a, K: Debug, V: Debug, S, A: Allocator> fmt::Display for OccupiedError<'a, K, V, S, A> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(
f,
@@ -4627,7 +4605,7 @@ impl<'a, K: Debug, V: Debug, S, A: Allocator + Clone> fmt::Display
}
}
-impl<'a, K, V, S, A: Allocator + Clone> IntoIterator for &'a HashMap<K, V, S, A> {
+impl<'a, K, V, S, A: Allocator> IntoIterator for &'a HashMap<K, V, S, A> {
type Item = (&'a K, &'a V);
type IntoIter = Iter<'a, K, V>;
@@ -4659,7 +4637,7 @@ impl<'a, K, V, S, A: Allocator + Clone> IntoIterator for &'a HashMap<K, V, S, A>
}
}
-impl<'a, K, V, S, A: Allocator + Clone> IntoIterator for &'a mut HashMap<K, V, S, A> {
+impl<'a, K, V, S, A: Allocator> IntoIterator for &'a mut HashMap<K, V, S, A> {
type Item = (&'a K, &'a mut V);
type IntoIter = IterMut<'a, K, V>;
@@ -4696,7 +4674,7 @@ impl<'a, K, V, S, A: Allocator + Clone> IntoIterator for &'a mut HashMap<K, V, S
}
}
-impl<K, V, S, A: Allocator + Clone> IntoIterator for HashMap<K, V, S, A> {
+impl<K, V, S, A: Allocator> IntoIterator for HashMap<K, V, S, A> {
type Item = (K, V);
type IntoIter = IntoIter<K, V, A>;
@@ -4791,7 +4769,7 @@ where
}
}
-impl<K, V, A: Allocator + Clone> Iterator for IntoIter<K, V, A> {
+impl<K, V, A: Allocator> Iterator for IntoIter<K, V, A> {
type Item = (K, V);
#[cfg_attr(feature = "inline-more", inline)]
@@ -4803,15 +4781,15 @@ impl<K, V, A: Allocator + Clone> Iterator for IntoIter<K, V, A> {
self.inner.size_hint()
}
}
-impl<K, V, A: Allocator + Clone> ExactSizeIterator for IntoIter<K, V, A> {
+impl<K, V, A: Allocator> ExactSizeIterator for IntoIter<K, V, A> {
#[cfg_attr(feature = "inline-more", inline)]
fn len(&self) -> usize {
self.inner.len()
}
}
-impl<K, V, A: Allocator + Clone> FusedIterator for IntoIter<K, V, A> {}
+impl<K, V, A: Allocator> FusedIterator for IntoIter<K, V, A> {}
-impl<K: Debug, V: Debug, A: Allocator + Clone> fmt::Debug for IntoIter<K, V, A> {
+impl<K: Debug, V: Debug, A: Allocator> fmt::Debug for IntoIter<K, V, A> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_list().entries(self.iter()).finish()
}
@@ -4897,7 +4875,7 @@ impl<K, V: Debug> fmt::Debug for ValuesMut<'_, K, V> {
}
}
-impl<'a, K, V, A: Allocator + Clone> Iterator for Drain<'a, K, V, A> {
+impl<'a, K, V, A: Allocator> Iterator for Drain<'a, K, V, A> {
type Item = (K, V);
#[cfg_attr(feature = "inline-more", inline)]
@@ -4909,26 +4887,26 @@ impl<'a, K, V, A: Allocator + Clone> Iterator for Drain<'a, K, V, A> {
self.inner.size_hint()
}
}
-impl<K, V, A: Allocator + Clone> ExactSizeIterator for Drain<'_, K, V, A> {
+impl<K, V, A: Allocator> ExactSizeIterator for Drain<'_, K, V, A> {
#[cfg_attr(feature = "inline-more", inline)]
fn len(&self) -> usize {
self.inner.len()
}
}
-impl<K, V, A: Allocator + Clone> FusedIterator for Drain<'_, K, V, A> {}
+impl<K, V, A: Allocator> FusedIterator for Drain<'_, K, V, A> {}
impl<K, V, A> fmt::Debug for Drain<'_, K, V, A>
where
K: fmt::Debug,
V: fmt::Debug,
- A: Allocator + Clone,
+ A: Allocator,
{
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_list().entries(self.iter()).finish()
}
}
-impl<'a, K, V, S, A: Allocator + Clone> Entry<'a, K, V, S, A> {
+impl<'a, K, V, S, A: Allocator> Entry<'a, K, V, S, A> {
/// Sets the value of the entry, and returns an OccupiedEntry.
///
/// # Examples
@@ -5175,7 +5153,7 @@ impl<'a, K, V, S, A: Allocator + Clone> Entry<'a, K, V, S, A> {
}
}
-impl<'a, K, V: Default, S, A: Allocator + Clone> Entry<'a, K, V, S, A> {
+impl<'a, K, V: Default, S, A: Allocator> Entry<'a, K, V, S, A> {
/// Ensures a value is in the entry by inserting the default value if empty,
/// and returns a mutable reference to the value in the entry.
///
@@ -5208,7 +5186,7 @@ impl<'a, K, V: Default, S, A: Allocator + Clone> Entry<'a, K, V, S, A> {
}
}
-impl<'a, K, V, S, A: Allocator + Clone> OccupiedEntry<'a, K, V, S, A> {
+impl<'a, K, V, S, A: Allocator> OccupiedEntry<'a, K, V, S, A> {
/// Gets a reference to the key in the entry.
///
/// # Examples
@@ -5563,7 +5541,7 @@ impl<'a, K, V, S, A: Allocator + Clone> OccupiedEntry<'a, K, V, S, A> {
}
}
-impl<'a, K, V, S, A: Allocator + Clone> VacantEntry<'a, K, V, S, A> {
+impl<'a, K, V, S, A: Allocator> VacantEntry<'a, K, V, S, A> {
/// Gets a reference to the key that would be used when inserting a value
/// through the `VacantEntry`.
///
@@ -5650,7 +5628,7 @@ impl<'a, K, V, S, A: Allocator + Clone> VacantEntry<'a, K, V, S, A> {
}
}
-impl<'a, 'b, K, Q: ?Sized, V, S, A: Allocator + Clone> EntryRef<'a, 'b, K, Q, V, S, A> {
+impl<'a, 'b, K, Q: ?Sized, V, S, A: Allocator> EntryRef<'a, 'b, K, Q, V, S, A> {
/// Sets the value of the entry, and returns an OccupiedEntryRef.
///
/// # Examples
@@ -5897,7 +5875,7 @@ impl<'a, 'b, K, Q: ?Sized, V, S, A: Allocator + Clone> EntryRef<'a, 'b, K, Q, V,
}
}
-impl<'a, 'b, K, Q: ?Sized, V: Default, S, A: Allocator + Clone> EntryRef<'a, 'b, K, Q, V, S, A> {
+impl<'a, 'b, K, Q: ?Sized, V: Default, S, A: Allocator> EntryRef<'a, 'b, K, Q, V, S, A> {
/// Ensures a value is in the entry by inserting the default value if empty,
/// and returns a mutable reference to the value in the entry.
///
@@ -5930,7 +5908,7 @@ impl<'a, 'b, K, Q: ?Sized, V: Default, S, A: Allocator + Clone> EntryRef<'a, 'b,
}
}
-impl<'a, 'b, K, Q: ?Sized, V, S, A: Allocator + Clone> OccupiedEntryRef<'a, 'b, K, Q, V, S, A> {
+impl<'a, 'b, K, Q: ?Sized, V, S, A: Allocator> OccupiedEntryRef<'a, 'b, K, Q, V, S, A> {
/// Gets a reference to the key in the entry.
///
/// # Examples
@@ -6282,7 +6260,7 @@ impl<'a, 'b, K, Q: ?Sized, V, S, A: Allocator + Clone> OccupiedEntryRef<'a, 'b,
}
}
-impl<'a, 'b, K, Q: ?Sized, V, S, A: Allocator + Clone> VacantEntryRef<'a, 'b, K, Q, V, S, A> {
+impl<'a, 'b, K, Q: ?Sized, V, S, A: Allocator> VacantEntryRef<'a, 'b, K, Q, V, S, A> {
/// Gets a reference to the key that would be used when inserting a value
/// through the `VacantEntryRef`.
///
@@ -6382,7 +6360,7 @@ impl<K, V, S, A> FromIterator<(K, V)> for HashMap<K, V, S, A>
where
K: Eq + Hash,
S: BuildHasher + Default,
- A: Default + Allocator + Clone,
+ A: Default + Allocator,
{
#[cfg_attr(feature = "inline-more", inline)]
fn from_iter<T: IntoIterator<Item = (K, V)>>(iter: T) -> Self {
@@ -6402,7 +6380,7 @@ impl<K, V, S, A> Extend<(K, V)> for HashMap<K, V, S, A>
where
K: Eq + Hash,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
/// Inserts all new key-values from the iterator to existing `HashMap<K, V, S, A>`.
/// Replace values with existing keys with new values returned from the iterator.
@@ -6486,7 +6464,7 @@ where
K: Eq + Hash + Copy,
V: Copy,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
/// Inserts all new key-values from the iterator to existing `HashMap<K, V, S, A>`.
/// Replace values with existing keys with new values returned from the iterator.
@@ -6551,7 +6529,7 @@ where
K: Eq + Hash + Copy,
V: Copy,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
/// Inserts all new key-values from the iterator to existing `HashMap<K, V, S, A>`.
/// Replace values with existing keys with new values returned from the iterator.
@@ -6618,12 +6596,12 @@ fn assert_covariance() {
fn iter_val<'a, 'new>(v: Iter<'a, u8, &'static str>) -> Iter<'a, u8, &'new str> {
v
}
- fn into_iter_key<'new, A: Allocator + Clone>(
+ fn into_iter_key<'new, A: Allocator>(
v: IntoIter<&'static str, u8, A>,
) -> IntoIter<&'new str, u8, A> {
v
}
- fn into_iter_val<'new, A: Allocator + Clone>(
+ fn into_iter_val<'new, A: Allocator>(
v: IntoIter<u8, &'static str, A>,
) -> IntoIter<u8, &'new str, A> {
v
@@ -6653,6 +6631,12 @@ mod test_map {
use super::Entry::{Occupied, Vacant};
use super::EntryRef;
use super::{HashMap, RawEntryMut};
+ use alloc::string::{String, ToString};
+ use alloc::sync::Arc;
+ use allocator_api2::alloc::{AllocError, Allocator, Global};
+ use core::alloc::Layout;
+ use core::ptr::NonNull;
+ use core::sync::atomic::{AtomicI8, Ordering};
use rand::{rngs::SmallRng, Rng, SeedableRng};
use std::borrow::ToOwned;
use std::cell::RefCell;
@@ -8503,4 +8487,396 @@ mod test_map {
);
let _map2 = map1.clone();
}
+
+ struct MyAllocInner {
+ drop_count: Arc<AtomicI8>,
+ }
+
+ #[derive(Clone)]
+ struct MyAlloc {
+ _inner: Arc<MyAllocInner>,
+ }
+
+ impl MyAlloc {
+ fn new(drop_count: Arc<AtomicI8>) -> Self {
+ MyAlloc {
+ _inner: Arc::new(MyAllocInner { drop_count }),
+ }
+ }
+ }
+
+ impl Drop for MyAllocInner {
+ fn drop(&mut self) {
+ println!("MyAlloc freed.");
+ self.drop_count.fetch_sub(1, Ordering::SeqCst);
+ }
+ }
+
+ unsafe impl Allocator for MyAlloc {
+ fn allocate(&self, layout: Layout) -> std::result::Result<NonNull<[u8]>, AllocError> {
+ let g = Global;
+ g.allocate(layout)
+ }
+
+ unsafe fn deallocate(&self, ptr: NonNull<u8>, layout: Layout) {
+ let g = Global;
+ g.deallocate(ptr, layout)
+ }
+ }
+
+ #[test]
+ fn test_hashmap_into_iter_bug() {
+ let dropped: Arc<AtomicI8> = Arc::new(AtomicI8::new(1));
+
+ {
+ let mut map = HashMap::with_capacity_in(10, MyAlloc::new(dropped.clone()));
+ for i in 0..10 {
+ map.entry(i).or_insert_with(|| "i".to_string());
+ }
+
+ for (k, v) in map {
+ println!("{}, {}", k, v);
+ }
+ }
+
+ // All allocator clones should already be dropped.
+ assert_eq!(dropped.load(Ordering::SeqCst), 0);
+ }
+
+ #[derive(Debug)]
+ struct CheckedCloneDrop<T> {
+ panic_in_clone: bool,
+ panic_in_drop: bool,
+ dropped: bool,
+ data: T,
+ }
+
+ impl<T> CheckedCloneDrop<T> {
+ fn new(panic_in_clone: bool, panic_in_drop: bool, data: T) -> Self {
+ CheckedCloneDrop {
+ panic_in_clone,
+ panic_in_drop,
+ dropped: false,
+ data,
+ }
+ }
+ }
+
+ impl<T: Clone> Clone for CheckedCloneDrop<T> {
+ fn clone(&self) -> Self {
+ if self.panic_in_clone {
+ panic!("panic in clone")
+ }
+ Self {
+ panic_in_clone: self.panic_in_clone,
+ panic_in_drop: self.panic_in_drop,
+ dropped: self.dropped,
+ data: self.data.clone(),
+ }
+ }
+ }
+
+ impl<T> Drop for CheckedCloneDrop<T> {
+ fn drop(&mut self) {
+ if self.panic_in_drop {
+ self.dropped = true;
+ panic!("panic in drop");
+ }
+ if self.dropped {
+ panic!("double drop");
+ }
+ self.dropped = true;
+ }
+ }
+
+ /// Return hashmap with predefined distribution of elements.
+ /// All elements will be located in the same order as elements
+ /// returned by iterator.
+ ///
+ /// This function does not panic, but returns an error as a `String`
+ /// to distinguish between a test panic and an error in the input data.
+ fn get_test_map<I, T, A>(
+ iter: I,
+ mut fun: impl FnMut(u64) -> T,
+ alloc: A,
+ ) -> Result<HashMap<u64, CheckedCloneDrop<T>, DefaultHashBuilder, A>, String>
+ where
+ I: Iterator<Item = (bool, bool)> + Clone + ExactSizeIterator,
+ A: Allocator,
+ T: PartialEq + core::fmt::Debug,
+ {
+ use crate::scopeguard::guard;
+
+ let mut map: HashMap<u64, CheckedCloneDrop<T>, _, A> =
+ HashMap::with_capacity_in(iter.size_hint().0, alloc);
+ {
+ let mut guard = guard(&mut map, |map| {
+ for (_, value) in map.iter_mut() {
+ value.panic_in_drop = false
+ }
+ });
+
+ let mut count = 0;
+ // Hash and Key must be equal to each other for controlling the elements placement.
+ for (panic_in_clone, panic_in_drop) in iter.clone() {
+ if core::mem::needs_drop::<T>() && panic_in_drop {
+ return Err(String::from(
+ "panic_in_drop can be set with a type that doesn't need to be dropped",
+ ));
+ }
+ guard.table.insert(
+ count,
+ (
+ count,
+ CheckedCloneDrop::new(panic_in_clone, panic_in_drop, fun(count)),
+ ),
+ |(k, _)| *k,
+ );
+ count += 1;
+ }
+
+ // Let's check that all elements are located as we wanted
+ let mut check_count = 0;
+ for ((key, value), (panic_in_clone, panic_in_drop)) in guard.iter().zip(iter) {
+ if *key != check_count {
+ return Err(format!(
+ "key != check_count,\nkey: `{}`,\ncheck_count: `{}`",
+ key, check_count
+ ));
+ }
+ if value.dropped
+ || value.panic_in_clone != panic_in_clone
+ || value.panic_in_drop != panic_in_drop
+ || value.data != fun(check_count)
+ {
+ return Err(format!(
+ "Value is not equal to expected,\nvalue: `{:?}`,\nexpected: \
+ `CheckedCloneDrop {{ panic_in_clone: {}, panic_in_drop: {}, dropped: {}, data: {:?} }}`",
+ value, panic_in_clone, panic_in_drop, false, fun(check_count)
+ ));
+ }
+ check_count += 1;
+ }
+
+ if guard.len() != check_count as usize {
+ return Err(format!(
+ "map.len() != check_count,\nmap.len(): `{}`,\ncheck_count: `{}`",
+ guard.len(),
+ check_count
+ ));
+ }
+
+ if count != check_count {
+ return Err(format!(
+ "count != check_count,\ncount: `{}`,\ncheck_count: `{}`",
+ count, check_count
+ ));
+ }
+ core::mem::forget(guard);
+ }
+ Ok(map)
+ }
+
+ const DISARMED: bool = false;
+ const ARMED: bool = true;
+
+ const ARMED_FLAGS: [bool; 8] = [
+ DISARMED, DISARMED, DISARMED, ARMED, DISARMED, DISARMED, DISARMED, DISARMED,
+ ];
+
+ const DISARMED_FLAGS: [bool; 8] = [
+ DISARMED, DISARMED, DISARMED, DISARMED, DISARMED, DISARMED, DISARMED, DISARMED,
+ ];
+
+ #[test]
+ #[should_panic = "panic in clone"]
+ fn test_clone_memory_leaks_and_double_drop_one() {
+ let dropped: Arc<AtomicI8> = Arc::new(AtomicI8::new(2));
+
+ {
+ assert_eq!(ARMED_FLAGS.len(), DISARMED_FLAGS.len());
+
+ let map: HashMap<u64, CheckedCloneDrop<Vec<u64>>, DefaultHashBuilder, MyAlloc> =
+ match get_test_map(
+ ARMED_FLAGS.into_iter().zip(DISARMED_FLAGS),
+ |n| vec![n],
+ MyAlloc::new(dropped.clone()),
+ ) {
+ Ok(map) => map,
+ Err(msg) => panic!("{msg}"),
+ };
+
+ // Clone should normally clone a few elements, and then (when the
+ // clone function panics), deallocate both its own memory, memory
+ // of `dropped: Arc<AtomicI8>` and the memory of already cloned
+ // elements (Vec<i32> memory inside CheckedCloneDrop).
+ let _map2 = map.clone();
+ }
+ }
+
+ #[test]
+ #[should_panic = "panic in drop"]
+ fn test_clone_memory_leaks_and_double_drop_two() {
+ let dropped: Arc<AtomicI8> = Arc::new(AtomicI8::new(2));
+
+ {
+ assert_eq!(ARMED_FLAGS.len(), DISARMED_FLAGS.len());
+
+ let map: HashMap<u64, CheckedCloneDrop<u64>, DefaultHashBuilder, _> = match get_test_map(
+ DISARMED_FLAGS.into_iter().zip(DISARMED_FLAGS),
+ |n| n,
+ MyAlloc::new(dropped.clone()),
+ ) {
+ Ok(map) => map,
+ Err(msg) => panic!("{msg}"),
+ };
+
+ let mut map2 = match get_test_map(
+ DISARMED_FLAGS.into_iter().zip(ARMED_FLAGS),
+ |n| n,
+ MyAlloc::new(dropped.clone()),
+ ) {
+ Ok(map) => map,
+ Err(msg) => panic!("{msg}"),
+ };
+
+ // The `clone_from` should try to drop the elements of `map2` without
+ // double drop and leaking the allocator. Elements that have not been
+ // dropped leak their memory.
+ map2.clone_from(&map);
+ }
+ }
+
+ /// We check that we have a working table if the clone operation from another
+ /// thread ended in a panic (when buckets of maps are equal to each other).
+ #[test]
+ fn test_catch_panic_clone_from_when_len_is_equal() {
+ use std::thread;
+
+ let dropped: Arc<AtomicI8> = Arc::new(AtomicI8::new(2));
+
+ {
+ assert_eq!(ARMED_FLAGS.len(), DISARMED_FLAGS.len());
+
+ let mut map = match get_test_map(
+ DISARMED_FLAGS.into_iter().zip(DISARMED_FLAGS),
+ |n| vec![n],
+ MyAlloc::new(dropped.clone()),
+ ) {
+ Ok(map) => map,
+ Err(msg) => panic!("{msg}"),
+ };
+
+ thread::scope(|s| {
+ let result: thread::ScopedJoinHandle<'_, String> = s.spawn(|| {
+ let scope_map =
+ match get_test_map(ARMED_FLAGS.into_iter().zip(DISARMED_FLAGS), |n| vec![n * 2], MyAlloc::new(dropped.clone())) {
+ Ok(map) => map,
+ Err(msg) => return msg,
+ };
+ if map.table.buckets() != scope_map.table.buckets() {
+ return format!(
+ "map.table.buckets() != scope_map.table.buckets(),\nleft: `{}`,\nright: `{}`",
+ map.table.buckets(), scope_map.table.buckets()
+ );
+ }
+ map.clone_from(&scope_map);
+ "We must fail the cloning!!!".to_owned()
+ });
+ if let Ok(msg) = result.join() {
+ panic!("{msg}")
+ }
+ });
+
+ // Let's check that all iterators work fine and do not return elements
+ // (especially `RawIterRange`, which does not depend on the number of
+ // elements in the table, but looks directly at the control bytes)
+ //
+ // SAFETY: We know for sure that `RawTable` will outlive
+ // the returned `RawIter / RawIterRange` iterator.
+ assert_eq!(map.len(), 0);
+ assert_eq!(map.iter().count(), 0);
+ assert_eq!(unsafe { map.table.iter().count() }, 0);
+ assert_eq!(unsafe { map.table.iter().iter.count() }, 0);
+
+ for idx in 0..map.table.buckets() {
+ let idx = idx as u64;
+ assert!(
+ map.table.find(idx, |(k, _)| *k == idx).is_none(),
+ "Index: {idx}"
+ );
+ }
+ }
+
+ // All allocator clones should already be dropped.
+ assert_eq!(dropped.load(Ordering::SeqCst), 0);
+ }
+
+ /// We check that we have a working table if the clone operation from another
+ /// thread ended in a panic (when buckets of maps are not equal to each other).
+ #[test]
+ fn test_catch_panic_clone_from_when_len_is_not_equal() {
+ use std::thread;
+
+ let dropped: Arc<AtomicI8> = Arc::new(AtomicI8::new(2));
+
+ {
+ assert_eq!(ARMED_FLAGS.len(), DISARMED_FLAGS.len());
+
+ let mut map = match get_test_map(
+ [DISARMED].into_iter().zip([DISARMED]),
+ |n| vec![n],
+ MyAlloc::new(dropped.clone()),
+ ) {
+ Ok(map) => map,
+ Err(msg) => panic!("{msg}"),
+ };
+
+ thread::scope(|s| {
+ let result: thread::ScopedJoinHandle<'_, String> = s.spawn(|| {
+ let scope_map = match get_test_map(
+ ARMED_FLAGS.into_iter().zip(DISARMED_FLAGS),
+ |n| vec![n * 2],
+ MyAlloc::new(dropped.clone()),
+ ) {
+ Ok(map) => map,
+ Err(msg) => return msg,
+ };
+ if map.table.buckets() == scope_map.table.buckets() {
+ return format!(
+ "map.table.buckets() == scope_map.table.buckets(): `{}`",
+ map.table.buckets()
+ );
+ }
+ map.clone_from(&scope_map);
+ "We must fail the cloning!!!".to_owned()
+ });
+ if let Ok(msg) = result.join() {
+ panic!("{msg}")
+ }
+ });
+
+ // Let's check that all iterators work fine and do not return elements
+ // (especially `RawIterRange`, which does not depend on the number of
+ // elements in the table, but looks directly at the control bytes)
+ //
+ // SAFETY: We know for sure that `RawTable` will outlive
+ // the returned `RawIter / RawIterRange` iterator.
+ assert_eq!(map.len(), 0);
+ assert_eq!(map.iter().count(), 0);
+ assert_eq!(unsafe { map.table.iter().count() }, 0);
+ assert_eq!(unsafe { map.table.iter().iter.count() }, 0);
+
+ for idx in 0..map.table.buckets() {
+ let idx = idx as u64;
+ assert!(
+ map.table.find(idx, |(k, _)| *k == idx).is_none(),
+ "Index: {idx}"
+ );
+ }
+ }
+
+ // All allocator clones should already be dropped.
+ assert_eq!(dropped.load(Ordering::SeqCst), 0);
+ }
}
diff --git a/vendor/hashbrown/src/raw/mod.rs b/vendor/hashbrown/src/raw/mod.rs
index 1a6dced4b..25c5d1c4d 100644
--- a/vendor/hashbrown/src/raw/mod.rs
+++ b/vendor/hashbrown/src/raw/mod.rs
@@ -4,7 +4,6 @@ use crate::TryReserveError;
use core::iter::FusedIterator;
use core::marker::PhantomData;
use core::mem;
-use core::mem::ManuallyDrop;
use core::mem::MaybeUninit;
use core::ptr::NonNull;
use core::{hint, ptr};
@@ -21,11 +20,18 @@ cfg_if! {
if #[cfg(all(
target_feature = "sse2",
any(target_arch = "x86", target_arch = "x86_64"),
- not(miri)
+ not(miri),
))] {
mod sse2;
use sse2 as imp;
- } else if #[cfg(all(target_arch = "aarch64", target_feature = "neon"))] {
+ } else if #[cfg(all(
+ target_arch = "aarch64",
+ target_feature = "neon",
+ // NEON intrinsics are currently broken on big-endian targets.
+ // See https://github.com/rust-lang/stdarch/issues/1484.
+ target_endian = "little",
+ not(miri),
+ ))] {
mod neon;
use neon as imp;
} else {
@@ -93,6 +99,13 @@ impl Fallibility {
}
}
+trait SizedTypeProperties: Sized {
+ const IS_ZERO_SIZED: bool = mem::size_of::<Self>() == 0;
+ const NEEDS_DROP: bool = mem::needs_drop::<Self>();
+}
+
+impl<T> SizedTypeProperties for T {}
+
/// Control byte value for an empty bucket.
const EMPTY: u8 = 0b1111_1111;
@@ -294,8 +307,6 @@ impl<T> Clone for Bucket<T> {
}
impl<T> Bucket<T> {
- const IS_ZERO_SIZED_TYPE: bool = mem::size_of::<T>() == 0;
-
/// Creates a [`Bucket`] that contain pointer to the data.
/// The pointer calculation is performed by calculating the
/// offset from given `base` pointer (convenience for
@@ -364,7 +375,7 @@ impl<T> Bucket<T> {
//
// where: T0...Tlast - our stored data; C0...Clast - control bytes
// or metadata for data.
- let ptr = if Self::IS_ZERO_SIZED_TYPE {
+ let ptr = if T::IS_ZERO_SIZED {
// won't overflow because index must be less than length (bucket_mask)
// and bucket_mask is guaranteed to be less than `isize::MAX`
// (see TableLayout::calculate_layout_for method)
@@ -438,7 +449,7 @@ impl<T> Bucket<T> {
// (base.as_ptr() as usize - self.ptr.as_ptr() as usize) / mem::size_of::<T>()
//
// where: T0...Tlast - our stored data; C0...Clast - control bytes or metadata for data.
- if Self::IS_ZERO_SIZED_TYPE {
+ if T::IS_ZERO_SIZED {
// this can not be UB
self.ptr.as_ptr() as usize - 1
} else {
@@ -502,7 +513,7 @@ impl<T> Bucket<T> {
/// ```
#[inline]
pub fn as_ptr(&self) -> *mut T {
- if Self::IS_ZERO_SIZED_TYPE {
+ if T::IS_ZERO_SIZED {
// Just return an arbitrary ZST pointer which is properly aligned
// invalid pointer is good enough for ZST
invalid_mut(mem::align_of::<T>())
@@ -550,7 +561,7 @@ impl<T> Bucket<T> {
/// [`RawTableInner::buckets`]: RawTableInner::buckets
#[inline]
unsafe fn next_n(&self, offset: usize) -> Self {
- let ptr = if Self::IS_ZERO_SIZED_TYPE {
+ let ptr = if T::IS_ZERO_SIZED {
// invalid pointer is good enough for ZST
invalid_mut(self.ptr.as_ptr() as usize + offset)
} else {
@@ -774,15 +785,16 @@ impl<T> Bucket<T> {
}
/// A raw hash table with an unsafe API.
-pub struct RawTable<T, A: Allocator + Clone = Global> {
- table: RawTableInner<A>,
+pub struct RawTable<T, A: Allocator = Global> {
+ table: RawTableInner,
+ alloc: A,
// Tell dropck that we own instances of T.
marker: PhantomData<T>,
}
/// Non-generic part of `RawTable` which allows functions to be instantiated only once regardless
/// of how many different key-value types are used.
-struct RawTableInner<A> {
+struct RawTableInner {
// Mask to get an index from a hash value. The value is one less than the
// number of buckets in the table.
bucket_mask: usize,
@@ -796,8 +808,6 @@ struct RawTableInner<A> {
// Number of elements in the table, only really used by len()
items: usize,
-
- alloc: A,
}
impl<T> RawTable<T, Global> {
@@ -809,7 +819,8 @@ impl<T> RawTable<T, Global> {
#[inline]
pub const fn new() -> Self {
Self {
- table: RawTableInner::new_in(Global),
+ table: RawTableInner::NEW,
+ alloc: Global,
marker: PhantomData,
}
}
@@ -828,9 +839,8 @@ impl<T> RawTable<T, Global> {
}
}
-impl<T, A: Allocator + Clone> RawTable<T, A> {
+impl<T, A: Allocator> RawTable<T, A> {
const TABLE_LAYOUT: TableLayout = TableLayout::new::<T>();
- const DATA_NEEDS_DROP: bool = mem::needs_drop::<T>();
/// Creates a new empty hash table without allocating any memory, using the
/// given allocator.
@@ -841,7 +851,8 @@ impl<T, A: Allocator + Clone> RawTable<T, A> {
#[inline]
pub const fn new_in(alloc: A) -> Self {
Self {
- table: RawTableInner::new_in(alloc),
+ table: RawTableInner::NEW,
+ alloc,
marker: PhantomData,
}
}
@@ -859,66 +870,77 @@ impl<T, A: Allocator + Clone> RawTable<T, A> {
Ok(Self {
table: RawTableInner::new_uninitialized(
- alloc,
+ &alloc,
Self::TABLE_LAYOUT,
buckets,
fallibility,
)?,
+ alloc,
marker: PhantomData,
})
}
- /// Attempts to allocate a new hash table with at least enough capacity
- /// for inserting the given number of elements without reallocating.
- fn fallible_with_capacity(
- alloc: A,
- capacity: usize,
- fallibility: Fallibility,
- ) -> Result<Self, TryReserveError> {
+ /// Attempts to allocate a new hash table using the given allocator, with at least enough
+ /// capacity for inserting the given number of elements without reallocating.
+ #[cfg(feature = "raw")]
+ pub fn try_with_capacity_in(capacity: usize, alloc: A) -> Result<Self, TryReserveError> {
Ok(Self {
table: RawTableInner::fallible_with_capacity(
- alloc,
+ &alloc,
Self::TABLE_LAYOUT,
capacity,
- fallibility,
+ Fallibility::Fallible,
)?,
+ alloc,
marker: PhantomData,
})
}
- /// Attempts to allocate a new hash table using the given allocator, with at least enough
- /// capacity for inserting the given number of elements without reallocating.
- #[cfg(feature = "raw")]
- pub fn try_with_capacity_in(capacity: usize, alloc: A) -> Result<Self, TryReserveError> {
- Self::fallible_with_capacity(alloc, capacity, Fallibility::Fallible)
- }
-
/// Allocates a new hash table using the given allocator, with at least enough capacity for
/// inserting the given number of elements without reallocating.
pub fn with_capacity_in(capacity: usize, alloc: A) -> Self {
- // Avoid `Result::unwrap_or_else` because it bloats LLVM IR.
- match Self::fallible_with_capacity(alloc, capacity, Fallibility::Infallible) {
- Ok(capacity) => capacity,
- Err(_) => unsafe { hint::unreachable_unchecked() },
+ Self {
+ table: RawTableInner::with_capacity(&alloc, Self::TABLE_LAYOUT, capacity),
+ alloc,
+ marker: PhantomData,
}
}
/// Returns a reference to the underlying allocator.
#[inline]
pub fn allocator(&self) -> &A {
- &self.table.alloc
- }
-
- /// Deallocates the table without dropping any entries.
- #[cfg_attr(feature = "inline-more", inline)]
- unsafe fn free_buckets(&mut self) {
- self.table.free_buckets(Self::TABLE_LAYOUT);
+ &self.alloc
}
- /// Returns pointer to one past last element of data table.
+ /// Returns pointer to one past last `data` element in the the table as viewed from
+ /// the start point of the allocation.
+ ///
+ /// The caller must ensure that the `RawTable` outlives the returned [`NonNull<T>`],
+ /// otherwise using it may result in [`undefined behavior`].
+ ///
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
#[inline]
- pub unsafe fn data_end(&self) -> NonNull<T> {
- NonNull::new_unchecked(self.table.ctrl.as_ptr().cast())
+ pub fn data_end(&self) -> NonNull<T> {
+ // SAFETY: `self.table.ctrl` is `NonNull`, so casting it is safe
+ //
+ // `self.table.ctrl.as_ptr().cast()` returns pointer that
+ // points here (to the end of `T0`)
+ // ∨
+ // [Pad], T_n, ..., T1, T0, |CT0, CT1, ..., CT_n|, CTa_0, CTa_1, ..., CTa_m
+ // \________ ________/
+ // \/
+ // `n = buckets - 1`, i.e. `RawTable::buckets() - 1`
+ //
+ // where: T0...T_n - our stored data;
+ // CT0...CT_n - control bytes or metadata for `data`.
+ // CTa_0...CTa_m - additional control bytes, where `m = Group::WIDTH - 1` (so that the search
+ // with loading `Group` bytes from the heap works properly, even if the result
+ // of `h1(hash) & self.bucket_mask` is equal to `self.bucket_mask`). See also
+ // `RawTableInner::set_ctrl` function.
+ //
+ // P.S. `h1(hash) & self.bucket_mask` is the same as `hash as usize % self.buckets()` because the number
+ // of buckets is a power of two, and `self.bucket_mask = self.buckets() - 1`.
+ unsafe { NonNull::new_unchecked(self.table.ctrl.as_ptr().cast()) }
}
/// Returns pointer to start of data table.
@@ -938,7 +960,9 @@ impl<T, A: Allocator + Clone> RawTable<T, A> {
#[inline]
#[cfg(feature = "raw")]
pub fn allocation_info(&self) -> (NonNull<u8>, Layout) {
- self.table.allocation_info_or_zero(Self::TABLE_LAYOUT)
+ // SAFETY: We use the same `table_layout` that was used to allocate
+ // this table.
+ unsafe { self.table.allocation_info_or_zero(Self::TABLE_LAYOUT) }
}
/// Returns the index of a bucket from a `Bucket`.
@@ -948,8 +972,55 @@ impl<T, A: Allocator + Clone> RawTable<T, A> {
}
/// Returns a pointer to an element in the table.
+ ///
+ /// The caller must ensure that the `RawTable` outlives the returned [`Bucket<T>`],
+ /// otherwise using it may result in [`undefined behavior`].
+ ///
+ /// # Safety
+ ///
+ /// If `mem::size_of::<T>() != 0`, then the caller of this function must observe the
+ /// following safety rules:
+ ///
+ /// * The table must already be allocated;
+ ///
+ /// * The `index` must not be greater than the number returned by the [`RawTable::buckets`]
+ /// function, i.e. `(index + 1) <= self.buckets()`.
+ ///
+ /// It is safe to call this function with index of zero (`index == 0`) on a table that has
+ /// not been allocated, but using the returned [`Bucket`] results in [`undefined behavior`].
+ ///
+ /// If `mem::size_of::<T>() == 0`, then the only requirement is that the `index` must
+ /// not be greater than the number returned by the [`RawTable::buckets`] function, i.e.
+ /// `(index + 1) <= self.buckets()`.
+ ///
+ /// [`RawTable::buckets`]: RawTable::buckets
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
#[inline]
pub unsafe fn bucket(&self, index: usize) -> Bucket<T> {
+ // If mem::size_of::<T>() != 0 then return a pointer to the `element` in the `data part` of the table
+ // (we start counting from "0", so that in the expression T[n], the "n" index actually one less than
+ // the "buckets" number of our `RawTable`, i.e. "n = RawTable::buckets() - 1"):
+ //
+ // `table.bucket(3).as_ptr()` returns a pointer that points here in the `data`
+ // part of the `RawTable`, i.e. to the start of T3 (see `Bucket::as_ptr`)
+ // |
+ // | `base = self.data_end()` points here
+ // | (to the start of CT0 or to the end of T0)
+ // v v
+ // [Pad], T_n, ..., |T3|, T2, T1, T0, |CT0, CT1, CT2, CT3, ..., CT_n, CTa_0, CTa_1, ..., CTa_m
+ // ^ \__________ __________/
+ // `table.bucket(3)` returns a pointer that points \/
+ // here in the `data` part of the `RawTable` (to additional control bytes
+ // the end of T3) `m = Group::WIDTH - 1`
+ //
+ // where: T0...T_n - our stored data;
+ // CT0...CT_n - control bytes or metadata for `data`;
+ // CTa_0...CTa_m - additional control bytes (so that the search with loading `Group` bytes from
+ // the heap works properly, even if the result of `h1(hash) & self.table.bucket_mask`
+ // is equal to `self.table.bucket_mask`). See also `RawTableInner::set_ctrl` function.
+ //
+ // P.S. `h1(hash) & self.table.bucket_mask` is the same as `hash as usize % self.buckets()` because the number
+ // of buckets is a power of two, and `self.table.bucket_mask = self.buckets() - 1`.
debug_assert_ne!(self.table.bucket_mask, 0);
debug_assert!(index < self.buckets());
Bucket::from_base_index(self.data_end(), index)
@@ -1028,15 +1099,10 @@ impl<T, A: Allocator + Clone> RawTable<T, A> {
// Ensure that the table is reset even if one of the drops panic
let mut self_ = guard(self, |self_| self_.clear_no_drop());
unsafe {
- self_.drop_elements();
- }
- }
-
- unsafe fn drop_elements(&mut self) {
- if Self::DATA_NEEDS_DROP && !self.is_empty() {
- for item in self.iter() {
- item.drop();
- }
+ // SAFETY: ScopeGuard sets to zero the `items` field of the table
+ // even in case of panic during the dropping of the elements so
+ // that there will be no double drop of the elements.
+ self_.table.drop_elements::<T>();
}
}
@@ -1047,7 +1113,16 @@ impl<T, A: Allocator + Clone> RawTable<T, A> {
// space for.
let min_size = usize::max(self.table.items, min_size);
if min_size == 0 {
- *self = Self::new_in(self.table.alloc.clone());
+ let mut old_inner = mem::replace(&mut self.table, RawTableInner::NEW);
+ unsafe {
+ // SAFETY:
+ // 1. We call the function only once;
+ // 2. We know for sure that `alloc` and `table_layout` matches the [`Allocator`]
+ // and [`TableLayout`] that were used to allocate this table.
+ // 3. If any elements' drop function panics, then there will only be a memory leak,
+ // because we have replaced the inner table with a new one.
+ old_inner.drop_inner_table::<T, _>(&self.alloc, Self::TABLE_LAYOUT);
+ }
return;
}
@@ -1064,14 +1139,33 @@ impl<T, A: Allocator + Clone> RawTable<T, A> {
if min_buckets < self.buckets() {
// Fast path if the table is empty
if self.table.items == 0 {
- *self = Self::with_capacity_in(min_size, self.table.alloc.clone());
+ let new_inner =
+ RawTableInner::with_capacity(&self.alloc, Self::TABLE_LAYOUT, min_size);
+ let mut old_inner = mem::replace(&mut self.table, new_inner);
+ unsafe {
+ // SAFETY:
+ // 1. We call the function only once;
+ // 2. We know for sure that `alloc` and `table_layout` matches the [`Allocator`]
+ // and [`TableLayout`] that were used to allocate this table.
+ // 3. If any elements' drop function panics, then there will only be a memory leak,
+ // because we have replaced the inner table with a new one.
+ old_inner.drop_inner_table::<T, _>(&self.alloc, Self::TABLE_LAYOUT);
+ }
} else {
// Avoid `Result::unwrap_or_else` because it bloats LLVM IR.
- if self
- .resize(min_size, hasher, Fallibility::Infallible)
- .is_err()
- {
- unsafe { hint::unreachable_unchecked() }
+ unsafe {
+ // SAFETY:
+ // 1. We know for sure that `min_size >= self.table.items`.
+ // 2. The [`RawTableInner`] must already have properly initialized control bytes since
+ // we will never expose RawTable::new_uninitialized in a public API.
+ if self
+ .resize(min_size, hasher, Fallibility::Infallible)
+ .is_err()
+ {
+ // SAFETY: The result of calling the `resize` function cannot be an error
+ // because `fallibility == Fallibility::Infallible.
+ hint::unreachable_unchecked()
+ }
}
}
}
@@ -1083,11 +1177,16 @@ impl<T, A: Allocator + Clone> RawTable<T, A> {
pub fn reserve(&mut self, additional: usize, hasher: impl Fn(&T) -> u64) {
if unlikely(additional > self.table.growth_left) {
// Avoid `Result::unwrap_or_else` because it bloats LLVM IR.
- if self
- .reserve_rehash(additional, hasher, Fallibility::Infallible)
- .is_err()
- {
- unsafe { hint::unreachable_unchecked() }
+ unsafe {
+ // SAFETY: The [`RawTableInner`] must already have properly initialized control
+ // bytes since we will never expose RawTable::new_uninitialized in a public API.
+ if self
+ .reserve_rehash(additional, hasher, Fallibility::Infallible)
+ .is_err()
+ {
+ // SAFETY: All allocation errors will be caught inside `RawTableInner::reserve_rehash`.
+ hint::unreachable_unchecked()
+ }
}
}
}
@@ -1101,28 +1200,45 @@ impl<T, A: Allocator + Clone> RawTable<T, A> {
hasher: impl Fn(&T) -> u64,
) -> Result<(), TryReserveError> {
if additional > self.table.growth_left {
- self.reserve_rehash(additional, hasher, Fallibility::Fallible)
+ // SAFETY: The [`RawTableInner`] must already have properly initialized control
+ // bytes since we will never expose RawTable::new_uninitialized in a public API.
+ unsafe { self.reserve_rehash(additional, hasher, Fallibility::Fallible) }
} else {
Ok(())
}
}
/// Out-of-line slow path for `reserve` and `try_reserve`.
+ ///
+ /// # Safety
+ ///
+ /// The [`RawTableInner`] must have properly initialized control bytes,
+ /// otherwise calling this function results in [`undefined behavior`]
+ ///
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
#[cold]
#[inline(never)]
- fn reserve_rehash(
+ unsafe fn reserve_rehash(
&mut self,
additional: usize,
hasher: impl Fn(&T) -> u64,
fallibility: Fallibility,
) -> Result<(), TryReserveError> {
unsafe {
+ // SAFETY:
+ // 1. We know for sure that `alloc` and `layout` matches the [`Allocator`] and
+ // [`TableLayout`] that were used to allocate this table.
+ // 2. The `drop` function is the actual drop function of the elements stored in
+ // the table.
+ // 3. The caller ensures that the control bytes of the `RawTableInner`
+ // are already initialized.
self.table.reserve_rehash_inner(
+ &self.alloc,
additional,
&|table, index| hasher(table.bucket::<T>(index).as_ref()),
fallibility,
Self::TABLE_LAYOUT,
- if Self::DATA_NEEDS_DROP {
+ if T::NEEDS_DROP {
Some(mem::transmute(ptr::drop_in_place::<T> as unsafe fn(*mut T)))
} else {
None
@@ -1133,20 +1249,50 @@ impl<T, A: Allocator + Clone> RawTable<T, A> {
/// Allocates a new table of a different size and moves the contents of the
/// current table into it.
- fn resize(
+ ///
+ /// # Safety
+ ///
+ /// The [`RawTableInner`] must have properly initialized control bytes,
+ /// otherwise calling this function results in [`undefined behavior`]
+ ///
+ /// The caller of this function must ensure that `capacity >= self.table.items`
+ /// otherwise:
+ ///
+ /// * If `self.table.items != 0`, calling of this function with `capacity`
+ /// equal to 0 (`capacity == 0`) results in [`undefined behavior`].
+ ///
+ /// * If `capacity_to_buckets(capacity) < Group::WIDTH` and
+ /// `self.table.items > capacity_to_buckets(capacity)`
+ /// calling this function results in [`undefined behavior`].
+ ///
+ /// * If `capacity_to_buckets(capacity) >= Group::WIDTH` and
+ /// `self.table.items > capacity_to_buckets(capacity)`
+ /// calling this function are never return (will go into an
+ /// infinite loop).
+ ///
+ /// See [`RawTableInner::find_insert_slot`] for more information.
+ ///
+ /// [`RawTableInner::find_insert_slot`]: RawTableInner::find_insert_slot
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
+ unsafe fn resize(
&mut self,
capacity: usize,
hasher: impl Fn(&T) -> u64,
fallibility: Fallibility,
) -> Result<(), TryReserveError> {
- unsafe {
- self.table.resize_inner(
- capacity,
- &|table, index| hasher(table.bucket::<T>(index).as_ref()),
- fallibility,
- Self::TABLE_LAYOUT,
- )
- }
+ // SAFETY:
+ // 1. The caller of this function guarantees that `capacity >= self.table.items`.
+ // 2. We know for sure that `alloc` and `layout` matches the [`Allocator`] and
+ // [`TableLayout`] that were used to allocate this table.
+ // 3. The caller ensures that the control bytes of the `RawTableInner`
+ // are already initialized.
+ self.table.resize_inner(
+ &self.alloc,
+ capacity,
+ &|table, index| hasher(table.bucket::<T>(index).as_ref()),
+ fallibility,
+ Self::TABLE_LAYOUT,
+ )
}
/// Inserts a new element into the table, and returns its raw bucket.
@@ -1155,14 +1301,23 @@ impl<T, A: Allocator + Clone> RawTable<T, A> {
#[cfg_attr(feature = "inline-more", inline)]
pub fn insert(&mut self, hash: u64, value: T, hasher: impl Fn(&T) -> u64) -> Bucket<T> {
unsafe {
+ // SAFETY:
+ // 1. The [`RawTableInner`] must already have properly initialized control bytes since
+ // we will never expose `RawTable::new_uninitialized` in a public API.
+ //
+ // 2. We reserve additional space (if necessary) right after calling this function.
let mut slot = self.table.find_insert_slot(hash);
- // We can avoid growing the table once we have reached our load
- // factor if we are replacing a tombstone. This works since the
- // number of EMPTY slots does not change in this case.
+ // We can avoid growing the table once we have reached our load factor if we are replacing
+ // a tombstone. This works since the number of EMPTY slots does not change in this case.
+ //
+ // SAFETY: The function is guaranteed to return [`InsertSlot`] that contains an index
+ // in the range `0..=self.buckets()`.
let old_ctrl = *self.table.ctrl(slot.index);
if unlikely(self.table.growth_left == 0 && special_is_empty(old_ctrl)) {
self.reserve(1, hasher);
+ // SAFETY: We know for sure that `RawTableInner` has control bytes
+ // initialized and that there is extra space in the table.
slot = self.table.find_insert_slot(hash);
}
@@ -1261,13 +1416,22 @@ impl<T, A: Allocator + Clone> RawTable<T, A> {
) -> Result<Bucket<T>, InsertSlot> {
self.reserve(1, hasher);
- match self
- .table
- .find_or_find_insert_slot_inner(hash, &mut |index| unsafe {
- eq(self.bucket(index).as_ref())
- }) {
- Ok(index) => Ok(unsafe { self.bucket(index) }),
- Err(slot) => Err(slot),
+ unsafe {
+ // SAFETY:
+ // 1. We know for sure that there is at least one empty `bucket` in the table.
+ // 2. The [`RawTableInner`] must already have properly initialized control bytes since we will
+ // never expose `RawTable::new_uninitialized` in a public API.
+ // 3. The `find_or_find_insert_slot_inner` function returns the `index` of only the full bucket,
+ // which is in the range `0..self.buckets()` (since there is at least one empty `bucket` in
+ // the table), so calling `self.bucket(index)` and `Bucket::as_ref` is safe.
+ match self
+ .table
+ .find_or_find_insert_slot_inner(hash, &mut |index| eq(self.bucket(index).as_ref()))
+ {
+ // SAFETY: See explanation above.
+ Ok(index) => Ok(self.bucket(index)),
+ Err(slot) => Err(slot),
+ }
}
}
@@ -1292,14 +1456,23 @@ impl<T, A: Allocator + Clone> RawTable<T, A> {
/// Searches for an element in the table.
#[inline]
pub fn find(&self, hash: u64, mut eq: impl FnMut(&T) -> bool) -> Option<Bucket<T>> {
- let result = self.table.find_inner(hash, &mut |index| unsafe {
- eq(self.bucket(index).as_ref())
- });
-
- // Avoid `Option::map` because it bloats LLVM IR.
- match result {
- Some(index) => Some(unsafe { self.bucket(index) }),
- None => None,
+ unsafe {
+ // SAFETY:
+ // 1. The [`RawTableInner`] must already have properly initialized control bytes since we
+ // will never expose `RawTable::new_uninitialized` in a public API.
+ // 1. The `find_inner` function returns the `index` of only the full bucket, which is in
+ // the range `0..self.buckets()`, so calling `self.bucket(index)` and `Bucket::as_ref`
+ // is safe.
+ let result = self
+ .table
+ .find_inner(hash, &mut |index| eq(self.bucket(index).as_ref()));
+
+ // Avoid `Option::map` because it bloats LLVM IR.
+ match result {
+ // SAFETY: See explanation above.
+ Some(index) => Some(self.bucket(index)),
+ None => None,
+ }
}
}
@@ -1423,11 +1596,11 @@ impl<T, A: Allocator + Clone> RawTable<T, A> {
/// struct, we have to make the `iter` method unsafe.
#[inline]
pub unsafe fn iter(&self) -> RawIter<T> {
- let data = Bucket::from_base_index(self.data_end(), 0);
- RawIter {
- iter: RawIterRange::new(self.table.ctrl.as_ptr(), data, self.table.buckets()),
- items: self.table.items,
- }
+ // SAFETY:
+ // 1. The caller must uphold the safety contract for `iter` method.
+ // 2. The [`RawTableInner`] must already have properly initialized control bytes since
+ // we will never expose RawTable::new_uninitialized in a public API.
+ self.table.iter()
}
/// Returns an iterator over occupied buckets that could match a given hash.
@@ -1467,8 +1640,8 @@ impl<T, A: Allocator + Clone> RawTable<T, A> {
debug_assert_eq!(iter.len(), self.len());
RawDrain {
iter,
- table: ManuallyDrop::new(mem::replace(self, Self::new_in(self.table.alloc.clone()))),
- orig_table: NonNull::from(self),
+ table: mem::replace(&mut self.table, RawTableInner::NEW),
+ orig_table: NonNull::from(&mut self.table),
marker: PhantomData,
}
}
@@ -1482,20 +1655,18 @@ impl<T, A: Allocator + Clone> RawTable<T, A> {
pub unsafe fn into_iter_from(self, iter: RawIter<T>) -> RawIntoIter<T, A> {
debug_assert_eq!(iter.len(), self.len());
- let alloc = self.table.alloc.clone();
let allocation = self.into_allocation();
RawIntoIter {
iter,
allocation,
marker: PhantomData,
- alloc,
}
}
/// Converts the table into a raw allocation. The contents of the table
/// should be dropped using a `RawIter` before freeing the allocation.
#[cfg_attr(feature = "inline-more", inline)]
- pub(crate) fn into_allocation(self) -> Option<(NonNull<u8>, Layout)> {
+ pub(crate) fn into_allocation(self) -> Option<(NonNull<u8>, Layout, A)> {
let alloc = if self.table.is_empty_singleton() {
None
} else {
@@ -1508,6 +1679,7 @@ impl<T, A: Allocator + Clone> RawTable<T, A> {
Some((
unsafe { NonNull::new_unchecked(self.table.ctrl.as_ptr().sub(ctrl_offset)) },
layout,
+ unsafe { ptr::read(&self.alloc) },
))
};
mem::forget(self);
@@ -1515,39 +1687,40 @@ impl<T, A: Allocator + Clone> RawTable<T, A> {
}
}
-unsafe impl<T, A: Allocator + Clone> Send for RawTable<T, A>
+unsafe impl<T, A: Allocator> Send for RawTable<T, A>
where
T: Send,
A: Send,
{
}
-unsafe impl<T, A: Allocator + Clone> Sync for RawTable<T, A>
+unsafe impl<T, A: Allocator> Sync for RawTable<T, A>
where
T: Sync,
A: Sync,
{
}
-impl<A> RawTableInner<A> {
+impl RawTableInner {
+ const NEW: Self = RawTableInner::new();
+
/// Creates a new empty hash table without allocating any memory.
///
/// In effect this returns a table with exactly 1 bucket. However we can
/// leave the data pointer dangling since that bucket is never accessed
/// due to our load factor forcing us to always have at least 1 free bucket.
#[inline]
- const fn new_in(alloc: A) -> Self {
+ const fn new() -> Self {
Self {
// Be careful to cast the entire slice to a raw pointer.
ctrl: unsafe { NonNull::new_unchecked(Group::static_empty() as *const _ as *mut u8) },
bucket_mask: 0,
items: 0,
growth_left: 0,
- alloc,
}
}
}
-impl<A: Allocator + Clone> RawTableInner<A> {
+impl RawTableInner {
/// Allocates a new [`RawTableInner`] with the given number of buckets.
/// The control bytes and buckets are left uninitialized.
///
@@ -1561,12 +1734,15 @@ impl<A: Allocator + Clone> RawTableInner<A> {
///
/// [`Allocator`]: https://doc.rust-lang.org/alloc/alloc/trait.Allocator.html
#[cfg_attr(feature = "inline-more", inline)]
- unsafe fn new_uninitialized(
- alloc: A,
+ unsafe fn new_uninitialized<A>(
+ alloc: &A,
table_layout: TableLayout,
buckets: usize,
fallibility: Fallibility,
- ) -> Result<Self, TryReserveError> {
+ ) -> Result<Self, TryReserveError>
+ where
+ A: Allocator,
+ {
debug_assert!(buckets.is_power_of_two());
// Avoid `Option::ok_or_else` because it bloats LLVM IR.
@@ -1575,7 +1751,7 @@ impl<A: Allocator + Clone> RawTableInner<A> {
None => return Err(fallibility.capacity_overflow()),
};
- let ptr: NonNull<u8> = match do_alloc(&alloc, layout) {
+ let ptr: NonNull<u8> = match do_alloc(alloc, layout) {
Ok(block) => block.cast(),
Err(_) => return Err(fallibility.alloc_err(layout)),
};
@@ -1587,7 +1763,6 @@ impl<A: Allocator + Clone> RawTableInner<A> {
bucket_mask: buckets - 1,
items: 0,
growth_left: bucket_mask_to_capacity(buckets - 1),
- alloc,
})
}
@@ -1596,14 +1771,17 @@ impl<A: Allocator + Clone> RawTableInner<A> {
///
/// All the control bytes are initialized with the [`EMPTY`] bytes.
#[inline]
- fn fallible_with_capacity(
- alloc: A,
+ fn fallible_with_capacity<A>(
+ alloc: &A,
table_layout: TableLayout,
capacity: usize,
fallibility: Fallibility,
- ) -> Result<Self, TryReserveError> {
+ ) -> Result<Self, TryReserveError>
+ where
+ A: Allocator,
+ {
if capacity == 0 {
- Ok(Self::new_in(alloc))
+ Ok(Self::NEW)
} else {
// SAFETY: We checked that we could successfully allocate the new table, and then
// initialized all control bytes with the constant `EMPTY` byte.
@@ -1622,36 +1800,95 @@ impl<A: Allocator + Clone> RawTableInner<A> {
}
}
- /// Fixes up an insertion slot due to false positives for groups smaller than the group width.
- /// This must only be used on insertion slots found by `find_insert_slot_in_group`.
+ /// Allocates a new [`RawTableInner`] with at least enough capacity for inserting
+ /// the given number of elements without reallocating.
+ ///
+ /// Panics if the new capacity exceeds [`isize::MAX`] bytes and [`abort`] the program
+ /// in case of allocation error. Use [`fallible_with_capacity`] instead if you want to
+ /// handle memory allocation failure.
+ ///
+ /// All the control bytes are initialized with the [`EMPTY`] bytes.
+ ///
+ /// [`fallible_with_capacity`]: RawTableInner::fallible_with_capacity
+ /// [`abort`]: https://doc.rust-lang.org/alloc/alloc/fn.handle_alloc_error.html
+ fn with_capacity<A>(alloc: &A, table_layout: TableLayout, capacity: usize) -> Self
+ where
+ A: Allocator,
+ {
+ // Avoid `Result::unwrap_or_else` because it bloats LLVM IR.
+ match Self::fallible_with_capacity(alloc, table_layout, capacity, Fallibility::Infallible) {
+ Ok(table_inner) => table_inner,
+ // SAFETY: All allocation errors will be caught inside `RawTableInner::new_uninitialized`.
+ Err(_) => unsafe { hint::unreachable_unchecked() },
+ }
+ }
+
+ /// Fixes up an insertion slot returned by the [`RawTableInner::find_insert_slot_in_group`] method.
+ ///
+ /// In tables smaller than the group width (`self.buckets() < Group::WIDTH`), trailing control
+ /// bytes outside the range of the table are filled with [`EMPTY`] entries. These will unfortunately
+ /// trigger a match of [`RawTableInner::find_insert_slot_in_group`] function. This is because
+ /// the `Some(bit)` returned by `group.match_empty_or_deleted().lowest_set_bit()` after masking
+ /// (`(probe_seq.pos + bit) & self.bucket_mask`) may point to a full bucket that is already occupied.
+ /// We detect this situation here and perform a second scan starting at the beginning of the table.
+ /// This second scan is guaranteed to find an empty slot (due to the load factor) before hitting the
+ /// trailing control bytes (containing [`EMPTY`] bytes).
+ ///
+ /// If this function is called correctly, it is guaranteed to return [`InsertSlot`] with an
+ /// index of an empty or deleted bucket in the range `0..self.buckets()` (see `Warning` and
+ /// `Safety`).
+ ///
+ /// # Warning
+ ///
+ /// The table must have at least 1 empty or deleted `bucket`, otherwise if the table is less than
+ /// the group width (`self.buckets() < Group::WIDTH`) this function returns an index outside of the
+ /// table indices range `0..self.buckets()` (`0..=self.bucket_mask`). Attempt to write data at that
+ /// index will cause immediate [`undefined behavior`].
+ ///
+ /// # Safety
+ ///
+ /// The safety rules are directly derived from the safety rules for [`RawTableInner::ctrl`] method.
+ /// Thus, in order to uphold those safety contracts, as well as for the correct logic of the work
+ /// of this crate, the following rules are necessary and sufficient:
+ ///
+ /// * The [`RawTableInner`] must have properly initialized control bytes otherwise calling this
+ /// function results in [`undefined behavior`].
+ ///
+ /// * This function must only be used on insertion slots found by [`RawTableInner::find_insert_slot_in_group`]
+ /// (after the `find_insert_slot_in_group` function, but before insertion into the table).
+ ///
+ /// * The `index` must not be greater than the `self.bucket_mask`, i.e. `(index + 1) <= self.buckets()`
+ /// (this one is provided by the [`RawTableInner::find_insert_slot_in_group`] function).
+ ///
+ /// Calling this function with an index not provided by [`RawTableInner::find_insert_slot_in_group`]
+ /// may result in [`undefined behavior`] even if the index satisfies the safety rules of the
+ /// [`RawTableInner::ctrl`] function (`index < self.bucket_mask + 1 + Group::WIDTH`).
+ ///
+ /// [`RawTableInner::ctrl`]: RawTableInner::ctrl
+ /// [`RawTableInner::find_insert_slot_in_group`]: RawTableInner::find_insert_slot_in_group
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
#[inline]
unsafe fn fix_insert_slot(&self, mut index: usize) -> InsertSlot {
- // In tables smaller than the group width
- // (self.buckets() < Group::WIDTH), trailing control
- // bytes outside the range of the table are filled with
- // EMPTY entries. These will unfortunately trigger a
- // match, but once masked may point to a full bucket that
- // is already occupied. We detect this situation here and
- // perform a second scan starting at the beginning of the
- // table. This second scan is guaranteed to find an empty
- // slot (due to the load factor) before hitting the trailing
- // control bytes (containing EMPTY).
+ // SAFETY: The caller of this function ensures that `index` is in the range `0..=self.bucket_mask`.
if unlikely(self.is_bucket_full(index)) {
debug_assert!(self.bucket_mask < Group::WIDTH);
// SAFETY:
//
- // * We are in range and `ptr = self.ctrl(0)` are valid for reads
- // and properly aligned, because the table is already allocated
- // (see `TableLayout::calculate_layout_for` and `ptr::read`);
+ // * Since the caller of this function ensures that the control bytes are properly
+ // initialized and `ptr = self.ctrl(0)` points to the start of the array of control
+ // bytes, therefore: `ctrl` is valid for reads, properly aligned to `Group::WIDTH`
+ // and points to the properly initialized control bytes (see also
+ // `TableLayout::calculate_layout_for` and `ptr::read`);
//
- // * For tables larger than the group width (self.buckets() >= Group::WIDTH),
- // we will never end up in the given branch, since
- // `(probe_seq.pos + bit) & self.bucket_mask` in `find_insert_slot_in_group` cannot
- // return a full bucket index. For tables smaller than the group width, calling the
- // `unwrap_unchecked` function is also
- // safe, as the trailing control bytes outside the range of the table are filled
- // with EMPTY bytes, so this second scan either finds an empty slot (due to the
- // load factor) or hits the trailing control bytes (containing EMPTY).
+ // * Because the caller of this function ensures that the index was provided by the
+ // `self.find_insert_slot_in_group()` function, so for for tables larger than the
+ // group width (self.buckets() >= Group::WIDTH), we will never end up in the given
+ // branch, since `(probe_seq.pos + bit) & self.bucket_mask` in `find_insert_slot_in_group`
+ // cannot return a full bucket index. For tables smaller than the group width, calling
+ // the `unwrap_unchecked` function is also safe, as the trailing control bytes outside
+ // the range of the table are filled with EMPTY bytes (and we know for sure that there
+ // is at least one FULL bucket), so this second scan either finds an empty slot (due to
+ // the load factor) or hits the trailing control bytes (containing EMPTY).
index = Group::load_aligned(self.ctrl(0))
.match_empty_or_deleted()
.lowest_set_bit()
@@ -1661,25 +1898,62 @@ impl<A: Allocator + Clone> RawTableInner<A> {
}
/// Finds the position to insert something in a group.
- /// This may have false positives and must be fixed up with `fix_insert_slot` before it's used.
+ ///
+ /// **This may have false positives and must be fixed up with `fix_insert_slot`
+ /// before it's used.**
+ ///
+ /// The function is guaranteed to return the index of an empty or deleted [`Bucket`]
+ /// in the range `0..self.buckets()` (`0..=self.bucket_mask`).
#[inline]
fn find_insert_slot_in_group(&self, group: &Group, probe_seq: &ProbeSeq) -> Option<usize> {
let bit = group.match_empty_or_deleted().lowest_set_bit();
if likely(bit.is_some()) {
+ // This is the same as `(probe_seq.pos + bit) % self.buckets()` because the number
+ // of buckets is a power of two, and `self.bucket_mask = self.buckets() - 1`.
Some((probe_seq.pos + bit.unwrap()) & self.bucket_mask)
} else {
None
}
}
- /// Searches for an element in the table, or a potential slot where that element could be
- /// inserted.
+ /// Searches for an element in the table, or a potential slot where that element could
+ /// be inserted (an empty or deleted [`Bucket`] index).
///
/// This uses dynamic dispatch to reduce the amount of code generated, but that is
/// eliminated by LLVM optimizations.
+ ///
+ /// This function does not make any changes to the `data` part of the table, or any
+ /// changes to the `items` or `growth_left` field of the table.
+ ///
+ /// The table must have at least 1 empty or deleted `bucket`, otherwise, if the
+ /// `eq: &mut dyn FnMut(usize) -> bool` function does not return `true`, this function
+ /// will never return (will go into an infinite loop) for tables larger than the group
+ /// width, or return an index outside of the table indices range if the table is less
+ /// than the group width.
+ ///
+ /// This function is guaranteed to provide the `eq: &mut dyn FnMut(usize) -> bool`
+ /// function with only `FULL` buckets' indices and return the `index` of the found
+ /// element (as `Ok(index)`). If the element is not found and there is at least 1
+ /// empty or deleted [`Bucket`] in the table, the function is guaranteed to return
+ /// [InsertSlot] with an index in the range `0..self.buckets()`, but in any case,
+ /// if this function returns [`InsertSlot`], it will contain an index in the range
+ /// `0..=self.buckets()`.
+ ///
+ /// # Safety
+ ///
+ /// The [`RawTableInner`] must have properly initialized control bytes otherwise calling
+ /// this function results in [`undefined behavior`].
+ ///
+ /// Attempt to write data at the [`InsertSlot`] returned by this function when the table is
+ /// less than the group width and if there was not at least one empty or deleted bucket in
+ /// the table will cause immediate [`undefined behavior`]. This is because in this case the
+ /// function will return `self.bucket_mask + 1` as an index due to the trailing [`EMPTY]
+ /// control bytes outside the table range.
+ ///
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
#[inline]
- fn find_or_find_insert_slot_inner(
+ unsafe fn find_or_find_insert_slot_inner(
&self,
hash: u64,
eq: &mut dyn FnMut(usize) -> bool,
@@ -1690,6 +1964,21 @@ impl<A: Allocator + Clone> RawTableInner<A> {
let mut probe_seq = self.probe_seq(hash);
loop {
+ // SAFETY:
+ // * Caller of this function ensures that the control bytes are properly initialized.
+ //
+ // * `ProbeSeq.pos` cannot be greater than `self.bucket_mask = self.buckets() - 1`
+ // of the table due to masking with `self.bucket_mask` and also because mumber of
+ // buckets is a power of two (see `self.probe_seq` function).
+ //
+ // * Even if `ProbeSeq.pos` returns `position == self.bucket_mask`, it is safe to
+ // call `Group::load` due to the extended control bytes range, which is
+ // `self.bucket_mask + 1 + Group::WIDTH` (in fact, this means that the last control
+ // byte will never be read for the allocated table);
+ //
+ // * Also, even if `RawTableInner` is not already allocated, `ProbeSeq.pos` will
+ // always return "0" (zero), so Group::load will read unaligned `Group::static_empty()`
+ // bytes, which is safe (see RawTableInner::new).
let group = unsafe { Group::load(self.ctrl(probe_seq.pos)) };
for bit in group.match_byte(h2_hash) {
@@ -1713,6 +2002,10 @@ impl<A: Allocator + Clone> RawTableInner<A> {
// least one. For tables smaller than the group width, there will still be an
// empty element in the current (and only) group due to the load factor.
unsafe {
+ // SAFETY:
+ // * Caller of this function ensures that the control bytes are properly initialized.
+ //
+ // * We use this function with the slot / index found by `self.find_insert_slot_in_group`
return Err(self.fix_insert_slot(insert_slot.unwrap_unchecked()));
}
}
@@ -1721,13 +2014,68 @@ impl<A: Allocator + Clone> RawTableInner<A> {
}
}
- /// Searches for an empty or deleted bucket which is suitable for inserting
- /// a new element and sets the hash for that slot.
+ /// Searches for an empty or deleted bucket which is suitable for inserting a new
+ /// element and sets the hash for that slot. Returns an index of that slot and the
+ /// old control byte stored in the found index.
+ ///
+ /// This function does not check if the given element exists in the table. Also,
+ /// this function does not check if there is enough space in the table to insert
+ /// a new element. Caller of the funtion must make ensure that the table has at
+ /// least 1 empty or deleted `bucket`, otherwise this function will never return
+ /// (will go into an infinite loop) for tables larger than the group width, or
+ /// return an index outside of the table indices range if the table is less than
+ /// the group width.
///
- /// There must be at least 1 empty bucket in the table.
+ /// If there is at least 1 empty or deleted `bucket` in the table, the function is
+ /// guaranteed to return an `index` in the range `0..self.buckets()`, but in any case,
+ /// if this function returns an `index` it will be in the range `0..=self.buckets()`.
+ ///
+ /// This function does not make any changes to the `data` parts of the table,
+ /// or any changes to the the `items` or `growth_left` field of the table.
+ ///
+ /// # Safety
+ ///
+ /// The safety rules are directly derived from the safety rules for the
+ /// [`RawTableInner::set_ctrl_h2`] and [`RawTableInner::find_insert_slot`] methods.
+ /// Thus, in order to uphold the safety contracts for that methods, as well as for
+ /// the correct logic of the work of this crate, you must observe the following rules
+ /// when calling this function:
+ ///
+ /// * The [`RawTableInner`] has already been allocated and has properly initialized
+ /// control bytes otherwise calling this function results in [`undefined behavior`].
+ ///
+ /// * The caller of this function must ensure that the "data" parts of the table
+ /// will have an entry in the returned index (matching the given hash) right
+ /// after calling this function.
+ ///
+ /// Attempt to write data at the `index` returned by this function when the table is
+ /// less than the group width and if there was not at least one empty or deleted bucket in
+ /// the table will cause immediate [`undefined behavior`]. This is because in this case the
+ /// function will return `self.bucket_mask + 1` as an index due to the trailing [`EMPTY]
+ /// control bytes outside the table range.
+ ///
+ /// The caller must independently increase the `items` field of the table, and also,
+ /// if the old control byte was [`EMPTY`], then decrease the table's `growth_left`
+ /// field, and do not change it if the old control byte was [`DELETED`].
+ ///
+ /// See also [`Bucket::as_ptr`] method, for more information about of properly removing
+ /// or saving `element` from / into the [`RawTable`] / [`RawTableInner`].
+ ///
+ /// [`Bucket::as_ptr`]: Bucket::as_ptr
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
+ /// [`RawTableInner::ctrl`]: RawTableInner::ctrl
+ /// [`RawTableInner::set_ctrl_h2`]: RawTableInner::set_ctrl_h2
+ /// [`RawTableInner::find_insert_slot`]: RawTableInner::find_insert_slot
#[inline]
- unsafe fn prepare_insert_slot(&self, hash: u64) -> (usize, u8) {
- let index = self.find_insert_slot(hash).index;
+ unsafe fn prepare_insert_slot(&mut self, hash: u64) -> (usize, u8) {
+ // SAFETY: Caller of this function ensures that the control bytes are properly initialized.
+ let index: usize = self.find_insert_slot(hash).index;
+ // SAFETY:
+ // 1. The `find_insert_slot` function either returns an `index` less than or
+ // equal to `self.buckets() = self.bucket_mask + 1` of the table, or never
+ // returns if it cannot find an empty or deleted slot.
+ // 2. The caller of this function guarantees that the table has already been
+ // allocated
let old_ctrl = *self.ctrl(index);
self.set_ctrl_h2(index, hash);
(index, old_ctrl)
@@ -1744,24 +2092,33 @@ impl<A: Allocator + Clone> RawTableInner<A> {
/// width, or return an index outside of the table indices range if the table is less
/// than the group width.
///
- /// # Note
+ /// If there is at least 1 empty or deleted `bucket` in the table, the function is
+ /// guaranteed to return [`InsertSlot`] with an index in the range `0..self.buckets()`,
+ /// but in any case, if this function returns [`InsertSlot`], it will contain an index
+ /// in the range `0..=self.buckets()`.
///
- /// Calling this function is always safe, but attempting to write data at
- /// the index returned by this function when the table is less than the group width
- /// and if there was not at least one empty bucket in the table will cause immediate
- /// [`undefined behavior`]. This is because in this case the function will return
- /// `self.bucket_mask + 1` as an index due to the trailing EMPTY control bytes outside
- /// the table range.
+ /// # Safety
+ ///
+ /// The [`RawTableInner`] must have properly initialized control bytes otherwise calling
+ /// this function results in [`undefined behavior`].
+ ///
+ /// Attempt to write data at the [`InsertSlot`] returned by this function when the table is
+ /// less than the group width and if there was not at least one empty or deleted bucket in
+ /// the table will cause immediate [`undefined behavior`]. This is because in this case the
+ /// function will return `self.bucket_mask + 1` as an index due to the trailing [`EMPTY]
+ /// control bytes outside the table range.
///
/// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
#[inline]
- fn find_insert_slot(&self, hash: u64) -> InsertSlot {
+ unsafe fn find_insert_slot(&self, hash: u64) -> InsertSlot {
let mut probe_seq = self.probe_seq(hash);
loop {
// SAFETY:
+ // * Caller of this function ensures that the control bytes are properly initialized.
+ //
// * `ProbeSeq.pos` cannot be greater than `self.bucket_mask = self.buckets() - 1`
// of the table due to masking with `self.bucket_mask` and also because mumber of
- // buckets is a power of two (see comment for masking below).
+ // buckets is a power of two (see `self.probe_seq` function).
//
// * Even if `ProbeSeq.pos` returns `position == self.bucket_mask`, it is safe to
// call `Group::load` due to the extended control bytes range, which is
@@ -1770,12 +2127,16 @@ impl<A: Allocator + Clone> RawTableInner<A> {
//
// * Also, even if `RawTableInner` is not already allocated, `ProbeSeq.pos` will
// always return "0" (zero), so Group::load will read unaligned `Group::static_empty()`
- // bytes, which is safe (see RawTableInner::new_in).
- unsafe {
- let group = Group::load(self.ctrl(probe_seq.pos));
- let index = self.find_insert_slot_in_group(&group, &probe_seq);
+ // bytes, which is safe (see RawTableInner::new).
+ let group = unsafe { Group::load(self.ctrl(probe_seq.pos)) };
- if likely(index.is_some()) {
+ let index = self.find_insert_slot_in_group(&group, &probe_seq);
+ if likely(index.is_some()) {
+ // SAFETY:
+ // * Caller of this function ensures that the control bytes are properly initialized.
+ //
+ // * We use this function with the slot / index found by `self.find_insert_slot_in_group`
+ unsafe {
return self.fix_insert_slot(index.unwrap_unchecked());
}
}
@@ -1793,13 +2154,27 @@ impl<A: Allocator + Clone> RawTableInner<A> {
/// The table must have at least 1 empty `bucket`, otherwise, if the
/// `eq: &mut dyn FnMut(usize) -> bool` function does not return `true`,
/// this function will also never return (will go into an infinite loop).
+ ///
+ /// This function is guaranteed to provide the `eq: &mut dyn FnMut(usize) -> bool`
+ /// function with only `FULL` buckets' indices and return the `index` of the found
+ /// element as `Some(index)`, so the index will always be in the range
+ /// `0..self.buckets()`.
+ ///
+ /// # Safety
+ ///
+ /// The [`RawTableInner`] must have properly initialized control bytes otherwise calling
+ /// this function results in [`undefined behavior`].
+ ///
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
#[inline(always)]
- fn find_inner(&self, hash: u64, eq: &mut dyn FnMut(usize) -> bool) -> Option<usize> {
+ unsafe fn find_inner(&self, hash: u64, eq: &mut dyn FnMut(usize) -> bool) -> Option<usize> {
let h2_hash = h2(hash);
let mut probe_seq = self.probe_seq(hash);
loop {
// SAFETY:
+ // * Caller of this function ensures that the control bytes are properly initialized.
+ //
// * `ProbeSeq.pos` cannot be greater than `self.bucket_mask = self.buckets() - 1`
// of the table due to masking with `self.bucket_mask`.
//
@@ -1853,6 +2228,9 @@ impl<A: Allocator + Clone> RawTableInner<A> {
/// to do during the first insert due to tombstones). If the caller does not do
/// this, then calling this function may result in a memory leak.
///
+ /// * The [`RawTableInner`] must have properly initialized control bytes otherwise
+ /// calling this function results in [`undefined behavior`].
+ ///
/// Calling this function on a table that has not been allocated results in
/// [`undefined behavior`].
///
@@ -1900,6 +2278,227 @@ impl<A: Allocator + Clone> RawTableInner<A> {
}
}
+ /// Returns an iterator over every element in the table.
+ ///
+ /// # Safety
+ ///
+ /// If any of the following conditions are violated, the result
+ /// is [`undefined behavior`]:
+ ///
+ /// * The caller has to ensure that the `RawTableInner` outlives the
+ /// `RawIter`. Because we cannot make the `next` method unsafe on
+ /// the `RawIter` struct, we have to make the `iter` method unsafe.
+ ///
+ /// * The [`RawTableInner`] must have properly initialized control bytes.
+ ///
+ /// The type `T` must be the actual type of the elements stored in the table,
+ /// otherwise using the returned [`RawIter`] results in [`undefined behavior`].
+ ///
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
+ #[inline]
+ unsafe fn iter<T>(&self) -> RawIter<T> {
+ // SAFETY:
+ // 1. Since the caller of this function ensures that the control bytes
+ // are properly initialized and `self.data_end()` points to the start
+ // of the array of control bytes, therefore: `ctrl` is valid for reads,
+ // properly aligned to `Group::WIDTH` and points to the properly initialized
+ // control bytes.
+ // 2. `data` bucket index in the table is equal to the `ctrl` index (i.e.
+ // equal to zero).
+ // 3. We pass the exact value of buckets of the table to the function.
+ //
+ // `ctrl` points here (to the start
+ // of the first control byte `CT0`)
+ // ∨
+ // [Pad], T_n, ..., T1, T0, |CT0, CT1, ..., CT_n|, CTa_0, CTa_1, ..., CTa_m
+ // \________ ________/
+ // \/
+ // `n = buckets - 1`, i.e. `RawTableInner::buckets() - 1`
+ //
+ // where: T0...T_n - our stored data;
+ // CT0...CT_n - control bytes or metadata for `data`.
+ // CTa_0...CTa_m - additional control bytes, where `m = Group::WIDTH - 1` (so that the search
+ // with loading `Group` bytes from the heap works properly, even if the result
+ // of `h1(hash) & self.bucket_mask` is equal to `self.bucket_mask`). See also
+ // `RawTableInner::set_ctrl` function.
+ //
+ // P.S. `h1(hash) & self.bucket_mask` is the same as `hash as usize % self.buckets()` because the number
+ // of buckets is a power of two, and `self.bucket_mask = self.buckets() - 1`.
+ let data = Bucket::from_base_index(self.data_end(), 0);
+ RawIter {
+ // SAFETY: See explanation above
+ iter: RawIterRange::new(self.ctrl.as_ptr(), data, self.buckets()),
+ items: self.items,
+ }
+ }
+
+ /// Executes the destructors (if any) of the values stored in the table.
+ ///
+ /// # Note
+ ///
+ /// This function does not erase the control bytes of the table and does
+ /// not make any changes to the `items` or `growth_left` fields of the
+ /// table. If necessary, the caller of this function must manually set
+ /// up these table fields, for example using the [`clear_no_drop`] function.
+ ///
+ /// Be careful during calling this function, because drop function of
+ /// the elements can panic, and this can leave table in an inconsistent
+ /// state.
+ ///
+ /// # Safety
+ ///
+ /// The type `T` must be the actual type of the elements stored in the table,
+ /// otherwise calling this function may result in [`undefined behavior`].
+ ///
+ /// If `T` is a type that should be dropped and **the table is not empty**,
+ /// calling this function more than once results in [`undefined behavior`].
+ ///
+ /// If `T` is not [`Copy`], attempting to use values stored in the table after
+ /// calling this function may result in [`undefined behavior`].
+ ///
+ /// It is safe to call this function on a table that has not been allocated,
+ /// on a table with uninitialized control bytes, and on a table with no actual
+ /// data but with `Full` control bytes if `self.items == 0`.
+ ///
+ /// See also [`Bucket::drop`] / [`Bucket::as_ptr`] methods, for more information
+ /// about of properly removing or saving `element` from / into the [`RawTable`] /
+ /// [`RawTableInner`].
+ ///
+ /// [`Bucket::drop`]: Bucket::drop
+ /// [`Bucket::as_ptr`]: Bucket::as_ptr
+ /// [`clear_no_drop`]: RawTableInner::clear_no_drop
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
+ unsafe fn drop_elements<T>(&mut self) {
+ // Check that `self.items != 0`. Protects against the possibility
+ // of creating an iterator on an table with uninitialized control bytes.
+ if T::NEEDS_DROP && self.items != 0 {
+ // SAFETY: We know for sure that RawTableInner will outlive the
+ // returned `RawIter` iterator, and the caller of this function
+ // must uphold the safety contract for `drop_elements` method.
+ for item in self.iter::<T>() {
+ // SAFETY: The caller must uphold the safety contract for
+ // `drop_elements` method.
+ item.drop();
+ }
+ }
+ }
+
+ /// Executes the destructors (if any) of the values stored in the table and than
+ /// deallocates the table.
+ ///
+ /// # Note
+ ///
+ /// Calling this function automatically makes invalid (dangling) all instances of
+ /// buckets ([`Bucket`]) and makes invalid (dangling) the `ctrl` field of the table.
+ ///
+ /// This function does not make any changes to the `bucket_mask`, `items` or `growth_left`
+ /// fields of the table. If necessary, the caller of this function must manually set
+ /// up these table fields.
+ ///
+ /// # Safety
+ ///
+ /// If any of the following conditions are violated, the result is [`undefined behavior`]:
+ ///
+ /// * Calling this function more than once;
+ ///
+ /// * The type `T` must be the actual type of the elements stored in the table.
+ ///
+ /// * The `alloc` must be the same [`Allocator`] as the `Allocator` that was used
+ /// to allocate this table.
+ ///
+ /// * The `table_layout` must be the same [`TableLayout`] as the `TableLayout` that
+ /// was used to allocate this table.
+ ///
+ /// The caller of this function should pay attention to the possibility of the
+ /// elements' drop function panicking, because this:
+ ///
+ /// * May leave the table in an inconsistent state;
+ ///
+ /// * Memory is never deallocated, so a memory leak may occur.
+ ///
+ /// Attempt to use the `ctrl` field of the table (dereference) after calling this
+ /// function results in [`undefined behavior`].
+ ///
+ /// It is safe to call this function on a table that has not been allocated,
+ /// on a table with uninitialized control bytes, and on a table with no actual
+ /// data but with `Full` control bytes if `self.items == 0`.
+ ///
+ /// See also [`RawTableInner::drop_elements`] or [`RawTableInner::free_buckets`]
+ /// for more information.
+ ///
+ /// [`RawTableInner::drop_elements`]: RawTableInner::drop_elements
+ /// [`RawTableInner::free_buckets`]: RawTableInner::free_buckets
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
+ unsafe fn drop_inner_table<T, A: Allocator>(&mut self, alloc: &A, table_layout: TableLayout) {
+ if !self.is_empty_singleton() {
+ unsafe {
+ // SAFETY: The caller must uphold the safety contract for `drop_inner_table` method.
+ self.drop_elements::<T>();
+ // SAFETY:
+ // 1. We have checked that our table is allocated.
+ // 2. The caller must uphold the safety contract for `drop_inner_table` method.
+ self.free_buckets(alloc, table_layout);
+ }
+ }
+ }
+
+ /// Returns a pointer to an element in the table (convenience for
+ /// `Bucket::from_base_index(self.data_end::<T>(), index)`).
+ ///
+ /// The caller must ensure that the `RawTableInner` outlives the returned [`Bucket<T>`],
+ /// otherwise using it may result in [`undefined behavior`].
+ ///
+ /// # Safety
+ ///
+ /// If `mem::size_of::<T>() != 0`, then the safety rules are directly derived from the
+ /// safety rules of the [`Bucket::from_base_index`] function. Therefore, when calling
+ /// this function, the following safety rules must be observed:
+ ///
+ /// * The table must already be allocated;
+ ///
+ /// * The `index` must not be greater than the number returned by the [`RawTableInner::buckets`]
+ /// function, i.e. `(index + 1) <= self.buckets()`.
+ ///
+ /// * The type `T` must be the actual type of the elements stored in the table, otherwise
+ /// using the returned [`Bucket`] may result in [`undefined behavior`].
+ ///
+ /// It is safe to call this function with index of zero (`index == 0`) on a table that has
+ /// not been allocated, but using the returned [`Bucket`] results in [`undefined behavior`].
+ ///
+ /// If `mem::size_of::<T>() == 0`, then the only requirement is that the `index` must
+ /// not be greater than the number returned by the [`RawTable::buckets`] function, i.e.
+ /// `(index + 1) <= self.buckets()`.
+ ///
+ /// ```none
+ /// If mem::size_of::<T>() != 0 then return a pointer to the `element` in the `data part` of the table
+ /// (we start counting from "0", so that in the expression T[n], the "n" index actually one less than
+ /// the "buckets" number of our `RawTableInner`, i.e. "n = RawTableInner::buckets() - 1"):
+ ///
+ /// `table.bucket(3).as_ptr()` returns a pointer that points here in the `data`
+ /// part of the `RawTableInner`, i.e. to the start of T3 (see [`Bucket::as_ptr`])
+ /// |
+ /// | `base = table.data_end::<T>()` points here
+ /// | (to the start of CT0 or to the end of T0)
+ /// v v
+ /// [Pad], T_n, ..., |T3|, T2, T1, T0, |CT0, CT1, CT2, CT3, ..., CT_n, CTa_0, CTa_1, ..., CTa_m
+ /// ^ \__________ __________/
+ /// `table.bucket(3)` returns a pointer that points \/
+ /// here in the `data` part of the `RawTableInner` additional control bytes
+ /// (to the end of T3) `m = Group::WIDTH - 1`
+ ///
+ /// where: T0...T_n - our stored data;
+ /// CT0...CT_n - control bytes or metadata for `data`;
+ /// CTa_0...CTa_m - additional control bytes (so that the search with loading `Group` bytes from
+ /// the heap works properly, even if the result of `h1(hash) & self.bucket_mask`
+ /// is equal to `self.bucket_mask`). See also `RawTableInner::set_ctrl` function.
+ ///
+ /// P.S. `h1(hash) & self.bucket_mask` is the same as `hash as usize % self.buckets()` because the number
+ /// of buckets is a power of two, and `self.bucket_mask = self.buckets() - 1`.
+ /// ```
+ ///
+ /// [`Bucket::from_base_index`]: Bucket::from_base_index
+ /// [`RawTableInner::buckets`]: RawTableInner::buckets
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
#[inline]
unsafe fn bucket<T>(&self, index: usize) -> Bucket<T> {
debug_assert_ne!(self.bucket_mask, 0);
@@ -1907,6 +2506,52 @@ impl<A: Allocator + Clone> RawTableInner<A> {
Bucket::from_base_index(self.data_end(), index)
}
+ /// Returns a raw `*mut u8` pointer to the start of the `data` element in the table
+ /// (convenience for `self.data_end::<u8>().as_ptr().sub((index + 1) * size_of)`).
+ ///
+ /// The caller must ensure that the `RawTableInner` outlives the returned `*mut u8`,
+ /// otherwise using it may result in [`undefined behavior`].
+ ///
+ /// # Safety
+ ///
+ /// If any of the following conditions are violated, the result is [`undefined behavior`]:
+ ///
+ /// * The table must already be allocated;
+ ///
+ /// * The `index` must not be greater than the number returned by the [`RawTableInner::buckets`]
+ /// function, i.e. `(index + 1) <= self.buckets()`;
+ ///
+ /// * The `size_of` must be equal to the size of the elements stored in the table;
+ ///
+ /// ```none
+ /// If mem::size_of::<T>() != 0 then return a pointer to the `element` in the `data part` of the table
+ /// (we start counting from "0", so that in the expression T[n], the "n" index actually one less than
+ /// the "buckets" number of our `RawTableInner`, i.e. "n = RawTableInner::buckets() - 1"):
+ ///
+ /// `table.bucket_ptr(3, mem::size_of::<T>())` returns a pointer that points here in the
+ /// `data` part of the `RawTableInner`, i.e. to the start of T3
+ /// |
+ /// | `base = table.data_end::<u8>()` points here
+ /// | (to the start of CT0 or to the end of T0)
+ /// v v
+ /// [Pad], T_n, ..., |T3|, T2, T1, T0, |CT0, CT1, CT2, CT3, ..., CT_n, CTa_0, CTa_1, ..., CTa_m
+ /// \__________ __________/
+ /// \/
+ /// additional control bytes
+ /// `m = Group::WIDTH - 1`
+ ///
+ /// where: T0...T_n - our stored data;
+ /// CT0...CT_n - control bytes or metadata for `data`;
+ /// CTa_0...CTa_m - additional control bytes (so that the search with loading `Group` bytes from
+ /// the heap works properly, even if the result of `h1(hash) & self.bucket_mask`
+ /// is equal to `self.bucket_mask`). See also `RawTableInner::set_ctrl` function.
+ ///
+ /// P.S. `h1(hash) & self.bucket_mask` is the same as `hash as usize % self.buckets()` because the number
+ /// of buckets is a power of two, and `self.bucket_mask = self.buckets() - 1`.
+ /// ```
+ ///
+ /// [`RawTableInner::buckets`]: RawTableInner::buckets
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
#[inline]
unsafe fn bucket_ptr(&self, index: usize, size_of: usize) -> *mut u8 {
debug_assert_ne!(self.bucket_mask, 0);
@@ -1915,9 +2560,47 @@ impl<A: Allocator + Clone> RawTableInner<A> {
base.sub((index + 1) * size_of)
}
+ /// Returns pointer to one past last `data` element in the the table as viewed from
+ /// the start point of the allocation (convenience for `self.ctrl.cast()`).
+ ///
+ /// This function actually returns a pointer to the end of the `data element` at
+ /// index "0" (zero).
+ ///
+ /// The caller must ensure that the `RawTableInner` outlives the returned [`NonNull<T>`],
+ /// otherwise using it may result in [`undefined behavior`].
+ ///
+ /// # Note
+ ///
+ /// The type `T` must be the actual type of the elements stored in the table, otherwise
+ /// using the returned [`NonNull<T>`] may result in [`undefined behavior`].
+ ///
+ /// ```none
+ /// `table.data_end::<T>()` returns pointer that points here
+ /// (to the end of `T0`)
+ /// ∨
+ /// [Pad], T_n, ..., T1, T0, |CT0, CT1, ..., CT_n|, CTa_0, CTa_1, ..., CTa_m
+ /// \________ ________/
+ /// \/
+ /// `n = buckets - 1`, i.e. `RawTableInner::buckets() - 1`
+ ///
+ /// where: T0...T_n - our stored data;
+ /// CT0...CT_n - control bytes or metadata for `data`.
+ /// CTa_0...CTa_m - additional control bytes, where `m = Group::WIDTH - 1` (so that the search
+ /// with loading `Group` bytes from the heap works properly, even if the result
+ /// of `h1(hash) & self.bucket_mask` is equal to `self.bucket_mask`). See also
+ /// `RawTableInner::set_ctrl` function.
+ ///
+ /// P.S. `h1(hash) & self.bucket_mask` is the same as `hash as usize % self.buckets()` because the number
+ /// of buckets is a power of two, and `self.bucket_mask = self.buckets() - 1`.
+ /// ```
+ ///
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
#[inline]
- unsafe fn data_end<T>(&self) -> NonNull<T> {
- NonNull::new_unchecked(self.ctrl.as_ptr().cast())
+ fn data_end<T>(&self) -> NonNull<T> {
+ unsafe {
+ // SAFETY: `self.ctrl` is `NonNull`, so casting it is safe
+ NonNull::new_unchecked(self.ctrl.as_ptr().cast())
+ }
}
/// Returns an iterator-like object for a probe sequence on the table.
@@ -1928,6 +2611,8 @@ impl<A: Allocator + Clone> RawTableInner<A> {
#[inline]
fn probe_seq(&self, hash: u64) -> ProbeSeq {
ProbeSeq {
+ // This is the same as `hash as usize % self.buckets()` because the number
+ // of buckets is a power of two, and `self.bucket_mask = self.buckets() - 1`.
pos: h1(hash) & self.bucket_mask,
stride: 0,
}
@@ -1991,7 +2676,7 @@ impl<A: Allocator + Clone> RawTableInner<A> {
/// [`Bucket::as_ptr`]: Bucket::as_ptr
/// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
#[inline]
- unsafe fn set_ctrl_h2(&self, index: usize, hash: u64) {
+ unsafe fn set_ctrl_h2(&mut self, index: usize, hash: u64) {
// SAFETY: The caller must uphold the safety rules for the [`RawTableInner::set_ctrl_h2`]
self.set_ctrl(index, h2(hash));
}
@@ -2025,7 +2710,7 @@ impl<A: Allocator + Clone> RawTableInner<A> {
/// [`Bucket::as_ptr`]: Bucket::as_ptr
/// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
#[inline]
- unsafe fn replace_ctrl_h2(&self, index: usize, hash: u64) -> u8 {
+ unsafe fn replace_ctrl_h2(&mut self, index: usize, hash: u64) -> u8 {
// SAFETY: The caller must uphold the safety rules for the [`RawTableInner::replace_ctrl_h2`]
let prev_ctrl = *self.ctrl(index);
self.set_ctrl_h2(index, hash);
@@ -2057,9 +2742,12 @@ impl<A: Allocator + Clone> RawTableInner<A> {
/// [`Bucket::as_ptr`]: Bucket::as_ptr
/// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
#[inline]
- unsafe fn set_ctrl(&self, index: usize, ctrl: u8) {
+ unsafe fn set_ctrl(&mut self, index: usize, ctrl: u8) {
// Replicate the first Group::WIDTH control bytes at the end of
- // the array without using a branch:
+ // the array without using a branch. If the tables smaller than
+ // the group width (self.buckets() < Group::WIDTH),
+ // `index2 = Group::WIDTH + index`, otherwise `index2` is:
+ //
// - If index >= Group::WIDTH then index == index2.
// - Otherwise index2 == self.bucket_mask + 1 + index.
//
@@ -2142,25 +2830,45 @@ impl<A: Allocator + Clone> RawTableInner<A> {
self.bucket_mask == 0
}
+ /// Attempts to allocate a new hash table with at least enough capacity
+ /// for inserting the given number of elements without reallocating,
+ /// and return it inside ScopeGuard to protect against panic in the hash
+ /// function.
+ ///
+ /// # Note
+ ///
+ /// It is recommended (but not required):
+ ///
+ /// * That the new table's `capacity` be greater than or equal to `self.items`.
+ ///
+ /// * The `alloc` is the same [`Allocator`] as the `Allocator` used
+ /// to allocate this table.
+ ///
+ /// * The `table_layout` is the same [`TableLayout`] as the `TableLayout` used
+ /// to allocate this table.
+ ///
+ /// If `table_layout` does not match the `TableLayout` that was used to allocate
+ /// this table, then using `mem::swap` with the `self` and the new table returned
+ /// by this function results in [`undefined behavior`].
+ ///
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
#[allow(clippy::mut_mut)]
#[inline]
- unsafe fn prepare_resize(
+ fn prepare_resize<'a, A>(
&self,
+ alloc: &'a A,
table_layout: TableLayout,
capacity: usize,
fallibility: Fallibility,
- ) -> Result<crate::scopeguard::ScopeGuard<Self, impl FnMut(&mut Self)>, TryReserveError> {
+ ) -> Result<crate::scopeguard::ScopeGuard<Self, impl FnMut(&mut Self) + 'a>, TryReserveError>
+ where
+ A: Allocator,
+ {
debug_assert!(self.items <= capacity);
// Allocate and initialize the new table.
- let mut new_table = RawTableInner::fallible_with_capacity(
- self.alloc.clone(),
- table_layout,
- capacity,
- fallibility,
- )?;
- new_table.growth_left -= self.items;
- new_table.items = self.items;
+ let new_table =
+ RawTableInner::fallible_with_capacity(alloc, table_layout, capacity, fallibility)?;
// The hash function may panic, in which case we simply free the new
// table without dropping any elements that may have been copied into
@@ -2170,7 +2878,11 @@ impl<A: Allocator + Clone> RawTableInner<A> {
// the comment at the bottom of this function.
Ok(guard(new_table, move |self_| {
if !self_.is_empty_singleton() {
- self_.free_buckets(table_layout);
+ // SAFETY:
+ // 1. We have checked that our table is allocated.
+ // 2. We know for sure that the `alloc` and `table_layout` matches the
+ // [`Allocator`] and [`TableLayout`] used to allocate this table.
+ unsafe { self_.free_buckets(alloc, table_layout) };
}
}))
}
@@ -2179,16 +2891,38 @@ impl<A: Allocator + Clone> RawTableInner<A> {
///
/// This uses dynamic dispatch to reduce the amount of
/// code generated, but it is eliminated by LLVM optimizations when inlined.
+ ///
+ /// # Safety
+ ///
+ /// If any of the following conditions are violated, the result is
+ /// [`undefined behavior`]:
+ ///
+ /// * The `alloc` must be the same [`Allocator`] as the `Allocator` used
+ /// to allocate this table.
+ ///
+ /// * The `layout` must be the same [`TableLayout`] as the `TableLayout`
+ /// used to allocate this table.
+ ///
+ /// * The `drop` function (`fn(*mut u8)`) must be the actual drop function of
+ /// the elements stored in the table.
+ ///
+ /// * The [`RawTableInner`] must have properly initialized control bytes.
+ ///
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
#[allow(clippy::inline_always)]
#[inline(always)]
- unsafe fn reserve_rehash_inner(
+ unsafe fn reserve_rehash_inner<A>(
&mut self,
+ alloc: &A,
additional: usize,
hasher: &dyn Fn(&mut Self, usize) -> u64,
fallibility: Fallibility,
layout: TableLayout,
drop: Option<fn(*mut u8)>,
- ) -> Result<(), TryReserveError> {
+ ) -> Result<(), TryReserveError>
+ where
+ A: Allocator,
+ {
// Avoid `Option::ok_or_else` because it bloats LLVM IR.
let new_items = match self.items.checked_add(additional) {
Some(new_items) => new_items,
@@ -2198,12 +2932,30 @@ impl<A: Allocator + Clone> RawTableInner<A> {
if new_items <= full_capacity / 2 {
// Rehash in-place without re-allocating if we have plenty of spare
// capacity that is locked up due to DELETED entries.
+
+ // SAFETY:
+ // 1. We know for sure that `[`RawTableInner`]` has already been allocated
+ // (since new_items <= full_capacity / 2);
+ // 2. The caller ensures that `drop` function is the actual drop function of
+ // the elements stored in the table.
+ // 3. The caller ensures that `layout` matches the [`TableLayout`] that was
+ // used to allocate this table.
+ // 4. The caller ensures that the control bytes of the `RawTableInner`
+ // are already initialized.
self.rehash_in_place(hasher, layout.size, drop);
Ok(())
} else {
// Otherwise, conservatively resize to at least the next size up
// to avoid churning deletes into frequent rehashes.
+ //
+ // SAFETY:
+ // 1. We know for sure that `capacity >= self.items`.
+ // 2. The caller ensures that `alloc` and `layout` matches the [`Allocator`] and
+ // [`TableLayout`] that were used to allocate this table.
+ // 3. The caller ensures that the control bytes of the `RawTableInner`
+ // are already initialized.
self.resize_inner(
+ alloc,
usize::max(new_items, full_capacity + 1),
hasher,
fallibility,
@@ -2212,48 +2964,160 @@ impl<A: Allocator + Clone> RawTableInner<A> {
}
}
+ /// Returns an iterator over full buckets indices in the table.
+ ///
+ /// # Safety
+ ///
+ /// Behavior is undefined if any of the following conditions are violated:
+ ///
+ /// * The caller has to ensure that the `RawTableInner` outlives the
+ /// `FullBucketsIndices`. Because we cannot make the `next` method
+ /// unsafe on the `FullBucketsIndices` struct, we have to make the
+ /// `full_buckets_indices` method unsafe.
+ ///
+ /// * The [`RawTableInner`] must have properly initialized control bytes.
+ #[inline(always)]
+ unsafe fn full_buckets_indices(&self) -> FullBucketsIndices {
+ // SAFETY:
+ // 1. Since the caller of this function ensures that the control bytes
+ // are properly initialized and `self.ctrl(0)` points to the start
+ // of the array of control bytes, therefore: `ctrl` is valid for reads,
+ // properly aligned to `Group::WIDTH` and points to the properly initialized
+ // control bytes.
+ // 2. The value of `items` is equal to the amount of data (values) added
+ // to the table.
+ //
+ // `ctrl` points here (to the start
+ // of the first control byte `CT0`)
+ // ∨
+ // [Pad], T_n, ..., T1, T0, |CT0, CT1, ..., CT_n|, Group::WIDTH
+ // \________ ________/
+ // \/
+ // `n = buckets - 1`, i.e. `RawTableInner::buckets() - 1`
+ //
+ // where: T0...T_n - our stored data;
+ // CT0...CT_n - control bytes or metadata for `data`.
+ let ctrl = NonNull::new_unchecked(self.ctrl(0));
+
+ FullBucketsIndices {
+ // Load the first group
+ // SAFETY: See explanation above.
+ current_group: Group::load_aligned(ctrl.as_ptr()).match_full().into_iter(),
+ group_first_index: 0,
+ ctrl,
+ items: self.items,
+ }
+ }
+
/// Allocates a new table of a different size and moves the contents of the
/// current table into it.
///
/// This uses dynamic dispatch to reduce the amount of
/// code generated, but it is eliminated by LLVM optimizations when inlined.
+ ///
+ /// # Safety
+ ///
+ /// If any of the following conditions are violated, the result is
+ /// [`undefined behavior`]:
+ ///
+ /// * The `alloc` must be the same [`Allocator`] as the `Allocator` used
+ /// to allocate this table;
+ ///
+ /// * The `layout` must be the same [`TableLayout`] as the `TableLayout`
+ /// used to allocate this table;
+ ///
+ /// * The [`RawTableInner`] must have properly initialized control bytes.
+ ///
+ /// The caller of this function must ensure that `capacity >= self.items`
+ /// otherwise:
+ ///
+ /// * If `self.items != 0`, calling of this function with `capacity == 0`
+ /// results in [`undefined behavior`].
+ ///
+ /// * If `capacity_to_buckets(capacity) < Group::WIDTH` and
+ /// `self.items > capacity_to_buckets(capacity)` calling this function
+ /// results in [`undefined behavior`].
+ ///
+ /// * If `capacity_to_buckets(capacity) >= Group::WIDTH` and
+ /// `self.items > capacity_to_buckets(capacity)` calling this function
+ /// are never return (will go into an infinite loop).
+ ///
+ /// Note: It is recommended (but not required) that the new table's `capacity`
+ /// be greater than or equal to `self.items`. In case if `capacity <= self.items`
+ /// this function can never return. See [`RawTableInner::find_insert_slot`] for
+ /// more information.
+ ///
+ /// [`RawTableInner::find_insert_slot`]: RawTableInner::find_insert_slot
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
#[allow(clippy::inline_always)]
#[inline(always)]
- unsafe fn resize_inner(
+ unsafe fn resize_inner<A>(
&mut self,
+ alloc: &A,
capacity: usize,
hasher: &dyn Fn(&mut Self, usize) -> u64,
fallibility: Fallibility,
layout: TableLayout,
- ) -> Result<(), TryReserveError> {
- let mut new_table = self.prepare_resize(layout, capacity, fallibility)?;
-
- // Copy all elements to the new table.
- for i in 0..self.buckets() {
- if !self.is_bucket_full(i) {
- continue;
- }
-
+ ) -> Result<(), TryReserveError>
+ where
+ A: Allocator,
+ {
+ // SAFETY: We know for sure that `alloc` and `layout` matches the [`Allocator`] and [`TableLayout`]
+ // that were used to allocate this table.
+ let mut new_table = self.prepare_resize(alloc, layout, capacity, fallibility)?;
+
+ // SAFETY: We know for sure that RawTableInner will outlive the
+ // returned `FullBucketsIndices` iterator, and the caller of this
+ // function ensures that the control bytes are properly initialized.
+ for full_byte_index in self.full_buckets_indices() {
// This may panic.
- let hash = hasher(self, i);
+ let hash = hasher(self, full_byte_index);
+ // SAFETY:
// We can use a simpler version of insert() here since:
- // - there are no DELETED entries.
- // - we know there is enough space in the table.
- // - all elements are unique.
- let (index, _) = new_table.prepare_insert_slot(hash);
+ // 1. There are no DELETED entries.
+ // 2. We know there is enough space in the table.
+ // 3. All elements are unique.
+ // 4. The caller of this function guarantees that `capacity > 0`
+ // so `new_table` must already have some allocated memory.
+ // 5. We set `growth_left` and `items` fields of the new table
+ // after the loop.
+ // 6. We insert into the table, at the returned index, the data
+ // matching the given hash immediately after calling this function.
+ let (new_index, _) = new_table.prepare_insert_slot(hash);
+ // SAFETY:
+ //
+ // * `src` is valid for reads of `layout.size` bytes, since the
+ // table is alive and the `full_byte_index` is guaranteed to be
+ // within bounds (see `FullBucketsIndices::next_impl`);
+ //
+ // * `dst` is valid for writes of `layout.size` bytes, since the
+ // caller ensures that `table_layout` matches the [`TableLayout`]
+ // that was used to allocate old table and we have the `new_index`
+ // returned by `prepare_insert_slot`.
+ //
+ // * Both `src` and `dst` are properly aligned.
+ //
+ // * Both `src` and `dst` point to different region of memory.
ptr::copy_nonoverlapping(
- self.bucket_ptr(i, layout.size),
- new_table.bucket_ptr(index, layout.size),
+ self.bucket_ptr(full_byte_index, layout.size),
+ new_table.bucket_ptr(new_index, layout.size),
layout.size,
);
}
+ // The hash function didn't panic, so we can safely set the
+ // `growth_left` and `items` fields of the new table.
+ new_table.growth_left -= self.items;
+ new_table.items = self.items;
+
// We successfully copied all elements without panicking. Now replace
// self with the new table. The old table will have its memory freed but
// the items will not be dropped (since they have been moved into the
// new table).
+ // SAFETY: The caller ensures that `table_layout` matches the [`TableLayout`]
+ // that was used to allocate this table.
mem::swap(self, &mut new_table);
Ok(())
@@ -2266,6 +3130,21 @@ impl<A: Allocator + Clone> RawTableInner<A> {
///
/// This uses dynamic dispatch to reduce the amount of
/// code generated, but it is eliminated by LLVM optimizations when inlined.
+ ///
+ /// # Safety
+ ///
+ /// If any of the following conditions are violated, the result is [`undefined behavior`]:
+ ///
+ /// * The `size_of` must be equal to the size of the elements stored in the table;
+ ///
+ /// * The `drop` function (`fn(*mut u8)`) must be the actual drop function of
+ /// the elements stored in the table.
+ ///
+ /// * The [`RawTableInner`] has already been allocated;
+ ///
+ /// * The [`RawTableInner`] must have properly initialized control bytes.
+ ///
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
#[allow(clippy::inline_always)]
#[cfg_attr(feature = "inline-more", inline(always))]
#[cfg_attr(not(feature = "inline-more"), inline)]
@@ -2309,6 +3188,9 @@ impl<A: Allocator + Clone> RawTableInner<A> {
let hash = hasher(*guard, i);
// Search for a suitable place to put it
+ //
+ // SAFETY: Caller of this function ensures that the control bytes
+ // are properly initialized.
let new_i = guard.find_insert_slot(hash).index;
// Probing works by scanning through all of the control
@@ -2349,14 +3231,64 @@ impl<A: Allocator + Clone> RawTableInner<A> {
mem::forget(guard);
}
+ /// Deallocates the table without dropping any entries.
+ ///
+ /// # Note
+ ///
+ /// This function must be called only after [`drop_elements`](RawTableInner::drop_elements),
+ /// else it can lead to leaking of memory. Also calling this function automatically
+ /// makes invalid (dangling) all instances of buckets ([`Bucket`]) and makes invalid
+ /// (dangling) the `ctrl` field of the table.
+ ///
+ /// # Safety
+ ///
+ /// If any of the following conditions are violated, the result is [`Undefined Behavior`]:
+ ///
+ /// * The [`RawTableInner`] has already been allocated;
+ ///
+ /// * The `alloc` must be the same [`Allocator`] as the `Allocator` that was used
+ /// to allocate this table.
+ ///
+ /// * The `table_layout` must be the same [`TableLayout`] as the `TableLayout` that was used
+ /// to allocate this table.
+ ///
+ /// See also [`GlobalAlloc::dealloc`] or [`Allocator::deallocate`] for more information.
+ ///
+ /// [`Undefined Behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
+ /// [`GlobalAlloc::dealloc`]: https://doc.rust-lang.org/alloc/alloc/trait.GlobalAlloc.html#tymethod.dealloc
+ /// [`Allocator::deallocate`]: https://doc.rust-lang.org/alloc/alloc/trait.Allocator.html#tymethod.deallocate
#[inline]
- unsafe fn free_buckets(&mut self, table_layout: TableLayout) {
+ unsafe fn free_buckets<A>(&mut self, alloc: &A, table_layout: TableLayout)
+ where
+ A: Allocator,
+ {
+ // SAFETY: The caller must uphold the safety contract for `free_buckets`
+ // method.
let (ptr, layout) = self.allocation_info(table_layout);
- self.alloc.deallocate(ptr, layout);
+ alloc.deallocate(ptr, layout);
}
+ /// Returns a pointer to the allocated memory and the layout that was used to
+ /// allocate the table.
+ ///
+ /// # Safety
+ ///
+ /// Caller of this function must observe the following safety rules:
+ ///
+ /// * The [`RawTableInner`] has already been allocated, otherwise
+ /// calling this function results in [`undefined behavior`]
+ ///
+ /// * The `table_layout` must be the same [`TableLayout`] as the `TableLayout`
+ /// that was used to allocate this table. Failure to comply with this condition
+ /// may result in [`undefined behavior`].
+ ///
+ /// See also [`GlobalAlloc::dealloc`] or [`Allocator::deallocate`] for more information.
+ ///
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
+ /// [`GlobalAlloc::dealloc`]: https://doc.rust-lang.org/alloc/alloc/trait.GlobalAlloc.html#tymethod.dealloc
+ /// [`Allocator::deallocate`]: https://doc.rust-lang.org/alloc/alloc/trait.Allocator.html#tymethod.deallocate
#[inline]
- fn allocation_info(&self, table_layout: TableLayout) -> (NonNull<u8>, Layout) {
+ unsafe fn allocation_info(&self, table_layout: TableLayout) -> (NonNull<u8>, Layout) {
debug_assert!(
!self.is_empty_singleton(),
"this function can only be called on non-empty tables"
@@ -2368,17 +3300,37 @@ impl<A: Allocator + Clone> RawTableInner<A> {
None => unsafe { hint::unreachable_unchecked() },
};
(
+ // SAFETY: The caller must uphold the safety contract for `allocation_info` method.
unsafe { NonNull::new_unchecked(self.ctrl.as_ptr().sub(ctrl_offset)) },
layout,
)
}
+ /// Returns a pointer to the allocated memory and the layout that was used to
+ /// allocate the table. If [`RawTableInner`] has not been allocated, this
+ /// function return `dangling` pointer and `()` (unit) layout.
+ ///
+ /// # Safety
+ ///
+ /// The `table_layout` must be the same [`TableLayout`] as the `TableLayout`
+ /// that was used to allocate this table. Failure to comply with this condition
+ /// may result in [`undefined behavior`].
+ ///
+ /// See also [`GlobalAlloc::dealloc`] or [`Allocator::deallocate`] for more information.
+ ///
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
+ /// [`GlobalAlloc::dealloc`]: https://doc.rust-lang.org/alloc/alloc/trait.GlobalAlloc.html#tymethod.dealloc
+ /// [`Allocator::deallocate`]: https://doc.rust-lang.org/alloc/alloc/trait.Allocator.html#tymethod.deallocate
#[cfg(feature = "raw")]
- fn allocation_info_or_zero(&self, table_layout: TableLayout) -> (NonNull<u8>, Layout) {
+ unsafe fn allocation_info_or_zero(&self, table_layout: TableLayout) -> (NonNull<u8>, Layout) {
if self.is_empty_singleton() {
(NonNull::dangling(), Layout::new::<()>())
} else {
- self.allocation_info(table_layout)
+ // SAFETY:
+ // 1. We have checked that our table is allocated.
+ // 2. The caller ensures that `table_layout` matches the [`TableLayout`]
+ // that was used to allocate this table.
+ unsafe { self.allocation_info(table_layout) }
}
}
@@ -2491,12 +3443,16 @@ impl<A: Allocator + Clone> RawTableInner<A> {
impl<T: Clone, A: Allocator + Clone> Clone for RawTable<T, A> {
fn clone(&self) -> Self {
if self.table.is_empty_singleton() {
- Self::new_in(self.table.alloc.clone())
+ Self::new_in(self.alloc.clone())
} else {
unsafe {
// Avoid `Result::ok_or_else` because it bloats LLVM IR.
- let new_table = match Self::new_uninitialized(
- self.table.alloc.clone(),
+ //
+ // SAFETY: This is safe as we are taking the size of an already allocated table
+ // and therefore Ñapacity overflow cannot occur, `self.table.buckets()` is power
+ // of two and all allocator errors will be caught inside `RawTableInner::new_uninitialized`.
+ let mut new_table = match Self::new_uninitialized(
+ self.alloc.clone(),
self.table.buckets(),
Fallibility::Infallible,
) {
@@ -2504,24 +3460,32 @@ impl<T: Clone, A: Allocator + Clone> Clone for RawTable<T, A> {
Err(_) => hint::unreachable_unchecked(),
};
- // If cloning fails then we need to free the allocation for the
- // new table. However we don't run its drop since its control
- // bytes are not initialized yet.
- let mut guard = guard(ManuallyDrop::new(new_table), |new_table| {
- new_table.free_buckets();
- });
-
- guard.clone_from_spec(self);
-
- // Disarm the scope guard and return the newly created table.
- ManuallyDrop::into_inner(ScopeGuard::into_inner(guard))
+ // Cloning elements may fail (the clone function may panic). But we don't
+ // need to worry about uninitialized control bits, since:
+ // 1. The number of items (elements) in the table is zero, which means that
+ // the control bits will not be readed by Drop function.
+ // 2. The `clone_from_spec` method will first copy all control bits from
+ // `self` (thus initializing them). But this will not affect the `Drop`
+ // function, since the `clone_from_spec` function sets `items` only after
+ // successfully clonning all elements.
+ new_table.clone_from_spec(self);
+ new_table
}
}
}
fn clone_from(&mut self, source: &Self) {
if source.table.is_empty_singleton() {
- *self = Self::new_in(self.table.alloc.clone());
+ let mut old_inner = mem::replace(&mut self.table, RawTableInner::NEW);
+ unsafe {
+ // SAFETY:
+ // 1. We call the function only once;
+ // 2. We know for sure that `alloc` and `table_layout` matches the [`Allocator`]
+ // and [`TableLayout`] that were used to allocate this table.
+ // 3. If any elements' drop function panics, then there will only be a memory leak,
+ // because we have replaced the inner table with a new one.
+ old_inner.drop_inner_table::<T, _>(&self.alloc, Self::TABLE_LAYOUT);
+ }
} else {
unsafe {
// Make sure that if any panics occurs, we clear the table and
@@ -2536,27 +3500,38 @@ impl<T: Clone, A: Allocator + Clone> Clone for RawTable<T, A> {
//
// This leak is unavoidable: we can't try dropping more elements
// since this could lead to another panic and abort the process.
- self_.drop_elements();
+ //
+ // SAFETY: If something gets wrong we clear our table right after
+ // dropping the elements, so there is no double drop, since `items`
+ // will be equal to zero.
+ self_.table.drop_elements::<T>();
// If necessary, resize our table to match the source.
if self_.buckets() != source.buckets() {
- // Skip our drop by using ptr::write.
- if !self_.table.is_empty_singleton() {
- self_.free_buckets();
+ let new_inner = match RawTableInner::new_uninitialized(
+ &self_.alloc,
+ Self::TABLE_LAYOUT,
+ source.buckets(),
+ Fallibility::Infallible,
+ ) {
+ Ok(table) => table,
+ Err(_) => hint::unreachable_unchecked(),
+ };
+ // Replace the old inner with new uninitialized one. It's ok, since if something gets
+ // wrong `ScopeGuard` will initialize all control bytes and leave empty table.
+ let mut old_inner = mem::replace(&mut self_.table, new_inner);
+ if !old_inner.is_empty_singleton() {
+ // SAFETY:
+ // 1. We have checked that our table is allocated.
+ // 2. We know for sure that `alloc` and `table_layout` matches
+ // the [`Allocator`] and [`TableLayout`] that were used to allocate this table.
+ old_inner.free_buckets(&self_.alloc, Self::TABLE_LAYOUT);
}
- (&mut **self_ as *mut Self).write(
- // Avoid `Result::unwrap_or_else` because it bloats LLVM IR.
- match Self::new_uninitialized(
- self_.table.alloc.clone(),
- source.buckets(),
- Fallibility::Infallible,
- ) {
- Ok(table) => table,
- Err(_) => hint::unreachable_unchecked(),
- },
- );
}
+ // Cloning elements may fail (the clone function may panic), but the `ScopeGuard`
+ // inside the `clone_from_impl` function will take care of that, dropping all
+ // cloned elements if necessary. Our `ScopeGuard` will clear the table.
self_.clone_from_spec(source);
// Disarm the scope guard if cloning was successful.
@@ -2613,7 +3588,7 @@ impl<T: Clone, A: Allocator + Clone> RawTable<T, A> {
// to make sure we drop only the elements that have been
// cloned so far.
let mut guard = guard((0, &mut *self), |(index, self_)| {
- if Self::DATA_NEEDS_DROP {
+ if T::NEEDS_DROP {
for i in 0..=*index {
if self_.is_bucket_full(i) {
self_.bucket(i).drop();
@@ -2650,7 +3625,7 @@ impl<T: Clone, A: Allocator + Clone> RawTable<T, A> {
{
self.clear();
- let guard_self = guard(&mut *self, |self_| {
+ let mut guard_self = guard(&mut *self, |self_| {
// Clear the partially copied table if a panic occurs, otherwise
// items and growth_left will be out of sync with the contents
// of the table.
@@ -2683,7 +3658,7 @@ impl<T: Clone, A: Allocator + Clone> RawTable<T, A> {
}
}
-impl<T, A: Allocator + Clone + Default> Default for RawTable<T, A> {
+impl<T, A: Allocator + Default> Default for RawTable<T, A> {
#[inline]
fn default() -> Self {
Self::new_in(Default::default())
@@ -2691,31 +3666,41 @@ impl<T, A: Allocator + Clone + Default> Default for RawTable<T, A> {
}
#[cfg(feature = "nightly")]
-unsafe impl<#[may_dangle] T, A: Allocator + Clone> Drop for RawTable<T, A> {
+unsafe impl<#[may_dangle] T, A: Allocator> Drop for RawTable<T, A> {
#[cfg_attr(feature = "inline-more", inline)]
fn drop(&mut self) {
- if !self.table.is_empty_singleton() {
- unsafe {
- self.drop_elements();
- self.free_buckets();
- }
+ unsafe {
+ // SAFETY:
+ // 1. We call the function only once;
+ // 2. We know for sure that `alloc` and `table_layout` matches the [`Allocator`]
+ // and [`TableLayout`] that were used to allocate this table.
+ // 3. If the drop function of any elements fails, then only a memory leak will occur,
+ // and we don't care because we are inside the `Drop` function of the `RawTable`,
+ // so there won't be any table left in an inconsistent state.
+ self.table
+ .drop_inner_table::<T, _>(&self.alloc, Self::TABLE_LAYOUT);
}
}
}
#[cfg(not(feature = "nightly"))]
-impl<T, A: Allocator + Clone> Drop for RawTable<T, A> {
+impl<T, A: Allocator> Drop for RawTable<T, A> {
#[cfg_attr(feature = "inline-more", inline)]
fn drop(&mut self) {
- if !self.table.is_empty_singleton() {
- unsafe {
- self.drop_elements();
- self.free_buckets();
- }
+ unsafe {
+ // SAFETY:
+ // 1. We call the function only once;
+ // 2. We know for sure that `alloc` and `table_layout` matches the [`Allocator`]
+ // and [`TableLayout`] that were used to allocate this table.
+ // 3. If the drop function of any elements fails, then only a memory leak will occur,
+ // and we don't care because we are inside the `Drop` function of the `RawTable`,
+ // so there won't be any table left in an inconsistent state.
+ self.table
+ .drop_inner_table::<T, _>(&self.alloc, Self::TABLE_LAYOUT);
}
}
}
-impl<T, A: Allocator + Clone> IntoIterator for RawTable<T, A> {
+impl<T, A: Allocator> IntoIterator for RawTable<T, A> {
type Item = T;
type IntoIter = RawIntoIter<T, A>;
@@ -2749,14 +3734,39 @@ pub(crate) struct RawIterRange<T> {
impl<T> RawIterRange<T> {
/// Returns a `RawIterRange` covering a subset of a table.
///
- /// The control byte address must be aligned to the group size.
+ /// # Safety
+ ///
+ /// If any of the following conditions are violated, the result is
+ /// [`undefined behavior`]:
+ ///
+ /// * `ctrl` must be [valid] for reads, i.e. table outlives the `RawIterRange`;
+ ///
+ /// * `ctrl` must be properly aligned to the group size (Group::WIDTH);
+ ///
+ /// * `ctrl` must point to the array of properly initialized control bytes;
+ ///
+ /// * `data` must be the [`Bucket`] at the `ctrl` index in the table;
+ ///
+ /// * the value of `len` must be less than or equal to the number of table buckets,
+ /// and the returned value of `ctrl.as_ptr().add(len).offset_from(ctrl.as_ptr())`
+ /// must be positive.
+ ///
+ /// * The `ctrl.add(len)` pointer must be either in bounds or one
+ /// byte past the end of the same [allocated table].
+ ///
+ /// * The `len` must be a power of two.
+ ///
+ /// [valid]: https://doc.rust-lang.org/std/ptr/index.html#safety
+ /// [`undefined behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
#[cfg_attr(feature = "inline-more", inline)]
unsafe fn new(ctrl: *const u8, data: Bucket<T>, len: usize) -> Self {
debug_assert_ne!(len, 0);
debug_assert_eq!(ctrl as usize % Group::WIDTH, 0);
+ // SAFETY: The caller must uphold the safety rules for the [`RawIterRange::new`]
let end = ctrl.add(len);
// Load the first group and advance ctrl to point to the next group
+ // SAFETY: The caller must uphold the safety rules for the [`RawIterRange::new`]
let current_group = Group::load_aligned(ctrl).match_full();
let next_ctrl = ctrl.add(Group::WIDTH);
@@ -2900,8 +3910,6 @@ pub struct RawIter<T> {
}
impl<T> RawIter<T> {
- const DATA_NEEDS_DROP: bool = mem::needs_drop::<T>();
-
/// Refresh the iterator so that it reflects a removal from the given bucket.
///
/// For the iterator to remain valid, this method must be called once
@@ -3017,7 +4025,7 @@ impl<T> RawIter<T> {
}
unsafe fn drop_elements(&mut self) {
- if Self::DATA_NEEDS_DROP && self.len() != 0 {
+ if T::NEEDS_DROP && self.items != 0 {
for item in self {
item.drop();
}
@@ -3066,28 +4074,146 @@ impl<T> Iterator for RawIter<T> {
impl<T> ExactSizeIterator for RawIter<T> {}
impl<T> FusedIterator for RawIter<T> {}
+/// Iterator which returns an index of every full bucket in the table.
+///
+/// For maximum flexibility this iterator is not bound by a lifetime, but you
+/// must observe several rules when using it:
+/// - You must not free the hash table while iterating (including via growing/shrinking).
+/// - It is fine to erase a bucket that has been yielded by the iterator.
+/// - Erasing a bucket that has not yet been yielded by the iterator may still
+/// result in the iterator yielding index of that bucket.
+/// - It is unspecified whether an element inserted after the iterator was
+/// created will be yielded by that iterator.
+/// - The order in which the iterator yields indices of the buckets is unspecified
+/// and may change in the future.
+pub(crate) struct FullBucketsIndices {
+ // Mask of full buckets in the current group. Bits are cleared from this
+ // mask as each element is processed.
+ current_group: BitMaskIter,
+
+ // Initial value of the bytes' indices of the current group (relative
+ // to the start of the control bytes).
+ group_first_index: usize,
+
+ // Pointer to the current group of control bytes,
+ // Must be aligned to the group size (Group::WIDTH).
+ ctrl: NonNull<u8>,
+
+ // Number of elements in the table.
+ items: usize,
+}
+
+impl FullBucketsIndices {
+ /// Advances the iterator and returns the next value.
+ ///
+ /// # Safety
+ ///
+ /// If any of the following conditions are violated, the result is
+ /// [`Undefined Behavior`]:
+ ///
+ /// * The [`RawTableInner`] / [`RawTable`] must be alive and not moved,
+ /// i.e. table outlives the `FullBucketsIndices`;
+ ///
+ /// * It never tries to iterate after getting all elements.
+ ///
+ /// [`Undefined Behavior`]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
+ #[inline(always)]
+ unsafe fn next_impl(&mut self) -> Option<usize> {
+ loop {
+ if let Some(index) = self.current_group.next() {
+ // The returned `self.group_first_index + index` will always
+ // be in the range `0..self.buckets()`. See explanation below.
+ return Some(self.group_first_index + index);
+ }
+
+ // SAFETY: The caller of this function ensures that:
+ //
+ // 1. It never tries to iterate after getting all the elements;
+ // 2. The table is alive and did not moved;
+ // 3. The first `self.ctrl` pointed to the start of the array of control bytes.
+ //
+ // Taking the above into account, we always stay within the bounds, because:
+ //
+ // 1. For tables smaller than the group width (self.buckets() <= Group::WIDTH),
+ // we will never end up in the given branch, since we should have already
+ // yielded all the elements of the table.
+ //
+ // 2. For tables larger than the group width. The the number of buckets is a
+ // power of two (2 ^ n), Group::WIDTH is also power of two (2 ^ k). Sinse
+ // `(2 ^ n) > (2 ^ k)`, than `(2 ^ n) % (2 ^ k) = 0`. As we start from the
+ // the start of the array of control bytes, and never try to iterate after
+ // getting all the elements, the last `self.ctrl` will be equal to
+ // the `self.buckets() - Group::WIDTH`, so `self.current_group.next()`
+ // will always contains indices within the range `0..Group::WIDTH`,
+ // and subsequent `self.group_first_index + index` will always return a
+ // number less than `self.buckets()`.
+ self.ctrl = NonNull::new_unchecked(self.ctrl.as_ptr().add(Group::WIDTH));
+
+ // SAFETY: See explanation above.
+ self.current_group = Group::load_aligned(self.ctrl.as_ptr())
+ .match_full()
+ .into_iter();
+ self.group_first_index += Group::WIDTH;
+ }
+ }
+}
+
+impl Iterator for FullBucketsIndices {
+ type Item = usize;
+
+ /// Advances the iterator and returns the next value. It is up to
+ /// the caller to ensure that the `RawTable` outlives the `FullBucketsIndices`,
+ /// because we cannot make the `next` method unsafe.
+ #[inline(always)]
+ fn next(&mut self) -> Option<usize> {
+ // Return if we already yielded all items.
+ if self.items == 0 {
+ return None;
+ }
+
+ let nxt = unsafe {
+ // SAFETY:
+ // 1. We check number of items to yield using `items` field.
+ // 2. The caller ensures that the table is alive and has not moved.
+ self.next_impl()
+ };
+
+ debug_assert!(nxt.is_some());
+ self.items -= 1;
+
+ nxt
+ }
+
+ #[inline(always)]
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ (self.items, Some(self.items))
+ }
+}
+
+impl ExactSizeIterator for FullBucketsIndices {}
+impl FusedIterator for FullBucketsIndices {}
+
/// Iterator which consumes a table and returns elements.
-pub struct RawIntoIter<T, A: Allocator + Clone = Global> {
+pub struct RawIntoIter<T, A: Allocator = Global> {
iter: RawIter<T>,
- allocation: Option<(NonNull<u8>, Layout)>,
+ allocation: Option<(NonNull<u8>, Layout, A)>,
marker: PhantomData<T>,
- alloc: A,
}
-impl<T, A: Allocator + Clone> RawIntoIter<T, A> {
+impl<T, A: Allocator> RawIntoIter<T, A> {
#[cfg_attr(feature = "inline-more", inline)]
pub fn iter(&self) -> RawIter<T> {
self.iter.clone()
}
}
-unsafe impl<T, A: Allocator + Clone> Send for RawIntoIter<T, A>
+unsafe impl<T, A: Allocator> Send for RawIntoIter<T, A>
where
T: Send,
A: Send,
{
}
-unsafe impl<T, A: Allocator + Clone> Sync for RawIntoIter<T, A>
+unsafe impl<T, A: Allocator> Sync for RawIntoIter<T, A>
where
T: Sync,
A: Sync,
@@ -3095,7 +4221,7 @@ where
}
#[cfg(feature = "nightly")]
-unsafe impl<#[may_dangle] T, A: Allocator + Clone> Drop for RawIntoIter<T, A> {
+unsafe impl<#[may_dangle] T, A: Allocator> Drop for RawIntoIter<T, A> {
#[cfg_attr(feature = "inline-more", inline)]
fn drop(&mut self) {
unsafe {
@@ -3103,14 +4229,14 @@ unsafe impl<#[may_dangle] T, A: Allocator + Clone> Drop for RawIntoIter<T, A> {
self.iter.drop_elements();
// Free the table
- if let Some((ptr, layout)) = self.allocation {
- self.alloc.deallocate(ptr, layout);
+ if let Some((ptr, layout, ref alloc)) = self.allocation {
+ alloc.deallocate(ptr, layout);
}
}
}
}
#[cfg(not(feature = "nightly"))]
-impl<T, A: Allocator + Clone> Drop for RawIntoIter<T, A> {
+impl<T, A: Allocator> Drop for RawIntoIter<T, A> {
#[cfg_attr(feature = "inline-more", inline)]
fn drop(&mut self) {
unsafe {
@@ -3118,14 +4244,14 @@ impl<T, A: Allocator + Clone> Drop for RawIntoIter<T, A> {
self.iter.drop_elements();
// Free the table
- if let Some((ptr, layout)) = self.allocation {
- self.alloc.deallocate(ptr, layout);
+ if let Some((ptr, layout, ref alloc)) = self.allocation {
+ alloc.deallocate(ptr, layout);
}
}
}
}
-impl<T, A: Allocator + Clone> Iterator for RawIntoIter<T, A> {
+impl<T, A: Allocator> Iterator for RawIntoIter<T, A> {
type Item = T;
#[cfg_attr(feature = "inline-more", inline)]
@@ -3139,45 +4265,45 @@ impl<T, A: Allocator + Clone> Iterator for RawIntoIter<T, A> {
}
}
-impl<T, A: Allocator + Clone> ExactSizeIterator for RawIntoIter<T, A> {}
-impl<T, A: Allocator + Clone> FusedIterator for RawIntoIter<T, A> {}
+impl<T, A: Allocator> ExactSizeIterator for RawIntoIter<T, A> {}
+impl<T, A: Allocator> FusedIterator for RawIntoIter<T, A> {}
/// Iterator which consumes elements without freeing the table storage.
-pub struct RawDrain<'a, T, A: Allocator + Clone = Global> {
+pub struct RawDrain<'a, T, A: Allocator = Global> {
iter: RawIter<T>,
// The table is moved into the iterator for the duration of the drain. This
// ensures that an empty table is left if the drain iterator is leaked
// without dropping.
- table: ManuallyDrop<RawTable<T, A>>,
- orig_table: NonNull<RawTable<T, A>>,
+ table: RawTableInner,
+ orig_table: NonNull<RawTableInner>,
// We don't use a &'a mut RawTable<T> because we want RawDrain to be
// covariant over T.
marker: PhantomData<&'a RawTable<T, A>>,
}
-impl<T, A: Allocator + Clone> RawDrain<'_, T, A> {
+impl<T, A: Allocator> RawDrain<'_, T, A> {
#[cfg_attr(feature = "inline-more", inline)]
pub fn iter(&self) -> RawIter<T> {
self.iter.clone()
}
}
-unsafe impl<T, A: Allocator + Copy> Send for RawDrain<'_, T, A>
+unsafe impl<T, A: Allocator> Send for RawDrain<'_, T, A>
where
T: Send,
A: Send,
{
}
-unsafe impl<T, A: Allocator + Copy> Sync for RawDrain<'_, T, A>
+unsafe impl<T, A: Allocator> Sync for RawDrain<'_, T, A>
where
T: Sync,
A: Sync,
{
}
-impl<T, A: Allocator + Clone> Drop for RawDrain<'_, T, A> {
+impl<T, A: Allocator> Drop for RawDrain<'_, T, A> {
#[cfg_attr(feature = "inline-more", inline)]
fn drop(&mut self) {
unsafe {
@@ -3191,12 +4317,12 @@ impl<T, A: Allocator + Clone> Drop for RawDrain<'_, T, A> {
// Move the now empty table back to its original location.
self.orig_table
.as_ptr()
- .copy_from_nonoverlapping(&*self.table, 1);
+ .copy_from_nonoverlapping(&self.table, 1);
}
}
}
-impl<T, A: Allocator + Clone> Iterator for RawDrain<'_, T, A> {
+impl<T, A: Allocator> Iterator for RawDrain<'_, T, A> {
type Item = T;
#[cfg_attr(feature = "inline-more", inline)]
@@ -3213,8 +4339,8 @@ impl<T, A: Allocator + Clone> Iterator for RawDrain<'_, T, A> {
}
}
-impl<T, A: Allocator + Clone> ExactSizeIterator for RawDrain<'_, T, A> {}
-impl<T, A: Allocator + Clone> FusedIterator for RawDrain<'_, T, A> {}
+impl<T, A: Allocator> ExactSizeIterator for RawDrain<'_, T, A> {}
+impl<T, A: Allocator> FusedIterator for RawDrain<'_, T, A> {}
/// Iterator over occupied buckets that could match a given hash.
///
@@ -3259,7 +4385,7 @@ struct RawIterHashInner {
impl<T> RawIterHash<T> {
#[cfg_attr(feature = "inline-more", inline)]
#[cfg(feature = "raw")]
- unsafe fn new<A: Allocator + Clone>(table: &RawTable<T, A>, hash: u64) -> Self {
+ unsafe fn new<A: Allocator>(table: &RawTable<T, A>, hash: u64) -> Self {
RawIterHash {
inner: RawIterHashInner::new(&table.table, hash),
_marker: PhantomData,
@@ -3269,7 +4395,7 @@ impl<T> RawIterHash<T> {
impl RawIterHashInner {
#[cfg_attr(feature = "inline-more", inline)]
#[cfg(feature = "raw")]
- unsafe fn new<A: Allocator + Clone>(table: &RawTableInner<A>, hash: u64) -> Self {
+ unsafe fn new(table: &RawTableInner, hash: u64) -> Self {
let h2_hash = h2(hash);
let probe_seq = table.probe_seq(hash);
let group = Group::load(table.ctrl(probe_seq.pos));
@@ -3333,6 +4459,28 @@ impl Iterator for RawIterHashInner {
}
}
+pub(crate) struct RawExtractIf<'a, T, A: Allocator> {
+ pub iter: RawIter<T>,
+ pub table: &'a mut RawTable<T, A>,
+}
+
+impl<T, A: Allocator> RawExtractIf<'_, T, A> {
+ #[cfg_attr(feature = "inline-more", inline)]
+ pub(crate) fn next<F>(&mut self, mut f: F) -> Option<T>
+ where
+ F: FnMut(&mut T) -> bool,
+ {
+ unsafe {
+ for item in &mut self.iter {
+ if f(item.as_mut()) {
+ return Some(self.table.remove(item).0);
+ }
+ }
+ }
+ None
+ }
+}
+
#[cfg(test)]
mod test_map {
use super::*;
@@ -3375,4 +4523,214 @@ mod test_map {
assert!(table.find(i + 100, |x| *x == i + 100).is_none());
}
}
+
+ /// CHECKING THAT WE ARE NOT TRYING TO READ THE MEMORY OF
+ /// AN UNINITIALIZED TABLE DURING THE DROP
+ #[test]
+ fn test_drop_uninitialized() {
+ use ::alloc::vec::Vec;
+
+ let table = unsafe {
+ // SAFETY: The `buckets` is power of two and we're not
+ // trying to actually use the returned RawTable.
+ RawTable::<(u64, Vec<i32>)>::new_uninitialized(Global, 8, Fallibility::Infallible)
+ .unwrap()
+ };
+ drop(table);
+ }
+
+ /// CHECKING THAT WE DON'T TRY TO DROP DATA IF THE `ITEMS`
+ /// ARE ZERO, EVEN IF WE HAVE `FULL` CONTROL BYTES.
+ #[test]
+ fn test_drop_zero_items() {
+ use ::alloc::vec::Vec;
+ unsafe {
+ // SAFETY: The `buckets` is power of two and we're not
+ // trying to actually use the returned RawTable.
+ let table =
+ RawTable::<(u64, Vec<i32>)>::new_uninitialized(Global, 8, Fallibility::Infallible)
+ .unwrap();
+
+ // WE SIMULATE, AS IT WERE, A FULL TABLE.
+
+ // SAFETY: We checked that the table is allocated and therefore the table already has
+ // `self.bucket_mask + 1 + Group::WIDTH` number of control bytes (see TableLayout::calculate_layout_for)
+ // so writing `table.table.num_ctrl_bytes() == bucket_mask + 1 + Group::WIDTH` bytes is safe.
+ table
+ .table
+ .ctrl(0)
+ .write_bytes(EMPTY, table.table.num_ctrl_bytes());
+
+ // SAFETY: table.capacity() is guaranteed to be smaller than table.buckets()
+ table.table.ctrl(0).write_bytes(0, table.capacity());
+
+ // Fix up the trailing control bytes. See the comments in set_ctrl
+ // for the handling of tables smaller than the group width.
+ if table.buckets() < Group::WIDTH {
+ // SAFETY: We have `self.bucket_mask + 1 + Group::WIDTH` number of control bytes,
+ // so copying `self.buckets() == self.bucket_mask + 1` bytes with offset equal to
+ // `Group::WIDTH` is safe
+ table
+ .table
+ .ctrl(0)
+ .copy_to(table.table.ctrl(Group::WIDTH), table.table.buckets());
+ } else {
+ // SAFETY: We have `self.bucket_mask + 1 + Group::WIDTH` number of
+ // control bytes,so copying `Group::WIDTH` bytes with offset equal
+ // to `self.buckets() == self.bucket_mask + 1` is safe
+ table
+ .table
+ .ctrl(0)
+ .copy_to(table.table.ctrl(table.table.buckets()), Group::WIDTH);
+ }
+ drop(table);
+ }
+ }
+
+ /// CHECKING THAT WE DON'T TRY TO DROP DATA IF THE `ITEMS`
+ /// ARE ZERO, EVEN IF WE HAVE `FULL` CONTROL BYTES.
+ #[test]
+ fn test_catch_panic_clone_from() {
+ use ::alloc::sync::Arc;
+ use ::alloc::vec::Vec;
+ use allocator_api2::alloc::{AllocError, Allocator, Global};
+ use core::sync::atomic::{AtomicI8, Ordering};
+ use std::thread;
+
+ struct MyAllocInner {
+ drop_count: Arc<AtomicI8>,
+ }
+
+ #[derive(Clone)]
+ struct MyAlloc {
+ _inner: Arc<MyAllocInner>,
+ }
+
+ impl Drop for MyAllocInner {
+ fn drop(&mut self) {
+ println!("MyAlloc freed.");
+ self.drop_count.fetch_sub(1, Ordering::SeqCst);
+ }
+ }
+
+ unsafe impl Allocator for MyAlloc {
+ fn allocate(&self, layout: Layout) -> std::result::Result<NonNull<[u8]>, AllocError> {
+ let g = Global;
+ g.allocate(layout)
+ }
+
+ unsafe fn deallocate(&self, ptr: NonNull<u8>, layout: Layout) {
+ let g = Global;
+ g.deallocate(ptr, layout)
+ }
+ }
+
+ const DISARMED: bool = false;
+ const ARMED: bool = true;
+
+ struct CheckedCloneDrop {
+ panic_in_clone: bool,
+ dropped: bool,
+ need_drop: Vec<u64>,
+ }
+
+ impl Clone for CheckedCloneDrop {
+ fn clone(&self) -> Self {
+ if self.panic_in_clone {
+ panic!("panic in clone")
+ }
+ Self {
+ panic_in_clone: self.panic_in_clone,
+ dropped: self.dropped,
+ need_drop: self.need_drop.clone(),
+ }
+ }
+ }
+
+ impl Drop for CheckedCloneDrop {
+ fn drop(&mut self) {
+ if self.dropped {
+ panic!("double drop");
+ }
+ self.dropped = true;
+ }
+ }
+
+ let dropped: Arc<AtomicI8> = Arc::new(AtomicI8::new(2));
+
+ let mut table = RawTable::new_in(MyAlloc {
+ _inner: Arc::new(MyAllocInner {
+ drop_count: dropped.clone(),
+ }),
+ });
+
+ for (idx, panic_in_clone) in core::iter::repeat(DISARMED).take(7).enumerate() {
+ let idx = idx as u64;
+ table.insert(
+ idx,
+ (
+ idx,
+ CheckedCloneDrop {
+ panic_in_clone,
+ dropped: false,
+ need_drop: vec![idx],
+ },
+ ),
+ |(k, _)| *k,
+ );
+ }
+
+ assert_eq!(table.len(), 7);
+
+ thread::scope(|s| {
+ let result = s.spawn(|| {
+ let armed_flags = [
+ DISARMED, DISARMED, ARMED, DISARMED, DISARMED, DISARMED, DISARMED,
+ ];
+ let mut scope_table = RawTable::new_in(MyAlloc {
+ _inner: Arc::new(MyAllocInner {
+ drop_count: dropped.clone(),
+ }),
+ });
+ for (idx, &panic_in_clone) in armed_flags.iter().enumerate() {
+ let idx = idx as u64;
+ scope_table.insert(
+ idx,
+ (
+ idx,
+ CheckedCloneDrop {
+ panic_in_clone,
+ dropped: false,
+ need_drop: vec![idx + 100],
+ },
+ ),
+ |(k, _)| *k,
+ );
+ }
+ table.clone_from(&scope_table);
+ });
+ assert!(result.join().is_err());
+ });
+
+ // Let's check that all iterators work fine and do not return elements
+ // (especially `RawIterRange`, which does not depend on the number of
+ // elements in the table, but looks directly at the control bytes)
+ //
+ // SAFETY: We know for sure that `RawTable` will outlive
+ // the returned `RawIter / RawIterRange` iterator.
+ assert_eq!(table.len(), 0);
+ assert_eq!(unsafe { table.iter().count() }, 0);
+ assert_eq!(unsafe { table.iter().iter.count() }, 0);
+
+ for idx in 0..table.buckets() {
+ let idx = idx as u64;
+ assert!(
+ table.find(idx, |(k, _)| *k == idx).is_none(),
+ "Index: {idx}"
+ );
+ }
+
+ // All allocator clones should already be dropped.
+ assert_eq!(dropped.load(Ordering::SeqCst), 1);
+ }
}
diff --git a/vendor/hashbrown/src/rustc_entry.rs b/vendor/hashbrown/src/rustc_entry.rs
index 89447d27d..defbd4bb8 100644
--- a/vendor/hashbrown/src/rustc_entry.rs
+++ b/vendor/hashbrown/src/rustc_entry.rs
@@ -9,7 +9,7 @@ impl<K, V, S, A> HashMap<K, V, S, A>
where
K: Eq + Hash,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
/// Gets the given key's corresponding entry in the map for in-place manipulation.
///
@@ -62,7 +62,7 @@ where
/// [`rustc_entry`]: struct.HashMap.html#method.rustc_entry
pub enum RustcEntry<'a, K, V, A = Global>
where
- A: Allocator + Clone,
+ A: Allocator,
{
/// An occupied entry.
Occupied(RustcOccupiedEntry<'a, K, V, A>),
@@ -71,7 +71,7 @@ where
Vacant(RustcVacantEntry<'a, K, V, A>),
}
-impl<K: Debug, V: Debug, A: Allocator + Clone> Debug for RustcEntry<'_, K, V, A> {
+impl<K: Debug, V: Debug, A: Allocator> Debug for RustcEntry<'_, K, V, A> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match *self {
Vacant(ref v) => f.debug_tuple("Entry").field(v).finish(),
@@ -86,7 +86,7 @@ impl<K: Debug, V: Debug, A: Allocator + Clone> Debug for RustcEntry<'_, K, V, A>
/// [`RustcEntry`]: enum.RustcEntry.html
pub struct RustcOccupiedEntry<'a, K, V, A = Global>
where
- A: Allocator + Clone,
+ A: Allocator,
{
key: Option<K>,
elem: Bucket<(K, V)>,
@@ -97,18 +97,18 @@ unsafe impl<K, V, A> Send for RustcOccupiedEntry<'_, K, V, A>
where
K: Send,
V: Send,
- A: Allocator + Clone + Send,
+ A: Allocator + Send,
{
}
unsafe impl<K, V, A> Sync for RustcOccupiedEntry<'_, K, V, A>
where
K: Sync,
V: Sync,
- A: Allocator + Clone + Sync,
+ A: Allocator + Sync,
{
}
-impl<K: Debug, V: Debug, A: Allocator + Clone> Debug for RustcOccupiedEntry<'_, K, V, A> {
+impl<K: Debug, V: Debug, A: Allocator> Debug for RustcOccupiedEntry<'_, K, V, A> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("OccupiedEntry")
.field("key", self.key())
@@ -123,20 +123,20 @@ impl<K: Debug, V: Debug, A: Allocator + Clone> Debug for RustcOccupiedEntry<'_,
/// [`RustcEntry`]: enum.RustcEntry.html
pub struct RustcVacantEntry<'a, K, V, A = Global>
where
- A: Allocator + Clone,
+ A: Allocator,
{
hash: u64,
key: K,
table: &'a mut RawTable<(K, V), A>,
}
-impl<K: Debug, V, A: Allocator + Clone> Debug for RustcVacantEntry<'_, K, V, A> {
+impl<K: Debug, V, A: Allocator> Debug for RustcVacantEntry<'_, K, V, A> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_tuple("VacantEntry").field(self.key()).finish()
}
}
-impl<'a, K, V, A: Allocator + Clone> RustcEntry<'a, K, V, A> {
+impl<'a, K, V, A: Allocator> RustcEntry<'a, K, V, A> {
/// Sets the value of the entry, and returns a RustcOccupiedEntry.
///
/// # Examples
@@ -265,7 +265,7 @@ impl<'a, K, V, A: Allocator + Clone> RustcEntry<'a, K, V, A> {
}
}
-impl<'a, K, V: Default, A: Allocator + Clone> RustcEntry<'a, K, V, A> {
+impl<'a, K, V: Default, A: Allocator> RustcEntry<'a, K, V, A> {
/// Ensures a value is in the entry by inserting the default value if empty,
/// and returns a mutable reference to the value in the entry.
///
@@ -293,7 +293,7 @@ impl<'a, K, V: Default, A: Allocator + Clone> RustcEntry<'a, K, V, A> {
}
}
-impl<'a, K, V, A: Allocator + Clone> RustcOccupiedEntry<'a, K, V, A> {
+impl<'a, K, V, A: Allocator> RustcOccupiedEntry<'a, K, V, A> {
/// Gets a reference to the key in the entry.
///
/// # Examples
@@ -518,7 +518,7 @@ impl<'a, K, V, A: Allocator + Clone> RustcOccupiedEntry<'a, K, V, A> {
}
}
-impl<'a, K, V, A: Allocator + Clone> RustcVacantEntry<'a, K, V, A> {
+impl<'a, K, V, A: Allocator> RustcVacantEntry<'a, K, V, A> {
/// Gets a reference to the key that would be used when inserting a value
/// through the `RustcVacantEntry`.
///
diff --git a/vendor/hashbrown/src/set.rs b/vendor/hashbrown/src/set.rs
index 52f6fdaf2..09b45fd9f 100644
--- a/vendor/hashbrown/src/set.rs
+++ b/vendor/hashbrown/src/set.rs
@@ -7,8 +7,8 @@ use core::hash::{BuildHasher, Hash};
use core::iter::{Chain, FromIterator, FusedIterator};
use core::ops::{BitAnd, BitOr, BitXor, Sub};
-use super::map::{self, DefaultHashBuilder, ExtractIfInner, HashMap, Keys};
-use crate::raw::{Allocator, Global};
+use super::map::{self, DefaultHashBuilder, HashMap, Keys};
+use crate::raw::{Allocator, Global, RawExtractIf};
// Future Optimization (FIXME!)
// =============================
@@ -112,7 +112,7 @@ use crate::raw::{Allocator, Global};
/// [`HashMap`]: struct.HashMap.html
/// [`PartialEq`]: https://doc.rust-lang.org/std/cmp/trait.PartialEq.html
/// [`RefCell`]: https://doc.rust-lang.org/std/cell/struct.RefCell.html
-pub struct HashSet<T, S = DefaultHashBuilder, A: Allocator + Clone = Global> {
+pub struct HashSet<T, S = DefaultHashBuilder, A: Allocator = Global> {
pub(crate) map: HashMap<T, (), S, A>,
}
@@ -193,7 +193,7 @@ impl<T> HashSet<T, DefaultHashBuilder> {
}
#[cfg(feature = "ahash")]
-impl<T: Hash + Eq, A: Allocator + Clone> HashSet<T, DefaultHashBuilder, A> {
+impl<T: Hash + Eq, A: Allocator> HashSet<T, DefaultHashBuilder, A> {
/// Creates an empty `HashSet`.
///
/// The hash set is initially created with a capacity of 0, so it will not allocate until it
@@ -256,7 +256,7 @@ impl<T: Hash + Eq, A: Allocator + Clone> HashSet<T, DefaultHashBuilder, A> {
}
}
-impl<T, S, A: Allocator + Clone> HashSet<T, S, A> {
+impl<T, S, A: Allocator> HashSet<T, S, A> {
/// Returns the number of elements the set can hold without reallocating.
///
/// # Examples
@@ -383,6 +383,8 @@ impl<T, S, A: Allocator + Clone> HashSet<T, S, A> {
/// or the iteration short-circuits, then the remaining elements will be retained.
/// Use [`retain()`] with a negated predicate if you do not need the returned iterator.
///
+ /// [`retain()`]: HashSet::retain
+ ///
/// # Examples
///
/// ```
@@ -406,7 +408,7 @@ impl<T, S, A: Allocator + Clone> HashSet<T, S, A> {
{
ExtractIf {
f,
- inner: ExtractIfInner {
+ inner: RawExtractIf {
iter: unsafe { self.map.table.iter() },
table: &mut self.map.table,
},
@@ -511,7 +513,7 @@ impl<T, S> HashSet<T, S, Global> {
impl<T, S, A> HashSet<T, S, A>
where
- A: Allocator + Clone,
+ A: Allocator,
{
/// Returns a reference to the underlying allocator.
#[inline]
@@ -619,7 +621,7 @@ impl<T, S, A> HashSet<T, S, A>
where
T: Eq + Hash,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
/// Reserves capacity for at least `additional` more elements to be inserted
/// in the `HashSet`. The collection may reserve more space to avoid
@@ -1223,7 +1225,7 @@ where
}
}
-impl<T, S, A: Allocator + Clone> HashSet<T, S, A> {
+impl<T, S, A: Allocator> HashSet<T, S, A> {
/// Returns a reference to the [`RawTable`] used underneath [`HashSet`].
/// This function is only available if the `raw` feature of the crate is enabled.
///
@@ -1269,7 +1271,7 @@ impl<T, S, A> PartialEq for HashSet<T, S, A>
where
T: Eq + Hash,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
fn eq(&self, other: &Self) -> bool {
if self.len() != other.len() {
@@ -1284,14 +1286,14 @@ impl<T, S, A> Eq for HashSet<T, S, A>
where
T: Eq + Hash,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
}
impl<T, S, A> fmt::Debug for HashSet<T, S, A>
where
T: fmt::Debug,
- A: Allocator + Clone,
+ A: Allocator,
{
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_set().entries(self.iter()).finish()
@@ -1300,7 +1302,7 @@ where
impl<T, S, A> From<HashMap<T, (), S, A>> for HashSet<T, S, A>
where
- A: Allocator + Clone,
+ A: Allocator,
{
fn from(map: HashMap<T, (), S, A>) -> Self {
Self { map }
@@ -1311,7 +1313,7 @@ impl<T, S, A> FromIterator<T> for HashSet<T, S, A>
where
T: Eq + Hash,
S: BuildHasher + Default,
- A: Default + Allocator + Clone,
+ A: Default + Allocator,
{
#[cfg_attr(feature = "inline-more", inline)]
fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self {
@@ -1326,7 +1328,7 @@ where
impl<T, A, const N: usize> From<[T; N]> for HashSet<T, DefaultHashBuilder, A>
where
T: Eq + Hash,
- A: Default + Allocator + Clone,
+ A: Default + Allocator,
{
/// # Examples
///
@@ -1346,7 +1348,7 @@ impl<T, S, A> Extend<T> for HashSet<T, S, A>
where
T: Eq + Hash,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
#[cfg_attr(feature = "inline-more", inline)]
fn extend<I: IntoIterator<Item = T>>(&mut self, iter: I) {
@@ -1370,7 +1372,7 @@ impl<'a, T, S, A> Extend<&'a T> for HashSet<T, S, A>
where
T: 'a + Eq + Hash + Copy,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
#[cfg_attr(feature = "inline-more", inline)]
fn extend<I: IntoIterator<Item = &'a T>>(&mut self, iter: I) {
@@ -1393,7 +1395,7 @@ where
impl<T, S, A> Default for HashSet<T, S, A>
where
S: Default,
- A: Default + Allocator + Clone,
+ A: Default + Allocator,
{
/// Creates an empty `HashSet<T, S>` with the `Default` value for the hasher.
#[cfg_attr(feature = "inline-more", inline)]
@@ -1408,7 +1410,7 @@ impl<T, S, A> BitOr<&HashSet<T, S, A>> for &HashSet<T, S, A>
where
T: Eq + Hash + Clone,
S: BuildHasher + Default,
- A: Allocator + Clone,
+ A: Allocator,
{
type Output = HashSet<T, S>;
@@ -1441,7 +1443,7 @@ impl<T, S, A> BitAnd<&HashSet<T, S, A>> for &HashSet<T, S, A>
where
T: Eq + Hash + Clone,
S: BuildHasher + Default,
- A: Allocator + Clone,
+ A: Allocator,
{
type Output = HashSet<T, S>;
@@ -1552,7 +1554,7 @@ pub struct Iter<'a, K> {
///
/// [`HashSet`]: struct.HashSet.html
/// [`into_iter`]: struct.HashSet.html#method.into_iter
-pub struct IntoIter<K, A: Allocator + Clone = Global> {
+pub struct IntoIter<K, A: Allocator = Global> {
iter: map::IntoIter<K, (), A>,
}
@@ -1563,7 +1565,7 @@ pub struct IntoIter<K, A: Allocator + Clone = Global> {
///
/// [`HashSet`]: struct.HashSet.html
/// [`drain`]: struct.HashSet.html#method.drain
-pub struct Drain<'a, K, A: Allocator + Clone = Global> {
+pub struct Drain<'a, K, A: Allocator = Global> {
iter: map::Drain<'a, K, (), A>,
}
@@ -1575,12 +1577,12 @@ pub struct Drain<'a, K, A: Allocator + Clone = Global> {
/// [`extract_if`]: struct.HashSet.html#method.extract_if
/// [`HashSet`]: struct.HashSet.html
#[must_use = "Iterators are lazy unless consumed"]
-pub struct ExtractIf<'a, K, F, A: Allocator + Clone = Global>
+pub struct ExtractIf<'a, K, F, A: Allocator = Global>
where
F: FnMut(&K) -> bool,
{
f: F,
- inner: ExtractIfInner<'a, K, (), A>,
+ inner: RawExtractIf<'a, (K, ()), A>,
}
/// A lazy iterator producing elements in the intersection of `HashSet`s.
@@ -1590,7 +1592,7 @@ where
///
/// [`HashSet`]: struct.HashSet.html
/// [`intersection`]: struct.HashSet.html#method.intersection
-pub struct Intersection<'a, T, S, A: Allocator + Clone = Global> {
+pub struct Intersection<'a, T, S, A: Allocator = Global> {
// iterator of the first set
iter: Iter<'a, T>,
// the second set
@@ -1604,7 +1606,7 @@ pub struct Intersection<'a, T, S, A: Allocator + Clone = Global> {
///
/// [`HashSet`]: struct.HashSet.html
/// [`difference`]: struct.HashSet.html#method.difference
-pub struct Difference<'a, T, S, A: Allocator + Clone = Global> {
+pub struct Difference<'a, T, S, A: Allocator = Global> {
// iterator of the first set
iter: Iter<'a, T>,
// the second set
@@ -1618,7 +1620,7 @@ pub struct Difference<'a, T, S, A: Allocator + Clone = Global> {
///
/// [`HashSet`]: struct.HashSet.html
/// [`symmetric_difference`]: struct.HashSet.html#method.symmetric_difference
-pub struct SymmetricDifference<'a, T, S, A: Allocator + Clone = Global> {
+pub struct SymmetricDifference<'a, T, S, A: Allocator = Global> {
iter: Chain<Difference<'a, T, S, A>, Difference<'a, T, S, A>>,
}
@@ -1629,11 +1631,11 @@ pub struct SymmetricDifference<'a, T, S, A: Allocator + Clone = Global> {
///
/// [`HashSet`]: struct.HashSet.html
/// [`union`]: struct.HashSet.html#method.union
-pub struct Union<'a, T, S, A: Allocator + Clone = Global> {
+pub struct Union<'a, T, S, A: Allocator = Global> {
iter: Chain<Iter<'a, T>, Difference<'a, T, S, A>>,
}
-impl<'a, T, S, A: Allocator + Clone> IntoIterator for &'a HashSet<T, S, A> {
+impl<'a, T, S, A: Allocator> IntoIterator for &'a HashSet<T, S, A> {
type Item = &'a T;
type IntoIter = Iter<'a, T>;
@@ -1643,7 +1645,7 @@ impl<'a, T, S, A: Allocator + Clone> IntoIterator for &'a HashSet<T, S, A> {
}
}
-impl<T, S, A: Allocator + Clone> IntoIterator for HashSet<T, S, A> {
+impl<T, S, A: Allocator> IntoIterator for HashSet<T, S, A> {
type Item = T;
type IntoIter = IntoIter<T, A>;
@@ -1709,7 +1711,7 @@ impl<K: fmt::Debug> fmt::Debug for Iter<'_, K> {
}
}
-impl<K, A: Allocator + Clone> Iterator for IntoIter<K, A> {
+impl<K, A: Allocator> Iterator for IntoIter<K, A> {
type Item = K;
#[cfg_attr(feature = "inline-more", inline)]
@@ -1725,22 +1727,22 @@ impl<K, A: Allocator + Clone> Iterator for IntoIter<K, A> {
self.iter.size_hint()
}
}
-impl<K, A: Allocator + Clone> ExactSizeIterator for IntoIter<K, A> {
+impl<K, A: Allocator> ExactSizeIterator for IntoIter<K, A> {
#[cfg_attr(feature = "inline-more", inline)]
fn len(&self) -> usize {
self.iter.len()
}
}
-impl<K, A: Allocator + Clone> FusedIterator for IntoIter<K, A> {}
+impl<K, A: Allocator> FusedIterator for IntoIter<K, A> {}
-impl<K: fmt::Debug, A: Allocator + Clone> fmt::Debug for IntoIter<K, A> {
+impl<K: fmt::Debug, A: Allocator> fmt::Debug for IntoIter<K, A> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let entries_iter = self.iter.iter().map(|(k, _)| k);
f.debug_list().entries(entries_iter).finish()
}
}
-impl<K, A: Allocator + Clone> Iterator for Drain<'_, K, A> {
+impl<K, A: Allocator> Iterator for Drain<'_, K, A> {
type Item = K;
#[cfg_attr(feature = "inline-more", inline)]
@@ -1756,22 +1758,22 @@ impl<K, A: Allocator + Clone> Iterator for Drain<'_, K, A> {
self.iter.size_hint()
}
}
-impl<K, A: Allocator + Clone> ExactSizeIterator for Drain<'_, K, A> {
+impl<K, A: Allocator> ExactSizeIterator for Drain<'_, K, A> {
#[cfg_attr(feature = "inline-more", inline)]
fn len(&self) -> usize {
self.iter.len()
}
}
-impl<K, A: Allocator + Clone> FusedIterator for Drain<'_, K, A> {}
+impl<K, A: Allocator> FusedIterator for Drain<'_, K, A> {}
-impl<K: fmt::Debug, A: Allocator + Clone> fmt::Debug for Drain<'_, K, A> {
+impl<K: fmt::Debug, A: Allocator> fmt::Debug for Drain<'_, K, A> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let entries_iter = self.iter.iter().map(|(k, _)| k);
f.debug_list().entries(entries_iter).finish()
}
}
-impl<K, F, A: Allocator + Clone> Iterator for ExtractIf<'_, K, F, A>
+impl<K, F, A: Allocator> Iterator for ExtractIf<'_, K, F, A>
where
F: FnMut(&K) -> bool,
{
@@ -1779,9 +1781,9 @@ where
#[cfg_attr(feature = "inline-more", inline)]
fn next(&mut self) -> Option<Self::Item> {
- let f = &mut self.f;
- let (k, _) = self.inner.next(&mut |k, _| f(k))?;
- Some(k)
+ self.inner
+ .next(|&mut (ref k, ())| (self.f)(k))
+ .map(|(k, ())| k)
}
#[inline]
@@ -1790,9 +1792,9 @@ where
}
}
-impl<K, F, A: Allocator + Clone> FusedIterator for ExtractIf<'_, K, F, A> where F: FnMut(&K) -> bool {}
+impl<K, F, A: Allocator> FusedIterator for ExtractIf<'_, K, F, A> where F: FnMut(&K) -> bool {}
-impl<T, S, A: Allocator + Clone> Clone for Intersection<'_, T, S, A> {
+impl<T, S, A: Allocator> Clone for Intersection<'_, T, S, A> {
#[cfg_attr(feature = "inline-more", inline)]
fn clone(&self) -> Self {
Intersection {
@@ -1806,7 +1808,7 @@ impl<'a, T, S, A> Iterator for Intersection<'a, T, S, A>
where
T: Eq + Hash,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
type Item = &'a T;
@@ -1831,7 +1833,7 @@ impl<T, S, A> fmt::Debug for Intersection<'_, T, S, A>
where
T: fmt::Debug + Eq + Hash,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_list().entries(self.clone()).finish()
@@ -1842,11 +1844,11 @@ impl<T, S, A> FusedIterator for Intersection<'_, T, S, A>
where
T: Eq + Hash,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
}
-impl<T, S, A: Allocator + Clone> Clone for Difference<'_, T, S, A> {
+impl<T, S, A: Allocator> Clone for Difference<'_, T, S, A> {
#[cfg_attr(feature = "inline-more", inline)]
fn clone(&self) -> Self {
Difference {
@@ -1860,7 +1862,7 @@ impl<'a, T, S, A> Iterator for Difference<'a, T, S, A>
where
T: Eq + Hash,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
type Item = &'a T;
@@ -1885,7 +1887,7 @@ impl<T, S, A> FusedIterator for Difference<'_, T, S, A>
where
T: Eq + Hash,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
}
@@ -1893,14 +1895,14 @@ impl<T, S, A> fmt::Debug for Difference<'_, T, S, A>
where
T: fmt::Debug + Eq + Hash,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_list().entries(self.clone()).finish()
}
}
-impl<T, S, A: Allocator + Clone> Clone for SymmetricDifference<'_, T, S, A> {
+impl<T, S, A: Allocator> Clone for SymmetricDifference<'_, T, S, A> {
#[cfg_attr(feature = "inline-more", inline)]
fn clone(&self) -> Self {
SymmetricDifference {
@@ -1913,7 +1915,7 @@ impl<'a, T, S, A> Iterator for SymmetricDifference<'a, T, S, A>
where
T: Eq + Hash,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
type Item = &'a T;
@@ -1931,7 +1933,7 @@ impl<T, S, A> FusedIterator for SymmetricDifference<'_, T, S, A>
where
T: Eq + Hash,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
}
@@ -1939,14 +1941,14 @@ impl<T, S, A> fmt::Debug for SymmetricDifference<'_, T, S, A>
where
T: fmt::Debug + Eq + Hash,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_list().entries(self.clone()).finish()
}
}
-impl<T, S, A: Allocator + Clone> Clone for Union<'_, T, S, A> {
+impl<T, S, A: Allocator> Clone for Union<'_, T, S, A> {
#[cfg_attr(feature = "inline-more", inline)]
fn clone(&self) -> Self {
Union {
@@ -1959,7 +1961,7 @@ impl<T, S, A> FusedIterator for Union<'_, T, S, A>
where
T: Eq + Hash,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
}
@@ -1967,7 +1969,7 @@ impl<T, S, A> fmt::Debug for Union<'_, T, S, A>
where
T: fmt::Debug + Eq + Hash,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_list().entries(self.clone()).finish()
@@ -1978,7 +1980,7 @@ impl<'a, T, S, A> Iterator for Union<'a, T, S, A>
where
T: Eq + Hash,
S: BuildHasher,
- A: Allocator + Clone,
+ A: Allocator,
{
type Item = &'a T;
@@ -2030,7 +2032,7 @@ where
/// ```
pub enum Entry<'a, T, S, A = Global>
where
- A: Allocator + Clone,
+ A: Allocator,
{
/// An occupied entry.
///
@@ -2063,7 +2065,7 @@ where
Vacant(VacantEntry<'a, T, S, A>),
}
-impl<T: fmt::Debug, S, A: Allocator + Clone> fmt::Debug for Entry<'_, T, S, A> {
+impl<T: fmt::Debug, S, A: Allocator> fmt::Debug for Entry<'_, T, S, A> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match *self {
Entry::Vacant(ref v) => f.debug_tuple("Entry").field(v).finish(),
@@ -2108,11 +2110,11 @@ impl<T: fmt::Debug, S, A: Allocator + Clone> fmt::Debug for Entry<'_, T, S, A> {
/// assert_eq!(set.get(&"c"), None);
/// assert_eq!(set.len(), 2);
/// ```
-pub struct OccupiedEntry<'a, T, S, A: Allocator + Clone = Global> {
+pub struct OccupiedEntry<'a, T, S, A: Allocator = Global> {
inner: map::OccupiedEntry<'a, T, (), S, A>,
}
-impl<T: fmt::Debug, S, A: Allocator + Clone> fmt::Debug for OccupiedEntry<'_, T, S, A> {
+impl<T: fmt::Debug, S, A: Allocator> fmt::Debug for OccupiedEntry<'_, T, S, A> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("OccupiedEntry")
.field("value", self.get())
@@ -2146,17 +2148,17 @@ impl<T: fmt::Debug, S, A: Allocator + Clone> fmt::Debug for OccupiedEntry<'_, T,
/// }
/// assert!(set.contains("b") && set.len() == 2);
/// ```
-pub struct VacantEntry<'a, T, S, A: Allocator + Clone = Global> {
+pub struct VacantEntry<'a, T, S, A: Allocator = Global> {
inner: map::VacantEntry<'a, T, (), S, A>,
}
-impl<T: fmt::Debug, S, A: Allocator + Clone> fmt::Debug for VacantEntry<'_, T, S, A> {
+impl<T: fmt::Debug, S, A: Allocator> fmt::Debug for VacantEntry<'_, T, S, A> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_tuple("VacantEntry").field(self.get()).finish()
}
}
-impl<'a, T, S, A: Allocator + Clone> Entry<'a, T, S, A> {
+impl<'a, T, S, A: Allocator> Entry<'a, T, S, A> {
/// Sets the value of the entry, and returns an OccupiedEntry.
///
/// # Examples
@@ -2233,7 +2235,7 @@ impl<'a, T, S, A: Allocator + Clone> Entry<'a, T, S, A> {
}
}
-impl<T, S, A: Allocator + Clone> OccupiedEntry<'_, T, S, A> {
+impl<T, S, A: Allocator> OccupiedEntry<'_, T, S, A> {
/// Gets a reference to the value in the entry.
///
/// # Examples
@@ -2320,7 +2322,7 @@ impl<T, S, A: Allocator + Clone> OccupiedEntry<'_, T, S, A> {
}
}
-impl<'a, T, S, A: Allocator + Clone> VacantEntry<'a, T, S, A> {
+impl<'a, T, S, A: Allocator> VacantEntry<'a, T, S, A> {
/// Gets a reference to the value that would be used when inserting
/// through the `VacantEntry`.
///
@@ -2400,34 +2402,30 @@ fn assert_covariance() {
fn iter<'a, 'new>(v: Iter<'a, &'static str>) -> Iter<'a, &'new str> {
v
}
- fn into_iter<'new, A: Allocator + Clone>(
- v: IntoIter<&'static str, A>,
- ) -> IntoIter<&'new str, A> {
+ fn into_iter<'new, A: Allocator>(v: IntoIter<&'static str, A>) -> IntoIter<&'new str, A> {
v
}
- fn difference<'a, 'new, A: Allocator + Clone>(
+ fn difference<'a, 'new, A: Allocator>(
v: Difference<'a, &'static str, DefaultHashBuilder, A>,
) -> Difference<'a, &'new str, DefaultHashBuilder, A> {
v
}
- fn symmetric_difference<'a, 'new, A: Allocator + Clone>(
+ fn symmetric_difference<'a, 'new, A: Allocator>(
v: SymmetricDifference<'a, &'static str, DefaultHashBuilder, A>,
) -> SymmetricDifference<'a, &'new str, DefaultHashBuilder, A> {
v
}
- fn intersection<'a, 'new, A: Allocator + Clone>(
+ fn intersection<'a, 'new, A: Allocator>(
v: Intersection<'a, &'static str, DefaultHashBuilder, A>,
) -> Intersection<'a, &'new str, DefaultHashBuilder, A> {
v
}
- fn union<'a, 'new, A: Allocator + Clone>(
+ fn union<'a, 'new, A: Allocator>(
v: Union<'a, &'static str, DefaultHashBuilder, A>,
) -> Union<'a, &'new str, DefaultHashBuilder, A> {
v
}
- fn drain<'new, A: Allocator + Clone>(
- d: Drain<'static, &'static str, A>,
- ) -> Drain<'new, &'new str, A> {
+ fn drain<'new, A: Allocator>(d: Drain<'static, &'static str, A>) -> Drain<'new, &'new str, A> {
d
}
}
diff --git a/vendor/hashbrown/src/table.rs b/vendor/hashbrown/src/table.rs
new file mode 100644
index 000000000..bfb5dd989
--- /dev/null
+++ b/vendor/hashbrown/src/table.rs
@@ -0,0 +1,2030 @@
+use core::{fmt, iter::FusedIterator, marker::PhantomData};
+
+use crate::{
+ raw::{
+ Allocator, Bucket, Global, InsertSlot, RawDrain, RawExtractIf, RawIntoIter, RawIter,
+ RawTable,
+ },
+ TryReserveError,
+};
+
+/// Low-level hash table with explicit hashing.
+///
+/// The primary use case for this type over [`HashMap`] or [`HashSet`] is to
+/// support types that do not implement the [`Hash`] and [`Eq`] traits, but
+/// instead require additional data not contained in the key itself to compute a
+/// hash and compare two elements for equality.
+///
+/// Examples of when this can be useful include:
+/// - An `IndexMap` implementation where indices into a `Vec` are stored as
+/// elements in a `HashTable<usize>`. Hashing and comparing the elements
+/// requires indexing the associated `Vec` to get the actual value referred to
+/// by the index.
+/// - Avoiding re-computing a hash when it is already known.
+/// - Mutating the key of an element in a way that doesn't affect its hash.
+///
+/// To achieve this, `HashTable` methods that search for an element in the table
+/// require a hash value and equality function to be explicitly passed in as
+/// arguments. The method will then iterate over the elements with the given
+/// hash and call the equality function on each of them, until a match is found.
+///
+/// In most cases, a `HashTable` will not be exposed directly in an API. It will
+/// instead be wrapped in a helper type which handles the work of calculating
+/// hash values and comparing elements.
+///
+/// Due to its low-level nature, this type provides fewer guarantees than
+/// [`HashMap`] and [`HashSet`]. Specifically, the API allows you to shoot
+/// yourself in the foot by having multiple elements with identical keys in the
+/// table. The table itself will still function correctly and lookups will
+/// arbitrarily return one of the matching elements. However you should avoid
+/// doing this because it changes the runtime of hash table operations from
+/// `O(1)` to `O(k)` where `k` is the number of duplicate entries.
+///
+/// [`HashMap`]: super::HashMap
+/// [`HashSet`]: super::HashSet
+pub struct HashTable<T, A = Global>
+where
+ A: Allocator,
+{
+ pub(crate) raw: RawTable<T, A>,
+}
+
+impl<T> HashTable<T, Global> {
+ /// Creates an empty `HashTable`.
+ ///
+ /// The hash table is initially created with a capacity of 0, so it will not allocate until it
+ /// is first inserted into.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use hashbrown::HashTable;
+ /// let mut table: HashTable<&str> = HashTable::new();
+ /// assert_eq!(table.len(), 0);
+ /// assert_eq!(table.capacity(), 0);
+ /// ```
+ pub const fn new() -> Self {
+ Self {
+ raw: RawTable::new(),
+ }
+ }
+
+ /// Creates an empty `HashTable` with the specified capacity.
+ ///
+ /// The hash table will be able to hold at least `capacity` elements without
+ /// reallocating. If `capacity` is 0, the hash table will not allocate.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use hashbrown::HashTable;
+ /// let mut table: HashTable<&str> = HashTable::with_capacity(10);
+ /// assert_eq!(table.len(), 0);
+ /// assert!(table.capacity() >= 10);
+ /// ```
+ pub fn with_capacity(capacity: usize) -> Self {
+ Self {
+ raw: RawTable::with_capacity(capacity),
+ }
+ }
+}
+
+impl<T, A> HashTable<T, A>
+where
+ A: Allocator,
+{
+ /// Creates an empty `HashTable` using the given allocator.
+ ///
+ /// The hash table is initially created with a capacity of 0, so it will not allocate until it
+ /// is first inserted into.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use bumpalo::Bump;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let bump = Bump::new();
+ /// let mut table = HashTable::new_in(&bump);
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ ///
+ /// // The created HashTable holds none elements
+ /// assert_eq!(table.len(), 0);
+ ///
+ /// // The created HashTable also doesn't allocate memory
+ /// assert_eq!(table.capacity(), 0);
+ ///
+ /// // Now we insert element inside created HashTable
+ /// table.insert_unique(hasher(&"One"), "One", hasher);
+ /// // We can see that the HashTable holds 1 element
+ /// assert_eq!(table.len(), 1);
+ /// // And it also allocates some capacity
+ /// assert!(table.capacity() > 1);
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub const fn new_in(alloc: A) -> Self {
+ Self {
+ raw: RawTable::new_in(alloc),
+ }
+ }
+
+ /// Creates an empty `HashTable` with the specified capacity using the given allocator.
+ ///
+ /// The hash table will be able to hold at least `capacity` elements without
+ /// reallocating. If `capacity` is 0, the hash table will not allocate.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use bumpalo::Bump;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let bump = Bump::new();
+ /// let mut table = HashTable::with_capacity_in(5, &bump);
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ ///
+ /// // The created HashTable holds none elements
+ /// assert_eq!(table.len(), 0);
+ /// // But it can hold at least 5 elements without reallocating
+ /// let empty_map_capacity = table.capacity();
+ /// assert!(empty_map_capacity >= 5);
+ ///
+ /// // Now we insert some 5 elements inside created HashTable
+ /// table.insert_unique(hasher(&"One"), "One", hasher);
+ /// table.insert_unique(hasher(&"Two"), "Two", hasher);
+ /// table.insert_unique(hasher(&"Three"), "Three", hasher);
+ /// table.insert_unique(hasher(&"Four"), "Four", hasher);
+ /// table.insert_unique(hasher(&"Five"), "Five", hasher);
+ ///
+ /// // We can see that the HashTable holds 5 elements
+ /// assert_eq!(table.len(), 5);
+ /// // But its capacity isn't changed
+ /// assert_eq!(table.capacity(), empty_map_capacity)
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn with_capacity_in(capacity: usize, alloc: A) -> Self {
+ Self {
+ raw: RawTable::with_capacity_in(capacity, alloc),
+ }
+ }
+
+ /// Returns a reference to the underlying allocator.
+ pub fn allocator(&self) -> &A {
+ self.raw.allocator()
+ }
+
+ /// Returns a reference to an entry in the table with the given hash and
+ /// which satisfies the equality function passed.
+ ///
+ /// This method will call `eq` for all entries with the given hash, but may
+ /// also call it for entries with a different hash. `eq` should only return
+ /// true for the desired entry, at which point the search is stopped.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// table.insert_unique(hasher(&1), 1, hasher);
+ /// table.insert_unique(hasher(&2), 2, hasher);
+ /// table.insert_unique(hasher(&3), 3, hasher);
+ /// assert_eq!(table.find(hasher(&2), |&val| val == 2), Some(&2));
+ /// assert_eq!(table.find(hasher(&4), |&val| val == 4), None);
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn find(&self, hash: u64, eq: impl FnMut(&T) -> bool) -> Option<&T> {
+ self.raw.get(hash, eq)
+ }
+
+ /// Returns a mutable reference to an entry in the table with the given hash
+ /// and which satisfies the equality function passed.
+ ///
+ /// This method will call `eq` for all entries with the given hash, but may
+ /// also call it for entries with a different hash. `eq` should only return
+ /// true for the desired entry, at which point the search is stopped.
+ ///
+ /// When mutating an entry, you should ensure that it still retains the same
+ /// hash value as when it was inserted, otherwise lookups of that entry may
+ /// fail to find it.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// table.insert_unique(hasher(&1), (1, "a"), |val| hasher(&val.0));
+ /// if let Some(val) = table.find_mut(hasher(&1), |val| val.0 == 1) {
+ /// val.1 = "b";
+ /// }
+ /// assert_eq!(table.find(hasher(&1), |val| val.0 == 1), Some(&(1, "b")));
+ /// assert_eq!(table.find(hasher(&2), |val| val.0 == 2), None);
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn find_mut(&mut self, hash: u64, eq: impl FnMut(&T) -> bool) -> Option<&mut T> {
+ self.raw.get_mut(hash, eq)
+ }
+
+ /// Returns an `OccupiedEntry` for an entry in the table with the given hash
+ /// and which satisfies the equality function passed.
+ ///
+ /// This can be used to remove the entry from the table. Call
+ /// [`HashTable::entry`] instead if you wish to insert an entry if the
+ /// lookup fails.
+ ///
+ /// This method will call `eq` for all entries with the given hash, but may
+ /// also call it for entries with a different hash. `eq` should only return
+ /// true for the desired entry, at which point the search is stopped.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// table.insert_unique(hasher(&1), (1, "a"), |val| hasher(&val.0));
+ /// if let Ok(entry) = table.find_entry(hasher(&1), |val| val.0 == 1) {
+ /// entry.remove();
+ /// }
+ /// assert_eq!(table.find(hasher(&1), |val| val.0 == 1), None);
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn find_entry(
+ &mut self,
+ hash: u64,
+ eq: impl FnMut(&T) -> bool,
+ ) -> Result<OccupiedEntry<'_, T, A>, AbsentEntry<'_, T, A>> {
+ match self.raw.find(hash, eq) {
+ Some(bucket) => Ok(OccupiedEntry {
+ hash,
+ bucket,
+ table: self,
+ }),
+ None => Err(AbsentEntry { table: self }),
+ }
+ }
+
+ /// Returns an `Entry` for an entry in the table with the given hash
+ /// and which satisfies the equality function passed.
+ ///
+ /// This can be used to remove the entry from the table, or insert a new
+ /// entry with the given hash if one doesn't already exist.
+ ///
+ /// This method will call `eq` for all entries with the given hash, but may
+ /// also call it for entries with a different hash. `eq` should only return
+ /// true for the desired entry, at which point the search is stopped.
+ ///
+ /// This method may grow the table in preparation for an insertion. Call
+ /// [`HashTable::find_entry`] if this is undesirable.
+ ///
+ /// `hasher` is called if entries need to be moved or copied to a new table.
+ /// This must return the same hash value that each entry was inserted with.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::hash_table::Entry;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// table.insert_unique(hasher(&1), (1, "a"), |val| hasher(&val.0));
+ /// if let Entry::Occupied(entry) = table.entry(hasher(&1), |val| val.0 == 1, |val| hasher(&val.0))
+ /// {
+ /// entry.remove();
+ /// }
+ /// if let Entry::Vacant(entry) = table.entry(hasher(&2), |val| val.0 == 2, |val| hasher(&val.0)) {
+ /// entry.insert((2, "b"));
+ /// }
+ /// assert_eq!(table.find(hasher(&1), |val| val.0 == 1), None);
+ /// assert_eq!(table.find(hasher(&2), |val| val.0 == 2), Some(&(2, "b")));
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn entry(
+ &mut self,
+ hash: u64,
+ eq: impl FnMut(&T) -> bool,
+ hasher: impl Fn(&T) -> u64,
+ ) -> Entry<'_, T, A> {
+ match self.raw.find_or_find_insert_slot(hash, eq, hasher) {
+ Ok(bucket) => Entry::Occupied(OccupiedEntry {
+ hash,
+ bucket,
+ table: self,
+ }),
+ Err(insert_slot) => Entry::Vacant(VacantEntry {
+ hash,
+ insert_slot,
+ table: self,
+ }),
+ }
+ }
+
+ /// Inserts an element into the `HashTable` with the given hash value, but
+ /// without checking whether an equivalent element already exists within the
+ /// table.
+ ///
+ /// `hasher` is called if entries need to be moved or copied to a new table.
+ /// This must return the same hash value that each entry was inserted with.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut v = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// v.insert_unique(hasher(&1), 1, hasher);
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn insert_unique(
+ &mut self,
+ hash: u64,
+ value: T,
+ hasher: impl Fn(&T) -> u64,
+ ) -> OccupiedEntry<'_, T, A> {
+ let bucket = self.raw.insert(hash, value, hasher);
+ OccupiedEntry {
+ hash,
+ bucket,
+ table: self,
+ }
+ }
+
+ /// Clears the table, removing all values.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut v = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// v.insert_unique(hasher(&1), 1, hasher);
+ /// v.clear();
+ /// assert!(v.is_empty());
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn clear(&mut self) {
+ self.raw.clear();
+ }
+
+ /// Shrinks the capacity of the table as much as possible. It will drop
+ /// down as much as possible while maintaining the internal rules
+ /// and possibly leaving some space in accordance with the resize policy.
+ ///
+ /// `hasher` is called if entries need to be moved or copied to a new table.
+ /// This must return the same hash value that each entry was inserted with.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table = HashTable::with_capacity(100);
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// table.insert_unique(hasher(&1), 1, hasher);
+ /// table.insert_unique(hasher(&2), 2, hasher);
+ /// assert!(table.capacity() >= 100);
+ /// table.shrink_to_fit(hasher);
+ /// assert!(table.capacity() >= 2);
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn shrink_to_fit(&mut self, hasher: impl Fn(&T) -> u64) {
+ self.raw.shrink_to(self.len(), hasher)
+ }
+
+ /// Shrinks the capacity of the table with a lower limit. It will drop
+ /// down no lower than the supplied limit while maintaining the internal rules
+ /// and possibly leaving some space in accordance with the resize policy.
+ ///
+ /// `hasher` is called if entries need to be moved or copied to a new table.
+ /// This must return the same hash value that each entry was inserted with.
+ ///
+ /// Panics if the current capacity is smaller than the supplied
+ /// minimum capacity.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table = HashTable::with_capacity(100);
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// table.insert_unique(hasher(&1), 1, hasher);
+ /// table.insert_unique(hasher(&2), 2, hasher);
+ /// assert!(table.capacity() >= 100);
+ /// table.shrink_to(10, hasher);
+ /// assert!(table.capacity() >= 10);
+ /// table.shrink_to(0, hasher);
+ /// assert!(table.capacity() >= 2);
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn shrink_to(&mut self, min_capacity: usize, hasher: impl Fn(&T) -> u64) {
+ self.raw.shrink_to(min_capacity, hasher);
+ }
+
+ /// Reserves capacity for at least `additional` more elements to be inserted
+ /// in the `HashTable`. The collection may reserve more space to avoid
+ /// frequent reallocations.
+ ///
+ /// `hasher` is called if entries need to be moved or copied to a new table.
+ /// This must return the same hash value that each entry was inserted with.
+ ///
+ /// # Panics
+ ///
+ /// Panics if the new capacity exceeds [`isize::MAX`] bytes and [`abort`] the program
+ /// in case of allocation error. Use [`try_reserve`](HashTable::try_reserve) instead
+ /// if you want to handle memory allocation failure.
+ ///
+ /// [`isize::MAX`]: https://doc.rust-lang.org/std/primitive.isize.html
+ /// [`abort`]: https://doc.rust-lang.org/alloc/alloc/fn.handle_alloc_error.html
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table: HashTable<i32> = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// table.reserve(10, hasher);
+ /// assert!(table.capacity() >= 10);
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn reserve(&mut self, additional: usize, hasher: impl Fn(&T) -> u64) {
+ self.raw.reserve(additional, hasher)
+ }
+
+ /// Tries to reserve capacity for at least `additional` more elements to be inserted
+ /// in the given `HashTable`. The collection may reserve more space to avoid
+ /// frequent reallocations.
+ ///
+ /// `hasher` is called if entries need to be moved or copied to a new table.
+ /// This must return the same hash value that each entry was inserted with.
+ ///
+ /// # Errors
+ ///
+ /// If the capacity overflows, or the allocator reports a failure, then an error
+ /// is returned.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table: HashTable<i32> = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// table
+ /// .try_reserve(10, hasher)
+ /// .expect("why is the test harness OOMing on 10 bytes?");
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn try_reserve(
+ &mut self,
+ additional: usize,
+ hasher: impl Fn(&T) -> u64,
+ ) -> Result<(), TryReserveError> {
+ self.raw.try_reserve(additional, hasher)
+ }
+
+ /// Returns the number of elements the table can hold without reallocating.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use hashbrown::HashTable;
+ /// let table: HashTable<i32> = HashTable::with_capacity(100);
+ /// assert!(table.capacity() >= 100);
+ /// ```
+ pub fn capacity(&self) -> usize {
+ self.raw.capacity()
+ }
+
+ /// Returns the number of elements in the table.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// let mut v = HashTable::new();
+ /// assert_eq!(v.len(), 0);
+ /// v.insert_unique(hasher(&1), 1, hasher);
+ /// assert_eq!(v.len(), 1);
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn len(&self) -> usize {
+ self.raw.len()
+ }
+
+ /// Returns `true` if the set contains no elements.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// let mut v = HashTable::new();
+ /// assert!(v.is_empty());
+ /// v.insert_unique(hasher(&1), 1, hasher);
+ /// assert!(!v.is_empty());
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn is_empty(&self) -> bool {
+ self.raw.is_empty()
+ }
+
+ /// An iterator visiting all elements in arbitrary order.
+ /// The iterator element type is `&'a T`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// table.insert_unique(hasher(&"a"), "b", hasher);
+ /// table.insert_unique(hasher(&"b"), "b", hasher);
+ ///
+ /// // Will print in an arbitrary order.
+ /// for x in table.iter() {
+ /// println!("{}", x);
+ /// }
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn iter(&self) -> Iter<'_, T> {
+ Iter {
+ inner: unsafe { self.raw.iter() },
+ marker: PhantomData,
+ }
+ }
+
+ /// An iterator visiting all elements in arbitrary order,
+ /// with mutable references to the elements.
+ /// The iterator element type is `&'a mut T`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// table.insert_unique(hasher(&1), 1, hasher);
+ /// table.insert_unique(hasher(&2), 2, hasher);
+ /// table.insert_unique(hasher(&3), 3, hasher);
+ ///
+ /// // Update all values
+ /// for val in table.iter_mut() {
+ /// *val *= 2;
+ /// }
+ ///
+ /// assert_eq!(table.len(), 3);
+ /// let mut vec: Vec<i32> = Vec::new();
+ ///
+ /// for val in &table {
+ /// println!("val: {}", val);
+ /// vec.push(*val);
+ /// }
+ ///
+ /// // The `Iter` iterator produces items in arbitrary order, so the
+ /// // items must be sorted to test them against a sorted array.
+ /// vec.sort_unstable();
+ /// assert_eq!(vec, [2, 4, 6]);
+ ///
+ /// assert_eq!(table.len(), 3);
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn iter_mut(&mut self) -> IterMut<'_, T> {
+ IterMut {
+ inner: unsafe { self.raw.iter() },
+ marker: PhantomData,
+ }
+ }
+
+ /// Retains only the elements specified by the predicate.
+ ///
+ /// In other words, remove all elements `e` such that `f(&e)` returns `false`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// for x in 1..=6 {
+ /// table.insert_unique(hasher(&x), x, hasher);
+ /// }
+ /// table.retain(|&mut x| x % 2 == 0);
+ /// assert_eq!(table.len(), 3);
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn retain(&mut self, mut f: impl FnMut(&mut T) -> bool) {
+ // Here we only use `iter` as a temporary, preventing use-after-free
+ unsafe {
+ for item in self.raw.iter() {
+ if !f(item.as_mut()) {
+ self.raw.erase(item);
+ }
+ }
+ }
+ }
+
+ /// Clears the set, returning all elements in an iterator.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// for x in 1..=3 {
+ /// table.insert_unique(hasher(&x), x, hasher);
+ /// }
+ /// assert!(!table.is_empty());
+ ///
+ /// // print 1, 2, 3 in an arbitrary order
+ /// for i in table.drain() {
+ /// println!("{}", i);
+ /// }
+ ///
+ /// assert!(table.is_empty());
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn drain(&mut self) -> Drain<'_, T, A> {
+ Drain {
+ inner: self.raw.drain(),
+ }
+ }
+
+ /// Drains elements which are true under the given predicate,
+ /// and returns an iterator over the removed items.
+ ///
+ /// In other words, move all elements `e` such that `f(&e)` returns `true` out
+ /// into another iterator.
+ ///
+ /// If the returned `ExtractIf` is not exhausted, e.g. because it is dropped without iterating
+ /// or the iteration short-circuits, then the remaining elements will be retained.
+ /// Use [`retain()`] with a negated predicate if you do not need the returned iterator.
+ ///
+ /// [`retain()`]: HashTable::retain
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// for x in 0..8 {
+ /// table.insert_unique(hasher(&x), x, hasher);
+ /// }
+ /// let drained: Vec<i32> = table.extract_if(|&mut v| v % 2 == 0).collect();
+ ///
+ /// let mut evens = drained.into_iter().collect::<Vec<_>>();
+ /// let mut odds = table.into_iter().collect::<Vec<_>>();
+ /// evens.sort();
+ /// odds.sort();
+ ///
+ /// assert_eq!(evens, vec![0, 2, 4, 6]);
+ /// assert_eq!(odds, vec![1, 3, 5, 7]);
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn extract_if<F>(&mut self, f: F) -> ExtractIf<'_, T, F, A>
+ where
+ F: FnMut(&mut T) -> bool,
+ {
+ ExtractIf {
+ f,
+ inner: RawExtractIf {
+ iter: unsafe { self.raw.iter() },
+ table: &mut self.raw,
+ },
+ }
+ }
+
+ /// Attempts to get mutable references to `N` values in the map at once.
+ ///
+ /// The `eq` argument should be a closure such that `eq(i, k)` returns true if `k` is equal to
+ /// the `i`th key to be looked up.
+ ///
+ /// Returns an array of length `N` with the results of each query. For soundness, at most one
+ /// mutable reference will be returned to any value. `None` will be returned if any of the
+ /// keys are duplicates or missing.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::hash_table::Entry;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut libraries: HashTable<(&str, u32)> = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// for (k, v) in [
+ /// ("Bodleian Library", 1602),
+ /// ("Athenæum", 1807),
+ /// ("Herzogin-Anna-Amalia-Bibliothek", 1691),
+ /// ("Library of Congress", 1800),
+ /// ] {
+ /// libraries.insert_unique(hasher(&k), (k, v), |(k, _)| hasher(&k));
+ /// }
+ ///
+ /// let keys = ["Athenæum", "Library of Congress"];
+ /// let got = libraries.get_many_mut(keys.map(|k| hasher(&k)), |i, val| keys[i] == val.0);
+ /// assert_eq!(
+ /// got,
+ /// Some([&mut ("Athenæum", 1807), &mut ("Library of Congress", 1800),]),
+ /// );
+ ///
+ /// // Missing keys result in None
+ /// let keys = ["Athenæum", "New York Public Library"];
+ /// let got = libraries.get_many_mut(keys.map(|k| hasher(&k)), |i, val| keys[i] == val.0);
+ /// assert_eq!(got, None);
+ ///
+ /// // Duplicate keys result in None
+ /// let keys = ["Athenæum", "Athenæum"];
+ /// let got = libraries.get_many_mut(keys.map(|k| hasher(&k)), |i, val| keys[i] == val.0);
+ /// assert_eq!(got, None);
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn get_many_mut<const N: usize>(
+ &mut self,
+ hashes: [u64; N],
+ eq: impl FnMut(usize, &T) -> bool,
+ ) -> Option<[&'_ mut T; N]> {
+ self.raw.get_many_mut(hashes, eq)
+ }
+
+ /// Attempts to get mutable references to `N` values in the map at once, without validating that
+ /// the values are unique.
+ ///
+ /// The `eq` argument should be a closure such that `eq(i, k)` returns true if `k` is equal to
+ /// the `i`th key to be looked up.
+ ///
+ /// Returns an array of length `N` with the results of each query. `None` will be returned if
+ /// any of the keys are missing.
+ ///
+ /// For a safe alternative see [`get_many_mut`](`HashTable::get_many_mut`).
+ ///
+ /// # Safety
+ ///
+ /// Calling this method with overlapping keys is *[undefined behavior]* even if the resulting
+ /// references are not used.
+ ///
+ /// [undefined behavior]: https://doc.rust-lang.org/reference/behavior-considered-undefined.html
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::hash_table::Entry;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut libraries: HashTable<(&str, u32)> = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// for (k, v) in [
+ /// ("Bodleian Library", 1602),
+ /// ("Athenæum", 1807),
+ /// ("Herzogin-Anna-Amalia-Bibliothek", 1691),
+ /// ("Library of Congress", 1800),
+ /// ] {
+ /// libraries.insert_unique(hasher(&k), (k, v), |(k, _)| hasher(&k));
+ /// }
+ ///
+ /// let keys = ["Athenæum", "Library of Congress"];
+ /// let got = libraries.get_many_mut(keys.map(|k| hasher(&k)), |i, val| keys[i] == val.0);
+ /// assert_eq!(
+ /// got,
+ /// Some([&mut ("Athenæum", 1807), &mut ("Library of Congress", 1800),]),
+ /// );
+ ///
+ /// // Missing keys result in None
+ /// let keys = ["Athenæum", "New York Public Library"];
+ /// let got = libraries.get_many_mut(keys.map(|k| hasher(&k)), |i, val| keys[i] == val.0);
+ /// assert_eq!(got, None);
+ ///
+ /// // Duplicate keys result in None
+ /// let keys = ["Athenæum", "Athenæum"];
+ /// let got = libraries.get_many_mut(keys.map(|k| hasher(&k)), |i, val| keys[i] == val.0);
+ /// assert_eq!(got, None);
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub unsafe fn get_many_unchecked_mut<const N: usize>(
+ &mut self,
+ hashes: [u64; N],
+ eq: impl FnMut(usize, &T) -> bool,
+ ) -> Option<[&'_ mut T; N]> {
+ self.raw.get_many_unchecked_mut(hashes, eq)
+ }
+}
+
+impl<T, A> IntoIterator for HashTable<T, A>
+where
+ A: Allocator,
+{
+ type Item = T;
+ type IntoIter = IntoIter<T, A>;
+
+ fn into_iter(self) -> IntoIter<T, A> {
+ IntoIter {
+ inner: self.raw.into_iter(),
+ }
+ }
+}
+
+impl<'a, T, A> IntoIterator for &'a HashTable<T, A>
+where
+ A: Allocator,
+{
+ type Item = &'a T;
+ type IntoIter = Iter<'a, T>;
+
+ fn into_iter(self) -> Iter<'a, T> {
+ self.iter()
+ }
+}
+
+impl<'a, T, A> IntoIterator for &'a mut HashTable<T, A>
+where
+ A: Allocator,
+{
+ type Item = &'a mut T;
+ type IntoIter = IterMut<'a, T>;
+
+ fn into_iter(self) -> IterMut<'a, T> {
+ self.iter_mut()
+ }
+}
+
+impl<T, A> Default for HashTable<T, A>
+where
+ A: Allocator + Default,
+{
+ fn default() -> Self {
+ Self {
+ raw: Default::default(),
+ }
+ }
+}
+
+impl<T, A> Clone for HashTable<T, A>
+where
+ T: Clone,
+ A: Allocator + Clone,
+{
+ fn clone(&self) -> Self {
+ Self {
+ raw: self.raw.clone(),
+ }
+ }
+}
+
+impl<T, A> fmt::Debug for HashTable<T, A>
+where
+ T: fmt::Debug,
+ A: Allocator,
+{
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.debug_set().entries(self.iter()).finish()
+ }
+}
+
+/// A view into a single entry in a table, which may either be vacant or occupied.
+///
+/// This `enum` is constructed from the [`entry`] method on [`HashTable`].
+///
+/// [`HashTable`]: struct.HashTable.html
+/// [`entry`]: struct.HashTable.html#method.entry
+///
+/// # Examples
+///
+/// ```
+/// # #[cfg(feature = "nightly")]
+/// # fn test() {
+/// use ahash::AHasher;
+/// use hashbrown::hash_table::{Entry, HashTable, OccupiedEntry};
+/// use std::hash::{BuildHasher, BuildHasherDefault};
+///
+/// let mut table = HashTable::new();
+/// let hasher = BuildHasherDefault::<AHasher>::default();
+/// let hasher = |val: &_| hasher.hash_one(val);
+/// for x in ["a", "b", "c"] {
+/// table.insert_unique(hasher(&x), x, hasher);
+/// }
+/// assert_eq!(table.len(), 3);
+///
+/// // Existing value (insert)
+/// let entry: Entry<_> = table.entry(hasher(&"a"), |&x| x == "a", hasher);
+/// let _raw_o: OccupiedEntry<_, _> = entry.insert("a");
+/// assert_eq!(table.len(), 3);
+/// // Nonexistent value (insert)
+/// table.entry(hasher(&"d"), |&x| x == "d", hasher).insert("d");
+///
+/// // Existing value (or_insert)
+/// table
+/// .entry(hasher(&"b"), |&x| x == "b", hasher)
+/// .or_insert("b");
+/// // Nonexistent value (or_insert)
+/// table
+/// .entry(hasher(&"e"), |&x| x == "e", hasher)
+/// .or_insert("e");
+///
+/// println!("Our HashTable: {:?}", table);
+///
+/// let mut vec: Vec<_> = table.iter().copied().collect();
+/// // The `Iter` iterator produces items in arbitrary order, so the
+/// // items must be sorted to test them against a sorted array.
+/// vec.sort_unstable();
+/// assert_eq!(vec, ["a", "b", "c", "d", "e"]);
+/// # }
+/// # fn main() {
+/// # #[cfg(feature = "nightly")]
+/// # test()
+/// # }
+/// ```
+pub enum Entry<'a, T, A = Global>
+where
+ A: Allocator,
+{
+ /// An occupied entry.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::hash_table::{Entry, HashTable, OccupiedEntry};
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// for x in ["a", "b"] {
+ /// table.insert_unique(hasher(&x), x, hasher);
+ /// }
+ ///
+ /// match table.entry(hasher(&"a"), |&x| x == "a", hasher) {
+ /// Entry::Vacant(_) => unreachable!(),
+ /// Entry::Occupied(_) => {}
+ /// }
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ Occupied(OccupiedEntry<'a, T, A>),
+
+ /// A vacant entry.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::hash_table::{Entry, HashTable, OccupiedEntry};
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table = HashTable::<&str>::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ ///
+ /// match table.entry(hasher(&"a"), |&x| x == "a", hasher) {
+ /// Entry::Vacant(_) => {}
+ /// Entry::Occupied(_) => unreachable!(),
+ /// }
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ Vacant(VacantEntry<'a, T, A>),
+}
+
+impl<T: fmt::Debug, A: Allocator> fmt::Debug for Entry<'_, T, A> {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ match *self {
+ Entry::Vacant(ref v) => f.debug_tuple("Entry").field(v).finish(),
+ Entry::Occupied(ref o) => f.debug_tuple("Entry").field(o).finish(),
+ }
+ }
+}
+
+impl<'a, T, A> Entry<'a, T, A>
+where
+ A: Allocator,
+{
+ /// Sets the value of the entry, replacing any existing value if there is
+ /// one, and returns an [`OccupiedEntry`].
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table: HashTable<&str> = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ ///
+ /// let entry = table
+ /// .entry(hasher(&"horseyland"), |&x| x == "horseyland", hasher)
+ /// .insert("horseyland");
+ ///
+ /// assert_eq!(entry.get(), &"horseyland");
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn insert(self, value: T) -> OccupiedEntry<'a, T, A> {
+ match self {
+ Entry::Occupied(mut entry) => {
+ *entry.get_mut() = value;
+ entry
+ }
+ Entry::Vacant(entry) => entry.insert(value),
+ }
+ }
+
+ /// Ensures a value is in the entry by inserting if it was vacant.
+ ///
+ /// Returns an [`OccupiedEntry`] pointing to the now-occupied entry.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table: HashTable<&str> = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ ///
+ /// // nonexistent key
+ /// table
+ /// .entry(hasher(&"poneyland"), |&x| x == "poneyland", hasher)
+ /// .or_insert("poneyland");
+ /// assert!(table
+ /// .find(hasher(&"poneyland"), |&x| x == "poneyland")
+ /// .is_some());
+ ///
+ /// // existing key
+ /// table
+ /// .entry(hasher(&"poneyland"), |&x| x == "poneyland", hasher)
+ /// .or_insert("poneyland");
+ /// assert!(table
+ /// .find(hasher(&"poneyland"), |&x| x == "poneyland")
+ /// .is_some());
+ /// assert_eq!(table.len(), 1);
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn or_insert(self, default: T) -> OccupiedEntry<'a, T, A> {
+ match self {
+ Entry::Occupied(entry) => entry,
+ Entry::Vacant(entry) => entry.insert(default),
+ }
+ }
+
+ /// Ensures a value is in the entry by inserting the result of the default function if empty..
+ ///
+ /// Returns an [`OccupiedEntry`] pointing to the now-occupied entry.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table: HashTable<String> = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ ///
+ /// table
+ /// .entry(hasher("poneyland"), |x| x == "poneyland", |val| hasher(val))
+ /// .or_insert_with(|| "poneyland".to_string());
+ ///
+ /// assert!(table
+ /// .find(hasher(&"poneyland"), |x| x == "poneyland")
+ /// .is_some());
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn or_insert_with(self, default: impl FnOnce() -> T) -> OccupiedEntry<'a, T, A> {
+ match self {
+ Entry::Occupied(entry) => entry,
+ Entry::Vacant(entry) => entry.insert(default()),
+ }
+ }
+
+ /// Provides in-place mutable access to an occupied entry before any
+ /// potential inserts into the table.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table: HashTable<(&str, u32)> = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ ///
+ /// table
+ /// .entry(
+ /// hasher(&"poneyland"),
+ /// |&(x, _)| x == "poneyland",
+ /// |(k, _)| hasher(&k),
+ /// )
+ /// .and_modify(|(_, v)| *v += 1)
+ /// .or_insert(("poneyland", 42));
+ /// assert_eq!(
+ /// table.find(hasher(&"poneyland"), |&(k, _)| k == "poneyland"),
+ /// Some(&("poneyland", 42))
+ /// );
+ ///
+ /// table
+ /// .entry(
+ /// hasher(&"poneyland"),
+ /// |&(x, _)| x == "poneyland",
+ /// |(k, _)| hasher(&k),
+ /// )
+ /// .and_modify(|(_, v)| *v += 1)
+ /// .or_insert(("poneyland", 42));
+ /// assert_eq!(
+ /// table.find(hasher(&"poneyland"), |&(k, _)| k == "poneyland"),
+ /// Some(&("poneyland", 43))
+ /// );
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn and_modify(self, f: impl FnOnce(&mut T)) -> Self {
+ match self {
+ Entry::Occupied(mut entry) => {
+ f(entry.get_mut());
+ Entry::Occupied(entry)
+ }
+ Entry::Vacant(entry) => Entry::Vacant(entry),
+ }
+ }
+}
+
+/// A view into an occupied entry in a `HashTable`.
+/// It is part of the [`Entry`] enum.
+///
+/// [`Entry`]: enum.Entry.html
+///
+/// # Examples
+///
+/// ```
+/// # #[cfg(feature = "nightly")]
+/// # fn test() {
+/// use ahash::AHasher;
+/// use hashbrown::hash_table::{Entry, HashTable, OccupiedEntry};
+/// use std::hash::{BuildHasher, BuildHasherDefault};
+///
+/// let mut table = HashTable::new();
+/// let hasher = BuildHasherDefault::<AHasher>::default();
+/// let hasher = |val: &_| hasher.hash_one(val);
+/// for x in ["a", "b", "c"] {
+/// table.insert_unique(hasher(&x), x, hasher);
+/// }
+/// assert_eq!(table.len(), 3);
+///
+/// let _entry_o: OccupiedEntry<_, _> = table.find_entry(hasher(&"a"), |&x| x == "a").unwrap();
+/// assert_eq!(table.len(), 3);
+///
+/// // Existing key
+/// match table.entry(hasher(&"a"), |&x| x == "a", hasher) {
+/// Entry::Vacant(_) => unreachable!(),
+/// Entry::Occupied(view) => {
+/// assert_eq!(view.get(), &"a");
+/// }
+/// }
+///
+/// assert_eq!(table.len(), 3);
+///
+/// // Existing key (take)
+/// match table.entry(hasher(&"c"), |&x| x == "c", hasher) {
+/// Entry::Vacant(_) => unreachable!(),
+/// Entry::Occupied(view) => {
+/// assert_eq!(view.remove().0, "c");
+/// }
+/// }
+/// assert_eq!(table.find(hasher(&"c"), |&x| x == "c"), None);
+/// assert_eq!(table.len(), 2);
+/// # }
+/// # fn main() {
+/// # #[cfg(feature = "nightly")]
+/// # test()
+/// # }
+/// ```
+pub struct OccupiedEntry<'a, T, A = Global>
+where
+ A: Allocator,
+{
+ hash: u64,
+ bucket: Bucket<T>,
+ table: &'a mut HashTable<T, A>,
+}
+
+unsafe impl<T, A> Send for OccupiedEntry<'_, T, A>
+where
+ T: Send,
+ A: Send + Allocator,
+{
+}
+unsafe impl<T, A> Sync for OccupiedEntry<'_, T, A>
+where
+ T: Sync,
+ A: Sync + Allocator,
+{
+}
+
+impl<T: fmt::Debug, A: Allocator> fmt::Debug for OccupiedEntry<'_, T, A> {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.debug_struct("OccupiedEntry")
+ .field("value", self.get())
+ .finish()
+ }
+}
+
+impl<'a, T, A> OccupiedEntry<'a, T, A>
+where
+ A: Allocator,
+{
+ /// Takes the value out of the entry, and returns it along with a
+ /// `VacantEntry` that can be used to insert another value with the same
+ /// hash as the one that was just removed.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::hash_table::Entry;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table: HashTable<&str> = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// // The table is empty
+ /// assert!(table.is_empty() && table.capacity() == 0);
+ ///
+ /// table.insert_unique(hasher(&"poneyland"), "poneyland", hasher);
+ /// let capacity_before_remove = table.capacity();
+ ///
+ /// if let Entry::Occupied(o) = table.entry(hasher(&"poneyland"), |&x| x == "poneyland", hasher) {
+ /// assert_eq!(o.remove().0, "poneyland");
+ /// }
+ ///
+ /// assert!(table
+ /// .find(hasher(&"poneyland"), |&x| x == "poneyland")
+ /// .is_none());
+ /// // Now table hold none elements but capacity is equal to the old one
+ /// assert!(table.len() == 0 && table.capacity() == capacity_before_remove);
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn remove(self) -> (T, VacantEntry<'a, T, A>) {
+ let (val, slot) = unsafe { self.table.raw.remove(self.bucket) };
+ (
+ val,
+ VacantEntry {
+ hash: self.hash,
+ insert_slot: slot,
+ table: self.table,
+ },
+ )
+ }
+
+ /// Gets a reference to the value in the entry.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::hash_table::Entry;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table: HashTable<&str> = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// table.insert_unique(hasher(&"poneyland"), "poneyland", hasher);
+ ///
+ /// match table.entry(hasher(&"poneyland"), |&x| x == "poneyland", hasher) {
+ /// Entry::Vacant(_) => panic!(),
+ /// Entry::Occupied(entry) => assert_eq!(entry.get(), &"poneyland"),
+ /// }
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn get(&self) -> &T {
+ unsafe { self.bucket.as_ref() }
+ }
+
+ /// Gets a mutable reference to the value in the entry.
+ ///
+ /// If you need a reference to the `OccupiedEntry` which may outlive the
+ /// destruction of the `Entry` value, see [`into_mut`].
+ ///
+ /// [`into_mut`]: #method.into_mut
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::hash_table::Entry;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table: HashTable<(&str, u32)> = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// table.insert_unique(hasher(&"poneyland"), ("poneyland", 12), |(k, _)| hasher(&k));
+ ///
+ /// assert_eq!(
+ /// table.find(hasher(&"poneyland"), |&(x, _)| x == "poneyland",),
+ /// Some(&("poneyland", 12))
+ /// );
+ ///
+ /// if let Entry::Occupied(mut o) = table.entry(
+ /// hasher(&"poneyland"),
+ /// |&(x, _)| x == "poneyland",
+ /// |(k, _)| hasher(&k),
+ /// ) {
+ /// o.get_mut().1 += 10;
+ /// assert_eq!(o.get().1, 22);
+ ///
+ /// // We can use the same Entry multiple times.
+ /// o.get_mut().1 += 2;
+ /// }
+ ///
+ /// assert_eq!(
+ /// table.find(hasher(&"poneyland"), |&(x, _)| x == "poneyland",),
+ /// Some(&("poneyland", 24))
+ /// );
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn get_mut(&mut self) -> &mut T {
+ unsafe { self.bucket.as_mut() }
+ }
+
+ /// Converts the OccupiedEntry into a mutable reference to the value in the entry
+ /// with a lifetime bound to the table itself.
+ ///
+ /// If you need multiple references to the `OccupiedEntry`, see [`get_mut`].
+ ///
+ /// [`get_mut`]: #method.get_mut
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::hash_table::Entry;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table: HashTable<(&str, u32)> = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ /// table.insert_unique(hasher(&"poneyland"), ("poneyland", 12), |(k, _)| hasher(&k));
+ ///
+ /// assert_eq!(
+ /// table.find(hasher(&"poneyland"), |&(x, _)| x == "poneyland",),
+ /// Some(&("poneyland", 12))
+ /// );
+ ///
+ /// let value: &mut (&str, u32);
+ /// match table.entry(
+ /// hasher(&"poneyland"),
+ /// |&(x, _)| x == "poneyland",
+ /// |(k, _)| hasher(&k),
+ /// ) {
+ /// Entry::Occupied(entry) => value = entry.into_mut(),
+ /// Entry::Vacant(_) => panic!(),
+ /// }
+ /// value.1 += 10;
+ ///
+ /// assert_eq!(
+ /// table.find(hasher(&"poneyland"), |&(x, _)| x == "poneyland",),
+ /// Some(&("poneyland", 22))
+ /// );
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn into_mut(self) -> &'a mut T {
+ unsafe { self.bucket.as_mut() }
+ }
+
+ /// Converts the OccupiedEntry into a mutable reference to the underlying
+ /// table.
+ pub fn into_table(self) -> &'a mut HashTable<T, A> {
+ self.table
+ }
+}
+
+/// A view into a vacant entry in a `HashTable`.
+/// It is part of the [`Entry`] enum.
+///
+/// [`Entry`]: enum.Entry.html
+///
+/// # Examples
+///
+/// ```
+/// # #[cfg(feature = "nightly")]
+/// # fn test() {
+/// use ahash::AHasher;
+/// use hashbrown::hash_table::{Entry, HashTable, VacantEntry};
+/// use std::hash::{BuildHasher, BuildHasherDefault};
+///
+/// let mut table: HashTable<&str> = HashTable::new();
+/// let hasher = BuildHasherDefault::<AHasher>::default();
+/// let hasher = |val: &_| hasher.hash_one(val);
+///
+/// let entry_v: VacantEntry<_, _> = match table.entry(hasher(&"a"), |&x| x == "a", hasher) {
+/// Entry::Vacant(view) => view,
+/// Entry::Occupied(_) => unreachable!(),
+/// };
+/// entry_v.insert("a");
+/// assert!(table.find(hasher(&"a"), |&x| x == "a").is_some() && table.len() == 1);
+///
+/// // Nonexistent key (insert)
+/// match table.entry(hasher(&"b"), |&x| x == "b", hasher) {
+/// Entry::Vacant(view) => {
+/// view.insert("b");
+/// }
+/// Entry::Occupied(_) => unreachable!(),
+/// }
+/// assert!(table.find(hasher(&"b"), |&x| x == "b").is_some() && table.len() == 2);
+/// # }
+/// # fn main() {
+/// # #[cfg(feature = "nightly")]
+/// # test()
+/// # }
+/// ```
+pub struct VacantEntry<'a, T, A = Global>
+where
+ A: Allocator,
+{
+ hash: u64,
+ insert_slot: InsertSlot,
+ table: &'a mut HashTable<T, A>,
+}
+
+impl<T: fmt::Debug, A: Allocator> fmt::Debug for VacantEntry<'_, T, A> {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.write_str("VacantEntry")
+ }
+}
+
+impl<'a, T, A> VacantEntry<'a, T, A>
+where
+ A: Allocator,
+{
+ /// Inserts a new element into the table with the hash that was used to
+ /// obtain the `VacantEntry`.
+ ///
+ /// An `OccupiedEntry` is returned for the newly inserted element.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[cfg(feature = "nightly")]
+ /// # fn test() {
+ /// use ahash::AHasher;
+ /// use hashbrown::hash_table::Entry;
+ /// use hashbrown::HashTable;
+ /// use std::hash::{BuildHasher, BuildHasherDefault};
+ ///
+ /// let mut table: HashTable<&str> = HashTable::new();
+ /// let hasher = BuildHasherDefault::<AHasher>::default();
+ /// let hasher = |val: &_| hasher.hash_one(val);
+ ///
+ /// if let Entry::Vacant(o) = table.entry(hasher(&"poneyland"), |&x| x == "poneyland", hasher) {
+ /// o.insert("poneyland");
+ /// }
+ /// assert_eq!(
+ /// table.find(hasher(&"poneyland"), |&x| x == "poneyland"),
+ /// Some(&"poneyland")
+ /// );
+ /// # }
+ /// # fn main() {
+ /// # #[cfg(feature = "nightly")]
+ /// # test()
+ /// # }
+ /// ```
+ pub fn insert(self, value: T) -> OccupiedEntry<'a, T, A> {
+ let bucket = unsafe {
+ self.table
+ .raw
+ .insert_in_slot(self.hash, self.insert_slot, value)
+ };
+ OccupiedEntry {
+ hash: self.hash,
+ bucket,
+ table: self.table,
+ }
+ }
+
+ /// Converts the VacantEntry into a mutable reference to the underlying
+ /// table.
+ pub fn into_table(self) -> &'a mut HashTable<T, A> {
+ self.table
+ }
+}
+
+/// Type representing the absence of an entry, as returned by [`HashTable::find_entry`].
+///
+/// This type only exists due to [limitations] in Rust's NLL borrow checker. In
+/// the future, `find_entry` will return an `Option<OccupiedEntry>` and this
+/// type will be removed.
+///
+/// [limitations]: https://smallcultfollowing.com/babysteps/blog/2018/06/15/mir-based-borrow-check-nll-status-update/#polonius
+///
+/// # Examples
+///
+/// ```
+/// # #[cfg(feature = "nightly")]
+/// # fn test() {
+/// use ahash::AHasher;
+/// use hashbrown::hash_table::{AbsentEntry, Entry, HashTable};
+/// use std::hash::{BuildHasher, BuildHasherDefault};
+///
+/// let mut table: HashTable<&str> = HashTable::new();
+/// let hasher = BuildHasherDefault::<AHasher>::default();
+/// let hasher = |val: &_| hasher.hash_one(val);
+///
+/// let entry_v: AbsentEntry<_, _> = table.find_entry(hasher(&"a"), |&x| x == "a").unwrap_err();
+/// entry_v
+/// .into_table()
+/// .insert_unique(hasher(&"a"), "a", hasher);
+/// assert!(table.find(hasher(&"a"), |&x| x == "a").is_some() && table.len() == 1);
+///
+/// // Nonexistent key (insert)
+/// match table.entry(hasher(&"b"), |&x| x == "b", hasher) {
+/// Entry::Vacant(view) => {
+/// view.insert("b");
+/// }
+/// Entry::Occupied(_) => unreachable!(),
+/// }
+/// assert!(table.find(hasher(&"b"), |&x| x == "b").is_some() && table.len() == 2);
+/// # }
+/// # fn main() {
+/// # #[cfg(feature = "nightly")]
+/// # test()
+/// # }
+/// ```
+pub struct AbsentEntry<'a, T, A = Global>
+where
+ A: Allocator,
+{
+ table: &'a mut HashTable<T, A>,
+}
+
+impl<T: fmt::Debug, A: Allocator> fmt::Debug for AbsentEntry<'_, T, A> {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.write_str("AbsentEntry")
+ }
+}
+
+impl<'a, T, A> AbsentEntry<'a, T, A>
+where
+ A: Allocator,
+{
+ /// Converts the AbsentEntry into a mutable reference to the underlying
+ /// table.
+ pub fn into_table(self) -> &'a mut HashTable<T, A> {
+ self.table
+ }
+}
+
+/// An iterator over the entries of a `HashTable` in arbitrary order.
+/// The iterator element type is `&'a T`.
+///
+/// This `struct` is created by the [`iter`] method on [`HashTable`]. See its
+/// documentation for more.
+///
+/// [`iter`]: struct.HashTable.html#method.iter
+/// [`HashTable`]: struct.HashTable.html
+pub struct Iter<'a, T> {
+ inner: RawIter<T>,
+ marker: PhantomData<&'a T>,
+}
+
+impl<'a, T> Iterator for Iter<'a, T> {
+ type Item = &'a T;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ self.inner.next().map(|bucket| unsafe { bucket.as_ref() })
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ self.inner.size_hint()
+ }
+}
+
+impl<T> ExactSizeIterator for Iter<'_, T> {
+ fn len(&self) -> usize {
+ self.inner.len()
+ }
+}
+
+impl<T> FusedIterator for Iter<'_, T> {}
+
+/// A mutable iterator over the entries of a `HashTable` in arbitrary order.
+/// The iterator element type is `&'a mut T`.
+///
+/// This `struct` is created by the [`iter_mut`] method on [`HashTable`]. See its
+/// documentation for more.
+///
+/// [`iter_mut`]: struct.HashTable.html#method.iter_mut
+/// [`HashTable`]: struct.HashTable.html
+pub struct IterMut<'a, T> {
+ inner: RawIter<T>,
+ marker: PhantomData<&'a mut T>,
+}
+
+impl<'a, T> Iterator for IterMut<'a, T> {
+ type Item = &'a mut T;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ self.inner.next().map(|bucket| unsafe { bucket.as_mut() })
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ self.inner.size_hint()
+ }
+}
+
+impl<T> ExactSizeIterator for IterMut<'_, T> {
+ fn len(&self) -> usize {
+ self.inner.len()
+ }
+}
+
+impl<T> FusedIterator for IterMut<'_, T> {}
+
+/// An owning iterator over the entries of a `HashTable` in arbitrary order.
+/// The iterator element type is `T`.
+///
+/// This `struct` is created by the [`into_iter`] method on [`HashTable`]
+/// (provided by the [`IntoIterator`] trait). See its documentation for more.
+/// The table cannot be used after calling that method.
+///
+/// [`into_iter`]: struct.HashTable.html#method.into_iter
+/// [`HashTable`]: struct.HashTable.html
+/// [`IntoIterator`]: https://doc.rust-lang.org/core/iter/trait.IntoIterator.html
+pub struct IntoIter<T, A = Global>
+where
+ A: Allocator,
+{
+ inner: RawIntoIter<T, A>,
+}
+
+impl<T, A> Iterator for IntoIter<T, A>
+where
+ A: Allocator,
+{
+ type Item = T;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ self.inner.next()
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ self.inner.size_hint()
+ }
+}
+
+impl<T, A> ExactSizeIterator for IntoIter<T, A>
+where
+ A: Allocator,
+{
+ fn len(&self) -> usize {
+ self.inner.len()
+ }
+}
+
+impl<T, A> FusedIterator for IntoIter<T, A> where A: Allocator {}
+
+/// A draining iterator over the items of a `HashTable`.
+///
+/// This `struct` is created by the [`drain`] method on [`HashTable`].
+/// See its documentation for more.
+///
+/// [`HashTable`]: struct.HashTable.html
+/// [`drain`]: struct.HashTable.html#method.drain
+pub struct Drain<'a, T, A: Allocator = Global> {
+ inner: RawDrain<'a, T, A>,
+}
+
+impl<T, A: Allocator> Drain<'_, T, A> {
+ /// Returns a iterator of references over the remaining items.
+ fn iter(&self) -> Iter<'_, T> {
+ Iter {
+ inner: self.inner.iter(),
+ marker: PhantomData,
+ }
+ }
+}
+
+impl<T, A: Allocator> Iterator for Drain<'_, T, A> {
+ type Item = T;
+
+ fn next(&mut self) -> Option<T> {
+ self.inner.next()
+ }
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ self.inner.size_hint()
+ }
+}
+impl<T, A: Allocator> ExactSizeIterator for Drain<'_, T, A> {
+ fn len(&self) -> usize {
+ self.inner.len()
+ }
+}
+impl<T, A: Allocator> FusedIterator for Drain<'_, T, A> {}
+
+impl<T: fmt::Debug, A: Allocator> fmt::Debug for Drain<'_, T, A> {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.debug_list().entries(self.iter()).finish()
+ }
+}
+
+/// A draining iterator over entries of a `HashTable` which don't satisfy the predicate `f`.
+///
+/// This `struct` is created by [`HashTable::extract_if`]. See its
+/// documentation for more.
+#[must_use = "Iterators are lazy unless consumed"]
+pub struct ExtractIf<'a, T, F, A: Allocator = Global>
+where
+ F: FnMut(&mut T) -> bool,
+{
+ f: F,
+ inner: RawExtractIf<'a, T, A>,
+}
+
+impl<T, F, A: Allocator> Iterator for ExtractIf<'_, T, F, A>
+where
+ F: FnMut(&mut T) -> bool,
+{
+ type Item = T;
+
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ self.inner.next(|val| (self.f)(val))
+ }
+
+ #[inline]
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ (0, self.inner.iter.size_hint().1)
+ }
+}
+
+impl<T, F, A: Allocator> FusedIterator for ExtractIf<'_, T, F, A> where F: FnMut(&mut T) -> bool {}
diff --git a/vendor/icu_list/.cargo-checksum.json b/vendor/icu_list/.cargo-checksum.json
index d34fa5ecc..010046b4a 100644
--- a/vendor/icu_list/.cargo-checksum.json
+++ b/vendor/icu_list/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"cefda77167195f381333aefff397aa2429d8e473bca513b0b29695f398af9e14","Cargo.toml":"eef1bfb098c481a664c49b1e331e09fd254fc472815437894bf8d1f08014fe07","LICENSE":"4ad7541d66a407234e2c84902124cef325c29f3e966353efdb800bedb8b8da21","README.md":"33b424bdceea5edc4d3638592b007bf825e25a96e7fe9101a3ad04ea63637150","examples/and_list.rs":"76af2fbe31c6641a360726b201bfb043a35ee8dcf37b626640221fe889b194e4","src/error.rs":"74a114b135c2f972f6f9ad466b6c342dbd89de293aac7d89fbcd9d58c1aaa48e","src/lazy_automaton.rs":"eff2e95ae5c889908ba71480e73fc31d9cb2e793e9dc6dee8683c686e8ed8019","src/lib.rs":"d56881d78a298600f779986555d82b3d0be81c5472096e5fc3b80844b6389724","src/list_formatter.rs":"c7b1e2c6c49145cb62e6948dc60c384e46bba333a3a490c84360a1cd795965a2","src/patterns.rs":"3013aca1dd51d1b9a98e8573abac9116650635b2931157e9fb16ee10c8d3ab9c","src/provider/mod.rs":"47a7b749e27eb6d5de3b9afecd197f990748050d4bd615fb5f19ca5c56ce56ab","src/provider/serde_dfa.rs":"da5892495d21c2d94ec5ad87e441a3c573380b258a30f7d5fb501787edabd16c"},"package":"fd7ba7442d9235b689d4fdce17c452ea229934980fd81ba50cc28275752c9f90"} \ No newline at end of file
+{"files":{"Cargo.lock":"4d526af0224a1940225d6953e31dc4cbeb3a61b7e07ddd43aae3dd25c44a26ea","Cargo.toml":"3956d251209e7800028a6d29491c6220983a996509d22ac469dac58b72408e14","LICENSE":"853f87c96f3d249f200fec6db1114427bc8bdf4afddc93c576956d78152ce978","README.md":"68ac8ccdfb9befff038b4fa8d9f0a3032ddc2069dcfd1a50ed623a36c3af5de7","examples/and_list.rs":"40799ac894eccb241559e088bc43e8eaab5271fc81926b0ceb62e356fa71dd63","src/error.rs":"74a114b135c2f972f6f9ad466b6c342dbd89de293aac7d89fbcd9d58c1aaa48e","src/lazy_automaton.rs":"eff2e95ae5c889908ba71480e73fc31d9cb2e793e9dc6dee8683c686e8ed8019","src/lib.rs":"2fd774fb952fadb2dc15ba016607dc8ce73ba5142d25cbe6ecd235fe23d88cba","src/list_formatter.rs":"688b8fba31813e20741afef589bf9d65f0b9ff4135532ace39031d1cbdbcc18e","src/patterns.rs":"3013aca1dd51d1b9a98e8573abac9116650635b2931157e9fb16ee10c8d3ab9c","src/provider/mod.rs":"2ae163bae1446be16b8b504dd4e1c851af2c2f34cb734df19dece1a96c42ef93","src/provider/serde_dfa.rs":"87f0f233215ca9e4db23abd6a41902f7a296934f5a4a17ba1d67f8a5da79b44f"},"package":"dc1a44bbed77a7e7b555f9d7dd4b43f75ec1402b438a901d20451943d50cbd90"} \ No newline at end of file
diff --git a/vendor/icu_list/Cargo.lock b/vendor/icu_list/Cargo.lock
index 17f698f32..42cbb27b8 100644
--- a/vendor/icu_list/Cargo.lock
+++ b/vendor/icu_list/Cargo.lock
@@ -10,9 +10,9 @@ checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15"
[[package]]
name = "databake"
-version = "0.1.4"
+version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3feab871d671ecc2e912e83e3a64b9b3343a224c86b999334c4c99b07cf07f52"
+checksum = "959b676312ba1aaafb2219c475560082e6b20c3bc572ec1483f93cecd748cf3d"
dependencies = [
"databake-derive",
"proc-macro2",
@@ -22,9 +22,9 @@ dependencies = [
[[package]]
name = "databake-derive"
-version = "0.1.4"
+version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8b3072996668063c5fe00fcef85ee766fc01113f2fdd5e8a31d5ebae260c091"
+checksum = "5f0694dfe255f1af0289d3d1b40787bb955e8603d96e96a6b14b225926e108fb"
dependencies = [
"proc-macro2",
"quote",
@@ -34,18 +34,18 @@ dependencies = [
[[package]]
name = "deduplicating_array"
-version = "0.1.4"
+version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b5426e8a7610ceca8b2f2c40a25ddd4476606c96a0c1e3524fdfdbeb64c1331"
+checksum = "a636096586ca093a10ac0175bfb384d024089dca0dae54e3e69bc1c1596358e8"
dependencies = [
"serde",
]
[[package]]
name = "displaydoc"
-version = "0.2.3"
+version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886"
+checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
dependencies = [
"proc-macro2",
"quote",
@@ -54,11 +54,13 @@ dependencies = [
[[package]]
name = "icu_list"
-version = "1.2.0"
+version = "1.3.2"
dependencies = [
"databake",
"deduplicating_array",
"displaydoc",
+ "icu_list_data",
+ "icu_locid_transform",
"icu_provider",
"postcard",
"regex-automata",
@@ -68,28 +70,56 @@ dependencies = [
]
[[package]]
+name = "icu_list_data"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3237583f0cb7feafabb567c4492fe9ef1d2d4113f6a8798a923273ea5de996d"
+
+[[package]]
name = "icu_locid"
-version = "1.2.0"
+version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3003f85dccfc0e238ff567693248c59153a46f4e6125ba4020b973cef4d1d335"
+checksum = "f284eb342dc49d3e9d9f3b188489d76b5d22dfb1d1a5e0d1941811253bac625c"
dependencies = [
"displaydoc",
"litemap",
"tinystr",
"writeable",
+ "zerovec",
]
[[package]]
+name = "icu_locid_transform"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6551daf80882d8e68eee186cc19e132d8bde1b1f059a79b93384a5ca0e8fc5e7"
+dependencies = [
+ "displaydoc",
+ "icu_locid",
+ "icu_locid_transform_data",
+ "icu_provider",
+ "tinystr",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locid_transform_data"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a741eba5431f75eb2f1f9022d3cffabcadda6771e54fb4e77c8ba8653e4da44"
+
+[[package]]
name = "icu_provider"
-version = "1.2.0"
+version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8dc312a7b6148f7dfe098047ae2494d12d4034f48ade58d4f353000db376e305"
+checksum = "68acdef80034b5e35d8524e9817479d389a4f9774f3f0cbe1bf3884d80fd5934"
dependencies = [
"displaydoc",
"icu_locid",
"icu_provider_macros",
"serde",
"stable_deref_trait",
+ "tinystr",
"writeable",
"yoke",
"zerofrom",
@@ -98,9 +128,9 @@ dependencies = [
[[package]]
name = "icu_provider_macros"
-version = "1.2.0"
+version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd8b728b9421e93eff1d9f8681101b78fa745e0748c95c655c83f337044a7e10"
+checksum = "2060258edfcfe32ca7058849bf0f146cb5c59aadbedf480333c0d0002f97bc99"
dependencies = [
"proc-macro2",
"quote",
@@ -109,27 +139,27 @@ dependencies = [
[[package]]
name = "itoa"
-version = "1.0.6"
+version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
+checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
[[package]]
name = "litemap"
-version = "0.7.0"
+version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a04a5b2b6f54acba899926491d0a6c59d98012938ca2ab5befb281c034e8f94"
+checksum = "77a1a2647d5b7134127971a6de0d533c49de2159167e7f259c427195f87168a1"
[[package]]
name = "memchr"
-version = "2.5.0"
+version = "2.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c"
[[package]]
name = "postcard"
-version = "1.0.4"
+version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cfa512cd0d087cc9f99ad30a1bf64795b67871edbead083ffc3a4dfafa59aa00"
+checksum = "d534c6e61df1c7166e636ca612d9820d486fe96ddad37f7abc671517b297488e"
dependencies = [
"cobs",
"serde",
@@ -137,18 +167,18 @@ dependencies = [
[[package]]
name = "proc-macro2"
-version = "1.0.56"
+version = "1.0.67"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435"
+checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
-version = "1.0.26"
+version = "1.0.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
+checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
dependencies = [
"proc-macro2",
]
@@ -171,24 +201,24 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
[[package]]
name = "ryu"
-version = "1.0.13"
+version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
+checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
[[package]]
name = "serde"
-version = "1.0.156"
+version = "1.0.188"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "314b5b092c0ade17c00142951e50ced110ec27cea304b1037c6969246c2469a4"
+checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.156"
+version = "1.0.188"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d7e29c4601e36bcec74a223228dce795f4cd3616341a4af93520ca1a837c087d"
+checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
dependencies = [
"proc-macro2",
"quote",
@@ -197,9 +227,9 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.96"
+version = "1.0.107"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1"
+checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65"
dependencies = [
"itoa",
"ryu",
@@ -214,9 +244,9 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
[[package]]
name = "syn"
-version = "1.0.109"
+version = "2.0.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8"
dependencies = [
"proc-macro2",
"quote",
@@ -225,9 +255,9 @@ dependencies = [
[[package]]
name = "synstructure"
-version = "0.12.6"
+version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
+checksum = "285ba80e733fac80aa4270fbcdf83772a79b80aa35c97075320abfee4a915b06"
dependencies = [
"proc-macro2",
"quote",
@@ -237,18 +267,19 @@ dependencies = [
[[package]]
name = "tinystr"
-version = "0.7.1"
+version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ac3f5b6856e931e15e07b478e98c8045239829a65f9156d4fa7e7788197a5ef"
+checksum = "d5d0e245e80bdc9b4e5356fc45a72184abbc3861992603f515270e9340f5a219"
dependencies = [
"displaydoc",
+ "zerovec",
]
[[package]]
name = "unicode-ident"
-version = "1.0.8"
+version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
[[package]]
name = "unicode-xid"
@@ -258,15 +289,15 @@ checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
[[package]]
name = "writeable"
-version = "0.5.2"
+version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60e49e42bdb1d5dc76f4cd78102f8f0714d32edfa3efb82286eb0f0b1fc0da0f"
+checksum = "c0af0c3d13faebf8dda0b5256fa7096a2d5ccb662f7b9f54a40fe201077ab1c2"
[[package]]
name = "yoke"
-version = "0.7.1"
+version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1848075a23a28f9773498ee9a0f2cf58fcbad4f8c0ccf84a210ab33c6ae495de"
+checksum = "61e38c508604d6bbbd292dadb3c02559aa7fff6b654a078a36217cad871636e4"
dependencies = [
"serde",
"stable_deref_trait",
@@ -276,9 +307,9 @@ dependencies = [
[[package]]
name = "yoke-derive"
-version = "0.7.1"
+version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af46c169923ed7516eef0aa32b56d2651b229f57458ebe46b49ddd6efef5b7a2"
+checksum = "d5e19fb6ed40002bab5403ffa37e53e0e56f914a4450c8765f533018db1db35f"
dependencies = [
"proc-macro2",
"quote",
@@ -288,18 +319,18 @@ dependencies = [
[[package]]
name = "zerofrom"
-version = "0.1.2"
+version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df54d76c3251de27615dfcce21e636c172dafb2549cd7fd93e21c66f6ca6bea2"
+checksum = "655b0814c5c0b19ade497851070c640773304939a6c0fd5f5fb43da0696d05b7"
dependencies = [
"zerofrom-derive",
]
[[package]]
name = "zerofrom-derive"
-version = "0.1.2"
+version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4eae7c1f7d4b8eafce526bc0771449ddc2f250881ae31c50d22c032b5a1c499"
+checksum = "e6a647510471d372f2e6c2e6b7219e44d8c574d24fdc11c610a61455782f18c3"
dependencies = [
"proc-macro2",
"quote",
@@ -309,22 +340,22 @@ dependencies = [
[[package]]
name = "zerovec"
-version = "0.9.4"
+version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "198f54134cd865f437820aa3b43d0ad518af4e68ee161b444cdd15d8e567c8ea"
+checksum = "1194130c5b155bf8ae50ab16c86ab758cd695cf9ad176d2f870b744cbdbb572e"
dependencies = [
+ "yoke",
"zerofrom",
"zerovec-derive",
]
[[package]]
name = "zerovec-derive"
-version = "0.9.4"
+version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "486558732d5dde10d0f8cb2936507c1bb21bc539d924c949baf5f36a58e51bac"
+checksum = "acabf549809064225ff8878baedc4ce3732ac3b07e7c7ce6e5c2ccdbc485c324"
dependencies = [
"proc-macro2",
"quote",
"syn",
- "synstructure",
]
diff --git a/vendor/icu_list/Cargo.toml b/vendor/icu_list/Cargo.toml
index 0374bf280..548a48a63 100644
--- a/vendor/icu_list/Cargo.toml
+++ b/vendor/icu_list/Cargo.toml
@@ -11,49 +11,56 @@
[package]
edition = "2021"
+rust-version = "1.66"
name = "icu_list"
-version = "1.2.0"
+version = "1.3.2"
authors = ["The ICU4X Project Developers"]
-include = [
- "src/**/*",
- "examples/**/*",
- "benches/**/*",
- "tests/**/*",
- "Cargo.toml",
- "LICENSE",
- "README.md",
-]
description = "ECMA-402 ListFormatter"
+homepage = "https://icu4x.unicode.org"
readme = "README.md"
categories = ["internationalization"]
-license = "Unicode-DFS-2016"
+license-file = "LICENSE"
repository = "https://github.com/unicode-org/icu4x"
-[package.metadata.docs.rs]
-all-features = true
-
[package.metadata.cargo-all-features]
denylist = ["bench"]
+[package.metadata.docs.rs]
+all-features = true
+
[[example]]
name = "and_list"
[dependencies.databake]
-version = "0.1.3"
+version = "0.1.6"
features = ["derive"]
optional = true
+default-features = false
[dependencies.deduplicating_array]
-version = "0.1.3"
+version = "0.1.5"
optional = true
+default-features = false
[dependencies.displaydoc]
version = "0.2.3"
default-features = false
+[dependencies.icu_list_data]
+version = "~1.3.2"
+optional = true
+default-features = false
+
+[dependencies.icu_locid_transform]
+version = "~1.3.2"
+features = ["compiled_data"]
+optional = true
+default-features = false
+
[dependencies.icu_provider]
-version = "1.2.0"
+version = "~1.3.2"
features = ["macros"]
+default-features = false
[dependencies.regex-automata]
version = "0.2"
@@ -69,7 +76,8 @@ optional = true
default-features = false
[dependencies.writeable]
-version = "0.5.1"
+version = "0.5.3"
+default-features = false
[dev-dependencies.postcard]
version = "1.0.0"
@@ -81,12 +89,17 @@ version = "1"
[features]
bench = []
+compiled_data = [
+ "dep:icu_list_data",
+ "dep:icu_locid_transform",
+]
datagen = [
"serde",
"std",
"dep:databake",
"regex-automata/alloc",
]
+default = ["compiled_data"]
serde = [
"dep:deduplicating_array",
"dep:serde",
diff --git a/vendor/icu_list/LICENSE b/vendor/icu_list/LICENSE
index 9858d01ab..9845aa5f4 100644
--- a/vendor/icu_list/LICENSE
+++ b/vendor/icu_list/LICENSE
@@ -1,49 +1,42 @@
-UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
-
-See Terms of Use <https://www.unicode.org/copyright.html>
-for definitions of Unicode Inc.’s Data Files and Software.
-
-NOTICE TO USER: Carefully read the following legal agreement.
-BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
-DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
-YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
-TERMS AND CONDITIONS OF THIS AGREEMENT.
-IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
-THE DATA FILES OR SOFTWARE.
+UNICODE LICENSE V3
COPYRIGHT AND PERMISSION NOTICE
-Copyright © 1991-2022 Unicode, Inc. All rights reserved.
-Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Unicode data files and any associated documentation
-(the "Data Files") or Unicode software and any associated documentation
-(the "Software") to deal in the Data Files or Software
-without restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, and/or sell copies of
-the Data Files or Software, and to permit persons to whom the Data Files
-or Software are furnished to do so, provided that either
-(a) this copyright and permission notice appear with all copies
-of the Data Files or Software, or
-(b) this copyright and permission notice appear in associated
-Documentation.
-
-THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
-NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
-DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THE DATA FILES OR SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale,
-use or other dealings in these Data Files or Software without prior
-written authorization of the copyright holder.
+Copyright © 2020-2023 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
—
diff --git a/vendor/icu_list/README.md b/vendor/icu_list/README.md
index d17e8a8d7..a0b4680f2 100644
--- a/vendor/icu_list/README.md
+++ b/vendor/icu_list/README.md
@@ -1,5 +1,7 @@
# icu_list [![crates.io](https://img.shields.io/crates/v/icu_list)](https://crates.io/crates/icu_list)
+<!-- cargo-rdme start -->
+
Formatting lists in a locale-sensitive way.
This module is published as its own crate ([`icu_list`](https://docs.rs/icu_list/latest/icu_list/))
@@ -10,13 +12,11 @@ and as part of the [`icu`](https://docs.rs/icu/latest/icu/) crate. See the latte
### Formatting *and* lists in Spanish
```rust
-#
-let list_formatter = ListFormatter::try_new_and_with_length_unstable(
- &icu_testdata::unstable(),
+let list_formatter = ListFormatter::try_new_and_with_length(
&locale!("es").into(),
ListLength::Wide,
)
-.expect("Data should load successfully");
+.expect("locale should be present");
assert_writeable_eq!(
list_formatter.format(["España", "Suiza"].iter()),
@@ -33,13 +33,11 @@ assert_writeable_eq!(
### Formatting *or* lists in Thai
```rust
-#
-let list_formatter = ListFormatter::try_new_or_with_length_unstable(
- &icu_testdata::unstable(),
+let list_formatter = ListFormatter::try_new_or_with_length(
&locale!("th").into(),
ListLength::Short,
)
-.expect("Data should load successfully");
+.expect("locale should be present");
// We can use any Writeables as inputs
assert_writeable_eq!(list_formatter.format(1..=3), "1, 2 หรือ 3",);
@@ -48,13 +46,11 @@ assert_writeable_eq!(list_formatter.format(1..=3), "1, 2 หรือ 3",);
### Formatting unit lists in English
```rust
-#
-let list_formatter = ListFormatter::try_new_unit_with_length_unstable(
- &icu_testdata::unstable(),
+let list_formatter = ListFormatter::try_new_unit_with_length(
&locale!("en").into(),
ListLength::Wide,
)
-.expect("Data should load successfully");
+.expect("locale should be present");
assert_writeable_eq!(
list_formatter.format(["1ft", "2in"].iter()),
@@ -64,6 +60,8 @@ assert_writeable_eq!(
Note: this last example is not fully internationalized. See [icu4x/2192](https://github.com/unicode-org/icu4x/issues/2192)
for full unit handling.
+<!-- cargo-rdme end -->
+
## More Information
For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/icu_list/examples/and_list.rs b/vendor/icu_list/examples/and_list.rs
index 08cfa3bda..355dda98e 100644
--- a/vendor/icu_list/examples/and_list.rs
+++ b/vendor/icu_list/examples/and_list.rs
@@ -13,12 +13,8 @@ use icu::locid::locale;
fn main(_argc: isize, _argv: *const *const u8) -> isize {
icu_benchmark_macros::main_setup!();
- let list_formatter = ListFormatter::try_new_and_with_length_unstable(
- &icu_testdata::unstable(),
- &locale!("es").into(),
- ListLength::Wide,
- )
- .unwrap();
+ let list_formatter =
+ ListFormatter::try_new_and_with_length(&locale!("es").into(), ListLength::Wide).unwrap();
println!(
"{}",
diff --git a/vendor/icu_list/src/lib.rs b/vendor/icu_list/src/lib.rs
index 9412a7fb9..931caf111 100644
--- a/vendor/icu_list/src/lib.rs
+++ b/vendor/icu_list/src/lib.rs
@@ -16,12 +16,11 @@
//! # use icu::locid::locale;
//! # use writeable::*;
//! #
-//! let list_formatter = ListFormatter::try_new_and_with_length_unstable(
-//! &icu_testdata::unstable(),
+//! let list_formatter = ListFormatter::try_new_and_with_length(
//! &locale!("es").into(),
//! ListLength::Wide,
//! )
-//! .expect("Data should load successfully");
+//! .expect("locale should be present");
//!
//! assert_writeable_eq!(
//! list_formatter.format(["España", "Suiza"].iter()),
@@ -42,12 +41,11 @@
//! # use icu::locid::locale;
//! # use writeable::*;
//! #
-//! let list_formatter = ListFormatter::try_new_or_with_length_unstable(
-//! &icu_testdata::unstable(),
+//! let list_formatter = ListFormatter::try_new_or_with_length(
//! &locale!("th").into(),
//! ListLength::Short,
//! )
-//! .expect("Data should load successfully");
+//! .expect("locale should be present");
//!
//! // We can use any Writeables as inputs
//! assert_writeable_eq!(list_formatter.format(1..=3), "1, 2 หรือ 3",);
@@ -60,12 +58,11 @@
//! # use icu::locid::locale;
//! # use writeable::*;
//! #
-//! let list_formatter = ListFormatter::try_new_unit_with_length_unstable(
-//! &icu_testdata::unstable(),
+//! let list_formatter = ListFormatter::try_new_unit_with_length(
//! &locale!("en").into(),
//! ListLength::Wide,
//! )
-//! .expect("Data should load successfully");
+//! .expect("locale should be present");
//!
//! assert_writeable_eq!(
//! list_formatter.format(["1ft", "2in"].iter()),
diff --git a/vendor/icu_list/src/list_formatter.rs b/vendor/icu_list/src/list_formatter.rs
index 5ef67c324..5ed635c2c 100644
--- a/vendor/icu_list/src/list_formatter.rs
+++ b/vendor/icu_list/src/list_formatter.rs
@@ -21,17 +21,35 @@ pub struct ListFormatter {
}
macro_rules! constructor {
- ($name: ident, $name_any: ident, $name_buffer: ident, $marker: ty, $doc: literal) => {
- #[doc = concat!("Creates a new [`ListFormatter`] that produces a ", $doc, "-type list.\n\nSee the [CLDR spec]",
- "(https://unicode.org/reports/tr35/tr35-general.html#ListPatterns) for an explanation of the different types.\n\n",
- "[📚 Help choosing a constructor](icu_provider::constructors)\n\n",
- "<div class=\"stab unstable\">âš ï¸ The bounds on this function may change over time, including in SemVer minor releases.</div>")]
- pub fn $name<D: DataProvider<$marker> + ?Sized>(
- data_provider: &D,
+ ($name: ident, $name_any: ident, $name_buffer: ident, $name_unstable: ident, $marker: ty, $doc: literal) => {
+ icu_provider::gen_any_buffer_data_constructors!(
+ locale: include,
+ style: ListLength,
+ error: ListError,
+ #[doc = concat!("Creates a new [`ListFormatter`] that produces a ", $doc, "-type list using compiled data.")]
+ ///
+ /// See the [CLDR spec](https://unicode.org/reports/tr35/tr35-general.html#ListPatterns) for
+ /// an explanation of the different types.
+ ///
+ /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+ ///
+ /// [📚 Help choosing a constructor](icu_provider::constructors)
+ functions: [
+ $name,
+ $name_any,
+ $name_buffer,
+ $name_unstable,
+ Self
+ ]
+ );
+
+ #[doc = icu_provider::gen_any_buffer_unstable_docs!(UNSTABLE, Self::$name)]
+ pub fn $name_unstable(
+ provider: &(impl DataProvider<$marker> + ?Sized),
locale: &DataLocale,
length: ListLength,
) -> Result<Self, ListError> {
- let data = data_provider
+ let data = provider
.load(DataRequest {
locale,
metadata: Default::default(),
@@ -39,38 +57,31 @@ macro_rules! constructor {
.take_payload()?.cast();
Ok(Self { data, length })
}
- icu_provider::gen_any_buffer_constructors!(
- locale: include,
- style: ListLength,
- error: ListError,
- functions: [
- Self::$name,
- $name_any,
- $name_buffer
- ]
- );
};
}
impl ListFormatter {
constructor!(
- try_new_and_with_length_unstable,
+ try_new_and_with_length,
try_new_and_with_length_with_any_provider,
try_new_and_with_length_with_buffer_provider,
+ try_new_and_with_length_unstable,
AndListV1Marker,
"and"
);
constructor!(
- try_new_or_with_length_unstable,
+ try_new_or_with_length,
try_new_or_with_length_with_any_provider,
try_new_or_with_length_with_buffer_provider,
+ try_new_or_with_length_unstable,
OrListV1Marker,
"or"
);
constructor!(
- try_new_unit_with_length_unstable,
+ try_new_unit_with_length,
try_new_unit_with_length_with_any_provider,
try_new_unit_with_length_with_buffer_provider,
+ try_new_unit_with_length_unstable,
UnitListV1Marker,
"unit"
);
@@ -87,8 +98,7 @@ impl ListFormatter {
/// use icu::list::*;
/// # use icu::locid::locale;
/// # use writeable::*;
- /// let formatteur = ListFormatter::try_new_and_with_length_unstable(
- /// &icu_testdata::unstable(),
+ /// let formatteur = ListFormatter::try_new_and_with_length(
/// &locale!("fr").into(),
/// ListLength::Wide,
/// )
@@ -358,4 +368,68 @@ mod tests {
assert_writeable_eq!(formatter.format(["Beta", "Alpha"].iter()), "Beta :o Alpha");
}
+
+ macro_rules! test {
+ ($locale:literal, $type:ident, $(($input:expr, $output:literal),)+) => {
+ let f = ListFormatter::$type(
+ &icu::locid::locale!($locale).into(),
+ ListLength::Wide
+ ).unwrap();
+ $(
+ assert_writeable_eq!(f.format($input.iter()), $output);
+ )+
+ };
+ }
+
+ #[test]
+ fn test_basic() {
+ test!("fr", try_new_or_with_length, (["A", "B"], "A ou B"),);
+ }
+
+ #[test]
+ fn test_spanish() {
+ test!(
+ "es",
+ try_new_and_with_length,
+ (["x", "Mallorca"], "x y Mallorca"),
+ (["x", "Ibiza"], "x e Ibiza"),
+ (["x", "Hidalgo"], "x e Hidalgo"),
+ (["x", "Hierva"], "x y Hierva"),
+ );
+
+ test!(
+ "es",
+ try_new_or_with_length,
+ (["x", "Ibiza"], "x o Ibiza"),
+ (["x", "Okinawa"], "x u Okinawa"),
+ (["x", "8 más"], "x u 8 más"),
+ (["x", "8"], "x u 8"),
+ (["x", "87 más"], "x u 87 más"),
+ (["x", "87"], "x u 87"),
+ (["x", "11 más"], "x u 11 más"),
+ (["x", "11"], "x u 11"),
+ (["x", "110 más"], "x o 110 más"),
+ (["x", "110"], "x o 110"),
+ (["x", "11.000 más"], "x u 11.000 más"),
+ (["x", "11.000"], "x u 11.000"),
+ (["x", "11.000,92 más"], "x u 11.000,92 más"),
+ (["x", "11.000,92"], "x u 11.000,92"),
+ );
+
+ test!(
+ "es-AR",
+ try_new_and_with_length,
+ (["x", "Ibiza"], "x e Ibiza"),
+ );
+ }
+
+ #[test]
+ fn test_hebrew() {
+ test!(
+ "he",
+ try_new_and_with_length,
+ (["x", "יפו"], "x ויפו"),
+ (["x", "Ibiza"], "x ו‑Ibiza"),
+ );
+ }
}
diff --git a/vendor/icu_list/src/provider/mod.rs b/vendor/icu_list/src/provider/mod.rs
index 8438e956c..000234399 100644
--- a/vendor/icu_list/src/provider/mod.rs
+++ b/vendor/icu_list/src/provider/mod.rs
@@ -23,6 +23,29 @@ use icu_provider::DataMarker;
mod serde_dfa;
pub use serde_dfa::SerdeDFA;
+#[cfg(feature = "compiled_data")]
+#[derive(Debug)]
+/// Baked data
+///
+/// <div class="stab unstable">
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. In particular, the `DataProvider` implementations are only
+/// guaranteed to match with this version's `*_unstable` providers. Use with caution.
+/// </div>
+pub struct Baked;
+
+#[cfg(feature = "compiled_data")]
+const _: () = {
+ pub mod icu {
+ pub use crate as list;
+ pub use icu_locid_transform as locid_transform;
+ }
+ icu_list_data::make_provider!(Baked);
+ icu_list_data::impl_list_and_v1!(Baked);
+ icu_list_data::impl_list_or_v1!(Baked);
+ icu_list_data::impl_list_unit_v1!(Baked);
+};
+
/// Symbols and metadata required for [`ListFormatter`](crate::ListFormatter).
///
/// <div class="stab unstable">
@@ -35,7 +58,7 @@ pub use serde_dfa::SerdeDFA;
OrListV1Marker = "list/or@1",
UnitListV1Marker = "list/unit@1"
)]
-#[derive(Clone, Debug)]
+#[derive(Clone, Debug, PartialEq)]
#[cfg_attr(
feature = "datagen",
derive(serde::Serialize, databake::Bake),
@@ -103,10 +126,10 @@ impl<'data> ListFormatterPatternsV1<'data> {
/// including in SemVer minor releases. While the serde representation of data structs is guaranteed
/// to be stable, their Rust representation might not be. Use with caution.
/// </div>
-#[derive(Clone, Debug, yoke::Yokeable, zerofrom::ZeroFrom)]
+#[derive(Clone, Debug, PartialEq, yoke::Yokeable, zerofrom::ZeroFrom)]
#[cfg_attr(
feature = "datagen",
- derive(PartialEq, serde::Serialize, databake::Bake),
+ derive(serde::Serialize, databake::Bake),
databake(path = icu_list::provider),
)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
@@ -129,10 +152,10 @@ pub struct ConditionalListJoinerPattern<'data> {
/// including in SemVer minor releases. While the serde representation of data structs is guaranteed
/// to be stable, their Rust representation might not be. Use with caution.
/// </div>
-#[derive(Clone, Debug, yoke::Yokeable, zerofrom::ZeroFrom)]
+#[derive(Clone, Debug, PartialEq, yoke::Yokeable, zerofrom::ZeroFrom)]
#[cfg_attr(
feature = "datagen",
- derive(PartialEq, serde::Serialize, databake::Bake),
+ derive(serde::Serialize, databake::Bake),
databake(path = icu_list::provider),
)]
pub struct SpecialCasePattern<'data> {
@@ -245,7 +268,7 @@ impl databake::Bake for ListJoinerPattern<'_> {
let string = (&*self.string).bake(env);
let index_1 = self.index_1.bake(env);
databake::quote! {
- ::icu_list::provider::ListJoinerPattern::from_parts(#string, #index_1)
+ icu_list::provider::ListJoinerPattern::from_parts(#string, #index_1)
}
}
}
diff --git a/vendor/icu_list/src/provider/serde_dfa.rs b/vendor/icu_list/src/provider/serde_dfa.rs
index 9be85fb18..4cde60d46 100644
--- a/vendor/icu_list/src/provider/serde_dfa.rs
+++ b/vendor/icu_list/src/provider/serde_dfa.rs
@@ -22,7 +22,6 @@ pub struct SerdeDFA<'data> {
pattern: Option<Cow<'data, str>>,
}
-#[cfg(feature = "datagen")]
impl PartialEq for SerdeDFA<'_> {
fn eq(&self, other: &Self) -> bool {
self.dfa_bytes == other.dfa_bytes
@@ -38,7 +37,7 @@ impl databake::Bake for SerdeDFA<'_> {
// Safe because of `to_bytes_little_endian`/`to_bytes_big_endian`'s invariant.
databake::quote! {
unsafe {
- ::icu_list::provider::SerdeDFA::from_dfa_bytes_unchecked(
+ icu_list::provider::SerdeDFA::from_dfa_bytes_unchecked(
if cfg!(target_endian = "little") {
#le_bytes
} else {
diff --git a/vendor/icu_list_data/.cargo-checksum.json b/vendor/icu_list_data/.cargo-checksum.json
new file mode 100644
index 000000000..ef6cb677d
--- /dev/null
+++ b/vendor/icu_list_data/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"0b627eaa59c6446fe690034b6345e6c7a993fd8c559a42dd95e9ed66ea848dd0","LICENSE":"853f87c96f3d249f200fec6db1114427bc8bdf4afddc93c576956d78152ce978","README.md":"35c04021ba634c15b9e076681f06ed75bef0ac8dff1213c9dfbc50418a0efa99","data/any.rs":"20e2615f32f50679782f5a6168dbf770cb3105b625016b2240c0520ffe3bd6e7","data/macros.rs":"5822478d40e10a4af411d595adedbe51765f8c50f2483f53bd86fd89dceb8aff","data/macros/list_and_v1.data.rs":"5f19a3fafc767da2a9396057f5b9e68e121543dcbe2511323e54046b4b25b155","data/macros/list_or_v1.data.rs":"7c28e55d4003ae809316407a11aa1b4cde5d608f20cb8c081e4c3a210807a94e","data/macros/list_unit_v1.data.rs":"97dae78b7344e2e95917d75de8c9511223b5987f9fc2870b35d989b661a8444d","data/mod.rs":"3c792b7d86acca81c30348af137943d2400dbc896d8b8b9e57c38b4c0c2473c9","src/lib.rs":"2561f5be89f545fb8ccbdd8214762a87ad24e4d505dc9010b422f2a5b6ee8595"},"package":"d3237583f0cb7feafabb567c4492fe9ef1d2d4113f6a8798a923273ea5de996d"} \ No newline at end of file
diff --git a/vendor/icu_list_data/Cargo.toml b/vendor/icu_list_data/Cargo.toml
new file mode 100644
index 000000000..dcc1173a8
--- /dev/null
+++ b/vendor/icu_list_data/Cargo.toml
@@ -0,0 +1,33 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.66"
+name = "icu_list_data"
+version = "1.3.2"
+authors = ["The ICU4X Project Developers"]
+include = [
+ "data/**/*",
+ "src/**/*",
+ "examples/**/*",
+ "benches/**/*",
+ "tests/**/*",
+ "Cargo.toml",
+ "LICENSE",
+ "README.md",
+]
+description = "Data for the icu_list crate"
+homepage = "https://icu4x.unicode.org"
+readme = "README.md"
+categories = ["internationalization"]
+license-file = "LICENSE"
+repository = "https://github.com/unicode-org/icu4x"
diff --git a/vendor/icu_list_data/LICENSE b/vendor/icu_list_data/LICENSE
new file mode 100644
index 000000000..9845aa5f4
--- /dev/null
+++ b/vendor/icu_list_data/LICENSE
@@ -0,0 +1,44 @@
+UNICODE LICENSE V3
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 2020-2023 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+—
+
+Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
+ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.
diff --git a/vendor/icu_list_data/README.md b/vendor/icu_list_data/README.md
new file mode 100644
index 000000000..ebea539af
--- /dev/null
+++ b/vendor/icu_list_data/README.md
@@ -0,0 +1,11 @@
+# icu_list_data [![crates.io](https://img.shields.io/crates/v/icu_list_data)](https://crates.io/crates/icu_list_data)
+
+<!-- cargo-rdme start -->
+
+Data for the icu_list crate
+
+<!-- cargo-rdme end -->
+
+## More Information
+
+For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/icu_list_data/data/any.rs b/vendor/icu_list_data/data/any.rs
new file mode 100644
index 000000000..230288766
--- /dev/null
+++ b/vendor/icu_list_data/data/any.rs
@@ -0,0 +1,2 @@
+// @generated
+impl_any_provider!(BakedDataProvider);
diff --git a/vendor/icu_list_data/data/macros.rs b/vendor/icu_list_data/data/macros.rs
new file mode 100644
index 000000000..c263dfca8
--- /dev/null
+++ b/vendor/icu_list_data/data/macros.rs
@@ -0,0 +1,41 @@
+// @generated
+/// Marks a type as a data provider. You can then use macros like
+/// `impl_core_helloworld_v1` to add implementations.
+///
+/// ```ignore
+/// struct MyProvider;
+/// const _: () = {
+/// include!("path/to/generated/macros.rs");
+/// make_provider!(MyProvider);
+/// impl_core_helloworld_v1!(MyProvider);
+/// }
+/// ```
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __make_provider {
+ ($ name : ty) => {
+ #[clippy::msrv = "1.66"]
+ impl $name {
+ #[doc(hidden)]
+ #[allow(dead_code)]
+ pub const MUST_USE_MAKE_PROVIDER_MACRO: () = ();
+ }
+ };
+}
+#[doc(inline)]
+pub use __make_provider as make_provider;
+#[macro_use]
+#[path = "macros/list_and_v1.data.rs"]
+mod list_and_v1;
+#[doc(inline)]
+pub use __impl_list_and_v1 as impl_list_and_v1;
+#[macro_use]
+#[path = "macros/list_or_v1.data.rs"]
+mod list_or_v1;
+#[doc(inline)]
+pub use __impl_list_or_v1 as impl_list_or_v1;
+#[macro_use]
+#[path = "macros/list_unit_v1.data.rs"]
+mod list_unit_v1;
+#[doc(inline)]
+pub use __impl_list_unit_v1 as impl_list_unit_v1;
diff --git a/vendor/icu_list_data/data/macros/list_and_v1.data.rs b/vendor/icu_list_data/data/macros/list_and_v1.data.rs
new file mode 100644
index 000000000..f4677ad28
--- /dev/null
+++ b/vendor/icu_list_data/data/macros/list_and_v1.data.rs
@@ -0,0 +1,140 @@
+// @generated
+/// Implement `DataProvider<AndListV1Marker>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_list_and_v1 {
+ ($ provider : ty) => {
+ #[clippy::msrv = "1.66"]
+ const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+ #[clippy::msrv = "1.66"]
+ impl icu_provider::DataProvider<icu::list::provider::AndListV1Marker> for $provider {
+ fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::list::provider::AndListV1Marker>, icu_provider::DataError> {
+ static TH: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" à¹à¸¥à¸°", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("à¹à¸¥à¸°", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" à¹à¸¥à¸°", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("à¹à¸¥à¸°", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" à¹à¸¥à¸°", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("à¹à¸¥à¸°", 9u8), special_case: None }]);
+ static MY: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" - ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" - ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("န\u{103e}င\u{1037}\u{103a} ", 16u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("န\u{103e}င\u{1037}\u{103a} ", 16u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" - ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" - ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("န\u{103e}င\u{1037}\u{103a} ", 16u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("န\u{103e}င\u{1037}\u{103a} ", 16u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" - ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" - ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("န\u{103e}င\u{1037}\u{103a} ", 16u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("န\u{103e}င\u{1037}\u{103a} ", 16u8), special_case: None }]);
+ static TO: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" mo ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" mo ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" mo ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" mo ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" mo ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" mo ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" mo ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" mo ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" mo ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" mo ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" mo ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" mo ", 4u8), special_case: None }]);
+ static AR: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ùˆ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ùˆ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ùˆ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ùˆ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ùˆ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ùˆ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ùˆ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ùˆ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ùˆ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ùˆ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ùˆ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ùˆ", 3u8), special_case: None }]);
+ static DSB: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a ", 3u8), special_case: None }]);
+ static SK: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a\u{a0}", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a\u{a0}", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a\u{a0}", 4u8), special_case: None }]);
+ static CS: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a\u{a0}", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a\u{a0}", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a\u{a0}", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a\u{a0}", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static GA: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" agus ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" agus ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" agus ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" agus ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static GD: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" agus ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" agus ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ⊠", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ⊠", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static EN_001: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" and ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" and ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" and ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" and ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static EN_IN: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" and ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" and ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" and ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" and ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", and ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static YRL: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" asuí ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" asuí ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" asuí ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" asuí ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static MS: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" dan ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" dan ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" dan ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" dan ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static SQ: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" dhe ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" dhe ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" dhe ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" dhe ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" dhe ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" dhe ", 5u8), special_case: None }]);
+ static GL: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8), special_case: None }]);
+ static PT: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static NL: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" en ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" en ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" en ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" en ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" en ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" en ", 4u8), special_case: None }]);
+ static AF: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" en ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" en ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" en ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" en ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" en ", 4u8), special_case: None }]);
+ static FR: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" et ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" et ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" et ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" et ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static EU: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eta ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eta ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eta ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eta ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static BR: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ha ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ha ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" & ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" & ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" & ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" & ", 3u8), special_case: None }]);
+ static BS: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" i ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" i ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" i ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" i ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" i ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" i ", 3u8), special_case: None }]);
+ static SL: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" in ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" in ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" in ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" in ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" in ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" in ", 4u8), special_case: None }]);
+ static LT: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ir ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ir ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ir ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ir ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ir ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ir ", 4u8), special_case: None }]);
+ static SO: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" iyo ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" iyo ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" & ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" & ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static FI: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ja ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ja ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ja ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ja ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ja ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ja ", 4u8), special_case: None }]);
+ static ET: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ja ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ja ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ja ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ja ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static KGP: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" kar ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" kar ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" kar ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" kar ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static SW: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" na ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" na ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" na ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" na ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" na ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static SV: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" och ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" och ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" och ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" och ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static DA: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }]);
+ static IS: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static LV: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" un ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" un ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" un ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" un ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" un ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" un ", 4u8), special_case: None }]);
+ static DE: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" und ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" und ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" und ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" und ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" und ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" und ", 5u8), special_case: None }]);
+ static UZ: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" va ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" va ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" va ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" va ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static TR: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ve ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ve ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ve ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ve ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static VI: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" và ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" và ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" và ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" và ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static AZ: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" vÉ™ ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" vÉ™ ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" vÉ™ ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" vÉ™ ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static TK: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" we ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" we ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" we ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" we ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static AST: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: None }]);
+ static ES: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B(\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\x01(\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B(\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\x01(\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B(\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\x01(\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B(\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\x01(\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B(\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\x01(\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B(\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\x01(\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8) }) }]);
+ static HU: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" és ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" és ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" és ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" és ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" és ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" és ", 5u8), special_case: None }]);
+ static RO: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" și ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" și ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" și ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" și ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static EL: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" και ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" και ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" και ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" και ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static KY: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" жана ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" жана ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" жана ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" жана ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" жана ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" жана ", 10u8), special_case: None }]);
+ static BS_CYRL: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }]);
+ static BG: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static RU: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static CV: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" тата ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" тата ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" тата ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" тата ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static BE: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ñ– ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ñ– ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ñ– ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ñ– ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ñ– ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ñ– ", 4u8), special_case: None }]);
+ static UK: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ñ– ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ñ– ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ñ– ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ñ– ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static TT: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" һәм ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" һәм ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" һәм ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" һәм ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" һәм ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" һәм ", 8u8), special_case: None }]);
+ static HY: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ö‡ ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ö‡ ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ö‡ ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ö‡ ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static HE: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ו", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x11\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x02\x03\x03\x04\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x07\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\t\t\t\n\n\n\n\n\n\n\n\n\n\n\x0B\x0C\r\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x11\x12\x12\x12\x12\x12\x13\x14\x15\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !!!\"###########y\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x0E\0\0\0\x17\x17\x18\x18\x19\x19\x1A\x1A\x1B\x1B\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"\0\0j\x01\0\0z\0\0\0\x89\0\0\0\x98\0\0\0z\0\0\0\xB3\0\0\0\xC2\0\0\0\xD1\0\0\0\xC2\0\0\0\xE0\0\0\0\x01\x01\0\0\x10\x01\0\0\x1F\x01\0\0\0\0\0\0\0\x02\0\x01\x15\0\0j\x01\0\0\0\0\0\0\0\x02\0\x01\x07\0\0j\x01\0\0\0\0\0\0\0\x04\0\x06\x06\x0B\x0E\x10\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\n\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\t\0\0z\0\0\0\0\0\0\0\0\x05\0\x01\x0B\x0C\x0C\r\r\x0E\x15\0\0z\0\0\0.\x01\0\0O\x01\0\0z\0\0\0\0\0\0\0\0\x02\0\x07\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x06\0\0\xC2\0\0\0\0\0\0\0\0\x05\0\x01\x08\x11\x11\x13\x13\x15\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x04\0\x02\x02\x04\x04\x07\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\0#\0\0\x12\0\0\0\x12\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x11\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x02\x03\x03\x04\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x07\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\t\t\t\n\n\n\n\n\n\n\n\n\n\n\x0B\x0C\r\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x11\x12\x12\x12\x12\x12\x13\x14\x15\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !!!\"###########\0\0\x01y\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x0E\0\0\0\x17\x17\x18\x18\x19\x19\x1A\x1A\x1B\x1B\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"\0\0j\x01\0\0z\0\0\0\x89\0\0\0\x98\0\0\0z\0\0\0\xB3\0\0\0\xC2\0\0\0\xD1\0\0\0\xC2\0\0\0\xE0\0\0\0\x01\x01\0\0\x10\x01\0\0\x1F\x01\0\0\0\0\0\0\0\x02\0\x01\x15\0\0j\x01\0\0\0\0\0\0\0\x02\0\x01\x07\0\0j\x01\0\0\0\0\0\0\0\x04\0\x06\x06\x0B\x0E\x10\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\n\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\t\0\0z\0\0\0\0\0\0\0\0\x05\0\x01\x0B\x0C\x0C\r\r\x0E\x15\0\0z\0\0\0.\x01\0\0O\x01\0\0z\0\0\0\0\0\0\0\0\x02\0\x07\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x06\0\0\xC2\0\0\0\0\0\0\0\0\x05\0\x01\x08\x11\x11\x13\x13\x15\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x04\0\x02\x02\x04\x04\x07\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\0#\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" ו‑", 6u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ו", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x11\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x02\x03\x03\x04\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x07\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\t\t\t\n\n\n\n\n\n\n\n\n\n\n\x0B\x0C\r\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x11\x12\x12\x12\x12\x12\x13\x14\x15\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !!!\"###########y\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x0E\0\0\0\x17\x17\x18\x18\x19\x19\x1A\x1A\x1B\x1B\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"\0\0j\x01\0\0z\0\0\0\x89\0\0\0\x98\0\0\0z\0\0\0\xB3\0\0\0\xC2\0\0\0\xD1\0\0\0\xC2\0\0\0\xE0\0\0\0\x01\x01\0\0\x10\x01\0\0\x1F\x01\0\0\0\0\0\0\0\x02\0\x01\x15\0\0j\x01\0\0\0\0\0\0\0\x02\0\x01\x07\0\0j\x01\0\0\0\0\0\0\0\x04\0\x06\x06\x0B\x0E\x10\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\n\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\t\0\0z\0\0\0\0\0\0\0\0\x05\0\x01\x0B\x0C\x0C\r\r\x0E\x15\0\0z\0\0\0.\x01\0\0O\x01\0\0z\0\0\0\0\0\0\0\0\x02\0\x07\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x06\0\0\xC2\0\0\0\0\0\0\0\0\x05\0\x01\x08\x11\x11\x13\x13\x15\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x04\0\x02\x02\x04\x04\x07\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\0#\0\0\x12\0\0\0\x12\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x11\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x02\x03\x03\x04\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x07\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\t\t\t\n\n\n\n\n\n\n\n\n\n\n\x0B\x0C\r\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x11\x12\x12\x12\x12\x12\x13\x14\x15\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !!!\"###########\0\0\x01y\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x0E\0\0\0\x17\x17\x18\x18\x19\x19\x1A\x1A\x1B\x1B\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"\0\0j\x01\0\0z\0\0\0\x89\0\0\0\x98\0\0\0z\0\0\0\xB3\0\0\0\xC2\0\0\0\xD1\0\0\0\xC2\0\0\0\xE0\0\0\0\x01\x01\0\0\x10\x01\0\0\x1F\x01\0\0\0\0\0\0\0\x02\0\x01\x15\0\0j\x01\0\0\0\0\0\0\0\x02\0\x01\x07\0\0j\x01\0\0\0\0\0\0\0\x04\0\x06\x06\x0B\x0E\x10\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\n\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\t\0\0z\0\0\0\0\0\0\0\0\x05\0\x01\x0B\x0C\x0C\r\r\x0E\x15\0\0z\0\0\0.\x01\0\0O\x01\0\0z\0\0\0\0\0\0\0\0\x02\0\x07\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x06\0\0\xC2\0\0\0\0\0\0\0\0\x05\0\x01\x08\x11\x11\x13\x13\x15\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x04\0\x02\x02\x04\x04\x07\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\0#\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" ו‑", 6u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ו", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x11\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x02\x03\x03\x04\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x07\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\t\t\t\n\n\n\n\n\n\n\n\n\n\n\x0B\x0C\r\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x11\x12\x12\x12\x12\x12\x13\x14\x15\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !!!\"###########y\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x0E\0\0\0\x17\x17\x18\x18\x19\x19\x1A\x1A\x1B\x1B\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"\0\0j\x01\0\0z\0\0\0\x89\0\0\0\x98\0\0\0z\0\0\0\xB3\0\0\0\xC2\0\0\0\xD1\0\0\0\xC2\0\0\0\xE0\0\0\0\x01\x01\0\0\x10\x01\0\0\x1F\x01\0\0\0\0\0\0\0\x02\0\x01\x15\0\0j\x01\0\0\0\0\0\0\0\x02\0\x01\x07\0\0j\x01\0\0\0\0\0\0\0\x04\0\x06\x06\x0B\x0E\x10\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\n\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\t\0\0z\0\0\0\0\0\0\0\0\x05\0\x01\x0B\x0C\x0C\r\r\x0E\x15\0\0z\0\0\0.\x01\0\0O\x01\0\0z\0\0\0\0\0\0\0\0\x02\0\x07\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x06\0\0\xC2\0\0\0\0\0\0\0\0\x05\0\x01\x08\x11\x11\x13\x13\x15\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x04\0\x02\x02\x04\x04\x07\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\0#\0\0\x12\0\0\0\x12\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x11\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x02\x03\x03\x04\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x07\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\t\t\t\n\n\n\n\n\n\n\n\n\n\n\x0B\x0C\r\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x11\x12\x12\x12\x12\x12\x13\x14\x15\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !!!\"###########\0\0\x01y\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x0E\0\0\0\x17\x17\x18\x18\x19\x19\x1A\x1A\x1B\x1B\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"\0\0j\x01\0\0z\0\0\0\x89\0\0\0\x98\0\0\0z\0\0\0\xB3\0\0\0\xC2\0\0\0\xD1\0\0\0\xC2\0\0\0\xE0\0\0\0\x01\x01\0\0\x10\x01\0\0\x1F\x01\0\0\0\0\0\0\0\x02\0\x01\x15\0\0j\x01\0\0\0\0\0\0\0\x02\0\x01\x07\0\0j\x01\0\0\0\0\0\0\0\x04\0\x06\x06\x0B\x0E\x10\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\n\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\t\0\0z\0\0\0\0\0\0\0\0\x05\0\x01\x0B\x0C\x0C\r\r\x0E\x15\0\0z\0\0\0.\x01\0\0O\x01\0\0z\0\0\0\0\0\0\0\0\x02\0\x07\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x06\0\0\xC2\0\0\0\0\0\0\0\0\x05\0\x01\x08\x11\x11\x13\x13\x15\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x04\0\x02\x02\x04\x04\x07\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\0#\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" ו‑", 6u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ו", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x11\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x02\x03\x03\x04\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x07\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\t\t\t\n\n\n\n\n\n\n\n\n\n\n\x0B\x0C\r\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x11\x12\x12\x12\x12\x12\x13\x14\x15\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !!!\"###########y\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x0E\0\0\0\x17\x17\x18\x18\x19\x19\x1A\x1A\x1B\x1B\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"\0\0j\x01\0\0z\0\0\0\x89\0\0\0\x98\0\0\0z\0\0\0\xB3\0\0\0\xC2\0\0\0\xD1\0\0\0\xC2\0\0\0\xE0\0\0\0\x01\x01\0\0\x10\x01\0\0\x1F\x01\0\0\0\0\0\0\0\x02\0\x01\x15\0\0j\x01\0\0\0\0\0\0\0\x02\0\x01\x07\0\0j\x01\0\0\0\0\0\0\0\x04\0\x06\x06\x0B\x0E\x10\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\n\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\t\0\0z\0\0\0\0\0\0\0\0\x05\0\x01\x0B\x0C\x0C\r\r\x0E\x15\0\0z\0\0\0.\x01\0\0O\x01\0\0z\0\0\0\0\0\0\0\0\x02\0\x07\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x06\0\0\xC2\0\0\0\0\0\0\0\0\x05\0\x01\x08\x11\x11\x13\x13\x15\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x04\0\x02\x02\x04\x04\x07\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\0#\0\0\x12\0\0\0\x12\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x11\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x02\x03\x03\x04\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x07\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\t\t\t\n\n\n\n\n\n\n\n\n\n\n\x0B\x0C\r\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x11\x12\x12\x12\x12\x12\x13\x14\x15\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !!!\"###########\0\0\x01y\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x0E\0\0\0\x17\x17\x18\x18\x19\x19\x1A\x1A\x1B\x1B\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"\0\0j\x01\0\0z\0\0\0\x89\0\0\0\x98\0\0\0z\0\0\0\xB3\0\0\0\xC2\0\0\0\xD1\0\0\0\xC2\0\0\0\xE0\0\0\0\x01\x01\0\0\x10\x01\0\0\x1F\x01\0\0\0\0\0\0\0\x02\0\x01\x15\0\0j\x01\0\0\0\0\0\0\0\x02\0\x01\x07\0\0j\x01\0\0\0\0\0\0\0\x04\0\x06\x06\x0B\x0E\x10\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\n\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\t\0\0z\0\0\0\0\0\0\0\0\x05\0\x01\x0B\x0C\x0C\r\r\x0E\x15\0\0z\0\0\0.\x01\0\0O\x01\0\0z\0\0\0\0\0\0\0\0\x02\0\x07\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x06\0\0\xC2\0\0\0\0\0\0\0\0\x05\0\x01\x08\x11\x11\x13\x13\x15\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x04\0\x02\x02\x04\x04\x07\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\0#\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" ו‑", 6u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ו", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x11\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x02\x03\x03\x04\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x07\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\t\t\t\n\n\n\n\n\n\n\n\n\n\n\x0B\x0C\r\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x11\x12\x12\x12\x12\x12\x13\x14\x15\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !!!\"###########y\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x0E\0\0\0\x17\x17\x18\x18\x19\x19\x1A\x1A\x1B\x1B\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"\0\0j\x01\0\0z\0\0\0\x89\0\0\0\x98\0\0\0z\0\0\0\xB3\0\0\0\xC2\0\0\0\xD1\0\0\0\xC2\0\0\0\xE0\0\0\0\x01\x01\0\0\x10\x01\0\0\x1F\x01\0\0\0\0\0\0\0\x02\0\x01\x15\0\0j\x01\0\0\0\0\0\0\0\x02\0\x01\x07\0\0j\x01\0\0\0\0\0\0\0\x04\0\x06\x06\x0B\x0E\x10\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\n\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\t\0\0z\0\0\0\0\0\0\0\0\x05\0\x01\x0B\x0C\x0C\r\r\x0E\x15\0\0z\0\0\0.\x01\0\0O\x01\0\0z\0\0\0\0\0\0\0\0\x02\0\x07\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x06\0\0\xC2\0\0\0\0\0\0\0\0\x05\0\x01\x08\x11\x11\x13\x13\x15\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x04\0\x02\x02\x04\x04\x07\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\0#\0\0\x12\0\0\0\x12\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x11\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x02\x03\x03\x04\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x07\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\t\t\t\n\n\n\n\n\n\n\n\n\n\n\x0B\x0C\r\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x11\x12\x12\x12\x12\x12\x13\x14\x15\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !!!\"###########\0\0\x01y\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x0E\0\0\0\x17\x17\x18\x18\x19\x19\x1A\x1A\x1B\x1B\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"\0\0j\x01\0\0z\0\0\0\x89\0\0\0\x98\0\0\0z\0\0\0\xB3\0\0\0\xC2\0\0\0\xD1\0\0\0\xC2\0\0\0\xE0\0\0\0\x01\x01\0\0\x10\x01\0\0\x1F\x01\0\0\0\0\0\0\0\x02\0\x01\x15\0\0j\x01\0\0\0\0\0\0\0\x02\0\x01\x07\0\0j\x01\0\0\0\0\0\0\0\x04\0\x06\x06\x0B\x0E\x10\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\n\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\t\0\0z\0\0\0\0\0\0\0\0\x05\0\x01\x0B\x0C\x0C\r\r\x0E\x15\0\0z\0\0\0.\x01\0\0O\x01\0\0z\0\0\0\0\0\0\0\0\x02\0\x07\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x06\0\0\xC2\0\0\0\0\0\0\0\0\x05\0\x01\x08\x11\x11\x13\x13\x15\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x04\0\x02\x02\x04\x04\x07\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\0#\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" ו‑", 6u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ו", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x11\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x02\x03\x03\x04\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x07\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\t\t\t\n\n\n\n\n\n\n\n\n\n\n\x0B\x0C\r\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x11\x12\x12\x12\x12\x12\x13\x14\x15\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !!!\"###########y\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x0E\0\0\0\x17\x17\x18\x18\x19\x19\x1A\x1A\x1B\x1B\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"\0\0j\x01\0\0z\0\0\0\x89\0\0\0\x98\0\0\0z\0\0\0\xB3\0\0\0\xC2\0\0\0\xD1\0\0\0\xC2\0\0\0\xE0\0\0\0\x01\x01\0\0\x10\x01\0\0\x1F\x01\0\0\0\0\0\0\0\x02\0\x01\x15\0\0j\x01\0\0\0\0\0\0\0\x02\0\x01\x07\0\0j\x01\0\0\0\0\0\0\0\x04\0\x06\x06\x0B\x0E\x10\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\n\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\t\0\0z\0\0\0\0\0\0\0\0\x05\0\x01\x0B\x0C\x0C\r\r\x0E\x15\0\0z\0\0\0.\x01\0\0O\x01\0\0z\0\0\0\0\0\0\0\0\x02\0\x07\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x06\0\0\xC2\0\0\0\0\0\0\0\0\x05\0\x01\x08\x11\x11\x13\x13\x15\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x04\0\x02\x02\x04\x04\x07\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\0#\0\0\x12\0\0\0\x12\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x11\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x01\x02\x03\x03\x04\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x07\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\t\t\t\n\n\n\n\n\n\n\n\n\n\n\x0B\x0C\r\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x11\x12\x12\x12\x12\x12\x13\x14\x15\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !!!\"###########\0\0\x01y\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x0E\0\0\0\x17\x17\x18\x18\x19\x19\x1A\x1A\x1B\x1B\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"\0\0j\x01\0\0z\0\0\0\x89\0\0\0\x98\0\0\0z\0\0\0\xB3\0\0\0\xC2\0\0\0\xD1\0\0\0\xC2\0\0\0\xE0\0\0\0\x01\x01\0\0\x10\x01\0\0\x1F\x01\0\0\0\0\0\0\0\x02\0\x01\x15\0\0j\x01\0\0\0\0\0\0\0\x02\0\x01\x07\0\0j\x01\0\0\0\0\0\0\0\x04\0\x06\x06\x0B\x0E\x10\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\n\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0z\0\0\0\0\0\0\0\0\x02\0\x01\t\0\0z\0\0\0\0\0\0\0\0\x05\0\x01\x0B\x0C\x0C\r\r\x0E\x15\0\0z\0\0\0.\x01\0\0O\x01\0\0z\0\0\0\0\0\0\0\0\x02\0\x07\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x15\0\0\xC2\0\0\0\0\0\0\0\0\x02\0\x01\x06\0\0\xC2\0\0\0\0\0\0\0\0\x05\0\x01\x08\x11\x11\x13\x13\x15\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x04\0\x02\x02\x04\x04\x07\x15\0\0j\x01\0\0j\x01\0\0j\x01\0\0\0\0\0\0\0\x02\0\0#\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" ו‑", 6u8) }) }]);
+ static MR: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" आणि ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" आणि ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" आणि ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" आणि ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" आणि ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" आणि ", 11u8), special_case: None }]);
+ static MNI: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" অমস\u{9c1}ং ", 17u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" অমস\u{9c1}ং ", 17u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" অমস\u{9c1}ং ", 17u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" অমস\u{9c1}ং ", 17u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" অমস\u{9c1}ং ", 17u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" অমস\u{9c1}ং ", 17u8), special_case: None }]);
+ static AS: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" আৰ\u{9c1} ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" আৰ\u{9c1} ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" আৰ\u{9c1} ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" আৰ\u{9c1} ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static BN: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" à¦à¦¬à¦‚ ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" à¦à¦¬à¦‚ ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" à¦à¦¬à¦‚ ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" à¦à¦¬à¦‚ ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static PA: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ਅਤ\u{a47} ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ਅਤ\u{a47} ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ਅਤ\u{a47} ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ਅਤ\u{a47} ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static GU: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" અન\u{ac7} ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" અન\u{ac7} ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" અન\u{ac7} ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" અન\u{ac7} ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static TA: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" மற\u{bcd}à®±à¯à®®\u{bcd} ", 23u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" மற\u{bcd}à®±à¯à®®\u{bcd} ", 23u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" மற\u{bcd}à®±à¯à®®\u{bcd} ", 23u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" மற\u{bcd}à®±à¯à®®\u{bcd} ", 23u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" மற\u{bcd}à®±à¯à®®\u{bcd} ", 23u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" மற\u{bcd}à®±à¯à®®\u{bcd} ", 23u8), special_case: None }]);
+ static TE: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" మర\u{c3f}యౠ", 17u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" మర\u{c3f}యౠ", 17u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" మర\u{c3f}యౠ", 17u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" మర\u{c3f}యౠ", 17u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static KA: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" დრ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" დრ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" დრ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" დრ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" დრ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" დრ", 8u8), special_case: None }]);
+ static KM: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" áž“\u{17b7}áž„ ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" áž“\u{17b7}áž„\u{200b}", 13u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" áž“\u{17b7}áž„ ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" áž“\u{17b7}áž„ ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static KO: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ë° ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ë° ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ë° ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ë° ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ë° ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ë° ", 5u8), special_case: None }]);
+ static ML: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", എന\u{d4d}നിവ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ക\u{d42}ട\u{d3e}തെ ", 20u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", എന\u{d4d}നിവ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ക\u{d42}ട\u{d3e}തെ ", 20u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", എന\u{d4d}നിവ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", എന\u{d4d}നിവ", 2u8), special_case: None }]);
+ static KK: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" және ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" және ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" және ", 10u8), special_case: None }]);
+ static LO: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" à»àº¥àº° ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" à»àº¥àº° ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" à»àº¥àº° ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" à»àº¥àº° ", 11u8), special_case: None }]);
+ static UND: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static KOK: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", & ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" & ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static CY: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", a(c) ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a(c) ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", a(c) ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a(c) ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static PCM: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", an ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" an ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", & ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" & ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", á» ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static EN: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", and ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" and ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", & ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" & ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static FIL: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", at ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" at ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", at ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" at ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static HI_LATN: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", aur ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" aur ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", aur ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" aur ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" aur ", 5u8), special_case: None }]);
+ static HA: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", da ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" da ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", da ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" da ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", da ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" da ", 4u8), special_case: None }]);
+ static ID: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", dan ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" dan ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", dan ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" dan ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static JV: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", lan ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" lan ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", lan ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" lan ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static IG: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", na ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" na ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", na ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" na ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", na ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static ZU: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ne-", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ne-", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ne-", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ne-", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static SU: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", sareng ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" sareng ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", sareng ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" sareng ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", sareng ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" sareng ", 8u8), special_case: None }]);
+ static CEB: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ug ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ug ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ug ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ug ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static BRX: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", आरो ", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" आरो ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", आरो ", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" आरो ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", आरो ", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" आरो ", 11u8), special_case: None }]);
+ static HI: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", और ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" और ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" और ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" और ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" और ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" और ", 8u8), special_case: None }]);
+ static MAI: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", और ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" और ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", और ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" और ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", और ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" और ", 8u8), special_case: None }]);
+ static DOI: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", त\u{947} ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" त\u{947} ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", त\u{947} ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" त\u{947} ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", त\u{947} ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" त\u{947} ", 8u8), special_case: None }]);
+ static SA: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", तथा ", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" तथा ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", तथा ", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" तथा ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", तथा ", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" तथा ", 11u8), special_case: None }]);
+ static KS_DEVA: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ति ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ति ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ति ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ति ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ति ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ति ", 8u8), special_case: None }]);
+ static OR: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ଓ ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ଓ ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ଓ ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ଓ ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ଓ ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ଓ ", 5u8), special_case: None }]);
+ static KN: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ಮತ\u{ccd}ತೠ", 18u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ಮತ\u{ccd}ತೠ", 17u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ಮತ\u{ccd}ತೠ", 18u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ಮತ\u{ccd}ತೠ", 17u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static SI: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", සහ ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" සහ ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", සහ ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" සහ ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", සහ ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" සහ ", 8u8), special_case: None }]);
+ static CHR: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ᎠᎴ ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ᎠᎴ ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", & ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" & ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", & ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static SD: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ۽ ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ۽ ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ۽ ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ۽ ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static NE: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(",", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" र ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" र ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(",", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" र ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" र ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(",", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static PS: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، او ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" او ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، او ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" او ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، او ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }]);
+ static UR: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، اور ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" اور ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، اور ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" اور ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }]);
+ static KS: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ØŒ ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ØŒ ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ØŒ ت\u{655}Û ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ت\u{655}Û ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ØŒ ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ØŒ ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ØŒ ت\u{655}Û ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ت\u{655}Û ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ØŒ ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ØŒ ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ØŒ ت\u{655}Û ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ت\u{655}Û ", 8u8), special_case: None }]);
+ static FA: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("،\u{200f} ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("،\u{200f} ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، و ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" و ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("،\u{200f} ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("،\u{200f} ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، و ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" و ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("،\u{200f} ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("،\u{200f} ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("،\u{200f} ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("،\u{200f} ", 6u8), special_case: None }]);
+ static AM: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", እና ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" እና ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", እና ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" እና ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", እና ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" እና ", 8u8), special_case: None }]);
+ static TI: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ን ን", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ን ን", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ን ን", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ን ን", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ን ን", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ን ን", 4u8), special_case: None }]);
+ static FF_ADLM: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("⹠", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("⹠", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("⹠𞤫 ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" 𞤫 ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("⹠", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("⹠", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("⹠& ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" & ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("⹠", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("⹠", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("⹠", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("⹠", 4u8), special_case: None }]);
+ static JA: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }]);
+ static ZH_HK: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("åŠ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("åŠ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("åŠ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("åŠ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("åŠ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("åŠ", 3u8), special_case: None }]);
+ static YUE: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("åŒ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("åŒ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("åŒ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("åŒ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("åŒ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("åŒ", 3u8), special_case: None }]);
+ static ZH: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("å’Œ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("å’Œ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("å’Œ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("å’Œ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }]);
+ static ZH_HANT: <icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("å’Œ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("å’Œ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("å’Œ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("å’Œ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("å’Œ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("å’Œ", 3u8), special_case: None }]);
+ static VALUES: [&<icu::list::provider::AndListV1Marker as icu_provider::DataMarker>::Yokeable; 123usize] = [&AF, &AM, &AR, &AS, &AST, &AZ, &BE, &BG, &BN, &BR, &BRX, &BS, &BS_CYRL, &BS, &CEB, &CHR, &CS, &CV, &CY, &DA, &DE, &DOI, &DSB, &EL, &EN, &EN_001, &EN_001, &EN_IN, &ES, &ET, &EU, &FA, &FF_ADLM, &FI, &FIL, &DA, &FR, &GA, &GD, &GL, &GU, &HA, &HE, &HI, &HI_LATN, &BS, &DSB, &HU, &HY, &GL, &ID, &IG, &IS, &GL, &JA, &JV, &KA, &BS, &KGP, &KK, &KM, &KN, &KO, &KOK, &KS, &KS_DEVA, &KY, &LO, &LT, &LV, &MAI, &BS_CYRL, &ML, &MNI, &MR, &MS, &MY, &NE, &NL, &DA, &OR, &PA, &PCM, &BS, &PS, &PT, &GL, &RO, &RU, &SA, &GL, &SD, &SI, &SK, &SL, &SO, &SQ, &BS_CYRL, &BS, &SU, &SV, &SW, &TA, &TE, &TH, &TI, &TK, &TO, &TR, &TT, &UK, &UND, &UR, &UZ, &VI, &YRL, &YUE, &YUE, &ZH, &ZH_HK, &ZH_HANT, &ZH_HK, &ZU];
+ static KEYS: [&str; 123usize] = ["af", "am", "ar", "as", "ast", "az", "be", "bg", "bn", "br", "brx", "bs", "bs-Cyrl", "ca", "ceb", "chr", "cs", "cv", "cy", "da", "de", "doi", "dsb", "el", "en", "en-001", "en-CA", "en-IN", "es", "et", "eu", "fa", "ff-Adlm", "fi", "fil", "fo", "fr", "ga", "gd", "gl", "gu", "ha", "he", "hi", "hi-Latn", "hr", "hsb", "hu", "hy", "ia", "id", "ig", "is", "it", "ja", "jv", "ka", "kea", "kgp", "kk", "km", "kn", "ko", "kok", "ks", "ks-Deva", "ky", "lo", "lt", "lv", "mai", "mk", "ml", "mni", "mr", "ms", "my", "ne", "nl", "no", "or", "pa", "pcm", "pl", "ps", "pt", "rm", "ro", "ru", "sa", "sc", "sd", "si", "sk", "sl", "so", "sq", "sr", "sr-Latn", "su", "sv", "sw", "ta", "te", "th", "ti", "tk", "to", "tr", "tt", "uk", "und", "ur", "uz", "vi", "yrl", "yue", "yue-Hans", "zh", "zh-HK", "zh-Hant", "zh-MO", "zu"];
+ let mut metadata = icu_provider::DataResponseMetadata::default();
+ let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) {
+ payload
+ } else {
+ const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(<icu::list::provider::AndListV1Marker as icu_provider::KeyedDataMarker>::KEY.fallback_config());
+ let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone());
+ loop {
+ if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) {
+ metadata.locale = Some(fallback_iterator.take());
+ break payload;
+ }
+ fallback_iterator.step();
+ }
+ };
+ Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(payload)), metadata })
+ }
+ }
+ };
+}
diff --git a/vendor/icu_list_data/data/macros/list_or_v1.data.rs b/vendor/icu_list_data/data/macros/list_or_v1.data.rs
new file mode 100644
index 000000000..138a63ddc
--- /dev/null
+++ b/vendor/icu_list_data/data/macros/list_or_v1.data.rs
@@ -0,0 +1,123 @@
+// @generated
+/// Implement `DataProvider<OrListV1Marker>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_list_or_v1 {
+ ($ provider : ty) => {
+ #[clippy::msrv = "1.66"]
+ const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+ #[clippy::msrv = "1.66"]
+ impl icu_provider::DataProvider<icu::list::provider::OrListV1Marker> for $provider {
+ fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::list::provider::OrListV1Marker>, icu_provider::DataError> {
+ static MY: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" - ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" - ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" သ\u{102d}\u{102f}\u{1037}မဟ\u{102f}á€\u{103a} ", 29u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" သ\u{102d}\u{102f}\u{1037}မဟ\u{102f}á€\u{103a} ", 29u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" - ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" - ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" သ\u{102d}\u{102f}\u{1037}မဟ\u{102f}á€\u{103a} ", 29u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" သ\u{102d}\u{102f}\u{1037}မဟ\u{102f}á€\u{103a} ", 29u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" - ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" - ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" သ\u{102d}\u{102f}\u{1037}မဟ\u{102f}á€\u{103a} ", 29u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" သ\u{102d}\u{102f}\u{1037}မဟ\u{102f}á€\u{103a} ", 29u8), special_case: None }]);
+ static YO_BJ: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" pɛ\u{300}lú ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", tabi ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" tàbí ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" pɛ\u{300}lú ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", tabi ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" tàbí ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" pɛ\u{300}lú ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", tabi ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" tàbí ", 8u8), special_case: None }]);
+ static YO: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" pẹ\u{300}lú ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", tabi ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" tàbí ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" pẹ\u{300}lú ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", tabi ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" tàbí ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" pẹ\u{300}lú ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", tabi ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" tàbí ", 8u8), special_case: None }]);
+ static AR: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" أو ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" أو ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" أو ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" أو ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" أو ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" أو ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" أو ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" أو ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" أو ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" أو ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" أو ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" أو ", 6u8), special_case: None }]);
+ static DSB: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" abo ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" abo ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" abo ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" abo ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" abo ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" abo ", 5u8), special_case: None }]);
+ static SK: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" alebo ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" alebo ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" alebo ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" alebo ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" alebo ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" alebo ", 7u8), special_case: None }]);
+ static SL: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ali ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ali ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ali ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ali ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ali ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ali ", 5u8), special_case: None }]);
+ static SO: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ama ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ama ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ama ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ama ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ama ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ama ", 5u8), special_case: None }]);
+ static LT: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ar ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ar ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ar ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ar ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ar ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ar ", 4u8), special_case: None }]);
+ static SW: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" au ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" au ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", au ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" au ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", au ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" au ", 4u8), special_case: None }]);
+ static EU: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" edo ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" edo ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" edo ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" edo ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" edo ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" edo ", 5u8), special_case: None }]);
+ static DA: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eller ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eller ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" el. ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" el. ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" el. ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" el. ", 5u8), special_case: None }]);
+ static NO: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eller ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eller ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eller ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eller ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eller ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eller ", 7u8), special_case: None }]);
+ static IS: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eða ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eða ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eða ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eða ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eða ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eða ", 6u8), special_case: None }]);
+ static VI: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" hoặc ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" hoặc ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" hoặc ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" hoặc ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" hoặc ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" hoặc ", 8u8), special_case: None }]);
+ static BS: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ili ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ili ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ili ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ili ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ili ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ili ", 5u8), special_case: None }]);
+ static KGP: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ketũmỹr ", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ketũmỹr ", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ketũmỹr ", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ketũmỹr ", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ketũmỹr ", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ketũmỹr ", 12u8), special_case: None }]);
+ static HA: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ko ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ko ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ko ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ko ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ko ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ko ", 4u8), special_case: None }]);
+ static PL: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" lub ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" lub ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" lub ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" lub ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" lub ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" lub ", 5u8), special_case: None }]);
+ static CS: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" nebo ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" nebo ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" nebo ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" nebo ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" nebo ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" nebo ", 6u8), special_case: None }]);
+ static CY: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" neu ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" neu ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" neu ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" neu ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" neu ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" neu ", 5u8), special_case: None }]);
+ static GD: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" no ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" no ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" no ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" no ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" no ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" no ", 4u8), special_case: None }]);
+ static GA: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" nó ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" nó ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" nó ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" nó ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" nó ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" nó ", 5u8), special_case: None }]);
+ static AST: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" o ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" o ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" o ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" o ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" o ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" o ", 3u8), special_case: None }]);
+ static ES: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" o ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x17\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x04\x05\x06\x07\x08\t\t\t\t\t\t\n\x0B\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x12\x12\x12\x12\x12\x12\x13\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x15\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !\"\"#$$$%&&&&&&&&&&&M\x02\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x02\x80\x07\x0B\0\0/\x02\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x07\0\x08\x08\n\n\r\r\x0F\x0F\x11\x11\x13\x13\0\0>\x02\0\0|\0\0\0g\0\0\0|\0\0\0g\0\0\0|\0\0\0\0\0\0\0\0\x03\0\x0F\x0F\x13\x13\0\0|\0\0\0|\0\0\0\0\0\0\0\0\x02\0\0&\0\0\x12\0\0\0\x12\0\0\0\0\x14\0\0\0\x01\x01\x02\x02\x03\x03\x04\x04\x05\x05\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"##$$%%\0\0|\0\0\0\x06\x01\0\0|\0\0\0!\x01\0\0|\0\0\0x\x01\0\0|\0\0\0\x87\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xC3\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x04\0\0\x06\x07\x0B\x0C&\0\0\x12\0\0\0#\0\0\0\x12\0\0\0\x12\0\0\0\0\x0E\0\0\x02\x04\x04\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E !!\"\"##$$%%\0\0|\0\0\0|\0\0\0|\0\0\0!\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x02\0\x07\x0B\0\0\x87\x01\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0/\x02\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0|\0\0\0\0\0\0\0\0\x02\0\x18\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x03\0\x15\x15\x16\x1A\0\0\x14\x02\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x17\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x17\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x16\0\0\xB4\x01\0\0\0\0\0\0\0\x04\0\x15\x18\x19\x19\x1A\x1A\0\0|\0\0\0\x06\x01\0\0|\0\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0\x8B\0\0\0\0\0\0\0\0\x02\0\x08\x08\0\0\x8B\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0:\0\0\0:\0\0\0:\0\0\0:\0\0\0:\0\0\0\t\0\0\0\x12\0\0\0#\0\0\0\0\0\0\0\0\0\0\0:\0\0\0:\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x17\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x04\x05\x06\x07\x08\t\t\t\t\t\t\n\x0B\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x12\x12\x12\x12\x12\x12\x13\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x15\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !\"\"#$$$%&&&&&&&&&&&\0\0\x02M\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x02\x80\x07\x0B\0\0/\x02\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x07\0\x08\x08\n\n\r\r\x0F\x0F\x11\x11\x13\x13\0\0>\x02\0\0|\0\0\0g\0\0\0|\0\0\0g\0\0\0|\0\0\0\0\0\0\0\0\x03\0\x0F\x0F\x13\x13\0\0|\0\0\0|\0\0\0\0\0\0\0\0\x02\0\0&\0\0\x12\0\0\0\x12\0\0\0\0\x14\0\0\0\x01\x01\x02\x02\x03\x03\x04\x04\x05\x05\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"##$$%%\0\0|\0\0\0\x06\x01\0\0|\0\0\0!\x01\0\0|\0\0\0x\x01\0\0|\0\0\0\x87\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xC3\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x04\0\0\x06\x07\x0B\x0C&\0\0\x12\0\0\0#\0\0\0\x12\0\0\0\x12\0\0\0\0\x0E\0\0\x02\x04\x04\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E !!\"\"##$$%%\0\0|\0\0\0|\0\0\0|\0\0\0!\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x02\0\x07\x0B\0\0\x87\x01\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0/\x02\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0|\0\0\0\0\0\0\0\0\x02\0\x18\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x03\0\x15\x15\x16\x1A\0\0\x14\x02\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x17\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x17\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x16\0\0\xB4\x01\0\0\0\0\0\0\0\x04\0\x15\x18\x19\x19\x1A\x1A\0\0|\0\0\0\x06\x01\0\0|\0\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0\x8B\0\0\0\0\0\0\0\0\x02\0\x08\x08\0\0\x8B\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0:\0\0\0:\0\0\0:\0\0\0:\0\0\0\0\0\0:\0\0\0\t\0\0\0\x12\0\0\0#\0\0\0\0\0\0\0\0\0\0\0:\0\0\0:" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" u ", 3u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" o ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x17\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x04\x05\x06\x07\x08\t\t\t\t\t\t\n\x0B\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x12\x12\x12\x12\x12\x12\x13\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x15\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !\"\"#$$$%&&&&&&&&&&&M\x02\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x02\x80\x07\x0B\0\0/\x02\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x07\0\x08\x08\n\n\r\r\x0F\x0F\x11\x11\x13\x13\0\0>\x02\0\0|\0\0\0g\0\0\0|\0\0\0g\0\0\0|\0\0\0\0\0\0\0\0\x03\0\x0F\x0F\x13\x13\0\0|\0\0\0|\0\0\0\0\0\0\0\0\x02\0\0&\0\0\x12\0\0\0\x12\0\0\0\0\x14\0\0\0\x01\x01\x02\x02\x03\x03\x04\x04\x05\x05\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"##$$%%\0\0|\0\0\0\x06\x01\0\0|\0\0\0!\x01\0\0|\0\0\0x\x01\0\0|\0\0\0\x87\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xC3\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x04\0\0\x06\x07\x0B\x0C&\0\0\x12\0\0\0#\0\0\0\x12\0\0\0\x12\0\0\0\0\x0E\0\0\x02\x04\x04\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E !!\"\"##$$%%\0\0|\0\0\0|\0\0\0|\0\0\0!\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x02\0\x07\x0B\0\0\x87\x01\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0/\x02\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0|\0\0\0\0\0\0\0\0\x02\0\x18\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x03\0\x15\x15\x16\x1A\0\0\x14\x02\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x17\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x17\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x16\0\0\xB4\x01\0\0\0\0\0\0\0\x04\0\x15\x18\x19\x19\x1A\x1A\0\0|\0\0\0\x06\x01\0\0|\0\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0\x8B\0\0\0\0\0\0\0\0\x02\0\x08\x08\0\0\x8B\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0:\0\0\0:\0\0\0:\0\0\0:\0\0\0:\0\0\0\t\0\0\0\x12\0\0\0#\0\0\0\0\0\0\0\0\0\0\0:\0\0\0:\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x17\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x04\x05\x06\x07\x08\t\t\t\t\t\t\n\x0B\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x12\x12\x12\x12\x12\x12\x13\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x15\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !\"\"#$$$%&&&&&&&&&&&\0\0\x02M\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x02\x80\x07\x0B\0\0/\x02\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x07\0\x08\x08\n\n\r\r\x0F\x0F\x11\x11\x13\x13\0\0>\x02\0\0|\0\0\0g\0\0\0|\0\0\0g\0\0\0|\0\0\0\0\0\0\0\0\x03\0\x0F\x0F\x13\x13\0\0|\0\0\0|\0\0\0\0\0\0\0\0\x02\0\0&\0\0\x12\0\0\0\x12\0\0\0\0\x14\0\0\0\x01\x01\x02\x02\x03\x03\x04\x04\x05\x05\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"##$$%%\0\0|\0\0\0\x06\x01\0\0|\0\0\0!\x01\0\0|\0\0\0x\x01\0\0|\0\0\0\x87\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xC3\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x04\0\0\x06\x07\x0B\x0C&\0\0\x12\0\0\0#\0\0\0\x12\0\0\0\x12\0\0\0\0\x0E\0\0\x02\x04\x04\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E !!\"\"##$$%%\0\0|\0\0\0|\0\0\0|\0\0\0!\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x02\0\x07\x0B\0\0\x87\x01\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0/\x02\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0|\0\0\0\0\0\0\0\0\x02\0\x18\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x03\0\x15\x15\x16\x1A\0\0\x14\x02\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x17\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x17\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x16\0\0\xB4\x01\0\0\0\0\0\0\0\x04\0\x15\x18\x19\x19\x1A\x1A\0\0|\0\0\0\x06\x01\0\0|\0\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0\x8B\0\0\0\0\0\0\0\0\x02\0\x08\x08\0\0\x8B\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0:\0\0\0:\0\0\0:\0\0\0:\0\0\0\0\0\0:\0\0\0\t\0\0\0\x12\0\0\0#\0\0\0\0\0\0\0\0\0\0\0:\0\0\0:" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" u ", 3u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" o ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x17\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x04\x05\x06\x07\x08\t\t\t\t\t\t\n\x0B\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x12\x12\x12\x12\x12\x12\x13\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x15\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !\"\"#$$$%&&&&&&&&&&&M\x02\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x02\x80\x07\x0B\0\0/\x02\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x07\0\x08\x08\n\n\r\r\x0F\x0F\x11\x11\x13\x13\0\0>\x02\0\0|\0\0\0g\0\0\0|\0\0\0g\0\0\0|\0\0\0\0\0\0\0\0\x03\0\x0F\x0F\x13\x13\0\0|\0\0\0|\0\0\0\0\0\0\0\0\x02\0\0&\0\0\x12\0\0\0\x12\0\0\0\0\x14\0\0\0\x01\x01\x02\x02\x03\x03\x04\x04\x05\x05\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"##$$%%\0\0|\0\0\0\x06\x01\0\0|\0\0\0!\x01\0\0|\0\0\0x\x01\0\0|\0\0\0\x87\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xC3\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x04\0\0\x06\x07\x0B\x0C&\0\0\x12\0\0\0#\0\0\0\x12\0\0\0\x12\0\0\0\0\x0E\0\0\x02\x04\x04\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E !!\"\"##$$%%\0\0|\0\0\0|\0\0\0|\0\0\0!\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x02\0\x07\x0B\0\0\x87\x01\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0/\x02\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0|\0\0\0\0\0\0\0\0\x02\0\x18\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x03\0\x15\x15\x16\x1A\0\0\x14\x02\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x17\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x17\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x16\0\0\xB4\x01\0\0\0\0\0\0\0\x04\0\x15\x18\x19\x19\x1A\x1A\0\0|\0\0\0\x06\x01\0\0|\0\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0\x8B\0\0\0\0\0\0\0\0\x02\0\x08\x08\0\0\x8B\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0:\0\0\0:\0\0\0:\0\0\0:\0\0\0:\0\0\0\t\0\0\0\x12\0\0\0#\0\0\0\0\0\0\0\0\0\0\0:\0\0\0:\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x17\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x04\x05\x06\x07\x08\t\t\t\t\t\t\n\x0B\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x12\x12\x12\x12\x12\x12\x13\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x15\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !\"\"#$$$%&&&&&&&&&&&\0\0\x02M\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x02\x80\x07\x0B\0\0/\x02\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x07\0\x08\x08\n\n\r\r\x0F\x0F\x11\x11\x13\x13\0\0>\x02\0\0|\0\0\0g\0\0\0|\0\0\0g\0\0\0|\0\0\0\0\0\0\0\0\x03\0\x0F\x0F\x13\x13\0\0|\0\0\0|\0\0\0\0\0\0\0\0\x02\0\0&\0\0\x12\0\0\0\x12\0\0\0\0\x14\0\0\0\x01\x01\x02\x02\x03\x03\x04\x04\x05\x05\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"##$$%%\0\0|\0\0\0\x06\x01\0\0|\0\0\0!\x01\0\0|\0\0\0x\x01\0\0|\0\0\0\x87\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xC3\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x04\0\0\x06\x07\x0B\x0C&\0\0\x12\0\0\0#\0\0\0\x12\0\0\0\x12\0\0\0\0\x0E\0\0\x02\x04\x04\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E !!\"\"##$$%%\0\0|\0\0\0|\0\0\0|\0\0\0!\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x02\0\x07\x0B\0\0\x87\x01\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0/\x02\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0|\0\0\0\0\0\0\0\0\x02\0\x18\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x03\0\x15\x15\x16\x1A\0\0\x14\x02\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x17\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x17\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x16\0\0\xB4\x01\0\0\0\0\0\0\0\x04\0\x15\x18\x19\x19\x1A\x1A\0\0|\0\0\0\x06\x01\0\0|\0\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0\x8B\0\0\0\0\0\0\0\0\x02\0\x08\x08\0\0\x8B\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0:\0\0\0:\0\0\0:\0\0\0:\0\0\0\0\0\0:\0\0\0\t\0\0\0\x12\0\0\0#\0\0\0\0\0\0\0\0\0\0\0:\0\0\0:" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" u ", 3u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" o ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x17\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x04\x05\x06\x07\x08\t\t\t\t\t\t\n\x0B\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x12\x12\x12\x12\x12\x12\x13\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x15\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !\"\"#$$$%&&&&&&&&&&&M\x02\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x02\x80\x07\x0B\0\0/\x02\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x07\0\x08\x08\n\n\r\r\x0F\x0F\x11\x11\x13\x13\0\0>\x02\0\0|\0\0\0g\0\0\0|\0\0\0g\0\0\0|\0\0\0\0\0\0\0\0\x03\0\x0F\x0F\x13\x13\0\0|\0\0\0|\0\0\0\0\0\0\0\0\x02\0\0&\0\0\x12\0\0\0\x12\0\0\0\0\x14\0\0\0\x01\x01\x02\x02\x03\x03\x04\x04\x05\x05\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"##$$%%\0\0|\0\0\0\x06\x01\0\0|\0\0\0!\x01\0\0|\0\0\0x\x01\0\0|\0\0\0\x87\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xC3\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x04\0\0\x06\x07\x0B\x0C&\0\0\x12\0\0\0#\0\0\0\x12\0\0\0\x12\0\0\0\0\x0E\0\0\x02\x04\x04\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E !!\"\"##$$%%\0\0|\0\0\0|\0\0\0|\0\0\0!\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x02\0\x07\x0B\0\0\x87\x01\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0/\x02\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0|\0\0\0\0\0\0\0\0\x02\0\x18\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x03\0\x15\x15\x16\x1A\0\0\x14\x02\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x17\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x17\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x16\0\0\xB4\x01\0\0\0\0\0\0\0\x04\0\x15\x18\x19\x19\x1A\x1A\0\0|\0\0\0\x06\x01\0\0|\0\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0\x8B\0\0\0\0\0\0\0\0\x02\0\x08\x08\0\0\x8B\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0:\0\0\0:\0\0\0:\0\0\0:\0\0\0:\0\0\0\t\0\0\0\x12\0\0\0#\0\0\0\0\0\0\0\0\0\0\0:\0\0\0:\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x17\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x04\x05\x06\x07\x08\t\t\t\t\t\t\n\x0B\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x12\x12\x12\x12\x12\x12\x13\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x15\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !\"\"#$$$%&&&&&&&&&&&\0\0\x02M\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x02\x80\x07\x0B\0\0/\x02\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x07\0\x08\x08\n\n\r\r\x0F\x0F\x11\x11\x13\x13\0\0>\x02\0\0|\0\0\0g\0\0\0|\0\0\0g\0\0\0|\0\0\0\0\0\0\0\0\x03\0\x0F\x0F\x13\x13\0\0|\0\0\0|\0\0\0\0\0\0\0\0\x02\0\0&\0\0\x12\0\0\0\x12\0\0\0\0\x14\0\0\0\x01\x01\x02\x02\x03\x03\x04\x04\x05\x05\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"##$$%%\0\0|\0\0\0\x06\x01\0\0|\0\0\0!\x01\0\0|\0\0\0x\x01\0\0|\0\0\0\x87\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xC3\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x04\0\0\x06\x07\x0B\x0C&\0\0\x12\0\0\0#\0\0\0\x12\0\0\0\x12\0\0\0\0\x0E\0\0\x02\x04\x04\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E !!\"\"##$$%%\0\0|\0\0\0|\0\0\0|\0\0\0!\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x02\0\x07\x0B\0\0\x87\x01\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0/\x02\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0|\0\0\0\0\0\0\0\0\x02\0\x18\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x03\0\x15\x15\x16\x1A\0\0\x14\x02\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x17\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x17\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x16\0\0\xB4\x01\0\0\0\0\0\0\0\x04\0\x15\x18\x19\x19\x1A\x1A\0\0|\0\0\0\x06\x01\0\0|\0\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0\x8B\0\0\0\0\0\0\0\0\x02\0\x08\x08\0\0\x8B\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0:\0\0\0:\0\0\0:\0\0\0:\0\0\0\0\0\0:\0\0\0\t\0\0\0\x12\0\0\0#\0\0\0\0\0\0\0\0\0\0\0:\0\0\0:" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" u ", 3u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" o ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x17\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x04\x05\x06\x07\x08\t\t\t\t\t\t\n\x0B\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x12\x12\x12\x12\x12\x12\x13\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x15\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !\"\"#$$$%&&&&&&&&&&&M\x02\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x02\x80\x07\x0B\0\0/\x02\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x07\0\x08\x08\n\n\r\r\x0F\x0F\x11\x11\x13\x13\0\0>\x02\0\0|\0\0\0g\0\0\0|\0\0\0g\0\0\0|\0\0\0\0\0\0\0\0\x03\0\x0F\x0F\x13\x13\0\0|\0\0\0|\0\0\0\0\0\0\0\0\x02\0\0&\0\0\x12\0\0\0\x12\0\0\0\0\x14\0\0\0\x01\x01\x02\x02\x03\x03\x04\x04\x05\x05\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"##$$%%\0\0|\0\0\0\x06\x01\0\0|\0\0\0!\x01\0\0|\0\0\0x\x01\0\0|\0\0\0\x87\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xC3\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x04\0\0\x06\x07\x0B\x0C&\0\0\x12\0\0\0#\0\0\0\x12\0\0\0\x12\0\0\0\0\x0E\0\0\x02\x04\x04\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E !!\"\"##$$%%\0\0|\0\0\0|\0\0\0|\0\0\0!\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x02\0\x07\x0B\0\0\x87\x01\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0/\x02\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0|\0\0\0\0\0\0\0\0\x02\0\x18\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x03\0\x15\x15\x16\x1A\0\0\x14\x02\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x17\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x17\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x16\0\0\xB4\x01\0\0\0\0\0\0\0\x04\0\x15\x18\x19\x19\x1A\x1A\0\0|\0\0\0\x06\x01\0\0|\0\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0\x8B\0\0\0\0\0\0\0\0\x02\0\x08\x08\0\0\x8B\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0:\0\0\0:\0\0\0:\0\0\0:\0\0\0:\0\0\0\t\0\0\0\x12\0\0\0#\0\0\0\0\0\0\0\0\0\0\0:\0\0\0:\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x17\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x04\x05\x06\x07\x08\t\t\t\t\t\t\n\x0B\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x12\x12\x12\x12\x12\x12\x13\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x15\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !\"\"#$$$%&&&&&&&&&&&\0\0\x02M\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x02\x80\x07\x0B\0\0/\x02\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x07\0\x08\x08\n\n\r\r\x0F\x0F\x11\x11\x13\x13\0\0>\x02\0\0|\0\0\0g\0\0\0|\0\0\0g\0\0\0|\0\0\0\0\0\0\0\0\x03\0\x0F\x0F\x13\x13\0\0|\0\0\0|\0\0\0\0\0\0\0\0\x02\0\0&\0\0\x12\0\0\0\x12\0\0\0\0\x14\0\0\0\x01\x01\x02\x02\x03\x03\x04\x04\x05\x05\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"##$$%%\0\0|\0\0\0\x06\x01\0\0|\0\0\0!\x01\0\0|\0\0\0x\x01\0\0|\0\0\0\x87\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xC3\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x04\0\0\x06\x07\x0B\x0C&\0\0\x12\0\0\0#\0\0\0\x12\0\0\0\x12\0\0\0\0\x0E\0\0\x02\x04\x04\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E !!\"\"##$$%%\0\0|\0\0\0|\0\0\0|\0\0\0!\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x02\0\x07\x0B\0\0\x87\x01\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0/\x02\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0|\0\0\0\0\0\0\0\0\x02\0\x18\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x03\0\x15\x15\x16\x1A\0\0\x14\x02\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x17\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x17\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x16\0\0\xB4\x01\0\0\0\0\0\0\0\x04\0\x15\x18\x19\x19\x1A\x1A\0\0|\0\0\0\x06\x01\0\0|\0\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0\x8B\0\0\0\0\0\0\0\0\x02\0\x08\x08\0\0\x8B\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0:\0\0\0:\0\0\0:\0\0\0:\0\0\0\0\0\0:\0\0\0\t\0\0\0\x12\0\0\0#\0\0\0\0\0\0\0\0\0\0\0:\0\0\0:" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" u ", 3u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" o ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x17\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x04\x05\x06\x07\x08\t\t\t\t\t\t\n\x0B\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x12\x12\x12\x12\x12\x12\x13\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x15\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !\"\"#$$$%&&&&&&&&&&&M\x02\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x02\x80\x07\x0B\0\0/\x02\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x07\0\x08\x08\n\n\r\r\x0F\x0F\x11\x11\x13\x13\0\0>\x02\0\0|\0\0\0g\0\0\0|\0\0\0g\0\0\0|\0\0\0\0\0\0\0\0\x03\0\x0F\x0F\x13\x13\0\0|\0\0\0|\0\0\0\0\0\0\0\0\x02\0\0&\0\0\x12\0\0\0\x12\0\0\0\0\x14\0\0\0\x01\x01\x02\x02\x03\x03\x04\x04\x05\x05\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"##$$%%\0\0|\0\0\0\x06\x01\0\0|\0\0\0!\x01\0\0|\0\0\0x\x01\0\0|\0\0\0\x87\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xC3\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x04\0\0\x06\x07\x0B\x0C&\0\0\x12\0\0\0#\0\0\0\x12\0\0\0\x12\0\0\0\0\x0E\0\0\x02\x04\x04\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E !!\"\"##$$%%\0\0|\0\0\0|\0\0\0|\0\0\0!\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x02\0\x07\x0B\0\0\x87\x01\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0/\x02\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0|\0\0\0\0\0\0\0\0\x02\0\x18\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x03\0\x15\x15\x16\x1A\0\0\x14\x02\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x17\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x17\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x16\0\0\xB4\x01\0\0\0\0\0\0\0\x04\0\x15\x18\x19\x19\x1A\x1A\0\0|\0\0\0\x06\x01\0\0|\0\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0\x8B\0\0\0\0\0\0\0\0\x02\0\x08\x08\0\0\x8B\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0:\0\0\0:\0\0\0:\0\0\0:\0\0\0:\0\0\0\t\0\0\0\x12\0\0\0#\0\0\0\0\0\0\0\0\0\0\0:\0\0\0:\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x17\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x03\x04\x05\x06\x07\x08\t\t\t\t\t\t\n\x0B\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x12\x12\x12\x12\x12\x12\x13\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x14\x15\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x16\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x17\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x18\x19\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1B\x1B\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1C\x1D\x1E\x1F !\"\"#$$$%&&&&&&&&&&&\0\0\x02M\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x02\x80\x07\x0B\0\0/\x02\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x07\0\x08\x08\n\n\r\r\x0F\x0F\x11\x11\x13\x13\0\0>\x02\0\0|\0\0\0g\0\0\0|\0\0\0g\0\0\0|\0\0\0\0\0\0\0\0\x03\0\x0F\x0F\x13\x13\0\0|\0\0\0|\0\0\0\0\0\0\0\0\x02\0\0&\0\0\x12\0\0\0\x12\0\0\0\0\x14\0\0\0\x01\x01\x02\x02\x03\x03\x04\x04\x05\x05\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E\x1E\x1F\x1F !!\"\"##$$%%\0\0|\0\0\0\x06\x01\0\0|\0\0\0!\x01\0\0|\0\0\0x\x01\0\0|\0\0\0\x87\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xC3\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x04\0\0\x06\x07\x0B\x0C&\0\0\x12\0\0\0#\0\0\0\x12\0\0\0\x12\0\0\0\0\x0E\0\0\x02\x04\x04\x06\x06\x07\x0B\x0C\x14\x1C\x1C\x1D\x1D\x1E !!\"\"##$$%%\0\0|\0\0\0|\0\0\0|\0\0\0!\x01\0\0|\0\0\0\x96\x01\0\0\xA5\x01\0\0\xB4\x01\0\0\xD8\x01\0\0\xB4\x01\0\0\xE7\x01\0\0\xF6\x01\0\0\x05\x02\0\0\x12\0\0\0\0\x02\0\x07\x0B\0\0\x87\x01\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0/\x02\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0|\0\0\0\0\0\0\0\0\x02\0\x18\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\x96\x01\0\0\0\0\0\0\0\x03\0\x15\x15\x16\x1A\0\0\x14\x02\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x15\x17\0\0\x96\x01\0\0\0\0\0\0\0\x02\0\x17\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x1A\0\0\xB4\x01\0\0\0\0\0\0\0\x02\0\x15\x16\0\0\xB4\x01\0\0\0\0\0\0\0\x04\0\x15\x18\x19\x19\x1A\x1A\0\0|\0\0\0\x06\x01\0\0|\0\0\0\0\0\0\0\0\x02\0\x07\x0B\0\0\x8B\0\0\0\0\0\0\0\0\x02\0\x08\x08\0\0\x8B\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0:\0\0\0:\0\0\0:\0\0\0:\0\0\0\0\0\0:\0\0\0\t\0\0\0\x12\0\0\0#\0\0\0\0\0\0\0\0\0\0\0:\0\0\0:" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" u ", 3u8) }) }]);
+ static DE: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" oder ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" oder ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" oder ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" oder ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" oder ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" oder ", 6u8), special_case: None }]);
+ static AF: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" of ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" of ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" of ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" of ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" of ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" of ", 4u8), special_case: None }]);
+ static EN_001: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" or ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" or ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" or ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" or ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" or ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" or ", 4u8), special_case: None }]);
+ static SQ: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ose ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ose ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ose ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ose ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ose ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ose ", 5u8), special_case: None }]);
+ static FR: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ou ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ou ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ou ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ou ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ou ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ou ", 4u8), special_case: None }]);
+ static BR: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" pe ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" pe ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" pe ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" pe ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" pe ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" pe ", 4u8), special_case: None }]);
+ static RO: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" sau ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" sau ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" sau ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" sau ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" sau ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" sau ", 5u8), special_case: None }]);
+ static FI: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" tai ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" tai ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" tai ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" tai ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" tai ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" tai ", 5u8), special_case: None }]);
+ static RM: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" u ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" u ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" u ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" u ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" u ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" u ", 3u8), special_case: None }]);
+ static HU: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" vagy ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" vagy ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" vagy ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" vagy ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" vagy ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" vagy ", 6u8), special_case: None }]);
+ static LV: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" vai ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" vai ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" vai ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" vai ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" vai ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" vai ", 5u8), special_case: None }]);
+ static TR: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" veya ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" veya ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" veya ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" veya ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" veya ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" veya ", 6u8), special_case: None }]);
+ static ET: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" või ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" või ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" või ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" või ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" või ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" või ", 6u8), special_case: None }]);
+ static HI_LATN: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" yaa ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" yaa ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" yaa ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" yaa ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" yaa ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" yaa ", 5u8), special_case: None }]);
+ static UZ: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" yoki ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" yoki ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" yoki ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" yoki ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" yoki ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" yoki ", 6u8), special_case: None }]);
+ static TK: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ýa-da ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ýa-da ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ýa-da ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ýa-da ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ýa-da ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ýa-da ", 8u8), special_case: None }]);
+ static EL: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ή ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ή ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ή ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ή ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ή ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ή ", 4u8), special_case: None }]);
+ static UK: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" або ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" або ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" або ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" або ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" або ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" або ", 8u8), special_case: None }]);
+ static CV: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" е ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" е ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" е ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" е ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" е ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" е ", 4u8), special_case: None }]);
+ static KY: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" же ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" же ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" же ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" же ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" же ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" же ", 6u8), special_case: None }]);
+ static BG: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" или ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" или ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" или ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" или ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" или ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" или ", 8u8), special_case: None }]);
+ static BE: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ці ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ці ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ці ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ці ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ці ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ці ", 6u8), special_case: None }]);
+ static HY: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Õ¯Õ¡Õ´ ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Õ¯Õ¡Õ´ ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Õ¯Õ¡Õ´ ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Õ¯Õ¡Õ´ ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Õ¯Õ¡Õ´ ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Õ¯Õ¡Õ´ ", 8u8), special_case: None }]);
+ static HE: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ×ו ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ×ו ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ×ו ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ×ו ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ×ו ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ×ו ", 6u8), special_case: None }]);
+ static HI: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" या ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" या ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" या ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" या ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" या ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" या ", 8u8), special_case: None }]);
+ static AS: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ব\u{9be} ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ব\u{9be} ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ব\u{9be} ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ব\u{9be} ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ব\u{9be} ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ব\u{9be} ", 8u8), special_case: None }]);
+ static PA: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ਜਾ\u{a02} ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ਜਾ\u{a02} ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ਜਾ\u{a02} ", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ਜਾ\u{a02} ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ਜਾ\u{a02} ", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ਜਾ\u{a02} ", 11u8), special_case: None }]);
+ static OR: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" କ\u{b3f}ମ\u{b4d}ବ\u{b3e} ", 20u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" କ\u{b3f}ମ\u{b4d}ବ\u{b3e} ", 20u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" କ\u{b3f}ମ\u{b4d}ବ\u{b3e} ", 20u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" କ\u{b3f}ମ\u{b4d}ବ\u{b3e} ", 20u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" କ\u{b3f}ମ\u{b4d}ବ\u{b3e} ", 20u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" କ\u{b3f}ମ\u{b4d}ବ\u{b3e} ", 20u8), special_case: None }]);
+ static TA: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" அல\u{bcd}லத௠", 20u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" அல\u{bcd}லத௠", 20u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" அல\u{bcd}லத௠", 20u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" அல\u{bcd}லத௠", 20u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" அல\u{bcd}லத௠", 20u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" அல\u{bcd}லத௠", 20u8), special_case: None }]);
+ static TE: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" à°²\u{c47}à°¦\u{c3e} ", 14u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" à°²\u{c47}à°¦\u{c3e} ", 14u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" à°²\u{c47}à°¦\u{c3e} ", 14u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" à°²\u{c47}à°¦\u{c3e} ", 14u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" à°²\u{c47}à°¦\u{c3e} ", 14u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" à°²\u{c47}à°¦\u{c3e} ", 14u8), special_case: None }]);
+ static TH: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" หร\u{e37}อ ", 14u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" หร\u{e37}อ ", 14u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" หร\u{e37}อ ", 14u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("หร\u{e37}อ", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" หร\u{e37}อ ", 14u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("หร\u{e37}อ", 12u8), special_case: None }]);
+ static LO: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ຫ\u{ebc}\u{eb7} ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ຫ\u{ebc}\u{eb7} ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ຫ\u{ebc}\u{eb7} ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ຫ\u{ebc}\u{eb7} ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ຫ\u{ebc}\u{eb7} ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ຫ\u{ebc}\u{eb7} ", 11u8), special_case: None }]);
+ static KA: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" áƒáƒœ ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" áƒáƒœ ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" áƒáƒœ ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" áƒáƒœ ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" áƒáƒœ ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" áƒáƒœ ", 8u8), special_case: None }]);
+ static KM: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ឬ ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ឬ ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ឬ ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ឬ ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ឬ ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ឬ ", 5u8), special_case: None }]);
+ static PCM: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" á» ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" á» ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", á» ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" á» ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" á» ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" á» ", 5u8), special_case: None }]);
+ static KO: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ë˜ëŠ” ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ë˜ëŠ” ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ë˜ëŠ” ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ë˜ëŠ” ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ë˜ëŠ” ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ë˜ëŠ” ", 8u8), special_case: None }]);
+ static MN: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", зÑргийн аль нÑг", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ÑÑвÑл ", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", зÑргийн аль нÑг", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ÑÑвÑл ", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", зÑргийн аль нÑг", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ÑÑвÑл ", 12u8), special_case: None }]);
+ static ID: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", atau ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" atau ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", atau ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" atau ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", atau ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" atau ", 6u8), special_case: None }]);
+ static FO: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ella ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ella ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ella ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ella ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ella ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ella ", 6u8), special_case: None }]);
+ static CEB: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", o ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" o ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", o ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" o ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", o ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" o ", 3u8), special_case: None }]);
+ static UND: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", or ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" or ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", or ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" or ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", or ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" or ", 4u8), special_case: None }]);
+ static TO: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", pē ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" pē ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", pē ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" pē ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", pē ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" pē ", 5u8), special_case: None }]);
+ static QU: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", utaq ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" utaq ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", utaq ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" utaq ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", utaq ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" utaq ", 6u8), special_case: None }]);
+ static JV: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", utowo ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" utowo ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", utowo ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" utowo ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", utowo ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" utowo ", 7u8), special_case: None }]);
+ static AZ: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", yaxud ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" yaxud ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", yaxud ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", yaxud ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", yaxud ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", yaxud ", 8u8), special_case: None }]);
+ static KK: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", не болмаÑа ", 22u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" не ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", не болмаÑа ", 22u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" не ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", не болмаÑа ", 22u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" не ", 6u8), special_case: None }]);
+ static SD: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", يا ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" يا ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", يا ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" يا ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", يا ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" يا ", 6u8), special_case: None }]);
+ static PS: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", یا ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" or ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", یا ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" or ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", یا ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" or ", 4u8), special_case: None }]);
+ static MR: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", कि\u{902}वा ", 18u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" कि\u{902}वा ", 17u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" कि\u{902}वा ", 17u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" कि\u{902}वा ", 17u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" कि\u{902}वा ", 17u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" कि\u{902}वा ", 17u8), special_case: None }]);
+ static KOK: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", वा ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" वा ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", वा ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" वा ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", वा ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" वा ", 8u8), special_case: None }]);
+ static BN: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ব\u{9be} ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ব\u{9be} ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ব\u{9be} ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ব\u{9be} ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ব\u{9be} ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ব\u{9be} ", 8u8), special_case: None }]);
+ static GU: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", અથવા ", 15u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" અથવા ", 14u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" અથવા ", 14u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" અથવા ", 14u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" અથવા ", 14u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" અથવા ", 14u8), special_case: None }]);
+ static KN: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ಅಥವಾ ", 15u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ಅಥವಾ ", 14u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ಅಥವಾ ", 15u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ಅಥವಾ ", 14u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ಅಥವಾ ", 15u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ಅಥವಾ ", 14u8), special_case: None }]);
+ static ML: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", അല\u{d4d}ലെങ\u{d4d}കിൽ ", 33u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" അല\u{d4d}ലെങ\u{d4d}കിൽ ", 32u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", അല\u{d4d}ലെങ\u{d4d}കിൽ ", 33u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" അല\u{d4d}ലെങ\u{d4d}കിൽ ", 32u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", അല\u{d4d}ലെങ\u{d4d}കിൽ ", 33u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" അല\u{d4d}ലെങ\u{d4d}കിൽ ", 32u8), special_case: None }]);
+ static SI: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", à·„à· ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" à·„à· ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", à·„à· ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" à·„à· ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", à·„à· ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" à·„à· ", 8u8), special_case: None }]);
+ static CHR: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ᎠᎴá±áŽ© ", 15u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ᎠᎴá±áŽ© ", 14u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ᎠᎴá±áŽ© ", 15u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ᎠᎴá±áŽ© ", 14u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ᎠᎴá±áŽ© ", 15u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ᎠᎴá±áŽ© ", 14u8), special_case: None }]);
+ static UR: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، یا ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" یا ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، یا ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" یا ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، یا ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" یا ", 6u8), special_case: None }]);
+ static FA: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("،\u{200f} ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("،\u{200f} ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، یا ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" یا ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("،\u{200f} ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("،\u{200f} ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، یا ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" یا ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("،\u{200f} ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("،\u{200f} ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، یا ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" یا ", 6u8), special_case: None }]);
+ static TI: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ወይ ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ወይ ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ወይ ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ወይ ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ወይ ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ወይ ", 8u8), special_case: None }]);
+ static AM: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠወይሠ", 14u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ወይሠ\u{feff}", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠወይሠ", 14u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ወይሠ\u{feff}", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠወይሠ", 14u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ወይሠ\u{feff}", 11u8), special_case: None }]);
+ static FF_ADLM: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("⹠", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("⹠", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("⹠𞤥𞤢\u{1e944}𞤯𞤵𞤲 ", 29u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" 𞤥𞤢\u{1e944}𞤯𞤵𞤲 ", 26u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("⹠", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("⹠", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("⹠𞤥𞤢\u{1e944}𞤯𞤵𞤲 ", 29u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" 𞤥𞤢\u{1e944}𞤯𞤵𞤲 ", 26u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("⹠", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("⹠", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("⹠𞤥𞤢\u{1e944}𞤯𞤵𞤲 ", 29u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" 𞤥𞤢\u{1e944}𞤯𞤵𞤲 ", 26u8), special_case: None }]);
+ static YUE: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" 或 ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" 或 ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" 或 ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" 或 ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" 或 ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" 或 ", 5u8), special_case: None }]);
+ static JA: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€ã¾ãŸã¯", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã¾ãŸã¯", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€ã¾ãŸã¯", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã¾ãŸã¯", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€ã¾ãŸã¯", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã¾ãŸã¯", 9u8), special_case: None }]);
+ static ZH: <icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("或", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("或", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("或", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("或", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ã€", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("或", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("或", 3u8), special_case: None }]);
+ static VALUES: [&<icu::list::provider::OrListV1Marker as icu_provider::DataMarker>::Yokeable; 111usize] = [&AF, &AM, &AR, &AS, &AST, &AZ, &BE, &BG, &BN, &BR, &BS, &AST, &CEB, &CHR, &CS, &CV, &CY, &DA, &DE, &DSB, &EL, &EN_001, &EN_001, &ES, &ET, &EU, &FA, &FF_ADLM, &FI, &CEB, &FO, &FR, &GA, &GD, &FR, &GU, &HA, &HE, &HI, &HI_LATN, &BS, &DSB, &HU, &HY, &AST, &ID, &IS, &AST, &JA, &JV, &KA, &AST, &KGP, &KK, &KM, &KN, &KO, &KOK, &KY, &LO, &LT, &LV, &BG, &ML, &MN, &MR, &ID, &MY, &KOK, &AF, &NO, &OR, &PA, &PCM, &PL, &PS, &FR, &QU, &RM, &RO, &BG, &AST, &SD, &SI, &SK, &SL, &SO, &SQ, &BG, &BS, &NO, &SW, &TA, &TE, &TH, &TI, &TK, &TO, &TR, &UK, &UND, &UR, &UZ, &VI, &YO, &YO_BJ, &RM, &YUE, &YUE, &ZH, &ZH];
+ static KEYS: [&str; 111usize] = ["af", "am", "ar", "as", "ast", "az", "be", "bg", "bn", "br", "bs", "ca", "ceb", "chr", "cs", "cv", "cy", "da", "de", "dsb", "el", "en-001", "en-CA", "es", "et", "eu", "fa", "ff-Adlm", "fi", "fil", "fo", "fr", "ga", "gd", "gl", "gu", "ha", "he", "hi", "hi-Latn", "hr", "hsb", "hu", "hy", "ia", "id", "is", "it", "ja", "jv", "ka", "kea", "kgp", "kk", "km", "kn", "ko", "kok", "ky", "lo", "lt", "lv", "mk", "ml", "mn", "mr", "ms", "my", "ne", "nl", "no", "or", "pa", "pcm", "pl", "ps", "pt", "qu", "rm", "ro", "ru", "sc", "sd", "si", "sk", "sl", "so", "sq", "sr", "sr-Latn", "sv", "sw", "ta", "te", "th", "ti", "tk", "to", "tr", "uk", "und", "ur", "uz", "vi", "yo", "yo-BJ", "yrl", "yue", "yue-Hans", "zh", "zh-Hant"];
+ let mut metadata = icu_provider::DataResponseMetadata::default();
+ let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) {
+ payload
+ } else {
+ const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(<icu::list::provider::OrListV1Marker as icu_provider::KeyedDataMarker>::KEY.fallback_config());
+ let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone());
+ loop {
+ if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) {
+ metadata.locale = Some(fallback_iterator.take());
+ break payload;
+ }
+ fallback_iterator.step();
+ }
+ };
+ Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(payload)), metadata })
+ }
+ }
+ };
+}
diff --git a/vendor/icu_list_data/data/macros/list_unit_v1.data.rs b/vendor/icu_list_data/data/macros/list_unit_v1.data.rs
new file mode 100644
index 000000000..f6936d00d
--- /dev/null
+++ b/vendor/icu_list_data/data/macros/list_unit_v1.data.rs
@@ -0,0 +1,106 @@
+// @generated
+/// Implement `DataProvider<UnitListV1Marker>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_list_unit_v1 {
+ ($ provider : ty) => {
+ #[clippy::msrv = "1.66"]
+ const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+ #[clippy::msrv = "1.66"]
+ impl icu_provider::DataProvider<icu::list::provider::UnitListV1Marker> for $provider {
+ fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::list::provider::UnitListV1Marker>, icu_provider::DataError> {
+ static BE: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static JA: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("", 0u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("", 0u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("", 0u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("", 0u8), special_case: None }]);
+ static LT: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ir ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ir ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static TH: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" à¹à¸¥à¸° ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" à¹à¸¥à¸° ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" à¹à¸¥à¸° ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static ZH: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("", 0u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("", 0u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("", 0u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("", 0u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("", 0u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("", 0u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("", 0u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("", 0u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("", 0u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("", 0u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("", 0u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("", 0u8), special_case: None }]);
+ static DSB: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static CS: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a\u{a0}", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a\u{a0}", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" a\u{a0}", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static GD: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" agus ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" agus ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ’s ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ’s ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static GA: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" agus ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" agus ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static YRL: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" asuí ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" asuí ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" asuí ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" asuí ", 7u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static IT: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static PT_PT: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8), special_case: None }]);
+ static GL: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static AF: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" en ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" en ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" en ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" en ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" en ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" en ", 4u8), special_case: None }]);
+ static NL: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" en ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" en ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static FR: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" et ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" et ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" et ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" et ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static EU: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eta ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eta ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eta ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eta ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eta ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" eta ", 5u8), special_case: None }]);
+ static HR: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" i ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" i ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" i ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" i ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static BS: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" i ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" i ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" i ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" i ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" i ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" i ", 3u8), special_case: None }]);
+ static KEA: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" i ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" i ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static SL: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" in ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" in ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" in ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" in ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" in ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" in ", 4u8), special_case: None }]);
+ static FI: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ja ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ja ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static KGP: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" kar ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" kar ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" kar ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" kar ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static TO: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" mo e ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" mo e ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" mo e ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" mo e ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" mo e ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" mo e ", 6u8), special_case: None }]);
+ static SW: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" na ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" na ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" na ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" na ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" na ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" na ", 4u8), special_case: None }]);
+ static IS: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }]);
+ static DA: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }]);
+ static NO: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static FO: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" og ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static LV: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" un ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" un ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" un ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" un ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static DE: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" und ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" und ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" und ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static AST: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: None }]);
+ static ES_PY: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B(\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\x01(\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B(\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\x01(\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B(\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\x01(\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B(\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\x01(\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static ES_DO: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B(\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\x01(\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B(\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\x01(\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B(\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\x01(\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B(\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\x01(\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B(\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\x01(\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static ES: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B(\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\x01(\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B(\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\x01(\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" y ", 3u8), special_case: Some(icu::list::provider::SpecialCasePattern { condition: unsafe { icu::list::provider::SerdeDFA::from_dfa_bytes_unchecked(if cfg!(target_endian = "little") { b"rust-regex-automata-dfa-sparse\0\0\xFF\xFE\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B(\x01\0\0\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\x04\0\0\0\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#\0\0\0" } else { b"rust-regex-automata-dfa-sparse\0\0\0\0\xFE\xFF\0\0\0\x02\0\0\0\0\0\0\0\x0E\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\x02\x02\x02\x03\x04\x04\x05\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x08\t\t\t\n\x0B\x0B\x0C\r\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0E\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x10\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x12\x12\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x13\x14\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x16\x17\x17\x18\x19\x19\x19\x1A\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\x1B\0\0\x01(\x01\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x01\x80\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\x05\0\x05\x05\x06\x06\x0C\x0C\r\r\0\0S\0\0\0D\0\0\0S\0\0\0D\0\0\0\0\0\0\0\0\x02\0\0\x1B\0\0\x12\0\0\0\x12\0\0\0\0\x03\0\x06\x06\r\r\0\0h\0\0\0h\0\0\0\0\0\0\0\0\x0E\0\0\0\x02\x02\x04\x07\t\t\x0B\x0E\x13\x13\x14\x14\x15\x15\x16\x16\x17\x17\x18\x18\x19\x19\x1A\x1A\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0D\0\0\0\xBF\0\0\0\xCE\0\0\0\xDD\0\0\0\xEC\0\0\0\xDD\0\0\0\xFB\0\0\0\n\x01\0\0\x19\x01\0\0\x12\0\0\0\0\x02\0\x0F\x11\0\0D\0\0\0\0\0\0\0\0\x02\0\x11\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x0F\x10\0\0\xBF\0\0\0\0\0\0\0\0\x02\0\x10\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x11\0\0\xDD\0\0\0\0\0\0\0\0\x02\0\x0F\x0F\0\0\xDD\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\0#\0\0\0#\0\0\0#\0\0\0#\0\0\0\0\0\0#\0\0\0\t\0\0\0\x12\0\0\0\x12\0\0\0\0\0\0\0\0\0\0\0#\0\0\0#" }) }, pattern: icu::list::provider::ListJoinerPattern::from_parts(" e ", 3u8) }) }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static HU: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" és ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" és ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" és ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" és ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" és ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" és ", 5u8), special_case: None }]);
+ static BS_CYRL: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }]);
+ static BG: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" и ", 4u8), special_case: None }]);
+ static UK: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ñ– ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ñ– ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ñ– ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ñ– ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ñ– ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ñ– ", 4u8), special_case: None }]);
+ static TT: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" һәм ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" һәм ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" һәм ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" һәм ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" һәм ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" һәм ", 8u8), special_case: None }]);
+ static HY: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ö‡ ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ö‡ ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ö‡ ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" Ö‡ ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static HE: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ו-", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static MNI: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" অমস\u{9c1}ং ", 17u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" অমস\u{9c1}ং ", 17u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" অমস\u{9c1}ং ", 17u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" অমস\u{9c1}ং ", 17u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" অমস\u{9c1}ং ", 17u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" অমস\u{9c1}ং ", 17u8), special_case: None }]);
+ static SO: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" iyo ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static RO: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" și ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static PS: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" او ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" و ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static GU: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" અન\u{ac7} ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static ML: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ക\u{d42}ട\u{d3e}തെ ", 20u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static MS: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" dan ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" dan ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static AS: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static ZU: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static KN: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static UND: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static HI_LATN: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", aur ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" aur ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }]);
+ static IG: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", na ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" na ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", na ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" na ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", na ", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" na ", 4u8), special_case: None }]);
+ static SU: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", sareng ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" sareng ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", sareng ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" sareng ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", sareng ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" sareng ", 8u8), special_case: None }]);
+ static BRX: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", आरो ", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" आरो ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", आरो ", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" आरो ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", आरो ", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" आरो ", 11u8), special_case: None }]);
+ static HI: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", और ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" और ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static MAI: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", और ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" और ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", और ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" और ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", और ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" और ", 8u8), special_case: None }]);
+ static DOI: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", त\u{947} ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" त\u{947} ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", त\u{947} ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" त\u{947} ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", त\u{947} ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" त\u{947} ", 8u8), special_case: None }]);
+ static SA: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", तथा ", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" तथा ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", तथा ", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" तथा ", 11u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", तथा ", 12u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" तथा ", 11u8), special_case: None }]);
+ static KS_DEVA: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ति ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ति ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ति ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ति ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ति ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ति ", 8u8), special_case: None }]);
+ static SI: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", සහ ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" සහ ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", සහ ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" සහ ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", සහ ", 9u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" සහ ", 8u8), special_case: None }]);
+ static UR: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، اور ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، اور ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" اور ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، اور ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" اور ", 8u8), special_case: None }]);
+ static NE: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(",", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(",", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(",", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(",", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(",", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("", 0u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static MY: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("- ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("- ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("န\u{103e}င\u{1037}\u{103a} ", 16u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("န\u{103e}င\u{1037}\u{103a}", 15u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("- ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("- ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("န\u{103e}င\u{1037}\u{103a} ", 16u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("န\u{103e}င\u{1037}\u{103a} ", 16u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("န\u{103e}င\u{1037}\u{103a} ", 16u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("န\u{103e}င\u{1037}\u{103a} ", 16u8), special_case: None }]);
+ static KS: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ØŒ ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ØŒ ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ØŒ ت\u{655}Û ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ت\u{655}Û ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ØŒ ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ØŒ ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ØŒ ت\u{655}Û ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ت\u{655}Û ", 8u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ØŒ ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ØŒ ", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ØŒ ت\u{655}Û ", 10u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ت\u{655}Û ", 8u8), special_case: None }]);
+ static AR: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، و", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، و", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، و", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" و", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، و", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، و", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، و", 5u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" و", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" و", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" و", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" و", 3u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" و", 3u8), special_case: None }]);
+ static FA: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("،\u{200f} ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("،\u{200f} ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، و ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" و ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("،\u{200f} ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("،\u{200f} ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("، و ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("،\u{200f} ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static TI: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ን ን", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ን ን", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ን ን", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static AM: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("ᣠ", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static FF_ADLM: <icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable = icu::list::provider::ListFormatterPatternsV1([icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("⹠", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" 𞤫 ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" 𞤫 ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts("⹠", 4u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(", ", 2u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" 𞤫 ", 6u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }, icu::list::provider::ConditionalListJoinerPattern { default: icu::list::provider::ListJoinerPattern::from_parts(" ", 1u8), special_case: None }]);
+ static VALUES: [&<icu::list::provider::UnitListV1Marker as icu_provider::DataMarker>::Yokeable; 114usize] = [&AF, &AM, &AR, &AS, &AST, &BE, &BG, &BRX, &BS, &BS_CYRL, &BS, &AS, &AS, &CS, &BE, &DA, &DE, &DOI, &DSB, &AS, &AS, &ES, &ES_DO, &ES_PY, &ES_PY, &AS, &EU, &FA, &FF_ADLM, &FI, &AS, &FO, &FR, &GA, &GD, &GL, &GU, &HE, &HI, &HI_LATN, &HR, &DSB, &HU, &HY, &AS, &IG, &IS, &IT, &JA, &AS, &KEA, &KGP, &BE, &BE, &KN, &BE, &AS, &KS, &KS_DEVA, &AS, &AS, &LT, &LV, &MAI, &BS_CYRL, &ML, &BE, &MNI, &AS, &MS, &MY, &NE, &NL, &AS, &NO, &AS, &AS, &AS, &BS, &PS, &IT, &PT_PT, &IT, &RO, &BE, &SA, &IT, &SI, &SL, &SO, &PT_PT, &BS_CYRL, &BS, &SU, &AS, &SW, &AS, &TH, &TI, &AS, &TO, &BE, &TT, &UK, &UND, &UR, &BE, &AS, &YRL, &JA, &JA, &ZH, &JA, &ZU];
+ static KEYS: [&str; 114usize] = ["af", "am", "ar", "as", "ast", "be", "bg", "brx", "bs", "bs-Cyrl", "ca", "ceb", "chr", "cs", "cv", "da", "de", "doi", "dsb", "el", "en", "es", "es-DO", "es-PY", "es-US", "et", "eu", "fa", "ff-Adlm", "fi", "fil", "fo", "fr", "ga", "gd", "gl", "gu", "he", "hi", "hi-Latn", "hr", "hsb", "hu", "hy", "ia", "ig", "is", "it", "ja", "jv", "kea", "kgp", "kk", "km", "kn", "ko", "kok", "ks", "ks-Deva", "ky", "lo", "lt", "lv", "mai", "mk", "ml", "mn", "mni", "mr", "ms", "my", "ne", "nl", "nn", "no", "or", "pa", "pcm", "pl", "ps", "pt", "pt-PT", "rm", "ro", "ru", "sa", "sc", "si", "sl", "so", "sq", "sr", "sr-Latn", "su", "sv", "sw", "ta", "th", "ti", "tk", "to", "tr", "tt", "uk", "und", "ur", "uz", "vi", "yrl", "yue", "yue-Hans", "zh", "zh-Hant", "zu"];
+ let mut metadata = icu_provider::DataResponseMetadata::default();
+ let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) {
+ payload
+ } else {
+ const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(<icu::list::provider::UnitListV1Marker as icu_provider::KeyedDataMarker>::KEY.fallback_config());
+ let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone());
+ loop {
+ if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) {
+ metadata.locale = Some(fallback_iterator.take());
+ break payload;
+ }
+ fallback_iterator.step();
+ }
+ };
+ Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(payload)), metadata })
+ }
+ }
+ };
+}
diff --git a/vendor/icu_list_data/data/mod.rs b/vendor/icu_list_data/data/mod.rs
new file mode 100644
index 000000000..8df9b0cb6
--- /dev/null
+++ b/vendor/icu_list_data/data/mod.rs
@@ -0,0 +1,29 @@
+// @generated
+include!("macros.rs");
+macro_rules! impl_data_provider {
+ ($ provider : ty) => {
+ make_provider!($provider);
+ impl_list_and_v1!($provider);
+ impl_list_or_v1!($provider);
+ impl_list_unit_v1!($provider);
+ };
+}
+#[allow(unused_macros)]
+macro_rules! impl_any_provider {
+ ($ provider : ty) => {
+ #[clippy::msrv = "1.66"]
+ impl icu_provider::AnyProvider for $provider {
+ fn load_any(&self, key: icu_provider::DataKey, req: icu_provider::DataRequest) -> Result<icu_provider::AnyResponse, icu_provider::DataError> {
+ match key.hashed() {
+ h if h == <icu::list::provider::AndListV1Marker as icu_provider::KeyedDataMarker>::KEY.hashed() => icu_provider::DataProvider::<icu::list::provider::AndListV1Marker>::load(self, req).map(icu_provider::DataResponse::wrap_into_any_response),
+ h if h == <icu::list::provider::OrListV1Marker as icu_provider::KeyedDataMarker>::KEY.hashed() => icu_provider::DataProvider::<icu::list::provider::OrListV1Marker>::load(self, req).map(icu_provider::DataResponse::wrap_into_any_response),
+ h if h == <icu::list::provider::UnitListV1Marker as icu_provider::KeyedDataMarker>::KEY.hashed() => icu_provider::DataProvider::<icu::list::provider::UnitListV1Marker>::load(self, req).map(icu_provider::DataResponse::wrap_into_any_response),
+ _ => Err(icu_provider::DataErrorKind::MissingDataKey.with_req(key, req)),
+ }
+ }
+ }
+ };
+}
+#[clippy::msrv = "1.66"]
+pub struct BakedDataProvider;
+impl_data_provider!(BakedDataProvider);
diff --git a/vendor/icu_list_data/src/lib.rs b/vendor/icu_list_data/src/lib.rs
new file mode 100644
index 000000000..ba4916a3f
--- /dev/null
+++ b/vendor/icu_list_data/src/lib.rs
@@ -0,0 +1,12 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Data for the icu_list crate
+
+#![no_std]
+
+#[cfg(icu4x_custom_data)]
+include!(concat!(core::env!("ICU4X_DATA_DIR"), "/macros.rs"));
+#[cfg(not(icu4x_custom_data))]
+include!("../data/macros.rs");
diff --git a/vendor/icu_locid/.cargo-checksum.json b/vendor/icu_locid/.cargo-checksum.json
index 86c76b889..5013ff2a3 100644
--- a/vendor/icu_locid/.cargo-checksum.json
+++ b/vendor/icu_locid/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"1aa9f21333d579ccbdf71478538b586518faa9d7f73f7ba8049649f5d4e33b43","Cargo.toml":"d4d6c83d31deeb379ed08f9340dd71e9726ecaa8e89e55b01254fed5acdee859","LICENSE":"4ad7541d66a407234e2c84902124cef325c29f3e966353efdb800bedb8b8da21","README.md":"16472983782c836d9e97b4df4754baab7bb247d0a945d1a97cafb3210e951d8f","benches/fixtures/langid.json":"373c11527653c63c685c9e229a8de5ae2b557c25b686a9d891c59e1f603232d8","benches/fixtures/locale.json":"669b19db933094290a45bf856559920f4e92401072e364ac82c482119dc9233a","benches/fixtures/mod.rs":"9a9671eddcf38a6faa10cb814949f8abc15d89f5e70f3ad6f684f1bc3ffe72ea","benches/fixtures/subtags.json":"28be3a639e452d713e807d5779b6819e06277e2dbbf67801ef34964fb9b074b6","benches/helpers/macros.rs":"bba0945a826bc083156bc302507c48c0c99c4d965e2a84352644d768591b0339","benches/helpers/mod.rs":"c98167d866fdb7f66c8cab41e8d57b5aab9e9707dfc66c37ef136e088dac6fef","benches/iai_langid.rs":"7984d12b78a0e2ecfa1eac74ccf7310627285de821c13fab2fe000f0e961a136","benches/langid.rs":"4e3d307d48fd9071308a567a0ef927b229814978abd2ba29f57c65edd51f38e4","benches/locale.rs":"b8d5b1e3f8b5578c549a5149229656fb60de26b76a1bf66b6c1abce75042d674","benches/subtags.rs":"e7e80dabaf31bf031779456614f139cafcdadb805986e71b49133ac964928432","examples/filter_langids.rs":"e000b860432b1646c74709177e4e4df1cfdc9620f41a677d15a5016bd7eb9b29","examples/syntatically_canonicalize_locales.rs":"49184e6e52e2264c61a479c0df88c01e7f7079f3da991445faecca3844594079","src/databake.rs":"894d0f73836d99915c5726d8984e7833498e841e2985cedfd5893aeb2bdcc958","src/extensions/mod.rs":"684cb51f3edc0385f6f7703e81a83c3455bd035d0016bd8e9024b26546037cd1","src/extensions/other/mod.rs":"ee377c2eeaa6b622a2c80807bffdd307800030fe2ec8a99a9729bdde45452635","src/extensions/other/subtag.rs":"431d27a0a5adca7d56c7ea3a6de2a0412e1e14ad2dd8a8e09a548849984b84b6","src/extensions/private/mod.rs":"5d53d32adb79386416b6eb4a9de218423f3bee4000e96e4899b78462f609531c","src/extensions/private/other.rs":"586fd24398e78c5fda0afdb98de28a6467afd2d702683daf5dfab2a6c45af1e9","src/extensions/transform/fields.rs":"9221478ce7565738bb27951a6be25b3ebc5c11d63afb2ca744fd4c587d155e9b","src/extensions/transform/key.rs":"53e8c9ce13f00f678c2322855cc1d90afd91cd33a2af3758d098b7bbcc7090e5","src/extensions/transform/mod.rs":"111ebf59ad6cd9a09a8eb84367a0053ff03fff8329f07310131784a457d07b61","src/extensions/transform/value.rs":"577b642b32f7a74e98ba5bee8e30700021c8b0e6da63538398aaf95d13edfd65","src/extensions/unicode/attribute.rs":"d558a193b72f54cdb03afe8e023a145ac74832c8416ca55401cd417ebba2431c","src/extensions/unicode/attributes.rs":"ddc0361968151e28cc1e6a3d91056a0f71f2c42f22dacecd339aaa67dfdcf899","src/extensions/unicode/key.rs":"6c8694527079c5dd5f03f8e85f23ae6b5aa4b47899d1047036960e8400dca7de","src/extensions/unicode/keywords.rs":"782ce7de79b4151b072ea263d1c614e0a14e162043345eead6691d18b9de2092","src/extensions/unicode/mod.rs":"e066cbdabf567a40c777428d071e2e82389a043bd552bc1e83202401c86e0b2e","src/extensions/unicode/value.rs":"786ac19494618a3d45e6c0d0f85311c57812ba0e7a286a2ea903c3d358811e47","src/helpers.rs":"aae44d20013596d872d99e9db811f0dede093cc2d33d52104e11f45897185490","src/langid.rs":"314ef5d6764e35d5a30bd53e43a8d547c81fe7ee875fe52e54076215a89a64f1","src/lib.rs":"ba7bec8f041418942ccc36693d26c733d18d5d30dc06355c86870ca52b1b4a33","src/locale.rs":"bb59685345580711b9b1510a99db64f14080fbc176a461d2a6322ffda1bdb96c","src/macros.rs":"f7154fc103ea1120a55bb5898540b20df80de6eec42e70ce15f339d997f2bf52","src/ordering.rs":"d76c6f26ffb5eb1e24646b70ce532985af326c46c488abda52c89074387f1dcc","src/parser/errors.rs":"8af937e67d197272c0f4806cc40cb191c878085b8687f987e358ee01ac2b5004","src/parser/langid.rs":"749ac36945e7b5e24cbc82f04900f10f770fc24f7ce007af4c3be7a325ccc631","src/parser/locale.rs":"075c74803891894ad50bbedc69366931b8e76c0992b3caa1a5632f0a6816ccfd","src/parser/mod.rs":"5182392624876a419b1469d135d175aba680bb13d14e4f6ea0cfc4e071fbc743","src/serde.rs":"06e940e4f2d15f02d313b4e2b233aea3e74c93c6c43076f5ffe52d49c133608f","src/subtags/language.rs":"2ebc98952bd4a6b4077c77da1895225faacc17020af8a47675b8b41b05b9e7eb","src/subtags/mod.rs":"0257f746ed368ea3fa675054c9e7e40d972ec31cd7cc525be655a16a83c9d17b","src/subtags/region.rs":"4f4120f4910d0a4496f29c193d00313e71be4c646867d97ebd0e9a7438693847","src/subtags/script.rs":"6b1a68783cb90409bdd39b0184dfb2cb1c302fdee7202e3b6f7c7c8941bc7dfe","src/subtags/variant.rs":"956f1ea3d98172b6ead333411f010cf4e84404584a3051cb775d148d79beb4f8","src/subtags/variants.rs":"d312ec8994f25d0c0285f71f4bcdff5a06bdcfa45da3e3db31478d6f0293c741","src/zerovec.rs":"9d01a235d18296fbf0c2e89d188459e9446df0e63aaedc7e150165604af885b9","tests/fixtures/canonicalize.json":"9f2b7cbef72c24944cd4dc50de368c6e3ef69949f29c9ce1aa8807de767a4d0a","tests/fixtures/invalid-extensions.json":"4b7888006360b216030597257de8c301e22877e75216818967bbd8c83b6dbb0b","tests/fixtures/invalid.json":"5247849a6eb805619b8e70254c855227f7bdaf71431b071c91c6cc378ae9766e","tests/fixtures/langid.json":"960fd01722217ef1ea9077e2e0821d7089fe318a241bd7fb7918f50bf8f3f5c3","tests/fixtures/locale.json":"8606e0569fc6ea0e50a1fecb9295b911fbef7d8dbfde3c585476284a751baccf","tests/fixtures/mod.rs":"aea619960540b92199345cbd20ff03d2cb451aa2ce9aa6cf7915223ee9f812a3","tests/helpers/mod.rs":"d3bf59e7eed6230f340bef6c87a7b8de3a387ec391f60afc1b15a0d001cbfb67","tests/langid.rs":"82da0497c4b7d7c5d416ddb96bad0d13d4e51b735b5ed3164a25861de28e2118","tests/locale.rs":"bfbb137e6183e71e6e05076fd3b1caea98a70e69992c8626bb8f316eebc3a23c"},"package":"3003f85dccfc0e238ff567693248c59153a46f4e6125ba4020b973cef4d1d335"} \ No newline at end of file
+{"files":{"Cargo.lock":"6214b473d2f714c579f3bb23814b478fb419ee5318c614e7ea77ee2b3c8c8ae3","Cargo.toml":"b73d1db3dab5e1607843117edff14504ddecbe381f7ad64ea1544bc726779e2d","LICENSE":"853f87c96f3d249f200fec6db1114427bc8bdf4afddc93c576956d78152ce978","README.md":"27c4ba4df8933825ab38b7da3de3b678bee7f1b4a011c6268861da643ac52de2","benches/fixtures/langid.json":"373c11527653c63c685c9e229a8de5ae2b557c25b686a9d891c59e1f603232d8","benches/fixtures/locale.json":"669b19db933094290a45bf856559920f4e92401072e364ac82c482119dc9233a","benches/fixtures/mod.rs":"9a9671eddcf38a6faa10cb814949f8abc15d89f5e70f3ad6f684f1bc3ffe72ea","benches/fixtures/subtags.json":"28be3a639e452d713e807d5779b6819e06277e2dbbf67801ef34964fb9b074b6","benches/helpers/macros.rs":"bba0945a826bc083156bc302507c48c0c99c4d965e2a84352644d768591b0339","benches/helpers/mod.rs":"c98167d866fdb7f66c8cab41e8d57b5aab9e9707dfc66c37ef136e088dac6fef","benches/iai_langid.rs":"8e8f93e4b4e2e70771f86eccfaec8c38f2f8a79f569d72eef29a64bb730f3e0d","benches/langid.rs":"4e3d307d48fd9071308a567a0ef927b229814978abd2ba29f57c65edd51f38e4","benches/locale.rs":"b8d5b1e3f8b5578c549a5149229656fb60de26b76a1bf66b6c1abce75042d674","benches/subtags.rs":"e7e80dabaf31bf031779456614f139cafcdadb805986e71b49133ac964928432","examples/filter_langids.rs":"e000b860432b1646c74709177e4e4df1cfdc9620f41a677d15a5016bd7eb9b29","examples/syntatically_canonicalize_locales.rs":"49184e6e52e2264c61a479c0df88c01e7f7079f3da991445faecca3844594079","src/databake.rs":"894d0f73836d99915c5726d8984e7833498e841e2985cedfd5893aeb2bdcc958","src/extensions/mod.rs":"684cb51f3edc0385f6f7703e81a83c3455bd035d0016bd8e9024b26546037cd1","src/extensions/other/mod.rs":"b126de24198275f847737f8d18715dc7276417f1028b14c84f970275d231c014","src/extensions/other/subtag.rs":"41e9e943d67d5940c1fa01d027e8713c5e95819e4542c4a7f8fbadc9fc47b085","src/extensions/private/mod.rs":"eedc5265a36dde934b69ef08a9f61666f138efbc4c5fd04eb88d20b58f2f6036","src/extensions/private/other.rs":"604341d3888b946102bbc1f9d6d1cc146a1aed26c55158385641f7a80a434b72","src/extensions/transform/fields.rs":"208f7783a49f53e0e120c51b8cdf8df43387e69d0f8cca0621802097b17c9094","src/extensions/transform/key.rs":"05ef426db886862257b4d8e11d0d7762694e858ed8e6e683e40a765be1d7f05b","src/extensions/transform/mod.rs":"31dd61ae69096bef3c8c9948e9a812fdfcc846c30623a645f221fdcde5f89236","src/extensions/transform/value.rs":"31f596b2f70fe19e42992e08dd0ca1130a4b89a41719983609ebf486fe8e0985","src/extensions/unicode/attribute.rs":"021115b6b1880048411dc6a983039dbf4cfce8eabf6895afc008356f13ced960","src/extensions/unicode/attributes.rs":"3b6c10548f78c5a1735d2c6b6c6b5cd9a11c7195843b2f3d71241e2931286412","src/extensions/unicode/key.rs":"3822a2710eeb6d8569666a0f4097cc0a85e5e490d8b7ff0b75a983e686cb26d3","src/extensions/unicode/keywords.rs":"bc33ab96f39d5c0d0b94ed076aec778ebb296a6ac14d141aee0ee3785c442c6d","src/extensions/unicode/mod.rs":"9aaa6e8a3b243d8398bc30d95be7eb003a82d64937979544e52287663196452b","src/extensions/unicode/value.rs":"b25db7ee38e42aa8473bdb7ee7b6ae48339f8f6de2a7f6bddc7d93804df91f39","src/helpers.rs":"8860167ebd2de94a977241efb0a3b60699db537fc64633318fba71c659adcce8","src/langid.rs":"7ced139493bf508aaf2ff8655ff78449194a2745642106b7f80fb9f604ace54a","src/lib.rs":"b0086f71477baa14abe327aece797f3a305ebc0b7cfc0fb7105f1a1dd64108ca","src/locale.rs":"51a28b67ac5df4261fee82501d5bd42e2621b328b84cf85cdddd7c5f1dadc707","src/macros.rs":"f7154fc103ea1120a55bb5898540b20df80de6eec42e70ce15f339d997f2bf52","src/ordering.rs":"d76c6f26ffb5eb1e24646b70ce532985af326c46c488abda52c89074387f1dcc","src/parser/errors.rs":"8af937e67d197272c0f4806cc40cb191c878085b8687f987e358ee01ac2b5004","src/parser/langid.rs":"282678684bf1530a92d5070cd02caef0e5a2797eeebb2a793febe5c74cb15d23","src/parser/locale.rs":"075c74803891894ad50bbedc69366931b8e76c0992b3caa1a5632f0a6816ccfd","src/parser/mod.rs":"5182392624876a419b1469d135d175aba680bb13d14e4f6ea0cfc4e071fbc743","src/serde.rs":"06e940e4f2d15f02d313b4e2b233aea3e74c93c6c43076f5ffe52d49c133608f","src/subtags/language.rs":"9d256e02908b57afdec69a453862af1a1267b04323b9522080e5dafc891a7a63","src/subtags/mod.rs":"a31350b679598b7452849ee6f8f56aefb2f2e370575ffe34dd643b62a0ca3fec","src/subtags/region.rs":"22a6dbe130899ebaab5482ca4f512de931eda1c5194639302995f696082344a2","src/subtags/script.rs":"1d57233bd238af03d4c347adb06b238bc108649da2bd395c03d6c1e879725f8a","src/subtags/variant.rs":"a0a14e1f26f1438b47e9419e696247f197c4a1042070a6e4a41620be720b5ac5","src/subtags/variants.rs":"33c9a8f979078461ae27b1812358a1c984594f4b5e66d2e5ba3ff649f89da7ba","src/zerovec.rs":"a34cfbce609b9ca711d22098a73f3cf17eec6ea73fd00f3106dca698b7dee29e","tests/fixtures/canonicalize.json":"9f2b7cbef72c24944cd4dc50de368c6e3ef69949f29c9ce1aa8807de767a4d0a","tests/fixtures/invalid-extensions.json":"4b7888006360b216030597257de8c301e22877e75216818967bbd8c83b6dbb0b","tests/fixtures/invalid.json":"5247849a6eb805619b8e70254c855227f7bdaf71431b071c91c6cc378ae9766e","tests/fixtures/langid.json":"960fd01722217ef1ea9077e2e0821d7089fe318a241bd7fb7918f50bf8f3f5c3","tests/fixtures/locale.json":"8606e0569fc6ea0e50a1fecb9295b911fbef7d8dbfde3c585476284a751baccf","tests/fixtures/mod.rs":"aea619960540b92199345cbd20ff03d2cb451aa2ce9aa6cf7915223ee9f812a3","tests/helpers/mod.rs":"d3bf59e7eed6230f340bef6c87a7b8de3a387ec391f60afc1b15a0d001cbfb67","tests/langid.rs":"82da0497c4b7d7c5d416ddb96bad0d13d4e51b735b5ed3164a25861de28e2118","tests/locale.rs":"bfbb137e6183e71e6e05076fd3b1caea98a70e69992c8626bb8f316eebc3a23c"},"package":"f284eb342dc49d3e9d9f3b188489d76b5d22dfb1d1a5e0d1941811253bac625c"} \ No newline at end of file
diff --git a/vendor/icu_locid/Cargo.lock b/vendor/icu_locid/Cargo.lock
index 559ba454b..01c56f499 100644
--- a/vendor/icu_locid/Cargo.lock
+++ b/vendor/icu_locid/Cargo.lock
@@ -3,6 +3,15 @@
version = 3
[[package]]
+name = "aho-corasick"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
name = "anes"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -14,7 +23,7 @@ version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
dependencies = [
- "hermit-abi 0.1.19",
+ "hermit-abi",
"libc",
"winapi",
]
@@ -33,9 +42,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bumpalo"
-version = "3.12.0"
+version = "3.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
+checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
[[package]]
name = "cast"
@@ -51,9 +60,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "ciborium"
-version = "0.2.0"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
+checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926"
dependencies = [
"ciborium-io",
"ciborium-ll",
@@ -62,15 +71,15 @@ dependencies = [
[[package]]
name = "ciborium-io"
-version = "0.2.0"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
+checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656"
[[package]]
name = "ciborium-ll"
-version = "0.2.0"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
+checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b"
dependencies = [
"ciborium-io",
"half",
@@ -78,9 +87,9 @@ dependencies = [
[[package]]
name = "clap"
-version = "3.2.23"
+version = "3.2.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
+checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123"
dependencies = [
"bitflags",
"clap_lex",
@@ -140,16 +149,6 @@ dependencies = [
]
[[package]]
-name = "crossbeam-channel"
-version = "0.5.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200"
-dependencies = [
- "cfg-if",
- "crossbeam-utils",
-]
-
-[[package]]
name = "crossbeam-deque"
version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -162,9 +161,9 @@ dependencies = [
[[package]]
name = "crossbeam-epoch"
-version = "0.9.14"
+version = "0.9.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
+checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7"
dependencies = [
"autocfg",
"cfg-if",
@@ -175,18 +174,18 @@ dependencies = [
[[package]]
name = "crossbeam-utils"
-version = "0.8.15"
+version = "0.8.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
+checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
dependencies = [
"cfg-if",
]
[[package]]
name = "databake"
-version = "0.1.4"
+version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3feab871d671ecc2e912e83e3a64b9b3343a224c86b999334c4c99b07cf07f52"
+checksum = "959b676312ba1aaafb2219c475560082e6b20c3bc572ec1483f93cecd748cf3d"
dependencies = [
"databake-derive",
"proc-macro2",
@@ -196,9 +195,9 @@ dependencies = [
[[package]]
name = "databake-derive"
-version = "0.1.4"
+version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8b3072996668063c5fe00fcef85ee766fc01113f2fdd5e8a31d5ebae260c091"
+checksum = "5f0694dfe255f1af0289d3d1b40787bb955e8603d96e96a6b14b225926e108fb"
dependencies = [
"proc-macro2",
"quote",
@@ -208,9 +207,9 @@ dependencies = [
[[package]]
name = "displaydoc"
-version = "0.2.3"
+version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886"
+checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
dependencies = [
"proc-macro2",
"quote",
@@ -219,9 +218,9 @@ dependencies = [
[[package]]
name = "either"
-version = "1.8.1"
+version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
+checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
[[package]]
name = "half"
@@ -245,15 +244,6 @@ dependencies = [
]
[[package]]
-name = "hermit-abi"
-version = "0.2.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
-dependencies = [
- "libc",
-]
-
-[[package]]
name = "iai"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -261,7 +251,7 @@ checksum = "71a816c97c42258aa5834d07590b718b4c9a598944cd39a52dc25b351185d678"
[[package]]
name = "icu_locid"
-version = "1.2.0"
+version = "1.3.2"
dependencies = [
"criterion",
"databake",
@@ -297,15 +287,15 @@ dependencies = [
[[package]]
name = "itoa"
-version = "1.0.6"
+version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
+checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
[[package]]
name = "js-sys"
-version = "0.3.61"
+version = "0.3.64"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
+checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a"
dependencies = [
"wasm-bindgen",
]
@@ -318,58 +308,51 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
-version = "0.2.141"
+version = "0.2.148"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5"
+checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b"
[[package]]
name = "litemap"
-version = "0.7.0"
+version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a04a5b2b6f54acba899926491d0a6c59d98012938ca2ab5befb281c034e8f94"
+checksum = "77a1a2647d5b7134127971a6de0d533c49de2159167e7f259c427195f87168a1"
[[package]]
name = "log"
-version = "0.4.17"
+version = "0.4.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
-dependencies = [
- "cfg-if",
-]
+checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
[[package]]
-name = "memoffset"
-version = "0.8.0"
+name = "memchr"
+version = "2.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
-dependencies = [
- "autocfg",
-]
+checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c"
[[package]]
-name = "num-traits"
-version = "0.2.15"
+name = "memoffset"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
dependencies = [
"autocfg",
]
[[package]]
-name = "num_cpus"
-version = "1.15.0"
+name = "num-traits"
+version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
+checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
dependencies = [
- "hermit-abi 0.2.6",
- "libc",
+ "autocfg",
]
[[package]]
name = "once_cell"
-version = "1.17.1"
+version = "1.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
+checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
[[package]]
name = "oorandom"
@@ -379,15 +362,15 @@ checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
[[package]]
name = "os_str_bytes"
-version = "6.5.0"
+version = "6.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
+checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac"
[[package]]
name = "plotters"
-version = "0.3.4"
+version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
+checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45"
dependencies = [
"num-traits",
"plotters-backend",
@@ -398,24 +381,24 @@ dependencies = [
[[package]]
name = "plotters-backend"
-version = "0.3.4"
+version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
+checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609"
[[package]]
name = "plotters-svg"
-version = "0.3.3"
+version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
+checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab"
dependencies = [
"plotters-backend",
]
[[package]]
name = "postcard"
-version = "1.0.4"
+version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cfa512cd0d087cc9f99ad30a1bf64795b67871edbead083ffc3a4dfafa59aa00"
+checksum = "d534c6e61df1c7166e636ca612d9820d486fe96ddad37f7abc671517b297488e"
dependencies = [
"cobs",
"serde",
@@ -423,27 +406,27 @@ dependencies = [
[[package]]
name = "proc-macro2"
-version = "1.0.56"
+version = "1.0.67"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435"
+checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
-version = "1.0.26"
+version = "1.0.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
+checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
dependencies = [
"proc-macro2",
]
[[package]]
name = "rayon"
-version = "1.7.0"
+version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
+checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"
dependencies = [
"either",
"rayon-core",
@@ -451,36 +434,48 @@ dependencies = [
[[package]]
name = "rayon-core"
-version = "1.11.0"
+version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
+checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"
dependencies = [
- "crossbeam-channel",
"crossbeam-deque",
"crossbeam-utils",
- "num_cpus",
]
[[package]]
name = "regex"
-version = "1.7.3"
+version = "1.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d"
+checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795"
dependencies = [
+ "aho-corasick",
+ "memchr",
"regex-syntax",
]
[[package]]
name = "regex-syntax"
-version = "0.6.29"
+version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
+checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
[[package]]
name = "ryu"
-version = "1.0.13"
+version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
+checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
[[package]]
name = "same-file"
@@ -493,24 +488,24 @@ dependencies = [
[[package]]
name = "scopeguard"
-version = "1.1.0"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]]
name = "serde"
-version = "1.0.156"
+version = "1.0.188"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "314b5b092c0ade17c00142951e50ced110ec27cea304b1037c6969246c2469a4"
+checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.156"
+version = "1.0.188"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d7e29c4601e36bcec74a223228dce795f4cd3616341a4af93520ca1a837c087d"
+checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
dependencies = [
"proc-macro2",
"quote",
@@ -519,9 +514,9 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.96"
+version = "1.0.107"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1"
+checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65"
dependencies = [
"itoa",
"ryu",
@@ -530,9 +525,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "1.0.109"
+version = "2.0.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8"
dependencies = [
"proc-macro2",
"quote",
@@ -541,9 +536,9 @@ dependencies = [
[[package]]
name = "synstructure"
-version = "0.12.6"
+version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
+checksum = "285ba80e733fac80aa4270fbcdf83772a79b80aa35c97075320abfee4a915b06"
dependencies = [
"proc-macro2",
"quote",
@@ -559,9 +554,9 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
[[package]]
name = "tinystr"
-version = "0.7.1"
+version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ac3f5b6856e931e15e07b478e98c8045239829a65f9156d4fa7e7788197a5ef"
+checksum = "d5d0e245e80bdc9b4e5356fc45a72184abbc3861992603f515270e9340f5a219"
dependencies = [
"displaydoc",
"serde",
@@ -579,9 +574,9 @@ dependencies = [
[[package]]
name = "unicode-ident"
-version = "1.0.8"
+version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
[[package]]
name = "unicode-xid"
@@ -591,9 +586,9 @@ checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
[[package]]
name = "walkdir"
-version = "2.3.3"
+version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
+checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
dependencies = [
"same-file",
"winapi-util",
@@ -601,9 +596,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen"
-version = "0.2.84"
+version = "0.2.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
+checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342"
dependencies = [
"cfg-if",
"wasm-bindgen-macro",
@@ -611,9 +606,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-backend"
-version = "0.2.84"
+version = "0.2.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
+checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd"
dependencies = [
"bumpalo",
"log",
@@ -626,9 +621,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.84"
+version = "0.2.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
+checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -636,9 +631,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.84"
+version = "0.2.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
+checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
dependencies = [
"proc-macro2",
"quote",
@@ -649,15 +644,15 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.84"
+version = "0.2.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
+checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
[[package]]
name = "web-sys"
-version = "0.3.61"
+version = "0.3.64"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
+checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -681,9 +676,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-util"
-version = "0.1.5"
+version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
dependencies = [
"winapi",
]
@@ -696,21 +691,21 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "writeable"
-version = "0.5.2"
+version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60e49e42bdb1d5dc76f4cd78102f8f0714d32edfa3efb82286eb0f0b1fc0da0f"
+checksum = "c0af0c3d13faebf8dda0b5256fa7096a2d5ccb662f7b9f54a40fe201077ab1c2"
[[package]]
name = "zerofrom"
-version = "0.1.2"
+version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df54d76c3251de27615dfcce21e636c172dafb2549cd7fd93e21c66f6ca6bea2"
+checksum = "655b0814c5c0b19ade497851070c640773304939a6c0fd5f5fb43da0696d05b7"
[[package]]
name = "zerovec"
-version = "0.9.4"
+version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "198f54134cd865f437820aa3b43d0ad518af4e68ee161b444cdd15d8e567c8ea"
+checksum = "1194130c5b155bf8ae50ab16c86ab758cd695cf9ad176d2f870b744cbdbb572e"
dependencies = [
"zerofrom",
]
diff --git a/vendor/icu_locid/Cargo.toml b/vendor/icu_locid/Cargo.toml
index 54c842a75..d2086ab28 100644
--- a/vendor/icu_locid/Cargo.toml
+++ b/vendor/icu_locid/Cargo.toml
@@ -11,10 +11,12 @@
[package]
edition = "2021"
+rust-version = "1.66"
name = "icu_locid"
-version = "1.2.0"
+version = "1.3.2"
authors = ["The ICU4X Project Developers"]
include = [
+ "data/**/*",
"src/**/*",
"examples/**/*",
"benches/**/*",
@@ -24,19 +26,19 @@ include = [
"README.md",
]
description = "API for managing Unicode Language and Locale Identifiers"
+homepage = "https://icu4x.unicode.org"
readme = "README.md"
categories = ["internationalization"]
-license = "Unicode-DFS-2016"
+license-file = "LICENSE"
repository = "https://github.com/unicode-org/icu4x"
-[package.metadata.docs.rs]
-all-features = true
-
[package.metadata.cargo-all-features]
denylist = ["bench"]
+[package.metadata.docs.rs]
+all-features = true
+
[lib]
-path = "src/lib.rs"
bench = false
[[example]]
@@ -66,16 +68,19 @@ harness = false
required-features = ["bench"]
[dependencies.databake]
-version = "0.1.3"
+version = "0.1.6"
features = ["derive"]
optional = true
+default-features = false
[dependencies.displaydoc]
version = "0.2.3"
default-features = false
[dependencies.litemap]
-version = "0.7.0"
+version = "0.7.1"
+features = ["alloc"]
+default-features = false
[dependencies.serde]
version = "1.0"
@@ -87,19 +92,18 @@ optional = true
default-features = false
[dependencies.tinystr]
-version = "0.7.1"
+version = "0.7.3"
features = ["alloc"]
default-features = false
[dependencies.writeable]
-version = "0.5.1"
+version = "0.5.3"
+default-features = false
[dependencies.zerovec]
-version = "0.9.4"
+version = "0.10.0"
optional = true
-
-[dev-dependencies.criterion]
-version = "0.4"
+default-features = false
[dev-dependencies.iai]
version = "0.1.1"
@@ -125,3 +129,6 @@ serde = [
]
std = []
zerovec = ["dep:zerovec"]
+
+[target."cfg(not(target_arch = \"wasm32\"))".dev-dependencies.criterion]
+version = "0.4"
diff --git a/vendor/icu_locid/LICENSE b/vendor/icu_locid/LICENSE
index 9858d01ab..9845aa5f4 100644
--- a/vendor/icu_locid/LICENSE
+++ b/vendor/icu_locid/LICENSE
@@ -1,49 +1,42 @@
-UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
-
-See Terms of Use <https://www.unicode.org/copyright.html>
-for definitions of Unicode Inc.’s Data Files and Software.
-
-NOTICE TO USER: Carefully read the following legal agreement.
-BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
-DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
-YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
-TERMS AND CONDITIONS OF THIS AGREEMENT.
-IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
-THE DATA FILES OR SOFTWARE.
+UNICODE LICENSE V3
COPYRIGHT AND PERMISSION NOTICE
-Copyright © 1991-2022 Unicode, Inc. All rights reserved.
-Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Unicode data files and any associated documentation
-(the "Data Files") or Unicode software and any associated documentation
-(the "Software") to deal in the Data Files or Software
-without restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, and/or sell copies of
-the Data Files or Software, and to permit persons to whom the Data Files
-or Software are furnished to do so, provided that either
-(a) this copyright and permission notice appear with all copies
-of the Data Files or Software, or
-(b) this copyright and permission notice appear in associated
-Documentation.
-
-THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
-NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
-DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THE DATA FILES OR SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale,
-use or other dealings in these Data Files or Software without prior
-written authorization of the copyright holder.
+Copyright © 2020-2023 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
—
diff --git a/vendor/icu_locid/README.md b/vendor/icu_locid/README.md
index 5f49c35f5..9469e9b3c 100644
--- a/vendor/icu_locid/README.md
+++ b/vendor/icu_locid/README.md
@@ -1,5 +1,7 @@
# icu_locid [![crates.io](https://img.shields.io/crates/v/icu_locid)](https://crates.io/crates/icu_locid)
+<!-- cargo-rdme start -->
+
Parsing, manipulating, and serializing Unicode Language and Locale Identifiers.
This module is published as its own crate ([`icu_locid`](https://docs.rs/icu_locid/latest/icu_locid/))
@@ -22,7 +24,8 @@ If in doubt, use [`Locale`].
```rust
use icu::locid::Locale;
use icu::locid::{
- locale, subtags_language as language, subtags_region as region,
+ locale,
+ subtags::{language, region},
};
let mut loc: Locale = locale!("en-US");
@@ -43,6 +46,8 @@ For more details, see [`Locale`] and [`LanguageIdentifier`].
[`ICU4X`]: ../icu/index.html
[`Unicode Extensions`]: extensions
+<!-- cargo-rdme end -->
+
## More Information
For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/icu_locid/benches/iai_langid.rs b/vendor/icu_locid/benches/iai_langid.rs
index bf3b911cf..979da2f0f 100644
--- a/vendor/icu_locid/benches/iai_langid.rs
+++ b/vendor/icu_locid/benches/iai_langid.rs
@@ -2,9 +2,7 @@
// called LICENSE at the top level of the ICU4X source tree
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
-use icu_locid::{
- langid, subtags_language as language, subtags_region as region, LanguageIdentifier,
-};
+use icu_locid::{langid, subtags::language, subtags::region, LanguageIdentifier};
use writeable::Writeable;
const LIDS: &[LanguageIdentifier] = &[
diff --git a/vendor/icu_locid/src/extensions/other/mod.rs b/vendor/icu_locid/src/extensions/other/mod.rs
index 44d5c9cf8..933128739 100644
--- a/vendor/icu_locid/src/extensions/other/mod.rs
+++ b/vendor/icu_locid/src/extensions/other/mod.rs
@@ -21,10 +21,12 @@
mod subtag;
+use crate::helpers::ShortSlice;
use crate::parser::ParserError;
use crate::parser::SubtagIterator;
use alloc::vec::Vec;
-pub use subtag::Subtag;
+#[doc(inline)]
+pub use subtag::{subtag, Subtag};
/// A list of [`Other Use Extensions`] as defined in [`Unicode Locale
/// Identifier`] specification.
@@ -49,7 +51,7 @@ pub use subtag::Subtag;
#[derive(Clone, PartialEq, Eq, Debug, Default, Hash, PartialOrd, Ord)]
pub struct Other {
ext: u8,
- keys: Vec<Subtag>,
+ keys: ShortSlice<Subtag>,
}
impl Other {
@@ -71,6 +73,10 @@ impl Other {
/// assert_eq!(&other.to_string(), "a-foo-bar");
/// ```
pub fn from_vec_unchecked(ext: u8, keys: Vec<Subtag>) -> Self {
+ Self::from_short_slice_unchecked(ext, keys.into())
+ }
+
+ pub(crate) fn from_short_slice_unchecked(ext: u8, keys: ShortSlice<Subtag>) -> Self {
assert!(ext.is_ascii_alphabetic());
Self { ext, keys }
}
@@ -78,7 +84,7 @@ impl Other {
pub(crate) fn try_from_iter(ext: u8, iter: &mut SubtagIterator) -> Result<Self, ParserError> {
debug_assert!(ext.is_ascii_alphabetic());
- let mut keys = Vec::new();
+ let mut keys = ShortSlice::new();
while let Some(subtag) = iter.peek() {
if !Subtag::valid_key(subtag) {
break;
@@ -89,7 +95,7 @@ impl Other {
iter.next();
}
- Ok(Self::from_vec_unchecked(ext, keys))
+ Ok(Self::from_short_slice_unchecked(ext, keys))
}
/// Gets the tag character for this extension as a &str.
diff --git a/vendor/icu_locid/src/extensions/other/subtag.rs b/vendor/icu_locid/src/extensions/other/subtag.rs
index ad4d6a0f2..03be56940 100644
--- a/vendor/icu_locid/src/extensions/other/subtag.rs
+++ b/vendor/icu_locid/src/extensions/other/subtag.rs
@@ -11,12 +11,13 @@ impl_tinystr_subtag!(
/// # Examples
///
/// ```
- /// use icu::locid::extensions_other_subtag as subtag;
+ /// use icu::locid::extensions::other::subtag;
///
/// assert_eq!(subtag!("Foo").as_str(), "foo");
/// ```
Subtag,
- extensions::other::Subtag,
+ extensions::other,
+ subtag,
extensions_other_subtag,
2..=8,
s,
diff --git a/vendor/icu_locid/src/extensions/private/mod.rs b/vendor/icu_locid/src/extensions/private/mod.rs
index 8382d166f..161d47f56 100644
--- a/vendor/icu_locid/src/extensions/private/mod.rs
+++ b/vendor/icu_locid/src/extensions/private/mod.rs
@@ -13,7 +13,7 @@
//! # Examples
//!
//! ```
-//! use icu::locid::extensions_private_subtag as subtag;
+//! use icu::locid::extensions::private::subtag;
//! use icu::locid::{locale, Locale};
//!
//! let mut loc: Locale = "en-US-x-foo-faa".parse().expect("Parsing failed.");
@@ -32,8 +32,10 @@ mod other;
use alloc::vec::Vec;
use core::ops::Deref;
-pub use other::Subtag;
+#[doc(inline)]
+pub use other::{subtag, Subtag};
+use crate::helpers::ShortSlice;
use crate::parser::ParserError;
use crate::parser::SubtagIterator;
@@ -58,7 +60,7 @@ use crate::parser::SubtagIterator;
/// [`Private Use Extensions`]: https://unicode.org/reports/tr35/#pu_extensions
/// [`Unicode Locale Identifier`]: https://unicode.org/reports/tr35/#Unicode_locale_identifier
#[derive(Clone, PartialEq, Eq, Debug, Default, Hash, PartialOrd, Ord)]
-pub struct Private(Vec<Subtag>);
+pub struct Private(ShortSlice<Subtag>);
impl Private {
/// Returns a new empty list of private-use extensions. Same as [`default()`](Default::default()), but is `const`.
@@ -72,7 +74,7 @@ impl Private {
/// ```
#[inline]
pub const fn new() -> Self {
- Self(Vec::new())
+ Self(ShortSlice::new())
}
/// A constructor which takes a pre-sorted list of [`Subtag`].
@@ -89,7 +91,7 @@ impl Private {
/// assert_eq!(&private.to_string(), "x-foo-bar");
/// ```
pub fn from_vec_unchecked(input: Vec<Subtag>) -> Self {
- Self(input)
+ Self(input.into())
}
/// Empties the [`Private`] list.
@@ -116,9 +118,9 @@ impl Private {
pub(crate) fn try_from_iter(iter: &mut SubtagIterator) -> Result<Self, ParserError> {
let keys = iter
.map(Subtag::try_from_bytes)
- .collect::<Result<Vec<_>, _>>()?;
+ .collect::<Result<ShortSlice<_>, _>>()?;
- Ok(Self::from_vec_unchecked(keys))
+ Ok(Self(keys))
}
pub(crate) fn for_each_subtag_str<E, F>(&self, f: &mut F) -> Result<(), E>
diff --git a/vendor/icu_locid/src/extensions/private/other.rs b/vendor/icu_locid/src/extensions/private/other.rs
index a91e12855..810ffa2f4 100644
--- a/vendor/icu_locid/src/extensions/private/other.rs
+++ b/vendor/icu_locid/src/extensions/private/other.rs
@@ -18,7 +18,8 @@ impl_tinystr_subtag!(
/// assert_eq!(subtag1.as_str(), "foo");
/// ```
Subtag,
- extensions::private::Subtag,
+ extensions::private,
+ subtag,
extensions_private_subtag,
1..=8,
s,
diff --git a/vendor/icu_locid/src/extensions/transform/fields.rs b/vendor/icu_locid/src/extensions/transform/fields.rs
index f08581a87..2f12de9d1 100644
--- a/vendor/icu_locid/src/extensions/transform/fields.rs
+++ b/vendor/icu_locid/src/extensions/transform/fields.rs
@@ -24,11 +24,10 @@ use super::Value;
/// # Examples
///
/// ```
-/// use icu::locid::extensions::transform::{Fields, Key, Value};
-/// use icu::locid::extensions_transform_key as key;
+/// use icu::locid::extensions::transform::{key, Fields, Key, Value};
///
/// let value = "hybrid".parse::<Value>().expect("Failed to parse a Value.");
-/// let fields = vec![(key!("h0"), value)].into_iter().collect::<Fields>();
+/// let fields = [(key!("h0"), value)].into_iter().collect::<Fields>();
///
/// assert_eq!(&fields.to_string(), "h0-hybrid");
/// ```
@@ -76,11 +75,10 @@ impl Fields {
/// # Examples
///
/// ```
- /// use icu::locid::extensions::transform::{Fields, Value};
- /// use icu::locid::extensions_transform_key as key;
+ /// use icu::locid::extensions::transform::{key, Fields, Value};
///
/// let value = "hybrid".parse::<Value>().expect("Failed to parse a Value.");
- /// let mut fields = vec![(key!("h0"), value)].into_iter().collect::<Fields>();
+ /// let mut fields = [(key!("h0"), value)].into_iter().collect::<Fields>();
///
/// assert_eq!(&fields.to_string(), "h0-hybrid");
///
@@ -102,7 +100,7 @@ impl Fields {
///
/// let key: Key = "h0".parse().expect("Failed to parse a Key.");
/// let value: Value = "hybrid".parse().expect("Failed to parse a Value.");
- /// let mut fields: Fields = vec![(key, value)].into_iter().collect();
+ /// let mut fields = [(key, value)].into_iter().collect::<Fields>();
///
/// let key: Key = "h0".parse().expect("Failed to parse a Key.");
/// assert!(&fields.contains_key(&key));
@@ -121,11 +119,10 @@ impl Fields {
/// # Examples
///
/// ```
- /// use icu::locid::extensions::transform::{Fields, Key, Value};
- /// use icu::locid::extensions_transform_key as key;
+ /// use icu::locid::extensions::transform::{key, Fields, Key, Value};
///
/// let value = "hybrid".parse::<Value>().unwrap();
- /// let fields = vec![(key!("h0"), value.clone())]
+ /// let fields = [(key!("h0"), value.clone())]
/// .into_iter()
/// .collect::<Fields>();
///
@@ -144,9 +141,7 @@ impl Fields {
/// # Examples
///
/// ```
- /// use icu::locid::extensions::transform::Key;
- /// use icu::locid::extensions::transform::Value;
- /// use icu::locid::extensions_transform_key as key;
+ /// use icu::locid::extensions::transform::{key, Key, Value};
/// use icu::locid::Locale;
///
/// let lower = "lower".parse::<Value>().expect("valid extension subtag");
@@ -169,7 +164,7 @@ impl Fields {
/// # Examples
///
/// ```
- /// use icu::locid::extensions_transform_key as key;
+ /// use icu::locid::extensions::transform::key;
/// use icu::locid::Locale;
///
/// let mut loc: Locale = "und-t-h0-hybrid-d0-hex-m0-xml".parse().unwrap();
diff --git a/vendor/icu_locid/src/extensions/transform/key.rs b/vendor/icu_locid/src/extensions/transform/key.rs
index 5400988a1..afdb31d76 100644
--- a/vendor/icu_locid/src/extensions/transform/key.rs
+++ b/vendor/icu_locid/src/extensions/transform/key.rs
@@ -18,7 +18,8 @@ impl_tinystr_subtag!(
/// assert_eq!(key1.as_str(), "k0");
/// ```
Key,
- extensions::transform::Key,
+ extensions::transform,
+ key,
extensions_transform_key,
2..=2,
s,
diff --git a/vendor/icu_locid/src/extensions/transform/mod.rs b/vendor/icu_locid/src/extensions/transform/mod.rs
index 7b97d87f6..4156c5910 100644
--- a/vendor/icu_locid/src/extensions/transform/mod.rs
+++ b/vendor/icu_locid/src/extensions/transform/mod.rs
@@ -35,14 +35,15 @@ mod key;
mod value;
pub use fields::Fields;
-pub use key::Key;
+#[doc(inline)]
+pub use key::{key, Key};
pub use value::Value;
+use crate::helpers::ShortSlice;
use crate::parser::SubtagIterator;
use crate::parser::{parse_language_identifier_from_iter, ParserError, ParserMode};
use crate::subtags::Language;
use crate::LanguageIdentifier;
-use alloc::vec;
use litemap::LiteMap;
/// A list of [`Unicode BCP47 T Extensions`] as defined in [`Unicode Locale
@@ -144,21 +145,24 @@ impl Transform {
}
let mut current_tkey = None;
- let mut current_tvalue = vec![];
+ let mut current_tvalue = ShortSlice::new();
+ let mut has_current_tvalue = false;
while let Some(subtag) = iter.peek() {
if let Some(tkey) = current_tkey {
if let Ok(val) = Value::parse_subtag(subtag) {
- current_tvalue.push(val);
+ has_current_tvalue = true;
+ if let Some(val) = val {
+ current_tvalue.push(val);
+ }
} else {
- if current_tvalue.is_empty() {
+ if !has_current_tvalue {
return Err(ParserError::InvalidExtension);
}
- tfields.try_insert(
- tkey,
- Value::from_vec_unchecked(current_tvalue.drain(..).flatten().collect()),
- );
+ tfields.try_insert(tkey, Value::from_short_slice_unchecked(current_tvalue));
current_tkey = None;
+ current_tvalue = ShortSlice::new();
+ has_current_tvalue = false;
continue;
}
} else if let Ok(tkey) = Key::try_from_bytes(subtag) {
@@ -171,13 +175,10 @@ impl Transform {
}
if let Some(tkey) = current_tkey {
- if current_tvalue.is_empty() {
+ if !has_current_tvalue {
return Err(ParserError::InvalidExtension);
}
- tfields.try_insert(
- tkey,
- Value::from_vec_unchecked(current_tvalue.into_iter().flatten().collect()),
- );
+ tfields.try_insert(tkey, Value::from_short_slice_unchecked(current_tvalue));
}
Ok(Self {
diff --git a/vendor/icu_locid/src/extensions/transform/value.rs b/vendor/icu_locid/src/extensions/transform/value.rs
index f908b0208..798e84793 100644
--- a/vendor/icu_locid/src/extensions/transform/value.rs
+++ b/vendor/icu_locid/src/extensions/transform/value.rs
@@ -2,9 +2,8 @@
// called LICENSE at the top level of the ICU4X source tree
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+use crate::helpers::ShortSlice;
use crate::parser::{ParserError, SubtagIterator};
-use alloc::vec;
-use alloc::vec::Vec;
use core::ops::RangeInclusive;
use core::str::FromStr;
use tinystr::TinyAsciiStr;
@@ -28,7 +27,7 @@ use tinystr::TinyAsciiStr;
/// "no".parse::<Value>().expect_err("Invalid Value.");
/// ```
#[derive(Debug, PartialEq, Eq, Clone, Hash, PartialOrd, Ord, Default)]
-pub struct Value(Vec<TinyAsciiStr<{ *TYPE_LENGTH.end() }>>);
+pub struct Value(ShortSlice<TinyAsciiStr<{ *TYPE_LENGTH.end() }>>);
const TYPE_LENGTH: RangeInclusive<usize> = 3..=8;
const TRUE_TVALUE: TinyAsciiStr<8> = tinystr::tinystr!(8, "true");
@@ -45,7 +44,7 @@ impl Value {
/// let value = Value::try_from_bytes(b"hybrid").expect("Parsing failed.");
/// ```
pub fn try_from_bytes(input: &[u8]) -> Result<Self, ParserError> {
- let mut v = vec![];
+ let mut v = ShortSlice::default();
let mut has_value = false;
for subtag in SubtagIterator::new(input) {
@@ -66,12 +65,14 @@ impl Value {
Ok(Self(v))
}
- pub(crate) fn from_vec_unchecked(input: Vec<TinyAsciiStr<{ *TYPE_LENGTH.end() }>>) -> Self {
+ pub(crate) fn from_short_slice_unchecked(
+ input: ShortSlice<TinyAsciiStr<{ *TYPE_LENGTH.end() }>>,
+ ) -> Self {
Self(input)
}
pub(crate) fn is_type_subtag(t: &[u8]) -> bool {
- TYPE_LENGTH.contains(&t.len()) && !t.iter().any(|c: &u8| !c.is_ascii_alphanumeric())
+ TYPE_LENGTH.contains(&t.len()) && t.iter().all(u8::is_ascii_alphanumeric)
}
pub(crate) fn parse_subtag(
@@ -122,9 +123,12 @@ fn test_writeable() {
let foobar = "foobar".parse().unwrap();
assert_writeable_eq!(Value::default(), "true");
- assert_writeable_eq!(Value::from_vec_unchecked(vec![hybrid]), "hybrid");
assert_writeable_eq!(
- Value::from_vec_unchecked(vec![hybrid, foobar]),
+ Value::from_short_slice_unchecked(vec![hybrid].into()),
+ "hybrid"
+ );
+ assert_writeable_eq!(
+ Value::from_short_slice_unchecked(vec![hybrid, foobar].into()),
"hybrid-foobar"
);
}
diff --git a/vendor/icu_locid/src/extensions/unicode/attribute.rs b/vendor/icu_locid/src/extensions/unicode/attribute.rs
index ba4b70924..f6fc53e05 100644
--- a/vendor/icu_locid/src/extensions/unicode/attribute.rs
+++ b/vendor/icu_locid/src/extensions/unicode/attribute.rs
@@ -12,8 +12,7 @@ impl_tinystr_subtag!(
/// # Examples
///
/// ```
- /// use icu::locid::extensions::unicode::Attribute;
- /// use icu::locid::extensions_unicode_attribute as attribute;
+ /// use icu::locid::extensions::unicode::{attribute, Attribute};
///
/// let attr: Attribute =
/// "buddhist".parse().expect("Failed to parse an Attribute.");
@@ -21,7 +20,8 @@ impl_tinystr_subtag!(
/// assert_eq!(attr, attribute!("buddhist"));
/// ```
Attribute,
- extensions::unicode::Attribute,
+ extensions::unicode,
+ attribute,
extensions_unicode_attribute,
3..=8,
s,
diff --git a/vendor/icu_locid/src/extensions/unicode/attributes.rs b/vendor/icu_locid/src/extensions/unicode/attributes.rs
index e58fb04da..1cdaded30 100644
--- a/vendor/icu_locid/src/extensions/unicode/attributes.rs
+++ b/vendor/icu_locid/src/extensions/unicode/attributes.rs
@@ -4,6 +4,7 @@
use super::Attribute;
+use crate::helpers::ShortSlice;
use alloc::vec::Vec;
use core::ops::Deref;
@@ -30,7 +31,7 @@ use core::ops::Deref;
/// assert_eq!(attributes.to_string(), "foobar-testing");
/// ```
#[derive(Default, Debug, PartialEq, Eq, Clone, Hash, PartialOrd, Ord)]
-pub struct Attributes(Vec<Attribute>);
+pub struct Attributes(ShortSlice<Attribute>);
impl Attributes {
/// Returns a new empty set of attributes. Same as [`default()`](Default::default()), but is `const`.
@@ -44,7 +45,7 @@ impl Attributes {
/// ```
#[inline]
pub const fn new() -> Self {
- Self(Vec::new())
+ Self(ShortSlice::new())
}
/// A constructor which takes a pre-sorted list of [`Attribute`] elements.
@@ -68,6 +69,10 @@ impl Attributes {
/// for the caller to use [`binary_search`](slice::binary_search) instead of [`sort`](slice::sort)
/// and [`dedup`](Vec::dedup()).
pub fn from_vec_unchecked(input: Vec<Attribute>) -> Self {
+ Self(input.into())
+ }
+
+ pub(crate) fn from_short_slice_unchecked(input: ShortSlice<Attribute>) -> Self {
Self(input)
}
@@ -78,8 +83,7 @@ impl Attributes {
/// # Examples
///
/// ```
- /// use icu::locid::extensions::unicode::{Attribute, Attributes};
- /// use icu::locid::extensions_unicode_attribute as attribute;
+ /// use icu::locid::extensions::unicode::{attribute, Attribute, Attributes};
/// use writeable::assert_writeable_eq;
///
/// let mut attributes = Attributes::from_vec_unchecked(vec![
diff --git a/vendor/icu_locid/src/extensions/unicode/key.rs b/vendor/icu_locid/src/extensions/unicode/key.rs
index bdfdd4e5c..e008ffd5a 100644
--- a/vendor/icu_locid/src/extensions/unicode/key.rs
+++ b/vendor/icu_locid/src/extensions/unicode/key.rs
@@ -17,7 +17,8 @@ impl_tinystr_subtag!(
/// assert!("ca".parse::<Key>().is_ok());
/// ```
Key,
- extensions::unicode::Key,
+ extensions::unicode,
+ key,
extensions_unicode_key,
2..=2,
s,
diff --git a/vendor/icu_locid/src/extensions/unicode/keywords.rs b/vendor/icu_locid/src/extensions/unicode/keywords.rs
index 4e2fbae9a..c2839fa44 100644
--- a/vendor/icu_locid/src/extensions/unicode/keywords.rs
+++ b/vendor/icu_locid/src/extensions/unicode/keywords.rs
@@ -13,7 +13,7 @@ use crate::helpers::ShortSlice;
use crate::ordering::SubtagOrderingResult;
/// A list of [`Key`]-[`Value`] pairs representing functional information
-/// about locale's internationnalization preferences.
+/// about locale's internationalization preferences.
///
/// Here are examples of fields used in Unicode:
/// - `hc` - Hour Cycle (`h11`, `h12`, `h23`, `h24`)
@@ -30,11 +30,11 @@ use crate::ordering::SubtagOrderingResult;
///
/// ```
/// use icu::locid::{
-/// extensions::unicode::Keywords, extensions_unicode_key as key,
-/// extensions_unicode_value as value, locale,
+/// extensions::unicode::{key, value, Keywords},
+/// locale,
/// };
///
-/// let keywords = vec![(key!("hc"), value!("h23"))]
+/// let keywords = [(key!("hc"), value!("h23"))]
/// .into_iter()
/// .collect::<Keywords>();
///
@@ -45,7 +45,7 @@ use crate::ordering::SubtagOrderingResult;
///
/// ```
/// use icu::locid::{
-/// extensions_unicode_key as key, extensions_unicode_value as value,
+/// extensions::unicode::{key, value},
/// Locale,
/// };
///
@@ -116,12 +116,9 @@ impl Keywords {
/// # Examples
///
/// ```
- /// use icu::locid::{
- /// extensions::unicode::Keywords, extensions_unicode_key as key,
- /// extensions_unicode_value as value,
- /// };
+ /// use icu::locid::extensions::unicode::{key, value, Keywords};
///
- /// let keywords = vec![(key!("ca"), value!("gregory"))]
+ /// let keywords = [(key!("ca"), value!("gregory"))]
/// .into_iter()
/// .collect::<Keywords>();
///
@@ -141,12 +138,9 @@ impl Keywords {
/// # Examples
///
/// ```
- /// use icu::locid::{
- /// extensions::unicode::Keywords, extensions_unicode_key as key,
- /// extensions_unicode_value as value,
- /// };
+ /// use icu::locid::extensions::unicode::{key, value, Keywords};
///
- /// let keywords = vec![(key!("ca"), value!("buddhist"))]
+ /// let keywords = [(key!("ca"), value!("buddhist"))]
/// .into_iter()
/// .collect::<Keywords>();
///
@@ -167,12 +161,9 @@ impl Keywords {
/// # Examples
///
/// ```
- /// use icu::locid::{
- /// extensions::unicode::Keywords, extensions_unicode_key as key,
- /// extensions_unicode_value as value,
- /// };
+ /// use icu::locid::extensions::unicode::{key, value, Keywords};
///
- /// let mut keywords = vec![(key!("ca"), value!("buddhist"))]
+ /// let mut keywords = [(key!("ca"), value!("buddhist"))]
/// .into_iter()
/// .collect::<Keywords>();
///
@@ -196,10 +187,8 @@ impl Keywords {
/// ```
/// use icu::locid::extensions::unicode::Key;
/// use icu::locid::extensions::unicode::Value;
+ /// use icu::locid::extensions::unicode::{key, value};
/// use icu::locid::Locale;
- /// use icu::locid::{
- /// extensions_unicode_key as key, extensions_unicode_value as value,
- /// };
///
/// let mut loc: Locale = "und-u-hello-ca-buddhist-hc-h12"
/// .parse()
@@ -222,8 +211,7 @@ impl Keywords {
/// # Examples
///
/// ```
- /// use icu::locid::extensions::unicode::Key;
- /// use icu::locid::extensions_unicode_key as key;
+ /// use icu::locid::extensions::unicode::{key, Key};
/// use icu::locid::Locale;
///
/// let mut loc: Locale = "und-u-hello-ca-buddhist-hc-h12"
@@ -258,7 +246,7 @@ impl Keywords {
/// # Examples
///
/// ```
- /// use icu::locid::extensions_unicode_key as key;
+ /// use icu::locid::extensions::unicode::key;
/// use icu::locid::Locale;
///
/// let mut loc: Locale = "und-u-ca-buddhist-hc-h12-ms-metric".parse().unwrap();
diff --git a/vendor/icu_locid/src/extensions/unicode/mod.rs b/vendor/icu_locid/src/extensions/unicode/mod.rs
index 687a8c383..95f1a2d78 100644
--- a/vendor/icu_locid/src/extensions/unicode/mod.rs
+++ b/vendor/icu_locid/src/extensions/unicode/mod.rs
@@ -11,12 +11,8 @@
//! # Examples
//!
//! ```
+//! use icu::locid::extensions::unicode::{attribute, key, value, Unicode};
//! use icu::locid::Locale;
-//! use icu::locid::{
-//! extensions::unicode::Unicode,
-//! extensions_unicode_attribute as attribute,
-//! extensions_unicode_key as key, extensions_unicode_value as value,
-//! };
//!
//! let loc: Locale = "en-US-u-foobar-hc-h12".parse().expect("Parsing failed.");
//!
@@ -36,13 +32,16 @@ mod key;
mod keywords;
mod value;
-use alloc::vec;
-pub use attribute::Attribute;
+#[doc(inline)]
+pub use attribute::{attribute, Attribute};
pub use attributes::Attributes;
-pub use key::Key;
+#[doc(inline)]
+pub use key::{key, Key};
pub use keywords::Keywords;
-pub use value::Value;
+#[doc(inline)]
+pub use value::{value, Value};
+use crate::helpers::ShortSlice;
use crate::parser::ParserError;
use crate::parser::SubtagIterator;
use litemap::LiteMap;
@@ -63,10 +62,8 @@ use litemap::LiteMap;
/// # Examples
///
/// ```
+/// use icu::locid::extensions::unicode::{key, value};
/// use icu::locid::Locale;
-/// use icu::locid::{
-/// extensions_unicode_key as key, extensions_unicode_value as value,
-/// };
///
/// let loc: Locale =
/// "de-u-hc-h12-ca-buddhist".parse().expect("Parsing failed.");
@@ -138,11 +135,7 @@ impl Unicode {
}
pub(crate) fn try_from_iter(iter: &mut SubtagIterator) -> Result<Self, ParserError> {
- let mut attributes = vec![];
- let mut keywords = LiteMap::new();
-
- let mut current_keyword = None;
- let mut current_type = vec![];
+ let mut attributes = ShortSlice::new();
while let Some(subtag) = iter.peek() {
if let Ok(attr) = Attribute::try_from_bytes(subtag) {
@@ -155,17 +148,22 @@ impl Unicode {
iter.next();
}
+ let mut keywords = LiteMap::new();
+
+ let mut current_keyword = None;
+ let mut current_value = ShortSlice::new();
+
while let Some(subtag) = iter.peek() {
let slen = subtag.len();
if slen == 2 {
if let Some(kw) = current_keyword.take() {
- keywords.try_insert(kw, Value::from_vec_unchecked(current_type));
- current_type = vec![];
+ keywords.try_insert(kw, Value::from_short_slice_unchecked(current_value));
+ current_value = ShortSlice::new();
}
current_keyword = Some(Key::try_from_bytes(subtag)?);
} else if current_keyword.is_some() {
match Value::parse_subtag(subtag) {
- Ok(Some(t)) => current_type.push(t),
+ Ok(Some(t)) => current_value.push(t),
Ok(None) => {}
Err(_) => break,
}
@@ -176,7 +174,7 @@ impl Unicode {
}
if let Some(kw) = current_keyword.take() {
- keywords.try_insert(kw, Value::from_vec_unchecked(current_type));
+ keywords.try_insert(kw, Value::from_short_slice_unchecked(current_value));
}
// Ensure we've defined at least one attribute or keyword
@@ -186,7 +184,7 @@ impl Unicode {
Ok(Self {
keywords: keywords.into(),
- attributes: Attributes::from_vec_unchecked(attributes),
+ attributes: Attributes::from_short_slice_unchecked(attributes),
})
}
diff --git a/vendor/icu_locid/src/extensions/unicode/value.rs b/vendor/icu_locid/src/extensions/unicode/value.rs
index f1b2402de..d935656a9 100644
--- a/vendor/icu_locid/src/extensions/unicode/value.rs
+++ b/vendor/icu_locid/src/extensions/unicode/value.rs
@@ -4,7 +4,6 @@
use crate::helpers::ShortSlice;
use crate::parser::{ParserError, SubtagIterator};
-use alloc::vec::Vec;
use core::ops::RangeInclusive;
use core::str::FromStr;
use tinystr::TinyAsciiStr;
@@ -20,9 +19,7 @@ use tinystr::TinyAsciiStr;
/// # Examples
///
/// ```
-/// use icu::locid::{
-/// extensions::unicode::Value, extensions_unicode_value as value,
-/// };
+/// use icu::locid::extensions::unicode::{value, Value};
/// use writeable::assert_writeable_eq;
///
/// assert_writeable_eq!(value!("gregory"), "gregory");
@@ -52,7 +49,7 @@ impl Value {
/// Value::try_from_bytes(b"buddhist").expect("Parsing failed.");
/// ```
pub fn try_from_bytes(input: &[u8]) -> Result<Self, ParserError> {
- let mut v = Vec::new();
+ let mut v = ShortSlice::new();
if !input.is_empty() {
for subtag in SubtagIterator::new(input) {
@@ -62,7 +59,7 @@ impl Value {
}
}
}
- Ok(Self(v.into()))
+ Ok(Self(v))
}
/// Const constructor for when the value contains only a single subtag.
@@ -85,7 +82,7 @@ impl Value {
#[doc(hidden)]
pub fn as_tinystr_slice(&self) -> &[TinyAsciiStr<8>] {
- self.0.as_slice()
+ &self.0
}
#[doc(hidden)]
@@ -105,8 +102,8 @@ impl Value {
}
}
- pub(crate) fn from_vec_unchecked(input: Vec<TinyAsciiStr<8>>) -> Self {
- Self(input.into())
+ pub(crate) fn from_short_slice_unchecked(input: ShortSlice<TinyAsciiStr<8>>) -> Self {
+ Self(input)
}
#[doc(hidden)]
@@ -140,7 +137,7 @@ impl Value {
where
F: FnMut(&str) -> Result<(), E>,
{
- self.0.as_slice().iter().map(|t| t.as_str()).try_for_each(f)
+ self.0.iter().map(TinyAsciiStr::as_str).try_for_each(f)
}
}
@@ -161,10 +158,8 @@ impl_writeable_for_subtag_list!(Value, "islamic", "civil");
/// # Examples
///
/// ```
+/// use icu::locid::extensions::unicode::{key, value};
/// use icu::locid::Locale;
-/// use icu::locid::{
-/// extensions_unicode_key as key, extensions_unicode_value as value,
-/// };
///
/// let loc: Locale = "de-u-ca-buddhist".parse().unwrap();
///
@@ -176,6 +171,7 @@ impl_writeable_for_subtag_list!(Value, "islamic", "civil");
///
/// [`Value`]: crate::extensions::unicode::Value
#[macro_export]
+#[doc(hidden)]
macro_rules! extensions_unicode_value {
($value:literal) => {{
// What we want:
@@ -196,3 +192,5 @@ macro_rules! extensions_unicode_value {
R
}};
}
+#[doc(inline)]
+pub use extensions_unicode_value as value;
diff --git a/vendor/icu_locid/src/helpers.rs b/vendor/icu_locid/src/helpers.rs
index 42b2b7286..d12435fbf 100644
--- a/vendor/icu_locid/src/helpers.rs
+++ b/vendor/icu_locid/src/helpers.rs
@@ -7,6 +7,7 @@ use core::iter::FromIterator;
use alloc::boxed::Box;
use alloc::vec;
use alloc::vec::Vec;
+use core::ops::{Deref, DerefMut};
use litemap::store::*;
/// Internal: A vector that supports no-allocation, constant values if length 0 or 1.
@@ -43,24 +44,6 @@ impl<T> ShortSlice<T> {
}
#[inline]
- pub fn as_slice(&self) -> &[T] {
- match self {
- ShortSlice::ZeroOne(None) => &[],
- ShortSlice::ZeroOne(Some(v)) => core::slice::from_ref(v),
- ShortSlice::Multi(v) => v,
- }
- }
-
- #[inline]
- pub fn as_mut_slice(&mut self) -> &mut [T] {
- match self {
- ShortSlice::ZeroOne(None) => &mut [],
- ShortSlice::ZeroOne(Some(v)) => core::slice::from_mut(v),
- ShortSlice::Multi(v) => v,
- }
- }
-
- #[inline]
pub const fn single(&self) -> Option<&T> {
match self {
ShortSlice::ZeroOne(Some(v)) => Some(v),
@@ -134,6 +117,43 @@ impl<T> ShortSlice<T> {
pub fn clear(&mut self) {
let _ = core::mem::replace(self, ShortSlice::ZeroOne(None));
}
+
+ pub fn retain<F>(&mut self, mut f: F)
+ where
+ F: FnMut(&T) -> bool,
+ {
+ *self = match core::mem::take(self) {
+ Self::ZeroOne(Some(one)) if f(&one) => Self::ZeroOne(Some(one)),
+ Self::ZeroOne(_) => Self::ZeroOne(None),
+ Self::Multi(slice) => {
+ let mut vec = slice.into_vec();
+ vec.retain(f);
+ Self::from(vec)
+ }
+ };
+ }
+}
+
+impl<T> Deref for ShortSlice<T> {
+ type Target = [T];
+
+ fn deref(&self) -> &Self::Target {
+ match self {
+ ShortSlice::ZeroOne(None) => &[],
+ ShortSlice::ZeroOne(Some(v)) => core::slice::from_ref(v),
+ ShortSlice::Multi(v) => v,
+ }
+ }
+}
+
+impl<T> DerefMut for ShortSlice<T> {
+ fn deref_mut(&mut self) -> &mut Self::Target {
+ match self {
+ ShortSlice::ZeroOne(None) => &mut [],
+ ShortSlice::ZeroOne(Some(v)) => core::slice::from_mut(v),
+ ShortSlice::Multi(v) => v,
+ }
+ }
}
impl<T> From<Vec<T>> for ShortSlice<T> {
@@ -155,7 +175,18 @@ impl<T> Default for ShortSlice<T> {
impl<T> FromIterator<T> for ShortSlice<T> {
fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self {
- iter.into_iter().collect::<Vec<_>>().into()
+ let mut iter = iter.into_iter();
+ match (iter.next(), iter.next()) {
+ (Some(first), Some(second)) => {
+ // Size hint behaviour same as `Vec::extend` + 2
+ let mut vec = Vec::with_capacity(iter.size_hint().0.saturating_add(3));
+ vec.push(first);
+ vec.push(second);
+ vec.extend(iter);
+ Self::Multi(vec.into_boxed_slice())
+ }
+ (first, _) => Self::ZeroOne(first),
+ }
}
}
@@ -176,7 +207,7 @@ impl<K, V> Store<K, V> for ShortSlice<(K, V)> {
#[inline]
fn lm_get(&self, index: usize) -> Option<(&K, &V)> {
- self.as_slice().get(index).map(|elt| (&elt.0, &elt.1))
+ self.get(index).map(|elt| (&elt.0, &elt.1))
}
#[inline]
@@ -193,7 +224,7 @@ impl<K, V> Store<K, V> for ShortSlice<(K, V)> {
where
F: FnMut(&K) -> core::cmp::Ordering,
{
- self.as_slice().binary_search_by(|(k, _)| cmp(k))
+ self.binary_search_by(|(k, _)| cmp(k))
}
}
@@ -212,9 +243,7 @@ impl<K, V> StoreMut<K, V> for ShortSlice<(K, V)> {
fn lm_reserve(&mut self, _additional: usize) {}
fn lm_get_mut(&mut self, index: usize) -> Option<(&K, &mut V)> {
- self.as_mut_slice()
- .get_mut(index)
- .map(|elt| (&elt.0, &mut elt.1))
+ self.get_mut(index).map(|elt| (&elt.0, &mut elt.1))
}
fn lm_push(&mut self, key: K, value: V) {
@@ -232,6 +261,13 @@ impl<K, V> StoreMut<K, V> for ShortSlice<(K, V)> {
fn lm_clear(&mut self) {
self.clear();
}
+
+ fn lm_retain<F>(&mut self, mut predicate: F)
+ where
+ F: FnMut(&K, &V) -> bool,
+ {
+ self.retain(|(k, v)| predicate(k, v))
+ }
}
impl<'a, K: 'a, V: 'a> StoreIterable<'a, K, V> for ShortSlice<(K, V)> {
@@ -239,14 +275,14 @@ impl<'a, K: 'a, V: 'a> StoreIterable<'a, K, V> for ShortSlice<(K, V)> {
core::iter::Map<core::slice::Iter<'a, (K, V)>, for<'r> fn(&'r (K, V)) -> (&'r K, &'r V)>;
fn lm_iter(&'a self) -> Self::KeyValueIter {
- self.as_slice().iter().map(|elt| (&elt.0, &elt.1))
+ self.iter().map(|elt| (&elt.0, &elt.1))
}
}
impl<K, V> StoreFromIterator<K, V> for ShortSlice<(K, V)> {}
#[test]
-fn test_shortvec_impl() {
+fn test_short_slice_impl() {
litemap::testing::check_store::<ShortSlice<(u32, u64)>>();
}
@@ -254,8 +290,9 @@ macro_rules! impl_tinystr_subtag {
(
$(#[$doc:meta])*
$name:ident,
- $($full_name:ident)::+,
+ $($path:ident)::+,
$macro_name:ident,
+ $legacy_macro_name:ident,
$len_start:literal..=$len_end:literal,
$tinystr_ident:ident,
$validate:expr,
@@ -278,7 +315,7 @@ macro_rules! impl_tinystr_subtag {
/// # Examples
///
/// ```
- #[doc = concat!("use icu_locid::", stringify!($($full_name)::+), ";")]
+ #[doc = concat!("use icu_locid::", stringify!($($path::)+), stringify!($name), ";")]
///
#[doc = concat!("assert!(", stringify!($name), "::try_from_bytes(b", stringify!($good_example), ").is_ok());")]
#[doc = concat!("assert!(", stringify!($name), "::try_from_bytes(b", stringify!($bad_example), ").is_err());")]
@@ -349,6 +386,11 @@ macro_rules! impl_tinystr_subtag {
self.0.as_str()
}
+ #[doc(hidden)]
+ pub const fn into_tinystr(&self) -> tinystr::TinyAsciiStr<$len_end> {
+ self.0
+ }
+
/// Compare with BCP-47 bytes.
///
/// The return value is equivalent to what would happen if you first converted
@@ -389,7 +431,7 @@ macro_rules! impl_tinystr_subtag {
impl From<$name> for tinystr::TinyAsciiStr<$len_end> {
fn from(input: $name) -> Self {
- input.0
+ input.into_tinystr()
}
}
@@ -417,37 +459,40 @@ macro_rules! impl_tinystr_subtag {
/// Parsing errors don't have to be handled at runtime:
/// ```
/// assert_eq!(
- #[doc = concat!(" icu_locid::", stringify!($macro_name), "!(", stringify!($good_example) ,"),")]
- #[doc = concat!(" ", stringify!($good_example), ".parse::<icu_locid::", stringify!($($full_name)::+),">().unwrap()")]
+ #[doc = concat!(" icu_locid::", $(stringify!($path), "::",)+ stringify!($macro_name), "!(", stringify!($good_example) ,"),")]
+ #[doc = concat!(" ", stringify!($good_example), ".parse::<icu_locid::", $(stringify!($path), "::",)+ stringify!($name), ">().unwrap()")]
/// );
/// ```
///
/// Invalid input is a compile failure:
/// ```compile_fail,E0080
- #[doc = concat!("icu_locid::", stringify!($macro_name), "!(", stringify!($bad_example) ,");")]
+ #[doc = concat!("icu_locid::", $(stringify!($path), "::",)+ stringify!($macro_name), "!(", stringify!($bad_example) ,");")]
/// ```
///
- #[doc = concat!("[`", stringify!($name), "`]: crate::", stringify!($($full_name)::+))]
+ #[doc = concat!("[`", stringify!($name), "`]: crate::", $(stringify!($path), "::",)+ stringify!($name))]
#[macro_export]
- macro_rules! $macro_name {
+ #[doc(hidden)]
+ macro_rules! $legacy_macro_name {
($string:literal) => {{
- use $crate::$($full_name)::+;
+ use $crate::$($path ::)+ $name;
const R: $name =
match $name::try_from_bytes($string.as_bytes()) {
Ok(r) => r,
#[allow(clippy::panic)] // const context
- _ => panic!(concat!("Invalid ", stringify!($name), ": ", $string)),
+ _ => panic!(concat!("Invalid ", $(stringify!($path), "::",)+ stringify!($name), ": ", $string)),
};
R
}};
}
+ #[doc(inline)]
+ pub use $legacy_macro_name as $macro_name;
#[cfg(feature = "databake")]
impl databake::Bake for $name {
fn bake(&self, env: &databake::CrateEnv) -> databake::TokenStream {
env.insert("icu_locid");
let string = self.as_str();
- databake::quote! {::icu_locid::$macro_name!(#string) }
+ databake::quote! { icu_locid::$($path::)+ $macro_name!(#string) }
}
}
@@ -610,20 +655,20 @@ macro_rules! impl_writeable_for_each_subtag_str_no_test {
macro_rules! impl_writeable_for_subtag_list {
($type:tt, $sample1:literal, $sample2:literal) => {
- impl_writeable_for_each_subtag_str_no_test!($type, selff, selff.0.len() == 1 => alloc::borrow::Cow::Borrowed(selff.0.as_slice().get(0).unwrap().as_str()));
+ impl_writeable_for_each_subtag_str_no_test!($type, selff, selff.0.len() == 1 => alloc::borrow::Cow::Borrowed(selff.0.get(0).unwrap().as_str()));
#[test]
fn test_writeable() {
writeable::assert_writeable_eq!(&$type::default(), "");
writeable::assert_writeable_eq!(
- &$type::from_vec_unchecked(alloc::vec![$sample1.parse().unwrap()]),
+ &$type::from_short_slice_unchecked(alloc::vec![$sample1.parse().unwrap()].into()),
$sample1,
);
writeable::assert_writeable_eq!(
- &$type::from_vec_unchecked(vec![
+ &$type::from_short_slice_unchecked(vec![
$sample1.parse().unwrap(),
$sample2.parse().unwrap()
- ]),
+ ].into()),
core::concat!($sample1, "-", $sample2),
);
}
diff --git a/vendor/icu_locid/src/langid.rs b/vendor/icu_locid/src/langid.rs
index 78668bc0d..512959421 100644
--- a/vendor/icu_locid/src/langid.rs
+++ b/vendor/icu_locid/src/langid.rs
@@ -20,7 +20,8 @@ use writeable::Writeable;
///
/// ```
/// use icu::locid::{
-/// langid, subtags_language as language, subtags_region as region,
+/// langid,
+/// subtags::{language, region},
/// };
///
/// let li = langid!("en-US");
@@ -49,8 +50,8 @@ use writeable::Writeable;
///
/// ```
/// use icu::locid::{
-/// langid, subtags_language as language, subtags_region as region,
-/// subtags_script as script, subtags_variant as variant,
+/// langid,
+/// subtags::{language, region, script, variant},
/// };
///
/// let li = langid!("eN_latn_Us-Valencia");
@@ -257,7 +258,7 @@ impl LanguageIdentifier {
/// Compare this `LanguageIdentifier` with a potentially unnormalized BCP-47 string.
///
/// The return value is equivalent to what would happen if you first parsed the
- /// BCP-47 string to a `LanguageIdentifier` and then performed a structucal comparison.
+ /// BCP-47 string to a `LanguageIdentifier` and then performed a structural comparison.
///
/// # Examples
///
@@ -382,9 +383,7 @@ fn test_writeable() {
/// # Examples
///
/// ```
-/// use icu::locid::{
-/// langid, subtags_language as language, LanguageIdentifier,
-/// };
+/// use icu::locid::{langid, subtags::language, LanguageIdentifier};
///
/// assert_eq!(LanguageIdentifier::from(language!("en")), langid!("en"));
/// ```
@@ -400,7 +399,7 @@ impl From<subtags::Language> for LanguageIdentifier {
/// # Examples
///
/// ```
-/// use icu::locid::{langid, subtags_script as script, LanguageIdentifier};
+/// use icu::locid::{langid, subtags::script, LanguageIdentifier};
///
/// assert_eq!(
/// LanguageIdentifier::from(Some(script!("latn"))),
@@ -419,7 +418,7 @@ impl From<Option<subtags::Script>> for LanguageIdentifier {
/// # Examples
///
/// ```
-/// use icu::locid::{langid, subtags_region as region, LanguageIdentifier};
+/// use icu::locid::{langid, subtags::region, LanguageIdentifier};
///
/// assert_eq!(
/// LanguageIdentifier::from(Some(region!("US"))),
@@ -441,8 +440,9 @@ impl From<Option<subtags::Region>> for LanguageIdentifier {
///
/// ```
/// use icu::locid::{
-/// langid, subtags_language as language, subtags_region as region,
-/// subtags_script as script, LanguageIdentifier,
+/// langid,
+/// subtags::{language, region, script},
+/// LanguageIdentifier,
/// };
///
/// let lang = language!("en");
@@ -482,8 +482,8 @@ impl
///
/// ```
/// use icu::locid::{
-/// langid, subtags_language as language, subtags_region as region,
-/// subtags_script as script,
+/// langid,
+/// subtags::{language, region, script},
/// };
///
/// let lid = langid!("en-Latn-US");
diff --git a/vendor/icu_locid/src/lib.rs b/vendor/icu_locid/src/lib.rs
index d9c4f7699..9c6c46ca5 100644
--- a/vendor/icu_locid/src/lib.rs
+++ b/vendor/icu_locid/src/lib.rs
@@ -24,7 +24,8 @@
//! ```
//! use icu::locid::Locale;
//! use icu::locid::{
-//! locale, subtags_language as language, subtags_region as region,
+//! locale,
+//! subtags::{language, region},
//! };
//!
//! let mut loc: Locale = locale!("en-US");
@@ -81,6 +82,7 @@ pub use parser::errors::ParserError;
pub use ParserError as Error;
pub mod extensions;
+#[macro_use]
pub mod subtags;
pub mod zerovec;
diff --git a/vendor/icu_locid/src/locale.rs b/vendor/icu_locid/src/locale.rs
index 4412da86e..e87cdf1a2 100644
--- a/vendor/icu_locid/src/locale.rs
+++ b/vendor/icu_locid/src/locale.rs
@@ -28,8 +28,9 @@ use writeable::Writeable;
///
/// ```
/// use icu_locid::{
-/// extensions_unicode_key as key, extensions_unicode_value as value,
-/// locale, subtags_language as language, subtags_region as region,
+/// extensions::unicode::{key, value},
+/// locale,
+/// subtags::{language, region},
/// };
///
/// let loc = locale!("en-US-u-ca-buddhist");
@@ -56,7 +57,8 @@ use writeable::Writeable;
/// `_` separators to `-` and adjusting casing to conform to the Unicode standard.
///
/// Any bogus subtags will cause the parsing to fail with an error.
-/// No subtag validation or canonicalization is performed.
+///
+/// No subtag validation or alias resolution is performed.
///
/// # Examples
///
@@ -98,13 +100,13 @@ fn test_sizes() {
assert_eq!(core::mem::size_of::<Option<LanguageIdentifier>>(), 32);
assert_eq!(core::mem::size_of::<extensions::transform::Fields>(), 24);
- assert_eq!(core::mem::size_of::<extensions::unicode::Attributes>(), 24);
+ assert_eq!(core::mem::size_of::<extensions::unicode::Attributes>(), 16);
assert_eq!(core::mem::size_of::<extensions::unicode::Keywords>(), 24);
assert_eq!(core::mem::size_of::<Vec<extensions::other::Other>>(), 24);
- assert_eq!(core::mem::size_of::<extensions::private::Private>(), 24);
- assert_eq!(core::mem::size_of::<extensions::Extensions>(), 152);
+ assert_eq!(core::mem::size_of::<extensions::private::Private>(), 16);
+ assert_eq!(core::mem::size_of::<extensions::Extensions>(), 136);
- assert_eq!(core::mem::size_of::<Locale>(), 184);
+ assert_eq!(core::mem::size_of::<Locale>(), 168);
}
impl Locale {
@@ -250,7 +252,7 @@ impl Locale {
/// Compare this `Locale` with a potentially unnormalized BCP-47 string.
///
/// The return value is equivalent to what would happen if you first parsed the
- /// BCP-47 string to a `Locale` and then performed a structucal comparison.
+ /// BCP-47 string to a `Locale` and then performed a structural comparison.
///
/// # Examples
///
@@ -422,7 +424,7 @@ fn test_writeable() {
///
/// ```
/// use icu::locid::Locale;
-/// use icu::locid::{locale, subtags_language as language};
+/// use icu::locid::{locale, subtags::language};
///
/// assert_eq!(Locale::from(language!("en")), locale!("en"));
/// ```
@@ -439,7 +441,7 @@ impl From<subtags::Language> for Locale {
///
/// ```
/// use icu::locid::Locale;
-/// use icu::locid::{locale, subtags_script as script};
+/// use icu::locid::{locale, subtags::script};
///
/// assert_eq!(Locale::from(Some(script!("latn"))), locale!("und-Latn"));
/// ```
@@ -456,7 +458,7 @@ impl From<Option<subtags::Script>> for Locale {
///
/// ```
/// use icu::locid::Locale;
-/// use icu::locid::{locale, subtags_region as region};
+/// use icu::locid::{locale, subtags::region};
///
/// assert_eq!(Locale::from(Some(region!("US"))), locale!("und-US"));
/// ```
@@ -474,8 +476,8 @@ impl From<Option<subtags::Region>> for Locale {
/// ```
/// use icu::locid::Locale;
/// use icu::locid::{
-/// locale, subtags_language as language, subtags_region as region,
-/// subtags_script as script,
+/// locale,
+/// subtags::{language, region, script},
/// };
///
/// assert_eq!(
diff --git a/vendor/icu_locid/src/parser/langid.rs b/vendor/icu_locid/src/parser/langid.rs
index 653ca7e6e..2c6ddeb03 100644
--- a/vendor/icu_locid/src/parser/langid.rs
+++ b/vendor/icu_locid/src/parser/langid.rs
@@ -5,10 +5,10 @@
pub use super::errors::ParserError;
use crate::extensions::unicode::{Attribute, Key, Value};
use crate::extensions::ExtensionType;
+use crate::helpers::ShortSlice;
use crate::parser::SubtagIterator;
use crate::LanguageIdentifier;
use crate::{extensions, subtags};
-use alloc::vec::Vec;
use tinystr::TinyAsciiStr;
#[derive(PartialEq, Clone, Copy)]
@@ -31,7 +31,7 @@ pub fn parse_language_identifier_from_iter(
) -> Result<LanguageIdentifier, ParserError> {
let mut script = None;
let mut region = None;
- let mut variants = Vec::new();
+ let mut variants = ShortSlice::new();
let language = if let Some(subtag) = iter.next() {
subtags::Language::try_from_bytes(subtag)?
@@ -95,7 +95,7 @@ pub fn parse_language_identifier_from_iter(
language,
script,
region,
- variants: subtags::Variants::from_vec_unchecked(variants),
+ variants: subtags::Variants::from_short_slice_unchecked(variants),
})
}
diff --git a/vendor/icu_locid/src/subtags/language.rs b/vendor/icu_locid/src/subtags/language.rs
index 86b51b93a..6fd08a2d5 100644
--- a/vendor/icu_locid/src/subtags/language.rs
+++ b/vendor/icu_locid/src/subtags/language.rs
@@ -5,7 +5,7 @@
impl_tinystr_subtag!(
/// A language subtag (examples: `"en"`, `"csb"`, `"zh"`, `"und"`, etc.)
///
- /// [`Language`] represents a Unicode base language code conformat to the
+ /// [`Language`] represents a Unicode base language code conformant to the
/// [`unicode_language_id`] field of the Language and Locale Identifier.
///
/// # Examples
@@ -34,7 +34,8 @@ impl_tinystr_subtag!(
///
/// [`unicode_language_id`]: https://unicode.org/reports/tr35/#unicode_language_id
Language,
- subtags::Language,
+ subtags,
+ language,
subtags_language,
2..=3,
s,
@@ -63,7 +64,7 @@ impl Language {
/// # Examples
///
/// ```
- /// use icu::locid::{subtags::Language, subtags_language as language};
+ /// use icu::locid::subtags::{language, Language};
///
/// let mut lang = language!("csb");
///
diff --git a/vendor/icu_locid/src/subtags/mod.rs b/vendor/icu_locid/src/subtags/mod.rs
index bd243a321..9cc04dac8 100644
--- a/vendor/icu_locid/src/subtags/mod.rs
+++ b/vendor/icu_locid/src/subtags/mod.rs
@@ -51,8 +51,12 @@ mod script;
mod variant;
mod variants;
-pub use language::Language;
-pub use region::Region;
-pub use script::Script;
-pub use variant::Variant;
+#[doc(inline)]
+pub use language::{language, Language};
+#[doc(inline)]
+pub use region::{region, Region};
+#[doc(inline)]
+pub use script::{script, Script};
+#[doc(inline)]
+pub use variant::{variant, Variant};
pub use variants::Variants;
diff --git a/vendor/icu_locid/src/subtags/region.rs b/vendor/icu_locid/src/subtags/region.rs
index f605937ce..4348f15e7 100644
--- a/vendor/icu_locid/src/subtags/region.rs
+++ b/vendor/icu_locid/src/subtags/region.rs
@@ -5,7 +5,7 @@
impl_tinystr_subtag!(
/// A region subtag (examples: `"US"`, `"CN"`, `"AR"` etc.)
///
- /// [`Region`] represents a Unicode base language code conformat to the
+ /// [`Region`] represents a Unicode base language code conformant to the
/// [`unicode_region_id`] field of the Language and Locale Identifier.
///
/// # Examples
@@ -19,7 +19,8 @@ impl_tinystr_subtag!(
///
/// [`unicode_region_id`]: https://unicode.org/reports/tr35/#unicode_region_id
Region,
- subtags::Region,
+ subtags,
+ region,
subtags_region,
2..=3,
s,
diff --git a/vendor/icu_locid/src/subtags/script.rs b/vendor/icu_locid/src/subtags/script.rs
index 05eb63d1c..79ead0390 100644
--- a/vendor/icu_locid/src/subtags/script.rs
+++ b/vendor/icu_locid/src/subtags/script.rs
@@ -5,7 +5,7 @@
impl_tinystr_subtag!(
/// A script subtag (examples: `"Latn"`, `"Arab"`, etc.)
///
- /// [`Script`] represents a Unicode base language code conformat to the
+ /// [`Script`] represents a Unicode base language code conformant to the
/// [`unicode_script_id`] field of the Language and Locale Identifier.
///
/// # Examples
@@ -19,7 +19,8 @@ impl_tinystr_subtag!(
///
/// [`unicode_script_id`]: https://unicode.org/reports/tr35/#unicode_script_id
Script,
- subtags::Script,
+ subtags,
+ script,
subtags_script,
4..=4,
s,
diff --git a/vendor/icu_locid/src/subtags/variant.rs b/vendor/icu_locid/src/subtags/variant.rs
index 96fd7500e..c60b13865 100644
--- a/vendor/icu_locid/src/subtags/variant.rs
+++ b/vendor/icu_locid/src/subtags/variant.rs
@@ -5,7 +5,7 @@
impl_tinystr_subtag!(
/// A variant subtag (examples: `"macos"`, `"posix"`, `"1996"` etc.)
///
- /// [`Variant`] represents a Unicode base language code conformat to the
+ /// [`Variant`] represents a Unicode base language code conformant to the
/// [`unicode_variant_id`] field of the Language and Locale Identifier.
///
/// # Examples
@@ -19,7 +19,8 @@ impl_tinystr_subtag!(
///
/// [`unicode_variant_id`]: https://unicode.org/reports/tr35/#unicode_variant_id
Variant,
- subtags::Variant,
+ subtags,
+ variant,
subtags_variant,
4..=8,
s,
diff --git a/vendor/icu_locid/src/subtags/variants.rs b/vendor/icu_locid/src/subtags/variants.rs
index 70aeae1d9..ba5ff1bc1 100644
--- a/vendor/icu_locid/src/subtags/variants.rs
+++ b/vendor/icu_locid/src/subtags/variants.rs
@@ -16,7 +16,7 @@ use core::ops::Deref;
/// # Examples
///
/// ```
-/// use icu::locid::{subtags::Variants, subtags_variant as variant};
+/// use icu::locid::subtags::{variant, Variants};
///
/// let mut v = vec![variant!("posix"), variant!("macos")];
/// v.sort();
@@ -48,7 +48,7 @@ impl Variants {
/// # Examples
///
/// ```
- /// use icu::locid::{subtags::Variants, subtags_variant as variant};
+ /// use icu::locid::subtags::{variant, Variants};
///
/// let variants = Variants::from_variant(variant!("posix"));
/// ```
@@ -64,7 +64,7 @@ impl Variants {
/// # Examples
///
/// ```
- /// use icu::locid::{subtags::Variants, subtags_variant as variant};
+ /// use icu::locid::subtags::{variant, Variants};
///
/// let mut v = vec![variant!("posix"), variant!("macos")];
/// v.sort();
@@ -77,7 +77,11 @@ impl Variants {
/// for the caller to use [`binary_search`](slice::binary_search) instead of [`sort`](slice::sort)
/// and [`dedup`](Vec::dedup()).
pub fn from_vec_unchecked(input: Vec<Variant>) -> Self {
- Self(ShortSlice::from(input))
+ Self(input.into())
+ }
+
+ pub(crate) fn from_short_slice_unchecked(input: ShortSlice<Variant>) -> Self {
+ Self(input)
}
/// Empties the [`Variants`] list.
@@ -87,7 +91,7 @@ impl Variants {
/// # Examples
///
/// ```
- /// use icu::locid::{subtags::Variants, subtags_variant as variant};
+ /// use icu::locid::subtags::{variant, Variants};
///
/// let mut v = vec![variant!("posix"), variant!("macos")];
/// v.sort();
@@ -119,6 +123,6 @@ impl Deref for Variants {
type Target = [Variant];
fn deref(&self) -> &[Variant] {
- self.0.as_slice()
+ self.0.deref()
}
}
diff --git a/vendor/icu_locid/src/zerovec.rs b/vendor/icu_locid/src/zerovec.rs
index 530d21499..ba6a3e85d 100644
--- a/vendor/icu_locid/src/zerovec.rs
+++ b/vendor/icu_locid/src/zerovec.rs
@@ -60,8 +60,8 @@
//! use icu_locid::subtags::{Language, Region, Script};
//! use icu_locid::LanguageIdentifier;
//! use icu_locid::{
-//! langid, subtags_language as language, subtags_region as region,
-//! subtags_script as script,
+//! langid,
+//! subtags::{language, region, script},
//! };
//! use zerovec::ZeroMap;
//!
diff --git a/vendor/icu_locid_transform/.cargo-checksum.json b/vendor/icu_locid_transform/.cargo-checksum.json
new file mode 100644
index 000000000..ff2371e3f
--- /dev/null
+++ b/vendor/icu_locid_transform/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"334f54b489b88e4808da4fa355ddf773b86971570d4bb0360a876e3437cb962d","LICENSE":"853f87c96f3d249f200fec6db1114427bc8bdf4afddc93c576956d78152ce978","README.md":"3ff3f2e2f9e5d4c5786132838576edef42a12c5529d5f080370f24aa6246bb92","benches/fixtures/locales.json":"9846601a29874baf140cac1252d4624fadc30182fec106d17f008ece886b9185","benches/fixtures/uncanonicalized-locales.json":"a866ed318b92f79d8853567e79b373c02984967023f5f39161140544e71b0c72","benches/helpers/mod.rs":"d3bf59e7eed6230f340bef6c87a7b8de3a387ec391f60afc1b15a0d001cbfb67","benches/locale_canonicalizer.rs":"477af27aa35385d107e19b8e8a0452466a69d20e147a63631b78634c17712fed","src/canonicalizer.rs":"7770767fad20f38aaae19382430451573293ccdeac587b2d063163b870781086","src/directionality.rs":"a031a9d55ffe827c86400637b7302dc424c708dcc52ea667504a33a16db822c2","src/error.rs":"486fda8a0e9b7bb5822bbb0defb51145364d6053b8d60b88ef71e4b2bcd6699d","src/expander.rs":"d3ef487a416425ea6fb2ce7bf08b7487e180a580002e54ce30d5524cfd7514e2","src/fallback/algorithms.rs":"47625130cd5a04cf085dd0494591e117ba204a9d2eb649788b0ff96773cc6e21","src/fallback/mod.rs":"71ca2f23e410863010a62a48bba8a943763f7d49c12bf80b451a1b9295484e44","src/lib.rs":"5390facdc3df7e5ec5ab842bf59d4d13383d77d93a722685231a1d271cfba944","src/provider/canonicalizer.rs":"f848dbbc906b5f3be0b6384f5a2f26178898822a5c37334a57b12db8e1af0ed9","src/provider/directionality.rs":"fc516f501254af444cfa010d3c87aeea032dd6eccf5f82301c050ed3df2e05b1","src/provider/expander.rs":"6903d16138ada8216e0341d984126dcc1f6fac21468144e8140fc217b164572e","src/provider/fallback.rs":"d567e3d49261cac9de35825b3d57204d49068558f10579121f0bf0c42090c9cc","src/provider/mod.rs":"ce8e29eda7128747d489371118d1cf2c0e2740662eb8c6a55310dff86c5641cc","tests/fixtures/canonicalize.json":"3dc2f661b04e4c9ecced70fc1b98a504eb5f5a0067b38665b10e50c25174bc4a","tests/fixtures/maximize.json":"8137359060218572bcaf5e56825346fdcb600e2189378ef4be836ba0a7295b66","tests/fixtures/minimize.json":"3bb6f19c5525818212388dcbf778064e7f73d2c32a8a7e8c58d618583a77121a","tests/fixtures/mod.rs":"18a900aa4f74120b7e7e64fcb09eae38a16504d66e23f752e743dcd9b1ad6530","tests/helpers/mod.rs":"d3bf59e7eed6230f340bef6c87a7b8de3a387ec391f60afc1b15a0d001cbfb67","tests/locale_canonicalizer.rs":"1ebf7320f422b65cc3cc50468abdc8f08128feba85d936f5beb456b0b052a91d"},"package":"6551daf80882d8e68eee186cc19e132d8bde1b1f059a79b93384a5ca0e8fc5e7"} \ No newline at end of file
diff --git a/vendor/icu_locid_transform/Cargo.toml b/vendor/icu_locid_transform/Cargo.toml
new file mode 100644
index 000000000..b083c54a2
--- /dev/null
+++ b/vendor/icu_locid_transform/Cargo.toml
@@ -0,0 +1,128 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.66"
+name = "icu_locid_transform"
+version = "1.3.2"
+authors = ["The ICU4X Project Developers"]
+include = [
+ "data/**/*",
+ "src/**/*",
+ "examples/**/*",
+ "benches/**/*",
+ "tests/**/*",
+ "Cargo.toml",
+ "LICENSE",
+ "README.md",
+]
+description = "API for Unicode Language and Locale Identifiers canonicalization"
+homepage = "https://icu4x.unicode.org"
+readme = "README.md"
+categories = ["internationalization"]
+license-file = "LICENSE"
+repository = "https://github.com/unicode-org/icu4x"
+
+[package.metadata.cargo-all-features]
+denylist = ["bench"]
+skip_optional_dependencies = true
+
+[package.metadata.docs.rs]
+all-features = true
+
+[lib]
+bench = false
+
+[[test]]
+name = "locale_canonicalizer"
+required-features = ["serde"]
+
+[[bench]]
+name = "locale_canonicalizer"
+harness = false
+
+[dependencies.databake]
+version = "0.1.6"
+features = ["derive"]
+optional = true
+default-features = false
+
+[dependencies.displaydoc]
+version = "0.2.3"
+default-features = false
+
+[dependencies.icu_locid]
+version = "~1.3.2"
+features = ["zerovec"]
+default-features = false
+
+[dependencies.icu_locid_transform_data]
+version = "~1.3.2"
+optional = true
+default-features = false
+
+[dependencies.icu_provider]
+version = "~1.3.2"
+features = ["macros"]
+default-features = false
+
+[dependencies.serde]
+version = "1.0"
+features = [
+ "derive",
+ "alloc",
+]
+optional = true
+default-features = false
+
+[dependencies.tinystr]
+version = "0.7.3"
+features = [
+ "alloc",
+ "zerovec",
+]
+default-features = false
+
+[dependencies.zerovec]
+version = "0.10.0"
+features = ["yoke"]
+default-features = false
+
+[dev-dependencies.serde]
+version = "1.0"
+features = ["derive"]
+
+[dev-dependencies.serde_json]
+version = "1.0"
+
+[features]
+bench = ["serde"]
+compiled_data = ["dep:icu_locid_transform_data"]
+datagen = [
+ "serde",
+ "dep:databake",
+ "zerovec/databake",
+ "icu_locid/databake",
+ "tinystr/databake",
+]
+default = ["compiled_data"]
+serde = [
+ "dep:serde",
+ "icu_locid/serde",
+ "tinystr/serde",
+ "zerovec/serde",
+ "icu_provider/serde",
+]
+std = []
+
+[target."cfg(not(target_arch = \"wasm32\"))".dev-dependencies.criterion]
+version = "0.4"
diff --git a/vendor/icu_locid_transform/LICENSE b/vendor/icu_locid_transform/LICENSE
new file mode 100644
index 000000000..9845aa5f4
--- /dev/null
+++ b/vendor/icu_locid_transform/LICENSE
@@ -0,0 +1,44 @@
+UNICODE LICENSE V3
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 2020-2023 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+—
+
+Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
+ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.
diff --git a/vendor/icu_locid_transform/README.md b/vendor/icu_locid_transform/README.md
new file mode 100644
index 000000000..b97fea239
--- /dev/null
+++ b/vendor/icu_locid_transform/README.md
@@ -0,0 +1,77 @@
+# icu_locid_transform [![crates.io](https://img.shields.io/crates/v/icu_locid_transform)](https://crates.io/crates/icu_locid_transform)
+
+<!-- cargo-rdme start -->
+
+Canonicalization of locale identifiers based on [`CLDR`] data.
+
+This module is published as its own crate ([`icu_locid_transform`](https://docs.rs/icu_locid_transform/latest/icu_locid_transform/))
+and as part of the [`icu`](https://docs.rs/icu/latest/icu/) crate. See the latter for more details on the ICU4X project.
+
+It currently supports locale canonicalization based upon the canonicalization
+algorithm from [`UTS #35: Unicode LDML 3. LocaleId Canonicalization`],
+as well as the minimize and maximize likely subtags algorithms
+as described in [`UTS #35: Unicode LDML 3. Likely Subtags`].
+
+The maximize method potentially updates a passed in locale in place
+depending up the results of running the 'Add Likely Subtags' algorithm
+from [`UTS #35: Unicode LDML 3. Likely Subtags`].
+
+This minimize method returns a new Locale that is the result of running the
+'Remove Likely Subtags' algorithm from [`UTS #35: Unicode LDML 3. Likely Subtags`].
+
+## Examples
+
+```rust
+use icu::locid::Locale;
+use icu::locid_transform::{LocaleCanonicalizer, TransformResult};
+
+let lc = LocaleCanonicalizer::new();
+
+let mut locale: Locale = "ja-Latn-fonipa-hepburn-heploc"
+ .parse()
+ .expect("parse failed");
+assert_eq!(lc.canonicalize(&mut locale), TransformResult::Modified);
+assert_eq!(locale, "ja-Latn-alalc97-fonipa".parse::<Locale>().unwrap());
+```
+
+```rust
+use icu::locid::locale;
+use icu::locid_transform::{LocaleExpander, TransformResult};
+
+let lc = LocaleExpander::new();
+
+let mut locale = locale!("zh-CN");
+assert_eq!(lc.maximize(&mut locale), TransformResult::Modified);
+assert_eq!(locale, locale!("zh-Hans-CN"));
+
+let mut locale = locale!("zh-Hant-TW");
+assert_eq!(lc.maximize(&mut locale), TransformResult::Unmodified);
+assert_eq!(locale, locale!("zh-Hant-TW"));
+```
+
+```rust
+use icu::locid::locale;
+use icu::locid_transform::{LocaleExpander, TransformResult};
+use writeable::assert_writeable_eq;
+
+let lc = LocaleExpander::new();
+
+let mut locale = locale!("zh-Hans-CN");
+assert_eq!(lc.minimize(&mut locale), TransformResult::Modified);
+assert_eq!(locale, locale!("zh"));
+
+let mut locale = locale!("zh");
+assert_eq!(lc.minimize(&mut locale), TransformResult::Unmodified);
+assert_eq!(locale, locale!("zh"));
+```
+
+[`ICU4X`]: ../icu/index.html
+[`CLDR`]: http://cldr.unicode.org/
+[`UTS #35: Unicode LDML 3. Likely Subtags`]: https://www.unicode.org/reports/tr35/#Likely_Subtags.
+[`UTS #35: Unicode LDML 3. LocaleId Canonicalization`]: http://unicode.org/reports/tr35/#LocaleId_Canonicalization,
+
+<!-- cargo-rdme end -->
+
+## More Information
+
+For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/icu_locid_transform/benches/fixtures/locales.json b/vendor/icu_locid_transform/benches/fixtures/locales.json
new file mode 100644
index 000000000..0e8ba8b79
--- /dev/null
+++ b/vendor/icu_locid_transform/benches/fixtures/locales.json
@@ -0,0 +1,41 @@
+[
+ "en-US",
+ "en-GB",
+ "es-AR",
+ "it",
+ "zh-Hans-CN",
+ "de-AT",
+ "pl",
+ "fr-FR",
+ "de-AT",
+ "sr-Cyrl-SR",
+ "nb-NO",
+ "fr-FR",
+ "mk",
+ "uk",
+ "und-PL",
+ "und-Latn-AM",
+ "ug-Cyrl",
+ "sr-ME",
+ "mn-Mong",
+ "lif-Limb",
+ "gan",
+ "zh-Hant",
+ "yue-Hans",
+ "unr",
+ "unr-Deva",
+ "und-Thai-CN",
+ "ug-Cyrl",
+ "en-Latn-DE",
+ "pl-FR",
+ "de-CH",
+ "tuq",
+ "sr-ME",
+ "ng",
+ "klx",
+ "kk-Arab",
+ "en-Cyrl",
+ "und-Cyrl-UK",
+ "und-Arab",
+ "und-Arab-FO"
+]
diff --git a/vendor/icu_locid_transform/benches/fixtures/uncanonicalized-locales.json b/vendor/icu_locid_transform/benches/fixtures/uncanonicalized-locales.json
new file mode 100644
index 000000000..18eadbce6
--- /dev/null
+++ b/vendor/icu_locid_transform/benches/fixtures/uncanonicalized-locales.json
@@ -0,0 +1,88 @@
+[
+ "cka",
+ "cze",
+ "gfx",
+ "sgn-BR",
+ "sgn-DD",
+ "tam",
+ "und-aaland",
+ "nob-bokmal",
+ "no-nynorsk",
+ "und-Qaai",
+ "en-554",
+ "en-084",
+ "art-lojban",
+ "zh-guoyu",
+ "zh-hakka",
+ "zh-xiang",
+ "aar-x-private",
+ "heb-x-private",
+ "ces",
+ "hy-arevela",
+ "hy-arevmda",
+ "cel-gaulish",
+ "ja-latn-hepburn-heploc",
+ "ja-Latn-fonipa-hepburn-heploc",
+ "und-Armn-SU",
+ "sh",
+ "sh-Cyrl",
+ "cnr",
+ "cnr-BA",
+ "ru-SU",
+ "ru-810",
+ "en-SU",
+ "en-810",
+ "und-SU",
+ "und-810",
+ "und-Latn-SU",
+ "und-Latn-810",
+ "hy-SU",
+ "hy-810",
+ "und-Armn-SU",
+ "und-Armn-810",
+ "sr-CS",
+ "sr-Latn-CS",
+ "sr-Cyrl-CS",
+ "az-NT",
+ "sl-t-sl-rozaj-biske-1994",
+ "DE-T-M0-DIN-K0-QWERTZ",
+ "en-t-m0-true",
+ "en-t-iw",
+ "und-u-rg-no23",
+ "und-u-rg-cn11",
+ "und-u-rg-cz10a",
+ "und-u-rg-fra",
+ "und-u-rg-frg",
+ "und-u-rg-lud",
+ "und-NO-u-rg-no23",
+ "und-CN-u-rg-cn11",
+ "und-CZ-u-rg-cz10a",
+ "und-FR-u-rg-fra",
+ "und-FR-u-rg-frg",
+ "und-u-rg-lud",
+ "und-u-sd-no23",
+ "und-u-sd-cn11",
+ "und-u-sd-cz10a",
+ "und-u-sd-fra",
+ "hy-arevela",
+ "hy-Armn-arevela",
+ "hy-AM-arevela",
+ "hy-arevela-fonipa",
+ "hy-fonipa-arevela",
+ "hy-arevmda",
+ "hy-Armn-arevmda",
+ "hy-AM-arevmda",
+ "hy-arevmda-fonipa",
+ "hy-fonipa-arevmda",
+ "ja-Latn-hepburn-heploc",
+ "ja-Latn-JP-hepburn-heploc",
+ "sv-aaland",
+ "el-polytoni",
+ "ja-Latn-alalc97-hepburn-heploc",
+ "ja-Latn-hepburn-alalc97-heploc",
+ "ja-Latn-hepburn-heploc-alalc97",
+ "ja-Latn-heploc-hepburn",
+ "ja-Latn-heploc",
+ "ja-Latn-aaland-heploc",
+ "ja-Latn-heploc-polytoni"
+]
diff --git a/vendor/icu_locid_transform/benches/helpers/mod.rs b/vendor/icu_locid_transform/benches/helpers/mod.rs
new file mode 100644
index 000000000..d250c510c
--- /dev/null
+++ b/vendor/icu_locid_transform/benches/helpers/mod.rs
@@ -0,0 +1,15 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use std::fs::File;
+use std::io::{BufReader, Error};
+
+pub fn read_fixture<T>(path: &str) -> Result<T, Error>
+where
+ T: serde::de::DeserializeOwned,
+{
+ let file = File::open(path)?;
+ let reader = BufReader::new(file);
+ Ok(serde_json::from_reader(reader)?)
+}
diff --git a/vendor/icu_locid_transform/benches/locale_canonicalizer.rs b/vendor/icu_locid_transform/benches/locale_canonicalizer.rs
new file mode 100644
index 000000000..1ea8df6b3
--- /dev/null
+++ b/vendor/icu_locid_transform/benches/locale_canonicalizer.rs
@@ -0,0 +1,99 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+mod helpers;
+
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+use icu_locid::Locale;
+use icu_locid_transform::LocaleCanonicalizer;
+use icu_locid_transform::LocaleExpander;
+
+fn canonicalize_bench(c: &mut Criterion) {
+ let lc = LocaleCanonicalizer::new();
+
+ let mut group = c.benchmark_group("uncanonicalized");
+
+ let path = "./benches/fixtures/uncanonicalized-locales.json";
+ let data: Vec<String> = helpers::read_fixture(path).expect("Failed to read a fixture");
+ let locales: Vec<Locale> = data.iter().map(|s| s.parse().unwrap()).collect();
+
+ group.bench_function("clone", |b| {
+ b.iter(|| {
+ for locale in &locales {
+ let _ = black_box(locale).clone();
+ }
+ })
+ });
+
+ group.bench_function("canonicalize", |b| {
+ b.iter(|| {
+ for locale in &locales {
+ let mut locale = black_box(locale).clone();
+ lc.canonicalize(&mut locale);
+ }
+ })
+ });
+
+ group.finish();
+}
+
+fn canonicalize_noop_bench(c: &mut Criterion) {
+ let lc = LocaleCanonicalizer::new();
+
+ let mut group = c.benchmark_group("canonicalized");
+
+ // None of these locales require canonicalization, so this measures the cost of calling
+ // the canonicalizer on locales that will not be modified.
+ let path = "./benches/fixtures/locales.json";
+ let data: Vec<String> = helpers::read_fixture(path).expect("Failed to read a fixture");
+ let locales: Vec<Locale> = data.iter().map(|s| s.parse().unwrap()).collect();
+
+ group.bench_function("clone", |b| {
+ b.iter(|| {
+ for locale in &locales {
+ let _ = black_box(locale).clone();
+ }
+ })
+ });
+
+ group.bench_function("canonicalize", |b| {
+ b.iter(|| {
+ for locale in &locales {
+ let mut locale = black_box(locale).clone();
+ lc.canonicalize(&mut locale);
+ }
+ })
+ });
+
+ group.finish();
+}
+
+fn maximize_bench(c: &mut Criterion) {
+ let lc = LocaleExpander::new();
+
+ let mut group = c.benchmark_group("likelysubtags");
+
+ let path = "./benches/fixtures/locales.json";
+ let data: Vec<String> = helpers::read_fixture(path).expect("Failed to read a fixture");
+ let locales: Vec<Locale> = data.iter().map(|s| s.parse().unwrap()).collect();
+
+ group.bench_function("maximize", |b| {
+ b.iter(|| {
+ for locale in &locales {
+ let mut locale = locale.clone();
+ lc.maximize(black_box(&mut locale));
+ }
+ })
+ });
+
+ group.finish();
+}
+
+criterion_group!(
+ benches,
+ canonicalize_bench,
+ canonicalize_noop_bench,
+ maximize_bench
+);
+criterion_main!(benches);
diff --git a/vendor/icu_locid_transform/src/canonicalizer.rs b/vendor/icu_locid_transform/src/canonicalizer.rs
new file mode 100644
index 000000000..5a3782638
--- /dev/null
+++ b/vendor/icu_locid_transform/src/canonicalizer.rs
@@ -0,0 +1,618 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! The collection of code for locale canonicalization.
+
+use crate::provider::*;
+use crate::LocaleTransformError;
+use alloc::vec::Vec;
+use core::cmp::Ordering;
+
+use crate::LocaleExpander;
+use crate::TransformResult;
+use icu_locid::subtags::{Language, Region, Script};
+use icu_locid::{
+ extensions::unicode::key,
+ subtags::{language, Variant, Variants},
+ LanguageIdentifier, Locale,
+};
+use icu_provider::prelude::*;
+use tinystr::TinyAsciiStr;
+
+/// Implements the algorithm defined in *[UTS #35: Annex C, LocaleId Canonicalization]*.
+///
+/// # Examples
+///
+/// ```
+/// use icu_locid::Locale;
+/// use icu_locid_transform::{LocaleCanonicalizer, TransformResult};
+///
+/// let lc = LocaleCanonicalizer::new();
+///
+/// let mut locale: Locale = "ja-Latn-fonipa-hepburn-heploc".parse().unwrap();
+/// assert_eq!(lc.canonicalize(&mut locale), TransformResult::Modified);
+/// assert_eq!(locale, "ja-Latn-alalc97-fonipa".parse().unwrap());
+/// ```
+///
+/// [UTS #35: Annex C, LocaleId Canonicalization]: http://unicode.org/reports/tr35/#LocaleId_Canonicalization
+#[derive(Debug)]
+pub struct LocaleCanonicalizer {
+ /// Data to support canonicalization.
+ aliases: DataPayload<AliasesV1Marker>,
+ /// Likely subtags implementation for delegation.
+ expander: LocaleExpander,
+}
+
+#[inline]
+fn uts35_rule_matches<'a, I>(
+ source: &Locale,
+ language: Language,
+ script: Option<Script>,
+ region: Option<Region>,
+ raw_variants: I,
+) -> bool
+where
+ I: Iterator<Item = &'a str>,
+{
+ (language.is_empty() || language == source.id.language)
+ && (script.is_none() || script == source.id.script)
+ && (region.is_none() || region == source.id.region)
+ && {
+ // Checks if variants are a subset of source variants.
+ // As both iterators are sorted, this can be done linearly.
+ let mut source_variants = source.id.variants.iter();
+ 'outer: for it in raw_variants {
+ for cand in source_variants.by_ref() {
+ match cand.strict_cmp(it.as_bytes()) {
+ Ordering::Equal => {
+ continue 'outer;
+ }
+ Ordering::Less => {}
+ _ => {
+ return false;
+ }
+ }
+ }
+ return false;
+ }
+ true
+ }
+}
+
+fn uts35_replacement<'a, I>(
+ source: &mut Locale,
+ ruletype_has_language: bool,
+ ruletype_has_script: bool,
+ ruletype_has_region: bool,
+ ruletype_variants: Option<I>,
+ replacement: &LanguageIdentifier,
+) where
+ I: Iterator<Item = &'a str>,
+{
+ if ruletype_has_language || (source.id.language.is_empty() && !replacement.language.is_empty())
+ {
+ source.id.language = replacement.language;
+ }
+ if ruletype_has_script || (source.id.script.is_none() && replacement.script.is_some()) {
+ source.id.script = replacement.script;
+ }
+ if ruletype_has_region || (source.id.region.is_none() && replacement.region.is_some()) {
+ source.id.region = replacement.region;
+ }
+ if let Some(skips) = ruletype_variants {
+ // The rule matches if the ruletype variants are a subset of the source variants.
+ // This means ja-Latn-fonipa-hepburn-heploc matches against the rule for
+ // hepburn-heploc and is canonicalized to ja-Latn-alalc97-fonipa
+
+ // We're merging three sorted deduped iterators into a new sequence:
+ // sources - skips + replacements
+
+ let mut sources = source.id.variants.iter().copied().peekable();
+ let mut replacements = replacement.variants.iter().copied().peekable();
+ let mut skips = skips.peekable();
+
+ let mut variants: Vec<Variant> = Vec::new();
+
+ loop {
+ match (sources.peek(), skips.peek(), replacements.peek()) {
+ (Some(&source), Some(skip), _)
+ if source.strict_cmp(skip.as_bytes()) == Ordering::Greater =>
+ {
+ skips.next();
+ }
+ (Some(&source), Some(skip), _)
+ if source.strict_cmp(skip.as_bytes()) == Ordering::Equal =>
+ {
+ skips.next();
+ sources.next();
+ }
+ (Some(&source), _, Some(&replacement))
+ if replacement.cmp(&source) == Ordering::Less =>
+ {
+ variants.push(replacement);
+ replacements.next();
+ }
+ (Some(&source), _, Some(&replacement))
+ if replacement.cmp(&source) == Ordering::Equal =>
+ {
+ variants.push(source);
+ sources.next();
+ replacements.next();
+ }
+ (Some(&source), _, _) => {
+ variants.push(source);
+ sources.next();
+ }
+ (None, _, Some(&replacement)) => {
+ variants.push(replacement);
+ replacements.next();
+ }
+ (None, _, None) => {
+ break;
+ }
+ }
+ }
+ source.id.variants = Variants::from_vec_unchecked(variants);
+ }
+}
+
+#[inline]
+fn uts35_check_language_rules(
+ locale: &mut Locale,
+ alias_data: &DataPayload<AliasesV1Marker>,
+) -> TransformResult {
+ if !locale.id.language.is_empty() {
+ let lang: TinyAsciiStr<3> = locale.id.language.into();
+ let replacement = if lang.len() == 2 {
+ alias_data
+ .get()
+ .language_len2
+ .get(&lang.resize().to_unvalidated())
+ } else {
+ alias_data.get().language_len3.get(&lang.to_unvalidated())
+ };
+
+ if let Some(replacement) = replacement {
+ if let Ok(langid) = replacement.parse() {
+ uts35_replacement::<core::iter::Empty<&str>>(
+ locale, true, false, false, None, &langid,
+ );
+ return TransformResult::Modified;
+ }
+ }
+ }
+
+ TransformResult::Unmodified
+}
+
+fn is_iter_sorted<I, T>(mut iter: I) -> bool
+where
+ I: Iterator<Item = T>,
+ T: PartialOrd,
+{
+ if let Some(mut last) = iter.next() {
+ for curr in iter {
+ if last > curr {
+ return false;
+ }
+ last = curr;
+ }
+ }
+ true
+}
+
+#[cfg(feature = "compiled_data")]
+impl Default for LocaleCanonicalizer {
+ fn default() -> Self {
+ Self::new()
+ }
+}
+
+impl LocaleCanonicalizer {
+ /// A constructor which creates a [`LocaleCanonicalizer`] from compiled data.
+ ///
+ /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+ ///
+ /// [📚 Help choosing a constructor](icu_provider::constructors)
+ #[cfg(feature = "compiled_data")]
+ pub const fn new() -> Self {
+ Self::new_with_expander(LocaleExpander::new_extended())
+ }
+
+ // Note: This is a custom impl because the bounds on LocaleExpander::try_new_unstable changed
+ #[doc = icu_provider::gen_any_buffer_unstable_docs!(ANY, Self::new)]
+ pub fn try_new_with_any_provider(
+ provider: &(impl AnyProvider + ?Sized),
+ ) -> Result<LocaleCanonicalizer, LocaleTransformError> {
+ let expander = LocaleExpander::try_new_with_any_provider(provider)?;
+ Self::try_new_with_expander_unstable(&provider.as_downcasting(), expander)
+ }
+
+ // Note: This is a custom impl because the bounds on LocaleExpander::try_new_unstable changed
+ #[doc = icu_provider::gen_any_buffer_unstable_docs!(BUFFER, Self::new)]
+ #[cfg(feature = "serde")]
+ pub fn try_new_with_buffer_provider(
+ provider: &(impl BufferProvider + ?Sized),
+ ) -> Result<LocaleCanonicalizer, LocaleTransformError> {
+ let expander = LocaleExpander::try_new_with_buffer_provider(provider)?;
+ Self::try_new_with_expander_unstable(&provider.as_deserializing(), expander)
+ }
+
+ #[doc = icu_provider::gen_any_buffer_unstable_docs!(UNSTABLE, Self::new)]
+ pub fn try_new_unstable<P>(provider: &P) -> Result<LocaleCanonicalizer, LocaleTransformError>
+ where
+ P: DataProvider<AliasesV1Marker>
+ + DataProvider<LikelySubtagsForLanguageV1Marker>
+ + DataProvider<LikelySubtagsForScriptRegionV1Marker>
+ + ?Sized,
+ {
+ let expander = LocaleExpander::try_new_unstable(provider)?;
+ Self::try_new_with_expander_unstable(provider, expander)
+ }
+
+ /// Creates a [`LocaleCanonicalizer`] with a custom [`LocaleExpander`] and compiled data.
+ ///
+ /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+ ///
+ /// [📚 Help choosing a constructor](icu_provider::constructors)
+ #[cfg(feature = "compiled_data")]
+ pub const fn new_with_expander(expander: LocaleExpander) -> Self {
+ Self {
+ aliases: DataPayload::from_static_ref(
+ crate::provider::Baked::SINGLETON_LOCID_TRANSFORM_ALIASES_V1,
+ ),
+ expander,
+ }
+ }
+
+ #[doc = icu_provider::gen_any_buffer_unstable_docs!(UNSTABLE, Self::new_with_expander)]
+ pub fn try_new_with_expander_unstable<P>(
+ provider: &P,
+ expander: LocaleExpander,
+ ) -> Result<LocaleCanonicalizer, LocaleTransformError>
+ where
+ P: DataProvider<AliasesV1Marker> + ?Sized,
+ {
+ let aliases: DataPayload<AliasesV1Marker> =
+ provider.load(Default::default())?.take_payload()?;
+
+ Ok(LocaleCanonicalizer { aliases, expander })
+ }
+
+ icu_provider::gen_any_buffer_data_constructors!(
+ locale: skip,
+ options: LocaleExpander,
+ error: LocaleTransformError,
+ #[cfg(skip)]
+ functions: [
+ new_with_expander,
+ try_new_with_expander_with_any_provider,
+ try_new_with_expander_with_buffer_provider,
+ try_new_with_expander_unstable,
+ Self,
+ ]
+ );
+
+ /// The canonicalize method potentially updates a passed in locale in place
+ /// depending up the results of running the canonicalization algorithm
+ /// from <http://unicode.org/reports/tr35/#LocaleId_Canonicalization>.
+ ///
+ /// Some BCP47 canonicalization data is not part of the CLDR json package. Because
+ /// of this, some canonicalizations are not performed, e.g. the canonicalization of
+ /// `und-u-ca-islamicc` to `und-u-ca-islamic-civil`. This will be fixed in a future
+ /// release once the missing data has been added to the CLDR json data. See:
+ /// <https://github.com/unicode-org/icu4x/issues/746>
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use icu_locid::Locale;
+ /// use icu_locid_transform::{LocaleCanonicalizer, TransformResult};
+ ///
+ /// let lc = LocaleCanonicalizer::new();
+ ///
+ /// let mut locale: Locale = "ja-Latn-fonipa-hepburn-heploc".parse().unwrap();
+ /// assert_eq!(lc.canonicalize(&mut locale), TransformResult::Modified);
+ /// assert_eq!(locale, "ja-Latn-alalc97-fonipa".parse().unwrap());
+ /// ```
+ pub fn canonicalize(&self, locale: &mut Locale) -> TransformResult {
+ let mut result = TransformResult::Unmodified;
+
+ // This loops until we get a 'fixed point', where applying the rules do not
+ // result in any more changes.
+ 'outer: loop {
+ // These are linear searches due to the ordering imposed by the canonicalization
+ // rules, where rules with more variants should be considered first. With the
+ // current data in CLDR, we will only do this for locales which have variants,
+ // or new rules which we haven't special-cased yet (of which there are fewer
+ // than 20).
+ if !locale.id.variants.is_empty() {
+ // These language/variant comibnations have around 20 rules
+ for StrStrPair(raw_lang_variants, raw_to) in self
+ .aliases
+ .get()
+ .language_variants
+ .iter()
+ .map(zerofrom::ZeroFrom::zero_from)
+ {
+ let (raw_lang, raw_variants) = {
+ let mut subtags = raw_lang_variants.split('-');
+ (
+ // str::split can't return empty iterators
+ unsafe { subtags.next().unwrap_unchecked() },
+ subtags,
+ )
+ };
+ if is_iter_sorted(raw_variants.clone()) {
+ if let Ok(lang) = raw_lang.parse::<Language>() {
+ if uts35_rule_matches(locale, lang, None, None, raw_variants.clone()) {
+ if let Ok(to) = raw_to.parse() {
+ uts35_replacement(
+ locale,
+ !lang.is_empty(),
+ false,
+ false,
+ Some(raw_variants),
+ &to,
+ );
+ result = TransformResult::Modified;
+ continue 'outer;
+ }
+ }
+ }
+ }
+ }
+ } else {
+ // These are absolute fallbacks, and currently empty.
+ for StrStrPair(raw_from, raw_to) in self
+ .aliases
+ .get()
+ .language
+ .iter()
+ .map(zerofrom::ZeroFrom::zero_from)
+ {
+ if let Ok(from) = raw_from.parse::<LanguageIdentifier>() {
+ if uts35_rule_matches(
+ locale,
+ from.language,
+ from.script,
+ from.region,
+ from.variants.iter().map(Variant::as_str),
+ ) {
+ if let Ok(to) = raw_to.parse() {
+ uts35_replacement(
+ locale,
+ !from.language.is_empty(),
+ from.script.is_some(),
+ from.region.is_some(),
+ Some(from.variants.iter().map(Variant::as_str)),
+ &to,
+ );
+ result = TransformResult::Modified;
+ continue 'outer;
+ }
+ }
+ }
+ }
+ }
+
+ if !locale.id.language.is_empty() {
+ // If the region is specified, check sgn-region rules first
+ if let Some(region) = locale.id.region {
+ if locale.id.language == language!("sgn") {
+ if let Some(&sgn_lang) = self
+ .aliases
+ .get()
+ .sgn_region
+ .get(&region.into_tinystr().to_unvalidated())
+ {
+ uts35_replacement::<core::iter::Empty<&str>>(
+ locale,
+ true,
+ false,
+ true,
+ None,
+ &sgn_lang.into(),
+ );
+ result = TransformResult::Modified;
+ continue;
+ }
+ }
+ }
+
+ if uts35_check_language_rules(locale, &self.aliases) == TransformResult::Modified {
+ result = TransformResult::Modified;
+ continue;
+ }
+ }
+
+ if let Some(script) = locale.id.script {
+ if let Some(&replacement) = self
+ .aliases
+ .get()
+ .script
+ .get(&script.into_tinystr().to_unvalidated())
+ {
+ locale.id.script = Some(replacement);
+ result = TransformResult::Modified;
+ continue;
+ }
+ }
+
+ if let Some(region) = locale.id.region {
+ let replacement = if region.is_alphabetic() {
+ self.aliases
+ .get()
+ .region_alpha
+ .get(&region.into_tinystr().resize().to_unvalidated())
+ } else {
+ self.aliases
+ .get()
+ .region_num
+ .get(&region.into_tinystr().to_unvalidated())
+ };
+ if let Some(&replacement) = replacement {
+ locale.id.region = Some(replacement);
+ result = TransformResult::Modified;
+ continue;
+ }
+
+ if let Some(regions) = self
+ .aliases
+ .get()
+ .complex_region
+ .get(&region.into_tinystr().to_unvalidated())
+ {
+ // Skip if regions are empty
+ if let Some(default_region) = regions.get(0) {
+ let mut maximized = LanguageIdentifier {
+ language: locale.id.language,
+ script: locale.id.script,
+ region: None,
+ variants: Variants::default(),
+ };
+
+ locale.id.region = Some(
+ match (self.expander.maximize(&mut maximized), maximized.region) {
+ (TransformResult::Modified, Some(candidate))
+ if regions.iter().any(|x| x == candidate) =>
+ {
+ candidate
+ }
+ _ => default_region,
+ },
+ );
+ result = TransformResult::Modified;
+ continue;
+ }
+ }
+ }
+
+ if !locale.id.variants.is_empty() {
+ let mut modified = Vec::new();
+ let mut unmodified = Vec::new();
+ for &variant in locale.id.variants.iter() {
+ if let Some(&updated) = self
+ .aliases
+ .get()
+ .variant
+ .get(&variant.into_tinystr().to_unvalidated())
+ {
+ modified.push(updated);
+ } else {
+ unmodified.push(variant);
+ }
+ }
+
+ if !modified.is_empty() {
+ modified.extend(unmodified);
+ modified.sort();
+ modified.dedup();
+ locale.id.variants = Variants::from_vec_unchecked(modified);
+ result = TransformResult::Modified;
+ continue;
+ }
+ }
+
+ // Nothing matched in this iteration, we're done.
+ break;
+ }
+
+ // Handle Locale extensions in their own loops, because these rules do not interact
+ // with each other.
+ if let Some(lang) = &locale.extensions.transform.lang {
+ let mut tlang: Locale = lang.clone().into();
+ let mut matched = false;
+ loop {
+ if uts35_check_language_rules(&mut tlang, &self.aliases)
+ == TransformResult::Modified
+ {
+ result = TransformResult::Modified;
+ matched = true;
+ continue;
+ }
+
+ break;
+ }
+
+ if matched {
+ locale.extensions.transform.lang = Some(tlang.id);
+ }
+ }
+
+ // The `rg` region override and `sd` regional subdivision keys may contain
+ // language codes that require canonicalization.
+ for key in &[key!("rg"), key!("sd")] {
+ if let Some(value) = locale.extensions.unicode.keywords.get_mut(key) {
+ if let &[only_value] = value.as_tinystr_slice() {
+ if let Some(modified_value) = self
+ .aliases
+ .get()
+ .subdivision
+ .get(&only_value.resize().to_unvalidated())
+ {
+ if let Ok(modified_value) = modified_value.parse() {
+ *value = modified_value;
+ result = TransformResult::Modified;
+ }
+ }
+ }
+ }
+ }
+
+ result
+ }
+}
+
+#[test]
+fn test_uts35_rule_matches() {
+ for (source, rule, result) in [
+ ("ja", "und", true),
+ ("und-heploc-hepburn", "und-hepburn", true),
+ ("ja-heploc-hepburn", "und-hepburn", true),
+ ("ja-hepburn", "und-hepburn-heploc", false),
+ ] {
+ let source = source.parse().unwrap();
+ let rule = rule.parse::<LanguageIdentifier>().unwrap();
+ assert_eq!(
+ uts35_rule_matches(
+ &source,
+ rule.language,
+ rule.script,
+ rule.region,
+ rule.variants.iter().map(Variant::as_str),
+ ),
+ result,
+ "{source}"
+ );
+ }
+}
+
+#[test]
+fn test_uts35_replacement() {
+ for (locale, rule_0, rule_1, result) in [
+ (
+ "ja-Latn-fonipa-hepburn-heploc",
+ "und-hepburn-heploc",
+ "und-alalc97",
+ "ja-Latn-alalc97-fonipa",
+ ),
+ ("sgn-DD", "und-DD", "und-DE", "sgn-DE"),
+ ("sgn-DE", "sgn-DE", "gsg", "gsg"),
+ ] {
+ let mut locale = locale.parse().unwrap();
+ let rule_0 = rule_0.parse::<LanguageIdentifier>().unwrap();
+ let rule_1 = rule_1.parse().unwrap();
+ let result = result.parse::<Locale>().unwrap();
+ uts35_replacement(
+ &mut locale,
+ !rule_0.language.is_empty(),
+ rule_0.script.is_some(),
+ rule_0.region.is_some(),
+ Some(rule_0.variants.iter().map(Variant::as_str)),
+ &rule_1,
+ );
+ assert_eq!(result, locale);
+ }
+}
diff --git a/vendor/icu_locid_transform/src/directionality.rs b/vendor/icu_locid_transform/src/directionality.rs
new file mode 100644
index 000000000..8a6c243b8
--- /dev/null
+++ b/vendor/icu_locid_transform/src/directionality.rs
@@ -0,0 +1,231 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::provider::*;
+use crate::{LocaleExpander, LocaleTransformError};
+use icu_locid::subtags::Script;
+use icu_locid::LanguageIdentifier;
+use icu_provider::prelude::*;
+
+/// Represents the direction of a script.
+///
+/// [`LocaleDirectionality`] can be used to get this information.
+#[derive(Debug, PartialEq, Eq, Clone, Copy)]
+#[non_exhaustive]
+pub enum Direction {
+ /// The script is left-to-right.
+ LeftToRight,
+ /// The script is right-to-left.
+ RightToLeft,
+}
+
+/// Provides methods to determine the direction of a locale.
+///
+/// # Examples
+///
+/// ```
+/// use icu_locid::locale;
+/// use icu_locid_transform::{Direction, LocaleDirectionality};
+///
+/// let ld = LocaleDirectionality::new();
+///
+/// assert_eq!(ld.get(&locale!("en")), Some(Direction::LeftToRight));
+/// ```
+#[derive(Debug)]
+pub struct LocaleDirectionality {
+ script_direction: DataPayload<ScriptDirectionV1Marker>,
+ expander: LocaleExpander,
+}
+
+impl LocaleDirectionality {
+ /// Creates a [`LocaleDirectionality`] from compiled data.
+ ///
+ /// This includes limited likely subtags data, see [`LocaleExpander::new()`].
+ #[cfg(feature = "compiled_data")]
+ pub const fn new() -> Self {
+ Self::new_with_expander(LocaleExpander::new())
+ }
+
+ // Note: This is a custom impl because the bounds on `try_new_unstable` don't suffice
+ #[doc = icu_provider::gen_any_buffer_unstable_docs!(ANY, Self::new)]
+ pub fn try_new_with_any_provider(
+ provider: &(impl AnyProvider + ?Sized),
+ ) -> Result<LocaleDirectionality, LocaleTransformError> {
+ let expander = LocaleExpander::try_new_with_any_provider(provider)?;
+ Self::try_new_with_expander_unstable(&provider.as_downcasting(), expander)
+ }
+
+ // Note: This is a custom impl because the bounds on `try_new_unstable` don't suffice
+ #[doc = icu_provider::gen_any_buffer_unstable_docs!(BUFFER, Self::new)]
+ #[cfg(feature = "serde")]
+ pub fn try_new_with_buffer_provider(
+ provider: &(impl BufferProvider + ?Sized),
+ ) -> Result<LocaleDirectionality, LocaleTransformError> {
+ let expander = LocaleExpander::try_new_with_buffer_provider(provider)?;
+ Self::try_new_with_expander_unstable(&provider.as_deserializing(), expander)
+ }
+
+ #[doc = icu_provider::gen_any_buffer_unstable_docs!(UNSTABLE, Self::new)]
+ pub fn try_new_unstable<P>(provider: &P) -> Result<LocaleDirectionality, LocaleTransformError>
+ where
+ P: DataProvider<ScriptDirectionV1Marker>
+ + DataProvider<LikelySubtagsForLanguageV1Marker>
+ + DataProvider<LikelySubtagsForScriptRegionV1Marker>
+ + ?Sized,
+ {
+ let expander = LocaleExpander::try_new_unstable(provider)?;
+ Self::try_new_with_expander_unstable(provider, expander)
+ }
+
+ /// Creates a [`LocaleDirectionality`] with a custom [`LocaleExpander`] and compiled data.
+ ///
+ /// This allows using [`LocaleExpander::new_extended()`] with data for all locales.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use icu_locid::locale;
+ /// use icu_locid_transform::{
+ /// Direction, LocaleDirectionality, LocaleExpander,
+ /// };
+ ///
+ /// let ld_default = LocaleDirectionality::new();
+ ///
+ /// assert_eq!(ld_default.get(&locale!("jbn")), None);
+ ///
+ /// let expander = LocaleExpander::new_extended();
+ /// let ld_extended = LocaleDirectionality::new_with_expander(expander);
+ ///
+ /// assert_eq!(
+ /// ld_extended.get(&locale!("jbn")),
+ /// Some(Direction::RightToLeft)
+ /// );
+ /// ```
+ #[cfg(feature = "compiled_data")]
+ pub const fn new_with_expander(expander: LocaleExpander) -> Self {
+ LocaleDirectionality {
+ script_direction: DataPayload::from_static_ref(
+ crate::provider::Baked::SINGLETON_LOCID_TRANSFORM_SCRIPT_DIR_V1,
+ ),
+ expander,
+ }
+ }
+
+ #[doc = icu_provider::gen_any_buffer_unstable_docs!(UNSTABLE, Self::new_with_expander)]
+ pub fn try_new_with_expander_unstable<P>(
+ provider: &P,
+ expander: LocaleExpander,
+ ) -> Result<LocaleDirectionality, LocaleTransformError>
+ where
+ P: DataProvider<ScriptDirectionV1Marker> + ?Sized,
+ {
+ let script_direction = provider.load(Default::default())?.take_payload()?;
+
+ Ok(LocaleDirectionality {
+ script_direction,
+ expander,
+ })
+ }
+
+ /// Returns the script direction of the given locale.
+ ///
+ /// Note that the direction is a property of the script of a locale, not of the language. As such,
+ /// when given a locale without an associated script tag (i.e., `locale!("en")` vs. `locale!("en-Latn")`),
+ /// this method first tries to infer the script using the language and region before returning its direction.
+ ///
+ /// If you already have a script struct and want to get its direction, you should use
+ /// `Locale::from(Some(my_script))` and call this method.
+ ///
+ /// This method will return `None` if either a locale's script cannot be determined, or there is no information
+ /// for the script.
+ ///
+ /// # Examples
+ ///
+ /// Using an existing locale:
+ ///
+ /// ```
+ /// use icu_locid::locale;
+ /// use icu_locid_transform::{Direction, LocaleDirectionality};
+ ///
+ /// let ld = LocaleDirectionality::new();
+ ///
+ /// assert_eq!(ld.get(&locale!("en-US")), Some(Direction::LeftToRight));
+ ///
+ /// assert_eq!(ld.get(&locale!("ar")), Some(Direction::RightToLeft));
+ ///
+ /// assert_eq!(ld.get(&locale!("en-Arab")), Some(Direction::RightToLeft));
+ ///
+ /// assert_eq!(ld.get(&locale!("foo")), None);
+ /// ```
+ ///
+ /// Using a script directly:
+ ///
+ /// ```
+ /// use icu_locid::subtags::script;
+ /// use icu_locid::Locale;
+ /// use icu_locid_transform::{Direction, LocaleDirectionality};
+ ///
+ /// let ld = LocaleDirectionality::new();
+ ///
+ /// assert_eq!(
+ /// ld.get(&Locale::from(Some(script!("Latn")))),
+ /// Some(Direction::LeftToRight)
+ /// );
+ /// ```
+ pub fn get(&self, locale: impl AsRef<LanguageIdentifier>) -> Option<Direction> {
+ let script = self.expander.get_likely_script(locale.as_ref())?;
+
+ if self.script_in_ltr(script) {
+ Some(Direction::LeftToRight)
+ } else if self.script_in_rtl(script) {
+ Some(Direction::RightToLeft)
+ } else {
+ None
+ }
+ }
+
+ /// Returns whether the given locale is right-to-left.
+ ///
+ /// Note that if this method returns `false`, the locale is either left-to-right or
+ /// the [`LocaleDirectionality`] does not include data for the locale.
+ /// You should use [`LocaleDirectionality::get`] if you need to differentiate between these cases.
+ ///
+ /// See [`LocaleDirectionality::get`] for more information.
+ pub fn is_right_to_left(&self, locale: impl AsRef<LanguageIdentifier>) -> bool {
+ self.expander
+ .get_likely_script(locale.as_ref())
+ .map(|s| self.script_in_rtl(s))
+ .unwrap_or(false)
+ }
+
+ /// Returns whether the given locale is left-to-right.
+ ///
+ /// Note that if this method returns `false`, the locale is either right-to-left or
+ /// the [`LocaleDirectionality`] does not include data for the locale.
+ /// You should use [`LocaleDirectionality::get`] if you need to differentiate between these cases.
+ ///
+ /// See [`LocaleDirectionality::get`] for more information.
+ pub fn is_left_to_right(&self, locale: impl AsRef<LanguageIdentifier>) -> bool {
+ self.expander
+ .get_likely_script(locale.as_ref())
+ .map(|s| self.script_in_ltr(s))
+ .unwrap_or(false)
+ }
+
+ fn script_in_rtl(&self, script: Script) -> bool {
+ self.script_direction
+ .get()
+ .rtl
+ .binary_search(&script.into_tinystr().to_unvalidated())
+ .is_ok()
+ }
+
+ fn script_in_ltr(&self, script: Script) -> bool {
+ self.script_direction
+ .get()
+ .ltr
+ .binary_search(&script.into_tinystr().to_unvalidated())
+ .is_ok()
+ }
+}
diff --git a/vendor/icu_locid_transform/src/error.rs b/vendor/icu_locid_transform/src/error.rs
new file mode 100644
index 000000000..a59f838be
--- /dev/null
+++ b/vendor/icu_locid_transform/src/error.rs
@@ -0,0 +1,27 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use core::fmt::Debug;
+use displaydoc::Display;
+use icu_provider::DataError;
+
+#[cfg(feature = "std")]
+impl std::error::Error for LocaleTransformError {}
+
+/// A list of error outcomes for various operations in this module.
+///
+/// Re-exported as [`Error`](crate::Error).
+#[derive(Display, Debug, Copy, Clone, PartialEq)]
+#[non_exhaustive]
+pub enum LocaleTransformError {
+ /// An error originating inside of the [data provider](icu_provider).
+ #[displaydoc("{0}")]
+ Data(DataError),
+}
+
+impl From<DataError> for LocaleTransformError {
+ fn from(e: DataError) -> Self {
+ Self::Data(e)
+ }
+}
diff --git a/vendor/icu_locid_transform/src/expander.rs b/vendor/icu_locid_transform/src/expander.rs
new file mode 100644
index 000000000..56f204c32
--- /dev/null
+++ b/vendor/icu_locid_transform/src/expander.rs
@@ -0,0 +1,722 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::{provider::*, LocaleTransformError};
+
+use core::mem;
+use icu_locid::subtags::{Language, Region, Script};
+use icu_locid::LanguageIdentifier;
+use icu_provider::prelude::*;
+
+use crate::TransformResult;
+
+/// Implements the *Add Likely Subtags* and *Remove Likely Subtags*
+/// algorithms as defined in *[UTS #35: Likely Subtags]*.
+///
+/// # Examples
+///
+/// Add likely subtags:
+///
+/// ```
+/// use icu_locid::locale;
+/// use icu_locid_transform::{LocaleExpander, TransformResult};
+///
+/// let lc = LocaleExpander::new();
+///
+/// let mut locale = locale!("zh-CN");
+/// assert_eq!(lc.maximize(&mut locale), TransformResult::Modified);
+/// assert_eq!(locale, locale!("zh-Hans-CN"));
+///
+/// let mut locale = locale!("zh-Hant-TW");
+/// assert_eq!(lc.maximize(&mut locale), TransformResult::Unmodified);
+/// assert_eq!(locale, locale!("zh-Hant-TW"));
+/// ```
+///
+/// Remove likely subtags:
+///
+/// ```
+/// use icu_locid::locale;
+/// use icu_locid_transform::{LocaleExpander, TransformResult};
+///
+/// let lc = LocaleExpander::new();
+///
+/// let mut locale = locale!("zh-Hans-CN");
+/// assert_eq!(lc.minimize(&mut locale), TransformResult::Modified);
+/// assert_eq!(locale, locale!("zh"));
+///
+/// let mut locale = locale!("zh");
+/// assert_eq!(lc.minimize(&mut locale), TransformResult::Unmodified);
+/// assert_eq!(locale, locale!("zh"));
+/// ```
+///
+/// Normally, only CLDR locales with Basic or higher coverage are included. To include more
+/// locales for maximization, use [`try_new_extended`](Self::try_new_extended_unstable):
+///
+/// ```
+/// use icu_locid::locale;
+/// use icu_locid_transform::{LocaleExpander, TransformResult};
+///
+/// let lc = LocaleExpander::new_extended();
+///
+/// let mut locale = locale!("atj");
+/// assert_eq!(lc.maximize(&mut locale), TransformResult::Modified);
+/// assert_eq!(locale, locale!("atj-Latn-CA"));
+/// ```
+///
+/// [UTS #35: Likely Subtags]: https://www.unicode.org/reports/tr35/#Likely_Subtags
+#[derive(Debug, Clone)]
+pub struct LocaleExpander {
+ likely_subtags_l: DataPayload<LikelySubtagsForLanguageV1Marker>,
+ likely_subtags_sr: DataPayload<LikelySubtagsForScriptRegionV1Marker>,
+ likely_subtags_ext: Option<DataPayload<LikelySubtagsExtendedV1Marker>>,
+}
+
+struct LocaleExpanderBorrowed<'a> {
+ likely_subtags_l: &'a LikelySubtagsForLanguageV1<'a>,
+ likely_subtags_sr: &'a LikelySubtagsForScriptRegionV1<'a>,
+ likely_subtags_ext: Option<&'a LikelySubtagsExtendedV1<'a>>,
+}
+
+impl LocaleExpanderBorrowed<'_> {
+ fn get_l(&self, l: Language) -> Option<(Script, Region)> {
+ let key = &l.into_tinystr().to_unvalidated();
+ self.likely_subtags_l.language.get_copied(key).or_else(|| {
+ self.likely_subtags_ext
+ .and_then(|ext| ext.language.get_copied(key))
+ })
+ }
+
+ fn get_ls(&self, l: Language, s: Script) -> Option<Region> {
+ let key = &(
+ l.into_tinystr().to_unvalidated(),
+ s.into_tinystr().to_unvalidated(),
+ );
+ self.likely_subtags_l
+ .language_script
+ .get_copied(key)
+ .or_else(|| {
+ self.likely_subtags_ext
+ .and_then(|ext| ext.language_script.get_copied(key))
+ })
+ }
+
+ fn get_lr(&self, l: Language, r: Region) -> Option<Script> {
+ let key = &(
+ l.into_tinystr().to_unvalidated(),
+ r.into_tinystr().to_unvalidated(),
+ );
+ self.likely_subtags_l
+ .language_region
+ .get_copied(key)
+ .or_else(|| {
+ self.likely_subtags_ext
+ .and_then(|ext| ext.language_region.get_copied(key))
+ })
+ }
+
+ fn get_s(&self, s: Script) -> Option<(Language, Region)> {
+ let key = &s.into_tinystr().to_unvalidated();
+ self.likely_subtags_sr.script.get_copied(key).or_else(|| {
+ self.likely_subtags_ext
+ .and_then(|ext| ext.script.get_copied(key))
+ })
+ }
+
+ fn get_sr(&self, s: Script, r: Region) -> Option<Language> {
+ let key = &(
+ s.into_tinystr().to_unvalidated(),
+ r.into_tinystr().to_unvalidated(),
+ );
+ self.likely_subtags_sr
+ .script_region
+ .get_copied(key)
+ .or_else(|| {
+ self.likely_subtags_ext
+ .and_then(|ext| ext.script_region.get_copied(key))
+ })
+ }
+
+ fn get_r(&self, r: Region) -> Option<(Language, Script)> {
+ let key = &r.into_tinystr().to_unvalidated();
+ self.likely_subtags_sr.region.get_copied(key).or_else(|| {
+ self.likely_subtags_ext
+ .and_then(|ext| ext.region.get_copied(key))
+ })
+ }
+
+ fn get_und(&self) -> (Language, Script, Region) {
+ self.likely_subtags_l.und
+ }
+}
+
+#[inline]
+fn update_langid(
+ language: Language,
+ script: Option<Script>,
+ region: Option<Region>,
+ langid: &mut LanguageIdentifier,
+) -> TransformResult {
+ let mut modified = false;
+
+ if langid.language.is_empty() && !language.is_empty() {
+ langid.language = language;
+ modified = true;
+ }
+
+ if langid.script.is_none() && script.is_some() {
+ langid.script = script;
+ modified = true;
+ }
+
+ if langid.region.is_none() && region.is_some() {
+ langid.region = region;
+ modified = true;
+ }
+
+ if modified {
+ TransformResult::Modified
+ } else {
+ TransformResult::Unmodified
+ }
+}
+
+impl LocaleExpander {
+ /// Creates a [`LocaleExpander`] with compiled data for commonly-used locales
+ /// (locales with *Basic* or higher [CLDR coverage]).
+ ///
+ /// Use this constructor if you want limited likely subtags for data-oriented use cases.
+ ///
+ /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+ ///
+ /// [📚 Help choosing a constructor](icu_provider::constructors)
+ ///
+ /// [CLDR coverage]: https://www.unicode.org/reports/tr35/tr35-info.html#Coverage_Levels
+ #[cfg(feature = "compiled_data")]
+ pub const fn new() -> Self {
+ LocaleExpander {
+ likely_subtags_l: DataPayload::from_static_ref(
+ crate::provider::Baked::SINGLETON_LOCID_TRANSFORM_LIKELYSUBTAGS_L_V1,
+ ),
+ likely_subtags_sr: DataPayload::from_static_ref(
+ crate::provider::Baked::SINGLETON_LOCID_TRANSFORM_LIKELYSUBTAGS_SR_V1,
+ ),
+ likely_subtags_ext: None,
+ }
+ }
+
+ /// Creates a [`LocaleExpander`] with compiled data for all locales.
+ ///
+ /// Use this constructor if you want to include data for all locales, including ones
+ /// that may not have data for other services (i.e. [CLDR coverage] below *Basic*).
+ ///
+ /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+ ///
+ /// [📚 Help choosing a constructor](icu_provider::constructors)
+ ///
+ /// [CLDR coverage]: https://www.unicode.org/reports/tr35/tr35-info.html#Coverage_Levels
+ #[cfg(feature = "compiled_data")]
+ pub const fn new_extended() -> Self {
+ LocaleExpander {
+ likely_subtags_l: DataPayload::from_static_ref(
+ crate::provider::Baked::SINGLETON_LOCID_TRANSFORM_LIKELYSUBTAGS_L_V1,
+ ),
+ likely_subtags_sr: DataPayload::from_static_ref(
+ crate::provider::Baked::SINGLETON_LOCID_TRANSFORM_LIKELYSUBTAGS_SR_V1,
+ ),
+ likely_subtags_ext: Some(DataPayload::from_static_ref(
+ crate::provider::Baked::SINGLETON_LOCID_TRANSFORM_LIKELYSUBTAGS_EXT_V1,
+ )),
+ }
+ }
+
+ #[doc = icu_provider::gen_any_buffer_unstable_docs!(UNSTABLE, Self::new_extended)]
+ pub fn try_new_extended_unstable<P>(
+ provider: &P,
+ ) -> Result<LocaleExpander, LocaleTransformError>
+ where
+ P: DataProvider<LikelySubtagsForLanguageV1Marker>
+ + DataProvider<LikelySubtagsForScriptRegionV1Marker>
+ + DataProvider<LikelySubtagsExtendedV1Marker>
+ + ?Sized,
+ {
+ let likely_subtags_l = provider.load(Default::default())?.take_payload()?;
+ let likely_subtags_sr = provider.load(Default::default())?.take_payload()?;
+ let likely_subtags_ext = Some(provider.load(Default::default())?.take_payload()?);
+
+ Ok(LocaleExpander {
+ likely_subtags_l,
+ likely_subtags_sr,
+ likely_subtags_ext,
+ })
+ }
+
+ icu_provider::gen_any_buffer_data_constructors!(locale: skip, options: skip, error: LocaleTransformError,
+ #[cfg(skip)]
+ functions: [
+ new_extended,
+ try_new_extended_with_any_provider,
+ try_new_extended_with_buffer_provider,
+ try_new_extended_unstable,
+ Self
+ ]);
+
+ #[doc = icu_provider::gen_any_buffer_unstable_docs!(ANY, Self::new)]
+ pub fn try_new_with_any_provider(
+ provider: &(impl AnyProvider + ?Sized),
+ ) -> Result<LocaleExpander, LocaleTransformError> {
+ Self::try_new_compat(&provider.as_downcasting())
+ }
+
+ #[doc = icu_provider::gen_any_buffer_unstable_docs!(BUFFER, Self::new)]
+ #[cfg(feature = "serde")]
+ pub fn try_new_with_buffer_provider(
+ provider: &(impl BufferProvider + ?Sized),
+ ) -> Result<LocaleExpander, LocaleTransformError> {
+ Self::try_new_compat(&provider.as_deserializing())
+ }
+
+ #[doc = icu_provider::gen_any_buffer_unstable_docs!(UNSTABLE, Self::new)]
+ pub fn try_new_unstable<P>(provider: &P) -> Result<LocaleExpander, LocaleTransformError>
+ where
+ P: DataProvider<LikelySubtagsForLanguageV1Marker>
+ + DataProvider<LikelySubtagsForScriptRegionV1Marker>
+ + ?Sized,
+ {
+ let likely_subtags_l = provider.load(Default::default())?.take_payload()?;
+ let likely_subtags_sr = provider.load(Default::default())?.take_payload()?;
+
+ Ok(LocaleExpander {
+ likely_subtags_l,
+ likely_subtags_sr,
+ likely_subtags_ext: None,
+ })
+ }
+
+ fn try_new_compat<P>(provider: &P) -> Result<LocaleExpander, LocaleTransformError>
+ where
+ P: DataProvider<LikelySubtagsForLanguageV1Marker>
+ + DataProvider<LikelySubtagsForScriptRegionV1Marker>
+ + DataProvider<LikelySubtagsExtendedV1Marker>
+ + DataProvider<LikelySubtagsV1Marker>
+ + ?Sized,
+ {
+ let payload_l = provider
+ .load(Default::default())
+ .and_then(DataResponse::take_payload);
+ let payload_sr = provider
+ .load(Default::default())
+ .and_then(DataResponse::take_payload);
+ let payload_ext = provider
+ .load(Default::default())
+ .and_then(DataResponse::take_payload);
+
+ let (likely_subtags_l, likely_subtags_sr, likely_subtags_ext) =
+ match (payload_l, payload_sr, payload_ext) {
+ (Ok(l), Ok(sr), Err(_)) => (l, sr, None),
+ (Ok(l), Ok(sr), Ok(ext)) => (l, sr, Some(ext)),
+ _ => {
+ let result: DataPayload<LikelySubtagsV1Marker> =
+ provider.load(Default::default())?.take_payload()?;
+ (
+ result.map_project_cloned(|st, _| {
+ LikelySubtagsForLanguageV1::clone_from_borrowed(st)
+ }),
+ result.map_project(|st, _| st.into()),
+ None,
+ )
+ }
+ };
+
+ Ok(LocaleExpander {
+ likely_subtags_l,
+ likely_subtags_sr,
+ likely_subtags_ext,
+ })
+ }
+
+ fn as_borrowed(&self) -> LocaleExpanderBorrowed {
+ LocaleExpanderBorrowed {
+ likely_subtags_l: self.likely_subtags_l.get(),
+ likely_subtags_sr: self.likely_subtags_sr.get(),
+ likely_subtags_ext: self.likely_subtags_ext.as_ref().map(|p| p.get()),
+ }
+ }
+
+ /// The maximize method potentially updates a passed in locale in place
+ /// depending up the results of running the 'Add Likely Subtags' algorithm
+ /// from <https://www.unicode.org/reports/tr35/#Likely_Subtags>.
+ ///
+ /// If the result of running the algorithm would result in a new locale, the
+ /// locale argument is updated in place to match the result, and the method
+ /// returns [`TransformResult::Modified`]. Otherwise, the method
+ /// returns [`TransformResult::Unmodified`] and the locale argument is
+ /// unchanged.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use icu_locid::locale;
+ /// use icu_locid_transform::{LocaleExpander, TransformResult};
+ ///
+ /// let lc = LocaleExpander::new();
+ ///
+ /// let mut locale = locale!("zh-CN");
+ /// assert_eq!(lc.maximize(&mut locale), TransformResult::Modified);
+ /// assert_eq!(locale, locale!("zh-Hans-CN"));
+ ///
+ /// let mut locale = locale!("zh-Hant-TW");
+ /// assert_eq!(lc.maximize(&mut locale), TransformResult::Unmodified);
+ /// assert_eq!(locale, locale!("zh-Hant-TW"));
+ /// ```
+ pub fn maximize<T: AsMut<LanguageIdentifier>>(&self, mut langid: T) -> TransformResult {
+ let langid = langid.as_mut();
+ let data = self.as_borrowed();
+
+ if !langid.language.is_empty() && langid.script.is_some() && langid.region.is_some() {
+ return TransformResult::Unmodified;
+ }
+
+ if !langid.language.is_empty() {
+ if let Some(region) = langid.region {
+ if let Some(script) = data.get_lr(langid.language, region) {
+ return update_langid(Language::UND, Some(script), None, langid);
+ }
+ }
+ if let Some(script) = langid.script {
+ if let Some(region) = data.get_ls(langid.language, script) {
+ return update_langid(Language::UND, None, Some(region), langid);
+ }
+ }
+ if let Some((script, region)) = data.get_l(langid.language) {
+ return update_langid(Language::UND, Some(script), Some(region), langid);
+ }
+ }
+ if let Some(script) = langid.script {
+ if let Some(region) = langid.region {
+ if let Some(language) = data.get_sr(script, region) {
+ return update_langid(language, None, None, langid);
+ }
+ }
+ if let Some((language, region)) = data.get_s(script) {
+ return update_langid(language, None, Some(region), langid);
+ }
+ }
+ if let Some(region) = langid.region {
+ if let Some((language, script)) = data.get_r(region) {
+ return update_langid(language, Some(script), None, langid);
+ }
+ }
+
+ update_langid(
+ data.get_und().0,
+ Some(data.get_und().1),
+ Some(data.get_und().2),
+ langid,
+ )
+ }
+
+ /// This returns a new Locale that is the result of running the
+ /// 'Remove Likely Subtags' algorithm from
+ /// <https://www.unicode.org/reports/tr35/#Likely_Subtags>.
+ ///
+ /// If the result of running the algorithm would result in a new locale, the
+ /// locale argument is updated in place to match the result, and the method
+ /// returns [`TransformResult::Modified`]. Otherwise, the method
+ /// returns [`TransformResult::Unmodified`] and the locale argument is
+ /// unchanged.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use icu_locid::locale;
+ /// use icu_locid_transform::{LocaleExpander, TransformResult};
+ ///
+ /// let lc = LocaleExpander::new();
+ ///
+ /// let mut locale = locale!("zh-Hans-CN");
+ /// assert_eq!(lc.minimize(&mut locale), TransformResult::Modified);
+ /// assert_eq!(locale, locale!("zh"));
+ ///
+ /// let mut locale = locale!("zh");
+ /// assert_eq!(lc.minimize(&mut locale), TransformResult::Unmodified);
+ /// assert_eq!(locale, locale!("zh"));
+ /// ```
+ pub fn minimize<T: AsMut<LanguageIdentifier>>(&self, mut langid: T) -> TransformResult {
+ let langid = langid.as_mut();
+
+ let mut max = langid.clone();
+ self.maximize(&mut max);
+ let variants = mem::take(&mut max.variants);
+ max.variants.clear();
+ let mut trial = max.clone();
+
+ trial.script = None;
+ trial.region = None;
+ self.maximize(&mut trial);
+ if trial == max {
+ if langid.language != max.language || langid.script.is_some() || langid.region.is_some()
+ {
+ if langid.language != max.language {
+ langid.language = max.language
+ }
+ if langid.script.is_some() {
+ langid.script = None;
+ }
+ if langid.region.is_some() {
+ langid.region = None;
+ }
+ langid.variants = variants;
+ return TransformResult::Modified;
+ } else {
+ return TransformResult::Unmodified;
+ }
+ }
+
+ trial.script = None;
+ trial.region = max.region;
+ self.maximize(&mut trial);
+ if trial == max {
+ if langid.language != max.language
+ || langid.script.is_some()
+ || langid.region != max.region
+ {
+ if langid.language != max.language {
+ langid.language = max.language
+ }
+ if langid.script.is_some() {
+ langid.script = None;
+ }
+ if langid.region != max.region {
+ langid.region = max.region;
+ }
+ langid.variants = variants;
+ return TransformResult::Modified;
+ } else {
+ return TransformResult::Unmodified;
+ }
+ }
+
+ trial.script = max.script;
+ trial.region = None;
+ self.maximize(&mut trial);
+ if trial == max {
+ if langid.language != max.language
+ || langid.script != max.script
+ || langid.region.is_some()
+ {
+ if langid.language != max.language {
+ langid.language = max.language
+ }
+ if langid.script != max.script {
+ langid.script = max.script;
+ }
+ if langid.region.is_some() {
+ langid.region = None;
+ }
+ langid.variants = variants;
+ return TransformResult::Modified;
+ } else {
+ return TransformResult::Unmodified;
+ }
+ }
+
+ if langid.language != max.language
+ || langid.script != max.script
+ || langid.region != max.region
+ {
+ if langid.language != max.language {
+ langid.language = max.language
+ }
+ if langid.script != max.script {
+ langid.script = max.script;
+ }
+ if langid.region != max.region {
+ langid.region = max.region;
+ }
+ TransformResult::Modified
+ } else {
+ TransformResult::Unmodified
+ }
+ }
+
+ // TODO(3492): consider turning this and a future get_likely_region/get_likely_language public
+ #[inline]
+ pub(crate) fn get_likely_script<T: AsRef<LanguageIdentifier>>(
+ &self,
+ langid: T,
+ ) -> Option<Script> {
+ let langid = langid.as_ref();
+ langid
+ .script
+ .or_else(|| self.infer_likely_script(langid.language, langid.region))
+ }
+
+ fn infer_likely_script(&self, language: Language, region: Option<Region>) -> Option<Script> {
+ let data = self.as_borrowed();
+
+ // proceed through _all possible cases_ in order of specificity
+ // (borrowed from LocaleExpander::maximize):
+ // 1. language + region
+ // 2. language
+ // 3. region
+ // we need to check all cases, because e.g. for "en-US" the default script is associated
+ // with "en" but not "en-US"
+ if language != Language::UND {
+ if let Some(region) = region {
+ // 1. we know both language and region
+ if let Some(script) = data.get_lr(language, region) {
+ return Some(script);
+ }
+ }
+ // 2. we know language, but we either do not know region or knowing region did not help
+ if let Some((script, _)) = data.get_l(language) {
+ return Some(script);
+ }
+ }
+ if let Some(region) = region {
+ // 3. we know region, but we either do not know language or knowing language did not help
+ if let Some((_, script)) = data.get_r(region) {
+ return Some(script);
+ }
+ }
+ // we could not figure out the script from the given locale
+ None
+ }
+}
+
+#[cfg(feature = "serde")]
+#[cfg(test)]
+mod tests {
+ use super::*;
+ use icu_locid::locale;
+
+ struct RejectByKeyProvider {
+ keys: Vec<DataKey>,
+ }
+
+ impl AnyProvider for RejectByKeyProvider {
+ fn load_any(&self, key: DataKey, _: DataRequest) -> Result<AnyResponse, DataError> {
+ if self.keys.contains(&key) {
+ return Err(DataErrorKind::MissingDataKey.with_str_context("rejected"));
+ }
+
+ let l = crate::provider::Baked::SINGLETON_LOCID_TRANSFORM_LIKELYSUBTAGS_L_V1;
+ let ext = crate::provider::Baked::SINGLETON_LOCID_TRANSFORM_LIKELYSUBTAGS_EXT_V1;
+ let sr = crate::provider::Baked::SINGLETON_LOCID_TRANSFORM_LIKELYSUBTAGS_SR_V1;
+
+ let payload = if key.hashed() == LikelySubtagsV1Marker::KEY.hashed() {
+ DataPayload::<LikelySubtagsV1Marker>::from_owned(LikelySubtagsV1 {
+ language_script: l
+ .language_script
+ .iter_copied()
+ .chain(ext.language_script.iter_copied())
+ .collect(),
+ language_region: l
+ .language_region
+ .iter_copied()
+ .chain(ext.language_region.iter_copied())
+ .collect(),
+ language: l
+ .language
+ .iter_copied()
+ .chain(ext.language.iter_copied())
+ .collect(),
+ script_region: ext.script_region.clone(),
+ script: ext.script.clone(),
+ region: ext.region.clone(),
+ und: l.und,
+ })
+ .wrap_into_any_payload()
+ } else if key.hashed() == LikelySubtagsForLanguageV1Marker::KEY.hashed() {
+ DataPayload::<LikelySubtagsForLanguageV1Marker>::from_static_ref(l)
+ .wrap_into_any_payload()
+ } else if key.hashed() == LikelySubtagsExtendedV1Marker::KEY.hashed() {
+ DataPayload::<LikelySubtagsExtendedV1Marker>::from_static_ref(ext)
+ .wrap_into_any_payload()
+ } else if key.hashed() == LikelySubtagsForScriptRegionV1Marker::KEY.hashed() {
+ DataPayload::<LikelySubtagsForScriptRegionV1Marker>::from_static_ref(sr)
+ .wrap_into_any_payload()
+ } else {
+ return Err(DataErrorKind::MissingDataKey.into_error());
+ };
+
+ Ok(AnyResponse {
+ payload: Some(payload),
+ metadata: Default::default(),
+ })
+ }
+ }
+
+ #[test]
+ fn test_old_keys() {
+ let provider = RejectByKeyProvider {
+ keys: vec![
+ LikelySubtagsForLanguageV1Marker::KEY,
+ LikelySubtagsForScriptRegionV1Marker::KEY,
+ LikelySubtagsExtendedV1Marker::KEY,
+ ],
+ };
+ let lc = LocaleExpander::try_new_with_any_provider(&provider)
+ .expect("should create with old keys");
+ let mut locale = locale!("zh-CN");
+ assert_eq!(lc.maximize(&mut locale), TransformResult::Modified);
+ assert_eq!(locale, locale!("zh-Hans-CN"));
+ }
+
+ #[test]
+ fn test_new_keys() {
+ let provider = RejectByKeyProvider {
+ keys: vec![LikelySubtagsV1Marker::KEY],
+ };
+ let lc = LocaleExpander::try_new_with_any_provider(&provider)
+ .expect("should create with new keys");
+ let mut locale = locale!("zh-CN");
+ assert_eq!(lc.maximize(&mut locale), TransformResult::Modified);
+ assert_eq!(locale, locale!("zh-Hans-CN"));
+ }
+
+ #[test]
+ fn test_mixed_keys() {
+ // Include the old key and one of the new keys but not both new keys.
+ // Not sure if this is a useful test.
+ let provider = RejectByKeyProvider {
+ keys: vec![LikelySubtagsForScriptRegionV1Marker::KEY],
+ };
+ let lc = LocaleExpander::try_new_with_any_provider(&provider)
+ .expect("should create with mixed keys");
+ let mut locale = locale!("zh-CN");
+ assert_eq!(lc.maximize(&mut locale), TransformResult::Modified);
+ assert_eq!(locale, locale!("zh-Hans-CN"));
+ }
+
+ #[test]
+ fn test_no_keys() {
+ let provider = RejectByKeyProvider {
+ keys: vec![
+ LikelySubtagsForLanguageV1Marker::KEY,
+ LikelySubtagsForScriptRegionV1Marker::KEY,
+ LikelySubtagsV1Marker::KEY,
+ ],
+ };
+ if LocaleExpander::try_new_with_any_provider(&provider).is_ok() {
+ panic!("should not create: no data present")
+ };
+ }
+
+ #[test]
+ fn test_new_small_keys() {
+ // Include the new small keys but not the extended key
+ let provider = RejectByKeyProvider {
+ keys: vec![
+ LikelySubtagsExtendedV1Marker::KEY,
+ LikelySubtagsV1Marker::KEY,
+ ],
+ };
+ let lc = LocaleExpander::try_new_with_any_provider(&provider)
+ .expect("should create with mixed keys");
+ let mut locale = locale!("zh-CN");
+ assert_eq!(lc.maximize(&mut locale), TransformResult::Modified);
+ assert_eq!(locale, locale!("zh-Hans-CN"));
+ }
+}
diff --git a/vendor/icu_provider_adapters/src/fallback/algorithms.rs b/vendor/icu_locid_transform/src/fallback/algorithms.rs
index 0edc59304..c3a3d08ca 100644
--- a/vendor/icu_provider_adapters/src/fallback/algorithms.rs
+++ b/vendor/icu_locid_transform/src/fallback/algorithms.rs
@@ -2,8 +2,7 @@
// called LICENSE at the top level of the ICU4X source tree
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
-use icu_locid::extensions::unicode::Key;
-use icu_locid::extensions_unicode_key as key;
+use icu_locid::extensions::unicode::{key, Key};
use icu_locid::subtags::Language;
use icu_locid::LanguageIdentifier;
use icu_provider::FallbackPriority;
@@ -22,13 +21,21 @@ impl<'a> LocaleFallbackerWithConfig<'a> {
locale.set_region(
self.likely_subtags
.ls2r
- .get_2d(&language.into(), &script.into())
+ .get_2d(
+ &language.into_tinystr().to_unvalidated(),
+ &script.into_tinystr().to_unvalidated(),
+ )
.copied(),
);
}
// 1b. If that fails, try language only
if locale.region().is_none() {
- locale.set_region(self.likely_subtags.l2r.get(&language.into()).copied());
+ locale.set_region(
+ self.likely_subtags
+ .l2r
+ .get(&language.into_tinystr().to_unvalidated())
+ .copied(),
+ );
}
}
// 2. Remove the script if it is implied by the other subtags
@@ -36,14 +43,17 @@ impl<'a> LocaleFallbackerWithConfig<'a> {
let default_script = self
.likely_subtags
.l2s
- .get_copied(&language.into())
+ .get_copied(&language.into_tinystr().to_unvalidated())
.unwrap_or(DEFAULT_SCRIPT);
if let Some(region) = locale.region() {
if script
== self
.likely_subtags
.lr2s
- .get_copied_2d(&language.into(), &region.into())
+ .get_copied_2d(
+ &language.into_tinystr().to_unvalidated(),
+ &region.into_tinystr().to_unvalidated(),
+ )
.unwrap_or(default_script)
{
locale.set_script(None);
@@ -68,7 +78,7 @@ impl<'a> LocaleFallbackerWithConfig<'a> {
}
}
-impl<'a, 'b> LocaleFallbackIteratorInner<'a, 'b> {
+impl<'a> LocaleFallbackIteratorInner<'a> {
pub fn step(&mut self, locale: &mut DataLocale) {
match self.config.priority {
FallbackPriority::Language => self.step_language(locale),
@@ -119,11 +129,10 @@ impl<'a, 'b> LocaleFallbackIteratorInner<'a, 'b> {
if locale.script().is_none() {
if let Some(region) = locale.region() {
let language = locale.language();
- if let Some(script) = self
- .likely_subtags
- .lr2s
- .get_copied_2d(&language.into(), &region.into())
- {
+ if let Some(script) = self.likely_subtags.lr2s.get_copied_2d(
+ &language.into_tinystr().to_unvalidated(),
+ &region.into_tinystr().to_unvalidated(),
+ ) {
locale.set_script(Some(script));
self.restore_extensions_variants(locale);
return;
@@ -133,6 +142,7 @@ impl<'a, 'b> LocaleFallbackIteratorInner<'a, 'b> {
// 7. Remove region
if locale.region().is_some() {
locale.set_region(None);
+ self.restore_extensions_variants(locale);
return;
}
// 8. Remove language+script
@@ -213,7 +223,7 @@ mod tests {
input: &'static str,
requires_data: bool,
extension_key: Option<Key>,
- fallback_supplement: Option<FallbackSupplement>,
+ fallback_supplement: Option<LocaleFallbackSupplement>,
// Note: The first entry in the chain is the normalized locale
expected_language_chain: &'static [&'static str],
expected_region_chain: &'static [&'static str],
@@ -234,7 +244,7 @@ mod tests {
requires_data: false,
extension_key: None,
fallback_supplement: None,
- expected_language_chain: &["en-US-u-sd-usca", "en-US", "en"],
+ expected_language_chain: &["en-US-u-sd-usca", "en-US", "en-u-sd-usca", "en"],
expected_region_chain: &["en-US-u-sd-usca", "en-US", "und-US-u-sd-usca", "und-US"],
},
TestCase {
@@ -247,6 +257,9 @@ mod tests {
"en-US-fonipa-u-sd-usca",
"en-US-fonipa",
"en-US",
+ "en-fonipa-u-hc-h12-sd-usca",
+ "en-fonipa-u-sd-usca",
+ "en-fonipa",
"en",
],
expected_region_chain: &[
@@ -281,7 +294,7 @@ mod tests {
requires_data: true,
extension_key: None,
fallback_supplement: None,
- expected_language_chain: &["en-US-u-sd-usca", "en-US", "en"],
+ expected_language_chain: &["en-US-u-sd-usca", "en-US", "en-u-sd-usca", "en"],
expected_region_chain: &["en-US-u-sd-usca", "en-US", "und-US-u-sd-usca", "und-US"],
},
TestCase {
@@ -302,6 +315,14 @@ mod tests {
expected_region_chain: &["sr-ME", "und-ME"],
},
TestCase {
+ input: "sr-Latn-ME",
+ requires_data: true,
+ extension_key: None,
+ fallback_supplement: None,
+ expected_language_chain: &["sr-ME", "sr-Latn-ME", "sr-Latn"],
+ expected_region_chain: &["sr-ME", "und-ME"],
+ },
+ TestCase {
input: "sr-ME-fonipa",
requires_data: true,
extension_key: None,
@@ -311,11 +332,36 @@ mod tests {
"sr-ME",
"sr-Latn-ME-fonipa",
"sr-Latn-ME",
+ "sr-Latn-fonipa",
"sr-Latn",
],
expected_region_chain: &["sr-ME-fonipa", "sr-ME", "und-ME-fonipa", "und-ME"],
},
TestCase {
+ input: "sr-RS",
+ requires_data: true,
+ extension_key: None,
+ fallback_supplement: None,
+ expected_language_chain: &["sr-RS", "sr"],
+ expected_region_chain: &["sr-RS", "und-RS"],
+ },
+ TestCase {
+ input: "sr-Cyrl-RS",
+ requires_data: true,
+ extension_key: None,
+ fallback_supplement: None,
+ expected_language_chain: &["sr-RS", "sr"],
+ expected_region_chain: &["sr-RS", "und-RS"],
+ },
+ TestCase {
+ input: "sr-Latn-RS",
+ requires_data: true,
+ extension_key: None,
+ fallback_supplement: None,
+ expected_language_chain: &["sr-Latn-RS", "sr-Latn"],
+ expected_region_chain: &["sr-Latn-RS", "und-RS"],
+ },
+ TestCase {
input: "de-Latn-LI",
requires_data: true,
extension_key: None,
@@ -328,7 +374,7 @@ mod tests {
requires_data: true,
extension_key: None,
fallback_supplement: None,
- expected_language_chain: &["ca-ES-valencia", "ca-ES", "ca"],
+ expected_language_chain: &["ca-ES-valencia", "ca-ES", "ca-valencia", "ca"],
expected_region_chain: &["ca-ES-valencia", "ca-ES", "und-ES-valencia", "und-ES"],
},
TestCase {
@@ -386,7 +432,7 @@ mod tests {
input: "yue-HK",
requires_data: true,
extension_key: None,
- fallback_supplement: Some(FallbackSupplement::Collation),
+ fallback_supplement: Some(LocaleFallbackSupplement::Collation),
// TODO(#1964): add "zh" as a target.
expected_language_chain: &["yue-HK", "yue", "zh-Hant"],
expected_region_chain: &["yue-HK", "und-HK"],
@@ -394,28 +440,30 @@ mod tests {
];
#[test]
- #[cfg(feature = "serde")]
fn test_fallback() {
let fallbacker_no_data = LocaleFallbacker::new_without_data();
- let fallbacker_with_data =
- LocaleFallbacker::try_new_with_buffer_provider(&icu_testdata::buffer()).unwrap();
+ let fallbacker_no_data = fallbacker_no_data.as_borrowed();
+ let fallbacker_with_data = LocaleFallbacker::new();
for cas in TEST_CASES {
for (priority, expected_chain) in [
- (FallbackPriority::Language, cas.expected_language_chain),
- (FallbackPriority::Region, cas.expected_region_chain),
+ (
+ LocaleFallbackPriority::Language,
+ cas.expected_language_chain,
+ ),
+ (LocaleFallbackPriority::Region, cas.expected_region_chain),
] {
- let config = LocaleFallbackConfig {
- priority,
- extension_key: cas.extension_key,
- fallback_supplement: cas.fallback_supplement,
- };
- let key_fallbacker = if cas.requires_data {
- fallbacker_with_data.for_config(config)
+ let mut config = LocaleFallbackConfig::default();
+ config.priority = priority;
+ config.extension_key = cas.extension_key;
+ config.fallback_supplement = cas.fallback_supplement;
+ let fallbacker = if cas.requires_data {
+ fallbacker_with_data
} else {
- fallbacker_no_data.for_config(config)
+ fallbacker_no_data
};
- let locale = DataLocale::from(Locale::from_str(cas.input).unwrap());
- let mut it = key_fallbacker.fallback_for(locale);
+ let mut it = fallbacker
+ .for_config(config)
+ .fallback_for(Locale::from_str(cas.input).unwrap().into());
for &expected in expected_chain {
assert_eq!(
expected,
diff --git a/vendor/icu_locid_transform/src/fallback/mod.rs b/vendor/icu_locid_transform/src/fallback/mod.rs
new file mode 100644
index 000000000..6b13e0201
--- /dev/null
+++ b/vendor/icu_locid_transform/src/fallback/mod.rs
@@ -0,0 +1,300 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Tools for locale fallback, enabling arbitrary input locales to be mapped into the nearest
+//! locale with data.
+//!
+//! The algorithm implemented in this module is called [Flexible Vertical Fallback](
+//! https://docs.google.com/document/d/1Mp7EUyl-sFh_HZYgyeVwj88vJGpCBIWxzlCwGgLCDwM/edit).
+//! Watch [#2243](https://github.com/unicode-org/icu4x/issues/2243) to track improvements to
+//! this algorithm and steps to enshrine the algorithm in CLDR.
+//!
+//! # Examples
+//!
+//! ```
+//! use icu_locid::locale;
+//! use icu_locid_transform::LocaleFallbacker;
+//!
+//! // Set up a LocaleFallbacker with data.
+//! let fallbacker = LocaleFallbacker::new();
+//!
+//! // Create a LocaleFallbackerIterator with a default configuration.
+//! // By default, uses language priority with no additional extension keywords.
+//! let mut fallback_iterator = fallbacker
+//! .for_config(Default::default())
+//! .fallback_for(locale!("hi-Latn-IN").into());
+//!
+//! // Run the algorithm and check the results.
+//! assert_eq!(fallback_iterator.get(), &locale!("hi-Latn-IN").into());
+//! fallback_iterator.step();
+//! assert_eq!(fallback_iterator.get(), &locale!("hi-Latn").into());
+//! fallback_iterator.step();
+//! assert_eq!(fallback_iterator.get(), &locale!("en-IN").into());
+//! fallback_iterator.step();
+//! assert_eq!(fallback_iterator.get(), &locale!("en-001").into());
+//! fallback_iterator.step();
+//! assert_eq!(fallback_iterator.get(), &locale!("en").into());
+//! fallback_iterator.step();
+//! assert_eq!(fallback_iterator.get(), &locale!("und").into());
+//! ```
+
+use crate::provider::*;
+use icu_locid::extensions::unicode::Value;
+use icu_locid::subtags::Variants;
+use icu_provider::prelude::*;
+
+#[doc(inline)]
+pub use icu_provider::fallback::*;
+
+mod algorithms;
+
+/// Implements the algorithm defined in *[UTS #35: Locale Inheritance and Matching]*.
+///
+/// Note that this implementation performs some additional steps compared to the *UTS #35*
+/// algorithm, see *[the design doc]* for a detailed description, and [#2243](
+/// https://github.com/unicode-org/icu4x/issues/2243) to track aligment with *UTS #35*.
+///
+/// # Examples
+///
+/// ```
+/// use icu_locid::locale;
+/// use icu_locid_transform::fallback::LocaleFallbacker;
+///
+/// // Set up a LocaleFallbacker with data.
+/// let fallbacker = LocaleFallbacker::new();
+///
+/// // Create a LocaleFallbackerIterator with a default configuration.
+/// // By default, uses language priority with no additional extension keywords.
+/// let mut fallback_iterator = fallbacker
+/// .for_config(Default::default())
+/// .fallback_for(locale!("hi-Latn-IN").into());
+///
+/// // Run the algorithm and check the results.
+/// assert_eq!(fallback_iterator.get(), &locale!("hi-Latn-IN").into());
+/// fallback_iterator.step();
+/// assert_eq!(fallback_iterator.get(), &locale!("hi-Latn").into());
+/// fallback_iterator.step();
+/// assert_eq!(fallback_iterator.get(), &locale!("en-IN").into());
+/// fallback_iterator.step();
+/// assert_eq!(fallback_iterator.get(), &locale!("en-001").into());
+/// fallback_iterator.step();
+/// assert_eq!(fallback_iterator.get(), &locale!("en").into());
+/// fallback_iterator.step();
+/// assert_eq!(fallback_iterator.get(), &locale!("und").into());
+/// ```
+///
+/// [UTS #35: Locale Inheritance and Matching]: https://www.unicode.org/reports/tr35/#Locale_Inheritance
+/// [the design doc]: https://docs.google.com/document/d/1Mp7EUyl-sFh_HZYgyeVwj88vJGpCBIWxzlCwGgLCDwM/edit
+#[doc(hidden)]
+#[derive(Debug, Clone, PartialEq)]
+pub struct LocaleFallbacker {
+ likely_subtags: DataPayload<LocaleFallbackLikelySubtagsV1Marker>,
+ parents: DataPayload<LocaleFallbackParentsV1Marker>,
+ collation_supplement: Option<DataPayload<CollationFallbackSupplementV1Marker>>,
+}
+
+/// Borrowed version of [`LocaleFallbacker`].
+#[derive(Debug, Clone, Copy, PartialEq)]
+pub struct LocaleFallbackerBorrowed<'a> {
+ likely_subtags: &'a LocaleFallbackLikelySubtagsV1<'a>,
+ parents: &'a LocaleFallbackParentsV1<'a>,
+ collation_supplement: Option<&'a LocaleFallbackSupplementV1<'a>>,
+}
+
+/// A [`LocaleFallbackerBorrowed`] with an associated [`LocaleFallbackConfig`].
+#[derive(Debug, Clone, Copy, PartialEq)]
+pub struct LocaleFallbackerWithConfig<'a> {
+ likely_subtags: &'a LocaleFallbackLikelySubtagsV1<'a>,
+ parents: &'a LocaleFallbackParentsV1<'a>,
+ supplement: Option<&'a LocaleFallbackSupplementV1<'a>>,
+ config: LocaleFallbackConfig,
+}
+
+/// Inner iteration type. Does not own the item under fallback.
+#[derive(Debug)]
+struct LocaleFallbackIteratorInner<'a> {
+ likely_subtags: &'a LocaleFallbackLikelySubtagsV1<'a>,
+ parents: &'a LocaleFallbackParentsV1<'a>,
+ supplement: Option<&'a LocaleFallbackSupplementV1<'a>>,
+ config: LocaleFallbackConfig,
+ backup_extension: Option<Value>,
+ backup_subdivision: Option<Value>,
+ backup_variants: Option<Variants>,
+}
+
+/// Iteration type for locale fallback operations.
+///
+/// Because the `Iterator` trait does not allow items to borrow from the iterator, this class does
+/// not implement that trait. Instead, use `.step()` and `.get()`.
+#[derive(Debug)]
+pub struct LocaleFallbackIterator<'a, 'b> {
+ current: DataLocale,
+ inner: LocaleFallbackIteratorInner<'a>,
+ phantom: core::marker::PhantomData<&'b ()>,
+}
+
+impl LocaleFallbacker {
+ /// Creates a [`LocaleFallbacker`] with compiled fallback data (likely subtags and parent locales).
+ ///
+ /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+ ///
+ /// [📚 Help choosing a constructor](icu_provider::constructors)
+ #[cfg(feature = "compiled_data")]
+ #[allow(clippy::new_ret_no_self)] // keeping constructors together
+ pub const fn new<'a>() -> LocaleFallbackerBorrowed<'a> {
+ let tickstatic = LocaleFallbackerBorrowed {
+ likely_subtags: crate::provider::Baked::SINGLETON_FALLBACK_LIKELYSUBTAGS_V1,
+ parents: crate::provider::Baked::SINGLETON_FALLBACK_PARENTS_V1,
+ collation_supplement: Some(crate::provider::Baked::SINGLETON_FALLBACK_SUPPLEMENT_CO_V1),
+ };
+ // Shitty covariance because the zeromaps confuse the compiler
+ unsafe { core::mem::transmute(tickstatic) }
+ }
+
+ icu_provider::gen_any_buffer_data_constructors!(locale: skip, options: skip, error: DataError,
+ #[cfg(skip)]
+ functions: [
+ new,
+ try_new_with_any_provider,
+ try_new_with_buffer_provider,
+ try_new_unstable,
+ Self
+ ]);
+
+ #[doc = icu_provider::gen_any_buffer_unstable_docs!(UNSTABLE, Self::new)]
+ pub fn try_new_unstable<P>(provider: &P) -> Result<Self, DataError>
+ where
+ P: DataProvider<LocaleFallbackLikelySubtagsV1Marker>
+ + DataProvider<LocaleFallbackParentsV1Marker>
+ + DataProvider<CollationFallbackSupplementV1Marker>
+ + ?Sized,
+ {
+ let likely_subtags = provider.load(Default::default())?.take_payload()?;
+ let parents = provider.load(Default::default())?.take_payload()?;
+ let collation_supplement = match DataProvider::<CollationFallbackSupplementV1Marker>::load(
+ provider,
+ Default::default(),
+ ) {
+ Ok(response) => Some(response.take_payload()?),
+ // It is expected that not all keys are present
+ Err(DataError {
+ kind: DataErrorKind::MissingDataKey,
+ ..
+ }) => None,
+ Err(e) => return Err(e),
+ };
+ Ok(LocaleFallbacker {
+ likely_subtags,
+ parents,
+ collation_supplement,
+ })
+ }
+
+ /// Creates a [`LocaleFallbacker`] without fallback data. Using this constructor may result in
+ /// surprising behavior, especially in multi-script languages.
+ pub fn new_without_data() -> Self {
+ LocaleFallbacker {
+ likely_subtags: DataPayload::from_owned(Default::default()),
+ parents: DataPayload::from_owned(Default::default()),
+ collation_supplement: None,
+ }
+ }
+
+ /// Associates a configuration with this fallbacker.
+ #[inline]
+ pub fn for_config(&self, config: LocaleFallbackConfig) -> LocaleFallbackerWithConfig {
+ self.as_borrowed().for_config(config)
+ }
+
+ /// Derives a configuration from a [`DataKey`] and associates it
+ /// with this fallbacker.
+ #[inline]
+ #[doc(hidden)] // will be removed in 2.0
+ pub fn for_key(&self, data_key: DataKey) -> LocaleFallbackerWithConfig {
+ self.for_config(data_key.fallback_config())
+ }
+
+ /// Creates a borrowed version of this fallbacker for performance.
+ pub fn as_borrowed(&self) -> LocaleFallbackerBorrowed {
+ LocaleFallbackerBorrowed {
+ likely_subtags: self.likely_subtags.get(),
+ parents: self.parents.get(),
+ collation_supplement: self.collation_supplement.as_ref().map(|p| p.get()),
+ }
+ }
+}
+
+impl<'a> LocaleFallbackerBorrowed<'a> {
+ /// Associates a configuration with this fallbacker.
+ #[inline]
+ pub const fn for_config(self, config: LocaleFallbackConfig) -> LocaleFallbackerWithConfig<'a> {
+ LocaleFallbackerWithConfig {
+ likely_subtags: self.likely_subtags,
+ parents: self.parents,
+ supplement: match config.fallback_supplement {
+ Some(LocaleFallbackSupplement::Collation) => self.collation_supplement,
+ _ => None,
+ },
+ config,
+ }
+ }
+}
+
+impl LocaleFallbackerBorrowed<'static> {
+ /// Cheaply converts a `LocaleFallbackerBorrowed<'static>` into a `LocaleFallbacker`.
+ pub const fn static_to_owned(self) -> LocaleFallbacker {
+ LocaleFallbacker {
+ likely_subtags: DataPayload::from_static_ref(self.likely_subtags),
+ parents: DataPayload::from_static_ref(self.parents),
+ collation_supplement: match self.collation_supplement {
+ None => None,
+ Some(x) => Some(DataPayload::from_static_ref(x)),
+ },
+ }
+ }
+}
+
+impl<'a> LocaleFallbackerWithConfig<'a> {
+ /// Creates an iterator based on a [`DataLocale`].
+ ///
+ /// If you have a [`Locale`](icu_locid::Locale), call `.into()` to get a [`DataLocale`].
+ ///
+ /// When first initialized, the locale is normalized according to the fallback algorithm.
+ pub fn fallback_for(&self, mut locale: DataLocale) -> LocaleFallbackIterator<'a, 'static> {
+ self.normalize(&mut locale);
+ LocaleFallbackIterator {
+ current: locale,
+ inner: LocaleFallbackIteratorInner {
+ likely_subtags: self.likely_subtags,
+ parents: self.parents,
+ supplement: self.supplement,
+ config: self.config,
+ backup_extension: None,
+ backup_subdivision: None,
+ backup_variants: None,
+ },
+ phantom: core::marker::PhantomData,
+ }
+ }
+}
+
+impl LocaleFallbackIterator<'_, '_> {
+ /// Borrows the current [`DataLocale`] under fallback.
+ pub fn get(&self) -> &DataLocale {
+ &self.current
+ }
+
+ /// Takes the current [`DataLocale`] under fallback.
+ pub fn take(self) -> DataLocale {
+ self.current
+ }
+
+ /// Performs one step of the locale fallback algorithm.
+ ///
+ /// The fallback is completed once the inner [`DataLocale`] becomes `und`.
+ pub fn step(&mut self) -> &mut Self {
+ self.inner.step(&mut self.current);
+ self
+ }
+}
diff --git a/vendor/icu_locid_transform/src/lib.rs b/vendor/icu_locid_transform/src/lib.rs
new file mode 100644
index 000000000..4c4e34aea
--- /dev/null
+++ b/vendor/icu_locid_transform/src/lib.rs
@@ -0,0 +1,116 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Canonicalization of locale identifiers based on [`CLDR`] data.
+//!
+//! This module is published as its own crate ([`icu_locid_transform`](https://docs.rs/icu_locid_transform/latest/icu_locid_transform/))
+//! and as part of the [`icu`](https://docs.rs/icu/latest/icu/) crate. See the latter for more details on the ICU4X project.
+//!
+//! It currently supports locale canonicalization based upon the canonicalization
+//! algorithm from [`UTS #35: Unicode LDML 3. LocaleId Canonicalization`],
+//! as well as the minimize and maximize likely subtags algorithms
+//! as described in [`UTS #35: Unicode LDML 3. Likely Subtags`].
+//!
+//! The maximize method potentially updates a passed in locale in place
+//! depending up the results of running the 'Add Likely Subtags' algorithm
+//! from [`UTS #35: Unicode LDML 3. Likely Subtags`].
+//!
+//! This minimize method returns a new Locale that is the result of running the
+//! 'Remove Likely Subtags' algorithm from [`UTS #35: Unicode LDML 3. Likely Subtags`].
+//!
+//! # Examples
+//!
+//! ```
+//! use icu::locid::Locale;
+//! use icu::locid_transform::{LocaleCanonicalizer, TransformResult};
+//!
+//! let lc = LocaleCanonicalizer::new();
+//!
+//! let mut locale: Locale = "ja-Latn-fonipa-hepburn-heploc"
+//! .parse()
+//! .expect("parse failed");
+//! assert_eq!(lc.canonicalize(&mut locale), TransformResult::Modified);
+//! assert_eq!(locale, "ja-Latn-alalc97-fonipa".parse::<Locale>().unwrap());
+//! ```
+//!
+//! ```
+//! use icu::locid::locale;
+//! use icu::locid_transform::{LocaleExpander, TransformResult};
+//!
+//! let lc = LocaleExpander::new();
+//!
+//! let mut locale = locale!("zh-CN");
+//! assert_eq!(lc.maximize(&mut locale), TransformResult::Modified);
+//! assert_eq!(locale, locale!("zh-Hans-CN"));
+//!
+//! let mut locale = locale!("zh-Hant-TW");
+//! assert_eq!(lc.maximize(&mut locale), TransformResult::Unmodified);
+//! assert_eq!(locale, locale!("zh-Hant-TW"));
+//! ```
+//!
+//! ```
+//! use icu::locid::locale;
+//! use icu::locid_transform::{LocaleExpander, TransformResult};
+//! use writeable::assert_writeable_eq;
+//!
+//! let lc = LocaleExpander::new();
+//!
+//! let mut locale = locale!("zh-Hans-CN");
+//! assert_eq!(lc.minimize(&mut locale), TransformResult::Modified);
+//! assert_eq!(locale, locale!("zh"));
+//!
+//! let mut locale = locale!("zh");
+//! assert_eq!(lc.minimize(&mut locale), TransformResult::Unmodified);
+//! assert_eq!(locale, locale!("zh"));
+//! ```
+//!
+//! [`ICU4X`]: ../icu/index.html
+//! [`CLDR`]: http://cldr.unicode.org/
+//! [`UTS #35: Unicode LDML 3. Likely Subtags`]: https://www.unicode.org/reports/tr35/#Likely_Subtags.
+//! [`UTS #35: Unicode LDML 3. LocaleId Canonicalization`]: http://unicode.org/reports/tr35/#LocaleId_Canonicalization,
+
+// https://github.com/unicode-org/icu4x/blob/main/docs/process/boilerplate.md#library-annotations
+#![cfg_attr(not(any(test, feature = "std")), no_std)]
+#![cfg_attr(
+ not(test),
+ deny(
+ clippy::indexing_slicing,
+ clippy::unwrap_used,
+ clippy::expect_used,
+ clippy::panic,
+ clippy::exhaustive_structs,
+ clippy::exhaustive_enums,
+ missing_debug_implementations,
+ )
+)]
+#![warn(missing_docs)]
+
+extern crate alloc;
+
+mod canonicalizer;
+mod directionality;
+mod error;
+mod expander;
+pub mod fallback;
+pub mod provider;
+
+pub use canonicalizer::LocaleCanonicalizer;
+pub use directionality::{Direction, LocaleDirectionality};
+pub use error::LocaleTransformError;
+pub use expander::LocaleExpander;
+#[doc(inline)]
+pub use fallback::LocaleFallbacker;
+
+/// Used to track the result of a transformation operation that potentially modifies its argument in place.
+#[derive(Debug, PartialEq)]
+#[allow(clippy::exhaustive_enums)] // this enum is stable
+pub enum TransformResult {
+ /// The canonicalization operation modified the locale.
+ Modified,
+ /// The canonicalization operation did not modify the locale.
+ Unmodified,
+}
+
+#[doc(no_inline)]
+pub use LocaleTransformError as Error;
diff --git a/vendor/icu_locid_transform/src/provider/canonicalizer.rs b/vendor/icu_locid_transform/src/provider/canonicalizer.rs
new file mode 100644
index 000000000..7638bba1f
--- /dev/null
+++ b/vendor/icu_locid_transform/src/provider/canonicalizer.rs
@@ -0,0 +1,81 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::*;
+use icu_locid::subtags::{Language, Region, Script, Variant};
+use icu_provider::prelude::*;
+use tinystr::UnvalidatedTinyAsciiStr;
+use zerovec::{VarZeroVec, ZeroMap, ZeroSlice};
+
+#[icu_provider::data_struct(marker(AliasesV1Marker, "locid_transform/aliases@1", singleton))]
+#[derive(PartialEq, Clone, Default)]
+#[cfg_attr(
+ feature = "datagen",
+ derive(serde::Serialize, databake::Bake),
+ databake(path = icu_locid_transform::provider),
+)]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
+#[yoke(prove_covariance_manually)]
+/// This alias data is used for locale canonicalization. Each field defines a
+/// mapping from an old identifier to a new identifier, based upon the rules in
+/// from <http://unicode.org/reports/tr35/#LocaleId_Canonicalization>. The data
+/// is stored in sorted order, allowing for binary search to identify rules to
+/// apply. It is broken down into smaller vectors based upon some characteristic
+/// of the data, to help avoid unnecessary searches. For example, the `sgn_region`
+/// field contains aliases for sign language and region, so that it is not
+/// necessary to search the data unless the input is a sign language.
+///
+/// The algorithm in tr35 is not guaranteed to terminate on data other than what
+/// is currently in CLDR. For this reason, it is not a good idea to attempt to add
+/// or modify aliases for use in this structure.
+///
+/// <div class="stab unstable">
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. While the serde representation of data structs is guaranteed
+/// to be stable, their Rust representation might not be. Use with caution.
+/// </div>
+// TODO: Use validated types as value types
+#[derive(Debug)]
+pub struct AliasesV1<'data> {
+ /// `[language(-variant)+\] -> [langid]`
+ /// This is not a map as it's searched linearly according to the canonicalization rules.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub language_variants: VarZeroVec<'data, UnvalidatedLanguageIdentifierPair>,
+ /// `sgn-[region] -> [language]`
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub sgn_region: ZeroMap<'data, UnvalidatedRegion, Language>,
+ /// `[language{2}] -> [langid]`
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub language_len2: ZeroMap<'data, UnvalidatedTinyAsciiStr<2>, UnvalidatedLanguageIdentifier>,
+ /// `[language{3}] -> [langid]`
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub language_len3: ZeroMap<'data, UnvalidatedLanguage, UnvalidatedLanguageIdentifier>,
+ /// `[langid] -> [langid]`
+ /// This is not a map as it's searched linearly according to the canonicalization rules.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub language: VarZeroVec<'data, UnvalidatedLanguageIdentifierPair>,
+
+ /// `[script] -> [script]`
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub script: ZeroMap<'data, UnvalidatedScript, Script>,
+
+ /// `[region{2}] -> [region]`
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub region_alpha: ZeroMap<'data, UnvalidatedTinyAsciiStr<2>, Region>,
+ /// `[region{3}] -> [region]`
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub region_num: ZeroMap<'data, UnvalidatedRegion, Region>,
+
+ /// `[region] -> [region]+`
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub complex_region: ZeroMap<'data, UnvalidatedRegion, ZeroSlice<Region>>,
+
+ /// `[variant] -> [variant]`
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub variant: ZeroMap<'data, UnvalidatedVariant, Variant>,
+
+ /// `[value{7}] -> [value{7}]`
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub subdivision: ZeroMap<'data, UnvalidatedSubdivision, SemivalidatedSubdivision>,
+}
diff --git a/vendor/icu_locid_transform/src/provider/directionality.rs b/vendor/icu_locid_transform/src/provider/directionality.rs
new file mode 100644
index 000000000..568248180
--- /dev/null
+++ b/vendor/icu_locid_transform/src/provider/directionality.rs
@@ -0,0 +1,36 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::*;
+use icu_provider::prelude::*;
+use zerovec::ZeroVec;
+
+#[icu_provider::data_struct(marker(
+ ScriptDirectionV1Marker,
+ "locid_transform/script_dir@1",
+ singleton
+))]
+#[derive(Debug, PartialEq, Clone)]
+#[cfg_attr(
+ feature = "datagen",
+ derive(serde::Serialize, databake::Bake),
+ databake(path = icu_locid_transform::provider),
+)]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
+/// This directionality data is used to determine the script directionality of a locale.
+///
+/// <div class="stab unstable">
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. While the serde representation of data structs is guaranteed
+/// to be stable, their Rust representation might not be. Use with caution.
+/// </div>
+#[yoke(prove_covariance_manually)]
+pub struct ScriptDirectionV1<'data> {
+ /// Scripts in right-to-left direction.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub rtl: ZeroVec<'data, UnvalidatedScript>,
+ /// Scripts in left-to-right direction.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub ltr: ZeroVec<'data, UnvalidatedScript>,
+}
diff --git a/vendor/icu_locid_transform/src/provider/expander.rs b/vendor/icu_locid_transform/src/provider/expander.rs
new file mode 100644
index 000000000..2f624b40a
--- /dev/null
+++ b/vendor/icu_locid_transform/src/provider/expander.rs
@@ -0,0 +1,243 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use super::*;
+use icu_locid::subtags::{Language, Region, Script};
+use icu_provider::prelude::*;
+use zerovec::ZeroMap;
+
+#[icu_provider::data_struct(marker(
+ LikelySubtagsV1Marker,
+ "locid_transform/likelysubtags@1",
+ singleton
+))]
+#[derive(Debug, PartialEq, Clone)]
+#[cfg_attr(
+ feature = "datagen",
+ derive(serde::Serialize, databake::Bake),
+ databake(path = icu_locid_transform::provider),
+)]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
+/// This likely subtags data is used for the minimize and maximize operations.
+/// Each field defines a mapping from an old identifier to a new identifier,
+/// based upon the rules in
+/// <https://www.unicode.org/reports/tr35/#Likely_Subtags>.
+///
+/// The data is stored is broken down into smaller vectors based upon the rules
+/// defined for the likely subtags maximize algorithm.
+///
+/// For efficiency, only the relevant part of the LanguageIdentifier is stored
+/// for searching and replacing. E.g., the `language_script` field is used to store
+/// rules for `LanguageIdentifier`s that contain a language and a script, but not a
+/// region.
+///
+/// <div class="stab unstable">
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. While the serde representation of data structs is guaranteed
+/// to be stable, their Rust representation might not be. Use with caution.
+/// </div>
+#[yoke(prove_covariance_manually)]
+pub struct LikelySubtagsV1<'data> {
+ /// Language and script.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub language_script: ZeroMap<'data, (UnvalidatedLanguage, UnvalidatedScript), Region>,
+ /// Language and region.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub language_region: ZeroMap<'data, (UnvalidatedLanguage, UnvalidatedRegion), Script>,
+ /// Just language.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub language: ZeroMap<'data, UnvalidatedLanguage, (Script, Region)>,
+ /// Script and region.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub script_region: ZeroMap<'data, (UnvalidatedScript, UnvalidatedRegion), Language>,
+ /// Just script.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub script: ZeroMap<'data, UnvalidatedScript, (Language, Region)>,
+ /// Just region.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub region: ZeroMap<'data, UnvalidatedRegion, (Language, Script)>,
+ /// Undefined.
+ pub und: (Language, Script, Region),
+}
+
+#[icu_provider::data_struct(marker(
+ LikelySubtagsForLanguageV1Marker,
+ "locid_transform/likelysubtags_l@1",
+ singleton
+))]
+#[derive(Debug, PartialEq, Clone)]
+#[cfg_attr(
+ feature = "datagen",
+ derive(serde::Serialize, databake::Bake),
+ databake(path = icu_locid_transform::provider),
+)]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
+/// This likely subtags data is used for the minimize and maximize operations.
+/// Each field defines a mapping from an old identifier to a new identifier,
+/// based upon the rules in
+/// <https://www.unicode.org/reports/tr35/#Likely_Subtags>.
+///
+/// The data is stored is broken down into smaller vectors based upon the rules
+/// defined for the likely subtags maximize algorithm.
+///
+/// For efficiency, only the relevant part of the LanguageIdentifier is stored
+/// for searching and replacing. E.g., the `language_script` field is used to store
+/// rules for `LanguageIdentifier`s that contain a language and a script, but not a
+/// region.
+///
+/// This struct contains mappings when the input contains a language subtag.
+/// Also see [`LikelySubtagsForScriptRegionV1`].
+///
+/// <div class="stab unstable">
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. While the serde representation of data structs is guaranteed
+/// to be stable, their Rust representation might not be. Use with caution.
+/// </div>
+#[yoke(prove_covariance_manually)]
+pub struct LikelySubtagsForLanguageV1<'data> {
+ /// Language and script.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub language_script: ZeroMap<'data, (UnvalidatedLanguage, UnvalidatedScript), Region>,
+ /// Language and region.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub language_region: ZeroMap<'data, (UnvalidatedLanguage, UnvalidatedRegion), Script>,
+ /// Just language.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub language: ZeroMap<'data, UnvalidatedLanguage, (Script, Region)>,
+ /// Undefined.
+ pub und: (Language, Script, Region),
+}
+
+impl<'data> From<LikelySubtagsV1<'data>> for LikelySubtagsForLanguageV1<'data> {
+ fn from(other: LikelySubtagsV1<'data>) -> Self {
+ Self {
+ language_script: other.language_script,
+ language_region: other.language_region,
+ language: other.language,
+ und: other.und,
+ }
+ }
+}
+
+impl<'data> LikelySubtagsForLanguageV1<'data> {
+ pub(crate) fn clone_from_borrowed(other: &LikelySubtagsV1<'data>) -> Self {
+ Self {
+ language_script: other.language_script.clone(),
+ language_region: other.language_region.clone(),
+ language: other.language.clone(),
+ und: other.und,
+ }
+ }
+}
+
+#[icu_provider::data_struct(marker(
+ LikelySubtagsForScriptRegionV1Marker,
+ "locid_transform/likelysubtags_sr@1",
+ singleton
+))]
+#[derive(Debug, PartialEq, Clone)]
+#[cfg_attr(
+ feature = "datagen",
+ derive(serde::Serialize, databake::Bake),
+ databake(path = icu_locid_transform::provider),
+)]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
+/// This likely subtags data is used for the minimize and maximize operations.
+/// Each field defines a mapping from an old identifier to a new identifier,
+/// based upon the rules in
+/// <https://www.unicode.org/reports/tr35/#Likely_Subtags>.
+///
+/// The data is stored is broken down into smaller vectors based upon the rules
+/// defined for the likely subtags maximize algorithm.
+///
+/// For efficiency, only the relevant part of the LanguageIdentifier is stored
+/// for searching and replacing. E.g., the `script_region` field is used to store
+/// rules for `LanguageIdentifier`s that contain a script and a region, but not a
+/// language.
+///
+/// This struct contains mappings when the input does not contain a language subtag.
+/// Also see [`LikelySubtagsForLanguageV1`].
+///
+/// <div class="stab unstable">
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. While the serde representation of data structs is guaranteed
+/// to be stable, their Rust representation might not be. Use with caution.
+/// </div>
+#[yoke(prove_covariance_manually)]
+pub struct LikelySubtagsForScriptRegionV1<'data> {
+ /// Script and region.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub script_region: ZeroMap<'data, (UnvalidatedScript, UnvalidatedRegion), Language>,
+ /// Just script.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub script: ZeroMap<'data, UnvalidatedScript, (Language, Region)>,
+ /// Just region.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub region: ZeroMap<'data, UnvalidatedRegion, (Language, Script)>,
+}
+
+impl<'data> From<LikelySubtagsV1<'data>> for LikelySubtagsForScriptRegionV1<'data> {
+ fn from(other: LikelySubtagsV1<'data>) -> Self {
+ Self {
+ script_region: other.script_region,
+ script: other.script,
+ region: other.region,
+ }
+ }
+}
+
+#[icu_provider::data_struct(marker(
+ LikelySubtagsExtendedV1Marker,
+ "locid_transform/likelysubtags_ext@1",
+ singleton
+))]
+#[derive(Debug, PartialEq, Clone)]
+#[cfg_attr(
+ feature = "datagen",
+ derive(serde::Serialize, databake::Bake),
+ databake(path = icu_locid_transform::provider),
+)]
+#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
+/// This likely subtags data is used for full coverage of locales, including ones that
+/// don't otherwise have data in the Common Locale Data Repository (CLDR).
+///
+/// <div class="stab unstable">
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. While the serde representation of data structs is guaranteed
+/// to be stable, their Rust representation might not be. Use with caution.
+/// </div>
+#[yoke(prove_covariance_manually)]
+pub struct LikelySubtagsExtendedV1<'data> {
+ /// Language and script.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub language_script: ZeroMap<'data, (UnvalidatedLanguage, UnvalidatedScript), Region>,
+ /// Language and region.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub language_region: ZeroMap<'data, (UnvalidatedLanguage, UnvalidatedRegion), Script>,
+ /// Just language.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub language: ZeroMap<'data, UnvalidatedLanguage, (Script, Region)>,
+ /// Script and region.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub script_region: ZeroMap<'data, (UnvalidatedScript, UnvalidatedRegion), Language>,
+ /// Just script.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub script: ZeroMap<'data, UnvalidatedScript, (Language, Region)>,
+ /// Just region.
+ #[cfg_attr(feature = "serde", serde(borrow))]
+ pub region: ZeroMap<'data, UnvalidatedRegion, (Language, Script)>,
+}
+
+impl<'data> From<LikelySubtagsV1<'data>> for LikelySubtagsExtendedV1<'data> {
+ fn from(other: LikelySubtagsV1<'data>) -> Self {
+ Self {
+ language_script: other.language_script,
+ language_region: other.language_region,
+ language: other.language,
+ script_region: other.script_region,
+ script: other.script,
+ region: other.region,
+ }
+ }
+}
diff --git a/vendor/icu_provider_adapters/src/fallback/provider.rs b/vendor/icu_locid_transform/src/provider/fallback.rs
index edfa01f58..c0635afe7 100644
--- a/vendor/icu_provider_adapters/src/fallback/provider.rs
+++ b/vendor/icu_locid_transform/src/provider/fallback.rs
@@ -2,39 +2,25 @@
// called LICENSE at the top level of the ICU4X source tree
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
-//! Data provider struct definitions for vertical fallback.
-//!
-//! Read more about data providers: [`icu_provider`]
-
-// Provider structs must be stable
-#![allow(clippy::exhaustive_structs)]
-
+use super::*;
use icu_locid::extensions::unicode::Key;
-use icu_locid::subtags::{Language, Region, Script};
-use icu_locid::{subtags_region as region, subtags_script as script};
-use tinystr::TinyAsciiStr;
-
+use icu_locid::subtags::{region, script, Language, Region, Script};
use icu_provider::prelude::*;
-
use zerovec::ule::UnvalidatedStr;
use zerovec::ZeroMap;
use zerovec::ZeroMap2d;
-// We use raw TinyAsciiStrs for map keys, as we then don't have to
-// validate them as subtags on deserialization. Map lookup can be
-// done even if they are not valid tags (an invalid key will just
-// become inaccessible).
-type UnvalidatedLanguage = TinyAsciiStr<3>;
-type UnvalidatedScript = TinyAsciiStr<4>;
-type UnvalidatedRegion = TinyAsciiStr<3>;
-
/// Locale fallback rules derived from likely subtags data.
-#[icu_provider::data_struct(LocaleFallbackLikelySubtagsV1Marker = "fallback/likelysubtags@1")]
+#[icu_provider::data_struct(marker(
+ LocaleFallbackLikelySubtagsV1Marker,
+ "fallback/likelysubtags@1",
+ singleton
+))]
#[derive(Default, Clone, PartialEq, Debug)]
#[cfg_attr(
feature = "datagen",
derive(serde::Serialize, databake::Bake),
- databake(path = icu_provider_adapters::fallback::provider),
+ databake(path = icu_locid_transform::provider),
)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
#[yoke(prove_covariance_manually)]
@@ -72,12 +58,16 @@ pub const DEFAULT_SCRIPT: Script = script!("Latn");
pub const DEFAULT_REGION: Region = region!("ZZ");
/// Locale fallback rules derived from CLDR parent locales data.
-#[icu_provider::data_struct(LocaleFallbackParentsV1Marker = "fallback/parents@1")]
+#[icu_provider::data_struct(marker(
+ LocaleFallbackParentsV1Marker,
+ "fallback/parents@1",
+ singleton
+))]
#[derive(Default, Clone, PartialEq, Debug)]
#[cfg_attr(
feature = "datagen",
derive(serde::Serialize, databake::Bake),
- databake(path = icu_provider_adapters::fallback::provider),
+ databake(path = icu_locid_transform::provider),
)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
#[yoke(prove_covariance_manually)]
@@ -91,13 +81,14 @@ pub struct LocaleFallbackParentsV1<'data> {
/// Key-specific supplemental fallback data.
#[icu_provider::data_struct(marker(
CollationFallbackSupplementV1Marker,
- "fallback/supplement/co@1"
+ "fallback/supplement/co@1",
+ singleton,
))]
#[derive(Default, Clone, PartialEq, Debug)]
#[cfg_attr(
feature = "datagen",
derive(serde::Serialize, databake::Bake),
- databake(path = icu_provider_adapters::fallback::provider),
+ databake(path = icu_locid_transform::provider),
)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
#[yoke(prove_covariance_manually)]
diff --git a/vendor/icu_locid_transform/src/provider/mod.rs b/vendor/icu_locid_transform/src/provider/mod.rs
new file mode 100644
index 000000000..337bd3f0c
--- /dev/null
+++ b/vendor/icu_locid_transform/src/provider/mod.rs
@@ -0,0 +1,98 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// Provider structs must be stable
+#![allow(clippy::exhaustive_structs, clippy::exhaustive_enums)]
+
+//! 🚧 \[Unstable\] Data provider struct definitions for this ICU4X component.
+//!
+//! <div class="stab unstable">
+//! 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+//! including in SemVer minor releases. While the serde representation of data structs is guaranteed
+//! to be stable, their Rust representation might not be. Use with caution.
+//! </div>
+//!
+//! Read more about data providers: [`icu_provider`]
+
+mod canonicalizer;
+pub use canonicalizer::*;
+mod directionality;
+pub use directionality::*;
+mod expander;
+pub use expander::*;
+mod fallback;
+pub use fallback::*;
+
+#[cfg(feature = "compiled_data")]
+#[derive(Debug)]
+/// Baked data
+///
+/// <div class="stab unstable">
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. In particular, the `DataProvider` implementations are only
+/// guaranteed to match with this version's `*_unstable` providers. Use with caution.
+/// </div>
+pub struct Baked;
+
+#[cfg(feature = "compiled_data")]
+const _: () = {
+ pub mod icu {
+ pub use crate as locid_transform;
+ pub use icu_locid as locid;
+ }
+ icu_locid_transform_data::make_provider!(Baked);
+ icu_locid_transform_data::impl_fallback_likelysubtags_v1!(Baked);
+ icu_locid_transform_data::impl_fallback_parents_v1!(Baked);
+ icu_locid_transform_data::impl_fallback_supplement_co_v1!(Baked);
+ icu_locid_transform_data::impl_locid_transform_aliases_v1!(Baked);
+ icu_locid_transform_data::impl_locid_transform_likelysubtags_ext_v1!(Baked);
+ icu_locid_transform_data::impl_locid_transform_likelysubtags_l_v1!(Baked);
+ icu_locid_transform_data::impl_locid_transform_likelysubtags_sr_v1!(Baked);
+ icu_locid_transform_data::impl_locid_transform_script_dir_v1!(Baked);
+};
+
+use alloc::borrow::Cow;
+use tinystr::{TinyAsciiStr, UnvalidatedTinyAsciiStr};
+
+// We use raw TinyAsciiStrs for map keys, as we then don't have to
+// validate them as subtags on deserialization. Map lookup can be
+// done even if they are not valid tags (an invalid key will just
+// become inaccessible).
+type UnvalidatedLanguage = UnvalidatedTinyAsciiStr<3>;
+type UnvalidatedScript = UnvalidatedTinyAsciiStr<4>;
+type UnvalidatedRegion = UnvalidatedTinyAsciiStr<3>;
+type UnvalidatedVariant = UnvalidatedTinyAsciiStr<8>;
+type UnvalidatedSubdivision = UnvalidatedTinyAsciiStr<7>;
+type SemivalidatedSubdivision = TinyAsciiStr<7>;
+
+// LanguageIdentifier doesn't have an AsULE implementation, so we have
+// to store strs and parse when needed.
+type UnvalidatedLanguageIdentifier = str;
+type UnvalidatedLanguageIdentifierPair = StrStrPairVarULE;
+
+#[zerovec::make_varule(StrStrPairVarULE)]
+#[zerovec::derive(Debug)]
+#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug)]
+#[cfg_attr(
+ feature = "serde",
+ derive(serde::Deserialize),
+ zerovec::derive(Deserialize)
+)]
+#[cfg_attr(
+ feature = "datagen",
+ derive(serde::Serialize, databake::Bake),
+ zerovec::derive(Serialize),
+ databake(path = icu_locid_transform::provider),
+)]
+/// A pair of strings with a EncodeAsVarULE implementation.
+///
+/// <div class="stab unstable">
+/// 🚧 This code is considered unstable; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. While the serde representation of data structs is guaranteed
+/// to be stable, their Rust representation might not be. Use with caution.
+/// </div>
+pub struct StrStrPair<'a>(
+ #[cfg_attr(feature = "serde", serde(borrow))] pub Cow<'a, str>,
+ #[cfg_attr(feature = "serde", serde(borrow))] pub Cow<'a, str>,
+);
diff --git a/vendor/icu_locid_transform/tests/fixtures/canonicalize.json b/vendor/icu_locid_transform/tests/fixtures/canonicalize.json
new file mode 100644
index 000000000..89e6cec05
--- /dev/null
+++ b/vendor/icu_locid_transform/tests/fixtures/canonicalize.json
@@ -0,0 +1,444 @@
+[
+ {
+ "input": "es",
+ "output": "es"
+ },
+ {
+ "input": "en-CA",
+ "output": "en-CA"
+ },
+ {
+ "input": "cka",
+ "output": "cmr"
+ },
+ {
+ "input": "cze",
+ "output": "cs"
+ },
+ {
+ "input": "gfx",
+ "output": "vaj"
+ },
+ {
+ "input": "sgn-BR",
+ "output": "bzs"
+ },
+ {
+ "input": "sgn-DD",
+ "output": "gsg"
+ },
+ {
+ "input": "tam",
+ "output": "ta"
+ },
+ {
+ "input": "und-aaland",
+ "output": "und-AX"
+ },
+ {
+ "input": "nob-bokmal",
+ "output": "nb"
+ },
+ {
+ "input": "no-nynorsk",
+ "output": "nn"
+ },
+ {
+ "input": "und-Qaai",
+ "output": "und-Zinh"
+ },
+ {
+ "input": "en-554",
+ "output": "en-NZ"
+ },
+ {
+ "input": "en-084",
+ "output": "en-BZ"
+ },
+ {
+ "input": "art-lojban",
+ "output": "jbo"
+ },
+ {
+ "input": "zh-guoyu",
+ "output": "zh"
+ },
+ {
+ "input": "zh-hakka",
+ "output": "hak"
+ },
+ {
+ "input": "zh-xiang",
+ "output": "hsn"
+ },
+ {
+ "input": "aar-x-private",
+ "output": "aa-x-private"
+ },
+ {
+ "input": "heb-x-private",
+ "output": "he-x-private"
+ },
+ {
+ "input": "ces",
+ "output": "cs"
+ },
+ {
+ "input": "hy-arevela",
+ "output": "hy"
+ },
+ {
+ "input": "hy-arevmda",
+ "output": "hyw"
+ },
+ {
+ "input": "cel-gaulish",
+ "output": "xtg"
+ },
+ {
+ "input": "ja-latn-hepburn-heploc",
+ "output": "ja-Latn-alalc97"
+ },
+ {
+ "input": "ja-Latn-fonipa-hepburn-heploc",
+ "output": "ja-Latn-alalc97-fonipa"
+ },
+ {
+ "input": "und-Armn-SU",
+ "output": "und-Armn-AM"
+ },
+ {
+ "input": "sh",
+ "output": "sr-Latn"
+ },
+ {
+ "input": "sh-Cyrl",
+ "output": "sr-Cyrl"
+ },
+ {
+ "input": "cnr",
+ "output": "sr-ME"
+ },
+ {
+ "input": "cnr-BA",
+ "output": "sr-BA"
+ },
+ {
+ "input": "ru-SU",
+ "output": "ru-RU"
+ },
+ {
+ "input": "ru-810",
+ "output": "ru-RU"
+ },
+ {
+ "input": "en-SU",
+ "output": "en-RU"
+ },
+ {
+ "input": "en-810",
+ "output": "en-RU"
+ },
+ {
+ "input": "und-SU",
+ "output": "und-RU"
+ },
+ {
+ "input": "und-810",
+ "output": "und-RU"
+ },
+ {
+ "input": "und-Latn-SU",
+ "output": "und-Latn-RU"
+ },
+ {
+ "input": "und-Latn-810",
+ "output": "und-Latn-RU"
+ },
+ {
+ "input": "hy-SU",
+ "output": "hy-AM"
+ },
+ {
+ "input": "hy-810",
+ "output": "hy-AM"
+ },
+ {
+ "input": "und-Armn-SU",
+ "output": "und-Armn-AM"
+ },
+ {
+ "input": "und-Armn-810",
+ "output": "und-Armn-AM"
+ },
+ {
+ "input": "sr-CS",
+ "output": "sr-RS"
+ },
+ {
+ "input": "sr-Latn-CS",
+ "output": "sr-Latn-RS"
+ },
+ {
+ "input": "sr-Cyrl-CS",
+ "output": "sr-Cyrl-RS"
+ },
+ {
+ "input": "az-NT",
+ "output": "az-SA"
+ },
+ {
+ "input": "sl-t-sl-rozaj-biske-1994",
+ "output": "sl-t-sl-1994-biske-rozaj"
+ },
+ {
+ "input": "DE-T-M0-DIN-K0-QWERTZ",
+ "output": "de-t-k0-qwertz-m0-din"
+ },
+ {
+ "input": "en-t-m0-true",
+ "output": "en-t-m0-true"
+ },
+ {
+ "input": "en-t-iw",
+ "output": "en-t-he"
+ },
+ {
+ "input": "und-u-rg-no23",
+ "output": "und-u-rg-no50"
+ },
+ {
+ "input": "und-u-rg-cn11",
+ "output": "und-u-rg-cnbj"
+ },
+ {
+ "input": "und-u-rg-cz10a",
+ "output": "und-u-rg-cz110"
+ },
+ {
+ "input": "und-u-rg-fra",
+ "output": "und-u-rg-frges"
+ },
+ {
+ "input": "und-u-rg-frg",
+ "output": "und-u-rg-frges"
+ },
+ {
+ "input": "und-u-rg-lud",
+ "output": "und-u-rg-lucl"
+ },
+ {
+ "input": "und-NO-u-rg-no23",
+ "output": "und-NO-u-rg-no50"
+ },
+ {
+ "input": "und-CN-u-rg-cn11",
+ "output": "und-CN-u-rg-cnbj"
+ },
+ {
+ "input": "und-CZ-u-rg-cz10a",
+ "output": "und-CZ-u-rg-cz110"
+ },
+ {
+ "input": "und-FR-u-rg-fra",
+ "output": "und-FR-u-rg-frges"
+ },
+ {
+ "input": "und-FR-u-rg-frg",
+ "output": "und-FR-u-rg-frges"
+ },
+ {
+ "input": "und-u-rg-lud",
+ "output": "und-u-rg-lucl"
+ },
+ {
+ "input": "und-u-sd-no23",
+ "output": "und-u-sd-no50"
+ },
+ {
+ "input": "und-u-sd-cn11",
+ "output": "und-u-sd-cnbj"
+ },
+ {
+ "input": "und-u-sd-cz10a",
+ "output": "und-u-sd-cz110"
+ },
+ {
+ "input": "und-u-sd-fra",
+ "output": "und-u-sd-frges"
+ },
+ {
+ "input": "hy-arevela",
+ "output": "hy"
+ },
+ {
+ "input": "hy-Armn-arevela",
+ "output": "hy-Armn"
+ },
+ {
+ "input": "hy-AM-arevela",
+ "output": "hy-AM"
+ },
+ {
+ "input": "hy-arevela-fonipa",
+ "output": "hy-fonipa"
+ },
+ {
+ "input": "hy-fonipa-arevela",
+ "output": "hy-fonipa"
+ },
+ {
+ "input": "hy-arevmda",
+ "output": "hyw"
+ },
+ {
+ "input": "hy-Armn-arevmda",
+ "output": "hyw-Armn"
+ },
+ {
+ "input": "hy-AM-arevmda",
+ "output": "hyw-AM"
+ },
+ {
+ "input": "hy-arevmda-fonipa",
+ "output": "hyw-fonipa"
+ },
+ {
+ "input": "hy-fonipa-arevmda",
+ "output": "hyw-fonipa"
+ },
+ {
+ "input": "ja-Latn-hepburn-heploc",
+ "output": "ja-Latn-alalc97"
+ },
+ {
+ "input": "ja-Latn-JP-hepburn-heploc",
+ "output": "ja-Latn-JP-alalc97"
+ },
+ {
+ "input": "sv-aaland",
+ "output": "sv-AX"
+ },
+ {
+ "input": "el-polytoni",
+ "output": "el-polyton"
+ },
+ {
+ "input": "ja-Latn-alalc97-hepburn-heploc",
+ "output": "ja-Latn-alalc97"
+ },
+ {
+ "input": "ja-Latn-hepburn-alalc97-heploc",
+ "output": "ja-Latn-alalc97"
+ },
+ {
+ "input": "ja-Latn-hepburn-heploc-alalc97",
+ "output": "ja-Latn-alalc97"
+ },
+ {
+ "input": "ja-Latn-heploc-hepburn",
+ "output": "ja-Latn-alalc97"
+ },
+ {
+ "input": "ja-Latn-heploc",
+ "output": "ja-Latn-alalc97"
+ },
+ {
+ "input": "ja-Latn-aaland-heploc",
+ "output": "ja-Latn-AX-alalc97"
+ },
+ {
+ "input": "ja-Latn-heploc-polytoni",
+ "output": "ja-Latn-alalc97-polyton"
+ },
+ {
+ "input": "und-Latn-t-und-hani-m0-names",
+ "output": "und-Latn-t-und-hani-m0-prprname",
+ "disabled": true
+ },
+ {
+ "input": "und-u-ca-ethiopian-amete-alem",
+ "output": "und-u-ca-ethioaa",
+ "disabled": true
+ },
+ {
+ "input": "und-u-ca-islamicc",
+ "output": "und-u-ca-islamic-civil",
+ "disabled": true
+ },
+ {
+ "input": "und-u-ks-primary",
+ "output": "und-u-ks-level1",
+ "disabled": true
+ },
+ {
+ "input": "und-u-ks-tertiary",
+ "output": "und-u-ks-level3",
+ "disabled": true
+ },
+ {
+ "input": "und-u-ms-imperial",
+ "output": "und-u-ms-uksystem",
+ "disabled": true
+ },
+ {
+ "input": "und-u-kb-yes",
+ "output": "und-u-kb",
+ "disabled": true
+ },
+ {
+ "input": "und-u-kc-yes",
+ "output": "und-u-k",
+ "disabled": true
+ },
+ {
+ "input": "und-u-kh-yes",
+ "output": "und-u-kh",
+ "disabled": true
+ },
+ {
+ "input": "und-u-kk-yes",
+ "output": "und-u-kk",
+ "disabled": true
+ },
+ {
+ "input": "und-u-kn-yes",
+ "output": "und-u-kn",
+ "disabled": true
+ },
+ {
+ "input": "und-u-ka-yes",
+ "output": "und-u-ka-yes",
+ "disabled": true
+ },
+ {
+ "input": "und-u-tz-cnckg",
+ "output": "und-u-tz-cnsha",
+ "disabled": true
+ },
+ {
+ "input": "und-u-tz-eire",
+ "output": "und-u-tz-iedub",
+ "disabled": true
+ },
+ {
+ "input": "und-u-tz-est",
+ "output": "und-u-tz-utcw05",
+ "disabled": true
+ },
+ {
+ "input": "und-u-tz-gmt0",
+ "output": "und-u-tz-gmt",
+ "disabled": true
+ },
+ {
+ "input": "und-u-tz-uct",
+ "output": "und-u-tz-utc",
+ "disabled": true
+ },
+ {
+ "input": "und-u-tz-zulu",
+ "output": "und-u-tz-utc",
+ "disabled": true
+ }
+] \ No newline at end of file
diff --git a/vendor/icu_locid_transform/tests/fixtures/maximize.json b/vendor/icu_locid_transform/tests/fixtures/maximize.json
new file mode 100644
index 000000000..86b9b2fe8
--- /dev/null
+++ b/vendor/icu_locid_transform/tests/fixtures/maximize.json
@@ -0,0 +1,182 @@
+[
+ {
+ "input": "en-US",
+ "output": "en-Latn-US"
+ },
+ {
+ "input": "en-GB",
+ "output": "en-Latn-GB"
+ },
+ {
+ "input": "es-AR",
+ "output": "es-Latn-AR"
+ },
+ {
+ "input": "it",
+ "output": "it-Latn-IT"
+ },
+ {
+ "input": "zh-Hans-CN",
+ "output": "zh-Hans-CN"
+ },
+ {
+ "input": "de-AT",
+ "output": "de-Latn-AT"
+ },
+ {
+ "input": "pl",
+ "output": "pl-Latn-PL"
+ },
+ {
+ "input": "fr-FR",
+ "output": "fr-Latn-FR"
+ },
+ {
+ "input": "de-AT",
+ "output": "de-Latn-AT"
+ },
+ {
+ "input": "sr-Cyrl-SR",
+ "output": "sr-Cyrl-SR"
+ },
+ {
+ "input": "nb-NO",
+ "output": "nb-Latn-NO"
+ },
+ {
+ "input": "fr-FR",
+ "output": "fr-Latn-FR"
+ },
+ {
+ "input": "mk",
+ "output": "mk-Cyrl-MK"
+ },
+ {
+ "input": "uk",
+ "output": "uk-Cyrl-UA"
+ },
+ {
+ "input": "und-PL",
+ "output": "pl-Latn-PL"
+ },
+ {
+ "input": "und-Latn-AM",
+ "output": "ku-Latn-AM"
+ },
+ {
+ "input": "ug-Cyrl",
+ "output": "ug-Cyrl-KZ"
+ },
+ {
+ "input": "sr-ME",
+ "output": "sr-Latn-ME"
+ },
+ {
+ "input": "mn-Mong",
+ "output": "mn-Mong-CN"
+ },
+ {
+ "input": "lif-Limb",
+ "output": "lif-Limb-IN"
+ },
+ {
+ "input": "gan",
+ "output": "gan-Hans-CN"
+ },
+ {
+ "input": "zh-Hant",
+ "output": "zh-Hant-TW"
+ },
+ {
+ "input": "yue-Hans",
+ "output": "yue-Hans-CN"
+ },
+ {
+ "input": "unr",
+ "output": "unr-Beng-IN"
+ },
+ {
+ "input": "unr-Deva",
+ "output": "unr-Deva-NP"
+ },
+ {
+ "input": "und-Thai-CN",
+ "output": "lcp-Thai-CN"
+ },
+ {
+ "input": "ug-Cyrl",
+ "output": "ug-Cyrl-KZ"
+ },
+ {
+ "input": "en-Latn-DE",
+ "output": "en-Latn-DE"
+ },
+ {
+ "input": "pl-FR",
+ "output": "pl-Latn-FR"
+ },
+ {
+ "input": "de-CH",
+ "output": "de-Latn-CH"
+ },
+ {
+ "input": "tuq",
+ "output": "tuq-Latn-ZZ"
+ },
+ {
+ "input": "sr-ME",
+ "output": "sr-Latn-ME"
+ },
+ {
+ "input": "ng",
+ "output": "ng-Latn-NA"
+ },
+ {
+ "input": "klx",
+ "output": "klx-Latn-ZZ"
+ },
+ {
+ "input": "kk-Arab",
+ "output": "kk-Arab-CN"
+ },
+ {
+ "input": "en-Cyrl",
+ "output": "en-Cyrl-US"
+ },
+ {
+ "input": "und-Cyrl-UK",
+ "output": "ru-Cyrl-UK"
+ },
+ {
+ "input": "und-Arab",
+ "output": "ar-Arab-EG"
+ },
+ {
+ "input": "und-Arab-FO",
+ "output": "ar-Arab-FO"
+ },
+ {
+ "input": "zh-TW",
+ "output": "zh-Hant-TW"
+ },
+ {
+ "input": "und",
+ "output": "en-Latn-US"
+ },
+ {
+ "input": "zh-SG",
+ "output": "zh-Hans-SG"
+ },
+ {
+ "input": "und-TW",
+ "output": "zh-Hant-TW"
+ },
+ {
+ "input": "zh-hant-u-nu-Chinese-hc-h24",
+ "output": "zh-Hant-TW-u-hc-h24-nu-chinese"
+ },
+ {
+ "input": "und-latn-AQ",
+ "output": "und-Latn-AQ"
+ }
+]
diff --git a/vendor/icu_locid_transform/tests/fixtures/minimize.json b/vendor/icu_locid_transform/tests/fixtures/minimize.json
new file mode 100644
index 000000000..6c225e230
--- /dev/null
+++ b/vendor/icu_locid_transform/tests/fixtures/minimize.json
@@ -0,0 +1,26 @@
+[
+ {
+ "input": "zh-Hant",
+ "output": "zh-TW"
+ },
+ {
+ "input": "en-Latn-US",
+ "output": "en"
+ },
+ {
+ "input": "en",
+ "output": "en"
+ },
+ {
+ "input": "und",
+ "output": "en"
+ },
+ {
+ "input": "es-ES-preeuro",
+ "output": "es-preeuro"
+ },
+ {
+ "input": "zh-Hant-TW-u-hc-h24-nu-chinese",
+ "output": "zh-TW-u-hc-h24-nu-chinese"
+ }
+]
diff --git a/vendor/icu_locid_transform/tests/fixtures/mod.rs b/vendor/icu_locid_transform/tests/fixtures/mod.rs
new file mode 100644
index 000000000..70dfb0381
--- /dev/null
+++ b/vendor/icu_locid_transform/tests/fixtures/mod.rs
@@ -0,0 +1,12 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use serde::Deserialize;
+
+#[derive(Deserialize)]
+pub struct CanonicalizationTest {
+ pub input: String,
+ pub output: String,
+ pub disabled: Option<bool>,
+}
diff --git a/vendor/icu_locid_transform/tests/helpers/mod.rs b/vendor/icu_locid_transform/tests/helpers/mod.rs
new file mode 100644
index 000000000..d250c510c
--- /dev/null
+++ b/vendor/icu_locid_transform/tests/helpers/mod.rs
@@ -0,0 +1,15 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use std::fs::File;
+use std::io::{BufReader, Error};
+
+pub fn read_fixture<T>(path: &str) -> Result<T, Error>
+where
+ T: serde::de::DeserializeOwned,
+{
+ let file = File::open(path)?;
+ let reader = BufReader::new(file);
+ Ok(serde_json::from_reader(reader)?)
+}
diff --git a/vendor/icu_locid_transform/tests/locale_canonicalizer.rs b/vendor/icu_locid_transform/tests/locale_canonicalizer.rs
new file mode 100644
index 000000000..06e360f53
--- /dev/null
+++ b/vendor/icu_locid_transform/tests/locale_canonicalizer.rs
@@ -0,0 +1,82 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+mod fixtures;
+mod helpers;
+
+use icu_locid::Locale;
+use icu_locid_transform::{LocaleCanonicalizer, LocaleExpander, TransformResult};
+use writeable::assert_writeable_eq;
+
+#[test]
+fn test_maximize() {
+ let lc = LocaleExpander::new_extended();
+
+ let path = "./tests/fixtures/maximize.json";
+ let testcases: Vec<fixtures::CanonicalizationTest> =
+ helpers::read_fixture(path).expect("Failed to read a fixture");
+
+ for case in testcases {
+ if let Some(true) = case.disabled {
+ continue;
+ }
+ let mut locale: Locale = case.input.parse().unwrap();
+ let unmodified = locale.clone();
+ let result = lc.maximize(&mut locale);
+ assert_writeable_eq!(locale, case.output);
+ if result == TransformResult::Modified {
+ assert_ne!(locale, unmodified);
+ } else {
+ assert_eq!(locale, unmodified);
+ }
+ }
+}
+
+#[test]
+fn test_minimize() {
+ let lc = LocaleExpander::new_extended();
+
+ let path = "./tests/fixtures/minimize.json";
+ let testcases: Vec<fixtures::CanonicalizationTest> =
+ helpers::read_fixture(path).expect("Failed to read a fixture");
+
+ for case in testcases {
+ if let Some(true) = case.disabled {
+ continue;
+ }
+ let mut locale: Locale = case.input.parse().unwrap();
+ let unmodified = locale.clone();
+ let result = lc.minimize(&mut locale);
+ assert_writeable_eq!(locale, case.output);
+ if result == TransformResult::Modified {
+ assert_ne!(locale, unmodified);
+ } else {
+ assert_eq!(locale, unmodified);
+ }
+ }
+}
+
+#[test]
+fn test_canonicalize() {
+ let lc = LocaleCanonicalizer::new();
+
+ let path = "./tests/fixtures/canonicalize.json";
+ let testcases: Vec<fixtures::CanonicalizationTest> =
+ helpers::read_fixture(path).expect("Failed to read a fixture");
+
+ for case in testcases {
+ if let Some(true) = case.disabled {
+ continue;
+ }
+ let mut locale: Locale = case.input.parse().expect("Unable to parse input");
+ let unmodified = locale.clone();
+ let result = lc.canonicalize(&mut locale);
+ assert_writeable_eq!(locale, case.output);
+ if result == TransformResult::Modified {
+ assert_ne!(locale, unmodified);
+ } else {
+ assert_eq!(locale, unmodified);
+ }
+ }
+}
diff --git a/vendor/icu_locid_transform_data/.cargo-checksum.json b/vendor/icu_locid_transform_data/.cargo-checksum.json
new file mode 100644
index 000000000..183c7954f
--- /dev/null
+++ b/vendor/icu_locid_transform_data/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"6d6fdbc4de56b325dcd1314bb017d47dca7b01f1b3902de60f178b03df860450","LICENSE":"853f87c96f3d249f200fec6db1114427bc8bdf4afddc93c576956d78152ce978","README.md":"eba7efca11d982b63e9606354a0c3bc81c272989683d8cc7a6d98a7325a1c9b6","data/any.rs":"20e2615f32f50679782f5a6168dbf770cb3105b625016b2240c0520ffe3bd6e7","data/macros.rs":"c38c4128de89c858b53a57c93519c3e4eb60f14d257da79c6496609059a2b618","data/macros/fallback_likelysubtags_v1.data.rs":"73bf69e6970900cc39f8dc0f72014586002b6b61e1c11a9ac6d3d27ca8e2fc0b","data/macros/fallback_parents_v1.data.rs":"a2fcc9153befd9a014dd65027637704f1a3736385b8524274731d9e6eea9519c","data/macros/fallback_supplement_co_v1.data.rs":"aa203ae6f0c0193b865f90ca7940c20b341f3bba8aa8143cc50b3db2f992965a","data/macros/locid_transform_aliases_v1.data.rs":"cf8361e8795c993203346fa3fae62ed9ef38630ca011b962b18665ff5876011b","data/macros/locid_transform_likelysubtags_ext_v1.data.rs":"46e76d10d0d7984b68365ef8b07ca9bfe10ff325cf701f811f87c01ba9c5c45b","data/macros/locid_transform_likelysubtags_l_v1.data.rs":"d3326c99e60e1759201e70bec3fb767432e7c399eb4461314b9f9a927d969ca5","data/macros/locid_transform_likelysubtags_sr_v1.data.rs":"4bf26c718418d88f34327b0a16d92d1a3eabd525282c83986332533aac2c79d8","data/macros/locid_transform_script_dir_v1.data.rs":"6d7a5047ea2115a2030f16fb78ca5da3d1df7f55fe46fe5c815c50dde0c410ab","data/mod.rs":"6503fdfc6fe94434eaa4f941fe8abc44951ec725b30fd9b93c9c643edfc6fefa","src/lib.rs":"31e6e96c2396927f350dfcaef280bef1e51b9bf27fe648cead9dc94e7f7fdfb4"},"package":"2a741eba5431f75eb2f1f9022d3cffabcadda6771e54fb4e77c8ba8653e4da44"} \ No newline at end of file
diff --git a/vendor/icu_locid_transform_data/Cargo.toml b/vendor/icu_locid_transform_data/Cargo.toml
new file mode 100644
index 000000000..755eb3b9c
--- /dev/null
+++ b/vendor/icu_locid_transform_data/Cargo.toml
@@ -0,0 +1,33 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.66"
+name = "icu_locid_transform_data"
+version = "1.3.2"
+authors = ["The ICU4X Project Developers"]
+include = [
+ "data/**/*",
+ "src/**/*",
+ "examples/**/*",
+ "benches/**/*",
+ "tests/**/*",
+ "Cargo.toml",
+ "LICENSE",
+ "README.md",
+]
+description = "Data for the icu_locid_transform crate"
+homepage = "https://icu4x.unicode.org"
+readme = "README.md"
+categories = ["internationalization"]
+license-file = "LICENSE"
+repository = "https://github.com/unicode-org/icu4x"
diff --git a/vendor/icu_locid_transform_data/LICENSE b/vendor/icu_locid_transform_data/LICENSE
new file mode 100644
index 000000000..9845aa5f4
--- /dev/null
+++ b/vendor/icu_locid_transform_data/LICENSE
@@ -0,0 +1,44 @@
+UNICODE LICENSE V3
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 2020-2023 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
+
+—
+
+Portions of ICU4X may have been adapted from ICU4C and/or ICU4J.
+ICU 1.8.1 to ICU 57.1 © 1995-2016 International Business Machines Corporation and others.
diff --git a/vendor/icu_locid_transform_data/README.md b/vendor/icu_locid_transform_data/README.md
new file mode 100644
index 000000000..67792b266
--- /dev/null
+++ b/vendor/icu_locid_transform_data/README.md
@@ -0,0 +1,11 @@
+# icu_locid_transform_data [![crates.io](https://img.shields.io/crates/v/icu_locid_transform_data)](https://crates.io/crates/icu_locid_transform_data)
+
+<!-- cargo-rdme start -->
+
+Data for the icu_locid_transform crate
+
+<!-- cargo-rdme end -->
+
+## More Information
+
+For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/icu_locid_transform_data/data/any.rs b/vendor/icu_locid_transform_data/data/any.rs
new file mode 100644
index 000000000..230288766
--- /dev/null
+++ b/vendor/icu_locid_transform_data/data/any.rs
@@ -0,0 +1,2 @@
+// @generated
+impl_any_provider!(BakedDataProvider);
diff --git a/vendor/icu_locid_transform_data/data/macros.rs b/vendor/icu_locid_transform_data/data/macros.rs
new file mode 100644
index 000000000..b14e3a705
--- /dev/null
+++ b/vendor/icu_locid_transform_data/data/macros.rs
@@ -0,0 +1,66 @@
+// @generated
+/// Marks a type as a data provider. You can then use macros like
+/// `impl_core_helloworld_v1` to add implementations.
+///
+/// ```ignore
+/// struct MyProvider;
+/// const _: () = {
+/// include!("path/to/generated/macros.rs");
+/// make_provider!(MyProvider);
+/// impl_core_helloworld_v1!(MyProvider);
+/// }
+/// ```
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __make_provider {
+ ($ name : ty) => {
+ #[clippy::msrv = "1.66"]
+ impl $name {
+ #[doc(hidden)]
+ #[allow(dead_code)]
+ pub const MUST_USE_MAKE_PROVIDER_MACRO: () = ();
+ }
+ };
+}
+#[doc(inline)]
+pub use __make_provider as make_provider;
+#[macro_use]
+#[path = "macros/fallback_likelysubtags_v1.data.rs"]
+mod fallback_likelysubtags_v1;
+#[doc(inline)]
+pub use __impl_fallback_likelysubtags_v1 as impl_fallback_likelysubtags_v1;
+#[macro_use]
+#[path = "macros/fallback_parents_v1.data.rs"]
+mod fallback_parents_v1;
+#[doc(inline)]
+pub use __impl_fallback_parents_v1 as impl_fallback_parents_v1;
+#[macro_use]
+#[path = "macros/fallback_supplement_co_v1.data.rs"]
+mod fallback_supplement_co_v1;
+#[doc(inline)]
+pub use __impl_fallback_supplement_co_v1 as impl_fallback_supplement_co_v1;
+#[macro_use]
+#[path = "macros/locid_transform_aliases_v1.data.rs"]
+mod locid_transform_aliases_v1;
+#[doc(inline)]
+pub use __impl_locid_transform_aliases_v1 as impl_locid_transform_aliases_v1;
+#[macro_use]
+#[path = "macros/locid_transform_likelysubtags_ext_v1.data.rs"]
+mod locid_transform_likelysubtags_ext_v1;
+#[doc(inline)]
+pub use __impl_locid_transform_likelysubtags_ext_v1 as impl_locid_transform_likelysubtags_ext_v1;
+#[macro_use]
+#[path = "macros/locid_transform_likelysubtags_l_v1.data.rs"]
+mod locid_transform_likelysubtags_l_v1;
+#[doc(inline)]
+pub use __impl_locid_transform_likelysubtags_l_v1 as impl_locid_transform_likelysubtags_l_v1;
+#[macro_use]
+#[path = "macros/locid_transform_likelysubtags_sr_v1.data.rs"]
+mod locid_transform_likelysubtags_sr_v1;
+#[doc(inline)]
+pub use __impl_locid_transform_likelysubtags_sr_v1 as impl_locid_transform_likelysubtags_sr_v1;
+#[macro_use]
+#[path = "macros/locid_transform_script_dir_v1.data.rs"]
+mod locid_transform_script_dir_v1;
+#[doc(inline)]
+pub use __impl_locid_transform_script_dir_v1 as impl_locid_transform_script_dir_v1;
diff --git a/vendor/icu_locid_transform_data/data/macros/fallback_likelysubtags_v1.data.rs b/vendor/icu_locid_transform_data/data/macros/fallback_likelysubtags_v1.data.rs
new file mode 100644
index 000000000..d897fd5de
--- /dev/null
+++ b/vendor/icu_locid_transform_data/data/macros/fallback_likelysubtags_v1.data.rs
@@ -0,0 +1,44 @@
+// @generated
+/// Implement `DataProvider<LocaleFallbackLikelySubtagsV1Marker>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_fallback_likelysubtags_v1 {
+ ($ provider : ty) => {
+ #[clippy::msrv = "1.66"]
+ const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+ #[clippy::msrv = "1.66"]
+ impl $provider {
+ #[doc(hidden)]
+ pub const SINGLETON_FALLBACK_LIKELYSUBTAGS_V1: &'static <icu::locid_transform::provider::LocaleFallbackLikelySubtagsV1Marker as icu_provider::DataMarker>::Yokeable = &icu::locid_transform::provider::LocaleFallbackLikelySubtagsV1 {
+ l2s: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"am\0ar\0as\0be\0bg\0bgcbhobn\0brxchrcv\0doiel\0fa\0gu\0he\0hi\0hy\0ja\0ka\0kk\0km\0kn\0ko\0kokks\0ky\0lo\0maimk\0ml\0mn\0mnimr\0my\0ne\0or\0pa\0ps\0rajru\0sa\0satsd\0si\0sr\0ta\0te\0tg\0th\0ti\0tt\0uk\0ur\0yuezh\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"EthiArabBengCyrlCyrlDevaDevaBengDevaCherCyrlDevaGrekArabGujrHebrDevaArmnJpanGeorCyrlKhmrKndaKoreDevaArabCyrlLaooDevaCyrlMlymCyrlBengDevaMymrDevaOryaGuruArabDevaCyrlDevaOlckArabSinhCyrlTamlTeluCyrlThaiEthiCyrlCyrlArabHantHans") })
+ },
+ lr2s: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap2d::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"az\0ha\0kk\0ky\0mn\0ms\0pa\0sd\0sr\0tg\0uz\0yuezh\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x03\0\0\0\x05\0\0\0\t\0\0\0\x0B\0\0\0\x0C\0\0\0\r\0\0\0\x0E\0\0\0\x0F\0\0\0\x13\0\0\0\x14\0\0\0\x16\0\0\0\x17\0\0\0&\0\0\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"IQ\0IR\0RU\0CM\0SD\0AF\0CN\0IR\0MN\0CN\0TR\0CN\0CC\0PK\0IN\0ME\0RO\0RU\0TR\0PK\0AF\0CN\0CN\0AU\0BN\0GB\0GF\0HK\0ID\0MO\0PA\0PF\0PH\0SR\0TH\0TW\0US\0VN\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"ArabArabCyrlArabArabArabArabArabArabArabLatnMongArabArabDevaLatnLatnLatnLatnArabArabCyrlHansHantHantHantHantHantHantHantHantHantHantHantHantHantHantHant") })
+ },
+ l2r: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"af\0am\0ar\0as\0astaz\0be\0bg\0bgcbhobn\0br\0brxbs\0ca\0cebchrcs\0cv\0cy\0da\0de\0doidsbel\0en\0es\0et\0eu\0fa\0ff\0fi\0filfo\0fr\0ga\0gd\0gl\0gu\0ha\0he\0hi\0hr\0hsbhu\0hy\0ia\0id\0ig\0is\0it\0ja\0jv\0ka\0keakgpkk\0km\0kn\0ko\0kokks\0ky\0lo\0lt\0lv\0maimi\0mk\0ml\0mn\0mnimr\0ms\0my\0ne\0nl\0nn\0no\0or\0pa\0pcmpl\0ps\0pt\0qu\0rajrm\0ro\0ru\0sa\0satsc\0sd\0si\0sk\0sl\0so\0sq\0sr\0su\0sv\0sw\0ta\0te\0tg\0th\0ti\0tk\0to\0tr\0tt\0uk\0ur\0uz\0vi\0wo\0xh\0yo\0yrlyuezh\0zu\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"ZA\0ET\0EG\0IN\0ES\0AZ\0BY\0BG\0IN\0IN\0BD\0FR\0IN\0BA\0ES\0PH\0US\0CZ\0RU\0GB\0DK\0DE\0IN\0DE\0GR\0US\0ES\0EE\0ES\0IR\0SN\0FI\0PH\0FO\0FR\0IE\0GB\0ES\0IN\0NG\0IL\0IN\0HR\0DE\0HU\0AM\x00001ID\0NG\0IS\0IT\0JP\0ID\0GE\0CV\0BR\0KZ\0KH\0IN\0KR\0IN\0IN\0KG\0LA\0LT\0LV\0IN\0NZ\0MK\0IN\0MN\0IN\0IN\0MY\0MM\0NP\0NL\0NO\0NO\0IN\0IN\0NG\0PL\0AF\0BR\0PE\0IN\0CH\0RO\0RU\0IN\0IN\0IT\0PK\0LK\0SK\0SI\0SO\0AL\0RS\0ID\0SE\0TZ\0IN\0IN\0TJ\0TH\0ET\0TM\0TO\0TR\0RU\0UA\0PK\0UZ\0VN\0SN\0ZA\0NG\0BR\0HK\0CN\0ZA\0") })
+ },
+ ls2r: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap2d::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"az\0en\0ff\0kk\0ky\0mn\0pa\0sd\0tg\0uz\0yuezh\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x01\0\0\0\x02\0\0\0\x03\0\0\0\x04\0\0\0\x06\0\0\0\x07\0\0\0\x08\0\0\0\x0B\0\0\0\x0C\0\0\0\r\0\0\0\x0E\0\0\0\x11\0\0\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"ArabShawAdlmArabArabLatnMongArabDevaKhojSindArabArabHansBopoHanbHant") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"IR\0GB\0GN\0CN\0CN\0TR\0CN\0PK\0IN\0IN\0IN\0PK\0AF\0CN\0TW\0TW\0TW\0") })
+ },
+ };
+ }
+ #[clippy::msrv = "1.66"]
+ impl icu_provider::DataProvider<icu::locid_transform::provider::LocaleFallbackLikelySubtagsV1Marker> for $provider {
+ fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::locid_transform::provider::LocaleFallbackLikelySubtagsV1Marker>, icu_provider::DataError> {
+ if req.locale.is_empty() {
+ Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_FALLBACK_LIKELYSUBTAGS_V1)), metadata: Default::default() })
+ } else {
+ Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::locid_transform::provider::LocaleFallbackLikelySubtagsV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
+ }
+ }
+ }
+ };
+}
diff --git a/vendor/icu_locid_transform_data/data/macros/fallback_parents_v1.data.rs b/vendor/icu_locid_transform_data/data/macros/fallback_parents_v1.data.rs
new file mode 100644
index 000000000..e6a62aac2
--- /dev/null
+++ b/vendor/icu_locid_transform_data/data/macros/fallback_parents_v1.data.rs
@@ -0,0 +1,32 @@
+// @generated
+/// Implement `DataProvider<LocaleFallbackParentsV1Marker>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_fallback_parents_v1 {
+ ($ provider : ty) => {
+ #[clippy::msrv = "1.66"]
+ const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+ #[clippy::msrv = "1.66"]
+ impl $provider {
+ #[doc(hidden)]
+ pub const SINGLETON_FALLBACK_PARENTS_V1: &'static <icu::locid_transform::provider::LocaleFallbackParentsV1Marker as icu_provider::DataMarker>::Yokeable = &icu::locid_transform::provider::LocaleFallbackParentsV1 {
+ parents: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x84\0\0\0\0\0\x06\0\x0B\0\x10\0\x15\0\x1A\0\x1F\0$\0)\0.\x003\08\0=\0B\0G\0L\0Q\0V\0[\0`\0e\0j\0o\0t\0y\0~\0\x83\0\x88\0\x8D\0\x92\0\x97\0\x9C\0\xA1\0\xA6\0\xAB\0\xB0\0\xB5\0\xBA\0\xBF\0\xC4\0\xC9\0\xCE\0\xD3\0\xD8\0\xDD\0\xE2\0\xE7\0\xEC\0\xF1\0\xF6\0\xFB\0\0\x01\x05\x01\n\x01\x0F\x01\x14\x01\x19\x01\x1E\x01#\x01(\x01-\x012\x017\x01<\x01A\x01F\x01K\x01P\x01U\x01Z\x01_\x01d\x01i\x01n\x01s\x01x\x01}\x01\x82\x01\x87\x01\x8C\x01\x91\x01\x96\x01\x9B\x01\xA0\x01\xA5\x01\xAA\x01\xAF\x01\xB4\x01\xB9\x01\xBE\x01\xC3\x01\xC8\x01\xCD\x01\xD2\x01\xD7\x01\xDC\x01\xE1\x01\xE6\x01\xEB\x01\xF0\x01\xF5\x01\xFA\x01\xFF\x01\x04\x02\t\x02\x0E\x02\x13\x02\x18\x02\x1D\x02\"\x02'\x02,\x021\x026\x02;\x02@\x02G\x02I\x02K\x02M\x02R\x02W\x02\\\x02a\x02f\x02k\x02p\x02u\x02z\x02\x7F\x02\x84\x02\x89\x02en-150en-AGen-AIen-ATen-AUen-BBen-BEen-BMen-BSen-BWen-BZen-CCen-CHen-CKen-CMen-CXen-CYen-DEen-DGen-DKen-DMen-ERen-FIen-FJen-FKen-FMen-GBen-GDen-GGen-GHen-GIen-GMen-GYen-HKen-IEen-ILen-IMen-INen-IOen-JEen-JMen-KEen-KIen-KNen-KYen-LCen-LRen-LSen-MGen-MOen-MSen-MTen-MUen-MVen-MWen-MYen-NAen-NFen-NGen-NLen-NRen-NUen-NZen-PGen-PKen-PNen-PWen-RWen-SBen-SCen-SDen-SEen-SGen-SHen-SIen-SLen-SSen-SXen-SZen-TCen-TKen-TOen-TTen-TVen-TZen-UGen-VCen-VGen-VUen-WSen-ZAen-ZMen-ZWes-ARes-BOes-BRes-BZes-CLes-COes-CRes-CUes-DOes-ECes-GTes-HNes-MXes-NIes-PAes-PEes-PRes-PYes-SVes-USes-UYes-VEhi-Latnhtnbnnno-NOpt-AOpt-CHpt-CVpt-FRpt-GQpt-GWpt-LUpt-MOpt-MZpt-STpt-TLzh-Hant-MO") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01150en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001en\0\0\0\0\0\0\x01001es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419es\0\0\0\0\0\0\x01419en\0\0\0\0\0\0\x01IN\0fr\0\0\0\0\0\0\x01HT\0no\0\0\0\0\0\0\0\0\0\0no\0\0\0\0\0\0\0\0\0\0no\0\0\0\0\0\0\0\0\0\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0pt\0\0\0\0\0\0\x01PT\0zh\0\x01Hant\x01HK\0") })
+ },
+ };
+ }
+ #[clippy::msrv = "1.66"]
+ impl icu_provider::DataProvider<icu::locid_transform::provider::LocaleFallbackParentsV1Marker> for $provider {
+ fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::locid_transform::provider::LocaleFallbackParentsV1Marker>, icu_provider::DataError> {
+ if req.locale.is_empty() {
+ Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_FALLBACK_PARENTS_V1)), metadata: Default::default() })
+ } else {
+ Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::locid_transform::provider::LocaleFallbackParentsV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
+ }
+ }
+ }
+ };
+}
diff --git a/vendor/icu_locid_transform_data/data/macros/fallback_supplement_co_v1.data.rs b/vendor/icu_locid_transform_data/data/macros/fallback_supplement_co_v1.data.rs
new file mode 100644
index 000000000..89b4b5882
--- /dev/null
+++ b/vendor/icu_locid_transform_data/data/macros/fallback_supplement_co_v1.data.rs
@@ -0,0 +1,36 @@
+// @generated
+/// Implement `DataProvider<CollationFallbackSupplementV1Marker>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_fallback_supplement_co_v1 {
+ ($ provider : ty) => {
+ #[clippy::msrv = "1.66"]
+ const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+ #[clippy::msrv = "1.66"]
+ impl $provider {
+ #[doc(hidden)]
+ pub const SINGLETON_FALLBACK_SUPPLEMENT_CO_V1: &'static <icu::locid_transform::provider::CollationFallbackSupplementV1Marker as icu_provider::DataMarker>::Yokeable = &icu::locid_transform::provider::LocaleFallbackSupplementV1 {
+ parents: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x01\0\0\0\0\0yue") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"zh\0\x01Hant\0\0\0\0") })
+ },
+ unicode_extension_defaults: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap2d::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"co") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"\x02\0\0\0") }, unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x02\0\0\0\0\0\x02\0zhzh-Hant") }, unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x02\0\0\0\0\0\x06\0pinyinstroke") })
+ },
+ };
+ }
+ #[clippy::msrv = "1.66"]
+ impl icu_provider::DataProvider<icu::locid_transform::provider::CollationFallbackSupplementV1Marker> for $provider {
+ fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::locid_transform::provider::CollationFallbackSupplementV1Marker>, icu_provider::DataError> {
+ if req.locale.is_empty() {
+ Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_FALLBACK_SUPPLEMENT_CO_V1)), metadata: Default::default() })
+ } else {
+ Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::locid_transform::provider::CollationFallbackSupplementV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
+ }
+ }
+ }
+ };
+}
diff --git a/vendor/icu_locid_transform_data/data/macros/locid_transform_aliases_v1.data.rs b/vendor/icu_locid_transform_data/data/macros/locid_transform_aliases_v1.data.rs
new file mode 100644
index 000000000..9b5538d99
--- /dev/null
+++ b/vendor/icu_locid_transform_data/data/macros/locid_transform_aliases_v1.data.rs
@@ -0,0 +1,66 @@
+// @generated
+/// Implement `DataProvider<AliasesV1Marker>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_locid_transform_aliases_v1 {
+ ($ provider : ty) => {
+ #[clippy::msrv = "1.66"]
+ const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+ #[clippy::msrv = "1.66"]
+ impl $provider {
+ #[doc(hidden)]
+ pub const SINGLETON_LOCID_TRANSFORM_ALIASES_V1: &'static <icu::locid_transform::provider::AliasesV1Marker as icu_provider::DataMarker>::Yokeable = &icu::locid_transform::provider::AliasesV1 {
+ language_variants: unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x13\0\0\0\0\0\x17\x000\0J\0c\0z\0\x92\0\xBB\0\xD1\0\xE8\0\xFF\0\x1B\x015\x01O\x01h\x01\x80\x01\x99\x01\xB3\x01\xCB\x01\x02\0\0\0\0\0\0\0\x08\0\0\0aa-saahossy\x02\0\0\0\0\0\0\0\n\0\0\0art-lojbanjbo\x02\0\0\0\0\0\0\0\x0B\0\0\0cel-gaulishxtg\x02\0\0\0\0\0\0\0\n\0\0\0hy-arevmdahyw\x02\0\0\0\0\0\0\0\t\0\0\0no-bokmalnb\x02\0\0\0\0\0\0\0\n\0\0\0no-nynorsknn\x02\0\0\0\0\0\0\0\x12\0\0\0und-hepburn-heplocund-alalc97\x02\0\0\0\0\0\0\0\x08\0\0\0zh-guoyuzh\x02\0\0\0\0\0\0\0\x08\0\0\0zh-hakkahak\x02\0\0\0\0\0\0\0\x08\0\0\0zh-xianghsn\x02\0\0\0\0\0\0\0\n\0\0\0und-aalandund-AX\x02\0\0\0\0\0\0\0\x0B\0\0\0und-arevelaund\x02\0\0\0\0\0\0\0\x0B\0\0\0und-arevmdaund\x02\0\0\0\0\0\0\0\n\0\0\0und-bokmalund\x02\0\0\0\0\0\0\0\t\0\0\0und-hakkaund\x02\0\0\0\0\0\0\0\n\0\0\0und-lojbanund\x02\0\0\0\0\0\0\0\x0B\0\0\0und-nynorskund\x02\0\0\0\0\0\0\0\t\0\0\0und-saahound\x02\0\0\0\0\0\0\0\t\0\0\0und-xiangund") },
+ sgn_region: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"BR\0CO\0DE\0DK\0ES\0FR\0GB\0GR\0IE\0IT\0JP\0MX\0NI\0NL\0NO\0PT\0SE\0US\0ZA\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"bzscsngsgdslsspfslbfigssisgisejslmfsncsdsensipsrswlasesfs") })
+ },
+ language_len2: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"bhiniwjijwmoshtltw") }, unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\t\0\0\0\0\0\x03\0\x05\0\x07\0\t\0\x0B\0\r\0\x14\0\x17\0bhoidheyijvrosr-Latnfilak") })
+ },
+ language_len3: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"aamaarabkadpafragpaisajtajuakaalbalsamharaarbargarmasdasmaueavaaveaymayrayxazeazjbakbambaqbazbccbclbelbenbgmbhkbicbihbisbjdbjqbkbblgbodbosbrebtbbulburbxkbxrcatccqceschachechichuchvcjrckacldcmkcmncnrcorcoscoycqucrecwdcymczedafdandapdeudgodhddikdiqditdivdjldkldrhdrrdrwduddujdutdwldzoekkellelpemkengepoeskesteusewefaofasfatfijfinfrafrefryfucfulgavgazgbcgbogeogergfxggnggoggrgioglagleglggliglvgnogregrngtiguggujguvgyahathauhbshdnheahebherhimhinhmohrrhrvhunhyeibiiboiceidoiiiikeikuileillilwinaindipkislitaizijarjavjegjpnkalkankaskatkaukazkdvkgckgdkghkhkkhmkikkinkirkmrknckngknnkojkomkonkorkppkpvkrmktrkuakurkvskwqkxekxlkzhkzjkztlaklaolatlavlbklegliilimlinlitllolmmltzlubluglvsmacmahmalmaomarmaymegmgxmhrmkdmlgmltmnkmntmofmolmonmrimsamstmupmwdmwjmyamydmytnadnaunavnbfnblnbxncpndendonepnldnlnnlrnnonnsnnxnobnoonornpintsnxunyaociojgojioriormoryossounpanpatpbupcrperpesplipltpmcpmupnbpolporppapprprsprypuspuzquequzrmrrmyrohronrumrunrussagsansapscasccscrsglsinskkslksloslvsmdsmesmosnasnbsndsomsotspaspysqisrcsrdsrpsswsulsumsunswaswcsweswhtahtamtattduteltggtgktglthathcthwthxtibtidtietirtkktlwtmptnetnftontsftsntsottqtukturtwiuigukrumuunpuokurduzbuznvenvievolwelwgwwitwiwwlnwolxbaxhoxiaxkhxpexrqxsjxslybdyddyenyidyiyymaymtyoryosyuuzaizhazhozirzsmzulzyb") }, unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x9E\x01\0\0\0\0\x03\0\x05\0\x07\0\t\0\x0B\0\x0E\0\x11\0\x14\0\x17\0\x19\0\x1B\0\x1D\0\x1F\0!\0#\0%\0'\0*\0,\0/\x001\x003\x005\x007\0:\0<\0>\0@\0B\0D\0G\0J\0M\0O\0Q\0T\0W\0Z\0]\0_\0b\0e\0h\0k\0m\0o\0q\0t\0v\0x\0{\0~\0\x80\0\x83\0\x85\0\x87\0\x89\0\x8B\0\x8D\0\x8F\0\x92\0\x95\0\x98\0\x9B\0\x9D\0\xA2\0\xA4\0\xA6\0\xA9\0\xAC\0\xAE\0\xB0\0\xB2\0\xB4\0\xB7\0\xB9\0\xBC\0\xBE\0\xC1\0\xC4\0\xC7\0\xCA\0\xCD\0\xCF\0\xD2\0\xD5\0\xD7\0\xDA\0\xDF\0\xE2\0\xE5\0\xE7\0\xEA\0\xEC\0\xEE\0\xF0\0\xF3\0\xF6\0\xF8\0\xFA\0\xFC\0\xFE\0\0\x01\x02\x01\x04\x01\x06\x01\x08\x01\n\x01\x0C\x01\x0E\x01\x10\x01\x12\x01\x14\x01\x16\x01\x19\x01\x1B\x01\x1E\x01!\x01#\x01%\x01(\x01+\x01.\x011\x014\x016\x018\x01:\x01=\x01?\x01B\x01D\x01F\x01I\x01K\x01M\x01P\x01S\x01U\x01W\x01^\x01a\x01d\x01f\x01h\x01k\x01m\x01o\x01r\x01t\x01v\x01x\x01{\x01}\x01\x7F\x01\x81\x01\x83\x01\x85\x01\x87\x01\x89\x01\x8C\x01\x8F\x01\x91\x01\x93\x01\x95\x01\x97\x01\x99\x01\x9C\x01\x9F\x01\xA1\x01\xA4\x01\xA6\x01\xA8\x01\xAA\x01\xAC\x01\xAE\x01\xB0\x01\xB2\x01\xB5\x01\xB8\x01\xBB\x01\xBE\x01\xC0\x01\xC2\x01\xC4\x01\xC6\x01\xC8\x01\xCA\x01\xCC\x01\xCE\x01\xD1\x01\xD4\x01\xD6\x01\xD8\x01\xDA\x01\xDD\x01\xDF\x01\xE2\x01\xE5\x01\xE7\x01\xE9\x01\xEC\x01\xEF\x01\xF2\x01\xF5\x01\xF8\x01\xFB\x01\xFE\x01\x01\x02\x03\x02\x05\x02\x07\x02\n\x02\r\x02\x10\x02\x12\x02\x14\x02\x16\x02\x19\x02\x1C\x02\x1E\x02 \x02\"\x02$\x02&\x02(\x02*\x02,\x02.\x020\x023\x026\x029\x02;\x02=\x02?\x02B\x02E\x02H\x02J\x02L\x02N\x02P\x02S\x02V\x02Y\x02\\\x02^\x02a\x02d\x02g\x02i\x02k\x02n\x02p\x02s\x02v\x02x\x02z\x02|\x02~\x02\x81\x02\x84\x02\x86\x02\x89\x02\x8C\x02\x8E\x02\x91\x02\x93\x02\x95\x02\x98\x02\x9B\x02\x9D\x02\x9F\x02\xA1\x02\xA3\x02\xA5\x02\xA7\x02\xA9\x02\xAB\x02\xAE\x02\xB0\x02\xB3\x02\xB5\x02\xB8\x02\xBA\x02\xBC\x02\xBE\x02\xC0\x02\xC3\x02\xC6\x02\xC9\x02\xCB\x02\xCD\x02\xD0\x02\xD3\x02\xD8\x02\xDB\x02\xDD\x02\xE0\x02\xE2\x02\xE4\x02\xE7\x02\xEA\x02\xEC\x02\xEE\x02\xF0\x02\xF2\x02\xF4\x02\xF6\x02\xF8\x02\xFB\x02\xFE\x02\0\x03\x02\x03\x05\x03\x07\x03\n\x03\x0C\x03\x0E\x03\x10\x03\x13\x03\x15\x03\x17\x03\x19\x03\x1C\x03\x1E\x03 \x03\"\x03$\x03'\x03)\x03+\x03-\x03/\x031\x034\x037\x039\x03;\x03@\x03B\x03D\x03F\x03H\x03J\x03M\x03O\x03R\x03T\x03W\x03Y\x03\\\x03_\x03b\x03d\x03g\x03j\x03l\x03o\x03r\x03u\x03x\x03}\x03\x7F\x03\x82\x03\x84\x03\x86\x03\x89\x03\x8B\x03\x8D\x03\x8F\x03\x91\x03\x93\x03\x96\x03\x99\x03\x9C\x03\x9E\x03\xA0\x03\xA2\x03\xA4\x03\xA6\x03\xA8\x03\xAA\x03\xAD\x03\xB0\x03\xB3\x03\xB5\x03\xB7\x03\xBA\x03\xBC\x03\xBF\x03\xC2\x03\xC5\x03\xC8\x03\xCB\x03\xCE\x03\xD1\x03\xD3\x03\xD6\x03\xD8\x03\xDB\x03\xDE\x03\xE1\x03\xE3\x03\xE6\x03\xE9\x03\xEC\x03\xEE\x03\xF0\x03\xF3\x03\xF5\x03\xF7\x03aasaaabdzafapfamiaebjrbaksqsqamararanhysnzasktzavaeayaynunazazbabmeunvobalbikbebnbcgfblbirbhobidrlbzcebkibabobsbrbebbgmyluybuacarkicschcezhcucvmomcmrsyrxchzhsr-MEkwcopijquhcrcrcycsdnjdanjzdedoimwrdinzzadifdvdzeaqdmnkzkfa-AFuthdwunldbtdzetelamqmaneneoiketeueefofaakfjfifrfrfyffffdevomwnygrbkadevajgvresggtuaougdgaglkzkgvgonelgnnycgnguduzgbahthasr-Latnhaihmnhehzsrxhihojalhrhuhyopaigisioiiiuiuieilmgaliaidikisitezajgkjvoybjaklknkskakrkkzkdtdfncqkmlmnkmkirwkykukrkgkokkwvkvkgkojkmkvbmfdtpkjkugdjyamtvdkrudgldtpdtpksplolalvbncenlraqlilnltngtrmxlblulglvmkmhmlmimrmscirjbkchmmkmgmtmanwnnxntromnmimsmryrajdmwvajmyaogmryxnynanvnrunrekckdzndngnenlazdnrknnnbrngvnbdtdnonepijbppnyocojojoromorosvajpakxrpsadxfafapimghuwphrlahplptbfylcqfa-AFprtpspubququemxromrmrorornrusgsaaqthlesrhrisksioybskskslkmbsesmsnibasdsostesklnsqscscsrsssgdulwsuswsw-CDsvswtytattdtptebjptgfilthtpoolaoybboitdrastitwmweotyjkakfa-AFtotajtntstmhtktrakugukdelwroemauruzuzvevivocywgbnolnwowawocaxxhacnwawkpedmwsujdenrkiyiynqyiyrmlrrmtmyozomyugzapzazhscvmszuza") })
+ },
+ language: zerovec::VarZeroVec::new(),
+ script: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"Qaai") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"Zinh") })
+ },
+ region_alpha: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"BUCTDDDYFXHVJTMINHNQPUPZQURHTPUKVDWKYDZR") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"MM\0KI\0DE\0BJ\0FR\0BF\0UM\0UM\0VU\0AQ\0UM\0PA\0EU\0ZW\0TL\0GB\0VN\0UM\0YE\0CD\0") })
+ },
+ region_num: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"004008010012016020024028031032036040044048050051052056060064068070072074076084086090092096100104108112116120124132136140144148152156158162166170174175178180184188191192196203204208212214218222226230231232233234238239242246248249250254258260262266268270275276278280288292296300304308312316320324328332334336340344348352356360364368372376380384388392398400404408410414417418422426428430434438440442446450454458462466470474478480484492496498499500504508512516520524528531533534535540548554558562566570574578580581583584585586591598600604608612616620624626630634638642643646652654659660662663666670674678682686688690694702703704705706710716720724728729732736740744748752756760762764768772776780784788792795796798800804807818826831832833834840850854858860862876882886887894958959960962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"AF\0AL\0AQ\0DZ\0AS\0AD\0AO\0AG\0AZ\0AR\0AU\0AT\0BS\0BH\0BD\0AM\0BB\0BE\0BM\0BT\0BO\0BA\0BW\0BV\0BR\0BZ\0IO\0SB\0VG\0BN\0BG\0MM\0BI\0BY\0KH\0CM\0CA\0CV\0KY\0CF\0LK\0TD\0CL\0CN\0TW\0CX\0CC\0CO\0KM\0YT\0CG\0CD\0CK\0CR\0HR\0CU\0CY\0CZ\0BJ\0DK\0DM\0DO\0EC\0SV\0GQ\0ET\0ET\0ER\0EE\0FO\0FK\0GS\0FJ\0FI\0AX\0FR\0FR\0GF\0PF\0TF\0DJ\0GA\0GE\0GM\0PS\0DE\0DE\0DE\0GH\0GI\0KI\0GR\0GL\0GD\0GP\0GU\0GT\0GN\0GY\0HT\0HM\0VA\0HN\0HK\0HU\0IS\0IN\0ID\0IR\0IQ\0IE\0IL\0IT\0CI\0JM\0JP\0KZ\0JO\0KE\0KP\0KR\0KW\0KG\0LA\0LB\0LS\0LV\0LR\0LY\0LI\0LT\0LU\0MO\0MG\0MW\0MY\0MV\0ML\0MT\0MQ\0MR\0MU\0MX\0MC\0MN\0MD\0ME\0MS\0MA\0MZ\0OM\0NA\0NR\0NP\0NL\0CW\0AW\0SX\0BQ\0NC\0VU\0NZ\0NI\0NE\0NG\0NU\0NF\0NO\0MP\0UM\0FM\0MH\0PW\0PK\0PA\0PG\0PY\0PE\0PH\0PN\0PL\0PT\0GW\0TL\0PR\0QA\0RE\0RO\0RU\0RW\0BL\0SH\0KN\0AI\0LC\0MF\0PM\0VC\0SM\0ST\0SA\0SN\0RS\0SC\0SL\0SG\0SK\0VN\0SI\0SO\0ZA\0ZW\0YE\0ES\0SS\0SD\0EH\0SD\0SR\0SJ\0SZ\0SE\0CH\0SY\0TJ\0TH\0TG\0TK\0TO\0TT\0AE\0TN\0TR\0TM\0TC\0TV\0UG\0UA\0MK\0EG\0GB\0GG\0JE\0IM\0TZ\0US\0VI\0BF\0UY\0UZ\0VE\0WF\0WS\0YE\0YE\0ZM\0AA\0QM\0QN\0QP\0QQ\0QR\0QS\0QT\0EU\0QV\0QW\0QX\0QY\0QZ\0XA\0XB\0XC\0XD\0XE\0XF\0XG\0XH\0XI\0XJ\0XK\0XL\0XM\0XN\0XO\0XP\0XQ\0XR\0XS\0XT\0XU\0XV\0XW\0XX\0XY\0XZ\0ZZ\0") })
+ },
+ complex_region: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"062172200530532536582810830890891AN\0CS\0FQ\0NT\0PC\0SU\0YU\0") }, unsafe { zerovec::VarZeroVec::from_bytes_unchecked(b"\x12\0\0\0\0\0\x06\0*\x000\09\0B\0H\0T\0\x81\0\x87\0\x99\0\x9F\0\xA8\0\xAE\0\xB4\0\xBA\0\xC6\0\xF3\x00034143RU\0AM\0AZ\0BY\0GE\0KG\0KZ\0MD\0TJ\0TM\0UA\0UZ\0CZ\0SK\0CW\0SX\0BQ\0CW\0SX\0BQ\0SA\0IQ\0FM\0MH\0MP\0PW\0RU\0AM\0AZ\0BY\0EE\0GE\0KZ\0KG\0LV\0LT\0MD\0TJ\0TM\0UA\0UZ\0JE\0GG\0RS\0ME\0SI\0HR\0MK\0BA\0RS\0ME\0CW\0SX\0BQ\0RS\0ME\0AQ\0TF\0SA\0IQ\0FM\0MH\0MP\0PW\0RU\0AM\0AZ\0BY\0EE\0GE\0KZ\0KG\0LV\0LT\0MD\0TJ\0TM\0UA\0UZ\0RS\0ME\0") })
+ },
+ variant: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"heploc\0\0polytoni") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"alalc97\0polyton\0") })
+ },
+ subdivision: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"cn11\0\0\0cn12\0\0\0cn13\0\0\0cn14\0\0\0cn15\0\0\0cn21\0\0\0cn22\0\0\0cn23\0\0\0cn31\0\0\0cn32\0\0\0cn33\0\0\0cn34\0\0\0cn35\0\0\0cn36\0\0\0cn37\0\0\0cn41\0\0\0cn42\0\0\0cn43\0\0\0cn44\0\0\0cn45\0\0\0cn46\0\0\0cn50\0\0\0cn51\0\0\0cn52\0\0\0cn53\0\0\0cn54\0\0\0cn61\0\0\0cn62\0\0\0cn63\0\0\0cn64\0\0\0cn65\0\0\0cn71\0\0\0cn91\0\0\0cn92\0\0\0cz10a\0\0cz10b\0\0cz10c\0\0cz10d\0\0cz10e\0\0cz10f\0\0cz611\0\0cz612\0\0cz613\0\0cz614\0\0cz615\0\0cz621\0\0cz622\0\0cz623\0\0cz624\0\0cz626\0\0cz627\0\0czjc\0\0\0czjm\0\0\0czka\0\0\0czkr\0\0\0czli\0\0\0czmo\0\0\0czol\0\0\0czpa\0\0\0czpl\0\0\0czpr\0\0\0czst\0\0\0czus\0\0\0czvy\0\0\0czzl\0\0\0fi01\0\0\0fra\0\0\0\0frb\0\0\0\0frbl\0\0\0frc\0\0\0\0frcp\0\0\0frd\0\0\0\0fre\0\0\0\0frf\0\0\0\0frg\0\0\0\0frgf\0\0\0frgp\0\0\0frh\0\0\0\0fri\0\0\0\0frj\0\0\0\0frk\0\0\0\0frl\0\0\0\0frm\0\0\0\0frmf\0\0\0frmq\0\0\0frn\0\0\0\0frnc\0\0\0fro\0\0\0\0frp\0\0\0\0frpf\0\0\0frpm\0\0\0frq\0\0\0\0frr\0\0\0\0frre\0\0\0frs\0\0\0\0frt\0\0\0\0frtf\0\0\0fru\0\0\0\0frv\0\0\0\0frwf\0\0\0fryt\0\0\0laxn\0\0\0lud\0\0\0\0lug\0\0\0\0lul\0\0\0\0mrnkc\0\0nlaw\0\0\0nlcw\0\0\0nlsx\0\0\0no23\0\0\0nzn\0\0\0\0nzs\0\0\0\0omba\0\0\0omsh\0\0\0plds\0\0\0plkp\0\0\0pllb\0\0\0plld\0\0\0pllu\0\0\0plma\0\0\0plmz\0\0\0plop\0\0\0plpd\0\0\0plpk\0\0\0plpm\0\0\0plsk\0\0\0plsl\0\0\0plwn\0\0\0plwp\0\0\0plzp\0\0\0shta\0\0\0tteto\0\0ttrcm\0\0ttwto\0\0twkhq\0\0twtnq\0\0twtpq\0\0twtxq\0\0usas\0\0\0usgu\0\0\0usmp\0\0\0uspr\0\0\0usum\0\0\0usvi\0\0\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"cnbj\0\0\0cntj\0\0\0cnhe\0\0\0cnsx\0\0\0cnmn\0\0\0cnln\0\0\0cnjl\0\0\0cnhl\0\0\0cnsh\0\0\0cnjs\0\0\0cnzj\0\0\0cnah\0\0\0cnfj\0\0\0cnjx\0\0\0cnsd\0\0\0cnha\0\0\0cnhb\0\0\0cnhn\0\0\0cngd\0\0\0cngx\0\0\0cnhi\0\0\0cncq\0\0\0cnsc\0\0\0cngz\0\0\0cnyn\0\0\0cnxz\0\0\0cnsn\0\0\0cngs\0\0\0cnqh\0\0\0cnnx\0\0\0cnxj\0\0\0twzzzz\0hkzzzz\0mozzzz\0cz110\0\0cz111\0\0cz112\0\0cz113\0\0cz114\0\0cz115\0\0cz663\0\0cz632\0\0cz633\0\0cz634\0\0cz635\0\0cz641\0\0cz642\0\0cz643\0\0cz644\0\0cz646\0\0cz647\0\0cz31\0\0\0cz64\0\0\0cz41\0\0\0cz52\0\0\0cz51\0\0\0cz80\0\0\0cz71\0\0\0cz53\0\0\0cz32\0\0\0cz10\0\0\0cz20\0\0\0cz42\0\0\0cz63\0\0\0cz72\0\0\0axzzzz\0frges\0\0frnaq\0\0blzzzz\0frara\0\0cpzzzz\0frbfc\0\0frbre\0\0frcvl\0\0frges\0\0gfzzzz\0gpzzzz\0frcor\0\0frbfc\0\0fridf\0\0frocc\0\0frnaq\0\0frges\0\0mfzzzz\0mqzzzz\0frocc\0\0nczzzz\0frhdf\0\0frnor\0\0pfzzzz\0pmzzzz\0frnor\0\0frpdl\0\0rezzzz\0frhdf\0\0frnaq\0\0tfzzzz\0frpac\0\0frara\0\0wfzzzz\0ytzzzz\0laxs\0\0\0lucl\0\0\0luec\0\0\0luca\0\0\0mr13\0\0\0awzzzz\0cwzzzz\0sxzzzz\0no50\0\0\0nzauk\0\0nzcan\0\0ombj\0\0\0omsj\0\0\0pl02\0\0\0pl04\0\0\0pl08\0\0\0pl10\0\0\0pl06\0\0\0pl12\0\0\0pl14\0\0\0pl16\0\0\0pl20\0\0\0pl18\0\0\0pl22\0\0\0pl26\0\0\0pl24\0\0\0pl28\0\0\0pl30\0\0\0pl32\0\0\0tazzzz\0tttob\0\0ttmrc\0\0tttob\0\0twkhh\0\0twtnn\0\0twnwt\0\0twtxg\0\0aszzzz\0guzzzz\0mpzzzz\0przzzz\0umzzzz\0vizzzz\0") })
+ },
+ };
+ }
+ #[clippy::msrv = "1.66"]
+ impl icu_provider::DataProvider<icu::locid_transform::provider::AliasesV1Marker> for $provider {
+ fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::locid_transform::provider::AliasesV1Marker>, icu_provider::DataError> {
+ if req.locale.is_empty() {
+ Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_LOCID_TRANSFORM_ALIASES_V1)), metadata: Default::default() })
+ } else {
+ Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::locid_transform::provider::AliasesV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
+ }
+ }
+ }
+ };
+}
diff --git a/vendor/icu_locid_transform_data/data/macros/locid_transform_likelysubtags_ext_v1.data.rs b/vendor/icu_locid_transform_data/data/macros/locid_transform_likelysubtags_ext_v1.data.rs
new file mode 100644
index 000000000..130f5e15d
--- /dev/null
+++ b/vendor/icu_locid_transform_data/data/macros/locid_transform_likelysubtags_ext_v1.data.rs
@@ -0,0 +1,52 @@
+// @generated
+/// Implement `DataProvider<LikelySubtagsExtendedV1Marker>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_locid_transform_likelysubtags_ext_v1 {
+ ($ provider : ty) => {
+ #[clippy::msrv = "1.66"]
+ const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+ #[clippy::msrv = "1.66"]
+ impl $provider {
+ #[doc(hidden)]
+ pub const SINGLETON_LOCID_TRANSFORM_LIKELYSUBTAGS_EXT_V1: &'static <icu::locid_transform::provider::LikelySubtagsExtendedV1Marker as icu_provider::DataMarker>::Yokeable = &icu::locid_transform::provider::LikelySubtagsExtendedV1 {
+ language_script: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"aaeGrekaafArabablLatnacyArabacyGrekadiTibtagjArabahkMymrahkThaiainLatnaiwArabaiwEthiakbBatkamfEthiamwArabamwArmiamwLatnanuArabanuLatnaotLatnarcNbatarcPalmatbLisuaujLatnaujTfngazbCyrlazbLatnbcaHanibeaCansbfaArabbfsHanibfuTakrbhdArabbhdTakrbhhHebrbhhLatnbhtDevabhtLatnblrTaleblrThaibozArabbqfArabbrbLaoobrbLatnbruLaoobruThaibskLatnbsvArabbswEthibtsBatkbtxBatkbweLatnbwoEthibxmLatnbxmMongbxuCyrlbxuLatncafCanscbkBraicdfBengcdhTakrcdmLatncdoHantcdoLatncfmBengchnDuplciaArabciaHangciwCanscjsCyrlcjyHantckmGlagclkTibtcmoKhmrcnpHantcrjLatncrxCanscshLatncspHantctgArabctgLatncu\0GlagcvgTibtczhHantdbjArabderLatndinArabdisBengdngArabdsqArabdtaCyrldtaHansduhGujrdwrEthiekoArabemsCyrlessCyrlevnLatnevnMonggacDevagaxEthigbkTakrgblDevagdbTelugdlEthighaLatnghaTfnggraGujrgrcLinbgruLatngukEthigylEthihajBengharArabharLatnhiiDevahkhDevahkhLatnhmnBopohmnHmnghmzPlrdhnjLaoohrmHmnghutTibtigsGrekiktCansiliArabiliCyrliruMlymiskCyrliumHaniiumLaooiumThaijctLatnjdtHebrjdtLatnjehLaoojgeHebrjkmBraijkmLatnjnjEthijnsLatnjnsTakrkbrEthikdrCyrlkexGujrkffDevakffOryakffTelukfiKndakfkTakrkfxTakrkhrDevakjpThaikkeArabklsArabkmcHaniknkArabknsThaikswLatnku\0Arabku\0YezikvqLatnkxdArabkxfLatnkxvLatnkxvTelukyuLatnkyuMymrkywBengkywOryalaeTibtlaxBenglbfTibtlbjArablbnLaoolboLatnlfnCyrllifLimblmkMymrlotArabloyTibtlpoLisulusBenglusBraimanNkoomdyLatnmeoArabmeyArabmfgArabmfiLatnmfxEthimgdArabmjlTakrmjtBengmjxBengmlfLatnmlqArabmmdHansmmdHantmoyEthimpeEthimqxBugimrgBengmrgDevamrwArabmuzLatnmvfPhagmvzArabmwtThainbtDevancbDevancqThainctBengnivLatnnjzBengnkiBengnmmTibtnmoBengnngBengnruHansnruHantnwcBrahnwcDevanwcSiddojbCansojwCansolaTibtonpDevaoscLatnpalPhlppccHanipceThaipcgKndapcgTamlpciOryapduMymrpi\0Brahpi\0Devapi\0Kharpi\0Khmrpi\0Mymrpi\0ThaipkhDevaprxTibtpyuHaniqwmCyrlqwmRunrrahLatnreiTelurmlCyrlrmnCyrlrmnGrekromCyrlrupGrekrutLatnsamHebrsamSyrcsbuDevasceArabscsCanssekCanssghArabsghLatnshyArabshyTfngsjpBengsngBraisoaThaisqtLatnsseArabsssThaistvArabsuqEthisuvBengsuvDevasvaCyrlsvaLatnsxuRunrtayHanstayHanttbkHanotbkLatntdaArabtdaLatntdbBengtdbKthitgtHanotgtTagbthpDuplthvArabthvTfngthzTfngtliCyrltpeBengtrpBengtytTavtug\0CyrlunrDevausiBenguumCyrlvasGujrvavGujrvkpDevavwaMymrwblArabwblCyrlwmwArabwofArabwtwBugixnzArabxomEthixubKndaxubMlymxumItalyalArabybeOugryeaKndaykaArabymkArabywqYiiiywuYiiizauArabzayEthizenArabzhdLatnzhnHanizljLatnzqeLatnzyjHani") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"IT\0IN\0ID\0CY\0CY\0CN\0ET\0MM\0TH\0JP\0ET\0ET\0ID\0ET\0SY\0SY\0SY\0SS\0SS\0IN\0JO\0SY\0CN\0LY\0LY\0AZ\0AZ\0CN\0CA\0SS\0CN\0IN\0IN\0IN\0IL\0IL\0IN\0IN\0CN\0TH\0ML\0GN\0LA\0VN\0LA\0LA\0PK\0GN\0ET\0ID\0ID\0MM\0ET\0MN\0MN\0CN\0CN\0CA\0PH\0IN\0IN\0NP\0CN\0CN\0IN\0US\0ID\0ID\0US\0RU\0CN\0HR\0CN\0KH\0CN\0CA\0CA\0MM\0CN\0BD\0BD\0BG\0IN\0CN\0MY\0IN\0SS\0IN\0KG\0ML\0CN\0CN\0IN\0ET\0MZ\0US\0US\0CN\0CN\0IN\0ET\0IN\0IN\0IN\0ET\0LY\0LY\0IN\0GR\0ET\0ET\0ET\0IN\0ET\0ET\0IN\0IN\0IN\0CN\0CN\0CN\0LA\0CN\0NP\x00001CA\0CN\0KZ\0IN\0TJ\0CN\0LA\0TH\0UA\0RU\0AZ\0LA\0IL\0MM\0MM\0ET\0IN\0IN\0ET\0UA\0IN\0IN\0IN\0IN\0IN\0IN\0IN\0IN\0TH\0GN\0PK\0CN\0SL\0TH\0MM\0IQ\0GE\0MM\0BN\0MM\0IN\0IN\0MM\0MM\0IN\0IN\0IN\0IN\0CN\0IN\0LA\0US\x00001IN\0IN\0SS\0NP\0CN\0BD\0IN\0GN\0ET\0MY\0MR\0GN\0CM\0ET\0SS\0IN\0BD\0BD\0LA\0SN\0CN\0CN\0ET\0ET\0ID\0IN\0IN\0PH\0ET\0CN\0ET\0TH\0IN\0IN\0LA\0IN\0RU\0IN\0IN\0NP\0IN\0IN\0CN\0CN\0NP\0NP\0NP\0CA\0CA\0CN\0IN\0IT\0CN\0CN\0TH\0IN\0IN\0IN\0MM\0IN\0IN\0IN\0IN\0IN\0IN\0BD\0IN\0TW\0RU\0RU\0IN\0IN\0BY\0BG\0GR\0RO\0GR\0AZ\0PS\0PS\0IN\0CN\0CA\0CA\0AF\0TJ\0DZ\0DZ\0IN\0CD\0TH\0YE\0PH\0TH\0ET\0ET\0IN\0IN\0GE\0GE\0DE\0TW\0TW\0PH\0PH\0NE\0NE\0IN\0IN\0PH\0PH\0CA\0DZ\0DZ\0NE\0US\0BD\0IN\0VN\0KZ\0NP\0BD\0GE\0IN\0IN\0IN\0CN\0AF\0TJ\0MZ\0GM\0ID\0EG\0ET\0IN\0IN\0IT\0GN\0CN\0IN\0PH\0MZ\0CN\0CN\0IN\0ET\0MR\0VN\0CN\0CN\0CN\0CN\0") })
+ },
+ language_region: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"ahkTH\0cmoKH\0hnjAU\0hnjCN\0hnjFR\0hnjGF\0hnjLA\0hnjMM\0hnjSR\0hnjTH\0hnjUS\0hnjVN\0ku\0LB\0lwoZA\0manGN\0ndyTD\0stiKH\0ug\0KZ\0ug\0MN\0unrNP\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"LatnLatnLaooLaooLaooLaooLaooLaooLaooLaooHmnpLaooArabLatnNkooLatnLatnCyrlCyrlDeva") })
+ },
+ language: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"aa\0aaaaabaacaadaaeaafaagaahaaiaakaalaanaaoaapaaqaasaataauaawaaxaazab\0abaabbabcabdabeabfabgabhabiablabmabnaboabpabqabrabsabtabuabvabwabxabyabzacaacbacdaceacfachacmacnacpacqacracsactacuacvacwacxacyaczadaadbaddadeadfadgadhadiadjadladnadoadpadqadradtaduadwadxadyadzae\0aeaaebaecaeeaekaelaemaeqaeraeuaewaeyaezafbafdafeafhafiafkafnafoafpafsafuafzagaagbagcagdageagfaggaghagiagjagkaglagmagnagoagqagragsagtaguagvagwagxagyagzahaahbahgahhahiahkahlahmahnahoahpahrahsahtaiaaibaicaidaieaifaigaijaikailaimainaioaipaiqairaitaiwaixaiyajaajgajiajnajpajtajwajzak\0akbakcakdakeakfakgakhakiakkaklakoakpakqakraksaktakuakvakwakzalaalcaldalealfalhalialjalkallalmalnaloalpalqalraltalualwalxalyalzamaambamcameamfamgamiamjamkammamnamoampamqamramsamtamuamvamwamxamyamzan\0anaanbancandaneanfanganhanianjankanlanmannanoanpanransantanuanvanwanxanyanzaoaaobaocaodaoeaofaogaoiaojaokaolaomaonaoraosaotaoxaozapbapcapdapeapfapgaphapiapjapkaplapmapnapoappaprapsaptapuapvapwapxapyapzaqcaqdaqgaqkaqmaqnaqraqtaqzarcardarearhariarjarkarlarnaroarparqarrarsaruarwarxaryarzasaasbascaseasgashasiasjaskaslasnasoassasuasvasxasyaszataatbatcatdateatgatiatjatkatlatmatnatoatpatqatratsattatuatvatwatxatyatzauaaucaudaugauhauiaujaukaulaumaunauoaupauqaurautauuauwauyauzav\0avbavdaviavkavlavmavnavoavsavtavuavvawaawbawcaweawgawhawiawkawmawnawoawrawsawtawuawvawwawxawyaxbaxeaxgaxkaxlaxmaxxay\0ayaaybaycaydayeaygayhayiaykaylaynayoaypayqaysaytayuayzazbazdazgazmaznazoaztazzba\0baababbacbaebafbagbahbajbalbanbaobapbarbasbaubavbawbaxbaybbabbbbbcbbdbbebbfbbgbbibbjbbkbblbbmbbnbbobbpbbqbbrbbsbbtbbubbvbbwbbxbbybcabcbbcdbcebcfbcgbchbcibcjbckbcmbcnbcobcpbcqbcrbcsbctbcubcvbcwbcybczbdabdbbdcbddbdebdfbdgbdhbdibdjbdkbdlbdmbdnbdobdpbdqbdrbdsbdtbdubdvbdwbdxbdybdzbeabebbecbedbeebefbehbeibejbekbembeobepbeqbesbetbeubevbewbexbeybezbfabfbbfcbfdbfebffbfgbfhbfjbflbfmbfnbfobfpbfqbfsbftbfubfwbfxbfybfzbgabgbbgdbgfbggbgibgjbgnbgobgpbgqbgrbgsbgtbgubgvbgwbgxbgybgzbhabhbbhcbhdbhebhfbhgbhhbhibhjbhlbhmbhnbhpbhqbhrbhsbhtbhubhvbhwbhybhzbi\0biabibbidbiebifbigbikbilbimbinbiobipbiqbirbitbiubivbiwbiybizbjabjbbjcbjfbjgbjhbjibjjbjkbjlbjmbjnbjobjpbjrbjsbjtbjubjvbjwbjxbjybjzbkabkcbkdbkfbkgbkhbkibkjbklbkmbknbkobkpbkqbkrbksbktbkubkvbkwbkxbkybkzblablbblcbldbleblfblgblhblibljblkblmblnbloblpblqblrblsbltblvblwblxblyblzbm\0bmabmbbmcbmdbmebmfbmgbmhbmibmjbmkbmlbmmbmnbmobmpbmqbmrbmsbmubmvbmwbmxbmzbnabnbbncbndbnebnfbngbnibnjbnkbnmbnnbnobnpbnqbnrbnsbnubnvbnwbnxbnybnzbo\0boabobboebofbohbojbokbolbombonboobopboqborbotboubovbowboxboybozbpabpcbpdbpebpgbphbpibpjbpkbplbpmbpobppbpqbprbpsbptbpubpvbpwbpxbpybpzbqabqbbqcbqdbqfbqgbqibqjbqkbqlbqmbqobqpbqqbqrbqsbqtbqubqvbqwbqxbqzbrabrbbrcbrdbrfbrgbrhbribrjbrkbrlbrmbrnbrpbrqbrrbrsbrtbrubrvbrybrzbsabsbbscbsebsfbshbsibsjbskbslbsmbsnbsobspbsqbsrbssbstbsubsvbswbsxbsybtabtcbtdbtebtfbtgbthbtibtjbtmbtnbtobtpbtqbtrbtsbttbtubtvbtwbtxbtybtzbuabubbucbudbuebufbugbuhbuibujbukbumbunbuobupbuqbusbutbuubuvbuwbuxbuybuzbvabvbbvcbvdbvebvfbvgbvhbvibvjbvkbvmbvnbvobvqbvrbvtbvubvvbvwbvxbvybvzbwabwbbwcbwdbwebwfbwgbwhbwibwjbwkbwlbwmbwobwpbwqbwrbwsbwtbwubwwbwxbwybwzbxabxbbxcbxfbxgbxhbxibxjbxlbxmbxnbxobxpbxqbxsbxubxvbxwbxzbyabybbycbydbyebyfbyhbyibyjbykbylbymbynbypbyrbysbyvbywbyxbyzbzabzbbzcbzdbzebzfbzhbzibzjbzkbzlbzmbznbzobzpbzqbzrbztbzubzvbzwbzxbzybzzcaacabcaccadcaecafcagcahcajcakcalcamcancaocapcaqcarcascavcawcaxcaycazcbbcbccbdcbgcbicbjcbkcblcbncbocbqcbrcbscbtcbucbvcbwcbycccccdcceccgcchccjcclccmccoccpccrcdecdfcdhcdicdjcdmcdocdrcdzce\0ceacegcekcencetceycfacfdcfgcfmcgacgccggcgkch\0chbchdchfchgchhchjchkchlchmchnchochpchqchtchwchxchychzciacibcicciecihcimcincipcirciwciycjacjecjhcjicjkcjmcjncjocjpcjscjvcjyckbcklckmcknckockqckrckscktckuckvckxckyckzclaclccleclhclicljclkcllclmclocltcluclwclycmacmecmgcmicmlcmocmrcmscmtcnacnbcnccngcnhcnicnkcnlcnpcnqcnscntcnwcnxco\0coacobcoccodcoecofcogcohcojcokcolcomcoocopcoqcotcoucoxcozcpacpbcpccpgcpicpncpocpscpucpxcpycqdcr\0crbcrccrdcrfcrgcrhcricrjcrkcrlcrmcrncrocrqcrscrtcrvcrwcrxcrycrzcsacsbcshcsjcskcsmcsocspcsscstcsvcswcsycszctactcctdctectgcthctlctmctnctoctpctscttctuctzcu\0cuacubcuccuhcuicujcukculcuocupcutcuucuvcuxcvgcvncwacwbcwecwgcwtcyacybcyoczhczkczncztdaadacdaddaedafdagdahdaidajdakdaldamdaodaqdardasdaudavdawdaxdazdbadbbdbddbedbfdbgdbidbjdbldbmdbndbodbpdbqdbtdbudbvdbwdbydccdcrddadddddeddgddiddjddnddoddrddsddwdecdeddeedefdegdehdeidekdeldemdendeqderdesdevdezdgadgbdgcdgddgedggdghdgidgkdgldgndgrdgsdgtdgwdgxdgzdhgdhidhldhmdhndhodhrdhsdhudhvdhwdhxdiadibdicdiddifdigdihdiidijdildindiodipdirdisdiudiwdixdiydizdjadjbdjcdjddjedjfdjidjjdjkdjmdjndjodjrdjudjwdkadkgdkkdkrdksdkxdlgdlmdlndmadmbdmcdmddmedmfdmgdmkdmldmmdmodmrdmsdmudmvdmwdmxdmydnadnddnedngdnidnjdnkdnndnodnrdntdnudnvdnwdnydoadobdocdoedofdohdokdoldondoodopdordosdotdovdowdoxdoydppdrcdredrgdrhdridrldrndrodrqdrsdrtdrudrydshdsidsndsodsqdtadtbdtddthdtidtkdtmdtodtpdtrdtsdttdtudtyduadubducdudduedufdugduhduidukduldumdunduodupduqdurdusduuduvduwduxduyduzdv\0dvadwadwkdwrdwsdwudwwdwydwzdyadybdyddygdyidymdyndyodyudyydz\0dzadzedzgdzldzneaaebcebgebkeboebrebuecrecyee\0efaefeefiegaeglegmegoegyehueipeiteivejaekaekeekgekieklekmekoekpekrekyeleelkelmeloeluemaembemeemgemiemmemnempemsemuemwemxemzenaenbencendenfenhenlenmennenoenqenrenvenwenxeo\0eotepieraergerherierkerrerterweseesgeshesiesmessesuesyetbetnetoetretsettetuetxetzeveevhevnewoexteyaeyoezaezefaafabfadfaffagfahfaifajfakfalfamfanfapfarfaufaxfayfazfblferffiffmfgrfiafiefiffipfirfitfiwfj\0fkkfkvflaflhflifllflnflrflyfmpfmufnbfngfnifodfoifomfonforfosfpefqsfrcfrdfrkfrmfrofrpfrqfrrfrsfrtfubfudfuefuffuhfuifumfunfuqfurfutfuufuvfuyfvrfwafwefy\0gaagabgacgadgaegafgaggahgaigajgakgalgamgangaogapgaqgargasgatgaugawgaxgaygbagbbgbdgbegbfgbggbhgbigbjgbkgblgbmgbngbpgbqgbrgbsgbugbvgbwgbxgbygbzgccgcdgcfgclgcngcrgctgdbgdcgddgdegdfgdggdhgdigdjgdkgdlgdmgdngdogdqgdrgdtgdugdxgeagebgecgedgefgeggehgeigejgekgelgeqgesgevgewgexgeygezgfkggaggbggdggegggggkgglggnggtgguggwghaghcgheghkghnghrghsghtgiagibgicgidgiegiggihgilgimgingipgiqgirgisgitgixgiygizgjkgjmgjngjrgjugkagkdgkegkngkogkpgkuglbglcgldglhgljglkgllgloglrgluglwgmagmbgmdgmggmhgmmgmngmrgmugmvgmxgmygmzgn\0gnagnbgncgndgnegnggnhgnignjgnkgnlgnmgnngnqgnrgntgnugnwgnzgoagobgocgodgoegofgoggohgoigokgolgomgongoogopgoqgorgosgotgougovgowgoxgoygpagpegpngqagqngqrgragrbgrcgrdgrggrhgrigrjgrmgrqgrsgrtgrugrvgrwgrxgrygrzgslgsngsogspgswgtagtuguagubgucgudguegufguhguigukgulgumgunguogupguqgurgutguuguwguxguzgv\0gvagvcgvegvfgvjgvlgvmgvngvogvpgvrgvsgvygwagwbgwcgwdgwegwfgwggwigwjgwmgwngwrgwtgwugwwgwxgxxgybgydgyegyfgyggyigylgymgyngyogyrgyygyzgzagzigznhaahachadhaehaghahhaihajhakhalhamhanhaohaphaqharhashavhawhaxhayhazhbahbbhbnhbohbuhchhdyhedheghehheihemhgmhgwhhihhrhhyhiahibhidhifhighihhiihijhikhilhiohirhithiwhixhjihkahkehkhhkkhlahlbhldhlthluhmahmbhmdhmfhmjhmmhmnhmphmqhmrhmshmthmuhmvhmwhmyhmzhnahndhnehnghnhhnihnjhnnhnohnsho\0hoahobhochodhoehohhoihojholhomhoohophorhothovhowhoyhpohrahrchrehrkhrmhrohrphrthruhrwhrxhrzhsnhssht\0htihtohtshtuhtxhubhuchudhuehufhughuhhuihukhulhumhuphurhushuthuuhuvhuwhuxhuyhuzhvchvehvkhvnhvvhwahwchwohyahywhz\0iaiianiaribaibbibdibeibgibhiblibmibnibribuibyicaichicridaidbidciddideidiidridsidtiduie\0ifaifbifeiffifkifmifuifyigbigeiggigligmignigoigsigwihbihiihpihwii\0iinijcijeijjijnijsik\0ikiikkiklikoikpikriktikvikwikxikzilailbilgiliilkilmiloilpiluilvimiimlimnimoimrimsimtimyin\0inbinginhinjinninoinpintio\0ioriouiowipiipoiquiqwireirhiriirkirniruirxiryisaiscisdishisiiskismisnisoistisuitbitditeitiitkitlitmitoitritsittitvitwitxityitziu\0iumivbivviw\0iwkiwmiwoiwsixcixliyaiyoiyxizhiziizrizzjaajabjacjadjaejafjahjajjakjaljamjanjaojaqjarjasjatjaujaxjayjazjbejbijbjjbkjbmjbnjbojbrjbtjbujbwjctjdajdgjdtjebjeejehjeijekjeljenjerjetjeujgbjgejgkjgojhiji\0jiajibjicjidjiejigjiljimjitjiujivjiyjjejjrjkajkmjkojkujlejmajmbjmcjmdjmijmljmnjmrjmsjmwjmxjnajndjngjnijnjjnljnsjobjodjogjorjowjpajprjqrjrajrrjrtjrujuajubjudjuhjuijukjuljumjunjuojupjurjutjuujuwjuyjvdjvnjw\0jwijyajyejyykaakabkackadkagkahkaikajkakkamkaokapkaqkavkawkaxkaykbakbbkbckbdkbekbhkbikbjkbkkblkbmkbnkbokbpkbqkbrkbskbtkbukbvkbwkbxkbykbzkcakcbkcckcdkcekcfkcgkchkcikcjkckkclkcmkcnkcokcpkcqkcskctkcukcvkcwkczkdakdckddkdekdfkdgkdhkdikdjkdkkdlkdmkdnkdpkdqkdrkdtkdwkdxkdykdzkebkeckedkeekefkegkehkeikekkelkemkenkeokerkesketkeukewkexkeykezkfakfbkfckfdkfekffkfhkfikfkkflkfmkfnkfokfpkfqkfrkfskfvkfwkfxkfykfzkg\0kgakgbkgekgfkgjkgkkglkgmkgokgqkgrkgskgtkgukgvkgwkgxkgykhakhbkhckhdkhekhfkhgkhhkhjkhlkhnkhpkhqkhrkhskhtkhukhvkhwkhxkhykhzki\0kiakibkickidkiekifkigkihkijkilkimkiokipkiqkiskitkiukivkiwkixkiykizkj\0kjakjbkjckjdkjekjgkjhkjikjjkjkkjlkjmkjnkjokjpkjqkjrkjskjtkjukjxkjykkakkbkkckkdkkekkfkkgkkhkkikkjkkkkklkkmkkokkpkkqkkrkkskktkkukkvkkwkkxkkykkzkl\0klaklbklckldkleklfklgklhklikljklkkllklmklnkloklpklqklrklskltkluklvklwklxklyklzkmakmbkmckmdkmekmfkmgkmhkmikmjkmkkmlkmmkmnkmokmpkmqkmskmtkmukmvkmwkmxkmykmzknaknbkndkneknfkniknjknkknlknmknoknpknqknrknskntknuknvknwknxknyknzkoakockodkoekofkogkohkoikolkookopkoqkoskotkoukovkowkoykozkpakpckpdkpekpfkpgkphkpikpjkpkkplkpmkpnkpokpqkprkpskptkpukpwkpxkpykpzkqakqbkqckqdkqekqfkqgkqhkqikqjkqkkqlkqmkqnkqokqpkqqkqrkqskqtkqukqvkqwkqxkqykqzkr\0krakrbkrckrdkrekrfkrhkrikrjkrkkrlkrnkrpkrrkrskrtkrukrvkrwkrxkrykrzksaksbkscksdkseksfksgkshksiksjkskkslksmksnksokspksqksrksskstksuksvkswksxkszktaktbktcktdktfktgkthktiktjktkktlktmktnktoktpktqktrktskttktuktvktwktxktyktzku\0kubkuckudkuekufkugkuhkuikujkukkulkumkunkuokupkuqkuskutkuukuvkuwkuxkuykuzkv\0kvakvbkvckvdkvekvfkvgkvhkvikvjkvlkvmkvnkvokvpkvqkvrkvtkvvkvwkvxkvykvzkw\0kwakwbkwckwdkwekwfkwgkwhkwikwjkwkkwlkwmkwnkwokwpkwqkwrkwskwtkwukwvkwwkwykwzkxakxbkxckxdkxekxfkxikxjkxkkxlkxmkxnkxokxpkxqkxrkxtkxvkxwkxxkxykxzkyakybkyckydkyekyfkygkyhkyikyjkykkylkymkynkyokyqkyrkyskytkyukyvkywkyxkyykyzkzakzbkzckzdkzekzfkzhkzikzjkzkkzlkzmkznkzokzpkzrkzskztkzukzvkzwkzxkzykzzla\0laalablacladlaelaglahlailajlallamlanlaplaqlarlaslaulawlaxlazlb\0lbblbclbelbflbilbjlbllbmlbnlbolbqlbrlbtlbulbvlbwlbxlbylbzlcclcdlcelcflchlcllcmlcplcqlcsldaldblddldgldhldildjldkldlldmldnldoldpldqlealeblecledleeleflehleilejleklellemlenleolepleqlerlesletleulevlewlexleylezlfalfnlg\0lgalgblgglghlgilgklgllgmlgnlgolgqlgrlgtlgulgzlhalhhlhilhmlhnlhslhtlhuli\0lialibliclidlielifliglihlijliklilliolipliqlirlisliulivliwlixliylizljaljeljiljlljpljwljxlkalkblkclkdlkelkhlkilkjlkllkmlknlkolkrlkslktlkulkyllallbllclldllellfllgllilljllklllllmllnllpllqllullxlmalmblmclmdlmelmflmglmhlmilmjlmklmllmnlmolmplmqlmrlmulmvlmwlmxlmyln\0lnalnblndlnhlnilnjlnllnmlnnlnslnulnwlnzloaloblocloeloglohloilojloklollomlonlooloploqlorloslotloulowloxloylozlpalpelpnlpolpxlqrlralrclrglrilrklrllrmlrnlrolrtlrvlrzlsalsdlselsilsmlsrlssltglthltiltnltoltsltulu\0lualucludluelufluilujluklullumlunluolupluqlurluslutluuluvluwluyluzlvalvilvklvulwalwelwglwhlwllwmlwolwtlwwlxmlyalynlzhlzllznlzzmaamabmadmaemafmagmajmakmammanmaqmasmatmaumavmawmaxmazmbambbmbcmbdmbfmbhmbimbjmbkmblmbmmbnmbombpmbqmbrmbsmbtmbumbvmbwmbxmbymbzmcamcbmccmcdmcemcfmcgmchmcimcjmckmclmcmmcnmcomcpmcqmcrmcsmctmcumcvmcwmcxmcymczmdamdbmdcmddmdemdfmdgmdhmdimdjmdkmdmmdnmdpmdqmdrmdsmdtmdumdvmdwmdxmdymdzmeamebmecmedmeemehmejmekmelmemmenmeomepmeqmermesmetmeumevmewmeymezmfamfbmfcmfdmfemffmfgmfhmfimfjmfkmflmfmmfnmfomfpmfqmfrmftmfumfvmfwmfxmfymfzmg\0mgbmgcmgdmgemgfmggmghmgimgjmgkmglmgmmgnmgomgpmgqmgrmgsmgtmgumgvmgwmgymgzmh\0mhbmhcmhdmhemhfmhgmhimhjmhkmhlmhmmhnmhomhpmhqmhsmhtmhumhwmhxmhymhzmiamibmicmidmiemifmigmihmiimijmikmilmimminmiomipmiqmirmitmiumiwmixmiymizmjbmjcmjdmjemjgmjhmjimjjmjkmjlmjmmjnmjqmjrmjsmjtmjumjvmjwmjxmjymjzmkamkbmkcmkemkfmkimkjmkkmklmkmmknmkomkpmkrmksmktmkumkvmkwmkxmkymkzmlamlbmlcmlemlfmlhmlimljmlkmllmlnmlomlpmlqmlrmlsmlumlvmlwmlxmlzmmammbmmcmmdmmemmfmmgmmhmmimmmmmnmmommpmmqmmrmmtmmummvmmwmmxmmymmzmnamnbmndmnemnfmngmnhmnjmnlmnmmnnmnpmnqmnrmnsmnumnvmnwmnxmnymnzmo\0moamocmodmoemogmohmoimojmokmommoomopmoqmormosmotmoumovmowmoxmoymozmpampbmpcmpdmpempgmphmpimpjmpkmplmpmmpnmpomppmpqmprmpsmptmpumpvmpwmpxmpympzmqamqbmqcmqemqfmqgmqhmqimqjmqkmqlmqmmqnmqomqpmqqmqrmqsmqumqvmqwmqxmqymqzmramrbmrcmrdmrfmrgmrhmrjmrkmrlmrmmrnmromrpmrqmrrmrsmrtmrumrvmrwmrxmrymrzmsbmscmsemsfmsgmshmsimsjmskmslmsmmsnmsomspmsqmssmsumsvmswmsxmsymszmt\0mtamtbmtcmtdmtemtfmtgmthmtimtjmtkmtlmtmmtnmtomtpmtqmtrmtsmttmtumtvmtwmtxmtymuamubmucmudmuemugmuhmuimujmukmummuomuqmurmusmutmuumuvmuxmuymuzmvamvdmvfmvgmvhmvkmvlmvnmvomvpmvqmvrmvsmvtmvumvvmvwmvxmvymvzmwamwbmwcmwemwfmwgmwhmwimwkmwlmwmmwnmwomwpmwqmwrmwsmwtmwumwvmwwmwzmxamxbmxcmxdmxemxfmxgmxhmximxjmxkmxlmxmmxnmxomxpmxqmxrmxsmxtmxumxvmxwmxxmxymxzmybmycmyemyfmygmyhmyjmykmylmymmypmyrmyumyvmywmyxmyymyzmzamzdmzemzhmzimzjmzkmzlmzmmznmzomzpmzqmzrmztmzumzvmzwmzxmzzna\0naanabnacnaenafnagnajnaknalnamnannaonapnaqnarnasnatnawnaxnaynaznb\0nbanbbnbcnbdnbenbhnbinbjnbknbmnbnnbonbpnbqnbrnbtnbunbvnbwnbyncancbnccncdncencfncgnchncincjncknclncmncnnconcqncrnctncuncxncznd\0ndandbndcnddndfndgndhndindjndkndlndmndnndpndqndrndsndtndundvndwndxndyndzneanebnecnedneenegnehneinejneknemnenneoneqnernetneunewnexneyneznfanfdnflnfrnfung\0ngangbngcngdngenggnghngingjngknglngmngnngpngqngrngsngtngungvngwngxngyngznhanhbnhcnhdnhenhfnhgnhinhknhmnhnnhonhpnhqnhrnhtnhunhvnhwnhxnhynhznianibnidnienifnignihniinijnilnimninnioniqnirnisnitniunivniwnixniyniznjanjbnjdnjhnjinjjnjlnjmnjnnjonjrnjsnjtnjunjxnjynjznkankbnkcnkdnkenkfnkgnkhnkinkjnkknkmnknnkonkqnkrnksnktnkunkvnkwnkxnkznlanlcnlenlgnlinljnlknlmnlonlqnlunlvnlwnlxnlynlznmanmbnmcnmdnmenmfnmgnmhnminmjnmknmlnmmnmnnmonmpnmqnmrnmsnmtnmunmvnmwnmxnmznnannbnncnndnnennfnngnnhnninnjnnknnlnnmnnnnnpnnqnnrnntnnunnvnnwnnynnznoanocnodnoenofnognohnoinojnoknomnonnopnoqnosnotnounovnownoynpbnpgnphnplnpnnponpsnpunpxnpynqgnqknqlnqmnqnnqonqqnqtnqynr\0nranrbnrenrfnrgnrinrknrlnrmnrpnrunrxnrznsansbnscnsdnsensfnsgnshnsknsmnsnnsonsqnssnstnsunsvnswnsxnsynszntdntentgntintjntkntmntontpntrntuntxntyntznuanucnudnuenufnugnuhnuinujnuknumnunnuonupnuqnurnusnutnuunuvnuwnuxnuynuznv\0nvhnvmnvonwbnwcnwenwgnwinwmnwonwrnwwnwxnxanxdnxenxgnxinxlnxnnxonxqnxrnxxny\0nybnycnydnyenyfnygnyhnyinyjnyknylnymnynnyonypnyqnyrnysnytnyunyvnyxnyynzanzbnzdnzinzknzmnzunzynzzoaaoacoaroavobiobkoblobmoboobrobtobuoc\0ocaocoocuodaodkodtoduofuogbogcoggogooguohtoiaoieoinoj\0ojbojcojsojvojwokaokbokcokdokeokgokiokkokmokookroksokuokvokxokzolaoldoleolkolmoloolroltoluom\0omaombomcomgomiomkomlomoompomromtomuomwonaoneongonionjonkonnonoonponronsontonuonxoodoonooropaopkopmopooptopyoraorcoreorgornoroorrorsortoruorvorworxorzos\0osaoscosiosoospostosuosxotaotbotdoteotiotkotlotmotnotqotrotsottotuotwotxotyotzouboueouioumovdowiowloydoymoyyozmpabpacpadpaepafpagpahpaipakpalpampaopappaqparpaspaupavpawpaxpaypazpbbpbcpbepbfpbgpbhpbipblpbmpbnpbopbppbrpbspbtpbvpbypcapcbpccpcdpcepcfpcgpchpcipcjpckpcnpcppcwpdapdcpdnpdopdtpdupeapebpedpeepegpeipekpelpempeopeppeqpevpexpeypezpfapfepflpgapgdpggpgipgkpglpgnpgspguphdphgphhphkphlphmphnphophrphtphvphwpi\0piapibpicpidpifpigpihpijpilpimpinpiopippirpispitpiupivpiwpixpiypizpjtpkapkbpkgpkhpknpkopkppkrpkuplaplbplcpldpleplgplhpljplkpllplnploplrplspluplvplwplzpmapmbpmdpmepmfpmhpmipmjpmlpmmpmnpmopmqpmrpmspmtpmwpmxpmypmzpnapncpndpnepngpnhpnipnjpnkpnlpnmpnnpnopnppnqpnrpnspntpnvpnwpnypnzpocpoepofpogpohpoipokpomponpoopoppoqpospotpovpowpoyppappeppippkpplppmppnppopppppqppspptpqapqmpraprcprdpreprfprgprhpriprkprmproprpprqprrprtpruprwprxpsapsepshpsipsmpsnpsqpsspstpswptapthptiptnptoptpptrpttptuptvpuapubpucpudpuepufpugpuipujpumpuopuppuqpurputpuupuwpuxpuypwapwbpwgpwmpwnpwopwrpwwpxmpyepympynpyupyxpyypzhpznquaqubqucqudqufqugquiqukqulqumqunqupquqqurqusquvquwquxquyqvaqvcqveqvhqviqvjqvlqvmqvnqvoqvpqvsqvwqvzqwaqwcqwhqwmqwsqwtqxaqxcqxhqxlqxnqxoqxpqxqqxrqxtqxuqxwqyaqypraarabracradrafragrahrairakramranraoraprarravrawraxrayrazrbbrbkrblrbprcfrdbrearebreeregreirejrelremrenresretreyrgargnrgrrgsrgurhgrhpriarifrilrimrinrirritriurjgrjirjsrkarkbrkhrkirkmrktrkwrmarmbrmcrmdrmermfrmgrmhrmirmkrmlrmmrmnrmormprmqrmtrmurmwrmxrmzrn\0rnarndrngrnlrnnrnrrnwrobrocrodroerofrogrolromrooroprorrourowrpnrptrrirrorrtrskrtcrthrtmrtwrubrucruerufrugruirukruorupruqrutruuruyruzrw\0rwarwkrwlrwmrworwrrxdrxwryusaasabsacsadsaesafsahsajsaksamsaosaqsarsassausavsawsaxsaysazsbasbbsbcsbdsbesbgsbhsbisbjsbksblsbmsbnsbosbpsbqsbrsbssbtsbusbvsbwsbxsbysbzscbscescfscgschsciscksclscnscoscpscssctscuscvscwscxsdasdbsdcsdesdfsdgsdhsdjsdksdnsdosdqsdssdusdxse\0seasebsecsedseesefsegsehseisejsekselsenseosepseqsersessetseusevsewseysezsfesfmsfwsg\0sgasgbsgcsgdsgesghsgisgjsgmsgpsgrsgssgtsgusgwsgysgzshashbshcshdsheshgshhshishjshkshmshnshoshpshqshrshsshtshushvshwshyshzsiasibsidsiesifsigsihsiisijsiksilsimsipsiqsirsissiusivsiwsixsiysizsjasjbsjdsjesjgsjlsjmsjpsjrsjtsjusjwskaskbskcskdskeskfskgskhskiskjskmsknskoskpskqskrskssktskuskvskwskxskyskzslcsldslgslhslisljsllslmslnslpslqslrsluslwslxslyslzsm\0smasmbsmcsmdsmfsmgsmhsmjsmksmlsmnsmpsmqsmrsmssmtsmusmwsmxsmysmzsn\0snbsncsnesnfsngsnisnjsnksnlsnmsnnsnosnpsnqsnrsnssnusnvsnwsnxsnysnzsoasobsocsodsoesogsoisoksolsoosopsoqsorsossousovsowsoxsoysozspbspcspdspespgspispksplspmspnsposppspqsprspssptspvsqasqhsqmsqosqqsqtsqusrasrbsresrfsrgsrhsrisrksrlsrmsrnsrosrqsrrsrssrtsrusrvsrwsrxsrysrzss\0ssbsscssdssessfssgsshssjsslssmssnssossqssssstssussvssxssysszst\0stastbstestfstgsthstistjstkstlstmstnstostpstqstrstssttstvstwstysuasubsucsuesugsuisujsuksuosuqsursussutsuvsuwsuysuzsvasvbsvcsvesvmsvsswbswcswfswgswiswjswkswmswoswpswqswrswsswtswuswvswwswxswysxbsxesxnsxrsxssxusxwsyasybsycsyisyksylsymsynsyosyrsyssywsyxszaszbszcszdszgszlsznszpszvszwszytaatabtactadtaetaftagtajtaktaltantaotaptaqtartastautavtawtaxtaytaztbatbctbdtbetbftbgtbhtbitbjtbktbltbmtbntbotbptbstbttbutbvtbwtbxtbytbztcatcbtcctcdtcetcftcgtchtcitcktcmtcntcotcptcqtcstcutcwtcxtcytcztdatdbtdctddtdetdgtdhtditdjtdktdltdmtdntdotdqtdrtdstdttdutdvtdxtdyteatebtectedteetegtehteitektemtenteotepteqtertestetteutevtewtexteytfitfntfotfrtfttgatgbtgctgdtgetgftghtgitgjtgntgotgptgqtgstgttgutgvtgwtgxtgytgzthdthethfthhthithkthlthmthpthqthrthsthtthuthvthythztictiftigtihtiitijtiktiltimtintiotiptiqtistittiutivtiwtixtiytjatjgtjitjjtjltjntjotjptjstjutjwtkatkbtkdtketkftkgtkltkptkqtkrtkstkttkutkvtkwtkxtkztl\0tlatlbtlctldtlftlgtlitljtlktlltlmtlntlptlqtlrtlstlttlutlvtlxtlytmatmbtmctmdtmetmftmgtmhtmitmjtmktmltmmtmntmotmqtmrtmttmutmvtmwtmytmztn\0tnatnbtnctndtngtnhtnitnktnltnmtnntnotnptnqtnrtnstnttnvtnwtnxtnytobtoctodtoftogtohtoitojtoktoltomtootoptoqtortostoutovtowtoxtoytoztpatpctpetpftpgtpitpjtpktpltpmtpntpptprtpttputpvtpxtpytpztqbtqltqmtqntqotqptqttqutqwtratrbtrctretrftrgtrhtritrjtrltrmtrntrotrptrqtrrtrstrttrutrvtrwtrxtrytrzts\0tsatsbtsctsdtsftsgtshtsitsjtsltsptsrtsttsutsvtswtsxtszttbttcttdttettftthttittjttkttlttmttnttottpttrttstttttuttvttwttytuatubtuctudtuetuftugtuhtuitujtultumtuntuotuqtustuutuvtuxtuytuztvatvdtvetvktvltvmtvntvotvstvttvutvwtvxtwatwbtwdtwetwftwgtwhtwltwmtwntwotwptwqtwrtwttwutwwtwxtwytxatxetxgtxitxjtxmtxntxotxqtxstxttxutxxtxyty\0tyatyetyhtyityjtyltyntyptyrtystyttyutyvtyxtyytyztzhtzjtzltzmtzntzotzxuamuarubaubiublubrubuudaudeudgudiudjudludmuduuesufiug\0ugaugbugeughugouhauhnuisuivujiukaukgukhukiukkukpukqukuukvukwukyulaulbulculeulfuliulkulmulnuluulwumaumbumdumgumiummumnumoumpumrumsunauneunguniunkunmunnunrunuunxunzuokuonupiupvuraurburcureurfurgurhuriurkurmurnurourpurrurturuurvurwurxuryurzusaushusiuskuspussusuutauteuthutputrutuuumuuruveuvhuvluwauyauzsvaavaevafvagvahvaivajvalvamvanvaovapvarvasvauvavvayvbbvbkve\0vecvemveovepvervgrvicvidvifvigvilvinvitvivvkavkjvkkvklvkmvknvkovkpvktvkuvkzvlpvlsvmavmbvmcvmdvmevmfvmgvmhvmivmjvmkvmlvmmvmpvmqvmrvmsvmuvmwvmxvmyvmzvnkvnmvnpvo\0vorvotvravrovrsvrtvtovumvunvutvwawa\0waawabwacwadwaewafwagwahwaiwajwalwamwanwapwaqwarwaswatwauwavwawwaxwaywazwbawbbwbewbfwbhwbiwbjwbkwblwbmwbpwbqwbrwbtwbvwbwwcawciwddwdgwdjwdkwdtwduwdywecwedwegwehweiwemweowepwerweswetweuwewwfgwgawgbwggwgiwgowguwgywhawhgwhkwhuwibwicwiewifwigwihwiiwijwikwilwimwinwirwiuwivwiywjawjiwkawkdwkrwkwwkywlawlgwlhwliwlmwlowlrwlswluwlvwlwwlxwmawmbwmcwmdwmewmhwmiwmmwmnwmowmswmtwmwwmxwnbwncwndwnewngwniwnkwnmwnnwnownpwnuwnwwnywoawobwocwodwoewofwogwoiwokwomwonwooworwoswowwpcwrbwrgwrhwriwrkwrlwrmwrowrpwrrwrswruwrvwrwwrxwrzwsawsgwsiwskwsrwsswsuwsvwtfwthwtiwtkwtmwtwwuawubwudwulwumwunwurwutwuuwuvwuxwuywwawwbwwowwrwwwwxwwybwyiwymwynwyrwyyxaaxabxaixajxakxalxamxanxaoxarxasxatxauxavxawxayxbbxbdxbexbgxbixbjxbmxbnxbpxbrxbwxbyxchxcoxcrxdaxdkxdoxdqxdyxedxegxemxerxesxetxeuxgbxgdxggxgixgmxguxgwxhexhmxhvxiixinxirxisxiyxjbxjtxkaxkbxkcxkdxkexkgxkjxklxknxkpxkqxkrxksxktxkuxkvxkwxkxxkyxkzxlaxlcxldxlyxmaxmbxmcxmdxmfxmgxmhxmjxmmxmnxmoxmpxmqxmrxmtxmuxmvxmwxmxxmyxmzxnaxnbxnixnjxnkxnmxnnxnqxnrxntxnuxnyxnzxocxodxogxoixokxomxonxooxopxorxowxpaxpbxpdxpfxpgxphxpixpjxpkxplxpmxpnxpoxpqxprxptxpvxpwxpxxpzxraxrbxrdxrexrgxrixrmxrnxrrxruxrwxsaxsbxsexshxsixsmxsnxspxsqxsrxssxsuxsyxtaxtbxtcxtdxtexthxtixtjxtlxtmxtnxtpxtsxttxtuxtvxtwxtyxubxudxujxulxumxunxuoxutxuuxvexvixvnxvoxvsxwaxwdxwexwjxwkxwlxwoxwrxwtxwwxxbxxkxxmxxrxxtxyaxybxyjxykxylxytxyyxzhxzpyaayabyacyadyaeyafyagyaiyajyakyalyamyanyaoyapyaqyaryasyatyauyavyawyaxyayyazybaybbybeybhybiybjyblybmybnyboybxybyyclycnydaydeydgydkyeayecyeeyeiyejyelyeryesyetyeuyevyeyygaygiyglygmygpygryguygwyhdyi\0yiayigyihyiiyijyilyimyiryisyivykaykgykiykkykmykoykrykyylaylbyleylgyliyllylryluylyymbymeymgymkymlymmymnymoympynayndyngynkynlynqynsynuyobyogyoiyokyolyomyonyotyoyyrayrbyreyrkyrmyroyrsyrwyryysdysnyspysryssysyytwytyyuayubyucyudyufyugyuiyujyulyumyunyupyuqyuryutyuwyuxyuzyvayvtywaywgywnywqywrywuywwyxayxgyxlyxmyxuyxyyyryyuza\0zaazabzaczadzaezafzagzahzajzakzamzaozapzaqzarzaszatzauzavzawzaxzayzazzbazbczbezbtzbuzbwzcazchzdjzeazegzehzenzgazgbzghzgmzgnzgrzhdzhizhnzhwzhxziazikzilzimzinziwzizzkazkbzkdzkozkpzktzkuzkzzlazljzlmzlnzlqzmazmbzmczmdzmezmfzmgzmhzmizmjzmkzmlzmmzmnzmozmpzmqzmrzmszmtzmuzmvzmwzmxzmyzmzznaznezngznkznszoczohzomzoozoqzorzoszpazpbzpczpdzpezpfzpgzphzpizpjzpkzplzpmzpnzpozppzpqzprzpszptzpuzpvzpwzpxzpyzpzzqezrnzrozrpzrszsazsrzsuzteztgztlztmztnztpztqztszttztuztxztyzuazuhzumzunzuyzygzyjzynzypzzazzj") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"LatnET\0LatnNG\0LatnNG\0LatnPG\0LatnPG\0LatnIT\0MlymIN\0LatnPG\0LatnPG\0LatnZZ\0LatnZZ\0LatnCM\0LatnBR\0ArabDZ\0LatnBR\0LatnUS\0LatnTZ\0GrekGR\0LatnZZ\0LatnPG\0LatnID\0LatnID\0CyrlGE\0LatnCI\0LatnCM\0LatnPH\0LatnPH\0LatnCA\0LatnMY\0LatnPG\0ArabTJ\0LatnZZ\0RjngID\0LatnNG\0LatnNG\0LatnNG\0LatnPH\0CyrlZZ\0LatnGH\0LatnID\0LatnZZ\0LatnCI\0ArabBH\0LatnPG\0LatnPH\0LatnZZ\0LatnID\0LatnCO\0LatnNG\0LatnZZ\0LatnID\0LatnLC\0LatnUG\0ArabIQ\0LatnCN\0LatnNG\0ArabYE\0LatnGT\0LatnBR\0LatnNL\0LatnEC\0LatnUS\0ArabSA\0ArabOM\0LatnCY\0LatnSD\0LatnGH\0LatnTL\0LatnCM\0LatnZZ\0ArabOM\0LatnAU\0LatnUG\0LatnIN\0LatnZZ\0LatnIN\0LatnID\0LatnPG\0TibtBT\0LatnGH\0LatnID\0LatnAU\0LatnNG\0LatnBR\0TibtCN\0CyrlRU\0LatnZZ\0AvstIR\0LatnAU\0ArabTN\0ArabEG\0ArabAF\0LatnNC\0LatnCM\0LatnVN\0ArabPK\0LatnAU\0LatnCN\0LatnPG\0LatnZZ\0LatnPG\0ArabKW\0LatnPG\0LatnNG\0LatnGH\0LatnPG\0LatnPG\0LatnNG\0LatnNG\0LatnPG\0LatnMX\0LatnGH\0LatnID\0LatnPE\0LatnNG\0LatnZZ\0LatnZZ\0LatnPG\0LatnID\0LatnZZ\0LatnCD\0DevaIN\0EthiET\0LatnPH\0LatnPG\0LatnZZ\0LatnPH\0LatnZZ\0LatnCM\0LatnPE\0LatnCM\0LatnPH\0LatnGT\0LatnPH\0LatnSB\0CyrlRU\0LatnPH\0LatnPH\0LatnZZ\0LatnVU\0EthiET\0LatnID\0LatnCI\0LatnMM\0LatnZZ\0LatnCI\0LatnNG\0AhomIN\0LatnCI\0DevaIN\0LatnNG\0LatnUS\0LatnSB\0ArabCN\0LatnPG\0LatnAU\0LatnPG\0LatnPG\0LatnAG\0HebrIL\0LatnNG\0LatnPG\0LatnIN\0KanaJP\0MymrIN\0LatnID\0ArabAF\0LatnID\0LatnBR\0LatnET\0LatnPG\0LatnCF\0LatnSS\0LatnZZ\0LatnNC\0LatnAU\0ArabJO\0ArabTN\0LatnNG\0LatnIN\0LatnGH\0LatnID\0LatnID\0LatnNG\0LatnGY\0LatnNG\0LatnID\0LatnPG\0LatnPG\0XsuxIQ\0LatnPH\0LatnSR\0LatnGH\0LatnPG\0LatnVU\0LatnTG\0LatnPG\0LatnCM\0CyrlRU\0LatnCG\0LatnUS\0LatnZZ\0LatnCL\0LatnCI\0LatnUS\0LatnNG\0LatnAU\0LatnZZ\0LatnPH\0LaooLA\0MlymIN\0LatnVU\0LatnXK\0LatnID\0LatnID\0LatnCA\0CyrlRU\0CyrlRU\0LatnSB\0EthiET\0LatnPG\0LatnAU\0LatnCD\0LatnBR\0LatnNG\0LatnPE\0LatnPE\0LatnET\0LatnAU\0LatnTW\0LatnTD\0LatnID\0LatnZZ\0LatnZZ\0LatnNG\0LatnZZ\0LatnID\0LatnPE\0JpanJP\0LatnPG\0LatnMX\0LatnID\0SyrcSY\0LatnAU\0LatnAU\0LatnAU\0LatnES\0LatnCO\0LatnPE\0LatnZZ\0LatnID\0LatnNC\0LatnGH\0LatnGB\0LatnPG\0CyrlRU\0LatnPG\0LatnZZ\0LatnMM\0LatnIN\0LatnNG\0LatnCO\0DevaIN\0DevaIN\0LatnCO\0LatnAU\0EthiET\0LatnCM\0LatnNG\0LatnPG\0LatnZZ\0LatnPG\0LatnST\0LatnPG\0LatnVE\0LatnPG\0LatnPG\0LatnPG\0LatnPG\0LatnAU\0LatnZZ\0LatnNC\0LatnID\0LatnZZ\0LatnPG\0LatnVU\0LatnID\0BengBD\0LatnGY\0LatnID\0LatnSB\0ArabSY\0ArabTG\0LatnZZ\0LatnPH\0LatnID\0DevaNP\0LatnBR\0LatnUS\0LatnUS\0LatnUS\0LatnUS\0LatnBR\0LatnPG\0LatnVU\0LatnZZ\0LatnZZ\0LatnIN\0LatnBR\0LatnBR\0LatnUS\0LatnID\0LatnBR\0LatnZZ\0CyrlRU\0LatnML\0LatnNG\0LatnNG\0LatnID\0LatnPH\0LatnNC\0LatnPY\0LatnBR\0ArmiIR\0LatnAU\0LatnAU\0LatnZZ\0LatnUS\0LatnBR\0LatnBR\0LatnPE\0LatnCL\0LatnBO\0LatnUS\0ArabDZ\0LatnBR\0ArabSA\0LatnBR\0LatnSR\0LatnBR\0ArabMA\0ArabEG\0LatnTZ\0LatnCA\0LatnID\0SgnwUS\0LatnZZ\0LatnPE\0LatnID\0LatnCM\0ArabAF\0LatnID\0LatnBR\0LatnZZ\0LatnCM\0LatnBR\0LatnCD\0LatnPG\0LatnID\0LatnID\0LatnZZ\0LatnCN\0LatnPE\0LatnPH\0LatnPG\0LatnZZ\0LatnCI\0LatnCA\0LatnPH\0LatnPH\0LatnPH\0ArabIR\0LatnCM\0LatnPH\0LatnID\0LatnBR\0LatnUS\0LatnPH\0LatnSS\0CyrlRU\0LatnUS\0LatnBR\0LatnVU\0LatnPH\0LatnSB\0LatnEC\0LatnSB\0LatnBJ\0LatnZM\0LatnPG\0ArabLY\0LatnPG\0LatnVU\0LatnNG\0LatnPG\0LatnNG\0LatnPG\0LatnID\0LatnPG\0LatnPF\0LatnID\0LatnID\0LatnZZ\0ArabUZ\0CyrlRU\0LatnPG\0ArabIR\0LatnCI\0Latn001ArabZZ\0LatnAU\0LatnZZ\0LatnBR\0LatnPE\0LatnZZ\0LatnZZ\0LatnBR\0DevaIN\0LatnZZ\0LatnNG\0LatnBR\0LatnAU\0LatnID\0LatnPG\0LatnAU\0LatnPG\0EthiET\0LatnZZ\0LatnID\0LatnID\0LatnBR\0LatnID\0LatnID\0LatnPG\0LatnZZ\0LatnID\0LatnAR\0LatnAU\0LatnBR\0LatnCF\0LatnAU\0ArmnAM\0LatnNC\0LatnBO\0LatnPG\0LatnZZ\0LatnPE\0LatnAU\0LatnNG\0LatnTG\0ArabYE\0LatnNG\0LatnNG\0ArabLY\0ArabYE\0LatnPY\0ArabIQ\0LatnPG\0LatnPH\0LatnPH\0LatnNG\0LatnID\0ArabIR\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnCM\0LatnPH\0LatnMX\0CyrlRU\0LatnSB\0LatnGW\0LatnID\0LatnVE\0LatnCM\0LatnCM\0LatnBS\0LatnID\0ArabPK\0LatnID\0LatnCO\0DevaNP\0LatnAT\0LatnCM\0LatnNG\0LatnZZ\0LatnCM\0BamuCM\0LatnID\0LatnZZ\0LatnZZ\0LatnID\0LatnZZ\0LatnCD\0LatnPG\0LatnGA\0LatnCM\0LatnCM\0LatnCM\0GeorGE\0LatnCD\0LatnPG\0LatnBF\0LatnZZ\0LatnCM\0LatnZZ\0LatnNG\0LatnNG\0LatnNG\0LatnPG\0LatnCM\0LatnCM\0LatnCM\0LatnCN\0LatnSN\0LatnID\0LatnCM\0LatnZZ\0LatnGN\0LatnZZ\0LatnCI\0LatnAU\0LatnAU\0LatnZZ\0LatnZZ\0LatnZZ\0LatnCD\0EthiZZ\0LatnCA\0LatnNG\0LatnCD\0LatnZZ\0LatnNG\0LatnCM\0LatnNG\0LatnSN\0LatnSN\0LatnID\0LatnCO\0LatnZZ\0LatnNG\0LatnPG\0LatnMY\0LatnSS\0LatnSD\0LatnSS\0LatnAZ\0LatnID\0LatnTD\0LatnCM\0LatnTD\0LatnTZ\0LatnVN\0LatnMY\0LatnTZ\0LatnCF\0LatnCM\0OryaIN\0LatnID\0LatnID\0LatnAU\0ArabPK\0LatnCA\0LatnCM\0LatnCM\0LatnID\0DevaIN\0LatnZZ\0LatnZZ\0LatnID\0ArabSD\0LatnPG\0LatnZM\0LatnPG\0LatnID\0LatnCG\0LatnTD\0LatnZZ\0LatnID\0LatnCI\0LatnID\0LatnZZ\0LatnPG\0LatnTZ\0LatnSS\0DevaIN\0LatnCN\0LatnCM\0LatnID\0LatnCF\0LatnID\0LatnPG\0LatnCM\0LatnCF\0LatnCM\0LatnTL\0LatnBF\0LatnCM\0TamlIN\0LatnCN\0ArabPK\0TibtIN\0OryaIN\0LatnPH\0DevaIN\0DevaIN\0LatnNG\0LatnID\0DevaIN\0LatnCM\0LatnIN\0LatnPH\0LatnCM\0ArabPK\0LatnGN\0ArabPK\0DevaIN\0LatnIN\0LatnPH\0LatnSB\0LatnNG\0LatnID\0DevaIN\0GrekTR\0LatnID\0LatnID\0DevaIN\0DevaIN\0LatnID\0DevaIN\0ArabPK\0LatnPG\0LatnZZ\0CyrlIL\0DevaIN\0DevaNP\0LatnZZ\0ArabOM\0SyrcGE\0LatnID\0LatnID\0LatnMG\0LatnCM\0TakrIN\0DevaIN\0LatnID\0LatnID\0LatnZZ\0LatnID\0LatnVU\0LatnAU\0LatnZZ\0LatnTD\0LatnPG\0LatnGW\0LatnZZ\0LatnPH\0LatnNG\0LatnZZ\0LatnNG\0LatnZZ\0LatnCD\0LatnZZ\0LatnPG\0LatnPG\0LatnIN\0LatnGH\0LatnCM\0DevaIN\0LatnCD\0LatnCD\0LatnAU\0LatnPG\0SyrcIL\0LatnGW\0LatnZZ\0EthiZZ\0DevaIN\0LatnPG\0LatnPG\0ArabIQ\0LatnID\0LatnZZ\0LatnPG\0LatnZZ\0LatnBB\0LatnSN\0LatnCM\0LatnTD\0LatnCI\0LatnPH\0LatnAU\0LatnZZ\0LatnNG\0LatnZZ\0LatnPH\0LatnCD\0LatnCF\0LatnCM\0LatnVU\0LatnCF\0LatnID\0LatnCM\0LatnID\0LatnCM\0LatnCD\0LatnZZ\0LatnID\0LatnPH\0LatnCD\0LatnPH\0LatnZZ\0LatnCG\0LatnTL\0LatnNG\0LatnID\0LatnCA\0LatnSB\0LatnCA\0LatnID\0LatnGW\0LatnID\0LatnMY\0LatnLR\0LatnCD\0LatnID\0MymrMM\0LatnSS\0LatnPH\0LatnBJ\0LatnSB\0LatnPG\0LatnCN\0LatnID\0TavtVN\0LatnAO\0LatnPH\0LatnPH\0LatnBJ\0LatnID\0LatnML\0LatnNG\0LatnCD\0LatnPG\0LatnGN\0LatnCF\0LatnSL\0LatnCD\0LatnZZ\0LatnTD\0DevaNP\0LatnZZ\0LatnCD\0LatnMG\0LatnPG\0LatnCM\0LatnPG\0LatnML\0LatnCO\0LatnNE\0LatnZZ\0LatnCM\0LatnCG\0LatnPG\0LatnPG\0LatnID\0LatnMY\0LatnPH\0LatnID\0LatnID\0LatnID\0LatnZZ\0LatnCD\0LatnPH\0LatnVU\0LatnZZ\0LatnTW\0LatnPH\0LatnZZ\0LatnID\0LatnVU\0DevaIN\0LatnID\0LatnID\0LatnPG\0LatnCD\0LatnMY\0LatnCM\0TibtCN\0LatnPE\0LatnKE\0LatnCM\0LatnBF\0LatnCD\0LatnZZ\0LatnCG\0LatnNG\0LatnZZ\0LatnZZ\0LatnML\0LatnPG\0LatnPG\0LatnBR\0LatnSS\0LatnTZ\0LatnGH\0LatnPG\0LatnBF\0LatnCF\0LatnML\0LatnVU\0LatnCM\0LatnCF\0LatnPG\0LatnID\0CyrlRU\0LatnPG\0LatnCD\0LatnNC\0LatnAU\0LatnPG\0LatnID\0LatnID\0LatnID\0LatnPH\0LatnPH\0LatnAU\0LatnPG\0LatnID\0LatnPG\0DevaIN\0BengIN\0LatnID\0LatnBJ\0LatnID\0LatnZZ\0LatnCM\0LatnGN\0LatnTG\0ArabIR\0LatnSN\0LatnCF\0LatnPG\0LatnCM\0LatnCM\0LatnZZ\0LatnID\0LatnID\0LatnPG\0LatnCM\0LatnCD\0LatnCI\0LatnNG\0LatnNG\0LatnCM\0DevaIN\0KhmrKH\0LatnGY\0DevaNP\0LatnCD\0LatnBO\0ArabPK\0LatnCM\0LatnVU\0ArabSD\0LatnBW\0LatnCD\0LatnCR\0LatnID\0LatnPG\0LatnSB\0LatnID\0LatnNG\0LatnVN\0LaooLA\0LatnPG\0LatnZZ\0LatnID\0LatnBN\0LatnSN\0LatnCM\0LatnNG\0ArabAF\0LatnCM\0LatnZZ\0ArabPK\0LatnNG\0LatnID\0LatnCO\0LatnTD\0LatnGN\0BassLR\0LatnNG\0LatnCM\0EthiZZ\0LatnID\0LatnGN\0LatnET\0LatnNG\0LatnMY\0LatnNG\0LatnCM\0BatkID\0LatnNG\0LatnTD\0LatnCI\0LatnMY\0LatnID\0LatnID\0BatkID\0LatnPH\0LatnPH\0LatnPG\0LatnMY\0LatnVU\0LatnID\0LatnZZ\0LatnNG\0DevaPK\0LatnPH\0LatnID\0LatnID\0LatnID\0CyrlRU\0LatnTD\0LatnYT\0LatnZZ\0LatnCA\0LatnCD\0LatnID\0LatnCN\0LatnCG\0LatnNG\0LatnZZ\0LatnCM\0LatnSL\0LatnZZ\0LatnID\0LatnPG\0LatnZZ\0LatnPG\0LatnZZ\0LatnPG\0LatnGA\0LatnNG\0LatnSL\0LatnNG\0LatnTD\0LatnGQ\0LatnSB\0LatnSB\0LatnID\0LatnTD\0LatnCM\0LatnNG\0LatnSS\0LatnNG\0LatnID\0LatnCM\0LatnPG\0LatnTD\0LatnCF\0LatnAU\0LatnID\0LatnID\0LatnVE\0LatnNG\0LatnCG\0LatnPH\0LatnID\0LatnNC\0LatnFJ\0LatnZM\0LatnZZ\0MymrMM\0LatnPG\0LatnMZ\0LatnCM\0LatnVE\0LatnBF\0LatnPG\0LatnCD\0LatnPG\0LatnET\0LatnID\0LatnBF\0LatnZZ\0LatnCD\0LatnCM\0LatnGH\0LatnCD\0LatnCN\0LatnBF\0LatnCG\0LatnSB\0LatnSS\0LatnGQ\0LatnPG\0LatnCD\0LatnZZ\0LatnAU\0LatnAU\0LatnBF\0CyrlMN\0LatnAU\0LatnNG\0LatnCM\0LatnNG\0LatnCM\0MongCN\0LatnTD\0LatnML\0LatnPG\0LatnPH\0LatnCM\0LatnNG\0LatnID\0LatnZZ\0LatnNG\0DevaNP\0LatnCD\0LatnNG\0LatnCN\0LatnID\0LatnAU\0EthiER\0LatnNG\0LatnZZ\0LatnZZ\0LatnCM\0DevaNP\0LatnZZ\0LatnPG\0LatnZZ\0LatnID\0LatnMG\0LatnCR\0LatnML\0LatnZZ\0LatnZZ\0ThaiTH\0LatnBZ\0LatnNI\0LatnID\0LatnCD\0LatnID\0LatnCD\0LatnID\0LatnID\0LatnAU\0Latn001LatnID\0LatnCM\0LatnZZ\0LatnML\0LatnNG\0LatnNG\0LatnGT\0LatnHN\0LatnGT\0LatnUS\0LatnSN\0LatnCA\0LatnPY\0LatnPE\0LatnAR\0LatnGT\0LatnMP\0LatnNC\0LatnZZ\0LatnBO\0LatnBO\0LatnIN\0LatnVE\0LatnBO\0LatnBO\0LatnBO\0LatnBO\0LatnCA\0LatnBO\0LatnCO\0LatnCO\0LatnCO\0LatnCO\0LatnEC\0LatnZZ\0LatnPH\0LatnMM\0ThaiTH\0LatnNG\0LatnNG\0LatnPE\0LatnPE\0LatnPE\0LatnPE\0LatnCO\0LatnPH\0LatnCO\0LatnPE\0LatnBR\0LatnMZ\0LatnNG\0LatnNG\0LatnGW\0LatnTZ\0LatnMY\0LatnMX\0CakmBD\0LatnSV\0TeluIN\0LatnIN\0DevaIN\0GujrIN\0DevaIN\0DevaNP\0HansCN\0LatnNG\0BengIN\0CyrlRU\0LatnUS\0LatnPY\0LatnMM\0LatnNG\0LatnNG\0LatnMM\0LatnZZ\0LatnNG\0LatnNG\0LatnMM\0LatnPG\0LatnPH\0LatnUG\0TibtBT\0LatnGU\0LatnCO\0LatnMX\0LatnMX\0ArabTM\0LatnUS\0LatnMX\0LatnFM\0LatnUS\0CyrlRU\0LatnUS\0LatnUS\0LatnCA\0LatnMX\0LatnPE\0LatnMZ\0DevaNP\0LatnUS\0LatnMX\0LatnID\0LatnBJ\0LatnUS\0LatnNG\0DevaIN\0LatnIT\0LatnBR\0LatnMX\0LatnNC\0LatnUS\0LatnVE\0ArabKH\0LatnVN\0LatnUS\0CyrlRU\0LatnAO\0ChamVN\0LatnPG\0LatnPE\0LatnCR\0LatnRU\0LatnZZ\0HansCN\0ArabIQ\0LatnZZ\0LatnHR\0LatnMM\0LatnZZ\0LatnTD\0LatnPG\0LatnNC\0CyrlRU\0LatnUS\0LatnTW\0LatnCM\0LatnZZ\0LatnGT\0LatnZZ\0LatnCA\0LatnMX\0ArabPK\0LatnGH\0LatnMM\0LatnIN\0LatnGH\0LatnUS\0LatnMX\0LatnMM\0LatnPH\0CyrlRU\0LatnMX\0LatnVN\0LatnZZ\0SoyoMN\0LatnCO\0LatnID\0LatnVN\0LatnMM\0LatnIT\0LatnZA\0TibtIN\0LatnMM\0LatnVN\0LatnCN\0LatnMM\0LatnPE\0LatnMM\0LatnMX\0HansCN\0LatnCM\0LatnID\0LatnMX\0LatnMM\0LatnGB\0LatnFR\0LatnAU\0LatnMX\0LatnMX\0LatnPE\0LatnCO\0LatnEC\0ThaiTH\0LatnKE\0LatnMX\0LatnMX\0LatnUS\0LatnUS\0LatnCA\0CoptEG\0LatnUS\0LatnPE\0LatnSN\0LatnPE\0LatnMX\0LatnMX\0LatnPE\0LatnPE\0GrekGR\0LatnNR\0LatnGH\0LatnBF\0LatnPH\0LatnPE\0LatnCN\0LatnPE\0LatnCN\0CansCA\0LatnVC\0LatnVU\0LatnUS\0LatnCO\0LatnCA\0CyrlUA\0LatnST\0CansCA\0CansCA\0CansCA\0CansCA\0LatnMX\0LatnUS\0LatnAR\0LatnSC\0LatnAR\0LatnIN\0LatnVN\0LatnCA\0LatnNG\0LatnUS\0LatnMX\0LatnPL\0MymrMM\0LatnMM\0LatnSN\0LatnUS\0LatnMX\0HansCN\0LatnUS\0LatnUS\0LatnMM\0CansCA\0LatnMM\0LatnUS\0LatnMX\0LatnUS\0PaucMM\0LatnMX\0BengBD\0LatnMM\0LatnMX\0LatnUS\0DevaNP\0LatnCO\0LatnMX\0LatnPH\0TamlIN\0LatnMX\0LatnMX\0CyrlRU\0LatnVN\0LatnCO\0LatnMX\0LatnKE\0LatnCO\0LatnPE\0LatnPA\0LatnBR\0LatnVE\0LatnUS\0LatnMX\0LanaCN\0LatnCM\0LatnMX\0LatnIN\0LatnMX\0LatnTZ\0LatnMZ\0LatnTZ\0LatnMY\0LatnSN\0LatnMX\0LatnBO\0LatnPH\0HansCN\0HebrCZ\0LatnMX\0LatnMM\0LatnTD\0LatnPG\0LatnZZ\0LatnCM\0LatnCI\0LatnZZ\0LatnZZ\0LatnTD\0LatnSD\0LatnUS\0LatnKE\0LatnNG\0LatnMM\0DevaIN\0CyrlRU\0LatnCI\0LatnTD\0LatnKE\0LatnPH\0LatnAU\0LatnID\0LatnML\0LatnNG\0LatnZZ\0LatnID\0LatnID\0LatnML\0LatnNG\0LatnMY\0LatnAU\0LatnNG\0LatnID\0LatnNG\0LatnNG\0LatnZZ\0LatnML\0LatnML\0LatnNG\0LatnML\0LatnPG\0ArabIN\0LatnVI\0LatnAU\0LatnSS\0LatnCG\0LatnTL\0LatnPG\0LatnAU\0LatnZZ\0CyrlRU\0LatnAU\0LatnML\0LatnID\0LatnSD\0LatnZZ\0LatnLR\0ArabIR\0LatnNG\0ArabPK\0LatnID\0LatnCM\0LatnUS\0LatnID\0LatnCA\0LatnCF\0BengIN\0LatnBR\0LatnPG\0LatnCD\0LatnZZ\0LatnML\0LatnPH\0LatnBF\0LatnPG\0LatnPG\0LatnZZ\0LatnZZ\0LatnCF\0ArabZZ\0LatnAU\0LatnCA\0LatnBF\0LatnAU\0LatnAU\0LatnPG\0LatnZZ\0LatnAU\0DevaNP\0LatnAU\0LatnAO\0GujrIN\0DevaIN\0LatnAU\0LatnTZ\0LatnAU\0LatnNC\0DevaNP\0LatnAU\0LatnZZ\0LatnSS\0LatnCI\0LatnSS\0LatnAU\0LatnKE\0LatnMX\0LatnCM\0LatnID\0LatnSD\0LatnSS\0LatnNG\0LatnSS\0LatnNG\0LatnIN\0LatnNA\0LatnSS\0LatnVU\0LatnID\0LatnCD\0LatnAU\0LatnAU\0LatnTD\0LatnAU\0LatnNE\0LatnAU\0LatnAU\0LatnAU\0LatnSR\0LatnML\0LatnAU\0LatnID\0LatnAU\0LatnPG\0LatnAU\0TibtBT\0LatnNG\0LatnID\0LatnMY\0LatnSS\0LatnCM\0CyrlRU\0LatnHR\0LatnIN\0LatnGA\0LatnML\0LatnPG\0LatnAU\0LatnCM\0MedfNG\0LatnMY\0ArabPK\0ArabPK\0LatnCM\0LatnCM\0LatnID\0LatnID\0LatnID\0LatnMY\0LatnAU\0LatnMZ\0LatnID\0LatnID\0LatnPG\0LatnTZ\0CyrlKG\0LatnID\0LatnCI\0LatnID\0LatnBF\0LatnCD\0LatnPG\0LatnID\0MymrMM\0MymrMM\0LatnID\0LatnBR\0LatnPG\0LatnZZ\0LatnCN\0LatnTZ\0LatnPG\0LatnNG\0LatnID\0LatnPG\0LatnPG\0LatnCD\0LatnZZ\0LatnSB\0LatnBF\0LatnNG\0LatnZW\0LatnZZ\0EthiET\0LatnGH\0LatnMY\0LatnPT\0TibtNP\0LatnMY\0MongCN\0LatnZZ\0LatnAU\0LatnID\0LatnMY\0DevaNP\0EthiZZ\0LatnNL\0LatnTW\0DevaNP\0LatnKE\0LatnTD\0LatnID\0OryaIN\0LatnML\0LatnCN\0LatnMY\0LatnCA\0LatnAU\0LatnML\0LatnML\0LatnML\0LatnML\0LatnMY\0LatnMY\0LatnZZ\0LatnML\0LatnML\0DevaNP\0LatnCM\0GujrIN\0LatnZZ\0LatnZZ\0LatnPH\0LatnNC\0LatnZZ\0DevaIN\0LatnPG\0LatnPG\0LatnPH\0LatnNL\0LatnID\0LatnPH\0LatnID\0LatnID\0LatnCM\0DevaNP\0LatnCN\0LatnID\0LatnID\0LatnML\0LatnPH\0LatnCM\0ThaaMV\0LatnZZ\0LatnNG\0OryaIN\0LatnET\0Latn001LatnAU\0LatnZZ\0LatnAU\0DevaNP\0LatnBF\0LatnAU\0LatnAU\0LatnPH\0LatnCI\0LatnML\0LatnAU\0LatnSN\0LatnBF\0LatnAU\0TibtBT\0LatnNG\0LatnAU\0LatnZZ\0TibtBT\0LatnCD\0LatnAU\0LatnID\0LatnNG\0LatnPH\0LatnCG\0LatnCI\0LatnKE\0GrekGR\0CprtCY\0LatnGH\0LatnNG\0LatnCD\0LatnNG\0LatnCI\0LatnIT\0LatnTZ\0LatnNG\0EgypEG\0LatnNG\0LatnID\0LatnPG\0LatnPG\0LatnGW\0LatnZZ\0LatnNG\0LatnID\0LatnNG\0LatnBD\0LatnCM\0LatnMZ\0LatnNG\0LatnNG\0KaliMM\0LatnPG\0LatnPG\0LatnNG\0LatnKE\0LatnPG\0LatnZZ\0LatnID\0LatnGF\0DevaNP\0LatnZZ\0LatnMX\0LatnCM\0LatnPA\0LatnUS\0DevaIN\0LatnID\0LatnFR\0LatnCM\0LatnPG\0LatnKE\0LatnVN\0LatnID\0CyrlRU\0CyrlRU\0LatnPY\0LatnGB\0LatnZZ\0LatnID\0LatnZZ\0LatnID\0LatnNG\0LatnNG\0LatnPY\0Latn001LatnCI\0LatnNG\0TamlIN\0LatnVU\0LatnNG\0LatnZZ\0LatnVU\0LatnAU\0LatnID\0LatnID\0LatnBO\0GonmIN\0ArabIR\0LatnUS\0LatnCI\0LatnUS\0LatnUS\0LatnPH\0LatnNG\0LatnVU\0LatnCM\0LatnZZ\0LatnNG\0ItalIT\0LatnZZ\0LatnZZ\0LatnID\0CyrlRU\0LatnNG\0CyrlRU\0LatnCM\0LatnES\0LatnUS\0LatnKE\0LatnZZ\0LatnNG\0LatnZZ\0LatnZZ\0LatnPG\0LatnSB\0LatnZZ\0LatnNG\0LatnZZ\0LatnPG\0LatnCM\0LatnCM\0LatnNG\0LatnGQ\0LatnSN\0LatnSB\0LatnID\0LatnES\0ArabIR\0ArabIR\0LatnPH\0LatnSS\0LatnZZ\0LatnML\0LatnTD\0ArabSD\0LatnNG\0LatnSA\0LatnTZ\0LatnNG\0LatnSE\0LatnPG\0LatnFJ\0LatnNG\0LatnNO\0LatnUS\0LatnID\0LatnNG\0LatnCM\0LatnAU\0LatnZZ\0LatnZA\0LatnZZ\0DevaIN\0LatnVU\0LatnZA\0LatnTD\0LatnZZ\0LatnPG\0LatnCD\0LatnBJ\0LatnZZ\0LatnTW\0LatnZZ\0LatnZZ\0LatnUS\0LatnID\0LatnDE\0LatnFR\0LatnFR\0LatnFR\0LatnPG\0LatnDE\0LatnDE\0LatnVU\0ArabCM\0LatnWF\0LatnZZ\0LatnGN\0LatnZZ\0LatnTD\0LatnNG\0LatnBR\0LatnNE\0LatnIT\0LatnVU\0LatnCD\0LatnNG\0LatnZZ\0LatnSD\0LatnNC\0LatnNA\0LatnNL\0LatnGH\0LatnTD\0LatnIN\0LatnPH\0LatnVE\0LatnZZ\0LatnMD\0LatnZZ\0LatnPG\0LatnZZ\0LatnID\0LatnTL\0LatnZZ\0HansCN\0LatnPG\0LatnPG\0OryaIN\0LatnPG\0GujrIN\0LatnPG\0TeluIN\0LatnZZ\0LatnET\0LatnID\0LatnZZ\0LatnAU\0LatnAU\0LatnPG\0LatnZZ\0LatnCF\0LatnBJ\0LatnID\0OryaIN\0DevaIN\0GujrIN\0DevaIN\0LatnSS\0LatnCF\0LatnCF\0LatnNG\0LatnBJ\0LatnAU\0LatnCF\0LatnAU\0LatnBJ\0LatnZZ\0ArabIR\0LatnPG\0LatnAU\0LatnGP\0LatnGD\0LatnPG\0LatnGF\0LatnVE\0OryaIN\0LatnAU\0LatnPG\0LatnZZ\0LatnNG\0LatnPH\0LatnAU\0LatnCF\0LatnAU\0LatnTD\0LatnET\0LatnTD\0LatnZZ\0CyrlRU\0LatnYE\0LatnZZ\0LatnAU\0LatnNG\0DevaIN\0LatnNG\0LatnZZ\0LatnLR\0LatnNG\0LatnID\0LatnNG\0LatnCA\0LatnID\0LatnZZ\0LatnNG\0LatnZZ\0LatnCF\0LatnID\0LatnGA\0LatnNG\0LatnSO\0LatnCD\0EthiET\0LatnZZ\0LatnSB\0LatnLR\0LatnAU\0LatnAU\0ArabPK\0LatnAU\0LatnPG\0DevaNP\0LatnPG\0LatnCI\0LatnPG\0ArabLY\0LatnGB\0DevaNP\0LatnMM\0LatnSB\0ArabPK\0LatnZZ\0TibtNP\0LatnAU\0LatnNG\0LatnZA\0LatnCM\0LatnCI\0ArabPK\0LatnAU\0LatnKI\0LatnZZ\0CyrlRU\0LatnPG\0LatnVN\0LatnVN\0LatnCM\0LatnCA\0LatnCD\0LatnAU\0LatnCM\0ArabPK\0LatnAU\0LatnZZ\0LatnAU\0ArabPK\0LatnPG\0LatnPG\0LatnCM\0LatnZZ\0LatnAU\0LatnZZ\0LatnZA\0LatnNG\0LatnTD\0CyrlRU\0ArabAF\0LatnTD\0ArabIR\0LatnAU\0LatnNG\0LatnLR\0LatnTD\0LatnNG\0LatnAU\0LatnSB\0LatnNG\0LatnPG\0LatnDE\0LatnZZ\0LatnCM\0LatnAU\0LatnPG\0EthiZZ\0LatnTZ\0LinbGR\0LatnNG\0LatnPY\0LatnBF\0LatnIN\0LatnES\0LatnZZ\0LatnNG\0LatnZZ\0LatnNG\0LatnAU\0LatnCI\0LatnBW\0LatnAU\0LatnPG\0LatnAU\0LatnMY\0LatnAU\0LatnPG\0LatnPG\0LatnBO\0LatnCF\0LatnCI\0LatnCO\0LatnPG\0LatnZZ\0TibtBT\0EthiZZ\0LatnTZ\0LatnDE\0LatnZZ\0DevaIN\0LatnLR\0DevaIN\0TeluIN\0LatnFJ\0LatnID\0LatnID\0LatnID\0LatnNL\0GothUA\0LatnCM\0LatnCI\0LatnTZ\0LatnCD\0LatnTD\0LatnNG\0LatnGH\0LatnPG\0LatnNG\0LatnBR\0LatnTD\0DevaIN\0LatnZZ\0CprtCY\0LatnNG\0LatnPG\0LatnNG\0LatnSB\0LatnLR\0LatnMY\0LatnPG\0LatnID\0BengIN\0EthiET\0LatnLR\0LatnZZ\0LatnPG\0LatnLR\0LatnPG\0LatnSN\0LatnPG\0LatnCF\0LatnPG\0LatnCH\0LatnBR\0LatnAU\0LatnNG\0LatnBR\0LatnCO\0LatnZZ\0LatnAU\0LatnAU\0LatnCO\0LatnBO\0LatnET\0LatnUS\0LatnCO\0LatnBR\0LatnCO\0LatnAU\0LatnPY\0LatnGH\0LatnCR\0LatnVE\0LatnZZ\0LatnZZ\0LatnKE\0LatnIM\0LatnPY\0LatnBR\0LatnPG\0LatnZZ\0LatnBR\0LatnTD\0LatnNG\0LatnAU\0LatnBR\0LatnBR\0DevaNP\0LatnZZ\0LatnAU\0LatnCI\0LatnNG\0ArabZZ\0LatnET\0LatnTZ\0ArabPK\0LatnNG\0LatnCA\0LatnBW\0LatnAU\0LatnNG\0LatnUG\0ArabZZ\0LatnAU\0LatnAU\0LatnGH\0LatnCI\0LatnPG\0LatnAU\0LatnNG\0LatnAU\0LatnCF\0LatnZZ\0LatnET\0LatnPA\0LatnGY\0DevaNP\0LatnBO\0LatnAU\0LatnNG\0LatnSD\0ArabIR\0LatnID\0LatnUS\0ArabIR\0LatnID\0LatnET\0LatnZZ\0LatnPG\0LatnCA\0LatnIN\0HansCN\0LatnVN\0LatnZZ\0LatnTZ\0LatnPG\0LatnID\0LatnTZ\0EthiET\0LatnCA\0LatnCD\0LatnUS\0LatnCA\0LatnTZ\0ArabAF\0LatnCD\0LatnZZ\0LatnSD\0HebrIL\0LatnTL\0LatnMX\0EthiZZ\0LatnTD\0LatnID\0LatnTZ\0LatnCA\0LatnCD\0LatnNA\0LatnPG\0LatnPG\0LatnSN\0LatnZZ\0LatnZZ\0LatnPE\0LatnUS\0LatnFJ\0LatnZZ\0LatnZZ\0TakrIN\0LatnCM\0LatnID\0LatnPH\0LatnBW\0LatnBR\0XsuxTR\0LatnVU\0LatnBR\0LatnID\0LatnTZ\0LatnCD\0ArabIN\0LatnPG\0LatnZZ\0DevaIN\0LatnVN\0LatnMM\0HluwTR\0LatnCN\0LatnML\0PlrdCN\0LatnVN\0BopoCN\0LatnCN\0LatnCN\0LatnCN\0BopoCN\0LatnIN\0LatnCN\0LatnZZ\0LatnID\0LatnVN\0LatnCN\0LatnCN\0LatnCN\0LatnCM\0ArabPK\0DevaIN\0LatnAO\0LatnBW\0LatnCN\0HmnpUS\0LatnPH\0ArabPK\0LatnSR\0LatnPG\0LatnSB\0LatnPG\0DevaIN\0LatnNG\0LatnNG\0ArabOM\0LatnUS\0DevaIN\0LatnAO\0LatnSS\0LatnCD\0LatnUS\0LatnTD\0LatnZZ\0LatnID\0HaniCN\0DevaIN\0MymrMM\0LatnIN\0LatnPG\0LatnVN\0LatnID\0LatnCN\0LatnVN\0LatnAU\0SyrcTR\0LatnIN\0LatnPG\0LatnBR\0ArabIR\0HansCN\0ArabOM\0LatnHT\0LatnID\0LatnCO\0LatnTZ\0LatnID\0XsuxTR\0LatnPE\0LatnBW\0LatnID\0LatnMX\0LatnPG\0LatnPE\0LatnCL\0LatnZZ\0LatnID\0LatnPG\0LatnCD\0LatnUS\0LatnCA\0LatnMX\0DevaNP\0LatnPE\0LatnMX\0LatnID\0LatnPE\0HebrIL\0CyrlRU\0LatnHT\0LatnMX\0LatnNC\0LatnID\0LatnMX\0LatnCI\0LatnUS\0LatnNG\0LatnCM\0ArmnAM\0LatnNA\0LatnNC\0LatnZZ\0LatnZZ\0LatnMY\0LatnNG\0LatnAU\0LatnNG\0LatnPH\0LatnVN\0LatnPH\0LatnNG\0LatnNG\0LatnNG\0LatnID\0LatnZZ\0LatnZZ\0LatnZZ\0LatnCO\0LatnKE\0LatnIN\0LatnNG\0LatnZZ\0LatnNG\0LatnZZ\0LatnSS\0LatnNG\0LatnTL\0LatnZZ\0Latn001LatnPH\0LatnPH\0LatnTG\0LatnVU\0LatnPH\0LatnCG\0LatnPH\0LatnPH\0LatnZZ\0LatnZZ\0LatnPG\0LatnNG\0LatnPG\0LatnBO\0LatnPG\0Latn001LatnNG\0LatnID\0LatnNG\0LatnID\0LatnAU\0YiiiCN\0LatnAU\0LatnNG\0LatnNG\0LatnZZ\0LatnNG\0LatnNG\0LatnUS\0LatnNG\0LatnZZ\0LatnNG\0LatnNG\0LatnNG\0LatnAU\0LatnCA\0LatnNG\0LatnZZ\0LatnZZ\0LatnTZ\0LatnID\0LatnZM\0LatnAU\0LatnCN\0LatnPH\0LatnMY\0LatnPH\0LatnPH\0LatnID\0LatnNG\0LatnPG\0LatnUS\0LatnPG\0LatnZZ\0LatnID\0LatnIT\0LatnSS\0LyciTR\0LatnID\0LatnCO\0LatnUS\0CyrlRU\0LatnCO\0LatnPH\0LatnPG\0LatnPE\0MymrMM\0Latn001EthiET\0LatnZZ\0LatnUS\0LatnPG\0LatnPG\0LatnPE\0LatnNG\0LatnID\0LatnID\0LatnZZ\0LatnTZ\0LatnBR\0TamlIN\0LatnID\0LatnPH\0LatnPG\0LatnPE\0LatnPH\0LatnNG\0LatnNG\0ArabAF\0LatnID\0LatnTZ\0LatnNG\0LatnHR\0LatnCM\0LatnPH\0LatnID\0LatnBO\0LatnPH\0HebrIT\0CyrlRU\0LatnNG\0LatnBO\0LatnPG\0LatnNG\0LatnPH\0LatnPH\0LatnNG\0LatnID\0LatnPH\0LatnGT\0CansCA\0LatnCN\0LatnPH\0LatnPH\0HebrIL\0LatnPH\0LatnZZ\0LatnID\0LatnZZ\0LatnMX\0LatnGT\0LatnNG\0LatnCM\0LatnCG\0LatnRU\0LatnZZ\0LatnNG\0LatnNG\0LatnBR\0LatnZZ\0LatnGT\0ArabGN\0LatnPG\0LatnNG\0LatnMY\0LatnSB\0LatnMY\0LatnID\0LatnJM\0LatnAU\0LatnAU\0LatnID\0LatnZZ\0LatnNC\0ArabAF\0LatnID\0LatnID\0LatnAU\0LatnNC\0HebrIL\0LatnAU\0LatnID\0LatnPG\0LatnNG\0ArabLY\0Latn001LatnID\0LatnBR\0LatnZZ\0LatnAU\0CyrlUA\0TibtIN\0ArabPK\0CyrlRU\0LatnPE\0DevaNP\0LatnVN\0LatnID\0LatnCI\0LatnID\0LatnZZ\0LatnNG\0LatnPG\0LatnTD\0LatnCD\0GeorGE\0LatnZZ\0LatnCM\0LatnMY\0HebrUA\0LatnCM\0LatnZZ\0LatnHN\0LatnNG\0LatnNG\0LatnAU\0LatnPG\0LatnCM\0LatnTZ\0LatnCN\0LatnEC\0LatnCN\0HangKR\0LatnNG\0LatnID\0MymrMM\0LatnPG\0LatnNG\0LatnSD\0LatnPG\0LatnNG\0LatnTZ\0LatnID\0LatnNG\0DevaNP\0LatnMM\0LatnGH\0LatnNG\0LatnPG\0LatnMX\0TakrIN\0ArabPK\0LatnAU\0LatnNG\0LatnET\0DevaIN\0DevaIN\0LatnCD\0LatnCI\0ArabPK\0LatnBO\0LatnML\0HebrPS\0HebrIL\0LatnPE\0LatnZZ\0LatnNG\0LatnNG\0LatnVE\0LatnBR\0LatnNG\0LatnCI\0LatnNG\0LatnAU\0LatnNG\0DevaNP\0LatnSD\0OryaIN\0LatnNG\0LatnBR\0LatnBR\0LatnDK\0LatnNG\0LatnNG\0OryaIN\0LatnID\0LatnSR\0LatnID\0LatnGH\0TibtCN\0HebrIL\0LatnTD\0CyrlUZ\0LatnDZ\0LatnMM\0LatnZZ\0LatnMY\0LatnCF\0LatnZZ\0LatnNG\0LatnPH\0LatnKE\0LatnML\0CyrlRU\0LatnPE\0LatnBR\0KawiID\0LatnID\0LatnBR\0LatnAU\0LatnBR\0LatnBR\0CyrlRU\0LatnAU\0LatnCO\0LatnID\0LatnCD\0LatnPG\0LatnTD\0LatnZZ\0LatnCF\0LatnSS\0LatnZZ\0LatnZZ\0LatnET\0LatnGA\0LatnPG\0ArabPK\0LatnID\0LatnPG\0LatnZZ\0ArabNE\0LatnNG\0CyrlRU\0LatnPG\0LatnNG\0LatnID\0LatnNG\0LatnNG\0LatnNG\0LatnNG\0LatnNG\0LatnGW\0LatnZW\0LatnZZ\0LatnCF\0LatnUG\0LatnPG\0LatnSD\0LatnNG\0LatnNG\0LatnZZ\0LatnTZ\0LatnCD\0LatnCD\0LatnTZ\0LatnAU\0LatnTZ\0LatnAU\0LatnTZ\0LatnPG\0LatnCD\0LatnTG\0LatnUG\0LatnUG\0LatnNC\0LatnZZ\0LatnNG\0LatnZW\0LatnNG\0BengIN\0LatnLT\0ThaiTH\0LatnID\0LatnNG\0LatnID\0LatnCM\0LatnGA\0LatnSD\0LatnTZ\0LatnUS\0LatnTG\0LatnSD\0LatnPG\0LatnID\0LatnGT\0LatnCD\0LatnTL\0LatnCM\0LatnUG\0LatnTD\0LatnNG\0CyrlRU\0LatnTG\0LatnPG\0DevaIN\0TeluIN\0LatnZZ\0KndaIN\0DevaIN\0TeluIN\0KndaIN\0TamlIN\0LatnIN\0MlymIN\0TamlIN\0DevaIN\0LatnCM\0ArabIR\0LatnCM\0LatnCI\0DevaIN\0DevaIN\0DevaIN\0DevaIN\0LatnIN\0LatnIN\0DevaIN\0DevaIN\0LatnBF\0LatnCD\0LatnCI\0LatnID\0LatnID\0LatnZZ\0DevaNP\0LatnBR\0LatnAU\0LatnBR\0LatnSD\0LatnID\0LatnID\0LatnAU\0LatnNG\0LatnPG\0LatnID\0LatnID\0LatnID\0DevaNP\0LatnIN\0TaluCN\0LatnID\0LatnID\0LatnID\0ThaiLA\0TibtCN\0LatnID\0LatnNG\0LatnPG\0DevaIN\0LatnID\0LatnML\0LatnIN\0LatnZZ\0MymrIN\0LatnAO\0CyrlRU\0ArabPK\0LatnCD\0LatnCD\0LatnZZ\0LatnKE\0LatnTD\0LatnSD\0LatnUS\0LatnCM\0LatnTD\0DevaNP\0LatnID\0LatnPG\0LatnZZ\0LatnNG\0CyrlRU\0LatnUS\0DevaNP\0LatnID\0LatnPG\0LatnPG\0LatnTR\0LatnTZ\0LatnZZ\0LatnIN\0LatnID\0LatnTZ\0LatnNA\0LatnID\0LatnGT\0LatnID\0LatnZZ\0LatnID\0LaooLA\0CyrlRU\0LatnSB\0LatnAZ\0LatnID\0DevaNP\0LatnVN\0LatnAU\0DevaIN\0MymrMM\0LatnUS\0LatnID\0LatnZZ\0ThaiTH\0LatnUS\0LatnPG\0LatnZZ\0LatnNG\0LatnID\0LatnZZ\0LatnNG\0LatnGN\0TibtIN\0LatnPH\0LanaMM\0LatnTZ\0LatnCM\0LatnSB\0LatnID\0LatnNG\0LatnSD\0LatnAU\0LatnCD\0LatnNG\0LatnNG\0DevaNP\0LatnNG\0LatnID\0LatnCG\0LatnID\0LatnAU\0LatnCA\0LatnGL\0LatnUS\0LatnMX\0LatnCM\0LatnAU\0DevaNP\0LatnTD\0LatnPH\0LatnPG\0LatnID\0ArabIR\0LatnNG\0LatnPH\0LatnPG\0LatnKE\0LatnNG\0LatnPG\0LatnZZ\0DevaNP\0LatnPK\0LatnZZ\0LatnLR\0LatnVU\0LatnID\0LatnZZ\0LatnID\0LatnID\0LatnGH\0LatnAO\0LatnCN\0LatnPH\0LatnCM\0LatnPG\0LatnPG\0LatnZZ\0LatnNG\0DevaIN\0LatnPH\0LatnPH\0LatnIN\0LatnPG\0LatnZZ\0LatnCM\0LatnET\0LatnZZ\0LatnID\0LatnZZ\0LatnBR\0LatnZZ\0LatnPG\0LatnNG\0ArabIR\0LatnNG\0LatnPH\0LatnID\0LatnPH\0LatnGW\0LatnNG\0LatnGT\0LatnSL\0LatnID\0LatnBR\0LatnSL\0LatnZZ\0LatnMY\0LatnPG\0LatnMY\0LatnBR\0LatnGN\0LatnPG\0LatnNA\0LatnID\0LatnCD\0LatnBF\0LatnPG\0LatnNG\0LatnID\0LatnSS\0LatnNG\0LatnCO\0LatnCG\0CyrlRU\0LatnZZ\0LatnUG\0LatnPG\0LatnGA\0LatnFM\0LatnCM\0LatnTD\0LatnNG\0LatnNG\0LatnUS\0LatnZZ\0LatnNG\0LatnCO\0LatnID\0LatnLR\0LatnZZ\0LatnFM\0LatnGH\0LatnID\0LatnBR\0LatnNG\0LatnCD\0LatnVN\0LatnBR\0LatnZZ\0LatnID\0LatnZZ\0LatnID\0CyrlRU\0LatnID\0LatnPG\0LatnZZ\0CyrlRU\0LatnUG\0LatnPG\0LatnZZ\0LatnPG\0SyrcIQ\0LatnPH\0LatnZZ\0LatnBF\0LatnTZ\0LatnPG\0LatnPG\0LatnBJ\0LatnPG\0LatnCI\0LatnZM\0LatnLR\0LatnTD\0LatnBR\0LatnMY\0LatnZZ\0LatnMY\0LatnZA\0LatnID\0LatnPG\0LatnCM\0EthiZZ\0LatnZA\0LatnZZ\0DevaNP\0LatnUS\0CyrlRU\0LatnTL\0LatnBR\0LatnVU\0LatnNG\0LatnSL\0LatnPH\0CyrlRU\0LatnRU\0LatnLR\0LatnNG\0KhmrKH\0LatnZZ\0LatnNE\0DevaIN\0KhmrKH\0LatnLR\0LatnSN\0LatnAZ\0LatnID\0LatnNG\0LatnTZ\0LatnPH\0LatnZZ\0LatnPG\0LatnCM\0LatnSB\0LatnDE\0LatnPG\0LatnZZ\0LatnUS\0LatnPG\0LatnNG\0LatnPH\0LatnNG\0LatnCF\0LatnNG\0LatnZZ\0LatnLR\0LatnBF\0MymrIN\0LatnCD\0MymrMM\0LatnID\0DevaIN\0LatnVN\0EthiZZ\0LatnNG\0LatnAU\0LatnCD\0LatnAU\0LatnTD\0LatnID\0LatnCI\0LatnPG\0ArabIR\0LatnZZ\0LatnBR\0LatnZZ\0PlrdCN\0LatnPH\0LatnMY\0LatnID\0LatnID\0LatnCD\0LatnVN\0LatnUS\0LatnBR\0LatnCD\0LatnNA\0LatnTR\0LatnZZ\0LatnID\0LatnZZ\0LatnZZ\0LaooLA\0LatnNG\0LatnNG\0LatnBR\0LatnZZ\0LatnID\0LatnNG\0CyrlRU\0LatnZZ\0LatnPG\0LatnZZ\0LatnBR\0LatnZZ\0LatnCA\0LatnUS\0LatnID\0LatnCF\0LatnAU\0LatnAU\0LatnCL\0CyrlRU\0CyrlRU\0LatnID\0LatnPG\0LatnID\0LatnMY\0LatnTD\0LatnZZ\0LatnID\0LatnTD\0LatnCM\0LatnMM\0LatnCM\0LatnCO\0LatnID\0LatnID\0MymrMM\0LatnID\0MymrMM\0LatnID\0LatnID\0ArabPK\0KaliMM\0LatnID\0LatnGB\0LatnBR\0LatnNG\0LatnCG\0LatnSB\0LatnID\0LatnSB\0LatnTD\0LatnID\0LatnCO\0LatnZZ\0LatnCA\0LatnNG\0LatnNA\0LatnNA\0LatnZZ\0LatnCI\0LatnZZ\0LatnID\0LatnCD\0LatnID\0LatnCM\0LatnTD\0LatnSR\0LatnCD\0LatnAO\0LatnZZ\0LatnCI\0EthiZZ\0LatnBN\0LatnZZ\0MymrMM\0LatnMY\0LatnTD\0MymrMM\0DevaIN\0ThaiTH\0LatnMY\0LatnBR\0ArabPK\0LatnID\0LatnPG\0LatnPG\0OryaIN\0LatnZZ\0LatnCG\0LatnVN\0LatnZZ\0LatnTZ\0LatnPH\0LatnPG\0LatnID\0LatnZZ\0LatnCI\0LatnPG\0LatnUS\0LatnMY\0LatnPH\0LatnPH\0LatnUS\0LatnCF\0LatnPH\0LatnID\0LatnTD\0LatnBR\0LatnMY\0LatnID\0KaliMM\0DevaNP\0DevaIN\0LatnZZ\0LatnPG\0LatnBR\0LatnBF\0LatnID\0LatnCI\0LatnID\0LatnPG\0LatnID\0ArabZZ\0LatnMY\0LatnMY\0LatnSB\0LatnID\0LatnID\0LatnMW\0LatnGA\0LatnID\0LatnZZ\0LatnMY\0LatnMY\0LatnID\0LatnID\0LatnBR\0LatnID\0LatnCD\0LatnID\0LatnVA\0LatnPH\0LinaGR\0LatnMX\0HebrIL\0DevaIN\0LatnTZ\0ArabPK\0LatnMW\0LatnUG\0LatnCD\0LatnZM\0LatnNG\0LatnTD\0LatnVN\0LatnGH\0LatnZZ\0LatnID\0LatnID\0LatnIN\0LatnPG\0LatnLU\0LatnPG\0LisuCN\0CyrlRU\0DevaIN\0LatnCM\0TibtIN\0LatnPH\0DevaIN\0LatnLA\0LaooLA\0LatnPG\0DevaNP\0LatnVN\0LatnZZ\0LatnPG\0LatnID\0LatnID\0LatnAU\0LatnAU\0LatnID\0LatnID\0LatnID\0LatnID\0LatnAO\0LatnID\0LatnZZ\0ThaiCN\0LatnID\0LatnID\0LatnCI\0LatnZZ\0LatnNG\0LatnNG\0LatnNG\0LatnCG\0LatnNG\0LatnNG\0LatnNG\0LatnGN\0Latn001LatnNG\0LatnNG\0LatnNG\0LatnCD\0LatnZM\0LatnBO\0LatnZZ\0LatnZZ\0LatnGH\0LatnZM\0LatnPG\0LatnCD\0LatnPG\0LatnCD\0LatnZZ\0LatnHN\0LatnCM\0LepcIN\0LatnZZ\0LatnPG\0LatnCD\0LatnPG\0LatnZZ\0LatnID\0LatnID\0LatnID\0LatnID\0CyrlRU\0LatnCM\0Latn001LatnUG\0LatnSB\0LatnSB\0LatnZZ\0LatnVN\0LatnID\0LatnVU\0LatnSB\0LatnCD\0LatnET\0LatnSS\0LatnGH\0LatnSB\0LatnPG\0LatnSB\0LatnCD\0LatnVN\0LatnID\0LatnCN\0DevaNP\0LatnMY\0SyrcSY\0LatnVU\0LatnCN\0LatnNL\0LatnZZ\0LatnPG\0LatnCN\0LatnZZ\0LatnCD\0DevaNP\0LatnZZ\0LatnZZ\0LatnIT\0LatnCD\0LatnCA\0LatnID\0LatnGH\0LatnET\0LatnLR\0LisuCN\0LatnSD\0LatnLV\0LatnID\0LatnID\0LatnCF\0LatnCD\0LatnAU\0LatnID\0LatnID\0LatnID\0LatnID\0LatnAU\0LatnAU\0LatnTL\0LatnKE\0LatnVN\0LatnBR\0LatnUG\0TibtBT\0ArabIR\0LatnMY\0LatnPG\0LatnAU\0LatnVU\0LatnKE\0LatnSS\0LatnKE\0LatnUS\0LatnAU\0LatnSS\0LatnNG\0LatnMZ\0LatnGN\0LatnIT\0LatnZZ\0LatnPG\0LatnID\0LatnCG\0LatnAU\0LatnMY\0LatnPG\0LatnID\0LatnZZ\0LatnVU\0LatnID\0LatnSB\0LatnFJ\0LatnGN\0LatnVU\0LatnAU\0LatnSD\0LatnTD\0LatnID\0LatnPG\0DevaNP\0LatnCD\0LatnID\0LatnIN\0LatnVU\0TeluIN\0LatnIT\0LatnZZ\0LatnID\0LatnID\0LatnVU\0LatnFJ\0LatnUS\0LatnCM\0LatnID\0LatnCD\0LatnCF\0LatnNA\0LatnID\0LatnMY\0LatnPG\0LatnAU\0LatnCF\0LatnPG\0LatnVU\0LatnZZ\0LatnZZ\0LatnAU\0LatnCD\0LatnID\0LatnBF\0LatnPH\0LatnID\0LatnCD\0LatnSS\0LatnCI\0LatnZZ\0LatnZZ\0LatnCD\0LatnLR\0LatnMW\0LatnCD\0LatnNG\0LatnCD\0LatnZZ\0LatnZZ\0LatnSS\0LatnUS\0LatnMY\0LatnID\0DevaNP\0LatnZM\0LatnVU\0LatnID\0LatnMM\0PlrdCN\0LatnSS\0LatnSS\0LatnMY\0ArabIR\0LatnAU\0LatnKE\0ArabPK\0ArabIR\0LatnKE\0LatnID\0LatnSD\0LatnID\0LatnVU\0LatnVU\0ArabIR\0HebrIL\0LatnCD\0LatnMM\0LatnUG\0LatnPG\0ArabPK\0LatnLV\0LatnUG\0LatnID\0LatnBR\0LatnKE\0LatnKE\0LatnID\0LatnCD\0LatnCD\0LatnUG\0LatnRU\0LatnZM\0LatnPG\0LatnUS\0LatnCD\0TibtBT\0LatnSS\0LatnAO\0LatnZM\0LatnKE\0LatnGA\0LatnCU\0LatnID\0LatnIN\0LatnUS\0DevaNP\0ArabOM\0LatnCM\0LatnKE\0ArabIR\0LatnTL\0LatnLA\0LatnSB\0LatnID\0LatnCD\0LatnID\0LatnKE\0LatnVN\0ThaiTH\0ThaiCN\0LatnSS\0LatnID\0LatnVU\0LatnPG\0TibtBT\0LatnZM\0HansCN\0LatnVU\0LatnMM\0LatnTR\0LatnMX\0LatnMX\0LatnID\0LatnNG\0LatnCM\0DevaIN\0LatnMX\0LatnID\0LatnGT\0LatnGM\0LatnMX\0LatnKE\0LatnMX\0LatnMX\0LatnBR\0LatnZZ\0LatnID\0LatnMX\0LatnPH\0LatnPH\0LatnBR\0LatnPH\0LatnSG\0LatnZZ\0LatnPH\0LatnBR\0LatnPG\0LatnBR\0LatnCG\0LatnCO\0LatnZZ\0LatnCO\0LatnZZ\0LatnCO\0LatnPH\0LatnPH\0LatnZZ\0LatnGN\0LatnZZ\0LatnPG\0ArabPK\0LatnMX\0LatnPY\0LatnPE\0LatnPG\0LatnPE\0LatnMX\0LatnPE\0LatnVE\0LatnVE\0LatnZZ\0LatnNG\0LatnAO\0LatnCO\0LatnMY\0LatnTD\0LatnMX\0LatnZZ\0LatnZZ\0LatnZZ\0LatnCM\0LatnCM\0LatnZZ\0LatnPG\0LatnTD\0LatnCF\0LatnPG\0LatnPG\0LatnZZ\0LatnPG\0LatnPG\0LatnCM\0ArabZZ\0CyrlRU\0LatnTD\0LatnPH\0LatnCD\0LatnZZ\0LatnCD\0LatnCD\0LatnCF\0LatnCD\0LatnCD\0LatnID\0LatnPG\0LatnCG\0LatnCG\0LatnMX\0LatnCG\0EthiZZ\0EthiET\0LatnBR\0LatnCM\0LatnPG\0LatnAU\0LatnZZ\0LatnZZ\0LatnMX\0LatnID\0LatnZZ\0LatnMY\0LatnAU\0LatnSL\0LatnMY\0LatnAU\0LatnCM\0LatnKE\0LatnTD\0LatnZZ\0LatnZZ\0LatnLR\0LatnNG\0LatnMR\0LatnUS\0ArabTH\0LatnID\0LatnCD\0LatnCM\0LatnMU\0LatnCM\0LatnGN\0LatnCM\0ArabCM\0LatnCM\0LatnCM\0LatnNG\0LatnNG\0LatnZZ\0LatnZZ\0LatnID\0LatnZZ\0LatnAU\0LatnPG\0LatnAO\0LatnGW\0LatnPG\0LatnET\0LatnMX\0LatnSS\0LatnMG\0LatnTD\0LatnSS\0LatnSS\0LatnTD\0LatnID\0LatnCM\0LatnMZ\0LatnNG\0LatnNG\0LatnID\0LatnZZ\0LatnTL\0LatnCF\0LatnCM\0DevaNP\0LatnTZ\0LatnZM\0LatnTZ\0LatnPG\0LatnPG\0LatnTZ\0LatnTZ\0LatnTZ\0LatnTZ\0LatnMH\0LatnGA\0LatnMX\0LatnTZ\0LatnMY\0LatnPG\0LatnAU\0LatnZZ\0ArabAF\0LatnCM\0LatnZZ\0LatnMZ\0LatnIT\0LatnZM\0LatnID\0LatnUS\0LatnID\0LatnVE\0LatnIN\0LatnBW\0LatnMM\0LatnID\0LatnID\0LatnUS\0LatnMX\0LatnCA\0MandIQ\0LatnMX\0LatnZZ\0LatnMX\0LatnMX\0LatnMX\0LatnCM\0LatnUS\0LatnMX\0LatnMX\0LatnID\0LatnMX\0LatnMX\0LatnNI\0LatnMX\0LatnMX\0LatnMX\0LatnZZ\0LatnMX\0LatnMX\0LatnMX\0LatnTL\0LatnMX\0LatnUS\0LatnTD\0LatnCN\0LatnTZ\0LatnCN\0LatnPG\0LatnPG\0DevaIN\0LatnPG\0LatnPG\0MlymIN\0MlymIN\0LatnNG\0DevaIN\0TeluIN\0MlymIN\0LatnIN\0LatnBD\0LatnUS\0DevaNP\0LatnCI\0DevaIN\0LatnPG\0DevaIN\0LatnNG\0ArabZZ\0LatnFM\0LatnCM\0LatnZZ\0ThaiTH\0LatnID\0LatnNG\0LatnZZ\0LatnPG\0LatnMX\0LatnNC\0LatnGN\0LatnVU\0LatnZZ\0LatnPH\0LatnID\0LatnTL\0LatnVU\0LatnCM\0LatnVN\0LatnZZ\0ThaiLA\0LatnPG\0LatnID\0LatnTD\0LatnKE\0LatnVU\0LatnSB\0LatnSN\0LatnZZ\0LatnSN\0LatnCM\0LatnSD\0LatnSB\0LatnVU\0LatnCM\0LatnVU\0LatnPH\0LatnNG\0LatnID\0LatnMX\0LatnCN\0LatnVU\0LatnNG\0LatnVU\0LatnBR\0LatnPG\0LatnVU\0LatnPH\0LatnZZ\0LatnPG\0LatnPG\0LatnCN\0LatnPG\0LatnZZ\0LatnBR\0LatnVU\0LatnZZ\0LatnTD\0LatnCD\0LatnZZ\0LatnID\0LatnBR\0LatnTD\0LatnZZ\0LatnVN\0LatnCD\0ArabAF\0LatnVU\0LatnPG\0LatnVN\0LatnCN\0LatnMY\0LatnUS\0CyrlRU\0LatnID\0LatnSB\0MymrMM\0LatnID\0LatnMZ\0LatnID\0LatnRO\0LatnZZ\0LatnAR\0LatnUS\0LatnCA\0LatnID\0LatnCA\0LatnNG\0LatnCG\0LatnID\0LatnNI\0LatnVN\0LatnBZ\0LatnID\0LatnSD\0LatnBF\0LatnCO\0LatnTD\0LatnUS\0LatnCG\0LatnZZ\0LatnET\0LatnTD\0LatnTZ\0LatnAU\0LatnAU\0LatnBR\0LatnET\0LatnTD\0LatnAU\0LatnCM\0LatnAU\0LatnTD\0LatnPG\0LatnMX\0LatnPG\0LatnPG\0LatnZZ\0LatnBR\0LatnSB\0LatnZZ\0LatnZZ\0LatnBR\0LatnPG\0LatnBR\0LatnZZ\0LatnID\0ThaiTH\0LatnID\0LatnCM\0LatnID\0LatnPG\0LatnID\0LatnID\0LatnMX\0LatnID\0LatnID\0LatnPH\0LatnZZ\0LatnPF\0LatnID\0LatnID\0LatnID\0LatnMY\0LatnID\0LatnID\0LatnSS\0LatnPG\0LatnPG\0LatnID\0LatnID\0LatnPG\0ThaiTH\0LatnVU\0LatnUS\0DevaNP\0LatnID\0LatnIN\0LatnIN\0CyrlRU\0LatnNC\0LatnFM\0LatnVU\0LatnSB\0MrooBD\0LatnVU\0LatnPF\0DevaIN\0LatnVU\0LatnNG\0LatnCM\0LatnPF\0LatnPH\0LatnID\0LatnPH\0LatnID\0LatnPH\0LatnGN\0LatnTD\0LatnID\0LatnID\0LatnMG\0LatnMY\0LatnCD\0LatnPH\0LatnID\0LatnPH\0LatnVU\0LatnID\0LatnBR\0LatnNC\0LatnID\0LatnPG\0LatnCM\0LatnGW\0LatnPG\0LatnPG\0LatnPG\0LatnMT\0LatnPH\0LatnCI\0LatnZZ\0LatnID\0LatnSB\0LatnZZ\0LatnID\0LatnID\0LatnZZ\0LatnID\0LatnCM\0LatnNG\0CyrlRU\0LatnNI\0LatnMX\0LatnBO\0LatnVN\0DevaIN\0LatnPE\0LatnVU\0LatnMX\0LatnPG\0LatnPH\0LatnMX\0LatnPG\0LatnCM\0LatnTD\0LatnCM\0CyrlRU\0LatnEC\0LatnCM\0LatnSS\0LatnID\0LatnTD\0TibtNP\0LatnPG\0LatnCM\0LatnCN\0LatnZZ\0LatnUS\0DevaIN\0LatnKE\0TamlIN\0LatnPG\0LatnCM\0EthiET\0LatnZZ\0LatnID\0MongCN\0LatnMX\0LatnTD\0LatnPG\0LatnAU\0LatnZZ\0LatnSB\0LatnID\0LatnPG\0LatnID\0LatnID\0LatnVU\0LatnTD\0LatnMY\0LatnTZ\0LatnID\0ArabPK\0EthiET\0LatnPG\0LatnPG\0LatnPG\0LatnTZ\0LatnAU\0LatnPG\0LatnPG\0LatnVU\0LatnML\0LatnPT\0LatnTD\0LatnZM\0LatnVU\0LatnAU\0LatnMM\0DevaIN\0LatnKE\0MymrMM\0LatnSS\0LatnID\0HmnpUS\0LatnCD\0LatnMX\0LatnMX\0LatnZW\0LatnID\0LatnVU\0LatnCM\0LatnAO\0LatnCD\0LatnES\0LatnIN\0LatnPG\0LatnBJ\0LatnZZ\0LatnID\0LatnZM\0LatnMX\0LatnMX\0LatnMY\0LatnMX\0LatnMX\0LatnCM\0LatnMX\0LatnPG\0LatnCI\0LatnMX\0LatnID\0LatnTD\0LatnCD\0LatnGA\0LatnET\0LatnCM\0LatnUS\0LatnSS\0LatnZZ\0LatnID\0EthiZZ\0LatnBR\0LatnPE\0LatnBR\0CyrlRU\0LatnZZ\0LatnUG\0LatnCO\0MandIR\0LatnMX\0LatnCM\0LatnPG\0LatnAR\0LatnMX\0LatnLR\0LatnZZ\0LatnMX\0LatnZZ\0ArabIR\0LatnBR\0LatnZZ\0LatnID\0LatnBR\0LatnMY\0LatnPG\0LatnCF\0LatnZZ\0LatnGY\0LatnZZ\0LatnNR\0LatnID\0LatnBR\0LatnZZ\0LatnID\0LatnZZ\0LatnIN\0LatnGN\0LatnZZ\0LatnPG\0LatnAU\0HansCN\0DevaNP\0LatnIT\0LatnNA\0LatnNG\0LatnZZ\0LatnNG\0LatnGH\0LatnPG\0LatnAU\0LatnMX\0LatnNO\0LatnAO\0LatnNG\0LatnIN\0LatnCD\0LatnIN\0LatnNG\0LatnIN\0LatnAU\0LatnPG\0LatnCF\0LatnID\0LatnNG\0LatnNG\0LatnID\0LatnNG\0LatnIN\0LatnIN\0LatnCM\0LatnCD\0LatnPG\0LatnZZ\0LatnIN\0LatnPG\0DevaNP\0LatnZZ\0LatnZZ\0LatnCA\0LatnMX\0LatnMX\0LatnMX\0LatnAU\0LatnMX\0LatnPG\0LatnPG\0LatnZZ\0LaooLA\0LatnCM\0LatnIN\0LatnZZ\0LatnMX\0LatnUS\0LatnZW\0LatnCG\0LatnCM\0LatnMZ\0LatnNG\0CyrlRU\0LatnTZ\0LatnTZ\0LatnNG\0LatnTZ\0LatnCD\0LatnCD\0LatnTD\0LatnCG\0LatnUG\0LatnAO\0LatnNG\0LatnDE\0LatnCD\0LatnCM\0LatnSN\0LatnCD\0LatnID\0LatnCF\0LatnSS\0LatnID\0LatnZZ\0LatnID\0LatnNG\0LatnNC\0CyrlRU\0TibtBT\0XsuxTR\0LatnPG\0LatnNC\0LatnNC\0LatnNC\0LatnVN\0LatnMX\0LatnID\0LatnPG\0Latn001DevaNP\0LatnZZ\0LatnCI\0LatnUS\0LatnID\0LatnNG\0LatnSB\0LatnZZ\0LatnCM\0LatnNA\0LatnZZ\0LatnZZ\0LatnCD\0LatnCF\0LatnCM\0LatnCF\0LatnZA\0LatnNG\0LatnCM\0LatnAU\0LatnMZ\0LatnFM\0LatnCM\0LatnTZ\0LatnTZ\0LatnSB\0LatnNG\0LaooLA\0LatnMX\0LatnCM\0LatnNG\0LatnNG\0LatnCM\0LatnCG\0LatnAU\0LatnZZ\0LatnMX\0LatnPY\0LatnMX\0LatnAU\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnPG\0LatnMX\0LatnMX\0LatnBW\0LatnMX\0LatnCM\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnID\0LatnPG\0LatnAU\0LatnTD\0LatnZZ\0LatnAU\0LatnTZ\0LatnZZ\0LatnID\0LatnID\0LatnTZ\0LatnZZ\0CyrlRU\0LatnKE\0LatnID\0LatnPG\0TeluIN\0LatnNU\0CyrlRU\0LatnPG\0LatnCD\0LatnZZ\0LatnZZ\0LatnNG\0LatnIN\0LatnTZ\0LatnIN\0LatnAU\0LatnCM\0LatnSS\0LatnIN\0LatnIN\0LatnIN\0LatnNG\0LatnID\0LatnSR\0LatnAU\0LatnCG\0LatnCM\0LatnIN\0LatnZM\0LatnIN\0LatnCM\0LatnIN\0LatnSB\0LatnIN\0LatnZZ\0LatnIN\0LatnIN\0LatnID\0LatnVU\0LatnPG\0LatnAO\0LatnZZ\0LatnGH\0LatnFM\0LatnID\0LatnTZ\0LatnCI\0LatnMW\0LatnCD\0LatnNG\0LatnNG\0LatnCM\0LatnID\0LatnKE\0LatnSB\0ArabAF\0LatnCD\0LatnID\0ArabPK\0LatnCD\0LatnMM\0LatnGH\0LatnMX\0LatnAU\0DevaIN\0LatnAU\0LatnSB\0LatnIN\0LatnVU\0LatnTD\0LatnGA\0LatnIN\0LatnIN\0LatnCM\0LatnIN\0LatnNG\0LatnCF\0LatnVU\0LatnCM\0DevaNP\0LatnBW\0LatnIN\0LatnAU\0LatnZW\0LatnCM\0LatnVU\0LatnFM\0LatnUS\0LatnAU\0LatnPG\0LatnPG\0LatnZZ\0LatnAU\0LatnCD\0LatnTD\0LatnVU\0LatnAO\0LatnZZ\0LatnIN\0LatnCM\0LatnID\0LatnET\0LatnZZ\0LatnIN\0LatnZZ\0LatnTD\0WchoIN\0LatnTZ\0LatnAU\0LatnUS\0LatnGH\0LatnAU\0LatnBF\0LatnAU\0LatnCM\0LatnCO\0LatnPG\0LanaTH\0DevaIN\0LatnPG\0CyrlRU\0LatnPG\0DevaIN\0LatnCO\0LatnUS\0LatnPE\0RunrSE\0LatnZZ\0LatnCD\0YiiiCN\0LatnPE\0LatnZZ\0Latn001LatnTZ\0LatnTD\0TibtBT\0LatnMM\0LatnIN\0LatnMX\0LatnPG\0LatnIN\0LatnID\0LatnIN\0LatnSB\0LatnID\0LatnBJ\0LatnBJ\0LatnAO\0LatnID\0LatnPG\0NkooGN\0LatnMM\0LatnNG\0LatnMM\0LatnZA\0LatnGA\0LatnZZ\0LatnIN\0LatnJE\0LatnVU\0LatnIN\0LatnAU\0LatnAU\0LatnMY\0LatnIT\0LatnCN\0LatnAU\0LatnPG\0LatnIN\0LatnZA\0LatnNG\0YiiiCN\0LatnZM\0YiiiCN\0LatnTZ\0LatnCM\0CansCA\0LatnIN\0LatnZZ\0LatnZA\0LatnUS\0LatnZZ\0TnsaIN\0LatnMX\0YiiiCN\0LatnVU\0LatnAO\0LatnID\0LatnUS\0LatnMY\0LatnMZ\0LatnAU\0LatnBF\0LatnAU\0LatnTZ\0LatnZZ\0LatnCD\0LatnMX\0LatnZZ\0LatnSB\0LatnMM\0YiiiVN\0ArabIR\0LatnNC\0LatnBR\0LatnPG\0LatnCD\0LatnCN\0LatnAU\0LatnNG\0LatnZZ\0LatnUG\0LatnCA\0LatnTO\0LatnMM\0LatnVN\0LatnZZ\0LatnPG\0LatnPG\0LatnSS\0LatnVN\0LatnCD\0LatnZZ\0LatnFM\0LatnZZ\0LatnAU\0LatnMX\0LatnUS\0LatnVU\0LatnPG\0LatnCM\0LatnZZ\0NewaNP\0LatnCM\0LatnAU\0LatnVU\0LatnSS\0LatnAU\0LatnPG\0LatnTZ\0DevaNP\0LatnTL\0LatnCD\0LatnID\0LatnID\0LatnTZ\0LatnID\0LatnAU\0LatnGA\0LatnCN\0LatnZZ\0LatnID\0LatnMW\0LatnGH\0LatnCD\0LatnKE\0LatnAO\0LatnKE\0LatnCD\0LatnAU\0LatnSD\0LatnCD\0LatnAO\0ThaiTH\0LatnTZ\0LatnUG\0LatnUG\0LatnUG\0ArabIR\0LatnMW\0LatnAU\0LatnAU\0LatnMZ\0LatnAU\0LatnAU\0LatnTZ\0LatnCM\0LatnGA\0LatnCD\0LatnGH\0LatnCF\0LatnIN\0LatnCG\0LatnTD\0LatnML\0CyrlRU\0CyrlRU\0SyrcSY\0GeorGE\0LatnUS\0LatnPH\0LatnCM\0PhnxJO\0LatnPH\0MymrMM\0LatnFR\0LatnNG\0LatnFR\0LatnPE\0LatnGB\0LatnMX\0LatnNG\0ArabPK\0LatnNL\0LatnNG\0LatnNG\0LatnNG\0LatnZZ\0LatnNG\0LatnNG\0LatnNG\0XsuxTR\0LatnID\0LatnSS\0LatnPG\0CansCA\0LatnCA\0LatnCA\0CansCA\0LatnSB\0LatnCA\0LatnCA\0LatnNG\0LatnCD\0LatnNG\0LatnNG\0LatnAU\0LatnKE\0LatnPG\0HangKR\0HaniKR\0LatnZZ\0LatnNG\0LatnCM\0LatnZZ\0LatnNG\0KhmrKH\0DevaNP\0LatnTZ\0TibtBT\0LatnAU\0LatnNG\0LatnRU\0LatnVU\0LatnLT\0LatnAO\0LatnET\0LatnUS\0LatnVU\0LatnPE\0LatnPE\0LatnCD\0CyrlRU\0LatnCD\0LatnPG\0MteiIN\0ModiIN\0LatnKE\0LatnPE\0LatnPG\0LatnAR\0LatnCA\0LatnZZ\0LatnID\0LatnPG\0LatnPG\0LatnZZ\0LatnCA\0LatnIN\0LatnPG\0LatnZZ\0LatnPG\0LatnVU\0LatnID\0LatnUS\0DevaIN\0LatnZA\0LatnNG\0LatnID\0LatnZZ\0LatnPG\0LatnMX\0LatnBR\0LatnSB\0LatnKE\0LatnPE\0LatnNG\0LatnMY\0LatnZZ\0LatnNG\0LatnMY\0TeluIN\0ArabZZ\0CyrlRU\0LatnBR\0LatnNG\0LatnID\0CyrlGE\0OsgeUS\0ItalIT\0JavaID\0LatnNG\0LatnES\0LatnCM\0LatnPG\0LatnDE\0ArabZZ\0TibtCN\0LatnID\0LatnMX\0LatnBR\0OrkhMN\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnSD\0LatnMX\0LatnMX\0LatnBR\0LatnCA\0LatnMX\0GranIN\0LatnMX\0LatnLR\0LatnPG\0Ougr143LatnPG\0LatnSE\0LatnPG\0LatnGB\0LatnET\0LatnBR\0LatnPG\0LatnZZ\0LatnBR\0LatnVN\0LatnBR\0LatnCD\0LatnBR\0LatnPH\0LatnBR\0LatnNG\0LatnBR\0PhliIR\0LatnPH\0LatnUS\0LatnCW\0CyrlTJ\0LatnUS\0LatnID\0LatnPW\0LatnBR\0LatnUS\0LatnBR\0LatnHN\0LatnBR\0LatnCO\0LatnGY\0LatnMX\0LatnMX\0LatnVE\0LatnVE\0LatnZZ\0LatnNG\0LatnMX\0LatnNG\0LatnGW\0LatnGN\0LatnTZ\0LatnMX\0ArabAF\0LatnIN\0LatnPG\0LatnMX\0KhmrKH\0LatnCN\0LatnFR\0MymrMM\0MlymIN\0MlymIN\0DevaIN\0DevaIN\0TeluIN\0LatnIN\0LatnNG\0LatnBO\0LatnNG\0LatnPG\0LatnUS\0LatnID\0LatnID\0LatnCA\0LatnMM\0LatnID\0LatnUS\0LatnZZ\0LatnID\0OryaIN\0LatnMX\0LatnPG\0LatnID\0LatnCD\0XpeoIR\0LatnPG\0LatnUS\0LatnVE\0LatnZZ\0LatnID\0LatnMY\0LatnFM\0LatnCM\0LatnDE\0LatnSS\0KharPK\0DevaIN\0LatnPG\0LatnVU\0OgamIE\0ItalIT\0LatnNG\0LatnID\0DevaIN\0LatnVN\0LatnVN\0MymrIN\0ArabZZ\0LatnMZ\0PhnxLB\0LaooLA\0ArabPK\0ThaiTH\0ArabAF\0DevaNP\0SinhIN\0LatnMX\0LatnPE\0LatnGA\0LatnVE\0LatnFM\0LatnPE\0LatnNF\0LatnCO\0LatnZZ\0LatnUS\0LatnPG\0LatnCO\0LatnZZ\0LatnBR\0LatnSB\0LatnAU\0LatnAU\0LatnSB\0LatnTZ\0LatnPG\0LatnNG\0LatnNC\0LatnAU\0BrahIN\0LatnKE\0LatnPG\0LatnBD\0LatnAU\0LatnKE\0LatnCK\0MlymIN\0LatnID\0LatnZZ\0LatnVU\0LatnPH\0LatnGB\0LatnID\0LatnAR\0LatnID\0LatnNG\0ArabPK\0MymrMM\0LatnCO\0LatnMX\0LatnCI\0LatnMX\0LatnBR\0LatnPH\0LatnPH\0LatnMY\0LatnVU\0LatnCD\0LatnAU\0LatnNC\0LatnID\0BrahIN\0LatnCN\0LatnCN\0LatnTN\0LatnCM\0LatnCM\0LatnID\0LatnMX\0LatnPG\0LatnIT\0LatnPF\0LatnUS\0LatnIN\0LatnID\0LatnMX\0LatnMY\0LatnID\0LatnAO\0LatnMY\0LatnZZ\0LatnCK\0LatnID\0LatnAU\0LatnBO\0LatnBF\0LatnMY\0LatnZZ\0LatnPE\0LatnID\0LatnBF\0LatnPG\0LatnID\0GrekGR\0LatnAU\0LatnAU\0LatnCM\0LatnCF\0LatnGT\0LatnMX\0LatnCD\0LatnBR\0LatnGT\0LatnMX\0LatnBR\0LatnUS\0LatnFM\0LatnUS\0LatnNC\0LatnMX\0LatnMX\0LatnUS\0LatnGW\0LatnMX\0LatnTZ\0DevaIN\0LatnPG\0LatnMX\0LatnID\0LatnSV\0LatnID\0LatnPG\0LatnZZ\0LatnCD\0LatnPG\0LatnMX\0LatnPG\0LatnNG\0LatnCA\0KharPK\0ArabAF\0ArabIR\0LatnST\0LatnPH\0Latn001LatnPH\0LatnNC\0LatnMM\0LatnPG\0LatnFR\0GujrIN\0LatnPE\0LatnBR\0ThaiTH\0LatnID\0LatnPG\0ArabIN\0LatnID\0LatnID\0ArabAF\0ArabAF\0LatnBO\0LatnID\0LatnPG\0LatnZZ\0ArabPK\0LatnVU\0LatnPY\0LatnBR\0LatnAU\0LatnID\0LatnBR\0LatnZZ\0LatnVU\0LatnID\0LatnID\0LatnVU\0LatnMX\0LatnIN\0LatnID\0LatnID\0LatnAR\0LatnID\0LatnBF\0LatnCO\0LatnID\0DevaNP\0LatnVN\0LatnPG\0LatnPE\0LatnBR\0LatnID\0LatnGA\0LatnFM\0LatnPG\0LatnUS\0LatnZZ\0LatnNG\0LatnPG\0LatnPH\0LatnTW\0MymrMM\0DevaIN\0ThaiTH\0LatnMX\0LatnCI\0LatnNG\0LatnBR\0LatnTW\0MymrMM\0LatnMM\0LatnTW\0LatnMM\0LatnUS\0LatnPE\0LatnGT\0LatnEC\0LatnPE\0LatnEC\0LatnUS\0LatnPE\0LatnBO\0LatnGT\0LatnUS\0LatnPE\0LatnES\0LatnPE\0LatnAR\0LatnGT\0LatnEC\0LatnPE\0LatnPE\0LatnPE\0LatnPE\0LatnPE\0LatnPE\0LatnEC\0LatnEC\0LatnPE\0LatnPE\0LatnPE\0LatnPE\0LatnPE\0LatnPE\0LatnPE\0LatnEC\0LatnPE\0LatnPE\0LatnPE\0LatnRU\0LatnPE\0LatnUS\0LatnPE\0LatnPE\0LatnPE\0LatnEC\0LatnPE\0LatnPE\0LatnPE\0ArabIR\0LatnEC\0LatnPE\0LatnPE\0LatnPE\0Latn001LatnUS\0DevaNP\0DevaNP\0LatnID\0LatnVN\0DevaNP\0LatnKE\0BengIN\0LatnZZ\0LatnPG\0LatnBR\0LatnID\0LatnZZ\0LatnCL\0LatnCK\0DevaNP\0LatnMM\0LatnNG\0LatnPF\0LatnID\0MymrMM\0LatnPH\0LatnPH\0LatnAU\0LatnRE\0ArabIR\0LatnPG\0LatnID\0LatnMY\0LatnTZ\0OryaIN\0LatnID\0LatnZZ\0LatnPE\0LatnVN\0LatnZZ\0LatnID\0LatnBO\0LatnVU\0LatnIT\0LatnPE\0LatnVN\0LatnID\0RohgMM\0LatnPG\0LatnIN\0LatnMA\0LatnMM\0LatnTZ\0LatnNG\0LatnID\0LatnAU\0LatnID\0LatnID\0DevaNP\0DevaNP\0KhmrKH\0LatnBR\0LatnCK\0MymrMM\0LatnBF\0BengBD\0LatnAU\0LatnNI\0LatnAU\0LatnSK\0LatnDK\0LatnGB\0LatnFI\0LatnNO\0LatnID\0ArmnAM\0LatnPG\0LatnPL\0LatnID\0LatnRS\0LatnCH\0LatnPG\0LatnES\0ArabIR\0LatnSE\0LatnGB\0LatnVN\0MymrIN\0LatnBI\0LatnZZ\0LatnCD\0LatnMZ\0LatnIN\0LatnID\0LatnAU\0LatnTZ\0LatnID\0LatnVN\0LatnNG\0LatnPG\0LatnTZ\0LatnVN\0LatnPH\0LatnRO\0LatnZZ\0LatnAU\0LatnID\0LatnTD\0LatnID\0LatnVU\0LatnPG\0LatnSB\0LatnZZ\0LatnAU\0CyrlRS\0LatnMM\0LatnID\0LatnFJ\0DevaIN\0LatnUG\0LatnUG\0CyrlUA\0LatnTZ\0LatnSB\0LatnTZ\0LatnNG\0LatnHR\0LatnRO\0LatnGR\0CyrlRU\0LatnMY\0LatnNG\0LatnNG\0LatnRW\0LatnPG\0LatnTZ\0LatnTZ\0LatnUG\0LatnZZ\0DevaIN\0LatnAU\0LatnAU\0KanaJP\0LatnTD\0LatnPA\0LatnUS\0LatnTZ\0LatnBR\0LatnGH\0CyrlRU\0LatnID\0LatnGA\0SamrPS\0LatnID\0LatnKE\0LatnBO\0LatnID\0LatnID\0LatnSN\0LatnID\0LatnVU\0LatnNG\0SaurIN\0LatnZZ\0LatnSB\0LatnPG\0LatnBF\0LatnZZ\0LatnID\0LatnPG\0LatnPG\0LatnTD\0LatnTZ\0LatnPH\0LatnTZ\0ArabPK\0LatnMY\0LatnTZ\0LatnPG\0LatnID\0LatnNA\0LatnID\0TibtIN\0LatnIT\0LatnGA\0LatnID\0LatnZM\0LatnCF\0LatnVN\0LatnCN\0LatnPA\0LatnID\0LatnIN\0LatnLK\0DevaIN\0ArabZZ\0LatnIT\0LatnGB\0DevaNP\0LatnCA\0LaooLA\0TakrIN\0LatnNG\0LatnNG\0GrekIT\0LatnID\0ArabIQ\0LatnIT\0LatnNG\0ArabIQ\0ArabAF\0ArabIR\0LatnCG\0LatnPG\0LatnIT\0LatnMY\0LatnID\0ArabTN\0LatnID\0LatnMY\0LatnNO\0LatnMY\0LatnCI\0LatnCA\0LatnVN\0LatnUS\0LatnCI\0LatnTZ\0LatnMZ\0LatnMX\0LatnPG\0LatnCA\0CyrlRU\0LatnBF\0LatnPG\0LatnBF\0LatnBF\0LatnUS\0LatnML\0LatnID\0LatnID\0LatnCI\0LatnPG\0LatnEC\0LatnMM\0LatnPH\0PlrdCN\0LatnGH\0LatnCF\0OgamIE\0LatnPH\0LatnKE\0LatnPH\0LatnID\0CyrlTJ\0LatnCM\0DevaIN\0LatnKE\0LatnIN\0ArabIR\0LatnLT\0TibtBT\0LatnID\0EthiZZ\0ArabAF\0LatnZZ\0LatnNG\0LatnBR\0LatnCD\0ArabPK\0LatnET\0LatnBW\0LatnUS\0TfngMA\0LatnSD\0LatnZZ\0ArabIR\0MymrMM\0LatnNG\0LatnPE\0LatnZM\0LatnCD\0LatnCA\0LatnUS\0ArabZZ\0ArabOM\0LatnSD\0LatnDZ\0LatnML\0CyrlRU\0LatnMY\0LatnET\0LatnZM\0LatnBF\0LatnZZ\0LatnNC\0LatnIN\0LatnPG\0LatnBR\0LatnZZ\0LatnZZ\0TibtIN\0LatnPG\0LatnNG\0LatnUS\0LatnPG\0LatnPG\0LatnPG\0LatnPG\0ArabIR\0ArabEG\0LatnCO\0LatnID\0CyrlRU\0LatnSE\0LatnTD\0LatnIN\0LatnPH\0DevaIN\0LatnZZ\0CyrlRU\0LatnSE\0LatnUS\0LatnUS\0ThaiTH\0LatnZZ\0LatnUS\0LatnVU\0LatnBR\0LatnMG\0LatnID\0LatnID\0DevaNP\0LatnPG\0LatnPH\0LatnID\0LatnMY\0LatnBF\0ArabPK\0LatnZZ\0LatnCD\0LatnVU\0LatnID\0LatnGY\0LatnID\0LatnSB\0LatnID\0LatnCO\0LatnZZ\0LatnID\0LatnUS\0LatnPL\0LatnBR\0LatnZZ\0LatnPH\0LatnUS\0LatnID\0ArabIR\0LatnCN\0LatnID\0LatnPG\0LatnCD\0LatnID\0LatnID\0LatnWS\0LatnSE\0LatnPG\0LatnPG\0LatnAO\0LatnPG\0LatnPG\0YiiiCN\0LatnSE\0LatnPH\0LatnPH\0LatnFI\0SamrIL\0LatnZZ\0LatnID\0LatnFI\0LatnIN\0KhmrKH\0LatnID\0LatnCD\0ArabIR\0LatnPG\0LatnZW\0LatnMY\0LatnZZ\0LatnMY\0LatnSN\0LatnCD\0LatnPE\0LatnCF\0LatnML\0LatnPH\0LatnUG\0LatnCO\0LatnUS\0LatnZZ\0LatnGA\0LatnPG\0LatnVU\0LatnID\0LatnMY\0LatnGH\0LatnZZ\0LatnZZ\0LatnPG\0TavtTH\0LatnID\0LatnCD\0LatnCD\0LatnCD\0SogdUZ\0DevaNP\0LatnZZ\0LatnPG\0LatnCD\0LatnCD\0LatnZZ\0LatnTD\0LatnBF\0ThaiTH\0LatnPW\0LatnPG\0LatnCM\0LatnZZ\0LatnTZ\0LatnID\0LatnVE\0LatnZZ\0LatnPG\0LatnMY\0LatnID\0LatnPG\0LatnZZ\0LatnPG\0LatnPY\0LatnUS\0LatnML\0LatnPE\0LatnID\0LatnZZ\0TibtIN\0OryaIN\0LatnNG\0LatnNG\0LatnCF\0ArabIR\0LaooLA\0ArabYE\0LatnCA\0LatnPG\0SoraIN\0LatnID\0LatnPG\0LatnPH\0ArabCN\0LatnCO\0LatnMY\0LatnID\0LatnSR\0LatnSR\0LatnIT\0LatnBO\0LatnSN\0LatnCA\0LatnID\0LatnBR\0LatnPH\0LatnID\0DevaIN\0LatnPG\0ArabIR\0LatnZA\0LatnPH\0LatnTZ\0LatnZZ\0LatnPH\0LatnTW\0LatnZZ\0ArabAE\0LatnPG\0LatnGH\0LatnMY\0LatnKE\0LatnPG\0LatnID\0LaooLA\0LatnPG\0LatnPG\0LatnVU\0LatnPG\0LatnER\0LatnPG\0LatnZA\0LatnZM\0LatnPH\0LatnID\0LatnPG\0LatnVN\0LatnIE\0LatnVN\0LatnBF\0LatnZZ\0LatnNL\0LatnPG\0LatnSB\0LatnCA\0LatnMX\0LatnDE\0LatnCA\0ArabAF\0LatnVN\0EthiET\0LatnFM\0CyrlRU\0LatnZZ\0LatnCD\0LatnPH\0LatnZZ\0LatnPG\0LatnPG\0LatnTZ\0LatnTZ\0LatnPG\0LatnET\0LatnZZ\0LatnGN\0LatnNI\0LatnIN\0LatnTZ\0LatnBR\0DevaNP\0GeorGE\0LatnPG\0LatnVC\0LatnID\0LatnIT\0LatnSB\0ArabYT\0LatnCD\0LatnCD\0LatnDE\0HaniCN\0LatnGA\0LatnMW\0LatnPG\0LatnBR\0LatnZZ\0LatnCM\0LatnID\0LatnID\0LatnID\0LatnID\0DevaIN\0LatnVU\0LatnBR\0LatnTD\0LatnKE\0LatnGA\0LatnID\0LatnTW\0LatnNG\0LatnDE\0LatnZZ\0LatnID\0LatnPH\0SyrcTR\0LatnGA\0LatnNG\0BengBD\0LatnBF\0SyrcIR\0LatnKH\0SyrcIQ\0LatnTD\0DevaNP\0LatnGA\0LatnMY\0LatnID\0LatnMY\0LatnMY\0LatnCD\0LatnPL\0LatnID\0LatnID\0LatnCM\0LatnID\0LatnTW\0LatnUS\0CyrlRU\0LatnMX\0LatnID\0LatnBR\0LatnBR\0LatnSD\0DevaNP\0LatnNG\0LatnZZ\0LatnZZ\0LatnTW\0LatnCD\0LatnZZ\0LatnMX\0LatnVN\0LatnUS\0LatnCO\0LatnPG\0LatnTD\0LatnTW\0LatnSD\0LatnBR\0LatnZZ\0LatnZZ\0LatnSB\0LatnZZ\0LatnZZ\0LatnAU\0LatnSD\0LatnPG\0TagbPH\0LatnPH\0LatnCD\0LatnCO\0LatnZZ\0LatnID\0LatnPG\0LatnCD\0LatnMX\0LatnPG\0LatnPH\0LatnPG\0LatnID\0LatnZZ\0LatnBR\0LatnUS\0LatnTZ\0LatnGH\0LatnCA\0LatnMX\0LatnID\0LatnTC\0LatnZZ\0LatnGA\0LatnID\0TibtNP\0MymrMM\0LatnMM\0LatnID\0LatnAU\0LatnMX\0LatnMX\0TamlIN\0KndaIN\0LatnIN\0TfngNE\0DevaIN\0LatnCO\0TaleCN\0LatnML\0DevaNP\0DevaNP\0LatnID\0LatnID\0LatnNG\0LatnNG\0LatnGY\0LatnID\0LatnNG\0LatnNG\0LatnVN\0LatnID\0LatnTL\0LatnMY\0LatnNG\0LatnMG\0LatnPH\0LatnMY\0LatnEC\0LatnKE\0LatnZZ\0LatnMX\0LatnGA\0LatnAR\0LatnPG\0LatnCD\0LatnSL\0LatnCO\0LatnUG\0LatnMX\0LatnSD\0LatnBR\0JavaID\0LatnTL\0LatnUG\0LatnID\0LatnUS\0LatnSS\0LatnSD\0LatnZZ\0LatnUS\0LatnID\0LatnPA\0LatnID\0LatnKE\0LatnMY\0LatnZZ\0LatnNG\0DevaNP\0TibtBT\0LatnTT\0LatnPG\0LatnIN\0LatnPH\0LatnZZ\0LatnVU\0LatnMY\0LatnVU\0LatnPH\0LatnZZ\0LatnBR\0LatnCI\0LatnCA\0LatnSS\0LatnAU\0LatnAU\0DevaNP\0DevaNP\0LatnMX\0TaleLA\0LatnKE\0DevaNP\0ThaiTH\0LatnCA\0DevaNP\0DevaNP\0DevaNP\0LatnCA\0LatnSS\0LatnDZ\0LatnNG\0LatnNE\0LatnSD\0LatnZZ\0EthiER\0LatnMY\0LatnCD\0DevaNP\0LatnZZ\0LatnUS\0LatnZZ\0CyrlRU\0LatnZZ\0LatnID\0LatnBF\0LatnPH\0LatnCO\0LatnPH\0LatnNG\0LatnAU\0LatnUS\0LatnPH\0LatnLR\0LatnID\0LatnCN\0LatnAU\0MymrMM\0LatnCI\0ArabDZ\0LatnAU\0LatnCN\0LatnAU\0LatnAU\0LatnBR\0DevaIN\0LatnTL\0LatnMZ\0LatnBR\0LatnMG\0LatnTK\0LatnSB\0LatnNG\0LatnAZ\0ArabIR\0DevaNP\0LatnMX\0LatnPG\0LatnSB\0LatnID\0LatnVN\0LatnPH\0LatnMX\0LatnID\0LatnMX\0LatnID\0LatnZZ\0LatnID\0LatnUS\0LatnUG\0LatnID\0LatnCD\0LatnVU\0LatnID\0LatnMX\0LatnMM\0LatnSB\0LatnVU\0LatnID\0LatnID\0LatnID\0LatnZZ\0LatnAZ\0LatnTD\0LatnVU\0LatnTD\0LatnPG\0LatnBR\0LatnPY\0LatnID\0LatnNE\0LatnVU\0LatnID\0DevaNP\0LatnID\0LatnVN\0LatnID\0LatnMY\0LatnPG\0SyrcIL\0LatnVU\0LatnID\0LatnCD\0LatnMY\0LatnZZ\0LatnVE\0LatnZA\0LatnBO\0LatnCO\0LatnCO\0LatnCO\0LatnTD\0LatnZZ\0LatnID\0LatnVU\0LatnVU\0LatnID\0LatnVU\0LatnBO\0LatnVU\0LatnPR\0LatnSN\0LatnPG\0LatnID\0CakmBD\0LatnID\0LatnSB\0LatnTZ\0LatnAR\0LatnMX\0LatnGN\0LatnZZ\0LatnMW\0LatnMZ\0LatnZM\0LatnMX\0Latn001LatnUS\0LatnID\0LatnMX\0LatnMX\0LatnZZ\0LatnCD\0LatnMX\0LatnVN\0ArabIR\0LatnUS\0LatnPW\0LatnID\0LatnCM\0LatnPG\0LatnMX\0LatnBD\0LatnID\0LatnID\0LatnPG\0LatnPY\0LatnBR\0LatnMX\0LatnZZ\0LatnBR\0LatnMX\0LatnBR\0LatnMX\0KhmrKH\0LatnMP\0LatnMX\0LatnBR\0LatnZZ\0LatnBR\0LatnVU\0LatnPG\0LatnUS\0LatnZZ\0LatnPG\0LatnMX\0LatnSB\0LatnUS\0ArabAF\0LatnPG\0LatnMX\0LatnID\0LatnTT\0HebrIL\0LatnPG\0LatnSR\0LatnTD\0LatnGB\0ArabAF\0LatnBO\0LatnIN\0LatnIN\0LatnMX\0LatnPE\0LatnMX\0LatnID\0LatnTR\0LatnTW\0ArabPK\0LatnMY\0LatnIN\0LatnBR\0LatnZA\0LatnCG\0LatnET\0LatnMZ\0GrekGR\0DevaNP\0LatnPH\0LatnCM\0LatnCA\0TibtBT\0LatnVN\0LatnBF\0LatnVU\0LatnML\0LatnTW\0LatnGA\0LatnZZ\0LatnPG\0LatnMX\0LatnNG\0LatnGT\0LatnZZ\0LatnZZ\0LatnCM\0LaooLA\0LatnID\0LatnUG\0LatnCO\0LatnZM\0LatnCA\0LatnID\0LaooLA\0LatnID\0LatnZZ\0ThaiTH\0LatnAZ\0LatnPG\0LatnPG\0LatnMY\0LatnID\0LatnPG\0LatnUS\0LatnPG\0LatnBR\0LatnCO\0LatnCO\0LatnTD\0LatnZZ\0LatnCM\0LatnID\0LatnZZ\0LatnMW\0LatnUS\0LatnBR\0LatnZZ\0LatnCA\0LatnUS\0LatnKE\0LatnBR\0LatnKE\0LatnBF\0LatnSB\0LatnZZ\0LatnID\0LatnVU\0LatnTV\0LatnID\0MymrMM\0LatnID\0LatnKE\0LatnIN\0LatnZZ\0LatnID\0LatnTW\0LatnUS\0LatnPH\0LatnNL\0LatnID\0LatnUS\0LatnID\0LatnZZ\0LatnMZ\0DevaIN\0LatnCM\0LatnBW\0LatnPG\0LatnNE\0LatnMX\0LatnBR\0LatnID\0LatnPG\0LatnMZ\0LatnID\0LatnMY\0LatnID\0TangCN\0LatnBR\0LatnNG\0LatnID\0LatnID\0TotoIN\0LatnID\0LatnID\0LatnID\0LatnBR\0LatnMY\0LatnMG\0LatnPF\0LatnZZ\0LatnNG\0LatnVN\0LatnCG\0LatnVN\0LatnVN\0LatnID\0LatnAU\0TavtVN\0LatnVN\0LatnVN\0LatnBW\0CyrlRU\0LatnCG\0LatnNG\0LatnVN\0LatnMX\0LatnGT\0Latn001LatnMA\0LatnID\0LatnMX\0LatnPG\0LatnBR\0LatnPG\0LatnNG\0LatnTD\0LatnPH\0LatnPG\0LatnZZ\0LatnNG\0CyrlRU\0MlymIN\0AghbRU\0LatnID\0LatnCM\0CyrlRU\0LatnSD\0LatnID\0LatnPG\0ArabCN\0UgarSY\0LatnAU\0LatnSB\0CyrlRU\0ThaiTH\0LatnNG\0LatnID\0LatnPG\0LatnCM\0LatnNG\0LatnID\0LatnPG\0LatnCF\0OryaIN\0LatnMM\0LatnNG\0LatnNG\0LatnNG\0LatnSS\0LatnNG\0LatnAU\0LatnNG\0LatnNG\0CyrlRU\0LatnAR\0LatnID\0LatnFM\0LatnAU\0LatnID\0LatnPG\0LatnID\0LatnNI\0LatnUS\0LatnAO\0LatnAU\0LatnAU\0LatnMY\0LatnNG\0LatnMM\0LatnBR\0LatnAU\0LatnAU\0LatnID\0LatnPG\0LatnNG\0LatnAU\0LatnPG\0LatnBR\0LatnUS\0LatnAU\0BengIN\0LatnPG\0BengIN\0LatnID\0LatnZZ\0LatnTW\0LatnPG\0LatnVU\0LatnPE\0LatnBR\0LatnAU\0LatnBO\0LatnAU\0LatnPG\0LatnNG\0LatnZZ\0ThaiTH\0LatnPG\0LatnID\0LatnPG\0LatnBR\0LatnVU\0LatnZZ\0LatnBR\0LatnPG\0LatnZZ\0LatnPG\0LatnID\0LatnBR\0LatnZZ\0ArabPK\0LatnBD\0LatnCM\0LatnGT\0LatnNG\0LatnPG\0LatnNG\0LatnUS\0LatnZZ\0LatnSB\0LatnZZ\0LatnPG\0GrekGE\0LatnVU\0LatnNC\0LatnZZ\0LatnZZ\0LatnAU\0LatnNG\0ArabAF\0TamlIN\0LatnCF\0ArabIR\0LatnZZ\0DevaIN\0VaiiLR\0LatnNA\0LatnPG\0LatnPG\0LatnZZ\0LatnVU\0LatnIN\0LatnMX\0DevaIN\0LatnCD\0DevaIN\0DevaNP\0LatnID\0LatnPH\0LatnZA\0LatnIT\0LatnNG\0LatnUS\0LatnRU\0LatnNG\0ArabPK\0LatnSX\0LatnTZ\0LatnCG\0LatnBF\0LatnAR\0LatnTZ\0LatnNG\0LatnZZ\0LatnAU\0LatnTD\0LatnID\0LatnID\0LatnBR\0LatnNG\0LatnID\0LatnIN\0LatnID\0LatnAU\0LatnNG\0LatnVU\0LatnBE\0LatnAU\0LatnAU\0LatnMX\0KndaIN\0LatnID\0LatnDE\0LatnPG\0ArabIR\0LatnAU\0LatnMX\0LatnMZ\0LatnAU\0LatnMX\0LatnMX\0LatnMX\0LatnMZ\0LatnID\0LatnAU\0LatnMZ\0LatnMX\0LatnMX\0LatnMX\0LatnSB\0LatnVU\0LatnVU\0Latn001LatnNG\0LatnRU\0LatnVU\0LatnEE\0LatnSB\0LatnVU\0LatnID\0LatnGA\0LatnTZ\0LatnZZ\0LatnCN\0LatnBE\0LatnUS\0LatnPG\0LatnUS\0LatnID\0LatnCH\0LatnBR\0LatnPG\0LatnID\0LatnID\0LatnZZ\0EthiET\0LatnUS\0LatnZZ\0LatnGY\0LatnAU\0LatnPH\0LatnUS\0LatnPG\0LatnBR\0LatnNG\0LatnBR\0LatnPG\0LatnSR\0LatnPG\0LatnVE\0LatnID\0LatnID\0LatnBF\0LatnTZ\0LatnTZ\0LatnTZ\0ArabAF\0LatnPK\0LatnCN\0LatnAU\0TeluIN\0DevaIN\0LatnAU\0LatnAU\0LatnID\0LatnBR\0LatnZZ\0LatnGA\0LatnPG\0LatnAU\0LatnAU\0LatnCA\0LatnAU\0LatnAU\0LatnCI\0LatnPG\0LatnAU\0LatnCM\0LatnPG\0LatnBJ\0LatnID\0LatnDE\0LatnZZ\0LatnCM\0LatnID\0LatnMM\0LatnID\0LatnID\0LatnAU\0LatnPG\0LatnAU\0LatnZZ\0LatnID\0LatnAU\0LatnAU\0LatnID\0LatnZZ\0LatnID\0LatnID\0LatnZZ\0LatnUS\0LatnAU\0LatnAU\0LatnAU\0LatnAU\0LatnPG\0LatnAU\0LatnAU\0LatnAU\0LatnAU\0LatnUS\0LatnBR\0LatnZZ\0LatnZZ\0LatnUS\0LatnZZ\0LatnZZ\0LatnTZ\0LatnID\0LatnAU\0LatnAU\0LatnAU\0LatnPG\0LatnAU\0LatnTL\0LatnID\0LatnGB\0ArabID\0LatnVU\0LatnWF\0LatnAU\0LatnAR\0LatnID\0LatnGH\0LatnNG\0LatnAU\0LatnPG\0LatnBR\0DevaNP\0LatnTL\0LatnAU\0LatnID\0LatnNC\0LatnZZ\0LatnID\0LatnAU\0LatnMZ\0LatnPG\0LatnPG\0LatnZZ\0LatnAU\0ArabPK\0LatnID\0ArabKM\0LatnID\0LatnAU\0LatnAU\0LatnID\0LatnPG\0LatnZZ\0LatnUS\0LatnAU\0LatnAU\0LatnZZ\0LatnPG\0LatnID\0LatnFM\0LatnGM\0LatnPG\0LatnID\0LatnCM\0LatnNG\0LatnCD\0LatnID\0LatnID\0LatnZZ\0LatnID\0LatnVE\0LatnAU\0LatnAU\0LatnAU\0LatnAU\0LatnAU\0LatnAU\0LatnAU\0LatnAU\0LatnID\0LatnAU\0LatnZZ\0LatnID\0LatnPG\0LatnAU\0LatnID\0LatnAU\0LatnID\0GongIN\0LatnVU\0LatnZZ\0LatnPG\0LatnGH\0LatnBR\0ArabAF\0LatnPG\0LatnAU\0LatnET\0LatnPG\0DevaIN\0LatnID\0LatnAU\0LatnAU\0LatnTG\0LatnID\0LatnGA\0LatnTZ\0LatnAU\0LatnPG\0HansCN\0LatnZZ\0LatnAU\0LatnID\0LatnZZ\0LatnAU\0LatnVU\0LatnAU\0LatnCM\0LatnAU\0LatnAU\0LatnAU\0LatnPL\0LatnUS\0LatnBR\0LatnFJ\0LatnES\0LatnNG\0LatnBR\0LatnBR\0LatnVE\0CyrlRU\0LatnZA\0EthiET\0LatnVN\0LatnPG\0CyrlRU\0LatnBR\0LatnID\0LatnBR\0LatnUS\0LatnID\0LatnAU\0LatnAU\0LatnAU\0LatnAU\0LatnZZ\0LatnAU\0LatnFR\0LatnMY\0LatnAU\0LatnID\0LatnBR\0LatnAU\0LatnUS\0ChrsUZ\0CariTR\0LatnAU\0LatnAU\0LatnAO\0CyrlRU\0LatnID\0LatnCM\0LatnZA\0LatnID\0LatnBR\0LatnZZ\0LatnBR\0LatnPG\0LatnCI\0LatnAU\0LatnAU\0LatnAU\0LatnAU\0LatnAU\0LatnAU\0ArabPK\0KhmrKH\0LatnVN\0LatnZA\0LatnGT\0LatnBR\0OryaIN\0LatnBR\0LatnAU\0LatnAU\0ArabPK\0LatnBJ\0ArabIR\0LatnID\0LatnID\0LatnML\0ArabIR\0LatnID\0LatnID\0ArabIR\0LatnID\0LatnBR\0LatnID\0LatnGH\0LatnCG\0LatnBW\0LatnID\0LatnPG\0LatnMY\0LatnBT\0LatnZZ\0LyciTR\0LydiTR\0ElymIR\0LatnSO\0LatnCM\0LatnMZ\0LatnCM\0GeorGE\0LatnCM\0LatnAU\0LatnCM\0LatnID\0ManiCN\0LatnBR\0LatnAU\0LatnAU\0MercSD\0LatnID\0LatnAU\0LatnMG\0LatnMG\0LatnID\0LatnAU\0LatnID\0NarbSA\0LatnTW\0LatnAU\0LatnTZ\0LatnAU\0LatnAU\0LatnPH\0LatnMZ\0DevaIN\0LatnUS\0LatnAU\0LatnAU\0LatnEG\0LatnNG\0LatnID\0LatnUG\0LatnPG\0LatnBR\0LatnSD\0LatnZZ\0LatnBR\0LatnPG\0LatnBR\0LatnPG\0LatnAU\0LatnAU\0LatnAU\0LatnAU\0GrekTR\0LatnAU\0OgamGB\0LatnAU\0LatnBR\0LatnAU\0CyrlRU\0LatnBR\0LatnMX\0LatnUS\0PrtiIR\0LatnAU\0LatnAU\0LatnAU\0LatnAU\0LatnAU\0LatnBR\0LatnZZ\0LatnAU\0LatnBR\0LatnAU\0LatnBR\0CyrlRU\0CyrlRU\0LatnIT\0LatnAU\0LatnPG\0SarbYE\0LatnPH\0LatnID\0LatnNG\0LatnZZ\0LatnZZ\0LatnNG\0LatnPG\0LatnMZ\0DevaNP\0CyrlRU\0LatnVE\0LatnTW\0LatnMX\0LatnMX\0LatnSD\0LatnMX\0LatnID\0LatnAU\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnAU\0LatnBR\0LatnMX\0TamlIN\0LatnAU\0TamlIN\0LatnAU\0LatnIT\0LatnAU\0LatnTD\0LatnAU\0LatnNA\0ItalIT\0ArabAF\0LatnES\0LatnIT\0LatnIT\0LatnBR\0LatnAU\0LatnZZ\0LatnAU\0LatnAU\0LatnBJ\0CyrlRU\0LatnID\0LatnAU\0LatnAU\0LatnGH\0LatnID\0LatnAU\0LatnBR\0LatnID\0LatnAU\0LatnAU\0LatnAU\0LatnAU\0LatnBR\0LatnAU\0LatnAU\0MarcCN\0LatnMX\0LatnPE\0LatnBR\0LatnID\0LatnPE\0LatnVE\0LatnCD\0LatnCL\0CyrlTJ\0LatnCF\0LatnUS\0LatnGN\0LatnZZ\0LatnNI\0LatnMZ\0LatnFM\0LatnMX\0LatnVE\0LatnZZ\0LatnZZ\0LatnVE\0LatnCM\0LatnBR\0LatnAO\0LatnZZ\0LatnZZ\0LatnZZ\0LatnCM\0LatnCN\0DevaNP\0DevaNP\0LatnNG\0LatnNG\0LatnPG\0LatnBR\0LatnPG\0LatnPG\0LatnZZ\0LatnCN\0LatnCO\0LatnAU\0LatnPG\0ArabPK\0LatnPG\0MlymIN\0LatnDE\0LatnPG\0LatnCM\0GrekIL\0LatnCD\0LatnZZ\0LatnNG\0LatnID\0TeluIN\0LatnPG\0LatnBW\0LatnAU\0LatnAU\0LatnPG\0LatnPG\0PlrdCN\0LatnZZ\0LatnAU\0LatnZZ\0HebrIL\0Hebr001LatnAU\0YiiiCN\0HebrDE\0LatnAU\0LatnAU\0LatnAU\0LatnIN\0LatnID\0LatnPG\0YiiiCN\0LatnPH\0CyrlRU\0LatnID\0LatnPG\0LatnPG\0LatnZZ\0LatnPG\0LatnCF\0LatnPG\0LatnPG\0LatnZZ\0LatnZZ\0LatnID\0LatnZZ\0LatnAU\0LatnPG\0LatnNC\0LatnPG\0LatnPE\0LatnCD\0LatnMZ\0LatnZZ\0LatnSO\0LatnID\0LatnPG\0LatnPG\0PlrdCN\0LatnAU\0LatnCD\0CyrlRU\0LatnPG\0LatnNG\0LatnCD\0LatnCO\0LatnPG\0LatnPH\0JpanJP\0LatnUS\0LatnGB\0LatnCD\0LatnZZ\0LatnNG\0ThaiTH\0LatnPG\0LatnZZ\0LatnZZ\0CyrlRU\0LatnAU\0LatnBR\0LatnID\0LatnPG\0LatnAU\0YiiiCN\0YiiiCN\0YiiiCN\0CyrlRU\0LatnZZ\0PlrdCN\0LatnPG\0LatnAU\0LatnMX\0LatnAU\0LatnUS\0HebrIL\0LatnUS\0CyrlRU\0LatnCO\0LatnZZ\0LatnCF\0LatnUS\0LatnNG\0LatnCO\0LatnBO\0LatnUS\0LatnZZ\0LatnZZ\0CyrlRU\0LatnBO\0LatnID\0LatnVE\0LatnPG\0LatnAU\0LatnBR\0PlrdCN\0LatnAU\0PlrdCN\0LatnAU\0LatnAU\0LatnAU\0LatnAU\0LatnAU\0LatnAU\0LatnAU\0LatnAU\0LatnPG\0LatnCN\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnSD\0LatnNG\0LatnTZ\0LatnTZ\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0TibtIN\0LatnMX\0LatnMX\0LatnMX\0LatnET\0LatnNG\0Arab001LatnMY\0LatnMY\0LatnID\0LatnNG\0LatnMY\0LatnMX\0HaniCN\0ArabKM\0LatnNL\0LatnPG\0HaniCN\0TfngMR\0LatnTZ\0HaniCN\0TfngMA\0HaniCN\0HaniCN\0LatnPG\0HaniCN\0LatnNG\0LatnCN\0LatnCM\0NshuCN\0LatnZZ\0LatnPG\0LatnGN\0LatnTD\0LatnTZ\0LatnTZ\0LatnNG\0LatnID\0CyrlRU\0LatnMM\0CyrlRU\0LatnBR\0KitsCN\0LatnAU\0CyrlRU\0LatnCD\0HaniCN\0LatnTG\0HaniCN\0HaniCN\0LatnAU\0LatnCD\0LatnAU\0LatnAU\0LatnAU\0LatnCD\0LatnAU\0LatnPG\0LatnMY\0LatnAU\0LatnAU\0LatnAU\0LatnAU\0LatnGA\0LatnSD\0LatnCD\0LatnCD\0LatnAU\0LatnCD\0LatnAU\0LatnAU\0LatnAU\0LatnCD\0LatnCG\0LatnAU\0LatnCD\0LatnTD\0LatnZZ\0LatnVN\0LatnAU\0LatnNG\0LatnMX\0LatnMX\0LatnIN\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0HaniCN\0LatnTD\0LatnEC\0HebrFR\0LatnID\0LatnPG\0LatnMX\0LatnPG\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnMX\0LatnNG\0LatnPG\0ArabOM\0LatnUS\0LatnCM\0HaniCN\0LatnCN\0HaniCN\0LatnMM\0LatnTR\0HaniCN\0") })
+ },
+ script_region: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"ArabCN\0ArabKH\0ArabMM\0ArabTG\0ArabTH\0ArabTR\0ArabYT\0CpmnCY\0CyrlGE\0CyrlTR\0DevaFJ\0DevaPK\0GrekTR\0HebrSE\0HebrUA\0HebrUS\0LaooAU\0LaooCN\0LaooFR\0LaooGF\0LaooMM\0LaooSR\0LaooTH\0LaooUS\0LaooVN\0LatnAM\0LatnCN\0LatnGE\0LatnMM\0LatnRU\0LatnTW\0MymrIN\0MymrTH\0ThaiCN\0ThaiKH\0ThaiLA\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"ug\0cjarhgapdmfaapcswbundab\0kbdhifbtvbgxyi\0yi\0yi\0hnjhnjhnjhnjhnjhnjhnjhnjhnjku\0za\0ku\0kackrltrvkhtmnwlcpkdtkdt") })
+ },
+ script: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"AghbAhomArmiAvstBaliBamuBassBatkBrahBugiBuhdCakmCansCariChamChrsCoptCpmnCprtDiakEgypElymGlagGongGonmGothHanoHluwHmngHmnpItalKaliKawiKharKitsLanaLepcLimbLinaLinbLisuLyciLydiMakaMandManiMarcMedfMendMercMeroMrooMultNagmNarbNbatNewaNkooNshuOgamOrkhOsgeOugrPalmPaucPermPhagPhliPhlpPhnxPlrdPrtiRjngRohgRunrSamrSarbSaurSgnwSogdSogoSoraSoyoSyloSyrcTagbTaleTaluTangTavtTfngThaaTibtTnsaTotoUgarVaiiWaraWchoXpeoXsuxYeziYiiiZanb") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"udiRU\0ahoIN\0arcIR\0ae\0IR\0banID\0baxCM\0bsqLR\0bbcID\0pkaIN\0bugID\0bkuPH\0ccpBD\0iu\0CA\0xcrTR\0cjmVN\0xcoUZ\0copEG\0undCY\0grcCY\0dv\0MV\0egyEG\0arcIR\0cu\0BG\0wsgIN\0esgIN\0gotUA\0hnnPH\0hluTR\0hnjLA\0hnjUS\0ettIT\0ekyMM\0kawID\0praPK\0zktCN\0nodTH\0lepIN\0lifIN\0labGR\0grcGR\0lisCN\0xlcTR\0xldTR\0makID\0myzIR\0xmnCN\0bo\0CN\0dmfNG\0menSL\0xmrSD\0xmrSD\0mroBD\0skrPK\0unrIN\0xnaSA\0arcJO\0newNP\0manGN\0zhxCN\0sgaIE\0otkMN\0osaUS\0oui143arcSY\0ctdMM\0kv\0RU\0lzhCN\0palIR\0palCN\0phnLB\0hmdCN\0xprIR\0rejID\0rhgMM\0nonSE\0smpIL\0xsaYE\0sazIN\0aseUS\0sogUZ\0sogUZ\0srbIN\0cmgMN\0sylBD\0syrIQ\0tbwPH\0tddCN\0khbCN\0txgCN\0bltVN\0zghMA\0dv\0MV\0bo\0CN\0nstIN\0txoIN\0ugaSY\0vaiLR\0hocIN\0nnpIN\0peoIR\0akkIQ\0ku\0GE\0ii\0CN\0cmgMN\0") })
+ },
+ region: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"061AQ\0AS\0BI\0BQ\0BT\0BV\0CP\0CW\0DJ\0GH\0GL\0GS\0HM\0HT\0LS\0MG\0ML\0MT\0MU\0MV\0NO\0PG\0PW\0PY\0RW\0SJ\0TK\0TV\0VU\0WS\0ZW\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"sm\0LatnundLatnsm\0Latnrn\0LatnpapLatndz\0TibtundLatnundLatnpapLatnaa\0Latnak\0Latnkl\0LatnundLatnundLatnht\0Latnst\0Latnmg\0Latnbm\0Latnmt\0LatnmfeLatndv\0Thaanb\0LatntpiLatnpauLatngn\0Latnrw\0Latnnb\0LatntklLatntvlLatnbi\0Latnsm\0Latnsn\0Latn") })
+ },
+ };
+ }
+ #[clippy::msrv = "1.66"]
+ impl icu_provider::DataProvider<icu::locid_transform::provider::LikelySubtagsExtendedV1Marker> for $provider {
+ fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::locid_transform::provider::LikelySubtagsExtendedV1Marker>, icu_provider::DataError> {
+ if req.locale.is_empty() {
+ Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_LOCID_TRANSFORM_LIKELYSUBTAGS_EXT_V1)), metadata: Default::default() })
+ } else {
+ Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::locid_transform::provider::LikelySubtagsExtendedV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
+ }
+ }
+ }
+ };
+}
diff --git a/vendor/icu_locid_transform_data/data/macros/locid_transform_likelysubtags_l_v1.data.rs b/vendor/icu_locid_transform_data/data/macros/locid_transform_likelysubtags_l_v1.data.rs
new file mode 100644
index 000000000..53062d840
--- /dev/null
+++ b/vendor/icu_locid_transform_data/data/macros/locid_transform_likelysubtags_l_v1.data.rs
@@ -0,0 +1,41 @@
+// @generated
+/// Implement `DataProvider<LikelySubtagsForLanguageV1Marker>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_locid_transform_likelysubtags_l_v1 {
+ ($ provider : ty) => {
+ #[clippy::msrv = "1.66"]
+ const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+ #[clippy::msrv = "1.66"]
+ impl $provider {
+ #[doc(hidden)]
+ pub const SINGLETON_LOCID_TRANSFORM_LIKELYSUBTAGS_L_V1: &'static <icu::locid_transform::provider::LikelySubtagsForLanguageV1Marker as icu_provider::DataMarker>::Yokeable = &icu::locid_transform::provider::LikelySubtagsForLanguageV1 {
+ language_script: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"az\0Araben\0Shawff\0Adlmhi\0Latnkk\0Arabky\0Arabky\0Latnmn\0Mongpa\0Arabsd\0Devasd\0Khojsd\0Sindtg\0Arabuz\0ArabyueHanszh\0Bopozh\0Hanbzh\0Hant") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"IR\0GB\0GN\0IN\0CN\0CN\0TR\0CN\0PK\0IN\0IN\0IN\0PK\0AF\0CN\0TW\0TW\0TW\0") })
+ },
+ language_region: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"az\0IQ\0az\0IR\0az\0RU\0ha\0CM\0ha\0SD\0kk\0AF\0kk\0CN\0kk\0IR\0kk\0MN\0ky\0CN\0ky\0TR\0mn\0CN\0ms\0CC\0pa\0PK\0sd\0IN\0sr\0ME\0sr\0RO\0sr\0RU\0sr\0TR\0tg\0PK\0uz\0AF\0uz\0CN\0yueCN\0zh\0AU\0zh\0BN\0zh\0GB\0zh\0GF\0zh\0HK\0zh\0ID\0zh\0MO\0zh\0PA\0zh\0PF\0zh\0PH\0zh\0SR\0zh\0TH\0zh\0TW\0zh\0US\0zh\0VN\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"ArabArabCyrlArabArabArabArabArabArabArabLatnMongArabArabDevaLatnLatnLatnLatnArabArabCyrlHansHantHantHantHantHantHantHantHantHantHantHantHantHantHantHant") })
+ },
+ language: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"af\0am\0ar\0as\0astaz\0be\0bg\0bgcbhobn\0br\0brxbs\0ca\0cebchrcs\0cv\0cy\0da\0de\0doidsbel\0en\0es\0et\0eu\0fa\0ff\0fi\0filfo\0fr\0ga\0gd\0gl\0gu\0ha\0he\0hi\0hr\0hsbhu\0hy\0ia\0id\0ig\0is\0it\0ja\0jv\0ka\0keakgpkk\0km\0kn\0ko\0kokks\0ky\0lo\0lt\0lv\0maimi\0mk\0ml\0mn\0mnimr\0ms\0my\0ne\0nl\0nn\0no\0or\0pa\0pcmpl\0ps\0pt\0qu\0rajrm\0ro\0ru\0sa\0satsc\0sd\0si\0sk\0sl\0so\0sq\0sr\0su\0sv\0sw\0ta\0te\0tg\0th\0ti\0tk\0to\0tr\0tt\0uk\0ur\0uz\0vi\0wo\0xh\0yo\0yrlyuezh\0zu\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"LatnZA\0EthiET\0ArabEG\0BengIN\0LatnES\0LatnAZ\0CyrlBY\0CyrlBG\0DevaIN\0DevaIN\0BengBD\0LatnFR\0DevaIN\0LatnBA\0LatnES\0LatnPH\0CherUS\0LatnCZ\0CyrlRU\0LatnGB\0LatnDK\0LatnDE\0DevaIN\0LatnDE\0GrekGR\0LatnUS\0LatnES\0LatnEE\0LatnES\0ArabIR\0LatnSN\0LatnFI\0LatnPH\0LatnFO\0LatnFR\0LatnIE\0LatnGB\0LatnES\0GujrIN\0LatnNG\0HebrIL\0DevaIN\0LatnHR\0LatnDE\0LatnHU\0ArmnAM\0Latn001LatnID\0LatnNG\0LatnIS\0LatnIT\0JpanJP\0LatnID\0GeorGE\0LatnCV\0LatnBR\0CyrlKZ\0KhmrKH\0KndaIN\0KoreKR\0DevaIN\0ArabIN\0CyrlKG\0LaooLA\0LatnLT\0LatnLV\0DevaIN\0LatnNZ\0CyrlMK\0MlymIN\0CyrlMN\0BengIN\0DevaIN\0LatnMY\0MymrMM\0DevaNP\0LatnNL\0LatnNO\0LatnNO\0OryaIN\0GuruIN\0LatnNG\0LatnPL\0ArabAF\0LatnBR\0LatnPE\0DevaIN\0LatnCH\0LatnRO\0CyrlRU\0DevaIN\0OlckIN\0LatnIT\0ArabPK\0SinhLK\0LatnSK\0LatnSI\0LatnSO\0LatnAL\0CyrlRS\0LatnID\0LatnSE\0LatnTZ\0TamlIN\0TeluIN\0CyrlTJ\0ThaiTH\0EthiET\0LatnTM\0LatnTO\0LatnTR\0CyrlRU\0CyrlUA\0ArabPK\0LatnUZ\0LatnVN\0LatnSN\0LatnZA\0LatnNG\0LatnBR\0HantHK\0HansCN\0LatnZA\0") })
+ },
+ und: (icu::locid::subtags::language!("en"), icu::locid::subtags::script!("Latn"), icu::locid::subtags::region!("US")),
+ };
+ }
+ #[clippy::msrv = "1.66"]
+ impl icu_provider::DataProvider<icu::locid_transform::provider::LikelySubtagsForLanguageV1Marker> for $provider {
+ fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::locid_transform::provider::LikelySubtagsForLanguageV1Marker>, icu_provider::DataError> {
+ if req.locale.is_empty() {
+ Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_LOCID_TRANSFORM_LIKELYSUBTAGS_L_V1)), metadata: Default::default() })
+ } else {
+ Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::locid_transform::provider::LikelySubtagsForLanguageV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
+ }
+ }
+ }
+ };
+}
diff --git a/vendor/icu_locid_transform_data/data/macros/locid_transform_likelysubtags_sr_v1.data.rs b/vendor/icu_locid_transform_data/data/macros/locid_transform_likelysubtags_sr_v1.data.rs
new file mode 100644
index 000000000..5a29059b2
--- /dev/null
+++ b/vendor/icu_locid_transform_data/data/macros/locid_transform_likelysubtags_sr_v1.data.rs
@@ -0,0 +1,40 @@
+// @generated
+/// Implement `DataProvider<LikelySubtagsForScriptRegionV1Marker>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_locid_transform_likelysubtags_sr_v1 {
+ ($ provider : ty) => {
+ #[clippy::msrv = "1.66"]
+ const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+ #[clippy::msrv = "1.66"]
+ impl $provider {
+ #[doc(hidden)]
+ pub const SINGLETON_LOCID_TRANSFORM_LIKELYSUBTAGS_SR_V1: &'static <icu::locid_transform::provider::LikelySubtagsForScriptRegionV1Marker as icu_provider::DataMarker>::Yokeable = &icu::locid_transform::provider::LikelySubtagsForScriptRegionV1 {
+ script_region: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"ArabCC\0ArabGB\0ArabID\0ArabIN\0ArabMN\0ArabMU\0ArabNG\0ArabPK\0ArabTJ\0CyrlAL\0CyrlBA\0CyrlGR\0CyrlMD\0CyrlRO\0CyrlSK\0CyrlXK\0DevaBT\0DevaMU\0HantCA\0LatnAF\0LatnCY\0LatnDZ\0LatnET\0LatnIR\0LatnKM\0LatnMA\0LatnMK\0LatnMO\0LatnMR\0LatnSY\0LatnTN\0LatnUA\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"ms\0ur\0ms\0ur\0kk\0ur\0ha\0ur\0fa\0mk\0sr\0mk\0uk\0bg\0uk\0sr\0ne\0bhoyuetk\0tr\0fr\0en\0tk\0fr\0fr\0sq\0pt\0fr\0fr\0fr\0pl\0") })
+ },
+ script: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"AdlmArabArmnBengBhksBopoBraiCherCyrlDevaDogrDuplElbaEthiGeorGranGrekGujrGuruHanbHangHaniHansHantHebrHiraHungJamoJavaJpanKanaKhmrKhojKndaKoreKthiLaooMahjMlymModiMongMteiMymrNandOlckOryaOsmaShawShrdSiddSindSinhSundTakrTamlTeluTglgThaiTirhVith") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"ff\0GN\0ar\0EG\0hy\0AM\0bn\0BD\0sa\0IN\0zh\0TW\0fr\0FR\0chrUS\0ru\0RU\0hi\0IN\0doiIN\0fr\0FR\0sq\0AL\0am\0ET\0ka\0GE\0sa\0IN\0el\0GR\0gu\0IN\0pa\0IN\0zh\0TW\0ko\0KR\0zh\0CN\0zh\0CN\0zh\0TW\0he\0IL\0ja\0JP\0hu\0HU\0ko\0KR\0jv\0ID\0ja\0JP\0ja\0JP\0km\0KH\0sd\0IN\0kn\0IN\0ko\0KR\0bhoIN\0lo\0LA\0hi\0IN\0ml\0IN\0mr\0IN\0mn\0CN\0mniIN\0my\0MM\0sa\0IN\0satIN\0or\0IN\0so\0SO\0en\0GB\0sa\0IN\0sa\0IN\0sd\0IN\0si\0LK\0su\0ID\0doiIN\0ta\0IN\0te\0IN\0filPH\0th\0TH\0maiIN\0sq\0AL\0") })
+ },
+ region: unsafe {
+ #[allow(unused_unsafe)]
+ zerovec::ZeroMap::from_parts_unchecked(unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"002003005009011013014015017018019021029030034035039053054057142143145150151154155202419AD\0AE\0AF\0AL\0AM\0AO\0AR\0AT\0AW\0AX\0AZ\0BA\0BD\0BE\0BF\0BG\0BH\0BJ\0BL\0BN\0BO\0BR\0BY\0CD\0CF\0CG\0CH\0CI\0CL\0CM\0CN\0CO\0CR\0CU\0CV\0CY\0CZ\0DE\0DK\0DO\0DZ\0EA\0EC\0EE\0EG\0EH\0ER\0ES\0ET\0EU\0EZ\0FI\0FO\0FR\0GA\0GE\0GF\0GN\0GP\0GQ\0GR\0GT\0GW\0HK\0HN\0HR\0HU\0IC\0ID\0IL\0IN\0IQ\0IR\0IS\0IT\0JO\0JP\0KE\0KG\0KH\0KM\0KP\0KR\0KW\0KZ\0LA\0LB\0LI\0LK\0LT\0LU\0LV\0LY\0MA\0MC\0MD\0ME\0MF\0MK\0MM\0MN\0MO\0MQ\0MR\0MX\0MY\0MZ\0NA\0NC\0NE\0NI\0NL\0NP\0OM\0PA\0PE\0PF\0PH\0PK\0PL\0PM\0PR\0PS\0PT\0QA\0QO\0RE\0RO\0RS\0RU\0SA\0SC\0SD\0SE\0SI\0SK\0SM\0SN\0SO\0SR\0ST\0SV\0SY\0TD\0TF\0TG\0TH\0TJ\0TL\0TM\0TN\0TO\0TR\0TW\0TZ\0UA\0UG\0UY\0UZ\0VA\0VE\0VN\0WF\0XK\0YE\0YT\0") }, unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"en\0Latnen\0Latnpt\0Latnen\0Latnen\0Latnes\0Latnsw\0Latnar\0Arabsw\0Latnen\0Latnen\0Latnen\0Latnes\0Latnzh\0Hanshi\0Devaid\0Latnit\0Latnen\0Latnen\0Latnen\0Latnzh\0Hansuz\0Latnar\0Arabru\0Cyrlru\0Cyrlen\0Latnde\0Latnen\0Latnes\0Latnca\0Latnar\0Arabfa\0Arabsq\0Latnhy\0Armnpt\0Latnes\0Latnde\0Latnnl\0Latnsv\0Latnaz\0Latnbs\0Latnbn\0Bengnl\0Latnfr\0Latnbg\0Cyrlar\0Arabfr\0Latnfr\0Latnms\0Latnes\0Latnpt\0Latnbe\0Cyrlsw\0Latnfr\0Latnfr\0Latnde\0Latnfr\0Latnes\0Latnfr\0Latnzh\0Hanses\0Latnes\0Latnes\0Latnpt\0Latnel\0Grekcs\0Latnde\0Latnda\0Latnes\0Latnar\0Arabes\0Latnes\0Latnet\0Latnar\0Arabar\0Arabti\0Ethies\0Latnam\0Ethien\0Latnde\0Latnfi\0Latnfo\0Latnfr\0Latnfr\0Latnka\0Georfr\0Latnfr\0Latnfr\0Latnes\0Latnel\0Grekes\0Latnpt\0Latnzh\0Hantes\0Latnhr\0Latnhu\0Latnes\0Latnid\0Latnhe\0Hebrhi\0Devaar\0Arabfa\0Arabis\0Latnit\0Latnar\0Arabja\0Jpansw\0Latnky\0Cyrlkm\0Khmrar\0Arabko\0Koreko\0Korear\0Arabru\0Cyrllo\0Laooar\0Arabde\0Latnsi\0Sinhlt\0Latnfr\0Latnlv\0Latnar\0Arabar\0Arabfr\0Latnro\0Latnsr\0Latnfr\0Latnmk\0Cyrlmy\0Mymrmn\0Cyrlzh\0Hantfr\0Latnar\0Arabes\0Latnms\0Latnpt\0Latnaf\0Latnfr\0Latnha\0Latnes\0Latnnl\0Latnne\0Devaar\0Arabes\0Latnes\0Latnfr\0LatnfilLatnur\0Arabpl\0Latnfr\0Latnes\0Latnar\0Arabpt\0Latnar\0Araben\0Latnfr\0Latnro\0Latnsr\0Cyrlru\0Cyrlar\0Arabfr\0Latnar\0Arabsv\0Latnsl\0Latnsk\0Latnit\0Latnfr\0Latnso\0Latnnl\0Latnpt\0Latnes\0Latnar\0Arabfr\0Latnfr\0Latnfr\0Latnth\0Thaitg\0Cyrlpt\0Latntk\0Latnar\0Arabto\0Latntr\0Latnzh\0Hantsw\0Latnuk\0Cyrlsw\0Latnes\0Latnuz\0Latnit\0Latnes\0Latnvi\0Latnfr\0Latnsq\0Latnar\0Arabfr\0Latn") })
+ },
+ };
+ }
+ #[clippy::msrv = "1.66"]
+ impl icu_provider::DataProvider<icu::locid_transform::provider::LikelySubtagsForScriptRegionV1Marker> for $provider {
+ fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::locid_transform::provider::LikelySubtagsForScriptRegionV1Marker>, icu_provider::DataError> {
+ if req.locale.is_empty() {
+ Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_LOCID_TRANSFORM_LIKELYSUBTAGS_SR_V1)), metadata: Default::default() })
+ } else {
+ Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::locid_transform::provider::LikelySubtagsForScriptRegionV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
+ }
+ }
+ }
+ };
+}
diff --git a/vendor/icu_locid_transform_data/data/macros/locid_transform_script_dir_v1.data.rs b/vendor/icu_locid_transform_data/data/macros/locid_transform_script_dir_v1.data.rs
new file mode 100644
index 000000000..6d0e38303
--- /dev/null
+++ b/vendor/icu_locid_transform_data/data/macros/locid_transform_script_dir_v1.data.rs
@@ -0,0 +1,27 @@
+// @generated
+/// Implement `DataProvider<ScriptDirectionV1Marker>` on the given struct using the data
+/// hardcoded in this file. This allows the struct to be used with
+/// `icu`'s `_unstable` constructors.
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __impl_locid_transform_script_dir_v1 {
+ ($ provider : ty) => {
+ #[clippy::msrv = "1.66"]
+ const _: () = <$provider>::MUST_USE_MAKE_PROVIDER_MACRO;
+ #[clippy::msrv = "1.66"]
+ impl $provider {
+ #[doc(hidden)]
+ pub const SINGLETON_LOCID_TRANSFORM_SCRIPT_DIR_V1: &'static <icu::locid_transform::provider::ScriptDirectionV1Marker as icu_provider::DataMarker>::Yokeable = &icu::locid_transform::provider::ScriptDirectionV1 { rtl: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"AdlmArabArmiAvstChrsCprtElymHatrHebrHungKharLydiMandManiMendMercMeroNarbNbatNkooOrkhOugrPalmPhliPhlpPhnxPrtiRohgSamrSarbSogdSogoSyrcThaaYezi") }, ltr: unsafe { zerovec::ZeroVec::from_bytes_unchecked(b"AghbAhomArmnBaliBamuBassBatkBengBhksBopoBrahBugiBuhdCakmCansCariChamCherCoptCpmnCyrlDevaDiakDogrDsrtDuplEgypElbaEthiGeorGlagGongGonmGothGranGrekGujrGuruHanbHangHaniHanoHansHantHiraHluwHmngHmnpItalJamoJavaJpanKaliKanaKawiKhmrKhojKitsKndaKoreKthiLanaLaooLatnLepcLimbLinaLinbLisuLyciMahjMakaMarcMedfMlymModiMongMrooMteiMultMymrNagmNandNewaNshuOgamOlckOryaOsgeOsmaPaucPermPhagPlrdRjngRunrSaurSgnwShawShrdSiddSindSinhSoraSoyoSundSyloTagbTakrTaleTaluTamlTangTavtTeluTfngTglgThaiTibtTirhTnsaTotoUgarVaiiVithWaraWchoXpeoXsuxYiiiZanb") } };
+ }
+ #[clippy::msrv = "1.66"]
+ impl icu_provider::DataProvider<icu::locid_transform::provider::ScriptDirectionV1Marker> for $provider {
+ fn load(&self, req: icu_provider::DataRequest) -> Result<icu_provider::DataResponse<icu::locid_transform::provider::ScriptDirectionV1Marker>, icu_provider::DataError> {
+ if req.locale.is_empty() {
+ Ok(icu_provider::DataResponse { payload: Some(icu_provider::DataPayload::from_static_ref(Self::SINGLETON_LOCID_TRANSFORM_SCRIPT_DIR_V1)), metadata: Default::default() })
+ } else {
+ Err(icu_provider::DataErrorKind::ExtraneousLocale.with_req(<icu::locid_transform::provider::ScriptDirectionV1Marker as icu_provider::KeyedDataMarker>::KEY, req))
+ }
+ }
+ }
+ };
+}
diff --git a/vendor/icu_locid_transform_data/data/mod.rs b/vendor/icu_locid_transform_data/data/mod.rs
new file mode 100644
index 000000000..f74be340d
--- /dev/null
+++ b/vendor/icu_locid_transform_data/data/mod.rs
@@ -0,0 +1,39 @@
+// @generated
+include!("macros.rs");
+macro_rules! impl_data_provider {
+ ($ provider : ty) => {
+ make_provider!($provider);
+ impl_fallback_likelysubtags_v1!($provider);
+ impl_fallback_parents_v1!($provider);
+ impl_fallback_supplement_co_v1!($provider);
+ impl_locid_transform_aliases_v1!($provider);
+ impl_locid_transform_likelysubtags_ext_v1!($provider);
+ impl_locid_transform_likelysubtags_l_v1!($provider);
+ impl_locid_transform_likelysubtags_sr_v1!($provider);
+ impl_locid_transform_script_dir_v1!($provider);
+ };
+}
+#[allow(unused_macros)]
+macro_rules! impl_any_provider {
+ ($ provider : ty) => {
+ #[clippy::msrv = "1.66"]
+ impl icu_provider::AnyProvider for $provider {
+ fn load_any(&self, key: icu_provider::DataKey, req: icu_provider::DataRequest) -> Result<icu_provider::AnyResponse, icu_provider::DataError> {
+ match key.hashed() {
+ h if h == <icu::locid_transform::provider::LocaleFallbackLikelySubtagsV1Marker as icu_provider::KeyedDataMarker>::KEY.hashed() => icu_provider::DataProvider::<icu::locid_transform::provider::LocaleFallbackLikelySubtagsV1Marker>::load(self, req).map(icu_provider::DataResponse::wrap_into_any_response),
+ h if h == <icu::locid_transform::provider::LocaleFallbackParentsV1Marker as icu_provider::KeyedDataMarker>::KEY.hashed() => icu_provider::DataProvider::<icu::locid_transform::provider::LocaleFallbackParentsV1Marker>::load(self, req).map(icu_provider::DataResponse::wrap_into_any_response),
+ h if h == <icu::locid_transform::provider::CollationFallbackSupplementV1Marker as icu_provider::KeyedDataMarker>::KEY.hashed() => icu_provider::DataProvider::<icu::locid_transform::provider::CollationFallbackSupplementV1Marker>::load(self, req).map(icu_provider::DataResponse::wrap_into_any_response),
+ h if h == <icu::locid_transform::provider::AliasesV1Marker as icu_provider::KeyedDataMarker>::KEY.hashed() => icu_provider::DataProvider::<icu::locid_transform::provider::AliasesV1Marker>::load(self, req).map(icu_provider::DataResponse::wrap_into_any_response),
+ h if h == <icu::locid_transform::provider::LikelySubtagsExtendedV1Marker as icu_provider::KeyedDataMarker>::KEY.hashed() => icu_provider::DataProvider::<icu::locid_transform::provider::LikelySubtagsExtendedV1Marker>::load(self, req).map(icu_provider::DataResponse::wrap_into_any_response),
+ h if h == <icu::locid_transform::provider::LikelySubtagsForLanguageV1Marker as icu_provider::KeyedDataMarker>::KEY.hashed() => icu_provider::DataProvider::<icu::locid_transform::provider::LikelySubtagsForLanguageV1Marker>::load(self, req).map(icu_provider::DataResponse::wrap_into_any_response),
+ h if h == <icu::locid_transform::provider::LikelySubtagsForScriptRegionV1Marker as icu_provider::KeyedDataMarker>::KEY.hashed() => icu_provider::DataProvider::<icu::locid_transform::provider::LikelySubtagsForScriptRegionV1Marker>::load(self, req).map(icu_provider::DataResponse::wrap_into_any_response),
+ h if h == <icu::locid_transform::provider::ScriptDirectionV1Marker as icu_provider::KeyedDataMarker>::KEY.hashed() => icu_provider::DataProvider::<icu::locid_transform::provider::ScriptDirectionV1Marker>::load(self, req).map(icu_provider::DataResponse::wrap_into_any_response),
+ _ => Err(icu_provider::DataErrorKind::MissingDataKey.with_req(key, req)),
+ }
+ }
+ }
+ };
+}
+#[clippy::msrv = "1.66"]
+pub struct BakedDataProvider;
+impl_data_provider!(BakedDataProvider);
diff --git a/vendor/icu_locid_transform_data/src/lib.rs b/vendor/icu_locid_transform_data/src/lib.rs
new file mode 100644
index 000000000..148784b2a
--- /dev/null
+++ b/vendor/icu_locid_transform_data/src/lib.rs
@@ -0,0 +1,12 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Data for the icu_locid_transform crate
+
+#![no_std]
+
+#[cfg(icu4x_custom_data)]
+include!(concat!(core::env!("ICU4X_DATA_DIR"), "/macros.rs"));
+#[cfg(not(icu4x_custom_data))]
+include!("../data/macros.rs");
diff --git a/vendor/icu_provider/.cargo-checksum.json b/vendor/icu_provider/.cargo-checksum.json
index 74fbe2794..7f1eab958 100644
--- a/vendor/icu_provider/.cargo-checksum.json
+++ b/vendor/icu_provider/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"91f0334222e4989d87479007986eaa7c12f423164e9a3f9d46b1013df04be3c4","LICENSE":"4ad7541d66a407234e2c84902124cef325c29f3e966353efdb800bedb8b8da21","README.md":"5a0e53627e2cc58e59d2a2db16c1f01431bf8dffbfdbca4d0f89eb7be3f501be","src/any.rs":"b36d95520894e831fcbb38c1e54b3db72d1b133fdc63b0ca9277959d9131b8c1","src/buf.rs":"298c88c3f90a274aea98b93d21ec77079d6a4f88790639eb3a8467c410460a3a","src/constructors.rs":"bbb8e0b82d8be54b6992d82df6738c20468e97af5910a22ceda437415ece9c13","src/data_provider.rs":"6527a8c8fdf89226912a2e9f76aaf6939a554658726e6a70ec1830f6ce112fc0","src/datagen/data_conversion.rs":"21c21bb300557f158f77155397a023e1eda22413d66ac0c4f8ce04184fd90b20","src/datagen/iter.rs":"6353ec6476596ae6dfd5aee5f3f420c3a1c1c6e71911fa7dae49e17564e1930f","src/datagen/mod.rs":"061614cc763419774405e6a74ba3ff4d3ca1e901a083762c23faaeb0cdc0e5da","src/datagen/payload.rs":"86fe5b9e1d44ef324c9029ac8a306e55eb602a1de9a042241e2248130ed6d19f","src/dynutil.rs":"cb8f5c457e28c7e03eaf6e2f02469666befd0363959fda6f3ca829e859b3bdf3","src/error.rs":"be8ae6cde04ba4e9ae5ebf8222f393e7080a30c077cafbefa3d7f16243fe5690","src/hello_world.rs":"abbdc2e4b44809040debf7dbeb24dad778b973ca44b49a8c11e336a1f160545a","src/helpers.rs":"ac42bfb7826248bafceefcb7a3fff0c68a487753a75b61ca488cbf19f3569de0","src/key.rs":"15644e7dd480400256b8061dc3f6775f90ceca130518e035cfc59ece2810dd7f","src/lib.rs":"14087853c03d029c325611b47b399192e8759cd3692d3f4b258c5f8af0f3c486","src/marker.rs":"b6fd186d4343586647c1e20e5bfb506cd9ab263204b1901750afaec14441091c","src/request.rs":"7145c6aff5a41973947bd1cdf433041539640f7bfaeafdb7adaaa302e85e89ec","src/response.rs":"f13afcf072e71a79f1a3e8f4279026ada2582c77a7e3f9298d478a4ef1b9adb2","src/serde/borrow_de_utils.rs":"30bd6e712bf413f47c0801df845ed790ab7edcb49f57020b769ffc79c36b4651","src/serde/mod.rs":"740777627f2882a10874f22335dd56c8ba3ad51b770f5f16875e8bf80bf83811"},"package":"8dc312a7b6148f7dfe098047ae2494d12d4034f48ade58d4f353000db376e305"} \ No newline at end of file
+{"files":{"Cargo.toml":"5f7eb2a9547bd334e5bd024d792f8fbf5e59901cb36d76aa3a9e0a13bd6d0aea","LICENSE":"853f87c96f3d249f200fec6db1114427bc8bdf4afddc93c576956d78152ce978","README.md":"38a5e2a91c50fbe3f5ae01b286f4b1aec56b0007ba4b2a3375b317b84cc5e7ef","src/any.rs":"4bc5280de70c0d88dd3de7272a74686a26f338c7172d445633d6728411473109","src/buf.rs":"a72bd393b0714f5b6aa77ca7116269641a2a96fff2ce3aba609973fd927e25f2","src/constructors.rs":"a40379974ba1b0ced0ffc2098cc45eff2409e668babd1c22a0c1bb6de775dbb3","src/data_provider.rs":"6527a8c8fdf89226912a2e9f76aaf6939a554658726e6a70ec1830f6ce112fc0","src/datagen/data_conversion.rs":"ee206413cd754803b1c7e2dd5d24c854f863b4df4c46a22c876cb8fc07bf96e8","src/datagen/iter.rs":"6353ec6476596ae6dfd5aee5f3f420c3a1c1c6e71911fa7dae49e17564e1930f","src/datagen/mod.rs":"6663c8926ca78b6e9b22544418b321ed575ae47ba2335d2befc758ee63deaf37","src/datagen/payload.rs":"33df6d11e40b131a71d2deaa861d819db05ccf6c87ed41a927525763295d9c28","src/dynutil.rs":"97c7d9fed27d73b9998cc770c3b966cca35053465636e227558024a09ee4ce9e","src/error.rs":"b44b46412b67fdbdc52dbf9b151fe880f3d6c90505d0ff18b3e055ffa6564bef","src/fallback.rs":"75a3df052cb2b7c77197f23ab39ce00d31664b030346f49daafc3529a25b5741","src/hello_world.rs":"583fc9a679fb8774909cd159835b67bdb79186ec833a3bc8fdfcac3dbfb581e3","src/key.rs":"c1edeb791c937ccd210452fe04eecaced43a33c41ae28b8bb9285153ddf844fa","src/lib.rs":"5356e395298dc2f7330104a52dd8d3ca1f895fc2a25d4fea3e2f0e8551ecfc53","src/marker.rs":"b6fd186d4343586647c1e20e5bfb506cd9ab263204b1901750afaec14441091c","src/request.rs":"422425b1f7aa2aef1916b0a18bf97941235a18a9edf12377e07bcdfac8eb91cf","src/response.rs":"610da0d50c530fc215a414fdbdb20abf98a1008f9cbd54e0df345bbd41452744","src/serde/borrow_de_utils.rs":"30bd6e712bf413f47c0801df845ed790ab7edcb49f57020b769ffc79c36b4651","src/serde/mod.rs":"b1c1c69d70d3d61c5e8e4b692470d7b7f53fb8a56568c61eaa21414962a928cc"},"package":"68acdef80034b5e35d8524e9817479d389a4f9774f3f0cbe1bf3884d80fd5934"} \ No newline at end of file
diff --git a/vendor/icu_provider/Cargo.toml b/vendor/icu_provider/Cargo.toml
index abfdd7f3c..982f78e03 100644
--- a/vendor/icu_provider/Cargo.toml
+++ b/vendor/icu_provider/Cargo.toml
@@ -11,10 +11,12 @@
[package]
edition = "2021"
+rust-version = "1.66"
name = "icu_provider"
-version = "1.2.0"
+version = "1.3.2"
authors = ["The ICU4X Project Developers"]
include = [
+ "data/**/*",
"src/**/*",
"examples/**/*",
"benches/**/*",
@@ -24,25 +26,28 @@ include = [
"README.md",
]
description = "Trait and struct definitions for the ICU data provider"
+homepage = "https://icu4x.unicode.org"
readme = "README.md"
categories = ["internationalization"]
-license = "Unicode-DFS-2016"
+license-file = "LICENSE"
repository = "https://github.com/unicode-org/icu4x"
-[package.metadata.docs.rs]
-all-features = true
-
[package.metadata.cargo-all-features]
denylist = ["macros"]
+max_combination_size = 3
+
+[package.metadata.docs.rs]
+all-features = true
[dependencies.bincode]
version = "1.3"
optional = true
[dependencies.databake]
-version = "0.1.3"
+version = "0.1.6"
features = ["derive"]
optional = true
+default-features = false
[dependencies.displaydoc]
version = "0.2.3"
@@ -55,11 +60,13 @@ optional = true
default-features = false
[dependencies.icu_locid]
-version = "1.2.0"
+version = "~1.3.2"
+default-features = false
[dependencies.icu_provider_macros]
-version = "1.2.0"
+version = "~1.3.2"
optional = true
+default-features = false
[dependencies.log]
version = "0.4"
@@ -89,20 +96,34 @@ default-features = false
version = "1.2.0"
default-features = false
+[dependencies.tinystr]
+version = "0.7.3"
+default-features = false
+
[dependencies.writeable]
-version = "0.5.1"
+version = "0.5.3"
+default-features = false
[dependencies.yoke]
-version = "0.7.1"
-features = ["derive"]
+version = "0.7.2"
+features = [
+ "alloc",
+ "derive",
+]
+default-features = false
[dependencies.zerofrom]
-version = "0.1.1"
-features = ["derive"]
+version = "0.1.2"
+features = [
+ "alloc",
+ "derive",
+]
+default-features = false
[dependencies.zerovec]
-version = "0.9.4"
+version = "0.10.0"
features = ["derive"]
+default-features = false
[dev-dependencies.serde_json]
version = "1.0"
@@ -128,7 +149,9 @@ deserialize_postcard_1 = [
"serde",
"dep:postcard",
]
-log_error_context = ["dep:log"]
+experimental = []
+log_error_context = ["logging"]
+logging = ["dep:log"]
macros = ["dep:icu_provider_macros"]
serde = [
"dep:serde",
diff --git a/vendor/icu_provider/LICENSE b/vendor/icu_provider/LICENSE
index 9858d01ab..9845aa5f4 100644
--- a/vendor/icu_provider/LICENSE
+++ b/vendor/icu_provider/LICENSE
@@ -1,49 +1,42 @@
-UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
-
-See Terms of Use <https://www.unicode.org/copyright.html>
-for definitions of Unicode Inc.’s Data Files and Software.
-
-NOTICE TO USER: Carefully read the following legal agreement.
-BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
-DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
-YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
-TERMS AND CONDITIONS OF THIS AGREEMENT.
-IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
-THE DATA FILES OR SOFTWARE.
+UNICODE LICENSE V3
COPYRIGHT AND PERMISSION NOTICE
-Copyright © 1991-2022 Unicode, Inc. All rights reserved.
-Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Unicode data files and any associated documentation
-(the "Data Files") or Unicode software and any associated documentation
-(the "Software") to deal in the Data Files or Software
-without restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, and/or sell copies of
-the Data Files or Software, and to permit persons to whom the Data Files
-or Software are furnished to do so, provided that either
-(a) this copyright and permission notice appear with all copies
-of the Data Files or Software, or
-(b) this copyright and permission notice appear in associated
-Documentation.
-
-THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
-NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
-DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THE DATA FILES OR SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale,
-use or other dealings in these Data Files or Software without prior
-written authorization of the copyright holder.
+Copyright © 2020-2023 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
—
diff --git a/vendor/icu_provider/README.md b/vendor/icu_provider/README.md
index fc2f072eb..0dd698b1f 100644
--- a/vendor/icu_provider/README.md
+++ b/vendor/icu_provider/README.md
@@ -1,5 +1,7 @@
# icu_provider [![crates.io](https://img.shields.io/crates/v/icu_provider)](https://crates.io/crates/icu_provider)
+<!-- cargo-rdme start -->
+
`icu_provider` is one of the [`ICU4X`] components.
Unicode's experience with ICU4X's parent projects, ICU4C and ICU4J, led the team to realize
@@ -78,9 +80,6 @@ This crate also contains a concrete provider for demonstration purposes:
- [`HelloWorldProvider`] returns "hello world" strings in several languages.
-If you need a testing provider that contains the actual resource keys used by ICU4X features,
-see the [`icu_testdata`] crate.
-
### Types and Lifetimes
Types compatible with [`Yokeable`] can be passed through the data provider, so long as they are
@@ -114,9 +113,10 @@ data generation implementation.
[`CldrJsonDataProvider`]: ../icu_datagen/cldr/struct.CldrJsonDataProvider.html
[`FsDataProvider`]: ../icu_provider_fs/struct.FsDataProvider.html
[`BlobDataProvider`]: ../icu_provider_blob/struct.BlobDataProvider.html
-[`icu_testdata`]: ../icu_testdata/index.html
[`icu_datagen`]: ../icu_datagen/index.html
+<!-- cargo-rdme end -->
+
## More Information
For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/icu_provider/src/any.rs b/vendor/icu_provider/src/any.rs
index c3af61fed..8e1b3c468 100644
--- a/vendor/icu_provider/src/any.rs
+++ b/vendor/icu_provider/src/any.rs
@@ -5,6 +5,7 @@
//! Traits for data providers that produce `Any` objects.
use crate::prelude::*;
+use crate::response::DataPayloadInner;
use core::any::Any;
use core::convert::TryFrom;
use core::convert::TryInto;
@@ -105,7 +106,7 @@ impl AnyPayload {
let down_ref: &'static M::Yokeable = any_ref
.downcast_ref()
.ok_or_else(|| DataError::for_type::<M>().with_str_context(type_name))?;
- Ok(DataPayload::from_owned(M::Yokeable::zero_from(down_ref)))
+ Ok(DataPayload::from_static_ref(down_ref))
}
PayloadRc(any_rc) => {
let down_rc = any_rc
@@ -166,8 +167,8 @@ where
M: DataMarker,
M::Yokeable: MaybeSendSync,
{
- /// Moves this DataPayload to the heap (requiring an allocation) and returns it as an
- /// erased `AnyPayload`.
+ /// Converts this DataPayload into a type-erased `AnyPayload`. Unless the payload stores a static
+ /// reference, this will move it to the heap.
///
/// # Examples
///
@@ -190,7 +191,10 @@ where
/// ```
pub fn wrap_into_any_payload(self) -> AnyPayload {
AnyPayload {
- inner: AnyPayloadInner::PayloadRc(SelectedRc::from(self)),
+ inner: match self.0 {
+ DataPayloadInner::StaticRef(r) => AnyPayloadInner::StructRef(r),
+ inner => AnyPayloadInner::PayloadRc(SelectedRc::from(Self(inner))),
+ },
type_name: core::any::type_name::<M>(),
}
}
@@ -219,7 +223,7 @@ pub struct AnyResponse {
/// Metadata about the returned object.
pub metadata: DataResponseMetadata,
- /// The object itself; None if it was not loaded.
+ /// The object itself; `None` if it was not loaded.
pub payload: Option<AnyPayload>,
}
@@ -365,7 +369,7 @@ pub trait AsDynamicDataProviderAnyMarkerWrap {
impl<P> AsDynamicDataProviderAnyMarkerWrap for P
where
- P: DynamicDataProvider<AnyMarker>,
+ P: DynamicDataProvider<AnyMarker> + ?Sized,
{
#[inline]
fn as_any_provider(&self) -> DynamicDataProviderAnyMarkerWrap<P> {
diff --git a/vendor/icu_provider/src/buf.rs b/vendor/icu_provider/src/buf.rs
index 5e8264998..1d55e9ff9 100644
--- a/vendor/icu_provider/src/buf.rs
+++ b/vendor/icu_provider/src/buf.rs
@@ -21,9 +21,10 @@ impl DataMarker for BufferMarker {
/// A data provider that returns opaque bytes.
///
/// Generally, these bytes are expected to be deserializable with Serde. To get an object
-/// implementing [`DataProvider`] via Serde, use [`as_deserializing()`], which requires
-/// enabling at least one of the deserialization Cargo features:
+/// implementing [`DataProvider`] via Serde, use [`as_deserializing()`].
///
+/// Passing a `BufferProvider` to a `*_with_buffer_provider` constructor requires enabling
+/// the deserialization Cargo feature for the expected format(s):
/// - `deserialize_json`
/// - `deserialize_postcard_1`
/// - `deserialize_bincode_1`
diff --git a/vendor/icu_provider/src/constructors.rs b/vendor/icu_provider/src/constructors.rs
index 053da0320..f521f1fea 100644
--- a/vendor/icu_provider/src/constructors.rs
+++ b/vendor/icu_provider/src/constructors.rs
@@ -7,7 +7,7 @@
//! One of the key differences between ICU4X and its parent projects, ICU4C and ICU4J, is in how
//! it deals with locale data.
//!
-//! In ICU4X, the data provider is an *explicit argument* whenever it is required by the library.
+//! In ICU4X, data can always be explicitly passed to any function that requires data.
//! This enables ICU4X to achieve the following value propositions:
//!
//! 1. Configurable data sources (machine-readable data file, baked into code, JSON, etc).
@@ -15,21 +15,33 @@
//! 3. Reduced overhead and code size (data is resolved locally at each call site).
//! 4. Explicit support for multiple ICU4X instances sharing data.
//!
-//! In order to achieve these goals, there are 3 versions of all Rust ICU4X functions that
-//! take a data provider argument:
+//! However, as manual data management can be tedious, ICU4X also has a `compiled_data`
+//! default Cargo feature that includes data and makes ICU4X work out-of-the box.
//!
-//! 1. `*_unstable`
-//! 2. `*_with_any_provider`
-//! 3. `*_with_buffer_provider`
+//! Subsequently, there are 4 versions of all Rust ICU4X functions that use data:
+//!
+//! 1. `*`
+//! 2. `*_unstable`
+//! 3. `*_with_any_provider`
+//! 4. `*_with_buffer_provider`
//!
//! # Which constructor should I use?
//!
+//! ## When to use `*`
+//!
+//! If you don't want to customize data at runtime (i.e. if you don't care about code size,
+//! updating your data, etc.) you can use the `compiled_data` Cargo feature and don't have to think
+//! about where your data comes from.
+//!
+//! These constructors are sometimes `const` functions, this way Rust can most effectively optimize
+//! your usage of ICU4X.
+//!
//! ## When to use `*_unstable`
//!
//! Use this constructor if your data provider implements the [`DataProvider`] trait for all
//! data structs in *current and future* ICU4X versions. Examples:
//!
-//! 1. `BakedDataProvider` auto-regenerated on new ICU4X versions
+//! 1. `BakedDataProvider` generated for the specific ICU4X minor version
//! 2. Anything with a _blanket_ [`DataProvider`] impl
//!
//! Since the exact set of bounds may change at any time, including in minor SemVer releases,
@@ -52,9 +64,9 @@
//!
//! 1. [`BlobDataProvider`]
//! 2. [`FsDataProvider`]
-//! 3. [`ForkByKeyProvider`] between any of the above
+//! 3. [`ForkByKeyProvider`] between two providers implementing [`BufferProvider`]
//!
-//! Please note that you must enable the `"serde"` Cargo feature on each crate in which you use the
+//! Please note that you must enable the `serde` Cargo feature on each crate in which you use the
//! `*_with_buffer_provider` constructor.
//!
//! # Data Versioning Policy
@@ -66,7 +78,7 @@
//! version 1.2 will be able to read the same data file. Likewise, backwards-compatible keys can
//! always be included by `icu_datagen` to support older library versions.
//!
-//! The `*_unstable` functions are only guaranteed to work on data built for the exact same version
+//! The `*_unstable` functions are only guaranteed to work on data built for the exact same minor version
//! of ICU4X. The advantage of the `*_unstable` functions is that they result in the smallest code
//! size and allow for automatic data slicing when `BakedDataProvider` is used. However, the type
//! bounds of this function may change over time, breaking SemVer guarantees. These functions
@@ -76,20 +88,19 @@
//! # Data Providers Over FFI
//!
//! Over FFI, there is only one data provider type: [`ICU4XDataProvider`]. Internally, it is an
-//! `enum` between `dyn `[`AnyProvider`] and `dyn `[`BufferProvider`].
+//! `enum` between`dyn `[`BufferProvider`] and a unit compiled data variant.
//!
-//! To control for code size, there are two Cargo features, `any_provider` and `buffer_provider`,
+//! To control for code size, there are two Cargo features, `compiled_data` and `buffer_provider`,
//! that enable the corresponding items in the enum.
//!
-//! In Rust ICU4X, a similar buffer/any enum approach was not taken because:
+//! In Rust ICU4X, a similar enum approach was not taken because:
//!
//! 1. Feature-gating the enum branches gets complex across crates.
//! 2. Without feature gating, users need to carry Serde code even if they're not using it,
//! violating one of the core value propositions of ICU4X.
-//! 3. We could reduce the number of constructors from 3 to 2 but not to 1, so the educational
+//! 3. We could reduce the number of constructors from 4 to 2 but not to 1, so the educational
//! benefit is limited.
//!
-//!
//! [`DataProvider`]: crate::DataProvider
//! [`BufferProvider`]: crate::BufferProvider
//! [`AnyProvider`]: crate::AnyProvider
@@ -99,3 +110,264 @@
//! [`StaticDataProvider`]: ../../icu_provider_blob/struct.StaticDataProvider.html
//! [`FsDataProvider`]: ../../icu_provider_blob/struct.FsDataProvider.html
//! [`ICU4XDataProvider`]: ../../icu_capi/provider/ffi/struct.ICU4XDataProvider.html
+
+#[doc(hidden)]
+#[macro_export]
+macro_rules! gen_any_buffer_unstable_docs {
+ (ANY, $data:path) => {
+ concat!(
+ "A version of [`", stringify!($data), "`] that uses custom data ",
+ "provided by an [`AnyProvider`](icu_provider::AnyProvider).\n\n",
+ "[📚 Help choosing a constructor](icu_provider::constructors)",
+ )
+ };
+ (BUFFER, $data:path) => {
+ concat!(
+ "A version of [`", stringify!($data), "`] that uses custom data ",
+ "provided by a [`BufferProvider`](icu_provider::BufferProvider).\n\n",
+ "✨ *Enabled with the `serde` feature.*\n\n",
+ "[📚 Help choosing a constructor](icu_provider::constructors)",
+ )
+ };
+ (UNSTABLE, $data:path) => {
+ concat!(
+ "A version of [`", stringify!($data), "`] that uses custom data ",
+ "provided by a [`DataProvider`](icu_provider::DataProvider).\n\n",
+ "[📚 Help choosing a constructor](icu_provider::constructors)\n\n",
+ "<div class=\"stab unstable\">âš ï¸ The bounds on <tt>provider</tt> may change over time, including in SemVer minor releases.</div>"
+ )
+ };
+}
+
+#[allow(clippy::crate_in_macro_def)] // by convention each crate's data provider is `crate::provider::Baked`
+#[doc(hidden)]
+#[macro_export]
+macro_rules! gen_any_buffer_data_constructors {
+ (locale: skip, options: skip, error: $error_ty:path, $(#[$doc:meta])+) => {
+ $crate::gen_any_buffer_data_constructors!(
+ locale: skip,
+ options: skip,
+ error: $error_ty,
+ $(#[$doc])+
+ functions: [
+ try_new,
+ try_new_with_any_provider,
+ try_new_with_buffer_provider,
+ try_new_unstable,
+ Self,
+ ]
+ );
+ };
+ (locale: skip, options: skip, error: $error_ty:path, $(#[$doc:meta])+ functions: [$baked:ident, $any:ident, $buffer:ident, $unstable:ident $(, $struct:ident)? $(,)?]) => {
+ #[cfg(feature = "compiled_data")]
+ $(#[$doc])+
+ pub fn $baked() -> Result<Self, $error_ty> {
+ $($struct :: )? $unstable(&crate::provider::Baked)
+ }
+ #[doc = $crate::gen_any_buffer_unstable_docs!(ANY, $($struct ::)? $baked)]
+ pub fn $any(provider: &(impl $crate::AnyProvider + ?Sized)) -> Result<Self, $error_ty> {
+ use $crate::AsDowncastingAnyProvider;
+ $($struct :: )? $unstable(&provider.as_downcasting())
+ }
+ #[cfg(feature = "serde")]
+ #[doc = $crate::gen_any_buffer_unstable_docs!(BUFFER, $($struct ::)? $baked)]
+ pub fn $buffer(provider: &(impl $crate::BufferProvider + ?Sized)) -> Result<Self, $error_ty> {
+ use $crate::AsDeserializingBufferProvider;
+ $($struct :: )? $unstable(&provider.as_deserializing())
+ }
+ };
+
+
+ (locale: skip, options: skip, result: $result_ty:path, $(#[$doc:meta])+ functions: [$baked:ident, $any:ident, $buffer:ident, $unstable:ident $(, $struct:ident)? $(,)?]) => {
+ #[cfg(feature = "compiled_data")]
+ $(#[$doc])+
+ pub fn $baked() -> $result_ty {
+ $($struct :: )? $unstable(&crate::provider::Baked)
+ }
+ #[doc = $crate::gen_any_buffer_unstable_docs!(ANY, $($struct ::)? $baked)]
+ pub fn $any(provider: &(impl $crate::AnyProvider + ?Sized)) -> $result_ty {
+ use $crate::AsDowncastingAnyProvider;
+ $($struct :: )? $unstable(&provider.as_downcasting())
+ }
+ #[cfg(feature = "serde")]
+ #[doc = $crate::gen_any_buffer_unstable_docs!(BUFFER, $($struct ::)? $baked)]
+ pub fn $buffer(provider: &(impl $crate::BufferProvider + ?Sized)) -> $result_ty {
+ use $crate::AsDeserializingBufferProvider;
+ $($struct :: )? $unstable(&provider.as_deserializing())
+ }
+ };
+
+ (locale: skip, $options_arg:ident: $options_ty:ty, error: $error_ty:path, $(#[$doc:meta])+) => {
+ $crate::gen_any_buffer_data_constructors!(
+ locale: skip,
+ $options_arg: $options_ty,
+ error: $error_ty,
+ $(#[$doc])+
+ functions: [
+ try_new,
+ try_new_with_any_provider,
+ try_new_with_buffer_provider,
+ try_new_unstable,
+ Self,
+ ]
+ );
+ };
+ (locale: skip, $options_arg:ident: $options_ty:ty, result: $result_ty:ty, $(#[$doc:meta])+ functions: [$baked:ident, $any:ident, $buffer:ident, $unstable:ident $(, $struct:ident)? $(,)?]) => {
+ #[cfg(feature = "compiled_data")]
+ $(#[$doc])+
+ ///
+ /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+ ///
+ /// [📚 Help choosing a constructor](icu_provider::constructors)
+ pub fn $baked($options_arg: $options_ty) -> $result_ty {
+ $($struct :: )? $unstable(&crate::provider::Baked, $options_arg)
+ }
+ #[doc = $crate::gen_any_buffer_unstable_docs!(ANY, $($struct ::)? $baked)]
+ pub fn $any(provider: &(impl $crate::AnyProvider + ?Sized), $options_arg: $options_ty) -> $result_ty {
+ use $crate::AsDowncastingAnyProvider;
+ $($struct :: )? $unstable(&provider.as_downcasting(), $options_arg)
+ }
+ #[cfg(feature = "serde")]
+ #[doc = $crate::gen_any_buffer_unstable_docs!(BUFFER, $($struct ::)? $baked)]
+ pub fn $buffer(provider: &(impl $crate::BufferProvider + ?Sized), $options_arg: $options_ty) -> $result_ty {
+ use $crate::AsDeserializingBufferProvider;
+ $($struct :: )? $unstable(&provider.as_deserializing(), $options_arg)
+ }
+ };
+ (locale: skip, $options_arg:ident: $options_ty:ty, error: $error_ty:ty, $(#[$doc:meta])+ functions: [$baked:ident, $any:ident, $buffer:ident, $unstable:ident $(, $struct:ident)? $(,)?]) => {
+ #[cfg(feature = "compiled_data")]
+ $(#[$doc])+
+ ///
+ /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+ ///
+ /// [📚 Help choosing a constructor](icu_provider::constructors)
+ pub fn $baked($options_arg: $options_ty) -> Result<Self, $error_ty> {
+ $($struct :: )? $unstable(&crate::provider::Baked, $options_arg)
+ }
+ #[doc = $crate::gen_any_buffer_unstable_docs!(ANY, $($struct ::)? $baked)]
+ pub fn $any(provider: &(impl $crate::AnyProvider + ?Sized), $options_arg: $options_ty) -> Result<Self, $error_ty> {
+ use $crate::AsDowncastingAnyProvider;
+ $($struct :: )? $unstable(&provider.as_downcasting(), $options_arg)
+ }
+ #[cfg(feature = "serde")]
+ #[doc = $crate::gen_any_buffer_unstable_docs!(BUFFER, $($struct ::)? $baked)]
+ pub fn $buffer(provider: &(impl $crate::BufferProvider + ?Sized), $options_arg: $options_ty) -> Result<Self, $error_ty> {
+ use $crate::AsDeserializingBufferProvider;
+ $($struct :: )? $unstable(&provider.as_deserializing(), $options_arg)
+ }
+ };
+ (locale: include, options: skip, error: $error_ty:path, $(#[$doc:meta])+) => {
+ $crate::gen_any_buffer_data_constructors!(
+ locale: include,
+ options: skip,
+ error: $error_ty,
+ $(#[$doc])+
+ functions: [
+ try_new,
+ try_new_with_any_provider,
+ try_new_with_buffer_provider,
+ try_new_unstable,
+ Self,
+ ]
+ );
+ };
+ (locale: include, options: skip, error: $error_ty:path, $(#[$doc:meta])+ functions: [$baked:ident, $any:ident, $buffer:ident, $unstable:ident $(, $struct:ident)? $(,)?]) => {
+ #[cfg(feature = "compiled_data")]
+ $(#[$doc])+
+ ///
+ /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+ ///
+ /// [📚 Help choosing a constructor](icu_provider::constructors)
+ pub fn $baked(locale: &$crate::DataLocale) -> Result<Self, $error_ty> {
+ $($struct :: )? $unstable(&crate::provider::Baked, locale)
+ }
+ #[doc = $crate::gen_any_buffer_unstable_docs!(ANY, $($struct ::)? $baked)]
+ pub fn $any(provider: &(impl $crate::AnyProvider + ?Sized), locale: &$crate::DataLocale) -> Result<Self, $error_ty> {
+ use $crate::AsDowncastingAnyProvider;
+ $($struct :: )? $unstable(&provider.as_downcasting(), locale)
+ }
+ #[cfg(feature = "serde")]
+ #[doc = $crate::gen_any_buffer_unstable_docs!(BUFFER, $($struct ::)? $baked)]
+ pub fn $buffer(provider: &(impl $crate::BufferProvider + ?Sized), locale: &$crate::DataLocale) -> Result<Self, $error_ty> {
+ use $crate::AsDeserializingBufferProvider;
+ $($struct :: )? $unstable(&provider.as_deserializing(), locale)
+ }
+ };
+
+ (locale: include, $config_arg:ident: $config_ty:path, $options_arg:ident: $options_ty:path, error: $error_ty:path, $(#[$doc:meta])+) => {
+ $crate::gen_any_buffer_data_constructors!(
+ locale: include,
+ $config_arg: $config_ty,
+ $options_arg: $options_ty,
+ error: $error_ty,
+ $(#[$doc])+
+ functions: [
+ try_new,
+ try_new_with_any_provider,
+ try_new_with_buffer_provider,
+ try_new_unstable,
+ Self,
+ ]
+ );
+ };
+ (locale: include, $config_arg:ident: $config_ty:path, $options_arg:ident: $options_ty:path, error: $error_ty:path, $(#[$doc:meta])+ functions: [$baked:ident, $any:ident, $buffer:ident, $unstable:ident $(, $struct:ident)? $(,)?]) => {
+ #[cfg(feature = "compiled_data")]
+ $(#[$doc])+
+ ///
+ /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+ ///
+ /// [📚 Help choosing a constructor](icu_provider::constructors)
+ pub fn $baked(locale: &$crate::DataLocale, $config_arg: $config_ty, $options_arg: $options_ty) -> Result<Self, $error_ty> {
+ $($struct :: )? $unstable(&crate::provider::Baked, locale, $config_arg, $options_arg)
+ }
+ #[doc = $crate::gen_any_buffer_unstable_docs!(ANY, $($struct ::)? $baked)]
+ pub fn $any(provider: &(impl $crate::AnyProvider + ?Sized), locale: &$crate::DataLocale, $config_arg: $config_ty, $options_arg: $options_ty) -> Result<Self, $error_ty> {
+ use $crate::AsDowncastingAnyProvider;
+ $($struct :: )? $unstable(&provider.as_downcasting(), locale, $config_arg, $options_arg)
+ }
+ #[cfg(feature = "serde")]
+ #[doc = $crate::gen_any_buffer_unstable_docs!(BUFFER, $($struct ::)? $baked)]
+ pub fn $buffer(provider: &(impl $crate::BufferProvider + ?Sized), locale: &$crate::DataLocale, $config_arg: $config_ty, $options_arg: $options_ty) -> Result<Self, $error_ty> {
+ use $crate::AsDeserializingBufferProvider;
+ $($struct :: )? $unstable(&provider.as_deserializing(), locale, $config_arg, $options_arg)
+ }
+ };
+
+ (locale: include, $options_arg:ident: $options_ty:path, error: $error_ty:path, $(#[$doc:meta])+) => {
+ $crate::gen_any_buffer_data_constructors!(
+ locale: include,
+ $options_arg: $options_ty,
+ error: $error_ty,
+ $(#[$doc])+
+ functions: [
+ try_new,
+ try_new_with_any_provider,
+ try_new_with_buffer_provider,
+ try_new_unstable,
+ Self,
+ ]
+ );
+ };
+ (locale: include, $options_arg:ident: $options_ty:path, error: $error_ty:path, $(#[$doc:meta])+ functions: [$baked:ident, $any:ident, $buffer:ident, $unstable:ident $(, $struct:ident)? $(,)?]) => {
+ #[cfg(feature = "compiled_data")]
+ $(#[$doc])+
+ ///
+ /// ✨ *Enabled with the `compiled_data` Cargo feature.*
+ ///
+ /// [📚 Help choosing a constructor](icu_provider::constructors)
+ pub fn $baked(locale: &$crate::DataLocale, $options_arg: $options_ty) -> Result<Self, $error_ty> {
+ $($struct :: )? $unstable(&crate::provider::Baked, locale, $options_arg)
+ }
+ #[doc = $crate::gen_any_buffer_unstable_docs!(ANY, $($struct ::)? $baked)]
+ pub fn $any(provider: &(impl $crate::AnyProvider + ?Sized), locale: &$crate::DataLocale, $options_arg: $options_ty) -> Result<Self, $error_ty> {
+ use $crate::AsDowncastingAnyProvider;
+ $($struct :: )? $unstable(&provider.as_downcasting(), locale, $options_arg)
+ }
+ #[cfg(feature = "serde")]
+ #[doc = $crate::gen_any_buffer_unstable_docs!(BUFFER, $($struct ::)? $baked)]
+ pub fn $buffer(provider: &(impl $crate::BufferProvider + ?Sized), locale: &$crate::DataLocale, $options_arg: $options_ty) -> Result<Self, $error_ty> {
+ use $crate::AsDeserializingBufferProvider;
+ $($struct :: )? $unstable(&provider.as_deserializing(), locale, $options_arg)
+ }
+ };
+}
diff --git a/vendor/icu_provider/src/datagen/data_conversion.rs b/vendor/icu_provider/src/datagen/data_conversion.rs
index 59146352a..f3ca948e1 100644
--- a/vendor/icu_provider/src/datagen/data_conversion.rs
+++ b/vendor/icu_provider/src/datagen/data_conversion.rs
@@ -9,16 +9,12 @@ use alloc::boxed::Box;
/// A trait that allows for converting between data payloads of different types.
///
/// These payloads will typically be some kind of erased payload, either with
-/// AnyMarker, BufferMarker, or SerializeMarker, where converting requires reifying the type.
+/// [`AnyMarker`], [`BufferMarker`], or [`ExportMarker`](crate::datagen::ExportMarker), where converting
+/// requires reifying the type.
+///
/// A type implementing [`DataConverter`] will essentially have a "registry" mapping keys to
/// concrete marker types M, and reifying the input to a `DataPayload<M>`, performing some conversion
/// or computation, and erasing the result to `DataPayload<MTo>`.
-///
-/// It will typically be implemented on data providers used in datagen.
-///
-/// The [`make_exportable_provider!`] macro is able to automatically implement this trait.
-///
-/// [`make_exportable_provider!`]: crate::make_exportable_provider
pub trait DataConverter<MFrom: DataMarker, MTo: DataMarker> {
/// Attempt to convert a payload corresponding to the given data key
/// from one marker type to another marker type.
diff --git a/vendor/icu_provider/src/datagen/mod.rs b/vendor/icu_provider/src/datagen/mod.rs
index 6596a0c07..ae1779ab3 100644
--- a/vendor/icu_provider/src/datagen/mod.rs
+++ b/vendor/icu_provider/src/datagen/mod.rs
@@ -21,6 +21,14 @@ pub use payload::{ExportBox, ExportMarker};
use crate::prelude::*;
+/// The type of built-in fallback that the data was generated for, if applicable.
+#[derive(Debug, Copy, Clone, PartialEq, Eq)]
+#[non_exhaustive]
+pub enum BuiltInFallbackMode {
+ /// Data uses full UTS 35 fallbacking.
+ Standard,
+}
+
/// An object capable of exporting data payloads in some form.
pub trait DataExporter: Sync {
/// Save a `payload` corresponding to the given key and locale.
@@ -32,7 +40,34 @@ pub trait DataExporter: Sync {
payload: &DataPayload<ExportMarker>,
) -> Result<(), DataError>;
- /// Function called after all keys have been fully dumped.
+ /// Function called for singleton keys.
+ /// Takes non-mut self as it can be called concurrently.
+ fn flush_singleton(
+ &self,
+ key: DataKey,
+ payload: &DataPayload<ExportMarker>,
+ ) -> Result<(), DataError> {
+ self.put_payload(key, &Default::default(), payload)?;
+ self.flush(key)
+ }
+
+ /// Function called after a non-singleton key has been fully enumerated,
+ /// flushing that key with built-in fallback.
+ ///
+ /// Takes non-mut self as it can be called concurrently.
+ fn flush_with_built_in_fallback(
+ &self,
+ _key: DataKey,
+ _fallback_mode: BuiltInFallbackMode,
+ ) -> Result<(), DataError> {
+ Err(DataError::custom(
+ "Exporter does not implement built-in fallback",
+ ))
+ }
+
+ /// Function called after a non-singleton key has been fully enumerated.
+ /// Does not include built-in fallback.
+ ///
/// Takes non-mut self as it can be called concurrently.
fn flush(&self, _key: DataKey) -> Result<(), DataError> {
Ok(())
@@ -44,13 +79,26 @@ pub trait DataExporter: Sync {
fn close(&mut self) -> Result<(), DataError> {
Ok(())
}
+
+ /// Returns whether the provider supports built-in fallback. If `true`, the provider must
+ /// implement [`Self::flush_with_built_in_fallback()`].
+ fn supports_built_in_fallback(&self) -> bool {
+ false
+ }
}
/// A [`DynamicDataProvider`] that can be used for exporting data.
///
/// Use [`make_exportable_provider`](crate::make_exportable_provider) to implement this.
-pub trait ExportableProvider: IterableDynamicDataProvider<ExportMarker> + Sync {}
-impl<T> ExportableProvider for T where T: IterableDynamicDataProvider<ExportMarker> + Sync {}
+pub trait ExportableProvider:
+ IterableDynamicDataProvider<ExportMarker> + DynamicDataProvider<AnyMarker> + Sync
+{
+}
+
+impl<T> ExportableProvider for T where
+ T: IterableDynamicDataProvider<ExportMarker> + DynamicDataProvider<AnyMarker> + Sync
+{
+}
/// This macro can be used on a data provider to allow it to be used for data generation.
///
@@ -66,28 +114,24 @@ impl<T> ExportableProvider for T where T: IterableDynamicDataProvider<ExportMark
/// [`BakedDataProvider`]: ../../icu_datagen/index.html
#[macro_export]
macro_rules! make_exportable_provider {
- ($provider:ty, [ $($struct_m:ident),+, ]) => {
+ ($provider:ty, [ $($(#[$cfg:meta])? $struct_m:ty),+, ]) => {
$crate::impl_dynamic_data_provider!(
$provider,
- [ $($struct_m),+, ],
+ [ $($(#[$cfg])? $struct_m),+, ],
$crate::datagen::ExportMarker
);
$crate::impl_dynamic_data_provider!(
$provider,
- [ $($struct_m),+, ],
+ [ $($(#[$cfg])? $struct_m),+, ],
$crate::any::AnyMarker
);
impl $crate::datagen::IterableDynamicDataProvider<$crate::datagen::ExportMarker> for $provider {
fn supported_locales_for_key(&self, key: $crate::DataKey) -> Result<Vec<$crate::DataLocale>, $crate::DataError> {
- #![allow(non_upper_case_globals)]
- // Reusing the struct names as identifiers
- $(
- const $struct_m: $crate::DataKeyHash = <$struct_m as $crate::KeyedDataMarker>::KEY.hashed();
- )+
match key.hashed() {
$(
- $struct_m => {
+ $(#[$cfg])?
+ h if h == <$struct_m as $crate::KeyedDataMarker>::KEY.hashed() => {
$crate::datagen::IterableDataProvider::<$struct_m>::supported_locales(self)
}
)+,
@@ -97,3 +141,63 @@ macro_rules! make_exportable_provider {
}
};
}
+
+/// A `DataExporter` that forks to multiple `DataExporter`s.
+#[derive(Default)]
+pub struct MultiExporter(Vec<Box<dyn DataExporter>>);
+
+impl MultiExporter {
+ /// Creates a `MultiExporter` for the given exporters.
+ pub const fn new(exporters: Vec<Box<dyn DataExporter>>) -> Self {
+ Self(exporters)
+ }
+}
+
+impl core::fmt::Debug for MultiExporter {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ f.debug_struct("MultiExporter")
+ .field("0", &format!("vec[len = {}]", self.0.len()))
+ .finish()
+ }
+}
+
+impl DataExporter for MultiExporter {
+ fn put_payload(
+ &self,
+ key: DataKey,
+ locale: &DataLocale,
+ payload: &DataPayload<ExportMarker>,
+ ) -> Result<(), DataError> {
+ self.0
+ .iter()
+ .try_for_each(|e| e.put_payload(key, locale, payload))
+ }
+
+ fn flush_singleton(
+ &self,
+ key: DataKey,
+ payload: &DataPayload<ExportMarker>,
+ ) -> Result<(), DataError> {
+ self.0
+ .iter()
+ .try_for_each(|e| e.flush_singleton(key, payload))
+ }
+
+ fn flush(&self, key: DataKey) -> Result<(), DataError> {
+ self.0.iter().try_for_each(|e| e.flush(key))
+ }
+
+ fn flush_with_built_in_fallback(
+ &self,
+ key: DataKey,
+ fallback_mode: BuiltInFallbackMode,
+ ) -> Result<(), DataError> {
+ self.0
+ .iter()
+ .try_for_each(|e| e.flush_with_built_in_fallback(key, fallback_mode))
+ }
+
+ fn close(&mut self) -> Result<(), DataError> {
+ self.0.iter_mut().try_for_each(|e| e.close())
+ }
+}
diff --git a/vendor/icu_provider/src/datagen/payload.rs b/vendor/icu_provider/src/datagen/payload.rs
index c0d0a8bb9..97e540b07 100644
--- a/vendor/icu_provider/src/datagen/payload.rs
+++ b/vendor/icu_provider/src/datagen/payload.rs
@@ -2,24 +2,29 @@
// called LICENSE at the top level of the ICU4X source tree
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+use core::any::Any;
+
use crate::dynutil::UpcastDataPayload;
use crate::prelude::*;
use alloc::boxed::Box;
use databake::{Bake, CrateEnv, TokenStream};
+use yoke::trait_hack::YokeTraitHack;
use yoke::*;
-trait ExportableYoke {
+trait ExportableDataPayload {
fn bake_yoke(&self, env: &CrateEnv) -> TokenStream;
fn serialize_yoke(
&self,
serializer: &mut dyn erased_serde::Serializer,
) -> Result<(), DataError>;
+ fn as_any(&self) -> &dyn Any;
+ fn eq_dyn(&self, other: &dyn ExportableDataPayload) -> bool;
}
-impl<Y, C> ExportableYoke for Yoke<Y, C>
+impl<M: DataMarker> ExportableDataPayload for DataPayload<M>
where
- Y: for<'a> Yokeable<'a>,
- for<'a> <Y as Yokeable<'a>>::Output: Bake + serde::Serialize,
+ for<'a> <M::Yokeable as Yokeable<'a>>::Output: Bake + serde::Serialize,
+ for<'a> YokeTraitHack<<M::Yokeable as Yokeable<'a>>::Output>: PartialEq,
{
fn bake_yoke(&self, ctx: &CrateEnv) -> TokenStream {
self.get().bake(ctx)
@@ -35,12 +40,37 @@ where
.map_err(|e| DataError::custom("Serde export").with_display_context(&e))?;
Ok(())
}
+
+ fn as_any(&self) -> &dyn Any {
+ self
+ }
+
+ fn eq_dyn(&self, other: &dyn ExportableDataPayload) -> bool {
+ match other.as_any().downcast_ref::<Self>() {
+ Some(downcasted) => (*self).eq(downcasted),
+ None => {
+ debug_assert!(
+ false,
+ "cannot compare ExportableDataPayloads of different types: self is {:?} but other is {:?}",
+ self.type_id(),
+ other.as_any().type_id(),
+ );
+ false
+ }
+ }
+ }
}
#[doc(hidden)] // exposed for make_exportable_provider
#[derive(yoke::Yokeable)]
pub struct ExportBox {
- payload: Box<dyn ExportableYoke + Sync>,
+ payload: Box<dyn ExportableDataPayload + Sync + Send>,
+}
+
+impl PartialEq for ExportBox {
+ fn eq(&self, other: &Self) -> bool {
+ self.payload.eq_dyn(&*other.payload)
+ }
}
impl core::fmt::Debug for ExportBox {
@@ -54,12 +84,13 @@ impl core::fmt::Debug for ExportBox {
impl<M> UpcastDataPayload<M> for ExportMarker
where
M: DataMarker,
- M::Yokeable: Sync,
+ M::Yokeable: Sync + Send,
for<'a> <M::Yokeable as Yokeable<'a>>::Output: Bake + serde::Serialize,
+ for<'a> YokeTraitHack<<M::Yokeable as Yokeable<'a>>::Output>: PartialEq,
{
fn upcast(other: DataPayload<M>) -> DataPayload<ExportMarker> {
DataPayload::from_owned(ExportBox {
- payload: Box::new(other.yoke),
+ payload: Box::new(other),
})
}
}
@@ -117,7 +148,7 @@ impl DataPayload<ExportMarker> {
/// let tokens = export.tokenize(&env);
/// assert_eq!(
/// quote! {
- /// ::icu_provider::hello_world::HelloWorldV1 {
+ /// icu_provider::hello_world::HelloWorldV1 {
/// message: alloc::borrow::Cow::Borrowed("(und) Hello World"),
/// }
/// }
@@ -144,3 +175,55 @@ pub struct ExportMarker {}
impl DataMarker for ExportMarker {
type Yokeable = ExportBox;
}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+ use crate::hello_world::*;
+
+ #[test]
+ fn test_compare_with_dyn() {
+ let payload1: DataPayload<HelloWorldV1Marker> = DataPayload::from_owned(HelloWorldV1 {
+ message: "abc".into(),
+ });
+ let payload2: DataPayload<HelloWorldV1Marker> = DataPayload::from_owned(HelloWorldV1 {
+ message: "abc".into(),
+ });
+ let payload3: DataPayload<HelloWorldV1Marker> = DataPayload::from_owned(HelloWorldV1 {
+ message: "def".into(),
+ });
+
+ assert!(payload1.eq_dyn(&payload2));
+ assert!(payload2.eq_dyn(&payload1));
+
+ assert!(!payload1.eq_dyn(&payload3));
+ assert!(!payload3.eq_dyn(&payload1));
+ }
+
+ #[test]
+ fn test_export_marker_partial_eq() {
+ let payload1: DataPayload<ExportMarker> =
+ UpcastDataPayload::upcast(DataPayload::<HelloWorldV1Marker>::from_owned(
+ HelloWorldV1 {
+ message: "abc".into(),
+ },
+ ));
+ let payload2: DataPayload<ExportMarker> =
+ UpcastDataPayload::upcast(DataPayload::<HelloWorldV1Marker>::from_owned(
+ HelloWorldV1 {
+ message: "abc".into(),
+ },
+ ));
+ let payload3: DataPayload<ExportMarker> =
+ UpcastDataPayload::upcast(DataPayload::<HelloWorldV1Marker>::from_owned(
+ HelloWorldV1 {
+ message: "def".into(),
+ },
+ ));
+
+ assert_eq!(payload1, payload2);
+ assert_eq!(payload2, payload1);
+ assert_ne!(payload1, payload3);
+ assert_ne!(payload3, payload1);
+ }
+}
diff --git a/vendor/icu_provider/src/dynutil.rs b/vendor/icu_provider/src/dynutil.rs
index 5e1491e51..8ad7b7aa1 100644
--- a/vendor/icu_provider/src/dynutil.rs
+++ b/vendor/icu_provider/src/dynutil.rs
@@ -192,12 +192,9 @@ macro_rules! impl_dynamic_data_provider {
$crate::DataResponse<$dyn_m>,
$crate::DataError,
> {
- $(
- const $ident: $crate::DataKeyHash = $key.hashed();
- )+
match key.hashed() {
$(
- $ident => {
+ h if h == $key.hashed() => {
let result: $crate::DataResponse<$struct_m> =
$crate::DynamicDataProvider::<$struct_m>::load_data(self, key, req)?;
Ok($crate::DataResponse {
@@ -226,7 +223,7 @@ macro_rules! impl_dynamic_data_provider {
}
};
- ($provider:ty, [ $($struct_m:ident),+, ], $dyn_m:path) => {
+ ($provider:ty, [ $($(#[$cfg:meta])? $struct_m:ty),+, ], $dyn_m:path) => {
impl $crate::DynamicDataProvider<$dyn_m> for $provider
{
fn load_data(
@@ -237,14 +234,10 @@ macro_rules! impl_dynamic_data_provider {
$crate::DataResponse<$dyn_m>,
$crate::DataError,
> {
- #![allow(non_upper_case_globals)]
- // Reusing the struct names as identifiers
- $(
- const $struct_m: $crate::DataKeyHash = $struct_m::KEY.hashed();
- )+
match key.hashed() {
$(
- $struct_m => {
+ $(#[$cfg])?
+ h if h == <$struct_m>::KEY.hashed() => {
let result: $crate::DataResponse<$struct_m> =
$crate::DataProvider::load(self, req)?;
Ok($crate::DataResponse {
diff --git a/vendor/icu_provider/src/error.rs b/vendor/icu_provider/src/error.rs
index 23f141e02..5fc19d1a0 100644
--- a/vendor/icu_provider/src/error.rs
+++ b/vendor/icu_provider/src/error.rs
@@ -47,6 +47,10 @@ pub enum DataErrorKind {
#[displaydoc("Invalid state")]
InvalidState,
+ /// The syntax of the [`DataKey`] or [`DataLocale`] was invalid.
+ #[displaydoc("Parse error for data key or data locale")]
+ KeyLocaleSyntax,
+
/// An unspecified error occurred, such as a Serde error.
///
/// Check debug logs for potentially more information.
@@ -198,20 +202,24 @@ impl DataError {
/// Sets the string context of a DataError to the given type name, returning a modified error.
#[inline]
pub fn with_type_context<T>(self) -> Self {
+ #[cfg(feature = "logging")]
+ if !self.silent {
+ log::warn!("{self}: Type context: {}", core::any::type_name::<T>());
+ }
self.with_str_context(core::any::type_name::<T>())
}
/// Logs the data error with the given request, returning an error containing the resource key.
///
- /// If the "log_error_context" Cargo feature is enabled, this logs the whole request. Either way,
+ /// If the "logging" Cargo feature is enabled, this logs the whole request. Either way,
/// it returns an error with the resource key portion of the request as context.
- #[cfg_attr(not(feature = "log_error_context"), allow(unused_variables))]
+ #[cfg_attr(not(feature = "logging"), allow(unused_variables))]
pub fn with_req(mut self, key: DataKey, req: DataRequest) -> Self {
if req.metadata.silent {
self.silent = true;
}
// Don't write out a log for MissingDataKey since there is no context to add
- #[cfg(feature = "log_error_context")]
+ #[cfg(feature = "logging")]
if !self.silent && self.kind != DataErrorKind::MissingDataKey {
log::warn!("{} (key: {}, request: {})", self, key, req);
}
@@ -220,12 +228,12 @@ impl DataError {
/// Logs the data error with the given context, then return self.
///
- /// This does not modify the error, but if the "log_error_context" Cargo feature is enabled,
+ /// This does not modify the error, but if the "logging" Cargo feature is enabled,
/// it will print out the context.
#[cfg(feature = "std")]
- #[cfg_attr(not(feature = "log_error_context"), allow(unused_variables))]
+ #[cfg_attr(not(feature = "logging"), allow(unused_variables))]
pub fn with_path_context<P: AsRef<std::path::Path> + ?Sized>(self, path: &P) -> Self {
- #[cfg(feature = "log_error_context")]
+ #[cfg(feature = "logging")]
if !self.silent {
log::warn!("{} (path: {:?})", self, path.as_ref());
}
@@ -234,12 +242,12 @@ impl DataError {
/// Logs the data error with the given context, then return self.
///
- /// This does not modify the error, but if the "log_error_context" Cargo feature is enabled,
+ /// This does not modify the error, but if the "logging" Cargo feature is enabled,
/// it will print out the context.
- #[cfg_attr(not(feature = "log_error_context"), allow(unused_variables))]
+ #[cfg_attr(not(feature = "logging"), allow(unused_variables))]
#[inline]
pub fn with_display_context<D: fmt::Display + ?Sized>(self, context: &D) -> Self {
- #[cfg(feature = "log_error_context")]
+ #[cfg(feature = "logging")]
if !self.silent {
log::warn!("{}: {}", self, context);
}
@@ -248,12 +256,12 @@ impl DataError {
/// Logs the data error with the given context, then return self.
///
- /// This does not modify the error, but if the "log_error_context" Cargo feature is enabled,
+ /// This does not modify the error, but if the "logging" Cargo feature is enabled,
/// it will print out the context.
- #[cfg_attr(not(feature = "log_error_context"), allow(unused_variables))]
+ #[cfg_attr(not(feature = "logging"), allow(unused_variables))]
#[inline]
pub fn with_debug_context<D: fmt::Debug + ?Sized>(self, context: &D) -> Self {
- #[cfg(feature = "log_error_context")]
+ #[cfg(feature = "logging")]
if !self.silent {
log::warn!("{}: {:?}", self, context);
}
@@ -277,7 +285,7 @@ impl std::error::Error for DataError {}
#[cfg(feature = "std")]
impl From<std::io::Error> for DataError {
fn from(e: std::io::Error) -> Self {
- #[cfg(feature = "log_error_context")]
+ #[cfg(feature = "logging")]
log::warn!("I/O error: {}", e);
DataErrorKind::Io(e.kind()).into_error()
}
diff --git a/vendor/icu_provider/src/fallback.rs b/vendor/icu_provider/src/fallback.rs
new file mode 100644
index 000000000..5c4e13b8d
--- /dev/null
+++ b/vendor/icu_provider/src/fallback.rs
@@ -0,0 +1,201 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+//! Options to define fallback behaviour.
+//!
+//! These options are consumed by the `LocaleFallbacker` in the `icu_locid_transforms` crate
+//! (or the `icu::locid_transforms` module), but are defined here because they are used by `DataKey`.
+
+use icu_locid::extensions::unicode::Key;
+
+/// Hint for which subtag to prioritize during fallback.
+///
+/// For example, `"en-US"` might fall back to either `"en"` or `"und-US"` depending
+/// on this enum.
+#[derive(Debug, PartialEq, Eq, Copy, Clone, PartialOrd, Ord)]
+#[non_exhaustive]
+pub enum LocaleFallbackPriority {
+ /// Prioritize the language. This is the default behavior.
+ ///
+ /// For example, `"en-US"` should go to `"en"` and then `"und"`.
+ Language,
+ /// Prioritize the region.
+ ///
+ /// For example, `"en-US"` should go to `"und-US"` and then `"und"`.
+ Region,
+ /// Collation-specific fallback rules. Similar to language priority.
+ ///
+ /// For example, `"zh-Hant"` goes to `"zh"` before `"und"`.
+ Collation,
+}
+
+impl LocaleFallbackPriority {
+ /// Const-friendly version of [`Default::default`].
+ pub const fn const_default() -> Self {
+ Self::Language
+ }
+}
+
+impl Default for LocaleFallbackPriority {
+ fn default() -> Self {
+ Self::const_default()
+ }
+}
+
+/// What additional data is required to load when performing fallback.
+#[derive(Debug, PartialEq, Eq, Copy, Clone, PartialOrd, Ord)]
+#[non_exhaustive]
+pub enum LocaleFallbackSupplement {
+ /// Collation supplement
+ Collation,
+}
+
+/// Configuration settings for a particular fallback operation.
+#[derive(Debug, Clone, PartialEq, Eq, Copy)]
+#[non_exhaustive]
+pub struct LocaleFallbackConfig {
+ /// Strategy for choosing which subtags to drop during locale fallback.
+ ///
+ /// # Examples
+ ///
+ /// Retain the language and script subtags until the final step:
+ ///
+ /// ```
+ /// use icu_locid::locale;
+ /// use icu_locid_transform::fallback::LocaleFallbackConfig;
+ /// use icu_locid_transform::fallback::LocaleFallbackPriority;
+ /// use icu_locid_transform::LocaleFallbacker;
+ ///
+ /// // Set up the fallback iterator.
+ /// let fallbacker = LocaleFallbacker::new();
+ /// let mut config = LocaleFallbackConfig::default();
+ /// config.priority = LocaleFallbackPriority::Language;
+ /// let mut fallback_iterator = fallbacker
+ /// .for_config(config)
+ /// .fallback_for(locale!("ca-ES-valencia").into());
+ ///
+ /// // Run the algorithm and check the results.
+ /// assert_eq!(fallback_iterator.get(), &locale!("ca-ES-valencia").into());
+ /// fallback_iterator.step();
+ /// assert_eq!(fallback_iterator.get(), &locale!("ca-ES").into());
+ /// fallback_iterator.step();
+ /// assert_eq!(fallback_iterator.get(), &locale!("ca-valencia").into());
+ /// fallback_iterator.step();
+ /// assert_eq!(fallback_iterator.get(), &locale!("ca").into());
+ /// fallback_iterator.step();
+ /// assert_eq!(fallback_iterator.get(), &locale!("und").into());
+ /// ```
+ ///
+ /// Retain the region subtag until the final step:
+ ///
+ /// ```
+ /// use icu_locid::locale;
+ /// use icu_locid_transform::fallback::LocaleFallbackConfig;
+ /// use icu_locid_transform::fallback::LocaleFallbackPriority;
+ /// use icu_locid_transform::LocaleFallbacker;
+ ///
+ /// // Set up the fallback iterator.
+ /// let fallbacker = LocaleFallbacker::new();
+ /// let mut config = LocaleFallbackConfig::default();
+ /// config.priority = LocaleFallbackPriority::Region;
+ /// let mut fallback_iterator = fallbacker
+ /// .for_config(config)
+ /// .fallback_for(locale!("ca-ES-valencia").into());
+ ///
+ /// // Run the algorithm and check the results.
+ /// assert_eq!(fallback_iterator.get(), &locale!("ca-ES-valencia").into());
+ /// fallback_iterator.step();
+ /// assert_eq!(fallback_iterator.get(), &locale!("ca-ES").into());
+ /// fallback_iterator.step();
+ /// assert_eq!(fallback_iterator.get(), &locale!("und-ES-valencia").into());
+ /// fallback_iterator.step();
+ /// assert_eq!(fallback_iterator.get(), &locale!("und-ES").into());
+ /// fallback_iterator.step();
+ /// assert_eq!(fallback_iterator.get(), &locale!("und").into());
+ /// ```
+ pub priority: LocaleFallbackPriority,
+ /// An extension keyword to retain during locale fallback.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use icu_locid::locale;
+ /// use icu_locid_transform::fallback::LocaleFallbackConfig;
+ /// use icu_locid_transform::LocaleFallbacker;
+ ///
+ /// // Set up the fallback iterator.
+ /// let fallbacker = LocaleFallbacker::new();
+ /// let mut config = LocaleFallbackConfig::default();
+ /// config.extension_key = Some(icu_locid::extensions::unicode::key!("nu"));
+ /// let mut fallback_iterator = fallbacker
+ /// .for_config(config)
+ /// .fallback_for(locale!("ar-EG-u-nu-latn").into());
+ ///
+ /// // Run the algorithm and check the results.
+ /// assert_eq!(fallback_iterator.get(), &locale!("ar-EG-u-nu-latn").into());
+ /// fallback_iterator.step();
+ /// assert_eq!(fallback_iterator.get(), &locale!("ar-EG").into());
+ /// fallback_iterator.step();
+ /// assert_eq!(fallback_iterator.get(), &locale!("ar-u-nu-latn").into());
+ /// fallback_iterator.step();
+ /// assert_eq!(fallback_iterator.get(), &locale!("ar").into());
+ /// fallback_iterator.step();
+ /// assert_eq!(fallback_iterator.get(), &locale!("und").into());
+ /// ```
+ pub extension_key: Option<Key>,
+ /// Fallback supplement data key to customize fallback rules.
+ ///
+ /// For example, most data keys for collation add additional parent locales, such as
+ /// "yue" to "zh-Hant", and data used for the `"-u-co"` extension keyword fallback.
+ ///
+ /// Currently the only supported fallback supplement is `LocaleFallbackSupplement::Collation`, but more may be
+ /// added in the future.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use icu_locid::locale;
+ /// use icu_locid_transform::fallback::LocaleFallbackConfig;
+ /// use icu_locid_transform::fallback::LocaleFallbackPriority;
+ /// use icu_locid_transform::fallback::LocaleFallbackSupplement;
+ /// use icu_locid_transform::LocaleFallbacker;
+ ///
+ /// // Set up the fallback iterator.
+ /// let fallbacker = LocaleFallbacker::new();
+ /// let mut config = LocaleFallbackConfig::default();
+ /// config.priority = LocaleFallbackPriority::Collation;
+ /// config.fallback_supplement = Some(LocaleFallbackSupplement::Collation);
+ /// let mut fallback_iterator = fallbacker
+ /// .for_config(config)
+ /// .fallback_for(locale!("yue-HK").into());
+ ///
+ /// // Run the algorithm and check the results.
+ /// // TODO(#1964): add "zh" as a target.
+ /// assert_eq!(fallback_iterator.get(), &locale!("yue-HK").into());
+ /// fallback_iterator.step();
+ /// assert_eq!(fallback_iterator.get(), &locale!("yue").into());
+ /// fallback_iterator.step();
+ /// assert_eq!(fallback_iterator.get(), &locale!("zh-Hant").into());
+ /// fallback_iterator.step();
+ /// assert_eq!(fallback_iterator.get(), &locale!("und").into());
+ /// ```
+ pub fallback_supplement: Option<LocaleFallbackSupplement>,
+}
+
+impl LocaleFallbackConfig {
+ /// Const version of [`Default::default`].
+ pub const fn const_default() -> Self {
+ Self {
+ priority: LocaleFallbackPriority::const_default(),
+ extension_key: None,
+ fallback_supplement: None,
+ }
+ }
+}
+
+impl Default for LocaleFallbackConfig {
+ fn default() -> Self {
+ Self::const_default()
+ }
+}
diff --git a/vendor/icu_provider/src/hello_world.rs b/vendor/icu_provider/src/hello_world.rs
index ec508ac48..825557ace 100644
--- a/vendor/icu_provider/src/hello_world.rs
+++ b/vendor/icu_provider/src/hello_world.rs
@@ -6,8 +6,8 @@
#![allow(clippy::exhaustive_structs)] // data struct module
-#[cfg(feature = "datagen")]
-use crate::datagen::IterableDataProvider;
+use crate as icu_provider;
+
use crate::prelude::*;
use alloc::borrow::Cow;
use alloc::string::String;
@@ -50,7 +50,7 @@ impl DataMarker for HelloWorldV1Marker {
}
impl KeyedDataMarker for HelloWorldV1Marker {
- const KEY: DataKey = crate::data_key!("core/helloworld@1");
+ const KEY: DataKey = icu_provider::data_key!("core/helloworld@1");
}
/// A data provider returning Hello World strings in different languages.
@@ -76,6 +76,25 @@ impl KeyedDataMarker for HelloWorldV1Marker {
///
/// assert_eq!("Hallo Welt", german_hello_world.get().message);
/// ```
+///
+/// Load the reverse string using an auxiliary key:
+///
+/// ```
+/// use icu_provider::hello_world::*;
+/// use icu_provider::prelude::*;
+///
+/// let reverse_hello_world: DataPayload<HelloWorldV1Marker> =
+/// HelloWorldProvider
+/// .load(DataRequest {
+/// locale: &"en+reverse".parse().unwrap(),
+/// metadata: Default::default(),
+/// })
+/// .expect("Loading should succeed")
+/// .take_payload()
+/// .expect("Data should be present");
+///
+/// assert_eq!("Olleh Dlrow", reverse_hello_world.get().message);
+/// ```
#[derive(Debug, PartialEq, Default)]
pub struct HelloWorldProvider;
@@ -86,17 +105,28 @@ impl HelloWorldProvider {
("bn", "ওহে বিশà§à¦¬"),
("cs", "Ahoj světe"),
("de", "Hallo Welt"),
+ ("de-AT", "Servus Welt"),
("el", "ΚαλημέÏα κόσμε"),
("en", "Hello World"),
+ ("en+reverse", "Olleh Dlrow"),
+ ("en-001", "Hello from 🗺ï¸"), // WORLD
+ ("en-002", "Hello from ðŸŒ"), // AFRICA
+ ("en-019", "Hello from 🌎"), // AMERICAS
+ ("en-142", "Hello from ðŸŒ"), // ASIA
+ ("en-GB", "Hello from 🇬🇧"), // GREAT BRITAIN
+ ("en-GB-u-sd-gbeng", "Hello from ðŸ´ó §ó ¢ó ¥ó ®ó §ó ¿"), // ENGLAND
("eo", "Saluton, Mondo"),
("fa", "سلام دنیا‎"),
("fi", "hei maailma"),
("is", "Halló, heimur"),
("ja", "ã“ã‚“ã«ã¡ã¯ä¸–ç•Œ"),
+ ("ja+reverse", "界世ã¯ã¡ã«ã‚“ã“"),
("la", "Ave, munde"),
("pt", "Olá, mundo"),
("ro", "Salut, lume"),
("ru", "Привет, мир"),
+ ("sr", "Поздрав Ñвете"),
+ ("sr-Latn", "Pozdrav svete"),
("vi", "Xin chào thế giới"),
("zh", "你好世界"),
];
@@ -133,7 +163,7 @@ impl DataPayload<HelloWorldV1Marker> {
// AnyProvider support.
#[cfg(not(feature = "datagen"))]
-impl_dynamic_data_provider!(HelloWorldProvider, [HelloWorldV1Marker,], AnyMarker);
+icu_provider::impl_dynamic_data_provider!(HelloWorldProvider, [HelloWorldV1Marker,], AnyMarker);
#[cfg(feature = "deserialize_json")]
/// A data provider returning Hello World strings in different languages as JSON blobs.
@@ -172,7 +202,7 @@ impl BufferProvider for HelloWorldJsonProvider {
let result = HelloWorldProvider.load(req)?;
let (mut metadata, old_payload) =
DataResponse::<HelloWorldV1Marker>::take_metadata_and_payload(result)?;
- metadata.buffer_format = Some(crate::buf::BufferFormat::Json);
+ metadata.buffer_format = Some(icu_provider::buf::BufferFormat::Json);
#[allow(clippy::unwrap_used)] // HelloWorldV1::serialize is infallible
Ok(DataResponse {
metadata,
@@ -187,19 +217,15 @@ impl BufferProvider for HelloWorldJsonProvider {
}
#[cfg(feature = "datagen")]
-impl IterableDataProvider<HelloWorldV1Marker> for HelloWorldProvider {
+impl icu_provider::datagen::IterableDataProvider<HelloWorldV1Marker> for HelloWorldProvider {
fn supported_locales(&self) -> Result<Vec<DataLocale>, DataError> {
#[allow(clippy::unwrap_used)] // datagen
- Ok(Self::DATA
- .iter()
- .map(|(s, _)| s.parse::<icu_locid::LanguageIdentifier>().unwrap())
- .map(DataLocale::from)
- .collect())
+ Ok(Self::DATA.iter().map(|(s, _)| s.parse().unwrap()).collect())
}
}
#[cfg(feature = "datagen")]
-make_exportable_provider!(HelloWorldProvider, [HelloWorldV1Marker,]);
+icu_provider::make_exportable_provider!(HelloWorldProvider, [HelloWorldV1Marker,]);
/// A type that formats localized "hello world" strings.
///
@@ -236,12 +262,22 @@ pub struct FormattedHelloWorld<'l> {
impl HelloWorldFormatter {
/// Creates a new [`HelloWorldFormatter`] for the specified locale.
///
- /// See [`HelloWorldFormatter`] for an example.
- ///
- /// [📚 Help choosing a constructor](crate::constructors)
- /// <div class="stab unstable">
- /// âš ï¸ The bounds on this function may change over time, including in SemVer minor releases.
- /// </div>
+ /// [📚 Help choosing a constructor](icu_provider::constructors)
+ pub fn try_new(locale: &DataLocale) -> Result<Self, DataError> {
+ Self::try_new_unstable(&HelloWorldProvider, locale)
+ }
+
+ icu_provider::gen_any_buffer_data_constructors!(locale: include, options: skip, error: DataError,
+ #[cfg(skip)]
+ functions: [
+ try_new,
+ try_new_with_any_provider,
+ try_new_with_buffer_provider,
+ try_new_unstable,
+ Self,
+ ]);
+
+ #[doc = icu_provider::gen_any_buffer_unstable_docs!(UNSTABLE, Self::try_new)]
pub fn try_new_unstable<P>(provider: &P, locale: &DataLocale) -> Result<Self, DataError>
where
P: DataProvider<HelloWorldV1Marker>,
@@ -255,8 +291,6 @@ impl HelloWorldFormatter {
Ok(Self { data })
}
- crate::gen_any_buffer_constructors!(locale: include, options: skip, error: DataError);
-
/// Formats a hello world message, returning a [`FormattedHelloWorld`].
#[allow(clippy::needless_lifetimes)] // documentary example
pub fn format<'l>(&'l self) -> FormattedHelloWorld<'l> {
@@ -290,6 +324,7 @@ writeable::impl_display_with_writeable!(FormattedHelloWorld<'_>);
#[cfg(feature = "datagen")]
#[test]
fn test_iter() {
+ use crate::datagen::IterableDataProvider;
use icu_locid::locale;
assert_eq!(
@@ -298,17 +333,28 @@ fn test_iter() {
locale!("bn").into(),
locale!("cs").into(),
locale!("de").into(),
+ locale!("de-AT").into(),
locale!("el").into(),
locale!("en").into(),
+ "en+reverse".parse().unwrap(),
+ locale!("en-001").into(),
+ locale!("en-002").into(),
+ locale!("en-019").into(),
+ locale!("en-142").into(),
+ locale!("en-GB").into(),
+ locale!("en-GB-u-sd-gbeng").into(),
locale!("eo").into(),
locale!("fa").into(),
locale!("fi").into(),
locale!("is").into(),
locale!("ja").into(),
+ "ja+reverse".parse().unwrap(),
locale!("la").into(),
locale!("pt").into(),
locale!("ro").into(),
locale!("ru").into(),
+ locale!("sr").into(),
+ locale!("sr-Latn").into(),
locale!("vi").into(),
locale!("zh").into()
]
diff --git a/vendor/icu_provider/src/helpers.rs b/vendor/icu_provider/src/helpers.rs
deleted file mode 100644
index 998e656da..000000000
--- a/vendor/icu_provider/src/helpers.rs
+++ /dev/null
@@ -1,309 +0,0 @@
-// This file is part of ICU4X. For terms of use, please see the file
-// called LICENSE at the top level of the ICU4X source tree
-// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
-
-//! Internal helper functions.
-
-/// Const function to compute the FxHash of a byte array with little-endian byte order.
-///
-/// FxHash is a speedy hash algorithm used within rustc. The algorithm is satisfactory for our
-/// use case since the strings being hashed originate from a trusted source (the ICU4X
-/// components), and the hashes are computed at compile time, so we can check for collisions.
-///
-/// We could have considered a SHA or other cryptographic hash function. However, we are using
-/// FxHash because:
-///
-/// 1. There is precedent for this algorithm in Rust
-/// 2. The algorithm is easy to implement as a const function
-/// 3. The amount of code is small enough that we can reasonably keep the algorithm in-tree
-/// 4. FxHash is designed to output 32-bit or 64-bit values, whereas SHA outputs more bits,
-/// such that truncation would be required in order to fit into a u32, partially reducing
-/// the benefit of a cryptographically secure algorithm
-// The indexing operations in this function have been reviewed in detail and won't panic.
-#[allow(clippy::indexing_slicing)]
-pub const fn fxhash_32(bytes: &[u8], ignore_leading: usize, ignore_trailing: usize) -> u32 {
- // This code is adapted from https://github.com/rust-lang/rustc-hash,
- // whose license text is reproduced below.
- //
- // Copyright 2015 The Rust Project Developers. See the COPYRIGHT
- // file at the top-level directory of this distribution and at
- // http://rust-lang.org/COPYRIGHT.
- //
- // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
- // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
- // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
- // option. This file may not be copied, modified, or distributed
- // except according to those terms.
-
- if ignore_leading + ignore_trailing >= bytes.len() {
- return 0;
- }
-
- #[inline]
- const fn hash_word_32(mut hash: u32, word: u32) -> u32 {
- const ROTATE: u32 = 5;
- const SEED32: u32 = 0x9e_37_79_b9;
- hash = hash.rotate_left(ROTATE);
- hash ^= word;
- hash = hash.wrapping_mul(SEED32);
- hash
- }
-
- let mut cursor = ignore_leading;
- let end = bytes.len() - ignore_trailing;
- let mut hash = 0;
-
- while end - cursor >= 4 {
- let word = u32::from_le_bytes([
- bytes[cursor],
- bytes[cursor + 1],
- bytes[cursor + 2],
- bytes[cursor + 3],
- ]);
- hash = hash_word_32(hash, word);
- cursor += 4;
- }
-
- if end - cursor >= 2 {
- let word = u16::from_le_bytes([bytes[cursor], bytes[cursor + 1]]);
- hash = hash_word_32(hash, word as u32);
- cursor += 2;
- }
-
- if end - cursor >= 1 {
- hash = hash_word_32(hash, bytes[cursor] as u32);
- }
-
- hash
-}
-
-#[test]
-fn test_hash_word_32() {
- assert_eq!(0, fxhash_32(b"", 0, 0));
- assert_eq!(0, fxhash_32(b"a", 1, 0));
- assert_eq!(0, fxhash_32(b"a", 0, 1));
- assert_eq!(0, fxhash_32(b"a", 0, 10));
- assert_eq!(0, fxhash_32(b"a", 10, 0));
- assert_eq!(0, fxhash_32(b"a", 1, 1));
- assert_eq!(0xF3051F19, fxhash_32(b"a", 0, 0));
- assert_eq!(0x2F9DF119, fxhash_32(b"ab", 0, 0));
- assert_eq!(0xCB1D9396, fxhash_32(b"abc", 0, 0));
- assert_eq!(0x8628F119, fxhash_32(b"abcd", 0, 0));
- assert_eq!(0xBEBDB56D, fxhash_32(b"abcde", 0, 0));
- assert_eq!(0x1CE8476D, fxhash_32(b"abcdef", 0, 0));
- assert_eq!(0xC0F176A4, fxhash_32(b"abcdefg", 0, 0));
- assert_eq!(0x09AB476D, fxhash_32(b"abcdefgh", 0, 0));
- assert_eq!(0xB72F5D88, fxhash_32(b"abcdefghi", 0, 0));
-
- assert_eq!(
- fxhash_32(crate::tagged!("props/sc=Khmr@1").as_bytes(), 0, 0),
- fxhash_32(crate::tagged!("props/sc=Samr@1").as_bytes(), 0, 0)
- );
-
- assert_ne!(
- fxhash_32(
- crate::tagged!("props/sc=Khmr@1").as_bytes(),
- crate::leading_tag!().len(),
- crate::trailing_tag!().len()
- ),
- fxhash_32(
- crate::tagged!("props/sc=Samr@1").as_bytes(),
- crate::leading_tag!().len(),
- crate::trailing_tag!().len()
- )
- );
-}
-
-#[doc(hidden)]
-#[macro_export]
-macro_rules! gen_any_buffer_docs {
- (ANY, $krate:path, $see_also:path) => {
- concat!(
- "Creates a new instance using an [`AnyProvider`](",
- stringify!($krate),
- "::AnyProvider).\n\n",
- "For details on the behavior of this function, see: [`",
- stringify!($see_also),
- "`]\n\n",
- "[📚 Help choosing a constructor](",
- stringify!($krate),
- "::constructors)",
- )
- };
- (BUFFER, $krate:path, $see_also:path) => {
- concat!(
- "✨ **Enabled with the `\"serde\"` feature.**\n\n",
- "Creates a new instance using a [`BufferProvider`](",
- stringify!($krate),
- "::BufferProvider).\n\n",
- "For details on the behavior of this function, see: [`",
- stringify!($see_also),
- "`]\n\n",
- "[📚 Help choosing a constructor](",
- stringify!($krate),
- "::constructors)",
- )
- };
-}
-
-#[doc(hidden)]
-#[macro_export]
-macro_rules! gen_any_buffer_constructors {
- (locale: skip, options: skip, error: $error_ty:path) => {
- $crate::gen_any_buffer_constructors!(
- locale: skip,
- options: skip,
- error: $error_ty,
- functions: [
- Self::try_new_unstable,
- try_new_with_any_provider,
- try_new_with_buffer_provider
- ]
- );
- };
- (locale: skip, options: skip, error: $error_ty:path, functions: [$f1:path, $f2:ident, $f3:ident]) => {
- #[doc = $crate::gen_any_buffer_docs!(ANY, $crate, $f1)]
- pub fn $f2(provider: &(impl $crate::AnyProvider + ?Sized)) -> Result<Self, $error_ty> {
- use $crate::AsDowncastingAnyProvider;
- $f1(&provider.as_downcasting())
- }
- #[cfg(feature = "serde")]
- #[doc = $crate::gen_any_buffer_docs!(BUFFER, $crate, $f1)]
- pub fn $f3(provider: &(impl $crate::BufferProvider + ?Sized)) -> Result<Self, $error_ty> {
- use $crate::AsDeserializingBufferProvider;
- $f1(&provider.as_deserializing())
- }
- };
-
-
- (locale: skip, options: skip, result: $result_ty:path, functions: [$f1:path, $f2:ident, $f3:ident]) => {
- #[doc = $crate::gen_any_buffer_docs!(ANY, $crate, $f1)]
- pub fn $f2(provider: &(impl $crate::AnyProvider + ?Sized)) -> $result_ty {
- use $crate::AsDowncastingAnyProvider;
- $f1(&provider.as_downcasting())
- }
- #[cfg(feature = "serde")]
- #[doc = $crate::gen_any_buffer_docs!(BUFFER, $crate, $f1)]
- pub fn $f3(provider: &(impl $crate::BufferProvider + ?Sized)) -> $result_ty {
- use $crate::AsDeserializingBufferProvider;
- $f1(&provider.as_deserializing())
- }
- };
-
- (locale: skip, $options_arg:ident: $options_ty:ty, error: $error_ty:path) => {
- $crate::gen_any_buffer_constructors!(
- locale: skip,
- $options_arg: $options_ty,
- error: $error_ty,
- functions: [
- Self::try_new_unstable,
- try_new_with_any_provider,
- try_new_with_buffer_provider
- ]
- );
- };
- (locale: skip, $options_arg:ident: $options_ty:ty, result: $result_ty:ty, functions: [$f1:path, $f2:ident, $f3:ident]) => {
- #[doc = $crate::gen_any_buffer_docs!(ANY, $crate, $f1)]
- pub fn $f2(provider: &(impl $crate::AnyProvider + ?Sized), $options_arg: $options_ty) -> $result_ty {
- use $crate::AsDowncastingAnyProvider;
- $f1(&provider.as_downcasting(), $options_arg)
- }
- #[cfg(feature = "serde")]
- #[doc = $crate::gen_any_buffer_docs!(BUFFER, $crate, $f1)]
- pub fn $f3(provider: &(impl $crate::BufferProvider + ?Sized), $options_arg: $options_ty) -> $result_ty {
- use $crate::AsDeserializingBufferProvider;
- $f1(&provider.as_deserializing(), $options_arg)
- }
- };
- (locale: skip, $options_arg:ident: $options_ty:ty, error: $error_ty:ty, functions: [$f1:path, $f2:ident, $f3:ident]) => {
- #[doc = $crate::gen_any_buffer_docs!(ANY, $crate, $f1)]
- pub fn $f2(provider: &(impl $crate::AnyProvider + ?Sized), $options_arg: $options_ty) -> Result<Self, $error_ty> {
- use $crate::AsDowncastingAnyProvider;
- $f1(&provider.as_downcasting(), $options_arg)
- }
- #[cfg(feature = "serde")]
- #[doc = $crate::gen_any_buffer_docs!(BUFFER, $crate, $f1)]
- pub fn $f3(provider: &(impl $crate::BufferProvider + ?Sized), $options_arg: $options_ty) -> Result<Self, $error_ty> {
- use $crate::AsDeserializingBufferProvider;
- $f1(&provider.as_deserializing(), $options_arg)
- }
- };
- (locale: include, options: skip, error: $error_ty:path) => {
- $crate::gen_any_buffer_constructors!(
- locale: include,
- options: skip,
- error: $error_ty,
- functions: [
- Self::try_new_unstable,
- try_new_with_any_provider,
- try_new_with_buffer_provider
- ]
- );
- };
- (locale: include, options: skip, error: $error_ty:path, functions: [$f1:path, $f2:ident, $f3:ident]) => {
- #[doc = $crate::gen_any_buffer_docs!(ANY, $crate, $f1)]
- pub fn $f2(provider: &(impl $crate::AnyProvider + ?Sized), locale: &$crate::DataLocale) -> Result<Self, $error_ty> {
- use $crate::AsDowncastingAnyProvider;
- $f1(&provider.as_downcasting(), locale)
- }
- #[cfg(feature = "serde")]
- #[doc = $crate::gen_any_buffer_docs!(BUFFER, $crate, $f1)]
- pub fn $f3(provider: &(impl $crate::BufferProvider + ?Sized), locale: &$crate::DataLocale) -> Result<Self, $error_ty> {
- use $crate::AsDeserializingBufferProvider;
- $f1(&provider.as_deserializing(), locale)
- }
- };
-
- (locale: include, $config_arg:ident: $config_ty:path, $options_arg:ident: $options_ty:path, error: $error_ty:path) => {
- $crate::gen_any_buffer_constructors!(
- locale: include,
- $config_arg: $config_ty,
- $options_arg: $options_ty,
- error: $error_ty,
- functions: [
- Self::try_new_unstable,
- try_new_with_any_provider,
- try_new_with_buffer_provider
- ]
- );
- };
- (locale: include, $config_arg:ident: $config_ty:path, $options_arg:ident: $options_ty:path, error: $error_ty:path, functions: [$f1:path, $f2:ident, $f3:ident]) => {
- #[doc = $crate::gen_any_buffer_docs!(ANY, $crate, $f1)]
- pub fn $f2(provider: &(impl $crate::AnyProvider + ?Sized), locale: &$crate::DataLocale, $config_arg: $config_ty, $options_arg: $options_ty) -> Result<Self, $error_ty> {
- use $crate::AsDowncastingAnyProvider;
- $f1(&provider.as_downcasting(), locale, $config_arg, $options_arg)
- }
- #[cfg(feature = "serde")]
- #[doc = $crate::gen_any_buffer_docs!(BUFFER, $crate, $f1)]
- pub fn $f3(provider: &(impl $crate::BufferProvider + ?Sized), locale: &$crate::DataLocale, $config_arg: $config_ty, $options_arg: $options_ty) -> Result<Self, $error_ty> {
- use $crate::AsDeserializingBufferProvider;
- $f1(&provider.as_deserializing(), locale, $config_arg, $options_arg)
- }
- };
-
- (locale: include, $options_arg:ident: $options_ty:path, error: $error_ty:path) => {
- $crate::gen_any_buffer_constructors!(
- locale: include,
- $options_arg: $options_ty,
- error: $error_ty,
- functions: [
- Self::try_new_unstable,
- try_new_with_any_provider,
- try_new_with_buffer_provider
- ]
- );
- };
- (locale: include, $options_arg:ident: $options_ty:path, error: $error_ty:path, functions: [$f1:path, $f2:ident, $f3:ident]) => {
- #[doc = $crate::gen_any_buffer_docs!(ANY, $crate, $f1)]
- pub fn $f2(provider: &(impl $crate::AnyProvider + ?Sized), locale: &$crate::DataLocale, $options_arg: $options_ty) -> Result<Self, $error_ty> {
- use $crate::AsDowncastingAnyProvider;
- $f1(&provider.as_downcasting(), locale, $options_arg)
- }
- #[cfg(feature = "serde")]
- #[doc = $crate::gen_any_buffer_docs!(BUFFER, $crate, $f1)]
- pub fn $f3(provider: &(impl $crate::BufferProvider + ?Sized), locale: &$crate::DataLocale, $options_arg: $options_ty) -> Result<Self, $error_ty> {
- use $crate::AsDeserializingBufferProvider;
- $f1(&provider.as_deserializing(), locale, $options_arg)
- }
- };
-}
diff --git a/vendor/icu_provider/src/key.rs b/vendor/icu_provider/src/key.rs
index 8c76608fc..0e1e1006e 100644
--- a/vendor/icu_provider/src/key.rs
+++ b/vendor/icu_provider/src/key.rs
@@ -3,8 +3,8 @@
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
use crate::error::{DataError, DataErrorKind};
-use crate::helpers;
+use crate::fallback::{LocaleFallbackConfig, LocaleFallbackPriority, LocaleFallbackSupplement};
use alloc::borrow::Cow;
use core::fmt;
use core::fmt::Write;
@@ -50,7 +50,7 @@ pub struct DataKeyHash([u8; 4]);
impl DataKeyHash {
const fn compute_from_path(path: DataKeyPath) -> Self {
- let hash = helpers::fxhash_32(
+ let hash = fxhash_32(
path.tagged.as_bytes(),
leading_tag!().len(),
trailing_tag!().len(),
@@ -64,6 +64,79 @@ impl DataKeyHash {
}
}
+/// Const function to compute the FxHash of a byte array.
+///
+/// FxHash is a speedy hash algorithm used within rustc. The algorithm is satisfactory for our
+/// use case since the strings being hashed originate from a trusted source (the ICU4X
+/// components), and the hashes are computed at compile time, so we can check for collisions.
+///
+/// We could have considered a SHA or other cryptographic hash function. However, we are using
+/// FxHash because:
+///
+/// 1. There is precedent for this algorithm in Rust
+/// 2. The algorithm is easy to implement as a const function
+/// 3. The amount of code is small enough that we can reasonably keep the algorithm in-tree
+/// 4. FxHash is designed to output 32-bit or 64-bit values, whereas SHA outputs more bits,
+/// such that truncation would be required in order to fit into a u32, partially reducing
+/// the benefit of a cryptographically secure algorithm
+// The indexing operations in this function have been reviewed in detail and won't panic.
+#[allow(clippy::indexing_slicing)]
+const fn fxhash_32(bytes: &[u8], ignore_leading: usize, ignore_trailing: usize) -> u32 {
+ // This code is adapted from https://github.com/rust-lang/rustc-hash,
+ // whose license text is reproduced below.
+ //
+ // Copyright 2015 The Rust Project Developers. See the COPYRIGHT
+ // file at the top-level directory of this distribution and at
+ // http://rust-lang.org/COPYRIGHT.
+ //
+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+ // option. This file may not be copied, modified, or distributed
+ // except according to those terms.
+
+ if ignore_leading + ignore_trailing >= bytes.len() {
+ return 0;
+ }
+
+ #[inline]
+ const fn hash_word_32(mut hash: u32, word: u32) -> u32 {
+ const ROTATE: u32 = 5;
+ const SEED32: u32 = 0x9e_37_79_b9;
+ hash = hash.rotate_left(ROTATE);
+ hash ^= word;
+ hash = hash.wrapping_mul(SEED32);
+ hash
+ }
+
+ let mut cursor = ignore_leading;
+ let end = bytes.len() - ignore_trailing;
+ let mut hash = 0;
+
+ while end - cursor >= 4 {
+ let word = u32::from_le_bytes([
+ bytes[cursor],
+ bytes[cursor + 1],
+ bytes[cursor + 2],
+ bytes[cursor + 3],
+ ]);
+ hash = hash_word_32(hash, word);
+ cursor += 4;
+ }
+
+ if end - cursor >= 2 {
+ let word = u16::from_le_bytes([bytes[cursor], bytes[cursor + 1]]);
+ hash = hash_word_32(hash, word as u32);
+ cursor += 2;
+ }
+
+ if end - cursor >= 1 {
+ hash = hash_word_32(hash, bytes[cursor] as u32);
+ }
+
+ hash
+}
+
impl<'a> zerovec::maps::ZeroMapKV<'a> for DataKeyHash {
type Container = zerovec::ZeroVec<'a, DataKeyHash>;
type Slice = zerovec::ZeroSlice<DataKeyHash>;
@@ -86,48 +159,6 @@ impl AsULE for DataKeyHash {
// Safe since the ULE type is `self`.
unsafe impl EqULE for DataKeyHash {}
-/// Hint for what to prioritize during fallback when data is unavailable.
-///
-/// For example, if `"en-US"` is requested, but we have no data for that specific locale,
-/// fallback may take us to `"en"` or `"und-US"` to check for data.
-#[derive(Debug, PartialEq, Eq, Copy, Clone, PartialOrd, Ord)]
-#[non_exhaustive]
-pub enum FallbackPriority {
- /// Prioritize the language. This is the default behavior.
- ///
- /// For example, `"en-US"` should go to `"en"` and then `"und"`.
- Language,
- /// Prioritize the region.
- ///
- /// For example, `"en-US"` should go to `"und-US"` and then `"und"`.
- Region,
- /// Collation-specific fallback rules. Similar to language priority.
- ///
- /// For example, `"zh-Hant"` goes to `"zh"` before `"und"`.
- Collation,
-}
-
-impl FallbackPriority {
- /// Const-friendly version of [`Default::default`].
- pub const fn const_default() -> Self {
- Self::Language
- }
-}
-
-impl Default for FallbackPriority {
- fn default() -> Self {
- Self::const_default()
- }
-}
-
-/// What additional data to load when performing fallback.
-#[derive(Debug, PartialEq, Eq, Copy, Clone, PartialOrd, Ord)]
-#[non_exhaustive]
-pub enum FallbackSupplement {
- /// Collation supplement; see `CollationFallbackSupplementV1Marker`
- Collation,
-}
-
/// The string path of a data key. For example, "foo@1"
#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)]
pub struct DataKeyPath {
@@ -163,35 +194,42 @@ impl Deref for DataKeyPath {
#[non_exhaustive]
pub struct DataKeyMetadata {
/// What to prioritize when fallbacking on this [`DataKey`].
- pub fallback_priority: FallbackPriority,
+ pub fallback_priority: LocaleFallbackPriority,
/// A Unicode extension keyword to consider when loading data for this [`DataKey`].
pub extension_key: Option<icu_locid::extensions::unicode::Key>,
/// Optional choice for additional fallbacking data required for loading this marker.
///
/// For more information, see `LocaleFallbackConfig::fallback_supplement`.
- pub fallback_supplement: Option<FallbackSupplement>,
+ pub fallback_supplement: Option<LocaleFallbackSupplement>,
+ /// Whether the key has a singleton value, as opposed to per-locale values. Singleton
+ /// keys behave differently, e.g. they never perform fallback, and can be optimized
+ /// in data providers.
+ pub singleton: bool,
}
impl DataKeyMetadata {
/// Const-friendly version of [`Default::default`].
pub const fn const_default() -> Self {
Self {
- fallback_priority: FallbackPriority::const_default(),
+ fallback_priority: LocaleFallbackPriority::const_default(),
extension_key: None,
fallback_supplement: None,
+ singleton: false,
}
}
#[doc(hidden)]
pub const fn construct_internal(
- fallback_priority: FallbackPriority,
+ fallback_priority: LocaleFallbackPriority,
extension_key: Option<icu_locid::extensions::unicode::Key>,
- fallback_supplement: Option<FallbackSupplement>,
+ fallback_supplement: Option<LocaleFallbackSupplement>,
+ singleton: bool,
) -> Self {
Self {
fallback_priority,
extension_key,
fallback_supplement,
+ singleton,
}
}
}
@@ -302,6 +340,16 @@ impl DataKey {
self.metadata
}
+ /// Returns the [`LocaleFallbackConfig`] for this [`DataKey`].
+ #[inline]
+ pub const fn fallback_config(self) -> LocaleFallbackConfig {
+ let mut config = LocaleFallbackConfig::const_default();
+ config.priority = self.metadata.fallback_priority;
+ config.extension_key = self.metadata.extension_key;
+ config.fallback_supplement = self.metadata.fallback_supplement;
+ config
+ }
+
/// Constructs a [`DataKey`] from a path and metadata.
///
/// # Examples
@@ -620,35 +668,50 @@ fn test_key_to_string() {
},
] {
writeable::assert_writeable_eq!(&cas.key, cas.expected);
+ assert_eq!(cas.expected, &*cas.key.path());
}
}
#[test]
+fn test_hash_word_32() {
+ assert_eq!(0, fxhash_32(b"", 0, 0));
+ assert_eq!(0, fxhash_32(b"a", 1, 0));
+ assert_eq!(0, fxhash_32(b"a", 0, 1));
+ assert_eq!(0, fxhash_32(b"a", 0, 10));
+ assert_eq!(0, fxhash_32(b"a", 10, 0));
+ assert_eq!(0, fxhash_32(b"a", 1, 1));
+ assert_eq!(0xF3051F19, fxhash_32(b"a", 0, 0));
+ assert_eq!(0x2F9DF119, fxhash_32(b"ab", 0, 0));
+ assert_eq!(0xCB1D9396, fxhash_32(b"abc", 0, 0));
+ assert_eq!(0x8628F119, fxhash_32(b"abcd", 0, 0));
+ assert_eq!(0xBEBDB56D, fxhash_32(b"abcde", 0, 0));
+ assert_eq!(0x1CE8476D, fxhash_32(b"abcdef", 0, 0));
+ assert_eq!(0xC0F176A4, fxhash_32(b"abcdefg", 0, 0));
+ assert_eq!(0x09AB476D, fxhash_32(b"abcdefgh", 0, 0));
+ assert_eq!(0xB72F5D88, fxhash_32(b"abcdefghi", 0, 0));
+}
+
+#[test]
fn test_key_hash() {
struct KeyTestCase {
pub key: DataKey,
pub hash: DataKeyHash,
- pub path: &'static str,
}
for cas in [
KeyTestCase {
key: data_key!("core/cardinal@1"),
hash: DataKeyHash([172, 207, 42, 236]),
- path: "core/cardinal@1",
},
KeyTestCase {
key: data_key!("core/maxlengthsubcatg@1"),
hash: DataKeyHash([193, 6, 79, 61]),
- path: "core/maxlengthsubcatg@1",
},
KeyTestCase {
key: data_key!("core/cardinal@65535"),
hash: DataKeyHash([176, 131, 182, 223]),
- path: "core/cardinal@65535",
},
] {
- assert_eq!(cas.hash, cas.key.hashed(), "{}", cas.path);
- assert_eq!(cas.path, &*cas.key.path(), "{}", cas.path);
+ assert_eq!(cas.hash, cas.key.hashed(), "{}", cas.key);
}
}
diff --git a/vendor/icu_provider/src/lib.rs b/vendor/icu_provider/src/lib.rs
index 86c2001cd..01cb2a3b3 100644
--- a/vendor/icu_provider/src/lib.rs
+++ b/vendor/icu_provider/src/lib.rs
@@ -80,9 +80,6 @@
//!
//! - [`HelloWorldProvider`] returns "hello world" strings in several languages.
//!
-//! If you need a testing provider that contains the actual resource keys used by ICU4X features,
-//! see the [`icu_testdata`] crate.
-//!
//! ## Types and Lifetimes
//!
//! Types compatible with [`Yokeable`] can be passed through the data provider, so long as they are
@@ -116,7 +113,6 @@
//! [`CldrJsonDataProvider`]: ../icu_datagen/cldr/struct.CldrJsonDataProvider.html
//! [`FsDataProvider`]: ../icu_provider_fs/struct.FsDataProvider.html
//! [`BlobDataProvider`]: ../icu_provider_blob/struct.BlobDataProvider.html
-//! [`icu_testdata`]: ../icu_testdata/index.html
//! [`icu_datagen`]: ../icu_datagen/index.html
// https://github.com/unicode-org/icu4x/blob/main/docs/process/boilerplate.md#library-annotations
@@ -139,7 +135,8 @@ extern crate alloc;
mod data_provider;
mod error;
-mod helpers;
+#[doc(hidden)]
+pub mod fallback;
mod key;
mod request;
mod response;
@@ -148,12 +145,9 @@ pub mod any;
pub mod buf;
pub mod constructors;
#[cfg(feature = "datagen")]
-#[macro_use]
pub mod datagen;
-#[macro_use]
pub mod dynutil;
pub mod hello_world;
-#[macro_use]
pub mod marker;
#[cfg(feature = "serde")]
pub mod serde;
@@ -167,8 +161,8 @@ pub use crate::key::DataKey;
pub use crate::key::DataKeyHash;
pub use crate::key::DataKeyMetadata;
pub use crate::key::DataKeyPath;
-pub use crate::key::FallbackPriority;
-pub use crate::key::FallbackSupplement;
+#[cfg(feature = "experimental")]
+pub use crate::request::AuxiliaryKeys;
pub use crate::request::DataLocale;
pub use crate::request::DataRequest;
pub use crate::request::DataRequestMetadata;
@@ -214,6 +208,9 @@ pub mod prelude {
#[doc(no_inline)]
pub use crate::AsDynamicDataProviderAnyMarkerWrap;
#[doc(no_inline)]
+ #[cfg(feature = "experimental")]
+ pub use crate::AuxiliaryKeys;
+ #[doc(no_inline)]
pub use crate::BufferMarker;
#[doc(no_inline)]
pub use crate::BufferProvider;
@@ -252,8 +249,19 @@ pub mod prelude {
pub use zerofrom;
}
+// Additional crate re-exports for compatibility
+#[doc(hidden)]
+pub use fallback::LocaleFallbackPriority as FallbackPriority;
+#[doc(hidden)]
+pub use fallback::LocaleFallbackSupplement as FallbackSupplement;
+#[doc(hidden)]
+pub use yoke;
+#[doc(hidden)]
+pub use zerofrom;
+
// For macros
#[doc(hidden)]
pub mod _internal {
- pub use icu_locid::extensions_unicode_key;
+ pub use super::fallback::{LocaleFallbackPriority, LocaleFallbackSupplement};
+ pub use icu_locid as locid;
}
diff --git a/vendor/icu_provider/src/request.rs b/vendor/icu_provider/src/request.rs
index c5bdbe84b..15a6ce831 100644
--- a/vendor/icu_provider/src/request.rs
+++ b/vendor/icu_provider/src/request.rs
@@ -2,18 +2,30 @@
// called LICENSE at the top level of the ICU4X source tree
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+use crate::{DataError, DataErrorKind};
use core::cmp::Ordering;
use core::default::Default;
use core::fmt;
use core::fmt::Debug;
+use core::hash::Hash;
+use core::str::FromStr;
use icu_locid::extensions::unicode as unicode_ext;
use icu_locid::subtags::{Language, Region, Script, Variants};
use icu_locid::{LanguageIdentifier, Locale, SubtagOrderingResult};
use writeable::{LengthHint, Writeable};
+#[cfg(feature = "experimental")]
+use alloc::string::String;
+#[cfg(feature = "experimental")]
+use core::ops::Deref;
+#[cfg(feature = "experimental")]
+use tinystr::TinyAsciiStr;
+
#[cfg(doc)]
use icu_locid::subtags::Variant;
+const AUXILIARY_KEY_SEPARATOR: u8 = b'+';
+
/// The request type passed into all data provider implementations.
#[derive(Default, Debug, Clone, Copy, PartialEq, Eq)]
#[allow(clippy::exhaustive_structs)] // this type is stable
@@ -42,7 +54,7 @@ pub struct DataRequestMetadata {
pub silent: bool,
}
-/// The main locale type used by the ICU4X data provider.
+/// A locale type optimized for use in fallbacking and the ICU4X data pipeline.
///
/// [`DataLocale`] contains less functionality than [`Locale`] but more than
/// [`LanguageIdentifier`] for better size and performance while still meeting
@@ -109,6 +121,8 @@ pub struct DataRequestMetadata {
pub struct DataLocale {
langid: LanguageIdentifier,
keywords: unicode_ext::Keywords,
+ #[cfg(feature = "experimental")]
+ aux: Option<AuxiliaryKeys>,
}
impl<'a> Default for &'a DataLocale {
@@ -116,6 +130,8 @@ impl<'a> Default for &'a DataLocale {
static DEFAULT: DataLocale = DataLocale {
langid: LanguageIdentifier::UND,
keywords: unicode_ext::Keywords::new(),
+ #[cfg(feature = "experimental")]
+ aux: None,
};
&DEFAULT
}
@@ -134,20 +150,34 @@ impl Writeable for DataLocale {
sink.write_str("-u-")?;
self.keywords.write_to(sink)?;
}
+ #[cfg(feature = "experimental")]
+ if let Some(aux) = self.aux.as_ref() {
+ sink.write_char(AuxiliaryKeys::separator() as char)?;
+ aux.write_to(sink)?;
+ }
Ok(())
}
fn writeable_length_hint(&self) -> LengthHint {
- self.langid.writeable_length_hint()
- + if !self.keywords.is_empty() {
- self.keywords.writeable_length_hint() + 3
- } else {
- LengthHint::exact(0)
- }
+ let mut length_hint = self.langid.writeable_length_hint();
+ if !self.keywords.is_empty() {
+ length_hint += self.keywords.writeable_length_hint() + 3;
+ }
+ #[cfg(feature = "experimental")]
+ if let Some(aux) = self.aux.as_ref() {
+ length_hint += aux.writeable_length_hint() + 1;
+ }
+ length_hint
}
fn write_to_string(&self) -> alloc::borrow::Cow<str> {
- if self.keywords.is_empty() {
+ #[cfg_attr(not(feature = "experimental"), allow(unused_mut))]
+ let mut is_only_langid = self.keywords.is_empty();
+ #[cfg(feature = "experimental")]
+ {
+ is_only_langid = is_only_langid && self.aux.is_none();
+ }
+ if is_only_langid {
return self.langid.write_to_string();
}
let mut string =
@@ -164,6 +194,8 @@ impl From<LanguageIdentifier> for DataLocale {
Self {
langid,
keywords: unicode_ext::Keywords::new(),
+ #[cfg(feature = "experimental")]
+ aux: None,
}
}
}
@@ -173,6 +205,8 @@ impl From<Locale> for DataLocale {
Self {
langid: locale.id,
keywords: locale.extensions.unicode.keywords,
+ #[cfg(feature = "experimental")]
+ aux: None,
}
}
}
@@ -182,6 +216,8 @@ impl From<&LanguageIdentifier> for DataLocale {
Self {
langid: langid.clone(),
keywords: unicode_ext::Keywords::new(),
+ #[cfg(feature = "experimental")]
+ aux: None,
}
}
}
@@ -191,7 +227,40 @@ impl From<&Locale> for DataLocale {
Self {
langid: locale.id.clone(),
keywords: locale.extensions.unicode.keywords.clone(),
+ #[cfg(feature = "experimental")]
+ aux: None,
+ }
+ }
+}
+
+impl FromStr for DataLocale {
+ type Err = DataError;
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ let mut aux_iter = s.splitn(2, AUXILIARY_KEY_SEPARATOR as char);
+ let Some(locale_str) = aux_iter.next() else {
+ return Err(DataErrorKind::KeyLocaleSyntax
+ .into_error()
+ .with_display_context(s));
+ };
+ let locale = Locale::from_str(locale_str).map_err(|e| {
+ DataErrorKind::KeyLocaleSyntax
+ .into_error()
+ .with_display_context(s)
+ .with_display_context(&e)
+ })?;
+ #[cfg_attr(not(feature = "experimental"), allow(unused_mut))]
+ let mut data_locale = DataLocale::from(locale);
+ #[cfg(feature = "experimental")]
+ if let Some(aux_str) = aux_iter.next() {
+ let aux = AuxiliaryKeys::from_str(aux_str)?;
+ data_locale.set_aux(aux);
}
+ if aux_iter.next().is_some() {
+ return Err(DataErrorKind::KeyLocaleSyntax
+ .into_error()
+ .with_display_context(s));
+ }
+ Ok(data_locale)
}
}
@@ -212,11 +281,18 @@ impl DataLocale {
/// use std::cmp::Ordering;
///
/// let bcp47_strings: &[&str] = &[
+ /// "ca",
+ /// "ca+EUR",
/// "ca-ES",
+ /// "ca-ES+GBP",
+ /// "ca-ES+GBP+short",
+ /// "ca-ES+USD",
/// "ca-ES-u-ca-buddhist",
/// "ca-ES-valencia",
+ /// "cat",
/// "pl-Latn-PL",
/// "und",
+ /// "und+MXN",
/// "und-fonipa",
/// "und-u-ca-hebrew",
/// "und-u-ca-japanese",
@@ -226,37 +302,70 @@ impl DataLocale {
/// for ab in bcp47_strings.windows(2) {
/// let a = ab[0];
/// let b = ab[1];
- /// assert!(a.cmp(b) == Ordering::Less);
- /// let a_loc: DataLocale = a.parse::<Locale>().unwrap().into();
- /// assert!(
- /// a_loc.strict_cmp(a.as_bytes()) == Ordering::Equal,
- /// "{} == {}",
- /// a,
+ /// assert_eq!(a.cmp(b), Ordering::Less, "strings: {} < {}", a, b);
+ /// let a_loc: DataLocale = a.parse().unwrap();
+ /// assert_eq!(
+ /// a_loc.strict_cmp(a.as_bytes()),
+ /// Ordering::Equal,
+ /// "strict_cmp: {} == {}",
+ /// a_loc,
/// a
/// );
- /// assert!(
- /// a_loc.strict_cmp(b.as_bytes()) == Ordering::Less,
- /// "{} < {}",
- /// a,
+ /// assert_eq!(
+ /// a_loc.strict_cmp(b.as_bytes()),
+ /// Ordering::Less,
+ /// "strict_cmp: {} < {}",
+ /// a_loc,
/// b
/// );
- /// let b_loc: DataLocale = b.parse::<Locale>().unwrap().into();
- /// assert!(
- /// b_loc.strict_cmp(b.as_bytes()) == Ordering::Equal,
- /// "{} == {}",
- /// b,
+ /// let b_loc: DataLocale = b.parse().unwrap();
+ /// assert_eq!(
+ /// b_loc.strict_cmp(b.as_bytes()),
+ /// Ordering::Equal,
+ /// "strict_cmp: {} == {}",
+ /// b_loc,
/// b
/// );
- /// assert!(
- /// b_loc.strict_cmp(a.as_bytes()) == Ordering::Greater,
- /// "{} > {}",
- /// b,
+ /// assert_eq!(
+ /// b_loc.strict_cmp(a.as_bytes()),
+ /// Ordering::Greater,
+ /// "strict_cmp: {} > {}",
+ /// b_loc,
/// a
/// );
/// }
/// ```
+ ///
+ /// Comparison against invalid strings:
+ ///
+ /// ```
+ /// use icu_provider::DataLocale;
+ ///
+ /// let invalid_strings: &[&str] = &[
+ /// // Less than "ca-ES"
+ /// "CA",
+ /// "ar+GBP+FOO",
+ /// // Greater than "ca-ES+GBP"
+ /// "ca_ES",
+ /// "ca-ES+GBP+FOO",
+ /// ];
+ ///
+ /// let data_locale = "ca-ES+GBP".parse::<DataLocale>().unwrap();
+ ///
+ /// for s in invalid_strings.iter() {
+ /// let expected_ordering = "ca-ES+GBP".cmp(s);
+ /// let actual_ordering = data_locale.strict_cmp(s.as_bytes());
+ /// assert_eq!(expected_ordering, actual_ordering, "{}", s);
+ /// }
+ /// ```
pub fn strict_cmp(&self, other: &[u8]) -> Ordering {
- let subtags = other.split(|b| *b == b'-');
+ let mut aux_iter = other.splitn(2, |b| *b == AUXILIARY_KEY_SEPARATOR);
+ let Some(locale_str) = aux_iter.next() else {
+ debug_assert!(other.is_empty());
+ return Ordering::Greater;
+ };
+ let aux_str = aux_iter.next();
+ let subtags = locale_str.split(|b| *b == b'-');
let mut subtag_result = self.langid.strict_cmp_iter(subtags);
if self.has_unicode_ext() {
let mut subtags = match subtag_result {
@@ -270,20 +379,114 @@ impl DataLocale {
}
subtag_result = self.keywords.strict_cmp_iter(subtags);
}
- subtag_result.end()
+ let has_more_subtags = match subtag_result {
+ SubtagOrderingResult::Subtags(mut s) => s.next().is_some(),
+ SubtagOrderingResult::Ordering(o) => return o,
+ };
+ // If we get here, `self` has equal or fewer subtags than the `other`.
+ // There are 2^3 = 8 cases to handle for auxiliary keys, expanded below.
+ match (has_more_subtags, self.get_aux(), aux_str) {
+ (false, None, None) => {
+ // foo == foo
+ Ordering::Equal
+ }
+ (false, Some(self_aux), Some(other_aux)) => {
+ // foo+BAR1 ?= foo+BAR2
+ let aux_ordering = self_aux.as_bytes().cmp(other_aux);
+ if aux_ordering != Ordering::Equal {
+ return aux_ordering;
+ }
+ Ordering::Equal
+ }
+ (false, Some(_), None) => {
+ // foo+BAR > foo
+ Ordering::Greater
+ }
+ (_, _, _) => {
+ // foo < foo-bar
+ // foo < foo-bar+BAR
+ // foo < foo+BAR
+ // foo+BAR < foo-bar
+ // foo+BAR < foo-bar+BAR
+ Ordering::Less
+ }
+ }
}
}
impl DataLocale {
/// Returns whether this [`DataLocale`] has all empty fields (no components).
+ ///
+ /// See also:
+ ///
+ /// - [`DataLocale::is_und()`]
+ /// - [`DataLocale::is_langid_und()`]
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use icu_provider::DataLocale;
+ ///
+ /// assert!("und".parse::<DataLocale>().unwrap().is_empty());
+ /// assert!(!"und-u-ca-buddhist"
+ /// .parse::<DataLocale>()
+ /// .unwrap()
+ /// .is_empty());
+ /// assert!(!"und+auxiliary".parse::<DataLocale>().unwrap().is_empty());
+ /// assert!(!"ca-ES".parse::<DataLocale>().unwrap().is_empty());
+ /// ```
pub fn is_empty(&self) -> bool {
self == <&DataLocale>::default()
}
+ /// Returns whether this [`DataLocale`] is `und` in the locale and extensions portion.
+ ///
+ /// This ignores auxiliary keys.
+ ///
+ /// See also:
+ ///
+ /// - [`DataLocale::is_empty()`]
+ /// - [`DataLocale::is_langid_und()`]
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use icu_provider::DataLocale;
+ ///
+ /// assert!("und".parse::<DataLocale>().unwrap().is_und());
+ /// assert!(!"und-u-ca-buddhist".parse::<DataLocale>().unwrap().is_und());
+ /// assert!("und+auxiliary".parse::<DataLocale>().unwrap().is_und());
+ /// assert!(!"ca-ES".parse::<DataLocale>().unwrap().is_und());
+ /// ```
+ pub fn is_und(&self) -> bool {
+ self.langid == LanguageIdentifier::UND && self.keywords.is_empty()
+ }
+
/// Returns whether the [`LanguageIdentifier`] associated with this request is `und`.
///
- /// Note that this only checks the language identifier; extension keywords may also be set.
- /// To check the entire `DataLocale`, use [`DataLocale::is_empty()`].
+ /// This ignores extension keywords and auxiliary keys.
+ ///
+ /// See also:
+ ///
+ /// - [`DataLocale::is_empty()`]
+ /// - [`DataLocale::is_und()`]
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use icu_provider::DataLocale;
+ ///
+ /// assert!("und".parse::<DataLocale>().unwrap().is_langid_und());
+ /// assert!("und-u-ca-buddhist"
+ /// .parse::<DataLocale>()
+ /// .unwrap()
+ /// .is_langid_und());
+ /// assert!("und+auxiliary"
+ /// .parse::<DataLocale>()
+ /// .unwrap()
+ /// .is_langid_und());
+ /// assert!(!"ca-ES".parse::<DataLocale>().unwrap().is_langid_und());
+ /// ```
pub fn is_langid_und(&self) -> bool {
self.langid == LanguageIdentifier::UND
}
@@ -339,7 +542,8 @@ impl DataLocale {
///
/// ```
/// use icu_locid::{
- /// langid, locale, subtags_language as language, subtags_region as region,
+ /// langid, locale,
+ /// subtags::{language, region},
/// Locale,
/// };
/// use icu_provider::prelude::*;
@@ -442,7 +646,7 @@ impl DataLocale {
///
/// ```
/// use icu_locid::{
- /// extensions_unicode_key as key, extensions_unicode_value as value,
+ /// extensions::unicode::{key, value},
/// Locale,
/// };
/// use icu_provider::prelude::*;
@@ -484,6 +688,327 @@ impl DataLocale {
{
self.keywords.retain_by_key(predicate)
}
+
+ /// Gets the auxiliary key for this [`DataLocale`].
+ ///
+ /// For more information and examples, see [`AuxiliaryKeys`].
+ #[cfg(feature = "experimental")]
+ pub fn get_aux(&self) -> Option<&AuxiliaryKeys> {
+ self.aux.as_ref()
+ }
+
+ #[cfg(not(feature = "experimental"))]
+ pub(crate) fn get_aux(&self) -> Option<&str> {
+ None
+ }
+
+ /// Returns whether this [`DataLocale`] has an auxiliary key.
+ ///
+ /// For more information and examples, see [`AuxiliaryKeys`].
+ #[cfg(feature = "experimental")]
+ pub fn has_aux(&self) -> bool {
+ self.aux.is_some()
+ }
+
+ /// Sets an auxiliary key on this [`DataLocale`].
+ ///
+ /// Returns the previous auxiliary key if present.
+ ///
+ /// For more information and examples, see [`AuxiliaryKeys`].
+ #[cfg(feature = "experimental")]
+ pub fn set_aux(&mut self, value: AuxiliaryKeys) -> Option<AuxiliaryKeys> {
+ self.aux.replace(value)
+ }
+
+ /// Remove an auxiliary key, if present. Returns the removed auxiliary key.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use icu_locid::locale;
+ /// use icu_provider::prelude::*;
+ /// use writeable::assert_writeable_eq;
+ ///
+ /// let mut data_locale: DataLocale = locale!("ar-EG").into();
+ /// let aux = "GBP"
+ /// .parse::<AuxiliaryKeys>()
+ /// .expect("contains valid characters");
+ /// data_locale.set_aux(aux);
+ /// assert_writeable_eq!(data_locale, "ar-EG+GBP");
+ ///
+ /// let maybe_aux = data_locale.remove_aux();
+ /// assert_writeable_eq!(data_locale, "ar-EG");
+ /// assert_writeable_eq!(maybe_aux.unwrap(), "GBP");
+ /// ```
+ #[cfg(feature = "experimental")]
+ pub fn remove_aux(&mut self) -> Option<AuxiliaryKeys> {
+ self.aux.take()
+ }
+}
+
+/// The "auxiliary key" is an annotation on [`DataLocale`] that can contain an arbitrary
+/// information that does not fit into the [`LanguageIdentifier`] or [`Keywords`].
+///
+/// A [`DataLocale`] can have multiple auxiliary keys, represented by this struct. The auxiliary
+/// keys are separated from the BCP-47 locale and from each other with the character returned by
+/// [`AuxiliaryKeys::separator()`].
+///
+/// An auxiliary key currently allows alphanumerics and `-`.
+///
+/// <div class="stab unstable">
+/// 🚧 This code is experimental; it may change at any time, in breaking or non-breaking ways,
+/// including in SemVer minor releases. It can be enabled with the "experimental" Cargo feature
+/// of the `icu_provider` crate. Use with caution.
+/// <a href="https://github.com/unicode-org/icu4x/issues/3632">#3632</a>
+/// </div>
+///
+/// # Examples
+///
+/// ```
+/// use icu_locid::locale;
+/// use icu_provider::prelude::*;
+/// use writeable::assert_writeable_eq;
+///
+/// let mut data_locale: DataLocale = locale!("ar-EG").into();
+/// assert_writeable_eq!(data_locale, "ar-EG");
+/// assert!(!data_locale.has_aux());
+/// assert_eq!(data_locale.get_aux(), None);
+///
+/// let aux = "GBP"
+/// .parse::<AuxiliaryKeys>()
+/// .expect("contains valid characters");
+///
+/// data_locale.set_aux(aux);
+/// assert_writeable_eq!(data_locale, "ar-EG+GBP");
+/// assert!(data_locale.has_aux());
+/// assert_eq!(data_locale.get_aux(), Some(&"GBP".parse().unwrap()));
+/// ```
+///
+/// Multiple auxiliary keys are allowed:
+///
+/// ```
+/// use icu_locid::locale;
+/// use icu_provider::prelude::*;
+/// use writeable::assert_writeable_eq;
+///
+/// let data_locale = "ar-EG+GBP+long".parse::<DataLocale>().unwrap();
+/// assert_writeable_eq!(data_locale, "ar-EG+GBP+long");
+/// assert_eq!(data_locale.get_aux().unwrap().iter().count(), 2);
+/// ```
+///
+/// Not all strings are valid auxiliary keys:
+///
+/// ```
+/// use icu_provider::prelude::*;
+///
+/// assert!("abcdefg".parse::<AuxiliaryKeys>().is_ok());
+/// assert!("ABC123".parse::<AuxiliaryKeys>().is_ok());
+/// assert!("abc-xyz".parse::<AuxiliaryKeys>().is_ok());
+///
+/// assert!("".parse::<AuxiliaryKeys>().is_err());
+/// assert!("!@#$%".parse::<AuxiliaryKeys>().is_err());
+/// assert!("abc_xyz".parse::<AuxiliaryKeys>().is_err());
+/// ```
+///
+/// [`Keywords`]: unicode_ext::Keywords
+#[derive(Debug, PartialEq, Clone, Eq, Hash)]
+#[cfg(feature = "experimental")]
+pub struct AuxiliaryKeys {
+ // DISCUSS: SmallStr? TinyStrAuto?
+ // DISCUSS: Make this a dynamically sized type so references can be taken?
+ value: AuxiliaryKeysInner,
+}
+
+#[cfg(feature = "experimental")]
+#[derive(Clone)]
+enum AuxiliaryKeysInner {
+ Boxed(alloc::boxed::Box<str>),
+ Stack(TinyAsciiStr<23>),
+ // NOTE: In the future, a `Static` variant could be added to allow `data_locale!("...")`
+ // Static(&'static str),
+}
+
+#[cfg(feature = "experimental")]
+impl Deref for AuxiliaryKeysInner {
+ type Target = str;
+ #[inline]
+ fn deref(&self) -> &Self::Target {
+ match self {
+ Self::Boxed(s) => s.deref(),
+ Self::Stack(s) => s.as_str(),
+ }
+ }
+}
+
+#[cfg(feature = "experimental")]
+impl PartialEq for AuxiliaryKeysInner {
+ #[inline]
+ fn eq(&self, other: &Self) -> bool {
+ self.deref() == other.deref()
+ }
+}
+
+#[cfg(feature = "experimental")]
+impl Eq for AuxiliaryKeysInner {}
+
+#[cfg(feature = "experimental")]
+impl Debug for AuxiliaryKeysInner {
+ #[inline]
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ self.deref().fmt(f)
+ }
+}
+
+#[cfg(feature = "experimental")]
+impl Hash for AuxiliaryKeysInner {
+ #[inline]
+ fn hash<H: core::hash::Hasher>(&self, state: &mut H) {
+ self.deref().hash(state)
+ }
+}
+
+#[cfg(feature = "experimental")]
+writeable::impl_display_with_writeable!(AuxiliaryKeys);
+
+#[cfg(feature = "experimental")]
+impl Writeable for AuxiliaryKeys {
+ fn write_to<W: fmt::Write + ?Sized>(&self, sink: &mut W) -> fmt::Result {
+ self.value.write_to(sink)
+ }
+ fn writeable_length_hint(&self) -> LengthHint {
+ self.value.writeable_length_hint()
+ }
+ fn write_to_string(&self) -> alloc::borrow::Cow<str> {
+ self.value.write_to_string()
+ }
+}
+
+#[cfg(feature = "experimental")]
+impl FromStr for AuxiliaryKeys {
+ type Err = DataError;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ Self::try_from_str(s)
+ }
+}
+
+#[cfg(feature = "experimental")]
+impl AuxiliaryKeys {
+ /// Returns this [`AuxiliaryKeys`] as a single byte slice.
+ ///
+ /// NOTE: Do not make this public because we might not always store these in a single string.
+ /// External clients who need this can use `<Self as Writeable>::write_to_string`.
+ #[inline]
+ pub(crate) fn as_bytes(&self) -> &[u8] {
+ self.value.as_bytes()
+ }
+
+ /// Creates an [`AuxiliaryKeys`] from an iterator of individual keys.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use icu_provider::prelude::*;
+ ///
+ /// // Single auxiliary key:
+ /// let a = AuxiliaryKeys::try_from_iter(["abc"]).unwrap();
+ /// let b = "abc".parse::<AuxiliaryKeys>().unwrap();
+ /// assert_eq!(a, b);
+ ///
+ /// // Multiple auxiliary keys:
+ /// let a = AuxiliaryKeys::try_from_iter(["abc", "defg"]).unwrap();
+ /// let b = "abc+defg".parse::<AuxiliaryKeys>().unwrap();
+ /// assert_eq!(a, b);
+ /// ```
+ ///
+ /// Don't include the auxiliary key separator or other invalid chars in the iterator strings:
+ ///
+ /// ```
+ /// use icu_provider::prelude::*;
+ ///
+ /// assert!(AuxiliaryKeys::try_from_iter(["abc+defg"]).is_err());
+ /// assert!(AuxiliaryKeys::try_from_iter(["AB$C"]).is_err());
+ /// ```
+ pub fn try_from_iter<'a>(iter: impl IntoIterator<Item = &'a str>) -> Result<Self, DataError> {
+ // TODO: Avoid the allocation when possible
+ let mut builder = String::new();
+ for item in iter {
+ if !item.is_empty()
+ && item
+ .bytes()
+ .all(|b| b.is_ascii_alphanumeric() || matches!(b, b'-'))
+ {
+ if !builder.is_empty() {
+ builder.push(AuxiliaryKeys::separator() as char);
+ }
+ builder.push_str(item)
+ } else {
+ return Err(DataErrorKind::KeyLocaleSyntax
+ .into_error()
+ .with_display_context(item));
+ }
+ }
+ if builder.len() <= 23 {
+ #[allow(clippy::unwrap_used)] // we just checked that the string is ascii
+ Ok(Self {
+ value: AuxiliaryKeysInner::Stack(builder.parse().unwrap()),
+ })
+ } else {
+ Ok(Self {
+ value: AuxiliaryKeysInner::Boxed(builder.into()),
+ })
+ }
+ }
+
+ pub(crate) fn try_from_str(s: &str) -> Result<Self, DataError> {
+ if !s.is_empty()
+ && s.bytes()
+ .all(|b| b.is_ascii_alphanumeric() || matches!(b, b'-' | b'+'))
+ {
+ if s.len() <= 23 {
+ #[allow(clippy::unwrap_used)] // we just checked that the string is ascii
+ Ok(Self {
+ value: AuxiliaryKeysInner::Stack(s.parse().unwrap()),
+ })
+ } else {
+ Ok(Self {
+ value: AuxiliaryKeysInner::Boxed(s.into()),
+ })
+ }
+ } else {
+ Err(DataErrorKind::KeyLocaleSyntax
+ .into_error()
+ .with_display_context(s))
+ }
+ }
+
+ /// Iterates over the components of the auxiliary key.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use icu_provider::AuxiliaryKeys;
+ ///
+ /// let aux: AuxiliaryKeys = "abc+defg".parse().unwrap();
+ /// assert_eq!(aux.iter().collect::<Vec<_>>(), vec!["abc", "defg"]);
+ /// ```
+ pub fn iter(&self) -> impl Iterator<Item = &str> + '_ {
+ self.value.split(Self::separator() as char)
+ }
+
+ /// Returns the separator byte used for auxiliary keys in data locales.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use icu_provider::AuxiliaryKeys;
+ ///
+ /// assert_eq!(AuxiliaryKeys::separator(), b'+');
+ /// ```
+ #[inline]
+ pub const fn separator() -> u8 {
+ AUXILIARY_KEY_SEPARATOR
+ }
}
#[test]
@@ -491,24 +1016,91 @@ fn test_data_locale_to_string() {
use icu_locid::locale;
struct TestCase {
- pub locale: DataLocale,
+ pub locale: Locale,
+ pub aux: Option<&'static str>,
pub expected: &'static str,
}
for cas in [
TestCase {
- locale: Locale::UND.into(),
+ locale: Locale::UND,
+ aux: None,
expected: "und",
},
TestCase {
- locale: locale!("und-u-cu-gbp").into(),
+ locale: locale!("und-u-cu-gbp"),
+ aux: None,
expected: "und-u-cu-gbp",
},
TestCase {
- locale: locale!("en-ZA-u-cu-gbp").into(),
+ locale: locale!("en-ZA-u-cu-gbp"),
+ aux: None,
expected: "en-ZA-u-cu-gbp",
},
+ #[cfg(feature = "experimental")]
+ TestCase {
+ locale: locale!("en-ZA-u-nu-arab"),
+ aux: Some("GBP"),
+ expected: "en-ZA-u-nu-arab+GBP",
+ },
] {
- writeable::assert_writeable_eq!(cas.locale, cas.expected);
+ let mut data_locale = DataLocale::from(cas.locale);
+ #[cfg(feature = "experimental")]
+ if let Some(aux) = cas.aux {
+ data_locale.set_aux(aux.parse().unwrap());
+ }
+ writeable::assert_writeable_eq!(data_locale, cas.expected);
+ }
+}
+
+#[test]
+fn test_data_locale_from_string() {
+ #[derive(Debug)]
+ struct TestCase {
+ pub input: &'static str,
+ pub success: bool,
+ }
+
+ for cas in [
+ TestCase {
+ input: "und",
+ success: true,
+ },
+ TestCase {
+ input: "und-u-cu-gbp",
+ success: true,
+ },
+ TestCase {
+ input: "en-ZA-u-cu-gbp",
+ success: true,
+ },
+ TestCase {
+ input: "en...",
+ success: false,
+ },
+ #[cfg(feature = "experimental")]
+ TestCase {
+ input: "en-ZA-u-nu-arab+GBP",
+ success: true,
+ },
+ #[cfg(not(feature = "experimental"))]
+ TestCase {
+ input: "en-ZA-u-nu-arab+GBP",
+ success: false,
+ },
+ ] {
+ let data_locale = match (DataLocale::from_str(cas.input), cas.success) {
+ (Ok(l), true) => l,
+ (Err(_), false) => {
+ continue;
+ }
+ (Ok(_), false) => {
+ panic!("DataLocale parsed but it was supposed to fail: {cas:?}");
+ }
+ (Err(_), true) => {
+ panic!("DataLocale was supposed to parse but it failed: {cas:?}");
+ }
+ };
+ writeable::assert_writeable_eq!(data_locale, cas.input);
}
}
diff --git a/vendor/icu_provider/src/response.rs b/vendor/icu_provider/src/response.rs
index ad0c5865f..1b03a4fd3 100644
--- a/vendor/icu_provider/src/response.rs
+++ b/vendor/icu_provider/src/response.rs
@@ -71,11 +71,11 @@ pub struct DataResponseMetadata {
///
/// assert_eq!("Demo", payload.get().message);
/// ```
-pub struct DataPayload<M>
-where
- M: DataMarker,
-{
- pub(crate) yoke: Yoke<M::Yokeable, Option<Cart>>,
+pub struct DataPayload<M: DataMarker>(pub(crate) DataPayloadInner<M>);
+
+pub(crate) enum DataPayloadInner<M: DataMarker> {
+ Yoke(Yoke<M::Yokeable, Option<Cart>>),
+ StaticRef(&'static M::Yokeable),
}
/// The type of the "cart" that is used by `DataPayload`.
@@ -136,9 +136,10 @@ where
for<'a> YokeTraitHack<<M::Yokeable as Yokeable<'a>>::Output>: Clone,
{
fn clone(&self) -> Self {
- Self {
- yoke: self.yoke.clone(),
- }
+ Self(match &self.0 {
+ DataPayloadInner::Yoke(yoke) => DataPayloadInner::Yoke(yoke.clone()),
+ DataPayloadInner::StaticRef(r) => DataPayloadInner::StaticRef(*r),
+ })
}
}
@@ -163,6 +164,7 @@ where
fn test_clone_eq() {
use crate::hello_world::*;
let p1 = DataPayload::<HelloWorldV1Marker>::from_static_str("Demo");
+ #[allow(clippy::redundant_clone)]
let p2 = p1.clone();
assert_eq!(p1, p2);
}
@@ -192,18 +194,24 @@ where
/// assert_eq!(payload.get(), &local_struct);
/// ```
#[inline]
- pub fn from_owned(data: M::Yokeable) -> Self {
- Self {
- yoke: Yoke::new_owned(data),
- }
+ pub const fn from_owned(data: M::Yokeable) -> Self {
+ Self(DataPayloadInner::Yoke(Yoke::new_owned(data)))
+ }
+
+ #[doc(hidden)]
+ #[inline]
+ pub const fn from_static_ref(data: &'static M::Yokeable) -> Self {
+ Self(DataPayloadInner::StaticRef(data))
}
/// Convert a DataPayload that was created via [`DataPayload::from_owned()`] back into the
/// concrete type used to construct it.
pub fn try_unwrap_owned(self) -> Result<M::Yokeable, DataError> {
- self.yoke
- .try_into_yokeable()
- .map_err(|_| DataErrorKind::InvalidState.with_str_context("try_unwrap_owned"))
+ match self.0 {
+ DataPayloadInner::Yoke(yoke) => yoke.try_into_yokeable().ok(),
+ DataPayloadInner::StaticRef(_) => None,
+ }
+ .ok_or(DataErrorKind::InvalidState.with_str_context("try_unwrap_owned"))
}
/// Mutate the data contained in this DataPayload.
@@ -244,8 +252,15 @@ where
pub fn with_mut<'a, F>(&'a mut self, f: F)
where
F: 'static + for<'b> FnOnce(&'b mut <M::Yokeable as Yokeable<'a>>::Output),
+ M::Yokeable: zerofrom::ZeroFrom<'static, M::Yokeable>,
{
- self.yoke.with_mut(f)
+ if let DataPayloadInner::StaticRef(r) = self.0 {
+ self.0 = DataPayloadInner::Yoke(Yoke::new_owned(zerofrom::ZeroFrom::zero_from(r)));
+ }
+ match &mut self.0 {
+ DataPayloadInner::Yoke(yoke) => yoke.with_mut(f),
+ _ => unreachable!(),
+ }
}
/// Borrows the underlying data.
@@ -266,7 +281,10 @@ where
#[inline]
#[allow(clippy::needless_lifetimes)]
pub fn get<'a>(&'a self) -> &'a <M::Yokeable as Yokeable<'a>>::Output {
- self.yoke.get()
+ match &self.0 {
+ DataPayloadInner::Yoke(yoke) => yoke.get(),
+ DataPayloadInner::StaticRef(r) => Yokeable::transform(*r),
+ }
}
/// Maps `DataPayload<M>` to `DataPayload<M2>` by projecting it with [`Yoke::map_project`].
@@ -318,10 +336,15 @@ where
<M::Yokeable as Yokeable<'a>>::Output,
PhantomData<&'a ()>,
) -> <M2::Yokeable as Yokeable<'a>>::Output,
+ M::Yokeable: zerofrom::ZeroFrom<'static, M::Yokeable>,
{
- DataPayload {
- yoke: self.yoke.map_project(f),
- }
+ DataPayload(DataPayloadInner::Yoke(
+ match self.0 {
+ DataPayloadInner::Yoke(yoke) => yoke,
+ DataPayloadInner::StaticRef(r) => Yoke::new_owned(zerofrom::ZeroFrom::zero_from(r)),
+ }
+ .map_project(f),
+ ))
}
/// Version of [`DataPayload::map_project()`] that borrows `self` instead of moving `self`.
@@ -362,9 +385,16 @@ where
PhantomData<&'a ()>,
) -> <M2::Yokeable as Yokeable<'a>>::Output,
{
- DataPayload {
- yoke: self.yoke.map_project_cloned(f),
- }
+ DataPayload(DataPayloadInner::Yoke(match &self.0 {
+ DataPayloadInner::Yoke(yoke) => yoke.map_project_cloned(f),
+ DataPayloadInner::StaticRef(r) => {
+ let output: <M2::Yokeable as Yokeable<'static>>::Output =
+ f(Yokeable::transform(*r), PhantomData);
+ // Safety: <M2::Yokeable as Yokeable<'static>>::Output is the same type as M2::Yokeable
+ let yokeable: M2::Yokeable = unsafe { M2::Yokeable::make(output) };
+ Yoke::new_owned(yokeable)
+ }
+ }))
}
/// Version of [`DataPayload::map_project()`] that bubbles up an error from `f`.
@@ -411,10 +441,15 @@ where
<M::Yokeable as Yokeable<'a>>::Output,
PhantomData<&'a ()>,
) -> Result<<M2::Yokeable as Yokeable<'a>>::Output, E>,
+ M::Yokeable: zerofrom::ZeroFrom<'static, M::Yokeable>,
{
- Ok(DataPayload {
- yoke: self.yoke.try_map_project(f)?,
- })
+ Ok(DataPayload(DataPayloadInner::Yoke(
+ match self.0 {
+ DataPayloadInner::Yoke(yoke) => yoke,
+ DataPayloadInner::StaticRef(r) => Yoke::new_owned(zerofrom::ZeroFrom::zero_from(r)),
+ }
+ .try_map_project(f)?,
+ )))
}
/// Version of [`DataPayload::map_project_cloned()`] that bubbles up an error from `f`.
@@ -465,18 +500,27 @@ where
PhantomData<&'a ()>,
) -> Result<<M2::Yokeable as Yokeable<'a>>::Output, E>,
{
- Ok(DataPayload {
- yoke: self.yoke.try_map_project_cloned(f)?,
- })
+ Ok(DataPayload(DataPayloadInner::Yoke(match &self.0 {
+ DataPayloadInner::Yoke(yoke) => yoke.try_map_project_cloned(f)?,
+ DataPayloadInner::StaticRef(r) => {
+ let output: <M2::Yokeable as Yokeable<'static>>::Output =
+ f(Yokeable::transform(*r), PhantomData)?;
+ // Safety: <M2::Yokeable as Yokeable<'static>>::Output is the same type as M2::Yokeable
+ Yoke::new_owned(unsafe { M2::Yokeable::make(output) })
+ }
+ })))
}
- /// Convert between two [`DataMarker`] types that are compatible with each other.
+ /// Convert between two [`DataMarker`] types that are compatible with each other
+ /// with compile-time type checking.
///
/// This happens if they both have the same [`DataMarker::Yokeable`] type.
///
/// Can be used to erase the key of a data payload in cases where multiple keys correspond
/// to the same data struct.
///
+ /// For runtime dynamic casting, use [`DataPayload::dynamic_cast_mut()`].
+ ///
/// # Examples
///
/// ```no_run
@@ -497,7 +541,76 @@ where
where
M2: DataMarker<Yokeable = M::Yokeable>,
{
- DataPayload { yoke: self.yoke }
+ DataPayload(match self.0 {
+ DataPayloadInner::Yoke(yoke) => DataPayloadInner::Yoke(yoke),
+ DataPayloadInner::StaticRef(r) => DataPayloadInner::StaticRef(r),
+ })
+ }
+
+ /// Convert a mutable reference of a [`DataPayload`] to another mutable reference
+ /// of the same type with runtime type checking.
+ ///
+ /// Primarily useful to convert from a generic to a concrete marker type.
+ ///
+ /// If the `M2` type argument does not match the true marker type, a `DataError` is returned.
+ ///
+ /// For compile-time static casting, use [`DataPayload::cast()`].
+ ///
+ /// # Examples
+ ///
+ /// Change the results of a particular request based on key:
+ ///
+ /// ```
+ /// use icu_locid::locale;
+ /// use icu_provider::hello_world::*;
+ /// use icu_provider::prelude::*;
+ ///
+ /// struct MyWrapper<P> {
+ /// inner: P,
+ /// }
+ ///
+ /// impl<M, P> DataProvider<M> for MyWrapper<P>
+ /// where
+ /// M: KeyedDataMarker,
+ /// P: DataProvider<M>,
+ /// {
+ /// #[inline]
+ /// fn load(&self, req: DataRequest) -> Result<DataResponse<M>, DataError> {
+ /// let mut res = self.inner.load(req)?;
+ /// if let Some(ref mut generic_payload) = res.payload {
+ /// let mut cast_result =
+ /// generic_payload.dynamic_cast_mut::<HelloWorldV1Marker>();
+ /// if let Ok(ref mut concrete_payload) = cast_result {
+ /// // Add an emoji to the hello world message
+ /// concrete_payload.with_mut(|data| {
+ /// data.message.to_mut().insert_str(0, "✨ ");
+ /// });
+ /// }
+ /// }
+ /// Ok(res)
+ /// }
+ /// }
+ ///
+ /// let provider = MyWrapper {
+ /// inner: HelloWorldProvider,
+ /// };
+ /// let formatter =
+ /// HelloWorldFormatter::try_new_unstable(&provider, &locale!("de").into())
+ /// .unwrap();
+ ///
+ /// assert_eq!(formatter.format_to_string(), "✨ Hallo Welt");
+ /// ```
+ #[inline]
+ pub fn dynamic_cast_mut<M2>(&mut self) -> Result<&mut DataPayload<M2>, DataError>
+ where
+ M2: DataMarker,
+ {
+ let this: &mut dyn core::any::Any = self;
+ if let Some(this) = this.downcast_mut() {
+ Ok(this)
+ } else {
+ Err(DataError::for_type::<M2>().with_str_context(core::any::type_name::<M>()))
+ }
}
}
@@ -507,19 +620,17 @@ impl DataPayload<BufferMarker> {
let yoke = Yoke::attach_to_cart(SelectedRc::new(buffer), |b| &**b);
// Safe because cart is wrapped
let yoke = unsafe { yoke.replace_cart(|b| Some(Cart(b))) };
- Self { yoke }
+ Self(DataPayloadInner::Yoke(yoke))
}
/// Converts a yoked byte buffer into a `DataPayload<BufferMarker>`.
pub fn from_yoked_buffer(yoke: Yoke<&'static [u8], Option<Cart>>) -> Self {
- Self { yoke }
+ Self(DataPayloadInner::Yoke(yoke))
}
/// Converts a static byte buffer into a `DataPayload<BufferMarker>`.
pub fn from_static_buffer(buffer: &'static [u8]) -> Self {
- Self {
- yoke: Yoke::new_owned(buffer),
- }
+ Self(DataPayloadInner::Yoke(Yoke::new_owned(buffer)))
}
}
@@ -542,7 +653,7 @@ where
/// Metadata about the returned object.
pub metadata: DataResponseMetadata,
- /// The object itself; None if it was not loaded.
+ /// The object itself; `None` if it was not loaded.
pub payload: Option<DataPayload<M>>,
}
diff --git a/vendor/icu_provider/src/serde/mod.rs b/vendor/icu_provider/src/serde/mod.rs
index 098f1e880..edd827c31 100644
--- a/vendor/icu_provider/src/serde/mod.rs
+++ b/vendor/icu_provider/src/serde/mod.rs
@@ -29,6 +29,13 @@ pub struct DeserializingBufferProvider<'a, P: ?Sized>(&'a P);
/// Blanket-implemented trait adding the [`Self::as_deserializing()`] function.
pub trait AsDeserializingBufferProvider {
/// Wrap this [`BufferProvider`] in a [`DeserializingBufferProvider`].
+ ///
+ /// This requires enabling the deserialization Cargo feature
+ /// for the expected format(s):
+ ///
+ /// - `deserialize_json`
+ /// - `deserialize_postcard_1`
+ /// - `deserialize_bincode_1`
fn as_deserializing(&self) -> DeserializingBufferProvider<Self>;
}
@@ -37,6 +44,13 @@ where
P: BufferProvider + ?Sized,
{
/// Wrap this [`BufferProvider`] in a [`DeserializingBufferProvider`].
+ ///
+ /// This requires enabling the deserialization Cargo feature
+ /// for the expected format(s):
+ ///
+ /// - `deserialize_json`
+ /// - `deserialize_postcard_1`
+ /// - `deserialize_bincode_1`
fn as_deserializing(&self) -> DeserializingBufferProvider<Self> {
DeserializingBufferProvider(self)
}
@@ -90,6 +104,13 @@ impl DataPayload<BufferMarker> {
/// Deserialize a [`DataPayload`]`<`[`BufferMarker`]`>` into a [`DataPayload`] of a
/// specific concrete type.
///
+ /// This requires enabling the deserialization Cargo feature
+ /// for the expected format(s):
+ ///
+ /// - `deserialize_json`
+ /// - `deserialize_postcard_1`
+ /// - `deserialize_bincode_1`
+ ///
/// This function takes the buffer format as an argument. When a buffer payload is returned
/// from a data provider, the buffer format is stored in the [`DataResponseMetadata`].
///
@@ -135,6 +156,14 @@ where
// Necessary workaround bound (see `yoke::trait_hack` docs):
for<'de> YokeTraitHack<<M::Yokeable as Yokeable<'de>>::Output>: Deserialize<'de>,
{
+ /// Converts a buffer into a concrete type by deserializing from a supported buffer format.
+ ///
+ /// This requires enabling the deserialization Cargo feature
+ /// for the expected format(s):
+ ///
+ /// - `deserialize_json`
+ /// - `deserialize_postcard_1`
+ /// - `deserialize_bincode_1`
fn load_data(&self, key: DataKey, req: DataRequest) -> Result<DataResponse<M>, DataError> {
let buffer_response = BufferProvider::load_buffer(self.0, key, req)?;
let buffer_format = buffer_response.metadata.buffer_format.ok_or_else(|| {
@@ -161,6 +190,13 @@ where
for<'de> YokeTraitHack<<M::Yokeable as Yokeable<'de>>::Output>: Deserialize<'de>,
{
/// Converts a buffer into a concrete type by deserializing from a supported buffer format.
+ ///
+ /// This requires enabling the deserialization Cargo feature
+ /// for the expected format(s):
+ ///
+ /// - `deserialize_json`
+ /// - `deserialize_postcard_1`
+ /// - `deserialize_bincode_1`
fn load(&self, req: DataRequest) -> Result<DataResponse<M>, DataError> {
self.load_data(M::KEY, req)
}
diff --git a/vendor/icu_provider_adapters/.cargo-checksum.json b/vendor/icu_provider_adapters/.cargo-checksum.json
index 7b2a6906a..833d0f9e7 100644
--- a/vendor/icu_provider_adapters/.cargo-checksum.json
+++ b/vendor/icu_provider_adapters/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"bc35c9045058859105d040996e5f8f204a2337b832f1a23cf6f1d10fb1eb45ee","LICENSE":"4ad7541d66a407234e2c84902124cef325c29f3e966353efdb800bedb8b8da21","README.md":"e6a08c2bc307b66c93de20c2c366da896f7fd3f5e5eb402edd2eeba79476b600","src/any_payload.rs":"165d41d018a611a7ef25dab621bbd408e6ba22dde58365817944898de138be3e","src/either.rs":"02e646af7aa6d8af1a03e448bedb2498b026d418de8340a5be52b1d366ad9b6c","src/empty.rs":"1503b2f73b2a727a9e502ab7081da3261df470bc86b762ab5748c31fad8cfbc6","src/fallback/adapter.rs":"55188c9acb6ddc852b9218b14c97304e0378f9e40eedb0f0af41b5036a78e54f","src/fallback/algorithms.rs":"9409ad6f6f617d4433b9f6b303d131782877a0a10470533e3864b97355b9a3f1","src/fallback/mod.rs":"9a1ba8dcba21dbcb5acc4a019d640fffcfd2efd043bfa42a5690a9de593479d1","src/fallback/provider.rs":"ef8a835e3ed2b7871b6f6e78ae2e73575b26adc9e8e0b5a7170c8513e7fe3269","src/filter/impls.rs":"588918fdcadda3572844352bf22419910ee6430f3e5a6e7c5e012120ad2eb932","src/filter/mod.rs":"33a622b9684c5e445b2af8aec9cd3ba5dfe3b51d917dd2776b267657e6a5b72d","src/fork/by_error.rs":"450a24bfaa17e32899e4ba4286623b2b3b36af81fb5abd9b1e28a2af18c3b9dc","src/fork/macros.rs":"5aebb0134923fa9fa0fe7c16d2d85a1a29cf4ea49505187db56bf0bc8e984ad0","src/fork/mod.rs":"7378895128bf1ccc9de7f5675668ef922d3df7b84b04f68af4d5b49efe60341e","src/fork/predicates.rs":"314bf33144c6827cd3df05877d7c20fb64c9b18f6230e229340b8f04f4ccf4d3","src/helpers.rs":"0e5c8424c9e51956cd065d4ecf4f478bbc3978888b4bbb012ad3f5d6a7062fb1","src/lib.rs":"243ec29c6e5fbe59004f5774f1b252166b06a264e218a7209fe6ed83c25dd03a","tests/data/langtest/de/core/helloworld@1/de.json":"5a45b1d80567de8c4ff754f7dbe20c22477c1e00a9400b38397eb034f295b8f8","tests/data/langtest/de/manifest.json":"fa2f848cff051fd12a909389fbbc44b93ae1feb92cce466cc4381f9548443ea9","tests/data/langtest/ro/core/helloworld@1/ro.json":"b6b68292746dd6bb2d92d9c08e2753db556ec9c954a3b593b0b8999df550f298","tests/data/langtest/ro/manifest.json":"fa2f848cff051fd12a909389fbbc44b93ae1feb92cce466cc4381f9548443ea9"},"package":"f4ae1e2bd0c41728b77e7c46e9afdec5e2127d1eedacc684724667d50c126bd3"} \ No newline at end of file
+{"files":{"Cargo.toml":"cc4c433c73faa394a0bd721e086c1dfcd238e4efd6540886632e4be4b62183df","LICENSE":"853f87c96f3d249f200fec6db1114427bc8bdf4afddc93c576956d78152ce978","README.md":"d91500cb944c05c04ed9e6920d139199a9d1892346de50dccbdce5cbef3b9174","src/any_payload.rs":"165d41d018a611a7ef25dab621bbd408e6ba22dde58365817944898de138be3e","src/either.rs":"02e646af7aa6d8af1a03e448bedb2498b026d418de8340a5be52b1d366ad9b6c","src/empty.rs":"1503b2f73b2a727a9e502ab7081da3261df470bc86b762ab5748c31fad8cfbc6","src/fallback/mod.rs":"7f0cfc915cb95d1681befc52ef51ecaec0c900043a15d3feba3e5a8cc23c39ff","src/filter/impls.rs":"17b6ba2c7c72b72a72fbc57f31eec0cbe52d631a87012f6604fb1bf2e9f9137d","src/filter/mod.rs":"896de77291b093886a210dcbb30498aef2c9afe4ce984bd2ac517323e96917b4","src/fork/by_error.rs":"d7fee843306ab8b6e5de2abea8efb4409d01e2faf15fcb2ab4f6ba3cb0f47a09","src/fork/macros.rs":"9e8c071d7c21b93b4d07672542ec994d2fde2c19f14dd30f5c969215c73ebda7","src/fork/mod.rs":"64502e4d8a667e1ec5aa8339e07c1f2e5b0021e6ee4ca06722f6a1793f0e2b0d","src/fork/predicates.rs":"1191f9ff1ae2196255effb50e245a3f80c2a4429ea3e46499f0284835a51c1c9","src/helpers.rs":"0e5c8424c9e51956cd065d4ecf4f478bbc3978888b4bbb012ad3f5d6a7062fb1","src/lib.rs":"243ec29c6e5fbe59004f5774f1b252166b06a264e218a7209fe6ed83c25dd03a","tests/data/blob.postcard":"ae4478ddd635aa0f816d2abae9057dc9df0d9963e6b78b1b8e8722b318a513c5","tests/data/config.json":"0ec2a3ec6338767cee5e9bd1c27dceafcc10c28b5e0380059b7faf2f0cf707b7","tests/data/langtest/de.json":"6016405e1d9c63c2df940953fc3ae064b1fc4c0e3676ed78fafe4ec84596dfa3","tests/data/langtest/de/core/helloworld@1/de.json":"5a45b1d80567de8c4ff754f7dbe20c22477c1e00a9400b38397eb034f295b8f8","tests/data/langtest/de/manifest.json":"fa2f848cff051fd12a909389fbbc44b93ae1feb92cce466cc4381f9548443ea9","tests/data/langtest/ro.json":"c6ba5912f3ef51357c2d92596cd13b78080aee257132395d900ba4c76450c9ca","tests/data/langtest/ro/core/helloworld@1/ro.json":"b6b68292746dd6bb2d92d9c08e2753db556ec9c954a3b593b0b8999df550f298","tests/data/langtest/ro/manifest.json":"fa2f848cff051fd12a909389fbbc44b93ae1feb92cce466cc4381f9548443ea9"},"package":"36b380ef2d3d93b015cd0563d7e0d005cc07f82a5503716dbc191798d0079e1d"} \ No newline at end of file
diff --git a/vendor/icu_provider_adapters/Cargo.toml b/vendor/icu_provider_adapters/Cargo.toml
index 291a17ffc..72f4592a7 100644
--- a/vendor/icu_provider_adapters/Cargo.toml
+++ b/vendor/icu_provider_adapters/Cargo.toml
@@ -11,10 +11,12 @@
[package]
edition = "2021"
+rust-version = "1.66"
name = "icu_provider_adapters"
-version = "1.2.0"
+version = "1.3.2"
authors = ["The ICU4X Project Developers"]
include = [
+ "data/**/*",
"src/**/*",
"examples/**/*",
"benches/**/*",
@@ -24,23 +26,31 @@ include = [
"README.md",
]
description = "Adapters for composing and manipulating data providers."
+homepage = "https://icu4x.unicode.org"
readme = "README.md"
categories = ["internationalization"]
-license = "Unicode-DFS-2016"
+license-file = "LICENSE"
repository = "https://github.com/unicode-org/icu4x"
[dependencies.databake]
-version = "0.1.3"
+version = "0.1.6"
features = ["derive"]
optional = true
+default-features = false
[dependencies.icu_locid]
-version = "1.2.0"
+version = "~1.3.2"
features = ["zerovec"]
+default-features = false
+
+[dependencies.icu_locid_transform]
+version = "~1.3.2"
+default-features = false
[dependencies.icu_provider]
-version = "1.2.0"
+version = "~1.3.2"
features = ["macros"]
+default-features = false
[dependencies.serde]
version = "1.0"
@@ -52,15 +62,14 @@ optional = true
default-features = false
[dependencies.tinystr]
-version = "0.7.1"
+version = "0.7.3"
features = ["zerovec"]
-
-[dependencies.yoke]
-version = "0.7.1"
+default-features = false
[dependencies.zerovec]
-version = "0.9.4"
+version = "0.10.0"
features = ["yoke"]
+default-features = false
[dev-dependencies]
@@ -68,15 +77,13 @@ features = ["yoke"]
datagen = [
"std",
"serde",
- "dep:databake",
"icu_provider/datagen",
- "icu_locid/databake",
- "zerovec/databake",
]
serde = [
"dep:serde",
"zerovec/serde",
"icu_locid/serde",
+ "icu_locid_transform/serde",
"icu_provider/serde",
]
std = [
diff --git a/vendor/icu_provider_adapters/LICENSE b/vendor/icu_provider_adapters/LICENSE
index 9858d01ab..9845aa5f4 100644
--- a/vendor/icu_provider_adapters/LICENSE
+++ b/vendor/icu_provider_adapters/LICENSE
@@ -1,49 +1,42 @@
-UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
-
-See Terms of Use <https://www.unicode.org/copyright.html>
-for definitions of Unicode Inc.’s Data Files and Software.
-
-NOTICE TO USER: Carefully read the following legal agreement.
-BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
-DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
-YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
-TERMS AND CONDITIONS OF THIS AGREEMENT.
-IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
-THE DATA FILES OR SOFTWARE.
+UNICODE LICENSE V3
COPYRIGHT AND PERMISSION NOTICE
-Copyright © 1991-2022 Unicode, Inc. All rights reserved.
-Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Unicode data files and any associated documentation
-(the "Data Files") or Unicode software and any associated documentation
-(the "Software") to deal in the Data Files or Software
-without restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, and/or sell copies of
-the Data Files or Software, and to permit persons to whom the Data Files
-or Software are furnished to do so, provided that either
-(a) this copyright and permission notice appear with all copies
-of the Data Files or Software, or
-(b) this copyright and permission notice appear in associated
-Documentation.
-
-THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
-NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
-DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THE DATA FILES OR SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale,
-use or other dealings in these Data Files or Software without prior
-written authorization of the copyright holder.
+Copyright © 2020-2023 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
—
diff --git a/vendor/icu_provider_adapters/README.md b/vendor/icu_provider_adapters/README.md
index 28a29e6bc..fcbdce2c3 100644
--- a/vendor/icu_provider_adapters/README.md
+++ b/vendor/icu_provider_adapters/README.md
@@ -1,5 +1,7 @@
# icu_provider_adapters [![crates.io](https://img.shields.io/crates/v/icu_provider_adapters)](https://crates.io/crates/icu_provider_adapters)
+<!-- cargo-rdme start -->
+
Adapters for composing and manipulating data providers.
- Use the [`fork`] module to marshall data requests between multiple possible providers.
@@ -7,6 +9,8 @@ Adapters for composing and manipulating data providers.
- Use the [`filter`] module to programmatically reject certain data requests.
- Use the [`fallback`] module to automatically resolve arbitrary locales for data loading.
+<!-- cargo-rdme end -->
+
## More Information
For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/icu_provider_adapters/src/fallback/adapter.rs b/vendor/icu_provider_adapters/src/fallback/adapter.rs
deleted file mode 100644
index 8d9d79f2d..000000000
--- a/vendor/icu_provider_adapters/src/fallback/adapter.rs
+++ /dev/null
@@ -1,284 +0,0 @@
-// This file is part of ICU4X. For terms of use, please see the file
-// called LICENSE at the top level of the ICU4X source tree
-// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
-
-use super::*;
-use crate::helpers::result_is_err_missing_locale;
-
-/// A data provider wrapper that performs locale fallback. This enables arbitrary locales to be
-/// handled at runtime.
-///
-/// # Examples
-///
-/// ```
-/// use icu_locid::locale;
-/// use icu_provider::prelude::*;
-/// use icu_provider::hello_world::*;
-/// use icu_provider_adapters::fallback::LocaleFallbackProvider;
-///
-/// let provider = icu_testdata::unstable_no_fallback();
-///
-/// let req = DataRequest {
-/// locale: &locale!("ja-JP").into(),
-/// metadata: Default::default(),
-/// };
-///
-/// // The provider does not have data for "ja-JP":
-/// DataProvider::<HelloWorldV1Marker>::load(&provider, req).expect_err("No fallback");
-///
-/// // But if we wrap the provider in a fallback provider...
-/// let provider = LocaleFallbackProvider::try_new_unstable(provider)
-/// .expect("Fallback data present");
-///
-/// // ...then we can load "ja-JP" based on "ja" data
-/// let response =
-/// DataProvider::<HelloWorldV1Marker>::load(&provider, req).expect("successful with vertical fallback");
-///
-/// assert_eq!(
-/// response.metadata.locale.unwrap(),
-/// locale!("ja").into(),
-/// );
-/// assert_eq!(
-/// response.payload.unwrap().get().message,
-/// "ã“ã‚“ã«ã¡ã¯ä¸–ç•Œ",
-/// );
-/// ```
-#[derive(Clone, Debug)]
-pub struct LocaleFallbackProvider<P> {
- inner: P,
- fallbacker: LocaleFallbacker,
-}
-
-impl<P> LocaleFallbackProvider<P>
-where
- P: DataProvider<LocaleFallbackLikelySubtagsV1Marker>
- + DataProvider<LocaleFallbackParentsV1Marker>
- + DataProvider<CollationFallbackSupplementV1Marker>,
-{
- /// Create a [`LocaleFallbackProvider`] by wrapping another data provider and then loading
- /// fallback data from it.
- ///
- /// If the data provider being wrapped does not contain fallback data, use
- /// [`LocaleFallbackProvider::new_with_fallbacker`].
- pub fn try_new_unstable(provider: P) -> Result<Self, DataError> {
- let fallbacker = LocaleFallbacker::try_new_unstable(&provider)?;
- Ok(Self {
- inner: provider,
- fallbacker,
- })
- }
-}
-
-impl<P> LocaleFallbackProvider<P>
-where
- P: AnyProvider,
-{
- /// Create a [`LocaleFallbackProvider`] by wrapping another data provider and then loading
- /// fallback data from it.
- ///
- /// If the data provider being wrapped does not contain fallback data, use
- /// [`LocaleFallbackProvider::new_with_fallbacker`].
- pub fn try_new_with_any_provider(provider: P) -> Result<Self, DataError> {
- let fallbacker = LocaleFallbacker::try_new_with_any_provider(&provider)?;
- Ok(Self {
- inner: provider,
- fallbacker,
- })
- }
-}
-
-#[cfg(feature = "serde")]
-impl<P> LocaleFallbackProvider<P>
-where
- P: BufferProvider,
-{
- /// Create a [`LocaleFallbackProvider`] by wrapping another data provider and then loading
- /// fallback data from it.
- ///
- /// If the data provider being wrapped does not contain fallback data, use
- /// [`LocaleFallbackProvider::new_with_fallbacker`].
- pub fn try_new_with_buffer_provider(provider: P) -> Result<Self, DataError> {
- let fallbacker = LocaleFallbacker::try_new_with_buffer_provider(&provider)?;
- Ok(Self {
- inner: provider,
- fallbacker,
- })
- }
-}
-
-impl<P> LocaleFallbackProvider<P> {
- /// Wrap a provider with an arbitrary fallback engine.
- ///
- /// This relaxes the requirement that the wrapped provider contains its own fallback data.
- ///
- /// # Examples
- ///
- /// ```
- /// use icu_locid::locale;
- /// use icu_provider::hello_world::*;
- /// use icu_provider::prelude::*;
- /// use icu_provider_adapters::fallback::{
- /// LocaleFallbackProvider, LocaleFallbacker,
- /// };
- ///
- /// let provider = HelloWorldProvider;
- ///
- /// let req = DataRequest {
- /// locale: &locale!("de-CH").into(),
- /// metadata: Default::default(),
- /// };
- ///
- /// // There is no "de-CH" data in the `HelloWorldProvider`
- /// DataProvider::<HelloWorldV1Marker>::load(&provider, req)
- /// .expect_err("No data for de-CH");
- ///
- /// // `HelloWorldProvider` does not contain fallback data,
- /// // but we can fetch it from `icu_testdata`, and then
- /// // use it to create the fallbacking data provider.
- /// let fallbacker =
- /// LocaleFallbacker::try_new_unstable(&icu_testdata::unstable())
- /// .expect("Fallback data present");
- /// let provider =
- /// LocaleFallbackProvider::new_with_fallbacker(provider, fallbacker);
- ///
- /// // Now we can load the "de-CH" data via fallback to "de".
- /// let german_hello_world: DataPayload<HelloWorldV1Marker> = provider
- /// .load(req)
- /// .expect("Loading should succeed")
- /// .take_payload()
- /// .expect("Data should be present");
- ///
- /// assert_eq!("Hallo Welt", german_hello_world.get().message);
- /// ```
- pub fn new_with_fallbacker(provider: P, fallbacker: LocaleFallbacker) -> Self {
- Self {
- inner: provider,
- fallbacker,
- }
- }
-
- /// Returns a reference to the inner provider, bypassing fallback.
- pub fn inner(&self) -> &P {
- &self.inner
- }
-
- /// Returns a mutable reference to the inner provider.
- pub fn inner_mut(&mut self) -> &mut P {
- &mut self.inner
- }
-
- /// Returns ownership of the inner provider to the caller.
- pub fn into_inner(self) -> P {
- self.inner
- }
-
- /// Run the fallback algorithm with the data request using the inner data provider.
- /// Internal function; external clients should use one of the trait impls below.
- ///
- /// Function arguments:
- ///
- /// - F1 should perform a data load for a single DataRequest and return the result of it
- /// - F2 should map from the provider-specific response type to DataResponseMetadata
- fn run_fallback<F1, F2, R>(
- &self,
- key: DataKey,
- mut base_req: DataRequest,
- mut f1: F1,
- mut f2: F2,
- ) -> Result<R, DataError>
- where
- F1: FnMut(DataRequest) -> Result<R, DataError>,
- F2: FnMut(&mut R) -> &mut DataResponseMetadata,
- {
- let key_fallbacker = self.fallbacker.for_key(key);
- let mut fallback_iterator = key_fallbacker.fallback_for(base_req.locale.clone());
- let base_silent = core::mem::replace(&mut base_req.metadata.silent, true);
- loop {
- let result = f1(DataRequest {
- locale: fallback_iterator.get(),
- metadata: base_req.metadata,
- });
- if !result_is_err_missing_locale(&result) {
- return result
- .map(|mut res| {
- f2(&mut res).locale = Some(fallback_iterator.take());
- res
- })
- // Log the original request rather than the fallback request
- .map_err(|e| {
- base_req.metadata.silent = base_silent;
- e.with_req(key, base_req)
- });
- }
- // If we just checked und, break out of the loop.
- if fallback_iterator.get().is_empty() {
- break;
- }
- fallback_iterator.step();
- }
- base_req.metadata.silent = base_silent;
- Err(DataErrorKind::MissingLocale.with_req(key, base_req))
- }
-}
-
-impl<P> AnyProvider for LocaleFallbackProvider<P>
-where
- P: AnyProvider,
-{
- fn load_any(&self, key: DataKey, base_req: DataRequest) -> Result<AnyResponse, DataError> {
- self.run_fallback(
- key,
- base_req,
- |req| self.inner.load_any(key, req),
- |res| &mut res.metadata,
- )
- }
-}
-
-impl<P> BufferProvider for LocaleFallbackProvider<P>
-where
- P: BufferProvider,
-{
- fn load_buffer(
- &self,
- key: DataKey,
- base_req: DataRequest,
- ) -> Result<DataResponse<BufferMarker>, DataError> {
- self.run_fallback(
- key,
- base_req,
- |req| self.inner.load_buffer(key, req),
- |res| &mut res.metadata,
- )
- }
-}
-
-impl<P, M> DynamicDataProvider<M> for LocaleFallbackProvider<P>
-where
- P: DynamicDataProvider<M>,
- M: DataMarker,
-{
- fn load_data(&self, key: DataKey, base_req: DataRequest) -> Result<DataResponse<M>, DataError> {
- self.run_fallback(
- key,
- base_req,
- |req| self.inner.load_data(key, req),
- |res| &mut res.metadata,
- )
- }
-}
-
-impl<P, M> DataProvider<M> for LocaleFallbackProvider<P>
-where
- P: DataProvider<M>,
- M: KeyedDataMarker,
-{
- fn load(&self, base_req: DataRequest) -> Result<DataResponse<M>, DataError> {
- self.run_fallback(
- M::KEY,
- base_req,
- |req| self.inner.load(req),
- |res| &mut res.metadata,
- )
- }
-}
diff --git a/vendor/icu_provider_adapters/src/fallback/mod.rs b/vendor/icu_provider_adapters/src/fallback/mod.rs
index a28620b25..c0a05d14e 100644
--- a/vendor/icu_provider_adapters/src/fallback/mod.rs
+++ b/vendor/icu_provider_adapters/src/fallback/mod.rs
@@ -2,421 +2,297 @@
// called LICENSE at the top level of the ICU4X source tree
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
-//! Tools for locale fallback, enabling arbitrary input locales to be mapped into the nearest
-//! locale with data.
-//!
-//! The algorithm implemented in this module is called [Flexible Vertical Fallback](
-//! https://docs.google.com/document/d/1Mp7EUyl-sFh_HZYgyeVwj88vJGpCBIWxzlCwGgLCDwM/edit).
-//! Watch [#2243](https://github.com/unicode-org/icu4x/issues/2243) to track improvements to
-//! this algorithm and steps to enshrine the algorithm in CLDR.
-//!
-//! # Examples
-//!
-//! Run the locale fallback algorithm:
-//!
-//! ```
-//! use icu_locid::locale;
-//! use icu_provider_adapters::fallback::LocaleFallbacker;
-//! use icu_provider::prelude::*;
-//!
-//! // Set up a LocaleFallbacker with data.
-//! let fallbacker = LocaleFallbacker::try_new_unstable(&icu_testdata::unstable()).expect("data");
-//!
-//! // Create a LocaleFallbackerWithConfig with a configuration for a specific key.
-//! // By default, uses language priority with no additional extension keywords.
-//! let key_fallbacker = fallbacker.for_config(Default::default());
-//!
-//! // Set up the fallback iterator.
-//! let mut fallback_iterator = key_fallbacker.fallback_for(DataLocale::from(locale!("hi-Latn-IN")));
-//!
-//! // Run the algorithm and check the results.
-//! assert_eq!(fallback_iterator.get(), &DataLocale::from(locale!("hi-Latn-IN")));
-//! fallback_iterator.step();
-//! assert_eq!(fallback_iterator.get(), &DataLocale::from(locale!("hi-Latn")));
-//! fallback_iterator.step();
-//! assert_eq!(fallback_iterator.get(), &DataLocale::from(locale!("en-IN")));
-//! fallback_iterator.step();
-//! assert_eq!(fallback_iterator.get(), &DataLocale::from(locale!("en-001")));
-//! fallback_iterator.step();
-//! assert_eq!(fallback_iterator.get(), &DataLocale::from(locale!("en")));
-//! fallback_iterator.step();
-//! assert_eq!(fallback_iterator.get(), &DataLocale::from(locale!("und")));
-//! ```
+//! A data provider wrapper that performs locale fallback.
-use icu_locid::extensions::unicode::{Key, Value};
-use icu_locid::subtags::Variants;
+use crate::helpers::result_is_err_missing_locale;
+use icu_locid_transform::provider::*;
use icu_provider::prelude::*;
-use icu_provider::FallbackPriority;
-use icu_provider::FallbackSupplement;
-mod adapter;
-mod algorithms;
-pub mod provider;
+#[doc(hidden)] // moved
+pub use icu_locid_transform::fallback::{
+ LocaleFallbackIterator, LocaleFallbacker, LocaleFallbackerWithConfig,
+};
+#[doc(hidden)] // moved
+pub use icu_provider::fallback::LocaleFallbackConfig;
-pub use adapter::LocaleFallbackProvider;
-
-use provider::*;
+/// A data provider wrapper that performs locale fallback. This enables arbitrary locales to be
+/// handled at runtime.
+///
+/// # Examples
+///
+/// ```
+/// use icu_locid::locale;
+/// use icu_provider::prelude::*;
+/// use icu_provider::hello_world::*;
+/// use icu_provider_adapters::fallback::LocaleFallbackProvider;
+///
+/// # let provider = icu_provider_blob::BlobDataProvider::try_new_from_static_blob(include_bytes!("../../tests/data/blob.postcard")).unwrap();
+/// # let provider = provider.as_deserializing();
+///
+/// let req = DataRequest {
+/// locale: &locale!("ja-JP").into(),
+/// metadata: Default::default(),
+/// };
+///
+/// // The provider does not have data for "ja-JP":
+/// DataProvider::<HelloWorldV1Marker>::load(&provider, req).expect_err("No fallback");
+///
+/// // But if we wrap the provider in a fallback provider...
+/// let provider = LocaleFallbackProvider::try_new_unstable(provider)
+/// .expect("Fallback data present");
+///
+/// // ...then we can load "ja-JP" based on "ja" data
+/// let response =
+/// DataProvider::<HelloWorldV1Marker>::load(&provider, req).expect("successful with vertical fallback");
+///
+/// assert_eq!(
+/// response.metadata.locale.unwrap(),
+/// locale!("ja").into(),
+/// );
+/// assert_eq!(
+/// response.payload.unwrap().get().message,
+/// "ã“ã‚“ã«ã¡ã¯ä¸–ç•Œ",
+/// );
+/// ```
+#[derive(Clone, Debug)]
+pub struct LocaleFallbackProvider<P> {
+ inner: P,
+ fallbacker: LocaleFallbacker,
+}
-/// Configuration settings for a particular fallback operation.
-#[derive(Debug, Clone, PartialEq, Eq, Default)]
-#[non_exhaustive]
-pub struct LocaleFallbackConfig {
- /// Strategy for choosing which subtags to drop during locale fallback.
- ///
- /// # Examples
+impl<P> LocaleFallbackProvider<P>
+where
+ P: DataProvider<LocaleFallbackLikelySubtagsV1Marker>
+ + DataProvider<LocaleFallbackParentsV1Marker>
+ + DataProvider<CollationFallbackSupplementV1Marker>,
+{
+ /// Create a [`LocaleFallbackProvider`] by wrapping another data provider and then loading
+ /// fallback data from it.
///
- /// Retain the language and script subtags until the final step:
- ///
- /// ```
- /// use icu_locid::locale;
- /// use icu_provider::prelude::*;
- /// use icu_provider::FallbackPriority;
- /// use icu_provider_adapters::fallback::LocaleFallbackConfig;
- /// use icu_provider_adapters::fallback::LocaleFallbacker;
- ///
- /// // Set up the fallback iterator.
- /// let fallbacker =
- /// LocaleFallbacker::try_new_unstable(&icu_testdata::unstable())
- /// .expect("data");
- /// let mut config = LocaleFallbackConfig::default();
- /// config.priority = FallbackPriority::Language;
- /// let key_fallbacker = fallbacker.for_config(config);
- /// let mut fallback_iterator = key_fallbacker
- /// .fallback_for(DataLocale::from(locale!("ca-ES-valencia")));
- ///
- /// // Run the algorithm and check the results.
- /// assert_eq!(
- /// fallback_iterator.get(),
- /// &DataLocale::from(locale!("ca-ES-valencia"))
- /// );
- /// fallback_iterator.step();
- /// assert_eq!(fallback_iterator.get(), &DataLocale::from(locale!("ca-ES")));
- /// fallback_iterator.step();
- /// assert_eq!(fallback_iterator.get(), &DataLocale::from(locale!("ca")));
- /// fallback_iterator.step();
- /// assert_eq!(fallback_iterator.get(), &DataLocale::from(locale!("und")));
- /// ```
- ///
- /// Retain the region subtag until the final step:
+ /// If the data provider being wrapped does not contain fallback data, use
+ /// [`LocaleFallbackProvider::new_with_fallbacker`].
+ pub fn try_new_unstable(provider: P) -> Result<Self, DataError> {
+ let fallbacker = LocaleFallbacker::try_new_unstable(&provider)?;
+ Ok(Self {
+ inner: provider,
+ fallbacker,
+ })
+ }
+}
+
+impl<P> LocaleFallbackProvider<P>
+where
+ P: AnyProvider,
+{
+ /// Create a [`LocaleFallbackProvider`] by wrapping another data provider and then loading
+ /// fallback data from it.
///
- /// ```
- /// use icu_locid::locale;
- /// use icu_provider::prelude::*;
- /// use icu_provider::FallbackPriority;
- /// use icu_provider_adapters::fallback::LocaleFallbackConfig;
- /// use icu_provider_adapters::fallback::LocaleFallbacker;
+ /// If the data provider being wrapped does not contain fallback data, use
+ /// [`LocaleFallbackProvider::new_with_fallbacker`].
+ pub fn try_new_with_any_provider(provider: P) -> Result<Self, DataError> {
+ let fallbacker = LocaleFallbacker::try_new_with_any_provider(&provider)?;
+ Ok(Self {
+ inner: provider,
+ fallbacker,
+ })
+ }
+}
+
+#[cfg(feature = "serde")]
+impl<P> LocaleFallbackProvider<P>
+where
+ P: BufferProvider,
+{
+ /// Create a [`LocaleFallbackProvider`] by wrapping another data provider and then loading
+ /// fallback data from it.
///
- /// // Set up the fallback iterator.
- /// let fallbacker =
- /// LocaleFallbacker::try_new_unstable(&icu_testdata::unstable())
- /// .expect("data");
- /// let mut config = LocaleFallbackConfig::default();
- /// config.priority = FallbackPriority::Region;
- /// let key_fallbacker = fallbacker.for_config(config);
- /// let mut fallback_iterator = key_fallbacker
- /// .fallback_for(DataLocale::from(locale!("ca-ES-valencia")));
+ /// If the data provider being wrapped does not contain fallback data, use
+ /// [`LocaleFallbackProvider::new_with_fallbacker`].
+ pub fn try_new_with_buffer_provider(provider: P) -> Result<Self, DataError> {
+ let fallbacker = LocaleFallbacker::try_new_with_buffer_provider(&provider)?;
+ Ok(Self {
+ inner: provider,
+ fallbacker,
+ })
+ }
+}
+
+impl<P> LocaleFallbackProvider<P> {
+ /// Wrap a provider with an arbitrary fallback engine.
///
- /// // Run the algorithm and check the results.
- /// assert_eq!(
- /// fallback_iterator.get(),
- /// &DataLocale::from(locale!("ca-ES-valencia"))
- /// );
- /// fallback_iterator.step();
- /// assert_eq!(fallback_iterator.get(), &DataLocale::from(locale!("ca-ES")));
- /// fallback_iterator.step();
- /// assert_eq!(
- /// fallback_iterator.get(),
- /// &DataLocale::from(locale!("und-ES-valencia"))
- /// );
- /// fallback_iterator.step();
- /// assert_eq!(
- /// fallback_iterator.get(),
- /// &DataLocale::from(locale!("und-ES"))
- /// );
- /// fallback_iterator.step();
- /// assert_eq!(fallback_iterator.get(), &DataLocale::from(locale!("und")));
- /// ```
- pub priority: FallbackPriority,
- /// An extension keyword to retain during locale fallback.
+ /// This relaxes the requirement that the wrapped provider contains its own fallback data.
///
/// # Examples
///
/// ```
/// use icu_locid::locale;
+ /// use icu_locid_transform::LocaleFallbacker;
+ /// use icu_provider::hello_world::*;
/// use icu_provider::prelude::*;
- /// use icu_provider_adapters::fallback::LocaleFallbackConfig;
- /// use icu_provider_adapters::fallback::LocaleFallbacker;
- ///
- /// // Set up the fallback iterator.
- /// let fallbacker =
- /// LocaleFallbacker::try_new_unstable(&icu_testdata::unstable())
- /// .expect("data");
- /// let mut config = LocaleFallbackConfig::default();
- /// config.extension_key = Some(icu_locid::extensions_unicode_key!("nu"));
- /// let key_fallbacker = fallbacker.for_config(config);
- /// let mut fallback_iterator = key_fallbacker
- /// .fallback_for(DataLocale::from(locale!("ar-EG-u-nu-latn")));
- ///
- /// // Run the algorithm and check the results.
- /// assert_eq!(
- /// fallback_iterator.get(),
- /// &DataLocale::from(locale!("ar-EG-u-nu-latn"))
- /// );
- /// fallback_iterator.step();
- /// assert_eq!(fallback_iterator.get(), &DataLocale::from(locale!("ar-EG")));
- /// fallback_iterator.step();
- /// assert_eq!(fallback_iterator.get(), &DataLocale::from(locale!("ar")));
- /// fallback_iterator.step();
- /// assert_eq!(fallback_iterator.get(), &DataLocale::from(locale!("und")));
- /// ```
- pub extension_key: Option<Key>,
- /// Fallback supplement data key to customize fallback rules.
+ /// use icu_provider_adapters::fallback::LocaleFallbackProvider;
///
- /// For example, most data keys for collation add additional parent locales, such as
- /// "yue" to "zh-Hant", and data used for the `"-u-co"` extension keyword fallback.
+ /// let provider = HelloWorldProvider;
///
- /// Currently the only supported fallback supplement is `FallbackSupplement::Collation`, but more may be
- /// added in the future.
+ /// let req = DataRequest {
+ /// locale: &locale!("de-CH").into(),
+ /// metadata: Default::default(),
+ /// };
///
- /// # Examples
+ /// // There is no "de-CH" data in the `HelloWorldProvider`
+ /// DataProvider::<HelloWorldV1Marker>::load(&provider, req)
+ /// .expect_err("No data for de-CH");
///
- /// ```
- /// use icu_locid::locale;
- /// use icu_provider::prelude::*;
- /// use icu_provider::FallbackPriority;
- /// use icu_provider::FallbackSupplement;
- /// use icu_provider_adapters::fallback::LocaleFallbackConfig;
- /// use icu_provider_adapters::fallback::LocaleFallbacker;
- /// use tinystr::tinystr;
+ /// // `HelloWorldProvider` does not contain fallback data,
+ /// // but we can construct a fallbacker with `icu_locid_transform`'s
+ /// // compiled data.
+ /// let provider = LocaleFallbackProvider::new_with_fallbacker(
+ /// provider,
+ /// LocaleFallbacker::new().static_to_owned(),
+ /// );
///
- /// // Set up the fallback iterator.
- /// let fallbacker =
- /// LocaleFallbacker::try_new_unstable(&icu_testdata::unstable())
- /// .expect("data");
- /// let mut config = LocaleFallbackConfig::default();
- /// config.priority = FallbackPriority::Collation;
- /// config.fallback_supplement = Some(FallbackSupplement::Collation);
- /// let key_fallbacker = fallbacker.for_config(config);
- /// let mut fallback_iterator =
- /// key_fallbacker.fallback_for(DataLocale::from(locale!("yue-HK")));
+ /// // Now we can load the "de-CH" data via fallback to "de".
+ /// let german_hello_world: DataPayload<HelloWorldV1Marker> = provider
+ /// .load(req)
+ /// .expect("Loading should succeed")
+ /// .take_payload()
+ /// .expect("Data should be present");
///
- /// // Run the algorithm and check the results.
- /// // TODO(#1964): add "zh" as a target.
- /// assert_eq!(
- /// fallback_iterator.get(),
- /// &DataLocale::from(locale!("yue-HK"))
- /// );
- /// fallback_iterator.step();
- /// assert_eq!(fallback_iterator.get(), &DataLocale::from(locale!("yue")));
- /// fallback_iterator.step();
- /// assert_eq!(
- /// fallback_iterator.get(),
- /// &DataLocale::from(locale!("zh-Hant"))
- /// );
- /// fallback_iterator.step();
- /// assert_eq!(fallback_iterator.get(), &DataLocale::from(locale!("und")));
+ /// assert_eq!("Hallo Welt", german_hello_world.get().message);
/// ```
- pub fallback_supplement: Option<FallbackSupplement>,
-}
-
-/// Entry type for locale fallbacking.
-///
-/// See the module-level documentation for an example.
-#[derive(Debug, Clone, PartialEq)]
-pub struct LocaleFallbacker {
- likely_subtags: DataPayload<LocaleFallbackLikelySubtagsV1Marker>,
- parents: DataPayload<LocaleFallbackParentsV1Marker>,
- collation_supplement: Option<DataPayload<CollationFallbackSupplementV1Marker>>,
-}
+ pub fn new_with_fallbacker(provider: P, fallbacker: LocaleFallbacker) -> Self {
+ Self {
+ inner: provider,
+ fallbacker,
+ }
+ }
-/// Intermediate type for spawning locale fallback iterators based on a specific configuration.
-///
-/// See the module-level documentation for an example.
-#[derive(Debug, Clone, PartialEq)]
-pub struct LocaleFallbackerWithConfig<'a> {
- likely_subtags: &'a LocaleFallbackLikelySubtagsV1<'a>,
- parents: &'a LocaleFallbackParentsV1<'a>,
- supplement: Option<&'a LocaleFallbackSupplementV1<'a>>,
- config: LocaleFallbackConfig,
-}
+ /// Returns a reference to the inner provider, bypassing fallback.
+ pub fn inner(&self) -> &P {
+ &self.inner
+ }
-/// Inner iteration type. Does not own the item under fallback.
-#[derive(Debug)]
-struct LocaleFallbackIteratorInner<'a, 'b> {
- likely_subtags: &'a LocaleFallbackLikelySubtagsV1<'a>,
- parents: &'a LocaleFallbackParentsV1<'a>,
- supplement: Option<&'a LocaleFallbackSupplementV1<'a>>,
- config: &'b LocaleFallbackConfig,
- backup_extension: Option<Value>,
- backup_subdivision: Option<Value>,
- backup_variants: Option<Variants>,
-}
+ /// Returns a mutable reference to the inner provider.
+ pub fn inner_mut(&mut self) -> &mut P {
+ &mut self.inner
+ }
-/// Iteration type for locale fallback operations.
-///
-/// Because the `Iterator` trait does not allow items to borrow from the iterator, this class does
-/// not implement that trait. Instead, use `.step()` and `.get()`.
-#[derive(Debug)]
-pub struct LocaleFallbackIterator<'a, 'b> {
- current: DataLocale,
- inner: LocaleFallbackIteratorInner<'a, 'b>,
-}
+ /// Returns ownership of the inner provider to the caller.
+ pub fn into_inner(self) -> P {
+ self.inner
+ }
-impl LocaleFallbacker {
- /// Creates a [`LocaleFallbacker`] with fallback data (likely subtags and parent locales).
+ /// Run the fallback algorithm with the data request using the inner data provider.
+ /// Internal function; external clients should use one of the trait impls below.
///
- /// [📚 Help choosing a constructor](icu_provider::constructors)
- /// <div class="stab unstable">
- /// âš ï¸ The bounds on this function may change over time, including in SemVer minor releases.
- /// </div>
- pub fn try_new_unstable<P>(provider: &P) -> Result<Self, DataError>
+ /// Function arguments:
+ ///
+ /// - F1 should perform a data load for a single DataRequest and return the result of it
+ /// - F2 should map from the provider-specific response type to DataResponseMetadata
+ fn run_fallback<F1, F2, R>(
+ &self,
+ key: DataKey,
+ mut base_req: DataRequest,
+ mut f1: F1,
+ mut f2: F2,
+ ) -> Result<R, DataError>
where
- P: DataProvider<LocaleFallbackLikelySubtagsV1Marker>
- + DataProvider<LocaleFallbackParentsV1Marker>
- + DataProvider<CollationFallbackSupplementV1Marker>
- + ?Sized,
+ F1: FnMut(DataRequest) -> Result<R, DataError>,
+ F2: FnMut(&mut R) -> &mut DataResponseMetadata,
{
- let likely_subtags = provider.load(Default::default())?.take_payload()?;
- let parents = provider.load(Default::default())?.take_payload()?;
- let collation_supplement = match DataProvider::<CollationFallbackSupplementV1Marker>::load(
- provider,
- Default::default(),
- ) {
- Ok(response) => Some(response.take_payload()?),
- // It is expected that not all keys are present
- Err(DataError {
- kind: DataErrorKind::MissingDataKey,
- ..
- }) => None,
- Err(e) => return Err(e),
- };
- Ok(LocaleFallbacker {
- likely_subtags,
- parents,
- collation_supplement,
- })
- }
-
- icu_provider::gen_any_buffer_constructors!(locale: skip, options: skip, error: DataError);
-
- /// Creates a [`LocaleFallbacker`] without fallback data. Using this constructor may result in
- /// surprising behavior, especially in multi-script languages.
- pub fn new_without_data() -> Self {
- LocaleFallbacker {
- likely_subtags: DataPayload::from_owned(Default::default()),
- parents: DataPayload::from_owned(Default::default()),
- collation_supplement: None,
+ if key.metadata().singleton {
+ return f1(base_req);
}
- }
-
- /// Creates the intermediate [`LocaleFallbackerWithConfig`] with configuration options.
- pub fn for_config(&self, config: LocaleFallbackConfig) -> LocaleFallbackerWithConfig {
- let supplement = match config.fallback_supplement {
- Some(FallbackSupplement::Collation) => {
- self.collation_supplement.as_ref().map(|p| p.get())
+ let mut fallback_iterator = self
+ .fallbacker
+ .for_config(key.fallback_config())
+ .fallback_for(base_req.locale.clone());
+ let base_silent = core::mem::replace(&mut base_req.metadata.silent, true);
+ loop {
+ let result = f1(DataRequest {
+ locale: fallback_iterator.get(),
+ metadata: base_req.metadata,
+ });
+ if !result_is_err_missing_locale(&result) {
+ return result
+ .map(|mut res| {
+ f2(&mut res).locale = Some(fallback_iterator.take());
+ res
+ })
+ // Log the original request rather than the fallback request
+ .map_err(|e| {
+ base_req.metadata.silent = base_silent;
+ e.with_req(key, base_req)
+ });
+ }
+ // If we just checked und, break out of the loop.
+ if fallback_iterator.get().is_und() {
+ break;
}
- _ => None,
- };
- LocaleFallbackerWithConfig {
- likely_subtags: self.likely_subtags.get(),
- parents: self.parents.get(),
- supplement,
- config,
+ fallback_iterator.step();
}
- }
-
- /// Creates the intermediate [`LocaleFallbackerWithConfig`] based on a
- /// [`DataKey`] and a [`DataRequestMetadata`].
- ///
- /// # Examples
- ///
- /// ```
- /// use icu_locid::locale;
- /// use icu_provider::prelude::*;
- /// use icu_provider_adapters::fallback::LocaleFallbacker;
- /// use std::borrow::Cow;
- ///
- /// // Define the data struct with key.
- /// #[icu_provider::data_struct(marker(
- /// FooV1Marker,
- /// "demo/foo@1",
- /// fallback_by = "region"
- /// ))]
- /// pub struct FooV1<'data> {
- /// message: Cow<'data, str>,
- /// };
- ///
- /// // Set up the fallback iterator.
- /// let fallbacker =
- /// LocaleFallbacker::try_new_unstable(&icu_testdata::unstable())
- /// .expect("data");
- /// let key_fallbacker = fallbacker.for_key(FooV1Marker::KEY);
- /// let mut fallback_iterator =
- /// key_fallbacker.fallback_for(DataLocale::from(locale!("en-GB")));
- ///
- /// // Run the algorithm and check the results.
- /// assert_eq!(fallback_iterator.get(), &DataLocale::from(locale!("en-GB")));
- /// fallback_iterator.step();
- /// assert_eq!(
- /// fallback_iterator.get(),
- /// &DataLocale::from(locale!("und-GB"))
- /// );
- /// fallback_iterator.step();
- /// assert_eq!(fallback_iterator.get(), &DataLocale::from(locale!("und")));
- /// ```
- ///
- /// [`DataRequestMetadata`]: icu_provider::DataRequestMetadata
- pub fn for_key(&self, data_key: DataKey) -> LocaleFallbackerWithConfig {
- let priority = data_key.metadata().fallback_priority;
- let extension_key = data_key.metadata().extension_key;
- let fallback_supplement = data_key.metadata().fallback_supplement;
- self.for_config(LocaleFallbackConfig {
- priority,
- extension_key,
- fallback_supplement,
- })
+ base_req.metadata.silent = base_silent;
+ Err(DataErrorKind::MissingLocale.with_req(key, base_req))
}
}
-impl<'a> LocaleFallbackerWithConfig<'a> {
- /// Creates an iterator based on a [`DataLocale`] (which can be created from [`Locale`]).
- ///
- /// When first initialized, the locale is normalized according to the fallback algorithm.
- ///
- /// [`Locale`]: icu_locid::Locale
- pub fn fallback_for<'b>(&'b self, mut locale: DataLocale) -> LocaleFallbackIterator<'a, 'b> {
- self.normalize(&mut locale);
- LocaleFallbackIterator {
- current: locale,
- inner: LocaleFallbackIteratorInner {
- likely_subtags: self.likely_subtags,
- parents: self.parents,
- supplement: self.supplement,
- config: &self.config,
- backup_extension: None,
- backup_subdivision: None,
- backup_variants: None,
- },
- }
+impl<P> AnyProvider for LocaleFallbackProvider<P>
+where
+ P: AnyProvider,
+{
+ fn load_any(&self, key: DataKey, base_req: DataRequest) -> Result<AnyResponse, DataError> {
+ self.run_fallback(
+ key,
+ base_req,
+ |req| self.inner.load_any(key, req),
+ |res| &mut res.metadata,
+ )
}
}
-impl LocaleFallbackIterator<'_, '_> {
- /// Borrows the current [`DataLocale`] under fallback.
- pub fn get(&self) -> &DataLocale {
- &self.current
+impl<P> BufferProvider for LocaleFallbackProvider<P>
+where
+ P: BufferProvider,
+{
+ fn load_buffer(
+ &self,
+ key: DataKey,
+ base_req: DataRequest,
+ ) -> Result<DataResponse<BufferMarker>, DataError> {
+ self.run_fallback(
+ key,
+ base_req,
+ |req| self.inner.load_buffer(key, req),
+ |res| &mut res.metadata,
+ )
}
+}
- /// Takes the current [`DataLocale`] under fallback.
- pub fn take(self) -> DataLocale {
- self.current
+impl<P, M> DynamicDataProvider<M> for LocaleFallbackProvider<P>
+where
+ P: DynamicDataProvider<M>,
+ M: DataMarker,
+{
+ fn load_data(&self, key: DataKey, base_req: DataRequest) -> Result<DataResponse<M>, DataError> {
+ self.run_fallback(
+ key,
+ base_req,
+ |req| self.inner.load_data(key, req),
+ |res| &mut res.metadata,
+ )
}
+}
- /// Performs one step of the locale fallback algorithm.
- ///
- /// The fallback is completed once the inner [`DataLocale`] becomes `und`.
- pub fn step(&mut self) -> &mut Self {
- self.inner.step(&mut self.current);
- self
+impl<P, M> DataProvider<M> for LocaleFallbackProvider<P>
+where
+ P: DataProvider<M>,
+ M: KeyedDataMarker,
+{
+ fn load(&self, base_req: DataRequest) -> Result<DataResponse<M>, DataError> {
+ self.run_fallback(
+ M::KEY,
+ base_req,
+ |req| self.inner.load(req),
+ |res| &mut res.metadata,
+ )
}
}
diff --git a/vendor/icu_provider_adapters/src/filter/impls.rs b/vendor/icu_provider_adapters/src/filter/impls.rs
index df18cf72c..f24248eff 100644
--- a/vendor/icu_provider_adapters/src/filter/impls.rs
+++ b/vendor/icu_provider_adapters/src/filter/impls.rs
@@ -25,7 +25,7 @@ where
///
/// ```
/// use icu_locid::LanguageIdentifier;
- /// use icu_locid::{langid, locale, subtags_language as language};
+ /// use icu_locid::{langid, locale, subtags::language};
/// use icu_provider::datagen::*;
/// use icu_provider::hello_world::*;
/// use icu_provider::prelude::*;
@@ -106,7 +106,7 @@ where
/// use icu_provider::prelude::*;
/// use icu_provider_adapters::filter::Filterable;
///
- /// let allowlist = vec![langid!("de"), langid!("zh")];
+ /// let allowlist = [langid!("de"), langid!("zh")];
/// let provider = HelloWorldProvider
/// .filterable("Demo German+Chinese filter")
/// .filter_by_langid_allowlist_strict(&allowlist);
diff --git a/vendor/icu_provider_adapters/src/filter/mod.rs b/vendor/icu_provider_adapters/src/filter/mod.rs
index 83be9f779..19b6bf233 100644
--- a/vendor/icu_provider_adapters/src/filter/mod.rs
+++ b/vendor/icu_provider_adapters/src/filter/mod.rs
@@ -21,7 +21,7 @@
//! # Examples
//!
//! ```
-//! use icu_locid::subtags_language as language;
+//! use icu_locid::subtags::language;
//! use icu_provider::hello_world::*;
//! use icu_provider::prelude::*;
//! use icu_provider_adapters::filter::Filterable;
diff --git a/vendor/icu_provider_adapters/src/fork/by_error.rs b/vendor/icu_provider_adapters/src/fork/by_error.rs
index aae996761..5d25ce207 100644
--- a/vendor/icu_provider_adapters/src/fork/by_error.rs
+++ b/vendor/icu_provider_adapters/src/fork/by_error.rs
@@ -174,7 +174,7 @@ where
key: DataKey,
req: DataRequest,
) -> Result<DataResponse<BufferMarker>, DataError> {
- let mut last_error = DataErrorKind::MissingDataKey.with_key(key);
+ let mut last_error = F::UNIT_ERROR.with_key(key);
for provider in self.providers.iter() {
let result = provider.load_buffer(key, req);
match result {
@@ -193,7 +193,7 @@ where
F: ForkByErrorPredicate,
{
fn load_any(&self, key: DataKey, req: DataRequest) -> Result<AnyResponse, DataError> {
- let mut last_error = DataErrorKind::MissingDataKey.with_key(key);
+ let mut last_error = F::UNIT_ERROR.with_key(key);
for provider in self.providers.iter() {
let result = provider.load_any(key, req);
match result {
@@ -213,7 +213,7 @@ where
F: ForkByErrorPredicate,
{
fn load_data(&self, key: DataKey, req: DataRequest) -> Result<DataResponse<M>, DataError> {
- let mut last_error = DataErrorKind::MissingDataKey.with_key(key);
+ let mut last_error = F::UNIT_ERROR.with_key(key);
for provider in self.providers.iter() {
let result = provider.load_data(key, req);
match result {
@@ -234,7 +234,7 @@ where
F: ForkByErrorPredicate,
{
fn supported_locales_for_key(&self, key: DataKey) -> Result<Vec<DataLocale>, DataError> {
- let mut last_error = DataErrorKind::MissingDataKey.with_key(key);
+ let mut last_error = F::UNIT_ERROR.with_key(key);
for provider in self.providers.iter() {
let result = provider.supported_locales_for_key(key);
match result {
@@ -260,7 +260,7 @@ where
key: DataKey,
mut from: DataPayload<MFrom>,
) -> Result<DataPayload<MTo>, (DataPayload<MFrom>, DataError)> {
- let mut last_error = DataErrorKind::MissingDataKey.with_key(key);
+ let mut last_error = F::UNIT_ERROR.with_key(key);
for provider in self.providers.iter() {
let result = provider.convert(key, from);
match result {
diff --git a/vendor/icu_provider_adapters/src/fork/macros.rs b/vendor/icu_provider_adapters/src/fork/macros.rs
index 7c18a9ba3..eb98ec693 100644
--- a/vendor/icu_provider_adapters/src/fork/macros.rs
+++ b/vendor/icu_provider_adapters/src/fork/macros.rs
@@ -11,27 +11,23 @@
/// use icu_provider_adapters::fork::ForkByKeyProvider;
///
/// // Some empty example providers:
-/// #[derive(Default, PartialEq, Debug)]
+/// #[derive(PartialEq, Debug)]
/// struct Provider1;
-/// #[derive(Default, PartialEq, Debug)]
+/// #[derive(PartialEq, Debug)]
/// struct Provider2;
-/// #[derive(Default, PartialEq, Debug)]
+/// #[derive(PartialEq, Debug)]
/// struct Provider3;
///
/// // Combine them into one:
/// let forking1 = icu_provider_adapters::make_forking_provider!(
/// ForkByKeyProvider::new,
-/// [
-/// Provider1::default(),
-/// Provider2::default(),
-/// Provider3::default(),
-/// ]
+/// [Provider1, Provider2, Provider3,]
/// );
///
/// // This is equivalent to:
/// let forking2 = ForkByKeyProvider::new(
-/// Provider1::default(),
-/// ForkByKeyProvider::new(Provider2::default(), Provider3::default()),
+/// Provider1,
+/// ForkByKeyProvider::new(Provider2, Provider3),
/// );
///
/// assert_eq!(forking1, forking2);
@@ -50,22 +46,15 @@ macro_rules! make_forking_provider {
#[cfg(test)]
mod test {
- #[derive(Default)]
struct Provider1;
- #[derive(Default)]
struct Provider2;
- #[derive(Default)]
struct Provider3;
#[test]
fn test_make_forking_provider() {
make_forking_provider!(
crate::fork::ForkByKeyProvider::new,
- [
- Provider1::default(),
- Provider2::default(),
- Provider3::default(),
- ]
+ [Provider1, Provider2, Provider3,]
);
}
}
diff --git a/vendor/icu_provider_adapters/src/fork/mod.rs b/vendor/icu_provider_adapters/src/fork/mod.rs
index 05ba5fd19..a15c742c6 100644
--- a/vendor/icu_provider_adapters/src/fork/mod.rs
+++ b/vendor/icu_provider_adapters/src/fork/mod.rs
@@ -80,9 +80,9 @@ use predicates::MissingDataKeyPredicate;
/// HelloWorldProvider.into_json_provider(),
/// );
///
-/// let data_provider = forking_provider.as_deserializing();
+/// let provider = forking_provider.as_deserializing();
///
-/// let german_hello_world: DataPayload<HelloWorldV1Marker> = data_provider
+/// let german_hello_world: DataPayload<HelloWorldV1Marker> = provider
/// .load(DataRequest {
/// locale: &locale!("de").into(),
/// metadata: Default::default(),
@@ -97,7 +97,7 @@ use predicates::MissingDataKeyPredicate;
/// Stops at the first provider supporting a key, even if the locale is not supported:
///
/// ```
-/// use icu_locid::{subtags_language as language, locale};
+/// use icu_locid::{subtags::language, locale};
/// use icu_provider::hello_world::*;
/// use icu_provider::prelude::*;
/// use icu_provider_adapters::filter::Filterable;
@@ -114,11 +114,11 @@ use predicates::MissingDataKeyPredicate;
/// .filter_by_langid(|langid| langid.language == language!("de")),
/// );
///
-/// let data_provider: &dyn DataProvider<HelloWorldV1Marker> =
+/// let provider: &dyn DataProvider<HelloWorldV1Marker> =
/// &forking_provider.as_deserializing();
///
/// // Chinese is the first provider, so this succeeds
-/// let chinese_hello_world = data_provider
+/// let chinese_hello_world = provider
/// .load(DataRequest {
/// locale: &locale!("zh").into(),
/// metadata: Default::default(),
@@ -130,7 +130,7 @@ use predicates::MissingDataKeyPredicate;
/// assert_eq!("你好世界", chinese_hello_world.get().message);
///
/// // German is shadowed by Chinese, so this fails
-/// data_provider
+/// provider
/// .load(DataRequest {
/// locale: &locale!("de").into(),
/// metadata: Default::default(),
@@ -166,7 +166,7 @@ impl<P0, P1> ForkByKeyProvider<P0, P1> {
/// # Examples
///
/// ```
-/// use icu_locid::{subtags_language as language, locale};
+/// use icu_locid::{subtags::language, locale};
/// use icu_provider::hello_world::*;
/// use icu_provider::prelude::*;
/// use icu_provider_adapters::filter::Filterable;
@@ -185,11 +185,11 @@ impl<P0, P1> ForkByKeyProvider<P0, P1> {
/// ],
/// );
///
-/// let data_provider: &dyn DataProvider<HelloWorldV1Marker> =
+/// let provider: &dyn DataProvider<HelloWorldV1Marker> =
/// &forking_provider.as_deserializing();
///
/// // Chinese is the first provider, so this succeeds
-/// let chinese_hello_world = data_provider
+/// let chinese_hello_world = provider
/// .load(DataRequest {
/// locale: &locale!("zh").into(),
/// metadata: Default::default(),
@@ -201,7 +201,7 @@ impl<P0, P1> ForkByKeyProvider<P0, P1> {
/// assert_eq!("你好世界", chinese_hello_world.get().message);
///
/// // German is shadowed by Chinese, so this fails
-/// data_provider
+/// provider
/// .load(DataRequest {
/// locale: &locale!("de").into(),
/// metadata: Default::default(),
diff --git a/vendor/icu_provider_adapters/src/fork/predicates.rs b/vendor/icu_provider_adapters/src/fork/predicates.rs
index 0fefe5704..58ffa7416 100644
--- a/vendor/icu_provider_adapters/src/fork/predicates.rs
+++ b/vendor/icu_provider_adapters/src/fork/predicates.rs
@@ -10,6 +10,9 @@ use icu_provider::prelude::*;
///
/// [`ForkByErrorProvider`]: super::ForkByErrorProvider
pub trait ForkByErrorPredicate {
+ /// The error to return if there are zero providers.
+ const UNIT_ERROR: DataErrorKind = DataErrorKind::MissingDataKey;
+
/// This function is called when a data request fails and there are additional providers
/// that could possibly fulfill the request.
///
@@ -43,6 +46,8 @@ pub trait ForkByErrorPredicate {
pub struct MissingDataKeyPredicate;
impl ForkByErrorPredicate for MissingDataKeyPredicate {
+ const UNIT_ERROR: DataErrorKind = DataErrorKind::MissingDataKey;
+
#[inline]
fn test(&self, _: DataKey, _: Option<DataRequest>, err: DataError) -> bool {
matches!(
@@ -125,6 +130,8 @@ impl ForkByErrorPredicate for MissingDataKeyPredicate {
pub struct MissingLocalePredicate;
impl ForkByErrorPredicate for MissingLocalePredicate {
+ const UNIT_ERROR: DataErrorKind = DataErrorKind::MissingLocale;
+
#[inline]
fn test(&self, _: DataKey, _: Option<DataRequest>, err: DataError) -> bool {
matches!(
diff --git a/vendor/icu_provider_adapters/tests/data/blob.postcard b/vendor/icu_provider_adapters/tests/data/blob.postcard
new file mode 100644
index 000000000..c958c7bfd
--- /dev/null
+++ b/vendor/icu_provider_adapters/tests/data/blob.postcard
Binary files differ
diff --git a/vendor/icu_provider_adapters/tests/data/config.json b/vendor/icu_provider_adapters/tests/data/config.json
new file mode 100644
index 000000000..db3a07ac1
--- /dev/null
+++ b/vendor/icu_provider_adapters/tests/data/config.json
@@ -0,0 +1,21 @@
+{
+ "keys": {
+ "explicit": [
+ "core/helloworld@1",
+ "fallback/likelysubtags@1",
+ "fallback/parents@1",
+ "fallback/supplement/co@1"
+ ]
+ },
+ "fallback": "runtimeManual",
+ "locales": "all",
+ "cldr": "latest",
+ "icuExport": "none",
+ "segmenterLstm": "none",
+ "export": {
+ "blob": {
+ "path": "blob.postcard"
+ }
+ },
+ "overwrite": true
+} \ No newline at end of file
diff --git a/vendor/icu_provider_adapters/tests/data/langtest/de.json b/vendor/icu_provider_adapters/tests/data/langtest/de.json
new file mode 100644
index 000000000..8c69fa425
--- /dev/null
+++ b/vendor/icu_provider_adapters/tests/data/langtest/de.json
@@ -0,0 +1,23 @@
+{
+ "keys": {
+ "explicit": [
+ "core/helloworld@1"
+ ]
+ },
+ "fallback": "preresolved",
+ "locales": {
+ "explicit": [
+ "de"
+ ]
+ },
+ "cldr": "none",
+ "icuExport": "none",
+ "segmenterLstm": "none",
+ "export": {
+ "fileSystem": {
+ "path": "de",
+ "syntax": "json"
+ }
+ },
+ "overwrite": true
+} \ No newline at end of file
diff --git a/vendor/icu_provider_adapters/tests/data/langtest/ro.json b/vendor/icu_provider_adapters/tests/data/langtest/ro.json
new file mode 100644
index 000000000..afae9e85a
--- /dev/null
+++ b/vendor/icu_provider_adapters/tests/data/langtest/ro.json
@@ -0,0 +1,23 @@
+{
+ "keys": {
+ "explicit": [
+ "core/helloworld@1"
+ ]
+ },
+ "fallback": "preresolved",
+ "locales": {
+ "explicit": [
+ "ro"
+ ]
+ },
+ "cldr": "none",
+ "icuExport": "none",
+ "segmenterLstm": "none",
+ "export": {
+ "fileSystem": {
+ "path": "ro",
+ "syntax": "json"
+ }
+ },
+ "overwrite": true
+} \ No newline at end of file
diff --git a/vendor/icu_provider_macros/.cargo-checksum.json b/vendor/icu_provider_macros/.cargo-checksum.json
index b33f9def3..573555e71 100644
--- a/vendor/icu_provider_macros/.cargo-checksum.json
+++ b/vendor/icu_provider_macros/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"8c8bf034fddb240e039b17b73842d93216c87c0f8a0d3486302187a004bcb461","LICENSE":"4ad7541d66a407234e2c84902124cef325c29f3e966353efdb800bedb8b8da21","README.md":"f9f95075851c9c3b7d0559c25794ebcad5dee957c7fb27c343418a3324f15b8a","src/lib.rs":"1376fd3fb06bc354eb24c97b1bf47f80b0d408644f1aa5885db3f374aa39f74a","src/tests.rs":"3a34d070c375eade0808b7dbe11157450bc62d5a6f056c38ac129104487d8ea9"},"package":"dd8b728b9421e93eff1d9f8681101b78fa745e0748c95c655c83f337044a7e10"} \ No newline at end of file
+{"files":{"Cargo.toml":"98913f20a28e37da354cd53c93f93c9ff43a5805bbca80607eb982a5fdeb8b62","LICENSE":"853f87c96f3d249f200fec6db1114427bc8bdf4afddc93c576956d78152ce978","README.md":"581f43ca8c5faa60ff9ffdba3e31a8aca86b98b27cc0f325736ccff7e27689ac","src/lib.rs":"0ac2289408e0993c35d79720312596b9e44e81428b80884de4b35395ccf6f666","src/tests.rs":"261669b626a01f2a58d3697fea47ad1f994609c7651a740caf749038c7c5fdaf"},"package":"2060258edfcfe32ca7058849bf0f146cb5c59aadbedf480333c0d0002f97bc99"} \ No newline at end of file
diff --git a/vendor/icu_provider_macros/Cargo.toml b/vendor/icu_provider_macros/Cargo.toml
index fae6f93aa..870cb3ff3 100644
--- a/vendor/icu_provider_macros/Cargo.toml
+++ b/vendor/icu_provider_macros/Cargo.toml
@@ -11,10 +11,12 @@
[package]
edition = "2021"
+rust-version = "1.66"
name = "icu_provider_macros"
-version = "1.2.0"
+version = "1.3.2"
authors = ["The ICU4X Project Developers"]
include = [
+ "data/**/*",
"src/**/*",
"examples/**/*",
"benches/**/*",
@@ -24,9 +26,10 @@ include = [
"README.md",
]
description = "Proc macros for ICU data providers"
+homepage = "https://icu4x.unicode.org"
readme = "README.md"
categories = ["internationalization"]
-license = "Unicode-DFS-2016"
+license-file = "LICENSE"
repository = "https://github.com/unicode-org/icu4x"
[lib]
@@ -40,7 +43,10 @@ version = "1.0.27"
version = "1.0.9"
[dependencies.syn]
-version = "1.0.73"
-features = ["full"]
+version = "2"
+features = [
+ "full",
+ "parsing",
+]
[dev-dependencies]
diff --git a/vendor/icu_provider_macros/LICENSE b/vendor/icu_provider_macros/LICENSE
index 9858d01ab..9845aa5f4 100644
--- a/vendor/icu_provider_macros/LICENSE
+++ b/vendor/icu_provider_macros/LICENSE
@@ -1,49 +1,42 @@
-UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
-
-See Terms of Use <https://www.unicode.org/copyright.html>
-for definitions of Unicode Inc.’s Data Files and Software.
-
-NOTICE TO USER: Carefully read the following legal agreement.
-BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
-DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
-YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
-TERMS AND CONDITIONS OF THIS AGREEMENT.
-IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
-THE DATA FILES OR SOFTWARE.
+UNICODE LICENSE V3
COPYRIGHT AND PERMISSION NOTICE
-Copyright © 1991-2022 Unicode, Inc. All rights reserved.
-Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Unicode data files and any associated documentation
-(the "Data Files") or Unicode software and any associated documentation
-(the "Software") to deal in the Data Files or Software
-without restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, and/or sell copies of
-the Data Files or Software, and to permit persons to whom the Data Files
-or Software are furnished to do so, provided that either
-(a) this copyright and permission notice appear with all copies
-of the Data Files or Software, or
-(b) this copyright and permission notice appear in associated
-Documentation.
-
-THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
-NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
-DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THE DATA FILES OR SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale,
-use or other dealings in these Data Files or Software without prior
-written authorization of the copyright holder.
+Copyright © 2020-2023 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
—
diff --git a/vendor/icu_provider_macros/README.md b/vendor/icu_provider_macros/README.md
index c9ea9d21c..a76ac4abd 100644
--- a/vendor/icu_provider_macros/README.md
+++ b/vendor/icu_provider_macros/README.md
@@ -1,9 +1,13 @@
# icu_provider_macros [![crates.io](https://img.shields.io/crates/v/icu_provider_macros)](https://crates.io/crates/icu_provider_macros)
+<!-- cargo-rdme start -->
+
Proc macros for the ICU4X data provider.
These macros are re-exported from `icu_provider`.
+<!-- cargo-rdme end -->
+
## More Information
For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/icu_provider_macros/src/lib.rs b/vendor/icu_provider_macros/src/lib.rs
index fee0c8afa..1b0266242 100644
--- a/vendor/icu_provider_macros/src/lib.rs
+++ b/vendor/icu_provider_macros/src/lib.rs
@@ -24,20 +24,21 @@
extern crate proc_macro;
use proc_macro::TokenStream;
+use proc_macro2::Span;
use proc_macro2::TokenStream as TokenStream2;
use quote::quote;
+use syn::parenthesized;
+use syn::parse::{self, Parse, ParseStream};
use syn::parse_macro_input;
+use syn::punctuated::Punctuated;
use syn::spanned::Spanned;
-use syn::AttributeArgs;
use syn::DeriveInput;
-use syn::Lit;
-use syn::Meta;
-use syn::NestedMeta;
-
+use syn::{Ident, LitStr, Path, Token};
#[cfg(test)]
mod tests;
#[proc_macro_attribute]
+
/// The `#[data_struct]` attribute should be applied to all types intended
/// for use in a `DataStruct`.
///
@@ -50,6 +51,19 @@ mod tests;
/// by adding symbols with optional key strings:
///
/// ```
+/// # // We DO NOT want to pull in the `icu` crate as a dev-dependency,
+/// # // because that will rebuild the whole tree in proc macro mode
+/// # // when using cargo test --all-features --all-targets.
+/// # pub mod icu {
+/// # pub mod locid_transform {
+/// # pub mod fallback {
+/// # pub use icu_provider::_internal::{LocaleFallbackPriority, LocaleFallbackSupplement};
+/// # }
+/// # }
+/// # pub use icu_provider::_internal::locid;
+/// # }
+/// use icu::locid_transform::fallback::*;
+/// use icu::locid::extensions::unicode::key;
/// use icu_provider::prelude::*;
/// use std::borrow::Cow;
///
@@ -73,18 +87,18 @@ mod tests;
/// assert_eq!(&*BarV1Marker::KEY.path(), "demo/bar@1");
/// assert_eq!(
/// BarV1Marker::KEY.metadata().fallback_priority,
-/// icu_provider::FallbackPriority::Language
+/// LocaleFallbackPriority::Language
/// );
/// assert_eq!(BarV1Marker::KEY.metadata().extension_key, None);
///
/// assert_eq!(&*BazV1Marker::KEY.path(), "demo/baz@1");
/// assert_eq!(
/// BazV1Marker::KEY.metadata().fallback_priority,
-/// icu_provider::FallbackPriority::Region
+/// LocaleFallbackPriority::Region
/// );
/// assert_eq!(
/// BazV1Marker::KEY.metadata().extension_key,
-/// Some(icu::locid::extensions_unicode_key!("ca"))
+/// Some(key!("ca"))
/// );
/// ```
///
@@ -92,12 +106,182 @@ mod tests;
/// implement it on the markers.
pub fn data_struct(attr: TokenStream, item: TokenStream) -> TokenStream {
TokenStream::from(data_struct_impl(
- parse_macro_input!(attr as AttributeArgs),
+ parse_macro_input!(attr as DataStructArgs),
parse_macro_input!(item as DeriveInput),
))
}
-fn data_struct_impl(attr: AttributeArgs, input: DeriveInput) -> TokenStream2 {
+pub(crate) struct DataStructArgs {
+ args: Punctuated<DataStructArg, Token![,]>,
+}
+
+impl Parse for DataStructArgs {
+ fn parse(input: ParseStream<'_>) -> parse::Result<Self> {
+ let args = input.parse_terminated(DataStructArg::parse, Token![,])?;
+ Ok(Self { args })
+ }
+}
+struct DataStructArg {
+ marker_name: Path,
+ key_lit: Option<LitStr>,
+ fallback_by: Option<LitStr>,
+ extension_key: Option<LitStr>,
+ fallback_supplement: Option<LitStr>,
+ singleton: bool,
+}
+
+impl DataStructArg {
+ fn new(marker_name: Path) -> Self {
+ Self {
+ marker_name,
+ key_lit: None,
+ fallback_by: None,
+ extension_key: None,
+ fallback_supplement: None,
+ singleton: false,
+ }
+ }
+}
+
+impl Parse for DataStructArg {
+ fn parse(input: ParseStream<'_>) -> parse::Result<Self> {
+ let path: Path = input.parse()?;
+
+ fn at_most_one_option<T>(
+ o: &mut Option<T>,
+ new: T,
+ name: &str,
+ span: Span,
+ ) -> parse::Result<()> {
+ if o.replace(new).is_some() {
+ Err(parse::Error::new(
+ span,
+ format!("marker() cannot contain multiple {name}s"),
+ ))
+ } else {
+ Ok(())
+ }
+ }
+
+ if path.is_ident("marker") {
+ let content;
+ let paren = parenthesized!(content in input);
+ let mut marker_name: Option<Path> = None;
+ let mut key_lit: Option<LitStr> = None;
+ let mut fallback_by: Option<LitStr> = None;
+ let mut extension_key: Option<LitStr> = None;
+ let mut fallback_supplement: Option<LitStr> = None;
+ let mut singleton = false;
+ let punct = content.parse_terminated(DataStructMarkerArg::parse, Token![,])?;
+
+ for entry in punct {
+ match entry {
+ DataStructMarkerArg::Path(path) => {
+ at_most_one_option(&mut marker_name, path, "marker", input.span())?;
+ }
+ DataStructMarkerArg::NameValue(name, value) => {
+ if name == "fallback_by" {
+ at_most_one_option(
+ &mut fallback_by,
+ value,
+ "fallback_by",
+ paren.span.join(),
+ )?;
+ } else if name == "extension_key" {
+ at_most_one_option(
+ &mut extension_key,
+ value,
+ "extension_key",
+ paren.span.join(),
+ )?;
+ } else if name == "fallback_supplement" {
+ at_most_one_option(
+ &mut fallback_supplement,
+ value,
+ "fallback_supplement",
+ paren.span.join(),
+ )?;
+ } else {
+ return Err(parse::Error::new(
+ name.span(),
+ format!("unknown option {name} in marker()"),
+ ));
+ }
+ }
+ DataStructMarkerArg::Lit(lit) => {
+ at_most_one_option(&mut key_lit, lit, "literal key", input.span())?;
+ }
+ DataStructMarkerArg::Singleton => {
+ singleton = true;
+ }
+ }
+ }
+ let marker_name = if let Some(marker_name) = marker_name {
+ marker_name
+ } else {
+ return Err(parse::Error::new(
+ input.span(),
+ "marker() must contain a marker!",
+ ));
+ };
+
+ Ok(Self {
+ marker_name,
+ key_lit,
+ fallback_by,
+ extension_key,
+ fallback_supplement,
+ singleton,
+ })
+ } else {
+ let mut this = DataStructArg::new(path);
+ let lookahead = input.lookahead1();
+ if lookahead.peek(Token![=]) {
+ let _t: Token![=] = input.parse()?;
+ let lit: LitStr = input.parse()?;
+ this.key_lit = Some(lit);
+ Ok(this)
+ } else {
+ Ok(this)
+ }
+ }
+ }
+}
+
+/// A single argument to `marker()` in `#[data_struct(..., marker(...), ...)]
+enum DataStructMarkerArg {
+ Path(Path),
+ NameValue(Ident, LitStr),
+ Lit(LitStr),
+ Singleton,
+}
+impl Parse for DataStructMarkerArg {
+ fn parse(input: ParseStream<'_>) -> parse::Result<Self> {
+ let lookahead = input.lookahead1();
+ if lookahead.peek(LitStr) {
+ Ok(DataStructMarkerArg::Lit(input.parse()?))
+ } else {
+ let path: Path = input.parse()?;
+ let lookahead = input.lookahead1();
+ if lookahead.peek(Token![=]) {
+ let _tok: Token![=] = input.parse()?;
+ let ident = path.get_ident().ok_or_else(|| {
+ parse::Error::new(path.span(), "Expected identifier before `=`, found path")
+ })?;
+ Ok(DataStructMarkerArg::NameValue(
+ ident.clone(),
+ input.parse()?,
+ ))
+ } else if path.is_ident("singleton") {
+ Ok(DataStructMarkerArg::Singleton)
+ } else {
+ Ok(DataStructMarkerArg::Path(path))
+ }
+ }
+ }
+}
+
+fn data_struct_impl(attr: DataStructArgs, input: DeriveInput) -> TokenStream2 {
if input.generics.type_params().count() > 0 {
return syn::Error::new(
input.generics.span(),
@@ -126,7 +310,7 @@ fn data_struct_impl(attr: AttributeArgs, input: DeriveInput) -> TokenStream2 {
let bake_derive = input
.attrs
.iter()
- .find(|a| a.path.is_ident("databake"))
+ .find(|a| a.path().is_ident("databake"))
.map(|a| {
quote! {
#[derive(databake::Bake)]
@@ -137,74 +321,23 @@ fn data_struct_impl(attr: AttributeArgs, input: DeriveInput) -> TokenStream2 {
let mut result = TokenStream2::new();
- for single_attr in attr.into_iter() {
- let mut marker_name: Option<syn::Path> = None;
- let mut key_lit: Option<syn::LitStr> = None;
- let mut fallback_by: Option<syn::LitStr> = None;
- let mut extension_key: Option<syn::LitStr> = None;
- let mut fallback_supplement: Option<syn::LitStr> = None;
-
- match single_attr {
- NestedMeta::Meta(Meta::List(meta_list)) => {
- match meta_list.path.get_ident() {
- Some(ident) if ident.to_string().as_str() == "marker" => (),
- _ => panic!("Meta list must be `marker(...)`"),
- }
- for inner_meta in meta_list.nested.into_iter() {
- match inner_meta {
- NestedMeta::Meta(Meta::Path(path)) => {
- marker_name = Some(path);
- }
- NestedMeta::Lit(Lit::Str(lit_str)) => {
- key_lit = Some(lit_str);
- }
- NestedMeta::Meta(Meta::NameValue(name_value)) => {
- let lit_str = match name_value.lit {
- Lit::Str(lit_str) => lit_str,
- _ => panic!("Values in marker() must be strings"),
- };
- let name_ident_str = match name_value.path.get_ident() {
- Some(ident) => ident.to_string(),
- None => panic!("Names in marker() must be identifiers"),
- };
- match name_ident_str.as_str() {
- "fallback_by" => fallback_by = Some(lit_str),
- "extension_key" => extension_key = Some(lit_str),
- "fallback_supplement" => fallback_supplement = Some(lit_str),
- _ => panic!("Invalid argument name in marker()"),
- }
- }
- _ => panic!("Invalid argument in marker()"),
- }
- }
- }
- NestedMeta::Meta(Meta::NameValue(name_value)) => {
- marker_name = Some(name_value.path);
- match name_value.lit {
- syn::Lit::Str(lit_str) => key_lit = Some(lit_str),
- _ => panic!("Key must be a string"),
- };
- }
- NestedMeta::Meta(Meta::Path(path)) => {
- marker_name = Some(path);
- }
- _ => {
- panic!("Invalid attribute to #[data_struct]")
- }
- }
-
- let marker_name = match marker_name {
- Some(path) => path,
- None => panic!("#[data_struct] arguments must include a marker name"),
- };
+ for single_attr in attr.args {
+ let DataStructArg {
+ marker_name,
+ key_lit,
+ fallback_by,
+ extension_key,
+ fallback_supplement,
+ singleton,
+ } = single_attr;
- let docs = if let Some(key_lit) = &key_lit {
- let fallback_by_docs_str = match &fallback_by {
- Some(fallback_by) => fallback_by.value(),
+ let docs = if let Some(ref key_lit) = key_lit {
+ let fallback_by_docs_str = match fallback_by {
+ Some(ref fallback_by) => fallback_by.value(),
None => "language (default)".to_string(),
};
- let extension_key_docs_str = match &extension_key {
- Some(extension_key) => extension_key.value(),
+ let extension_key_docs_str = match extension_key {
+ Some(ref extension_key) => extension_key.value(),
None => "none (default)".to_string(),
};
format!("Marker type for [`{}`]: \"{}\"\n\n- Fallback priority: {}\n- Extension keyword: {}", name, key_lit.value(), fallback_by_docs_str, extension_key_docs_str)
@@ -221,38 +354,48 @@ fn data_struct_impl(attr: AttributeArgs, input: DeriveInput) -> TokenStream2 {
}
));
- if let Some(key_lit) = &key_lit {
+ if let Some(key_lit) = key_lit {
let key_str = key_lit.value();
let fallback_by_expr = if let Some(fallback_by_lit) = fallback_by {
match fallback_by_lit.value().as_str() {
- "region" => quote! {icu_provider::FallbackPriority::Region},
- "collation" => quote! {icu_provider::FallbackPriority::Collation},
- "language" => quote! {icu_provider::FallbackPriority::Language},
+ "region" => {
+ quote! {icu_provider::_internal::LocaleFallbackPriority::Region}
+ }
+ "collation" => {
+ quote! {icu_provider::_internal::LocaleFallbackPriority::Collation}
+ }
+ "language" => {
+ quote! {icu_provider::_internal::LocaleFallbackPriority::Language}
+ }
_ => panic!("Invalid value for fallback_by"),
}
} else {
- quote! {icu_provider::FallbackPriority::const_default()}
+ quote! {icu_provider::_internal::LocaleFallbackPriority::const_default()}
};
let extension_key_expr = if let Some(extension_key_lit) = extension_key {
- quote! {Some(icu_provider::_internal::extensions_unicode_key!(#extension_key_lit))}
+ quote! {Some(icu_provider::_internal::locid::extensions::unicode::key!(#extension_key_lit))}
} else {
quote! {None}
};
- let fallback_supplement_expr =
- if let Some(fallback_supplement_lit) = fallback_supplement {
- match fallback_supplement_lit.value().as_str() {
- "collation" => quote! {Some(icu_provider::FallbackSupplement::Collation)},
- _ => panic!("Invalid value for fallback_supplement"),
+ let fallback_supplement_expr = if let Some(fallback_supplement_lit) =
+ fallback_supplement
+ {
+ match fallback_supplement_lit.value().as_str() {
+ "collation" => {
+ quote! {Some(icu_provider::_internal::LocaleFallbackSupplement::Collation)}
}
- } else {
- quote! {None}
- };
+ _ => panic!("Invalid value for fallback_supplement"),
+ }
+ } else {
+ quote! {None}
+ };
result.extend(quote!(
impl icu_provider::KeyedDataMarker for #marker_name {
const KEY: icu_provider::DataKey = icu_provider::data_key!(#key_str, icu_provider::DataKeyMetadata::construct_internal(
#fallback_by_expr,
#extension_key_expr,
- #fallback_supplement_expr
+ #fallback_supplement_expr,
+ #singleton,
));
}
));
diff --git a/vendor/icu_provider_macros/src/tests.rs b/vendor/icu_provider_macros/src/tests.rs
index 32be158c7..908cf6e33 100644
--- a/vendor/icu_provider_macros/src/tests.rs
+++ b/vendor/icu_provider_macros/src/tests.rs
@@ -5,16 +5,9 @@
use crate::data_struct_impl;
use proc_macro2::TokenStream as TokenStream2;
use quote::quote;
-use syn::{DeriveInput, NestedMeta};
-fn check(attr: Vec<TokenStream2>, item: TokenStream2, expected: TokenStream2) {
- let actual = data_struct_impl(
- attr.into_iter()
- .map(syn::parse2)
- .collect::<syn::parse::Result<Vec<NestedMeta>>>()
- .unwrap(),
- syn::parse2::<DeriveInput>(item).unwrap(),
- );
+fn check(attr: TokenStream2, item: TokenStream2, expected: TokenStream2) {
+ let actual = data_struct_impl(syn::parse2(attr).unwrap(), syn::parse2(item).unwrap());
assert_eq!(expected.to_string(), actual.to_string());
}
@@ -23,7 +16,7 @@ fn check(attr: Vec<TokenStream2>, item: TokenStream2, expected: TokenStream2) {
fn test_basic() {
// #[data_struct]
check(
- vec![],
+ quote!(),
quote!(
pub struct FooV1;
),
@@ -38,7 +31,7 @@ fn test_basic() {
fn test_data_marker() {
// #[data_struct(FooV1Marker)]
check(
- vec![quote!(FooV1Marker)],
+ quote!(FooV1Marker),
quote!(
pub struct FooV1;
),
@@ -58,7 +51,7 @@ fn test_data_marker() {
fn test_keyed_data_marker() {
// #[data_struct(BarV1Marker = "demo/bar@1")]
check(
- vec![quote!(BarV1Marker = "demo/bar@1")],
+ quote!(BarV1Marker = "demo/bar@1"),
quote!(
pub struct FooV1;
),
@@ -72,9 +65,10 @@ fn test_keyed_data_marker() {
const KEY: icu_provider::DataKey = icu_provider::data_key!(
"demo/bar@1",
icu_provider::DataKeyMetadata::construct_internal(
- icu_provider::FallbackPriority::const_default(),
+ icu_provider::_internal::LocaleFallbackPriority::const_default(),
+ None,
None,
- None
+ false,
));
}
#[derive(icu_provider::prelude::yoke::Yokeable, icu_provider::prelude::zerofrom::ZeroFrom)]
@@ -87,10 +81,10 @@ fn test_keyed_data_marker() {
fn test_multi_named_keyed_data_marker() {
// #[data_struct(FooV1Marker, BarV1Marker = "demo/bar@1", BazV1Marker = "demo/baz@1")]
check(
- vec![
- quote!(FooV1Marker),
- quote!(BarV1Marker = "demo/bar@1"),
- quote!(BazV1Marker = "demo/baz@1"),
+ quote![
+ FooV1Marker,
+ BarV1Marker = "demo/bar@1",
+ BazV1Marker = "demo/baz@1",
],
quote!(
pub struct FooV1<'data>;
@@ -110,9 +104,10 @@ fn test_multi_named_keyed_data_marker() {
const KEY: icu_provider::DataKey = icu_provider::data_key!(
"demo/bar@1",
icu_provider::DataKeyMetadata::construct_internal(
- icu_provider::FallbackPriority::const_default(),
+ icu_provider::_internal::LocaleFallbackPriority::const_default(),
+ None,
None,
- None
+ false,
));
}
#[doc = "Marker type for [`FooV1`]: \"demo/baz@1\"\n\n- Fallback priority: language (default)\n- Extension keyword: none (default)"]
@@ -124,9 +119,10 @@ fn test_multi_named_keyed_data_marker() {
const KEY: icu_provider::DataKey = icu_provider::data_key!(
"demo/baz@1",
icu_provider::DataKeyMetadata::construct_internal(
- icu_provider::FallbackPriority::const_default(),
+ icu_provider::_internal::LocaleFallbackPriority::const_default(),
None,
- None
+ None,
+ false,
));
}
#[derive(icu_provider::prelude::yoke::Yokeable, icu_provider::prelude::zerofrom::ZeroFrom)]
@@ -138,7 +134,7 @@ fn test_multi_named_keyed_data_marker() {
#[test]
fn test_databake() {
check(
- vec![quote!(BarV1Marker = "demo/bar@1")],
+ quote!(BarV1Marker = "demo/bar@1"),
quote!(
#[databake(path = test::path)]
pub struct FooV1;
@@ -155,9 +151,10 @@ fn test_databake() {
const KEY: icu_provider::DataKey = icu_provider::data_key!(
"demo/bar@1",
icu_provider::DataKeyMetadata::construct_internal(
- icu_provider::FallbackPriority::const_default(),
+ icu_provider::_internal::LocaleFallbackPriority::const_default(),
+ None,
None,
- None
+ false,
));
}
#[derive(icu_provider::prelude::yoke::Yokeable, icu_provider::prelude::zerofrom::ZeroFrom)]
@@ -171,15 +168,16 @@ fn test_databake() {
fn test_attributes() {
// #[data_struct(FooV1Marker, marker(BarV1Marker, "demo/bar@1", fallback_by = "region", extension_kw = "ca"))]
check(
- vec![
- quote!(FooV1Marker),
- quote!(marker(
+ quote![
+ FooV1Marker,
+ marker(
BarV1Marker,
"demo/bar@1",
fallback_by = "region",
extension_key = "ca",
- fallback_supplement = "collation"
- )),
+ fallback_supplement = "collation",
+ singleton,
+ ),
],
quote!(
pub struct FooV1<'data>;
@@ -199,9 +197,10 @@ fn test_attributes() {
const KEY: icu_provider::DataKey = icu_provider::data_key!(
"demo/bar@1",
icu_provider::DataKeyMetadata::construct_internal(
- icu_provider::FallbackPriority::Region,
- Some(icu_provider::_internal::extensions_unicode_key!("ca")),
- Some(icu_provider::FallbackSupplement::Collation)
+ icu_provider::_internal::LocaleFallbackPriority::Region,
+ Some(icu_provider::_internal::locid::extensions::unicode::key!("ca")),
+ Some(icu_provider::_internal::LocaleFallbackSupplement::Collation),
+ true,
));
}
#[derive(icu_provider::prelude::yoke::Yokeable, icu_provider::prelude::zerofrom::ZeroFrom)]
diff --git a/vendor/io-lifetimes/.cargo-checksum.json b/vendor/io-lifetimes/.cargo-checksum.json
deleted file mode 100644
index 9fc1b74ff..000000000
--- a/vendor/io-lifetimes/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"CODE_OF_CONDUCT.md":"e0bd80144c93b032dadb144d7cf8663c55d697ba2dd60382715c981dfc60e421","COPYRIGHT":"495c30b45120f8af07cfa26eb9cb1ebfe8324560dca2b3b1e76cad1b9b6b489a","Cargo.toml":"1f84b8c1b7b42968671bcdbba31196831a95035cc95c3e5c73a65d3dc89fcc96","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-Apache-2.0_WITH_LLVM-exception":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","ORG_CODE_OF_CONDUCT.md":"a62b69bf86e605ee1bcbb2f0a12ba79e4cebb6983a7b6491949750aecc4f2178","README.md":"c6fd1e6acd03d78ca69275d3fb7fe27b7148ff62e11e617eec25e3a886caf082","build.rs":"58379e213e1758e25de92a04a1a6b3feb283321c3652e2271fc688879320147c","src/example_ffi.rs":"c9db4344e2d4b01a7310b05174c88e1933e367037c862fc192a4ee5d9166ae7e","src/impls_async_std.rs":"62f73e42a2e76a9287f72f1c3db322114d4a08a2d8e2715c04156df60df1f876","src/impls_fs_err.rs":"12333298a291377a8c24835c60dfa3338e413e6435576cede04ce780da84ebe6","src/impls_mio.rs":"32ba71c1912d7dedcb110cb91dd953bab05a039d576c55a7508fcdad1bebbc2b","src/impls_os_pipe.rs":"5075498711f2dfdd6795d3afdb81bd3aca26c033d2f8f7238de59016d3ead0a9","src/impls_socket2.rs":"deacb4dd2c1e19ef483c937b6a18034397d729c3df361de5e748d70f5457f48b","src/impls_std.rs":"d11c66589a19b431062c316eaa77e1648e73aacd4ffabf9f575e5ccd2dec4083","src/impls_tokio.rs":"4f5f3dbdfa9395cd7e5149658cbd3872fa6c3973e1c844b7f6b48ee2e39e9197","src/lib.rs":"ca2d5187b1c25c21c18dc2e81988d6b7fda54d60a431802c2e53caef62d0814d","src/portability.rs":"d01be95b82bd36e09cf196a7c5f596a3d64c947aca34224efff164c87f358bcf","src/raw.rs":"16ff59fcc9ed2e08df56de40e25337bfe929bf77ec69ff4742902f39af8cc968","src/traits.rs":"e4856985681aad7bdd9c3cbb84a20c7233e1daa242220a82ee10514474fa05c7","src/types.rs":"88eb942b05bcaa7858e8949763031ba69fca5fad01aee4ea43fafa4448ce0654","src/views.rs":"a13342880bed2af759829ba4a5cf2502ef781612138c447820eb36da9450a843"},"package":"09270fd4fa1111bc614ed2246c7ef56239a3063d5be0d1ec3b589c505d400aeb"} \ No newline at end of file
diff --git a/vendor/io-lifetimes/CODE_OF_CONDUCT.md b/vendor/io-lifetimes/CODE_OF_CONDUCT.md
deleted file mode 100644
index b09d258a9..000000000
--- a/vendor/io-lifetimes/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,49 +0,0 @@
-# Contributor Covenant Code of Conduct
-
-*Note*: this Code of Conduct pertains to individuals' behavior. Please also see the [Organizational Code of Conduct][OCoC].
-
-## Our Pledge
-
-In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
-
-## Our Standards
-
-Examples of behavior that contributes to creating a positive environment include:
-
-* Using welcoming and inclusive language
-* Being respectful of differing viewpoints and experiences
-* Gracefully accepting constructive criticism
-* Focusing on what is best for the community
-* Showing empathy towards other community members
-
-Examples of unacceptable behavior by participants include:
-
-* The use of sexualized language or imagery and unwelcome sexual attention or advances
-* Trolling, insulting/derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or electronic address, without explicit permission
-* Other conduct which could reasonably be considered inappropriate in a professional setting
-
-## Our Responsibilities
-
-Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
-
-Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
-
-## Scope
-
-This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
-
-## Enforcement
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the Bytecode Alliance CoC team at [report@bytecodealliance.org](mailto:report@bytecodealliance.org). The CoC team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The CoC team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
-
-Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the Bytecode Alliance's leadership.
-
-## Attribution
-
-This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
-
-[OCoC]: https://github.com/sunfishcode/io-lifetimes/blob/main/ORG_CODE_OF_CONDUCT.md
-[homepage]: https://www.contributor-covenant.org
-[version]: https://www.contributor-covenant.org/version/1/4/
diff --git a/vendor/io-lifetimes/COPYRIGHT b/vendor/io-lifetimes/COPYRIGHT
deleted file mode 100644
index d8073bdad..000000000
--- a/vendor/io-lifetimes/COPYRIGHT
+++ /dev/null
@@ -1,29 +0,0 @@
-Short version for non-lawyers:
-
-`io-lifetimes` is triple-licensed under Apache 2.0 with the LLVM Exception,
-Apache 2.0, and MIT terms.
-
-
-Longer version:
-
-Copyrights in the `io-lifetimes` project are retained by their contributors.
-No copyright assignment is required to contribute to the `io-lifetimes`
-project.
-
-Some files include code derived from Rust's `libstd`; see the comments in
-the code for details.
-
-Except as otherwise noted (below and/or in individual files), `io-lifetimes`
-is licensed under:
-
- - the Apache License, Version 2.0, with the LLVM Exception
- <LICENSE-Apache-2.0_WITH_LLVM-exception> or
- <http://llvm.org/foundation/relicensing/LICENSE.txt>
- - the Apache License, Version 2.0
- <LICENSE-APACHE> or
- <http://www.apache.org/licenses/LICENSE-2.0>,
- - or the MIT license
- <LICENSE-MIT> or
- <http://opensource.org/licenses/MIT>,
-
-at your option.
diff --git a/vendor/io-lifetimes/Cargo.toml b/vendor/io-lifetimes/Cargo.toml
deleted file mode 100644
index 6d12b401b..000000000
--- a/vendor/io-lifetimes/Cargo.toml
+++ /dev/null
@@ -1,99 +0,0 @@
-# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
-#
-# When uploading crates to the registry Cargo will automatically
-# "normalize" Cargo.toml files for maximal compatibility
-# with all versions of Cargo and also rewrite `path` dependencies
-# to registry (e.g., crates.io) dependencies.
-#
-# If you are reading this file be aware that the original Cargo.toml
-# will likely look very different (and much more reasonable).
-# See Cargo.toml.orig for the original contents.
-
-[package]
-edition = "2018"
-name = "io-lifetimes"
-version = "1.0.9"
-authors = ["Dan Gohman <dev@sunfishcode.online>"]
-include = [
- "src",
- "build.rs",
- "Cargo.toml",
- "COPYRIGHT",
- "LICENSE*",
- "/*.md",
-]
-description = "A low-level I/O ownership and borrowing library"
-readme = "README.md"
-keywords = [
- "api",
- "io",
-]
-categories = [
- "os",
- "rust-patterns",
-]
-license = "Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT"
-repository = "https://github.com/sunfishcode/io-lifetimes"
-
-[dependencies.fs-err]
-version = "2.6.0"
-optional = true
-
-[features]
-close = [
- "libc",
- "hermit-abi",
- "windows-sys",
-]
-default = ["close"]
-
-[target."cfg(not(target_os = \"wasi\"))".dependencies.async-std]
-version = "1.12.0"
-optional = true
-
-[target."cfg(not(target_os = \"wasi\"))".dependencies.mio]
-version = "0.8.0"
-features = [
- "net",
- "os-ext",
-]
-optional = true
-
-[target."cfg(not(target_os = \"wasi\"))".dependencies.os_pipe]
-version = "1.0.0"
-features = ["io_safety"]
-optional = true
-
-[target."cfg(not(target_os = \"wasi\"))".dependencies.socket2]
-version = "0.4.0"
-optional = true
-
-[target."cfg(not(target_os = \"wasi\"))".dependencies.tokio]
-version = "1.6.0"
-features = [
- "io-std",
- "fs",
- "net",
- "process",
-]
-optional = true
-
-[target."cfg(not(windows))".dependencies.libc]
-version = "0.2.96"
-optional = true
-
-[target."cfg(target_os = \"hermit\")".dependencies.hermit-abi]
-version = "0.3"
-optional = true
-
-[target."cfg(windows)".dependencies.windows-sys]
-version = "0.45.0"
-features = [
- "Win32_Foundation",
- "Win32_Storage_FileSystem",
- "Win32_Networking_WinSock",
- "Win32_Security",
- "Win32_System_IO",
- "Win32_System_Threading",
-]
-optional = true
diff --git a/vendor/io-lifetimes/LICENSE-Apache-2.0_WITH_LLVM-exception b/vendor/io-lifetimes/LICENSE-Apache-2.0_WITH_LLVM-exception
deleted file mode 100644
index f9d81955f..000000000
--- a/vendor/io-lifetimes/LICENSE-Apache-2.0_WITH_LLVM-exception
+++ /dev/null
@@ -1,220 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-
---- LLVM Exceptions to the Apache 2.0 License ----
-
-As an exception, if, as a result of your compiling your source code, portions
-of this Software are embedded into an Object form of such source code, you
-may redistribute such embedded portions in such Object form without complying
-with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
-
-In addition, if you combine or link compiled forms of this Software with
-software that is licensed under the GPLv2 ("Combined Software") and if a
-court of competent jurisdiction determines that the patent provision (Section
-3), the indemnity provision (Section 9) or other Section of the License
-conflicts with the conditions of the GPLv2, you may retroactively and
-prospectively choose to deem waived or otherwise exclude such Section(s) of
-the License, but only in their entirety and only with respect to the Combined
-Software.
-
diff --git a/vendor/io-lifetimes/ORG_CODE_OF_CONDUCT.md b/vendor/io-lifetimes/ORG_CODE_OF_CONDUCT.md
deleted file mode 100644
index 6f4fb3f53..000000000
--- a/vendor/io-lifetimes/ORG_CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,143 +0,0 @@
-# Bytecode Alliance Organizational Code of Conduct (OCoC)
-
-*Note*: this Code of Conduct pertains to organizations' behavior. Please also see the [Individual Code of Conduct](CODE_OF_CONDUCT.md).
-
-## Preamble
-
-The Bytecode Alliance (BA) welcomes involvement from organizations,
-including commercial organizations. This document is an
-*organizational* code of conduct, intended particularly to provide
-guidance to commercial organizations. It is distinct from the
-[Individual Code of Conduct (ICoC)](CODE_OF_CONDUCT.md), and does not
-replace the ICoC. This OCoC applies to any group of people acting in
-concert as a BA member or as a participant in BA activities, whether
-or not that group is formally incorporated in some jurisdiction.
-
-The code of conduct described below is not a set of rigid rules, and
-we did not write it to encompass every conceivable scenario that might
-arise. For example, it is theoretically possible there would be times
-when asserting patents is in the best interest of the BA community as
-a whole. In such instances, consult with the BA, strive for
-consensus, and interpret these rules with an intent that is generous
-to the community the BA serves.
-
-While we may revise these guidelines from time to time based on
-real-world experience, overall they are based on a simple principle:
-
-*Bytecode Alliance members should observe the distinction between
- public community functions and private functions — especially
- commercial ones — and should ensure that the latter support, or at
- least do not harm, the former.*
-
-## Guidelines
-
- * **Do not cause confusion about Wasm standards or interoperability.**
-
- Having an interoperable WebAssembly core is a high priority for
- the BA, and members should strive to preserve that core. It is fine
- to develop additional non-standard features or APIs, but they
- should always be clearly distinguished from the core interoperable
- Wasm.
-
- Treat the WebAssembly name and any BA-associated names with
- respect, and follow BA trademark and branding guidelines. If you
- distribute a customized version of software originally produced by
- the BA, or if you build a product or service using BA-derived
- software, use names that clearly distinguish your work from the
- original. (You should still provide proper attribution to the
- original, of course, wherever such attribution would normally be
- given.)
-
- Further, do not use the WebAssembly name or BA-associated names in
- other public namespaces in ways that could cause confusion, e.g.,
- in company names, names of commercial service offerings, domain
- names, publicly-visible social media accounts or online service
- accounts, etc. It may sometimes be reasonable, however, to
- register such a name in a new namespace and then immediately donate
- control of that account to the BA, because that would help the project
- maintain its identity.
-
- For further guidance, see the BA Trademark and Branding Policy
- [TODO: create policy, then insert link].
-
- * **Do not restrict contributors.** If your company requires
- employees or contractors to sign non-compete agreements, those
- agreements must not prevent people from participating in the BA or
- contributing to related projects.
-
- This does not mean that all non-compete agreements are incompatible
- with this code of conduct. For example, a company may restrict an
- employee's ability to solicit the company's customers. However, an
- agreement must not block any form of technical or social
- participation in BA activities, including but not limited to the
- implementation of particular features.
-
- The accumulation of experience and expertise in individual persons,
- who are ultimately free to direct their energy and attention as
- they decide, is one of the most important drivers of progress in
- open source projects. A company that limits this freedom may hinder
- the success of the BA's efforts.
-
- * **Do not use patents as offensive weapons.** If any BA participant
- prevents the adoption or development of BA technologies by
- asserting its patents, that undermines the purpose of the
- coalition. The collaboration fostered by the BA cannot include
- members who act to undermine its work.
-
- * **Practice responsible disclosure** for security vulnerabilities.
- Use designated, non-public reporting channels to disclose technical
- vulnerabilities, and give the project a reasonable period to
- respond, remediate, and patch. [TODO: optionally include the
- security vulnerability reporting URL here.]
-
- Vulnerability reporters may patch their company's own offerings, as
- long as that patching does not significantly delay the reporting of
- the vulnerability. Vulnerability information should never be used
- for unilateral commercial advantage. Vendors may legitimately
- compete on the speed and reliability with which they deploy
- security fixes, but withholding vulnerability information damages
- everyone in the long run by risking harm to the BA project's
- reputation and to the security of all users.
-
- * **Respect the letter and spirit of open source practice.** While
- there is not space to list here all possible aspects of standard
- open source practice, some examples will help show what we mean:
-
- * Abide by all applicable open source license terms. Do not engage
- in copyright violation or misattribution of any kind.
-
- * Do not claim others' ideas or designs as your own.
-
- * When others engage in publicly visible work (e.g., an upcoming
- demo that is coordinated in a public issue tracker), do not
- unilaterally announce early releases or early demonstrations of
- that work ahead of their schedule in order to secure private
- advantage (such as marketplace advantage) for yourself.
-
- The BA reserves the right to determine what constitutes good open
- source practices and to take action as it deems appropriate to
- encourage, and if necessary enforce, such practices.
-
-## Enforcement
-
-Instances of organizational behavior in violation of the OCoC may
-be reported by contacting the Bytecode Alliance CoC team at
-[report@bytecodealliance.org](mailto:report@bytecodealliance.org). The
-CoC team will review and investigate all complaints, and will respond
-in a way that it deems appropriate to the circumstances. The CoC team
-is obligated to maintain confidentiality with regard to the reporter of
-an incident. Further details of specific enforcement policies may be
-posted separately.
-
-When the BA deems an organization in violation of this OCoC, the BA
-will, at its sole discretion, determine what action to take. The BA
-will decide what type, degree, and duration of corrective action is
-needed, if any, before a violating organization can be considered for
-membership (if it was not already a member) or can have its membership
-reinstated (if it was a member and the BA canceled its membership due
-to the violation).
-
-In practice, the BA's first approach will be to start a conversation,
-with punitive enforcement used only as a last resort. Violations
-often turn out to be unintentional and swiftly correctable with all
-parties acting in good faith.
diff --git a/vendor/io-lifetimes/README.md b/vendor/io-lifetimes/README.md
deleted file mode 100644
index 589612112..000000000
--- a/vendor/io-lifetimes/README.md
+++ /dev/null
@@ -1,179 +0,0 @@
-<div align="center">
- <h1><code>io-lifetimes</code></h1>
-
- <p>
- <strong>A low-level I/O ownership and borrowing library</strong>
- </p>
-
- <p>
- <a href="https://github.com/sunfishcode/io-lifetimes/actions?query=workflow%3ACI"><img src="https://github.com/sunfishcode/io-lifetimes/workflows/CI/badge.svg" alt="Github Actions CI Status" /></a>
- <a href="https://crates.io/crates/io-lifetimes"><img src="https://img.shields.io/crates/v/io-lifetimes.svg" alt="crates.io page" /></a>
- <a href="https://docs.rs/io-lifetimes"><img src="https://docs.rs/io-lifetimes/badge.svg" alt="docs.rs docs" /></a>
- </p>
-</div>
-
-This library introduces `OwnedFd`, `BorrowedFd`, and supporting types and
-traits, and corresponding features for Windows, which implement safe owning
-and borrowing I/O lifetime patterns.
-
-This is associated with [RFC 3128], the I/O Safety RFC, which is now merged.
-Work is now underway to move the `OwnedFd` and `BorrowedFd` types and `AsFd`
-trait developed here into `std`.
-
-For a quick taste, check out the code examples:
-
- - [hello], a basic demo of this API, doing low-level I/O manually, using the
- [provided example FFI bindings]
- - [easy-conversions], demonstrating the `from_into` convenience feature for
- converting from an `impl Into*` into an `impl From*`.
- - [portable-views], demonstrating the convenience feature which allows one
- to temporarily "view" a file descriptor as any owning type such as `File`
- - [flexible-apis], demonstrating how to write library APIs that accept
- untyped I/O resources.
- - [owning-wrapper], demonstrating how to implement a type which wraps an
- `Owned*` type.
-
-[hello]: https://github.com/sunfishcode/io-lifetimes/blob/main/examples/hello.rs
-[easy-conversions]: https://github.com/sunfishcode/io-lifetimes/blob/main/examples/easy-conversions.rs
-[portable-views]: https://github.com/sunfishcode/io-lifetimes/blob/main/examples/portable-views.rs
-[flexible-apis]: https://github.com/sunfishcode/io-lifetimes/blob/main/examples/flexible-apis.rs
-[owning-wrapper]: https://github.com/sunfishcode/io-lifetimes/blob/main/examples/owning-wrapper.rs
-[provided example FFI bindings]: https://github.com/sunfishcode/io-lifetimes/blob/main/src/example_ffi.rs
-
-The core of the API is very simple, and consists of two main types and three
-main traits:
-
-```rust
-pub struct BorrowedFd<'fd> { ... }
-pub struct OwnedFd { ... }
-
-pub trait AsFd { ... }
-pub trait IntoFd { ... }
-pub trait FromFd { ... }
-
-impl AsRawFd for BorrowedFd<'_> { ... }
-impl AsRawFd for OwnedFd { ... }
-impl IntoRawFd for OwnedFd { ... }
-impl FromRawFd for OwnedFd { ... }
-
-impl Drop for OwnedFd { ... }
-
-impl AsFd for BorrowedFd<'_> { ... }
-impl AsFd for OwnedFd { ... }
-impl IntoFd for OwnedFd { ... }
-impl FromFd for OwnedFd { ... }
-```
-
-On Windows, there are `Handle` and `Socket` versions of every `Fd` thing, and
-a special `HandleOrInvalid` type to cope with inconsistent error reporting
-in the Windows API.
-
-## The magic of transparency
-
-Here's the fun part. `BorrowedFd` and `OwnedFd` are `repr(transparent)` and
-hold `RawFd` values, and `Option<BorrowedFd>` and `Option<OwnedFd>` are
-FFI-safe (on Rust >= 1.63), so they can all be used in FFI [directly]:
-
-[directly]: https://github.com/sunfishcode/io-lifetimes/blob/main/src/example_ffi.rs
-
-```rust
-extern "C" {
- pub fn open(pathname: *const c_char, flags: c_int, ...) -> Option<OwnedFd>;
- pub fn read(fd: BorrowedFd<'_>, ptr: *mut c_void, size: size_t) -> ssize_t;
- pub fn write(fd: BorrowedFd<'_>, ptr: *const c_void, size: size_t) -> ssize_t;
- pub fn close(fd: OwnedFd) -> c_int;
-}
-```
-
-With bindings like this, users never have to touch `RawFd` values. Of course,
-not all code will do this, but it is a fun feature for code that can. This
-is what motivates having `BorrowedFd` instead of just using `&OwnedFd`.
-
-Note the use of `Option<OwnedFd>` as the return value of `open`, representing
-the fact that it can either succeed or fail.
-
-## I/O Safety in Rust
-
-I/O Safety feature is stablized in Rust 1.63. With this version or later,
-io-lifetimes will use and re-export the standard-library types and traits. With
-older versions, io-lifetimes defines its own copy of these types and traits.
-
-io-lifetimes also includes several features which are not (yet?) in std,
-including the portability traits `AsFilelike`/`AsSocketlike`/etc., the
-`from_into_*` functions in the `From*` traits, and [views].
-
-[views]: https://docs.rs/io-lifetimes/*/io_lifetimes/views/index.html
-
-## Prior Art
-
-There are several similar crates: [fd](https://crates.io/crates/fd),
-[filedesc](https://crates.io/crates/filedesc),
-[filedescriptor](https://crates.io/crates/filedescriptor),
-[owned-fd](https://crates.io/crates/owned-fd), and
-[unsafe-io](https://crates.io/crates/unsafe-io).
-
-Some of these provide additional features such as the ability to create pipes
-or sockets, to get and set flags, and to do read and write operations.
-io-lifetimes omits these features, leaving them to to be provided as separate
-layers on top.
-
-Most of these crates provide ways to duplicate a file descriptor. io-lifetimes
-currently treats this as another feature that can be provided by a layer on
-top, though if there are use cases where this is a common operation, it could
-be added.
-
-io-lifetimes's distinguishing features are its use of `repr(transparent)`
-to support direct FFI usage, niche optimizations so `Option` can support direct
-FFI usafe as well (on Rust >= 1.63), lifetime-aware `As*`/`Into*`/`From*`
-traits which leverage Rust's lifetime system and allow safe and checked
-`from_*` and `as_*`/`into_*` functions, and powerful convenience features
-enabled by its underlying safety.
-
-io-lifetimes also has full Windows support, as well as Unix/Windows
-portability abstractions, covering both file-like and socket-like types.
-
-io-lifetimes's [`OwnedFd`] type is similar to
-[fd](https://crates.io/crates/fd)'s
-[`FileDesc`](https://docs.rs/fd/0.2.3/fd/struct.FileDesc.html). io-lifetimes
-doesn't have a `close_on_drop` parameter, and instead uses [`OwnedFd`] and
-[`BorrowedFd`] to represent dropping and non-dropping handles, respectively, in
-a way that is checked at compile time rather than runtime.
-
-io-lifetimes's [`OwnedFd`] type is also similar to
-[filedesc](https://crates.io/crates/filedesc)'s
-[`FileDesc`](https://docs.rs/filedesc/0.3.0/filedesc/struct.FileDesc.html)
-io-lifetimes's `OwnedFd` reserves the value -1, so it doesn't need to test for
-`-1` in its `Drop`, and `Option<OwnedFd>` (on Rust >= 1.63) is the same size
-as `FileDesc`.
-
-io-lifetimes's [`OwnedFd`] type is also similar to
-[owned-fd](https://crates.io/crates/owned-fd)'s
-[`OwnedFd`](https://docs.rs/owned-fd/0.1.0/owned_fd/struct.OwnedFd.html).
-io-lifetimes doesn't implement `Clone`, because duplicating a file descriptor
-can fail due to OS process limits, while `Clone` is an infallible interface.
-
-io-lifetimes's [`BorrowedFd`] is similar to
-[owned-fd](https://crates.io/crates/owned-fd)'s
-[`FdRef`](https://docs.rs/owned-fd/0.1.0/owned_fd/struct.FdRef.html), except it
-uses a lifetime parameter and `PhantomData` rather than transmuting a raw file
-descriptor value into a reference value.
-
-io-lifetimes's convenience features are similar to those of
-[unsafe-io](https://crates.io/crates/unsafe-io), but io-lifetimes is built on
-its own `As*`/`Into*`/`From*` traits, rather than extending
-`AsRaw*`/`IntoRaw*`/`FromRaw*` with
-[`OwnsRaw`](https://docs.rs/unsafe-io/0.6.9/unsafe_io/trait.OwnsRaw.html), so
-they're simpler and safer to use. io-lifetimes doesn't include unsafe-io's
-`*ReadWrite*` or `*HandleOrSocket*` abstractions, and leaves these as features
-to be provided by separate layers on top.
-
-## Minimum Supported Rust Version (MSRV)
-
-This crate currently works on the version of [Rust on Debian stable], which is
-currently Rust 1.48. This policy may change in the future, in minor version
-releases, so users using a fixed version of Rust should pin to a specific
-version of this crate.
-
-[`OwnedFd`]: https://doc.rust-lang.org/stable/std/os/fd/struct.OwnedFd.html
-[`BorrowedFd`]: https://doc.rust-lang.org/stable/std/os/fd/struct.BorrowedFd.html
-[RFC 3128]: https://github.com/rust-lang/rfcs/blob/master/text/3128-io-safety.md
diff --git a/vendor/io-lifetimes/build.rs b/vendor/io-lifetimes/build.rs
deleted file mode 100644
index 2fc2a3817..000000000
--- a/vendor/io-lifetimes/build.rs
+++ /dev/null
@@ -1,113 +0,0 @@
-use std::env::var;
-use std::io::Write;
-
-fn main() {
- // I/O safety is stabilized in Rust 1.63.
- if has_io_safety() {
- use_feature("io_safety_is_in_std")
- }
-
- // Work around
- // <https://github.com/rust-lang/rust/issues/103306>.
- use_feature_or_nothing("wasi_ext");
-
- // Rust 1.56 and earlier don't support panic in const fn.
- if has_panic_in_const_fn() {
- use_feature("panic_in_const_fn")
- }
-
- // Don't rerun this on changes other than build.rs, as we only depend on
- // the rustc version.
- println!("cargo:rerun-if-changed=build.rs");
-}
-
-fn use_feature_or_nothing(feature: &str) {
- if has_feature(feature) {
- use_feature(feature);
- }
-}
-
-fn use_feature(feature: &str) {
- println!("cargo:rustc-cfg={}", feature);
-}
-
-/// Test whether the rustc at `var("RUSTC")` supports the given feature.
-fn has_feature(feature: &str) -> bool {
- can_compile(format!(
- "#![allow(stable_features)]\n#![feature({})]",
- feature
- ))
-}
-
-/// Test whether the rustc at `var("RUSTC")` can compile the given code.
-fn can_compile<T: AsRef<str>>(test: T) -> bool {
- use std::process::Stdio;
-
- let out_dir = var("OUT_DIR").unwrap();
- let rustc = var("RUSTC").unwrap();
- let target = var("TARGET").unwrap();
-
- // Use `RUSTC_WRAPPER` if it's set, unless it's set to an empty string,
- // as documented [here].
- // [here]: https://doc.rust-lang.org/cargo/reference/environment-variables.html#environment-variables-cargo-reads
- let wrapper = var("RUSTC_WRAPPER")
- .ok()
- .and_then(|w| if w.is_empty() { None } else { Some(w) });
-
- let mut cmd = if let Some(wrapper) = wrapper {
- let mut cmd = std::process::Command::new(wrapper);
- // The wrapper's first argument is supposed to be the path to rustc.
- cmd.arg(rustc);
- cmd
- } else {
- std::process::Command::new(rustc)
- };
-
- cmd.arg("--crate-type=rlib") // Don't require `main`.
- .arg("--emit=metadata") // Do as little as possible but still parse.
- .arg("--target")
- .arg(target)
- .arg("--out-dir")
- .arg(out_dir); // Put the output somewhere inconsequential.
-
- // If Cargo wants to set RUSTFLAGS, use that.
- if let Ok(rustflags) = var("CARGO_ENCODED_RUSTFLAGS") {
- if !rustflags.is_empty() {
- for arg in rustflags.split('\x1f') {
- cmd.arg(arg);
- }
- }
- }
-
- let mut child = cmd
- .arg("-") // Read from stdin.
- .stdin(Stdio::piped()) // Stdin is a pipe.
- .stderr(Stdio::null()) // Errors from feature detection aren't interesting and can be confusing.
- .spawn()
- .unwrap();
-
- writeln!(child.stdin.take().unwrap(), "{}", test.as_ref()).unwrap();
-
- child.wait().unwrap().success()
-}
-
-/// Test whether the rustc at `var("RUSTC")` supports panic in `const fn`.
-fn has_panic_in_const_fn() -> bool {
- can_compile("const fn foo() {{ panic!() }}")
-}
-
-/// Test whether the rustc at `var("RUSTC")` supports the I/O safety feature.
-fn has_io_safety() -> bool {
- can_compile(
- "\
- #[cfg(unix)]\n\
- use std::os::unix::io::OwnedFd as Owned;\n\
- #[cfg(target_os = \"wasi\")]\n\
- use std::os::wasi::io::OwnedFd as Owned;\n\
- #[cfg(windows)]\n\
- use std::os::windows::io::OwnedHandle as Owned;\n\
- \n\
- pub type Success = Owned;\n\
- ",
- )
-}
diff --git a/vendor/io-lifetimes/src/example_ffi.rs b/vendor/io-lifetimes/src/example_ffi.rs
deleted file mode 100644
index e77560baa..000000000
--- a/vendor/io-lifetimes/src/example_ffi.rs
+++ /dev/null
@@ -1,78 +0,0 @@
-//! This is just a sample of what FFI using this crate can look like.
-
-#![cfg_attr(not(io_safety_is_in_std), allow(unused_imports))]
-#![allow(missing_docs)]
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-use crate::{BorrowedFd, OwnedFd};
-#[cfg(windows)]
-use crate::{BorrowedHandle, HandleOrInvalid};
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-use libc::{c_char, c_int, c_void, size_t, ssize_t};
-#[cfg(windows)]
-use {
- core::ffi::c_void,
- windows_sys::core::PCWSTR,
- windows_sys::Win32::Foundation::BOOL,
- windows_sys::Win32::Security::SECURITY_ATTRIBUTES,
- windows_sys::Win32::Storage::FileSystem::{
- FILE_ACCESS_FLAGS, FILE_CREATION_DISPOSITION, FILE_FLAGS_AND_ATTRIBUTES, FILE_SHARE_MODE,
- },
- windows_sys::Win32::System::IO::OVERLAPPED,
-};
-
-// Declare a few FFI functions ourselves, to show off the FFI ergonomics.
-#[cfg(all(
- io_safety_is_in_std,
- any(unix, target_os = "wasi", target_os = "hermit")
-))]
-extern "C" {
- pub fn open(pathname: *const c_char, flags: c_int, ...) -> Option<OwnedFd>;
-}
-#[cfg(any(unix, target_os = "wasi"))]
-extern "C" {
- pub fn read(fd: BorrowedFd<'_>, ptr: *mut c_void, size: size_t) -> ssize_t;
- pub fn write(fd: BorrowedFd<'_>, ptr: *const c_void, size: size_t) -> ssize_t;
-}
-#[cfg(any(unix, target_os = "wasi"))]
-pub use libc::{O_CLOEXEC, O_CREAT, O_RDONLY, O_RDWR, O_TRUNC, O_WRONLY};
-
-// The Windows analogs of the above. Note the use of [`HandleOrInvalid`] as
-// the return type for `CreateFileW`, since that function is defined to return
-// [`INVALID_HANDLE_VALUE`] on error instead of null.
-#[cfg(windows)]
-extern "system" {
- pub fn CreateFileW(
- lpfilename: PCWSTR,
- dwdesiredaccess: FILE_ACCESS_FLAGS,
- dwsharemode: FILE_SHARE_MODE,
- lpsecurityattributes: *const SECURITY_ATTRIBUTES,
- dwcreationdisposition: FILE_CREATION_DISPOSITION,
- dwflagsandattributes: FILE_FLAGS_AND_ATTRIBUTES,
- htemplatefile: HANDLE,
- ) -> HandleOrInvalid;
- pub fn ReadFile(
- hfile: BorrowedHandle<'_>,
- lpbuffer: *mut c_void,
- nnumberofbytestoread: u32,
- lpnumberofbytesread: *mut u32,
- lpoverlapped: *mut OVERLAPPED,
- ) -> BOOL;
- pub fn WriteFile(
- hfile: BorrowedHandle<'_>,
- lpbuffer: *const c_void,
- nnumberofbytestowrite: u32,
- lpnumberofbyteswritten: *mut u32,
- lpoverlapped: *mut OVERLAPPED,
- ) -> BOOL;
-}
-
-#[cfg(windows)]
-pub use {
- windows_sys::Win32::Foundation::HANDLE,
- windows_sys::Win32::Storage::FileSystem::{
- CREATE_ALWAYS, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, FILE_GENERIC_READ, FILE_GENERIC_WRITE,
- OPEN_EXISTING,
- },
-};
diff --git a/vendor/io-lifetimes/src/impls_async_std.rs b/vendor/io-lifetimes/src/impls_async_std.rs
deleted file mode 100644
index 7223e9955..000000000
--- a/vendor/io-lifetimes/src/impls_async_std.rs
+++ /dev/null
@@ -1,509 +0,0 @@
-//! Implementations of io-lifetimes' traits for async-std's types. In the
-//! future, we'll prefer to have crates provide their own impls; this is
-//! just a temporary measure.
-
-#[cfg(any(unix, target_os = "wasi"))]
-use crate::{AsFd, BorrowedFd, FromFd, IntoFd, OwnedFd};
-#[cfg(windows)]
-use crate::{
- AsHandle, AsSocket, BorrowedHandle, BorrowedSocket, FromHandle, FromSocket, IntoHandle,
- IntoSocket, OwnedHandle, OwnedSocket,
-};
-#[cfg(unix)]
-use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd};
-#[cfg(target_os = "wasi")]
-use std::os::wasi::io::{AsRawFd, FromRawFd, IntoRawFd};
-#[cfg(windows)]
-use std::os::windows::io::{
- AsRawHandle, AsRawSocket, FromRawHandle, FromRawSocket, IntoRawHandle, IntoRawSocket,
-};
-
-unsafe impl FilelikeViewType for async_std::fs::File {}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl AsFd for async_std::fs::File {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for async_std::fs::File {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl IntoFd for async_std::fs::File {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl From<async_std::fs::File> for OwnedFd {
- #[inline]
- fn from(owned: async_std::fs::File) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl IntoHandle for async_std::fs::File {
- #[inline]
- fn into_handle(self) -> OwnedHandle {
- unsafe { OwnedHandle::from_raw_handle(self.into_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl From<async_std::fs::File> for OwnedHandle {
- #[inline]
- fn from(owned: async_std::fs::File) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl FromFd for async_std::fs::File {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl From<OwnedFd> for async_std::fs::File {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl FromHandle for async_std::fs::File {
- #[inline]
- fn from_handle(owned: OwnedHandle) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl From<OwnedHandle> for async_std::fs::File {
- #[inline]
- fn from(owned: OwnedHandle) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl AsFd for async_std::net::TcpStream {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsSocket for async_std::net::TcpStream {
- #[inline]
- fn as_socket(&self) -> BorrowedSocket<'_> {
- unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl IntoFd for async_std::net::TcpStream {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl From<async_std::net::TcpStream> for OwnedFd {
- #[inline]
- fn from(owned: async_std::net::TcpStream) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl IntoSocket for async_std::net::TcpStream {
- #[inline]
- fn into_socket(self) -> OwnedSocket {
- unsafe { OwnedSocket::from_raw_socket(self.into_raw_socket()) }
- }
-}
-
-#[cfg(windows)]
-impl From<async_std::net::TcpStream> for OwnedSocket {
- #[inline]
- fn from(owned: async_std::net::TcpStream) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl FromFd for async_std::net::TcpStream {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl From<OwnedFd> for async_std::net::TcpStream {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl FromSocket for async_std::net::TcpStream {
- #[inline]
- fn from_socket(owned: OwnedSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(windows)]
-impl From<OwnedSocket> for async_std::net::TcpStream {
- #[inline]
- fn from(owned: OwnedSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl AsFd for async_std::net::TcpListener {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsSocket for async_std::net::TcpListener {
- #[inline]
- fn as_socket(&self) -> BorrowedSocket<'_> {
- unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl IntoFd for async_std::net::TcpListener {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl From<async_std::net::TcpListener> for OwnedFd {
- #[inline]
- fn from(owned: async_std::net::TcpListener) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl IntoSocket for async_std::net::TcpListener {
- #[inline]
- fn into_socket(self) -> OwnedSocket {
- unsafe { OwnedSocket::from_raw_socket(self.into_raw_socket()) }
- }
-}
-
-#[cfg(windows)]
-impl From<async_std::net::TcpListener> for OwnedSocket {
- #[inline]
- fn from(owned: async_std::net::TcpListener) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl FromFd for async_std::net::TcpListener {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl From<OwnedFd> for async_std::net::TcpListener {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl FromSocket for async_std::net::TcpListener {
- #[inline]
- fn from_socket(owned: OwnedSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(windows)]
-impl From<OwnedSocket> for async_std::net::TcpListener {
- #[inline]
- fn from(owned: OwnedSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl AsFd for async_std::net::UdpSocket {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsSocket for async_std::net::UdpSocket {
- #[inline]
- fn as_socket(&self) -> BorrowedSocket<'_> {
- unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl IntoFd for async_std::net::UdpSocket {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl From<async_std::net::UdpSocket> for OwnedFd {
- #[inline]
- fn from(owned: async_std::net::UdpSocket) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl IntoSocket for async_std::net::UdpSocket {
- #[inline]
- fn into_socket(self) -> OwnedSocket {
- unsafe { OwnedSocket::from_raw_socket(self.into_raw_socket()) }
- }
-}
-
-#[cfg(windows)]
-impl From<async_std::net::UdpSocket> for OwnedSocket {
- #[inline]
- fn from(owned: async_std::net::UdpSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl FromFd for async_std::net::UdpSocket {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl From<OwnedFd> for async_std::net::UdpSocket {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl FromSocket for async_std::net::UdpSocket {
- #[inline]
- fn from_socket(owned: OwnedSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(windows)]
-impl From<OwnedSocket> for async_std::net::UdpSocket {
- #[inline]
- fn from(owned: OwnedSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl AsFd for async_std::io::Stdin {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for async_std::io::Stdin {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl AsFd for async_std::io::Stdout {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for async_std::io::Stdout {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl AsFd for async_std::io::Stderr {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for async_std::io::Stderr {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(unix)]
-impl AsFd for async_std::os::unix::net::UnixStream {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl IntoFd for async_std::os::unix::net::UnixStream {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<async_std::os::unix::net::UnixStream> for OwnedFd {
- #[inline]
- fn from(owned: async_std::os::unix::net::UnixStream) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl FromFd for async_std::os::unix::net::UnixStream {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<OwnedFd> for async_std::os::unix::net::UnixStream {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl AsFd for async_std::os::unix::net::UnixListener {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl IntoFd for async_std::os::unix::net::UnixListener {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<async_std::os::unix::net::UnixListener> for OwnedFd {
- #[inline]
- fn from(owned: async_std::os::unix::net::UnixListener) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl FromFd for async_std::os::unix::net::UnixListener {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<OwnedFd> for async_std::os::unix::net::UnixListener {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl AsFd for async_std::os::unix::net::UnixDatagram {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl IntoFd for async_std::os::unix::net::UnixDatagram {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<async_std::os::unix::net::UnixDatagram> for OwnedFd {
- #[inline]
- fn from(owned: async_std::os::unix::net::UnixDatagram) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl FromFd for async_std::os::unix::net::UnixDatagram {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<OwnedFd> for async_std::os::unix::net::UnixDatagram {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
diff --git a/vendor/io-lifetimes/src/impls_fs_err.rs b/vendor/io-lifetimes/src/impls_fs_err.rs
deleted file mode 100644
index 6fcef362b..000000000
--- a/vendor/io-lifetimes/src/impls_fs_err.rs
+++ /dev/null
@@ -1,62 +0,0 @@
-//! Implementations of io-lifetimes' traits for fs_err's types. In the
-//! future, we'll prefer to have crates provide their own impls; this is
-//! just a temporary measure.
-
-#[cfg(any(unix, target_os = "wasi"))]
-use crate::{AsFd, BorrowedFd, IntoFd, OwnedFd};
-#[cfg(windows)]
-use crate::{AsHandle, BorrowedHandle, IntoHandle, OwnedHandle};
-#[cfg(unix)]
-use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd};
-#[cfg(target_os = "wasi")]
-use std::os::wasi::io::{AsRawFd, FromRawFd, IntoRawFd};
-#[cfg(windows)]
-use std::os::windows::io::{AsRawHandle, FromRawHandle, IntoRawHandle};
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl AsFd for fs_err::File {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for fs_err::File {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl IntoFd for fs_err::File {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl From<fs_err::File> for OwnedFd {
- #[inline]
- fn from(owned: fs_err::File) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl IntoHandle for fs_err::File {
- #[inline]
- fn into_handle(self) -> OwnedHandle {
- unsafe { OwnedHandle::from_raw_handle(self.into_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl From<fs_err::File> for OwnedHandle {
- #[inline]
- fn from(owned: fs_err::File) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
diff --git a/vendor/io-lifetimes/src/impls_mio.rs b/vendor/io-lifetimes/src/impls_mio.rs
deleted file mode 100644
index 486274b09..000000000
--- a/vendor/io-lifetimes/src/impls_mio.rs
+++ /dev/null
@@ -1,454 +0,0 @@
-//! Implementations of io-lifetimes' traits for mio's types. In the
-//! future, we'll prefer to have crates provide their own impls; this is
-//! just a temporary measure.
-
-#[cfg(any(unix, target_os = "wasi"))]
-use crate::{AsFd, BorrowedFd, FromFd, IntoFd, OwnedFd};
-#[cfg(windows)]
-use crate::{AsSocket, BorrowedSocket, FromSocket, IntoSocket, OwnedSocket};
-#[cfg(unix)]
-use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd};
-#[cfg(target_os = "wasi")]
-use std::os::wasi::io::{AsRawFd, FromRawFd, IntoRawFd};
-#[cfg(windows)]
-use std::os::windows::io::{AsRawSocket, FromRawSocket, IntoRawSocket};
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl AsFd for mio::net::TcpStream {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsSocket for mio::net::TcpStream {
- #[inline]
- fn as_socket(&self) -> BorrowedSocket<'_> {
- unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl IntoFd for mio::net::TcpStream {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl From<mio::net::TcpStream> for OwnedFd {
- #[inline]
- fn from(owned: mio::net::TcpStream) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl IntoSocket for mio::net::TcpStream {
- #[inline]
- fn into_socket(self) -> OwnedSocket {
- unsafe { OwnedSocket::from_raw_socket(self.into_raw_socket()) }
- }
-}
-
-#[cfg(windows)]
-impl From<mio::net::TcpStream> for OwnedSocket {
- #[inline]
- fn from(owned: mio::net::TcpStream) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl FromFd for mio::net::TcpStream {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl From<OwnedFd> for mio::net::TcpStream {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl FromSocket for mio::net::TcpStream {
- #[inline]
- fn from_socket(owned: OwnedSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(windows)]
-impl From<OwnedSocket> for mio::net::TcpStream {
- #[inline]
- fn from(owned: OwnedSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl AsFd for mio::net::TcpListener {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsSocket for mio::net::TcpListener {
- #[inline]
- fn as_socket(&self) -> BorrowedSocket<'_> {
- unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl IntoFd for mio::net::TcpListener {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl From<mio::net::TcpListener> for OwnedFd {
- #[inline]
- fn from(owned: mio::net::TcpListener) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl IntoSocket for mio::net::TcpListener {
- #[inline]
- fn into_socket(self) -> OwnedSocket {
- unsafe { OwnedSocket::from_raw_socket(self.into_raw_socket()) }
- }
-}
-
-#[cfg(windows)]
-impl From<mio::net::TcpListener> for OwnedSocket {
- #[inline]
- fn from(owned: mio::net::TcpListener) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl FromFd for mio::net::TcpListener {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl From<OwnedFd> for mio::net::TcpListener {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl FromSocket for mio::net::TcpListener {
- #[inline]
- fn from_socket(owned: OwnedSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(windows)]
-impl From<OwnedSocket> for mio::net::TcpListener {
- #[inline]
- fn from(owned: OwnedSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl AsFd for mio::net::UdpSocket {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsSocket for mio::net::UdpSocket {
- #[inline]
- fn as_socket(&self) -> BorrowedSocket<'_> {
- unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl IntoFd for mio::net::UdpSocket {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl From<mio::net::UdpSocket> for OwnedFd {
- #[inline]
- fn from(owned: mio::net::UdpSocket) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl IntoSocket for mio::net::UdpSocket {
- #[inline]
- fn into_socket(self) -> OwnedSocket {
- unsafe { OwnedSocket::from_raw_socket(self.into_raw_socket()) }
- }
-}
-
-#[cfg(windows)]
-impl From<mio::net::UdpSocket> for OwnedSocket {
- #[inline]
- fn from(owned: mio::net::UdpSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl FromFd for mio::net::UdpSocket {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl From<OwnedFd> for mio::net::UdpSocket {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl FromSocket for mio::net::UdpSocket {
- #[inline]
- fn from_socket(owned: OwnedSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(windows)]
-impl From<OwnedSocket> for mio::net::UdpSocket {
- #[inline]
- fn from(owned: OwnedSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(unix)]
-impl AsFd for mio::net::UnixDatagram {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl IntoFd for mio::net::UnixDatagram {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<mio::net::UnixDatagram> for OwnedFd {
- #[inline]
- fn from(owned: mio::net::UnixDatagram) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl FromFd for mio::net::UnixDatagram {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<OwnedFd> for mio::net::UnixDatagram {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl AsFd for mio::net::UnixListener {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl IntoFd for mio::net::UnixListener {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<mio::net::UnixListener> for OwnedFd {
- #[inline]
- fn from(owned: mio::net::UnixListener) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl FromFd for mio::net::UnixListener {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<OwnedFd> for mio::net::UnixListener {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl AsFd for mio::net::UnixStream {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl IntoFd for mio::net::UnixStream {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<mio::net::UnixStream> for OwnedFd {
- #[inline]
- fn from(owned: mio::net::UnixStream) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl FromFd for mio::net::UnixStream {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<OwnedFd> for mio::net::UnixStream {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl AsFd for mio::unix::pipe::Receiver {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl IntoFd for mio::unix::pipe::Receiver {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<mio::unix::pipe::Receiver> for OwnedFd {
- #[inline]
- fn from(owned: mio::unix::pipe::Receiver) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl FromFd for mio::unix::pipe::Receiver {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<OwnedFd> for mio::unix::pipe::Receiver {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl AsFd for mio::unix::pipe::Sender {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl IntoFd for mio::unix::pipe::Sender {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<mio::unix::pipe::Sender> for OwnedFd {
- #[inline]
- fn from(owned: mio::unix::pipe::Sender) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl FromFd for mio::unix::pipe::Sender {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<OwnedFd> for mio::unix::pipe::Sender {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
diff --git a/vendor/io-lifetimes/src/impls_os_pipe.rs b/vendor/io-lifetimes/src/impls_os_pipe.rs
deleted file mode 100644
index 4c1d1bf67..000000000
--- a/vendor/io-lifetimes/src/impls_os_pipe.rs
+++ /dev/null
@@ -1,174 +0,0 @@
-//! Implementations of io-lifetimes' traits for os_pipe's types. In the
-//! future, we'll prefer to have crates provide their own impls; this is
-//! just a temporary measure.
-
-#[cfg(any(unix, target_os = "wasi"))]
-use crate::{AsFd, BorrowedFd, FromFd, IntoFd, OwnedFd};
-#[cfg(windows)]
-use crate::{AsHandle, BorrowedHandle, FromHandle, IntoHandle, OwnedHandle};
-#[cfg(unix)]
-use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd};
-#[cfg(target_os = "wasi")]
-use std::os::wasi::io::{AsRawFd, FromRawFd, IntoRawFd};
-#[cfg(windows)]
-use std::os::windows::io::{AsRawHandle, FromRawHandle, IntoRawHandle};
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl AsFd for os_pipe::PipeReader {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for os_pipe::PipeReader {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl IntoFd for os_pipe::PipeReader {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl From<os_pipe::PipeReader> for OwnedFd {
- #[inline]
- fn from(owned: os_pipe::PipeReader) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl IntoHandle for os_pipe::PipeReader {
- #[inline]
- fn into_handle(self) -> OwnedHandle {
- unsafe { OwnedHandle::from_raw_handle(self.into_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl From<os_pipe::PipeReader> for OwnedHandle {
- #[inline]
- fn from(owned: os_pipe::PipeReader) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl FromFd for os_pipe::PipeReader {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl From<OwnedFd> for os_pipe::PipeReader {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl FromHandle for os_pipe::PipeReader {
- #[inline]
- fn from_handle(owned: OwnedHandle) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl From<OwnedHandle> for os_pipe::PipeReader {
- #[inline]
- fn from(owned: OwnedHandle) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl AsFd for os_pipe::PipeWriter {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for os_pipe::PipeWriter {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl IntoFd for os_pipe::PipeWriter {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl From<os_pipe::PipeWriter> for OwnedFd {
- #[inline]
- fn from(owned: os_pipe::PipeWriter) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl IntoHandle for os_pipe::PipeWriter {
- #[inline]
- fn into_handle(self) -> OwnedHandle {
- unsafe { OwnedHandle::from_raw_handle(self.into_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl From<os_pipe::PipeWriter> for OwnedHandle {
- #[inline]
- fn from(owned: os_pipe::PipeWriter) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl FromFd for os_pipe::PipeWriter {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl From<OwnedFd> for os_pipe::PipeWriter {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl FromHandle for os_pipe::PipeWriter {
- #[inline]
- fn from_handle(owned: OwnedHandle) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl From<OwnedHandle> for os_pipe::PipeWriter {
- #[inline]
- fn from(owned: OwnedHandle) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
diff --git a/vendor/io-lifetimes/src/impls_socket2.rs b/vendor/io-lifetimes/src/impls_socket2.rs
deleted file mode 100644
index 3dc4f9eea..000000000
--- a/vendor/io-lifetimes/src/impls_socket2.rs
+++ /dev/null
@@ -1,94 +0,0 @@
-//! Implementations of io-lifetimes' traits for socket2's types. In the
-//! future, we'll prefer to have crates provide their own impls; this is
-//! just a temporary measure.
-
-#[cfg(any(unix, target_os = "wasi"))]
-use crate::{AsFd, BorrowedFd, FromFd, IntoFd, OwnedFd};
-#[cfg(windows)]
-use crate::{AsSocket, BorrowedSocket, FromSocket, IntoSocket, OwnedSocket};
-#[cfg(unix)]
-use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd};
-#[cfg(target_os = "wasi")]
-use std::os::wasi::io::{AsRawFd, FromRawFd, IntoRawFd};
-#[cfg(windows)]
-use std::os::windows::io::{AsRawSocket, FromRawSocket, IntoRawSocket};
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl AsFd for socket2::Socket {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsSocket for socket2::Socket {
- #[inline]
- fn as_socket(&self) -> BorrowedSocket<'_> {
- unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl IntoFd for socket2::Socket {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl From<socket2::Socket> for OwnedFd {
- #[inline]
- fn from(owned: socket2::Socket) -> Self {
- unsafe { OwnedFd::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl IntoSocket for socket2::Socket {
- #[inline]
- fn into_socket(self) -> OwnedSocket {
- unsafe { OwnedSocket::from_raw_socket(self.into_raw_socket()) }
- }
-}
-
-#[cfg(windows)]
-impl From<socket2::Socket> for OwnedSocket {
- #[inline]
- fn from(owned: socket2::Socket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl FromFd for socket2::Socket {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl From<OwnedFd> for socket2::Socket {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl FromSocket for socket2::Socket {
- #[inline]
- fn from_socket(owned: OwnedSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(windows)]
-impl From<OwnedSocket> for socket2::Socket {
- #[inline]
- fn from(owned: OwnedSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
diff --git a/vendor/io-lifetimes/src/impls_std.rs b/vendor/io-lifetimes/src/impls_std.rs
deleted file mode 100644
index 8adbcfab7..000000000
--- a/vendor/io-lifetimes/src/impls_std.rs
+++ /dev/null
@@ -1,892 +0,0 @@
-#![allow(deprecated)] // Don't warn on `IntoFd` and `FromFd` impls.
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-use crate::{AsFd, FromFd, IntoFd};
-#[cfg(windows)]
-use crate::{AsHandle, AsSocket, FromHandle, FromSocket, IntoHandle, IntoSocket};
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-use crate::{BorrowedFd, OwnedFd};
-#[cfg(windows)]
-use crate::{BorrowedHandle, BorrowedSocket, HandleOrInvalid, OwnedHandle, OwnedSocket};
-#[cfg(target_os = "hermit")]
-use std::os::hermit::io::{AsRawFd, FromRawFd, IntoRawFd};
-#[cfg(unix)]
-use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd};
-#[cfg(target_os = "wasi")]
-use std::os::wasi::io::{AsRawFd, FromRawFd, IntoRawFd};
-#[cfg(windows)]
-use std::os::windows::io::{
- AsRawHandle, AsRawSocket, FromRawHandle, FromRawSocket, IntoRawHandle, IntoRawSocket,
-};
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl AsFd for BorrowedFd<'_> {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for BorrowedHandle<'_> {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl AsSocket for BorrowedSocket<'_> {
- #[inline]
- fn as_socket(&self) -> BorrowedSocket<'_> {
- unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl AsFd for OwnedFd {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for OwnedHandle {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl AsSocket for OwnedSocket {
- #[inline]
- fn as_socket(&self) -> BorrowedSocket<'_> {
- unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl IntoFd for OwnedFd {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { Self::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl IntoHandle for OwnedHandle {
- #[inline]
- fn into_handle(self) -> OwnedHandle {
- unsafe { Self::from_raw_handle(self.into_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl IntoSocket for OwnedSocket {
- #[inline]
- fn into_socket(self) -> OwnedSocket {
- unsafe { Self::from_raw_socket(self.into_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl FromFd for OwnedFd {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl FromHandle for OwnedHandle {
- #[inline]
- fn from_handle(owned: OwnedHandle) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl FromSocket for OwnedSocket {
- #[inline]
- fn from_socket(owned: OwnedSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(windows)]
-impl FromHandle for HandleOrInvalid {
- #[inline]
- fn from_handle(owned: OwnedHandle) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl From<OwnedHandle> for HandleOrInvalid {
- #[inline]
- fn from(owned: OwnedHandle) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl AsFd for std::fs::File {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for std::fs::File {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl IntoFd for std::fs::File {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl From<std::fs::File> for OwnedFd {
- #[inline]
- fn from(owned: std::fs::File) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl IntoHandle for std::fs::File {
- #[inline]
- fn into_handle(self) -> OwnedHandle {
- unsafe { OwnedHandle::from_raw_handle(self.into_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl From<std::fs::File> for OwnedHandle {
- #[inline]
- fn from(owned: std::fs::File) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl FromFd for std::fs::File {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl From<OwnedFd> for std::fs::File {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl FromHandle for std::fs::File {
- #[inline]
- fn from_handle(owned: OwnedHandle) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl From<OwnedHandle> for std::fs::File {
- #[inline]
- fn from(owned: OwnedHandle) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl AsFd for std::net::TcpStream {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsSocket for std::net::TcpStream {
- #[inline]
- fn as_socket(&self) -> BorrowedSocket<'_> {
- unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl IntoFd for std::net::TcpStream {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl From<std::net::TcpStream> for OwnedFd {
- #[inline]
- fn from(owned: std::net::TcpStream) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl IntoSocket for std::net::TcpStream {
- #[inline]
- fn into_socket(self) -> OwnedSocket {
- unsafe { OwnedSocket::from_raw_socket(self.into_raw_socket()) }
- }
-}
-
-#[cfg(windows)]
-impl From<std::net::TcpStream> for OwnedSocket {
- #[inline]
- fn from(owned: std::net::TcpStream) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl FromFd for std::net::TcpStream {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl From<OwnedFd> for std::net::TcpStream {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl FromSocket for std::net::TcpStream {
- #[inline]
- fn from_socket(owned: OwnedSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(windows)]
-impl From<OwnedSocket> for std::net::TcpStream {
- #[inline]
- fn from(owned: OwnedSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl AsFd for std::net::TcpListener {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsSocket for std::net::TcpListener {
- #[inline]
- fn as_socket(&self) -> BorrowedSocket<'_> {
- unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl IntoFd for std::net::TcpListener {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl From<std::net::TcpListener> for OwnedFd {
- #[inline]
- fn from(owned: std::net::TcpListener) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl IntoSocket for std::net::TcpListener {
- #[inline]
- fn into_socket(self) -> OwnedSocket {
- unsafe { OwnedSocket::from_raw_socket(self.into_raw_socket()) }
- }
-}
-
-#[cfg(windows)]
-impl From<std::net::TcpListener> for OwnedSocket {
- #[inline]
- fn from(owned: std::net::TcpListener) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl FromFd for std::net::TcpListener {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl From<OwnedFd> for std::net::TcpListener {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl FromSocket for std::net::TcpListener {
- #[inline]
- fn from_socket(owned: OwnedSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(windows)]
-impl From<OwnedSocket> for std::net::TcpListener {
- #[inline]
- fn from(owned: OwnedSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl AsFd for std::net::UdpSocket {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsSocket for std::net::UdpSocket {
- #[inline]
- fn as_socket(&self) -> BorrowedSocket {
- unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl IntoFd for std::net::UdpSocket {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl From<std::net::UdpSocket> for OwnedFd {
- #[inline]
- fn from(owned: std::net::UdpSocket) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl IntoSocket for std::net::UdpSocket {
- #[inline]
- fn into_socket(self) -> OwnedSocket {
- unsafe { OwnedSocket::from_raw_socket(self.into_raw_socket()) }
- }
-}
-
-#[cfg(windows)]
-impl From<std::net::UdpSocket> for OwnedSocket {
- #[inline]
- fn from(owned: std::net::UdpSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl FromFd for std::net::UdpSocket {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl From<OwnedFd> for std::net::UdpSocket {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl FromSocket for std::net::UdpSocket {
- #[inline]
- fn from_socket(owned: OwnedSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(windows)]
-impl From<OwnedSocket> for std::net::UdpSocket {
- #[inline]
- fn from(owned: OwnedSocket) -> Self {
- unsafe { Self::from_raw_socket(owned.into_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl AsFd for std::io::Stdin {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for std::io::Stdin {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl<'a> AsFd for std::io::StdinLock<'a> {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl<'a> AsHandle for std::io::StdinLock<'a> {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl AsFd for std::io::Stdout {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for std::io::Stdout {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl<'a> AsFd for std::io::StdoutLock<'a> {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl<'a> AsHandle for std::io::StdoutLock<'a> {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl AsFd for std::io::Stderr {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for std::io::Stderr {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl<'a> AsFd for std::io::StderrLock<'a> {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl<'a> AsHandle for std::io::StderrLock<'a> {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(unix)]
-impl AsFd for std::process::ChildStdin {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for std::process::ChildStdin {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(unix)]
-impl IntoFd for std::process::ChildStdin {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<std::process::ChildStdin> for OwnedFd {
- #[inline]
- fn from(owned: std::process::ChildStdin) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl IntoHandle for std::process::ChildStdin {
- #[inline]
- fn into_handle(self) -> OwnedHandle {
- unsafe { OwnedHandle::from_raw_handle(self.into_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl From<std::process::ChildStdin> for OwnedHandle {
- #[inline]
- fn from(owned: std::process::ChildStdin) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
-
-#[cfg(unix)]
-impl AsFd for std::process::ChildStdout {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for std::process::ChildStdout {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(unix)]
-impl IntoFd for std::process::ChildStdout {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<std::process::ChildStdout> for OwnedFd {
- #[inline]
- fn from(owned: std::process::ChildStdout) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl IntoHandle for std::process::ChildStdout {
- #[inline]
- fn into_handle(self) -> OwnedHandle {
- unsafe { OwnedHandle::from_raw_handle(self.into_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl From<std::process::ChildStdout> for OwnedHandle {
- #[inline]
- fn from(owned: std::process::ChildStdout) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
-
-#[cfg(unix)]
-impl AsFd for std::process::ChildStderr {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for std::process::ChildStderr {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(unix)]
-impl IntoFd for std::process::ChildStderr {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<std::process::ChildStderr> for OwnedFd {
- #[inline]
- fn from(owned: std::process::ChildStderr) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl IntoHandle for std::process::ChildStderr {
- #[inline]
- fn into_handle(self) -> OwnedHandle {
- unsafe { OwnedHandle::from_raw_handle(self.into_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl From<std::process::ChildStderr> for OwnedHandle {
- #[inline]
- fn from(owned: std::process::ChildStderr) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
-
-#[cfg(unix)]
-impl FromFd for std::process::Stdio {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<OwnedFd> for std::process::Stdio {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl FromHandle for std::process::Stdio {
- #[inline]
- fn from_handle(owned: OwnedHandle) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl From<OwnedHandle> for std::process::Stdio {
- #[inline]
- fn from(owned: OwnedHandle) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for std::process::Child {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl IntoHandle for std::process::Child {
- #[inline]
- fn into_handle(self) -> OwnedHandle {
- unsafe { OwnedHandle::from_raw_handle(self.into_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl From<std::process::Child> for OwnedHandle {
- #[inline]
- fn from(owned: std::process::Child) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
-
-#[cfg(unix)]
-impl AsFd for std::os::unix::net::UnixStream {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl IntoFd for std::os::unix::net::UnixStream {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<std::os::unix::net::UnixStream> for OwnedFd {
- #[inline]
- fn from(owned: std::os::unix::net::UnixStream) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl FromFd for std::os::unix::net::UnixStream {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<OwnedFd> for std::os::unix::net::UnixStream {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl AsFd for std::os::unix::net::UnixListener {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl IntoFd for std::os::unix::net::UnixListener {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<std::os::unix::net::UnixListener> for OwnedFd {
- #[inline]
- fn from(owned: std::os::unix::net::UnixListener) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl FromFd for std::os::unix::net::UnixListener {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<OwnedFd> for std::os::unix::net::UnixListener {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl AsFd for std::os::unix::net::UnixDatagram {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl IntoFd for std::os::unix::net::UnixDatagram {
- #[inline]
- fn into_fd(self) -> OwnedFd {
- unsafe { OwnedFd::from_raw_fd(self.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<std::os::unix::net::UnixDatagram> for OwnedFd {
- #[inline]
- fn from(owned: std::os::unix::net::UnixDatagram) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl FromFd for std::os::unix::net::UnixDatagram {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl From<OwnedFd> for std::os::unix::net::UnixDatagram {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl<T> AsHandle for std::thread::JoinHandle<T> {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl<T> IntoHandle for std::thread::JoinHandle<T> {
- #[inline]
- fn into_handle(self) -> OwnedHandle {
- unsafe { OwnedHandle::from_raw_handle(self.into_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl<T> From<std::thread::JoinHandle<T>> for OwnedHandle {
- #[inline]
- fn from(owned: std::thread::JoinHandle<T>) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
diff --git a/vendor/io-lifetimes/src/impls_tokio.rs b/vendor/io-lifetimes/src/impls_tokio.rs
deleted file mode 100644
index 6dfde9136..000000000
--- a/vendor/io-lifetimes/src/impls_tokio.rs
+++ /dev/null
@@ -1,214 +0,0 @@
-//! Implementations of io-lifetimes' traits for tokio's types. In the
-//! future, we'll prefer to have crates provide their own impls; this is
-//! just a temporary measure.
-
-#[cfg(any(unix, target_os = "wasi"))]
-use crate::{AsFd, BorrowedFd, FromFd, OwnedFd};
-#[cfg(windows)]
-use crate::{AsHandle, AsSocket, BorrowedHandle, BorrowedSocket, FromHandle, OwnedHandle};
-#[cfg(unix)]
-use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd};
-#[cfg(target_os = "wasi")]
-use std::os::wasi::io::{AsRawFd, FromRawFd, IntoRawFd};
-#[cfg(windows)]
-use std::os::windows::io::{AsRawHandle, AsRawSocket, FromRawHandle, IntoRawHandle};
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl AsFd for tokio::fs::File {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for tokio::fs::File {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl FromFd for tokio::fs::File {
- #[inline]
- fn from_fd(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl From<OwnedFd> for tokio::fs::File {
- #[inline]
- fn from(owned: OwnedFd) -> Self {
- unsafe { Self::from_raw_fd(owned.into_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl FromHandle for tokio::fs::File {
- #[inline]
- fn from_handle(owned: OwnedHandle) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl From<OwnedHandle> for tokio::fs::File {
- #[inline]
- fn from(owned: OwnedHandle) -> Self {
- unsafe { Self::from_raw_handle(owned.into_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl AsFd for tokio::net::TcpStream {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsSocket for tokio::net::TcpStream {
- #[inline]
- fn as_socket(&self) -> BorrowedSocket<'_> {
- unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl AsFd for tokio::net::TcpListener {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsSocket for tokio::net::TcpListener {
- #[inline]
- fn as_socket(&self) -> BorrowedSocket<'_> {
- unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl AsFd for tokio::net::UdpSocket {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsSocket for tokio::net::UdpSocket {
- #[inline]
- fn as_socket(&self) -> BorrowedSocket<'_> {
- unsafe { BorrowedSocket::borrow_raw(self.as_raw_socket()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl AsFd for tokio::io::Stdin {
- #[inline]
- fn as_fd(&self) -> BorrowedFd {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for tokio::io::Stdin {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl AsFd for tokio::io::Stdout {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for tokio::io::Stdout {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl AsFd for tokio::io::Stderr {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for tokio::io::Stderr {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(unix)]
-impl AsFd for tokio::net::UnixStream {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl AsFd for tokio::net::UnixListener {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(unix)]
-impl AsFd for tokio::net::UnixDatagram {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl AsFd for tokio::process::ChildStdout {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for tokio::process::ChildStdin {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for tokio::process::ChildStdout {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
-
-#[cfg(windows)]
-impl AsHandle for tokio::process::ChildStderr {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle {
- unsafe { BorrowedHandle::borrow_raw(self.as_raw_handle()) }
- }
-}
diff --git a/vendor/io-lifetimes/src/lib.rs b/vendor/io-lifetimes/src/lib.rs
deleted file mode 100644
index e293cc589..000000000
--- a/vendor/io-lifetimes/src/lib.rs
+++ /dev/null
@@ -1,190 +0,0 @@
-//! Experimental new types and traits to replace the `Raw` family of types and
-//! traits.
-//!
-//! This API has much conceptual similarity with the `Raw` API, but introduces
-//! explicit concepts of ownership and borrowing:
-//!
-//! | `Raw` API | This experimental API |
-//! | ---------- | ------------------------ |
-//! | `Raw*` | `Borrowed*` and `Owned*` |
-//! | `AsRaw*` | `As*` |
-//! | `IntoRaw*` | `Into*` |
-//! | `FromRaw*` | `From*` |
-//!
-//! This gives it several advantages:
-//!
-//! - Less `unsafe` in user code!
-//!
-//! - Easier to understand ownership.
-//!
-//! - It avoids the inconsistency where `AsRawFd` and `IntoRawFd` return
-//! `RawFd` values that users ought to be able to trust, but aren't unsafe,
-//! so it's possible to fail to uphold this trust in purely safe Rust.
-//!
-//! - It enables a number of safe and portable convenience features, such as
-//! [safe typed views] and [from+into conversions].
-//!
-//! [safe typed views]: AsFilelike::as_filelike_view
-//! [from+into conversions]: FromFilelike::from_into_filelike
-
-#![deny(missing_docs)]
-// Work around <https://github.com/rust-lang/rust/issues/103306>.
-#![cfg_attr(all(wasi_ext, target_os = "wasi"), feature(wasi_ext))]
-// Currently supported platforms.
-#![cfg(any(unix, windows, target_os = "wasi", target_os = "hermit"))]
-
-mod portability;
-mod traits;
-#[cfg(not(io_safety_is_in_std))]
-mod types;
-
-#[cfg(not(io_safety_is_in_std))]
-mod impls_std;
-
-#[cfg(not(io_safety_is_in_std))]
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-pub use traits::AsFd;
-#[cfg(not(io_safety_is_in_std))]
-#[cfg(windows)]
-pub use traits::{AsHandle, AsSocket};
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-#[allow(deprecated)]
-pub use traits::{FromFd, IntoFd};
-#[cfg(windows)]
-#[allow(deprecated)]
-pub use traits::{FromHandle, FromSocket, IntoHandle, IntoSocket};
-
-#[cfg(not(io_safety_is_in_std))]
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-pub use types::{BorrowedFd, OwnedFd};
-#[cfg(not(io_safety_is_in_std))]
-#[cfg(windows)]
-pub use types::{
- BorrowedHandle, BorrowedSocket, HandleOrInvalid, InvalidHandleError, NullHandleError,
- OwnedHandle, OwnedSocket,
-};
-
-#[cfg(io_safety_is_in_std)]
-#[cfg(target_os = "hermit")]
-pub use std::os::hermit::io::{AsFd, BorrowedFd, OwnedFd};
-#[cfg(io_safety_is_in_std)]
-#[cfg(unix)]
-pub use std::os::unix::io::{AsFd, BorrowedFd, OwnedFd};
-#[cfg(io_safety_is_in_std)]
-#[cfg(target_os = "wasi")]
-pub use std::os::wasi::io::{AsFd, BorrowedFd, OwnedFd};
-#[cfg(io_safety_is_in_std)]
-#[cfg(windows)]
-pub use std::os::windows::io::{
- AsHandle, AsSocket, BorrowedHandle, BorrowedSocket, HandleOrInvalid, InvalidHandleError,
- NullHandleError, OwnedHandle, OwnedSocket,
-};
-
-// io-lifetimes defined `FromFd`/`IntoFd` traits instead of just using
-// `From`/`Into` because that allowed it to implement them for foreign types,
-// including std types like File and TcpStream, and popular third-party types.
-//
-// std just uses `From`/`Into`, because it defines those traits itself so it
-// can implement them for std types itself, and std won't be implementing them
-// for third-party types. However, this means that until `OwnedFd` et al are
-// stabilized, there will be no impls for third-party traits.
-//
-// So we define `FromFd`/`IntoFd` traits, and implement them in terms of
-// `From`/`Into`,
-#[cfg(io_safety_is_in_std)]
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-#[allow(deprecated)]
-impl<T: From<OwnedFd>> FromFd for T {
- #[inline]
- fn from_fd(owned_fd: OwnedFd) -> Self {
- owned_fd.into()
- }
-}
-#[cfg(io_safety_is_in_std)]
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-#[allow(deprecated)]
-impl<T> IntoFd for T
-where
- OwnedFd: From<T>,
-{
- #[inline]
- fn into_fd(self) -> OwnedFd {
- self.into()
- }
-}
-
-#[cfg(io_safety_is_in_std)]
-#[cfg(windows)]
-#[allow(deprecated)]
-impl<T: From<OwnedHandle>> FromHandle for T {
- #[inline]
- fn from_handle(owned_handle: OwnedHandle) -> Self {
- owned_handle.into()
- }
-}
-#[cfg(io_safety_is_in_std)]
-#[cfg(windows)]
-#[allow(deprecated)]
-impl<T> IntoHandle for T
-where
- OwnedHandle: From<T>,
-{
- #[inline]
- fn into_handle(self) -> OwnedHandle {
- self.into()
- }
-}
-
-#[cfg(io_safety_is_in_std)]
-#[cfg(windows)]
-#[allow(deprecated)]
-impl<T: From<OwnedSocket>> FromSocket for T {
- #[inline]
- fn from_socket(owned_socket: OwnedSocket) -> Self {
- owned_socket.into()
- }
-}
-#[cfg(io_safety_is_in_std)]
-#[cfg(windows)]
-#[allow(deprecated)]
-impl<T> IntoSocket for T
-where
- OwnedSocket: From<T>,
-{
- #[inline]
- fn into_socket(self) -> OwnedSocket {
- self.into()
- }
-}
-
-pub use portability::{
- AsFilelike, AsSocketlike, BorrowedFilelike, BorrowedSocketlike, FromFilelike, FromSocketlike,
- IntoFilelike, IntoSocketlike, OwnedFilelike, OwnedSocketlike,
-};
-
-#[cfg(feature = "close")]
-pub mod example_ffi;
-pub mod raw;
-pub mod views;
-
-// Ideally, we'd want crates to implement our traits themselves. But for now,
-// while we're prototyping, we provide a few impls on foreign types.
-#[cfg(not(io_safety_is_in_std))]
-#[cfg(feature = "async-std")]
-mod impls_async_std;
-#[cfg(not(io_safety_is_in_std))]
-#[cfg(feature = "fs-err")]
-mod impls_fs_err;
-#[cfg(not(io_safety_is_in_std))]
-#[cfg(feature = "mio")]
-mod impls_mio;
-#[cfg(not(target_os = "wasi"))]
-#[cfg(not(io_safety_is_in_std))]
-#[cfg(feature = "os_pipe")]
-mod impls_os_pipe;
-#[cfg(not(io_safety_is_in_std))]
-#[cfg(feature = "socket2")]
-mod impls_socket2;
-#[cfg(not(io_safety_is_in_std))]
-#[cfg(feature = "tokio")]
-mod impls_tokio;
diff --git a/vendor/io-lifetimes/src/portability.rs b/vendor/io-lifetimes/src/portability.rs
deleted file mode 100644
index 6f6183df7..000000000
--- a/vendor/io-lifetimes/src/portability.rs
+++ /dev/null
@@ -1,526 +0,0 @@
-//! Portability abstractions over `Owned*` and `Borrowed*`.
-//!
-//! On Unix, "everything is a file descriptor". On Windows, file/pipe/process
-//! handles are distinct from socket descriptors. This file provides a minimal
-//! layer of portability over this difference.
-
-use crate::views::{FilelikeView, FilelikeViewType, SocketlikeView, SocketlikeViewType};
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-use crate::{AsFd, BorrowedFd, OwnedFd};
-#[cfg(windows)]
-use crate::{AsHandle, AsSocket, BorrowedHandle, BorrowedSocket, OwnedHandle, OwnedSocket};
-
-/// A reference to a filelike object.
-///
-/// This is a portability abstraction over Unix-like [`BorrowedFd`] and
-/// Windows' `BorrowedHandle`.
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-pub type BorrowedFilelike<'filelike> = BorrowedFd<'filelike>;
-
-/// A reference to a filelike object.
-///
-/// This is a portability abstraction over Unix-like `BorrowedFd` and
-/// Windows' [`BorrowedHandle`].
-#[cfg(windows)]
-pub type BorrowedFilelike<'filelike> = BorrowedHandle<'filelike>;
-
-/// A reference to a socketlike object.
-///
-/// This is a portability abstraction over Unix-like [`BorrowedFd`] and
-/// Windows' `BorrowedSocket`.
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-pub type BorrowedSocketlike<'socketlike> = BorrowedFd<'socketlike>;
-
-/// A reference to a socketlike object.
-///
-/// This is a portability abstraction over Unix-like `BorrowedFd` and
-/// Windows' [`BorrowedSocket`].
-#[cfg(windows)]
-pub type BorrowedSocketlike<'socketlike> = BorrowedSocket<'socketlike>;
-
-/// An owned filelike object.
-///
-/// This is a portability abstraction over Unix-like [`OwnedFd`] and
-/// Windows' `OwnedHandle`.
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-pub type OwnedFilelike = OwnedFd;
-
-/// An owned filelike object.
-///
-/// This is a portability abstraction over Unix-like `OwnedFd` and
-/// Windows' [`OwnedHandle`].
-#[cfg(windows)]
-pub type OwnedFilelike = OwnedHandle;
-
-/// An owned socketlike object.
-///
-/// This is a portability abstraction over Unix-like [`OwnedFd`] and
-/// Windows' `OwnedSocket`.
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-pub type OwnedSocketlike = OwnedFd;
-
-/// An owned socketlike object.
-///
-/// This is a portability abstraction over Unix-like `OwnedFd` and
-/// Windows' [`OwnedSocket`].
-#[cfg(windows)]
-pub type OwnedSocketlike = OwnedSocket;
-
-/// A portable trait to borrow a reference from an underlying filelike object.
-///
-/// This is a portability abstraction over Unix-like [`AsFd`] and Windows'
-/// `AsHandle`. It also provides the `as_filelike_view` convenience function
-/// providing typed views.
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-pub trait AsFilelike: AsFd {
- /// Borrows the reference.
- ///
- /// # Example
- ///
- /// ```rust,no_run
- /// use std::fs::File;
- /// # use std::io;
- /// use io_lifetimes::{AsFilelike, BorrowedFilelike};
- ///
- /// let mut f = File::open("foo.txt")?;
- /// let borrowed_filelike: BorrowedFilelike<'_> = f.as_filelike();
- /// # Ok::<(), io::Error>(())
- /// ```
- fn as_filelike(&self) -> BorrowedFilelike<'_>;
-
- /// Return a borrowing view of a resource which dereferences to a
- /// `&Target`.
- ///
- /// Note that [`Read`] or [`Write`] require `&mut Target`, but in some
- /// cases, such as [`File`], `Read` and `Write` are implemented for
- /// `&Target` in addition to `Target`, and you can get a `&mut &Target`
- /// by doing `&*` on the resuting view, like this:
- ///
- /// ```rust,ignore
- /// let v = f.as_filelike_view::<std::fs::File>();
- /// (&*v).read(&mut buf).unwrap();
- /// ```
- ///
- /// [`File`]: std::fs::File
- /// [`Read`]: std::io::Read
- /// [`Write`]: std::io::Write
- fn as_filelike_view<Target: FilelikeViewType>(&self) -> FilelikeView<'_, Target>;
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl<T: AsFd> AsFilelike for T {
- #[inline]
- fn as_filelike(&self) -> BorrowedFilelike<'_> {
- self.as_fd()
- }
-
- #[inline]
- fn as_filelike_view<Target: FilelikeViewType>(&self) -> FilelikeView<'_, Target> {
- FilelikeView::new(self)
- }
-}
-
-/// A portable trait to borrow a reference from an underlying filelike object.
-///
-/// This is a portability abstraction over Unix-like `AsFd` and Windows'
-/// [`AsHandle`]. It also provides the `as_filelike_view` convenience function
-/// providing typed views.
-#[cfg(windows)]
-pub trait AsFilelike: AsHandle {
- /// Borrows the reference.
- ///
- /// # Example
- ///
- /// ```rust,no_run
- /// use std::fs::File;
- /// # use std::io;
- /// use io_lifetimes::{AsFilelike, BorrowedFilelike};
- ///
- /// let mut f = File::open("foo.txt")?;
- /// let borrowed_filelike: BorrowedFilelike<'_> = f.as_filelike();
- /// # Ok::<(), io::Error>(())
- /// ```
- fn as_filelike(&self) -> BorrowedFilelike<'_>;
-
- /// Return a borrowing view of a resource which dereferences to a
- /// `&Target`.
- ///
- /// Note that [`Read`] or [`Write`] require `&mut Target`, but in some
- /// cases, such as [`File`], `Read` and `Write` are implemented for
- /// `&Target` in addition to `Target`, and you can get a `&mut &Target`
- /// by doing `&*` on the resuting view, like this:
- ///
- /// ```rust,ignore
- /// let v = f.as_filelike_view::<std::fs::File>();
- /// (&*v).read(&mut buf).unwrap();
- /// ```
- ///
- /// [`File`]: std::fs::File
- /// [`Read`]: std::io::Read
- /// [`Write`]: std::io::Write
- fn as_filelike_view<Target: FilelikeViewType>(&self) -> FilelikeView<'_, Target>;
-}
-
-#[cfg(windows)]
-impl<T: AsHandle> AsFilelike for T {
- #[inline]
- fn as_filelike(&self) -> BorrowedFilelike<'_> {
- self.as_handle()
- }
-
- #[inline]
- fn as_filelike_view<Target: FilelikeViewType>(&self) -> FilelikeView<'_, Target> {
- FilelikeView::new(self)
- }
-}
-
-/// A portable trait to borrow a reference from an underlying socketlike
-/// object.
-///
-/// This is a portability abstraction over Unix-like [`AsFd`] and Windows'
-/// `AsSocket`. It also provides the `as_socketlike_view` convenience
-/// function providing typed views.
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-pub trait AsSocketlike: AsFd {
- /// Borrows the reference.
- fn as_socketlike(&self) -> BorrowedSocketlike<'_>;
-
- /// Return a borrowing view of a resource which dereferences to a
- /// `&Target`.
- ///
- /// Note that [`Read`] or [`Write`] require `&mut Target`, but in some
- /// cases, such as [`TcpStream`], `Read` and `Write` are implemented
- /// for `&Target` in addition to `Target`, and you can get a `&mut
- /// &Target` by doing `&*` on the resuting view, like this:
- ///
- /// ```rust,ignore
- /// let v = s.as_socketlike_view::<std::net::TcpStream>();
- /// (&*v).read(&mut buf).unwrap();
- /// ```
- ///
- /// [`TcpStream`]: std::net::TcpStream
- /// [`Read`]: std::io::Read
- /// [`Write`]: std::io::Write
- fn as_socketlike_view<Target: SocketlikeViewType>(&self) -> SocketlikeView<'_, Target>;
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl<T: AsFd> AsSocketlike for T {
- #[inline]
- fn as_socketlike(&self) -> BorrowedSocketlike<'_> {
- self.as_fd()
- }
-
- #[inline]
- fn as_socketlike_view<Target: SocketlikeViewType>(&self) -> SocketlikeView<'_, Target> {
- SocketlikeView::new(self)
- }
-}
-
-/// A portable trait to borrow a reference from an underlying socketlike
-/// object.
-///
-/// This is a portability abstraction over Unix-like `AsFd` and Windows'
-/// [`AsSocket`]. It also provides the `as_socketlike_view` convenience
-/// function providing typed views.
-#[cfg(windows)]
-pub trait AsSocketlike: AsSocket {
- /// Borrows the reference.
- fn as_socketlike(&self) -> BorrowedSocketlike;
-
- /// Return a borrowing view of a resource which dereferences to a
- /// `&Target`.
- ///
- /// Note that [`Read`] or [`Write`] require `&mut Target`, but in some
- /// cases, such as [`TcpStream`], `Read` and `Write` are implemented
- /// for `&Target` in addition to `Target`, and you can get a `&mut
- /// &Target` by doing `&*` on the resuting view, like this:
- ///
- /// ```rust,ignore
- /// let v = s.as_socketlike_view::<std::net::TcpStream>();
- /// (&*v).read(&mut buf).unwrap();
- /// ```
- ///
- /// [`TcpStream`]: std::net::TcpStream
- fn as_socketlike_view<Target: SocketlikeViewType>(&self) -> SocketlikeView<'_, Target>;
-}
-
-#[cfg(windows)]
-impl<T: AsSocket> AsSocketlike for T {
- #[inline]
- fn as_socketlike(&self) -> BorrowedSocketlike<'_> {
- self.as_socket()
- }
-
- #[inline]
- fn as_socketlike_view<Target: SocketlikeViewType>(&self) -> SocketlikeView<'_, Target> {
- SocketlikeView::new(self)
- }
-}
-
-/// A portable trait to express the ability to consume an object and acquire
-/// ownership of its filelike object.
-///
-/// This is a portability abstraction over Unix-like [`Into<OwnedFd>`] and
-/// Windows' `Into<OwnedHandle>`.
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-pub trait IntoFilelike: Into<OwnedFd> {
- /// Consumes this object, returning the underlying filelike object.
- ///
- /// # Example
- ///
- /// ```rust,no_run
- /// use std::fs::File;
- /// # use std::io;
- /// use io_lifetimes::{IntoFilelike, OwnedFilelike};
- ///
- /// let f = File::open("foo.txt")?;
- /// let owned_filelike: OwnedFilelike = f.into_filelike();
- /// # Ok::<(), io::Error>(())
- /// ```
- fn into_filelike(self) -> OwnedFilelike;
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl<T: Into<OwnedFd>> IntoFilelike for T {
- #[inline]
- fn into_filelike(self) -> OwnedFilelike {
- self.into()
- }
-}
-
-/// A portable trait to express the ability to consume an object and acquire
-/// ownership of its filelike object.
-///
-/// This is a portability abstraction over Unix-like `Into<OwnedFd>` and
-/// Windows' [`Into<OwnedHandle>`].
-#[cfg(windows)]
-pub trait IntoFilelike: Into<OwnedHandle> {
- /// Consumes this object, returning the underlying filelike object.
- fn into_filelike(self) -> OwnedFilelike;
-}
-
-#[cfg(windows)]
-impl<T: Into<OwnedHandle>> IntoFilelike for T {
- #[inline]
- fn into_filelike(self) -> OwnedFilelike {
- self.into()
- }
-}
-
-/// A portable trait to express the ability to consume an object and acquire
-/// ownership of its socketlike object.
-///
-/// This is a portability abstraction over Unix-like [`Into<OwnedFd>`] and
-/// Windows' `Into<OwnedSocket>`.
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-pub trait IntoSocketlike: Into<OwnedFd> {
- /// Consumes this object, returning the underlying socketlike object.
- fn into_socketlike(self) -> OwnedSocketlike;
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl<T: Into<OwnedFd>> IntoSocketlike for T {
- #[inline]
- fn into_socketlike(self) -> OwnedSocketlike {
- self.into()
- }
-}
-
-/// A portable trait to express the ability to consume an object and acquire
-/// ownership of its socketlike object.
-///
-/// This is a portability abstraction over Unix-like `Into<OwnedFd>` and
-/// Windows' [`Into<OwnedSocket>`].
-#[cfg(windows)]
-pub trait IntoSocketlike: Into<OwnedSocket> {
- /// Consumes this object, returning the underlying socketlike object.
- ///
- /// # Example
- ///
- /// ```rust,no_run
- /// use std::fs::File;
- /// # use std::io;
- /// use io_lifetimes::{IntoFilelike, OwnedFilelike};
- ///
- /// let f = File::open("foo.txt")?;
- /// let owned_filelike: OwnedFilelike = f.into_filelike();
- /// # Ok::<(), io::Error>(())
- /// ```
- fn into_socketlike(self) -> OwnedSocketlike;
-}
-
-#[cfg(windows)]
-impl<T: Into<OwnedSocket>> IntoSocketlike for T {
- #[inline]
- fn into_socketlike(self) -> OwnedSocketlike {
- self.into()
- }
-}
-
-/// A portable trait to express the ability to construct an object from a
-/// filelike object.
-///
-/// This is a portability abstraction over Unix-like [`From<OwnedFd>`] and
-/// Windows' `From<OwnedHandle>`. It also provides the `from_into_filelike`
-/// convenience function providing simplified from+into conversions.
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-pub trait FromFilelike: From<OwnedFd> {
- /// Constructs a new instance of `Self` from the given filelike object.
- ///
- /// # Example
- ///
- /// ```rust,no_run
- /// use std::fs::File;
- /// # use std::io;
- /// use io_lifetimes::{FromFilelike, IntoFilelike, OwnedFilelike};
- ///
- /// let f = File::open("foo.txt")?;
- /// let owned_filelike: OwnedFilelike = f.into_filelike();
- /// let f = File::from_filelike(owned_filelike);
- /// # Ok::<(), io::Error>(())
- /// ```
- fn from_filelike(owned: OwnedFilelike) -> Self;
-
- /// Constructs a new instance of `Self` from the given filelike object
- /// converted from `into_owned`.
- ///
- /// # Example
- ///
- /// ```rust,no_run
- /// use std::fs::File;
- /// # use std::io;
- /// use io_lifetimes::{FromFilelike, IntoFilelike};
- ///
- /// let f = File::open("foo.txt")?;
- /// let f = File::from_into_filelike(f);
- /// # Ok::<(), io::Error>(())
- /// ```
- fn from_into_filelike<Owned: IntoFilelike>(owned: Owned) -> Self;
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl<T: From<OwnedFd>> FromFilelike for T {
- #[inline]
- fn from_filelike(owned: OwnedFilelike) -> Self {
- Self::from(owned)
- }
-
- #[inline]
- fn from_into_filelike<Owned: IntoFilelike>(owned: Owned) -> Self {
- Self::from_filelike(owned.into_filelike())
- }
-}
-
-/// A portable trait to express the ability to construct an object from a
-/// filelike object.
-///
-/// This is a portability abstraction over Unix-like `From<OwnedFd>` and
-/// Windows' [`From<OwnedHandle>`]. It also provides the `from_into_filelike`
-/// convenience function providing simplified from+into conversions.
-#[cfg(windows)]
-pub trait FromFilelike: From<OwnedHandle> {
- /// Constructs a new instance of `Self` from the given filelike object.
- ///
- /// # Example
- ///
- /// ```rust,no_run
- /// use std::fs::File;
- /// # use std::io;
- /// use io_lifetimes::{FromFilelike, IntoFilelike, OwnedFilelike};
- ///
- /// let f = File::open("foo.txt")?;
- /// let owned_filelike: OwnedFilelike = f.into_filelike();
- /// let f = File::from_filelike(owned_filelike);
- /// # Ok::<(), io::Error>(())
- /// ```
- fn from_filelike(owned: OwnedFilelike) -> Self;
-
- /// Constructs a new instance of `Self` from the given filelike object
- /// converted from `into_owned`.
- ///
- /// # Example
- ///
- /// ```rust,no_run
- /// use std::fs::File;
- /// # use std::io;
- /// use io_lifetimes::{FromFilelike, IntoFilelike};
- ///
- /// let f = File::open("foo.txt")?;
- /// let f = File::from_into_filelike(f);
- /// # Ok::<(), io::Error>(())
- /// ```
- fn from_into_filelike<Owned: IntoFilelike>(owned: Owned) -> Self;
-}
-
-#[cfg(windows)]
-impl<T: From<OwnedHandle>> FromFilelike for T {
- #[inline]
- fn from_filelike(owned: OwnedFilelike) -> Self {
- Self::from(owned)
- }
-
- #[inline]
- fn from_into_filelike<Owned: IntoFilelike>(owned: Owned) -> Self {
- Self::from_filelike(owned.into_filelike())
- }
-}
-
-/// A portable trait to express the ability to construct an object from a
-/// socketlike object.
-///
-/// This is a portability abstraction over Unix-like [`From<OwnedFd>`] and
-/// Windows' `From<OwnedSocketFrom<OwnedSocket>` It also provides the
-/// `from_into_socketlike` convenience function providing simplified from+into
-/// conversions.
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-pub trait FromSocketlike: From<OwnedFd> {
- /// Constructs a new instance of `Self` from the given socketlike object.
- fn from_socketlike(owned: OwnedSocketlike) -> Self;
-
- /// Constructs a new instance of `Self` from the given socketlike object
- /// converted from `into_owned`.
- fn from_into_socketlike<Owned: IntoSocketlike>(owned: Owned) -> Self;
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl<T: From<OwnedFd>> FromSocketlike for T {
- #[inline]
- fn from_socketlike(owned: OwnedSocketlike) -> Self {
- Self::from(owned)
- }
-
- #[inline]
- fn from_into_socketlike<Owned: IntoSocketlike>(owned: Owned) -> Self {
- Self::from_socketlike(owned.into_socketlike())
- }
-}
-
-/// A portable trait to express the ability to construct an object from a
-/// socketlike object.
-///
-/// This is a portability abstraction over Unix-like `From<OwnedFd>` and
-/// Windows' [`From<OwnedSocket>`]. It also provides the `from_into_socketlike`
-/// convenience function providing simplified from+into conversions.
-#[cfg(windows)]
-pub trait FromSocketlike: From<OwnedSocket> {
- /// Constructs a new instance of `Self` from the given socketlike object.
- fn from_socketlike(owned: OwnedSocketlike) -> Self;
-
- /// Constructs a new instance of `Self` from the given socketlike object
- /// converted from `into_owned`.
- fn from_into_socketlike<Owned: IntoSocketlike>(owned: Owned) -> Self;
-}
-
-#[cfg(windows)]
-impl<T: From<OwnedSocket>> FromSocketlike for T {
- #[inline]
- fn from_socketlike(owned: OwnedSocketlike) -> Self {
- Self::from(owned)
- }
-
- #[inline]
- fn from_into_socketlike<Owned: IntoSocketlike>(owned: Owned) -> Self {
- Self::from_socketlike(owned.into_socketlike())
- }
-}
diff --git a/vendor/io-lifetimes/src/raw.rs b/vendor/io-lifetimes/src/raw.rs
deleted file mode 100644
index 8642a8e28..000000000
--- a/vendor/io-lifetimes/src/raw.rs
+++ /dev/null
@@ -1,255 +0,0 @@
-//! Portability abstractions over `Raw*`.
-//!
-//! On Unix, "everything is a file descriptor". On Windows, file/pipe/process
-//! handles are distinct from socket descriptors. This file provides a minimal
-//! layer of portability over this difference.
-
-#[cfg(target_os = "hermit")]
-use std::os::hermit::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd};
-#[cfg(unix)]
-use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd};
-#[cfg(target_os = "wasi")]
-use std::os::wasi::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd};
-#[cfg(windows)]
-use std::os::windows::io::{
- AsRawHandle, AsRawSocket, FromRawHandle, FromRawSocket, IntoRawHandle, IntoRawSocket,
- RawHandle, RawSocket,
-};
-
-/// A raw filelike object.
-///
-/// This is a portability abstraction over Unix-like [`RawFd`] and
-/// Windows' `RawHandle`.
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-pub type RawFilelike = RawFd;
-
-/// A raw filelike object.
-///
-/// This is a portability abstraction over Unix-like `RawFd` and
-/// Windows' [`RawHandle`].
-#[cfg(windows)]
-pub type RawFilelike = RawHandle;
-
-/// A raw socketlike object.
-///
-/// This is a portability abstraction over Unix-like [`RawFd`] and
-/// Windows' `RawSocket`.
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-pub type RawSocketlike = RawFd;
-
-/// A raw socketlike object.
-///
-/// This is a portability abstraction over Unix-like `RawFd` and
-/// Windows' [`RawSocket`].
-#[cfg(windows)]
-pub type RawSocketlike = RawSocket;
-
-/// A portable trait to obtain the raw value of an underlying filelike object.
-///
-/// This is a portability abstraction over Unix-like [`AsRawFd`] and Windows'
-/// `AsRawHandle`.
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-pub trait AsRawFilelike: AsRawFd {
- /// Returns the raw value.
- fn as_raw_filelike(&self) -> RawFilelike;
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl<T: AsRawFd> AsRawFilelike for T {
- #[inline]
- fn as_raw_filelike(&self) -> RawFilelike {
- self.as_raw_fd()
- }
-}
-
-/// This is a portability abstraction over Unix-like `AsRawFd` and Windows'
-/// [`AsRawHandle`].
-#[cfg(windows)]
-pub trait AsRawFilelike: AsRawHandle {
- /// Returns the raw value.
- fn as_raw_filelike(&self) -> RawFilelike;
-}
-
-#[cfg(windows)]
-impl<T: AsRawHandle> AsRawFilelike for T {
- #[inline]
- fn as_raw_filelike(&self) -> RawFilelike {
- self.as_raw_handle()
- }
-}
-
-/// This is a portability abstraction over Unix-like [`AsRawFd`] and Windows'
-/// `AsRawSocket`.
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-pub trait AsRawSocketlike: AsRawFd {
- /// Returns the raw value.
- fn as_raw_socketlike(&self) -> RawSocketlike;
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl<T: AsRawFd> AsRawSocketlike for T {
- #[inline]
- fn as_raw_socketlike(&self) -> RawSocketlike {
- self.as_raw_fd()
- }
-}
-
-/// This is a portability abstraction over Unix-like `AsRawFd` and Windows'
-/// [`AsRawSocket`].
-#[cfg(windows)]
-pub trait AsRawSocketlike: AsRawSocket {
- /// Returns the raw value.
- fn as_raw_socketlike(&self) -> RawSocketlike;
-}
-
-#[cfg(windows)]
-impl<T: AsRawSocket> AsRawSocketlike for T {
- #[inline]
- fn as_raw_socketlike(&self) -> RawSocketlike {
- self.as_raw_socket()
- }
-}
-
-/// This is a portability abstraction over Unix-like [`IntoRawFd`] and Windows'
-/// `IntoRawHandle`.
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-pub trait IntoRawFilelike: IntoRawFd {
- /// Returns the raw value.
- fn into_raw_filelike(self) -> RawFilelike;
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl<T: IntoRawFd> IntoRawFilelike for T {
- #[inline]
- fn into_raw_filelike(self) -> RawFilelike {
- self.into_raw_fd()
- }
-}
-
-/// This is a portability abstraction over Unix-like `IntoRawFd` and Windows'
-/// [`IntoRawHandle`].
-#[cfg(windows)]
-pub trait IntoRawFilelike: IntoRawHandle {
- /// Returns the raw value.
- fn into_raw_filelike(self) -> RawFilelike;
-}
-
-#[cfg(windows)]
-impl<T: IntoRawHandle> IntoRawFilelike for T {
- #[inline]
- fn into_raw_filelike(self) -> RawFilelike {
- self.into_raw_handle()
- }
-}
-
-/// This is a portability abstraction over Unix-like [`IntoRawFd`] and Windows'
-/// `IntoRawSocket`.
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-pub trait IntoRawSocketlike: IntoRawFd {
- /// Returns the raw value.
- fn into_raw_socketlike(self) -> RawSocketlike;
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl<T: IntoRawFd> IntoRawSocketlike for T {
- #[inline]
- fn into_raw_socketlike(self) -> RawSocketlike {
- self.into_raw_fd()
- }
-}
-
-/// This is a portability abstraction over Unix-like `IntoRawFd` and Windows'
-/// [`IntoRawSocket`].
-#[cfg(windows)]
-pub trait IntoRawSocketlike: IntoRawSocket {
- /// Returns the raw value.
- fn into_raw_socketlike(self) -> RawSocketlike;
-}
-
-#[cfg(windows)]
-impl<T: IntoRawSocket> IntoRawSocketlike for T {
- #[inline]
- fn into_raw_socketlike(self) -> RawSocketlike {
- self.into_raw_socket()
- }
-}
-
-/// This is a portability abstraction over Unix-like [`FromRawFd`] and Windows'
-/// `FromRawHandle`.
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-pub trait FromRawFilelike: FromRawFd {
- /// Constructs `Self` from the raw value.
- ///
- /// # Safety
- ///
- /// This is `unsafe` for the same reason as [`from_raw_fd`] and
- /// [`from_raw_handle`].
- ///
- /// [`from_raw_fd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.FromRawFd.html#tymethod.from_raw_fd
- /// [`from_raw_handle`]: https://doc.rust-lang.org/stable/std/os/windows/io/trait.FromRawHandle.html#tymethod.from_raw_handle
- unsafe fn from_raw_filelike(raw: RawFilelike) -> Self;
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl<T: FromRawFd> FromRawFilelike for T {
- #[inline]
- unsafe fn from_raw_filelike(raw: RawFilelike) -> Self {
- Self::from_raw_fd(raw)
- }
-}
-
-/// This is a portability abstraction over Unix-like `FromRawFd` and Windows'
-/// [`FromRawHandle`].
-#[cfg(windows)]
-pub trait FromRawFilelike: FromRawHandle {
- /// Constructs `Self` from the raw value.
- unsafe fn from_raw_filelike(raw: RawFilelike) -> Self;
-}
-
-#[cfg(windows)]
-impl<T: FromRawHandle> FromRawFilelike for T {
- #[inline]
- unsafe fn from_raw_filelike(raw: RawFilelike) -> Self {
- Self::from_raw_handle(raw)
- }
-}
-
-/// This is a portability abstraction over Unix-like [`FromRawFd`] and Windows'
-/// `FromRawSocket`.
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-pub trait FromRawSocketlike: FromRawFd {
- /// Constructs `Self` from the raw value.
- ///
- /// # Safety
- ///
- /// This is `unsafe` for the same reason as [`from_raw_fd`] and
- /// [`from_raw_socket`].
- ///
- /// [`from_raw_fd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.FromRawFd.html#tymethod.from_raw_fd
- /// [`from_raw_socket`]: https://doc.rust-lang.org/stable/std/os/windows/io/trait.FromRawSocket.html#tymethod.from_raw_socket
- unsafe fn from_raw_socketlike(raw: RawSocketlike) -> Self;
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl<T: FromRawFd> FromRawSocketlike for T {
- #[inline]
- unsafe fn from_raw_socketlike(raw: RawSocketlike) -> Self {
- Self::from_raw_fd(raw)
- }
-}
-
-/// This is a portability abstraction over Unix-like `FromRawFd` and Windows'
-/// [`FromRawSocket`].
-#[cfg(windows)]
-pub trait FromRawSocketlike: FromRawSocket {
- /// Constructs `Self` from the raw value.
- unsafe fn from_raw_socketlike(raw: RawSocketlike) -> Self;
-}
-
-#[cfg(windows)]
-impl<T: FromRawSocket> FromRawSocketlike for T {
- #[inline]
- unsafe fn from_raw_socketlike(raw: RawSocketlike) -> Self {
- Self::from_raw_socket(raw)
- }
-}
diff --git a/vendor/io-lifetimes/src/traits.rs b/vendor/io-lifetimes/src/traits.rs
deleted file mode 100644
index b02573106..000000000
--- a/vendor/io-lifetimes/src/traits.rs
+++ /dev/null
@@ -1,290 +0,0 @@
-#[cfg(not(io_safety_is_in_std))]
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-use crate::BorrowedFd;
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-use crate::OwnedFd;
-#[cfg(not(io_safety_is_in_std))]
-#[cfg(windows)]
-use crate::{BorrowedHandle, BorrowedSocket};
-#[cfg(windows)]
-use crate::{OwnedHandle, OwnedSocket};
-
-/// A trait to borrow the file descriptor from an underlying object.
-///
-/// This is only available on unix platforms and must be imported in order to
-/// call the method. Windows platforms have a corresponding `AsHandle` and
-/// `AsSocket` set of traits.
-#[cfg(not(io_safety_is_in_std))]
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-pub trait AsFd {
- /// Borrows the file descriptor.
- ///
- /// # Example
- ///
- /// ```rust,no_run
- /// use std::fs::File;
- /// # use std::io;
- /// use io_lifetimes::{AsFd, BorrowedFd};
- ///
- /// let mut f = File::open("foo.txt")?;
- /// let borrowed_fd: BorrowedFd<'_> = f.as_fd();
- /// # Ok::<(), io::Error>(())
- /// ```
- fn as_fd(&self) -> BorrowedFd<'_>;
-}
-
-/// A trait to borrow the handle from an underlying object.
-#[cfg(not(io_safety_is_in_std))]
-#[cfg(windows)]
-pub trait AsHandle {
- /// Borrows the handle.
- ///
- /// # Example
- ///
- /// ```rust,no_run
- /// use std::fs::File;
- /// # use std::io;
- /// use io_lifetimes::{AsHandle, BorrowedHandle};
- ///
- /// let mut f = File::open("foo.txt")?;
- /// let borrowed_handle: BorrowedHandle<'_> = f.as_handle();
- /// # Ok::<(), io::Error>(())
- /// ```
- fn as_handle(&self) -> BorrowedHandle<'_>;
-}
-
-/// A trait to borrow the socket from an underlying object.
-#[cfg(not(io_safety_is_in_std))]
-#[cfg(windows)]
-pub trait AsSocket {
- /// Borrows the socket.
- fn as_socket(&self) -> BorrowedSocket<'_>;
-}
-
-/// A trait to express the ability to consume an object and acquire ownership
-/// of its file descriptor.
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-#[deprecated(
- since = "1.0.0",
- note = "`IntoFd` is replaced by `From<...> for OwnedFd` or `Into<OwnedFd>`"
-)]
-pub trait IntoFd {
- /// Consumes this object, returning the underlying file descriptor.
- ///
- /// # Example
- ///
- /// ```rust,no_run
- /// use std::fs::File;
- /// # use std::io;
- /// use io_lifetimes::{IntoFd, OwnedFd};
- ///
- /// let f = File::open("foo.txt")?;
- /// let owned_fd: OwnedFd = f.into_fd();
- /// # Ok::<(), io::Error>(())
- /// ```
- fn into_fd(self) -> OwnedFd;
-}
-
-/// A trait to express the ability to consume an object and acquire ownership
-/// of its handle.
-#[cfg(windows)]
-#[deprecated(
- since = "1.0.0",
- note = "`IntoHandle` is replaced by `From<...> for OwnedHandle` or `Into<OwnedHandle>`"
-)]
-pub trait IntoHandle {
- /// Consumes this object, returning the underlying handle.
- ///
- /// # Example
- ///
- /// ```rust,no_run
- /// use std::fs::File;
- /// # use std::io;
- /// use io_lifetimes::{IntoHandle, OwnedHandle};
- ///
- /// let f = File::open("foo.txt")?;
- /// let owned_handle: OwnedHandle = f.into_handle();
- /// # Ok::<(), io::Error>(())
- /// ```
- fn into_handle(self) -> OwnedHandle;
-}
-
-/// A trait to express the ability to consume an object and acquire ownership
-/// of its socket.
-#[cfg(windows)]
-#[deprecated(
- since = "1.0.0",
- note = "`IntoSocket` is replaced by `From<...> for OwnedSocket` or `Into<OwnedSocket>`"
-)]
-pub trait IntoSocket {
- /// Consumes this object, returning the underlying socket.
- fn into_socket(self) -> OwnedSocket;
-}
-
-/// A trait to express the ability to construct an object from a file
-/// descriptor.
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-pub trait FromFd {
- /// Constructs a new instance of `Self` from the given file descriptor.
- ///
- /// # Example
- ///
- /// ```rust,no_run
- /// use std::fs::File;
- /// # use std::io;
- /// use io_lifetimes::{FromFd, IntoFd, OwnedFd};
- ///
- /// let f = File::open("foo.txt")?;
- /// let owned_fd: OwnedFd = f.into_fd();
- /// let f = File::from_fd(owned_fd);
- /// # Ok::<(), io::Error>(())
- /// ```
- #[deprecated(
- since = "1.0.0",
- note = "`FromFd::from_fd` is replaced by `From<OwnedFd>::from`"
- )]
- fn from_fd(owned: OwnedFd) -> Self;
-
- /// Constructs a new instance of `Self` from the given file descriptor
- /// converted from `into_owned`.
- ///
- /// # Example
- ///
- /// ```rust,no_run
- /// use std::fs::File;
- /// # use std::io;
- /// use io_lifetimes::{FromFd, IntoFd};
- ///
- /// let f = File::open("foo.txt")?;
- /// let f = File::from_into_fd(f);
- /// # Ok::<(), io::Error>(())
- /// ```
- #[inline]
- fn from_into_fd<Owned: Into<OwnedFd>>(into_owned: Owned) -> Self
- where
- Self: Sized + From<OwnedFd>,
- {
- Self::from(into_owned.into())
- }
-}
-
-/// A trait to express the ability to construct an object from a handle.
-#[cfg(windows)]
-pub trait FromHandle {
- /// Constructs a new instance of `Self` from the given handle.
- ///
- /// # Example
- ///
- /// ```rust,no_run
- /// use std::fs::File;
- /// # use std::io;
- /// use io_lifetimes::{FromHandle, IntoHandle, OwnedHandle};
- ///
- /// let f = File::open("foo.txt")?;
- /// let owned_handle: OwnedHandle = f.into_handle();
- /// let f = File::from_handle(owned_handle);
- /// # Ok::<(), io::Error>(())
- /// ```
- #[deprecated(
- since = "1.0.0",
- note = "`FromHandle::from_handle` is replaced by `From<OwnedHandle>::from`"
- )]
- fn from_handle(owned: OwnedHandle) -> Self;
-
- /// Constructs a new instance of `Self` from the given handle converted
- /// from `into_owned`.
- ///
- /// # Example
- ///
- /// ```rust,no_run
- /// use std::fs::File;
- /// # use std::io;
- /// use io_lifetimes::{FromHandle, IntoHandle};
- ///
- /// let f = File::open("foo.txt")?;
- /// let f = File::from_into_handle(f);
- /// # Ok::<(), io::Error>(())
- /// ```
- #[inline]
- fn from_into_handle<Owned: Into<OwnedHandle>>(into_owned: Owned) -> Self
- where
- Self: Sized + From<OwnedHandle>,
- {
- Self::from(into_owned.into())
- }
-}
-
-/// A trait to express the ability to construct an object from a socket.
-#[cfg(windows)]
-pub trait FromSocket {
- /// Constructs a new instance of `Self` from the given socket.
- #[deprecated(
- since = "1.0.0",
- note = "`FromSocket::from_socket` is replaced by `From<OwnedSocket>::from`"
- )]
- fn from_socket(owned: OwnedSocket) -> Self;
-
- /// Constructs a new instance of `Self` from the given socket converted
- /// from `into_owned`.
- #[inline]
- fn from_into_socket<Owned: Into<OwnedSocket>>(into_owned: Owned) -> Self
- where
- Self: Sized + From<OwnedSocket>,
- {
- Self::from(into_owned.into())
- }
-}
-
-#[cfg(not(io_safety_is_in_std))]
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl<T: AsFd> AsFd for &T {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- T::as_fd(self)
- }
-}
-
-#[cfg(not(io_safety_is_in_std))]
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl<T: AsFd> AsFd for &mut T {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- T::as_fd(self)
- }
-}
-
-#[cfg(not(io_safety_is_in_std))]
-#[cfg(windows)]
-impl<T: AsHandle> AsHandle for &T {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- T::as_handle(self)
- }
-}
-
-#[cfg(not(io_safety_is_in_std))]
-#[cfg(windows)]
-impl<T: AsHandle> AsHandle for &mut T {
- #[inline]
- fn as_handle(&self) -> BorrowedHandle<'_> {
- T::as_handle(self)
- }
-}
-
-#[cfg(not(io_safety_is_in_std))]
-#[cfg(windows)]
-impl<T: AsSocket> AsSocket for &T {
- #[inline]
- fn as_socket(&self) -> BorrowedSocket<'_> {
- T::as_socket(self)
- }
-}
-
-#[cfg(not(io_safety_is_in_std))]
-#[cfg(windows)]
-impl<T: AsSocket> AsSocket for &mut T {
- #[inline]
- fn as_socket(&self) -> BorrowedSocket<'_> {
- T::as_socket(self)
- }
-}
diff --git a/vendor/io-lifetimes/src/types.rs b/vendor/io-lifetimes/src/types.rs
deleted file mode 100644
index 8d640dc3b..000000000
--- a/vendor/io-lifetimes/src/types.rs
+++ /dev/null
@@ -1,880 +0,0 @@
-use std::fmt;
-use std::marker::PhantomData;
-use std::mem::forget;
-#[cfg(target_os = "hermit")]
-use std::os::hermit::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd};
-#[cfg(unix)]
-use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd};
-#[cfg(target_os = "wasi")]
-use std::os::wasi::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd};
-#[cfg(windows)]
-use std::{
- convert::TryFrom,
- os::windows::io::{
- AsRawHandle, AsRawSocket, FromRawHandle, FromRawSocket, IntoRawHandle, IntoRawSocket,
- RawHandle, RawSocket,
- },
-};
-#[cfg(all(windows, feature = "close"))]
-use {
- windows_sys::Win32::Foundation::{
- CloseHandle, DuplicateHandle, SetHandleInformation, BOOL, DUPLICATE_HANDLE_OPTIONS,
- DUPLICATE_SAME_ACCESS, HANDLE, HANDLE_FLAG_INHERIT, INVALID_HANDLE_VALUE,
- },
- windows_sys::Win32::Networking::WinSock::{
- closesocket, WSADuplicateSocketW, WSAGetLastError, WSASocketW, INVALID_SOCKET, SOCKET,
- SOCKET_ERROR, WSAEINVAL, WSAEPROTOTYPE, WSAPROTOCOL_INFOW, WSA_FLAG_NO_HANDLE_INHERIT,
- WSA_FLAG_OVERLAPPED,
- },
- windows_sys::Win32::System::Threading::{GetCurrentProcess, GetCurrentProcessId},
-};
-
-#[cfg(all(windows, not(feature = "close")))]
-type HANDLE = isize;
-#[cfg(all(windows, not(feature = "close")))]
-const INVALID_HANDLE_VALUE: HANDLE = !0 as _;
-#[cfg(all(windows, not(feature = "close")))]
-const INVALID_SOCKET: usize = !0 as _;
-
-/// A borrowed file descriptor.
-///
-/// This has a lifetime parameter to tie it to the lifetime of something that
-/// owns the file descriptor.
-///
-/// This uses `repr(transparent)` and has the representation of a host file
-/// descriptor, so it can be used in FFI in places where a file descriptor is
-/// passed as an argument, it is not captured or consumed, and it never has the
-/// value `-1`.
-///
-/// This type's `.to_owned()` implementation returns another `BorrowedFd`
-/// rather than an `OwnedFd`. It just makes a trivial copy of the raw file
-/// descriptor, which is then borrowed under the same lifetime.
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-#[derive(Copy, Clone)]
-#[repr(transparent)]
-pub struct BorrowedFd<'fd> {
- fd: RawFd,
- _phantom: PhantomData<&'fd OwnedFd>,
-}
-
-/// A borrowed handle.
-///
-/// This has a lifetime parameter to tie it to the lifetime of something that
-/// owns the handle.
-///
-/// This uses `repr(transparent)` and has the representation of a host handle,
-/// so it can be used in FFI in places where a handle is passed as an argument,
-/// it is not captured or consumed, and it is never null.
-///
-/// Note that it *may* have the value `-1`, which in `BorrowedHandle` always
-/// represents a valid handle value, such as [the current process handle], and
-/// not `INVALID_HANDLE_VALUE`, despite the two having the same value. See
-/// [here] for the full story.
-///
-/// This type's `.to_owned()` implementation returns another `BorrowedHandle`
-/// rather than an `OwnedHandle`. It just makes a trivial copy of the raw
-/// handle, which is then borrowed under the same lifetime.
-///
-/// [here]: https://devblogs.microsoft.com/oldnewthing/20040302-00/?p=40443
-/// [the current process handle]: https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-getcurrentprocess#remarks
-#[cfg(windows)]
-#[derive(Copy, Clone)]
-#[repr(transparent)]
-pub struct BorrowedHandle<'handle> {
- handle: RawHandle,
- _phantom: PhantomData<&'handle OwnedHandle>,
-}
-
-/// A borrowed socket.
-///
-/// This has a lifetime parameter to tie it to the lifetime of something that
-/// owns the socket.
-///
-/// This uses `repr(transparent)` and has the representation of a host socket,
-/// so it can be used in FFI in places where a socket is passed as an argument,
-/// it is not captured or consumed, and it never has the value
-/// [`INVALID_SOCKET`].
-///
-/// This type's `.to_owned()` implementation returns another `BorrowedSocket`
-/// rather than an `OwnedSocket`. It just makes a trivial copy of the raw
-/// socket, which is then borrowed under the same lifetime.
-#[cfg(windows)]
-#[derive(Copy, Clone)]
-#[repr(transparent)]
-pub struct BorrowedSocket<'socket> {
- socket: RawSocket,
- _phantom: PhantomData<&'socket OwnedSocket>,
-}
-
-/// An owned file descriptor.
-///
-/// This closes the file descriptor on drop.
-///
-/// This uses `repr(transparent)` and has the representation of a host file
-/// descriptor, so it can be used in FFI in places where a file descriptor is
-/// passed as a consumed argument or returned as an owned value, and it never
-/// has the value `-1`.
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-#[repr(transparent)]
-pub struct OwnedFd {
- fd: RawFd,
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl OwnedFd {
- /// Creates a new `OwnedFd` instance that shares the same underlying file
- /// description as the existing `OwnedFd` instance.
- pub fn try_clone(&self) -> std::io::Result<Self> {
- crate::AsFd::as_fd(self).try_clone_to_owned()
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl BorrowedFd<'_> {
- /// Creates a new `OwnedFd` instance that shares the same underlying file
- /// description as the existing `BorrowedFd` instance.
- pub fn try_clone_to_owned(&self) -> std::io::Result<OwnedFd> {
- #[cfg(feature = "close")]
- {
- #[cfg(unix)]
- {
- // We want to atomically duplicate this file descriptor and set the
- // CLOEXEC flag, and currently that's done via F_DUPFD_CLOEXEC. This
- // is a POSIX flag that was added to Linux in 2.6.24.
- #[cfg(not(target_os = "espidf"))]
- let cmd = libc::F_DUPFD_CLOEXEC;
-
- // For ESP-IDF, F_DUPFD is used instead, because the CLOEXEC semantics
- // will never be supported, as this is a bare metal framework with
- // no capabilities for multi-process execution. While F_DUPFD is also
- // not supported yet, it might be (currently it returns ENOSYS).
- #[cfg(target_os = "espidf")]
- let cmd = libc::F_DUPFD;
-
- let fd = match unsafe { libc::fcntl(self.as_raw_fd(), cmd, 0) } {
- -1 => return Err(std::io::Error::last_os_error()),
- fd => fd,
- };
-
- Ok(unsafe { OwnedFd::from_raw_fd(fd) })
- }
-
- #[cfg(any(target_os = "wasi", target_os = "hermit"))]
- {
- unreachable!("try_clone is not yet suppported on wasi");
- }
- }
-
- // If the `close` feature is disabled, we expect users to avoid cloning
- // `OwnedFd` instances, so that we don't have to call `fcntl`.
- #[cfg(not(feature = "close"))]
- {
- unreachable!("try_clone called without the \"close\" feature in io-lifetimes");
- }
- }
-}
-
-/// An owned handle.
-///
-/// This closes the handle on drop.
-///
-/// Note that it *may* have the value `-1`, which in `OwnedHandle` always
-/// represents a valid handle value, such as [the current process handle], and
-/// not `INVALID_HANDLE_VALUE`, despite the two having the same value. See
-/// [here] for the full story.
-///
-/// And, it *may* have the value `NULL` (0), which can occur when consoles are
-/// detached from processes, or when `windows_subsystem` is used.
-///
-/// `OwnedHandle` uses [`CloseHandle`] to close its handle on drop. As such,
-/// it must not be used with handles to open registry keys which need to be
-/// closed with [`RegCloseKey`] instead.
-///
-/// [`CloseHandle`]: https://docs.microsoft.com/en-us/windows/win32/api/handleapi/nf-handleapi-closehandle
-/// [`RegCloseKey`]: https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regclosekey
-///
-/// [here]: https://devblogs.microsoft.com/oldnewthing/20040302-00/?p=40443
-/// [the current process handle]: https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-getcurrentprocess#remarks
-#[cfg(windows)]
-#[repr(transparent)]
-pub struct OwnedHandle {
- handle: RawHandle,
-}
-
-#[cfg(windows)]
-impl OwnedHandle {
- /// Creates a new `OwnedHandle` instance that shares the same underlying
- /// object as the existing `OwnedHandle` instance.
- pub fn try_clone(&self) -> std::io::Result<Self> {
- crate::AsHandle::as_handle(self).try_clone_to_owned()
- }
-}
-
-#[cfg(windows)]
-impl BorrowedHandle<'_> {
- /// Creates a new `OwnedHandle` instance that shares the same underlying
- /// object as the existing `BorrowedHandle` instance.
- pub fn try_clone_to_owned(&self) -> std::io::Result<OwnedHandle> {
- #[cfg(feature = "close")]
- {
- self.duplicate(0, false, DUPLICATE_SAME_ACCESS)
- }
-
- // If the `close` feature is disabled, we expect users to avoid cloning
- // `OwnedHandle` instances, so that we don't have to call `fcntl`.
- #[cfg(not(feature = "close"))]
- {
- unreachable!("try_clone called without the \"close\" feature in io-lifetimes");
- }
- }
-
- #[cfg(feature = "close")]
- pub(crate) fn duplicate(
- &self,
- access: u32,
- inherit: bool,
- options: DUPLICATE_HANDLE_OPTIONS,
- ) -> std::io::Result<OwnedHandle> {
- let mut ret = 0 as HANDLE;
- match unsafe {
- let cur_proc = GetCurrentProcess();
- DuplicateHandle(
- cur_proc,
- self.as_raw_handle() as HANDLE,
- cur_proc,
- &mut ret,
- access,
- inherit as BOOL,
- options,
- )
- } {
- 0 => return Err(std::io::Error::last_os_error()),
- _ => (),
- }
- unsafe { Ok(OwnedHandle::from_raw_handle(ret as RawHandle)) }
- }
-}
-
-/// An owned socket.
-///
-/// This closes the socket on drop.
-///
-/// This uses `repr(transparent)` and has the representation of a host socket,
-/// so it can be used in FFI in places where a socket is passed as a consumed
-/// argument or returned as an owned value, and it never has the value
-/// [`INVALID_SOCKET`].
-#[cfg(windows)]
-#[repr(transparent)]
-pub struct OwnedSocket {
- socket: RawSocket,
-}
-
-#[cfg(windows)]
-impl OwnedSocket {
- /// Creates a new `OwnedSocket` instance that shares the same underlying
- /// object as the existing `OwnedSocket` instance.
- pub fn try_clone(&self) -> std::io::Result<Self> {
- crate::AsSocket::as_socket(self).try_clone_to_owned()
- }
-
- #[cfg(feature = "close")]
- #[cfg(not(target_vendor = "uwp"))]
- fn set_no_inherit(&self) -> std::io::Result<()> {
- match unsafe {
- SetHandleInformation(self.as_raw_socket() as HANDLE, HANDLE_FLAG_INHERIT, 0)
- } {
- 0 => return Err(std::io::Error::last_os_error()),
- _ => Ok(()),
- }
- }
-
- #[cfg(feature = "close")]
- #[cfg(target_vendor = "uwp")]
- fn set_no_inherit(&self) -> std::io::Result<()> {
- Err(std::io::Error::new(
- std::io::ErrorKind::Unsupported,
- "Unavailable on UWP",
- ))
- }
-}
-
-#[cfg(windows)]
-impl BorrowedSocket<'_> {
- /// Creates a new `OwnedSocket` instance that shares the same underlying
- /// object as the existing `BorrowedSocket` instance.
- pub fn try_clone_to_owned(&self) -> std::io::Result<OwnedSocket> {
- #[cfg(feature = "close")]
- {
- let mut info = unsafe { std::mem::zeroed::<WSAPROTOCOL_INFOW>() };
- let result = unsafe {
- WSADuplicateSocketW(self.as_raw_socket() as _, GetCurrentProcessId(), &mut info)
- };
- match result {
- SOCKET_ERROR => return Err(std::io::Error::last_os_error()),
- 0 => (),
- _ => panic!(),
- }
- let socket = unsafe {
- WSASocketW(
- info.iAddressFamily,
- info.iSocketType,
- info.iProtocol,
- &mut info,
- 0,
- WSA_FLAG_OVERLAPPED | WSA_FLAG_NO_HANDLE_INHERIT,
- )
- };
-
- if socket != INVALID_SOCKET {
- unsafe { Ok(OwnedSocket::from_raw_socket(socket as _)) }
- } else {
- let error = unsafe { WSAGetLastError() };
-
- if error != WSAEPROTOTYPE && error != WSAEINVAL {
- return Err(std::io::Error::from_raw_os_error(error));
- }
-
- let socket = unsafe {
- WSASocketW(
- info.iAddressFamily,
- info.iSocketType,
- info.iProtocol,
- &mut info,
- 0,
- WSA_FLAG_OVERLAPPED,
- )
- };
-
- if socket == INVALID_SOCKET {
- return Err(std::io::Error::last_os_error());
- }
-
- unsafe {
- let socket = OwnedSocket::from_raw_socket(socket as _);
- socket.set_no_inherit()?;
- Ok(socket)
- }
- }
- }
-
- // If the `close` feature is disabled, we expect users to avoid cloning
- // `OwnedSocket` instances, so that we don't have to call `fcntl`.
- #[cfg(not(feature = "close"))]
- {
- unreachable!("try_clone called without the \"close\" feature in io-lifetimes");
- }
- }
-}
-
-/// FFI type for handles in return values or out parameters, where `INVALID_HANDLE_VALUE` is used
-/// as a sentry value to indicate errors, such as in the return value of `CreateFileW`. This uses
-/// `repr(transparent)` and has the representation of a host handle, so that it can be used in such
-/// FFI declarations.
-///
-/// The only thing you can usefully do with a `HandleOrInvalid` is to convert it into an
-/// `OwnedHandle` using its [`TryFrom`] implementation; this conversion takes care of the check for
-/// `INVALID_HANDLE_VALUE`. This ensures that such FFI calls cannot start using the handle without
-/// checking for `INVALID_HANDLE_VALUE` first.
-///
-/// This type may hold any handle value that [`OwnedHandle`] may hold, except that when it holds
-/// `-1`, that value is interpreted to mean `INVALID_HANDLE_VALUE`.
-///
-/// If holds a handle other than `INVALID_HANDLE_VALUE`, it will close the handle on drop.
-#[cfg(windows)]
-#[repr(transparent)]
-#[derive(Debug)]
-pub struct HandleOrInvalid(RawHandle);
-
-/// FFI type for handles in return values or out parameters, where `NULL` is used
-/// as a sentry value to indicate errors, such as in the return value of `CreateThread`. This uses
-/// `repr(transparent)` and has the representation of a host handle, so that it can be used in such
-/// FFI declarations.
-///
-/// The only thing you can usefully do with a `HandleOrNull` is to convert it into an
-/// `OwnedHandle` using its [`TryFrom`] implementation; this conversion takes care of the check for
-/// `NULL`. This ensures that such FFI calls cannot start using the handle without
-/// checking for `NULL` first.
-///
-/// This type may hold any handle value that [`OwnedHandle`] may hold. As with `OwnedHandle`, when
-/// it holds `-1`, that value is interpreted as a valid handle value, such as
-/// [the current process handle], and not `INVALID_HANDLE_VALUE`.
-///
-/// If this holds a non-null handle, it will close the handle on drop.
-///
-/// [the current process handle]: https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-getcurrentprocess#remarks
-#[cfg(windows)]
-#[repr(transparent)]
-#[derive(Debug)]
-pub struct HandleOrNull(RawHandle);
-
-// The Windows [`HANDLE`] type may be transferred across and shared between
-// thread boundaries (despite containing a `*mut void`, which in general isn't
-// `Send` or `Sync`).
-//
-// [`HANDLE`]: std::os::windows::raw::HANDLE
-#[cfg(windows)]
-unsafe impl Send for OwnedHandle {}
-#[cfg(windows)]
-unsafe impl Send for HandleOrInvalid {}
-#[cfg(windows)]
-unsafe impl Send for HandleOrNull {}
-#[cfg(windows)]
-unsafe impl Send for BorrowedHandle<'_> {}
-#[cfg(windows)]
-unsafe impl Sync for OwnedHandle {}
-#[cfg(windows)]
-unsafe impl Sync for HandleOrInvalid {}
-#[cfg(windows)]
-unsafe impl Sync for HandleOrNull {}
-#[cfg(windows)]
-unsafe impl Sync for BorrowedHandle<'_> {}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl BorrowedFd<'_> {
- /// Return a `BorrowedFd` holding the given raw file descriptor.
- ///
- /// # Safety
- ///
- /// The resource pointed to by `raw` must remain open for the duration of
- /// the returned `BorrowedFd`, and it must not have the value `-1`.
- #[inline]
- pub const unsafe fn borrow_raw(fd: RawFd) -> Self {
- #[cfg(panic_in_const_fn)]
- debug_assert!(fd != -1_i32 as RawFd);
-
- Self {
- fd,
- _phantom: PhantomData,
- }
- }
-}
-
-#[cfg(windows)]
-impl BorrowedHandle<'_> {
- /// Return a `BorrowedHandle` holding the given raw handle.
- ///
- /// # Safety
- ///
- /// The resource pointed to by `handle` must be a valid open handle, it
- /// must remain open for the duration of the returned `BorrowedHandle`.
- ///
- /// Note that it *may* have the value `INVALID_HANDLE_VALUE` (-1), which is
- /// sometimes a valid handle value. See [here] for the full story.
- ///
- /// And, it *may* have the value `NULL` (0), which can occur when consoles are
- /// detached from processes, or when `windows_subsystem` is used.
- ///
- /// [here]: https://devblogs.microsoft.com/oldnewthing/20040302-00/?p=40443
- #[inline]
- pub const unsafe fn borrow_raw(handle: RawHandle) -> Self {
- Self {
- handle,
- _phantom: PhantomData,
- }
- }
-}
-
-#[cfg(windows)]
-impl BorrowedSocket<'_> {
- /// Return a `BorrowedSocket` holding the given raw socket.
- ///
- /// # Safety
- ///
- /// The resource pointed to by `raw` must remain open for the duration of
- /// the returned `BorrowedSocket`, and it must not have the value
- /// [`INVALID_SOCKET`].
- #[inline]
- pub const unsafe fn borrow_raw(socket: RawSocket) -> Self {
- #[cfg(panic_in_const_fn)]
- debug_assert!(socket != INVALID_SOCKET as RawSocket);
- Self {
- socket,
- _phantom: PhantomData,
- }
- }
-}
-
-#[cfg(windows)]
-impl TryFrom<HandleOrInvalid> for OwnedHandle {
- type Error = InvalidHandleError;
-
- #[inline]
- fn try_from(handle_or_invalid: HandleOrInvalid) -> Result<Self, InvalidHandleError> {
- let raw = handle_or_invalid.0;
- if raw as HANDLE == INVALID_HANDLE_VALUE {
- // Don't call `CloseHandle`; it'd be harmless, except that it could
- // overwrite the `GetLastError` error.
- forget(handle_or_invalid);
-
- Err(InvalidHandleError(()))
- } else {
- Ok(OwnedHandle { handle: raw })
- }
- }
-}
-
-#[cfg(windows)]
-impl TryFrom<HandleOrNull> for OwnedHandle {
- type Error = NullHandleError;
-
- #[inline]
- fn try_from(handle_or_null: HandleOrNull) -> Result<Self, NullHandleError> {
- let raw = handle_or_null.0;
- if raw.is_null() {
- // Don't call `CloseHandle`; it'd be harmless, except that it could
- // overwrite the `GetLastError` error.
- forget(handle_or_null);
-
- Err(NullHandleError(()))
- } else {
- Ok(OwnedHandle { handle: raw })
- }
- }
-}
-
-/// This is the error type used by [`HandleOrNull`] when attempting to convert
-/// into a handle, to indicate that the value is null.
-#[derive(Debug, Clone, PartialEq, Eq)]
-pub struct NullHandleError(());
-
-impl fmt::Display for NullHandleError {
- fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
- "A HandleOrNull could not be converted to a handle because it was null".fmt(fmt)
- }
-}
-
-impl std::error::Error for NullHandleError {}
-
-/// This is the error type used by [`HandleOrInvalid`] when attempting to
-/// convert into a handle, to indicate that the value is
-/// `INVALID_HANDLE_VALUE`.
-#[derive(Debug, Clone, PartialEq, Eq)]
-pub struct InvalidHandleError(());
-
-impl fmt::Display for InvalidHandleError {
- fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
- "A HandleOrInvalid could not be converted to a handle because it was INVALID_HANDLE_VALUE"
- .fmt(fmt)
- }
-}
-
-impl std::error::Error for InvalidHandleError {}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl AsRawFd for BorrowedFd<'_> {
- #[inline]
- fn as_raw_fd(&self) -> RawFd {
- self.fd
- }
-}
-
-#[cfg(windows)]
-impl AsRawHandle for BorrowedHandle<'_> {
- #[inline]
- fn as_raw_handle(&self) -> RawHandle {
- self.handle
- }
-}
-
-#[cfg(windows)]
-impl AsRawSocket for BorrowedSocket<'_> {
- #[inline]
- fn as_raw_socket(&self) -> RawSocket {
- self.socket
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl AsRawFd for OwnedFd {
- #[inline]
- fn as_raw_fd(&self) -> RawFd {
- self.fd
- }
-}
-
-#[cfg(windows)]
-impl AsRawHandle for OwnedHandle {
- #[inline]
- fn as_raw_handle(&self) -> RawHandle {
- self.handle
- }
-}
-
-#[cfg(windows)]
-impl AsRawSocket for OwnedSocket {
- #[inline]
- fn as_raw_socket(&self) -> RawSocket {
- self.socket
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl IntoRawFd for OwnedFd {
- #[inline]
- fn into_raw_fd(self) -> RawFd {
- let fd = self.fd;
- forget(self);
- fd
- }
-}
-
-#[cfg(windows)]
-impl IntoRawHandle for OwnedHandle {
- #[inline]
- fn into_raw_handle(self) -> RawHandle {
- let handle = self.handle;
- forget(self);
- handle
- }
-}
-
-#[cfg(windows)]
-impl IntoRawSocket for OwnedSocket {
- #[inline]
- fn into_raw_socket(self) -> RawSocket {
- let socket = self.socket;
- forget(self);
- socket
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl FromRawFd for OwnedFd {
- /// Constructs a new instance of `Self` from the given raw file descriptor.
- ///
- /// # Safety
- ///
- /// The resource pointed to by `raw` must be open and suitable for assuming
- /// ownership.
- #[inline]
- unsafe fn from_raw_fd(fd: RawFd) -> Self {
- debug_assert_ne!(fd, -1_i32 as RawFd);
- Self { fd }
- }
-}
-
-#[cfg(windows)]
-impl FromRawHandle for OwnedHandle {
- #[inline]
- unsafe fn from_raw_handle(handle: RawHandle) -> Self {
- Self { handle }
- }
-}
-
-#[cfg(windows)]
-impl FromRawSocket for OwnedSocket {
- #[inline]
- unsafe fn from_raw_socket(socket: RawSocket) -> Self {
- debug_assert_ne!(socket, INVALID_SOCKET as RawSocket);
- Self { socket }
- }
-}
-
-#[cfg(windows)]
-impl HandleOrInvalid {
- /// Constructs a new instance of `Self` from the given `RawHandle` returned
- /// from a Windows API that uses `INVALID_HANDLE_VALUE` to indicate
- /// failure, such as `CreateFileW`.
- ///
- /// Use `HandleOrNull` instead of `HandleOrInvalid` for APIs that
- /// use null to indicate failure.
- ///
- /// # Safety
- ///
- /// The passed `handle` value must either satisfy the safety requirements
- /// of [`FromRawHandle::from_raw_handle`], or be
- /// `INVALID_HANDLE_VALUE` (-1). Note that not all Windows APIs use
- /// `INVALID_HANDLE_VALUE` for errors; see [here] for the full story.
- ///
- /// [here]: https://devblogs.microsoft.com/oldnewthing/20040302-00/?p=40443
- #[inline]
- pub unsafe fn from_raw_handle(handle: RawHandle) -> Self {
- Self(handle)
- }
-}
-
-#[cfg(windows)]
-impl HandleOrNull {
- /// Constructs a new instance of `Self` from the given `RawHandle` returned
- /// from a Windows API that uses null to indicate failure, such as
- /// `CreateThread`.
- ///
- /// Use `HandleOrInvalid` instead of `HandleOrNull` for APIs that
- /// use `INVALID_HANDLE_VALUE` to indicate failure.
- ///
- /// # Safety
- ///
- /// The passed `handle` value must either satisfy the safety requirements
- /// of [`FromRawHandle::from_raw_handle`], or be null. Note that not all
- /// Windows APIs use null for errors; see [here] for the full story.
- ///
- /// [here]: https://devblogs.microsoft.com/oldnewthing/20040302-00/?p=40443
- #[inline]
- pub unsafe fn from_raw_handle(handle: RawHandle) -> Self {
- Self(handle)
- }
-}
-
-#[cfg(any(unix, target_os = "wasi"))]
-impl Drop for OwnedFd {
- #[inline]
- fn drop(&mut self) {
- #[cfg(feature = "close")]
- unsafe {
- let _ = libc::close(self.fd as std::os::raw::c_int);
- }
-
- // If the `close` feature is disabled, we expect users to avoid letting
- // `OwnedFd` instances drop, so that we don't have to call `close`.
- #[cfg(not(feature = "close"))]
- {
- unreachable!("drop called without the \"close\" feature in io-lifetimes");
- }
- }
-}
-
-#[cfg(target_os = "hermit")]
-impl Drop for OwnedFd {
- #[inline]
- fn drop(&mut self) {
- #[cfg(feature = "close")]
- unsafe {
- let _ = hermit_abi::close(self.fd);
- }
-
- // If the `close` feature is disabled, we expect users to avoid letting
- // `OwnedFd` instances drop, so that we don't have to call `close`.
- #[cfg(not(feature = "close"))]
- {
- unreachable!("drop called without the \"close\" feature in io-lifetimes");
- }
- }
-}
-
-#[cfg(windows)]
-impl Drop for OwnedHandle {
- #[inline]
- fn drop(&mut self) {
- #[cfg(feature = "close")]
- unsafe {
- let _ = CloseHandle(self.handle as HANDLE);
- }
-
- // If the `close` feature is disabled, we expect users to avoid letting
- // `OwnedHandle` instances drop, so that we don't have to call `close`.
- #[cfg(not(feature = "close"))]
- {
- unreachable!("drop called without the \"close\" feature in io-lifetimes");
- }
- }
-}
-
-#[cfg(windows)]
-impl Drop for HandleOrInvalid {
- #[inline]
- fn drop(&mut self) {
- #[cfg(feature = "close")]
- unsafe {
- let _ = CloseHandle(self.0 as HANDLE);
- }
-
- // If the `close` feature is disabled, we expect users to avoid letting
- // `HandleOrInvalid` instances drop, so that we don't have to call `close`.
- #[cfg(not(feature = "close"))]
- {
- unreachable!("drop called without the \"close\" feature in io-lifetimes");
- }
- }
-}
-
-#[cfg(windows)]
-impl Drop for HandleOrNull {
- #[inline]
- fn drop(&mut self) {
- #[cfg(feature = "close")]
- unsafe {
- let _ = CloseHandle(self.0 as HANDLE);
- }
-
- // If the `close` feature is disabled, we expect users to avoid letting
- // `HandleOrNull` instances drop, so that we don't have to call `close`.
- #[cfg(not(feature = "close"))]
- {
- unreachable!("drop called without the \"close\" feature in io-lifetimes");
- }
- }
-}
-
-#[cfg(windows)]
-impl Drop for OwnedSocket {
- #[inline]
- fn drop(&mut self) {
- #[cfg(feature = "close")]
- unsafe {
- let _ = closesocket(self.socket as SOCKET);
- }
-
- // If the `close` feature is disabled, we expect users to avoid letting
- // `OwnedSocket` instances drop, so that we don't have to call `close`.
- #[cfg(not(feature = "close"))]
- {
- unreachable!("drop called without the \"close\" feature in io-lifetimes");
- }
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl fmt::Debug for BorrowedFd<'_> {
- #[allow(clippy::missing_inline_in_public_items)]
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.debug_struct("BorrowedFd").field("fd", &self.fd).finish()
- }
-}
-
-#[cfg(windows)]
-impl fmt::Debug for BorrowedHandle<'_> {
- #[allow(clippy::missing_inline_in_public_items)]
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.debug_struct("BorrowedHandle")
- .field("handle", &self.handle)
- .finish()
- }
-}
-
-#[cfg(windows)]
-impl fmt::Debug for BorrowedSocket<'_> {
- #[allow(clippy::missing_inline_in_public_items)]
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.debug_struct("BorrowedSocket")
- .field("socket", &self.socket)
- .finish()
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-impl fmt::Debug for OwnedFd {
- #[allow(clippy::missing_inline_in_public_items)]
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.debug_struct("OwnedFd").field("fd", &self.fd).finish()
- }
-}
-
-#[cfg(windows)]
-impl fmt::Debug for OwnedHandle {
- #[allow(clippy::missing_inline_in_public_items)]
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.debug_struct("OwnedHandle")
- .field("handle", &self.handle)
- .finish()
- }
-}
-
-#[cfg(windows)]
-impl fmt::Debug for OwnedSocket {
- #[allow(clippy::missing_inline_in_public_items)]
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.debug_struct("OwnedSocket")
- .field("socket", &self.socket)
- .finish()
- }
-}
diff --git a/vendor/io-lifetimes/src/views.rs b/vendor/io-lifetimes/src/views.rs
deleted file mode 100644
index 86315da08..000000000
--- a/vendor/io-lifetimes/src/views.rs
+++ /dev/null
@@ -1,277 +0,0 @@
-//! Typed views using temporary objects.
-//!
-//! This module defines the return types for [`AsFilelike::as_filelike_view`]
-//! and [`AsSocketlike::as_socketlike_view`].
-//!
-//! [`AsSocketlike::as_socketlike_view`]: crate::AsSocketlike::as_socketlike_view
-
-use crate::raw::{
- AsRawFilelike, AsRawSocketlike, FromRawFilelike, FromRawSocketlike, IntoRawFilelike,
- IntoRawSocketlike, RawFilelike, RawSocketlike,
-};
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-use crate::OwnedFd;
-use crate::{
- AsFilelike, AsSocketlike, FromFilelike, FromSocketlike, IntoFilelike, IntoSocketlike,
- OwnedFilelike, OwnedSocketlike,
-};
-#[cfg(windows)]
-use crate::{OwnedHandle, OwnedSocket};
-use std::fmt;
-use std::marker::PhantomData;
-use std::mem::ManuallyDrop;
-use std::ops::Deref;
-
-/// Declare that a type is safe to use in a [`FilelikeView`].
-///
-/// # Safety
-///
-/// Types implementing this trait declare that if they are constructed with
-/// [`FromFilelike`] and consumed with [`IntoFilelike`], their `IntoFilelike`
-/// will return the same `OwnedFd` value that was passed to their
-/// `FromFilelike`.
-pub unsafe trait FilelikeViewType: FromFilelike + IntoFilelike {}
-
-/// Declare that a type is safe to use in a [`SocketlikeView`].
-///
-/// # Safety
-///
-/// Types implementing this trait declare that if they are constructed with
-/// [`FromSocketlike`] and consumed with [`IntoSocketlike`], their
-/// `IntoSocketlike` will return the same `OwnedFd` value that was passed to
-/// their `FromSocketlike`.
-pub unsafe trait SocketlikeViewType: FromSocketlike + IntoSocketlike {}
-
-/// A non-owning view of a resource which dereferences to a `&Target` or
-/// `&mut Target`. These are returned by [`AsFilelike::as_filelike_view`].
-pub struct FilelikeView<'filelike, Target: FilelikeViewType> {
- /// The value to dereference to. This is a `ManuallyDrop` so that we can
- /// consume it in our `Drop` impl.
- target: ManuallyDrop<Target>,
-
- /// `FilelikeViewType` implementors guarantee that their `Into<OwnedFd>`
- /// returns the same fd as their `From<OwnedFd>` gave them. This field
- /// allows us to verify this.
- #[cfg(debug_assertions)]
- orig: RawFilelike,
-
- /// This field exists because we don't otherwise explicitly use
- /// `'filelike`.
- _phantom: PhantomData<&'filelike OwnedFilelike>,
-}
-
-/// A non-owning view of a resource which dereferences to a `&Target` or
-/// `&mut Target`. These are returned by [`AsSocketlike::as_socketlike_view`].
-pub struct SocketlikeView<'socketlike, Target: SocketlikeViewType> {
- /// The value to dereference to. This is a `ManuallyDrop` so that we can
- /// consume it in our `Drop` impl.
- target: ManuallyDrop<Target>,
-
- /// `SocketlikeViewType` implementors guarantee that their `Into<OwnedFd>`
- /// returns the same fd as their `From<OwnedFd>` gave them. This field
- /// allows us to verify this.
- #[cfg(debug_assertions)]
- orig: RawSocketlike,
-
- /// This field exists because we don't otherwise explicitly use
- /// `'socketlike`.
- _phantom: PhantomData<&'socketlike OwnedSocketlike>,
-}
-
-impl<Target: FilelikeViewType> FilelikeView<'_, Target> {
- /// Construct a temporary `Target` and wrap it in a `FilelikeView` object.
- #[inline]
- pub(crate) fn new<T: AsFilelike>(filelike: &T) -> Self {
- // Safety: The returned `FilelikeView` is scoped to the lifetime of
- // `filelike`, which we've borrowed here, so the view won't outlive
- // the object it's borrowed from.
- unsafe { Self::view_raw(filelike.as_filelike().as_raw_filelike()) }
- }
-
- /// Construct a temporary `Target` from raw and wrap it in a `FilelikeView`
- /// object.
- ///
- /// # Safety
- ///
- /// `raw` must be a valid raw filelike referencing a resource that outlives
- /// the resulting view.
- #[inline]
- pub unsafe fn view_raw(raw: RawFilelike) -> Self {
- let owned = OwnedFilelike::from_raw_filelike(raw);
- Self {
- target: ManuallyDrop::new(Target::from_filelike(owned)),
- #[cfg(debug_assertions)]
- orig: raw,
- _phantom: PhantomData,
- }
- }
-}
-
-impl<Target: SocketlikeViewType> SocketlikeView<'_, Target> {
- /// Construct a temporary `Target` and wrap it in a `SocketlikeView`
- /// object.
- #[inline]
- pub(crate) fn new<T: AsSocketlike>(socketlike: &T) -> Self {
- // Safety: The returned `SocketlikeView` is scoped to the lifetime of
- // `socketlike`, which we've borrowed here, so the view won't outlive
- // the object it's borrowed from.
- unsafe { Self::view_raw(socketlike.as_socketlike().as_raw_socketlike()) }
- }
-
- /// Construct a temporary `Target` from raw and wrap it in a
- /// `SocketlikeView` object.
- ///
- /// # Safety
- ///
- /// `raw` must be a valid raw socketlike referencing a resource that
- /// outlives the resulting view.
- #[inline]
- pub unsafe fn view_raw(raw: RawSocketlike) -> Self {
- let owned = OwnedSocketlike::from_raw_socketlike(raw);
- Self {
- target: ManuallyDrop::new(Target::from_socketlike(owned)),
- #[cfg(debug_assertions)]
- orig: raw,
- _phantom: PhantomData,
- }
- }
-}
-
-impl<Target: FilelikeViewType> Deref for FilelikeView<'_, Target> {
- type Target = Target;
-
- #[inline]
- fn deref(&self) -> &Self::Target {
- &self.target
- }
-}
-
-impl<Target: SocketlikeViewType> Deref for SocketlikeView<'_, Target> {
- type Target = Target;
-
- #[inline]
- fn deref(&self) -> &Self::Target {
- &self.target
- }
-}
-
-impl<Target: FilelikeViewType> Drop for FilelikeView<'_, Target> {
- #[inline]
- fn drop(&mut self) {
- // Use `Into*` to consume `self.target` without freeing its resource.
- //
- // Safety: Using `ManuallyDrop::take` requires us to ensure that
- // `self.target` is not used again. We don't use it again here, and
- // this is the `drop` function, so we know it's not used afterward.
- let _raw = unsafe { ManuallyDrop::take(&mut self.target) }
- .into_filelike()
- .into_raw_filelike();
-
- #[cfg(debug_assertions)]
- debug_assert_eq!(self.orig, _raw);
- }
-}
-
-impl<Target: SocketlikeViewType> Drop for SocketlikeView<'_, Target> {
- #[inline]
- fn drop(&mut self) {
- // Use `Into*` to consume `self.target` without freeing its resource.
- //
- // Safety: Using `ManuallyDrop::take` requires us to ensure that
- // `self.target` is not used again. We don't use it again here, and
- // this is the `drop` function, so we know it's not used afterward.
- let _raw = unsafe { ManuallyDrop::take(&mut self.target) }
- .into_socketlike()
- .into_raw_socketlike();
-
- #[cfg(debug_assertions)]
- debug_assert_eq!(self.orig, _raw);
- }
-}
-
-impl<Target: FilelikeViewType> fmt::Debug for FilelikeView<'_, Target> {
- #[allow(clippy::missing_inline_in_public_items)]
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.debug_struct("FilelikeView")
- .field("target", &*self)
- .finish()
- }
-}
-
-impl<Target: SocketlikeViewType> fmt::Debug for SocketlikeView<'_, Target> {
- #[allow(clippy::missing_inline_in_public_items)]
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.debug_struct("SocketlikeView")
- .field("target", &*self)
- .finish()
- }
-}
-
-#[cfg(any(unix, target_os = "wasi", target_os = "hermit"))]
-unsafe impl FilelikeViewType for OwnedFd {}
-#[cfg(windows)]
-unsafe impl FilelikeViewType for OwnedHandle {}
-#[cfg(windows)]
-unsafe impl SocketlikeViewType for OwnedSocket {}
-unsafe impl FilelikeViewType for std::fs::File {}
-unsafe impl SocketlikeViewType for std::net::TcpStream {}
-unsafe impl SocketlikeViewType for std::net::TcpListener {}
-unsafe impl SocketlikeViewType for std::net::UdpSocket {}
-#[cfg(unix)]
-unsafe impl SocketlikeViewType for std::os::unix::net::UnixStream {}
-#[cfg(unix)]
-unsafe impl SocketlikeViewType for std::os::unix::net::UnixListener {}
-
-#[cfg(unix)]
-unsafe impl SocketlikeViewType for std::os::unix::net::UnixDatagram {}
-#[cfg(not(any(target_os = "wasi", target_os = "hermit")))]
-#[cfg(feature = "os_pipe")]
-unsafe impl FilelikeViewType for os_pipe::PipeWriter {}
-#[cfg(not(any(target_os = "wasi", target_os = "hermit")))]
-#[cfg(feature = "os_pipe")]
-unsafe impl FilelikeViewType for os_pipe::PipeReader {}
-
-#[cfg(not(any(target_os = "wasi", target_os = "hermit")))]
-#[cfg(feature = "socket2")]
-unsafe impl SocketlikeViewType for socket2::Socket {}
-
-#[cfg(not(any(target_os = "wasi", target_os = "hermit")))]
-#[cfg(feature = "async_std")]
-unsafe impl SocketlikeViewType for async_std::net::TcpStream {}
-#[cfg(not(any(target_os = "wasi", target_os = "hermit")))]
-#[cfg(feature = "async_std")]
-unsafe impl SocketlikeViewType for async_std::net::TcpListener {}
-#[cfg(not(any(target_os = "wasi", target_os = "hermit")))]
-#[cfg(feature = "async_std")]
-unsafe impl SocketlikeViewType for async_std::net::UdpSocket {}
-#[cfg(unix)]
-#[cfg(feature = "async_std")]
-unsafe impl SocketlikeViewType for async_std::os::unix::net::UnixStream {}
-#[cfg(unix)]
-#[cfg(feature = "async_std")]
-unsafe impl SocketlikeViewType for async_std::os::unix::net::UnixListener {}
-#[cfg(unix)]
-#[cfg(feature = "async_std")]
-unsafe impl SocketlikeViewType for async_std::os::unix::net::UnixDatagram {}
-
-#[cfg(feature = "mio")]
-unsafe impl SocketlikeViewType for mio::net::TcpStream {}
-#[cfg(feature = "mio")]
-unsafe impl SocketlikeViewType for mio::net::TcpListener {}
-#[cfg(feature = "mio")]
-unsafe impl SocketlikeViewType for mio::net::UdpSocket {}
-#[cfg(unix)]
-#[cfg(feature = "mio")]
-unsafe impl SocketlikeViewType for mio::net::UnixDatagram {}
-#[cfg(unix)]
-#[cfg(feature = "mio")]
-unsafe impl SocketlikeViewType for mio::net::UnixListener {}
-#[cfg(unix)]
-#[cfg(feature = "mio")]
-unsafe impl SocketlikeViewType for mio::net::UnixStream {}
-#[cfg(unix)]
-#[cfg(feature = "mio")]
-unsafe impl FilelikeViewType for mio::unix::pipe::Receiver {}
-#[cfg(unix)]
-#[cfg(feature = "mio")]
-unsafe impl FilelikeViewType for mio::unix::pipe::Sender {}
diff --git a/vendor/itertools-0.10.5/.cargo-checksum.json b/vendor/itertools-0.10.5/.cargo-checksum.json
new file mode 100644
index 000000000..a4f2873c5
--- /dev/null
+++ b/vendor/itertools-0.10.5/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"CHANGELOG.md":"ed6c781d541c40d4a19eaecd794cadebb94b3f4d51e32367803542c88f0457ee","Cargo.toml":"6dcbab25126c0cdf64f5089156de0d4346914c6d47c557d370b8e20e039ca7d3","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7576269ea71f767b99297934c0b2367532690f8c4badc695edf8e04ab6a1e545","README.md":"3acfeb07424200ae70bf571ef63a96bae954c298bddf447c9bea0ea9394825cc","benches/bench1.rs":"bb06f39db0544b1380cd4929139ccf521a9eecab7ca3f910b9499f965ec0a047","benches/combinations.rs":"51523ee1ca438a56f14711f0b04ee943895062d35859fbe23a2714d2fca3289d","benches/combinations_with_replacement.rs":"11f29160652a2d90ce7ca4b1c339c4457888ab6867e2456ce1c62e3adf9be737","benches/extra/mod.rs":"6ca290d72302a1945078621610b5788060b0de29639decebbdc557a80044aa97","benches/extra/zipslices.rs":"40e9f68a7c00f8429193fca463caef18851fa49b33355cc136bad3ccc840d655","benches/fold_specialization.rs":"5a517bbe29d366a15f6f751660e17ab1aa3e7b21552a1983048c662e34f0d69e","benches/powerset.rs":"6fd9d69a3483b37dc2411f99fb4efa6131577696f2dbdc8d1de9e4d7642fe3a3","benches/tree_fold1.rs":"539232e74f9aaea295a42069ac5af707811e90dc1c71c6e0a9064ffc731999de","benches/tuple_combinations.rs":"16366158743307a0289fc1df423a3cec45009807d410a9fe9922d5b6f8b7d002","benches/tuples.rs":"5a620783ae203e9ff9623d10d2c7fe9911d8b6c811cbad7613afa30e390c759d","clippy.toml":"33ffb83bbddb772575b3aa565b7136a8158ee386c216ffc2588fed9e83fa3826","examples/iris.data":"596ffd580471ca4d4880f8e439c7281f3b50d8249a5960353cb200b1490f63a0","examples/iris.rs":"1b465ed6a417180913104bc95a545fd9d1a3d67d121871ab737ad87e31b8be37","src/adaptors/coalesce.rs":"a0073325d40f297d29101538d18a267aef81889a999338dc09cb43a31cb4ec8b","src/adaptors/map.rs":"241971e856e468d71323071fb4a09867fbcedb83877320be132dc03516fe60e8","src/adaptors/mod.rs":"7f3bd7d011a348ce5e4bea486ef2e6346b64c7fe27540334d56d3f147f981d59","src/adaptors/multi_product.rs":"bb43e6dce68c815c21006d5b01c56e038d54b0c3bb8ee6bb8a4de11e2952c7ad","src/combinations.rs":"fb25babb459389093f886721016c72bf9f00e51d02735f638d871bb3a447ffd0","src/combinations_with_replacement.rs":"463011a574facbdd84278386b533a90e4dd517f0417e05adb82d182049db1f50","src/concat_impl.rs":"03b1ed61cbed242c286c3c4c5c848dbd57e02ab83fcef264f3a592b58107f324","src/cons_tuples_impl.rs":"c253d03b861831c01d62cacc57b49715ee62f6171e69f6886bb5a6ca0863bc3a","src/diff.rs":"a7800e9ce7a87b53ebe2338481335751fb43d44fa6a1ca719aceaaab40e5c8fe","src/duplicates_impl.rs":"f62fe4b642f501f785721ce5a505cf622a771e457210726dd0fb8b30be7ebbbc","src/either_or_both.rs":"76b13fbfac6bc959b4c1d8b7c99ce51726e95f994ca5429477e523a3d3950e4a","src/exactly_one_err.rs":"aa50081f6a31b5109b30e3ed305e3ec2413c6908dedc8990ec5378a99cee2b39","src/extrema_set.rs":"2a25b0b86eed2fd5d05622d591a3085cab823973d450816c2c3b8cb76e9c187e","src/flatten_ok.rs":"fe209fd886ecd9cb98d99625aa0c7274af7e644eff4a10de15b4dec8bbbc934a","src/format.rs":"a8192d85c0f9de8e633c202456e3cde0f3bc50f19b6bd8a4b2cfa3ef5123de1a","src/free.rs":"dfc57b7f56a08d4986a96b679018b41346576a7a34b668e008cc01109e728750","src/group_map.rs":"f7b02c964f63505d3e36280cfdc1755e05287714201efe983dacf702eee61434","src/groupbylazy.rs":"4f2181c022a45ff8444597708861fc6863eceb6f7555ea81cf3eeba19b492971","src/grouping_map.rs":"cbc45ac563345c96f3ac50c78f73c83d870523436a7ab88c1c9a685d204461d3","src/impl_macros.rs":"4f829b458873bed556f1aff2ae4e88dbd576766e2b5bcc07ff3ac8756758e6f4","src/intersperse.rs":"b9717242495846a4a979c95d93d5681caccb7c07a0d889eab763ad3d49a46125","src/k_smallest.rs":"603eb34314c01769ff7f6def2a24cf7a7b38507e6f3658b7aafc23a3b2e9b322","src/kmerge_impl.rs":"a347b0f6fa7715afd8a54d85ce139ed5b14c9e58a16c2b3648f5b288fdb5375f","src/lazy_buffer.rs":"834f6ef7fdf9f00c8a6329beb38eaefb706847ceeec309c221dce705c2c1e05b","src/lib.rs":"fadb0045279aafe8e8cccb45fadc383c7b358197b83c9c38fba87ada4cb2f84a","src/merge_join.rs":"1016113f6c983a9498bae5dc0570190437e1357b3333f6e19ea95c88599a1225","src/minmax.rs":"96d3897c28c8c63284d4729becc9ada6855e0953cac6e1bd35cf6f38c50b0ec0","src/multipeek_impl.rs":"35162bca4456bfa20a08e8d40e4d1cc6783dc662778789fdcded60371e975122","src/pad_tail.rs":"04be2ca73abb85815b06b5524c99d6feb2919180c486a4646f9cc6c87462f67b","src/peek_nth.rs":"6a0a51f2f373ce14d3d58595c46464878a14976bf00841a7396c03f9f9ab07ac","src/peeking_take_while.rs":"2b1b77c8882be32cfd76e973d303aa62f73370efd470c60764add0cdcca524d5","src/permutations.rs":"97831e7e26904c3cae68c97e74f7c6981ceb2fb2f2217282a0e5e54083a565fc","src/powerset.rs":"e0ee6b1316b4dd314c1e81502b90ae8113e1cda12168322520c5a65410e584b2","src/process_results_impl.rs":"9ed7fa46c8316238272ef47577387a386c1a109b50377dd3caf4291b6587cb73","src/put_back_n_impl.rs":"821e047fecd6ca0036290029f4febe7638a3abf1faa05e1e747a3bf9d80ff464","src/rciter_impl.rs":"5b156082ef2d25a94a4ad01d94cba2813c4b3e72e212515a8ad0fc8588f8045d","src/repeatn.rs":"bfc8f9145c9d8a3ea651f012b7d5a8d2fbbcbefdee76eafd098d02e7c54cda90","src/size_hint.rs":"021e57aad7df8f1e70ef588e9e9b8a1695aab183b1098f1848561f96c5dc9bcb","src/sources.rs":"61637f32c2cea2290ecfc1980c0b2d0f68463839ac09bd81006f8258ab8ecaae","src/tee.rs":"665832aa547389a420c3441470ff2494249f0ed2841be0c6a578367fe9dbd381","src/tuple_impl.rs":"00a9b61942425fb477b9691c3348646c0f9f534ff94f6321027f38c61ce2478c","src/unique_impl.rs":"3b89cdd668b74cc0a0eabb1522489e2305a0d2d8da25d6a1884e8626bbdb5959","src/unziptuple.rs":"84b50e5d29b9ddbf21a46a1cc2fd7877729c7f7da9bdc8ae1966dbaf2d2f6f60","src/with_position.rs":"c8a9b3476b3b90986b004a8877c19ff54b4c6800c5ac7ca1458d914036dacfe9","src/zip_eq_impl.rs":"4a41dc6dfe99359585d50ce648bdc85f15276c602048872b1d152e90841d8cad","src/zip_longest.rs":"f7cf5fffc3ca053ee80b410a05b27de1a475021f6de3181aea981010d7e8453f","src/ziptuple.rs":"7f9df12bf6556f382bbd4ad8cf17eb8b60c1c47fadbce016141133ba0f3384a1","tests/adaptors_no_collect.rs":"f459f36d54f5d475b2b2e83f5a1c98109c15062756ae822fa379486f3eeed666","tests/flatten_ok.rs":"b7894874132918b8229c7150b2637511d8e3e14197d8eeb9382d46b2a514efa2","tests/macros_hygiene.rs":"522afa0106e3f11a5149e9218f89c2329e405546d2ef0ea756d6a27e8a0e9ca3","tests/merge_join.rs":"b08c4ee6529d234c68d411a413b8781455d18a1eab17872d1828bb75a4fcf79b","tests/peeking_take_while.rs":"4b1c394e44a9ef9bc0de707ae080b45803db722f79834c20f15b826d7c3f1f2e","tests/quick.rs":"6fcc0649b9270f024b169b1f499dd4cc7fecb0c9aec0dfc155b264916cc626e7","tests/specializations.rs":"fdd16dc663330033fedcc478609b393d4aa369dc07dc8cda31a75219fb793087","tests/test_core.rs":"32576ba90aa8e5db985b6e6ffe30e3046bc6a11d392db8f6b4bdd2ba48d9b24d","tests/test_std.rs":"f28a78a1912c950e7c37be1e82867e70dc585d60afecdebc7a97965194eee8e6","tests/tuples.rs":"014e4da776174bfe923270e2a359cd9c95b372fce4b952b8138909d6e2c52762","tests/zip.rs":"99af365fe6054ef1c6089d3e604e34da8fea66e55861ae4be9e7336ec8de4b56"},"package":"b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"} \ No newline at end of file
diff --git a/vendor/itertools-0.10.5/CHANGELOG.md b/vendor/itertools-0.10.5/CHANGELOG.md
new file mode 100644
index 000000000..d2b40b5db
--- /dev/null
+++ b/vendor/itertools-0.10.5/CHANGELOG.md
@@ -0,0 +1,380 @@
+# Changelog
+
+## 0.10.4
+ - Add `EitherOrBoth::or` and `EitherOrBoth::or_else` (#593)
+ - Add `min_set`, `max_set` et al. (#613, #323)
+ - Use `either/use_std` (#628)
+ - Documentation fixes (#612, #625, #632, #633, #634, #638)
+ - Code maintenance (#623, #624, #627, #630)
+
+## 0.10.2
+ - Add `Itertools::multiunzip` (#362, #565)
+ - Add `intersperse` and `intersperse_with` free functions (#555)
+ - Add `Itertools::sorted_by_cached_key` (#424, #575)
+ - Specialize `ProcessResults::fold` (#563)
+ - Fix subtraction overflow in `DuplicatesBy::size_hint` (#552)
+ - Fix specialization tests (#574)
+ - More `Debug` impls (#573)
+ - Deprecate `fold1` (use `reduce` instead) (#580)
+ - Documentation fixes (`HomogenousTuple`, `into_group_map`, `into_group_map_by`, `MultiPeek::peek`) (#543 et al.)
+
+## 0.10.1
+ - Add `Itertools::contains` (#514)
+ - Add `Itertools::counts_by` (#515)
+ - Add `Itertools::partition_result` (#511)
+ - Add `Itertools::all_unique` (#241)
+ - Add `Itertools::duplicates` and `Itertools::duplicates_by` (#502)
+ - Add `chain!` (#525)
+ - Add `Itertools::at_most_one` (#523)
+ - Add `Itertools::flatten_ok` (#527)
+ - Add `EitherOrBoth::or_default` (#583)
+ - Add `Itertools::find_or_last` and `Itertools::find_or_first` (#535)
+ - Implement `FusedIterator` for `FilterOk`, `FilterMapOk`, `InterleaveShortest`, `KMergeBy`, `MergeBy`, `PadUsing`, `Positions`, `Product` , `RcIter`, `TupleWindows`, `Unique`, `UniqueBy`, `Update`, `WhileSome`, `Combinations`, `CombinationsWithReplacement`, `Powerset`, `RepeatN`, and `WithPosition` (#550)
+ - Implement `FusedIterator` for `Interleave`, `IntersperseWith`, and `ZipLongest` (#548)
+
+## 0.10.0
+ - **Increase minimum supported Rust version to 1.32.0**
+ - Improve macro hygiene (#507)
+ - Add `Itertools::powerset` (#335)
+ - Add `Itertools::sorted_unstable`, `Itertools::sorted_unstable_by`, and `Itertools::sorted_unstable_by_key` (#494)
+ - Implement `Error` for `ExactlyOneError` (#484)
+ - Undeprecate `Itertools::fold_while` (#476)
+ - Tuple-related adapters work for tuples of arity up to 12 (#475)
+ - `use_alloc` feature for users who have `alloc`, but not `std` (#474)
+ - Add `Itertools::k_smallest` (#473)
+ - Add `Itertools::into_grouping_map` and `GroupingMap` (#465)
+ - Add `Itertools::into_grouping_map_by` and `GroupingMapBy` (#465)
+ - Add `Itertools::counts` (#468)
+ - Add implementation of `DoubleEndedIterator` for `Unique` (#442)
+ - Add implementation of `DoubleEndedIterator` for `UniqueBy` (#442)
+ - Add implementation of `DoubleEndedIterator` for `Zip` (#346)
+ - Add `Itertools::multipeek` (#435)
+ - Add `Itertools::dedup_with_count` and `DedupWithCount` (#423)
+ - Add `Itertools::dedup_by_with_count` and `DedupByWithCount` (#423)
+ - Add `Itertools::intersperse_with` and `IntersperseWith` (#381)
+ - Add `Itertools::filter_ok` and `FilterOk` (#377)
+ - Add `Itertools::filter_map_ok` and `FilterMapOk` (#377)
+ - Deprecate `Itertools::fold_results`, use `Itertools::fold_ok` instead (#377)
+ - Deprecate `Itertools::map_results`, use `Itertools::map_ok` instead (#377)
+ - Deprecate `FoldResults`, use `FoldOk` instead (#377)
+ - Deprecate `MapResults`, use `MapOk` instead (#377)
+ - Add `Itertools::circular_tuple_windows` and `CircularTupleWindows` (#350)
+ - Add `peek_nth` and `PeekNth` (#303)
+
+## 0.9.0
+ - Fix potential overflow in `MergeJoinBy::size_hint` (#385)
+ - Add `derive(Clone)` where possible (#382)
+ - Add `try_collect` method (#394)
+ - Add `HomogeneousTuple` trait (#389)
+ - Fix `combinations(0)` and `combinations_with_replacement(0)` (#383)
+ - Don't require `ParitalEq` to the `Item` of `DedupBy` (#397)
+ - Implement missing specializations on the `PutBack` adaptor and on the `MergeJoinBy` iterator (#372)
+ - Add `position_*` methods (#412)
+ - Derive `Hash` for `EitherOrBoth` (#417)
+ - Increase minimum supported Rust version to 1.32.0
+
+## 0.8.2
+ - Use `slice::iter` instead of `into_iter` to avoid future breakage (#378, by @LukasKalbertodt)
+## 0.8.1
+ - Added a [`.exactly_one()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.exactly_one) iterator method that, on success, extracts the single value of an iterator ; by @Xaeroxe
+ - Added combinatory iterator adaptors:
+ - [`.permutations(k)`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.permutations):
+
+ `[0, 1, 2].iter().permutations(2)` yields
+
+ ```rust
+ [
+ vec![0, 1],
+ vec![0, 2],
+ vec![1, 0],
+ vec![1, 2],
+ vec![2, 0],
+ vec![2, 1],
+ ]
+ ```
+
+ ; by @tobz1000
+
+ - [`.combinations_with_replacement(k)`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.combinations_with_replacement):
+
+ `[0, 1, 2].iter().combinations_with_replacement(2)` yields
+
+ ```rust
+ [
+ vec![0, 0],
+ vec![0, 1],
+ vec![0, 2],
+ vec![1, 1],
+ vec![1, 2],
+ vec![2, 2],
+ ]
+ ```
+
+ ; by @tommilligan
+
+ - For reference, these methods join the already existing [`.combinations(k)`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.combinations):
+
+ `[0, 1, 2].iter().combinations(2)` yields
+
+ ```rust
+ [
+ vec![0, 1],
+ vec![0, 2],
+ vec![1, 2],
+ ]
+ ```
+
+ - Improved the performance of [`.fold()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.fold)-based internal iteration for the [`.intersperse()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.intersperse) iterator ; by @jswrenn
+ - Added [`.dedup_by()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.dedup_by), [`.merge_by()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.merge_by) and [`.kmerge_by()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.kmerge_by) adaptors that work like [`.dedup()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.dedup), [`.merge()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.merge) and [`.kmerge()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.kmerge), but taking an additional custom comparison closure parameter. ; by @phimuemue
+ - Improved the performance of [`.all_equal()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.all_equal) ; by @fyrchik
+ - Loosened the bounds on [`.partition_map()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.partition_map) to take just a `FnMut` closure rather than a `Fn` closure, and made its implementation use internal iteration for better performance ; by @danielhenrymantilla
+ - Added convenience methods to [`EitherOrBoth`](https://docs.rs/itertools/0.8.1/itertools/enum.EitherOrBoth.html) elements yielded from the [`.zip_longest()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.zip_longest) iterator adaptor ; by @Avi-D-coder
+ - Added [`.sum1()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.sum1) and [`.product1()`](https://docs.rs/itertools/0.8.1/itertools/trait.Itertools.html#method.product1) iterator methods that respectively try to return the sum and the product of the elements of an iterator **when it is not empty**, otherwise they return `None` ; by @Emerentius
+## 0.8.0
+ - Added new adaptor `.map_into()` for conversions using `Into` by @vorner
+ - Improved `Itertools` docs by @JohnHeitmann
+ - The return type of `.sorted_by_by_key()` is now an iterator, not a Vec.
+ - The return type of the `izip!(x, y)` macro with exactly two arguments is now the usual `Iterator::zip`.
+ - Remove `.flatten()` in favour of std's `.flatten()`
+ - Deprecate `.foreach()` in favour of std's `.for_each()`
+ - Deprecate `.step()` in favour of std's `.step_by()`
+ - Deprecate `repeat_call` in favour of std's `repeat_with`
+ - Deprecate `.fold_while()` in favour of std's `.try_fold()`
+ - Require Rust 1.24 as minimal version.
+## 0.7.11
+ - Add convenience methods to `EitherOrBoth`, making it more similar to `Option` and `Either` by @jethrogb
+## 0.7.10
+ - No changes.
+## 0.7.9
+ - New inclusion policy: See the readme about suggesting features for std before accepting them in itertools.
+ - The `FoldWhile` type now implements `Eq` and `PartialEq` by @jturner314
+## 0.7.8
+ - Add new iterator method `.tree_fold1()` which is like `.fold1()` except items are combined in a tree structure (see its docs). By @scottmcm
+ - Add more `Debug` impls by @phimuemue: KMerge, KMergeBy, MergeJoinBy, ConsTuples, Intersperse, ProcessResults, RcIter, Tee, TupleWindows, Tee, ZipLongest, ZipEq, Zip.
+## 0.7.7
+ - Add new iterator method `.into_group_map() -> HashMap<K, Vec<V>>` which turns an iterator of `(K, V)` elements into such a hash table, where values are grouped by key. By @tobz1000
+ - Add new free function `flatten` for the `.flatten()` adaptor. **NOTE:** recent Rust nightlies have `Iterator::flatten` and thus a clash with our flatten adaptor. One workaround is to use the itertools `flatten` free function.
+## 0.7.6
+ - Add new adaptor `.multi_cartesian_product()` which is an n-ary product iterator by @tobz1000
+ - Add new method `.sorted_by_key()` by @Xion
+ - Provide simpler and faster `.count()` for `.unique()` and `.unique_by()`
+## 0.7.5
+ - `.multipeek()` now implements `PeekingNext`, by @nicopap.
+## 0.7.4
+ - Add new adaptor `.update()` by @lucasem; this adaptor is used to modify an element before passing it on in an iterator chain.
+## 0.7.3
+ - Add new method `.collect_tuple()` by @matklad; it makes a tuple out of the iterator's elements if the number of them matches **exactly**.
+ - Implement `fold` and `collect` for `.map_results()` which means it reuses the code of the standard `.map()` for these methods.
+## 0.7.2
+ - Add new adaptor `.merge_join_by` by @srijs; a heterogeneous merge join for two ordered sequences.
+## 0.7.1
+ - Iterator adaptors and iterators in itertools now use the same `must_use` reminder that the standard library adaptors do, by @matematikaedit and @bluss *“iterator adaptors are lazy and do nothing unless consumedâ€*.
+## 0.7.0
+ - Faster `izip!()` by @krdln
+ - `izip!()` is now a wrapper for repeated regular `.zip()` and a single `.map()`. This means it optimizes as well as the standard library `.zip()` it uses. **Note:** `multizip` and `izip!()` are now different! The former has a named type but the latter optimizes better.
+ - Faster `.unique()`
+ - `no_std` support, which is opt-in!
+ - Many lovable features are still there without std, like `izip!()` or `.format()` or `.merge()`, but not those that use collections.
+ - Trait bounds were required up front instead of just on the type: `group_by`'s `PartialEq` by @Phlosioneer and `repeat_call`'s `FnMut`.
+ - Removed deprecated constructor `Zip::new` — use `izip!()` or `multizip()`
+## 0.6.5
+ - Fix bug in `.cartesian_product()`'s fold (which only was visible for unfused iterators).
+## 0.6.4
+ - Add specific `fold` implementations for `.cartesian_product()` and `cons_tuples()`, which improves their performance in fold, foreach, and iterator consumers derived from them.
+## 0.6.3
+ - Add iterator adaptor `.positions(predicate)` by @tmccombs
+## 0.6.2
+ - Add function `process_results` which can “lift†a function of the regular values of an iterator so that it can process the `Ok` values from an iterator of `Results` instead, by @shepmaster
+ - Add iterator method `.concat()` which combines all iterator elements into a single collection using the `Extend` trait, by @srijs
+## 0.6.1
+ - Better size hint testing and subsequent size hint bugfixes by @rkarp. Fixes bugs in product, `interleave_shortest` size hints.
+ - New iterator method `.all_equal()` by @phimuemue
+## 0.6.0
+ - Deprecated names were removed in favour of their replacements
+ - `.flatten()` does not implement double ended iteration anymore
+ - `.fold_while()` uses `&mut self` and returns `FoldWhile<T>`, for composability #168
+ - `.foreach()` and `.fold1()` use `self`, like `.fold()` does.
+ - `.combinations(0)` now produces a single empty vector. #174
+## 0.5.10
+ - Add itertools method `.kmerge_by()` (and corresponding free function)
+ - Relaxed trait requirement of `.kmerge()` and `.minmax()` to PartialOrd.
+## 0.5.9
+ - Add multipeek method `.reset_peek()`
+ - Add categories
+## 0.5.8
+ - Add iterator adaptor `.peeking_take_while()` and its trait `PeekingNext`.
+## 0.5.7
+ - Add iterator adaptor `.with_position()`
+ - Fix multipeek's performance for long peeks by using `VecDeque`.
+## 0.5.6
+ - Add `.map_results()`
+## 0.5.5
+ - Many more adaptors now implement `Debug`
+ - Add free function constructor `repeat_n`. `RepeatN::new` is now deprecated.
+## 0.5.4
+ - Add infinite generator function `iterate`, that takes a seed and a closure.
+## 0.5.3
+ - Special-cased `.fold()` for flatten and put back. `.foreach()` now uses fold on the iterator, to pick up any iterator specific loop implementation.
+ - `.combinations(n)` asserts up front that `n != 0`, instead of running into an error on the second iterator element.
+## 0.5.2
+ - Add `.tuples::<T>()` that iterates by two, three or four elements at a time (where `T` is a tuple type).
+ - Add `.tuple_windows::<T>()` that iterates using a window of the two, three or four most recent elements.
+ - Add `.next_tuple::<T>()` method, that picks the next two, three or four elements in one go.
+ - `.interleave()` now has an accurate size hint.
+## 0.5.1
+ - Workaround module/function name clash that made racer crash on completing itertools. Only internal changes needed.
+## 0.5.0
+ - [Release announcement](https://bluss.github.io/rust/2016/09/26/itertools-0.5.0/)
+ - Renamed:
+ - `combinations` is now `tuple_combinations`
+ - `combinations_n` to `combinations`
+ - `group_by_lazy`, `chunks_lazy` to `group_by`, `chunks`
+ - `Unfold::new` to `unfold()`
+ - `RepeatCall::new` to `repeat_call()`
+ - `Zip::new` to `multizip`
+ - `PutBack::new`, `PutBackN::new` to `put_back`, `put_back_n`
+ - `PutBack::with_value` is now a builder setter, not a constructor
+ - `MultiPeek::new`, `.multipeek()` to `multipeek()`
+ - `format` to `format_with` and `format_default` to `format`
+ - `.into_rc()` to `rciter`
+ - `Partition` enum is now `Either`
+ - Module reorganization:
+ - All iterator structs are under `itertools::structs` but also reexported to the top level, for backwards compatibility
+ - All free functions are reexported at the root, `itertools::free` will be removed in the next version
+ - Removed:
+ - `ZipSlices`, use `.zip()` instead
+ - `.enumerate_from()`, `ZipTrusted`, due to being unstable
+ - `.mend_slices()`, moved to crate `odds`
+ - Stride, StrideMut, moved to crate `odds`
+ - `linspace()`, moved to crate `itertools-num`
+ - `.sort_by()`, use `.sorted_by()`
+ - `.is_empty_hint()`, use `.size_hint()`
+ - `.dropn()`, use `.dropping()`
+ - `.map_fn()`, use `.map()`
+ - `.slice()`, use `.take()` / `.skip()`
+ - helper traits in `misc`
+ - `new` constructors on iterator structs, use `Itertools` trait or free functions instead
+ - `itertools::size_hint` is now private
+ - Behaviour changes:
+ - `format` and `format_with` helpers now panic if you try to format them more than once.
+ - `repeat_call` is not double ended anymore
+ - New features:
+ - tuple flattening iterator is constructible with `cons_tuples`
+ - itertools reexports `Either` from the `either` crate. `Either<L, R>` is an iterator when `L, R` are.
+ - `MinMaxResult` now implements `Copy` and `Clone`
+ - `tuple_combinations` supports 1-4 tuples of combinations (previously just 2)
+## 0.4.19
+ - Add `.minmax_by()`
+ - Add `itertools::free::cloned`
+ - Add `itertools::free::rciter`
+ - Improve `.step(n)` slightly to take advantage of specialized Fuse better.
+## 0.4.18
+ - Only changes related to the "unstable" crate feature. This feature is more or less deprecated.
+ - Use deprecated warnings when unstable is enabled. `.enumerate_from()` will be removed imminently since it's using a deprecated libstd trait.
+## 0.4.17
+ - Fix bug in `.kmerge()` that caused it to often produce the wrong order #134
+## 0.4.16
+ - Improve precision of the `interleave_shortest` adaptor's size hint (it is now computed exactly when possible).
+## 0.4.15
+ - Fixup on top of the workaround in 0.4.14. A function in `itertools::free` was removed by mistake and now it is added back again.
+## 0.4.14
+ - Workaround an upstream regression in a Rust nightly build that broke compilation of of `itertools::free::{interleave, merge}`
+## 0.4.13
+ - Add `.minmax()` and `.minmax_by_key()`, iterator methods for finding both minimum and maximum in one scan.
+ - Add `.format_default()`, a simpler version of `.format()` (lazy formatting for iterators).
+## 0.4.12
+ - Add `.zip_eq()`, an adaptor like `.zip()` except it ensures iterators of inequal length don't pass silently (instead it panics).
+ - Add `.fold_while()`, an iterator method that is a fold that can short-circuit.
+ - Add `.partition_map()`, an iterator method that can separate elements into two collections.
+## 0.4.11
+ - Add `.get()` for `Stride{,Mut}` and `.get_mut()` for `StrideMut`
+## 0.4.10
+ - Improve performance of `.kmerge()`
+## 0.4.9
+ - Add k-ary merge adaptor `.kmerge()`
+ - Fix a bug in `.islice()` with ranges `a..b` where a `> b`.
+## 0.4.8
+ - Implement `Clone`, `Debug` for `Linspace`
+## 0.4.7
+ - Add function `diff_with()` that compares two iterators
+ - Add `.combinations_n()`, an n-ary combinations iterator
+ - Add methods `PutBack::with_value` and `PutBack::into_parts`.
+## 0.4.6
+ - Add method `.sorted()`
+ - Add module `itertools::free` with free function variants of common iterator adaptors and methods. For example `enumerate(iterable)`, `rev(iterable)`, and so on.
+## 0.4.5
+ - Add `.flatten()`
+## 0.4.4
+ - Allow composing `ZipSlices` with itself
+## 0.4.3
+ - Write `iproduct!()` as a single expression; this allows temporary values in its arguments.
+## 0.4.2
+ - Add `.fold_options()`
+ - Require Rust 1.1 or later
+## 0.4.1
+ - Update `.dropping()` to take advantage of `.nth()`
+## 0.4.0
+ - `.merge()`, `.unique()` and `.dedup()` now perform better due to not using function pointers
+ - Add free functions `enumerate()` and `rev()`
+ - Breaking changes:
+ - Return types of `.merge()` and `.merge_by()` renamed and changed
+ - Method `Merge::new` removed
+ - `.merge_by()` now takes a closure that returns bool.
+ - Return type of `.dedup()` changed
+ - Return type of `.mend_slices()` changed
+ - Return type of `.unique()` changed
+ - Removed function `times()`, struct `Times`: use a range instead
+ - Removed deprecated macro `icompr!()`
+ - Removed deprecated `FnMap` and method `.fn_map()`: use `.map_fn()`
+ - `.interleave_shortest()` is no longer guaranteed to act like fused
+## 0.3.25
+ - Rename `.sort_by()` to `.sorted_by()`. Old name is deprecated.
+ - Fix well-formedness warnings from RFC 1214, no user visible impact
+## 0.3.24
+ - Improve performance of `.merge()`'s ordering function slightly
+## 0.3.23
+ - Added `.chunks()`, similar to (and based on) `.group_by_lazy()`.
+ - Tweak linspace to match numpy.linspace and make it double ended.
+## 0.3.22
+ - Added `ZipSlices`, a fast zip for slices
+## 0.3.21
+ - Remove `Debug` impl for `Format`, it will have different use later
+## 0.3.20
+ - Optimize `.group_by_lazy()`
+## 0.3.19
+ - Added `.group_by_lazy()`, a possibly nonallocating group by
+ - Added `.format()`, a nonallocating formatting helper for iterators
+ - Remove uses of `RandomAccessIterator` since it has been deprecated in Rust.
+## 0.3.17
+ - Added (adopted) `Unfold` from Rust
+## 0.3.16
+ - Added adaptors `.unique()`, `.unique_by()`
+## 0.3.15
+ - Added method `.sort_by()`
+## 0.3.14
+ - Added adaptor `.while_some()`
+## 0.3.13
+ - Added adaptor `.interleave_shortest()`
+ - Added adaptor `.pad_using()`
+## 0.3.11
+ - Added `assert_equal` function
+## 0.3.10
+ - Bugfix `.combinations()` `size_hint`.
+## 0.3.8
+ - Added source `RepeatCall`
+## 0.3.7
+ - Added adaptor `PutBackN`
+ - Added adaptor `.combinations()`
+## 0.3.6
+ - Added `itertools::partition`, partition a sequence in place based on a predicate.
+ - Deprecate `icompr!()` with no replacement.
+## 0.3.5
+ - `.map_fn()` replaces deprecated `.fn_map()`.
+## 0.3.4
+ - `.take_while_ref()` *by-ref adaptor*
+ - `.coalesce()` *adaptor*
+ - `.mend_slices()` *adaptor*
+## 0.3.3
+ - `.dropping_back()` *method*
+ - `.fold1()` *method*
+ - `.is_empty_hint()` *method*
diff --git a/vendor/itertools-0.10.5/Cargo.toml b/vendor/itertools-0.10.5/Cargo.toml
new file mode 100644
index 000000000..40be7e48f
--- /dev/null
+++ b/vendor/itertools-0.10.5/Cargo.toml
@@ -0,0 +1,88 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies
+#
+# If you believe there's an error in this file please file an
+# issue against the rust-lang/cargo repository. If you're
+# editing this file be aware that the upstream Cargo.toml
+# will likely look very different (and much more reasonable)
+
+[package]
+edition = "2018"
+name = "itertools"
+version = "0.10.5"
+authors = ["bluss"]
+exclude = ["/bors.toml"]
+description = "Extra iterator adaptors, iterator methods, free functions, and macros."
+documentation = "https://docs.rs/itertools/"
+readme = "README.md"
+keywords = ["iterator", "data-structure", "zip", "product", "group-by"]
+categories = ["algorithms", "rust-patterns"]
+license = "MIT/Apache-2.0"
+repository = "https://github.com/rust-itertools/itertools"
+[package.metadata.release]
+no-dev-version = true
+[profile.bench]
+debug = true
+
+[lib]
+test = false
+bench = false
+
+[[bench]]
+name = "tuple_combinations"
+harness = false
+
+[[bench]]
+name = "tuples"
+harness = false
+
+[[bench]]
+name = "fold_specialization"
+harness = false
+
+[[bench]]
+name = "combinations_with_replacement"
+harness = false
+
+[[bench]]
+name = "tree_fold1"
+harness = false
+
+[[bench]]
+name = "bench1"
+harness = false
+
+[[bench]]
+name = "combinations"
+harness = false
+
+[[bench]]
+name = "powerset"
+harness = false
+[dependencies.either]
+version = "1.0"
+default-features = false
+[dev-dependencies.criterion]
+version = "=0"
+
+[dev-dependencies.paste]
+version = "1.0.0"
+
+[dev-dependencies.permutohedron]
+version = "0.2"
+
+[dev-dependencies.quickcheck]
+version = "0.9"
+default-features = false
+
+[dev-dependencies.rand]
+version = "0.7"
+
+[features]
+default = ["use_std"]
+use_alloc = []
+use_std = ["use_alloc", "either/use_std"]
diff --git a/vendor/libm-0.1.4/LICENSE-APACHE b/vendor/itertools-0.10.5/LICENSE-APACHE
index 16fe87b06..16fe87b06 100644
--- a/vendor/libm-0.1.4/LICENSE-APACHE
+++ b/vendor/itertools-0.10.5/LICENSE-APACHE
diff --git a/vendor/rustix-0.37.6/LICENSE-MIT b/vendor/itertools-0.10.5/LICENSE-MIT
index 31aa79387..9203baa05 100644
--- a/vendor/rustix-0.37.6/LICENSE-MIT
+++ b/vendor/itertools-0.10.5/LICENSE-MIT
@@ -1,3 +1,5 @@
+Copyright (c) 2015
+
Permission is hereby granted, free of charge, to any
person obtaining a copy of this software and associated
documentation files (the "Software"), to deal in the
diff --git a/vendor/itertools-0.10.5/README.md b/vendor/itertools-0.10.5/README.md
new file mode 100644
index 000000000..a911127f4
--- /dev/null
+++ b/vendor/itertools-0.10.5/README.md
@@ -0,0 +1,44 @@
+# Itertools
+
+Extra iterator adaptors, functions and macros.
+
+Please read the [API documentation here](https://docs.rs/itertools/).
+
+[![build_status](https://github.com/rust-itertools/itertools/actions/workflows/ci.yml/badge.svg)](https://github.com/rust-itertools/itertools/actions)
+[![crates.io](https://img.shields.io/crates/v/itertools.svg)](https://crates.io/crates/itertools)
+
+How to use with Cargo:
+
+```toml
+[dependencies]
+itertools = "0.10.5"
+```
+
+How to use in your crate:
+
+```rust
+use itertools::Itertools;
+```
+
+## How to contribute
+
+- Fix a bug or implement a new thing
+- Include tests for your new feature, preferably a QuickCheck test
+- Make a Pull Request
+
+For new features, please first consider filing a PR to [rust-lang/rust](https://github.com/rust-lang/rust),
+adding your new feature to the `Iterator` trait of the standard library, if you believe it is reasonable.
+If it isn't accepted there, proposing it for inclusion in ``itertools`` is a good idea.
+The reason for doing is this is so that we avoid future breakage as with ``.flatten()``.
+However, if your feature involves heap allocation, such as storing elements in a ``Vec<T>``,
+then it can't be accepted into ``libcore``, and you should propose it for ``itertools`` directly instead.
+
+## License
+
+Dual-licensed to be compatible with the Rust project.
+
+Licensed under the Apache License, Version 2.0
+https://www.apache.org/licenses/LICENSE-2.0 or the MIT license
+https://opensource.org/licenses/MIT, at your
+option. This file may not be copied, modified, or distributed
+except according to those terms.
diff --git a/vendor/itertools-0.10.5/benches/bench1.rs b/vendor/itertools-0.10.5/benches/bench1.rs
new file mode 100644
index 000000000..71278d17b
--- /dev/null
+++ b/vendor/itertools-0.10.5/benches/bench1.rs
@@ -0,0 +1,877 @@
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+use itertools::Itertools;
+use itertools::free::cloned;
+use itertools::iproduct;
+
+use std::iter::repeat;
+use std::cmp;
+use std::ops::{Add, Range};
+
+mod extra;
+
+use crate::extra::ZipSlices;
+
+fn slice_iter(c: &mut Criterion) {
+ let xs: Vec<_> = repeat(1i32).take(20).collect();
+
+ c.bench_function("slice iter", move |b| {
+ b.iter(|| for elt in xs.iter() {
+ black_box(elt);
+ })
+ });
+}
+
+fn slice_iter_rev(c: &mut Criterion) {
+ let xs: Vec<_> = repeat(1i32).take(20).collect();
+
+ c.bench_function("slice iter rev", move |b| {
+ b.iter(|| for elt in xs.iter().rev() {
+ black_box(elt);
+ })
+ });
+}
+
+fn zip_default_zip(c: &mut Criterion) {
+ let xs = vec![0; 1024];
+ let ys = vec![0; 768];
+ let xs = black_box(xs);
+ let ys = black_box(ys);
+
+ c.bench_function("zip default zip", move |b| {
+ b.iter(|| {
+ for (&x, &y) in xs.iter().zip(&ys) {
+ black_box(x);
+ black_box(y);
+ }
+ })
+ });
+}
+
+fn zipdot_i32_default_zip(c: &mut Criterion) {
+ let xs = vec![2; 1024];
+ let ys = vec![2; 768];
+ let xs = black_box(xs);
+ let ys = black_box(ys);
+
+ c.bench_function("zipdot i32 default zip", move |b| {
+ b.iter(|| {
+ let mut s = 0;
+ for (&x, &y) in xs.iter().zip(&ys) {
+ s += x * y;
+ }
+ s
+ })
+ });
+}
+
+fn zipdot_f32_default_zip(c: &mut Criterion) {
+ let xs = vec![2f32; 1024];
+ let ys = vec![2f32; 768];
+ let xs = black_box(xs);
+ let ys = black_box(ys);
+
+ c.bench_function("zipdot f32 default zip", move |b| {
+ b.iter(|| {
+ let mut s = 0.;
+ for (&x, &y) in xs.iter().zip(&ys) {
+ s += x * y;
+ }
+ s
+ })
+ });
+}
+
+fn zip_default_zip3(c: &mut Criterion) {
+ let xs = vec![0; 1024];
+ let ys = vec![0; 768];
+ let zs = vec![0; 766];
+ let xs = black_box(xs);
+ let ys = black_box(ys);
+ let zs = black_box(zs);
+
+ c.bench_function("zip default zip3", move |b| {
+ b.iter(|| {
+ for ((&x, &y), &z) in xs.iter().zip(&ys).zip(&zs) {
+ black_box(x);
+ black_box(y);
+ black_box(z);
+ }
+ })
+ });
+}
+
+fn zip_slices_ziptuple(c: &mut Criterion) {
+ let xs = vec![0; 1024];
+ let ys = vec![0; 768];
+
+ c.bench_function("zip slices ziptuple", move |b| {
+ b.iter(|| {
+ let xs = black_box(&xs);
+ let ys = black_box(&ys);
+ for (&x, &y) in itertools::multizip((xs, ys)) {
+ black_box(x);
+ black_box(y);
+ }
+ })
+ });
+}
+
+fn zipslices(c: &mut Criterion) {
+ let xs = vec![0; 1024];
+ let ys = vec![0; 768];
+ let xs = black_box(xs);
+ let ys = black_box(ys);
+
+ c.bench_function("zipslices", move |b| {
+ b.iter(|| {
+ for (&x, &y) in ZipSlices::new(&xs, &ys) {
+ black_box(x);
+ black_box(y);
+ }
+ })
+ });
+}
+
+fn zipslices_mut(c: &mut Criterion) {
+ let xs = vec![0; 1024];
+ let ys = vec![0; 768];
+ let xs = black_box(xs);
+ let mut ys = black_box(ys);
+
+ c.bench_function("zipslices mut", move |b| {
+ b.iter(|| {
+ for (&x, &mut y) in ZipSlices::from_slices(&xs[..], &mut ys[..]) {
+ black_box(x);
+ black_box(y);
+ }
+ })
+ });
+}
+
+fn zipdot_i32_zipslices(c: &mut Criterion) {
+ let xs = vec![2; 1024];
+ let ys = vec![2; 768];
+ let xs = black_box(xs);
+ let ys = black_box(ys);
+
+ c.bench_function("zipdot i32 zipslices", move |b| {
+ b.iter(|| {
+ let mut s = 0i32;
+ for (&x, &y) in ZipSlices::new(&xs, &ys) {
+ s += x * y;
+ }
+ s
+ })
+ });
+}
+
+fn zipdot_f32_zipslices(c: &mut Criterion) {
+ let xs = vec![2f32; 1024];
+ let ys = vec![2f32; 768];
+ let xs = black_box(xs);
+ let ys = black_box(ys);
+
+ c.bench_function("zipdot f32 zipslices", move |b| {
+ b.iter(|| {
+ let mut s = 0.;
+ for (&x, &y) in ZipSlices::new(&xs, &ys) {
+ s += x * y;
+ }
+ s
+ })
+ });
+}
+
+fn zip_checked_counted_loop(c: &mut Criterion) {
+ let xs = vec![0; 1024];
+ let ys = vec![0; 768];
+ let xs = black_box(xs);
+ let ys = black_box(ys);
+
+ c.bench_function("zip checked counted loop", move |b| {
+ b.iter(|| {
+ // Must slice to equal lengths, and then bounds checks are eliminated!
+ let len = cmp::min(xs.len(), ys.len());
+ let xs = &xs[..len];
+ let ys = &ys[..len];
+
+ for i in 0..len {
+ let x = xs[i];
+ let y = ys[i];
+ black_box(x);
+ black_box(y);
+ }
+ })
+ });
+}
+
+fn zipdot_i32_checked_counted_loop(c: &mut Criterion) {
+ let xs = vec![2; 1024];
+ let ys = vec![2; 768];
+ let xs = black_box(xs);
+ let ys = black_box(ys);
+
+ c.bench_function("zipdot i32 checked counted loop", move |b| {
+ b.iter(|| {
+ // Must slice to equal lengths, and then bounds checks are eliminated!
+ let len = cmp::min(xs.len(), ys.len());
+ let xs = &xs[..len];
+ let ys = &ys[..len];
+
+ let mut s = 0i32;
+
+ for i in 0..len {
+ s += xs[i] * ys[i];
+ }
+ s
+ })
+ });
+}
+
+fn zipdot_f32_checked_counted_loop(c: &mut Criterion) {
+ let xs = vec![2f32; 1024];
+ let ys = vec![2f32; 768];
+ let xs = black_box(xs);
+ let ys = black_box(ys);
+
+ c.bench_function("zipdot f32 checked counted loop", move |b| {
+ b.iter(|| {
+ // Must slice to equal lengths, and then bounds checks are eliminated!
+ let len = cmp::min(xs.len(), ys.len());
+ let xs = &xs[..len];
+ let ys = &ys[..len];
+
+ let mut s = 0.;
+
+ for i in 0..len {
+ s += xs[i] * ys[i];
+ }
+ s
+ })
+ });
+}
+
+fn zipdot_f32_checked_counted_unrolled_loop(c: &mut Criterion) {
+ let xs = vec![2f32; 1024];
+ let ys = vec![2f32; 768];
+ let xs = black_box(xs);
+ let ys = black_box(ys);
+
+ c.bench_function("zipdot f32 checked counted unrolled loop", move |b| {
+ b.iter(|| {
+ // Must slice to equal lengths, and then bounds checks are eliminated!
+ let len = cmp::min(xs.len(), ys.len());
+ let mut xs = &xs[..len];
+ let mut ys = &ys[..len];
+
+ let mut s = 0.;
+ let (mut p0, mut p1, mut p2, mut p3, mut p4, mut p5, mut p6, mut p7) =
+ (0., 0., 0., 0., 0., 0., 0., 0.);
+
+ // how to unroll and have bounds checks eliminated (by cristicbz)
+ // split sum into eight parts to enable vectorization (by bluss)
+ while xs.len() >= 8 {
+ p0 += xs[0] * ys[0];
+ p1 += xs[1] * ys[1];
+ p2 += xs[2] * ys[2];
+ p3 += xs[3] * ys[3];
+ p4 += xs[4] * ys[4];
+ p5 += xs[5] * ys[5];
+ p6 += xs[6] * ys[6];
+ p7 += xs[7] * ys[7];
+
+ xs = &xs[8..];
+ ys = &ys[8..];
+ }
+ s += p0 + p4;
+ s += p1 + p5;
+ s += p2 + p6;
+ s += p3 + p7;
+
+ for i in 0..xs.len() {
+ s += xs[i] * ys[i];
+ }
+ s
+ })
+ });
+}
+
+fn zip_unchecked_counted_loop(c: &mut Criterion) {
+ let xs = vec![0; 1024];
+ let ys = vec![0; 768];
+ let xs = black_box(xs);
+ let ys = black_box(ys);
+
+ c.bench_function("zip unchecked counted loop", move |b| {
+ b.iter(|| {
+ let len = cmp::min(xs.len(), ys.len());
+ for i in 0..len {
+ unsafe {
+ let x = *xs.get_unchecked(i);
+ let y = *ys.get_unchecked(i);
+ black_box(x);
+ black_box(y);
+ }
+ }
+ })
+ });
+}
+
+fn zipdot_i32_unchecked_counted_loop(c: &mut Criterion) {
+ let xs = vec![2; 1024];
+ let ys = vec![2; 768];
+ let xs = black_box(xs);
+ let ys = black_box(ys);
+
+ c.bench_function("zipdot i32 unchecked counted loop", move |b| {
+ b.iter(|| {
+ let len = cmp::min(xs.len(), ys.len());
+ let mut s = 0i32;
+ for i in 0..len {
+ unsafe {
+ let x = *xs.get_unchecked(i);
+ let y = *ys.get_unchecked(i);
+ s += x * y;
+ }
+ }
+ s
+ })
+ });
+}
+
+fn zipdot_f32_unchecked_counted_loop(c: &mut Criterion) {
+ let xs = vec![2.; 1024];
+ let ys = vec![2.; 768];
+ let xs = black_box(xs);
+ let ys = black_box(ys);
+
+ c.bench_function("zipdot f32 unchecked counted loop", move |b| {
+ b.iter(|| {
+ let len = cmp::min(xs.len(), ys.len());
+ let mut s = 0f32;
+ for i in 0..len {
+ unsafe {
+ let x = *xs.get_unchecked(i);
+ let y = *ys.get_unchecked(i);
+ s += x * y;
+ }
+ }
+ s
+ })
+ });
+}
+
+fn zip_unchecked_counted_loop3(c: &mut Criterion) {
+ let xs = vec![0; 1024];
+ let ys = vec![0; 768];
+ let zs = vec![0; 766];
+ let xs = black_box(xs);
+ let ys = black_box(ys);
+ let zs = black_box(zs);
+
+ c.bench_function("zip unchecked counted loop3", move |b| {
+ b.iter(|| {
+ let len = cmp::min(xs.len(), cmp::min(ys.len(), zs.len()));
+ for i in 0..len {
+ unsafe {
+ let x = *xs.get_unchecked(i);
+ let y = *ys.get_unchecked(i);
+ let z = *zs.get_unchecked(i);
+ black_box(x);
+ black_box(y);
+ black_box(z);
+ }
+ }
+ })
+ });
+}
+
+fn group_by_lazy_1(c: &mut Criterion) {
+ let mut data = vec![0; 1024];
+ for (index, elt) in data.iter_mut().enumerate() {
+ *elt = index / 10;
+ }
+
+ let data = black_box(data);
+
+ c.bench_function("group by lazy 1", move |b| {
+ b.iter(|| {
+ for (_key, group) in &data.iter().group_by(|elt| **elt) {
+ for elt in group {
+ black_box(elt);
+ }
+ }
+ })
+ });
+}
+
+fn group_by_lazy_2(c: &mut Criterion) {
+ let mut data = vec![0; 1024];
+ for (index, elt) in data.iter_mut().enumerate() {
+ *elt = index / 2;
+ }
+
+ let data = black_box(data);
+
+ c.bench_function("group by lazy 2", move |b| {
+ b.iter(|| {
+ for (_key, group) in &data.iter().group_by(|elt| **elt) {
+ for elt in group {
+ black_box(elt);
+ }
+ }
+ })
+ });
+}
+
+fn slice_chunks(c: &mut Criterion) {
+ let data = vec![0; 1024];
+
+ let data = black_box(data);
+ let sz = black_box(10);
+
+ c.bench_function("slice chunks", move |b| {
+ b.iter(|| {
+ for group in data.chunks(sz) {
+ for elt in group {
+ black_box(elt);
+ }
+ }
+ })
+ });
+}
+
+fn chunks_lazy_1(c: &mut Criterion) {
+ let data = vec![0; 1024];
+
+ let data = black_box(data);
+ let sz = black_box(10);
+
+ c.bench_function("chunks lazy 1", move |b| {
+ b.iter(|| {
+ for group in &data.iter().chunks(sz) {
+ for elt in group {
+ black_box(elt);
+ }
+ }
+ })
+ });
+}
+
+fn equal(c: &mut Criterion) {
+ let data = vec![7; 1024];
+ let l = data.len();
+ let alpha = black_box(&data[1..]);
+ let beta = black_box(&data[..l - 1]);
+
+ c.bench_function("equal", move |b| {
+ b.iter(|| {
+ itertools::equal(alpha, beta)
+ })
+ });
+}
+
+fn merge_default(c: &mut Criterion) {
+ let mut data1 = vec![0; 1024];
+ let mut data2 = vec![0; 800];
+ let mut x = 0;
+ for (_, elt) in data1.iter_mut().enumerate() {
+ *elt = x;
+ x += 1;
+ }
+
+ let mut y = 0;
+ for (i, elt) in data2.iter_mut().enumerate() {
+ *elt += y;
+ if i % 3 == 0 {
+ y += 3;
+ } else {
+ y += 0;
+ }
+ }
+ let data1 = black_box(data1);
+ let data2 = black_box(data2);
+
+ c.bench_function("merge default", move |b| {
+ b.iter(|| {
+ data1.iter().merge(&data2).count()
+ })
+ });
+}
+
+fn merge_by_cmp(c: &mut Criterion) {
+ let mut data1 = vec![0; 1024];
+ let mut data2 = vec![0; 800];
+ let mut x = 0;
+ for (_, elt) in data1.iter_mut().enumerate() {
+ *elt = x;
+ x += 1;
+ }
+
+ let mut y = 0;
+ for (i, elt) in data2.iter_mut().enumerate() {
+ *elt += y;
+ if i % 3 == 0 {
+ y += 3;
+ } else {
+ y += 0;
+ }
+ }
+ let data1 = black_box(data1);
+ let data2 = black_box(data2);
+
+ c.bench_function("merge by cmp", move |b| {
+ b.iter(|| {
+ data1.iter().merge_by(&data2, PartialOrd::le).count()
+ })
+ });
+}
+
+fn merge_by_lt(c: &mut Criterion) {
+ let mut data1 = vec![0; 1024];
+ let mut data2 = vec![0; 800];
+ let mut x = 0;
+ for (_, elt) in data1.iter_mut().enumerate() {
+ *elt = x;
+ x += 1;
+ }
+
+ let mut y = 0;
+ for (i, elt) in data2.iter_mut().enumerate() {
+ *elt += y;
+ if i % 3 == 0 {
+ y += 3;
+ } else {
+ y += 0;
+ }
+ }
+ let data1 = black_box(data1);
+ let data2 = black_box(data2);
+
+ c.bench_function("merge by lt", move |b| {
+ b.iter(|| {
+ data1.iter().merge_by(&data2, |a, b| a <= b).count()
+ })
+ });
+}
+
+fn kmerge_default(c: &mut Criterion) {
+ let mut data1 = vec![0; 1024];
+ let mut data2 = vec![0; 800];
+ let mut x = 0;
+ for (_, elt) in data1.iter_mut().enumerate() {
+ *elt = x;
+ x += 1;
+ }
+
+ let mut y = 0;
+ for (i, elt) in data2.iter_mut().enumerate() {
+ *elt += y;
+ if i % 3 == 0 {
+ y += 3;
+ } else {
+ y += 0;
+ }
+ }
+ let data1 = black_box(data1);
+ let data2 = black_box(data2);
+ let its = &[data1.iter(), data2.iter()];
+
+ c.bench_function("kmerge default", move |b| {
+ b.iter(|| {
+ its.iter().cloned().kmerge().count()
+ })
+ });
+}
+
+fn kmerge_tenway(c: &mut Criterion) {
+ let mut data = vec![0; 10240];
+
+ let mut state = 1729u16;
+ fn rng(state: &mut u16) -> u16 {
+ let new = state.wrapping_mul(31421) + 6927;
+ *state = new;
+ new
+ }
+
+ for elt in &mut data {
+ *elt = rng(&mut state);
+ }
+
+ let mut chunks = Vec::new();
+ let mut rest = &mut data[..];
+ while rest.len() > 0 {
+ let chunk_len = 1 + rng(&mut state) % 512;
+ let chunk_len = cmp::min(rest.len(), chunk_len as usize);
+ let (fst, tail) = {rest}.split_at_mut(chunk_len);
+ fst.sort();
+ chunks.push(fst.iter().cloned());
+ rest = tail;
+ }
+
+ // println!("Chunk lengths: {}", chunks.iter().format_with(", ", |elt, f| f(&elt.len())));
+
+ c.bench_function("kmerge tenway", move |b| {
+ b.iter(|| {
+ chunks.iter().cloned().kmerge().count()
+ })
+ });
+}
+
+fn fast_integer_sum<I>(iter: I) -> I::Item
+ where I: IntoIterator,
+ I::Item: Default + Add<Output=I::Item>
+{
+ iter.into_iter().fold(<_>::default(), |x, y| x + y)
+}
+
+fn step_vec_2(c: &mut Criterion) {
+ let v = vec![0; 1024];
+
+ c.bench_function("step vec 2", move |b| {
+ b.iter(|| {
+ fast_integer_sum(cloned(v.iter().step_by(2)))
+ })
+ });
+}
+
+fn step_vec_10(c: &mut Criterion) {
+ let v = vec![0; 1024];
+
+ c.bench_function("step vec 10", move |b| {
+ b.iter(|| {
+ fast_integer_sum(cloned(v.iter().step_by(10)))
+ })
+ });
+}
+
+fn step_range_2(c: &mut Criterion) {
+ let v = black_box(0..1024);
+
+ c.bench_function("step range 2", move |b| {
+ b.iter(|| {
+ fast_integer_sum(v.clone().step_by(2))
+ })
+ });
+}
+
+fn step_range_10(c: &mut Criterion) {
+ let v = black_box(0..1024);
+
+ c.bench_function("step range 10", move |b| {
+ b.iter(|| {
+ fast_integer_sum(v.clone().step_by(10))
+ })
+ });
+}
+
+fn cartesian_product_iterator(c: &mut Criterion) {
+ let xs = vec![0; 16];
+
+ c.bench_function("cartesian product iterator", move |b| {
+ b.iter(|| {
+ let mut sum = 0;
+ for (&x, &y, &z) in iproduct!(&xs, &xs, &xs) {
+ sum += x;
+ sum += y;
+ sum += z;
+ }
+ sum
+ })
+ });
+}
+
+fn cartesian_product_fold(c: &mut Criterion) {
+ let xs = vec![0; 16];
+
+ c.bench_function("cartesian product fold", move |b| {
+ b.iter(|| {
+ let mut sum = 0;
+ iproduct!(&xs, &xs, &xs).fold((), |(), (&x, &y, &z)| {
+ sum += x;
+ sum += y;
+ sum += z;
+ });
+ sum
+ })
+ });
+}
+
+fn multi_cartesian_product_iterator(c: &mut Criterion) {
+ let xs = [vec![0; 16], vec![0; 16], vec![0; 16]];
+
+ c.bench_function("multi cartesian product iterator", move |b| {
+ b.iter(|| {
+ let mut sum = 0;
+ for x in xs.iter().multi_cartesian_product() {
+ sum += x[0];
+ sum += x[1];
+ sum += x[2];
+ }
+ sum
+ })
+ });
+}
+
+fn multi_cartesian_product_fold(c: &mut Criterion) {
+ let xs = [vec![0; 16], vec![0; 16], vec![0; 16]];
+
+ c.bench_function("multi cartesian product fold", move |b| {
+ b.iter(|| {
+ let mut sum = 0;
+ xs.iter().multi_cartesian_product().fold((), |(), x| {
+ sum += x[0];
+ sum += x[1];
+ sum += x[2];
+ });
+ sum
+ })
+ });
+}
+
+fn cartesian_product_nested_for(c: &mut Criterion) {
+ let xs = vec![0; 16];
+
+ c.bench_function("cartesian product nested for", move |b| {
+ b.iter(|| {
+ let mut sum = 0;
+ for &x in &xs {
+ for &y in &xs {
+ for &z in &xs {
+ sum += x;
+ sum += y;
+ sum += z;
+ }
+ }
+ }
+ sum
+ })
+ });
+}
+
+fn all_equal(c: &mut Criterion) {
+ let mut xs = vec![0; 5_000_000];
+ xs.extend(vec![1; 5_000_000]);
+
+ c.bench_function("all equal", move |b| {
+ b.iter(|| xs.iter().all_equal())
+ });
+}
+
+fn all_equal_for(c: &mut Criterion) {
+ let mut xs = vec![0; 5_000_000];
+ xs.extend(vec![1; 5_000_000]);
+
+ c.bench_function("all equal for", move |b| {
+ b.iter(|| {
+ for &x in &xs {
+ if x != xs[0] {
+ return false;
+ }
+ }
+ true
+ })
+ });
+}
+
+fn all_equal_default(c: &mut Criterion) {
+ let mut xs = vec![0; 5_000_000];
+ xs.extend(vec![1; 5_000_000]);
+
+ c.bench_function("all equal default", move |b| {
+ b.iter(|| xs.iter().dedup().nth(1).is_none())
+ });
+}
+
+const PERM_COUNT: usize = 6;
+
+fn permutations_iter(c: &mut Criterion) {
+ struct NewIterator(Range<usize>);
+
+ impl Iterator for NewIterator {
+ type Item = usize;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ self.0.next()
+ }
+ }
+
+ c.bench_function("permutations iter", move |b| {
+ b.iter(|| {
+ for _ in NewIterator(0..PERM_COUNT).permutations(PERM_COUNT) {
+
+ }
+ })
+ });
+}
+
+fn permutations_range(c: &mut Criterion) {
+ c.bench_function("permutations range", move |b| {
+ b.iter(|| {
+ for _ in (0..PERM_COUNT).permutations(PERM_COUNT) {
+
+ }
+ })
+ });
+}
+
+fn permutations_slice(c: &mut Criterion) {
+ let v = (0..PERM_COUNT).collect_vec();
+
+ c.bench_function("permutations slice", move |b| {
+ b.iter(|| {
+ for _ in v.as_slice().iter().permutations(PERM_COUNT) {
+
+ }
+ })
+ });
+}
+
+criterion_group!(
+ benches,
+ slice_iter,
+ slice_iter_rev,
+ zip_default_zip,
+ zipdot_i32_default_zip,
+ zipdot_f32_default_zip,
+ zip_default_zip3,
+ zip_slices_ziptuple,
+ zipslices,
+ zipslices_mut,
+ zipdot_i32_zipslices,
+ zipdot_f32_zipslices,
+ zip_checked_counted_loop,
+ zipdot_i32_checked_counted_loop,
+ zipdot_f32_checked_counted_loop,
+ zipdot_f32_checked_counted_unrolled_loop,
+ zip_unchecked_counted_loop,
+ zipdot_i32_unchecked_counted_loop,
+ zipdot_f32_unchecked_counted_loop,
+ zip_unchecked_counted_loop3,
+ group_by_lazy_1,
+ group_by_lazy_2,
+ slice_chunks,
+ chunks_lazy_1,
+ equal,
+ merge_default,
+ merge_by_cmp,
+ merge_by_lt,
+ kmerge_default,
+ kmerge_tenway,
+ step_vec_2,
+ step_vec_10,
+ step_range_2,
+ step_range_10,
+ cartesian_product_iterator,
+ cartesian_product_fold,
+ multi_cartesian_product_iterator,
+ multi_cartesian_product_fold,
+ cartesian_product_nested_for,
+ all_equal,
+ all_equal_for,
+ all_equal_default,
+ permutations_iter,
+ permutations_range,
+ permutations_slice,
+);
+criterion_main!(benches);
diff --git a/vendor/itertools-0.10.5/benches/combinations.rs b/vendor/itertools-0.10.5/benches/combinations.rs
new file mode 100644
index 000000000..e7433a4cb
--- /dev/null
+++ b/vendor/itertools-0.10.5/benches/combinations.rs
@@ -0,0 +1,125 @@
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+use itertools::Itertools;
+
+// approximate 100_000 iterations for each combination
+const N1: usize = 100_000;
+const N2: usize = 448;
+const N3: usize = 86;
+const N4: usize = 41;
+const N14: usize = 21;
+
+fn comb_for1(c: &mut Criterion) {
+ c.bench_function("comb for1", move |b| {
+ b.iter(|| {
+ for i in 0..N1 {
+ black_box(vec![i]);
+ }
+ })
+ });
+}
+
+fn comb_for2(c: &mut Criterion) {
+ c.bench_function("comb for2", move |b| {
+ b.iter(|| {
+ for i in 0..N2 {
+ for j in (i + 1)..N2 {
+ black_box(vec![i, j]);
+ }
+ }
+ })
+ });
+}
+
+fn comb_for3(c: &mut Criterion) {
+ c.bench_function("comb for3", move |b| {
+ b.iter(|| {
+ for i in 0..N3 {
+ for j in (i + 1)..N3 {
+ for k in (j + 1)..N3 {
+ black_box(vec![i, j, k]);
+ }
+ }
+ }
+ })
+ });
+}
+
+fn comb_for4(c: &mut Criterion) {
+ c.bench_function("comb for4", move |b| {
+ b.iter(|| {
+ for i in 0..N4 {
+ for j in (i + 1)..N4 {
+ for k in (j + 1)..N4 {
+ for l in (k + 1)..N4 {
+ black_box(vec![i, j, k, l]);
+ }
+ }
+ }
+ }
+ })
+ });
+}
+
+fn comb_c1(c: &mut Criterion) {
+ c.bench_function("comb c1", move |b| {
+ b.iter(|| {
+ for combo in (0..N1).combinations(1) {
+ black_box(combo);
+ }
+ })
+ });
+}
+
+fn comb_c2(c: &mut Criterion) {
+ c.bench_function("comb c2", move |b| {
+ b.iter(|| {
+ for combo in (0..N2).combinations(2) {
+ black_box(combo);
+ }
+ })
+ });
+}
+
+fn comb_c3(c: &mut Criterion) {
+ c.bench_function("comb c3", move |b| {
+ b.iter(|| {
+ for combo in (0..N3).combinations(3) {
+ black_box(combo);
+ }
+ })
+ });
+}
+
+fn comb_c4(c: &mut Criterion) {
+ c.bench_function("comb c4", move |b| {
+ b.iter(|| {
+ for combo in (0..N4).combinations(4) {
+ black_box(combo);
+ }
+ })
+ });
+}
+
+fn comb_c14(c: &mut Criterion) {
+ c.bench_function("comb c14", move |b| {
+ b.iter(|| {
+ for combo in (0..N14).combinations(14) {
+ black_box(combo);
+ }
+ })
+ });
+}
+
+criterion_group!(
+ benches,
+ comb_for1,
+ comb_for2,
+ comb_for3,
+ comb_for4,
+ comb_c1,
+ comb_c2,
+ comb_c3,
+ comb_c4,
+ comb_c14,
+);
+criterion_main!(benches);
diff --git a/vendor/itertools-0.10.5/benches/combinations_with_replacement.rs b/vendor/itertools-0.10.5/benches/combinations_with_replacement.rs
new file mode 100644
index 000000000..8e4fa3dc3
--- /dev/null
+++ b/vendor/itertools-0.10.5/benches/combinations_with_replacement.rs
@@ -0,0 +1,40 @@
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+use itertools::Itertools;
+
+fn comb_replacement_n10_k5(c: &mut Criterion) {
+ c.bench_function("comb replacement n10k5", move |b| {
+ b.iter(|| {
+ for i in (0..10).combinations_with_replacement(5) {
+ black_box(i);
+ }
+ })
+ });
+}
+
+fn comb_replacement_n5_k10(c: &mut Criterion) {
+ c.bench_function("comb replacement n5 k10", move |b| {
+ b.iter(|| {
+ for i in (0..5).combinations_with_replacement(10) {
+ black_box(i);
+ }
+ })
+ });
+}
+
+fn comb_replacement_n10_k10(c: &mut Criterion) {
+ c.bench_function("comb replacement n10 k10", move |b| {
+ b.iter(|| {
+ for i in (0..10).combinations_with_replacement(10) {
+ black_box(i);
+ }
+ })
+ });
+}
+
+criterion_group!(
+ benches,
+ comb_replacement_n10_k5,
+ comb_replacement_n5_k10,
+ comb_replacement_n10_k10,
+);
+criterion_main!(benches);
diff --git a/vendor/itertools-0.10.5/benches/extra/mod.rs b/vendor/itertools-0.10.5/benches/extra/mod.rs
new file mode 100644
index 000000000..52fe5cc3f
--- /dev/null
+++ b/vendor/itertools-0.10.5/benches/extra/mod.rs
@@ -0,0 +1,2 @@
+pub use self::zipslices::ZipSlices;
+mod zipslices;
diff --git a/vendor/itertools-0.10.5/benches/extra/zipslices.rs b/vendor/itertools-0.10.5/benches/extra/zipslices.rs
new file mode 100644
index 000000000..633be5906
--- /dev/null
+++ b/vendor/itertools-0.10.5/benches/extra/zipslices.rs
@@ -0,0 +1,188 @@
+use std::cmp;
+
+// Note: There are different ways to implement ZipSlices.
+// This version performed the best in benchmarks.
+//
+// I also implemented a version with three pointers (tptr, tend, uptr),
+// that mimiced slice::Iter and only checked bounds by using tptr == tend,
+// but that was inferior to this solution.
+
+/// An iterator which iterates two slices simultaneously.
+///
+/// `ZipSlices` acts like a double-ended `.zip()` iterator.
+///
+/// It was intended to be more efficient than `.zip()`, and it was, then
+/// rustc changed how it optimizes so it can not promise improved performance
+/// at this time.
+///
+/// Note that elements past the end of the shortest of the two slices are ignored.
+///
+/// Iterator element type for `ZipSlices<T, U>` is `(T::Item, U::Item)`. For example,
+/// for a `ZipSlices<&'a [A], &'b mut [B]>`, the element type is `(&'a A, &'b mut B)`.
+#[derive(Clone)]
+pub struct ZipSlices<T, U> {
+ t: T,
+ u: U,
+ len: usize,
+ index: usize,
+}
+
+impl<'a, 'b, A, B> ZipSlices<&'a [A], &'b [B]> {
+ /// Create a new `ZipSlices` from slices `a` and `b`.
+ ///
+ /// Act like a double-ended `.zip()` iterator, but more efficiently.
+ ///
+ /// Note that elements past the end of the shortest of the two slices are ignored.
+ #[inline(always)]
+ pub fn new(a: &'a [A], b: &'b [B]) -> Self {
+ let minl = cmp::min(a.len(), b.len());
+ ZipSlices {
+ t: a,
+ u: b,
+ len: minl,
+ index: 0,
+ }
+ }
+}
+
+impl<T, U> ZipSlices<T, U>
+ where T: Slice,
+ U: Slice
+{
+ /// Create a new `ZipSlices` from slices `a` and `b`.
+ ///
+ /// Act like a double-ended `.zip()` iterator, but more efficiently.
+ ///
+ /// Note that elements past the end of the shortest of the two slices are ignored.
+ #[inline(always)]
+ pub fn from_slices(a: T, b: U) -> Self {
+ let minl = cmp::min(a.len(), b.len());
+ ZipSlices {
+ t: a,
+ u: b,
+ len: minl,
+ index: 0,
+ }
+ }
+}
+
+impl<T, U> Iterator for ZipSlices<T, U>
+ where T: Slice,
+ U: Slice
+{
+ type Item = (T::Item, U::Item);
+
+ #[inline(always)]
+ fn next(&mut self) -> Option<Self::Item> {
+ unsafe {
+ if self.index >= self.len {
+ None
+ } else {
+ let i = self.index;
+ self.index += 1;
+ Some((
+ self.t.get_unchecked(i),
+ self.u.get_unchecked(i)))
+ }
+ }
+ }
+
+ #[inline]
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ let len = self.len - self.index;
+ (len, Some(len))
+ }
+}
+
+impl<T, U> DoubleEndedIterator for ZipSlices<T, U>
+ where T: Slice,
+ U: Slice
+{
+ #[inline(always)]
+ fn next_back(&mut self) -> Option<Self::Item> {
+ unsafe {
+ if self.index >= self.len {
+ None
+ } else {
+ self.len -= 1;
+ let i = self.len;
+ Some((
+ self.t.get_unchecked(i),
+ self.u.get_unchecked(i)))
+ }
+ }
+ }
+}
+
+impl<T, U> ExactSizeIterator for ZipSlices<T, U>
+ where T: Slice,
+ U: Slice
+{}
+
+unsafe impl<T, U> Slice for ZipSlices<T, U>
+ where T: Slice,
+ U: Slice
+{
+ type Item = (T::Item, U::Item);
+
+ fn len(&self) -> usize {
+ self.len - self.index
+ }
+
+ unsafe fn get_unchecked(&mut self, i: usize) -> Self::Item {
+ (self.t.get_unchecked(i),
+ self.u.get_unchecked(i))
+ }
+}
+
+/// A helper trait to let `ZipSlices` accept both `&[T]` and `&mut [T]`.
+///
+/// Unsafe trait because:
+///
+/// - Implementors must guarantee that `get_unchecked` is valid for all indices `0..len()`.
+pub unsafe trait Slice {
+ /// The type of a reference to the slice's elements
+ type Item;
+ #[doc(hidden)]
+ fn len(&self) -> usize;
+ #[doc(hidden)]
+ unsafe fn get_unchecked(&mut self, i: usize) -> Self::Item;
+}
+
+unsafe impl<'a, T> Slice for &'a [T] {
+ type Item = &'a T;
+ #[inline(always)]
+ fn len(&self) -> usize { (**self).len() }
+ #[inline(always)]
+ unsafe fn get_unchecked(&mut self, i: usize) -> &'a T {
+ debug_assert!(i < self.len());
+ (**self).get_unchecked(i)
+ }
+}
+
+unsafe impl<'a, T> Slice for &'a mut [T] {
+ type Item = &'a mut T;
+ #[inline(always)]
+ fn len(&self) -> usize { (**self).len() }
+ #[inline(always)]
+ unsafe fn get_unchecked(&mut self, i: usize) -> &'a mut T {
+ debug_assert!(i < self.len());
+ // override the lifetime constraints of &mut &'a mut [T]
+ (*(*self as *mut [T])).get_unchecked_mut(i)
+ }
+}
+
+#[test]
+fn zipslices() {
+
+ let xs = [1, 2, 3, 4, 5, 6];
+ let ys = [1, 2, 3, 7];
+ ::itertools::assert_equal(ZipSlices::new(&xs, &ys), xs.iter().zip(&ys));
+
+ let xs = [1, 2, 3, 4, 5, 6];
+ let mut ys = [0; 6];
+ for (x, y) in ZipSlices::from_slices(&xs[..], &mut ys[..]) {
+ *y = *x;
+ }
+ ::itertools::assert_equal(&xs, &ys);
+}
diff --git a/vendor/itertools-0.10.5/benches/fold_specialization.rs b/vendor/itertools-0.10.5/benches/fold_specialization.rs
new file mode 100644
index 000000000..5de4671e9
--- /dev/null
+++ b/vendor/itertools-0.10.5/benches/fold_specialization.rs
@@ -0,0 +1,73 @@
+use criterion::{criterion_group, criterion_main, Criterion};
+use itertools::Itertools;
+
+struct Unspecialized<I>(I);
+
+impl<I> Iterator for Unspecialized<I>
+where I: Iterator
+{
+ type Item = I::Item;
+
+ #[inline(always)]
+ fn next(&mut self) -> Option<Self::Item> {
+ self.0.next()
+ }
+
+ #[inline(always)]
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ self.0.size_hint()
+ }
+}
+
+mod specialization {
+ use super::*;
+
+ pub mod intersperse {
+ use super::*;
+
+ pub fn external(c: &mut Criterion)
+ {
+ let arr = [1; 1024];
+
+ c.bench_function("external", move |b| {
+ b.iter(|| {
+ let mut sum = 0;
+ for &x in arr.iter().intersperse(&0) {
+ sum += x;
+ }
+ sum
+ })
+ });
+ }
+
+ pub fn internal_specialized(c: &mut Criterion)
+ {
+ let arr = [1; 1024];
+
+ c.bench_function("internal specialized", move |b| {
+ b.iter(|| {
+ arr.iter().intersperse(&0).fold(0, |acc, x| acc + x)
+ })
+ });
+ }
+
+ pub fn internal_unspecialized(c: &mut Criterion)
+ {
+ let arr = [1; 1024];
+
+ c.bench_function("internal unspecialized", move |b| {
+ b.iter(|| {
+ Unspecialized(arr.iter().intersperse(&0)).fold(0, |acc, x| acc + x)
+ })
+ });
+ }
+ }
+}
+
+criterion_group!(
+ benches,
+ specialization::intersperse::external,
+ specialization::intersperse::internal_specialized,
+ specialization::intersperse::internal_unspecialized,
+);
+criterion_main!(benches);
diff --git a/vendor/itertools-0.10.5/benches/powerset.rs b/vendor/itertools-0.10.5/benches/powerset.rs
new file mode 100644
index 000000000..074550bc4
--- /dev/null
+++ b/vendor/itertools-0.10.5/benches/powerset.rs
@@ -0,0 +1,44 @@
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+use itertools::Itertools;
+
+// Keep aggregate generated elements the same, regardless of powerset length.
+const TOTAL_ELEMENTS: usize = 1 << 12;
+const fn calc_iters(n: usize) -> usize {
+ TOTAL_ELEMENTS / (1 << n)
+}
+
+fn powerset_n(c: &mut Criterion, n: usize) {
+ let id = format!("powerset {}", n);
+ c.bench_function(id.as_str(), move |b| {
+ b.iter(|| {
+ for _ in 0..calc_iters(n) {
+ for elt in (0..n).powerset() {
+ black_box(elt);
+ }
+ }
+ })
+ });
+}
+
+fn powerset_0(c: &mut Criterion) { powerset_n(c, 0); }
+
+fn powerset_1(c: &mut Criterion) { powerset_n(c, 1); }
+
+fn powerset_2(c: &mut Criterion) { powerset_n(c, 2); }
+
+fn powerset_4(c: &mut Criterion) { powerset_n(c, 4); }
+
+fn powerset_8(c: &mut Criterion) { powerset_n(c, 8); }
+
+fn powerset_12(c: &mut Criterion) { powerset_n(c, 12); }
+
+criterion_group!(
+ benches,
+ powerset_0,
+ powerset_1,
+ powerset_2,
+ powerset_4,
+ powerset_8,
+ powerset_12,
+);
+criterion_main!(benches); \ No newline at end of file
diff --git a/vendor/itertools-0.10.5/benches/tree_fold1.rs b/vendor/itertools-0.10.5/benches/tree_fold1.rs
new file mode 100644
index 000000000..f12995db8
--- /dev/null
+++ b/vendor/itertools-0.10.5/benches/tree_fold1.rs
@@ -0,0 +1,144 @@
+use criterion::{criterion_group, criterion_main, Criterion};
+use itertools::{Itertools, cloned};
+
+trait IterEx : Iterator {
+ // Another efficient implementation against which to compare,
+ // but needs `std` so is less desirable.
+ fn tree_fold1_vec<F>(self, mut f: F) -> Option<Self::Item>
+ where F: FnMut(Self::Item, Self::Item) -> Self::Item,
+ Self: Sized,
+ {
+ let hint = self.size_hint().0;
+ let cap = std::mem::size_of::<usize>() * 8 - hint.leading_zeros() as usize;
+ let mut stack = Vec::with_capacity(cap);
+ self.enumerate().for_each(|(mut i, mut x)| {
+ while (i & 1) != 0 {
+ x = f(stack.pop().unwrap(), x);
+ i >>= 1;
+ }
+ stack.push(x);
+ });
+ stack.into_iter().fold1(f)
+ }
+}
+impl<T:Iterator> IterEx for T {}
+
+macro_rules! def_benchs {
+ ($N:expr,
+ $FUN:ident,
+ $BENCH_NAME:ident,
+ ) => (
+ mod $BENCH_NAME {
+ use super::*;
+
+ pub fn sum(c: &mut Criterion) {
+ let v: Vec<u32> = (0.. $N).collect();
+
+ c.bench_function(&(stringify!($BENCH_NAME).replace('_', " ") + " sum"), move |b| {
+ b.iter(|| {
+ cloned(&v).$FUN(|x, y| x + y)
+ })
+ });
+ }
+
+ pub fn complex_iter(c: &mut Criterion) {
+ let u = (3..).take($N / 2);
+ let v = (5..).take($N / 2);
+ let it = u.chain(v);
+
+ c.bench_function(&(stringify!($BENCH_NAME).replace('_', " ") + " complex iter"), move |b| {
+ b.iter(|| {
+ it.clone().map(|x| x as f32).$FUN(f32::atan2)
+ })
+ });
+ }
+
+ pub fn string_format(c: &mut Criterion) {
+ // This goes quadratic with linear `fold1`, so use a smaller
+ // size to not waste too much time in travis. The allocations
+ // in here are so expensive anyway that it'll still take
+ // way longer per iteration than the other two benchmarks.
+ let v: Vec<u32> = (0.. ($N/4)).collect();
+
+ c.bench_function(&(stringify!($BENCH_NAME).replace('_', " ") + " string format"), move |b| {
+ b.iter(|| {
+ cloned(&v).map(|x| x.to_string()).$FUN(|x, y| format!("{} + {}", x, y))
+ })
+ });
+ }
+ }
+
+ criterion_group!(
+ $BENCH_NAME,
+ $BENCH_NAME::sum,
+ $BENCH_NAME::complex_iter,
+ $BENCH_NAME::string_format,
+ );
+ )
+}
+
+def_benchs!{
+ 10_000,
+ fold1,
+ fold1_10k,
+}
+
+def_benchs!{
+ 10_000,
+ tree_fold1,
+ tree_fold1_stack_10k,
+}
+
+def_benchs!{
+ 10_000,
+ tree_fold1_vec,
+ tree_fold1_vec_10k,
+}
+
+def_benchs!{
+ 100,
+ fold1,
+ fold1_100,
+}
+
+def_benchs!{
+ 100,
+ tree_fold1,
+ tree_fold1_stack_100,
+}
+
+def_benchs!{
+ 100,
+ tree_fold1_vec,
+ tree_fold1_vec_100,
+}
+
+def_benchs!{
+ 8,
+ fold1,
+ fold1_08,
+}
+
+def_benchs!{
+ 8,
+ tree_fold1,
+ tree_fold1_stack_08,
+}
+
+def_benchs!{
+ 8,
+ tree_fold1_vec,
+ tree_fold1_vec_08,
+}
+
+criterion_main!(
+ fold1_10k,
+ tree_fold1_stack_10k,
+ tree_fold1_vec_10k,
+ fold1_100,
+ tree_fold1_stack_100,
+ tree_fold1_vec_100,
+ fold1_08,
+ tree_fold1_stack_08,
+ tree_fold1_vec_08,
+);
diff --git a/vendor/itertools-0.10.5/benches/tuple_combinations.rs b/vendor/itertools-0.10.5/benches/tuple_combinations.rs
new file mode 100644
index 000000000..4e26b282e
--- /dev/null
+++ b/vendor/itertools-0.10.5/benches/tuple_combinations.rs
@@ -0,0 +1,113 @@
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+use itertools::Itertools;
+
+// approximate 100_000 iterations for each combination
+const N1: usize = 100_000;
+const N2: usize = 448;
+const N3: usize = 86;
+const N4: usize = 41;
+
+fn tuple_comb_for1(c: &mut Criterion) {
+ c.bench_function("tuple comb for1", move |b| {
+ b.iter(|| {
+ for i in 0..N1 {
+ black_box(i);
+ }
+ })
+ });
+}
+
+fn tuple_comb_for2(c: &mut Criterion) {
+ c.bench_function("tuple comb for2", move |b| {
+ b.iter(|| {
+ for i in 0..N2 {
+ for j in (i + 1)..N2 {
+ black_box(i + j);
+ }
+ }
+ })
+ });
+}
+
+fn tuple_comb_for3(c: &mut Criterion) {
+ c.bench_function("tuple comb for3", move |b| {
+ b.iter(|| {
+ for i in 0..N3 {
+ for j in (i + 1)..N3 {
+ for k in (j + 1)..N3 {
+ black_box(i + j + k);
+ }
+ }
+ }
+ })
+ });
+}
+
+fn tuple_comb_for4(c: &mut Criterion) {
+ c.bench_function("tuple comb for4", move |b| {
+ b.iter(|| {
+ for i in 0..N4 {
+ for j in (i + 1)..N4 {
+ for k in (j + 1)..N4 {
+ for l in (k + 1)..N4 {
+ black_box(i + j + k + l);
+ }
+ }
+ }
+ }
+ })
+ });
+}
+
+fn tuple_comb_c1(c: &mut Criterion) {
+ c.bench_function("tuple comb c1", move |b| {
+ b.iter(|| {
+ for (i,) in (0..N1).tuple_combinations() {
+ black_box(i);
+ }
+ })
+ });
+}
+
+fn tuple_comb_c2(c: &mut Criterion) {
+ c.bench_function("tuple comb c2", move |b| {
+ b.iter(|| {
+ for (i, j) in (0..N2).tuple_combinations() {
+ black_box(i + j);
+ }
+ })
+ });
+}
+
+fn tuple_comb_c3(c: &mut Criterion) {
+ c.bench_function("tuple comb c3", move |b| {
+ b.iter(|| {
+ for (i, j, k) in (0..N3).tuple_combinations() {
+ black_box(i + j + k);
+ }
+ })
+ });
+}
+
+fn tuple_comb_c4(c: &mut Criterion) {
+ c.bench_function("tuple comb c4", move |b| {
+ b.iter(|| {
+ for (i, j, k, l) in (0..N4).tuple_combinations() {
+ black_box(i + j + k + l);
+ }
+ })
+ });
+}
+
+criterion_group!(
+ benches,
+ tuple_comb_for1,
+ tuple_comb_for2,
+ tuple_comb_for3,
+ tuple_comb_for4,
+ tuple_comb_c1,
+ tuple_comb_c2,
+ tuple_comb_c3,
+ tuple_comb_c4,
+);
+criterion_main!(benches);
diff --git a/vendor/itertools-0.10.5/benches/tuples.rs b/vendor/itertools-0.10.5/benches/tuples.rs
new file mode 100644
index 000000000..ea50aaaee
--- /dev/null
+++ b/vendor/itertools-0.10.5/benches/tuples.rs
@@ -0,0 +1,213 @@
+use criterion::{criterion_group, criterion_main, Criterion};
+use itertools::Itertools;
+
+fn s1(a: u32) -> u32 {
+ a
+}
+
+fn s2(a: u32, b: u32) -> u32 {
+ a + b
+}
+
+fn s3(a: u32, b: u32, c: u32) -> u32 {
+ a + b + c
+}
+
+fn s4(a: u32, b: u32, c: u32, d: u32) -> u32 {
+ a + b + c + d
+}
+
+fn sum_s1(s: &[u32]) -> u32 {
+ s1(s[0])
+}
+
+fn sum_s2(s: &[u32]) -> u32 {
+ s2(s[0], s[1])
+}
+
+fn sum_s3(s: &[u32]) -> u32 {
+ s3(s[0], s[1], s[2])
+}
+
+fn sum_s4(s: &[u32]) -> u32 {
+ s4(s[0], s[1], s[2], s[3])
+}
+
+fn sum_t1(s: &(&u32, )) -> u32 {
+ s1(*s.0)
+}
+
+fn sum_t2(s: &(&u32, &u32)) -> u32 {
+ s2(*s.0, *s.1)
+}
+
+fn sum_t3(s: &(&u32, &u32, &u32)) -> u32 {
+ s3(*s.0, *s.1, *s.2)
+}
+
+fn sum_t4(s: &(&u32, &u32, &u32, &u32)) -> u32 {
+ s4(*s.0, *s.1, *s.2, *s.3)
+}
+
+macro_rules! def_benchs {
+ ($N:expr;
+ $BENCH_GROUP:ident,
+ $TUPLE_FUN:ident,
+ $TUPLES:ident,
+ $TUPLE_WINDOWS:ident;
+ $SLICE_FUN:ident,
+ $CHUNKS:ident,
+ $WINDOWS:ident;
+ $FOR_CHUNKS:ident,
+ $FOR_WINDOWS:ident
+ ) => (
+ fn $FOR_CHUNKS(c: &mut Criterion) {
+ let v: Vec<u32> = (0.. $N * 1_000).collect();
+ let mut s = 0;
+ c.bench_function(&stringify!($FOR_CHUNKS).replace('_', " "), move |b| {
+ b.iter(|| {
+ let mut j = 0;
+ for _ in 0..1_000 {
+ s += $SLICE_FUN(&v[j..(j + $N)]);
+ j += $N;
+ }
+ s
+ })
+ });
+ }
+
+ fn $FOR_WINDOWS(c: &mut Criterion) {
+ let v: Vec<u32> = (0..1_000).collect();
+ let mut s = 0;
+ c.bench_function(&stringify!($FOR_WINDOWS).replace('_', " "), move |b| {
+ b.iter(|| {
+ for i in 0..(1_000 - $N) {
+ s += $SLICE_FUN(&v[i..(i + $N)]);
+ }
+ s
+ })
+ });
+ }
+
+ fn $TUPLES(c: &mut Criterion) {
+ let v: Vec<u32> = (0.. $N * 1_000).collect();
+ let mut s = 0;
+ c.bench_function(&stringify!($TUPLES).replace('_', " "), move |b| {
+ b.iter(|| {
+ for x in v.iter().tuples() {
+ s += $TUPLE_FUN(&x);
+ }
+ s
+ })
+ });
+ }
+
+ fn $CHUNKS(c: &mut Criterion) {
+ let v: Vec<u32> = (0.. $N * 1_000).collect();
+ let mut s = 0;
+ c.bench_function(&stringify!($CHUNKS).replace('_', " "), move |b| {
+ b.iter(|| {
+ for x in v.chunks($N) {
+ s += $SLICE_FUN(x);
+ }
+ s
+ })
+ });
+ }
+
+ fn $TUPLE_WINDOWS(c: &mut Criterion) {
+ let v: Vec<u32> = (0..1_000).collect();
+ let mut s = 0;
+ c.bench_function(&stringify!($TUPLE_WINDOWS).replace('_', " "), move |b| {
+ b.iter(|| {
+ for x in v.iter().tuple_windows() {
+ s += $TUPLE_FUN(&x);
+ }
+ s
+ })
+ });
+ }
+
+ fn $WINDOWS(c: &mut Criterion) {
+ let v: Vec<u32> = (0..1_000).collect();
+ let mut s = 0;
+ c.bench_function(&stringify!($WINDOWS).replace('_', " "), move |b| {
+ b.iter(|| {
+ for x in v.windows($N) {
+ s += $SLICE_FUN(x);
+ }
+ s
+ })
+ });
+ }
+
+ criterion_group!(
+ $BENCH_GROUP,
+ $FOR_CHUNKS,
+ $FOR_WINDOWS,
+ $TUPLES,
+ $CHUNKS,
+ $TUPLE_WINDOWS,
+ $WINDOWS,
+ );
+ )
+}
+
+def_benchs!{
+ 1;
+ benches_1,
+ sum_t1,
+ tuple_chunks_1,
+ tuple_windows_1;
+ sum_s1,
+ slice_chunks_1,
+ slice_windows_1;
+ for_chunks_1,
+ for_windows_1
+}
+
+def_benchs!{
+ 2;
+ benches_2,
+ sum_t2,
+ tuple_chunks_2,
+ tuple_windows_2;
+ sum_s2,
+ slice_chunks_2,
+ slice_windows_2;
+ for_chunks_2,
+ for_windows_2
+}
+
+def_benchs!{
+ 3;
+ benches_3,
+ sum_t3,
+ tuple_chunks_3,
+ tuple_windows_3;
+ sum_s3,
+ slice_chunks_3,
+ slice_windows_3;
+ for_chunks_3,
+ for_windows_3
+}
+
+def_benchs!{
+ 4;
+ benches_4,
+ sum_t4,
+ tuple_chunks_4,
+ tuple_windows_4;
+ sum_s4,
+ slice_chunks_4,
+ slice_windows_4;
+ for_chunks_4,
+ for_windows_4
+}
+
+criterion_main!(
+ benches_1,
+ benches_2,
+ benches_3,
+ benches_4,
+);
diff --git a/vendor/itertools/clippy.toml b/vendor/itertools-0.10.5/clippy.toml
index 0a5485386..0a5485386 100644
--- a/vendor/itertools/clippy.toml
+++ b/vendor/itertools-0.10.5/clippy.toml
diff --git a/vendor/itertools-0.10.5/examples/iris.data b/vendor/itertools-0.10.5/examples/iris.data
new file mode 100644
index 000000000..a3490e0e0
--- /dev/null
+++ b/vendor/itertools-0.10.5/examples/iris.data
@@ -0,0 +1,150 @@
+5.1,3.5,1.4,0.2,Iris-setosa
+4.9,3.0,1.4,0.2,Iris-setosa
+4.7,3.2,1.3,0.2,Iris-setosa
+4.6,3.1,1.5,0.2,Iris-setosa
+5.0,3.6,1.4,0.2,Iris-setosa
+5.4,3.9,1.7,0.4,Iris-setosa
+4.6,3.4,1.4,0.3,Iris-setosa
+5.0,3.4,1.5,0.2,Iris-setosa
+4.4,2.9,1.4,0.2,Iris-setosa
+4.9,3.1,1.5,0.1,Iris-setosa
+5.4,3.7,1.5,0.2,Iris-setosa
+4.8,3.4,1.6,0.2,Iris-setosa
+4.8,3.0,1.4,0.1,Iris-setosa
+4.3,3.0,1.1,0.1,Iris-setosa
+5.8,4.0,1.2,0.2,Iris-setosa
+5.7,4.4,1.5,0.4,Iris-setosa
+5.4,3.9,1.3,0.4,Iris-setosa
+5.1,3.5,1.4,0.3,Iris-setosa
+5.7,3.8,1.7,0.3,Iris-setosa
+5.1,3.8,1.5,0.3,Iris-setosa
+5.4,3.4,1.7,0.2,Iris-setosa
+5.1,3.7,1.5,0.4,Iris-setosa
+4.6,3.6,1.0,0.2,Iris-setosa
+5.1,3.3,1.7,0.5,Iris-setosa
+4.8,3.4,1.9,0.2,Iris-setosa
+5.0,3.0,1.6,0.2,Iris-setosa
+5.0,3.4,1.6,0.4,Iris-setosa
+5.2,3.5,1.5,0.2,Iris-setosa
+5.2,3.4,1.4,0.2,Iris-setosa
+4.7,3.2,1.6,0.2,Iris-setosa
+4.8,3.1,1.6,0.2,Iris-setosa
+5.4,3.4,1.5,0.4,Iris-setosa
+5.2,4.1,1.5,0.1,Iris-setosa
+5.5,4.2,1.4,0.2,Iris-setosa
+4.9,3.1,1.5,0.1,Iris-setosa
+5.0,3.2,1.2,0.2,Iris-setosa
+5.5,3.5,1.3,0.2,Iris-setosa
+4.9,3.1,1.5,0.1,Iris-setosa
+4.4,3.0,1.3,0.2,Iris-setosa
+5.1,3.4,1.5,0.2,Iris-setosa
+5.0,3.5,1.3,0.3,Iris-setosa
+4.5,2.3,1.3,0.3,Iris-setosa
+4.4,3.2,1.3,0.2,Iris-setosa
+5.0,3.5,1.6,0.6,Iris-setosa
+5.1,3.8,1.9,0.4,Iris-setosa
+4.8,3.0,1.4,0.3,Iris-setosa
+5.1,3.8,1.6,0.2,Iris-setosa
+4.6,3.2,1.4,0.2,Iris-setosa
+5.3,3.7,1.5,0.2,Iris-setosa
+5.0,3.3,1.4,0.2,Iris-setosa
+7.0,3.2,4.7,1.4,Iris-versicolor
+6.4,3.2,4.5,1.5,Iris-versicolor
+6.9,3.1,4.9,1.5,Iris-versicolor
+5.5,2.3,4.0,1.3,Iris-versicolor
+6.5,2.8,4.6,1.5,Iris-versicolor
+5.7,2.8,4.5,1.3,Iris-versicolor
+6.3,3.3,4.7,1.6,Iris-versicolor
+4.9,2.4,3.3,1.0,Iris-versicolor
+6.6,2.9,4.6,1.3,Iris-versicolor
+5.2,2.7,3.9,1.4,Iris-versicolor
+5.0,2.0,3.5,1.0,Iris-versicolor
+5.9,3.0,4.2,1.5,Iris-versicolor
+6.0,2.2,4.0,1.0,Iris-versicolor
+6.1,2.9,4.7,1.4,Iris-versicolor
+5.6,2.9,3.6,1.3,Iris-versicolor
+6.7,3.1,4.4,1.4,Iris-versicolor
+5.6,3.0,4.5,1.5,Iris-versicolor
+5.8,2.7,4.1,1.0,Iris-versicolor
+6.2,2.2,4.5,1.5,Iris-versicolor
+5.6,2.5,3.9,1.1,Iris-versicolor
+5.9,3.2,4.8,1.8,Iris-versicolor
+6.1,2.8,4.0,1.3,Iris-versicolor
+6.3,2.5,4.9,1.5,Iris-versicolor
+6.1,2.8,4.7,1.2,Iris-versicolor
+6.4,2.9,4.3,1.3,Iris-versicolor
+6.6,3.0,4.4,1.4,Iris-versicolor
+6.8,2.8,4.8,1.4,Iris-versicolor
+6.7,3.0,5.0,1.7,Iris-versicolor
+6.0,2.9,4.5,1.5,Iris-versicolor
+5.7,2.6,3.5,1.0,Iris-versicolor
+5.5,2.4,3.8,1.1,Iris-versicolor
+5.5,2.4,3.7,1.0,Iris-versicolor
+5.8,2.7,3.9,1.2,Iris-versicolor
+6.0,2.7,5.1,1.6,Iris-versicolor
+5.4,3.0,4.5,1.5,Iris-versicolor
+6.0,3.4,4.5,1.6,Iris-versicolor
+6.7,3.1,4.7,1.5,Iris-versicolor
+6.3,2.3,4.4,1.3,Iris-versicolor
+5.6,3.0,4.1,1.3,Iris-versicolor
+5.5,2.5,4.0,1.3,Iris-versicolor
+5.5,2.6,4.4,1.2,Iris-versicolor
+6.1,3.0,4.6,1.4,Iris-versicolor
+5.8,2.6,4.0,1.2,Iris-versicolor
+5.0,2.3,3.3,1.0,Iris-versicolor
+5.6,2.7,4.2,1.3,Iris-versicolor
+5.7,3.0,4.2,1.2,Iris-versicolor
+5.7,2.9,4.2,1.3,Iris-versicolor
+6.2,2.9,4.3,1.3,Iris-versicolor
+5.1,2.5,3.0,1.1,Iris-versicolor
+5.7,2.8,4.1,1.3,Iris-versicolor
+6.3,3.3,6.0,2.5,Iris-virginica
+5.8,2.7,5.1,1.9,Iris-virginica
+7.1,3.0,5.9,2.1,Iris-virginica
+6.3,2.9,5.6,1.8,Iris-virginica
+6.5,3.0,5.8,2.2,Iris-virginica
+7.6,3.0,6.6,2.1,Iris-virginica
+4.9,2.5,4.5,1.7,Iris-virginica
+7.3,2.9,6.3,1.8,Iris-virginica
+6.7,2.5,5.8,1.8,Iris-virginica
+7.2,3.6,6.1,2.5,Iris-virginica
+6.5,3.2,5.1,2.0,Iris-virginica
+6.4,2.7,5.3,1.9,Iris-virginica
+6.8,3.0,5.5,2.1,Iris-virginica
+5.7,2.5,5.0,2.0,Iris-virginica
+5.8,2.8,5.1,2.4,Iris-virginica
+6.4,3.2,5.3,2.3,Iris-virginica
+6.5,3.0,5.5,1.8,Iris-virginica
+7.7,3.8,6.7,2.2,Iris-virginica
+7.7,2.6,6.9,2.3,Iris-virginica
+6.0,2.2,5.0,1.5,Iris-virginica
+6.9,3.2,5.7,2.3,Iris-virginica
+5.6,2.8,4.9,2.0,Iris-virginica
+7.7,2.8,6.7,2.0,Iris-virginica
+6.3,2.7,4.9,1.8,Iris-virginica
+6.7,3.3,5.7,2.1,Iris-virginica
+7.2,3.2,6.0,1.8,Iris-virginica
+6.2,2.8,4.8,1.8,Iris-virginica
+6.1,3.0,4.9,1.8,Iris-virginica
+6.4,2.8,5.6,2.1,Iris-virginica
+7.2,3.0,5.8,1.6,Iris-virginica
+7.4,2.8,6.1,1.9,Iris-virginica
+7.9,3.8,6.4,2.0,Iris-virginica
+6.4,2.8,5.6,2.2,Iris-virginica
+6.3,2.8,5.1,1.5,Iris-virginica
+6.1,2.6,5.6,1.4,Iris-virginica
+7.7,3.0,6.1,2.3,Iris-virginica
+6.3,3.4,5.6,2.4,Iris-virginica
+6.4,3.1,5.5,1.8,Iris-virginica
+6.0,3.0,4.8,1.8,Iris-virginica
+6.9,3.1,5.4,2.1,Iris-virginica
+6.7,3.1,5.6,2.4,Iris-virginica
+6.9,3.1,5.1,2.3,Iris-virginica
+5.8,2.7,5.1,1.9,Iris-virginica
+6.8,3.2,5.9,2.3,Iris-virginica
+6.7,3.3,5.7,2.5,Iris-virginica
+6.7,3.0,5.2,2.3,Iris-virginica
+6.3,2.5,5.0,1.9,Iris-virginica
+6.5,3.0,5.2,2.0,Iris-virginica
+6.2,3.4,5.4,2.3,Iris-virginica
+5.9,3.0,5.1,1.8,Iris-virginica
diff --git a/vendor/itertools-0.10.5/examples/iris.rs b/vendor/itertools-0.10.5/examples/iris.rs
new file mode 100644
index 000000000..987d9e9cb
--- /dev/null
+++ b/vendor/itertools-0.10.5/examples/iris.rs
@@ -0,0 +1,137 @@
+///
+/// This example parses, sorts and groups the iris dataset
+/// and does some simple manipulations.
+///
+/// Iterators and itertools functionality are used throughout.
+
+use itertools::Itertools;
+use std::collections::HashMap;
+use std::iter::repeat;
+use std::num::ParseFloatError;
+use std::str::FromStr;
+
+static DATA: &'static str = include_str!("iris.data");
+
+#[derive(Clone, Debug)]
+struct Iris {
+ name: String,
+ data: [f32; 4],
+}
+
+#[derive(Clone, Debug)]
+enum ParseError {
+ Numeric(ParseFloatError),
+ Other(&'static str),
+}
+
+impl From<ParseFloatError> for ParseError {
+ fn from(err: ParseFloatError) -> Self {
+ ParseError::Numeric(err)
+ }
+}
+
+/// Parse an Iris from a comma-separated line
+impl FromStr for Iris {
+ type Err = ParseError;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ let mut iris = Iris { name: "".into(), data: [0.; 4] };
+ let mut parts = s.split(",").map(str::trim);
+
+ // using Iterator::by_ref()
+ for (index, part) in parts.by_ref().take(4).enumerate() {
+ iris.data[index] = part.parse::<f32>()?;
+ }
+ if let Some(name) = parts.next() {
+ iris.name = name.into();
+ } else {
+ return Err(ParseError::Other("Missing name"))
+ }
+ Ok(iris)
+ }
+}
+
+fn main() {
+ // using Itertools::fold_results to create the result of parsing
+ let irises = DATA.lines()
+ .map(str::parse)
+ .fold_ok(Vec::new(), |mut v, iris: Iris| {
+ v.push(iris);
+ v
+ });
+ let mut irises = match irises {
+ Err(e) => {
+ println!("Error parsing: {:?}", e);
+ std::process::exit(1);
+ }
+ Ok(data) => data,
+ };
+
+ // Sort them and group them
+ irises.sort_by(|a, b| Ord::cmp(&a.name, &b.name));
+
+ // using Iterator::cycle()
+ let mut plot_symbols = "+ox".chars().cycle();
+ let mut symbolmap = HashMap::new();
+
+ // using Itertools::group_by
+ for (species, species_group) in &irises.iter().group_by(|iris| &iris.name) {
+ // assign a plot symbol
+ symbolmap.entry(species).or_insert_with(|| {
+ plot_symbols.next().unwrap()
+ });
+ println!("{} (symbol={})", species, symbolmap[species]);
+
+ for iris in species_group {
+ // using Itertools::format for lazy formatting
+ println!("{:>3.1}", iris.data.iter().format(", "));
+ }
+
+ }
+
+ // Look at all combinations of the four columns
+ //
+ // See https://en.wikipedia.org/wiki/Iris_flower_data_set
+ //
+ let n = 30; // plot size
+ let mut plot = vec![' '; n * n];
+
+ // using Itertools::tuple_combinations
+ for (a, b) in (0..4).tuple_combinations() {
+ println!("Column {} vs {}:", a, b);
+
+ // Clear plot
+ //
+ // using std::iter::repeat;
+ // using Itertools::set_from
+ plot.iter_mut().set_from(repeat(' '));
+
+ // using Itertools::minmax
+ let min_max = |data: &[Iris], col| {
+ data.iter()
+ .map(|iris| iris.data[col])
+ .minmax()
+ .into_option()
+ .expect("Can't find min/max of empty iterator")
+ };
+ let (min_x, max_x) = min_max(&irises, a);
+ let (min_y, max_y) = min_max(&irises, b);
+
+ // Plot the data points
+ let round_to_grid = |x, min, max| ((x - min) / (max - min) * ((n - 1) as f32)) as usize;
+ let flip = |ix| n - 1 - ix; // reverse axis direction
+
+ for iris in &irises {
+ let ix = round_to_grid(iris.data[a], min_x, max_x);
+ let iy = flip(round_to_grid(iris.data[b], min_y, max_y));
+ plot[n * iy + ix] = symbolmap[&iris.name];
+ }
+
+ // render plot
+ //
+ // using Itertools::join
+ for line in plot.chunks(n) {
+ println!("{}", line.iter().join(" "))
+ }
+ }
+}
diff --git a/vendor/itertools-0.10.5/src/adaptors/coalesce.rs b/vendor/itertools-0.10.5/src/adaptors/coalesce.rs
new file mode 100644
index 000000000..3df7cc582
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/adaptors/coalesce.rs
@@ -0,0 +1,235 @@
+use std::fmt;
+use std::iter::FusedIterator;
+
+use crate::size_hint;
+
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct CoalesceBy<I, F, T>
+where
+ I: Iterator,
+{
+ iter: I,
+ last: Option<T>,
+ f: F,
+}
+
+impl<I: Clone, F: Clone, T: Clone> Clone for CoalesceBy<I, F, T>
+where
+ I: Iterator,
+{
+ clone_fields!(last, iter, f);
+}
+
+impl<I, F, T> fmt::Debug for CoalesceBy<I, F, T>
+where
+ I: Iterator + fmt::Debug,
+ T: fmt::Debug,
+{
+ debug_fmt_fields!(CoalesceBy, iter);
+}
+
+pub trait CoalescePredicate<Item, T> {
+ fn coalesce_pair(&mut self, t: T, item: Item) -> Result<T, (T, T)>;
+}
+
+impl<I, F, T> Iterator for CoalesceBy<I, F, T>
+where
+ I: Iterator,
+ F: CoalescePredicate<I::Item, T>,
+{
+ type Item = T;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ // this fuses the iterator
+ let last = self.last.take()?;
+
+ let self_last = &mut self.last;
+ let self_f = &mut self.f;
+ Some(
+ self.iter
+ .try_fold(last, |last, next| match self_f.coalesce_pair(last, next) {
+ Ok(joined) => Ok(joined),
+ Err((last_, next_)) => {
+ *self_last = Some(next_);
+ Err(last_)
+ }
+ })
+ .unwrap_or_else(|x| x),
+ )
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ let (low, hi) = size_hint::add_scalar(self.iter.size_hint(), self.last.is_some() as usize);
+ ((low > 0) as usize, hi)
+ }
+
+ fn fold<Acc, FnAcc>(self, acc: Acc, mut fn_acc: FnAcc) -> Acc
+ where
+ FnAcc: FnMut(Acc, Self::Item) -> Acc,
+ {
+ if let Some(last) = self.last {
+ let mut f = self.f;
+ let (last, acc) = self.iter.fold((last, acc), |(last, acc), elt| {
+ match f.coalesce_pair(last, elt) {
+ Ok(joined) => (joined, acc),
+ Err((last_, next_)) => (next_, fn_acc(acc, last_)),
+ }
+ });
+ fn_acc(acc, last)
+ } else {
+ acc
+ }
+ }
+}
+
+impl<I: Iterator, F: CoalescePredicate<I::Item, T>, T> FusedIterator for CoalesceBy<I, F, T> {}
+
+/// An iterator adaptor that may join together adjacent elements.
+///
+/// See [`.coalesce()`](crate::Itertools::coalesce) for more information.
+pub type Coalesce<I, F> = CoalesceBy<I, F, <I as Iterator>::Item>;
+
+impl<F, Item, T> CoalescePredicate<Item, T> for F
+where
+ F: FnMut(T, Item) -> Result<T, (T, T)>,
+{
+ fn coalesce_pair(&mut self, t: T, item: Item) -> Result<T, (T, T)> {
+ self(t, item)
+ }
+}
+
+/// Create a new `Coalesce`.
+pub fn coalesce<I, F>(mut iter: I, f: F) -> Coalesce<I, F>
+where
+ I: Iterator,
+{
+ Coalesce {
+ last: iter.next(),
+ iter,
+ f,
+ }
+}
+
+/// An iterator adaptor that removes repeated duplicates, determining equality using a comparison function.
+///
+/// See [`.dedup_by()`](crate::Itertools::dedup_by) or [`.dedup()`](crate::Itertools::dedup) for more information.
+pub type DedupBy<I, Pred> = CoalesceBy<I, DedupPred2CoalescePred<Pred>, <I as Iterator>::Item>;
+
+#[derive(Clone)]
+pub struct DedupPred2CoalescePred<DP>(DP);
+
+impl<DP> fmt::Debug for DedupPred2CoalescePred<DP> {
+ debug_fmt_fields!(DedupPred2CoalescePred,);
+}
+
+pub trait DedupPredicate<T> {
+ // TODO replace by Fn(&T, &T)->bool once Rust supports it
+ fn dedup_pair(&mut self, a: &T, b: &T) -> bool;
+}
+
+impl<DP, T> CoalescePredicate<T, T> for DedupPred2CoalescePred<DP>
+where
+ DP: DedupPredicate<T>,
+{
+ fn coalesce_pair(&mut self, t: T, item: T) -> Result<T, (T, T)> {
+ if self.0.dedup_pair(&t, &item) {
+ Ok(t)
+ } else {
+ Err((t, item))
+ }
+ }
+}
+
+#[derive(Clone, Debug)]
+pub struct DedupEq;
+
+impl<T: PartialEq> DedupPredicate<T> for DedupEq {
+ fn dedup_pair(&mut self, a: &T, b: &T) -> bool {
+ a == b
+ }
+}
+
+impl<T, F: FnMut(&T, &T) -> bool> DedupPredicate<T> for F {
+ fn dedup_pair(&mut self, a: &T, b: &T) -> bool {
+ self(a, b)
+ }
+}
+
+/// Create a new `DedupBy`.
+pub fn dedup_by<I, Pred>(mut iter: I, dedup_pred: Pred) -> DedupBy<I, Pred>
+where
+ I: Iterator,
+{
+ DedupBy {
+ last: iter.next(),
+ iter,
+ f: DedupPred2CoalescePred(dedup_pred),
+ }
+}
+
+/// An iterator adaptor that removes repeated duplicates.
+///
+/// See [`.dedup()`](crate::Itertools::dedup) for more information.
+pub type Dedup<I> = DedupBy<I, DedupEq>;
+
+/// Create a new `Dedup`.
+pub fn dedup<I>(iter: I) -> Dedup<I>
+where
+ I: Iterator,
+{
+ dedup_by(iter, DedupEq)
+}
+
+/// An iterator adaptor that removes repeated duplicates, while keeping a count of how many
+/// repeated elements were present. This will determine equality using a comparison function.
+///
+/// See [`.dedup_by_with_count()`](crate::Itertools::dedup_by_with_count) or
+/// [`.dedup_with_count()`](crate::Itertools::dedup_with_count) for more information.
+pub type DedupByWithCount<I, Pred> =
+ CoalesceBy<I, DedupPredWithCount2CoalescePred<Pred>, (usize, <I as Iterator>::Item)>;
+
+#[derive(Clone, Debug)]
+pub struct DedupPredWithCount2CoalescePred<DP>(DP);
+
+impl<DP, T> CoalescePredicate<T, (usize, T)> for DedupPredWithCount2CoalescePred<DP>
+where
+ DP: DedupPredicate<T>,
+{
+ fn coalesce_pair(
+ &mut self,
+ (c, t): (usize, T),
+ item: T,
+ ) -> Result<(usize, T), ((usize, T), (usize, T))> {
+ if self.0.dedup_pair(&t, &item) {
+ Ok((c + 1, t))
+ } else {
+ Err(((c, t), (1, item)))
+ }
+ }
+}
+
+/// An iterator adaptor that removes repeated duplicates, while keeping a count of how many
+/// repeated elements were present.
+///
+/// See [`.dedup_with_count()`](crate::Itertools::dedup_with_count) for more information.
+pub type DedupWithCount<I> = DedupByWithCount<I, DedupEq>;
+
+/// Create a new `DedupByWithCount`.
+pub fn dedup_by_with_count<I, Pred>(mut iter: I, dedup_pred: Pred) -> DedupByWithCount<I, Pred>
+where
+ I: Iterator,
+{
+ DedupByWithCount {
+ last: iter.next().map(|v| (1, v)),
+ iter,
+ f: DedupPredWithCount2CoalescePred(dedup_pred),
+ }
+}
+
+/// Create a new `DedupWithCount`.
+pub fn dedup_with_count<I>(iter: I) -> DedupWithCount<I>
+where
+ I: Iterator,
+{
+ dedup_by_with_count(iter, DedupEq)
+}
diff --git a/vendor/itertools-0.10.5/src/adaptors/map.rs b/vendor/itertools-0.10.5/src/adaptors/map.rs
new file mode 100644
index 000000000..cf5e5a00d
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/adaptors/map.rs
@@ -0,0 +1,124 @@
+use std::iter::FromIterator;
+use std::marker::PhantomData;
+
+#[derive(Clone, Debug)]
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct MapSpecialCase<I, F> {
+ iter: I,
+ f: F,
+}
+
+pub trait MapSpecialCaseFn<T> {
+ type Out;
+ fn call(&mut self, t: T) -> Self::Out;
+}
+
+impl<I, R> Iterator for MapSpecialCase<I, R>
+where
+ I: Iterator,
+ R: MapSpecialCaseFn<I::Item>,
+{
+ type Item = R::Out;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ self.iter.next().map(|i| self.f.call(i))
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ self.iter.size_hint()
+ }
+
+ fn fold<Acc, Fold>(self, init: Acc, mut fold_f: Fold) -> Acc
+ where
+ Fold: FnMut(Acc, Self::Item) -> Acc,
+ {
+ let mut f = self.f;
+ self.iter.fold(init, move |acc, v| fold_f(acc, f.call(v)))
+ }
+
+ fn collect<C>(self) -> C
+ where
+ C: FromIterator<Self::Item>,
+ {
+ let mut f = self.f;
+ self.iter.map(move |v| f.call(v)).collect()
+ }
+}
+
+impl<I, R> DoubleEndedIterator for MapSpecialCase<I, R>
+where
+ I: DoubleEndedIterator,
+ R: MapSpecialCaseFn<I::Item>,
+{
+ fn next_back(&mut self) -> Option<Self::Item> {
+ self.iter.next_back().map(|i| self.f.call(i))
+ }
+}
+
+impl<I, R> ExactSizeIterator for MapSpecialCase<I, R>
+where
+ I: ExactSizeIterator,
+ R: MapSpecialCaseFn<I::Item>,
+{
+}
+
+/// An iterator adapter to apply a transformation within a nested `Result::Ok`.
+///
+/// See [`.map_ok()`](crate::Itertools::map_ok) for more information.
+pub type MapOk<I, F> = MapSpecialCase<I, MapSpecialCaseFnOk<F>>;
+
+/// See [`MapOk`].
+#[deprecated(note = "Use MapOk instead", since = "0.10.0")]
+pub type MapResults<I, F> = MapOk<I, F>;
+
+impl<F, T, U, E> MapSpecialCaseFn<Result<T, E>> for MapSpecialCaseFnOk<F>
+where
+ F: FnMut(T) -> U,
+{
+ type Out = Result<U, E>;
+ fn call(&mut self, t: Result<T, E>) -> Self::Out {
+ t.map(|v| self.0(v))
+ }
+}
+
+#[derive(Clone)]
+pub struct MapSpecialCaseFnOk<F>(F);
+
+impl<F> std::fmt::Debug for MapSpecialCaseFnOk<F> {
+ debug_fmt_fields!(MapSpecialCaseFnOk,);
+}
+
+/// Create a new `MapOk` iterator.
+pub fn map_ok<I, F, T, U, E>(iter: I, f: F) -> MapOk<I, F>
+where
+ I: Iterator<Item = Result<T, E>>,
+ F: FnMut(T) -> U,
+{
+ MapSpecialCase {
+ iter,
+ f: MapSpecialCaseFnOk(f),
+ }
+}
+
+/// An iterator adapter to apply `Into` conversion to each element.
+///
+/// See [`.map_into()`](crate::Itertools::map_into) for more information.
+pub type MapInto<I, R> = MapSpecialCase<I, MapSpecialCaseFnInto<R>>;
+
+impl<T: Into<U>, U> MapSpecialCaseFn<T> for MapSpecialCaseFnInto<U> {
+ type Out = U;
+ fn call(&mut self, t: T) -> Self::Out {
+ t.into()
+ }
+}
+
+#[derive(Clone, Debug)]
+pub struct MapSpecialCaseFnInto<U>(PhantomData<U>);
+
+/// Create a new [`MapInto`] iterator.
+pub fn map_into<I, R>(iter: I) -> MapInto<I, R> {
+ MapSpecialCase {
+ iter,
+ f: MapSpecialCaseFnInto(PhantomData),
+ }
+}
diff --git a/vendor/itertools-0.10.5/src/adaptors/mod.rs b/vendor/itertools-0.10.5/src/adaptors/mod.rs
new file mode 100644
index 000000000..1695bbd65
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/adaptors/mod.rs
@@ -0,0 +1,1151 @@
+//! Licensed under the Apache License, Version 2.0
+//! <https://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+//! <https://opensource.org/licenses/MIT>, at your
+//! option. This file may not be copied, modified, or distributed
+//! except according to those terms.
+
+mod coalesce;
+mod map;
+mod multi_product;
+pub use self::coalesce::*;
+pub use self::map::{map_into, map_ok, MapInto, MapOk};
+#[allow(deprecated)]
+pub use self::map::MapResults;
+#[cfg(feature = "use_alloc")]
+pub use self::multi_product::*;
+
+use std::fmt;
+use std::iter::{Fuse, Peekable, FromIterator, FusedIterator};
+use std::marker::PhantomData;
+use crate::size_hint;
+
+/// An iterator adaptor that alternates elements from two iterators until both
+/// run out.
+///
+/// This iterator is *fused*.
+///
+/// See [`.interleave()`](crate::Itertools::interleave) for more information.
+#[derive(Clone, Debug)]
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct Interleave<I, J> {
+ a: Fuse<I>,
+ b: Fuse<J>,
+ flag: bool,
+}
+
+/// Create an iterator that interleaves elements in `i` and `j`.
+///
+/// [`IntoIterator`] enabled version of `[Itertools::interleave]`.
+pub fn interleave<I, J>(i: I, j: J) -> Interleave<<I as IntoIterator>::IntoIter, <J as IntoIterator>::IntoIter>
+ where I: IntoIterator,
+ J: IntoIterator<Item = I::Item>
+{
+ Interleave {
+ a: i.into_iter().fuse(),
+ b: j.into_iter().fuse(),
+ flag: false,
+ }
+}
+
+impl<I, J> Iterator for Interleave<I, J>
+ where I: Iterator,
+ J: Iterator<Item = I::Item>
+{
+ type Item = I::Item;
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ self.flag = !self.flag;
+ if self.flag {
+ match self.a.next() {
+ None => self.b.next(),
+ r => r,
+ }
+ } else {
+ match self.b.next() {
+ None => self.a.next(),
+ r => r,
+ }
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ size_hint::add(self.a.size_hint(), self.b.size_hint())
+ }
+}
+
+impl<I, J> FusedIterator for Interleave<I, J>
+ where I: Iterator,
+ J: Iterator<Item = I::Item>
+{}
+
+/// An iterator adaptor that alternates elements from the two iterators until
+/// one of them runs out.
+///
+/// This iterator is *fused*.
+///
+/// See [`.interleave_shortest()`](crate::Itertools::interleave_shortest)
+/// for more information.
+#[derive(Clone, Debug)]
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct InterleaveShortest<I, J>
+ where I: Iterator,
+ J: Iterator<Item = I::Item>
+{
+ it0: I,
+ it1: J,
+ phase: bool, // false ==> it0, true ==> it1
+}
+
+/// Create a new `InterleaveShortest` iterator.
+pub fn interleave_shortest<I, J>(a: I, b: J) -> InterleaveShortest<I, J>
+ where I: Iterator,
+ J: Iterator<Item = I::Item>
+{
+ InterleaveShortest {
+ it0: a,
+ it1: b,
+ phase: false,
+ }
+}
+
+impl<I, J> Iterator for InterleaveShortest<I, J>
+ where I: Iterator,
+ J: Iterator<Item = I::Item>
+{
+ type Item = I::Item;
+
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ let e = if self.phase { self.it1.next() } else { self.it0.next() };
+ if e.is_some() {
+ self.phase = !self.phase;
+ }
+ e
+ }
+
+ #[inline]
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ let (curr_hint, next_hint) = {
+ let it0_hint = self.it0.size_hint();
+ let it1_hint = self.it1.size_hint();
+ if self.phase {
+ (it1_hint, it0_hint)
+ } else {
+ (it0_hint, it1_hint)
+ }
+ };
+ let (curr_lower, curr_upper) = curr_hint;
+ let (next_lower, next_upper) = next_hint;
+ let (combined_lower, combined_upper) =
+ size_hint::mul_scalar(size_hint::min(curr_hint, next_hint), 2);
+ let lower =
+ if curr_lower > next_lower {
+ combined_lower + 1
+ } else {
+ combined_lower
+ };
+ let upper = {
+ let extra_elem = match (curr_upper, next_upper) {
+ (_, None) => false,
+ (None, Some(_)) => true,
+ (Some(curr_max), Some(next_max)) => curr_max > next_max,
+ };
+ if extra_elem {
+ combined_upper.and_then(|x| x.checked_add(1))
+ } else {
+ combined_upper
+ }
+ };
+ (lower, upper)
+ }
+}
+
+impl<I, J> FusedIterator for InterleaveShortest<I, J>
+ where I: FusedIterator,
+ J: FusedIterator<Item = I::Item>
+{}
+
+#[derive(Clone, Debug)]
+/// An iterator adaptor that allows putting back a single
+/// item to the front of the iterator.
+///
+/// Iterator element type is `I::Item`.
+pub struct PutBack<I>
+ where I: Iterator
+{
+ top: Option<I::Item>,
+ iter: I,
+}
+
+/// Create an iterator where you can put back a single item
+pub fn put_back<I>(iterable: I) -> PutBack<I::IntoIter>
+ where I: IntoIterator
+{
+ PutBack {
+ top: None,
+ iter: iterable.into_iter(),
+ }
+}
+
+impl<I> PutBack<I>
+ where I: Iterator
+{
+ /// put back value `value` (builder method)
+ pub fn with_value(mut self, value: I::Item) -> Self {
+ self.put_back(value);
+ self
+ }
+
+ /// Split the `PutBack` into its parts.
+ #[inline]
+ pub fn into_parts(self) -> (Option<I::Item>, I) {
+ let PutBack{top, iter} = self;
+ (top, iter)
+ }
+
+ /// Put back a single value to the front of the iterator.
+ ///
+ /// If a value is already in the put back slot, it is overwritten.
+ #[inline]
+ pub fn put_back(&mut self, x: I::Item) {
+ self.top = Some(x);
+ }
+}
+
+impl<I> Iterator for PutBack<I>
+ where I: Iterator
+{
+ type Item = I::Item;
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ match self.top {
+ None => self.iter.next(),
+ ref mut some => some.take(),
+ }
+ }
+ #[inline]
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ // Not ExactSizeIterator because size may be larger than usize
+ size_hint::add_scalar(self.iter.size_hint(), self.top.is_some() as usize)
+ }
+
+ fn count(self) -> usize {
+ self.iter.count() + (self.top.is_some() as usize)
+ }
+
+ fn last(self) -> Option<Self::Item> {
+ self.iter.last().or(self.top)
+ }
+
+ fn nth(&mut self, n: usize) -> Option<Self::Item> {
+ match self.top {
+ None => self.iter.nth(n),
+ ref mut some => {
+ if n == 0 {
+ some.take()
+ } else {
+ *some = None;
+ self.iter.nth(n - 1)
+ }
+ }
+ }
+ }
+
+ fn all<G>(&mut self, mut f: G) -> bool
+ where G: FnMut(Self::Item) -> bool
+ {
+ if let Some(elt) = self.top.take() {
+ if !f(elt) {
+ return false;
+ }
+ }
+ self.iter.all(f)
+ }
+
+ fn fold<Acc, G>(mut self, init: Acc, mut f: G) -> Acc
+ where G: FnMut(Acc, Self::Item) -> Acc,
+ {
+ let mut accum = init;
+ if let Some(elt) = self.top.take() {
+ accum = f(accum, elt);
+ }
+ self.iter.fold(accum, f)
+ }
+}
+
+#[derive(Debug, Clone)]
+/// An iterator adaptor that iterates over the cartesian product of
+/// the element sets of two iterators `I` and `J`.
+///
+/// Iterator element type is `(I::Item, J::Item)`.
+///
+/// See [`.cartesian_product()`](crate::Itertools::cartesian_product) for more information.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct Product<I, J>
+ where I: Iterator
+{
+ a: I,
+ a_cur: Option<I::Item>,
+ b: J,
+ b_orig: J,
+}
+
+/// Create a new cartesian product iterator
+///
+/// Iterator element type is `(I::Item, J::Item)`.
+pub fn cartesian_product<I, J>(mut i: I, j: J) -> Product<I, J>
+ where I: Iterator,
+ J: Clone + Iterator,
+ I::Item: Clone
+{
+ Product {
+ a_cur: i.next(),
+ a: i,
+ b: j.clone(),
+ b_orig: j,
+ }
+}
+
+impl<I, J> Iterator for Product<I, J>
+ where I: Iterator,
+ J: Clone + Iterator,
+ I::Item: Clone
+{
+ type Item = (I::Item, J::Item);
+
+ fn next(&mut self) -> Option<Self::Item> {
+ let elt_b = match self.b.next() {
+ None => {
+ self.b = self.b_orig.clone();
+ match self.b.next() {
+ None => return None,
+ Some(x) => {
+ self.a_cur = self.a.next();
+ x
+ }
+ }
+ }
+ Some(x) => x
+ };
+ self.a_cur.as_ref().map(|a| (a.clone(), elt_b))
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ let has_cur = self.a_cur.is_some() as usize;
+ // Not ExactSizeIterator because size may be larger than usize
+ let (b_min, b_max) = self.b.size_hint();
+
+ // Compute a * b_orig + b for both lower and upper bound
+ size_hint::add(
+ size_hint::mul(self.a.size_hint(), self.b_orig.size_hint()),
+ (b_min * has_cur, b_max.map(move |x| x * has_cur)))
+ }
+
+ fn fold<Acc, G>(mut self, mut accum: Acc, mut f: G) -> Acc
+ where G: FnMut(Acc, Self::Item) -> Acc,
+ {
+ // use a split loop to handle the loose a_cur as well as avoiding to
+ // clone b_orig at the end.
+ if let Some(mut a) = self.a_cur.take() {
+ let mut b = self.b;
+ loop {
+ accum = b.fold(accum, |acc, elt| f(acc, (a.clone(), elt)));
+
+ // we can only continue iterating a if we had a first element;
+ if let Some(next_a) = self.a.next() {
+ b = self.b_orig.clone();
+ a = next_a;
+ } else {
+ break;
+ }
+ }
+ }
+ accum
+ }
+}
+
+impl<I, J> FusedIterator for Product<I, J>
+ where I: FusedIterator,
+ J: Clone + FusedIterator,
+ I::Item: Clone
+{}
+
+/// A “meta iterator adaptorâ€. Its closure receives a reference to the iterator
+/// and may pick off as many elements as it likes, to produce the next iterator element.
+///
+/// Iterator element type is *X*, if the return type of `F` is *Option\<X\>*.
+///
+/// See [`.batching()`](crate::Itertools::batching) for more information.
+#[derive(Clone)]
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct Batching<I, F> {
+ f: F,
+ iter: I,
+}
+
+impl<I, F> fmt::Debug for Batching<I, F> where I: fmt::Debug {
+ debug_fmt_fields!(Batching, iter);
+}
+
+/// Create a new Batching iterator.
+pub fn batching<I, F>(iter: I, f: F) -> Batching<I, F> {
+ Batching { f, iter }
+}
+
+impl<B, F, I> Iterator for Batching<I, F>
+ where I: Iterator,
+ F: FnMut(&mut I) -> Option<B>
+{
+ type Item = B;
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ (self.f)(&mut self.iter)
+ }
+}
+
+/// An iterator adaptor that steps a number elements in the base iterator
+/// for each iteration.
+///
+/// The iterator steps by yielding the next element from the base iterator,
+/// then skipping forward *n-1* elements.
+///
+/// See [`.step()`](crate::Itertools::step) for more information.
+#[deprecated(note="Use std .step_by() instead", since="0.8.0")]
+#[allow(deprecated)]
+#[derive(Clone, Debug)]
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct Step<I> {
+ iter: Fuse<I>,
+ skip: usize,
+}
+
+/// Create a `Step` iterator.
+///
+/// **Panics** if the step is 0.
+#[allow(deprecated)]
+pub fn step<I>(iter: I, step: usize) -> Step<I>
+ where I: Iterator
+{
+ assert!(step != 0);
+ Step {
+ iter: iter.fuse(),
+ skip: step - 1,
+ }
+}
+
+#[allow(deprecated)]
+impl<I> Iterator for Step<I>
+ where I: Iterator
+{
+ type Item = I::Item;
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ let elt = self.iter.next();
+ if self.skip > 0 {
+ self.iter.nth(self.skip - 1);
+ }
+ elt
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ let (low, high) = self.iter.size_hint();
+ let div = |x: usize| {
+ if x == 0 {
+ 0
+ } else {
+ 1 + (x - 1) / (self.skip + 1)
+ }
+ };
+ (div(low), high.map(div))
+ }
+}
+
+// known size
+#[allow(deprecated)]
+impl<I> ExactSizeIterator for Step<I>
+ where I: ExactSizeIterator
+{}
+
+pub trait MergePredicate<T> {
+ fn merge_pred(&mut self, a: &T, b: &T) -> bool;
+}
+
+#[derive(Clone, Debug)]
+pub struct MergeLte;
+
+impl<T: PartialOrd> MergePredicate<T> for MergeLte {
+ fn merge_pred(&mut self, a: &T, b: &T) -> bool {
+ a <= b
+ }
+}
+
+/// An iterator adaptor that merges the two base iterators in ascending order.
+/// If both base iterators are sorted (ascending), the result is sorted.
+///
+/// Iterator element type is `I::Item`.
+///
+/// See [`.merge()`](crate::Itertools::merge_by) for more information.
+pub type Merge<I, J> = MergeBy<I, J, MergeLte>;
+
+/// Create an iterator that merges elements in `i` and `j`.
+///
+/// [`IntoIterator`] enabled version of [`Itertools::merge`](crate::Itertools::merge).
+///
+/// ```
+/// use itertools::merge;
+///
+/// for elt in merge(&[1, 2, 3], &[2, 3, 4]) {
+/// /* loop body */
+/// }
+/// ```
+pub fn merge<I, J>(i: I, j: J) -> Merge<<I as IntoIterator>::IntoIter, <J as IntoIterator>::IntoIter>
+ where I: IntoIterator,
+ J: IntoIterator<Item = I::Item>,
+ I::Item: PartialOrd
+{
+ merge_by_new(i, j, MergeLte)
+}
+
+/// An iterator adaptor that merges the two base iterators in ascending order.
+/// If both base iterators are sorted (ascending), the result is sorted.
+///
+/// Iterator element type is `I::Item`.
+///
+/// See [`.merge_by()`](crate::Itertools::merge_by) for more information.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct MergeBy<I, J, F>
+ where I: Iterator,
+ J: Iterator<Item = I::Item>
+{
+ a: Peekable<I>,
+ b: Peekable<J>,
+ fused: Option<bool>,
+ cmp: F,
+}
+
+impl<I, J, F> fmt::Debug for MergeBy<I, J, F>
+ where I: Iterator + fmt::Debug, J: Iterator<Item = I::Item> + fmt::Debug,
+ I::Item: fmt::Debug,
+{
+ debug_fmt_fields!(MergeBy, a, b);
+}
+
+impl<T, F: FnMut(&T, &T)->bool> MergePredicate<T> for F {
+ fn merge_pred(&mut self, a: &T, b: &T) -> bool {
+ self(a, b)
+ }
+}
+
+/// Create a `MergeBy` iterator.
+pub fn merge_by_new<I, J, F>(a: I, b: J, cmp: F) -> MergeBy<I::IntoIter, J::IntoIter, F>
+ where I: IntoIterator,
+ J: IntoIterator<Item = I::Item>,
+ F: MergePredicate<I::Item>,
+{
+ MergeBy {
+ a: a.into_iter().peekable(),
+ b: b.into_iter().peekable(),
+ fused: None,
+ cmp,
+ }
+}
+
+impl<I, J, F> Clone for MergeBy<I, J, F>
+ where I: Iterator,
+ J: Iterator<Item = I::Item>,
+ Peekable<I>: Clone,
+ Peekable<J>: Clone,
+ F: Clone
+{
+ clone_fields!(a, b, fused, cmp);
+}
+
+impl<I, J, F> Iterator for MergeBy<I, J, F>
+ where I: Iterator,
+ J: Iterator<Item = I::Item>,
+ F: MergePredicate<I::Item>
+{
+ type Item = I::Item;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ let less_than = match self.fused {
+ Some(lt) => lt,
+ None => match (self.a.peek(), self.b.peek()) {
+ (Some(a), Some(b)) => self.cmp.merge_pred(a, b),
+ (Some(_), None) => {
+ self.fused = Some(true);
+ true
+ }
+ (None, Some(_)) => {
+ self.fused = Some(false);
+ false
+ }
+ (None, None) => return None,
+ }
+ };
+ if less_than {
+ self.a.next()
+ } else {
+ self.b.next()
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ // Not ExactSizeIterator because size may be larger than usize
+ size_hint::add(self.a.size_hint(), self.b.size_hint())
+ }
+}
+
+impl<I, J, F> FusedIterator for MergeBy<I, J, F>
+ where I: FusedIterator,
+ J: FusedIterator<Item = I::Item>,
+ F: MergePredicate<I::Item>
+{}
+
+/// An iterator adaptor that borrows from a `Clone`-able iterator
+/// to only pick off elements while the predicate returns `true`.
+///
+/// See [`.take_while_ref()`](crate::Itertools::take_while_ref) for more information.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct TakeWhileRef<'a, I: 'a, F> {
+ iter: &'a mut I,
+ f: F,
+}
+
+impl<'a, I, F> fmt::Debug for TakeWhileRef<'a, I, F>
+ where I: Iterator + fmt::Debug,
+{
+ debug_fmt_fields!(TakeWhileRef, iter);
+}
+
+/// Create a new `TakeWhileRef` from a reference to clonable iterator.
+pub fn take_while_ref<I, F>(iter: &mut I, f: F) -> TakeWhileRef<I, F>
+ where I: Iterator + Clone
+{
+ TakeWhileRef { iter, f }
+}
+
+impl<'a, I, F> Iterator for TakeWhileRef<'a, I, F>
+ where I: Iterator + Clone,
+ F: FnMut(&I::Item) -> bool
+{
+ type Item = I::Item;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ let old = self.iter.clone();
+ match self.iter.next() {
+ None => None,
+ Some(elt) => {
+ if (self.f)(&elt) {
+ Some(elt)
+ } else {
+ *self.iter = old;
+ None
+ }
+ }
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ (0, self.iter.size_hint().1)
+ }
+}
+
+/// An iterator adaptor that filters `Option<A>` iterator elements
+/// and produces `A`. Stops on the first `None` encountered.
+///
+/// See [`.while_some()`](crate::Itertools::while_some) for more information.
+#[derive(Clone, Debug)]
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct WhileSome<I> {
+ iter: I,
+}
+
+/// Create a new `WhileSome<I>`.
+pub fn while_some<I>(iter: I) -> WhileSome<I> {
+ WhileSome { iter }
+}
+
+impl<I, A> Iterator for WhileSome<I>
+ where I: Iterator<Item = Option<A>>
+{
+ type Item = A;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ match self.iter.next() {
+ None | Some(None) => None,
+ Some(elt) => elt,
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ (0, self.iter.size_hint().1)
+ }
+}
+
+/// An iterator to iterate through all combinations in a `Clone`-able iterator that produces tuples
+/// of a specific size.
+///
+/// See [`.tuple_combinations()`](crate::Itertools::tuple_combinations) for more
+/// information.
+#[derive(Clone, Debug)]
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct TupleCombinations<I, T>
+ where I: Iterator,
+ T: HasCombination<I>
+{
+ iter: T::Combination,
+ _mi: PhantomData<I>,
+}
+
+pub trait HasCombination<I>: Sized {
+ type Combination: From<I> + Iterator<Item = Self>;
+}
+
+/// Create a new `TupleCombinations` from a clonable iterator.
+pub fn tuple_combinations<T, I>(iter: I) -> TupleCombinations<I, T>
+ where I: Iterator + Clone,
+ I::Item: Clone,
+ T: HasCombination<I>,
+{
+ TupleCombinations {
+ iter: T::Combination::from(iter),
+ _mi: PhantomData,
+ }
+}
+
+impl<I, T> Iterator for TupleCombinations<I, T>
+ where I: Iterator,
+ T: HasCombination<I>,
+{
+ type Item = T;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ self.iter.next()
+ }
+}
+
+impl<I, T> FusedIterator for TupleCombinations<I, T>
+ where I: FusedIterator,
+ T: HasCombination<I>,
+{}
+
+#[derive(Clone, Debug)]
+pub struct Tuple1Combination<I> {
+ iter: I,
+}
+
+impl<I> From<I> for Tuple1Combination<I> {
+ fn from(iter: I) -> Self {
+ Tuple1Combination { iter }
+ }
+}
+
+impl<I: Iterator> Iterator for Tuple1Combination<I> {
+ type Item = (I::Item,);
+
+ fn next(&mut self) -> Option<Self::Item> {
+ self.iter.next().map(|x| (x,))
+ }
+}
+
+impl<I: Iterator> HasCombination<I> for (I::Item,) {
+ type Combination = Tuple1Combination<I>;
+}
+
+macro_rules! impl_tuple_combination {
+ ($C:ident $P:ident ; $($X:ident)*) => (
+ #[derive(Clone, Debug)]
+ pub struct $C<I: Iterator> {
+ item: Option<I::Item>,
+ iter: I,
+ c: $P<I>,
+ }
+
+ impl<I: Iterator + Clone> From<I> for $C<I> {
+ fn from(mut iter: I) -> Self {
+ Self {
+ item: iter.next(),
+ iter: iter.clone(),
+ c: iter.into(),
+ }
+ }
+ }
+
+ impl<I: Iterator + Clone> From<I> for $C<Fuse<I>> {
+ fn from(iter: I) -> Self {
+ Self::from(iter.fuse())
+ }
+ }
+
+ impl<I, A> Iterator for $C<I>
+ where I: Iterator<Item = A> + Clone,
+ I::Item: Clone
+ {
+ type Item = (A, $(ignore_ident!($X, A)),*);
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if let Some(($($X),*,)) = self.c.next() {
+ let z = self.item.clone().unwrap();
+ Some((z, $($X),*))
+ } else {
+ self.item = self.iter.next();
+ self.item.clone().and_then(|z| {
+ self.c = self.iter.clone().into();
+ self.c.next().map(|($($X),*,)| (z, $($X),*))
+ })
+ }
+ }
+ }
+
+ impl<I, A> HasCombination<I> for (A, $(ignore_ident!($X, A)),*)
+ where I: Iterator<Item = A> + Clone,
+ I::Item: Clone
+ {
+ type Combination = $C<Fuse<I>>;
+ }
+ )
+}
+
+// This snippet generates the twelve `impl_tuple_combination!` invocations:
+// use core::iter;
+// use itertools::Itertools;
+//
+// for i in 2..=12 {
+// println!("impl_tuple_combination!(Tuple{arity}Combination Tuple{prev}Combination; {idents});",
+// arity = i,
+// prev = i - 1,
+// idents = ('a'..'z').take(i - 1).join(" "),
+// );
+// }
+// It could probably be replaced by a bit more macro cleverness.
+impl_tuple_combination!(Tuple2Combination Tuple1Combination; a);
+impl_tuple_combination!(Tuple3Combination Tuple2Combination; a b);
+impl_tuple_combination!(Tuple4Combination Tuple3Combination; a b c);
+impl_tuple_combination!(Tuple5Combination Tuple4Combination; a b c d);
+impl_tuple_combination!(Tuple6Combination Tuple5Combination; a b c d e);
+impl_tuple_combination!(Tuple7Combination Tuple6Combination; a b c d e f);
+impl_tuple_combination!(Tuple8Combination Tuple7Combination; a b c d e f g);
+impl_tuple_combination!(Tuple9Combination Tuple8Combination; a b c d e f g h);
+impl_tuple_combination!(Tuple10Combination Tuple9Combination; a b c d e f g h i);
+impl_tuple_combination!(Tuple11Combination Tuple10Combination; a b c d e f g h i j);
+impl_tuple_combination!(Tuple12Combination Tuple11Combination; a b c d e f g h i j k);
+
+/// An iterator adapter to filter values within a nested `Result::Ok`.
+///
+/// See [`.filter_ok()`](crate::Itertools::filter_ok) for more information.
+#[derive(Clone)]
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct FilterOk<I, F> {
+ iter: I,
+ f: F
+}
+
+impl<I, F> fmt::Debug for FilterOk<I, F>
+where
+ I: fmt::Debug,
+{
+ debug_fmt_fields!(FilterOk, iter);
+}
+
+/// Create a new `FilterOk` iterator.
+pub fn filter_ok<I, F, T, E>(iter: I, f: F) -> FilterOk<I, F>
+ where I: Iterator<Item = Result<T, E>>,
+ F: FnMut(&T) -> bool,
+{
+ FilterOk {
+ iter,
+ f,
+ }
+}
+
+impl<I, F, T, E> Iterator for FilterOk<I, F>
+ where I: Iterator<Item = Result<T, E>>,
+ F: FnMut(&T) -> bool,
+{
+ type Item = Result<T, E>;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ loop {
+ match self.iter.next() {
+ Some(Ok(v)) => {
+ if (self.f)(&v) {
+ return Some(Ok(v));
+ }
+ },
+ Some(Err(e)) => return Some(Err(e)),
+ None => return None,
+ }
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ (0, self.iter.size_hint().1)
+ }
+
+ fn fold<Acc, Fold>(self, init: Acc, fold_f: Fold) -> Acc
+ where Fold: FnMut(Acc, Self::Item) -> Acc,
+ {
+ let mut f = self.f;
+ self.iter.filter(|v| {
+ v.as_ref().map(&mut f).unwrap_or(true)
+ }).fold(init, fold_f)
+ }
+
+ fn collect<C>(self) -> C
+ where C: FromIterator<Self::Item>
+ {
+ let mut f = self.f;
+ self.iter.filter(|v| {
+ v.as_ref().map(&mut f).unwrap_or(true)
+ }).collect()
+ }
+}
+
+impl<I, F, T, E> FusedIterator for FilterOk<I, F>
+ where I: FusedIterator<Item = Result<T, E>>,
+ F: FnMut(&T) -> bool,
+{}
+
+/// An iterator adapter to filter and apply a transformation on values within a nested `Result::Ok`.
+///
+/// See [`.filter_map_ok()`](crate::Itertools::filter_map_ok) for more information.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct FilterMapOk<I, F> {
+ iter: I,
+ f: F
+}
+
+impl<I, F> fmt::Debug for FilterMapOk<I, F>
+where
+ I: fmt::Debug,
+{
+ debug_fmt_fields!(FilterMapOk, iter);
+}
+
+fn transpose_result<T, E>(result: Result<Option<T>, E>) -> Option<Result<T, E>> {
+ match result {
+ Ok(Some(v)) => Some(Ok(v)),
+ Ok(None) => None,
+ Err(e) => Some(Err(e)),
+ }
+}
+
+/// Create a new `FilterOk` iterator.
+pub fn filter_map_ok<I, F, T, U, E>(iter: I, f: F) -> FilterMapOk<I, F>
+ where I: Iterator<Item = Result<T, E>>,
+ F: FnMut(T) -> Option<U>,
+{
+ FilterMapOk {
+ iter,
+ f,
+ }
+}
+
+impl<I, F, T, U, E> Iterator for FilterMapOk<I, F>
+ where I: Iterator<Item = Result<T, E>>,
+ F: FnMut(T) -> Option<U>,
+{
+ type Item = Result<U, E>;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ loop {
+ match self.iter.next() {
+ Some(Ok(v)) => {
+ if let Some(v) = (self.f)(v) {
+ return Some(Ok(v));
+ }
+ },
+ Some(Err(e)) => return Some(Err(e)),
+ None => return None,
+ }
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ (0, self.iter.size_hint().1)
+ }
+
+ fn fold<Acc, Fold>(self, init: Acc, fold_f: Fold) -> Acc
+ where Fold: FnMut(Acc, Self::Item) -> Acc,
+ {
+ let mut f = self.f;
+ self.iter.filter_map(|v| {
+ transpose_result(v.map(&mut f))
+ }).fold(init, fold_f)
+ }
+
+ fn collect<C>(self) -> C
+ where C: FromIterator<Self::Item>
+ {
+ let mut f = self.f;
+ self.iter.filter_map(|v| {
+ transpose_result(v.map(&mut f))
+ }).collect()
+ }
+}
+
+impl<I, F, T, U, E> FusedIterator for FilterMapOk<I, F>
+ where I: FusedIterator<Item = Result<T, E>>,
+ F: FnMut(T) -> Option<U>,
+{}
+
+/// An iterator adapter to get the positions of each element that matches a predicate.
+///
+/// See [`.positions()`](crate::Itertools::positions) for more information.
+#[derive(Clone)]
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct Positions<I, F> {
+ iter: I,
+ f: F,
+ count: usize,
+}
+
+impl<I, F> fmt::Debug for Positions<I, F>
+where
+ I: fmt::Debug,
+{
+ debug_fmt_fields!(Positions, iter, count);
+}
+
+/// Create a new `Positions` iterator.
+pub fn positions<I, F>(iter: I, f: F) -> Positions<I, F>
+ where I: Iterator,
+ F: FnMut(I::Item) -> bool,
+{
+ Positions {
+ iter,
+ f,
+ count: 0
+ }
+}
+
+impl<I, F> Iterator for Positions<I, F>
+ where I: Iterator,
+ F: FnMut(I::Item) -> bool,
+{
+ type Item = usize;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ while let Some(v) = self.iter.next() {
+ let i = self.count;
+ self.count = i + 1;
+ if (self.f)(v) {
+ return Some(i);
+ }
+ }
+ None
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ (0, self.iter.size_hint().1)
+ }
+}
+
+impl<I, F> DoubleEndedIterator for Positions<I, F>
+ where I: DoubleEndedIterator + ExactSizeIterator,
+ F: FnMut(I::Item) -> bool,
+{
+ fn next_back(&mut self) -> Option<Self::Item> {
+ while let Some(v) = self.iter.next_back() {
+ if (self.f)(v) {
+ return Some(self.count + self.iter.len())
+ }
+ }
+ None
+ }
+}
+
+impl<I, F> FusedIterator for Positions<I, F>
+ where I: FusedIterator,
+ F: FnMut(I::Item) -> bool,
+{}
+
+/// An iterator adapter to apply a mutating function to each element before yielding it.
+///
+/// See [`.update()`](crate::Itertools::update) for more information.
+#[derive(Clone)]
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct Update<I, F> {
+ iter: I,
+ f: F,
+}
+
+impl<I, F> fmt::Debug for Update<I, F>
+where
+ I: fmt::Debug,
+{
+ debug_fmt_fields!(Update, iter);
+}
+
+/// Create a new `Update` iterator.
+pub fn update<I, F>(iter: I, f: F) -> Update<I, F>
+where
+ I: Iterator,
+ F: FnMut(&mut I::Item),
+{
+ Update { iter, f }
+}
+
+impl<I, F> Iterator for Update<I, F>
+where
+ I: Iterator,
+ F: FnMut(&mut I::Item),
+{
+ type Item = I::Item;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if let Some(mut v) = self.iter.next() {
+ (self.f)(&mut v);
+ Some(v)
+ } else {
+ None
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ self.iter.size_hint()
+ }
+
+ fn fold<Acc, G>(self, init: Acc, mut g: G) -> Acc
+ where G: FnMut(Acc, Self::Item) -> Acc,
+ {
+ let mut f = self.f;
+ self.iter.fold(init, move |acc, mut v| { f(&mut v); g(acc, v) })
+ }
+
+ // if possible, re-use inner iterator specializations in collect
+ fn collect<C>(self) -> C
+ where C: FromIterator<Self::Item>
+ {
+ let mut f = self.f;
+ self.iter.map(move |mut v| { f(&mut v); v }).collect()
+ }
+}
+
+impl<I, F> ExactSizeIterator for Update<I, F>
+where
+ I: ExactSizeIterator,
+ F: FnMut(&mut I::Item),
+{}
+
+impl<I, F> DoubleEndedIterator for Update<I, F>
+where
+ I: DoubleEndedIterator,
+ F: FnMut(&mut I::Item),
+{
+ fn next_back(&mut self) -> Option<Self::Item> {
+ if let Some(mut v) = self.iter.next_back() {
+ (self.f)(&mut v);
+ Some(v)
+ } else {
+ None
+ }
+ }
+}
+
+impl<I, F> FusedIterator for Update<I, F>
+where
+ I: FusedIterator,
+ F: FnMut(&mut I::Item),
+{}
diff --git a/vendor/itertools-0.10.5/src/adaptors/multi_product.rs b/vendor/itertools-0.10.5/src/adaptors/multi_product.rs
new file mode 100644
index 000000000..0b3840698
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/adaptors/multi_product.rs
@@ -0,0 +1,230 @@
+#![cfg(feature = "use_alloc")]
+
+use crate::size_hint;
+use crate::Itertools;
+
+use alloc::vec::Vec;
+
+#[derive(Clone)]
+/// An iterator adaptor that iterates over the cartesian product of
+/// multiple iterators of type `I`.
+///
+/// An iterator element type is `Vec<I>`.
+///
+/// See [`.multi_cartesian_product()`](crate::Itertools::multi_cartesian_product)
+/// for more information.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct MultiProduct<I>(Vec<MultiProductIter<I>>)
+ where I: Iterator + Clone,
+ I::Item: Clone;
+
+impl<I> std::fmt::Debug for MultiProduct<I>
+where
+ I: Iterator + Clone + std::fmt::Debug,
+ I::Item: Clone + std::fmt::Debug,
+{
+ debug_fmt_fields!(CoalesceBy, 0);
+}
+
+/// Create a new cartesian product iterator over an arbitrary number
+/// of iterators of the same type.
+///
+/// Iterator element is of type `Vec<H::Item::Item>`.
+pub fn multi_cartesian_product<H>(iters: H) -> MultiProduct<<H::Item as IntoIterator>::IntoIter>
+ where H: Iterator,
+ H::Item: IntoIterator,
+ <H::Item as IntoIterator>::IntoIter: Clone,
+ <H::Item as IntoIterator>::Item: Clone
+{
+ MultiProduct(iters.map(|i| MultiProductIter::new(i.into_iter())).collect())
+}
+
+#[derive(Clone, Debug)]
+/// Holds the state of a single iterator within a `MultiProduct`.
+struct MultiProductIter<I>
+ where I: Iterator + Clone,
+ I::Item: Clone
+{
+ cur: Option<I::Item>,
+ iter: I,
+ iter_orig: I,
+}
+
+/// Holds the current state during an iteration of a `MultiProduct`.
+#[derive(Debug)]
+enum MultiProductIterState {
+ StartOfIter,
+ MidIter { on_first_iter: bool },
+}
+
+impl<I> MultiProduct<I>
+ where I: Iterator + Clone,
+ I::Item: Clone
+{
+ /// Iterates the rightmost iterator, then recursively iterates iterators
+ /// to the left if necessary.
+ ///
+ /// Returns true if the iteration succeeded, else false.
+ fn iterate_last(
+ multi_iters: &mut [MultiProductIter<I>],
+ mut state: MultiProductIterState
+ ) -> bool {
+ use self::MultiProductIterState::*;
+
+ if let Some((last, rest)) = multi_iters.split_last_mut() {
+ let on_first_iter = match state {
+ StartOfIter => {
+ let on_first_iter = !last.in_progress();
+ state = MidIter { on_first_iter };
+ on_first_iter
+ },
+ MidIter { on_first_iter } => on_first_iter
+ };
+
+ if !on_first_iter {
+ last.iterate();
+ }
+
+ if last.in_progress() {
+ true
+ } else if MultiProduct::iterate_last(rest, state) {
+ last.reset();
+ last.iterate();
+ // If iterator is None twice consecutively, then iterator is
+ // empty; whole product is empty.
+ last.in_progress()
+ } else {
+ false
+ }
+ } else {
+ // Reached end of iterator list. On initialisation, return true.
+ // At end of iteration (final iterator finishes), finish.
+ match state {
+ StartOfIter => false,
+ MidIter { on_first_iter } => on_first_iter
+ }
+ }
+ }
+
+ /// Returns the unwrapped value of the next iteration.
+ fn curr_iterator(&self) -> Vec<I::Item> {
+ self.0.iter().map(|multi_iter| {
+ multi_iter.cur.clone().unwrap()
+ }).collect()
+ }
+
+ /// Returns true if iteration has started and has not yet finished; false
+ /// otherwise.
+ fn in_progress(&self) -> bool {
+ if let Some(last) = self.0.last() {
+ last.in_progress()
+ } else {
+ false
+ }
+ }
+}
+
+impl<I> MultiProductIter<I>
+ where I: Iterator + Clone,
+ I::Item: Clone
+{
+ fn new(iter: I) -> Self {
+ MultiProductIter {
+ cur: None,
+ iter: iter.clone(),
+ iter_orig: iter
+ }
+ }
+
+ /// Iterate the managed iterator.
+ fn iterate(&mut self) {
+ self.cur = self.iter.next();
+ }
+
+ /// Reset the managed iterator.
+ fn reset(&mut self) {
+ self.iter = self.iter_orig.clone();
+ }
+
+ /// Returns true if the current iterator has been started and has not yet
+ /// finished; false otherwise.
+ fn in_progress(&self) -> bool {
+ self.cur.is_some()
+ }
+}
+
+impl<I> Iterator for MultiProduct<I>
+ where I: Iterator + Clone,
+ I::Item: Clone
+{
+ type Item = Vec<I::Item>;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if MultiProduct::iterate_last(
+ &mut self.0,
+ MultiProductIterState::StartOfIter
+ ) {
+ Some(self.curr_iterator())
+ } else {
+ None
+ }
+ }
+
+ fn count(self) -> usize {
+ if self.0.is_empty() {
+ return 0;
+ }
+
+ if !self.in_progress() {
+ return self.0.into_iter().fold(1, |acc, multi_iter| {
+ acc * multi_iter.iter.count()
+ });
+ }
+
+ self.0.into_iter().fold(
+ 0,
+ |acc, MultiProductIter { iter, iter_orig, cur: _ }| {
+ let total_count = iter_orig.count();
+ let cur_count = iter.count();
+ acc * total_count + cur_count
+ }
+ )
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ // Not ExactSizeIterator because size may be larger than usize
+ if self.0.is_empty() {
+ return (0, Some(0));
+ }
+
+ if !self.in_progress() {
+ return self.0.iter().fold((1, Some(1)), |acc, multi_iter| {
+ size_hint::mul(acc, multi_iter.iter.size_hint())
+ });
+ }
+
+ self.0.iter().fold(
+ (0, Some(0)),
+ |acc, &MultiProductIter { ref iter, ref iter_orig, cur: _ }| {
+ let cur_size = iter.size_hint();
+ let total_size = iter_orig.size_hint();
+ size_hint::add(size_hint::mul(acc, total_size), cur_size)
+ }
+ )
+ }
+
+ fn last(self) -> Option<Self::Item> {
+ let iter_count = self.0.len();
+
+ let lasts: Self::Item = self.0.into_iter()
+ .map(|multi_iter| multi_iter.iter.last())
+ .while_some()
+ .collect();
+
+ if lasts.len() == iter_count {
+ Some(lasts)
+ } else {
+ None
+ }
+ }
+}
diff --git a/vendor/itertools-0.10.5/src/combinations.rs b/vendor/itertools-0.10.5/src/combinations.rs
new file mode 100644
index 000000000..68a59c5e4
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/combinations.rs
@@ -0,0 +1,128 @@
+use std::fmt;
+use std::iter::FusedIterator;
+
+use super::lazy_buffer::LazyBuffer;
+use alloc::vec::Vec;
+
+/// An iterator to iterate through all the `k`-length combinations in an iterator.
+///
+/// See [`.combinations()`](crate::Itertools::combinations) for more information.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct Combinations<I: Iterator> {
+ indices: Vec<usize>,
+ pool: LazyBuffer<I>,
+ first: bool,
+}
+
+impl<I> Clone for Combinations<I>
+ where I: Clone + Iterator,
+ I::Item: Clone,
+{
+ clone_fields!(indices, pool, first);
+}
+
+impl<I> fmt::Debug for Combinations<I>
+ where I: Iterator + fmt::Debug,
+ I::Item: fmt::Debug,
+{
+ debug_fmt_fields!(Combinations, indices, pool, first);
+}
+
+/// Create a new `Combinations` from a clonable iterator.
+pub fn combinations<I>(iter: I, k: usize) -> Combinations<I>
+ where I: Iterator
+{
+ let mut pool = LazyBuffer::new(iter);
+ pool.prefill(k);
+
+ Combinations {
+ indices: (0..k).collect(),
+ pool,
+ first: true,
+ }
+}
+
+impl<I: Iterator> Combinations<I> {
+ /// Returns the length of a combination produced by this iterator.
+ #[inline]
+ pub fn k(&self) -> usize { self.indices.len() }
+
+ /// Returns the (current) length of the pool from which combination elements are
+ /// selected. This value can change between invocations of [`next`](Combinations::next).
+ #[inline]
+ pub fn n(&self) -> usize { self.pool.len() }
+
+ /// Returns a reference to the source iterator.
+ #[inline]
+ pub(crate) fn src(&self) -> &I { &self.pool.it }
+
+ /// Resets this `Combinations` back to an initial state for combinations of length
+ /// `k` over the same pool data source. If `k` is larger than the current length
+ /// of the data pool an attempt is made to prefill the pool so that it holds `k`
+ /// elements.
+ pub(crate) fn reset(&mut self, k: usize) {
+ self.first = true;
+
+ if k < self.indices.len() {
+ self.indices.truncate(k);
+ for i in 0..k {
+ self.indices[i] = i;
+ }
+
+ } else {
+ for i in 0..self.indices.len() {
+ self.indices[i] = i;
+ }
+ self.indices.extend(self.indices.len()..k);
+ self.pool.prefill(k);
+ }
+ }
+}
+
+impl<I> Iterator for Combinations<I>
+ where I: Iterator,
+ I::Item: Clone
+{
+ type Item = Vec<I::Item>;
+ fn next(&mut self) -> Option<Self::Item> {
+ if self.first {
+ if self.k() > self.n() {
+ return None;
+ }
+ self.first = false;
+ } else if self.indices.is_empty() {
+ return None;
+ } else {
+ // Scan from the end, looking for an index to increment
+ let mut i: usize = self.indices.len() - 1;
+
+ // Check if we need to consume more from the iterator
+ if self.indices[i] == self.pool.len() - 1 {
+ self.pool.get_next(); // may change pool size
+ }
+
+ while self.indices[i] == i + self.pool.len() - self.indices.len() {
+ if i > 0 {
+ i -= 1;
+ } else {
+ // Reached the last combination
+ return None;
+ }
+ }
+
+ // Increment index, and reset the ones to its right
+ self.indices[i] += 1;
+ for j in i+1..self.indices.len() {
+ self.indices[j] = self.indices[j - 1] + 1;
+ }
+ }
+
+ // Create result vector based on the indices
+ Some(self.indices.iter().map(|i| self.pool[*i].clone()).collect())
+ }
+}
+
+impl<I> FusedIterator for Combinations<I>
+ where I: Iterator,
+ I::Item: Clone
+{}
diff --git a/vendor/itertools-0.10.5/src/combinations_with_replacement.rs b/vendor/itertools-0.10.5/src/combinations_with_replacement.rs
new file mode 100644
index 000000000..0fec9671a
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/combinations_with_replacement.rs
@@ -0,0 +1,109 @@
+use alloc::vec::Vec;
+use std::fmt;
+use std::iter::FusedIterator;
+
+use super::lazy_buffer::LazyBuffer;
+
+/// An iterator to iterate through all the `n`-length combinations in an iterator, with replacement.
+///
+/// See [`.combinations_with_replacement()`](crate::Itertools::combinations_with_replacement)
+/// for more information.
+#[derive(Clone)]
+pub struct CombinationsWithReplacement<I>
+where
+ I: Iterator,
+ I::Item: Clone,
+{
+ indices: Vec<usize>,
+ pool: LazyBuffer<I>,
+ first: bool,
+}
+
+impl<I> fmt::Debug for CombinationsWithReplacement<I>
+where
+ I: Iterator + fmt::Debug,
+ I::Item: fmt::Debug + Clone,
+{
+ debug_fmt_fields!(Combinations, indices, pool, first);
+}
+
+impl<I> CombinationsWithReplacement<I>
+where
+ I: Iterator,
+ I::Item: Clone,
+{
+ /// Map the current mask over the pool to get an output combination
+ fn current(&self) -> Vec<I::Item> {
+ self.indices.iter().map(|i| self.pool[*i].clone()).collect()
+ }
+}
+
+/// Create a new `CombinationsWithReplacement` from a clonable iterator.
+pub fn combinations_with_replacement<I>(iter: I, k: usize) -> CombinationsWithReplacement<I>
+where
+ I: Iterator,
+ I::Item: Clone,
+{
+ let indices: Vec<usize> = alloc::vec![0; k];
+ let pool: LazyBuffer<I> = LazyBuffer::new(iter);
+
+ CombinationsWithReplacement {
+ indices,
+ pool,
+ first: true,
+ }
+}
+
+impl<I> Iterator for CombinationsWithReplacement<I>
+where
+ I: Iterator,
+ I::Item: Clone,
+{
+ type Item = Vec<I::Item>;
+ fn next(&mut self) -> Option<Self::Item> {
+ // If this is the first iteration, return early
+ if self.first {
+ // In empty edge cases, stop iterating immediately
+ return if !(self.indices.is_empty() || self.pool.get_next()) {
+ None
+ // Otherwise, yield the initial state
+ } else {
+ self.first = false;
+ Some(self.current())
+ };
+ }
+
+ // Check if we need to consume more from the iterator
+ // This will run while we increment our first index digit
+ self.pool.get_next();
+
+ // Work out where we need to update our indices
+ let mut increment: Option<(usize, usize)> = None;
+ for (i, indices_int) in self.indices.iter().enumerate().rev() {
+ if *indices_int < self.pool.len()-1 {
+ increment = Some((i, indices_int + 1));
+ break;
+ }
+ }
+
+ match increment {
+ // If we can update the indices further
+ Some((increment_from, increment_value)) => {
+ // We need to update the rightmost non-max value
+ // and all those to the right
+ for indices_index in increment_from..self.indices.len() {
+ self.indices[indices_index] = increment_value;
+ }
+ Some(self.current())
+ }
+ // Otherwise, we're done
+ None => None,
+ }
+ }
+}
+
+impl<I> FusedIterator for CombinationsWithReplacement<I>
+where
+ I: Iterator,
+ I::Item: Clone,
+{}
diff --git a/vendor/itertools-0.10.5/src/concat_impl.rs b/vendor/itertools-0.10.5/src/concat_impl.rs
new file mode 100644
index 000000000..f022ec90a
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/concat_impl.rs
@@ -0,0 +1,23 @@
+use crate::Itertools;
+
+/// Combine all an iterator's elements into one element by using [`Extend`].
+///
+/// [`IntoIterator`]-enabled version of [`Itertools::concat`].
+///
+/// This combinator will extend the first item with each of the rest of the
+/// items of the iterator. If the iterator is empty, the default value of
+/// `I::Item` is returned.
+///
+/// ```rust
+/// use itertools::concat;
+///
+/// let input = vec![vec![1], vec![2, 3], vec![4, 5, 6]];
+/// assert_eq!(concat(input), vec![1, 2, 3, 4, 5, 6]);
+/// ```
+pub fn concat<I>(iterable: I) -> I::Item
+ where I: IntoIterator,
+ I::Item: Extend<<<I as IntoIterator>::Item as IntoIterator>::Item> + IntoIterator + Default
+{
+ #[allow(deprecated)] //TODO: once msrv hits 1.51. replace `fold1` with `reduce`
+ iterable.into_iter().fold1(|mut a, b| { a.extend(b); a }).unwrap_or_default()
+}
diff --git a/vendor/itertools-0.10.5/src/cons_tuples_impl.rs b/vendor/itertools-0.10.5/src/cons_tuples_impl.rs
new file mode 100644
index 000000000..ae0f48f34
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/cons_tuples_impl.rs
@@ -0,0 +1,64 @@
+
+macro_rules! impl_cons_iter(
+ ($_A:ident, $_B:ident, ) => (); // stop
+
+ ($A:ident, $($B:ident,)*) => (
+ impl_cons_iter!($($B,)*);
+ #[allow(non_snake_case)]
+ impl<X, Iter, $($B),*> Iterator for ConsTuples<Iter, (($($B,)*), X)>
+ where Iter: Iterator<Item = (($($B,)*), X)>,
+ {
+ type Item = ($($B,)* X, );
+ fn next(&mut self) -> Option<Self::Item> {
+ self.iter.next().map(|(($($B,)*), x)| ($($B,)* x, ))
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ self.iter.size_hint()
+ }
+ fn fold<Acc, Fold>(self, accum: Acc, mut f: Fold) -> Acc
+ where Fold: FnMut(Acc, Self::Item) -> Acc,
+ {
+ self.iter.fold(accum, move |acc, (($($B,)*), x)| f(acc, ($($B,)* x, )))
+ }
+ }
+
+ #[allow(non_snake_case)]
+ impl<X, Iter, $($B),*> DoubleEndedIterator for ConsTuples<Iter, (($($B,)*), X)>
+ where Iter: DoubleEndedIterator<Item = (($($B,)*), X)>,
+ {
+ fn next_back(&mut self) -> Option<Self::Item> {
+ self.iter.next().map(|(($($B,)*), x)| ($($B,)* x, ))
+ }
+ }
+
+ );
+);
+
+impl_cons_iter!(A, B, C, D, E, F, G, H, I, J, K, L,);
+
+/// An iterator that maps an iterator of tuples like
+/// `((A, B), C)` to an iterator of `(A, B, C)`.
+///
+/// Used by the `iproduct!()` macro.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+#[derive(Debug)]
+pub struct ConsTuples<I, J>
+ where I: Iterator<Item=J>,
+{
+ iter: I,
+}
+
+impl<I, J> Clone for ConsTuples<I, J>
+ where I: Clone + Iterator<Item=J>,
+{
+ clone_fields!(iter);
+}
+
+/// Create an iterator that maps for example iterators of
+/// `((A, B), C)` to `(A, B, C)`.
+pub fn cons_tuples<I, J>(iterable: I) -> ConsTuples<I::IntoIter, J>
+ where I: IntoIterator<Item=J>
+{
+ ConsTuples { iter: iterable.into_iter() }
+}
diff --git a/vendor/itertools-0.10.5/src/diff.rs b/vendor/itertools-0.10.5/src/diff.rs
new file mode 100644
index 000000000..1731f0639
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/diff.rs
@@ -0,0 +1,61 @@
+//! "Diff"ing iterators for caching elements to sequential collections without requiring the new
+//! elements' iterator to be `Clone`.
+//!
+//! - [`Diff`] (produced by the [`diff_with`] function)
+//! describes the difference between two non-`Clone` iterators `I` and `J` after breaking ASAP from
+//! a lock-step comparison.
+
+use crate::free::put_back;
+use crate::structs::PutBack;
+
+/// A type returned by the [`diff_with`] function.
+///
+/// `Diff` represents the way in which the elements yielded by the iterator `I` differ to some
+/// iterator `J`.
+pub enum Diff<I, J>
+ where I: Iterator,
+ J: Iterator
+{
+ /// The index of the first non-matching element along with both iterator's remaining elements
+ /// starting with the first mis-match.
+ FirstMismatch(usize, PutBack<I>, PutBack<J>),
+ /// The total number of elements that were in `J` along with the remaining elements of `I`.
+ Shorter(usize, PutBack<I>),
+ /// The total number of elements that were in `I` along with the remaining elements of `J`.
+ Longer(usize, PutBack<J>),
+}
+
+/// Compares every element yielded by both `i` and `j` with the given function in lock-step and
+/// returns a [`Diff`] which describes how `j` differs from `i`.
+///
+/// If the number of elements yielded by `j` is less than the number of elements yielded by `i`,
+/// the number of `j` elements yielded will be returned along with `i`'s remaining elements as
+/// `Diff::Shorter`.
+///
+/// If the two elements of a step differ, the index of those elements along with the remaining
+/// elements of both `i` and `j` are returned as `Diff::FirstMismatch`.
+///
+/// If `i` becomes exhausted before `j` becomes exhausted, the number of elements in `i` along with
+/// the remaining `j` elements will be returned as `Diff::Longer`.
+pub fn diff_with<I, J, F>(i: I, j: J, is_equal: F)
+ -> Option<Diff<I::IntoIter, J::IntoIter>>
+ where I: IntoIterator,
+ J: IntoIterator,
+ F: Fn(&I::Item, &J::Item) -> bool
+{
+ let mut i = i.into_iter();
+ let mut j = j.into_iter();
+ let mut idx = 0;
+ while let Some(i_elem) = i.next() {
+ match j.next() {
+ None => return Some(Diff::Shorter(idx, put_back(i).with_value(i_elem))),
+ Some(j_elem) => if !is_equal(&i_elem, &j_elem) {
+ let remaining_i = put_back(i).with_value(i_elem);
+ let remaining_j = put_back(j).with_value(j_elem);
+ return Some(Diff::FirstMismatch(idx, remaining_i, remaining_j));
+ },
+ }
+ idx += 1;
+ }
+ j.next().map(|j_elem| Diff::Longer(idx, put_back(j).with_value(j_elem)))
+}
diff --git a/vendor/itertools-0.10.5/src/duplicates_impl.rs b/vendor/itertools-0.10.5/src/duplicates_impl.rs
new file mode 100644
index 000000000..28eda44a9
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/duplicates_impl.rs
@@ -0,0 +1,216 @@
+use std::hash::Hash;
+
+mod private {
+ use std::collections::HashMap;
+ use std::hash::Hash;
+ use std::fmt;
+
+ #[derive(Clone)]
+ #[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+ pub struct DuplicatesBy<I: Iterator, Key, F> {
+ pub(crate) iter: I,
+ pub(crate) meta: Meta<Key, F>,
+ }
+
+ impl<I, V, F> fmt::Debug for DuplicatesBy<I, V, F>
+ where
+ I: Iterator + fmt::Debug,
+ V: fmt::Debug + Hash + Eq,
+ {
+ debug_fmt_fields!(DuplicatesBy, iter, meta.used);
+ }
+
+ impl<I: Iterator, Key: Eq + Hash, F> DuplicatesBy<I, Key, F> {
+ pub(crate) fn new(iter: I, key_method: F) -> Self {
+ DuplicatesBy {
+ iter,
+ meta: Meta {
+ used: HashMap::new(),
+ pending: 0,
+ key_method,
+ },
+ }
+ }
+ }
+
+ #[derive(Clone)]
+ pub struct Meta<Key, F> {
+ used: HashMap<Key, bool>,
+ pending: usize,
+ key_method: F,
+ }
+
+ impl<Key, F> Meta<Key, F>
+ where
+ Key: Eq + Hash,
+ {
+ /// Takes an item and returns it back to the caller if it's the second time we see it.
+ /// Otherwise the item is consumed and None is returned
+ #[inline(always)]
+ fn filter<I>(&mut self, item: I) -> Option<I>
+ where
+ F: KeyMethod<Key, I>,
+ {
+ let kv = self.key_method.make(item);
+ match self.used.get_mut(kv.key_ref()) {
+ None => {
+ self.used.insert(kv.key(), false);
+ self.pending += 1;
+ None
+ }
+ Some(true) => None,
+ Some(produced) => {
+ *produced = true;
+ self.pending -= 1;
+ Some(kv.value())
+ }
+ }
+ }
+ }
+
+ impl<I, Key, F> Iterator for DuplicatesBy<I, Key, F>
+ where
+ I: Iterator,
+ Key: Eq + Hash,
+ F: KeyMethod<Key, I::Item>,
+ {
+ type Item = I::Item;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ let DuplicatesBy { iter, meta } = self;
+ iter.find_map(|v| meta.filter(v))
+ }
+
+ #[inline]
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ let (_, hi) = self.iter.size_hint();
+ let hi = hi.map(|hi| {
+ if hi <= self.meta.pending {
+ // fewer or equally many iter-remaining elements than pending elements
+ // => at most, each iter-remaining element is matched
+ hi
+ } else {
+ // fewer pending elements than iter-remaining elements
+ // => at most:
+ // * each pending element is matched
+ // * the other iter-remaining elements come in pairs
+ self.meta.pending + (hi - self.meta.pending) / 2
+ }
+ });
+ // The lower bound is always 0 since we might only get unique items from now on
+ (0, hi)
+ }
+ }
+
+ impl<I, Key, F> DoubleEndedIterator for DuplicatesBy<I, Key, F>
+ where
+ I: DoubleEndedIterator,
+ Key: Eq + Hash,
+ F: KeyMethod<Key, I::Item>,
+ {
+ fn next_back(&mut self) -> Option<Self::Item> {
+ let DuplicatesBy { iter, meta } = self;
+ iter.rev().find_map(|v| meta.filter(v))
+ }
+ }
+
+ /// A keying method for use with `DuplicatesBy`
+ pub trait KeyMethod<K, V> {
+ type Container: KeyXorValue<K, V>;
+
+ fn make(&mut self, value: V) -> Self::Container;
+ }
+
+ /// Apply the identity function to elements before checking them for equality.
+ #[derive(Debug)]
+ pub struct ById;
+ impl<V> KeyMethod<V, V> for ById {
+ type Container = JustValue<V>;
+
+ fn make(&mut self, v: V) -> Self::Container {
+ JustValue(v)
+ }
+ }
+
+ /// Apply a user-supplied function to elements before checking them for equality.
+ pub struct ByFn<F>(pub(crate) F);
+ impl<F> fmt::Debug for ByFn<F> {
+ debug_fmt_fields!(ByFn,);
+ }
+ impl<K, V, F> KeyMethod<K, V> for ByFn<F>
+ where
+ F: FnMut(&V) -> K,
+ {
+ type Container = KeyValue<K, V>;
+
+ fn make(&mut self, v: V) -> Self::Container {
+ KeyValue((self.0)(&v), v)
+ }
+ }
+
+ // Implementors of this trait can hold onto a key and a value but only give access to one of them
+ // at a time. This allows the key and the value to be the same value internally
+ pub trait KeyXorValue<K, V> {
+ fn key_ref(&self) -> &K;
+ fn key(self) -> K;
+ fn value(self) -> V;
+ }
+
+ #[derive(Debug)]
+ pub struct KeyValue<K, V>(K, V);
+ impl<K, V> KeyXorValue<K, V> for KeyValue<K, V> {
+ fn key_ref(&self) -> &K {
+ &self.0
+ }
+ fn key(self) -> K {
+ self.0
+ }
+ fn value(self) -> V {
+ self.1
+ }
+ }
+
+ #[derive(Debug)]
+ pub struct JustValue<V>(V);
+ impl<V> KeyXorValue<V, V> for JustValue<V> {
+ fn key_ref(&self) -> &V {
+ &self.0
+ }
+ fn key(self) -> V {
+ self.0
+ }
+ fn value(self) -> V {
+ self.0
+ }
+ }
+}
+
+/// An iterator adapter to filter for duplicate elements.
+///
+/// See [`.duplicates_by()`](crate::Itertools::duplicates_by) for more information.
+pub type DuplicatesBy<I, V, F> = private::DuplicatesBy<I, V, private::ByFn<F>>;
+
+/// Create a new `DuplicatesBy` iterator.
+pub fn duplicates_by<I, Key, F>(iter: I, f: F) -> DuplicatesBy<I, Key, F>
+where
+ Key: Eq + Hash,
+ F: FnMut(&I::Item) -> Key,
+ I: Iterator,
+{
+ DuplicatesBy::new(iter, private::ByFn(f))
+}
+
+/// An iterator adapter to filter out duplicate elements.
+///
+/// See [`.duplicates()`](crate::Itertools::duplicates) for more information.
+pub type Duplicates<I> = private::DuplicatesBy<I, <I as Iterator>::Item, private::ById>;
+
+/// Create a new `Duplicates` iterator.
+pub fn duplicates<I>(iter: I) -> Duplicates<I>
+where
+ I: Iterator,
+ I::Item: Eq + Hash,
+{
+ Duplicates::new(iter, private::ById)
+}
+
diff --git a/vendor/itertools-0.10.5/src/either_or_both.rs b/vendor/itertools-0.10.5/src/either_or_both.rs
new file mode 100644
index 000000000..ef3985f75
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/either_or_both.rs
@@ -0,0 +1,254 @@
+use crate::EitherOrBoth::*;
+
+use either::Either;
+
+/// Value that either holds a single A or B, or both.
+#[derive(Clone, PartialEq, Eq, Hash, Debug)]
+pub enum EitherOrBoth<A, B> {
+ /// Both values are present.
+ Both(A, B),
+ /// Only the left value of type `A` is present.
+ Left(A),
+ /// Only the right value of type `B` is present.
+ Right(B),
+}
+
+impl<A, B> EitherOrBoth<A, B> {
+ /// If `Left`, or `Both`, return true, otherwise, return false.
+ pub fn has_left(&self) -> bool {
+ self.as_ref().left().is_some()
+ }
+
+ /// If `Right`, or `Both`, return true, otherwise, return false.
+ pub fn has_right(&self) -> bool {
+ self.as_ref().right().is_some()
+ }
+
+ /// If Left, return true otherwise, return false.
+ /// Exclusive version of [`has_left`](EitherOrBoth::has_left).
+ pub fn is_left(&self) -> bool {
+ match *self {
+ Left(_) => true,
+ _ => false,
+ }
+ }
+
+ /// If Right, return true otherwise, return false.
+ /// Exclusive version of [`has_right`](EitherOrBoth::has_right).
+ pub fn is_right(&self) -> bool {
+ match *self {
+ Right(_) => true,
+ _ => false,
+ }
+ }
+
+ /// If Right, return true otherwise, return false.
+ /// Equivalent to `self.as_ref().both().is_some()`.
+ pub fn is_both(&self) -> bool {
+ self.as_ref().both().is_some()
+ }
+
+ /// If `Left`, or `Both`, return `Some` with the left value, otherwise, return `None`.
+ pub fn left(self) -> Option<A> {
+ match self {
+ Left(left) | Both(left, _) => Some(left),
+ _ => None,
+ }
+ }
+
+ /// If `Right`, or `Both`, return `Some` with the right value, otherwise, return `None`.
+ pub fn right(self) -> Option<B> {
+ match self {
+ Right(right) | Both(_, right) => Some(right),
+ _ => None,
+ }
+ }
+
+ /// If Both, return `Some` tuple containing left and right.
+ pub fn both(self) -> Option<(A, B)> {
+ match self {
+ Both(a, b) => Some((a, b)),
+ _ => None,
+ }
+ }
+
+ /// Converts from `&EitherOrBoth<A, B>` to `EitherOrBoth<&A, &B>`.
+ pub fn as_ref(&self) -> EitherOrBoth<&A, &B> {
+ match *self {
+ Left(ref left) => Left(left),
+ Right(ref right) => Right(right),
+ Both(ref left, ref right) => Both(left, right),
+ }
+ }
+
+ /// Converts from `&mut EitherOrBoth<A, B>` to `EitherOrBoth<&mut A, &mut B>`.
+ pub fn as_mut(&mut self) -> EitherOrBoth<&mut A, &mut B> {
+ match *self {
+ Left(ref mut left) => Left(left),
+ Right(ref mut right) => Right(right),
+ Both(ref mut left, ref mut right) => Both(left, right),
+ }
+ }
+
+ /// Convert `EitherOrBoth<A, B>` to `EitherOrBoth<B, A>`.
+ pub fn flip(self) -> EitherOrBoth<B, A> {
+ match self {
+ Left(a) => Right(a),
+ Right(b) => Left(b),
+ Both(a, b) => Both(b, a),
+ }
+ }
+
+ /// Apply the function `f` on the value `a` in `Left(a)` or `Both(a, b)` variants. If it is
+ /// present rewrapping the result in `self`'s original variant.
+ pub fn map_left<F, M>(self, f: F) -> EitherOrBoth<M, B>
+ where
+ F: FnOnce(A) -> M,
+ {
+ match self {
+ Both(a, b) => Both(f(a), b),
+ Left(a) => Left(f(a)),
+ Right(b) => Right(b),
+ }
+ }
+
+ /// Apply the function `f` on the value `b` in `Right(b)` or `Both(a, b)` variants.
+ /// If it is present rewrapping the result in `self`'s original variant.
+ pub fn map_right<F, M>(self, f: F) -> EitherOrBoth<A, M>
+ where
+ F: FnOnce(B) -> M,
+ {
+ match self {
+ Left(a) => Left(a),
+ Right(b) => Right(f(b)),
+ Both(a, b) => Both(a, f(b)),
+ }
+ }
+
+ /// Apply the functions `f` and `g` on the value `a` and `b` respectively;
+ /// found in `Left(a)`, `Right(b)`, or `Both(a, b)` variants.
+ /// The Result is rewrapped `self`'s original variant.
+ pub fn map_any<F, L, G, R>(self, f: F, g: G) -> EitherOrBoth<L, R>
+ where
+ F: FnOnce(A) -> L,
+ G: FnOnce(B) -> R,
+ {
+ match self {
+ Left(a) => Left(f(a)),
+ Right(b) => Right(g(b)),
+ Both(a, b) => Both(f(a), g(b)),
+ }
+ }
+
+ /// Apply the function `f` on the value `a` in `Left(a)` or `Both(a, _)` variants if it is
+ /// present.
+ pub fn left_and_then<F, L>(self, f: F) -> EitherOrBoth<L, B>
+ where
+ F: FnOnce(A) -> EitherOrBoth<L, B>,
+ {
+ match self {
+ Left(a) | Both(a, _) => f(a),
+ Right(b) => Right(b),
+ }
+ }
+
+ /// Apply the function `f` on the value `b`
+ /// in `Right(b)` or `Both(_, b)` variants if it is present.
+ pub fn right_and_then<F, R>(self, f: F) -> EitherOrBoth<A, R>
+ where
+ F: FnOnce(B) -> EitherOrBoth<A, R>,
+ {
+ match self {
+ Left(a) => Left(a),
+ Right(b) | Both(_, b) => f(b),
+ }
+ }
+
+ /// Returns a tuple consisting of the `l` and `r` in `Both(l, r)`, if present.
+ /// Otherwise, returns the wrapped value for the present element, and the supplied
+ /// value for the other. The first (`l`) argument is used for a missing `Left`
+ /// value. The second (`r`) argument is used for a missing `Right` value.
+ ///
+ /// Arguments passed to `or` are eagerly evaluated; if you are passing
+ /// the result of a function call, it is recommended to use [`or_else`],
+ /// which is lazily evaluated.
+ ///
+ /// [`or_else`]: EitherOrBoth::or_else
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use itertools::EitherOrBoth;
+ /// assert_eq!(EitherOrBoth::Both("tree", 1).or("stone", 5), ("tree", 1));
+ /// assert_eq!(EitherOrBoth::Left("tree").or("stone", 5), ("tree", 5));
+ /// assert_eq!(EitherOrBoth::Right(1).or("stone", 5), ("stone", 1));
+ /// ```
+ pub fn or(self, l: A, r: B) -> (A, B) {
+ match self {
+ Left(inner_l) => (inner_l, r),
+ Right(inner_r) => (l, inner_r),
+ Both(inner_l, inner_r) => (inner_l, inner_r),
+ }
+ }
+
+ /// Returns a tuple consisting of the `l` and `r` in `Both(l, r)`, if present.
+ /// Otherwise, returns the wrapped value for the present element, and the [`default`](Default::default)
+ /// for the other.
+ pub fn or_default(self) -> (A, B)
+ where
+ A: Default,
+ B: Default,
+ {
+ match self {
+ EitherOrBoth::Left(l) => (l, B::default()),
+ EitherOrBoth::Right(r) => (A::default(), r),
+ EitherOrBoth::Both(l, r) => (l, r),
+ }
+ }
+
+ /// Returns a tuple consisting of the `l` and `r` in `Both(l, r)`, if present.
+ /// Otherwise, returns the wrapped value for the present element, and computes the
+ /// missing value with the supplied closure. The first argument (`l`) is used for a
+ /// missing `Left` value. The second argument (`r`) is used for a missing `Right` value.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use itertools::EitherOrBoth;
+ /// let k = 10;
+ /// assert_eq!(EitherOrBoth::Both("tree", 1).or_else(|| "stone", || 2 * k), ("tree", 1));
+ /// assert_eq!(EitherOrBoth::Left("tree").or_else(|| "stone", || 2 * k), ("tree", 20));
+ /// assert_eq!(EitherOrBoth::Right(1).or_else(|| "stone", || 2 * k), ("stone", 1));
+ /// ```
+ pub fn or_else<L: FnOnce() -> A, R: FnOnce() -> B>(self, l: L, r: R) -> (A, B) {
+ match self {
+ Left(inner_l) => (inner_l, r()),
+ Right(inner_r) => (l(), inner_r),
+ Both(inner_l, inner_r) => (inner_l, inner_r),
+ }
+ }
+}
+
+impl<T> EitherOrBoth<T, T> {
+ /// Return either value of left, right, or the product of `f` applied where `Both` are present.
+ pub fn reduce<F>(self, f: F) -> T
+ where
+ F: FnOnce(T, T) -> T,
+ {
+ match self {
+ Left(a) => a,
+ Right(b) => b,
+ Both(a, b) => f(a, b),
+ }
+ }
+}
+
+impl<A, B> Into<Option<Either<A, B>>> for EitherOrBoth<A, B> {
+ fn into(self) -> Option<Either<A, B>> {
+ match self {
+ EitherOrBoth::Left(l) => Some(Either::Left(l)),
+ EitherOrBoth::Right(r) => Some(Either::Right(r)),
+ _ => None,
+ }
+ }
+}
diff --git a/vendor/itertools-0.10.5/src/exactly_one_err.rs b/vendor/itertools-0.10.5/src/exactly_one_err.rs
new file mode 100644
index 000000000..c54ae77ca
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/exactly_one_err.rs
@@ -0,0 +1,110 @@
+#[cfg(feature = "use_std")]
+use std::error::Error;
+use std::fmt::{Debug, Display, Formatter, Result as FmtResult};
+
+use std::iter::ExactSizeIterator;
+
+use either::Either;
+
+use crate::size_hint;
+
+/// Iterator returned for the error case of `IterTools::exactly_one()`
+/// This iterator yields exactly the same elements as the input iterator.
+///
+/// During the execution of `exactly_one` the iterator must be mutated. This wrapper
+/// effectively "restores" the state of the input iterator when it's handed back.
+///
+/// This is very similar to `PutBackN` except this iterator only supports 0-2 elements and does not
+/// use a `Vec`.
+#[derive(Clone)]
+pub struct ExactlyOneError<I>
+where
+ I: Iterator,
+{
+ first_two: Option<Either<[I::Item; 2], I::Item>>,
+ inner: I,
+}
+
+impl<I> ExactlyOneError<I>
+where
+ I: Iterator,
+{
+ /// Creates a new `ExactlyOneErr` iterator.
+ pub(crate) fn new(first_two: Option<Either<[I::Item; 2], I::Item>>, inner: I) -> Self {
+ Self { first_two, inner }
+ }
+
+ fn additional_len(&self) -> usize {
+ match self.first_two {
+ Some(Either::Left(_)) => 2,
+ Some(Either::Right(_)) => 1,
+ None => 0,
+ }
+ }
+}
+
+impl<I> Iterator for ExactlyOneError<I>
+where
+ I: Iterator,
+{
+ type Item = I::Item;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ match self.first_two.take() {
+ Some(Either::Left([first, second])) => {
+ self.first_two = Some(Either::Right(second));
+ Some(first)
+ },
+ Some(Either::Right(second)) => {
+ Some(second)
+ }
+ None => {
+ self.inner.next()
+ }
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ size_hint::add_scalar(self.inner.size_hint(), self.additional_len())
+ }
+}
+
+
+impl<I> ExactSizeIterator for ExactlyOneError<I> where I: ExactSizeIterator {}
+
+impl<I> Display for ExactlyOneError<I>
+ where I: Iterator,
+{
+ fn fmt(&self, f: &mut Formatter) -> FmtResult {
+ let additional = self.additional_len();
+ if additional > 0 {
+ write!(f, "got at least 2 elements when exactly one was expected")
+ } else {
+ write!(f, "got zero elements when exactly one was expected")
+ }
+ }
+}
+
+impl<I> Debug for ExactlyOneError<I>
+ where I: Iterator + Debug,
+ I::Item: Debug,
+{
+ fn fmt(&self, f: &mut Formatter) -> FmtResult {
+ match &self.first_two {
+ Some(Either::Left([first, second])) => {
+ write!(f, "ExactlyOneError[First: {:?}, Second: {:?}, RemainingIter: {:?}]", first, second, self.inner)
+ },
+ Some(Either::Right(second)) => {
+ write!(f, "ExactlyOneError[Second: {:?}, RemainingIter: {:?}]", second, self.inner)
+ }
+ None => {
+ write!(f, "ExactlyOneError[RemainingIter: {:?}]", self.inner)
+ }
+ }
+ }
+}
+
+#[cfg(feature = "use_std")]
+impl<I> Error for ExactlyOneError<I> where I: Iterator + Debug, I::Item: Debug, {}
+
+
diff --git a/vendor/itertools-0.10.5/src/extrema_set.rs b/vendor/itertools-0.10.5/src/extrema_set.rs
new file mode 100644
index 000000000..ae128364c
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/extrema_set.rs
@@ -0,0 +1,48 @@
+use std::cmp::Ordering;
+
+/// Implementation guts for `min_set`, `min_set_by`, and `min_set_by_key`.
+pub fn min_set_impl<I, K, F, Compare>(
+ mut it: I,
+ mut key_for: F,
+ mut compare: Compare,
+) -> Vec<I::Item>
+where
+ I: Iterator,
+ F: FnMut(&I::Item) -> K,
+ Compare: FnMut(&I::Item, &I::Item, &K, &K) -> Ordering,
+{
+ match it.next() {
+ None => Vec::new(),
+ Some(element) => {
+ let mut current_key = key_for(&element);
+ let mut result = vec![element];
+ it.for_each(|element| {
+ let key = key_for(&element);
+ match compare(&element, &result[0], &key, &current_key) {
+ Ordering::Less => {
+ result.clear();
+ result.push(element);
+ current_key = key;
+ }
+ Ordering::Equal => {
+ result.push(element);
+ }
+ Ordering::Greater => {}
+ }
+ });
+ result
+ }
+ }
+}
+
+/// Implementation guts for `ax_set`, `max_set_by`, and `max_set_by_key`.
+pub fn max_set_impl<I, K, F, Compare>(it: I, key_for: F, mut compare: Compare) -> Vec<I::Item>
+where
+ I: Iterator,
+ F: FnMut(&I::Item) -> K,
+ Compare: FnMut(&I::Item, &I::Item, &K, &K) -> Ordering,
+{
+ min_set_impl(it, key_for, |it1, it2, key1, key2| {
+ compare(it2, it1, key2, key1)
+ })
+}
diff --git a/vendor/itertools-0.10.5/src/flatten_ok.rs b/vendor/itertools-0.10.5/src/flatten_ok.rs
new file mode 100644
index 000000000..21ae1f722
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/flatten_ok.rs
@@ -0,0 +1,165 @@
+use crate::size_hint;
+use std::{
+ fmt,
+ iter::{DoubleEndedIterator, FusedIterator},
+};
+
+pub fn flatten_ok<I, T, E>(iter: I) -> FlattenOk<I, T, E>
+where
+ I: Iterator<Item = Result<T, E>>,
+ T: IntoIterator,
+{
+ FlattenOk {
+ iter,
+ inner_front: None,
+ inner_back: None,
+ }
+}
+
+/// An iterator adaptor that flattens `Result::Ok` values and
+/// allows `Result::Err` values through unchanged.
+///
+/// See [`.flatten_ok()`](crate::Itertools::flatten_ok) for more information.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct FlattenOk<I, T, E>
+where
+ I: Iterator<Item = Result<T, E>>,
+ T: IntoIterator,
+{
+ iter: I,
+ inner_front: Option<T::IntoIter>,
+ inner_back: Option<T::IntoIter>,
+}
+
+impl<I, T, E> Iterator for FlattenOk<I, T, E>
+where
+ I: Iterator<Item = Result<T, E>>,
+ T: IntoIterator,
+{
+ type Item = Result<T::Item, E>;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ loop {
+ // Handle the front inner iterator.
+ if let Some(inner) = &mut self.inner_front {
+ if let Some(item) = inner.next() {
+ return Some(Ok(item));
+ }
+
+ // This is necessary for the iterator to implement `FusedIterator`
+ // with only the original iterator being fused.
+ self.inner_front = None;
+ }
+
+ match self.iter.next() {
+ Some(Ok(ok)) => self.inner_front = Some(ok.into_iter()),
+ Some(Err(e)) => return Some(Err(e)),
+ None => {
+ // Handle the back inner iterator.
+ if let Some(inner) = &mut self.inner_back {
+ if let Some(item) = inner.next() {
+ return Some(Ok(item));
+ }
+
+ // This is necessary for the iterator to implement `FusedIterator`
+ // with only the original iterator being fused.
+ self.inner_back = None;
+ } else {
+ return None;
+ }
+ }
+ }
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ let inner_hint = |inner: &Option<T::IntoIter>| {
+ inner
+ .as_ref()
+ .map(Iterator::size_hint)
+ .unwrap_or((0, Some(0)))
+ };
+ let inner_front = inner_hint(&self.inner_front);
+ let inner_back = inner_hint(&self.inner_back);
+ // The outer iterator `Ok` case could be (0, None) as we don't know its size_hint yet.
+ let outer = match self.iter.size_hint() {
+ (0, Some(0)) => (0, Some(0)),
+ _ => (0, None),
+ };
+
+ size_hint::add(size_hint::add(inner_front, inner_back), outer)
+ }
+}
+
+impl<I, T, E> DoubleEndedIterator for FlattenOk<I, T, E>
+where
+ I: DoubleEndedIterator<Item = Result<T, E>>,
+ T: IntoIterator,
+ T::IntoIter: DoubleEndedIterator,
+{
+ fn next_back(&mut self) -> Option<Self::Item> {
+ loop {
+ // Handle the back inner iterator.
+ if let Some(inner) = &mut self.inner_back {
+ if let Some(item) = inner.next_back() {
+ return Some(Ok(item));
+ }
+
+ // This is necessary for the iterator to implement `FusedIterator`
+ // with only the original iterator being fused.
+ self.inner_back = None;
+ }
+
+ match self.iter.next_back() {
+ Some(Ok(ok)) => self.inner_back = Some(ok.into_iter()),
+ Some(Err(e)) => return Some(Err(e)),
+ None => {
+ // Handle the front inner iterator.
+ if let Some(inner) = &mut self.inner_front {
+ if let Some(item) = inner.next_back() {
+ return Some(Ok(item));
+ }
+
+ // This is necessary for the iterator to implement `FusedIterator`
+ // with only the original iterator being fused.
+ self.inner_front = None;
+ } else {
+ return None;
+ }
+ }
+ }
+ }
+ }
+}
+
+impl<I, T, E> Clone for FlattenOk<I, T, E>
+where
+ I: Iterator<Item = Result<T, E>> + Clone,
+ T: IntoIterator,
+ T::IntoIter: Clone,
+{
+ clone_fields!(iter, inner_front, inner_back);
+}
+
+impl<I, T, E> fmt::Debug for FlattenOk<I, T, E>
+where
+ I: Iterator<Item = Result<T, E>> + fmt::Debug,
+ T: IntoIterator,
+ T::IntoIter: fmt::Debug,
+{
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.debug_struct("FlattenOk")
+ .field("iter", &self.iter)
+ .field("inner_front", &self.inner_front)
+ .field("inner_back", &self.inner_back)
+ .finish()
+ }
+}
+
+/// Only the iterator being flattened needs to implement [`FusedIterator`].
+impl<I, T, E> FusedIterator for FlattenOk<I, T, E>
+where
+ I: FusedIterator<Item = Result<T, E>>,
+ T: IntoIterator,
+{
+}
diff --git a/vendor/itertools-0.10.5/src/format.rs b/vendor/itertools-0.10.5/src/format.rs
new file mode 100644
index 000000000..d87cee950
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/format.rs
@@ -0,0 +1,113 @@
+use std::fmt;
+use std::cell::RefCell;
+
+/// Format all iterator elements lazily, separated by `sep`.
+///
+/// The format value can only be formatted once, after that the iterator is
+/// exhausted.
+///
+/// See [`.format_with()`](crate::Itertools::format_with) for more information.
+#[derive(Clone)]
+pub struct FormatWith<'a, I, F> {
+ sep: &'a str,
+ /// FormatWith uses interior mutability because Display::fmt takes &self.
+ inner: RefCell<Option<(I, F)>>,
+}
+
+/// Format all iterator elements lazily, separated by `sep`.
+///
+/// The format value can only be formatted once, after that the iterator is
+/// exhausted.
+///
+/// See [`.format()`](crate::Itertools::format)
+/// for more information.
+#[derive(Clone)]
+pub struct Format<'a, I> {
+ sep: &'a str,
+ /// Format uses interior mutability because Display::fmt takes &self.
+ inner: RefCell<Option<I>>,
+}
+
+pub fn new_format<I, F>(iter: I, separator: &str, f: F) -> FormatWith<'_, I, F>
+ where I: Iterator,
+ F: FnMut(I::Item, &mut dyn FnMut(&dyn fmt::Display) -> fmt::Result) -> fmt::Result
+{
+ FormatWith {
+ sep: separator,
+ inner: RefCell::new(Some((iter, f))),
+ }
+}
+
+pub fn new_format_default<I>(iter: I, separator: &str) -> Format<'_, I>
+ where I: Iterator,
+{
+ Format {
+ sep: separator,
+ inner: RefCell::new(Some(iter)),
+ }
+}
+
+impl<'a, I, F> fmt::Display for FormatWith<'a, I, F>
+ where I: Iterator,
+ F: FnMut(I::Item, &mut dyn FnMut(&dyn fmt::Display) -> fmt::Result) -> fmt::Result
+{
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ let (mut iter, mut format) = match self.inner.borrow_mut().take() {
+ Some(t) => t,
+ None => panic!("FormatWith: was already formatted once"),
+ };
+
+ if let Some(fst) = iter.next() {
+ format(fst, &mut |disp: &dyn fmt::Display| disp.fmt(f))?;
+ iter.try_for_each(|elt| {
+ if !self.sep.is_empty() {
+ f.write_str(self.sep)?;
+ }
+ format(elt, &mut |disp: &dyn fmt::Display| disp.fmt(f))
+ })?;
+ }
+ Ok(())
+ }
+}
+
+impl<'a, I> Format<'a, I>
+ where I: Iterator,
+{
+ fn format<F>(&self, f: &mut fmt::Formatter, mut cb: F) -> fmt::Result
+ where F: FnMut(&I::Item, &mut fmt::Formatter) -> fmt::Result,
+ {
+ let mut iter = match self.inner.borrow_mut().take() {
+ Some(t) => t,
+ None => panic!("Format: was already formatted once"),
+ };
+
+ if let Some(fst) = iter.next() {
+ cb(&fst, f)?;
+ iter.try_for_each(|elt| {
+ if !self.sep.is_empty() {
+ f.write_str(self.sep)?;
+ }
+ cb(&elt, f)
+ })?;
+ }
+ Ok(())
+ }
+}
+
+macro_rules! impl_format {
+ ($($fmt_trait:ident)*) => {
+ $(
+ impl<'a, I> fmt::$fmt_trait for Format<'a, I>
+ where I: Iterator,
+ I::Item: fmt::$fmt_trait,
+ {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ self.format(f, fmt::$fmt_trait::fmt)
+ }
+ }
+ )*
+ }
+}
+
+impl_format!{Display Debug
+ UpperExp LowerExp UpperHex LowerHex Octal Binary Pointer}
diff --git a/vendor/itertools-0.10.5/src/free.rs b/vendor/itertools-0.10.5/src/free.rs
new file mode 100644
index 000000000..19e3e2869
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/free.rs
@@ -0,0 +1,286 @@
+//! Free functions that create iterator adaptors or call iterator methods.
+//!
+//! The benefit of free functions is that they accept any [`IntoIterator`] as
+//! argument, so the resulting code may be easier to read.
+
+#[cfg(feature = "use_alloc")]
+use std::fmt::Display;
+use std::iter::{self, Zip};
+#[cfg(feature = "use_alloc")]
+type VecIntoIter<T> = alloc::vec::IntoIter<T>;
+
+#[cfg(feature = "use_alloc")]
+use alloc::{
+ string::String,
+};
+
+use crate::Itertools;
+use crate::intersperse::{Intersperse, IntersperseWith};
+
+pub use crate::adaptors::{
+ interleave,
+ merge,
+ put_back,
+};
+#[cfg(feature = "use_alloc")]
+pub use crate::put_back_n_impl::put_back_n;
+#[cfg(feature = "use_alloc")]
+pub use crate::multipeek_impl::multipeek;
+#[cfg(feature = "use_alloc")]
+pub use crate::peek_nth::peek_nth;
+#[cfg(feature = "use_alloc")]
+pub use crate::kmerge_impl::kmerge;
+pub use crate::zip_eq_impl::zip_eq;
+pub use crate::merge_join::merge_join_by;
+#[cfg(feature = "use_alloc")]
+pub use crate::rciter_impl::rciter;
+
+/// Iterate `iterable` with a particular value inserted between each element.
+///
+/// [`IntoIterator`] enabled version of [`Iterator::intersperse`].
+///
+/// ```
+/// use itertools::intersperse;
+///
+/// itertools::assert_equal(intersperse((0..3), 8), vec![0, 8, 1, 8, 2]);
+/// ```
+pub fn intersperse<I>(iterable: I, element: I::Item) -> Intersperse<I::IntoIter>
+ where I: IntoIterator,
+ <I as IntoIterator>::Item: Clone
+{
+ Itertools::intersperse(iterable.into_iter(), element)
+}
+
+/// Iterate `iterable` with a particular value created by a function inserted
+/// between each element.
+///
+/// [`IntoIterator`] enabled version of [`Iterator::intersperse_with`].
+///
+/// ```
+/// use itertools::intersperse_with;
+///
+/// let mut i = 10;
+/// itertools::assert_equal(intersperse_with((0..3), || { i -= 1; i }), vec![0, 9, 1, 8, 2]);
+/// assert_eq!(i, 8);
+/// ```
+pub fn intersperse_with<I, F>(iterable: I, element: F) -> IntersperseWith<I::IntoIter, F>
+ where I: IntoIterator,
+ F: FnMut() -> I::Item
+{
+ Itertools::intersperse_with(iterable.into_iter(), element)
+}
+
+/// Iterate `iterable` with a running index.
+///
+/// [`IntoIterator`] enabled version of [`Iterator::enumerate`].
+///
+/// ```
+/// use itertools::enumerate;
+///
+/// for (i, elt) in enumerate(&[1, 2, 3]) {
+/// /* loop body */
+/// }
+/// ```
+pub fn enumerate<I>(iterable: I) -> iter::Enumerate<I::IntoIter>
+ where I: IntoIterator
+{
+ iterable.into_iter().enumerate()
+}
+
+/// Iterate `iterable` in reverse.
+///
+/// [`IntoIterator`] enabled version of [`Iterator::rev`].
+///
+/// ```
+/// use itertools::rev;
+///
+/// for elt in rev(&[1, 2, 3]) {
+/// /* loop body */
+/// }
+/// ```
+pub fn rev<I>(iterable: I) -> iter::Rev<I::IntoIter>
+ where I: IntoIterator,
+ I::IntoIter: DoubleEndedIterator
+{
+ iterable.into_iter().rev()
+}
+
+/// Converts the arguments to iterators and zips them.
+///
+/// [`IntoIterator`] enabled version of [`Iterator::zip`].
+///
+/// ## Example
+///
+/// ```
+/// use itertools::zip;
+///
+/// let mut result: Vec<(i32, char)> = Vec::new();
+///
+/// for (a, b) in zip(&[1, 2, 3, 4, 5], &['a', 'b', 'c']) {
+/// result.push((*a, *b));
+/// }
+/// assert_eq!(result, vec![(1, 'a'),(2, 'b'),(3, 'c')]);
+/// ```
+#[deprecated(note="Use [std::iter::zip](https://doc.rust-lang.org/std/iter/fn.zip.html) instead", since="0.10.4")]
+pub fn zip<I, J>(i: I, j: J) -> Zip<I::IntoIter, J::IntoIter>
+ where I: IntoIterator,
+ J: IntoIterator
+{
+ i.into_iter().zip(j)
+}
+
+
+/// Takes two iterables and creates a new iterator over both in sequence.
+///
+/// [`IntoIterator`] enabled version of [`Iterator::chain`].
+///
+/// ## Example
+/// ```
+/// use itertools::chain;
+///
+/// let mut result:Vec<i32> = Vec::new();
+///
+/// for element in chain(&[1, 2, 3], &[4]) {
+/// result.push(*element);
+/// }
+/// assert_eq!(result, vec![1, 2, 3, 4]);
+/// ```
+pub fn chain<I, J>(i: I, j: J) -> iter::Chain<<I as IntoIterator>::IntoIter, <J as IntoIterator>::IntoIter>
+ where I: IntoIterator,
+ J: IntoIterator<Item = I::Item>
+{
+ i.into_iter().chain(j)
+}
+
+/// Create an iterator that clones each element from &T to T
+///
+/// [`IntoIterator`] enabled version of [`Iterator::cloned`].
+///
+/// ```
+/// use itertools::cloned;
+///
+/// assert_eq!(cloned(b"abc").next(), Some(b'a'));
+/// ```
+pub fn cloned<'a, I, T: 'a>(iterable: I) -> iter::Cloned<I::IntoIter>
+ where I: IntoIterator<Item=&'a T>,
+ T: Clone,
+{
+ iterable.into_iter().cloned()
+}
+
+/// Perform a fold operation over the iterable.
+///
+/// [`IntoIterator`] enabled version of [`Iterator::fold`].
+///
+/// ```
+/// use itertools::fold;
+///
+/// assert_eq!(fold(&[1., 2., 3.], 0., |a, &b| f32::max(a, b)), 3.);
+/// ```
+pub fn fold<I, B, F>(iterable: I, init: B, f: F) -> B
+ where I: IntoIterator,
+ F: FnMut(B, I::Item) -> B
+{
+ iterable.into_iter().fold(init, f)
+}
+
+/// Test whether the predicate holds for all elements in the iterable.
+///
+/// [`IntoIterator`] enabled version of [`Iterator::all`].
+///
+/// ```
+/// use itertools::all;
+///
+/// assert!(all(&[1, 2, 3], |elt| *elt > 0));
+/// ```
+pub fn all<I, F>(iterable: I, f: F) -> bool
+ where I: IntoIterator,
+ F: FnMut(I::Item) -> bool
+{
+ iterable.into_iter().all(f)
+}
+
+/// Test whether the predicate holds for any elements in the iterable.
+///
+/// [`IntoIterator`] enabled version of [`Iterator::any`].
+///
+/// ```
+/// use itertools::any;
+///
+/// assert!(any(&[0, -1, 2], |elt| *elt > 0));
+/// ```
+pub fn any<I, F>(iterable: I, f: F) -> bool
+ where I: IntoIterator,
+ F: FnMut(I::Item) -> bool
+{
+ iterable.into_iter().any(f)
+}
+
+/// Return the maximum value of the iterable.
+///
+/// [`IntoIterator`] enabled version of [`Iterator::max`].
+///
+/// ```
+/// use itertools::max;
+///
+/// assert_eq!(max(0..10), Some(9));
+/// ```
+pub fn max<I>(iterable: I) -> Option<I::Item>
+ where I: IntoIterator,
+ I::Item: Ord
+{
+ iterable.into_iter().max()
+}
+
+/// Return the minimum value of the iterable.
+///
+/// [`IntoIterator`] enabled version of [`Iterator::min`].
+///
+/// ```
+/// use itertools::min;
+///
+/// assert_eq!(min(0..10), Some(0));
+/// ```
+pub fn min<I>(iterable: I) -> Option<I::Item>
+ where I: IntoIterator,
+ I::Item: Ord
+{
+ iterable.into_iter().min()
+}
+
+
+/// Combine all iterator elements into one String, separated by `sep`.
+///
+/// [`IntoIterator`] enabled version of [`Itertools::join`].
+///
+/// ```
+/// use itertools::join;
+///
+/// assert_eq!(join(&[1, 2, 3], ", "), "1, 2, 3");
+/// ```
+#[cfg(feature = "use_alloc")]
+pub fn join<I>(iterable: I, sep: &str) -> String
+ where I: IntoIterator,
+ I::Item: Display
+{
+ iterable.into_iter().join(sep)
+}
+
+/// Sort all iterator elements into a new iterator in ascending order.
+///
+/// [`IntoIterator`] enabled version of [`Itertools::sorted`].
+///
+/// ```
+/// use itertools::sorted;
+/// use itertools::assert_equal;
+///
+/// assert_equal(sorted("rust".chars()), "rstu".chars());
+/// ```
+#[cfg(feature = "use_alloc")]
+pub fn sorted<I>(iterable: I) -> VecIntoIter<I::Item>
+ where I: IntoIterator,
+ I::Item: Ord
+{
+ iterable.into_iter().sorted()
+}
+
diff --git a/vendor/itertools-0.10.5/src/group_map.rs b/vendor/itertools-0.10.5/src/group_map.rs
new file mode 100644
index 000000000..a2d0ebb2a
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/group_map.rs
@@ -0,0 +1,32 @@
+#![cfg(feature = "use_std")]
+
+use std::collections::HashMap;
+use std::hash::Hash;
+use std::iter::Iterator;
+
+/// Return a `HashMap` of keys mapped to a list of their corresponding values.
+///
+/// See [`.into_group_map()`](crate::Itertools::into_group_map)
+/// for more information.
+pub fn into_group_map<I, K, V>(iter: I) -> HashMap<K, Vec<V>>
+ where I: Iterator<Item=(K, V)>,
+ K: Hash + Eq,
+{
+ let mut lookup = HashMap::new();
+
+ iter.for_each(|(key, val)| {
+ lookup.entry(key).or_insert_with(Vec::new).push(val);
+ });
+
+ lookup
+}
+
+pub fn into_group_map_by<I, K, V>(iter: I, f: impl Fn(&V) -> K) -> HashMap<K, Vec<V>>
+ where
+ I: Iterator<Item=V>,
+ K: Hash + Eq,
+{
+ into_group_map(
+ iter.map(|v| (f(&v), v))
+ )
+}
diff --git a/vendor/itertools-0.10.5/src/groupbylazy.rs b/vendor/itertools-0.10.5/src/groupbylazy.rs
new file mode 100644
index 000000000..a5a321df4
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/groupbylazy.rs
@@ -0,0 +1,571 @@
+use std::cell::{Cell, RefCell};
+use alloc::vec::{self, Vec};
+
+/// A trait to unify `FnMut` for `GroupBy` with the chunk key in `IntoChunks`
+trait KeyFunction<A> {
+ type Key;
+ fn call_mut(&mut self, arg: A) -> Self::Key;
+}
+
+impl<A, K, F: ?Sized> KeyFunction<A> for F
+ where F: FnMut(A) -> K
+{
+ type Key = K;
+ #[inline]
+ fn call_mut(&mut self, arg: A) -> Self::Key {
+ (*self)(arg)
+ }
+}
+
+
+/// `ChunkIndex` acts like the grouping key function for `IntoChunks`
+#[derive(Debug)]
+struct ChunkIndex {
+ size: usize,
+ index: usize,
+ key: usize,
+}
+
+impl ChunkIndex {
+ #[inline(always)]
+ fn new(size: usize) -> Self {
+ ChunkIndex {
+ size,
+ index: 0,
+ key: 0,
+ }
+ }
+}
+
+impl<A> KeyFunction<A> for ChunkIndex {
+ type Key = usize;
+ #[inline(always)]
+ fn call_mut(&mut self, _arg: A) -> Self::Key {
+ if self.index == self.size {
+ self.key += 1;
+ self.index = 0;
+ }
+ self.index += 1;
+ self.key
+ }
+}
+
+
+struct GroupInner<K, I, F>
+ where I: Iterator
+{
+ key: F,
+ iter: I,
+ current_key: Option<K>,
+ current_elt: Option<I::Item>,
+ /// flag set if iterator is exhausted
+ done: bool,
+ /// Index of group we are currently buffering or visiting
+ top_group: usize,
+ /// Least index for which we still have elements buffered
+ oldest_buffered_group: usize,
+ /// Group index for `buffer[0]` -- the slots
+ /// bottom_group..oldest_buffered_group are unused and will be erased when
+ /// that range is large enough.
+ bottom_group: usize,
+ /// Buffered groups, from `bottom_group` (index 0) to `top_group`.
+ buffer: Vec<vec::IntoIter<I::Item>>,
+ /// index of last group iter that was dropped, usize::MAX == none
+ dropped_group: usize,
+}
+
+impl<K, I, F> GroupInner<K, I, F>
+ where I: Iterator,
+ F: for<'a> KeyFunction<&'a I::Item, Key=K>,
+ K: PartialEq,
+{
+ /// `client`: Index of group that requests next element
+ #[inline(always)]
+ fn step(&mut self, client: usize) -> Option<I::Item> {
+ /*
+ println!("client={}, bottom_group={}, oldest_buffered_group={}, top_group={}, buffers=[{}]",
+ client, self.bottom_group, self.oldest_buffered_group,
+ self.top_group,
+ self.buffer.iter().map(|elt| elt.len()).format(", "));
+ */
+ if client < self.oldest_buffered_group {
+ None
+ } else if client < self.top_group ||
+ (client == self.top_group &&
+ self.buffer.len() > self.top_group - self.bottom_group)
+ {
+ self.lookup_buffer(client)
+ } else if self.done {
+ None
+ } else if self.top_group == client {
+ self.step_current()
+ } else {
+ self.step_buffering(client)
+ }
+ }
+
+ #[inline(never)]
+ fn lookup_buffer(&mut self, client: usize) -> Option<I::Item> {
+ // if `bufidx` doesn't exist in self.buffer, it might be empty
+ let bufidx = client - self.bottom_group;
+ if client < self.oldest_buffered_group {
+ return None;
+ }
+ let elt = self.buffer.get_mut(bufidx).and_then(|queue| queue.next());
+ if elt.is_none() && client == self.oldest_buffered_group {
+ // FIXME: VecDeque is unfortunately not zero allocation when empty,
+ // so we do this job manually.
+ // `bottom_group..oldest_buffered_group` is unused, and if it's large enough, erase it.
+ self.oldest_buffered_group += 1;
+ // skip forward further empty queues too
+ while self.buffer.get(self.oldest_buffered_group - self.bottom_group)
+ .map_or(false, |buf| buf.len() == 0)
+ {
+ self.oldest_buffered_group += 1;
+ }
+
+ let nclear = self.oldest_buffered_group - self.bottom_group;
+ if nclear > 0 && nclear >= self.buffer.len() / 2 {
+ let mut i = 0;
+ self.buffer.retain(|buf| {
+ i += 1;
+ debug_assert!(buf.len() == 0 || i > nclear);
+ i > nclear
+ });
+ self.bottom_group = self.oldest_buffered_group;
+ }
+ }
+ elt
+ }
+
+ /// Take the next element from the iterator, and set the done
+ /// flag if exhausted. Must not be called after done.
+ #[inline(always)]
+ fn next_element(&mut self) -> Option<I::Item> {
+ debug_assert!(!self.done);
+ match self.iter.next() {
+ None => { self.done = true; None }
+ otherwise => otherwise,
+ }
+ }
+
+
+ #[inline(never)]
+ fn step_buffering(&mut self, client: usize) -> Option<I::Item> {
+ // requested a later group -- walk through the current group up to
+ // the requested group index, and buffer the elements (unless
+ // the group is marked as dropped).
+ // Because the `Groups` iterator is always the first to request
+ // each group index, client is the next index efter top_group.
+ debug_assert!(self.top_group + 1 == client);
+ let mut group = Vec::new();
+
+ if let Some(elt) = self.current_elt.take() {
+ if self.top_group != self.dropped_group {
+ group.push(elt);
+ }
+ }
+ let mut first_elt = None; // first element of the next group
+
+ while let Some(elt) = self.next_element() {
+ let key = self.key.call_mut(&elt);
+ match self.current_key.take() {
+ None => {}
+ Some(old_key) => if old_key != key {
+ self.current_key = Some(key);
+ first_elt = Some(elt);
+ break;
+ },
+ }
+ self.current_key = Some(key);
+ if self.top_group != self.dropped_group {
+ group.push(elt);
+ }
+ }
+
+ if self.top_group != self.dropped_group {
+ self.push_next_group(group);
+ }
+ if first_elt.is_some() {
+ self.top_group += 1;
+ debug_assert!(self.top_group == client);
+ }
+ first_elt
+ }
+
+ fn push_next_group(&mut self, group: Vec<I::Item>) {
+ // When we add a new buffered group, fill up slots between oldest_buffered_group and top_group
+ while self.top_group - self.bottom_group > self.buffer.len() {
+ if self.buffer.is_empty() {
+ self.bottom_group += 1;
+ self.oldest_buffered_group += 1;
+ } else {
+ self.buffer.push(Vec::new().into_iter());
+ }
+ }
+ self.buffer.push(group.into_iter());
+ debug_assert!(self.top_group + 1 - self.bottom_group == self.buffer.len());
+ }
+
+ /// This is the immediate case, where we use no buffering
+ #[inline]
+ fn step_current(&mut self) -> Option<I::Item> {
+ debug_assert!(!self.done);
+ if let elt @ Some(..) = self.current_elt.take() {
+ return elt;
+ }
+ match self.next_element() {
+ None => None,
+ Some(elt) => {
+ let key = self.key.call_mut(&elt);
+ match self.current_key.take() {
+ None => {}
+ Some(old_key) => if old_key != key {
+ self.current_key = Some(key);
+ self.current_elt = Some(elt);
+ self.top_group += 1;
+ return None;
+ },
+ }
+ self.current_key = Some(key);
+ Some(elt)
+ }
+ }
+ }
+
+ /// Request the just started groups' key.
+ ///
+ /// `client`: Index of group
+ ///
+ /// **Panics** if no group key is available.
+ fn group_key(&mut self, client: usize) -> K {
+ // This can only be called after we have just returned the first
+ // element of a group.
+ // Perform this by simply buffering one more element, grabbing the
+ // next key.
+ debug_assert!(!self.done);
+ debug_assert!(client == self.top_group);
+ debug_assert!(self.current_key.is_some());
+ debug_assert!(self.current_elt.is_none());
+ let old_key = self.current_key.take().unwrap();
+ if let Some(elt) = self.next_element() {
+ let key = self.key.call_mut(&elt);
+ if old_key != key {
+ self.top_group += 1;
+ }
+ self.current_key = Some(key);
+ self.current_elt = Some(elt);
+ }
+ old_key
+ }
+}
+
+impl<K, I, F> GroupInner<K, I, F>
+ where I: Iterator,
+{
+ /// Called when a group is dropped
+ fn drop_group(&mut self, client: usize) {
+ // It's only useful to track the maximal index
+ if self.dropped_group == !0 || client > self.dropped_group {
+ self.dropped_group = client;
+ }
+ }
+}
+
+/// `GroupBy` is the storage for the lazy grouping operation.
+///
+/// If the groups are consumed in their original order, or if each
+/// group is dropped without keeping it around, then `GroupBy` uses
+/// no allocations. It needs allocations only if several group iterators
+/// are alive at the same time.
+///
+/// This type implements [`IntoIterator`] (it is **not** an iterator
+/// itself), because the group iterators need to borrow from this
+/// value. It should be stored in a local variable or temporary and
+/// iterated.
+///
+/// See [`.group_by()`](crate::Itertools::group_by) for more information.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct GroupBy<K, I, F>
+ where I: Iterator,
+{
+ inner: RefCell<GroupInner<K, I, F>>,
+ // the group iterator's current index. Keep this in the main value
+ // so that simultaneous iterators all use the same state.
+ index: Cell<usize>,
+}
+
+/// Create a new
+pub fn new<K, J, F>(iter: J, f: F) -> GroupBy<K, J::IntoIter, F>
+ where J: IntoIterator,
+ F: FnMut(&J::Item) -> K,
+{
+ GroupBy {
+ inner: RefCell::new(GroupInner {
+ key: f,
+ iter: iter.into_iter(),
+ current_key: None,
+ current_elt: None,
+ done: false,
+ top_group: 0,
+ oldest_buffered_group: 0,
+ bottom_group: 0,
+ buffer: Vec::new(),
+ dropped_group: !0,
+ }),
+ index: Cell::new(0),
+ }
+}
+
+impl<K, I, F> GroupBy<K, I, F>
+ where I: Iterator,
+{
+ /// `client`: Index of group that requests next element
+ fn step(&self, client: usize) -> Option<I::Item>
+ where F: FnMut(&I::Item) -> K,
+ K: PartialEq,
+ {
+ self.inner.borrow_mut().step(client)
+ }
+
+ /// `client`: Index of group
+ fn drop_group(&self, client: usize) {
+ self.inner.borrow_mut().drop_group(client);
+ }
+}
+
+impl<'a, K, I, F> IntoIterator for &'a GroupBy<K, I, F>
+ where I: Iterator,
+ I::Item: 'a,
+ F: FnMut(&I::Item) -> K,
+ K: PartialEq
+{
+ type Item = (K, Group<'a, K, I, F>);
+ type IntoIter = Groups<'a, K, I, F>;
+
+ fn into_iter(self) -> Self::IntoIter {
+ Groups { parent: self }
+ }
+}
+
+
+/// An iterator that yields the Group iterators.
+///
+/// Iterator element type is `(K, Group)`:
+/// the group's key `K` and the group's iterator.
+///
+/// See [`.group_by()`](crate::Itertools::group_by) for more information.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct Groups<'a, K: 'a, I: 'a, F: 'a>
+ where I: Iterator,
+ I::Item: 'a
+{
+ parent: &'a GroupBy<K, I, F>,
+}
+
+impl<'a, K, I, F> Iterator for Groups<'a, K, I, F>
+ where I: Iterator,
+ I::Item: 'a,
+ F: FnMut(&I::Item) -> K,
+ K: PartialEq
+{
+ type Item = (K, Group<'a, K, I, F>);
+
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ let index = self.parent.index.get();
+ self.parent.index.set(index + 1);
+ let inner = &mut *self.parent.inner.borrow_mut();
+ inner.step(index).map(|elt| {
+ let key = inner.group_key(index);
+ (key, Group {
+ parent: self.parent,
+ index,
+ first: Some(elt),
+ })
+ })
+ }
+}
+
+/// An iterator for the elements in a single group.
+///
+/// Iterator element type is `I::Item`.
+pub struct Group<'a, K: 'a, I: 'a, F: 'a>
+ where I: Iterator,
+ I::Item: 'a,
+{
+ parent: &'a GroupBy<K, I, F>,
+ index: usize,
+ first: Option<I::Item>,
+}
+
+impl<'a, K, I, F> Drop for Group<'a, K, I, F>
+ where I: Iterator,
+ I::Item: 'a,
+{
+ fn drop(&mut self) {
+ self.parent.drop_group(self.index);
+ }
+}
+
+impl<'a, K, I, F> Iterator for Group<'a, K, I, F>
+ where I: Iterator,
+ I::Item: 'a,
+ F: FnMut(&I::Item) -> K,
+ K: PartialEq,
+{
+ type Item = I::Item;
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ if let elt @ Some(..) = self.first.take() {
+ return elt;
+ }
+ self.parent.step(self.index)
+ }
+}
+
+///// IntoChunks /////
+
+/// Create a new
+pub fn new_chunks<J>(iter: J, size: usize) -> IntoChunks<J::IntoIter>
+ where J: IntoIterator,
+{
+ IntoChunks {
+ inner: RefCell::new(GroupInner {
+ key: ChunkIndex::new(size),
+ iter: iter.into_iter(),
+ current_key: None,
+ current_elt: None,
+ done: false,
+ top_group: 0,
+ oldest_buffered_group: 0,
+ bottom_group: 0,
+ buffer: Vec::new(),
+ dropped_group: !0,
+ }),
+ index: Cell::new(0),
+ }
+}
+
+
+/// `ChunkLazy` is the storage for a lazy chunking operation.
+///
+/// `IntoChunks` behaves just like `GroupBy`: it is iterable, and
+/// it only buffers if several chunk iterators are alive at the same time.
+///
+/// This type implements [`IntoIterator`] (it is **not** an iterator
+/// itself), because the chunk iterators need to borrow from this
+/// value. It should be stored in a local variable or temporary and
+/// iterated.
+///
+/// Iterator element type is `Chunk`, each chunk's iterator.
+///
+/// See [`.chunks()`](crate::Itertools::chunks) for more information.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct IntoChunks<I>
+ where I: Iterator,
+{
+ inner: RefCell<GroupInner<usize, I, ChunkIndex>>,
+ // the chunk iterator's current index. Keep this in the main value
+ // so that simultaneous iterators all use the same state.
+ index: Cell<usize>,
+}
+
+
+impl<I> IntoChunks<I>
+ where I: Iterator,
+{
+ /// `client`: Index of chunk that requests next element
+ fn step(&self, client: usize) -> Option<I::Item> {
+ self.inner.borrow_mut().step(client)
+ }
+
+ /// `client`: Index of chunk
+ fn drop_group(&self, client: usize) {
+ self.inner.borrow_mut().drop_group(client);
+ }
+}
+
+impl<'a, I> IntoIterator for &'a IntoChunks<I>
+ where I: Iterator,
+ I::Item: 'a,
+{
+ type Item = Chunk<'a, I>;
+ type IntoIter = Chunks<'a, I>;
+
+ fn into_iter(self) -> Self::IntoIter {
+ Chunks {
+ parent: self,
+ }
+ }
+}
+
+
+/// An iterator that yields the Chunk iterators.
+///
+/// Iterator element type is `Chunk`.
+///
+/// See [`.chunks()`](crate::Itertools::chunks) for more information.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct Chunks<'a, I: 'a>
+ where I: Iterator,
+ I::Item: 'a,
+{
+ parent: &'a IntoChunks<I>,
+}
+
+impl<'a, I> Iterator for Chunks<'a, I>
+ where I: Iterator,
+ I::Item: 'a,
+{
+ type Item = Chunk<'a, I>;
+
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ let index = self.parent.index.get();
+ self.parent.index.set(index + 1);
+ let inner = &mut *self.parent.inner.borrow_mut();
+ inner.step(index).map(|elt| {
+ Chunk {
+ parent: self.parent,
+ index,
+ first: Some(elt),
+ }
+ })
+ }
+}
+
+/// An iterator for the elements in a single chunk.
+///
+/// Iterator element type is `I::Item`.
+pub struct Chunk<'a, I: 'a>
+ where I: Iterator,
+ I::Item: 'a,
+{
+ parent: &'a IntoChunks<I>,
+ index: usize,
+ first: Option<I::Item>,
+}
+
+impl<'a, I> Drop for Chunk<'a, I>
+ where I: Iterator,
+ I::Item: 'a,
+{
+ fn drop(&mut self) {
+ self.parent.drop_group(self.index);
+ }
+}
+
+impl<'a, I> Iterator for Chunk<'a, I>
+ where I: Iterator,
+ I::Item: 'a,
+{
+ type Item = I::Item;
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ if let elt @ Some(..) = self.first.take() {
+ return elt;
+ }
+ self.parent.step(self.index)
+ }
+}
diff --git a/vendor/itertools-0.10.5/src/grouping_map.rs b/vendor/itertools-0.10.5/src/grouping_map.rs
new file mode 100644
index 000000000..bb5b582c9
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/grouping_map.rs
@@ -0,0 +1,535 @@
+#![cfg(feature = "use_std")]
+
+use crate::MinMaxResult;
+use std::collections::HashMap;
+use std::cmp::Ordering;
+use std::hash::Hash;
+use std::iter::Iterator;
+use std::ops::{Add, Mul};
+
+/// A wrapper to allow for an easy [`into_grouping_map_by`](crate::Itertools::into_grouping_map_by)
+#[derive(Clone, Debug)]
+pub struct MapForGrouping<I, F>(I, F);
+
+impl<I, F> MapForGrouping<I, F> {
+ pub(crate) fn new(iter: I, key_mapper: F) -> Self {
+ Self(iter, key_mapper)
+ }
+}
+
+impl<K, V, I, F> Iterator for MapForGrouping<I, F>
+ where I: Iterator<Item = V>,
+ K: Hash + Eq,
+ F: FnMut(&V) -> K,
+{
+ type Item = (K, V);
+ fn next(&mut self) -> Option<Self::Item> {
+ self.0.next().map(|val| ((self.1)(&val), val))
+ }
+}
+
+/// Creates a new `GroupingMap` from `iter`
+pub fn new<I, K, V>(iter: I) -> GroupingMap<I>
+ where I: Iterator<Item = (K, V)>,
+ K: Hash + Eq,
+{
+ GroupingMap { iter }
+}
+
+/// `GroupingMapBy` is an intermediate struct for efficient group-and-fold operations.
+///
+/// See [`GroupingMap`] for more informations.
+pub type GroupingMapBy<I, F> = GroupingMap<MapForGrouping<I, F>>;
+
+/// `GroupingMap` is an intermediate struct for efficient group-and-fold operations.
+/// It groups elements by their key and at the same time fold each group
+/// using some aggregating operation.
+///
+/// No method on this struct performs temporary allocations.
+#[derive(Clone, Debug)]
+#[must_use = "GroupingMap is lazy and do nothing unless consumed"]
+pub struct GroupingMap<I> {
+ iter: I,
+}
+
+impl<I, K, V> GroupingMap<I>
+ where I: Iterator<Item = (K, V)>,
+ K: Hash + Eq,
+{
+ /// This is the generic way to perform any operation on a `GroupingMap`.
+ /// It's suggested to use this method only to implement custom operations
+ /// when the already provided ones are not enough.
+ ///
+ /// Groups elements from the `GroupingMap` source by key and applies `operation` to the elements
+ /// of each group sequentially, passing the previously accumulated value, a reference to the key
+ /// and the current element as arguments, and stores the results in an `HashMap`.
+ ///
+ /// The `operation` function is invoked on each element with the following parameters:
+ /// - the current value of the accumulator of the group if there is currently one;
+ /// - a reference to the key of the group this element belongs to;
+ /// - the element from the source being aggregated;
+ ///
+ /// If `operation` returns `Some(element)` then the accumulator is updated with `element`,
+ /// otherwise the previous accumulation is discarded.
+ ///
+ /// Return a `HashMap` associating the key of each group with the result of aggregation of
+ /// that group's elements. If the aggregation of the last element of a group discards the
+ /// accumulator then there won't be an entry associated to that group's key.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let data = vec![2, 8, 5, 7, 9, 0, 4, 10];
+ /// let lookup = data.into_iter()
+ /// .into_grouping_map_by(|&n| n % 4)
+ /// .aggregate(|acc, _key, val| {
+ /// if val == 0 || val == 10 {
+ /// None
+ /// } else {
+ /// Some(acc.unwrap_or(0) + val)
+ /// }
+ /// });
+ ///
+ /// assert_eq!(lookup[&0], 4); // 0 resets the accumulator so only 4 is summed
+ /// assert_eq!(lookup[&1], 5 + 9);
+ /// assert_eq!(lookup.get(&2), None); // 10 resets the accumulator and nothing is summed afterward
+ /// assert_eq!(lookup[&3], 7);
+ /// assert_eq!(lookup.len(), 3); // The final keys are only 0, 1 and 2
+ /// ```
+ pub fn aggregate<FO, R>(self, mut operation: FO) -> HashMap<K, R>
+ where FO: FnMut(Option<R>, &K, V) -> Option<R>,
+ {
+ let mut destination_map = HashMap::new();
+
+ self.iter.for_each(|(key, val)| {
+ let acc = destination_map.remove(&key);
+ if let Some(op_res) = operation(acc, &key, val) {
+ destination_map.insert(key, op_res);
+ }
+ });
+
+ destination_map
+ }
+
+ /// Groups elements from the `GroupingMap` source by key and applies `operation` to the elements
+ /// of each group sequentially, passing the previously accumulated value, a reference to the key
+ /// and the current element as arguments, and stores the results in a new map.
+ ///
+ /// `init` is the value from which will be cloned the initial value of each accumulator.
+ ///
+ /// `operation` is a function that is invoked on each element with the following parameters:
+ /// - the current value of the accumulator of the group;
+ /// - a reference to the key of the group this element belongs to;
+ /// - the element from the source being accumulated.
+ ///
+ /// Return a `HashMap` associating the key of each group with the result of folding that group's elements.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let lookup = (1..=7)
+ /// .into_grouping_map_by(|&n| n % 3)
+ /// .fold(0, |acc, _key, val| acc + val);
+ ///
+ /// assert_eq!(lookup[&0], 3 + 6);
+ /// assert_eq!(lookup[&1], 1 + 4 + 7);
+ /// assert_eq!(lookup[&2], 2 + 5);
+ /// assert_eq!(lookup.len(), 3);
+ /// ```
+ pub fn fold<FO, R>(self, init: R, mut operation: FO) -> HashMap<K, R>
+ where R: Clone,
+ FO: FnMut(R, &K, V) -> R,
+ {
+ self.aggregate(|acc, key, val| {
+ let acc = acc.unwrap_or_else(|| init.clone());
+ Some(operation(acc, key, val))
+ })
+ }
+
+ /// Groups elements from the `GroupingMap` source by key and applies `operation` to the elements
+ /// of each group sequentially, passing the previously accumulated value, a reference to the key
+ /// and the current element as arguments, and stores the results in a new map.
+ ///
+ /// This is similar to [`fold`] but the initial value of the accumulator is the first element of the group.
+ ///
+ /// `operation` is a function that is invoked on each element with the following parameters:
+ /// - the current value of the accumulator of the group;
+ /// - a reference to the key of the group this element belongs to;
+ /// - the element from the source being accumulated.
+ ///
+ /// Return a `HashMap` associating the key of each group with the result of folding that group's elements.
+ ///
+ /// [`fold`]: GroupingMap::fold
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let lookup = (1..=7)
+ /// .into_grouping_map_by(|&n| n % 3)
+ /// .fold_first(|acc, _key, val| acc + val);
+ ///
+ /// assert_eq!(lookup[&0], 3 + 6);
+ /// assert_eq!(lookup[&1], 1 + 4 + 7);
+ /// assert_eq!(lookup[&2], 2 + 5);
+ /// assert_eq!(lookup.len(), 3);
+ /// ```
+ pub fn fold_first<FO>(self, mut operation: FO) -> HashMap<K, V>
+ where FO: FnMut(V, &K, V) -> V,
+ {
+ self.aggregate(|acc, key, val| {
+ Some(match acc {
+ Some(acc) => operation(acc, key, val),
+ None => val,
+ })
+ })
+ }
+
+ /// Groups elements from the `GroupingMap` source by key and collects the elements of each group in
+ /// an instance of `C`. The iteration order is preserved when inserting elements.
+ ///
+ /// Return a `HashMap` associating the key of each group with the collection containing that group's elements.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ /// use std::collections::HashSet;
+ ///
+ /// let lookup = vec![0, 1, 2, 3, 4, 5, 6, 2, 3, 6].into_iter()
+ /// .into_grouping_map_by(|&n| n % 3)
+ /// .collect::<HashSet<_>>();
+ ///
+ /// assert_eq!(lookup[&0], vec![0, 3, 6].into_iter().collect::<HashSet<_>>());
+ /// assert_eq!(lookup[&1], vec![1, 4].into_iter().collect::<HashSet<_>>());
+ /// assert_eq!(lookup[&2], vec![2, 5].into_iter().collect::<HashSet<_>>());
+ /// assert_eq!(lookup.len(), 3);
+ /// ```
+ pub fn collect<C>(self) -> HashMap<K, C>
+ where C: Default + Extend<V>,
+ {
+ let mut destination_map = HashMap::new();
+
+ self.iter.for_each(|(key, val)| {
+ destination_map.entry(key).or_insert_with(C::default).extend(Some(val));
+ });
+
+ destination_map
+ }
+
+ /// Groups elements from the `GroupingMap` source by key and finds the maximum of each group.
+ ///
+ /// If several elements are equally maximum, the last element is picked.
+ ///
+ /// Returns a `HashMap` associating the key of each group with the maximum of that group's elements.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let lookup = vec![1, 3, 4, 5, 7, 8, 9, 12].into_iter()
+ /// .into_grouping_map_by(|&n| n % 3)
+ /// .max();
+ ///
+ /// assert_eq!(lookup[&0], 12);
+ /// assert_eq!(lookup[&1], 7);
+ /// assert_eq!(lookup[&2], 8);
+ /// assert_eq!(lookup.len(), 3);
+ /// ```
+ pub fn max(self) -> HashMap<K, V>
+ where V: Ord,
+ {
+ self.max_by(|_, v1, v2| V::cmp(v1, v2))
+ }
+
+ /// Groups elements from the `GroupingMap` source by key and finds the maximum of each group
+ /// with respect to the specified comparison function.
+ ///
+ /// If several elements are equally maximum, the last element is picked.
+ ///
+ /// Returns a `HashMap` associating the key of each group with the maximum of that group's elements.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let lookup = vec![1, 3, 4, 5, 7, 8, 9, 12].into_iter()
+ /// .into_grouping_map_by(|&n| n % 3)
+ /// .max_by(|_key, x, y| y.cmp(x));
+ ///
+ /// assert_eq!(lookup[&0], 3);
+ /// assert_eq!(lookup[&1], 1);
+ /// assert_eq!(lookup[&2], 5);
+ /// assert_eq!(lookup.len(), 3);
+ /// ```
+ pub fn max_by<F>(self, mut compare: F) -> HashMap<K, V>
+ where F: FnMut(&K, &V, &V) -> Ordering,
+ {
+ self.fold_first(|acc, key, val| match compare(key, &acc, &val) {
+ Ordering::Less | Ordering::Equal => val,
+ Ordering::Greater => acc
+ })
+ }
+
+ /// Groups elements from the `GroupingMap` source by key and finds the element of each group
+ /// that gives the maximum from the specified function.
+ ///
+ /// If several elements are equally maximum, the last element is picked.
+ ///
+ /// Returns a `HashMap` associating the key of each group with the maximum of that group's elements.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let lookup = vec![1, 3, 4, 5, 7, 8, 9, 12].into_iter()
+ /// .into_grouping_map_by(|&n| n % 3)
+ /// .max_by_key(|_key, &val| val % 4);
+ ///
+ /// assert_eq!(lookup[&0], 3);
+ /// assert_eq!(lookup[&1], 7);
+ /// assert_eq!(lookup[&2], 5);
+ /// assert_eq!(lookup.len(), 3);
+ /// ```
+ pub fn max_by_key<F, CK>(self, mut f: F) -> HashMap<K, V>
+ where F: FnMut(&K, &V) -> CK,
+ CK: Ord,
+ {
+ self.max_by(|key, v1, v2| f(key, v1).cmp(&f(key, v2)))
+ }
+
+ /// Groups elements from the `GroupingMap` source by key and finds the minimum of each group.
+ ///
+ /// If several elements are equally minimum, the first element is picked.
+ ///
+ /// Returns a `HashMap` associating the key of each group with the minimum of that group's elements.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let lookup = vec![1, 3, 4, 5, 7, 8, 9, 12].into_iter()
+ /// .into_grouping_map_by(|&n| n % 3)
+ /// .min();
+ ///
+ /// assert_eq!(lookup[&0], 3);
+ /// assert_eq!(lookup[&1], 1);
+ /// assert_eq!(lookup[&2], 5);
+ /// assert_eq!(lookup.len(), 3);
+ /// ```
+ pub fn min(self) -> HashMap<K, V>
+ where V: Ord,
+ {
+ self.min_by(|_, v1, v2| V::cmp(v1, v2))
+ }
+
+ /// Groups elements from the `GroupingMap` source by key and finds the minimum of each group
+ /// with respect to the specified comparison function.
+ ///
+ /// If several elements are equally minimum, the first element is picked.
+ ///
+ /// Returns a `HashMap` associating the key of each group with the minimum of that group's elements.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let lookup = vec![1, 3, 4, 5, 7, 8, 9, 12].into_iter()
+ /// .into_grouping_map_by(|&n| n % 3)
+ /// .min_by(|_key, x, y| y.cmp(x));
+ ///
+ /// assert_eq!(lookup[&0], 12);
+ /// assert_eq!(lookup[&1], 7);
+ /// assert_eq!(lookup[&2], 8);
+ /// assert_eq!(lookup.len(), 3);
+ /// ```
+ pub fn min_by<F>(self, mut compare: F) -> HashMap<K, V>
+ where F: FnMut(&K, &V, &V) -> Ordering,
+ {
+ self.fold_first(|acc, key, val| match compare(key, &acc, &val) {
+ Ordering::Less | Ordering::Equal => acc,
+ Ordering::Greater => val
+ })
+ }
+
+ /// Groups elements from the `GroupingMap` source by key and finds the element of each group
+ /// that gives the minimum from the specified function.
+ ///
+ /// If several elements are equally minimum, the first element is picked.
+ ///
+ /// Returns a `HashMap` associating the key of each group with the minimum of that group's elements.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let lookup = vec![1, 3, 4, 5, 7, 8, 9, 12].into_iter()
+ /// .into_grouping_map_by(|&n| n % 3)
+ /// .min_by_key(|_key, &val| val % 4);
+ ///
+ /// assert_eq!(lookup[&0], 12);
+ /// assert_eq!(lookup[&1], 4);
+ /// assert_eq!(lookup[&2], 8);
+ /// assert_eq!(lookup.len(), 3);
+ /// ```
+ pub fn min_by_key<F, CK>(self, mut f: F) -> HashMap<K, V>
+ where F: FnMut(&K, &V) -> CK,
+ CK: Ord,
+ {
+ self.min_by(|key, v1, v2| f(key, v1).cmp(&f(key, v2)))
+ }
+
+ /// Groups elements from the `GroupingMap` source by key and find the maximum and minimum of
+ /// each group.
+ ///
+ /// If several elements are equally maximum, the last element is picked.
+ /// If several elements are equally minimum, the first element is picked.
+ ///
+ /// See [.minmax()](crate::Itertools::minmax) for the non-grouping version.
+ ///
+ /// Differences from the non grouping version:
+ /// - It never produces a `MinMaxResult::NoElements`
+ /// - It doesn't have any speedup
+ ///
+ /// Returns a `HashMap` associating the key of each group with the minimum and maximum of that group's elements.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ /// use itertools::MinMaxResult::{OneElement, MinMax};
+ ///
+ /// let lookup = vec![1, 3, 4, 5, 7, 9, 12].into_iter()
+ /// .into_grouping_map_by(|&n| n % 3)
+ /// .minmax();
+ ///
+ /// assert_eq!(lookup[&0], MinMax(3, 12));
+ /// assert_eq!(lookup[&1], MinMax(1, 7));
+ /// assert_eq!(lookup[&2], OneElement(5));
+ /// assert_eq!(lookup.len(), 3);
+ /// ```
+ pub fn minmax(self) -> HashMap<K, MinMaxResult<V>>
+ where V: Ord,
+ {
+ self.minmax_by(|_, v1, v2| V::cmp(v1, v2))
+ }
+
+ /// Groups elements from the `GroupingMap` source by key and find the maximum and minimum of
+ /// each group with respect to the specified comparison function.
+ ///
+ /// If several elements are equally maximum, the last element is picked.
+ /// If several elements are equally minimum, the first element is picked.
+ ///
+ /// It has the same differences from the non-grouping version as `minmax`.
+ ///
+ /// Returns a `HashMap` associating the key of each group with the minimum and maximum of that group's elements.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ /// use itertools::MinMaxResult::{OneElement, MinMax};
+ ///
+ /// let lookup = vec![1, 3, 4, 5, 7, 9, 12].into_iter()
+ /// .into_grouping_map_by(|&n| n % 3)
+ /// .minmax_by(|_key, x, y| y.cmp(x));
+ ///
+ /// assert_eq!(lookup[&0], MinMax(12, 3));
+ /// assert_eq!(lookup[&1], MinMax(7, 1));
+ /// assert_eq!(lookup[&2], OneElement(5));
+ /// assert_eq!(lookup.len(), 3);
+ /// ```
+ pub fn minmax_by<F>(self, mut compare: F) -> HashMap<K, MinMaxResult<V>>
+ where F: FnMut(&K, &V, &V) -> Ordering,
+ {
+ self.aggregate(|acc, key, val| {
+ Some(match acc {
+ Some(MinMaxResult::OneElement(e)) => {
+ if compare(key, &val, &e) == Ordering::Less {
+ MinMaxResult::MinMax(val, e)
+ } else {
+ MinMaxResult::MinMax(e, val)
+ }
+ }
+ Some(MinMaxResult::MinMax(min, max)) => {
+ if compare(key, &val, &min) == Ordering::Less {
+ MinMaxResult::MinMax(val, max)
+ } else if compare(key, &val, &max) != Ordering::Less {
+ MinMaxResult::MinMax(min, val)
+ } else {
+ MinMaxResult::MinMax(min, max)
+ }
+ }
+ None => MinMaxResult::OneElement(val),
+ Some(MinMaxResult::NoElements) => unreachable!(),
+ })
+ })
+ }
+
+ /// Groups elements from the `GroupingMap` source by key and find the elements of each group
+ /// that gives the minimum and maximum from the specified function.
+ ///
+ /// If several elements are equally maximum, the last element is picked.
+ /// If several elements are equally minimum, the first element is picked.
+ ///
+ /// It has the same differences from the non-grouping version as `minmax`.
+ ///
+ /// Returns a `HashMap` associating the key of each group with the minimum and maximum of that group's elements.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ /// use itertools::MinMaxResult::{OneElement, MinMax};
+ ///
+ /// let lookup = vec![1, 3, 4, 5, 7, 9, 12].into_iter()
+ /// .into_grouping_map_by(|&n| n % 3)
+ /// .minmax_by_key(|_key, &val| val % 4);
+ ///
+ /// assert_eq!(lookup[&0], MinMax(12, 3));
+ /// assert_eq!(lookup[&1], MinMax(4, 7));
+ /// assert_eq!(lookup[&2], OneElement(5));
+ /// assert_eq!(lookup.len(), 3);
+ /// ```
+ pub fn minmax_by_key<F, CK>(self, mut f: F) -> HashMap<K, MinMaxResult<V>>
+ where F: FnMut(&K, &V) -> CK,
+ CK: Ord,
+ {
+ self.minmax_by(|key, v1, v2| f(key, v1).cmp(&f(key, v2)))
+ }
+
+ /// Groups elements from the `GroupingMap` source by key and sums them.
+ ///
+ /// This is just a shorthand for `self.fold_first(|acc, _, val| acc + val)`.
+ /// It is more limited than `Iterator::sum` since it doesn't use the `Sum` trait.
+ ///
+ /// Returns a `HashMap` associating the key of each group with the sum of that group's elements.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let lookup = vec![1, 3, 4, 5, 7, 8, 9, 12].into_iter()
+ /// .into_grouping_map_by(|&n| n % 3)
+ /// .sum();
+ ///
+ /// assert_eq!(lookup[&0], 3 + 9 + 12);
+ /// assert_eq!(lookup[&1], 1 + 4 + 7);
+ /// assert_eq!(lookup[&2], 5 + 8);
+ /// assert_eq!(lookup.len(), 3);
+ /// ```
+ pub fn sum(self) -> HashMap<K, V>
+ where V: Add<V, Output = V>
+ {
+ self.fold_first(|acc, _, val| acc + val)
+ }
+
+ /// Groups elements from the `GroupingMap` source by key and multiply them.
+ ///
+ /// This is just a shorthand for `self.fold_first(|acc, _, val| acc * val)`.
+ /// It is more limited than `Iterator::product` since it doesn't use the `Product` trait.
+ ///
+ /// Returns a `HashMap` associating the key of each group with the product of that group's elements.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let lookup = vec![1, 3, 4, 5, 7, 8, 9, 12].into_iter()
+ /// .into_grouping_map_by(|&n| n % 3)
+ /// .product();
+ ///
+ /// assert_eq!(lookup[&0], 3 * 9 * 12);
+ /// assert_eq!(lookup[&1], 1 * 4 * 7);
+ /// assert_eq!(lookup[&2], 5 * 8);
+ /// assert_eq!(lookup.len(), 3);
+ /// ```
+ pub fn product(self) -> HashMap<K, V>
+ where V: Mul<V, Output = V>,
+ {
+ self.fold_first(|acc, _, val| acc * val)
+ }
+}
diff --git a/vendor/itertools-0.10.5/src/impl_macros.rs b/vendor/itertools-0.10.5/src/impl_macros.rs
new file mode 100644
index 000000000..a029843b0
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/impl_macros.rs
@@ -0,0 +1,29 @@
+//!
+//! Implementation's internal macros
+
+macro_rules! debug_fmt_fields {
+ ($tyname:ident, $($($field:tt/*TODO ideally we would accept ident or tuple element here*/).+),*) => {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ f.debug_struct(stringify!($tyname))
+ $(
+ .field(stringify!($($field).+), &self.$($field).+)
+ )*
+ .finish()
+ }
+ }
+}
+
+macro_rules! clone_fields {
+ ($($field:ident),*) => {
+ #[inline] // TODO is this sensible?
+ fn clone(&self) -> Self {
+ Self {
+ $($field: self.$field.clone(),)*
+ }
+ }
+ }
+}
+
+macro_rules! ignore_ident{
+ ($id:ident, $($t:tt)*) => {$($t)*};
+}
diff --git a/vendor/itertools-0.10.5/src/intersperse.rs b/vendor/itertools-0.10.5/src/intersperse.rs
new file mode 100644
index 000000000..10a3a5389
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/intersperse.rs
@@ -0,0 +1,118 @@
+use std::iter::{Fuse, FusedIterator};
+use super::size_hint;
+
+pub trait IntersperseElement<Item> {
+ fn generate(&mut self) -> Item;
+}
+
+#[derive(Debug, Clone)]
+pub struct IntersperseElementSimple<Item>(Item);
+
+impl<Item: Clone> IntersperseElement<Item> for IntersperseElementSimple<Item> {
+ fn generate(&mut self) -> Item {
+ self.0.clone()
+ }
+}
+
+/// An iterator adaptor to insert a particular value
+/// between each element of the adapted iterator.
+///
+/// Iterator element type is `I::Item`
+///
+/// This iterator is *fused*.
+///
+/// See [`.intersperse()`](crate::Itertools::intersperse) for more information.
+pub type Intersperse<I> = IntersperseWith<I, IntersperseElementSimple<<I as Iterator>::Item>>;
+
+/// Create a new Intersperse iterator
+pub fn intersperse<I>(iter: I, elt: I::Item) -> Intersperse<I>
+ where I: Iterator,
+{
+ intersperse_with(iter, IntersperseElementSimple(elt))
+}
+
+impl<Item, F: FnMut()->Item> IntersperseElement<Item> for F {
+ fn generate(&mut self) -> Item {
+ self()
+ }
+}
+
+/// An iterator adaptor to insert a particular value created by a function
+/// between each element of the adapted iterator.
+///
+/// Iterator element type is `I::Item`
+///
+/// This iterator is *fused*.
+///
+/// See [`.intersperse_with()`](crate::Itertools::intersperse_with) for more information.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+#[derive(Clone, Debug)]
+pub struct IntersperseWith<I, ElemF>
+ where I: Iterator,
+{
+ element: ElemF,
+ iter: Fuse<I>,
+ peek: Option<I::Item>,
+}
+
+/// Create a new `IntersperseWith` iterator
+pub fn intersperse_with<I, ElemF>(iter: I, elt: ElemF) -> IntersperseWith<I, ElemF>
+ where I: Iterator,
+{
+ let mut iter = iter.fuse();
+ IntersperseWith {
+ peek: iter.next(),
+ iter,
+ element: elt,
+ }
+}
+
+impl<I, ElemF> Iterator for IntersperseWith<I, ElemF>
+ where I: Iterator,
+ ElemF: IntersperseElement<I::Item>
+{
+ type Item = I::Item;
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ if self.peek.is_some() {
+ self.peek.take()
+ } else {
+ self.peek = self.iter.next();
+ if self.peek.is_some() {
+ Some(self.element.generate())
+ } else {
+ None
+ }
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ // 2 * SH + { 1 or 0 }
+ let has_peek = self.peek.is_some() as usize;
+ let sh = self.iter.size_hint();
+ size_hint::add_scalar(size_hint::add(sh, sh), has_peek)
+ }
+
+ fn fold<B, F>(mut self, init: B, mut f: F) -> B where
+ Self: Sized, F: FnMut(B, Self::Item) -> B,
+ {
+ let mut accum = init;
+
+ if let Some(x) = self.peek.take() {
+ accum = f(accum, x);
+ }
+
+ let element = &mut self.element;
+
+ self.iter.fold(accum,
+ |accum, x| {
+ let accum = f(accum, element.generate());
+ f(accum, x)
+ })
+ }
+}
+
+impl<I, ElemF> FusedIterator for IntersperseWith<I, ElemF>
+ where I: Iterator,
+ ElemF: IntersperseElement<I::Item>
+{}
diff --git a/vendor/itertools-0.10.5/src/k_smallest.rs b/vendor/itertools-0.10.5/src/k_smallest.rs
new file mode 100644
index 000000000..acaea5941
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/k_smallest.rs
@@ -0,0 +1,20 @@
+use alloc::collections::BinaryHeap;
+use core::cmp::Ord;
+
+pub(crate) fn k_smallest<T: Ord, I: Iterator<Item = T>>(mut iter: I, k: usize) -> BinaryHeap<T> {
+ if k == 0 { return BinaryHeap::new(); }
+
+ let mut heap = iter.by_ref().take(k).collect::<BinaryHeap<_>>();
+
+ iter.for_each(|i| {
+ debug_assert_eq!(heap.len(), k);
+ // Equivalent to heap.push(min(i, heap.pop())) but more efficient.
+ // This should be done with a single `.peek_mut().unwrap()` but
+ // `PeekMut` sifts-down unconditionally on Rust 1.46.0 and prior.
+ if *heap.peek().unwrap() > i {
+ *heap.peek_mut().unwrap() = i;
+ }
+ });
+
+ heap
+}
diff --git a/vendor/itertools-0.10.5/src/kmerge_impl.rs b/vendor/itertools-0.10.5/src/kmerge_impl.rs
new file mode 100644
index 000000000..509d5fc6a
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/kmerge_impl.rs
@@ -0,0 +1,227 @@
+use crate::size_hint;
+use crate::Itertools;
+
+use alloc::vec::Vec;
+use std::iter::FusedIterator;
+use std::mem::replace;
+use std::fmt;
+
+/// Head element and Tail iterator pair
+///
+/// `PartialEq`, `Eq`, `PartialOrd` and `Ord` are implemented by comparing sequences based on
+/// first items (which are guaranteed to exist).
+///
+/// The meanings of `PartialOrd` and `Ord` are reversed so as to turn the heap used in
+/// `KMerge` into a min-heap.
+#[derive(Debug)]
+struct HeadTail<I>
+ where I: Iterator
+{
+ head: I::Item,
+ tail: I,
+}
+
+impl<I> HeadTail<I>
+ where I: Iterator
+{
+ /// Constructs a `HeadTail` from an `Iterator`. Returns `None` if the `Iterator` is empty.
+ fn new(mut it: I) -> Option<HeadTail<I>> {
+ let head = it.next();
+ head.map(|h| {
+ HeadTail {
+ head: h,
+ tail: it,
+ }
+ })
+ }
+
+ /// Get the next element and update `head`, returning the old head in `Some`.
+ ///
+ /// Returns `None` when the tail is exhausted (only `head` then remains).
+ fn next(&mut self) -> Option<I::Item> {
+ if let Some(next) = self.tail.next() {
+ Some(replace(&mut self.head, next))
+ } else {
+ None
+ }
+ }
+
+ /// Hints at the size of the sequence, same as the `Iterator` method.
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ size_hint::add_scalar(self.tail.size_hint(), 1)
+ }
+}
+
+impl<I> Clone for HeadTail<I>
+ where I: Iterator + Clone,
+ I::Item: Clone
+{
+ clone_fields!(head, tail);
+}
+
+/// Make `data` a heap (min-heap w.r.t the sorting).
+fn heapify<T, S>(data: &mut [T], mut less_than: S)
+ where S: FnMut(&T, &T) -> bool
+{
+ for i in (0..data.len() / 2).rev() {
+ sift_down(data, i, &mut less_than);
+ }
+}
+
+/// Sift down element at `index` (`heap` is a min-heap wrt the ordering)
+fn sift_down<T, S>(heap: &mut [T], index: usize, mut less_than: S)
+ where S: FnMut(&T, &T) -> bool
+{
+ debug_assert!(index <= heap.len());
+ let mut pos = index;
+ let mut child = 2 * pos + 1;
+ // Require the right child to be present
+ // This allows to find the index of the smallest child without a branch
+ // that wouldn't be predicted if present
+ while child + 1 < heap.len() {
+ // pick the smaller of the two children
+ // use arithmetic to avoid an unpredictable branch
+ child += less_than(&heap[child+1], &heap[child]) as usize;
+
+ // sift down is done if we are already in order
+ if !less_than(&heap[child], &heap[pos]) {
+ return;
+ }
+ heap.swap(pos, child);
+ pos = child;
+ child = 2 * pos + 1;
+ }
+ // Check if the last (left) child was an only child
+ // if it is then it has to be compared with the parent
+ if child + 1 == heap.len() && less_than(&heap[child], &heap[pos]) {
+ heap.swap(pos, child);
+ }
+}
+
+/// An iterator adaptor that merges an abitrary number of base iterators in ascending order.
+/// If all base iterators are sorted (ascending), the result is sorted.
+///
+/// Iterator element type is `I::Item`.
+///
+/// See [`.kmerge()`](crate::Itertools::kmerge) for more information.
+pub type KMerge<I> = KMergeBy<I, KMergeByLt>;
+
+pub trait KMergePredicate<T> {
+ fn kmerge_pred(&mut self, a: &T, b: &T) -> bool;
+}
+
+#[derive(Clone, Debug)]
+pub struct KMergeByLt;
+
+impl<T: PartialOrd> KMergePredicate<T> for KMergeByLt {
+ fn kmerge_pred(&mut self, a: &T, b: &T) -> bool {
+ a < b
+ }
+}
+
+impl<T, F: FnMut(&T, &T)->bool> KMergePredicate<T> for F {
+ fn kmerge_pred(&mut self, a: &T, b: &T) -> bool {
+ self(a, b)
+ }
+}
+
+/// Create an iterator that merges elements of the contained iterators using
+/// the ordering function.
+///
+/// [`IntoIterator`] enabled version of [`Itertools::kmerge`].
+///
+/// ```
+/// use itertools::kmerge;
+///
+/// for elt in kmerge(vec![vec![0, 2, 4], vec![1, 3, 5], vec![6, 7]]) {
+/// /* loop body */
+/// }
+/// ```
+pub fn kmerge<I>(iterable: I) -> KMerge<<I::Item as IntoIterator>::IntoIter>
+ where I: IntoIterator,
+ I::Item: IntoIterator,
+ <<I as IntoIterator>::Item as IntoIterator>::Item: PartialOrd
+{
+ kmerge_by(iterable, KMergeByLt)
+}
+
+/// An iterator adaptor that merges an abitrary number of base iterators
+/// according to an ordering function.
+///
+/// Iterator element type is `I::Item`.
+///
+/// See [`.kmerge_by()`](crate::Itertools::kmerge_by) for more
+/// information.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct KMergeBy<I, F>
+ where I: Iterator,
+{
+ heap: Vec<HeadTail<I>>,
+ less_than: F,
+}
+
+impl<I, F> fmt::Debug for KMergeBy<I, F>
+ where I: Iterator + fmt::Debug,
+ I::Item: fmt::Debug,
+{
+ debug_fmt_fields!(KMergeBy, heap);
+}
+
+/// Create an iterator that merges elements of the contained iterators.
+///
+/// [`IntoIterator`] enabled version of [`Itertools::kmerge_by`].
+pub fn kmerge_by<I, F>(iterable: I, mut less_than: F)
+ -> KMergeBy<<I::Item as IntoIterator>::IntoIter, F>
+ where I: IntoIterator,
+ I::Item: IntoIterator,
+ F: KMergePredicate<<<I as IntoIterator>::Item as IntoIterator>::Item>,
+{
+ let iter = iterable.into_iter();
+ let (lower, _) = iter.size_hint();
+ let mut heap: Vec<_> = Vec::with_capacity(lower);
+ heap.extend(iter.filter_map(|it| HeadTail::new(it.into_iter())));
+ heapify(&mut heap, |a, b| less_than.kmerge_pred(&a.head, &b.head));
+ KMergeBy { heap, less_than }
+}
+
+impl<I, F> Clone for KMergeBy<I, F>
+ where I: Iterator + Clone,
+ I::Item: Clone,
+ F: Clone,
+{
+ clone_fields!(heap, less_than);
+}
+
+impl<I, F> Iterator for KMergeBy<I, F>
+ where I: Iterator,
+ F: KMergePredicate<I::Item>
+{
+ type Item = I::Item;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if self.heap.is_empty() {
+ return None;
+ }
+ let result = if let Some(next) = self.heap[0].next() {
+ next
+ } else {
+ self.heap.swap_remove(0).head
+ };
+ let less_than = &mut self.less_than;
+ sift_down(&mut self.heap, 0, |a, b| less_than.kmerge_pred(&a.head, &b.head));
+ Some(result)
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ #[allow(deprecated)] //TODO: once msrv hits 1.51. replace `fold1` with `reduce`
+ self.heap.iter()
+ .map(|i| i.size_hint())
+ .fold1(size_hint::add)
+ .unwrap_or((0, Some(0)))
+ }
+}
+
+impl<I, F> FusedIterator for KMergeBy<I, F>
+ where I: Iterator,
+ F: KMergePredicate<I::Item>
+{}
diff --git a/vendor/itertools-0.10.5/src/lazy_buffer.rs b/vendor/itertools-0.10.5/src/lazy_buffer.rs
new file mode 100644
index 000000000..ca24062aa
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/lazy_buffer.rs
@@ -0,0 +1,63 @@
+use std::ops::Index;
+use alloc::vec::Vec;
+
+#[derive(Debug, Clone)]
+pub struct LazyBuffer<I: Iterator> {
+ pub it: I,
+ done: bool,
+ buffer: Vec<I::Item>,
+}
+
+impl<I> LazyBuffer<I>
+where
+ I: Iterator,
+{
+ pub fn new(it: I) -> LazyBuffer<I> {
+ LazyBuffer {
+ it,
+ done: false,
+ buffer: Vec::new(),
+ }
+ }
+
+ pub fn len(&self) -> usize {
+ self.buffer.len()
+ }
+
+ pub fn get_next(&mut self) -> bool {
+ if self.done {
+ return false;
+ }
+ if let Some(x) = self.it.next() {
+ self.buffer.push(x);
+ true
+ } else {
+ self.done = true;
+ false
+ }
+ }
+
+ pub fn prefill(&mut self, len: usize) {
+ let buffer_len = self.buffer.len();
+
+ if !self.done && len > buffer_len {
+ let delta = len - buffer_len;
+
+ self.buffer.extend(self.it.by_ref().take(delta));
+ self.done = self.buffer.len() < len;
+ }
+ }
+}
+
+impl<I, J> Index<J> for LazyBuffer<I>
+where
+ I: Iterator,
+ I::Item: Sized,
+ Vec<I::Item>: Index<J>
+{
+ type Output = <Vec<I::Item> as Index<J>>::Output;
+
+ fn index(&self, index: J) -> &Self::Output {
+ self.buffer.index(index)
+ }
+}
diff --git a/vendor/itertools-0.10.5/src/lib.rs b/vendor/itertools-0.10.5/src/lib.rs
new file mode 100644
index 000000000..f91968870
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/lib.rs
@@ -0,0 +1,3784 @@
+#![warn(missing_docs)]
+#![crate_name="itertools"]
+#![cfg_attr(not(feature = "use_std"), no_std)]
+
+//! Extra iterator adaptors, functions and macros.
+//!
+//! To extend [`Iterator`] with methods in this crate, import
+//! the [`Itertools`] trait:
+//!
+//! ```
+//! use itertools::Itertools;
+//! ```
+//!
+//! Now, new methods like [`interleave`](Itertools::interleave)
+//! are available on all iterators:
+//!
+//! ```
+//! use itertools::Itertools;
+//!
+//! let it = (1..3).interleave(vec![-1, -2]);
+//! itertools::assert_equal(it, vec![1, -1, 2, -2]);
+//! ```
+//!
+//! Most iterator methods are also provided as functions (with the benefit
+//! that they convert parameters using [`IntoIterator`]):
+//!
+//! ```
+//! use itertools::interleave;
+//!
+//! for elt in interleave(&[1, 2, 3], &[2, 3, 4]) {
+//! /* loop body */
+//! }
+//! ```
+//!
+//! ## Crate Features
+//!
+//! - `use_std`
+//! - Enabled by default.
+//! - Disable to compile itertools using `#![no_std]`. This disables
+//! any items that depend on collections (like `group_by`, `unique`,
+//! `kmerge`, `join` and many more).
+//!
+//! ## Rust Version
+//!
+//! This version of itertools requires Rust 1.32 or later.
+#![doc(html_root_url="https://docs.rs/itertools/0.8/")]
+
+#[cfg(not(feature = "use_std"))]
+extern crate core as std;
+
+#[cfg(feature = "use_alloc")]
+extern crate alloc;
+
+#[cfg(feature = "use_alloc")]
+use alloc::{
+ string::String,
+ vec::Vec,
+};
+
+pub use either::Either;
+
+use core::borrow::Borrow;
+#[cfg(feature = "use_std")]
+use std::collections::HashMap;
+use std::iter::{IntoIterator, once};
+use std::cmp::Ordering;
+use std::fmt;
+#[cfg(feature = "use_std")]
+use std::collections::HashSet;
+#[cfg(feature = "use_std")]
+use std::hash::Hash;
+#[cfg(feature = "use_alloc")]
+use std::fmt::Write;
+#[cfg(feature = "use_alloc")]
+type VecIntoIter<T> = alloc::vec::IntoIter<T>;
+#[cfg(feature = "use_alloc")]
+use std::iter::FromIterator;
+
+#[macro_use]
+mod impl_macros;
+
+// for compatibility with no std and macros
+#[doc(hidden)]
+pub use std::iter as __std_iter;
+
+/// The concrete iterator types.
+pub mod structs {
+ pub use crate::adaptors::{
+ Dedup,
+ DedupBy,
+ DedupWithCount,
+ DedupByWithCount,
+ Interleave,
+ InterleaveShortest,
+ FilterMapOk,
+ FilterOk,
+ Product,
+ PutBack,
+ Batching,
+ MapInto,
+ MapOk,
+ Merge,
+ MergeBy,
+ TakeWhileRef,
+ WhileSome,
+ Coalesce,
+ TupleCombinations,
+ Positions,
+ Update,
+ };
+ #[allow(deprecated)]
+ pub use crate::adaptors::{MapResults, Step};
+ #[cfg(feature = "use_alloc")]
+ pub use crate::adaptors::MultiProduct;
+ #[cfg(feature = "use_alloc")]
+ pub use crate::combinations::Combinations;
+ #[cfg(feature = "use_alloc")]
+ pub use crate::combinations_with_replacement::CombinationsWithReplacement;
+ pub use crate::cons_tuples_impl::ConsTuples;
+ pub use crate::exactly_one_err::ExactlyOneError;
+ pub use crate::format::{Format, FormatWith};
+ pub use crate::flatten_ok::FlattenOk;
+ #[cfg(feature = "use_std")]
+ pub use crate::grouping_map::{GroupingMap, GroupingMapBy};
+ #[cfg(feature = "use_alloc")]
+ pub use crate::groupbylazy::{IntoChunks, Chunk, Chunks, GroupBy, Group, Groups};
+ pub use crate::intersperse::{Intersperse, IntersperseWith};
+ #[cfg(feature = "use_alloc")]
+ pub use crate::kmerge_impl::{KMerge, KMergeBy};
+ pub use crate::merge_join::MergeJoinBy;
+ #[cfg(feature = "use_alloc")]
+ pub use crate::multipeek_impl::MultiPeek;
+ #[cfg(feature = "use_alloc")]
+ pub use crate::peek_nth::PeekNth;
+ pub use crate::pad_tail::PadUsing;
+ pub use crate::peeking_take_while::PeekingTakeWhile;
+ #[cfg(feature = "use_alloc")]
+ pub use crate::permutations::Permutations;
+ pub use crate::process_results_impl::ProcessResults;
+ #[cfg(feature = "use_alloc")]
+ pub use crate::powerset::Powerset;
+ #[cfg(feature = "use_alloc")]
+ pub use crate::put_back_n_impl::PutBackN;
+ #[cfg(feature = "use_alloc")]
+ pub use crate::rciter_impl::RcIter;
+ pub use crate::repeatn::RepeatN;
+ #[allow(deprecated)]
+ pub use crate::sources::{RepeatCall, Unfold, Iterate};
+ #[cfg(feature = "use_alloc")]
+ pub use crate::tee::Tee;
+ pub use crate::tuple_impl::{TupleBuffer, TupleWindows, CircularTupleWindows, Tuples};
+ #[cfg(feature = "use_std")]
+ pub use crate::duplicates_impl::{Duplicates, DuplicatesBy};
+ #[cfg(feature = "use_std")]
+ pub use crate::unique_impl::{Unique, UniqueBy};
+ pub use crate::with_position::WithPosition;
+ pub use crate::zip_eq_impl::ZipEq;
+ pub use crate::zip_longest::ZipLongest;
+ pub use crate::ziptuple::Zip;
+}
+
+/// Traits helpful for using certain `Itertools` methods in generic contexts.
+pub mod traits {
+ pub use crate::tuple_impl::HomogeneousTuple;
+}
+
+#[allow(deprecated)]
+pub use crate::structs::*;
+pub use crate::concat_impl::concat;
+pub use crate::cons_tuples_impl::cons_tuples;
+pub use crate::diff::diff_with;
+pub use crate::diff::Diff;
+#[cfg(feature = "use_alloc")]
+pub use crate::kmerge_impl::{kmerge_by};
+pub use crate::minmax::MinMaxResult;
+pub use crate::peeking_take_while::PeekingNext;
+pub use crate::process_results_impl::process_results;
+pub use crate::repeatn::repeat_n;
+#[allow(deprecated)]
+pub use crate::sources::{repeat_call, unfold, iterate};
+pub use crate::with_position::Position;
+pub use crate::unziptuple::{multiunzip, MultiUnzip};
+pub use crate::ziptuple::multizip;
+mod adaptors;
+mod either_or_both;
+pub use crate::either_or_both::EitherOrBoth;
+#[doc(hidden)]
+pub mod free;
+#[doc(inline)]
+pub use crate::free::*;
+mod concat_impl;
+mod cons_tuples_impl;
+#[cfg(feature = "use_alloc")]
+mod combinations;
+#[cfg(feature = "use_alloc")]
+mod combinations_with_replacement;
+mod exactly_one_err;
+mod diff;
+mod flatten_ok;
+#[cfg(feature = "use_std")]
+mod extrema_set;
+mod format;
+#[cfg(feature = "use_std")]
+mod grouping_map;
+#[cfg(feature = "use_alloc")]
+mod group_map;
+#[cfg(feature = "use_alloc")]
+mod groupbylazy;
+mod intersperse;
+#[cfg(feature = "use_alloc")]
+mod k_smallest;
+#[cfg(feature = "use_alloc")]
+mod kmerge_impl;
+#[cfg(feature = "use_alloc")]
+mod lazy_buffer;
+mod merge_join;
+mod minmax;
+#[cfg(feature = "use_alloc")]
+mod multipeek_impl;
+mod pad_tail;
+#[cfg(feature = "use_alloc")]
+mod peek_nth;
+mod peeking_take_while;
+#[cfg(feature = "use_alloc")]
+mod permutations;
+#[cfg(feature = "use_alloc")]
+mod powerset;
+mod process_results_impl;
+#[cfg(feature = "use_alloc")]
+mod put_back_n_impl;
+#[cfg(feature = "use_alloc")]
+mod rciter_impl;
+mod repeatn;
+mod size_hint;
+mod sources;
+#[cfg(feature = "use_alloc")]
+mod tee;
+mod tuple_impl;
+#[cfg(feature = "use_std")]
+mod duplicates_impl;
+#[cfg(feature = "use_std")]
+mod unique_impl;
+mod unziptuple;
+mod with_position;
+mod zip_eq_impl;
+mod zip_longest;
+mod ziptuple;
+
+#[macro_export]
+/// Create an iterator over the “cartesian product†of iterators.
+///
+/// Iterator element type is like `(A, B, ..., E)` if formed
+/// from iterators `(I, J, ..., M)` with element types `I::Item = A`, `J::Item = B`, etc.
+///
+/// ```
+/// # use itertools::iproduct;
+/// #
+/// # fn main() {
+/// // Iterate over the coordinates of a 4 x 4 x 4 grid
+/// // from (0, 0, 0), (0, 0, 1), .., (0, 1, 0), (0, 1, 1), .. etc until (3, 3, 3)
+/// for (i, j, k) in iproduct!(0..4, 0..4, 0..4) {
+/// // ..
+/// }
+/// # }
+/// ```
+macro_rules! iproduct {
+ (@flatten $I:expr,) => (
+ $I
+ );
+ (@flatten $I:expr, $J:expr, $($K:expr,)*) => (
+ $crate::iproduct!(@flatten $crate::cons_tuples($crate::iproduct!($I, $J)), $($K,)*)
+ );
+ ($I:expr) => (
+ $crate::__std_iter::IntoIterator::into_iter($I)
+ );
+ ($I:expr, $J:expr) => (
+ $crate::Itertools::cartesian_product($crate::iproduct!($I), $crate::iproduct!($J))
+ );
+ ($I:expr, $J:expr, $($K:expr),+) => (
+ $crate::iproduct!(@flatten $crate::iproduct!($I, $J), $($K,)+)
+ );
+}
+
+#[macro_export]
+/// Create an iterator running multiple iterators in lockstep.
+///
+/// The `izip!` iterator yields elements until any subiterator
+/// returns `None`.
+///
+/// This is a version of the standard ``.zip()`` that's supporting more than
+/// two iterators. The iterator element type is a tuple with one element
+/// from each of the input iterators. Just like ``.zip()``, the iteration stops
+/// when the shortest of the inputs reaches its end.
+///
+/// **Note:** The result of this macro is in the general case an iterator
+/// composed of repeated `.zip()` and a `.map()`; it has an anonymous type.
+/// The special cases of one and two arguments produce the equivalent of
+/// `$a.into_iter()` and `$a.into_iter().zip($b)` respectively.
+///
+/// Prefer this macro `izip!()` over [`multizip`] for the performance benefits
+/// of using the standard library `.zip()`.
+///
+/// ```
+/// # use itertools::izip;
+/// #
+/// # fn main() {
+///
+/// // iterate over three sequences side-by-side
+/// let mut results = [0, 0, 0, 0];
+/// let inputs = [3, 7, 9, 6];
+///
+/// for (r, index, input) in izip!(&mut results, 0..10, &inputs) {
+/// *r = index * 10 + input;
+/// }
+///
+/// assert_eq!(results, [0 + 3, 10 + 7, 29, 36]);
+/// # }
+/// ```
+macro_rules! izip {
+ // @closure creates a tuple-flattening closure for .map() call. usage:
+ // @closure partial_pattern => partial_tuple , rest , of , iterators
+ // eg. izip!( @closure ((a, b), c) => (a, b, c) , dd , ee )
+ ( @closure $p:pat => $tup:expr ) => {
+ |$p| $tup
+ };
+
+ // The "b" identifier is a different identifier on each recursion level thanks to hygiene.
+ ( @closure $p:pat => ( $($tup:tt)* ) , $_iter:expr $( , $tail:expr )* ) => {
+ $crate::izip!(@closure ($p, b) => ( $($tup)*, b ) $( , $tail )*)
+ };
+
+ // unary
+ ($first:expr $(,)*) => {
+ $crate::__std_iter::IntoIterator::into_iter($first)
+ };
+
+ // binary
+ ($first:expr, $second:expr $(,)*) => {
+ $crate::izip!($first)
+ .zip($second)
+ };
+
+ // n-ary where n > 2
+ ( $first:expr $( , $rest:expr )* $(,)* ) => {
+ $crate::izip!($first)
+ $(
+ .zip($rest)
+ )*
+ .map(
+ $crate::izip!(@closure a => (a) $( , $rest )*)
+ )
+ };
+}
+
+#[macro_export]
+/// [Chain][`chain`] zero or more iterators together into one sequence.
+///
+/// The comma-separated arguments must implement [`IntoIterator`].
+/// The final argument may be followed by a trailing comma.
+///
+/// [`chain`]: Iterator::chain
+///
+/// # Examples
+///
+/// Empty invocations of `chain!` expand to an invocation of [`std::iter::empty`]:
+/// ```
+/// use std::iter;
+/// use itertools::chain;
+///
+/// let _: iter::Empty<()> = chain!();
+/// let _: iter::Empty<i8> = chain!();
+/// ```
+///
+/// Invocations of `chain!` with one argument expand to [`arg.into_iter()`](IntoIterator):
+/// ```
+/// use std::{ops::Range, slice};
+/// use itertools::chain;
+/// let _: <Range<_> as IntoIterator>::IntoIter = chain!((2..6),); // trailing comma optional!
+/// let _: <&[_] as IntoIterator>::IntoIter = chain!(&[2, 3, 4]);
+/// ```
+///
+/// Invocations of `chain!` with multiple arguments [`.into_iter()`](IntoIterator) each
+/// argument, and then [`chain`] them together:
+/// ```
+/// use std::{iter::*, ops::Range, slice};
+/// use itertools::{assert_equal, chain};
+///
+/// // e.g., this:
+/// let with_macro: Chain<Chain<Once<_>, Take<Repeat<_>>>, slice::Iter<_>> =
+/// chain![once(&0), repeat(&1).take(2), &[2, 3, 5],];
+///
+/// // ...is equivalent to this:
+/// let with_method: Chain<Chain<Once<_>, Take<Repeat<_>>>, slice::Iter<_>> =
+/// once(&0)
+/// .chain(repeat(&1).take(2))
+/// .chain(&[2, 3, 5]);
+///
+/// assert_equal(with_macro, with_method);
+/// ```
+macro_rules! chain {
+ () => {
+ core::iter::empty()
+ };
+ ($first:expr $(, $rest:expr )* $(,)?) => {
+ {
+ let iter = core::iter::IntoIterator::into_iter($first);
+ $(
+ let iter =
+ core::iter::Iterator::chain(
+ iter,
+ core::iter::IntoIterator::into_iter($rest));
+ )*
+ iter
+ }
+ };
+}
+
+/// An [`Iterator`] blanket implementation that provides extra adaptors and
+/// methods.
+///
+/// This trait defines a number of methods. They are divided into two groups:
+///
+/// * *Adaptors* take an iterator and parameter as input, and return
+/// a new iterator value. These are listed first in the trait. An example
+/// of an adaptor is [`.interleave()`](Itertools::interleave)
+///
+/// * *Regular methods* are those that don't return iterators and instead
+/// return a regular value of some other kind.
+/// [`.next_tuple()`](Itertools::next_tuple) is an example and the first regular
+/// method in the list.
+pub trait Itertools : Iterator {
+ // adaptors
+
+ /// Alternate elements from two iterators until both have run out.
+ ///
+ /// Iterator element type is `Self::Item`.
+ ///
+ /// This iterator is *fused*.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let it = (1..7).interleave(vec![-1, -2]);
+ /// itertools::assert_equal(it, vec![1, -1, 2, -2, 3, 4, 5, 6]);
+ /// ```
+ fn interleave<J>(self, other: J) -> Interleave<Self, J::IntoIter>
+ where J: IntoIterator<Item = Self::Item>,
+ Self: Sized
+ {
+ interleave(self, other)
+ }
+
+ /// Alternate elements from two iterators until at least one of them has run
+ /// out.
+ ///
+ /// Iterator element type is `Self::Item`.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let it = (1..7).interleave_shortest(vec![-1, -2]);
+ /// itertools::assert_equal(it, vec![1, -1, 2, -2, 3]);
+ /// ```
+ fn interleave_shortest<J>(self, other: J) -> InterleaveShortest<Self, J::IntoIter>
+ where J: IntoIterator<Item = Self::Item>,
+ Self: Sized
+ {
+ adaptors::interleave_shortest(self, other.into_iter())
+ }
+
+ /// An iterator adaptor to insert a particular value
+ /// between each element of the adapted iterator.
+ ///
+ /// Iterator element type is `Self::Item`.
+ ///
+ /// This iterator is *fused*.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// itertools::assert_equal((0..3).intersperse(8), vec![0, 8, 1, 8, 2]);
+ /// ```
+ fn intersperse(self, element: Self::Item) -> Intersperse<Self>
+ where Self: Sized,
+ Self::Item: Clone
+ {
+ intersperse::intersperse(self, element)
+ }
+
+ /// An iterator adaptor to insert a particular value created by a function
+ /// between each element of the adapted iterator.
+ ///
+ /// Iterator element type is `Self::Item`.
+ ///
+ /// This iterator is *fused*.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let mut i = 10;
+ /// itertools::assert_equal((0..3).intersperse_with(|| { i -= 1; i }), vec![0, 9, 1, 8, 2]);
+ /// assert_eq!(i, 8);
+ /// ```
+ fn intersperse_with<F>(self, element: F) -> IntersperseWith<Self, F>
+ where Self: Sized,
+ F: FnMut() -> Self::Item
+ {
+ intersperse::intersperse_with(self, element)
+ }
+
+ /// Create an iterator which iterates over both this and the specified
+ /// iterator simultaneously, yielding pairs of two optional elements.
+ ///
+ /// This iterator is *fused*.
+ ///
+ /// As long as neither input iterator is exhausted yet, it yields two values
+ /// via `EitherOrBoth::Both`.
+ ///
+ /// When the parameter iterator is exhausted, it only yields a value from the
+ /// `self` iterator via `EitherOrBoth::Left`.
+ ///
+ /// When the `self` iterator is exhausted, it only yields a value from the
+ /// parameter iterator via `EitherOrBoth::Right`.
+ ///
+ /// When both iterators return `None`, all further invocations of `.next()`
+ /// will return `None`.
+ ///
+ /// Iterator element type is
+ /// [`EitherOrBoth<Self::Item, J::Item>`](EitherOrBoth).
+ ///
+ /// ```rust
+ /// use itertools::EitherOrBoth::{Both, Right};
+ /// use itertools::Itertools;
+ /// let it = (0..1).zip_longest(1..3);
+ /// itertools::assert_equal(it, vec![Both(0, 1), Right(2)]);
+ /// ```
+ #[inline]
+ fn zip_longest<J>(self, other: J) -> ZipLongest<Self, J::IntoIter>
+ where J: IntoIterator,
+ Self: Sized
+ {
+ zip_longest::zip_longest(self, other.into_iter())
+ }
+
+ /// Create an iterator which iterates over both this and the specified
+ /// iterator simultaneously, yielding pairs of elements.
+ ///
+ /// **Panics** if the iterators reach an end and they are not of equal
+ /// lengths.
+ #[inline]
+ fn zip_eq<J>(self, other: J) -> ZipEq<Self, J::IntoIter>
+ where J: IntoIterator,
+ Self: Sized
+ {
+ zip_eq(self, other)
+ }
+
+ /// A “meta iterator adaptorâ€. Its closure receives a reference to the
+ /// iterator and may pick off as many elements as it likes, to produce the
+ /// next iterator element.
+ ///
+ /// Iterator element type is `B`.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// // An adaptor that gathers elements in pairs
+ /// let pit = (0..4).batching(|it| {
+ /// match it.next() {
+ /// None => None,
+ /// Some(x) => match it.next() {
+ /// None => None,
+ /// Some(y) => Some((x, y)),
+ /// }
+ /// }
+ /// });
+ ///
+ /// itertools::assert_equal(pit, vec![(0, 1), (2, 3)]);
+ /// ```
+ ///
+ fn batching<B, F>(self, f: F) -> Batching<Self, F>
+ where F: FnMut(&mut Self) -> Option<B>,
+ Self: Sized
+ {
+ adaptors::batching(self, f)
+ }
+
+ /// Return an *iterable* that can group iterator elements.
+ /// Consecutive elements that map to the same key (“runsâ€), are assigned
+ /// to the same group.
+ ///
+ /// `GroupBy` is the storage for the lazy grouping operation.
+ ///
+ /// If the groups are consumed in order, or if each group's iterator is
+ /// dropped without keeping it around, then `GroupBy` uses no
+ /// allocations. It needs allocations only if several group iterators
+ /// are alive at the same time.
+ ///
+ /// This type implements [`IntoIterator`] (it is **not** an iterator
+ /// itself), because the group iterators need to borrow from this
+ /// value. It should be stored in a local variable or temporary and
+ /// iterated.
+ ///
+ /// Iterator element type is `(K, Group)`: the group's key and the
+ /// group iterator.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// // group data into runs of larger than zero or not.
+ /// let data = vec![1, 3, -2, -2, 1, 0, 1, 2];
+ /// // groups: |---->|------>|--------->|
+ ///
+ /// // Note: The `&` is significant here, `GroupBy` is iterable
+ /// // only by reference. You can also call `.into_iter()` explicitly.
+ /// let mut data_grouped = Vec::new();
+ /// for (key, group) in &data.into_iter().group_by(|elt| *elt >= 0) {
+ /// data_grouped.push((key, group.collect()));
+ /// }
+ /// assert_eq!(data_grouped, vec![(true, vec![1, 3]), (false, vec![-2, -2]), (true, vec![1, 0, 1, 2])]);
+ /// ```
+ #[cfg(feature = "use_alloc")]
+ fn group_by<K, F>(self, key: F) -> GroupBy<K, Self, F>
+ where Self: Sized,
+ F: FnMut(&Self::Item) -> K,
+ K: PartialEq,
+ {
+ groupbylazy::new(self, key)
+ }
+
+ /// Return an *iterable* that can chunk the iterator.
+ ///
+ /// Yield subiterators (chunks) that each yield a fixed number elements,
+ /// determined by `size`. The last chunk will be shorter if there aren't
+ /// enough elements.
+ ///
+ /// `IntoChunks` is based on `GroupBy`: it is iterable (implements
+ /// `IntoIterator`, **not** `Iterator`), and it only buffers if several
+ /// chunk iterators are alive at the same time.
+ ///
+ /// Iterator element type is `Chunk`, each chunk's iterator.
+ ///
+ /// **Panics** if `size` is 0.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let data = vec![1, 1, 2, -2, 6, 0, 3, 1];
+ /// //chunk size=3 |------->|-------->|--->|
+ ///
+ /// // Note: The `&` is significant here, `IntoChunks` is iterable
+ /// // only by reference. You can also call `.into_iter()` explicitly.
+ /// for chunk in &data.into_iter().chunks(3) {
+ /// // Check that the sum of each chunk is 4.
+ /// assert_eq!(4, chunk.sum());
+ /// }
+ /// ```
+ #[cfg(feature = "use_alloc")]
+ fn chunks(self, size: usize) -> IntoChunks<Self>
+ where Self: Sized,
+ {
+ assert!(size != 0);
+ groupbylazy::new_chunks(self, size)
+ }
+
+ /// Return an iterator over all contiguous windows producing tuples of
+ /// a specific size (up to 12).
+ ///
+ /// `tuple_windows` clones the iterator elements so that they can be
+ /// part of successive windows, this makes it most suited for iterators
+ /// of references and other values that are cheap to copy.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ /// let mut v = Vec::new();
+ ///
+ /// // pairwise iteration
+ /// for (a, b) in (1..5).tuple_windows() {
+ /// v.push((a, b));
+ /// }
+ /// assert_eq!(v, vec![(1, 2), (2, 3), (3, 4)]);
+ ///
+ /// let mut it = (1..5).tuple_windows();
+ /// assert_eq!(Some((1, 2, 3)), it.next());
+ /// assert_eq!(Some((2, 3, 4)), it.next());
+ /// assert_eq!(None, it.next());
+ ///
+ /// // this requires a type hint
+ /// let it = (1..5).tuple_windows::<(_, _, _)>();
+ /// itertools::assert_equal(it, vec![(1, 2, 3), (2, 3, 4)]);
+ ///
+ /// // you can also specify the complete type
+ /// use itertools::TupleWindows;
+ /// use std::ops::Range;
+ ///
+ /// let it: TupleWindows<Range<u32>, (u32, u32, u32)> = (1..5).tuple_windows();
+ /// itertools::assert_equal(it, vec![(1, 2, 3), (2, 3, 4)]);
+ /// ```
+ fn tuple_windows<T>(self) -> TupleWindows<Self, T>
+ where Self: Sized + Iterator<Item = T::Item>,
+ T: traits::HomogeneousTuple,
+ T::Item: Clone
+ {
+ tuple_impl::tuple_windows(self)
+ }
+
+ /// Return an iterator over all windows, wrapping back to the first
+ /// elements when the window would otherwise exceed the length of the
+ /// iterator, producing tuples of a specific size (up to 12).
+ ///
+ /// `circular_tuple_windows` clones the iterator elements so that they can be
+ /// part of successive windows, this makes it most suited for iterators
+ /// of references and other values that are cheap to copy.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ /// let mut v = Vec::new();
+ /// for (a, b) in (1..5).circular_tuple_windows() {
+ /// v.push((a, b));
+ /// }
+ /// assert_eq!(v, vec![(1, 2), (2, 3), (3, 4), (4, 1)]);
+ ///
+ /// let mut it = (1..5).circular_tuple_windows();
+ /// assert_eq!(Some((1, 2, 3)), it.next());
+ /// assert_eq!(Some((2, 3, 4)), it.next());
+ /// assert_eq!(Some((3, 4, 1)), it.next());
+ /// assert_eq!(Some((4, 1, 2)), it.next());
+ /// assert_eq!(None, it.next());
+ ///
+ /// // this requires a type hint
+ /// let it = (1..5).circular_tuple_windows::<(_, _, _)>();
+ /// itertools::assert_equal(it, vec![(1, 2, 3), (2, 3, 4), (3, 4, 1), (4, 1, 2)]);
+ /// ```
+ fn circular_tuple_windows<T>(self) -> CircularTupleWindows<Self, T>
+ where Self: Sized + Clone + Iterator<Item = T::Item> + ExactSizeIterator,
+ T: tuple_impl::TupleCollect + Clone,
+ T::Item: Clone
+ {
+ tuple_impl::circular_tuple_windows(self)
+ }
+ /// Return an iterator that groups the items in tuples of a specific size
+ /// (up to 12).
+ ///
+ /// See also the method [`.next_tuple()`](Itertools::next_tuple).
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ /// let mut v = Vec::new();
+ /// for (a, b) in (1..5).tuples() {
+ /// v.push((a, b));
+ /// }
+ /// assert_eq!(v, vec![(1, 2), (3, 4)]);
+ ///
+ /// let mut it = (1..7).tuples();
+ /// assert_eq!(Some((1, 2, 3)), it.next());
+ /// assert_eq!(Some((4, 5, 6)), it.next());
+ /// assert_eq!(None, it.next());
+ ///
+ /// // this requires a type hint
+ /// let it = (1..7).tuples::<(_, _, _)>();
+ /// itertools::assert_equal(it, vec![(1, 2, 3), (4, 5, 6)]);
+ ///
+ /// // you can also specify the complete type
+ /// use itertools::Tuples;
+ /// use std::ops::Range;
+ ///
+ /// let it: Tuples<Range<u32>, (u32, u32, u32)> = (1..7).tuples();
+ /// itertools::assert_equal(it, vec![(1, 2, 3), (4, 5, 6)]);
+ /// ```
+ ///
+ /// See also [`Tuples::into_buffer`].
+ fn tuples<T>(self) -> Tuples<Self, T>
+ where Self: Sized + Iterator<Item = T::Item>,
+ T: traits::HomogeneousTuple
+ {
+ tuple_impl::tuples(self)
+ }
+
+ /// Split into an iterator pair that both yield all elements from
+ /// the original iterator.
+ ///
+ /// **Note:** If the iterator is clonable, prefer using that instead
+ /// of using this method. Cloning is likely to be more efficient.
+ ///
+ /// Iterator element type is `Self::Item`.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ /// let xs = vec![0, 1, 2, 3];
+ ///
+ /// let (mut t1, t2) = xs.into_iter().tee();
+ /// itertools::assert_equal(t1.next(), Some(0));
+ /// itertools::assert_equal(t2, 0..4);
+ /// itertools::assert_equal(t1, 1..4);
+ /// ```
+ #[cfg(feature = "use_alloc")]
+ fn tee(self) -> (Tee<Self>, Tee<Self>)
+ where Self: Sized,
+ Self::Item: Clone
+ {
+ tee::new(self)
+ }
+
+ /// Return an iterator adaptor that steps `n` elements in the base iterator
+ /// for each iteration.
+ ///
+ /// The iterator steps by yielding the next element from the base iterator,
+ /// then skipping forward `n - 1` elements.
+ ///
+ /// Iterator element type is `Self::Item`.
+ ///
+ /// **Panics** if the step is 0.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let it = (0..8).step(3);
+ /// itertools::assert_equal(it, vec![0, 3, 6]);
+ /// ```
+ #[deprecated(note="Use std .step_by() instead", since="0.8.0")]
+ #[allow(deprecated)]
+ fn step(self, n: usize) -> Step<Self>
+ where Self: Sized
+ {
+ adaptors::step(self, n)
+ }
+
+ /// Convert each item of the iterator using the [`Into`] trait.
+ ///
+ /// ```rust
+ /// use itertools::Itertools;
+ ///
+ /// (1i32..42i32).map_into::<f64>().collect_vec();
+ /// ```
+ fn map_into<R>(self) -> MapInto<Self, R>
+ where Self: Sized,
+ Self::Item: Into<R>,
+ {
+ adaptors::map_into(self)
+ }
+
+ /// See [`.map_ok()`](Itertools::map_ok).
+ #[deprecated(note="Use .map_ok() instead", since="0.10.0")]
+ fn map_results<F, T, U, E>(self, f: F) -> MapOk<Self, F>
+ where Self: Iterator<Item = Result<T, E>> + Sized,
+ F: FnMut(T) -> U,
+ {
+ self.map_ok(f)
+ }
+
+ /// Return an iterator adaptor that applies the provided closure
+ /// to every `Result::Ok` value. `Result::Err` values are
+ /// unchanged.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let input = vec![Ok(41), Err(false), Ok(11)];
+ /// let it = input.into_iter().map_ok(|i| i + 1);
+ /// itertools::assert_equal(it, vec![Ok(42), Err(false), Ok(12)]);
+ /// ```
+ fn map_ok<F, T, U, E>(self, f: F) -> MapOk<Self, F>
+ where Self: Iterator<Item = Result<T, E>> + Sized,
+ F: FnMut(T) -> U,
+ {
+ adaptors::map_ok(self, f)
+ }
+
+ /// Return an iterator adaptor that filters every `Result::Ok`
+ /// value with the provided closure. `Result::Err` values are
+ /// unchanged.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let input = vec![Ok(22), Err(false), Ok(11)];
+ /// let it = input.into_iter().filter_ok(|&i| i > 20);
+ /// itertools::assert_equal(it, vec![Ok(22), Err(false)]);
+ /// ```
+ fn filter_ok<F, T, E>(self, f: F) -> FilterOk<Self, F>
+ where Self: Iterator<Item = Result<T, E>> + Sized,
+ F: FnMut(&T) -> bool,
+ {
+ adaptors::filter_ok(self, f)
+ }
+
+ /// Return an iterator adaptor that filters and transforms every
+ /// `Result::Ok` value with the provided closure. `Result::Err`
+ /// values are unchanged.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let input = vec![Ok(22), Err(false), Ok(11)];
+ /// let it = input.into_iter().filter_map_ok(|i| if i > 20 { Some(i * 2) } else { None });
+ /// itertools::assert_equal(it, vec![Ok(44), Err(false)]);
+ /// ```
+ fn filter_map_ok<F, T, U, E>(self, f: F) -> FilterMapOk<Self, F>
+ where Self: Iterator<Item = Result<T, E>> + Sized,
+ F: FnMut(T) -> Option<U>,
+ {
+ adaptors::filter_map_ok(self, f)
+ }
+
+ /// Return an iterator adaptor that flattens every `Result::Ok` value into
+ /// a series of `Result::Ok` values. `Result::Err` values are unchanged.
+ ///
+ /// This is useful when you have some common error type for your crate and
+ /// need to propagate it upwards, but the `Result::Ok` case needs to be flattened.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let input = vec![Ok(0..2), Err(false), Ok(2..4)];
+ /// let it = input.iter().cloned().flatten_ok();
+ /// itertools::assert_equal(it.clone(), vec![Ok(0), Ok(1), Err(false), Ok(2), Ok(3)]);
+ ///
+ /// // This can also be used to propagate errors when collecting.
+ /// let output_result: Result<Vec<i32>, bool> = it.collect();
+ /// assert_eq!(output_result, Err(false));
+ /// ```
+ fn flatten_ok<T, E>(self) -> FlattenOk<Self, T, E>
+ where Self: Iterator<Item = Result<T, E>> + Sized,
+ T: IntoIterator
+ {
+ flatten_ok::flatten_ok(self)
+ }
+
+ /// Return an iterator adaptor that merges the two base iterators in
+ /// ascending order. If both base iterators are sorted (ascending), the
+ /// result is sorted.
+ ///
+ /// Iterator element type is `Self::Item`.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let a = (0..11).step(3);
+ /// let b = (0..11).step(5);
+ /// let it = a.merge(b);
+ /// itertools::assert_equal(it, vec![0, 0, 3, 5, 6, 9, 10]);
+ /// ```
+ fn merge<J>(self, other: J) -> Merge<Self, J::IntoIter>
+ where Self: Sized,
+ Self::Item: PartialOrd,
+ J: IntoIterator<Item = Self::Item>
+ {
+ merge(self, other)
+ }
+
+ /// Return an iterator adaptor that merges the two base iterators in order.
+ /// This is much like [`.merge()`](Itertools::merge) but allows for a custom ordering.
+ ///
+ /// This can be especially useful for sequences of tuples.
+ ///
+ /// Iterator element type is `Self::Item`.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let a = (0..).zip("bc".chars());
+ /// let b = (0..).zip("ad".chars());
+ /// let it = a.merge_by(b, |x, y| x.1 <= y.1);
+ /// itertools::assert_equal(it, vec![(0, 'a'), (0, 'b'), (1, 'c'), (1, 'd')]);
+ /// ```
+
+ fn merge_by<J, F>(self, other: J, is_first: F) -> MergeBy<Self, J::IntoIter, F>
+ where Self: Sized,
+ J: IntoIterator<Item = Self::Item>,
+ F: FnMut(&Self::Item, &Self::Item) -> bool
+ {
+ adaptors::merge_by_new(self, other.into_iter(), is_first)
+ }
+
+ /// Create an iterator that merges items from both this and the specified
+ /// iterator in ascending order.
+ ///
+ /// It chooses whether to pair elements based on the `Ordering` returned by the
+ /// specified compare function. At any point, inspecting the tip of the
+ /// iterators `I` and `J` as items `i` of type `I::Item` and `j` of type
+ /// `J::Item` respectively, the resulting iterator will:
+ ///
+ /// - Emit `EitherOrBoth::Left(i)` when `i < j`,
+ /// and remove `i` from its source iterator
+ /// - Emit `EitherOrBoth::Right(j)` when `i > j`,
+ /// and remove `j` from its source iterator
+ /// - Emit `EitherOrBoth::Both(i, j)` when `i == j`,
+ /// and remove both `i` and `j` from their respective source iterators
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ /// use itertools::EitherOrBoth::{Left, Right, Both};
+ ///
+ /// let multiples_of_2 = (0..10).step(2);
+ /// let multiples_of_3 = (0..10).step(3);
+ ///
+ /// itertools::assert_equal(
+ /// multiples_of_2.merge_join_by(multiples_of_3, |i, j| i.cmp(j)),
+ /// vec![Both(0, 0), Left(2), Right(3), Left(4), Both(6, 6), Left(8), Right(9)]
+ /// );
+ /// ```
+ #[inline]
+ fn merge_join_by<J, F>(self, other: J, cmp_fn: F) -> MergeJoinBy<Self, J::IntoIter, F>
+ where J: IntoIterator,
+ F: FnMut(&Self::Item, &J::Item) -> std::cmp::Ordering,
+ Self: Sized
+ {
+ merge_join_by(self, other, cmp_fn)
+ }
+
+ /// Return an iterator adaptor that flattens an iterator of iterators by
+ /// merging them in ascending order.
+ ///
+ /// If all base iterators are sorted (ascending), the result is sorted.
+ ///
+ /// Iterator element type is `Self::Item`.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let a = (0..6).step(3);
+ /// let b = (1..6).step(3);
+ /// let c = (2..6).step(3);
+ /// let it = vec![a, b, c].into_iter().kmerge();
+ /// itertools::assert_equal(it, vec![0, 1, 2, 3, 4, 5]);
+ /// ```
+ #[cfg(feature = "use_alloc")]
+ fn kmerge(self) -> KMerge<<Self::Item as IntoIterator>::IntoIter>
+ where Self: Sized,
+ Self::Item: IntoIterator,
+ <Self::Item as IntoIterator>::Item: PartialOrd,
+ {
+ kmerge(self)
+ }
+
+ /// Return an iterator adaptor that flattens an iterator of iterators by
+ /// merging them according to the given closure.
+ ///
+ /// The closure `first` is called with two elements *a*, *b* and should
+ /// return `true` if *a* is ordered before *b*.
+ ///
+ /// If all base iterators are sorted according to `first`, the result is
+ /// sorted.
+ ///
+ /// Iterator element type is `Self::Item`.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let a = vec![-1f64, 2., 3., -5., 6., -7.];
+ /// let b = vec![0., 2., -4.];
+ /// let mut it = vec![a, b].into_iter().kmerge_by(|a, b| a.abs() < b.abs());
+ /// assert_eq!(it.next(), Some(0.));
+ /// assert_eq!(it.last(), Some(-7.));
+ /// ```
+ #[cfg(feature = "use_alloc")]
+ fn kmerge_by<F>(self, first: F)
+ -> KMergeBy<<Self::Item as IntoIterator>::IntoIter, F>
+ where Self: Sized,
+ Self::Item: IntoIterator,
+ F: FnMut(&<Self::Item as IntoIterator>::Item,
+ &<Self::Item as IntoIterator>::Item) -> bool
+ {
+ kmerge_by(self, first)
+ }
+
+ /// Return an iterator adaptor that iterates over the cartesian product of
+ /// the element sets of two iterators `self` and `J`.
+ ///
+ /// Iterator element type is `(Self::Item, J::Item)`.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let it = (0..2).cartesian_product("αβ".chars());
+ /// itertools::assert_equal(it, vec![(0, 'α'), (0, 'β'), (1, 'α'), (1, 'β')]);
+ /// ```
+ fn cartesian_product<J>(self, other: J) -> Product<Self, J::IntoIter>
+ where Self: Sized,
+ Self::Item: Clone,
+ J: IntoIterator,
+ J::IntoIter: Clone
+ {
+ adaptors::cartesian_product(self, other.into_iter())
+ }
+
+ /// Return an iterator adaptor that iterates over the cartesian product of
+ /// all subiterators returned by meta-iterator `self`.
+ ///
+ /// All provided iterators must yield the same `Item` type. To generate
+ /// the product of iterators yielding multiple types, use the
+ /// [`iproduct`] macro instead.
+ ///
+ ///
+ /// The iterator element type is `Vec<T>`, where `T` is the iterator element
+ /// of the subiterators.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ /// let mut multi_prod = (0..3).map(|i| (i * 2)..(i * 2 + 2))
+ /// .multi_cartesian_product();
+ /// assert_eq!(multi_prod.next(), Some(vec![0, 2, 4]));
+ /// assert_eq!(multi_prod.next(), Some(vec![0, 2, 5]));
+ /// assert_eq!(multi_prod.next(), Some(vec![0, 3, 4]));
+ /// assert_eq!(multi_prod.next(), Some(vec![0, 3, 5]));
+ /// assert_eq!(multi_prod.next(), Some(vec![1, 2, 4]));
+ /// assert_eq!(multi_prod.next(), Some(vec![1, 2, 5]));
+ /// assert_eq!(multi_prod.next(), Some(vec![1, 3, 4]));
+ /// assert_eq!(multi_prod.next(), Some(vec![1, 3, 5]));
+ /// assert_eq!(multi_prod.next(), None);
+ /// ```
+ #[cfg(feature = "use_alloc")]
+ fn multi_cartesian_product(self) -> MultiProduct<<Self::Item as IntoIterator>::IntoIter>
+ where Self: Sized,
+ Self::Item: IntoIterator,
+ <Self::Item as IntoIterator>::IntoIter: Clone,
+ <Self::Item as IntoIterator>::Item: Clone
+ {
+ adaptors::multi_cartesian_product(self)
+ }
+
+ /// Return an iterator adaptor that uses the passed-in closure to
+ /// optionally merge together consecutive elements.
+ ///
+ /// The closure `f` is passed two elements, `previous` and `current` and may
+ /// return either (1) `Ok(combined)` to merge the two values or
+ /// (2) `Err((previous', current'))` to indicate they can't be merged.
+ /// In (2), the value `previous'` is emitted by the iterator.
+ /// Either (1) `combined` or (2) `current'` becomes the previous value
+ /// when coalesce continues with the next pair of elements to merge. The
+ /// value that remains at the end is also emitted by the iterator.
+ ///
+ /// Iterator element type is `Self::Item`.
+ ///
+ /// This iterator is *fused*.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// // sum same-sign runs together
+ /// let data = vec![-1., -2., -3., 3., 1., 0., -1.];
+ /// itertools::assert_equal(data.into_iter().coalesce(|x, y|
+ /// if (x >= 0.) == (y >= 0.) {
+ /// Ok(x + y)
+ /// } else {
+ /// Err((x, y))
+ /// }),
+ /// vec![-6., 4., -1.]);
+ /// ```
+ fn coalesce<F>(self, f: F) -> Coalesce<Self, F>
+ where Self: Sized,
+ F: FnMut(Self::Item, Self::Item)
+ -> Result<Self::Item, (Self::Item, Self::Item)>
+ {
+ adaptors::coalesce(self, f)
+ }
+
+ /// Remove duplicates from sections of consecutive identical elements.
+ /// If the iterator is sorted, all elements will be unique.
+ ///
+ /// Iterator element type is `Self::Item`.
+ ///
+ /// This iterator is *fused*.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let data = vec![1., 1., 2., 3., 3., 2., 2.];
+ /// itertools::assert_equal(data.into_iter().dedup(),
+ /// vec![1., 2., 3., 2.]);
+ /// ```
+ fn dedup(self) -> Dedup<Self>
+ where Self: Sized,
+ Self::Item: PartialEq,
+ {
+ adaptors::dedup(self)
+ }
+
+ /// Remove duplicates from sections of consecutive identical elements,
+ /// determining equality using a comparison function.
+ /// If the iterator is sorted, all elements will be unique.
+ ///
+ /// Iterator element type is `Self::Item`.
+ ///
+ /// This iterator is *fused*.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let data = vec![(0, 1.), (1, 1.), (0, 2.), (0, 3.), (1, 3.), (1, 2.), (2, 2.)];
+ /// itertools::assert_equal(data.into_iter().dedup_by(|x, y| x.1 == y.1),
+ /// vec![(0, 1.), (0, 2.), (0, 3.), (1, 2.)]);
+ /// ```
+ fn dedup_by<Cmp>(self, cmp: Cmp) -> DedupBy<Self, Cmp>
+ where Self: Sized,
+ Cmp: FnMut(&Self::Item, &Self::Item)->bool,
+ {
+ adaptors::dedup_by(self, cmp)
+ }
+
+ /// Remove duplicates from sections of consecutive identical elements, while keeping a count of
+ /// how many repeated elements were present.
+ /// If the iterator is sorted, all elements will be unique.
+ ///
+ /// Iterator element type is `(usize, Self::Item)`.
+ ///
+ /// This iterator is *fused*.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let data = vec!['a', 'a', 'b', 'c', 'c', 'b', 'b'];
+ /// itertools::assert_equal(data.into_iter().dedup_with_count(),
+ /// vec![(2, 'a'), (1, 'b'), (2, 'c'), (2, 'b')]);
+ /// ```
+ fn dedup_with_count(self) -> DedupWithCount<Self>
+ where
+ Self: Sized,
+ {
+ adaptors::dedup_with_count(self)
+ }
+
+ /// Remove duplicates from sections of consecutive identical elements, while keeping a count of
+ /// how many repeated elements were present.
+ /// This will determine equality using a comparison function.
+ /// If the iterator is sorted, all elements will be unique.
+ ///
+ /// Iterator element type is `(usize, Self::Item)`.
+ ///
+ /// This iterator is *fused*.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let data = vec![(0, 'a'), (1, 'a'), (0, 'b'), (0, 'c'), (1, 'c'), (1, 'b'), (2, 'b')];
+ /// itertools::assert_equal(data.into_iter().dedup_by_with_count(|x, y| x.1 == y.1),
+ /// vec![(2, (0, 'a')), (1, (0, 'b')), (2, (0, 'c')), (2, (1, 'b'))]);
+ /// ```
+ fn dedup_by_with_count<Cmp>(self, cmp: Cmp) -> DedupByWithCount<Self, Cmp>
+ where
+ Self: Sized,
+ Cmp: FnMut(&Self::Item, &Self::Item) -> bool,
+ {
+ adaptors::dedup_by_with_count(self, cmp)
+ }
+
+ /// Return an iterator adaptor that produces elements that appear more than once during the
+ /// iteration. Duplicates are detected using hash and equality.
+ ///
+ /// The iterator is stable, returning the duplicate items in the order in which they occur in
+ /// the adapted iterator. Each duplicate item is returned exactly once. If an item appears more
+ /// than twice, the second item is the item retained and the rest are discarded.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let data = vec![10, 20, 30, 20, 40, 10, 50];
+ /// itertools::assert_equal(data.into_iter().duplicates(),
+ /// vec![20, 10]);
+ /// ```
+ #[cfg(feature = "use_std")]
+ fn duplicates(self) -> Duplicates<Self>
+ where Self: Sized,
+ Self::Item: Eq + Hash
+ {
+ duplicates_impl::duplicates(self)
+ }
+
+ /// Return an iterator adaptor that produces elements that appear more than once during the
+ /// iteration. Duplicates are detected using hash and equality.
+ ///
+ /// Duplicates are detected by comparing the key they map to with the keying function `f` by
+ /// hash and equality. The keys are stored in a hash map in the iterator.
+ ///
+ /// The iterator is stable, returning the duplicate items in the order in which they occur in
+ /// the adapted iterator. Each duplicate item is returned exactly once. If an item appears more
+ /// than twice, the second item is the item retained and the rest are discarded.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let data = vec!["a", "bb", "aa", "c", "ccc"];
+ /// itertools::assert_equal(data.into_iter().duplicates_by(|s| s.len()),
+ /// vec!["aa", "c"]);
+ /// ```
+ #[cfg(feature = "use_std")]
+ fn duplicates_by<V, F>(self, f: F) -> DuplicatesBy<Self, V, F>
+ where Self: Sized,
+ V: Eq + Hash,
+ F: FnMut(&Self::Item) -> V
+ {
+ duplicates_impl::duplicates_by(self, f)
+ }
+
+ /// Return an iterator adaptor that filters out elements that have
+ /// already been produced once during the iteration. Duplicates
+ /// are detected using hash and equality.
+ ///
+ /// Clones of visited elements are stored in a hash set in the
+ /// iterator.
+ ///
+ /// The iterator is stable, returning the non-duplicate items in the order
+ /// in which they occur in the adapted iterator. In a set of duplicate
+ /// items, the first item encountered is the item retained.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let data = vec![10, 20, 30, 20, 40, 10, 50];
+ /// itertools::assert_equal(data.into_iter().unique(),
+ /// vec![10, 20, 30, 40, 50]);
+ /// ```
+ #[cfg(feature = "use_std")]
+ fn unique(self) -> Unique<Self>
+ where Self: Sized,
+ Self::Item: Clone + Eq + Hash
+ {
+ unique_impl::unique(self)
+ }
+
+ /// Return an iterator adaptor that filters out elements that have
+ /// already been produced once during the iteration.
+ ///
+ /// Duplicates are detected by comparing the key they map to
+ /// with the keying function `f` by hash and equality.
+ /// The keys are stored in a hash set in the iterator.
+ ///
+ /// The iterator is stable, returning the non-duplicate items in the order
+ /// in which they occur in the adapted iterator. In a set of duplicate
+ /// items, the first item encountered is the item retained.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let data = vec!["a", "bb", "aa", "c", "ccc"];
+ /// itertools::assert_equal(data.into_iter().unique_by(|s| s.len()),
+ /// vec!["a", "bb", "ccc"]);
+ /// ```
+ #[cfg(feature = "use_std")]
+ fn unique_by<V, F>(self, f: F) -> UniqueBy<Self, V, F>
+ where Self: Sized,
+ V: Eq + Hash,
+ F: FnMut(&Self::Item) -> V
+ {
+ unique_impl::unique_by(self, f)
+ }
+
+ /// Return an iterator adaptor that borrows from this iterator and
+ /// takes items while the closure `accept` returns `true`.
+ ///
+ /// This adaptor can only be used on iterators that implement `PeekingNext`
+ /// like `.peekable()`, `put_back` and a few other collection iterators.
+ ///
+ /// The last and rejected element (first `false`) is still available when
+ /// `peeking_take_while` is done.
+ ///
+ ///
+ /// See also [`.take_while_ref()`](Itertools::take_while_ref)
+ /// which is a similar adaptor.
+ fn peeking_take_while<F>(&mut self, accept: F) -> PeekingTakeWhile<Self, F>
+ where Self: Sized + PeekingNext,
+ F: FnMut(&Self::Item) -> bool,
+ {
+ peeking_take_while::peeking_take_while(self, accept)
+ }
+
+ /// Return an iterator adaptor that borrows from a `Clone`-able iterator
+ /// to only pick off elements while the predicate `accept` returns `true`.
+ ///
+ /// It uses the `Clone` trait to restore the original iterator so that the
+ /// last and rejected element (first `false`) is still available when
+ /// `take_while_ref` is done.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let mut hexadecimals = "0123456789abcdef".chars();
+ ///
+ /// let decimals = hexadecimals.take_while_ref(|c| c.is_numeric())
+ /// .collect::<String>();
+ /// assert_eq!(decimals, "0123456789");
+ /// assert_eq!(hexadecimals.next(), Some('a'));
+ ///
+ /// ```
+ fn take_while_ref<F>(&mut self, accept: F) -> TakeWhileRef<Self, F>
+ where Self: Clone,
+ F: FnMut(&Self::Item) -> bool
+ {
+ adaptors::take_while_ref(self, accept)
+ }
+
+ /// Return an iterator adaptor that filters `Option<A>` iterator elements
+ /// and produces `A`. Stops on the first `None` encountered.
+ ///
+ /// Iterator element type is `A`, the unwrapped element.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// // List all hexadecimal digits
+ /// itertools::assert_equal(
+ /// (0..).map(|i| std::char::from_digit(i, 16)).while_some(),
+ /// "0123456789abcdef".chars());
+ ///
+ /// ```
+ fn while_some<A>(self) -> WhileSome<Self>
+ where Self: Sized + Iterator<Item = Option<A>>
+ {
+ adaptors::while_some(self)
+ }
+
+ /// Return an iterator adaptor that iterates over the combinations of the
+ /// elements from an iterator.
+ ///
+ /// Iterator element can be any homogeneous tuple of type `Self::Item` with
+ /// size up to 12.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let mut v = Vec::new();
+ /// for (a, b) in (1..5).tuple_combinations() {
+ /// v.push((a, b));
+ /// }
+ /// assert_eq!(v, vec![(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]);
+ ///
+ /// let mut it = (1..5).tuple_combinations();
+ /// assert_eq!(Some((1, 2, 3)), it.next());
+ /// assert_eq!(Some((1, 2, 4)), it.next());
+ /// assert_eq!(Some((1, 3, 4)), it.next());
+ /// assert_eq!(Some((2, 3, 4)), it.next());
+ /// assert_eq!(None, it.next());
+ ///
+ /// // this requires a type hint
+ /// let it = (1..5).tuple_combinations::<(_, _, _)>();
+ /// itertools::assert_equal(it, vec![(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]);
+ ///
+ /// // you can also specify the complete type
+ /// use itertools::TupleCombinations;
+ /// use std::ops::Range;
+ ///
+ /// let it: TupleCombinations<Range<u32>, (u32, u32, u32)> = (1..5).tuple_combinations();
+ /// itertools::assert_equal(it, vec![(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]);
+ /// ```
+ fn tuple_combinations<T>(self) -> TupleCombinations<Self, T>
+ where Self: Sized + Clone,
+ Self::Item: Clone,
+ T: adaptors::HasCombination<Self>,
+ {
+ adaptors::tuple_combinations(self)
+ }
+
+ /// Return an iterator adaptor that iterates over the `k`-length combinations of
+ /// the elements from an iterator.
+ ///
+ /// Iterator element type is `Vec<Self::Item>`. The iterator produces a new Vec per iteration,
+ /// and clones the iterator elements.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let it = (1..5).combinations(3);
+ /// itertools::assert_equal(it, vec![
+ /// vec![1, 2, 3],
+ /// vec![1, 2, 4],
+ /// vec![1, 3, 4],
+ /// vec![2, 3, 4],
+ /// ]);
+ /// ```
+ ///
+ /// Note: Combinations does not take into account the equality of the iterated values.
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let it = vec![1, 2, 2].into_iter().combinations(2);
+ /// itertools::assert_equal(it, vec![
+ /// vec![1, 2], // Note: these are the same
+ /// vec![1, 2], // Note: these are the same
+ /// vec![2, 2],
+ /// ]);
+ /// ```
+ #[cfg(feature = "use_alloc")]
+ fn combinations(self, k: usize) -> Combinations<Self>
+ where Self: Sized,
+ Self::Item: Clone
+ {
+ combinations::combinations(self, k)
+ }
+
+ /// Return an iterator that iterates over the `k`-length combinations of
+ /// the elements from an iterator, with replacement.
+ ///
+ /// Iterator element type is `Vec<Self::Item>`. The iterator produces a new Vec per iteration,
+ /// and clones the iterator elements.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let it = (1..4).combinations_with_replacement(2);
+ /// itertools::assert_equal(it, vec![
+ /// vec![1, 1],
+ /// vec![1, 2],
+ /// vec![1, 3],
+ /// vec![2, 2],
+ /// vec![2, 3],
+ /// vec![3, 3],
+ /// ]);
+ /// ```
+ #[cfg(feature = "use_alloc")]
+ fn combinations_with_replacement(self, k: usize) -> CombinationsWithReplacement<Self>
+ where
+ Self: Sized,
+ Self::Item: Clone,
+ {
+ combinations_with_replacement::combinations_with_replacement(self, k)
+ }
+
+ /// Return an iterator adaptor that iterates over all k-permutations of the
+ /// elements from an iterator.
+ ///
+ /// Iterator element type is `Vec<Self::Item>` with length `k`. The iterator
+ /// produces a new Vec per iteration, and clones the iterator elements.
+ ///
+ /// If `k` is greater than the length of the input iterator, the resultant
+ /// iterator adaptor will be empty.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let perms = (5..8).permutations(2);
+ /// itertools::assert_equal(perms, vec![
+ /// vec![5, 6],
+ /// vec![5, 7],
+ /// vec![6, 5],
+ /// vec![6, 7],
+ /// vec![7, 5],
+ /// vec![7, 6],
+ /// ]);
+ /// ```
+ ///
+ /// Note: Permutations does not take into account the equality of the iterated values.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let it = vec![2, 2].into_iter().permutations(2);
+ /// itertools::assert_equal(it, vec![
+ /// vec![2, 2], // Note: these are the same
+ /// vec![2, 2], // Note: these are the same
+ /// ]);
+ /// ```
+ ///
+ /// Note: The source iterator is collected lazily, and will not be
+ /// re-iterated if the permutations adaptor is completed and re-iterated.
+ #[cfg(feature = "use_alloc")]
+ fn permutations(self, k: usize) -> Permutations<Self>
+ where Self: Sized,
+ Self::Item: Clone
+ {
+ permutations::permutations(self, k)
+ }
+
+ /// Return an iterator that iterates through the powerset of the elements from an
+ /// iterator.
+ ///
+ /// Iterator element type is `Vec<Self::Item>`. The iterator produces a new `Vec`
+ /// per iteration, and clones the iterator elements.
+ ///
+ /// The powerset of a set contains all subsets including the empty set and the full
+ /// input set. A powerset has length _2^n_ where _n_ is the length of the input
+ /// set.
+ ///
+ /// Each `Vec` produced by this iterator represents a subset of the elements
+ /// produced by the source iterator.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let sets = (1..4).powerset().collect::<Vec<_>>();
+ /// itertools::assert_equal(sets, vec![
+ /// vec![],
+ /// vec![1],
+ /// vec![2],
+ /// vec![3],
+ /// vec![1, 2],
+ /// vec![1, 3],
+ /// vec![2, 3],
+ /// vec![1, 2, 3],
+ /// ]);
+ /// ```
+ #[cfg(feature = "use_alloc")]
+ fn powerset(self) -> Powerset<Self>
+ where Self: Sized,
+ Self::Item: Clone,
+ {
+ powerset::powerset(self)
+ }
+
+ /// Return an iterator adaptor that pads the sequence to a minimum length of
+ /// `min` by filling missing elements using a closure `f`.
+ ///
+ /// Iterator element type is `Self::Item`.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let it = (0..5).pad_using(10, |i| 2*i);
+ /// itertools::assert_equal(it, vec![0, 1, 2, 3, 4, 10, 12, 14, 16, 18]);
+ ///
+ /// let it = (0..10).pad_using(5, |i| 2*i);
+ /// itertools::assert_equal(it, vec![0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
+ ///
+ /// let it = (0..5).pad_using(10, |i| 2*i).rev();
+ /// itertools::assert_equal(it, vec![18, 16, 14, 12, 10, 4, 3, 2, 1, 0]);
+ /// ```
+ fn pad_using<F>(self, min: usize, f: F) -> PadUsing<Self, F>
+ where Self: Sized,
+ F: FnMut(usize) -> Self::Item
+ {
+ pad_tail::pad_using(self, min, f)
+ }
+
+ /// Return an iterator adaptor that wraps each element in a `Position` to
+ /// ease special-case handling of the first or last elements.
+ ///
+ /// Iterator element type is
+ /// [`Position<Self::Item>`](Position)
+ ///
+ /// ```
+ /// use itertools::{Itertools, Position};
+ ///
+ /// let it = (0..4).with_position();
+ /// itertools::assert_equal(it,
+ /// vec![Position::First(0),
+ /// Position::Middle(1),
+ /// Position::Middle(2),
+ /// Position::Last(3)]);
+ ///
+ /// let it = (0..1).with_position();
+ /// itertools::assert_equal(it, vec![Position::Only(0)]);
+ /// ```
+ fn with_position(self) -> WithPosition<Self>
+ where Self: Sized,
+ {
+ with_position::with_position(self)
+ }
+
+ /// Return an iterator adaptor that yields the indices of all elements
+ /// satisfying a predicate, counted from the start of the iterator.
+ ///
+ /// Equivalent to `iter.enumerate().filter(|(_, v)| predicate(v)).map(|(i, _)| i)`.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let data = vec![1, 2, 3, 3, 4, 6, 7, 9];
+ /// itertools::assert_equal(data.iter().positions(|v| v % 2 == 0), vec![1, 4, 5]);
+ ///
+ /// itertools::assert_equal(data.iter().positions(|v| v % 2 == 1).rev(), vec![7, 6, 3, 2, 0]);
+ /// ```
+ fn positions<P>(self, predicate: P) -> Positions<Self, P>
+ where Self: Sized,
+ P: FnMut(Self::Item) -> bool,
+ {
+ adaptors::positions(self, predicate)
+ }
+
+ /// Return an iterator adaptor that applies a mutating function
+ /// to each element before yielding it.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let input = vec![vec![1], vec![3, 2, 1]];
+ /// let it = input.into_iter().update(|mut v| v.push(0));
+ /// itertools::assert_equal(it, vec![vec![1, 0], vec![3, 2, 1, 0]]);
+ /// ```
+ fn update<F>(self, updater: F) -> Update<Self, F>
+ where Self: Sized,
+ F: FnMut(&mut Self::Item),
+ {
+ adaptors::update(self, updater)
+ }
+
+ // non-adaptor methods
+ /// Advances the iterator and returns the next items grouped in a tuple of
+ /// a specific size (up to 12).
+ ///
+ /// If there are enough elements to be grouped in a tuple, then the tuple is
+ /// returned inside `Some`, otherwise `None` is returned.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let mut iter = 1..5;
+ ///
+ /// assert_eq!(Some((1, 2)), iter.next_tuple());
+ /// ```
+ fn next_tuple<T>(&mut self) -> Option<T>
+ where Self: Sized + Iterator<Item = T::Item>,
+ T: traits::HomogeneousTuple
+ {
+ T::collect_from_iter_no_buf(self)
+ }
+
+ /// Collects all items from the iterator into a tuple of a specific size
+ /// (up to 12).
+ ///
+ /// If the number of elements inside the iterator is **exactly** equal to
+ /// the tuple size, then the tuple is returned inside `Some`, otherwise
+ /// `None` is returned.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let iter = 1..3;
+ ///
+ /// if let Some((x, y)) = iter.collect_tuple() {
+ /// assert_eq!((x, y), (1, 2))
+ /// } else {
+ /// panic!("Expected two elements")
+ /// }
+ /// ```
+ fn collect_tuple<T>(mut self) -> Option<T>
+ where Self: Sized + Iterator<Item = T::Item>,
+ T: traits::HomogeneousTuple
+ {
+ match self.next_tuple() {
+ elt @ Some(_) => match self.next() {
+ Some(_) => None,
+ None => elt,
+ },
+ _ => None
+ }
+ }
+
+
+ /// Find the position and value of the first element satisfying a predicate.
+ ///
+ /// The iterator is not advanced past the first element found.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let text = "Hα";
+ /// assert_eq!(text.chars().find_position(|ch| ch.is_lowercase()), Some((1, 'α')));
+ /// ```
+ fn find_position<P>(&mut self, mut pred: P) -> Option<(usize, Self::Item)>
+ where P: FnMut(&Self::Item) -> bool
+ {
+ for (index, elt) in self.enumerate() {
+ if pred(&elt) {
+ return Some((index, elt));
+ }
+ }
+ None
+ }
+ /// Find the value of the first element satisfying a predicate or return the last element, if any.
+ ///
+ /// The iterator is not advanced past the first element found.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let numbers = [1, 2, 3, 4];
+ /// assert_eq!(numbers.iter().find_or_last(|&&x| x > 5), Some(&4));
+ /// assert_eq!(numbers.iter().find_or_last(|&&x| x > 2), Some(&3));
+ /// assert_eq!(std::iter::empty::<i32>().find_or_last(|&x| x > 5), None);
+ /// ```
+ fn find_or_last<P>(mut self, mut predicate: P) -> Option<Self::Item>
+ where Self: Sized,
+ P: FnMut(&Self::Item) -> bool,
+ {
+ let mut prev = None;
+ self.find_map(|x| if predicate(&x) { Some(x) } else { prev = Some(x); None })
+ .or(prev)
+ }
+ /// Find the value of the first element satisfying a predicate or return the first element, if any.
+ ///
+ /// The iterator is not advanced past the first element found.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let numbers = [1, 2, 3, 4];
+ /// assert_eq!(numbers.iter().find_or_first(|&&x| x > 5), Some(&1));
+ /// assert_eq!(numbers.iter().find_or_first(|&&x| x > 2), Some(&3));
+ /// assert_eq!(std::iter::empty::<i32>().find_or_first(|&x| x > 5), None);
+ /// ```
+ fn find_or_first<P>(mut self, mut predicate: P) -> Option<Self::Item>
+ where Self: Sized,
+ P: FnMut(&Self::Item) -> bool,
+ {
+ let first = self.next()?;
+ Some(if predicate(&first) {
+ first
+ } else {
+ self.find(|x| predicate(x)).unwrap_or(first)
+ })
+ }
+ /// Returns `true` if the given item is present in this iterator.
+ ///
+ /// This method is short-circuiting. If the given item is present in this
+ /// iterator, this method will consume the iterator up-to-and-including
+ /// the item. If the given item is not present in this iterator, the
+ /// iterator will be exhausted.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// #[derive(PartialEq, Debug)]
+ /// enum Enum { A, B, C, D, E, }
+ ///
+ /// let mut iter = vec![Enum::A, Enum::B, Enum::C, Enum::D].into_iter();
+ ///
+ /// // search `iter` for `B`
+ /// assert_eq!(iter.contains(&Enum::B), true);
+ /// // `B` was found, so the iterator now rests at the item after `B` (i.e, `C`).
+ /// assert_eq!(iter.next(), Some(Enum::C));
+ ///
+ /// // search `iter` for `E`
+ /// assert_eq!(iter.contains(&Enum::E), false);
+ /// // `E` wasn't found, so `iter` is now exhausted
+ /// assert_eq!(iter.next(), None);
+ /// ```
+ fn contains<Q>(&mut self, query: &Q) -> bool
+ where
+ Self: Sized,
+ Self::Item: Borrow<Q>,
+ Q: PartialEq,
+ {
+ self.any(|x| x.borrow() == query)
+ }
+
+ /// Check whether all elements compare equal.
+ ///
+ /// Empty iterators are considered to have equal elements:
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let data = vec![1, 1, 1, 2, 2, 3, 3, 3, 4, 5, 5];
+ /// assert!(!data.iter().all_equal());
+ /// assert!(data[0..3].iter().all_equal());
+ /// assert!(data[3..5].iter().all_equal());
+ /// assert!(data[5..8].iter().all_equal());
+ ///
+ /// let data : Option<usize> = None;
+ /// assert!(data.into_iter().all_equal());
+ /// ```
+ fn all_equal(&mut self) -> bool
+ where Self: Sized,
+ Self::Item: PartialEq,
+ {
+ match self.next() {
+ None => true,
+ Some(a) => self.all(|x| a == x),
+ }
+ }
+
+ /// Check whether all elements are unique (non equal).
+ ///
+ /// Empty iterators are considered to have unique elements:
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let data = vec![1, 2, 3, 4, 1, 5];
+ /// assert!(!data.iter().all_unique());
+ /// assert!(data[0..4].iter().all_unique());
+ /// assert!(data[1..6].iter().all_unique());
+ ///
+ /// let data : Option<usize> = None;
+ /// assert!(data.into_iter().all_unique());
+ /// ```
+ #[cfg(feature = "use_std")]
+ fn all_unique(&mut self) -> bool
+ where Self: Sized,
+ Self::Item: Eq + Hash
+ {
+ let mut used = HashSet::new();
+ self.all(move |elt| used.insert(elt))
+ }
+
+ /// Consume the first `n` elements from the iterator eagerly,
+ /// and return the same iterator again.
+ ///
+ /// It works similarly to *.skip(* `n` *)* except it is eager and
+ /// preserves the iterator type.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let mut iter = "αβγ".chars().dropping(2);
+ /// itertools::assert_equal(iter, "γ".chars());
+ /// ```
+ ///
+ /// *Fusing notes: if the iterator is exhausted by dropping,
+ /// the result of calling `.next()` again depends on the iterator implementation.*
+ fn dropping(mut self, n: usize) -> Self
+ where Self: Sized
+ {
+ if n > 0 {
+ self.nth(n - 1);
+ }
+ self
+ }
+
+ /// Consume the last `n` elements from the iterator eagerly,
+ /// and return the same iterator again.
+ ///
+ /// This is only possible on double ended iterators. `n` may be
+ /// larger than the number of elements.
+ ///
+ /// Note: This method is eager, dropping the back elements immediately and
+ /// preserves the iterator type.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let init = vec![0, 3, 6, 9].into_iter().dropping_back(1);
+ /// itertools::assert_equal(init, vec![0, 3, 6]);
+ /// ```
+ fn dropping_back(mut self, n: usize) -> Self
+ where Self: Sized,
+ Self: DoubleEndedIterator
+ {
+ if n > 0 {
+ (&mut self).rev().nth(n - 1);
+ }
+ self
+ }
+
+ /// Run the closure `f` eagerly on each element of the iterator.
+ ///
+ /// Consumes the iterator until its end.
+ ///
+ /// ```
+ /// use std::sync::mpsc::channel;
+ /// use itertools::Itertools;
+ ///
+ /// let (tx, rx) = channel();
+ ///
+ /// // use .foreach() to apply a function to each value -- sending it
+ /// (0..5).map(|x| x * 2 + 1).foreach(|x| { tx.send(x).unwrap(); } );
+ ///
+ /// drop(tx);
+ ///
+ /// itertools::assert_equal(rx.iter(), vec![1, 3, 5, 7, 9]);
+ /// ```
+ #[deprecated(note="Use .for_each() instead", since="0.8.0")]
+ fn foreach<F>(self, f: F)
+ where F: FnMut(Self::Item),
+ Self: Sized,
+ {
+ self.for_each(f);
+ }
+
+ /// Combine all an iterator's elements into one element by using [`Extend`].
+ ///
+ /// This combinator will extend the first item with each of the rest of the
+ /// items of the iterator. If the iterator is empty, the default value of
+ /// `I::Item` is returned.
+ ///
+ /// ```rust
+ /// use itertools::Itertools;
+ ///
+ /// let input = vec![vec![1], vec![2, 3], vec![4, 5, 6]];
+ /// assert_eq!(input.into_iter().concat(),
+ /// vec![1, 2, 3, 4, 5, 6]);
+ /// ```
+ fn concat(self) -> Self::Item
+ where Self: Sized,
+ Self::Item: Extend<<<Self as Iterator>::Item as IntoIterator>::Item> + IntoIterator + Default
+ {
+ concat(self)
+ }
+
+ /// `.collect_vec()` is simply a type specialization of [`Iterator::collect`],
+ /// for convenience.
+ #[cfg(feature = "use_alloc")]
+ fn collect_vec(self) -> Vec<Self::Item>
+ where Self: Sized
+ {
+ self.collect()
+ }
+
+ /// `.try_collect()` is more convenient way of writing
+ /// `.collect::<Result<_, _>>()`
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use std::{fs, io};
+ /// use itertools::Itertools;
+ ///
+ /// fn process_dir_entries(entries: &[fs::DirEntry]) {
+ /// // ...
+ /// }
+ ///
+ /// fn do_stuff() -> std::io::Result<()> {
+ /// let entries: Vec<_> = fs::read_dir(".")?.try_collect()?;
+ /// process_dir_entries(&entries);
+ ///
+ /// Ok(())
+ /// }
+ /// ```
+ #[cfg(feature = "use_alloc")]
+ fn try_collect<T, U, E>(self) -> Result<U, E>
+ where
+ Self: Sized + Iterator<Item = Result<T, E>>,
+ Result<U, E>: FromIterator<Result<T, E>>,
+ {
+ self.collect()
+ }
+
+ /// Assign to each reference in `self` from the `from` iterator,
+ /// stopping at the shortest of the two iterators.
+ ///
+ /// The `from` iterator is queried for its next element before the `self`
+ /// iterator, and if either is exhausted the method is done.
+ ///
+ /// Return the number of elements written.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let mut xs = [0; 4];
+ /// xs.iter_mut().set_from(1..);
+ /// assert_eq!(xs, [1, 2, 3, 4]);
+ /// ```
+ #[inline]
+ fn set_from<'a, A: 'a, J>(&mut self, from: J) -> usize
+ where Self: Iterator<Item = &'a mut A>,
+ J: IntoIterator<Item = A>
+ {
+ let mut count = 0;
+ for elt in from {
+ match self.next() {
+ None => break,
+ Some(ptr) => *ptr = elt,
+ }
+ count += 1;
+ }
+ count
+ }
+
+ /// Combine all iterator elements into one String, separated by `sep`.
+ ///
+ /// Use the `Display` implementation of each element.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// assert_eq!(["a", "b", "c"].iter().join(", "), "a, b, c");
+ /// assert_eq!([1, 2, 3].iter().join(", "), "1, 2, 3");
+ /// ```
+ #[cfg(feature = "use_alloc")]
+ fn join(&mut self, sep: &str) -> String
+ where Self::Item: std::fmt::Display
+ {
+ match self.next() {
+ None => String::new(),
+ Some(first_elt) => {
+ // estimate lower bound of capacity needed
+ let (lower, _) = self.size_hint();
+ let mut result = String::with_capacity(sep.len() * lower);
+ write!(&mut result, "{}", first_elt).unwrap();
+ self.for_each(|elt| {
+ result.push_str(sep);
+ write!(&mut result, "{}", elt).unwrap();
+ });
+ result
+ }
+ }
+ }
+
+ /// Format all iterator elements, separated by `sep`.
+ ///
+ /// All elements are formatted (any formatting trait)
+ /// with `sep` inserted between each element.
+ ///
+ /// **Panics** if the formatter helper is formatted more than once.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let data = [1.1, 2.71828, -3.];
+ /// assert_eq!(
+ /// format!("{:.2}", data.iter().format(", ")),
+ /// "1.10, 2.72, -3.00");
+ /// ```
+ fn format(self, sep: &str) -> Format<Self>
+ where Self: Sized,
+ {
+ format::new_format_default(self, sep)
+ }
+
+ /// Format all iterator elements, separated by `sep`.
+ ///
+ /// This is a customizable version of [`.format()`](Itertools::format).
+ ///
+ /// The supplied closure `format` is called once per iterator element,
+ /// with two arguments: the element and a callback that takes a
+ /// `&Display` value, i.e. any reference to type that implements `Display`.
+ ///
+ /// Using `&format_args!(...)` is the most versatile way to apply custom
+ /// element formatting. The callback can be called multiple times if needed.
+ ///
+ /// **Panics** if the formatter helper is formatted more than once.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let data = [1.1, 2.71828, -3.];
+ /// let data_formatter = data.iter().format_with(", ", |elt, f| f(&format_args!("{:.2}", elt)));
+ /// assert_eq!(format!("{}", data_formatter),
+ /// "1.10, 2.72, -3.00");
+ ///
+ /// // .format_with() is recursively composable
+ /// let matrix = [[1., 2., 3.],
+ /// [4., 5., 6.]];
+ /// let matrix_formatter = matrix.iter().format_with("\n", |row, f| {
+ /// f(&row.iter().format_with(", ", |elt, g| g(&elt)))
+ /// });
+ /// assert_eq!(format!("{}", matrix_formatter),
+ /// "1, 2, 3\n4, 5, 6");
+ ///
+ ///
+ /// ```
+ fn format_with<F>(self, sep: &str, format: F) -> FormatWith<Self, F>
+ where Self: Sized,
+ F: FnMut(Self::Item, &mut dyn FnMut(&dyn fmt::Display) -> fmt::Result) -> fmt::Result,
+ {
+ format::new_format(self, sep, format)
+ }
+
+ /// See [`.fold_ok()`](Itertools::fold_ok).
+ #[deprecated(note="Use .fold_ok() instead", since="0.10.0")]
+ fn fold_results<A, E, B, F>(&mut self, start: B, f: F) -> Result<B, E>
+ where Self: Iterator<Item = Result<A, E>>,
+ F: FnMut(B, A) -> B
+ {
+ self.fold_ok(start, f)
+ }
+
+ /// Fold `Result` values from an iterator.
+ ///
+ /// Only `Ok` values are folded. If no error is encountered, the folded
+ /// value is returned inside `Ok`. Otherwise, the operation terminates
+ /// and returns the first `Err` value it encounters. No iterator elements are
+ /// consumed after the first error.
+ ///
+ /// The first accumulator value is the `start` parameter.
+ /// Each iteration passes the accumulator value and the next value inside `Ok`
+ /// to the fold function `f` and its return value becomes the new accumulator value.
+ ///
+ /// For example the sequence *Ok(1), Ok(2), Ok(3)* will result in a
+ /// computation like this:
+ ///
+ /// ```ignore
+ /// let mut accum = start;
+ /// accum = f(accum, 1);
+ /// accum = f(accum, 2);
+ /// accum = f(accum, 3);
+ /// ```
+ ///
+ /// With a `start` value of 0 and an addition as folding function,
+ /// this effectively results in *((0 + 1) + 2) + 3*
+ ///
+ /// ```
+ /// use std::ops::Add;
+ /// use itertools::Itertools;
+ ///
+ /// let values = [1, 2, -2, -1, 2, 1];
+ /// assert_eq!(
+ /// values.iter()
+ /// .map(Ok::<_, ()>)
+ /// .fold_ok(0, Add::add),
+ /// Ok(3)
+ /// );
+ /// assert!(
+ /// values.iter()
+ /// .map(|&x| if x >= 0 { Ok(x) } else { Err("Negative number") })
+ /// .fold_ok(0, Add::add)
+ /// .is_err()
+ /// );
+ /// ```
+ fn fold_ok<A, E, B, F>(&mut self, mut start: B, mut f: F) -> Result<B, E>
+ where Self: Iterator<Item = Result<A, E>>,
+ F: FnMut(B, A) -> B
+ {
+ for elt in self {
+ match elt {
+ Ok(v) => start = f(start, v),
+ Err(u) => return Err(u),
+ }
+ }
+ Ok(start)
+ }
+
+ /// Fold `Option` values from an iterator.
+ ///
+ /// Only `Some` values are folded. If no `None` is encountered, the folded
+ /// value is returned inside `Some`. Otherwise, the operation terminates
+ /// and returns `None`. No iterator elements are consumed after the `None`.
+ ///
+ /// This is the `Option` equivalent to [`fold_ok`](Itertools::fold_ok).
+ ///
+ /// ```
+ /// use std::ops::Add;
+ /// use itertools::Itertools;
+ ///
+ /// let mut values = vec![Some(1), Some(2), Some(-2)].into_iter();
+ /// assert_eq!(values.fold_options(5, Add::add), Some(5 + 1 + 2 - 2));
+ ///
+ /// let mut more_values = vec![Some(2), None, Some(0)].into_iter();
+ /// assert!(more_values.fold_options(0, Add::add).is_none());
+ /// assert_eq!(more_values.next().unwrap(), Some(0));
+ /// ```
+ fn fold_options<A, B, F>(&mut self, mut start: B, mut f: F) -> Option<B>
+ where Self: Iterator<Item = Option<A>>,
+ F: FnMut(B, A) -> B
+ {
+ for elt in self {
+ match elt {
+ Some(v) => start = f(start, v),
+ None => return None,
+ }
+ }
+ Some(start)
+ }
+
+ /// Accumulator of the elements in the iterator.
+ ///
+ /// Like `.fold()`, without a base case. If the iterator is
+ /// empty, return `None`. With just one element, return it.
+ /// Otherwise elements are accumulated in sequence using the closure `f`.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// assert_eq!((0..10).fold1(|x, y| x + y).unwrap_or(0), 45);
+ /// assert_eq!((0..0).fold1(|x, y| x * y), None);
+ /// ```
+ #[deprecated(since = "0.10.2", note = "Use `Iterator::reduce` instead")]
+ fn fold1<F>(mut self, f: F) -> Option<Self::Item>
+ where F: FnMut(Self::Item, Self::Item) -> Self::Item,
+ Self: Sized,
+ {
+ self.next().map(move |x| self.fold(x, f))
+ }
+
+ /// Accumulate the elements in the iterator in a tree-like manner.
+ ///
+ /// You can think of it as, while there's more than one item, repeatedly
+ /// combining adjacent items. It does so in bottom-up-merge-sort order,
+ /// however, so that it needs only logarithmic stack space.
+ ///
+ /// This produces a call tree like the following (where the calls under
+ /// an item are done after reading that item):
+ ///
+ /// ```text
+ /// 1 2 3 4 5 6 7
+ /// │ │ │ │ │ │ │
+ /// └─f └─f └─f │
+ /// │ │ │ │
+ /// └───f └─f
+ /// │ │
+ /// └─────f
+ /// ```
+ ///
+ /// Which, for non-associative functions, will typically produce a different
+ /// result than the linear call tree used by [`Iterator::reduce`]:
+ ///
+ /// ```text
+ /// 1 2 3 4 5 6 7
+ /// │ │ │ │ │ │ │
+ /// └─f─f─f─f─f─f
+ /// ```
+ ///
+ /// If `f` is associative, prefer the normal [`Iterator::reduce`] instead.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// // The same tree as above
+ /// let num_strings = (1..8).map(|x| x.to_string());
+ /// assert_eq!(num_strings.tree_fold1(|x, y| format!("f({}, {})", x, y)),
+ /// Some(String::from("f(f(f(1, 2), f(3, 4)), f(f(5, 6), 7))")));
+ ///
+ /// // Like fold1, an empty iterator produces None
+ /// assert_eq!((0..0).tree_fold1(|x, y| x * y), None);
+ ///
+ /// // tree_fold1 matches fold1 for associative operations...
+ /// assert_eq!((0..10).tree_fold1(|x, y| x + y),
+ /// (0..10).fold1(|x, y| x + y));
+ /// // ...but not for non-associative ones
+ /// assert_ne!((0..10).tree_fold1(|x, y| x - y),
+ /// (0..10).fold1(|x, y| x - y));
+ /// ```
+ fn tree_fold1<F>(mut self, mut f: F) -> Option<Self::Item>
+ where F: FnMut(Self::Item, Self::Item) -> Self::Item,
+ Self: Sized,
+ {
+ type State<T> = Result<T, Option<T>>;
+
+ fn inner0<T, II, FF>(it: &mut II, f: &mut FF) -> State<T>
+ where
+ II: Iterator<Item = T>,
+ FF: FnMut(T, T) -> T
+ {
+ // This function could be replaced with `it.next().ok_or(None)`,
+ // but half the useful tree_fold1 work is combining adjacent items,
+ // so put that in a form that LLVM is more likely to optimize well.
+
+ let a =
+ if let Some(v) = it.next() { v }
+ else { return Err(None) };
+ let b =
+ if let Some(v) = it.next() { v }
+ else { return Err(Some(a)) };
+ Ok(f(a, b))
+ }
+
+ fn inner<T, II, FF>(stop: usize, it: &mut II, f: &mut FF) -> State<T>
+ where
+ II: Iterator<Item = T>,
+ FF: FnMut(T, T) -> T
+ {
+ let mut x = inner0(it, f)?;
+ for height in 0..stop {
+ // Try to get another tree the same size with which to combine it,
+ // creating a new tree that's twice as big for next time around.
+ let next =
+ if height == 0 {
+ inner0(it, f)
+ } else {
+ inner(height, it, f)
+ };
+ match next {
+ Ok(y) => x = f(x, y),
+
+ // If we ran out of items, combine whatever we did manage
+ // to get. It's better combined with the current value
+ // than something in a parent frame, because the tree in
+ // the parent is always as least as big as this one.
+ Err(None) => return Err(Some(x)),
+ Err(Some(y)) => return Err(Some(f(x, y))),
+ }
+ }
+ Ok(x)
+ }
+
+ match inner(usize::max_value(), &mut self, &mut f) {
+ Err(x) => x,
+ _ => unreachable!(),
+ }
+ }
+
+ /// An iterator method that applies a function, producing a single, final value.
+ ///
+ /// `fold_while()` is basically equivalent to [`Iterator::fold`] but with additional support for
+ /// early exit via short-circuiting.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ /// use itertools::FoldWhile::{Continue, Done};
+ ///
+ /// let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
+ ///
+ /// let mut result = 0;
+ ///
+ /// // for loop:
+ /// for i in &numbers {
+ /// if *i > 5 {
+ /// break;
+ /// }
+ /// result = result + i;
+ /// }
+ ///
+ /// // fold:
+ /// let result2 = numbers.iter().fold(0, |acc, x| {
+ /// if *x > 5 { acc } else { acc + x }
+ /// });
+ ///
+ /// // fold_while:
+ /// let result3 = numbers.iter().fold_while(0, |acc, x| {
+ /// if *x > 5 { Done(acc) } else { Continue(acc + x) }
+ /// }).into_inner();
+ ///
+ /// // they're the same
+ /// assert_eq!(result, result2);
+ /// assert_eq!(result2, result3);
+ /// ```
+ ///
+ /// The big difference between the computations of `result2` and `result3` is that while
+ /// `fold()` called the provided closure for every item of the callee iterator,
+ /// `fold_while()` actually stopped iterating as soon as it encountered `Fold::Done(_)`.
+ fn fold_while<B, F>(&mut self, init: B, mut f: F) -> FoldWhile<B>
+ where Self: Sized,
+ F: FnMut(B, Self::Item) -> FoldWhile<B>
+ {
+ use Result::{
+ Ok as Continue,
+ Err as Break,
+ };
+
+ let result = self.try_fold(init, #[inline(always)] |acc, v|
+ match f(acc, v) {
+ FoldWhile::Continue(acc) => Continue(acc),
+ FoldWhile::Done(acc) => Break(acc),
+ }
+ );
+
+ match result {
+ Continue(acc) => FoldWhile::Continue(acc),
+ Break(acc) => FoldWhile::Done(acc),
+ }
+ }
+
+ /// Iterate over the entire iterator and add all the elements.
+ ///
+ /// An empty iterator returns `None`, otherwise `Some(sum)`.
+ ///
+ /// # Panics
+ ///
+ /// When calling `sum1()` and a primitive integer type is being returned, this
+ /// method will panic if the computation overflows and debug assertions are
+ /// enabled.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let empty_sum = (1..1).sum1::<i32>();
+ /// assert_eq!(empty_sum, None);
+ ///
+ /// let nonempty_sum = (1..11).sum1::<i32>();
+ /// assert_eq!(nonempty_sum, Some(55));
+ /// ```
+ fn sum1<S>(mut self) -> Option<S>
+ where Self: Sized,
+ S: std::iter::Sum<Self::Item>,
+ {
+ self.next()
+ .map(|first| once(first).chain(self).sum())
+ }
+
+ /// Iterate over the entire iterator and multiply all the elements.
+ ///
+ /// An empty iterator returns `None`, otherwise `Some(product)`.
+ ///
+ /// # Panics
+ ///
+ /// When calling `product1()` and a primitive integer type is being returned,
+ /// method will panic if the computation overflows and debug assertions are
+ /// enabled.
+ ///
+ /// # Examples
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let empty_product = (1..1).product1::<i32>();
+ /// assert_eq!(empty_product, None);
+ ///
+ /// let nonempty_product = (1..11).product1::<i32>();
+ /// assert_eq!(nonempty_product, Some(3628800));
+ /// ```
+ fn product1<P>(mut self) -> Option<P>
+ where Self: Sized,
+ P: std::iter::Product<Self::Item>,
+ {
+ self.next()
+ .map(|first| once(first).chain(self).product())
+ }
+
+ /// Sort all iterator elements into a new iterator in ascending order.
+ ///
+ /// **Note:** This consumes the entire iterator, uses the
+ /// [`slice::sort_unstable`] method and returns the result as a new
+ /// iterator that owns its elements.
+ ///
+ /// The sorted iterator, if directly collected to a `Vec`, is converted
+ /// without any extra copying or allocation cost.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// // sort the letters of the text in ascending order
+ /// let text = "bdacfe";
+ /// itertools::assert_equal(text.chars().sorted_unstable(),
+ /// "abcdef".chars());
+ /// ```
+ #[cfg(feature = "use_alloc")]
+ fn sorted_unstable(self) -> VecIntoIter<Self::Item>
+ where Self: Sized,
+ Self::Item: Ord
+ {
+ // Use .sort_unstable() directly since it is not quite identical with
+ // .sort_by(Ord::cmp)
+ let mut v = Vec::from_iter(self);
+ v.sort_unstable();
+ v.into_iter()
+ }
+
+ /// Sort all iterator elements into a new iterator in ascending order.
+ ///
+ /// **Note:** This consumes the entire iterator, uses the
+ /// [`slice::sort_unstable_by`] method and returns the result as a new
+ /// iterator that owns its elements.
+ ///
+ /// The sorted iterator, if directly collected to a `Vec`, is converted
+ /// without any extra copying or allocation cost.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// // sort people in descending order by age
+ /// let people = vec![("Jane", 20), ("John", 18), ("Jill", 30), ("Jack", 27)];
+ ///
+ /// let oldest_people_first = people
+ /// .into_iter()
+ /// .sorted_unstable_by(|a, b| Ord::cmp(&b.1, &a.1))
+ /// .map(|(person, _age)| person);
+ ///
+ /// itertools::assert_equal(oldest_people_first,
+ /// vec!["Jill", "Jack", "Jane", "John"]);
+ /// ```
+ #[cfg(feature = "use_alloc")]
+ fn sorted_unstable_by<F>(self, cmp: F) -> VecIntoIter<Self::Item>
+ where Self: Sized,
+ F: FnMut(&Self::Item, &Self::Item) -> Ordering,
+ {
+ let mut v = Vec::from_iter(self);
+ v.sort_unstable_by(cmp);
+ v.into_iter()
+ }
+
+ /// Sort all iterator elements into a new iterator in ascending order.
+ ///
+ /// **Note:** This consumes the entire iterator, uses the
+ /// [`slice::sort_unstable_by_key`] method and returns the result as a new
+ /// iterator that owns its elements.
+ ///
+ /// The sorted iterator, if directly collected to a `Vec`, is converted
+ /// without any extra copying or allocation cost.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// // sort people in descending order by age
+ /// let people = vec![("Jane", 20), ("John", 18), ("Jill", 30), ("Jack", 27)];
+ ///
+ /// let oldest_people_first = people
+ /// .into_iter()
+ /// .sorted_unstable_by_key(|x| -x.1)
+ /// .map(|(person, _age)| person);
+ ///
+ /// itertools::assert_equal(oldest_people_first,
+ /// vec!["Jill", "Jack", "Jane", "John"]);
+ /// ```
+ #[cfg(feature = "use_alloc")]
+ fn sorted_unstable_by_key<K, F>(self, f: F) -> VecIntoIter<Self::Item>
+ where Self: Sized,
+ K: Ord,
+ F: FnMut(&Self::Item) -> K,
+ {
+ let mut v = Vec::from_iter(self);
+ v.sort_unstable_by_key(f);
+ v.into_iter()
+ }
+
+ /// Sort all iterator elements into a new iterator in ascending order.
+ ///
+ /// **Note:** This consumes the entire iterator, uses the
+ /// [`slice::sort`] method and returns the result as a new
+ /// iterator that owns its elements.
+ ///
+ /// The sorted iterator, if directly collected to a `Vec`, is converted
+ /// without any extra copying or allocation cost.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// // sort the letters of the text in ascending order
+ /// let text = "bdacfe";
+ /// itertools::assert_equal(text.chars().sorted(),
+ /// "abcdef".chars());
+ /// ```
+ #[cfg(feature = "use_alloc")]
+ fn sorted(self) -> VecIntoIter<Self::Item>
+ where Self: Sized,
+ Self::Item: Ord
+ {
+ // Use .sort() directly since it is not quite identical with
+ // .sort_by(Ord::cmp)
+ let mut v = Vec::from_iter(self);
+ v.sort();
+ v.into_iter()
+ }
+
+ /// Sort all iterator elements into a new iterator in ascending order.
+ ///
+ /// **Note:** This consumes the entire iterator, uses the
+ /// [`slice::sort_by`] method and returns the result as a new
+ /// iterator that owns its elements.
+ ///
+ /// The sorted iterator, if directly collected to a `Vec`, is converted
+ /// without any extra copying or allocation cost.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// // sort people in descending order by age
+ /// let people = vec![("Jane", 20), ("John", 18), ("Jill", 30), ("Jack", 27)];
+ ///
+ /// let oldest_people_first = people
+ /// .into_iter()
+ /// .sorted_by(|a, b| Ord::cmp(&b.1, &a.1))
+ /// .map(|(person, _age)| person);
+ ///
+ /// itertools::assert_equal(oldest_people_first,
+ /// vec!["Jill", "Jack", "Jane", "John"]);
+ /// ```
+ #[cfg(feature = "use_alloc")]
+ fn sorted_by<F>(self, cmp: F) -> VecIntoIter<Self::Item>
+ where Self: Sized,
+ F: FnMut(&Self::Item, &Self::Item) -> Ordering,
+ {
+ let mut v = Vec::from_iter(self);
+ v.sort_by(cmp);
+ v.into_iter()
+ }
+
+ /// Sort all iterator elements into a new iterator in ascending order.
+ ///
+ /// **Note:** This consumes the entire iterator, uses the
+ /// [`slice::sort_by_key`] method and returns the result as a new
+ /// iterator that owns its elements.
+ ///
+ /// The sorted iterator, if directly collected to a `Vec`, is converted
+ /// without any extra copying or allocation cost.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// // sort people in descending order by age
+ /// let people = vec![("Jane", 20), ("John", 18), ("Jill", 30), ("Jack", 27)];
+ ///
+ /// let oldest_people_first = people
+ /// .into_iter()
+ /// .sorted_by_key(|x| -x.1)
+ /// .map(|(person, _age)| person);
+ ///
+ /// itertools::assert_equal(oldest_people_first,
+ /// vec!["Jill", "Jack", "Jane", "John"]);
+ /// ```
+ #[cfg(feature = "use_alloc")]
+ fn sorted_by_key<K, F>(self, f: F) -> VecIntoIter<Self::Item>
+ where Self: Sized,
+ K: Ord,
+ F: FnMut(&Self::Item) -> K,
+ {
+ let mut v = Vec::from_iter(self);
+ v.sort_by_key(f);
+ v.into_iter()
+ }
+
+ /// Sort all iterator elements into a new iterator in ascending order. The key function is
+ /// called exactly once per key.
+ ///
+ /// **Note:** This consumes the entire iterator, uses the
+ /// [`slice::sort_by_cached_key`] method and returns the result as a new
+ /// iterator that owns its elements.
+ ///
+ /// The sorted iterator, if directly collected to a `Vec`, is converted
+ /// without any extra copying or allocation cost.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// // sort people in descending order by age
+ /// let people = vec![("Jane", 20), ("John", 18), ("Jill", 30), ("Jack", 27)];
+ ///
+ /// let oldest_people_first = people
+ /// .into_iter()
+ /// .sorted_by_cached_key(|x| -x.1)
+ /// .map(|(person, _age)| person);
+ ///
+ /// itertools::assert_equal(oldest_people_first,
+ /// vec!["Jill", "Jack", "Jane", "John"]);
+ /// ```
+ #[cfg(feature = "use_alloc")]
+ fn sorted_by_cached_key<K, F>(self, f: F) -> VecIntoIter<Self::Item>
+ where
+ Self: Sized,
+ K: Ord,
+ F: FnMut(&Self::Item) -> K,
+ {
+ let mut v = Vec::from_iter(self);
+ v.sort_by_cached_key(f);
+ v.into_iter()
+ }
+
+ /// Sort the k smallest elements into a new iterator, in ascending order.
+ ///
+ /// **Note:** This consumes the entire iterator, and returns the result
+ /// as a new iterator that owns its elements. If the input contains
+ /// less than k elements, the result is equivalent to `self.sorted()`.
+ ///
+ /// This is guaranteed to use `k * sizeof(Self::Item) + O(1)` memory
+ /// and `O(n log k)` time, with `n` the number of elements in the input.
+ ///
+ /// The sorted iterator, if directly collected to a `Vec`, is converted
+ /// without any extra copying or allocation cost.
+ ///
+ /// **Note:** This is functionally-equivalent to `self.sorted().take(k)`
+ /// but much more efficient.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// // A random permutation of 0..15
+ /// let numbers = vec![6, 9, 1, 14, 0, 4, 8, 7, 11, 2, 10, 3, 13, 12, 5];
+ ///
+ /// let five_smallest = numbers
+ /// .into_iter()
+ /// .k_smallest(5);
+ ///
+ /// itertools::assert_equal(five_smallest, 0..5);
+ /// ```
+ #[cfg(feature = "use_alloc")]
+ fn k_smallest(self, k: usize) -> VecIntoIter<Self::Item>
+ where Self: Sized,
+ Self::Item: Ord
+ {
+ crate::k_smallest::k_smallest(self, k)
+ .into_sorted_vec()
+ .into_iter()
+ }
+
+ /// Collect all iterator elements into one of two
+ /// partitions. Unlike [`Iterator::partition`], each partition may
+ /// have a distinct type.
+ ///
+ /// ```
+ /// use itertools::{Itertools, Either};
+ ///
+ /// let successes_and_failures = vec![Ok(1), Err(false), Err(true), Ok(2)];
+ ///
+ /// let (successes, failures): (Vec<_>, Vec<_>) = successes_and_failures
+ /// .into_iter()
+ /// .partition_map(|r| {
+ /// match r {
+ /// Ok(v) => Either::Left(v),
+ /// Err(v) => Either::Right(v),
+ /// }
+ /// });
+ ///
+ /// assert_eq!(successes, [1, 2]);
+ /// assert_eq!(failures, [false, true]);
+ /// ```
+ fn partition_map<A, B, F, L, R>(self, mut predicate: F) -> (A, B)
+ where Self: Sized,
+ F: FnMut(Self::Item) -> Either<L, R>,
+ A: Default + Extend<L>,
+ B: Default + Extend<R>,
+ {
+ let mut left = A::default();
+ let mut right = B::default();
+
+ self.for_each(|val| match predicate(val) {
+ Either::Left(v) => left.extend(Some(v)),
+ Either::Right(v) => right.extend(Some(v)),
+ });
+
+ (left, right)
+ }
+
+ /// Partition a sequence of `Result`s into one list of all the `Ok` elements
+ /// and another list of all the `Err` elements.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let successes_and_failures = vec![Ok(1), Err(false), Err(true), Ok(2)];
+ ///
+ /// let (successes, failures): (Vec<_>, Vec<_>) = successes_and_failures
+ /// .into_iter()
+ /// .partition_result();
+ ///
+ /// assert_eq!(successes, [1, 2]);
+ /// assert_eq!(failures, [false, true]);
+ /// ```
+ fn partition_result<A, B, T, E>(self) -> (A, B)
+ where
+ Self: Iterator<Item = Result<T, E>> + Sized,
+ A: Default + Extend<T>,
+ B: Default + Extend<E>,
+ {
+ self.partition_map(|r| match r {
+ Ok(v) => Either::Left(v),
+ Err(v) => Either::Right(v),
+ })
+ }
+
+ /// Return a `HashMap` of keys mapped to `Vec`s of values. Keys and values
+ /// are taken from `(Key, Value)` tuple pairs yielded by the input iterator.
+ ///
+ /// Essentially a shorthand for `.into_grouping_map().collect::<Vec<_>>()`.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let data = vec![(0, 10), (2, 12), (3, 13), (0, 20), (3, 33), (2, 42)];
+ /// let lookup = data.into_iter().into_group_map();
+ ///
+ /// assert_eq!(lookup[&0], vec![10, 20]);
+ /// assert_eq!(lookup.get(&1), None);
+ /// assert_eq!(lookup[&2], vec![12, 42]);
+ /// assert_eq!(lookup[&3], vec![13, 33]);
+ /// ```
+ #[cfg(feature = "use_std")]
+ fn into_group_map<K, V>(self) -> HashMap<K, Vec<V>>
+ where Self: Iterator<Item=(K, V)> + Sized,
+ K: Hash + Eq,
+ {
+ group_map::into_group_map(self)
+ }
+
+ /// Return an `Iterator` on a `HashMap`. Keys mapped to `Vec`s of values. The key is specified
+ /// in the closure.
+ ///
+ /// Essentially a shorthand for `.into_grouping_map_by(f).collect::<Vec<_>>()`.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ /// use std::collections::HashMap;
+ ///
+ /// let data = vec![(0, 10), (2, 12), (3, 13), (0, 20), (3, 33), (2, 42)];
+ /// let lookup: HashMap<u32,Vec<(u32, u32)>> =
+ /// data.clone().into_iter().into_group_map_by(|a| a.0);
+ ///
+ /// assert_eq!(lookup[&0], vec![(0,10),(0,20)]);
+ /// assert_eq!(lookup.get(&1), None);
+ /// assert_eq!(lookup[&2], vec![(2,12), (2,42)]);
+ /// assert_eq!(lookup[&3], vec![(3,13), (3,33)]);
+ ///
+ /// assert_eq!(
+ /// data.into_iter()
+ /// .into_group_map_by(|x| x.0)
+ /// .into_iter()
+ /// .map(|(key, values)| (key, values.into_iter().fold(0,|acc, (_,v)| acc + v )))
+ /// .collect::<HashMap<u32,u32>>()[&0],
+ /// 30,
+ /// );
+ /// ```
+ #[cfg(feature = "use_std")]
+ fn into_group_map_by<K, V, F>(self, f: F) -> HashMap<K, Vec<V>>
+ where
+ Self: Iterator<Item=V> + Sized,
+ K: Hash + Eq,
+ F: Fn(&V) -> K,
+ {
+ group_map::into_group_map_by(self, f)
+ }
+
+ /// Constructs a `GroupingMap` to be used later with one of the efficient
+ /// group-and-fold operations it allows to perform.
+ ///
+ /// The input iterator must yield item in the form of `(K, V)` where the
+ /// value of type `K` will be used as key to identify the groups and the
+ /// value of type `V` as value for the folding operation.
+ ///
+ /// See [`GroupingMap`] for more informations
+ /// on what operations are available.
+ #[cfg(feature = "use_std")]
+ fn into_grouping_map<K, V>(self) -> GroupingMap<Self>
+ where Self: Iterator<Item=(K, V)> + Sized,
+ K: Hash + Eq,
+ {
+ grouping_map::new(self)
+ }
+
+ /// Constructs a `GroupingMap` to be used later with one of the efficient
+ /// group-and-fold operations it allows to perform.
+ ///
+ /// The values from this iterator will be used as values for the folding operation
+ /// while the keys will be obtained from the values by calling `key_mapper`.
+ ///
+ /// See [`GroupingMap`] for more informations
+ /// on what operations are available.
+ #[cfg(feature = "use_std")]
+ fn into_grouping_map_by<K, V, F>(self, key_mapper: F) -> GroupingMapBy<Self, F>
+ where Self: Iterator<Item=V> + Sized,
+ K: Hash + Eq,
+ F: FnMut(&V) -> K
+ {
+ grouping_map::new(grouping_map::MapForGrouping::new(self, key_mapper))
+ }
+
+ /// Return all minimum elements of an iterator.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let a: [i32; 0] = [];
+ /// assert_eq!(a.iter().min_set(), Vec::<&i32>::new());
+ ///
+ /// let a = [1];
+ /// assert_eq!(a.iter().min_set(), vec![&1]);
+ ///
+ /// let a = [1, 2, 3, 4, 5];
+ /// assert_eq!(a.iter().min_set(), vec![&1]);
+ ///
+ /// let a = [1, 1, 1, 1];
+ /// assert_eq!(a.iter().min_set(), vec![&1, &1, &1, &1]);
+ /// ```
+ ///
+ /// The elements can be floats but no particular result is guaranteed
+ /// if an element is NaN.
+ #[cfg(feature = "use_std")]
+ fn min_set(self) -> Vec<Self::Item>
+ where Self: Sized, Self::Item: Ord
+ {
+ extrema_set::min_set_impl(self, |_| (), |x, y, _, _| x.cmp(y))
+ }
+
+ /// Return all minimum elements of an iterator, as determined by
+ /// the specified function.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use std::cmp::Ordering;
+ /// use itertools::Itertools;
+ ///
+ /// let a: [(i32, i32); 0] = [];
+ /// assert_eq!(a.iter().min_set_by(|_, _| Ordering::Equal), Vec::<&(i32, i32)>::new());
+ ///
+ /// let a = [(1, 2)];
+ /// assert_eq!(a.iter().min_set_by(|&&(k1,_), &&(k2, _)| k1.cmp(&k2)), vec![&(1, 2)]);
+ ///
+ /// let a = [(1, 2), (2, 2), (3, 9), (4, 8), (5, 9)];
+ /// assert_eq!(a.iter().min_set_by(|&&(_,k1), &&(_,k2)| k1.cmp(&k2)), vec![&(1, 2), &(2, 2)]);
+ ///
+ /// let a = [(1, 2), (1, 3), (1, 4), (1, 5)];
+ /// assert_eq!(a.iter().min_set_by(|&&(k1,_), &&(k2, _)| k1.cmp(&k2)), vec![&(1, 2), &(1, 3), &(1, 4), &(1, 5)]);
+ /// ```
+ ///
+ /// The elements can be floats but no particular result is guaranteed
+ /// if an element is NaN.
+ #[cfg(feature = "use_std")]
+ fn min_set_by<F>(self, mut compare: F) -> Vec<Self::Item>
+ where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Ordering
+ {
+ extrema_set::min_set_impl(
+ self,
+ |_| (),
+ |x, y, _, _| compare(x, y)
+ )
+ }
+
+ /// Return all minimum elements of an iterator, as determined by
+ /// the specified function.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let a: [(i32, i32); 0] = [];
+ /// assert_eq!(a.iter().min_set_by_key(|_| ()), Vec::<&(i32, i32)>::new());
+ ///
+ /// let a = [(1, 2)];
+ /// assert_eq!(a.iter().min_set_by_key(|&&(k,_)| k), vec![&(1, 2)]);
+ ///
+ /// let a = [(1, 2), (2, 2), (3, 9), (4, 8), (5, 9)];
+ /// assert_eq!(a.iter().min_set_by_key(|&&(_, k)| k), vec![&(1, 2), &(2, 2)]);
+ ///
+ /// let a = [(1, 2), (1, 3), (1, 4), (1, 5)];
+ /// assert_eq!(a.iter().min_set_by_key(|&&(k, _)| k), vec![&(1, 2), &(1, 3), &(1, 4), &(1, 5)]);
+ /// ```
+ ///
+ /// The elements can be floats but no particular result is guaranteed
+ /// if an element is NaN.
+ #[cfg(feature = "use_std")]
+ fn min_set_by_key<K, F>(self, key: F) -> Vec<Self::Item>
+ where Self: Sized, K: Ord, F: FnMut(&Self::Item) -> K
+ {
+ extrema_set::min_set_impl(self, key, |_, _, kx, ky| kx.cmp(ky))
+ }
+
+ /// Return all maximum elements of an iterator.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let a: [i32; 0] = [];
+ /// assert_eq!(a.iter().max_set(), Vec::<&i32>::new());
+ ///
+ /// let a = [1];
+ /// assert_eq!(a.iter().max_set(), vec![&1]);
+ ///
+ /// let a = [1, 2, 3, 4, 5];
+ /// assert_eq!(a.iter().max_set(), vec![&5]);
+ ///
+ /// let a = [1, 1, 1, 1];
+ /// assert_eq!(a.iter().max_set(), vec![&1, &1, &1, &1]);
+ /// ```
+ ///
+ /// The elements can be floats but no particular result is guaranteed
+ /// if an element is NaN.
+ #[cfg(feature = "use_std")]
+ fn max_set(self) -> Vec<Self::Item>
+ where Self: Sized, Self::Item: Ord
+ {
+ extrema_set::max_set_impl(self, |_| (), |x, y, _, _| x.cmp(y))
+ }
+
+ /// Return all maximum elements of an iterator, as determined by
+ /// the specified function.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use std::cmp::Ordering;
+ /// use itertools::Itertools;
+ ///
+ /// let a: [(i32, i32); 0] = [];
+ /// assert_eq!(a.iter().max_set_by(|_, _| Ordering::Equal), Vec::<&(i32, i32)>::new());
+ ///
+ /// let a = [(1, 2)];
+ /// assert_eq!(a.iter().max_set_by(|&&(k1,_), &&(k2, _)| k1.cmp(&k2)), vec![&(1, 2)]);
+ ///
+ /// let a = [(1, 2), (2, 2), (3, 9), (4, 8), (5, 9)];
+ /// assert_eq!(a.iter().max_set_by(|&&(_,k1), &&(_,k2)| k1.cmp(&k2)), vec![&(3, 9), &(5, 9)]);
+ ///
+ /// let a = [(1, 2), (1, 3), (1, 4), (1, 5)];
+ /// assert_eq!(a.iter().max_set_by(|&&(k1,_), &&(k2, _)| k1.cmp(&k2)), vec![&(1, 2), &(1, 3), &(1, 4), &(1, 5)]);
+ /// ```
+ ///
+ /// The elements can be floats but no particular result is guaranteed
+ /// if an element is NaN.
+ #[cfg(feature = "use_std")]
+ fn max_set_by<F>(self, mut compare: F) -> Vec<Self::Item>
+ where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Ordering
+ {
+ extrema_set::max_set_impl(
+ self,
+ |_| (),
+ |x, y, _, _| compare(x, y)
+ )
+ }
+
+ /// Return all minimum elements of an iterator, as determined by
+ /// the specified function.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let a: [(i32, i32); 0] = [];
+ /// assert_eq!(a.iter().max_set_by_key(|_| ()), Vec::<&(i32, i32)>::new());
+ ///
+ /// let a = [(1, 2)];
+ /// assert_eq!(a.iter().max_set_by_key(|&&(k,_)| k), vec![&(1, 2)]);
+ ///
+ /// let a = [(1, 2), (2, 2), (3, 9), (4, 8), (5, 9)];
+ /// assert_eq!(a.iter().max_set_by_key(|&&(_, k)| k), vec![&(3, 9), &(5, 9)]);
+ ///
+ /// let a = [(1, 2), (1, 3), (1, 4), (1, 5)];
+ /// assert_eq!(a.iter().max_set_by_key(|&&(k, _)| k), vec![&(1, 2), &(1, 3), &(1, 4), &(1, 5)]);
+ /// ```
+ ///
+ /// The elements can be floats but no particular result is guaranteed
+ /// if an element is NaN.
+ #[cfg(feature = "use_std")]
+ fn max_set_by_key<K, F>(self, key: F) -> Vec<Self::Item>
+ where Self: Sized, K: Ord, F: FnMut(&Self::Item) -> K
+ {
+ extrema_set::max_set_impl(self, key, |_, _, kx, ky| kx.cmp(ky))
+ }
+
+ /// Return the minimum and maximum elements in the iterator.
+ ///
+ /// The return type `MinMaxResult` is an enum of three variants:
+ ///
+ /// - `NoElements` if the iterator is empty.
+ /// - `OneElement(x)` if the iterator has exactly one element.
+ /// - `MinMax(x, y)` is returned otherwise, where `x <= y`. Two
+ /// values are equal if and only if there is more than one
+ /// element in the iterator and all elements are equal.
+ ///
+ /// On an iterator of length `n`, `minmax` does `1.5 * n` comparisons,
+ /// and so is faster than calling `min` and `max` separately which does
+ /// `2 * n` comparisons.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ /// use itertools::MinMaxResult::{NoElements, OneElement, MinMax};
+ ///
+ /// let a: [i32; 0] = [];
+ /// assert_eq!(a.iter().minmax(), NoElements);
+ ///
+ /// let a = [1];
+ /// assert_eq!(a.iter().minmax(), OneElement(&1));
+ ///
+ /// let a = [1, 2, 3, 4, 5];
+ /// assert_eq!(a.iter().minmax(), MinMax(&1, &5));
+ ///
+ /// let a = [1, 1, 1, 1];
+ /// assert_eq!(a.iter().minmax(), MinMax(&1, &1));
+ /// ```
+ ///
+ /// The elements can be floats but no particular result is guaranteed
+ /// if an element is NaN.
+ fn minmax(self) -> MinMaxResult<Self::Item>
+ where Self: Sized, Self::Item: PartialOrd
+ {
+ minmax::minmax_impl(self, |_| (), |x, y, _, _| x < y)
+ }
+
+ /// Return the minimum and maximum element of an iterator, as determined by
+ /// the specified function.
+ ///
+ /// The return value is a variant of [`MinMaxResult`] like for [`.minmax()`](Itertools::minmax).
+ ///
+ /// For the minimum, the first minimal element is returned. For the maximum,
+ /// the last maximal element wins. This matches the behavior of the standard
+ /// [`Iterator::min`] and [`Iterator::max`] methods.
+ ///
+ /// The keys can be floats but no particular result is guaranteed
+ /// if a key is NaN.
+ fn minmax_by_key<K, F>(self, key: F) -> MinMaxResult<Self::Item>
+ where Self: Sized, K: PartialOrd, F: FnMut(&Self::Item) -> K
+ {
+ minmax::minmax_impl(self, key, |_, _, xk, yk| xk < yk)
+ }
+
+ /// Return the minimum and maximum element of an iterator, as determined by
+ /// the specified comparison function.
+ ///
+ /// The return value is a variant of [`MinMaxResult`] like for [`.minmax()`](Itertools::minmax).
+ ///
+ /// For the minimum, the first minimal element is returned. For the maximum,
+ /// the last maximal element wins. This matches the behavior of the standard
+ /// [`Iterator::min`] and [`Iterator::max`] methods.
+ fn minmax_by<F>(self, mut compare: F) -> MinMaxResult<Self::Item>
+ where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Ordering
+ {
+ minmax::minmax_impl(
+ self,
+ |_| (),
+ |x, y, _, _| Ordering::Less == compare(x, y)
+ )
+ }
+
+ /// Return the position of the maximum element in the iterator.
+ ///
+ /// If several elements are equally maximum, the position of the
+ /// last of them is returned.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let a: [i32; 0] = [];
+ /// assert_eq!(a.iter().position_max(), None);
+ ///
+ /// let a = [-3, 0, 1, 5, -10];
+ /// assert_eq!(a.iter().position_max(), Some(3));
+ ///
+ /// let a = [1, 1, -1, -1];
+ /// assert_eq!(a.iter().position_max(), Some(1));
+ /// ```
+ fn position_max(self) -> Option<usize>
+ where Self: Sized, Self::Item: Ord
+ {
+ self.enumerate()
+ .max_by(|x, y| Ord::cmp(&x.1, &y.1))
+ .map(|x| x.0)
+ }
+
+ /// Return the position of the maximum element in the iterator, as
+ /// determined by the specified function.
+ ///
+ /// If several elements are equally maximum, the position of the
+ /// last of them is returned.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let a: [i32; 0] = [];
+ /// assert_eq!(a.iter().position_max_by_key(|x| x.abs()), None);
+ ///
+ /// let a = [-3_i32, 0, 1, 5, -10];
+ /// assert_eq!(a.iter().position_max_by_key(|x| x.abs()), Some(4));
+ ///
+ /// let a = [1_i32, 1, -1, -1];
+ /// assert_eq!(a.iter().position_max_by_key(|x| x.abs()), Some(3));
+ /// ```
+ fn position_max_by_key<K, F>(self, mut key: F) -> Option<usize>
+ where Self: Sized, K: Ord, F: FnMut(&Self::Item) -> K
+ {
+ self.enumerate()
+ .max_by(|x, y| Ord::cmp(&key(&x.1), &key(&y.1)))
+ .map(|x| x.0)
+ }
+
+ /// Return the position of the maximum element in the iterator, as
+ /// determined by the specified comparison function.
+ ///
+ /// If several elements are equally maximum, the position of the
+ /// last of them is returned.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let a: [i32; 0] = [];
+ /// assert_eq!(a.iter().position_max_by(|x, y| x.cmp(y)), None);
+ ///
+ /// let a = [-3_i32, 0, 1, 5, -10];
+ /// assert_eq!(a.iter().position_max_by(|x, y| x.cmp(y)), Some(3));
+ ///
+ /// let a = [1_i32, 1, -1, -1];
+ /// assert_eq!(a.iter().position_max_by(|x, y| x.cmp(y)), Some(1));
+ /// ```
+ fn position_max_by<F>(self, mut compare: F) -> Option<usize>
+ where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Ordering
+ {
+ self.enumerate()
+ .max_by(|x, y| compare(&x.1, &y.1))
+ .map(|x| x.0)
+ }
+
+ /// Return the position of the minimum element in the iterator.
+ ///
+ /// If several elements are equally minimum, the position of the
+ /// first of them is returned.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let a: [i32; 0] = [];
+ /// assert_eq!(a.iter().position_min(), None);
+ ///
+ /// let a = [-3, 0, 1, 5, -10];
+ /// assert_eq!(a.iter().position_min(), Some(4));
+ ///
+ /// let a = [1, 1, -1, -1];
+ /// assert_eq!(a.iter().position_min(), Some(2));
+ /// ```
+ fn position_min(self) -> Option<usize>
+ where Self: Sized, Self::Item: Ord
+ {
+ self.enumerate()
+ .min_by(|x, y| Ord::cmp(&x.1, &y.1))
+ .map(|x| x.0)
+ }
+
+ /// Return the position of the minimum element in the iterator, as
+ /// determined by the specified function.
+ ///
+ /// If several elements are equally minimum, the position of the
+ /// first of them is returned.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let a: [i32; 0] = [];
+ /// assert_eq!(a.iter().position_min_by_key(|x| x.abs()), None);
+ ///
+ /// let a = [-3_i32, 0, 1, 5, -10];
+ /// assert_eq!(a.iter().position_min_by_key(|x| x.abs()), Some(1));
+ ///
+ /// let a = [1_i32, 1, -1, -1];
+ /// assert_eq!(a.iter().position_min_by_key(|x| x.abs()), Some(0));
+ /// ```
+ fn position_min_by_key<K, F>(self, mut key: F) -> Option<usize>
+ where Self: Sized, K: Ord, F: FnMut(&Self::Item) -> K
+ {
+ self.enumerate()
+ .min_by(|x, y| Ord::cmp(&key(&x.1), &key(&y.1)))
+ .map(|x| x.0)
+ }
+
+ /// Return the position of the minimum element in the iterator, as
+ /// determined by the specified comparison function.
+ ///
+ /// If several elements are equally minimum, the position of the
+ /// first of them is returned.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let a: [i32; 0] = [];
+ /// assert_eq!(a.iter().position_min_by(|x, y| x.cmp(y)), None);
+ ///
+ /// let a = [-3_i32, 0, 1, 5, -10];
+ /// assert_eq!(a.iter().position_min_by(|x, y| x.cmp(y)), Some(4));
+ ///
+ /// let a = [1_i32, 1, -1, -1];
+ /// assert_eq!(a.iter().position_min_by(|x, y| x.cmp(y)), Some(2));
+ /// ```
+ fn position_min_by<F>(self, mut compare: F) -> Option<usize>
+ where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Ordering
+ {
+ self.enumerate()
+ .min_by(|x, y| compare(&x.1, &y.1))
+ .map(|x| x.0)
+ }
+
+ /// Return the positions of the minimum and maximum elements in
+ /// the iterator.
+ ///
+ /// The return type [`MinMaxResult`] is an enum of three variants:
+ ///
+ /// - `NoElements` if the iterator is empty.
+ /// - `OneElement(xpos)` if the iterator has exactly one element.
+ /// - `MinMax(xpos, ypos)` is returned otherwise, where the
+ /// element at `xpos` ≤ the element at `ypos`. While the
+ /// referenced elements themselves may be equal, `xpos` cannot
+ /// be equal to `ypos`.
+ ///
+ /// On an iterator of length `n`, `position_minmax` does `1.5 * n`
+ /// comparisons, and so is faster than calling `position_min` and
+ /// `position_max` separately which does `2 * n` comparisons.
+ ///
+ /// For the minimum, if several elements are equally minimum, the
+ /// position of the first of them is returned. For the maximum, if
+ /// several elements are equally maximum, the position of the last
+ /// of them is returned.
+ ///
+ /// The elements can be floats but no particular result is
+ /// guaranteed if an element is NaN.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ /// use itertools::MinMaxResult::{NoElements, OneElement, MinMax};
+ ///
+ /// let a: [i32; 0] = [];
+ /// assert_eq!(a.iter().position_minmax(), NoElements);
+ ///
+ /// let a = [10];
+ /// assert_eq!(a.iter().position_minmax(), OneElement(0));
+ ///
+ /// let a = [-3, 0, 1, 5, -10];
+ /// assert_eq!(a.iter().position_minmax(), MinMax(4, 3));
+ ///
+ /// let a = [1, 1, -1, -1];
+ /// assert_eq!(a.iter().position_minmax(), MinMax(2, 1));
+ /// ```
+ fn position_minmax(self) -> MinMaxResult<usize>
+ where Self: Sized, Self::Item: PartialOrd
+ {
+ use crate::MinMaxResult::{NoElements, OneElement, MinMax};
+ match minmax::minmax_impl(self.enumerate(), |_| (), |x, y, _, _| x.1 < y.1) {
+ NoElements => NoElements,
+ OneElement(x) => OneElement(x.0),
+ MinMax(x, y) => MinMax(x.0, y.0),
+ }
+ }
+
+ /// Return the postions of the minimum and maximum elements of an
+ /// iterator, as determined by the specified function.
+ ///
+ /// The return value is a variant of [`MinMaxResult`] like for
+ /// [`position_minmax`].
+ ///
+ /// For the minimum, if several elements are equally minimum, the
+ /// position of the first of them is returned. For the maximum, if
+ /// several elements are equally maximum, the position of the last
+ /// of them is returned.
+ ///
+ /// The keys can be floats but no particular result is guaranteed
+ /// if a key is NaN.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ /// use itertools::MinMaxResult::{NoElements, OneElement, MinMax};
+ ///
+ /// let a: [i32; 0] = [];
+ /// assert_eq!(a.iter().position_minmax_by_key(|x| x.abs()), NoElements);
+ ///
+ /// let a = [10_i32];
+ /// assert_eq!(a.iter().position_minmax_by_key(|x| x.abs()), OneElement(0));
+ ///
+ /// let a = [-3_i32, 0, 1, 5, -10];
+ /// assert_eq!(a.iter().position_minmax_by_key(|x| x.abs()), MinMax(1, 4));
+ ///
+ /// let a = [1_i32, 1, -1, -1];
+ /// assert_eq!(a.iter().position_minmax_by_key(|x| x.abs()), MinMax(0, 3));
+ /// ```
+ ///
+ /// [`position_minmax`]: Self::position_minmax
+ fn position_minmax_by_key<K, F>(self, mut key: F) -> MinMaxResult<usize>
+ where Self: Sized, K: PartialOrd, F: FnMut(&Self::Item) -> K
+ {
+ use crate::MinMaxResult::{NoElements, OneElement, MinMax};
+ match self.enumerate().minmax_by_key(|e| key(&e.1)) {
+ NoElements => NoElements,
+ OneElement(x) => OneElement(x.0),
+ MinMax(x, y) => MinMax(x.0, y.0),
+ }
+ }
+
+ /// Return the postions of the minimum and maximum elements of an
+ /// iterator, as determined by the specified comparison function.
+ ///
+ /// The return value is a variant of [`MinMaxResult`] like for
+ /// [`position_minmax`].
+ ///
+ /// For the minimum, if several elements are equally minimum, the
+ /// position of the first of them is returned. For the maximum, if
+ /// several elements are equally maximum, the position of the last
+ /// of them is returned.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ /// use itertools::MinMaxResult::{NoElements, OneElement, MinMax};
+ ///
+ /// let a: [i32; 0] = [];
+ /// assert_eq!(a.iter().position_minmax_by(|x, y| x.cmp(y)), NoElements);
+ ///
+ /// let a = [10_i32];
+ /// assert_eq!(a.iter().position_minmax_by(|x, y| x.cmp(y)), OneElement(0));
+ ///
+ /// let a = [-3_i32, 0, 1, 5, -10];
+ /// assert_eq!(a.iter().position_minmax_by(|x, y| x.cmp(y)), MinMax(4, 3));
+ ///
+ /// let a = [1_i32, 1, -1, -1];
+ /// assert_eq!(a.iter().position_minmax_by(|x, y| x.cmp(y)), MinMax(2, 1));
+ /// ```
+ ///
+ /// [`position_minmax`]: Self::position_minmax
+ fn position_minmax_by<F>(self, mut compare: F) -> MinMaxResult<usize>
+ where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Ordering
+ {
+ use crate::MinMaxResult::{NoElements, OneElement, MinMax};
+ match self.enumerate().minmax_by(|x, y| compare(&x.1, &y.1)) {
+ NoElements => NoElements,
+ OneElement(x) => OneElement(x.0),
+ MinMax(x, y) => MinMax(x.0, y.0),
+ }
+ }
+
+ /// If the iterator yields exactly one element, that element will be returned, otherwise
+ /// an error will be returned containing an iterator that has the same output as the input
+ /// iterator.
+ ///
+ /// This provides an additional layer of validation over just calling `Iterator::next()`.
+ /// If your assumption that there should only be one element yielded is false this provides
+ /// the opportunity to detect and handle that, preventing errors at a distance.
+ ///
+ /// # Examples
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// assert_eq!((0..10).filter(|&x| x == 2).exactly_one().unwrap(), 2);
+ /// assert!((0..10).filter(|&x| x > 1 && x < 4).exactly_one().unwrap_err().eq(2..4));
+ /// assert!((0..10).filter(|&x| x > 1 && x < 5).exactly_one().unwrap_err().eq(2..5));
+ /// assert!((0..10).filter(|&_| false).exactly_one().unwrap_err().eq(0..0));
+ /// ```
+ fn exactly_one(mut self) -> Result<Self::Item, ExactlyOneError<Self>>
+ where
+ Self: Sized,
+ {
+ match self.next() {
+ Some(first) => {
+ match self.next() {
+ Some(second) => {
+ Err(ExactlyOneError::new(Some(Either::Left([first, second])), self))
+ }
+ None => {
+ Ok(first)
+ }
+ }
+ }
+ None => Err(ExactlyOneError::new(None, self)),
+ }
+ }
+
+ /// If the iterator yields no elements, Ok(None) will be returned. If the iterator yields
+ /// exactly one element, that element will be returned, otherwise an error will be returned
+ /// containing an iterator that has the same output as the input iterator.
+ ///
+ /// This provides an additional layer of validation over just calling `Iterator::next()`.
+ /// If your assumption that there should be at most one element yielded is false this provides
+ /// the opportunity to detect and handle that, preventing errors at a distance.
+ ///
+ /// # Examples
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// assert_eq!((0..10).filter(|&x| x == 2).at_most_one().unwrap(), Some(2));
+ /// assert!((0..10).filter(|&x| x > 1 && x < 4).at_most_one().unwrap_err().eq(2..4));
+ /// assert!((0..10).filter(|&x| x > 1 && x < 5).at_most_one().unwrap_err().eq(2..5));
+ /// assert_eq!((0..10).filter(|&_| false).at_most_one().unwrap(), None);
+ /// ```
+ fn at_most_one(mut self) -> Result<Option<Self::Item>, ExactlyOneError<Self>>
+ where
+ Self: Sized,
+ {
+ match self.next() {
+ Some(first) => {
+ match self.next() {
+ Some(second) => {
+ Err(ExactlyOneError::new(Some(Either::Left([first, second])), self))
+ }
+ None => {
+ Ok(Some(first))
+ }
+ }
+ }
+ None => Ok(None),
+ }
+ }
+
+ /// An iterator adaptor that allows the user to peek at multiple `.next()`
+ /// values without advancing the base iterator.
+ ///
+ /// # Examples
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let mut iter = (0..10).multipeek();
+ /// assert_eq!(iter.peek(), Some(&0));
+ /// assert_eq!(iter.peek(), Some(&1));
+ /// assert_eq!(iter.peek(), Some(&2));
+ /// assert_eq!(iter.next(), Some(0));
+ /// assert_eq!(iter.peek(), Some(&1));
+ /// ```
+ #[cfg(feature = "use_alloc")]
+ fn multipeek(self) -> MultiPeek<Self>
+ where
+ Self: Sized,
+ {
+ multipeek_impl::multipeek(self)
+ }
+
+ /// Collect the items in this iterator and return a `HashMap` which
+ /// contains each item that appears in the iterator and the number
+ /// of times it appears.
+ ///
+ /// # Examples
+ /// ```
+ /// # use itertools::Itertools;
+ /// let counts = [1, 1, 1, 3, 3, 5].into_iter().counts();
+ /// assert_eq!(counts[&1], 3);
+ /// assert_eq!(counts[&3], 2);
+ /// assert_eq!(counts[&5], 1);
+ /// assert_eq!(counts.get(&0), None);
+ /// ```
+ #[cfg(feature = "use_std")]
+ fn counts(self) -> HashMap<Self::Item, usize>
+ where
+ Self: Sized,
+ Self::Item: Eq + Hash,
+ {
+ let mut counts = HashMap::new();
+ self.for_each(|item| *counts.entry(item).or_default() += 1);
+ counts
+ }
+
+ /// Collect the items in this iterator and return a `HashMap` which
+ /// contains each item that appears in the iterator and the number
+ /// of times it appears,
+ /// determining identity using a keying function.
+ ///
+ /// ```
+ /// # use itertools::Itertools;
+ /// struct Character {
+ /// first_name: &'static str,
+ /// last_name: &'static str,
+ /// }
+ ///
+ /// let characters =
+ /// vec![
+ /// Character { first_name: "Amy", last_name: "Pond" },
+ /// Character { first_name: "Amy", last_name: "Wong" },
+ /// Character { first_name: "Amy", last_name: "Santiago" },
+ /// Character { first_name: "James", last_name: "Bond" },
+ /// Character { first_name: "James", last_name: "Sullivan" },
+ /// Character { first_name: "James", last_name: "Norington" },
+ /// Character { first_name: "James", last_name: "Kirk" },
+ /// ];
+ ///
+ /// let first_name_frequency =
+ /// characters
+ /// .into_iter()
+ /// .counts_by(|c| c.first_name);
+ ///
+ /// assert_eq!(first_name_frequency["Amy"], 3);
+ /// assert_eq!(first_name_frequency["James"], 4);
+ /// assert_eq!(first_name_frequency.contains_key("Asha"), false);
+ /// ```
+ #[cfg(feature = "use_std")]
+ fn counts_by<K, F>(self, f: F) -> HashMap<K, usize>
+ where
+ Self: Sized,
+ K: Eq + Hash,
+ F: FnMut(Self::Item) -> K,
+ {
+ self.map(f).counts()
+ }
+
+ /// Converts an iterator of tuples into a tuple of containers.
+ ///
+ /// `unzip()` consumes an entire iterator of n-ary tuples, producing `n` collections, one for each
+ /// column.
+ ///
+ /// This function is, in some sense, the opposite of [`multizip`].
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let inputs = vec![(1, 2, 3), (4, 5, 6), (7, 8, 9)];
+ ///
+ /// let (a, b, c): (Vec<_>, Vec<_>, Vec<_>) = inputs
+ /// .into_iter()
+ /// .multiunzip();
+ ///
+ /// assert_eq!(a, vec![1, 4, 7]);
+ /// assert_eq!(b, vec![2, 5, 8]);
+ /// assert_eq!(c, vec![3, 6, 9]);
+ /// ```
+ fn multiunzip<FromI>(self) -> FromI
+ where
+ Self: Sized + MultiUnzip<FromI>,
+ {
+ MultiUnzip::multiunzip(self)
+ }
+}
+
+impl<T: ?Sized> Itertools for T where T: Iterator { }
+
+/// Return `true` if both iterables produce equal sequences
+/// (elements pairwise equal and sequences of the same length),
+/// `false` otherwise.
+///
+/// [`IntoIterator`] enabled version of [`Iterator::eq`].
+///
+/// ```
+/// assert!(itertools::equal(vec![1, 2, 3], 1..4));
+/// assert!(!itertools::equal(&[0, 0], &[0, 0, 0]));
+/// ```
+pub fn equal<I, J>(a: I, b: J) -> bool
+ where I: IntoIterator,
+ J: IntoIterator,
+ I::Item: PartialEq<J::Item>
+{
+ a.into_iter().eq(b)
+}
+
+/// Assert that two iterables produce equal sequences, with the same
+/// semantics as [`equal(a, b)`](equal).
+///
+/// **Panics** on assertion failure with a message that shows the
+/// two iteration elements.
+///
+/// ```ignore
+/// assert_equal("exceed".split('c'), "excess".split('c'));
+/// // ^PANIC: panicked at 'Failed assertion Some("eed") == Some("ess") for iteration 1',
+/// ```
+pub fn assert_equal<I, J>(a: I, b: J)
+ where I: IntoIterator,
+ J: IntoIterator,
+ I::Item: fmt::Debug + PartialEq<J::Item>,
+ J::Item: fmt::Debug,
+{
+ let mut ia = a.into_iter();
+ let mut ib = b.into_iter();
+ let mut i = 0;
+ loop {
+ match (ia.next(), ib.next()) {
+ (None, None) => return,
+ (a, b) => {
+ let equal = match (&a, &b) {
+ (&Some(ref a), &Some(ref b)) => a == b,
+ _ => false,
+ };
+ assert!(equal, "Failed assertion {a:?} == {b:?} for iteration {i}",
+ i=i, a=a, b=b);
+ i += 1;
+ }
+ }
+ }
+}
+
+/// Partition a sequence using predicate `pred` so that elements
+/// that map to `true` are placed before elements which map to `false`.
+///
+/// The order within the partitions is arbitrary.
+///
+/// Return the index of the split point.
+///
+/// ```
+/// use itertools::partition;
+///
+/// # // use repeated numbers to not promise any ordering
+/// let mut data = [7, 1, 1, 7, 1, 1, 7];
+/// let split_index = partition(&mut data, |elt| *elt >= 3);
+///
+/// assert_eq!(data, [7, 7, 7, 1, 1, 1, 1]);
+/// assert_eq!(split_index, 3);
+/// ```
+pub fn partition<'a, A: 'a, I, F>(iter: I, mut pred: F) -> usize
+ where I: IntoIterator<Item = &'a mut A>,
+ I::IntoIter: DoubleEndedIterator,
+ F: FnMut(&A) -> bool
+{
+ let mut split_index = 0;
+ let mut iter = iter.into_iter();
+ 'main: while let Some(front) = iter.next() {
+ if !pred(front) {
+ loop {
+ match iter.next_back() {
+ Some(back) => if pred(back) {
+ std::mem::swap(front, back);
+ break;
+ },
+ None => break 'main,
+ }
+ }
+ }
+ split_index += 1;
+ }
+ split_index
+}
+
+/// An enum used for controlling the execution of `fold_while`.
+///
+/// See [`.fold_while()`](Itertools::fold_while) for more information.
+#[derive(Copy, Clone, Debug, Eq, PartialEq)]
+pub enum FoldWhile<T> {
+ /// Continue folding with this value
+ Continue(T),
+ /// Fold is complete and will return this value
+ Done(T),
+}
+
+impl<T> FoldWhile<T> {
+ /// Return the value in the continue or done.
+ pub fn into_inner(self) -> T {
+ match self {
+ FoldWhile::Continue(x) | FoldWhile::Done(x) => x,
+ }
+ }
+
+ /// Return true if `self` is `Done`, false if it is `Continue`.
+ pub fn is_done(&self) -> bool {
+ match *self {
+ FoldWhile::Continue(_) => false,
+ FoldWhile::Done(_) => true,
+ }
+ }
+}
diff --git a/vendor/itertools-0.10.5/src/merge_join.rs b/vendor/itertools-0.10.5/src/merge_join.rs
new file mode 100644
index 000000000..f2fbdea2c
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/merge_join.rs
@@ -0,0 +1,169 @@
+use std::cmp::Ordering;
+use std::iter::Fuse;
+use std::fmt;
+
+use super::adaptors::{PutBack, put_back};
+use crate::either_or_both::EitherOrBoth;
+#[cfg(doc)]
+use crate::Itertools;
+
+/// Return an iterator adaptor that merge-joins items from the two base iterators in ascending order.
+///
+/// [`IntoIterator`] enabled version of [`Itertools::merge_join_by`].
+pub fn merge_join_by<I, J, F>(left: I, right: J, cmp_fn: F)
+ -> MergeJoinBy<I::IntoIter, J::IntoIter, F>
+ where I: IntoIterator,
+ J: IntoIterator,
+ F: FnMut(&I::Item, &J::Item) -> Ordering
+{
+ MergeJoinBy {
+ left: put_back(left.into_iter().fuse()),
+ right: put_back(right.into_iter().fuse()),
+ cmp_fn,
+ }
+}
+
+/// An iterator adaptor that merge-joins items from the two base iterators in ascending order.
+///
+/// See [`.merge_join_by()`](crate::Itertools::merge_join_by) for more information.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct MergeJoinBy<I: Iterator, J: Iterator, F> {
+ left: PutBack<Fuse<I>>,
+ right: PutBack<Fuse<J>>,
+ cmp_fn: F
+}
+
+impl<I, J, F> Clone for MergeJoinBy<I, J, F>
+ where I: Iterator,
+ J: Iterator,
+ PutBack<Fuse<I>>: Clone,
+ PutBack<Fuse<J>>: Clone,
+ F: Clone,
+{
+ clone_fields!(left, right, cmp_fn);
+}
+
+impl<I, J, F> fmt::Debug for MergeJoinBy<I, J, F>
+ where I: Iterator + fmt::Debug,
+ I::Item: fmt::Debug,
+ J: Iterator + fmt::Debug,
+ J::Item: fmt::Debug,
+{
+ debug_fmt_fields!(MergeJoinBy, left, right);
+}
+
+impl<I, J, F> Iterator for MergeJoinBy<I, J, F>
+ where I: Iterator,
+ J: Iterator,
+ F: FnMut(&I::Item, &J::Item) -> Ordering
+{
+ type Item = EitherOrBoth<I::Item, J::Item>;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ match (self.left.next(), self.right.next()) {
+ (None, None) => None,
+ (Some(left), None) =>
+ Some(EitherOrBoth::Left(left)),
+ (None, Some(right)) =>
+ Some(EitherOrBoth::Right(right)),
+ (Some(left), Some(right)) => {
+ match (self.cmp_fn)(&left, &right) {
+ Ordering::Equal =>
+ Some(EitherOrBoth::Both(left, right)),
+ Ordering::Less => {
+ self.right.put_back(right);
+ Some(EitherOrBoth::Left(left))
+ },
+ Ordering::Greater => {
+ self.left.put_back(left);
+ Some(EitherOrBoth::Right(right))
+ }
+ }
+ }
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ let (a_lower, a_upper) = self.left.size_hint();
+ let (b_lower, b_upper) = self.right.size_hint();
+
+ let lower = ::std::cmp::max(a_lower, b_lower);
+
+ let upper = match (a_upper, b_upper) {
+ (Some(x), Some(y)) => x.checked_add(y),
+ _ => None,
+ };
+
+ (lower, upper)
+ }
+
+ fn count(mut self) -> usize {
+ let mut count = 0;
+ loop {
+ match (self.left.next(), self.right.next()) {
+ (None, None) => break count,
+ (Some(_left), None) => break count + 1 + self.left.into_parts().1.count(),
+ (None, Some(_right)) => break count + 1 + self.right.into_parts().1.count(),
+ (Some(left), Some(right)) => {
+ count += 1;
+ match (self.cmp_fn)(&left, &right) {
+ Ordering::Equal => {}
+ Ordering::Less => self.right.put_back(right),
+ Ordering::Greater => self.left.put_back(left),
+ }
+ }
+ }
+ }
+ }
+
+ fn last(mut self) -> Option<Self::Item> {
+ let mut previous_element = None;
+ loop {
+ match (self.left.next(), self.right.next()) {
+ (None, None) => break previous_element,
+ (Some(left), None) => {
+ break Some(EitherOrBoth::Left(
+ self.left.into_parts().1.last().unwrap_or(left),
+ ))
+ }
+ (None, Some(right)) => {
+ break Some(EitherOrBoth::Right(
+ self.right.into_parts().1.last().unwrap_or(right),
+ ))
+ }
+ (Some(left), Some(right)) => {
+ previous_element = match (self.cmp_fn)(&left, &right) {
+ Ordering::Equal => Some(EitherOrBoth::Both(left, right)),
+ Ordering::Less => {
+ self.right.put_back(right);
+ Some(EitherOrBoth::Left(left))
+ }
+ Ordering::Greater => {
+ self.left.put_back(left);
+ Some(EitherOrBoth::Right(right))
+ }
+ }
+ }
+ }
+ }
+ }
+
+ fn nth(&mut self, mut n: usize) -> Option<Self::Item> {
+ loop {
+ if n == 0 {
+ break self.next();
+ }
+ n -= 1;
+ match (self.left.next(), self.right.next()) {
+ (None, None) => break None,
+ (Some(_left), None) => break self.left.nth(n).map(EitherOrBoth::Left),
+ (None, Some(_right)) => break self.right.nth(n).map(EitherOrBoth::Right),
+ (Some(left), Some(right)) => match (self.cmp_fn)(&left, &right) {
+ Ordering::Equal => {}
+ Ordering::Less => self.right.put_back(right),
+ Ordering::Greater => self.left.put_back(left),
+ },
+ }
+ }
+ }
+}
diff --git a/vendor/itertools-0.10.5/src/minmax.rs b/vendor/itertools-0.10.5/src/minmax.rs
new file mode 100644
index 000000000..52b2f115d
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/minmax.rs
@@ -0,0 +1,115 @@
+
+/// `MinMaxResult` is an enum returned by `minmax`.
+///
+/// See [`.minmax()`](crate::Itertools::minmax) for more detail.
+#[derive(Copy, Clone, PartialEq, Debug)]
+pub enum MinMaxResult<T> {
+ /// Empty iterator
+ NoElements,
+
+ /// Iterator with one element, so the minimum and maximum are the same
+ OneElement(T),
+
+ /// More than one element in the iterator, the first element is not larger
+ /// than the second
+ MinMax(T, T)
+}
+
+impl<T: Clone> MinMaxResult<T> {
+ /// `into_option` creates an `Option` of type `(T, T)`. The returned `Option`
+ /// has variant `None` if and only if the `MinMaxResult` has variant
+ /// `NoElements`. Otherwise `Some((x, y))` is returned where `x <= y`.
+ /// If the `MinMaxResult` has variant `OneElement(x)`, performing this
+ /// operation will make one clone of `x`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use itertools::MinMaxResult::{self, NoElements, OneElement, MinMax};
+ ///
+ /// let r: MinMaxResult<i32> = NoElements;
+ /// assert_eq!(r.into_option(), None);
+ ///
+ /// let r = OneElement(1);
+ /// assert_eq!(r.into_option(), Some((1, 1)));
+ ///
+ /// let r = MinMax(1, 2);
+ /// assert_eq!(r.into_option(), Some((1, 2)));
+ /// ```
+ pub fn into_option(self) -> Option<(T,T)> {
+ match self {
+ MinMaxResult::NoElements => None,
+ MinMaxResult::OneElement(x) => Some((x.clone(), x)),
+ MinMaxResult::MinMax(x, y) => Some((x, y))
+ }
+ }
+}
+
+/// Implementation guts for `minmax` and `minmax_by_key`.
+pub fn minmax_impl<I, K, F, L>(mut it: I, mut key_for: F,
+ mut lt: L) -> MinMaxResult<I::Item>
+ where I: Iterator,
+ F: FnMut(&I::Item) -> K,
+ L: FnMut(&I::Item, &I::Item, &K, &K) -> bool,
+{
+ let (mut min, mut max, mut min_key, mut max_key) = match it.next() {
+ None => return MinMaxResult::NoElements,
+ Some(x) => {
+ match it.next() {
+ None => return MinMaxResult::OneElement(x),
+ Some(y) => {
+ let xk = key_for(&x);
+ let yk = key_for(&y);
+ if !lt(&y, &x, &yk, &xk) {(x, y, xk, yk)} else {(y, x, yk, xk)}
+ }
+ }
+ }
+ };
+
+ loop {
+ // `first` and `second` are the two next elements we want to look
+ // at. We first compare `first` and `second` (#1). The smaller one
+ // is then compared to current minimum (#2). The larger one is
+ // compared to current maximum (#3). This way we do 3 comparisons
+ // for 2 elements.
+ let first = match it.next() {
+ None => break,
+ Some(x) => x
+ };
+ let second = match it.next() {
+ None => {
+ let first_key = key_for(&first);
+ if lt(&first, &min, &first_key, &min_key) {
+ min = first;
+ } else if !lt(&first, &max, &first_key, &max_key) {
+ max = first;
+ }
+ break;
+ }
+ Some(x) => x
+ };
+ let first_key = key_for(&first);
+ let second_key = key_for(&second);
+ if !lt(&second, &first, &second_key, &first_key) {
+ if lt(&first, &min, &first_key, &min_key) {
+ min = first;
+ min_key = first_key;
+ }
+ if !lt(&second, &max, &second_key, &max_key) {
+ max = second;
+ max_key = second_key;
+ }
+ } else {
+ if lt(&second, &min, &second_key, &min_key) {
+ min = second;
+ min_key = second_key;
+ }
+ if !lt(&first, &max, &first_key, &max_key) {
+ max = first;
+ max_key = first_key;
+ }
+ }
+ }
+
+ MinMaxResult::MinMax(min, max)
+}
diff --git a/vendor/itertools-0.10.5/src/multipeek_impl.rs b/vendor/itertools-0.10.5/src/multipeek_impl.rs
new file mode 100644
index 000000000..8b49c695e
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/multipeek_impl.rs
@@ -0,0 +1,101 @@
+use std::iter::Fuse;
+use alloc::collections::VecDeque;
+use crate::size_hint;
+use crate::PeekingNext;
+#[cfg(doc)]
+use crate::Itertools;
+
+/// See [`multipeek()`] for more information.
+#[derive(Clone, Debug)]
+pub struct MultiPeek<I>
+ where I: Iterator
+{
+ iter: Fuse<I>,
+ buf: VecDeque<I::Item>,
+ index: usize,
+}
+
+/// An iterator adaptor that allows the user to peek at multiple `.next()`
+/// values without advancing the base iterator.
+///
+/// [`IntoIterator`] enabled version of [`Itertools::multipeek`].
+pub fn multipeek<I>(iterable: I) -> MultiPeek<I::IntoIter>
+ where I: IntoIterator
+{
+ MultiPeek {
+ iter: iterable.into_iter().fuse(),
+ buf: VecDeque::new(),
+ index: 0,
+ }
+}
+
+impl<I> MultiPeek<I>
+ where I: Iterator
+{
+ /// Reset the peeking “cursorâ€
+ pub fn reset_peek(&mut self) {
+ self.index = 0;
+ }
+}
+
+impl<I: Iterator> MultiPeek<I> {
+ /// Works exactly like `.next()` with the only difference that it doesn't
+ /// advance itself. `.peek()` can be called multiple times, to peek
+ /// further ahead.
+ /// When `.next()` is called, reset the peeking “cursorâ€.
+ pub fn peek(&mut self) -> Option<&I::Item> {
+ let ret = if self.index < self.buf.len() {
+ Some(&self.buf[self.index])
+ } else {
+ match self.iter.next() {
+ Some(x) => {
+ self.buf.push_back(x);
+ Some(&self.buf[self.index])
+ }
+ None => return None,
+ }
+ };
+
+ self.index += 1;
+ ret
+ }
+}
+
+impl<I> PeekingNext for MultiPeek<I>
+ where I: Iterator,
+{
+ fn peeking_next<F>(&mut self, accept: F) -> Option<Self::Item>
+ where F: FnOnce(&Self::Item) -> bool
+ {
+ if self.buf.is_empty() {
+ if let Some(r) = self.peek() {
+ if !accept(r) { return None }
+ }
+ } else if let Some(r) = self.buf.get(0) {
+ if !accept(r) { return None }
+ }
+ self.next()
+ }
+}
+
+impl<I> Iterator for MultiPeek<I>
+ where I: Iterator
+{
+ type Item = I::Item;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ self.index = 0;
+ self.buf.pop_front().or_else(|| self.iter.next())
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ size_hint::add_scalar(self.iter.size_hint(), self.buf.len())
+ }
+}
+
+// Same size
+impl<I> ExactSizeIterator for MultiPeek<I>
+ where I: ExactSizeIterator
+{}
+
+
diff --git a/vendor/itertools-0.10.5/src/pad_tail.rs b/vendor/itertools-0.10.5/src/pad_tail.rs
new file mode 100644
index 000000000..248a43243
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/pad_tail.rs
@@ -0,0 +1,96 @@
+use std::iter::{Fuse, FusedIterator};
+use crate::size_hint;
+
+/// An iterator adaptor that pads a sequence to a minimum length by filling
+/// missing elements using a closure.
+///
+/// Iterator element type is `I::Item`.
+///
+/// See [`.pad_using()`](crate::Itertools::pad_using) for more information.
+#[derive(Clone)]
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct PadUsing<I, F> {
+ iter: Fuse<I>,
+ min: usize,
+ pos: usize,
+ filler: F,
+}
+
+impl<I, F> std::fmt::Debug for PadUsing<I, F>
+where
+ I: std::fmt::Debug,
+{
+ debug_fmt_fields!(PadUsing, iter, min, pos);
+}
+
+/// Create a new `PadUsing` iterator.
+pub fn pad_using<I, F>(iter: I, min: usize, filler: F) -> PadUsing<I, F>
+ where I: Iterator,
+ F: FnMut(usize) -> I::Item
+{
+ PadUsing {
+ iter: iter.fuse(),
+ min,
+ pos: 0,
+ filler,
+ }
+}
+
+impl<I, F> Iterator for PadUsing<I, F>
+ where I: Iterator,
+ F: FnMut(usize) -> I::Item
+{
+ type Item = I::Item;
+
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ match self.iter.next() {
+ None => {
+ if self.pos < self.min {
+ let e = Some((self.filler)(self.pos));
+ self.pos += 1;
+ e
+ } else {
+ None
+ }
+ },
+ e => {
+ self.pos += 1;
+ e
+ }
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ let tail = self.min.saturating_sub(self.pos);
+ size_hint::max(self.iter.size_hint(), (tail, Some(tail)))
+ }
+}
+
+impl<I, F> DoubleEndedIterator for PadUsing<I, F>
+ where I: DoubleEndedIterator + ExactSizeIterator,
+ F: FnMut(usize) -> I::Item
+{
+ fn next_back(&mut self) -> Option<Self::Item> {
+ if self.min == 0 {
+ self.iter.next_back()
+ } else if self.iter.len() >= self.min {
+ self.min -= 1;
+ self.iter.next_back()
+ } else {
+ self.min -= 1;
+ Some((self.filler)(self.min))
+ }
+ }
+}
+
+impl<I, F> ExactSizeIterator for PadUsing<I, F>
+ where I: ExactSizeIterator,
+ F: FnMut(usize) -> I::Item
+{}
+
+
+impl<I, F> FusedIterator for PadUsing<I, F>
+ where I: FusedIterator,
+ F: FnMut(usize) -> I::Item
+{}
diff --git a/vendor/itertools-0.10.5/src/peek_nth.rs b/vendor/itertools-0.10.5/src/peek_nth.rs
new file mode 100644
index 000000000..bcca45838
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/peek_nth.rs
@@ -0,0 +1,102 @@
+use crate::size_hint;
+use crate::PeekingNext;
+use alloc::collections::VecDeque;
+use std::iter::Fuse;
+
+/// See [`peek_nth()`] for more information.
+#[derive(Clone, Debug)]
+pub struct PeekNth<I>
+where
+ I: Iterator,
+{
+ iter: Fuse<I>,
+ buf: VecDeque<I::Item>,
+}
+
+/// A drop-in replacement for [`std::iter::Peekable`] which adds a `peek_nth`
+/// method allowing the user to `peek` at a value several iterations forward
+/// without advancing the base iterator.
+///
+/// This differs from `multipeek` in that subsequent calls to `peek` or
+/// `peek_nth` will always return the same value until `next` is called
+/// (making `reset_peek` unnecessary).
+pub fn peek_nth<I>(iterable: I) -> PeekNth<I::IntoIter>
+where
+ I: IntoIterator,
+{
+ PeekNth {
+ iter: iterable.into_iter().fuse(),
+ buf: VecDeque::new(),
+ }
+}
+
+impl<I> PeekNth<I>
+where
+ I: Iterator,
+{
+ /// Works exactly like the `peek` method in `std::iter::Peekable`
+ pub fn peek(&mut self) -> Option<&I::Item> {
+ self.peek_nth(0)
+ }
+
+ /// Returns a reference to the `nth` value without advancing the iterator.
+ ///
+ /// # Examples
+ ///
+ /// Basic usage:
+ ///
+ /// ```rust
+ /// use itertools::peek_nth;
+ ///
+ /// let xs = vec![1,2,3];
+ /// let mut iter = peek_nth(xs.iter());
+ ///
+ /// assert_eq!(iter.peek_nth(0), Some(&&1));
+ /// assert_eq!(iter.next(), Some(&1));
+ ///
+ /// // The iterator does not advance even if we call `peek_nth` multiple times
+ /// assert_eq!(iter.peek_nth(0), Some(&&2));
+ /// assert_eq!(iter.peek_nth(1), Some(&&3));
+ /// assert_eq!(iter.next(), Some(&2));
+ ///
+ /// // Calling `peek_nth` past the end of the iterator will return `None`
+ /// assert_eq!(iter.peek_nth(1), None);
+ /// ```
+ pub fn peek_nth(&mut self, n: usize) -> Option<&I::Item> {
+ let unbuffered_items = (n + 1).saturating_sub(self.buf.len());
+
+ self.buf.extend(self.iter.by_ref().take(unbuffered_items));
+
+ self.buf.get(n)
+ }
+}
+
+impl<I> Iterator for PeekNth<I>
+where
+ I: Iterator,
+{
+ type Item = I::Item;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ self.buf.pop_front().or_else(|| self.iter.next())
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ size_hint::add_scalar(self.iter.size_hint(), self.buf.len())
+ }
+}
+
+impl<I> ExactSizeIterator for PeekNth<I> where I: ExactSizeIterator {}
+
+impl<I> PeekingNext for PeekNth<I>
+where
+ I: Iterator,
+{
+ fn peeking_next<F>(&mut self, accept: F) -> Option<Self::Item>
+ where
+ F: FnOnce(&Self::Item) -> bool,
+ {
+ self.peek().filter(|item| accept(item))?;
+ self.next()
+ }
+}
diff --git a/vendor/itertools-0.10.5/src/peeking_take_while.rs b/vendor/itertools-0.10.5/src/peeking_take_while.rs
new file mode 100644
index 000000000..b3a9c5ccb
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/peeking_take_while.rs
@@ -0,0 +1,154 @@
+use std::iter::Peekable;
+use crate::PutBack;
+#[cfg(feature = "use_alloc")]
+use crate::PutBackN;
+
+/// An iterator that allows peeking at an element before deciding to accept it.
+///
+/// See [`.peeking_take_while()`](crate::Itertools::peeking_take_while)
+/// for more information.
+///
+/// This is implemented by peeking adaptors like peekable and put back,
+/// but also by a few iterators that can be peeked natively, like the slice’s
+/// by reference iterator (`std::slice::Iter`).
+pub trait PeekingNext : Iterator {
+ /// Pass a reference to the next iterator element to the closure `accept`;
+ /// if `accept` returns true, return it as the next element,
+ /// else None.
+ fn peeking_next<F>(&mut self, accept: F) -> Option<Self::Item>
+ where F: FnOnce(&Self::Item) -> bool;
+}
+
+impl<I> PeekingNext for Peekable<I>
+ where I: Iterator,
+{
+ fn peeking_next<F>(&mut self, accept: F) -> Option<Self::Item>
+ where F: FnOnce(&Self::Item) -> bool
+ {
+ if let Some(r) = self.peek() {
+ if !accept(r) {
+ return None;
+ }
+ }
+ self.next()
+ }
+}
+
+impl<I> PeekingNext for PutBack<I>
+ where I: Iterator,
+{
+ fn peeking_next<F>(&mut self, accept: F) -> Option<Self::Item>
+ where F: FnOnce(&Self::Item) -> bool
+ {
+ if let Some(r) = self.next() {
+ if !accept(&r) {
+ self.put_back(r);
+ return None;
+ }
+ Some(r)
+ } else {
+ None
+ }
+ }
+}
+
+#[cfg(feature = "use_alloc")]
+impl<I> PeekingNext for PutBackN<I>
+ where I: Iterator,
+{
+ fn peeking_next<F>(&mut self, accept: F) -> Option<Self::Item>
+ where F: FnOnce(&Self::Item) -> bool
+ {
+ if let Some(r) = self.next() {
+ if !accept(&r) {
+ self.put_back(r);
+ return None;
+ }
+ Some(r)
+ } else {
+ None
+ }
+ }
+}
+
+/// An iterator adaptor that takes items while a closure returns `true`.
+///
+/// See [`.peeking_take_while()`](crate::Itertools::peeking_take_while)
+/// for more information.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct PeekingTakeWhile<'a, I: 'a, F>
+ where I: Iterator,
+{
+ iter: &'a mut I,
+ f: F,
+}
+
+impl<'a, I: 'a, F> std::fmt::Debug for PeekingTakeWhile<'a, I, F>
+where
+ I: Iterator + std::fmt::Debug,
+{
+ debug_fmt_fields!(PeekingTakeWhile, iter);
+}
+
+/// Create a `PeekingTakeWhile`
+pub fn peeking_take_while<I, F>(iter: &mut I, f: F) -> PeekingTakeWhile<I, F>
+ where I: Iterator,
+{
+ PeekingTakeWhile {
+ iter,
+ f,
+ }
+}
+
+impl<'a, I, F> Iterator for PeekingTakeWhile<'a, I, F>
+ where I: PeekingNext,
+ F: FnMut(&I::Item) -> bool,
+
+{
+ type Item = I::Item;
+ fn next(&mut self) -> Option<Self::Item> {
+ self.iter.peeking_next(&mut self.f)
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ (0, self.iter.size_hint().1)
+ }
+}
+
+// Some iterators are so lightweight we can simply clone them to save their
+// state and use that for peeking.
+macro_rules! peeking_next_by_clone {
+ ([$($typarm:tt)*] $type_:ty) => {
+ impl<$($typarm)*> PeekingNext for $type_ {
+ fn peeking_next<F>(&mut self, accept: F) -> Option<Self::Item>
+ where F: FnOnce(&Self::Item) -> bool
+ {
+ let saved_state = self.clone();
+ if let Some(r) = self.next() {
+ if !accept(&r) {
+ *self = saved_state;
+ } else {
+ return Some(r)
+ }
+ }
+ None
+ }
+ }
+ }
+}
+
+peeking_next_by_clone! { ['a, T] ::std::slice::Iter<'a, T> }
+peeking_next_by_clone! { ['a] ::std::str::Chars<'a> }
+peeking_next_by_clone! { ['a] ::std::str::CharIndices<'a> }
+peeking_next_by_clone! { ['a] ::std::str::Bytes<'a> }
+peeking_next_by_clone! { ['a, T] ::std::option::Iter<'a, T> }
+peeking_next_by_clone! { ['a, T] ::std::result::Iter<'a, T> }
+peeking_next_by_clone! { [T] ::std::iter::Empty<T> }
+#[cfg(feature = "use_alloc")]
+peeking_next_by_clone! { ['a, T] alloc::collections::linked_list::Iter<'a, T> }
+#[cfg(feature = "use_alloc")]
+peeking_next_by_clone! { ['a, T] alloc::collections::vec_deque::Iter<'a, T> }
+
+// cloning a Rev has no extra overhead; peekable and put backs are never DEI.
+peeking_next_by_clone! { [I: Clone + PeekingNext + DoubleEndedIterator]
+ ::std::iter::Rev<I> }
diff --git a/vendor/itertools-0.10.5/src/permutations.rs b/vendor/itertools-0.10.5/src/permutations.rs
new file mode 100644
index 000000000..d03b85262
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/permutations.rs
@@ -0,0 +1,277 @@
+use alloc::vec::Vec;
+use std::fmt;
+use std::iter::once;
+
+use super::lazy_buffer::LazyBuffer;
+
+/// An iterator adaptor that iterates through all the `k`-permutations of the
+/// elements from an iterator.
+///
+/// See [`.permutations()`](crate::Itertools::permutations) for
+/// more information.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct Permutations<I: Iterator> {
+ vals: LazyBuffer<I>,
+ state: PermutationState,
+}
+
+impl<I> Clone for Permutations<I>
+ where I: Clone + Iterator,
+ I::Item: Clone,
+{
+ clone_fields!(vals, state);
+}
+
+#[derive(Clone, Debug)]
+enum PermutationState {
+ StartUnknownLen {
+ k: usize,
+ },
+ OngoingUnknownLen {
+ k: usize,
+ min_n: usize,
+ },
+ Complete(CompleteState),
+ Empty,
+}
+
+#[derive(Clone, Debug)]
+enum CompleteState {
+ Start {
+ n: usize,
+ k: usize,
+ },
+ Ongoing {
+ indices: Vec<usize>,
+ cycles: Vec<usize>,
+ }
+}
+
+enum CompleteStateRemaining {
+ Known(usize),
+ Overflow,
+}
+
+impl<I> fmt::Debug for Permutations<I>
+ where I: Iterator + fmt::Debug,
+ I::Item: fmt::Debug,
+{
+ debug_fmt_fields!(Permutations, vals, state);
+}
+
+pub fn permutations<I: Iterator>(iter: I, k: usize) -> Permutations<I> {
+ let mut vals = LazyBuffer::new(iter);
+
+ if k == 0 {
+ // Special case, yields single empty vec; `n` is irrelevant
+ let state = PermutationState::Complete(CompleteState::Start { n: 0, k: 0 });
+
+ return Permutations {
+ vals,
+ state
+ };
+ }
+
+ let mut enough_vals = true;
+
+ while vals.len() < k {
+ if !vals.get_next() {
+ enough_vals = false;
+ break;
+ }
+ }
+
+ let state = if enough_vals {
+ PermutationState::StartUnknownLen { k }
+ } else {
+ PermutationState::Empty
+ };
+
+ Permutations {
+ vals,
+ state
+ }
+}
+
+impl<I> Iterator for Permutations<I>
+where
+ I: Iterator,
+ I::Item: Clone
+{
+ type Item = Vec<I::Item>;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ self.advance();
+
+ let &mut Permutations { ref vals, ref state } = self;
+
+ match *state {
+ PermutationState::StartUnknownLen { .. } => panic!("unexpected iterator state"),
+ PermutationState::OngoingUnknownLen { k, min_n } => {
+ let latest_idx = min_n - 1;
+ let indices = (0..(k - 1)).chain(once(latest_idx));
+
+ Some(indices.map(|i| vals[i].clone()).collect())
+ }
+ PermutationState::Complete(CompleteState::Ongoing { ref indices, ref cycles }) => {
+ let k = cycles.len();
+ Some(indices[0..k].iter().map(|&i| vals[i].clone()).collect())
+ },
+ PermutationState::Complete(CompleteState::Start { .. }) | PermutationState::Empty => None
+ }
+ }
+
+ fn count(self) -> usize {
+ fn from_complete(complete_state: CompleteState) -> usize {
+ match complete_state.remaining() {
+ CompleteStateRemaining::Known(count) => count,
+ CompleteStateRemaining::Overflow => {
+ panic!("Iterator count greater than usize::MAX");
+ }
+ }
+ }
+
+ let Permutations { vals, state } = self;
+ match state {
+ PermutationState::StartUnknownLen { k } => {
+ let n = vals.len() + vals.it.count();
+ let complete_state = CompleteState::Start { n, k };
+
+ from_complete(complete_state)
+ }
+ PermutationState::OngoingUnknownLen { k, min_n } => {
+ let prev_iteration_count = min_n - k + 1;
+ let n = vals.len() + vals.it.count();
+ let complete_state = CompleteState::Start { n, k };
+
+ from_complete(complete_state) - prev_iteration_count
+ },
+ PermutationState::Complete(state) => from_complete(state),
+ PermutationState::Empty => 0
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ match self.state {
+ PermutationState::StartUnknownLen { .. } |
+ PermutationState::OngoingUnknownLen { .. } => (0, None), // TODO can we improve this lower bound?
+ PermutationState::Complete(ref state) => match state.remaining() {
+ CompleteStateRemaining::Known(count) => (count, Some(count)),
+ CompleteStateRemaining::Overflow => (::std::usize::MAX, None)
+ }
+ PermutationState::Empty => (0, Some(0))
+ }
+ }
+}
+
+impl<I> Permutations<I>
+where
+ I: Iterator,
+ I::Item: Clone
+{
+ fn advance(&mut self) {
+ let &mut Permutations { ref mut vals, ref mut state } = self;
+
+ *state = match *state {
+ PermutationState::StartUnknownLen { k } => {
+ PermutationState::OngoingUnknownLen { k, min_n: k }
+ }
+ PermutationState::OngoingUnknownLen { k, min_n } => {
+ if vals.get_next() {
+ PermutationState::OngoingUnknownLen { k, min_n: min_n + 1 }
+ } else {
+ let n = min_n;
+ let prev_iteration_count = n - k + 1;
+ let mut complete_state = CompleteState::Start { n, k };
+
+ // Advance the complete-state iterator to the correct point
+ for _ in 0..(prev_iteration_count + 1) {
+ complete_state.advance();
+ }
+
+ PermutationState::Complete(complete_state)
+ }
+ }
+ PermutationState::Complete(ref mut state) => {
+ state.advance();
+
+ return;
+ }
+ PermutationState::Empty => { return; }
+ };
+ }
+}
+
+impl CompleteState {
+ fn advance(&mut self) {
+ *self = match *self {
+ CompleteState::Start { n, k } => {
+ let indices = (0..n).collect();
+ let cycles = ((n - k)..n).rev().collect();
+
+ CompleteState::Ongoing {
+ cycles,
+ indices
+ }
+ },
+ CompleteState::Ongoing { ref mut indices, ref mut cycles } => {
+ let n = indices.len();
+ let k = cycles.len();
+
+ for i in (0..k).rev() {
+ if cycles[i] == 0 {
+ cycles[i] = n - i - 1;
+
+ let to_push = indices.remove(i);
+ indices.push(to_push);
+ } else {
+ let swap_index = n - cycles[i];
+ indices.swap(i, swap_index);
+
+ cycles[i] -= 1;
+ return;
+ }
+ }
+
+ CompleteState::Start { n, k }
+ }
+ }
+ }
+
+ fn remaining(&self) -> CompleteStateRemaining {
+ use self::CompleteStateRemaining::{Known, Overflow};
+
+ match *self {
+ CompleteState::Start { n, k } => {
+ if n < k {
+ return Known(0);
+ }
+
+ let count: Option<usize> = (n - k + 1..n + 1).fold(Some(1), |acc, i| {
+ acc.and_then(|acc| acc.checked_mul(i))
+ });
+
+ match count {
+ Some(count) => Known(count),
+ None => Overflow
+ }
+ }
+ CompleteState::Ongoing { ref indices, ref cycles } => {
+ let mut count: usize = 0;
+
+ for (i, &c) in cycles.iter().enumerate() {
+ let radix = indices.len() - i;
+ let next_count = count.checked_mul(radix)
+ .and_then(|count| count.checked_add(c));
+
+ count = match next_count {
+ Some(count) => count,
+ None => { return Overflow; }
+ };
+ }
+
+ Known(count)
+ }
+ }
+ }
+}
diff --git a/vendor/itertools-0.10.5/src/powerset.rs b/vendor/itertools-0.10.5/src/powerset.rs
new file mode 100644
index 000000000..4d7685b12
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/powerset.rs
@@ -0,0 +1,90 @@
+use std::fmt;
+use std::iter::FusedIterator;
+use std::usize;
+use alloc::vec::Vec;
+
+use super::combinations::{Combinations, combinations};
+use super::size_hint;
+
+/// An iterator to iterate through the powerset of the elements from an iterator.
+///
+/// See [`.powerset()`](crate::Itertools::powerset) for more
+/// information.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct Powerset<I: Iterator> {
+ combs: Combinations<I>,
+ // Iterator `position` (equal to count of yielded elements).
+ pos: usize,
+}
+
+impl<I> Clone for Powerset<I>
+ where I: Clone + Iterator,
+ I::Item: Clone,
+{
+ clone_fields!(combs, pos);
+}
+
+impl<I> fmt::Debug for Powerset<I>
+ where I: Iterator + fmt::Debug,
+ I::Item: fmt::Debug,
+{
+ debug_fmt_fields!(Powerset, combs, pos);
+}
+
+/// Create a new `Powerset` from a clonable iterator.
+pub fn powerset<I>(src: I) -> Powerset<I>
+ where I: Iterator,
+ I::Item: Clone,
+{
+ Powerset {
+ combs: combinations(src, 0),
+ pos: 0,
+ }
+}
+
+impl<I> Iterator for Powerset<I>
+ where
+ I: Iterator,
+ I::Item: Clone,
+{
+ type Item = Vec<I::Item>;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if let Some(elt) = self.combs.next() {
+ self.pos = self.pos.saturating_add(1);
+ Some(elt)
+ } else if self.combs.k() < self.combs.n()
+ || self.combs.k() == 0
+ {
+ self.combs.reset(self.combs.k() + 1);
+ self.combs.next().map(|elt| {
+ self.pos = self.pos.saturating_add(1);
+ elt
+ })
+ } else {
+ None
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ // Total bounds for source iterator.
+ let src_total = size_hint::add_scalar(self.combs.src().size_hint(), self.combs.n());
+
+ // Total bounds for self ( length(powerset(set) == 2 ^ length(set) )
+ let self_total = size_hint::pow_scalar_base(2, src_total);
+
+ if self.pos < usize::MAX {
+ // Subtract count of elements already yielded from total.
+ size_hint::sub_scalar(self_total, self.pos)
+ } else {
+ // Fallback: self.pos is saturated and no longer reliable.
+ (0, self_total.1)
+ }
+ }
+}
+
+impl<I> FusedIterator for Powerset<I>
+ where
+ I: Iterator,
+ I::Item: Clone,
+{}
diff --git a/vendor/itertools-0.10.5/src/process_results_impl.rs b/vendor/itertools-0.10.5/src/process_results_impl.rs
new file mode 100644
index 000000000..44308f378
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/process_results_impl.rs
@@ -0,0 +1,97 @@
+
+/// An iterator that produces only the `T` values as long as the
+/// inner iterator produces `Ok(T)`.
+///
+/// Used by [`process_results`](crate::process_results), see its docs
+/// for more information.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+#[derive(Debug)]
+pub struct ProcessResults<'a, I, E: 'a> {
+ error: &'a mut Result<(), E>,
+ iter: I,
+}
+
+impl<'a, I, T, E> Iterator for ProcessResults<'a, I, E>
+ where I: Iterator<Item = Result<T, E>>
+{
+ type Item = T;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ match self.iter.next() {
+ Some(Ok(x)) => Some(x),
+ Some(Err(e)) => {
+ *self.error = Err(e);
+ None
+ }
+ None => None,
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ (0, self.iter.size_hint().1)
+ }
+
+ fn fold<B, F>(mut self, init: B, mut f: F) -> B
+ where
+ Self: Sized,
+ F: FnMut(B, Self::Item) -> B,
+ {
+ let error = self.error;
+ self.iter
+ .try_fold(init, |acc, opt| match opt {
+ Ok(x) => Ok(f(acc, x)),
+ Err(e) => {
+ *error = Err(e);
+ Err(acc)
+ }
+ })
+ .unwrap_or_else(|e| e)
+ }
+}
+
+/// “Lift†a function of the values of an iterator so that it can process
+/// an iterator of `Result` values instead.
+///
+/// `iterable` is an iterator or iterable with `Result<T, E>` elements, where
+/// `T` is the value type and `E` the error type.
+///
+/// `processor` is a closure that receives an adapted version of the iterable
+/// as the only argument — the adapted iterator produces elements of type `T`,
+/// as long as the original iterator produces `Ok` values.
+///
+/// If the original iterable produces an error at any point, the adapted
+/// iterator ends and the `process_results` function will return the
+/// error iself.
+///
+/// Otherwise, the return value from the closure is returned wrapped
+/// inside `Ok`.
+///
+/// # Example
+///
+/// ```
+/// use itertools::process_results;
+///
+/// type R = Result<i32, &'static str>;
+///
+/// let first_values: Vec<R> = vec![Ok(1), Ok(0), Ok(3)];
+/// let second_values: Vec<R> = vec![Ok(2), Ok(1), Err("overflow")];
+///
+/// // “Lift†the iterator .max() method to work on the values in Results using process_results
+///
+/// let first_max = process_results(first_values, |iter| iter.max().unwrap_or(0));
+/// let second_max = process_results(second_values, |iter| iter.max().unwrap_or(0));
+///
+/// assert_eq!(first_max, Ok(3));
+/// assert!(second_max.is_err());
+/// ```
+pub fn process_results<I, F, T, E, R>(iterable: I, processor: F) -> Result<R, E>
+ where I: IntoIterator<Item = Result<T, E>>,
+ F: FnOnce(ProcessResults<I::IntoIter, E>) -> R
+{
+ let iter = iterable.into_iter();
+ let mut error = Ok(());
+
+ let result = processor(ProcessResults { error: &mut error, iter });
+
+ error.map(|_| result)
+}
diff --git a/vendor/itertools-0.10.5/src/put_back_n_impl.rs b/vendor/itertools-0.10.5/src/put_back_n_impl.rs
new file mode 100644
index 000000000..60ea8e649
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/put_back_n_impl.rs
@@ -0,0 +1,61 @@
+use alloc::vec::Vec;
+
+use crate::size_hint;
+
+/// An iterator adaptor that allows putting multiple
+/// items in front of the iterator.
+///
+/// Iterator element type is `I::Item`.
+#[derive(Debug, Clone)]
+pub struct PutBackN<I: Iterator> {
+ top: Vec<I::Item>,
+ iter: I,
+}
+
+/// Create an iterator where you can put back multiple values to the front
+/// of the iteration.
+///
+/// Iterator element type is `I::Item`.
+pub fn put_back_n<I>(iterable: I) -> PutBackN<I::IntoIter>
+ where I: IntoIterator
+{
+ PutBackN {
+ top: Vec::new(),
+ iter: iterable.into_iter(),
+ }
+}
+
+impl<I: Iterator> PutBackN<I> {
+ /// Puts x in front of the iterator.
+ /// The values are yielded in order of the most recently put back
+ /// values first.
+ ///
+ /// ```rust
+ /// use itertools::put_back_n;
+ ///
+ /// let mut it = put_back_n(1..5);
+ /// it.next();
+ /// it.put_back(1);
+ /// it.put_back(0);
+ ///
+ /// assert!(itertools::equal(it, 0..5));
+ /// ```
+ #[inline]
+ pub fn put_back(&mut self, x: I::Item) {
+ self.top.push(x);
+ }
+}
+
+impl<I: Iterator> Iterator for PutBackN<I> {
+ type Item = I::Item;
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ self.top.pop().or_else(|| self.iter.next())
+ }
+
+ #[inline]
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ size_hint::add_scalar(self.iter.size_hint(), self.top.len())
+ }
+}
+
diff --git a/vendor/itertools-0.10.5/src/rciter_impl.rs b/vendor/itertools-0.10.5/src/rciter_impl.rs
new file mode 100644
index 000000000..7298350a8
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/rciter_impl.rs
@@ -0,0 +1,99 @@
+
+use std::iter::{FusedIterator, IntoIterator};
+use alloc::rc::Rc;
+use std::cell::RefCell;
+
+/// A wrapper for `Rc<RefCell<I>>`, that implements the `Iterator` trait.
+#[derive(Debug)]
+pub struct RcIter<I> {
+ /// The boxed iterator.
+ pub rciter: Rc<RefCell<I>>,
+}
+
+/// Return an iterator inside a `Rc<RefCell<_>>` wrapper.
+///
+/// The returned `RcIter` can be cloned, and each clone will refer back to the
+/// same original iterator.
+///
+/// `RcIter` allows doing interesting things like using `.zip()` on an iterator with
+/// itself, at the cost of runtime borrow checking which may have a performance
+/// penalty.
+///
+/// Iterator element type is `Self::Item`.
+///
+/// ```
+/// use itertools::rciter;
+/// use itertools::zip;
+///
+/// // In this example a range iterator is created and we iterate it using
+/// // three separate handles (two of them given to zip).
+/// // We also use the IntoIterator implementation for `&RcIter`.
+///
+/// let mut iter = rciter(0..9);
+/// let mut z = zip(&iter, &iter);
+///
+/// assert_eq!(z.next(), Some((0, 1)));
+/// assert_eq!(z.next(), Some((2, 3)));
+/// assert_eq!(z.next(), Some((4, 5)));
+/// assert_eq!(iter.next(), Some(6));
+/// assert_eq!(z.next(), Some((7, 8)));
+/// assert_eq!(z.next(), None);
+/// ```
+///
+/// **Panics** in iterator methods if a borrow error is encountered in the
+/// iterator methods. It can only happen if the `RcIter` is reentered in
+/// `.next()`, i.e. if it somehow participates in an “iterator knotâ€
+/// where it is an adaptor of itself.
+pub fn rciter<I>(iterable: I) -> RcIter<I::IntoIter>
+ where I: IntoIterator
+{
+ RcIter { rciter: Rc::new(RefCell::new(iterable.into_iter())) }
+}
+
+impl<I> Clone for RcIter<I> {
+ clone_fields!(rciter);
+}
+
+impl<A, I> Iterator for RcIter<I>
+ where I: Iterator<Item = A>
+{
+ type Item = A;
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ self.rciter.borrow_mut().next()
+ }
+
+ #[inline]
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ // To work sanely with other API that assume they own an iterator,
+ // so it can't change in other places, we can't guarantee as much
+ // in our size_hint. Other clones may drain values under our feet.
+ (0, self.rciter.borrow().size_hint().1)
+ }
+}
+
+impl<I> DoubleEndedIterator for RcIter<I>
+ where I: DoubleEndedIterator
+{
+ #[inline]
+ fn next_back(&mut self) -> Option<Self::Item> {
+ self.rciter.borrow_mut().next_back()
+ }
+}
+
+/// Return an iterator from `&RcIter<I>` (by simply cloning it).
+impl<'a, I> IntoIterator for &'a RcIter<I>
+ where I: Iterator
+{
+ type Item = I::Item;
+ type IntoIter = RcIter<I>;
+
+ fn into_iter(self) -> RcIter<I> {
+ self.clone()
+ }
+}
+
+
+impl<A, I> FusedIterator for RcIter<I>
+ where I: FusedIterator<Item = A>
+{}
diff --git a/vendor/itertools-0.10.5/src/repeatn.rs b/vendor/itertools-0.10.5/src/repeatn.rs
new file mode 100644
index 000000000..e025f6f6a
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/repeatn.rs
@@ -0,0 +1,59 @@
+use std::iter::FusedIterator;
+
+/// An iterator that produces *n* repetitions of an element.
+///
+/// See [`repeat_n()`](crate::repeat_n) for more information.
+#[must_use = "iterators are lazy and do nothing unless consumed"]
+#[derive(Clone, Debug)]
+pub struct RepeatN<A> {
+ elt: Option<A>,
+ n: usize,
+}
+
+/// Create an iterator that produces `n` repetitions of `element`.
+pub fn repeat_n<A>(element: A, n: usize) -> RepeatN<A>
+ where A: Clone,
+{
+ if n == 0 {
+ RepeatN { elt: None, n, }
+ } else {
+ RepeatN { elt: Some(element), n, }
+ }
+}
+
+impl<A> Iterator for RepeatN<A>
+ where A: Clone
+{
+ type Item = A;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if self.n > 1 {
+ self.n -= 1;
+ self.elt.as_ref().cloned()
+ } else {
+ self.n = 0;
+ self.elt.take()
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ (self.n, Some(self.n))
+ }
+}
+
+impl<A> DoubleEndedIterator for RepeatN<A>
+ where A: Clone
+{
+ #[inline]
+ fn next_back(&mut self) -> Option<Self::Item> {
+ self.next()
+ }
+}
+
+impl<A> ExactSizeIterator for RepeatN<A>
+ where A: Clone
+{}
+
+impl<A> FusedIterator for RepeatN<A>
+ where A: Clone
+{}
diff --git a/vendor/itertools-0.10.5/src/size_hint.rs b/vendor/itertools-0.10.5/src/size_hint.rs
new file mode 100644
index 000000000..71ea1412b
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/size_hint.rs
@@ -0,0 +1,119 @@
+//! Arithmetic on `Iterator.size_hint()` values.
+//!
+
+use std::usize;
+use std::cmp;
+use std::u32;
+
+/// `SizeHint` is the return type of `Iterator::size_hint()`.
+pub type SizeHint = (usize, Option<usize>);
+
+/// Add `SizeHint` correctly.
+#[inline]
+pub fn add(a: SizeHint, b: SizeHint) -> SizeHint {
+ let min = a.0.saturating_add(b.0);
+ let max = match (a.1, b.1) {
+ (Some(x), Some(y)) => x.checked_add(y),
+ _ => None,
+ };
+
+ (min, max)
+}
+
+/// Add `x` correctly to a `SizeHint`.
+#[inline]
+pub fn add_scalar(sh: SizeHint, x: usize) -> SizeHint {
+ let (mut low, mut hi) = sh;
+ low = low.saturating_add(x);
+ hi = hi.and_then(|elt| elt.checked_add(x));
+ (low, hi)
+}
+
+/// Subtract `x` correctly from a `SizeHint`.
+#[inline]
+#[allow(dead_code)]
+pub fn sub_scalar(sh: SizeHint, x: usize) -> SizeHint {
+ let (mut low, mut hi) = sh;
+ low = low.saturating_sub(x);
+ hi = hi.map(|elt| elt.saturating_sub(x));
+ (low, hi)
+}
+
+
+/// Multiply `SizeHint` correctly
+///
+/// ```ignore
+/// use std::usize;
+/// use itertools::size_hint;
+///
+/// assert_eq!(size_hint::mul((3, Some(4)), (3, Some(4))),
+/// (9, Some(16)));
+///
+/// assert_eq!(size_hint::mul((3, Some(4)), (usize::MAX, None)),
+/// (usize::MAX, None));
+///
+/// assert_eq!(size_hint::mul((3, None), (0, Some(0))),
+/// (0, Some(0)));
+/// ```
+#[inline]
+pub fn mul(a: SizeHint, b: SizeHint) -> SizeHint {
+ let low = a.0.saturating_mul(b.0);
+ let hi = match (a.1, b.1) {
+ (Some(x), Some(y)) => x.checked_mul(y),
+ (Some(0), None) | (None, Some(0)) => Some(0),
+ _ => None,
+ };
+ (low, hi)
+}
+
+/// Multiply `x` correctly with a `SizeHint`.
+#[inline]
+pub fn mul_scalar(sh: SizeHint, x: usize) -> SizeHint {
+ let (mut low, mut hi) = sh;
+ low = low.saturating_mul(x);
+ hi = hi.and_then(|elt| elt.checked_mul(x));
+ (low, hi)
+}
+
+/// Raise `base` correctly by a `SizeHint` exponent.
+#[inline]
+pub fn pow_scalar_base(base: usize, exp: SizeHint) -> SizeHint {
+ let exp_low = cmp::min(exp.0, u32::MAX as usize) as u32;
+ let low = base.saturating_pow(exp_low);
+
+ let hi = exp.1.and_then(|exp| {
+ let exp_hi = cmp::min(exp, u32::MAX as usize) as u32;
+ base.checked_pow(exp_hi)
+ });
+
+ (low, hi)
+}
+
+/// Return the maximum
+#[inline]
+pub fn max(a: SizeHint, b: SizeHint) -> SizeHint {
+ let (a_lower, a_upper) = a;
+ let (b_lower, b_upper) = b;
+
+ let lower = cmp::max(a_lower, b_lower);
+
+ let upper = match (a_upper, b_upper) {
+ (Some(x), Some(y)) => Some(cmp::max(x, y)),
+ _ => None,
+ };
+
+ (lower, upper)
+}
+
+/// Return the minimum
+#[inline]
+pub fn min(a: SizeHint, b: SizeHint) -> SizeHint {
+ let (a_lower, a_upper) = a;
+ let (b_lower, b_upper) = b;
+ let lower = cmp::min(a_lower, b_lower);
+ let upper = match (a_upper, b_upper) {
+ (Some(u1), Some(u2)) => Some(cmp::min(u1, u2)),
+ _ => a_upper.or(b_upper),
+ };
+ (lower, upper)
+}
diff --git a/vendor/itertools-0.10.5/src/sources.rs b/vendor/itertools-0.10.5/src/sources.rs
new file mode 100644
index 000000000..3877ce3c8
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/sources.rs
@@ -0,0 +1,183 @@
+//! Iterators that are sources (produce elements from parameters,
+//! not from another iterator).
+#![allow(deprecated)]
+
+use std::fmt;
+use std::mem;
+
+/// See [`repeat_call`](crate::repeat_call) for more information.
+#[derive(Clone)]
+#[deprecated(note="Use std repeat_with() instead", since="0.8.0")]
+pub struct RepeatCall<F> {
+ f: F,
+}
+
+impl<F> fmt::Debug for RepeatCall<F>
+{
+ debug_fmt_fields!(RepeatCall, );
+}
+
+/// An iterator source that produces elements indefinitely by calling
+/// a given closure.
+///
+/// Iterator element type is the return type of the closure.
+///
+/// ```
+/// use itertools::repeat_call;
+/// use itertools::Itertools;
+/// use std::collections::BinaryHeap;
+///
+/// let mut heap = BinaryHeap::from(vec![2, 5, 3, 7, 8]);
+///
+/// // extract each element in sorted order
+/// for element in repeat_call(|| heap.pop()).while_some() {
+/// print!("{}", element);
+/// }
+///
+/// itertools::assert_equal(
+/// repeat_call(|| 1).take(5),
+/// vec![1, 1, 1, 1, 1]
+/// );
+/// ```
+#[deprecated(note="Use std repeat_with() instead", since="0.8.0")]
+pub fn repeat_call<F, A>(function: F) -> RepeatCall<F>
+ where F: FnMut() -> A
+{
+ RepeatCall { f: function }
+}
+
+impl<A, F> Iterator for RepeatCall<F>
+ where F: FnMut() -> A
+{
+ type Item = A;
+
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ Some((self.f)())
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ (usize::max_value(), None)
+ }
+}
+
+/// Creates a new unfold source with the specified closure as the "iterator
+/// function" and an initial state to eventually pass to the closure
+///
+/// `unfold` is a general iterator builder: it has a mutable state value,
+/// and a closure with access to the state that produces the next value.
+///
+/// This more or less equivalent to a regular struct with an [`Iterator`]
+/// implementation, and is useful for one-off iterators.
+///
+/// ```
+/// // an iterator that yields sequential Fibonacci numbers,
+/// // and stops at the maximum representable value.
+///
+/// use itertools::unfold;
+///
+/// let mut fibonacci = unfold((1u32, 1u32), |(x1, x2)| {
+/// // Attempt to get the next Fibonacci number
+/// let next = x1.saturating_add(*x2);
+///
+/// // Shift left: ret <- x1 <- x2 <- next
+/// let ret = *x1;
+/// *x1 = *x2;
+/// *x2 = next;
+///
+/// // If addition has saturated at the maximum, we are finished
+/// if ret == *x1 && ret > 1 {
+/// None
+/// } else {
+/// Some(ret)
+/// }
+/// });
+///
+/// itertools::assert_equal(fibonacci.by_ref().take(8),
+/// vec![1, 1, 2, 3, 5, 8, 13, 21]);
+/// assert_eq!(fibonacci.last(), Some(2_971_215_073))
+/// ```
+pub fn unfold<A, St, F>(initial_state: St, f: F) -> Unfold<St, F>
+ where F: FnMut(&mut St) -> Option<A>
+{
+ Unfold {
+ f,
+ state: initial_state,
+ }
+}
+
+impl<St, F> fmt::Debug for Unfold<St, F>
+ where St: fmt::Debug,
+{
+ debug_fmt_fields!(Unfold, state);
+}
+
+/// See [`unfold`](crate::unfold) for more information.
+#[derive(Clone)]
+#[must_use = "iterators are lazy and do nothing unless consumed"]
+pub struct Unfold<St, F> {
+ f: F,
+ /// Internal state that will be passed to the closure on the next iteration
+ pub state: St,
+}
+
+impl<A, St, F> Iterator for Unfold<St, F>
+ where F: FnMut(&mut St) -> Option<A>
+{
+ type Item = A;
+
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ (self.f)(&mut self.state)
+ }
+}
+
+/// An iterator that infinitely applies function to value and yields results.
+///
+/// This `struct` is created by the [`iterate()`](crate::iterate) function.
+/// See its documentation for more.
+#[derive(Clone)]
+#[must_use = "iterators are lazy and do nothing unless consumed"]
+pub struct Iterate<St, F> {
+ state: St,
+ f: F,
+}
+
+impl<St, F> fmt::Debug for Iterate<St, F>
+ where St: fmt::Debug,
+{
+ debug_fmt_fields!(Iterate, state);
+}
+
+impl<St, F> Iterator for Iterate<St, F>
+ where F: FnMut(&St) -> St
+{
+ type Item = St;
+
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ let next_state = (self.f)(&self.state);
+ Some(mem::replace(&mut self.state, next_state))
+ }
+
+ #[inline]
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ (usize::max_value(), None)
+ }
+}
+
+/// Creates a new iterator that infinitely applies function to value and yields results.
+///
+/// ```
+/// use itertools::iterate;
+///
+/// itertools::assert_equal(iterate(1, |&i| i * 3).take(5), vec![1, 3, 9, 27, 81]);
+/// ```
+pub fn iterate<St, F>(initial_value: St, f: F) -> Iterate<St, F>
+ where F: FnMut(&St) -> St
+{
+ Iterate {
+ state: initial_value,
+ f,
+ }
+}
diff --git a/vendor/itertools-0.10.5/src/tee.rs b/vendor/itertools-0.10.5/src/tee.rs
new file mode 100644
index 000000000..ea4752906
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/tee.rs
@@ -0,0 +1,78 @@
+use super::size_hint;
+
+use std::cell::RefCell;
+use alloc::collections::VecDeque;
+use alloc::rc::Rc;
+
+/// Common buffer object for the two tee halves
+#[derive(Debug)]
+struct TeeBuffer<A, I> {
+ backlog: VecDeque<A>,
+ iter: I,
+ /// The owner field indicates which id should read from the backlog
+ owner: bool,
+}
+
+/// One half of an iterator pair where both return the same elements.
+///
+/// See [`.tee()`](crate::Itertools::tee) for more information.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+#[derive(Debug)]
+pub struct Tee<I>
+ where I: Iterator
+{
+ rcbuffer: Rc<RefCell<TeeBuffer<I::Item, I>>>,
+ id: bool,
+}
+
+pub fn new<I>(iter: I) -> (Tee<I>, Tee<I>)
+ where I: Iterator
+{
+ let buffer = TeeBuffer{backlog: VecDeque::new(), iter, owner: false};
+ let t1 = Tee{rcbuffer: Rc::new(RefCell::new(buffer)), id: true};
+ let t2 = Tee{rcbuffer: t1.rcbuffer.clone(), id: false};
+ (t1, t2)
+}
+
+impl<I> Iterator for Tee<I>
+ where I: Iterator,
+ I::Item: Clone
+{
+ type Item = I::Item;
+ fn next(&mut self) -> Option<Self::Item> {
+ // .borrow_mut may fail here -- but only if the user has tied some kind of weird
+ // knot where the iterator refers back to itself.
+ let mut buffer = self.rcbuffer.borrow_mut();
+ if buffer.owner == self.id {
+ match buffer.backlog.pop_front() {
+ None => {}
+ some_elt => return some_elt,
+ }
+ }
+ match buffer.iter.next() {
+ None => None,
+ Some(elt) => {
+ buffer.backlog.push_back(elt.clone());
+ buffer.owner = !self.id;
+ Some(elt)
+ }
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ let buffer = self.rcbuffer.borrow();
+ let sh = buffer.iter.size_hint();
+
+ if buffer.owner == self.id {
+ let log_len = buffer.backlog.len();
+ size_hint::add_scalar(sh, log_len)
+ } else {
+ sh
+ }
+ }
+}
+
+impl<I> ExactSizeIterator for Tee<I>
+ where I: ExactSizeIterator,
+ I::Item: Clone
+{}
diff --git a/vendor/itertools-0.10.5/src/tuple_impl.rs b/vendor/itertools-0.10.5/src/tuple_impl.rs
new file mode 100644
index 000000000..06b5c13cb
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/tuple_impl.rs
@@ -0,0 +1,331 @@
+//! Some iterator that produces tuples
+
+use std::iter::Fuse;
+use std::iter::FusedIterator;
+use std::iter::Take;
+use std::iter::Cycle;
+use std::marker::PhantomData;
+
+// `HomogeneousTuple` is a public facade for `TupleCollect`, allowing
+// tuple-related methods to be used by clients in generic contexts, while
+// hiding the implementation details of `TupleCollect`.
+// See https://github.com/rust-itertools/itertools/issues/387
+
+/// Implemented for homogeneous tuples of size up to 12.
+pub trait HomogeneousTuple
+ : TupleCollect
+{}
+
+impl<T: TupleCollect> HomogeneousTuple for T {}
+
+/// An iterator over a incomplete tuple.
+///
+/// See [`.tuples()`](crate::Itertools::tuples) and
+/// [`Tuples::into_buffer()`].
+#[derive(Clone, Debug)]
+pub struct TupleBuffer<T>
+ where T: HomogeneousTuple
+{
+ cur: usize,
+ buf: T::Buffer,
+}
+
+impl<T> TupleBuffer<T>
+ where T: HomogeneousTuple
+{
+ fn new(buf: T::Buffer) -> Self {
+ TupleBuffer {
+ cur: 0,
+ buf,
+ }
+ }
+}
+
+impl<T> Iterator for TupleBuffer<T>
+ where T: HomogeneousTuple
+{
+ type Item = T::Item;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ let s = self.buf.as_mut();
+ if let Some(ref mut item) = s.get_mut(self.cur) {
+ self.cur += 1;
+ item.take()
+ } else {
+ None
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ let buffer = &self.buf.as_ref()[self.cur..];
+ let len = if buffer.is_empty() {
+ 0
+ } else {
+ buffer.iter()
+ .position(|x| x.is_none())
+ .unwrap_or_else(|| buffer.len())
+ };
+ (len, Some(len))
+ }
+}
+
+impl<T> ExactSizeIterator for TupleBuffer<T>
+ where T: HomogeneousTuple
+{
+}
+
+/// An iterator that groups the items in tuples of a specific size.
+///
+/// See [`.tuples()`](crate::Itertools::tuples) for more information.
+#[derive(Clone, Debug)]
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct Tuples<I, T>
+ where I: Iterator<Item = T::Item>,
+ T: HomogeneousTuple
+{
+ iter: Fuse<I>,
+ buf: T::Buffer,
+}
+
+/// Create a new tuples iterator.
+pub fn tuples<I, T>(iter: I) -> Tuples<I, T>
+ where I: Iterator<Item = T::Item>,
+ T: HomogeneousTuple
+{
+ Tuples {
+ iter: iter.fuse(),
+ buf: Default::default(),
+ }
+}
+
+impl<I, T> Iterator for Tuples<I, T>
+ where I: Iterator<Item = T::Item>,
+ T: HomogeneousTuple
+{
+ type Item = T;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ T::collect_from_iter(&mut self.iter, &mut self.buf)
+ }
+}
+
+impl<I, T> Tuples<I, T>
+ where I: Iterator<Item = T::Item>,
+ T: HomogeneousTuple
+{
+ /// Return a buffer with the produced items that was not enough to be grouped in a tuple.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let mut iter = (0..5).tuples();
+ /// assert_eq!(Some((0, 1, 2)), iter.next());
+ /// assert_eq!(None, iter.next());
+ /// itertools::assert_equal(vec![3, 4], iter.into_buffer());
+ /// ```
+ pub fn into_buffer(self) -> TupleBuffer<T> {
+ TupleBuffer::new(self.buf)
+ }
+}
+
+
+/// An iterator over all contiguous windows that produces tuples of a specific size.
+///
+/// See [`.tuple_windows()`](crate::Itertools::tuple_windows) for more
+/// information.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+#[derive(Clone, Debug)]
+pub struct TupleWindows<I, T>
+ where I: Iterator<Item = T::Item>,
+ T: HomogeneousTuple
+{
+ iter: I,
+ last: Option<T>,
+}
+
+/// Create a new tuple windows iterator.
+pub fn tuple_windows<I, T>(mut iter: I) -> TupleWindows<I, T>
+ where I: Iterator<Item = T::Item>,
+ T: HomogeneousTuple,
+ T::Item: Clone
+{
+ use std::iter::once;
+
+ let mut last = None;
+ if T::num_items() != 1 {
+ // put in a duplicate item in front of the tuple; this simplifies
+ // .next() function.
+ if let Some(item) = iter.next() {
+ let iter = once(item.clone()).chain(once(item)).chain(&mut iter);
+ last = T::collect_from_iter_no_buf(iter);
+ }
+ }
+
+ TupleWindows {
+ iter,
+ last,
+ }
+}
+
+impl<I, T> Iterator for TupleWindows<I, T>
+ where I: Iterator<Item = T::Item>,
+ T: HomogeneousTuple + Clone,
+ T::Item: Clone
+{
+ type Item = T;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if T::num_items() == 1 {
+ return T::collect_from_iter_no_buf(&mut self.iter)
+ }
+ if let Some(ref mut last) = self.last {
+ if let Some(new) = self.iter.next() {
+ last.left_shift_push(new);
+ return Some(last.clone());
+ }
+ }
+ None
+ }
+}
+
+impl<I, T> FusedIterator for TupleWindows<I, T>
+ where I: FusedIterator<Item = T::Item>,
+ T: HomogeneousTuple + Clone,
+ T::Item: Clone
+{}
+
+/// An iterator over all windows,wrapping back to the first elements when the
+/// window would otherwise exceed the length of the iterator, producing tuples
+/// of a specific size.
+///
+/// See [`.circular_tuple_windows()`](crate::Itertools::circular_tuple_windows) for more
+/// information.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+#[derive(Debug)]
+pub struct CircularTupleWindows<I, T: Clone>
+ where I: Iterator<Item = T::Item> + Clone,
+ T: TupleCollect + Clone
+{
+ iter: Take<TupleWindows<Cycle<I>, T>>,
+ phantom_data: PhantomData<T>
+}
+
+pub fn circular_tuple_windows<I, T>(iter: I) -> CircularTupleWindows<I, T>
+ where I: Iterator<Item = T::Item> + Clone + ExactSizeIterator,
+ T: TupleCollect + Clone,
+ T::Item: Clone
+{
+ let len = iter.len();
+ let iter = tuple_windows(iter.cycle()).take(len);
+
+ CircularTupleWindows {
+ iter,
+ phantom_data: PhantomData{}
+ }
+}
+
+impl<I, T> Iterator for CircularTupleWindows<I, T>
+ where I: Iterator<Item = T::Item> + Clone,
+ T: TupleCollect + Clone,
+ T::Item: Clone
+{
+ type Item = T;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ self.iter.next()
+ }
+}
+
+pub trait TupleCollect: Sized {
+ type Item;
+ type Buffer: Default + AsRef<[Option<Self::Item>]> + AsMut<[Option<Self::Item>]>;
+
+ fn collect_from_iter<I>(iter: I, buf: &mut Self::Buffer) -> Option<Self>
+ where I: IntoIterator<Item = Self::Item>;
+
+ fn collect_from_iter_no_buf<I>(iter: I) -> Option<Self>
+ where I: IntoIterator<Item = Self::Item>;
+
+ fn num_items() -> usize;
+
+ fn left_shift_push(&mut self, item: Self::Item);
+}
+
+macro_rules! count_ident{
+ () => {0};
+ ($i0:ident, $($i:ident,)*) => {1 + count_ident!($($i,)*)};
+}
+macro_rules! rev_for_each_ident{
+ ($m:ident, ) => {};
+ ($m:ident, $i0:ident, $($i:ident,)*) => {
+ rev_for_each_ident!($m, $($i,)*);
+ $m!($i0);
+ };
+}
+
+macro_rules! impl_tuple_collect {
+ ($dummy:ident,) => {}; // stop
+ ($dummy:ident, $($Y:ident,)*) => (
+ impl_tuple_collect!($($Y,)*);
+ impl<A> TupleCollect for ($(ignore_ident!($Y, A),)*) {
+ type Item = A;
+ type Buffer = [Option<A>; count_ident!($($Y,)*) - 1];
+
+ #[allow(unused_assignments, unused_mut)]
+ fn collect_from_iter<I>(iter: I, buf: &mut Self::Buffer) -> Option<Self>
+ where I: IntoIterator<Item = A>
+ {
+ let mut iter = iter.into_iter();
+ $(
+ let mut $Y = None;
+ )*
+
+ loop {
+ $(
+ $Y = iter.next();
+ if $Y.is_none() {
+ break
+ }
+ )*
+ return Some(($($Y.unwrap()),*,))
+ }
+
+ let mut i = 0;
+ let mut s = buf.as_mut();
+ $(
+ if i < s.len() {
+ s[i] = $Y;
+ i += 1;
+ }
+ )*
+ return None;
+ }
+
+ fn collect_from_iter_no_buf<I>(iter: I) -> Option<Self>
+ where I: IntoIterator<Item = A>
+ {
+ let mut iter = iter.into_iter();
+
+ Some(($(
+ { let $Y = iter.next()?; $Y },
+ )*))
+ }
+
+ fn num_items() -> usize {
+ count_ident!($($Y,)*)
+ }
+
+ fn left_shift_push(&mut self, mut item: A) {
+ use std::mem::replace;
+
+ let &mut ($(ref mut $Y),*,) = self;
+ macro_rules! replace_item{($i:ident) => {
+ item = replace($i, item);
+ }}
+ rev_for_each_ident!(replace_item, $($Y,)*);
+ drop(item);
+ }
+ }
+ )
+}
+impl_tuple_collect!(dummy, a, b, c, d, e, f, g, h, i, j, k, l,);
diff --git a/vendor/itertools-0.10.5/src/unique_impl.rs b/vendor/itertools-0.10.5/src/unique_impl.rs
new file mode 100644
index 000000000..4e81e78ec
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/unique_impl.rs
@@ -0,0 +1,179 @@
+use std::collections::HashMap;
+use std::collections::hash_map::Entry;
+use std::hash::Hash;
+use std::fmt;
+use std::iter::FusedIterator;
+
+/// An iterator adapter to filter out duplicate elements.
+///
+/// See [`.unique_by()`](crate::Itertools::unique) for more information.
+#[derive(Clone)]
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct UniqueBy<I: Iterator, V, F> {
+ iter: I,
+ // Use a Hashmap for the Entry API in order to prevent hashing twice.
+ // This can maybe be replaced with a HashSet once `get_or_insert_with`
+ // or a proper Entry API for Hashset is stable and meets this msrv
+ used: HashMap<V, ()>,
+ f: F,
+}
+
+impl<I, V, F> fmt::Debug for UniqueBy<I, V, F>
+ where I: Iterator + fmt::Debug,
+ V: fmt::Debug + Hash + Eq,
+{
+ debug_fmt_fields!(UniqueBy, iter, used);
+}
+
+/// Create a new `UniqueBy` iterator.
+pub fn unique_by<I, V, F>(iter: I, f: F) -> UniqueBy<I, V, F>
+ where V: Eq + Hash,
+ F: FnMut(&I::Item) -> V,
+ I: Iterator,
+{
+ UniqueBy {
+ iter,
+ used: HashMap::new(),
+ f,
+ }
+}
+
+// count the number of new unique keys in iterable (`used` is the set already seen)
+fn count_new_keys<I, K>(mut used: HashMap<K, ()>, iterable: I) -> usize
+ where I: IntoIterator<Item=K>,
+ K: Hash + Eq,
+{
+ let iter = iterable.into_iter();
+ let current_used = used.len();
+ used.extend(iter.map(|key| (key, ())));
+ used.len() - current_used
+}
+
+impl<I, V, F> Iterator for UniqueBy<I, V, F>
+ where I: Iterator,
+ V: Eq + Hash,
+ F: FnMut(&I::Item) -> V
+{
+ type Item = I::Item;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ while let Some(v) = self.iter.next() {
+ let key = (self.f)(&v);
+ if self.used.insert(key, ()).is_none() {
+ return Some(v);
+ }
+ }
+ None
+ }
+
+ #[inline]
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ let (low, hi) = self.iter.size_hint();
+ ((low > 0 && self.used.is_empty()) as usize, hi)
+ }
+
+ fn count(self) -> usize {
+ let mut key_f = self.f;
+ count_new_keys(self.used, self.iter.map(move |elt| key_f(&elt)))
+ }
+}
+
+impl<I, V, F> DoubleEndedIterator for UniqueBy<I, V, F>
+ where I: DoubleEndedIterator,
+ V: Eq + Hash,
+ F: FnMut(&I::Item) -> V
+{
+ fn next_back(&mut self) -> Option<Self::Item> {
+ while let Some(v) = self.iter.next_back() {
+ let key = (self.f)(&v);
+ if self.used.insert(key, ()).is_none() {
+ return Some(v);
+ }
+ }
+ None
+ }
+}
+
+impl<I, V, F> FusedIterator for UniqueBy<I, V, F>
+ where I: FusedIterator,
+ V: Eq + Hash,
+ F: FnMut(&I::Item) -> V
+{}
+
+impl<I> Iterator for Unique<I>
+ where I: Iterator,
+ I::Item: Eq + Hash + Clone
+{
+ type Item = I::Item;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ while let Some(v) = self.iter.iter.next() {
+ if let Entry::Vacant(entry) = self.iter.used.entry(v) {
+ let elt = entry.key().clone();
+ entry.insert(());
+ return Some(elt);
+ }
+ }
+ None
+ }
+
+ #[inline]
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ let (low, hi) = self.iter.iter.size_hint();
+ ((low > 0 && self.iter.used.is_empty()) as usize, hi)
+ }
+
+ fn count(self) -> usize {
+ count_new_keys(self.iter.used, self.iter.iter)
+ }
+}
+
+impl<I> DoubleEndedIterator for Unique<I>
+ where I: DoubleEndedIterator,
+ I::Item: Eq + Hash + Clone
+{
+ fn next_back(&mut self) -> Option<Self::Item> {
+ while let Some(v) = self.iter.iter.next_back() {
+ if let Entry::Vacant(entry) = self.iter.used.entry(v) {
+ let elt = entry.key().clone();
+ entry.insert(());
+ return Some(elt);
+ }
+ }
+ None
+ }
+}
+
+impl<I> FusedIterator for Unique<I>
+ where I: FusedIterator,
+ I::Item: Eq + Hash + Clone
+{}
+
+/// An iterator adapter to filter out duplicate elements.
+///
+/// See [`.unique()`](crate::Itertools::unique) for more information.
+#[derive(Clone)]
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct Unique<I: Iterator> {
+ iter: UniqueBy<I, I::Item, ()>,
+}
+
+impl<I> fmt::Debug for Unique<I>
+ where I: Iterator + fmt::Debug,
+ I::Item: Hash + Eq + fmt::Debug,
+{
+ debug_fmt_fields!(Unique, iter);
+}
+
+pub fn unique<I>(iter: I) -> Unique<I>
+ where I: Iterator,
+ I::Item: Eq + Hash,
+{
+ Unique {
+ iter: UniqueBy {
+ iter,
+ used: HashMap::new(),
+ f: (),
+ }
+ }
+}
diff --git a/vendor/itertools-0.10.5/src/unziptuple.rs b/vendor/itertools-0.10.5/src/unziptuple.rs
new file mode 100644
index 000000000..7af29ec4a
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/unziptuple.rs
@@ -0,0 +1,80 @@
+/// Converts an iterator of tuples into a tuple of containers.
+///
+/// `unzip()` consumes an entire iterator of n-ary tuples, producing `n` collections, one for each
+/// column.
+///
+/// This function is, in some sense, the opposite of [`multizip`].
+///
+/// ```
+/// use itertools::multiunzip;
+///
+/// let inputs = vec![(1, 2, 3), (4, 5, 6), (7, 8, 9)];
+///
+/// let (a, b, c): (Vec<_>, Vec<_>, Vec<_>) = multiunzip(inputs);
+///
+/// assert_eq!(a, vec![1, 4, 7]);
+/// assert_eq!(b, vec![2, 5, 8]);
+/// assert_eq!(c, vec![3, 6, 9]);
+/// ```
+///
+/// [`multizip`]: crate::multizip
+pub fn multiunzip<FromI, I>(i: I) -> FromI
+where
+ I: IntoIterator,
+ I::IntoIter: MultiUnzip<FromI>,
+{
+ i.into_iter().multiunzip()
+}
+
+/// An iterator that can be unzipped into multiple collections.
+///
+/// See [`.multiunzip()`](crate::Itertools::multiunzip) for more information.
+pub trait MultiUnzip<FromI>: Iterator {
+ /// Unzip this iterator into multiple collections.
+ fn multiunzip(self) -> FromI;
+}
+
+macro_rules! impl_unzip_iter {
+ ($($T:ident => $FromT:ident),*) => (
+ #[allow(non_snake_case)]
+ impl<IT: Iterator<Item = ($($T,)*)>, $($T, $FromT: Default + Extend<$T>),* > MultiUnzip<($($FromT,)*)> for IT {
+ fn multiunzip(self) -> ($($FromT,)*) {
+ // This implementation mirrors the logic of Iterator::unzip resp. Extend for (A, B) as close as possible.
+ // Unfortunately a lot of the used api there is still unstable (https://github.com/rust-lang/rust/issues/72631).
+ //
+ // Iterator::unzip: https://doc.rust-lang.org/src/core/iter/traits/iterator.rs.html#2825-2865
+ // Extend for (A, B): https://doc.rust-lang.org/src/core/iter/traits/collect.rs.html#370-411
+
+ let mut res = ($($FromT::default(),)*);
+ let ($($FromT,)*) = &mut res;
+
+ // Still unstable #72631
+ // let (lower_bound, _) = self.size_hint();
+ // if lower_bound > 0 {
+ // $($FromT.extend_reserve(lower_bound);)*
+ // }
+
+ self.fold((), |(), ($($T,)*)| {
+ // Still unstable #72631
+ // $( $FromT.extend_one($T); )*
+ $( $FromT.extend(std::iter::once($T)); )*
+ });
+ res
+ }
+ }
+ );
+}
+
+impl_unzip_iter!();
+impl_unzip_iter!(A => FromA);
+impl_unzip_iter!(A => FromA, B => FromB);
+impl_unzip_iter!(A => FromA, B => FromB, C => FromC);
+impl_unzip_iter!(A => FromA, B => FromB, C => FromC, D => FromD);
+impl_unzip_iter!(A => FromA, B => FromB, C => FromC, D => FromD, E => FromE);
+impl_unzip_iter!(A => FromA, B => FromB, C => FromC, D => FromD, E => FromE, F => FromF);
+impl_unzip_iter!(A => FromA, B => FromB, C => FromC, D => FromD, E => FromE, F => FromF, G => FromG);
+impl_unzip_iter!(A => FromA, B => FromB, C => FromC, D => FromD, E => FromE, F => FromF, G => FromG, H => FromH);
+impl_unzip_iter!(A => FromA, B => FromB, C => FromC, D => FromD, E => FromE, F => FromF, G => FromG, H => FromH, I => FromI);
+impl_unzip_iter!(A => FromA, B => FromB, C => FromC, D => FromD, E => FromE, F => FromF, G => FromG, H => FromH, I => FromI, J => FromJ);
+impl_unzip_iter!(A => FromA, B => FromB, C => FromC, D => FromD, E => FromE, F => FromF, G => FromG, H => FromH, I => FromI, J => FromJ, K => FromK);
+impl_unzip_iter!(A => FromA, B => FromB, C => FromC, D => FromD, E => FromE, F => FromF, G => FromG, H => FromH, I => FromI, J => FromJ, K => FromK, L => FromL);
diff --git a/vendor/itertools-0.10.5/src/with_position.rs b/vendor/itertools-0.10.5/src/with_position.rs
new file mode 100644
index 000000000..1388503d1
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/with_position.rs
@@ -0,0 +1,100 @@
+use std::iter::{Fuse,Peekable, FusedIterator};
+
+/// An iterator adaptor that wraps each element in an [`Position`].
+///
+/// Iterator element type is `Position<I::Item>`.
+///
+/// See [`.with_position()`](crate::Itertools::with_position) for more information.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct WithPosition<I>
+ where I: Iterator,
+{
+ handled_first: bool,
+ peekable: Peekable<Fuse<I>>,
+}
+
+impl<I> Clone for WithPosition<I>
+ where I: Clone + Iterator,
+ I::Item: Clone,
+{
+ clone_fields!(handled_first, peekable);
+}
+
+/// Create a new `WithPosition` iterator.
+pub fn with_position<I>(iter: I) -> WithPosition<I>
+ where I: Iterator,
+{
+ WithPosition {
+ handled_first: false,
+ peekable: iter.fuse().peekable(),
+ }
+}
+
+/// A value yielded by `WithPosition`.
+/// Indicates the position of this element in the iterator results.
+///
+/// See [`.with_position()`](crate::Itertools::with_position) for more information.
+#[derive(Copy, Clone, Debug, PartialEq)]
+pub enum Position<T> {
+ /// This is the first element.
+ First(T),
+ /// This is neither the first nor the last element.
+ Middle(T),
+ /// This is the last element.
+ Last(T),
+ /// This is the only element.
+ Only(T),
+}
+
+impl<T> Position<T> {
+ /// Return the inner value.
+ pub fn into_inner(self) -> T {
+ match self {
+ Position::First(x) |
+ Position::Middle(x) |
+ Position::Last(x) |
+ Position::Only(x) => x,
+ }
+ }
+}
+
+impl<I: Iterator> Iterator for WithPosition<I> {
+ type Item = Position<I::Item>;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ match self.peekable.next() {
+ Some(item) => {
+ if !self.handled_first {
+ // Haven't seen the first item yet, and there is one to give.
+ self.handled_first = true;
+ // Peek to see if this is also the last item,
+ // in which case tag it as `Only`.
+ match self.peekable.peek() {
+ Some(_) => Some(Position::First(item)),
+ None => Some(Position::Only(item)),
+ }
+ } else {
+ // Have seen the first item, and there's something left.
+ // Peek to see if this is the last item.
+ match self.peekable.peek() {
+ Some(_) => Some(Position::Middle(item)),
+ None => Some(Position::Last(item)),
+ }
+ }
+ }
+ // Iterator is finished.
+ None => None,
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ self.peekable.size_hint()
+ }
+}
+
+impl<I> ExactSizeIterator for WithPosition<I>
+ where I: ExactSizeIterator,
+{ }
+
+impl<I: Iterator> FusedIterator for WithPosition<I>
+{}
diff --git a/vendor/itertools-0.10.5/src/zip_eq_impl.rs b/vendor/itertools-0.10.5/src/zip_eq_impl.rs
new file mode 100644
index 000000000..a079b326a
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/zip_eq_impl.rs
@@ -0,0 +1,60 @@
+use super::size_hint;
+
+/// An iterator which iterates two other iterators simultaneously
+///
+/// See [`.zip_eq()`](crate::Itertools::zip_eq) for more information.
+#[derive(Clone, Debug)]
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct ZipEq<I, J> {
+ a: I,
+ b: J,
+}
+
+/// Iterate `i` and `j` in lock step.
+///
+/// **Panics** if the iterators are not of the same length.
+///
+/// [`IntoIterator`] enabled version of [`Itertools::zip_eq`](crate::Itertools::zip_eq).
+///
+/// ```
+/// use itertools::zip_eq;
+///
+/// let data = [1, 2, 3, 4, 5];
+/// for (a, b) in zip_eq(&data[..data.len() - 1], &data[1..]) {
+/// /* loop body */
+/// }
+/// ```
+pub fn zip_eq<I, J>(i: I, j: J) -> ZipEq<I::IntoIter, J::IntoIter>
+ where I: IntoIterator,
+ J: IntoIterator
+{
+ ZipEq {
+ a: i.into_iter(),
+ b: j.into_iter(),
+ }
+}
+
+impl<I, J> Iterator for ZipEq<I, J>
+ where I: Iterator,
+ J: Iterator
+{
+ type Item = (I::Item, J::Item);
+
+ fn next(&mut self) -> Option<Self::Item> {
+ match (self.a.next(), self.b.next()) {
+ (None, None) => None,
+ (Some(a), Some(b)) => Some((a, b)),
+ (None, Some(_)) | (Some(_), None) =>
+ panic!("itertools: .zip_eq() reached end of one iterator before the other")
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ size_hint::min(self.a.size_hint(), self.b.size_hint())
+ }
+}
+
+impl<I, J> ExactSizeIterator for ZipEq<I, J>
+ where I: ExactSizeIterator,
+ J: ExactSizeIterator
+{}
diff --git a/vendor/itertools-0.10.5/src/zip_longest.rs b/vendor/itertools-0.10.5/src/zip_longest.rs
new file mode 100644
index 000000000..cb9a7bacb
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/zip_longest.rs
@@ -0,0 +1,83 @@
+use std::cmp::Ordering::{Equal, Greater, Less};
+use super::size_hint;
+use std::iter::{Fuse, FusedIterator};
+
+use crate::either_or_both::EitherOrBoth;
+
+// ZipLongest originally written by SimonSapin,
+// and dedicated to itertools https://github.com/rust-lang/rust/pull/19283
+
+/// An iterator which iterates two other iterators simultaneously
+///
+/// This iterator is *fused*.
+///
+/// See [`.zip_longest()`](crate::Itertools::zip_longest) for more information.
+#[derive(Clone, Debug)]
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct ZipLongest<T, U> {
+ a: Fuse<T>,
+ b: Fuse<U>,
+}
+
+/// Create a new `ZipLongest` iterator.
+pub fn zip_longest<T, U>(a: T, b: U) -> ZipLongest<T, U>
+ where T: Iterator,
+ U: Iterator
+{
+ ZipLongest {
+ a: a.fuse(),
+ b: b.fuse(),
+ }
+}
+
+impl<T, U> Iterator for ZipLongest<T, U>
+ where T: Iterator,
+ U: Iterator
+{
+ type Item = EitherOrBoth<T::Item, U::Item>;
+
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ match (self.a.next(), self.b.next()) {
+ (None, None) => None,
+ (Some(a), None) => Some(EitherOrBoth::Left(a)),
+ (None, Some(b)) => Some(EitherOrBoth::Right(b)),
+ (Some(a), Some(b)) => Some(EitherOrBoth::Both(a, b)),
+ }
+ }
+
+ #[inline]
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ size_hint::max(self.a.size_hint(), self.b.size_hint())
+ }
+}
+
+impl<T, U> DoubleEndedIterator for ZipLongest<T, U>
+ where T: DoubleEndedIterator + ExactSizeIterator,
+ U: DoubleEndedIterator + ExactSizeIterator
+{
+ #[inline]
+ fn next_back(&mut self) -> Option<Self::Item> {
+ match self.a.len().cmp(&self.b.len()) {
+ Equal => match (self.a.next_back(), self.b.next_back()) {
+ (None, None) => None,
+ (Some(a), Some(b)) => Some(EitherOrBoth::Both(a, b)),
+ // These can only happen if .len() is inconsistent with .next_back()
+ (Some(a), None) => Some(EitherOrBoth::Left(a)),
+ (None, Some(b)) => Some(EitherOrBoth::Right(b)),
+ },
+ Greater => self.a.next_back().map(EitherOrBoth::Left),
+ Less => self.b.next_back().map(EitherOrBoth::Right),
+ }
+ }
+}
+
+impl<T, U> ExactSizeIterator for ZipLongest<T, U>
+ where T: ExactSizeIterator,
+ U: ExactSizeIterator
+{}
+
+impl<T, U> FusedIterator for ZipLongest<T, U>
+ where T: Iterator,
+ U: Iterator
+{}
diff --git a/vendor/itertools-0.10.5/src/ziptuple.rs b/vendor/itertools-0.10.5/src/ziptuple.rs
new file mode 100644
index 000000000..6d3a584c4
--- /dev/null
+++ b/vendor/itertools-0.10.5/src/ziptuple.rs
@@ -0,0 +1,138 @@
+use super::size_hint;
+
+/// See [`multizip`] for more information.
+#[derive(Clone, Debug)]
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct Zip<T> {
+ t: T,
+}
+
+/// An iterator that generalizes *.zip()* and allows running multiple iterators in lockstep.
+///
+/// The iterator `Zip<(I, J, ..., M)>` is formed from a tuple of iterators (or values that
+/// implement [`IntoIterator`]) and yields elements
+/// until any of the subiterators yields `None`.
+///
+/// The iterator element type is a tuple like like `(A, B, ..., E)` where `A` to `E` are the
+/// element types of the subiterator.
+///
+/// **Note:** The result of this macro is a value of a named type (`Zip<(I, J,
+/// ..)>` of each component iterator `I, J, ...`) if each component iterator is
+/// nameable.
+///
+/// Prefer [`izip!()`] over `multizip` for the performance benefits of using the
+/// standard library `.zip()`. Prefer `multizip` if a nameable type is needed.
+///
+/// ```
+/// use itertools::multizip;
+///
+/// // iterate over three sequences side-by-side
+/// let mut results = [0, 0, 0, 0];
+/// let inputs = [3, 7, 9, 6];
+///
+/// for (r, index, input) in multizip((&mut results, 0..10, &inputs)) {
+/// *r = index * 10 + input;
+/// }
+///
+/// assert_eq!(results, [0 + 3, 10 + 7, 29, 36]);
+/// ```
+/// [`izip!()`]: crate::izip
+pub fn multizip<T, U>(t: U) -> Zip<T>
+ where Zip<T>: From<U>,
+ Zip<T>: Iterator,
+{
+ Zip::from(t)
+}
+
+macro_rules! impl_zip_iter {
+ ($($B:ident),*) => (
+ #[allow(non_snake_case)]
+ impl<$($B: IntoIterator),*> From<($($B,)*)> for Zip<($($B::IntoIter,)*)> {
+ fn from(t: ($($B,)*)) -> Self {
+ let ($($B,)*) = t;
+ Zip { t: ($($B.into_iter(),)*) }
+ }
+ }
+
+ #[allow(non_snake_case)]
+ #[allow(unused_assignments)]
+ impl<$($B),*> Iterator for Zip<($($B,)*)>
+ where
+ $(
+ $B: Iterator,
+ )*
+ {
+ type Item = ($($B::Item,)*);
+
+ fn next(&mut self) -> Option<Self::Item>
+ {
+ let ($(ref mut $B,)*) = self.t;
+
+ // NOTE: Just like iter::Zip, we check the iterators
+ // for None in order. We may finish unevenly (some
+ // iterators gave n + 1 elements, some only n).
+ $(
+ let $B = match $B.next() {
+ None => return None,
+ Some(elt) => elt
+ };
+ )*
+ Some(($($B,)*))
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>)
+ {
+ let sh = (::std::usize::MAX, None);
+ let ($(ref $B,)*) = self.t;
+ $(
+ let sh = size_hint::min($B.size_hint(), sh);
+ )*
+ sh
+ }
+ }
+
+ #[allow(non_snake_case)]
+ impl<$($B),*> ExactSizeIterator for Zip<($($B,)*)> where
+ $(
+ $B: ExactSizeIterator,
+ )*
+ { }
+
+ #[allow(non_snake_case)]
+ impl<$($B),*> DoubleEndedIterator for Zip<($($B,)*)> where
+ $(
+ $B: DoubleEndedIterator + ExactSizeIterator,
+ )*
+ {
+ #[inline]
+ fn next_back(&mut self) -> Option<Self::Item> {
+ let ($(ref mut $B,)*) = self.t;
+ let size = *[$( $B.len(), )*].iter().min().unwrap();
+
+ $(
+ if $B.len() != size {
+ for _ in 0..$B.len() - size { $B.next_back(); }
+ }
+ )*
+
+ match ($($B.next_back(),)*) {
+ ($(Some($B),)*) => Some(($($B,)*)),
+ _ => None,
+ }
+ }
+ }
+ );
+}
+
+impl_zip_iter!(A);
+impl_zip_iter!(A, B);
+impl_zip_iter!(A, B, C);
+impl_zip_iter!(A, B, C, D);
+impl_zip_iter!(A, B, C, D, E);
+impl_zip_iter!(A, B, C, D, E, F);
+impl_zip_iter!(A, B, C, D, E, F, G);
+impl_zip_iter!(A, B, C, D, E, F, G, H);
+impl_zip_iter!(A, B, C, D, E, F, G, H, I);
+impl_zip_iter!(A, B, C, D, E, F, G, H, I, J);
+impl_zip_iter!(A, B, C, D, E, F, G, H, I, J, K);
+impl_zip_iter!(A, B, C, D, E, F, G, H, I, J, K, L);
diff --git a/vendor/itertools-0.10.5/tests/adaptors_no_collect.rs b/vendor/itertools-0.10.5/tests/adaptors_no_collect.rs
new file mode 100644
index 000000000..103db23f1
--- /dev/null
+++ b/vendor/itertools-0.10.5/tests/adaptors_no_collect.rs
@@ -0,0 +1,46 @@
+use itertools::Itertools;
+
+struct PanickingCounter {
+ curr: usize,
+ max: usize,
+}
+
+impl Iterator for PanickingCounter {
+ type Item = ();
+
+ fn next(&mut self) -> Option<Self::Item> {
+ self.curr += 1;
+
+ assert_ne!(
+ self.curr, self.max,
+ "Input iterator reached maximum of {} suggesting collection by adaptor",
+ self.max
+ );
+
+ Some(())
+ }
+}
+
+fn no_collect_test<A, T>(to_adaptor: T)
+ where A: Iterator, T: Fn(PanickingCounter) -> A
+{
+ let counter = PanickingCounter { curr: 0, max: 10_000 };
+ let adaptor = to_adaptor(counter);
+
+ for _ in adaptor.take(5) {}
+}
+
+#[test]
+fn permutations_no_collect() {
+ no_collect_test(|iter| iter.permutations(5))
+}
+
+#[test]
+fn combinations_no_collect() {
+ no_collect_test(|iter| iter.combinations(5))
+}
+
+#[test]
+fn combinations_with_replacement_no_collect() {
+ no_collect_test(|iter| iter.combinations_with_replacement(5))
+} \ No newline at end of file
diff --git a/vendor/itertools-0.10.5/tests/flatten_ok.rs b/vendor/itertools-0.10.5/tests/flatten_ok.rs
new file mode 100644
index 000000000..bf835b5d7
--- /dev/null
+++ b/vendor/itertools-0.10.5/tests/flatten_ok.rs
@@ -0,0 +1,76 @@
+use itertools::{assert_equal, Itertools};
+use std::{ops::Range, vec::IntoIter};
+
+fn mix_data() -> IntoIter<Result<Range<i32>, bool>> {
+ vec![Ok(0..2), Err(false), Ok(2..4), Err(true), Ok(4..6)].into_iter()
+}
+
+fn ok_data() -> IntoIter<Result<Range<i32>, bool>> {
+ vec![Ok(0..2), Ok(2..4), Ok(4..6)].into_iter()
+}
+
+#[test]
+fn flatten_ok_mixed_expected_forward() {
+ assert_equal(
+ mix_data().flatten_ok(),
+ vec![
+ Ok(0),
+ Ok(1),
+ Err(false),
+ Ok(2),
+ Ok(3),
+ Err(true),
+ Ok(4),
+ Ok(5),
+ ],
+ );
+}
+
+#[test]
+fn flatten_ok_mixed_expected_reverse() {
+ assert_equal(
+ mix_data().flatten_ok().rev(),
+ vec![
+ Ok(5),
+ Ok(4),
+ Err(true),
+ Ok(3),
+ Ok(2),
+ Err(false),
+ Ok(1),
+ Ok(0),
+ ],
+ );
+}
+
+#[test]
+fn flatten_ok_collect_mixed_forward() {
+ assert_eq!(
+ mix_data().flatten_ok().collect::<Result<Vec<_>, _>>(),
+ Err(false)
+ );
+}
+
+#[test]
+fn flatten_ok_collect_mixed_reverse() {
+ assert_eq!(
+ mix_data().flatten_ok().rev().collect::<Result<Vec<_>, _>>(),
+ Err(true)
+ );
+}
+
+#[test]
+fn flatten_ok_collect_ok_forward() {
+ assert_eq!(
+ ok_data().flatten_ok().collect::<Result<Vec<_>, _>>(),
+ Ok((0..6).collect())
+ );
+}
+
+#[test]
+fn flatten_ok_collect_ok_reverse() {
+ assert_eq!(
+ ok_data().flatten_ok().rev().collect::<Result<Vec<_>, _>>(),
+ Ok((0..6).rev().collect())
+ );
+}
diff --git a/vendor/itertools-0.10.5/tests/macros_hygiene.rs b/vendor/itertools-0.10.5/tests/macros_hygiene.rs
new file mode 100644
index 000000000..d1111245d
--- /dev/null
+++ b/vendor/itertools-0.10.5/tests/macros_hygiene.rs
@@ -0,0 +1,13 @@
+#[test]
+fn iproduct_hygiene() {
+ let _ = itertools::iproduct!(0..6);
+ let _ = itertools::iproduct!(0..6, 0..9);
+ let _ = itertools::iproduct!(0..6, 0..9, 0..12);
+}
+
+#[test]
+fn izip_hygiene() {
+ let _ = itertools::izip!(0..6);
+ let _ = itertools::izip!(0..6, 0..9);
+ let _ = itertools::izip!(0..6, 0..9, 0..12);
+}
diff --git a/vendor/itertools-0.10.5/tests/merge_join.rs b/vendor/itertools-0.10.5/tests/merge_join.rs
new file mode 100644
index 000000000..3280b7d4e
--- /dev/null
+++ b/vendor/itertools-0.10.5/tests/merge_join.rs
@@ -0,0 +1,108 @@
+use itertools::EitherOrBoth;
+use itertools::free::merge_join_by;
+
+#[test]
+fn empty() {
+ let left: Vec<u32> = vec![];
+ let right: Vec<u32> = vec![];
+ let expected_result: Vec<EitherOrBoth<u32, u32>> = vec![];
+ let actual_result = merge_join_by(left, right, |l, r| l.cmp(r))
+ .collect::<Vec<_>>();
+ assert_eq!(expected_result, actual_result);
+}
+
+#[test]
+fn left_only() {
+ let left: Vec<u32> = vec![1,2,3];
+ let right: Vec<u32> = vec![];
+ let expected_result: Vec<EitherOrBoth<u32, u32>> = vec![
+ EitherOrBoth::Left(1),
+ EitherOrBoth::Left(2),
+ EitherOrBoth::Left(3)
+ ];
+ let actual_result = merge_join_by(left, right, |l, r| l.cmp(r))
+ .collect::<Vec<_>>();
+ assert_eq!(expected_result, actual_result);
+}
+
+#[test]
+fn right_only() {
+ let left: Vec<u32> = vec![];
+ let right: Vec<u32> = vec![1,2,3];
+ let expected_result: Vec<EitherOrBoth<u32, u32>> = vec![
+ EitherOrBoth::Right(1),
+ EitherOrBoth::Right(2),
+ EitherOrBoth::Right(3)
+ ];
+ let actual_result = merge_join_by(left, right, |l, r| l.cmp(r))
+ .collect::<Vec<_>>();
+ assert_eq!(expected_result, actual_result);
+}
+
+#[test]
+fn first_left_then_right() {
+ let left: Vec<u32> = vec![1,2,3];
+ let right: Vec<u32> = vec![4,5,6];
+ let expected_result: Vec<EitherOrBoth<u32, u32>> = vec![
+ EitherOrBoth::Left(1),
+ EitherOrBoth::Left(2),
+ EitherOrBoth::Left(3),
+ EitherOrBoth::Right(4),
+ EitherOrBoth::Right(5),
+ EitherOrBoth::Right(6)
+ ];
+ let actual_result = merge_join_by(left, right, |l, r| l.cmp(r))
+ .collect::<Vec<_>>();
+ assert_eq!(expected_result, actual_result);
+}
+
+#[test]
+fn first_right_then_left() {
+ let left: Vec<u32> = vec![4,5,6];
+ let right: Vec<u32> = vec![1,2,3];
+ let expected_result: Vec<EitherOrBoth<u32, u32>> = vec![
+ EitherOrBoth::Right(1),
+ EitherOrBoth::Right(2),
+ EitherOrBoth::Right(3),
+ EitherOrBoth::Left(4),
+ EitherOrBoth::Left(5),
+ EitherOrBoth::Left(6)
+ ];
+ let actual_result = merge_join_by(left, right, |l, r| l.cmp(r))
+ .collect::<Vec<_>>();
+ assert_eq!(expected_result, actual_result);
+}
+
+#[test]
+fn interspersed_left_and_right() {
+ let left: Vec<u32> = vec![1,3,5];
+ let right: Vec<u32> = vec![2,4,6];
+ let expected_result: Vec<EitherOrBoth<u32, u32>> = vec![
+ EitherOrBoth::Left(1),
+ EitherOrBoth::Right(2),
+ EitherOrBoth::Left(3),
+ EitherOrBoth::Right(4),
+ EitherOrBoth::Left(5),
+ EitherOrBoth::Right(6)
+ ];
+ let actual_result = merge_join_by(left, right, |l, r| l.cmp(r))
+ .collect::<Vec<_>>();
+ assert_eq!(expected_result, actual_result);
+}
+
+#[test]
+fn overlapping_left_and_right() {
+ let left: Vec<u32> = vec![1,3,4,6];
+ let right: Vec<u32> = vec![2,3,4,5];
+ let expected_result: Vec<EitherOrBoth<u32, u32>> = vec![
+ EitherOrBoth::Left(1),
+ EitherOrBoth::Right(2),
+ EitherOrBoth::Both(3, 3),
+ EitherOrBoth::Both(4, 4),
+ EitherOrBoth::Right(5),
+ EitherOrBoth::Left(6)
+ ];
+ let actual_result = merge_join_by(left, right, |l, r| l.cmp(r))
+ .collect::<Vec<_>>();
+ assert_eq!(expected_result, actual_result);
+}
diff --git a/vendor/itertools-0.10.5/tests/peeking_take_while.rs b/vendor/itertools-0.10.5/tests/peeking_take_while.rs
new file mode 100644
index 000000000..a1147027e
--- /dev/null
+++ b/vendor/itertools-0.10.5/tests/peeking_take_while.rs
@@ -0,0 +1,50 @@
+use itertools::Itertools;
+use itertools::{put_back, put_back_n};
+
+#[test]
+fn peeking_take_while_peekable() {
+ let mut r = (0..10).peekable();
+ r.peeking_take_while(|x| *x <= 3).count();
+ assert_eq!(r.next(), Some(4));
+}
+
+#[test]
+fn peeking_take_while_put_back() {
+ let mut r = put_back(0..10);
+ r.peeking_take_while(|x| *x <= 3).count();
+ assert_eq!(r.next(), Some(4));
+ r.peeking_take_while(|_| true).count();
+ assert_eq!(r.next(), None);
+}
+
+#[test]
+fn peeking_take_while_put_back_n() {
+ let mut r = put_back_n(6..10);
+ for elt in (0..6).rev() {
+ r.put_back(elt);
+ }
+ r.peeking_take_while(|x| *x <= 3).count();
+ assert_eq!(r.next(), Some(4));
+ r.peeking_take_while(|_| true).count();
+ assert_eq!(r.next(), None);
+}
+
+#[test]
+fn peeking_take_while_slice_iter() {
+ let v = [1, 2, 3, 4, 5, 6];
+ let mut r = v.iter();
+ r.peeking_take_while(|x| **x <= 3).count();
+ assert_eq!(r.next(), Some(&4));
+ r.peeking_take_while(|_| true).count();
+ assert_eq!(r.next(), None);
+}
+
+#[test]
+fn peeking_take_while_slice_iter_rev() {
+ let v = [1, 2, 3, 4, 5, 6];
+ let mut r = v.iter().rev();
+ r.peeking_take_while(|x| **x >= 3).count();
+ assert_eq!(r.next(), Some(&2));
+ r.peeking_take_while(|_| true).count();
+ assert_eq!(r.next(), None);
+}
diff --git a/vendor/itertools-0.10.5/tests/quick.rs b/vendor/itertools-0.10.5/tests/quick.rs
new file mode 100644
index 000000000..0adcf1ad7
--- /dev/null
+++ b/vendor/itertools-0.10.5/tests/quick.rs
@@ -0,0 +1,1749 @@
+//! The purpose of these tests is to cover corner cases of iterators
+//! and adaptors.
+//!
+//! In particular we test the tedious size_hint and exact size correctness.
+
+use quickcheck as qc;
+use std::default::Default;
+use std::num::Wrapping;
+use std::ops::Range;
+use std::cmp::{max, min, Ordering};
+use std::collections::{HashMap, HashSet};
+use itertools::Itertools;
+use itertools::{
+ multizip,
+ EitherOrBoth,
+ iproduct,
+ izip,
+};
+use itertools::free::{
+ cloned,
+ enumerate,
+ multipeek,
+ peek_nth,
+ put_back,
+ put_back_n,
+ rciter,
+ zip,
+ zip_eq,
+};
+
+use rand::Rng;
+use rand::seq::SliceRandom;
+use quickcheck::TestResult;
+
+/// Trait for size hint modifier types
+trait HintKind: Copy + Send + qc::Arbitrary {
+ fn loosen_bounds(&self, org_hint: (usize, Option<usize>)) -> (usize, Option<usize>);
+}
+
+/// Exact size hint variant that leaves hints unchanged
+#[derive(Clone, Copy, Debug)]
+struct Exact {}
+
+impl HintKind for Exact {
+ fn loosen_bounds(&self, org_hint: (usize, Option<usize>)) -> (usize, Option<usize>) {
+ org_hint
+ }
+}
+
+impl qc::Arbitrary for Exact {
+ fn arbitrary<G: qc::Gen>(_: &mut G) -> Self {
+ Exact {}
+ }
+}
+
+/// Inexact size hint variant to simulate imprecise (but valid) size hints
+///
+/// Will always decrease the lower bound and increase the upper bound
+/// of the size hint by set amounts.
+#[derive(Clone, Copy, Debug)]
+struct Inexact {
+ underestimate: usize,
+ overestimate: usize,
+}
+
+impl HintKind for Inexact {
+ fn loosen_bounds(&self, org_hint: (usize, Option<usize>)) -> (usize, Option<usize>) {
+ let (org_lower, org_upper) = org_hint;
+ (org_lower.saturating_sub(self.underestimate),
+ org_upper.and_then(move |x| x.checked_add(self.overestimate)))
+ }
+}
+
+impl qc::Arbitrary for Inexact {
+ fn arbitrary<G: qc::Gen>(g: &mut G) -> Self {
+ let ue_value = usize::arbitrary(g);
+ let oe_value = usize::arbitrary(g);
+ // Compensate for quickcheck using extreme values too rarely
+ let ue_choices = &[0, ue_value, usize::max_value()];
+ let oe_choices = &[0, oe_value, usize::max_value()];
+ Inexact {
+ underestimate: *ue_choices.choose(g).unwrap(),
+ overestimate: *oe_choices.choose(g).unwrap(),
+ }
+ }
+
+ fn shrink(&self) -> Box<dyn Iterator<Item=Self>> {
+ let underestimate_value = self.underestimate;
+ let overestimate_value = self.overestimate;
+ Box::new(
+ underestimate_value.shrink().flat_map(move |ue_value|
+ overestimate_value.shrink().map(move |oe_value|
+ Inexact {
+ underestimate: ue_value,
+ overestimate: oe_value,
+ }
+ )
+ )
+ )
+ }
+}
+
+/// Our base iterator that we can impl Arbitrary for
+///
+/// By default we'll return inexact bounds estimates for size_hint
+/// to make tests harder to pass.
+///
+/// NOTE: Iter is tricky and is not fused, to help catch bugs.
+/// At the end it will return None once, then return Some(0),
+/// then return None again.
+#[derive(Clone, Debug)]
+struct Iter<T, SK: HintKind = Inexact> {
+ iterator: Range<T>,
+ // fuse/done flag
+ fuse_flag: i32,
+ hint_kind: SK,
+}
+
+impl<T, HK> Iter<T, HK> where HK: HintKind
+{
+ fn new(it: Range<T>, hint_kind: HK) -> Self {
+ Iter {
+ iterator: it,
+ fuse_flag: 0,
+ hint_kind,
+ }
+ }
+}
+
+impl<T, HK> Iterator for Iter<T, HK>
+ where Range<T>: Iterator,
+ <Range<T> as Iterator>::Item: Default,
+ HK: HintKind,
+{
+ type Item = <Range<T> as Iterator>::Item;
+
+ fn next(&mut self) -> Option<Self::Item>
+ {
+ let elt = self.iterator.next();
+ if elt.is_none() {
+ self.fuse_flag += 1;
+ // check fuse flag
+ if self.fuse_flag == 2 {
+ return Some(Default::default())
+ }
+ }
+ elt
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>)
+ {
+ let org_hint = self.iterator.size_hint();
+ self.hint_kind.loosen_bounds(org_hint)
+ }
+}
+
+impl<T, HK> DoubleEndedIterator for Iter<T, HK>
+ where Range<T>: DoubleEndedIterator,
+ <Range<T> as Iterator>::Item: Default,
+ HK: HintKind
+{
+ fn next_back(&mut self) -> Option<Self::Item> { self.iterator.next_back() }
+}
+
+impl<T> ExactSizeIterator for Iter<T, Exact> where Range<T>: ExactSizeIterator,
+ <Range<T> as Iterator>::Item: Default,
+{ }
+
+impl<T, HK> qc::Arbitrary for Iter<T, HK>
+ where T: qc::Arbitrary,
+ HK: HintKind,
+{
+ fn arbitrary<G: qc::Gen>(g: &mut G) -> Self
+ {
+ Iter::new(T::arbitrary(g)..T::arbitrary(g), HK::arbitrary(g))
+ }
+
+ fn shrink(&self) -> Box<dyn Iterator<Item=Iter<T, HK>>>
+ {
+ let r = self.iterator.clone();
+ let hint_kind = self.hint_kind;
+ Box::new(
+ r.start.shrink().flat_map(move |a|
+ r.end.shrink().map(move |b|
+ Iter::new(a.clone()..b, hint_kind)
+ )
+ )
+ )
+ }
+}
+
+/// A meta-iterator which yields `Iter<i32>`s whose start/endpoints are
+/// increased or decreased linearly on each iteration.
+#[derive(Clone, Debug)]
+struct ShiftRange<HK = Inexact> {
+ range_start: i32,
+ range_end: i32,
+ start_step: i32,
+ end_step: i32,
+ iter_count: u32,
+ hint_kind: HK,
+}
+
+impl<HK> Iterator for ShiftRange<HK> where HK: HintKind {
+ type Item = Iter<i32, HK>;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if self.iter_count == 0 {
+ return None;
+ }
+
+ let iter = Iter::new(self.range_start..self.range_end, self.hint_kind);
+
+ self.range_start += self.start_step;
+ self.range_end += self.end_step;
+ self.iter_count -= 1;
+
+ Some(iter)
+ }
+}
+
+impl ExactSizeIterator for ShiftRange<Exact> { }
+
+impl<HK> qc::Arbitrary for ShiftRange<HK>
+ where HK: HintKind
+{
+ fn arbitrary<G: qc::Gen>(g: &mut G) -> Self {
+ const MAX_STARTING_RANGE_DIFF: i32 = 32;
+ const MAX_STEP_MODULO: i32 = 8;
+ const MAX_ITER_COUNT: u32 = 3;
+
+ let range_start = qc::Arbitrary::arbitrary(g);
+ let range_end = range_start + g.gen_range(0, MAX_STARTING_RANGE_DIFF + 1);
+ let start_step = g.gen_range(-MAX_STEP_MODULO, MAX_STEP_MODULO + 1);
+ let end_step = g.gen_range(-MAX_STEP_MODULO, MAX_STEP_MODULO + 1);
+ let iter_count = g.gen_range(0, MAX_ITER_COUNT + 1);
+ let hint_kind = qc::Arbitrary::arbitrary(g);
+
+ ShiftRange {
+ range_start,
+ range_end,
+ start_step,
+ end_step,
+ iter_count,
+ hint_kind,
+ }
+ }
+}
+
+fn correct_count<I, F>(get_it: F) -> bool
+where
+ I: Iterator,
+ F: Fn() -> I
+{
+ let mut counts = vec![get_it().count()];
+
+ 'outer: loop {
+ let mut it = get_it();
+
+ for _ in 0..(counts.len() - 1) {
+ #[allow(clippy::manual_assert)]
+ if it.next().is_none() {
+ panic!("Iterator shouldn't be finished, may not be deterministic");
+ }
+ }
+
+ if it.next().is_none() {
+ break 'outer;
+ }
+
+ counts.push(it.count());
+ }
+
+ let total_actual_count = counts.len() - 1;
+
+ for (i, returned_count) in counts.into_iter().enumerate() {
+ let actual_count = total_actual_count - i;
+ if actual_count != returned_count {
+ println!("Total iterations: {} True count: {} returned count: {}", i, actual_count, returned_count);
+
+ return false;
+ }
+ }
+
+ true
+}
+
+fn correct_size_hint<I: Iterator>(mut it: I) -> bool {
+ // record size hint at each iteration
+ let initial_hint = it.size_hint();
+ let mut hints = Vec::with_capacity(initial_hint.0 + 1);
+ hints.push(initial_hint);
+ while let Some(_) = it.next() {
+ hints.push(it.size_hint())
+ }
+
+ let mut true_count = hints.len(); // start off +1 too much
+
+ // check all the size hints
+ for &(low, hi) in &hints {
+ true_count -= 1;
+ if low > true_count ||
+ (hi.is_some() && hi.unwrap() < true_count)
+ {
+ println!("True size: {:?}, size hint: {:?}", true_count, (low, hi));
+ //println!("All hints: {:?}", hints);
+ return false
+ }
+ }
+ true
+}
+
+fn exact_size<I: ExactSizeIterator>(mut it: I) -> bool {
+ // check every iteration
+ let (mut low, mut hi) = it.size_hint();
+ if Some(low) != hi { return false; }
+ while let Some(_) = it.next() {
+ let (xlow, xhi) = it.size_hint();
+ if low != xlow + 1 { return false; }
+ low = xlow;
+ hi = xhi;
+ if Some(low) != hi { return false; }
+ }
+ let (low, hi) = it.size_hint();
+ low == 0 && hi == Some(0)
+}
+
+// Exact size for this case, without ExactSizeIterator
+fn exact_size_for_this<I: Iterator>(mut it: I) -> bool {
+ // check every iteration
+ let (mut low, mut hi) = it.size_hint();
+ if Some(low) != hi { return false; }
+ while let Some(_) = it.next() {
+ let (xlow, xhi) = it.size_hint();
+ if low != xlow + 1 { return false; }
+ low = xlow;
+ hi = xhi;
+ if Some(low) != hi { return false; }
+ }
+ let (low, hi) = it.size_hint();
+ low == 0 && hi == Some(0)
+}
+
+/*
+ * NOTE: Range<i8> is broken!
+ * (all signed ranges are)
+#[quickcheck]
+fn size_range_i8(a: Iter<i8>) -> bool {
+ exact_size(a)
+}
+
+#[quickcheck]
+fn size_range_i16(a: Iter<i16>) -> bool {
+ exact_size(a)
+}
+
+#[quickcheck]
+fn size_range_u8(a: Iter<u8>) -> bool {
+ exact_size(a)
+}
+ */
+
+macro_rules! quickcheck {
+ // accept several property function definitions
+ // The property functions can use pattern matching and `mut` as usual
+ // in the function arguments, but the functions can not be generic.
+ {$($(#$attr:tt)* fn $fn_name:ident($($arg:tt)*) -> $ret:ty { $($code:tt)* })*} => (
+ $(
+ #[test]
+ $(#$attr)*
+ fn $fn_name() {
+ fn prop($($arg)*) -> $ret {
+ $($code)*
+ }
+ ::quickcheck::quickcheck(quickcheck!(@fn prop [] $($arg)*));
+ }
+ )*
+ );
+ // parse argument list (with patterns allowed) into prop as fn(_, _) -> _
+ (@fn $f:ident [$($t:tt)*]) => {
+ $f as fn($($t),*) -> _
+ };
+ (@fn $f:ident [$($p:tt)*] : $($tail:tt)*) => {
+ quickcheck!(@fn $f [$($p)* _] $($tail)*)
+ };
+ (@fn $f:ident [$($p:tt)*] $t:tt $($tail:tt)*) => {
+ quickcheck!(@fn $f [$($p)*] $($tail)*)
+ };
+}
+
+quickcheck! {
+
+ fn size_product(a: Iter<u16>, b: Iter<u16>) -> bool {
+ correct_size_hint(a.cartesian_product(b))
+ }
+ fn size_product3(a: Iter<u16>, b: Iter<u16>, c: Iter<u16>) -> bool {
+ correct_size_hint(iproduct!(a, b, c))
+ }
+
+ fn correct_cartesian_product3(a: Iter<u16>, b: Iter<u16>, c: Iter<u16>,
+ take_manual: usize) -> ()
+ {
+ // test correctness of iproduct through regular iteration (take)
+ // and through fold.
+ let ac = a.clone();
+ let br = &b.clone();
+ let cr = &c.clone();
+ let answer: Vec<_> = ac.flat_map(move |ea| br.clone().flat_map(move |eb| cr.clone().map(move |ec| (ea, eb, ec)))).collect();
+ let mut product_iter = iproduct!(a, b, c);
+ let mut actual = Vec::new();
+
+ actual.extend((&mut product_iter).take(take_manual));
+ if actual.len() == take_manual {
+ product_iter.fold((), |(), elt| actual.push(elt));
+ }
+ assert_eq!(answer, actual);
+ }
+
+ fn size_multi_product(a: ShiftRange) -> bool {
+ correct_size_hint(a.multi_cartesian_product())
+ }
+ fn correct_multi_product3(a: ShiftRange, take_manual: usize) -> () {
+ // Fix no. of iterators at 3
+ let a = ShiftRange { iter_count: 3, ..a };
+
+ // test correctness of MultiProduct through regular iteration (take)
+ // and through fold.
+ let mut iters = a.clone();
+ let i0 = iters.next().unwrap();
+ let i1r = &iters.next().unwrap();
+ let i2r = &iters.next().unwrap();
+ let answer: Vec<_> = i0.flat_map(move |ei0| i1r.clone().flat_map(move |ei1| i2r.clone().map(move |ei2| vec![ei0, ei1, ei2]))).collect();
+ let mut multi_product = a.clone().multi_cartesian_product();
+ let mut actual = Vec::new();
+
+ actual.extend((&mut multi_product).take(take_manual));
+ if actual.len() == take_manual {
+ multi_product.fold((), |(), elt| actual.push(elt));
+ }
+ assert_eq!(answer, actual);
+
+ assert_eq!(answer.into_iter().last(), a.multi_cartesian_product().last());
+ }
+
+ #[allow(deprecated)]
+ fn size_step(a: Iter<i16, Exact>, s: usize) -> bool {
+ let mut s = s;
+ if s == 0 {
+ s += 1; // never zero
+ }
+ let filt = a.clone().dedup();
+ correct_size_hint(filt.step(s)) &&
+ exact_size(a.step(s))
+ }
+
+ #[allow(deprecated)]
+ fn equal_step(a: Iter<i16>, s: usize) -> bool {
+ let mut s = s;
+ if s == 0 {
+ s += 1; // never zero
+ }
+ let mut i = 0;
+ itertools::equal(a.clone().step(s), a.filter(|_| {
+ let keep = i % s == 0;
+ i += 1;
+ keep
+ }))
+ }
+
+ #[allow(deprecated)]
+ fn equal_step_vec(a: Vec<i16>, s: usize) -> bool {
+ let mut s = s;
+ if s == 0 {
+ s += 1; // never zero
+ }
+ let mut i = 0;
+ itertools::equal(a.iter().step(s), a.iter().filter(|_| {
+ let keep = i % s == 0;
+ i += 1;
+ keep
+ }))
+ }
+
+ fn size_multipeek(a: Iter<u16, Exact>, s: u8) -> bool {
+ let mut it = multipeek(a);
+ // peek a few times
+ for _ in 0..s {
+ it.peek();
+ }
+ exact_size(it)
+ }
+
+ fn size_peek_nth(a: Iter<u16, Exact>, s: u8) -> bool {
+ let mut it = peek_nth(a);
+ // peek a few times
+ for n in 0..s {
+ it.peek_nth(n as usize);
+ }
+ exact_size(it)
+ }
+
+ fn equal_merge(mut a: Vec<i16>, mut b: Vec<i16>) -> bool {
+ a.sort();
+ b.sort();
+ let mut merged = a.clone();
+ merged.extend(b.iter().cloned());
+ merged.sort();
+ itertools::equal(&merged, a.iter().merge(&b))
+ }
+ fn size_merge(a: Iter<u16>, b: Iter<u16>) -> bool {
+ correct_size_hint(a.merge(b))
+ }
+ fn size_zip(a: Iter<i16, Exact>, b: Iter<i16, Exact>, c: Iter<i16, Exact>) -> bool {
+ let filt = a.clone().dedup();
+ correct_size_hint(multizip((filt, b.clone(), c.clone()))) &&
+ exact_size(multizip((a, b, c)))
+ }
+ fn size_zip_rc(a: Iter<i16>, b: Iter<i16>) -> bool {
+ let rc = rciter(a);
+ correct_size_hint(multizip((&rc, &rc, b)))
+ }
+
+ fn size_zip_macro(a: Iter<i16, Exact>, b: Iter<i16, Exact>, c: Iter<i16, Exact>) -> bool {
+ let filt = a.clone().dedup();
+ correct_size_hint(izip!(filt, b.clone(), c.clone())) &&
+ exact_size(izip!(a, b, c))
+ }
+ fn equal_kmerge(mut a: Vec<i16>, mut b: Vec<i16>, mut c: Vec<i16>) -> bool {
+ use itertools::free::kmerge;
+ a.sort();
+ b.sort();
+ c.sort();
+ let mut merged = a.clone();
+ merged.extend(b.iter().cloned());
+ merged.extend(c.iter().cloned());
+ merged.sort();
+ itertools::equal(merged.into_iter(), kmerge(vec![a, b, c]))
+ }
+
+ // Any number of input iterators
+ fn equal_kmerge_2(mut inputs: Vec<Vec<i16>>) -> bool {
+ use itertools::free::kmerge;
+ // sort the inputs
+ for input in &mut inputs {
+ input.sort();
+ }
+ let mut merged = inputs.concat();
+ merged.sort();
+ itertools::equal(merged.into_iter(), kmerge(inputs))
+ }
+
+ // Any number of input iterators
+ fn equal_kmerge_by_ge(mut inputs: Vec<Vec<i16>>) -> bool {
+ // sort the inputs
+ for input in &mut inputs {
+ input.sort();
+ input.reverse();
+ }
+ let mut merged = inputs.concat();
+ merged.sort();
+ merged.reverse();
+ itertools::equal(merged.into_iter(),
+ inputs.into_iter().kmerge_by(|x, y| x >= y))
+ }
+
+ // Any number of input iterators
+ fn equal_kmerge_by_lt(mut inputs: Vec<Vec<i16>>) -> bool {
+ // sort the inputs
+ for input in &mut inputs {
+ input.sort();
+ }
+ let mut merged = inputs.concat();
+ merged.sort();
+ itertools::equal(merged.into_iter(),
+ inputs.into_iter().kmerge_by(|x, y| x < y))
+ }
+
+ // Any number of input iterators
+ fn equal_kmerge_by_le(mut inputs: Vec<Vec<i16>>) -> bool {
+ // sort the inputs
+ for input in &mut inputs {
+ input.sort();
+ }
+ let mut merged = inputs.concat();
+ merged.sort();
+ itertools::equal(merged.into_iter(),
+ inputs.into_iter().kmerge_by(|x, y| x <= y))
+ }
+ fn size_kmerge(a: Iter<i16>, b: Iter<i16>, c: Iter<i16>) -> bool {
+ use itertools::free::kmerge;
+ correct_size_hint(kmerge(vec![a, b, c]))
+ }
+ fn equal_zip_eq(a: Vec<i32>, b: Vec<i32>) -> bool {
+ let len = std::cmp::min(a.len(), b.len());
+ let a = &a[..len];
+ let b = &b[..len];
+ itertools::equal(zip_eq(a, b), zip(a, b))
+ }
+ fn size_zip_longest(a: Iter<i16, Exact>, b: Iter<i16, Exact>) -> bool {
+ let filt = a.clone().dedup();
+ let filt2 = b.clone().dedup();
+ correct_size_hint(filt.zip_longest(b.clone())) &&
+ correct_size_hint(a.clone().zip_longest(filt2)) &&
+ exact_size(a.zip_longest(b))
+ }
+ fn size_2_zip_longest(a: Iter<i16>, b: Iter<i16>) -> bool {
+ let it = a.clone().zip_longest(b.clone());
+ let jt = a.clone().zip_longest(b.clone());
+ itertools::equal(a,
+ it.filter_map(|elt| match elt {
+ EitherOrBoth::Both(x, _) => Some(x),
+ EitherOrBoth::Left(x) => Some(x),
+ _ => None,
+ }
+ ))
+ &&
+ itertools::equal(b,
+ jt.filter_map(|elt| match elt {
+ EitherOrBoth::Both(_, y) => Some(y),
+ EitherOrBoth::Right(y) => Some(y),
+ _ => None,
+ }
+ ))
+ }
+ fn size_interleave(a: Iter<i16>, b: Iter<i16>) -> bool {
+ correct_size_hint(a.interleave(b))
+ }
+ fn exact_interleave(a: Iter<i16, Exact>, b: Iter<i16, Exact>) -> bool {
+ exact_size_for_this(a.interleave(b))
+ }
+ fn size_interleave_shortest(a: Iter<i16>, b: Iter<i16>) -> bool {
+ correct_size_hint(a.interleave_shortest(b))
+ }
+ fn exact_interleave_shortest(a: Vec<()>, b: Vec<()>) -> bool {
+ exact_size_for_this(a.iter().interleave_shortest(&b))
+ }
+ fn size_intersperse(a: Iter<i16>, x: i16) -> bool {
+ correct_size_hint(a.intersperse(x))
+ }
+ fn equal_intersperse(a: Vec<i32>, x: i32) -> bool {
+ let mut inter = false;
+ let mut i = 0;
+ for elt in a.iter().cloned().intersperse(x) {
+ if inter {
+ if elt != x { return false }
+ } else {
+ if elt != a[i] { return false }
+ i += 1;
+ }
+ inter = !inter;
+ }
+ true
+ }
+
+ fn equal_combinations_2(a: Vec<u8>) -> bool {
+ let mut v = Vec::new();
+ for (i, x) in enumerate(&a) {
+ for y in &a[i + 1..] {
+ v.push((x, y));
+ }
+ }
+ itertools::equal(a.iter().tuple_combinations::<(_, _)>(), v)
+ }
+
+ fn collect_tuple_matches_size(a: Iter<i16>) -> bool {
+ let size = a.clone().count();
+ a.collect_tuple::<(_, _, _)>().is_some() == (size == 3)
+ }
+
+ fn correct_permutations(vals: HashSet<i32>, k: usize) -> () {
+ // Test permutations only on iterators of distinct integers, to prevent
+ // false positives.
+
+ const MAX_N: usize = 5;
+
+ let n = min(vals.len(), MAX_N);
+ let vals: HashSet<i32> = vals.into_iter().take(n).collect();
+
+ let perms = vals.iter().permutations(k);
+
+ let mut actual = HashSet::new();
+
+ for perm in perms {
+ assert_eq!(perm.len(), k);
+
+ let all_items_valid = perm.iter().all(|p| vals.contains(p));
+ assert!(all_items_valid, "perm contains value not from input: {:?}", perm);
+
+ // Check that all perm items are distinct
+ let distinct_len = {
+ let perm_set: HashSet<_> = perm.iter().collect();
+ perm_set.len()
+ };
+ assert_eq!(perm.len(), distinct_len);
+
+ // Check that the perm is new
+ assert!(actual.insert(perm.clone()), "perm already encountered: {:?}", perm);
+ }
+ }
+
+ fn permutations_lexic_order(a: usize, b: usize) -> () {
+ let a = a % 6;
+ let b = b % 6;
+
+ let n = max(a, b);
+ let k = min (a, b);
+
+ let expected_first: Vec<usize> = (0..k).collect();
+ let expected_last: Vec<usize> = ((n - k)..n).rev().collect();
+
+ let mut perms = (0..n).permutations(k);
+
+ let mut curr_perm = match perms.next() {
+ Some(p) => p,
+ None => { return; }
+ };
+
+ assert_eq!(expected_first, curr_perm);
+
+ for next_perm in perms {
+ assert!(
+ next_perm > curr_perm,
+ "next perm isn't greater-than current; next_perm={:?} curr_perm={:?} n={}",
+ next_perm, curr_perm, n
+ );
+
+ curr_perm = next_perm;
+ }
+
+ assert_eq!(expected_last, curr_perm);
+
+ }
+
+ fn permutations_count(n: usize, k: usize) -> bool {
+ let n = n % 6;
+
+ correct_count(|| (0..n).permutations(k))
+ }
+
+ fn permutations_size(a: Iter<i32>, k: usize) -> bool {
+ correct_size_hint(a.take(5).permutations(k))
+ }
+
+ fn permutations_k0_yields_once(n: usize) -> () {
+ let k = 0;
+ let expected: Vec<Vec<usize>> = vec![vec![]];
+ let actual = (0..n).permutations(k).collect_vec();
+
+ assert_eq!(expected, actual);
+ }
+}
+
+quickcheck! {
+ fn dedup_via_coalesce(a: Vec<i32>) -> bool {
+ let mut b = a.clone();
+ b.dedup();
+ itertools::equal(
+ &b,
+ a
+ .iter()
+ .coalesce(|x, y| {
+ if x==y {
+ Ok(x)
+ } else {
+ Err((x, y))
+ }
+ })
+ .fold(vec![], |mut v, n| {
+ v.push(n);
+ v
+ })
+ )
+ }
+}
+
+quickcheck! {
+ fn equal_dedup(a: Vec<i32>) -> bool {
+ let mut b = a.clone();
+ b.dedup();
+ itertools::equal(&b, a.iter().dedup())
+ }
+}
+
+quickcheck! {
+ fn equal_dedup_by(a: Vec<(i32, i32)>) -> bool {
+ let mut b = a.clone();
+ b.dedup_by(|x, y| x.0==y.0);
+ itertools::equal(&b, a.iter().dedup_by(|x, y| x.0==y.0))
+ }
+}
+
+quickcheck! {
+ fn size_dedup(a: Vec<i32>) -> bool {
+ correct_size_hint(a.iter().dedup())
+ }
+}
+
+quickcheck! {
+ fn size_dedup_by(a: Vec<(i32, i32)>) -> bool {
+ correct_size_hint(a.iter().dedup_by(|x, y| x.0==y.0))
+ }
+}
+
+quickcheck! {
+ fn exact_repeatn((n, x): (usize, i32)) -> bool {
+ let it = itertools::repeat_n(x, n);
+ exact_size(it)
+ }
+}
+
+quickcheck! {
+ fn size_put_back(a: Vec<u8>, x: Option<u8>) -> bool {
+ let mut it = put_back(a.into_iter());
+ match x {
+ Some(t) => it.put_back(t),
+ None => {}
+ }
+ correct_size_hint(it)
+ }
+}
+
+quickcheck! {
+ fn size_put_backn(a: Vec<u8>, b: Vec<u8>) -> bool {
+ let mut it = put_back_n(a.into_iter());
+ for elt in b {
+ it.put_back(elt)
+ }
+ correct_size_hint(it)
+ }
+}
+
+quickcheck! {
+ fn size_tee(a: Vec<u8>) -> bool {
+ let (mut t1, mut t2) = a.iter().tee();
+ t1.next();
+ t1.next();
+ t2.next();
+ exact_size(t1) && exact_size(t2)
+ }
+}
+
+quickcheck! {
+ fn size_tee_2(a: Vec<u8>) -> bool {
+ let (mut t1, mut t2) = a.iter().dedup().tee();
+ t1.next();
+ t1.next();
+ t2.next();
+ correct_size_hint(t1) && correct_size_hint(t2)
+ }
+}
+
+quickcheck! {
+ fn size_take_while_ref(a: Vec<u8>, stop: u8) -> bool {
+ correct_size_hint(a.iter().take_while_ref(|x| **x != stop))
+ }
+}
+
+quickcheck! {
+ fn equal_partition(a: Vec<i32>) -> bool {
+ let mut a = a;
+ let mut ap = a.clone();
+ let split_index = itertools::partition(&mut ap, |x| *x >= 0);
+ let parted = (0..split_index).all(|i| ap[i] >= 0) &&
+ (split_index..a.len()).all(|i| ap[i] < 0);
+
+ a.sort();
+ ap.sort();
+ parted && (a == ap)
+ }
+}
+
+quickcheck! {
+ fn size_combinations(it: Iter<i16>) -> bool {
+ correct_size_hint(it.tuple_combinations::<(_, _)>())
+ }
+}
+
+quickcheck! {
+ fn equal_combinations(it: Iter<i16>) -> bool {
+ let values = it.clone().collect_vec();
+ let mut cmb = it.tuple_combinations();
+ for i in 0..values.len() {
+ for j in i+1..values.len() {
+ let pair = (values[i], values[j]);
+ if pair != cmb.next().unwrap() {
+ return false;
+ }
+ }
+ }
+ cmb.next() == None
+ }
+}
+
+quickcheck! {
+ fn size_pad_tail(it: Iter<i8>, pad: u8) -> bool {
+ correct_size_hint(it.clone().pad_using(pad as usize, |_| 0)) &&
+ correct_size_hint(it.dropping(1).rev().pad_using(pad as usize, |_| 0))
+ }
+}
+
+quickcheck! {
+ fn size_pad_tail2(it: Iter<i8, Exact>, pad: u8) -> bool {
+ exact_size(it.pad_using(pad as usize, |_| 0))
+ }
+}
+
+quickcheck! {
+ fn size_powerset(it: Iter<u8, Exact>) -> bool {
+ // Powerset cardinality gets large very quickly, limit input to keep test fast.
+ correct_size_hint(it.take(12).powerset())
+ }
+}
+
+quickcheck! {
+ fn size_duplicates(it: Iter<i8>) -> bool {
+ correct_size_hint(it.duplicates())
+ }
+}
+
+quickcheck! {
+ fn size_unique(it: Iter<i8>) -> bool {
+ correct_size_hint(it.unique())
+ }
+
+ fn count_unique(it: Vec<i8>, take_first: u8) -> () {
+ let answer = {
+ let mut v = it.clone();
+ v.sort(); v.dedup();
+ v.len()
+ };
+ let mut iter = cloned(&it).unique();
+ let first_count = (&mut iter).take(take_first as usize).count();
+ let rest_count = iter.count();
+ assert_eq!(answer, first_count + rest_count);
+ }
+}
+
+quickcheck! {
+ fn fuzz_group_by_lazy_1(it: Iter<u8>) -> bool {
+ let jt = it.clone();
+ let groups = it.group_by(|k| *k);
+ itertools::equal(jt, groups.into_iter().flat_map(|(_, x)| x))
+ }
+}
+
+quickcheck! {
+ fn fuzz_group_by_lazy_2(data: Vec<u8>) -> bool {
+ let groups = data.iter().group_by(|k| *k / 10);
+ let res = itertools::equal(data.iter(), groups.into_iter().flat_map(|(_, x)| x));
+ res
+ }
+}
+
+quickcheck! {
+ fn fuzz_group_by_lazy_3(data: Vec<u8>) -> bool {
+ let grouper = data.iter().group_by(|k| *k / 10);
+ let groups = grouper.into_iter().collect_vec();
+ let res = itertools::equal(data.iter(), groups.into_iter().flat_map(|(_, x)| x));
+ res
+ }
+}
+
+quickcheck! {
+ fn fuzz_group_by_lazy_duo(data: Vec<u8>, order: Vec<(bool, bool)>) -> bool {
+ let grouper = data.iter().group_by(|k| *k / 3);
+ let mut groups1 = grouper.into_iter();
+ let mut groups2 = grouper.into_iter();
+ let mut elts = Vec::<&u8>::new();
+ let mut old_groups = Vec::new();
+
+ let tup1 = |(_, b)| b;
+ for &(ord, consume_now) in &order {
+ let iter = &mut [&mut groups1, &mut groups2][ord as usize];
+ match iter.next() {
+ Some((_, gr)) => if consume_now {
+ for og in old_groups.drain(..) {
+ elts.extend(og);
+ }
+ elts.extend(gr);
+ } else {
+ old_groups.push(gr);
+ },
+ None => break,
+ }
+ }
+ for og in old_groups.drain(..) {
+ elts.extend(og);
+ }
+ for gr in groups1.map(&tup1) { elts.extend(gr); }
+ for gr in groups2.map(&tup1) { elts.extend(gr); }
+ itertools::assert_equal(&data, elts);
+ true
+ }
+}
+
+quickcheck! {
+ fn equal_chunks_lazy(a: Vec<u8>, size: u8) -> bool {
+ let mut size = size;
+ if size == 0 {
+ size += 1;
+ }
+ let chunks = a.iter().chunks(size as usize);
+ let it = a.chunks(size as usize);
+ for (a, b) in chunks.into_iter().zip(it) {
+ if !itertools::equal(a, b) {
+ return false;
+ }
+ }
+ true
+ }
+}
+
+quickcheck! {
+ fn equal_tuple_windows_1(a: Vec<u8>) -> bool {
+ let x = a.windows(1).map(|s| (&s[0], ));
+ let y = a.iter().tuple_windows::<(_,)>();
+ itertools::equal(x, y)
+ }
+
+ fn equal_tuple_windows_2(a: Vec<u8>) -> bool {
+ let x = a.windows(2).map(|s| (&s[0], &s[1]));
+ let y = a.iter().tuple_windows::<(_, _)>();
+ itertools::equal(x, y)
+ }
+
+ fn equal_tuple_windows_3(a: Vec<u8>) -> bool {
+ let x = a.windows(3).map(|s| (&s[0], &s[1], &s[2]));
+ let y = a.iter().tuple_windows::<(_, _, _)>();
+ itertools::equal(x, y)
+ }
+
+ fn equal_tuple_windows_4(a: Vec<u8>) -> bool {
+ let x = a.windows(4).map(|s| (&s[0], &s[1], &s[2], &s[3]));
+ let y = a.iter().tuple_windows::<(_, _, _, _)>();
+ itertools::equal(x, y)
+ }
+
+ fn equal_tuples_1(a: Vec<u8>) -> bool {
+ let x = a.chunks(1).map(|s| (&s[0], ));
+ let y = a.iter().tuples::<(_,)>();
+ itertools::equal(x, y)
+ }
+
+ fn equal_tuples_2(a: Vec<u8>) -> bool {
+ let x = a.chunks(2).filter(|s| s.len() == 2).map(|s| (&s[0], &s[1]));
+ let y = a.iter().tuples::<(_, _)>();
+ itertools::equal(x, y)
+ }
+
+ fn equal_tuples_3(a: Vec<u8>) -> bool {
+ let x = a.chunks(3).filter(|s| s.len() == 3).map(|s| (&s[0], &s[1], &s[2]));
+ let y = a.iter().tuples::<(_, _, _)>();
+ itertools::equal(x, y)
+ }
+
+ fn equal_tuples_4(a: Vec<u8>) -> bool {
+ let x = a.chunks(4).filter(|s| s.len() == 4).map(|s| (&s[0], &s[1], &s[2], &s[3]));
+ let y = a.iter().tuples::<(_, _, _, _)>();
+ itertools::equal(x, y)
+ }
+
+ fn exact_tuple_buffer(a: Vec<u8>) -> bool {
+ let mut iter = a.iter().tuples::<(_, _, _, _)>();
+ (&mut iter).last();
+ let buffer = iter.into_buffer();
+ assert_eq!(buffer.len(), a.len() % 4);
+ exact_size(buffer)
+ }
+}
+
+// with_position
+quickcheck! {
+ fn with_position_exact_size_1(a: Vec<u8>) -> bool {
+ exact_size_for_this(a.iter().with_position())
+ }
+ fn with_position_exact_size_2(a: Iter<u8, Exact>) -> bool {
+ exact_size_for_this(a.with_position())
+ }
+}
+
+quickcheck! {
+ fn correct_group_map_modulo_key(a: Vec<u8>, modulo: u8) -> () {
+ let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0`
+ let count = a.len();
+ let lookup = a.into_iter().map(|i| (i % modulo, i)).into_group_map();
+
+ assert_eq!(lookup.values().flat_map(|vals| vals.iter()).count(), count);
+
+ for (&key, vals) in lookup.iter() {
+ assert!(vals.iter().all(|&val| val % modulo == key));
+ }
+ }
+}
+
+/// A peculiar type: Equality compares both tuple items, but ordering only the
+/// first item. This is so we can check the stability property easily.
+#[derive(Clone, Debug, PartialEq, Eq)]
+struct Val(u32, u32);
+
+impl PartialOrd<Val> for Val {
+ fn partial_cmp(&self, other: &Val) -> Option<Ordering> {
+ self.0.partial_cmp(&other.0)
+ }
+}
+
+impl Ord for Val {
+ fn cmp(&self, other: &Val) -> Ordering {
+ self.0.cmp(&other.0)
+ }
+}
+
+impl qc::Arbitrary for Val {
+ fn arbitrary<G: qc::Gen>(g: &mut G) -> Self {
+ let (x, y) = <(u32, u32)>::arbitrary(g);
+ Val(x, y)
+ }
+ fn shrink(&self) -> Box<dyn Iterator<Item = Self>> {
+ Box::new((self.0, self.1).shrink().map(|(x, y)| Val(x, y)))
+ }
+}
+
+quickcheck! {
+ fn minmax(a: Vec<Val>) -> bool {
+ use itertools::MinMaxResult;
+
+
+ let minmax = a.iter().minmax();
+ let expected = match a.len() {
+ 0 => MinMaxResult::NoElements,
+ 1 => MinMaxResult::OneElement(&a[0]),
+ _ => MinMaxResult::MinMax(a.iter().min().unwrap(),
+ a.iter().max().unwrap()),
+ };
+ minmax == expected
+ }
+}
+
+quickcheck! {
+ fn minmax_f64(a: Vec<f64>) -> TestResult {
+ use itertools::MinMaxResult;
+
+ if a.iter().any(|x| x.is_nan()) {
+ return TestResult::discard();
+ }
+
+ let min = cloned(&a).fold1(f64::min);
+ let max = cloned(&a).fold1(f64::max);
+
+ let minmax = cloned(&a).minmax();
+ let expected = match a.len() {
+ 0 => MinMaxResult::NoElements,
+ 1 => MinMaxResult::OneElement(min.unwrap()),
+ _ => MinMaxResult::MinMax(min.unwrap(), max.unwrap()),
+ };
+ TestResult::from_bool(minmax == expected)
+ }
+}
+
+quickcheck! {
+ #[allow(deprecated)]
+ fn tree_fold1_f64(mut a: Vec<f64>) -> TestResult {
+ fn collapse_adjacent<F>(x: Vec<f64>, mut f: F) -> Vec<f64>
+ where F: FnMut(f64, f64) -> f64
+ {
+ let mut out = Vec::new();
+ for i in (0..x.len()).step(2) {
+ if i == x.len()-1 {
+ out.push(x[i])
+ } else {
+ out.push(f(x[i], x[i+1]));
+ }
+ }
+ out
+ }
+
+ if a.iter().any(|x| x.is_nan()) {
+ return TestResult::discard();
+ }
+
+ let actual = a.iter().cloned().tree_fold1(f64::atan2);
+
+ while a.len() > 1 {
+ a = collapse_adjacent(a, f64::atan2);
+ }
+ let expected = a.pop();
+
+ TestResult::from_bool(actual == expected)
+ }
+}
+
+quickcheck! {
+ fn exactly_one_i32(a: Vec<i32>) -> TestResult {
+ let ret = a.iter().cloned().exactly_one();
+ match a.len() {
+ 1 => TestResult::from_bool(ret.unwrap() == a[0]),
+ _ => TestResult::from_bool(ret.unwrap_err().eq(a.iter().cloned())),
+ }
+ }
+}
+
+quickcheck! {
+ fn at_most_one_i32(a: Vec<i32>) -> TestResult {
+ let ret = a.iter().cloned().at_most_one();
+ match a.len() {
+ 0 => TestResult::from_bool(ret.unwrap() == None),
+ 1 => TestResult::from_bool(ret.unwrap() == Some(a[0])),
+ _ => TestResult::from_bool(ret.unwrap_err().eq(a.iter().cloned())),
+ }
+ }
+}
+
+quickcheck! {
+ fn consistent_grouping_map_with_by(a: Vec<u8>, modulo: u8) -> () {
+ let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0`
+
+ let lookup_grouping_map = a.iter().copied().map(|i| (i % modulo, i)).into_grouping_map().collect::<Vec<_>>();
+ let lookup_grouping_map_by = a.iter().copied().into_grouping_map_by(|i| i % modulo).collect::<Vec<_>>();
+
+ assert_eq!(lookup_grouping_map, lookup_grouping_map_by);
+ }
+
+ fn correct_grouping_map_by_aggregate_modulo_key(a: Vec<u8>, modulo: u8) -> () {
+ let modulo = if modulo < 2 { 2 } else { modulo } as u64; // Avoid `% 0`
+ let lookup = a.iter()
+ .map(|&b| b as u64) // Avoid overflows
+ .into_grouping_map_by(|i| i % modulo)
+ .aggregate(|acc, &key, val| {
+ assert!(val % modulo == key);
+ if val % (modulo - 1) == 0 {
+ None
+ } else {
+ Some(acc.unwrap_or(0) + val)
+ }
+ });
+
+ let group_map_lookup = a.iter()
+ .map(|&b| b as u64)
+ .map(|i| (i % modulo, i))
+ .into_group_map()
+ .into_iter()
+ .filter_map(|(key, vals)| {
+ vals.into_iter().fold(None, |acc, val| {
+ if val % (modulo - 1) == 0 {
+ None
+ } else {
+ Some(acc.unwrap_or(0) + val)
+ }
+ }).map(|new_val| (key, new_val))
+ })
+ .collect::<HashMap<_,_>>();
+ assert_eq!(lookup, group_map_lookup);
+
+ for m in 0..modulo {
+ assert_eq!(
+ lookup.get(&m).copied(),
+ a.iter()
+ .map(|&b| b as u64)
+ .filter(|&val| val % modulo == m)
+ .fold(None, |acc, val| {
+ if val % (modulo - 1) == 0 {
+ None
+ } else {
+ Some(acc.unwrap_or(0) + val)
+ }
+ })
+ );
+ }
+ }
+
+ fn correct_grouping_map_by_fold_modulo_key(a: Vec<u8>, modulo: u8) -> () {
+ let modulo = if modulo == 0 { 1 } else { modulo } as u64; // Avoid `% 0`
+ let lookup = a.iter().map(|&b| b as u64) // Avoid overflows
+ .into_grouping_map_by(|i| i % modulo)
+ .fold(0u64, |acc, &key, val| {
+ assert!(val % modulo == key);
+ acc + val
+ });
+
+ let group_map_lookup = a.iter()
+ .map(|&b| b as u64)
+ .map(|i| (i % modulo, i))
+ .into_group_map()
+ .into_iter()
+ .map(|(key, vals)| (key, vals.into_iter().sum()))
+ .collect::<HashMap<_,_>>();
+ assert_eq!(lookup, group_map_lookup);
+
+ for (&key, &sum) in lookup.iter() {
+ assert_eq!(sum, a.iter().map(|&b| b as u64).filter(|&val| val % modulo == key).sum::<u64>());
+ }
+ }
+
+ fn correct_grouping_map_by_fold_first_modulo_key(a: Vec<u8>, modulo: u8) -> () {
+ let modulo = if modulo == 0 { 1 } else { modulo } as u64; // Avoid `% 0`
+ let lookup = a.iter().map(|&b| b as u64) // Avoid overflows
+ .into_grouping_map_by(|i| i % modulo)
+ .fold_first(|acc, &key, val| {
+ assert!(val % modulo == key);
+ acc + val
+ });
+
+ // TODO: Swap `fold1` with stdlib's `fold_first` when it's stabilized
+ let group_map_lookup = a.iter()
+ .map(|&b| b as u64)
+ .map(|i| (i % modulo, i))
+ .into_group_map()
+ .into_iter()
+ .map(|(key, vals)| (key, vals.into_iter().fold1(|acc, val| acc + val).unwrap()))
+ .collect::<HashMap<_,_>>();
+ assert_eq!(lookup, group_map_lookup);
+
+ for (&key, &sum) in lookup.iter() {
+ assert_eq!(sum, a.iter().map(|&b| b as u64).filter(|&val| val % modulo == key).sum::<u64>());
+ }
+ }
+
+ fn correct_grouping_map_by_collect_modulo_key(a: Vec<u8>, modulo: u8) -> () {
+ let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0`
+ let lookup_grouping_map = a.iter().copied().into_grouping_map_by(|i| i % modulo).collect::<Vec<_>>();
+ let lookup_group_map = a.iter().copied().map(|i| (i % modulo, i)).into_group_map();
+
+ assert_eq!(lookup_grouping_map, lookup_group_map);
+ }
+
+ fn correct_grouping_map_by_max_modulo_key(a: Vec<u8>, modulo: u8) -> () {
+ let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0`
+ let lookup = a.iter().copied().into_grouping_map_by(|i| i % modulo).max();
+
+ let group_map_lookup = a.iter().copied()
+ .map(|i| (i % modulo, i))
+ .into_group_map()
+ .into_iter()
+ .map(|(key, vals)| (key, vals.into_iter().max().unwrap()))
+ .collect::<HashMap<_,_>>();
+ assert_eq!(lookup, group_map_lookup);
+
+ for (&key, &max) in lookup.iter() {
+ assert_eq!(Some(max), a.iter().copied().filter(|&val| val % modulo == key).max());
+ }
+ }
+
+ fn correct_grouping_map_by_max_by_modulo_key(a: Vec<u8>, modulo: u8) -> () {
+ let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0`
+ let lookup = a.iter().copied().into_grouping_map_by(|i| i % modulo).max_by(|_, v1, v2| v1.cmp(v2));
+
+ let group_map_lookup = a.iter().copied()
+ .map(|i| (i % modulo, i))
+ .into_group_map()
+ .into_iter()
+ .map(|(key, vals)| (key, vals.into_iter().max_by(|v1, v2| v1.cmp(v2)).unwrap()))
+ .collect::<HashMap<_,_>>();
+ assert_eq!(lookup, group_map_lookup);
+
+ for (&key, &max) in lookup.iter() {
+ assert_eq!(Some(max), a.iter().copied().filter(|&val| val % modulo == key).max_by(|v1, v2| v1.cmp(v2)));
+ }
+ }
+
+ fn correct_grouping_map_by_max_by_key_modulo_key(a: Vec<u8>, modulo: u8) -> () {
+ let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0`
+ let lookup = a.iter().copied().into_grouping_map_by(|i| i % modulo).max_by_key(|_, &val| val);
+
+ let group_map_lookup = a.iter().copied()
+ .map(|i| (i % modulo, i))
+ .into_group_map()
+ .into_iter()
+ .map(|(key, vals)| (key, vals.into_iter().max_by_key(|&val| val).unwrap()))
+ .collect::<HashMap<_,_>>();
+ assert_eq!(lookup, group_map_lookup);
+
+ for (&key, &max) in lookup.iter() {
+ assert_eq!(Some(max), a.iter().copied().filter(|&val| val % modulo == key).max_by_key(|&val| val));
+ }
+ }
+
+ fn correct_grouping_map_by_min_modulo_key(a: Vec<u8>, modulo: u8) -> () {
+ let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0`
+ let lookup = a.iter().copied().into_grouping_map_by(|i| i % modulo).min();
+
+ let group_map_lookup = a.iter().copied()
+ .map(|i| (i % modulo, i))
+ .into_group_map()
+ .into_iter()
+ .map(|(key, vals)| (key, vals.into_iter().min().unwrap()))
+ .collect::<HashMap<_,_>>();
+ assert_eq!(lookup, group_map_lookup);
+
+ for (&key, &min) in lookup.iter() {
+ assert_eq!(Some(min), a.iter().copied().filter(|&val| val % modulo == key).min());
+ }
+ }
+
+ fn correct_grouping_map_by_min_by_modulo_key(a: Vec<u8>, modulo: u8) -> () {
+ let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0`
+ let lookup = a.iter().copied().into_grouping_map_by(|i| i % modulo).min_by(|_, v1, v2| v1.cmp(v2));
+
+ let group_map_lookup = a.iter().copied()
+ .map(|i| (i % modulo, i))
+ .into_group_map()
+ .into_iter()
+ .map(|(key, vals)| (key, vals.into_iter().min_by(|v1, v2| v1.cmp(v2)).unwrap()))
+ .collect::<HashMap<_,_>>();
+ assert_eq!(lookup, group_map_lookup);
+
+ for (&key, &min) in lookup.iter() {
+ assert_eq!(Some(min), a.iter().copied().filter(|&val| val % modulo == key).min_by(|v1, v2| v1.cmp(v2)));
+ }
+ }
+
+ fn correct_grouping_map_by_min_by_key_modulo_key(a: Vec<u8>, modulo: u8) -> () {
+ let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0`
+ let lookup = a.iter().copied().into_grouping_map_by(|i| i % modulo).min_by_key(|_, &val| val);
+
+ let group_map_lookup = a.iter().copied()
+ .map(|i| (i % modulo, i))
+ .into_group_map()
+ .into_iter()
+ .map(|(key, vals)| (key, vals.into_iter().min_by_key(|&val| val).unwrap()))
+ .collect::<HashMap<_,_>>();
+ assert_eq!(lookup, group_map_lookup);
+
+ for (&key, &min) in lookup.iter() {
+ assert_eq!(Some(min), a.iter().copied().filter(|&val| val % modulo == key).min_by_key(|&val| val));
+ }
+ }
+
+ fn correct_grouping_map_by_minmax_modulo_key(a: Vec<u8>, modulo: u8) -> () {
+ let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0`
+ let lookup = a.iter().copied().into_grouping_map_by(|i| i % modulo).minmax();
+
+ let group_map_lookup = a.iter().copied()
+ .map(|i| (i % modulo, i))
+ .into_group_map()
+ .into_iter()
+ .map(|(key, vals)| (key, vals.into_iter().minmax()))
+ .collect::<HashMap<_,_>>();
+ assert_eq!(lookup, group_map_lookup);
+
+ for (&key, &minmax) in lookup.iter() {
+ assert_eq!(minmax, a.iter().copied().filter(|&val| val % modulo == key).minmax());
+ }
+ }
+
+ fn correct_grouping_map_by_minmax_by_modulo_key(a: Vec<u8>, modulo: u8) -> () {
+ let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0`
+ let lookup = a.iter().copied().into_grouping_map_by(|i| i % modulo).minmax_by(|_, v1, v2| v1.cmp(v2));
+
+ let group_map_lookup = a.iter().copied()
+ .map(|i| (i % modulo, i))
+ .into_group_map()
+ .into_iter()
+ .map(|(key, vals)| (key, vals.into_iter().minmax_by(|v1, v2| v1.cmp(v2))))
+ .collect::<HashMap<_,_>>();
+ assert_eq!(lookup, group_map_lookup);
+
+ for (&key, &minmax) in lookup.iter() {
+ assert_eq!(minmax, a.iter().copied().filter(|&val| val % modulo == key).minmax_by(|v1, v2| v1.cmp(v2)));
+ }
+ }
+
+ fn correct_grouping_map_by_minmax_by_key_modulo_key(a: Vec<u8>, modulo: u8) -> () {
+ let modulo = if modulo == 0 { 1 } else { modulo }; // Avoid `% 0`
+ let lookup = a.iter().copied().into_grouping_map_by(|i| i % modulo).minmax_by_key(|_, &val| val);
+
+ let group_map_lookup = a.iter().copied()
+ .map(|i| (i % modulo, i))
+ .into_group_map()
+ .into_iter()
+ .map(|(key, vals)| (key, vals.into_iter().minmax_by_key(|&val| val)))
+ .collect::<HashMap<_,_>>();
+ assert_eq!(lookup, group_map_lookup);
+
+ for (&key, &minmax) in lookup.iter() {
+ assert_eq!(minmax, a.iter().copied().filter(|&val| val % modulo == key).minmax_by_key(|&val| val));
+ }
+ }
+
+ fn correct_grouping_map_by_sum_modulo_key(a: Vec<u8>, modulo: u8) -> () {
+ let modulo = if modulo == 0 { 1 } else { modulo } as u64; // Avoid `% 0`
+ let lookup = a.iter().map(|&b| b as u64) // Avoid overflows
+ .into_grouping_map_by(|i| i % modulo)
+ .sum();
+
+ let group_map_lookup = a.iter().map(|&b| b as u64)
+ .map(|i| (i % modulo, i))
+ .into_group_map()
+ .into_iter()
+ .map(|(key, vals)| (key, vals.into_iter().sum()))
+ .collect::<HashMap<_,_>>();
+ assert_eq!(lookup, group_map_lookup);
+
+ for (&key, &sum) in lookup.iter() {
+ assert_eq!(sum, a.iter().map(|&b| b as u64).filter(|&val| val % modulo == key).sum::<u64>());
+ }
+ }
+
+ fn correct_grouping_map_by_product_modulo_key(a: Vec<u8>, modulo: u8) -> () {
+ let modulo = Wrapping(if modulo == 0 { 1 } else { modulo } as u64); // Avoid `% 0`
+ let lookup = a.iter().map(|&b| Wrapping(b as u64)) // Avoid overflows
+ .into_grouping_map_by(|i| i % modulo)
+ .product();
+
+ let group_map_lookup = a.iter().map(|&b| Wrapping(b as u64))
+ .map(|i| (i % modulo, i))
+ .into_group_map()
+ .into_iter()
+ .map(|(key, vals)| (key, vals.into_iter().product::<Wrapping<u64>>()))
+ .collect::<HashMap<_,_>>();
+ assert_eq!(lookup, group_map_lookup);
+
+ for (&key, &prod) in lookup.iter() {
+ assert_eq!(
+ prod,
+ a.iter()
+ .map(|&b| Wrapping(b as u64))
+ .filter(|&val| val % modulo == key)
+ .product::<Wrapping<u64>>()
+ );
+ }
+ }
+
+ // This should check that if multiple elements are equally minimum or maximum
+ // then `max`, `min` and `minmax` pick the first minimum and the last maximum.
+ // This is to be consistent with `std::iter::max` and `std::iter::min`.
+ fn correct_grouping_map_by_min_max_minmax_order_modulo_key() -> () {
+ use itertools::MinMaxResult;
+
+ let lookup = (0..=10)
+ .into_grouping_map_by(|_| 0)
+ .max_by(|_, _, _| Ordering::Equal);
+
+ assert_eq!(lookup[&0], 10);
+
+ let lookup = (0..=10)
+ .into_grouping_map_by(|_| 0)
+ .min_by(|_, _, _| Ordering::Equal);
+
+ assert_eq!(lookup[&0], 0);
+
+ let lookup = (0..=10)
+ .into_grouping_map_by(|_| 0)
+ .minmax_by(|_, _, _| Ordering::Equal);
+
+ assert_eq!(lookup[&0], MinMaxResult::MinMax(0, 10));
+ }
+}
+
+quickcheck! {
+ fn counts(nums: Vec<isize>) -> TestResult {
+ let counts = nums.iter().counts();
+ for (&item, &count) in counts.iter() {
+ #[allow(clippy::absurd_extreme_comparisons)]
+ if count <= 0 {
+ return TestResult::failed();
+ }
+ if count != nums.iter().filter(|&x| x == item).count() {
+ return TestResult::failed();
+ }
+ }
+ for item in nums.iter() {
+ if !counts.contains_key(item) {
+ return TestResult::failed();
+ }
+ }
+ TestResult::passed()
+ }
+}
+
+quickcheck! {
+ fn test_double_ended_zip_2(a: Vec<u8>, b: Vec<u8>) -> TestResult {
+ let mut x =
+ multizip((a.clone().into_iter(), b.clone().into_iter()))
+ .collect_vec();
+ x.reverse();
+
+ let y =
+ multizip((a.into_iter(), b.into_iter()))
+ .rfold(Vec::new(), |mut vec, e| { vec.push(e); vec });
+
+ TestResult::from_bool(itertools::equal(x, y))
+ }
+
+ fn test_double_ended_zip_3(a: Vec<u8>, b: Vec<u8>, c: Vec<u8>) -> TestResult {
+ let mut x =
+ multizip((a.clone().into_iter(), b.clone().into_iter(), c.clone().into_iter()))
+ .collect_vec();
+ x.reverse();
+
+ let y =
+ multizip((a.into_iter(), b.into_iter(), c.into_iter()))
+ .rfold(Vec::new(), |mut vec, e| { vec.push(e); vec });
+
+ TestResult::from_bool(itertools::equal(x, y))
+ }
+}
+
+
+fn is_fused<I: Iterator>(mut it: I) -> bool
+{
+ for _ in it.by_ref() {}
+ for _ in 0..10{
+ if it.next().is_some(){
+ return false;
+ }
+ }
+ true
+}
+
+quickcheck! {
+ fn fused_combination(a: Iter<i16>) -> bool
+ {
+ is_fused(a.clone().combinations(1)) &&
+ is_fused(a.combinations(3))
+ }
+
+ fn fused_combination_with_replacement(a: Iter<i16>) -> bool
+ {
+ is_fused(a.clone().combinations_with_replacement(1)) &&
+ is_fused(a.combinations_with_replacement(3))
+ }
+
+ fn fused_tuple_combination(a: Iter<i16>) -> bool
+ {
+ is_fused(a.clone().fuse().tuple_combinations::<(_,)>()) &&
+ is_fused(a.fuse().tuple_combinations::<(_,_,_)>())
+ }
+
+ fn fused_unique(a: Iter<i16>) -> bool
+ {
+ is_fused(a.fuse().unique())
+ }
+
+ fn fused_unique_by(a: Iter<i16>) -> bool
+ {
+ is_fused(a.fuse().unique_by(|x| x % 100))
+ }
+
+ fn fused_interleave_shortest(a: Iter<i16>, b: Iter<i16>) -> bool
+ {
+ !is_fused(a.clone().interleave_shortest(b.clone())) &&
+ is_fused(a.fuse().interleave_shortest(b.fuse()))
+ }
+
+ fn fused_product(a: Iter<i16>, b: Iter<i16>) -> bool
+ {
+ is_fused(a.fuse().cartesian_product(b.fuse()))
+ }
+
+ fn fused_merge(a: Iter<i16>, b: Iter<i16>) -> bool
+ {
+ is_fused(a.fuse().merge(b.fuse()))
+ }
+
+ fn fused_filter_ok(a: Iter<i16>) -> bool
+ {
+ is_fused(a.map(|x| if x % 2 == 0 {Ok(x)} else {Err(x)} )
+ .filter_ok(|x| x % 3 == 0)
+ .fuse())
+ }
+
+ fn fused_filter_map_ok(a: Iter<i16>) -> bool
+ {
+ is_fused(a.map(|x| if x % 2 == 0 {Ok(x)} else {Err(x)} )
+ .filter_map_ok(|x| if x % 3 == 0 {Some(x / 3)} else {None})
+ .fuse())
+ }
+
+ fn fused_positions(a: Iter<i16>) -> bool
+ {
+ !is_fused(a.clone().positions(|x|x%2==0)) &&
+ is_fused(a.fuse().positions(|x|x%2==0))
+ }
+
+ fn fused_update(a: Iter<i16>) -> bool
+ {
+ !is_fused(a.clone().update(|x|*x+=1)) &&
+ is_fused(a.fuse().update(|x|*x+=1))
+ }
+
+ fn fused_tuple_windows(a: Iter<i16>) -> bool
+ {
+ is_fused(a.fuse().tuple_windows::<(_,_)>())
+ }
+
+ fn fused_pad_using(a: Iter<i16>) -> bool
+ {
+ is_fused(a.fuse().pad_using(100,|_|0))
+ }
+}
+
+quickcheck! {
+ fn min_set_contains_min(a: Vec<(usize, char)>) -> bool {
+ let result_set = a.iter().min_set();
+ if let Some(result_element) = a.iter().min() {
+ result_set.contains(&result_element)
+ } else {
+ result_set.is_empty()
+ }
+ }
+
+ fn min_set_by_contains_min(a: Vec<(usize, char)>) -> bool {
+ let compare = |x: &&(usize, char), y: &&(usize, char)| x.1.cmp(&y.1);
+ let result_set = a.iter().min_set_by(compare);
+ if let Some(result_element) = a.iter().min_by(compare) {
+ result_set.contains(&result_element)
+ } else {
+ result_set.is_empty()
+ }
+ }
+
+ fn min_set_by_key_contains_min(a: Vec<(usize, char)>) -> bool {
+ let key = |x: &&(usize, char)| x.1;
+ let result_set = a.iter().min_set_by_key(&key);
+ if let Some(result_element) = a.iter().min_by_key(&key) {
+ result_set.contains(&result_element)
+ } else {
+ result_set.is_empty()
+ }
+ }
+
+ fn max_set_contains_max(a: Vec<(usize, char)>) -> bool {
+ let result_set = a.iter().max_set();
+ if let Some(result_element) = a.iter().max() {
+ result_set.contains(&result_element)
+ } else {
+ result_set.is_empty()
+ }
+ }
+
+ fn max_set_by_contains_max(a: Vec<(usize, char)>) -> bool {
+ let compare = |x: &&(usize, char), y: &&(usize, char)| x.1.cmp(&y.1);
+ let result_set = a.iter().max_set_by(compare);
+ if let Some(result_element) = a.iter().max_by(compare) {
+ result_set.contains(&result_element)
+ } else {
+ result_set.is_empty()
+ }
+ }
+
+ fn max_set_by_key_contains_max(a: Vec<(usize, char)>) -> bool {
+ let key = |x: &&(usize, char)| x.1;
+ let result_set = a.iter().max_set_by_key(&key);
+ if let Some(result_element) = a.iter().max_by_key(&key) {
+ result_set.contains(&result_element)
+ } else {
+ result_set.is_empty()
+ }
+ }
+}
diff --git a/vendor/itertools-0.10.5/tests/specializations.rs b/vendor/itertools-0.10.5/tests/specializations.rs
new file mode 100644
index 000000000..057e11c9f
--- /dev/null
+++ b/vendor/itertools-0.10.5/tests/specializations.rs
@@ -0,0 +1,153 @@
+use itertools::Itertools;
+use std::fmt::Debug;
+use quickcheck::quickcheck;
+
+struct Unspecialized<I>(I);
+impl<I> Iterator for Unspecialized<I>
+where
+ I: Iterator,
+{
+ type Item = I::Item;
+
+ #[inline(always)]
+ fn next(&mut self) -> Option<Self::Item> {
+ self.0.next()
+ }
+}
+
+macro_rules! check_specialized {
+ ($src:expr, |$it:pat| $closure:expr) => {
+ let $it = $src.clone();
+ let v1 = $closure;
+
+ let $it = Unspecialized($src.clone());
+ let v2 = $closure;
+
+ assert_eq!(v1, v2);
+ }
+}
+
+fn test_specializations<IterItem, Iter>(
+ it: &Iter,
+) where
+ IterItem: Eq + Debug + Clone,
+ Iter: Iterator<Item = IterItem> + Clone,
+{
+ check_specialized!(it, |i| i.count());
+ check_specialized!(it, |i| i.last());
+ check_specialized!(it, |i| i.collect::<Vec<_>>());
+ check_specialized!(it, |i| {
+ let mut parameters_from_fold = vec![];
+ let fold_result = i.fold(vec![], |mut acc, v: IterItem| {
+ parameters_from_fold.push((acc.clone(), v.clone()));
+ acc.push(v);
+ acc
+ });
+ (parameters_from_fold, fold_result)
+ });
+ check_specialized!(it, |mut i| {
+ let mut parameters_from_all = vec![];
+ let first = i.next();
+ let all_result = i.all(|x| {
+ parameters_from_all.push(x.clone());
+ Some(x)==first
+ });
+ (parameters_from_all, all_result)
+ });
+ let size = it.clone().count();
+ for n in 0..size + 2 {
+ check_specialized!(it, |mut i| i.nth(n));
+ }
+ // size_hint is a bit harder to check
+ let mut it_sh = it.clone();
+ for n in 0..size + 2 {
+ let len = it_sh.clone().count();
+ let (min, max) = it_sh.size_hint();
+ assert_eq!(size - n.min(size), len);
+ assert!(min <= len);
+ if let Some(max) = max {
+ assert!(len <= max);
+ }
+ it_sh.next();
+ }
+}
+
+quickcheck! {
+ fn intersperse(v: Vec<u8>) -> () {
+ test_specializations(&v.into_iter().intersperse(0));
+ }
+}
+
+quickcheck! {
+ fn put_back_qc(test_vec: Vec<i32>) -> () {
+ test_specializations(&itertools::put_back(test_vec.iter()));
+ let mut pb = itertools::put_back(test_vec.into_iter());
+ pb.put_back(1);
+ test_specializations(&pb);
+ }
+}
+
+quickcheck! {
+ fn merge_join_by_qc(i1: Vec<usize>, i2: Vec<usize>) -> () {
+ test_specializations(&i1.into_iter().merge_join_by(i2.into_iter(), std::cmp::Ord::cmp));
+ }
+}
+
+quickcheck! {
+ fn map_into(v: Vec<u8>) -> () {
+ test_specializations(&v.into_iter().map_into::<u32>());
+ }
+}
+
+quickcheck! {
+ fn map_ok(v: Vec<Result<u8, char>>) -> () {
+ test_specializations(&v.into_iter().map_ok(|u| u.checked_add(1)));
+ }
+}
+
+quickcheck! {
+ fn process_results(v: Vec<Result<u8, u8>>) -> () {
+ helper(v.iter().copied());
+ helper(v.iter().copied().filter(Result::is_ok));
+
+ fn helper(it: impl Iterator<Item = Result<u8, u8>> + Clone) {
+ macro_rules! check_results_specialized {
+ ($src:expr, |$it:pat| $closure:expr) => {
+ assert_eq!(
+ itertools::process_results($src.clone(), |$it| $closure),
+ itertools::process_results($src.clone(), |i| {
+ let $it = Unspecialized(i);
+ $closure
+ }),
+ )
+ }
+ }
+
+ check_results_specialized!(it, |i| i.count());
+ check_results_specialized!(it, |i| i.last());
+ check_results_specialized!(it, |i| i.collect::<Vec<_>>());
+ check_results_specialized!(it, |i| {
+ let mut parameters_from_fold = vec![];
+ let fold_result = i.fold(vec![], |mut acc, v| {
+ parameters_from_fold.push((acc.clone(), v));
+ acc.push(v);
+ acc
+ });
+ (parameters_from_fold, fold_result)
+ });
+ check_results_specialized!(it, |mut i| {
+ let mut parameters_from_all = vec![];
+ let first = i.next();
+ let all_result = i.all(|x| {
+ parameters_from_all.push(x);
+ Some(x)==first
+ });
+ (parameters_from_all, all_result)
+ });
+ let size = it.clone().count();
+ for n in 0..size + 2 {
+ check_results_specialized!(it, |mut i| i.nth(n));
+ }
+ }
+ }
+}
diff --git a/vendor/itertools-0.10.5/tests/test_core.rs b/vendor/itertools-0.10.5/tests/test_core.rs
new file mode 100644
index 000000000..df94eb665
--- /dev/null
+++ b/vendor/itertools-0.10.5/tests/test_core.rs
@@ -0,0 +1,317 @@
+//! Licensed under the Apache License, Version 2.0
+//! https://www.apache.org/licenses/LICENSE-2.0 or the MIT license
+//! https://opensource.org/licenses/MIT, at your
+//! option. This file may not be copied, modified, or distributed
+//! except according to those terms.
+#![no_std]
+
+use core::iter;
+use itertools as it;
+use crate::it::Itertools;
+use crate::it::interleave;
+use crate::it::intersperse;
+use crate::it::intersperse_with;
+use crate::it::multizip;
+use crate::it::free::put_back;
+use crate::it::iproduct;
+use crate::it::izip;
+use crate::it::chain;
+
+#[test]
+fn product2() {
+ let s = "αβ";
+
+ let mut prod = iproduct!(s.chars(), 0..2);
+ assert!(prod.next() == Some(('α', 0)));
+ assert!(prod.next() == Some(('α', 1)));
+ assert!(prod.next() == Some(('β', 0)));
+ assert!(prod.next() == Some(('β', 1)));
+ assert!(prod.next() == None);
+}
+
+#[test]
+fn product_temporary() {
+ for (_x, _y, _z) in iproduct!(
+ [0, 1, 2].iter().cloned(),
+ [0, 1, 2].iter().cloned(),
+ [0, 1, 2].iter().cloned())
+ {
+ // ok
+ }
+}
+
+
+#[test]
+fn izip_macro() {
+ let mut zip = izip!(2..3);
+ assert!(zip.next() == Some(2));
+ assert!(zip.next().is_none());
+
+ let mut zip = izip!(0..3, 0..2, 0..2i8);
+ for i in 0..2 {
+ assert!((i as usize, i, i as i8) == zip.next().unwrap());
+ }
+ assert!(zip.next().is_none());
+
+ let xs: [isize; 0] = [];
+ let mut zip = izip!(0..3, 0..2, 0..2i8, &xs);
+ assert!(zip.next().is_none());
+}
+
+#[test]
+fn izip2() {
+ let _zip1: iter::Zip<_, _> = izip!(1.., 2..);
+ let _zip2: iter::Zip<_, _> = izip!(1.., 2.., );
+}
+
+#[test]
+fn izip3() {
+ let mut zip: iter::Map<iter::Zip<_, _>, _> = izip!(0..3, 0..2, 0..2i8);
+ for i in 0..2 {
+ assert!((i as usize, i, i as i8) == zip.next().unwrap());
+ }
+ assert!(zip.next().is_none());
+}
+
+#[test]
+fn multizip3() {
+ let mut zip = multizip((0..3, 0..2, 0..2i8));
+ for i in 0..2 {
+ assert!((i as usize, i, i as i8) == zip.next().unwrap());
+ }
+ assert!(zip.next().is_none());
+
+ let xs: [isize; 0] = [];
+ let mut zip = multizip((0..3, 0..2, 0..2i8, xs.iter()));
+ assert!(zip.next().is_none());
+
+ for (_, _, _, _, _) in multizip((0..3, 0..2, xs.iter(), &xs, xs.to_vec())) {
+ /* test compiles */
+ }
+}
+
+#[test]
+fn chain_macro() {
+ let mut chain = chain!(2..3);
+ assert!(chain.next() == Some(2));
+ assert!(chain.next().is_none());
+
+ let mut chain = chain!(0..2, 2..3, 3..5i8);
+ for i in 0..5i8 {
+ assert_eq!(Some(i), chain.next());
+ }
+ assert!(chain.next().is_none());
+
+ let mut chain = chain!();
+ assert_eq!(chain.next(), Option::<()>::None);
+}
+
+#[test]
+fn chain2() {
+ let _ = chain!(1.., 2..);
+ let _ = chain!(1.., 2.., );
+}
+
+#[test]
+fn write_to() {
+ let xs = [7, 9, 8];
+ let mut ys = [0; 5];
+ let cnt = ys.iter_mut().set_from(xs.iter().copied());
+ assert!(cnt == xs.len());
+ assert!(ys == [7, 9, 8, 0, 0]);
+
+ let cnt = ys.iter_mut().set_from(0..10);
+ assert!(cnt == ys.len());
+ assert!(ys == [0, 1, 2, 3, 4]);
+}
+
+#[test]
+fn test_interleave() {
+ let xs: [u8; 0] = [];
+ let ys = [7u8, 9, 8, 10];
+ let zs = [2u8, 77];
+ let it = interleave(xs.iter(), ys.iter());
+ it::assert_equal(it, ys.iter());
+
+ let rs = [7u8, 2, 9, 77, 8, 10];
+ let it = interleave(ys.iter(), zs.iter());
+ it::assert_equal(it, rs.iter());
+}
+
+#[test]
+fn test_intersperse() {
+ let xs = [1u8, 2, 3];
+ let ys = [1u8, 0, 2, 0, 3];
+ let it = intersperse(&xs, &0);
+ it::assert_equal(it, ys.iter());
+}
+
+#[test]
+fn test_intersperse_with() {
+ let xs = [1u8, 2, 3];
+ let ys = [1u8, 10, 2, 10, 3];
+ let i = 10;
+ let it = intersperse_with(&xs, || &i);
+ it::assert_equal(it, ys.iter());
+}
+
+#[allow(deprecated)]
+#[test]
+fn foreach() {
+ let xs = [1i32, 2, 3];
+ let mut sum = 0;
+ xs.iter().foreach(|elt| sum += *elt);
+ assert!(sum == 6);
+}
+
+#[test]
+fn dropping() {
+ let xs = [1, 2, 3];
+ let mut it = xs.iter().dropping(2);
+ assert_eq!(it.next(), Some(&3));
+ assert!(it.next().is_none());
+ let mut it = xs.iter().dropping(5);
+ assert!(it.next().is_none());
+}
+
+#[test]
+fn batching() {
+ let xs = [0, 1, 2, 1, 3];
+ let ys = [(0, 1), (2, 1)];
+
+ // An iterator that gathers elements up in pairs
+ let pit = xs
+ .iter()
+ .cloned()
+ .batching(|it| it.next().and_then(|x| it.next().map(|y| (x, y))));
+ it::assert_equal(pit, ys.iter().cloned());
+}
+
+#[test]
+fn test_put_back() {
+ let xs = [0, 1, 1, 1, 2, 1, 3, 3];
+ let mut pb = put_back(xs.iter().cloned());
+ pb.next();
+ pb.put_back(1);
+ pb.put_back(0);
+ it::assert_equal(pb, xs.iter().cloned());
+}
+
+#[allow(deprecated)]
+#[test]
+fn step() {
+ it::assert_equal((0..10).step(1), 0..10);
+ it::assert_equal((0..10).step(2), (0..10).filter(|x: &i32| *x % 2 == 0));
+ it::assert_equal((0..10).step(10), 0..1);
+}
+
+#[allow(deprecated)]
+#[test]
+fn merge() {
+ it::assert_equal((0..10).step(2).merge((1..10).step(2)), 0..10);
+}
+
+
+#[test]
+fn repeatn() {
+ let s = "α";
+ let mut it = it::repeat_n(s, 3);
+ assert_eq!(it.len(), 3);
+ assert_eq!(it.next(), Some(s));
+ assert_eq!(it.next(), Some(s));
+ assert_eq!(it.next(), Some(s));
+ assert_eq!(it.next(), None);
+ assert_eq!(it.next(), None);
+}
+
+#[test]
+fn count_clones() {
+ // Check that RepeatN only clones N - 1 times.
+
+ use core::cell::Cell;
+ #[derive(PartialEq, Debug)]
+ struct Foo {
+ n: Cell<usize>
+ }
+
+ impl Clone for Foo
+ {
+ fn clone(&self) -> Self
+ {
+ let n = self.n.get();
+ self.n.set(n + 1);
+ Foo { n: Cell::new(n + 1) }
+ }
+ }
+
+
+ for n in 0..10 {
+ let f = Foo{n: Cell::new(0)};
+ let it = it::repeat_n(f, n);
+ // drain it
+ let last = it.last();
+ if n == 0 {
+ assert_eq!(last, None);
+ } else {
+ assert_eq!(last, Some(Foo{n: Cell::new(n - 1)}));
+ }
+ }
+}
+
+#[test]
+fn part() {
+ let mut data = [7, 1, 1, 9, 1, 1, 3];
+ let i = it::partition(&mut data, |elt| *elt >= 3);
+ assert_eq!(i, 3);
+ assert_eq!(data, [7, 3, 9, 1, 1, 1, 1]);
+
+ let i = it::partition(&mut data, |elt| *elt == 1);
+ assert_eq!(i, 4);
+ assert_eq!(data, [1, 1, 1, 1, 9, 3, 7]);
+
+ let mut data = [1, 2, 3, 4, 5, 6, 7, 8, 9];
+ let i = it::partition(&mut data, |elt| *elt % 3 == 0);
+ assert_eq!(i, 3);
+ assert_eq!(data, [9, 6, 3, 4, 5, 2, 7, 8, 1]);
+}
+
+#[test]
+fn tree_fold1() {
+ for i in 0..100 {
+ assert_eq!((0..i).tree_fold1(|x, y| x + y), (0..i).fold1(|x, y| x + y));
+ }
+}
+
+#[test]
+fn exactly_one() {
+ assert_eq!((0..10).filter(|&x| x == 2).exactly_one().unwrap(), 2);
+ assert!((0..10).filter(|&x| x > 1 && x < 4).exactly_one().unwrap_err().eq(2..4));
+ assert!((0..10).filter(|&x| x > 1 && x < 5).exactly_one().unwrap_err().eq(2..5));
+ assert!((0..10).filter(|&_| false).exactly_one().unwrap_err().eq(0..0));
+}
+
+#[test]
+fn at_most_one() {
+ assert_eq!((0..10).filter(|&x| x == 2).at_most_one().unwrap(), Some(2));
+ assert!((0..10).filter(|&x| x > 1 && x < 4).at_most_one().unwrap_err().eq(2..4));
+ assert!((0..10).filter(|&x| x > 1 && x < 5).at_most_one().unwrap_err().eq(2..5));
+ assert_eq!((0..10).filter(|&_| false).at_most_one().unwrap(), None);
+}
+
+#[test]
+fn sum1() {
+ let v: &[i32] = &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
+ assert_eq!(v[..0].iter().cloned().sum1::<i32>(), None);
+ assert_eq!(v[1..2].iter().cloned().sum1::<i32>(), Some(1));
+ assert_eq!(v[1..3].iter().cloned().sum1::<i32>(), Some(3));
+ assert_eq!(v.iter().cloned().sum1::<i32>(), Some(55));
+}
+
+#[test]
+fn product1() {
+ let v: &[i32] = &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
+ assert_eq!(v[..0].iter().cloned().product1::<i32>(), None);
+ assert_eq!(v[..1].iter().cloned().product1::<i32>(), Some(0));
+ assert_eq!(v[1..3].iter().cloned().product1::<i32>(), Some(2));
+ assert_eq!(v[1..5].iter().cloned().product1::<i32>(), Some(24));
+}
diff --git a/vendor/itertools-0.10.5/tests/test_std.rs b/vendor/itertools-0.10.5/tests/test_std.rs
new file mode 100644
index 000000000..f59034234
--- /dev/null
+++ b/vendor/itertools-0.10.5/tests/test_std.rs
@@ -0,0 +1,1168 @@
+use quickcheck as qc;
+use rand::{distributions::{Distribution, Standard}, Rng, SeedableRng, rngs::StdRng};
+use rand::{seq::SliceRandom, thread_rng};
+use std::{cmp::min, fmt::Debug, marker::PhantomData};
+use itertools as it;
+use crate::it::Itertools;
+use crate::it::ExactlyOneError;
+use crate::it::multizip;
+use crate::it::multipeek;
+use crate::it::peek_nth;
+use crate::it::free::rciter;
+use crate::it::free::put_back_n;
+use crate::it::FoldWhile;
+use crate::it::cloned;
+use crate::it::iproduct;
+use crate::it::izip;
+
+#[test]
+fn product3() {
+ let prod = iproduct!(0..3, 0..2, 0..2);
+ assert_eq!(prod.size_hint(), (12, Some(12)));
+ let v = prod.collect_vec();
+ for i in 0..3 {
+ for j in 0..2 {
+ for k in 0..2 {
+ assert!((i, j, k) == v[(i * 2 * 2 + j * 2 + k) as usize]);
+ }
+ }
+ }
+ for (_, _, _, _) in iproduct!(0..3, 0..2, 0..2, 0..3) {
+ /* test compiles */
+ }
+}
+
+#[test]
+fn interleave_shortest() {
+ let v0: Vec<i32> = vec![0, 2, 4];
+ let v1: Vec<i32> = vec![1, 3, 5, 7];
+ let it = v0.into_iter().interleave_shortest(v1.into_iter());
+ assert_eq!(it.size_hint(), (6, Some(6)));
+ assert_eq!(it.collect_vec(), vec![0, 1, 2, 3, 4, 5]);
+
+ let v0: Vec<i32> = vec![0, 2, 4, 6, 8];
+ let v1: Vec<i32> = vec![1, 3, 5];
+ let it = v0.into_iter().interleave_shortest(v1.into_iter());
+ assert_eq!(it.size_hint(), (7, Some(7)));
+ assert_eq!(it.collect_vec(), vec![0, 1, 2, 3, 4, 5, 6]);
+
+ let i0 = ::std::iter::repeat(0);
+ let v1: Vec<_> = vec![1, 3, 5];
+ let it = i0.interleave_shortest(v1.into_iter());
+ assert_eq!(it.size_hint(), (7, Some(7)));
+
+ let v0: Vec<_> = vec![0, 2, 4];
+ let i1 = ::std::iter::repeat(1);
+ let it = v0.into_iter().interleave_shortest(i1);
+ assert_eq!(it.size_hint(), (6, Some(6)));
+}
+
+#[test]
+fn duplicates_by() {
+ let xs = ["aaa", "bbbbb", "aa", "ccc", "bbbb", "aaaaa", "cccc"];
+ let ys = ["aa", "bbbb", "cccc"];
+ it::assert_equal(ys.iter(), xs.iter().duplicates_by(|x| x[..2].to_string()));
+ it::assert_equal(ys.iter(), xs.iter().rev().duplicates_by(|x| x[..2].to_string()).rev());
+ let ys_rev = ["ccc", "aa", "bbbbb"];
+ it::assert_equal(ys_rev.iter(), xs.iter().duplicates_by(|x| x[..2].to_string()).rev());
+}
+
+#[test]
+fn duplicates() {
+ let xs = [0, 1, 2, 3, 2, 1, 3];
+ let ys = [2, 1, 3];
+ it::assert_equal(ys.iter(), xs.iter().duplicates());
+ it::assert_equal(ys.iter(), xs.iter().rev().duplicates().rev());
+ let ys_rev = [3, 2, 1];
+ it::assert_equal(ys_rev.iter(), xs.iter().duplicates().rev());
+
+ let xs = [0, 1, 0, 1];
+ let ys = [0, 1];
+ it::assert_equal(ys.iter(), xs.iter().duplicates());
+ it::assert_equal(ys.iter(), xs.iter().rev().duplicates().rev());
+ let ys_rev = [1, 0];
+ it::assert_equal(ys_rev.iter(), xs.iter().duplicates().rev());
+
+ let xs = vec![0, 1, 2, 1, 2];
+ let ys = vec![1, 2];
+ assert_eq!(ys, xs.iter().duplicates().cloned().collect_vec());
+ assert_eq!(ys, xs.iter().rev().duplicates().rev().cloned().collect_vec());
+ let ys_rev = vec![2, 1];
+ assert_eq!(ys_rev, xs.iter().duplicates().rev().cloned().collect_vec());
+}
+
+#[test]
+fn unique_by() {
+ let xs = ["aaa", "bbbbb", "aa", "ccc", "bbbb", "aaaaa", "cccc"];
+ let ys = ["aaa", "bbbbb", "ccc"];
+ it::assert_equal(ys.iter(), xs.iter().unique_by(|x| x[..2].to_string()));
+ it::assert_equal(ys.iter(), xs.iter().rev().unique_by(|x| x[..2].to_string()).rev());
+ let ys_rev = ["cccc", "aaaaa", "bbbb"];
+ it::assert_equal(ys_rev.iter(), xs.iter().unique_by(|x| x[..2].to_string()).rev());
+}
+
+#[test]
+fn unique() {
+ let xs = [0, 1, 2, 3, 2, 1, 3];
+ let ys = [0, 1, 2, 3];
+ it::assert_equal(ys.iter(), xs.iter().unique());
+ it::assert_equal(ys.iter(), xs.iter().rev().unique().rev());
+ let ys_rev = [3, 1, 2, 0];
+ it::assert_equal(ys_rev.iter(), xs.iter().unique().rev());
+
+ let xs = [0, 1];
+ let ys = [0, 1];
+ it::assert_equal(ys.iter(), xs.iter().unique());
+ it::assert_equal(ys.iter(), xs.iter().rev().unique().rev());
+ let ys_rev = [1, 0];
+ it::assert_equal(ys_rev.iter(), xs.iter().unique().rev());
+}
+
+#[test]
+fn intersperse() {
+ let xs = ["a", "", "b", "c"];
+ let v: Vec<&str> = xs.iter().cloned().intersperse(", ").collect();
+ let text: String = v.concat();
+ assert_eq!(text, "a, , b, c".to_string());
+
+ let ys = [0, 1, 2, 3];
+ let mut it = ys[..0].iter().copied().intersperse(1);
+ assert!(it.next() == None);
+}
+
+#[test]
+fn dedup() {
+ let xs = [0, 1, 1, 1, 2, 1, 3, 3];
+ let ys = [0, 1, 2, 1, 3];
+ it::assert_equal(ys.iter(), xs.iter().dedup());
+ let xs = [0, 0, 0, 0, 0];
+ let ys = [0];
+ it::assert_equal(ys.iter(), xs.iter().dedup());
+
+ let xs = [0, 1, 1, 1, 2, 1, 3, 3];
+ let ys = [0, 1, 2, 1, 3];
+ let mut xs_d = Vec::new();
+ xs.iter().dedup().fold((), |(), &elt| xs_d.push(elt));
+ assert_eq!(&xs_d, &ys);
+}
+
+#[test]
+fn coalesce() {
+ let data = vec![-1., -2., -3., 3., 1., 0., -1.];
+ let it = data.iter().cloned().coalesce(|x, y|
+ if (x >= 0.) == (y >= 0.) {
+ Ok(x + y)
+ } else {
+ Err((x, y))
+ }
+ );
+ itertools::assert_equal(it.clone(), vec![-6., 4., -1.]);
+ assert_eq!(
+ it.fold(vec![], |mut v, n| {
+ v.push(n);
+ v
+ }),
+ vec![-6., 4., -1.]
+ );
+}
+
+#[test]
+fn dedup_by() {
+ let xs = [(0, 0), (0, 1), (1, 1), (2, 1), (0, 2), (3, 1), (0, 3), (1, 3)];
+ let ys = [(0, 0), (0, 1), (0, 2), (3, 1), (0, 3)];
+ it::assert_equal(ys.iter(), xs.iter().dedup_by(|x, y| x.1==y.1));
+ let xs = [(0, 1), (0, 2), (0, 3), (0, 4), (0, 5)];
+ let ys = [(0, 1)];
+ it::assert_equal(ys.iter(), xs.iter().dedup_by(|x, y| x.0==y.0));
+
+ let xs = [(0, 0), (0, 1), (1, 1), (2, 1), (0, 2), (3, 1), (0, 3), (1, 3)];
+ let ys = [(0, 0), (0, 1), (0, 2), (3, 1), (0, 3)];
+ let mut xs_d = Vec::new();
+ xs.iter().dedup_by(|x, y| x.1==y.1).fold((), |(), &elt| xs_d.push(elt));
+ assert_eq!(&xs_d, &ys);
+}
+
+#[test]
+fn dedup_with_count() {
+ let xs: [i32; 8] = [0, 1, 1, 1, 2, 1, 3, 3];
+ let ys: [(usize, &i32); 5] = [(1, &0), (3, &1), (1, &2), (1, &1), (2, &3)];
+
+ it::assert_equal(ys.iter().cloned(), xs.iter().dedup_with_count());
+
+ let xs: [i32; 5] = [0, 0, 0, 0, 0];
+ let ys: [(usize, &i32); 1] = [(5, &0)];
+
+ it::assert_equal(ys.iter().cloned(), xs.iter().dedup_with_count());
+}
+
+
+#[test]
+fn dedup_by_with_count() {
+ let xs = [(0, 0), (0, 1), (1, 1), (2, 1), (0, 2), (3, 1), (0, 3), (1, 3)];
+ let ys = [(1, &(0, 0)), (3, &(0, 1)), (1, &(0, 2)), (1, &(3, 1)), (2, &(0, 3))];
+
+ it::assert_equal(ys.iter().cloned(), xs.iter().dedup_by_with_count(|x, y| x.1==y.1));
+
+ let xs = [(0, 1), (0, 2), (0, 3), (0, 4), (0, 5)];
+ let ys = [( 5, &(0, 1))];
+
+ it::assert_equal(ys.iter().cloned(), xs.iter().dedup_by_with_count(|x, y| x.0==y.0));
+}
+
+#[test]
+fn all_equal() {
+ assert!("".chars().all_equal());
+ assert!("A".chars().all_equal());
+ assert!(!"AABBCCC".chars().all_equal());
+ assert!("AAAAAAA".chars().all_equal());
+ for (_key, mut sub) in &"AABBCCC".chars().group_by(|&x| x) {
+ assert!(sub.all_equal());
+ }
+}
+
+#[test]
+fn all_unique() {
+ assert!("ABCDEFGH".chars().all_unique());
+ assert!(!"ABCDEFGA".chars().all_unique());
+ assert!(::std::iter::empty::<usize>().all_unique());
+}
+
+#[test]
+fn test_put_back_n() {
+ let xs = [0, 1, 1, 1, 2, 1, 3, 3];
+ let mut pb = put_back_n(xs.iter().cloned());
+ pb.next();
+ pb.next();
+ pb.put_back(1);
+ pb.put_back(0);
+ it::assert_equal(pb, xs.iter().cloned());
+}
+
+#[test]
+fn tee() {
+ let xs = [0, 1, 2, 3];
+ let (mut t1, mut t2) = xs.iter().cloned().tee();
+ assert_eq!(t1.next(), Some(0));
+ assert_eq!(t2.next(), Some(0));
+ assert_eq!(t1.next(), Some(1));
+ assert_eq!(t1.next(), Some(2));
+ assert_eq!(t1.next(), Some(3));
+ assert_eq!(t1.next(), None);
+ assert_eq!(t2.next(), Some(1));
+ assert_eq!(t2.next(), Some(2));
+ assert_eq!(t1.next(), None);
+ assert_eq!(t2.next(), Some(3));
+ assert_eq!(t2.next(), None);
+ assert_eq!(t1.next(), None);
+ assert_eq!(t2.next(), None);
+
+ let (t1, t2) = xs.iter().cloned().tee();
+ it::assert_equal(t1, xs.iter().cloned());
+ it::assert_equal(t2, xs.iter().cloned());
+
+ let (t1, t2) = xs.iter().cloned().tee();
+ it::assert_equal(t1.zip(t2), xs.iter().cloned().zip(xs.iter().cloned()));
+}
+
+
+#[test]
+fn test_rciter() {
+ let xs = [0, 1, 1, 1, 2, 1, 3, 5, 6];
+
+ let mut r1 = rciter(xs.iter().cloned());
+ let mut r2 = r1.clone();
+ assert_eq!(r1.next(), Some(0));
+ assert_eq!(r2.next(), Some(1));
+ let mut z = r1.zip(r2);
+ assert_eq!(z.next(), Some((1, 1)));
+ assert_eq!(z.next(), Some((2, 1)));
+ assert_eq!(z.next(), Some((3, 5)));
+ assert_eq!(z.next(), None);
+
+ // test intoiterator
+ let r1 = rciter(0..5);
+ let mut z = izip!(&r1, r1);
+ assert_eq!(z.next(), Some((0, 1)));
+}
+
+#[allow(deprecated)]
+#[test]
+fn trait_pointers() {
+ struct ByRef<'r, I: ?Sized>(&'r mut I) ;
+
+ impl<'r, X, I: ?Sized> Iterator for ByRef<'r, I> where
+ I: 'r + Iterator<Item=X>
+ {
+ type Item = X;
+ fn next(&mut self) -> Option<Self::Item>
+ {
+ self.0.next()
+ }
+ }
+
+ let mut it = Box::new(0..10) as Box<dyn Iterator<Item=i32>>;
+ assert_eq!(it.next(), Some(0));
+
+ {
+ /* make sure foreach works on non-Sized */
+ let jt: &mut dyn Iterator<Item = i32> = &mut *it;
+ assert_eq!(jt.next(), Some(1));
+
+ {
+ let mut r = ByRef(jt);
+ assert_eq!(r.next(), Some(2));
+ }
+
+ assert_eq!(jt.find_position(|x| *x == 4), Some((1, 4)));
+ jt.foreach(|_| ());
+ }
+}
+
+#[test]
+fn merge_by() {
+ let odd : Vec<(u32, &str)> = vec![(1, "hello"), (3, "world"), (5, "!")];
+ let even = vec![(2, "foo"), (4, "bar"), (6, "baz")];
+ let expected = vec![(1, "hello"), (2, "foo"), (3, "world"), (4, "bar"), (5, "!"), (6, "baz")];
+ let results = odd.iter().merge_by(even.iter(), |a, b| a.0 <= b.0);
+ it::assert_equal(results, expected.iter());
+}
+
+#[test]
+fn merge_by_btree() {
+ use std::collections::BTreeMap;
+ let mut bt1 = BTreeMap::new();
+ bt1.insert("hello", 1);
+ bt1.insert("world", 3);
+ let mut bt2 = BTreeMap::new();
+ bt2.insert("foo", 2);
+ bt2.insert("bar", 4);
+ let results = bt1.into_iter().merge_by(bt2.into_iter(), |a, b| a.0 <= b.0 );
+ let expected = vec![("bar", 4), ("foo", 2), ("hello", 1), ("world", 3)];
+ it::assert_equal(results, expected.into_iter());
+}
+
+#[allow(deprecated)]
+#[test]
+fn kmerge() {
+ let its = (0..4).map(|s| (s..10).step(4));
+
+ it::assert_equal(its.kmerge(), 0..10);
+}
+
+#[allow(deprecated)]
+#[test]
+fn kmerge_2() {
+ let its = vec![3, 2, 1, 0].into_iter().map(|s| (s..10).step(4));
+
+ it::assert_equal(its.kmerge(), 0..10);
+}
+
+#[test]
+fn kmerge_empty() {
+ let its = (0..4).map(|_| 0..0);
+ assert_eq!(its.kmerge().next(), None);
+}
+
+#[test]
+fn kmerge_size_hint() {
+ let its = (0..5).map(|_| (0..10));
+ assert_eq!(its.kmerge().size_hint(), (50, Some(50)));
+}
+
+#[test]
+fn kmerge_empty_size_hint() {
+ let its = (0..5).map(|_| (0..0));
+ assert_eq!(its.kmerge().size_hint(), (0, Some(0)));
+}
+
+#[test]
+fn join() {
+ let many = [1, 2, 3];
+ let one = [1];
+ let none: Vec<i32> = vec![];
+
+ assert_eq!(many.iter().join(", "), "1, 2, 3");
+ assert_eq!( one.iter().join(", "), "1");
+ assert_eq!(none.iter().join(", "), "");
+}
+
+#[test]
+fn sorted_unstable_by() {
+ let sc = [3, 4, 1, 2].iter().cloned().sorted_by(|&a, &b| {
+ a.cmp(&b)
+ });
+ it::assert_equal(sc, vec![1, 2, 3, 4]);
+
+ let v = (0..5).sorted_unstable_by(|&a, &b| a.cmp(&b).reverse());
+ it::assert_equal(v, vec![4, 3, 2, 1, 0]);
+}
+
+#[test]
+fn sorted_unstable_by_key() {
+ let sc = [3, 4, 1, 2].iter().cloned().sorted_unstable_by_key(|&x| x);
+ it::assert_equal(sc, vec![1, 2, 3, 4]);
+
+ let v = (0..5).sorted_unstable_by_key(|&x| -x);
+ it::assert_equal(v, vec![4, 3, 2, 1, 0]);
+}
+
+#[test]
+fn sorted_by() {
+ let sc = [3, 4, 1, 2].iter().cloned().sorted_by(|&a, &b| {
+ a.cmp(&b)
+ });
+ it::assert_equal(sc, vec![1, 2, 3, 4]);
+
+ let v = (0..5).sorted_by(|&a, &b| a.cmp(&b).reverse());
+ it::assert_equal(v, vec![4, 3, 2, 1, 0]);
+}
+
+qc::quickcheck! {
+ fn k_smallest_range(n: u64, m: u16, k: u16) -> () {
+ // u16 is used to constrain k and m to 0..2¹â¶,
+ // otherwise the test could use too much memory.
+ let (k, m) = (k as u64, m as u64);
+
+ // Generate a random permutation of n..n+m
+ let i = {
+ let mut v: Vec<u64> = (n..n.saturating_add(m)).collect();
+ v.shuffle(&mut thread_rng());
+ v.into_iter()
+ };
+
+ // Check that taking the k smallest elements yields n..n+min(k, m)
+ it::assert_equal(
+ i.k_smallest(k as usize),
+ n..n.saturating_add(min(k, m))
+ );
+ }
+}
+
+#[derive(Clone, Debug)]
+struct RandIter<T: 'static + Clone + Send, R: 'static + Clone + Rng + SeedableRng + Send = StdRng> {
+ idx: usize,
+ len: usize,
+ rng: R,
+ _t: PhantomData<T>
+}
+
+impl<T: Clone + Send, R: Clone + Rng + SeedableRng + Send> Iterator for RandIter<T, R>
+where Standard: Distribution<T> {
+ type Item = T;
+ fn next(&mut self) -> Option<T> {
+ if self.idx == self.len {
+ None
+ } else {
+ self.idx += 1;
+ Some(self.rng.gen())
+ }
+ }
+}
+
+impl<T: Clone + Send, R: Clone + Rng + SeedableRng + Send> qc::Arbitrary for RandIter<T, R> {
+ fn arbitrary<G: qc::Gen>(g: &mut G) -> Self {
+ RandIter {
+ idx: 0,
+ len: g.size(),
+ rng: R::seed_from_u64(g.next_u64()),
+ _t : PhantomData{},
+ }
+ }
+}
+
+// Check that taking the k smallest is the same as
+// sorting then taking the k first elements
+fn k_smallest_sort<I>(i: I, k: u16)
+where
+ I: Iterator + Clone,
+ I::Item: Ord + Debug,
+{
+ let j = i.clone();
+ let k = k as usize;
+ it::assert_equal(
+ i.k_smallest(k),
+ j.sorted().take(k)
+ )
+}
+
+macro_rules! generic_test {
+ ($f:ident, $($t:ty),+) => {
+ $(paste::item! {
+ qc::quickcheck! {
+ fn [< $f _ $t >](i: RandIter<$t>, k: u16) -> () {
+ $f(i, k)
+ }
+ }
+ })+
+ };
+}
+
+generic_test!(k_smallest_sort, u8, u16, u32, u64, i8, i16, i32, i64);
+
+#[test]
+fn sorted_by_key() {
+ let sc = [3, 4, 1, 2].iter().cloned().sorted_by_key(|&x| x);
+ it::assert_equal(sc, vec![1, 2, 3, 4]);
+
+ let v = (0..5).sorted_by_key(|&x| -x);
+ it::assert_equal(v, vec![4, 3, 2, 1, 0]);
+}
+
+#[test]
+fn sorted_by_cached_key() {
+ // Track calls to key function
+ let mut ncalls = 0;
+
+ let sorted = [3, 4, 1, 2].iter().cloned().sorted_by_cached_key(|&x| {
+ ncalls += 1;
+ x.to_string()
+ });
+ it::assert_equal(sorted, vec![1, 2, 3, 4]);
+ // Check key function called once per element
+ assert_eq!(ncalls, 4);
+
+ let mut ncalls = 0;
+
+ let sorted = (0..5).sorted_by_cached_key(|&x| {
+ ncalls += 1;
+ -x
+ });
+ it::assert_equal(sorted, vec![4, 3, 2, 1, 0]);
+ // Check key function called once per element
+ assert_eq!(ncalls, 5);
+}
+
+#[test]
+fn test_multipeek() {
+ let nums = vec![1u8,2,3,4,5];
+
+ let mp = multipeek(nums.iter().copied());
+ assert_eq!(nums, mp.collect::<Vec<_>>());
+
+ let mut mp = multipeek(nums.iter().copied());
+ assert_eq!(mp.peek(), Some(&1));
+ assert_eq!(mp.next(), Some(1));
+ assert_eq!(mp.peek(), Some(&2));
+ assert_eq!(mp.peek(), Some(&3));
+ assert_eq!(mp.next(), Some(2));
+ assert_eq!(mp.peek(), Some(&3));
+ assert_eq!(mp.peek(), Some(&4));
+ assert_eq!(mp.peek(), Some(&5));
+ assert_eq!(mp.peek(), None);
+ assert_eq!(mp.next(), Some(3));
+ assert_eq!(mp.next(), Some(4));
+ assert_eq!(mp.peek(), Some(&5));
+ assert_eq!(mp.peek(), None);
+ assert_eq!(mp.next(), Some(5));
+ assert_eq!(mp.next(), None);
+ assert_eq!(mp.peek(), None);
+}
+
+#[test]
+fn test_multipeek_reset() {
+ let data = [1, 2, 3, 4];
+
+ let mut mp = multipeek(cloned(&data));
+ assert_eq!(mp.peek(), Some(&1));
+ assert_eq!(mp.next(), Some(1));
+ assert_eq!(mp.peek(), Some(&2));
+ assert_eq!(mp.peek(), Some(&3));
+ mp.reset_peek();
+ assert_eq!(mp.peek(), Some(&2));
+ assert_eq!(mp.next(), Some(2));
+}
+
+#[test]
+fn test_multipeek_peeking_next() {
+ use crate::it::PeekingNext;
+ let nums = vec![1u8,2,3,4,5,6,7];
+
+ let mut mp = multipeek(nums.iter().copied());
+ assert_eq!(mp.peeking_next(|&x| x != 0), Some(1));
+ assert_eq!(mp.next(), Some(2));
+ assert_eq!(mp.peek(), Some(&3));
+ assert_eq!(mp.peek(), Some(&4));
+ assert_eq!(mp.peeking_next(|&x| x == 3), Some(3));
+ assert_eq!(mp.peek(), Some(&4));
+ assert_eq!(mp.peeking_next(|&x| x != 4), None);
+ assert_eq!(mp.peeking_next(|&x| x == 4), Some(4));
+ assert_eq!(mp.peek(), Some(&5));
+ assert_eq!(mp.peek(), Some(&6));
+ assert_eq!(mp.peeking_next(|&x| x != 5), None);
+ assert_eq!(mp.peek(), Some(&7));
+ assert_eq!(mp.peeking_next(|&x| x == 5), Some(5));
+ assert_eq!(mp.peeking_next(|&x| x == 6), Some(6));
+ assert_eq!(mp.peek(), Some(&7));
+ assert_eq!(mp.peek(), None);
+ assert_eq!(mp.next(), Some(7));
+ assert_eq!(mp.peek(), None);
+}
+
+#[test]
+fn test_peek_nth() {
+ let nums = vec![1u8,2,3,4,5];
+
+ let iter = peek_nth(nums.iter().copied());
+ assert_eq!(nums, iter.collect::<Vec<_>>());
+
+ let mut iter = peek_nth(nums.iter().copied());
+
+ assert_eq!(iter.peek_nth(0), Some(&1));
+ assert_eq!(iter.peek_nth(0), Some(&1));
+ assert_eq!(iter.next(), Some(1));
+
+ assert_eq!(iter.peek_nth(0), Some(&2));
+ assert_eq!(iter.peek_nth(1), Some(&3));
+ assert_eq!(iter.next(), Some(2));
+
+ assert_eq!(iter.peek_nth(0), Some(&3));
+ assert_eq!(iter.peek_nth(1), Some(&4));
+ assert_eq!(iter.peek_nth(2), Some(&5));
+ assert_eq!(iter.peek_nth(3), None);
+
+ assert_eq!(iter.next(), Some(3));
+ assert_eq!(iter.next(), Some(4));
+
+ assert_eq!(iter.peek_nth(0), Some(&5));
+ assert_eq!(iter.peek_nth(1), None);
+ assert_eq!(iter.next(), Some(5));
+ assert_eq!(iter.next(), None);
+
+ assert_eq!(iter.peek_nth(0), None);
+ assert_eq!(iter.peek_nth(1), None);
+}
+
+#[test]
+fn test_peek_nth_peeking_next() {
+ use it::PeekingNext;
+ let nums = vec![1u8,2,3,4,5,6,7];
+ let mut iter = peek_nth(nums.iter().copied());
+
+ assert_eq!(iter.peeking_next(|&x| x != 0), Some(1));
+ assert_eq!(iter.next(), Some(2));
+
+ assert_eq!(iter.peek_nth(0), Some(&3));
+ assert_eq!(iter.peek_nth(1), Some(&4));
+ assert_eq!(iter.peeking_next(|&x| x == 3), Some(3));
+ assert_eq!(iter.peek(), Some(&4));
+
+ assert_eq!(iter.peeking_next(|&x| x != 4), None);
+ assert_eq!(iter.peeking_next(|&x| x == 4), Some(4));
+ assert_eq!(iter.peek_nth(0), Some(&5));
+ assert_eq!(iter.peek_nth(1), Some(&6));
+
+ assert_eq!(iter.peeking_next(|&x| x != 5), None);
+ assert_eq!(iter.peek(), Some(&5));
+
+ assert_eq!(iter.peeking_next(|&x| x == 5), Some(5));
+ assert_eq!(iter.peeking_next(|&x| x == 6), Some(6));
+ assert_eq!(iter.peek_nth(0), Some(&7));
+ assert_eq!(iter.peek_nth(1), None);
+ assert_eq!(iter.next(), Some(7));
+ assert_eq!(iter.peek(), None);
+}
+
+#[test]
+fn pad_using() {
+ it::assert_equal((0..0).pad_using(1, |_| 1), 1..2);
+
+ let v: Vec<usize> = vec![0, 1, 2];
+ let r = v.into_iter().pad_using(5, |n| n);
+ it::assert_equal(r, vec![0, 1, 2, 3, 4]);
+
+ let v: Vec<usize> = vec![0, 1, 2];
+ let r = v.into_iter().pad_using(1, |_| panic!());
+ it::assert_equal(r, vec![0, 1, 2]);
+}
+
+#[test]
+fn group_by() {
+ for (ch1, sub) in &"AABBCCC".chars().group_by(|&x| x) {
+ for ch2 in sub {
+ assert_eq!(ch1, ch2);
+ }
+ }
+
+ for (ch1, sub) in &"AAABBBCCCCDDDD".chars().group_by(|&x| x) {
+ for ch2 in sub {
+ assert_eq!(ch1, ch2);
+ if ch1 == 'C' {
+ break;
+ }
+ }
+ }
+
+ let toupper = |ch: &char| ch.to_uppercase().next().unwrap();
+
+ // try all possible orderings
+ for indices in permutohedron::Heap::new(&mut [0, 1, 2, 3]) {
+ let groups = "AaaBbbccCcDDDD".chars().group_by(&toupper);
+ let mut subs = groups.into_iter().collect_vec();
+
+ for &idx in &indices[..] {
+ let (key, text) = match idx {
+ 0 => ('A', "Aaa".chars()),
+ 1 => ('B', "Bbb".chars()),
+ 2 => ('C', "ccCc".chars()),
+ 3 => ('D', "DDDD".chars()),
+ _ => unreachable!(),
+ };
+ assert_eq!(key, subs[idx].0);
+ it::assert_equal(&mut subs[idx].1, text);
+ }
+ }
+
+ let groups = "AAABBBCCCCDDDD".chars().group_by(|&x| x);
+ let mut subs = groups.into_iter().map(|(_, g)| g).collect_vec();
+
+ let sd = subs.pop().unwrap();
+ let sc = subs.pop().unwrap();
+ let sb = subs.pop().unwrap();
+ let sa = subs.pop().unwrap();
+ for (a, b, c, d) in multizip((sa, sb, sc, sd)) {
+ assert_eq!(a, 'A');
+ assert_eq!(b, 'B');
+ assert_eq!(c, 'C');
+ assert_eq!(d, 'D');
+ }
+
+ // check that the key closure is called exactly n times
+ {
+ let mut ntimes = 0;
+ let text = "AABCCC";
+ for (_, sub) in &text.chars().group_by(|&x| { ntimes += 1; x}) {
+ for _ in sub {
+ }
+ }
+ assert_eq!(ntimes, text.len());
+ }
+
+ {
+ let mut ntimes = 0;
+ let text = "AABCCC";
+ for _ in &text.chars().group_by(|&x| { ntimes += 1; x}) {
+ }
+ assert_eq!(ntimes, text.len());
+ }
+
+ {
+ let text = "ABCCCDEEFGHIJJKK";
+ let gr = text.chars().group_by(|&x| x);
+ it::assert_equal(gr.into_iter().flat_map(|(_, sub)| sub), text.chars());
+ }
+}
+
+#[test]
+fn group_by_lazy_2() {
+ let data = vec![0, 1];
+ let groups = data.iter().group_by(|k| *k);
+ let gs = groups.into_iter().collect_vec();
+ it::assert_equal(data.iter(), gs.into_iter().flat_map(|(_k, g)| g));
+
+ let data = vec![0, 1, 1, 0, 0];
+ let groups = data.iter().group_by(|k| *k);
+ let mut gs = groups.into_iter().collect_vec();
+ gs[1..].reverse();
+ it::assert_equal(&[0, 0, 0, 1, 1], gs.into_iter().flat_map(|(_, g)| g));
+
+ let grouper = data.iter().group_by(|k| *k);
+ let mut groups = Vec::new();
+ for (k, group) in &grouper {
+ if *k == 1 {
+ groups.push(group);
+ }
+ }
+ it::assert_equal(&mut groups[0], &[1, 1]);
+
+ let data = vec![0, 0, 0, 1, 1, 0, 0, 2, 2, 3, 3];
+ let grouper = data.iter().group_by(|k| *k);
+ let mut groups = Vec::new();
+ for (i, (_, group)) in grouper.into_iter().enumerate() {
+ if i < 2 {
+ groups.push(group);
+ } else if i < 4 {
+ for _ in group {
+ }
+ } else {
+ groups.push(group);
+ }
+ }
+ it::assert_equal(&mut groups[0], &[0, 0, 0]);
+ it::assert_equal(&mut groups[1], &[1, 1]);
+ it::assert_equal(&mut groups[2], &[3, 3]);
+
+ // use groups as chunks
+ let data = vec![0, 0, 0, 1, 1, 0, 0, 2, 2, 3, 3];
+ let mut i = 0;
+ let grouper = data.iter().group_by(move |_| { let k = i / 3; i += 1; k });
+ for (i, group) in &grouper {
+ match i {
+ 0 => it::assert_equal(group, &[0, 0, 0]),
+ 1 => it::assert_equal(group, &[1, 1, 0]),
+ 2 => it::assert_equal(group, &[0, 2, 2]),
+ 3 => it::assert_equal(group, &[3, 3]),
+ _ => unreachable!(),
+ }
+ }
+}
+
+#[test]
+fn group_by_lazy_3() {
+ // test consuming each group on the lap after it was produced
+ let data = vec![0, 0, 0, 1, 1, 0, 0, 1, 1, 2, 2];
+ let grouper = data.iter().group_by(|elt| *elt);
+ let mut last = None;
+ for (key, group) in &grouper {
+ if let Some(gr) = last.take() {
+ for elt in gr {
+ assert!(elt != key && i32::abs(elt - key) == 1);
+ }
+ }
+ last = Some(group);
+ }
+}
+
+#[test]
+fn chunks() {
+ let data = vec![0, 0, 0, 1, 1, 0, 0, 2, 2, 3, 3];
+ let grouper = data.iter().chunks(3);
+ for (i, chunk) in grouper.into_iter().enumerate() {
+ match i {
+ 0 => it::assert_equal(chunk, &[0, 0, 0]),
+ 1 => it::assert_equal(chunk, &[1, 1, 0]),
+ 2 => it::assert_equal(chunk, &[0, 2, 2]),
+ 3 => it::assert_equal(chunk, &[3, 3]),
+ _ => unreachable!(),
+ }
+ }
+}
+
+#[test]
+fn concat_empty() {
+ let data: Vec<Vec<()>> = Vec::new();
+ assert_eq!(data.into_iter().concat(), Vec::new())
+}
+
+#[test]
+fn concat_non_empty() {
+ let data = vec![vec![1,2,3], vec![4,5,6], vec![7,8,9]];
+ assert_eq!(data.into_iter().concat(), vec![1,2,3,4,5,6,7,8,9])
+}
+
+#[test]
+fn combinations() {
+ assert!((1..3).combinations(5).next().is_none());
+
+ let it = (1..3).combinations(2);
+ it::assert_equal(it, vec![
+ vec![1, 2],
+ ]);
+
+ let it = (1..5).combinations(2);
+ it::assert_equal(it, vec![
+ vec![1, 2],
+ vec![1, 3],
+ vec![1, 4],
+ vec![2, 3],
+ vec![2, 4],
+ vec![3, 4],
+ ]);
+
+ it::assert_equal((0..0).tuple_combinations::<(_, _)>(), <Vec<_>>::new());
+ it::assert_equal((0..1).tuple_combinations::<(_, _)>(), <Vec<_>>::new());
+ it::assert_equal((0..2).tuple_combinations::<(_, _)>(), vec![(0, 1)]);
+
+ it::assert_equal((0..0).combinations(2), <Vec<Vec<_>>>::new());
+ it::assert_equal((0..1).combinations(1), vec![vec![0]]);
+ it::assert_equal((0..2).combinations(1), vec![vec![0], vec![1]]);
+ it::assert_equal((0..2).combinations(2), vec![vec![0, 1]]);
+}
+
+#[test]
+fn combinations_of_too_short() {
+ for i in 1..10 {
+ assert!((0..0).combinations(i).next().is_none());
+ assert!((0..i - 1).combinations(i).next().is_none());
+ }
+}
+
+
+#[test]
+fn combinations_zero() {
+ it::assert_equal((1..3).combinations(0), vec![vec![]]);
+ it::assert_equal((0..0).combinations(0), vec![vec![]]);
+}
+
+#[test]
+fn permutations_zero() {
+ it::assert_equal((1..3).permutations(0), vec![vec![]]);
+ it::assert_equal((0..0).permutations(0), vec![vec![]]);
+}
+
+#[test]
+fn combinations_with_replacement() {
+ // Pool smaller than n
+ it::assert_equal((0..1).combinations_with_replacement(2), vec![vec![0, 0]]);
+ // Pool larger than n
+ it::assert_equal(
+ (0..3).combinations_with_replacement(2),
+ vec![
+ vec![0, 0],
+ vec![0, 1],
+ vec![0, 2],
+ vec![1, 1],
+ vec![1, 2],
+ vec![2, 2],
+ ],
+ );
+ // Zero size
+ it::assert_equal(
+ (0..3).combinations_with_replacement(0),
+ vec![vec![]],
+ );
+ // Zero size on empty pool
+ it::assert_equal(
+ (0..0).combinations_with_replacement(0),
+ vec![vec![]],
+ );
+ // Empty pool
+ it::assert_equal(
+ (0..0).combinations_with_replacement(2),
+ <Vec<Vec<_>>>::new(),
+ );
+}
+
+#[test]
+fn powerset() {
+ it::assert_equal((0..0).powerset(), vec![vec![]]);
+ it::assert_equal((0..1).powerset(), vec![vec![], vec![0]]);
+ it::assert_equal((0..2).powerset(), vec![vec![], vec![0], vec![1], vec![0, 1]]);
+ it::assert_equal((0..3).powerset(), vec![
+ vec![],
+ vec![0], vec![1], vec![2],
+ vec![0, 1], vec![0, 2], vec![1, 2],
+ vec![0, 1, 2]
+ ]);
+
+ assert_eq!((0..4).powerset().count(), 1 << 4);
+ assert_eq!((0..8).powerset().count(), 1 << 8);
+ assert_eq!((0..16).powerset().count(), 1 << 16);
+}
+
+#[test]
+fn diff_mismatch() {
+ let a = vec![1, 2, 3, 4];
+ let b = vec![1.0, 5.0, 3.0, 4.0];
+ let b_map = b.into_iter().map(|f| f as i32);
+ let diff = it::diff_with(a.iter(), b_map, |a, b| *a == b);
+
+ assert!(match diff {
+ Some(it::Diff::FirstMismatch(1, _, from_diff)) =>
+ from_diff.collect::<Vec<_>>() == vec![5, 3, 4],
+ _ => false,
+ });
+}
+
+#[test]
+fn diff_longer() {
+ let a = vec![1, 2, 3, 4];
+ let b = vec![1.0, 2.0, 3.0, 4.0, 5.0, 6.0];
+ let b_map = b.into_iter().map(|f| f as i32);
+ let diff = it::diff_with(a.iter(), b_map, |a, b| *a == b);
+
+ assert!(match diff {
+ Some(it::Diff::Longer(_, remaining)) =>
+ remaining.collect::<Vec<_>>() == vec![5, 6],
+ _ => false,
+ });
+}
+
+#[test]
+fn diff_shorter() {
+ let a = vec![1, 2, 3, 4];
+ let b = vec![1.0, 2.0];
+ let b_map = b.into_iter().map(|f| f as i32);
+ let diff = it::diff_with(a.iter(), b_map, |a, b| *a == b);
+
+ assert!(match diff {
+ Some(it::Diff::Shorter(len, _)) => len == 2,
+ _ => false,
+ });
+}
+
+#[test]
+fn extrema_set() {
+ use std::cmp::Ordering;
+
+ // A peculiar type: Equality compares both tuple items, but ordering only the
+ // first item. Used to distinguish equal elements.
+ #[derive(Clone, Debug, PartialEq, Eq)]
+ struct Val(u32, u32);
+
+ impl PartialOrd<Val> for Val {
+ fn partial_cmp(&self, other: &Val) -> Option<Ordering> {
+ self.0.partial_cmp(&other.0)
+ }
+ }
+
+ impl Ord for Val {
+ fn cmp(&self, other: &Val) -> Ordering {
+ self.0.cmp(&other.0)
+ }
+ }
+
+ assert_eq!(None::<u32>.iter().min_set(), Vec::<&u32>::new());
+ assert_eq!(None::<u32>.iter().max_set(), Vec::<&u32>::new());
+
+ assert_eq!(Some(1u32).iter().min_set(), vec![&1]);
+ assert_eq!(Some(1u32).iter().max_set(), vec![&1]);
+
+ let data = vec![Val(0, 1), Val(2, 0), Val(0, 2), Val(1, 0), Val(2, 1)];
+
+ let min_set = data.iter().min_set();
+ assert_eq!(min_set, vec![&Val(0, 1), &Val(0, 2)]);
+
+ let min_set_by_key = data.iter().min_set_by_key(|v| v.1);
+ assert_eq!(min_set_by_key, vec![&Val(2, 0), &Val(1, 0)]);
+
+ let min_set_by = data.iter().min_set_by(|x, y| x.1.cmp(&y.1));
+ assert_eq!(min_set_by, vec![&Val(2, 0), &Val(1, 0)]);
+
+ let max_set = data.iter().max_set();
+ assert_eq!(max_set, vec![&Val(2, 0), &Val(2, 1)]);
+
+ let max_set_by_key = data.iter().max_set_by_key(|v| v.1);
+ assert_eq!(max_set_by_key, vec![&Val(0, 2)]);
+
+ let max_set_by = data.iter().max_set_by(|x, y| x.1.cmp(&y.1));
+ assert_eq!(max_set_by, vec![&Val(0, 2)]);
+}
+
+#[test]
+fn minmax() {
+ use std::cmp::Ordering;
+ use crate::it::MinMaxResult;
+
+ // A peculiar type: Equality compares both tuple items, but ordering only the
+ // first item. This is so we can check the stability property easily.
+ #[derive(Clone, Debug, PartialEq, Eq)]
+ struct Val(u32, u32);
+
+ impl PartialOrd<Val> for Val {
+ fn partial_cmp(&self, other: &Val) -> Option<Ordering> {
+ self.0.partial_cmp(&other.0)
+ }
+ }
+
+ impl Ord for Val {
+ fn cmp(&self, other: &Val) -> Ordering {
+ self.0.cmp(&other.0)
+ }
+ }
+
+ assert_eq!(None::<Option<u32>>.iter().minmax(), MinMaxResult::NoElements);
+
+ assert_eq!(Some(1u32).iter().minmax(), MinMaxResult::OneElement(&1));
+
+ let data = vec![Val(0, 1), Val(2, 0), Val(0, 2), Val(1, 0), Val(2, 1)];
+
+ let minmax = data.iter().minmax();
+ assert_eq!(minmax, MinMaxResult::MinMax(&Val(0, 1), &Val(2, 1)));
+
+ let (min, max) = data.iter().minmax_by_key(|v| v.1).into_option().unwrap();
+ assert_eq!(min, &Val(2, 0));
+ assert_eq!(max, &Val(0, 2));
+
+ let (min, max) = data.iter().minmax_by(|x, y| x.1.cmp(&y.1)).into_option().unwrap();
+ assert_eq!(min, &Val(2, 0));
+ assert_eq!(max, &Val(0, 2));
+}
+
+#[test]
+fn format() {
+ let data = [0, 1, 2, 3];
+ let ans1 = "0, 1, 2, 3";
+ let ans2 = "0--1--2--3";
+
+ let t1 = format!("{}", data.iter().format(", "));
+ assert_eq!(t1, ans1);
+ let t2 = format!("{:?}", data.iter().format("--"));
+ assert_eq!(t2, ans2);
+
+ let dataf = [1.1, 5.71828, -22.];
+ let t3 = format!("{:.2e}", dataf.iter().format(", "));
+ assert_eq!(t3, "1.10e0, 5.72e0, -2.20e1");
+}
+
+#[test]
+fn while_some() {
+ let ns = (1..10).map(|x| if x % 5 != 0 { Some(x) } else { None })
+ .while_some();
+ it::assert_equal(ns, vec![1, 2, 3, 4]);
+}
+
+#[allow(deprecated)]
+#[test]
+fn fold_while() {
+ let mut iterations = 0;
+ let vec = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
+ let sum = vec.into_iter().fold_while(0, |acc, item| {
+ iterations += 1;
+ let new_sum = acc + item;
+ if new_sum <= 20 {
+ FoldWhile::Continue(new_sum)
+ } else {
+ FoldWhile::Done(acc)
+ }
+ }).into_inner();
+ assert_eq!(iterations, 6);
+ assert_eq!(sum, 15);
+}
+
+#[test]
+fn tree_fold1() {
+ let x = [
+ "",
+ "0",
+ "0 1 x",
+ "0 1 x 2 x",
+ "0 1 x 2 3 x x",
+ "0 1 x 2 3 x x 4 x",
+ "0 1 x 2 3 x x 4 5 x x",
+ "0 1 x 2 3 x x 4 5 x 6 x x",
+ "0 1 x 2 3 x x 4 5 x 6 7 x x x",
+ "0 1 x 2 3 x x 4 5 x 6 7 x x x 8 x",
+ "0 1 x 2 3 x x 4 5 x 6 7 x x x 8 9 x x",
+ "0 1 x 2 3 x x 4 5 x 6 7 x x x 8 9 x 10 x x",
+ "0 1 x 2 3 x x 4 5 x 6 7 x x x 8 9 x 10 11 x x x",
+ "0 1 x 2 3 x x 4 5 x 6 7 x x x 8 9 x 10 11 x x 12 x x",
+ "0 1 x 2 3 x x 4 5 x 6 7 x x x 8 9 x 10 11 x x 12 13 x x x",
+ "0 1 x 2 3 x x 4 5 x 6 7 x x x 8 9 x 10 11 x x 12 13 x 14 x x x",
+ "0 1 x 2 3 x x 4 5 x 6 7 x x x 8 9 x 10 11 x x 12 13 x 14 15 x x x x",
+ ];
+ for (i, &s) in x.iter().enumerate() {
+ let expected = if s.is_empty() { None } else { Some(s.to_string()) };
+ let num_strings = (0..i).map(|x| x.to_string());
+ let actual = num_strings.tree_fold1(|a, b| format!("{} {} x", a, b));
+ assert_eq!(actual, expected);
+ }
+}
+
+#[test]
+fn exactly_one_question_mark_syntax_works() {
+ exactly_one_question_mark_return().unwrap_err();
+}
+
+fn exactly_one_question_mark_return() -> Result<(), ExactlyOneError<std::slice::Iter<'static, ()>>> {
+ [].iter().exactly_one()?;
+ Ok(())
+}
+
+#[test]
+fn multiunzip() {
+ let (a, b, c): (Vec<_>, Vec<_>, Vec<_>) = [(0, 1, 2), (3, 4, 5), (6, 7, 8)].iter().cloned().multiunzip();
+ assert_eq!((a, b, c), (vec![0, 3, 6], vec![1, 4, 7], vec![2, 5, 8]));
+ let (): () = [(), (), ()].iter().cloned().multiunzip();
+ let t: (Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>) = [(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)].iter().cloned().multiunzip();
+ assert_eq!(t, (vec![0], vec![1], vec![2], vec![3], vec![4], vec![5], vec![6], vec![7], vec![8], vec![9], vec![10], vec![11]));
+}
diff --git a/vendor/itertools-0.10.5/tests/tuples.rs b/vendor/itertools-0.10.5/tests/tuples.rs
new file mode 100644
index 000000000..9fc8b3cc7
--- /dev/null
+++ b/vendor/itertools-0.10.5/tests/tuples.rs
@@ -0,0 +1,86 @@
+use itertools::Itertools;
+
+#[test]
+fn tuples() {
+ let v = [1, 2, 3, 4, 5];
+ let mut iter = v.iter().cloned().tuples();
+ assert_eq!(Some((1,)), iter.next());
+ assert_eq!(Some((2,)), iter.next());
+ assert_eq!(Some((3,)), iter.next());
+ assert_eq!(Some((4,)), iter.next());
+ assert_eq!(Some((5,)), iter.next());
+ assert_eq!(None, iter.next());
+ assert_eq!(None, iter.into_buffer().next());
+
+ let mut iter = v.iter().cloned().tuples();
+ assert_eq!(Some((1, 2)), iter.next());
+ assert_eq!(Some((3, 4)), iter.next());
+ assert_eq!(None, iter.next());
+ itertools::assert_equal(vec![5], iter.into_buffer());
+
+ let mut iter = v.iter().cloned().tuples();
+ assert_eq!(Some((1, 2, 3)), iter.next());
+ assert_eq!(None, iter.next());
+ itertools::assert_equal(vec![4, 5], iter.into_buffer());
+
+ let mut iter = v.iter().cloned().tuples();
+ assert_eq!(Some((1, 2, 3, 4)), iter.next());
+ assert_eq!(None, iter.next());
+ itertools::assert_equal(vec![5], iter.into_buffer());
+}
+
+#[test]
+fn tuple_windows() {
+ let v = [1, 2, 3, 4, 5];
+
+ let mut iter = v.iter().cloned().tuple_windows();
+ assert_eq!(Some((1,)), iter.next());
+ assert_eq!(Some((2,)), iter.next());
+ assert_eq!(Some((3,)), iter.next());
+
+ let mut iter = v.iter().cloned().tuple_windows();
+ assert_eq!(Some((1, 2)), iter.next());
+ assert_eq!(Some((2, 3)), iter.next());
+ assert_eq!(Some((3, 4)), iter.next());
+ assert_eq!(Some((4, 5)), iter.next());
+ assert_eq!(None, iter.next());
+
+ let mut iter = v.iter().cloned().tuple_windows();
+ assert_eq!(Some((1, 2, 3)), iter.next());
+ assert_eq!(Some((2, 3, 4)), iter.next());
+ assert_eq!(Some((3, 4, 5)), iter.next());
+ assert_eq!(None, iter.next());
+
+ let mut iter = v.iter().cloned().tuple_windows();
+ assert_eq!(Some((1, 2, 3, 4)), iter.next());
+ assert_eq!(Some((2, 3, 4, 5)), iter.next());
+ assert_eq!(None, iter.next());
+
+ let v = [1, 2, 3];
+ let mut iter = v.iter().cloned().tuple_windows::<(_, _, _, _)>();
+ assert_eq!(None, iter.next());
+}
+
+#[test]
+fn next_tuple() {
+ let v = [1, 2, 3, 4, 5];
+ let mut iter = v.iter();
+ assert_eq!(iter.next_tuple().map(|(&x, &y)| (x, y)), Some((1, 2)));
+ assert_eq!(iter.next_tuple().map(|(&x, &y)| (x, y)), Some((3, 4)));
+ assert_eq!(iter.next_tuple::<(_, _)>(), None);
+}
+
+#[test]
+fn collect_tuple() {
+ let v = [1, 2];
+ let iter = v.iter().cloned();
+ assert_eq!(iter.collect_tuple(), Some((1, 2)));
+
+ let v = [1];
+ let iter = v.iter().cloned();
+ assert_eq!(iter.collect_tuple::<(_, _)>(), None);
+
+ let v = [1, 2, 3];
+ let iter = v.iter().cloned();
+ assert_eq!(iter.collect_tuple::<(_, _)>(), None);
+}
diff --git a/vendor/itertools-0.10.5/tests/zip.rs b/vendor/itertools-0.10.5/tests/zip.rs
new file mode 100644
index 000000000..75157d34f
--- /dev/null
+++ b/vendor/itertools-0.10.5/tests/zip.rs
@@ -0,0 +1,77 @@
+use itertools::Itertools;
+use itertools::EitherOrBoth::{Both, Left, Right};
+use itertools::free::zip_eq;
+use itertools::multizip;
+
+#[test]
+fn zip_longest_fused() {
+ let a = [Some(1), None, Some(3), Some(4)];
+ let b = [1, 2, 3];
+
+ let unfused = a.iter().batching(|it| *it.next().unwrap())
+ .zip_longest(b.iter().cloned());
+ itertools::assert_equal(unfused,
+ vec![Both(1, 1), Right(2), Right(3)]);
+}
+
+#[test]
+fn test_zip_longest_size_hint() {
+ let c = (1..10).cycle();
+ let v: &[_] = &[0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
+ let v2 = &[10, 11, 12];
+
+ assert_eq!(c.zip_longest(v.iter()).size_hint(), (std::usize::MAX, None));
+
+ assert_eq!(v.iter().zip_longest(v2.iter()).size_hint(), (10, Some(10)));
+}
+
+#[test]
+fn test_double_ended_zip_longest() {
+ let xs = [1, 2, 3, 4, 5, 6];
+ let ys = [1, 2, 3, 7];
+ let a = xs.iter().copied();
+ let b = ys.iter().copied();
+ let mut it = a.zip_longest(b);
+ assert_eq!(it.next(), Some(Both(1, 1)));
+ assert_eq!(it.next(), Some(Both(2, 2)));
+ assert_eq!(it.next_back(), Some(Left(6)));
+ assert_eq!(it.next_back(), Some(Left(5)));
+ assert_eq!(it.next_back(), Some(Both(4, 7)));
+ assert_eq!(it.next(), Some(Both(3, 3)));
+ assert_eq!(it.next(), None);
+}
+
+#[test]
+fn test_double_ended_zip() {
+ let xs = [1, 2, 3, 4, 5, 6];
+ let ys = [1, 2, 3, 7];
+ let a = xs.iter().copied();
+ let b = ys.iter().copied();
+ let mut it = multizip((a, b));
+ assert_eq!(it.next_back(), Some((4, 7)));
+ assert_eq!(it.next_back(), Some((3, 3)));
+ assert_eq!(it.next_back(), Some((2, 2)));
+ assert_eq!(it.next_back(), Some((1, 1)));
+ assert_eq!(it.next_back(), None);
+}
+
+
+#[should_panic]
+#[test]
+fn zip_eq_panic1()
+{
+ let a = [1, 2];
+ let b = [1, 2, 3];
+
+ zip_eq(&a, &b).count();
+}
+
+#[should_panic]
+#[test]
+fn zip_eq_panic2()
+{
+ let a: [i32; 0] = [];
+ let b = [1, 2, 3];
+
+ zip_eq(&a, &b).count();
+}
diff --git a/vendor/itertools/.cargo-checksum.json b/vendor/itertools/.cargo-checksum.json
index a4f2873c5..327f66ceb 100644
--- a/vendor/itertools/.cargo-checksum.json
+++ b/vendor/itertools/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"ed6c781d541c40d4a19eaecd794cadebb94b3f4d51e32367803542c88f0457ee","Cargo.toml":"6dcbab25126c0cdf64f5089156de0d4346914c6d47c557d370b8e20e039ca7d3","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7576269ea71f767b99297934c0b2367532690f8c4badc695edf8e04ab6a1e545","README.md":"3acfeb07424200ae70bf571ef63a96bae954c298bddf447c9bea0ea9394825cc","benches/bench1.rs":"bb06f39db0544b1380cd4929139ccf521a9eecab7ca3f910b9499f965ec0a047","benches/combinations.rs":"51523ee1ca438a56f14711f0b04ee943895062d35859fbe23a2714d2fca3289d","benches/combinations_with_replacement.rs":"11f29160652a2d90ce7ca4b1c339c4457888ab6867e2456ce1c62e3adf9be737","benches/extra/mod.rs":"6ca290d72302a1945078621610b5788060b0de29639decebbdc557a80044aa97","benches/extra/zipslices.rs":"40e9f68a7c00f8429193fca463caef18851fa49b33355cc136bad3ccc840d655","benches/fold_specialization.rs":"5a517bbe29d366a15f6f751660e17ab1aa3e7b21552a1983048c662e34f0d69e","benches/powerset.rs":"6fd9d69a3483b37dc2411f99fb4efa6131577696f2dbdc8d1de9e4d7642fe3a3","benches/tree_fold1.rs":"539232e74f9aaea295a42069ac5af707811e90dc1c71c6e0a9064ffc731999de","benches/tuple_combinations.rs":"16366158743307a0289fc1df423a3cec45009807d410a9fe9922d5b6f8b7d002","benches/tuples.rs":"5a620783ae203e9ff9623d10d2c7fe9911d8b6c811cbad7613afa30e390c759d","clippy.toml":"33ffb83bbddb772575b3aa565b7136a8158ee386c216ffc2588fed9e83fa3826","examples/iris.data":"596ffd580471ca4d4880f8e439c7281f3b50d8249a5960353cb200b1490f63a0","examples/iris.rs":"1b465ed6a417180913104bc95a545fd9d1a3d67d121871ab737ad87e31b8be37","src/adaptors/coalesce.rs":"a0073325d40f297d29101538d18a267aef81889a999338dc09cb43a31cb4ec8b","src/adaptors/map.rs":"241971e856e468d71323071fb4a09867fbcedb83877320be132dc03516fe60e8","src/adaptors/mod.rs":"7f3bd7d011a348ce5e4bea486ef2e6346b64c7fe27540334d56d3f147f981d59","src/adaptors/multi_product.rs":"bb43e6dce68c815c21006d5b01c56e038d54b0c3bb8ee6bb8a4de11e2952c7ad","src/combinations.rs":"fb25babb459389093f886721016c72bf9f00e51d02735f638d871bb3a447ffd0","src/combinations_with_replacement.rs":"463011a574facbdd84278386b533a90e4dd517f0417e05adb82d182049db1f50","src/concat_impl.rs":"03b1ed61cbed242c286c3c4c5c848dbd57e02ab83fcef264f3a592b58107f324","src/cons_tuples_impl.rs":"c253d03b861831c01d62cacc57b49715ee62f6171e69f6886bb5a6ca0863bc3a","src/diff.rs":"a7800e9ce7a87b53ebe2338481335751fb43d44fa6a1ca719aceaaab40e5c8fe","src/duplicates_impl.rs":"f62fe4b642f501f785721ce5a505cf622a771e457210726dd0fb8b30be7ebbbc","src/either_or_both.rs":"76b13fbfac6bc959b4c1d8b7c99ce51726e95f994ca5429477e523a3d3950e4a","src/exactly_one_err.rs":"aa50081f6a31b5109b30e3ed305e3ec2413c6908dedc8990ec5378a99cee2b39","src/extrema_set.rs":"2a25b0b86eed2fd5d05622d591a3085cab823973d450816c2c3b8cb76e9c187e","src/flatten_ok.rs":"fe209fd886ecd9cb98d99625aa0c7274af7e644eff4a10de15b4dec8bbbc934a","src/format.rs":"a8192d85c0f9de8e633c202456e3cde0f3bc50f19b6bd8a4b2cfa3ef5123de1a","src/free.rs":"dfc57b7f56a08d4986a96b679018b41346576a7a34b668e008cc01109e728750","src/group_map.rs":"f7b02c964f63505d3e36280cfdc1755e05287714201efe983dacf702eee61434","src/groupbylazy.rs":"4f2181c022a45ff8444597708861fc6863eceb6f7555ea81cf3eeba19b492971","src/grouping_map.rs":"cbc45ac563345c96f3ac50c78f73c83d870523436a7ab88c1c9a685d204461d3","src/impl_macros.rs":"4f829b458873bed556f1aff2ae4e88dbd576766e2b5bcc07ff3ac8756758e6f4","src/intersperse.rs":"b9717242495846a4a979c95d93d5681caccb7c07a0d889eab763ad3d49a46125","src/k_smallest.rs":"603eb34314c01769ff7f6def2a24cf7a7b38507e6f3658b7aafc23a3b2e9b322","src/kmerge_impl.rs":"a347b0f6fa7715afd8a54d85ce139ed5b14c9e58a16c2b3648f5b288fdb5375f","src/lazy_buffer.rs":"834f6ef7fdf9f00c8a6329beb38eaefb706847ceeec309c221dce705c2c1e05b","src/lib.rs":"fadb0045279aafe8e8cccb45fadc383c7b358197b83c9c38fba87ada4cb2f84a","src/merge_join.rs":"1016113f6c983a9498bae5dc0570190437e1357b3333f6e19ea95c88599a1225","src/minmax.rs":"96d3897c28c8c63284d4729becc9ada6855e0953cac6e1bd35cf6f38c50b0ec0","src/multipeek_impl.rs":"35162bca4456bfa20a08e8d40e4d1cc6783dc662778789fdcded60371e975122","src/pad_tail.rs":"04be2ca73abb85815b06b5524c99d6feb2919180c486a4646f9cc6c87462f67b","src/peek_nth.rs":"6a0a51f2f373ce14d3d58595c46464878a14976bf00841a7396c03f9f9ab07ac","src/peeking_take_while.rs":"2b1b77c8882be32cfd76e973d303aa62f73370efd470c60764add0cdcca524d5","src/permutations.rs":"97831e7e26904c3cae68c97e74f7c6981ceb2fb2f2217282a0e5e54083a565fc","src/powerset.rs":"e0ee6b1316b4dd314c1e81502b90ae8113e1cda12168322520c5a65410e584b2","src/process_results_impl.rs":"9ed7fa46c8316238272ef47577387a386c1a109b50377dd3caf4291b6587cb73","src/put_back_n_impl.rs":"821e047fecd6ca0036290029f4febe7638a3abf1faa05e1e747a3bf9d80ff464","src/rciter_impl.rs":"5b156082ef2d25a94a4ad01d94cba2813c4b3e72e212515a8ad0fc8588f8045d","src/repeatn.rs":"bfc8f9145c9d8a3ea651f012b7d5a8d2fbbcbefdee76eafd098d02e7c54cda90","src/size_hint.rs":"021e57aad7df8f1e70ef588e9e9b8a1695aab183b1098f1848561f96c5dc9bcb","src/sources.rs":"61637f32c2cea2290ecfc1980c0b2d0f68463839ac09bd81006f8258ab8ecaae","src/tee.rs":"665832aa547389a420c3441470ff2494249f0ed2841be0c6a578367fe9dbd381","src/tuple_impl.rs":"00a9b61942425fb477b9691c3348646c0f9f534ff94f6321027f38c61ce2478c","src/unique_impl.rs":"3b89cdd668b74cc0a0eabb1522489e2305a0d2d8da25d6a1884e8626bbdb5959","src/unziptuple.rs":"84b50e5d29b9ddbf21a46a1cc2fd7877729c7f7da9bdc8ae1966dbaf2d2f6f60","src/with_position.rs":"c8a9b3476b3b90986b004a8877c19ff54b4c6800c5ac7ca1458d914036dacfe9","src/zip_eq_impl.rs":"4a41dc6dfe99359585d50ce648bdc85f15276c602048872b1d152e90841d8cad","src/zip_longest.rs":"f7cf5fffc3ca053ee80b410a05b27de1a475021f6de3181aea981010d7e8453f","src/ziptuple.rs":"7f9df12bf6556f382bbd4ad8cf17eb8b60c1c47fadbce016141133ba0f3384a1","tests/adaptors_no_collect.rs":"f459f36d54f5d475b2b2e83f5a1c98109c15062756ae822fa379486f3eeed666","tests/flatten_ok.rs":"b7894874132918b8229c7150b2637511d8e3e14197d8eeb9382d46b2a514efa2","tests/macros_hygiene.rs":"522afa0106e3f11a5149e9218f89c2329e405546d2ef0ea756d6a27e8a0e9ca3","tests/merge_join.rs":"b08c4ee6529d234c68d411a413b8781455d18a1eab17872d1828bb75a4fcf79b","tests/peeking_take_while.rs":"4b1c394e44a9ef9bc0de707ae080b45803db722f79834c20f15b826d7c3f1f2e","tests/quick.rs":"6fcc0649b9270f024b169b1f499dd4cc7fecb0c9aec0dfc155b264916cc626e7","tests/specializations.rs":"fdd16dc663330033fedcc478609b393d4aa369dc07dc8cda31a75219fb793087","tests/test_core.rs":"32576ba90aa8e5db985b6e6ffe30e3046bc6a11d392db8f6b4bdd2ba48d9b24d","tests/test_std.rs":"f28a78a1912c950e7c37be1e82867e70dc585d60afecdebc7a97965194eee8e6","tests/tuples.rs":"014e4da776174bfe923270e2a359cd9c95b372fce4b952b8138909d6e2c52762","tests/zip.rs":"99af365fe6054ef1c6089d3e604e34da8fea66e55861ae4be9e7336ec8de4b56"},"package":"b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"9f94a3c5bdd8dd758864440205c84d73005b8619cd20833449db54f1f484c6bf","Cargo.lock":"b0443f54560491073ca861d8ed664a07a8039872568a527b2add8f362dd9734b","Cargo.toml":"e64e6e088ab537ba843f25a111af102dd434fd58cea3d446dff314cf42ad33e2","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7576269ea71f767b99297934c0b2367532690f8c4badc695edf8e04ab6a1e545","README.md":"9de81a03c86ca4573d5d0a98eaa4d938bc6c538816f421d1b7499301efb5a454","benches/bench1.rs":"bb06f39db0544b1380cd4929139ccf521a9eecab7ca3f910b9499f965ec0a047","benches/combinations.rs":"51523ee1ca438a56f14711f0b04ee943895062d35859fbe23a2714d2fca3289d","benches/combinations_with_replacement.rs":"11f29160652a2d90ce7ca4b1c339c4457888ab6867e2456ce1c62e3adf9be737","benches/extra/mod.rs":"6ca290d72302a1945078621610b5788060b0de29639decebbdc557a80044aa97","benches/extra/zipslices.rs":"40e9f68a7c00f8429193fca463caef18851fa49b33355cc136bad3ccc840d655","benches/fold_specialization.rs":"5a517bbe29d366a15f6f751660e17ab1aa3e7b21552a1983048c662e34f0d69e","benches/powerset.rs":"6fd9d69a3483b37dc2411f99fb4efa6131577696f2dbdc8d1de9e4d7642fe3a3","benches/tree_fold1.rs":"539232e74f9aaea295a42069ac5af707811e90dc1c71c6e0a9064ffc731999de","benches/tuple_combinations.rs":"16366158743307a0289fc1df423a3cec45009807d410a9fe9922d5b6f8b7d002","benches/tuples.rs":"5a620783ae203e9ff9623d10d2c7fe9911d8b6c811cbad7613afa30e390c759d","examples/iris.data":"596ffd580471ca4d4880f8e439c7281f3b50d8249a5960353cb200b1490f63a0","examples/iris.rs":"1b465ed6a417180913104bc95a545fd9d1a3d67d121871ab737ad87e31b8be37","src/adaptors/coalesce.rs":"a0073325d40f297d29101538d18a267aef81889a999338dc09cb43a31cb4ec8b","src/adaptors/map.rs":"241971e856e468d71323071fb4a09867fbcedb83877320be132dc03516fe60e8","src/adaptors/mod.rs":"7f3bd7d011a348ce5e4bea486ef2e6346b64c7fe27540334d56d3f147f981d59","src/adaptors/multi_product.rs":"bb43e6dce68c815c21006d5b01c56e038d54b0c3bb8ee6bb8a4de11e2952c7ad","src/combinations.rs":"fb25babb459389093f886721016c72bf9f00e51d02735f638d871bb3a447ffd0","src/combinations_with_replacement.rs":"463011a574facbdd84278386b533a90e4dd517f0417e05adb82d182049db1f50","src/concat_impl.rs":"03b1ed61cbed242c286c3c4c5c848dbd57e02ab83fcef264f3a592b58107f324","src/cons_tuples_impl.rs":"c253d03b861831c01d62cacc57b49715ee62f6171e69f6886bb5a6ca0863bc3a","src/diff.rs":"a7800e9ce7a87b53ebe2338481335751fb43d44fa6a1ca719aceaaab40e5c8fe","src/duplicates_impl.rs":"f62fe4b642f501f785721ce5a505cf622a771e457210726dd0fb8b30be7ebbbc","src/either_or_both.rs":"c7ffe60772350c470fb42a5e4ff5087587985206733fe9814eeefa249983239a","src/exactly_one_err.rs":"aa50081f6a31b5109b30e3ed305e3ec2413c6908dedc8990ec5378a99cee2b39","src/extrema_set.rs":"2a25b0b86eed2fd5d05622d591a3085cab823973d450816c2c3b8cb76e9c187e","src/flatten_ok.rs":"fe209fd886ecd9cb98d99625aa0c7274af7e644eff4a10de15b4dec8bbbc934a","src/format.rs":"20fbbe35a98315ceb77ad910ff92319e163ae16452b0c24a8f1eccbc71c9e171","src/free.rs":"dfc57b7f56a08d4986a96b679018b41346576a7a34b668e008cc01109e728750","src/group_map.rs":"f7b02c964f63505d3e36280cfdc1755e05287714201efe983dacf702eee61434","src/groupbylazy.rs":"57ebf7d8a5a752045f94b76db8b80073f46964c28cc0919510fbdea102244918","src/grouping_map.rs":"cbc45ac563345c96f3ac50c78f73c83d870523436a7ab88c1c9a685d204461d3","src/impl_macros.rs":"4f829b458873bed556f1aff2ae4e88dbd576766e2b5bcc07ff3ac8756758e6f4","src/intersperse.rs":"b9717242495846a4a979c95d93d5681caccb7c07a0d889eab763ad3d49a46125","src/k_smallest.rs":"603eb34314c01769ff7f6def2a24cf7a7b38507e6f3658b7aafc23a3b2e9b322","src/kmerge_impl.rs":"a347b0f6fa7715afd8a54d85ce139ed5b14c9e58a16c2b3648f5b288fdb5375f","src/lazy_buffer.rs":"834f6ef7fdf9f00c8a6329beb38eaefb706847ceeec309c221dce705c2c1e05b","src/lib.rs":"703fa755955007c2ddf1c1abe6a20e9a762ba09746c4eeae905e6d417bf3bf31","src/merge_join.rs":"20574fbb0ca610a6ac0ad89fb7e856a629235a14f285954760386cd0de3dc687","src/minmax.rs":"96d3897c28c8c63284d4729becc9ada6855e0953cac6e1bd35cf6f38c50b0ec0","src/multipeek_impl.rs":"35162bca4456bfa20a08e8d40e4d1cc6783dc662778789fdcded60371e975122","src/pad_tail.rs":"04be2ca73abb85815b06b5524c99d6feb2919180c486a4646f9cc6c87462f67b","src/peek_nth.rs":"6a0a51f2f373ce14d3d58595c46464878a14976bf00841a7396c03f9f9ab07ac","src/peeking_take_while.rs":"2293eaba60142f427a8bd1fa6d347b21469cadaaef69a70f28daed3a4166c1b4","src/permutations.rs":"97831e7e26904c3cae68c97e74f7c6981ceb2fb2f2217282a0e5e54083a565fc","src/powerset.rs":"e0ee6b1316b4dd314c1e81502b90ae8113e1cda12168322520c5a65410e584b2","src/process_results_impl.rs":"fd51b2a4785c3b65145703dea4c088c822e5592de939cf228917c6275bee0778","src/put_back_n_impl.rs":"821e047fecd6ca0036290029f4febe7638a3abf1faa05e1e747a3bf9d80ff464","src/rciter_impl.rs":"5b156082ef2d25a94a4ad01d94cba2813c4b3e72e212515a8ad0fc8588f8045d","src/repeatn.rs":"bfc8f9145c9d8a3ea651f012b7d5a8d2fbbcbefdee76eafd098d02e7c54cda90","src/size_hint.rs":"021e57aad7df8f1e70ef588e9e9b8a1695aab183b1098f1848561f96c5dc9bcb","src/sources.rs":"61637f32c2cea2290ecfc1980c0b2d0f68463839ac09bd81006f8258ab8ecaae","src/take_while_inclusive.rs":"f567e91a7f25ed785c3132ff408e3f17b59dce98909041a8c40cd14c0f350f55","src/tee.rs":"665832aa547389a420c3441470ff2494249f0ed2841be0c6a578367fe9dbd381","src/tuple_impl.rs":"8d6c52850bf7f3b9d03fcbaed0e60e5a5becc2f8421ca4bc79e876659804a258","src/unique_impl.rs":"3b89cdd668b74cc0a0eabb1522489e2305a0d2d8da25d6a1884e8626bbdb5959","src/unziptuple.rs":"84b50e5d29b9ddbf21a46a1cc2fd7877729c7f7da9bdc8ae1966dbaf2d2f6f60","src/with_position.rs":"a3652e3e97de78c5c7eeb9a5306225b5ce517d6165b96663820b5f00fae1bff9","src/zip_eq_impl.rs":"4a41dc6dfe99359585d50ce648bdc85f15276c602048872b1d152e90841d8cad","src/zip_longest.rs":"f7cf5fffc3ca053ee80b410a05b27de1a475021f6de3181aea981010d7e8453f","src/ziptuple.rs":"7f9df12bf6556f382bbd4ad8cf17eb8b60c1c47fadbce016141133ba0f3384a1","tests/adaptors_no_collect.rs":"f459f36d54f5d475b2b2e83f5a1c98109c15062756ae822fa379486f3eeed666","tests/flatten_ok.rs":"b7894874132918b8229c7150b2637511d8e3e14197d8eeb9382d46b2a514efa2","tests/macros_hygiene.rs":"522afa0106e3f11a5149e9218f89c2329e405546d2ef0ea756d6a27e8a0e9ca3","tests/merge_join.rs":"b08c4ee6529d234c68d411a413b8781455d18a1eab17872d1828bb75a4fcf79b","tests/peeking_take_while.rs":"f834361c5520dda15eb9e9ebe87507c905462201412b21859d9f83dab91d0e0b","tests/quick.rs":"203619d7de9ae068a5c0c61c398f65f15a878b6ac759cc4575d19f0c90dfd9fa","tests/specializations.rs":"fdd16dc663330033fedcc478609b393d4aa369dc07dc8cda31a75219fb793087","tests/test_core.rs":"32576ba90aa8e5db985b6e6ffe30e3046bc6a11d392db8f6b4bdd2ba48d9b24d","tests/test_std.rs":"16a03cfe359a570685b48b80473d1947a89a49ec9ef744ea175252e2b95c0336","tests/tuples.rs":"014e4da776174bfe923270e2a359cd9c95b372fce4b952b8138909d6e2c52762","tests/zip.rs":"99af365fe6054ef1c6089d3e604e34da8fea66e55861ae4be9e7336ec8de4b56"},"package":"b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"} \ No newline at end of file
diff --git a/vendor/itertools/CHANGELOG.md b/vendor/itertools/CHANGELOG.md
index d2b40b5db..8d7404e75 100644
--- a/vendor/itertools/CHANGELOG.md
+++ b/vendor/itertools/CHANGELOG.md
@@ -1,5 +1,31 @@
# Changelog
+## 0.11.0
+
+### Breaking
+- Make `Itertools::merge_join_by` also accept functions returning bool (#704)
+- Implement `PeekingNext` transitively over mutable references (#643)
+- Change `with_position` to yield `(Position, Item)` instead of `Position<Item>` (#699)
+
+### Added
+- Add `Itertools::take_while_inclusive` (#616)
+- Implement `PeekingNext` for `PeekingTakeWhile` (#644)
+- Add `EitherOrBoth::{just_left, just_right, into_left, into_right, as_deref, as_deref_mut, left_or_insert, right_or_insert, left_or_insert_with, right_or_insert_with, insert_left, insert_right, insert_both}` (#629)
+- Implement `Clone` for `CircularTupleWindows` (#686)
+- Implement `Clone` for `Chunks` (#683)
+- Add `Itertools::process_results` (#680)
+
+### Changed
+- Use `Cell` instead of `RefCell` in `Format` and `FormatWith` (#608)
+- CI tweaks (#674, #675)
+- Document and test the difference between stable and unstable sorts (#653)
+- Fix documentation error on `Itertools::max_set_by_key` (#692)
+- Move MSRV metadata to `Cargo.toml` (#672)
+- Implement `equal` with `Iterator::eq` (#591)
+
+## 0.10.5
+ - Maintenance
+
## 0.10.4
- Add `EitherOrBoth::or` and `EitherOrBoth::or_else` (#593)
- Add `min_set`, `max_set` et al. (#613, #323)
@@ -7,6 +33,9 @@
- Documentation fixes (#612, #625, #632, #633, #634, #638)
- Code maintenance (#623, #624, #627, #630)
+## 0.10.3
+ - Maintenance
+
## 0.10.2
- Add `Itertools::multiunzip` (#362, #565)
- Add `intersperse` and `intersperse_with` free functions (#555)
diff --git a/vendor/itertools/Cargo.lock b/vendor/itertools/Cargo.lock
new file mode 100644
index 000000000..76936c9ee
--- /dev/null
+++ b/vendor/itertools/Cargo.lock
@@ -0,0 +1,681 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "anes"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
+
+[[package]]
+name = "atty"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+dependencies = [
+ "hermit-abi",
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bumpalo"
+version = "3.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1ad822118d20d2c234f427000d5acc36eabe1e29a348c89b63dd60b13f28e5d"
+
+[[package]]
+name = "cast"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "ciborium"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
+dependencies = [
+ "ciborium-io",
+ "ciborium-ll",
+ "serde",
+]
+
+[[package]]
+name = "ciborium-io"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
+
+[[package]]
+name = "ciborium-ll"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
+dependencies = [
+ "ciborium-io",
+ "half",
+]
+
+[[package]]
+name = "clap"
+version = "3.2.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86447ad904c7fb335a790c9d7fe3d0d971dc523b8ccd1561a520de9a85302750"
+dependencies = [
+ "bitflags",
+ "clap_lex",
+ "indexmap",
+ "textwrap",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
+dependencies = [
+ "os_str_bytes",
+]
+
+[[package]]
+name = "criterion"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
+dependencies = [
+ "anes",
+ "atty",
+ "cast",
+ "ciborium",
+ "clap",
+ "criterion-plot",
+ "itertools 0.10.4",
+ "lazy_static",
+ "num-traits",
+ "oorandom",
+ "plotters",
+ "rayon",
+ "regex",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "tinytemplate",
+ "walkdir",
+]
+
+[[package]]
+name = "criterion-plot"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
+dependencies = [
+ "cast",
+ "itertools 0.10.4",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521"
+dependencies = [
+ "cfg-if",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc"
+dependencies = [
+ "cfg-if",
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "045ebe27666471bb549370b4b0b3e51b07f56325befa4284db65fc89c02511b1"
+dependencies = [
+ "autocfg",
+ "cfg-if",
+ "crossbeam-utils",
+ "memoffset",
+ "once_cell",
+ "scopeguard",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+]
+
+[[package]]
+name = "either"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797"
+
+[[package]]
+name = "getrandom"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi",
+]
+
+[[package]]
+name = "half"
+version = "1.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
+
+[[package]]
+name = "hashbrown"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+
+[[package]]
+name = "hermit-abi"
+version = "0.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "indexmap"
+version = "1.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e"
+dependencies = [
+ "autocfg",
+ "hashbrown",
+]
+
+[[package]]
+name = "itertools"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8bf247779e67a9082a4790b45e71ac7cfd1321331a5c856a74a9faebdab78d0"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itertools"
+version = "0.11.0"
+dependencies = [
+ "criterion",
+ "either",
+ "paste",
+ "permutohedron",
+ "quickcheck",
+ "rand",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754"
+
+[[package]]
+name = "js-sys"
+version = "0.3.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+[[package]]
+name = "libc"
+version = "0.2.133"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0f80d65747a3e43d1596c7c5492d95d5edddaabd45a7fcdb02b95f644164966"
+
+[[package]]
+name = "log"
+version = "0.4.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "memoffset"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
+dependencies = [
+ "hermit-abi",
+ "libc",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f7254b99e31cad77da24b08ebf628882739a608578bb1bcdfc1f9c21260d7c0"
+
+[[package]]
+name = "oorandom"
+version = "11.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
+
+[[package]]
+name = "os_str_bytes"
+version = "6.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff"
+
+[[package]]
+name = "paste"
+version = "1.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1de2e551fb905ac83f73f7aedf2f0cb4a0da7e35efa24a202a936269f1f18e1"
+
+[[package]]
+name = "permutohedron"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b687ff7b5da449d39e418ad391e5e08da53ec334903ddbb921db208908fc372c"
+
+[[package]]
+name = "plotters"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
+dependencies = [
+ "num-traits",
+ "plotters-backend",
+ "plotters-svg",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "plotters-backend"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
+
+[[package]]
+name = "plotters-svg"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
+dependencies = [
+ "plotters-backend",
+]
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.43"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quickcheck"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a44883e74aa97ad63db83c4bf8ca490f02b2fc02f92575e720c8551e843c945f"
+dependencies = [
+ "rand",
+ "rand_core",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rand"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
+dependencies = [
+ "getrandom",
+ "libc",
+ "rand_chacha",
+ "rand_core",
+ "rand_hc",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "rand_hc"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
+dependencies = [
+ "rand_core",
+]
+
+[[package]]
+name = "rayon"
+version = "1.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d"
+dependencies = [
+ "autocfg",
+ "crossbeam-deque",
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f"
+dependencies = [
+ "crossbeam-channel",
+ "crossbeam-deque",
+ "crossbeam-utils",
+ "num_cpus",
+]
+
+[[package]]
+name = "regex"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
+dependencies = [
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.6.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
+
+[[package]]
+name = "ryu"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "scopeguard"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+
+[[package]]
+name = "serde"
+version = "1.0.144"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.144"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94ed3a816fb1d101812f83e789f888322c34e291f894f19590dc310963e87a00"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.85"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44"
+dependencies = [
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "syn"
+version = "1.0.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52205623b1b0f064a4e71182c3b18ae902267282930c6d5462c91b859668426e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "textwrap"
+version = "0.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "949517c0cf1bf4ee812e2e07e08ab448e3ae0d23472aee8a06c985f0c8815b16"
+
+[[package]]
+name = "tinytemplate"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
+dependencies = [
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd"
+
+[[package]]
+name = "walkdir"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
+dependencies = [
+ "same-file",
+ "winapi",
+ "winapi-util",
+]
+
+[[package]]
+name = "wasi"
+version = "0.9.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f"
+
+[[package]]
+name = "web-sys"
+version = "0.3.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
diff --git a/vendor/itertools/Cargo.toml b/vendor/itertools/Cargo.toml
index 40be7e48f..df3cbd8fd 100644
--- a/vendor/itertools/Cargo.toml
+++ b/vendor/itertools/Cargo.toml
@@ -3,30 +3,38 @@
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
-# to registry (e.g., crates.io) dependencies
+# to registry (e.g., crates.io) dependencies.
#
-# If you believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
[package]
edition = "2018"
+rust-version = "1.36.0"
name = "itertools"
-version = "0.10.5"
+version = "0.11.0"
authors = ["bluss"]
exclude = ["/bors.toml"]
description = "Extra iterator adaptors, iterator methods, free functions, and macros."
documentation = "https://docs.rs/itertools/"
readme = "README.md"
-keywords = ["iterator", "data-structure", "zip", "product", "group-by"]
-categories = ["algorithms", "rust-patterns"]
-license = "MIT/Apache-2.0"
+keywords = [
+ "iterator",
+ "data-structure",
+ "zip",
+ "product",
+ "group-by",
+]
+categories = [
+ "algorithms",
+ "rust-patterns",
+]
+license = "MIT OR Apache-2.0"
repository = "https://github.com/rust-itertools/itertools"
-[package.metadata.release]
-no-dev-version = true
+
[profile.bench]
-debug = true
+debug = 2
[lib]
test = false
@@ -63,11 +71,13 @@ harness = false
[[bench]]
name = "powerset"
harness = false
+
[dependencies.either]
version = "1.0"
default-features = false
+
[dev-dependencies.criterion]
-version = "=0"
+version = "0.4.0"
[dev-dependencies.paste]
version = "1.0.0"
@@ -77,7 +87,7 @@ version = "0.2"
[dev-dependencies.quickcheck]
version = "0.9"
-default-features = false
+default_features = false
[dev-dependencies.rand]
version = "0.7"
@@ -85,4 +95,7 @@ version = "0.7"
[features]
default = ["use_std"]
use_alloc = []
-use_std = ["use_alloc", "either/use_std"]
+use_std = [
+ "use_alloc",
+ "either/use_std",
+]
diff --git a/vendor/itertools/README.md b/vendor/itertools/README.md
index a911127f4..626d10d0d 100644
--- a/vendor/itertools/README.md
+++ b/vendor/itertools/README.md
@@ -11,7 +11,7 @@ How to use with Cargo:
```toml
[dependencies]
-itertools = "0.10.5"
+itertools = "0.11.0"
```
How to use in your crate:
diff --git a/vendor/itertools/src/either_or_both.rs b/vendor/itertools/src/either_or_both.rs
index ef3985f75..cf65fe788 100644
--- a/vendor/itertools/src/either_or_both.rs
+++ b/vendor/itertools/src/either_or_both.rs
@@ -1,3 +1,5 @@
+use core::ops::{Deref, DerefMut};
+
use crate::EitherOrBoth::*;
use either::Either;
@@ -14,7 +16,7 @@ pub enum EitherOrBoth<A, B> {
}
impl<A, B> EitherOrBoth<A, B> {
- /// If `Left`, or `Both`, return true, otherwise, return false.
+ /// If `Left`, or `Both`, return true. Otherwise, return false.
pub fn has_left(&self) -> bool {
self.as_ref().left().is_some()
}
@@ -24,7 +26,7 @@ impl<A, B> EitherOrBoth<A, B> {
self.as_ref().right().is_some()
}
- /// If Left, return true otherwise, return false.
+ /// If `Left`, return true. Otherwise, return false.
/// Exclusive version of [`has_left`](EitherOrBoth::has_left).
pub fn is_left(&self) -> bool {
match *self {
@@ -33,7 +35,7 @@ impl<A, B> EitherOrBoth<A, B> {
}
}
- /// If Right, return true otherwise, return false.
+ /// If `Right`, return true. Otherwise, return false.
/// Exclusive version of [`has_right`](EitherOrBoth::has_right).
pub fn is_right(&self) -> bool {
match *self {
@@ -42,13 +44,12 @@ impl<A, B> EitherOrBoth<A, B> {
}
}
- /// If Right, return true otherwise, return false.
- /// Equivalent to `self.as_ref().both().is_some()`.
+ /// If `Both`, return true. Otherwise, return false.
pub fn is_both(&self) -> bool {
self.as_ref().both().is_some()
}
- /// If `Left`, or `Both`, return `Some` with the left value, otherwise, return `None`.
+ /// If `Left`, or `Both`, return `Some` with the left value. Otherwise, return `None`.
pub fn left(self) -> Option<A> {
match self {
Left(left) | Both(left, _) => Some(left),
@@ -56,7 +57,7 @@ impl<A, B> EitherOrBoth<A, B> {
}
}
- /// If `Right`, or `Both`, return `Some` with the right value, otherwise, return `None`.
+ /// If `Right`, or `Both`, return `Some` with the right value. Otherwise, return `None`.
pub fn right(self) -> Option<B> {
match self {
Right(right) | Both(_, right) => Some(right),
@@ -64,7 +65,57 @@ impl<A, B> EitherOrBoth<A, B> {
}
}
- /// If Both, return `Some` tuple containing left and right.
+ /// If `Left`, return `Some` with the left value. If `Right` or `Both`, return `None`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// // On the `Left` variant.
+ /// # use itertools::{EitherOrBoth, EitherOrBoth::{Left, Right, Both}};
+ /// let x: EitherOrBoth<_, ()> = Left("bonjour");
+ /// assert_eq!(x.just_left(), Some("bonjour"));
+ ///
+ /// // On the `Right` variant.
+ /// let x: EitherOrBoth<(), _> = Right("hola");
+ /// assert_eq!(x.just_left(), None);
+ ///
+ /// // On the `Both` variant.
+ /// let x = Both("bonjour", "hola");
+ /// assert_eq!(x.just_left(), None);
+ /// ```
+ pub fn just_left(self) -> Option<A> {
+ match self {
+ Left(left) => Some(left),
+ _ => None,
+ }
+ }
+
+ /// If `Right`, return `Some` with the right value. If `Left` or `Both`, return `None`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// // On the `Left` variant.
+ /// # use itertools::{EitherOrBoth::{Left, Right, Both}, EitherOrBoth};
+ /// let x: EitherOrBoth<_, ()> = Left("auf wiedersehen");
+ /// assert_eq!(x.just_left(), Some("auf wiedersehen"));
+ ///
+ /// // On the `Right` variant.
+ /// let x: EitherOrBoth<(), _> = Right("adios");
+ /// assert_eq!(x.just_left(), None);
+ ///
+ /// // On the `Both` variant.
+ /// let x = Both("auf wiedersehen", "adios");
+ /// assert_eq!(x.just_left(), None);
+ /// ```
+ pub fn just_right(self) -> Option<B> {
+ match self {
+ Right(right) => Some(right),
+ _ => None,
+ }
+ }
+
+ /// If `Both`, return `Some` containing the left and right values. Otherwise, return `None`.
pub fn both(self) -> Option<(A, B)> {
match self {
Both(a, b) => Some((a, b)),
@@ -72,6 +123,28 @@ impl<A, B> EitherOrBoth<A, B> {
}
}
+ /// If `Left` or `Both`, return the left value. Otherwise, convert the right value and return it.
+ pub fn into_left(self) -> A
+ where
+ B: Into<A>,
+ {
+ match self {
+ Left(a) | Both(a, _) => a,
+ Right(b) => b.into(),
+ }
+ }
+
+ /// If `Right` or `Both`, return the right value. Otherwise, convert the left value and return it.
+ pub fn into_right(self) -> B
+ where
+ A: Into<B>,
+ {
+ match self {
+ Right(b) | Both(_, b) => b,
+ Left(a) => a.into(),
+ }
+ }
+
/// Converts from `&EitherOrBoth<A, B>` to `EitherOrBoth<&A, &B>`.
pub fn as_ref(&self) -> EitherOrBoth<&A, &B> {
match *self {
@@ -90,6 +163,32 @@ impl<A, B> EitherOrBoth<A, B> {
}
}
+ /// Converts from `&EitherOrBoth<A, B>` to `EitherOrBoth<&_, &_>` using the [`Deref`] trait.
+ pub fn as_deref(&self) -> EitherOrBoth<&A::Target, &B::Target>
+ where
+ A: Deref,
+ B: Deref,
+ {
+ match *self {
+ Left(ref left) => Left(left),
+ Right(ref right) => Right(right),
+ Both(ref left, ref right) => Both(left, right),
+ }
+ }
+
+ /// Converts from `&mut EitherOrBoth<A, B>` to `EitherOrBoth<&mut _, &mut _>` using the [`DerefMut`] trait.
+ pub fn as_deref_mut(&mut self) -> EitherOrBoth<&mut A::Target, &mut B::Target>
+ where
+ A: DerefMut,
+ B: DerefMut,
+ {
+ match *self {
+ Left(ref mut left) => Left(left),
+ Right(ref mut right) => Right(right),
+ Both(ref mut left, ref mut right) => Both(left, right),
+ }
+ }
+
/// Convert `EitherOrBoth<A, B>` to `EitherOrBoth<B, A>`.
pub fn flip(self) -> EitherOrBoth<B, A> {
match self {
@@ -227,10 +326,152 @@ impl<A, B> EitherOrBoth<A, B> {
Both(inner_l, inner_r) => (inner_l, inner_r),
}
}
+
+ /// Returns a mutable reference to the left value. If the left value is not present,
+ /// it is replaced with `val`.
+ pub fn left_or_insert(&mut self, val: A) -> &mut A {
+ self.left_or_insert_with(|| val)
+ }
+
+ /// Returns a mutable reference to the right value. If the right value is not present,
+ /// it is replaced with `val`.
+ pub fn right_or_insert(&mut self, val: B) -> &mut B {
+ self.right_or_insert_with(|| val)
+ }
+
+ /// If the left value is not present, replace it the value computed by the closure `f`.
+ /// Returns a mutable reference to the now-present left value.
+ pub fn left_or_insert_with<F>(&mut self, f: F) -> &mut A
+ where
+ F: FnOnce() -> A,
+ {
+ match self {
+ Left(left) | Both(left, _) => left,
+ Right(_) => self.insert_left(f()),
+ }
+ }
+
+ /// If the right value is not present, replace it the value computed by the closure `f`.
+ /// Returns a mutable reference to the now-present right value.
+ pub fn right_or_insert_with<F>(&mut self, f: F) -> &mut B
+ where
+ F: FnOnce() -> B,
+ {
+ match self {
+ Right(right) | Both(_, right) => right,
+ Left(_) => self.insert_right(f()),
+ }
+ }
+
+ /// Sets the `left` value of this instance, and returns a mutable reference to it.
+ /// Does not affect the `right` value.
+ ///
+ /// # Examples
+ /// ```
+ /// # use itertools::{EitherOrBoth, EitherOrBoth::{Left, Right, Both}};
+ ///
+ /// // Overwriting a pre-existing value.
+ /// let mut either: EitherOrBoth<_, ()> = Left(0_u32);
+ /// assert_eq!(*either.insert_left(69), 69);
+ ///
+ /// // Inserting a second value.
+ /// let mut either = Right("no");
+ /// assert_eq!(*either.insert_left("yes"), "yes");
+ /// assert_eq!(either, Both("yes", "no"));
+ /// ```
+ pub fn insert_left(&mut self, val: A) -> &mut A {
+ match self {
+ Left(left) | Both(left, _) => {
+ *left = val;
+ left
+ }
+ Right(right) => {
+ // This is like a map in place operation. We move out of the reference,
+ // change the value, and then move back into the reference.
+ unsafe {
+ // SAFETY: We know this pointer is valid for reading since we got it from a reference.
+ let right = std::ptr::read(right as *mut _);
+ // SAFETY: Again, we know the pointer is valid since we got it from a reference.
+ std::ptr::write(self as *mut _, Both(val, right));
+ }
+
+ if let Both(left, _) = self {
+ left
+ } else {
+ // SAFETY: The above pattern will always match, since we just
+ // set `self` equal to `Both`.
+ unsafe { std::hint::unreachable_unchecked() }
+ }
+ }
+ }
+ }
+
+ /// Sets the `right` value of this instance, and returns a mutable reference to it.
+ /// Does not affect the `left` value.
+ ///
+ /// # Examples
+ /// ```
+ /// # use itertools::{EitherOrBoth, EitherOrBoth::{Left, Both}};
+ /// // Overwriting a pre-existing value.
+ /// let mut either: EitherOrBoth<_, ()> = Left(0_u32);
+ /// assert_eq!(*either.insert_left(69), 69);
+ ///
+ /// // Inserting a second value.
+ /// let mut either = Left("what's");
+ /// assert_eq!(*either.insert_right(9 + 10), 21 - 2);
+ /// assert_eq!(either, Both("what's", 9+10));
+ /// ```
+ pub fn insert_right(&mut self, val: B) -> &mut B {
+ match self {
+ Right(right) | Both(_, right) => {
+ *right = val;
+ right
+ }
+ Left(left) => {
+ // This is like a map in place operation. We move out of the reference,
+ // change the value, and then move back into the reference.
+ unsafe {
+ // SAFETY: We know this pointer is valid for reading since we got it from a reference.
+ let left = std::ptr::read(left as *mut _);
+ // SAFETY: Again, we know the pointer is valid since we got it from a reference.
+ std::ptr::write(self as *mut _, Both(left, val));
+ }
+ if let Both(_, right) = self {
+ right
+ } else {
+ // SAFETY: The above pattern will always match, since we just
+ // set `self` equal to `Both`.
+ unsafe { std::hint::unreachable_unchecked() }
+ }
+ }
+ }
+ }
+
+ /// Set `self` to `Both(..)`, containing the specified left and right values,
+ /// and returns a mutable reference to those values.
+ pub fn insert_both(&mut self, left: A, right: B) -> (&mut A, &mut B) {
+ *self = Both(left, right);
+ if let Both(left, right) = self {
+ (left, right)
+ } else {
+ // SAFETY: The above pattern will always match, since we just
+ // set `self` equal to `Both`.
+ unsafe { std::hint::unreachable_unchecked() }
+ }
+ }
}
impl<T> EitherOrBoth<T, T> {
- /// Return either value of left, right, or the product of `f` applied where `Both` are present.
+ /// Return either value of left, right, or apply a function `f` to both values if both are present.
+ /// The input function has to return the same type as both Right and Left carry.
+ ///
+ /// # Examples
+ /// ```
+ /// # use itertools::EitherOrBoth;
+ /// assert_eq!(EitherOrBoth::Both(3, 7).reduce(u32::max), 7);
+ /// assert_eq!(EitherOrBoth::Left(3).reduce(u32::max), 3);
+ /// assert_eq!(EitherOrBoth::Right(7).reduce(u32::max), 7);
+ /// ```
pub fn reduce<F>(self, f: F) -> T
where
F: FnOnce(T, T) -> T,
diff --git a/vendor/itertools/src/format.rs b/vendor/itertools/src/format.rs
index d87cee950..c4cb65dcb 100644
--- a/vendor/itertools/src/format.rs
+++ b/vendor/itertools/src/format.rs
@@ -1,5 +1,5 @@
+use std::cell::Cell;
use std::fmt;
-use std::cell::RefCell;
/// Format all iterator elements lazily, separated by `sep`.
///
@@ -7,11 +7,10 @@ use std::cell::RefCell;
/// exhausted.
///
/// See [`.format_with()`](crate::Itertools::format_with) for more information.
-#[derive(Clone)]
pub struct FormatWith<'a, I, F> {
sep: &'a str,
/// FormatWith uses interior mutability because Display::fmt takes &self.
- inner: RefCell<Option<(I, F)>>,
+ inner: Cell<Option<(I, F)>>,
}
/// Format all iterator elements lazily, separated by `sep`.
@@ -21,38 +20,40 @@ pub struct FormatWith<'a, I, F> {
///
/// See [`.format()`](crate::Itertools::format)
/// for more information.
-#[derive(Clone)]
pub struct Format<'a, I> {
sep: &'a str,
/// Format uses interior mutability because Display::fmt takes &self.
- inner: RefCell<Option<I>>,
+ inner: Cell<Option<I>>,
}
pub fn new_format<I, F>(iter: I, separator: &str, f: F) -> FormatWith<'_, I, F>
- where I: Iterator,
- F: FnMut(I::Item, &mut dyn FnMut(&dyn fmt::Display) -> fmt::Result) -> fmt::Result
+where
+ I: Iterator,
+ F: FnMut(I::Item, &mut dyn FnMut(&dyn fmt::Display) -> fmt::Result) -> fmt::Result,
{
FormatWith {
sep: separator,
- inner: RefCell::new(Some((iter, f))),
+ inner: Cell::new(Some((iter, f))),
}
}
pub fn new_format_default<I>(iter: I, separator: &str) -> Format<'_, I>
- where I: Iterator,
+where
+ I: Iterator,
{
Format {
sep: separator,
- inner: RefCell::new(Some(iter)),
+ inner: Cell::new(Some(iter)),
}
}
impl<'a, I, F> fmt::Display for FormatWith<'a, I, F>
- where I: Iterator,
- F: FnMut(I::Item, &mut dyn FnMut(&dyn fmt::Display) -> fmt::Result) -> fmt::Result
+where
+ I: Iterator,
+ F: FnMut(I::Item, &mut dyn FnMut(&dyn fmt::Display) -> fmt::Result) -> fmt::Result,
{
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- let (mut iter, mut format) = match self.inner.borrow_mut().take() {
+ let (mut iter, mut format) = match self.inner.take() {
Some(t) => t,
None => panic!("FormatWith: was already formatted once"),
};
@@ -71,12 +72,15 @@ impl<'a, I, F> fmt::Display for FormatWith<'a, I, F>
}
impl<'a, I> Format<'a, I>
- where I: Iterator,
+where
+ I: Iterator,
{
- fn format<F>(&self, f: &mut fmt::Formatter, mut cb: F) -> fmt::Result
- where F: FnMut(&I::Item, &mut fmt::Formatter) -> fmt::Result,
- {
- let mut iter = match self.inner.borrow_mut().take() {
+ fn format(
+ &self,
+ f: &mut fmt::Formatter,
+ cb: fn(&I::Item, &mut fmt::Formatter) -> fmt::Result,
+ ) -> fmt::Result {
+ let mut iter = match self.inner.take() {
Some(t) => t,
None => panic!("Format: was already formatted once"),
};
@@ -109,5 +113,56 @@ macro_rules! impl_format {
}
}
-impl_format!{Display Debug
- UpperExp LowerExp UpperHex LowerHex Octal Binary Pointer}
+impl_format! {Display Debug UpperExp LowerExp UpperHex LowerHex Octal Binary Pointer}
+
+impl<'a, I, F> Clone for FormatWith<'a, I, F>
+where
+ (I, F): Clone,
+{
+ fn clone(&self) -> Self {
+ struct PutBackOnDrop<'r, 'a, I, F> {
+ into: &'r FormatWith<'a, I, F>,
+ inner: Option<(I, F)>,
+ }
+ // This ensures we preserve the state of the original `FormatWith` if `Clone` panics
+ impl<'r, 'a, I, F> Drop for PutBackOnDrop<'r, 'a, I, F> {
+ fn drop(&mut self) {
+ self.into.inner.set(self.inner.take())
+ }
+ }
+ let pbod = PutBackOnDrop {
+ inner: self.inner.take(),
+ into: self,
+ };
+ Self {
+ inner: Cell::new(pbod.inner.clone()),
+ sep: self.sep,
+ }
+ }
+}
+
+impl<'a, I> Clone for Format<'a, I>
+where
+ I: Clone,
+{
+ fn clone(&self) -> Self {
+ struct PutBackOnDrop<'r, 'a, I> {
+ into: &'r Format<'a, I>,
+ inner: Option<I>,
+ }
+ // This ensures we preserve the state of the original `FormatWith` if `Clone` panics
+ impl<'r, 'a, I> Drop for PutBackOnDrop<'r, 'a, I> {
+ fn drop(&mut self) {
+ self.into.inner.set(self.inner.take())
+ }
+ }
+ let pbod = PutBackOnDrop {
+ inner: self.inner.take(),
+ into: self,
+ };
+ Self {
+ inner: Cell::new(pbod.inner.clone()),
+ sep: self.sep,
+ }
+ }
+}
diff --git a/vendor/itertools/src/groupbylazy.rs b/vendor/itertools/src/groupbylazy.rs
index a5a321df4..80c6f09f3 100644
--- a/vendor/itertools/src/groupbylazy.rs
+++ b/vendor/itertools/src/groupbylazy.rs
@@ -19,7 +19,7 @@ impl<A, K, F: ?Sized> KeyFunction<A> for F
/// `ChunkIndex` acts like the grouping key function for `IntoChunks`
-#[derive(Debug)]
+#[derive(Debug, Clone)]
struct ChunkIndex {
size: usize,
index: usize,
@@ -50,7 +50,7 @@ impl<A> KeyFunction<A> for ChunkIndex {
}
}
-
+#[derive(Clone)]
struct GroupInner<K, I, F>
where I: Iterator
{
@@ -471,6 +471,13 @@ pub struct IntoChunks<I>
index: Cell<usize>,
}
+impl<I> Clone for IntoChunks<I>
+ where I: Clone + Iterator,
+ I::Item: Clone,
+{
+ clone_fields!(inner, index);
+}
+
impl<I> IntoChunks<I>
where I: Iterator,
@@ -507,6 +514,7 @@ impl<'a, I> IntoIterator for &'a IntoChunks<I>
///
/// See [`.chunks()`](crate::Itertools::chunks) for more information.
#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+#[derive(Clone)]
pub struct Chunks<'a, I: 'a>
where I: Iterator,
I::Item: 'a,
diff --git a/vendor/itertools/src/lib.rs b/vendor/itertools/src/lib.rs
index f91968870..c23a65db5 100644
--- a/vendor/itertools/src/lib.rs
+++ b/vendor/itertools/src/lib.rs
@@ -146,6 +146,7 @@ pub mod structs {
pub use crate::repeatn::RepeatN;
#[allow(deprecated)]
pub use crate::sources::{RepeatCall, Unfold, Iterate};
+ pub use crate::take_while_inclusive::TakeWhileInclusive;
#[cfg(feature = "use_alloc")]
pub use crate::tee::Tee;
pub use crate::tuple_impl::{TupleBuffer, TupleWindows, CircularTupleWindows, Tuples};
@@ -233,6 +234,7 @@ mod rciter_impl;
mod repeatn;
mod size_hint;
mod sources;
+mod take_while_inclusive;
#[cfg(feature = "use_alloc")]
mod tee;
mod tuple_impl;
@@ -904,7 +906,7 @@ pub trait Itertools : Iterator {
/// Return an iterator adaptor that flattens every `Result::Ok` value into
/// a series of `Result::Ok` values. `Result::Err` values are unchanged.
- ///
+ ///
/// This is useful when you have some common error type for your crate and
/// need to propagate it upwards, but the `Result::Ok` case needs to be flattened.
///
@@ -914,7 +916,7 @@ pub trait Itertools : Iterator {
/// let input = vec![Ok(0..2), Err(false), Ok(2..4)];
/// let it = input.iter().cloned().flatten_ok();
/// itertools::assert_equal(it.clone(), vec![Ok(0), Ok(1), Err(false), Ok(2), Ok(3)]);
- ///
+ ///
/// // This can also be used to propagate errors when collecting.
/// let output_result: Result<Vec<i32>, bool> = it.collect();
/// assert_eq!(output_result, Err(false));
@@ -926,6 +928,43 @@ pub trait Itertools : Iterator {
flatten_ok::flatten_ok(self)
}
+ /// “Lift†a function of the values of the current iterator so as to process
+ /// an iterator of `Result` values instead.
+ ///
+ /// `processor` is a closure that receives an adapted version of the iterator
+ /// as the only argument — the adapted iterator produces elements of type `T`,
+ /// as long as the original iterator produces `Ok` values.
+ ///
+ /// If the original iterable produces an error at any point, the adapted
+ /// iterator ends and it will return the error iself.
+ ///
+ /// Otherwise, the return value from the closure is returned wrapped
+ /// inside `Ok`.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// type Item = Result<i32, &'static str>;
+ ///
+ /// let first_values: Vec<Item> = vec![Ok(1), Ok(0), Ok(3)];
+ /// let second_values: Vec<Item> = vec![Ok(2), Ok(1), Err("overflow")];
+ ///
+ /// // “Lift†the iterator .max() method to work on the Ok-values.
+ /// let first_max = first_values.into_iter().process_results(|iter| iter.max().unwrap_or(0));
+ /// let second_max = second_values.into_iter().process_results(|iter| iter.max().unwrap_or(0));
+ ///
+ /// assert_eq!(first_max, Ok(3));
+ /// assert!(second_max.is_err());
+ /// ```
+ fn process_results<F, T, E, R>(self, processor: F) -> Result<R, E>
+ where Self: Iterator<Item = Result<T, E>> + Sized,
+ F: FnOnce(ProcessResults<Self, E>) -> R
+ {
+ process_results(self, processor)
+ }
+
/// Return an iterator adaptor that merges the two base iterators in
/// ascending order. If both base iterators are sorted (ascending), the
/// result is sorted.
@@ -935,8 +974,8 @@ pub trait Itertools : Iterator {
/// ```
/// use itertools::Itertools;
///
- /// let a = (0..11).step(3);
- /// let b = (0..11).step(5);
+ /// let a = (0..11).step_by(3);
+ /// let b = (0..11).step_by(5);
/// let it = a.merge(b);
/// itertools::assert_equal(it, vec![0, 0, 3, 5, 6, 9, 10]);
/// ```
@@ -975,7 +1014,10 @@ pub trait Itertools : Iterator {
/// Create an iterator that merges items from both this and the specified
/// iterator in ascending order.
///
- /// It chooses whether to pair elements based on the `Ordering` returned by the
+ /// The function can either return an `Ordering` variant or a boolean.
+ ///
+ /// If `cmp_fn` returns `Ordering`,
+ /// it chooses whether to pair elements based on the `Ordering` returned by the
/// specified compare function. At any point, inspecting the tip of the
/// iterators `I` and `J` as items `i` of type `I::Item` and `j` of type
/// `J::Item` respectively, the resulting iterator will:
@@ -991,18 +1033,46 @@ pub trait Itertools : Iterator {
/// use itertools::Itertools;
/// use itertools::EitherOrBoth::{Left, Right, Both};
///
- /// let multiples_of_2 = (0..10).step(2);
- /// let multiples_of_3 = (0..10).step(3);
+ /// let a = vec![0, 2, 4, 6, 1].into_iter();
+ /// let b = (0..10).step_by(3);
///
/// itertools::assert_equal(
- /// multiples_of_2.merge_join_by(multiples_of_3, |i, j| i.cmp(j)),
- /// vec![Both(0, 0), Left(2), Right(3), Left(4), Both(6, 6), Left(8), Right(9)]
+ /// a.merge_join_by(b, |i, j| i.cmp(j)),
+ /// vec![Both(0, 0), Left(2), Right(3), Left(4), Both(6, 6), Left(1), Right(9)]
+ /// );
+ /// ```
+ ///
+ /// If `cmp_fn` returns `bool`,
+ /// it chooses whether to pair elements based on the boolean returned by the
+ /// specified function. At any point, inspecting the tip of the
+ /// iterators `I` and `J` as items `i` of type `I::Item` and `j` of type
+ /// `J::Item` respectively, the resulting iterator will:
+ ///
+ /// - Emit `Either::Left(i)` when `true`,
+ /// and remove `i` from its source iterator
+ /// - Emit `Either::Right(j)` when `false`,
+ /// and remove `j` from its source iterator
+ ///
+ /// It is similar to the `Ordering` case if the first argument is considered
+ /// "less" than the second argument.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ /// use itertools::Either::{Left, Right};
+ ///
+ /// let a = vec![0, 2, 4, 6, 1].into_iter();
+ /// let b = (0..10).step_by(3);
+ ///
+ /// itertools::assert_equal(
+ /// a.merge_join_by(b, |i, j| i <= j),
+ /// vec![Left(0), Right(0), Left(2), Right(3), Left(4), Left(6), Left(1), Right(6), Right(9)]
/// );
/// ```
#[inline]
- fn merge_join_by<J, F>(self, other: J, cmp_fn: F) -> MergeJoinBy<Self, J::IntoIter, F>
+ fn merge_join_by<J, F, T>(self, other: J, cmp_fn: F) -> MergeJoinBy<Self, J::IntoIter, F>
where J: IntoIterator,
- F: FnMut(&Self::Item, &J::Item) -> std::cmp::Ordering,
+ F: FnMut(&Self::Item, &J::Item) -> T,
+ T: merge_join::OrderingOrBool<Self::Item, J::Item>,
Self: Sized
{
merge_join_by(self, other, cmp_fn)
@@ -1018,9 +1088,9 @@ pub trait Itertools : Iterator {
/// ```
/// use itertools::Itertools;
///
- /// let a = (0..6).step(3);
- /// let b = (1..6).step(3);
- /// let c = (2..6).step(3);
+ /// let a = (0..6).step_by(3);
+ /// let b = (1..6).step_by(3);
+ /// let c = (2..6).step_by(3);
/// let it = vec![a, b, c].into_iter().kmerge();
/// itertools::assert_equal(it, vec![0, 1, 2, 3, 4, 5]);
/// ```
@@ -1389,6 +1459,74 @@ pub trait Itertools : Iterator {
adaptors::take_while_ref(self, accept)
}
+ /// Returns an iterator adaptor that consumes elements while the given
+ /// predicate is `true`, *including* the element for which the predicate
+ /// first returned `false`.
+ ///
+ /// The [`.take_while()`][std::iter::Iterator::take_while] adaptor is useful
+ /// when you want items satisfying a predicate, but to know when to stop
+ /// taking elements, we have to consume that first element that doesn't
+ /// satisfy the predicate. This adaptor includes that element where
+ /// [`.take_while()`][std::iter::Iterator::take_while] would drop it.
+ ///
+ /// The [`.take_while_ref()`][crate::Itertools::take_while_ref] adaptor
+ /// serves a similar purpose, but this adaptor doesn't require [`Clone`]ing
+ /// the underlying elements.
+ ///
+ /// ```rust
+ /// # use itertools::Itertools;
+ /// let items = vec![1, 2, 3, 4, 5];
+ /// let filtered: Vec<_> = items
+ /// .into_iter()
+ /// .take_while_inclusive(|&n| n % 3 != 0)
+ /// .collect();
+ ///
+ /// assert_eq!(filtered, vec![1, 2, 3]);
+ /// ```
+ ///
+ /// ```rust
+ /// # use itertools::Itertools;
+ /// let items = vec![1, 2, 3, 4, 5];
+ ///
+ /// let take_while_inclusive_result: Vec<_> = items
+ /// .iter()
+ /// .copied()
+ /// .take_while_inclusive(|&n| n % 3 != 0)
+ /// .collect();
+ /// let take_while_result: Vec<_> = items
+ /// .into_iter()
+ /// .take_while(|&n| n % 3 != 0)
+ /// .collect();
+ ///
+ /// assert_eq!(take_while_inclusive_result, vec![1, 2, 3]);
+ /// assert_eq!(take_while_result, vec![1, 2]);
+ /// // both iterators have the same items remaining at this point---the 3
+ /// // is lost from the `take_while` vec
+ /// ```
+ ///
+ /// ```rust
+ /// # use itertools::Itertools;
+ /// #[derive(Debug, PartialEq)]
+ /// struct NoCloneImpl(i32);
+ ///
+ /// let non_clonable_items: Vec<_> = vec![1, 2, 3, 4, 5]
+ /// .into_iter()
+ /// .map(NoCloneImpl)
+ /// .collect();
+ /// let filtered: Vec<_> = non_clonable_items
+ /// .into_iter()
+ /// .take_while_inclusive(|n| n.0 % 3 != 0)
+ /// .collect();
+ /// let expected: Vec<_> = vec![1, 2, 3].into_iter().map(NoCloneImpl).collect();
+ /// assert_eq!(filtered, expected);
+ fn take_while_inclusive<F>(&mut self, accept: F) -> TakeWhileInclusive<Self, F>
+ where
+ Self: Sized,
+ F: FnMut(&Self::Item) -> bool,
+ {
+ take_while_inclusive::TakeWhileInclusive::new(self, accept)
+ }
+
/// Return an iterator adaptor that filters `Option<A>` iterator elements
/// and produces `A`. Stops on the first `None` encountered.
///
@@ -1620,24 +1758,24 @@ pub trait Itertools : Iterator {
pad_tail::pad_using(self, min, f)
}
- /// Return an iterator adaptor that wraps each element in a `Position` to
+ /// Return an iterator adaptor that combines each element with a `Position` to
/// ease special-case handling of the first or last elements.
///
/// Iterator element type is
- /// [`Position<Self::Item>`](Position)
+ /// [`(Position, Self::Item)`](Position)
///
/// ```
/// use itertools::{Itertools, Position};
///
/// let it = (0..4).with_position();
/// itertools::assert_equal(it,
- /// vec![Position::First(0),
- /// Position::Middle(1),
- /// Position::Middle(2),
- /// Position::Last(3)]);
+ /// vec![(Position::First, 0),
+ /// (Position::Middle, 1),
+ /// (Position::Middle, 2),
+ /// (Position::Last, 3)]);
///
/// let it = (0..1).with_position();
- /// itertools::assert_equal(it, vec![Position::Only(0)]);
+ /// itertools::assert_equal(it, vec![(Position::Only, 0)]);
/// ```
fn with_position(self) -> WithPosition<Self>
where Self: Sized,
@@ -1810,14 +1948,14 @@ pub trait Itertools : Iterator {
///
/// #[derive(PartialEq, Debug)]
/// enum Enum { A, B, C, D, E, }
- ///
+ ///
/// let mut iter = vec![Enum::A, Enum::B, Enum::C, Enum::D].into_iter();
- ///
+ ///
/// // search `iter` for `B`
/// assert_eq!(iter.contains(&Enum::B), true);
/// // `B` was found, so the iterator now rests at the item after `B` (i.e, `C`).
/// assert_eq!(iter.next(), Some(Enum::C));
- ///
+ ///
/// // search `iter` for `E`
/// assert_eq!(iter.contains(&Enum::E), false);
/// // `E` wasn't found, so `iter` is now exhausted
@@ -1858,6 +1996,37 @@ pub trait Itertools : Iterator {
}
}
+ /// If there are elements and they are all equal, return a single copy of that element.
+ /// If there are no elements, return an Error containing None.
+ /// If there are elements and they are not all equal, return a tuple containing the first
+ /// two non-equal elements found.
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let data = vec![1, 1, 1, 2, 2, 3, 3, 3, 4, 5, 5];
+ /// assert_eq!(data.iter().all_equal_value(), Err(Some((&1, &2))));
+ /// assert_eq!(data[0..3].iter().all_equal_value(), Ok(&1));
+ /// assert_eq!(data[3..5].iter().all_equal_value(), Ok(&2));
+ /// assert_eq!(data[5..8].iter().all_equal_value(), Ok(&3));
+ ///
+ /// let data : Option<usize> = None;
+ /// assert_eq!(data.into_iter().all_equal_value(), Err(None));
+ /// ```
+ fn all_equal_value(&mut self) -> Result<Self::Item, Option<(Self::Item, Self::Item)>>
+ where
+ Self: Sized,
+ Self::Item: PartialEq
+ {
+ let first = self.next().ok_or(None)?;
+ let other = self.find(|x| x != &first);
+ if let Some(other) = other {
+ Err(Some((first, other)))
+ } else {
+ Ok(first)
+ }
+ }
+
/// Check whether all elements are unique (non equal).
///
/// Empty iterators are considered to have unique elements:
@@ -2481,6 +2650,8 @@ pub trait Itertools : Iterator {
/// **Note:** This consumes the entire iterator, uses the
/// [`slice::sort_unstable`] method and returns the result as a new
/// iterator that owns its elements.
+ ///
+ /// This sort is unstable (i.e., may reorder equal elements).
///
/// The sorted iterator, if directly collected to a `Vec`, is converted
/// without any extra copying or allocation cost.
@@ -2510,6 +2681,8 @@ pub trait Itertools : Iterator {
/// **Note:** This consumes the entire iterator, uses the
/// [`slice::sort_unstable_by`] method and returns the result as a new
/// iterator that owns its elements.
+ ///
+ /// This sort is unstable (i.e., may reorder equal elements).
///
/// The sorted iterator, if directly collected to a `Vec`, is converted
/// without any extra copying or allocation cost.
@@ -2543,6 +2716,8 @@ pub trait Itertools : Iterator {
/// **Note:** This consumes the entire iterator, uses the
/// [`slice::sort_unstable_by_key`] method and returns the result as a new
/// iterator that owns its elements.
+ ///
+ /// This sort is unstable (i.e., may reorder equal elements).
///
/// The sorted iterator, if directly collected to a `Vec`, is converted
/// without any extra copying or allocation cost.
@@ -2577,6 +2752,8 @@ pub trait Itertools : Iterator {
/// **Note:** This consumes the entire iterator, uses the
/// [`slice::sort`] method and returns the result as a new
/// iterator that owns its elements.
+ ///
+ /// This sort is stable (i.e., does not reorder equal elements).
///
/// The sorted iterator, if directly collected to a `Vec`, is converted
/// without any extra copying or allocation cost.
@@ -2606,6 +2783,8 @@ pub trait Itertools : Iterator {
/// **Note:** This consumes the entire iterator, uses the
/// [`slice::sort_by`] method and returns the result as a new
/// iterator that owns its elements.
+ ///
+ /// This sort is stable (i.e., does not reorder equal elements).
///
/// The sorted iterator, if directly collected to a `Vec`, is converted
/// without any extra copying or allocation cost.
@@ -2614,7 +2793,7 @@ pub trait Itertools : Iterator {
/// use itertools::Itertools;
///
/// // sort people in descending order by age
- /// let people = vec![("Jane", 20), ("John", 18), ("Jill", 30), ("Jack", 27)];
+ /// let people = vec![("Jane", 20), ("John", 18), ("Jill", 30), ("Jack", 30)];
///
/// let oldest_people_first = people
/// .into_iter()
@@ -2639,6 +2818,8 @@ pub trait Itertools : Iterator {
/// **Note:** This consumes the entire iterator, uses the
/// [`slice::sort_by_key`] method and returns the result as a new
/// iterator that owns its elements.
+ ///
+ /// This sort is stable (i.e., does not reorder equal elements).
///
/// The sorted iterator, if directly collected to a `Vec`, is converted
/// without any extra copying or allocation cost.
@@ -2647,7 +2828,7 @@ pub trait Itertools : Iterator {
/// use itertools::Itertools;
///
/// // sort people in descending order by age
- /// let people = vec![("Jane", 20), ("John", 18), ("Jill", 30), ("Jack", 27)];
+ /// let people = vec![("Jane", 20), ("John", 18), ("Jill", 30), ("Jack", 30)];
///
/// let oldest_people_first = people
/// .into_iter()
@@ -2674,6 +2855,8 @@ pub trait Itertools : Iterator {
/// **Note:** This consumes the entire iterator, uses the
/// [`slice::sort_by_cached_key`] method and returns the result as a new
/// iterator that owns its elements.
+ ///
+ /// This sort is stable (i.e., does not reorder equal elements).
///
/// The sorted iterator, if directly collected to a `Vec`, is converted
/// without any extra copying or allocation cost.
@@ -2682,7 +2865,7 @@ pub trait Itertools : Iterator {
/// use itertools::Itertools;
///
/// // sort people in descending order by age
- /// let people = vec![("Jane", 20), ("John", 18), ("Jill", 30), ("Jack", 27)];
+ /// let people = vec![("Jane", 20), ("John", 18), ("Jill", 30), ("Jack", 30)];
///
/// let oldest_people_first = people
/// .into_iter()
@@ -2867,13 +3050,13 @@ pub trait Itertools : Iterator {
group_map::into_group_map_by(self, f)
}
- /// Constructs a `GroupingMap` to be used later with one of the efficient
+ /// Constructs a `GroupingMap` to be used later with one of the efficient
/// group-and-fold operations it allows to perform.
- ///
+ ///
/// The input iterator must yield item in the form of `(K, V)` where the
/// value of type `K` will be used as key to identify the groups and the
/// value of type `V` as value for the folding operation.
- ///
+ ///
/// See [`GroupingMap`] for more informations
/// on what operations are available.
#[cfg(feature = "use_std")]
@@ -2884,12 +3067,12 @@ pub trait Itertools : Iterator {
grouping_map::new(self)
}
- /// Constructs a `GroupingMap` to be used later with one of the efficient
+ /// Constructs a `GroupingMap` to be used later with one of the efficient
/// group-and-fold operations it allows to perform.
- ///
+ ///
/// The values from this iterator will be used as values for the folding operation
/// while the keys will be obtained from the values by calling `key_mapper`.
- ///
+ ///
/// See [`GroupingMap`] for more informations
/// on what operations are available.
#[cfg(feature = "use_std")]
@@ -3059,7 +3242,7 @@ pub trait Itertools : Iterator {
)
}
- /// Return all minimum elements of an iterator, as determined by
+ /// Return all maximum elements of an iterator, as determined by
/// the specified function.
///
/// # Examples
@@ -3600,7 +3783,7 @@ pub trait Itertools : Iterator {
/// first_name: &'static str,
/// last_name: &'static str,
/// }
- ///
+ ///
/// let characters =
/// vec![
/// Character { first_name: "Amy", last_name: "Pond" },
@@ -3611,12 +3794,12 @@ pub trait Itertools : Iterator {
/// Character { first_name: "James", last_name: "Norington" },
/// Character { first_name: "James", last_name: "Kirk" },
/// ];
- ///
- /// let first_name_frequency =
+ ///
+ /// let first_name_frequency =
/// characters
/// .into_iter()
/// .counts_by(|c| c.first_name);
- ///
+ ///
/// assert_eq!(first_name_frequency["Amy"], 3);
/// assert_eq!(first_name_frequency["James"], 4);
/// assert_eq!(first_name_frequency.contains_key("Asha"), false);
@@ -3637,7 +3820,7 @@ pub trait Itertools : Iterator {
/// column.
///
/// This function is, in some sense, the opposite of [`multizip`].
- ///
+ ///
/// ```
/// use itertools::Itertools;
///
diff --git a/vendor/itertools/src/merge_join.rs b/vendor/itertools/src/merge_join.rs
index f2fbdea2c..84f7d0333 100644
--- a/vendor/itertools/src/merge_join.rs
+++ b/vendor/itertools/src/merge_join.rs
@@ -2,19 +2,23 @@ use std::cmp::Ordering;
use std::iter::Fuse;
use std::fmt;
+use either::Either;
+
use super::adaptors::{PutBack, put_back};
use crate::either_or_both::EitherOrBoth;
+use crate::size_hint::{self, SizeHint};
#[cfg(doc)]
use crate::Itertools;
/// Return an iterator adaptor that merge-joins items from the two base iterators in ascending order.
///
/// [`IntoIterator`] enabled version of [`Itertools::merge_join_by`].
-pub fn merge_join_by<I, J, F>(left: I, right: J, cmp_fn: F)
+pub fn merge_join_by<I, J, F, T>(left: I, right: J, cmp_fn: F)
-> MergeJoinBy<I::IntoIter, J::IntoIter, F>
where I: IntoIterator,
J: IntoIterator,
- F: FnMut(&I::Item, &J::Item) -> Ordering
+ F: FnMut(&I::Item, &J::Item) -> T,
+ T: OrderingOrBool<I::Item, J::Item>,
{
MergeJoinBy {
left: put_back(left.into_iter().fuse()),
@@ -30,7 +34,66 @@ pub fn merge_join_by<I, J, F>(left: I, right: J, cmp_fn: F)
pub struct MergeJoinBy<I: Iterator, J: Iterator, F> {
left: PutBack<Fuse<I>>,
right: PutBack<Fuse<J>>,
- cmp_fn: F
+ cmp_fn: F,
+}
+
+pub trait OrderingOrBool<L, R> {
+ type MergeResult;
+ fn left(left: L) -> Self::MergeResult;
+ fn right(right: R) -> Self::MergeResult;
+ // "merge" never returns (Some(...), Some(...), ...) so Option<Either<I::Item, J::Item>>
+ // is appealing but it is always followed by two put_backs, so we think the compiler is
+ // smart enough to optimize it. Or we could move put_backs into "merge".
+ fn merge(self, left: L, right: R) -> (Option<L>, Option<R>, Self::MergeResult);
+ fn size_hint(left: SizeHint, right: SizeHint) -> SizeHint;
+}
+
+impl<L, R> OrderingOrBool<L, R> for Ordering {
+ type MergeResult = EitherOrBoth<L, R>;
+ fn left(left: L) -> Self::MergeResult {
+ EitherOrBoth::Left(left)
+ }
+ fn right(right: R) -> Self::MergeResult {
+ EitherOrBoth::Right(right)
+ }
+ fn merge(self, left: L, right: R) -> (Option<L>, Option<R>, Self::MergeResult) {
+ match self {
+ Ordering::Equal => (None, None, EitherOrBoth::Both(left, right)),
+ Ordering::Less => (None, Some(right), EitherOrBoth::Left(left)),
+ Ordering::Greater => (Some(left), None, EitherOrBoth::Right(right)),
+ }
+ }
+ fn size_hint(left: SizeHint, right: SizeHint) -> SizeHint {
+ let (a_lower, a_upper) = left;
+ let (b_lower, b_upper) = right;
+ let lower = ::std::cmp::max(a_lower, b_lower);
+ let upper = match (a_upper, b_upper) {
+ (Some(x), Some(y)) => x.checked_add(y),
+ _ => None,
+ };
+ (lower, upper)
+ }
+}
+
+impl<L, R> OrderingOrBool<L, R> for bool {
+ type MergeResult = Either<L, R>;
+ fn left(left: L) -> Self::MergeResult {
+ Either::Left(left)
+ }
+ fn right(right: R) -> Self::MergeResult {
+ Either::Right(right)
+ }
+ fn merge(self, left: L, right: R) -> (Option<L>, Option<R>, Self::MergeResult) {
+ if self {
+ (None, Some(right), Either::Left(left))
+ } else {
+ (Some(left), None, Either::Right(right))
+ }
+ }
+ fn size_hint(left: SizeHint, right: SizeHint) -> SizeHint {
+ // Not ExactSizeIterator because size may be larger than usize
+ size_hint::add(left, right)
+ }
}
impl<I, J, F> Clone for MergeJoinBy<I, J, F>
@@ -52,49 +115,34 @@ impl<I, J, F> fmt::Debug for MergeJoinBy<I, J, F>
debug_fmt_fields!(MergeJoinBy, left, right);
}
-impl<I, J, F> Iterator for MergeJoinBy<I, J, F>
+impl<I, J, F, T> Iterator for MergeJoinBy<I, J, F>
where I: Iterator,
J: Iterator,
- F: FnMut(&I::Item, &J::Item) -> Ordering
+ F: FnMut(&I::Item, &J::Item) -> T,
+ T: OrderingOrBool<I::Item, J::Item>,
{
- type Item = EitherOrBoth<I::Item, J::Item>;
+ type Item = T::MergeResult;
fn next(&mut self) -> Option<Self::Item> {
match (self.left.next(), self.right.next()) {
(None, None) => None,
- (Some(left), None) =>
- Some(EitherOrBoth::Left(left)),
- (None, Some(right)) =>
- Some(EitherOrBoth::Right(right)),
+ (Some(left), None) => Some(T::left(left)),
+ (None, Some(right)) => Some(T::right(right)),
(Some(left), Some(right)) => {
- match (self.cmp_fn)(&left, &right) {
- Ordering::Equal =>
- Some(EitherOrBoth::Both(left, right)),
- Ordering::Less => {
- self.right.put_back(right);
- Some(EitherOrBoth::Left(left))
- },
- Ordering::Greater => {
- self.left.put_back(left);
- Some(EitherOrBoth::Right(right))
- }
+ let (left, right, next) = (self.cmp_fn)(&left, &right).merge(left, right);
+ if let Some(left) = left {
+ self.left.put_back(left);
+ }
+ if let Some(right) = right {
+ self.right.put_back(right);
}
+ Some(next)
}
}
}
- fn size_hint(&self) -> (usize, Option<usize>) {
- let (a_lower, a_upper) = self.left.size_hint();
- let (b_lower, b_upper) = self.right.size_hint();
-
- let lower = ::std::cmp::max(a_lower, b_lower);
-
- let upper = match (a_upper, b_upper) {
- (Some(x), Some(y)) => x.checked_add(y),
- _ => None,
- };
-
- (lower, upper)
+ fn size_hint(&self) -> SizeHint {
+ T::size_hint(self.left.size_hint(), self.right.size_hint())
}
fn count(mut self) -> usize {
@@ -106,10 +154,12 @@ impl<I, J, F> Iterator for MergeJoinBy<I, J, F>
(None, Some(_right)) => break count + 1 + self.right.into_parts().1.count(),
(Some(left), Some(right)) => {
count += 1;
- match (self.cmp_fn)(&left, &right) {
- Ordering::Equal => {}
- Ordering::Less => self.right.put_back(right),
- Ordering::Greater => self.left.put_back(left),
+ let (left, right, _) = (self.cmp_fn)(&left, &right).merge(left, right);
+ if let Some(left) = left {
+ self.left.put_back(left);
+ }
+ if let Some(right) = right {
+ self.right.put_back(right);
}
}
}
@@ -122,27 +172,24 @@ impl<I, J, F> Iterator for MergeJoinBy<I, J, F>
match (self.left.next(), self.right.next()) {
(None, None) => break previous_element,
(Some(left), None) => {
- break Some(EitherOrBoth::Left(
+ break Some(T::left(
self.left.into_parts().1.last().unwrap_or(left),
))
}
(None, Some(right)) => {
- break Some(EitherOrBoth::Right(
+ break Some(T::right(
self.right.into_parts().1.last().unwrap_or(right),
))
}
(Some(left), Some(right)) => {
- previous_element = match (self.cmp_fn)(&left, &right) {
- Ordering::Equal => Some(EitherOrBoth::Both(left, right)),
- Ordering::Less => {
- self.right.put_back(right);
- Some(EitherOrBoth::Left(left))
- }
- Ordering::Greater => {
- self.left.put_back(left);
- Some(EitherOrBoth::Right(right))
- }
+ let (left, right, elem) = (self.cmp_fn)(&left, &right).merge(left, right);
+ if let Some(left) = left {
+ self.left.put_back(left);
+ }
+ if let Some(right) = right {
+ self.right.put_back(right);
}
+ previous_element = Some(elem);
}
}
}
@@ -156,13 +203,17 @@ impl<I, J, F> Iterator for MergeJoinBy<I, J, F>
n -= 1;
match (self.left.next(), self.right.next()) {
(None, None) => break None,
- (Some(_left), None) => break self.left.nth(n).map(EitherOrBoth::Left),
- (None, Some(_right)) => break self.right.nth(n).map(EitherOrBoth::Right),
- (Some(left), Some(right)) => match (self.cmp_fn)(&left, &right) {
- Ordering::Equal => {}
- Ordering::Less => self.right.put_back(right),
- Ordering::Greater => self.left.put_back(left),
- },
+ (Some(_left), None) => break self.left.nth(n).map(T::left),
+ (None, Some(_right)) => break self.right.nth(n).map(T::right),
+ (Some(left), Some(right)) => {
+ let (left, right, _) = (self.cmp_fn)(&left, &right).merge(left, right);
+ if let Some(left) = left {
+ self.left.put_back(left);
+ }
+ if let Some(right) = right {
+ self.right.put_back(right);
+ }
+ }
}
}
}
diff --git a/vendor/itertools/src/peeking_take_while.rs b/vendor/itertools/src/peeking_take_while.rs
index b3a9c5ccb..3a3722812 100644
--- a/vendor/itertools/src/peeking_take_while.rs
+++ b/vendor/itertools/src/peeking_take_while.rs
@@ -16,7 +16,18 @@ pub trait PeekingNext : Iterator {
/// if `accept` returns true, return it as the next element,
/// else None.
fn peeking_next<F>(&mut self, accept: F) -> Option<Self::Item>
- where F: FnOnce(&Self::Item) -> bool;
+ where Self: Sized,
+ F: FnOnce(&Self::Item) -> bool;
+}
+
+impl<'a, I> PeekingNext for &'a mut I
+ where I: PeekingNext,
+{
+ fn peeking_next<F>(&mut self, accept: F) -> Option<Self::Item>
+ where F: FnOnce(&Self::Item) -> bool
+ {
+ (*self).peeking_next(accept)
+ }
}
impl<I> PeekingNext for Peekable<I>
@@ -115,6 +126,18 @@ impl<'a, I, F> Iterator for PeekingTakeWhile<'a, I, F>
}
}
+impl<'a, I, F> PeekingNext for PeekingTakeWhile<'a, I, F>
+ where I: PeekingNext,
+ F: FnMut(&I::Item) -> bool,
+{
+ fn peeking_next<G>(&mut self, g: G) -> Option<Self::Item>
+ where G: FnOnce(&Self::Item) -> bool,
+ {
+ let f = &mut self.f;
+ self.iter.peeking_next(|r| f(r) && g(r))
+ }
+}
+
// Some iterators are so lightweight we can simply clone them to save their
// state and use that for peeking.
macro_rules! peeking_next_by_clone {
diff --git a/vendor/itertools/src/process_results_impl.rs b/vendor/itertools/src/process_results_impl.rs
index 44308f378..713db4551 100644
--- a/vendor/itertools/src/process_results_impl.rs
+++ b/vendor/itertools/src/process_results_impl.rs
@@ -1,3 +1,5 @@
+#[cfg(doc)]
+use crate::Itertools;
/// An iterator that produces only the `T` values as long as the
/// inner iterator produces `Ok(T)`.
@@ -52,38 +54,7 @@ impl<'a, I, T, E> Iterator for ProcessResults<'a, I, E>
/// “Lift†a function of the values of an iterator so that it can process
/// an iterator of `Result` values instead.
///
-/// `iterable` is an iterator or iterable with `Result<T, E>` elements, where
-/// `T` is the value type and `E` the error type.
-///
-/// `processor` is a closure that receives an adapted version of the iterable
-/// as the only argument — the adapted iterator produces elements of type `T`,
-/// as long as the original iterator produces `Ok` values.
-///
-/// If the original iterable produces an error at any point, the adapted
-/// iterator ends and the `process_results` function will return the
-/// error iself.
-///
-/// Otherwise, the return value from the closure is returned wrapped
-/// inside `Ok`.
-///
-/// # Example
-///
-/// ```
-/// use itertools::process_results;
-///
-/// type R = Result<i32, &'static str>;
-///
-/// let first_values: Vec<R> = vec![Ok(1), Ok(0), Ok(3)];
-/// let second_values: Vec<R> = vec![Ok(2), Ok(1), Err("overflow")];
-///
-/// // “Lift†the iterator .max() method to work on the values in Results using process_results
-///
-/// let first_max = process_results(first_values, |iter| iter.max().unwrap_or(0));
-/// let second_max = process_results(second_values, |iter| iter.max().unwrap_or(0));
-///
-/// assert_eq!(first_max, Ok(3));
-/// assert!(second_max.is_err());
-/// ```
+/// [`IntoIterator`] enabled version of [`Itertools::process_results`].
pub fn process_results<I, F, T, E, R>(iterable: I, processor: F) -> Result<R, E>
where I: IntoIterator<Item = Result<T, E>>,
F: FnOnce(ProcessResults<I::IntoIter, E>) -> R
diff --git a/vendor/itertools/src/take_while_inclusive.rs b/vendor/itertools/src/take_while_inclusive.rs
new file mode 100644
index 000000000..e2a7479e0
--- /dev/null
+++ b/vendor/itertools/src/take_while_inclusive.rs
@@ -0,0 +1,68 @@
+use core::iter::FusedIterator;
+use std::fmt;
+
+/// An iterator adaptor that consumes elements while the given predicate is
+/// `true`, including the element for which the predicate first returned
+/// `false`.
+///
+/// See [`.take_while_inclusive()`](crate::Itertools::take_while_inclusive)
+/// for more information.
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
+pub struct TakeWhileInclusive<'a, I: 'a, F> {
+ iter: &'a mut I,
+ predicate: F,
+ done: bool,
+}
+
+impl<'a, I, F> TakeWhileInclusive<'a, I, F>
+where
+ I: Iterator,
+ F: FnMut(&I::Item) -> bool,
+{
+ /// Create a new [`TakeWhileInclusive`] from an iterator and a predicate.
+ pub fn new(iter: &'a mut I, predicate: F) -> Self {
+ Self { iter, predicate, done: false}
+ }
+}
+
+impl<'a, I, F> fmt::Debug for TakeWhileInclusive<'a, I, F>
+ where I: Iterator + fmt::Debug,
+{
+ debug_fmt_fields!(TakeWhileInclusive, iter);
+}
+
+impl<'a, I, F> Iterator for TakeWhileInclusive<'a, I, F>
+where
+ I: Iterator,
+ F: FnMut(&I::Item) -> bool
+{
+ type Item = I::Item;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if self.done {
+ None
+ } else {
+ self.iter.next().map(|item| {
+ if !(self.predicate)(&item) {
+ self.done = true;
+ }
+ item
+ })
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ if self.done {
+ (0, Some(0))
+ } else {
+ (0, self.iter.size_hint().1)
+ }
+ }
+}
+
+impl<I, F> FusedIterator for TakeWhileInclusive<'_, I, F>
+where
+ I: Iterator,
+ F: FnMut(&I::Item) -> bool
+{
+} \ No newline at end of file
diff --git a/vendor/itertools/src/tuple_impl.rs b/vendor/itertools/src/tuple_impl.rs
index 06b5c13cb..fdf086585 100644
--- a/vendor/itertools/src/tuple_impl.rs
+++ b/vendor/itertools/src/tuple_impl.rs
@@ -194,14 +194,14 @@ impl<I, T> FusedIterator for TupleWindows<I, T>
T::Item: Clone
{}
-/// An iterator over all windows,wrapping back to the first elements when the
+/// An iterator over all windows, wrapping back to the first elements when the
/// window would otherwise exceed the length of the iterator, producing tuples
/// of a specific size.
///
/// See [`.circular_tuple_windows()`](crate::Itertools::circular_tuple_windows) for more
/// information.
#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
-#[derive(Debug)]
+#[derive(Debug, Clone)]
pub struct CircularTupleWindows<I, T: Clone>
where I: Iterator<Item = T::Item> + Clone,
T: TupleCollect + Clone
diff --git a/vendor/itertools/src/with_position.rs b/vendor/itertools/src/with_position.rs
index 1388503d1..dda9b25dc 100644
--- a/vendor/itertools/src/with_position.rs
+++ b/vendor/itertools/src/with_position.rs
@@ -2,7 +2,7 @@ use std::iter::{Fuse,Peekable, FusedIterator};
/// An iterator adaptor that wraps each element in an [`Position`].
///
-/// Iterator element type is `Position<I::Item>`.
+/// Iterator element type is `(Position, I::Item)`.
///
/// See [`.with_position()`](crate::Itertools::with_position) for more information.
#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
@@ -30,36 +30,24 @@ pub fn with_position<I>(iter: I) -> WithPosition<I>
}
}
-/// A value yielded by `WithPosition`.
+/// The first component of the value yielded by `WithPosition`.
/// Indicates the position of this element in the iterator results.
///
/// See [`.with_position()`](crate::Itertools::with_position) for more information.
#[derive(Copy, Clone, Debug, PartialEq)]
-pub enum Position<T> {
+pub enum Position {
/// This is the first element.
- First(T),
+ First,
/// This is neither the first nor the last element.
- Middle(T),
+ Middle,
/// This is the last element.
- Last(T),
+ Last,
/// This is the only element.
- Only(T),
-}
-
-impl<T> Position<T> {
- /// Return the inner value.
- pub fn into_inner(self) -> T {
- match self {
- Position::First(x) |
- Position::Middle(x) |
- Position::Last(x) |
- Position::Only(x) => x,
- }
- }
+ Only,
}
impl<I: Iterator> Iterator for WithPosition<I> {
- type Item = Position<I::Item>;
+ type Item = (Position, I::Item);
fn next(&mut self) -> Option<Self::Item> {
match self.peekable.next() {
@@ -70,15 +58,15 @@ impl<I: Iterator> Iterator for WithPosition<I> {
// Peek to see if this is also the last item,
// in which case tag it as `Only`.
match self.peekable.peek() {
- Some(_) => Some(Position::First(item)),
- None => Some(Position::Only(item)),
+ Some(_) => Some((Position::First, item)),
+ None => Some((Position::Only, item)),
}
} else {
// Have seen the first item, and there's something left.
// Peek to see if this is the last item.
match self.peekable.peek() {
- Some(_) => Some(Position::Middle(item)),
- None => Some(Position::Last(item)),
+ Some(_) => Some((Position::Middle, item)),
+ None => Some((Position::Last, item)),
}
}
}
diff --git a/vendor/itertools/tests/peeking_take_while.rs b/vendor/itertools/tests/peeking_take_while.rs
index a1147027e..5be97271d 100644
--- a/vendor/itertools/tests/peeking_take_while.rs
+++ b/vendor/itertools/tests/peeking_take_while.rs
@@ -48,3 +48,22 @@ fn peeking_take_while_slice_iter_rev() {
r.peeking_take_while(|_| true).count();
assert_eq!(r.next(), None);
}
+
+#[test]
+fn peeking_take_while_nested() {
+ let mut xs = (0..10).peekable();
+ let ys: Vec<_> = xs
+ .peeking_take_while(|x| *x < 6)
+ .peeking_take_while(|x| *x != 3)
+ .collect();
+ assert_eq!(ys, vec![0, 1, 2]);
+ assert_eq!(xs.next(), Some(3));
+
+ let mut xs = (4..10).peekable();
+ let ys: Vec<_> = xs
+ .peeking_take_while(|x| *x != 3)
+ .peeking_take_while(|x| *x < 6)
+ .collect();
+ assert_eq!(ys, vec![4, 5]);
+ assert_eq!(xs.next(), Some(6));
+}
diff --git a/vendor/itertools/tests/quick.rs b/vendor/itertools/tests/quick.rs
index 0adcf1ad7..c19af6c1e 100644
--- a/vendor/itertools/tests/quick.rs
+++ b/vendor/itertools/tests/quick.rs
@@ -830,6 +830,31 @@ quickcheck! {
}
quickcheck! {
+ fn merge_join_by_ordering_vs_bool(a: Vec<u8>, b: Vec<u8>) -> bool {
+ use either::Either;
+ use itertools::free::merge_join_by;
+ let mut has_equal = false;
+ let it_ord = merge_join_by(a.clone(), b.clone(), Ord::cmp).flat_map(|v| match v {
+ EitherOrBoth::Both(l, r) => {
+ has_equal = true;
+ vec![Either::Left(l), Either::Right(r)]
+ }
+ EitherOrBoth::Left(l) => vec![Either::Left(l)],
+ EitherOrBoth::Right(r) => vec![Either::Right(r)],
+ });
+ let it_bool = merge_join_by(a, b, PartialOrd::le);
+ itertools::equal(it_ord, it_bool) || has_equal
+ }
+ fn merge_join_by_bool_unwrapped_is_merge_by(a: Vec<u8>, b: Vec<u8>) -> bool {
+ use either::Either;
+ use itertools::free::merge_join_by;
+ let it = a.clone().into_iter().merge_by(b.clone(), PartialOrd::ge);
+ let it_join = merge_join_by(a, b, PartialOrd::ge).map(Either::into_inner);
+ itertools::equal(it, it_join)
+ }
+}
+
+quickcheck! {
fn size_tee(a: Vec<u8>) -> bool {
let (mut t1, mut t2) = a.iter().tee();
t1.next();
@@ -994,6 +1019,17 @@ quickcheck! {
}
quickcheck! {
+ fn chunk_clone_equal(a: Vec<u8>, size: u8) -> () {
+ let mut size = size;
+ if size == 0 {
+ size += 1;
+ }
+ let it = a.chunks(size as usize);
+ itertools::assert_equal(it.clone(), it);
+ }
+}
+
+quickcheck! {
fn equal_chunks_lazy(a: Vec<u8>, size: u8) -> bool {
let mut size = size;
if size == 0 {
@@ -1010,7 +1046,71 @@ quickcheck! {
}
}
+// tuple iterators
quickcheck! {
+ fn equal_circular_tuple_windows_1(a: Vec<u8>) -> bool {
+ let x = a.iter().map(|e| (e,) );
+ let y = a.iter().circular_tuple_windows::<(_,)>();
+ itertools::assert_equal(x,y);
+ true
+ }
+
+ fn equal_circular_tuple_windows_2(a: Vec<u8>) -> bool {
+ let x = (0..a.len()).map(|start_idx| (
+ &a[start_idx],
+ &a[(start_idx + 1) % a.len()],
+ ));
+ let y = a.iter().circular_tuple_windows::<(_, _)>();
+ itertools::assert_equal(x,y);
+ true
+ }
+
+ fn equal_circular_tuple_windows_3(a: Vec<u8>) -> bool {
+ let x = (0..a.len()).map(|start_idx| (
+ &a[start_idx],
+ &a[(start_idx + 1) % a.len()],
+ &a[(start_idx + 2) % a.len()],
+ ));
+ let y = a.iter().circular_tuple_windows::<(_, _, _)>();
+ itertools::assert_equal(x,y);
+ true
+ }
+
+ fn equal_circular_tuple_windows_4(a: Vec<u8>) -> bool {
+ let x = (0..a.len()).map(|start_idx| (
+ &a[start_idx],
+ &a[(start_idx + 1) % a.len()],
+ &a[(start_idx + 2) % a.len()],
+ &a[(start_idx + 3) % a.len()],
+ ));
+ let y = a.iter().circular_tuple_windows::<(_, _, _, _)>();
+ itertools::assert_equal(x,y);
+ true
+ }
+
+ fn equal_cloned_circular_tuple_windows(a: Vec<u8>) -> bool {
+ let x = a.iter().circular_tuple_windows::<(_, _, _, _)>();
+ let y = x.clone();
+ itertools::assert_equal(x,y);
+ true
+ }
+
+ fn equal_cloned_circular_tuple_windows_noninitial(a: Vec<u8>) -> bool {
+ let mut x = a.iter().circular_tuple_windows::<(_, _, _, _)>();
+ let _ = x.next();
+ let y = x.clone();
+ itertools::assert_equal(x,y);
+ true
+ }
+
+ fn equal_cloned_circular_tuple_windows_complete(a: Vec<u8>) -> bool {
+ let mut x = a.iter().circular_tuple_windows::<(_, _, _, _)>();
+ for _ in x.by_ref() {}
+ let y = x.clone();
+ itertools::assert_equal(x,y);
+ true
+ }
+
fn equal_tuple_windows_1(a: Vec<u8>) -> bool {
let x = a.windows(1).map(|s| (&s[0], ));
let y = a.iter().tuple_windows::<(_,)>();
diff --git a/vendor/itertools/tests/test_std.rs b/vendor/itertools/tests/test_std.rs
index f59034234..77207d87e 100644
--- a/vendor/itertools/tests/test_std.rs
+++ b/vendor/itertools/tests/test_std.rs
@@ -221,6 +221,22 @@ fn all_equal() {
}
#[test]
+fn all_equal_value() {
+ assert_eq!("".chars().all_equal_value(), Err(None));
+ assert_eq!("A".chars().all_equal_value(), Ok('A'));
+ assert_eq!("AABBCCC".chars().all_equal_value(), Err(Some(('A', 'B'))));
+ assert_eq!("AAAAAAA".chars().all_equal_value(), Ok('A'));
+ {
+ let mut it = [1,2,3].iter().copied();
+ let result = it.all_equal_value();
+ assert_eq!(result, Err(Some((1, 2))));
+ let remaining = it.next();
+ assert_eq!(remaining, Some(3));
+ assert!(it.next().is_none());
+ }
+}
+
+#[test]
fn all_unique() {
assert!("ABCDEFGH".chars().all_unique());
assert!(!"ABCDEFGA".chars().all_unique());
@@ -1160,9 +1176,9 @@ fn exactly_one_question_mark_return() -> Result<(), ExactlyOneError<std::slice::
#[test]
fn multiunzip() {
- let (a, b, c): (Vec<_>, Vec<_>, Vec<_>) = [(0, 1, 2), (3, 4, 5), (6, 7, 8)].iter().cloned().multiunzip();
+ let (a, b, c): (Vec<_>, Vec<_>, Vec<_>) = [(0, 1, 2), (3, 4, 5), (6, 7, 8)].iter().cloned().multiunzip();
assert_eq!((a, b, c), (vec![0, 3, 6], vec![1, 4, 7], vec![2, 5, 8]));
let (): () = [(), (), ()].iter().cloned().multiunzip();
- let t: (Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>) = [(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)].iter().cloned().multiunzip();
+ let t: (Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>) = [(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)].iter().cloned().multiunzip();
assert_eq!(t, (vec![0], vec![1], vec![2], vec![3], vec![4], vec![5], vec![6], vec![7], vec![8], vec![9], vec![10], vec![11]));
}
diff --git a/vendor/jobserver/.cargo-checksum.json b/vendor/jobserver/.cargo-checksum.json
index 734fd6db9..ec4f23bef 100644
--- a/vendor/jobserver/.cargo-checksum.json
+++ b/vendor/jobserver/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"0f712c94e98313fc5833521e1dc0c42a57e5603ea54d1e05a004b95b52fb39b7","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"07d8d79f8f6b6a94321fe8db78d26ed409de47cee49290947bd6bbfa29d05e9c","src/lib.rs":"be789fda33a51375fcc87e4bf9bf1256930d718f698f700bbec5e335c83e0659","src/unix.rs":"1e1efc5cd1f381fea83bdaaee474ad3530b396305a9bbdc9da08b0c36baced31","src/wasm.rs":"65d3d8ed45972b4459581505906481d32a50d2f7514cd7ff2a595fceeaa672f0","src/windows.rs":"8e0fa3ab29757d809d4fa03c8101870435ce8c4ceaebe491df3144d62fe0aaaf","tests/client-of-myself.rs":"ca09bf398f69df4bac1730999e954dbbc3faf3c6512678c136e0938e7e9cd0ab","tests/client.rs":"d4745cdd650c86d19bc81f6c9b35df498996deffb86ae6412ad040af96a19183","tests/helper.rs":"c0e6c00eaf849295d8ec23e374690b6645c0f7d993e91abf7ad53ac960f71762","tests/make-as-a-client.rs":"8be1f3fef1e9e65c7904dbaa04364bf0f44e9deab84a2a247a5a94b5cf0df9bc","tests/server.rs":"da15bf12e1df1883f660892b996c9e0d92485aace3f7b50ee70c4a8e6deae8da"},"package":"936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2"} \ No newline at end of file
+{"files":{"Cargo.toml":"7236550dc71dfeecdd220976fd14dff13c99219c927b0f45a09900ae778c3764","LICENSE-APACHE":"7cfd738c53d61c79f07e348f622bf7707c9084237054d37fbe07788a75f5881c","LICENSE-MIT":"29c9533fc9a32ee529e928bcb12308f0745d237fdea80d83c0258f23243d65d1","README.md":"bf650d48029473e7e2d93b4a6bb46ab08c4ae60a327dc294351372685dcedfa5","src/error.rs":"5ffc1e2e35c25266a521a947c50ebe6292a6d88142235f404a5dc79bf393f8b5","src/lib.rs":"8eba0ff1829e68aec642fdb0e7928e199dfd2109d6c4d797bdfddbf4c08585ef","src/unix.rs":"64e559fac928156468490258728c89fbda75cd81e6c70baf05f5355b2c2623ff","src/wasm.rs":"791974e745b72f8133a55a9d15b8b6efd6513d921ac58f4ddc4e6035cd87a9af","src/windows.rs":"6b9faff05d572716d5ac1387300cf0cc8e0f0cfe80100bc2007572b12863d170","tests/client-of-myself.rs":"0ea04ff17614e248e281e5e730ecc615f1e310aefac42a7f95da2dcfb42c1c5e","tests/client.rs":"770ac4065207985c1427ededb95d6dcb341ca26a36aad65f4f1e245d09f28677","tests/helper.rs":"1e970fef77b828948e453d46487c6195b0e7774d6c14f16b32623b3ec6e2186c","tests/make-as-a-client.rs":"4f96a30f24c0a93e003d6107ccc767549ef18a7b0d022dbbab8dc70348f698ee","tests/server.rs":"231493b95789b62987f2790c0f4df2a23db27a3a66dacb20987c67e7203cdd6c"},"package":"8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d"} \ No newline at end of file
diff --git a/vendor/jobserver/Cargo.toml b/vendor/jobserver/Cargo.toml
index 938371008..851b27ca2 100644
--- a/vendor/jobserver/Cargo.toml
+++ b/vendor/jobserver/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2018"
name = "jobserver"
-version = "0.1.26"
+version = "0.1.27"
authors = ["Alex Crichton <alex@alexcrichton.com>"]
description = """
An implementation of the GNU make jobserver for Rust
diff --git a/vendor/jobserver/LICENSE-APACHE b/vendor/jobserver/LICENSE-APACHE
index 16fe87b06..f47c94114 100644
--- a/vendor/jobserver/LICENSE-APACHE
+++ b/vendor/jobserver/LICENSE-APACHE
@@ -1,201 +1,201 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/vendor/jobserver/LICENSE-MIT b/vendor/jobserver/LICENSE-MIT
index 39e0ed660..a22128a47 100644
--- a/vendor/jobserver/LICENSE-MIT
+++ b/vendor/jobserver/LICENSE-MIT
@@ -1,25 +1,25 @@
-Copyright (c) 2014 Alex Crichton
-
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+Copyright (c) 2014 Alex Crichton
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/vendor/jobserver/README.md b/vendor/jobserver/README.md
index 7b06c3eb0..affa97fb6 100644
--- a/vendor/jobserver/README.md
+++ b/vendor/jobserver/README.md
@@ -1,39 +1,39 @@
-# jobserver-rs
-
-An implementation of the GNU make jobserver for Rust
-
-[![Crates.io](https://img.shields.io/crates/v/jobserver.svg?maxAge=2592000)](https://crates.io/crates/jobserver)
-
-[Documentation](https://docs.rs/jobserver)
-
-## Usage
-
-First, add this to your `Cargo.toml`:
-
-```toml
-[dependencies]
-jobserver = "0.1"
-```
-
-Next, add this to your crate:
-
-```rust
-extern crate jobserver;
-```
-
-# License
-
-This project is licensed under either of
-
- * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
- http://www.apache.org/licenses/LICENSE-2.0)
- * MIT license ([LICENSE-MIT](LICENSE-MIT) or
- http://opensource.org/licenses/MIT)
-
-at your option.
-
-### Contribution
-
-Unless you explicitly state otherwise, any contribution intentionally submitted
-for inclusion in jobserver-rs by you, as defined in the Apache-2.0 license, shall be
-dual licensed as above, without any additional terms or conditions.
+# jobserver-rs
+
+An implementation of the GNU make jobserver for Rust
+
+[![Crates.io](https://img.shields.io/crates/v/jobserver.svg?maxAge=2592000)](https://crates.io/crates/jobserver)
+
+[Documentation](https://docs.rs/jobserver)
+
+## Usage
+
+First, add this to your `Cargo.toml`:
+
+```toml
+[dependencies]
+jobserver = "0.1"
+```
+
+Next, add this to your crate:
+
+```rust
+extern crate jobserver;
+```
+
+# License
+
+This project is licensed under either of
+
+ * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
+ http://www.apache.org/licenses/LICENSE-2.0)
+ * MIT license ([LICENSE-MIT](LICENSE-MIT) or
+ http://opensource.org/licenses/MIT)
+
+at your option.
+
+### Contribution
+
+Unless you explicitly state otherwise, any contribution intentionally submitted
+for inclusion in jobserver-rs by you, as defined in the Apache-2.0 license, shall be
+dual licensed as above, without any additional terms or conditions.
diff --git a/vendor/jobserver/src/error.rs b/vendor/jobserver/src/error.rs
new file mode 100644
index 000000000..9f95f18b8
--- /dev/null
+++ b/vendor/jobserver/src/error.rs
@@ -0,0 +1,84 @@
+#[cfg(unix)]
+type RawFd = std::os::fd::RawFd;
+#[cfg(not(unix))]
+type RawFd = std::convert::Infallible;
+
+/// Error type for `from_env_ext` function.
+#[derive(Debug)]
+pub struct FromEnvError {
+ pub(crate) inner: FromEnvErrorInner,
+}
+
+/// Kind of an error returned from `from_env_ext` function.
+#[derive(Debug)]
+#[non_exhaustive]
+pub enum FromEnvErrorKind {
+ /// There is no environment variable that describes jobserver to inherit.
+ NoEnvVar,
+ /// There is no jobserver in the environment variable.
+ /// Variables associated with Make can be used for passing data other than jobserver info.
+ NoJobserver,
+ /// Cannot parse jobserver environment variable value, incorrect format.
+ CannotParse,
+ /// Cannot open path or name from the jobserver environment variable value.
+ CannotOpenPath,
+ /// Cannot open file descriptor from the jobserver environment variable value.
+ CannotOpenFd,
+ /// File descriptor from the jobserver environment variable value is not a pipe.
+ NotAPipe,
+ /// Jobserver inheritance is not supported on this platform.
+ Unsupported,
+}
+
+impl FromEnvError {
+ /// Get the error kind.
+ pub fn kind(&self) -> FromEnvErrorKind {
+ match self.inner {
+ FromEnvErrorInner::NoEnvVar => FromEnvErrorKind::NoEnvVar,
+ FromEnvErrorInner::NoJobserver => FromEnvErrorKind::NoJobserver,
+ FromEnvErrorInner::CannotParse(_) => FromEnvErrorKind::CannotParse,
+ FromEnvErrorInner::CannotOpenPath(..) => FromEnvErrorKind::CannotOpenPath,
+ FromEnvErrorInner::CannotOpenFd(..) => FromEnvErrorKind::CannotOpenFd,
+ FromEnvErrorInner::NotAPipe(..) => FromEnvErrorKind::NotAPipe,
+ FromEnvErrorInner::Unsupported => FromEnvErrorKind::Unsupported,
+ }
+ }
+}
+
+impl std::fmt::Display for FromEnvError {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ match &self.inner {
+ FromEnvErrorInner::NoEnvVar => write!(f, "there is no environment variable that describes jobserver to inherit"),
+ FromEnvErrorInner::NoJobserver => write!(f, "there is no `--jobserver-fds=` or `--jobserver-auth=` in the environment variable"),
+ FromEnvErrorInner::CannotParse(s) => write!(f, "cannot parse jobserver environment variable value: {s}"),
+ FromEnvErrorInner::CannotOpenPath(s, err) => write!(f, "cannot open path or name {s} from the jobserver environment variable value: {err}"),
+ FromEnvErrorInner::CannotOpenFd(fd, err) => write!(f, "cannot open file descriptor {fd} from the jobserver environment variable value: {err}"),
+ FromEnvErrorInner::NotAPipe(fd, None) => write!(f, "file descriptor {fd} from the jobserver environment variable value is not a pipe"),
+ FromEnvErrorInner::NotAPipe(fd, Some(err)) => write!(f, "file descriptor {fd} from the jobserver environment variable value is not a pipe: {err}"),
+ FromEnvErrorInner::Unsupported => write!(f, "jobserver inheritance is not supported on this platform"),
+ }
+ }
+}
+impl std::error::Error for FromEnvError {
+ fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
+ match &self.inner {
+ FromEnvErrorInner::CannotOpenPath(_, err) => Some(err),
+ FromEnvErrorInner::NotAPipe(_, Some(err)) | FromEnvErrorInner::CannotOpenFd(_, err) => {
+ Some(err)
+ }
+ _ => None,
+ }
+ }
+}
+
+#[allow(dead_code)]
+#[derive(Debug)]
+pub(crate) enum FromEnvErrorInner {
+ NoEnvVar,
+ NoJobserver,
+ CannotParse(String),
+ CannotOpenPath(String, std::io::Error),
+ CannotOpenFd(RawFd, std::io::Error),
+ NotAPipe(RawFd, Option<std::io::Error>),
+ Unsupported,
+}
diff --git a/vendor/jobserver/src/lib.rs b/vendor/jobserver/src/lib.rs
index cd0cdd749..bfa7980c4 100644
--- a/vendor/jobserver/src/lib.rs
+++ b/vendor/jobserver/src/lib.rs
@@ -1,544 +1,596 @@
-//! An implementation of the GNU make jobserver.
-//!
-//! This crate is an implementation, in Rust, of the GNU `make` jobserver for
-//! CLI tools that are interoperating with make or otherwise require some form
-//! of parallelism limiting across process boundaries. This was originally
-//! written for usage in Cargo to both (a) work when `cargo` is invoked from
-//! `make` (using `make`'s jobserver) and (b) work when `cargo` invokes build
-//! scripts, exporting a jobserver implementation for `make` processes to
-//! transitively use.
-//!
-//! The jobserver implementation can be found in [detail online][docs] but
-//! basically boils down to a cross-process semaphore. On Unix this is
-//! implemented with the `pipe` syscall and read/write ends of a pipe and on
-//! Windows this is implemented literally with IPC semaphores. Starting from
-//! GNU `make` version 4.4, named pipe becomes the default way in communication
-//! on Unix. This crate also supports that feature in the sense of inheriting
-//! and forwarding the correct environment.
-//!
-//! The jobserver protocol in `make` also dictates when tokens are acquired to
-//! run child work, and clients using this crate should take care to implement
-//! such details to ensure correct interoperation with `make` itself.
-//!
-//! ## Examples
-//!
-//! Connect to a jobserver that was set up by `make` or a different process:
-//!
-//! ```no_run
-//! use jobserver::Client;
-//!
-//! // See API documentation for why this is `unsafe`
-//! let client = match unsafe { Client::from_env() } {
-//! Some(client) => client,
-//! None => panic!("client not configured"),
-//! };
-//! ```
-//!
-//! Acquire and release token from a jobserver:
-//!
-//! ```no_run
-//! use jobserver::Client;
-//!
-//! let client = unsafe { Client::from_env().unwrap() };
-//! let token = client.acquire().unwrap(); // blocks until it is available
-//! drop(token); // releases the token when the work is done
-//! ```
-//!
-//! Create a new jobserver and configure a child process to have access:
-//!
-//! ```
-//! use std::process::Command;
-//! use jobserver::Client;
-//!
-//! let client = Client::new(4).expect("failed to create jobserver");
-//! let mut cmd = Command::new("make");
-//! client.configure(&mut cmd);
-//! ```
-//!
-//! ## Caveats
-//!
-//! This crate makes no attempt to release tokens back to a jobserver on
-//! abnormal exit of a process. If a process which acquires a token is killed
-//! with ctrl-c or some similar signal then tokens will not be released and the
-//! jobserver may be in a corrupt state.
-//!
-//! Note that this is typically ok as ctrl-c means that an entire build process
-//! is being torn down, but it's worth being aware of at least!
-//!
-//! ## Windows caveats
-//!
-//! There appear to be two implementations of `make` on Windows. On MSYS2 one
-//! typically comes as `mingw32-make` and the other as `make` itself. I'm not
-//! personally too familiar with what's going on here, but for jobserver-related
-//! information the `mingw32-make` implementation uses Windows semaphores
-//! whereas the `make` program does not. The `make` program appears to use file
-//! descriptors and I'm not really sure how it works, so this crate is not
-//! compatible with `make` on Windows. It is, however, compatible with
-//! `mingw32-make`.
-//!
-//! [docs]: http://make.mad-scientist.net/papers/jobserver-implementation/
-
-#![deny(missing_docs, missing_debug_implementations)]
-#![doc(html_root_url = "https://docs.rs/jobserver/0.1")]
-
-use std::env;
-use std::io;
-use std::process::Command;
-use std::sync::{Arc, Condvar, Mutex, MutexGuard};
-
-#[cfg(unix)]
-#[path = "unix.rs"]
-mod imp;
-#[cfg(windows)]
-#[path = "windows.rs"]
-mod imp;
-#[cfg(not(any(unix, windows)))]
-#[path = "wasm.rs"]
-mod imp;
-
-/// A client of a jobserver
-///
-/// This structure is the main type exposed by this library, and is where
-/// interaction to a jobserver is configured through. Clients are either created
-/// from scratch in which case the internal semphore is initialied on the spot,
-/// or a client is created from the environment to connect to a jobserver
-/// already created.
-///
-/// Some usage examples can be found in the crate documentation for using a
-/// client.
-///
-/// Note that a `Client` implements the `Clone` trait, and all instances of a
-/// `Client` refer to the same jobserver instance.
-#[derive(Clone, Debug)]
-pub struct Client {
- inner: Arc<imp::Client>,
-}
-
-/// An acquired token from a jobserver.
-///
-/// This token will be released back to the jobserver when it is dropped and
-/// otherwise represents the ability to spawn off another thread of work.
-#[derive(Debug)]
-pub struct Acquired {
- client: Arc<imp::Client>,
- data: imp::Acquired,
- disabled: bool,
-}
-
-impl Acquired {
- /// This drops the `Acquired` token without releasing the associated token.
- ///
- /// This is not generally useful, but can be helpful if you do not have the
- /// ability to store an Acquired token but need to not yet release it.
- ///
- /// You'll typically want to follow this up with a call to `release_raw` or
- /// similar to actually release the token later on.
- pub fn drop_without_releasing(mut self) {
- self.disabled = true;
- }
-}
-
-#[derive(Default, Debug)]
-struct HelperState {
- lock: Mutex<HelperInner>,
- cvar: Condvar,
-}
-
-#[derive(Default, Debug)]
-struct HelperInner {
- requests: usize,
- producer_done: bool,
- consumer_done: bool,
-}
-
-impl Client {
- /// Creates a new jobserver initialized with the given parallelism limit.
- ///
- /// A client to the jobserver created will be returned. This client will
- /// allow at most `limit` tokens to be acquired from it in parallel. More
- /// calls to `acquire` will cause the calling thread to block.
- ///
- /// Note that the created `Client` is not automatically inherited into
- /// spawned child processes from this program. Manual usage of the
- /// `configure` function is required for a child process to have access to a
- /// job server.
- ///
- /// # Examples
- ///
- /// ```
- /// use jobserver::Client;
- ///
- /// let client = Client::new(4).expect("failed to create jobserver");
- /// ```
- ///
- /// # Errors
- ///
- /// Returns an error if any I/O error happens when attempting to create the
- /// jobserver client.
- pub fn new(limit: usize) -> io::Result<Client> {
- Ok(Client {
- inner: Arc::new(imp::Client::new(limit)?),
- })
- }
-
- /// Attempts to connect to the jobserver specified in this process's
- /// environment.
- ///
- /// When the a `make` executable calls a child process it will configure the
- /// environment of the child to ensure that it has handles to the jobserver
- /// it's passing down. This function will attempt to look for these details
- /// and connect to the jobserver.
- ///
- /// Note that the created `Client` is not automatically inherited into
- /// spawned child processes from this program. Manual usage of the
- /// `configure` function is required for a child process to have access to a
- /// job server.
- ///
- /// # Return value
- ///
- /// If a jobserver was found in the environment and it looks correct then
- /// `Some` of the connected client will be returned. If no jobserver was
- /// found then `None` will be returned.
- ///
- /// Note that on Unix the `Client` returned **takes ownership of the file
- /// descriptors specified in the environment**. Jobservers on Unix are
- /// implemented with `pipe` file descriptors, and they're inherited from
- /// parent processes. This `Client` returned takes ownership of the file
- /// descriptors for this process and will close the file descriptors after
- /// this value is dropped.
- ///
- /// Additionally on Unix this function will configure the file descriptors
- /// with `CLOEXEC` so they're not automatically inherited by spawned
- /// children.
- ///
- /// # Safety
- ///
- /// This function is `unsafe` to call on Unix specifically as it
- /// transitively requires usage of the `from_raw_fd` function, which is
- /// itself unsafe in some circumstances.
- ///
- /// It's recommended to call this function very early in the lifetime of a
- /// program before any other file descriptors are opened. That way you can
- /// make sure to take ownership properly of the file descriptors passed
- /// down, if any.
- ///
- /// It's generally unsafe to call this function twice in a program if the
- /// previous invocation returned `Some`.
- ///
- /// Note, though, that on Windows it should be safe to call this function
- /// any number of times.
- pub unsafe fn from_env() -> Option<Client> {
- let var = match env::var("CARGO_MAKEFLAGS")
- .or_else(|_| env::var("MAKEFLAGS"))
- .or_else(|_| env::var("MFLAGS"))
- {
- Ok(s) => s,
- Err(_) => return None,
- };
- let mut arg = "--jobserver-fds=";
- let pos = match var.find(arg) {
- Some(i) => i,
- None => {
- arg = "--jobserver-auth=";
- match var.find(arg) {
- Some(i) => i,
- None => return None,
- }
- }
- };
-
- let s = var[pos + arg.len()..].split(' ').next().unwrap();
- imp::Client::open(s).map(|c| Client { inner: Arc::new(c) })
- }
-
- /// Acquires a token from this jobserver client.
- ///
- /// This function will block the calling thread until a new token can be
- /// acquired from the jobserver.
- ///
- /// # Return value
- ///
- /// On successful acquisition of a token an instance of `Acquired` is
- /// returned. This structure, when dropped, will release the token back to
- /// the jobserver. It's recommended to avoid leaking this value.
- ///
- /// # Errors
- ///
- /// If an I/O error happens while acquiring a token then this function will
- /// return immediately with the error. If an error is returned then a token
- /// was not acquired.
- pub fn acquire(&self) -> io::Result<Acquired> {
- let data = self.inner.acquire()?;
- Ok(Acquired {
- client: self.inner.clone(),
- data,
- disabled: false,
- })
- }
-
- /// Returns amount of tokens in the read-side pipe.
- ///
- /// # Return value
- ///
- /// Number of bytes available to be read from the jobserver pipe
- ///
- /// # Errors
- ///
- /// Underlying errors from the ioctl will be passed up.
- pub fn available(&self) -> io::Result<usize> {
- self.inner.available()
- }
-
- /// Configures a child process to have access to this client's jobserver as
- /// well.
- ///
- /// This function is required to be called to ensure that a jobserver is
- /// properly inherited to a child process. If this function is *not* called
- /// then this `Client` will not be accessible in the child process. In other
- /// words, if not called, then `Client::from_env` will return `None` in the
- /// child process (or the equivalent of `Child::from_env` that `make` uses).
- ///
- /// ## Platform-specific behavior
- ///
- /// On Unix and Windows this will clobber the `CARGO_MAKEFLAGS` environment
- /// variables for the child process, and on Unix this will also allow the
- /// two file descriptors for this client to be inherited to the child.
- ///
- /// On platforms other than Unix and Windows this panics.
- pub fn configure(&self, cmd: &mut Command) {
- cmd.env("CARGO_MAKEFLAGS", &self.mflags_env());
- self.inner.configure(cmd);
- }
-
- /// Configures a child process to have access to this client's jobserver as
- /// well.
- ///
- /// This function is required to be called to ensure that a jobserver is
- /// properly inherited to a child process. If this function is *not* called
- /// then this `Client` will not be accessible in the child process. In other
- /// words, if not called, then `Client::from_env` will return `None` in the
- /// child process (or the equivalent of `Child::from_env` that `make` uses).
- ///
- /// ## Platform-specific behavior
- ///
- /// On Unix and Windows this will clobber the `CARGO_MAKEFLAGS`,
- /// `MAKEFLAGS` and `MFLAGS` environment variables for the child process,
- /// and on Unix this will also allow the two file descriptors for
- /// this client to be inherited to the child.
- ///
- /// On platforms other than Unix and Windows this panics.
- pub fn configure_make(&self, cmd: &mut Command) {
- let value = self.mflags_env();
- cmd.env("CARGO_MAKEFLAGS", &value);
- cmd.env("MAKEFLAGS", &value);
- cmd.env("MFLAGS", &value);
- self.inner.configure(cmd);
- }
-
- fn mflags_env(&self) -> String {
- let arg = self.inner.string_arg();
- // Older implementations of make use `--jobserver-fds` and newer
- // implementations use `--jobserver-auth`, pass both to try to catch
- // both implementations.
- format!("-j --jobserver-fds={0} --jobserver-auth={0}", arg)
- }
-
- /// Converts this `Client` into a helper thread to deal with a blocking
- /// `acquire` function a little more easily.
- ///
- /// The fact that the `acquire` function on `Client` blocks isn't always
- /// the easiest to work with. Typically you're using a jobserver to
- /// manage running other events in parallel! This means that you need to
- /// either (a) wait for an existing job to finish or (b) wait for a
- /// new token to become available.
- ///
- /// Unfortunately the blocking in `acquire` happens at the implementation
- /// layer of jobservers. On Unix this requires a blocking call to `read`
- /// and on Windows this requires one of the `WaitFor*` functions. Both
- /// of these situations aren't the easiest to deal with:
- ///
- /// * On Unix there's basically only one way to wake up a `read` early, and
- /// that's through a signal. This is what the `make` implementation
- /// itself uses, relying on `SIGCHLD` to wake up a blocking acquisition
- /// of a new job token. Unfortunately nonblocking I/O is not an option
- /// here, so it means that "waiting for one of two events" means that
- /// the latter event must generate a signal! This is not always the case
- /// on unix for all jobservers.
- ///
- /// * On Windows you'd have to basically use the `WaitForMultipleObjects`
- /// which means that you've got to canonicalize all your event sources
- /// into a `HANDLE` which also isn't the easiest thing to do
- /// unfortunately.
- ///
- /// This function essentially attempts to ease these limitations by
- /// converting this `Client` into a helper thread spawned into this
- /// process. The application can then request that the helper thread
- /// acquires tokens and the provided closure will be invoked for each token
- /// acquired.
- ///
- /// The intention is that this function can be used to translate the event
- /// of a token acquisition into an arbitrary user-defined event.
- ///
- /// # Arguments
- ///
- /// This function will consume the `Client` provided to be transferred to
- /// the helper thread that is spawned. Additionally a closure `f` is
- /// provided to be invoked whenever a token is acquired.
- ///
- /// This closure is only invoked after calls to
- /// `HelperThread::request_token` have been made and a token itself has
- /// been acquired. If an error happens while acquiring the token then
- /// an error will be yielded to the closure as well.
- ///
- /// # Return Value
- ///
- /// This function will return an instance of the `HelperThread` structure
- /// which is used to manage the helper thread associated with this client.
- /// Through the `HelperThread` you'll request that tokens are acquired.
- /// When acquired, the closure provided here is invoked.
- ///
- /// When the `HelperThread` structure is returned it will be gracefully
- /// torn down, and the calling thread will be blocked until the thread is
- /// torn down (which should be prompt).
- ///
- /// # Errors
- ///
- /// This function may fail due to creation of the helper thread or
- /// auxiliary I/O objects to manage the helper thread. In any of these
- /// situations the error is propagated upwards.
- ///
- /// # Platform-specific behavior
- ///
- /// On Windows this function behaves pretty normally as expected, but on
- /// Unix the implementation is... a little heinous. As mentioned above
- /// we're forced into blocking I/O for token acquisition, namely a blocking
- /// call to `read`. We must be able to unblock this, however, to tear down
- /// the helper thread gracefully!
- ///
- /// Essentially what happens is that we'll send a signal to the helper
- /// thread spawned and rely on `EINTR` being returned to wake up the helper
- /// thread. This involves installing a global `SIGUSR1` handler that does
- /// nothing along with sending signals to that thread. This may cause
- /// odd behavior in some applications, so it's recommended to review and
- /// test thoroughly before using this.
- pub fn into_helper_thread<F>(self, f: F) -> io::Result<HelperThread>
- where
- F: FnMut(io::Result<Acquired>) + Send + 'static,
- {
- let state = Arc::new(HelperState::default());
- Ok(HelperThread {
- inner: Some(imp::spawn_helper(self, state.clone(), Box::new(f))?),
- state,
- })
- }
-
- /// Blocks the current thread until a token is acquired.
- ///
- /// This is the same as `acquire`, except that it doesn't return an RAII
- /// helper. If successful the process will need to guarantee that
- /// `release_raw` is called in the future.
- pub fn acquire_raw(&self) -> io::Result<()> {
- self.inner.acquire()?;
- Ok(())
- }
-
- /// Releases a jobserver token back to the original jobserver.
- ///
- /// This is intended to be paired with `acquire_raw` if it was called, but
- /// in some situations it could also be called to relinquish a process's
- /// implicit token temporarily which is then re-acquired later.
- pub fn release_raw(&self) -> io::Result<()> {
- self.inner.release(None)?;
- Ok(())
- }
-}
-
-impl Drop for Acquired {
- fn drop(&mut self) {
- if !self.disabled {
- drop(self.client.release(Some(&self.data)));
- }
- }
-}
-
-/// Structure returned from `Client::into_helper_thread` to manage the lifetime
-/// of the helper thread returned, see those associated docs for more info.
-#[derive(Debug)]
-pub struct HelperThread {
- inner: Option<imp::Helper>,
- state: Arc<HelperState>,
-}
-
-impl HelperThread {
- /// Request that the helper thread acquires a token, eventually calling the
- /// original closure with a token when it's available.
- ///
- /// For more information, see the docs on that function.
- pub fn request_token(&self) {
- // Indicate that there's one more request for a token and then wake up
- // the helper thread if it's sleeping.
- self.state.lock().requests += 1;
- self.state.cvar.notify_one();
- }
-}
-
-impl Drop for HelperThread {
- fn drop(&mut self) {
- // Flag that the producer half is done so the helper thread should exit
- // quickly if it's waiting. Wake it up if it's actually waiting
- self.state.lock().producer_done = true;
- self.state.cvar.notify_one();
-
- // ... and afterwards perform any thread cleanup logic
- self.inner.take().unwrap().join();
- }
-}
-
-impl HelperState {
- fn lock(&self) -> MutexGuard<'_, HelperInner> {
- self.lock.lock().unwrap_or_else(|e| e.into_inner())
- }
-
- /// Executes `f` for each request for a token, where `f` is expected to
- /// block and then provide the original closure with a token once it's
- /// acquired.
- ///
- /// This is an infinite loop until the helper thread is dropped, at which
- /// point everything should get interrupted.
- fn for_each_request(&self, mut f: impl FnMut(&HelperState)) {
- let mut lock = self.lock();
-
- // We only execute while we could receive requests, but as soon as
- // that's `false` we're out of here.
- while !lock.producer_done {
- // If no one's requested a token then we wait for someone to
- // request a token.
- if lock.requests == 0 {
- lock = self.cvar.wait(lock).unwrap_or_else(|e| e.into_inner());
- continue;
- }
-
- // Consume the request for a token, and then actually acquire a
- // token after unlocking our lock (not that acquisition happens in
- // `f`). This ensures that we don't actually hold the lock if we
- // wait for a long time for a token.
- lock.requests -= 1;
- drop(lock);
- f(self);
- lock = self.lock();
- }
- lock.consumer_done = true;
- self.cvar.notify_one();
- }
-
- fn producer_done(&self) -> bool {
- self.lock().producer_done
- }
-}
-
-#[test]
-fn no_helper_deadlock() {
- let x = crate::Client::new(32).unwrap();
- let _y = x.clone();
- std::mem::drop(x.into_helper_thread(|_| {}).unwrap());
-}
+//! An implementation of the GNU make jobserver.
+//!
+//! This crate is an implementation, in Rust, of the GNU `make` jobserver for
+//! CLI tools that are interoperating with make or otherwise require some form
+//! of parallelism limiting across process boundaries. This was originally
+//! written for usage in Cargo to both (a) work when `cargo` is invoked from
+//! `make` (using `make`'s jobserver) and (b) work when `cargo` invokes build
+//! scripts, exporting a jobserver implementation for `make` processes to
+//! transitively use.
+//!
+//! The jobserver implementation can be found in [detail online][docs] but
+//! basically boils down to a cross-process semaphore. On Unix this is
+//! implemented with the `pipe` syscall and read/write ends of a pipe and on
+//! Windows this is implemented literally with IPC semaphores. Starting from
+//! GNU `make` version 4.4, named pipe becomes the default way in communication
+//! on Unix. This crate also supports that feature in the sense of inheriting
+//! and forwarding the correct environment.
+//!
+//! The jobserver protocol in `make` also dictates when tokens are acquired to
+//! run child work, and clients using this crate should take care to implement
+//! such details to ensure correct interoperation with `make` itself.
+//!
+//! ## Examples
+//!
+//! Connect to a jobserver that was set up by `make` or a different process:
+//!
+//! ```no_run
+//! use jobserver::Client;
+//!
+//! // See API documentation for why this is `unsafe`
+//! let client = match unsafe { Client::from_env() } {
+//! Some(client) => client,
+//! None => panic!("client not configured"),
+//! };
+//! ```
+//!
+//! Acquire and release token from a jobserver:
+//!
+//! ```no_run
+//! use jobserver::Client;
+//!
+//! let client = unsafe { Client::from_env().unwrap() };
+//! let token = client.acquire().unwrap(); // blocks until it is available
+//! drop(token); // releases the token when the work is done
+//! ```
+//!
+//! Create a new jobserver and configure a child process to have access:
+//!
+//! ```
+//! use std::process::Command;
+//! use jobserver::Client;
+//!
+//! let client = Client::new(4).expect("failed to create jobserver");
+//! let mut cmd = Command::new("make");
+//! client.configure(&mut cmd);
+//! ```
+//!
+//! ## Caveats
+//!
+//! This crate makes no attempt to release tokens back to a jobserver on
+//! abnormal exit of a process. If a process which acquires a token is killed
+//! with ctrl-c or some similar signal then tokens will not be released and the
+//! jobserver may be in a corrupt state.
+//!
+//! Note that this is typically ok as ctrl-c means that an entire build process
+//! is being torn down, but it's worth being aware of at least!
+//!
+//! ## Windows caveats
+//!
+//! There appear to be two implementations of `make` on Windows. On MSYS2 one
+//! typically comes as `mingw32-make` and the other as `make` itself. I'm not
+//! personally too familiar with what's going on here, but for jobserver-related
+//! information the `mingw32-make` implementation uses Windows semaphores
+//! whereas the `make` program does not. The `make` program appears to use file
+//! descriptors and I'm not really sure how it works, so this crate is not
+//! compatible with `make` on Windows. It is, however, compatible with
+//! `mingw32-make`.
+//!
+//! [docs]: http://make.mad-scientist.net/papers/jobserver-implementation/
+
+#![deny(missing_docs, missing_debug_implementations)]
+#![doc(html_root_url = "https://docs.rs/jobserver/0.1")]
+
+use std::env;
+use std::ffi::OsString;
+use std::io;
+use std::process::Command;
+use std::sync::{Arc, Condvar, Mutex, MutexGuard};
+
+mod error;
+#[cfg(unix)]
+#[path = "unix.rs"]
+mod imp;
+#[cfg(windows)]
+#[path = "windows.rs"]
+mod imp;
+#[cfg(not(any(unix, windows)))]
+#[path = "wasm.rs"]
+mod imp;
+
+/// A client of a jobserver
+///
+/// This structure is the main type exposed by this library, and is where
+/// interaction to a jobserver is configured through. Clients are either created
+/// from scratch in which case the internal semphore is initialied on the spot,
+/// or a client is created from the environment to connect to a jobserver
+/// already created.
+///
+/// Some usage examples can be found in the crate documentation for using a
+/// client.
+///
+/// Note that a `Client` implements the `Clone` trait, and all instances of a
+/// `Client` refer to the same jobserver instance.
+#[derive(Clone, Debug)]
+pub struct Client {
+ inner: Arc<imp::Client>,
+}
+
+/// An acquired token from a jobserver.
+///
+/// This token will be released back to the jobserver when it is dropped and
+/// otherwise represents the ability to spawn off another thread of work.
+#[derive(Debug)]
+pub struct Acquired {
+ client: Arc<imp::Client>,
+ data: imp::Acquired,
+ disabled: bool,
+}
+
+impl Acquired {
+ /// This drops the `Acquired` token without releasing the associated token.
+ ///
+ /// This is not generally useful, but can be helpful if you do not have the
+ /// ability to store an Acquired token but need to not yet release it.
+ ///
+ /// You'll typically want to follow this up with a call to `release_raw` or
+ /// similar to actually release the token later on.
+ pub fn drop_without_releasing(mut self) {
+ self.disabled = true;
+ }
+}
+
+#[derive(Default, Debug)]
+struct HelperState {
+ lock: Mutex<HelperInner>,
+ cvar: Condvar,
+}
+
+#[derive(Default, Debug)]
+struct HelperInner {
+ requests: usize,
+ producer_done: bool,
+ consumer_done: bool,
+}
+
+use error::FromEnvErrorInner;
+pub use error::{FromEnvError, FromEnvErrorKind};
+
+/// Return type for `from_env_ext` function.
+#[derive(Debug)]
+pub struct FromEnv {
+ /// Result of trying to get jobserver client from env.
+ pub client: Result<Client, FromEnvError>,
+ /// Name and value of the environment variable.
+ /// `None` if no relevant environment variable is found.
+ pub var: Option<(&'static str, OsString)>,
+}
+
+impl FromEnv {
+ fn new_ok(client: Client, var_name: &'static str, var_value: OsString) -> FromEnv {
+ FromEnv {
+ client: Ok(client),
+ var: Some((var_name, var_value)),
+ }
+ }
+ fn new_err(kind: FromEnvErrorInner, var_name: &'static str, var_value: OsString) -> FromEnv {
+ FromEnv {
+ client: Err(FromEnvError { inner: kind }),
+ var: Some((var_name, var_value)),
+ }
+ }
+}
+
+impl Client {
+ /// Creates a new jobserver initialized with the given parallelism limit.
+ ///
+ /// A client to the jobserver created will be returned. This client will
+ /// allow at most `limit` tokens to be acquired from it in parallel. More
+ /// calls to `acquire` will cause the calling thread to block.
+ ///
+ /// Note that the created `Client` is not automatically inherited into
+ /// spawned child processes from this program. Manual usage of the
+ /// `configure` function is required for a child process to have access to a
+ /// job server.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use jobserver::Client;
+ ///
+ /// let client = Client::new(4).expect("failed to create jobserver");
+ /// ```
+ ///
+ /// # Errors
+ ///
+ /// Returns an error if any I/O error happens when attempting to create the
+ /// jobserver client.
+ pub fn new(limit: usize) -> io::Result<Client> {
+ Ok(Client {
+ inner: Arc::new(imp::Client::new(limit)?),
+ })
+ }
+
+ /// Attempts to connect to the jobserver specified in this process's
+ /// environment.
+ ///
+ /// When the a `make` executable calls a child process it will configure the
+ /// environment of the child to ensure that it has handles to the jobserver
+ /// it's passing down. This function will attempt to look for these details
+ /// and connect to the jobserver.
+ ///
+ /// Note that the created `Client` is not automatically inherited into
+ /// spawned child processes from this program. Manual usage of the
+ /// `configure` function is required for a child process to have access to a
+ /// job server.
+ ///
+ /// # Return value
+ ///
+ /// `FromEnv` contains result and relevant environment variable.
+ /// If a jobserver was found in the environment and it looks correct then
+ /// result with the connected client will be returned. In other cases
+ /// result will contain `Err(FromEnvErr)`.
+ ///
+ /// Note that on Unix the `Client` returned **takes ownership of the file
+ /// descriptors specified in the environment**. Jobservers on Unix are
+ /// implemented with `pipe` file descriptors, and they're inherited from
+ /// parent processes. This `Client` returned takes ownership of the file
+ /// descriptors for this process and will close the file descriptors after
+ /// this value is dropped.
+ ///
+ /// Additionally on Unix this function will configure the file descriptors
+ /// with `CLOEXEC` so they're not automatically inherited by spawned
+ /// children.
+ ///
+ /// On unix if `check_pipe` enabled this function will check if provided
+ /// files are actually pipes.
+ ///
+ /// # Safety
+ ///
+ /// This function is `unsafe` to call on Unix specifically as it
+ /// transitively requires usage of the `from_raw_fd` function, which is
+ /// itself unsafe in some circumstances.
+ ///
+ /// It's recommended to call this function very early in the lifetime of a
+ /// program before any other file descriptors are opened. That way you can
+ /// make sure to take ownership properly of the file descriptors passed
+ /// down, if any.
+ ///
+ /// It's generally unsafe to call this function twice in a program if the
+ /// previous invocation returned `Some`.
+ ///
+ /// Note, though, that on Windows it should be safe to call this function
+ /// any number of times.
+ pub unsafe fn from_env_ext(check_pipe: bool) -> FromEnv {
+ let (env, var_os) = match ["CARGO_MAKEFLAGS", "MAKEFLAGS", "MFLAGS"]
+ .iter()
+ .map(|&env| env::var_os(env).map(|var| (env, var)))
+ .find_map(|p| p)
+ {
+ Some((env, var_os)) => (env, var_os),
+ None => return FromEnv::new_err(FromEnvErrorInner::NoEnvVar, "", Default::default()),
+ };
+
+ let var = match var_os.to_str() {
+ Some(var) => var,
+ None => {
+ let err = FromEnvErrorInner::CannotParse("not valid UTF-8".to_string());
+ return FromEnv::new_err(err, env, var_os);
+ }
+ };
+
+ let (arg, pos) = match ["--jobserver-fds=", "--jobserver-auth="]
+ .iter()
+ .map(|&arg| var.find(arg).map(|pos| (arg, pos)))
+ .find_map(|pos| pos)
+ {
+ Some((arg, pos)) => (arg, pos),
+ None => return FromEnv::new_err(FromEnvErrorInner::NoJobserver, env, var_os),
+ };
+
+ let s = var[pos + arg.len()..].split(' ').next().unwrap();
+ match imp::Client::open(s, check_pipe) {
+ Ok(c) => FromEnv::new_ok(Client { inner: Arc::new(c) }, env, var_os),
+ Err(err) => FromEnv::new_err(err, env, var_os),
+ }
+ }
+
+ /// Attempts to connect to the jobserver specified in this process's
+ /// environment.
+ ///
+ /// Wraps `from_env_ext` and discards error details.
+ pub unsafe fn from_env() -> Option<Client> {
+ Self::from_env_ext(false).client.ok()
+ }
+
+ /// Acquires a token from this jobserver client.
+ ///
+ /// This function will block the calling thread until a new token can be
+ /// acquired from the jobserver.
+ ///
+ /// # Return value
+ ///
+ /// On successful acquisition of a token an instance of `Acquired` is
+ /// returned. This structure, when dropped, will release the token back to
+ /// the jobserver. It's recommended to avoid leaking this value.
+ ///
+ /// # Errors
+ ///
+ /// If an I/O error happens while acquiring a token then this function will
+ /// return immediately with the error. If an error is returned then a token
+ /// was not acquired.
+ pub fn acquire(&self) -> io::Result<Acquired> {
+ let data = self.inner.acquire()?;
+ Ok(Acquired {
+ client: self.inner.clone(),
+ data,
+ disabled: false,
+ })
+ }
+
+ /// Returns amount of tokens in the read-side pipe.
+ ///
+ /// # Return value
+ ///
+ /// Number of bytes available to be read from the jobserver pipe
+ ///
+ /// # Errors
+ ///
+ /// Underlying errors from the ioctl will be passed up.
+ pub fn available(&self) -> io::Result<usize> {
+ self.inner.available()
+ }
+
+ /// Configures a child process to have access to this client's jobserver as
+ /// well.
+ ///
+ /// This function is required to be called to ensure that a jobserver is
+ /// properly inherited to a child process. If this function is *not* called
+ /// then this `Client` will not be accessible in the child process. In other
+ /// words, if not called, then `Client::from_env` will return `None` in the
+ /// child process (or the equivalent of `Child::from_env` that `make` uses).
+ ///
+ /// ## Platform-specific behavior
+ ///
+ /// On Unix and Windows this will clobber the `CARGO_MAKEFLAGS` environment
+ /// variables for the child process, and on Unix this will also allow the
+ /// two file descriptors for this client to be inherited to the child.
+ ///
+ /// On platforms other than Unix and Windows this panics.
+ pub fn configure(&self, cmd: &mut Command) {
+ cmd.env("CARGO_MAKEFLAGS", &self.mflags_env());
+ self.inner.configure(cmd);
+ }
+
+ /// Configures a child process to have access to this client's jobserver as
+ /// well.
+ ///
+ /// This function is required to be called to ensure that a jobserver is
+ /// properly inherited to a child process. If this function is *not* called
+ /// then this `Client` will not be accessible in the child process. In other
+ /// words, if not called, then `Client::from_env` will return `None` in the
+ /// child process (or the equivalent of `Child::from_env` that `make` uses).
+ ///
+ /// ## Platform-specific behavior
+ ///
+ /// On Unix and Windows this will clobber the `CARGO_MAKEFLAGS`,
+ /// `MAKEFLAGS` and `MFLAGS` environment variables for the child process,
+ /// and on Unix this will also allow the two file descriptors for
+ /// this client to be inherited to the child.
+ ///
+ /// On platforms other than Unix and Windows this panics.
+ pub fn configure_make(&self, cmd: &mut Command) {
+ let value = self.mflags_env();
+ cmd.env("CARGO_MAKEFLAGS", &value);
+ cmd.env("MAKEFLAGS", &value);
+ cmd.env("MFLAGS", &value);
+ self.inner.configure(cmd);
+ }
+
+ fn mflags_env(&self) -> String {
+ let arg = self.inner.string_arg();
+ // Older implementations of make use `--jobserver-fds` and newer
+ // implementations use `--jobserver-auth`, pass both to try to catch
+ // both implementations.
+ format!("-j --jobserver-fds={0} --jobserver-auth={0}", arg)
+ }
+
+ /// Converts this `Client` into a helper thread to deal with a blocking
+ /// `acquire` function a little more easily.
+ ///
+ /// The fact that the `acquire` function on `Client` blocks isn't always
+ /// the easiest to work with. Typically you're using a jobserver to
+ /// manage running other events in parallel! This means that you need to
+ /// either (a) wait for an existing job to finish or (b) wait for a
+ /// new token to become available.
+ ///
+ /// Unfortunately the blocking in `acquire` happens at the implementation
+ /// layer of jobservers. On Unix this requires a blocking call to `read`
+ /// and on Windows this requires one of the `WaitFor*` functions. Both
+ /// of these situations aren't the easiest to deal with:
+ ///
+ /// * On Unix there's basically only one way to wake up a `read` early, and
+ /// that's through a signal. This is what the `make` implementation
+ /// itself uses, relying on `SIGCHLD` to wake up a blocking acquisition
+ /// of a new job token. Unfortunately nonblocking I/O is not an option
+ /// here, so it means that "waiting for one of two events" means that
+ /// the latter event must generate a signal! This is not always the case
+ /// on unix for all jobservers.
+ ///
+ /// * On Windows you'd have to basically use the `WaitForMultipleObjects`
+ /// which means that you've got to canonicalize all your event sources
+ /// into a `HANDLE` which also isn't the easiest thing to do
+ /// unfortunately.
+ ///
+ /// This function essentially attempts to ease these limitations by
+ /// converting this `Client` into a helper thread spawned into this
+ /// process. The application can then request that the helper thread
+ /// acquires tokens and the provided closure will be invoked for each token
+ /// acquired.
+ ///
+ /// The intention is that this function can be used to translate the event
+ /// of a token acquisition into an arbitrary user-defined event.
+ ///
+ /// # Arguments
+ ///
+ /// This function will consume the `Client` provided to be transferred to
+ /// the helper thread that is spawned. Additionally a closure `f` is
+ /// provided to be invoked whenever a token is acquired.
+ ///
+ /// This closure is only invoked after calls to
+ /// `HelperThread::request_token` have been made and a token itself has
+ /// been acquired. If an error happens while acquiring the token then
+ /// an error will be yielded to the closure as well.
+ ///
+ /// # Return Value
+ ///
+ /// This function will return an instance of the `HelperThread` structure
+ /// which is used to manage the helper thread associated with this client.
+ /// Through the `HelperThread` you'll request that tokens are acquired.
+ /// When acquired, the closure provided here is invoked.
+ ///
+ /// When the `HelperThread` structure is returned it will be gracefully
+ /// torn down, and the calling thread will be blocked until the thread is
+ /// torn down (which should be prompt).
+ ///
+ /// # Errors
+ ///
+ /// This function may fail due to creation of the helper thread or
+ /// auxiliary I/O objects to manage the helper thread. In any of these
+ /// situations the error is propagated upwards.
+ ///
+ /// # Platform-specific behavior
+ ///
+ /// On Windows this function behaves pretty normally as expected, but on
+ /// Unix the implementation is... a little heinous. As mentioned above
+ /// we're forced into blocking I/O for token acquisition, namely a blocking
+ /// call to `read`. We must be able to unblock this, however, to tear down
+ /// the helper thread gracefully!
+ ///
+ /// Essentially what happens is that we'll send a signal to the helper
+ /// thread spawned and rely on `EINTR` being returned to wake up the helper
+ /// thread. This involves installing a global `SIGUSR1` handler that does
+ /// nothing along with sending signals to that thread. This may cause
+ /// odd behavior in some applications, so it's recommended to review and
+ /// test thoroughly before using this.
+ pub fn into_helper_thread<F>(self, f: F) -> io::Result<HelperThread>
+ where
+ F: FnMut(io::Result<Acquired>) + Send + 'static,
+ {
+ let state = Arc::new(HelperState::default());
+ Ok(HelperThread {
+ inner: Some(imp::spawn_helper(self, state.clone(), Box::new(f))?),
+ state,
+ })
+ }
+
+ /// Blocks the current thread until a token is acquired.
+ ///
+ /// This is the same as `acquire`, except that it doesn't return an RAII
+ /// helper. If successful the process will need to guarantee that
+ /// `release_raw` is called in the future.
+ pub fn acquire_raw(&self) -> io::Result<()> {
+ self.inner.acquire()?;
+ Ok(())
+ }
+
+ /// Releases a jobserver token back to the original jobserver.
+ ///
+ /// This is intended to be paired with `acquire_raw` if it was called, but
+ /// in some situations it could also be called to relinquish a process's
+ /// implicit token temporarily which is then re-acquired later.
+ pub fn release_raw(&self) -> io::Result<()> {
+ self.inner.release(None)?;
+ Ok(())
+ }
+}
+
+impl Drop for Acquired {
+ fn drop(&mut self) {
+ if !self.disabled {
+ drop(self.client.release(Some(&self.data)));
+ }
+ }
+}
+
+/// Structure returned from `Client::into_helper_thread` to manage the lifetime
+/// of the helper thread returned, see those associated docs for more info.
+#[derive(Debug)]
+pub struct HelperThread {
+ inner: Option<imp::Helper>,
+ state: Arc<HelperState>,
+}
+
+impl HelperThread {
+ /// Request that the helper thread acquires a token, eventually calling the
+ /// original closure with a token when it's available.
+ ///
+ /// For more information, see the docs on that function.
+ pub fn request_token(&self) {
+ // Indicate that there's one more request for a token and then wake up
+ // the helper thread if it's sleeping.
+ self.state.lock().requests += 1;
+ self.state.cvar.notify_one();
+ }
+}
+
+impl Drop for HelperThread {
+ fn drop(&mut self) {
+ // Flag that the producer half is done so the helper thread should exit
+ // quickly if it's waiting. Wake it up if it's actually waiting
+ self.state.lock().producer_done = true;
+ self.state.cvar.notify_one();
+
+ // ... and afterwards perform any thread cleanup logic
+ self.inner.take().unwrap().join();
+ }
+}
+
+impl HelperState {
+ fn lock(&self) -> MutexGuard<'_, HelperInner> {
+ self.lock.lock().unwrap_or_else(|e| e.into_inner())
+ }
+
+ /// Executes `f` for each request for a token, where `f` is expected to
+ /// block and then provide the original closure with a token once it's
+ /// acquired.
+ ///
+ /// This is an infinite loop until the helper thread is dropped, at which
+ /// point everything should get interrupted.
+ fn for_each_request(&self, mut f: impl FnMut(&HelperState)) {
+ let mut lock = self.lock();
+
+ // We only execute while we could receive requests, but as soon as
+ // that's `false` we're out of here.
+ while !lock.producer_done {
+ // If no one's requested a token then we wait for someone to
+ // request a token.
+ if lock.requests == 0 {
+ lock = self.cvar.wait(lock).unwrap_or_else(|e| e.into_inner());
+ continue;
+ }
+
+ // Consume the request for a token, and then actually acquire a
+ // token after unlocking our lock (not that acquisition happens in
+ // `f`). This ensures that we don't actually hold the lock if we
+ // wait for a long time for a token.
+ lock.requests -= 1;
+ drop(lock);
+ f(self);
+ lock = self.lock();
+ }
+ lock.consumer_done = true;
+ self.cvar.notify_one();
+ }
+
+ fn producer_done(&self) -> bool {
+ self.lock().producer_done
+ }
+}
+
+#[test]
+fn no_helper_deadlock() {
+ let x = crate::Client::new(32).unwrap();
+ let _y = x.clone();
+ std::mem::drop(x.into_helper_thread(|_| {}).unwrap());
+}
diff --git a/vendor/jobserver/src/unix.rs b/vendor/jobserver/src/unix.rs
index e4b143505..b2312b08f 100644
--- a/vendor/jobserver/src/unix.rs
+++ b/vendor/jobserver/src/unix.rs
@@ -1,431 +1,477 @@
-use libc::c_int;
-
-use std::fs::{File, OpenOptions};
-use std::io::{self, Read, Write};
-use std::mem;
-use std::mem::MaybeUninit;
-use std::os::unix::prelude::*;
-use std::path::{Path, PathBuf};
-use std::process::Command;
-use std::ptr;
-use std::sync::{Arc, Once};
-use std::thread::{self, Builder, JoinHandle};
-use std::time::Duration;
-
-#[derive(Debug)]
-pub enum Client {
- /// `--jobserver-auth=R,W`
- Pipe { read: File, write: File },
- /// `--jobserver-auth=fifo:PATH`
- Fifo { file: File, path: PathBuf },
-}
-
-#[derive(Debug)]
-pub struct Acquired {
- byte: u8,
-}
-
-impl Client {
- pub fn new(mut limit: usize) -> io::Result<Client> {
- let client = unsafe { Client::mk()? };
-
- // I don't think the character written here matters, but I could be
- // wrong!
- const BUFFER: [u8; 128] = [b'|'; 128];
-
- let mut write = client.write();
-
- set_nonblocking(write.as_raw_fd(), true)?;
-
- while limit > 0 {
- let n = limit.min(BUFFER.len());
-
- write.write_all(&BUFFER[..n])?;
- limit -= n;
- }
-
- set_nonblocking(write.as_raw_fd(), false)?;
-
- Ok(client)
- }
-
- unsafe fn mk() -> io::Result<Client> {
- let mut pipes = [0; 2];
-
- // Attempt atomically-create-with-cloexec if we can on Linux,
- // detected by using the `syscall` function in `libc` to try to work
- // with as many kernels/glibc implementations as possible.
- #[cfg(target_os = "linux")]
- {
- use std::sync::atomic::{AtomicBool, Ordering};
-
- static PIPE2_AVAILABLE: AtomicBool = AtomicBool::new(true);
- if PIPE2_AVAILABLE.load(Ordering::SeqCst) {
- match libc::syscall(libc::SYS_pipe2, pipes.as_mut_ptr(), libc::O_CLOEXEC) {
- -1 => {
- let err = io::Error::last_os_error();
- if err.raw_os_error() == Some(libc::ENOSYS) {
- PIPE2_AVAILABLE.store(false, Ordering::SeqCst);
- } else {
- return Err(err);
- }
- }
- _ => return Ok(Client::from_fds(pipes[0], pipes[1])),
- }
- }
- }
-
- cvt(libc::pipe(pipes.as_mut_ptr()))?;
- drop(set_cloexec(pipes[0], true));
- drop(set_cloexec(pipes[1], true));
- Ok(Client::from_fds(pipes[0], pipes[1]))
- }
-
- pub unsafe fn open(s: &str) -> Option<Client> {
- Client::from_fifo(s).or_else(|| Client::from_pipe(s))
- }
-
- /// `--jobserver-auth=fifo:PATH`
- fn from_fifo(s: &str) -> Option<Client> {
- let mut parts = s.splitn(2, ':');
- if parts.next().unwrap() != "fifo" {
- return None;
- }
- let path = match parts.next() {
- Some(p) => Path::new(p),
- None => return None,
- };
- let file = match OpenOptions::new().read(true).write(true).open(path) {
- Ok(f) => f,
- Err(_) => return None,
- };
- Some(Client::Fifo {
- file,
- path: path.into(),
- })
- }
-
- /// `--jobserver-auth=R,W`
- unsafe fn from_pipe(s: &str) -> Option<Client> {
- let mut parts = s.splitn(2, ',');
- let read = parts.next().unwrap();
- let write = match parts.next() {
- Some(s) => s,
- None => return None,
- };
-
- let read = match read.parse() {
- Ok(n) => n,
- Err(_) => return None,
- };
- let write = match write.parse() {
- Ok(n) => n,
- Err(_) => return None,
- };
-
- // Ok so we've got two integers that look like file descriptors, but
- // for extra sanity checking let's see if they actually look like
- // instances of a pipe before we return the client.
- //
- // If we're called from `make` *without* the leading + on our rule
- // then we'll have `MAKEFLAGS` env vars but won't actually have
- // access to the file descriptors.
- if is_valid_fd(read) && is_valid_fd(write) {
- drop(set_cloexec(read, true));
- drop(set_cloexec(write, true));
- Some(Client::from_fds(read, write))
- } else {
- None
- }
- }
-
- unsafe fn from_fds(read: c_int, write: c_int) -> Client {
- Client::Pipe {
- read: File::from_raw_fd(read),
- write: File::from_raw_fd(write),
- }
- }
-
- /// Gets the read end of our jobserver client.
- fn read(&self) -> &File {
- match self {
- Client::Pipe { read, .. } => read,
- Client::Fifo { file, .. } => file,
- }
- }
-
- /// Gets the write end of our jobserver client.
- fn write(&self) -> &File {
- match self {
- Client::Pipe { write, .. } => write,
- Client::Fifo { file, .. } => file,
- }
- }
-
- pub fn acquire(&self) -> io::Result<Acquired> {
- // Ignore interrupts and keep trying if that happens
- loop {
- if let Some(token) = self.acquire_allow_interrupts()? {
- return Ok(token);
- }
- }
- }
-
- /// Block waiting for a token, returning `None` if we're interrupted with
- /// EINTR.
- fn acquire_allow_interrupts(&self) -> io::Result<Option<Acquired>> {
- // We don't actually know if the file descriptor here is set in
- // blocking or nonblocking mode. AFAIK all released versions of
- // `make` use blocking fds for the jobserver, but the unreleased
- // version of `make` doesn't. In the unreleased version jobserver
- // fds are set to nonblocking and combined with `pselect`
- // internally.
- //
- // Here we try to be compatible with both strategies. We optimistically
- // try to read from the file descriptor which then may block, return
- // a token or indicate that polling is needed.
- // Blocking reads (if possible) allows the kernel to be more selective
- // about which readers to wake up when a token is written to the pipe.
- //
- // We use `poll` here to block this thread waiting for read
- // readiness, and then afterwards we perform the `read` itself. If
- // the `read` returns that it would block then we start over and try
- // again.
- //
- // Also note that we explicitly don't handle EINTR here. That's used
- // to shut us down, so we otherwise punt all errors upwards.
- unsafe {
- let mut fd: libc::pollfd = mem::zeroed();
- let mut read = self.read();
- fd.fd = read.as_raw_fd();
- fd.events = libc::POLLIN;
- loop {
- let mut buf = [0];
- match read.read(&mut buf) {
- Ok(1) => return Ok(Some(Acquired { byte: buf[0] })),
- Ok(_) => {
- return Err(io::Error::new(
- io::ErrorKind::Other,
- "early EOF on jobserver pipe",
- ))
- }
- Err(e) => match e.kind() {
- io::ErrorKind::WouldBlock => { /* fall through to polling */ }
- io::ErrorKind::Interrupted => return Ok(None),
- _ => return Err(e),
- },
- }
-
- loop {
- fd.revents = 0;
- if libc::poll(&mut fd, 1, -1) == -1 {
- let e = io::Error::last_os_error();
- return match e.kind() {
- io::ErrorKind::Interrupted => Ok(None),
- _ => Err(e),
- };
- }
- if fd.revents != 0 {
- break;
- }
- }
- }
- }
- }
-
- pub fn release(&self, data: Option<&Acquired>) -> io::Result<()> {
- // Note that the fd may be nonblocking but we're going to go ahead
- // and assume that the writes here are always nonblocking (we can
- // always quickly release a token). If that turns out to not be the
- // case we'll get an error anyway!
- let byte = data.map(|d| d.byte).unwrap_or(b'+');
- match self.write().write(&[byte])? {
- 1 => Ok(()),
- _ => Err(io::Error::new(
- io::ErrorKind::Other,
- "failed to write token back to jobserver",
- )),
- }
- }
-
- pub fn string_arg(&self) -> String {
- match self {
- Client::Pipe { read, write } => format!("{},{}", read.as_raw_fd(), write.as_raw_fd()),
- Client::Fifo { path, .. } => format!("fifo:{}", path.to_str().unwrap()),
- }
- }
-
- pub fn available(&self) -> io::Result<usize> {
- let mut len = MaybeUninit::<c_int>::uninit();
- cvt(unsafe { libc::ioctl(self.read().as_raw_fd(), libc::FIONREAD, len.as_mut_ptr()) })?;
- Ok(unsafe { len.assume_init() } as usize)
- }
-
- pub fn configure(&self, cmd: &mut Command) {
- match self {
- // We `File::open`ed it when inheriting from environment,
- // so no need to set cloexec for fifo.
- Client::Fifo { .. } => return,
- Client::Pipe { .. } => {}
- };
- // Here we basically just want to say that in the child process
- // we'll configure the read/write file descriptors to *not* be
- // cloexec, so they're inherited across the exec and specified as
- // integers through `string_arg` above.
- let read = self.read().as_raw_fd();
- let write = self.write().as_raw_fd();
- unsafe {
- cmd.pre_exec(move || {
- set_cloexec(read, false)?;
- set_cloexec(write, false)?;
- Ok(())
- });
- }
- }
-}
-
-#[derive(Debug)]
-pub struct Helper {
- thread: JoinHandle<()>,
- state: Arc<super::HelperState>,
-}
-
-pub(crate) fn spawn_helper(
- client: crate::Client,
- state: Arc<super::HelperState>,
- mut f: Box<dyn FnMut(io::Result<crate::Acquired>) + Send>,
-) -> io::Result<Helper> {
- static USR1_INIT: Once = Once::new();
- let mut err = None;
- USR1_INIT.call_once(|| unsafe {
- let mut new: libc::sigaction = mem::zeroed();
- #[cfg(target_os = "aix")]
- {
- new.sa_union.__su_sigaction = sigusr1_handler;
- }
- #[cfg(not(target_os = "aix"))]
- {
- new.sa_sigaction = sigusr1_handler as usize;
- }
- new.sa_flags = libc::SA_SIGINFO as _;
- if libc::sigaction(libc::SIGUSR1, &new, ptr::null_mut()) != 0 {
- err = Some(io::Error::last_os_error());
- }
- });
-
- if let Some(e) = err.take() {
- return Err(e);
- }
-
- let state2 = state.clone();
- let thread = Builder::new().spawn(move || {
- state2.for_each_request(|helper| loop {
- match client.inner.acquire_allow_interrupts() {
- Ok(Some(data)) => {
- break f(Ok(crate::Acquired {
- client: client.inner.clone(),
- data,
- disabled: false,
- }))
- }
- Err(e) => break f(Err(e)),
- Ok(None) if helper.producer_done() => break,
- Ok(None) => {}
- }
- });
- })?;
-
- Ok(Helper { thread, state })
-}
-
-impl Helper {
- pub fn join(self) {
- let dur = Duration::from_millis(10);
- let mut state = self.state.lock();
- debug_assert!(state.producer_done);
-
- // We need to join our helper thread, and it could be blocked in one
- // of two locations. First is the wait for a request, but the
- // initial drop of `HelperState` will take care of that. Otherwise
- // it may be blocked in `client.acquire()`. We actually have no way
- // of interrupting that, so resort to `pthread_kill` as a fallback.
- // This signal should interrupt any blocking `read` call with
- // `io::ErrorKind::Interrupt` and cause the thread to cleanly exit.
- //
- // Note that we don't do this forever though since there's a chance
- // of bugs, so only do this opportunistically to make a best effort
- // at clearing ourselves up.
- for _ in 0..100 {
- if state.consumer_done {
- break;
- }
- unsafe {
- // Ignore the return value here of `pthread_kill`,
- // apparently on OSX if you kill a dead thread it will
- // return an error, but on other platforms it may not. In
- // that sense we don't actually know if this will succeed or
- // not!
- libc::pthread_kill(self.thread.as_pthread_t() as _, libc::SIGUSR1);
- }
- state = self
- .state
- .cvar
- .wait_timeout(state, dur)
- .unwrap_or_else(|e| e.into_inner())
- .0;
- thread::yield_now(); // we really want the other thread to run
- }
-
- // If we managed to actually see the consumer get done, then we can
- // definitely wait for the thread. Otherwise it's... off in the ether
- // I guess?
- if state.consumer_done {
- drop(self.thread.join());
- }
- }
-}
-
-fn is_valid_fd(fd: c_int) -> bool {
- unsafe { libc::fcntl(fd, libc::F_GETFD) != -1 }
-}
-
-fn set_cloexec(fd: c_int, set: bool) -> io::Result<()> {
- unsafe {
- let previous = cvt(libc::fcntl(fd, libc::F_GETFD))?;
- let new = if set {
- previous | libc::FD_CLOEXEC
- } else {
- previous & !libc::FD_CLOEXEC
- };
- if new != previous {
- cvt(libc::fcntl(fd, libc::F_SETFD, new))?;
- }
- Ok(())
- }
-}
-
-fn set_nonblocking(fd: c_int, set: bool) -> io::Result<()> {
- let status_flag = if set { libc::O_NONBLOCK } else { 0 };
-
- unsafe {
- cvt(libc::fcntl(fd, libc::F_SETFL, status_flag))?;
- }
-
- Ok(())
-}
-
-fn cvt(t: c_int) -> io::Result<c_int> {
- if t == -1 {
- Err(io::Error::last_os_error())
- } else {
- Ok(t)
- }
-}
-
-extern "C" fn sigusr1_handler(
- _signum: c_int,
- _info: *mut libc::siginfo_t,
- _ptr: *mut libc::c_void,
-) {
- // nothing to do
-}
+use libc::c_int;
+
+use crate::FromEnvErrorInner;
+use std::fs::{File, OpenOptions};
+use std::io::{self, Read, Write};
+use std::mem;
+use std::mem::MaybeUninit;
+use std::os::unix::prelude::*;
+use std::path::{Path, PathBuf};
+use std::process::Command;
+use std::ptr;
+use std::sync::{Arc, Once};
+use std::thread::{self, Builder, JoinHandle};
+use std::time::Duration;
+
+#[derive(Debug)]
+pub enum Client {
+ /// `--jobserver-auth=R,W`
+ Pipe { read: File, write: File },
+ /// `--jobserver-auth=fifo:PATH`
+ Fifo { file: File, path: PathBuf },
+}
+
+#[derive(Debug)]
+pub struct Acquired {
+ byte: u8,
+}
+
+impl Client {
+ pub fn new(mut limit: usize) -> io::Result<Client> {
+ let client = unsafe { Client::mk()? };
+
+ // I don't think the character written here matters, but I could be
+ // wrong!
+ const BUFFER: [u8; 128] = [b'|'; 128];
+
+ let mut write = client.write();
+
+ set_nonblocking(write.as_raw_fd(), true)?;
+
+ while limit > 0 {
+ let n = limit.min(BUFFER.len());
+
+ write.write_all(&BUFFER[..n])?;
+ limit -= n;
+ }
+
+ set_nonblocking(write.as_raw_fd(), false)?;
+
+ Ok(client)
+ }
+
+ unsafe fn mk() -> io::Result<Client> {
+ let mut pipes = [0; 2];
+
+ // Attempt atomically-create-with-cloexec if we can on Linux,
+ // detected by using the `syscall` function in `libc` to try to work
+ // with as many kernels/glibc implementations as possible.
+ #[cfg(target_os = "linux")]
+ {
+ use std::sync::atomic::{AtomicBool, Ordering};
+
+ static PIPE2_AVAILABLE: AtomicBool = AtomicBool::new(true);
+ if PIPE2_AVAILABLE.load(Ordering::SeqCst) {
+ match libc::syscall(libc::SYS_pipe2, pipes.as_mut_ptr(), libc::O_CLOEXEC) {
+ -1 => {
+ let err = io::Error::last_os_error();
+ if err.raw_os_error() == Some(libc::ENOSYS) {
+ PIPE2_AVAILABLE.store(false, Ordering::SeqCst);
+ } else {
+ return Err(err);
+ }
+ }
+ _ => return Ok(Client::from_fds(pipes[0], pipes[1])),
+ }
+ }
+ }
+
+ cvt(libc::pipe(pipes.as_mut_ptr()))?;
+ drop(set_cloexec(pipes[0], true));
+ drop(set_cloexec(pipes[1], true));
+ Ok(Client::from_fds(pipes[0], pipes[1]))
+ }
+
+ pub(crate) unsafe fn open(s: &str, check_pipe: bool) -> Result<Client, FromEnvErrorInner> {
+ if let Some(client) = Self::from_fifo(s)? {
+ return Ok(client);
+ }
+ if let Some(client) = Self::from_pipe(s, check_pipe)? {
+ return Ok(client);
+ }
+ Err(FromEnvErrorInner::CannotParse(format!(
+ "expected `fifo:PATH` or `R,W`, found `{s}`"
+ )))
+ }
+
+ /// `--jobserver-auth=fifo:PATH`
+ fn from_fifo(s: &str) -> Result<Option<Client>, FromEnvErrorInner> {
+ let mut parts = s.splitn(2, ':');
+ if parts.next().unwrap() != "fifo" {
+ return Ok(None);
+ }
+ let path_str = parts.next().ok_or_else(|| {
+ FromEnvErrorInner::CannotParse("expected a path after `fifo:`".to_string())
+ })?;
+ let path = Path::new(path_str);
+ let file = OpenOptions::new()
+ .read(true)
+ .write(true)
+ .open(path)
+ .map_err(|err| FromEnvErrorInner::CannotOpenPath(path_str.to_string(), err))?;
+ Ok(Some(Client::Fifo {
+ file,
+ path: path.into(),
+ }))
+ }
+
+ /// `--jobserver-auth=R,W`
+ unsafe fn from_pipe(s: &str, check_pipe: bool) -> Result<Option<Client>, FromEnvErrorInner> {
+ let mut parts = s.splitn(2, ',');
+ let read = parts.next().unwrap();
+ let write = match parts.next() {
+ Some(w) => w,
+ None => return Ok(None),
+ };
+ let read = read
+ .parse()
+ .map_err(|e| FromEnvErrorInner::CannotParse(format!("cannot parse `read` fd: {e}")))?;
+ let write = write
+ .parse()
+ .map_err(|e| FromEnvErrorInner::CannotParse(format!("cannot parse `write` fd: {e}")))?;
+
+ // Ok so we've got two integers that look like file descriptors, but
+ // for extra sanity checking let's see if they actually look like
+ // valid files and instances of a pipe if feature enabled before we
+ // return the client.
+ //
+ // If we're called from `make` *without* the leading + on our rule
+ // then we'll have `MAKEFLAGS` env vars but won't actually have
+ // access to the file descriptors.
+ //
+ // `NotAPipe` is a worse error, return it if it's reported for any of the two fds.
+ match (fd_check(read, check_pipe), fd_check(write, check_pipe)) {
+ (read_err @ Err(FromEnvErrorInner::NotAPipe(..)), _) => read_err?,
+ (_, write_err @ Err(FromEnvErrorInner::NotAPipe(..))) => write_err?,
+ (read_err, write_err) => {
+ read_err?;
+ write_err?;
+ }
+ }
+
+ drop(set_cloexec(read, true));
+ drop(set_cloexec(write, true));
+ Ok(Some(Client::from_fds(read, write)))
+ }
+
+ unsafe fn from_fds(read: c_int, write: c_int) -> Client {
+ Client::Pipe {
+ read: File::from_raw_fd(read),
+ write: File::from_raw_fd(write),
+ }
+ }
+
+ /// Gets the read end of our jobserver client.
+ fn read(&self) -> &File {
+ match self {
+ Client::Pipe { read, .. } => read,
+ Client::Fifo { file, .. } => file,
+ }
+ }
+
+ /// Gets the write end of our jobserver client.
+ fn write(&self) -> &File {
+ match self {
+ Client::Pipe { write, .. } => write,
+ Client::Fifo { file, .. } => file,
+ }
+ }
+
+ pub fn acquire(&self) -> io::Result<Acquired> {
+ // Ignore interrupts and keep trying if that happens
+ loop {
+ if let Some(token) = self.acquire_allow_interrupts()? {
+ return Ok(token);
+ }
+ }
+ }
+
+ /// Block waiting for a token, returning `None` if we're interrupted with
+ /// EINTR.
+ fn acquire_allow_interrupts(&self) -> io::Result<Option<Acquired>> {
+ // We don't actually know if the file descriptor here is set in
+ // blocking or nonblocking mode. AFAIK all released versions of
+ // `make` use blocking fds for the jobserver, but the unreleased
+ // version of `make` doesn't. In the unreleased version jobserver
+ // fds are set to nonblocking and combined with `pselect`
+ // internally.
+ //
+ // Here we try to be compatible with both strategies. We optimistically
+ // try to read from the file descriptor which then may block, return
+ // a token or indicate that polling is needed.
+ // Blocking reads (if possible) allows the kernel to be more selective
+ // about which readers to wake up when a token is written to the pipe.
+ //
+ // We use `poll` here to block this thread waiting for read
+ // readiness, and then afterwards we perform the `read` itself. If
+ // the `read` returns that it would block then we start over and try
+ // again.
+ //
+ // Also note that we explicitly don't handle EINTR here. That's used
+ // to shut us down, so we otherwise punt all errors upwards.
+ unsafe {
+ let mut fd: libc::pollfd = mem::zeroed();
+ let mut read = self.read();
+ fd.fd = read.as_raw_fd();
+ fd.events = libc::POLLIN;
+ loop {
+ let mut buf = [0];
+ match read.read(&mut buf) {
+ Ok(1) => return Ok(Some(Acquired { byte: buf[0] })),
+ Ok(_) => {
+ return Err(io::Error::new(
+ io::ErrorKind::Other,
+ "early EOF on jobserver pipe",
+ ));
+ }
+ Err(e) => match e.kind() {
+ io::ErrorKind::WouldBlock => { /* fall through to polling */ }
+ io::ErrorKind::Interrupted => return Ok(None),
+ _ => return Err(e),
+ },
+ }
+
+ loop {
+ fd.revents = 0;
+ if libc::poll(&mut fd, 1, -1) == -1 {
+ let e = io::Error::last_os_error();
+ return match e.kind() {
+ io::ErrorKind::Interrupted => Ok(None),
+ _ => Err(e),
+ };
+ }
+ if fd.revents != 0 {
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ pub fn release(&self, data: Option<&Acquired>) -> io::Result<()> {
+ // Note that the fd may be nonblocking but we're going to go ahead
+ // and assume that the writes here are always nonblocking (we can
+ // always quickly release a token). If that turns out to not be the
+ // case we'll get an error anyway!
+ let byte = data.map(|d| d.byte).unwrap_or(b'+');
+ match self.write().write(&[byte])? {
+ 1 => Ok(()),
+ _ => Err(io::Error::new(
+ io::ErrorKind::Other,
+ "failed to write token back to jobserver",
+ )),
+ }
+ }
+
+ pub fn string_arg(&self) -> String {
+ match self {
+ Client::Pipe { read, write } => format!("{},{}", read.as_raw_fd(), write.as_raw_fd()),
+ Client::Fifo { path, .. } => format!("fifo:{}", path.to_str().unwrap()),
+ }
+ }
+
+ pub fn available(&self) -> io::Result<usize> {
+ let mut len = MaybeUninit::<c_int>::uninit();
+ cvt(unsafe { libc::ioctl(self.read().as_raw_fd(), libc::FIONREAD, len.as_mut_ptr()) })?;
+ Ok(unsafe { len.assume_init() } as usize)
+ }
+
+ pub fn configure(&self, cmd: &mut Command) {
+ match self {
+ // We `File::open`ed it when inheriting from environment,
+ // so no need to set cloexec for fifo.
+ Client::Fifo { .. } => return,
+ Client::Pipe { .. } => {}
+ };
+ // Here we basically just want to say that in the child process
+ // we'll configure the read/write file descriptors to *not* be
+ // cloexec, so they're inherited across the exec and specified as
+ // integers through `string_arg` above.
+ let read = self.read().as_raw_fd();
+ let write = self.write().as_raw_fd();
+ unsafe {
+ cmd.pre_exec(move || {
+ set_cloexec(read, false)?;
+ set_cloexec(write, false)?;
+ Ok(())
+ });
+ }
+ }
+}
+
+#[derive(Debug)]
+pub struct Helper {
+ thread: JoinHandle<()>,
+ state: Arc<super::HelperState>,
+}
+
+pub(crate) fn spawn_helper(
+ client: crate::Client,
+ state: Arc<super::HelperState>,
+ mut f: Box<dyn FnMut(io::Result<crate::Acquired>) + Send>,
+) -> io::Result<Helper> {
+ static USR1_INIT: Once = Once::new();
+ let mut err = None;
+ USR1_INIT.call_once(|| unsafe {
+ let mut new: libc::sigaction = mem::zeroed();
+ #[cfg(target_os = "aix")]
+ {
+ new.sa_union.__su_sigaction = sigusr1_handler;
+ }
+ #[cfg(not(target_os = "aix"))]
+ {
+ new.sa_sigaction = sigusr1_handler as usize;
+ }
+ new.sa_flags = libc::SA_SIGINFO as _;
+ if libc::sigaction(libc::SIGUSR1, &new, ptr::null_mut()) != 0 {
+ err = Some(io::Error::last_os_error());
+ }
+ });
+
+ if let Some(e) = err.take() {
+ return Err(e);
+ }
+
+ let state2 = state.clone();
+ let thread = Builder::new().spawn(move || {
+ state2.for_each_request(|helper| loop {
+ match client.inner.acquire_allow_interrupts() {
+ Ok(Some(data)) => {
+ break f(Ok(crate::Acquired {
+ client: client.inner.clone(),
+ data,
+ disabled: false,
+ }));
+ }
+ Err(e) => break f(Err(e)),
+ Ok(None) if helper.producer_done() => break,
+ Ok(None) => {}
+ }
+ });
+ })?;
+
+ Ok(Helper { thread, state })
+}
+
+impl Helper {
+ pub fn join(self) {
+ let dur = Duration::from_millis(10);
+ let mut state = self.state.lock();
+ debug_assert!(state.producer_done);
+
+ // We need to join our helper thread, and it could be blocked in one
+ // of two locations. First is the wait for a request, but the
+ // initial drop of `HelperState` will take care of that. Otherwise
+ // it may be blocked in `client.acquire()`. We actually have no way
+ // of interrupting that, so resort to `pthread_kill` as a fallback.
+ // This signal should interrupt any blocking `read` call with
+ // `io::ErrorKind::Interrupt` and cause the thread to cleanly exit.
+ //
+ // Note that we don't do this forever though since there's a chance
+ // of bugs, so only do this opportunistically to make a best effort
+ // at clearing ourselves up.
+ for _ in 0..100 {
+ if state.consumer_done {
+ break;
+ }
+ unsafe {
+ // Ignore the return value here of `pthread_kill`,
+ // apparently on OSX if you kill a dead thread it will
+ // return an error, but on other platforms it may not. In
+ // that sense we don't actually know if this will succeed or
+ // not!
+ libc::pthread_kill(self.thread.as_pthread_t() as _, libc::SIGUSR1);
+ }
+ state = self
+ .state
+ .cvar
+ .wait_timeout(state, dur)
+ .unwrap_or_else(|e| e.into_inner())
+ .0;
+ thread::yield_now(); // we really want the other thread to run
+ }
+
+ // If we managed to actually see the consumer get done, then we can
+ // definitely wait for the thread. Otherwise it's... off in the ether
+ // I guess?
+ if state.consumer_done {
+ drop(self.thread.join());
+ }
+ }
+}
+
+unsafe fn fcntl_check(fd: c_int) -> Result<(), FromEnvErrorInner> {
+ match libc::fcntl(fd, libc::F_GETFD) {
+ -1 => Err(FromEnvErrorInner::CannotOpenFd(
+ fd,
+ io::Error::last_os_error(),
+ )),
+ _ => Ok(()),
+ }
+}
+
+unsafe fn fd_check(fd: c_int, check_pipe: bool) -> Result<(), FromEnvErrorInner> {
+ if check_pipe {
+ let mut stat = mem::zeroed();
+ if libc::fstat(fd, &mut stat) == -1 {
+ let last_os_error = io::Error::last_os_error();
+ fcntl_check(fd)?;
+ Err(FromEnvErrorInner::NotAPipe(fd, Some(last_os_error)))
+ } else {
+ // On android arm and i686 mode_t is u16 and st_mode is u32,
+ // this generates a type mismatch when S_IFIFO (declared as mode_t)
+ // is used in operations with st_mode, so we use this workaround
+ // to get the value of S_IFIFO with the same type of st_mode.
+ #[allow(unused_assignments)]
+ let mut s_ififo = stat.st_mode;
+ s_ififo = libc::S_IFIFO as _;
+ if stat.st_mode & s_ififo == s_ififo {
+ return Ok(());
+ }
+ Err(FromEnvErrorInner::NotAPipe(fd, None))
+ }
+ } else {
+ fcntl_check(fd)
+ }
+}
+
+fn set_cloexec(fd: c_int, set: bool) -> io::Result<()> {
+ unsafe {
+ let previous = cvt(libc::fcntl(fd, libc::F_GETFD))?;
+ let new = if set {
+ previous | libc::FD_CLOEXEC
+ } else {
+ previous & !libc::FD_CLOEXEC
+ };
+ if new != previous {
+ cvt(libc::fcntl(fd, libc::F_SETFD, new))?;
+ }
+ Ok(())
+ }
+}
+
+fn set_nonblocking(fd: c_int, set: bool) -> io::Result<()> {
+ let status_flag = if set { libc::O_NONBLOCK } else { 0 };
+
+ unsafe {
+ cvt(libc::fcntl(fd, libc::F_SETFL, status_flag))?;
+ }
+
+ Ok(())
+}
+
+fn cvt(t: c_int) -> io::Result<c_int> {
+ if t == -1 {
+ Err(io::Error::last_os_error())
+ } else {
+ Ok(t)
+ }
+}
+
+extern "C" fn sigusr1_handler(
+ _signum: c_int,
+ _info: *mut libc::siginfo_t,
+ _ptr: *mut libc::c_void,
+) {
+ // nothing to do
+}
diff --git a/vendor/jobserver/src/wasm.rs b/vendor/jobserver/src/wasm.rs
index 3793bd67c..3dda675fd 100644
--- a/vendor/jobserver/src/wasm.rs
+++ b/vendor/jobserver/src/wasm.rs
@@ -1,95 +1,96 @@
-use std::io;
-use std::process::Command;
-use std::sync::{Arc, Condvar, Mutex};
-use std::thread::{Builder, JoinHandle};
-
-#[derive(Debug)]
-pub struct Client {
- inner: Arc<Inner>,
-}
-
-#[derive(Debug)]
-struct Inner {
- count: Mutex<usize>,
- cvar: Condvar,
-}
-
-#[derive(Debug)]
-pub struct Acquired(());
-
-impl Client {
- pub fn new(limit: usize) -> io::Result<Client> {
- Ok(Client {
- inner: Arc::new(Inner {
- count: Mutex::new(limit),
- cvar: Condvar::new(),
- }),
- })
- }
-
- pub unsafe fn open(_s: &str) -> Option<Client> {
- None
- }
-
- pub fn acquire(&self) -> io::Result<Acquired> {
- let mut lock = self.inner.count.lock().unwrap_or_else(|e| e.into_inner());
- while *lock == 0 {
- lock = self
- .inner
- .cvar
- .wait(lock)
- .unwrap_or_else(|e| e.into_inner());
- }
- *lock -= 1;
- Ok(Acquired(()))
- }
-
- pub fn release(&self, _data: Option<&Acquired>) -> io::Result<()> {
- let mut lock = self.inner.count.lock().unwrap_or_else(|e| e.into_inner());
- *lock += 1;
- drop(lock);
- self.inner.cvar.notify_one();
- Ok(())
- }
-
- pub fn string_arg(&self) -> String {
- panic!(
- "On this platform there is no cross process jobserver support,
- so Client::configure is not supported."
- );
- }
-
- pub fn available(&self) -> io::Result<usize> {
- let lock = self.inner.count.lock().unwrap_or_else(|e| e.into_inner());
- Ok(*lock)
- }
-
- pub fn configure(&self, _cmd: &mut Command) {
- unreachable!();
- }
-}
-
-#[derive(Debug)]
-pub struct Helper {
- thread: JoinHandle<()>,
-}
-
-pub(crate) fn spawn_helper(
- client: crate::Client,
- state: Arc<super::HelperState>,
- mut f: Box<dyn FnMut(io::Result<crate::Acquired>) + Send>,
-) -> io::Result<Helper> {
- let thread = Builder::new().spawn(move || {
- state.for_each_request(|_| f(client.acquire()));
- })?;
-
- Ok(Helper { thread: thread })
-}
-
-impl Helper {
- pub fn join(self) {
- // TODO: this is not correct if the thread is blocked in
- // `client.acquire()`.
- drop(self.thread.join());
- }
-}
+use crate::FromEnvErrorInner;
+use std::io;
+use std::process::Command;
+use std::sync::{Arc, Condvar, Mutex};
+use std::thread::{Builder, JoinHandle};
+
+#[derive(Debug)]
+pub struct Client {
+ inner: Arc<Inner>,
+}
+
+#[derive(Debug)]
+struct Inner {
+ count: Mutex<usize>,
+ cvar: Condvar,
+}
+
+#[derive(Debug)]
+pub struct Acquired(());
+
+impl Client {
+ pub fn new(limit: usize) -> io::Result<Client> {
+ Ok(Client {
+ inner: Arc::new(Inner {
+ count: Mutex::new(limit),
+ cvar: Condvar::new(),
+ }),
+ })
+ }
+
+ pub(crate) unsafe fn open(_s: &str, _check_pipe: bool) -> Result<Client, FromEnvErrorInner> {
+ Err(FromEnvErrorInner::Unsupported)
+ }
+
+ pub fn acquire(&self) -> io::Result<Acquired> {
+ let mut lock = self.inner.count.lock().unwrap_or_else(|e| e.into_inner());
+ while *lock == 0 {
+ lock = self
+ .inner
+ .cvar
+ .wait(lock)
+ .unwrap_or_else(|e| e.into_inner());
+ }
+ *lock -= 1;
+ Ok(Acquired(()))
+ }
+
+ pub fn release(&self, _data: Option<&Acquired>) -> io::Result<()> {
+ let mut lock = self.inner.count.lock().unwrap_or_else(|e| e.into_inner());
+ *lock += 1;
+ drop(lock);
+ self.inner.cvar.notify_one();
+ Ok(())
+ }
+
+ pub fn string_arg(&self) -> String {
+ panic!(
+ "On this platform there is no cross process jobserver support,
+ so Client::configure is not supported."
+ );
+ }
+
+ pub fn available(&self) -> io::Result<usize> {
+ let lock = self.inner.count.lock().unwrap_or_else(|e| e.into_inner());
+ Ok(*lock)
+ }
+
+ pub fn configure(&self, _cmd: &mut Command) {
+ unreachable!();
+ }
+}
+
+#[derive(Debug)]
+pub struct Helper {
+ thread: JoinHandle<()>,
+}
+
+pub(crate) fn spawn_helper(
+ client: crate::Client,
+ state: Arc<super::HelperState>,
+ mut f: Box<dyn FnMut(io::Result<crate::Acquired>) + Send>,
+) -> io::Result<Helper> {
+ let thread = Builder::new().spawn(move || {
+ state.for_each_request(|_| f(client.acquire()));
+ })?;
+
+ Ok(Helper { thread: thread })
+}
+
+impl Helper {
+ pub fn join(self) {
+ // TODO: this is not correct if the thread is blocked in
+ // `client.acquire()`.
+ drop(self.thread.join());
+ }
+}
diff --git a/vendor/jobserver/src/windows.rs b/vendor/jobserver/src/windows.rs
index 6791efea4..bff89c1b0 100644
--- a/vendor/jobserver/src/windows.rs
+++ b/vendor/jobserver/src/windows.rs
@@ -1,266 +1,270 @@
-use std::ffi::CString;
-use std::io;
-use std::process::Command;
-use std::ptr;
-use std::sync::Arc;
-use std::thread::{Builder, JoinHandle};
-
-#[derive(Debug)]
-pub struct Client {
- sem: Handle,
- name: String,
-}
-
-#[derive(Debug)]
-pub struct Acquired;
-
-type BOOL = i32;
-type DWORD = u32;
-type HANDLE = *mut u8;
-type LONG = i32;
-
-const ERROR_ALREADY_EXISTS: DWORD = 183;
-const FALSE: BOOL = 0;
-const INFINITE: DWORD = 0xffffffff;
-const SEMAPHORE_MODIFY_STATE: DWORD = 0x2;
-const SYNCHRONIZE: DWORD = 0x00100000;
-const TRUE: BOOL = 1;
-const WAIT_OBJECT_0: DWORD = 0;
-
-extern "system" {
- fn CloseHandle(handle: HANDLE) -> BOOL;
- fn SetEvent(hEvent: HANDLE) -> BOOL;
- fn WaitForMultipleObjects(
- ncount: DWORD,
- lpHandles: *const HANDLE,
- bWaitAll: BOOL,
- dwMilliseconds: DWORD,
- ) -> DWORD;
- fn CreateEventA(
- lpEventAttributes: *mut u8,
- bManualReset: BOOL,
- bInitialState: BOOL,
- lpName: *const i8,
- ) -> HANDLE;
- fn ReleaseSemaphore(
- hSemaphore: HANDLE,
- lReleaseCount: LONG,
- lpPreviousCount: *mut LONG,
- ) -> BOOL;
- fn CreateSemaphoreA(
- lpEventAttributes: *mut u8,
- lInitialCount: LONG,
- lMaximumCount: LONG,
- lpName: *const i8,
- ) -> HANDLE;
- fn OpenSemaphoreA(dwDesiredAccess: DWORD, bInheritHandle: BOOL, lpName: *const i8) -> HANDLE;
- fn WaitForSingleObject(hHandle: HANDLE, dwMilliseconds: DWORD) -> DWORD;
- #[link_name = "SystemFunction036"]
- fn RtlGenRandom(RandomBuffer: *mut u8, RandomBufferLength: u32) -> u8;
-}
-
-// Note that we ideally would use the `getrandom` crate, but unfortunately
-// that causes build issues when this crate is used in rust-lang/rust (see
-// rust-lang/rust#65014 for more information). As a result we just inline
-// the pretty simple Windows-specific implementation of generating
-// randomness.
-fn getrandom(dest: &mut [u8]) -> io::Result<()> {
- // Prevent overflow of u32
- for chunk in dest.chunks_mut(u32::max_value() as usize) {
- let ret = unsafe { RtlGenRandom(chunk.as_mut_ptr(), chunk.len() as u32) };
- if ret == 0 {
- return Err(io::Error::new(
- io::ErrorKind::Other,
- "failed to generate random bytes",
- ));
- }
- }
- Ok(())
-}
-
-impl Client {
- pub fn new(limit: usize) -> io::Result<Client> {
- // Try a bunch of random semaphore names until we get a unique one,
- // but don't try for too long.
- //
- // Note that `limit == 0` is a valid argument above but Windows
- // won't let us create a semaphore with 0 slots available to it. Get
- // `limit == 0` working by creating a semaphore instead with one
- // slot and then immediately acquire it (without ever releaseing it
- // back).
- for _ in 0..100 {
- let mut bytes = [0; 4];
- getrandom(&mut bytes)?;
- let mut name = format!("__rust_jobserver_semaphore_{}\0", u32::from_ne_bytes(bytes));
- unsafe {
- let create_limit = if limit == 0 { 1 } else { limit };
- let r = CreateSemaphoreA(
- ptr::null_mut(),
- create_limit as LONG,
- create_limit as LONG,
- name.as_ptr() as *const _,
- );
- if r.is_null() {
- return Err(io::Error::last_os_error());
- }
- let handle = Handle(r);
-
- let err = io::Error::last_os_error();
- if err.raw_os_error() == Some(ERROR_ALREADY_EXISTS as i32) {
- continue;
- }
- name.pop(); // chop off the trailing nul
- let client = Client {
- sem: handle,
- name: name,
- };
- if create_limit != limit {
- client.acquire()?;
- }
- return Ok(client);
- }
- }
-
- Err(io::Error::new(
- io::ErrorKind::Other,
- "failed to find a unique name for a semaphore",
- ))
- }
-
- pub unsafe fn open(s: &str) -> Option<Client> {
- let name = match CString::new(s) {
- Ok(s) => s,
- Err(_) => return None,
- };
-
- let sem = OpenSemaphoreA(SYNCHRONIZE | SEMAPHORE_MODIFY_STATE, FALSE, name.as_ptr());
- if sem.is_null() {
- None
- } else {
- Some(Client {
- sem: Handle(sem),
- name: s.to_string(),
- })
- }
- }
-
- pub fn acquire(&self) -> io::Result<Acquired> {
- unsafe {
- let r = WaitForSingleObject(self.sem.0, INFINITE);
- if r == WAIT_OBJECT_0 {
- Ok(Acquired)
- } else {
- Err(io::Error::last_os_error())
- }
- }
- }
-
- pub fn release(&self, _data: Option<&Acquired>) -> io::Result<()> {
- unsafe {
- let r = ReleaseSemaphore(self.sem.0, 1, ptr::null_mut());
- if r != 0 {
- Ok(())
- } else {
- Err(io::Error::last_os_error())
- }
- }
- }
-
- pub fn string_arg(&self) -> String {
- self.name.clone()
- }
-
- pub fn available(&self) -> io::Result<usize> {
- // Can't read value of a semaphore on Windows, so
- // try to acquire without sleeping, since we can find out the
- // old value on release. If acquisiton fails, then available is 0.
- unsafe {
- let r = WaitForSingleObject(self.sem.0, 0);
- if r != WAIT_OBJECT_0 {
- Ok(0)
- } else {
- let mut prev: LONG = 0;
- let r = ReleaseSemaphore(self.sem.0, 1, &mut prev);
- if r != 0 {
- Ok(prev as usize + 1)
- } else {
- Err(io::Error::last_os_error())
- }
- }
- }
- }
-
- pub fn configure(&self, _cmd: &mut Command) {
- // nothing to do here, we gave the name of our semaphore to the
- // child above
- }
-}
-
-#[derive(Debug)]
-struct Handle(HANDLE);
-// HANDLE is a raw ptr, but we're send/sync
-unsafe impl Sync for Handle {}
-unsafe impl Send for Handle {}
-
-impl Drop for Handle {
- fn drop(&mut self) {
- unsafe {
- CloseHandle(self.0);
- }
- }
-}
-
-#[derive(Debug)]
-pub struct Helper {
- event: Arc<Handle>,
- thread: JoinHandle<()>,
-}
-
-pub(crate) fn spawn_helper(
- client: crate::Client,
- state: Arc<super::HelperState>,
- mut f: Box<dyn FnMut(io::Result<crate::Acquired>) + Send>,
-) -> io::Result<Helper> {
- let event = unsafe {
- let r = CreateEventA(ptr::null_mut(), TRUE, FALSE, ptr::null());
- if r.is_null() {
- return Err(io::Error::last_os_error());
- } else {
- Handle(r)
- }
- };
- let event = Arc::new(event);
- let event2 = event.clone();
- let thread = Builder::new().spawn(move || {
- let objects = [event2.0, client.inner.sem.0];
- state.for_each_request(|_| {
- const WAIT_OBJECT_1: u32 = WAIT_OBJECT_0 + 1;
- match unsafe { WaitForMultipleObjects(2, objects.as_ptr(), FALSE, INFINITE) } {
- WAIT_OBJECT_0 => return,
- WAIT_OBJECT_1 => f(Ok(crate::Acquired {
- client: client.inner.clone(),
- data: Acquired,
- disabled: false,
- })),
- _ => f(Err(io::Error::last_os_error())),
- }
- });
- })?;
- Ok(Helper { thread, event })
-}
-
-impl Helper {
- pub fn join(self) {
- // Unlike unix this logic is much easier. If our thread was blocked
- // in waiting for requests it should already be woken up and
- // exiting. Otherwise it's waiting for a token, so we wake it up
- // with a different event that it's also waiting on here. After
- // these two we should be guaranteed the thread is on its way out,
- // so we can safely `join`.
- let r = unsafe { SetEvent(self.event.0) };
- if r == 0 {
- panic!("failed to set event: {}", io::Error::last_os_error());
- }
- drop(self.thread.join());
- }
-}
+use crate::FromEnvErrorInner;
+use std::ffi::CString;
+use std::io;
+use std::process::Command;
+use std::ptr;
+use std::sync::Arc;
+use std::thread::{Builder, JoinHandle};
+
+#[derive(Debug)]
+pub struct Client {
+ sem: Handle,
+ name: String,
+}
+
+#[derive(Debug)]
+pub struct Acquired;
+
+type BOOL = i32;
+type DWORD = u32;
+type HANDLE = *mut u8;
+type LONG = i32;
+
+const ERROR_ALREADY_EXISTS: DWORD = 183;
+const FALSE: BOOL = 0;
+const INFINITE: DWORD = 0xffffffff;
+const SEMAPHORE_MODIFY_STATE: DWORD = 0x2;
+const SYNCHRONIZE: DWORD = 0x00100000;
+const TRUE: BOOL = 1;
+const WAIT_OBJECT_0: DWORD = 0;
+
+extern "system" {
+ fn CloseHandle(handle: HANDLE) -> BOOL;
+ fn SetEvent(hEvent: HANDLE) -> BOOL;
+ fn WaitForMultipleObjects(
+ ncount: DWORD,
+ lpHandles: *const HANDLE,
+ bWaitAll: BOOL,
+ dwMilliseconds: DWORD,
+ ) -> DWORD;
+ fn CreateEventA(
+ lpEventAttributes: *mut u8,
+ bManualReset: BOOL,
+ bInitialState: BOOL,
+ lpName: *const i8,
+ ) -> HANDLE;
+ fn ReleaseSemaphore(
+ hSemaphore: HANDLE,
+ lReleaseCount: LONG,
+ lpPreviousCount: *mut LONG,
+ ) -> BOOL;
+ fn CreateSemaphoreA(
+ lpEventAttributes: *mut u8,
+ lInitialCount: LONG,
+ lMaximumCount: LONG,
+ lpName: *const i8,
+ ) -> HANDLE;
+ fn OpenSemaphoreA(dwDesiredAccess: DWORD, bInheritHandle: BOOL, lpName: *const i8) -> HANDLE;
+ fn WaitForSingleObject(hHandle: HANDLE, dwMilliseconds: DWORD) -> DWORD;
+ #[link_name = "SystemFunction036"]
+ fn RtlGenRandom(RandomBuffer: *mut u8, RandomBufferLength: u32) -> u8;
+}
+
+// Note that we ideally would use the `getrandom` crate, but unfortunately
+// that causes build issues when this crate is used in rust-lang/rust (see
+// rust-lang/rust#65014 for more information). As a result we just inline
+// the pretty simple Windows-specific implementation of generating
+// randomness.
+fn getrandom(dest: &mut [u8]) -> io::Result<()> {
+ // Prevent overflow of u32
+ for chunk in dest.chunks_mut(u32::max_value() as usize) {
+ let ret = unsafe { RtlGenRandom(chunk.as_mut_ptr(), chunk.len() as u32) };
+ if ret == 0 {
+ return Err(io::Error::new(
+ io::ErrorKind::Other,
+ "failed to generate random bytes",
+ ));
+ }
+ }
+ Ok(())
+}
+
+impl Client {
+ pub fn new(limit: usize) -> io::Result<Client> {
+ // Try a bunch of random semaphore names until we get a unique one,
+ // but don't try for too long.
+ //
+ // Note that `limit == 0` is a valid argument above but Windows
+ // won't let us create a semaphore with 0 slots available to it. Get
+ // `limit == 0` working by creating a semaphore instead with one
+ // slot and then immediately acquire it (without ever releaseing it
+ // back).
+ for _ in 0..100 {
+ let mut bytes = [0; 4];
+ getrandom(&mut bytes)?;
+ let mut name = format!("__rust_jobserver_semaphore_{}\0", u32::from_ne_bytes(bytes));
+ unsafe {
+ let create_limit = if limit == 0 { 1 } else { limit };
+ let r = CreateSemaphoreA(
+ ptr::null_mut(),
+ create_limit as LONG,
+ create_limit as LONG,
+ name.as_ptr() as *const _,
+ );
+ if r.is_null() {
+ return Err(io::Error::last_os_error());
+ }
+ let handle = Handle(r);
+
+ let err = io::Error::last_os_error();
+ if err.raw_os_error() == Some(ERROR_ALREADY_EXISTS as i32) {
+ continue;
+ }
+ name.pop(); // chop off the trailing nul
+ let client = Client {
+ sem: handle,
+ name: name,
+ };
+ if create_limit != limit {
+ client.acquire()?;
+ }
+ return Ok(client);
+ }
+ }
+
+ Err(io::Error::new(
+ io::ErrorKind::Other,
+ "failed to find a unique name for a semaphore",
+ ))
+ }
+
+ pub(crate) unsafe fn open(s: &str, _check_pipe: bool) -> Result<Client, FromEnvErrorInner> {
+ let name = match CString::new(s) {
+ Ok(s) => s,
+ Err(e) => return Err(FromEnvErrorInner::CannotParse(e.to_string())),
+ };
+
+ let sem = OpenSemaphoreA(SYNCHRONIZE | SEMAPHORE_MODIFY_STATE, FALSE, name.as_ptr());
+ if sem.is_null() {
+ Err(FromEnvErrorInner::CannotOpenPath(
+ s.to_string(),
+ io::Error::last_os_error(),
+ ))
+ } else {
+ Ok(Client {
+ sem: Handle(sem),
+ name: s.to_string(),
+ })
+ }
+ }
+
+ pub fn acquire(&self) -> io::Result<Acquired> {
+ unsafe {
+ let r = WaitForSingleObject(self.sem.0, INFINITE);
+ if r == WAIT_OBJECT_0 {
+ Ok(Acquired)
+ } else {
+ Err(io::Error::last_os_error())
+ }
+ }
+ }
+
+ pub fn release(&self, _data: Option<&Acquired>) -> io::Result<()> {
+ unsafe {
+ let r = ReleaseSemaphore(self.sem.0, 1, ptr::null_mut());
+ if r != 0 {
+ Ok(())
+ } else {
+ Err(io::Error::last_os_error())
+ }
+ }
+ }
+
+ pub fn string_arg(&self) -> String {
+ self.name.clone()
+ }
+
+ pub fn available(&self) -> io::Result<usize> {
+ // Can't read value of a semaphore on Windows, so
+ // try to acquire without sleeping, since we can find out the
+ // old value on release. If acquisiton fails, then available is 0.
+ unsafe {
+ let r = WaitForSingleObject(self.sem.0, 0);
+ if r != WAIT_OBJECT_0 {
+ Ok(0)
+ } else {
+ let mut prev: LONG = 0;
+ let r = ReleaseSemaphore(self.sem.0, 1, &mut prev);
+ if r != 0 {
+ Ok(prev as usize + 1)
+ } else {
+ Err(io::Error::last_os_error())
+ }
+ }
+ }
+ }
+
+ pub fn configure(&self, _cmd: &mut Command) {
+ // nothing to do here, we gave the name of our semaphore to the
+ // child above
+ }
+}
+
+#[derive(Debug)]
+struct Handle(HANDLE);
+// HANDLE is a raw ptr, but we're send/sync
+unsafe impl Sync for Handle {}
+unsafe impl Send for Handle {}
+
+impl Drop for Handle {
+ fn drop(&mut self) {
+ unsafe {
+ CloseHandle(self.0);
+ }
+ }
+}
+
+#[derive(Debug)]
+pub struct Helper {
+ event: Arc<Handle>,
+ thread: JoinHandle<()>,
+}
+
+pub(crate) fn spawn_helper(
+ client: crate::Client,
+ state: Arc<super::HelperState>,
+ mut f: Box<dyn FnMut(io::Result<crate::Acquired>) + Send>,
+) -> io::Result<Helper> {
+ let event = unsafe {
+ let r = CreateEventA(ptr::null_mut(), TRUE, FALSE, ptr::null());
+ if r.is_null() {
+ return Err(io::Error::last_os_error());
+ } else {
+ Handle(r)
+ }
+ };
+ let event = Arc::new(event);
+ let event2 = event.clone();
+ let thread = Builder::new().spawn(move || {
+ let objects = [event2.0, client.inner.sem.0];
+ state.for_each_request(|_| {
+ const WAIT_OBJECT_1: u32 = WAIT_OBJECT_0 + 1;
+ match unsafe { WaitForMultipleObjects(2, objects.as_ptr(), FALSE, INFINITE) } {
+ WAIT_OBJECT_0 => return,
+ WAIT_OBJECT_1 => f(Ok(crate::Acquired {
+ client: client.inner.clone(),
+ data: Acquired,
+ disabled: false,
+ })),
+ _ => f(Err(io::Error::last_os_error())),
+ }
+ });
+ })?;
+ Ok(Helper { thread, event })
+}
+
+impl Helper {
+ pub fn join(self) {
+ // Unlike unix this logic is much easier. If our thread was blocked
+ // in waiting for requests it should already be woken up and
+ // exiting. Otherwise it's waiting for a token, so we wake it up
+ // with a different event that it's also waiting on here. After
+ // these two we should be guaranteed the thread is on its way out,
+ // so we can safely `join`.
+ let r = unsafe { SetEvent(self.event.0) };
+ if r == 0 {
+ panic!("failed to set event: {}", io::Error::last_os_error());
+ }
+ drop(self.thread.join());
+ }
+}
diff --git a/vendor/jobserver/tests/client-of-myself.rs b/vendor/jobserver/tests/client-of-myself.rs
index 45d57b0b5..bb690b5aa 100644
--- a/vendor/jobserver/tests/client-of-myself.rs
+++ b/vendor/jobserver/tests/client-of-myself.rs
@@ -1,59 +1,59 @@
-use std::env;
-use std::io::prelude::*;
-use std::io::BufReader;
-use std::process::{Command, Stdio};
-use std::sync::mpsc;
-use std::thread;
-
-use jobserver::Client;
-
-macro_rules! t {
- ($e:expr) => {
- match $e {
- Ok(e) => e,
- Err(e) => panic!("{} failed with {}", stringify!($e), e),
- }
- };
-}
-
-fn main() {
- if env::var("I_AM_THE_CLIENT").is_ok() {
- client();
- } else {
- server();
- }
-}
-
-fn server() {
- let me = t!(env::current_exe());
- let client = t!(Client::new(1));
- let mut cmd = Command::new(me);
- cmd.env("I_AM_THE_CLIENT", "1").stdout(Stdio::piped());
- client.configure(&mut cmd);
- let acq = client.acquire().unwrap();
- let mut child = t!(cmd.spawn());
- let stdout = child.stdout.take().unwrap();
- let (tx, rx) = mpsc::channel();
- let t = thread::spawn(move || {
- for line in BufReader::new(stdout).lines() {
- tx.send(t!(line)).unwrap();
- }
- });
-
- for _ in 0..100 {
- assert!(rx.try_recv().is_err());
- }
-
- drop(acq);
- assert_eq!(rx.recv().unwrap(), "hello!");
- t.join().unwrap();
- assert!(rx.recv().is_err());
- client.acquire().unwrap();
-}
-
-fn client() {
- let client = unsafe { Client::from_env().unwrap() };
- let acq = client.acquire().unwrap();
- println!("hello!");
- drop(acq);
-}
+use std::env;
+use std::io::prelude::*;
+use std::io::BufReader;
+use std::process::{Command, Stdio};
+use std::sync::mpsc;
+use std::thread;
+
+use jobserver::Client;
+
+macro_rules! t {
+ ($e:expr) => {
+ match $e {
+ Ok(e) => e,
+ Err(e) => panic!("{} failed with {}", stringify!($e), e),
+ }
+ };
+}
+
+fn main() {
+ if env::var("I_AM_THE_CLIENT").is_ok() {
+ client();
+ } else {
+ server();
+ }
+}
+
+fn server() {
+ let me = t!(env::current_exe());
+ let client = t!(Client::new(1));
+ let mut cmd = Command::new(me);
+ cmd.env("I_AM_THE_CLIENT", "1").stdout(Stdio::piped());
+ client.configure(&mut cmd);
+ let acq = client.acquire().unwrap();
+ let mut child = t!(cmd.spawn());
+ let stdout = child.stdout.take().unwrap();
+ let (tx, rx) = mpsc::channel();
+ let t = thread::spawn(move || {
+ for line in BufReader::new(stdout).lines() {
+ tx.send(t!(line)).unwrap();
+ }
+ });
+
+ for _ in 0..100 {
+ assert!(rx.try_recv().is_err());
+ }
+
+ drop(acq);
+ assert_eq!(rx.recv().unwrap(), "hello!");
+ t.join().unwrap();
+ assert!(rx.recv().is_err());
+ client.acquire().unwrap();
+}
+
+fn client() {
+ let client = unsafe { Client::from_env().unwrap() };
+ let acq = client.acquire().unwrap();
+ println!("hello!");
+ drop(acq);
+}
diff --git a/vendor/jobserver/tests/client.rs b/vendor/jobserver/tests/client.rs
index 2516b8ccf..6c0420a6d 100644
--- a/vendor/jobserver/tests/client.rs
+++ b/vendor/jobserver/tests/client.rs
@@ -1,198 +1,198 @@
-use std::env;
-use std::fs::File;
-use std::io::Write;
-use std::process::Command;
-use std::sync::atomic::{AtomicBool, Ordering};
-use std::sync::mpsc;
-use std::sync::Arc;
-use std::thread;
-
-use futures::future::{self, Future};
-use futures::stream::{self, Stream};
-use jobserver::Client;
-use tokio_core::reactor::Core;
-use tokio_process::CommandExt;
-
-macro_rules! t {
- ($e:expr) => {
- match $e {
- Ok(e) => e,
- Err(e) => panic!("{} failed with {}", stringify!($e), e),
- }
- };
-}
-
-struct Test {
- name: &'static str,
- f: &'static dyn Fn(),
- make_args: &'static [&'static str],
- rule: &'static dyn Fn(&str) -> String,
-}
-
-const TESTS: &[Test] = &[
- Test {
- name: "no j args",
- make_args: &[],
- rule: &|me| me.to_string(),
- f: &|| {
- assert!(unsafe { Client::from_env().is_none() });
- },
- },
- Test {
- name: "no j args with plus",
- make_args: &[],
- rule: &|me| format!("+{}", me),
- f: &|| {
- assert!(unsafe { Client::from_env().is_none() });
- },
- },
- Test {
- name: "j args with plus",
- make_args: &["-j2"],
- rule: &|me| format!("+{}", me),
- f: &|| {
- assert!(unsafe { Client::from_env().is_some() });
- },
- },
- Test {
- name: "acquire",
- make_args: &["-j2"],
- rule: &|me| format!("+{}", me),
- f: &|| {
- let c = unsafe { Client::from_env().unwrap() };
- drop(c.acquire().unwrap());
- drop(c.acquire().unwrap());
- },
- },
- Test {
- name: "acquire3",
- make_args: &["-j3"],
- rule: &|me| format!("+{}", me),
- f: &|| {
- let c = unsafe { Client::from_env().unwrap() };
- let a = c.acquire().unwrap();
- let b = c.acquire().unwrap();
- drop((a, b));
- },
- },
- Test {
- name: "acquire blocks",
- make_args: &["-j2"],
- rule: &|me| format!("+{}", me),
- f: &|| {
- let c = unsafe { Client::from_env().unwrap() };
- let a = c.acquire().unwrap();
- let hit = Arc::new(AtomicBool::new(false));
- let hit2 = hit.clone();
- let (tx, rx) = mpsc::channel();
- let t = thread::spawn(move || {
- tx.send(()).unwrap();
- let _b = c.acquire().unwrap();
- hit2.store(true, Ordering::SeqCst);
- });
- rx.recv().unwrap();
- assert!(!hit.load(Ordering::SeqCst));
- drop(a);
- t.join().unwrap();
- assert!(hit.load(Ordering::SeqCst));
- },
- },
- Test {
- name: "acquire_raw",
- make_args: &["-j2"],
- rule: &|me| format!("+{}", me),
- f: &|| {
- let c = unsafe { Client::from_env().unwrap() };
- c.acquire_raw().unwrap();
- c.release_raw().unwrap();
- },
- },
-];
-
-fn main() {
- if let Ok(test) = env::var("TEST_TO_RUN") {
- return (TESTS.iter().find(|t| t.name == test).unwrap().f)();
- }
-
- let me = t!(env::current_exe());
- let me = me.to_str().unwrap();
- let filter = env::args().nth(1);
-
- let mut core = t!(Core::new());
-
- let futures = TESTS
- .iter()
- .filter(|test| match filter {
- Some(ref s) => test.name.contains(s),
- None => true,
- })
- .map(|test| {
- let td = t!(tempfile::tempdir());
- let makefile = format!(
- "\
-all: export TEST_TO_RUN={}
-all:
-\t{}
-",
- test.name,
- (test.rule)(me)
- );
- t!(t!(File::create(td.path().join("Makefile"))).write_all(makefile.as_bytes()));
- let prog = env::var("MAKE").unwrap_or_else(|_| "make".to_string());
- let mut cmd = Command::new(prog);
- cmd.args(test.make_args);
- cmd.current_dir(td.path());
- future::lazy(move || {
- cmd.output_async().map(move |e| {
- drop(td);
- (test, e)
- })
- })
- })
- .collect::<Vec<_>>();
-
- println!("\nrunning {} tests\n", futures.len());
-
- let stream = stream::iter(futures.into_iter().map(Ok)).buffer_unordered(num_cpus::get());
-
- let mut failures = Vec::new();
- t!(core.run(stream.for_each(|(test, output)| {
- if output.status.success() {
- println!("test {} ... ok", test.name);
- } else {
- println!("test {} ... FAIL", test.name);
- failures.push((test, output));
- }
- Ok(())
- })));
-
- if failures.is_empty() {
- println!("\ntest result: ok\n");
- return;
- }
-
- println!("\n----------- failures");
-
- for (test, output) in failures {
- println!("test {}", test.name);
- let stdout = String::from_utf8_lossy(&output.stdout);
- let stderr = String::from_utf8_lossy(&output.stderr);
-
- println!("\texit status: {}", output.status);
- if !stdout.is_empty() {
- println!("\tstdout ===");
- for line in stdout.lines() {
- println!("\t\t{}", line);
- }
- }
-
- if !stderr.is_empty() {
- println!("\tstderr ===");
- for line in stderr.lines() {
- println!("\t\t{}", line);
- }
- }
- }
-
- std::process::exit(4);
-}
+use std::env;
+use std::fs::File;
+use std::io::Write;
+use std::process::Command;
+use std::sync::atomic::{AtomicBool, Ordering};
+use std::sync::mpsc;
+use std::sync::Arc;
+use std::thread;
+
+use futures::future::{self, Future};
+use futures::stream::{self, Stream};
+use jobserver::Client;
+use tokio_core::reactor::Core;
+use tokio_process::CommandExt;
+
+macro_rules! t {
+ ($e:expr) => {
+ match $e {
+ Ok(e) => e,
+ Err(e) => panic!("{} failed with {}", stringify!($e), e),
+ }
+ };
+}
+
+struct Test {
+ name: &'static str,
+ f: &'static dyn Fn(),
+ make_args: &'static [&'static str],
+ rule: &'static dyn Fn(&str) -> String,
+}
+
+const TESTS: &[Test] = &[
+ Test {
+ name: "no j args",
+ make_args: &[],
+ rule: &|me| me.to_string(),
+ f: &|| {
+ assert!(unsafe { Client::from_env().is_none() });
+ },
+ },
+ Test {
+ name: "no j args with plus",
+ make_args: &[],
+ rule: &|me| format!("+{}", me),
+ f: &|| {
+ assert!(unsafe { Client::from_env().is_none() });
+ },
+ },
+ Test {
+ name: "j args with plus",
+ make_args: &["-j2"],
+ rule: &|me| format!("+{}", me),
+ f: &|| {
+ assert!(unsafe { Client::from_env().is_some() });
+ },
+ },
+ Test {
+ name: "acquire",
+ make_args: &["-j2"],
+ rule: &|me| format!("+{}", me),
+ f: &|| {
+ let c = unsafe { Client::from_env().unwrap() };
+ drop(c.acquire().unwrap());
+ drop(c.acquire().unwrap());
+ },
+ },
+ Test {
+ name: "acquire3",
+ make_args: &["-j3"],
+ rule: &|me| format!("+{}", me),
+ f: &|| {
+ let c = unsafe { Client::from_env().unwrap() };
+ let a = c.acquire().unwrap();
+ let b = c.acquire().unwrap();
+ drop((a, b));
+ },
+ },
+ Test {
+ name: "acquire blocks",
+ make_args: &["-j2"],
+ rule: &|me| format!("+{}", me),
+ f: &|| {
+ let c = unsafe { Client::from_env().unwrap() };
+ let a = c.acquire().unwrap();
+ let hit = Arc::new(AtomicBool::new(false));
+ let hit2 = hit.clone();
+ let (tx, rx) = mpsc::channel();
+ let t = thread::spawn(move || {
+ tx.send(()).unwrap();
+ let _b = c.acquire().unwrap();
+ hit2.store(true, Ordering::SeqCst);
+ });
+ rx.recv().unwrap();
+ assert!(!hit.load(Ordering::SeqCst));
+ drop(a);
+ t.join().unwrap();
+ assert!(hit.load(Ordering::SeqCst));
+ },
+ },
+ Test {
+ name: "acquire_raw",
+ make_args: &["-j2"],
+ rule: &|me| format!("+{}", me),
+ f: &|| {
+ let c = unsafe { Client::from_env().unwrap() };
+ c.acquire_raw().unwrap();
+ c.release_raw().unwrap();
+ },
+ },
+];
+
+fn main() {
+ if let Ok(test) = env::var("TEST_TO_RUN") {
+ return (TESTS.iter().find(|t| t.name == test).unwrap().f)();
+ }
+
+ let me = t!(env::current_exe());
+ let me = me.to_str().unwrap();
+ let filter = env::args().nth(1);
+
+ let mut core = t!(Core::new());
+
+ let futures = TESTS
+ .iter()
+ .filter(|test| match filter {
+ Some(ref s) => test.name.contains(s),
+ None => true,
+ })
+ .map(|test| {
+ let td = t!(tempfile::tempdir());
+ let makefile = format!(
+ "\
+all: export TEST_TO_RUN={}
+all:
+\t{}
+",
+ test.name,
+ (test.rule)(me)
+ );
+ t!(t!(File::create(td.path().join("Makefile"))).write_all(makefile.as_bytes()));
+ let prog = env::var("MAKE").unwrap_or_else(|_| "make".to_string());
+ let mut cmd = Command::new(prog);
+ cmd.args(test.make_args);
+ cmd.current_dir(td.path());
+ future::lazy(move || {
+ cmd.output_async().map(move |e| {
+ drop(td);
+ (test, e)
+ })
+ })
+ })
+ .collect::<Vec<_>>();
+
+ println!("\nrunning {} tests\n", futures.len());
+
+ let stream = stream::iter(futures.into_iter().map(Ok)).buffer_unordered(num_cpus::get());
+
+ let mut failures = Vec::new();
+ t!(core.run(stream.for_each(|(test, output)| {
+ if output.status.success() {
+ println!("test {} ... ok", test.name);
+ } else {
+ println!("test {} ... FAIL", test.name);
+ failures.push((test, output));
+ }
+ Ok(())
+ })));
+
+ if failures.is_empty() {
+ println!("\ntest result: ok\n");
+ return;
+ }
+
+ println!("\n----------- failures");
+
+ for (test, output) in failures {
+ println!("test {}", test.name);
+ let stdout = String::from_utf8_lossy(&output.stdout);
+ let stderr = String::from_utf8_lossy(&output.stderr);
+
+ println!("\texit status: {}", output.status);
+ if !stdout.is_empty() {
+ println!("\tstdout ===");
+ for line in stdout.lines() {
+ println!("\t\t{}", line);
+ }
+ }
+
+ if !stderr.is_empty() {
+ println!("\tstderr ===");
+ for line in stderr.lines() {
+ println!("\t\t{}", line);
+ }
+ }
+ }
+
+ std::process::exit(4);
+}
diff --git a/vendor/jobserver/tests/helper.rs b/vendor/jobserver/tests/helper.rs
index 0b3ba88a7..ef4b62da5 100644
--- a/vendor/jobserver/tests/helper.rs
+++ b/vendor/jobserver/tests/helper.rs
@@ -1,77 +1,77 @@
-use jobserver::Client;
-use std::sync::atomic::*;
-use std::sync::mpsc;
-use std::sync::*;
-
-macro_rules! t {
- ($e:expr) => {
- match $e {
- Ok(e) => e,
- Err(e) => panic!("{} failed with {}", stringify!($e), e),
- }
- };
-}
-
-#[test]
-fn helper_smoke() {
- let client = t!(Client::new(1));
- drop(client.clone().into_helper_thread(|_| ()).unwrap());
- drop(client.clone().into_helper_thread(|_| ()).unwrap());
- drop(client.clone().into_helper_thread(|_| ()).unwrap());
- drop(client.clone().into_helper_thread(|_| ()).unwrap());
- drop(client.clone().into_helper_thread(|_| ()).unwrap());
- drop(client.into_helper_thread(|_| ()).unwrap());
-}
-
-#[test]
-fn acquire() {
- let (tx, rx) = mpsc::channel();
- let client = t!(Client::new(1));
- let helper = client
- .into_helper_thread(move |a| drop(tx.send(a)))
- .unwrap();
- assert!(rx.try_recv().is_err());
- helper.request_token();
- rx.recv().unwrap().unwrap();
- helper.request_token();
- rx.recv().unwrap().unwrap();
-
- helper.request_token();
- helper.request_token();
- rx.recv().unwrap().unwrap();
- rx.recv().unwrap().unwrap();
-
- helper.request_token();
- helper.request_token();
- drop(helper);
-}
-
-#[test]
-fn prompt_shutdown() {
- for _ in 0..100 {
- let client = jobserver::Client::new(4).unwrap();
- let count = Arc::new(AtomicU32::new(0));
- let count2 = count.clone();
- let tokens = Arc::new(Mutex::new(Vec::new()));
- let helper = client
- .into_helper_thread(move |token| {
- tokens.lock().unwrap().push(token);
- count2.fetch_add(1, Ordering::SeqCst);
- })
- .unwrap();
-
- // Request more tokens than what are available.
- for _ in 0..5 {
- helper.request_token();
- }
- // Wait for at least some of the requests to finish.
- while count.load(Ordering::SeqCst) < 3 {
- std::thread::yield_now();
- }
- // Drop helper
- let t = std::time::Instant::now();
- drop(helper);
- let d = t.elapsed();
- assert!(d.as_secs_f64() < 0.5);
- }
-}
+use jobserver::Client;
+use std::sync::atomic::*;
+use std::sync::mpsc;
+use std::sync::*;
+
+macro_rules! t {
+ ($e:expr) => {
+ match $e {
+ Ok(e) => e,
+ Err(e) => panic!("{} failed with {}", stringify!($e), e),
+ }
+ };
+}
+
+#[test]
+fn helper_smoke() {
+ let client = t!(Client::new(1));
+ drop(client.clone().into_helper_thread(|_| ()).unwrap());
+ drop(client.clone().into_helper_thread(|_| ()).unwrap());
+ drop(client.clone().into_helper_thread(|_| ()).unwrap());
+ drop(client.clone().into_helper_thread(|_| ()).unwrap());
+ drop(client.clone().into_helper_thread(|_| ()).unwrap());
+ drop(client.into_helper_thread(|_| ()).unwrap());
+}
+
+#[test]
+fn acquire() {
+ let (tx, rx) = mpsc::channel();
+ let client = t!(Client::new(1));
+ let helper = client
+ .into_helper_thread(move |a| drop(tx.send(a)))
+ .unwrap();
+ assert!(rx.try_recv().is_err());
+ helper.request_token();
+ rx.recv().unwrap().unwrap();
+ helper.request_token();
+ rx.recv().unwrap().unwrap();
+
+ helper.request_token();
+ helper.request_token();
+ rx.recv().unwrap().unwrap();
+ rx.recv().unwrap().unwrap();
+
+ helper.request_token();
+ helper.request_token();
+ drop(helper);
+}
+
+#[test]
+fn prompt_shutdown() {
+ for _ in 0..100 {
+ let client = jobserver::Client::new(4).unwrap();
+ let count = Arc::new(AtomicU32::new(0));
+ let count2 = count.clone();
+ let tokens = Arc::new(Mutex::new(Vec::new()));
+ let helper = client
+ .into_helper_thread(move |token| {
+ tokens.lock().unwrap().push(token);
+ count2.fetch_add(1, Ordering::SeqCst);
+ })
+ .unwrap();
+
+ // Request more tokens than what are available.
+ for _ in 0..5 {
+ helper.request_token();
+ }
+ // Wait for at least some of the requests to finish.
+ while count.load(Ordering::SeqCst) < 3 {
+ std::thread::yield_now();
+ }
+ // Drop helper
+ let t = std::time::Instant::now();
+ drop(helper);
+ let d = t.elapsed();
+ assert!(d.as_secs_f64() < 0.5);
+ }
+}
diff --git a/vendor/jobserver/tests/make-as-a-client.rs b/vendor/jobserver/tests/make-as-a-client.rs
index 4faac5b88..621754dec 100644
--- a/vendor/jobserver/tests/make-as-a-client.rs
+++ b/vendor/jobserver/tests/make-as-a-client.rs
@@ -1,81 +1,81 @@
-use std::env;
-use std::fs::File;
-use std::io::prelude::*;
-use std::net::{TcpListener, TcpStream};
-use std::process::Command;
-
-use jobserver::Client;
-
-macro_rules! t {
- ($e:expr) => {
- match $e {
- Ok(e) => e,
- Err(e) => panic!("{} failed with {}", stringify!($e), e),
- }
- };
-}
-
-fn main() {
- if env::var("_DO_THE_TEST").is_ok() {
- std::process::exit(
- Command::new(env::var_os("MAKE").unwrap())
- .env("MAKEFLAGS", env::var_os("CARGO_MAKEFLAGS").unwrap())
- .env_remove("_DO_THE_TEST")
- .args(&env::args_os().skip(1).collect::<Vec<_>>())
- .status()
- .unwrap()
- .code()
- .unwrap_or(1),
- );
- }
-
- if let Ok(s) = env::var("TEST_ADDR") {
- let mut contents = Vec::new();
- t!(t!(TcpStream::connect(&s)).read_to_end(&mut contents));
- return;
- }
-
- let c = t!(Client::new(1));
- let td = tempfile::tempdir().unwrap();
-
- let prog = env::var("MAKE").unwrap_or_else(|_| "make".to_string());
-
- let me = t!(env::current_exe());
- let me = me.to_str().unwrap();
-
- let mut cmd = Command::new(&me);
- cmd.current_dir(td.path());
- cmd.env("MAKE", prog);
- cmd.env("_DO_THE_TEST", "1");
-
- t!(t!(File::create(td.path().join("Makefile"))).write_all(
- format!(
- "\
-all: foo bar
-foo:
-\t{0}
-bar:
-\t{0}
-",
- me
- )
- .as_bytes()
- ));
-
- // We're leaking one extra token to `make` sort of violating the makefile
- // jobserver protocol. It has the desired effect though.
- c.configure(&mut cmd);
-
- let listener = t!(TcpListener::bind("127.0.0.1:0"));
- let addr = t!(listener.local_addr());
- cmd.env("TEST_ADDR", addr.to_string());
- let mut child = t!(cmd.spawn());
-
- // We should get both connections as the two programs should be run
- // concurrently.
- let a = t!(listener.accept());
- let b = t!(listener.accept());
- drop((a, b));
-
- assert!(t!(child.wait()).success());
-}
+use std::env;
+use std::fs::File;
+use std::io::prelude::*;
+use std::net::{TcpListener, TcpStream};
+use std::process::Command;
+
+use jobserver::Client;
+
+macro_rules! t {
+ ($e:expr) => {
+ match $e {
+ Ok(e) => e,
+ Err(e) => panic!("{} failed with {}", stringify!($e), e),
+ }
+ };
+}
+
+fn main() {
+ if env::var("_DO_THE_TEST").is_ok() {
+ std::process::exit(
+ Command::new(env::var_os("MAKE").unwrap())
+ .env("MAKEFLAGS", env::var_os("CARGO_MAKEFLAGS").unwrap())
+ .env_remove("_DO_THE_TEST")
+ .args(&env::args_os().skip(1).collect::<Vec<_>>())
+ .status()
+ .unwrap()
+ .code()
+ .unwrap_or(1),
+ );
+ }
+
+ if let Ok(s) = env::var("TEST_ADDR") {
+ let mut contents = Vec::new();
+ t!(t!(TcpStream::connect(&s)).read_to_end(&mut contents));
+ return;
+ }
+
+ let c = t!(Client::new(1));
+ let td = tempfile::tempdir().unwrap();
+
+ let prog = env::var("MAKE").unwrap_or_else(|_| "make".to_string());
+
+ let me = t!(env::current_exe());
+ let me = me.to_str().unwrap();
+
+ let mut cmd = Command::new(&me);
+ cmd.current_dir(td.path());
+ cmd.env("MAKE", prog);
+ cmd.env("_DO_THE_TEST", "1");
+
+ t!(t!(File::create(td.path().join("Makefile"))).write_all(
+ format!(
+ "\
+all: foo bar
+foo:
+\t{0}
+bar:
+\t{0}
+",
+ me
+ )
+ .as_bytes()
+ ));
+
+ // We're leaking one extra token to `make` sort of violating the makefile
+ // jobserver protocol. It has the desired effect though.
+ c.configure(&mut cmd);
+
+ let listener = t!(TcpListener::bind("127.0.0.1:0"));
+ let addr = t!(listener.local_addr());
+ cmd.env("TEST_ADDR", addr.to_string());
+ let mut child = t!(cmd.spawn());
+
+ // We should get both connections as the two programs should be run
+ // concurrently.
+ let a = t!(listener.accept());
+ let b = t!(listener.accept());
+ drop((a, b));
+
+ assert!(t!(child.wait()).success());
+}
diff --git a/vendor/jobserver/tests/server.rs b/vendor/jobserver/tests/server.rs
index 70ea218fc..862f66cad 100644
--- a/vendor/jobserver/tests/server.rs
+++ b/vendor/jobserver/tests/server.rs
@@ -1,181 +1,181 @@
-use std::env;
-use std::fs::File;
-use std::io::prelude::*;
-use std::process::Command;
-use std::sync::atomic::{AtomicBool, Ordering};
-use std::sync::mpsc;
-use std::sync::Arc;
-use std::thread;
-
-use jobserver::Client;
-
-macro_rules! t {
- ($e:expr) => {
- match $e {
- Ok(e) => e,
- Err(e) => panic!("{} failed with {}", stringify!($e), e),
- }
- };
-}
-
-#[test]
-fn server_smoke() {
- let c = t!(Client::new(1));
- drop(c.acquire().unwrap());
- drop(c.acquire().unwrap());
-}
-
-#[test]
-fn server_multiple() {
- let c = t!(Client::new(2));
- let a = c.acquire().unwrap();
- let b = c.acquire().unwrap();
- drop((a, b));
-}
-
-#[test]
-fn server_available() {
- let c = t!(Client::new(10));
- assert_eq!(c.available().unwrap(), 10);
- let a = c.acquire().unwrap();
- assert_eq!(c.available().unwrap(), 9);
- drop(a);
- assert_eq!(c.available().unwrap(), 10);
-}
-
-#[test]
-fn server_none_available() {
- let c = t!(Client::new(2));
- assert_eq!(c.available().unwrap(), 2);
- let a = c.acquire().unwrap();
- assert_eq!(c.available().unwrap(), 1);
- let b = c.acquire().unwrap();
- assert_eq!(c.available().unwrap(), 0);
- drop(a);
- assert_eq!(c.available().unwrap(), 1);
- drop(b);
- assert_eq!(c.available().unwrap(), 2);
-}
-
-#[test]
-fn server_blocks() {
- let c = t!(Client::new(1));
- let a = c.acquire().unwrap();
- let hit = Arc::new(AtomicBool::new(false));
- let hit2 = hit.clone();
- let (tx, rx) = mpsc::channel();
- let t = thread::spawn(move || {
- tx.send(()).unwrap();
- let _b = c.acquire().unwrap();
- hit2.store(true, Ordering::SeqCst);
- });
- rx.recv().unwrap();
- assert!(!hit.load(Ordering::SeqCst));
- drop(a);
- t.join().unwrap();
- assert!(hit.load(Ordering::SeqCst));
-}
-
-#[test]
-fn make_as_a_single_thread_client() {
- let c = t!(Client::new(1));
- let td = tempfile::tempdir().unwrap();
-
- let prog = env::var("MAKE").unwrap_or_else(|_| "make".to_string());
- let mut cmd = Command::new(prog);
- cmd.current_dir(td.path());
-
- t!(t!(File::create(td.path().join("Makefile"))).write_all(
- b"
-all: foo bar
-foo:
-\techo foo
-bar:
-\techo bar
-"
- ));
-
- // The jobserver protocol means that the `make` process itself "runs with a
- // token", so we acquire our one token to drain the jobserver, and this
- // should mean that `make` itself never has a second token available to it.
- let _a = c.acquire();
- c.configure(&mut cmd);
- let output = t!(cmd.output());
- println!(
- "\n\t=== stderr\n\t\t{}",
- String::from_utf8_lossy(&output.stderr).replace("\n", "\n\t\t")
- );
- println!(
- "\t=== stdout\n\t\t{}",
- String::from_utf8_lossy(&output.stdout).replace("\n", "\n\t\t")
- );
-
- assert!(output.status.success());
- assert!(output.stderr.is_empty());
-
- let stdout = String::from_utf8_lossy(&output.stdout).replace("\r\n", "\n");
- let a = "\
-echo foo
-foo
-echo bar
-bar
-";
- let b = "\
-echo bar
-bar
-echo foo
-foo
-";
-
- assert!(stdout == a || stdout == b);
-}
-
-#[test]
-fn make_as_a_multi_thread_client() {
- let c = t!(Client::new(1));
- let td = tempfile::tempdir().unwrap();
-
- let prog = env::var("MAKE").unwrap_or_else(|_| "make".to_string());
- let mut cmd = Command::new(prog);
- cmd.current_dir(td.path());
-
- t!(t!(File::create(td.path().join("Makefile"))).write_all(
- b"
-all: foo bar
-foo:
-\techo foo
-bar:
-\techo bar
-"
- ));
-
- // We're leaking one extra token to `make` sort of violating the makefile
- // jobserver protocol. It has the desired effect though.
- c.configure(&mut cmd);
- let output = t!(cmd.output());
- println!(
- "\n\t=== stderr\n\t\t{}",
- String::from_utf8_lossy(&output.stderr).replace("\n", "\n\t\t")
- );
- println!(
- "\t=== stdout\n\t\t{}",
- String::from_utf8_lossy(&output.stdout).replace("\n", "\n\t\t")
- );
-
- assert!(output.status.success());
-}
-
-#[test]
-fn zero_client() {
- let client = t!(Client::new(0));
- let (tx, rx) = mpsc::channel();
- let helper = client
- .into_helper_thread(move |a| drop(tx.send(a)))
- .unwrap();
- helper.request_token();
- helper.request_token();
-
- for _ in 0..1000 {
- assert!(rx.try_recv().is_err());
- }
-}
+use std::env;
+use std::fs::File;
+use std::io::prelude::*;
+use std::process::Command;
+use std::sync::atomic::{AtomicBool, Ordering};
+use std::sync::mpsc;
+use std::sync::Arc;
+use std::thread;
+
+use jobserver::Client;
+
+macro_rules! t {
+ ($e:expr) => {
+ match $e {
+ Ok(e) => e,
+ Err(e) => panic!("{} failed with {}", stringify!($e), e),
+ }
+ };
+}
+
+#[test]
+fn server_smoke() {
+ let c = t!(Client::new(1));
+ drop(c.acquire().unwrap());
+ drop(c.acquire().unwrap());
+}
+
+#[test]
+fn server_multiple() {
+ let c = t!(Client::new(2));
+ let a = c.acquire().unwrap();
+ let b = c.acquire().unwrap();
+ drop((a, b));
+}
+
+#[test]
+fn server_available() {
+ let c = t!(Client::new(10));
+ assert_eq!(c.available().unwrap(), 10);
+ let a = c.acquire().unwrap();
+ assert_eq!(c.available().unwrap(), 9);
+ drop(a);
+ assert_eq!(c.available().unwrap(), 10);
+}
+
+#[test]
+fn server_none_available() {
+ let c = t!(Client::new(2));
+ assert_eq!(c.available().unwrap(), 2);
+ let a = c.acquire().unwrap();
+ assert_eq!(c.available().unwrap(), 1);
+ let b = c.acquire().unwrap();
+ assert_eq!(c.available().unwrap(), 0);
+ drop(a);
+ assert_eq!(c.available().unwrap(), 1);
+ drop(b);
+ assert_eq!(c.available().unwrap(), 2);
+}
+
+#[test]
+fn server_blocks() {
+ let c = t!(Client::new(1));
+ let a = c.acquire().unwrap();
+ let hit = Arc::new(AtomicBool::new(false));
+ let hit2 = hit.clone();
+ let (tx, rx) = mpsc::channel();
+ let t = thread::spawn(move || {
+ tx.send(()).unwrap();
+ let _b = c.acquire().unwrap();
+ hit2.store(true, Ordering::SeqCst);
+ });
+ rx.recv().unwrap();
+ assert!(!hit.load(Ordering::SeqCst));
+ drop(a);
+ t.join().unwrap();
+ assert!(hit.load(Ordering::SeqCst));
+}
+
+#[test]
+fn make_as_a_single_thread_client() {
+ let c = t!(Client::new(1));
+ let td = tempfile::tempdir().unwrap();
+
+ let prog = env::var("MAKE").unwrap_or_else(|_| "make".to_string());
+ let mut cmd = Command::new(prog);
+ cmd.current_dir(td.path());
+
+ t!(t!(File::create(td.path().join("Makefile"))).write_all(
+ b"
+all: foo bar
+foo:
+\techo foo
+bar:
+\techo bar
+"
+ ));
+
+ // The jobserver protocol means that the `make` process itself "runs with a
+ // token", so we acquire our one token to drain the jobserver, and this
+ // should mean that `make` itself never has a second token available to it.
+ let _a = c.acquire();
+ c.configure(&mut cmd);
+ let output = t!(cmd.output());
+ println!(
+ "\n\t=== stderr\n\t\t{}",
+ String::from_utf8_lossy(&output.stderr).replace("\n", "\n\t\t")
+ );
+ println!(
+ "\t=== stdout\n\t\t{}",
+ String::from_utf8_lossy(&output.stdout).replace("\n", "\n\t\t")
+ );
+
+ assert!(output.status.success());
+ assert!(output.stderr.is_empty());
+
+ let stdout = String::from_utf8_lossy(&output.stdout).replace("\r\n", "\n");
+ let a = "\
+echo foo
+foo
+echo bar
+bar
+";
+ let b = "\
+echo bar
+bar
+echo foo
+foo
+";
+
+ assert!(stdout == a || stdout == b);
+}
+
+#[test]
+fn make_as_a_multi_thread_client() {
+ let c = t!(Client::new(1));
+ let td = tempfile::tempdir().unwrap();
+
+ let prog = env::var("MAKE").unwrap_or_else(|_| "make".to_string());
+ let mut cmd = Command::new(prog);
+ cmd.current_dir(td.path());
+
+ t!(t!(File::create(td.path().join("Makefile"))).write_all(
+ b"
+all: foo bar
+foo:
+\techo foo
+bar:
+\techo bar
+"
+ ));
+
+ // We're leaking one extra token to `make` sort of violating the makefile
+ // jobserver protocol. It has the desired effect though.
+ c.configure(&mut cmd);
+ let output = t!(cmd.output());
+ println!(
+ "\n\t=== stderr\n\t\t{}",
+ String::from_utf8_lossy(&output.stderr).replace("\n", "\n\t\t")
+ );
+ println!(
+ "\t=== stdout\n\t\t{}",
+ String::from_utf8_lossy(&output.stdout).replace("\n", "\n\t\t")
+ );
+
+ assert!(output.status.success());
+}
+
+#[test]
+fn zero_client() {
+ let client = t!(Client::new(0));
+ let (tx, rx) = mpsc::channel();
+ let helper = client
+ .into_helper_thread(move |a| drop(tx.send(a)))
+ .unwrap();
+ helper.request_token();
+ helper.request_token();
+
+ for _ in 0..1000 {
+ assert!(rx.try_recv().is_err());
+ }
+}
diff --git a/vendor/kstring/.cargo-checksum.json b/vendor/kstring/.cargo-checksum.json
new file mode 100644
index 000000000..322069c76
--- /dev/null
+++ b/vendor/kstring/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.lock":"bb3f1dfc847c9f47c89a5c465a9e91ed68c42695bf80ae147c6c1ea4d3de9928","Cargo.toml":"d6aa48214500ad0cf5de9c904609af1dd6ea2fe2068b405237f9f2576df3c600","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6a5dfb0adf37850239f4b2388a79355c77b625d6c5542dea7743ac5033efaba2","README.md":"dcf7c8593f78a8e5d6cdb520c4c4499b229bdfc93bedcdfb22434b0e0b311d4a","benches/access.rs":"356362c7d1d6517e2e495be2c9edee5130db5aa8dee02dfab053b1374e91326a","benches/clone.rs":"ce6430a1da50da96d7f94b7d9912cf28f28ba4a1baa976f62d6b211c5729184e","examples/bench.rs":"01056ee7b3bca2f9525636080ccdc5d8b513934e5c001eb0b8beb6214c2bac88","src/backend.rs":"6f3ec727cae210c04c720b1ed77de3d4b21713a920aa3ee620861eeadd91ae31","src/lib.rs":"9932b5d3ed4440e2d167b1fff1f835ef0eb51ad0a47a64bde38c0bf5aee60c6d","src/stack.rs":"029dce8e4385f91b2e375cd50a81812b44a93db656890cfe30b81f59ff9af425","src/string.rs":"bca947a52972f59ec7211d9a573110a8b24942c6c1144ea4abd6d272bc07adf0","src/string_cow.rs":"80db9235eee78bc81ee50df1f1fed1863791cb41aa0bae00af3a36b586f5513a","src/string_ref.rs":"79d050ce3bc7145b40aa3f555ea89a830cd84f3ef002a3081f874d5425430937"},"package":"ec3066350882a1cd6d950d055997f379ac37fd39f81cd4d8ed186032eb3c5747"} \ No newline at end of file
diff --git a/vendor/kstring/Cargo.lock b/vendor/kstring/Cargo.lock
new file mode 100644
index 000000000..206479e6d
--- /dev/null
+++ b/vendor/kstring/Cargo.lock
@@ -0,0 +1,814 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "atty"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+dependencies = [
+ "hermit-abi",
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
+[[package]]
+name = "bit-set"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e11e16035ea35e4e5997b393eacbf6f63983188f7a2ad25bfb13465f5ad59de"
+dependencies = [
+ "bit-vec",
+]
+
+[[package]]
+name = "bit-vec"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bstr"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223"
+dependencies = [
+ "lazy_static",
+ "memchr",
+ "regex-automata",
+ "serde",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899"
+
+[[package]]
+name = "byteorder"
+version = "1.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+
+[[package]]
+name = "cast"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c24dab4283a142afa2fdca129b80ad2c6284e073930f964c3a1293c225ee39a"
+dependencies = [
+ "rustc_version",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "clap"
+version = "2.34.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
+dependencies = [
+ "bitflags",
+ "textwrap",
+ "unicode-width",
+]
+
+[[package]]
+name = "criterion"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1604dafd25fba2fe2d5895a9da139f8dc9b319a5fe5354ca137cbbce4e178d10"
+dependencies = [
+ "atty",
+ "cast",
+ "clap",
+ "criterion-plot",
+ "csv",
+ "itertools",
+ "lazy_static",
+ "num-traits",
+ "oorandom",
+ "plotters",
+ "rayon",
+ "regex",
+ "serde",
+ "serde_cbor",
+ "serde_derive",
+ "serde_json",
+ "tinytemplate",
+ "walkdir",
+]
+
+[[package]]
+name = "criterion-plot"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d00996de9f2f7559f7f4dc286073197f83e92256a59ed395f9aac01fe717da57"
+dependencies = [
+ "cast",
+ "itertools",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53"
+dependencies = [
+ "cfg-if",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e"
+dependencies = [
+ "cfg-if",
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c"
+dependencies = [
+ "autocfg",
+ "cfg-if",
+ "crossbeam-utils",
+ "lazy_static",
+ "memoffset",
+ "scopeguard",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38"
+dependencies = [
+ "cfg-if",
+ "lazy_static",
+]
+
+[[package]]
+name = "csv"
+version = "1.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1"
+dependencies = [
+ "bstr",
+ "csv-core",
+ "itoa 0.4.8",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "csv-core"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "document-features"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b01c09fd63b5136fba41aa625c7b3254f0aa0a435ff6ec4b2c9a28d496c83c88"
+
+[[package]]
+name = "either"
+version = "1.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
+
+[[package]]
+name = "fastrand"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf"
+dependencies = [
+ "instant",
+]
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "getrandom"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi",
+]
+
+[[package]]
+name = "half"
+version = "1.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
+
+[[package]]
+name = "hermit-abi"
+version = "0.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "instant"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "itertools"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "0.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
+
+[[package]]
+name = "itoa"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35"
+
+[[package]]
+name = "js-sys"
+version = "0.3.56"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "kstring"
+version = "2.0.0"
+dependencies = [
+ "criterion",
+ "document-features",
+ "proptest",
+ "serde",
+ "static_assertions",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+[[package]]
+name = "libc"
+version = "0.2.121"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "efaa7b300f3b5fe8eb6bf21ce3895e1751d9665086af2d64b42f19701015ff4f"
+
+[[package]]
+name = "log"
+version = "0.4.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "memchr"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
+
+[[package]]
+name = "memoffset"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
+dependencies = [
+ "hermit-abi",
+ "libc",
+]
+
+[[package]]
+name = "oorandom"
+version = "11.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
+
+[[package]]
+name = "plotters"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a3fd9ec30b9749ce28cd91f255d569591cdf937fe280c312143e3c4bad6f2a"
+dependencies = [
+ "num-traits",
+ "plotters-backend",
+ "plotters-svg",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "plotters-backend"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d88417318da0eaf0fdcdb51a0ee6c3bed624333bff8f946733049380be67ac1c"
+
+[[package]]
+name = "plotters-svg"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "521fa9638fa597e1dc53e9412a4f9cefb01187ee1f7413076f9e6749e2885ba9"
+dependencies = [
+ "plotters-backend",
+]
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029"
+dependencies = [
+ "unicode-xid",
+]
+
+[[package]]
+name = "proptest"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e0d9cc07f18492d879586c92b485def06bc850da3118075cd45d50e9c95b0e5"
+dependencies = [
+ "bit-set",
+ "bitflags",
+ "byteorder",
+ "lazy_static",
+ "num-traits",
+ "quick-error 2.0.1",
+ "rand",
+ "rand_chacha",
+ "rand_xorshift",
+ "regex-syntax",
+ "rusty-fork",
+ "tempfile",
+]
+
+[[package]]
+name = "quick-error"
+version = "1.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
+
+[[package]]
+name = "quick-error"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
+
+[[package]]
+name = "quote"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "632d02bff7f874a36f33ea8bb416cd484b90cc66c1194b1a1110d067a7013f58"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "rand_xorshift"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f"
+dependencies = [
+ "rand_core",
+]
+
+[[package]]
+name = "rayon"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90"
+dependencies = [
+ "autocfg",
+ "crossbeam-deque",
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e"
+dependencies = [
+ "crossbeam-channel",
+ "crossbeam-deque",
+ "crossbeam-utils",
+ "lazy_static",
+ "num_cpus",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ae183fc1b06c149f0c1793e1eb447c8b04bfe46d48e9e48bfb8d2d7ed64ecf0"
+dependencies = [
+ "bitflags",
+]
+
+[[package]]
+name = "regex"
+version = "1.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286"
+dependencies = [
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
+
+[[package]]
+name = "regex-syntax"
+version = "0.6.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
+
+[[package]]
+name = "remove_dir_all"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "rustc_version"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
+dependencies = [
+ "semver",
+]
+
+[[package]]
+name = "rusty-fork"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f"
+dependencies = [
+ "fnv",
+ "quick-error 1.2.3",
+ "tempfile",
+ "wait-timeout",
+]
+
+[[package]]
+name = "ryu"
+version = "1.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f"
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "scopeguard"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+
+[[package]]
+name = "semver"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d65bd28f48be7196d222d95b9243287f48d27aca604e08497513019ff0502cc4"
+
+[[package]]
+name = "serde"
+version = "1.0.136"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789"
+
+[[package]]
+name = "serde_cbor"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5"
+dependencies = [
+ "half",
+ "serde",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.136"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.79"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95"
+dependencies = [
+ "itoa 1.0.1",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
+name = "syn"
+version = "1.0.90"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "704df27628939572cd88d33f171cd6f896f4eaca85252c6e0a72d8d8287ee86f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-xid",
+]
+
+[[package]]
+name = "tempfile"
+version = "3.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"
+dependencies = [
+ "cfg-if",
+ "fastrand",
+ "libc",
+ "redox_syscall",
+ "remove_dir_all",
+ "winapi",
+]
+
+[[package]]
+name = "textwrap"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
+dependencies = [
+ "unicode-width",
+]
+
+[[package]]
+name = "tinytemplate"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
+dependencies = [
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "unicode-width"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
+
+[[package]]
+name = "unicode-xid"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
+
+[[package]]
+name = "wait-timeout"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "walkdir"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
+dependencies = [
+ "same-file",
+ "winapi",
+ "winapi-util",
+]
+
+[[package]]
+name = "wasi"
+version = "0.10.2+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.79"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.79"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca"
+dependencies = [
+ "bumpalo",
+ "lazy_static",
+ "log",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.79"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.79"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.79"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2"
+
+[[package]]
+name = "web-sys"
+version = "0.3.56"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
diff --git a/vendor/kstring/Cargo.toml b/vendor/kstring/Cargo.toml
new file mode 100644
index 000000000..87e11ed79
--- /dev/null
+++ b/vendor/kstring/Cargo.toml
@@ -0,0 +1,88 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2018"
+name = "kstring"
+version = "2.0.0"
+authors = ["Ed Page <eopage@gmail.com>"]
+include = ["build.rs", "src/**/*", "Cargo.toml", "LICENSE*", "README.md", "benches/**/*", "examples/**/*"]
+description = "Key String: optimized for map keys"
+documentation = "https://docs.rs/kstring"
+readme = "README.md"
+keywords = ["serde", "serialization", "string"]
+categories = ["data-structures", "text-processing"]
+license = "MIT OR Apache-2.0"
+repository = "https://github.com/cobalt-org/kstring"
+[package.metadata.docs.rs]
+all-features = true
+[[package.metadata.release.pre-release-replacements]]
+file = "CHANGELOG.md"
+min = 1
+replace = "{{version}}"
+search = "Unreleased"
+
+[[package.metadata.release.pre-release-replacements]]
+exactly = 1
+file = "CHANGELOG.md"
+replace = "...{{tag_name}}"
+search = "\\.\\.\\.HEAD"
+
+[[package.metadata.release.pre-release-replacements]]
+file = "CHANGELOG.md"
+min = 1
+replace = "{{date}}"
+search = "ReleaseDate"
+
+[[package.metadata.release.pre-release-replacements]]
+exactly = 1
+file = "CHANGELOG.md"
+replace = "<!-- next-header -->\n## [Unreleased] - ReleaseDate\n"
+search = "<!-- next-header -->"
+
+[[package.metadata.release.pre-release-replacements]]
+exactly = 1
+file = "CHANGELOG.md"
+replace = "<!-- next-url -->\n[Unreleased]: https://github.com/cobalt-org/kstring/compare/{{tag_name}}...HEAD"
+search = "<!-- next-url -->"
+[profile.release]
+debug = 1
+
+[[bench]]
+name = "clone"
+harness = false
+
+[[bench]]
+name = "access"
+harness = false
+[dependencies.document-features]
+version = "0.2"
+optional = true
+
+[dependencies.serde]
+version = "1.0"
+optional = true
+
+[dependencies.static_assertions]
+version = "1.1.0"
+[dev-dependencies.criterion]
+version = "0.3"
+
+[dev-dependencies.proptest]
+version = "1.0.0"
+
+[features]
+arc = []
+default = ["std", "unsafe"]
+max_inline = []
+std = []
+unsafe = []
+unstable_bench_subset = []
diff --git a/vendor/linux-raw-sys-0.3.2/LICENSE-APACHE b/vendor/kstring/LICENSE-APACHE
index 16fe87b06..16fe87b06 100644
--- a/vendor/linux-raw-sys-0.3.2/LICENSE-APACHE
+++ b/vendor/kstring/LICENSE-APACHE
diff --git a/vendor/kstring/LICENSE-MIT b/vendor/kstring/LICENSE-MIT
new file mode 100644
index 000000000..f1be6b7af
--- /dev/null
+++ b/vendor/kstring/LICENSE-MIT
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014-2016 Ning Sun and tojson_macros contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/kstring/README.md b/vendor/kstring/README.md
new file mode 100644
index 000000000..91828d01d
--- /dev/null
+++ b/vendor/kstring/README.md
@@ -0,0 +1,58 @@
+KString
+===========
+
+> Key String: Optimized for map keys.
+
+[![Crates Status](https://img.shields.io/crates/v/kstring.svg)](https://crates.io/crates/kstring)
+
+## Background
+
+Considerations:
+- Large maps
+- Most keys live and drop without being used in any other way
+- Most keys are relatively small (single to double digit bytes)
+- Keys are immutable
+- Allow zero-cost abstractions between structs and maps (e.g. no allocating
+ when dealing with struct field names)
+
+Ramifications:
+- Inline small strings rather than going to the heap.
+- Preserve `&'static str` across strings (`KString`),
+ references (`KStringRef`), and lifetime abstractions (`KStringCow`) to avoid
+ allocating for struct field names.
+- Use `Box<str>` rather than `String` to use less memory.
+
+Features
+- `max_inline`: Instead of aligning the inline-string for performance (15 bytes + length on 64-bit), use the full width (22 bytes on 64-bit)
+- `arc`: Instead of using `Box<str>`, use `Arc<str>`. Note: allocations are fast enough that this can actually slow things down for small enough strings.
+
+Alternatives
+- [`smol_str`](https://crates.io/crates/smol_str)
+ - Size of String
+ - Always uses `Arc` instead of `Box`
+ - Always inlines 22 bytes
+ - Whitespace-only optimizations
+- [`smartstring`](https://crates.io/crates/smartstring)
+ - Size of String
+ - Allows mutability at the cost of relying on implementation details of `String`
+ - Always inlines 23 bytes
+- [`compact_str`](https://crates.io/crates/compact_str)
+ - Size of String
+ - Always uses `Arc` instead of `Box`
+ - Inlines 22-23 bytes, depending on implementation
+
+## License
+
+Licensed under either of
+
+ * Apache License, Version 2.0, (http://www.apache.org/licenses/LICENSE-2.0)
+ * MIT license (http://opensource.org/licenses/MIT)
+
+at your option.
+
+### Contribution
+
+Unless you explicitly state otherwise, any contribution intentionally
+submitted for inclusion in the work by you, as defined in the Apache-2.0
+license, shall be dual licensed as above, without any additional terms or
+conditions.
diff --git a/vendor/kstring/benches/access.rs b/vendor/kstring/benches/access.rs
new file mode 100644
index 000000000..a9b92d3d6
--- /dev/null
+++ b/vendor/kstring/benches/access.rs
@@ -0,0 +1,134 @@
+#![allow(
+ clippy::clone_on_copy,
+ clippy::useless_conversion,
+ clippy::clone_double_ref
+)]
+
+use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion, Throughput};
+
+type StringCow<'s> = std::borrow::Cow<'s, str>;
+
+#[cfg(not(feature = "unstable_bench_subset"))]
+pub static FIXTURES: &[&str] = &[
+ "",
+ "0",
+ "01",
+ "012",
+ "0123",
+ "01234",
+ "012345",
+ "0123456",
+ "01234567",
+ "012345678",
+ "0123456789",
+ "01234567890123456789",
+ "0123456789012345678901234567890123456789",
+ "01234567890123456789012345678901234567890123456789012345678901234567890123456789",
+];
+
+#[cfg(feature = "unstable_bench_subset")]
+pub static FIXTURES: &[&str] = &[
+ "0123456789",
+ "01234567890123456789012345678901234567890123456789012345678901234567890123456789",
+];
+
+// Note: this is meant to measure the overhead for accessing the underlying str. We shouldn't try
+// to optimize *just* the case being measured here.
+fn bench_access(c: &mut Criterion) {
+ let mut group = c.benchmark_group("access");
+ for fixture in FIXTURES {
+ let len = fixture.len();
+ group.throughput(Throughput::Bytes(len as u64));
+ group.bench_with_input(
+ BenchmarkId::new("StringCow::Borrowed", len),
+ &len,
+ |b, _| {
+ let uut = StringCow::Borrowed(*fixture);
+ let uut = criterion::black_box(uut);
+ b.iter(|| uut.is_empty())
+ },
+ );
+ group.bench_with_input(BenchmarkId::new("StringCow::Owned", len), &len, |b, _| {
+ let uut = StringCow::Owned(String::from(*fixture));
+ let uut = criterion::black_box(uut);
+ b.iter(|| uut.is_empty())
+ });
+ group.bench_with_input(
+ BenchmarkId::new("KString::from_static", len),
+ &len,
+ |b, _| {
+ let uut = kstring::KString::from_static(*fixture);
+ let uut = criterion::black_box(uut);
+ b.iter(|| uut.is_empty())
+ },
+ );
+ group.bench_with_input(BenchmarkId::new("KString::from_ref", len), &len, |b, _| {
+ let uut = kstring::KString::from_ref(*fixture);
+ let uut = criterion::black_box(uut);
+ b.iter(|| uut.is_empty())
+ });
+ group.bench_with_input(
+ BenchmarkId::new("KString::from_string", len),
+ &len,
+ |b, _| {
+ let uut = kstring::KString::from_string(String::from(*fixture));
+ let uut = criterion::black_box(uut);
+ b.iter(|| uut.is_empty())
+ },
+ );
+ #[cfg(not(feature = "unstable_bench_subset"))]
+ group.bench_with_input(
+ BenchmarkId::new("KStringCow::from_static", len),
+ &len,
+ |b, _| {
+ let uut = kstring::KStringCow::from_static(*fixture);
+ let uut = criterion::black_box(uut);
+ b.iter(|| uut.is_empty())
+ },
+ );
+ #[cfg(not(feature = "unstable_bench_subset"))]
+ group.bench_with_input(
+ BenchmarkId::new("KStringCow::from_ref", len),
+ &len,
+ |b, _| {
+ let uut = kstring::KStringCow::from_ref(*fixture);
+ let uut = criterion::black_box(uut);
+ b.iter(|| uut.is_empty())
+ },
+ );
+ #[cfg(not(feature = "unstable_bench_subset"))]
+ group.bench_with_input(
+ BenchmarkId::new("KStringCow::from_string", len),
+ &len,
+ |b, _| {
+ let uut = kstring::KStringCow::from_string(String::from(*fixture));
+ let uut = criterion::black_box(uut);
+ b.iter(|| uut.is_empty())
+ },
+ );
+ #[cfg(not(feature = "unstable_bench_subset"))]
+ group.bench_with_input(
+ BenchmarkId::new("KStringRef::from_static", len),
+ &len,
+ |b, _| {
+ let uut = kstring::KStringRef::from_static(*fixture);
+ let uut = criterion::black_box(uut);
+ b.iter(|| uut.is_empty())
+ },
+ );
+ #[cfg(not(feature = "unstable_bench_subset"))]
+ group.bench_with_input(
+ BenchmarkId::new("KStringRef::from_ref", len),
+ &len,
+ |b, _| {
+ let uut = kstring::KStringRef::from_ref(*fixture);
+ let uut = criterion::black_box(uut);
+ b.iter(|| uut.is_empty())
+ },
+ );
+ }
+ group.finish();
+}
+
+criterion_group!(benches, bench_access);
+criterion_main!(benches);
diff --git a/vendor/kstring/benches/clone.rs b/vendor/kstring/benches/clone.rs
new file mode 100644
index 000000000..b0740bad9
--- /dev/null
+++ b/vendor/kstring/benches/clone.rs
@@ -0,0 +1,139 @@
+#![allow(
+ clippy::clone_on_copy,
+ clippy::useless_conversion,
+ clippy::clone_double_ref
+)]
+
+use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion, Throughput};
+
+type StringCow<'s> = std::borrow::Cow<'s, str>;
+
+#[cfg(not(feature = "unstable_bench_subset"))]
+pub static FIXTURES: &[&str] = &[
+ // Empty handling
+ "",
+ // Barely used
+ "1",
+ // kstring's max small-string size
+ "123456789012345",
+ // Boundary conditions for most small-string optimizations
+ "1234567890123456789012",
+ "12345678901234567890123",
+ "123456789012345678901234",
+ "1234567890123456789012345",
+ // Small heap
+ "1234567890123456789012345678901234567890123456789012345678901234",
+ // Large heap
+ "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890",
+];
+
+#[cfg(feature = "unstable_bench_subset")]
+pub static FIXTURES: &[&str] = &[
+ "0123456789",
+ "01234567890123456789012345678901234567890123456789012345678901234567890123456789",
+];
+
+fn bench_clone(c: &mut Criterion) {
+ let mut group = c.benchmark_group("clone");
+ for fixture in FIXTURES {
+ let len = fixture.len();
+ group.throughput(Throughput::Bytes(len as u64));
+ group.bench_with_input(
+ BenchmarkId::new("StringCow::Borrowed", len),
+ &len,
+ |b, _| {
+ let uut = StringCow::Borrowed(*fixture);
+ let uut = criterion::black_box(uut);
+ b.iter(|| uut.clone())
+ },
+ );
+ group.bench_with_input(BenchmarkId::new("StringCow::Owned", len), &len, |b, _| {
+ let fixture = String::from(*fixture);
+ let uut = StringCow::Owned(fixture);
+ let uut = criterion::black_box(uut);
+ b.iter(|| uut.clone())
+ });
+ group.bench_with_input(
+ BenchmarkId::new("KString::from_static", len),
+ &len,
+ |b, _| {
+ let uut = kstring::KString::from_static(*fixture);
+ let uut = criterion::black_box(uut);
+ b.iter(|| uut.clone())
+ },
+ );
+ group.bench_with_input(BenchmarkId::new("KString::from_ref", len), &len, |b, _| {
+ let fixture = String::from(*fixture);
+ let uut = kstring::KString::from_ref(&fixture);
+ let uut = criterion::black_box(uut);
+ b.iter(|| uut.clone())
+ });
+ group.bench_with_input(
+ BenchmarkId::new("KString::from_string", len),
+ &len,
+ |b, _| {
+ let fixture = String::from(*fixture);
+ let uut = kstring::KString::from_string(fixture);
+ let uut = criterion::black_box(uut);
+ b.iter(|| uut.clone())
+ },
+ );
+ #[cfg(not(feature = "unstable_bench_subset"))]
+ group.bench_with_input(
+ BenchmarkId::new("KStringCow::from_static", len),
+ &len,
+ |b, _| {
+ let uut = kstring::KStringCow::from_static(*fixture);
+ let uut = criterion::black_box(uut);
+ b.iter(|| uut.clone())
+ },
+ );
+ #[cfg(not(feature = "unstable_bench_subset"))]
+ group.bench_with_input(
+ BenchmarkId::new("KStringCow::from_ref", len),
+ &len,
+ |b, _| {
+ let fixture = String::from(*fixture);
+ let uut = kstring::KStringCow::from_ref(&fixture);
+ let uut = criterion::black_box(uut);
+ b.iter(|| uut.clone())
+ },
+ );
+ #[cfg(not(feature = "unstable_bench_subset"))]
+ group.bench_with_input(
+ BenchmarkId::new("KStringCow::from_string", len),
+ &len,
+ |b, _| {
+ let fixture = String::from(*fixture);
+ let uut = kstring::KStringCow::from_string(fixture);
+ let uut = criterion::black_box(uut);
+ b.iter(|| uut.clone())
+ },
+ );
+ #[cfg(not(feature = "unstable_bench_subset"))]
+ group.bench_with_input(
+ BenchmarkId::new("KStringRef::from_static", len),
+ &len,
+ |b, _| {
+ let uut = kstring::KStringRef::from_static(*fixture);
+ let uut = criterion::black_box(uut);
+ b.iter(|| uut.clone())
+ },
+ );
+ #[cfg(not(feature = "unstable_bench_subset"))]
+ group.bench_with_input(
+ BenchmarkId::new("KStringRef::from_ref", len),
+ &len,
+ |b, _| {
+ let fixture = String::from(*fixture);
+ let uut = kstring::KStringRef::from_ref(&fixture);
+ let uut = criterion::black_box(uut);
+ b.iter(|| uut.clone())
+ },
+ );
+ }
+ group.finish();
+}
+
+criterion_group!(benches, bench_clone);
+criterion_main!(benches);
diff --git a/vendor/kstring/examples/bench.rs b/vendor/kstring/examples/bench.rs
new file mode 100644
index 000000000..8d467da52
--- /dev/null
+++ b/vendor/kstring/examples/bench.rs
@@ -0,0 +1,18 @@
+fn main() {
+ let mut args = std::env::args();
+ let _ = args.next();
+ let method = args.next().unwrap_or_else(|| String::from("from_ref"));
+ let sample = args.next().unwrap_or_else(|| String::from("0123456789"));
+ let count = args
+ .next()
+ .unwrap_or_else(|| String::from("10000000"))
+ .parse::<usize>()
+ .unwrap();
+ #[allow(clippy::redundant_closure)] // Needed for consistent type
+ let method = match method.as_str() {
+ "from_ref" => |s| kstring::KString::from_ref(s),
+ "from_string" => |s| kstring::KString::from_string(String::from(s)),
+ _ => panic!("{:?} unsupported, try `from_ref`, `from_string`", method),
+ };
+ (0..count).map(|_| method(&sample)).last();
+}
diff --git a/vendor/kstring/src/backend.rs b/vendor/kstring/src/backend.rs
new file mode 100644
index 000000000..3827082f1
--- /dev/null
+++ b/vendor/kstring/src/backend.rs
@@ -0,0 +1,97 @@
+#[cfg(feature = "arc")]
+pub(crate) type DefaultStr = crate::backend::ArcStr;
+#[cfg(not(feature = "arc"))]
+pub(crate) type DefaultStr = crate::backend::BoxedStr;
+
+/// Fast allocations, O(n) clones
+pub type BoxedStr = Box<str>;
+static_assertions::assert_eq_size!(DefaultStr, BoxedStr);
+
+/// Cross-thread, O(1) clones
+pub type ArcStr = std::sync::Arc<str>;
+static_assertions::assert_eq_size!(DefaultStr, ArcStr);
+
+/// O(1) clones
+pub type RcStr = std::rc::Rc<str>;
+static_assertions::assert_eq_size!(DefaultStr, RcStr);
+
+/// Abstract over different type of heap-allocated strings
+pub trait HeapStr: std::fmt::Debug + Clone + private::Sealed {
+ fn from_str(other: &str) -> Self;
+ fn from_string(other: String) -> Self;
+ fn from_boxed_str(other: BoxedStr) -> Self;
+ fn as_str(&self) -> &str;
+}
+
+impl HeapStr for BoxedStr {
+ #[inline]
+ fn from_str(other: &str) -> Self {
+ other.into()
+ }
+
+ #[inline]
+ fn from_string(other: String) -> Self {
+ other.into_boxed_str()
+ }
+
+ #[inline]
+ fn from_boxed_str(other: BoxedStr) -> Self {
+ other
+ }
+
+ #[inline]
+ fn as_str(&self) -> &str {
+ self
+ }
+}
+
+impl HeapStr for ArcStr {
+ #[inline]
+ fn from_str(other: &str) -> Self {
+ other.into()
+ }
+
+ #[inline]
+ fn from_string(other: String) -> Self {
+ other.into_boxed_str().into()
+ }
+
+ #[inline]
+ fn from_boxed_str(other: BoxedStr) -> Self {
+ other.into()
+ }
+
+ #[inline]
+ fn as_str(&self) -> &str {
+ self
+ }
+}
+
+impl HeapStr for RcStr {
+ #[inline]
+ fn from_str(other: &str) -> Self {
+ other.into()
+ }
+
+ #[inline]
+ fn from_string(other: String) -> Self {
+ other.into_boxed_str().into()
+ }
+
+ #[inline]
+ fn from_boxed_str(other: BoxedStr) -> Self {
+ other.into()
+ }
+
+ #[inline]
+ fn as_str(&self) -> &str {
+ self
+ }
+}
+
+pub(crate) mod private {
+ pub trait Sealed {}
+ impl Sealed for super::BoxedStr {}
+ impl Sealed for super::ArcStr {}
+ impl Sealed for super::RcStr {}
+}
diff --git a/vendor/kstring/src/lib.rs b/vendor/kstring/src/lib.rs
new file mode 100644
index 000000000..dc1ffd608
--- /dev/null
+++ b/vendor/kstring/src/lib.rs
@@ -0,0 +1,78 @@
+//! Key String: Optimized for map keys.
+//!
+//! # Examples
+//!
+//! String creation
+//! ```rust
+//! // Explicit
+//! let literal = kstring::KString::from_static("literal");
+//! // Implicit
+//! let literal = kstring::KString::from("literal");
+//!
+//! // Explicit
+//! let inline = kstring::KString::try_inline("stack").unwrap();
+//! let inline = kstring::KString::from_ref("stack");
+//!
+//! let formatted: kstring::KStringCow = format!("Hello {} and {}", literal, inline).into();
+//! ```
+//!
+//! # Background
+//!
+//! Considerations:
+//! - Large maps
+//! - Most keys live and drop without being used in any other way
+//! - Most keys are relatively small (single to double digit bytes)
+//! - Keys are immutable
+//! - Allow zero-cost abstractions between structs and maps (e.g. no allocating
+//! when dealing with struct field names)
+//!
+//! Ramifications:
+//! - Inline small strings rather than going to the heap.
+//! - Preserve `&'static str` across strings ([`KString`]),
+//! references ([`KStringRef`]), and lifetime abstractions ([`KStringCow`]) to avoid
+//! allocating for struct field names.
+//! - Use `Box<str>` rather than `String` to use less memory.
+//!
+//! # Feature Flags
+//!
+#![cfg_attr(feature = "document-features", doc = document_features::document_features!())]
+#![cfg_attr(feature = "safe", forbid(unsafe_code))]
+
+#[cfg(not(feature = "std"))]
+compile_error!("`std` feature is required; reserved for future `no_std` support");
+
+mod stack;
+mod string;
+mod string_cow;
+mod string_ref;
+
+pub mod backend;
+
+pub use stack::StackString;
+pub use string::*;
+pub use string_cow::*;
+pub use string_ref::*;
+
+#[cfg(test)]
+mod test {
+ #[test]
+ fn test_size() {
+ println!(
+ "String: {}",
+ std::mem::size_of::<crate::string::StdString>()
+ );
+ println!(
+ "Box<str>: {}",
+ std::mem::size_of::<crate::backend::DefaultStr>()
+ );
+ println!(
+ "Box<Box<str>>: {}",
+ std::mem::size_of::<Box<crate::backend::DefaultStr>>()
+ );
+ println!("str: {}", std::mem::size_of::<&'static str>());
+ println!(
+ "Cow: {}",
+ std::mem::size_of::<std::borrow::Cow<'static, str>>()
+ );
+ }
+}
diff --git a/vendor/kstring/src/stack.rs b/vendor/kstring/src/stack.rs
new file mode 100644
index 000000000..93e2f0722
--- /dev/null
+++ b/vendor/kstring/src/stack.rs
@@ -0,0 +1,457 @@
+use std::fmt;
+
+pub(crate) type Len = u8;
+
+/// Fixed-size stack-allocated string
+#[derive(Copy, Clone)]
+pub struct StackString<const CAPACITY: usize> {
+ len: Len,
+ buffer: StrBuffer<CAPACITY>,
+}
+
+impl<const CAPACITY: usize> StackString<CAPACITY> {
+ pub const CAPACITY: usize = CAPACITY;
+ pub const EMPTY: Self = Self::empty();
+
+ const fn empty() -> Self {
+ Self {
+ len: 0,
+ buffer: StrBuffer::empty(),
+ }
+ }
+
+ /// Create a `StackString` from a `&str`, if it'll fit within `Self::CAPACITY`
+ ///
+ /// # Examples
+ ///
+ /// Basic usage:
+ ///
+ /// ```
+ /// let s = kstring::StackString::<3>::try_new("foo");
+ /// assert_eq!(s.as_deref(), Some("foo"));
+ /// let s = kstring::StackString::<3>::try_new("foobar");
+ /// assert_eq!(s, None);
+ /// ```
+ #[inline]
+ #[must_use]
+ pub fn try_new(s: &str) -> Option<Self> {
+ let len = s.as_bytes().len();
+ if len <= Self::CAPACITY {
+ #[cfg(feature = "unsafe")]
+ let stack = {
+ unsafe {
+ // SAFETY: We've confirmed `len` is within size
+ Self::new_unchecked(s)
+ }
+ };
+ #[cfg(not(feature = "unsafe"))]
+ let stack = { Self::new(s) };
+ Some(stack)
+ } else {
+ None
+ }
+ }
+
+ /// Create a `StackString` from a `&str`
+ ///
+ /// # Panic
+ ///
+ /// Calling this function with a string larger than `Self::CAPACITY` will panic
+ ///
+ /// # Examples
+ ///
+ /// Basic usage:
+ ///
+ /// ```
+ /// let s = kstring::StackString::<3>::new("foo");
+ /// assert_eq!(s, "foo");
+ /// ```
+ #[inline]
+ #[must_use]
+ pub fn new(s: &str) -> Self {
+ let len = s.as_bytes().len() as u8;
+ debug_assert!(Self::CAPACITY <= Len::MAX.into());
+ let buffer = StrBuffer::new(s);
+ Self { len, buffer }
+ }
+
+ /// Create a `StackString` from a `&str`
+ ///
+ /// # Safety
+ ///
+ /// Calling this function with a string larger than `Self::CAPACITY` is undefined behavior.
+ ///
+ /// # Examples
+ ///
+ /// Basic usage:
+ ///
+ /// ```
+ /// let s = unsafe {
+ /// // SAFETY: Literal is short-enough
+ /// kstring::StackString::<3>::new_unchecked("foo")
+ /// };
+ /// assert_eq!(s, "foo");
+ /// ```
+ #[inline]
+ #[must_use]
+ #[cfg(feature = "unsafe")]
+ pub unsafe fn new_unchecked(s: &str) -> Self {
+ let len = s.as_bytes().len() as u8;
+ debug_assert!(Self::CAPACITY <= Len::MAX.into());
+ let buffer = StrBuffer::new_unchecked(s);
+ Self { len, buffer }
+ }
+
+ /// Extracts a string slice containing the entire `StackString`.
+ ///
+ /// # Examples
+ ///
+ /// Basic usage:
+ ///
+ /// ```
+ /// let s = kstring::StackString::<3>::try_new("foo").unwrap();
+ ///
+ /// assert_eq!("foo", s.as_str());
+ /// ```
+ #[inline]
+ #[must_use]
+ pub fn as_str(&self) -> &str {
+ let len = self.len as usize;
+ #[cfg(feature = "unsafe")]
+ unsafe {
+ // SAFETY: Constructors guarantee that `buffer[..len]` is a `str`,
+ // and we don't mutate the data afterwards.
+ self.buffer.as_str_unchecked(len)
+ }
+ #[cfg(not(feature = "unsafe"))]
+ self.buffer.as_str(len)
+ }
+
+ /// Converts a `StackString` into a mutable string slice.
+ ///
+ /// # Examples
+ ///
+ /// Basic usage:
+ ///
+ /// ```
+ /// let mut s = kstring::StackString::<6>::try_new("foobar").unwrap();
+ /// let s_mut_str = s.as_mut_str();
+ ///
+ /// s_mut_str.make_ascii_uppercase();
+ ///
+ /// assert_eq!("FOOBAR", s_mut_str);
+ /// ```
+ #[inline]
+ #[must_use]
+ pub fn as_mut_str(&mut self) -> &mut str {
+ let len = self.len as usize;
+ #[cfg(feature = "unsafe")]
+ unsafe {
+ // SAFETY: Constructors guarantee that `buffer[..len]` is a `str`,
+ // and we don't mutate the data afterwards.
+ self.buffer.as_mut_str_unchecked(len)
+ }
+ #[cfg(not(feature = "unsafe"))]
+ self.buffer.as_mut_str(len)
+ }
+
+ /// Returns the length of this `StasckString`, in bytes, not [`char`]s or
+ /// graphemes. In other words, it might not be what a human considers the
+ /// length of the string.
+ ///
+ /// # Examples
+ ///
+ /// Basic usage:
+ ///
+ /// ```
+ /// let a = kstring::StackString::<3>::try_new("foo").unwrap();
+ /// assert_eq!(a.len(), 3);
+ ///
+ /// let fancy_f = kstring::StackString::<4>::try_new("Æ’oo").unwrap();
+ /// assert_eq!(fancy_f.len(), 4);
+ /// assert_eq!(fancy_f.chars().count(), 3);
+ /// ```
+ #[inline]
+ #[must_use]
+ pub fn len(&self) -> usize {
+ self.len as usize
+ }
+
+ /// Returns `true` if this `StackString` has a length of zero, and `false` otherwise.
+ ///
+ /// # Examples
+ ///
+ /// Basic usage:
+ ///
+ /// ```
+ /// let mut v = kstring::StackString::<20>::EMPTY;
+ /// assert!(v.is_empty());
+ ///
+ /// let a = kstring::StackString::<3>::try_new("foo").unwrap();
+ /// assert!(!a.is_empty());
+ /// ```
+ #[inline]
+ #[must_use]
+ pub fn is_empty(&self) -> bool {
+ self.len() == 0
+ }
+
+ /// Truncates this `StackString`, removing all contents.
+ ///
+ /// # Examples
+ ///
+ /// Basic usage:
+ ///
+ /// ```
+ /// let mut s = kstring::StackString::<3>::try_new("foo").unwrap();
+ ///
+ /// s.clear();
+ ///
+ /// assert!(s.is_empty());
+ /// assert_eq!(0, s.len());
+ /// ```
+ #[inline]
+ pub fn clear(&mut self) {
+ self.len = 0;
+ }
+
+ /// Shortens this `StackString` to the specified length.
+ ///
+ /// If `new_len` is greater than the string's current length, this has no
+ /// effect.
+ ///
+ /// Note that this method has no effect on the allocated capacity
+ /// of the string
+ ///
+ /// # Panics
+ ///
+ /// Panics if `new_len` does not lie on a [`char`] boundary.
+ ///
+ /// # Examples
+ ///
+ /// Basic usage:
+ ///
+ /// ```
+ /// let mut s = kstring::StackString::<5>::try_new("hello").unwrap();
+ ///
+ /// s.truncate(2);
+ ///
+ /// assert_eq!(s, "he");
+ /// ```
+ #[inline]
+ pub fn truncate(&mut self, new_len: usize) {
+ if new_len <= self.len() {
+ assert!(self.is_char_boundary(new_len));
+ self.len = new_len as u8;
+ }
+ }
+}
+
+impl<const CAPACITY: usize> Default for StackString<CAPACITY> {
+ fn default() -> Self {
+ Self::empty()
+ }
+}
+
+impl<const CAPACITY: usize> std::ops::Deref for StackString<CAPACITY> {
+ type Target = str;
+
+ #[inline]
+ fn deref(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl<const CAPACITY: usize> Eq for StackString<CAPACITY> {}
+
+impl<const C1: usize, const C2: usize> PartialEq<StackString<C1>> for StackString<C2> {
+ #[inline]
+ fn eq(&self, other: &StackString<C1>) -> bool {
+ PartialEq::eq(self.as_str(), other.as_str())
+ }
+}
+
+impl<const CAPACITY: usize> PartialEq<str> for StackString<CAPACITY> {
+ #[inline]
+ fn eq(&self, other: &str) -> bool {
+ PartialEq::eq(self.as_str(), other)
+ }
+}
+
+impl<'s, const CAPACITY: usize> PartialEq<&'s str> for StackString<CAPACITY> {
+ #[inline]
+ fn eq(&self, other: &&str) -> bool {
+ PartialEq::eq(self.as_str(), *other)
+ }
+}
+
+impl<const CAPACITY: usize> PartialEq<String> for StackString<CAPACITY> {
+ #[inline]
+ fn eq(&self, other: &String) -> bool {
+ PartialEq::eq(self.as_str(), other.as_str())
+ }
+}
+
+impl<const CAPACITY: usize> Ord for StackString<CAPACITY> {
+ #[inline]
+ fn cmp(&self, other: &Self) -> std::cmp::Ordering {
+ self.as_str().cmp(other.as_str())
+ }
+}
+
+impl<const C1: usize, const C2: usize> PartialOrd<StackString<C1>> for StackString<C2> {
+ #[inline]
+ fn partial_cmp(&self, other: &StackString<C1>) -> Option<std::cmp::Ordering> {
+ self.as_str().partial_cmp(other.as_str())
+ }
+}
+
+impl<const CAPACITY: usize> PartialOrd<str> for StackString<CAPACITY> {
+ #[inline]
+ fn partial_cmp(&self, other: &str) -> Option<std::cmp::Ordering> {
+ self.as_str().partial_cmp(other)
+ }
+}
+
+impl<'s, const CAPACITY: usize> PartialOrd<&'s str> for StackString<CAPACITY> {
+ #[inline]
+ fn partial_cmp(&self, other: &&str) -> Option<std::cmp::Ordering> {
+ self.as_str().partial_cmp(other)
+ }
+}
+
+impl<const CAPACITY: usize> PartialOrd<String> for StackString<CAPACITY> {
+ #[inline]
+ fn partial_cmp(&self, other: &String) -> Option<std::cmp::Ordering> {
+ self.as_str().partial_cmp(other.as_str())
+ }
+}
+
+impl<const CAPACITY: usize> std::hash::Hash for StackString<CAPACITY> {
+ #[inline]
+ fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
+ self.as_str().hash(state);
+ }
+}
+
+impl<const CAPACITY: usize> fmt::Debug for StackString<CAPACITY> {
+ #[inline]
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fmt::Debug::fmt(self.as_str(), f)
+ }
+}
+
+impl<const CAPACITY: usize> fmt::Display for StackString<CAPACITY> {
+ #[inline]
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fmt::Display::fmt(self.as_str(), f)
+ }
+}
+
+impl<const CAPACITY: usize> AsRef<str> for StackString<CAPACITY> {
+ #[inline]
+ fn as_ref(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl<const CAPACITY: usize> AsRef<[u8]> for StackString<CAPACITY> {
+ #[inline]
+ fn as_ref(&self) -> &[u8] {
+ self.as_bytes()
+ }
+}
+
+impl<const CAPACITY: usize> AsRef<std::ffi::OsStr> for StackString<CAPACITY> {
+ #[inline]
+ fn as_ref(&self) -> &std::ffi::OsStr {
+ (&**self).as_ref()
+ }
+}
+
+impl<const CAPACITY: usize> AsRef<std::path::Path> for StackString<CAPACITY> {
+ #[inline]
+ fn as_ref(&self) -> &std::path::Path {
+ std::path::Path::new(self)
+ }
+}
+
+impl<const CAPACITY: usize> std::borrow::Borrow<str> for StackString<CAPACITY> {
+ #[inline]
+ fn borrow(&self) -> &str {
+ self.as_str()
+ }
+}
+
+#[derive(Copy, Clone)]
+#[repr(transparent)]
+pub(crate) struct StrBuffer<const CAPACITY: usize>([u8; CAPACITY]);
+
+impl<const CAPACITY: usize> StrBuffer<CAPACITY> {
+ pub(crate) const fn empty() -> Self {
+ let array = [0; CAPACITY];
+ StrBuffer(array)
+ }
+
+ #[inline]
+ pub(crate) fn new(s: &str) -> Self {
+ let len = s.as_bytes().len();
+ debug_assert!(len <= CAPACITY);
+ let mut buffer = Self::default();
+ if let Some(buffer) = buffer.0.get_mut(..len) {
+ buffer.copy_from_slice(s.as_bytes());
+ } else {
+ panic!("`{}` is larger than capacity {}", s, CAPACITY);
+ }
+ buffer
+ }
+
+ #[inline]
+ #[cfg(not(feature = "unsafe"))]
+ pub(crate) fn as_str(&self, len: usize) -> &str {
+ let slice = self.0.get(..len).unwrap();
+ std::str::from_utf8(slice).unwrap()
+ }
+
+ #[inline]
+ #[cfg(not(feature = "unsafe"))]
+ pub(crate) fn as_mut_str(&mut self, len: usize) -> &mut str {
+ let slice = self.0.get_mut(..len).unwrap();
+ std::str::from_utf8_mut(slice).unwrap()
+ }
+}
+
+impl<const CAPACITY: usize> StrBuffer<CAPACITY> {
+ #[inline]
+ #[cfg(feature = "unsafe")]
+ pub(crate) unsafe fn new_unchecked(s: &str) -> Self {
+ let len = s.as_bytes().len();
+ debug_assert!(len <= CAPACITY);
+ let mut buffer = Self::default();
+ buffer
+ .0
+ .get_unchecked_mut(..len)
+ .copy_from_slice(s.as_bytes());
+ buffer
+ }
+
+ #[inline]
+ #[cfg(feature = "unsafe")]
+ pub(crate) unsafe fn as_str_unchecked(&self, len: usize) -> &str {
+ let slice = self.0.get_unchecked(..len);
+ std::str::from_utf8_unchecked(slice)
+ }
+
+ #[inline]
+ #[cfg(feature = "unsafe")]
+ pub(crate) unsafe fn as_mut_str_unchecked(&mut self, len: usize) -> &mut str {
+ let slice = self.0.get_unchecked_mut(..len);
+ std::str::from_utf8_unchecked_mut(slice)
+ }
+}
+
+impl<const CAPACITY: usize> Default for StrBuffer<CAPACITY> {
+ fn default() -> Self {
+ Self::empty()
+ }
+}
diff --git a/vendor/kstring/src/string.rs b/vendor/kstring/src/string.rs
new file mode 100644
index 000000000..ed39d188a
--- /dev/null
+++ b/vendor/kstring/src/string.rs
@@ -0,0 +1,865 @@
+use std::{borrow::Cow, fmt};
+
+use crate::stack::StackString;
+use crate::KStringCowBase;
+use crate::KStringRef;
+
+pub(crate) type StdString = std::string::String;
+
+/// A UTF-8 encoded, immutable string.
+pub type KString = KStringBase<crate::backend::DefaultStr>;
+
+/// A UTF-8 encoded, immutable string.
+#[derive(Clone)]
+#[repr(transparent)]
+pub struct KStringBase<B> {
+ inner: KStringInner<B>,
+}
+
+impl<B> KStringBase<B> {
+ pub const EMPTY: Self = KStringBase::from_static("");
+
+ /// Create a new empty `KStringBase`.
+ #[inline]
+ #[must_use]
+ pub fn new() -> Self {
+ Self::EMPTY
+ }
+
+ /// Create a reference to a `'static` data.
+ #[inline]
+ #[must_use]
+ pub const fn from_static(other: &'static str) -> Self {
+ Self {
+ inner: KStringInner::from_static(other),
+ }
+ }
+
+ /// Create an inline string, if possible
+ #[inline]
+ #[must_use]
+ pub fn try_inline(other: &str) -> Option<Self> {
+ KStringInner::try_inline(other).map(|inner| Self { inner })
+ }
+}
+
+impl<B: crate::backend::HeapStr> KStringBase<B> {
+ /// Create an owned `KStringBase`.
+ #[inline]
+ #[must_use]
+ pub fn from_boxed(other: crate::backend::BoxedStr) -> Self {
+ Self {
+ inner: KStringInner::from_boxed(other),
+ }
+ }
+
+ /// Create an owned `KStringBase`.
+ #[inline]
+ #[must_use]
+ pub fn from_string(other: StdString) -> Self {
+ Self {
+ inner: KStringInner::from_string(other),
+ }
+ }
+
+ /// Create an owned `KStringBase` optimally from a reference.
+ #[inline]
+ #[must_use]
+ pub fn from_ref(other: &str) -> Self {
+ Self {
+ inner: KStringInner::from_ref(other),
+ }
+ }
+
+ /// Get a reference to the `KStringBase`.
+ #[inline]
+ #[must_use]
+ pub fn as_ref(&self) -> KStringRef<'_> {
+ self.inner.as_ref()
+ }
+
+ /// Extracts a string slice containing the entire `KStringBase`.
+ #[inline]
+ #[must_use]
+ pub fn as_str(&self) -> &str {
+ self.inner.as_str()
+ }
+
+ /// Convert to a mutable string type, cloning the data if necessary.
+ #[inline]
+ #[must_use]
+ pub fn into_string(self) -> StdString {
+ String::from(self.into_boxed_str())
+ }
+
+ /// Convert to a mutable string type, cloning the data if necessary.
+ #[inline]
+ #[must_use]
+ pub fn into_boxed_str(self) -> crate::backend::BoxedStr {
+ self.inner.into_boxed_str()
+ }
+
+ /// Convert to a Cow str
+ #[inline]
+ #[must_use]
+ pub fn into_cow_str(self) -> Cow<'static, str> {
+ self.inner.into_cow_str()
+ }
+}
+
+impl<B: crate::backend::HeapStr> std::ops::Deref for KStringBase<B> {
+ type Target = str;
+
+ #[inline]
+ fn deref(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl<B: crate::backend::HeapStr> Eq for KStringBase<B> {}
+
+impl<'s, B: crate::backend::HeapStr> PartialEq<KStringBase<B>> for KStringBase<B> {
+ #[inline]
+ fn eq(&self, other: &Self) -> bool {
+ PartialEq::eq(self.as_str(), other.as_str())
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> PartialEq<str> for KStringBase<B> {
+ #[inline]
+ fn eq(&self, other: &str) -> bool {
+ PartialEq::eq(self.as_str(), other)
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> PartialEq<&'s str> for KStringBase<B> {
+ #[inline]
+ fn eq(&self, other: &&str) -> bool {
+ PartialEq::eq(self.as_str(), *other)
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> PartialEq<String> for KStringBase<B> {
+ #[inline]
+ fn eq(&self, other: &StdString) -> bool {
+ PartialEq::eq(self.as_str(), other.as_str())
+ }
+}
+
+impl<B: crate::backend::HeapStr> Ord for KStringBase<B> {
+ #[inline]
+ fn cmp(&self, other: &Self) -> std::cmp::Ordering {
+ self.as_str().cmp(other.as_str())
+ }
+}
+
+impl<B: crate::backend::HeapStr> PartialOrd for KStringBase<B> {
+ #[inline]
+ fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
+ self.as_str().partial_cmp(other.as_str())
+ }
+}
+
+impl<B: crate::backend::HeapStr> std::hash::Hash for KStringBase<B> {
+ #[inline]
+ fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
+ self.as_str().hash(state);
+ }
+}
+
+impl<B: crate::backend::HeapStr> fmt::Debug for KStringBase<B> {
+ #[inline]
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ self.as_str().fmt(f)
+ }
+}
+
+impl<B: crate::backend::HeapStr> fmt::Display for KStringBase<B> {
+ #[inline]
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fmt::Display::fmt(self.as_str(), f)
+ }
+}
+
+impl<B: crate::backend::HeapStr> AsRef<str> for KStringBase<B> {
+ #[inline]
+ fn as_ref(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl<B: crate::backend::HeapStr> AsRef<[u8]> for KStringBase<B> {
+ #[inline]
+ fn as_ref(&self) -> &[u8] {
+ self.as_bytes()
+ }
+}
+
+impl<B: crate::backend::HeapStr> AsRef<std::ffi::OsStr> for KStringBase<B> {
+ #[inline]
+ fn as_ref(&self) -> &std::ffi::OsStr {
+ (&**self).as_ref()
+ }
+}
+
+impl<B: crate::backend::HeapStr> AsRef<std::path::Path> for KStringBase<B> {
+ #[inline]
+ fn as_ref(&self) -> &std::path::Path {
+ std::path::Path::new(self)
+ }
+}
+
+impl<B: crate::backend::HeapStr> std::borrow::Borrow<str> for KStringBase<B> {
+ #[inline]
+ fn borrow(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl<B: crate::backend::HeapStr> Default for KStringBase<B> {
+ #[inline]
+ fn default() -> Self {
+ Self::new()
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> From<KStringRef<'s>> for KStringBase<B> {
+ #[inline]
+ fn from(other: KStringRef<'s>) -> Self {
+ other.to_owned()
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> From<&'s KStringRef<'s>> for KStringBase<B> {
+ #[inline]
+ fn from(other: &'s KStringRef<'s>) -> Self {
+ other.to_owned()
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> From<KStringCowBase<'s, B>> for KStringBase<B> {
+ #[inline]
+ fn from(other: KStringCowBase<'s, B>) -> Self {
+ other.into_owned()
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> From<&'s KStringCowBase<'s, B>> for KStringBase<B> {
+ #[inline]
+ fn from(other: &'s KStringCowBase<'s, B>) -> Self {
+ other.clone().into_owned()
+ }
+}
+
+impl<B: crate::backend::HeapStr> From<StdString> for KStringBase<B> {
+ #[inline]
+ fn from(other: StdString) -> Self {
+ Self::from_string(other)
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> From<&'s StdString> for KStringBase<B> {
+ #[inline]
+ fn from(other: &'s StdString) -> Self {
+ Self::from_ref(other)
+ }
+}
+
+impl<B: crate::backend::HeapStr> From<crate::backend::BoxedStr> for KStringBase<B> {
+ #[inline]
+ fn from(other: crate::backend::BoxedStr) -> Self {
+ Self::from_boxed(other)
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> From<&'s crate::backend::BoxedStr> for KStringBase<B> {
+ #[inline]
+ fn from(other: &'s crate::backend::BoxedStr) -> Self {
+ Self::from_ref(other)
+ }
+}
+
+impl<B: crate::backend::HeapStr> From<&'static str> for KStringBase<B> {
+ #[inline]
+ fn from(other: &'static str) -> Self {
+ Self::from_static(other)
+ }
+}
+
+impl<B: crate::backend::HeapStr> std::str::FromStr for KStringBase<B> {
+ type Err = std::convert::Infallible;
+ #[inline]
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ Ok(Self::from_ref(s))
+ }
+}
+
+#[cfg(feature = "serde")]
+impl<B: crate::backend::HeapStr> serde::Serialize for KStringBase<B> {
+ #[inline]
+ fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+ where
+ S: serde::Serializer,
+ {
+ serializer.serialize_str(self.as_str())
+ }
+}
+
+#[cfg(feature = "serde")]
+impl<'de, B: crate::backend::HeapStr> serde::Deserialize<'de> for KStringBase<B> {
+ fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+ where
+ D: serde::Deserializer<'de>,
+ {
+ deserializer.deserialize_string(StringVisitor(std::marker::PhantomData))
+ }
+}
+
+#[cfg(feature = "serde")]
+struct StringVisitor<B>(std::marker::PhantomData<B>);
+
+#[cfg(feature = "serde")]
+impl<'de, B: crate::backend::HeapStr> serde::de::Visitor<'de> for StringVisitor<B> {
+ type Value = KStringBase<B>;
+
+ fn expecting(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
+ formatter.write_str("a string")
+ }
+
+ fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
+ where
+ E: serde::de::Error,
+ {
+ Ok(Self::Value::from_ref(v))
+ }
+
+ fn visit_string<E>(self, v: String) -> Result<Self::Value, E>
+ where
+ E: serde::de::Error,
+ {
+ Ok(Self::Value::from_string(v))
+ }
+
+ fn visit_bytes<E>(self, v: &[u8]) -> Result<Self::Value, E>
+ where
+ E: serde::de::Error,
+ {
+ match std::str::from_utf8(v) {
+ Ok(s) => Ok(Self::Value::from_ref(s)),
+ Err(_) => Err(serde::de::Error::invalid_value(
+ serde::de::Unexpected::Bytes(v),
+ &self,
+ )),
+ }
+ }
+
+ fn visit_byte_buf<E>(self, v: Vec<u8>) -> Result<Self::Value, E>
+ where
+ E: serde::de::Error,
+ {
+ match String::from_utf8(v) {
+ Ok(s) => Ok(Self::Value::from_string(s)),
+ Err(e) => Err(serde::de::Error::invalid_value(
+ serde::de::Unexpected::Bytes(&e.into_bytes()),
+ &self,
+ )),
+ }
+ }
+}
+
+use inner::KStringInner;
+
+#[cfg(not(feature = "unsafe"))]
+mod inner {
+ use super::*;
+
+ pub(super) enum KStringInner<B> {
+ Singleton(&'static str),
+ Inline(StackString<CAPACITY>),
+ Owned(B),
+ }
+
+ impl<B> KStringInner<B> {
+ /// Create a reference to a `'static` data.
+ #[inline]
+ pub const fn from_static(other: &'static str) -> Self {
+ Self::Singleton(other)
+ }
+
+ #[inline]
+ pub fn try_inline(other: &str) -> Option<Self> {
+ StackString::try_new(other).map(Self::Inline)
+ }
+ }
+
+ impl<B: crate::backend::HeapStr> KStringInner<B> {
+ #[inline]
+ pub(super) fn from_boxed(other: crate::backend::BoxedStr) -> Self {
+ #[allow(clippy::useless_conversion)]
+ Self::Owned(B::from_boxed_str(other))
+ }
+
+ #[inline]
+ pub(super) fn from_string(other: StdString) -> Self {
+ if (0..=CAPACITY).contains(&other.len()) {
+ let inline = { StackString::new(other.as_str()) };
+ Self::Inline(inline)
+ } else {
+ Self::from_boxed(other.into_boxed_str())
+ }
+ }
+
+ #[inline]
+ pub(super) fn from_ref(other: &str) -> Self {
+ if (0..=CAPACITY).contains(&other.len()) {
+ let inline = { StackString::new(other) };
+ Self::Inline(inline)
+ } else {
+ Self::Owned(B::from_str(other))
+ }
+ }
+
+ #[inline]
+ pub(super) fn as_ref(&self) -> KStringRef<'_> {
+ match self {
+ Self::Singleton(s) => KStringRef::from_static(s),
+ Self::Inline(s) => KStringRef::from_ref(s.as_str()),
+ Self::Owned(s) => KStringRef::from_ref(s.as_str()),
+ }
+ }
+
+ #[inline]
+ pub(super) fn as_str(&self) -> &str {
+ match self {
+ Self::Singleton(s) => s,
+ Self::Inline(s) => s.as_str(),
+ Self::Owned(s) => s.as_str(),
+ }
+ }
+
+ #[inline]
+ pub(super) fn into_boxed_str(self) -> crate::backend::BoxedStr {
+ match self {
+ Self::Singleton(s) => crate::backend::BoxedStr::from(s),
+ Self::Inline(s) => crate::backend::BoxedStr::from(s.as_str()),
+ Self::Owned(s) => crate::backend::BoxedStr::from(s.as_str()),
+ }
+ }
+
+ /// Convert to a Cow str
+ #[inline]
+ pub(super) fn into_cow_str(self) -> Cow<'static, str> {
+ match self {
+ Self::Singleton(s) => Cow::Borrowed(s),
+ Self::Inline(s) => Cow::Owned(s.as_str().into()),
+ Self::Owned(s) => Cow::Owned(s.as_str().into()),
+ }
+ }
+ }
+
+ // Explicit to avoid inlining which cuts clone times in half.
+ //
+ // An automatically derived `clone()` has 10ns overhead while the explicit `Deref`/`as_str` has
+ // none of that. Being explicit and removing the `#[inline]` attribute dropped the overhead to
+ // 5ns.
+ //
+ // My only guess is that the `clone()` calls we delegate to are just that much bigger than
+ // `as_str()` that, when combined with a jump table, is blowing the icache, slowing things down.
+ impl<B: Clone> Clone for KStringInner<B> {
+ fn clone(&self) -> Self {
+ match self {
+ Self::Singleton(s) => Self::Singleton(s),
+ Self::Inline(s) => Self::Inline(*s),
+ Self::Owned(s) => Self::Owned(s.clone()),
+ }
+ }
+ }
+
+ #[allow(unused)]
+ const LEN_SIZE: usize = std::mem::size_of::<crate::stack::Len>();
+
+ #[allow(unused)]
+ const TAG_SIZE: usize = std::mem::size_of::<u8>();
+
+ #[allow(unused)]
+ const MAX_CAPACITY: usize =
+ std::mem::size_of::<crate::string::StdString>() - TAG_SIZE - LEN_SIZE;
+
+ // Performance seems to slow down when trying to occupy all of the padding left by `String`'s
+ // discriminant. The question is whether faster len=1-16 "allocations" outweighs going to the heap
+ // for len=17-22.
+ #[allow(unused)]
+ const ALIGNED_CAPACITY: usize = std::mem::size_of::<crate::backend::DefaultStr>() - LEN_SIZE;
+
+ #[cfg(feature = "max_inline")]
+ const CAPACITY: usize = MAX_CAPACITY;
+ #[cfg(not(feature = "max_inline"))]
+ const CAPACITY: usize = ALIGNED_CAPACITY;
+}
+
+#[cfg(feature = "unsafe")]
+mod inner {
+ use super::*;
+
+ pub(super) union KStringInner<B> {
+ tag: TagVariant,
+ singleton: SingletonVariant,
+ owned: std::mem::ManuallyDrop<OwnedVariant<B>>,
+ inline: InlineVariant,
+ }
+
+ impl<B> KStringInner<B> {
+ /// Create a reference to a `'static` data.
+ #[inline]
+ pub const fn from_static(other: &'static str) -> Self {
+ Self {
+ singleton: SingletonVariant::new(other),
+ }
+ }
+
+ #[inline]
+ pub fn try_inline(other: &str) -> Option<Self> {
+ StackString::try_new(other).map(|inline| Self {
+ inline: InlineVariant::new(inline),
+ })
+ }
+
+ #[inline]
+ const fn tag(&self) -> Tag {
+ unsafe {
+ // SAFETY: `tag` is in the same spot in each variant
+ self.tag.tag
+ }
+ }
+ }
+
+ impl<B: crate::backend::HeapStr> KStringInner<B> {
+ #[inline]
+ pub(super) fn from_boxed(other: crate::backend::BoxedStr) -> Self {
+ #[allow(clippy::useless_conversion)]
+ let payload = B::from_boxed_str(other);
+ Self {
+ owned: std::mem::ManuallyDrop::new(OwnedVariant::new(payload)),
+ }
+ }
+
+ #[inline]
+ pub(super) fn from_string(other: StdString) -> Self {
+ if (0..=CAPACITY).contains(&other.len()) {
+ let payload = unsafe {
+ // SAFETY: range check ensured this is always safe
+ StackString::new_unchecked(other.as_str())
+ };
+ Self {
+ inline: InlineVariant::new(payload),
+ }
+ } else {
+ Self::from_boxed(other.into_boxed_str())
+ }
+ }
+
+ #[inline]
+ pub(super) fn from_ref(other: &str) -> Self {
+ if (0..=CAPACITY).contains(&other.len()) {
+ let payload = unsafe {
+ // SAFETY: range check ensured this is always safe
+ StackString::new_unchecked(other)
+ };
+ Self {
+ inline: InlineVariant::new(payload),
+ }
+ } else {
+ #[allow(clippy::useless_conversion)]
+ let payload = B::from_str(other);
+ Self {
+ owned: std::mem::ManuallyDrop::new(OwnedVariant::new(payload)),
+ }
+ }
+ }
+
+ #[inline]
+ pub(super) fn as_ref(&self) -> KStringRef<'_> {
+ let tag = self.tag();
+ unsafe {
+ // SAFETY: `tag` ensures access to correct variant
+ if tag.is_singleton() {
+ KStringRef::from_static(self.singleton.payload)
+ } else if tag.is_owned() {
+ KStringRef::from_ref(self.owned.payload.as_str())
+ } else {
+ debug_assert!(tag.is_inline());
+ KStringRef::from_ref(self.inline.payload.as_str())
+ }
+ }
+ }
+
+ #[inline]
+ pub(super) fn as_str(&self) -> &str {
+ let tag = self.tag();
+ unsafe {
+ // SAFETY: `tag` ensures access to correct variant
+ if tag.is_singleton() {
+ self.singleton.payload
+ } else if tag.is_owned() {
+ self.owned.payload.as_str()
+ } else {
+ debug_assert!(tag.is_inline());
+ self.inline.payload.as_str()
+ }
+ }
+ }
+
+ #[inline]
+ pub(super) fn into_boxed_str(self) -> crate::backend::BoxedStr {
+ let tag = self.tag();
+ unsafe {
+ // SAFETY: `tag` ensures access to correct variant
+ if tag.is_singleton() {
+ crate::backend::BoxedStr::from(self.singleton.payload)
+ } else if tag.is_owned() {
+ crate::backend::BoxedStr::from(self.owned.payload.as_str())
+ } else {
+ debug_assert!(tag.is_inline());
+ crate::backend::BoxedStr::from(self.inline.payload.as_ref())
+ }
+ }
+ }
+
+ /// Convert to a Cow str
+ #[inline]
+ pub(super) fn into_cow_str(self) -> Cow<'static, str> {
+ let tag = self.tag();
+ unsafe {
+ // SAFETY: `tag` ensures access to correct variant
+ if tag.is_singleton() {
+ Cow::Borrowed(self.singleton.payload)
+ } else if tag.is_owned() {
+ Cow::Owned(self.owned.payload.as_str().into())
+ } else {
+ debug_assert!(tag.is_inline());
+ Cow::Owned(self.inline.payload.as_str().into())
+ }
+ }
+ }
+ }
+
+ // Explicit to avoid inlining which cuts clone times in half.
+ //
+ // An automatically derived `clone()` has 10ns overhead while the explicit `Deref`/`as_str` has
+ // none of that. Being explicit and removing the `#[inline]` attribute dropped the overhead to
+ // 5ns.
+ //
+ // My only guess is that the `clone()` calls we delegate to are just that much bigger than
+ // `as_str()` that, when combined with a jump table, is blowing the icache, slowing things down.
+ impl<B: Clone> Clone for KStringInner<B> {
+ fn clone(&self) -> Self {
+ let tag = self.tag();
+ if tag.is_owned() {
+ unsafe {
+ // SAFETY: `tag` ensures access to correct variant
+ Self {
+ owned: std::mem::ManuallyDrop::new(OwnedVariant::new(
+ self.owned.payload.clone(),
+ )),
+ }
+ }
+ } else {
+ unsafe {
+ // SAFETY: `tag` ensures access to correct variant
+ // SAFETY: non-owned types are copyable
+ std::mem::transmute_copy(self)
+ }
+ }
+ }
+ }
+
+ impl<B> Drop for KStringInner<B> {
+ fn drop(&mut self) {
+ let tag = self.tag();
+ if tag.is_owned() {
+ unsafe {
+ // SAFETY: `tag` ensures we are using the right variant
+ std::mem::ManuallyDrop::drop(&mut self.owned)
+ }
+ }
+ }
+ }
+
+ #[allow(unused)]
+ const LEN_SIZE: usize = std::mem::size_of::<crate::stack::Len>();
+
+ #[allow(unused)]
+ const TAG_SIZE: usize = std::mem::size_of::<Tag>();
+
+ #[allow(unused)]
+ const PAYLOAD_SIZE: usize = std::mem::size_of::<crate::backend::DefaultStr>();
+ type Payload = Padding<PAYLOAD_SIZE>;
+
+ #[allow(unused)]
+ const TARGET_SIZE: usize = std::mem::size_of::<Target>();
+ type Target = crate::string::StdString;
+
+ #[allow(unused)]
+ const MAX_CAPACITY: usize = TARGET_SIZE - LEN_SIZE - TAG_SIZE;
+
+ // Performance seems to slow down when trying to occupy all of the padding left by `String`'s
+ // discriminant. The question is whether faster len=1-16 "allocations" outweighs going to the heap
+ // for len=17-22.
+ #[allow(unused)]
+ const ALIGNED_CAPACITY: usize = PAYLOAD_SIZE - LEN_SIZE;
+
+ #[cfg(feature = "max_inline")]
+ const CAPACITY: usize = MAX_CAPACITY;
+ #[cfg(not(feature = "max_inline"))]
+ const CAPACITY: usize = ALIGNED_CAPACITY;
+
+ const PAYLOAD_PAD_SIZE: usize = TARGET_SIZE - PAYLOAD_SIZE - TAG_SIZE;
+ const INLINE_PAD_SIZE: usize = TARGET_SIZE - CAPACITY - LEN_SIZE - TAG_SIZE;
+
+ #[derive(Copy, Clone)]
+ #[repr(C)]
+ struct TagVariant {
+ payload: Payload,
+ pad: Padding<PAYLOAD_PAD_SIZE>,
+ tag: Tag,
+ }
+ static_assertions::assert_eq_size!(Target, TagVariant);
+
+ #[derive(Copy, Clone)]
+ #[repr(C)]
+ struct SingletonVariant {
+ payload: &'static str,
+ pad: Padding<PAYLOAD_PAD_SIZE>,
+ tag: Tag,
+ }
+ static_assertions::assert_eq_size!(Payload, &'static str);
+ static_assertions::assert_eq_size!(Target, SingletonVariant);
+
+ impl SingletonVariant {
+ #[inline]
+ const fn new(payload: &'static str) -> Self {
+ Self {
+ payload,
+ pad: Padding::new(),
+ tag: Tag::SINGLETON,
+ }
+ }
+ }
+
+ impl std::fmt::Debug for SingletonVariant {
+ #[inline]
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ self.payload.fmt(f)
+ }
+ }
+
+ #[derive(Clone)]
+ #[repr(C)]
+ struct OwnedVariant<B> {
+ payload: B,
+ pad: Padding<PAYLOAD_PAD_SIZE>,
+ tag: Tag,
+ }
+ static_assertions::assert_eq_size!(Payload, crate::backend::DefaultStr);
+ static_assertions::assert_eq_size!(Target, OwnedVariant<crate::backend::DefaultStr>);
+
+ impl<B> OwnedVariant<B> {
+ #[inline]
+ const fn new(payload: B) -> Self {
+ Self {
+ payload,
+ pad: Padding::new(),
+ tag: Tag::OWNED,
+ }
+ }
+ }
+
+ impl<B: crate::backend::HeapStr> std::fmt::Debug for OwnedVariant<B> {
+ #[inline]
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ self.payload.fmt(f)
+ }
+ }
+
+ #[derive(Copy, Clone)]
+ #[repr(C)]
+ struct InlineVariant {
+ payload: StackString<CAPACITY>,
+ pad: Padding<INLINE_PAD_SIZE>,
+ tag: Tag,
+ }
+ static_assertions::assert_eq_size!(Target, InlineVariant);
+
+ impl InlineVariant {
+ #[inline]
+ const fn new(payload: StackString<CAPACITY>) -> Self {
+ Self {
+ payload,
+ pad: Padding::new(),
+ tag: Tag::INLINE,
+ }
+ }
+ }
+
+ impl std::fmt::Debug for InlineVariant {
+ #[inline]
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ self.payload.fmt(f)
+ }
+ }
+
+ #[derive(Copy, Clone, PartialEq, Eq)]
+ #[repr(transparent)]
+ struct Tag(u8);
+
+ impl Tag {
+ const SINGLETON: Tag = Tag(0);
+ const OWNED: Tag = Tag(u8::MAX);
+ const INLINE: Tag = Tag(1);
+
+ #[inline]
+ const fn is_singleton(self) -> bool {
+ self.0 == Self::SINGLETON.0
+ }
+
+ #[inline]
+ const fn is_owned(self) -> bool {
+ self.0 == Self::OWNED.0
+ }
+
+ #[inline]
+ const fn is_inline(self) -> bool {
+ !self.is_singleton() && !self.is_owned()
+ }
+ }
+
+ #[derive(Copy, Clone)]
+ #[repr(transparent)]
+ struct Padding<const L: usize>([std::mem::MaybeUninit<u8>; L]);
+
+ impl<const L: usize> Padding<L> {
+ const fn new() -> Self {
+ let padding = unsafe {
+ // SAFETY: Padding, never actually used
+ std::mem::MaybeUninit::uninit().assume_init()
+ };
+ Self(padding)
+ }
+ }
+
+ impl<const L: usize> Default for Padding<L> {
+ fn default() -> Self {
+ Self::new()
+ }
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use super::*;
+
+ #[test]
+ fn test_size() {
+ println!("KString: {}", std::mem::size_of::<KString>());
+ }
+}
diff --git a/vendor/kstring/src/string_cow.rs b/vendor/kstring/src/string_cow.rs
new file mode 100644
index 000000000..6a1b4b89a
--- /dev/null
+++ b/vendor/kstring/src/string_cow.rs
@@ -0,0 +1,383 @@
+use std::{borrow::Cow, fmt};
+
+use crate::KStringBase;
+use crate::KStringRef;
+use crate::KStringRefInner;
+
+type StdString = std::string::String;
+type BoxedStr = Box<str>;
+
+/// A reference to a UTF-8 encoded, immutable string.
+pub type KStringCow<'s> = KStringCowBase<'s, crate::backend::DefaultStr>;
+
+/// A reference to a UTF-8 encoded, immutable string.
+#[derive(Clone)]
+#[repr(transparent)]
+pub struct KStringCowBase<'s, B = crate::backend::DefaultStr> {
+ pub(crate) inner: KStringCowInner<'s, B>,
+}
+
+#[derive(Clone)]
+pub(crate) enum KStringCowInner<'s, B> {
+ Borrowed(&'s str),
+ Owned(KStringBase<B>),
+}
+
+impl<'s, B> KStringCowBase<'s, B> {
+ /// Create a new empty `KStringCowBase`.
+ #[inline]
+ #[must_use]
+ pub const fn new() -> Self {
+ Self::from_static("")
+ }
+
+ /// Create a reference to a `'static` data.
+ #[inline]
+ #[must_use]
+ pub const fn from_static(other: &'static str) -> Self {
+ Self {
+ inner: KStringCowInner::Owned(KStringBase::from_static(other)),
+ }
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> KStringCowBase<'s, B> {
+ /// Create an owned `KStringCowBase`.
+ #[inline]
+ #[must_use]
+ pub fn from_boxed(other: BoxedStr) -> Self {
+ Self {
+ inner: KStringCowInner::Owned(KStringBase::from_boxed(other)),
+ }
+ }
+
+ /// Create an owned `KStringCowBase`.
+ #[inline]
+ #[must_use]
+ pub fn from_string(other: StdString) -> Self {
+ Self {
+ inner: KStringCowInner::Owned(KStringBase::from_string(other)),
+ }
+ }
+
+ /// Create a reference to a borrowed data.
+ #[inline]
+ #[must_use]
+ pub fn from_ref(other: &'s str) -> Self {
+ Self {
+ inner: KStringCowInner::Borrowed(other),
+ }
+ }
+
+ /// Get a reference to the `KStringBase`.
+ #[inline]
+ #[must_use]
+ pub fn as_ref(&self) -> KStringRef<'_> {
+ self.inner.as_ref()
+ }
+
+ /// Clone the data into an owned-type.
+ #[inline]
+ #[must_use]
+ pub fn into_owned(self) -> KStringBase<B> {
+ self.inner.into_owned()
+ }
+
+ /// Extracts a string slice containing the entire `KStringCowBase`.
+ #[inline]
+ #[must_use]
+ pub fn as_str(&self) -> &str {
+ self.inner.as_str()
+ }
+
+ /// Convert to a mutable string type, cloning the data if necessary.
+ #[inline]
+ #[must_use]
+ pub fn into_string(self) -> StdString {
+ String::from(self.into_boxed_str())
+ }
+
+ /// Convert to a mutable string type, cloning the data if necessary.
+ #[inline]
+ #[must_use]
+ pub fn into_boxed_str(self) -> BoxedStr {
+ self.inner.into_boxed_str()
+ }
+
+ /// Convert to a Cow str
+ #[inline]
+ #[must_use]
+ pub fn into_cow_str(self) -> Cow<'s, str> {
+ self.inner.into_cow_str()
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> KStringCowInner<'s, B> {
+ #[inline]
+ fn as_ref(&self) -> KStringRef<'_> {
+ match self {
+ Self::Borrowed(s) => KStringRef::from_ref(s),
+ Self::Owned(s) => s.as_ref(),
+ }
+ }
+
+ #[inline]
+ fn into_owned(self) -> KStringBase<B> {
+ match self {
+ Self::Borrowed(s) => KStringBase::from_ref(s),
+ Self::Owned(s) => s,
+ }
+ }
+
+ #[inline]
+ fn as_str(&self) -> &str {
+ match self {
+ Self::Borrowed(s) => s,
+ Self::Owned(s) => s.as_str(),
+ }
+ }
+
+ #[inline]
+ fn into_boxed_str(self) -> BoxedStr {
+ match self {
+ Self::Borrowed(s) => BoxedStr::from(s),
+ Self::Owned(s) => s.into_boxed_str(),
+ }
+ }
+
+ /// Convert to a Cow str
+ #[inline]
+ fn into_cow_str(self) -> Cow<'s, str> {
+ match self {
+ Self::Borrowed(s) => Cow::Borrowed(s),
+ Self::Owned(s) => s.into_cow_str(),
+ }
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> std::ops::Deref for KStringCowBase<'s, B> {
+ type Target = str;
+
+ #[inline]
+ fn deref(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> Eq for KStringCowBase<'s, B> {}
+
+impl<'s, B: crate::backend::HeapStr> PartialEq<KStringCowBase<'s, B>> for KStringCowBase<'s, B> {
+ #[inline]
+ fn eq(&self, other: &KStringCowBase<'s, B>) -> bool {
+ PartialEq::eq(self.as_str(), other.as_str())
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> PartialEq<str> for KStringCowBase<'s, B> {
+ #[inline]
+ fn eq(&self, other: &str) -> bool {
+ PartialEq::eq(self.as_str(), other)
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> PartialEq<&'s str> for KStringCowBase<'s, B> {
+ #[inline]
+ fn eq(&self, other: &&str) -> bool {
+ PartialEq::eq(self.as_str(), *other)
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> PartialEq<String> for KStringCowBase<'s, B> {
+ #[inline]
+ fn eq(&self, other: &StdString) -> bool {
+ PartialEq::eq(self.as_str(), other.as_str())
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> Ord for KStringCowBase<'s, B> {
+ #[inline]
+ fn cmp(&self, other: &Self) -> std::cmp::Ordering {
+ self.as_str().cmp(other.as_str())
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> PartialOrd for KStringCowBase<'s, B> {
+ #[inline]
+ fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
+ self.as_str().partial_cmp(other.as_str())
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> std::hash::Hash for KStringCowBase<'s, B> {
+ #[inline]
+ fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
+ self.as_str().hash(state);
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> fmt::Debug for KStringCowBase<'s, B> {
+ #[inline]
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ self.as_str().fmt(f)
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> fmt::Display for KStringCowBase<'s, B> {
+ #[inline]
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fmt::Display::fmt(self.as_str(), f)
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> AsRef<str> for KStringCowBase<'s, B> {
+ #[inline]
+ fn as_ref(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> AsRef<[u8]> for KStringCowBase<'s, B> {
+ #[inline]
+ fn as_ref(&self) -> &[u8] {
+ self.as_bytes()
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> AsRef<std::ffi::OsStr> for KStringCowBase<'s, B> {
+ #[inline]
+ fn as_ref(&self) -> &std::ffi::OsStr {
+ (&**self).as_ref()
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> AsRef<std::path::Path> for KStringCowBase<'s, B> {
+ #[inline]
+ fn as_ref(&self) -> &std::path::Path {
+ std::path::Path::new(self)
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> std::borrow::Borrow<str> for KStringCowBase<'s, B> {
+ #[inline]
+ fn borrow(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl<'s, B> Default for KStringCowBase<'s, B> {
+ #[inline]
+ fn default() -> Self {
+ Self::new()
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> From<KStringBase<B>> for KStringCowBase<'s, B> {
+ #[inline]
+ fn from(other: KStringBase<B>) -> Self {
+ let inner = KStringCowInner::Owned(other);
+ Self { inner }
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> From<&'s KStringBase<B>> for KStringCowBase<'s, B> {
+ #[inline]
+ fn from(other: &'s KStringBase<B>) -> Self {
+ let other = other.as_ref();
+ other.into()
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> From<KStringRef<'s>> for KStringCowBase<'s, B> {
+ #[inline]
+ fn from(other: KStringRef<'s>) -> Self {
+ match other.inner {
+ KStringRefInner::Borrowed(s) => Self::from_ref(s),
+ KStringRefInner::Singleton(s) => Self::from_static(s),
+ }
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> From<&'s KStringRef<'s>> for KStringCowBase<'s, B> {
+ #[inline]
+ fn from(other: &'s KStringRef<'s>) -> Self {
+ match other.inner {
+ KStringRefInner::Borrowed(s) => Self::from_ref(s),
+ KStringRefInner::Singleton(s) => Self::from_static(s),
+ }
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> From<StdString> for KStringCowBase<'s, B> {
+ #[inline]
+ fn from(other: StdString) -> Self {
+ Self::from_string(other)
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> From<&'s StdString> for KStringCowBase<'s, B> {
+ #[inline]
+ fn from(other: &'s StdString) -> Self {
+ Self::from_ref(other.as_str())
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> From<BoxedStr> for KStringCowBase<'s, B> {
+ #[inline]
+ fn from(other: BoxedStr) -> Self {
+ // Since the memory is already allocated, don't bother moving it into a FixedString
+ Self::from_boxed(other)
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> From<&'s BoxedStr> for KStringCowBase<'s, B> {
+ #[inline]
+ fn from(other: &'s BoxedStr) -> Self {
+ Self::from_ref(other)
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> From<&'s str> for KStringCowBase<'s, B> {
+ #[inline]
+ fn from(other: &'s str) -> Self {
+ Self::from_ref(other)
+ }
+}
+
+impl<B: crate::backend::HeapStr> std::str::FromStr for KStringCowBase<'_, B> {
+ type Err = std::convert::Infallible;
+ #[inline]
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ Ok(Self::from_string(s.into()))
+ }
+}
+
+#[cfg(feature = "serde")]
+impl<'s, B: crate::backend::HeapStr> serde::Serialize for KStringCowBase<'s, B> {
+ #[inline]
+ fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+ where
+ S: serde::Serializer,
+ {
+ serializer.serialize_str(self.as_str())
+ }
+}
+
+#[cfg(feature = "serde")]
+impl<'de, 's, B: crate::backend::HeapStr> serde::Deserialize<'de> for KStringCowBase<'s, B> {
+ fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+ where
+ D: serde::Deserializer<'de>,
+ {
+ KStringBase::deserialize(deserializer).map(|s| s.into())
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use super::*;
+
+ #[test]
+ fn test_size() {
+ println!("KStringCow: {}", std::mem::size_of::<KStringCow<'static>>());
+ }
+}
diff --git a/vendor/kstring/src/string_ref.rs b/vendor/kstring/src/string_ref.rs
new file mode 100644
index 000000000..a79b9d46c
--- /dev/null
+++ b/vendor/kstring/src/string_ref.rs
@@ -0,0 +1,277 @@
+use std::fmt;
+
+use crate::KStringBase;
+use crate::KStringCowBase;
+
+type StdString = std::string::String;
+type BoxedStr = Box<str>;
+
+/// A reference to a UTF-8 encoded, immutable string.
+#[derive(Copy, Clone)]
+#[repr(transparent)]
+pub struct KStringRef<'s> {
+ pub(crate) inner: KStringRefInner<'s>,
+}
+
+#[derive(Copy, Clone, Debug)]
+pub(crate) enum KStringRefInner<'s> {
+ Borrowed(&'s str),
+ Singleton(&'static str),
+}
+
+impl<'s> KStringRef<'s> {
+ /// Create a new empty `KStringBase`.
+ #[inline]
+ #[must_use]
+ pub const fn new() -> Self {
+ Self::from_static("")
+ }
+
+ /// Create a reference to a `'static` data.
+ #[inline]
+ #[must_use]
+ pub const fn from_static(other: &'static str) -> Self {
+ Self {
+ inner: KStringRefInner::Singleton(other),
+ }
+ }
+
+ /// Create a reference to a borrowed data.
+ #[inline]
+ #[must_use]
+ pub fn from_ref(other: &'s str) -> Self {
+ Self {
+ inner: KStringRefInner::Borrowed(other),
+ }
+ }
+
+ /// Clone the data into an owned-type.
+ #[inline]
+ #[must_use]
+ #[allow(clippy::wrong_self_convention)]
+ pub fn to_owned<B: crate::backend::HeapStr>(&self) -> KStringBase<B> {
+ self.inner.to_owned()
+ }
+
+ /// Extracts a string slice containing the entire `KStringRef`.
+ #[inline]
+ #[must_use]
+ pub fn as_str(&self) -> &str {
+ self.inner.as_str()
+ }
+
+ /// Convert to a mutable string type, cloning the data if necessary.
+ #[inline]
+ #[must_use]
+ pub fn into_mut(self) -> StdString {
+ self.inner.into_mut()
+ }
+}
+
+impl<'s> KStringRefInner<'s> {
+ #[inline]
+ #[allow(clippy::wrong_self_convention)]
+ fn to_owned<B: crate::backend::HeapStr>(&self) -> KStringBase<B> {
+ match self {
+ Self::Borrowed(s) => KStringBase::from_ref(s),
+ Self::Singleton(s) => KStringBase::from_static(s),
+ }
+ }
+
+ #[inline]
+ fn as_str(&self) -> &str {
+ match self {
+ Self::Borrowed(s) => s,
+ Self::Singleton(s) => s,
+ }
+ }
+
+ #[inline]
+ fn into_mut(self) -> StdString {
+ self.as_str().to_owned()
+ }
+}
+
+impl<'s> std::ops::Deref for KStringRef<'s> {
+ type Target = str;
+
+ #[inline]
+ fn deref(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl<'s> Eq for KStringRef<'s> {}
+
+impl<'s> PartialEq<KStringRef<'s>> for KStringRef<'s> {
+ #[inline]
+ fn eq(&self, other: &KStringRef<'s>) -> bool {
+ PartialEq::eq(self.as_str(), other.as_str())
+ }
+}
+
+impl<'s> PartialEq<str> for KStringRef<'s> {
+ #[inline]
+ fn eq(&self, other: &str) -> bool {
+ PartialEq::eq(self.as_str(), other)
+ }
+}
+
+impl<'s> PartialEq<&'s str> for KStringRef<'s> {
+ #[inline]
+ fn eq(&self, other: &&str) -> bool {
+ PartialEq::eq(self.as_str(), *other)
+ }
+}
+
+impl<'s> PartialEq<String> for KStringRef<'s> {
+ #[inline]
+ fn eq(&self, other: &StdString) -> bool {
+ PartialEq::eq(self.as_str(), other.as_str())
+ }
+}
+
+impl<'s> Ord for KStringRef<'s> {
+ #[inline]
+ fn cmp(&self, other: &Self) -> std::cmp::Ordering {
+ self.as_str().cmp(other.as_str())
+ }
+}
+
+impl<'s> PartialOrd for KStringRef<'s> {
+ #[inline]
+ fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
+ self.as_str().partial_cmp(other.as_str())
+ }
+}
+
+impl<'s> std::hash::Hash for KStringRef<'s> {
+ #[inline]
+ fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
+ self.as_str().hash(state);
+ }
+}
+
+impl<'s> fmt::Debug for KStringRef<'s> {
+ #[inline]
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fmt::Debug::fmt(&self.inner, f)
+ }
+}
+
+impl<'s> fmt::Display for KStringRef<'s> {
+ #[inline]
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fmt::Display::fmt(self.as_str(), f)
+ }
+}
+
+impl<'s> AsRef<str> for KStringRef<'s> {
+ #[inline]
+ fn as_ref(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl<'s> AsRef<[u8]> for KStringRef<'s> {
+ #[inline]
+ fn as_ref(&self) -> &[u8] {
+ self.as_bytes()
+ }
+}
+
+impl<'s> AsRef<std::ffi::OsStr> for KStringRef<'s> {
+ #[inline]
+ fn as_ref(&self) -> &std::ffi::OsStr {
+ (&**self).as_ref()
+ }
+}
+
+impl<'s> AsRef<std::path::Path> for KStringRef<'s> {
+ #[inline]
+ fn as_ref(&self) -> &std::path::Path {
+ std::path::Path::new(self)
+ }
+}
+
+impl<'s> std::borrow::Borrow<str> for KStringRef<'s> {
+ #[inline]
+ fn borrow(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl<'s> Default for KStringRef<'s> {
+ #[inline]
+ fn default() -> Self {
+ Self::new()
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> From<&'s KStringBase<B>> for KStringRef<'s> {
+ #[inline]
+ fn from(other: &'s KStringBase<B>) -> Self {
+ other.as_ref()
+ }
+}
+
+impl<'s, B: crate::backend::HeapStr> From<&'s KStringCowBase<'s, B>> for KStringRef<'s> {
+ #[inline]
+ fn from(other: &'s KStringCowBase<'s, B>) -> Self {
+ other.as_ref()
+ }
+}
+
+impl<'s> From<&'s StdString> for KStringRef<'s> {
+ #[inline]
+ fn from(other: &'s StdString) -> Self {
+ KStringRef::from_ref(other.as_str())
+ }
+}
+
+impl<'s> From<&'s BoxedStr> for KStringRef<'s> {
+ #[inline]
+ fn from(other: &'s BoxedStr) -> Self {
+ Self::from_ref(other)
+ }
+}
+
+impl<'s> From<&'s str> for KStringRef<'s> {
+ #[inline]
+ fn from(other: &'s str) -> Self {
+ KStringRef::from_ref(other)
+ }
+}
+
+#[cfg(feature = "serde")]
+impl<'s> serde::Serialize for KStringRef<'s> {
+ #[inline]
+ fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+ where
+ S: serde::Serializer,
+ {
+ serializer.serialize_str(self.as_str())
+ }
+}
+
+#[cfg(feature = "serde")]
+impl<'de: 's, 's> serde::Deserialize<'de> for KStringRef<'s> {
+ fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+ where
+ D: serde::Deserializer<'de>,
+ {
+ let s: &'s str = serde::Deserialize::deserialize(deserializer)?;
+ let s = KStringRef::from_ref(s);
+ Ok(s)
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use super::*;
+
+ #[test]
+ fn test_size() {
+ println!("KStringRef: {}", std::mem::size_of::<KStringRef<'static>>());
+ }
+}
diff --git a/vendor/libc/.cargo-checksum.json b/vendor/libc/.cargo-checksum.json
index 44ef53c6c..ea288caf8 100644
--- a/vendor/libc/.cargo-checksum.json
+++ b/vendor/libc/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CONTRIBUTING.md":"bdc90b52cf803faac96e594069a86dd8ea150d5ba7fb3e6cadfc08dac4c7b0ce","Cargo.toml":"a58e58fa9bde015e08609ea2f17e56c5df7c82aa6f3fa1a144c02ee4715227b9","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"a8d47ff51ca256f56a8932dba07660672dbfe3004257ca8de708aac1415937a1","README.md":"ecc47e284f8d007fc048666d5108dd41cdc440ab9eedfe8c47d1634613522787","build.rs":"9e94683e94db80e8282fce07549cf748d9037852fb06df1c7596bea2ed130d50","rustfmt.toml":"eaa2ea84fc1ba0359b77680804903e07bb38d257ab11986b95b158e460f787b2","src/fixed_width_ints.rs":"7f986e5f5e68d25ef04d386fd2f640e8be8f15427a8d4a458ea01d26b8dca0ca","src/fuchsia/aarch64.rs":"893fcec48142d273063ffd814dca33fbec92205fd39ada97075f85201d803996","src/fuchsia/align.rs":"ae1cf8f011a99737eabeb14ffff768e60f13b13363d7646744dbb0f443dab3d6","src/fuchsia/mod.rs":"30f4dc83ef120300d61896696512436377c5f36f1431d98ab7e01e498c0c47d5","src/fuchsia/no_align.rs":"303f3f1b255e0088b5715094353cf00476131d8e94e6aebb3f469557771c8b8a","src/fuchsia/riscv64.rs":"617cd75e79e0e20f664db764a4dc2a396d9fd11a4d95371acd91ed4811293b11","src/fuchsia/x86_64.rs":"93a3632b5cf67d2a6bcb7dc0a558605252d5fe689e0f38d8aa2ec5852255ac87","src/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/hermit/mod.rs":"d3bfce41e4463d4be8020a2d063c9bfa8b665f45f1cc6cbf3163f5d01e7cb21f","src/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/lib.rs":"24111461547739f3646f95bcb66c43f2ae679a727ff5938299434c522c02e458","src/macros.rs":"b457eb028b8e8ab3c24bb7292b874ad4e491edbb83594f6a3da024df5348c088","src/psp.rs":"dd31aabd46171d474ec5828372e28588935120e7355c90c105360d8fa9264c1c","src/sgx.rs":"16a95cdefc81c5ee00d8353a60db363c4cc3e0f75abcd5d0144723f2a306ed1b","src/solid/aarch64.rs":"a726e47f324adf73a4a0b67a2c183408d0cad105ae66acf36db37a42ab7f8707","src/solid/arm.rs":"e39a4f74ebbef3b97b8c95758ad741123d84ed3eb48d9cf4f1f4872097fc27fe","src/solid/mod.rs":"5f4151dca5132e4b4e4c23ab9737e12856dddbdc0ca3f7dbc004328ef3c8acde","src/switch.rs":"9da3dd39b3de45a7928789926e8572d00e1e11a39e6f7289a1349aadce90edba","src/unix/aix/mod.rs":"54229b5e774669c16912112e8b50fa938db76f534971222a11723a05195a0948","src/unix/aix/powerpc64.rs":"cf374d81139d45f9d77c6a764f640bfbf7e0a5903689652c8296f8e10d55169b","src/unix/align.rs":"2cdc7c826ef7ae61f5171c5ae8c445a743d86f1a7f2d9d7e4ceeec56d6874f65","src/unix/bsd/apple/b32/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b32/mod.rs":"2546ad3eb6aecb95f916648bc63264117c92b4b4859532b34cb011e4c75a5a72","src/unix/bsd/apple/b64/aarch64/align.rs":"2eaf0f561a32bdcbf4e0477c8895d5e7bcb5cdebd5fef7b4df2ca8e38e144d94","src/unix/bsd/apple/b64/aarch64/mod.rs":"44c217a4f263afe7a97435de9323d20a96c37836f899ca0925306d4b7e073c27","src/unix/bsd/apple/b64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/mod.rs":"f5e278a1af7fb358891d1c9be4eb7e815aaca0c5cb738d0c3604ba2208a856f7","src/unix/bsd/apple/b64/x86_64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/x86_64/mod.rs":"8c87c5855038aae5d433c8f5eb3b29b0a175879a0245342b3bfd83bdf4cfd936","src/unix/bsd/apple/long_array.rs":"3cf1f19b812e6d093c819dc65ce55b13491963e0780eda0d0bd1577603e81948","src/unix/bsd/apple/mod.rs":"0931fd351d585728e6384d7b952b8d816e9acdb9c86c172324445f3c33f692ca","src/unix/bsd/freebsdlike/dragonfly/errno.rs":"8295b8bb0dfd38d2cdb4d9192cdeeb534cc6c3b208170e64615fa3e0edb3e578","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"f2e78625fe1eb14f43e730a3987eba888cb8ac04c23008e7c2d2f7c72258b9e6","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"6c8e216385f53a4bf5f171749b57602fc34a4e4b160a44ca31c058cb0c8a2126","src/unix/bsd/freebsdlike/freebsd/arm.rs":"59d6a670eea562fb87686e243e0a84603d29a2028a3d4b3f99ccc01bd04d2f47","src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs":"9808d152c1196aa647f1b0f0cf84dac8c930da7d7f897a44975545e3d9d17681","src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs":"e243ae0e89623d4fa9f85afe14369cc5fd5f2028ea715773dbec722ba80dac1f","src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs":"bef9fae288a4f29e941ea369be1cd20b170040e60665a4d49a4a9e79009b72d8","src/unix/bsd/freebsdlike/freebsd/freebsd12/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs":"3c514e037694ce22724abb3c9c4687defda7f0e3456b615ca73593e860e38b16","src/unix/bsd/freebsdlike/freebsd/freebsd13/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs":"318abe48bfdd1c74ecd6afbd6c9329c5c72ce4f7d420edd6be2fc12b223ae32f","src/unix/bsd/freebsdlike/freebsd/freebsd14/x86_64.rs":"e7b5863e222d6cc416b6b0fbe71690fad909e899b4c4ae810bbca117e4fcb650","src/unix/bsd/freebsdlike/freebsd/mod.rs":"4c3cd57aaf7fbce072e28e0d2d285b5fda9702e924561d2fd01e49e6ee186a98","src/unix/bsd/freebsdlike/freebsd/powerpc.rs":"9ca3f82f88974e6db5569f2d76a5a3749b248a31747a6c0da5820492bdfeca42","src/unix/bsd/freebsdlike/freebsd/powerpc64.rs":"2dae3ecc87eac3b11657aa98915def55fc4b5c0de11fe26aae23329a54628a9a","src/unix/bsd/freebsdlike/freebsd/riscv64.rs":"fa4bed4c58cad24ba3395941c7fa6b11e089551a04714f9561078e400f5b2b62","src/unix/bsd/freebsdlike/freebsd/x86.rs":"6766e2ce85e187b306cd3b0b8d7e15b8f4042c5cff81d89b3af69ecc99c70ab0","src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs":"0e1f69a88fca1c32874b1daf5db3d446fefbe518dca497f096cc9168c39dde70","src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs":"51e4dd0c8ae247bb652feda5adad9333ea3bb30c750c3a3935e0b0e47d7803eb","src/unix/bsd/freebsdlike/mod.rs":"0eacafac87fb3a32ef1b85980fece2792e70eba9856af18a7407cc35be68ea57","src/unix/bsd/mod.rs":"dad51a24a524e92bfe9de3ac3b7d394d86058b9b8a1ccd4efa9bbb5c78e7fa1a","src/unix/bsd/netbsdlike/mod.rs":"0a66f7de43710e35a6a546e6c39066aa8b91a6efadb71db88738b0a577fd5537","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"65dcb58d11e8d8028401a9d07ca3eb4cb4f053e04249cc877353449d84ccc4cb","src/unix/bsd/netbsdlike/netbsd/arm.rs":"58cdbb70b0d6f536551f0f3bb3725d2d75c4690db12c26c034e7d6ec4a924452","src/unix/bsd/netbsdlike/netbsd/mod.rs":"90dd33ef20dc3be8aef5bd152a6a06e7ab34f9527b3978487b593aaa16a907bd","src/unix/bsd/netbsdlike/netbsd/powerpc.rs":"ee7ff5d89d0ed22f531237b5059aa669df93a3b5c489fa641465ace8d405bf41","src/unix/bsd/netbsdlike/netbsd/sparc64.rs":"9489f4b3e4566f43bb12dfb92238960613dac7f6a45cc13068a8d152b902d7d9","src/unix/bsd/netbsdlike/netbsd/x86.rs":"20692320e36bfe028d1a34d16fe12ca77aa909cb02bda167376f98f1a09aefe7","src/unix/bsd/netbsdlike/netbsd/x86_64.rs":"1afe5ef46b14397cdd68664b5b232e4f5b035b6db1d4cf411c899d51ebca9f30","src/unix/bsd/netbsdlike/openbsd/aarch64.rs":"dd91931d373b7ecaf6e2de25adadee10d16fa9b12c2cbacdff3eb291e1ba36af","src/unix/bsd/netbsdlike/openbsd/arm.rs":"01580d261bc6447bb327a0d982181b7bdabfa066cee65a30373d3ced729ad307","src/unix/bsd/netbsdlike/openbsd/mips64.rs":"8532a189ae10c7d668d9d4065da8b05d124e09bd39442c9f74a7f231c43eca48","src/unix/bsd/netbsdlike/openbsd/mod.rs":"c27c6673bd3628549083a094219831fd9343129f91067b562781617d2a887148","src/unix/bsd/netbsdlike/openbsd/powerpc.rs":"01580d261bc6447bb327a0d982181b7bdabfa066cee65a30373d3ced729ad307","src/unix/bsd/netbsdlike/openbsd/powerpc64.rs":"1dd5449dd1fd3d51e30ffdeeaece91d0aaf05c710e0ac699fecc5461cfa2c28e","src/unix/bsd/netbsdlike/openbsd/riscv64.rs":"1dd5449dd1fd3d51e30ffdeeaece91d0aaf05c710e0ac699fecc5461cfa2c28e","src/unix/bsd/netbsdlike/openbsd/sparc64.rs":"d04fd287afbaa2c5df9d48c94e8374a532a3ba491b424ddf018270c7312f4085","src/unix/bsd/netbsdlike/openbsd/x86.rs":"6f7f5c4fde2a2259eb547890cbd86570cea04ef85347d7569e94e679448bec87","src/unix/bsd/netbsdlike/openbsd/x86_64.rs":"d31db31630289c85af3339dbe357998a21ca584cbae31607448fe2cf7675a4e1","src/unix/haiku/b32.rs":"a2efdbf7158a6da341e1db9176b0ab193ba88b449616239ed95dced11f54d87b","src/unix/haiku/b64.rs":"ff8115367d3d7d354f792d6176dfaaa26353f57056197b563bf4681f91ff7985","src/unix/haiku/mod.rs":"d7ec086b73db4f72799179627aa6330a513dcf786b06e19c75ff884d1235948e","src/unix/haiku/native.rs":"dbfcbf4954a79d1df2ff58e0590bbcb8c57dfc7a32392aa73ee4726b66bd6cc8","src/unix/haiku/x86_64.rs":"3ec3aeeb7ed208b8916f3e32d42bfd085ff5e16936a1a35d9a52789f043b7237","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"a1494a0bddf301cceb0d9b8529a84b5882fe855ceae77a1c4e8d6034e705e26c","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/linux_like/android/b32/arm.rs":"ce582de7e983a33d3bfad13075c53aac9016cee35f06ad8653ee9072c3ec2564","src/unix/linux_like/android/b32/mod.rs":"7c173e0375119bf06a3081652faede95e5bcd6858e7576b7533d037978737c8f","src/unix/linux_like/android/b32/x86/align.rs":"812914e4241df82e32b12375ca3374615dc3a4bdd4cf31f0423c5815320c0dab","src/unix/linux_like/android/b32/x86/mod.rs":"e6d107efbcd37b5b85dfa18f683300cbf768ffa0237997a9fa52b184a53323ac","src/unix/linux_like/android/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/android/b64/aarch64/int128.rs":"1735f6f5c56770d20dd426442f09724d9b2052b46a7cd82f23f3288a4a7276de","src/unix/linux_like/android/b64/aarch64/mod.rs":"10e963e29ff209703de6336c99cca96fd79789438d34c82a693eae56e8916c3c","src/unix/linux_like/android/b64/mod.rs":"71e4fcbe952bfa4a5f9022f3972e906917b38f729b9d8ef57cd5d179104894ac","src/unix/linux_like/android/b64/riscv64/align.rs":"0bf138f84e5327d8339bcd4adf071a6832b516445e597552c82bbd881095e3a8","src/unix/linux_like/android/b64/riscv64/mod.rs":"19d4bf2237c47127eba9144e0b82e995bc079315e719179a91813b0ae7b0e49d","src/unix/linux_like/android/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/android/b64/x86_64/mod.rs":"4ec2de11a9b65c4325b7b991f0b99a414975e0e61ba8668caca5d921e9b314d1","src/unix/linux_like/android/mod.rs":"66a9e38a47493a42b3b1c325524f3c944e74d1e3e8ecce3cc276ec08fecab13b","src/unix/linux_like/emscripten/align.rs":"86c95cbed7a7161b1f23ee06843e7b0e2340ad92b2cb86fe2a8ef3e0e8c36216","src/unix/linux_like/emscripten/mod.rs":"67d6b90f539f746aa3290ea7f9d3f3f8d2d8a6557233584004ed5697f7821a50","src/unix/linux_like/emscripten/no_align.rs":"0128e4aa721a9902754828b61b5ec7d8a86619983ed1e0544a85d35b1051fad6","src/unix/linux_like/linux/align.rs":"bc5abcd38e2320171e0981e773c9c5fe3e0d5a66fdff049228f6a1acad80ef8b","src/unix/linux_like/linux/arch/generic/mod.rs":"fb5de1368cabae03d3ea0152159b7685a9d91efdecee4c5b83efc085ffef8a73","src/unix/linux_like/linux/arch/mips/mod.rs":"75814e198d1a9a6808be3a5e5edb1bfdc57f75b06394e9040739be363c09d82f","src/unix/linux_like/linux/arch/mod.rs":"5bd5361f8a6ab4e18bbba6da9f92c164ae252b15a0ed10064812544aa1fdf198","src/unix/linux_like/linux/arch/powerpc/mod.rs":"bef6b7af9e5e2b4e5545c9c7e3e23a8b743277a0ed95853e7eddc38e44299f02","src/unix/linux_like/linux/arch/sparc/mod.rs":"91593ec0440f1dd8f8e612028f432c44c14089286e2aca50e10511ab942db8c3","src/unix/linux_like/linux/gnu/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/gnu/b32/arm/align.rs":"6ec0eb3ee93f7ae99fd714b4deabfb5e97fbcefd8c26f5a45fb8e7150899cdeb","src/unix/linux_like/linux/gnu/b32/arm/mod.rs":"9ab3e97b579a9122690cd01026e14528862860346b700aafbb755a7e04054f7f","src/unix/linux_like/linux/gnu/b32/csky/align.rs":"3fed009dc9af3cc81be7087da9d2d7d1f39845e4497e290259c5cdbae25f039d","src/unix/linux_like/linux/gnu/b32/csky/mod.rs":"4c21d6e7463bb22f00b984294893d12c84018d5d26ec661d6a30f4a9625ba639","src/unix/linux_like/linux/gnu/b32/m68k/align.rs":"8faa92f77a9232c035418d45331774e64a9a841d99c91791570a203bf2b45bcb","src/unix/linux_like/linux/gnu/b32/m68k/mod.rs":"6aab7f1b864e9691d14aa7d389f717c4077b8eed72a7f11e3b8c7fef245e4046","src/unix/linux_like/linux/gnu/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/gnu/b32/mips/mod.rs":"6b9a5dac6f937ddc1453e808e3c43502c87143332df9e43ac64fb8b1eda6c116","src/unix/linux_like/linux/gnu/b32/mod.rs":"b56625dd20dd48a8699034d349ef089c540c0ddcbf8a3481d598d101f8b40b78","src/unix/linux_like/linux/gnu/b32/powerpc.rs":"5c5d90326b54b57b98eff4745fe7a3fb02f053b2dc782241a73e807b491936a3","src/unix/linux_like/linux/gnu/b32/riscv32/align.rs":"d321491612be8d5c61b6ec2dc0111beb3a22e58803f99cd37543efe86621b119","src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs":"491a9a97cf712985b75d3ad714691ef60898d88c78bc386a6917de0a6774cc26","src/unix/linux_like/linux/gnu/b32/sparc/align.rs":"21adbed27df73e2d1ed934aaf733a643003d7baf2bde9c48ea440895bcca6d41","src/unix/linux_like/linux/gnu/b32/sparc/mod.rs":"80894eece66e9348f45d1b07ad37c757ea694bbd10ed49d3f920b34e9f51a9a3","src/unix/linux_like/linux/gnu/b32/x86/align.rs":"e4bafdc4a519a7922a81b37a62bbfd1177a2f620890eef8f1fbc47162e9eb413","src/unix/linux_like/linux/gnu/b32/x86/mod.rs":"c703cc5e9de2dc31d9e5831bfb6f354d6e3518b2ae02263f68a9a70f1c0167e2","src/unix/linux_like/linux/gnu/b64/aarch64/align.rs":"fdf1c72375a2167699157e0dd825422690bb6719f7bc69515a2e5846d0431d7c","src/unix/linux_like/linux/gnu/b64/aarch64/fallback.rs":"832e7487249c1c0bb6e9911ce3f7d32ca22378e42392ab83c56915cbc59d8be3","src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs":"bf4611b737813deef6787babf6c01698605f3b75482269b8546318667bc68e29","src/unix/linux_like/linux/gnu/b64/aarch64/int128.rs":"1735f6f5c56770d20dd426442f09724d9b2052b46a7cd82f23f3288a4a7276de","src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs":"11a950697fdda0258c6e37c6b13993348c8de4134105ed4faa79358e53175072","src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs":"172495fbfdf659b9b825148bffc2b62704f63fc872428617e868eb15802c9978","src/unix/linux_like/linux/gnu/b64/loongarch64/align.rs":"060aa33cc737966c691aab8511c5c5729e551458ce18d0e284e0d45f39beeb60","src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs":"18edada8aa5d4127d9aa1bd81c62b5a4209f1efd8b2b2631e801c9e855ab1480","src/unix/linux_like/linux/gnu/b64/mips64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/mips64/mod.rs":"628c410b9aaec3c8f43838a28616b577a1d6de60a9799b09bb884d80281f96eb","src/unix/linux_like/linux/gnu/b64/mod.rs":"6a160ef25439c4fecdb0e3bd0b818742263c791364da874d4febd3aa644ec8e2","src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs":"c778a136f06c2ffeacea19fa14ce79b828f91b67a002dec5ce87289bae36234e","src/unix/linux_like/linux/gnu/b64/riscv64/align.rs":"d321491612be8d5c61b6ec2dc0111beb3a22e58803f99cd37543efe86621b119","src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs":"c8f07efc5ddd5d874f1ebc329cd6907818d132ac3e30f4f2a4b04be3fb388551","src/unix/linux_like/linux/gnu/b64/s390x.rs":"a2fd9277c2dcf76f7a16a3bcca745d5a9932c765c0dc2feb31c3641be25eb0aa","src/unix/linux_like/linux/gnu/b64/sparc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs":"e8047e9966a2b90063e0151a0278c54885e7b323286cf5ab55cbaf151fc772d3","src/unix/linux_like/linux/gnu/b64/x86_64/align.rs":"62e822478356db4a73b6bbd1b36d825b893939ab4b308ec11b0578bcc4b49769","src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs":"891e595d33714b9883b92f0554d1d361fba2b6c3f6cac09a288252f44c6ec667","src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs":"38f74ce15d9662ce4818815a2b87be1618d5e45f190f7e4db84ff3285b4421fb","src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs":"b20218a11364a6dec87f96d6c0d8b19e660697ab09ad5ee0e9b3a9dafedaaebb","src/unix/linux_like/linux/gnu/mod.rs":"47dd970aedda9c70429741d7c9892a0d5d264e9abcb1c41d5bb913a86f0a5362","src/unix/linux_like/linux/gnu/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/mod.rs":"1582c09db7b752af0f796a4cba8aa2bb4ecea895c551a2219e76047bcce74a23","src/unix/linux_like/linux/musl/b32/arm/align.rs":"3e8ac052c1043764776b54c93ba4260e061df998631737a897d9d47d54f7b80c","src/unix/linux_like/linux/musl/b32/arm/mod.rs":"f5b217a93f99c2852f7fd1459f529798372fa7df84ee0cfd3d8cdd5b2021b8cf","src/unix/linux_like/linux/musl/b32/hexagon.rs":"226a8b64ce9c75abbbee6d2dceb0b44f7b6c750c4102ebd4d015194afee6666e","src/unix/linux_like/linux/musl/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/musl/b32/mips/mod.rs":"16f614dd59695497a01b542deacd1669335678bdd0b14d16dde482fb5c4e02f4","src/unix/linux_like/linux/musl/b32/mod.rs":"31677597fd9544c4b1ec1477628288f6273fabbc06e38f33da862ad55f019ce1","src/unix/linux_like/linux/musl/b32/powerpc.rs":"ebf73f570b11512adc4a7b513aedff02a55125ead167fe5dbd45c39afb87cddb","src/unix/linux_like/linux/musl/b32/riscv32/align.rs":"efd2accf33b87de7c7547903359a5da896edc33cd6c719552c7474b60d4a5d48","src/unix/linux_like/linux/musl/b32/riscv32/mod.rs":"7b067c7989a80e35daa9987af799d97dd1fb3df71ef82285137f51fbad2354d9","src/unix/linux_like/linux/musl/b32/x86/align.rs":"08e77fbd7435d7dec2ff56932433bece3f02e47ce810f89004a275a86d39cbe1","src/unix/linux_like/linux/musl/b32/x86/mod.rs":"de632ac323bd2bb4f83d4826d6eb7e29d4b0e6293aa0c4cb9c99ef0fcabc71b7","src/unix/linux_like/linux/musl/b64/aarch64/align.rs":"6ba32725d24d7d8e6aa111f3b57aafa318f83b606abe96561329151829821133","src/unix/linux_like/linux/musl/b64/aarch64/int128.rs":"1735f6f5c56770d20dd426442f09724d9b2052b46a7cd82f23f3288a4a7276de","src/unix/linux_like/linux/musl/b64/aarch64/mod.rs":"31e75179cbb4e26425b3f5b052e358f593153da662884655e60801d852e55dc2","src/unix/linux_like/linux/musl/b64/mips64.rs":"9a5d29f666332bb056d0e2951e9de989aa1dc016075f009db3f2f628e0cdda8c","src/unix/linux_like/linux/musl/b64/mod.rs":"884243eb5af7df963d858d5baf47e622b45f04e0ae701728b134e986191b614b","src/unix/linux_like/linux/musl/b64/powerpc64.rs":"e77f4cf5d65320023043e4354725397f6b079c1b7b6b3cef2c3293350b46b303","src/unix/linux_like/linux/musl/b64/riscv64/align.rs":"d321491612be8d5c61b6ec2dc0111beb3a22e58803f99cd37543efe86621b119","src/unix/linux_like/linux/musl/b64/riscv64/mod.rs":"a80b1813148dec8bc396c02638978c0b4e5e040edafd56d98f8683fe2ae51ab5","src/unix/linux_like/linux/musl/b64/s390x.rs":"80a92e54e47016d051c7bd55bee9580cbedd298164199d71a67d49167e744432","src/unix/linux_like/linux/musl/b64/x86_64/align.rs":"77309276ad7a42cbe59ca381f23590b7a143aded05555b34a5b307b808cbca6e","src/unix/linux_like/linux/musl/b64/x86_64/mod.rs":"032863c74d3ca73cb75483218f9bd774ae1ae7d3646d2ffb21e4cc7d4b5e0e3d","src/unix/linux_like/linux/musl/lfs64.rs":"3e4fb381f3a0756520bde0f1692d4fa45e4ae8133bf7d7c64b0e3fdd512f235f","src/unix/linux_like/linux/musl/mod.rs":"f79e4d7bef14f422c6a77f1573ff503a82305bfa5ac3e4c6f571c09212b75620","src/unix/linux_like/linux/no_align.rs":"62cdca0e011937aaf09a51ca86d9f0ee0fdb05f61ec3c058e6a5d5fa6357d784","src/unix/linux_like/linux/non_exhaustive.rs":"181a05bf94fdb911db83ce793b993bd6548a4115b306a7ef3c10f745a8fea3e9","src/unix/linux_like/linux/uclibc/align.rs":"9ed16138d8e439bd90930845a65eafa7ebd67366e6bf633936d44014f6e4c959","src/unix/linux_like/linux/uclibc/arm/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/arm/mod.rs":"50288ff9e411ab0966da24838f2c2a5618021bc19c422a04f577b2979ef4081e","src/unix/linux_like/linux/uclibc/arm/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips32/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs":"d0c4434e2bf813372c418a8f516c706cdccc9f7be2f0921b2207b0afdb66fe81","src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips64/align.rs":"a7bdcb18a37a2d91e64d5fad83ea3edc78f5412adb28f77ab077dbb26dd08b2d","src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs":"3f38ee6a4690b9d7594be20d216467a34d955f7653c2c8ce1e6147daeb53f1e0","src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs":"4a18e3875698c85229599225ac3401a2a40da87e77b2ad4ef47c6fcd5a24ed30","src/unix/linux_like/linux/uclibc/mips/mod.rs":"a048fce1c2d9b1ad57305642e8ad05ca0f0c7e4753267a2e2d6b4fee5db3b072","src/unix/linux_like/linux/uclibc/mod.rs":"1c3d25cddcfefa2bd17bdc81550826be31a08eef235e13f825f169a5029c8bca","src/unix/linux_like/linux/uclibc/no_align.rs":"3f28637046524618adaa1012e26cb7ffe94b9396e6b518cccdc69d59f274d709","src/unix/linux_like/linux/uclibc/x86_64/l4re.rs":"024eba5753e852dbdd212427351affe7e83f9916c1864bce414d7aa2618f192e","src/unix/linux_like/linux/uclibc/x86_64/mod.rs":"196d03affbefb85716937c15904831e731eb222ee906e05e42102d639a8152ea","src/unix/linux_like/linux/uclibc/x86_64/other.rs":"42c3f71e58cabba373f6a55a623f3c31b85049eb64824c09c2b082b3b2d6a0a8","src/unix/linux_like/mod.rs":"45c98e7a0fad03b03c4c76f11a80e2423873f0a6563e35c60309a29b2c8ff44f","src/unix/mod.rs":"dd4ce377ba9517182e718848739a5c3f58cdbbcd4ee467eef9aaf8df5aed5053","src/unix/newlib/aarch64/mod.rs":"bac93836a9a57b2c710f32f852e92a4d11ad6759ab0fb6ad33e71d60e53278af","src/unix/newlib/align.rs":"28aaf87fafbc6b312622719d472d8cf65f9e5467d15339df5f73e66d8502b28a","src/unix/newlib/arm/mod.rs":"cbba6b3e957eceb496806e60de8725a23ff3fa0015983b4b4fa27b233732b526","src/unix/newlib/espidf/mod.rs":"816f235f4aa4baabba7f2606b31d0fdb03988c52194c966728de8690bf17299d","src/unix/newlib/generic.rs":"eab066d9f0a0f3eb53cc1073d01496bba0110989e1f6a59838afd19f870cd599","src/unix/newlib/horizon/mod.rs":"7cc5cc120437421db139bfa6a90b18168cd3070bdd0f5be96d40fe4c996f3ca1","src/unix/newlib/mod.rs":"9e36de3fd78e10cb6b9a59dc5ebe5a1b44a63ccb91433bb33653fb30d0c303c6","src/unix/newlib/no_align.rs":"e0743b2179495a9514bc3a4d1781e492878c4ec834ee0085d0891dd1712e82fb","src/unix/newlib/powerpc/mod.rs":"0202ffd57caf75b6afa2c9717750ffb96e375ac33df0ae9609a3f831be393b67","src/unix/newlib/vita/mod.rs":"68e0ce186b44e0b3031eb824710e7454dc2a9df98db98120840c3c6f4d885871","src/unix/no_align.rs":"c06e95373b9088266e0b14bba0954eef95f93fb2b01d951855e382d22de78e53","src/unix/nto/aarch64.rs":"4709c9afdc8d583be876598e7c238499ee3e8da5bd2baa614d9c7dd414851555","src/unix/nto/mod.rs":"59ab89a8fb6e0a6d22fa968ed4873c2bafa19a0f60a90c9a5148816cb7440889","src/unix/nto/neutrino.rs":"799bff4ab01a6424db6c5a2b76aa5679826d41495f9d13c63485bf13bc80026b","src/unix/nto/x86_64.rs":"a3e18e93c2999da1cd7a6f748a4b60c07aefb73d8ea2aafec19a84cfb040bc8e","src/unix/redox/mod.rs":"73658b0d28c82a122875aa2b45c489834f4de58c378add7932bbaf3ffb2ae789","src/unix/solarish/compat.rs":"00f1ee3faec9da69204e42f025f6735dd13d894071a154425dcc43ecbdd06e7f","src/unix/solarish/illumos.rs":"cd93c2d84722bbf9933a92842a8998eb0b2afc962f50bc2546ad127b82809fa7","src/unix/solarish/mod.rs":"b1660c631a599a3355116e7485b88ab2f8f2929c2e37851a763431387b902f14","src/unix/solarish/solaris.rs":"41b350a89ddf01cd12a10f93640f92be53be0b0d976021cdc08da17bf3e72edf","src/unix/solarish/x86.rs":"e86e806df0caed72765040eaa2f3c883198d1aa91508540adf9b7008c77f522e","src/unix/solarish/x86_64.rs":"ec2b01f194eb8a6a27133c57681da195a949e03098f3ea1e847227a9c09ef5fc","src/unix/solarish/x86_common.rs":"ac869d9c3c95645c22460468391eb1982023c3a8e02b9e06a72e3aef3d5f1eac","src/vxworks/aarch64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/arm.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/mod.rs":"e4edcbcf43a325e738c9465507594d0c87abf3f0e2b9b046c1425f8d44bdad0f","src/vxworks/powerpc.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/powerpc64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/x86.rs":"552f007f38317620b23889cb7c49d1d115841252439060122f52f434fbc6e5ba","src/vxworks/x86_64.rs":"018d92be3ad628a129eff9f2f5dfbc0883d8b8e5f2fa917b900a7f98ed6b514a","src/wasi.rs":"09ee3b3348b212b050f6ca8ae008a28679ea44a375674307a4e7c9ca0d3ed7d5","src/windows/gnu/align.rs":"b2c13ec1b9f3b39a75c452c80c951dff9d0215e31d77e883b4502afb31794647","src/windows/gnu/mod.rs":"3c8c7edb7cdf5d0c44af936db2a94869585c69dfabeef30571b4f4e38375767a","src/windows/mod.rs":"9fdc5e1c62c441abef7bc62a7343efb2041edc24db9ac0efc0f74df55b69e249","src/windows/msvc/mod.rs":"c068271e00fca6b62bc4bf44bcf142cfc38caeded9b6c4e01d1ceef3ccf986f4","src/xous.rs":"eb0675f25ba01f73072d2b70907fb8abb1148facefe5a20756c49250f3d65fae","tests/const_fn.rs":"cb75a1f0864f926aebe79118fc34d51a0d1ade2c20a394e7774c7e545f21f1f4"},"package":"9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b"} \ No newline at end of file
+{"files":{"CONTRIBUTING.md":"bdc90b52cf803faac96e594069a86dd8ea150d5ba7fb3e6cadfc08dac4c7b0ce","Cargo.toml":"f4493f3fbb5476b37c7fe2210b5c76789115520ceb971de862dc13bb35b353fa","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"a8d47ff51ca256f56a8932dba07660672dbfe3004257ca8de708aac1415937a1","README.md":"4188dac195bf9f4ef9c2b5608273dd31d869adf584d745d46773b627d07d3a18","build.rs":"1c29e9469ff1fc78dea3001aa812ab2c9c2bb2d724b98dccedd9ac6e4396061b","rustfmt.toml":"eaa2ea84fc1ba0359b77680804903e07bb38d257ab11986b95b158e460f787b2","src/fixed_width_ints.rs":"7f986e5f5e68d25ef04d386fd2f640e8be8f15427a8d4a458ea01d26b8dca0ca","src/fuchsia/aarch64.rs":"893fcec48142d273063ffd814dca33fbec92205fd39ada97075f85201d803996","src/fuchsia/align.rs":"ae1cf8f011a99737eabeb14ffff768e60f13b13363d7646744dbb0f443dab3d6","src/fuchsia/mod.rs":"baa0b7c7fadcee5ea91a693138a214de17eed1c592096035a9f4c565ecea9d92","src/fuchsia/no_align.rs":"303f3f1b255e0088b5715094353cf00476131d8e94e6aebb3f469557771c8b8a","src/fuchsia/riscv64.rs":"617cd75e79e0e20f664db764a4dc2a396d9fd11a4d95371acd91ed4811293b11","src/fuchsia/x86_64.rs":"93a3632b5cf67d2a6bcb7dc0a558605252d5fe689e0f38d8aa2ec5852255ac87","src/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/hermit/mod.rs":"2d04cfa0d55dc0a2e36fdc4a45819b9d3722af19bb1932778b44feb4c2f81036","src/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/lib.rs":"9d7030ba3e21064a0f3a8e79927c70d5a95a0026be61be084f3ab021e243e503","src/macros.rs":"b457eb028b8e8ab3c24bb7292b874ad4e491edbb83594f6a3da024df5348c088","src/psp.rs":"dd31aabd46171d474ec5828372e28588935120e7355c90c105360d8fa9264c1c","src/sgx.rs":"16a95cdefc81c5ee00d8353a60db363c4cc3e0f75abcd5d0144723f2a306ed1b","src/solid/aarch64.rs":"a726e47f324adf73a4a0b67a2c183408d0cad105ae66acf36db37a42ab7f8707","src/solid/arm.rs":"e39a4f74ebbef3b97b8c95758ad741123d84ed3eb48d9cf4f1f4872097fc27fe","src/solid/mod.rs":"5f4151dca5132e4b4e4c23ab9737e12856dddbdc0ca3f7dbc004328ef3c8acde","src/switch.rs":"9da3dd39b3de45a7928789926e8572d00e1e11a39e6f7289a1349aadce90edba","src/teeos/mod.rs":"6d372bb8a058f8749d8d9c4fb6aa3badb8b1ada027dea6043d0ad46c3a831bbf","src/unix/aix/mod.rs":"cf9261bac2ae484ed6b525026674f62d0be34a70668ee0954ce5b514dc20cea0","src/unix/aix/powerpc64.rs":"cf374d81139d45f9d77c6a764f640bfbf7e0a5903689652c8296f8e10d55169b","src/unix/align.rs":"2cdc7c826ef7ae61f5171c5ae8c445a743d86f1a7f2d9d7e4ceeec56d6874f65","src/unix/bsd/apple/b32/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b32/mod.rs":"2546ad3eb6aecb95f916648bc63264117c92b4b4859532b34cb011e4c75a5a72","src/unix/bsd/apple/b64/aarch64/align.rs":"2eaf0f561a32bdcbf4e0477c8895d5e7bcb5cdebd5fef7b4df2ca8e38e144d94","src/unix/bsd/apple/b64/aarch64/mod.rs":"44c217a4f263afe7a97435de9323d20a96c37836f899ca0925306d4b7e073c27","src/unix/bsd/apple/b64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/mod.rs":"f5e278a1af7fb358891d1c9be4eb7e815aaca0c5cb738d0c3604ba2208a856f7","src/unix/bsd/apple/b64/x86_64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/x86_64/mod.rs":"8c87c5855038aae5d433c8f5eb3b29b0a175879a0245342b3bfd83bdf4cfd936","src/unix/bsd/apple/long_array.rs":"3cf1f19b812e6d093c819dc65ce55b13491963e0780eda0d0bd1577603e81948","src/unix/bsd/apple/mod.rs":"673e44f65238503b4cd62326775fb30edcbc19a10d8970cd8023cbe030884717","src/unix/bsd/freebsdlike/dragonfly/errno.rs":"8295b8bb0dfd38d2cdb4d9192cdeeb534cc6c3b208170e64615fa3e0edb3e578","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"2777f94909a798df1b8030fb86d02e2118d0ac3e49e9a542df54a569ca5ae2f9","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"6c8e216385f53a4bf5f171749b57602fc34a4e4b160a44ca31c058cb0c8a2126","src/unix/bsd/freebsdlike/freebsd/arm.rs":"59d6a670eea562fb87686e243e0a84603d29a2028a3d4b3f99ccc01bd04d2f47","src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs":"9808d152c1196aa647f1b0f0cf84dac8c930da7d7f897a44975545e3d9d17681","src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs":"e243ae0e89623d4fa9f85afe14369cc5fd5f2028ea715773dbec722ba80dac1f","src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs":"bef9fae288a4f29e941ea369be1cd20b170040e60665a4d49a4a9e79009b72d8","src/unix/bsd/freebsdlike/freebsd/freebsd12/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs":"3c514e037694ce22724abb3c9c4687defda7f0e3456b615ca73593e860e38b16","src/unix/bsd/freebsdlike/freebsd/freebsd13/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs":"318abe48bfdd1c74ecd6afbd6c9329c5c72ce4f7d420edd6be2fc12b223ae32f","src/unix/bsd/freebsdlike/freebsd/freebsd14/x86_64.rs":"e7b5863e222d6cc416b6b0fbe71690fad909e899b4c4ae810bbca117e4fcb650","src/unix/bsd/freebsdlike/freebsd/mod.rs":"32c9085886df9d5eb78f92b5705df3f154c496298d22906f17debb4bb23d6ad9","src/unix/bsd/freebsdlike/freebsd/powerpc.rs":"9ca3f82f88974e6db5569f2d76a5a3749b248a31747a6c0da5820492bdfeca42","src/unix/bsd/freebsdlike/freebsd/powerpc64.rs":"2dae3ecc87eac3b11657aa98915def55fc4b5c0de11fe26aae23329a54628a9a","src/unix/bsd/freebsdlike/freebsd/riscv64.rs":"fa4bed4c58cad24ba3395941c7fa6b11e089551a04714f9561078e400f5b2b62","src/unix/bsd/freebsdlike/freebsd/x86.rs":"6766e2ce85e187b306cd3b0b8d7e15b8f4042c5cff81d89b3af69ecc99c70ab0","src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs":"0e1f69a88fca1c32874b1daf5db3d446fefbe518dca497f096cc9168c39dde70","src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs":"51e4dd0c8ae247bb652feda5adad9333ea3bb30c750c3a3935e0b0e47d7803eb","src/unix/bsd/freebsdlike/mod.rs":"401f00805531ea3e37d648aa10cd4120a4ad3f970199bf388942023f552e3729","src/unix/bsd/mod.rs":"dad51a24a524e92bfe9de3ac3b7d394d86058b9b8a1ccd4efa9bbb5c78e7fa1a","src/unix/bsd/netbsdlike/mod.rs":"779d73f4249f1bf76fbc603d07c0cfd48918d9e5cad71c18b50ecc421a27fc25","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"65dcb58d11e8d8028401a9d07ca3eb4cb4f053e04249cc877353449d84ccc4cb","src/unix/bsd/netbsdlike/netbsd/arm.rs":"58cdbb70b0d6f536551f0f3bb3725d2d75c4690db12c26c034e7d6ec4a924452","src/unix/bsd/netbsdlike/netbsd/mips.rs":"88be18ac43ba224c77e78e4179b6761debc5e6c30a258fac56263809c7af4fbc","src/unix/bsd/netbsdlike/netbsd/mod.rs":"1ec48b98a40a3cd07d5a21fbc20b14735bf827af802d9df809d477f9939494ed","src/unix/bsd/netbsdlike/netbsd/powerpc.rs":"ee7ff5d89d0ed22f531237b5059aa669df93a3b5c489fa641465ace8d405bf41","src/unix/bsd/netbsdlike/netbsd/riscv64.rs":"1cbe2e5ed681cb1054b699da37daaf6c714267df7d332c90fc2a589b11579625","src/unix/bsd/netbsdlike/netbsd/sparc64.rs":"9489f4b3e4566f43bb12dfb92238960613dac7f6a45cc13068a8d152b902d7d9","src/unix/bsd/netbsdlike/netbsd/x86.rs":"20692320e36bfe028d1a34d16fe12ca77aa909cb02bda167376f98f1a09aefe7","src/unix/bsd/netbsdlike/netbsd/x86_64.rs":"1afe5ef46b14397cdd68664b5b232e4f5b035b6db1d4cf411c899d51ebca9f30","src/unix/bsd/netbsdlike/openbsd/aarch64.rs":"dd91931d373b7ecaf6e2de25adadee10d16fa9b12c2cbacdff3eb291e1ba36af","src/unix/bsd/netbsdlike/openbsd/arm.rs":"01580d261bc6447bb327a0d982181b7bdabfa066cee65a30373d3ced729ad307","src/unix/bsd/netbsdlike/openbsd/mips64.rs":"8532a189ae10c7d668d9d4065da8b05d124e09bd39442c9f74a7f231c43eca48","src/unix/bsd/netbsdlike/openbsd/mod.rs":"b2167eeb506765688edea266f437fe730e6f04e7a11da2434ea57acc5c471bfd","src/unix/bsd/netbsdlike/openbsd/powerpc.rs":"01580d261bc6447bb327a0d982181b7bdabfa066cee65a30373d3ced729ad307","src/unix/bsd/netbsdlike/openbsd/powerpc64.rs":"1dd5449dd1fd3d51e30ffdeeaece91d0aaf05c710e0ac699fecc5461cfa2c28e","src/unix/bsd/netbsdlike/openbsd/riscv64.rs":"1dd5449dd1fd3d51e30ffdeeaece91d0aaf05c710e0ac699fecc5461cfa2c28e","src/unix/bsd/netbsdlike/openbsd/sparc64.rs":"d04fd287afbaa2c5df9d48c94e8374a532a3ba491b424ddf018270c7312f4085","src/unix/bsd/netbsdlike/openbsd/x86.rs":"6f7f5c4fde2a2259eb547890cbd86570cea04ef85347d7569e94e679448bec87","src/unix/bsd/netbsdlike/openbsd/x86_64.rs":"d31db31630289c85af3339dbe357998a21ca584cbae31607448fe2cf7675a4e1","src/unix/haiku/b32.rs":"a2efdbf7158a6da341e1db9176b0ab193ba88b449616239ed95dced11f54d87b","src/unix/haiku/b64.rs":"ff8115367d3d7d354f792d6176dfaaa26353f57056197b563bf4681f91ff7985","src/unix/haiku/mod.rs":"3526293942482ad5368f02aa45c961ad4482be8e8a547226ea5a020364a602dc","src/unix/haiku/native.rs":"dbfcbf4954a79d1df2ff58e0590bbcb8c57dfc7a32392aa73ee4726b66bd6cc8","src/unix/haiku/x86_64.rs":"3ec3aeeb7ed208b8916f3e32d42bfd085ff5e16936a1a35d9a52789f043b7237","src/unix/hurd/align.rs":"03c79b2cd8270ebd0cf93cb475a8f1ff85b28175ea0de007ede17cad94a89b03","src/unix/hurd/b32.rs":"851f7e1ad0ca4e44628292e203755624f41e0cbccd64e6f70802f01f6fd4c6dc","src/unix/hurd/b64.rs":"0c957bd3c8e2cf1ad6723fa2c98b5340571c3dcee44fc5cdd9e9a7148ef23a61","src/unix/hurd/mod.rs":"cafda79b3f48d6d088e3fe65a8e3a11af07efd643a129ee980517befc704613c","src/unix/hurd/no_align.rs":"03c79b2cd8270ebd0cf93cb475a8f1ff85b28175ea0de007ede17cad94a89b03","src/unix/linux_like/android/b32/arm.rs":"ce582de7e983a33d3bfad13075c53aac9016cee35f06ad8653ee9072c3ec2564","src/unix/linux_like/android/b32/mod.rs":"7c173e0375119bf06a3081652faede95e5bcd6858e7576b7533d037978737c8f","src/unix/linux_like/android/b32/x86/align.rs":"812914e4241df82e32b12375ca3374615dc3a4bdd4cf31f0423c5815320c0dab","src/unix/linux_like/android/b32/x86/mod.rs":"e6d107efbcd37b5b85dfa18f683300cbf768ffa0237997a9fa52b184a53323ac","src/unix/linux_like/android/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/android/b64/aarch64/int128.rs":"1735f6f5c56770d20dd426442f09724d9b2052b46a7cd82f23f3288a4a7276de","src/unix/linux_like/android/b64/aarch64/mod.rs":"10e963e29ff209703de6336c99cca96fd79789438d34c82a693eae56e8916c3c","src/unix/linux_like/android/b64/mod.rs":"71e4fcbe952bfa4a5f9022f3972e906917b38f729b9d8ef57cd5d179104894ac","src/unix/linux_like/android/b64/riscv64/align.rs":"0bf138f84e5327d8339bcd4adf071a6832b516445e597552c82bbd881095e3a8","src/unix/linux_like/android/b64/riscv64/mod.rs":"19d4bf2237c47127eba9144e0b82e995bc079315e719179a91813b0ae7b0e49d","src/unix/linux_like/android/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/android/b64/x86_64/mod.rs":"4ec2de11a9b65c4325b7b991f0b99a414975e0e61ba8668caca5d921e9b314d1","src/unix/linux_like/android/mod.rs":"62b53a05057c432268730babaa15a968e9b5823b68386502104bf015a9602212","src/unix/linux_like/emscripten/align.rs":"86c95cbed7a7161b1f23ee06843e7b0e2340ad92b2cb86fe2a8ef3e0e8c36216","src/unix/linux_like/emscripten/lfs64.rs":"3776af30a758d765a88920ec4fde442ab89040da13d3b3625c7fbcb8a958559f","src/unix/linux_like/emscripten/mod.rs":"e447d3f5e5840c0431496359164e724a8f254c68483ef842192b44e9f237d020","src/unix/linux_like/emscripten/no_align.rs":"0128e4aa721a9902754828b61b5ec7d8a86619983ed1e0544a85d35b1051fad6","src/unix/linux_like/linux/align.rs":"bc5abcd38e2320171e0981e773c9c5fe3e0d5a66fdff049228f6a1acad80ef8b","src/unix/linux_like/linux/arch/generic/mod.rs":"55ed968a3b656a6e0c67759ac3637a6b3ba2c1001333e23bd7a2f95ce8ba6563","src/unix/linux_like/linux/arch/mips/mod.rs":"b81b4cd040360a77079597ca221159fb17461145786ebfff4d979ae0b0c3344a","src/unix/linux_like/linux/arch/mod.rs":"5bd5361f8a6ab4e18bbba6da9f92c164ae252b15a0ed10064812544aa1fdf198","src/unix/linux_like/linux/arch/powerpc/mod.rs":"e868a956f7c982b6dfbd56962c5f6803d0b9af3b2e977ce56501e3edbc233ce7","src/unix/linux_like/linux/arch/sparc/mod.rs":"737e3b4554e132d88700f3cd35aad60a1a5308ad295b87569a15c0b0b6cb6d48","src/unix/linux_like/linux/gnu/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/gnu/b32/arm/align.rs":"6ec0eb3ee93f7ae99fd714b4deabfb5e97fbcefd8c26f5a45fb8e7150899cdeb","src/unix/linux_like/linux/gnu/b32/arm/mod.rs":"b0528b4f3a80286fd28f94447a100d4455f0150f52e5a08cfedf6ebfce6073e1","src/unix/linux_like/linux/gnu/b32/csky/align.rs":"3fed009dc9af3cc81be7087da9d2d7d1f39845e4497e290259c5cdbae25f039d","src/unix/linux_like/linux/gnu/b32/csky/mod.rs":"f3231dfdd81d33170976cffcceac67e52b20c4be163b60f15c6f96a8d645d4a8","src/unix/linux_like/linux/gnu/b32/m68k/align.rs":"8faa92f77a9232c035418d45331774e64a9a841d99c91791570a203bf2b45bcb","src/unix/linux_like/linux/gnu/b32/m68k/mod.rs":"80956d3fef163ecf248828a6f38782dd8ae856d86b1bb5aac2de36032dbd8ea0","src/unix/linux_like/linux/gnu/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/gnu/b32/mips/mod.rs":"96e22350d5d132d917c743d6560464500652c67b52c3d0e8474494487df3365d","src/unix/linux_like/linux/gnu/b32/mod.rs":"b56625dd20dd48a8699034d349ef089c540c0ddcbf8a3481d598d101f8b40b78","src/unix/linux_like/linux/gnu/b32/powerpc.rs":"20fc3cc4fe1ef6617b63b61b897f782ceb9c2842fc718f504a1840537229bf47","src/unix/linux_like/linux/gnu/b32/riscv32/align.rs":"d321491612be8d5c61b6ec2dc0111beb3a22e58803f99cd37543efe86621b119","src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs":"887288a0a1cfff319d0e15edcdc4fcb31fd643ff41715ec5244c8f2413624169","src/unix/linux_like/linux/gnu/b32/sparc/align.rs":"21adbed27df73e2d1ed934aaf733a643003d7baf2bde9c48ea440895bcca6d41","src/unix/linux_like/linux/gnu/b32/sparc/mod.rs":"cc4342b949e4d796f304acd9dfe3f721a1c2f37fec16b42d3bb27dc94723af37","src/unix/linux_like/linux/gnu/b32/x86/align.rs":"e4bafdc4a519a7922a81b37a62bbfd1177a2f620890eef8f1fbc47162e9eb413","src/unix/linux_like/linux/gnu/b32/x86/mod.rs":"977ff325dfadca1c022a80b7c74874702476ae09d34f894d5fde8e47af2aff2a","src/unix/linux_like/linux/gnu/b64/aarch64/align.rs":"fdf1c72375a2167699157e0dd825422690bb6719f7bc69515a2e5846d0431d7c","src/unix/linux_like/linux/gnu/b64/aarch64/fallback.rs":"832e7487249c1c0bb6e9911ce3f7d32ca22378e42392ab83c56915cbc59d8be3","src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs":"bf4611b737813deef6787babf6c01698605f3b75482269b8546318667bc68e29","src/unix/linux_like/linux/gnu/b64/aarch64/int128.rs":"1735f6f5c56770d20dd426442f09724d9b2052b46a7cd82f23f3288a4a7276de","src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs":"11a950697fdda0258c6e37c6b13993348c8de4134105ed4faa79358e53175072","src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs":"40bf13c157bfc487682c62dae4bc49b58733076cc4ce55a32f51a5ed8f4cc068","src/unix/linux_like/linux/gnu/b64/loongarch64/align.rs":"060aa33cc737966c691aab8511c5c5729e551458ce18d0e284e0d45f39beeb60","src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs":"dc29dfdadd754ec355b82a7ca6636de7ed97f7ba98f132b71cb49f39d6bd8e3f","src/unix/linux_like/linux/gnu/b64/mips64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/mips64/mod.rs":"73532be4b5775acf9524c77feeefe1f6d1936ceffef908d01dd2586986520f2d","src/unix/linux_like/linux/gnu/b64/mod.rs":"6a160ef25439c4fecdb0e3bd0b818742263c791364da874d4febd3aa644ec8e2","src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs":"a90c2641616c620e9d1fea87695ce046e14f9da2282bb93f761eeb4077c74741","src/unix/linux_like/linux/gnu/b64/riscv64/align.rs":"d321491612be8d5c61b6ec2dc0111beb3a22e58803f99cd37543efe86621b119","src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs":"68a2a20fa4ef92cdf382d8095168eb88875b7aa8c9c47ee5f1e527393b6c16fa","src/unix/linux_like/linux/gnu/b64/s390x.rs":"1ea9e39432ce6bf68779d33546dacd7d39477a9f8fc3da4f4f339e4538cb74c3","src/unix/linux_like/linux/gnu/b64/sparc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs":"bed381c44cec2a5b50125f7e548ab487d4c829006c971d152a611b7141760052","src/unix/linux_like/linux/gnu/b64/x86_64/align.rs":"62e822478356db4a73b6bbd1b36d825b893939ab4b308ec11b0578bcc4b49769","src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs":"88b7b233db058fd0c7627bd318e43ec9508f89970f21de9df245ca006bba8b45","src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs":"38f74ce15d9662ce4818815a2b87be1618d5e45f190f7e4db84ff3285b4421fb","src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs":"b20218a11364a6dec87f96d6c0d8b19e660697ab09ad5ee0e9b3a9dafedaaebb","src/unix/linux_like/linux/gnu/mod.rs":"62cbad4e582706ec7d26b88047728beb3a8e928513e1648dac8d89376a4f0dd2","src/unix/linux_like/linux/gnu/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/mod.rs":"2e57887807020772c455397d8d5467acbae336df54ea29e1e024d06d08fb3c9e","src/unix/linux_like/linux/musl/b32/arm/align.rs":"3e8ac052c1043764776b54c93ba4260e061df998631737a897d9d47d54f7b80c","src/unix/linux_like/linux/musl/b32/arm/mod.rs":"af10147d7c3661751750a58ffad089d5d18d180cd18303c653aef126c07ccd91","src/unix/linux_like/linux/musl/b32/hexagon.rs":"d079cab42529f7dab699334d43168c74ff4aa0282f11040a8b7d274b65767a7a","src/unix/linux_like/linux/musl/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/musl/b32/mips/mod.rs":"e44043766f7cd26de7ffa4232654afb6feb03e58dbd5890717970887bd003151","src/unix/linux_like/linux/musl/b32/mod.rs":"31677597fd9544c4b1ec1477628288f6273fabbc06e38f33da862ad55f019ce1","src/unix/linux_like/linux/musl/b32/powerpc.rs":"3dae56a4e7789bcc5314e419fea5e4b2495367b4f1a49d1c9477c60225d65eef","src/unix/linux_like/linux/musl/b32/riscv32/align.rs":"efd2accf33b87de7c7547903359a5da896edc33cd6c719552c7474b60d4a5d48","src/unix/linux_like/linux/musl/b32/riscv32/mod.rs":"3ee845d272f91a1908d5f421d7c353e1f14681bbdfef64410e408f4c14365a91","src/unix/linux_like/linux/musl/b32/x86/align.rs":"08e77fbd7435d7dec2ff56932433bece3f02e47ce810f89004a275a86d39cbe1","src/unix/linux_like/linux/musl/b32/x86/mod.rs":"4e99b080ca830e50370b596e36a96b6b024dd974c32a881e42fa51cee54a4454","src/unix/linux_like/linux/musl/b64/aarch64/align.rs":"6ba32725d24d7d8e6aa111f3b57aafa318f83b606abe96561329151829821133","src/unix/linux_like/linux/musl/b64/aarch64/int128.rs":"1735f6f5c56770d20dd426442f09724d9b2052b46a7cd82f23f3288a4a7276de","src/unix/linux_like/linux/musl/b64/aarch64/mod.rs":"45ce6897afcc960267bb7505702b639daf94dc69428a213bf1aefd367ca32adc","src/unix/linux_like/linux/musl/b64/mips64.rs":"a968ef9c54fa22293085f318c8472c1754482df92cc500568dc33bd807d71ea6","src/unix/linux_like/linux/musl/b64/mod.rs":"1a8391febf3e750185ffc5c69c9f9e411f4e8c53b5d994cb231df24480169686","src/unix/linux_like/linux/musl/b64/powerpc64.rs":"140e579800a67315f4cb8a42b22aa8157eae34ffe626e77e421b43c53c23b34d","src/unix/linux_like/linux/musl/b64/riscv64/align.rs":"d321491612be8d5c61b6ec2dc0111beb3a22e58803f99cd37543efe86621b119","src/unix/linux_like/linux/musl/b64/riscv64/mod.rs":"c5944526d7e19cd43e9d14d119a1d98f8780db7ecbcc79e69d7b9348e596b520","src/unix/linux_like/linux/musl/b64/s390x.rs":"8557b3477ca8cefef7fce764a3c25441929a54e50ead4091f6f7823c427cd728","src/unix/linux_like/linux/musl/b64/x86_64/align.rs":"77309276ad7a42cbe59ca381f23590b7a143aded05555b34a5b307b808cbca6e","src/unix/linux_like/linux/musl/b64/x86_64/mod.rs":"a91c4f18027c9958037f78ae48f6352d23cb4e6f2995b2cc8de7dce0e5759470","src/unix/linux_like/linux/musl/lfs64.rs":"3e4fb381f3a0756520bde0f1692d4fa45e4ae8133bf7d7c64b0e3fdd512f235f","src/unix/linux_like/linux/musl/mod.rs":"48f671493a0a144d725914494716946e4236190e1207022d3753f5a35464babb","src/unix/linux_like/linux/no_align.rs":"62cdca0e011937aaf09a51ca86d9f0ee0fdb05f61ec3c058e6a5d5fa6357d784","src/unix/linux_like/linux/non_exhaustive.rs":"181a05bf94fdb911db83ce793b993bd6548a4115b306a7ef3c10f745a8fea3e9","src/unix/linux_like/linux/uclibc/align.rs":"9ed16138d8e439bd90930845a65eafa7ebd67366e6bf633936d44014f6e4c959","src/unix/linux_like/linux/uclibc/arm/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/arm/mod.rs":"50288ff9e411ab0966da24838f2c2a5618021bc19c422a04f577b2979ef4081e","src/unix/linux_like/linux/uclibc/arm/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips32/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs":"d0c4434e2bf813372c418a8f516c706cdccc9f7be2f0921b2207b0afdb66fe81","src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips64/align.rs":"a7bdcb18a37a2d91e64d5fad83ea3edc78f5412adb28f77ab077dbb26dd08b2d","src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs":"3f38ee6a4690b9d7594be20d216467a34d955f7653c2c8ce1e6147daeb53f1e0","src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs":"4a18e3875698c85229599225ac3401a2a40da87e77b2ad4ef47c6fcd5a24ed30","src/unix/linux_like/linux/uclibc/mips/mod.rs":"a048fce1c2d9b1ad57305642e8ad05ca0f0c7e4753267a2e2d6b4fee5db3b072","src/unix/linux_like/linux/uclibc/mod.rs":"ea1a93363329a2225efc0423ff904a8bd4ff827d4d42e5e29b807b7a9927a7bc","src/unix/linux_like/linux/uclibc/no_align.rs":"3f28637046524618adaa1012e26cb7ffe94b9396e6b518cccdc69d59f274d709","src/unix/linux_like/linux/uclibc/x86_64/l4re.rs":"024eba5753e852dbdd212427351affe7e83f9916c1864bce414d7aa2618f192e","src/unix/linux_like/linux/uclibc/x86_64/mod.rs":"196d03affbefb85716937c15904831e731eb222ee906e05e42102d639a8152ea","src/unix/linux_like/linux/uclibc/x86_64/other.rs":"42c3f71e58cabba373f6a55a623f3c31b85049eb64824c09c2b082b3b2d6a0a8","src/unix/linux_like/mod.rs":"26321ca3d882a7a5b88c83f6019801324474f1a0df5adabb2e0d3a65a483f5cd","src/unix/mod.rs":"2c778b44b07a66151898caeb4b3a70d43dfbb84177ce3c30d1382f3b21644dfe","src/unix/newlib/aarch64/mod.rs":"964c096288da836b53c0c71d7f3a97048d177da220a69314c5ce93ba330d72af","src/unix/newlib/align.rs":"28aaf87fafbc6b312622719d472d8cf65f9e5467d15339df5f73e66d8502b28a","src/unix/newlib/arm/mod.rs":"cf754f8b1197489fca01e881a4b4b146e814998e4b365f116fa1a102c00e6a4e","src/unix/newlib/espidf/mod.rs":"29969da41f0042197b21cfa7c0ad2244b4519ecab0fb7de3d0a7655b4f3937e1","src/unix/newlib/generic.rs":"5f0b5d07ddb5a5d60580f9561fdb05e9218d9751d4068c4aadad2ba6b950aabf","src/unix/newlib/horizon/mod.rs":"3a521d22bf932fc01c1d26d1f9bff20f11b1855b03c8236a8eb18310f6cab5a8","src/unix/newlib/mod.rs":"e5d5faf27a6336b9f1c02b8726427801d906a14dae766852b4e85c1a92df06c8","src/unix/newlib/no_align.rs":"e0743b2179495a9514bc3a4d1781e492878c4ec834ee0085d0891dd1712e82fb","src/unix/newlib/powerpc/mod.rs":"cc9e188711b9bf614323ad6c48e0d2e1a1ecc5d3bc64961ba451f29c6c22d2d8","src/unix/newlib/vita/mod.rs":"d849a01841744ea5e04635c8f69c9e2b44791320eb9d629b9d0fee0a4c5d502a","src/unix/no_align.rs":"c06e95373b9088266e0b14bba0954eef95f93fb2b01d951855e382d22de78e53","src/unix/nto/aarch64.rs":"4709c9afdc8d583be876598e7c238499ee3e8da5bd2baa614d9c7dd414851555","src/unix/nto/mod.rs":"8cacb926904eb9c901ba27d9914e62b7d5e88fc1001cdf0e392666e0f331f327","src/unix/nto/neutrino.rs":"799bff4ab01a6424db6c5a2b76aa5679826d41495f9d13c63485bf13bc80026b","src/unix/nto/x86_64.rs":"a3e18e93c2999da1cd7a6f748a4b60c07aefb73d8ea2aafec19a84cfb040bc8e","src/unix/redox/mod.rs":"3b7f61e747b05fe2ddd600698d51ddac689532d3a925dcbbd611835089b4ae9b","src/unix/solarish/compat.rs":"00f1ee3faec9da69204e42f025f6735dd13d894071a154425dcc43ecbdd06e7f","src/unix/solarish/illumos.rs":"cd93c2d84722bbf9933a92842a8998eb0b2afc962f50bc2546ad127b82809fa7","src/unix/solarish/mod.rs":"b1660c631a599a3355116e7485b88ab2f8f2929c2e37851a763431387b902f14","src/unix/solarish/solaris.rs":"41b350a89ddf01cd12a10f93640f92be53be0b0d976021cdc08da17bf3e72edf","src/unix/solarish/x86.rs":"e86e806df0caed72765040eaa2f3c883198d1aa91508540adf9b7008c77f522e","src/unix/solarish/x86_64.rs":"ec2b01f194eb8a6a27133c57681da195a949e03098f3ea1e847227a9c09ef5fc","src/unix/solarish/x86_common.rs":"ac869d9c3c95645c22460468391eb1982023c3a8e02b9e06a72e3aef3d5f1eac","src/vxworks/aarch64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/arm.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/mod.rs":"444249bebf289c9ec34e62332c13c7e716f8093c73faf95d5eee3ab7e40d6d85","src/vxworks/powerpc.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/powerpc64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/x86.rs":"552f007f38317620b23889cb7c49d1d115841252439060122f52f434fbc6e5ba","src/vxworks/x86_64.rs":"018d92be3ad628a129eff9f2f5dfbc0883d8b8e5f2fa917b900a7f98ed6b514a","src/wasi.rs":"09ee3b3348b212b050f6ca8ae008a28679ea44a375674307a4e7c9ca0d3ed7d5","src/windows/gnu/align.rs":"b2c13ec1b9f3b39a75c452c80c951dff9d0215e31d77e883b4502afb31794647","src/windows/gnu/mod.rs":"3c8c7edb7cdf5d0c44af936db2a94869585c69dfabeef30571b4f4e38375767a","src/windows/mod.rs":"9fdc5e1c62c441abef7bc62a7343efb2041edc24db9ac0efc0f74df55b69e249","src/windows/msvc/mod.rs":"c068271e00fca6b62bc4bf44bcf142cfc38caeded9b6c4e01d1ceef3ccf986f4","src/xous.rs":"eb0675f25ba01f73072d2b70907fb8abb1148facefe5a20756c49250f3d65fae","tests/const_fn.rs":"cb75a1f0864f926aebe79118fc34d51a0d1ade2c20a394e7774c7e545f21f1f4"},"package":"89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c"} \ No newline at end of file
diff --git a/vendor/libc/Cargo.toml b/vendor/libc/Cargo.toml
index b62faf51c..f03bd33b8 100644
--- a/vendor/libc/Cargo.toml
+++ b/vendor/libc/Cargo.toml
@@ -11,7 +11,7 @@
[package]
name = "libc"
-version = "0.2.148"
+version = "0.2.150"
authors = ["The Rust Project Developers"]
build = "build.rs"
exclude = [
@@ -114,6 +114,7 @@ targets = [
"riscv32imac-unknown-none-elf",
"riscv32imc-unknown-none-elf",
"riscv64gc-unknown-freebsd",
+ "riscv64gc-unknown-hermit",
"riscv64gc-unknown-linux-gnu",
"riscv64gc-unknown-linux-musl",
"riscv64gc-unknown-none-elf",
diff --git a/vendor/libc/README.md b/vendor/libc/README.md
index 43d706d0f..29d2a4b61 100644
--- a/vendor/libc/README.md
+++ b/vendor/libc/README.md
@@ -60,7 +60,7 @@ newer Rust features are only available on newer Rust toolchains:
## Platform support
-[Platform-specific documentation (HEAD)][docs.head].
+You can see the platform(target)-specific docs on [docs.rs], select a platform you want to see.
See
[`ci/build.sh`](https://github.com/rust-lang/libc/blob/HEAD/ci/build.sh)
@@ -107,4 +107,3 @@ dual licensed as above, without any additional terms or conditions.
[Documentation]: https://docs.rs/libc/badge.svg
[docs.rs]: https://docs.rs/libc
[License]: https://img.shields.io/crates/l/libc.svg
-[docs.head]: https://rust-lang.github.io/libc/#platform-specific-documentation
diff --git a/vendor/libc/build.rs b/vendor/libc/build.rs
index 787b8b86a..d7a9b7f78 100644
--- a/vendor/libc/build.rs
+++ b/vendor/libc/build.rs
@@ -33,7 +33,7 @@ const ALLOWED_CFGS: &'static [&'static str] = &[
// Extra values to allow for check-cfg.
const CHECK_CFG_EXTRA: &'static [(&'static str, &'static [&'static str])] = &[
- ("target_os", &["switch", "aix", "ohos"]),
+ ("target_os", &["switch", "aix", "ohos", "hurd"]),
("target_env", &["illumos", "wasi", "aix", "ohos"]),
(
"target_arch",
@@ -167,11 +167,19 @@ fn main() {
// https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#check-cfg
if libc_check_cfg {
for cfg in ALLOWED_CFGS {
- println!("cargo:rustc-check-cfg=values({})", cfg);
+ if rustc_minor_ver >= 75 {
+ println!("cargo:rustc-check-cfg=cfg({})", cfg);
+ } else {
+ println!("cargo:rustc-check-cfg=values({})", cfg);
+ }
}
for &(name, values) in CHECK_CFG_EXTRA {
let values = values.join("\",\"");
- println!("cargo:rustc-check-cfg=values({},\"{}\")", name, values);
+ if rustc_minor_ver >= 75 {
+ println!("cargo:rustc-check-cfg=cfg({},values(\"{}\"))", name, values);
+ } else {
+ println!("cargo:rustc-check-cfg=values({},\"{}\")", name, values);
+ }
}
}
}
diff --git a/vendor/libc/src/fuchsia/mod.rs b/vendor/libc/src/fuchsia/mod.rs
index 3e922e766..bf1a54360 100644
--- a/vendor/libc/src/fuchsia/mod.rs
+++ b/vendor/libc/src/fuchsia/mod.rs
@@ -2679,7 +2679,87 @@ pub const PT_GNU_STACK: u32 = 0x6474e551;
pub const PT_GNU_RELRO: u32 = 0x6474e552;
// Ethernet protocol IDs.
+pub const ETH_P_LOOP: ::c_int = 0x0060;
+pub const ETH_P_PUP: ::c_int = 0x0200;
+pub const ETH_P_PUPAT: ::c_int = 0x0201;
pub const ETH_P_IP: ::c_int = 0x0800;
+pub const ETH_P_X25: ::c_int = 0x0805;
+pub const ETH_P_ARP: ::c_int = 0x0806;
+pub const ETH_P_BPQ: ::c_int = 0x08FF;
+pub const ETH_P_IEEEPUP: ::c_int = 0x0a00;
+pub const ETH_P_IEEEPUPAT: ::c_int = 0x0a01;
+pub const ETH_P_BATMAN: ::c_int = 0x4305;
+pub const ETH_P_DEC: ::c_int = 0x6000;
+pub const ETH_P_DNA_DL: ::c_int = 0x6001;
+pub const ETH_P_DNA_RC: ::c_int = 0x6002;
+pub const ETH_P_DNA_RT: ::c_int = 0x6003;
+pub const ETH_P_LAT: ::c_int = 0x6004;
+pub const ETH_P_DIAG: ::c_int = 0x6005;
+pub const ETH_P_CUST: ::c_int = 0x6006;
+pub const ETH_P_SCA: ::c_int = 0x6007;
+pub const ETH_P_TEB: ::c_int = 0x6558;
+pub const ETH_P_RARP: ::c_int = 0x8035;
+pub const ETH_P_ATALK: ::c_int = 0x809B;
+pub const ETH_P_AARP: ::c_int = 0x80F3;
+pub const ETH_P_8021Q: ::c_int = 0x8100;
+pub const ETH_P_IPX: ::c_int = 0x8137;
+pub const ETH_P_IPV6: ::c_int = 0x86DD;
+pub const ETH_P_PAUSE: ::c_int = 0x8808;
+pub const ETH_P_SLOW: ::c_int = 0x8809;
+pub const ETH_P_WCCP: ::c_int = 0x883E;
+pub const ETH_P_MPLS_UC: ::c_int = 0x8847;
+pub const ETH_P_MPLS_MC: ::c_int = 0x8848;
+pub const ETH_P_ATMMPOA: ::c_int = 0x884c;
+pub const ETH_P_PPP_DISC: ::c_int = 0x8863;
+pub const ETH_P_PPP_SES: ::c_int = 0x8864;
+pub const ETH_P_LINK_CTL: ::c_int = 0x886c;
+pub const ETH_P_ATMFATE: ::c_int = 0x8884;
+pub const ETH_P_PAE: ::c_int = 0x888E;
+pub const ETH_P_AOE: ::c_int = 0x88A2;
+pub const ETH_P_8021AD: ::c_int = 0x88A8;
+pub const ETH_P_802_EX1: ::c_int = 0x88B5;
+pub const ETH_P_TIPC: ::c_int = 0x88CA;
+pub const ETH_P_8021AH: ::c_int = 0x88E7;
+pub const ETH_P_MVRP: ::c_int = 0x88F5;
+pub const ETH_P_1588: ::c_int = 0x88F7;
+pub const ETH_P_PRP: ::c_int = 0x88FB;
+pub const ETH_P_FCOE: ::c_int = 0x8906;
+pub const ETH_P_TDLS: ::c_int = 0x890D;
+pub const ETH_P_FIP: ::c_int = 0x8914;
+pub const ETH_P_80221: ::c_int = 0x8917;
+pub const ETH_P_LOOPBACK: ::c_int = 0x9000;
+pub const ETH_P_QINQ1: ::c_int = 0x9100;
+pub const ETH_P_QINQ2: ::c_int = 0x9200;
+pub const ETH_P_QINQ3: ::c_int = 0x9300;
+pub const ETH_P_EDSA: ::c_int = 0xDADA;
+pub const ETH_P_AF_IUCV: ::c_int = 0xFBFB;
+
+pub const ETH_P_802_3_MIN: ::c_int = 0x0600;
+
+pub const ETH_P_802_3: ::c_int = 0x0001;
+pub const ETH_P_AX25: ::c_int = 0x0002;
+pub const ETH_P_ALL: ::c_int = 0x0003;
+pub const ETH_P_802_2: ::c_int = 0x0004;
+pub const ETH_P_SNAP: ::c_int = 0x0005;
+pub const ETH_P_DDCMP: ::c_int = 0x0006;
+pub const ETH_P_WAN_PPP: ::c_int = 0x0007;
+pub const ETH_P_PPP_MP: ::c_int = 0x0008;
+pub const ETH_P_LOCALTALK: ::c_int = 0x0009;
+pub const ETH_P_CAN: ::c_int = 0x000C;
+pub const ETH_P_CANFD: ::c_int = 0x000D;
+pub const ETH_P_PPPTALK: ::c_int = 0x0010;
+pub const ETH_P_TR_802_2: ::c_int = 0x0011;
+pub const ETH_P_MOBITEX: ::c_int = 0x0015;
+pub const ETH_P_CONTROL: ::c_int = 0x0016;
+pub const ETH_P_IRDA: ::c_int = 0x0017;
+pub const ETH_P_ECONET: ::c_int = 0x0018;
+pub const ETH_P_HDLC: ::c_int = 0x0019;
+pub const ETH_P_ARCNET: ::c_int = 0x001A;
+pub const ETH_P_DSA: ::c_int = 0x001B;
+pub const ETH_P_TRAILER: ::c_int = 0x001C;
+pub const ETH_P_PHONET: ::c_int = 0x00F5;
+pub const ETH_P_IEEE802154: ::c_int = 0x00F6;
+pub const ETH_P_CAIF: ::c_int = 0x00F7;
pub const SFD_CLOEXEC: ::c_int = 0x080000;
@@ -2731,7 +2811,10 @@ pub const POSIX_MADV_DONTNEED: ::c_int = 4;
pub const RLIM_INFINITY: ::rlim_t = !0;
pub const RLIMIT_RTTIME: ::c_int = 15;
+#[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIMIT_NLIMITS: ::c_int = 16;
+#[allow(deprecated)]
+#[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIM_NLIMITS: ::c_int = RLIMIT_NLIMITS;
pub const MAP_ANONYMOUS: ::c_int = MAP_ANON;
@@ -3687,6 +3770,10 @@ extern "C" {
pub fn pthread_exit(value: *mut ::c_void) -> !;
pub fn pthread_attr_init(attr: *mut ::pthread_attr_t) -> ::c_int;
pub fn pthread_attr_destroy(attr: *mut ::pthread_attr_t) -> ::c_int;
+ pub fn pthread_attr_getstacksize(
+ attr: *const ::pthread_attr_t,
+ stacksize: *mut ::size_t,
+ ) -> ::c_int;
pub fn pthread_attr_setstacksize(attr: *mut ::pthread_attr_t, stack_size: ::size_t) -> ::c_int;
pub fn pthread_attr_setdetachstate(attr: *mut ::pthread_attr_t, state: ::c_int) -> ::c_int;
pub fn pthread_detach(thread: ::pthread_t) -> ::c_int;
@@ -4161,6 +4248,7 @@ extern "C" {
attr: *const ::pthread_attr_t,
guardsize: *mut ::size_t,
) -> ::c_int;
+ pub fn pthread_attr_setguardsize(attr: *mut ::pthread_attr_t, guardsize: ::size_t) -> ::c_int;
pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int;
pub fn sched_get_priority_min(policy: ::c_int) -> ::c_int;
pub fn umount2(target: *const ::c_char, flags: ::c_int) -> ::c_int;
diff --git a/vendor/libc/src/hermit/mod.rs b/vendor/libc/src/hermit/mod.rs
index bffcefdd8..7543c8257 100644
--- a/vendor/libc/src/hermit/mod.rs
+++ b/vendor/libc/src/hermit/mod.rs
@@ -1,7 +1,4 @@
-// libc port for HermitCore (https://hermitcore.org)
-//
-// Ported by Colin Fink <colin.finck@rwth-aachen.de>
-// and Stefan Lankes <slankes@eonerc.rwth-aachen.de>
+//! Hermit C types definition
pub type c_schar = i8;
pub type c_uchar = u8;
diff --git a/vendor/libc/src/lib.rs b/vendor/libc/src/lib.rs
index d9bd318d1..1b6f0c077 100644
--- a/vendor/libc/src/lib.rs
+++ b/vendor/libc/src/lib.rs
@@ -1,8 +1,4 @@
//! libc - Raw FFI bindings to platforms' system libraries
-//!
-//! [Documentation for other platforms][pd].
-//!
-//! [pd]: https://rust-lang.github.io/libc/#platform-specific-documentation
#![crate_name = "libc"]
#![crate_type = "rlib"]
#![allow(
@@ -139,6 +135,12 @@ cfg_if! {
mod hermit;
pub use hermit::*;
+ } else if #[cfg(target_os = "teeos")] {
+ mod fixed_width_ints;
+ pub use fixed_width_ints::*;
+
+ mod teeos;
+ pub use teeos::*;
} else if #[cfg(all(target_env = "sgx", target_vendor = "fortanix"))] {
mod fixed_width_ints;
pub use fixed_width_ints::*;
diff --git a/vendor/libc/src/teeos/mod.rs b/vendor/libc/src/teeos/mod.rs
new file mode 100644
index 000000000..cffe04197
--- /dev/null
+++ b/vendor/libc/src/teeos/mod.rs
@@ -0,0 +1,1379 @@
+//! Libc bindings for teeos
+//!
+//! Apparently the loader just dynamically links it anyway, but fails
+//! when linking is explicitly requested.
+#![allow(non_camel_case_types)]
+#![allow(non_snake_case)]
+
+// only supported on Rust > 1.59, so we can directly reexport c_void from core.
+pub use core::ffi::c_void;
+
+use Option;
+
+pub type c_schar = i8;
+
+pub type c_uchar = u8;
+
+pub type c_short = i16;
+
+pub type c_ushort = u16;
+
+pub type c_int = i32;
+
+pub type c_uint = u32;
+
+pub type c_bool = i32;
+
+pub type c_float = f32;
+
+pub type c_double = f64;
+
+pub type c_longlong = i64;
+
+pub type c_ulonglong = u64;
+
+pub type intmax_t = i64;
+
+pub type uintmax_t = u64;
+
+pub type size_t = usize;
+
+pub type ptrdiff_t = isize;
+
+pub type intptr_t = isize;
+
+pub type uintptr_t = usize;
+
+pub type ssize_t = isize;
+
+pub type pid_t = c_int;
+
+// aarch64 specifc
+pub type c_char = u8;
+
+pub type wchar_t = u32;
+
+pub type c_long = i64;
+
+pub type c_ulong = u64;
+
+#[repr(align(16))]
+pub struct _CLongDouble(pub u128);
+
+// long double in C means A float point value, which has 128bit length.
+// but some bit maybe not used, so the really length of long double could be 80(x86) or 128(power pc/IEEE)
+// this is different from f128(not stable and not inculded default) in Rust, so we use u128 for FFI(Rust to C).
+// this is unstable and will couse to memfault/data abort.
+pub type c_longdouble = _CLongDouble;
+
+pub type pthread_t = c_ulong;
+
+pub type pthread_key_t = c_uint;
+
+pub type pthread_spinlock_t = c_int;
+
+pub type off_t = i64;
+
+pub type time_t = c_long;
+
+pub type clock_t = c_long;
+
+pub type clockid_t = c_int;
+
+pub type suseconds_t = c_long;
+
+pub type once_fn = extern "C" fn() -> c_void;
+
+pub type pthread_once_t = c_int;
+
+pub type va_list = *mut c_char;
+
+pub type wint_t = c_uint;
+
+pub type wctype_t = c_ulong;
+
+pub type cmpfunc = extern "C" fn(x: *const c_void, y: *const c_void) -> c_int;
+
+#[repr(align(8))]
+#[repr(C)]
+pub struct pthread_cond_t {
+ #[doc(hidden)]
+ size: [u8; __SIZEOF_PTHREAD_COND_T],
+}
+
+#[repr(align(8))]
+#[repr(C)]
+pub struct pthread_mutex_t {
+ #[doc(hidden)]
+ size: [u8; __SIZEOF_PTHREAD_MUTEX_T],
+}
+
+#[repr(align(4))]
+#[repr(C)]
+pub struct pthread_mutexattr_t {
+ #[doc(hidden)]
+ size: [u8; __SIZEOF_PTHREAD_MUTEXATTR_T],
+}
+
+#[repr(align(4))]
+#[repr(C)]
+pub struct pthread_condattr_t {
+ #[doc(hidden)]
+ size: [u8; __SIZEOF_PTHREAD_CONDATTR_T],
+}
+
+#[repr(C)]
+pub struct pthread_attr_t {
+ __size: [u64; 7],
+}
+
+#[repr(C)]
+pub struct cpu_set_t {
+ bits: [c_ulong; 128 / core::mem::size_of::<c_ulong>()],
+}
+
+#[repr(C)]
+pub struct timespec {
+ pub tv_sec: time_t,
+ pub tv_nsec: c_long,
+}
+
+#[repr(C)]
+pub struct timeval {
+ pub tv_sec: time_t,
+ pub tv_usec: suseconds_t,
+}
+
+#[repr(C)]
+pub struct tm {
+ pub tm_sec: c_int,
+ pub tm_min: c_int,
+ pub tm_hour: c_int,
+ pub tm_mday: c_int,
+ pub tm_mon: c_int,
+ pub tm_year: c_int,
+ pub tm_wday: c_int,
+ pub tm_yday: c_int,
+ pub tm_isdst: c_int,
+ pub __tm_gmtoff: c_long,
+ pub __tm_zone: *const c_char,
+}
+
+#[repr(C)]
+pub struct mbstate_t {
+ pub __opaque1: c_uint,
+ pub __opaque2: c_uint,
+}
+
+#[repr(C)]
+pub struct sem_t {
+ pub __val: [c_int; 4 * core::mem::size_of::<c_long>() / core::mem::size_of::<c_int>()],
+}
+
+#[repr(C)]
+pub struct div_t {
+ pub quot: c_int,
+ pub rem: c_int,
+}
+
+// fcntl
+pub const O_CREAT: u32 = 0100;
+
+pub const O_EXCL: u32 = 0200;
+
+pub const O_NOCTTY: u32 = 0400;
+
+pub const O_TRUNC: u32 = 01000;
+
+pub const O_APPEND: u32 = 02000;
+
+pub const O_NONBLOCK: u32 = 04000;
+
+pub const O_DSYNC: u32 = 010000;
+
+pub const O_SYNC: u32 = 04010000;
+
+pub const O_RSYNC: u32 = 04010000;
+
+pub const O_DIRECTORY: u32 = 0200000;
+
+pub const O_NOFOLLOW: u32 = 0400000;
+
+pub const O_CLOEXEC: u32 = 02000000;
+
+pub const O_ASYNC: u32 = 020000;
+
+pub const O_DIRECT: u32 = 040000;
+
+pub const O_LARGEFILE: u32 = 0100000;
+
+pub const O_NOATIME: u32 = 01000000;
+
+pub const O_PATH: u32 = 010000000;
+
+pub const O_TMPFILE: u32 = 020200000;
+
+pub const O_NDELAY: u32 = O_NONBLOCK;
+
+pub const F_DUPFD: u32 = 0;
+
+pub const F_GETFD: u32 = 1;
+
+pub const F_SETFD: u32 = 2;
+
+pub const F_GETFL: u32 = 3;
+
+pub const F_SETFL: u32 = 4;
+
+pub const F_SETOWN: u32 = 8;
+
+pub const F_GETOWN: u32 = 9;
+
+pub const F_SETSIG: u32 = 10;
+
+pub const F_GETSIG: u32 = 11;
+
+pub const F_GETLK: u32 = 12;
+
+pub const F_SETLK: u32 = 13;
+
+pub const F_SETLKW: u32 = 14;
+
+pub const F_SETOWN_EX: u32 = 15;
+
+pub const F_GETOWN_EX: u32 = 16;
+
+pub const F_GETOWNER_UIDS: u32 = 17;
+
+// mman
+pub const MAP_FAILED: u64 = 0xffffffffffffffff;
+
+pub const MAP_FIXED_NOREPLACE: u32 = 0x100000;
+
+pub const MAP_SHARED_VALIDATE: u32 = 0x03;
+
+pub const MAP_SHARED: u32 = 0x01;
+
+pub const MAP_PRIVATE: u32 = 0x02;
+
+pub const MAP_TYPE: u32 = 0x0f;
+
+pub const MAP_FIXED: u32 = 0x10;
+
+pub const MAP_ANON: u32 = 0x20;
+
+pub const MAP_ANONYMOUS: u32 = MAP_ANON;
+
+pub const MAP_NORESERVE: u32 = 0x4000;
+
+pub const MAP_GROWSDOWN: u32 = 0x0100;
+
+pub const MAP_DENYWRITE: u32 = 0x0800;
+
+pub const MAP_EXECUTABLE: u32 = 0x1000;
+
+pub const MAP_LOCKED: u32 = 0x2000;
+
+pub const MAP_POPULATE: u32 = 0x8000;
+
+pub const MAP_NONBLOCK: u32 = 0x10000;
+
+pub const MAP_STACK: u32 = 0x20000;
+
+pub const MAP_HUGETLB: u32 = 0x40000;
+
+pub const MAP_SYNC: u32 = 0x80000;
+
+pub const MAP_FILE: u32 = 0;
+
+pub const MAP_HUGE_SHIFT: u32 = 26;
+
+pub const MAP_HUGE_MASK: u32 = 0x3f;
+
+pub const MAP_HUGE_16KB: u32 = 14 << 26;
+
+pub const MAP_HUGE_64KB: u32 = 16 << 26;
+
+pub const MAP_HUGE_512KB: u32 = 19 << 26;
+
+pub const MAP_HUGE_1MB: u32 = 20 << 26;
+
+pub const MAP_HUGE_2MB: u32 = 21 << 26;
+
+pub const MAP_HUGE_8MB: u32 = 23 << 26;
+
+pub const MAP_HUGE_16MB: u32 = 24 << 26;
+
+pub const MAP_HUGE_32MB: u32 = 25 << 26;
+
+pub const MAP_HUGE_256MB: u32 = 28 << 26;
+
+pub const MAP_HUGE_512MB: u32 = 29 << 26;
+
+pub const MAP_HUGE_1GB: u32 = 30 << 26;
+
+pub const MAP_HUGE_2GB: u32 = 31 << 26;
+
+pub const MAP_HUGE_16GB: u32 = 34u32 << 26;
+
+pub const PROT_NONE: u32 = 0;
+
+pub const PROT_READ: u32 = 1;
+
+pub const PROT_WRITE: u32 = 2;
+
+pub const PROT_EXEC: u32 = 4;
+
+pub const PROT_GROWSDOWN: u32 = 0x01000000;
+
+pub const PROT_GROWSUP: u32 = 0x02000000;
+
+pub const MS_ASYNC: u32 = 1;
+
+pub const MS_INVALIDATE: u32 = 2;
+
+pub const MS_SYNC: u32 = 4;
+
+pub const MCL_CURRENT: u32 = 1;
+
+pub const MCL_FUTURE: u32 = 2;
+
+pub const MCL_ONFAULT: u32 = 4;
+
+pub const POSIX_MADV_NORMAL: u32 = 0;
+
+pub const POSIX_MADV_RANDOM: u32 = 1;
+
+pub const POSIX_MADV_SEQUENTIAL: u32 = 2;
+
+pub const POSIX_MADV_WILLNEED: u32 = 3;
+
+pub const POSIX_MADV_DONTNEED: u32 = 4;
+
+// wctype
+pub const WCTYPE_ALNUM: u64 = 1;
+
+pub const WCTYPE_ALPHA: u64 = 2;
+
+pub const WCTYPE_BLANK: u64 = 3;
+
+pub const WCTYPE_CNTRL: u64 = 4;
+
+pub const WCTYPE_DIGIT: u64 = 5;
+
+pub const WCTYPE_GRAPH: u64 = 6;
+
+pub const WCTYPE_LOWER: u64 = 7;
+
+pub const WCTYPE_PRINT: u64 = 8;
+
+pub const WCTYPE_PUNCT: u64 = 9;
+
+pub const WCTYPE_SPACE: u64 = 10;
+
+pub const WCTYPE_UPPER: u64 = 11;
+
+pub const WCTYPE_XDIGIT: u64 = 12;
+
+// locale
+pub const LC_CTYPE: i32 = 0;
+
+pub const LC_NUMERIC: i32 = 1;
+
+pub const LC_TIME: i32 = 2;
+
+pub const LC_COLLATE: i32 = 3;
+
+pub const LC_MONETARY: i32 = 4;
+
+pub const LC_MESSAGES: i32 = 5;
+
+pub const LC_ALL: i32 = 6;
+
+// pthread
+pub const __SIZEOF_PTHREAD_COND_T: usize = 48;
+
+pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
+
+pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
+
+pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
+
+// errno.h
+pub const EPERM: c_int = 1;
+
+pub const ENOENT: c_int = 2;
+
+pub const ESRCH: c_int = 3;
+
+pub const EINTR: c_int = 4;
+
+pub const EIO: c_int = 5;
+
+pub const ENXIO: c_int = 6;
+
+pub const E2BIG: c_int = 7;
+
+pub const ENOEXEC: c_int = 8;
+
+pub const EBADF: c_int = 9;
+
+pub const ECHILD: c_int = 10;
+
+pub const EAGAIN: c_int = 11;
+
+pub const ENOMEM: c_int = 12;
+
+pub const EACCES: c_int = 13;
+
+pub const EFAULT: c_int = 14;
+
+pub const ENOTBLK: c_int = 15;
+
+pub const EBUSY: c_int = 16;
+
+pub const EEXIST: c_int = 17;
+
+pub const EXDEV: c_int = 18;
+
+pub const ENODEV: c_int = 19;
+
+pub const ENOTDIR: c_int = 20;
+
+pub const EISDIR: c_int = 21;
+
+pub const EINVAL: c_int = 22;
+
+pub const ENFILE: c_int = 23;
+
+pub const EMFILE: c_int = 24;
+
+pub const ENOTTY: c_int = 25;
+
+pub const ETXTBSY: c_int = 26;
+
+pub const EFBIG: c_int = 27;
+
+pub const ENOSPC: c_int = 28;
+
+pub const ESPIPE: c_int = 29;
+
+pub const EROFS: c_int = 30;
+
+pub const EMLINK: c_int = 31;
+
+pub const EPIPE: c_int = 32;
+
+pub const EDOM: c_int = 33;
+
+pub const ERANGE: c_int = 34;
+
+pub const EDEADLK: c_int = 35;
+
+pub const ENAMETOOLONG: c_int = 36;
+
+pub const ENOLCK: c_int = 37;
+
+pub const ENOSYS: c_int = 38;
+
+pub const ENOTEMPTY: c_int = 39;
+
+pub const ELOOP: c_int = 40;
+
+pub const EWOULDBLOCK: c_int = EAGAIN;
+
+pub const ENOMSG: c_int = 42;
+
+pub const EIDRM: c_int = 43;
+
+pub const ECHRNG: c_int = 44;
+
+pub const EL2NSYNC: c_int = 45;
+
+pub const EL3HLT: c_int = 46;
+
+pub const EL3RST: c_int = 47;
+
+pub const ELNRNG: c_int = 48;
+
+pub const EUNATCH: c_int = 49;
+
+pub const ENOCSI: c_int = 50;
+
+pub const EL2HLT: c_int = 51;
+
+pub const EBADE: c_int = 52;
+
+pub const EBADR: c_int = 53;
+
+pub const EXFULL: c_int = 54;
+
+pub const ENOANO: c_int = 55;
+
+pub const EBADRQC: c_int = 56;
+
+pub const EBADSLT: c_int = 57;
+
+pub const EDEADLOCK: c_int = EDEADLK;
+
+pub const EBFONT: c_int = 59;
+
+pub const ENOSTR: c_int = 60;
+
+pub const ENODATA: c_int = 61;
+
+pub const ETIME: c_int = 62;
+
+pub const ENOSR: c_int = 63;
+
+pub const ENONET: c_int = 64;
+
+pub const ENOPKG: c_int = 65;
+
+pub const EREMOTE: c_int = 66;
+
+pub const ENOLINK: c_int = 67;
+
+pub const EADV: c_int = 68;
+
+pub const ESRMNT: c_int = 69;
+
+pub const ECOMM: c_int = 70;
+
+pub const EPROTO: c_int = 71;
+
+pub const EMULTIHOP: c_int = 72;
+
+pub const EDOTDOT: c_int = 73;
+
+pub const EBADMSG: c_int = 74;
+
+pub const EOVERFLOW: c_int = 75;
+
+pub const ENOTUNIQ: c_int = 76;
+
+pub const EBADFD: c_int = 77;
+
+pub const EREMCHG: c_int = 78;
+
+pub const ELIBACC: c_int = 79;
+
+pub const ELIBBAD: c_int = 80;
+
+pub const ELIBSCN: c_int = 81;
+
+pub const ELIBMAX: c_int = 82;
+
+pub const ELIBEXEC: c_int = 83;
+
+pub const EILSEQ: c_int = 84;
+
+pub const ERESTART: c_int = 85;
+
+pub const ESTRPIPE: c_int = 86;
+
+pub const EUSERS: c_int = 87;
+
+pub const ENOTSOCK: c_int = 88;
+
+pub const EDESTADDRREQ: c_int = 89;
+
+pub const EMSGSIZE: c_int = 90;
+
+pub const EPROTOTYPE: c_int = 91;
+
+pub const ENOPROTOOPT: c_int = 92;
+
+pub const EPROTONOSUPPOR: c_int = 93;
+
+pub const ESOCKTNOSUPPOR: c_int = 94;
+
+pub const EOPNOTSUPP: c_int = 95;
+
+pub const ENOTSUP: c_int = EOPNOTSUPP;
+
+pub const EPFNOSUPPORT: c_int = 96;
+
+pub const EAFNOSUPPORT: c_int = 97;
+
+pub const EADDRINUSE: c_int = 98;
+
+pub const EADDRNOTAVAIL: c_int = 99;
+
+pub const ENETDOWN: c_int = 100;
+
+pub const ENETUNREACH: c_int = 101;
+
+pub const ENETRESET: c_int = 102;
+
+pub const ECONNABORTED: c_int = 103;
+
+pub const ECONNRESET: c_int = 104;
+
+pub const ENOBUFS: c_int = 105;
+
+pub const EISCONN: c_int = 106;
+
+pub const ENOTCONN: c_int = 107;
+
+pub const ESHUTDOWN: c_int = 108;
+
+pub const ETOOMANYREFS: c_int = 109;
+
+pub const ETIMEDOUT: c_int = 110;
+
+pub const ECONNREFUSED: c_int = 111;
+
+pub const EHOSTDOWN: c_int = 112;
+
+pub const EHOSTUNREACH: c_int = 113;
+
+pub const EALREADY: c_int = 114;
+
+pub const EINPROGRESS: c_int = 115;
+
+pub const ESTALE: c_int = 116;
+
+pub const EUCLEAN: c_int = 117;
+
+pub const ENOTNAM: c_int = 118;
+
+pub const ENAVAIL: c_int = 119;
+
+pub const EISNAM: c_int = 120;
+
+pub const EREMOTEIO: c_int = 121;
+
+pub const EDQUOT: c_int = 122;
+
+pub const ENOMEDIUM: c_int = 123;
+
+pub const EMEDIUMTYPE: c_int = 124;
+
+pub const ECANCELED: c_int = 125;
+
+pub const ENOKEY: c_int = 126;
+
+pub const EKEYEXPIRED: c_int = 127;
+
+pub const EKEYREVOKED: c_int = 128;
+
+pub const EKEYREJECTED: c_int = 129;
+
+pub const EOWNERDEAD: c_int = 130;
+
+pub const ENOTRECOVERABLE: c_int = 131;
+
+pub const ERFKILL: c_int = 132;
+
+pub const EHWPOISON: c_int = 133;
+
+// pthread_attr.h
+pub const TEESMP_THREAD_ATTR_CA_WILDCARD: c_int = 0;
+
+pub const TEESMP_THREAD_ATTR_CA_INHERIT: c_int = -1;
+
+pub const TEESMP_THREAD_ATTR_TASK_ID_INHERIT: c_int = -1;
+
+pub const TEESMP_THREAD_ATTR_HAS_SHADOW: c_int = 0x1;
+
+pub const TEESMP_THREAD_ATTR_NO_SHADOW: c_int = 0x0;
+
+// unistd.h
+pub const _SC_ARG_MAX: c_int = 0;
+
+pub const _SC_CHILD_MAX: c_int = 1;
+
+pub const _SC_CLK_TCK: c_int = 2;
+
+pub const _SC_NGROUPS_MAX: c_int = 3;
+
+pub const _SC_OPEN_MAX: c_int = 4;
+
+pub const _SC_STREAM_MAX: c_int = 5;
+
+pub const _SC_TZNAME_MAX: c_int = 6;
+
+pub const _SC_JOB_CONTROL: c_int = 7;
+
+pub const _SC_SAVED_IDS: c_int = 8;
+
+pub const _SC_REALTIME_SIGNALS: c_int = 9;
+
+pub const _SC_PRIORITY_SCHEDULING: c_int = 10;
+
+pub const _SC_TIMERS: c_int = 11;
+
+pub const _SC_ASYNCHRONOUS_IO: c_int = 12;
+
+pub const _SC_PRIORITIZED_IO: c_int = 13;
+
+pub const _SC_SYNCHRONIZED_IO: c_int = 14;
+
+pub const _SC_FSYNC: c_int = 15;
+
+pub const _SC_MAPPED_FILES: c_int = 16;
+
+pub const _SC_MEMLOCK: c_int = 17;
+
+pub const _SC_MEMLOCK_RANGE: c_int = 18;
+
+pub const _SC_MEMORY_PROTECTION: c_int = 19;
+
+pub const _SC_MESSAGE_PASSING: c_int = 20;
+
+pub const _SC_SEMAPHORES: c_int = 21;
+
+pub const _SC_SHARED_MEMORY_OBJECTS: c_int = 22;
+
+pub const _SC_AIO_LISTIO_MAX: c_int = 23;
+
+pub const _SC_AIO_MAX: c_int = 24;
+
+pub const _SC_AIO_PRIO_DELTA_MAX: c_int = 25;
+
+pub const _SC_DELAYTIMER_MAX: c_int = 26;
+
+pub const _SC_MQ_OPEN_MAX: c_int = 27;
+
+pub const _SC_MQ_PRIO_MAX: c_int = 28;
+
+pub const _SC_VERSION: c_int = 29;
+
+pub const _SC_PAGE_SIZE: c_int = 30;
+
+pub const _SC_PAGESIZE: c_int = 30; /* !! */
+
+pub const _SC_RTSIG_MAX: c_int = 31;
+
+pub const _SC_SEM_NSEMS_MAX: c_int = 32;
+
+pub const _SC_SEM_VALUE_MAX: c_int = 33;
+
+pub const _SC_SIGQUEUE_MAX: c_int = 34;
+
+pub const _SC_TIMER_MAX: c_int = 35;
+
+pub const _SC_BC_BASE_MAX: c_int = 36;
+
+pub const _SC_BC_DIM_MAX: c_int = 37;
+
+pub const _SC_BC_SCALE_MAX: c_int = 38;
+
+pub const _SC_BC_STRING_MAX: c_int = 39;
+
+pub const _SC_COLL_WEIGHTS_MAX: c_int = 40;
+
+pub const _SC_EXPR_NEST_MAX: c_int = 42;
+
+pub const _SC_LINE_MAX: c_int = 43;
+
+pub const _SC_RE_DUP_MAX: c_int = 44;
+
+pub const _SC_2_VERSION: c_int = 46;
+
+pub const _SC_2_C_BIND: c_int = 47;
+
+pub const _SC_2_C_DEV: c_int = 48;
+
+pub const _SC_2_FORT_DEV: c_int = 49;
+
+pub const _SC_2_FORT_RUN: c_int = 50;
+
+pub const _SC_2_SW_DEV: c_int = 51;
+
+pub const _SC_2_LOCALEDEF: c_int = 52;
+
+pub const _SC_UIO_MAXIOV: c_int = 60; /* !! */
+
+pub const _SC_IOV_MAX: c_int = 60;
+
+pub const _SC_THREADS: c_int = 67;
+
+pub const _SC_THREAD_SAFE_FUNCTIONS: c_int = 68;
+
+pub const _SC_GETGR_R_SIZE_MAX: c_int = 69;
+
+pub const _SC_GETPW_R_SIZE_MAX: c_int = 70;
+
+pub const _SC_LOGIN_NAME_MAX: c_int = 71;
+
+pub const _SC_TTY_NAME_MAX: c_int = 72;
+
+pub const _SC_THREAD_DESTRUCTOR_ITERATIONS: c_int = 73;
+
+pub const _SC_THREAD_KEYS_MAX: c_int = 74;
+
+pub const _SC_THREAD_STACK_MIN: c_int = 75;
+
+pub const _SC_THREAD_THREADS_MAX: c_int = 76;
+
+pub const _SC_THREAD_ATTR_STACKADDR: c_int = 77;
+
+pub const _SC_THREAD_ATTR_STACKSIZE: c_int = 78;
+
+pub const _SC_THREAD_PRIORITY_SCHEDULING: c_int = 79;
+
+pub const _SC_THREAD_PRIO_INHERIT: c_int = 80;
+
+pub const _SC_THREAD_PRIO_PROTECT: c_int = 81;
+
+pub const _SC_THREAD_PROCESS_SHARED: c_int = 82;
+
+pub const _SC_NPROCESSORS_CONF: c_int = 83;
+
+pub const _SC_NPROCESSORS_ONLN: c_int = 84;
+
+pub const _SC_PHYS_PAGES: c_int = 85;
+
+pub const _SC_AVPHYS_PAGES: c_int = 86;
+
+pub const _SC_ATEXIT_MAX: c_int = 87;
+
+pub const _SC_PASS_MAX: c_int = 88;
+
+pub const _SC_XOPEN_VERSION: c_int = 89;
+
+pub const _SC_XOPEN_XCU_VERSION: c_int = 90;
+
+pub const _SC_XOPEN_UNIX: c_int = 91;
+
+pub const _SC_XOPEN_CRYPT: c_int = 92;
+
+pub const _SC_XOPEN_ENH_I18N: c_int = 93;
+
+pub const _SC_XOPEN_SHM: c_int = 94;
+
+pub const _SC_2_CHAR_TERM: c_int = 95;
+
+pub const _SC_2_UPE: c_int = 97;
+
+pub const _SC_XOPEN_XPG2: c_int = 98;
+
+pub const _SC_XOPEN_XPG3: c_int = 99;
+
+pub const _SC_XOPEN_XPG4: c_int = 100;
+
+pub const _SC_NZERO: c_int = 109;
+
+pub const _SC_XBS5_ILP32_OFF32: c_int = 125;
+
+pub const _SC_XBS5_ILP32_OFFBIG: c_int = 126;
+
+pub const _SC_XBS5_LP64_OFF64: c_int = 127;
+
+pub const _SC_XBS5_LPBIG_OFFBIG: c_int = 128;
+
+pub const _SC_XOPEN_LEGACY: c_int = 129;
+
+pub const _SC_XOPEN_REALTIME: c_int = 130;
+
+pub const _SC_XOPEN_REALTIME_THREADS: c_int = 131;
+
+pub const _SC_ADVISORY_INFO: c_int = 132;
+
+pub const _SC_BARRIERS: c_int = 133;
+
+pub const _SC_CLOCK_SELECTION: c_int = 137;
+
+pub const _SC_CPUTIME: c_int = 138;
+
+pub const _SC_THREAD_CPUTIME: c_int = 139;
+
+pub const _SC_MONOTONIC_CLOCK: c_int = 149;
+
+pub const _SC_READER_WRITER_LOCKS: c_int = 153;
+
+pub const _SC_SPIN_LOCKS: c_int = 154;
+
+pub const _SC_REGEXP: c_int = 155;
+
+pub const _SC_SHELL: c_int = 157;
+
+pub const _SC_SPAWN: c_int = 159;
+
+pub const _SC_SPORADIC_SERVER: c_int = 160;
+
+pub const _SC_THREAD_SPORADIC_SERVER: c_int = 161;
+
+pub const _SC_TIMEOUTS: c_int = 164;
+
+pub const _SC_TYPED_MEMORY_OBJECTS: c_int = 165;
+
+pub const _SC_2_PBS: c_int = 168;
+
+pub const _SC_2_PBS_ACCOUNTING: c_int = 169;
+
+pub const _SC_2_PBS_LOCATE: c_int = 170;
+
+pub const _SC_2_PBS_MESSAGE: c_int = 171;
+
+pub const _SC_2_PBS_TRACK: c_int = 172;
+
+pub const _SC_SYMLOOP_MAX: c_int = 173;
+
+pub const _SC_STREAMS: c_int = 174;
+
+pub const _SC_2_PBS_CHECKPOINT: c_int = 175;
+
+pub const _SC_V6_ILP32_OFF32: c_int = 176;
+
+pub const _SC_V6_ILP32_OFFBIG: c_int = 177;
+
+pub const _SC_V6_LP64_OFF64: c_int = 178;
+
+pub const _SC_V6_LPBIG_OFFBIG: c_int = 179;
+
+pub const _SC_HOST_NAME_MAX: c_int = 180;
+
+pub const _SC_TRACE: c_int = 181;
+
+pub const _SC_TRACE_EVENT_FILTER: c_int = 182;
+
+pub const _SC_TRACE_INHERIT: c_int = 183;
+
+pub const _SC_TRACE_LOG: c_int = 184;
+
+pub const _SC_IPV6: c_int = 235;
+
+pub const _SC_RAW_SOCKETS: c_int = 236;
+
+pub const _SC_V7_ILP32_OFF32: c_int = 237;
+
+pub const _SC_V7_ILP32_OFFBIG: c_int = 238;
+
+pub const _SC_V7_LP64_OFF64: c_int = 239;
+
+pub const _SC_V7_LPBIG_OFFBIG: c_int = 240;
+
+pub const _SC_SS_REPL_MAX: c_int = 241;
+
+pub const _SC_TRACE_EVENT_NAME_MAX: c_int = 242;
+
+pub const _SC_TRACE_NAME_MAX: c_int = 243;
+
+pub const _SC_TRACE_SYS_MAX: c_int = 244;
+
+pub const _SC_TRACE_USER_EVENT_MAX: c_int = 245;
+
+pub const _SC_XOPEN_STREAMS: c_int = 246;
+
+pub const _SC_THREAD_ROBUST_PRIO_INHERIT: c_int = 247;
+
+pub const _SC_THREAD_ROBUST_PRIO_PROTECT: c_int = 248;
+
+// limits.h
+pub const PTHREAD_KEYS_MAX: c_int = 128;
+
+pub const PTHREAD_STACK_MIN: c_int = 2048;
+
+pub const PTHREAD_DESTRUCTOR_ITERATIONS: c_int = 4;
+
+pub const SEM_VALUE_MAX: c_int = 0x7fffffff;
+
+pub const SEM_NSEMS_MAX: c_int = 256;
+
+pub const DELAYTIMER_MAX: c_int = 0x7fffffff;
+
+pub const MQ_PRIO_MAX: c_int = 32768;
+
+pub const LOGIN_NAME_MAX: c_int = 256;
+
+// time.h
+pub const CLOCK_REALTIME: clockid_t = 0;
+
+pub const CLOCK_MONOTONIC: clockid_t = 1;
+
+pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t {
+ size: [0; __SIZEOF_PTHREAD_MUTEX_T],
+};
+
+pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t {
+ size: [0; __SIZEOF_PTHREAD_COND_T],
+};
+
+pub const PTHREAD_MUTEX_NORMAL: c_int = 0;
+
+pub const PTHREAD_MUTEX_RECURSIVE: c_int = 1;
+
+pub const PTHREAD_MUTEX_ERRORCHECK: c_int = 2;
+
+pub const PTHREAD_MUTEX_DEFAULT: c_int = PTHREAD_MUTEX_NORMAL;
+
+pub const PTHREAD_MUTEX_STALLED: c_int = 0;
+
+pub const PTHREAD_MUTEX_ROBUST: c_int = 1;
+
+extern "C" {
+ // ---- ALLOC -----------------------------------------------------------------------------
+ pub fn calloc(nobj: size_t, size: size_t) -> *mut c_void;
+
+ pub fn malloc(size: size_t) -> *mut c_void;
+
+ pub fn realloc(p: *mut c_void, size: size_t) -> *mut c_void;
+
+ pub fn aligned_alloc(align: size_t, len: size_t) -> *mut c_void;
+
+ pub fn free(p: *mut c_void);
+
+ pub fn posix_memalign(memptr: *mut *mut c_void, align: size_t, size: size_t) -> c_int;
+
+ pub fn memchr(cx: *const c_void, c: c_int, n: size_t) -> *mut c_void;
+
+ pub fn wmemchr(cx: *const wchar_t, c: wchar_t, n: size_t) -> *mut wchar_t;
+
+ pub fn memcmp(cx: *const c_void, ct: *const c_void, n: size_t) -> c_int;
+
+ pub fn memcpy(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void;
+
+ pub fn memmove(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void;
+
+ pub fn memset(dest: *mut c_void, c: c_int, n: size_t) -> *mut c_void;
+
+ // ----- PTHREAD ---------------------------------------------------------------------------
+ pub fn pthread_self() -> pthread_t;
+
+ pub fn pthread_join(native: pthread_t, value: *mut *mut c_void) -> c_int;
+
+ // detach or pthread_attr_setdetachstate must not be called!
+ //pub fn pthread_detach(thread: pthread_t) -> c_int;
+
+ pub fn pthread_exit(value: *mut c_void) -> !;
+
+ pub fn pthread_attr_init(attr: *mut pthread_attr_t) -> c_int;
+
+ pub fn pthread_attr_destroy(attr: *mut pthread_attr_t) -> c_int;
+
+ pub fn pthread_attr_getstack(
+ attr: *const pthread_attr_t,
+ stackaddr: *mut *mut c_void,
+ stacksize: *mut size_t,
+ ) -> c_int;
+
+ pub fn pthread_attr_setstacksize(attr: *mut pthread_attr_t, stack_size: size_t) -> c_int;
+
+ pub fn pthread_attr_getstacksize(attr: *const pthread_attr_t, size: *mut size_t) -> c_int;
+
+ pub fn pthread_attr_settee(
+ attr: *mut pthread_attr_t,
+ ca: c_int,
+ task_id: c_int,
+ shadow: c_int,
+ ) -> c_int;
+
+ // C-TA API do not include this interface, but TA can use.
+ pub fn sched_yield() -> c_int;
+
+ pub fn pthread_key_create(
+ key: *mut pthread_key_t,
+ dtor: Option<unsafe extern "C" fn(*mut c_void)>,
+ ) -> c_int;
+
+ pub fn pthread_key_delete(key: pthread_key_t) -> c_int;
+
+ pub fn pthread_getspecific(key: pthread_key_t) -> *mut c_void;
+
+ pub fn pthread_setspecific(key: pthread_key_t, value: *const c_void) -> c_int;
+
+ pub fn pthread_mutex_destroy(lock: *mut pthread_mutex_t) -> c_int;
+
+ pub fn pthread_mutex_init(
+ lock: *mut pthread_mutex_t,
+ attr: *const pthread_mutexattr_t,
+ ) -> c_int;
+
+ pub fn pthread_mutex_lock(lock: *mut pthread_mutex_t) -> c_int;
+
+ pub fn pthread_mutex_trylock(lock: *mut pthread_mutex_t) -> c_int;
+
+ pub fn pthread_mutex_unlock(lock: *mut pthread_mutex_t) -> c_int;
+
+ pub fn pthread_mutexattr_destroy(attr: *mut pthread_mutexattr_t) -> c_int;
+
+ pub fn pthread_mutexattr_init(attr: *mut pthread_mutexattr_t) -> c_int;
+
+ pub fn pthread_mutexattr_settype(attr: *mut pthread_mutexattr_t, _type: c_int) -> c_int;
+
+ pub fn pthread_mutexattr_setpshared(attr: *mut pthread_mutexattr_t, pshared: c_int) -> c_int;
+
+ pub fn pthread_cond_broadcast(cond: *mut pthread_cond_t) -> c_int;
+
+ pub fn pthread_cond_destroy(cond: *mut pthread_cond_t) -> c_int;
+
+ pub fn pthread_cond_init(cond: *mut pthread_cond_t, attr: *const pthread_condattr_t) -> c_int;
+
+ pub fn pthread_cond_signal(cond: *mut pthread_cond_t) -> c_int;
+
+ pub fn pthread_cond_wait(cond: *mut pthread_cond_t, lock: *mut pthread_mutex_t) -> c_int;
+
+ pub fn pthread_mutexattr_setrobust(attr: *mut pthread_mutexattr_t, robustness: c_int) -> c_int;
+
+ pub fn pthread_create(
+ native: *mut pthread_t,
+ attr: *const pthread_attr_t,
+ f: extern "C" fn(*mut c_void) -> *mut c_void,
+ value: *mut c_void,
+ ) -> c_int;
+
+ pub fn pthread_spin_init(lock: *mut pthread_spinlock_t, pshared: c_int) -> c_int;
+
+ pub fn pthread_spin_destroy(lock: *mut pthread_spinlock_t) -> c_int;
+
+ pub fn pthread_spin_lock(lock: *mut pthread_spinlock_t) -> c_int;
+
+ pub fn pthread_spin_trylock(lock: *mut pthread_spinlock_t) -> c_int;
+
+ pub fn pthread_spin_unlock(lock: *mut pthread_spinlock_t) -> c_int;
+
+ pub fn pthread_setschedprio(native: pthread_t, priority: c_int) -> c_int;
+
+ pub fn pthread_once(pot: *mut pthread_once_t, f: Option<once_fn>) -> c_int;
+
+ pub fn pthread_equal(p1: pthread_t, p2: pthread_t) -> c_int;
+
+ pub fn pthread_mutexattr_setprotocol(a: *mut pthread_mutexattr_t, protocol: c_int) -> c_int;
+
+ pub fn pthread_attr_setstack(
+ attr: *mut pthread_attr_t,
+ stack: *mut c_void,
+ size: size_t,
+ ) -> c_int;
+
+ pub fn pthread_setaffinity_np(td: pthread_t, size: size_t, set: *const cpu_set_t) -> c_int;
+
+ pub fn pthread_getaffinity_np(td: pthread_t, size: size_t, set: *mut cpu_set_t) -> c_int;
+
+ // stdio.h
+ pub fn printf(fmt: *const c_char, ...) -> c_int;
+
+ pub fn scanf(fmt: *const c_char, ...) -> c_int;
+
+ pub fn snprintf(s: *mut c_char, n: size_t, fmt: *const c_char, ...) -> c_int;
+
+ pub fn sprintf(s: *mut c_char, fmt: *const c_char, ...) -> c_int;
+
+ pub fn vsnprintf(s: *mut c_char, n: size_t, fmt: *const c_char, ap: va_list) -> c_int;
+
+ pub fn vsprintf(s: *mut c_char, fmt: *const c_char, ap: va_list) -> c_int;
+
+ // Not available.
+ //pub fn pthread_setname_np(thread: pthread_t, name: *const c_char) -> c_int;
+
+ pub fn abort() -> !;
+
+ // Not available.
+ //pub fn prctl(op: c_int, ...) -> c_int;
+
+ pub fn sched_getaffinity(pid: pid_t, cpusetsize: size_t, cpuset: *mut cpu_set_t) -> c_int;
+
+ pub fn sched_setaffinity(pid: pid_t, cpusetsize: size_t, cpuset: *const cpu_set_t) -> c_int;
+
+ // sysconf is currently only implemented as a stub.
+ pub fn sysconf(name: c_int) -> c_long;
+
+ // mman.h
+ pub fn mmap(
+ addr: *mut c_void,
+ len: size_t,
+ prot: c_int,
+ flags: c_int,
+ fd: c_int,
+ offset: off_t,
+ ) -> *mut c_void;
+ pub fn munmap(addr: *mut c_void, len: size_t) -> c_int;
+
+ // errno.h
+ pub fn __errno_location() -> *mut c_int;
+
+ pub fn strerror(e: c_int) -> *mut c_char;
+
+ // time.h
+ pub fn clock_gettime(clock_id: clockid_t, tp: *mut timespec) -> c_int;
+
+ // unistd
+ pub fn getpid() -> pid_t;
+
+ // time
+ pub fn gettimeofday(tv: *mut timeval, tz: *mut c_void) -> c_int;
+
+ pub fn strftime(
+ restrict: *mut c_char,
+ sz: size_t,
+ _restrict: *const c_char,
+ __restrict: *const tm,
+ ) -> size_t;
+
+ pub fn time(t: *mut time_t) -> time_t;
+
+ // sem
+ pub fn sem_close(sem: *mut sem_t) -> c_int;
+
+ pub fn sem_destroy(sem: *mut sem_t) -> c_int;
+
+ pub fn sem_getvalue(sem: *mut sem_t, valp: *mut c_int) -> c_int;
+
+ pub fn sem_init(sem: *mut sem_t, pshared: c_int, value: c_uint) -> c_int;
+
+ pub fn sem_open(name: *const c_char, flags: c_int, ...) -> *mut sem_t;
+
+ pub fn sem_post(sem: *mut sem_t) -> c_int;
+
+ pub fn sem_unlink(name: *const c_char) -> c_int;
+
+ pub fn sem_wait(sem: *mut sem_t) -> c_int;
+
+ // locale
+ pub fn setlocale(cat: c_int, name: *const c_char) -> *mut c_char;
+
+ pub fn strcoll(l: *const c_char, r: *const c_char) -> c_int;
+
+ pub fn strxfrm(dest: *mut c_char, src: *const c_char, n: size_t) -> size_t;
+
+ pub fn strtod(s: *const c_char, p: *mut *mut c_char) -> c_double;
+
+ // multibyte
+ pub fn mbrtowc(wc: *mut wchar_t, src: *const c_char, n: size_t, st: *mut mbstate_t) -> size_t;
+
+ pub fn wcrtomb(s: *mut c_char, wc: wchar_t, st: *mut mbstate_t) -> size_t;
+
+ pub fn wctob(c: wint_t) -> c_int;
+
+ // prng
+ pub fn srandom(seed: c_uint);
+
+ pub fn initstate(seed: c_uint, state: *mut c_char, size: size_t) -> *mut c_char;
+
+ pub fn setstate(state: *mut c_char) -> *mut c_char;
+
+ pub fn random() -> c_long;
+
+ // string
+ pub fn strchr(s: *const c_char, c: c_int) -> *mut c_char;
+
+ pub fn strlen(cs: *const c_char) -> size_t;
+
+ pub fn strcmp(l: *const c_char, r: *const c_char) -> c_int;
+
+ pub fn strcpy(dest: *mut c_char, src: *const c_char) -> *mut c_char;
+
+ pub fn strncmp(_l: *const c_char, r: *const c_char, n: size_t) -> c_int;
+
+ pub fn strncpy(dest: *mut c_char, src: *const c_char, n: size_t) -> *mut c_char;
+
+ pub fn strnlen(cs: *const c_char, n: size_t) -> size_t;
+
+ pub fn strrchr(s: *const c_char, c: c_int) -> *mut c_char;
+
+ pub fn strstr(h: *const c_char, n: *const c_char) -> *mut c_char;
+
+ pub fn wcschr(s: *const wchar_t, c: wchar_t) -> *mut wchar_t;
+
+ pub fn wcslen(s: *const wchar_t) -> size_t;
+
+ // ctype
+ pub fn isalpha(c: c_int) -> c_int;
+
+ pub fn isascii(c: c_int) -> c_int;
+
+ pub fn isdigit(c: c_int) -> c_int;
+
+ pub fn islower(c: c_int) -> c_int;
+
+ pub fn isprint(c: c_int) -> c_int;
+
+ pub fn isspace(c: c_int) -> c_int;
+
+ pub fn iswctype(wc: wint_t, ttype: wctype_t) -> c_int;
+
+ pub fn iswdigit(wc: wint_t) -> c_int;
+
+ pub fn iswlower(wc: wint_t) -> c_int;
+
+ pub fn iswspace(wc: wint_t) -> c_int;
+
+ pub fn iswupper(wc: wint_t) -> c_int;
+
+ pub fn towupper(wc: wint_t) -> wint_t;
+
+ pub fn towlower(wc: wint_t) -> wint_t;
+
+ // cmath
+ pub fn atan(x: c_double) -> c_double;
+
+ pub fn ceil(x: c_double) -> c_double;
+
+ pub fn ceilf(x: c_float) -> c_float;
+
+ pub fn exp(x: c_double) -> c_double;
+
+ pub fn fabs(x: c_double) -> c_double;
+
+ pub fn floor(x: c_double) -> c_double;
+
+ pub fn frexp(x: c_double, e: *mut c_int) -> c_double;
+
+ pub fn log(x: c_double) -> c_double;
+
+ pub fn log2(x: c_double) -> c_double;
+
+ pub fn pow(x: c_double, y: c_double) -> c_double;
+
+ pub fn roundf(x: c_float) -> c_float;
+
+ pub fn scalbn(x: c_double, n: c_int) -> c_double;
+
+ pub fn sqrt(x: c_double) -> c_double;
+
+ // stdlib
+ pub fn abs(x: c_int) -> c_int;
+
+ pub fn atof(s: *const c_char) -> c_double;
+
+ pub fn atoi(s: *const c_char) -> c_int;
+
+ pub fn atol(s: *const c_char) -> c_long;
+
+ pub fn atoll(s: *const c_char) -> c_longlong;
+
+ pub fn bsearch(
+ key: *const c_void,
+ base: *const c_void,
+ nel: size_t,
+ width: size_t,
+ cmp: cmpfunc,
+ ) -> *mut c_void;
+
+ pub fn div(num: c_int, den: c_int) -> div_t;
+
+ pub fn ecvt(x: c_double, n: c_int, dp: *mut c_int, sign: *mut c_int) -> *mut c_char;
+
+ pub fn imaxabs(a: intmax_t) -> intmax_t;
+
+ pub fn llabs(a: c_longlong) -> c_longlong;
+
+ pub fn qsort(base: *mut c_void, nel: size_t, width: size_t, cmp: cmpfunc);
+
+ pub fn strtoul(s: *const c_char, p: *mut *mut c_char, base: c_int) -> c_ulong;
+
+ pub fn strtol(s: *const c_char, p: *mut *mut c_char, base: c_int) -> c_long;
+
+ pub fn wcstod(s: *const wchar_t, p: *mut *mut wchar_t) -> c_double;
+}
+
+pub fn errno() -> c_int {
+ unsafe { *__errno_location() }
+}
+
+pub fn CPU_COUNT_S(size: usize, cpuset: &cpu_set_t) -> c_int {
+ let mut s: u32 = 0;
+ let size_of_mask = core::mem::size_of_val(&cpuset.bits[0]);
+
+ for i in cpuset.bits[..(size / size_of_mask)].iter() {
+ s += i.count_ones();
+ }
+ s as c_int
+}
+
+pub fn CPU_COUNT(cpuset: &cpu_set_t) -> c_int {
+ CPU_COUNT_S(core::mem::size_of::<cpu_set_t>(), cpuset)
+}
diff --git a/vendor/libc/src/unix/aix/mod.rs b/vendor/libc/src/unix/aix/mod.rs
index 325d7d654..0d7c2ed1d 100644
--- a/vendor/libc/src/unix/aix/mod.rs
+++ b/vendor/libc/src/unix/aix/mod.rs
@@ -1,7 +1,6 @@
pub type c_char = i8;
pub type caddr_t = *mut ::c_char;
-// FIXME: clockid_t must be c_long, but time.rs accepts only i32
-pub type clockid_t = ::c_int;
+pub type clockid_t = ::c_longlong;
pub type blkcnt_t = ::c_long;
pub type clock_t = ::c_int;
pub type daddr_t = ::c_long;
@@ -1762,6 +1761,7 @@ pub const PRIO_USER: ::c_int = 2;
pub const RUSAGE_THREAD: ::c_int = 1;
pub const RLIM_SAVED_MAX: ::c_ulong = RLIM_INFINITY - 1;
pub const RLIM_SAVED_CUR: ::c_ulong = RLIM_INFINITY - 2;
+#[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIM_NLIMITS: ::c_int = 10;
// sys/sched.h
@@ -2669,6 +2669,7 @@ extern "C" {
attr: *const ::pthread_attr_t,
guardsize: *mut ::size_t,
) -> ::c_int;
+ pub fn pthread_attr_setguardsize(attr: *mut ::pthread_attr_t, guardsize: ::size_t) -> ::c_int;
pub fn pthread_attr_getschedparam(
attr: *const ::pthread_attr_t,
param: *mut sched_param,
@@ -3273,7 +3274,13 @@ extern "C" {
pub fn splice(socket1: ::c_int, socket2: ::c_int, flags: ::c_int) -> ::c_int;
pub fn srand(seed: ::c_uint);
pub fn srand48(seed: ::c_long);
- pub fn stat64(path: *const c_char, buf: *mut stat64) -> ::c_int;
+ pub fn stat64(path: *const ::c_char, buf: *mut stat64) -> ::c_int;
+ pub fn stat64at(
+ dirfd: ::c_int,
+ path: *const ::c_char,
+ buf: *mut stat64,
+ flags: ::c_int,
+ ) -> ::c_int;
pub fn statfs(path: *const ::c_char, buf: *mut statfs) -> ::c_int;
pub fn statfs64(path: *const ::c_char, buf: *mut statfs64) -> ::c_int;
pub fn statvfs64(path: *const ::c_char, buf: *mut statvfs64) -> ::c_int;
diff --git a/vendor/libc/src/unix/bsd/apple/mod.rs b/vendor/libc/src/unix/bsd/apple/mod.rs
index a2fbf8767..21efb23eb 100644
--- a/vendor/libc/src/unix/bsd/apple/mod.rs
+++ b/vendor/libc/src/unix/bsd/apple/mod.rs
@@ -145,6 +145,16 @@ pub type CCRNGStatus = ::CCCryptorStatus;
pub type copyfile_state_t = *mut ::c_void;
pub type copyfile_flags_t = u32;
+pub type copyfile_callback_t = ::Option<
+ extern "C" fn(
+ ::c_int,
+ ::c_int,
+ copyfile_state_t,
+ *const ::c_char,
+ *const ::c_char,
+ *mut ::c_void,
+ ) -> ::c_int,
+>;
pub type attrgroup_t = u32;
pub type vol_capabilities_set_t = [u32; 4];
@@ -368,6 +378,25 @@ s! {
pub fst_bytesalloc: ::off_t,
}
+ pub struct fpunchhole_t {
+ pub fp_flags: ::c_uint, /* unused */
+ pub reserved: ::c_uint, /* (to maintain 8-byte alignment) */
+ pub fp_offset: ::off_t, /* IN: start of the region */
+ pub fp_length: ::off_t, /* IN: size of the region */
+ }
+
+ pub struct ftrimactivefile_t {
+ pub fta_offset: ::off_t,
+ pub fta_length: ::off_t,
+ }
+
+ pub struct fspecread_t {
+ pub fsr_flags: ::c_uint,
+ pub reserved: ::c_uint,
+ pub fsr_offset: ::off_t,
+ pub fsr_length: ::off_t,
+ }
+
pub struct radvisory {
pub ra_offset: ::off_t,
pub ra_count: ::c_int,
@@ -768,7 +797,7 @@ s! {
pub struct sockaddr_ndrv {
pub snd_len: ::c_uchar,
pub snd_family: ::c_uchar,
- pub snd_name: [::c_uchar; 16] // IFNAMSIZ from if.h
+ pub snd_name: [::c_uchar; ::IFNAMSIZ],
}
// sys/socket.h
@@ -1100,6 +1129,15 @@ s! {
pub validattr: attribute_set_t,
pub nativeattr: attribute_set_t,
}
+
+ #[cfg_attr(libc_packedN, repr(packed(4)))]
+ pub struct ifconf {
+ pub ifc_len: ::c_int,
+ #[cfg(libc_union)]
+ pub ifc_ifcu: __c_anonymous_ifc_ifcu,
+ #[cfg(not(libc_union))]
+ pub ifc_ifcu: *mut ifreq,
+ }
}
s_no_extra_traits! {
@@ -1390,6 +1428,60 @@ s_no_extra_traits! {
pub svm_port: ::c_uint,
pub svm_cid: ::c_uint,
}
+
+ pub struct ifdevmtu {
+ pub ifdm_current: ::c_int,
+ pub ifdm_min: ::c_int,
+ pub ifdm_max: ::c_int,
+ }
+
+ #[cfg(libc_union)]
+ pub union __c_anonymous_ifk_data {
+ pub ifk_ptr: *mut ::c_void,
+ pub ifk_value: ::c_int,
+ }
+
+ #[cfg_attr(libc_packedN, repr(packed(4)))]
+ pub struct ifkpi {
+ pub ifk_module_id: ::c_uint,
+ pub ifk_type: ::c_uint,
+ #[cfg(libc_union)]
+ pub ifk_data: __c_anonymous_ifk_data,
+ }
+
+ #[cfg(libc_union)]
+ pub union __c_anonymous_ifr_ifru {
+ pub ifru_addr: ::sockaddr,
+ pub ifru_dstaddr: ::sockaddr,
+ pub ifru_broadaddr: ::sockaddr,
+ pub ifru_flags: ::c_short,
+ pub ifru_metrics: ::c_int,
+ pub ifru_mtu: ::c_int,
+ pub ifru_phys: ::c_int,
+ pub ifru_media: ::c_int,
+ pub ifru_intval: ::c_int,
+ pub ifru_data: *mut ::c_char,
+ pub ifru_devmtu: ifdevmtu,
+ pub ifru_kpi: ifkpi,
+ pub ifru_wake_flags: u32,
+ pub ifru_route_refcnt: u32,
+ pub ifru_cap: [::c_int; 2],
+ pub ifru_functional_type: u32,
+ }
+
+ pub struct ifreq {
+ pub ifr_name: [::c_char; ::IFNAMSIZ],
+ #[cfg(libc_union)]
+ pub ifr_ifru: __c_anonymous_ifr_ifru,
+ #[cfg(not(libc_union))]
+ pub ifr_ifru: ::sockaddr,
+ }
+
+ #[cfg(libc_union)]
+ pub union __c_anonymous_ifc_ifcu {
+ pub ifcu_buf: *mut ::c_char,
+ pub ifcu_req: *mut ifreq,
+ }
}
impl siginfo_t {
@@ -2738,6 +2830,222 @@ cfg_if! {
svm_cid.hash(state);
}
}
+
+ impl PartialEq for ifdevmtu {
+ fn eq(&self, other: &ifdevmtu) -> bool {
+ self.ifdm_current == other.ifdm_current
+ && self.ifdm_min == other.ifdm_min
+ && self.ifdm_max == other.ifdm_max
+ }
+ }
+
+ impl Eq for ifdevmtu {}
+
+ impl ::fmt::Debug for ifdevmtu {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("ifdevmtu")
+ .field("ifdm_current", &self.ifdm_current)
+ .field("ifdm_min", &self.ifdm_min)
+ .field("ifdm_max", &self.ifdm_max)
+ .finish()
+ }
+ }
+
+ impl ::hash::Hash for ifdevmtu {
+ fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
+ self.ifdm_current.hash(state);
+ self.ifdm_min.hash(state);
+ self.ifdm_max.hash(state);
+ }
+ }
+
+ #[cfg(libc_union)]
+ impl PartialEq for __c_anonymous_ifk_data {
+ fn eq(&self, other: &__c_anonymous_ifk_data) -> bool {
+ unsafe {
+ self.ifk_ptr == other.ifk_ptr
+ && self.ifk_value == other.ifk_value
+ }
+ }
+ }
+
+ #[cfg(libc_union)]
+ impl Eq for __c_anonymous_ifk_data {}
+
+ #[cfg(libc_union)]
+ impl ::fmt::Debug for __c_anonymous_ifk_data {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("__c_anonymous_ifk_data")
+ .field("ifk_ptr", unsafe { &self.ifk_ptr })
+ .field("ifk_value", unsafe { &self.ifk_value })
+ .finish()
+ }
+ }
+ #[cfg(libc_union)]
+ impl ::hash::Hash for __c_anonymous_ifk_data {
+ fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
+ unsafe {
+ self.ifk_ptr.hash(state);
+ self.ifk_value.hash(state);
+ }
+ }
+ }
+
+ impl PartialEq for ifkpi {
+ fn eq(&self, other: &ifkpi) -> bool {
+ self.ifk_module_id == other.ifk_module_id
+ && self.ifk_type == other.ifk_type
+ }
+ }
+
+ impl Eq for ifkpi {}
+
+ impl ::fmt::Debug for ifkpi {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("ifkpi")
+ .field("ifk_module_id", &self.ifk_module_id)
+ .field("ifk_type", &self.ifk_type)
+ .finish()
+ }
+ }
+
+ impl ::hash::Hash for ifkpi {
+ fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
+ self.ifk_module_id.hash(state);
+ self.ifk_type.hash(state);
+ }
+ }
+
+ #[cfg(libc_union)]
+ impl PartialEq for __c_anonymous_ifr_ifru {
+ fn eq(&self, other: &__c_anonymous_ifr_ifru) -> bool {
+ unsafe {
+ self.ifru_addr == other.ifru_addr
+ && self.ifru_dstaddr == other.ifru_dstaddr
+ && self.ifru_broadaddr == other.ifru_broadaddr
+ && self.ifru_flags == other.ifru_flags
+ && self.ifru_metrics == other.ifru_metrics
+ && self.ifru_mtu == other.ifru_mtu
+ && self.ifru_phys == other.ifru_phys
+ && self.ifru_media == other.ifru_media
+ && self.ifru_intval == other.ifru_intval
+ && self.ifru_data == other.ifru_data
+ && self.ifru_devmtu == other.ifru_devmtu
+ && self.ifru_kpi == other.ifru_kpi
+ && self.ifru_wake_flags == other.ifru_wake_flags
+ && self.ifru_route_refcnt == other.ifru_route_refcnt
+ && self.ifru_cap.iter().zip(other.ifru_cap.iter()).all(|(a,b)| a == b)
+ && self.ifru_functional_type == other.ifru_functional_type
+ }
+ }
+ }
+
+ #[cfg(libc_union)]
+ impl Eq for __c_anonymous_ifr_ifru {}
+
+ #[cfg(libc_union)]
+ impl ::fmt::Debug for __c_anonymous_ifr_ifru {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("__c_anonymous_ifr_ifru")
+ .field("ifru_addr", unsafe { &self.ifru_addr })
+ .field("ifru_dstaddr", unsafe { &self.ifru_dstaddr })
+ .field("ifru_broadaddr", unsafe { &self.ifru_broadaddr })
+ .field("ifru_flags", unsafe { &self.ifru_flags })
+ .field("ifru_metrics", unsafe { &self.ifru_metrics })
+ .field("ifru_mtu", unsafe { &self.ifru_mtu })
+ .field("ifru_phys", unsafe { &self.ifru_phys })
+ .field("ifru_media", unsafe { &self.ifru_media })
+ .field("ifru_intval", unsafe { &self.ifru_intval })
+ .field("ifru_data", unsafe { &self.ifru_data })
+ .field("ifru_devmtu", unsafe { &self.ifru_devmtu })
+ .field("ifru_kpi", unsafe { &self.ifru_kpi })
+ .field("ifru_wake_flags", unsafe { &self.ifru_wake_flags })
+ .field("ifru_route_refcnt", unsafe { &self.ifru_route_refcnt })
+ .field("ifru_cap", unsafe { &self.ifru_cap })
+ .field("ifru_functional_type", unsafe { &self.ifru_functional_type })
+ .finish()
+ }
+ }
+
+ #[cfg(libc_union)]
+ impl ::hash::Hash for __c_anonymous_ifr_ifru {
+ fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
+ unsafe {
+ self.ifru_addr.hash(state);
+ self.ifru_dstaddr.hash(state);
+ self.ifru_broadaddr.hash(state);
+ self.ifru_flags.hash(state);
+ self.ifru_metrics.hash(state);
+ self.ifru_mtu.hash(state);
+ self.ifru_phys.hash(state);
+ self.ifru_media.hash(state);
+ self.ifru_intval.hash(state);
+ self.ifru_data.hash(state);
+ self.ifru_devmtu.hash(state);
+ self.ifru_kpi.hash(state);
+ self.ifru_wake_flags.hash(state);
+ self.ifru_route_refcnt.hash(state);
+ self.ifru_cap.hash(state);
+ self.ifru_functional_type.hash(state);
+ }
+ }
+ }
+
+ impl PartialEq for ifreq {
+ fn eq(&self, other: &ifreq) -> bool {
+ self.ifr_name == other.ifr_name
+ && self.ifr_ifru == other.ifr_ifru
+ }
+ }
+
+ impl Eq for ifreq {}
+
+ impl ::fmt::Debug for ifreq {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("ifreq")
+ .field("ifr_name", &self.ifr_name)
+ .field("ifr_ifru", &self.ifr_ifru)
+ .finish()
+ }
+ }
+
+ impl ::hash::Hash for ifreq {
+ fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
+ self.ifr_name.hash(state);
+ self.ifr_ifru.hash(state);
+ }
+ }
+
+ #[cfg(libc_union)]
+ impl Eq for __c_anonymous_ifc_ifcu {}
+
+ #[cfg(libc_union)]
+ impl PartialEq for __c_anonymous_ifc_ifcu {
+ fn eq(&self, other: &__c_anonymous_ifc_ifcu) -> bool {
+ unsafe {
+ self.ifcu_buf == other.ifcu_buf &&
+ self.ifcu_req == other.ifcu_req
+ }
+ }
+ }
+
+ #[cfg(libc_union)]
+ impl ::fmt::Debug for __c_anonymous_ifc_ifcu {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("ifc_ifcu")
+ .field("ifcu_buf", unsafe { &self.ifcu_buf })
+ .field("ifcu_req", unsafe { &self.ifcu_req })
+ .finish()
+ }
+ }
+
+ #[cfg(libc_union)]
+ impl ::hash::Hash for __c_anonymous_ifc_ifcu {
+ fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
+ unsafe { self.ifcu_buf.hash(state) };
+ unsafe { self.ifcu_req.hash(state) };
+ }
+ }
}
}
@@ -3231,6 +3539,9 @@ pub const F_GLOBAL_NOCACHE: ::c_int = 55;
pub const F_NODIRECT: ::c_int = 62;
pub const F_LOG2PHYS_EXT: ::c_int = 65;
pub const F_BARRIERFSYNC: ::c_int = 85;
+pub const F_PUNCHHOLE: ::c_int = 99;
+pub const F_TRIM_ACTIVE_FILE: ::c_int = 100;
+pub const F_SPECULATIVE_READ: ::c_int = 101;
pub const F_GETPATH_NOFIRMLINK: ::c_int = 102;
pub const F_ALLOCATECONTIG: ::c_uint = 0x02;
@@ -4687,12 +4998,12 @@ pub const MNT_SNAPSHOT: ::c_int = 0x40000000;
pub const MNT_NOBLOCK: ::c_int = 0x00020000;
// sys/spawn.h:
-pub const POSIX_SPAWN_RESETIDS: ::c_int = 0x01;
-pub const POSIX_SPAWN_SETPGROUP: ::c_int = 0x02;
-pub const POSIX_SPAWN_SETSIGDEF: ::c_int = 0x04;
-pub const POSIX_SPAWN_SETSIGMASK: ::c_int = 0x08;
-pub const POSIX_SPAWN_SETEXEC: ::c_int = 0x40;
-pub const POSIX_SPAWN_START_SUSPENDED: ::c_int = 0x80;
+pub const POSIX_SPAWN_RESETIDS: ::c_int = 0x0001;
+pub const POSIX_SPAWN_SETPGROUP: ::c_int = 0x0002;
+pub const POSIX_SPAWN_SETSIGDEF: ::c_int = 0x0004;
+pub const POSIX_SPAWN_SETSIGMASK: ::c_int = 0x0008;
+pub const POSIX_SPAWN_SETEXEC: ::c_int = 0x0040;
+pub const POSIX_SPAWN_START_SUSPENDED: ::c_int = 0x0080;
pub const POSIX_SPAWN_CLOEXEC_DEFAULT: ::c_int = 0x4000;
// sys/ipc.h:
@@ -4911,6 +5222,19 @@ pub const COPYFILE_PROGRESS: ::c_int = 4;
pub const COPYFILE_CONTINUE: ::c_int = 0;
pub const COPYFILE_SKIP: ::c_int = 1;
pub const COPYFILE_QUIT: ::c_int = 2;
+pub const COPYFILE_STATE_SRC_FD: ::c_int = 1;
+pub const COPYFILE_STATE_SRC_FILENAME: ::c_int = 2;
+pub const COPYFILE_STATE_DST_FD: ::c_int = 3;
+pub const COPYFILE_STATE_DST_FILENAME: ::c_int = 4;
+pub const COPYFILE_STATE_QUARANTINE: ::c_int = 5;
+pub const COPYFILE_STATE_STATUS_CB: ::c_int = 6;
+pub const COPYFILE_STATE_STATUS_CTX: ::c_int = 7;
+pub const COPYFILE_STATE_COPIED: ::c_int = 8;
+pub const COPYFILE_STATE_XATTRNAME: ::c_int = 9;
+pub const COPYFILE_STATE_WAS_CLONED: ::c_int = 10;
+pub const COPYFILE_STATE_SRC_BSIZE: ::c_int = 11;
+pub const COPYFILE_STATE_DST_BSIZE: ::c_int = 12;
+pub const COPYFILE_STATE_BSIZE: ::c_int = 13;
// <sys/attr.h>
pub const ATTR_BIT_MAP_COUNT: ::c_ushort = 5;
@@ -5734,6 +6058,18 @@ extern "C" {
subpref: *mut ::cpu_subtype_t,
ocount: *mut ::size_t,
) -> ::c_int;
+ pub fn posix_spawnattr_getbinpref_np(
+ attr: *const posix_spawnattr_t,
+ count: ::size_t,
+ pref: *mut ::cpu_type_t,
+ ocount: *mut ::size_t,
+ ) -> ::c_int;
+ pub fn posix_spawnattr_setbinpref_np(
+ attr: *mut posix_spawnattr_t,
+ count: ::size_t,
+ pref: *mut ::cpu_type_t,
+ ocount: *mut ::size_t,
+ ) -> ::c_int;
pub fn posix_spawnattr_set_qos_class_np(
attr: *mut posix_spawnattr_t,
qos_class: ::qos_class_t,
@@ -5819,6 +6155,10 @@ extern "C" {
state: copyfile_state_t,
flags: copyfile_flags_t,
) -> ::c_int;
+ pub fn copyfile_state_free(s: copyfile_state_t) -> ::c_int;
+ pub fn copyfile_state_alloc() -> copyfile_state_t;
+ pub fn copyfile_state_get(s: copyfile_state_t, flags: u32, dst: *mut ::c_void) -> ::c_int;
+ pub fn copyfile_state_set(s: copyfile_state_t, flags: u32, src: *const ::c_void) -> ::c_int;
// Added in macOS 10.13
// ISO/IEC 9899:2011 ("ISO C11") K.3.7.4.1
@@ -6068,6 +6408,11 @@ extern "C" {
dev: dev_t,
) -> ::c_int;
pub fn freadlink(fd: ::c_int, buf: *mut ::c_char, size: ::size_t) -> ::c_int;
+ pub fn execvP(
+ file: *const ::c_char,
+ search_path: *const ::c_char,
+ argv: *const *mut ::c_char,
+ ) -> ::c_int;
}
pub unsafe fn mach_task_self() -> ::mach_port_t {
@@ -6082,7 +6427,7 @@ cfg_if! {
}
}
cfg_if! {
- if #[cfg(any(target_os = "macos", target_os = "ios"))] {
+ if #[cfg(any(target_os = "macos", target_os = "ios", target_os = "tvos"))] {
extern "C" {
pub fn memmem(
haystack: *const ::c_void,
diff --git a/vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs b/vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs
index b3a5be449..6ade7949a 100644
--- a/vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs
+++ b/vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs
@@ -1678,6 +1678,12 @@ extern "C" {
pub fn dirname(path: *mut ::c_char) -> *mut ::c_char;
pub fn basename(path: *mut ::c_char) -> *mut ::c_char;
+ pub fn getmntinfo(mntbufp: *mut *mut ::statfs, flags: ::c_int) -> ::c_int;
+ pub fn getmntvinfo(
+ mntbufp: *mut *mut ::statfs,
+ mntvbufp: *mut *mut ::statvfs,
+ flags: ::c_int,
+ ) -> ::c_int;
}
#[link(name = "rt")]
diff --git a/vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs b/vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs
index 4138af576..c654ae42e 100644
--- a/vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs
+++ b/vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs
@@ -365,9 +365,13 @@ s! {
}
pub struct cpuset_t {
- #[cfg(target_pointer_width = "64")]
+ #[cfg(all(freebsd14, target_pointer_width = "64"))]
+ __bits: [::c_long; 16],
+ #[cfg(all(freebsd14, target_pointer_width = "32"))]
+ __bits: [::c_long; 32],
+ #[cfg(all(not(freebsd14), target_pointer_width = "64"))]
__bits: [::c_long; 4],
- #[cfg(target_pointer_width = "32")]
+ #[cfg(all(not(freebsd14), target_pointer_width = "32"))]
__bits: [::c_long; 8],
}
@@ -967,6 +971,8 @@ s! {
pub ifc_len: ::c_int,
#[cfg(libc_union)]
pub ifc_ifcu: __c_anonymous_ifc_ifcu,
+ #[cfg(not(libc_union))]
+ pub ifc_ifcu: *mut ifreq,
}
pub struct au_mask_t {
@@ -996,6 +1002,8 @@ s! {
pub pcbcnt: u32,
}
+ // Note: this structure will change in a backwards-incompatible way in
+ // FreeBSD 15.
pub struct tcp_info {
pub tcpi_state: u8,
pub __tcpi_ca_state: u8,
@@ -1053,7 +1061,21 @@ s! {
#[cfg(freebsd14)]
pub __tcpi_received_ce_bytes: u32,
#[cfg(freebsd14)]
- pub __tcpi_pad: [u32; 19],
+ pub tcpi_total_tlp: u32,
+ #[cfg(freebsd14)]
+ pub tcpi_total_tlp_bytes: u64,
+ #[cfg(freebsd14)]
+ pub tcpi_snd_una: u32,
+ #[cfg(freebsd14)]
+ pub tcpi_snd_max: u32,
+ #[cfg(freebsd14)]
+ pub tcpi_rcv_numsacks: u32,
+ #[cfg(freebsd14)]
+ pub tcpi_rcv_adv: u32,
+ #[cfg(freebsd14)]
+ pub tcpi_dupacks: u32,
+ #[cfg(freebsd14)]
+ pub __tcpi_pad: [u32; 10],
#[cfg(not(freebsd14))]
pub __tcpi_pad: [u32; 26],
}
@@ -2597,7 +2619,13 @@ pub const DEVSTAT_N_TRANS_FLAGS: ::c_int = 4;
pub const DEVSTAT_NAME_LEN: ::c_int = 16;
// sys/cpuset.h
-pub const CPU_SETSIZE: ::c_int = 256;
+cfg_if! {
+ if #[cfg(freebsd14)] {
+ pub const CPU_SETSIZE: ::c_int = 1024;
+ } else {
+ pub const CPU_SETSIZE: ::c_int = 256;
+ }
+}
pub const SIGEV_THREAD_ID: ::c_int = 4;
@@ -2664,7 +2692,9 @@ pub const Q_SETQUOTA: ::c_int = 0x800;
pub const MAP_GUARD: ::c_int = 0x00002000;
pub const MAP_EXCL: ::c_int = 0x00004000;
pub const MAP_PREFAULT_READ: ::c_int = 0x00040000;
-pub const MAP_ALIGNED_SUPER: ::c_int = 1 << 24;
+pub const MAP_ALIGNMENT_SHIFT: ::c_int = 24;
+pub const MAP_ALIGNMENT_MASK: ::c_int = 0xff << MAP_ALIGNMENT_SHIFT;
+pub const MAP_ALIGNED_SUPER: ::c_int = 1 << MAP_ALIGNMENT_SHIFT;
pub const POSIX_FADV_NORMAL: ::c_int = 0;
pub const POSIX_FADV_RANDOM: ::c_int = 1;
@@ -3168,6 +3198,7 @@ pub const IFF_LOOPBACK: ::c_int = 0x8;
/// (i) is a point-to-point link
pub const IFF_POINTOPOINT: ::c_int = 0x10;
/// (i) calls if_input in net epoch
+#[deprecated(since = "0.2.149", note = "Removed in FreeBSD 14")]
pub const IFF_KNOWSEPOCH: ::c_int = 0x20;
/// (d) resources allocated
pub const IFF_RUNNING: ::c_int = 0x40;
@@ -3215,6 +3246,7 @@ pub const IFF_DYING: ::c_int = 0x200000;
/// (n) interface is being renamed
pub const IFF_RENAMING: ::c_int = 0x400000;
/// interface is not part of any groups
+#[deprecated(since = "0.2.149", note = "Removed in FreeBSD 14")]
pub const IFF_NOGROUP: ::c_int = 0x800000;
/// link invalid/unknown
@@ -4693,6 +4725,11 @@ pub const RB_POWERCYCLE: ::c_int = 0x400000;
pub const RB_PROBE: ::c_int = 0x10000000;
pub const RB_MULTIPLE: ::c_int = 0x20000000;
+// sys/timerfd.h
+
+pub const TFD_NONBLOCK: ::c_int = ::O_NONBLOCK;
+pub const TFD_CLOEXEC: ::c_int = O_CLOEXEC;
+
cfg_if! {
if #[cfg(libc_const_extern_fn)] {
pub const fn MAP_ALIGNED(a: ::c_int) -> ::c_int {
@@ -4820,6 +4857,14 @@ f! {
};
::mem::size_of::<sockcred2>() + ::mem::size_of::<::gid_t>() * ngrps
}
+
+ pub fn PROT_MAX(x: ::c_int) -> ::c_int {
+ x << 16
+ }
+
+ pub fn PROT_MAX_EXTRACT(x: ::c_int) -> ::c_int {
+ (x >> 16) & (::PROT_READ | ::PROT_WRITE | ::PROT_EXEC)
+ }
}
safe_f! {
@@ -5406,6 +5451,17 @@ extern "C" {
infotype: *mut ::c_uint,
flags: *mut ::c_int,
) -> ::ssize_t;
+
+ pub fn timerfd_create(clockid: ::c_int, flags: ::c_int) -> ::c_int;
+ pub fn timerfd_gettime(fd: ::c_int, curr_value: *mut itimerspec) -> ::c_int;
+ pub fn timerfd_settime(
+ fd: ::c_int,
+ flags: ::c_int,
+ new_value: *const itimerspec,
+ old_value: *mut itimerspec,
+ ) -> ::c_int;
+ pub fn closefrom(lowfd: ::c_int);
+ pub fn close_range(lowfd: ::c_uint, highfd: ::c_uint, flags: ::c_int) -> ::c_int;
}
#[link(name = "memstat")]
diff --git a/vendor/libc/src/unix/bsd/freebsdlike/mod.rs b/vendor/libc/src/unix/bsd/freebsdlike/mod.rs
index fe69ca420..d2cd7794b 100644
--- a/vendor/libc/src/unix/bsd/freebsdlike/mod.rs
+++ b/vendor/libc/src/unix/bsd/freebsdlike/mod.rs
@@ -1590,6 +1590,7 @@ extern "C" {
attr: *const ::pthread_attr_t,
guardsize: *mut ::size_t,
) -> ::c_int;
+ pub fn pthread_attr_setguardsize(attr: *mut ::pthread_attr_t, guardsize: ::size_t) -> ::c_int;
pub fn pthread_attr_getstack(
attr: *const ::pthread_attr_t,
stackaddr: *mut *mut ::c_void,
@@ -1645,6 +1646,12 @@ extern "C" {
pub fn pthread_barrier_wait(barrier: *mut pthread_barrier_t) -> ::c_int;
pub fn pthread_get_name_np(tid: ::pthread_t, name: *mut ::c_char, len: ::size_t);
pub fn pthread_set_name_np(tid: ::pthread_t, name: *const ::c_char);
+ pub fn pthread_getname_np(
+ thread: ::pthread_t,
+ buffer: *mut ::c_char,
+ length: ::size_t,
+ ) -> ::c_int;
+ pub fn pthread_setname_np(thread: ::pthread_t, name: *const ::c_char) -> ::c_int;
pub fn pthread_setschedparam(
native: ::pthread_t,
policy: ::c_int,
@@ -1771,6 +1778,17 @@ extern "C" {
len: ::c_int,
) -> ::c_int;
pub fn reboot(howto: ::c_int) -> ::c_int;
+
+ pub fn exect(
+ path: *const ::c_char,
+ argv: *const *mut ::c_char,
+ envp: *const *mut ::c_char,
+ ) -> ::c_int;
+ pub fn execvP(
+ file: *const ::c_char,
+ search_path: *const ::c_char,
+ argv: *const *mut ::c_char,
+ ) -> ::c_int;
}
#[link(name = "rt")]
diff --git a/vendor/libc/src/unix/bsd/netbsdlike/mod.rs b/vendor/libc/src/unix/bsd/netbsdlike/mod.rs
index c43a4b9e8..a787ac6db 100644
--- a/vendor/libc/src/unix/bsd/netbsdlike/mod.rs
+++ b/vendor/libc/src/unix/bsd/netbsdlike/mod.rs
@@ -736,6 +736,11 @@ extern "C" {
pub fn shmat(shmid: ::c_int, shmaddr: *const ::c_void, shmflg: ::c_int) -> *mut ::c_void;
pub fn shmdt(shmaddr: *const ::c_void) -> ::c_int;
pub fn shmctl(shmid: ::c_int, cmd: ::c_int, buf: *mut ::shmid_ds) -> ::c_int;
+ pub fn execvpe(
+ file: *const ::c_char,
+ argv: *const *const ::c_char,
+ envp: *const *const ::c_char,
+ ) -> ::c_int;
}
extern "C" {
diff --git a/vendor/libc/src/unix/bsd/netbsdlike/netbsd/mips.rs b/vendor/libc/src/unix/bsd/netbsdlike/netbsd/mips.rs
new file mode 100644
index 000000000..a536254ce
--- /dev/null
+++ b/vendor/libc/src/unix/bsd/netbsdlike/netbsd/mips.rs
@@ -0,0 +1,21 @@
+use PT_FIRSTMACH;
+
+pub type c_long = i32;
+pub type c_ulong = u32;
+pub type c_char = i8;
+pub type __cpu_simple_lock_nv_t = ::c_int;
+
+cfg_if! {
+ if #[cfg(libc_const_size_of)] {
+ #[doc(hidden)]
+ pub const _ALIGNBYTES: usize = ::mem::size_of::<::c_longlong>() - 1;
+ } else {
+ #[doc(hidden)]
+ pub const _ALIGNBYTES: usize = 8 - 1;
+ }
+}
+
+pub const PT_GETREGS: ::c_int = PT_FIRSTMACH + 1;
+pub const PT_SETREGS: ::c_int = PT_FIRSTMACH + 2;
+pub const PT_GETFPREGS: ::c_int = PT_FIRSTMACH + 3;
+pub const PT_SETFPREGS: ::c_int = PT_FIRSTMACH + 4;
diff --git a/vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs b/vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs
index 46035df31..c612689a5 100644
--- a/vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs
+++ b/vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs
@@ -10,7 +10,7 @@ type __pthread_spin_t = __cpu_simple_lock_nv_t;
pub type vm_size_t = ::uintptr_t; // FIXME: deprecated since long time
pub type lwpid_t = ::c_uint;
pub type shmatt_t = ::c_uint;
-pub type cpuid_t = u64;
+pub type cpuid_t = ::c_ulong;
pub type cpuset_t = _cpuset;
pub type pthread_spin_t = ::c_uchar;
pub type timer_t = ::c_int;
@@ -60,6 +60,39 @@ impl siginfo_t {
self.si_addr
}
+ pub unsafe fn si_code(&self) -> ::c_int {
+ self.si_code
+ }
+
+ pub unsafe fn si_errno(&self) -> ::c_int {
+ self.si_errno
+ }
+
+ pub unsafe fn si_pid(&self) -> ::pid_t {
+ #[repr(C)]
+ struct siginfo_timer {
+ _si_signo: ::c_int,
+ _si_errno: ::c_int,
+ _si_code: ::c_int,
+ __pad1: ::c_int,
+ _pid: ::pid_t,
+ }
+ (*(self as *const siginfo_t as *const siginfo_timer))._pid
+ }
+
+ pub unsafe fn si_uid(&self) -> ::uid_t {
+ #[repr(C)]
+ struct siginfo_timer {
+ _si_signo: ::c_int,
+ _si_errno: ::c_int,
+ _si_code: ::c_int,
+ __pad1: ::c_int,
+ _pid: ::pid_t,
+ _uid: ::uid_t,
+ }
+ (*(self as *const siginfo_t as *const siginfo_timer))._uid
+ }
+
pub unsafe fn si_value(&self) -> ::sigval {
#[repr(C)]
struct siginfo_timer {
@@ -1527,6 +1560,7 @@ pub const SOCK_FLAGS_MASK: ::c_int = 0xf0000000;
pub const SO_SNDTIMEO: ::c_int = 0x100b;
pub const SO_RCVTIMEO: ::c_int = 0x100c;
+pub const SO_NOSIGPIPE: ::c_int = 0x0800;
pub const SO_ACCEPTFILTER: ::c_int = 0x1000;
pub const SO_TIMESTAMP: ::c_int = 0x2000;
pub const SO_OVERFLOWED: ::c_int = 0x1009;
@@ -1852,6 +1886,9 @@ pub const MNT_NODEVMTIME: ::c_int = 0x40000000;
pub const MNT_SOFTDEP: ::c_int = 0x80000000;
pub const MNT_POSIX1EACLS: ::c_int = 0x00000800;
pub const MNT_ACLS: ::c_int = MNT_POSIX1EACLS;
+pub const MNT_WAIT: ::c_int = 1;
+pub const MNT_NOWAIT: ::c_int = 2;
+pub const MNT_LAZY: ::c_int = 3;
//<sys/timex.h>
pub const NTP_API: ::c_int = 4;
@@ -2529,12 +2566,6 @@ extern "C" {
pub fn fchflags(fd: ::c_int, flags: ::c_ulong) -> ::c_int;
pub fn lchflags(path: *const ::c_char, flags: ::c_ulong) -> ::c_int;
- pub fn execvpe(
- file: *const ::c_char,
- argv: *const *const ::c_char,
- envp: *const *const ::c_char,
- ) -> ::c_int;
-
pub fn extattr_list_fd(
fd: ::c_int,
attrnamespace: ::c_int,
@@ -2727,6 +2758,7 @@ extern "C" {
attr: *const ::pthread_attr_t,
guardsize: *mut ::size_t,
) -> ::c_int;
+ pub fn pthread_attr_setguardsize(attr: *mut ::pthread_attr_t, guardsize: ::size_t) -> ::c_int;
pub fn pthread_attr_getstack(
attr: *const ::pthread_attr_t,
stackaddr: *mut *mut ::c_void,
@@ -3153,6 +3185,38 @@ extern "C" {
pub fn kinfo_getvmmap(pid: ::pid_t, cntp: *mut ::size_t) -> *mut kinfo_vmentry;
}
+#[link(name = "execinfo")]
+extern "C" {
+ pub fn backtrace(addrlist: *mut *mut ::c_void, len: ::size_t) -> ::size_t;
+ pub fn backtrace_symbols(addrlist: *const *mut ::c_void, len: ::size_t) -> *mut *mut ::c_char;
+ pub fn backtrace_symbols_fd(
+ addrlist: *const *mut ::c_void,
+ len: ::size_t,
+ fd: ::c_int,
+ ) -> ::c_int;
+ pub fn backtrace_symbols_fmt(
+ addrlist: *const *mut ::c_void,
+ len: ::size_t,
+ fmt: *const ::c_char,
+ ) -> *mut *mut ::c_char;
+ pub fn backtrace_symbols_fd_fmt(
+ addrlist: *const *mut ::c_void,
+ len: ::size_t,
+ fd: ::c_int,
+ fmt: *const ::c_char,
+ ) -> ::c_int;
+}
+
+cfg_if! {
+ if #[cfg(libc_union)] {
+ extern {
+ // these functions use statvfs:
+ pub fn getmntinfo(mntbufp: *mut *mut ::statvfs, flags: ::c_int) -> ::c_int;
+ pub fn getvfsstat(buf: *mut statvfs, bufsize: ::size_t, flags: ::c_int) -> ::c_int;
+ }
+ }
+}
+
cfg_if! {
if #[cfg(target_arch = "aarch64")] {
mod aarch64;
@@ -3172,6 +3236,12 @@ cfg_if! {
} else if #[cfg(target_arch = "x86")] {
mod x86;
pub use self::x86::*;
+ } else if #[cfg(target_arch = "mips")] {
+ mod mips;
+ pub use self::mips::*;
+ } else if #[cfg(target_arch = "riscv64")] {
+ mod riscv64;
+ pub use self::riscv64::*;
} else {
// Unknown target_arch
}
diff --git a/vendor/libc/src/unix/bsd/netbsdlike/netbsd/riscv64.rs b/vendor/libc/src/unix/bsd/netbsdlike/netbsd/riscv64.rs
new file mode 100644
index 000000000..bc09149ef
--- /dev/null
+++ b/vendor/libc/src/unix/bsd/netbsdlike/netbsd/riscv64.rs
@@ -0,0 +1,21 @@
+use PT_FIRSTMACH;
+
+pub type c_long = i64;
+pub type c_ulong = u64;
+pub type c_char = u8;
+pub type __cpu_simple_lock_nv_t = ::c_int;
+
+cfg_if! {
+ if #[cfg(libc_const_size_of)] {
+ #[doc(hidden)]
+ pub const _ALIGNBYTES: usize = ::mem::size_of::<::c_long>() - 1;
+ } else {
+ #[doc(hidden)]
+ pub const _ALIGNBYTES: usize = 8 - 1;
+ }
+}
+
+pub const PT_GETREGS: ::c_int = PT_FIRSTMACH + 0;
+pub const PT_SETREGS: ::c_int = PT_FIRSTMACH + 1;
+pub const PT_GETFPREGS: ::c_int = PT_FIRSTMACH + 2;
+pub const PT_SETFPREGS: ::c_int = PT_FIRSTMACH + 3;
diff --git a/vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs b/vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs
index 5455bd344..ea90ba780 100644
--- a/vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs
+++ b/vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs
@@ -533,6 +533,14 @@ s! {
pub key: *mut ::c_char,
pub data: *mut ::c_void,
}
+
+ pub struct ifreq {
+ pub ifr_name: [::c_char; ::IFNAMSIZ],
+ #[cfg(libc_union)]
+ pub ifr_ifru: __c_anonymous_ifr_ifru,
+ #[cfg(not(libc_union))]
+ pub ifr_ifru: ::sockaddr,
+ }
}
impl siginfo_t {
@@ -540,12 +548,46 @@ impl siginfo_t {
self.si_addr
}
- pub unsafe fn si_value(&self) -> ::sigval {
+ pub unsafe fn si_code(&self) -> ::c_int {
+ self.si_code
+ }
+
+ pub unsafe fn si_errno(&self) -> ::c_int {
+ self.si_errno
+ }
+
+ pub unsafe fn si_pid(&self) -> ::pid_t {
+ #[repr(C)]
+ struct siginfo_timer {
+ _si_signo: ::c_int,
+ _si_code: ::c_int,
+ _si_errno: ::c_int,
+ _pad: [::c_int; SI_PAD],
+ _pid: ::pid_t,
+ }
+ (*(self as *const siginfo_t as *const siginfo_timer))._pid
+ }
+
+ pub unsafe fn si_uid(&self) -> ::uid_t {
#[repr(C)]
struct siginfo_timer {
_si_signo: ::c_int,
+ _si_code: ::c_int,
_si_errno: ::c_int,
+ _pad: [::c_int; SI_PAD],
+ _pid: ::pid_t,
+ _uid: ::uid_t,
+ }
+ (*(self as *const siginfo_t as *const siginfo_timer))._uid
+ }
+
+ pub unsafe fn si_value(&self) -> ::sigval {
+ #[repr(C)]
+ struct siginfo_timer {
+ _si_signo: ::c_int,
_si_code: ::c_int,
+ _si_errno: ::c_int,
+ _pad: [::c_int; SI_PAD],
_pid: ::pid_t,
_uid: ::uid_t,
value: ::sigval,
@@ -608,6 +650,18 @@ s_no_extra_traits! {
align: [::c_char; 160],
}
+ #[cfg(libc_union)]
+ pub union __c_anonymous_ifr_ifru {
+ pub ifru_addr: ::sockaddr,
+ pub ifru_dstaddr: ::sockaddr,
+ pub ifru_broadaddr: ::sockaddr,
+ pub ifru_flags: ::c_short,
+ pub ifru_metric: ::c_int,
+ pub ifru_vnetid: i64,
+ pub ifru_media: u64,
+ pub ifru_data: *mut ::c_char,
+ pub ifru_index: ::c_uint,
+ }
}
cfg_if! {
@@ -814,6 +868,60 @@ cfg_if! {
unsafe { self.align.hash(state) };
}
}
+
+ #[cfg(libc_union)]
+ impl PartialEq for __c_anonymous_ifr_ifru {
+ fn eq(&self, other: &__c_anonymous_ifr_ifru) -> bool {
+ unsafe {
+ self.ifru_addr == other.ifru_addr
+ && self.ifru_dstaddr == other.ifru_dstaddr
+ && self.ifru_broadaddr == other.ifru_broadaddr
+ && self.ifru_flags == other.ifru_flags
+ && self.ifru_metric == other.ifru_metric
+ && self.ifru_vnetid == other.ifru_vnetid
+ && self.ifru_media == other.ifru_media
+ && self.ifru_data == other.ifru_data
+ && self.ifru_index == other.ifru_index
+ }
+ }
+ }
+
+ #[cfg(libc_union)]
+ impl Eq for __c_anonymous_ifr_ifru {}
+
+ #[cfg(libc_union)]
+ impl ::fmt::Debug for __c_anonymous_ifr_ifru {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("__c_anonymous_ifr_ifru")
+ .field("ifru_addr", unsafe { &self.ifru_addr })
+ .field("ifru_dstaddr", unsafe { &self.ifru_dstaddr })
+ .field("ifru_broadaddr", unsafe { &self.ifru_broadaddr })
+ .field("ifru_flags", unsafe { &self.ifru_flags })
+ .field("ifru_metric", unsafe { &self.ifru_metric })
+ .field("ifru_vnetid", unsafe { &self.ifru_vnetid })
+ .field("ifru_media", unsafe { &self.ifru_media })
+ .field("ifru_data", unsafe { &self.ifru_data })
+ .field("ifru_index", unsafe { &self.ifru_index })
+ .finish()
+ }
+ }
+
+ #[cfg(libc_union)]
+ impl ::hash::Hash for __c_anonymous_ifr_ifru {
+ fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
+ unsafe {
+ self.ifru_addr.hash(state);
+ self.ifru_dstaddr.hash(state);
+ self.ifru_broadaddr.hash(state);
+ self.ifru_flags.hash(state);
+ self.ifru_metric.hash(state);
+ self.ifru_vnetid.hash(state);
+ self.ifru_media.hash(state);
+ self.ifru_data.hash(state);
+ self.ifru_index.hash(state);
+ }
+ }
+ }
}
}
@@ -1578,6 +1686,9 @@ pub const NTFS_MFLAG_ALLNAMES: ::c_int = 0x2;
pub const TMPFS_ARGS_VERSION: ::c_int = 1;
+const SI_MAXSZ: ::size_t = 128;
+const SI_PAD: ::size_t = (SI_MAXSZ / ::mem::size_of::<::c_int>()) - 3;
+
pub const MAP_STACK: ::c_int = 0x4000;
pub const MAP_CONCEAL: ::c_int = 0x8000;
@@ -1657,6 +1768,30 @@ pub const SF_ARCHIVED: ::c_uint = 0x00010000;
pub const SF_IMMUTABLE: ::c_uint = 0x00020000;
pub const SF_APPEND: ::c_uint = 0x00040000;
+// sys/exec_elf.h - Legal values for p_type (segment type).
+pub const PT_NULL: u32 = 0;
+pub const PT_LOAD: u32 = 1;
+pub const PT_DYNAMIC: u32 = 2;
+pub const PT_INTERP: u32 = 3;
+pub const PT_NOTE: u32 = 4;
+pub const PT_SHLIB: u32 = 5;
+pub const PT_PHDR: u32 = 6;
+pub const PT_TLS: u32 = 7;
+pub const PT_LOOS: u32 = 0x60000000;
+pub const PT_HIOS: u32 = 0x6fffffff;
+pub const PT_LOPROC: u32 = 0x70000000;
+pub const PT_HIPROC: u32 = 0x7fffffff;
+
+pub const PT_GNU_EH_FRAME: u32 = 0x6474e550;
+pub const PT_GNU_RELRO: u32 = 0x6474e552;
+
+// sys/exec_elf.h - Legal values for p_flags (segment flags).
+pub const PF_X: u32 = 0x1;
+pub const PF_W: u32 = 0x2;
+pub const PF_R: u32 = 0x4;
+pub const PF_MASKOS: u32 = 0x0ff00000;
+pub const PF_MASKPROC: u32 = 0xf0000000;
+
// sys/mount.h
pub const MNT_NOPERM: ::c_int = 0x00000020;
pub const MNT_WXALLOWED: ::c_int = 0x00000800;
@@ -1779,11 +1914,6 @@ safe_f! {
extern "C" {
pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::timezone) -> ::c_int;
pub fn settimeofday(tp: *const ::timeval, tz: *const ::timezone) -> ::c_int;
- pub fn execvpe(
- file: *const ::c_char,
- argv: *const *const ::c_char,
- envp: *const *const ::c_char,
- ) -> ::c_int;
pub fn pledge(promises: *const ::c_char, execpromises: *const ::c_char) -> ::c_int;
pub fn unveil(path: *const ::c_char, permissions: *const ::c_char) -> ::c_int;
pub fn strtonum(
@@ -1827,6 +1957,7 @@ extern "C" {
attr: *const ::pthread_attr_t,
guardsize: *mut ::size_t,
) -> ::c_int;
+ pub fn pthread_attr_setguardsize(attr: *mut ::pthread_attr_t, guardsize: ::size_t) -> ::c_int;
pub fn pthread_attr_getstack(
attr: *const ::pthread_attr_t,
stackaddr: *mut *mut ::c_void,
diff --git a/vendor/libc/src/unix/haiku/mod.rs b/vendor/libc/src/unix/haiku/mod.rs
index 24aa599c0..00e9523c9 100644
--- a/vendor/libc/src/unix/haiku/mod.rs
+++ b/vendor/libc/src/unix/haiku/mod.rs
@@ -741,6 +741,7 @@ pub const RLIMIT_AS: ::c_int = 6;
pub const RLIM_INFINITY: ::rlim_t = 0xffffffff;
// Haiku specific
pub const RLIMIT_NOVMON: ::c_int = 7;
+#[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIM_NLIMITS: ::c_int = 8;
pub const RUSAGE_SELF: ::c_int = 0;
@@ -1679,6 +1680,7 @@ extern "C" {
attr: *const ::pthread_attr_t,
guardsize: *mut ::size_t,
) -> ::c_int;
+ pub fn pthread_attr_setguardsize(attr: *mut ::pthread_attr_t, guardsize: ::size_t) -> ::c_int;
pub fn pthread_attr_getstack(
attr: *const ::pthread_attr_t,
stackaddr: *mut *mut ::c_void,
@@ -2063,6 +2065,14 @@ extern "C" {
search: *const ::c_void,
searchLength: ::size_t,
) -> *mut ::c_void;
+
+ pub fn pthread_getattr_np(thread: ::pthread_t, attr: *mut ::pthread_attr_t) -> ::c_int;
+ pub fn pthread_getname_np(
+ thread: ::pthread_t,
+ buffer: *mut ::c_char,
+ length: ::size_t,
+ ) -> ::c_int;
+ pub fn pthread_setname_np(thread: ::pthread_t, name: *const ::c_char) -> ::c_int;
}
cfg_if! {
diff --git a/vendor/libc/src/unix/hermit/aarch64.rs b/vendor/libc/src/unix/hermit/aarch64.rs
deleted file mode 100644
index 1a92e3b4f..000000000
--- a/vendor/libc/src/unix/hermit/aarch64.rs
+++ /dev/null
@@ -1,2 +0,0 @@
-pub type c_char = u8;
-pub type wchar_t = u32;
diff --git a/vendor/libc/src/unix/hermit/mod.rs b/vendor/libc/src/unix/hermit/mod.rs
deleted file mode 100644
index 6a656a859..000000000
--- a/vendor/libc/src/unix/hermit/mod.rs
+++ /dev/null
@@ -1,1023 +0,0 @@
-// liblibc port for HermitCore (https://hermitcore.org)
-// HermitCore is a unikernel based on lwIP, newlib, and
-// pthread-embedded.
-// Consider these definitions when porting liblibc to another
-// lwIP/newlib/pte-based target.
-//
-// Ported by Colin Finck <colin.finck@rwth-aachen.de>
-
-pub type c_long = i64;
-pub type c_ulong = u64;
-
-pub type speed_t = ::c_uint;
-pub type mode_t = u32;
-pub type dev_t = i16;
-pub type nfds_t = ::c_ulong;
-pub type socklen_t = u32;
-pub type sa_family_t = u8;
-pub type clock_t = c_ulong;
-pub type time_t = c_long;
-pub type suseconds_t = c_long;
-pub type off_t = i64;
-pub type rlim_t = ::c_ulonglong;
-pub type sigset_t = ::c_ulong;
-pub type ino_t = u16;
-pub type nlink_t = u16;
-pub type blksize_t = c_long;
-pub type blkcnt_t = c_long;
-pub type stat64 = stat;
-pub type clockid_t = c_ulong;
-pub type pthread_t = pte_handle_t;
-pub type pthread_attr_t = usize;
-pub type pthread_cond_t = usize;
-pub type pthread_condattr_t = usize;
-pub type pthread_key_t = usize;
-pub type pthread_mutex_t = usize;
-pub type pthread_mutexattr_t = usize;
-pub type pthread_rwlock_t = usize;
-pub type pthread_rwlockattr_t = usize;
-
-s_no_extra_traits! {
- pub struct dirent {
- pub d_ino: ::c_long,
- pub d_off: off_t,
- pub d_reclen: u16,
- pub d_name: [::c_char; 256],
- }
-
- // Dummy
- pub struct sockaddr_un {
- pub sun_family: sa_family_t,
- pub sun_path: [::c_char; 108],
- }
-
- pub struct sockaddr {
- pub sa_len: u8,
- pub sa_family: sa_family_t,
- pub sa_data: [::c_char; 14],
- }
-
- pub struct sockaddr_in {
- pub sin_len: u8,
- pub sin_family: sa_family_t,
- pub sin_port: ::in_port_t,
- pub sin_addr: ::in_addr,
- pub sin_zero: [::c_char; 8],
- }
-
- pub struct fd_set {
- fds_bits: [::c_ulong; FD_SETSIZE / ULONG_SIZE],
- }
-
- pub struct sockaddr_storage {
- pub s2_len: u8,
- pub ss_family: sa_family_t,
- pub s2_data1: [::c_char; 2],
- pub s2_data2: [u32; 3],
- pub s2_data3: [u32; 3],
- }
-
- pub struct stat {
- pub st_dev: ::dev_t,
- pub st_ino: ::ino_t,
- pub st_mode: ::mode_t,
- pub st_nlink: ::nlink_t,
- pub st_uid: ::uid_t,
- pub st_gid: ::gid_t,
- pub st_rdev: dev_t,
- pub st_size: off_t,
- pub st_atime: time_t,
- pub st_atime_nsec: ::c_long,
- pub st_mtime: time_t,
- pub st_mtime_nsec: ::c_long,
- pub st_ctime: time_t,
- pub st_ctime_nsec: ::c_long,
- pub st_blksize: blksize_t,
- pub st_blocks: blkcnt_t,
- pub st_spare4: [::c_long; 2],
- }
-}
-
-cfg_if! {
- if #[cfg(feature = "extra_traits")] {
- impl PartialEq for dirent {
- fn eq(&self, other: &dirent) -> bool {
- self.d_ino == other.d_ino
- && self.d_off == other.d_off
- && self.d_reclen == other.d_reclen
- && self
- .d_name
- .iter()
- .zip(other.d_name.iter())
- .all(|(a,b)| a == b)
- }
- }
- impl Eq for dirent {}
- impl ::fmt::Debug for dirent {
- fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
- f.debug_struct("dirent")
- .field("d_ino", &self.d_ino)
- .field("d_off", &self.d_off)
- .field("d_reclen", &self.d_reclen)
- // FIXME: .field("d_name", &self.d_name)
- .finish()
- }
- }
- impl ::hash::Hash for dirent {
- fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
- self.d_ino.hash(state);
- self.d_off.hash(state);
- self.d_reclen.hash(state);
- self.d_name.hash(state);
- }
- }
-
- impl PartialEq for sockaddr_un {
- fn eq(&self, other: &sockaddr_un) -> bool {
- self.sun_family == other.sun_family
- && self
- .sun_path
- .iter()
- .zip(other.sun_path.iter())
- .all(|(a,b)| a == b)
- }
- }
- impl Eq for sockaddr_un {}
- impl ::fmt::Debug for sockaddr_un {
- fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
- f.debug_struct("sockaddr_un")
- .field("sun_family", &self.sun_family)
- // FIXME: .field("sun_path", &self.sun_path)
- .finish()
- }
- }
- impl ::hash::Hash for sockaddr_un {
- fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
- self.sun_family.hash(state);
- self.sun_path.hash(state);
- }
- }
-
- impl PartialEq for sockaddr {
- fn eq(&self, other: &sockaddr) -> bool {
- self.sa_len == other.sa_len
- && self.sa_family == other.sa_family
- && self
- .sa_data
- .iter()
- .zip(other.sa_data.iter())
- .all(|(a,b)| a == b)
- }
- }
- impl Eq for sockaddr {}
- impl ::fmt::Debug for sockaddr {
- fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
- f.debug_struct("sockaddr")
- .field("sa_len", &self.sa_len)
- .field("sa_family", &self.sa_family)
- // FIXME: .field("sa_data", &self.sa_data)
- .finish()
- }
- }
- impl ::hash::Hash for sockaddr {
- fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
- self.sa_len.hash(state);
- self.sa_family.hash(state);
- self.sa_data.hash(state);
- }
- }
-
- impl PartialEq for sockaddr_in {
- fn eq(&self, other: &sockaddr_in) -> bool {
- self.sin_len == other.sin_len
- && self.sin_family == other.sin_family
- && self.sin_port == other.sin_port
- && self.sin_addr == other.sin_addr
- && self
- .sin_zero
- .iter()
- .zip(other.sin_zero.iter())
- .all(|(a,b)| a == b)
- }
- }
- impl Eq for sockaddr_in {}
- impl ::fmt::Debug for sockaddr_in {
- fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
- f.debug_struct("sockaddr_in")
- .field("sin_len", &self.sin_len)
- .field("sin_family", &self.sin_family)
- .field("sin_port", &self.sin_port)
- .field("sin_addr", &self.sin_addr)
- // FIXME: .field("sin_zero", &self.sin_zero)
- .finish()
- }
- }
- impl ::hash::Hash for sockaddr_in {
- fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
- self.sin_len.hash(state);
- self.sin_family.hash(state);
- self.sin_port.hash(state);
- self.sin_addr.hash(state);
- self.sin_zero.hash(state);
- }
- }
-
- impl PartialEq for fd_set {
- fn eq(&self, other: &fd_set) -> bool {
- self.fds_bits
- .iter()
- .zip(other.fds_bits.iter())
- .all(|(a,b)| a == b)
- }
- }
- impl Eq for fd_set {}
- impl ::fmt::Debug for fd_set {
- fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
- f.debug_struct("fd_set")
- // FIXME: .field("fds_bits", &self.fds_bits)
- .finish()
- }
- }
- impl ::hash::Hash for fd_set {
- fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
- self.fds_bits.hash(state);
- }
- }
-
- impl PartialEq for sockaddr_storage {
- fn eq(&self, other: &sockaddr_storage) -> bool {
- self.s2_len == other.s2_len
- && self.ss_family == other.ss_family
- && self.s2_data1
- .iter()
- .zip(other.s2_data1.iter())
- .all(|(a,b)| a == b)
- && self.s2_data2
- .iter()
- .zip(other.s2_data2.iter())
- .all(|(a,b)| a == b)
- && self.s2_data3
- .iter()
- .zip(other.s2_data3.iter())
- .all(|(a,b)| a == b)
- }
- }
- impl Eq for sockaddr_storage {}
- impl ::fmt::Debug for sockaddr_storage {
- fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
- f.debug_struct("sockaddr_storage")
- .field("s2_len", &self.s2_len)
- .field("ss_family", &self.ss_family)
- // FIXME: .field("s2_data1", &self.s2_data1)
- // FIXME: .field("s2_data2", &self.s2_data2)
- // FIXME: .field("s2_data3", &self.s2_data3)
- .finish()
- }
- }
- impl ::hash::Hash for sockaddr_storage {
- fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
- self.s2_len.hash(state);
- self.ss_family.hash(state);
- self.s2_data1.hash(state);
- self.s2_data2.hash(state);
- self.s2_data3.hash(state);
- }
- }
-
- impl PartialEq for stat {
- fn eq(&self, other: &stat) -> bool {
- self.st_dev == other.st_dev
- && self.st_ino == other.st_ino
- && self.st_mode == other.st_mode
- && self.st_nlink == other.st_nlink
- && self.st_uid == other.st_uid
- && self.st_gid == other.st_gid
- && self.st_rdev == other.st_rdev
- && self.st_size == other.st_size
- && self.st_atime == other.st_atime
- && self.st_atime_nsec == other.st_atime_nsec
- && self.st_mtime == other.st_mtime
- && self.st_mtime_nsec == other.st_mtime_nsec
- && self.st_ctime == other.st_ctime
- && self.st_ctime_nsec == other.st_ctime_nsec
- && self.st_blksize == other.st_blksize
- && self.st_blocks == other.st_blocks
- && self
- .st_spare4
- .iter()
- .zip(other.st_spare4.iter())
- .all(|(a,b)| a == b)
- }
- }
- impl Eq for stat {}
- impl ::fmt::Debug for stat {
- fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
- f.debug_struct("stat")
- .field("st_dev", &self.st_dev)
- .field("st_ino", &self.st_ino)
- .field("st_mode", &self.st_mode)
- .field("st_nlink", &self.st_nlink)
- .field("st_uid", &self.st_uid)
- .field("st_gid", &self.st_gid)
- .field("st_rdev", &self.st_rdev)
- .field("st_size", &self.st_size)
- .field("st_atime", &self.st_atime)
- .field("st_atime_nsec", &self.st_atime_nsec)
- .field("st_mtime", &self.st_mtime)
- .field("st_mtime_nsec", &self.st_mtime_nsec)
- .field("st_ctime", &self.st_ctime)
- .field("st_ctime_nsec", &self.st_ctime_nsec)
- .field("st_blksize", &self.st_blksize)
- .field("st_blocks", &self.st_blocks)
- // FIXME: .field("st_spare4", &self.st_spare4)
- .finish()
- }
- }
- impl ::hash::Hash for stat {
- fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
- self.st_dev.hash(state);
- self.st_ino.hash(state);
- self.st_mode.hash(state);
- self.st_nlink.hash(state);
- self.st_uid.hash(state);
- self.st_gid.hash(state);
- self.st_rdev.hash(state);
- self.st_size.hash(state);
- self.st_atime.hash(state);
- self.st_atime_nsec.hash(state);
- self.st_mtime.hash(state);
- self.st_mtime_nsec.hash(state);
- self.st_ctime.hash(state);
- self.st_ctime_nsec.hash(state);
- self.st_blksize.hash(state);
- self.st_blocks.hash(state);
- self.st_spare4.hash(state);
- }
- }
- }
-}
-
-s! {
- pub struct in_addr {
- pub s_addr: ::in_addr_t,
- }
-
- pub struct ip_mreq {
- pub imr_multiaddr: in_addr,
- pub imr_interface: in_addr,
- }
-
- pub struct addrinfo {
- pub ai_flags: ::c_int,
- pub ai_family: ::c_int,
- pub ai_socktype: ::c_int,
- pub ai_protocol: ::c_int,
- pub ai_addrlen: socklen_t,
- pub ai_addr: *mut ::sockaddr,
- pub ai_canonname: *mut c_char,
- pub ai_next: *mut addrinfo,
- }
-
- pub struct Dl_info {}
-
- pub struct lconv {
- pub decimal_point: *mut ::c_char,
- pub thousands_sep: *mut ::c_char,
- pub grouping: *mut ::c_char,
- pub int_curr_symbol: *mut ::c_char,
- pub currency_symbol: *mut ::c_char,
- pub mon_decimal_point: *mut ::c_char,
- pub mon_thousands_sep: *mut ::c_char,
- pub mon_grouping: *mut ::c_char,
- pub positive_sign: *mut ::c_char,
- pub negative_sign: *mut ::c_char,
- pub int_frac_digits: ::c_char,
- pub frac_digits: ::c_char,
- pub p_cs_precedes: ::c_char,
- pub p_sep_by_space: ::c_char,
- pub n_cs_precedes: ::c_char,
- pub n_sep_by_space: ::c_char,
- pub p_sign_posn: ::c_char,
- pub n_sign_posn: ::c_char,
- pub int_p_cs_precedes: ::c_char,
- pub int_p_sep_by_space: ::c_char,
- pub int_n_cs_precedes: ::c_char,
- pub int_n_sep_by_space: ::c_char,
- pub int_p_sign_posn: ::c_char,
- pub int_n_sign_posn: ::c_char,
- }
-
- pub struct passwd { // Unverified
- pub pw_name: *mut ::c_char,
- pub pw_passwd: *mut ::c_char,
- pub pw_uid: ::uid_t,
- pub pw_gid: ::gid_t,
- pub pw_gecos: *mut ::c_char,
- pub pw_dir: *mut ::c_char,
- pub pw_shell: *mut ::c_char,
- }
-
- pub struct pte_handle_t {
- pub p: usize,
- pub x: ::c_uint,
- }
-
- pub struct sched_param {
- pub sched_priority: ::c_int,
- }
-
- pub struct sem_t {
- pub value: i32,
- pub lock: usize,
- pub sem: usize,
- }
-
- pub struct sigaction {
- pub sa_flags: ::c_int,
- pub sa_mask: sigset_t,
- pub sa_handler: usize,
- }
-
- pub struct sockaddr_in6 {
- pub sin6_len: u8,
- pub sin6_family: sa_family_t,
- pub sin6_port: ::in_port_t,
- pub sin6_flowinfo: u32,
- pub sin6_addr: ::in6_addr,
- pub sin6_scope_id: u32,
- }
-
- pub struct statvfs {}
-
- pub struct tm {
- pub tm_sec: ::c_int,
- pub tm_min: ::c_int,
- pub tm_hour: ::c_int,
- pub tm_mday: ::c_int,
- pub tm_mon: ::c_int,
- pub tm_year: ::c_int,
- pub tm_wday: ::c_int,
- pub tm_yday: ::c_int,
- pub tm_isdst: ::c_int,
- }
-
- pub struct tms {
- pub tms_utime: ::clock_t,
- pub tms_stime: ::clock_t,
- pub tms_cutime: ::clock_t,
- pub tms_cstime: ::clock_t,
- }
-
- pub struct termios {}
-
- pub struct utsname {}
-}
-
-pub const AF_UNSPEC: ::c_int = 0;
-pub const AF_INET: ::c_int = 2;
-pub const AF_INET6: ::c_int = 10;
-
-// Dummy
-pub const AF_UNIX: ::c_int = 1;
-
-pub const CLOCK_REALTIME: ::clockid_t = 1;
-pub const CLOCK_MONOTONIC: ::clockid_t = 4;
-
-// Dummy
-pub const EAI_SYSTEM: ::c_int = -11;
-
-pub const EPERM: ::c_int = 1;
-pub const ENOENT: ::c_int = 2;
-pub const ESRCH: ::c_int = 3;
-pub const EINTR: ::c_int = 4;
-pub const EIO: ::c_int = 5;
-pub const ENXIO: ::c_int = 6;
-pub const E2BIG: ::c_int = 7;
-pub const ENOEXEC: ::c_int = 8;
-pub const EBADF: ::c_int = 9;
-pub const ECHILD: ::c_int = 10;
-pub const EAGAIN: ::c_int = 11;
-pub const ENOMEM: ::c_int = 12;
-pub const EACCES: ::c_int = 13;
-pub const EFAULT: ::c_int = 14;
-pub const EBUSY: ::c_int = 16;
-pub const EEXIST: ::c_int = 17;
-pub const EXDEV: ::c_int = 18;
-pub const ENODEV: ::c_int = 19;
-pub const ENOTDIR: ::c_int = 20;
-pub const EISDIR: ::c_int = 21;
-pub const EINVAL: ::c_int = 22;
-pub const ENFILE: ::c_int = 23;
-pub const EMFILE: ::c_int = 24;
-pub const ENOTTY: ::c_int = 25;
-pub const ETXTBSY: ::c_int = 26;
-pub const EFBIG: ::c_int = 27;
-pub const ENOSPC: ::c_int = 28;
-pub const ESPIPE: ::c_int = 29;
-pub const EROFS: ::c_int = 30;
-pub const EMLINK: ::c_int = 31;
-pub const EPIPE: ::c_int = 32;
-pub const EDOM: ::c_int = 33;
-pub const ERANGE: ::c_int = 34;
-pub const EDEADLK: ::c_int = 35;
-pub const ENAMETOOLONG: ::c_int = 36;
-pub const ENOLCK: ::c_int = 37;
-pub const ENOSYS: ::c_int = 38;
-pub const ENOTEMPTY: ::c_int = 39;
-pub const ELOOP: ::c_int = 40;
-pub const EWOULDBLOCK: ::c_int = EAGAIN;
-pub const ENOMSG: ::c_int = 42;
-pub const EIDRM: ::c_int = 43;
-pub const ECHRNG: ::c_int = 44;
-pub const EL2NSYNC: ::c_int = 45;
-pub const EL3HLT: ::c_int = 46;
-pub const EL3RST: ::c_int = 47;
-pub const ELNRNG: ::c_int = 48;
-pub const EUNATCH: ::c_int = 49;
-pub const ENOCSI: ::c_int = 50;
-pub const EL2HLT: ::c_int = 51;
-pub const EBADE: ::c_int = 52;
-pub const EBADR: ::c_int = 53;
-pub const EXFULL: ::c_int = 54;
-pub const ENOANO: ::c_int = 55;
-pub const EBADRQC: ::c_int = 56;
-pub const EBADSLT: ::c_int = 57;
-pub const EDEADLOCK: ::c_int = EDEADLK;
-pub const EBFONT: ::c_int = 59;
-pub const ENOSTR: ::c_int = 60;
-pub const ENODATA: ::c_int = 61;
-pub const ETIME: ::c_int = 62;
-pub const ENOSR: ::c_int = 63;
-pub const ENONET: ::c_int = 64;
-pub const ENOPKG: ::c_int = 65;
-pub const EREMOTE: ::c_int = 66;
-pub const ENOLINK: ::c_int = 67;
-pub const EADV: ::c_int = 68;
-pub const ESRMNT: ::c_int = 69;
-pub const ECOMM: ::c_int = 70;
-pub const EPROTO: ::c_int = 71;
-pub const EMULTIHOP: ::c_int = 72;
-pub const EDOTDOT: ::c_int = 73;
-pub const EBADMSG: ::c_int = 74;
-pub const EOVERFLOW: ::c_int = 75;
-pub const ENOTUNIQ: ::c_int = 76;
-pub const EBADFD: ::c_int = 77;
-pub const EREMCHG: ::c_int = 78;
-pub const ELIBACC: ::c_int = 79;
-pub const ELIBBAD: ::c_int = 80;
-pub const ELIBSCN: ::c_int = 81;
-pub const ELIBMAX: ::c_int = 82;
-pub const ELIBEXEC: ::c_int = 83;
-pub const EILSEQ: ::c_int = 84;
-pub const ERESTART: ::c_int = 85;
-pub const ESTRPIPE: ::c_int = 86;
-pub const EUSERS: ::c_int = 87;
-pub const ENOTSOCK: ::c_int = 88;
-pub const EDESTADDRREQ: ::c_int = 89;
-pub const EMSGSIZE: ::c_int = 90;
-pub const EPROTOTYPE: ::c_int = 91;
-pub const ENOPROTOOPT: ::c_int = 92;
-pub const EPROTONOSUPPORT: ::c_int = 93;
-pub const ESOCKTNOSUPPORT: ::c_int = 94;
-pub const EOPNOTSUPP: ::c_int = 95;
-pub const EPFNOSUPPORT: ::c_int = 96;
-pub const EAFNOSUPPORT: ::c_int = 97;
-pub const EADDRINUSE: ::c_int = 98;
-pub const EADDRNOTAVAIL: ::c_int = 99;
-pub const ENETDOWN: ::c_int = 100;
-pub const ENETUNREACH: ::c_int = 101;
-pub const ENETRESET: ::c_int = 102;
-pub const ECONNABORTED: ::c_int = 103;
-pub const ECONNRESET: ::c_int = 104;
-pub const ENOBUFS: ::c_int = 105;
-pub const EISCONN: ::c_int = 106;
-pub const ENOTCONN: ::c_int = 107;
-pub const ESHUTDOWN: ::c_int = 108;
-pub const ETOOMANYREFS: ::c_int = 109;
-pub const ETIMEDOUT: ::c_int = 110;
-pub const ECONNREFUSED: ::c_int = 111;
-pub const EHOSTDOWN: ::c_int = 112;
-pub const EHOSTUNREACH: ::c_int = 113;
-pub const EALREADY: ::c_int = 114;
-pub const EINPROGRESS: ::c_int = 115;
-pub const ESTALE: ::c_int = 116;
-pub const EUCLEAN: ::c_int = 117;
-pub const ENOTNAM: ::c_int = 118;
-pub const ENAVAIL: ::c_int = 119;
-pub const EISNAM: ::c_int = 120;
-pub const EREMOTEIO: ::c_int = 121;
-pub const EDQUOT: ::c_int = 122;
-pub const ENOMEDIUM: ::c_int = 123;
-pub const EMEDIUMTYPE: ::c_int = 124;
-pub const ECANCELED: ::c_int = 125;
-pub const ENOKEY: ::c_int = 126;
-pub const EKEYEXPIRED: ::c_int = 127;
-pub const EKEYREVOKED: ::c_int = 128;
-pub const EKEYREJECTED: ::c_int = 129;
-pub const EOWNERDEAD: ::c_int = 130;
-pub const ENOTRECOVERABLE: ::c_int = 131;
-pub const ERFKILL: ::c_int = 132;
-pub const EHWPOISON: ::c_int = 133;
-
-pub const EXIT_FAILURE: ::c_int = 1;
-pub const EXIT_SUCCESS: ::c_int = 0;
-
-pub const F_DUPFD: ::c_int = 0;
-pub const F_GETFD: ::c_int = 1;
-pub const F_SETFD: ::c_int = 2;
-pub const F_GETFL: ::c_int = 3;
-pub const F_SETFL: ::c_int = 4;
-pub const F_GETOWN: ::c_int = 5;
-pub const F_SETOWN: ::c_int = 6;
-pub const F_GETLK: ::c_int = 7;
-pub const F_SETLK: ::c_int = 8;
-pub const F_SETLKW: ::c_int = 9;
-pub const F_RGETLK: ::c_int = 10;
-pub const F_RSETLK: ::c_int = 11;
-pub const F_CNVT: ::c_int = 12;
-pub const F_RSETLKW: ::c_int = 13;
-pub const F_DUPFD_CLOEXEC: ::c_int = 14;
-
-pub const FD_SETSIZE: usize = 1024;
-
-// Dummy
-pub const FIOCLEX: ::c_int = 0x5451;
-
-pub const FIONBIO: ::c_int = 0x8004667e;
-pub const FIONREAD: ::c_int = 0x4004667f;
-
-pub const IP_ADD_MEMBERSHIP: ::c_int = 3;
-pub const IP_DROP_MEMBERSHIP: ::c_int = 4;
-
-pub const IP_TOS: ::c_int = 1;
-pub const IP_TTL: ::c_int = 2;
-
-pub const IP_MULTICAST_TTL: ::c_int = 5;
-pub const IP_MULTICAST_IF: ::c_int = 6;
-pub const IP_MULTICAST_LOOP: ::c_int = 7;
-
-pub const IPV6_JOIN_GROUP: ::c_int = 12;
-pub const IPV6_ADD_MEMBERSHIP: ::c_int = 12;
-pub const IPV6_LEAVE_GROUP: ::c_int = 13;
-pub const IPV6_DROP_MEMBERSHIP: ::c_int = 13;
-pub const IPV6_V6ONLY: ::c_int = 27;
-
-// Dummy
-pub const IPV6_MULTICAST_LOOP: ::c_int = 7;
-
-pub const MSG_PEEK: ::c_int = 0x01;
-pub const MSG_WAITALL: ::c_int = 0x02;
-pub const MSG_OOB: ::c_int = 0x04;
-pub const MSG_DONTWAIT: ::c_int = 0x08;
-pub const MSG_MORE: ::c_int = 0x10;
-
-pub const O_ACCMODE: ::c_int = 3;
-pub const O_RDONLY: ::c_int = 0;
-pub const O_WRONLY: ::c_int = 1;
-pub const O_RDWR: ::c_int = 2;
-pub const O_APPEND: ::c_int = 1024;
-pub const O_CREAT: ::c_int = 64;
-pub const O_EXCL: ::c_int = 128;
-pub const O_NOCTTY: ::c_int = 256;
-pub const O_NONBLOCK: ::c_int = 2048;
-pub const O_TRUNC: ::c_int = 512;
-pub const O_CLOEXEC: ::c_int = 524288;
-
-pub const POLLIN: ::c_short = 0x1;
-pub const POLLPRI: ::c_short = 0x2;
-pub const POLLOUT: ::c_short = 0x4;
-pub const POLLERR: ::c_short = 0x8;
-pub const POLLHUP: ::c_short = 0x10;
-pub const POLLNVAL: ::c_short = 0x20;
-
-pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = usize::max_value();
-pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = usize::max_value();
-pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = usize::max_value();
-
-pub const PTHREAD_MUTEX_NORMAL: ::c_int = 0;
-pub const PTHREAD_MUTEX_RECURSIVE: ::c_int = 1;
-pub const PTHREAD_STACK_MIN: ::size_t = 0;
-
-// Dummy
-pub const RTLD_DEFAULT: *mut ::c_void = 0i64 as *mut ::c_void;
-
-pub const _SC_ARG_MAX: ::c_int = 0;
-pub const _SC_CHILD_MAX: ::c_int = 1;
-pub const _SC_CLK_TCK: ::c_int = 2;
-pub const _SC_NGROUPS_MAX: ::c_int = 3;
-pub const _SC_OPEN_MAX: ::c_int = 4;
-pub const _SC_JOB_CONTROL: ::c_int = 5;
-pub const _SC_SAVED_IDS: ::c_int = 6;
-pub const _SC_VERSION: ::c_int = 7;
-pub const _SC_PAGESIZE: ::c_int = 8;
-pub const _SC_PAGE_SIZE: ::c_int = _SC_PAGESIZE;
-pub const _SC_NPROCESSORS_CONF: ::c_int = 9;
-pub const _SC_NPROCESSORS_ONLN: ::c_int = 10;
-pub const _SC_PHYS_PAGES: ::c_int = 11;
-pub const _SC_AVPHYS_PAGES: ::c_int = 12;
-pub const _SC_MQ_OPEN_MAX: ::c_int = 13;
-pub const _SC_MQ_PRIO_MAX: ::c_int = 14;
-pub const _SC_RTSIG_MAX: ::c_int = 15;
-pub const _SC_SEM_NSEMS_MAX: ::c_int = 16;
-pub const _SC_SEM_VALUE_MAX: ::c_int = 17;
-pub const _SC_SIGQUEUE_MAX: ::c_int = 18;
-pub const _SC_TIMER_MAX: ::c_int = 19;
-pub const _SC_TZNAME_MAX: ::c_int = 20;
-pub const _SC_ASYNCHRONOUS_IO: ::c_int = 21;
-pub const _SC_FSYNC: ::c_int = 22;
-pub const _SC_MAPPED_FILES: ::c_int = 23;
-pub const _SC_MEMLOCK: ::c_int = 24;
-pub const _SC_MEMLOCK_RANGE: ::c_int = 25;
-pub const _SC_MEMORY_PROTECTION: ::c_int = 26;
-pub const _SC_MESSAGE_PASSING: ::c_int = 27;
-pub const _SC_PRIORITIZED_IO: ::c_int = 28;
-pub const _SC_REALTIME_SIGNALS: ::c_int = 29;
-pub const _SC_SEMAPHORES: ::c_int = 30;
-pub const _SC_SHARED_MEMORY_OBJECTS: ::c_int = 31;
-pub const _SC_SYNCHRONIZED_IO: ::c_int = 32;
-pub const _SC_TIMERS: ::c_int = 33;
-pub const _SC_AIO_LISTIO_MAX: ::c_int = 34;
-pub const _SC_AIO_MAX: ::c_int = 35;
-pub const _SC_AIO_PRIO_DELTA_MAX: ::c_int = 36;
-pub const _SC_DELAYTIMER_MAX: ::c_int = 37;
-pub const _SC_THREAD_KEYS_MAX: ::c_int = 38;
-pub const _SC_THREAD_STACK_MIN: ::c_int = 39;
-pub const _SC_THREAD_THREADS_MAX: ::c_int = 40;
-pub const _SC_TTY_NAME_MAX: ::c_int = 41;
-pub const _SC_THREADS: ::c_int = 42;
-pub const _SC_THREAD_ATTR_STACKADDR: ::c_int = 43;
-pub const _SC_THREAD_ATTR_STACKSIZE: ::c_int = 44;
-pub const _SC_THREAD_PRIORITY_SCHEDULING: ::c_int = 45;
-pub const _SC_THREAD_PRIO_INHERIT: ::c_int = 46;
-pub const _SC_THREAD_PRIO_PROTECT: ::c_int = 47;
-pub const _SC_THREAD_PRIO_CEILING: ::c_int = _SC_THREAD_PRIO_PROTECT;
-pub const _SC_THREAD_PROCESS_SHARED: ::c_int = 48;
-pub const _SC_THREAD_SAFE_FUNCTIONS: ::c_int = 49;
-pub const _SC_GETGR_R_SIZE_MAX: ::c_int = 50;
-pub const _SC_GETPW_R_SIZE_MAX: ::c_int = 51;
-pub const _SC_LOGIN_NAME_MAX: ::c_int = 52;
-pub const _SC_THREAD_DESTRUCTOR_ITERATIONS: ::c_int = 53;
-pub const _SC_ADVISORY_INFO: ::c_int = 54;
-pub const _SC_ATEXIT_MAX: ::c_int = 55;
-pub const _SC_BARRIERS: ::c_int = 56;
-pub const _SC_BC_BASE_MAX: ::c_int = 57;
-pub const _SC_BC_DIM_MAX: ::c_int = 58;
-pub const _SC_BC_SCALE_MAX: ::c_int = 59;
-pub const _SC_BC_STRING_MAX: ::c_int = 60;
-pub const _SC_CLOCK_SELECTION: ::c_int = 61;
-pub const _SC_COLL_WEIGHTS_MAX: ::c_int = 62;
-pub const _SC_CPUTIME: ::c_int = 63;
-pub const _SC_EXPR_NEST_MAX: ::c_int = 64;
-pub const _SC_HOST_NAME_MAX: ::c_int = 65;
-pub const _SC_IOV_MAX: ::c_int = 66;
-pub const _SC_IPV6: ::c_int = 67;
-pub const _SC_LINE_MAX: ::c_int = 68;
-pub const _SC_MONOTONIC_CLOCK: ::c_int = 69;
-pub const _SC_RAW_SOCKETS: ::c_int = 70;
-pub const _SC_READER_WRITER_LOCKS: ::c_int = 71;
-pub const _SC_REGEXP: ::c_int = 72;
-pub const _SC_RE_DUP_MAX: ::c_int = 73;
-pub const _SC_SHELL: ::c_int = 74;
-pub const _SC_SPAWN: ::c_int = 75;
-pub const _SC_SPIN_LOCKS: ::c_int = 76;
-pub const _SC_SPORADIC_SERVER: ::c_int = 77;
-pub const _SC_SS_REPL_MAX: ::c_int = 78;
-pub const _SC_SYMLOOP_MAX: ::c_int = 79;
-pub const _SC_THREAD_CPUTIME: ::c_int = 80;
-pub const _SC_THREAD_SPORADIC_SERVER: ::c_int = 81;
-pub const _SC_TIMEOUTS: ::c_int = 82;
-pub const _SC_TRACE: ::c_int = 83;
-pub const _SC_TRACE_EVENT_FILTER: ::c_int = 84;
-pub const _SC_TRACE_EVENT_NAME_MAX: ::c_int = 85;
-pub const _SC_TRACE_INHERIT: ::c_int = 86;
-pub const _SC_TRACE_LOG: ::c_int = 87;
-pub const _SC_TRACE_NAME_MAX: ::c_int = 88;
-pub const _SC_TRACE_SYS_MAX: ::c_int = 89;
-pub const _SC_TRACE_USER_EVENT_MAX: ::c_int = 90;
-pub const _SC_TYPED_MEMORY_OBJECTS: ::c_int = 91;
-pub const _SC_V7_ILP32_OFF32: ::c_int = 92;
-pub const _SC_V6_ILP32_OFF32: ::c_int = _SC_V7_ILP32_OFF32;
-pub const _SC_XBS5_ILP32_OFF32: ::c_int = _SC_V7_ILP32_OFF32;
-pub const _SC_V7_ILP32_OFFBIG: ::c_int = 93;
-pub const _SC_V6_ILP32_OFFBIG: ::c_int = _SC_V7_ILP32_OFFBIG;
-pub const _SC_XBS5_ILP32_OFFBIG: ::c_int = _SC_V7_ILP32_OFFBIG;
-pub const _SC_V7_LP64_OFF64: ::c_int = 94;
-pub const _SC_V6_LP64_OFF64: ::c_int = _SC_V7_LP64_OFF64;
-pub const _SC_XBS5_LP64_OFF64: ::c_int = _SC_V7_LP64_OFF64;
-pub const _SC_V7_LPBIG_OFFBIG: ::c_int = 95;
-pub const _SC_V6_LPBIG_OFFBIG: ::c_int = _SC_V7_LPBIG_OFFBIG;
-pub const _SC_XBS5_LPBIG_OFFBIG: ::c_int = _SC_V7_LPBIG_OFFBIG;
-pub const _SC_XOPEN_CRYPT: ::c_int = 96;
-pub const _SC_XOPEN_ENH_I18N: ::c_int = 97;
-pub const _SC_XOPEN_LEGACY: ::c_int = 98;
-pub const _SC_XOPEN_REALTIME: ::c_int = 99;
-pub const _SC_STREAM_MAX: ::c_int = 100;
-pub const _SC_PRIORITY_SCHEDULING: ::c_int = 101;
-pub const _SC_XOPEN_REALTIME_THREADS: ::c_int = 102;
-pub const _SC_XOPEN_SHM: ::c_int = 103;
-pub const _SC_XOPEN_STREAMS: ::c_int = 104;
-pub const _SC_XOPEN_UNIX: ::c_int = 105;
-pub const _SC_XOPEN_VERSION: ::c_int = 106;
-pub const _SC_2_CHAR_TERM: ::c_int = 107;
-pub const _SC_2_C_BIND: ::c_int = 108;
-pub const _SC_2_C_DEV: ::c_int = 109;
-pub const _SC_2_FORT_DEV: ::c_int = 110;
-pub const _SC_2_FORT_RUN: ::c_int = 111;
-pub const _SC_2_LOCALEDEF: ::c_int = 112;
-pub const _SC_2_PBS: ::c_int = 113;
-pub const _SC_2_PBS_ACCOUNTING: ::c_int = 114;
-pub const _SC_2_PBS_CHECKPOINT: ::c_int = 115;
-pub const _SC_2_PBS_LOCATE: ::c_int = 116;
-pub const _SC_2_PBS_MESSAGE: ::c_int = 117;
-pub const _SC_2_PBS_TRACK: ::c_int = 118;
-pub const _SC_2_SW_DEV: ::c_int = 119;
-pub const _SC_2_UPE: ::c_int = 120;
-pub const _SC_2_VERSION: ::c_int = 121;
-pub const _SC_THREAD_ROBUST_PRIO_INHERIT: ::c_int = 122;
-pub const _SC_THREAD_ROBUST_PRIO_PROTECT: ::c_int = 123;
-pub const _SC_XOPEN_UUCP: ::c_int = 124;
-pub const _SC_LEVEL1_ICACHE_SIZE: ::c_int = 125;
-pub const _SC_LEVEL1_ICACHE_ASSOC: ::c_int = 126;
-pub const _SC_LEVEL1_ICACHE_LINESIZE: ::c_int = 127;
-pub const _SC_LEVEL1_DCACHE_SIZE: ::c_int = 128;
-pub const _SC_LEVEL1_DCACHE_ASSOC: ::c_int = 129;
-pub const _SC_LEVEL1_DCACHE_LINESIZE: ::c_int = 130;
-pub const _SC_LEVEL2_CACHE_SIZE: ::c_int = 131;
-pub const _SC_LEVEL2_CACHE_ASSOC: ::c_int = 132;
-pub const _SC_LEVEL2_CACHE_LINESIZE: ::c_int = 133;
-pub const _SC_LEVEL3_CACHE_SIZE: ::c_int = 134;
-pub const _SC_LEVEL3_CACHE_ASSOC: ::c_int = 135;
-pub const _SC_LEVEL3_CACHE_LINESIZE: ::c_int = 136;
-pub const _SC_LEVEL4_CACHE_SIZE: ::c_int = 137;
-pub const _SC_LEVEL4_CACHE_ASSOC: ::c_int = 138;
-pub const _SC_LEVEL4_CACHE_LINESIZE: ::c_int = 139;
-
-pub const S_BLKSIZE: ::mode_t = 1024;
-pub const S_IREAD: ::mode_t = 256;
-pub const S_IWRITE: ::mode_t = 128;
-pub const S_IEXEC: ::mode_t = 64;
-pub const S_ENFMT: ::mode_t = 1024;
-pub const S_IFMT: ::mode_t = 61440;
-pub const S_IFDIR: ::mode_t = 16384;
-pub const S_IFCHR: ::mode_t = 8192;
-pub const S_IFBLK: ::mode_t = 24576;
-pub const S_IFREG: ::mode_t = 32768;
-pub const S_IFLNK: ::mode_t = 40960;
-pub const S_IFSOCK: ::mode_t = 49152;
-pub const S_IFIFO: ::mode_t = 4096;
-pub const S_IRUSR: ::mode_t = 256;
-pub const S_IWUSR: ::mode_t = 128;
-pub const S_IXUSR: ::mode_t = 64;
-pub const S_IRGRP: ::mode_t = 32;
-pub const S_IWGRP: ::mode_t = 16;
-pub const S_IXGRP: ::mode_t = 8;
-pub const S_IROTH: ::mode_t = 4;
-pub const S_IWOTH: ::mode_t = 2;
-pub const S_IXOTH: ::mode_t = 1;
-
-pub const SEEK_SET: ::c_int = 0;
-pub const SEEK_CUR: ::c_int = 1;
-pub const SEEK_END: ::c_int = 2;
-
-pub const SHUT_RD: ::c_int = 0;
-pub const SHUT_WR: ::c_int = 1;
-pub const SHUT_RDWR: ::c_int = 2;
-
-pub const SIG_SETMASK: ::c_int = 0;
-
-pub const SIGHUP: ::c_int = 1;
-pub const SIGINT: ::c_int = 2;
-pub const SIGQUIT: ::c_int = 3;
-pub const SIGILL: ::c_int = 4;
-pub const SIGABRT: ::c_int = 6;
-pub const SIGEMT: ::c_int = 7;
-pub const SIGFPE: ::c_int = 8;
-pub const SIGKILL: ::c_int = 9;
-pub const SIGSEGV: ::c_int = 11;
-pub const SIGPIPE: ::c_int = 13;
-pub const SIGALRM: ::c_int = 14;
-pub const SIGTERM: ::c_int = 15;
-
-pub const SO_DEBUG: ::c_int = 0x0001;
-pub const SO_ACCEPTCONN: ::c_int = 0x0002;
-pub const SO_REUSEADDR: ::c_int = 0x0004;
-pub const SO_KEEPALIVE: ::c_int = 0x0008;
-pub const SO_DONTROUTE: ::c_int = 0x0010;
-pub const SO_BROADCAST: ::c_int = 0x0020;
-pub const SO_USELOOPBACK: ::c_int = 0x0040;
-pub const SO_LINGER: ::c_int = 0x0080;
-pub const SO_OOBINLINE: ::c_int = 0x0100;
-pub const SO_REUSEPORT: ::c_int = 0x0200;
-pub const SO_SNDBUF: ::c_int = 0x1001;
-pub const SO_RCVBUF: ::c_int = 0x1002;
-pub const SO_SNDLOWAT: ::c_int = 0x1003;
-pub const SO_RCVLOWAT: ::c_int = 0x1004;
-pub const SO_SNDTIMEO: ::c_int = 0x1005;
-pub const SO_RCVTIMEO: ::c_int = 0x1006;
-pub const SO_ERROR: ::c_int = 0x1007;
-pub const SO_TYPE: ::c_int = 0x1008;
-pub const SO_CONTIMEO: ::c_int = 0x1009;
-pub const SO_NO_CHECK: ::c_int = 0x100a;
-
-pub const SOCK_STREAM: ::c_int = 1;
-pub const SOCK_DGRAM: ::c_int = 2;
-pub const SOCK_RAW: ::c_int = 3;
-
-pub const SOL_SOCKET: ::c_int = 0xfff;
-
-pub const STDIN_FILENO: ::c_int = 0;
-pub const STDOUT_FILENO: ::c_int = 1;
-pub const STDERR_FILENO: ::c_int = 2;
-
-pub const TCP_NODELAY: ::c_int = 0x01;
-pub const TCP_KEEPALIVE: ::c_int = 0x02;
-pub const TCP_KEEPIDLE: ::c_int = 0x03;
-pub const TCP_KEEPINTVL: ::c_int = 0x04;
-pub const TCP_KEEPCNT: ::c_int = 0x05;
-
-const ULONG_SIZE: usize = 64;
-
-pub const WNOHANG: ::c_int = 0x00000001;
-
-pub const PRIO_PROCESS: ::c_int = 0;
-pub const PRIO_PGRP: ::c_int = 1;
-pub const PRIO_USER: ::c_int = 2;
-
-safe_f! {
- pub {const} fn WEXITSTATUS(status: ::c_int) -> ::c_int {
- (status >> 8) & 0xff
- }
-
- pub {const} fn WIFEXITED(status: ::c_int) -> bool {
- (status & 0xff) == 0
- }
-
- pub {const} fn WTERMSIG(status: ::c_int) -> ::c_int {
- status & 0x7f
- }
-}
-
-extern "C" {
- pub fn getrlimit(resource: ::c_int, rlim: *mut ::rlimit) -> ::c_int;
- pub fn setrlimit(resource: ::c_int, rlim: *const ::rlimit) -> ::c_int;
- pub fn strerror_r(errnum: ::c_int, buf: *mut c_char, buflen: ::size_t) -> ::c_int;
-
- pub fn sem_destroy(sem: *mut sem_t) -> ::c_int;
- pub fn sem_init(sem: *mut sem_t, pshared: ::c_int, value: ::c_uint) -> ::c_int;
-
- pub fn abs(i: ::c_int) -> ::c_int;
- pub fn labs(i: ::c_long) -> ::c_long;
- pub fn rand() -> ::c_int;
- pub fn srand(seed: ::c_uint);
-
- pub fn bind(s: ::c_int, name: *const ::sockaddr, namelen: ::socklen_t) -> ::c_int;
-
- pub fn clock_gettime(clock_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;
-
- pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::c_void) -> ::c_int;
- pub fn getpwuid_r(
- uid: ::uid_t,
- pwd: *mut passwd,
- buf: *mut ::c_char,
- buflen: ::size_t,
- result: *mut *mut passwd,
- ) -> ::c_int;
-
- // Dummy
- pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;
-
- pub fn memalign(align: ::size_t, nbytes: ::size_t) -> *mut ::c_void;
-
- pub fn pthread_create(
- tid: *mut ::pthread_t,
- attr: *const ::pthread_attr_t,
- start: extern "C" fn(*mut ::c_void) -> *mut ::c_void,
- arg: *mut ::c_void,
- ) -> ::c_int;
-
- pub fn pthread_sigmask(how: ::c_int, set: *const ::sigset_t, oset: *mut ::sigset_t) -> ::c_int;
-
- pub fn recvfrom(
- s: ::c_int,
- mem: *mut ::c_void,
- len: ::size_t,
- flags: ::c_int,
- from: *mut ::sockaddr,
- fromlen: *mut ::socklen_t,
- ) -> ::c_int;
-
- pub fn setgroups(ngroups: ::c_int, grouplist: *const ::gid_t) -> ::c_int;
- pub fn uname(buf: *mut ::utsname) -> ::c_int;
-}
-
-cfg_if! {
- if #[cfg(target_arch = "aarch64")] {
- mod aarch64;
- pub use self::aarch64::*;
- } else if #[cfg(target_arch = "x86_64")] {
- mod x86_64;
- pub use self::x86_64::*;
- } else {
- // Unknown target_arch
- }
-}
diff --git a/vendor/libc/src/unix/hermit/x86_64.rs b/vendor/libc/src/unix/hermit/x86_64.rs
deleted file mode 100644
index 76ec3ce82..000000000
--- a/vendor/libc/src/unix/hermit/x86_64.rs
+++ /dev/null
@@ -1,2 +0,0 @@
-pub type c_char = i8;
-pub type wchar_t = i32;
diff --git a/vendor/libc/src/unix/hurd/align.rs b/vendor/libc/src/unix/hurd/align.rs
new file mode 100644
index 000000000..1dd7d8e54
--- /dev/null
+++ b/vendor/libc/src/unix/hurd/align.rs
@@ -0,0 +1 @@
+// Placeholder file
diff --git a/vendor/libc/src/unix/hurd/b32.rs b/vendor/libc/src/unix/hurd/b32.rs
new file mode 100644
index 000000000..7e83ed930
--- /dev/null
+++ b/vendor/libc/src/unix/hurd/b32.rs
@@ -0,0 +1,91 @@
+pub type c_long = i32;
+pub type c_ulong = u32;
+
+pub type __int64_t = ::c_longlong;
+pub type __uint64_t = ::c_ulonglong;
+
+pub type int_fast16_t = ::c_int;
+pub type int_fast32_t = ::c_int;
+pub type int_fast64_t = ::c_longlong;
+pub type uint_fast16_t = ::c_uint;
+pub type uint_fast32_t = ::c_uint;
+pub type uint_fast64_t = ::c_ulonglong;
+
+pub type __quad_t = ::c_longlong;
+pub type __u_quad_t = ::c_ulonglong;
+pub type __intmax_t = ::c_longlong;
+pub type __uintmax_t = ::c_ulonglong;
+
+pub type __squad_type = ::__int64_t;
+pub type __uquad_type = ::__uint64_t;
+pub type __sword_type = ::c_int;
+pub type __uword_type = ::c_uint;
+pub type __slong32_type = ::c_long;
+pub type __ulong32_type = ::c_ulong;
+pub type __s64_type = ::__int64_t;
+pub type __u64_type = ::__uint64_t;
+
+pub type Elf32_Half = u16;
+pub type Elf32_Word = u32;
+pub type Elf32_Off = u32;
+pub type Elf32_Addr = u32;
+pub type Elf32_Section = u16;
+
+pub type Elf_Addr = ::Elf32_Addr;
+pub type Elf_Half = ::Elf32_Half;
+pub type Elf_Ehdr = ::Elf32_Ehdr;
+pub type Elf_Phdr = ::Elf32_Phdr;
+pub type Elf_Shdr = ::Elf32_Shdr;
+pub type Elf_Sym = ::Elf32_Sym;
+
+s! {
+ pub struct Elf32_Ehdr {
+ pub e_ident: [::c_uchar; 16],
+ pub e_type: Elf32_Half,
+ pub e_machine: Elf32_Half,
+ pub e_version: Elf32_Word,
+ pub e_entry: Elf32_Addr,
+ pub e_phoff: Elf32_Off,
+ pub e_shoff: Elf32_Off,
+ pub e_flags: Elf32_Word,
+ pub e_ehsize: Elf32_Half,
+ pub e_phentsize: Elf32_Half,
+ pub e_phnum: Elf32_Half,
+ pub e_shentsize: Elf32_Half,
+ pub e_shnum: Elf32_Half,
+ pub e_shstrndx: Elf32_Half,
+ }
+
+ pub struct Elf32_Shdr {
+ pub sh_name: Elf32_Word,
+ pub sh_type: Elf32_Word,
+ pub sh_flags: Elf32_Word,
+ pub sh_addr: Elf32_Addr,
+ pub sh_offset: Elf32_Off,
+ pub sh_size: Elf32_Word,
+ pub sh_link: Elf32_Word,
+ pub sh_info: Elf32_Word,
+ pub sh_addralign: Elf32_Word,
+ pub sh_entsize: Elf32_Word,
+ }
+
+ pub struct Elf32_Sym {
+ pub st_name: Elf32_Word,
+ pub st_value: Elf32_Addr,
+ pub st_size: Elf32_Word,
+ pub st_info: ::c_uchar,
+ pub st_other: ::c_uchar,
+ pub st_shndx: Elf32_Section,
+ }
+
+ pub struct Elf32_Phdr {
+ pub p_type: ::Elf32_Word,
+ pub p_offset: ::Elf32_Off,
+ pub p_vaddr: ::Elf32_Addr,
+ pub p_paddr: ::Elf32_Addr,
+ pub p_filesz: ::Elf32_Word,
+ pub p_memsz: ::Elf32_Word,
+ pub p_flags: ::Elf32_Word,
+ pub p_align: ::Elf32_Word,
+ }
+}
diff --git a/vendor/libc/src/unix/hurd/b64.rs b/vendor/libc/src/unix/hurd/b64.rs
new file mode 100644
index 000000000..3b171f104
--- /dev/null
+++ b/vendor/libc/src/unix/hurd/b64.rs
@@ -0,0 +1,93 @@
+pub type c_long = i64;
+pub type c_ulong = u64;
+
+pub type __int64_t = ::c_long;
+pub type __uint64_t = ::c_ulong;
+
+pub type int_fast16_t = ::c_long;
+pub type int_fast32_t = ::c_long;
+pub type int_fast64_t = ::c_long;
+pub type uint_fast16_t = ::c_ulong;
+pub type uint_fast32_t = ::c_ulong;
+pub type uint_fast64_t = ::c_ulong;
+
+pub type __quad_t = ::c_long;
+pub type __u_quad_t = ::c_ulong;
+pub type __intmax_t = ::c_long;
+pub type __uintmax_t = ::c_ulong;
+
+pub type __squad_type = ::c_long;
+pub type __uquad_type = ::c_ulong;
+pub type __sword_type = ::c_long;
+pub type __uword_type = ::c_ulong;
+pub type __slong32_type = ::c_int;
+pub type __ulong32_type = ::c_uint;
+pub type __s64_type = ::c_long;
+pub type __u64_type = ::c_ulong;
+
+pub type Elf64_Half = u16;
+pub type Elf64_Word = u32;
+pub type Elf64_Off = u64;
+pub type Elf64_Addr = u64;
+pub type Elf64_Xword = u64;
+pub type Elf64_Sxword = i64;
+pub type Elf64_Section = u16;
+
+pub type Elf_Addr = ::Elf64_Addr;
+pub type Elf_Half = ::Elf64_Half;
+pub type Elf_Ehdr = ::Elf64_Ehdr;
+pub type Elf_Phdr = ::Elf64_Phdr;
+pub type Elf_Shdr = ::Elf64_Shdr;
+pub type Elf_Sym = ::Elf64_Sym;
+
+s! {
+ pub struct Elf64_Ehdr {
+ pub e_ident: [::c_uchar; 16],
+ pub e_type: Elf64_Half,
+ pub e_machine: Elf64_Half,
+ pub e_version: Elf64_Word,
+ pub e_entry: Elf64_Addr,
+ pub e_phoff: Elf64_Off,
+ pub e_shoff: Elf64_Off,
+ pub e_flags: Elf64_Word,
+ pub e_ehsize: Elf64_Half,
+ pub e_phentsize: Elf64_Half,
+ pub e_phnum: Elf64_Half,
+ pub e_shentsize: Elf64_Half,
+ pub e_shnum: Elf64_Half,
+ pub e_shstrndx: Elf64_Half,
+ }
+
+ pub struct Elf64_Shdr {
+ pub sh_name: Elf64_Word,
+ pub sh_type: Elf64_Word,
+ pub sh_flags: Elf64_Xword,
+ pub sh_addr: Elf64_Addr,
+ pub sh_offset: Elf64_Off,
+ pub sh_size: Elf64_Xword,
+ pub sh_link: Elf64_Word,
+ pub sh_info: Elf64_Word,
+ pub sh_addralign: Elf64_Xword,
+ pub sh_entsize: Elf64_Xword,
+ }
+
+ pub struct Elf64_Sym {
+ pub st_name: Elf64_Word,
+ pub st_info: ::c_uchar,
+ pub st_other: ::c_uchar,
+ pub st_shndx: Elf64_Section,
+ pub st_value: Elf64_Addr,
+ pub st_size: Elf64_Xword,
+ }
+
+ pub struct Elf64_Phdr {
+ pub p_type: ::Elf64_Word,
+ pub p_flags: ::Elf64_Word,
+ pub p_offset: ::Elf64_Off,
+ pub p_vaddr: ::Elf64_Addr,
+ pub p_paddr: ::Elf64_Addr,
+ pub p_filesz: ::Elf64_Xword,
+ pub p_memsz: ::Elf64_Xword,
+ pub p_align: ::Elf64_Xword,
+ }
+}
diff --git a/vendor/libc/src/unix/hurd/mod.rs b/vendor/libc/src/unix/hurd/mod.rs
new file mode 100644
index 000000000..05d75851d
--- /dev/null
+++ b/vendor/libc/src/unix/hurd/mod.rs
@@ -0,0 +1,3107 @@
+#![allow(dead_code)]
+
+// types
+pub type c_char = i8;
+
+pub type __s16_type = ::c_short;
+pub type __u16_type = ::c_ushort;
+pub type __s32_type = ::c_int;
+pub type __u32_type = ::c_uint;
+pub type __slongword_type = ::c_long;
+pub type __ulongword_type = ::c_ulong;
+
+pub type __u_char = ::c_uchar;
+pub type __u_short = ::c_ushort;
+pub type __u_int = ::c_uint;
+pub type __u_long = ::c_ulong;
+pub type __int8_t = ::c_schar;
+pub type __uint8_t = ::c_uchar;
+pub type __int16_t = ::c_short;
+pub type __uint16_t = ::c_ushort;
+pub type __int32_t = ::c_int;
+pub type __uint32_t = ::c_uint;
+pub type __int_least8_t = __int8_t;
+pub type __uint_least8_t = __uint8_t;
+pub type __int_least16_t = __int16_t;
+pub type __uint_least16_t = __uint16_t;
+pub type __int_least32_t = __int32_t;
+pub type __uint_least32_t = __uint32_t;
+pub type __int_least64_t = __int64_t;
+pub type __uint_least64_t = __uint64_t;
+
+pub type __dev_t = __uword_type;
+pub type __uid_t = __u32_type;
+pub type __gid_t = __u32_type;
+pub type __ino_t = __ulongword_type;
+pub type __ino64_t = __uquad_type;
+pub type __mode_t = __u32_type;
+pub type __nlink_t = __uword_type;
+pub type __off_t = __slongword_type;
+pub type __off64_t = __squad_type;
+pub type __pid_t = __s32_type;
+pub type __rlim_t = __ulongword_type;
+pub type __rlim64_t = __uquad_type;
+pub type __blkcnt_t = __slongword_type;
+pub type __blkcnt64_t = __squad_type;
+pub type __fsblkcnt_t = __ulongword_type;
+pub type __fsblkcnt64_t = __uquad_type;
+pub type __fsfilcnt_t = __ulongword_type;
+pub type __fsfilcnt64_t = __uquad_type;
+pub type __fsword_t = __sword_type;
+pub type __id_t = __u32_type;
+pub type __clock_t = __slongword_type;
+pub type __time_t = __slongword_type;
+pub type __useconds_t = __u32_type;
+pub type __suseconds_t = __slongword_type;
+pub type __suseconds64_t = __squad_type;
+pub type __daddr_t = __s32_type;
+pub type __key_t = __s32_type;
+pub type __clockid_t = __s32_type;
+pub type __timer_t = __uword_type;
+pub type __blksize_t = __slongword_type;
+pub type __fsid_t = __uquad_type;
+pub type __ssize_t = __sword_type;
+pub type __syscall_slong_t = __slongword_type;
+pub type __syscall_ulong_t = __ulongword_type;
+pub type __cpu_mask = __ulongword_type;
+
+pub type __loff_t = __off64_t;
+pub type __caddr_t = *mut ::c_char;
+pub type __intptr_t = __sword_type;
+pub type __ptrdiff_t = __sword_type;
+pub type __socklen_t = __u32_type;
+pub type __sig_atomic_t = ::c_int;
+pub type __time64_t = __int64_t;
+pub type ssize_t = __ssize_t;
+pub type size_t = ::c_ulong;
+pub type wchar_t = ::c_int;
+pub type wint_t = ::c_uint;
+pub type gid_t = __gid_t;
+pub type uid_t = __uid_t;
+pub type off_t = __off_t;
+pub type off64_t = __off64_t;
+pub type useconds_t = __useconds_t;
+pub type pid_t = __pid_t;
+pub type socklen_t = __socklen_t;
+
+pub type in_addr_t = u32;
+
+pub type _Float32 = f32;
+pub type _Float64 = f64;
+pub type _Float32x = f64;
+pub type _Float64x = f64;
+
+pub type __locale_t = *mut __locale_struct;
+pub type locale_t = __locale_t;
+
+pub type u_char = __u_char;
+pub type u_short = __u_short;
+pub type u_int = __u_int;
+pub type u_long = __u_long;
+pub type quad_t = __quad_t;
+pub type u_quad_t = __u_quad_t;
+pub type fsid_t = __fsid_t;
+pub type loff_t = __loff_t;
+pub type ino_t = __ino_t;
+pub type ino64_t = __ino64_t;
+pub type dev_t = __dev_t;
+pub type mode_t = __mode_t;
+pub type nlink_t = __nlink_t;
+pub type id_t = __id_t;
+pub type daddr_t = __daddr_t;
+pub type caddr_t = __caddr_t;
+pub type key_t = __key_t;
+pub type clock_t = __clock_t;
+pub type clockid_t = __clockid_t;
+pub type time_t = __time_t;
+pub type timer_t = __timer_t;
+pub type suseconds_t = __suseconds_t;
+pub type ulong = ::c_ulong;
+pub type ushort = ::c_ushort;
+pub type uint = ::c_uint;
+pub type u_int8_t = __uint8_t;
+pub type u_int16_t = __uint16_t;
+pub type u_int32_t = __uint32_t;
+pub type u_int64_t = __uint64_t;
+pub type register_t = ::c_int;
+pub type __sigset_t = ::c_ulong;
+pub type sigset_t = __sigset_t;
+
+pub type __fd_mask = ::c_long;
+pub type fd_mask = __fd_mask;
+pub type blksize_t = __blksize_t;
+pub type blkcnt_t = __blkcnt_t;
+pub type fsblkcnt_t = __fsblkcnt_t;
+pub type fsfilcnt_t = __fsfilcnt_t;
+pub type blkcnt64_t = __blkcnt64_t;
+pub type fsblkcnt64_t = __fsblkcnt64_t;
+pub type fsfilcnt64_t = __fsfilcnt64_t;
+
+pub type __pthread_spinlock_t = ::c_int;
+pub type __tss_t = ::c_int;
+pub type __thrd_t = ::c_long;
+pub type __pthread_t = ::c_long;
+pub type pthread_t = __pthread_t;
+pub type __pthread_process_shared = ::c_uint;
+pub type __pthread_inheritsched = ::c_uint;
+pub type __pthread_contentionscope = ::c_uint;
+pub type __pthread_detachstate = ::c_uint;
+pub type pthread_attr_t = __pthread_attr;
+pub type __pthread_mutex_protocol = ::c_uint;
+pub type __pthread_mutex_type = ::c_uint;
+pub type __pthread_mutex_robustness = ::c_uint;
+pub type pthread_mutexattr_t = __pthread_mutexattr;
+pub type pthread_mutex_t = __pthread_mutex;
+pub type pthread_condattr_t = __pthread_condattr;
+pub type pthread_cond_t = __pthread_cond;
+pub type pthread_spinlock_t = __pthread_spinlock_t;
+pub type pthread_rwlockattr_t = __pthread_rwlockattr;
+pub type pthread_rwlock_t = __pthread_rwlock;
+pub type pthread_barrierattr_t = __pthread_barrierattr;
+pub type pthread_barrier_t = __pthread_barrier;
+pub type __pthread_key = ::c_int;
+pub type pthread_key_t = __pthread_key;
+pub type pthread_once_t = __pthread_once;
+
+pub type __rlimit_resource = ::c_uint;
+pub type rlim_t = __rlim_t;
+pub type rlim64_t = __rlim64_t;
+
+pub type __rusage_who = ::c_int;
+
+pub type __priority_which = ::c_uint;
+
+pub type sa_family_t = ::c_uchar;
+
+pub type in_port_t = u16;
+
+pub type __sigval_t = ::sigval;
+
+pub type sigevent_t = sigevent;
+
+pub type nfds_t = ::c_ulong;
+
+pub type tcflag_t = ::c_uint;
+pub type cc_t = ::c_uchar;
+pub type speed_t = ::c_int;
+
+pub type sigval_t = ::sigval;
+
+pub type greg_t = ::c_int;
+pub type gregset_t = [greg_t; 19usize];
+
+pub type __ioctl_dir = ::c_uint;
+
+pub type __ioctl_datum = ::c_uint;
+
+pub type __error_t_codes = ::c_int;
+
+pub type int_least8_t = __int_least8_t;
+pub type int_least16_t = __int_least16_t;
+pub type int_least32_t = __int_least32_t;
+pub type int_least64_t = __int_least64_t;
+pub type uint_least8_t = __uint_least8_t;
+pub type uint_least16_t = __uint_least16_t;
+pub type uint_least32_t = __uint_least32_t;
+pub type uint_least64_t = __uint_least64_t;
+pub type int_fast8_t = ::c_schar;
+pub type uint_fast8_t = ::c_uchar;
+pub type intmax_t = __intmax_t;
+pub type uintmax_t = __uintmax_t;
+
+pub type tcp_seq = u32;
+
+pub type tcp_ca_state = ::c_uint;
+
+pub type idtype_t = ::c_uint;
+
+// structs
+s! {
+ pub struct ip_mreq {
+ pub imr_multiaddr: in_addr,
+ pub imr_interface: in_addr,
+ }
+
+ pub struct ip_mreqn {
+ pub imr_multiaddr: in_addr,
+ pub imr_address: in_addr,
+ pub imr_ifindex: ::c_int,
+ }
+
+ pub struct sockaddr {
+ pub sa_len: ::c_uchar,
+ pub sa_family: sa_family_t,
+ pub sa_data: [::c_char; 14usize],
+ }
+
+ pub struct in_addr {
+ pub s_addr: in_addr_t,
+ }
+
+ pub struct sockaddr_in {
+ pub sin_len: ::c_uchar,
+ pub sin_family: sa_family_t,
+ pub sin_port: in_port_t,
+ pub sin_addr: ::in_addr,
+ pub sin_zero: [::c_uchar; 8usize],
+ }
+
+ pub struct sockaddr_in6 {
+ pub sin6_len: ::c_uchar,
+ pub sin6_family: sa_family_t,
+ pub sin6_port: in_port_t,
+ pub sin6_flowinfo: u32,
+ pub sin6_addr: ::in6_addr,
+ pub sin6_scope_id: u32,
+ }
+
+ pub struct sockaddr_un {
+ pub sun_len: ::c_uchar,
+ pub sun_family: sa_family_t,
+ pub sun_path: [::c_char; 108usize],
+ }
+
+ pub struct sockaddr_storage {
+ pub ss_len: ::c_uchar,
+ pub ss_family: sa_family_t,
+ pub __ss_padding: [::c_char; 122usize],
+ pub __ss_align: __uint32_t,
+ }
+
+ pub struct sockaddr_at {
+ pub _address: u8,
+ }
+
+ pub struct sockaddr_ax25 {
+ pub _address: u8,
+ }
+
+ pub struct sockaddr_x25 {
+ pub _address: u8,
+ }
+
+ pub struct sockaddr_dl {
+ pub _address: u8,
+ }
+ pub struct sockaddr_eon {
+ pub _address: u8,
+ }
+ pub struct sockaddr_inarp {
+ pub _address: u8,
+ }
+
+ pub struct sockaddr_ipx {
+ pub _address: u8,
+ }
+ pub struct sockaddr_iso {
+ pub _address: u8,
+ }
+
+ pub struct sockaddr_ns {
+ pub _address: u8,
+ }
+
+ pub struct addrinfo {
+ pub ai_flags: ::c_int,
+ pub ai_family: ::c_int,
+ pub ai_socktype: ::c_int,
+ pub ai_protocol: ::c_int,
+ pub ai_addrlen: socklen_t,
+ pub ai_addr: *mut sockaddr,
+ pub ai_canonname: *mut ::c_char,
+ pub ai_next: *mut addrinfo,
+ }
+
+ pub struct msghdr {
+ pub msg_name: *mut ::c_void,
+ pub msg_namelen: socklen_t,
+ pub msg_iov: *mut ::iovec,
+ pub msg_iovlen: ::c_int,
+ pub msg_control: *mut ::c_void,
+ pub msg_controllen: socklen_t,
+ pub msg_flags: ::c_int,
+ }
+
+ pub struct dirent {
+ pub d_ino: __ino_t,
+ pub d_reclen: ::c_ushort,
+ pub d_type: ::c_uchar,
+ pub d_namlen: ::c_uchar,
+ pub d_name: [::c_char; 1usize],
+ }
+
+ pub struct dirent64 {
+ pub d_ino: __ino64_t,
+ pub d_reclen: ::c_ushort,
+ pub d_type: ::c_uchar,
+ pub d_namlen: ::c_uchar,
+ pub d_name: [::c_char; 1usize],
+ }
+
+ pub struct fd_set {
+ pub fds_bits: [__fd_mask; 8usize],
+ }
+
+ pub struct termios {
+ pub c_iflag: tcflag_t,
+ pub c_oflag: tcflag_t,
+ pub c_cflag: tcflag_t,
+ pub c_lflag: tcflag_t,
+ pub c_cc: [cc_t; 20usize],
+ pub __ispeed: speed_t,
+ pub __ospeed: speed_t,
+ }
+
+ pub struct sigaction {
+ pub sa_sigaction: ::sighandler_t,
+ pub sa_mask: __sigset_t,
+ pub sa_flags: ::c_int,
+ }
+
+ pub struct sigevent {
+ pub sigev_value: ::sigval,
+ pub sigev_signo: ::c_int,
+ pub sigev_notify: ::c_int,
+ __unused1: *mut ::c_void, //actually a function pointer
+ pub sigev_notify_attributes: *mut pthread_attr_t,
+ }
+
+ pub struct siginfo_t {
+ pub si_signo: ::c_int,
+ pub si_errno: ::c_int,
+ pub si_code: ::c_int,
+ pub si_pid: __pid_t,
+ pub si_uid: __uid_t,
+ pub si_addr: *mut ::c_void,
+ pub si_status: ::c_int,
+ pub si_band: ::c_long,
+ pub si_value: ::sigval,
+ }
+
+ pub struct timespec {
+ pub tv_sec: __time_t,
+ pub tv_nsec: __syscall_slong_t,
+ }
+
+ pub struct __locale_data {
+ pub _address: u8,
+ }
+
+ pub struct stat {
+ pub st_fstype: ::c_int,
+ pub st_fsid: __fsid_t,
+ pub st_ino: __ino_t,
+ pub st_gen: ::c_uint,
+ pub st_rdev: __dev_t,
+ pub st_mode: __mode_t,
+ pub st_nlink: __nlink_t,
+ pub st_uid: __uid_t,
+ pub st_gid: __gid_t,
+ pub st_size: __off_t,
+ pub st_atim: ::timespec,
+ pub st_mtim: ::timespec,
+ pub st_ctim: ::timespec,
+ pub st_blksize: __blksize_t,
+ pub st_blocks: __blkcnt_t,
+ pub st_author: __uid_t,
+ pub st_flags: ::c_uint,
+ pub st_spare: [::c_int; 11usize],
+ }
+
+ pub struct stat64 {
+ pub st_fstype: ::c_int,
+ pub st_fsid: __fsid_t,
+ pub st_ino: __ino64_t,
+ pub st_gen: ::c_uint,
+ pub st_rdev: __dev_t,
+ pub st_mode: __mode_t,
+ pub st_nlink: __nlink_t,
+ pub st_uid: __uid_t,
+ pub st_gid: __gid_t,
+ pub st_size: __off64_t,
+ pub st_atim: ::timespec,
+ pub st_mtim: ::timespec,
+ pub st_ctim: ::timespec,
+ pub st_blksize: __blksize_t,
+ pub st_blocks: __blkcnt64_t,
+ pub st_author: __uid_t,
+ pub st_flags: ::c_uint,
+ pub st_spare: [::c_int; 8usize],
+ }
+
+ pub struct statfs {
+ pub f_type: ::c_uint,
+ pub f_bsize: ::c_ulong,
+ pub f_blocks: __fsblkcnt_t,
+ pub f_bfree: __fsblkcnt_t,
+ pub f_bavail: __fsblkcnt_t,
+ pub f_files: __fsblkcnt_t,
+ pub f_ffree: __fsblkcnt_t,
+ pub f_fsid: __fsid_t,
+ pub f_namelen: ::c_ulong,
+ pub f_favail: __fsfilcnt_t,
+ pub f_frsize: ::c_ulong,
+ pub f_flag: ::c_ulong,
+ pub f_spare: [::c_uint; 3usize],
+ }
+
+ pub struct statfs64 {
+ pub f_type: ::c_uint,
+ pub f_bsize: ::c_ulong,
+ pub f_blocks: __fsblkcnt64_t,
+ pub f_bfree: __fsblkcnt64_t,
+ pub f_bavail: __fsblkcnt64_t,
+ pub f_files: __fsblkcnt64_t,
+ pub f_ffree: __fsblkcnt64_t,
+ pub f_fsid: __fsid_t,
+ pub f_namelen: ::c_ulong,
+ pub f_favail: __fsfilcnt64_t,
+ pub f_frsize: ::c_ulong,
+ pub f_flag: ::c_ulong,
+ pub f_spare: [::c_uint ; 3usize],
+ }
+
+ pub struct statvfs {
+ pub __f_type: ::c_uint,
+ pub f_bsize: ::c_ulong,
+ pub f_blocks: __fsblkcnt_t,
+ pub f_bfree: __fsblkcnt_t,
+ pub f_bavail: __fsblkcnt_t,
+ pub f_files: __fsfilcnt_t,
+ pub f_ffree: __fsfilcnt_t,
+ pub f_fsid: __fsid_t,
+ pub f_namemax: ::c_ulong,
+ pub f_favail: __fsfilcnt_t,
+ pub f_frsize: ::c_ulong,
+ pub f_flag: ::c_ulong,
+ pub f_spare: [::c_uint; 3usize],
+ }
+
+ pub struct statvfs64 {
+ pub __f_type: ::c_uint,
+ pub f_bsize: ::c_ulong,
+ pub f_blocks: __fsblkcnt64_t,
+ pub f_bfree: __fsblkcnt64_t,
+ pub f_bavail: __fsblkcnt64_t,
+ pub f_files: __fsfilcnt64_t,
+ pub f_ffree: __fsfilcnt64_t,
+ pub f_fsid: __fsid_t,
+ pub f_namemax: ::c_ulong,
+ pub f_favail: __fsfilcnt64_t,
+ pub f_frsize: ::c_ulong,
+ pub f_flag: ::c_ulong,
+ pub f_spare: [::c_uint; 3usize],
+ }
+
+ #[cfg_attr(target_pointer_width = "32",
+ repr(align(4)))]
+ #[cfg_attr(target_pointer_width = "64",
+ repr(align(8)))]
+ pub struct sem_t {
+ __size: [::c_char; 20usize],
+ }
+
+ pub struct __pthread {
+ pub _address: u8,
+ }
+
+ pub struct __pthread_mutexattr {
+ pub __prioceiling: ::c_int,
+ pub __protocol: __pthread_mutex_protocol,
+ pub __pshared: __pthread_process_shared,
+ pub __mutex_type: __pthread_mutex_type,
+ }
+ pub struct __pthread_mutex {
+ pub __lock: ::c_uint,
+ pub __owner_id: ::c_uint,
+ pub __cnt: ::c_uint,
+ pub __shpid: ::c_int,
+ pub __type: ::c_int,
+ pub __flags: ::c_int,
+ pub __reserved1: ::c_uint,
+ pub __reserved2: ::c_uint,
+ }
+
+ pub struct __pthread_condattr {
+ pub __pshared: __pthread_process_shared,
+ pub __clock: __clockid_t,
+ }
+
+ pub struct __pthread_rwlockattr {
+ pub __pshared: __pthread_process_shared,
+ }
+
+ pub struct __pthread_barrierattr {
+ pub __pshared: __pthread_process_shared,
+ }
+
+ pub struct __pthread_once {
+ pub __run: ::c_int,
+ pub __lock: __pthread_spinlock_t,
+ }
+
+ pub struct __pthread_cond {
+ pub __lock: __pthread_spinlock_t,
+ pub __queue: *mut __pthread,
+ pub __attr: *mut __pthread_condattr,
+ pub __wrefs: ::c_uint,
+ pub __data: *mut ::c_void,
+ }
+
+ pub struct __pthread_attr {
+ pub __schedparam: __sched_param,
+ pub __stackaddr: *mut ::c_void,
+ pub __stacksize: size_t,
+ pub __guardsize: size_t,
+ pub __detachstate: __pthread_detachstate,
+ pub __inheritsched: __pthread_inheritsched,
+ pub __contentionscope: __pthread_contentionscope,
+ pub __schedpolicy: ::c_int,
+ }
+
+ pub struct __pthread_rwlock {
+ pub __held: __pthread_spinlock_t,
+ pub __lock: __pthread_spinlock_t,
+ pub __readers: ::c_int,
+ pub __readerqueue: *mut __pthread,
+ pub __writerqueue: *mut __pthread,
+ pub __attr: *mut __pthread_rwlockattr,
+ pub __data: *mut ::c_void,
+ }
+
+ pub struct __pthread_barrier {
+ pub __lock: __pthread_spinlock_t,
+ pub __queue: *mut __pthread,
+ pub __pending: ::c_uint,
+ pub __count: ::c_uint,
+ pub __attr: *mut __pthread_barrierattr,
+ pub __data: *mut ::c_void,
+ }
+
+ pub struct _IO_FILE {
+ _unused: [u8; 0],
+ }
+
+ pub struct __sched_param {
+ pub __sched_priority: ::c_int,
+ }
+
+ pub struct iovec {
+ pub iov_base: *mut ::c_void,
+ pub iov_len: size_t,
+ }
+
+ pub struct passwd {
+ pub pw_name: *mut ::c_char,
+ pub pw_passwd: *mut ::c_char,
+ pub pw_uid: __uid_t,
+ pub pw_gid: __gid_t,
+ pub pw_gecos: *mut ::c_char,
+ pub pw_dir: *mut ::c_char,
+ pub pw_shell: *mut ::c_char,
+ }
+
+ pub struct tm {
+ pub tm_sec: ::c_int,
+ pub tm_min: ::c_int,
+ pub tm_hour: ::c_int,
+ pub tm_mday: ::c_int,
+ pub tm_mon: ::c_int,
+ pub tm_year: ::c_int,
+ pub tm_wday: ::c_int,
+ pub tm_yday: ::c_int,
+ pub tm_isdst: ::c_int,
+ pub tm_gmtoff: ::c_long,
+ pub tm_zone: *const ::c_char,
+ }
+
+ pub struct lconv {
+ pub decimal_point: *mut ::c_char,
+ pub thousands_sep: *mut ::c_char,
+ pub grouping: *mut ::c_char,
+ pub int_curr_symbol: *mut ::c_char,
+ pub currency_symbol: *mut ::c_char,
+ pub mon_decimal_point: *mut ::c_char,
+ pub mon_thousands_sep: *mut ::c_char,
+ pub mon_grouping: *mut ::c_char,
+ pub positive_sign: *mut ::c_char,
+ pub negative_sign: *mut ::c_char,
+ pub int_frac_digits: ::c_char,
+ pub frac_digits: ::c_char,
+ pub p_cs_precedes: ::c_char,
+ pub p_sep_by_space: ::c_char,
+ pub n_cs_precedes: ::c_char,
+ pub n_sep_by_space: ::c_char,
+ pub p_sign_posn: ::c_char,
+ pub n_sign_posn: ::c_char,
+ pub int_p_cs_precedes: ::c_char,
+ pub int_p_sep_by_space: ::c_char,
+ pub int_n_cs_precedes: ::c_char,
+ pub int_n_sep_by_space: ::c_char,
+ pub int_p_sign_posn: ::c_char,
+ pub int_n_sign_posn: ::c_char,
+ }
+
+ pub struct Dl_info {
+ pub dli_fname: *const ::c_char,
+ pub dli_fbase: *mut ::c_void,
+ pub dli_sname: *const ::c_char,
+ pub dli_saddr: *mut ::c_void,
+ }
+
+ pub struct __locale_struct {
+ pub __locales: [*mut __locale_data; 13usize],
+ pub __ctype_b: *const ::c_ushort,
+ pub __ctype_tolower: *const ::c_int,
+ pub __ctype_toupper: *const ::c_int,
+ pub __names: [*const ::c_char; 13usize],
+ }
+
+ pub struct utsname {
+ pub sysname: [::c_char; 65],
+ pub nodename: [::c_char; 65],
+ pub release: [::c_char; 65],
+ pub version: [::c_char; 65],
+ pub machine: [::c_char; 65],
+ pub domainname: [::c_char; 65]
+ }
+
+ pub struct rlimit64 {
+ pub rlim_cur: rlim64_t,
+ pub rlim_max: rlim64_t,
+ }
+
+ pub struct stack_t {
+ pub ss_sp: * mut ::c_void,
+ pub ss_size: ::size_t,
+ pub ss_flags: ::c_int,
+ }
+
+ pub struct dl_phdr_info {
+ pub dlpi_addr: Elf_Addr,
+ pub dlpi_name: *const ::c_char,
+ pub dlpi_phdr: *const Elf_Phdr,
+ pub dlpi_phnum: Elf_Half,
+ pub dlpi_adds: ::c_ulonglong,
+ pub dlpi_subs: ::c_ulonglong,
+ pub dlpi_tls_modid: ::size_t,
+ pub dlpi_tls_data: *mut ::c_void,
+ }
+
+ pub struct flock {
+ #[cfg(target_pointer_width = "32")]
+ pub l_type : ::c_int,
+ #[cfg(target_pointer_width = "32")]
+ pub l_whence : ::c_int,
+ #[cfg(target_pointer_width = "64")]
+ pub l_type : ::c_short,
+ #[cfg(target_pointer_width = "64")]
+ pub l_whence : ::c_short,
+ pub l_start : __off_t,
+ pub l_len : __off_t,
+ pub l_pid : __pid_t,
+ }
+
+ pub struct flock64 {
+ #[cfg(target_pointer_width = "32")]
+ pub l_type : ::c_int,
+ #[cfg(target_pointer_width = "32")]
+ pub l_whence : ::c_int,
+ #[cfg(target_pointer_width = "64")]
+ pub l_type : ::c_short,
+ #[cfg(target_pointer_width = "64")]
+ pub l_whence : ::c_short,
+ pub l_start : __off_t,
+ pub l_len : __off64_t,
+ pub l_pid : __pid_t,
+ }
+}
+
+impl siginfo_t {
+ pub unsafe fn si_addr(&self) -> *mut ::c_void {
+ self.si_addr
+ }
+
+ pub unsafe fn si_value(&self) -> ::sigval {
+ self.si_value
+ }
+
+ pub unsafe fn si_pid(&self) -> ::pid_t {
+ self.si_pid
+ }
+
+ pub unsafe fn si_uid(&self) -> ::uid_t {
+ self.si_uid
+ }
+
+ pub unsafe fn si_status(&self) -> ::c_int {
+ self.si_status
+ }
+}
+
+// const
+pub const IPOPT_COPY: u8 = 0x80;
+pub const IPOPT_NUMBER_MASK: u8 = 0x1f;
+pub const IPOPT_CLASS_MASK: u8 = 0x60;
+pub const IPTOS_ECN_MASK: u8 = 0x03;
+pub const MSG_CMSG_CLOEXEC: ::c_int = 0x40000000;
+
+// unistd.h
+pub const STDIN_FILENO: c_long = 0;
+pub const STDOUT_FILENO: c_long = 1;
+pub const STDERR_FILENO: c_long = 2;
+pub const __FD_SETSIZE: usize = 256;
+pub const R_OK: ::c_int = 4;
+pub const W_OK: ::c_int = 2;
+pub const X_OK: ::c_int = 1;
+pub const F_OK: ::c_int = 0;
+pub const SEEK_SET: ::c_int = 0;
+pub const SEEK_CUR: ::c_int = 1;
+pub const SEEK_END: ::c_int = 2;
+pub const SEEK_DATA: ::c_int = 3;
+pub const SEEK_HOLE: ::c_int = 4;
+pub const L_SET: ::c_int = 0;
+pub const L_INCR: ::c_int = 1;
+pub const L_XTND: ::c_int = 2;
+pub const F_ULOCK: ::c_int = 0;
+pub const F_LOCK: ::c_int = 1;
+pub const F_TLOCK: ::c_int = 2;
+pub const F_TEST: ::c_int = 3;
+pub const CLOSE_RANGE_CLOEXEC: ::c_int = 4;
+
+// stdlib.h
+pub const WNOHANG: ::c_int = 1;
+pub const WUNTRACED: ::c_int = 2;
+pub const WSTOPPED: ::c_int = 2;
+pub const WCONTINUED: ::c_int = 4;
+pub const WNOWAIT: ::c_int = 8;
+pub const WEXITED: ::c_int = 16;
+pub const __W_CONTINUED: ::c_int = 65535;
+pub const __WCOREFLAG: ::c_int = 128;
+pub const RAND_MAX: ::c_int = 2147483647;
+pub const EXIT_FAILURE: ::c_int = 1;
+pub const EXIT_SUCCESS: ::c_int = 0;
+pub const __LITTLE_ENDIAN: usize = 1234;
+pub const __BIG_ENDIAN: usize = 4321;
+pub const __PDP_ENDIAN: usize = 3412;
+pub const __BYTE_ORDER: usize = 1234;
+pub const __FLOAT_WORD_ORDER: usize = 1234;
+pub const LITTLE_ENDIAN: usize = 1234;
+pub const BIG_ENDIAN: usize = 4321;
+pub const PDP_ENDIAN: usize = 3412;
+pub const BYTE_ORDER: usize = 1234;
+
+// sys/select.h
+pub const FD_SETSIZE: usize = 256;
+pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 32;
+pub const __SIZEOF_PTHREAD_ATTR_T: usize = 32;
+pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 28;
+pub const __SIZEOF_PTHREAD_BARRIER_T: usize = 24;
+pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 16;
+pub const __SIZEOF_PTHREAD_COND_T: usize = 20;
+pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 8;
+pub const __SIZEOF_PTHREAD_RWLOCKATTR_T: usize = 4;
+pub const __SIZEOF_PTHREAD_BARRIERATTR_T: usize = 4;
+pub const __SIZEOF_PTHREAD_ONCE_T: usize = 8;
+pub const __PTHREAD_SPIN_LOCK_INITIALIZER: ::c_int = 0;
+pub const PTHREAD_MUTEX_NORMAL: ::c_int = 0;
+
+// sys/resource.h
+pub const RLIM_INFINITY: ::rlim_t = 2147483647;
+pub const RLIM64_INFINITY: ::rlim64_t = 9223372036854775807;
+pub const RLIM_SAVED_MAX: ::rlim_t = RLIM_INFINITY;
+pub const RLIM_SAVED_CUR: ::rlim_t = RLIM_INFINITY;
+pub const PRIO_MIN: ::c_int = -20;
+pub const PRIO_MAX: ::c_int = 20;
+
+// pwd.h
+pub const NSS_BUFLEN_PASSWD: usize = 1024;
+
+// sys/socket.h
+pub const SOCK_TYPE_MASK: usize = 15;
+pub const PF_UNSPEC: ::c_int = 0;
+pub const PF_LOCAL: ::c_int = 1;
+pub const PF_UNIX: ::c_int = 1;
+pub const PF_FILE: ::c_int = 1;
+pub const PF_INET: ::c_int = 2;
+pub const PF_IMPLINK: ::c_int = 3;
+pub const PF_PUP: ::c_int = 4;
+pub const PF_CHAOS: ::c_int = 5;
+pub const PF_NS: ::c_int = 6;
+pub const PF_ISO: ::c_int = 7;
+pub const PF_OSI: ::c_int = 7;
+pub const PF_ECMA: ::c_int = 8;
+pub const PF_DATAKIT: ::c_int = 9;
+pub const PF_CCITT: ::c_int = 10;
+pub const PF_SNA: ::c_int = 11;
+pub const PF_DECnet: ::c_int = 12;
+pub const PF_DLI: ::c_int = 13;
+pub const PF_LAT: ::c_int = 14;
+pub const PF_HYLINK: ::c_int = 15;
+pub const PF_APPLETALK: ::c_int = 16;
+pub const PF_ROUTE: ::c_int = 17;
+pub const PF_XTP: ::c_int = 19;
+pub const PF_COIP: ::c_int = 20;
+pub const PF_CNT: ::c_int = 21;
+pub const PF_RTIP: ::c_int = 22;
+pub const PF_IPX: ::c_int = 23;
+pub const PF_SIP: ::c_int = 24;
+pub const PF_PIP: ::c_int = 25;
+pub const PF_INET6: ::c_int = 26;
+pub const PF_MAX: ::c_int = 27;
+pub const AF_UNSPEC: ::c_int = 0;
+pub const AF_LOCAL: ::c_int = 1;
+pub const AF_UNIX: ::c_int = 1;
+pub const AF_FILE: ::c_int = 1;
+pub const AF_INET: ::c_int = 2;
+pub const AF_IMPLINK: ::c_int = 3;
+pub const AF_PUP: ::c_int = 4;
+pub const AF_CHAOS: ::c_int = 5;
+pub const AF_NS: ::c_int = 6;
+pub const AF_ISO: ::c_int = 7;
+pub const AF_OSI: ::c_int = 7;
+pub const AF_ECMA: ::c_int = 8;
+pub const AF_DATAKIT: ::c_int = 9;
+pub const AF_CCITT: ::c_int = 10;
+pub const AF_SNA: ::c_int = 11;
+pub const AF_DECnet: ::c_int = 12;
+pub const AF_DLI: ::c_int = 13;
+pub const AF_LAT: ::c_int = 14;
+pub const AF_HYLINK: ::c_int = 15;
+pub const AF_APPLETALK: ::c_int = 16;
+pub const AF_ROUTE: ::c_int = 17;
+pub const pseudo_AF_XTP: ::c_int = 19;
+pub const AF_COIP: ::c_int = 20;
+pub const AF_CNT: ::c_int = 21;
+pub const pseudo_AF_RTIP: ::c_int = 22;
+pub const AF_IPX: ::c_int = 23;
+pub const AF_SIP: ::c_int = 24;
+pub const pseudo_AF_PIP: ::c_int = 25;
+pub const AF_INET6: ::c_int = 26;
+pub const AF_MAX: ::c_int = 27;
+pub const SOMAXCONN: ::c_int = 4096;
+pub const _SS_SIZE: usize = 128;
+pub const CMGROUP_MAX: usize = 16;
+pub const SOL_SOCKET: ::c_int = 65535;
+
+// netinet/in.h
+pub const SOL_IP: ::c_int = 0;
+pub const IP_OPTIONS: ::c_int = 1;
+pub const IP_HDRINCL: ::c_int = 2;
+pub const IP_TOS: ::c_int = 3;
+pub const IP_TTL: ::c_int = 4;
+pub const IP_RECVOPTS: ::c_int = 5;
+pub const IP_RECVRETOPTS: ::c_int = 6;
+pub const IP_RECVDSTADDR: ::c_int = 7;
+pub const IP_RETOPTS: ::c_int = 8;
+pub const IP_MULTICAST_IF: ::c_int = 9;
+pub const IP_MULTICAST_TTL: ::c_int = 10;
+pub const IP_MULTICAST_LOOP: ::c_int = 11;
+pub const IP_ADD_MEMBERSHIP: ::c_int = 12;
+pub const IP_DROP_MEMBERSHIP: ::c_int = 13;
+pub const SOL_IPV6: ::c_int = 41;
+pub const SOL_ICMPV6: ::c_int = 58;
+pub const IPV6_ADDRFORM: ::c_int = 1;
+pub const IPV6_2292PKTINFO: ::c_int = 2;
+pub const IPV6_2292HOPOPTS: ::c_int = 3;
+pub const IPV6_2292DSTOPTS: ::c_int = 4;
+pub const IPV6_2292RTHDR: ::c_int = 5;
+pub const IPV6_2292PKTOPTIONS: ::c_int = 6;
+pub const IPV6_CHECKSUM: ::c_int = 7;
+pub const IPV6_2292HOPLIMIT: ::c_int = 8;
+pub const IPV6_RXINFO: ::c_int = 2;
+pub const IPV6_TXINFO: ::c_int = 2;
+pub const SCM_SRCINFO: ::c_int = 2;
+pub const IPV6_UNICAST_HOPS: ::c_int = 16;
+pub const IPV6_MULTICAST_IF: ::c_int = 17;
+pub const IPV6_MULTICAST_HOPS: ::c_int = 18;
+pub const IPV6_MULTICAST_LOOP: ::c_int = 19;
+pub const IPV6_JOIN_GROUP: ::c_int = 20;
+pub const IPV6_LEAVE_GROUP: ::c_int = 21;
+pub const IPV6_ROUTER_ALERT: ::c_int = 22;
+pub const IPV6_MTU_DISCOVER: ::c_int = 23;
+pub const IPV6_MTU: ::c_int = 24;
+pub const IPV6_RECVERR: ::c_int = 25;
+pub const IPV6_V6ONLY: ::c_int = 26;
+pub const IPV6_JOIN_ANYCAST: ::c_int = 27;
+pub const IPV6_LEAVE_ANYCAST: ::c_int = 28;
+pub const IPV6_RECVPKTINFO: ::c_int = 49;
+pub const IPV6_PKTINFO: ::c_int = 50;
+pub const IPV6_RECVHOPLIMIT: ::c_int = 51;
+pub const IPV6_HOPLIMIT: ::c_int = 52;
+pub const IPV6_RECVHOPOPTS: ::c_int = 53;
+pub const IPV6_HOPOPTS: ::c_int = 54;
+pub const IPV6_RTHDRDSTOPTS: ::c_int = 55;
+pub const IPV6_RECVRTHDR: ::c_int = 56;
+pub const IPV6_RTHDR: ::c_int = 57;
+pub const IPV6_RECVDSTOPTS: ::c_int = 58;
+pub const IPV6_DSTOPTS: ::c_int = 59;
+pub const IPV6_RECVPATHMTU: ::c_int = 60;
+pub const IPV6_PATHMTU: ::c_int = 61;
+pub const IPV6_DONTFRAG: ::c_int = 62;
+pub const IPV6_RECVTCLASS: ::c_int = 66;
+pub const IPV6_TCLASS: ::c_int = 67;
+pub const IPV6_ADDR_PREFERENCES: ::c_int = 72;
+pub const IPV6_MINHOPCOUNT: ::c_int = 73;
+pub const IPV6_ADD_MEMBERSHIP: ::c_int = 20;
+pub const IPV6_DROP_MEMBERSHIP: ::c_int = 21;
+pub const IPV6_RXHOPOPTS: ::c_int = 3;
+pub const IPV6_RXDSTOPTS: ::c_int = 4;
+pub const IPV6_RTHDR_LOOSE: ::c_int = 0;
+pub const IPV6_RTHDR_STRICT: ::c_int = 1;
+pub const IPV6_RTHDR_TYPE_0: ::c_int = 0;
+pub const IN_CLASSA_NET: u32 = 4278190080;
+pub const IN_CLASSA_NSHIFT: usize = 24;
+pub const IN_CLASSA_HOST: u32 = 16777215;
+pub const IN_CLASSA_MAX: u32 = 128;
+pub const IN_CLASSB_NET: u32 = 4294901760;
+pub const IN_CLASSB_NSHIFT: usize = 16;
+pub const IN_CLASSB_HOST: u32 = 65535;
+pub const IN_CLASSB_MAX: u32 = 65536;
+pub const IN_CLASSC_NET: u32 = 4294967040;
+pub const IN_CLASSC_NSHIFT: usize = 8;
+pub const IN_CLASSC_HOST: u32 = 255;
+pub const IN_LOOPBACKNET: u32 = 127;
+pub const INET_ADDRSTRLEN: usize = 16;
+pub const INET6_ADDRSTRLEN: usize = 46;
+
+// bits/posix1_lim.h
+pub const _POSIX_AIO_LISTIO_MAX: usize = 2;
+pub const _POSIX_AIO_MAX: usize = 1;
+pub const _POSIX_ARG_MAX: usize = 4096;
+pub const _POSIX_CHILD_MAX: usize = 25;
+pub const _POSIX_DELAYTIMER_MAX: usize = 32;
+pub const _POSIX_HOST_NAME_MAX: usize = 255;
+pub const _POSIX_LINK_MAX: usize = 8;
+pub const _POSIX_LOGIN_NAME_MAX: usize = 9;
+pub const _POSIX_MAX_CANON: usize = 255;
+pub const _POSIX_MAX_INPUT: usize = 255;
+pub const _POSIX_MQ_OPEN_MAX: usize = 8;
+pub const _POSIX_MQ_PRIO_MAX: usize = 32;
+pub const _POSIX_NAME_MAX: usize = 14;
+pub const _POSIX_NGROUPS_MAX: usize = 8;
+pub const _POSIX_OPEN_MAX: usize = 20;
+pub const _POSIX_FD_SETSIZE: usize = 20;
+pub const _POSIX_PATH_MAX: usize = 256;
+pub const _POSIX_PIPE_BUF: usize = 512;
+pub const _POSIX_RE_DUP_MAX: usize = 255;
+pub const _POSIX_RTSIG_MAX: usize = 8;
+pub const _POSIX_SEM_NSEMS_MAX: usize = 256;
+pub const _POSIX_SEM_VALUE_MAX: usize = 32767;
+pub const _POSIX_SIGQUEUE_MAX: usize = 32;
+pub const _POSIX_SSIZE_MAX: usize = 32767;
+pub const _POSIX_STREAM_MAX: usize = 8;
+pub const _POSIX_SYMLINK_MAX: usize = 255;
+pub const _POSIX_SYMLOOP_MAX: usize = 8;
+pub const _POSIX_TIMER_MAX: usize = 32;
+pub const _POSIX_TTY_NAME_MAX: usize = 9;
+pub const _POSIX_TZNAME_MAX: usize = 6;
+pub const _POSIX_QLIMIT: usize = 1;
+pub const _POSIX_HIWAT: usize = 512;
+pub const _POSIX_UIO_MAXIOV: usize = 16;
+pub const _POSIX_CLOCKRES_MIN: usize = 20000000;
+pub const NAME_MAX: usize = 255;
+pub const NGROUPS_MAX: usize = 256;
+pub const _POSIX_THREAD_KEYS_MAX: usize = 128;
+pub const _POSIX_THREAD_DESTRUCTOR_ITERATIONS: usize = 4;
+pub const _POSIX_THREAD_THREADS_MAX: usize = 64;
+pub const SEM_VALUE_MAX: ::c_int = 2147483647;
+pub const MAXNAMLEN: usize = 255;
+
+// netdb.h
+pub const _PATH_HEQUIV: &'static [u8; 17usize] = b"/etc/hosts.equiv\0";
+pub const _PATH_HOSTS: &'static [u8; 11usize] = b"/etc/hosts\0";
+pub const _PATH_NETWORKS: &'static [u8; 14usize] = b"/etc/networks\0";
+pub const _PATH_NSSWITCH_CONF: &'static [u8; 19usize] = b"/etc/nsswitch.conf\0";
+pub const _PATH_PROTOCOLS: &'static [u8; 15usize] = b"/etc/protocols\0";
+pub const _PATH_SERVICES: &'static [u8; 14usize] = b"/etc/services\0";
+pub const HOST_NOT_FOUND: ::c_int = 1;
+pub const TRY_AGAIN: ::c_int = 2;
+pub const NO_RECOVERY: ::c_int = 3;
+pub const NO_DATA: ::c_int = 4;
+pub const NETDB_INTERNAL: ::c_int = -1;
+pub const NETDB_SUCCESS: ::c_int = 0;
+pub const NO_ADDRESS: ::c_int = 4;
+pub const IPPORT_RESERVED: ::c_int = 1024;
+pub const SCOPE_DELIMITER: u8 = 37u8;
+pub const GAI_WAIT: ::c_int = 0;
+pub const GAI_NOWAIT: ::c_int = 1;
+pub const AI_PASSIVE: ::c_int = 1;
+pub const AI_CANONNAME: ::c_int = 2;
+pub const AI_NUMERICHOST: ::c_int = 4;
+pub const AI_V4MAPPED: ::c_int = 8;
+pub const AI_ALL: ::c_int = 16;
+pub const AI_ADDRCONFIG: ::c_int = 32;
+pub const AI_IDN: ::c_int = 64;
+pub const AI_CANONIDN: ::c_int = 128;
+pub const AI_NUMERICSERV: ::c_int = 1024;
+pub const EAI_BADFLAGS: ::c_int = -1;
+pub const EAI_NONAME: ::c_int = -2;
+pub const EAI_AGAIN: ::c_int = -3;
+pub const EAI_FAIL: ::c_int = -4;
+pub const EAI_FAMILY: ::c_int = -6;
+pub const EAI_SOCKTYPE: ::c_int = -7;
+pub const EAI_SERVICE: ::c_int = -8;
+pub const EAI_MEMORY: ::c_int = -10;
+pub const EAI_SYSTEM: ::c_int = -11;
+pub const EAI_OVERFLOW: ::c_int = -12;
+pub const EAI_NODATA: ::c_int = -5;
+pub const EAI_ADDRFAMILY: ::c_int = -9;
+pub const EAI_INPROGRESS: ::c_int = -100;
+pub const EAI_CANCELED: ::c_int = -101;
+pub const EAI_NOTCANCELED: ::c_int = -102;
+pub const EAI_ALLDONE: ::c_int = -103;
+pub const EAI_INTR: ::c_int = -104;
+pub const EAI_IDN_ENCODE: ::c_int = -105;
+pub const NI_MAXHOST: usize = 1025;
+pub const NI_MAXSERV: usize = 32;
+pub const NI_NUMERICHOST: ::c_int = 1;
+pub const NI_NUMERICSERV: ::c_int = 2;
+pub const NI_NOFQDN: ::c_int = 4;
+pub const NI_NAMEREQD: ::c_int = 8;
+pub const NI_DGRAM: ::c_int = 16;
+pub const NI_IDN: ::c_int = 32;
+
+// time.h
+pub const CLOCK_REALTIME: clockid_t = 0;
+pub const CLOCK_MONOTONIC: clockid_t = 1;
+pub const CLOCK_PROCESS_CPUTIME_ID: clockid_t = 2;
+pub const CLOCK_THREAD_CPUTIME_ID: clockid_t = 3;
+pub const CLOCK_MONOTONIC_RAW: clockid_t = 4;
+pub const CLOCK_REALTIME_COARSE: clockid_t = 5;
+pub const CLOCK_MONOTONIC_COARSE: clockid_t = 6;
+pub const TIMER_ABSTIME: ::c_int = 1;
+pub const TIME_UTC: ::c_int = 1;
+
+// sys/poll.h
+pub const POLLIN: i16 = 1;
+pub const POLLPRI: i16 = 2;
+pub const POLLOUT: i16 = 4;
+pub const POLLRDNORM: i16 = 1;
+pub const POLLRDBAND: i16 = 2;
+pub const POLLWRNORM: i16 = 4;
+pub const POLLWRBAND: i16 = 4;
+pub const POLLERR: i16 = 8;
+pub const POLLHUP: i16 = 16;
+pub const POLLNVAL: i16 = 32;
+
+// locale.h
+pub const __LC_CTYPE: usize = 0;
+pub const __LC_NUMERIC: usize = 1;
+pub const __LC_TIME: usize = 2;
+pub const __LC_COLLATE: usize = 3;
+pub const __LC_MONETARY: usize = 4;
+pub const __LC_MESSAGES: usize = 5;
+pub const __LC_ALL: usize = 6;
+pub const __LC_PAPER: usize = 7;
+pub const __LC_NAME: usize = 8;
+pub const __LC_ADDRESS: usize = 9;
+pub const __LC_TELEPHONE: usize = 10;
+pub const __LC_MEASUREMENT: usize = 11;
+pub const __LC_IDENTIFICATION: usize = 12;
+pub const LC_CTYPE: ::c_int = 0;
+pub const LC_NUMERIC: ::c_int = 1;
+pub const LC_TIME: ::c_int = 2;
+pub const LC_COLLATE: ::c_int = 3;
+pub const LC_MONETARY: ::c_int = 4;
+pub const LC_MESSAGES: ::c_int = 5;
+pub const LC_ALL: ::c_int = 6;
+pub const LC_PAPER: ::c_int = 7;
+pub const LC_NAME: ::c_int = 8;
+pub const LC_ADDRESS: ::c_int = 9;
+pub const LC_TELEPHONE: ::c_int = 10;
+pub const LC_MEASUREMENT: ::c_int = 11;
+pub const LC_IDENTIFICATION: ::c_int = 12;
+pub const LC_CTYPE_MASK: ::c_int = 1;
+pub const LC_NUMERIC_MASK: ::c_int = 2;
+pub const LC_TIME_MASK: ::c_int = 4;
+pub const LC_COLLATE_MASK: ::c_int = 8;
+pub const LC_MONETARY_MASK: ::c_int = 16;
+pub const LC_MESSAGES_MASK: ::c_int = 32;
+pub const LC_PAPER_MASK: ::c_int = 128;
+pub const LC_NAME_MASK: ::c_int = 256;
+pub const LC_ADDRESS_MASK: ::c_int = 512;
+pub const LC_TELEPHONE_MASK: ::c_int = 1024;
+pub const LC_MEASUREMENT_MASK: ::c_int = 2048;
+pub const LC_IDENTIFICATION_MASK: ::c_int = 4096;
+pub const LC_ALL_MASK: ::c_int = 8127;
+
+// semaphore.h
+pub const __SIZEOF_SEM_T: usize = 20;
+
+// termios.h
+pub const IGNBRK: tcflag_t = 1;
+pub const BRKINT: tcflag_t = 2;
+pub const IGNPAR: tcflag_t = 4;
+pub const PARMRK: tcflag_t = 8;
+pub const INPCK: tcflag_t = 16;
+pub const ISTRIP: tcflag_t = 32;
+pub const INLCR: tcflag_t = 64;
+pub const IGNCR: tcflag_t = 128;
+pub const ICRNL: tcflag_t = 256;
+pub const IXON: tcflag_t = 512;
+pub const IXOFF: tcflag_t = 1024;
+pub const IXANY: tcflag_t = 2048;
+pub const IMAXBEL: tcflag_t = 8192;
+pub const IUCLC: tcflag_t = 16384;
+pub const OPOST: tcflag_t = 1;
+pub const ONLCR: tcflag_t = 2;
+pub const ONOEOT: tcflag_t = 8;
+pub const OCRNL: tcflag_t = 16;
+pub const ONOCR: tcflag_t = 32;
+pub const ONLRET: tcflag_t = 64;
+pub const NLDLY: tcflag_t = 768;
+pub const NL0: tcflag_t = 0;
+pub const NL1: tcflag_t = 256;
+pub const TABDLY: tcflag_t = 3076;
+pub const TAB0: tcflag_t = 0;
+pub const TAB1: tcflag_t = 1024;
+pub const TAB2: tcflag_t = 2048;
+pub const TAB3: tcflag_t = 4;
+pub const CRDLY: tcflag_t = 12288;
+pub const CR0: tcflag_t = 0;
+pub const CR1: tcflag_t = 4096;
+pub const CR2: tcflag_t = 8192;
+pub const CR3: tcflag_t = 12288;
+pub const FFDLY: tcflag_t = 16384;
+pub const FF0: tcflag_t = 0;
+pub const FF1: tcflag_t = 16384;
+pub const BSDLY: tcflag_t = 32768;
+pub const BS0: tcflag_t = 0;
+pub const BS1: tcflag_t = 32768;
+pub const VTDLY: tcflag_t = 65536;
+pub const VT0: tcflag_t = 0;
+pub const VT1: tcflag_t = 65536;
+pub const OLCUC: tcflag_t = 131072;
+pub const OFILL: tcflag_t = 262144;
+pub const OFDEL: tcflag_t = 524288;
+pub const CIGNORE: tcflag_t = 1;
+pub const CSIZE: tcflag_t = 768;
+pub const CS5: tcflag_t = 0;
+pub const CS6: tcflag_t = 256;
+pub const CS7: tcflag_t = 512;
+pub const CS8: tcflag_t = 768;
+pub const CSTOPB: tcflag_t = 1024;
+pub const CREAD: tcflag_t = 2048;
+pub const PARENB: tcflag_t = 4096;
+pub const PARODD: tcflag_t = 8192;
+pub const HUPCL: tcflag_t = 16384;
+pub const CLOCAL: tcflag_t = 32768;
+pub const CRTSCTS: tcflag_t = 65536;
+pub const CRTS_IFLOW: tcflag_t = 65536;
+pub const CCTS_OFLOW: tcflag_t = 65536;
+pub const CDTRCTS: tcflag_t = 131072;
+pub const MDMBUF: tcflag_t = 1048576;
+pub const CHWFLOW: tcflag_t = 1245184;
+pub const ECHOKE: tcflag_t = 1;
+pub const _ECHOE: tcflag_t = 2;
+pub const ECHOE: tcflag_t = 2;
+pub const _ECHOK: tcflag_t = 4;
+pub const ECHOK: tcflag_t = 4;
+pub const _ECHO: tcflag_t = 8;
+pub const ECHO: tcflag_t = 8;
+pub const _ECHONL: tcflag_t = 16;
+pub const ECHONL: tcflag_t = 16;
+pub const ECHOPRT: tcflag_t = 32;
+pub const ECHOCTL: tcflag_t = 64;
+pub const _ISIG: tcflag_t = 128;
+pub const ISIG: tcflag_t = 128;
+pub const _ICANON: tcflag_t = 256;
+pub const ICANON: tcflag_t = 256;
+pub const ALTWERASE: tcflag_t = 512;
+pub const _IEXTEN: tcflag_t = 1024;
+pub const IEXTEN: tcflag_t = 1024;
+pub const EXTPROC: tcflag_t = 2048;
+pub const _TOSTOP: tcflag_t = 4194304;
+pub const TOSTOP: tcflag_t = 4194304;
+pub const FLUSHO: tcflag_t = 8388608;
+pub const NOKERNINFO: tcflag_t = 33554432;
+pub const PENDIN: tcflag_t = 536870912;
+pub const _NOFLSH: tcflag_t = 2147483648;
+pub const NOFLSH: tcflag_t = 2147483648;
+pub const VEOF: cc_t = 0;
+pub const VEOL: cc_t = 1;
+pub const VEOL2: cc_t = 2;
+pub const VERASE: cc_t = 3;
+pub const VWERASE: cc_t = 4;
+pub const VKILL: cc_t = 5;
+pub const VREPRINT: cc_t = 6;
+pub const VINTR: cc_t = 8;
+pub const VQUIT: cc_t = 9;
+pub const VSUSP: cc_t = 10;
+pub const VDSUSP: cc_t = 11;
+pub const VSTART: cc_t = 12;
+pub const VSTOP: cc_t = 13;
+pub const VLNEXT: cc_t = 14;
+pub const VDISCARD: cc_t = 15;
+pub const VMIN: cc_t = 16;
+pub const VTIME: cc_t = 17;
+pub const VSTATUS: cc_t = 18;
+pub const NCCS: usize = 20;
+pub const B0: speed_t = 0;
+pub const B50: speed_t = 50;
+pub const B75: speed_t = 75;
+pub const B110: speed_t = 110;
+pub const B134: speed_t = 134;
+pub const B150: speed_t = 150;
+pub const B200: speed_t = 200;
+pub const B300: speed_t = 300;
+pub const B600: speed_t = 600;
+pub const B1200: speed_t = 1200;
+pub const B1800: speed_t = 1800;
+pub const B2400: speed_t = 2400;
+pub const B4800: speed_t = 4800;
+pub const B9600: speed_t = 9600;
+pub const B7200: speed_t = 7200;
+pub const B14400: speed_t = 14400;
+pub const B19200: speed_t = 19200;
+pub const B28800: speed_t = 28800;
+pub const B38400: speed_t = 38400;
+pub const EXTA: speed_t = 19200;
+pub const EXTB: speed_t = 38400;
+pub const B57600: speed_t = 57600;
+pub const B76800: speed_t = 76800;
+pub const B115200: speed_t = 115200;
+pub const B230400: speed_t = 230400;
+pub const B460800: speed_t = 460800;
+pub const B500000: speed_t = 500000;
+pub const B576000: speed_t = 576000;
+pub const B921600: speed_t = 921600;
+pub const B1000000: speed_t = 1000000;
+pub const B1152000: speed_t = 1152000;
+pub const B1500000: speed_t = 1500000;
+pub const B2000000: speed_t = 2000000;
+pub const B2500000: speed_t = 2500000;
+pub const B3000000: speed_t = 3000000;
+pub const B3500000: speed_t = 3500000;
+pub const B4000000: speed_t = 4000000;
+pub const TCSANOW: ::c_int = 0;
+pub const TCSADRAIN: ::c_int = 1;
+pub const TCSAFLUSH: ::c_int = 2;
+pub const TCSASOFT: ::c_int = 16;
+pub const TCIFLUSH: ::c_int = 1;
+pub const TCOFLUSH: ::c_int = 2;
+pub const TCIOFLUSH: ::c_int = 3;
+pub const TCOOFF: ::c_int = 1;
+pub const TCOON: ::c_int = 2;
+pub const TCIOFF: ::c_int = 3;
+pub const TCION: ::c_int = 4;
+pub const TTYDEF_IFLAG: tcflag_t = 11042;
+pub const TTYDEF_LFLAG: tcflag_t = 1483;
+pub const TTYDEF_CFLAG: tcflag_t = 23040;
+pub const TTYDEF_SPEED: tcflag_t = 9600;
+pub const CEOL: u8 = 0u8;
+pub const CERASE: u8 = 127;
+pub const CMIN: u8 = 1;
+pub const CQUIT: u8 = 28;
+pub const CTIME: u8 = 0;
+pub const CBRK: u8 = 0u8;
+
+// dlfcn.h
+pub const RTLD_DEFAULT: *mut ::c_void = 0i64 as *mut ::c_void;
+pub const RTLD_LAZY: ::c_int = 1;
+pub const RTLD_NOW: ::c_int = 2;
+pub const RTLD_BINDING_MASK: ::c_int = 3;
+pub const RTLD_NOLOAD: ::c_int = 4;
+pub const RTLD_DEEPBIND: ::c_int = 8;
+pub const RTLD_GLOBAL: ::c_int = 256;
+pub const RTLD_LOCAL: ::c_int = 0;
+pub const RTLD_NODELETE: ::c_int = 4096;
+pub const DLFO_STRUCT_HAS_EH_DBASE: usize = 1;
+pub const DLFO_STRUCT_HAS_EH_COUNT: usize = 0;
+pub const LM_ID_BASE: c_long = 0;
+pub const LM_ID_NEWLM: c_long = -1;
+
+// bits/signum_generic.h
+pub const SIGINT: ::c_int = 2;
+pub const SIGILL: ::c_int = 4;
+pub const SIGABRT: ::c_int = 6;
+pub const SIGFPE: ::c_int = 8;
+pub const SIGSEGV: ::c_int = 11;
+pub const SIGTERM: ::c_int = 15;
+pub const SIGHUP: ::c_int = 1;
+pub const SIGQUIT: ::c_int = 3;
+pub const SIGTRAP: ::c_int = 5;
+pub const SIGKILL: ::c_int = 9;
+pub const SIGPIPE: ::c_int = 13;
+pub const SIGALRM: ::c_int = 14;
+pub const SIGIOT: ::c_int = 6;
+pub const SIGBUS: ::c_int = 10;
+pub const SIGSYS: ::c_int = 12;
+pub const SIGEMT: ::c_int = 7;
+pub const SIGINFO: ::c_int = 29;
+pub const SIGLOST: ::c_int = 32;
+pub const SIGURG: ::c_int = 16;
+pub const SIGSTOP: ::c_int = 17;
+pub const SIGTSTP: ::c_int = 18;
+pub const SIGCONT: ::c_int = 19;
+pub const SIGCHLD: ::c_int = 20;
+pub const SIGTTIN: ::c_int = 21;
+pub const SIGTTOU: ::c_int = 22;
+pub const SIGPOLL: ::c_int = 23;
+pub const SIGXCPU: ::c_int = 24;
+pub const SIGVTALRM: ::c_int = 26;
+pub const SIGPROF: ::c_int = 27;
+pub const SIGXFSZ: ::c_int = 25;
+pub const SIGUSR1: ::c_int = 30;
+pub const SIGUSR2: ::c_int = 31;
+pub const SIGWINCH: ::c_int = 28;
+pub const SIGIO: ::c_int = 23;
+pub const SIGCLD: ::c_int = 20;
+pub const __SIGRTMIN: usize = 32;
+pub const __SIGRTMAX: usize = 32;
+pub const _NSIG: usize = 33;
+pub const NSIG: usize = 33;
+
+// bits/sigaction.h
+pub const SA_ONSTACK: ::c_int = 1;
+pub const SA_RESTART: ::c_int = 2;
+pub const SA_NODEFER: ::c_int = 16;
+pub const SA_RESETHAND: ::c_int = 4;
+pub const SA_NOCLDSTOP: ::c_int = 8;
+pub const SA_SIGINFO: ::c_int = 64;
+pub const SA_INTERRUPT: ::c_int = 0;
+pub const SA_NOMASK: ::c_int = 16;
+pub const SA_ONESHOT: ::c_int = 4;
+pub const SA_STACK: ::c_int = 1;
+pub const SIG_BLOCK: ::c_int = 1;
+pub const SIG_UNBLOCK: ::c_int = 2;
+pub const SIG_SETMASK: ::c_int = 3;
+
+// bits/sigcontext.h
+pub const FPC_IE: u16 = 1;
+pub const FPC_IM: u16 = 1;
+pub const FPC_DE: u16 = 2;
+pub const FPC_DM: u16 = 2;
+pub const FPC_ZE: u16 = 4;
+pub const FPC_ZM: u16 = 4;
+pub const FPC_OE: u16 = 8;
+pub const FPC_OM: u16 = 8;
+pub const FPC_UE: u16 = 16;
+pub const FPC_PE: u16 = 32;
+pub const FPC_PC: u16 = 768;
+pub const FPC_PC_24: u16 = 0;
+pub const FPC_PC_53: u16 = 512;
+pub const FPC_PC_64: u16 = 768;
+pub const FPC_RC: u16 = 3072;
+pub const FPC_RC_RN: u16 = 0;
+pub const FPC_RC_RD: u16 = 1024;
+pub const FPC_RC_RU: u16 = 2048;
+pub const FPC_RC_CHOP: u16 = 3072;
+pub const FPC_IC: u16 = 4096;
+pub const FPC_IC_PROJ: u16 = 0;
+pub const FPC_IC_AFF: u16 = 4096;
+pub const FPS_IE: u16 = 1;
+pub const FPS_DE: u16 = 2;
+pub const FPS_ZE: u16 = 4;
+pub const FPS_OE: u16 = 8;
+pub const FPS_UE: u16 = 16;
+pub const FPS_PE: u16 = 32;
+pub const FPS_SF: u16 = 64;
+pub const FPS_ES: u16 = 128;
+pub const FPS_C0: u16 = 256;
+pub const FPS_C1: u16 = 512;
+pub const FPS_C2: u16 = 1024;
+pub const FPS_TOS: u16 = 14336;
+pub const FPS_TOS_SHIFT: u16 = 11;
+pub const FPS_C3: u16 = 16384;
+pub const FPS_BUSY: u16 = 32768;
+pub const FPE_INTOVF_TRAP: ::c_int = 1;
+pub const FPE_INTDIV_FAULT: ::c_int = 2;
+pub const FPE_FLTOVF_FAULT: ::c_int = 3;
+pub const FPE_FLTDIV_FAULT: ::c_int = 4;
+pub const FPE_FLTUND_FAULT: ::c_int = 5;
+pub const FPE_SUBRNG_FAULT: ::c_int = 7;
+pub const FPE_FLTDNR_FAULT: ::c_int = 8;
+pub const FPE_FLTINX_FAULT: ::c_int = 9;
+pub const FPE_EMERR_FAULT: ::c_int = 10;
+pub const FPE_EMBND_FAULT: ::c_int = 11;
+pub const ILL_INVOPR_FAULT: ::c_int = 1;
+pub const ILL_STACK_FAULT: ::c_int = 2;
+pub const ILL_FPEOPR_FAULT: ::c_int = 3;
+pub const DBG_SINGLE_TRAP: ::c_int = 1;
+pub const DBG_BRKPNT_FAULT: ::c_int = 2;
+pub const __NGREG: usize = 19;
+pub const NGREG: usize = 19;
+
+// bits/sigstack.h
+pub const MINSIGSTKSZ: usize = 8192;
+pub const SIGSTKSZ: usize = 40960;
+
+// sys/stat.h
+pub const __S_IFMT: mode_t = 61440;
+pub const __S_IFDIR: mode_t = 16384;
+pub const __S_IFCHR: mode_t = 8192;
+pub const __S_IFBLK: mode_t = 24576;
+pub const __S_IFREG: mode_t = 32768;
+pub const __S_IFLNK: mode_t = 40960;
+pub const __S_IFSOCK: mode_t = 49152;
+pub const __S_IFIFO: mode_t = 4096;
+pub const __S_ISUID: mode_t = 2048;
+pub const __S_ISGID: mode_t = 1024;
+pub const __S_ISVTX: mode_t = 512;
+pub const __S_IREAD: mode_t = 256;
+pub const __S_IWRITE: mode_t = 128;
+pub const __S_IEXEC: mode_t = 64;
+pub const S_INOCACHE: mode_t = 65536;
+pub const S_IUSEUNK: mode_t = 131072;
+pub const S_IUNKNOWN: mode_t = 1835008;
+pub const S_IUNKSHIFT: mode_t = 12;
+pub const S_IPTRANS: mode_t = 2097152;
+pub const S_IATRANS: mode_t = 4194304;
+pub const S_IROOT: mode_t = 8388608;
+pub const S_ITRANS: mode_t = 14680064;
+pub const S_IMMAP0: mode_t = 16777216;
+pub const CMASK: mode_t = 18;
+pub const UF_SETTABLE: ::c_uint = 65535;
+pub const UF_NODUMP: ::c_uint = 1;
+pub const UF_IMMUTABLE: ::c_uint = 2;
+pub const UF_APPEND: ::c_uint = 4;
+pub const UF_OPAQUE: ::c_uint = 8;
+pub const UF_NOUNLINK: ::c_uint = 16;
+pub const SF_SETTABLE: ::c_uint = 4294901760;
+pub const SF_ARCHIVED: ::c_uint = 65536;
+pub const SF_IMMUTABLE: ::c_uint = 131072;
+pub const SF_APPEND: ::c_uint = 262144;
+pub const SF_NOUNLINK: ::c_uint = 1048576;
+pub const SF_SNAPSHOT: ::c_uint = 2097152;
+pub const UTIME_NOW: ::c_long = -1;
+pub const UTIME_OMIT: ::c_long = -2;
+pub const S_IFMT: mode_t = 61440;
+pub const S_IFDIR: mode_t = 16384;
+pub const S_IFCHR: mode_t = 8192;
+pub const S_IFBLK: mode_t = 24576;
+pub const S_IFREG: mode_t = 32768;
+pub const S_IFIFO: mode_t = 4096;
+pub const S_IFLNK: mode_t = 40960;
+pub const S_IFSOCK: mode_t = 49152;
+pub const S_ISUID: mode_t = 2048;
+pub const S_ISGID: mode_t = 1024;
+pub const S_ISVTX: mode_t = 512;
+pub const S_IRUSR: mode_t = 256;
+pub const S_IWUSR: mode_t = 128;
+pub const S_IXUSR: mode_t = 64;
+pub const S_IRWXU: mode_t = 448;
+pub const S_IREAD: mode_t = 256;
+pub const S_IWRITE: mode_t = 128;
+pub const S_IEXEC: mode_t = 64;
+pub const S_IRGRP: mode_t = 32;
+pub const S_IWGRP: mode_t = 16;
+pub const S_IXGRP: mode_t = 8;
+pub const S_IRWXG: mode_t = 56;
+pub const S_IROTH: mode_t = 4;
+pub const S_IWOTH: mode_t = 2;
+pub const S_IXOTH: mode_t = 1;
+pub const S_IRWXO: mode_t = 7;
+pub const ACCESSPERMS: mode_t = 511;
+pub const ALLPERMS: mode_t = 4095;
+pub const DEFFILEMODE: mode_t = 438;
+pub const S_BLKSIZE: usize = 512;
+pub const STATX_TYPE: ::c_uint = 1;
+pub const STATX_MODE: ::c_uint = 2;
+pub const STATX_NLINK: ::c_uint = 4;
+pub const STATX_UID: ::c_uint = 8;
+pub const STATX_GID: ::c_uint = 16;
+pub const STATX_ATIME: ::c_uint = 32;
+pub const STATX_MTIME: ::c_uint = 64;
+pub const STATX_CTIME: ::c_uint = 128;
+pub const STATX_INO: ::c_uint = 256;
+pub const STATX_SIZE: ::c_uint = 512;
+pub const STATX_BLOCKS: ::c_uint = 1024;
+pub const STATX_BASIC_STATS: ::c_uint = 2047;
+pub const STATX_ALL: ::c_uint = 4095;
+pub const STATX_BTIME: ::c_uint = 2048;
+pub const STATX_MNT_ID: ::c_uint = 4096;
+pub const STATX_DIOALIGN: ::c_uint = 8192;
+pub const STATX__RESERVED: ::c_uint = 2147483648;
+pub const STATX_ATTR_COMPRESSED: ::c_uint = 4;
+pub const STATX_ATTR_IMMUTABLE: ::c_uint = 16;
+pub const STATX_ATTR_APPEND: ::c_uint = 32;
+pub const STATX_ATTR_NODUMP: ::c_uint = 64;
+pub const STATX_ATTR_ENCRYPTED: ::c_uint = 2048;
+pub const STATX_ATTR_AUTOMOUNT: ::c_uint = 4096;
+pub const STATX_ATTR_MOUNT_ROOT: ::c_uint = 8192;
+pub const STATX_ATTR_VERITY: ::c_uint = 1048576;
+pub const STATX_ATTR_DAX: ::c_uint = 2097152;
+
+// sys/ioctl.h
+pub const TIOCM_LE: ::c_int = 1;
+pub const TIOCM_DTR: ::c_int = 2;
+pub const TIOCM_RTS: ::c_int = 4;
+pub const TIOCM_ST: ::c_int = 8;
+pub const TIOCM_SR: ::c_int = 16;
+pub const TIOCM_CTS: ::c_int = 32;
+pub const TIOCM_CAR: ::c_int = 64;
+pub const TIOCM_CD: ::c_int = 64;
+pub const TIOCM_RNG: ::c_int = 128;
+pub const TIOCM_RI: ::c_int = 128;
+pub const TIOCM_DSR: ::c_int = 256;
+pub const TIOCPKT_DATA: ::c_int = 0;
+pub const TIOCPKT_FLUSHREAD: ::c_int = 1;
+pub const TIOCPKT_FLUSHWRITE: ::c_int = 2;
+pub const TIOCPKT_STOP: ::c_int = 4;
+pub const TIOCPKT_START: ::c_int = 8;
+pub const TIOCPKT_NOSTOP: ::c_int = 16;
+pub const TIOCPKT_DOSTOP: ::c_int = 32;
+pub const TIOCPKT_IOCTL: ::c_int = 64;
+pub const TTYDISC: ::c_int = 0;
+pub const TABLDISC: ::c_int = 3;
+pub const SLIPDISC: ::c_int = 4;
+pub const TANDEM: tcflag_t = 1;
+pub const CBREAK: tcflag_t = 2;
+pub const LCASE: tcflag_t = 4;
+pub const CRMOD: tcflag_t = 16;
+pub const RAW: tcflag_t = 32;
+pub const ODDP: tcflag_t = 64;
+pub const EVENP: tcflag_t = 128;
+pub const ANYP: tcflag_t = 192;
+pub const NLDELAY: tcflag_t = 768;
+pub const NL2: tcflag_t = 512;
+pub const NL3: tcflag_t = 768;
+pub const TBDELAY: tcflag_t = 3072;
+pub const XTABS: tcflag_t = 3072;
+pub const CRDELAY: tcflag_t = 12288;
+pub const VTDELAY: tcflag_t = 16384;
+pub const BSDELAY: tcflag_t = 32768;
+pub const ALLDELAY: tcflag_t = 65280;
+pub const CRTBS: tcflag_t = 65536;
+pub const PRTERA: tcflag_t = 131072;
+pub const CRTERA: tcflag_t = 262144;
+pub const TILDE: tcflag_t = 524288;
+pub const LITOUT: tcflag_t = 2097152;
+pub const NOHANG: tcflag_t = 16777216;
+pub const L001000: tcflag_t = 33554432;
+pub const CRTKIL: tcflag_t = 67108864;
+pub const PASS8: tcflag_t = 134217728;
+pub const CTLECH: tcflag_t = 268435456;
+pub const DECCTQ: tcflag_t = 1073741824;
+
+pub const FIONBIO: ::c_ulong = 0xa008007e;
+pub const FIONREAD: ::c_ulong = 0x6008007f;
+pub const TIOCSWINSZ: ::c_ulong = 0x90200767;
+pub const TIOCGWINSZ: ::c_ulong = 0x50200768;
+pub const TIOCEXCL: ::c_ulong = 0x70d;
+pub const TIOCNXCL: ::c_ulong = 0x70e;
+pub const TIOCSCTTY: ::c_ulong = 0x761;
+
+pub const FIOCLEX: ::c_ulong = 1;
+
+// fcntl.h
+pub const O_EXEC: ::c_int = 4;
+pub const O_NORW: ::c_int = 0;
+pub const O_RDONLY: ::c_int = 1;
+pub const O_WRONLY: ::c_int = 2;
+pub const O_RDWR: ::c_int = 3;
+pub const O_ACCMODE: ::c_int = 3;
+pub const O_LARGEFILE: ::c_int = 0;
+pub const O_CREAT: ::c_int = 16;
+pub const O_EXCL: ::c_int = 32;
+pub const O_NOLINK: ::c_int = 64;
+pub const O_NOTRANS: ::c_int = 128;
+pub const O_NOFOLLOW: ::c_int = 1048576;
+pub const O_DIRECTORY: ::c_int = 2097152;
+pub const O_APPEND: ::c_int = 256;
+pub const O_ASYNC: ::c_int = 512;
+pub const O_FSYNC: ::c_int = 1024;
+pub const O_SYNC: ::c_int = 1024;
+pub const O_NOATIME: ::c_int = 2048;
+pub const O_SHLOCK: ::c_int = 131072;
+pub const O_EXLOCK: ::c_int = 262144;
+pub const O_DSYNC: ::c_int = 1024;
+pub const O_RSYNC: ::c_int = 1024;
+pub const O_NONBLOCK: ::c_int = 8;
+pub const O_NDELAY: ::c_int = 8;
+pub const O_HURD: ::c_int = 458751;
+pub const O_TRUNC: ::c_int = 65536;
+pub const O_CLOEXEC: ::c_int = 4194304;
+pub const O_IGNORE_CTTY: ::c_int = 524288;
+pub const O_TMPFILE: ::c_int = 8388608;
+pub const O_NOCTTY: ::c_int = 0;
+pub const FREAD: ::c_int = 1;
+pub const FWRITE: ::c_int = 2;
+pub const FASYNC: ::c_int = 512;
+pub const FCREAT: ::c_int = 16;
+pub const FEXCL: ::c_int = 32;
+pub const FTRUNC: ::c_int = 65536;
+pub const FNOCTTY: ::c_int = 0;
+pub const FFSYNC: ::c_int = 1024;
+pub const FSYNC: ::c_int = 1024;
+pub const FAPPEND: ::c_int = 256;
+pub const FNONBLOCK: ::c_int = 8;
+pub const FNDELAY: ::c_int = 8;
+pub const F_DUPFD: ::c_int = 0;
+pub const F_GETFD: ::c_int = 1;
+pub const F_SETFD: ::c_int = 2;
+pub const F_GETFL: ::c_int = 3;
+pub const F_SETFL: ::c_int = 4;
+pub const F_GETOWN: ::c_int = 5;
+pub const F_SETOWN: ::c_int = 6;
+pub const F_GETLK: ::c_int = 7;
+pub const F_SETLK: ::c_int = 8;
+pub const F_SETLKW: ::c_int = 9;
+pub const F_GETLK64: ::c_int = 10;
+pub const F_SETLK64: ::c_int = 11;
+pub const F_SETLKW64: ::c_int = 12;
+pub const F_DUPFD_CLOEXEC: ::c_int = 1030;
+pub const FD_CLOEXEC: ::c_int = 1;
+pub const F_RDLCK: ::c_int = 1;
+pub const F_WRLCK: ::c_int = 2;
+pub const F_UNLCK: ::c_int = 3;
+pub const POSIX_FADV_NORMAL: ::c_int = 0;
+pub const POSIX_FADV_RANDOM: ::c_int = 1;
+pub const POSIX_FADV_SEQUENTIAL: ::c_int = 2;
+pub const POSIX_FADV_WILLNEED: ::c_int = 3;
+pub const POSIX_FADV_DONTNEED: ::c_int = 4;
+pub const POSIX_FADV_NOREUSE: ::c_int = 5;
+pub const AT_FDCWD: ::c_int = -100;
+pub const AT_SYMLINK_NOFOLLOW: ::c_int = 256;
+pub const AT_REMOVEDIR: ::c_int = 512;
+pub const AT_SYMLINK_FOLLOW: ::c_int = 1024;
+pub const AT_NO_AUTOMOUNT: ::c_int = 2048;
+pub const AT_EMPTY_PATH: ::c_int = 4096;
+pub const AT_STATX_SYNC_TYPE: ::c_int = 24576;
+pub const AT_STATX_SYNC_AS_STAT: ::c_int = 0;
+pub const AT_STATX_FORCE_SYNC: ::c_int = 8192;
+pub const AT_STATX_DONT_SYNC: ::c_int = 16384;
+pub const AT_RECURSIVE: ::c_int = 32768;
+pub const AT_EACCESS: ::c_int = 512;
+
+// sys/uio.h
+pub const RWF_HIPRI: ::c_int = 1;
+pub const RWF_DSYNC: ::c_int = 2;
+pub const RWF_SYNC: ::c_int = 4;
+pub const RWF_NOWAIT: ::c_int = 8;
+pub const RWF_APPEND: ::c_int = 16;
+
+// errno.h
+pub const EPERM: ::c_int = 1073741825;
+pub const ENOENT: ::c_int = 1073741826;
+pub const ESRCH: ::c_int = 1073741827;
+pub const EINTR: ::c_int = 1073741828;
+pub const EIO: ::c_int = 1073741829;
+pub const ENXIO: ::c_int = 1073741830;
+pub const E2BIG: ::c_int = 1073741831;
+pub const ENOEXEC: ::c_int = 1073741832;
+pub const EBADF: ::c_int = 1073741833;
+pub const ECHILD: ::c_int = 1073741834;
+pub const EDEADLK: ::c_int = 1073741835;
+pub const ENOMEM: ::c_int = 1073741836;
+pub const EACCES: ::c_int = 1073741837;
+pub const EFAULT: ::c_int = 1073741838;
+pub const ENOTBLK: ::c_int = 1073741839;
+pub const EBUSY: ::c_int = 1073741840;
+pub const EEXIST: ::c_int = 1073741841;
+pub const EXDEV: ::c_int = 1073741842;
+pub const ENODEV: ::c_int = 1073741843;
+pub const ENOTDIR: ::c_int = 1073741844;
+pub const EISDIR: ::c_int = 1073741845;
+pub const EINVAL: ::c_int = 1073741846;
+pub const EMFILE: ::c_int = 1073741848;
+pub const ENFILE: ::c_int = 1073741847;
+pub const ENOTTY: ::c_int = 1073741849;
+pub const ETXTBSY: ::c_int = 1073741850;
+pub const EFBIG: ::c_int = 1073741851;
+pub const ENOSPC: ::c_int = 1073741852;
+pub const ESPIPE: ::c_int = 1073741853;
+pub const EROFS: ::c_int = 1073741854;
+pub const EMLINK: ::c_int = 1073741855;
+pub const EPIPE: ::c_int = 1073741856;
+pub const EDOM: ::c_int = 1073741857;
+pub const ERANGE: ::c_int = 1073741858;
+pub const EAGAIN: ::c_int = 1073741859;
+pub const EWOULDBLOCK: ::c_int = 1073741859;
+pub const EINPROGRESS: ::c_int = 1073741860;
+pub const EALREADY: ::c_int = 1073741861;
+pub const ENOTSOCK: ::c_int = 1073741862;
+pub const EMSGSIZE: ::c_int = 1073741864;
+pub const EPROTOTYPE: ::c_int = 1073741865;
+pub const ENOPROTOOPT: ::c_int = 1073741866;
+pub const EPROTONOSUPPORT: ::c_int = 1073741867;
+pub const ESOCKTNOSUPPORT: ::c_int = 1073741868;
+pub const EOPNOTSUPP: ::c_int = 1073741869;
+pub const EPFNOSUPPORT: ::c_int = 1073741870;
+pub const EAFNOSUPPORT: ::c_int = 1073741871;
+pub const EADDRINUSE: ::c_int = 1073741872;
+pub const EADDRNOTAVAIL: ::c_int = 1073741873;
+pub const ENETDOWN: ::c_int = 1073741874;
+pub const ENETUNREACH: ::c_int = 1073741875;
+pub const ENETRESET: ::c_int = 1073741876;
+pub const ECONNABORTED: ::c_int = 1073741877;
+pub const ECONNRESET: ::c_int = 1073741878;
+pub const ENOBUFS: ::c_int = 1073741879;
+pub const EISCONN: ::c_int = 1073741880;
+pub const ENOTCONN: ::c_int = 1073741881;
+pub const EDESTADDRREQ: ::c_int = 1073741863;
+pub const ESHUTDOWN: ::c_int = 1073741882;
+pub const ETOOMANYREFS: ::c_int = 1073741883;
+pub const ETIMEDOUT: ::c_int = 1073741884;
+pub const ECONNREFUSED: ::c_int = 1073741885;
+pub const ELOOP: ::c_int = 1073741886;
+pub const ENAMETOOLONG: ::c_int = 1073741887;
+pub const EHOSTDOWN: ::c_int = 1073741888;
+pub const EHOSTUNREACH: ::c_int = 1073741889;
+pub const ENOTEMPTY: ::c_int = 1073741890;
+pub const EPROCLIM: ::c_int = 1073741891;
+pub const EUSERS: ::c_int = 1073741892;
+pub const EDQUOT: ::c_int = 1073741893;
+pub const ESTALE: ::c_int = 1073741894;
+pub const EREMOTE: ::c_int = 1073741895;
+pub const EBADRPC: ::c_int = 1073741896;
+pub const ERPCMISMATCH: ::c_int = 1073741897;
+pub const EPROGUNAVAIL: ::c_int = 1073741898;
+pub const EPROGMISMATCH: ::c_int = 1073741899;
+pub const EPROCUNAVAIL: ::c_int = 1073741900;
+pub const ENOLCK: ::c_int = 1073741901;
+pub const EFTYPE: ::c_int = 1073741903;
+pub const EAUTH: ::c_int = 1073741904;
+pub const ENEEDAUTH: ::c_int = 1073741905;
+pub const ENOSYS: ::c_int = 1073741902;
+pub const ELIBEXEC: ::c_int = 1073741907;
+pub const ENOTSUP: ::c_int = 1073741942;
+pub const EILSEQ: ::c_int = 1073741930;
+pub const EBACKGROUND: ::c_int = 1073741924;
+pub const EDIED: ::c_int = 1073741925;
+pub const EGREGIOUS: ::c_int = 1073741927;
+pub const EIEIO: ::c_int = 1073741928;
+pub const EGRATUITOUS: ::c_int = 1073741929;
+pub const EBADMSG: ::c_int = 1073741931;
+pub const EIDRM: ::c_int = 1073741932;
+pub const EMULTIHOP: ::c_int = 1073741933;
+pub const ENODATA: ::c_int = 1073741934;
+pub const ENOLINK: ::c_int = 1073741935;
+pub const ENOMSG: ::c_int = 1073741936;
+pub const ENOSR: ::c_int = 1073741937;
+pub const ENOSTR: ::c_int = 1073741938;
+pub const EOVERFLOW: ::c_int = 1073741939;
+pub const EPROTO: ::c_int = 1073741940;
+pub const ETIME: ::c_int = 1073741941;
+pub const ECANCELED: ::c_int = 1073741943;
+pub const EOWNERDEAD: ::c_int = 1073741944;
+pub const ENOTRECOVERABLE: ::c_int = 1073741945;
+pub const EMACH_SEND_IN_PROGRESS: ::c_int = 268435457;
+pub const EMACH_SEND_INVALID_DATA: ::c_int = 268435458;
+pub const EMACH_SEND_INVALID_DEST: ::c_int = 268435459;
+pub const EMACH_SEND_TIMED_OUT: ::c_int = 268435460;
+pub const EMACH_SEND_WILL_NOTIFY: ::c_int = 268435461;
+pub const EMACH_SEND_NOTIFY_IN_PROGRESS: ::c_int = 268435462;
+pub const EMACH_SEND_INTERRUPTED: ::c_int = 268435463;
+pub const EMACH_SEND_MSG_TOO_SMALL: ::c_int = 268435464;
+pub const EMACH_SEND_INVALID_REPLY: ::c_int = 268435465;
+pub const EMACH_SEND_INVALID_RIGHT: ::c_int = 268435466;
+pub const EMACH_SEND_INVALID_NOTIFY: ::c_int = 268435467;
+pub const EMACH_SEND_INVALID_MEMORY: ::c_int = 268435468;
+pub const EMACH_SEND_NO_BUFFER: ::c_int = 268435469;
+pub const EMACH_SEND_NO_NOTIFY: ::c_int = 268435470;
+pub const EMACH_SEND_INVALID_TYPE: ::c_int = 268435471;
+pub const EMACH_SEND_INVALID_HEADER: ::c_int = 268435472;
+pub const EMACH_RCV_IN_PROGRESS: ::c_int = 268451841;
+pub const EMACH_RCV_INVALID_NAME: ::c_int = 268451842;
+pub const EMACH_RCV_TIMED_OUT: ::c_int = 268451843;
+pub const EMACH_RCV_TOO_LARGE: ::c_int = 268451844;
+pub const EMACH_RCV_INTERRUPTED: ::c_int = 268451845;
+pub const EMACH_RCV_PORT_CHANGED: ::c_int = 268451846;
+pub const EMACH_RCV_INVALID_NOTIFY: ::c_int = 268451847;
+pub const EMACH_RCV_INVALID_DATA: ::c_int = 268451848;
+pub const EMACH_RCV_PORT_DIED: ::c_int = 268451849;
+pub const EMACH_RCV_IN_SET: ::c_int = 268451850;
+pub const EMACH_RCV_HEADER_ERROR: ::c_int = 268451851;
+pub const EMACH_RCV_BODY_ERROR: ::c_int = 268451852;
+pub const EKERN_INVALID_ADDRESS: ::c_int = 1;
+pub const EKERN_PROTECTION_FAILURE: ::c_int = 2;
+pub const EKERN_NO_SPACE: ::c_int = 3;
+pub const EKERN_INVALID_ARGUMENT: ::c_int = 4;
+pub const EKERN_FAILURE: ::c_int = 5;
+pub const EKERN_RESOURCE_SHORTAGE: ::c_int = 6;
+pub const EKERN_NOT_RECEIVER: ::c_int = 7;
+pub const EKERN_NO_ACCESS: ::c_int = 8;
+pub const EKERN_MEMORY_FAILURE: ::c_int = 9;
+pub const EKERN_MEMORY_ERROR: ::c_int = 10;
+pub const EKERN_NOT_IN_SET: ::c_int = 12;
+pub const EKERN_NAME_EXISTS: ::c_int = 13;
+pub const EKERN_ABORTED: ::c_int = 14;
+pub const EKERN_INVALID_NAME: ::c_int = 15;
+pub const EKERN_INVALID_TASK: ::c_int = 16;
+pub const EKERN_INVALID_RIGHT: ::c_int = 17;
+pub const EKERN_INVALID_VALUE: ::c_int = 18;
+pub const EKERN_UREFS_OVERFLOW: ::c_int = 19;
+pub const EKERN_INVALID_CAPABILITY: ::c_int = 20;
+pub const EKERN_RIGHT_EXISTS: ::c_int = 21;
+pub const EKERN_INVALID_HOST: ::c_int = 22;
+pub const EKERN_MEMORY_PRESENT: ::c_int = 23;
+pub const EKERN_WRITE_PROTECTION_FAILURE: ::c_int = 24;
+pub const EKERN_TERMINATED: ::c_int = 26;
+pub const EKERN_TIMEDOUT: ::c_int = 27;
+pub const EKERN_INTERRUPTED: ::c_int = 28;
+pub const EMIG_TYPE_ERROR: ::c_int = -300;
+pub const EMIG_REPLY_MISMATCH: ::c_int = -301;
+pub const EMIG_REMOTE_ERROR: ::c_int = -302;
+pub const EMIG_BAD_ID: ::c_int = -303;
+pub const EMIG_BAD_ARGUMENTS: ::c_int = -304;
+pub const EMIG_NO_REPLY: ::c_int = -305;
+pub const EMIG_EXCEPTION: ::c_int = -306;
+pub const EMIG_ARRAY_TOO_LARGE: ::c_int = -307;
+pub const EMIG_SERVER_DIED: ::c_int = -308;
+pub const EMIG_DESTROY_REQUEST: ::c_int = -309;
+pub const ED_IO_ERROR: ::c_int = 2500;
+pub const ED_WOULD_BLOCK: ::c_int = 2501;
+pub const ED_NO_SUCH_DEVICE: ::c_int = 2502;
+pub const ED_ALREADY_OPEN: ::c_int = 2503;
+pub const ED_DEVICE_DOWN: ::c_int = 2504;
+pub const ED_INVALID_OPERATION: ::c_int = 2505;
+pub const ED_INVALID_RECNUM: ::c_int = 2506;
+pub const ED_INVALID_SIZE: ::c_int = 2507;
+pub const ED_NO_MEMORY: ::c_int = 2508;
+pub const ED_READ_ONLY: ::c_int = 2509;
+pub const _HURD_ERRNOS: usize = 122;
+
+// sched.h
+pub const SCHED_OTHER: ::c_int = 0;
+pub const SCHED_FIFO: ::c_int = 1;
+pub const SCHED_RR: ::c_int = 2;
+pub const _BITS_TYPES_STRUCT_SCHED_PARAM: usize = 1;
+pub const __CPU_SETSIZE: usize = 1024;
+pub const CPU_SETSIZE: usize = 1024;
+
+// pthread.h
+pub const PTHREAD_SPINLOCK_INITIALIZER: ::c_int = 0;
+pub const PTHREAD_CANCEL_DISABLE: ::c_int = 0;
+pub const PTHREAD_CANCEL_ENABLE: ::c_int = 1;
+pub const PTHREAD_CANCEL_DEFERRED: ::c_int = 0;
+pub const PTHREAD_CANCEL_ASYNCHRONOUS: ::c_int = 1;
+pub const PTHREAD_BARRIER_SERIAL_THREAD: ::c_int = -1;
+
+// netinet/tcp.h
+pub const TCP_NODELAY: ::c_int = 1;
+pub const TCP_MAXSEG: ::c_int = 2;
+pub const TCP_CORK: ::c_int = 3;
+pub const TCP_KEEPIDLE: ::c_int = 4;
+pub const TCP_KEEPINTVL: ::c_int = 5;
+pub const TCP_KEEPCNT: ::c_int = 6;
+pub const TCP_SYNCNT: ::c_int = 7;
+pub const TCP_LINGER2: ::c_int = 8;
+pub const TCP_DEFER_ACCEPT: ::c_int = 9;
+pub const TCP_WINDOW_CLAMP: ::c_int = 10;
+pub const TCP_INFO: ::c_int = 11;
+pub const TCP_QUICKACK: ::c_int = 12;
+pub const TCP_CONGESTION: ::c_int = 13;
+pub const TCP_MD5SIG: ::c_int = 14;
+pub const TCP_COOKIE_TRANSACTIONS: ::c_int = 15;
+pub const TCP_THIN_LINEAR_TIMEOUTS: ::c_int = 16;
+pub const TCP_THIN_DUPACK: ::c_int = 17;
+pub const TCP_USER_TIMEOUT: ::c_int = 18;
+pub const TCP_REPAIR: ::c_int = 19;
+pub const TCP_REPAIR_QUEUE: ::c_int = 20;
+pub const TCP_QUEUE_SEQ: ::c_int = 21;
+pub const TCP_REPAIR_OPTIONS: ::c_int = 22;
+pub const TCP_FASTOPEN: ::c_int = 23;
+pub const TCP_TIMESTAMP: ::c_int = 24;
+pub const TCP_NOTSENT_LOWAT: ::c_int = 25;
+pub const TCP_CC_INFO: ::c_int = 26;
+pub const TCP_SAVE_SYN: ::c_int = 27;
+pub const TCP_SAVED_SYN: ::c_int = 28;
+pub const TCP_REPAIR_WINDOW: ::c_int = 29;
+pub const TCP_FASTOPEN_CONNECT: ::c_int = 30;
+pub const TCP_ULP: ::c_int = 31;
+pub const TCP_MD5SIG_EXT: ::c_int = 32;
+pub const TCP_FASTOPEN_KEY: ::c_int = 33;
+pub const TCP_FASTOPEN_NO_COOKIE: ::c_int = 34;
+pub const TCP_ZEROCOPY_RECEIVE: ::c_int = 35;
+pub const TCP_INQ: ::c_int = 36;
+pub const TCP_CM_INQ: ::c_int = 36;
+pub const TCP_TX_DELAY: ::c_int = 37;
+pub const TCP_REPAIR_ON: ::c_int = 1;
+pub const TCP_REPAIR_OFF: ::c_int = 0;
+pub const TCP_REPAIR_OFF_NO_WP: ::c_int = -1;
+
+// stdint.h
+pub const INT8_MIN: i8 = -128;
+pub const INT16_MIN: i16 = -32768;
+pub const INT32_MIN: i32 = -2147483648;
+pub const INT8_MAX: i8 = 127;
+pub const INT16_MAX: i16 = 32767;
+pub const INT32_MAX: i32 = 2147483647;
+pub const UINT8_MAX: u8 = 255;
+pub const UINT16_MAX: u16 = 65535;
+pub const UINT32_MAX: u32 = 4294967295;
+pub const INT_LEAST8_MIN: int_least8_t = -128;
+pub const INT_LEAST16_MIN: int_least16_t = -32768;
+pub const INT_LEAST32_MIN: int_least32_t = -2147483648;
+pub const INT_LEAST8_MAX: int_least8_t = 127;
+pub const INT_LEAST16_MAX: int_least16_t = 32767;
+pub const INT_LEAST32_MAX: int_least32_t = 2147483647;
+pub const UINT_LEAST8_MAX: uint_least8_t = 255;
+pub const UINT_LEAST16_MAX: uint_least16_t = 65535;
+pub const UINT_LEAST32_MAX: uint_least32_t = 4294967295;
+pub const INT_FAST8_MIN: int_fast8_t = -128;
+pub const INT_FAST16_MIN: int_fast16_t = -2147483648;
+pub const INT_FAST32_MIN: int_fast32_t = -2147483648;
+pub const INT_FAST8_MAX: int_fast8_t = 127;
+pub const INT_FAST16_MAX: int_fast16_t = 2147483647;
+pub const INT_FAST32_MAX: int_fast32_t = 2147483647;
+pub const UINT_FAST8_MAX: uint_fast8_t = 255;
+pub const UINT_FAST16_MAX: uint_fast16_t = 4294967295;
+pub const UINT_FAST32_MAX: uint_fast32_t = 4294967295;
+pub const INTPTR_MIN: __intptr_t = -2147483648;
+pub const INTPTR_MAX: __intptr_t = 2147483647;
+pub const UINTPTR_MAX: usize = 4294967295;
+pub const PTRDIFF_MIN: __ptrdiff_t = -2147483648;
+pub const PTRDIFF_MAX: __ptrdiff_t = 2147483647;
+pub const SIG_ATOMIC_MIN: __sig_atomic_t = -2147483648;
+pub const SIG_ATOMIC_MAX: __sig_atomic_t = 2147483647;
+pub const SIZE_MAX: usize = 4294967295;
+pub const WINT_MIN: wint_t = 0;
+pub const WINT_MAX: wint_t = 4294967295;
+pub const INT8_WIDTH: usize = 8;
+pub const UINT8_WIDTH: usize = 8;
+pub const INT16_WIDTH: usize = 16;
+pub const UINT16_WIDTH: usize = 16;
+pub const INT32_WIDTH: usize = 32;
+pub const UINT32_WIDTH: usize = 32;
+pub const INT64_WIDTH: usize = 64;
+pub const UINT64_WIDTH: usize = 64;
+pub const INT_LEAST8_WIDTH: usize = 8;
+pub const UINT_LEAST8_WIDTH: usize = 8;
+pub const INT_LEAST16_WIDTH: usize = 16;
+pub const UINT_LEAST16_WIDTH: usize = 16;
+pub const INT_LEAST32_WIDTH: usize = 32;
+pub const UINT_LEAST32_WIDTH: usize = 32;
+pub const INT_LEAST64_WIDTH: usize = 64;
+pub const UINT_LEAST64_WIDTH: usize = 64;
+pub const INT_FAST8_WIDTH: usize = 8;
+pub const UINT_FAST8_WIDTH: usize = 8;
+pub const INT_FAST16_WIDTH: usize = 32;
+pub const UINT_FAST16_WIDTH: usize = 32;
+pub const INT_FAST32_WIDTH: usize = 32;
+pub const UINT_FAST32_WIDTH: usize = 32;
+pub const INT_FAST64_WIDTH: usize = 64;
+pub const UINT_FAST64_WIDTH: usize = 64;
+pub const INTPTR_WIDTH: usize = 32;
+pub const UINTPTR_WIDTH: usize = 32;
+pub const INTMAX_WIDTH: usize = 64;
+pub const UINTMAX_WIDTH: usize = 64;
+pub const PTRDIFF_WIDTH: usize = 32;
+pub const SIG_ATOMIC_WIDTH: usize = 32;
+pub const SIZE_WIDTH: usize = 32;
+pub const WCHAR_WIDTH: usize = 32;
+pub const WINT_WIDTH: usize = 32;
+
+pub const TH_FIN: u8 = 1;
+pub const TH_SYN: u8 = 2;
+pub const TH_RST: u8 = 4;
+pub const TH_PUSH: u8 = 8;
+pub const TH_ACK: u8 = 16;
+pub const TH_URG: u8 = 32;
+pub const TCPOPT_EOL: u8 = 0;
+pub const TCPOPT_NOP: u8 = 1;
+pub const TCPOPT_MAXSEG: u8 = 2;
+pub const TCPOLEN_MAXSEG: u8 = 4;
+pub const TCPOPT_WINDOW: u8 = 3;
+pub const TCPOLEN_WINDOW: u8 = 3;
+pub const TCPOPT_SACK_PERMITTED: u8 = 4;
+pub const TCPOLEN_SACK_PERMITTED: u8 = 2;
+pub const TCPOPT_SACK: u8 = 5;
+pub const TCPOPT_TIMESTAMP: u8 = 8;
+pub const TCPOLEN_TIMESTAMP: u8 = 10;
+pub const TCPOLEN_TSTAMP_APPA: u8 = 12;
+pub const TCPOPT_TSTAMP_HDR: u32 = 16844810;
+pub const TCP_MSS: usize = 512;
+pub const TCP_MAXWIN: usize = 65535;
+pub const TCP_MAX_WINSHIFT: usize = 14;
+pub const SOL_TCP: ::c_int = 6;
+pub const TCPI_OPT_TIMESTAMPS: u8 = 1;
+pub const TCPI_OPT_SACK: u8 = 2;
+pub const TCPI_OPT_WSCALE: u8 = 4;
+pub const TCPI_OPT_ECN: u8 = 8;
+pub const TCPI_OPT_ECN_SEEN: u8 = 16;
+pub const TCPI_OPT_SYN_DATA: u8 = 32;
+pub const TCP_MD5SIG_MAXKEYLEN: usize = 80;
+pub const TCP_MD5SIG_FLAG_PREFIX: usize = 1;
+pub const TCP_COOKIE_MIN: usize = 8;
+pub const TCP_COOKIE_MAX: usize = 16;
+pub const TCP_COOKIE_PAIR_SIZE: usize = 32;
+pub const TCP_COOKIE_IN_ALWAYS: ::c_int = 1;
+pub const TCP_COOKIE_OUT_NEVER: ::c_int = 2;
+pub const TCP_S_DATA_IN: ::c_int = 4;
+pub const TCP_S_DATA_OUT: ::c_int = 8;
+pub const TCP_MSS_DEFAULT: usize = 536;
+pub const TCP_MSS_DESIRED: usize = 1220;
+
+// sys/wait.h
+pub const WCOREFLAG: ::c_int = 128;
+pub const WAIT_ANY: pid_t = -1;
+pub const WAIT_MYPGRP: pid_t = 0;
+
+// sys/file.h
+pub const LOCK_SH: ::c_int = 1;
+pub const LOCK_EX: ::c_int = 2;
+pub const LOCK_UN: ::c_int = 8;
+pub const LOCK_NB: ::c_int = 4;
+
+// sys/mman.h
+pub const PROT_NONE: ::c_int = 0;
+pub const PROT_READ: ::c_int = 4;
+pub const PROT_WRITE: ::c_int = 2;
+pub const PROT_EXEC: ::c_int = 1;
+pub const MAP_PRIVATE: ::c_int = 0;
+pub const MAP_FILE: ::c_int = 1;
+pub const MAP_ANON: ::c_int = 2;
+pub const MAP_SHARED: ::c_int = 16;
+pub const MAP_COPY: ::c_int = 32;
+pub const MAP_FIXED: ::c_int = 256;
+pub const MAP_FAILED: *mut ::c_void = !0 as *mut ::c_void;
+pub const MS_SYNC: ::c_int = 0;
+pub const MS_ASYNC: ::c_int = 1;
+pub const MS_INVALIDATE: ::c_int = 2;
+pub const MADV_NORMAL: ::c_int = 0;
+pub const MADV_RANDOM: ::c_int = 1;
+pub const MADV_SEQUENTIAL: ::c_int = 2;
+pub const MADV_WILLNEED: ::c_int = 3;
+pub const MADV_DONTNEED: ::c_int = 4;
+
+// random.h
+pub const GRND_NONBLOCK: ::c_uint = 1;
+pub const GRND_RANDOM: ::c_uint = 2;
+pub const GRND_INSECURE: ::c_uint = 4;
+
+pub const _PC_LINK_MAX: ::c_int = 0;
+pub const _PC_MAX_CANON: ::c_int = 1;
+pub const _PC_MAX_INPUT: ::c_int = 2;
+pub const _PC_NAME_MAX: ::c_int = 3;
+pub const _PC_PATH_MAX: ::c_int = 4;
+pub const _PC_PIPE_BUF: ::c_int = 5;
+pub const _PC_CHOWN_RESTRICTED: ::c_int = 6;
+pub const _PC_NO_TRUNC: ::c_int = 7;
+pub const _PC_VDISABLE: ::c_int = 8;
+pub const _PC_SYNC_IO: ::c_int = 9;
+pub const _PC_ASYNC_IO: ::c_int = 10;
+pub const _PC_PRIO_IO: ::c_int = 11;
+pub const _PC_SOCK_MAXBUF: ::c_int = 12;
+pub const _PC_FILESIZEBITS: ::c_int = 13;
+pub const _PC_REC_INCR_XFER_SIZE: ::c_int = 14;
+pub const _PC_REC_MAX_XFER_SIZE: ::c_int = 15;
+pub const _PC_REC_MIN_XFER_SIZE: ::c_int = 16;
+pub const _PC_REC_XFER_ALIGN: ::c_int = 17;
+pub const _PC_ALLOC_SIZE_MIN: ::c_int = 18;
+pub const _PC_SYMLINK_MAX: ::c_int = 19;
+pub const _PC_2_SYMLINKS: ::c_int = 20;
+pub const _SC_ARG_MAX: ::c_int = 0;
+pub const _SC_CHILD_MAX: ::c_int = 1;
+pub const _SC_CLK_TCK: ::c_int = 2;
+pub const _SC_NGROUPS_MAX: ::c_int = 3;
+pub const _SC_OPEN_MAX: ::c_int = 4;
+pub const _SC_STREAM_MAX: ::c_int = 5;
+pub const _SC_TZNAME_MAX: ::c_int = 6;
+pub const _SC_JOB_CONTROL: ::c_int = 7;
+pub const _SC_SAVED_IDS: ::c_int = 8;
+pub const _SC_REALTIME_SIGNALS: ::c_int = 9;
+pub const _SC_PRIORITY_SCHEDULING: ::c_int = 10;
+pub const _SC_TIMERS: ::c_int = 11;
+pub const _SC_ASYNCHRONOUS_IO: ::c_int = 12;
+pub const _SC_PRIORITIZED_IO: ::c_int = 13;
+pub const _SC_SYNCHRONIZED_IO: ::c_int = 14;
+pub const _SC_FSYNC: ::c_int = 15;
+pub const _SC_MAPPED_FILES: ::c_int = 16;
+pub const _SC_MEMLOCK: ::c_int = 17;
+pub const _SC_MEMLOCK_RANGE: ::c_int = 18;
+pub const _SC_MEMORY_PROTECTION: ::c_int = 19;
+pub const _SC_MESSAGE_PASSING: ::c_int = 20;
+pub const _SC_SEMAPHORES: ::c_int = 21;
+pub const _SC_SHARED_MEMORY_OBJECTS: ::c_int = 22;
+pub const _SC_AIO_LISTIO_MAX: ::c_int = 23;
+pub const _SC_AIO_MAX: ::c_int = 24;
+pub const _SC_AIO_PRIO_DELTA_MAX: ::c_int = 25;
+pub const _SC_DELAYTIMER_MAX: ::c_int = 26;
+pub const _SC_MQ_OPEN_MAX: ::c_int = 27;
+pub const _SC_MQ_PRIO_MAX: ::c_int = 28;
+pub const _SC_VERSION: ::c_int = 29;
+pub const _SC_PAGESIZE: ::c_int = 30;
+pub const _SC_PAGE_SIZE: ::c_int = 30;
+pub const _SC_RTSIG_MAX: ::c_int = 31;
+pub const _SC_SEM_NSEMS_MAX: ::c_int = 32;
+pub const _SC_SEM_VALUE_MAX: ::c_int = 33;
+pub const _SC_SIGQUEUE_MAX: ::c_int = 34;
+pub const _SC_TIMER_MAX: ::c_int = 35;
+pub const _SC_BC_BASE_MAX: ::c_int = 36;
+pub const _SC_BC_DIM_MAX: ::c_int = 37;
+pub const _SC_BC_SCALE_MAX: ::c_int = 38;
+pub const _SC_BC_STRING_MAX: ::c_int = 39;
+pub const _SC_COLL_WEIGHTS_MAX: ::c_int = 40;
+pub const _SC_EQUIV_CLASS_MAX: ::c_int = 41;
+pub const _SC_EXPR_NEST_MAX: ::c_int = 42;
+pub const _SC_LINE_MAX: ::c_int = 43;
+pub const _SC_RE_DUP_MAX: ::c_int = 44;
+pub const _SC_CHARCLASS_NAME_MAX: ::c_int = 45;
+pub const _SC_2_VERSION: ::c_int = 46;
+pub const _SC_2_C_BIND: ::c_int = 47;
+pub const _SC_2_C_DEV: ::c_int = 48;
+pub const _SC_2_FORT_DEV: ::c_int = 49;
+pub const _SC_2_FORT_RUN: ::c_int = 50;
+pub const _SC_2_SW_DEV: ::c_int = 51;
+pub const _SC_2_LOCALEDEF: ::c_int = 52;
+pub const _SC_PII: ::c_int = 53;
+pub const _SC_PII_XTI: ::c_int = 54;
+pub const _SC_PII_SOCKET: ::c_int = 55;
+pub const _SC_PII_INTERNET: ::c_int = 56;
+pub const _SC_PII_OSI: ::c_int = 57;
+pub const _SC_POLL: ::c_int = 58;
+pub const _SC_SELECT: ::c_int = 59;
+pub const _SC_UIO_MAXIOV: ::c_int = 60;
+pub const _SC_IOV_MAX: ::c_int = 60;
+pub const _SC_PII_INTERNET_STREAM: ::c_int = 61;
+pub const _SC_PII_INTERNET_DGRAM: ::c_int = 62;
+pub const _SC_PII_OSI_COTS: ::c_int = 63;
+pub const _SC_PII_OSI_CLTS: ::c_int = 64;
+pub const _SC_PII_OSI_M: ::c_int = 65;
+pub const _SC_T_IOV_MAX: ::c_int = 66;
+pub const _SC_THREADS: ::c_int = 67;
+pub const _SC_THREAD_SAFE_FUNCTIONS: ::c_int = 68;
+pub const _SC_GETGR_R_SIZE_MAX: ::c_int = 69;
+pub const _SC_GETPW_R_SIZE_MAX: ::c_int = 70;
+pub const _SC_LOGIN_NAME_MAX: ::c_int = 71;
+pub const _SC_TTY_NAME_MAX: ::c_int = 72;
+pub const _SC_THREAD_DESTRUCTOR_ITERATIONS: ::c_int = 73;
+pub const _SC_THREAD_KEYS_MAX: ::c_int = 74;
+pub const _SC_THREAD_STACK_MIN: ::c_int = 75;
+pub const _SC_THREAD_THREADS_MAX: ::c_int = 76;
+pub const _SC_THREAD_ATTR_STACKADDR: ::c_int = 77;
+pub const _SC_THREAD_ATTR_STACKSIZE: ::c_int = 78;
+pub const _SC_THREAD_PRIORITY_SCHEDULING: ::c_int = 79;
+pub const _SC_THREAD_PRIO_INHERIT: ::c_int = 80;
+pub const _SC_THREAD_PRIO_PROTECT: ::c_int = 81;
+pub const _SC_THREAD_PROCESS_SHARED: ::c_int = 82;
+pub const _SC_NPROCESSORS_CONF: ::c_int = 83;
+pub const _SC_NPROCESSORS_ONLN: ::c_int = 84;
+pub const _SC_PHYS_PAGES: ::c_int = 85;
+pub const _SC_AVPHYS_PAGES: ::c_int = 86;
+pub const _SC_ATEXIT_MAX: ::c_int = 87;
+pub const _SC_PASS_MAX: ::c_int = 88;
+pub const _SC_XOPEN_VERSION: ::c_int = 89;
+pub const _SC_XOPEN_XCU_VERSION: ::c_int = 90;
+pub const _SC_XOPEN_UNIX: ::c_int = 91;
+pub const _SC_XOPEN_CRYPT: ::c_int = 92;
+pub const _SC_XOPEN_ENH_I18N: ::c_int = 93;
+pub const _SC_XOPEN_SHM: ::c_int = 94;
+pub const _SC_2_CHAR_TERM: ::c_int = 95;
+pub const _SC_2_C_VERSION: ::c_int = 96;
+pub const _SC_2_UPE: ::c_int = 97;
+pub const _SC_XOPEN_XPG2: ::c_int = 98;
+pub const _SC_XOPEN_XPG3: ::c_int = 99;
+pub const _SC_XOPEN_XPG4: ::c_int = 100;
+pub const _SC_CHAR_BIT: ::c_int = 101;
+pub const _SC_CHAR_MAX: ::c_int = 102;
+pub const _SC_CHAR_MIN: ::c_int = 103;
+pub const _SC_INT_MAX: ::c_int = 104;
+pub const _SC_INT_MIN: ::c_int = 105;
+pub const _SC_LONG_BIT: ::c_int = 106;
+pub const _SC_WORD_BIT: ::c_int = 107;
+pub const _SC_MB_LEN_MAX: ::c_int = 108;
+pub const _SC_NZERO: ::c_int = 109;
+pub const _SC_SSIZE_MAX: ::c_int = 110;
+pub const _SC_SCHAR_MAX: ::c_int = 111;
+pub const _SC_SCHAR_MIN: ::c_int = 112;
+pub const _SC_SHRT_MAX: ::c_int = 113;
+pub const _SC_SHRT_MIN: ::c_int = 114;
+pub const _SC_UCHAR_MAX: ::c_int = 115;
+pub const _SC_UINT_MAX: ::c_int = 116;
+pub const _SC_ULONG_MAX: ::c_int = 117;
+pub const _SC_USHRT_MAX: ::c_int = 118;
+pub const _SC_NL_ARGMAX: ::c_int = 119;
+pub const _SC_NL_LANGMAX: ::c_int = 120;
+pub const _SC_NL_MSGMAX: ::c_int = 121;
+pub const _SC_NL_NMAX: ::c_int = 122;
+pub const _SC_NL_SETMAX: ::c_int = 123;
+pub const _SC_NL_TEXTMAX: ::c_int = 124;
+pub const _SC_XBS5_ILP32_OFF32: ::c_int = 125;
+pub const _SC_XBS5_ILP32_OFFBIG: ::c_int = 126;
+pub const _SC_XBS5_LP64_OFF64: ::c_int = 127;
+pub const _SC_XBS5_LPBIG_OFFBIG: ::c_int = 128;
+pub const _SC_XOPEN_LEGACY: ::c_int = 129;
+pub const _SC_XOPEN_REALTIME: ::c_int = 130;
+pub const _SC_XOPEN_REALTIME_THREADS: ::c_int = 131;
+pub const _SC_ADVISORY_INFO: ::c_int = 132;
+pub const _SC_BARRIERS: ::c_int = 133;
+pub const _SC_BASE: ::c_int = 134;
+pub const _SC_C_LANG_SUPPORT: ::c_int = 135;
+pub const _SC_C_LANG_SUPPORT_R: ::c_int = 136;
+pub const _SC_CLOCK_SELECTION: ::c_int = 137;
+pub const _SC_CPUTIME: ::c_int = 138;
+pub const _SC_THREAD_CPUTIME: ::c_int = 139;
+pub const _SC_DEVICE_IO: ::c_int = 140;
+pub const _SC_DEVICE_SPECIFIC: ::c_int = 141;
+pub const _SC_DEVICE_SPECIFIC_R: ::c_int = 142;
+pub const _SC_FD_MGMT: ::c_int = 143;
+pub const _SC_FIFO: ::c_int = 144;
+pub const _SC_PIPE: ::c_int = 145;
+pub const _SC_FILE_ATTRIBUTES: ::c_int = 146;
+pub const _SC_FILE_LOCKING: ::c_int = 147;
+pub const _SC_FILE_SYSTEM: ::c_int = 148;
+pub const _SC_MONOTONIC_CLOCK: ::c_int = 149;
+pub const _SC_MULTI_PROCESS: ::c_int = 150;
+pub const _SC_SINGLE_PROCESS: ::c_int = 151;
+pub const _SC_NETWORKING: ::c_int = 152;
+pub const _SC_READER_WRITER_LOCKS: ::c_int = 153;
+pub const _SC_SPIN_LOCKS: ::c_int = 154;
+pub const _SC_REGEXP: ::c_int = 155;
+pub const _SC_REGEX_VERSION: ::c_int = 156;
+pub const _SC_SHELL: ::c_int = 157;
+pub const _SC_SIGNALS: ::c_int = 158;
+pub const _SC_SPAWN: ::c_int = 159;
+pub const _SC_SPORADIC_SERVER: ::c_int = 160;
+pub const _SC_THREAD_SPORADIC_SERVER: ::c_int = 161;
+pub const _SC_SYSTEM_DATABASE: ::c_int = 162;
+pub const _SC_SYSTEM_DATABASE_R: ::c_int = 163;
+pub const _SC_TIMEOUTS: ::c_int = 164;
+pub const _SC_TYPED_MEMORY_OBJECTS: ::c_int = 165;
+pub const _SC_USER_GROUPS: ::c_int = 166;
+pub const _SC_USER_GROUPS_R: ::c_int = 167;
+pub const _SC_2_PBS: ::c_int = 168;
+pub const _SC_2_PBS_ACCOUNTING: ::c_int = 169;
+pub const _SC_2_PBS_LOCATE: ::c_int = 170;
+pub const _SC_2_PBS_MESSAGE: ::c_int = 171;
+pub const _SC_2_PBS_TRACK: ::c_int = 172;
+pub const _SC_SYMLOOP_MAX: ::c_int = 173;
+pub const _SC_STREAMS: ::c_int = 174;
+pub const _SC_2_PBS_CHECKPOINT: ::c_int = 175;
+pub const _SC_V6_ILP32_OFF32: ::c_int = 176;
+pub const _SC_V6_ILP32_OFFBIG: ::c_int = 177;
+pub const _SC_V6_LP64_OFF64: ::c_int = 178;
+pub const _SC_V6_LPBIG_OFFBIG: ::c_int = 179;
+pub const _SC_HOST_NAME_MAX: ::c_int = 180;
+pub const _SC_TRACE: ::c_int = 181;
+pub const _SC_TRACE_EVENT_FILTER: ::c_int = 182;
+pub const _SC_TRACE_INHERIT: ::c_int = 183;
+pub const _SC_TRACE_LOG: ::c_int = 184;
+pub const _SC_LEVEL1_ICACHE_SIZE: ::c_int = 185;
+pub const _SC_LEVEL1_ICACHE_ASSOC: ::c_int = 186;
+pub const _SC_LEVEL1_ICACHE_LINESIZE: ::c_int = 187;
+pub const _SC_LEVEL1_DCACHE_SIZE: ::c_int = 188;
+pub const _SC_LEVEL1_DCACHE_ASSOC: ::c_int = 189;
+pub const _SC_LEVEL1_DCACHE_LINESIZE: ::c_int = 190;
+pub const _SC_LEVEL2_CACHE_SIZE: ::c_int = 191;
+pub const _SC_LEVEL2_CACHE_ASSOC: ::c_int = 192;
+pub const _SC_LEVEL2_CACHE_LINESIZE: ::c_int = 193;
+pub const _SC_LEVEL3_CACHE_SIZE: ::c_int = 194;
+pub const _SC_LEVEL3_CACHE_ASSOC: ::c_int = 195;
+pub const _SC_LEVEL3_CACHE_LINESIZE: ::c_int = 196;
+pub const _SC_LEVEL4_CACHE_SIZE: ::c_int = 197;
+pub const _SC_LEVEL4_CACHE_ASSOC: ::c_int = 198;
+pub const _SC_LEVEL4_CACHE_LINESIZE: ::c_int = 199;
+pub const _SC_IPV6: ::c_int = 235;
+pub const _SC_RAW_SOCKETS: ::c_int = 236;
+pub const _SC_V7_ILP32_OFF32: ::c_int = 237;
+pub const _SC_V7_ILP32_OFFBIG: ::c_int = 238;
+pub const _SC_V7_LP64_OFF64: ::c_int = 239;
+pub const _SC_V7_LPBIG_OFFBIG: ::c_int = 240;
+pub const _SC_SS_REPL_MAX: ::c_int = 241;
+pub const _SC_TRACE_EVENT_NAME_MAX: ::c_int = 242;
+pub const _SC_TRACE_NAME_MAX: ::c_int = 243;
+pub const _SC_TRACE_SYS_MAX: ::c_int = 244;
+pub const _SC_TRACE_USER_EVENT_MAX: ::c_int = 245;
+pub const _SC_XOPEN_STREAMS: ::c_int = 246;
+pub const _SC_THREAD_ROBUST_PRIO_INHERIT: ::c_int = 247;
+pub const _SC_THREAD_ROBUST_PRIO_PROTECT: ::c_int = 248;
+pub const _SC_MINSIGSTKSZ: ::c_int = 249;
+pub const _SC_SIGSTKSZ: ::c_int = 250;
+
+pub const _CS_PATH: ::c_int = 0;
+pub const _CS_V6_WIDTH_RESTRICTED_ENVS: ::c_int = 1;
+pub const _CS_GNU_LIBC_VERSION: ::c_int = 2;
+pub const _CS_GNU_LIBPTHREAD_VERSION: ::c_int = 3;
+pub const _CS_V5_WIDTH_RESTRICTED_ENVS: ::c_int = 4;
+pub const _CS_V7_WIDTH_RESTRICTED_ENVS: ::c_int = 5;
+pub const _CS_LFS_CFLAGS: ::c_int = 1000;
+pub const _CS_LFS_LDFLAGS: ::c_int = 1001;
+pub const _CS_LFS_LIBS: ::c_int = 1002;
+pub const _CS_LFS_LINTFLAGS: ::c_int = 1003;
+pub const _CS_LFS64_CFLAGS: ::c_int = 1004;
+pub const _CS_LFS64_LDFLAGS: ::c_int = 1005;
+pub const _CS_LFS64_LIBS: ::c_int = 1006;
+pub const _CS_LFS64_LINTFLAGS: ::c_int = 1007;
+pub const _CS_XBS5_ILP32_OFF32_CFLAGS: ::c_int = 1100;
+pub const _CS_XBS5_ILP32_OFF32_LDFLAGS: ::c_int = 1101;
+pub const _CS_XBS5_ILP32_OFF32_LIBS: ::c_int = 1102;
+pub const _CS_XBS5_ILP32_OFF32_LINTFLAGS: ::c_int = 1103;
+pub const _CS_XBS5_ILP32_OFFBIG_CFLAGS: ::c_int = 1104;
+pub const _CS_XBS5_ILP32_OFFBIG_LDFLAGS: ::c_int = 1105;
+pub const _CS_XBS5_ILP32_OFFBIG_LIBS: ::c_int = 1106;
+pub const _CS_XBS5_ILP32_OFFBIG_LINTFLAGS: ::c_int = 1107;
+pub const _CS_XBS5_LP64_OFF64_CFLAGS: ::c_int = 1108;
+pub const _CS_XBS5_LP64_OFF64_LDFLAGS: ::c_int = 1109;
+pub const _CS_XBS5_LP64_OFF64_LIBS: ::c_int = 1110;
+pub const _CS_XBS5_LP64_OFF64_LINTFLAGS: ::c_int = 1111;
+pub const _CS_XBS5_LPBIG_OFFBIG_CFLAGS: ::c_int = 1112;
+pub const _CS_XBS5_LPBIG_OFFBIG_LDFLAGS: ::c_int = 1113;
+pub const _CS_XBS5_LPBIG_OFFBIG_LIBS: ::c_int = 1114;
+pub const _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS: ::c_int = 1115;
+pub const _CS_POSIX_V6_ILP32_OFF32_CFLAGS: ::c_int = 1116;
+pub const _CS_POSIX_V6_ILP32_OFF32_LDFLAGS: ::c_int = 1117;
+pub const _CS_POSIX_V6_ILP32_OFF32_LIBS: ::c_int = 1118;
+pub const _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS: ::c_int = 1119;
+pub const _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS: ::c_int = 1120;
+pub const _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS: ::c_int = 1121;
+pub const _CS_POSIX_V6_ILP32_OFFBIG_LIBS: ::c_int = 1122;
+pub const _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS: ::c_int = 1123;
+pub const _CS_POSIX_V6_LP64_OFF64_CFLAGS: ::c_int = 1124;
+pub const _CS_POSIX_V6_LP64_OFF64_LDFLAGS: ::c_int = 1125;
+pub const _CS_POSIX_V6_LP64_OFF64_LIBS: ::c_int = 1126;
+pub const _CS_POSIX_V6_LP64_OFF64_LINTFLAGS: ::c_int = 1127;
+pub const _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS: ::c_int = 1128;
+pub const _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS: ::c_int = 1129;
+pub const _CS_POSIX_V6_LPBIG_OFFBIG_LIBS: ::c_int = 1130;
+pub const _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS: ::c_int = 1131;
+pub const _CS_POSIX_V7_ILP32_OFF32_CFLAGS: ::c_int = 1132;
+pub const _CS_POSIX_V7_ILP32_OFF32_LDFLAGS: ::c_int = 1133;
+pub const _CS_POSIX_V7_ILP32_OFF32_LIBS: ::c_int = 1134;
+pub const _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS: ::c_int = 1135;
+pub const _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS: ::c_int = 1136;
+pub const _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS: ::c_int = 1137;
+pub const _CS_POSIX_V7_ILP32_OFFBIG_LIBS: ::c_int = 1138;
+pub const _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS: ::c_int = 1139;
+pub const _CS_POSIX_V7_LP64_OFF64_CFLAGS: ::c_int = 1140;
+pub const _CS_POSIX_V7_LP64_OFF64_LDFLAGS: ::c_int = 1141;
+pub const _CS_POSIX_V7_LP64_OFF64_LIBS: ::c_int = 1142;
+pub const _CS_POSIX_V7_LP64_OFF64_LINTFLAGS: ::c_int = 1143;
+pub const _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS: ::c_int = 1144;
+pub const _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS: ::c_int = 1145;
+pub const _CS_POSIX_V7_LPBIG_OFFBIG_LIBS: ::c_int = 1146;
+pub const _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS: ::c_int = 1147;
+pub const _CS_V6_ENV: ::c_int = 1148;
+pub const _CS_V7_ENV: ::c_int = 1149;
+
+pub const PTHREAD_PROCESS_PRIVATE: __pthread_process_shared = 0;
+pub const PTHREAD_PROCESS_SHARED: __pthread_process_shared = 1;
+
+pub const PTHREAD_EXPLICIT_SCHED: __pthread_inheritsched = 0;
+pub const PTHREAD_INHERIT_SCHED: __pthread_inheritsched = 1;
+
+pub const PTHREAD_SCOPE_SYSTEM: __pthread_contentionscope = 0;
+pub const PTHREAD_SCOPE_PROCESS: __pthread_contentionscope = 1;
+
+pub const PTHREAD_CREATE_JOINABLE: __pthread_detachstate = 0;
+pub const PTHREAD_CREATE_DETACHED: __pthread_detachstate = 1;
+
+pub const PTHREAD_PRIO_NONE: __pthread_mutex_protocol = 0;
+pub const PTHREAD_PRIO_INHERIT: __pthread_mutex_protocol = 1;
+pub const PTHREAD_PRIO_PROTECT: __pthread_mutex_protocol = 2;
+
+pub const PTHREAD_MUTEX_TIMED: __pthread_mutex_type = 0;
+pub const PTHREAD_MUTEX_ERRORCHECK: __pthread_mutex_type = 1;
+pub const PTHREAD_MUTEX_RECURSIVE: __pthread_mutex_type = 2;
+
+pub const PTHREAD_MUTEX_STALLED: __pthread_mutex_robustness = 0;
+pub const PTHREAD_MUTEX_ROBUST: __pthread_mutex_robustness = 256;
+
+pub const RLIMIT_CPU: __rlimit_resource = 0;
+pub const RLIMIT_FSIZE: __rlimit_resource = 1;
+pub const RLIMIT_DATA: __rlimit_resource = 2;
+pub const RLIMIT_STACK: __rlimit_resource = 3;
+pub const RLIMIT_CORE: __rlimit_resource = 4;
+pub const RLIMIT_RSS: __rlimit_resource = 5;
+pub const RLIMIT_MEMLOCK: __rlimit_resource = 6;
+pub const RLIMIT_NPROC: __rlimit_resource = 7;
+pub const RLIMIT_OFILE: __rlimit_resource = 8;
+pub const RLIMIT_NOFILE: __rlimit_resource = 8;
+pub const RLIMIT_SBSIZE: __rlimit_resource = 9;
+pub const RLIMIT_AS: __rlimit_resource = 10;
+pub const RLIMIT_VMEM: __rlimit_resource = 10;
+pub const RLIMIT_NLIMITS: __rlimit_resource = 11;
+pub const RLIM_NLIMITS: __rlimit_resource = 11;
+
+pub const RUSAGE_SELF: __rusage_who = 0;
+pub const RUSAGE_CHILDREN: __rusage_who = -1;
+
+pub const PRIO_PROCESS: __priority_which = 0;
+pub const PRIO_PGRP: __priority_which = 1;
+pub const PRIO_USER: __priority_which = 2;
+
+pub const SOCK_STREAM: ::c_int = 1;
+pub const SOCK_DGRAM: ::c_int = 2;
+pub const SOCK_RAW: ::c_int = 3;
+pub const SOCK_RDM: ::c_int = 4;
+pub const SOCK_SEQPACKET: ::c_int = 5;
+pub const SOCK_CLOEXEC: ::c_int = 4194304;
+pub const SOCK_NONBLOCK: ::c_int = 2048;
+
+pub const MSG_OOB: ::c_int = 1;
+pub const MSG_PEEK: ::c_int = 2;
+pub const MSG_DONTROUTE: ::c_int = 4;
+pub const MSG_EOR: ::c_int = 8;
+pub const MSG_TRUNC: ::c_int = 16;
+pub const MSG_CTRUNC: ::c_int = 32;
+pub const MSG_WAITALL: ::c_int = 64;
+pub const MSG_DONTWAIT: ::c_int = 128;
+pub const MSG_NOSIGNAL: ::c_int = 1024;
+
+pub const SCM_RIGHTS: ::c_int = 1;
+pub const SCM_TIMESTAMP: ::c_int = 2;
+pub const SCM_CREDS: ::c_int = 3;
+
+pub const SO_DEBUG: ::c_int = 1;
+pub const SO_ACCEPTCONN: ::c_int = 2;
+pub const SO_REUSEADDR: ::c_int = 4;
+pub const SO_KEEPALIVE: ::c_int = 8;
+pub const SO_DONTROUTE: ::c_int = 16;
+pub const SO_BROADCAST: ::c_int = 32;
+pub const SO_USELOOPBACK: ::c_int = 64;
+pub const SO_LINGER: ::c_int = 128;
+pub const SO_OOBINLINE: ::c_int = 256;
+pub const SO_REUSEPORT: ::c_int = 512;
+pub const SO_SNDBUF: ::c_int = 4097;
+pub const SO_RCVBUF: ::c_int = 4098;
+pub const SO_SNDLOWAT: ::c_int = 4099;
+pub const SO_RCVLOWAT: ::c_int = 4100;
+pub const SO_SNDTIMEO: ::c_int = 4101;
+pub const SO_RCVTIMEO: ::c_int = 4102;
+pub const SO_ERROR: ::c_int = 4103;
+pub const SO_STYLE: ::c_int = 4104;
+pub const SO_TYPE: ::c_int = 4104;
+
+pub const IPPROTO_IP: ::c_int = 0;
+pub const IPPROTO_ICMP: ::c_int = 1;
+pub const IPPROTO_IGMP: ::c_int = 2;
+pub const IPPROTO_IPIP: ::c_int = 4;
+pub const IPPROTO_TCP: ::c_int = 6;
+pub const IPPROTO_EGP: ::c_int = 8;
+pub const IPPROTO_PUP: ::c_int = 12;
+pub const IPPROTO_UDP: ::c_int = 17;
+pub const IPPROTO_IDP: ::c_int = 22;
+pub const IPPROTO_TP: ::c_int = 29;
+pub const IPPROTO_DCCP: ::c_int = 33;
+pub const IPPROTO_IPV6: ::c_int = 41;
+pub const IPPROTO_RSVP: ::c_int = 46;
+pub const IPPROTO_GRE: ::c_int = 47;
+pub const IPPROTO_ESP: ::c_int = 50;
+pub const IPPROTO_AH: ::c_int = 51;
+pub const IPPROTO_MTP: ::c_int = 92;
+pub const IPPROTO_BEETPH: ::c_int = 94;
+pub const IPPROTO_ENCAP: ::c_int = 98;
+pub const IPPROTO_PIM: ::c_int = 103;
+pub const IPPROTO_COMP: ::c_int = 108;
+pub const IPPROTO_L2TP: ::c_int = 115;
+pub const IPPROTO_SCTP: ::c_int = 132;
+pub const IPPROTO_UDPLITE: ::c_int = 136;
+pub const IPPROTO_MPLS: ::c_int = 137;
+pub const IPPROTO_ETHERNET: ::c_int = 143;
+pub const IPPROTO_RAW: ::c_int = 255;
+pub const IPPROTO_MPTCP: ::c_int = 262;
+pub const IPPROTO_MAX: ::c_int = 263;
+
+pub const IPPROTO_HOPOPTS: ::c_int = 0;
+pub const IPPROTO_ROUTING: ::c_int = 43;
+pub const IPPROTO_FRAGMENT: ::c_int = 44;
+pub const IPPROTO_ICMPV6: ::c_int = 58;
+pub const IPPROTO_NONE: ::c_int = 59;
+pub const IPPROTO_DSTOPTS: ::c_int = 60;
+pub const IPPROTO_MH: ::c_int = 135;
+
+pub const IPPORT_ECHO: in_port_t = 7;
+pub const IPPORT_DISCARD: in_port_t = 9;
+pub const IPPORT_SYSTAT: in_port_t = 11;
+pub const IPPORT_DAYTIME: in_port_t = 13;
+pub const IPPORT_NETSTAT: in_port_t = 15;
+pub const IPPORT_FTP: in_port_t = 21;
+pub const IPPORT_TELNET: in_port_t = 23;
+pub const IPPORT_SMTP: in_port_t = 25;
+pub const IPPORT_TIMESERVER: in_port_t = 37;
+pub const IPPORT_NAMESERVER: in_port_t = 42;
+pub const IPPORT_WHOIS: in_port_t = 43;
+pub const IPPORT_MTP: in_port_t = 57;
+pub const IPPORT_TFTP: in_port_t = 69;
+pub const IPPORT_RJE: in_port_t = 77;
+pub const IPPORT_FINGER: in_port_t = 79;
+pub const IPPORT_TTYLINK: in_port_t = 87;
+pub const IPPORT_SUPDUP: in_port_t = 95;
+pub const IPPORT_EXECSERVER: in_port_t = 512;
+pub const IPPORT_LOGINSERVER: in_port_t = 513;
+pub const IPPORT_CMDSERVER: in_port_t = 514;
+pub const IPPORT_EFSSERVER: in_port_t = 520;
+pub const IPPORT_BIFFUDP: in_port_t = 512;
+pub const IPPORT_WHOSERVER: in_port_t = 513;
+pub const IPPORT_ROUTESERVER: in_port_t = 520;
+pub const IPPORT_USERRESERVED: in_port_t = 5000;
+
+pub const DT_UNKNOWN: ::c_uchar = 0;
+pub const DT_FIFO: ::c_uchar = 1;
+pub const DT_CHR: ::c_uchar = 2;
+pub const DT_DIR: ::c_uchar = 4;
+pub const DT_BLK: ::c_uchar = 6;
+pub const DT_REG: ::c_uchar = 8;
+pub const DT_LNK: ::c_uchar = 10;
+pub const DT_SOCK: ::c_uchar = 12;
+pub const DT_WHT: ::c_uchar = 14;
+
+pub const ST_RDONLY: ::c_ulong = 1;
+pub const ST_NOSUID: ::c_ulong = 2;
+pub const ST_NOEXEC: ::c_ulong = 8;
+pub const ST_SYNCHRONOUS: ::c_ulong = 16;
+pub const ST_NOATIME: ::c_ulong = 32;
+pub const ST_RELATIME: ::c_ulong = 64;
+
+pub const RTLD_DI_LMID: ::c_int = 1;
+pub const RTLD_DI_LINKMAP: ::c_int = 2;
+pub const RTLD_DI_CONFIGADDR: ::c_int = 3;
+pub const RTLD_DI_SERINFO: ::c_int = 4;
+pub const RTLD_DI_SERINFOSIZE: ::c_int = 5;
+pub const RTLD_DI_ORIGIN: ::c_int = 6;
+pub const RTLD_DI_PROFILENAME: ::c_int = 7;
+pub const RTLD_DI_PROFILEOUT: ::c_int = 8;
+pub const RTLD_DI_TLS_MODID: ::c_int = 9;
+pub const RTLD_DI_TLS_DATA: ::c_int = 10;
+pub const RTLD_DI_PHDR: ::c_int = 11;
+pub const RTLD_DI_MAX: ::c_int = 11;
+
+pub const SI_ASYNCIO: ::c_int = -4;
+pub const SI_MESGQ: ::c_int = -3;
+pub const SI_TIMER: ::c_int = -2;
+pub const SI_QUEUE: ::c_int = -1;
+pub const SI_USER: ::c_int = 0;
+
+pub const ILL_ILLOPC: ::c_int = 1;
+pub const ILL_ILLOPN: ::c_int = 2;
+pub const ILL_ILLADR: ::c_int = 3;
+pub const ILL_ILLTRP: ::c_int = 4;
+pub const ILL_PRVOPC: ::c_int = 5;
+pub const ILL_PRVREG: ::c_int = 6;
+pub const ILL_COPROC: ::c_int = 7;
+pub const ILL_BADSTK: ::c_int = 8;
+
+pub const FPE_INTDIV: ::c_int = 1;
+pub const FPE_INTOVF: ::c_int = 2;
+pub const FPE_FLTDIV: ::c_int = 3;
+pub const FPE_FLTOVF: ::c_int = 4;
+pub const FPE_FLTUND: ::c_int = 5;
+pub const FPE_FLTRES: ::c_int = 6;
+pub const FPE_FLTINV: ::c_int = 7;
+pub const FPE_FLTSUB: ::c_int = 8;
+
+pub const SEGV_MAPERR: ::c_int = 1;
+pub const SEGV_ACCERR: ::c_int = 2;
+
+pub const BUS_ADRALN: ::c_int = 1;
+pub const BUS_ADRERR: ::c_int = 2;
+pub const BUS_OBJERR: ::c_int = 3;
+
+pub const TRAP_BRKPT: ::c_int = 1;
+pub const TRAP_TRACE: ::c_int = 2;
+
+pub const CLD_EXITED: ::c_int = 1;
+pub const CLD_KILLED: ::c_int = 2;
+pub const CLD_DUMPED: ::c_int = 3;
+pub const CLD_TRAPPED: ::c_int = 4;
+pub const CLD_STOPPED: ::c_int = 5;
+pub const CLD_CONTINUED: ::c_int = 6;
+
+pub const POLL_IN: ::c_int = 1;
+pub const POLL_OUT: ::c_int = 2;
+pub const POLL_MSG: ::c_int = 3;
+pub const POLL_ERR: ::c_int = 4;
+pub const POLL_PRI: ::c_int = 5;
+pub const POLL_HUP: ::c_int = 6;
+
+pub const SIGEV_SIGNAL: ::c_int = 0;
+pub const SIGEV_NONE: ::c_int = 1;
+pub const SIGEV_THREAD: ::c_int = 2;
+
+pub const REG_GS: ::c_uint = 0;
+pub const REG_FS: ::c_uint = 1;
+pub const REG_ES: ::c_uint = 2;
+pub const REG_DS: ::c_uint = 3;
+pub const REG_EDI: ::c_uint = 4;
+pub const REG_ESI: ::c_uint = 5;
+pub const REG_EBP: ::c_uint = 6;
+pub const REG_ESP: ::c_uint = 7;
+pub const REG_EBX: ::c_uint = 8;
+pub const REG_EDX: ::c_uint = 9;
+pub const REG_ECX: ::c_uint = 10;
+pub const REG_EAX: ::c_uint = 11;
+pub const REG_TRAPNO: ::c_uint = 12;
+pub const REG_ERR: ::c_uint = 13;
+pub const REG_EIP: ::c_uint = 14;
+pub const REG_CS: ::c_uint = 15;
+pub const REG_EFL: ::c_uint = 16;
+pub const REG_UESP: ::c_uint = 17;
+pub const REG_SS: ::c_uint = 18;
+
+pub const IOC_VOID: __ioctl_dir = 0;
+pub const IOC_OUT: __ioctl_dir = 1;
+pub const IOC_IN: __ioctl_dir = 2;
+pub const IOC_INOUT: __ioctl_dir = 3;
+
+pub const IOC_8: __ioctl_datum = 0;
+pub const IOC_16: __ioctl_datum = 1;
+pub const IOC_32: __ioctl_datum = 2;
+pub const IOC_64: __ioctl_datum = 3;
+
+pub const TCP_ESTABLISHED: ::c_uint = 1;
+pub const TCP_SYN_SENT: ::c_uint = 2;
+pub const TCP_SYN_RECV: ::c_uint = 3;
+pub const TCP_FIN_WAIT1: ::c_uint = 4;
+pub const TCP_FIN_WAIT2: ::c_uint = 5;
+pub const TCP_TIME_WAIT: ::c_uint = 6;
+pub const TCP_CLOSE: ::c_uint = 7;
+pub const TCP_CLOSE_WAIT: ::c_uint = 8;
+pub const TCP_LAST_ACK: ::c_uint = 9;
+pub const TCP_LISTEN: ::c_uint = 10;
+pub const TCP_CLOSING: ::c_uint = 11;
+
+pub const TCP_CA_Open: tcp_ca_state = 0;
+pub const TCP_CA_Disorder: tcp_ca_state = 1;
+pub const TCP_CA_CWR: tcp_ca_state = 2;
+pub const TCP_CA_Recovery: tcp_ca_state = 3;
+pub const TCP_CA_Loss: tcp_ca_state = 4;
+
+pub const TCP_NO_QUEUE: ::c_uint = 0;
+pub const TCP_RECV_QUEUE: ::c_uint = 1;
+pub const TCP_SEND_QUEUE: ::c_uint = 2;
+pub const TCP_QUEUES_NR: ::c_uint = 3;
+
+pub const P_ALL: idtype_t = 0;
+pub const P_PID: idtype_t = 1;
+pub const P_PGID: idtype_t = 2;
+
+pub const SS_ONSTACK: ::c_int = 1;
+pub const SS_DISABLE: ::c_int = 4;
+
+pub const SHUT_RD: ::c_int = 0;
+pub const SHUT_WR: ::c_int = 1;
+pub const SHUT_RDWR: ::c_int = 2;
+pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t {
+ __lock: 0,
+ __owner_id: 0,
+ __cnt: 0,
+ __shpid: 0,
+ __type: PTHREAD_MUTEX_TIMED as ::c_int,
+ __flags: 0,
+ __reserved1: 0,
+ __reserved2: 0,
+};
+pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t {
+ __lock: __PTHREAD_SPIN_LOCK_INITIALIZER,
+ __queue: 0i64 as *mut __pthread,
+ __attr: 0i64 as *mut __pthread_condattr,
+ __wrefs: 0,
+ __data: 0i64 as *mut ::c_void,
+};
+pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t {
+ __held: __PTHREAD_SPIN_LOCK_INITIALIZER,
+ __lock: __PTHREAD_SPIN_LOCK_INITIALIZER,
+ __readers: 0,
+ __readerqueue: 0i64 as *mut __pthread,
+ __writerqueue: 0i64 as *mut __pthread,
+ __attr: 0i64 as *mut __pthread_rwlockattr,
+ __data: 0i64 as *mut ::c_void,
+};
+pub const PTHREAD_STACK_MIN: ::size_t = 0;
+
+// functions
+f! {
+ pub fn major(dev: ::dev_t) -> ::c_uint {
+ ((dev >> 8) & 0xff) as ::c_uint
+ }
+
+ pub fn minor(dev: ::dev_t) -> ::c_uint {
+ (dev & 0xffff00ff) as ::c_uint
+ }
+
+ pub fn FD_CLR(fd: ::c_int, set: *mut fd_set) -> () {
+ let fd = fd as usize;
+ let size = ::mem::size_of_val(&(*set).fds_bits[0]) * 8;
+ (*set).fds_bits[fd / size] &= !(1 << (fd % size));
+ return
+ }
+
+ pub fn FD_ISSET(fd: ::c_int, set: *const fd_set) -> bool {
+ let fd = fd as usize;
+ let size = ::mem::size_of_val(&(*set).fds_bits[0]) * 8;
+ return ((*set).fds_bits[fd / size] & (1 << (fd % size))) != 0
+ }
+
+ pub fn FD_SET(fd: ::c_int, set: *mut fd_set) -> () {
+ let fd = fd as usize;
+ let size = ::mem::size_of_val(&(*set).fds_bits[0]) * 8;
+ (*set).fds_bits[fd / size] |= 1 << (fd % size);
+ return
+ }
+
+ pub fn FD_ZERO(set: *mut fd_set) -> () {
+ for slot in (*set).fds_bits.iter_mut() {
+ *slot = 0;
+ }
+ }
+}
+
+extern "C" {
+ pub fn lutimes(file: *const ::c_char, times: *const ::timeval) -> ::c_int;
+
+ pub fn futimes(fd: ::c_int, times: *const ::timeval) -> ::c_int;
+ pub fn futimens(__fd: ::c_int, __times: *const ::timespec) -> ::c_int;
+
+ pub fn utimensat(
+ dirfd: ::c_int,
+ path: *const ::c_char,
+ times: *const ::timespec,
+ flag: ::c_int,
+ ) -> ::c_int;
+
+ pub fn mkfifoat(__fd: ::c_int, __path: *const ::c_char, __mode: __mode_t) -> ::c_int;
+
+ pub fn mknodat(
+ dirfd: ::c_int,
+ pathname: *const ::c_char,
+ mode: ::mode_t,
+ dev: dev_t,
+ ) -> ::c_int;
+
+ pub fn __libc_current_sigrtmin() -> ::c_int;
+
+ pub fn __libc_current_sigrtmax() -> ::c_int;
+
+ pub fn waitid(idtype: idtype_t, id: id_t, infop: *mut ::siginfo_t, options: ::c_int)
+ -> ::c_int;
+
+ pub fn sigwait(__set: *const sigset_t, __sig: *mut ::c_int) -> ::c_int;
+
+ pub fn sigaltstack(ss: *const stack_t, oss: *mut stack_t) -> ::c_int;
+
+ pub fn ioctl(__fd: ::c_int, __request: ::c_ulong, ...) -> ::c_int;
+
+ pub fn pipe2(fds: *mut ::c_int, flags: ::c_int) -> ::c_int;
+
+ pub fn dup3(oldfd: ::c_int, newfd: ::c_int, flags: ::c_int) -> ::c_int;
+
+ pub fn pread64(fd: ::c_int, buf: *mut ::c_void, count: ::size_t, offset: off64_t) -> ::ssize_t;
+ pub fn pwrite64(
+ fd: ::c_int,
+ buf: *const ::c_void,
+ count: ::size_t,
+ offset: off64_t,
+ ) -> ::ssize_t;
+
+ pub fn readv(__fd: ::c_int, __iovec: *const ::iovec, __count: ::c_int) -> ::ssize_t;
+ pub fn writev(__fd: ::c_int, __iovec: *const ::iovec, __count: ::c_int) -> ::ssize_t;
+
+ pub fn preadv(
+ __fd: ::c_int,
+ __iovec: *const ::iovec,
+ __count: ::c_int,
+ __offset: __off_t,
+ ) -> ssize_t;
+ pub fn pwritev(
+ __fd: ::c_int,
+ __iovec: *const ::iovec,
+ __count: ::c_int,
+ __offset: __off_t,
+ ) -> ssize_t;
+
+ pub fn preadv64(
+ fd: ::c_int,
+ iov: *const ::iovec,
+ iovcnt: ::c_int,
+ offset: ::off64_t,
+ ) -> ::ssize_t;
+ pub fn pwritev64(
+ fd: ::c_int,
+ iov: *const ::iovec,
+ iovcnt: ::c_int,
+ offset: ::off64_t,
+ ) -> ::ssize_t;
+
+ pub fn lseek64(__fd: ::c_int, __offset: __off64_t, __whence: ::c_int) -> __off64_t;
+
+ pub fn lseek(__fd: ::c_int, __offset: __off_t, __whence: ::c_int) -> __off_t;
+
+ pub fn bind(__fd: ::c_int, __addr: *const sockaddr, __len: socklen_t) -> ::c_int;
+
+ pub fn accept4(
+ fd: ::c_int,
+ addr: *mut ::sockaddr,
+ len: *mut ::socklen_t,
+ flg: ::c_int,
+ ) -> ::c_int;
+
+ pub fn recvmsg(__fd: ::c_int, __message: *mut msghdr, __flags: ::c_int) -> ::ssize_t;
+
+ pub fn sendmsg(__fd: ::c_int, __message: *const msghdr, __flags: ::c_int) -> ssize_t;
+
+ pub fn recvfrom(
+ socket: ::c_int,
+ buf: *mut ::c_void,
+ len: ::size_t,
+ flags: ::c_int,
+ addr: *mut ::sockaddr,
+ addrlen: *mut ::socklen_t,
+ ) -> ::ssize_t;
+
+ pub fn shutdown(__fd: ::c_int, __how: ::c_int) -> ::c_int;
+
+ pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int;
+
+ pub fn uname(buf: *mut ::utsname) -> ::c_int;
+
+ pub fn getpwuid_r(
+ uid: ::uid_t,
+ pwd: *mut passwd,
+ buf: *mut ::c_char,
+ buflen: ::size_t,
+ result: *mut *mut passwd,
+ ) -> ::c_int;
+
+ pub fn setgroups(ngroups: ::size_t, ptr: *const ::gid_t) -> ::c_int;
+
+ pub fn pthread_create(
+ native: *mut ::pthread_t,
+ attr: *const ::pthread_attr_t,
+ f: extern "C" fn(*mut ::c_void) -> *mut ::c_void,
+ value: *mut ::c_void,
+ ) -> ::c_int;
+ pub fn pthread_kill(__threadid: pthread_t, __signo: ::c_int) -> ::c_int;
+ pub fn __pthread_equal(__t1: __pthread_t, __t2: __pthread_t) -> ::c_int;
+
+ pub fn pthread_getattr_np(__thr: pthread_t, __attr: *mut pthread_attr_t) -> ::c_int;
+
+ pub fn pthread_attr_getguardsize(
+ __attr: *const pthread_attr_t,
+ __guardsize: *mut ::size_t,
+ ) -> ::c_int;
+
+ pub fn pthread_attr_getstack(
+ __attr: *const pthread_attr_t,
+ __stackaddr: *mut *mut ::c_void,
+ __stacksize: *mut ::size_t,
+ ) -> ::c_int;
+
+ pub fn pthread_condattr_setclock(
+ __attr: *mut pthread_condattr_t,
+ __clock_id: __clockid_t,
+ ) -> ::c_int;
+
+ pub fn pthread_atfork(
+ prepare: ::Option<unsafe extern "C" fn()>,
+ parent: ::Option<unsafe extern "C" fn()>,
+ child: ::Option<unsafe extern "C" fn()>,
+ ) -> ::c_int;
+
+ pub fn pthread_sigmask(
+ __how: ::c_int,
+ __newmask: *const __sigset_t,
+ __oldmask: *mut __sigset_t,
+ ) -> ::c_int;
+
+ pub fn clock_getres(__clock_id: clockid_t, __res: *mut ::timespec) -> ::c_int;
+ pub fn clock_gettime(__clock_id: clockid_t, __tp: *mut ::timespec) -> ::c_int;
+ pub fn clock_settime(__clock_id: clockid_t, __tp: *const ::timespec) -> ::c_int;
+
+ pub fn fstat(__fd: ::c_int, __buf: *mut stat) -> ::c_int;
+ pub fn fstat64(__fd: ::c_int, __buf: *mut stat64) -> ::c_int;
+
+ pub fn fstatat(
+ __fd: ::c_int,
+ __file: *const ::c_char,
+ __buf: *mut stat,
+ __flag: ::c_int,
+ ) -> ::c_int;
+ pub fn fstatat64(
+ __fd: ::c_int,
+ __file: *const ::c_char,
+ __buf: *mut stat64,
+ __flag: ::c_int,
+ ) -> ::c_int;
+
+ pub fn ftruncate(__fd: ::c_int, __length: __off_t) -> ::c_int;
+ pub fn ftruncate64(__fd: ::c_int, __length: __off64_t) -> ::c_int;
+ pub fn truncate64(__file: *const ::c_char, __length: __off64_t) -> ::c_int;
+
+ pub fn lstat(__file: *const ::c_char, __buf: *mut stat) -> ::c_int;
+ pub fn lstat64(__file: *const ::c_char, __buf: *mut stat64) -> ::c_int;
+
+ pub fn statfs(path: *const ::c_char, buf: *mut statfs) -> ::c_int;
+ pub fn statfs64(__file: *const ::c_char, __buf: *mut statfs64) -> ::c_int;
+ pub fn fstatfs(fd: ::c_int, buf: *mut statfs) -> ::c_int;
+ pub fn fstatfs64(__fildes: ::c_int, __buf: *mut statfs64) -> ::c_int;
+
+ pub fn statvfs(__file: *const ::c_char, __buf: *mut statvfs) -> ::c_int;
+ pub fn statvfs64(__file: *const ::c_char, __buf: *mut statvfs64) -> ::c_int;
+ pub fn fstatvfs(__fildes: ::c_int, __buf: *mut statvfs) -> ::c_int;
+ pub fn fstatvfs64(__fildes: ::c_int, __buf: *mut statvfs64) -> ::c_int;
+
+ pub fn open(__file: *const ::c_char, __oflag: ::c_int, ...) -> ::c_int;
+ pub fn open64(__file: *const ::c_char, __oflag: ::c_int, ...) -> ::c_int;
+
+ pub fn openat(__fd: ::c_int, __file: *const ::c_char, __oflag: ::c_int, ...) -> ::c_int;
+ pub fn openat64(__fd: ::c_int, __file: *const ::c_char, __oflag: ::c_int, ...) -> ::c_int;
+
+ pub fn faccessat(
+ dirfd: ::c_int,
+ pathname: *const ::c_char,
+ mode: ::c_int,
+ flags: ::c_int,
+ ) -> ::c_int;
+
+ pub fn stat(__file: *const ::c_char, __buf: *mut stat) -> ::c_int;
+ pub fn stat64(__file: *const ::c_char, __buf: *mut stat64) -> ::c_int;
+
+ pub fn readdir(dirp: *mut ::DIR) -> *mut ::dirent;
+ pub fn readdir64(dirp: *mut ::DIR) -> *mut ::dirent64;
+ pub fn readdir_r(dirp: *mut ::DIR, entry: *mut ::dirent, result: *mut *mut ::dirent)
+ -> ::c_int;
+
+ pub fn dirfd(dirp: *mut ::DIR) -> ::c_int;
+
+ #[link_name = "__xpg_strerror_r"]
+ pub fn strerror_r(__errnum: ::c_int, __buf: *mut ::c_char, __buflen: ::size_t) -> ::c_int;
+
+ pub fn __errno_location() -> *mut ::c_int;
+
+ pub fn mmap64(
+ __addr: *mut ::c_void,
+ __len: size_t,
+ __prot: ::c_int,
+ __flags: ::c_int,
+ __fd: ::c_int,
+ __offset: __off64_t,
+ ) -> *mut ::c_void;
+
+ pub fn mprotect(__addr: *mut ::c_void, __len: ::size_t, __prot: ::c_int) -> ::c_int;
+
+ pub fn msync(__addr: *mut ::c_void, __len: ::size_t, __flags: ::c_int) -> ::c_int;
+ pub fn sync();
+ pub fn syncfs(fd: ::c_int) -> ::c_int;
+ pub fn fdatasync(fd: ::c_int) -> ::c_int;
+
+ pub fn fallocate64(fd: ::c_int, mode: ::c_int, offset: ::off64_t, len: ::off64_t) -> ::c_int;
+ pub fn posix_fallocate(fd: ::c_int, offset: ::off_t, len: ::off_t) -> ::c_int;
+ pub fn posix_fallocate64(fd: ::c_int, offset: ::off64_t, len: ::off64_t) -> ::c_int;
+
+ pub fn posix_fadvise(fd: ::c_int, offset: ::off_t, len: ::off_t, advise: ::c_int) -> ::c_int;
+
+ pub fn posix_fadvise64(
+ fd: ::c_int,
+ offset: ::off64_t,
+ len: ::off64_t,
+ advise: ::c_int,
+ ) -> ::c_int;
+
+ pub fn madvise(__addr: *mut ::c_void, __len: ::size_t, __advice: ::c_int) -> ::c_int;
+
+ pub fn getrlimit(resource: ::__rlimit_resource, rlim: *mut ::rlimit) -> ::c_int;
+ pub fn getrlimit64(resource: ::__rlimit_resource, rlim: *mut ::rlimit64) -> ::c_int;
+ pub fn setrlimit(resource: ::__rlimit_resource, rlim: *const ::rlimit) -> ::c_int;
+ pub fn setrlimit64(resource: ::__rlimit_resource, rlim: *const ::rlimit64) -> ::c_int;
+
+ pub fn getpriority(which: ::__priority_which, who: ::id_t) -> ::c_int;
+ pub fn setpriority(which: ::__priority_which, who: ::id_t, prio: ::c_int) -> ::c_int;
+
+ pub fn getrandom(__buffer: *mut ::c_void, __length: ::size_t, __flags: ::c_uint) -> ::ssize_t;
+ pub fn getentropy(__buffer: *mut ::c_void, __length: ::size_t) -> ::c_int;
+
+ pub fn backtrace(buf: *mut *mut ::c_void, sz: ::c_int) -> ::c_int;
+ pub fn dl_iterate_phdr(
+ callback: ::Option<
+ unsafe extern "C" fn(
+ info: *mut ::dl_phdr_info,
+ size: ::size_t,
+ data: *mut ::c_void,
+ ) -> ::c_int,
+ >,
+ data: *mut ::c_void,
+ ) -> ::c_int;
+}
+
+safe_f! {
+ pub {const} fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t {
+ let major = major as ::dev_t;
+ let minor = minor as ::dev_t;
+ let mut dev = 0;
+ dev |= major << 8;
+ dev |= minor;
+ dev
+ }
+
+ pub fn SIGRTMAX() -> ::c_int {
+ unsafe { __libc_current_sigrtmax() }
+ }
+
+ pub fn SIGRTMIN() -> ::c_int {
+ unsafe { __libc_current_sigrtmin() }
+ }
+
+ pub {const} fn WIFSTOPPED(status: ::c_int) -> bool {
+ (status & 0xff) == 0x7f
+ }
+
+ pub {const} fn WSTOPSIG(status: ::c_int) -> ::c_int {
+ (status >> 8) & 0xff
+ }
+
+ pub {const} fn WIFCONTINUED(status: ::c_int) -> bool {
+ status == 0xffff
+ }
+
+ pub {const} fn WIFSIGNALED(status: ::c_int) -> bool {
+ ((status & 0x7f) + 1) as i8 >= 2
+ }
+
+ pub {const} fn WTERMSIG(status: ::c_int) -> ::c_int {
+ status & 0x7f
+ }
+
+ pub {const} fn WIFEXITED(status: ::c_int) -> bool {
+ (status & 0x7f) == 0
+ }
+
+ pub {const} fn WEXITSTATUS(status: ::c_int) -> ::c_int {
+ (status >> 8) & 0xff
+ }
+
+ pub {const} fn WCOREDUMP(status: ::c_int) -> bool {
+ (status & 0x80) != 0
+ }
+
+ pub {const} fn W_EXITCODE(ret: ::c_int, sig: ::c_int) -> ::c_int {
+ (ret << 8) | sig
+ }
+
+ pub {const} fn W_STOPCODE(sig: ::c_int) -> ::c_int {
+ (sig << 8) | 0x7f
+ }
+
+ pub {const} fn QCMD(cmd: ::c_int, type_: ::c_int) -> ::c_int {
+ (cmd << 8) | (type_ & 0x00ff)
+ }
+
+ pub {const} fn IPOPT_COPIED(o: u8) -> u8 {
+ o & IPOPT_COPY
+ }
+
+ pub {const} fn IPOPT_CLASS(o: u8) -> u8 {
+ o & IPOPT_CLASS_MASK
+ }
+
+ pub {const} fn IPOPT_NUMBER(o: u8) -> u8 {
+ o & IPOPT_NUMBER_MASK
+ }
+
+ pub {const} fn IPTOS_ECN(x: u8) -> u8 {
+ x & ::IPTOS_ECN_MASK
+ }
+}
+
+cfg_if! {
+ if #[cfg(libc_align)] {
+ mod align;
+ pub use self::align::*;
+ } else {
+ mod no_align;
+ pub use self::no_align::*;
+ }
+}
+
+cfg_if! {
+ if #[cfg(target_pointer_width = "64")] {
+ mod b64;
+ pub use self::b64::*;
+ } else {
+ mod b32;
+ pub use self::b32::*;
+ }
+}
diff --git a/vendor/libc/src/unix/hurd/no_align.rs b/vendor/libc/src/unix/hurd/no_align.rs
new file mode 100644
index 000000000..1dd7d8e54
--- /dev/null
+++ b/vendor/libc/src/unix/hurd/no_align.rs
@@ -0,0 +1 @@
+// Placeholder file
diff --git a/vendor/libc/src/unix/linux_like/android/mod.rs b/vendor/libc/src/unix/linux_like/android/mod.rs
index 40fbb607a..98a9d9b2b 100644
--- a/vendor/libc/src/unix/linux_like/android/mod.rs
+++ b/vendor/libc/src/unix/linux_like/android/mod.rs
@@ -1224,6 +1224,9 @@ pub const PTHREAD_MUTEX_RECURSIVE: ::c_int = 1;
pub const PTHREAD_MUTEX_ERRORCHECK: ::c_int = 2;
pub const PTHREAD_MUTEX_DEFAULT: ::c_int = PTHREAD_MUTEX_NORMAL;
+pub const PTHREAD_EXPLICIT_SCHED: ::c_int = 0;
+pub const PTHREAD_INHERIT_SCHED: ::c_int = 1;
+
// stdio.h
pub const RENAME_NOREPLACE: ::c_int = 1;
pub const RENAME_EXCHANGE: ::c_int = 2;
@@ -1559,6 +1562,7 @@ pub const RLIMIT_MSGQUEUE: ::c_int = 12;
pub const RLIMIT_NICE: ::c_int = 13;
pub const RLIMIT_RTPRIO: ::c_int = 14;
+#[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIM_NLIMITS: ::c_int = 16;
pub const RLIM_INFINITY: ::rlim_t = !0;
@@ -1703,6 +1707,7 @@ pub const REG_BACKR: ::c_int = 1024;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
+pub const MCL_ONFAULT: ::c_int = 0x0004;
pub const CBAUD: ::tcflag_t = 0o0010017;
pub const TAB1: ::tcflag_t = 0x00000800;
@@ -2740,6 +2745,7 @@ pub const ALG_SET_IV: ::c_int = 2;
pub const ALG_SET_OP: ::c_int = 3;
pub const ALG_SET_AEAD_ASSOCLEN: ::c_int = 4;
pub const ALG_SET_AEAD_AUTHSIZE: ::c_int = 5;
+pub const ALG_SET_DRBG_ENTROPY: ::c_int = 6;
pub const ALG_OP_DECRYPT: ::c_int = 0;
pub const ALG_OP_ENCRYPT: ::c_int = 1;
@@ -3494,6 +3500,12 @@ extern "C" {
attr: *const ::pthread_attr_t,
guardsize: *mut ::size_t,
) -> ::c_int;
+ pub fn pthread_attr_setguardsize(attr: *mut ::pthread_attr_t, guardsize: ::size_t) -> ::c_int;
+ pub fn pthread_attr_getinheritsched(
+ attr: *const ::pthread_attr_t,
+ flag: *mut ::c_int,
+ ) -> ::c_int;
+ pub fn pthread_attr_setinheritsched(attr: *mut ::pthread_attr_t, flag: ::c_int) -> ::c_int;
pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int;
pub fn sched_get_priority_min(policy: ::c_int) -> ::c_int;
pub fn pthread_condattr_getpshared(
@@ -3697,6 +3709,20 @@ extern "C" {
needle: *const ::c_void,
needlelen: ::size_t,
) -> *mut ::c_void;
+ pub fn fread_unlocked(
+ buf: *mut ::c_void,
+ size: ::size_t,
+ nobj: ::size_t,
+ stream: *mut ::FILE,
+ ) -> ::size_t;
+ pub fn fwrite_unlocked(
+ buf: *const ::c_void,
+ size: ::size_t,
+ nobj: ::size_t,
+ stream: *mut ::FILE,
+ ) -> ::size_t;
+ pub fn fflush_unlocked(stream: *mut ::FILE) -> ::c_int;
+ pub fn fgets_unlocked(buf: *mut ::c_char, size: ::c_int, stream: *mut ::FILE) -> *mut ::c_char;
}
cfg_if! {
diff --git a/vendor/libc/src/unix/linux_like/emscripten/lfs64.rs b/vendor/libc/src/unix/linux_like/emscripten/lfs64.rs
new file mode 100644
index 000000000..1616cc904
--- /dev/null
+++ b/vendor/libc/src/unix/linux_like/emscripten/lfs64.rs
@@ -0,0 +1,213 @@
+// In-sync with ../linux/musl/lfs64.rs except for fallocate64, prlimit64 and sendfile64
+
+#[inline]
+pub unsafe extern "C" fn creat64(path: *const ::c_char, mode: ::mode_t) -> ::c_int {
+ ::creat(path, mode)
+}
+
+#[inline]
+pub unsafe extern "C" fn fgetpos64(stream: *mut ::FILE, pos: *mut ::fpos64_t) -> ::c_int {
+ ::fgetpos(stream, pos as *mut _)
+}
+
+#[inline]
+pub unsafe extern "C" fn fopen64(pathname: *const ::c_char, mode: *const ::c_char) -> *mut ::FILE {
+ ::fopen(pathname, mode)
+}
+
+#[inline]
+pub unsafe extern "C" fn freopen64(
+ pathname: *const ::c_char,
+ mode: *const ::c_char,
+ stream: *mut ::FILE,
+) -> *mut ::FILE {
+ ::freopen(pathname, mode, stream)
+}
+
+#[inline]
+pub unsafe extern "C" fn fseeko64(
+ stream: *mut ::FILE,
+ offset: ::off64_t,
+ whence: ::c_int,
+) -> ::c_int {
+ ::fseeko(stream, offset, whence)
+}
+
+#[inline]
+pub unsafe extern "C" fn fsetpos64(stream: *mut ::FILE, pos: *const ::fpos64_t) -> ::c_int {
+ ::fsetpos(stream, pos as *mut _)
+}
+
+#[inline]
+pub unsafe extern "C" fn fstat64(fildes: ::c_int, buf: *mut ::stat64) -> ::c_int {
+ ::fstat(fildes, buf as *mut _)
+}
+
+#[inline]
+pub unsafe extern "C" fn fstatat64(
+ fd: ::c_int,
+ path: *const ::c_char,
+ buf: *mut ::stat64,
+ flag: ::c_int,
+) -> ::c_int {
+ ::fstatat(fd, path, buf as *mut _, flag)
+}
+
+#[inline]
+pub unsafe extern "C" fn fstatfs64(fd: ::c_int, buf: *mut ::statfs64) -> ::c_int {
+ ::fstatfs(fd, buf as *mut _)
+}
+
+#[inline]
+pub unsafe extern "C" fn fstatvfs64(fd: ::c_int, buf: *mut ::statvfs64) -> ::c_int {
+ ::fstatvfs(fd, buf as *mut _)
+}
+
+#[inline]
+pub unsafe extern "C" fn ftello64(stream: *mut ::FILE) -> ::off64_t {
+ ::ftello(stream)
+}
+
+#[inline]
+pub unsafe extern "C" fn ftruncate64(fd: ::c_int, length: ::off64_t) -> ::c_int {
+ ::ftruncate(fd, length)
+}
+
+#[inline]
+pub unsafe extern "C" fn getrlimit64(resource: ::c_int, rlim: *mut ::rlimit64) -> ::c_int {
+ ::getrlimit(resource, rlim as *mut _)
+}
+
+#[inline]
+pub unsafe extern "C" fn lseek64(fd: ::c_int, offset: ::off64_t, whence: ::c_int) -> ::off64_t {
+ ::lseek(fd, offset, whence)
+}
+
+#[inline]
+pub unsafe extern "C" fn lstat64(path: *const ::c_char, buf: *mut ::stat64) -> ::c_int {
+ ::lstat(path, buf as *mut _)
+}
+
+#[inline]
+pub unsafe extern "C" fn mmap64(
+ addr: *mut ::c_void,
+ length: ::size_t,
+ prot: ::c_int,
+ flags: ::c_int,
+ fd: ::c_int,
+ offset: ::off64_t,
+) -> *mut ::c_void {
+ ::mmap(addr, length, prot, flags, fd, offset)
+}
+
+// These functions are variadic in the C ABI since the `mode` argument is "optional". Variadic
+// `extern "C"` functions are unstable in Rust so we cannot write a shim function for these
+// entrypoints. See https://github.com/rust-lang/rust/issues/44930.
+//
+// These aliases are mostly fine though, neither function takes a LFS64-namespaced type as an
+// argument, nor do their names clash with any declared types.
+pub use open as open64;
+pub use openat as openat64;
+
+#[inline]
+pub unsafe extern "C" fn posix_fadvise64(
+ fd: ::c_int,
+ offset: ::off64_t,
+ len: ::off64_t,
+ advice: ::c_int,
+) -> ::c_int {
+ ::posix_fadvise(fd, offset, len, advice)
+}
+
+#[inline]
+pub unsafe extern "C" fn posix_fallocate64(
+ fd: ::c_int,
+ offset: ::off64_t,
+ len: ::off64_t,
+) -> ::c_int {
+ ::posix_fallocate(fd, offset, len)
+}
+
+#[inline]
+pub unsafe extern "C" fn pread64(
+ fd: ::c_int,
+ buf: *mut ::c_void,
+ count: ::size_t,
+ offset: ::off64_t,
+) -> ::ssize_t {
+ ::pread(fd, buf, count, offset)
+}
+
+#[inline]
+pub unsafe extern "C" fn preadv64(
+ fd: ::c_int,
+ iov: *const ::iovec,
+ iovcnt: ::c_int,
+ offset: ::off64_t,
+) -> ::ssize_t {
+ ::preadv(fd, iov, iovcnt, offset)
+}
+
+#[inline]
+pub unsafe extern "C" fn pwrite64(
+ fd: ::c_int,
+ buf: *const ::c_void,
+ count: ::size_t,
+ offset: ::off64_t,
+) -> ::ssize_t {
+ ::pwrite(fd, buf, count, offset)
+}
+
+#[inline]
+pub unsafe extern "C" fn pwritev64(
+ fd: ::c_int,
+ iov: *const ::iovec,
+ iovcnt: ::c_int,
+ offset: ::off64_t,
+) -> ::ssize_t {
+ ::pwritev(fd, iov, iovcnt, offset)
+}
+
+#[inline]
+pub unsafe extern "C" fn readdir64(dirp: *mut ::DIR) -> *mut ::dirent64 {
+ ::readdir(dirp) as *mut _
+}
+
+#[inline]
+pub unsafe extern "C" fn readdir64_r(
+ dirp: *mut ::DIR,
+ entry: *mut ::dirent64,
+ result: *mut *mut ::dirent64,
+) -> ::c_int {
+ ::readdir_r(dirp, entry as *mut _, result as *mut _)
+}
+
+#[inline]
+pub unsafe extern "C" fn setrlimit64(resource: ::c_int, rlim: *const ::rlimit64) -> ::c_int {
+ ::setrlimit(resource, rlim as *mut _)
+}
+
+#[inline]
+pub unsafe extern "C" fn stat64(pathname: *const ::c_char, statbuf: *mut ::stat64) -> ::c_int {
+ ::stat(pathname, statbuf as *mut _)
+}
+
+#[inline]
+pub unsafe extern "C" fn statfs64(pathname: *const ::c_char, buf: *mut ::statfs64) -> ::c_int {
+ ::statfs(pathname, buf as *mut _)
+}
+
+#[inline]
+pub unsafe extern "C" fn statvfs64(path: *const ::c_char, buf: *mut ::statvfs64) -> ::c_int {
+ ::statvfs(path, buf as *mut _)
+}
+
+#[inline]
+pub unsafe extern "C" fn tmpfile64() -> *mut ::FILE {
+ ::tmpfile()
+}
+
+#[inline]
+pub unsafe extern "C" fn truncate64(path: *const ::c_char, length: ::off64_t) -> ::c_int {
+ ::truncate(path, length)
+}
diff --git a/vendor/libc/src/unix/linux_like/emscripten/mod.rs b/vendor/libc/src/unix/linux_like/emscripten/mod.rs
index c0d707184..1c9e4e6f5 100644
--- a/vendor/libc/src/unix/linux_like/emscripten/mod.rs
+++ b/vendor/libc/src/unix/linux_like/emscripten/mod.rs
@@ -5,10 +5,6 @@ pub type dev_t = u32;
pub type socklen_t = u32;
pub type pthread_t = c_ulong;
pub type mode_t = u32;
-pub type ino64_t = u64;
-pub type off64_t = i64;
-pub type blkcnt64_t = i32;
-pub type rlim64_t = u64;
pub type shmatt_t = ::c_ulong;
pub type mqd_t = ::c_int;
pub type msgqnum_t = ::c_ulong;
@@ -29,11 +25,23 @@ pub type blkcnt_t = i32;
pub type blksize_t = c_long;
pub type fsblkcnt_t = u32;
pub type fsfilcnt_t = u32;
-pub type rlim_t = ::c_ulonglong;
+pub type rlim_t = u64;
pub type c_long = i32;
pub type c_ulong = u32;
pub type nlink_t = u32;
+pub type ino64_t = ::ino_t;
+pub type off64_t = ::off_t;
+pub type blkcnt64_t = ::blkcnt_t;
+pub type rlim64_t = ::rlim_t;
+
+pub type rlimit64 = ::rlimit;
+pub type flock64 = ::flock;
+pub type stat64 = ::stat;
+pub type statfs64 = ::statfs;
+pub type statvfs64 = ::statvfs;
+pub type dirent64 = ::dirent;
+
#[cfg_attr(feature = "extra_traits", derive(Debug))]
pub enum fpos64_t {} // FIXME: fill this out with a struct
impl ::Copy for fpos64_t {}
@@ -44,11 +52,6 @@ impl ::Clone for fpos64_t {
}
s! {
- pub struct rlimit64 {
- pub rlim_cur: rlim64_t,
- pub rlim_max: rlim64_t,
- }
-
pub struct glob_t {
pub gl_pathc: ::size_t,
pub gl_pathv: *mut *mut c_char,
@@ -223,14 +226,6 @@ s! {
pub l_pid: ::pid_t,
}
- pub struct flock64 {
- pub l_type: ::c_short,
- pub l_whence: ::c_short,
- pub l_start: ::off64_t,
- pub l_len: ::off64_t,
- pub l_pid: ::pid_t,
- }
-
pub struct pthread_attr_t {
__size: [u32; 11]
}
@@ -283,31 +278,6 @@ s! {
pub st_ino: ::ino_t,
}
- pub struct stat64 {
- pub st_dev: ::dev_t,
- #[cfg(not(emscripten_new_stat_abi))]
- __st_dev_padding: ::c_int,
- #[cfg(not(emscripten_new_stat_abi))]
- __st_ino_truncated: ::c_long,
- pub st_mode: ::mode_t,
- pub st_nlink: ::nlink_t,
- pub st_uid: ::uid_t,
- pub st_gid: ::gid_t,
- pub st_rdev: ::dev_t,
- #[cfg(not(emscripten_new_stat_abi))]
- __st_rdev_padding: ::c_int,
- pub st_size: ::off_t,
- pub st_blksize: ::blksize_t,
- pub st_blocks: ::blkcnt_t,
- pub st_atime: ::time_t,
- pub st_atime_nsec: ::c_long,
- pub st_mtime: ::time_t,
- pub st_mtime_nsec: ::c_long,
- pub st_ctime: ::time_t,
- pub st_ctime_nsec: ::c_long,
- pub st_ino: ::ino_t,
- }
-
pub struct stack_t {
pub ss_sp: *mut ::c_void,
pub ss_flags: ::c_int,
@@ -370,37 +340,6 @@ s! {
_align: [usize; 0],
}
- pub struct statfs64 {
- pub f_type: ::c_ulong,
- pub f_bsize: ::c_ulong,
- pub f_blocks: ::fsblkcnt_t,
- pub f_bfree: ::fsblkcnt_t,
- pub f_bavail: ::fsblkcnt_t,
- pub f_files: ::fsfilcnt_t,
- pub f_ffree: ::fsfilcnt_t,
- pub f_fsid: ::fsid_t,
- pub f_namelen: ::c_ulong,
- pub f_frsize: ::c_ulong,
- pub f_flags: ::c_ulong,
- pub f_spare: [::c_ulong; 4],
- }
-
- pub struct statvfs64 {
- pub f_bsize: ::c_ulong,
- pub f_frsize: ::c_ulong,
- pub f_blocks: u32,
- pub f_bfree: u32,
- pub f_bavail: u32,
- pub f_files: u32,
- pub f_ffree: u32,
- pub f_favail: u32,
- pub f_fsid: ::c_ulong,
- __f_unused: ::c_int,
- pub f_flag: ::c_ulong,
- pub f_namemax: ::c_ulong,
- __f_spare: [::c_int; 6],
- }
-
pub struct arpd_request {
pub req: ::c_ushort,
pub ip: u32,
@@ -420,14 +359,6 @@ s_no_extra_traits! {
pub d_name: [::c_char; 256],
}
- pub struct dirent64 {
- pub d_ino: ::ino64_t,
- pub d_off: ::off64_t,
- pub d_reclen: ::c_ushort,
- pub d_type: ::c_uchar,
- pub d_name: [::c_char; 256],
- }
-
pub struct sysinfo {
pub uptime: ::c_ulong,
pub loads: [::c_ulong; 3],
@@ -491,41 +422,6 @@ cfg_if! {
}
}
- impl PartialEq for dirent64 {
- fn eq(&self, other: &dirent64) -> bool {
- self.d_ino == other.d_ino
- && self.d_off == other.d_off
- && self.d_reclen == other.d_reclen
- && self.d_type == other.d_type
- && self
- .d_name
- .iter()
- .zip(other.d_name.iter())
- .all(|(a,b)| a == b)
- }
- }
- impl Eq for dirent64 {}
- impl ::fmt::Debug for dirent64 {
- fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
- f.debug_struct("dirent64")
- .field("d_ino", &self.d_ino)
- .field("d_off", &self.d_off)
- .field("d_reclen", &self.d_reclen)
- .field("d_type", &self.d_type)
- // FIXME: .field("d_name", &self.d_name)
- .finish()
- }
- }
- impl ::hash::Hash for dirent64 {
- fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
- self.d_ino.hash(state);
- self.d_off.hash(state);
- self.d_reclen.hash(state);
- self.d_type.hash(state);
- self.d_name.hash(state);
- }
- }
-
impl PartialEq for sysinfo {
fn eq(&self, other: &sysinfo) -> bool {
self.uptime == other.uptime
@@ -1334,7 +1230,10 @@ pub const POSIX_FADV_NOREUSE: ::c_int = 5;
pub const POSIX_MADV_DONTNEED: ::c_int = 0;
pub const RLIM_INFINITY: ::rlim_t = !0;
+#[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIMIT_NLIMITS: ::c_int = 15;
+#[allow(deprecated)]
+#[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIM_NLIMITS: ::c_int = RLIMIT_NLIMITS;
pub const MAP_ANONYMOUS: ::c_int = MAP_ANON;
@@ -1763,8 +1662,6 @@ safe_f! {
}
extern "C" {
- pub fn getrlimit64(resource: ::c_int, rlim: *mut rlimit64) -> ::c_int;
- pub fn setrlimit64(resource: ::c_int, rlim: *const rlimit64) -> ::c_int;
pub fn getrlimit(resource: ::c_int, rlim: *mut ::rlimit) -> ::c_int;
pub fn setrlimit(resource: ::c_int, rlim: *const ::rlimit) -> ::c_int;
pub fn strerror_r(errnum: ::c_int, buf: *mut c_char, buflen: ::size_t) -> ::c_int;
@@ -1785,17 +1682,6 @@ extern "C" {
pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;
pub fn __errno_location() -> *mut ::c_int;
- pub fn fopen64(filename: *const c_char, mode: *const c_char) -> *mut ::FILE;
- pub fn freopen64(
- filename: *const c_char,
- mode: *const c_char,
- file: *mut ::FILE,
- ) -> *mut ::FILE;
- pub fn tmpfile64() -> *mut ::FILE;
- pub fn fgetpos64(stream: *mut ::FILE, ptr: *mut fpos64_t) -> ::c_int;
- pub fn fsetpos64(stream: *mut ::FILE, ptr: *const fpos64_t) -> ::c_int;
- pub fn fseeko64(stream: *mut ::FILE, offset: ::off64_t, whence: ::c_int) -> ::c_int;
- pub fn ftello64(stream: *mut ::FILE) -> ::off64_t;
pub fn posix_fallocate(fd: ::c_int, offset: ::off_t, len: ::off_t) -> ::c_int;
pub fn pwritev(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int, offset: ::off_t)
-> ::ssize_t;
@@ -1892,6 +1778,10 @@ extern "C" {
pub fn getentropy(buf: *mut ::c_void, buflen: ::size_t) -> ::c_int;
}
+// Alias <foo> to <foo>64 to mimic glibc's LFS64 support
+mod lfs64;
+pub use self::lfs64::*;
+
cfg_if! {
if #[cfg(libc_align)] {
#[macro_use]
diff --git a/vendor/libc/src/unix/linux_like/linux/arch/generic/mod.rs b/vendor/libc/src/unix/linux_like/linux/arch/generic/mod.rs
index 19d5e7b39..10e1fcca6 100644
--- a/vendor/libc/src/unix/linux_like/linux/arch/generic/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/arch/generic/mod.rs
@@ -257,6 +257,8 @@ cfg_if! {
pub const RLIMIT_NICE: ::__rlimit_resource_t = 13;
pub const RLIMIT_RTPRIO: ::__rlimit_resource_t = 14;
pub const RLIMIT_RTTIME: ::__rlimit_resource_t = 15;
+ #[allow(deprecated)]
+ #[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIMIT_NLIMITS: ::__rlimit_resource_t = RLIM_NLIMITS;
} else if #[cfg(any(target_env = "musl", target_env = "ohos"))] {
@@ -277,16 +279,21 @@ cfg_if! {
pub const RLIMIT_NICE: ::c_int = 13;
pub const RLIMIT_RTPRIO: ::c_int = 14;
pub const RLIMIT_RTTIME: ::c_int = 15;
+ #[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIM_NLIMITS: ::c_int = 15;
+ #[allow(deprecated)]
+ #[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIMIT_NLIMITS: ::c_int = RLIM_NLIMITS;
}
}
cfg_if! {
if #[cfg(target_env = "gnu")] {
+ #[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIM_NLIMITS: ::__rlimit_resource_t = 16;
}
else if #[cfg(target_env = "uclibc")] {
+ #[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIM_NLIMITS: ::__rlimit_resource_t = 15;
}
}
diff --git a/vendor/libc/src/unix/linux_like/linux/arch/mips/mod.rs b/vendor/libc/src/unix/linux_like/linux/arch/mips/mod.rs
index 975e334de..6c0aecf8c 100644
--- a/vendor/libc/src/unix/linux_like/linux/arch/mips/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/arch/mips/mod.rs
@@ -237,6 +237,8 @@ cfg_if! {
pub const RLIMIT_NICE: ::__rlimit_resource_t = 13;
pub const RLIMIT_RTPRIO: ::__rlimit_resource_t = 14;
pub const RLIMIT_RTTIME: ::__rlimit_resource_t = 15;
+ #[allow(deprecated)]
+ #[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIMIT_NLIMITS: ::__rlimit_resource_t = RLIM_NLIMITS;
} else if #[cfg(target_env = "musl")] {
@@ -257,7 +259,10 @@ cfg_if! {
pub const RLIMIT_NICE: ::c_int = 13;
pub const RLIMIT_RTPRIO: ::c_int = 14;
pub const RLIMIT_RTTIME: ::c_int = 15;
+ #[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIM_NLIMITS: ::c_int = 15;
+ #[allow(deprecated)]
+ #[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIMIT_NLIMITS: ::c_int = RLIM_NLIMITS;
pub const RLIM_INFINITY: ::rlim_t = !0;
}
@@ -265,8 +270,10 @@ cfg_if! {
cfg_if! {
if #[cfg(target_env = "gnu")] {
+ #[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIM_NLIMITS: ::__rlimit_resource_t = 16;
} else if #[cfg(target_env = "uclibc")] {
+ #[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIM_NLIMITS: ::__rlimit_resource_t = 15;
}
}
diff --git a/vendor/libc/src/unix/linux_like/linux/arch/powerpc/mod.rs b/vendor/libc/src/unix/linux_like/linux/arch/powerpc/mod.rs
index 64c3eaab5..584be5b6c 100644
--- a/vendor/libc/src/unix/linux_like/linux/arch/powerpc/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/arch/powerpc/mod.rs
@@ -215,7 +215,10 @@ cfg_if! {
pub const RLIMIT_NICE: ::__rlimit_resource_t = 13;
pub const RLIMIT_RTPRIO: ::__rlimit_resource_t = 14;
pub const RLIMIT_RTTIME: ::__rlimit_resource_t = 15;
+ #[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIM_NLIMITS: ::__rlimit_resource_t = 16;
+ #[allow(deprecated)]
+ #[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIMIT_NLIMITS: ::__rlimit_resource_t = RLIM_NLIMITS;
} else if #[cfg(target_env = "musl")] {
@@ -236,7 +239,10 @@ cfg_if! {
pub const RLIMIT_NICE: ::c_int = 13;
pub const RLIMIT_RTPRIO: ::c_int = 14;
pub const RLIMIT_RTTIME: ::c_int = 15;
+ #[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIM_NLIMITS: ::c_int = 15;
+ #[allow(deprecated)]
+ #[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIMIT_NLIMITS: ::c_int = RLIM_NLIMITS;
}
}
diff --git a/vendor/libc/src/unix/linux_like/linux/arch/sparc/mod.rs b/vendor/libc/src/unix/linux_like/linux/arch/sparc/mod.rs
index da3e388e3..c7813aa46 100644
--- a/vendor/libc/src/unix/linux_like/linux/arch/sparc/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/arch/sparc/mod.rs
@@ -216,7 +216,10 @@ pub const RLIMIT_MSGQUEUE: ::__rlimit_resource_t = 12;
pub const RLIMIT_NICE: ::__rlimit_resource_t = 13;
pub const RLIMIT_RTPRIO: ::__rlimit_resource_t = 14;
pub const RLIMIT_RTTIME: ::__rlimit_resource_t = 15;
+#[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIM_NLIMITS: ::__rlimit_resource_t = 16;
+#[allow(deprecated)]
+#[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIMIT_NLIMITS: ::__rlimit_resource_t = RLIM_NLIMITS;
cfg_if! {
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b32/arm/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b32/arm/mod.rs
index fd690a17e..9b3a2ff86 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b32/arm/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b32/arm/mod.rs
@@ -341,6 +341,7 @@ pub const SOCK_DGRAM: ::c_int = 2;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
+pub const MCL_ONFAULT: ::c_int = 0x0004;
pub const POLLWRNORM: ::c_short = 0x100;
pub const POLLWRBAND: ::c_short = 0x200;
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b32/csky/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b32/csky/mod.rs
index c1234845e..9807cea83 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b32/csky/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b32/csky/mod.rs
@@ -290,6 +290,7 @@ pub const SOCK_DGRAM: ::c_int = 2;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
+pub const MCL_ONFAULT: ::c_int = 0x0004;
pub const POLLWRNORM: ::c_short = 0x100;
pub const POLLWRBAND: ::c_short = 0x200;
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs
index 69725ee7c..8ca7d3d21 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b32/m68k/mod.rs
@@ -293,6 +293,7 @@ pub const PTRACE_SYSEMU_SINGLESTEP: ::c_uint = 32;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
+pub const MCL_ONFAULT: ::c_int = 0x0004;
pub const POLLWRNORM: ::c_short = 0x100;
pub const POLLWRBAND: ::c_short = 0x200;
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b32/mips/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b32/mips/mod.rs
index 6a03f0ba8..fa2707500 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b32/mips/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b32/mips/mod.rs
@@ -719,6 +719,7 @@ pub const RTLD_NOLOAD: ::c_int = 0x8;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
+pub const MCL_ONFAULT: ::c_int = 0x0004;
pub const SIGSTKSZ: ::size_t = 8192;
pub const MINSIGSTKSZ: ::size_t = 2048;
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b32/powerpc.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b32/powerpc.rs
index e70b216bf..dd5732e0d 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b32/powerpc.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b32/powerpc.rs
@@ -293,6 +293,7 @@ pub const SOCK_DGRAM: ::c_int = 2;
pub const MCL_CURRENT: ::c_int = 0x2000;
pub const MCL_FUTURE: ::c_int = 0x4000;
+pub const MCL_ONFAULT: ::c_int = 0x8000;
pub const POLLWRNORM: ::c_short = 0x100;
pub const POLLWRBAND: ::c_short = 0x200;
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs
index f3b130cbc..65b7aaa78 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs
@@ -393,6 +393,7 @@ pub const EISNAM: ::c_int = 120;
pub const EREMOTEIO: ::c_int = 121;
pub const MCL_CURRENT: ::c_int = 1;
pub const MCL_FUTURE: ::c_int = 2;
+pub const MCL_ONFAULT: ::c_int = 4;
pub const SIGSTKSZ: ::size_t = 8192;
pub const MINSIGSTKSZ: ::size_t = 2048;
pub const CBAUD: ::tcflag_t = 4111;
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs
index 57ad9fe8e..da9cf29c4 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs
@@ -363,6 +363,7 @@ pub const EREMOTEIO: ::c_int = 121;
pub const MCL_CURRENT: ::c_int = 0x2000;
pub const MCL_FUTURE: ::c_int = 0x4000;
+pub const MCL_ONFAULT: ::c_int = 0x8000;
pub const SIGSTKSZ: ::size_t = 16384;
pub const MINSIGSTKSZ: ::size_t = 4096;
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b32/x86/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b32/x86/mod.rs
index 93622387e..a3531c141 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b32/x86/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b32/x86/mod.rs
@@ -507,6 +507,7 @@ pub const PTRACE_SYSEMU_SINGLESTEP: ::c_uint = 32;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
+pub const MCL_ONFAULT: ::c_int = 0x0004;
pub const POLLWRNORM: ::c_short = 0x100;
pub const POLLWRBAND: ::c_short = 0x200;
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs
index f9aed99b2..206283e22 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs
@@ -423,6 +423,7 @@ pub const EDEADLOCK: ::c_int = 35;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
+pub const MCL_ONFAULT: ::c_int = 0x0004;
pub const SIGSTKSZ: ::size_t = 16384;
pub const MINSIGSTKSZ: ::size_t = 5120;
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs
index ea59181bc..3e1719a76 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs
@@ -264,6 +264,21 @@ align_const! {
};
}
+pub const HWCAP_CPUCFG: ::c_ulong = 1 << 0;
+pub const HWCAP_LAM: ::c_ulong = 1 << 1;
+pub const HWCAP_UAL: ::c_ulong = 1 << 2;
+pub const HWCAP_FPU: ::c_ulong = 1 << 3;
+pub const HWCAP_LSX: ::c_ulong = 1 << 4;
+pub const HWCAP_LASX: ::c_ulong = 1 << 5;
+pub const HWCAP_CRC32: ::c_ulong = 1 << 6;
+pub const HWCAP_COMPLEX: ::c_ulong = 1 << 7;
+pub const HWCAP_CRYPTO: ::c_ulong = 1 << 8;
+pub const HWCAP_LVZ: ::c_ulong = 1 << 9;
+pub const HWCAP_LBT_X86: ::c_ulong = 1 << 10;
+pub const HWCAP_LBT_ARM: ::c_ulong = 1 << 11;
+pub const HWCAP_LBT_MIPS: ::c_ulong = 1 << 12;
+pub const HWCAP_PTW: ::c_ulong = 1 << 13;
+
pub const SYS_io_setup: ::c_long = 0;
pub const SYS_io_destroy: ::c_long = 1;
pub const SYS_io_submit: ::c_long = 2;
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs
index 66b29a8aa..f7b52be80 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs
@@ -823,6 +823,7 @@ pub const RTLD_NOLOAD: ::c_int = 0x8;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
+pub const MCL_ONFAULT: ::c_int = 0x0004;
pub const SIGSTKSZ: ::size_t = 8192;
pub const MINSIGSTKSZ: ::size_t = 2048;
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs
index 2b225e480..3088c25a2 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs
@@ -473,6 +473,7 @@ pub const EREMOTEIO: ::c_int = 121;
pub const MCL_CURRENT: ::c_int = 0x2000;
pub const MCL_FUTURE: ::c_int = 0x4000;
+pub const MCL_ONFAULT: ::c_int = 0x8000;
pub const SIGSTKSZ: ::size_t = 0x4000;
pub const MINSIGSTKSZ: ::size_t = 4096;
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs
index c65a562ac..8e06a135b 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs
@@ -432,6 +432,7 @@ pub const PTRACE_GETREGS: ::c_uint = 12;
pub const PTRACE_SETREGS: ::c_uint = 13;
pub const MCL_CURRENT: ::c_int = 1;
pub const MCL_FUTURE: ::c_int = 2;
+pub const MCL_ONFAULT: ::c_int = 4;
pub const SIGSTKSZ: ::size_t = 8192;
pub const MINSIGSTKSZ: ::size_t = 2048;
pub const CBAUD: ::tcflag_t = 4111;
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs
index c2c4f31cf..61ee2dcc9 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs
@@ -481,6 +481,7 @@ pub const PTRACE_DETACH: ::c_uint = 17;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
+pub const MCL_ONFAULT: ::c_int = 0x0004;
pub const EFD_NONBLOCK: ::c_int = 0x800;
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs
index 2427c7a0a..de2f0d6e4 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs
@@ -444,6 +444,7 @@ pub const EREMOTEIO: ::c_int = 121;
pub const MCL_CURRENT: ::c_int = 0x2000;
pub const MCL_FUTURE: ::c_int = 0x4000;
+pub const MCL_ONFAULT: ::c_int = 0x8000;
pub const SIGSTKSZ: ::size_t = 16384;
pub const MINSIGSTKSZ: ::size_t = 4096;
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs
index e6307e282..9b2aac5c2 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs
@@ -651,6 +651,7 @@ pub const PR_SPEC_INDIRECT_BRANCH: ::c_int = 1;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
+pub const MCL_ONFAULT: ::c_int = 0x0004;
pub const SIGSTKSZ: ::size_t = 8192;
pub const MINSIGSTKSZ: ::size_t = 2048;
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/mod.rs
index 2d74087e9..377b9f122 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/mod.rs
@@ -718,11 +718,6 @@ pub const SOCK_SEQPACKET: ::c_int = 5;
pub const SOCK_DCCP: ::c_int = 6;
pub const SOCK_PACKET: ::c_int = 10;
-pub const FAN_MARK_INODE: ::c_uint = 0x0000_0000;
-pub const FAN_MARK_MOUNT: ::c_uint = 0x0000_0010;
-// NOTE: FAN_MARK_FILESYSTEM requires Linux Kernel >= 4.20.0
-pub const FAN_MARK_FILESYSTEM: ::c_uint = 0x0000_0100;
-
pub const AF_IB: ::c_int = 27;
pub const AF_MPLS: ::c_int = 28;
pub const AF_NFC: ::c_int = 39;
@@ -857,6 +852,8 @@ pub const PTRACE_SEIZE: ::c_uint = 0x4206;
pub const PTRACE_INTERRUPT: ::c_uint = 0x4207;
pub const PTRACE_LISTEN: ::c_uint = 0x4208;
pub const PTRACE_PEEKSIGINFO: ::c_uint = 0x4209;
+pub const PTRACE_GETSIGMASK: ::c_uint = 0x420a;
+pub const PTRACE_SETSIGMASK: ::c_uint = 0x420b;
pub const PTRACE_GET_SYSCALL_INFO: ::c_uint = 0x420e;
pub const PTRACE_SYSCALL_INFO_NONE: ::__u8 = 0;
pub const PTRACE_SYSCALL_INFO_ENTRY: ::__u8 = 1;
@@ -944,6 +941,11 @@ pub const NT_PRFPXREG: ::c_int = 20;
pub const ELFOSABI_ARM_AEABI: u8 = 64;
+// linux/sched.h
+pub const CLONE_NEWTIME: ::c_int = 0x80;
+pub const CLONE_CLEAR_SIGHAND: ::c_int = 0x100000000;
+pub const CLONE_INTO_CGROUP: ::c_int = 0x200000000;
+
// linux/keyctl.h
pub const KEYCTL_DH_COMPUTE: u32 = 23;
pub const KEYCTL_PKEY_QUERY: u32 = 24;
@@ -1024,7 +1026,17 @@ pub const STATX_ATTR_DAX: ::c_int = 0x00200000;
pub const SOMAXCONN: ::c_int = 4096;
-//sys/timex.h
+// linux/mount.h
+pub const MOVE_MOUNT_F_SYMLINKS: ::c_uint = 0x00000001;
+pub const MOVE_MOUNT_F_AUTOMOUNTS: ::c_uint = 0x00000002;
+pub const MOVE_MOUNT_F_EMPTY_PATH: ::c_uint = 0x00000004;
+pub const MOVE_MOUNT_T_SYMLINKS: ::c_uint = 0x00000010;
+pub const MOVE_MOUNT_T_AUTOMOUNTS: ::c_uint = 0x00000020;
+pub const MOVE_MOUNT_T_EMPTY_PATH: ::c_uint = 0x00000040;
+pub const MOVE_MOUNT_SET_GROUP: ::c_uint = 0x00000100;
+pub const MOVE_MOUNT_BENEATH: ::c_uint = 0x00000200;
+
+// sys/timex.h
pub const ADJ_OFFSET: ::c_uint = 0x0001;
pub const ADJ_FREQUENCY: ::c_uint = 0x0002;
pub const ADJ_MAXERROR: ::c_uint = 0x0004;
@@ -1093,6 +1105,8 @@ pub const GLOB_TILDE: ::c_int = 1 << 12;
pub const GLOB_ONLYDIR: ::c_int = 1 << 13;
pub const GLOB_TILDE_CHECK: ::c_int = 1 << 14;
+pub const MADV_COLLAPSE: ::c_int = 25;
+
cfg_if! {
if #[cfg(any(
target_arch = "arm",
@@ -1389,6 +1403,17 @@ extern "C" {
buf: *mut ::c_char,
buflen: ::c_int,
) -> *mut ::mntent;
+
+ pub fn execveat(
+ dirfd: ::c_int,
+ pathname: *const ::c_char,
+ argv: *const *mut c_char,
+ envp: *const *mut c_char,
+ flags: ::c_int,
+ ) -> ::c_int;
+
+ // Added in `glibc` 2.34
+ pub fn close_range(first: ::c_uint, last: ::c_uint, flags: ::c_int) -> ::c_int;
}
cfg_if! {
diff --git a/vendor/libc/src/unix/linux_like/linux/mod.rs b/vendor/libc/src/unix/linux_like/linux/mod.rs
index 4f9ae623a..224300a64 100644
--- a/vendor/libc/src/unix/linux_like/linux/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/mod.rs
@@ -14,6 +14,7 @@ pub type nl_item = ::c_int;
pub type idtype_t = ::c_uint;
pub type loff_t = ::c_longlong;
pub type pthread_key_t = ::c_uint;
+pub type pthread_once_t = ::c_int;
pub type pthread_spinlock_t = ::c_int;
pub type __u8 = ::c_uchar;
@@ -791,6 +792,23 @@ s_no_extra_traits! {
pub ifr_ifru: ::sockaddr,
}
+ #[cfg(libc_union)]
+ pub union __c_anonymous_ifc_ifcu {
+ pub ifcu_buf: *mut ::c_char,
+ pub ifcu_req: *mut ::ifreq,
+ }
+
+ /* Structure used in SIOCGIFCONF request. Used to retrieve interface
+ configuration for machine (useful for programs which must know all
+ networks accessible). */
+ pub struct ifconf {
+ pub ifc_len: ::c_int, /* Size of buffer. */
+ #[cfg(libc_union)]
+ pub ifc_ifcu: __c_anonymous_ifc_ifcu,
+ #[cfg(not(libc_union))]
+ pub ifc_ifcu: *mut ::ifreq,
+ }
+
pub struct hwtstamp_config {
pub flags: ::c_int,
pub tx_type: ::c_int,
@@ -1228,6 +1246,23 @@ cfg_if! {
}
}
+ #[cfg(libc_union)]
+ impl ::fmt::Debug for __c_anonymous_ifc_ifcu {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("ifr_ifru")
+ .field("ifcu_buf", unsafe { &self.ifcu_buf })
+ .field("ifcu_req", unsafe { &self.ifcu_req })
+ .finish()
+ }
+ }
+ impl ::fmt::Debug for ifconf {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("ifconf")
+ .field("ifc_len", &self.ifc_len)
+ .field("ifc_ifcu", &self.ifc_ifcu)
+ .finish()
+ }
+ }
impl ::fmt::Debug for hwtstamp_config {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
f.debug_struct("hwtstamp_config")
@@ -1829,6 +1864,8 @@ pub const IFLA_INFO_SLAVE_DATA: ::c_ushort = 5;
// linux/if_tun.h
pub const IFF_TUN: ::c_int = 0x0001;
pub const IFF_TAP: ::c_int = 0x0002;
+pub const IFF_NAPI: ::c_int = 0x0010;
+pub const IFF_NAPI_FRAGS: ::c_int = 0x0020;
pub const IFF_NO_PI: ::c_int = 0x1000;
// Read queue size
pub const TUN_READQ_SIZE: ::c_short = 500;
@@ -1846,6 +1883,18 @@ pub const IFF_DETACH_QUEUE: ::c_int = 0x0400;
// read-only flag
pub const IFF_PERSIST: ::c_int = 0x0800;
pub const IFF_NOFILTER: ::c_int = 0x1000;
+// Socket options
+pub const TUN_TX_TIMESTAMP: ::c_int = 1;
+// Features for GSO (TUNSETOFFLOAD)
+pub const TUN_F_CSUM: ::c_ushort = 0x01; /* You can hand me unchecksummed packets. */
+pub const TUN_F_TSO4: ::c_ushort = 0x02; /* I can handle TSO for IPv4 packets */
+pub const TUN_F_TSO6: ::c_ushort = 0x04; /* I can handle TSO for IPv6 packets */
+pub const TUN_F_TSO_ECN: ::c_ushort = 0x08; /* I can handle TSO with ECN bits. */
+pub const TUN_F_UFO: ::c_ushort = 0x10; /* I can handle UFO packets */
+// Protocol info prepended to the packets (when IFF_NO_PI is not set)
+pub const TUN_PKT_STRIP: ::c_int = 0x0001;
+// Accept all multicast packets
+pub const TUN_FLT_ALLMULTI: ::c_int = 0x0001;
// Since Linux 3.1
pub const SEEK_DATA: ::c_int = 3;
@@ -1903,6 +1952,7 @@ align_const! {
size: [0; __SIZEOF_PTHREAD_RWLOCK_T],
};
}
+pub const PTHREAD_ONCE_INIT: pthread_once_t = 0;
pub const PTHREAD_MUTEX_NORMAL: ::c_int = 0;
pub const PTHREAD_MUTEX_RECURSIVE: ::c_int = 1;
pub const PTHREAD_MUTEX_ERRORCHECK: ::c_int = 2;
@@ -2766,6 +2816,7 @@ pub const SIOCGIFMEM: ::c_ulong = 0x0000891F;
pub const SIOCSIFMEM: ::c_ulong = 0x00008920;
pub const SIOCGIFMTU: ::c_ulong = 0x00008921;
pub const SIOCSIFMTU: ::c_ulong = 0x00008922;
+pub const SIOCSIFNAME: ::c_ulong = 0x00008923;
pub const SIOCSIFHWADDR: ::c_ulong = 0x00008924;
pub const SIOCGIFENCAP: ::c_ulong = 0x00008925;
pub const SIOCSIFENCAP: ::c_ulong = 0x00008926;
@@ -3193,6 +3244,8 @@ pub const ALG_SET_IV: ::c_int = 2;
pub const ALG_SET_OP: ::c_int = 3;
pub const ALG_SET_AEAD_ASSOCLEN: ::c_int = 4;
pub const ALG_SET_AEAD_AUTHSIZE: ::c_int = 5;
+pub const ALG_SET_DRBG_ENTROPY: ::c_int = 6;
+pub const ALG_SET_KEY_BY_KEY_SERIAL: ::c_int = 7;
pub const ALG_OP_DECRYPT: ::c_int = 0;
pub const ALG_OP_ENCRYPT: ::c_int = 1;
@@ -3549,20 +3602,33 @@ pub const UINPUT_MAX_NAME_SIZE: usize = 80;
// uapi/linux/fanotify.h
pub const FAN_ACCESS: u64 = 0x0000_0001;
pub const FAN_MODIFY: u64 = 0x0000_0002;
+pub const FAN_ATTRIB: u64 = 0x0000_0004;
pub const FAN_CLOSE_WRITE: u64 = 0x0000_0008;
pub const FAN_CLOSE_NOWRITE: u64 = 0x0000_0010;
pub const FAN_OPEN: u64 = 0x0000_0020;
+pub const FAN_MOVED_FROM: u64 = 0x0000_0040;
+pub const FAN_MOVED_TO: u64 = 0x0000_0080;
+pub const FAN_CREATE: u64 = 0x0000_0100;
+pub const FAN_DELETE: u64 = 0x0000_0200;
+pub const FAN_DELETE_SELF: u64 = 0x0000_0400;
+pub const FAN_MOVE_SELF: u64 = 0x0000_0800;
+pub const FAN_OPEN_EXEC: u64 = 0x0000_1000;
pub const FAN_Q_OVERFLOW: u64 = 0x0000_4000;
+pub const FAN_FS_ERROR: u64 = 0x0000_8000;
pub const FAN_OPEN_PERM: u64 = 0x0001_0000;
pub const FAN_ACCESS_PERM: u64 = 0x0002_0000;
-
-pub const FAN_ONDIR: u64 = 0x4000_0000;
+pub const FAN_OPEN_EXEC_PERM: u64 = 0x0004_0000;
pub const FAN_EVENT_ON_CHILD: u64 = 0x0800_0000;
+pub const FAN_RENAME: u64 = 0x1000_0000;
+
+pub const FAN_ONDIR: u64 = 0x4000_0000;
+
pub const FAN_CLOSE: u64 = FAN_CLOSE_WRITE | FAN_CLOSE_NOWRITE;
+pub const FAN_MOVE: u64 = FAN_MOVED_FROM | FAN_MOVED_TO;
pub const FAN_CLOEXEC: ::c_uint = 0x0000_0001;
pub const FAN_NONBLOCK: ::c_uint = 0x0000_0002;
@@ -3573,6 +3639,18 @@ pub const FAN_CLASS_PRE_CONTENT: ::c_uint = 0x0000_0008;
pub const FAN_UNLIMITED_QUEUE: ::c_uint = 0x0000_0010;
pub const FAN_UNLIMITED_MARKS: ::c_uint = 0x0000_0020;
+pub const FAN_ENABLE_AUDIT: ::c_uint = 0x0000_0040;
+
+pub const FAN_REPORT_PIDFD: ::c_uint = 0x0000_0080;
+pub const FAN_REPORT_TID: ::c_uint = 0x0000_0100;
+pub const FAN_REPORT_FID: ::c_uint = 0x0000_0200;
+pub const FAN_REPORT_DIR_FID: ::c_uint = 0x0000_0400;
+pub const FAN_REPORT_NAME: ::c_uint = 0x0000_0800;
+pub const FAN_REPORT_TARGET_FID: ::c_uint = 0x0000_1000;
+
+pub const FAN_REPORT_DFID_NAME: ::c_uint = FAN_REPORT_DIR_FID | FAN_REPORT_NAME;
+pub const FAN_REPORT_DFID_NAME_TARGET: ::c_uint =
+ FAN_REPORT_DFID_NAME | FAN_REPORT_FID | FAN_REPORT_TARGET_FID;
pub const FAN_MARK_ADD: ::c_uint = 0x0000_0001;
pub const FAN_MARK_REMOVE: ::c_uint = 0x0000_0002;
@@ -3581,13 +3659,37 @@ pub const FAN_MARK_ONLYDIR: ::c_uint = 0x0000_0008;
pub const FAN_MARK_IGNORED_MASK: ::c_uint = 0x0000_0020;
pub const FAN_MARK_IGNORED_SURV_MODIFY: ::c_uint = 0x0000_0040;
pub const FAN_MARK_FLUSH: ::c_uint = 0x0000_0080;
+pub const FAN_MARK_EVICTABLE: ::c_uint = 0x0000_0200;
+pub const FAN_MARK_IGNORE: ::c_uint = 0x0000_0100;
+
+pub const FAN_MARK_INODE: ::c_uint = 0x0000_0000;
+pub const FAN_MARK_MOUNT: ::c_uint = 0x0000_0010;
+pub const FAN_MARK_FILESYSTEM: ::c_uint = 0x0000_0100;
+
+pub const FAN_MARK_IGNORE_SURV: ::c_uint = FAN_MARK_IGNORE | FAN_MARK_IGNORED_SURV_MODIFY;
pub const FANOTIFY_METADATA_VERSION: u8 = 3;
+pub const FAN_EVENT_INFO_TYPE_FID: u8 = 1;
+pub const FAN_EVENT_INFO_TYPE_DFID_NAME: u8 = 2;
+pub const FAN_EVENT_INFO_TYPE_DFID: u8 = 3;
+pub const FAN_EVENT_INFO_TYPE_PIDFD: u8 = 4;
+pub const FAN_EVENT_INFO_TYPE_ERROR: u8 = 5;
+
+pub const FAN_EVENT_INFO_TYPE_OLD_DFID_NAME: u8 = 10;
+pub const FAN_EVENT_INFO_TYPE_NEW_DFID_NAME: u8 = 12;
+
+pub const FAN_RESPONSE_INFO_NONE: u8 = 0;
+pub const FAN_RESPONSE_INFO_AUDIT_RULE: u8 = 1;
+
pub const FAN_ALLOW: u32 = 0x01;
pub const FAN_DENY: u32 = 0x02;
+pub const FAN_AUDIT: u32 = 0x10;
+pub const FAN_INFO: u32 = 0x20;
pub const FAN_NOFD: ::c_int = -1;
+pub const FAN_NOPIDFD: ::c_int = FAN_NOFD;
+pub const FAN_EPIDFD: ::c_int = -2;
pub const FUTEX_WAIT: ::c_int = 0;
pub const FUTEX_WAKE: ::c_int = 1;
@@ -4581,6 +4683,7 @@ extern "C" {
attr: *const ::pthread_attr_t,
guardsize: *mut ::size_t,
) -> ::c_int;
+ pub fn pthread_attr_setguardsize(attr: *mut ::pthread_attr_t, guardsize: ::size_t) -> ::c_int;
pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int;
pub fn sched_get_priority_min(policy: ::c_int) -> ::c_int;
pub fn pthread_condattr_getpshared(
@@ -4769,7 +4872,7 @@ extern "C" {
newfd: ::c_int,
) -> ::c_int;
pub fn fread_unlocked(
- ptr: *mut ::c_void,
+ buf: *mut ::c_void,
size: ::size_t,
nobj: ::size_t,
stream: *mut ::FILE,
@@ -4847,6 +4950,8 @@ extern "C" {
longindex: *mut ::c_int,
) -> ::c_int;
+ pub fn pthread_once(control: *mut pthread_once_t, routine: extern "C" fn()) -> ::c_int;
+
pub fn copy_file_range(
fd_in: ::c_int,
off_in: *mut ::off64_t,
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b32/arm/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/b32/arm/mod.rs
index c47fa2c4c..8225f26ad 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b32/arm/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b32/arm/mod.rs
@@ -235,6 +235,7 @@ pub const O_LARGEFILE: ::c_int = 0o400000;
pub const MADV_SOFT_OFFLINE: ::c_int = 101;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
+pub const MCL_ONFAULT: ::c_int = 0x0004;
pub const CBAUD: ::tcflag_t = 0o0010017;
pub const TAB1: ::c_int = 0x00000800;
pub const TAB2: ::c_int = 0x00001000;
@@ -311,8 +312,6 @@ pub const O_SYNC: ::c_int = 1052672;
pub const O_RSYNC: ::c_int = 1052672;
pub const O_DSYNC: ::c_int = 4096;
-pub const SOCK_NONBLOCK: ::c_int = 2048;
-
pub const MAP_ANON: ::c_int = 0x0020;
pub const MAP_GROWSDOWN: ::c_int = 0x0100;
pub const MAP_DENYWRITE: ::c_int = 0x0800;
@@ -326,7 +325,6 @@ pub const MAP_SYNC: ::c_int = 0x080000;
pub const SOCK_STREAM: ::c_int = 1;
pub const SOCK_DGRAM: ::c_int = 2;
-pub const SOCK_SEQPACKET: ::c_int = 5;
pub const EDEADLK: ::c_int = 35;
pub const ENAMETOOLONG: ::c_int = 36;
@@ -451,9 +449,6 @@ pub const F_GETOWN: ::c_int = 9;
pub const F_SETLK: ::c_int = 13;
pub const F_SETLKW: ::c_int = 14;
pub const F_SETOWN: ::c_int = 8;
-pub const F_OFD_GETLK: ::c_int = 36;
-pub const F_OFD_SETLK: ::c_int = 37;
-pub const F_OFD_SETLKW: ::c_int = 38;
pub const VEOF: usize = 4;
pub const VEOL: usize = 11;
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b32/hexagon.rs b/vendor/libc/src/unix/linux_like/linux/musl/b32/hexagon.rs
index f83d208d5..089c06f85 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b32/hexagon.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b32/hexagon.rs
@@ -225,9 +225,6 @@ pub const F_GETOWN_EX: ::c_int = 16;
pub const F_GETSIG: ::c_int = 11;
pub const F_LINUX_SPECIFIC_BASE: ::c_int = 1024;
pub const FLUSHO: ::c_int = 4096;
-pub const F_OFD_GETLK: ::c_int = 36;
-pub const F_OFD_SETLK: ::c_int = 37;
-pub const F_OFD_SETLKW: ::c_int = 38;
pub const F_OWNER_PGRP: ::c_int = 2;
pub const F_OWNER_PID: ::c_int = 1;
pub const F_OWNER_TID: ::c_int = 0;
@@ -265,7 +262,6 @@ pub const PF_FILE: ::c_int = 1;
pub const PF_KCM: ::c_int = 41;
pub const PF_MAX: ::c_int = 43;
pub const PF_QIPCRTR: ::c_int = 42;
-#[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const SA_ONSTACK: ::c_int = 0x08000000;
pub const SA_SIGINFO: ::c_int = 0x00000004;
pub const SA_NOCLDWAIT: ::c_int = 0x00000002;
@@ -295,8 +291,6 @@ pub const SIG_SETMASK: ::c_int = 2; // FIXME check these
pub const SIG_BLOCK: ::c_int = 0x000000;
pub const SIG_UNBLOCK: ::c_int = 0x01;
pub const SOCK_DGRAM: ::c_int = 2;
-pub const SOCK_NONBLOCK: ::c_int = 2048;
-pub const SOCK_SEQPACKET: ::c_int = 5;
pub const SOCK_STREAM: ::c_int = 1;
pub const SOL_CAIF: ::c_int = 278;
pub const SOL_IUCV: ::c_int = 277;
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b32/mips/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/b32/mips/mod.rs
index d09b8278e..2fb405bbc 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b32/mips/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b32/mips/mod.rs
@@ -174,6 +174,7 @@ pub const O_LARGEFILE: ::c_int = 0x2000;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
+pub const MCL_ONFAULT: ::c_int = 0x0004;
pub const CBAUD: ::tcflag_t = 0o0010017;
pub const TAB1: ::c_int = 0x00000800;
pub const TAB2: ::c_int = 0x00001000;
@@ -250,8 +251,6 @@ pub const O_SYNC: ::c_int = 0o40020;
pub const O_RSYNC: ::c_int = 0o40020;
pub const O_DSYNC: ::c_int = 0o020;
-pub const SOCK_NONBLOCK: ::c_int = 0o200;
-
pub const MAP_ANON: ::c_int = 0x800;
pub const MAP_GROWSDOWN: ::c_int = 0x1000;
pub const MAP_DENYWRITE: ::c_int = 0x2000;
@@ -351,7 +350,6 @@ pub const ERFKILL: ::c_int = 167;
pub const SOCK_STREAM: ::c_int = 2;
pub const SOCK_DGRAM: ::c_int = 1;
-pub const SOCK_SEQPACKET: ::c_int = 5;
pub const SA_ONSTACK: ::c_int = 0x08000000;
pub const SA_SIGINFO: ::c_int = 8;
@@ -388,9 +386,6 @@ pub const F_GETOWN: ::c_int = 23;
pub const F_SETLK: ::c_int = 34;
pub const F_SETLKW: ::c_int = 35;
pub const F_SETOWN: ::c_int = 24;
-pub const F_OFD_GETLK: ::c_int = 36;
-pub const F_OFD_SETLK: ::c_int = 37;
-pub const F_OFD_SETLKW: ::c_int = 38;
pub const VEOF: usize = 16;
pub const VEOL: usize = 17;
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b32/powerpc.rs b/vendor/libc/src/unix/linux_like/linux/musl/b32/powerpc.rs
index ec4f2047e..bdf25455f 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b32/powerpc.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b32/powerpc.rs
@@ -167,6 +167,7 @@ pub const O_LARGEFILE: ::c_int = 0x10000;
pub const MCL_CURRENT: ::c_int = 0x2000;
pub const MCL_FUTURE: ::c_int = 0x4000;
+pub const MCL_ONFAULT: ::c_int = 0x8000;
pub const CBAUD: ::tcflag_t = 0o0000377;
pub const TAB1: ::c_int = 0x00000400;
pub const TAB2: ::c_int = 0x00000800;
@@ -243,8 +244,6 @@ pub const O_SYNC: ::c_int = 1052672;
pub const O_RSYNC: ::c_int = 1052672;
pub const O_DSYNC: ::c_int = 4096;
-pub const SOCK_NONBLOCK: ::c_int = 2048;
-
pub const MAP_ANON: ::c_int = 0x0020;
pub const MAP_GROWSDOWN: ::c_int = 0x0100;
pub const MAP_DENYWRITE: ::c_int = 0x0800;
@@ -262,7 +261,6 @@ pub const PTRACE_SYSEMU_SINGLESTEP: ::c_int = 0x1e;
pub const SOCK_STREAM: ::c_int = 1;
pub const SOCK_DGRAM: ::c_int = 2;
-pub const SOCK_SEQPACKET: ::c_int = 5;
pub const EDEADLK: ::c_int = 35;
pub const ENAMETOOLONG: ::c_int = 36;
@@ -385,9 +383,6 @@ pub const F_GETOWN: ::c_int = 9;
pub const F_SETLK: ::c_int = 13;
pub const F_SETLKW: ::c_int = 14;
pub const F_SETOWN: ::c_int = 8;
-pub const F_OFD_GETLK: ::c_int = 36;
-pub const F_OFD_SETLK: ::c_int = 37;
-pub const F_OFD_SETLKW: ::c_int = 38;
pub const VEOF: usize = 4;
pub const VEOL: usize = 6;
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs
index bf7a4f59c..f963f645a 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs
@@ -323,9 +323,11 @@ pub const POLLWRBAND: ::c_short = 512;
pub const O_ASYNC: ::c_int = 8192;
pub const O_NDELAY: ::c_int = 2048;
pub const EFD_NONBLOCK: ::c_int = 2048;
-pub const F_GETLK: ::c_int = 5;
-pub const F_GETOWN: ::c_int = 9;
pub const F_SETOWN: ::c_int = 8;
+pub const F_GETOWN: ::c_int = 9;
+pub const F_GETLK: ::c_int = 12;
+pub const F_SETLK: ::c_int = 13;
+pub const F_SETLKW: ::c_int = 14;
pub const SFD_NONBLOCK: ::c_int = 2048;
pub const TCSANOW: ::c_int = 0;
pub const TCSADRAIN: ::c_int = 1;
@@ -353,6 +355,7 @@ pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
pub const __SIZEOF_PTHREAD_BARRIERATTR_T: usize = 4;
pub const O_DIRECT: ::c_int = 16384;
pub const O_DIRECTORY: ::c_int = 65536;
+pub const O_LARGEFILE: ::c_int = 0o0100000;
pub const O_NOFOLLOW: ::c_int = 131072;
pub const MAP_HUGETLB: ::c_int = 262144;
pub const MAP_LOCKED: ::c_int = 8192;
@@ -376,6 +379,7 @@ pub const FIONCLEX: ::c_int = 21584;
pub const FIONBIO: ::c_int = 21537;
pub const MCL_CURRENT: ::c_int = 1;
pub const MCL_FUTURE: ::c_int = 2;
+pub const MCL_ONFAULT: ::c_int = 4;
pub const SIGSTKSZ: ::size_t = 8192;
pub const MINSIGSTKSZ: ::size_t = 2048;
pub const CBAUD: ::tcflag_t = 4111;
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b32/x86/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/b32/x86/mod.rs
index aaca917fa..944d6e787 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b32/x86/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b32/x86/mod.rs
@@ -224,6 +224,7 @@ pub const O_LARGEFILE: ::c_int = 0o0100000;
pub const MADV_SOFT_OFFLINE: ::c_int = 101;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
+pub const MCL_ONFAULT: ::c_int = 0x0004;
pub const CBAUD: ::tcflag_t = 0o0010017;
pub const TAB1: ::c_int = 0x00000800;
pub const TAB2: ::c_int = 0x00001000;
@@ -300,8 +301,6 @@ pub const O_SYNC: ::c_int = 1052672;
pub const O_RSYNC: ::c_int = 1052672;
pub const O_DSYNC: ::c_int = 4096;
-pub const SOCK_NONBLOCK: ::c_int = 2048;
-
pub const MAP_ANON: ::c_int = 0x0020;
pub const MAP_GROWSDOWN: ::c_int = 0x0100;
pub const MAP_DENYWRITE: ::c_int = 0x0800;
@@ -315,7 +314,6 @@ pub const MAP_SYNC: ::c_int = 0x080000;
pub const SOCK_STREAM: ::c_int = 1;
pub const SOCK_DGRAM: ::c_int = 2;
-pub const SOCK_SEQPACKET: ::c_int = 5;
pub const EDEADLK: ::c_int = 35;
pub const ENAMETOOLONG: ::c_int = 36;
@@ -441,9 +439,6 @@ pub const F_GETOWN: ::c_int = 9;
pub const F_SETLK: ::c_int = 13;
pub const F_SETLKW: ::c_int = 14;
pub const F_SETOWN: ::c_int = 8;
-pub const F_OFD_GETLK: ::c_int = 36;
-pub const F_OFD_SETLK: ::c_int = 37;
-pub const F_OFD_SETLKW: ::c_int = 38;
pub const VEOF: usize = 4;
pub const VEOL: usize = 11;
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs
index 14b4bc6d6..54e072b31 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs
@@ -250,9 +250,6 @@ pub const F_GETOWN: ::c_int = 9;
pub const F_SETLK: ::c_int = 6;
pub const F_SETLKW: ::c_int = 7;
pub const F_SETOWN: ::c_int = 8;
-pub const F_OFD_GETLK: ::c_int = 36;
-pub const F_OFD_SETLK: ::c_int = 37;
-pub const F_OFD_SETLKW: ::c_int = 38;
pub const VEOF: usize = 4;
@@ -567,6 +564,7 @@ pub const SYS_set_mempolicy_home_node: ::c_long = 450;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
+pub const MCL_ONFAULT: ::c_int = 0x0004;
pub const CBAUD: ::tcflag_t = 0o0010017;
pub const TAB1: ::c_int = 0x00000800;
pub const TAB2: ::c_int = 0x00001000;
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b64/mips64.rs b/vendor/libc/src/unix/linux_like/linux/musl/b64/mips64.rs
index 22ac91690..18fa6c664 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/mips64.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/mips64.rs
@@ -612,12 +612,10 @@ pub const F_GETOWN: ::c_int = 23;
pub const F_SETOWN: ::c_int = 24;
pub const F_SETLK: ::c_int = 6;
pub const F_SETLKW: ::c_int = 7;
-pub const F_OFD_GETLK: ::c_int = 36;
-pub const F_OFD_SETLK: ::c_int = 37;
-pub const F_OFD_SETLKW: ::c_int = 38;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
+pub const MCL_ONFAULT: ::c_int = 0x0004;
pub const CBAUD: ::tcflag_t = 0o0010017;
pub const TAB1: ::tcflag_t = 0x00000800;
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs
index f437355d9..05586cdb4 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs
@@ -134,10 +134,6 @@ pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
pub const __SIZEOF_PTHREAD_BARRIER_T: usize = 32;
-pub const SOCK_NONBLOCK: ::c_int = 2048;
-
-pub const SOCK_SEQPACKET: ::c_int = 5;
-
extern "C" {
pub fn getrandom(buf: *mut ::c_void, buflen: ::size_t, flags: ::c_uint) -> ::ssize_t;
}
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b64/powerpc64.rs b/vendor/libc/src/unix/linux_like/linux/musl/b64/powerpc64.rs
index c9bd94135..202abe879 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/powerpc64.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/powerpc64.rs
@@ -212,9 +212,6 @@ pub const F_GETOWN: ::c_int = 9;
pub const F_SETLK: ::c_int = 6;
pub const F_SETLKW: ::c_int = 7;
pub const F_SETOWN: ::c_int = 8;
-pub const F_OFD_GETLK: ::c_int = 36;
-pub const F_OFD_SETLK: ::c_int = 37;
-pub const F_OFD_SETLKW: ::c_int = 38;
pub const VEOF: usize = 4;
@@ -626,6 +623,7 @@ pub const FLUSHO: ::tcflag_t = 0x00800000;
pub const MCL_CURRENT: ::c_int = 0x2000;
pub const MCL_FUTURE: ::c_int = 0x4000;
+pub const MCL_ONFAULT: ::c_int = 0x8000;
pub const CBAUD: ::tcflag_t = 0xff;
pub const TAB1: ::c_int = 0x400;
pub const TAB2: ::c_int = 0x800;
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
index 9e9dbf6c8..393f54d3f 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
@@ -469,6 +469,9 @@ pub const SYS_faccessat2: ::c_long = 439;
pub const SYS_process_madvise: ::c_long = 440;
pub const SYS_epoll_pwait2: ::c_long = 441;
pub const SYS_mount_setattr: ::c_long = 442;
+pub const SYS_landlock_create_ruleset: ::c_long = 444;
+pub const SYS_landlock_add_rule: ::c_long = 445;
+pub const SYS_landlock_restrict_self: ::c_long = 446;
pub const O_APPEND: ::c_int = 1024;
pub const O_DIRECT: ::c_int = 0x4000;
@@ -604,9 +607,6 @@ pub const F_GETOWN: ::c_int = 9;
pub const F_SETLK: ::c_int = 6;
pub const F_SETLKW: ::c_int = 7;
pub const F_SETOWN: ::c_int = 8;
-pub const F_OFD_GETLK: ::c_int = 36;
-pub const F_OFD_SETLK: ::c_int = 37;
-pub const F_OFD_SETLKW: ::c_int = 38;
pub const VEOF: usize = 4;
@@ -630,6 +630,7 @@ pub const MAP_SYNC: ::c_int = 0x080000;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
+pub const MCL_ONFAULT: ::c_int = 0x0004;
pub const CBAUD: ::tcflag_t = 0o0010017;
pub const TAB1: ::c_int = 0x00000800;
pub const TAB2: ::c_int = 0x00001000;
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b64/s390x.rs b/vendor/libc/src/unix/linux_like/linux/musl/b64/s390x.rs
index f338dcc54..aa4cbf87f 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/s390x.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/s390x.rs
@@ -290,15 +290,13 @@ pub const EXTPROC: ::tcflag_t = 0x00010000;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
+pub const MCL_ONFAULT: ::c_int = 0x0004;
pub const F_GETLK: ::c_int = 5;
pub const F_GETOWN: ::c_int = 9;
pub const F_SETOWN: ::c_int = 8;
pub const F_SETLK: ::c_int = 6;
pub const F_SETLKW: ::c_int = 7;
-pub const F_OFD_GETLK: ::c_int = 36;
-pub const F_OFD_SETLK: ::c_int = 37;
-pub const F_OFD_SETLKW: ::c_int = 38;
pub const VTIME: usize = 5;
pub const VSWTC: usize = 7;
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs
index 9decf91bc..4d1786800 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs
@@ -805,9 +805,6 @@ pub const F_GETOWN: ::c_int = 9;
pub const F_SETLK: ::c_int = 6;
pub const F_SETLKW: ::c_int = 7;
pub const F_SETOWN: ::c_int = 8;
-pub const F_OFD_GETLK: ::c_int = 36;
-pub const F_OFD_SETLK: ::c_int = 37;
-pub const F_OFD_SETLKW: ::c_int = 38;
pub const VEOF: usize = 4;
@@ -831,6 +828,7 @@ pub const MAP_SYNC: ::c_int = 0x080000;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
+pub const MCL_ONFAULT: ::c_int = 0x0004;
pub const CBAUD: ::tcflag_t = 0o0010017;
pub const TAB1: ::c_int = 0x00000800;
pub const TAB2: ::c_int = 0x00001000;
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/mod.rs
index 4c6053389..b67d55e99 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/mod.rs
@@ -512,6 +512,10 @@ pub const ECOMM: ::c_int = 70;
pub const EPROTO: ::c_int = 71;
pub const EDOTDOT: ::c_int = 73;
+pub const F_OFD_GETLK: ::c_int = 36;
+pub const F_OFD_SETLK: ::c_int = 37;
+pub const F_OFD_SETLKW: ::c_int = 38;
+
pub const F_RDLCK: ::c_int = 0;
pub const F_WRLCK: ::c_int = 1;
pub const F_UNLCK: ::c_int = 2;
@@ -541,7 +545,9 @@ pub const POSIX_MADV_DONTNEED: ::c_int = 4;
pub const MAP_ANONYMOUS: ::c_int = MAP_ANON;
+pub const SOCK_SEQPACKET: ::c_int = 5;
pub const SOCK_DCCP: ::c_int = 6;
+pub const SOCK_NONBLOCK: ::c_int = O_NONBLOCK;
pub const SOCK_PACKET: ::c_int = 10;
pub const SOMAXCONN: ::c_int = 128;
@@ -585,11 +591,8 @@ pub const PTRACE_SEIZE: ::c_int = 0x4206;
pub const PTRACE_INTERRUPT: ::c_int = 0x4207;
pub const PTRACE_LISTEN: ::c_int = 0x4208;
pub const PTRACE_PEEKSIGINFO: ::c_int = 0x4209;
-
-pub const FAN_MARK_INODE: ::c_uint = 0x0000_0000;
-pub const FAN_MARK_MOUNT: ::c_uint = 0x0000_0010;
-// NOTE: FAN_MARK_FILESYSTEM requires Linux Kernel >= 4.20.0
-pub const FAN_MARK_FILESYSTEM: ::c_uint = 0x0000_0100;
+pub const PTRACE_GETSIGMASK: ::c_uint = 0x420a;
+pub const PTRACE_SETSIGMASK: ::c_uint = 0x420b;
pub const AF_IB: ::c_int = 27;
pub const AF_MPLS: ::c_int = 28;
diff --git a/vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs b/vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs
index 4a01e0cd8..4afb98e95 100644
--- a/vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs
@@ -109,6 +109,7 @@ impl siginfo_t {
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
+pub const MCL_ONFAULT: ::c_int = 0x0004;
pub const SIGEV_THREAD_ID: ::c_int = 4;
@@ -245,9 +246,6 @@ pub const EDEADLOCK: ::c_int = EDEADLK;
pub const EXTA: ::c_uint = B19200;
pub const EXTB: ::c_uint = B38400;
pub const EXTPROC: ::tcflag_t = 0200000;
-pub const FAN_MARK_FILESYSTEM: ::c_int = 0x00000100;
-pub const FAN_MARK_INODE: ::c_int = 0x00000000;
-pub const FAN_MARK_MOUNT: ::c_int = 0x10;
pub const FOPEN_MAX: ::c_int = 16;
pub const F_GETOWN: ::c_int = 9;
pub const F_OFD_GETLK: ::c_int = 36;
@@ -282,7 +280,9 @@ pub const PF_NFC: ::c_int = 39;
pub const PF_VSOCK: ::c_int = 40;
pub const POSIX_MADV_DONTNEED: ::c_int = 4;
pub const PTRACE_EVENT_STOP: ::c_int = 128;
+pub const PTRACE_GETSIGMASK: ::c_uint = 0x420a;
pub const PTRACE_PEEKSIGINFO: ::c_int = 0x4209;
+pub const PTRACE_SETSIGMASK: ::c_uint = 0x420b;
pub const RTLD_NOLOAD: ::c_int = 0x00004;
pub const RUSAGE_THREAD: ::c_int = 1;
pub const SHM_EXEC: ::c_int = 0100000;
diff --git a/vendor/libc/src/unix/linux_like/mod.rs b/vendor/libc/src/unix/linux_like/mod.rs
index 3117c18b8..26fd68de4 100644
--- a/vendor/libc/src/unix/linux_like/mod.rs
+++ b/vendor/libc/src/unix/linux_like/mod.rs
@@ -1783,10 +1783,10 @@ extern "C" {
// LFS64 extensions
//
-// * musl has 64-bit versions only so aliases the LFS64 symbols to the standard ones
+// * musl and Emscripten has 64-bit versions only so aliases the LFS64 symbols to the standard ones
// * ulibc doesn't have preadv64/pwritev64
cfg_if! {
- if #[cfg(not(target_env = "musl"))] {
+ if #[cfg(not(any(target_env = "musl", target_os = "emscripten")))] {
extern "C" {
pub fn fstatfs64(fd: ::c_int, buf: *mut statfs64) -> ::c_int;
pub fn statvfs64(path: *const ::c_char, buf: *mut statvfs64) -> ::c_int;
@@ -1844,7 +1844,7 @@ cfg_if! {
}
cfg_if! {
- if #[cfg(not(any(target_env = "uclibc", target_env = "musl")))] {
+ if #[cfg(not(any(target_env = "uclibc", target_env = "musl", target_os = "emscripten")))] {
extern "C" {
pub fn preadv64(
fd: ::c_int,
diff --git a/vendor/libc/src/unix/mod.rs b/vendor/libc/src/unix/mod.rs
index 9b5ce0fce..9daebcaa6 100644
--- a/vendor/libc/src/unix/mod.rs
+++ b/vendor/libc/src/unix/mod.rs
@@ -388,11 +388,6 @@ cfg_if! {
#[link(name = "c")]
#[link(name = "m")]
extern {}
- } else if #[cfg(target_os = "hermit")] {
- // no_default_libraries is set to false for HermitCore, so only a link
- // to "pthread" needs to be added.
- #[link(name = "pthread")]
- extern {}
} else if #[cfg(target_env = "illumos")] {
#[link(name = "c")]
#[link(name = "m")]
@@ -1081,6 +1076,10 @@ extern "C" {
pub fn pthread_exit(value: *mut ::c_void) -> !;
pub fn pthread_attr_init(attr: *mut ::pthread_attr_t) -> ::c_int;
pub fn pthread_attr_destroy(attr: *mut ::pthread_attr_t) -> ::c_int;
+ pub fn pthread_attr_getstacksize(
+ attr: *const ::pthread_attr_t,
+ stacksize: *mut ::size_t,
+ ) -> ::c_int;
pub fn pthread_attr_setstacksize(attr: *mut ::pthread_attr_t, stack_size: ::size_t) -> ::c_int;
pub fn pthread_attr_setdetachstate(attr: *mut ::pthread_attr_t, state: ::c_int) -> ::c_int;
pub fn pthread_detach(thread: ::pthread_t) -> ::c_int;
@@ -1413,6 +1412,7 @@ extern "C" {
pub fn lockf(fd: ::c_int, cmd: ::c_int, len: ::off_t) -> ::c_int;
}
+
cfg_if! {
if #[cfg(not(any(target_os = "emscripten",
target_os = "android",
@@ -1582,9 +1582,6 @@ cfg_if! {
} else if #[cfg(target_os = "haiku")] {
mod haiku;
pub use self::haiku::*;
- } else if #[cfg(target_os = "hermit")] {
- mod hermit;
- pub use self::hermit::*;
} else if #[cfg(target_os = "redox")] {
mod redox;
pub use self::redox::*;
@@ -1594,6 +1591,9 @@ cfg_if! {
} else if #[cfg(target_os = "aix")] {
mod aix;
pub use self::aix::*;
+ } else if #[cfg(target_os = "hurd")] {
+ mod hurd;
+ pub use self::hurd::*;
} else {
// Unknown target_os
}
diff --git a/vendor/libc/src/unix/newlib/aarch64/mod.rs b/vendor/libc/src/unix/newlib/aarch64/mod.rs
index d686b3692..2b4713c9a 100644
--- a/vendor/libc/src/unix/newlib/aarch64/mod.rs
+++ b/vendor/libc/src/unix/newlib/aarch64/mod.rs
@@ -51,4 +51,4 @@ pub const MSG_WAITALL: ::c_int = 0;
pub const MSG_MORE: ::c_int = 0;
pub const MSG_NOSIGNAL: ::c_int = 0;
-pub use crate::unix::newlib::generic::{sigset_t, stat};
+pub use crate::unix::newlib::generic::{dirent, sigset_t, stat};
diff --git a/vendor/libc/src/unix/newlib/arm/mod.rs b/vendor/libc/src/unix/newlib/arm/mod.rs
index f644349cb..23b75977e 100644
--- a/vendor/libc/src/unix/newlib/arm/mod.rs
+++ b/vendor/libc/src/unix/newlib/arm/mod.rs
@@ -53,4 +53,4 @@ pub const MSG_WAITALL: ::c_int = 0;
pub const MSG_MORE: ::c_int = 0;
pub const MSG_NOSIGNAL: ::c_int = 0;
-pub use crate::unix::newlib::generic::{sigset_t, stat};
+pub use crate::unix::newlib::generic::{dirent, sigset_t, stat};
diff --git a/vendor/libc/src/unix/newlib/espidf/mod.rs b/vendor/libc/src/unix/newlib/espidf/mod.rs
index 804cd6645..409d7ad9b 100644
--- a/vendor/libc/src/unix/newlib/espidf/mod.rs
+++ b/vendor/libc/src/unix/newlib/espidf/mod.rs
@@ -107,4 +107,4 @@ extern "C" {
pub fn eventfd(initval: ::c_uint, flags: ::c_int) -> ::c_int;
}
-pub use crate::unix::newlib::generic::{sigset_t, stat};
+pub use crate::unix::newlib::generic::{dirent, sigset_t, stat};
diff --git a/vendor/libc/src/unix/newlib/generic.rs b/vendor/libc/src/unix/newlib/generic.rs
index db7797f17..e45413a7a 100644
--- a/vendor/libc/src/unix/newlib/generic.rs
+++ b/vendor/libc/src/unix/newlib/generic.rs
@@ -24,4 +24,10 @@ s! {
pub st_blocks: ::blkcnt_t,
pub st_spare4: [::c_long; 2usize],
}
+
+ pub struct dirent {
+ pub d_ino: ::ino_t,
+ pub d_type: ::c_uchar,
+ pub d_name: [::c_char; 256usize],
+ }
}
diff --git a/vendor/libc/src/unix/newlib/horizon/mod.rs b/vendor/libc/src/unix/newlib/horizon/mod.rs
index bcb93ad9d..9c70f7b03 100644
--- a/vendor/libc/src/unix/newlib/horizon/mod.rs
+++ b/vendor/libc/src/unix/newlib/horizon/mod.rs
@@ -266,3 +266,5 @@ extern "C" {
pub fn gethostid() -> ::c_long;
}
+
+pub use crate::unix::newlib::generic::dirent;
diff --git a/vendor/libc/src/unix/newlib/mod.rs b/vendor/libc/src/unix/newlib/mod.rs
index ce84f1421..a572cc38b 100644
--- a/vendor/libc/src/unix/newlib/mod.rs
+++ b/vendor/libc/src/unix/newlib/mod.rs
@@ -1,13 +1,7 @@
pub type blkcnt_t = i32;
pub type blksize_t = i32;
-cfg_if! {
- if #[cfg(target_os = "vita")] {
- pub type clockid_t = ::c_uint;
- } else {
- pub type clockid_t = ::c_ulong;
- }
-}
+pub type clockid_t = ::c_ulong;
cfg_if! {
if #[cfg(any(target_os = "espidf"))] {
@@ -170,16 +164,6 @@ s! {
pub sa_flags: ::c_int,
}
- pub struct dirent {
- #[cfg(not(target_os = "vita"))]
- pub d_ino: ino_t,
- #[cfg(not(target_os = "vita"))]
- pub d_type: ::c_uchar,
- #[cfg(target_os = "vita")]
- __offset: [u8; 88],
- pub d_name: [::c_char; 256usize],
- }
-
pub struct stack_t {
pub ss_sp: *mut ::c_void,
pub ss_flags: ::c_int,
@@ -546,8 +530,16 @@ pub const IFF_LINK2: ::c_int = 0x4000; // per link layer defined bit
pub const IFF_ALTPHYS: ::c_int = IFF_LINK2; // use alternate physical connection
pub const IFF_MULTICAST: ::c_int = 0x8000; // supports multicast
-pub const TCP_NODELAY: ::c_int = 8193;
-pub const TCP_MAXSEG: ::c_int = 8194;
+cfg_if! {
+ if #[cfg(target_os = "vita")] {
+ pub const TCP_NODELAY: ::c_int = 1;
+ pub const TCP_MAXSEG: ::c_int = 2;
+ } else {
+ pub const TCP_NODELAY: ::c_int = 8193;
+ pub const TCP_MAXSEG: ::c_int = 8194;
+ }
+}
+
pub const TCP_NOPUSH: ::c_int = 4;
pub const TCP_NOOPT: ::c_int = 8;
pub const TCP_KEEPIDLE: ::c_int = 256;
@@ -561,13 +553,25 @@ cfg_if! {
pub const IP_TOS: ::c_int = 3;
}
}
-pub const IP_TTL: ::c_int = 8;
+cfg_if! {
+ if #[cfg(target_os = "vita")] {
+ pub const IP_TTL: ::c_int = 4;
+ } else {
+ pub const IP_TTL: ::c_int = 8;
+ }
+}
pub const IP_MULTICAST_IF: ::c_int = 9;
pub const IP_MULTICAST_TTL: ::c_int = 10;
pub const IP_MULTICAST_LOOP: ::c_int = 11;
-pub const IP_ADD_MEMBERSHIP: ::c_int = 11;
-pub const IP_DROP_MEMBERSHIP: ::c_int = 12;
-
+cfg_if! {
+ if #[cfg(target_os = "vita")] {
+ pub const IP_ADD_MEMBERSHIP: ::c_int = 12;
+ pub const IP_DROP_MEMBERSHIP: ::c_int = 13;
+ } else {
+ pub const IP_ADD_MEMBERSHIP: ::c_int = 11;
+ pub const IP_DROP_MEMBERSHIP: ::c_int = 12;
+ }
+}
pub const IPV6_UNICAST_HOPS: ::c_int = 4;
pub const IPV6_MULTICAST_IF: ::c_int = 9;
pub const IPV6_MULTICAST_HOPS: ::c_int = 10;
@@ -598,10 +602,15 @@ pub const NI_NAMEREQD: ::c_int = 4;
pub const NI_NUMERICSERV: ::c_int = 0;
pub const NI_DGRAM: ::c_int = 0;
-pub const EAI_FAMILY: ::c_int = -303;
-pub const EAI_MEMORY: ::c_int = -304;
-pub const EAI_NONAME: ::c_int = -305;
-pub const EAI_SOCKTYPE: ::c_int = -307;
+cfg_if! {
+ // Defined in vita/mod.rs for "vita"
+ if #[cfg(not(target_os = "vita"))] {
+ pub const EAI_FAMILY: ::c_int = -303;
+ pub const EAI_MEMORY: ::c_int = -304;
+ pub const EAI_NONAME: ::c_int = -305;
+ pub const EAI_SOCKTYPE: ::c_int = -307;
+ }
+}
pub const EXIT_SUCCESS: ::c_int = 0;
pub const EXIT_FAILURE: ::c_int = 1;
diff --git a/vendor/libc/src/unix/newlib/powerpc/mod.rs b/vendor/libc/src/unix/newlib/powerpc/mod.rs
index 6bed1ce27..10faadbdf 100644
--- a/vendor/libc/src/unix/newlib/powerpc/mod.rs
+++ b/vendor/libc/src/unix/newlib/powerpc/mod.rs
@@ -5,7 +5,7 @@ pub type wchar_t = ::c_int;
pub type c_long = i32;
pub type c_ulong = u32;
-pub use crate::unix::newlib::generic::{sigset_t, stat};
+pub use crate::unix::newlib::generic::{dirent, sigset_t, stat};
// the newlib shipped with devkitPPC does not support the following components:
// - sockaddr
diff --git a/vendor/libc/src/unix/newlib/vita/mod.rs b/vendor/libc/src/unix/newlib/vita/mod.rs
index 6e2e4d3eb..e80f061ea 100644
--- a/vendor/libc/src/unix/newlib/vita/mod.rs
+++ b/vendor/libc/src/unix/newlib/vita/mod.rs
@@ -9,6 +9,16 @@ pub type c_ulong = u32;
pub type sigset_t = ::c_ulong;
s! {
+ pub struct msghdr {
+ pub msg_name: *mut ::c_void,
+ pub msg_namelen: ::socklen_t,
+ pub msg_iov: *mut ::iovec,
+ pub msg_iovlen: ::c_int,
+ pub msg_control: *mut ::c_void,
+ pub msg_controllen: ::socklen_t,
+ pub msg_flags: ::c_int,
+ }
+
pub struct sockaddr {
pub sa_len: u8,
pub sa_family: ::sa_family_t,
@@ -35,6 +45,7 @@ s! {
}
pub struct sockaddr_un {
+ pub ss_len: u8,
pub sun_family: ::sa_family_t,
pub sun_path: [::c_char; 108usize],
}
@@ -42,9 +53,9 @@ s! {
pub struct sockaddr_storage {
pub ss_len: u8,
pub ss_family: ::sa_family_t,
- pub __ss_pad1: [u8; 4],
+ pub __ss_pad1: [u8; 2],
pub __ss_align: i64,
- pub __ss_pad2: [u8; 4],
+ pub __ss_pad2: [u8; 116],
}
pub struct sched_param {
@@ -67,16 +78,31 @@ s! {
pub st_blocks: ::blkcnt_t,
pub st_spare4: [::c_long; 2usize],
}
+
+ #[repr(align(8))]
+ pub struct dirent {
+ __offset: [u8; 88],
+ pub d_name: [::c_char; 256usize],
+ __pad: [u8; 8],
+ }
}
pub const AF_UNIX: ::c_int = 1;
pub const AF_INET6: ::c_int = 24;
+pub const SOCK_RAW: ::c_int = 3;
+pub const SOCK_RDM: ::c_int = 4;
+pub const SOCK_SEQPACKET: ::c_int = 5;
+
pub const FIONBIO: ::c_ulong = 1;
pub const POLLIN: ::c_short = 0x0001;
pub const POLLPRI: ::c_short = POLLIN;
pub const POLLOUT: ::c_short = 0x0004;
+pub const POLLRDNORM: ::c_short = POLLIN;
+pub const POLLRDBAND: ::c_short = POLLIN;
+pub const POLLWRNORM: ::c_short = POLLOUT;
+pub const POLLWRBAND: ::c_short = POLLOUT;
pub const POLLERR: ::c_short = 0x0008;
pub const POLLHUP: ::c_short = 0x0010;
pub const POLLNVAL: ::c_short = 0x0020;
@@ -141,11 +167,16 @@ pub const _SC_PAGESIZE: ::c_int = 8;
pub const _SC_GETPW_R_SIZE_MAX: ::c_int = 51;
pub const PTHREAD_STACK_MIN: ::size_t = 32 * 1024;
+pub const IP_HDRINCL: ::c_int = 2;
+
extern "C" {
pub fn futimens(fd: ::c_int, times: *const ::timespec) -> ::c_int;
pub fn writev(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int) -> ::ssize_t;
pub fn readv(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int) -> ::ssize_t;
+ pub fn sendmsg(s: ::c_int, msg: *const ::msghdr, flags: ::c_int) -> ::ssize_t;
+ pub fn recvmsg(s: ::c_int, msg: *mut ::msghdr, flags: ::c_int) -> ::ssize_t;
+
pub fn pthread_create(
native: *mut ::pthread_t,
attr: *const ::pthread_attr_t,
@@ -198,4 +229,6 @@ extern "C" {
pub fn pthread_getprocessorid_np() -> ::c_int;
pub fn getentropy(buf: *mut ::c_void, buflen: ::size_t) -> ::c_int;
+
+ pub fn pipe2(fds: *mut ::c_int, flags: ::c_int) -> ::c_int;
}
diff --git a/vendor/libc/src/unix/nto/mod.rs b/vendor/libc/src/unix/nto/mod.rs
index a79450f4e..91e531ffd 100644
--- a/vendor/libc/src/unix/nto/mod.rs
+++ b/vendor/libc/src/unix/nto/mod.rs
@@ -2557,6 +2557,7 @@ pub const RLIMIT_NPROC: ::c_int = 8;
pub const RLIMIT_RSS: ::c_int = 6;
pub const RLIMIT_STACK: ::c_int = 3;
pub const RLIMIT_VMEM: ::c_int = 6;
+#[deprecated(since = "0.2.64", note = "Not stable across OS versions")]
pub const RLIM_NLIMITS: ::c_int = 14;
pub const SCHED_ADJTOHEAD: ::c_int = 5;
@@ -3092,6 +3093,7 @@ extern "C" {
attr: *const ::pthread_attr_t,
guardsize: *mut ::size_t,
) -> ::c_int;
+ pub fn pthread_attr_setguardsize(attr: *mut ::pthread_attr_t, guardsize: ::size_t) -> ::c_int;
pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int;
pub fn sched_get_priority_min(policy: ::c_int) -> ::c_int;
pub fn pthread_condattr_getpshared(
diff --git a/vendor/libc/src/unix/redox/mod.rs b/vendor/libc/src/unix/redox/mod.rs
index 5003cda0a..cd219a777 100644
--- a/vendor/libc/src/unix/redox/mod.rs
+++ b/vendor/libc/src/unix/redox/mod.rs
@@ -28,20 +28,13 @@ pub type nfds_t = ::c_ulong;
pub type nlink_t = ::c_ulong;
pub type off_t = ::c_longlong;
pub type pthread_t = *mut ::c_void;
-pub type pthread_attr_t = *mut ::c_void;
-pub type pthread_cond_t = *mut ::c_void;
-pub type pthread_condattr_t = *mut ::c_void;
// Must be usize due to libstd/sys_common/thread_local.rs,
// should technically be *mut ::c_void
pub type pthread_key_t = usize;
-pub type pthread_mutex_t = *mut ::c_void;
-pub type pthread_mutexattr_t = *mut ::c_void;
-pub type pthread_rwlock_t = *mut ::c_void;
-pub type pthread_rwlockattr_t = *mut ::c_void;
pub type rlim_t = ::c_ulonglong;
pub type sa_family_t = u16;
pub type sem_t = *mut ::c_void;
-pub type sigset_t = ::c_ulong;
+pub type sigset_t = ::c_ulonglong;
pub type socklen_t = u32;
pub type speed_t = u32;
pub type suseconds_t = ::c_int;
@@ -265,7 +258,74 @@ s! {
pub uid: uid_t,
pub gid: gid_t,
}
+
+ #[cfg_attr(target_pointer_width = "32", repr(C, align(4)))]
+ #[cfg_attr(target_pointer_width = "64", repr(C, align(8)))]
+ pub struct pthread_attr_t {
+ bytes: [u8; _PTHREAD_ATTR_SIZE],
+ }
+ #[repr(C)]
+ #[repr(align(4))]
+ pub struct pthread_barrier_t {
+ bytes: [u8; _PTHREAD_BARRIER_SIZE],
+ }
+ #[repr(C)]
+ #[repr(align(4))]
+ pub struct pthread_barrierattr_t {
+ bytes: [u8; _PTHREAD_BARRIERATTR_SIZE],
+ }
+ #[repr(C)]
+ #[repr(align(4))]
+ pub struct pthread_mutex_t {
+ bytes: [u8; _PTHREAD_MUTEX_SIZE],
+ }
+ #[repr(C)]
+ #[repr(align(4))]
+ pub struct pthread_rwlock_t {
+ bytes: [u8; _PTHREAD_RWLOCK_SIZE],
+ }
+ #[repr(C)]
+ #[repr(align(4))]
+ pub struct pthread_mutexattr_t {
+ bytes: [u8; _PTHREAD_MUTEXATTR_SIZE],
+ }
+ #[repr(C)]
+ #[repr(align(1))]
+ pub struct pthread_rwlockattr_t {
+ bytes: [u8; _PTHREAD_RWLOCKATTR_SIZE],
+ }
+ #[repr(C)]
+ #[repr(align(4))]
+ pub struct pthread_cond_t {
+ bytes: [u8; _PTHREAD_COND_SIZE],
+ }
+ #[repr(C)]
+ #[repr(align(4))]
+ pub struct pthread_condattr_t {
+ bytes: [u8; _PTHREAD_CONDATTR_SIZE],
+ }
+ #[repr(C)]
+ #[repr(align(4))]
+ pub struct pthread_once_t {
+ bytes: [u8; _PTHREAD_ONCE_SIZE],
+ }
+ #[repr(C)]
+ #[repr(align(4))]
+ pub struct pthread_spinlock_t {
+ bytes: [u8; _PTHREAD_SPINLOCK_SIZE],
+ }
}
+const _PTHREAD_ATTR_SIZE: usize = 32;
+const _PTHREAD_RWLOCKATTR_SIZE: usize = 1;
+const _PTHREAD_RWLOCK_SIZE: usize = 4;
+const _PTHREAD_BARRIER_SIZE: usize = 24;
+const _PTHREAD_BARRIERATTR_SIZE: usize = 4;
+const _PTHREAD_CONDATTR_SIZE: usize = 8;
+const _PTHREAD_COND_SIZE: usize = 8;
+const _PTHREAD_MUTEX_SIZE: usize = 12;
+const _PTHREAD_MUTEXATTR_SIZE: usize = 20;
+const _PTHREAD_ONCE_SIZE: usize = 4;
+const _PTHREAD_SPINLOCK_SIZE: usize = 4;
pub const UTSLENGTH: usize = 65;
@@ -549,9 +609,15 @@ pub const POLLWRBAND: ::c_short = 0x200;
// pthread.h
pub const PTHREAD_MUTEX_NORMAL: ::c_int = 0;
pub const PTHREAD_MUTEX_RECURSIVE: ::c_int = 1;
-pub const PTHREAD_MUTEX_INITIALIZER: ::pthread_mutex_t = -1isize as *mut _;
-pub const PTHREAD_COND_INITIALIZER: ::pthread_cond_t = -1isize as *mut _;
-pub const PTHREAD_RWLOCK_INITIALIZER: ::pthread_rwlock_t = -1isize as *mut _;
+pub const PTHREAD_MUTEX_INITIALIZER: ::pthread_mutex_t = ::pthread_mutex_t {
+ bytes: [0; _PTHREAD_MUTEX_SIZE],
+};
+pub const PTHREAD_COND_INITIALIZER: ::pthread_cond_t = ::pthread_cond_t {
+ bytes: [0; _PTHREAD_COND_SIZE],
+};
+pub const PTHREAD_RWLOCK_INITIALIZER: ::pthread_rwlock_t = ::pthread_rwlock_t {
+ bytes: [0; _PTHREAD_RWLOCK_SIZE],
+};
pub const PTHREAD_STACK_MIN: ::size_t = 4096;
// signal.h
@@ -1014,6 +1080,10 @@ extern "C" {
pub fn getdtablesize() -> ::c_int;
// grp.h
+ pub fn getgrent() -> *mut ::group;
+ pub fn setgrent();
+ pub fn endgrent();
+ pub fn getgrgid(gid: ::gid_t) -> *mut ::group;
pub fn getgrgid_r(
gid: ::gid_t,
grp: *mut ::group,
@@ -1021,6 +1091,7 @@ extern "C" {
buflen: ::size_t,
result: *mut *mut ::group,
) -> ::c_int;
+ pub fn getgrnam(name: *const ::c_char) -> *mut ::group;
pub fn getgrnam_r(
name: *const ::c_char,
grp: *mut ::group,
diff --git a/vendor/libc/src/vxworks/mod.rs b/vendor/libc/src/vxworks/mod.rs
index c337a8279..21d33a4e5 100644
--- a/vendor/libc/src/vxworks/mod.rs
+++ b/vendor/libc/src/vxworks/mod.rs
@@ -1018,6 +1018,21 @@ pub const O_WRONLY: ::c_int = 0x0001;
pub const O_RDONLY: ::c_int = 0;
pub const O_NONBLOCK: ::c_int = 0x4000;
+// mman.h
+pub const PROT_NONE: ::c_int = 0x0000;
+pub const PROT_READ: ::c_int = 0x0001;
+pub const PROT_WRITE: ::c_int = 0x0002;
+pub const PROT_EXEC: ::c_int = 0x0004;
+
+pub const MAP_SHARED: ::c_int = 0x0001;
+pub const MAP_PRIVATE: ::c_int = 0x0002;
+pub const MAP_ANON: ::c_int = 0x0004;
+pub const MAP_ANONYMOUS: ::c_int = MAP_ANON;
+pub const MAP_FIXED: ::c_int = 0x0010;
+pub const MAP_CONTIG: ::c_int = 0x0020;
+
+pub const MAP_FAILED: *mut ::c_void = !0 as *mut ::c_void;
+
#[cfg_attr(feature = "extra_traits", derive(Debug))]
pub enum FILE {}
impl ::Copy for FILE {}
@@ -1218,6 +1233,8 @@ extern "C" {
) -> *mut ::c_void;
pub fn munmap(addr: *mut ::c_void, len: ::size_t) -> ::c_int;
pub fn truncate(path: *const c_char, length: off_t) -> ::c_int;
+ pub fn shm_open(name: *const ::c_char, oflag: ::c_int, mode: ::mode_t) -> ::c_int;
+ pub fn shm_unlink(name: *const ::c_char) -> ::c_int;
pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::c_void) -> ::c_int;
pub fn pthread_exit(value: *mut ::c_void) -> !;
@@ -1909,19 +1926,19 @@ cfg_if! {
if #[cfg(target_arch = "aarch64")] {
mod aarch64;
pub use self::aarch64::*;
- } else if #[cfg(any(target_arch = "arm"))] {
+ } else if #[cfg(target_arch = "arm")] {
mod arm;
pub use self::arm::*;
- } else if #[cfg(any(target_arch = "x86"))] {
+ } else if #[cfg(target_arch = "x86")] {
mod x86;
pub use self::x86::*;
- } else if #[cfg(any(target_arch = "x86_64"))] {
+ } else if #[cfg(target_arch = "x86_64")] {
mod x86_64;
pub use self::x86_64::*;
- } else if #[cfg(any(target_arch = "powerpc"))] {
+ } else if #[cfg(target_arch = "powerpc")] {
mod powerpc;
pub use self::powerpc::*;
- } else if #[cfg(any(target_arch = "powerpc64"))] {
+ } else if #[cfg(target_arch = "powerpc64")] {
mod powerpc64;
pub use self::powerpc64::*;
} else {
diff --git a/vendor/libloading/.cargo-checksum.json b/vendor/libloading/.cargo-checksum.json
index ba41287df..bac40577f 100644
--- a/vendor/libloading/.cargo-checksum.json
+++ b/vendor/libloading/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"e775281f2e0021f0adffdc9487b79c0f3941c5a61d6f057c52a8164853edbdd0","LICENSE":"b29f8b01452350c20dd1af16ef83b598fea3053578ccc1c7a0ef40e57be2620f","README.mkd":"707e1cae9fa4b691ce5cb8a3976573158fc60b67cb89948f8f5d51c5908bd0a8","src/changelog.rs":"b796f458d817108ecdfc04dae77a9320c05b505ab0efc7e36f870ca32267598d","src/error.rs":"156c53e299e8f1cd4694b277a5d92772a8a9e7ec4004bae067367f4c2502de8b","src/lib.rs":"dd8856368636b3341fd325407e32b9464a98fd3667458b94e4012afe9a7b42c2","src/os/mod.rs":"6c59ef8c1120953ae6b6c32f27766c643ca90d85075c49c3545d2fe1ed82cedd","src/os/unix/consts.rs":"5bc20c1a7e873c4ba4ea2eefdb2d4c04eddbb706dfdf6195b91846b731096e3b","src/os/unix/mod.rs":"dff9590acbbb9a02baea9d2eb870515104c9d519b1896887f3bf1434db442929","src/os/windows/mod.rs":"af0d7ae503c89d0a44c5318935635f68da3c3b1786e1033909453f21a207d6ac","src/safe.rs":"b0dc1cb5c8e0216e365063b5e84218b2377bb7a62714fca9a6215a22a7bc58b8","src/test_helpers.rs":"201403e143e5b3204864124cd38067cf8813d5273dc1a9099288a9dc4bdd15b6","src/util.rs":"0b6dcfb9eafff2d87966460ef6b1b99980f888813037e787ed92deee602f8c2b","tests/constants.rs":"4778c062605ed22238c1bed16de4c076d0857282f090f36e6d985dafb7b4544d","tests/functions.rs":"c3d4770704de40e9592cfd109cf506e6b04f0738d8a1ee02ec858b4fa4632a2b","tests/library_filename.rs":"b1481f0bb374687c5f24e25113426d2a95f08a45fb8bc41a41e8702bd5a7b4bf","tests/markers.rs":"0ebc8f807b92e39452d35732988012cdca7ce96231c57eaac9c3f4217225ad39","tests/nagisa32.dll":"5c69b2bd9c8a6ad04165c221075fc9fade1dd66ca697399ace528a5a62328e36","tests/nagisa64.dll":"e20b95e3036f3289421abd100760874d4f455afd33c3b5b64fec56b191f7d477","tests/windows.rs":"35584a46658b305cd539712d3ba3c21fe7a130fd693aa1389e4886a67625d532"},"package":"d580318f95776505201b28cf98eb1fa5e4be3b689633ba6a3e6cd880ff22d8cb"} \ No newline at end of file
+{"files":{"Cargo.toml":"c0d4bc05235281ab5751e7458fee7d67c64c89acea9b72c3974387496bdb795e","LICENSE":"b29f8b01452350c20dd1af16ef83b598fea3053578ccc1c7a0ef40e57be2620f","README.mkd":"707e1cae9fa4b691ce5cb8a3976573158fc60b67cb89948f8f5d51c5908bd0a8","src/changelog.rs":"c272619522f03b856ece92945fc30a42d15600c4fd9a34f2a520fdb7a657868d","src/error.rs":"156c53e299e8f1cd4694b277a5d92772a8a9e7ec4004bae067367f4c2502de8b","src/lib.rs":"dd8856368636b3341fd325407e32b9464a98fd3667458b94e4012afe9a7b42c2","src/os/mod.rs":"6c59ef8c1120953ae6b6c32f27766c643ca90d85075c49c3545d2fe1ed82cedd","src/os/unix/consts.rs":"a1f98372a58acc6d00a1df19550e0593ede60a53f2aa3ff26cf678cf1015594c","src/os/unix/mod.rs":"dff9590acbbb9a02baea9d2eb870515104c9d519b1896887f3bf1434db442929","src/os/windows/mod.rs":"af0d7ae503c89d0a44c5318935635f68da3c3b1786e1033909453f21a207d6ac","src/safe.rs":"b0dc1cb5c8e0216e365063b5e84218b2377bb7a62714fca9a6215a22a7bc58b8","src/test_helpers.rs":"201403e143e5b3204864124cd38067cf8813d5273dc1a9099288a9dc4bdd15b6","src/util.rs":"0b6dcfb9eafff2d87966460ef6b1b99980f888813037e787ed92deee602f8c2b","tests/constants.rs":"4778c062605ed22238c1bed16de4c076d0857282f090f36e6d985dafb7b4544d","tests/functions.rs":"c3d4770704de40e9592cfd109cf506e6b04f0738d8a1ee02ec858b4fa4632a2b","tests/library_filename.rs":"b1481f0bb374687c5f24e25113426d2a95f08a45fb8bc41a41e8702bd5a7b4bf","tests/markers.rs":"0ebc8f807b92e39452d35732988012cdca7ce96231c57eaac9c3f4217225ad39","tests/nagisa32.dll":"5c69b2bd9c8a6ad04165c221075fc9fade1dd66ca697399ace528a5a62328e36","tests/nagisa64.dll":"e20b95e3036f3289421abd100760874d4f455afd33c3b5b64fec56b191f7d477","tests/windows.rs":"35584a46658b305cd539712d3ba3c21fe7a130fd693aa1389e4886a67625d532"},"package":"c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161"} \ No newline at end of file
diff --git a/vendor/libloading/Cargo.toml b/vendor/libloading/Cargo.toml
index 9eb52a039..01654533f 100644
--- a/vendor/libloading/Cargo.toml
+++ b/vendor/libloading/Cargo.toml
@@ -12,7 +12,7 @@
[package]
rust-version = "1.48.0"
name = "libloading"
-version = "0.8.0"
+version = "0.8.1"
authors = ["Simonas Kazlauskas <libloading@kazlauskas.me>"]
description = "Bindings around the platform's dynamic library loading primitives with greatly improved memory safety."
documentation = "https://docs.rs/libloading/"
diff --git a/vendor/libloading/src/changelog.rs b/vendor/libloading/src/changelog.rs
index 34ed4f226..536834be1 100644
--- a/vendor/libloading/src/changelog.rs
+++ b/vendor/libloading/src/changelog.rs
@@ -1,5 +1,11 @@
//! The change log.
+/// Release 0.8.1 (2023-09-30)
+///
+/// ## Non-breaking changes
+///
+/// * Support for GNU Hurd.
+
/// Release 0.8.0 (2023-04-11)
///
/// ## (Potentially) breaking changes
diff --git a/vendor/libloading/src/os/unix/consts.rs b/vendor/libloading/src/os/unix/consts.rs
index a135c0c43..ed3edaf82 100644
--- a/vendor/libloading/src/os/unix/consts.rs
+++ b/vendor/libloading/src/os/unix/consts.rs
@@ -83,6 +83,7 @@ mod posix {
target_os = "fuchsia",
target_os = "redox",
target_os = "nto",
+ target_os = "hurd",
))] {
pub(super) const RTLD_LAZY: c_int = 1;
} else {
@@ -117,6 +118,7 @@ mod posix {
target_os = "fuchsia",
target_os = "redox",
target_os = "nto",
+ target_os = "hurd",
))] {
pub(super) const RTLD_NOW: c_int = 2;
} else if #[cfg(all(target_os = "android",target_pointer_width = "32"))] {
@@ -165,6 +167,7 @@ mod posix {
target_os = "fuchsia",
target_os = "redox",
target_os = "nto",
+ target_os = "hurd",
))] {
pub(super) const RTLD_GLOBAL: c_int = 0x100;
} else {
@@ -206,6 +209,7 @@ mod posix {
target_os = "fuchsia",
target_os = "redox",
+ target_os = "hurd",
))] {
pub(super) const RTLD_LOCAL: c_int = 0;
} else {
diff --git a/vendor/libm-0.1.4/.cargo-checksum.json b/vendor/libm-0.1.4/.cargo-checksum.json
deleted file mode 100644
index 1b77bc77f..000000000
--- a/vendor/libm-0.1.4/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"CHANGELOG.md":"dddcff92c74e853aad03e68ba32853caa5547e31ef17f7a72ee61816e4857d88","CONTRIBUTING.md":"9e8ed260af182c49c57e8e657e6b07648640a43e25e822fd0c75d3beddf5d4e0","Cargo.toml":"beb4d2c919d44be05314edb1b98940eebc8e8ace483029fa9f68cbc5749b4e51","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"c986bcdb83103d4ddf58aeb7b5302359782e54dc4eea14a0cc27c62dcbd50729","README.md":"795376eae284995ff080671c37911e0143425885e329e487c5e9978cadd83321","azure-pipelines.yml":"43c33bf91e455322ace2037a33c318bb309ab7c6fadb78f11ff2faead19f1d36","build.rs":"d5e9e396c7b7387bdf7298cf805c59eeb2a9dae5354a4b42368be1e6f03e1291","ci/azure-install-rust.yml":"249e765f8c29cf8952b3c92698885536d37c87bf83070677afa7669519fa323f","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"5cf75ef952cc482076116ff8d40474b9105509700223d5269dbf077a72dae316","ci/docker/arm-unknown-linux-gnueabi/Dockerfile":"54811a30242a9c2ec218ec7328781e70753962792ae5b59ba1475ff2e3ce7601","ci/docker/arm-unknown-linux-gnueabihf/Dockerfile":"4025b0e787ef05c92f6993d3df119adc1e86c24b0879a5e76647727505f0c6cf","ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile":"87b30019c2eb7ce13aeeb00e453861a5274a0979ba29485221b3298d59ed9d01","ci/docker/i686-unknown-linux-gnu/Dockerfile":"4297d3e169c208e425b9af62100e5e5febb68924b5e47055e16c502c99b49f49","ci/docker/mips-unknown-linux-gnu/Dockerfile":"caa48dd56c8d3ec335600cc364e19bad4090b77521e35cb0fc544bec962e1a68","ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile":"e965e72776de58150c686180f1aefe60c6851b27ed2c85880b2c01a77e128f64","ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile":"1d4c9a45fa5578629902dfdfca1966f83673ba44cc5a566b528847b0a1ddd997","ci/docker/mipsel-unknown-linux-gnu/Dockerfile":"12945077fc0b846dcd3b9778fba397b07b6a1c3beeb5e1583934af028ff6e10a","ci/docker/powerpc-unknown-linux-gnu/Dockerfile":"77d53959b518bb6c0f08505d157b035fa63e51f323d63e743b8772aebdb6f15d","ci/docker/powerpc64-unknown-linux-gnu/Dockerfile":"7b279ad6f05b806dc8df002babf1f3a5fded1ff6b66c7a4c07792881d4c3e70c","ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile":"fee2d038252e31e77b69b735cd3724527dfe1f928f6dfd7a75e28d5303db0ead","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"1c4f3e9fdcfa58f8e406a6bdb377424f73e3bf030f3b962ea653fa3e3de25c23","ci/run-docker.sh":"d9c76e2acbaa2fb9d8646d394a4d097f967ea63373990a09c6ea1453d8345313","ci/run.sh":"292b5622bffda94a4b59e9dab847c8775e3d1d9b65d086b8280c0ee5bccf9111","src/lib.rs":"b3a187899179de261ba23b138969cdc2d3a1c7102e31858ce7ae55c294f59194","src/math/acos.rs":"97b929339071ffed2d2fb67aaa1bcb008386b06300582f4c35c26330b119c463","src/math/acosf.rs":"908325810aa4b6f667140de7b332dc14548542b1a95167d4f2b06d121be4a301","src/math/acosh.rs":"56dac8538e4350cd7cf001327c89f087b68abb2e6aaad58edba8a094b09f6b0f","src/math/acoshf.rs":"df5b0c4d8e37e64cf5ff2d8328b28bc35c78e84060ff769e64523ea9ff9065c1","src/math/asin.rs":"dceae678f9c74c9be4b36a7bbb5fe138662e4bf3d6224da01c450ab486945f0c","src/math/asinf.rs":"c4429db1742623154dc7421823f1ff65f7d3bed6d4a8dfb9ea0cacf4f8765dbc","src/math/asinh.rs":"e8fc94031015fddf35e9c26b94da9f6431ee17c81cd7bd37da8ffc98f7e0b32c","src/math/asinhf.rs":"8a0b8933a98a17617a66fef4c7b89eba645fdf05302000babf4a5a5f45328430","src/math/atan.rs":"a580e215ce20296ca36efe567b5f3caadf7d48d753d92f3a36069f566bc5293a","src/math/atan2.rs":"59708e1a010d3f3020419abfdacc0ed0f57530d25330b05c85fa93c252807fac","src/math/atan2f.rs":"13cfe5b1e1ea4f562867d983cc75f3875292f6eda8f8c3934bb1e1138e522114","src/math/atanf.rs":"412b8b6248d80da6453e04a0d42f05a22766b84e057e5ba4a8fab804ad449df1","src/math/atanh.rs":"5934dbd6b7395ca4f103ace7598da723a9270e1cf6b47e7f786debe4bb3651ff","src/math/atanhf.rs":"8ba4711dda19ef2dc33622be65c1483902868083543198c6bbd040d4026293de","src/math/cbrt.rs":"1ada8c0ce28f04cf2210641a3a3c888b8e89e132e64ff0a4c7b81e9fc8d24ea6","src/math/cbrtf.rs":"7a4177e996626b945f741fd182bb077e09cdaeda33fe742c6b6c71ce3642603d","src/math/ceil.rs":"7cc3c1a45c620939b1bda9b4a7bd1212663956e725cecb6abce196463e1841b9","src/math/ceilf.rs":"27a262e152285be8a62421d23951fb8d7dc8aed784592caefc43e3f05d09c88d","src/math/copysign.rs":"d80c880efaf0cdf2ce0a4d4f5a68dd6c36c88d46fa997ec8ac8604bfdb26fa33","src/math/copysignf.rs":"1547116071e68a42b1605eb2fc722db6466a34517dc96b92de1f29a274c3d8e3","src/math/cos.rs":"a66010c2364f30da987637786d508cf2ac5980e68be1891321a6f352ac04c948","src/math/cosf.rs":"73d7a9fa6afbc02add6819f119768bea7d55d88512fe5481c3459a35fe6d290b","src/math/cosh.rs":"bb588c9acb045d5ba642de543a743fe52fec49f208c775168e5967becfe707db","src/math/coshf.rs":"7daf35753d7e38aa109fe1cd4ef9839930c2b04336cf7e89d3dca3bc5df49653","src/math/erf.rs":"9c55fc6756ba816996f0b585e07ccfa4cd87575ad525cd30c4a968b30acffda3","src/math/erff.rs":"cb020e8bada9a54573a11fe3271750d73f14fed3092a881a9ceaf98fe32fd5a6","src/math/exp.rs":"6a5e7e4138ecd85ad6ffe53e1998ec6027d5299b16213544832edc5ba9de04ca","src/math/exp10.rs":"2deb037f88feac87a0e924b69dd496f0dd3b5d35f2a58e09d4c5166b207e517b","src/math/exp10f.rs":"6979464dfe3f4f2da1f9afc909646499c4bfaef15e10a039384750e2f1586fea","src/math/exp2.rs":"b97264684fbad0c6a413a4de26238f96a6a5cba70af1fb45857b00f83dab8bb1","src/math/exp2f.rs":"0053f3048e065799f2c0c04b57671a850f11f86eb7a476ffb089dbac78381574","src/math/expf.rs":"a55f5e25a19499d9ab6d4a9c42630c2528f69dbf965d9bca92e794958e6e1a20","src/math/expm1.rs":"72c97e3c90b197437ee7f2f1f07afc5e66b4de9ee5a9d5aa5cca038cd5371e71","src/math/expm1f.rs":"1b7a5f79037bc53f11b5a1b1a53e561883e3095c9db0b2faf2a334ed2dd509e4","src/math/expo2.rs":"2ae905e1fd8d475308e4ea3fd4607045041fe1770024e0b2a07aed00778e0ec7","src/math/fabs.rs":"90f99274001168b64444421480b7e1df27d60566a9f1f2f37e510f549860cb06","src/math/fabsf.rs":"afb23e4c6e14353d594247e7f1fbe9f0b205eafdbab98152138fdab6d197f9a2","src/math/fdim.rs":"e2b004cc6b0cbd8dac8b116bc6bb10914c8e3bf8f180fbfbe2f41c32f07d6c93","src/math/fdimf.rs":"d775fd720079c9e3a3202e20e910ba6868279da5a0b5dda713fffe8f8b5d8b4a","src/math/fenv.rs":"a8a835b195f880094bd9fb46762aef869e5f5925569ebbf71cceeafa2524a909","src/math/floor.rs":"ab122f713c882fec8db0939caf6082890acef8fd54189094b6424513e961a4e7","src/math/floorf.rs":"959349a094ee976a47f4cb9c25368098df57739190ff1d4350abe502479a3002","src/math/fma.rs":"0c4c519c7db91dc147ec625185c62e3a10280216ed75fa922442e6ce5a966b73","src/math/fmaf.rs":"ebc765aa52fc75d4ae29ee33574832eb1282faae882cccdccc52accd5615977c","src/math/fmax.rs":"15f3b99769ada1534369bf2be44bb8ee526ac4ddae322e0be976410bb7e90577","src/math/fmaxf.rs":"af19f98694335ecef1d046b125cc2a1629d9711b12c94c49100ccb60e3f14329","src/math/fmin.rs":"ed58ec8d403af6ebec8a0c0e8b9540d2ca6b0efb73ddd4317f4f71ea9da6a9c0","src/math/fminf.rs":"9cb486769b41f391ff6421d47cc01061be3ac0f628c71ec45586bcbe0b94c4cf","src/math/fmod.rs":"6dab52901947137392310250a42937514a165793f20a10ffa268902f9e0a5782","src/math/fmodf.rs":"17b1cf1e6c93b3af5d91266080d70e096f862f45dc599ebb8c041a0adf9abebc","src/math/frexp.rs":"28af70026922a8ab979744c7ad4d8faba6079c4743b7eeb6d14c983a982fbbcc","src/math/frexpf.rs":"2e2593ae8002ba420809ebfaf737ef001cdc912354be3d978a8c0cb930350d4d","src/math/hypot.rs":"8db4a26ff29fce64a3ca25ddc241822409e83a06ff76ff01aad61b489e34acee","src/math/hypotf.rs":"09df5a9cb7550d472640eff949e111ce4d275c7874de3dccf370fff28a0896ec","src/math/ilogb.rs":"813413bf6266d4fc40db9c5921af3cef4f892ba93e8f6d9efe62a449d1234532","src/math/ilogbf.rs":"dec462780f46682e16cfaa733238bed3b692729e951f53a44726100b6c73a716","src/math/j0.rs":"9572b6396c489927d332d0e717920e61ec0618e5e9c31f7eeeec70f5e4abab06","src/math/j0f.rs":"802c8254bded9b3afb6eea8b9af240038a5a4a5d811396729f69ca509e3e7d87","src/math/j1.rs":"97b1af1611fa3d110c2b349ee8e4176100132ea1391b619086b47ac063b81803","src/math/j1f.rs":"ccee0261db1cca175ac23a939f1dd41840b9f2caa131eb9cca5af2ca596735a9","src/math/jn.rs":"847d122334e5707ad9627146cddccc082a1f2f5bcd3e5ef54399013a7007ce88","src/math/jnf.rs":"4045076f7d1a1b89882ed60d4dd60a4cbbc66b85cfb90491378c8015effcc476","src/math/k_cos.rs":"5d2f24a11bf2ce52f3a80a76e320a752000548b77d47bb3d2aa759a85aa4f486","src/math/k_cosf.rs":"077b9dfd826df4d985434b48c383252f75e4b79a3a48e3e612750907a992d6a5","src/math/k_expo2.rs":"ae0017a84086b93708888a93d294216843d419562cdfd8dd17a49a09ec4e5e05","src/math/k_expo2f.rs":"285f3eee66504741c5e895d51b162bb21cfb88b34de49f9c19bd1c32326089b5","src/math/k_sin.rs":"7381988fa81f4788de6a4f6658b0057fdd535298a2997d63ef4b36cf4473e707","src/math/k_sinf.rs":"cd067bd2d917efdc8e89c02d8af6f67b0a4c92bbd01223fb695527050163d9ab","src/math/k_tan.rs":"a648fbb023afec2826ce10a2dd5d7ac51eaf9c3e9b8b24f4aa867d54203fe17c","src/math/k_tanf.rs":"53a886377aead553b2bba5e02a76d24f6d8c3df80fa0b80251bbfd98323c83fd","src/math/ldexp.rs":"ec4627b6b10d0bdba39cd3dc24cb4d72f6ed140db2da0b6447a0ebb159992ff2","src/math/ldexpf.rs":"45eb23a0f93fbfa5b6cccf1a42ce18f25499a71ab5a93342cb10966901d011da","src/math/lgamma.rs":"498552658cc8106d7754f85ae8dbc3306ac2f0a9f7eb5a796be70c5beac92c41","src/math/lgamma_r.rs":"7906850ab2dd77a27a19e11ec284d7ecf6bf275228854893807a4ba77ba31bed","src/math/lgammaf.rs":"457105f53a4c8717e8f5a117d261dcf94e222e83981337fe23602abe883fe3f7","src/math/lgammaf_r.rs":"7e2eae7cac9e7ea72cf3819de2b260c17a2cd51f2cbfd093c6ab2d60ea11925f","src/math/log.rs":"f381301cf6adde3af15b153c5f8923cf955ec3470d2d510614028a033f7def60","src/math/log10.rs":"b98abbb6255ef9ad3726876e62d75ecfdd6ca0d91374d3e1a4c7043460b6f64d","src/math/log10f.rs":"6724ab87137c1014f7d6387e0b51c8abff759a8e90619de7ce4f8ef58931e47b","src/math/log1p.rs":"bfca5da128fa12a862e7e0f0be27f9e04d1fe4a08f74016558ba91d49bcb125c","src/math/log1pf.rs":"8a2bc51ccc89933df450b9a8aa8e2e137db217550720543a3ce309ac82d2bee7","src/math/log2.rs":"252fc08c78b30e0a05ec305d5978a8badf1514d559d19cc9a200221c1014436e","src/math/log2f.rs":"a7705e2a55398674b4ac211f04f92941f42b93c33e24a6712de7403d85bdd50a","src/math/logf.rs":"6c042d2e5957b464ee5edfc2d14d5af9a8df817a170a67a0932ed4ca29010621","src/math/mod.rs":"e2d45e42a0ef4a45740d34467234a4de509481af53333cf269cbf2d88d5d097c","src/math/modf.rs":"d012ed5a708ef52b6d1313c22a46cadaf5764dde1220816e3df2f03a0fcc60ae","src/math/modff.rs":"f8f1e4c27a85d2cdb3c8e74439d59ef64aa543b948f22c23227d02d8388d61c2","src/math/pow.rs":"9c80d74aee21e4a82ced3d329381ee5fd2e8ebd80d4f938bd5ca1cf76640dac3","src/math/powf.rs":"70a8ef7924d39e0483a29916e83ccbbde8cae41fed3194a2836240e4c7b59916","src/math/rem_pio2.rs":"11799c886c07c752396f9bc9f54d03b30d342c5e920799d624854ae937287f0b","src/math/rem_pio2_large.rs":"a3a613e68609cf738f99d21e05dd5702f72405524b2f0f8ef7708f8baab1c3e1","src/math/rem_pio2f.rs":"66a914409c0a25820864c4be4039cb1544c106b6fa7b99ad8e160257d2d1c905","src/math/remquo.rs":"7e192e07956d10eb9739343f9bb19835fa0b47bad8618c7276891505a142872a","src/math/remquof.rs":"875ec1e3086dfe996e0e8923b0dd2ed5bfd30a9b98bedd1d163fd4ed338645c9","src/math/round.rs":"a8f541ace0d5cfa4f169d861fb971b82ef703071465e2aeacfac25799655bad7","src/math/roundf.rs":"a873f25f6d1707c559a1b0641e12f52c6e9a96e3c3aafc09bb92c0642b557424","src/math/scalbn.rs":"a96558226381e4491c7c8ca6c2566b268d4dfefb31bf2ba76b75dbfdbf9dfa01","src/math/scalbnf.rs":"770c0bd1edb1d8f45f287f8c806bb07378c7b575a280df7eb5521e639df60274","src/math/sin.rs":"0d84550a88c50f6bce6b23741d91ea86f0f650db4f286285384a8d80d1c290df","src/math/sincos.rs":"cc27cfcbcd5942f478e7e7e1a20fc3b273bad61393627d8a2adc4b3d41ba9b06","src/math/sincosf.rs":"cd93ce44f8f69636aeb33b1bb1fd17714a3e9bf4dd29f5e894f1a7f00ba3055e","src/math/sinf.rs":"57a7d233c5d6f400273ce50ea9a8a43384c3cccf5628c463c1bb7738d5940600","src/math/sinh.rs":"cc42172da41b926f0c2ca8a5ce007404d2a065b240c82032aaf896ae1e850ebb","src/math/sinhf.rs":"2fdb3863db18aa910b65f40392d0578b6234207b91e8b1c58c66410b99129e6b","src/math/sqrt.rs":"cc8ff45b78b52f22e40d5b45ea5582eb41f14bafadc291dc0e24b780611272ee","src/math/sqrtf.rs":"9580760c2d1c6ae76b55073da0fe56d0ebd398cb37385d4ec17f48ca7b0de73a","src/math/tan.rs":"49524a388958b54c5bb9360bcbe1ab2a8656c4e172f481969df51fce51eaeedd","src/math/tanf.rs":"9c416fe8e0e2e03cc61cfefc5d913e8523ce359909df499d2aa7f2cf79abbdca","src/math/tanh.rs":"8fc5edf4669ba3bf35f9773ebcccca5c19868628971581217a5f9f95811489fb","src/math/tanhf.rs":"a8367cbc5a43f6b00d77a07d2ef0a7e392ebfa46062a19b97901b7c993800dd4","src/math/tgamma.rs":"a6aabb8365410af6611f19f58694ccb74e82bb9ba9e1cdec7e1af787cfa44815","src/math/tgammaf.rs":"c95bd69957387533853532164f7e2251d2b04f5e775406b9e647226ae2bdd5ad","src/math/trunc.rs":"16cae799dc1c16c2eed92c9a194c89a6abc94adbd06e83630dafa7dad89abdec","src/math/truncf.rs":"2302a045af823ac076102d5d0c11f985253f0eb32265855d7ee0d56ded75930e"},"package":"7fc7aa29613bd6a620df431842069224d8bc9011086b1db4c0e0cd47fa03ec9a"} \ No newline at end of file
diff --git a/vendor/libm-0.1.4/CHANGELOG.md b/vendor/libm-0.1.4/CHANGELOG.md
deleted file mode 100644
index 28e27055d..000000000
--- a/vendor/libm-0.1.4/CHANGELOG.md
+++ /dev/null
@@ -1,97 +0,0 @@
-# Change Log
-
-All notable changes to this project will be documented in this file.
-This project adheres to [Semantic Versioning](http://semver.org/).
-
-## [Unreleased]
-
-...
-
-## [v0.1.4] - 2019-06-12
-
-### Fixed
-- Restored compatibility with Rust 1.31.0
-
-## [v0.1.3] - 2019-05-14
-
-### Added
-
-- minf
-- fmin
-- fmaxf
-- fmax
-
-## [v0.1.2] - 2018-07-18
-
-### Added
-
-- acosf
-- asin
-- asinf
-- atan
-- atan2
-- atan2f
-- atanf
-- cos
-- cosf
-- cosh
-- coshf
-- exp2
-- expm1
-- expm1f
-- expo2
-- fmaf
-- pow
-- sin
-- sinf
-- sinh
-- sinhf
-- tan
-- tanf
-- tanh
-- tanhf
-
-## [v0.1.1] - 2018-07-14
-
-### Added
-
-- acos
-- acosf
-- asin
-- asinf
-- atanf
-- cbrt
-- cbrtf
-- ceil
-- ceilf
-- cosf
-- exp
-- exp2
-- exp2f
-- expm1
-- expm1f
-- fdim
-- fdimf
-- floorf
-- fma
-- fmod
-- log
-- log2
-- log10
-- log10f
-- log1p
-- log1pf
-- log2f
-- roundf
-- sinf
-- tanf
-
-## v0.1.0 - 2018-07-13
-
-- Initial release
-
-[Unreleased]: https://github.com/japaric/libm/compare/v0.1.4...HEAD
-[v0.1.4]: https://github.com/japaric/libm/compare/0.1.3...v0.1.4
-[v0.1.3]: https://github.com/japaric/libm/compare/v0.1.2...0.1.3
-[v0.1.2]: https://github.com/japaric/libm/compare/v0.1.1...v0.1.2
-[v0.1.1]: https://github.com/japaric/libm/compare/v0.1.0...v0.1.1
diff --git a/vendor/libm-0.1.4/CONTRIBUTING.md b/vendor/libm-0.1.4/CONTRIBUTING.md
deleted file mode 100644
index a7e817e13..000000000
--- a/vendor/libm-0.1.4/CONTRIBUTING.md
+++ /dev/null
@@ -1,95 +0,0 @@
-# How to contribute
-
-- Pick your favorite math function from the [issue tracker].
-- Look for the C implementation of the function in the [MUSL source code][src].
-- Copy paste the C code into a Rust file in the `src/math` directory and adjust
- `src/math/mod.rs` accordingly. Also, uncomment the corresponding trait method
- in `src/lib.rs`.
-- Write some simple tests in your module (using `#[test]`)
-- Run `cargo test` to make sure it works
-- Run `cargo test --features musl-reference-tests` to compare your
- implementation against musl's
-- Send us a pull request! Make sure to run `cargo fmt` on your code before
- sending the PR. Also include "closes #42" in the PR description to close the
- corresponding issue.
-- :tada:
-
-[issue tracker]: https://github.com/rust-lang-nursery/libm/issues
-[src]: https://git.musl-libc.org/cgit/musl/tree/src/math
-[`src/math/truncf.rs`]: https://github.com/rust-lang-nursery/libm/blob/master/src/math/truncf.rs
-
-Check [PR #65] for an example.
-
-[PR #65]: https://github.com/rust-lang-nursery/libm/pull/65
-
-## Tips and tricks
-
-- *IMPORTANT* The code in this crate will end up being used in the `core` crate so it can **not**
- have any external dependencies (other than `core` itself).
-
-- Only use relative imports within the `math` directory / module, e.g. `use self::fabs::fabs` or
-`use super::k_cos`. Absolute imports from core are OK, e.g. `use core::u64`.
-
-- To reinterpret a float as an integer use the `to_bits` method. The MUSL code uses the
- `GET_FLOAT_WORD` macro, or a union, to do this operation.
-
-- To reinterpret an integer as a float use the `f32::from_bits` constructor. The MUSL code uses the
- `SET_FLOAT_WORD` macro, or a union, to do this operation.
-
-- You may use other methods from core like `f64::is_nan`, etc. as appropriate.
-
-- If you're implementing one of the private double-underscore functions, take a look at the
- "source" name in the comment at the top for an idea for alternate naming. For example, `__sin`
- was renamed to `k_sin` after the FreeBSD source code naming. Do `use` these private functions in
- `mod.rs`.
-
-- You may encounter weird literals like `0x1p127f` in the MUSL code. These are hexadecimal floating
- point literals. Rust (the language) doesn't support these kind of literals. The best way I have
- found to deal with these literals is to turn them into their integer representation using the
- [`hexf!`] macro and then turn them back into floats. See below:
-
-[`hexf!`]: https://crates.io/crates/hexf
-
-``` rust
-// Step 1: write a program to convert the float into its integer representation
-#[macro_use]
-extern crate hexf;
-
-fn main() {
- println!("{:#x}", hexf32!("0x1.0p127").to_bits());
-}
-```
-
-``` console
-$ # Step 2: run the program
-$ cargo run
-0x7f000000
-```
-
-``` rust
-// Step 3: copy paste the output into libm
-let x1p127 = f32::from_bits(0x7f000000); // 0x1p127f === 2 ^ 12
-```
-
-- Rust code panics on arithmetic overflows when not optimized. You may need to use the [`Wrapping`]
- newtype to avoid this problem.
-
-[`Wrapping`]: https://doc.rust-lang.org/std/num/struct.Wrapping.html
-
-## Testing
-
-Normal tests can be executed with:
-
-```
-cargo test
-```
-
-If you'd like to run tests with randomized inputs that get compared against musl
-itself, you'll need to be on a Linux system and then you can execute:
-
-```
-cargo test --features musl-reference-tests
-```
-
-Note that you may need to pass `--release` to Cargo if there are errors related
-to integer overflow.
diff --git a/vendor/libm-0.1.4/Cargo.toml b/vendor/libm-0.1.4/Cargo.toml
deleted file mode 100644
index 802a7f0aa..000000000
--- a/vendor/libm-0.1.4/Cargo.toml
+++ /dev/null
@@ -1,34 +0,0 @@
-# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
-#
-# When uploading crates to the registry Cargo will automatically
-# "normalize" Cargo.toml files for maximal compatibility
-# with all versions of Cargo and also rewrite `path` dependencies
-# to registry (e.g., crates.io) dependencies
-#
-# If you believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
-
-[package]
-edition = "2018"
-name = "libm"
-version = "0.1.4"
-authors = ["Jorge Aparicio <jorge@japaric.io>"]
-description = "libm in pure Rust"
-documentation = "https://docs.rs/libm"
-keywords = ["libm", "math"]
-categories = ["no-std"]
-license = "MIT OR Apache-2.0"
-repository = "https://github.com/rust-lang-nursery/libm"
-[dev-dependencies.no-panic]
-version = "0.1.8"
-[build-dependencies.rand]
-version = "0.6.5"
-optional = true
-
-[features]
-checked = []
-default = ["stable"]
-musl-reference-tests = ["rand"]
-stable = []
diff --git a/vendor/libm-0.1.4/README.md b/vendor/libm-0.1.4/README.md
deleted file mode 100644
index 3df5b65ea..000000000
--- a/vendor/libm-0.1.4/README.md
+++ /dev/null
@@ -1,58 +0,0 @@
-# `libm`
-
-[![Build Status](https://dev.azure.com/rust-lang/libm/_apis/build/status/rust-lang-nursery.libm?branchName=master)](https://dev.azure.com/rust-lang/libm/_build/latest?definitionId=7&branchName=master)
-
-A port of [MUSL]'s libm to Rust.
-
-[MUSL]: https://www.musl-libc.org/
-
-## Goals
-
-The short term goal of this library is to [enable math support (e.g. `sin`, `atan2`) for the
-`wasm32-unknown-unknown` target][wasm] (cf. [rust-lang-nursery/compiler-builtins][pr]). The longer
-term goal is to enable [math support in the `core` crate][core].
-
-[wasm]: https://github.com/rust-lang-nursery/libm/milestone/1
-[pr]: https://github.com/rust-lang-nursery/compiler-builtins/pull/248
-[core]: https://github.com/rust-lang-nursery/libm/milestone/2
-
-## Already usable
-
-This crate is [on crates.io] and can be used today in stable `#![no_std]` programs like this:
-
-[on crates.io]: https://crates.io/crates/libm
-
-``` rust
-#![no_std]
-
-extern crate libm;
-
-use libm::F32Ext; // adds methods to `f32`
-
-fn foo(x: f32) {
- let y = x.sqrt();
- let z = libm::truncf(x);
-}
-```
-
-The API documentation can be found [here](https://docs.rs/libm).
-
-## Contributing
-
-Please check [CONTRIBUTING.md](CONTRIBUTING.md)
-
-## License
-
-Licensed under either of
-
-- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or
- http://www.apache.org/licenses/LICENSE-2.0)
-- MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
-
-at your option.
-
-### Contribution
-
-Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the
-work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any
-additional terms or conditions.
diff --git a/vendor/libm-0.1.4/azure-pipelines.yml b/vendor/libm-0.1.4/azure-pipelines.yml
deleted file mode 100644
index d8068e023..000000000
--- a/vendor/libm-0.1.4/azure-pipelines.yml
+++ /dev/null
@@ -1,73 +0,0 @@
-trigger:
- - master
-
-jobs:
- - job: Docker
- pool:
- vmImage: ubuntu-16.04
- steps:
- - template: ci/azure-install-rust.yml
- - bash: rustup target add $TARGET
- displayName: "add cross target"
- - bash: rustup target add x86_64-unknown-linux-musl
- displayName: "add musl target"
- - bash: cargo generate-lockfile && ./ci/run-docker.sh $TARGET
- displayName: "run tests"
- strategy:
- matrix:
- aarch64:
- TARGET: aarch64-unknown-linux-gnu
- arm:
- TARGET: arm-unknown-linux-gnueabi
- armhf:
- TARGET: arm-unknown-linux-gnueabihf
- armv7:
- TARGET: armv7-unknown-linux-gnueabihf
- i686:
- TARGET: i686-unknown-linux-gnu
- mips:
- TARGET: mips-unknown-linux-gnu
- mips64:
- TARGET: mips64-unknown-linux-gnuabi64
- mips64el:
- TARGET: mips64el-unknown-linux-gnuabi64
- powerpc:
- TARGET: powerpc-unknown-linux-gnu
- powerpc64:
- TARGET: powerpc64-unknown-linux-gnu
- powerpc64le:
- TARGET: powerpc64le-unknown-linux-gnu
- x86_64:
- TARGET: x86_64-unknown-linux-gnu
-
- - job: wasm
- pool:
- vmImage: ubuntu-16.04
- steps:
- - template: ci/azure-install-rust.yml
- - script: rustup target add wasm32-unknown-unknown
- displayName: "Install rust wasm target"
- - script: cargo build --target wasm32-unknown-unknown
- displayName: "Build for wasm"
- - script: cargo build --target wasm32-unknown-unknown --no-default-features
- displayName: "Build for wasm (no default features)"
- variables:
- TOOLCHAIN: nightly
-
- - job: rustfmt
- pool:
- vmImage: ubuntu-16.04
- steps:
- - template: ci/azure-install-rust.yml
- - bash: rustup component add rustfmt
- displayName: "install rustfmt"
- - bash: cargo fmt --all -- --check
- displayName: "check formatting"
-
- - job: compiler_builtins_works
- pool:
- vmImage: ubuntu-16.04
- steps:
- - template: ci/azure-install-rust.yml
- - bash: cargo build -p cb
- displayName: "Check compiler-builtins still probably builds"
diff --git a/vendor/libm-0.1.4/build.rs b/vendor/libm-0.1.4/build.rs
deleted file mode 100644
index 9af6dec93..000000000
--- a/vendor/libm-0.1.4/build.rs
+++ /dev/null
@@ -1,444 +0,0 @@
-use std::env;
-
-fn main() {
- println!("cargo:rerun-if-changed=build.rs");
-
- #[cfg(feature = "musl-reference-tests")]
- musl_reference_tests::generate();
-
- if !cfg!(feature = "checked") {
- let lvl = env::var("OPT_LEVEL").unwrap();
- if lvl != "0" {
- println!("cargo:rustc-cfg=assert_no_panic");
- }
- }
-}
-
-#[cfg(feature = "musl-reference-tests")]
-mod musl_reference_tests {
- use rand::seq::SliceRandom;
- use rand::Rng;
- use std::fs;
- use std::process::Command;
-
- // Number of tests to generate for each function
- const NTESTS: usize = 500;
-
- // These files are all internal functions or otherwise miscellaneous, not
- // defining a function we want to test.
- const IGNORED_FILES: &[&str] = &["fenv.rs"];
-
- struct Function {
- name: String,
- args: Vec<Ty>,
- ret: Vec<Ty>,
- tests: Vec<Test>,
- }
-
- enum Ty {
- F32,
- F64,
- I32,
- Bool,
- }
-
- struct Test {
- inputs: Vec<i64>,
- outputs: Vec<i64>,
- }
-
- pub fn generate() {
- let files = fs::read_dir("src/math")
- .unwrap()
- .map(|f| f.unwrap().path())
- .collect::<Vec<_>>();
-
- let mut math = Vec::new();
- for file in files {
- if IGNORED_FILES.iter().any(|f| file.ends_with(f)) {
- continue;
- }
-
- println!("generating musl reference tests in {:?}", file);
-
- let contents = fs::read_to_string(file).unwrap();
- let mut functions = contents.lines().filter(|f| f.starts_with("pub fn"));
- while let Some(function_to_test) = functions.next() {
- math.push(parse(function_to_test));
- }
- }
-
- // Generate a bunch of random inputs for each function. This will
- // attempt to generate a good set of uniform test cases for exercising
- // all the various functionality.
- generate_random_tests(&mut math, &mut rand::thread_rng());
-
- // After we have all our inputs, use the x86_64-unknown-linux-musl
- // target to generate the expected output.
- generate_test_outputs(&mut math);
- //panic!("Boo");
- // ... and now that we have both inputs and expected outputs, do a bunch
- // of codegen to create the unit tests which we'll actually execute.
- generate_unit_tests(&math);
- }
-
- /// A "poor man's" parser for the signature of a function
- fn parse(s: &str) -> Function {
- let s = eat(s, "pub fn ");
- let pos = s.find('(').unwrap();
- let name = &s[..pos];
- let s = &s[pos + 1..];
- let end = s.find(')').unwrap();
- let args = s[..end]
- .split(',')
- .map(|arg| {
- let colon = arg.find(':').unwrap();
- parse_ty(arg[colon + 1..].trim())
- })
- .collect::<Vec<_>>();
- let tail = &s[end + 1..];
- let tail = eat(tail, " -> ");
- let ret = parse_retty(tail.replace("{", "").trim());
-
- return Function {
- name: name.to_string(),
- args,
- ret,
- tests: Vec::new(),
- };
-
- fn parse_ty(s: &str) -> Ty {
- match s {
- "f32" => Ty::F32,
- "f64" => Ty::F64,
- "i32" => Ty::I32,
- "bool" => Ty::Bool,
- other => panic!("unknown type `{}`", other),
- }
- }
-
- fn parse_retty(s: &str) -> Vec<Ty> {
- match s {
- "(f32, f32)" => vec![Ty::F32, Ty::F32],
- "(f32, i32)" => vec![Ty::F32, Ty::I32],
- "(f64, f64)" => vec![Ty::F64, Ty::F64],
- "(f64, i32)" => vec![Ty::F64, Ty::I32],
- other => vec![parse_ty(other)],
- }
- }
-
- fn eat<'a>(s: &'a str, prefix: &str) -> &'a str {
- if s.starts_with(prefix) {
- &s[prefix.len()..]
- } else {
- panic!("{:?} didn't start with {:?}", s, prefix)
- }
- }
- }
-
- fn generate_random_tests<R: Rng>(functions: &mut [Function], rng: &mut R) {
- for function in functions {
- for _ in 0..NTESTS {
- function.tests.push(generate_test(function, rng));
- }
- }
-
- fn generate_test<R: Rng>(function: &Function, rng: &mut R) -> Test {
- let mut inputs = function
- .args
- .iter()
- .map(|ty| ty.gen_i64(rng))
- .collect::<Vec<_>>();
-
- // First argument to this function appears to be a number of
- // iterations, so passing in massive random numbers causes it to
- // take forever to execute, so make sure we're not running random
- // math code until the heat death of the universe.
- if function.name == "jn" || function.name == "jnf" {
- inputs[0] &= 0xffff;
- }
-
- Test {
- inputs,
- // zero output for now since we'll generate it later
- outputs: vec![],
- }
- }
- }
-
- impl Ty {
- fn gen_i64<R: Rng>(&self, r: &mut R) -> i64 {
- use std::f32;
- use std::f64;
-
- return match self {
- Ty::F32 => {
- if r.gen_range(0, 20) < 1 {
- let i = *[f32::NAN, f32::INFINITY, f32::NEG_INFINITY]
- .choose(r)
- .unwrap();
- i.to_bits().into()
- } else {
- r.gen::<f32>().to_bits().into()
- }
- }
- Ty::F64 => {
- if r.gen_range(0, 20) < 1 {
- let i = *[f64::NAN, f64::INFINITY, f64::NEG_INFINITY]
- .choose(r)
- .unwrap();
- i.to_bits() as i64
- } else {
- r.gen::<f64>().to_bits() as i64
- }
- }
- Ty::I32 => {
- if r.gen_range(0, 10) < 1 {
- let i = *[i32::max_value(), 0, i32::min_value()].choose(r).unwrap();
- i.into()
- } else {
- r.gen::<i32>().into()
- }
- }
- Ty::Bool => r.gen::<bool>() as i64,
- };
- }
-
- fn libc_ty(&self) -> &'static str {
- match self {
- Ty::F32 => "f32",
- Ty::F64 => "f64",
- Ty::I32 => "i32",
- Ty::Bool => "i32",
- }
- }
-
- fn libc_pty(&self) -> &'static str {
- match self {
- Ty::F32 => "*mut f32",
- Ty::F64 => "*mut f64",
- Ty::I32 => "*mut i32",
- Ty::Bool => "*mut i32",
- }
- }
-
- fn default(&self) -> &'static str {
- match self {
- Ty::F32 => "0_f32",
- Ty::F64 => "0_f64",
- Ty::I32 => "0_i32",
- Ty::Bool => "false",
- }
- }
-
- fn to_i64(&self) -> &'static str {
- match self {
- Ty::F32 => ".to_bits() as i64",
- Ty::F64 => ".to_bits() as i64",
- Ty::I32 => " as i64",
- Ty::Bool => " as i64",
- }
- }
- }
-
- fn generate_test_outputs(functions: &mut [Function]) {
- let mut src = String::new();
- let dst = std::env::var("OUT_DIR").unwrap();
-
- // Generate a program which will run all tests with all inputs in
- // `functions`. This program will write all outputs to stdout (in a
- // binary format).
- src.push_str("use std::io::Write;");
- src.push_str("fn main() {");
- src.push_str("let mut result = Vec::new();");
- for function in functions.iter_mut() {
- src.push_str("unsafe {");
- src.push_str("extern { fn ");
- src.push_str(&function.name);
- src.push_str("(");
-
- let (ret, retptr) = match function.name.as_str() {
- "sincos" | "sincosf" => (None, &function.ret[..]),
- _ => (Some(&function.ret[0]), &function.ret[1..]),
- };
- for (i, arg) in function.args.iter().enumerate() {
- src.push_str(&format!("arg{}: {},", i, arg.libc_ty()));
- }
- for (i, ret) in retptr.iter().enumerate() {
- src.push_str(&format!("argret{}: {},", i, ret.libc_pty()));
- }
- src.push_str(")");
- if let Some(ty) = ret {
- src.push_str(" -> ");
- src.push_str(ty.libc_ty());
- }
- src.push_str("; }");
-
- src.push_str(&format!("static TESTS: &[[i64; {}]]", function.args.len()));
- src.push_str(" = &[");
- for test in function.tests.iter() {
- src.push_str("[");
- for val in test.inputs.iter() {
- src.push_str(&val.to_string());
- src.push_str(",");
- }
- src.push_str("],");
- }
- src.push_str("];");
-
- src.push_str("for test in TESTS {");
- for (i, arg) in retptr.iter().enumerate() {
- src.push_str(&format!("let mut argret{} = {};", i, arg.default()));
- }
- src.push_str("let output = ");
- src.push_str(&function.name);
- src.push_str("(");
- for (i, arg) in function.args.iter().enumerate() {
- src.push_str(&match arg {
- Ty::F32 => format!("f32::from_bits(test[{}] as u32)", i),
- Ty::F64 => format!("f64::from_bits(test[{}] as u64)", i),
- Ty::I32 => format!("test[{}] as i32", i),
- Ty::Bool => format!("test[{}] as i32", i),
- });
- src.push_str(",");
- }
- for (i, _) in retptr.iter().enumerate() {
- src.push_str(&format!("&mut argret{},", i));
- }
- src.push_str(");");
- if let Some(ty) = &ret {
- src.push_str(&format!("let output = output{};", ty.to_i64()));
- src.push_str("result.extend_from_slice(&output.to_le_bytes());");
- }
-
- for (i, ret) in retptr.iter().enumerate() {
- src.push_str(&format!(
- "result.extend_from_slice(&(argret{}{}).to_le_bytes());",
- i,
- ret.to_i64(),
- ));
- }
- src.push_str("}");
-
- src.push_str("}");
- }
-
- src.push_str("std::io::stdout().write_all(&result).unwrap();");
-
- src.push_str("}");
-
- let path = format!("{}/gen.rs", dst);
- fs::write(&path, src).unwrap();
-
- // Make it somewhat pretty if something goes wrong
- drop(Command::new("rustfmt").arg(&path).status());
-
- // Compile and execute this tests for the musl target, assuming we're an
- // x86_64 host effectively.
- let status = Command::new("rustc")
- .current_dir(&dst)
- .arg(&path)
- .arg("--target=x86_64-unknown-linux-musl")
- .status()
- .unwrap();
- assert!(status.success());
- let output = Command::new("./gen").current_dir(&dst).output().unwrap();
- assert!(output.status.success());
- assert!(output.stderr.is_empty());
-
- // Map all the output bytes back to an `i64` and then shove it all into
- // the expected results.
- let mut results = output.stdout.chunks_exact(8).map(|buf| {
- let mut exact = [0; 8];
- exact.copy_from_slice(buf);
- i64::from_le_bytes(exact)
- });
-
- for f in functions.iter_mut() {
- for test in f.tests.iter_mut() {
- test.outputs = (0..f.ret.len()).map(|_| results.next().unwrap()).collect();
- }
- }
- assert!(results.next().is_none());
- }
-
- /// Codegens a file which has a ton of `#[test]` annotations for all the
- /// tests that we generated above.
- fn generate_unit_tests(functions: &[Function]) {
- let mut src = String::new();
- let dst = std::env::var("OUT_DIR").unwrap();
-
- for function in functions {
- src.push_str("#[test]");
- src.push_str("fn ");
- src.push_str(&function.name);
- src.push_str("_matches_musl() {");
- src.push_str(&format!(
- "static TESTS: &[([i64; {}], [i64; {}])]",
- function.args.len(),
- function.ret.len(),
- ));
- src.push_str(" = &[");
- for test in function.tests.iter() {
- src.push_str("([");
- for val in test.inputs.iter() {
- src.push_str(&val.to_string());
- src.push_str(",");
- }
- src.push_str("],");
- src.push_str("[");
- for val in test.outputs.iter() {
- src.push_str(&val.to_string());
- src.push_str(",");
- }
- src.push_str("],");
- src.push_str("),");
- }
- src.push_str("];");
-
- src.push_str("for (test, expected) in TESTS {");
- src.push_str("let output = ");
- src.push_str(&function.name);
- src.push_str("(");
- for (i, arg) in function.args.iter().enumerate() {
- src.push_str(&match arg {
- Ty::F32 => format!("f32::from_bits(test[{}] as u32)", i),
- Ty::F64 => format!("f64::from_bits(test[{}] as u64)", i),
- Ty::I32 => format!("test[{}] as i32", i),
- Ty::Bool => format!("test[{}] as i32", i),
- });
- src.push_str(",");
- }
- src.push_str(");");
-
- for (i, ret) in function.ret.iter().enumerate() {
- let get = if function.ret.len() == 1 {
- String::new()
- } else {
- format!(".{}", i)
- };
- src.push_str(&(match ret {
- Ty::F32 => format!("if _eqf(output{}, f32::from_bits(expected[{}] as u32)).is_ok() {{ continue }}", get, i),
- Ty::F64 => format!("if _eq(output{}, f64::from_bits(expected[{}] as u64)).is_ok() {{ continue }}", get, i),
- Ty::I32 => format!("if output{} as i64 == expected[{}] {{ continue }}", get, i),
- Ty::Bool => unreachable!(),
- }));
- }
-
- src.push_str(
- r#"
- panic!("INPUT: {:?} EXPECTED: {:?} ACTUAL {:?}", test, expected, output);
- "#,
- );
- src.push_str("}");
-
- src.push_str("}");
- }
-
- let path = format!("{}/musl-tests.rs", dst);
- fs::write(&path, src).unwrap();
-
- // Try to make it somewhat pretty
- drop(Command::new("rustfmt").arg(&path).status());
- }
-}
diff --git a/vendor/libm-0.1.4/ci/azure-install-rust.yml b/vendor/libm-0.1.4/ci/azure-install-rust.yml
deleted file mode 100644
index c5a53122f..000000000
--- a/vendor/libm-0.1.4/ci/azure-install-rust.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-steps:
- - bash: |
- set -e
- toolchain=$TOOLCHAIN
- if [ "$toolchain" = "" ]; then
- toolchain=stable
- fi
- if command -v rustup; then
- rustup update $toolchain
- rustup default $toolchain
- else
- curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain $toolchain
- echo "##vso[task.setvariable variable=PATH;]$PATH:$HOME/.cargo/bin"
- fi
- displayName: Install rust (unix)
- condition: ne( variables['Agent.OS'], 'Windows_NT' )
-
- - bash: rustup update stable-$TOOLCHAIN && rustup default stable-$TOOLCHAIN
- displayName: Install rust (windows)
- condition: eq( variables['Agent.OS'], 'Windows_NT' )
-
- - script: |
- rustc -Vv
- cargo -V
- displayName: Query rust and cargo versions
diff --git a/vendor/libm-0.1.4/ci/docker/aarch64-unknown-linux-gnu/Dockerfile b/vendor/libm-0.1.4/ci/docker/aarch64-unknown-linux-gnu/Dockerfile
deleted file mode 100644
index 9e2559f4a..000000000
--- a/vendor/libm-0.1.4/ci/docker/aarch64-unknown-linux-gnu/Dockerfile
+++ /dev/null
@@ -1,10 +0,0 @@
-FROM ubuntu:18.04
-RUN apt-get update && \
- apt-get install -y --no-install-recommends \
- gcc libc6-dev ca-certificates \
- gcc-aarch64-linux-gnu libc6-dev-arm64-cross \
- qemu-user-static
-ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc \
- CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUNNER=qemu-aarch64-static \
- QEMU_LD_PREFIX=/usr/aarch64-linux-gnu \
- RUST_TEST_THREADS=1
diff --git a/vendor/libm-0.1.4/ci/docker/arm-unknown-linux-gnueabi/Dockerfile b/vendor/libm-0.1.4/ci/docker/arm-unknown-linux-gnueabi/Dockerfile
deleted file mode 100644
index afab874bc..000000000
--- a/vendor/libm-0.1.4/ci/docker/arm-unknown-linux-gnueabi/Dockerfile
+++ /dev/null
@@ -1,9 +0,0 @@
-FROM ubuntu:18.04
-RUN apt-get update && \
- apt-get install -y --no-install-recommends \
- gcc libc6-dev ca-certificates \
- gcc-arm-linux-gnueabi libc6-dev-armel-cross qemu-user-static
-ENV CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABI_LINKER=arm-linux-gnueabi-gcc \
- CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABI_RUNNER=qemu-arm-static \
- QEMU_LD_PREFIX=/usr/arm-linux-gnueabi \
- RUST_TEST_THREADS=1
diff --git a/vendor/libm-0.1.4/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile b/vendor/libm-0.1.4/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile
deleted file mode 100644
index 3ed3602b0..000000000
--- a/vendor/libm-0.1.4/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile
+++ /dev/null
@@ -1,9 +0,0 @@
-FROM ubuntu:18.04
-RUN apt-get update && \
- apt-get install -y --no-install-recommends \
- gcc libc6-dev ca-certificates \
- gcc-arm-linux-gnueabihf libc6-dev-armhf-cross qemu-user-static
-ENV CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc \
- CARGO_TARGET_ARM_UNKNOWN_LINUX_GNUEABIHF_RUNNER=qemu-arm-static \
- QEMU_LD_PREFIX=/usr/arm-linux-gnueabihf \
- RUST_TEST_THREADS=1
diff --git a/vendor/libm-0.1.4/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile b/vendor/libm-0.1.4/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile
deleted file mode 100644
index 6617af155..000000000
--- a/vendor/libm-0.1.4/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile
+++ /dev/null
@@ -1,9 +0,0 @@
-FROM ubuntu:18.04
-RUN apt-get update && \
- apt-get install -y --no-install-recommends \
- gcc libc6-dev ca-certificates \
- gcc-arm-linux-gnueabihf libc6-dev-armhf-cross qemu-user-static
-ENV CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc \
- CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_RUNNER=qemu-arm-static \
- QEMU_LD_PREFIX=/usr/arm-linux-gnueabihf \
- RUST_TEST_THREADS=1
diff --git a/vendor/libm-0.1.4/ci/docker/i686-unknown-linux-gnu/Dockerfile b/vendor/libm-0.1.4/ci/docker/i686-unknown-linux-gnu/Dockerfile
deleted file mode 100644
index 5783e28e1..000000000
--- a/vendor/libm-0.1.4/ci/docker/i686-unknown-linux-gnu/Dockerfile
+++ /dev/null
@@ -1,4 +0,0 @@
-FROM ubuntu:18.04
-RUN apt-get update && \
- apt-get install -y --no-install-recommends \
- gcc-multilib libc6-dev ca-certificates
diff --git a/vendor/libm-0.1.4/ci/docker/mips-unknown-linux-gnu/Dockerfile b/vendor/libm-0.1.4/ci/docker/mips-unknown-linux-gnu/Dockerfile
deleted file mode 100644
index f47e8f522..000000000
--- a/vendor/libm-0.1.4/ci/docker/mips-unknown-linux-gnu/Dockerfile
+++ /dev/null
@@ -1,12 +0,0 @@
-FROM ubuntu:18.04
-
-RUN apt-get update && \
- apt-get install -y --no-install-recommends \
- gcc libc6-dev ca-certificates \
- gcc-mips-linux-gnu libc6-dev-mips-cross \
- binfmt-support qemu-user-static qemu-system-mips
-
-ENV CARGO_TARGET_MIPS_UNKNOWN_LINUX_GNU_LINKER=mips-linux-gnu-gcc \
- CARGO_TARGET_MIPS_UNKNOWN_LINUX_GNU_RUNNER=qemu-mips-static \
- QEMU_LD_PREFIX=/usr/mips-linux-gnu \
- RUST_TEST_THREADS=1
diff --git a/vendor/libm-0.1.4/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile b/vendor/libm-0.1.4/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile
deleted file mode 100644
index 8fa77c7bd..000000000
--- a/vendor/libm-0.1.4/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile
+++ /dev/null
@@ -1,15 +0,0 @@
-FROM ubuntu:18.04
-RUN apt-get update && \
- apt-get install -y --no-install-recommends \
- ca-certificates \
- gcc \
- gcc-mips64-linux-gnuabi64 \
- libc6-dev \
- libc6-dev-mips64-cross \
- qemu-user-static \
- qemu-system-mips
-ENV CARGO_TARGET_MIPS64_UNKNOWN_LINUX_GNUABI64_LINKER=mips64-linux-gnuabi64-gcc \
- CARGO_TARGET_MIPS64_UNKNOWN_LINUX_GNUABI64_RUNNER=qemu-mips64-static \
- CC_mips64_unknown_linux_gnuabi64=mips64-linux-gnuabi64-gcc \
- QEMU_LD_PREFIX=/usr/mips64-linux-gnuabi64 \
- RUST_TEST_THREADS=1
diff --git a/vendor/libm-0.1.4/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile b/vendor/libm-0.1.4/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile
deleted file mode 100644
index c6611d9ac..000000000
--- a/vendor/libm-0.1.4/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile
+++ /dev/null
@@ -1,14 +0,0 @@
-FROM ubuntu:18.04
-RUN apt-get update && \
- apt-get install -y --no-install-recommends \
- ca-certificates \
- gcc \
- gcc-mips64el-linux-gnuabi64 \
- libc6-dev \
- libc6-dev-mips64el-cross \
- qemu-user-static
-ENV CARGO_TARGET_MIPS64EL_UNKNOWN_LINUX_GNUABI64_LINKER=mips64el-linux-gnuabi64-gcc \
- CARGO_TARGET_MIPS64EL_UNKNOWN_LINUX_GNUABI64_RUNNER=qemu-mips64el-static \
- CC_mips64el_unknown_linux_gnuabi64=mips64el-linux-gnuabi64-gcc \
- QEMU_LD_PREFIX=/usr/mips64el-linux-gnuabi64 \
- RUST_TEST_THREADS=1
diff --git a/vendor/libm-0.1.4/ci/docker/mipsel-unknown-linux-gnu/Dockerfile b/vendor/libm-0.1.4/ci/docker/mipsel-unknown-linux-gnu/Dockerfile
deleted file mode 100644
index 0bc695624..000000000
--- a/vendor/libm-0.1.4/ci/docker/mipsel-unknown-linux-gnu/Dockerfile
+++ /dev/null
@@ -1,12 +0,0 @@
-FROM ubuntu:18.04
-
-RUN apt-get update && \
- apt-get install -y --no-install-recommends \
- gcc libc6-dev ca-certificates \
- gcc-mipsel-linux-gnu libc6-dev-mipsel-cross \
- binfmt-support qemu-user-static
-
-ENV CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_GNU_LINKER=mipsel-linux-gnu-gcc \
- CARGO_TARGET_MIPSEL_UNKNOWN_LINUX_GNU_RUNNER=qemu-mipsel-static \
- QEMU_LD_PREFIX=/usr/mipsel-linux-gnu \
- RUST_TEST_THREADS=1
diff --git a/vendor/libm-0.1.4/ci/docker/powerpc-unknown-linux-gnu/Dockerfile b/vendor/libm-0.1.4/ci/docker/powerpc-unknown-linux-gnu/Dockerfile
deleted file mode 100644
index 2d39fef61..000000000
--- a/vendor/libm-0.1.4/ci/docker/powerpc-unknown-linux-gnu/Dockerfile
+++ /dev/null
@@ -1,12 +0,0 @@
-FROM ubuntu:18.04
-
-RUN apt-get update && \
- apt-get install -y --no-install-recommends \
- gcc libc6-dev qemu-user-static ca-certificates \
- gcc-powerpc-linux-gnu libc6-dev-powerpc-cross \
- qemu-system-ppc
-
-ENV CARGO_TARGET_POWERPC_UNKNOWN_LINUX_GNU_LINKER=powerpc-linux-gnu-gcc \
- CARGO_TARGET_POWERPC_UNKNOWN_LINUX_GNU_RUNNER=qemu-ppc-static \
- QEMU_LD_PREFIX=/usr/powerpc-linux-gnu \
- RUST_TEST_THREADS=1
diff --git a/vendor/libm-0.1.4/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile b/vendor/libm-0.1.4/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile
deleted file mode 100644
index 653cd3511..000000000
--- a/vendor/libm-0.1.4/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile
+++ /dev/null
@@ -1,13 +0,0 @@
-FROM ubuntu:18.04
-
-RUN apt-get update && \
- apt-get install -y --no-install-recommends \
- gcc libc6-dev ca-certificates \
- gcc-powerpc64-linux-gnu libc6-dev-ppc64-cross \
- binfmt-support qemu-user-static qemu-system-ppc
-
-ENV CARGO_TARGET_POWERPC64_UNKNOWN_LINUX_GNU_LINKER=powerpc64-linux-gnu-gcc \
- CARGO_TARGET_POWERPC64_UNKNOWN_LINUX_GNU_RUNNER=qemu-ppc64-static \
- CC_powerpc64_unknown_linux_gnu=powerpc64-linux-gnu-gcc \
- QEMU_LD_PREFIX=/usr/powerpc64-linux-gnu \
- RUST_TEST_THREADS=1
diff --git a/vendor/libm-0.1.4/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile b/vendor/libm-0.1.4/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile
deleted file mode 100644
index 63ea9af9d..000000000
--- a/vendor/libm-0.1.4/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile
+++ /dev/null
@@ -1,13 +0,0 @@
-FROM ubuntu:18.04
-
-RUN apt-get update && \
- apt-get install -y --no-install-recommends \
- gcc libc6-dev qemu-user-static ca-certificates \
- gcc-powerpc64le-linux-gnu libc6-dev-ppc64el-cross \
- qemu-system-ppc
-
-ENV CARGO_TARGET_POWERPC64LE_UNKNOWN_LINUX_GNU_LINKER=powerpc64le-linux-gnu-gcc \
- CARGO_TARGET_POWERPC64LE_UNKNOWN_LINUX_GNU_RUNNER=qemu-ppc64le-static \
- QEMU_CPU=POWER8 \
- QEMU_LD_PREFIX=/usr/powerpc64le-linux-gnu \
- RUST_TEST_THREADS=1
diff --git a/vendor/libm-0.1.4/ci/docker/x86_64-unknown-linux-gnu/Dockerfile b/vendor/libm-0.1.4/ci/docker/x86_64-unknown-linux-gnu/Dockerfile
deleted file mode 100644
index 98000f4eb..000000000
--- a/vendor/libm-0.1.4/ci/docker/x86_64-unknown-linux-gnu/Dockerfile
+++ /dev/null
@@ -1,4 +0,0 @@
-FROM ubuntu:18.04
-RUN apt-get update && \
- apt-get install -y --no-install-recommends \
- gcc libc6-dev ca-certificates
diff --git a/vendor/libm-0.1.4/ci/run-docker.sh b/vendor/libm-0.1.4/ci/run-docker.sh
deleted file mode 100755
index e7b80c719..000000000
--- a/vendor/libm-0.1.4/ci/run-docker.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-# Small script to run tests for a target (or all targets) inside all the
-# respective docker images.
-
-set -ex
-
-run() {
- local target=$1
-
- echo $target
-
- # This directory needs to exist before calling docker, otherwise docker will create it but it
- # will be owned by root
- mkdir -p target
-
- docker build -t $target ci/docker/$target
- docker run \
- --rm \
- --user $(id -u):$(id -g) \
- -e CARGO_HOME=/cargo \
- -e CARGO_TARGET_DIR=/target \
- -v $(dirname $(dirname `which cargo`)):/cargo \
- -v `pwd`/target:/target \
- -v `pwd`:/checkout:ro \
- -v `rustc --print sysroot`:/rust:ro \
- --init \
- -w /checkout \
- $target \
- sh -c "HOME=/tmp PATH=\$PATH:/rust/bin exec ci/run.sh $target"
-}
-
-if [ -z "$1" ]; then
- for d in `ls ci/docker/`; do
- run $d
- done
-else
- run $1
-fi
diff --git a/vendor/libm-0.1.4/ci/run.sh b/vendor/libm-0.1.4/ci/run.sh
deleted file mode 100755
index 42c241645..000000000
--- a/vendor/libm-0.1.4/ci/run.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-set -ex
-TARGET=$1
-
-cargo test --target $TARGET
-cargo test --target $TARGET --release
-
-cargo test --features 'checked musl-reference-tests' --target $TARGET
-
-cargo test --features 'checked musl-reference-tests' --target $TARGET --release
diff --git a/vendor/libm-0.1.4/src/lib.rs b/vendor/libm-0.1.4/src/lib.rs
deleted file mode 100644
index a47883d81..000000000
--- a/vendor/libm-0.1.4/src/lib.rs
+++ /dev/null
@@ -1,642 +0,0 @@
-//! libm in pure Rust
-//!
-//! # Usage
-//!
-//! You can use this crate in two ways:
-//!
-//! - By directly using its free functions, e.g. `libm::powf`.
-//!
-//! - By importing the `F32Ext` and / or `F64Ext` extension traits to add methods like `powf` to the
-//! `f32` and `f64` types. Then you'll be able to invoke math functions as methods, e.g. `x.sqrt()`.
-
-#![deny(warnings)]
-#![no_std]
-#![cfg_attr(
- all(target_arch = "wasm32", not(feature = "stable")),
- feature(core_intrinsics)
-)]
-
-mod math;
-
-use core::{f32, f64};
-
-pub use self::math::*;
-
-/// Approximate equality with 1 ULP of tolerance
-#[doc(hidden)]
-#[inline]
-pub fn _eqf(a: f32, b: f32) -> Result<(), u32> {
- if a.is_nan() && b.is_nan() {
- Ok(())
- } else {
- let err = (a.to_bits() as i32).wrapping_sub(b.to_bits() as i32).abs();
-
- if err <= 1 {
- Ok(())
- } else {
- Err(err as u32)
- }
- }
-}
-
-#[doc(hidden)]
-#[inline]
-pub fn _eq(a: f64, b: f64) -> Result<(), u64> {
- if a.is_nan() && b.is_nan() {
- Ok(())
- } else {
- let err = (a.to_bits() as i64).wrapping_sub(b.to_bits() as i64).abs();
-
- if err <= 1 {
- Ok(())
- } else {
- Err(err as u64)
- }
- }
-}
-
-/// Math support for `f32`
-///
-/// This trait is sealed and cannot be implemented outside of `libm`.
-pub trait F32Ext: private::Sealed + Sized {
- fn floor(self) -> Self;
-
- fn ceil(self) -> Self;
-
- fn round(self) -> Self;
-
- fn trunc(self) -> Self;
-
- fn fdim(self, rhs: Self) -> Self;
-
- fn fract(self) -> Self;
-
- fn abs(self) -> Self;
-
- // NOTE depends on unstable intrinsics::copysignf32
- // fn signum(self) -> Self;
-
- fn mul_add(self, a: Self, b: Self) -> Self;
-
- fn div_euc(self, rhs: Self) -> Self;
-
- fn mod_euc(self, rhs: Self) -> Self;
-
- // NOTE depends on unstable intrinsics::powif32
- // fn powi(self, n: i32) -> Self;
-
- fn powf(self, n: Self) -> Self;
-
- fn sqrt(self) -> Self;
-
- fn exp(self) -> Self;
-
- fn exp2(self) -> Self;
-
- fn ln(self) -> Self;
-
- fn log(self, base: Self) -> Self;
-
- fn log2(self) -> Self;
-
- fn log10(self) -> Self;
-
- fn cbrt(self) -> Self;
-
- fn hypot(self, other: Self) -> Self;
-
- fn sin(self) -> Self;
-
- fn cos(self) -> Self;
-
- fn tan(self) -> Self;
-
- fn asin(self) -> Self;
-
- fn acos(self) -> Self;
-
- fn atan(self) -> Self;
-
- fn atan2(self, other: Self) -> Self;
-
- fn sin_cos(self) -> (Self, Self);
-
- fn exp_m1(self) -> Self;
-
- fn ln_1p(self) -> Self;
-
- fn sinh(self) -> Self;
-
- fn cosh(self) -> Self;
-
- fn tanh(self) -> Self;
-
- fn asinh(self) -> Self;
-
- fn acosh(self) -> Self;
-
- fn atanh(self) -> Self;
-
- fn min(self, other: Self) -> Self;
-
- fn max(self, other: Self) -> Self;
-}
-
-impl F32Ext for f32 {
- #[inline]
- fn floor(self) -> Self {
- floorf(self)
- }
-
- #[inline]
- fn ceil(self) -> Self {
- ceilf(self)
- }
-
- #[inline]
- fn round(self) -> Self {
- roundf(self)
- }
-
- #[inline]
- fn trunc(self) -> Self {
- truncf(self)
- }
-
- #[inline]
- fn fdim(self, rhs: Self) -> Self {
- fdimf(self, rhs)
- }
-
- #[inline]
- fn fract(self) -> Self {
- self - self.trunc()
- }
-
- #[inline]
- fn abs(self) -> Self {
- fabsf(self)
- }
-
- #[inline]
- fn mul_add(self, a: Self, b: Self) -> Self {
- fmaf(self, a, b)
- }
-
- #[inline]
- fn div_euc(self, rhs: Self) -> Self {
- let q = (self / rhs).trunc();
- if self % rhs < 0.0 {
- return if rhs > 0.0 { q - 1.0 } else { q + 1.0 };
- }
- q
- }
-
- #[inline]
- fn mod_euc(self, rhs: f32) -> f32 {
- let r = self % rhs;
- if r < 0.0 {
- r + rhs.abs()
- } else {
- r
- }
- }
-
- #[inline]
- fn powf(self, n: Self) -> Self {
- powf(self, n)
- }
-
- #[inline]
- fn sqrt(self) -> Self {
- sqrtf(self)
- }
-
- #[inline]
- fn exp(self) -> Self {
- expf(self)
- }
-
- #[inline]
- fn exp2(self) -> Self {
- exp2f(self)
- }
-
- #[inline]
- fn ln(self) -> Self {
- logf(self)
- }
-
- #[inline]
- fn log(self, base: Self) -> Self {
- self.ln() / base.ln()
- }
-
- #[inline]
- fn log2(self) -> Self {
- log2f(self)
- }
-
- #[inline]
- fn log10(self) -> Self {
- log10f(self)
- }
-
- #[inline]
- fn cbrt(self) -> Self {
- cbrtf(self)
- }
-
- #[inline]
- fn hypot(self, other: Self) -> Self {
- hypotf(self, other)
- }
-
- #[inline]
- fn sin(self) -> Self {
- sinf(self)
- }
-
- #[inline]
- fn cos(self) -> Self {
- cosf(self)
- }
-
- #[inline]
- fn tan(self) -> Self {
- tanf(self)
- }
-
- #[inline]
- fn asin(self) -> Self {
- asinf(self)
- }
-
- #[inline]
- fn acos(self) -> Self {
- acosf(self)
- }
-
- #[inline]
- fn atan(self) -> Self {
- atanf(self)
- }
-
- #[inline]
- fn atan2(self, other: Self) -> Self {
- atan2f(self, other)
- }
-
- #[inline]
- fn sin_cos(self) -> (Self, Self) {
- sincosf(self)
- }
-
- #[inline]
- fn exp_m1(self) -> Self {
- expm1f(self)
- }
-
- #[inline]
- fn ln_1p(self) -> Self {
- log1pf(self)
- }
-
- #[inline]
- fn sinh(self) -> Self {
- sinhf(self)
- }
-
- #[inline]
- fn cosh(self) -> Self {
- coshf(self)
- }
-
- #[inline]
- fn tanh(self) -> Self {
- tanhf(self)
- }
-
- #[inline]
- fn asinh(self) -> Self {
- asinhf(self)
- }
-
- #[inline]
- fn acosh(self) -> Self {
- acoshf(self)
- }
-
- #[inline]
- fn atanh(self) -> Self {
- atanhf(self)
- }
-
- #[inline]
- fn min(self, other: Self) -> Self {
- fminf(self, other)
- }
-
- #[inline]
- fn max(self, other: Self) -> Self {
- fmaxf(self, other)
- }
-}
-
-/// Math support for `f64`
-///
-/// This trait is sealed and cannot be implemented outside of `libm`.
-pub trait F64Ext: private::Sealed + Sized {
- fn floor(self) -> Self;
-
- fn ceil(self) -> Self;
-
- fn round(self) -> Self;
-
- fn trunc(self) -> Self;
-
- fn fdim(self, rhs: Self) -> Self;
-
- fn fract(self) -> Self;
-
- fn abs(self) -> Self;
-
- // NOTE depends on unstable intrinsics::copysignf64
- // fn signum(self) -> Self;
-
- fn mul_add(self, a: Self, b: Self) -> Self;
-
- fn div_euc(self, rhs: Self) -> Self;
-
- fn mod_euc(self, rhs: Self) -> Self;
-
- // NOTE depends on unstable intrinsics::powif64
- // fn powi(self, n: i32) -> Self;
-
- fn powf(self, n: Self) -> Self;
-
- fn sqrt(self) -> Self;
-
- fn exp(self) -> Self;
-
- fn exp2(self) -> Self;
-
- fn ln(self) -> Self;
-
- fn log(self, base: Self) -> Self;
-
- fn log2(self) -> Self;
-
- fn log10(self) -> Self;
-
- fn cbrt(self) -> Self;
-
- fn hypot(self, other: Self) -> Self;
-
- fn sin(self) -> Self;
-
- fn cos(self) -> Self;
-
- fn tan(self) -> Self;
-
- fn asin(self) -> Self;
-
- fn acos(self) -> Self;
-
- fn atan(self) -> Self;
-
- fn atan2(self, other: Self) -> Self;
-
- fn sin_cos(self) -> (Self, Self);
-
- fn exp_m1(self) -> Self;
-
- fn ln_1p(self) -> Self;
-
- fn sinh(self) -> Self;
-
- fn cosh(self) -> Self;
-
- fn tanh(self) -> Self;
-
- fn asinh(self) -> Self;
-
- fn acosh(self) -> Self;
-
- fn atanh(self) -> Self;
-
- fn min(self, other: Self) -> Self;
-
- fn max(self, other: Self) -> Self;
-}
-
-impl F64Ext for f64 {
- #[inline]
- fn floor(self) -> Self {
- floor(self)
- }
-
- #[inline]
- fn ceil(self) -> Self {
- ceil(self)
- }
-
- #[inline]
- fn round(self) -> Self {
- round(self)
- }
-
- #[inline]
- fn trunc(self) -> Self {
- trunc(self)
- }
-
- #[inline]
- fn fdim(self, rhs: Self) -> Self {
- fdim(self, rhs)
- }
-
- #[inline]
- fn fract(self) -> Self {
- self - self.trunc()
- }
-
- #[inline]
- fn abs(self) -> Self {
- fabs(self)
- }
-
- #[inline]
- fn mul_add(self, a: Self, b: Self) -> Self {
- fma(self, a, b)
- }
-
- #[inline]
- fn div_euc(self, rhs: Self) -> Self {
- let q = (self / rhs).trunc();
- if self % rhs < 0.0 {
- return if rhs > 0.0 { q - 1.0 } else { q + 1.0 };
- }
- q
- }
-
- #[inline]
- fn mod_euc(self, rhs: f64) -> f64 {
- let r = self % rhs;
- if r < 0.0 {
- r + rhs.abs()
- } else {
- r
- }
- }
-
- #[inline]
- fn powf(self, n: Self) -> Self {
- pow(self, n)
- }
-
- #[inline]
- fn sqrt(self) -> Self {
- sqrt(self)
- }
-
- #[inline]
- fn exp(self) -> Self {
- exp(self)
- }
-
- #[inline]
- fn exp2(self) -> Self {
- exp2(self)
- }
-
- #[inline]
- fn ln(self) -> Self {
- log(self)
- }
-
- #[inline]
- fn log(self, base: Self) -> Self {
- self.ln() / base.ln()
- }
-
- #[inline]
- fn log2(self) -> Self {
- log2(self)
- }
-
- #[inline]
- fn log10(self) -> Self {
- log10(self)
- }
-
- #[inline]
- fn cbrt(self) -> Self {
- cbrt(self)
- }
-
- #[inline]
- fn hypot(self, other: Self) -> Self {
- hypot(self, other)
- }
-
- #[inline]
- fn sin(self) -> Self {
- sin(self)
- }
-
- #[inline]
- fn cos(self) -> Self {
- cos(self)
- }
-
- #[inline]
- fn tan(self) -> Self {
- tan(self)
- }
-
- #[inline]
- fn asin(self) -> Self {
- asin(self)
- }
-
- #[inline]
- fn acos(self) -> Self {
- acos(self)
- }
-
- #[inline]
- fn atan(self) -> Self {
- atan(self)
- }
-
- #[inline]
- fn atan2(self, other: Self) -> Self {
- atan2(self, other)
- }
-
- #[inline]
- fn sin_cos(self) -> (Self, Self) {
- sincos(self)
- }
-
- #[inline]
- fn exp_m1(self) -> Self {
- expm1(self)
- }
-
- #[inline]
- fn ln_1p(self) -> Self {
- log1p(self)
- }
-
- #[inline]
- fn sinh(self) -> Self {
- sinh(self)
- }
-
- #[inline]
- fn cosh(self) -> Self {
- cosh(self)
- }
-
- #[inline]
- fn tanh(self) -> Self {
- tanh(self)
- }
-
- #[inline]
- fn asinh(self) -> Self {
- asinh(self)
- }
-
- #[inline]
- fn acosh(self) -> Self {
- acosh(self)
- }
-
- #[inline]
- fn atanh(self) -> Self {
- atanh(self)
- }
-
- #[inline]
- fn min(self, other: Self) -> Self {
- fmin(self, other)
- }
-
- #[inline]
- fn max(self, other: Self) -> Self {
- fmax(self, other)
- }
-}
-
-mod private {
- pub trait Sealed {}
-
- impl Sealed for f32 {}
- impl Sealed for f64 {}
-}
-
-#[cfg(all(test, feature = "musl-reference-tests"))]
-include!(concat!(env!("OUT_DIR"), "/musl-tests.rs"));
diff --git a/vendor/libm-0.1.4/src/math/acos.rs b/vendor/libm-0.1.4/src/math/acos.rs
deleted file mode 100644
index d5e1f6865..000000000
--- a/vendor/libm-0.1.4/src/math/acos.rs
+++ /dev/null
@@ -1,114 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_acos.c */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunSoft, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-/* acos(x)
- * Method :
- * acos(x) = pi/2 - asin(x)
- * acos(-x) = pi/2 + asin(x)
- * For |x|<=0.5
- * acos(x) = pi/2 - (x + x*x^2*R(x^2)) (see asin.c)
- * For x>0.5
- * acos(x) = pi/2 - (pi/2 - 2asin(sqrt((1-x)/2)))
- * = 2asin(sqrt((1-x)/2))
- * = 2s + 2s*z*R(z) ...z=(1-x)/2, s=sqrt(z)
- * = 2f + (2c + 2s*z*R(z))
- * where f=hi part of s, and c = (z-f*f)/(s+f) is the correction term
- * for f so that f+c ~ sqrt(z).
- * For x<-0.5
- * acos(x) = pi - 2asin(sqrt((1-|x|)/2))
- * = pi - 0.5*(s+s*z*R(z)), where z=(1-|x|)/2,s=sqrt(z)
- *
- * Special cases:
- * if x is NaN, return x itself;
- * if |x|>1, return NaN with invalid signal.
- *
- * Function needed: sqrt
- */
-
-use super::sqrt;
-
-const PIO2_HI: f64 = 1.57079632679489655800e+00; /* 0x3FF921FB, 0x54442D18 */
-const PIO2_LO: f64 = 6.12323399573676603587e-17; /* 0x3C91A626, 0x33145C07 */
-const PS0: f64 = 1.66666666666666657415e-01; /* 0x3FC55555, 0x55555555 */
-const PS1: f64 = -3.25565818622400915405e-01; /* 0xBFD4D612, 0x03EB6F7D */
-const PS2: f64 = 2.01212532134862925881e-01; /* 0x3FC9C155, 0x0E884455 */
-const PS3: f64 = -4.00555345006794114027e-02; /* 0xBFA48228, 0xB5688F3B */
-const PS4: f64 = 7.91534994289814532176e-04; /* 0x3F49EFE0, 0x7501B288 */
-const PS5: f64 = 3.47933107596021167570e-05; /* 0x3F023DE1, 0x0DFDF709 */
-const QS1: f64 = -2.40339491173441421878e+00; /* 0xC0033A27, 0x1C8A2D4B */
-const QS2: f64 = 2.02094576023350569471e+00; /* 0x40002AE5, 0x9C598AC8 */
-const QS3: f64 = -6.88283971605453293030e-01; /* 0xBFE6066C, 0x1B8D0159 */
-const QS4: f64 = 7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */
-
-#[inline]
-fn r(z: f64) -> f64 {
- let p: f64 = z * (PS0 + z * (PS1 + z * (PS2 + z * (PS3 + z * (PS4 + z * PS5)))));
- let q: f64 = 1.0 + z * (QS1 + z * (QS2 + z * (QS3 + z * QS4)));
- p / q
-}
-
-/// Arccosine (f64)
-///
-/// Computes the inverse cosine (arc cosine) of the input value.
-/// Arguments must be in the range -1 to 1.
-/// Returns values in radians, in the range of 0 to pi.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn acos(x: f64) -> f64 {
- let x1p_120f = f64::from_bits(0x3870000000000000); // 0x1p-120 === 2 ^ -120
- let z: f64;
- let w: f64;
- let s: f64;
- let c: f64;
- let df: f64;
- let hx: u32;
- let ix: u32;
-
- hx = (x.to_bits() >> 32) as u32;
- ix = hx & 0x7fffffff;
- /* |x| >= 1 or nan */
- if ix >= 0x3ff00000 {
- let lx: u32 = x.to_bits() as u32;
-
- if ((ix - 0x3ff00000) | lx) == 0 {
- /* acos(1)=0, acos(-1)=pi */
- if (hx >> 31) != 0 {
- return 2. * PIO2_HI + x1p_120f;
- }
- return 0.;
- }
- return 0. / (x - x);
- }
- /* |x| < 0.5 */
- if ix < 0x3fe00000 {
- if ix <= 0x3c600000 {
- /* |x| < 2**-57 */
- return PIO2_HI + x1p_120f;
- }
- return PIO2_HI - (x - (PIO2_LO - x * r(x * x)));
- }
- /* x < -0.5 */
- if (hx >> 31) != 0 {
- z = (1.0 + x) * 0.5;
- s = sqrt(z);
- w = r(z) * s - PIO2_LO;
- return 2. * (PIO2_HI - (s + w));
- }
- /* x > 0.5 */
- z = (1.0 - x) * 0.5;
- s = sqrt(z);
- // Set the low 4 bytes to zero
- df = f64::from_bits(s.to_bits() & 0xff_ff_ff_ff_00_00_00_00);
-
- c = (z - df * df) / (s + df);
- w = r(z) * s + c;
- 2. * (df + w)
-}
diff --git a/vendor/libm-0.1.4/src/math/acosf.rs b/vendor/libm-0.1.4/src/math/acosf.rs
deleted file mode 100644
index d0598e811..000000000
--- a/vendor/libm-0.1.4/src/math/acosf.rs
+++ /dev/null
@@ -1,81 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_acosf.c */
-/*
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-use super::sqrtf::sqrtf;
-
-const PIO2_HI: f32 = 1.5707962513e+00; /* 0x3fc90fda */
-const PIO2_LO: f32 = 7.5497894159e-08; /* 0x33a22168 */
-const P_S0: f32 = 1.6666586697e-01;
-const P_S1: f32 = -4.2743422091e-02;
-const P_S2: f32 = -8.6563630030e-03;
-const Q_S1: f32 = -7.0662963390e-01;
-
-#[inline]
-fn r(z: f32) -> f32 {
- let p = z * (P_S0 + z * (P_S1 + z * P_S2));
- let q = 1. + z * Q_S1;
- p / q
-}
-
-/// Arccosine (f32)
-///
-/// Computes the inverse cosine (arc cosine) of the input value.
-/// Arguments must be in the range -1 to 1.
-/// Returns values in radians, in the range of 0 to pi.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn acosf(x: f32) -> f32 {
- let x1p_120 = f32::from_bits(0x03800000); // 0x1p-120 === 2 ^ (-120)
-
- let z: f32;
- let w: f32;
- let s: f32;
-
- let mut hx = x.to_bits();
- let ix = hx & 0x7fffffff;
- /* |x| >= 1 or nan */
- if ix >= 0x3f800000 {
- if ix == 0x3f800000 {
- if (hx >> 31) != 0 {
- return 2. * PIO2_HI + x1p_120;
- }
- return 0.;
- }
- return 0. / (x - x);
- }
- /* |x| < 0.5 */
- if ix < 0x3f000000 {
- if ix <= 0x32800000 {
- /* |x| < 2**-26 */
- return PIO2_HI + x1p_120;
- }
- return PIO2_HI - (x - (PIO2_LO - x * r(x * x)));
- }
- /* x < -0.5 */
- if (hx >> 31) != 0 {
- z = (1. + x) * 0.5;
- s = sqrtf(z);
- w = r(z) * s - PIO2_LO;
- return 2. * (PIO2_HI - (s + w));
- }
- /* x > 0.5 */
- z = (1. - x) * 0.5;
- s = sqrtf(z);
- hx = s.to_bits();
- let df = f32::from_bits(hx & 0xfffff000);
- let c = (z - df * df) / (s + df);
- w = r(z) * s + c;
- 2. * (df + w)
-}
diff --git a/vendor/libm-0.1.4/src/math/acosh.rs b/vendor/libm-0.1.4/src/math/acosh.rs
deleted file mode 100644
index ac7a5f1c6..000000000
--- a/vendor/libm-0.1.4/src/math/acosh.rs
+++ /dev/null
@@ -1,26 +0,0 @@
-use super::{log, log1p, sqrt};
-
-const LN2: f64 = 0.693147180559945309417232121458176568; /* 0x3fe62e42, 0xfefa39ef*/
-
-/// Inverse hyperbolic cosine (f64)
-///
-/// Calculates the inverse hyperbolic cosine of `x`.
-/// Is defined as `log(x + sqrt(x*x-1))`.
-/// `x` must be a number greater than or equal to 1.
-pub fn acosh(x: f64) -> f64 {
- let u = x.to_bits();
- let e = ((u >> 52) as usize) & 0x7ff;
-
- /* x < 1 domain error is handled in the called functions */
-
- if e < 0x3ff + 1 {
- /* |x| < 2, up to 2ulp error in [1,1.125] */
- return log1p(x - 1.0 + sqrt((x - 1.0) * (x - 1.0) + 2.0 * (x - 1.0)));
- }
- if e < 0x3ff + 26 {
- /* |x| < 0x1p26 */
- return log(2.0 * x - 1.0 / (x + sqrt(x * x - 1.0)));
- }
- /* |x| >= 0x1p26 or nan */
- return log(x) + LN2;
-}
diff --git a/vendor/libm-0.1.4/src/math/acoshf.rs b/vendor/libm-0.1.4/src/math/acoshf.rs
deleted file mode 100644
index 0879e1edb..000000000
--- a/vendor/libm-0.1.4/src/math/acoshf.rs
+++ /dev/null
@@ -1,25 +0,0 @@
-use super::{log1pf, logf, sqrtf};
-
-const LN2: f32 = 0.693147180559945309417232121458176568;
-
-/// Inverse hyperbolic cosine (f32)
-///
-/// Calculates the inverse hyperbolic cosine of `x`.
-/// Is defined as `log(x + sqrt(x*x-1))`.
-/// `x` must be a number greater than or equal to 1.
-pub fn acoshf(x: f32) -> f32 {
- let u = x.to_bits();
- let a = u & 0x7fffffff;
-
- if a < 0x3f800000 + (1 << 23) {
- /* |x| < 2, invalid if x < 1 or nan */
- /* up to 2ulp error in [1,1.125] */
- return log1pf(x - 1.0 + sqrtf((x - 1.0) * (x - 1.0) + 2.0 * (x - 1.0)));
- }
- if a < 0x3f800000 + (12 << 23) {
- /* |x| < 0x1p12 */
- return logf(2.0 * x - 1.0 / (x + sqrtf(x * x - 1.0)));
- }
- /* x >= 0x1p12 */
- return logf(x) + LN2;
-}
diff --git a/vendor/libm-0.1.4/src/math/asin.rs b/vendor/libm-0.1.4/src/math/asin.rs
deleted file mode 100644
index 774475e51..000000000
--- a/vendor/libm-0.1.4/src/math/asin.rs
+++ /dev/null
@@ -1,121 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_asin.c */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunSoft, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-/* asin(x)
- * Method :
- * Since asin(x) = x + x^3/6 + x^5*3/40 + x^7*15/336 + ...
- * we approximate asin(x) on [0,0.5] by
- * asin(x) = x + x*x^2*R(x^2)
- * where
- * R(x^2) is a rational approximation of (asin(x)-x)/x^3
- * and its remez error is bounded by
- * |(asin(x)-x)/x^3 - R(x^2)| < 2^(-58.75)
- *
- * For x in [0.5,1]
- * asin(x) = pi/2-2*asin(sqrt((1-x)/2))
- * Let y = (1-x), z = y/2, s := sqrt(z), and pio2_hi+pio2_lo=pi/2;
- * then for x>0.98
- * asin(x) = pi/2 - 2*(s+s*z*R(z))
- * = pio2_hi - (2*(s+s*z*R(z)) - pio2_lo)
- * For x<=0.98, let pio4_hi = pio2_hi/2, then
- * f = hi part of s;
- * c = sqrt(z) - f = (z-f*f)/(s+f) ...f+c=sqrt(z)
- * and
- * asin(x) = pi/2 - 2*(s+s*z*R(z))
- * = pio4_hi+(pio4-2s)-(2s*z*R(z)-pio2_lo)
- * = pio4_hi+(pio4-2f)-(2s*z*R(z)-(pio2_lo+2c))
- *
- * Special cases:
- * if x is NaN, return x itself;
- * if |x|>1, return NaN with invalid signal.
- *
- */
-
-use super::{fabs, get_high_word, get_low_word, sqrt, with_set_low_word};
-
-const PIO2_HI: f64 = 1.57079632679489655800e+00; /* 0x3FF921FB, 0x54442D18 */
-const PIO2_LO: f64 = 6.12323399573676603587e-17; /* 0x3C91A626, 0x33145C07 */
-/* coefficients for R(x^2) */
-const P_S0: f64 = 1.66666666666666657415e-01; /* 0x3FC55555, 0x55555555 */
-const P_S1: f64 = -3.25565818622400915405e-01; /* 0xBFD4D612, 0x03EB6F7D */
-const P_S2: f64 = 2.01212532134862925881e-01; /* 0x3FC9C155, 0x0E884455 */
-const P_S3: f64 = -4.00555345006794114027e-02; /* 0xBFA48228, 0xB5688F3B */
-const P_S4: f64 = 7.91534994289814532176e-04; /* 0x3F49EFE0, 0x7501B288 */
-const P_S5: f64 = 3.47933107596021167570e-05; /* 0x3F023DE1, 0x0DFDF709 */
-const Q_S1: f64 = -2.40339491173441421878e+00; /* 0xC0033A27, 0x1C8A2D4B */
-const Q_S2: f64 = 2.02094576023350569471e+00; /* 0x40002AE5, 0x9C598AC8 */
-const Q_S3: f64 = -6.88283971605453293030e-01; /* 0xBFE6066C, 0x1B8D0159 */
-const Q_S4: f64 = 7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */
-
-#[inline]
-fn comp_r(z: f64) -> f64 {
- let p = z * (P_S0 + z * (P_S1 + z * (P_S2 + z * (P_S3 + z * (P_S4 + z * P_S5)))));
- let q = 1.0 + z * (Q_S1 + z * (Q_S2 + z * (Q_S3 + z * Q_S4)));
- p / q
-}
-
-/// Arcsine (f64)
-///
-/// Computes the inverse sine (arc sine) of the argument `x`.
-/// Arguments to asin must be in the range -1 to 1.
-/// Returns values in radians, in the range of -pi/2 to pi/2.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn asin(mut x: f64) -> f64 {
- let z: f64;
- let r: f64;
- let s: f64;
- let hx: u32;
- let ix: u32;
-
- hx = get_high_word(x);
- ix = hx & 0x7fffffff;
- /* |x| >= 1 or nan */
- if ix >= 0x3ff00000 {
- let lx: u32;
- lx = get_low_word(x);
- if ((ix - 0x3ff00000) | lx) == 0 {
- /* asin(1) = +-pi/2 with inexact */
- return x * PIO2_HI + f64::from_bits(0x3870000000000000);
- } else {
- return 0.0 / (x - x);
- }
- }
- /* |x| < 0.5 */
- if ix < 0x3fe00000 {
- /* if 0x1p-1022 <= |x| < 0x1p-26, avoid raising underflow */
- if ix < 0x3e500000 && ix >= 0x00100000 {
- return x;
- } else {
- return x + x * comp_r(x * x);
- }
- }
- /* 1 > |x| >= 0.5 */
- z = (1.0 - fabs(x)) * 0.5;
- s = sqrt(z);
- r = comp_r(z);
- if ix >= 0x3fef3333 {
- /* if |x| > 0.975 */
- x = PIO2_HI - (2. * (s + s * r) - PIO2_LO);
- } else {
- let f: f64;
- let c: f64;
- /* f+c = sqrt(z) */
- f = with_set_low_word(s, 0);
- c = (z - f * f) / (s + f);
- x = 0.5 * PIO2_HI - (2.0 * s * r - (PIO2_LO - 2.0 * c) - (0.5 * PIO2_HI - 2.0 * f));
- }
- if hx >> 31 != 0 {
- -x
- } else {
- x
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/asinf.rs b/vendor/libm-0.1.4/src/math/asinf.rs
deleted file mode 100644
index ce0f4a997..000000000
--- a/vendor/libm-0.1.4/src/math/asinf.rs
+++ /dev/null
@@ -1,74 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_asinf.c */
-/*
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-use super::fabsf::fabsf;
-use super::sqrt::sqrt;
-
-const PIO2: f64 = 1.570796326794896558e+00;
-
-/* coefficients for R(x^2) */
-const P_S0: f32 = 1.6666586697e-01;
-const P_S1: f32 = -4.2743422091e-02;
-const P_S2: f32 = -8.6563630030e-03;
-const Q_S1: f32 = -7.0662963390e-01;
-
-#[inline]
-fn r(z: f32) -> f32 {
- let p = z * (P_S0 + z * (P_S1 + z * P_S2));
- let q = 1. + z * Q_S1;
- p / q
-}
-
-/// Arcsine (f32)
-///
-/// Computes the inverse sine (arc sine) of the argument `x`.
-/// Arguments to asin must be in the range -1 to 1.
-/// Returns values in radians, in the range of -pi/2 to pi/2.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn asinf(mut x: f32) -> f32 {
- let x1p_120 = f64::from_bits(0x3870000000000000); // 0x1p-120 === 2 ^ (-120)
-
- let hx = x.to_bits();
- let ix = hx & 0x7fffffff;
-
- if ix >= 0x3f800000 {
- /* |x| >= 1 */
- if ix == 0x3f800000 {
- /* |x| == 1 */
- return ((x as f64) * PIO2 + x1p_120) as f32; /* asin(+-1) = +-pi/2 with inexact */
- }
- return 0. / (x - x); /* asin(|x|>1) is NaN */
- }
-
- if ix < 0x3f000000 {
- /* |x| < 0.5 */
- /* if 0x1p-126 <= |x| < 0x1p-12, avoid raising underflow */
- if (ix < 0x39800000) && (ix >= 0x00800000) {
- return x;
- }
- return x + x * r(x * x);
- }
-
- /* 1 > |x| >= 0.5 */
- let z = (1. - fabsf(x)) * 0.5;
- let s = sqrt(z as f64);
- x = (PIO2 - 2. * (s + s * (r(z) as f64))) as f32;
- if (hx >> 31) != 0 {
- -x
- } else {
- x
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/asinh.rs b/vendor/libm-0.1.4/src/math/asinh.rs
deleted file mode 100644
index 14295357a..000000000
--- a/vendor/libm-0.1.4/src/math/asinh.rs
+++ /dev/null
@@ -1,39 +0,0 @@
-use super::{log, log1p, sqrt};
-
-const LN2: f64 = 0.693147180559945309417232121458176568; /* 0x3fe62e42, 0xfefa39ef*/
-
-/* asinh(x) = sign(x)*log(|x|+sqrt(x*x+1)) ~= x - x^3/6 + o(x^5) */
-/// Inverse hyperbolic sine (f64)
-///
-/// Calculates the inverse hyperbolic sine of `x`.
-/// Is defined as `sgn(x)*log(|x|+sqrt(x*x+1))`.
-pub fn asinh(mut x: f64) -> f64 {
- let mut u = x.to_bits();
- let e = ((u >> 52) as usize) & 0x7ff;
- let sign = (u >> 63) != 0;
-
- /* |x| */
- u &= (!0) >> 1;
- x = f64::from_bits(u);
-
- if e >= 0x3ff + 26 {
- /* |x| >= 0x1p26 or inf or nan */
- x = log(x) + LN2;
- } else if e >= 0x3ff + 1 {
- /* |x| >= 2 */
- x = log(2.0 * x + 1.0 / (sqrt(x * x + 1.0) + x));
- } else if e >= 0x3ff - 26 {
- /* |x| >= 0x1p-26, up to 1.6ulp error in [0.125,0.5] */
- x = log1p(x + x * x / (sqrt(x * x + 1.0) + 1.0));
- } else {
- /* |x| < 0x1p-26, raise inexact if x != 0 */
- let x1p120 = f64::from_bits(0x4770000000000000);
- force_eval!(x + x1p120);
- }
-
- if sign {
- -x
- } else {
- x
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/asinhf.rs b/vendor/libm-0.1.4/src/math/asinhf.rs
deleted file mode 100644
index e22a29132..000000000
--- a/vendor/libm-0.1.4/src/math/asinhf.rs
+++ /dev/null
@@ -1,38 +0,0 @@
-use super::{log1pf, logf, sqrtf};
-
-const LN2: f32 = 0.693147180559945309417232121458176568;
-
-/* asinh(x) = sign(x)*log(|x|+sqrt(x*x+1)) ~= x - x^3/6 + o(x^5) */
-/// Inverse hyperbolic sine (f32)
-///
-/// Calculates the inverse hyperbolic sine of `x`.
-/// Is defined as `sgn(x)*log(|x|+sqrt(x*x+1))`.
-pub fn asinhf(mut x: f32) -> f32 {
- let u = x.to_bits();
- let i = u & 0x7fffffff;
- let sign = (u >> 31) != 0;
-
- /* |x| */
- x = f32::from_bits(i);
-
- if i >= 0x3f800000 + (12 << 23) {
- /* |x| >= 0x1p12 or inf or nan */
- x = logf(x) + LN2;
- } else if i >= 0x3f800000 + (1 << 23) {
- /* |x| >= 2 */
- x = logf(2.0 * x + 1.0 / (sqrtf(x * x + 1.0) + x));
- } else if i >= 0x3f800000 - (12 << 23) {
- /* |x| >= 0x1p-12, up to 1.6ulp error in [0.125,0.5] */
- x = log1pf(x + x * x / (sqrtf(x * x + 1.0) + 1.0));
- } else {
- /* |x| < 0x1p-12, raise inexact if x!=0 */
- let x1p120 = f32::from_bits(0x7b800000);
- force_eval!(x + x1p120);
- }
-
- if sign {
- -x
- } else {
- x
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/atan.rs b/vendor/libm-0.1.4/src/math/atan.rs
deleted file mode 100644
index d2684ece8..000000000
--- a/vendor/libm-0.1.4/src/math/atan.rs
+++ /dev/null
@@ -1,185 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/s_atan.c */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-/* atan(x)
- * Method
- * 1. Reduce x to positive by atan(x) = -atan(-x).
- * 2. According to the integer k=4t+0.25 chopped, t=x, the argument
- * is further reduced to one of the following intervals and the
- * arctangent of t is evaluated by the corresponding formula:
- *
- * [0,7/16] atan(x) = t-t^3*(a1+t^2*(a2+...(a10+t^2*a11)...)
- * [7/16,11/16] atan(x) = atan(1/2) + atan( (t-0.5)/(1+t/2) )
- * [11/16.19/16] atan(x) = atan( 1 ) + atan( (t-1)/(1+t) )
- * [19/16,39/16] atan(x) = atan(3/2) + atan( (t-1.5)/(1+1.5t) )
- * [39/16,INF] atan(x) = atan(INF) + atan( -1/t )
- *
- * Constants:
- * The hexadecimal values are the intended ones for the following
- * constants. The decimal values may be used, provided that the
- * compiler will convert from decimal to binary accurately enough
- * to produce the hexadecimal values shown.
- */
-
-use super::fabs;
-use core::f64;
-
-const ATANHI: [f64; 4] = [
- 4.63647609000806093515e-01, /* atan(0.5)hi 0x3FDDAC67, 0x0561BB4F */
- 7.85398163397448278999e-01, /* atan(1.0)hi 0x3FE921FB, 0x54442D18 */
- 9.82793723247329054082e-01, /* atan(1.5)hi 0x3FEF730B, 0xD281F69B */
- 1.57079632679489655800e+00, /* atan(inf)hi 0x3FF921FB, 0x54442D18 */
-];
-
-const ATANLO: [f64; 4] = [
- 2.26987774529616870924e-17, /* atan(0.5)lo 0x3C7A2B7F, 0x222F65E2 */
- 3.06161699786838301793e-17, /* atan(1.0)lo 0x3C81A626, 0x33145C07 */
- 1.39033110312309984516e-17, /* atan(1.5)lo 0x3C700788, 0x7AF0CBBD */
- 6.12323399573676603587e-17, /* atan(inf)lo 0x3C91A626, 0x33145C07 */
-];
-
-const AT: [f64; 11] = [
- 3.33333333333329318027e-01, /* 0x3FD55555, 0x5555550D */
- -1.99999999998764832476e-01, /* 0xBFC99999, 0x9998EBC4 */
- 1.42857142725034663711e-01, /* 0x3FC24924, 0x920083FF */
- -1.11111104054623557880e-01, /* 0xBFBC71C6, 0xFE231671 */
- 9.09088713343650656196e-02, /* 0x3FB745CD, 0xC54C206E */
- -7.69187620504482999495e-02, /* 0xBFB3B0F2, 0xAF749A6D */
- 6.66107313738753120669e-02, /* 0x3FB10D66, 0xA0D03D51 */
- -5.83357013379057348645e-02, /* 0xBFADDE2D, 0x52DEFD9A */
- 4.97687799461593236017e-02, /* 0x3FA97B4B, 0x24760DEB */
- -3.65315727442169155270e-02, /* 0xBFA2B444, 0x2C6A6C2F */
- 1.62858201153657823623e-02, /* 0x3F90AD3A, 0xE322DA11 */
-];
-
-/// Arctangent (f64)
-///
-/// Computes the inverse tangent (arc tangent) of the input value.
-/// Returns a value in radians, in the range of -pi/2 to pi/2.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn atan(x: f64) -> f64 {
- let mut x = x;
- let mut ix = (x.to_bits() >> 32) as u32;
- let sign = ix >> 31;
- ix &= 0x7fff_ffff;
- if ix >= 0x4410_0000 {
- if x.is_nan() {
- return x;
- }
-
- let z = ATANHI[3] + f64::from_bits(0x0380_0000); // 0x1p-120f
- return if sign != 0 { -z } else { z };
- }
-
- let id = if ix < 0x3fdc_0000 {
- /* |x| < 0.4375 */
- if ix < 0x3e40_0000 {
- /* |x| < 2^-27 */
- if ix < 0x0010_0000 {
- /* raise underflow for subnormal x */
- force_eval!(x as f32);
- }
-
- return x;
- }
-
- -1
- } else {
- x = fabs(x);
- if ix < 0x3ff30000 {
- /* |x| < 1.1875 */
- if ix < 0x3fe60000 {
- /* 7/16 <= |x| < 11/16 */
- x = (2. * x - 1.) / (2. + x);
- 0
- } else {
- /* 11/16 <= |x| < 19/16 */
- x = (x - 1.) / (x + 1.);
- 1
- }
- } else if ix < 0x40038000 {
- /* |x| < 2.4375 */
- x = (x - 1.5) / (1. + 1.5 * x);
- 2
- } else {
- /* 2.4375 <= |x| < 2^66 */
- x = -1. / x;
- 3
- }
- };
-
- let z = x * x;
- let w = z * z;
- /* break sum from i=0 to 10 AT[i]z**(i+1) into odd and even poly */
- let s1 = z * (AT[0] + w * (AT[2] + w * (AT[4] + w * (AT[6] + w * (AT[8] + w * AT[10])))));
- let s2 = w * (AT[1] + w * (AT[3] + w * (AT[5] + w * (AT[7] + w * AT[9]))));
-
- if id < 0 {
- return x - x * (s1 + s2);
- }
-
- let z = i!(ATANHI, id as usize) - (x * (s1 + s2) - i!(ATANLO, id as usize) - x);
-
- if sign != 0 {
- -z
- } else {
- z
- }
-}
-
-#[cfg(test)]
-mod tests {
- use super::atan;
- use core::f64;
-
- #[test]
- fn sanity_check() {
- for (input, answer) in [
- (3.0_f64.sqrt() / 3.0, f64::consts::FRAC_PI_6),
- (1.0, f64::consts::FRAC_PI_4),
- (3.0_f64.sqrt(), f64::consts::FRAC_PI_3),
- (-3.0_f64.sqrt() / 3.0, -f64::consts::FRAC_PI_6),
- (-1.0, -f64::consts::FRAC_PI_4),
- (-3.0_f64.sqrt(), -f64::consts::FRAC_PI_3),
- ]
- .iter()
- {
- assert!(
- (atan(*input) - answer) / answer < 1e-5,
- "\natan({:.4}/16) = {:.4}, actual: {}",
- input * 16.0,
- answer,
- atan(*input)
- );
- }
- }
-
- #[test]
- fn zero() {
- assert_eq!(atan(0.0), 0.0);
- }
-
- #[test]
- fn infinity() {
- assert_eq!(atan(f64::INFINITY), f64::consts::FRAC_PI_2);
- }
-
- #[test]
- fn minus_infinity() {
- assert_eq!(atan(f64::NEG_INFINITY), -f64::consts::FRAC_PI_2);
- }
-
- #[test]
- fn nan() {
- assert!(atan(f64::NAN).is_nan());
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/atan2.rs b/vendor/libm-0.1.4/src/math/atan2.rs
deleted file mode 100644
index 08385cd10..000000000
--- a/vendor/libm-0.1.4/src/math/atan2.rs
+++ /dev/null
@@ -1,127 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_atan2.c */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunSoft, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- *
- */
-/* atan2(y,x)
- * Method :
- * 1. Reduce y to positive by atan2(y,x)=-atan2(-y,x).
- * 2. Reduce x to positive by (if x and y are unexceptional):
- * ARG (x+iy) = arctan(y/x) ... if x > 0,
- * ARG (x+iy) = pi - arctan[y/(-x)] ... if x < 0,
- *
- * Special cases:
- *
- * ATAN2((anything), NaN ) is NaN;
- * ATAN2(NAN , (anything) ) is NaN;
- * ATAN2(+-0, +(anything but NaN)) is +-0 ;
- * ATAN2(+-0, -(anything but NaN)) is +-pi ;
- * ATAN2(+-(anything but 0 and NaN), 0) is +-pi/2;
- * ATAN2(+-(anything but INF and NaN), +INF) is +-0 ;
- * ATAN2(+-(anything but INF and NaN), -INF) is +-pi;
- * ATAN2(+-INF,+INF ) is +-pi/4 ;
- * ATAN2(+-INF,-INF ) is +-3pi/4;
- * ATAN2(+-INF, (anything but,0,NaN, and INF)) is +-pi/2;
- *
- * Constants:
- * The hexadecimal values are the intended ones for the following
- * constants. The decimal values may be used, provided that the
- * compiler will convert from decimal to binary accurately enough
- * to produce the hexadecimal values shown.
- */
-
-use super::atan;
-use super::fabs;
-
-const PI: f64 = 3.1415926535897931160E+00; /* 0x400921FB, 0x54442D18 */
-const PI_LO: f64 = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */
-
-/// Arctangent of y/x (f64)
-///
-/// Computes the inverse tangent (arc tangent) of `y/x`.
-/// Produces the correct result even for angles near pi/2 or -pi/2 (that is, when `x` is near 0).
-/// Returns a value in radians, in the range of -pi to pi.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn atan2(y: f64, x: f64) -> f64 {
- if x.is_nan() || y.is_nan() {
- return x + y;
- }
- let mut ix = (x.to_bits() >> 32) as u32;
- let lx = x.to_bits() as u32;
- let mut iy = (y.to_bits() >> 32) as u32;
- let ly = y.to_bits() as u32;
- if ((ix.wrapping_sub(0x3ff00000)) | lx) == 0 {
- /* x = 1.0 */
- return atan(y);
- }
- let m = ((iy >> 31) & 1) | ((ix >> 30) & 2); /* 2*sign(x)+sign(y) */
- ix &= 0x7fffffff;
- iy &= 0x7fffffff;
-
- /* when y = 0 */
- if (iy | ly) == 0 {
- return match m {
- 0 | 1 => y, /* atan(+-0,+anything)=+-0 */
- 2 => PI, /* atan(+0,-anything) = PI */
- _ => -PI, /* atan(-0,-anything) =-PI */
- };
- }
- /* when x = 0 */
- if (ix | lx) == 0 {
- return if m & 1 != 0 { -PI / 2.0 } else { PI / 2.0 };
- }
- /* when x is INF */
- if ix == 0x7ff00000 {
- if iy == 0x7ff00000 {
- return match m {
- 0 => PI / 4.0, /* atan(+INF,+INF) */
- 1 => -PI / 4.0, /* atan(-INF,+INF) */
- 2 => 3.0 * PI / 4.0, /* atan(+INF,-INF) */
- _ => -3.0 * PI / 4.0, /* atan(-INF,-INF) */
- };
- } else {
- return match m {
- 0 => 0.0, /* atan(+...,+INF) */
- 1 => -0.0, /* atan(-...,+INF) */
- 2 => PI, /* atan(+...,-INF) */
- _ => -PI, /* atan(-...,-INF) */
- };
- }
- }
- /* |y/x| > 0x1p64 */
- if ix.wrapping_add(64 << 20) < iy || iy == 0x7ff00000 {
- return if m & 1 != 0 { -PI / 2.0 } else { PI / 2.0 };
- }
-
- /* z = atan(|y/x|) without spurious underflow */
- let z = if (m & 2 != 0) && iy.wrapping_add(64 << 20) < ix {
- /* |y/x| < 0x1p-64, x<0 */
- 0.0
- } else {
- atan(fabs(y / x))
- };
- match m {
- 0 => z, /* atan(+,+) */
- 1 => -z, /* atan(-,+) */
- 2 => PI - (z - PI_LO), /* atan(+,-) */
- _ => (z - PI_LO) - PI, /* atan(-,-) */
- }
-}
-
-#[test]
-fn sanity_check() {
- assert_eq!(atan2(0.0, 1.0), 0.0);
- assert_eq!(atan2(0.0, -1.0), PI);
- assert_eq!(atan2(-0.0, -1.0), -PI);
- assert_eq!(atan2(3.0, 2.0), atan(3.0 / 2.0));
- assert_eq!(atan2(2.0, -1.0), atan(2.0 / -1.0) + PI);
- assert_eq!(atan2(-2.0, -1.0), atan(-2.0 / -1.0) - PI);
-}
diff --git a/vendor/libm-0.1.4/src/math/atan2f.rs b/vendor/libm-0.1.4/src/math/atan2f.rs
deleted file mode 100644
index 7bbe5f1d4..000000000
--- a/vendor/libm-0.1.4/src/math/atan2f.rs
+++ /dev/null
@@ -1,92 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_atan2f.c */
-/*
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-use super::atanf;
-use super::fabsf;
-
-const PI: f32 = 3.1415927410e+00; /* 0x40490fdb */
-const PI_LO: f32 = -8.7422776573e-08; /* 0xb3bbbd2e */
-
-/// Arctangent of y/x (f32)
-///
-/// Computes the inverse tangent (arc tangent) of `y/x`.
-/// Produces the correct result even for angles near pi/2 or -pi/2 (that is, when `x` is near 0).
-/// Returns a value in radians, in the range of -pi to pi.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn atan2f(y: f32, x: f32) -> f32 {
- if x.is_nan() || y.is_nan() {
- return x + y;
- }
- let mut ix = x.to_bits();
- let mut iy = y.to_bits();
-
- if ix == 0x3f800000 {
- /* x=1.0 */
- return atanf(y);
- }
- let m = ((iy >> 31) & 1) | ((ix >> 30) & 2); /* 2*sign(x)+sign(y) */
- ix &= 0x7fffffff;
- iy &= 0x7fffffff;
-
- /* when y = 0 */
- if iy == 0 {
- return match m {
- 0 | 1 => y, /* atan(+-0,+anything)=+-0 */
- 2 => PI, /* atan(+0,-anything) = pi */
- 3 | _ => -PI, /* atan(-0,-anything) =-pi */
- };
- }
- /* when x = 0 */
- if ix == 0 {
- return if m & 1 != 0 { -PI / 2. } else { PI / 2. };
- }
- /* when x is INF */
- if ix == 0x7f800000 {
- return if iy == 0x7f800000 {
- match m {
- 0 => PI / 4., /* atan(+INF,+INF) */
- 1 => -PI / 4., /* atan(-INF,+INF) */
- 2 => 3. * PI / 4., /* atan(+INF,-INF)*/
- 3 | _ => -3. * PI / 4., /* atan(-INF,-INF)*/
- }
- } else {
- match m {
- 0 => 0., /* atan(+...,+INF) */
- 1 => -0., /* atan(-...,+INF) */
- 2 => PI, /* atan(+...,-INF) */
- 3 | _ => -PI, /* atan(-...,-INF) */
- }
- };
- }
- /* |y/x| > 0x1p26 */
- if (ix + (26 << 23) < iy) || (iy == 0x7f800000) {
- return if m & 1 != 0 { -PI / 2. } else { PI / 2. };
- }
-
- /* z = atan(|y/x|) with correct underflow */
- let z = if (m & 2 != 0) && (iy + (26 << 23) < ix) {
- /*|y/x| < 0x1p-26, x < 0 */
- 0.
- } else {
- atanf(fabsf(y / x))
- };
- match m {
- 0 => z, /* atan(+,+) */
- 1 => -z, /* atan(-,+) */
- 2 => PI - (z - PI_LO), /* atan(+,-) */
- _ => (z - PI_LO) - PI, /* case 3 */ /* atan(-,-) */
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/atanf.rs b/vendor/libm-0.1.4/src/math/atanf.rs
deleted file mode 100644
index 363e11d64..000000000
--- a/vendor/libm-0.1.4/src/math/atanf.rs
+++ /dev/null
@@ -1,113 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/s_atanf.c */
-/*
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-use super::fabsf;
-
-const ATAN_HI: [f32; 4] = [
- 4.6364760399e-01, /* atan(0.5)hi 0x3eed6338 */
- 7.8539812565e-01, /* atan(1.0)hi 0x3f490fda */
- 9.8279368877e-01, /* atan(1.5)hi 0x3f7b985e */
- 1.5707962513e+00, /* atan(inf)hi 0x3fc90fda */
-];
-
-const ATAN_LO: [f32; 4] = [
- 5.0121582440e-09, /* atan(0.5)lo 0x31ac3769 */
- 3.7748947079e-08, /* atan(1.0)lo 0x33222168 */
- 3.4473217170e-08, /* atan(1.5)lo 0x33140fb4 */
- 7.5497894159e-08, /* atan(inf)lo 0x33a22168 */
-];
-
-const A_T: [f32; 5] = [
- 3.3333328366e-01,
- -1.9999158382e-01,
- 1.4253635705e-01,
- -1.0648017377e-01,
- 6.1687607318e-02,
-];
-
-/// Arctangent (f32)
-///
-/// Computes the inverse tangent (arc tangent) of the input value.
-/// Returns a value in radians, in the range of -pi/2 to pi/2.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn atanf(mut x: f32) -> f32 {
- let x1p_120 = f32::from_bits(0x03800000); // 0x1p-120 === 2 ^ (-120)
-
- let z: f32;
-
- let mut ix = x.to_bits();
- let sign = (ix >> 31) != 0;
- ix &= 0x7fffffff;
-
- if ix >= 0x4c800000 {
- /* if |x| >= 2**26 */
- if x.is_nan() {
- return x;
- }
- z = ATAN_HI[3] + x1p_120;
- return if sign { -z } else { z };
- }
- let id = if ix < 0x3ee00000 {
- /* |x| < 0.4375 */
- if ix < 0x39800000 {
- /* |x| < 2**-12 */
- if ix < 0x00800000 {
- /* raise underflow for subnormal x */
- force_eval!(x * x);
- }
- return x;
- }
- -1
- } else {
- x = fabsf(x);
- if ix < 0x3f980000 {
- /* |x| < 1.1875 */
- if ix < 0x3f300000 {
- /* 7/16 <= |x| < 11/16 */
- x = (2. * x - 1.) / (2. + x);
- 0
- } else {
- /* 11/16 <= |x| < 19/16 */
- x = (x - 1.) / (x + 1.);
- 1
- }
- } else if ix < 0x401c0000 {
- /* |x| < 2.4375 */
- x = (x - 1.5) / (1. + 1.5 * x);
- 2
- } else {
- /* 2.4375 <= |x| < 2**26 */
- x = -1. / x;
- 3
- }
- };
- /* end of argument reduction */
- z = x * x;
- let w = z * z;
- /* break sum from i=0 to 10 aT[i]z**(i+1) into odd and even poly */
- let s1 = z * (A_T[0] + w * (A_T[2] + w * A_T[4]));
- let s2 = w * (A_T[1] + w * A_T[3]);
- if id < 0 {
- return x - x * (s1 + s2);
- }
- let id = id as usize;
- let z = ATAN_HI[id] - ((x * (s1 + s2) - ATAN_LO[id]) - x);
- if sign {
- -z
- } else {
- z
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/atanh.rs b/vendor/libm-0.1.4/src/math/atanh.rs
deleted file mode 100644
index 79a989c42..000000000
--- a/vendor/libm-0.1.4/src/math/atanh.rs
+++ /dev/null
@@ -1,36 +0,0 @@
-use super::log1p;
-
-/* atanh(x) = log((1+x)/(1-x))/2 = log1p(2x/(1-x))/2 ~= x + x^3/3 + o(x^5) */
-/// Inverse hyperbolic tangent (f64)
-///
-/// Calculates the inverse hyperbolic tangent of `x`.
-/// Is defined as `log((1+x)/(1-x))/2 = log1p(2x/(1-x))/2`.
-pub fn atanh(x: f64) -> f64 {
- let u = x.to_bits();
- let e = ((u >> 52) as usize) & 0x7ff;
- let sign = (u >> 63) != 0;
-
- /* |x| */
- let mut y = f64::from_bits(u & 0x7fff_ffff_ffff_ffff);
-
- if e < 0x3ff - 1 {
- if e < 0x3ff - 32 {
- /* handle underflow */
- if e == 0 {
- force_eval!(y as f32);
- }
- } else {
- /* |x| < 0.5, up to 1.7ulp error */
- y = 0.5 * log1p(2.0 * y + 2.0 * y * y / (1.0 - y));
- }
- } else {
- /* avoid overflow */
- y = 0.5 * log1p(2.0 * (y / (1.0 - y)));
- }
-
- if sign {
- -y
- } else {
- y
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/atanhf.rs b/vendor/libm-0.1.4/src/math/atanhf.rs
deleted file mode 100644
index 7b2f34d97..000000000
--- a/vendor/libm-0.1.4/src/math/atanhf.rs
+++ /dev/null
@@ -1,36 +0,0 @@
-use super::log1pf;
-
-/* atanh(x) = log((1+x)/(1-x))/2 = log1p(2x/(1-x))/2 ~= x + x^3/3 + o(x^5) */
-/// Inverse hyperbolic tangent (f32)
-///
-/// Calculates the inverse hyperbolic tangent of `x`.
-/// Is defined as `log((1+x)/(1-x))/2 = log1p(2x/(1-x))/2`.
-pub fn atanhf(mut x: f32) -> f32 {
- let mut u = x.to_bits();
- let sign = (u >> 31) != 0;
-
- /* |x| */
- u &= 0x7fffffff;
- x = f32::from_bits(u);
-
- if u < 0x3f800000 - (1 << 23) {
- if u < 0x3f800000 - (32 << 23) {
- /* handle underflow */
- if u < (1 << 23) {
- force_eval!((x * x) as f32);
- }
- } else {
- /* |x| < 0.5, up to 1.7ulp error */
- x = 0.5 * log1pf(2.0 * x + 2.0 * x * x / (1.0 - x));
- }
- } else {
- /* avoid overflow */
- x = 0.5 * log1pf(2.0 * (x / (1.0 - x)));
- }
-
- if sign {
- -x
- } else {
- x
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/cbrt.rs b/vendor/libm-0.1.4/src/math/cbrt.rs
deleted file mode 100644
index 04469b159..000000000
--- a/vendor/libm-0.1.4/src/math/cbrt.rs
+++ /dev/null
@@ -1,114 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/s_cbrt.c */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- *
- * Optimized by Bruce D. Evans.
- */
-/* cbrt(x)
- * Return cube root of x
- */
-
-use core::f64;
-
-const B1: u32 = 715094163; /* B1 = (1023-1023/3-0.03306235651)*2**20 */
-const B2: u32 = 696219795; /* B2 = (1023-1023/3-54/3-0.03306235651)*2**20 */
-
-/* |1/cbrt(x) - p(x)| < 2**-23.5 (~[-7.93e-8, 7.929e-8]). */
-const P0: f64 = 1.87595182427177009643; /* 0x3ffe03e6, 0x0f61e692 */
-const P1: f64 = -1.88497979543377169875; /* 0xbffe28e0, 0x92f02420 */
-const P2: f64 = 1.621429720105354466140; /* 0x3ff9f160, 0x4a49d6c2 */
-const P3: f64 = -0.758397934778766047437; /* 0xbfe844cb, 0xbee751d9 */
-const P4: f64 = 0.145996192886612446982; /* 0x3fc2b000, 0xd4e4edd7 */
-
-// Cube root (f64)
-///
-/// Computes the cube root of the argument.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn cbrt(x: f64) -> f64 {
- let x1p54 = f64::from_bits(0x4350000000000000); // 0x1p54 === 2 ^ 54
-
- let mut ui: u64 = x.to_bits();
- let mut r: f64;
- let s: f64;
- let mut t: f64;
- let w: f64;
- let mut hx: u32 = (ui >> 32) as u32 & 0x7fffffff;
-
- if hx >= 0x7ff00000 {
- /* cbrt(NaN,INF) is itself */
- return x + x;
- }
-
- /*
- * Rough cbrt to 5 bits:
- * cbrt(2**e*(1+m) ~= 2**(e/3)*(1+(e%3+m)/3)
- * where e is integral and >= 0, m is real and in [0, 1), and "/" and
- * "%" are integer division and modulus with rounding towards minus
- * infinity. The RHS is always >= the LHS and has a maximum relative
- * error of about 1 in 16. Adding a bias of -0.03306235651 to the
- * (e%3+m)/3 term reduces the error to about 1 in 32. With the IEEE
- * floating point representation, for finite positive normal values,
- * ordinary integer divison of the value in bits magically gives
- * almost exactly the RHS of the above provided we first subtract the
- * exponent bias (1023 for doubles) and later add it back. We do the
- * subtraction virtually to keep e >= 0 so that ordinary integer
- * division rounds towards minus infinity; this is also efficient.
- */
- if hx < 0x00100000 {
- /* zero or subnormal? */
- ui = (x * x1p54).to_bits();
- hx = (ui >> 32) as u32 & 0x7fffffff;
- if hx == 0 {
- return x; /* cbrt(0) is itself */
- }
- hx = hx / 3 + B2;
- } else {
- hx = hx / 3 + B1;
- }
- ui &= 1 << 63;
- ui |= (hx as u64) << 32;
- t = f64::from_bits(ui);
-
- /*
- * New cbrt to 23 bits:
- * cbrt(x) = t*cbrt(x/t**3) ~= t*P(t**3/x)
- * where P(r) is a polynomial of degree 4 that approximates 1/cbrt(r)
- * to within 2**-23.5 when |r - 1| < 1/10. The rough approximation
- * has produced t such than |t/cbrt(x) - 1| ~< 1/32, and cubing this
- * gives us bounds for r = t**3/x.
- *
- * Try to optimize for parallel evaluation as in __tanf.c.
- */
- r = (t * t) * (t / x);
- t = t * ((P0 + r * (P1 + r * P2)) + ((r * r) * r) * (P3 + r * P4));
-
- /*
- * Round t away from zero to 23 bits (sloppily except for ensuring that
- * the result is larger in magnitude than cbrt(x) but not much more than
- * 2 23-bit ulps larger). With rounding towards zero, the error bound
- * would be ~5/6 instead of ~4/6. With a maximum error of 2 23-bit ulps
- * in the rounded t, the infinite-precision error in the Newton
- * approximation barely affects third digit in the final error
- * 0.667; the error in the rounded t can be up to about 3 23-bit ulps
- * before the final error is larger than 0.667 ulps.
- */
- ui = t.to_bits();
- ui = (ui + 0x80000000) & 0xffffffffc0000000;
- t = f64::from_bits(ui);
-
- /* one step Newton iteration to 53 bits with error < 0.667 ulps */
- s = t * t; /* t*t is exact */
- r = x / s; /* error <= 0.5 ulps; |r| < |t| */
- w = t + t; /* t+t is exact */
- r = (r - t) / (w + r); /* r-t is exact; w+r ~= 3*t */
- t = t + t * r; /* error <= 0.5 + 0.5/3 + epsilon */
- t
-}
diff --git a/vendor/libm-0.1.4/src/math/cbrtf.rs b/vendor/libm-0.1.4/src/math/cbrtf.rs
deleted file mode 100644
index 6e589c099..000000000
--- a/vendor/libm-0.1.4/src/math/cbrtf.rs
+++ /dev/null
@@ -1,76 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/s_cbrtf.c */
-/*
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- * Debugged and optimized by Bruce D. Evans.
- */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-/* cbrtf(x)
- * Return cube root of x
- */
-
-use core::f32;
-
-const B1: u32 = 709958130; /* B1 = (127-127.0/3-0.03306235651)*2**23 */
-const B2: u32 = 642849266; /* B2 = (127-127.0/3-24/3-0.03306235651)*2**23 */
-
-/// Cube root (f32)
-///
-/// Computes the cube root of the argument.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn cbrtf(x: f32) -> f32 {
- let x1p24 = f32::from_bits(0x4b800000); // 0x1p24f === 2 ^ 24
-
- let mut r: f64;
- let mut t: f64;
- let mut ui: u32 = x.to_bits();
- let mut hx: u32 = ui & 0x7fffffff;
-
- if hx >= 0x7f800000 {
- /* cbrt(NaN,INF) is itself */
- return x + x;
- }
-
- /* rough cbrt to 5 bits */
- if hx < 0x00800000 {
- /* zero or subnormal? */
- if hx == 0 {
- return x; /* cbrt(+-0) is itself */
- }
- ui = (x * x1p24).to_bits();
- hx = ui & 0x7fffffff;
- hx = hx / 3 + B2;
- } else {
- hx = hx / 3 + B1;
- }
- ui &= 0x80000000;
- ui |= hx;
-
- /*
- * First step Newton iteration (solving t*t-x/t == 0) to 16 bits. In
- * double precision so that its terms can be arranged for efficiency
- * without causing overflow or underflow.
- */
- t = f32::from_bits(ui) as f64;
- r = t * t * t;
- t = t * (x as f64 + x as f64 + r) / (x as f64 + r + r);
-
- /*
- * Second step Newton iteration to 47 bits. In double precision for
- * efficiency and accuracy.
- */
- r = t * t * t;
- t = t * (x as f64 + x as f64 + r) / (x as f64 + r + r);
-
- /* rounding to 24 bits is perfect in round-to-nearest mode */
- t as f32
-}
diff --git a/vendor/libm-0.1.4/src/math/ceil.rs b/vendor/libm-0.1.4/src/math/ceil.rs
deleted file mode 100644
index 59883a8a7..000000000
--- a/vendor/libm-0.1.4/src/math/ceil.rs
+++ /dev/null
@@ -1,51 +0,0 @@
-use core::f64;
-
-const TOINT: f64 = 1. / f64::EPSILON;
-
-/// Ceil (f64)
-///
-/// Finds the nearest integer greater than or equal to `x`.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn ceil(x: f64) -> f64 {
- // On wasm32 we know that LLVM's intrinsic will compile to an optimized
- // `f64.ceil` native instruction, so we can leverage this for both code size
- // and speed.
- llvm_intrinsically_optimized! {
- #[cfg(target_arch = "wasm32")] {
- return unsafe { ::core::intrinsics::ceilf64(x) }
- }
- }
- let u: u64 = x.to_bits();
- let e: i64 = (u >> 52 & 0x7ff) as i64;
- let y: f64;
-
- if e >= 0x3ff + 52 || x == 0. {
- return x;
- }
- // y = int(x) - x, where int(x) is an integer neighbor of x
- y = if (u >> 63) != 0 {
- x - TOINT + TOINT - x
- } else {
- x + TOINT - TOINT - x
- };
- // special case because of non-nearest rounding modes
- if e < 0x3ff {
- force_eval!(y);
- return if (u >> 63) != 0 { -0. } else { 1. };
- }
- if y < 0. {
- x + y + 1.
- } else {
- x + y
- }
-}
-
-#[cfg(test)]
-mod tests {
- #[test]
- fn sanity_check() {
- assert_eq!(super::ceil(1.1), 2.0);
- assert_eq!(super::ceil(2.9), 3.0);
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/ceilf.rs b/vendor/libm-0.1.4/src/math/ceilf.rs
deleted file mode 100644
index 151a4f210..000000000
--- a/vendor/libm-0.1.4/src/math/ceilf.rs
+++ /dev/null
@@ -1,42 +0,0 @@
-use core::f32;
-
-/// Ceil (f32)
-///
-/// Finds the nearest integer greater than or equal to `x`.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn ceilf(x: f32) -> f32 {
- // On wasm32 we know that LLVM's intrinsic will compile to an optimized
- // `f32.ceil` native instruction, so we can leverage this for both code size
- // and speed.
- llvm_intrinsically_optimized! {
- #[cfg(target_arch = "wasm32")] {
- return unsafe { ::core::intrinsics::ceilf32(x) }
- }
- }
- let mut ui = x.to_bits();
- let e = (((ui >> 23) & 0xff).wrapping_sub(0x7f)) as i32;
-
- if e >= 23 {
- return x;
- }
- if e >= 0 {
- let m = 0x007fffff >> e;
- if (ui & m) == 0 {
- return x;
- }
- force_eval!(x + f32::from_bits(0x7b800000));
- if ui >> 31 == 0 {
- ui += m;
- }
- ui &= !m;
- } else {
- force_eval!(x + f32::from_bits(0x7b800000));
- if ui >> 31 != 0 {
- return -0.0;
- } else if ui << 1 != 0 {
- return 1.0;
- }
- }
- f32::from_bits(ui)
-}
diff --git a/vendor/libm-0.1.4/src/math/copysign.rs b/vendor/libm-0.1.4/src/math/copysign.rs
deleted file mode 100644
index 1527fb6ea..000000000
--- a/vendor/libm-0.1.4/src/math/copysign.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-/// Sign of Y, magnitude of X (f64)
-///
-/// Constructs a number with the magnitude (absolute value) of its
-/// first argument, `x`, and the sign of its second argument, `y`.
-pub fn copysign(x: f64, y: f64) -> f64 {
- let mut ux = x.to_bits();
- let uy = y.to_bits();
- ux &= (!0) >> 1;
- ux |= uy & (1 << 63);
- f64::from_bits(ux)
-}
diff --git a/vendor/libm-0.1.4/src/math/copysignf.rs b/vendor/libm-0.1.4/src/math/copysignf.rs
deleted file mode 100644
index 35148561a..000000000
--- a/vendor/libm-0.1.4/src/math/copysignf.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-/// Sign of Y, magnitude of X (f32)
-///
-/// Constructs a number with the magnitude (absolute value) of its
-/// first argument, `x`, and the sign of its second argument, `y`.
-pub fn copysignf(x: f32, y: f32) -> f32 {
- let mut ux = x.to_bits();
- let uy = y.to_bits();
- ux &= 0x7fffffff;
- ux |= uy & 0x80000000;
- f32::from_bits(ux)
-}
diff --git a/vendor/libm-0.1.4/src/math/cos.rs b/vendor/libm-0.1.4/src/math/cos.rs
deleted file mode 100644
index fe5a89919..000000000
--- a/vendor/libm-0.1.4/src/math/cos.rs
+++ /dev/null
@@ -1,74 +0,0 @@
-// origin: FreeBSD /usr/src/lib/msun/src/s_cos.c */
-//
-// ====================================================
-// Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
-//
-// Developed at SunPro, a Sun Microsystems, Inc. business.
-// Permission to use, copy, modify, and distribute this
-// software is freely granted, provided that this notice
-// is preserved.
-// ====================================================
-
-use super::{k_cos, k_sin, rem_pio2};
-
-// cos(x)
-// Return cosine function of x.
-//
-// kernel function:
-// k_sin ... sine function on [-pi/4,pi/4]
-// k_cos ... cosine function on [-pi/4,pi/4]
-// rem_pio2 ... argument reduction routine
-//
-// Method.
-// Let S,C and T denote the sin, cos and tan respectively on
-// [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2
-// in [-pi/4 , +pi/4], and let n = k mod 4.
-// We have
-//
-// n sin(x) cos(x) tan(x)
-// ----------------------------------------------------------
-// 0 S C T
-// 1 C -S -1/T
-// 2 -S -C T
-// 3 -C S -1/T
-// ----------------------------------------------------------
-//
-// Special cases:
-// Let trig be any of sin, cos, or tan.
-// trig(+-INF) is NaN, with signals;
-// trig(NaN) is that NaN;
-//
-// Accuracy:
-// TRIG(x) returns trig(x) nearly rounded
-//
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn cos(x: f64) -> f64 {
- let ix = (f64::to_bits(x) >> 32) as u32 & 0x7fffffff;
-
- /* |x| ~< pi/4 */
- if ix <= 0x3fe921fb {
- if ix < 0x3e46a09e {
- /* if x < 2**-27 * sqrt(2) */
- /* raise inexact if x != 0 */
- if x as i32 == 0 {
- return 1.0;
- }
- }
- return k_cos(x, 0.0);
- }
-
- /* cos(Inf or NaN) is NaN */
- if ix >= 0x7ff00000 {
- return x - x;
- }
-
- /* argument reduction needed */
- let (n, y0, y1) = rem_pio2(x);
- match n & 3 {
- 0 => k_cos(y0, y1),
- 1 => -k_sin(y0, y1, 1),
- 2 => -k_cos(y0, y1),
- _ => k_sin(y0, y1, 1),
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/cosf.rs b/vendor/libm-0.1.4/src/math/cosf.rs
deleted file mode 100644
index 48d76c8ee..000000000
--- a/vendor/libm-0.1.4/src/math/cosf.rs
+++ /dev/null
@@ -1,84 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/s_cosf.c */
-/*
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- * Optimized by Bruce D. Evans.
- */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-use super::{k_cosf, k_sinf, rem_pio2f};
-
-use core::f64::consts::FRAC_PI_2;
-
-/* Small multiples of pi/2 rounded to double precision. */
-const C1_PIO2: f64 = 1. * FRAC_PI_2; /* 0x3FF921FB, 0x54442D18 */
-const C2_PIO2: f64 = 2. * FRAC_PI_2; /* 0x400921FB, 0x54442D18 */
-const C3_PIO2: f64 = 3. * FRAC_PI_2; /* 0x4012D97C, 0x7F3321D2 */
-const C4_PIO2: f64 = 4. * FRAC_PI_2; /* 0x401921FB, 0x54442D18 */
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn cosf(x: f32) -> f32 {
- let x64 = x as f64;
-
- let x1p120 = f32::from_bits(0x7b800000); // 0x1p120f === 2 ^ 120
-
- let mut ix = x.to_bits();
- let sign = (ix >> 31) != 0;
- ix &= 0x7fffffff;
-
- if ix <= 0x3f490fda {
- /* |x| ~<= pi/4 */
- if ix < 0x39800000 {
- /* |x| < 2**-12 */
- /* raise inexact if x != 0 */
- force_eval!(x + x1p120);
- return 1.;
- }
- return k_cosf(x64);
- }
- if ix <= 0x407b53d1 {
- /* |x| ~<= 5*pi/4 */
- if ix > 0x4016cbe3 {
- /* |x| ~> 3*pi/4 */
- return -k_cosf(if sign { x64 + C2_PIO2 } else { x64 - C2_PIO2 });
- } else if sign {
- return k_sinf(x64 + C1_PIO2);
- } else {
- return k_sinf(C1_PIO2 - x64);
- }
- }
- if ix <= 0x40e231d5 {
- /* |x| ~<= 9*pi/4 */
- if ix > 0x40afeddf {
- /* |x| ~> 7*pi/4 */
- return k_cosf(if sign { x64 + C4_PIO2 } else { x64 - C4_PIO2 });
- } else if sign {
- return k_sinf(-x64 - C3_PIO2);
- } else {
- return k_sinf(x64 - C3_PIO2);
- }
- }
-
- /* cos(Inf or NaN) is NaN */
- if ix >= 0x7f800000 {
- return x - x;
- }
-
- /* general argument reduction needed */
- let (n, y) = rem_pio2f(x);
- match n & 3 {
- 0 => k_cosf(y),
- 1 => k_sinf(-y),
- 2 => -k_cosf(y),
- _ => k_sinf(y),
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/cosh.rs b/vendor/libm-0.1.4/src/math/cosh.rs
deleted file mode 100644
index bac875566..000000000
--- a/vendor/libm-0.1.4/src/math/cosh.rs
+++ /dev/null
@@ -1,39 +0,0 @@
-use super::exp;
-use super::expm1;
-use super::k_expo2;
-
-/// Hyperbolic cosine (f64)
-///
-/// Computes the hyperbolic cosine of the argument x.
-/// Is defined as `(exp(x) + exp(-x))/2`
-/// Angles are specified in radians.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn cosh(mut x: f64) -> f64 {
- /* |x| */
- let mut ix = x.to_bits();
- ix &= 0x7fffffffffffffff;
- x = f64::from_bits(ix);
- let w = ix >> 32;
-
- /* |x| < log(2) */
- if w < 0x3fe62e42 {
- if w < 0x3ff00000 - (26 << 20) {
- let x1p120 = f64::from_bits(0x4770000000000000);
- force_eval!(x + x1p120);
- return 1.;
- }
- let t = expm1(x); // exponential minus 1
- return 1. + t * t / (2. * (1. + t));
- }
-
- /* |x| < log(DBL_MAX) */
- if w < 0x40862e42 {
- let t = exp(x);
- /* note: if x>log(0x1p26) then the 1/t is not needed */
- return 0.5 * (t + 1. / t);
- }
-
- /* |x| > log(DBL_MAX) or nan */
- k_expo2(x)
-}
diff --git a/vendor/libm-0.1.4/src/math/coshf.rs b/vendor/libm-0.1.4/src/math/coshf.rs
deleted file mode 100644
index bf99e42f0..000000000
--- a/vendor/libm-0.1.4/src/math/coshf.rs
+++ /dev/null
@@ -1,39 +0,0 @@
-use super::expf;
-use super::expm1f;
-use super::k_expo2f;
-
-/// Hyperbolic cosine (f64)
-///
-/// Computes the hyperbolic cosine of the argument x.
-/// Is defined as `(exp(x) + exp(-x))/2`
-/// Angles are specified in radians.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn coshf(mut x: f32) -> f32 {
- let x1p120 = f32::from_bits(0x7b800000); // 0x1p120f === 2 ^ 120
-
- /* |x| */
- let mut ix = x.to_bits();
- ix &= 0x7fffffff;
- x = f32::from_bits(ix);
- let w = ix;
-
- /* |x| < log(2) */
- if w < 0x3f317217 {
- if w < (0x3f800000 - (12 << 23)) {
- force_eval!(x + x1p120);
- return 1.;
- }
- let t = expm1f(x);
- return 1. + t * t / (2. * (1. + t));
- }
-
- /* |x| < log(FLT_MAX) */
- if w < 0x42b17217 {
- let t = expf(x);
- return 0.5 * (t + 1. / t);
- }
-
- /* |x| > log(FLT_MAX) or nan */
- k_expo2f(x)
-}
diff --git a/vendor/libm-0.1.4/src/math/erf.rs b/vendor/libm-0.1.4/src/math/erf.rs
deleted file mode 100644
index a2c617d34..000000000
--- a/vendor/libm-0.1.4/src/math/erf.rs
+++ /dev/null
@@ -1,317 +0,0 @@
-use super::{exp, fabs, get_high_word, with_set_low_word};
-/* origin: FreeBSD /usr/src/lib/msun/src/s_erf.c */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-/* double erf(double x)
- * double erfc(double x)
- * x
- * 2 |\
- * erf(x) = --------- | exp(-t*t)dt
- * sqrt(pi) \|
- * 0
- *
- * erfc(x) = 1-erf(x)
- * Note that
- * erf(-x) = -erf(x)
- * erfc(-x) = 2 - erfc(x)
- *
- * Method:
- * 1. For |x| in [0, 0.84375]
- * erf(x) = x + x*R(x^2)
- * erfc(x) = 1 - erf(x) if x in [-.84375,0.25]
- * = 0.5 + ((0.5-x)-x*R) if x in [0.25,0.84375]
- * where R = P/Q where P is an odd poly of degree 8 and
- * Q is an odd poly of degree 10.
- * -57.90
- * | R - (erf(x)-x)/x | <= 2
- *
- *
- * Remark. The formula is derived by noting
- * erf(x) = (2/sqrt(pi))*(x - x^3/3 + x^5/10 - x^7/42 + ....)
- * and that
- * 2/sqrt(pi) = 1.128379167095512573896158903121545171688
- * is close to one. The interval is chosen because the fix
- * point of erf(x) is near 0.6174 (i.e., erf(x)=x when x is
- * near 0.6174), and by some experiment, 0.84375 is chosen to
- * guarantee the error is less than one ulp for erf.
- *
- * 2. For |x| in [0.84375,1.25], let s = |x| - 1, and
- * c = 0.84506291151 rounded to single (24 bits)
- * erf(x) = sign(x) * (c + P1(s)/Q1(s))
- * erfc(x) = (1-c) - P1(s)/Q1(s) if x > 0
- * 1+(c+P1(s)/Q1(s)) if x < 0
- * |P1/Q1 - (erf(|x|)-c)| <= 2**-59.06
- * Remark: here we use the taylor series expansion at x=1.
- * erf(1+s) = erf(1) + s*Poly(s)
- * = 0.845.. + P1(s)/Q1(s)
- * That is, we use rational approximation to approximate
- * erf(1+s) - (c = (single)0.84506291151)
- * Note that |P1/Q1|< 0.078 for x in [0.84375,1.25]
- * where
- * P1(s) = degree 6 poly in s
- * Q1(s) = degree 6 poly in s
- *
- * 3. For x in [1.25,1/0.35(~2.857143)],
- * erfc(x) = (1/x)*exp(-x*x-0.5625+R1/S1)
- * erf(x) = 1 - erfc(x)
- * where
- * R1(z) = degree 7 poly in z, (z=1/x^2)
- * S1(z) = degree 8 poly in z
- *
- * 4. For x in [1/0.35,28]
- * erfc(x) = (1/x)*exp(-x*x-0.5625+R2/S2) if x > 0
- * = 2.0 - (1/x)*exp(-x*x-0.5625+R2/S2) if -6<x<0
- * = 2.0 - tiny (if x <= -6)
- * erf(x) = sign(x)*(1.0 - erfc(x)) if x < 6, else
- * erf(x) = sign(x)*(1.0 - tiny)
- * where
- * R2(z) = degree 6 poly in z, (z=1/x^2)
- * S2(z) = degree 7 poly in z
- *
- * Note1:
- * To compute exp(-x*x-0.5625+R/S), let s be a single
- * precision number and s := x; then
- * -x*x = -s*s + (s-x)*(s+x)
- * exp(-x*x-0.5626+R/S) =
- * exp(-s*s-0.5625)*exp((s-x)*(s+x)+R/S);
- * Note2:
- * Here 4 and 5 make use of the asymptotic series
- * exp(-x*x)
- * erfc(x) ~ ---------- * ( 1 + Poly(1/x^2) )
- * x*sqrt(pi)
- * We use rational approximation to approximate
- * g(s)=f(1/x^2) = log(erfc(x)*x) - x*x + 0.5625
- * Here is the error bound for R1/S1 and R2/S2
- * |R1/S1 - f(x)| < 2**(-62.57)
- * |R2/S2 - f(x)| < 2**(-61.52)
- *
- * 5. For inf > x >= 28
- * erf(x) = sign(x) *(1 - tiny) (raise inexact)
- * erfc(x) = tiny*tiny (raise underflow) if x > 0
- * = 2 - tiny if x<0
- *
- * 7. Special case:
- * erf(0) = 0, erf(inf) = 1, erf(-inf) = -1,
- * erfc(0) = 1, erfc(inf) = 0, erfc(-inf) = 2,
- * erfc/erf(NaN) is NaN
- */
-
-const ERX: f64 = 8.45062911510467529297e-01; /* 0x3FEB0AC1, 0x60000000 */
-/*
- * Coefficients for approximation to erf on [0,0.84375]
- */
-const EFX8: f64 = 1.02703333676410069053e+00; /* 0x3FF06EBA, 0x8214DB69 */
-const PP0: f64 = 1.28379167095512558561e-01; /* 0x3FC06EBA, 0x8214DB68 */
-const PP1: f64 = -3.25042107247001499370e-01; /* 0xBFD4CD7D, 0x691CB913 */
-const PP2: f64 = -2.84817495755985104766e-02; /* 0xBF9D2A51, 0xDBD7194F */
-const PP3: f64 = -5.77027029648944159157e-03; /* 0xBF77A291, 0x236668E4 */
-const PP4: f64 = -2.37630166566501626084e-05; /* 0xBEF8EAD6, 0x120016AC */
-const QQ1: f64 = 3.97917223959155352819e-01; /* 0x3FD97779, 0xCDDADC09 */
-const QQ2: f64 = 6.50222499887672944485e-02; /* 0x3FB0A54C, 0x5536CEBA */
-const QQ3: f64 = 5.08130628187576562776e-03; /* 0x3F74D022, 0xC4D36B0F */
-const QQ4: f64 = 1.32494738004321644526e-04; /* 0x3F215DC9, 0x221C1A10 */
-const QQ5: f64 = -3.96022827877536812320e-06; /* 0xBED09C43, 0x42A26120 */
-/*
- * Coefficients for approximation to erf in [0.84375,1.25]
- */
-const PA0: f64 = -2.36211856075265944077e-03; /* 0xBF6359B8, 0xBEF77538 */
-const PA1: f64 = 4.14856118683748331666e-01; /* 0x3FDA8D00, 0xAD92B34D */
-const PA2: f64 = -3.72207876035701323847e-01; /* 0xBFD7D240, 0xFBB8C3F1 */
-const PA3: f64 = 3.18346619901161753674e-01; /* 0x3FD45FCA, 0x805120E4 */
-const PA4: f64 = -1.10894694282396677476e-01; /* 0xBFBC6398, 0x3D3E28EC */
-const PA5: f64 = 3.54783043256182359371e-02; /* 0x3FA22A36, 0x599795EB */
-const PA6: f64 = -2.16637559486879084300e-03; /* 0xBF61BF38, 0x0A96073F */
-const QA1: f64 = 1.06420880400844228286e-01; /* 0x3FBB3E66, 0x18EEE323 */
-const QA2: f64 = 5.40397917702171048937e-01; /* 0x3FE14AF0, 0x92EB6F33 */
-const QA3: f64 = 7.18286544141962662868e-02; /* 0x3FB2635C, 0xD99FE9A7 */
-const QA4: f64 = 1.26171219808761642112e-01; /* 0x3FC02660, 0xE763351F */
-const QA5: f64 = 1.36370839120290507362e-02; /* 0x3F8BEDC2, 0x6B51DD1C */
-const QA6: f64 = 1.19844998467991074170e-02; /* 0x3F888B54, 0x5735151D */
-/*
- * Coefficients for approximation to erfc in [1.25,1/0.35]
- */
-const RA0: f64 = -9.86494403484714822705e-03; /* 0xBF843412, 0x600D6435 */
-const RA1: f64 = -6.93858572707181764372e-01; /* 0xBFE63416, 0xE4BA7360 */
-const RA2: f64 = -1.05586262253232909814e+01; /* 0xC0251E04, 0x41B0E726 */
-const RA3: f64 = -6.23753324503260060396e+01; /* 0xC04F300A, 0xE4CBA38D */
-const RA4: f64 = -1.62396669462573470355e+02; /* 0xC0644CB1, 0x84282266 */
-const RA5: f64 = -1.84605092906711035994e+02; /* 0xC067135C, 0xEBCCABB2 */
-const RA6: f64 = -8.12874355063065934246e+01; /* 0xC0545265, 0x57E4D2F2 */
-const RA7: f64 = -9.81432934416914548592e+00; /* 0xC023A0EF, 0xC69AC25C */
-const SA1: f64 = 1.96512716674392571292e+01; /* 0x4033A6B9, 0xBD707687 */
-const SA2: f64 = 1.37657754143519042600e+02; /* 0x4061350C, 0x526AE721 */
-const SA3: f64 = 4.34565877475229228821e+02; /* 0x407B290D, 0xD58A1A71 */
-const SA4: f64 = 6.45387271733267880336e+02; /* 0x40842B19, 0x21EC2868 */
-const SA5: f64 = 4.29008140027567833386e+02; /* 0x407AD021, 0x57700314 */
-const SA6: f64 = 1.08635005541779435134e+02; /* 0x405B28A3, 0xEE48AE2C */
-const SA7: f64 = 6.57024977031928170135e+00; /* 0x401A47EF, 0x8E484A93 */
-const SA8: f64 = -6.04244152148580987438e-02; /* 0xBFAEEFF2, 0xEE749A62 */
-/*
- * Coefficients for approximation to erfc in [1/.35,28]
- */
-const RB0: f64 = -9.86494292470009928597e-03; /* 0xBF843412, 0x39E86F4A */
-const RB1: f64 = -7.99283237680523006574e-01; /* 0xBFE993BA, 0x70C285DE */
-const RB2: f64 = -1.77579549177547519889e+01; /* 0xC031C209, 0x555F995A */
-const RB3: f64 = -1.60636384855821916062e+02; /* 0xC064145D, 0x43C5ED98 */
-const RB4: f64 = -6.37566443368389627722e+02; /* 0xC083EC88, 0x1375F228 */
-const RB5: f64 = -1.02509513161107724954e+03; /* 0xC0900461, 0x6A2E5992 */
-const RB6: f64 = -4.83519191608651397019e+02; /* 0xC07E384E, 0x9BDC383F */
-const SB1: f64 = 3.03380607434824582924e+01; /* 0x403E568B, 0x261D5190 */
-const SB2: f64 = 3.25792512996573918826e+02; /* 0x40745CAE, 0x221B9F0A */
-const SB3: f64 = 1.53672958608443695994e+03; /* 0x409802EB, 0x189D5118 */
-const SB4: f64 = 3.19985821950859553908e+03; /* 0x40A8FFB7, 0x688C246A */
-const SB5: f64 = 2.55305040643316442583e+03; /* 0x40A3F219, 0xCEDF3BE6 */
-const SB6: f64 = 4.74528541206955367215e+02; /* 0x407DA874, 0xE79FE763 */
-const SB7: f64 = -2.24409524465858183362e+01; /* 0xC03670E2, 0x42712D62 */
-
-fn erfc1(x: f64) -> f64 {
- let s: f64;
- let p: f64;
- let q: f64;
-
- s = fabs(x) - 1.0;
- p = PA0 + s * (PA1 + s * (PA2 + s * (PA3 + s * (PA4 + s * (PA5 + s * PA6)))));
- q = 1.0 + s * (QA1 + s * (QA2 + s * (QA3 + s * (QA4 + s * (QA5 + s * QA6)))));
-
- 1.0 - ERX - p / q
-}
-
-fn erfc2(ix: u32, mut x: f64) -> f64 {
- let s: f64;
- let r: f64;
- let big_s: f64;
- let z: f64;
-
- if ix < 0x3ff40000 {
- /* |x| < 1.25 */
- return erfc1(x);
- }
-
- x = fabs(x);
- s = 1.0 / (x * x);
- if ix < 0x4006db6d {
- /* |x| < 1/.35 ~ 2.85714 */
- r = RA0 + s * (RA1 + s * (RA2 + s * (RA3 + s * (RA4 + s * (RA5 + s * (RA6 + s * RA7))))));
- big_s = 1.0
- + s * (SA1
- + s * (SA2 + s * (SA3 + s * (SA4 + s * (SA5 + s * (SA6 + s * (SA7 + s * SA8)))))));
- } else {
- /* |x| > 1/.35 */
- r = RB0 + s * (RB1 + s * (RB2 + s * (RB3 + s * (RB4 + s * (RB5 + s * RB6)))));
- big_s =
- 1.0 + s * (SB1 + s * (SB2 + s * (SB3 + s * (SB4 + s * (SB5 + s * (SB6 + s * SB7))))));
- }
- z = with_set_low_word(x, 0);
-
- exp(-z * z - 0.5625) * exp((z - x) * (z + x) + r / big_s) / x
-}
-
-/// Error function (f64)
-///
-/// Calculates an approximation to the “error functionâ€, which estimates
-/// the probability that an observation will fall within x standard
-/// deviations of the mean (assuming a normal distribution).
-pub fn erf(x: f64) -> f64 {
- let r: f64;
- let s: f64;
- let z: f64;
- let y: f64;
- let mut ix: u32;
- let sign: usize;
-
- ix = get_high_word(x);
- sign = (ix >> 31) as usize;
- ix &= 0x7fffffff;
- if ix >= 0x7ff00000 {
- /* erf(nan)=nan, erf(+-inf)=+-1 */
- return 1.0 - 2.0 * (sign as f64) + 1.0 / x;
- }
- if ix < 0x3feb0000 {
- /* |x| < 0.84375 */
- if ix < 0x3e300000 {
- /* |x| < 2**-28 */
- /* avoid underflow */
- return 0.125 * (8.0 * x + EFX8 * x);
- }
- z = x * x;
- r = PP0 + z * (PP1 + z * (PP2 + z * (PP3 + z * PP4)));
- s = 1.0 + z * (QQ1 + z * (QQ2 + z * (QQ3 + z * (QQ4 + z * QQ5))));
- y = r / s;
- return x + x * y;
- }
- if ix < 0x40180000 {
- /* 0.84375 <= |x| < 6 */
- y = 1.0 - erfc2(ix, x);
- } else {
- let x1p_1022 = f64::from_bits(0x0010000000000000);
- y = 1.0 - x1p_1022;
- }
-
- if sign != 0 {
- -y
- } else {
- y
- }
-}
-
-/// Error function (f64)
-///
-/// Calculates the complementary probability.
-/// Is `1 - erf(x)`. Is computed directly, so that you can use it to avoid
-/// the loss of precision that would result from subtracting
-/// large probabilities (on large `x`) from 1.
-pub fn erfc(x: f64) -> f64 {
- let r: f64;
- let s: f64;
- let z: f64;
- let y: f64;
- let mut ix: u32;
- let sign: usize;
-
- ix = get_high_word(x);
- sign = (ix >> 31) as usize;
- ix &= 0x7fffffff;
- if ix >= 0x7ff00000 {
- /* erfc(nan)=nan, erfc(+-inf)=0,2 */
- return 2.0 * (sign as f64) + 1.0 / x;
- }
- if ix < 0x3feb0000 {
- /* |x| < 0.84375 */
- if ix < 0x3c700000 {
- /* |x| < 2**-56 */
- return 1.0 - x;
- }
- z = x * x;
- r = PP0 + z * (PP1 + z * (PP2 + z * (PP3 + z * PP4)));
- s = 1.0 + z * (QQ1 + z * (QQ2 + z * (QQ3 + z * (QQ4 + z * QQ5))));
- y = r / s;
- if sign != 0 || ix < 0x3fd00000 {
- /* x < 1/4 */
- return 1.0 - (x + x * y);
- }
- return 0.5 - (x - 0.5 + x * y);
- }
- if ix < 0x403c0000 {
- /* 0.84375 <= |x| < 28 */
- if sign != 0 {
- return 2.0 - erfc2(ix, x);
- } else {
- return erfc2(ix, x);
- }
- }
-
- let x1p_1022 = f64::from_bits(0x0010000000000000);
- if sign != 0 {
- 2.0 - x1p_1022
- } else {
- x1p_1022 * x1p_1022
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/erff.rs b/vendor/libm-0.1.4/src/math/erff.rs
deleted file mode 100644
index 384052293..000000000
--- a/vendor/libm-0.1.4/src/math/erff.rs
+++ /dev/null
@@ -1,229 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/s_erff.c */
-/*
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-use super::{expf, fabsf};
-
-const ERX: f32 = 8.4506291151e-01; /* 0x3f58560b */
-/*
- * Coefficients for approximation to erf on [0,0.84375]
- */
-const EFX8: f32 = 1.0270333290e+00; /* 0x3f8375d4 */
-const PP0: f32 = 1.2837916613e-01; /* 0x3e0375d4 */
-const PP1: f32 = -3.2504209876e-01; /* 0xbea66beb */
-const PP2: f32 = -2.8481749818e-02; /* 0xbce9528f */
-const PP3: f32 = -5.7702702470e-03; /* 0xbbbd1489 */
-const PP4: f32 = -2.3763017452e-05; /* 0xb7c756b1 */
-const QQ1: f32 = 3.9791721106e-01; /* 0x3ecbbbce */
-const QQ2: f32 = 6.5022252500e-02; /* 0x3d852a63 */
-const QQ3: f32 = 5.0813062117e-03; /* 0x3ba68116 */
-const QQ4: f32 = 1.3249473704e-04; /* 0x390aee49 */
-const QQ5: f32 = -3.9602282413e-06; /* 0xb684e21a */
-/*
- * Coefficients for approximation to erf in [0.84375,1.25]
- */
-const PA0: f32 = -2.3621185683e-03; /* 0xbb1acdc6 */
-const PA1: f32 = 4.1485610604e-01; /* 0x3ed46805 */
-const PA2: f32 = -3.7220788002e-01; /* 0xbebe9208 */
-const PA3: f32 = 3.1834661961e-01; /* 0x3ea2fe54 */
-const PA4: f32 = -1.1089469492e-01; /* 0xbde31cc2 */
-const PA5: f32 = 3.5478305072e-02; /* 0x3d1151b3 */
-const PA6: f32 = -2.1663755178e-03; /* 0xbb0df9c0 */
-const QA1: f32 = 1.0642088205e-01; /* 0x3dd9f331 */
-const QA2: f32 = 5.4039794207e-01; /* 0x3f0a5785 */
-const QA3: f32 = 7.1828655899e-02; /* 0x3d931ae7 */
-const QA4: f32 = 1.2617121637e-01; /* 0x3e013307 */
-const QA5: f32 = 1.3637083583e-02; /* 0x3c5f6e13 */
-const QA6: f32 = 1.1984500103e-02; /* 0x3c445aa3 */
-/*
- * Coefficients for approximation to erfc in [1.25,1/0.35]
- */
-const RA0: f32 = -9.8649440333e-03; /* 0xbc21a093 */
-const RA1: f32 = -6.9385856390e-01; /* 0xbf31a0b7 */
-const RA2: f32 = -1.0558626175e+01; /* 0xc128f022 */
-const RA3: f32 = -6.2375331879e+01; /* 0xc2798057 */
-const RA4: f32 = -1.6239666748e+02; /* 0xc322658c */
-const RA5: f32 = -1.8460508728e+02; /* 0xc3389ae7 */
-const RA6: f32 = -8.1287437439e+01; /* 0xc2a2932b */
-const RA7: f32 = -9.8143291473e+00; /* 0xc11d077e */
-const SA1: f32 = 1.9651271820e+01; /* 0x419d35ce */
-const SA2: f32 = 1.3765776062e+02; /* 0x4309a863 */
-const SA3: f32 = 4.3456588745e+02; /* 0x43d9486f */
-const SA4: f32 = 6.4538726807e+02; /* 0x442158c9 */
-const SA5: f32 = 4.2900814819e+02; /* 0x43d6810b */
-const SA6: f32 = 1.0863500214e+02; /* 0x42d9451f */
-const SA7: f32 = 6.5702495575e+00; /* 0x40d23f7c */
-const SA8: f32 = -6.0424413532e-02; /* 0xbd777f97 */
-/*
- * Coefficients for approximation to erfc in [1/.35,28]
- */
-const RB0: f32 = -9.8649431020e-03; /* 0xbc21a092 */
-const RB1: f32 = -7.9928326607e-01; /* 0xbf4c9dd4 */
-const RB2: f32 = -1.7757955551e+01; /* 0xc18e104b */
-const RB3: f32 = -1.6063638306e+02; /* 0xc320a2ea */
-const RB4: f32 = -6.3756646729e+02; /* 0xc41f6441 */
-const RB5: f32 = -1.0250950928e+03; /* 0xc480230b */
-const RB6: f32 = -4.8351919556e+02; /* 0xc3f1c275 */
-const SB1: f32 = 3.0338060379e+01; /* 0x41f2b459 */
-const SB2: f32 = 3.2579251099e+02; /* 0x43a2e571 */
-const SB3: f32 = 1.5367296143e+03; /* 0x44c01759 */
-const SB4: f32 = 3.1998581543e+03; /* 0x4547fdbb */
-const SB5: f32 = 2.5530502930e+03; /* 0x451f90ce */
-const SB6: f32 = 4.7452853394e+02; /* 0x43ed43a7 */
-const SB7: f32 = -2.2440952301e+01; /* 0xc1b38712 */
-
-fn erfc1(x: f32) -> f32 {
- let s: f32;
- let p: f32;
- let q: f32;
-
- s = fabsf(x) - 1.0;
- p = PA0 + s * (PA1 + s * (PA2 + s * (PA3 + s * (PA4 + s * (PA5 + s * PA6)))));
- q = 1.0 + s * (QA1 + s * (QA2 + s * (QA3 + s * (QA4 + s * (QA5 + s * QA6)))));
- return 1.0 - ERX - p / q;
-}
-
-fn erfc2(mut ix: u32, mut x: f32) -> f32 {
- let s: f32;
- let r: f32;
- let big_s: f32;
- let z: f32;
-
- if ix < 0x3fa00000 {
- /* |x| < 1.25 */
- return erfc1(x);
- }
-
- x = fabsf(x);
- s = 1.0 / (x * x);
- if ix < 0x4036db6d {
- /* |x| < 1/0.35 */
- r = RA0 + s * (RA1 + s * (RA2 + s * (RA3 + s * (RA4 + s * (RA5 + s * (RA6 + s * RA7))))));
- big_s = 1.0
- + s * (SA1
- + s * (SA2 + s * (SA3 + s * (SA4 + s * (SA5 + s * (SA6 + s * (SA7 + s * SA8)))))));
- } else {
- /* |x| >= 1/0.35 */
- r = RB0 + s * (RB1 + s * (RB2 + s * (RB3 + s * (RB4 + s * (RB5 + s * RB6)))));
- big_s =
- 1.0 + s * (SB1 + s * (SB2 + s * (SB3 + s * (SB4 + s * (SB5 + s * (SB6 + s * SB7))))));
- }
- ix = x.to_bits();
- z = f32::from_bits(ix & 0xffffe000);
-
- expf(-z * z - 0.5625) * expf((z - x) * (z + x) + r / big_s) / x
-}
-
-/// Error function (f32)
-///
-/// Calculates an approximation to the “error functionâ€, which estimates
-/// the probability that an observation will fall within x standard
-/// deviations of the mean (assuming a normal distribution).
-pub fn erff(x: f32) -> f32 {
- let r: f32;
- let s: f32;
- let z: f32;
- let y: f32;
- let mut ix: u32;
- let sign: usize;
-
- ix = x.to_bits();
- sign = (ix >> 31) as usize;
- ix &= 0x7fffffff;
- if ix >= 0x7f800000 {
- /* erf(nan)=nan, erf(+-inf)=+-1 */
- return 1.0 - 2.0 * (sign as f32) + 1.0 / x;
- }
- if ix < 0x3f580000 {
- /* |x| < 0.84375 */
- if ix < 0x31800000 {
- /* |x| < 2**-28 */
- /*avoid underflow */
- return 0.125 * (8.0 * x + EFX8 * x);
- }
- z = x * x;
- r = PP0 + z * (PP1 + z * (PP2 + z * (PP3 + z * PP4)));
- s = 1.0 + z * (QQ1 + z * (QQ2 + z * (QQ3 + z * (QQ4 + z * QQ5))));
- y = r / s;
- return x + x * y;
- }
- if ix < 0x40c00000 {
- /* |x| < 6 */
- y = 1.0 - erfc2(ix, x);
- } else {
- let x1p_120 = f32::from_bits(0x03800000);
- y = 1.0 - x1p_120;
- }
-
- if sign != 0 {
- -y
- } else {
- y
- }
-}
-
-/// Error function (f32)
-///
-/// Calculates the complementary probability.
-/// Is `1 - erf(x)`. Is computed directly, so that you can use it to avoid
-/// the loss of precision that would result from subtracting
-/// large probabilities (on large `x`) from 1.
-pub fn erfcf(x: f32) -> f32 {
- let r: f32;
- let s: f32;
- let z: f32;
- let y: f32;
- let mut ix: u32;
- let sign: usize;
-
- ix = x.to_bits();
- sign = (ix >> 31) as usize;
- ix &= 0x7fffffff;
- if ix >= 0x7f800000 {
- /* erfc(nan)=nan, erfc(+-inf)=0,2 */
- return 2.0 * (sign as f32) + 1.0 / x;
- }
-
- if ix < 0x3f580000 {
- /* |x| < 0.84375 */
- if ix < 0x23800000 {
- /* |x| < 2**-56 */
- return 1.0 - x;
- }
- z = x * x;
- r = PP0 + z * (PP1 + z * (PP2 + z * (PP3 + z * PP4)));
- s = 1.0 + z * (QQ1 + z * (QQ2 + z * (QQ3 + z * (QQ4 + z * QQ5))));
- y = r / s;
- if sign != 0 || ix < 0x3e800000 {
- /* x < 1/4 */
- return 1.0 - (x + x * y);
- }
- return 0.5 - (x - 0.5 + x * y);
- }
- if ix < 0x41e00000 {
- /* |x| < 28 */
- if sign != 0 {
- return 2.0 - erfc2(ix, x);
- } else {
- return erfc2(ix, x);
- }
- }
-
- let x1p_120 = f32::from_bits(0x03800000);
- if sign != 0 {
- 2.0 - x1p_120
- } else {
- x1p_120 * x1p_120
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/exp.rs b/vendor/libm-0.1.4/src/math/exp.rs
deleted file mode 100644
index 5465b5693..000000000
--- a/vendor/libm-0.1.4/src/math/exp.rs
+++ /dev/null
@@ -1,155 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_exp.c */
-/*
- * ====================================================
- * Copyright (C) 2004 by Sun Microsystems, Inc. All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-/* exp(x)
- * Returns the exponential of x.
- *
- * Method
- * 1. Argument reduction:
- * Reduce x to an r so that |r| <= 0.5*ln2 ~ 0.34658.
- * Given x, find r and integer k such that
- *
- * x = k*ln2 + r, |r| <= 0.5*ln2.
- *
- * Here r will be represented as r = hi-lo for better
- * accuracy.
- *
- * 2. Approximation of exp(r) by a special rational function on
- * the interval [0,0.34658]:
- * Write
- * R(r**2) = r*(exp(r)+1)/(exp(r)-1) = 2 + r*r/6 - r**4/360 + ...
- * We use a special Remez algorithm on [0,0.34658] to generate
- * a polynomial of degree 5 to approximate R. The maximum error
- * of this polynomial approximation is bounded by 2**-59. In
- * other words,
- * R(z) ~ 2.0 + P1*z + P2*z**2 + P3*z**3 + P4*z**4 + P5*z**5
- * (where z=r*r, and the values of P1 to P5 are listed below)
- * and
- * | 5 | -59
- * | 2.0+P1*z+...+P5*z - R(z) | <= 2
- * | |
- * The computation of exp(r) thus becomes
- * 2*r
- * exp(r) = 1 + ----------
- * R(r) - r
- * r*c(r)
- * = 1 + r + ----------- (for better accuracy)
- * 2 - c(r)
- * where
- * 2 4 10
- * c(r) = r - (P1*r + P2*r + ... + P5*r ).
- *
- * 3. Scale back to obtain exp(x):
- * From step 1, we have
- * exp(x) = 2^k * exp(r)
- *
- * Special cases:
- * exp(INF) is INF, exp(NaN) is NaN;
- * exp(-INF) is 0, and
- * for finite argument, only exp(0)=1 is exact.
- *
- * Accuracy:
- * according to an error analysis, the error is always less than
- * 1 ulp (unit in the last place).
- *
- * Misc. info.
- * For IEEE double
- * if x > 709.782712893383973096 then exp(x) overflows
- * if x < -745.133219101941108420 then exp(x) underflows
- */
-
-use super::scalbn;
-
-const HALF: [f64; 2] = [0.5, -0.5];
-const LN2HI: f64 = 6.93147180369123816490e-01; /* 0x3fe62e42, 0xfee00000 */
-const LN2LO: f64 = 1.90821492927058770002e-10; /* 0x3dea39ef, 0x35793c76 */
-const INVLN2: f64 = 1.44269504088896338700e+00; /* 0x3ff71547, 0x652b82fe */
-const P1: f64 = 1.66666666666666019037e-01; /* 0x3FC55555, 0x5555553E */
-const P2: f64 = -2.77777777770155933842e-03; /* 0xBF66C16C, 0x16BEBD93 */
-const P3: f64 = 6.61375632143793436117e-05; /* 0x3F11566A, 0xAF25DE2C */
-const P4: f64 = -1.65339022054652515390e-06; /* 0xBEBBBD41, 0xC5D26BF1 */
-const P5: f64 = 4.13813679705723846039e-08; /* 0x3E663769, 0x72BEA4D0 */
-
-/// Exponential, base *e* (f64)
-///
-/// Calculate the exponential of `x`, that is, *e* raised to the power `x`
-/// (where *e* is the base of the natural system of logarithms, approximately 2.71828).
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn exp(mut x: f64) -> f64 {
- let x1p1023 = f64::from_bits(0x7fe0000000000000); // 0x1p1023 === 2 ^ 1023
- let x1p_149 = f64::from_bits(0x36a0000000000000); // 0x1p-149 === 2 ^ -149
-
- let hi: f64;
- let lo: f64;
- let c: f64;
- let xx: f64;
- let y: f64;
- let k: i32;
- let sign: i32;
- let mut hx: u32;
-
- hx = (x.to_bits() >> 32) as u32;
- sign = (hx >> 31) as i32;
- hx &= 0x7fffffff; /* high word of |x| */
-
- /* special cases */
- if hx >= 0x4086232b {
- /* if |x| >= 708.39... */
- if x.is_nan() {
- return x;
- }
- if x > 709.782712893383973096 {
- /* overflow if x!=inf */
- x *= x1p1023;
- return x;
- }
- if x < -708.39641853226410622 {
- /* underflow if x!=-inf */
- force_eval!((-x1p_149 / x) as f32);
- if x < -745.13321910194110842 {
- return 0.;
- }
- }
- }
-
- /* argument reduction */
- if hx > 0x3fd62e42 {
- /* if |x| > 0.5 ln2 */
- if hx >= 0x3ff0a2b2 {
- /* if |x| >= 1.5 ln2 */
- k = (INVLN2 * x + HALF[sign as usize]) as i32;
- } else {
- k = 1 - sign - sign;
- }
- hi = x - k as f64 * LN2HI; /* k*ln2hi is exact here */
- lo = k as f64 * LN2LO;
- x = hi - lo;
- } else if hx > 0x3e300000 {
- /* if |x| > 2**-28 */
- k = 0;
- hi = x;
- lo = 0.;
- } else {
- /* inexact if x!=0 */
- force_eval!(x1p1023 + x);
- return 1. + x;
- }
-
- /* x is now in primary range */
- xx = x * x;
- c = x - xx * (P1 + xx * (P2 + xx * (P3 + xx * (P4 + xx * P5))));
- y = 1. + (x * c / (2. - c) - lo + hi);
- if k == 0 {
- y
- } else {
- scalbn(y, k)
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/exp10.rs b/vendor/libm-0.1.4/src/math/exp10.rs
deleted file mode 100644
index 9537f76f1..000000000
--- a/vendor/libm-0.1.4/src/math/exp10.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-use super::{exp2, modf, pow};
-
-const LN10: f64 = 3.32192809488736234787031942948939;
-const P10: &[f64] = &[
- 1e-15, 1e-14, 1e-13, 1e-12, 1e-11, 1e-10, 1e-9, 1e-8, 1e-7, 1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1,
- 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15,
-];
-
-pub fn exp10(x: f64) -> f64 {
- let (mut y, n) = modf(x);
- let u: u64 = n.to_bits();
- /* fabs(n) < 16 without raising invalid on nan */
- if (u >> 52 & 0x7ff) < 0x3ff + 4 {
- if y == 0.0 {
- return P10[((n as isize) + 15) as usize];
- }
- y = exp2(LN10 * y);
- return y * P10[((n as isize) + 15) as usize];
- }
- return pow(10.0, x);
-}
diff --git a/vendor/libm-0.1.4/src/math/exp10f.rs b/vendor/libm-0.1.4/src/math/exp10f.rs
deleted file mode 100644
index d45fff36e..000000000
--- a/vendor/libm-0.1.4/src/math/exp10f.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-use super::{exp2, exp2f, modff};
-
-const LN10_F32: f32 = 3.32192809488736234787031942948939;
-const LN10_F64: f64 = 3.32192809488736234787031942948939;
-const P10: &[f32] = &[
- 1e-7, 1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7,
-];
-
-pub fn exp10f(x: f32) -> f32 {
- let (mut y, n) = modff(x);
- let u = n.to_bits();
- /* fabsf(n) < 8 without raising invalid on nan */
- if (u >> 23 & 0xff) < 0x7f + 3 {
- if y == 0.0 {
- return P10[((n as isize) + 7) as usize];
- }
- y = exp2f(LN10_F32 * y);
- return y * P10[((n as isize) + 7) as usize];
- }
- return exp2(LN10_F64 * (x as f64)) as f32;
-}
diff --git a/vendor/libm-0.1.4/src/math/exp2.rs b/vendor/libm-0.1.4/src/math/exp2.rs
deleted file mode 100644
index c2192fde5..000000000
--- a/vendor/libm-0.1.4/src/math/exp2.rs
+++ /dev/null
@@ -1,395 +0,0 @@
-// origin: FreeBSD /usr/src/lib/msun/src/s_exp2.c */
-//-
-// Copyright (c) 2005 David Schultz <das@FreeBSD.ORG>
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1. Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// 2. Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-// SUCH DAMAGE.
-
-use super::scalbn;
-
-const TBLSIZE: usize = 256;
-
-#[cfg_attr(rustfmt, rustfmt_skip)]
-static TBL: [u64; TBLSIZE * 2] = [
- // exp2(z + eps) eps
- 0x3fe6a09e667f3d5d, 0x3d39880000000000,
- 0x3fe6b052fa751744, 0x3cd8000000000000,
- 0x3fe6c012750bd9fe, 0xbd28780000000000,
- 0x3fe6cfdcddd476bf, 0x3d1ec00000000000,
- 0x3fe6dfb23c651a29, 0xbcd8000000000000,
- 0x3fe6ef9298593ae3, 0xbcbc000000000000,
- 0x3fe6ff7df9519386, 0xbd2fd80000000000,
- 0x3fe70f7466f42da3, 0xbd2c880000000000,
- 0x3fe71f75e8ec5fc3, 0x3d13c00000000000,
- 0x3fe72f8286eacf05, 0xbd38300000000000,
- 0x3fe73f9a48a58152, 0xbd00c00000000000,
- 0x3fe74fbd35d7ccfc, 0x3d2f880000000000,
- 0x3fe75feb564267f1, 0x3d03e00000000000,
- 0x3fe77024b1ab6d48, 0xbd27d00000000000,
- 0x3fe780694fde5d38, 0xbcdd000000000000,
- 0x3fe790b938ac1d00, 0x3ce3000000000000,
- 0x3fe7a11473eb0178, 0xbced000000000000,
- 0x3fe7b17b0976d060, 0x3d20400000000000,
- 0x3fe7c1ed0130c133, 0x3ca0000000000000,
- 0x3fe7d26a62ff8636, 0xbd26900000000000,
- 0x3fe7e2f336cf4e3b, 0xbd02e00000000000,
- 0x3fe7f3878491c3e8, 0xbd24580000000000,
- 0x3fe80427543e1b4e, 0x3d33000000000000,
- 0x3fe814d2add1071a, 0x3d0f000000000000,
- 0x3fe82589994ccd7e, 0xbd21c00000000000,
- 0x3fe8364c1eb942d0, 0x3d29d00000000000,
- 0x3fe8471a4623cab5, 0x3d47100000000000,
- 0x3fe857f4179f5bbc, 0x3d22600000000000,
- 0x3fe868d99b4491af, 0xbd32c40000000000,
- 0x3fe879cad931a395, 0xbd23000000000000,
- 0x3fe88ac7d98a65b8, 0xbd2a800000000000,
- 0x3fe89bd0a4785800, 0xbced000000000000,
- 0x3fe8ace5422aa223, 0x3d33280000000000,
- 0x3fe8be05bad619fa, 0x3d42b40000000000,
- 0x3fe8cf3216b54383, 0xbd2ed00000000000,
- 0x3fe8e06a5e08664c, 0xbd20500000000000,
- 0x3fe8f1ae99157807, 0x3d28280000000000,
- 0x3fe902fed0282c0e, 0xbd1cb00000000000,
- 0x3fe9145b0b91ff96, 0xbd05e00000000000,
- 0x3fe925c353aa2ff9, 0x3cf5400000000000,
- 0x3fe93737b0cdc64a, 0x3d17200000000000,
- 0x3fe948b82b5f98ae, 0xbd09000000000000,
- 0x3fe95a44cbc852cb, 0x3d25680000000000,
- 0x3fe96bdd9a766f21, 0xbd36d00000000000,
- 0x3fe97d829fde4e2a, 0xbd01000000000000,
- 0x3fe98f33e47a23a3, 0x3d2d000000000000,
- 0x3fe9a0f170ca0604, 0xbd38a40000000000,
- 0x3fe9b2bb4d53ff89, 0x3d355c0000000000,
- 0x3fe9c49182a3f15b, 0x3d26b80000000000,
- 0x3fe9d674194bb8c5, 0xbcec000000000000,
- 0x3fe9e86319e3238e, 0x3d17d00000000000,
- 0x3fe9fa5e8d07f302, 0x3d16400000000000,
- 0x3fea0c667b5de54d, 0xbcf5000000000000,
- 0x3fea1e7aed8eb8f6, 0x3d09e00000000000,
- 0x3fea309bec4a2e27, 0x3d2ad80000000000,
- 0x3fea42c980460a5d, 0xbd1af00000000000,
- 0x3fea5503b23e259b, 0x3d0b600000000000,
- 0x3fea674a8af46213, 0x3d38880000000000,
- 0x3fea799e1330b3a7, 0x3d11200000000000,
- 0x3fea8bfe53c12e8d, 0x3d06c00000000000,
- 0x3fea9e6b5579fcd2, 0xbd29b80000000000,
- 0x3feab0e521356fb8, 0x3d2b700000000000,
- 0x3feac36bbfd3f381, 0x3cd9000000000000,
- 0x3fead5ff3a3c2780, 0x3ce4000000000000,
- 0x3feae89f995ad2a3, 0xbd2c900000000000,
- 0x3feafb4ce622f367, 0x3d16500000000000,
- 0x3feb0e07298db790, 0x3d2fd40000000000,
- 0x3feb20ce6c9a89a9, 0x3d12700000000000,
- 0x3feb33a2b84f1a4b, 0x3d4d470000000000,
- 0x3feb468415b747e7, 0xbd38380000000000,
- 0x3feb59728de5593a, 0x3c98000000000000,
- 0x3feb6c6e29f1c56a, 0x3d0ad00000000000,
- 0x3feb7f76f2fb5e50, 0x3cde800000000000,
- 0x3feb928cf22749b2, 0xbd04c00000000000,
- 0x3feba5b030a10603, 0xbd0d700000000000,
- 0x3febb8e0b79a6f66, 0x3d0d900000000000,
- 0x3febcc1e904bc1ff, 0x3d02a00000000000,
- 0x3febdf69c3f3a16f, 0xbd1f780000000000,
- 0x3febf2c25bd71db8, 0xbd10a00000000000,
- 0x3fec06286141b2e9, 0xbd11400000000000,
- 0x3fec199bdd8552e0, 0x3d0be00000000000,
- 0x3fec2d1cd9fa64ee, 0xbd09400000000000,
- 0x3fec40ab5fffd02f, 0xbd0ed00000000000,
- 0x3fec544778fafd15, 0x3d39660000000000,
- 0x3fec67f12e57d0cb, 0xbd1a100000000000,
- 0x3fec7ba88988c1b6, 0xbd58458000000000,
- 0x3fec8f6d9406e733, 0xbd1a480000000000,
- 0x3feca3405751c4df, 0x3ccb000000000000,
- 0x3fecb720dcef9094, 0x3d01400000000000,
- 0x3feccb0f2e6d1689, 0x3cf0200000000000,
- 0x3fecdf0b555dc412, 0x3cf3600000000000,
- 0x3fecf3155b5bab3b, 0xbd06900000000000,
- 0x3fed072d4a0789bc, 0x3d09a00000000000,
- 0x3fed1b532b08c8fa, 0xbd15e00000000000,
- 0x3fed2f87080d8a85, 0x3d1d280000000000,
- 0x3fed43c8eacaa203, 0x3d01a00000000000,
- 0x3fed5818dcfba491, 0x3cdf000000000000,
- 0x3fed6c76e862e6a1, 0xbd03a00000000000,
- 0x3fed80e316c9834e, 0xbd0cd80000000000,
- 0x3fed955d71ff6090, 0x3cf4c00000000000,
- 0x3feda9e603db32ae, 0x3cff900000000000,
- 0x3fedbe7cd63a8325, 0x3ce9800000000000,
- 0x3fedd321f301b445, 0xbcf5200000000000,
- 0x3fede7d5641c05bf, 0xbd1d700000000000,
- 0x3fedfc97337b9aec, 0xbd16140000000000,
- 0x3fee11676b197d5e, 0x3d0b480000000000,
- 0x3fee264614f5a3e7, 0x3d40ce0000000000,
- 0x3fee3b333b16ee5c, 0x3d0c680000000000,
- 0x3fee502ee78b3fb4, 0xbd09300000000000,
- 0x3fee653924676d68, 0xbce5000000000000,
- 0x3fee7a51fbc74c44, 0xbd07f80000000000,
- 0x3fee8f7977cdb726, 0xbcf3700000000000,
- 0x3feea4afa2a490e8, 0x3ce5d00000000000,
- 0x3feeb9f4867ccae4, 0x3d161a0000000000,
- 0x3feecf482d8e680d, 0x3cf5500000000000,
- 0x3feee4aaa2188514, 0x3cc6400000000000,
- 0x3feefa1bee615a13, 0xbcee800000000000,
- 0x3fef0f9c1cb64106, 0xbcfa880000000000,
- 0x3fef252b376bb963, 0xbd2c900000000000,
- 0x3fef3ac948dd7275, 0x3caa000000000000,
- 0x3fef50765b6e4524, 0xbcf4f00000000000,
- 0x3fef6632798844fd, 0x3cca800000000000,
- 0x3fef7bfdad9cbe38, 0x3cfabc0000000000,
- 0x3fef91d802243c82, 0xbcd4600000000000,
- 0x3fefa7c1819e908e, 0xbd0b0c0000000000,
- 0x3fefbdba3692d511, 0xbcc0e00000000000,
- 0x3fefd3c22b8f7194, 0xbd10de8000000000,
- 0x3fefe9d96b2a23ee, 0x3cee430000000000,
- 0x3ff0000000000000, 0x0,
- 0x3ff00b1afa5abcbe, 0xbcb3400000000000,
- 0x3ff0163da9fb3303, 0xbd12170000000000,
- 0x3ff02168143b0282, 0x3cba400000000000,
- 0x3ff02c9a3e77806c, 0x3cef980000000000,
- 0x3ff037d42e11bbca, 0xbcc7400000000000,
- 0x3ff04315e86e7f89, 0x3cd8300000000000,
- 0x3ff04e5f72f65467, 0xbd1a3f0000000000,
- 0x3ff059b0d315855a, 0xbd02840000000000,
- 0x3ff0650a0e3c1f95, 0x3cf1600000000000,
- 0x3ff0706b29ddf71a, 0x3d15240000000000,
- 0x3ff07bd42b72a82d, 0xbce9a00000000000,
- 0x3ff0874518759bd0, 0x3ce6400000000000,
- 0x3ff092bdf66607c8, 0xbd00780000000000,
- 0x3ff09e3ecac6f383, 0xbc98000000000000,
- 0x3ff0a9c79b1f3930, 0x3cffa00000000000,
- 0x3ff0b5586cf988fc, 0xbcfac80000000000,
- 0x3ff0c0f145e46c8a, 0x3cd9c00000000000,
- 0x3ff0cc922b724816, 0x3d05200000000000,
- 0x3ff0d83b23395dd8, 0xbcfad00000000000,
- 0x3ff0e3ec32d3d1f3, 0x3d1bac0000000000,
- 0x3ff0efa55fdfa9a6, 0xbd04e80000000000,
- 0x3ff0fb66affed2f0, 0xbd0d300000000000,
- 0x3ff1073028d7234b, 0x3cf1500000000000,
- 0x3ff11301d0125b5b, 0x3cec000000000000,
- 0x3ff11edbab5e2af9, 0x3d16bc0000000000,
- 0x3ff12abdc06c31d5, 0x3ce8400000000000,
- 0x3ff136a814f2047d, 0xbd0ed00000000000,
- 0x3ff1429aaea92de9, 0x3ce8e00000000000,
- 0x3ff14e95934f3138, 0x3ceb400000000000,
- 0x3ff15a98c8a58e71, 0x3d05300000000000,
- 0x3ff166a45471c3df, 0x3d03380000000000,
- 0x3ff172b83c7d5211, 0x3d28d40000000000,
- 0x3ff17ed48695bb9f, 0xbd05d00000000000,
- 0x3ff18af9388c8d93, 0xbd1c880000000000,
- 0x3ff1972658375d66, 0x3d11f00000000000,
- 0x3ff1a35beb6fcba7, 0x3d10480000000000,
- 0x3ff1af99f81387e3, 0xbd47390000000000,
- 0x3ff1bbe084045d54, 0x3d24e40000000000,
- 0x3ff1c82f95281c43, 0xbd0a200000000000,
- 0x3ff1d4873168b9b2, 0x3ce3800000000000,
- 0x3ff1e0e75eb44031, 0x3ceac00000000000,
- 0x3ff1ed5022fcd938, 0x3d01900000000000,
- 0x3ff1f9c18438cdf7, 0xbd1b780000000000,
- 0x3ff2063b88628d8f, 0x3d2d940000000000,
- 0x3ff212be3578a81e, 0x3cd8000000000000,
- 0x3ff21f49917ddd41, 0x3d2b340000000000,
- 0x3ff22bdda2791323, 0x3d19f80000000000,
- 0x3ff2387a6e7561e7, 0xbd19c80000000000,
- 0x3ff2451ffb821427, 0x3d02300000000000,
- 0x3ff251ce4fb2a602, 0xbd13480000000000,
- 0x3ff25e85711eceb0, 0x3d12700000000000,
- 0x3ff26b4565e27d16, 0x3d11d00000000000,
- 0x3ff2780e341de00f, 0x3d31ee0000000000,
- 0x3ff284dfe1f5633e, 0xbd14c00000000000,
- 0x3ff291ba7591bb30, 0xbd13d80000000000,
- 0x3ff29e9df51fdf09, 0x3d08b00000000000,
- 0x3ff2ab8a66d10e9b, 0xbd227c0000000000,
- 0x3ff2b87fd0dada3a, 0x3d2a340000000000,
- 0x3ff2c57e39771af9, 0xbd10800000000000,
- 0x3ff2d285a6e402d9, 0xbd0ed00000000000,
- 0x3ff2df961f641579, 0xbcf4200000000000,
- 0x3ff2ecafa93e2ecf, 0xbd24980000000000,
- 0x3ff2f9d24abd8822, 0xbd16300000000000,
- 0x3ff306fe0a31b625, 0xbd32360000000000,
- 0x3ff31432edeea50b, 0xbd70df8000000000,
- 0x3ff32170fc4cd7b8, 0xbd22480000000000,
- 0x3ff32eb83ba8e9a2, 0xbd25980000000000,
- 0x3ff33c08b2641766, 0x3d1ed00000000000,
- 0x3ff3496266e3fa27, 0xbcdc000000000000,
- 0x3ff356c55f929f0f, 0xbd30d80000000000,
- 0x3ff36431a2de88b9, 0x3d22c80000000000,
- 0x3ff371a7373aaa39, 0x3d20600000000000,
- 0x3ff37f26231e74fe, 0xbd16600000000000,
- 0x3ff38cae6d05d838, 0xbd0ae00000000000,
- 0x3ff39a401b713ec3, 0xbd44720000000000,
- 0x3ff3a7db34e5a020, 0x3d08200000000000,
- 0x3ff3b57fbfec6e95, 0x3d3e800000000000,
- 0x3ff3c32dc313a8f2, 0x3cef800000000000,
- 0x3ff3d0e544ede122, 0xbd17a00000000000,
- 0x3ff3dea64c1234bb, 0x3d26300000000000,
- 0x3ff3ec70df1c4ecc, 0xbd48a60000000000,
- 0x3ff3fa4504ac7e8c, 0xbd3cdc0000000000,
- 0x3ff40822c367a0bb, 0x3d25b80000000000,
- 0x3ff4160a21f72e95, 0x3d1ec00000000000,
- 0x3ff423fb27094646, 0xbd13600000000000,
- 0x3ff431f5d950a920, 0x3d23980000000000,
- 0x3ff43ffa3f84b9eb, 0x3cfa000000000000,
- 0x3ff44e0860618919, 0xbcf6c00000000000,
- 0x3ff45c2042a7d201, 0xbd0bc00000000000,
- 0x3ff46a41ed1d0016, 0xbd12800000000000,
- 0x3ff4786d668b3326, 0x3d30e00000000000,
- 0x3ff486a2b5c13c00, 0xbd2d400000000000,
- 0x3ff494e1e192af04, 0x3d0c200000000000,
- 0x3ff4a32af0d7d372, 0xbd1e500000000000,
- 0x3ff4b17dea6db801, 0x3d07800000000000,
- 0x3ff4bfdad53629e1, 0xbd13800000000000,
- 0x3ff4ce41b817c132, 0x3d00800000000000,
- 0x3ff4dcb299fddddb, 0x3d2c700000000000,
- 0x3ff4eb2d81d8ab96, 0xbd1ce00000000000,
- 0x3ff4f9b2769d2d02, 0x3d19200000000000,
- 0x3ff508417f4531c1, 0xbd08c00000000000,
- 0x3ff516daa2cf662a, 0xbcfa000000000000,
- 0x3ff5257de83f51ea, 0x3d4a080000000000,
- 0x3ff5342b569d4eda, 0xbd26d80000000000,
- 0x3ff542e2f4f6ac1a, 0xbd32440000000000,
- 0x3ff551a4ca5d94db, 0x3d483c0000000000,
- 0x3ff56070dde9116b, 0x3d24b00000000000,
- 0x3ff56f4736b529de, 0x3d415a0000000000,
- 0x3ff57e27dbe2c40e, 0xbd29e00000000000,
- 0x3ff58d12d497c76f, 0xbd23080000000000,
- 0x3ff59c0827ff0b4c, 0x3d4dec0000000000,
- 0x3ff5ab07dd485427, 0xbcc4000000000000,
- 0x3ff5ba11fba87af4, 0x3d30080000000000,
- 0x3ff5c9268a59460b, 0xbd26c80000000000,
- 0x3ff5d84590998e3f, 0x3d469a0000000000,
- 0x3ff5e76f15ad20e1, 0xbd1b400000000000,
- 0x3ff5f6a320dcebca, 0x3d17700000000000,
- 0x3ff605e1b976dcb8, 0x3d26f80000000000,
- 0x3ff6152ae6cdf715, 0x3d01000000000000,
- 0x3ff6247eb03a5531, 0xbd15d00000000000,
- 0x3ff633dd1d1929b5, 0xbd12d00000000000,
- 0x3ff6434634ccc313, 0xbcea800000000000,
- 0x3ff652b9febc8efa, 0xbd28600000000000,
- 0x3ff6623882553397, 0x3d71fe0000000000,
- 0x3ff671c1c708328e, 0xbd37200000000000,
- 0x3ff68155d44ca97e, 0x3ce6800000000000,
- 0x3ff690f4b19e9471, 0xbd29780000000000,
-];
-
-// exp2(x): compute the base 2 exponential of x
-//
-// Accuracy: Peak error < 0.503 ulp for normalized results.
-//
-// Method: (accurate tables)
-//
-// Reduce x:
-// x = k + y, for integer k and |y| <= 1/2.
-// Thus we have exp2(x) = 2**k * exp2(y).
-//
-// Reduce y:
-// y = i/TBLSIZE + z - eps[i] for integer i near y * TBLSIZE.
-// Thus we have exp2(y) = exp2(i/TBLSIZE) * exp2(z - eps[i]),
-// with |z - eps[i]| <= 2**-9 + 2**-39 for the table used.
-//
-// We compute exp2(i/TBLSIZE) via table lookup and exp2(z - eps[i]) via
-// a degree-5 minimax polynomial with maximum error under 1.3 * 2**-61.
-// The values in exp2t[] and eps[] are chosen such that
-// exp2t[i] = exp2(i/TBLSIZE + eps[i]), and eps[i] is a small offset such
-// that exp2t[i] is accurate to 2**-64.
-//
-// Note that the range of i is +-TBLSIZE/2, so we actually index the tables
-// by i0 = i + TBLSIZE/2. For cache efficiency, exp2t[] and eps[] are
-// virtual tables, interleaved in the real table tbl[].
-//
-// This method is due to Gal, with many details due to Gal and Bachelis:
-//
-// Gal, S. and Bachelis, B. An Accurate Elementary Mathematical Library
-// for the IEEE Floating Point Standard. TOMS 17(1), 26-46 (1991).
-
-/// Exponential, base 2 (f64)
-///
-/// Calculate `2^x`, that is, 2 raised to the power `x`.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn exp2(mut x: f64) -> f64 {
- let redux = f64::from_bits(0x4338000000000000) / TBLSIZE as f64;
- let p1 = f64::from_bits(0x3fe62e42fefa39ef);
- let p2 = f64::from_bits(0x3fcebfbdff82c575);
- let p3 = f64::from_bits(0x3fac6b08d704a0a6);
- let p4 = f64::from_bits(0x3f83b2ab88f70400);
- let p5 = f64::from_bits(0x3f55d88003875c74);
-
- // double_t r, t, z;
- // uint32_t ix, i0;
- // union {double f; uint64_t i;} u = {x};
- // union {uint32_t u; int32_t i;} k;
- let x1p1023 = f64::from_bits(0x7fe0000000000000);
- let x1p52 = f64::from_bits(0x4330000000000000);
- let _0x1p_149 = f64::from_bits(0xb6a0000000000000);
-
- /* Filter out exceptional cases. */
- let ui = f64::to_bits(x);
- let ix = ui >> 32 & 0x7fffffff;
- if ix >= 0x408ff000 {
- /* |x| >= 1022 or nan */
- if ix >= 0x40900000 && ui >> 63 == 0 {
- /* x >= 1024 or nan */
- /* overflow */
- x *= x1p1023;
- return x;
- }
- if ix >= 0x7ff00000 {
- /* -inf or -nan */
- return -1.0 / x;
- }
- if ui >> 63 != 0 {
- /* x <= -1022 */
- /* underflow */
- if x <= -1075.0 || x - x1p52 + x1p52 != x {
- force_eval!((_0x1p_149 / x) as f32);
- }
- if x <= -1075.0 {
- return 0.0;
- }
- }
- } else if ix < 0x3c900000 {
- /* |x| < 0x1p-54 */
- return 1.0 + x;
- }
-
- /* Reduce x, computing z, i0, and k. */
- let ui = f64::to_bits(x + redux);
- let mut i0 = ui as u32;
- i0 = i0.wrapping_add(TBLSIZE as u32 / 2);
- let ku = i0 / TBLSIZE as u32 * TBLSIZE as u32;
- let ki = ku as i32 / TBLSIZE as i32;
- i0 %= TBLSIZE as u32;
- let uf = f64::from_bits(ui) - redux;
- let mut z = x - uf;
-
- /* Compute r = exp2(y) = exp2t[i0] * p(z - eps[i]). */
- let t = f64::from_bits(TBL[2 * i0 as usize]); /* exp2t[i0] */
- z -= f64::from_bits(TBL[2 * i0 as usize + 1]); /* eps[i0] */
- let r = t + t * z * (p1 + z * (p2 + z * (p3 + z * (p4 + z * p5))));
-
- scalbn(r, ki)
-}
-
-#[test]
-fn i0_wrap_test() {
- let x = -3.0 / 256.0;
- assert_eq!(exp2(x), f64::from_bits(0x3fefbdba3692d514));
-}
diff --git a/vendor/libm-0.1.4/src/math/exp2f.rs b/vendor/libm-0.1.4/src/math/exp2f.rs
deleted file mode 100644
index 12c9e76a4..000000000
--- a/vendor/libm-0.1.4/src/math/exp2f.rs
+++ /dev/null
@@ -1,136 +0,0 @@
-// origin: FreeBSD /usr/src/lib/msun/src/s_exp2f.c
-//-
-// Copyright (c) 2005 David Schultz <das@FreeBSD.ORG>
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1. Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// 2. Redistributions in binary form must reproduce the above copyright
-// notice, this list of conditions and the following disclaimer in the
-// documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-// SUCH DAMAGE.
-
-const TBLSIZE: usize = 16;
-
-static EXP2FT: [u64; TBLSIZE] = [
- 0x3fe6a09e667f3bcd,
- 0x3fe7a11473eb0187,
- 0x3fe8ace5422aa0db,
- 0x3fe9c49182a3f090,
- 0x3feae89f995ad3ad,
- 0x3fec199bdd85529c,
- 0x3fed5818dcfba487,
- 0x3feea4afa2a490da,
- 0x3ff0000000000000,
- 0x3ff0b5586cf9890f,
- 0x3ff172b83c7d517b,
- 0x3ff2387a6e756238,
- 0x3ff306fe0a31b715,
- 0x3ff3dea64c123422,
- 0x3ff4bfdad5362a27,
- 0x3ff5ab07dd485429,
-];
-
-// exp2f(x): compute the base 2 exponential of x
-//
-// Accuracy: Peak error < 0.501 ulp; location of peak: -0.030110927.
-//
-// Method: (equally-spaced tables)
-//
-// Reduce x:
-// x = k + y, for integer k and |y| <= 1/2.
-// Thus we have exp2f(x) = 2**k * exp2(y).
-//
-// Reduce y:
-// y = i/TBLSIZE + z for integer i near y * TBLSIZE.
-// Thus we have exp2(y) = exp2(i/TBLSIZE) * exp2(z),
-// with |z| <= 2**-(TBLSIZE+1).
-//
-// We compute exp2(i/TBLSIZE) via table lookup and exp2(z) via a
-// degree-4 minimax polynomial with maximum error under 1.4 * 2**-33.
-// Using double precision for everything except the reduction makes
-// roundoff error insignificant and simplifies the scaling step.
-//
-// This method is due to Tang, but I do not use his suggested parameters:
-//
-// Tang, P. Table-driven Implementation of the Exponential Function
-// in IEEE Floating-Point Arithmetic. TOMS 15(2), 144-157 (1989).
-
-/// Exponential, base 2 (f32)
-///
-/// Calculate `2^x`, that is, 2 raised to the power `x`.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn exp2f(mut x: f32) -> f32 {
- let redux = f32::from_bits(0x4b400000) / TBLSIZE as f32;
- let p1 = f32::from_bits(0x3f317218);
- let p2 = f32::from_bits(0x3e75fdf0);
- let p3 = f32::from_bits(0x3d6359a4);
- let p4 = f32::from_bits(0x3c1d964e);
-
- // double_t t, r, z;
- // uint32_t ix, i0, k;
-
- let x1p127 = f32::from_bits(0x7f000000);
-
- /* Filter out exceptional cases. */
- let ui = f32::to_bits(x);
- let ix = ui & 0x7fffffff;
- if ix > 0x42fc0000 {
- /* |x| > 126 */
- if ix > 0x7f800000 {
- /* NaN */
- return x;
- }
- if ui >= 0x43000000 && ui < 0x80000000 {
- /* x >= 128 */
- x *= x1p127;
- return x;
- }
- if ui >= 0x80000000 {
- /* x < -126 */
- if ui >= 0xc3160000 || (ui & 0x0000ffff != 0) {
- force_eval!(f32::from_bits(0x80000001) / x);
- }
- if ui >= 0xc3160000 {
- /* x <= -150 */
- return 0.0;
- }
- }
- } else if ix <= 0x33000000 {
- /* |x| <= 0x1p-25 */
- return 1.0 + x;
- }
-
- /* Reduce x, computing z, i0, and k. */
- let ui = f32::to_bits(x + redux);
- let mut i0 = ui;
- i0 += TBLSIZE as u32 / 2;
- let k = i0 / TBLSIZE as u32;
- let ukf = f64::from_bits(((0x3ff + k) as u64) << 52);
- i0 &= TBLSIZE as u32 - 1;
- let mut uf = f32::from_bits(ui);
- uf -= redux;
- let z: f64 = (x - uf) as f64;
- /* Compute r = exp2(y) = exp2ft[i0] * p(z). */
- let r: f64 = f64::from_bits(EXP2FT[i0 as usize]);
- let t: f64 = r as f64 * z;
- let r: f64 = r + t * (p1 as f64 + z * p2 as f64) + t * (z * z) * (p3 as f64 + z * p4 as f64);
-
- /* Scale by 2**k */
- (r * ukf) as f32
-}
diff --git a/vendor/libm-0.1.4/src/math/expf.rs b/vendor/libm-0.1.4/src/math/expf.rs
deleted file mode 100644
index 09323ec8d..000000000
--- a/vendor/libm-0.1.4/src/math/expf.rs
+++ /dev/null
@@ -1,102 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_expf.c */
-/*
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-use super::scalbnf;
-
-const HALF: [f32; 2] = [0.5, -0.5];
-const LN2_HI: f32 = 6.9314575195e-01; /* 0x3f317200 */
-const LN2_LO: f32 = 1.4286067653e-06; /* 0x35bfbe8e */
-const INV_LN2: f32 = 1.4426950216e+00; /* 0x3fb8aa3b */
-/*
- * Domain [-0.34568, 0.34568], range ~[-4.278e-9, 4.447e-9]:
- * |x*(exp(x)+1)/(exp(x)-1) - p(x)| < 2**-27.74
- */
-const P1: f32 = 1.6666625440e-1; /* 0xaaaa8f.0p-26 */
-const P2: f32 = -2.7667332906e-3; /* -0xb55215.0p-32 */
-
-/// Exponential, base *e* (f32)
-///
-/// Calculate the exponential of `x`, that is, *e* raised to the power `x`
-/// (where *e* is the base of the natural system of logarithms, approximately 2.71828).
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn expf(mut x: f32) -> f32 {
- let x1p127 = f32::from_bits(0x7f000000); // 0x1p127f === 2 ^ 127
- let x1p_126 = f32::from_bits(0x800000); // 0x1p-126f === 2 ^ -126 /*original 0x1p-149f ??????????? */
- let mut hx = x.to_bits();
- let sign = (hx >> 31) as i32; /* sign bit of x */
- let signb: bool = sign != 0;
- hx &= 0x7fffffff; /* high word of |x| */
-
- /* special cases */
- if hx >= 0x42aeac50 {
- /* if |x| >= -87.33655f or NaN */
- if hx > 0x7f800000 {
- /* NaN */
- return x;
- }
- if (hx >= 0x42b17218) && (!signb) {
- /* x >= 88.722839f */
- /* overflow */
- x *= x1p127;
- return x;
- }
- if signb {
- /* underflow */
- force_eval!(-x1p_126 / x);
- if hx >= 0x42cff1b5 {
- /* x <= -103.972084f */
- return 0.;
- }
- }
- }
-
- /* argument reduction */
- let k: i32;
- let hi: f32;
- let lo: f32;
- if hx > 0x3eb17218 {
- /* if |x| > 0.5 ln2 */
- if hx > 0x3f851592 {
- /* if |x| > 1.5 ln2 */
- k = (INV_LN2 * x + HALF[sign as usize]) as i32;
- } else {
- k = 1 - sign - sign;
- }
- let kf = k as f32;
- hi = x - kf * LN2_HI; /* k*ln2hi is exact here */
- lo = kf * LN2_LO;
- x = hi - lo;
- } else if hx > 0x39000000 {
- /* |x| > 2**-14 */
- k = 0;
- hi = x;
- lo = 0.;
- } else {
- /* raise inexact */
- force_eval!(x1p127 + x);
- return 1. + x;
- }
-
- /* x is now in primary range */
- let xx = x * x;
- let c = x - xx * (P1 + xx * P2);
- let y = 1. + (x * c / (2. - c) - lo + hi);
- if k == 0 {
- y
- } else {
- scalbnf(y, k)
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/expm1.rs b/vendor/libm-0.1.4/src/math/expm1.rs
deleted file mode 100644
index 0d43b4e10..000000000
--- a/vendor/libm-0.1.4/src/math/expm1.rs
+++ /dev/null
@@ -1,145 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/s_expm1.c */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-use core::f64;
-
-const O_THRESHOLD: f64 = 7.09782712893383973096e+02; /* 0x40862E42, 0xFEFA39EF */
-const LN2_HI: f64 = 6.93147180369123816490e-01; /* 0x3fe62e42, 0xfee00000 */
-const LN2_LO: f64 = 1.90821492927058770002e-10; /* 0x3dea39ef, 0x35793c76 */
-const INVLN2: f64 = 1.44269504088896338700e+00; /* 0x3ff71547, 0x652b82fe */
-/* Scaled Q's: Qn_here = 2**n * Qn_above, for R(2*z) where z = hxs = x*x/2: */
-const Q1: f64 = -3.33333333333331316428e-02; /* BFA11111 111110F4 */
-const Q2: f64 = 1.58730158725481460165e-03; /* 3F5A01A0 19FE5585 */
-const Q3: f64 = -7.93650757867487942473e-05; /* BF14CE19 9EAADBB7 */
-const Q4: f64 = 4.00821782732936239552e-06; /* 3ED0CFCA 86E65239 */
-const Q5: f64 = -2.01099218183624371326e-07; /* BE8AFDB7 6E09C32D */
-
-/// Exponential, base *e*, of x-1 (f64)
-///
-/// Calculates the exponential of `x` and subtract 1, that is, *e* raised
-/// to the power `x` minus 1 (where *e* is the base of the natural
-/// system of logarithms, approximately 2.71828).
-/// The result is accurate even for small values of `x`,
-/// where using `exp(x)-1` would lose many significant digits.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn expm1(mut x: f64) -> f64 {
- let hi: f64;
- let lo: f64;
- let k: i32;
- let c: f64;
- let mut t: f64;
- let mut y: f64;
-
- let mut ui = x.to_bits();
- let hx = ((ui >> 32) & 0x7fffffff) as u32;
- let sign = (ui >> 63) as i32;
-
- /* filter out huge and non-finite argument */
- if hx >= 0x4043687A {
- /* if |x|>=56*ln2 */
- if x.is_nan() {
- return x;
- }
- if sign != 0 {
- return -1.0;
- }
- if x > O_THRESHOLD {
- x *= f64::from_bits(0x7fe0000000000000);
- return x;
- }
- }
-
- /* argument reduction */
- if hx > 0x3fd62e42 {
- /* if |x| > 0.5 ln2 */
- if hx < 0x3FF0A2B2 {
- /* and |x| < 1.5 ln2 */
- if sign == 0 {
- hi = x - LN2_HI;
- lo = LN2_LO;
- k = 1;
- } else {
- hi = x + LN2_HI;
- lo = -LN2_LO;
- k = -1;
- }
- } else {
- k = (INVLN2 * x + if sign != 0 { -0.5 } else { 0.5 }) as i32;
- t = k as f64;
- hi = x - t * LN2_HI; /* t*ln2_hi is exact here */
- lo = t * LN2_LO;
- }
- x = hi - lo;
- c = (hi - x) - lo;
- } else if hx < 0x3c900000 {
- /* |x| < 2**-54, return x */
- if hx < 0x00100000 {
- force_eval!(x);
- }
- return x;
- } else {
- c = 0.0;
- k = 0;
- }
-
- /* x is now in primary range */
- let hfx = 0.5 * x;
- let hxs = x * hfx;
- let r1 = 1.0 + hxs * (Q1 + hxs * (Q2 + hxs * (Q3 + hxs * (Q4 + hxs * Q5))));
- t = 3.0 - r1 * hfx;
- let mut e = hxs * ((r1 - t) / (6.0 - x * t));
- if k == 0 {
- /* c is 0 */
- return x - (x * e - hxs);
- }
- e = x * (e - c) - c;
- e -= hxs;
- /* exp(x) ~ 2^k (x_reduced - e + 1) */
- if k == -1 {
- return 0.5 * (x - e) - 0.5;
- }
- if k == 1 {
- if x < -0.25 {
- return -2.0 * (e - (x + 0.5));
- }
- return 1.0 + 2.0 * (x - e);
- }
- ui = ((0x3ff + k) as u64) << 52; /* 2^k */
- let twopk = f64::from_bits(ui);
- if k < 0 || k > 56 {
- /* suffice to return exp(x)-1 */
- y = x - e + 1.0;
- if k == 1024 {
- y = y * 2.0 * f64::from_bits(0x7fe0000000000000);
- } else {
- y = y * twopk;
- }
- return y - 1.0;
- }
- ui = ((0x3ff - k) as u64) << 52; /* 2^-k */
- let uf = f64::from_bits(ui);
- if k < 20 {
- y = (x - e + (1.0 - uf)) * twopk;
- } else {
- y = (x - (e + uf) + 1.0) * twopk;
- }
- y
-}
-
-#[cfg(test)]
-mod tests {
- #[test]
- fn sanity_check() {
- assert_eq!(super::expm1(1.1), 2.0041660239464334);
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/expm1f.rs b/vendor/libm-0.1.4/src/math/expm1f.rs
deleted file mode 100644
index 9bb223448..000000000
--- a/vendor/libm-0.1.4/src/math/expm1f.rs
+++ /dev/null
@@ -1,135 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/s_expm1f.c */
-/*
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-const O_THRESHOLD: f32 = 8.8721679688e+01; /* 0x42b17180 */
-const LN2_HI: f32 = 6.9313812256e-01; /* 0x3f317180 */
-const LN2_LO: f32 = 9.0580006145e-06; /* 0x3717f7d1 */
-const INV_LN2: f32 = 1.4426950216e+00; /* 0x3fb8aa3b */
-/*
- * Domain [-0.34568, 0.34568], range ~[-6.694e-10, 6.696e-10]:
- * |6 / x * (1 + 2 * (1 / (exp(x) - 1) - 1 / x)) - q(x)| < 2**-30.04
- * Scaled coefficients: Qn_here = 2**n * Qn_for_q (see s_expm1.c):
- */
-const Q1: f32 = -3.3333212137e-2; /* -0x888868.0p-28 */
-const Q2: f32 = 1.5807170421e-3; /* 0xcf3010.0p-33 */
-
-/// Exponential, base *e*, of x-1 (f32)
-///
-/// Calculates the exponential of `x` and subtract 1, that is, *e* raised
-/// to the power `x` minus 1 (where *e* is the base of the natural
-/// system of logarithms, approximately 2.71828).
-/// The result is accurate even for small values of `x`,
-/// where using `exp(x)-1` would lose many significant digits.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn expm1f(mut x: f32) -> f32 {
- let x1p127 = f32::from_bits(0x7f000000); // 0x1p127f === 2 ^ 127
-
- let mut hx = x.to_bits();
- let sign = (hx >> 31) != 0;
- hx &= 0x7fffffff;
-
- /* filter out huge and non-finite argument */
- if hx >= 0x4195b844 {
- /* if |x|>=27*ln2 */
- if hx > 0x7f800000 {
- /* NaN */
- return x;
- }
- if sign {
- return -1.;
- }
- if x > O_THRESHOLD {
- x *= x1p127;
- return x;
- }
- }
-
- let k: i32;
- let hi: f32;
- let lo: f32;
- let mut c = 0f32;
- /* argument reduction */
- if hx > 0x3eb17218 {
- /* if |x| > 0.5 ln2 */
- if hx < 0x3F851592 {
- /* and |x| < 1.5 ln2 */
- if !sign {
- hi = x - LN2_HI;
- lo = LN2_LO;
- k = 1;
- } else {
- hi = x + LN2_HI;
- lo = -LN2_LO;
- k = -1;
- }
- } else {
- k = (INV_LN2 * x + (if sign { -0.5 } else { 0.5 })) as i32;
- let t = k as f32;
- hi = x - t * LN2_HI; /* t*ln2_hi is exact here */
- lo = t * LN2_LO;
- }
- x = hi - lo;
- c = (hi - x) - lo;
- } else if hx < 0x33000000 {
- /* when |x|<2**-25, return x */
- if hx < 0x00800000 {
- force_eval!(x * x);
- }
- return x;
- } else {
- k = 0;
- }
-
- /* x is now in primary range */
- let hfx = 0.5 * x;
- let hxs = x * hfx;
- let r1 = 1. + hxs * (Q1 + hxs * Q2);
- let t = 3. - r1 * hfx;
- let mut e = hxs * ((r1 - t) / (6. - x * t));
- if k == 0 {
- /* c is 0 */
- return x - (x * e - hxs);
- }
- e = x * (e - c) - c;
- e -= hxs;
- /* exp(x) ~ 2^k (x_reduced - e + 1) */
- if k == -1 {
- return 0.5 * (x - e) - 0.5;
- }
- if k == 1 {
- if x < -0.25 {
- return -2. * (e - (x + 0.5));
- }
- return 1. + 2. * (x - e);
- }
- let twopk = f32::from_bits(((0x7f + k) << 23) as u32); /* 2^k */
- if (k < 0) || (k > 56) {
- /* suffice to return exp(x)-1 */
- let mut y = x - e + 1.;
- if k == 128 {
- y = y * 2. * x1p127;
- } else {
- y = y * twopk;
- }
- return y - 1.;
- }
- let uf = f32::from_bits(((0x7f - k) << 23) as u32); /* 2^-k */
- if k < 23 {
- (x - e + (1. - uf)) * twopk
- } else {
- (x - (e + uf) + 1.) * twopk
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/expo2.rs b/vendor/libm-0.1.4/src/math/expo2.rs
deleted file mode 100644
index ae6cc8121..000000000
--- a/vendor/libm-0.1.4/src/math/expo2.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-use super::{combine_words, exp};
-
-/* exp(x)/2 for x >= log(DBL_MAX), slightly better than 0.5*exp(x/2)*exp(x/2) */
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub(crate) fn expo2(x: f64) -> f64 {
- /* k is such that k*ln2 has minimal relative error and x - kln2 > log(DBL_MIN) */
- const K: i32 = 2043;
- let kln2 = f64::from_bits(0x40962066151add8b);
-
- /* note that k is odd and scale*scale overflows */
- let scale = combine_words(((0x3ff + K / 2) as u32) << 20, 0);
- /* exp(x - k ln2) * 2**(k-1) */
- exp(x - kln2) * scale * scale
-}
diff --git a/vendor/libm-0.1.4/src/math/fabs.rs b/vendor/libm-0.1.4/src/math/fabs.rs
deleted file mode 100644
index 52a9adcbf..000000000
--- a/vendor/libm-0.1.4/src/math/fabs.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-use core::u64;
-
-/// Absolute value (magnitude) (f64)
-/// Calculates the absolute value (magnitude) of the argument `x`,
-/// by direct manipulation of the bit representation of `x`.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn fabs(x: f64) -> f64 {
- // On wasm32 we know that LLVM's intrinsic will compile to an optimized
- // `f64.abs` native instruction, so we can leverage this for both code size
- // and speed.
- llvm_intrinsically_optimized! {
- #[cfg(target_arch = "wasm32")] {
- return unsafe { ::core::intrinsics::fabsf64(x) }
- }
- }
- f64::from_bits(x.to_bits() & (u64::MAX / 2))
-}
diff --git a/vendor/libm-0.1.4/src/math/fabsf.rs b/vendor/libm-0.1.4/src/math/fabsf.rs
deleted file mode 100644
index 5942d983a..000000000
--- a/vendor/libm-0.1.4/src/math/fabsf.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-/// Absolute value (magnitude) (f32)
-/// Calculates the absolute value (magnitude) of the argument `x`,
-/// by direct manipulation of the bit representation of `x`.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn fabsf(x: f32) -> f32 {
- // On wasm32 we know that LLVM's intrinsic will compile to an optimized
- // `f32.abs` native instruction, so we can leverage this for both code size
- // and speed.
- llvm_intrinsically_optimized! {
- #[cfg(target_arch = "wasm32")] {
- return unsafe { ::core::intrinsics::fabsf32(x) }
- }
- }
- f32::from_bits(x.to_bits() & 0x7fffffff)
-}
diff --git a/vendor/libm-0.1.4/src/math/fdim.rs b/vendor/libm-0.1.4/src/math/fdim.rs
deleted file mode 100644
index 06edc9960..000000000
--- a/vendor/libm-0.1.4/src/math/fdim.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-use core::f64;
-
-/// Positive difference (f64)
-///
-/// Determines the positive difference between arguments, returning:
-/// * x - y if x > y, or
-/// * +0 if x <= y, or
-/// * NAN if either argument is NAN.
-///
-/// A range error may occur.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn fdim(x: f64, y: f64) -> f64 {
- if x.is_nan() {
- x
- } else if y.is_nan() {
- y
- } else if x > y {
- x - y
- } else {
- 0.0
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/fdimf.rs b/vendor/libm-0.1.4/src/math/fdimf.rs
deleted file mode 100644
index f1ad5896b..000000000
--- a/vendor/libm-0.1.4/src/math/fdimf.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-use core::f32;
-
-/// Positive difference (f32)
-///
-/// Determines the positive difference between arguments, returning:
-/// * x - y if x > y, or
-/// * +0 if x <= y, or
-/// * NAN if either argument is NAN.
-///
-/// A range error may occur.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn fdimf(x: f32, y: f32) -> f32 {
- if x.is_nan() {
- x
- } else if y.is_nan() {
- y
- } else if x > y {
- x - y
- } else {
- 0.0
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/fenv.rs b/vendor/libm-0.1.4/src/math/fenv.rs
deleted file mode 100644
index 63bb20368..000000000
--- a/vendor/libm-0.1.4/src/math/fenv.rs
+++ /dev/null
@@ -1,33 +0,0 @@
-// src: musl/src/fenv/fenv.c
-/* Dummy functions for archs lacking fenv implementation */
-
-pub const FE_UNDERFLOW: i32 = 0;
-pub const FE_INEXACT: i32 = 0;
-
-pub const FE_TONEAREST: i32 = 0;
-pub const FE_TOWARDZERO: i32 = 0;
-
-#[inline]
-pub fn feclearexcept(_mask: i32) -> i32 {
- 0
-}
-
-#[inline]
-pub fn feraiseexcept(_mask: i32) -> i32 {
- 0
-}
-
-#[inline]
-pub fn fetestexcept(_mask: i32) -> i32 {
- 0
-}
-
-#[inline]
-pub fn fegetround() -> i32 {
- FE_TONEAREST
-}
-
-#[inline]
-pub fn fesetround(_r: i32) -> i32 {
- 0
-}
diff --git a/vendor/libm-0.1.4/src/math/floor.rs b/vendor/libm-0.1.4/src/math/floor.rs
deleted file mode 100644
index f6068c697..000000000
--- a/vendor/libm-0.1.4/src/math/floor.rs
+++ /dev/null
@@ -1,41 +0,0 @@
-use core::f64;
-
-const TOINT: f64 = 1. / f64::EPSILON;
-
-/// Floor (f64)
-///
-/// Finds the nearest integer less than or equal to `x`.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn floor(x: f64) -> f64 {
- // On wasm32 we know that LLVM's intrinsic will compile to an optimized
- // `f64.floor` native instruction, so we can leverage this for both code size
- // and speed.
- llvm_intrinsically_optimized! {
- #[cfg(target_arch = "wasm32")] {
- return unsafe { ::core::intrinsics::floorf64(x) }
- }
- }
- let ui = x.to_bits();
- let e = ((ui >> 52) & 0x7ff) as i32;
-
- if (e >= 0x3ff + 52) || (x == 0.) {
- return x;
- }
- /* y = int(x) - x, where int(x) is an integer neighbor of x */
- let y = if (ui >> 63) != 0 {
- x - TOINT + TOINT - x
- } else {
- x + TOINT - TOINT - x
- };
- /* special case because of non-nearest rounding modes */
- if e < 0x3ff {
- force_eval!(y);
- return if (ui >> 63) != 0 { -1. } else { 0. };
- }
- if y > 0. {
- x + y - 1.
- } else {
- x + y
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/floorf.rs b/vendor/libm-0.1.4/src/math/floorf.rs
deleted file mode 100644
index ae605e191..000000000
--- a/vendor/libm-0.1.4/src/math/floorf.rs
+++ /dev/null
@@ -1,50 +0,0 @@
-use core::f32;
-
-/// Floor (f64)
-///
-/// Finds the nearest integer less than or equal to `x`.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn floorf(x: f32) -> f32 {
- // On wasm32 we know that LLVM's intrinsic will compile to an optimized
- // `f32.floor` native instruction, so we can leverage this for both code size
- // and speed.
- llvm_intrinsically_optimized! {
- #[cfg(target_arch = "wasm32")] {
- return unsafe { ::core::intrinsics::floorf32(x) }
- }
- }
- let mut ui = x.to_bits();
- let e = (((ui >> 23) as i32) & 0xff) - 0x7f;
-
- if e >= 23 {
- return x;
- }
- if e >= 0 {
- let m: u32 = 0x007fffff >> e;
- if (ui & m) == 0 {
- return x;
- }
- force_eval!(x + f32::from_bits(0x7b800000));
- if ui >> 31 != 0 {
- ui += m;
- }
- ui &= !m;
- } else {
- force_eval!(x + f32::from_bits(0x7b800000));
- if ui >> 31 == 0 {
- ui = 0;
- } else if ui << 1 != 0 {
- return -1.0;
- }
- }
- f32::from_bits(ui)
-}
-
-#[cfg(test)]
-mod tests {
- #[test]
- fn no_overflow() {
- assert_eq!(super::floorf(0.5), 0.0);
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/fma.rs b/vendor/libm-0.1.4/src/math/fma.rs
deleted file mode 100644
index 07d90f8b7..000000000
--- a/vendor/libm-0.1.4/src/math/fma.rs
+++ /dev/null
@@ -1,207 +0,0 @@
-use core::{f32, f64};
-
-use super::scalbn;
-
-const ZEROINFNAN: i32 = 0x7ff - 0x3ff - 52 - 1;
-
-struct Num {
- m: u64,
- e: i32,
- sign: i32,
-}
-
-#[inline]
-fn normalize(x: f64) -> Num {
- let x1p63: f64 = f64::from_bits(0x43e0000000000000); // 0x1p63 === 2 ^ 63
-
- let mut ix: u64 = x.to_bits();
- let mut e: i32 = (ix >> 52) as i32;
- let sign: i32 = e & 0x800;
- e &= 0x7ff;
- if e == 0 {
- ix = (x * x1p63).to_bits();
- e = (ix >> 52) as i32 & 0x7ff;
- e = if e != 0 { e - 63 } else { 0x800 };
- }
- ix &= (1 << 52) - 1;
- ix |= 1 << 52;
- ix <<= 1;
- e -= 0x3ff + 52 + 1;
- Num { m: ix, e, sign }
-}
-
-#[inline]
-fn mul(x: u64, y: u64) -> (u64, u64) {
- let t1: u64;
- let t2: u64;
- let t3: u64;
- let xlo: u64 = x as u32 as u64;
- let xhi: u64 = x >> 32;
- let ylo: u64 = y as u32 as u64;
- let yhi: u64 = y >> 32;
-
- t1 = xlo * ylo;
- t2 = xlo * yhi + xhi * ylo;
- t3 = xhi * yhi;
- let lo = t1.wrapping_add(t2 << 32);
- let hi = t3 + (t2 >> 32) + (t1 > lo) as u64;
- (hi, lo)
-}
-
-/// Floating multiply add (f64)
-///
-/// Computes `(x*y)+z`, rounded as one ternary operation:
-/// Computes the value (as if) to infinite precision and rounds once to the result format,
-/// according to the rounding mode characterized by the value of FLT_ROUNDS.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn fma(x: f64, y: f64, z: f64) -> f64 {
- let x1p63: f64 = f64::from_bits(0x43e0000000000000); // 0x1p63 === 2 ^ 63
- let x0_ffffff8p_63 = f64::from_bits(0x3bfffffff0000000); // 0x0.ffffff8p-63
-
- /* normalize so top 10bits and last bit are 0 */
- let nx = normalize(x);
- let ny = normalize(y);
- let nz = normalize(z);
-
- if nx.e >= ZEROINFNAN || ny.e >= ZEROINFNAN {
- return x * y + z;
- }
- if nz.e >= ZEROINFNAN {
- if nz.e > ZEROINFNAN {
- /* z==0 */
- return x * y + z;
- }
- return z;
- }
-
- /* mul: r = x*y */
- let zhi: u64;
- let zlo: u64;
- let (mut rhi, mut rlo) = mul(nx.m, ny.m);
- /* either top 20 or 21 bits of rhi and last 2 bits of rlo are 0 */
-
- /* align exponents */
- let mut e: i32 = nx.e + ny.e;
- let mut d: i32 = nz.e - e;
- /* shift bits z<<=kz, r>>=kr, so kz+kr == d, set e = e+kr (== ez-kz) */
- if d > 0 {
- if d < 64 {
- zlo = nz.m << d;
- zhi = nz.m >> (64 - d);
- } else {
- zlo = 0;
- zhi = nz.m;
- e = nz.e - 64;
- d -= 64;
- if d == 0 {
- } else if d < 64 {
- rlo = rhi << (64 - d) | rlo >> d | ((rlo << (64 - d)) != 0) as u64;
- rhi = rhi >> d;
- } else {
- rlo = 1;
- rhi = 0;
- }
- }
- } else {
- zhi = 0;
- d = -d;
- if d == 0 {
- zlo = nz.m;
- } else if d < 64 {
- zlo = nz.m >> d | ((nz.m << (64 - d)) != 0) as u64;
- } else {
- zlo = 1;
- }
- }
-
- /* add */
- let mut sign: i32 = nx.sign ^ ny.sign;
- let samesign: bool = (sign ^ nz.sign) == 0;
- let mut nonzero: i32 = 1;
- if samesign {
- /* r += z */
- rlo = rlo.wrapping_add(zlo);
- rhi += zhi + (rlo < zlo) as u64;
- } else {
- /* r -= z */
- let t = rlo;
- rlo -= zlo;
- rhi = rhi - zhi - (t < rlo) as u64;
- if (rhi >> 63) != 0 {
- rlo = (-(rlo as i64)) as u64;
- rhi = (-(rhi as i64)) as u64 - (rlo != 0) as u64;
- sign = (sign == 0) as i32;
- }
- nonzero = (rhi != 0) as i32;
- }
-
- /* set rhi to top 63bit of the result (last bit is sticky) */
- if nonzero != 0 {
- e += 64;
- d = rhi.leading_zeros() as i32 - 1;
- /* note: d > 0 */
- rhi = rhi << d | rlo >> (64 - d) | ((rlo << d) != 0) as u64;
- } else if rlo != 0 {
- d = rlo.leading_zeros() as i32 - 1;
- if d < 0 {
- rhi = rlo >> 1 | (rlo & 1);
- } else {
- rhi = rlo << d;
- }
- } else {
- /* exact +-0 */
- return x * y + z;
- }
- e -= d;
-
- /* convert to double */
- let mut i: i64 = rhi as i64; /* i is in [1<<62,(1<<63)-1] */
- if sign != 0 {
- i = -i;
- }
- let mut r: f64 = i as f64; /* |r| is in [0x1p62,0x1p63] */
-
- if e < -1022 - 62 {
- /* result is subnormal before rounding */
- if e == -1022 - 63 {
- let mut c: f64 = x1p63;
- if sign != 0 {
- c = -c;
- }
- if r == c {
- /* min normal after rounding, underflow depends
- on arch behaviour which can be imitated by
- a double to float conversion */
- let fltmin: f32 = (x0_ffffff8p_63 * f32::MIN_POSITIVE as f64 * r) as f32;
- return f64::MIN_POSITIVE / f32::MIN_POSITIVE as f64 * fltmin as f64;
- }
- /* one bit is lost when scaled, add another top bit to
- only round once at conversion if it is inexact */
- if (rhi << 53) != 0 {
- i = (rhi >> 1 | (rhi & 1) | 1 << 62) as i64;
- if sign != 0 {
- i = -i;
- }
- r = i as f64;
- r = 2. * r - c; /* remove top bit */
-
- /* raise underflow portably, such that it
- cannot be optimized away */
- {
- let tiny: f64 = f64::MIN_POSITIVE / f32::MIN_POSITIVE as f64 * r;
- r += (tiny * tiny) * (r - r);
- }
- }
- } else {
- /* only round once when scaled */
- d = 10;
- i = ((rhi >> d | ((rhi << (64 - d)) != 0) as u64) << d) as i64;
- if sign != 0 {
- i = -i;
- }
- r = i as f64;
- }
- }
- scalbn(r, e)
-}
diff --git a/vendor/libm-0.1.4/src/math/fmaf.rs b/vendor/libm-0.1.4/src/math/fmaf.rs
deleted file mode 100644
index e77e0fa4a..000000000
--- a/vendor/libm-0.1.4/src/math/fmaf.rs
+++ /dev/null
@@ -1,107 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/s_fmaf.c */
-/*-
- * Copyright (c) 2005-2011 David Schultz <das@FreeBSD.ORG>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-use core::f32;
-use core::ptr::read_volatile;
-
-use super::fenv::{
- feclearexcept, fegetround, feraiseexcept, fesetround, fetestexcept, FE_INEXACT, FE_TONEAREST,
- FE_TOWARDZERO, FE_UNDERFLOW,
-};
-
-/*
- * Fused multiply-add: Compute x * y + z with a single rounding error.
- *
- * A double has more than twice as much precision than a float, so
- * direct double-precision arithmetic suffices, except where double
- * rounding occurs.
- */
-
-/// Floating multiply add (f32)
-///
-/// Computes `(x*y)+z`, rounded as one ternary operation:
-/// Computes the value (as if) to infinite precision and rounds once to the result format,
-/// according to the rounding mode characterized by the value of FLT_ROUNDS.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn fmaf(x: f32, y: f32, mut z: f32) -> f32 {
- let xy: f64;
- let mut result: f64;
- let mut ui: u64;
- let e: i32;
-
- xy = x as f64 * y as f64;
- result = xy + z as f64;
- ui = result.to_bits();
- e = (ui >> 52) as i32 & 0x7ff;
- /* Common case: The double precision result is fine. */
- if (
- /* not a halfway case */
- ui & 0x1fffffff) != 0x10000000 ||
- /* NaN */
- e == 0x7ff ||
- /* exact */
- (result - xy == z as f64 && result - z as f64 == xy) ||
- /* not round-to-nearest */
- fegetround() != FE_TONEAREST
- {
- /*
- underflow may not be raised correctly, example:
- fmaf(0x1p-120f, 0x1p-120f, 0x1p-149f)
- */
- if e < 0x3ff - 126 && e >= 0x3ff - 149 && fetestexcept(FE_INEXACT) != 0 {
- feclearexcept(FE_INEXACT);
- // prevent `xy + vz` from being CSE'd with `xy + z` above
- let vz: f32 = unsafe { read_volatile(&z) };
- result = xy + vz as f64;
- if fetestexcept(FE_INEXACT) != 0 {
- feraiseexcept(FE_UNDERFLOW);
- } else {
- feraiseexcept(FE_INEXACT);
- }
- }
- z = result as f32;
- return z;
- }
-
- /*
- * If result is inexact, and exactly halfway between two float values,
- * we need to adjust the low-order bit in the direction of the error.
- */
- fesetround(FE_TOWARDZERO);
- // prevent `vxy + z` from being CSE'd with `xy + z` above
- let vxy: f64 = unsafe { read_volatile(&xy) };
- let mut adjusted_result: f64 = vxy + z as f64;
- fesetround(FE_TONEAREST);
- if result == adjusted_result {
- ui = adjusted_result.to_bits();
- ui += 1;
- adjusted_result = f64::from_bits(ui);
- }
- z = adjusted_result as f32;
- z
-}
diff --git a/vendor/libm-0.1.4/src/math/fmax.rs b/vendor/libm-0.1.4/src/math/fmax.rs
deleted file mode 100644
index 22016d11c..000000000
--- a/vendor/libm-0.1.4/src/math/fmax.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn fmax(x: f64, y: f64) -> f64 {
- // IEEE754 says: maxNum(x, y) is the canonicalized number y if x < y, x if y < x, the
- // canonicalized number if one operand is a number and the other a quiet NaN. Otherwise it
- // is either x or y, canonicalized (this means results might differ among implementations).
- // When either x or y is a signalingNaN, then the result is according to 6.2.
- //
- // Since we do not support sNaN in Rust yet, we do not need to handle them.
- // FIXME(nagisa): due to https://bugs.llvm.org/show_bug.cgi?id=33303 we canonicalize by
- // multiplying by 1.0. Should switch to the `canonicalize` when it works.
- (if x.is_nan() || x < y { y } else { x }) * 1.0
-}
diff --git a/vendor/libm-0.1.4/src/math/fmaxf.rs b/vendor/libm-0.1.4/src/math/fmaxf.rs
deleted file mode 100644
index a883fdaef..000000000
--- a/vendor/libm-0.1.4/src/math/fmaxf.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn fmaxf(x: f32, y: f32) -> f32 {
- // IEEE754 says: maxNum(x, y) is the canonicalized number y if x < y, x if y < x, the
- // canonicalized number if one operand is a number and the other a quiet NaN. Otherwise it
- // is either x or y, canonicalized (this means results might differ among implementations).
- // When either x or y is a signalingNaN, then the result is according to 6.2.
- //
- // Since we do not support sNaN in Rust yet, we do not need to handle them.
- // FIXME(nagisa): due to https://bugs.llvm.org/show_bug.cgi?id=33303 we canonicalize by
- // multiplying by 1.0. Should switch to the `canonicalize` when it works.
- (if x.is_nan() || x < y { y } else { x }) * 1.0
-}
diff --git a/vendor/libm-0.1.4/src/math/fmin.rs b/vendor/libm-0.1.4/src/math/fmin.rs
deleted file mode 100644
index d1ccc3a46..000000000
--- a/vendor/libm-0.1.4/src/math/fmin.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn fmin(x: f64, y: f64) -> f64 {
- // IEEE754 says: minNum(x, y) is the canonicalized number x if x < y, y if y < x, the
- // canonicalized number if one operand is a number and the other a quiet NaN. Otherwise it
- // is either x or y, canonicalized (this means results might differ among implementations).
- // When either x or y is a signalingNaN, then the result is according to 6.2.
- //
- // Since we do not support sNaN in Rust yet, we do not need to handle them.
- // FIXME(nagisa): due to https://bugs.llvm.org/show_bug.cgi?id=33303 we canonicalize by
- // multiplying by 1.0. Should switch to the `canonicalize` when it works.
- (if y.is_nan() || x < y { x } else { y }) * 1.0
-}
diff --git a/vendor/libm-0.1.4/src/math/fminf.rs b/vendor/libm-0.1.4/src/math/fminf.rs
deleted file mode 100644
index 43ec97cb5..000000000
--- a/vendor/libm-0.1.4/src/math/fminf.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn fminf(x: f32, y: f32) -> f32 {
- // IEEE754 says: minNum(x, y) is the canonicalized number x if x < y, y if y < x, the
- // canonicalized number if one operand is a number and the other a quiet NaN. Otherwise it
- // is either x or y, canonicalized (this means results might differ among implementations).
- // When either x or y is a signalingNaN, then the result is according to 6.2.
- //
- // Since we do not support sNaN in Rust yet, we do not need to handle them.
- // FIXME(nagisa): due to https://bugs.llvm.org/show_bug.cgi?id=33303 we canonicalize by
- // multiplying by 1.0. Should switch to the `canonicalize` when it works.
- (if y.is_nan() || x < y { x } else { y }) * 1.0
-}
diff --git a/vendor/libm-0.1.4/src/math/fmod.rs b/vendor/libm-0.1.4/src/math/fmod.rs
deleted file mode 100644
index 2cdd8a9ba..000000000
--- a/vendor/libm-0.1.4/src/math/fmod.rs
+++ /dev/null
@@ -1,81 +0,0 @@
-use core::u64;
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn fmod(x: f64, y: f64) -> f64 {
- let mut uxi = x.to_bits();
- let mut uyi = y.to_bits();
- let mut ex = (uxi >> 52 & 0x7ff) as i64;
- let mut ey = (uyi >> 52 & 0x7ff) as i64;
- let sx = uxi >> 63;
- let mut i;
-
- if uyi << 1 == 0 || y.is_nan() || ex == 0x7ff {
- return (x * y) / (x * y);
- }
- if uxi << 1 <= uyi << 1 {
- if uxi << 1 == uyi << 1 {
- return 0.0 * x;
- }
- return x;
- }
-
- /* normalize x and y */
- if ex == 0 {
- i = uxi << 12;
- while i >> 63 == 0 {
- ex -= 1;
- i <<= 1;
- }
- uxi <<= -ex + 1;
- } else {
- uxi &= u64::MAX >> 12;
- uxi |= 1 << 52;
- }
- if ey == 0 {
- i = uyi << 12;
- while i >> 63 == 0 {
- ey -= 1;
- i <<= 1;
- }
- uyi <<= -ey + 1;
- } else {
- uyi &= u64::MAX >> 12;
- uyi |= 1 << 52;
- }
-
- /* x mod y */
- while ex > ey {
- i = uxi.wrapping_sub(uyi);
- if i >> 63 == 0 {
- if i == 0 {
- return 0.0 * x;
- }
- uxi = i;
- }
- uxi <<= 1;
- ex -= 1;
- }
- i = uxi.wrapping_sub(uyi);
- if i >> 63 == 0 {
- if i == 0 {
- return 0.0 * x;
- }
- uxi = i;
- }
- while uxi >> 52 == 0 {
- uxi <<= 1;
- ex -= 1;
- }
-
- /* scale result */
- if ex > 0 {
- uxi -= 1 << 52;
- uxi |= (ex as u64) << 52;
- } else {
- uxi >>= -ex + 1;
- }
- uxi |= (sx as u64) << 63;
-
- f64::from_bits(uxi)
-}
diff --git a/vendor/libm-0.1.4/src/math/fmodf.rs b/vendor/libm-0.1.4/src/math/fmodf.rs
deleted file mode 100644
index 3e6779a93..000000000
--- a/vendor/libm-0.1.4/src/math/fmodf.rs
+++ /dev/null
@@ -1,90 +0,0 @@
-use core::f32;
-use core::u32;
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn fmodf(x: f32, y: f32) -> f32 {
- let mut uxi = x.to_bits();
- let mut uyi = y.to_bits();
- let mut ex = (uxi >> 23 & 0xff) as i32;
- let mut ey = (uyi >> 23 & 0xff) as i32;
- let sx = uxi & 0x80000000;
- let mut i;
-
- if uyi << 1 == 0 || y.is_nan() || ex == 0xff {
- return (x * y) / (x * y);
- }
-
- if uxi << 1 <= uyi << 1 {
- if uxi << 1 == uyi << 1 {
- return 0.0 * x;
- }
-
- return x;
- }
-
- /* normalize x and y */
- if ex == 0 {
- i = uxi << 9;
- while i >> 31 == 0 {
- ex -= 1;
- i <<= 1;
- }
-
- uxi <<= -ex + 1;
- } else {
- uxi &= u32::MAX >> 9;
- uxi |= 1 << 23;
- }
-
- if ey == 0 {
- i = uyi << 9;
- while i >> 31 == 0 {
- ey -= 1;
- i <<= 1;
- }
-
- uyi <<= -ey + 1;
- } else {
- uyi &= u32::MAX >> 9;
- uyi |= 1 << 23;
- }
-
- /* x mod y */
- while ex > ey {
- i = uxi.wrapping_sub(uyi);
- if i >> 31 == 0 {
- if i == 0 {
- return 0.0 * x;
- }
- uxi = i;
- }
- uxi <<= 1;
-
- ex -= 1;
- }
-
- i = uxi.wrapping_sub(uyi);
- if i >> 31 == 0 {
- if i == 0 {
- return 0.0 * x;
- }
- uxi = i;
- }
-
- while uxi >> 23 == 0 {
- uxi <<= 1;
- ex -= 1;
- }
-
- /* scale result up */
- if ex > 0 {
- uxi -= 1 << 23;
- uxi |= (ex as u32) << 23;
- } else {
- uxi >>= -ex + 1;
- }
- uxi |= sx;
-
- f32::from_bits(uxi)
-}
diff --git a/vendor/libm-0.1.4/src/math/frexp.rs b/vendor/libm-0.1.4/src/math/frexp.rs
deleted file mode 100644
index badad786a..000000000
--- a/vendor/libm-0.1.4/src/math/frexp.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-pub fn frexp(x: f64) -> (f64, i32) {
- let mut y = x.to_bits();
- let ee = ((y >> 52) & 0x7ff) as i32;
-
- if ee == 0 {
- if x != 0.0 {
- let x1p64 = f64::from_bits(0x43f0000000000000);
- let (x, e) = frexp(x * x1p64);
- return (x, e - 64);
- }
- return (x, 0);
- } else if ee == 0x7ff {
- return (x, 0);
- }
-
- let e = ee - 0x3fe;
- y &= 0x800fffffffffffff;
- y |= 0x3fe0000000000000;
- return (f64::from_bits(y), e);
-}
diff --git a/vendor/libm-0.1.4/src/math/frexpf.rs b/vendor/libm-0.1.4/src/math/frexpf.rs
deleted file mode 100644
index 2919c0ab0..000000000
--- a/vendor/libm-0.1.4/src/math/frexpf.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-pub fn frexpf(x: f32) -> (f32, i32) {
- let mut y = x.to_bits();
- let ee: i32 = ((y >> 23) & 0xff) as i32;
-
- if ee == 0 {
- if x != 0.0 {
- let x1p64 = f32::from_bits(0x5f800000);
- let (x, e) = frexpf(x * x1p64);
- return (x, e - 64);
- } else {
- return (x, 0);
- }
- } else if ee == 0xff {
- return (x, 0);
- }
-
- let e = ee - 0x7e;
- y &= 0x807fffff;
- y |= 0x3f000000;
- (f32::from_bits(y), e)
-}
diff --git a/vendor/libm-0.1.4/src/math/hypot.rs b/vendor/libm-0.1.4/src/math/hypot.rs
deleted file mode 100644
index e53baf539..000000000
--- a/vendor/libm-0.1.4/src/math/hypot.rs
+++ /dev/null
@@ -1,76 +0,0 @@
-use core::f64;
-
-use super::sqrt;
-
-const SPLIT: f64 = 134217728. + 1.; // 0x1p27 + 1 === (2 ^ 27) + 1
-
-#[inline]
-fn sq(x: f64) -> (f64, f64) {
- let xh: f64;
- let xl: f64;
- let xc: f64;
-
- xc = x * SPLIT;
- xh = x - xc + xc;
- xl = x - xh;
- let hi = x * x;
- let lo = xh * xh - hi + 2. * xh * xl + xl * xl;
- (hi, lo)
-}
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn hypot(mut x: f64, mut y: f64) -> f64 {
- let x1p700 = f64::from_bits(0x6bb0000000000000); // 0x1p700 === 2 ^ 700
- let x1p_700 = f64::from_bits(0x1430000000000000); // 0x1p-700 === 2 ^ -700
-
- let mut uxi = x.to_bits();
- let mut uyi = y.to_bits();
- let uti;
- let ex: i64;
- let ey: i64;
- let mut z: f64;
-
- /* arrange |x| >= |y| */
- uxi &= -1i64 as u64 >> 1;
- uyi &= -1i64 as u64 >> 1;
- if uxi < uyi {
- uti = uxi;
- uxi = uyi;
- uyi = uti;
- }
-
- /* special cases */
- ex = (uxi >> 52) as i64;
- ey = (uyi >> 52) as i64;
- x = f64::from_bits(uxi);
- y = f64::from_bits(uyi);
- /* note: hypot(inf,nan) == inf */
- if ey == 0x7ff {
- return y;
- }
- if ex == 0x7ff || uyi == 0 {
- return x;
- }
- /* note: hypot(x,y) ~= x + y*y/x/2 with inexact for small y/x */
- /* 64 difference is enough for ld80 double_t */
- if ex - ey > 64 {
- return x + y;
- }
-
- /* precise sqrt argument in nearest rounding mode without overflow */
- /* xh*xh must not overflow and xl*xl must not underflow in sq */
- z = 1.;
- if ex > 0x3ff + 510 {
- z = x1p700;
- x *= x1p_700;
- y *= x1p_700;
- } else if ey < 0x3ff - 450 {
- z = x1p_700;
- x *= x1p700;
- y *= x1p700;
- }
- let (hx, lx) = sq(x);
- let (hy, ly) = sq(y);
- z * sqrt(ly + lx + hy + hx)
-}
diff --git a/vendor/libm-0.1.4/src/math/hypotf.rs b/vendor/libm-0.1.4/src/math/hypotf.rs
deleted file mode 100644
index 4636b8f1d..000000000
--- a/vendor/libm-0.1.4/src/math/hypotf.rs
+++ /dev/null
@@ -1,44 +0,0 @@
-use core::f32;
-
-use super::sqrtf;
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn hypotf(mut x: f32, mut y: f32) -> f32 {
- let x1p90 = f32::from_bits(0x6c800000); // 0x1p90f === 2 ^ 90
- let x1p_90 = f32::from_bits(0x12800000); // 0x1p-90f === 2 ^ -90
-
- let mut uxi = x.to_bits();
- let mut uyi = y.to_bits();
- let uti;
- let mut z: f32;
-
- uxi &= -1i32 as u32 >> 1;
- uyi &= -1i32 as u32 >> 1;
- if uxi < uyi {
- uti = uxi;
- uxi = uyi;
- uyi = uti;
- }
-
- x = f32::from_bits(uxi);
- y = f32::from_bits(uyi);
- if uyi == 0xff << 23 {
- return y;
- }
- if uxi >= 0xff << 23 || uyi == 0 || uxi - uyi >= 25 << 23 {
- return x + y;
- }
-
- z = 1.;
- if uxi >= (0x7f + 60) << 23 {
- z = x1p90;
- x *= x1p_90;
- y *= x1p_90;
- } else if uyi < (0x7f - 60) << 23 {
- z = x1p_90;
- x *= x1p90;
- y *= x1p90;
- }
- z * sqrtf((x as f64 * x as f64 + y as f64 * y as f64) as f32)
-}
diff --git a/vendor/libm-0.1.4/src/math/ilogb.rs b/vendor/libm-0.1.4/src/math/ilogb.rs
deleted file mode 100644
index 0a380b7ef..000000000
--- a/vendor/libm-0.1.4/src/math/ilogb.rs
+++ /dev/null
@@ -1,31 +0,0 @@
-const FP_ILOGBNAN: i32 = -1 - 0x7fffffff;
-const FP_ILOGB0: i32 = FP_ILOGBNAN;
-
-pub fn ilogb(x: f64) -> i32 {
- let mut i: u64 = x.to_bits();
- let e = ((i >> 52) & 0x7ff) as i32;
-
- if e == 0 {
- i <<= 12;
- if i == 0 {
- force_eval!(0.0 / 0.0);
- return FP_ILOGB0;
- }
- /* subnormal x */
- let mut e = -0x3ff;
- while (i >> 63) == 0 {
- e -= 1;
- i <<= 1;
- }
- e
- } else if e == 0x7ff {
- force_eval!(0.0 / 0.0);
- if (i << 12) != 0 {
- FP_ILOGBNAN
- } else {
- i32::max_value()
- }
- } else {
- e - 0x3ff
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/ilogbf.rs b/vendor/libm-0.1.4/src/math/ilogbf.rs
deleted file mode 100644
index b384fa4b2..000000000
--- a/vendor/libm-0.1.4/src/math/ilogbf.rs
+++ /dev/null
@@ -1,31 +0,0 @@
-const FP_ILOGBNAN: i32 = -1 - 0x7fffffff;
-const FP_ILOGB0: i32 = FP_ILOGBNAN;
-
-pub fn ilogbf(x: f32) -> i32 {
- let mut i = x.to_bits();
- let e = ((i >> 23) & 0xff) as i32;
-
- if e == 0 {
- i <<= 9;
- if i == 0 {
- force_eval!(0.0 / 0.0);
- return FP_ILOGB0;
- }
- /* subnormal x */
- let mut e = -0x7f;
- while (i >> 31) == 0 {
- e -= 1;
- i <<= 1;
- }
- e
- } else if e == 0xff {
- force_eval!(0.0 / 0.0);
- if (i << 9) != 0 {
- FP_ILOGBNAN
- } else {
- i32::max_value()
- }
- } else {
- e - 0x7f
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/j0.rs b/vendor/libm-0.1.4/src/math/j0.rs
deleted file mode 100644
index c4258ccca..000000000
--- a/vendor/libm-0.1.4/src/math/j0.rs
+++ /dev/null
@@ -1,422 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_j0.c */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunSoft, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-/* j0(x), y0(x)
- * Bessel function of the first and second kinds of order zero.
- * Method -- j0(x):
- * 1. For tiny x, we use j0(x) = 1 - x^2/4 + x^4/64 - ...
- * 2. Reduce x to |x| since j0(x)=j0(-x), and
- * for x in (0,2)
- * j0(x) = 1-z/4+ z^2*R0/S0, where z = x*x;
- * (precision: |j0-1+z/4-z^2R0/S0 |<2**-63.67 )
- * for x in (2,inf)
- * j0(x) = sqrt(2/(pi*x))*(p0(x)*cos(x0)-q0(x)*sin(x0))
- * where x0 = x-pi/4. It is better to compute sin(x0),cos(x0)
- * as follow:
- * cos(x0) = cos(x)cos(pi/4)+sin(x)sin(pi/4)
- * = 1/sqrt(2) * (cos(x) + sin(x))
- * sin(x0) = sin(x)cos(pi/4)-cos(x)sin(pi/4)
- * = 1/sqrt(2) * (sin(x) - cos(x))
- * (To avoid cancellation, use
- * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
- * to compute the worse one.)
- *
- * 3 Special cases
- * j0(nan)= nan
- * j0(0) = 1
- * j0(inf) = 0
- *
- * Method -- y0(x):
- * 1. For x<2.
- * Since
- * y0(x) = 2/pi*(j0(x)*(ln(x/2)+Euler) + x^2/4 - ...)
- * therefore y0(x)-2/pi*j0(x)*ln(x) is an even function.
- * We use the following function to approximate y0,
- * y0(x) = U(z)/V(z) + (2/pi)*(j0(x)*ln(x)), z= x^2
- * where
- * U(z) = u00 + u01*z + ... + u06*z^6
- * V(z) = 1 + v01*z + ... + v04*z^4
- * with absolute approximation error bounded by 2**-72.
- * Note: For tiny x, U/V = u0 and j0(x)~1, hence
- * y0(tiny) = u0 + (2/pi)*ln(tiny), (choose tiny<2**-27)
- * 2. For x>=2.
- * y0(x) = sqrt(2/(pi*x))*(p0(x)*cos(x0)+q0(x)*sin(x0))
- * where x0 = x-pi/4. It is better to compute sin(x0),cos(x0)
- * by the method mentioned above.
- * 3. Special cases: y0(0)=-inf, y0(x<0)=NaN, y0(inf)=0.
- */
-
-use super::{cos, fabs, get_high_word, get_low_word, log, sin, sqrt};
-const INVSQRTPI: f64 = 5.64189583547756279280e-01; /* 0x3FE20DD7, 0x50429B6D */
-const TPI: f64 = 6.36619772367581382433e-01; /* 0x3FE45F30, 0x6DC9C883 */
-
-/* common method when |x|>=2 */
-fn common(ix: u32, x: f64, y0: bool) -> f64 {
- let s: f64;
- let mut c: f64;
- let mut ss: f64;
- let mut cc: f64;
- let z: f64;
-
- /*
- * j0(x) = sqrt(2/(pi*x))*(p0(x)*cos(x-pi/4)-q0(x)*sin(x-pi/4))
- * y0(x) = sqrt(2/(pi*x))*(p0(x)*sin(x-pi/4)+q0(x)*cos(x-pi/4))
- *
- * sin(x-pi/4) = (sin(x) - cos(x))/sqrt(2)
- * cos(x-pi/4) = (sin(x) + cos(x))/sqrt(2)
- * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
- */
- s = sin(x);
- c = cos(x);
- if y0 {
- c = -c;
- }
- cc = s + c;
- /* avoid overflow in 2*x, big ulp error when x>=0x1p1023 */
- if ix < 0x7fe00000 {
- ss = s - c;
- z = -cos(2.0 * x);
- if s * c < 0.0 {
- cc = z / ss;
- } else {
- ss = z / cc;
- }
- if ix < 0x48000000 {
- if y0 {
- ss = -ss;
- }
- cc = pzero(x) * cc - qzero(x) * ss;
- }
- }
- return INVSQRTPI * cc / sqrt(x);
-}
-
-/* R0/S0 on [0, 2.00] */
-const R02: f64 = 1.56249999999999947958e-02; /* 0x3F8FFFFF, 0xFFFFFFFD */
-const R03: f64 = -1.89979294238854721751e-04; /* 0xBF28E6A5, 0xB61AC6E9 */
-const R04: f64 = 1.82954049532700665670e-06; /* 0x3EBEB1D1, 0x0C503919 */
-const R05: f64 = -4.61832688532103189199e-09; /* 0xBE33D5E7, 0x73D63FCE */
-const S01: f64 = 1.56191029464890010492e-02; /* 0x3F8FFCE8, 0x82C8C2A4 */
-const S02: f64 = 1.16926784663337450260e-04; /* 0x3F1EA6D2, 0xDD57DBF4 */
-const S03: f64 = 5.13546550207318111446e-07; /* 0x3EA13B54, 0xCE84D5A9 */
-const S04: f64 = 1.16614003333790000205e-09; /* 0x3E1408BC, 0xF4745D8F */
-
-pub fn j0(mut x: f64) -> f64 {
- let z: f64;
- let r: f64;
- let s: f64;
- let mut ix: u32;
-
- ix = get_high_word(x);
- ix &= 0x7fffffff;
-
- /* j0(+-inf)=0, j0(nan)=nan */
- if ix >= 0x7ff00000 {
- return 1.0 / (x * x);
- }
- x = fabs(x);
-
- if ix >= 0x40000000 {
- /* |x| >= 2 */
- /* large ulp error near zeros: 2.4, 5.52, 8.6537,.. */
- return common(ix, x, false);
- }
-
- /* 1 - x*x/4 + x*x*R(x^2)/S(x^2) */
- if ix >= 0x3f200000 {
- /* |x| >= 2**-13 */
- /* up to 4ulp error close to 2 */
- z = x * x;
- r = z * (R02 + z * (R03 + z * (R04 + z * R05)));
- s = 1.0 + z * (S01 + z * (S02 + z * (S03 + z * S04)));
- return (1.0 + x / 2.0) * (1.0 - x / 2.0) + z * (r / s);
- }
-
- /* 1 - x*x/4 */
- /* prevent underflow */
- /* inexact should be raised when x!=0, this is not done correctly */
- if ix >= 0x38000000 {
- /* |x| >= 2**-127 */
- x = 0.25 * x * x;
- }
- return 1.0 - x;
-}
-
-const U00: f64 = -7.38042951086872317523e-02; /* 0xBFB2E4D6, 0x99CBD01F */
-const U01: f64 = 1.76666452509181115538e-01; /* 0x3FC69D01, 0x9DE9E3FC */
-const U02: f64 = -1.38185671945596898896e-02; /* 0xBF8C4CE8, 0xB16CFA97 */
-const U03: f64 = 3.47453432093683650238e-04; /* 0x3F36C54D, 0x20B29B6B */
-const U04: f64 = -3.81407053724364161125e-06; /* 0xBECFFEA7, 0x73D25CAD */
-const U05: f64 = 1.95590137035022920206e-08; /* 0x3E550057, 0x3B4EABD4 */
-const U06: f64 = -3.98205194132103398453e-11; /* 0xBDC5E43D, 0x693FB3C8 */
-const V01: f64 = 1.27304834834123699328e-02; /* 0x3F8A1270, 0x91C9C71A */
-const V02: f64 = 7.60068627350353253702e-05; /* 0x3F13ECBB, 0xF578C6C1 */
-const V03: f64 = 2.59150851840457805467e-07; /* 0x3E91642D, 0x7FF202FD */
-const V04: f64 = 4.41110311332675467403e-10; /* 0x3DFE5018, 0x3BD6D9EF */
-
-pub fn y0(x: f64) -> f64 {
- let z: f64;
- let u: f64;
- let v: f64;
- let ix: u32;
- let lx: u32;
-
- ix = get_high_word(x);
- lx = get_low_word(x);
-
- /* y0(nan)=nan, y0(<0)=nan, y0(0)=-inf, y0(inf)=0 */
- if ((ix << 1) | lx) == 0 {
- return -1.0 / 0.0;
- }
- if (ix >> 31) != 0 {
- return 0.0 / 0.0;
- }
- if ix >= 0x7ff00000 {
- return 1.0 / x;
- }
-
- if ix >= 0x40000000 {
- /* x >= 2 */
- /* large ulp errors near zeros: 3.958, 7.086,.. */
- return common(ix, x, true);
- }
-
- /* U(x^2)/V(x^2) + (2/pi)*j0(x)*log(x) */
- if ix >= 0x3e400000 {
- /* x >= 2**-27 */
- /* large ulp error near the first zero, x ~= 0.89 */
- z = x * x;
- u = U00 + z * (U01 + z * (U02 + z * (U03 + z * (U04 + z * (U05 + z * U06)))));
- v = 1.0 + z * (V01 + z * (V02 + z * (V03 + z * V04)));
- return u / v + TPI * (j0(x) * log(x));
- }
- return U00 + TPI * log(x);
-}
-
-/* The asymptotic expansions of pzero is
- * 1 - 9/128 s^2 + 11025/98304 s^4 - ..., where s = 1/x.
- * For x >= 2, We approximate pzero by
- * pzero(x) = 1 + (R/S)
- * where R = pR0 + pR1*s^2 + pR2*s^4 + ... + pR5*s^10
- * S = 1 + pS0*s^2 + ... + pS4*s^10
- * and
- * | pzero(x)-1-R/S | <= 2 ** ( -60.26)
- */
-const PR8: [f64; 6] = [
- /* for x in [inf, 8]=1/[0,0.125] */
- 0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */
- -7.03124999999900357484e-02, /* 0xBFB1FFFF, 0xFFFFFD32 */
- -8.08167041275349795626e+00, /* 0xC02029D0, 0xB44FA779 */
- -2.57063105679704847262e+02, /* 0xC0701102, 0x7B19E863 */
- -2.48521641009428822144e+03, /* 0xC0A36A6E, 0xCD4DCAFC */
- -5.25304380490729545272e+03, /* 0xC0B4850B, 0x36CC643D */
-];
-const PS8: [f64; 5] = [
- 1.16534364619668181717e+02, /* 0x405D2233, 0x07A96751 */
- 3.83374475364121826715e+03, /* 0x40ADF37D, 0x50596938 */
- 4.05978572648472545552e+04, /* 0x40E3D2BB, 0x6EB6B05F */
- 1.16752972564375915681e+05, /* 0x40FC810F, 0x8F9FA9BD */
- 4.76277284146730962675e+04, /* 0x40E74177, 0x4F2C49DC */
-];
-
-const PR5: [f64; 6] = [
- /* for x in [8,4.5454]=1/[0.125,0.22001] */
- -1.14125464691894502584e-11, /* 0xBDA918B1, 0x47E495CC */
- -7.03124940873599280078e-02, /* 0xBFB1FFFF, 0xE69AFBC6 */
- -4.15961064470587782438e+00, /* 0xC010A370, 0xF90C6BBF */
- -6.76747652265167261021e+01, /* 0xC050EB2F, 0x5A7D1783 */
- -3.31231299649172967747e+02, /* 0xC074B3B3, 0x6742CC63 */
- -3.46433388365604912451e+02, /* 0xC075A6EF, 0x28A38BD7 */
-];
-const PS5: [f64; 5] = [
- 6.07539382692300335975e+01, /* 0x404E6081, 0x0C98C5DE */
- 1.05125230595704579173e+03, /* 0x40906D02, 0x5C7E2864 */
- 5.97897094333855784498e+03, /* 0x40B75AF8, 0x8FBE1D60 */
- 9.62544514357774460223e+03, /* 0x40C2CCB8, 0xFA76FA38 */
- 2.40605815922939109441e+03, /* 0x40A2CC1D, 0xC70BE864 */
-];
-
-const PR3: [f64; 6] = [
- /* for x in [4.547,2.8571]=1/[0.2199,0.35001] */
- -2.54704601771951915620e-09, /* 0xBE25E103, 0x6FE1AA86 */
- -7.03119616381481654654e-02, /* 0xBFB1FFF6, 0xF7C0E24B */
- -2.40903221549529611423e+00, /* 0xC00345B2, 0xAEA48074 */
- -2.19659774734883086467e+01, /* 0xC035F74A, 0x4CB94E14 */
- -5.80791704701737572236e+01, /* 0xC04D0A22, 0x420A1A45 */
- -3.14479470594888503854e+01, /* 0xC03F72AC, 0xA892D80F */
-];
-const PS3: [f64; 5] = [
- 3.58560338055209726349e+01, /* 0x4041ED92, 0x84077DD3 */
- 3.61513983050303863820e+02, /* 0x40769839, 0x464A7C0E */
- 1.19360783792111533330e+03, /* 0x4092A66E, 0x6D1061D6 */
- 1.12799679856907414432e+03, /* 0x40919FFC, 0xB8C39B7E */
- 1.73580930813335754692e+02, /* 0x4065B296, 0xFC379081 */
-];
-
-const PR2: [f64; 6] = [
- /* for x in [2.8570,2]=1/[0.3499,0.5] */
- -8.87534333032526411254e-08, /* 0xBE77D316, 0xE927026D */
- -7.03030995483624743247e-02, /* 0xBFB1FF62, 0x495E1E42 */
- -1.45073846780952986357e+00, /* 0xBFF73639, 0x8A24A843 */
- -7.63569613823527770791e+00, /* 0xC01E8AF3, 0xEDAFA7F3 */
- -1.11931668860356747786e+01, /* 0xC02662E6, 0xC5246303 */
- -3.23364579351335335033e+00, /* 0xC009DE81, 0xAF8FE70F */
-];
-const PS2: [f64; 5] = [
- 2.22202997532088808441e+01, /* 0x40363865, 0x908B5959 */
- 1.36206794218215208048e+02, /* 0x4061069E, 0x0EE8878F */
- 2.70470278658083486789e+02, /* 0x4070E786, 0x42EA079B */
- 1.53875394208320329881e+02, /* 0x40633C03, 0x3AB6FAFF */
- 1.46576176948256193810e+01, /* 0x402D50B3, 0x44391809 */
-];
-
-fn pzero(x: f64) -> f64 {
- let p: &[f64; 6];
- let q: &[f64; 5];
- let z: f64;
- let r: f64;
- let s: f64;
- let mut ix: u32;
-
- ix = get_high_word(x);
- ix &= 0x7fffffff;
- if ix >= 0x40200000 {
- p = &PR8;
- q = &PS8;
- } else if ix >= 0x40122E8B {
- p = &PR5;
- q = &PS5;
- } else if ix >= 0x4006DB6D {
- p = &PR3;
- q = &PS3;
- } else
- /*ix >= 0x40000000*/
- {
- p = &PR2;
- q = &PS2;
- }
- z = 1.0 / (x * x);
- r = p[0] + z * (p[1] + z * (p[2] + z * (p[3] + z * (p[4] + z * p[5]))));
- s = 1.0 + z * (q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * q[4]))));
- return 1.0 + r / s;
-}
-
-/* For x >= 8, the asymptotic expansions of qzero is
- * -1/8 s + 75/1024 s^3 - ..., where s = 1/x.
- * We approximate pzero by
- * qzero(x) = s*(-1.25 + (R/S))
- * where R = qR0 + qR1*s^2 + qR2*s^4 + ... + qR5*s^10
- * S = 1 + qS0*s^2 + ... + qS5*s^12
- * and
- * | qzero(x)/s +1.25-R/S | <= 2 ** ( -61.22)
- */
-const QR8: [f64; 6] = [
- /* for x in [inf, 8]=1/[0,0.125] */
- 0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */
- 7.32421874999935051953e-02, /* 0x3FB2BFFF, 0xFFFFFE2C */
- 1.17682064682252693899e+01, /* 0x40278952, 0x5BB334D6 */
- 5.57673380256401856059e+02, /* 0x40816D63, 0x15301825 */
- 8.85919720756468632317e+03, /* 0x40C14D99, 0x3E18F46D */
- 3.70146267776887834771e+04, /* 0x40E212D4, 0x0E901566 */
-];
-const QS8: [f64; 6] = [
- 1.63776026895689824414e+02, /* 0x406478D5, 0x365B39BC */
- 8.09834494656449805916e+03, /* 0x40BFA258, 0x4E6B0563 */
- 1.42538291419120476348e+05, /* 0x41016652, 0x54D38C3F */
- 8.03309257119514397345e+05, /* 0x412883DA, 0x83A52B43 */
- 8.40501579819060512818e+05, /* 0x4129A66B, 0x28DE0B3D */
- -3.43899293537866615225e+05, /* 0xC114FD6D, 0x2C9530C5 */
-];
-
-const QR5: [f64; 6] = [
- /* for x in [8,4.5454]=1/[0.125,0.22001] */
- 1.84085963594515531381e-11, /* 0x3DB43D8F, 0x29CC8CD9 */
- 7.32421766612684765896e-02, /* 0x3FB2BFFF, 0xD172B04C */
- 5.83563508962056953777e+00, /* 0x401757B0, 0xB9953DD3 */
- 1.35111577286449829671e+02, /* 0x4060E392, 0x0A8788E9 */
- 1.02724376596164097464e+03, /* 0x40900CF9, 0x9DC8C481 */
- 1.98997785864605384631e+03, /* 0x409F17E9, 0x53C6E3A6 */
-];
-const QS5: [f64; 6] = [
- 8.27766102236537761883e+01, /* 0x4054B1B3, 0xFB5E1543 */
- 2.07781416421392987104e+03, /* 0x40A03BA0, 0xDA21C0CE */
- 1.88472887785718085070e+04, /* 0x40D267D2, 0x7B591E6D */
- 5.67511122894947329769e+04, /* 0x40EBB5E3, 0x97E02372 */
- 3.59767538425114471465e+04, /* 0x40E19118, 0x1F7A54A0 */
- -5.35434275601944773371e+03, /* 0xC0B4EA57, 0xBEDBC609 */
-];
-
-const QR3: [f64; 6] = [
- /* for x in [4.547,2.8571]=1/[0.2199,0.35001] */
- 4.37741014089738620906e-09, /* 0x3E32CD03, 0x6ADECB82 */
- 7.32411180042911447163e-02, /* 0x3FB2BFEE, 0x0E8D0842 */
- 3.34423137516170720929e+00, /* 0x400AC0FC, 0x61149CF5 */
- 4.26218440745412650017e+01, /* 0x40454F98, 0x962DAEDD */
- 1.70808091340565596283e+02, /* 0x406559DB, 0xE25EFD1F */
- 1.66733948696651168575e+02, /* 0x4064D77C, 0x81FA21E0 */
-];
-const QS3: [f64; 6] = [
- 4.87588729724587182091e+01, /* 0x40486122, 0xBFE343A6 */
- 7.09689221056606015736e+02, /* 0x40862D83, 0x86544EB3 */
- 3.70414822620111362994e+03, /* 0x40ACF04B, 0xE44DFC63 */
- 6.46042516752568917582e+03, /* 0x40B93C6C, 0xD7C76A28 */
- 2.51633368920368957333e+03, /* 0x40A3A8AA, 0xD94FB1C0 */
- -1.49247451836156386662e+02, /* 0xC062A7EB, 0x201CF40F */
-];
-
-const QR2: [f64; 6] = [
- /* for x in [2.8570,2]=1/[0.3499,0.5] */
- 1.50444444886983272379e-07, /* 0x3E84313B, 0x54F76BDB */
- 7.32234265963079278272e-02, /* 0x3FB2BEC5, 0x3E883E34 */
- 1.99819174093815998816e+00, /* 0x3FFFF897, 0xE727779C */
- 1.44956029347885735348e+01, /* 0x402CFDBF, 0xAAF96FE5 */
- 3.16662317504781540833e+01, /* 0x403FAA8E, 0x29FBDC4A */
- 1.62527075710929267416e+01, /* 0x403040B1, 0x71814BB4 */
-];
-const QS2: [f64; 6] = [
- 3.03655848355219184498e+01, /* 0x403E5D96, 0xF7C07AED */
- 2.69348118608049844624e+02, /* 0x4070D591, 0xE4D14B40 */
- 8.44783757595320139444e+02, /* 0x408A6645, 0x22B3BF22 */
- 8.82935845112488550512e+02, /* 0x408B977C, 0x9C5CC214 */
- 2.12666388511798828631e+02, /* 0x406A9553, 0x0E001365 */
- -5.31095493882666946917e+00, /* 0xC0153E6A, 0xF8B32931 */
-];
-
-fn qzero(x: f64) -> f64 {
- let p: &[f64; 6];
- let q: &[f64; 6];
- let s: f64;
- let r: f64;
- let z: f64;
- let mut ix: u32;
-
- ix = get_high_word(x);
- ix &= 0x7fffffff;
- if ix >= 0x40200000 {
- p = &QR8;
- q = &QS8;
- } else if ix >= 0x40122E8B {
- p = &QR5;
- q = &QS5;
- } else if ix >= 0x4006DB6D {
- p = &QR3;
- q = &QS3;
- } else
- /*ix >= 0x40000000*/
- {
- p = &QR2;
- q = &QS2;
- }
- z = 1.0 / (x * x);
- r = p[0] + z * (p[1] + z * (p[2] + z * (p[3] + z * (p[4] + z * p[5]))));
- s = 1.0 + z * (q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * (q[4] + z * q[5])))));
- return (-0.125 + r / s) / x;
-}
diff --git a/vendor/libm-0.1.4/src/math/j0f.rs b/vendor/libm-0.1.4/src/math/j0f.rs
deleted file mode 100644
index 91c03dbbc..000000000
--- a/vendor/libm-0.1.4/src/math/j0f.rs
+++ /dev/null
@@ -1,359 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_j0f.c */
-/*
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-use super::{cosf, fabsf, logf, sinf, sqrtf};
-
-const INVSQRTPI: f32 = 5.6418961287e-01; /* 0x3f106ebb */
-const TPI: f32 = 6.3661974669e-01; /* 0x3f22f983 */
-
-fn common(ix: u32, x: f32, y0: bool) -> f32 {
- let z: f32;
- let s: f32;
- let mut c: f32;
- let mut ss: f32;
- let mut cc: f32;
- /*
- * j0(x) = 1/sqrt(pi) * (P(0,x)*cc - Q(0,x)*ss) / sqrt(x)
- * y0(x) = 1/sqrt(pi) * (P(0,x)*ss + Q(0,x)*cc) / sqrt(x)
- */
- s = sinf(x);
- c = cosf(x);
- if y0 {
- c = -c;
- }
- cc = s + c;
- if ix < 0x7f000000 {
- ss = s - c;
- z = -cosf(2.0 * x);
- if s * c < 0.0 {
- cc = z / ss;
- } else {
- ss = z / cc;
- }
- if ix < 0x58800000 {
- if y0 {
- ss = -ss;
- }
- cc = pzerof(x) * cc - qzerof(x) * ss;
- }
- }
- return INVSQRTPI * cc / sqrtf(x);
-}
-
-/* R0/S0 on [0, 2.00] */
-const R02: f32 = 1.5625000000e-02; /* 0x3c800000 */
-const R03: f32 = -1.8997929874e-04; /* 0xb947352e */
-const R04: f32 = 1.8295404516e-06; /* 0x35f58e88 */
-const R05: f32 = -4.6183270541e-09; /* 0xb19eaf3c */
-const S01: f32 = 1.5619102865e-02; /* 0x3c7fe744 */
-const S02: f32 = 1.1692678527e-04; /* 0x38f53697 */
-const S03: f32 = 5.1354652442e-07; /* 0x3509daa6 */
-const S04: f32 = 1.1661400734e-09; /* 0x30a045e8 */
-
-pub fn j0f(mut x: f32) -> f32 {
- let z: f32;
- let r: f32;
- let s: f32;
- let mut ix: u32;
-
- ix = x.to_bits();
- ix &= 0x7fffffff;
- if ix >= 0x7f800000 {
- return 1.0 / (x * x);
- }
- x = fabsf(x);
-
- if ix >= 0x40000000 {
- /* |x| >= 2 */
- /* large ulp error near zeros */
- return common(ix, x, false);
- }
- if ix >= 0x3a000000 {
- /* |x| >= 2**-11 */
- /* up to 4ulp error near 2 */
- z = x * x;
- r = z * (R02 + z * (R03 + z * (R04 + z * R05)));
- s = 1.0 + z * (S01 + z * (S02 + z * (S03 + z * S04)));
- return (1.0 + x / 2.0) * (1.0 - x / 2.0) + z * (r / s);
- }
- if ix >= 0x21800000 {
- /* |x| >= 2**-60 */
- x = 0.25 * x * x;
- }
- return 1.0 - x;
-}
-
-const U00: f32 = -7.3804296553e-02; /* 0xbd9726b5 */
-const U01: f32 = 1.7666645348e-01; /* 0x3e34e80d */
-const U02: f32 = -1.3818567619e-02; /* 0xbc626746 */
-const U03: f32 = 3.4745343146e-04; /* 0x39b62a69 */
-const U04: f32 = -3.8140706238e-06; /* 0xb67ff53c */
-const U05: f32 = 1.9559013964e-08; /* 0x32a802ba */
-const U06: f32 = -3.9820518410e-11; /* 0xae2f21eb */
-const V01: f32 = 1.2730483897e-02; /* 0x3c509385 */
-const V02: f32 = 7.6006865129e-05; /* 0x389f65e0 */
-const V03: f32 = 2.5915085189e-07; /* 0x348b216c */
-const V04: f32 = 4.4111031494e-10; /* 0x2ff280c2 */
-
-pub fn y0f(x: f32) -> f32 {
- let z: f32;
- let u: f32;
- let v: f32;
- let ix: u32;
-
- ix = x.to_bits();
- if (ix & 0x7fffffff) == 0 {
- return -1.0 / 0.0;
- }
- if (ix >> 31) != 0 {
- return 0.0 / 0.0;
- }
- if ix >= 0x7f800000 {
- return 1.0 / x;
- }
- if ix >= 0x40000000 {
- /* |x| >= 2.0 */
- /* large ulp error near zeros */
- return common(ix, x, true);
- }
- if ix >= 0x39000000 {
- /* x >= 2**-13 */
- /* large ulp error at x ~= 0.89 */
- z = x * x;
- u = U00 + z * (U01 + z * (U02 + z * (U03 + z * (U04 + z * (U05 + z * U06)))));
- v = 1.0 + z * (V01 + z * (V02 + z * (V03 + z * V04)));
- return u / v + TPI * (j0f(x) * logf(x));
- }
- return U00 + TPI * logf(x);
-}
-
-/* The asymptotic expansions of pzero is
- * 1 - 9/128 s^2 + 11025/98304 s^4 - ..., where s = 1/x.
- * For x >= 2, We approximate pzero by
- * pzero(x) = 1 + (R/S)
- * where R = pR0 + pR1*s^2 + pR2*s^4 + ... + pR5*s^10
- * S = 1 + pS0*s^2 + ... + pS4*s^10
- * and
- * | pzero(x)-1-R/S | <= 2 ** ( -60.26)
- */
-const PR8: [f32; 6] = [
- /* for x in [inf, 8]=1/[0,0.125] */
- 0.0000000000e+00, /* 0x00000000 */
- -7.0312500000e-02, /* 0xbd900000 */
- -8.0816707611e+00, /* 0xc1014e86 */
- -2.5706311035e+02, /* 0xc3808814 */
- -2.4852163086e+03, /* 0xc51b5376 */
- -5.2530439453e+03, /* 0xc5a4285a */
-];
-const PS8: [f32; 5] = [
- 1.1653436279e+02, /* 0x42e91198 */
- 3.8337448730e+03, /* 0x456f9beb */
- 4.0597855469e+04, /* 0x471e95db */
- 1.1675296875e+05, /* 0x47e4087c */
- 4.7627726562e+04, /* 0x473a0bba */
-];
-const PR5: [f32; 6] = [
- /* for x in [8,4.5454]=1/[0.125,0.22001] */
- -1.1412546255e-11, /* 0xad48c58a */
- -7.0312492549e-02, /* 0xbd8fffff */
- -4.1596107483e+00, /* 0xc0851b88 */
- -6.7674766541e+01, /* 0xc287597b */
- -3.3123129272e+02, /* 0xc3a59d9b */
- -3.4643338013e+02, /* 0xc3ad3779 */
-];
-const PS5: [f32; 5] = [
- 6.0753936768e+01, /* 0x42730408 */
- 1.0512523193e+03, /* 0x44836813 */
- 5.9789707031e+03, /* 0x45bad7c4 */
- 9.6254453125e+03, /* 0x461665c8 */
- 2.4060581055e+03, /* 0x451660ee */
-];
-
-const PR3: [f32; 6] = [
- /* for x in [4.547,2.8571]=1/[0.2199,0.35001] */
- -2.5470459075e-09, /* 0xb12f081b */
- -7.0311963558e-02, /* 0xbd8fffb8 */
- -2.4090321064e+00, /* 0xc01a2d95 */
- -2.1965976715e+01, /* 0xc1afba52 */
- -5.8079170227e+01, /* 0xc2685112 */
- -3.1447946548e+01, /* 0xc1fb9565 */
-];
-const PS3: [f32; 5] = [
- 3.5856033325e+01, /* 0x420f6c94 */
- 3.6151397705e+02, /* 0x43b4c1ca */
- 1.1936077881e+03, /* 0x44953373 */
- 1.1279968262e+03, /* 0x448cffe6 */
- 1.7358093262e+02, /* 0x432d94b8 */
-];
-
-const PR2: [f32; 6] = [
- /* for x in [2.8570,2]=1/[0.3499,0.5] */
- -8.8753431271e-08, /* 0xb3be98b7 */
- -7.0303097367e-02, /* 0xbd8ffb12 */
- -1.4507384300e+00, /* 0xbfb9b1cc */
- -7.6356959343e+00, /* 0xc0f4579f */
- -1.1193166733e+01, /* 0xc1331736 */
- -3.2336456776e+00, /* 0xc04ef40d */
-];
-const PS2: [f32; 5] = [
- 2.2220300674e+01, /* 0x41b1c32d */
- 1.3620678711e+02, /* 0x430834f0 */
- 2.7047027588e+02, /* 0x43873c32 */
- 1.5387539673e+02, /* 0x4319e01a */
- 1.4657617569e+01, /* 0x416a859a */
-];
-
-fn pzerof(x: f32) -> f32 {
- let p: &[f32; 6];
- let q: &[f32; 5];
- let z: f32;
- let r: f32;
- let s: f32;
- let mut ix: u32;
-
- ix = x.to_bits();
- ix &= 0x7fffffff;
- if ix >= 0x41000000 {
- p = &PR8;
- q = &PS8;
- } else if ix >= 0x409173eb {
- p = &PR5;
- q = &PS5;
- } else if ix >= 0x4036d917 {
- p = &PR3;
- q = &PS3;
- } else
- /*ix >= 0x40000000*/
- {
- p = &PR2;
- q = &PS2;
- }
- z = 1.0 / (x * x);
- r = p[0] + z * (p[1] + z * (p[2] + z * (p[3] + z * (p[4] + z * p[5]))));
- s = 1.0 + z * (q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * q[4]))));
- return 1.0 + r / s;
-}
-
-/* For x >= 8, the asymptotic expansions of qzero is
- * -1/8 s + 75/1024 s^3 - ..., where s = 1/x.
- * We approximate pzero by
- * qzero(x) = s*(-1.25 + (R/S))
- * where R = qR0 + qR1*s^2 + qR2*s^4 + ... + qR5*s^10
- * S = 1 + qS0*s^2 + ... + qS5*s^12
- * and
- * | qzero(x)/s +1.25-R/S | <= 2 ** ( -61.22)
- */
-const QR8: [f32; 6] = [
- /* for x in [inf, 8]=1/[0,0.125] */
- 0.0000000000e+00, /* 0x00000000 */
- 7.3242187500e-02, /* 0x3d960000 */
- 1.1768206596e+01, /* 0x413c4a93 */
- 5.5767340088e+02, /* 0x440b6b19 */
- 8.8591972656e+03, /* 0x460a6cca */
- 3.7014625000e+04, /* 0x471096a0 */
-];
-const QS8: [f32; 6] = [
- 1.6377603149e+02, /* 0x4323c6aa */
- 8.0983447266e+03, /* 0x45fd12c2 */
- 1.4253829688e+05, /* 0x480b3293 */
- 8.0330925000e+05, /* 0x49441ed4 */
- 8.4050156250e+05, /* 0x494d3359 */
- -3.4389928125e+05, /* 0xc8a7eb69 */
-];
-
-const QR5: [f32; 6] = [
- /* for x in [8,4.5454]=1/[0.125,0.22001] */
- 1.8408595828e-11, /* 0x2da1ec79 */
- 7.3242180049e-02, /* 0x3d95ffff */
- 5.8356351852e+00, /* 0x40babd86 */
- 1.3511157227e+02, /* 0x43071c90 */
- 1.0272437744e+03, /* 0x448067cd */
- 1.9899779053e+03, /* 0x44f8bf4b */
-];
-const QS5: [f32; 6] = [
- 8.2776611328e+01, /* 0x42a58da0 */
- 2.0778142090e+03, /* 0x4501dd07 */
- 1.8847289062e+04, /* 0x46933e94 */
- 5.6751113281e+04, /* 0x475daf1d */
- 3.5976753906e+04, /* 0x470c88c1 */
- -5.3543427734e+03, /* 0xc5a752be */
-];
-
-const QR3: [f32; 6] = [
- /* for x in [4.547,2.8571]=1/[0.2199,0.35001] */
- 4.3774099900e-09, /* 0x3196681b */
- 7.3241114616e-02, /* 0x3d95ff70 */
- 3.3442313671e+00, /* 0x405607e3 */
- 4.2621845245e+01, /* 0x422a7cc5 */
- 1.7080809021e+02, /* 0x432acedf */
- 1.6673394775e+02, /* 0x4326bbe4 */
-];
-const QS3: [f32; 6] = [
- 4.8758872986e+01, /* 0x42430916 */
- 7.0968920898e+02, /* 0x44316c1c */
- 3.7041481934e+03, /* 0x4567825f */
- 6.4604252930e+03, /* 0x45c9e367 */
- 2.5163337402e+03, /* 0x451d4557 */
- -1.4924745178e+02, /* 0xc3153f59 */
-];
-
-const QR2: [f32; 6] = [
- /* for x in [2.8570,2]=1/[0.3499,0.5] */
- 1.5044444979e-07, /* 0x342189db */
- 7.3223426938e-02, /* 0x3d95f62a */
- 1.9981917143e+00, /* 0x3fffc4bf */
- 1.4495602608e+01, /* 0x4167edfd */
- 3.1666231155e+01, /* 0x41fd5471 */
- 1.6252708435e+01, /* 0x4182058c */
-];
-const QS2: [f32; 6] = [
- 3.0365585327e+01, /* 0x41f2ecb8 */
- 2.6934811401e+02, /* 0x4386ac8f */
- 8.4478375244e+02, /* 0x44533229 */
- 8.8293585205e+02, /* 0x445cbbe5 */
- 2.1266638184e+02, /* 0x4354aa98 */
- -5.3109550476e+00, /* 0xc0a9f358 */
-];
-
-fn qzerof(x: f32) -> f32 {
- let p: &[f32; 6];
- let q: &[f32; 6];
- let s: f32;
- let r: f32;
- let z: f32;
- let mut ix: u32;
-
- ix = x.to_bits();
- ix &= 0x7fffffff;
- if ix >= 0x41000000 {
- p = &QR8;
- q = &QS8;
- } else if ix >= 0x409173eb {
- p = &QR5;
- q = &QS5;
- } else if ix >= 0x4036d917 {
- p = &QR3;
- q = &QS3;
- } else
- /*ix >= 0x40000000*/
- {
- p = &QR2;
- q = &QS2;
- }
- z = 1.0 / (x * x);
- r = p[0] + z * (p[1] + z * (p[2] + z * (p[3] + z * (p[4] + z * p[5]))));
- s = 1.0 + z * (q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * (q[4] + z * q[5])))));
- return (-0.125 + r / s) / x;
-}
diff --git a/vendor/libm-0.1.4/src/math/j1.rs b/vendor/libm-0.1.4/src/math/j1.rs
deleted file mode 100644
index 02a65ca5a..000000000
--- a/vendor/libm-0.1.4/src/math/j1.rs
+++ /dev/null
@@ -1,414 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_j1.c */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunSoft, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-/* j1(x), y1(x)
- * Bessel function of the first and second kinds of order zero.
- * Method -- j1(x):
- * 1. For tiny x, we use j1(x) = x/2 - x^3/16 + x^5/384 - ...
- * 2. Reduce x to |x| since j1(x)=-j1(-x), and
- * for x in (0,2)
- * j1(x) = x/2 + x*z*R0/S0, where z = x*x;
- * (precision: |j1/x - 1/2 - R0/S0 |<2**-61.51 )
- * for x in (2,inf)
- * j1(x) = sqrt(2/(pi*x))*(p1(x)*cos(x1)-q1(x)*sin(x1))
- * y1(x) = sqrt(2/(pi*x))*(p1(x)*sin(x1)+q1(x)*cos(x1))
- * where x1 = x-3*pi/4. It is better to compute sin(x1),cos(x1)
- * as follow:
- * cos(x1) = cos(x)cos(3pi/4)+sin(x)sin(3pi/4)
- * = 1/sqrt(2) * (sin(x) - cos(x))
- * sin(x1) = sin(x)cos(3pi/4)-cos(x)sin(3pi/4)
- * = -1/sqrt(2) * (sin(x) + cos(x))
- * (To avoid cancellation, use
- * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
- * to compute the worse one.)
- *
- * 3 Special cases
- * j1(nan)= nan
- * j1(0) = 0
- * j1(inf) = 0
- *
- * Method -- y1(x):
- * 1. screen out x<=0 cases: y1(0)=-inf, y1(x<0)=NaN
- * 2. For x<2.
- * Since
- * y1(x) = 2/pi*(j1(x)*(ln(x/2)+Euler)-1/x-x/2+5/64*x^3-...)
- * therefore y1(x)-2/pi*j1(x)*ln(x)-1/x is an odd function.
- * We use the following function to approximate y1,
- * y1(x) = x*U(z)/V(z) + (2/pi)*(j1(x)*ln(x)-1/x), z= x^2
- * where for x in [0,2] (abs err less than 2**-65.89)
- * U(z) = U0[0] + U0[1]*z + ... + U0[4]*z^4
- * V(z) = 1 + v0[0]*z + ... + v0[4]*z^5
- * Note: For tiny x, 1/x dominate y1 and hence
- * y1(tiny) = -2/pi/tiny, (choose tiny<2**-54)
- * 3. For x>=2.
- * y1(x) = sqrt(2/(pi*x))*(p1(x)*sin(x1)+q1(x)*cos(x1))
- * where x1 = x-3*pi/4. It is better to compute sin(x1),cos(x1)
- * by method mentioned above.
- */
-
-use super::{cos, fabs, get_high_word, get_low_word, log, sin, sqrt};
-
-const INVSQRTPI: f64 = 5.64189583547756279280e-01; /* 0x3FE20DD7, 0x50429B6D */
-const TPI: f64 = 6.36619772367581382433e-01; /* 0x3FE45F30, 0x6DC9C883 */
-
-fn common(ix: u32, x: f64, y1: bool, sign: bool) -> f64 {
- let z: f64;
- let mut s: f64;
- let c: f64;
- let mut ss: f64;
- let mut cc: f64;
-
- /*
- * j1(x) = sqrt(2/(pi*x))*(p1(x)*cos(x-3pi/4)-q1(x)*sin(x-3pi/4))
- * y1(x) = sqrt(2/(pi*x))*(p1(x)*sin(x-3pi/4)+q1(x)*cos(x-3pi/4))
- *
- * sin(x-3pi/4) = -(sin(x) + cos(x))/sqrt(2)
- * cos(x-3pi/4) = (sin(x) - cos(x))/sqrt(2)
- * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
- */
- s = sin(x);
- if y1 {
- s = -s;
- }
- c = cos(x);
- cc = s - c;
- if ix < 0x7fe00000 {
- /* avoid overflow in 2*x */
- ss = -s - c;
- z = cos(2.0 * x);
- if s * c > 0.0 {
- cc = z / ss;
- } else {
- ss = z / cc;
- }
- if ix < 0x48000000 {
- if y1 {
- ss = -ss;
- }
- cc = pone(x) * cc - qone(x) * ss;
- }
- }
- if sign {
- cc = -cc;
- }
- return INVSQRTPI * cc / sqrt(x);
-}
-
-/* R0/S0 on [0,2] */
-const R00: f64 = -6.25000000000000000000e-02; /* 0xBFB00000, 0x00000000 */
-const R01: f64 = 1.40705666955189706048e-03; /* 0x3F570D9F, 0x98472C61 */
-const R02: f64 = -1.59955631084035597520e-05; /* 0xBEF0C5C6, 0xBA169668 */
-const R03: f64 = 4.96727999609584448412e-08; /* 0x3E6AAAFA, 0x46CA0BD9 */
-const S01: f64 = 1.91537599538363460805e-02; /* 0x3F939D0B, 0x12637E53 */
-const S02: f64 = 1.85946785588630915560e-04; /* 0x3F285F56, 0xB9CDF664 */
-const S03: f64 = 1.17718464042623683263e-06; /* 0x3EB3BFF8, 0x333F8498 */
-const S04: f64 = 5.04636257076217042715e-09; /* 0x3E35AC88, 0xC97DFF2C */
-const S05: f64 = 1.23542274426137913908e-11; /* 0x3DAB2ACF, 0xCFB97ED8 */
-
-pub fn j1(x: f64) -> f64 {
- let mut z: f64;
- let r: f64;
- let s: f64;
- let mut ix: u32;
- let sign: bool;
-
- ix = get_high_word(x);
- sign = (ix >> 31) != 0;
- ix &= 0x7fffffff;
- if ix >= 0x7ff00000 {
- return 1.0 / (x * x);
- }
- if ix >= 0x40000000 {
- /* |x| >= 2 */
- return common(ix, fabs(x), false, sign);
- }
- if ix >= 0x38000000 {
- /* |x| >= 2**-127 */
- z = x * x;
- r = z * (R00 + z * (R01 + z * (R02 + z * R03)));
- s = 1.0 + z * (S01 + z * (S02 + z * (S03 + z * (S04 + z * S05))));
- z = r / s;
- } else {
- /* avoid underflow, raise inexact if x!=0 */
- z = x;
- }
- return (0.5 + z) * x;
-}
-
-const U0: [f64; 5] = [
- -1.96057090646238940668e-01, /* 0xBFC91866, 0x143CBC8A */
- 5.04438716639811282616e-02, /* 0x3FA9D3C7, 0x76292CD1 */
- -1.91256895875763547298e-03, /* 0xBF5F55E5, 0x4844F50F */
- 2.35252600561610495928e-05, /* 0x3EF8AB03, 0x8FA6B88E */
- -9.19099158039878874504e-08, /* 0xBE78AC00, 0x569105B8 */
-];
-const V0: [f64; 5] = [
- 1.99167318236649903973e-02, /* 0x3F94650D, 0x3F4DA9F0 */
- 2.02552581025135171496e-04, /* 0x3F2A8C89, 0x6C257764 */
- 1.35608801097516229404e-06, /* 0x3EB6C05A, 0x894E8CA6 */
- 6.22741452364621501295e-09, /* 0x3E3ABF1D, 0x5BA69A86 */
- 1.66559246207992079114e-11, /* 0x3DB25039, 0xDACA772A */
-];
-
-pub fn y1(x: f64) -> f64 {
- let z: f64;
- let u: f64;
- let v: f64;
- let ix: u32;
- let lx: u32;
-
- ix = get_high_word(x);
- lx = get_low_word(x);
-
- /* y1(nan)=nan, y1(<0)=nan, y1(0)=-inf, y1(inf)=0 */
- if (ix << 1 | lx) == 0 {
- return -1.0 / 0.0;
- }
- if (ix >> 31) != 0 {
- return 0.0 / 0.0;
- }
- if ix >= 0x7ff00000 {
- return 1.0 / x;
- }
-
- if ix >= 0x40000000 {
- /* x >= 2 */
- return common(ix, x, true, false);
- }
- if ix < 0x3c900000 {
- /* x < 2**-54 */
- return -TPI / x;
- }
- z = x * x;
- u = U0[0] + z * (U0[1] + z * (U0[2] + z * (U0[3] + z * U0[4])));
- v = 1.0 + z * (V0[0] + z * (V0[1] + z * (V0[2] + z * (V0[3] + z * V0[4]))));
- return x * (u / v) + TPI * (j1(x) * log(x) - 1.0 / x);
-}
-
-/* For x >= 8, the asymptotic expansions of pone is
- * 1 + 15/128 s^2 - 4725/2^15 s^4 - ..., where s = 1/x.
- * We approximate pone by
- * pone(x) = 1 + (R/S)
- * where R = pr0 + pr1*s^2 + pr2*s^4 + ... + pr5*s^10
- * S = 1 + ps0*s^2 + ... + ps4*s^10
- * and
- * | pone(x)-1-R/S | <= 2 ** ( -60.06)
- */
-
-const PR8: [f64; 6] = [
- /* for x in [inf, 8]=1/[0,0.125] */
- 0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */
- 1.17187499999988647970e-01, /* 0x3FBDFFFF, 0xFFFFFCCE */
- 1.32394806593073575129e+01, /* 0x402A7A9D, 0x357F7FCE */
- 4.12051854307378562225e+02, /* 0x4079C0D4, 0x652EA590 */
- 3.87474538913960532227e+03, /* 0x40AE457D, 0xA3A532CC */
- 7.91447954031891731574e+03, /* 0x40BEEA7A, 0xC32782DD */
-];
-const PS8: [f64; 5] = [
- 1.14207370375678408436e+02, /* 0x405C8D45, 0x8E656CAC */
- 3.65093083420853463394e+03, /* 0x40AC85DC, 0x964D274F */
- 3.69562060269033463555e+04, /* 0x40E20B86, 0x97C5BB7F */
- 9.76027935934950801311e+04, /* 0x40F7D42C, 0xB28F17BB */
- 3.08042720627888811578e+04, /* 0x40DE1511, 0x697A0B2D */
-];
-
-const PR5: [f64; 6] = [
- /* for x in [8,4.5454]=1/[0.125,0.22001] */
- 1.31990519556243522749e-11, /* 0x3DAD0667, 0xDAE1CA7D */
- 1.17187493190614097638e-01, /* 0x3FBDFFFF, 0xE2C10043 */
- 6.80275127868432871736e+00, /* 0x401B3604, 0x6E6315E3 */
- 1.08308182990189109773e+02, /* 0x405B13B9, 0x452602ED */
- 5.17636139533199752805e+02, /* 0x40802D16, 0xD052D649 */
- 5.28715201363337541807e+02, /* 0x408085B8, 0xBB7E0CB7 */
-];
-const PS5: [f64; 5] = [
- 5.92805987221131331921e+01, /* 0x404DA3EA, 0xA8AF633D */
- 9.91401418733614377743e+02, /* 0x408EFB36, 0x1B066701 */
- 5.35326695291487976647e+03, /* 0x40B4E944, 0x5706B6FB */
- 7.84469031749551231769e+03, /* 0x40BEA4B0, 0xB8A5BB15 */
- 1.50404688810361062679e+03, /* 0x40978030, 0x036F5E51 */
-];
-
-const PR3: [f64; 6] = [
- 3.02503916137373618024e-09, /* 0x3E29FC21, 0xA7AD9EDD */
- 1.17186865567253592491e-01, /* 0x3FBDFFF5, 0x5B21D17B */
- 3.93297750033315640650e+00, /* 0x400F76BC, 0xE85EAD8A */
- 3.51194035591636932736e+01, /* 0x40418F48, 0x9DA6D129 */
- 9.10550110750781271918e+01, /* 0x4056C385, 0x4D2C1837 */
- 4.85590685197364919645e+01, /* 0x4048478F, 0x8EA83EE5 */
-];
-const PS3: [f64; 5] = [
- 3.47913095001251519989e+01, /* 0x40416549, 0xA134069C */
- 3.36762458747825746741e+02, /* 0x40750C33, 0x07F1A75F */
- 1.04687139975775130551e+03, /* 0x40905B7C, 0x5037D523 */
- 8.90811346398256432622e+02, /* 0x408BD67D, 0xA32E31E9 */
- 1.03787932439639277504e+02, /* 0x4059F26D, 0x7C2EED53 */
-];
-
-const PR2: [f64; 6] = [
- /* for x in [2.8570,2]=1/[0.3499,0.5] */
- 1.07710830106873743082e-07, /* 0x3E7CE9D4, 0xF65544F4 */
- 1.17176219462683348094e-01, /* 0x3FBDFF42, 0xBE760D83 */
- 2.36851496667608785174e+00, /* 0x4002F2B7, 0xF98FAEC0 */
- 1.22426109148261232917e+01, /* 0x40287C37, 0x7F71A964 */
- 1.76939711271687727390e+01, /* 0x4031B1A8, 0x177F8EE2 */
- 5.07352312588818499250e+00, /* 0x40144B49, 0xA574C1FE */
-];
-const PS2: [f64; 5] = [
- 2.14364859363821409488e+01, /* 0x40356FBD, 0x8AD5ECDC */
- 1.25290227168402751090e+02, /* 0x405F5293, 0x14F92CD5 */
- 2.32276469057162813669e+02, /* 0x406D08D8, 0xD5A2DBD9 */
- 1.17679373287147100768e+02, /* 0x405D6B7A, 0xDA1884A9 */
- 8.36463893371618283368e+00, /* 0x4020BAB1, 0xF44E5192 */
-];
-
-fn pone(x: f64) -> f64 {
- let p: &[f64; 6];
- let q: &[f64; 5];
- let z: f64;
- let r: f64;
- let s: f64;
- let mut ix: u32;
-
- ix = get_high_word(x);
- ix &= 0x7fffffff;
- if ix >= 0x40200000 {
- p = &PR8;
- q = &PS8;
- } else if ix >= 0x40122E8B {
- p = &PR5;
- q = &PS5;
- } else if ix >= 0x4006DB6D {
- p = &PR3;
- q = &PS3;
- } else
- /*ix >= 0x40000000*/
- {
- p = &PR2;
- q = &PS2;
- }
- z = 1.0 / (x * x);
- r = p[0] + z * (p[1] + z * (p[2] + z * (p[3] + z * (p[4] + z * p[5]))));
- s = 1.0 + z * (q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * q[4]))));
- return 1.0 + r / s;
-}
-
-/* For x >= 8, the asymptotic expansions of qone is
- * 3/8 s - 105/1024 s^3 - ..., where s = 1/x.
- * We approximate pone by
- * qone(x) = s*(0.375 + (R/S))
- * where R = qr1*s^2 + qr2*s^4 + ... + qr5*s^10
- * S = 1 + qs1*s^2 + ... + qs6*s^12
- * and
- * | qone(x)/s -0.375-R/S | <= 2 ** ( -61.13)
- */
-
-const QR8: [f64; 6] = [
- /* for x in [inf, 8]=1/[0,0.125] */
- 0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */
- -1.02539062499992714161e-01, /* 0xBFBA3FFF, 0xFFFFFDF3 */
- -1.62717534544589987888e+01, /* 0xC0304591, 0xA26779F7 */
- -7.59601722513950107896e+02, /* 0xC087BCD0, 0x53E4B576 */
- -1.18498066702429587167e+04, /* 0xC0C724E7, 0x40F87415 */
- -4.84385124285750353010e+04, /* 0xC0E7A6D0, 0x65D09C6A */
-];
-const QS8: [f64; 6] = [
- 1.61395369700722909556e+02, /* 0x40642CA6, 0xDE5BCDE5 */
- 7.82538599923348465381e+03, /* 0x40BE9162, 0xD0D88419 */
- 1.33875336287249578163e+05, /* 0x4100579A, 0xB0B75E98 */
- 7.19657723683240939863e+05, /* 0x4125F653, 0x72869C19 */
- 6.66601232617776375264e+05, /* 0x412457D2, 0x7719AD5C */
- -2.94490264303834643215e+05, /* 0xC111F969, 0x0EA5AA18 */
-];
-
-const QR5: [f64; 6] = [
- /* for x in [8,4.5454]=1/[0.125,0.22001] */
- -2.08979931141764104297e-11, /* 0xBDB6FA43, 0x1AA1A098 */
- -1.02539050241375426231e-01, /* 0xBFBA3FFF, 0xCB597FEF */
- -8.05644828123936029840e+00, /* 0xC0201CE6, 0xCA03AD4B */
- -1.83669607474888380239e+02, /* 0xC066F56D, 0x6CA7B9B0 */
- -1.37319376065508163265e+03, /* 0xC09574C6, 0x6931734F */
- -2.61244440453215656817e+03, /* 0xC0A468E3, 0x88FDA79D */
-];
-const QS5: [f64; 6] = [
- 8.12765501384335777857e+01, /* 0x405451B2, 0xFF5A11B2 */
- 1.99179873460485964642e+03, /* 0x409F1F31, 0xE77BF839 */
- 1.74684851924908907677e+04, /* 0x40D10F1F, 0x0D64CE29 */
- 4.98514270910352279316e+04, /* 0x40E8576D, 0xAABAD197 */
- 2.79480751638918118260e+04, /* 0x40DB4B04, 0xCF7C364B */
- -4.71918354795128470869e+03, /* 0xC0B26F2E, 0xFCFFA004 */
-];
-
-const QR3: [f64; 6] = [
- -5.07831226461766561369e-09, /* 0xBE35CFA9, 0xD38FC84F */
- -1.02537829820837089745e-01, /* 0xBFBA3FEB, 0x51AEED54 */
- -4.61011581139473403113e+00, /* 0xC01270C2, 0x3302D9FF */
- -5.78472216562783643212e+01, /* 0xC04CEC71, 0xC25D16DA */
- -2.28244540737631695038e+02, /* 0xC06C87D3, 0x4718D55F */
- -2.19210128478909325622e+02, /* 0xC06B66B9, 0x5F5C1BF6 */
-];
-const QS3: [f64; 6] = [
- 4.76651550323729509273e+01, /* 0x4047D523, 0xCCD367E4 */
- 6.73865112676699709482e+02, /* 0x40850EEB, 0xC031EE3E */
- 3.38015286679526343505e+03, /* 0x40AA684E, 0x448E7C9A */
- 5.54772909720722782367e+03, /* 0x40B5ABBA, 0xA61D54A6 */
- 1.90311919338810798763e+03, /* 0x409DBC7A, 0x0DD4DF4B */
- -1.35201191444307340817e+02, /* 0xC060E670, 0x290A311F */
-];
-
-const QR2: [f64; 6] = [
- /* for x in [2.8570,2]=1/[0.3499,0.5] */
- -1.78381727510958865572e-07, /* 0xBE87F126, 0x44C626D2 */
- -1.02517042607985553460e-01, /* 0xBFBA3E8E, 0x9148B010 */
- -2.75220568278187460720e+00, /* 0xC0060484, 0x69BB4EDA */
- -1.96636162643703720221e+01, /* 0xC033A9E2, 0xC168907F */
- -4.23253133372830490089e+01, /* 0xC04529A3, 0xDE104AAA */
- -2.13719211703704061733e+01, /* 0xC0355F36, 0x39CF6E52 */
-];
-const QS2: [f64; 6] = [
- 2.95333629060523854548e+01, /* 0x403D888A, 0x78AE64FF */
- 2.52981549982190529136e+02, /* 0x406F9F68, 0xDB821CBA */
- 7.57502834868645436472e+02, /* 0x4087AC05, 0xCE49A0F7 */
- 7.39393205320467245656e+02, /* 0x40871B25, 0x48D4C029 */
- 1.55949003336666123687e+02, /* 0x40637E5E, 0x3C3ED8D4 */
- -4.95949898822628210127e+00, /* 0xC013D686, 0xE71BE86B */
-];
-
-fn qone(x: f64) -> f64 {
- let p: &[f64; 6];
- let q: &[f64; 6];
- let s: f64;
- let r: f64;
- let z: f64;
- let mut ix: u32;
-
- ix = get_high_word(x);
- ix &= 0x7fffffff;
- if ix >= 0x40200000 {
- p = &QR8;
- q = &QS8;
- } else if ix >= 0x40122E8B {
- p = &QR5;
- q = &QS5;
- } else if ix >= 0x4006DB6D {
- p = &QR3;
- q = &QS3;
- } else
- /*ix >= 0x40000000*/
- {
- p = &QR2;
- q = &QS2;
- }
- z = 1.0 / (x * x);
- r = p[0] + z * (p[1] + z * (p[2] + z * (p[3] + z * (p[4] + z * p[5]))));
- s = 1.0 + z * (q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * (q[4] + z * q[5])))));
- return (0.375 + r / s) / x;
-}
diff --git a/vendor/libm-0.1.4/src/math/j1f.rs b/vendor/libm-0.1.4/src/math/j1f.rs
deleted file mode 100644
index 83ac1acff..000000000
--- a/vendor/libm-0.1.4/src/math/j1f.rs
+++ /dev/null
@@ -1,358 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_j1f.c */
-/*
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-use super::{cosf, fabsf, logf, sinf, sqrtf};
-
-const INVSQRTPI: f32 = 5.6418961287e-01; /* 0x3f106ebb */
-const TPI: f32 = 6.3661974669e-01; /* 0x3f22f983 */
-
-fn common(ix: u32, x: f32, y1: bool, sign: bool) -> f32 {
- let z: f64;
- let mut s: f64;
- let c: f64;
- let mut ss: f64;
- let mut cc: f64;
-
- s = sinf(x) as f64;
- if y1 {
- s = -s;
- }
- c = cosf(x) as f64;
- cc = s - c;
- if ix < 0x7f000000 {
- ss = -s - c;
- z = cosf(2.0 * x) as f64;
- if s * c > 0.0 {
- cc = z / ss;
- } else {
- ss = z / cc;
- }
- if ix < 0x58800000 {
- if y1 {
- ss = -ss;
- }
- cc = (ponef(x) as f64) * cc - (qonef(x) as f64) * ss;
- }
- }
- if sign {
- cc = -cc;
- }
- return INVSQRTPI * (cc as f32) / sqrtf(x);
-}
-
-/* R0/S0 on [0,2] */
-const R00: f32 = -6.2500000000e-02; /* 0xbd800000 */
-const R01: f32 = 1.4070566976e-03; /* 0x3ab86cfd */
-const R02: f32 = -1.5995563444e-05; /* 0xb7862e36 */
-const R03: f32 = 4.9672799207e-08; /* 0x335557d2 */
-const S01: f32 = 1.9153760746e-02; /* 0x3c9ce859 */
-const S02: f32 = 1.8594678841e-04; /* 0x3942fab6 */
-const S03: f32 = 1.1771846857e-06; /* 0x359dffc2 */
-const S04: f32 = 5.0463624390e-09; /* 0x31ad6446 */
-const S05: f32 = 1.2354227016e-11; /* 0x2d59567e */
-
-pub fn j1f(x: f32) -> f32 {
- let mut z: f32;
- let r: f32;
- let s: f32;
- let mut ix: u32;
- let sign: bool;
-
- ix = x.to_bits();
- sign = (ix >> 31) != 0;
- ix &= 0x7fffffff;
- if ix >= 0x7f800000 {
- return 1.0 / (x * x);
- }
- if ix >= 0x40000000 {
- /* |x| >= 2 */
- return common(ix, fabsf(x), false, sign);
- }
- if ix >= 0x39000000 {
- /* |x| >= 2**-13 */
- z = x * x;
- r = z * (R00 + z * (R01 + z * (R02 + z * R03)));
- s = 1.0 + z * (S01 + z * (S02 + z * (S03 + z * (S04 + z * S05))));
- z = 0.5 + r / s;
- } else {
- z = 0.5;
- }
- return z * x;
-}
-
-const U0: [f32; 5] = [
- -1.9605709612e-01, /* 0xbe48c331 */
- 5.0443872809e-02, /* 0x3d4e9e3c */
- -1.9125689287e-03, /* 0xbafaaf2a */
- 2.3525259166e-05, /* 0x37c5581c */
- -9.1909917899e-08, /* 0xb3c56003 */
-];
-const V0: [f32; 5] = [
- 1.9916731864e-02, /* 0x3ca3286a */
- 2.0255257550e-04, /* 0x3954644b */
- 1.3560879779e-06, /* 0x35b602d4 */
- 6.2274145840e-09, /* 0x31d5f8eb */
- 1.6655924903e-11, /* 0x2d9281cf */
-];
-
-pub fn y1f(x: f32) -> f32 {
- let z: f32;
- let u: f32;
- let v: f32;
- let ix: u32;
-
- ix = x.to_bits();
- if (ix & 0x7fffffff) == 0 {
- return -1.0 / 0.0;
- }
- if (ix >> 31) != 0 {
- return 0.0 / 0.0;
- }
- if ix >= 0x7f800000 {
- return 1.0 / x;
- }
- if ix >= 0x40000000 {
- /* |x| >= 2.0 */
- return common(ix, x, true, false);
- }
- if ix < 0x33000000 {
- /* x < 2**-25 */
- return -TPI / x;
- }
- z = x * x;
- u = U0[0] + z * (U0[1] + z * (U0[2] + z * (U0[3] + z * U0[4])));
- v = 1.0 + z * (V0[0] + z * (V0[1] + z * (V0[2] + z * (V0[3] + z * V0[4]))));
- return x * (u / v) + TPI * (j1f(x) * logf(x) - 1.0 / x);
-}
-
-/* For x >= 8, the asymptotic expansions of pone is
- * 1 + 15/128 s^2 - 4725/2^15 s^4 - ..., where s = 1/x.
- * We approximate pone by
- * pone(x) = 1 + (R/S)
- * where R = pr0 + pr1*s^2 + pr2*s^4 + ... + pr5*s^10
- * S = 1 + ps0*s^2 + ... + ps4*s^10
- * and
- * | pone(x)-1-R/S | <= 2 ** ( -60.06)
- */
-
-const PR8: [f32; 6] = [
- /* for x in [inf, 8]=1/[0,0.125] */
- 0.0000000000e+00, /* 0x00000000 */
- 1.1718750000e-01, /* 0x3df00000 */
- 1.3239480972e+01, /* 0x4153d4ea */
- 4.1205184937e+02, /* 0x43ce06a3 */
- 3.8747453613e+03, /* 0x45722bed */
- 7.9144794922e+03, /* 0x45f753d6 */
-];
-const PS8: [f32; 5] = [
- 1.1420736694e+02, /* 0x42e46a2c */
- 3.6509309082e+03, /* 0x45642ee5 */
- 3.6956207031e+04, /* 0x47105c35 */
- 9.7602796875e+04, /* 0x47bea166 */
- 3.0804271484e+04, /* 0x46f0a88b */
-];
-
-const PR5: [f32; 6] = [
- /* for x in [8,4.5454]=1/[0.125,0.22001] */
- 1.3199052094e-11, /* 0x2d68333f */
- 1.1718749255e-01, /* 0x3defffff */
- 6.8027510643e+00, /* 0x40d9b023 */
- 1.0830818176e+02, /* 0x42d89dca */
- 5.1763616943e+02, /* 0x440168b7 */
- 5.2871520996e+02, /* 0x44042dc6 */
-];
-const PS5: [f32; 5] = [
- 5.9280597687e+01, /* 0x426d1f55 */
- 9.9140142822e+02, /* 0x4477d9b1 */
- 5.3532670898e+03, /* 0x45a74a23 */
- 7.8446904297e+03, /* 0x45f52586 */
- 1.5040468750e+03, /* 0x44bc0180 */
-];
-
-const PR3: [f32; 6] = [
- 3.0250391081e-09, /* 0x314fe10d */
- 1.1718686670e-01, /* 0x3defffab */
- 3.9329774380e+00, /* 0x407bb5e7 */
- 3.5119403839e+01, /* 0x420c7a45 */
- 9.1055007935e+01, /* 0x42b61c2a */
- 4.8559066772e+01, /* 0x42423c7c */
-];
-const PS3: [f32; 5] = [
- 3.4791309357e+01, /* 0x420b2a4d */
- 3.3676245117e+02, /* 0x43a86198 */
- 1.0468714600e+03, /* 0x4482dbe3 */
- 8.9081134033e+02, /* 0x445eb3ed */
- 1.0378793335e+02, /* 0x42cf936c */
-];
-
-const PR2: [f32; 6] = [
- /* for x in [2.8570,2]=1/[0.3499,0.5] */
- 1.0771083225e-07, /* 0x33e74ea8 */
- 1.1717621982e-01, /* 0x3deffa16 */
- 2.3685150146e+00, /* 0x401795c0 */
- 1.2242610931e+01, /* 0x4143e1bc */
- 1.7693971634e+01, /* 0x418d8d41 */
- 5.0735230446e+00, /* 0x40a25a4d */
-];
-const PS2: [f32; 5] = [
- 2.1436485291e+01, /* 0x41ab7dec */
- 1.2529022980e+02, /* 0x42fa9499 */
- 2.3227647400e+02, /* 0x436846c7 */
- 1.1767937469e+02, /* 0x42eb5bd7 */
- 8.3646392822e+00, /* 0x4105d590 */
-];
-
-fn ponef(x: f32) -> f32 {
- let p: &[f32; 6];
- let q: &[f32; 5];
- let z: f32;
- let r: f32;
- let s: f32;
- let mut ix: u32;
-
- ix = x.to_bits();
- ix &= 0x7fffffff;
- if ix >= 0x41000000 {
- p = &PR8;
- q = &PS8;
- } else if ix >= 0x409173eb {
- p = &PR5;
- q = &PS5;
- } else if ix >= 0x4036d917 {
- p = &PR3;
- q = &PS3;
- } else
- /*ix >= 0x40000000*/
- {
- p = &PR2;
- q = &PS2;
- }
- z = 1.0 / (x * x);
- r = p[0] + z * (p[1] + z * (p[2] + z * (p[3] + z * (p[4] + z * p[5]))));
- s = 1.0 + z * (q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * q[4]))));
- return 1.0 + r / s;
-}
-
-/* For x >= 8, the asymptotic expansions of qone is
- * 3/8 s - 105/1024 s^3 - ..., where s = 1/x.
- * We approximate pone by
- * qone(x) = s*(0.375 + (R/S))
- * where R = qr1*s^2 + qr2*s^4 + ... + qr5*s^10
- * S = 1 + qs1*s^2 + ... + qs6*s^12
- * and
- * | qone(x)/s -0.375-R/S | <= 2 ** ( -61.13)
- */
-
-const QR8: [f32; 6] = [
- /* for x in [inf, 8]=1/[0,0.125] */
- 0.0000000000e+00, /* 0x00000000 */
- -1.0253906250e-01, /* 0xbdd20000 */
- -1.6271753311e+01, /* 0xc1822c8d */
- -7.5960174561e+02, /* 0xc43de683 */
- -1.1849806641e+04, /* 0xc639273a */
- -4.8438511719e+04, /* 0xc73d3683 */
-];
-const QS8: [f32; 6] = [
- 1.6139537048e+02, /* 0x43216537 */
- 7.8253862305e+03, /* 0x45f48b17 */
- 1.3387534375e+05, /* 0x4802bcd6 */
- 7.1965775000e+05, /* 0x492fb29c */
- 6.6660125000e+05, /* 0x4922be94 */
- -2.9449025000e+05, /* 0xc88fcb48 */
-];
-
-const QR5: [f32; 6] = [
- /* for x in [8,4.5454]=1/[0.125,0.22001] */
- -2.0897993405e-11, /* 0xadb7d219 */
- -1.0253904760e-01, /* 0xbdd1fffe */
- -8.0564479828e+00, /* 0xc100e736 */
- -1.8366960144e+02, /* 0xc337ab6b */
- -1.3731937256e+03, /* 0xc4aba633 */
- -2.6124443359e+03, /* 0xc523471c */
-];
-const QS5: [f32; 6] = [
- 8.1276550293e+01, /* 0x42a28d98 */
- 1.9917987061e+03, /* 0x44f8f98f */
- 1.7468484375e+04, /* 0x468878f8 */
- 4.9851425781e+04, /* 0x4742bb6d */
- 2.7948074219e+04, /* 0x46da5826 */
- -4.7191835938e+03, /* 0xc5937978 */
-];
-
-const QR3: [f32; 6] = [
- -5.0783124372e-09, /* 0xb1ae7d4f */
- -1.0253783315e-01, /* 0xbdd1ff5b */
- -4.6101160049e+00, /* 0xc0938612 */
- -5.7847221375e+01, /* 0xc267638e */
- -2.2824453735e+02, /* 0xc3643e9a */
- -2.1921012878e+02, /* 0xc35b35cb */
-];
-const QS3: [f32; 6] = [
- 4.7665153503e+01, /* 0x423ea91e */
- 6.7386511230e+02, /* 0x4428775e */
- 3.3801528320e+03, /* 0x45534272 */
- 5.5477290039e+03, /* 0x45ad5dd5 */
- 1.9031191406e+03, /* 0x44ede3d0 */
- -1.3520118713e+02, /* 0xc3073381 */
-];
-
-const QR2: [f32; 6] = [
- /* for x in [2.8570,2]=1/[0.3499,0.5] */
- -1.7838172539e-07, /* 0xb43f8932 */
- -1.0251704603e-01, /* 0xbdd1f475 */
- -2.7522056103e+00, /* 0xc0302423 */
- -1.9663616180e+01, /* 0xc19d4f16 */
- -4.2325313568e+01, /* 0xc2294d1f */
- -2.1371921539e+01, /* 0xc1aaf9b2 */
-];
-const QS2: [f32; 6] = [
- 2.9533363342e+01, /* 0x41ec4454 */
- 2.5298155212e+02, /* 0x437cfb47 */
- 7.5750280762e+02, /* 0x443d602e */
- 7.3939318848e+02, /* 0x4438d92a */
- 1.5594900513e+02, /* 0x431bf2f2 */
- -4.9594988823e+00, /* 0xc09eb437 */
-];
-
-fn qonef(x: f32) -> f32 {
- let p: &[f32; 6];
- let q: &[f32; 6];
- let s: f32;
- let r: f32;
- let z: f32;
- let mut ix: u32;
-
- ix = x.to_bits();
- ix &= 0x7fffffff;
- if ix >= 0x41000000 {
- p = &QR8;
- q = &QS8;
- } else if ix >= 0x409173eb {
- p = &QR5;
- q = &QS5;
- } else if ix >= 0x4036d917 {
- p = &QR3;
- q = &QS3;
- } else
- /*ix >= 0x40000000*/
- {
- p = &QR2;
- q = &QS2;
- }
- z = 1.0 / (x * x);
- r = p[0] + z * (p[1] + z * (p[2] + z * (p[3] + z * (p[4] + z * p[5]))));
- s = 1.0 + z * (q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * (q[4] + z * q[5])))));
- return (0.375 + r / s) / x;
-}
diff --git a/vendor/libm-0.1.4/src/math/jn.rs b/vendor/libm-0.1.4/src/math/jn.rs
deleted file mode 100644
index 1be167f84..000000000
--- a/vendor/libm-0.1.4/src/math/jn.rs
+++ /dev/null
@@ -1,343 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_jn.c */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunSoft, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-/*
- * jn(n, x), yn(n, x)
- * floating point Bessel's function of the 1st and 2nd kind
- * of order n
- *
- * Special cases:
- * y0(0)=y1(0)=yn(n,0) = -inf with division by zero signal;
- * y0(-ve)=y1(-ve)=yn(n,-ve) are NaN with invalid signal.
- * Note 2. About jn(n,x), yn(n,x)
- * For n=0, j0(x) is called,
- * for n=1, j1(x) is called,
- * for n<=x, forward recursion is used starting
- * from values of j0(x) and j1(x).
- * for n>x, a continued fraction approximation to
- * j(n,x)/j(n-1,x) is evaluated and then backward
- * recursion is used starting from a supposed value
- * for j(n,x). The resulting value of j(0,x) is
- * compared with the actual value to correct the
- * supposed value of j(n,x).
- *
- * yn(n,x) is similar in all respects, except
- * that forward recursion is used for all
- * values of n>1.
- */
-
-use super::{cos, fabs, get_high_word, get_low_word, j0, j1, log, sin, sqrt, y0, y1};
-
-const INVSQRTPI: f64 = 5.64189583547756279280e-01; /* 0x3FE20DD7, 0x50429B6D */
-
-pub fn jn(n: i32, mut x: f64) -> f64 {
- let mut ix: u32;
- let lx: u32;
- let nm1: i32;
- let mut i: i32;
- let mut sign: bool;
- let mut a: f64;
- let mut b: f64;
- let mut temp: f64;
-
- ix = get_high_word(x);
- lx = get_low_word(x);
- sign = (ix >> 31) != 0;
- ix &= 0x7fffffff;
-
- // -lx == !lx + 1
- if (ix | (lx | ((!lx).wrapping_add(1))) >> 31) > 0x7ff00000 {
- /* nan */
- return x;
- }
-
- /* J(-n,x) = (-1)^n * J(n, x), J(n, -x) = (-1)^n * J(n, x)
- * Thus, J(-n,x) = J(n,-x)
- */
- /* nm1 = |n|-1 is used instead of |n| to handle n==INT_MIN */
- if n == 0 {
- return j0(x);
- }
- if n < 0 {
- nm1 = -(n + 1);
- x = -x;
- sign = !sign;
- } else {
- nm1 = n - 1;
- }
- if nm1 == 0 {
- return j1(x);
- }
-
- sign &= (n & 1) != 0; /* even n: 0, odd n: signbit(x) */
- x = fabs(x);
- if (ix | lx) == 0 || ix == 0x7ff00000 {
- /* if x is 0 or inf */
- b = 0.0;
- } else if (nm1 as f64) < x {
- /* Safe to use J(n+1,x)=2n/x *J(n,x)-J(n-1,x) */
- if ix >= 0x52d00000 {
- /* x > 2**302 */
- /* (x >> n**2)
- * Jn(x) = cos(x-(2n+1)*pi/4)*sqrt(2/x*pi)
- * Yn(x) = sin(x-(2n+1)*pi/4)*sqrt(2/x*pi)
- * Let s=sin(x), c=cos(x),
- * xn=x-(2n+1)*pi/4, sqt2 = sqrt(2),then
- *
- * n sin(xn)*sqt2 cos(xn)*sqt2
- * ----------------------------------
- * 0 s-c c+s
- * 1 -s-c -c+s
- * 2 -s+c -c-s
- * 3 s+c c-s
- */
- temp = match nm1 & 3 {
- 0 => -cos(x) + sin(x),
- 1 => -cos(x) - sin(x),
- 2 => cos(x) - sin(x),
- 3 | _ => cos(x) + sin(x),
- };
- b = INVSQRTPI * temp / sqrt(x);
- } else {
- a = j0(x);
- b = j1(x);
- i = 0;
- while i < nm1 {
- i += 1;
- temp = b;
- b = b * (2.0 * (i as f64) / x) - a; /* avoid underflow */
- a = temp;
- }
- }
- } else {
- if ix < 0x3e100000 {
- /* x < 2**-29 */
- /* x is tiny, return the first Taylor expansion of J(n,x)
- * J(n,x) = 1/n!*(x/2)^n - ...
- */
- if nm1 > 32 {
- /* underflow */
- b = 0.0;
- } else {
- temp = x * 0.5;
- b = temp;
- a = 1.0;
- i = 2;
- while i <= nm1 + 1 {
- a *= i as f64; /* a = n! */
- b *= temp; /* b = (x/2)^n */
- i += 1;
- }
- b = b / a;
- }
- } else {
- /* use backward recurrence */
- /* x x^2 x^2
- * J(n,x)/J(n-1,x) = ---- ------ ------ .....
- * 2n - 2(n+1) - 2(n+2)
- *
- * 1 1 1
- * (for large x) = ---- ------ ------ .....
- * 2n 2(n+1) 2(n+2)
- * -- - ------ - ------ -
- * x x x
- *
- * Let w = 2n/x and h=2/x, then the above quotient
- * is equal to the continued fraction:
- * 1
- * = -----------------------
- * 1
- * w - -----------------
- * 1
- * w+h - ---------
- * w+2h - ...
- *
- * To determine how many terms needed, let
- * Q(0) = w, Q(1) = w(w+h) - 1,
- * Q(k) = (w+k*h)*Q(k-1) - Q(k-2),
- * When Q(k) > 1e4 good for single
- * When Q(k) > 1e9 good for double
- * When Q(k) > 1e17 good for quadruple
- */
- /* determine k */
- let mut t: f64;
- let mut q0: f64;
- let mut q1: f64;
- let mut w: f64;
- let h: f64;
- let mut z: f64;
- let mut tmp: f64;
- let nf: f64;
-
- let mut k: i32;
-
- nf = (nm1 as f64) + 1.0;
- w = 2.0 * nf / x;
- h = 2.0 / x;
- z = w + h;
- q0 = w;
- q1 = w * z - 1.0;
- k = 1;
- while q1 < 1.0e9 {
- k += 1;
- z += h;
- tmp = z * q1 - q0;
- q0 = q1;
- q1 = tmp;
- }
- t = 0.0;
- i = k;
- while i >= 0 {
- t = 1.0 / (2.0 * ((i as f64) + nf) / x - t);
- i -= 1;
- }
- a = t;
- b = 1.0;
- /* estimate log((2/x)^n*n!) = n*log(2/x)+n*ln(n)
- * Hence, if n*(log(2n/x)) > ...
- * single 8.8722839355e+01
- * double 7.09782712893383973096e+02
- * long double 1.1356523406294143949491931077970765006170e+04
- * then recurrent value may overflow and the result is
- * likely underflow to zero
- */
- tmp = nf * log(fabs(w));
- if tmp < 7.09782712893383973096e+02 {
- i = nm1;
- while i > 0 {
- temp = b;
- b = b * (2.0 * (i as f64)) / x - a;
- a = temp;
- i -= 1;
- }
- } else {
- i = nm1;
- while i > 0 {
- temp = b;
- b = b * (2.0 * (i as f64)) / x - a;
- a = temp;
- /* scale b to avoid spurious overflow */
- let x1p500 = f64::from_bits(0x5f30000000000000); // 0x1p500 == 2^500
- if b > x1p500 {
- a /= b;
- t /= b;
- b = 1.0;
- }
- i -= 1;
- }
- }
- z = j0(x);
- w = j1(x);
- if fabs(z) >= fabs(w) {
- b = t * z / b;
- } else {
- b = t * w / a;
- }
- }
- }
-
- if sign {
- -b
- } else {
- b
- }
-}
-
-pub fn yn(n: i32, x: f64) -> f64 {
- let mut ix: u32;
- let lx: u32;
- let mut ib: u32;
- let nm1: i32;
- let mut sign: bool;
- let mut i: i32;
- let mut a: f64;
- let mut b: f64;
- let mut temp: f64;
-
- ix = get_high_word(x);
- lx = get_low_word(x);
- sign = (ix >> 31) != 0;
- ix &= 0x7fffffff;
-
- // -lx == !lx + 1
- if (ix | (lx | ((!lx).wrapping_add(1))) >> 31) > 0x7ff00000 {
- /* nan */
- return x;
- }
- if sign && (ix | lx) != 0 {
- /* x < 0 */
- return 0.0 / 0.0;
- }
- if ix == 0x7ff00000 {
- return 0.0;
- }
-
- if n == 0 {
- return y0(x);
- }
- if n < 0 {
- nm1 = -(n + 1);
- sign = (n & 1) != 0;
- } else {
- nm1 = n - 1;
- sign = false;
- }
- if nm1 == 0 {
- if sign {
- return -y1(x);
- } else {
- return y1(x);
- }
- }
-
- if ix >= 0x52d00000 {
- /* x > 2**302 */
- /* (x >> n**2)
- * Jn(x) = cos(x-(2n+1)*pi/4)*sqrt(2/x*pi)
- * Yn(x) = sin(x-(2n+1)*pi/4)*sqrt(2/x*pi)
- * Let s=sin(x), c=cos(x),
- * xn=x-(2n+1)*pi/4, sqt2 = sqrt(2),then
- *
- * n sin(xn)*sqt2 cos(xn)*sqt2
- * ----------------------------------
- * 0 s-c c+s
- * 1 -s-c -c+s
- * 2 -s+c -c-s
- * 3 s+c c-s
- */
- temp = match nm1 & 3 {
- 0 => -sin(x) - cos(x),
- 1 => -sin(x) + cos(x),
- 2 => sin(x) + cos(x),
- 3 | _ => sin(x) - cos(x),
- };
- b = INVSQRTPI * temp / sqrt(x);
- } else {
- a = y0(x);
- b = y1(x);
- /* quit if b is -inf */
- ib = get_high_word(b);
- i = 0;
- while i < nm1 && ib != 0xfff00000 {
- i += 1;
- temp = b;
- b = (2.0 * (i as f64) / x) * b - a;
- ib = get_high_word(b);
- a = temp;
- }
- }
-
- if sign {
- -b
- } else {
- b
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/jnf.rs b/vendor/libm-0.1.4/src/math/jnf.rs
deleted file mode 100644
index 360f62e20..000000000
--- a/vendor/libm-0.1.4/src/math/jnf.rs
+++ /dev/null
@@ -1,259 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_jnf.c */
-/*
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-use super::{fabsf, j0f, j1f, logf, y0f, y1f};
-
-pub fn jnf(n: i32, mut x: f32) -> f32 {
- let mut ix: u32;
- let mut nm1: i32;
- let mut sign: bool;
- let mut i: i32;
- let mut a: f32;
- let mut b: f32;
- let mut temp: f32;
-
- ix = x.to_bits();
- sign = (ix >> 31) != 0;
- ix &= 0x7fffffff;
- if ix > 0x7f800000 {
- /* nan */
- return x;
- }
-
- /* J(-n,x) = J(n,-x), use |n|-1 to avoid overflow in -n */
- if n == 0 {
- return j0f(x);
- }
- if n < 0 {
- nm1 = -(n + 1);
- x = -x;
- sign = !sign;
- } else {
- nm1 = n - 1;
- }
- if nm1 == 0 {
- return j1f(x);
- }
-
- sign &= (n & 1) != 0; /* even n: 0, odd n: signbit(x) */
- x = fabsf(x);
- if ix == 0 || ix == 0x7f800000 {
- /* if x is 0 or inf */
- b = 0.0;
- } else if (nm1 as f32) < x {
- /* Safe to use J(n+1,x)=2n/x *J(n,x)-J(n-1,x) */
- a = j0f(x);
- b = j1f(x);
- i = 0;
- while i < nm1 {
- i += 1;
- temp = b;
- b = b * (2.0 * (i as f32) / x) - a;
- a = temp;
- }
- } else {
- if ix < 0x35800000 {
- /* x < 2**-20 */
- /* x is tiny, return the first Taylor expansion of J(n,x)
- * J(n,x) = 1/n!*(x/2)^n - ...
- */
- if nm1 > 8 {
- /* underflow */
- nm1 = 8;
- }
- temp = 0.5 * x;
- b = temp;
- a = 1.0;
- i = 2;
- while i <= nm1 + 1 {
- a *= i as f32; /* a = n! */
- b *= temp; /* b = (x/2)^n */
- i += 1;
- }
- b = b / a;
- } else {
- /* use backward recurrence */
- /* x x^2 x^2
- * J(n,x)/J(n-1,x) = ---- ------ ------ .....
- * 2n - 2(n+1) - 2(n+2)
- *
- * 1 1 1
- * (for large x) = ---- ------ ------ .....
- * 2n 2(n+1) 2(n+2)
- * -- - ------ - ------ -
- * x x x
- *
- * Let w = 2n/x and h=2/x, then the above quotient
- * is equal to the continued fraction:
- * 1
- * = -----------------------
- * 1
- * w - -----------------
- * 1
- * w+h - ---------
- * w+2h - ...
- *
- * To determine how many terms needed, let
- * Q(0) = w, Q(1) = w(w+h) - 1,
- * Q(k) = (w+k*h)*Q(k-1) - Q(k-2),
- * When Q(k) > 1e4 good for single
- * When Q(k) > 1e9 good for double
- * When Q(k) > 1e17 good for quadruple
- */
- /* determine k */
- let mut t: f32;
- let mut q0: f32;
- let mut q1: f32;
- let mut w: f32;
- let h: f32;
- let mut z: f32;
- let mut tmp: f32;
- let nf: f32;
- let mut k: i32;
-
- nf = (nm1 as f32) + 1.0;
- w = 2.0 * (nf as f32) / x;
- h = 2.0 / x;
- z = w + h;
- q0 = w;
- q1 = w * z - 1.0;
- k = 1;
- while q1 < 1.0e4 {
- k += 1;
- z += h;
- tmp = z * q1 - q0;
- q0 = q1;
- q1 = tmp;
- }
- t = 0.0;
- i = k;
- while i >= 0 {
- t = 1.0 / (2.0 * ((i as f32) + nf) / x - t);
- i -= 1;
- }
- a = t;
- b = 1.0;
- /* estimate log((2/x)^n*n!) = n*log(2/x)+n*ln(n)
- * Hence, if n*(log(2n/x)) > ...
- * single 8.8722839355e+01
- * double 7.09782712893383973096e+02
- * long double 1.1356523406294143949491931077970765006170e+04
- * then recurrent value may overflow and the result is
- * likely underflow to zero
- */
- tmp = nf * logf(fabsf(w));
- if tmp < 88.721679688 {
- i = nm1;
- while i > 0 {
- temp = b;
- b = 2.0 * (i as f32) * b / x - a;
- a = temp;
- i -= 1;
- }
- } else {
- i = nm1;
- while i > 0 {
- temp = b;
- b = 2.0 * (i as f32) * b / x - a;
- a = temp;
- /* scale b to avoid spurious overflow */
- let x1p60 = f32::from_bits(0x5d800000); // 0x1p60 == 2^60
- if b > x1p60 {
- a /= b;
- t /= b;
- b = 1.0;
- }
- i -= 1;
- }
- }
- z = j0f(x);
- w = j1f(x);
- if fabsf(z) >= fabsf(w) {
- b = t * z / b;
- } else {
- b = t * w / a;
- }
- }
- }
-
- if sign {
- -b
- } else {
- b
- }
-}
-
-pub fn ynf(n: i32, x: f32) -> f32 {
- let mut ix: u32;
- let mut ib: u32;
- let nm1: i32;
- let mut sign: bool;
- let mut i: i32;
- let mut a: f32;
- let mut b: f32;
- let mut temp: f32;
-
- ix = x.to_bits();
- sign = (ix >> 31) != 0;
- ix &= 0x7fffffff;
- if ix > 0x7f800000 {
- /* nan */
- return x;
- }
- if sign && ix != 0 {
- /* x < 0 */
- return 0.0 / 0.0;
- }
- if ix == 0x7f800000 {
- return 0.0;
- }
-
- if n == 0 {
- return y0f(x);
- }
- if n < 0 {
- nm1 = -(n + 1);
- sign = (n & 1) != 0;
- } else {
- nm1 = n - 1;
- sign = false;
- }
- if nm1 == 0 {
- if sign {
- return -y1f(x);
- } else {
- return y1f(x);
- }
- }
-
- a = y0f(x);
- b = y1f(x);
- /* quit if b is -inf */
- ib = b.to_bits();
- i = 0;
- while i < nm1 && ib != 0xff800000 {
- i += 1;
- temp = b;
- b = (2.0 * (i as f32) / x) * b - a;
- ib = b.to_bits();
- a = temp;
- }
-
- if sign {
- -b
- } else {
- b
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/k_cos.rs b/vendor/libm-0.1.4/src/math/k_cos.rs
deleted file mode 100644
index 4687b369a..000000000
--- a/vendor/libm-0.1.4/src/math/k_cos.rs
+++ /dev/null
@@ -1,63 +0,0 @@
-// origin: FreeBSD /usr/src/lib/msun/src/k_cos.c
-//
-// ====================================================
-// Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
-//
-// Developed at SunSoft, a Sun Microsystems, Inc. business.
-// Permission to use, copy, modify, and distribute this
-// software is freely granted, provided that this notice
-// is preserved.
-// ====================================================
-
-const C1: f64 = 4.16666666666666019037e-02; /* 0x3FA55555, 0x5555554C */
-const C2: f64 = -1.38888888888741095749e-03; /* 0xBF56C16C, 0x16C15177 */
-const C3: f64 = 2.48015872894767294178e-05; /* 0x3EFA01A0, 0x19CB1590 */
-const C4: f64 = -2.75573143513906633035e-07; /* 0xBE927E4F, 0x809C52AD */
-const C5: f64 = 2.08757232129817482790e-09; /* 0x3E21EE9E, 0xBDB4B1C4 */
-const C6: f64 = -1.13596475577881948265e-11; /* 0xBDA8FAE9, 0xBE8838D4 */
-
-// kernel cos function on [-pi/4, pi/4], pi/4 ~ 0.785398164
-// Input x is assumed to be bounded by ~pi/4 in magnitude.
-// Input y is the tail of x.
-//
-// Algorithm
-// 1. Since cos(-x) = cos(x), we need only to consider positive x.
-// 2. if x < 2^-27 (hx<0x3e400000 0), return 1 with inexact if x!=0.
-// 3. cos(x) is approximated by a polynomial of degree 14 on
-// [0,pi/4]
-// 4 14
-// cos(x) ~ 1 - x*x/2 + C1*x + ... + C6*x
-// where the remez error is
-//
-// | 2 4 6 8 10 12 14 | -58
-// |cos(x)-(1-.5*x +C1*x +C2*x +C3*x +C4*x +C5*x +C6*x )| <= 2
-// | |
-//
-// 4 6 8 10 12 14
-// 4. let r = C1*x +C2*x +C3*x +C4*x +C5*x +C6*x , then
-// cos(x) ~ 1 - x*x/2 + r
-// since cos(x+y) ~ cos(x) - sin(x)*y
-// ~ cos(x) - x*y,
-// a correction term is necessary in cos(x) and hence
-// cos(x+y) = 1 - (x*x/2 - (r - x*y))
-// For better accuracy, rearrange to
-// cos(x+y) ~ w + (tmp + (r-x*y))
-// where w = 1 - x*x/2 and tmp is a tiny correction term
-// (1 - x*x/2 == w + tmp exactly in infinite precision).
-// The exactness of w + tmp in infinite precision depends on w
-// and tmp having the same precision as x. If they have extra
-// precision due to compiler bugs, then the extra precision is
-// only good provided it is retained in all terms of the final
-// expression for cos(). Retention happens in all cases tested
-// under FreeBSD, so don't pessimize things by forcibly clipping
-// any extra precision in w.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub(crate) fn k_cos(x: f64, y: f64) -> f64 {
- let z = x * x;
- let w = z * z;
- let r = z * (C1 + z * (C2 + z * C3)) + w * w * (C4 + z * (C5 + z * C6));
- let hz = 0.5 * z;
- let w = 1.0 - hz;
- w + (((1.0 - w) - hz) + (z * r - x * y))
-}
diff --git a/vendor/libm-0.1.4/src/math/k_cosf.rs b/vendor/libm-0.1.4/src/math/k_cosf.rs
deleted file mode 100644
index 79d0f238f..000000000
--- a/vendor/libm-0.1.4/src/math/k_cosf.rs
+++ /dev/null
@@ -1,30 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/k_cosf.c */
-/*
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- * Debugged and optimized by Bruce D. Evans.
- */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-/* |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]). */
-const C0: f64 = -0.499999997251031003120; /* -0x1ffffffd0c5e81.0p-54 */
-const C1: f64 = 0.0416666233237390631894; /* 0x155553e1053a42.0p-57 */
-const C2: f64 = -0.00138867637746099294692; /* -0x16c087e80f1e27.0p-62 */
-const C3: f64 = 0.0000243904487962774090654; /* 0x199342e0ee5069.0p-68 */
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub(crate) fn k_cosf(x: f64) -> f32 {
- let z = x * x;
- let w = z * z;
- let r = C2 + z * C3;
- (((1.0 + z * C0) + w * C1) + (w * z) * r) as f32
-}
diff --git a/vendor/libm-0.1.4/src/math/k_expo2.rs b/vendor/libm-0.1.4/src/math/k_expo2.rs
deleted file mode 100644
index 0a9562eae..000000000
--- a/vendor/libm-0.1.4/src/math/k_expo2.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-use super::exp;
-
-/* k is such that k*ln2 has minimal relative error and x - kln2 > log(FLT_MIN) */
-const K: i32 = 2043;
-
-/* expf(x)/2 for x >= log(FLT_MAX), slightly better than 0.5f*expf(x/2)*expf(x/2) */
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub(crate) fn k_expo2(x: f64) -> f64 {
- let k_ln2 = f64::from_bits(0x40962066151add8b);
- /* note that k is odd and scale*scale overflows */
- let scale = f64::from_bits(((((0x3ff + K / 2) as u32) << 20) as u64) << 32);
- /* exp(x - k ln2) * 2**(k-1) */
- exp(x - k_ln2) * scale * scale
-}
diff --git a/vendor/libm-0.1.4/src/math/k_expo2f.rs b/vendor/libm-0.1.4/src/math/k_expo2f.rs
deleted file mode 100644
index de8507772..000000000
--- a/vendor/libm-0.1.4/src/math/k_expo2f.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-use super::expf;
-
-/* k is such that k*ln2 has minimal relative error and x - kln2 > log(FLT_MIN) */
-const K: i32 = 235;
-
-/* expf(x)/2 for x >= log(FLT_MAX), slightly better than 0.5f*expf(x/2)*expf(x/2) */
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub(crate) fn k_expo2f(x: f32) -> f32 {
- let k_ln2 = f32::from_bits(0x4322e3bc);
- /* note that k is odd and scale*scale overflows */
- let scale = f32::from_bits(((0x7f + K / 2) as u32) << 23);
- /* exp(x - k ln2) * 2**(k-1) */
- expf(x - k_ln2) * scale * scale
-}
diff --git a/vendor/libm-0.1.4/src/math/k_sin.rs b/vendor/libm-0.1.4/src/math/k_sin.rs
deleted file mode 100644
index 5d2bd68aa..000000000
--- a/vendor/libm-0.1.4/src/math/k_sin.rs
+++ /dev/null
@@ -1,58 +0,0 @@
-// origin: FreeBSD /usr/src/lib/msun/src/k_sin.c
-//
-// ====================================================
-// Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
-//
-// Developed at SunSoft, a Sun Microsystems, Inc. business.
-// Permission to use, copy, modify, and distribute this
-// software is freely granted, provided that this notice
-// is preserved.
-// ====================================================
-
-const S1: f64 = -1.66666666666666324348e-01; /* 0xBFC55555, 0x55555549 */
-const S2: f64 = 8.33333333332248946124e-03; /* 0x3F811111, 0x1110F8A6 */
-const S3: f64 = -1.98412698298579493134e-04; /* 0xBF2A01A0, 0x19C161D5 */
-const S4: f64 = 2.75573137070700676789e-06; /* 0x3EC71DE3, 0x57B1FE7D */
-const S5: f64 = -2.50507602534068634195e-08; /* 0xBE5AE5E6, 0x8A2B9CEB */
-const S6: f64 = 1.58969099521155010221e-10; /* 0x3DE5D93A, 0x5ACFD57C */
-
-// kernel sin function on ~[-pi/4, pi/4] (except on -0), pi/4 ~ 0.7854
-// Input x is assumed to be bounded by ~pi/4 in magnitude.
-// Input y is the tail of x.
-// Input iy indicates whether y is 0. (if iy=0, y assume to be 0).
-//
-// Algorithm
-// 1. Since sin(-x) = -sin(x), we need only to consider positive x.
-// 2. Callers must return sin(-0) = -0 without calling here since our
-// odd polynomial is not evaluated in a way that preserves -0.
-// Callers may do the optimization sin(x) ~ x for tiny x.
-// 3. sin(x) is approximated by a polynomial of degree 13 on
-// [0,pi/4]
-// 3 13
-// sin(x) ~ x + S1*x + ... + S6*x
-// where
-//
-// |sin(x) 2 4 6 8 10 12 | -58
-// |----- - (1+S1*x +S2*x +S3*x +S4*x +S5*x +S6*x )| <= 2
-// | x |
-//
-// 4. sin(x+y) = sin(x) + sin'(x')*y
-// ~ sin(x) + (1-x*x/2)*y
-// For better accuracy, let
-// 3 2 2 2 2
-// r = x *(S2+x *(S3+x *(S4+x *(S5+x *S6))))
-// then 3 2
-// sin(x) = x + (S1*x + (x *(r-y/2)+y))
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub(crate) fn k_sin(x: f64, y: f64, iy: i32) -> f64 {
- let z = x * x;
- let w = z * z;
- let r = S2 + z * (S3 + z * S4) + z * w * (S5 + z * S6);
- let v = z * x;
- if iy == 0 {
- x + v * (S1 + z * r)
- } else {
- x - ((z * (0.5 * y - v * r) - y) - v * S1)
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/k_sinf.rs b/vendor/libm-0.1.4/src/math/k_sinf.rs
deleted file mode 100644
index 68fe926c2..000000000
--- a/vendor/libm-0.1.4/src/math/k_sinf.rs
+++ /dev/null
@@ -1,31 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/k_sinf.c */
-/*
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- * Optimized by Bruce D. Evans.
- */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-/* |sin(x)/x - s(x)| < 2**-37.5 (~[-4.89e-12, 4.824e-12]). */
-const S1: f64 = -0.166666666416265235595; /* -0x15555554cbac77.0p-55 */
-const S2: f64 = 0.0083333293858894631756; /* 0x111110896efbb2.0p-59 */
-const S3: f64 = -0.000198393348360966317347; /* -0x1a00f9e2cae774.0p-65 */
-const S4: f64 = 0.0000027183114939898219064; /* 0x16cd878c3b46a7.0p-71 */
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub(crate) fn k_sinf(x: f64) -> f32 {
- let z = x * x;
- let w = z * z;
- let r = S3 + z * S4;
- let s = z * x;
- ((x + s * (S1 + z * S2)) + s * w * r) as f32
-}
diff --git a/vendor/libm-0.1.4/src/math/k_tan.rs b/vendor/libm-0.1.4/src/math/k_tan.rs
deleted file mode 100644
index ea3c386b0..000000000
--- a/vendor/libm-0.1.4/src/math/k_tan.rs
+++ /dev/null
@@ -1,107 +0,0 @@
-// origin: FreeBSD /usr/src/lib/msun/src/k_tan.c */
-//
-// ====================================================
-// Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
-//
-// Permission to use, copy, modify, and distribute this
-// software is freely granted, provided that this notice
-// is preserved.
-// ====================================================
-
-// kernel tan function on ~[-pi/4, pi/4] (except on -0), pi/4 ~ 0.7854
-// Input x is assumed to be bounded by ~pi/4 in magnitude.
-// Input y is the tail of x.
-// Input odd indicates whether tan (if odd = 0) or -1/tan (if odd = 1) is returned.
-//
-// Algorithm
-// 1. Since tan(-x) = -tan(x), we need only to consider positive x.
-// 2. Callers must return tan(-0) = -0 without calling here since our
-// odd polynomial is not evaluated in a way that preserves -0.
-// Callers may do the optimization tan(x) ~ x for tiny x.
-// 3. tan(x) is approximated by a odd polynomial of degree 27 on
-// [0,0.67434]
-// 3 27
-// tan(x) ~ x + T1*x + ... + T13*x
-// where
-//
-// |tan(x) 2 4 26 | -59.2
-// |----- - (1+T1*x +T2*x +.... +T13*x )| <= 2
-// | x |
-//
-// Note: tan(x+y) = tan(x) + tan'(x)*y
-// ~ tan(x) + (1+x*x)*y
-// Therefore, for better accuracy in computing tan(x+y), let
-// 3 2 2 2 2
-// r = x *(T2+x *(T3+x *(...+x *(T12+x *T13))))
-// then
-// 3 2
-// tan(x+y) = x + (T1*x + (x *(r+y)+y))
-//
-// 4. For x in [0.67434,pi/4], let y = pi/4 - x, then
-// tan(x) = tan(pi/4-y) = (1-tan(y))/(1+tan(y))
-// = 1 - 2*(tan(y) - (tan(y)^2)/(1+tan(y)))
-static T: [f64; 13] = [
- 3.33333333333334091986e-01, /* 3FD55555, 55555563 */
- 1.33333333333201242699e-01, /* 3FC11111, 1110FE7A */
- 5.39682539762260521377e-02, /* 3FABA1BA, 1BB341FE */
- 2.18694882948595424599e-02, /* 3F9664F4, 8406D637 */
- 8.86323982359930005737e-03, /* 3F8226E3, E96E8493 */
- 3.59207910759131235356e-03, /* 3F6D6D22, C9560328 */
- 1.45620945432529025516e-03, /* 3F57DBC8, FEE08315 */
- 5.88041240820264096874e-04, /* 3F4344D8, F2F26501 */
- 2.46463134818469906812e-04, /* 3F3026F7, 1A8D1068 */
- 7.81794442939557092300e-05, /* 3F147E88, A03792A6 */
- 7.14072491382608190305e-05, /* 3F12B80F, 32F0A7E9 */
- -1.85586374855275456654e-05, /* BEF375CB, DB605373 */
- 2.59073051863633712884e-05, /* 3EFB2A70, 74BF7AD4 */
-];
-const PIO4: f64 = 7.85398163397448278999e-01; /* 3FE921FB, 54442D18 */
-const PIO4_LO: f64 = 3.06161699786838301793e-17; /* 3C81A626, 33145C07 */
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub(crate) fn k_tan(mut x: f64, mut y: f64, odd: i32) -> f64 {
- let hx = (f64::to_bits(x) >> 32) as u32;
- let big = (hx & 0x7fffffff) >= 0x3FE59428; /* |x| >= 0.6744 */
- if big {
- let sign = hx >> 31;
- if sign != 0 {
- x = -x;
- y = -y;
- }
- x = (PIO4 - x) + (PIO4_LO - y);
- y = 0.0;
- }
- let z = x * x;
- let w = z * z;
- /*
- * Break x^5*(T[1]+x^2*T[2]+...) into
- * x^5(T[1]+x^4*T[3]+...+x^20*T[11]) +
- * x^5(x^2*(T[2]+x^4*T[4]+...+x^22*[T12]))
- */
- let r = T[1] + w * (T[3] + w * (T[5] + w * (T[7] + w * (T[9] + w * T[11]))));
- let v = z * (T[2] + w * (T[4] + w * (T[6] + w * (T[8] + w * (T[10] + w * T[12])))));
- let s = z * x;
- let r = y + z * (s * (r + v) + y) + s * T[0];
- let w = x + r;
- if big {
- let sign = hx >> 31;
- let s = 1.0 - 2.0 * odd as f64;
- let v = s - 2.0 * (x + (r - w * w / (w + s)));
- return if sign != 0 { -v } else { v };
- }
- if odd == 0 {
- return w;
- }
- /* -1.0/(x+r) has up to 2ulp error, so compute it accurately */
- let w0 = zero_low_word(w);
- let v = r - (w0 - x); /* w0+v = r+x */
- let a = -1.0 / w;
- let a0 = zero_low_word(a);
- a0 + a * (1.0 + a0 * w0 + a0 * v)
-}
-
-#[inline]
-fn zero_low_word(x: f64) -> f64 {
- f64::from_bits(f64::to_bits(x) & 0xFFFF_FFFF_0000_0000)
-}
diff --git a/vendor/libm-0.1.4/src/math/k_tanf.rs b/vendor/libm-0.1.4/src/math/k_tanf.rs
deleted file mode 100644
index 52651378d..000000000
--- a/vendor/libm-0.1.4/src/math/k_tanf.rs
+++ /dev/null
@@ -1,47 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/k_tan.c */
-/*
- * ====================================================
- * Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-/* |tan(x)/x - t(x)| < 2**-25.5 (~[-2e-08, 2e-08]). */
-const T: [f64; 6] = [
- 0.333331395030791399758, /* 0x15554d3418c99f.0p-54 */
- 0.133392002712976742718, /* 0x1112fd38999f72.0p-55 */
- 0.0533812378445670393523, /* 0x1b54c91d865afe.0p-57 */
- 0.0245283181166547278873, /* 0x191df3908c33ce.0p-58 */
- 0.00297435743359967304927, /* 0x185dadfcecf44e.0p-61 */
- 0.00946564784943673166728, /* 0x1362b9bf971bcd.0p-59 */
-];
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub(crate) fn k_tanf(x: f64, odd: bool) -> f32 {
- let z = x * x;
- /*
- * Split up the polynomial into small independent terms to give
- * opportunities for parallel evaluation. The chosen splitting is
- * micro-optimized for Athlons (XP, X64). It costs 2 multiplications
- * relative to Horner's method on sequential machines.
- *
- * We add the small terms from lowest degree up for efficiency on
- * non-sequential machines (the lowest degree terms tend to be ready
- * earlier). Apart from this, we don't care about order of
- * operations, and don't need to to care since we have precision to
- * spare. However, the chosen splitting is good for accuracy too,
- * and would give results as accurate as Horner's method if the
- * small terms were added from highest degree down.
- */
- let mut r = T[4] + z * T[5];
- let t = T[2] + z * T[3];
- let w = z * z;
- let s = z * x;
- let u = T[0] + z * T[1];
- r = (x + s * u) + (s * w) * (t + w * r);
- (if odd { -1. / r } else { r }) as f32
-}
diff --git a/vendor/libm-0.1.4/src/math/ldexp.rs b/vendor/libm-0.1.4/src/math/ldexp.rs
deleted file mode 100644
index 780ddfc11..000000000
--- a/vendor/libm-0.1.4/src/math/ldexp.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn ldexp(x: f64, n: i32) -> f64 {
- super::scalbn(x, n)
-}
diff --git a/vendor/libm-0.1.4/src/math/ldexpf.rs b/vendor/libm-0.1.4/src/math/ldexpf.rs
deleted file mode 100644
index 70935a002..000000000
--- a/vendor/libm-0.1.4/src/math/ldexpf.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn ldexpf(x: f32, n: i32) -> f32 {
- super::scalbnf(x, n)
-}
diff --git a/vendor/libm-0.1.4/src/math/lgamma.rs b/vendor/libm-0.1.4/src/math/lgamma.rs
deleted file mode 100644
index 5bc87e85e..000000000
--- a/vendor/libm-0.1.4/src/math/lgamma.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-use super::lgamma_r;
-
-pub fn lgamma(x: f64) -> f64 {
- lgamma_r(x).0
-}
diff --git a/vendor/libm-0.1.4/src/math/lgamma_r.rs b/vendor/libm-0.1.4/src/math/lgamma_r.rs
deleted file mode 100644
index 382a501fc..000000000
--- a/vendor/libm-0.1.4/src/math/lgamma_r.rs
+++ /dev/null
@@ -1,319 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_lgamma_r.c */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunSoft, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- *
- */
-/* lgamma_r(x, signgamp)
- * Reentrant version of the logarithm of the Gamma function
- * with user provide pointer for the sign of Gamma(x).
- *
- * Method:
- * 1. Argument Reduction for 0 < x <= 8
- * Since gamma(1+s)=s*gamma(s), for x in [0,8], we may
- * reduce x to a number in [1.5,2.5] by
- * lgamma(1+s) = log(s) + lgamma(s)
- * for example,
- * lgamma(7.3) = log(6.3) + lgamma(6.3)
- * = log(6.3*5.3) + lgamma(5.3)
- * = log(6.3*5.3*4.3*3.3*2.3) + lgamma(2.3)
- * 2. Polynomial approximation of lgamma around its
- * minimun ymin=1.461632144968362245 to maintain monotonicity.
- * On [ymin-0.23, ymin+0.27] (i.e., [1.23164,1.73163]), use
- * Let z = x-ymin;
- * lgamma(x) = -1.214862905358496078218 + z^2*poly(z)
- * where
- * poly(z) is a 14 degree polynomial.
- * 2. Rational approximation in the primary interval [2,3]
- * We use the following approximation:
- * s = x-2.0;
- * lgamma(x) = 0.5*s + s*P(s)/Q(s)
- * with accuracy
- * |P/Q - (lgamma(x)-0.5s)| < 2**-61.71
- * Our algorithms are based on the following observation
- *
- * zeta(2)-1 2 zeta(3)-1 3
- * lgamma(2+s) = s*(1-Euler) + --------- * s - --------- * s + ...
- * 2 3
- *
- * where Euler = 0.5771... is the Euler constant, which is very
- * close to 0.5.
- *
- * 3. For x>=8, we have
- * lgamma(x)~(x-0.5)log(x)-x+0.5*log(2pi)+1/(12x)-1/(360x**3)+....
- * (better formula:
- * lgamma(x)~(x-0.5)*(log(x)-1)-.5*(log(2pi)-1) + ...)
- * Let z = 1/x, then we approximation
- * f(z) = lgamma(x) - (x-0.5)(log(x)-1)
- * by
- * 3 5 11
- * w = w0 + w1*z + w2*z + w3*z + ... + w6*z
- * where
- * |w - f(z)| < 2**-58.74
- *
- * 4. For negative x, since (G is gamma function)
- * -x*G(-x)*G(x) = PI/sin(PI*x),
- * we have
- * G(x) = PI/(sin(PI*x)*(-x)*G(-x))
- * since G(-x) is positive, sign(G(x)) = sign(sin(PI*x)) for x<0
- * Hence, for x<0, signgam = sign(sin(PI*x)) and
- * lgamma(x) = log(|Gamma(x)|)
- * = log(PI/(|x*sin(PI*x)|)) - lgamma(-x);
- * Note: one should avoid compute PI*(-x) directly in the
- * computation of sin(PI*(-x)).
- *
- * 5. Special Cases
- * lgamma(2+s) ~ s*(1-Euler) for tiny s
- * lgamma(1) = lgamma(2) = 0
- * lgamma(x) ~ -log(|x|) for tiny x
- * lgamma(0) = lgamma(neg.integer) = inf and raise divide-by-zero
- * lgamma(inf) = inf
- * lgamma(-inf) = inf (bug for bug compatible with C99!?)
- *
- */
-
-use super::{floor, k_cos, k_sin, log};
-
-const PI: f64 = 3.14159265358979311600e+00; /* 0x400921FB, 0x54442D18 */
-const A0: f64 = 7.72156649015328655494e-02; /* 0x3FB3C467, 0xE37DB0C8 */
-const A1: f64 = 3.22467033424113591611e-01; /* 0x3FD4A34C, 0xC4A60FAD */
-const A2: f64 = 6.73523010531292681824e-02; /* 0x3FB13E00, 0x1A5562A7 */
-const A3: f64 = 2.05808084325167332806e-02; /* 0x3F951322, 0xAC92547B */
-const A4: f64 = 7.38555086081402883957e-03; /* 0x3F7E404F, 0xB68FEFE8 */
-const A5: f64 = 2.89051383673415629091e-03; /* 0x3F67ADD8, 0xCCB7926B */
-const A6: f64 = 1.19270763183362067845e-03; /* 0x3F538A94, 0x116F3F5D */
-const A7: f64 = 5.10069792153511336608e-04; /* 0x3F40B6C6, 0x89B99C00 */
-const A8: f64 = 2.20862790713908385557e-04; /* 0x3F2CF2EC, 0xED10E54D */
-const A9: f64 = 1.08011567247583939954e-04; /* 0x3F1C5088, 0x987DFB07 */
-const A10: f64 = 2.52144565451257326939e-05; /* 0x3EFA7074, 0x428CFA52 */
-const A11: f64 = 4.48640949618915160150e-05; /* 0x3F07858E, 0x90A45837 */
-const TC: f64 = 1.46163214496836224576e+00; /* 0x3FF762D8, 0x6356BE3F */
-const TF: f64 = -1.21486290535849611461e-01; /* 0xBFBF19B9, 0xBCC38A42 */
-/* tt = -(tail of TF) */
-const TT: f64 = -3.63867699703950536541e-18; /* 0xBC50C7CA, 0xA48A971F */
-const T0: f64 = 4.83836122723810047042e-01; /* 0x3FDEF72B, 0xC8EE38A2 */
-const T1: f64 = -1.47587722994593911752e-01; /* 0xBFC2E427, 0x8DC6C509 */
-const T2: f64 = 6.46249402391333854778e-02; /* 0x3FB08B42, 0x94D5419B */
-const T3: f64 = -3.27885410759859649565e-02; /* 0xBFA0C9A8, 0xDF35B713 */
-const T4: f64 = 1.79706750811820387126e-02; /* 0x3F9266E7, 0x970AF9EC */
-const T5: f64 = -1.03142241298341437450e-02; /* 0xBF851F9F, 0xBA91EC6A */
-const T6: f64 = 6.10053870246291332635e-03; /* 0x3F78FCE0, 0xE370E344 */
-const T7: f64 = -3.68452016781138256760e-03; /* 0xBF6E2EFF, 0xB3E914D7 */
-const T8: f64 = 2.25964780900612472250e-03; /* 0x3F6282D3, 0x2E15C915 */
-const T9: f64 = -1.40346469989232843813e-03; /* 0xBF56FE8E, 0xBF2D1AF1 */
-const T10: f64 = 8.81081882437654011382e-04; /* 0x3F4CDF0C, 0xEF61A8E9 */
-const T11: f64 = -5.38595305356740546715e-04; /* 0xBF41A610, 0x9C73E0EC */
-const T12: f64 = 3.15632070903625950361e-04; /* 0x3F34AF6D, 0x6C0EBBF7 */
-const T13: f64 = -3.12754168375120860518e-04; /* 0xBF347F24, 0xECC38C38 */
-const T14: f64 = 3.35529192635519073543e-04; /* 0x3F35FD3E, 0xE8C2D3F4 */
-const U0: f64 = -7.72156649015328655494e-02; /* 0xBFB3C467, 0xE37DB0C8 */
-const U1: f64 = 6.32827064025093366517e-01; /* 0x3FE4401E, 0x8B005DFF */
-const U2: f64 = 1.45492250137234768737e+00; /* 0x3FF7475C, 0xD119BD6F */
-const U3: f64 = 9.77717527963372745603e-01; /* 0x3FEF4976, 0x44EA8450 */
-const U4: f64 = 2.28963728064692451092e-01; /* 0x3FCD4EAE, 0xF6010924 */
-const U5: f64 = 1.33810918536787660377e-02; /* 0x3F8B678B, 0xBF2BAB09 */
-const V1: f64 = 2.45597793713041134822e+00; /* 0x4003A5D7, 0xC2BD619C */
-const V2: f64 = 2.12848976379893395361e+00; /* 0x40010725, 0xA42B18F5 */
-const V3: f64 = 7.69285150456672783825e-01; /* 0x3FE89DFB, 0xE45050AF */
-const V4: f64 = 1.04222645593369134254e-01; /* 0x3FBAAE55, 0xD6537C88 */
-const V5: f64 = 3.21709242282423911810e-03; /* 0x3F6A5ABB, 0x57D0CF61 */
-const S0: f64 = -7.72156649015328655494e-02; /* 0xBFB3C467, 0xE37DB0C8 */
-const S1: f64 = 2.14982415960608852501e-01; /* 0x3FCB848B, 0x36E20878 */
-const S2: f64 = 3.25778796408930981787e-01; /* 0x3FD4D98F, 0x4F139F59 */
-const S3: f64 = 1.46350472652464452805e-01; /* 0x3FC2BB9C, 0xBEE5F2F7 */
-const S4: f64 = 2.66422703033638609560e-02; /* 0x3F9B481C, 0x7E939961 */
-const S5: f64 = 1.84028451407337715652e-03; /* 0x3F5E26B6, 0x7368F239 */
-const S6: f64 = 3.19475326584100867617e-05; /* 0x3F00BFEC, 0xDD17E945 */
-const R1: f64 = 1.39200533467621045958e+00; /* 0x3FF645A7, 0x62C4AB74 */
-const R2: f64 = 7.21935547567138069525e-01; /* 0x3FE71A18, 0x93D3DCDC */
-const R3: f64 = 1.71933865632803078993e-01; /* 0x3FC601ED, 0xCCFBDF27 */
-const R4: f64 = 1.86459191715652901344e-02; /* 0x3F9317EA, 0x742ED475 */
-const R5: f64 = 7.77942496381893596434e-04; /* 0x3F497DDA, 0xCA41A95B */
-const R6: f64 = 7.32668430744625636189e-06; /* 0x3EDEBAF7, 0xA5B38140 */
-const W0: f64 = 4.18938533204672725052e-01; /* 0x3FDACFE3, 0x90C97D69 */
-const W1: f64 = 8.33333333333329678849e-02; /* 0x3FB55555, 0x5555553B */
-const W2: f64 = -2.77777777728775536470e-03; /* 0xBF66C16C, 0x16B02E5C */
-const W3: f64 = 7.93650558643019558500e-04; /* 0x3F4A019F, 0x98CF38B6 */
-const W4: f64 = -5.95187557450339963135e-04; /* 0xBF4380CB, 0x8C0FE741 */
-const W5: f64 = 8.36339918996282139126e-04; /* 0x3F4B67BA, 0x4CDAD5D1 */
-const W6: f64 = -1.63092934096575273989e-03; /* 0xBF5AB89D, 0x0B9E43E4 */
-
-/* sin(PI*x) assuming x > 2^-100, if sin(PI*x)==0 the sign is arbitrary */
-fn sin_pi(mut x: f64) -> f64 {
- let mut n: i32;
-
- /* spurious inexact if odd int */
- x = 2.0 * (x * 0.5 - floor(x * 0.5)); /* x mod 2.0 */
-
- n = (x * 4.0) as i32;
- n = (n + 1) / 2;
- x -= (n as f64) * 0.5;
- x *= PI;
-
- match n {
- 1 => k_cos(x, 0.0),
- 2 => k_sin(-x, 0.0, 0),
- 3 => -k_cos(x, 0.0),
- 0 | _ => k_sin(x, 0.0, 0),
- }
-}
-
-pub fn lgamma_r(mut x: f64) -> (f64, i32) {
- let u: u64 = x.to_bits();
- let mut t: f64;
- let y: f64;
- let mut z: f64;
- let nadj: f64;
- let p: f64;
- let p1: f64;
- let p2: f64;
- let p3: f64;
- let q: f64;
- let mut r: f64;
- let w: f64;
- let ix: u32;
- let sign: bool;
- let i: i32;
- let mut signgam: i32;
-
- /* purge off +-inf, NaN, +-0, tiny and negative arguments */
- signgam = 1;
- sign = (u >> 63) != 0;
- ix = ((u >> 32) as u32) & 0x7fffffff;
- if ix >= 0x7ff00000 {
- return (x * x, signgam);
- }
- if ix < (0x3ff - 70) << 20 {
- /* |x|<2**-70, return -log(|x|) */
- if sign {
- x = -x;
- signgam = -1;
- }
- return (-log(x), signgam);
- }
- if sign {
- x = -x;
- t = sin_pi(x);
- if t == 0.0 {
- /* -integer */
- return (1.0 / (x - x), signgam);
- }
- if t > 0.0 {
- signgam = -1;
- } else {
- t = -t;
- }
- nadj = log(PI / (t * x));
- } else {
- nadj = 0.0;
- }
-
- /* purge off 1 and 2 */
- if (ix == 0x3ff00000 || ix == 0x40000000) && (u & 0xffffffff) == 0 {
- r = 0.0;
- }
- /* for x < 2.0 */
- else if ix < 0x40000000 {
- if ix <= 0x3feccccc {
- /* lgamma(x) = lgamma(x+1)-log(x) */
- r = -log(x);
- if ix >= 0x3FE76944 {
- y = 1.0 - x;
- i = 0;
- } else if ix >= 0x3FCDA661 {
- y = x - (TC - 1.0);
- i = 1;
- } else {
- y = x;
- i = 2;
- }
- } else {
- r = 0.0;
- if ix >= 0x3FFBB4C3 {
- /* [1.7316,2] */
- y = 2.0 - x;
- i = 0;
- } else if ix >= 0x3FF3B4C4 {
- /* [1.23,1.73] */
- y = x - TC;
- i = 1;
- } else {
- y = x - 1.0;
- i = 2;
- }
- }
- match i {
- 0 => {
- z = y * y;
- p1 = A0 + z * (A2 + z * (A4 + z * (A6 + z * (A8 + z * A10))));
- p2 = z * (A1 + z * (A3 + z * (A5 + z * (A7 + z * (A9 + z * A11)))));
- p = y * p1 + p2;
- r += p - 0.5 * y;
- }
- 1 => {
- z = y * y;
- w = z * y;
- p1 = T0 + w * (T3 + w * (T6 + w * (T9 + w * T12))); /* parallel comp */
- p2 = T1 + w * (T4 + w * (T7 + w * (T10 + w * T13)));
- p3 = T2 + w * (T5 + w * (T8 + w * (T11 + w * T14)));
- p = z * p1 - (TT - w * (p2 + y * p3));
- r += TF + p;
- }
- 2 => {
- p1 = y * (U0 + y * (U1 + y * (U2 + y * (U3 + y * (U4 + y * U5)))));
- p2 = 1.0 + y * (V1 + y * (V2 + y * (V3 + y * (V4 + y * V5))));
- r += -0.5 * y + p1 / p2;
- }
- #[cfg(feature = "checked")]
- _ => unreachable!(),
- #[cfg(not(feature = "checked"))]
- _ => {}
- }
- } else if ix < 0x40200000 {
- /* x < 8.0 */
- i = x as i32;
- y = x - (i as f64);
- p = y * (S0 + y * (S1 + y * (S2 + y * (S3 + y * (S4 + y * (S5 + y * S6))))));
- q = 1.0 + y * (R1 + y * (R2 + y * (R3 + y * (R4 + y * (R5 + y * R6)))));
- r = 0.5 * y + p / q;
- z = 1.0; /* lgamma(1+s) = log(s) + lgamma(s) */
- // TODO: In C, this was implemented using switch jumps with fallthrough.
- // Does this implementation have performance problems?
- if i >= 7 {
- z *= y + 6.0;
- }
- if i >= 6 {
- z *= y + 5.0;
- }
- if i >= 5 {
- z *= y + 4.0;
- }
- if i >= 4 {
- z *= y + 3.0;
- }
- if i >= 3 {
- z *= y + 2.0;
- r += log(z);
- }
- } else if ix < 0x43900000 {
- /* 8.0 <= x < 2**58 */
- t = log(x);
- z = 1.0 / x;
- y = z * z;
- w = W0 + z * (W1 + y * (W2 + y * (W3 + y * (W4 + y * (W5 + y * W6)))));
- r = (x - 0.5) * (t - 1.0) + w;
- } else {
- /* 2**58 <= x <= inf */
- r = x * (log(x) - 1.0);
- }
- if sign {
- r = nadj - r;
- }
- return (r, signgam);
-}
diff --git a/vendor/libm-0.1.4/src/math/lgammaf.rs b/vendor/libm-0.1.4/src/math/lgammaf.rs
deleted file mode 100644
index dfdc87f96..000000000
--- a/vendor/libm-0.1.4/src/math/lgammaf.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-use super::lgammaf_r;
-
-pub fn lgammaf(x: f32) -> f32 {
- lgammaf_r(x).0
-}
diff --git a/vendor/libm-0.1.4/src/math/lgammaf_r.rs b/vendor/libm-0.1.4/src/math/lgammaf_r.rs
deleted file mode 100644
index 0745359a2..000000000
--- a/vendor/libm-0.1.4/src/math/lgammaf_r.rs
+++ /dev/null
@@ -1,254 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_lgammaf_r.c */
-/*
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-use super::{floorf, k_cosf, k_sinf, logf};
-
-const PI: f32 = 3.1415927410e+00; /* 0x40490fdb */
-const A0: f32 = 7.7215664089e-02; /* 0x3d9e233f */
-const A1: f32 = 3.2246702909e-01; /* 0x3ea51a66 */
-const A2: f32 = 6.7352302372e-02; /* 0x3d89f001 */
-const A3: f32 = 2.0580807701e-02; /* 0x3ca89915 */
-const A4: f32 = 7.3855509982e-03; /* 0x3bf2027e */
-const A5: f32 = 2.8905137442e-03; /* 0x3b3d6ec6 */
-const A6: f32 = 1.1927076848e-03; /* 0x3a9c54a1 */
-const A7: f32 = 5.1006977446e-04; /* 0x3a05b634 */
-const A8: f32 = 2.2086278477e-04; /* 0x39679767 */
-const A9: f32 = 1.0801156895e-04; /* 0x38e28445 */
-const A10: f32 = 2.5214456400e-05; /* 0x37d383a2 */
-const A11: f32 = 4.4864096708e-05; /* 0x383c2c75 */
-const TC: f32 = 1.4616321325e+00; /* 0x3fbb16c3 */
-const TF: f32 = -1.2148628384e-01; /* 0xbdf8cdcd */
-/* TT = -(tail of TF) */
-const TT: f32 = 6.6971006518e-09; /* 0x31e61c52 */
-const T0: f32 = 4.8383611441e-01; /* 0x3ef7b95e */
-const T1: f32 = -1.4758771658e-01; /* 0xbe17213c */
-const T2: f32 = 6.4624942839e-02; /* 0x3d845a15 */
-const T3: f32 = -3.2788541168e-02; /* 0xbd064d47 */
-const T4: f32 = 1.7970675603e-02; /* 0x3c93373d */
-const T5: f32 = -1.0314224288e-02; /* 0xbc28fcfe */
-const T6: f32 = 6.1005386524e-03; /* 0x3bc7e707 */
-const T7: f32 = -3.6845202558e-03; /* 0xbb7177fe */
-const T8: f32 = 2.2596477065e-03; /* 0x3b141699 */
-const T9: f32 = -1.4034647029e-03; /* 0xbab7f476 */
-const T10: f32 = 8.8108185446e-04; /* 0x3a66f867 */
-const T11: f32 = -5.3859531181e-04; /* 0xba0d3085 */
-const T12: f32 = 3.1563205994e-04; /* 0x39a57b6b */
-const T13: f32 = -3.1275415677e-04; /* 0xb9a3f927 */
-const T14: f32 = 3.3552918467e-04; /* 0x39afe9f7 */
-const U0: f32 = -7.7215664089e-02; /* 0xbd9e233f */
-const U1: f32 = 6.3282704353e-01; /* 0x3f2200f4 */
-const U2: f32 = 1.4549225569e+00; /* 0x3fba3ae7 */
-const U3: f32 = 9.7771751881e-01; /* 0x3f7a4bb2 */
-const U4: f32 = 2.2896373272e-01; /* 0x3e6a7578 */
-const U5: f32 = 1.3381091878e-02; /* 0x3c5b3c5e */
-const V1: f32 = 2.4559779167e+00; /* 0x401d2ebe */
-const V2: f32 = 2.1284897327e+00; /* 0x4008392d */
-const V3: f32 = 7.6928514242e-01; /* 0x3f44efdf */
-const V4: f32 = 1.0422264785e-01; /* 0x3dd572af */
-const V5: f32 = 3.2170924824e-03; /* 0x3b52d5db */
-const S0: f32 = -7.7215664089e-02; /* 0xbd9e233f */
-const S1: f32 = 2.1498242021e-01; /* 0x3e5c245a */
-const S2: f32 = 3.2577878237e-01; /* 0x3ea6cc7a */
-const S3: f32 = 1.4635047317e-01; /* 0x3e15dce6 */
-const S4: f32 = 2.6642270386e-02; /* 0x3cda40e4 */
-const S5: f32 = 1.8402845599e-03; /* 0x3af135b4 */
-const S6: f32 = 3.1947532989e-05; /* 0x3805ff67 */
-const R1: f32 = 1.3920053244e+00; /* 0x3fb22d3b */
-const R2: f32 = 7.2193557024e-01; /* 0x3f38d0c5 */
-const R3: f32 = 1.7193385959e-01; /* 0x3e300f6e */
-const R4: f32 = 1.8645919859e-02; /* 0x3c98bf54 */
-const R5: f32 = 7.7794247773e-04; /* 0x3a4beed6 */
-const R6: f32 = 7.3266842264e-06; /* 0x36f5d7bd */
-const W0: f32 = 4.1893854737e-01; /* 0x3ed67f1d */
-const W1: f32 = 8.3333335817e-02; /* 0x3daaaaab */
-const W2: f32 = -2.7777778450e-03; /* 0xbb360b61 */
-const W3: f32 = 7.9365057172e-04; /* 0x3a500cfd */
-const W4: f32 = -5.9518753551e-04; /* 0xba1c065c */
-const W5: f32 = 8.3633989561e-04; /* 0x3a5b3dd2 */
-const W6: f32 = -1.6309292987e-03; /* 0xbad5c4e8 */
-
-/* sin(PI*x) assuming x > 2^-100, if sin(PI*x)==0 the sign is arbitrary */
-fn sin_pi(mut x: f32) -> f32 {
- let mut y: f64;
- let mut n: isize;
-
- /* spurious inexact if odd int */
- x = 2.0 * (x * 0.5 - floorf(x * 0.5)); /* x mod 2.0 */
-
- n = (x * 4.0) as isize;
- n = (n + 1) / 2;
- y = (x as f64) - (n as f64) * 0.5;
- y *= 3.14159265358979323846;
- match n {
- 1 => k_cosf(y),
- 2 => k_sinf(-y),
- 3 => -k_cosf(y),
- 0 | _ => k_sinf(y),
- }
-}
-
-pub fn lgammaf_r(mut x: f32) -> (f32, i32) {
- let u = x.to_bits();
- let mut t: f32;
- let y: f32;
- let mut z: f32;
- let nadj: f32;
- let p: f32;
- let p1: f32;
- let p2: f32;
- let p3: f32;
- let q: f32;
- let mut r: f32;
- let w: f32;
- let ix: u32;
- let i: i32;
- let sign: bool;
- let mut signgam: i32;
-
- /* purge off +-inf, NaN, +-0, tiny and negative arguments */
- signgam = 1;
- sign = (u >> 31) != 0;
- ix = u & 0x7fffffff;
- if ix >= 0x7f800000 {
- return (x * x, signgam);
- }
- if ix < 0x35000000 {
- /* |x| < 2**-21, return -log(|x|) */
- if sign {
- signgam = -1;
- x = -x;
- }
- return (-logf(x), signgam);
- }
- if sign {
- x = -x;
- t = sin_pi(x);
- if t == 0.0 {
- /* -integer */
- return (1.0 / (x - x), signgam);
- }
- if t > 0.0 {
- signgam = -1;
- } else {
- t = -t;
- }
- nadj = logf(PI / (t * x));
- } else {
- nadj = 0.0;
- }
-
- /* purge off 1 and 2 */
- if ix == 0x3f800000 || ix == 0x40000000 {
- r = 0.0;
- }
- /* for x < 2.0 */
- else if ix < 0x40000000 {
- if ix <= 0x3f666666 {
- /* lgamma(x) = lgamma(x+1)-log(x) */
- r = -logf(x);
- if ix >= 0x3f3b4a20 {
- y = 1.0 - x;
- i = 0;
- } else if ix >= 0x3e6d3308 {
- y = x - (TC - 1.0);
- i = 1;
- } else {
- y = x;
- i = 2;
- }
- } else {
- r = 0.0;
- if ix >= 0x3fdda618 {
- /* [1.7316,2] */
- y = 2.0 - x;
- i = 0;
- } else if ix >= 0x3F9da620 {
- /* [1.23,1.73] */
- y = x - TC;
- i = 1;
- } else {
- y = x - 1.0;
- i = 2;
- }
- }
- match i {
- 0 => {
- z = y * y;
- p1 = A0 + z * (A2 + z * (A4 + z * (A6 + z * (A8 + z * A10))));
- p2 = z * (A1 + z * (A3 + z * (A5 + z * (A7 + z * (A9 + z * A11)))));
- p = y * p1 + p2;
- r += p - 0.5 * y;
- }
- 1 => {
- z = y * y;
- w = z * y;
- p1 = T0 + w * (T3 + w * (T6 + w * (T9 + w * T12))); /* parallel comp */
- p2 = T1 + w * (T4 + w * (T7 + w * (T10 + w * T13)));
- p3 = T2 + w * (T5 + w * (T8 + w * (T11 + w * T14)));
- p = z * p1 - (TT - w * (p2 + y * p3));
- r += TF + p;
- }
- 2 => {
- p1 = y * (U0 + y * (U1 + y * (U2 + y * (U3 + y * (U4 + y * U5)))));
- p2 = 1.0 + y * (V1 + y * (V2 + y * (V3 + y * (V4 + y * V5))));
- r += -0.5 * y + p1 / p2;
- }
- #[cfg(feature = "checked")]
- _ => unreachable!(),
- #[cfg(not(feature = "checked"))]
- _ => {}
- }
- } else if ix < 0x41000000 {
- /* x < 8.0 */
- i = x as i32;
- y = x - (i as f32);
- p = y * (S0 + y * (S1 + y * (S2 + y * (S3 + y * (S4 + y * (S5 + y * S6))))));
- q = 1.0 + y * (R1 + y * (R2 + y * (R3 + y * (R4 + y * (R5 + y * R6)))));
- r = 0.5 * y + p / q;
- z = 1.0; /* lgamma(1+s) = log(s) + lgamma(s) */
- // TODO: In C, this was implemented using switch jumps with fallthrough.
- // Does this implementation have performance problems?
- if i >= 7 {
- z *= y + 6.0;
- }
- if i >= 6 {
- z *= y + 5.0;
- }
- if i >= 5 {
- z *= y + 4.0;
- }
- if i >= 4 {
- z *= y + 3.0;
- }
- if i >= 3 {
- z *= y + 2.0;
- r += logf(z);
- }
- } else if ix < 0x5c800000 {
- /* 8.0 <= x < 2**58 */
- t = logf(x);
- z = 1.0 / x;
- y = z * z;
- w = W0 + z * (W1 + y * (W2 + y * (W3 + y * (W4 + y * (W5 + y * W6)))));
- r = (x - 0.5) * (t - 1.0) + w;
- } else {
- /* 2**58 <= x <= inf */
- r = x * (logf(x) - 1.0);
- }
- if sign {
- r = nadj - r;
- }
- return (r, signgam);
-}
diff --git a/vendor/libm-0.1.4/src/math/log.rs b/vendor/libm-0.1.4/src/math/log.rs
deleted file mode 100644
index 4126e413b..000000000
--- a/vendor/libm-0.1.4/src/math/log.rs
+++ /dev/null
@@ -1,118 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_log.c */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunSoft, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-/* log(x)
- * Return the logarithm of x
- *
- * Method :
- * 1. Argument Reduction: find k and f such that
- * x = 2^k * (1+f),
- * where sqrt(2)/2 < 1+f < sqrt(2) .
- *
- * 2. Approximation of log(1+f).
- * Let s = f/(2+f) ; based on log(1+f) = log(1+s) - log(1-s)
- * = 2s + 2/3 s**3 + 2/5 s**5 + .....,
- * = 2s + s*R
- * We use a special Remez algorithm on [0,0.1716] to generate
- * a polynomial of degree 14 to approximate R The maximum error
- * of this polynomial approximation is bounded by 2**-58.45. In
- * other words,
- * 2 4 6 8 10 12 14
- * R(z) ~ Lg1*s +Lg2*s +Lg3*s +Lg4*s +Lg5*s +Lg6*s +Lg7*s
- * (the values of Lg1 to Lg7 are listed in the program)
- * and
- * | 2 14 | -58.45
- * | Lg1*s +...+Lg7*s - R(z) | <= 2
- * | |
- * Note that 2s = f - s*f = f - hfsq + s*hfsq, where hfsq = f*f/2.
- * In order to guarantee error in log below 1ulp, we compute log
- * by
- * log(1+f) = f - s*(f - R) (if f is not too large)
- * log(1+f) = f - (hfsq - s*(hfsq+R)). (better accuracy)
- *
- * 3. Finally, log(x) = k*ln2 + log(1+f).
- * = k*ln2_hi+(f-(hfsq-(s*(hfsq+R)+k*ln2_lo)))
- * Here ln2 is split into two floating point number:
- * ln2_hi + ln2_lo,
- * where n*ln2_hi is always exact for |n| < 2000.
- *
- * Special cases:
- * log(x) is NaN with signal if x < 0 (including -INF) ;
- * log(+INF) is +INF; log(0) is -INF with signal;
- * log(NaN) is that NaN with no signal.
- *
- * Accuracy:
- * according to an error analysis, the error is always less than
- * 1 ulp (unit in the last place).
- *
- * Constants:
- * The hexadecimal values are the intended ones for the following
- * constants. The decimal values may be used, provided that the
- * compiler will convert from decimal to binary accurately enough
- * to produce the hexadecimal values shown.
- */
-
-const LN2_HI: f64 = 6.93147180369123816490e-01; /* 3fe62e42 fee00000 */
-const LN2_LO: f64 = 1.90821492927058770002e-10; /* 3dea39ef 35793c76 */
-const LG1: f64 = 6.666666666666735130e-01; /* 3FE55555 55555593 */
-const LG2: f64 = 3.999999999940941908e-01; /* 3FD99999 9997FA04 */
-const LG3: f64 = 2.857142874366239149e-01; /* 3FD24924 94229359 */
-const LG4: f64 = 2.222219843214978396e-01; /* 3FCC71C5 1D8E78AF */
-const LG5: f64 = 1.818357216161805012e-01; /* 3FC74664 96CB03DE */
-const LG6: f64 = 1.531383769920937332e-01; /* 3FC39A09 D078C69F */
-const LG7: f64 = 1.479819860511658591e-01; /* 3FC2F112 DF3E5244 */
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn log(mut x: f64) -> f64 {
- let x1p54 = f64::from_bits(0x4350000000000000); // 0x1p54 === 2 ^ 54
-
- let mut ui = x.to_bits();
- let mut hx: u32 = (ui >> 32) as u32;
- let mut k: i32 = 0;
-
- if (hx < 0x00100000) || ((hx >> 31) != 0) {
- /* x < 2**-126 */
- if ui << 1 == 0 {
- return -1. / (x * x); /* log(+-0)=-inf */
- }
- if hx >> 31 != 0 {
- return (x - x) / 0.0; /* log(-#) = NaN */
- }
- /* subnormal number, scale x up */
- k -= 54;
- x *= x1p54;
- ui = x.to_bits();
- hx = (ui >> 32) as u32;
- } else if hx >= 0x7ff00000 {
- return x;
- } else if hx == 0x3ff00000 && ui << 32 == 0 {
- return 0.;
- }
-
- /* reduce x into [sqrt(2)/2, sqrt(2)] */
- hx += 0x3ff00000 - 0x3fe6a09e;
- k += ((hx >> 20) as i32) - 0x3ff;
- hx = (hx & 0x000fffff) + 0x3fe6a09e;
- ui = ((hx as u64) << 32) | (ui & 0xffffffff);
- x = f64::from_bits(ui);
-
- let f: f64 = x - 1.0;
- let hfsq: f64 = 0.5 * f * f;
- let s: f64 = f / (2.0 + f);
- let z: f64 = s * s;
- let w: f64 = z * z;
- let t1: f64 = w * (LG2 + w * (LG4 + w * LG6));
- let t2: f64 = z * (LG1 + w * (LG3 + w * (LG5 + w * LG7)));
- let r: f64 = t2 + t1;
- let dk: f64 = k as f64;
- s * (hfsq + r) + dk * LN2_LO - hfsq + f + dk * LN2_HI
-}
diff --git a/vendor/libm-0.1.4/src/math/log10.rs b/vendor/libm-0.1.4/src/math/log10.rs
deleted file mode 100644
index c99696040..000000000
--- a/vendor/libm-0.1.4/src/math/log10.rs
+++ /dev/null
@@ -1,118 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_log10.c */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunSoft, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-/*
- * Return the base 10 logarithm of x. See log.c for most comments.
- *
- * Reduce x to 2^k (1+f) and calculate r = log(1+f) - f + f*f/2
- * as in log.c, then combine and scale in extra precision:
- * log10(x) = (f - f*f/2 + r)/log(10) + k*log10(2)
- */
-
-use core::f64;
-
-const IVLN10HI: f64 = 4.34294481878168880939e-01; /* 0x3fdbcb7b, 0x15200000 */
-const IVLN10LO: f64 = 2.50829467116452752298e-11; /* 0x3dbb9438, 0xca9aadd5 */
-const LOG10_2HI: f64 = 3.01029995663611771306e-01; /* 0x3FD34413, 0x509F6000 */
-const LOG10_2LO: f64 = 3.69423907715893078616e-13; /* 0x3D59FEF3, 0x11F12B36 */
-const LG1: f64 = 6.666666666666735130e-01; /* 3FE55555 55555593 */
-const LG2: f64 = 3.999999999940941908e-01; /* 3FD99999 9997FA04 */
-const LG3: f64 = 2.857142874366239149e-01; /* 3FD24924 94229359 */
-const LG4: f64 = 2.222219843214978396e-01; /* 3FCC71C5 1D8E78AF */
-const LG5: f64 = 1.818357216161805012e-01; /* 3FC74664 96CB03DE */
-const LG6: f64 = 1.531383769920937332e-01; /* 3FC39A09 D078C69F */
-const LG7: f64 = 1.479819860511658591e-01; /* 3FC2F112 DF3E5244 */
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn log10(mut x: f64) -> f64 {
- let x1p54 = f64::from_bits(0x4350000000000000); // 0x1p54 === 2 ^ 54
-
- let mut ui: u64 = x.to_bits();
- let hfsq: f64;
- let f: f64;
- let s: f64;
- let z: f64;
- let r: f64;
- let mut w: f64;
- let t1: f64;
- let t2: f64;
- let dk: f64;
- let y: f64;
- let mut hi: f64;
- let lo: f64;
- let mut val_hi: f64;
- let mut val_lo: f64;
- let mut hx: u32;
- let mut k: i32;
-
- hx = (ui >> 32) as u32;
- k = 0;
- if hx < 0x00100000 || (hx >> 31) > 0 {
- if ui << 1 == 0 {
- return -1. / (x * x); /* log(+-0)=-inf */
- }
- if (hx >> 31) > 0 {
- return (x - x) / 0.0; /* log(-#) = NaN */
- }
- /* subnormal number, scale x up */
- k -= 54;
- x *= x1p54;
- ui = x.to_bits();
- hx = (ui >> 32) as u32;
- } else if hx >= 0x7ff00000 {
- return x;
- } else if hx == 0x3ff00000 && ui << 32 == 0 {
- return 0.;
- }
-
- /* reduce x into [sqrt(2)/2, sqrt(2)] */
- hx += 0x3ff00000 - 0x3fe6a09e;
- k += (hx >> 20) as i32 - 0x3ff;
- hx = (hx & 0x000fffff) + 0x3fe6a09e;
- ui = (hx as u64) << 32 | (ui & 0xffffffff);
- x = f64::from_bits(ui);
-
- f = x - 1.0;
- hfsq = 0.5 * f * f;
- s = f / (2.0 + f);
- z = s * s;
- w = z * z;
- t1 = w * (LG2 + w * (LG4 + w * LG6));
- t2 = z * (LG1 + w * (LG3 + w * (LG5 + w * LG7)));
- r = t2 + t1;
-
- /* See log2.c for details. */
- /* hi+lo = f - hfsq + s*(hfsq+R) ~ log(1+f) */
- hi = f - hfsq;
- ui = hi.to_bits();
- ui &= (-1i64 as u64) << 32;
- hi = f64::from_bits(ui);
- lo = f - hi - hfsq + s * (hfsq + r);
-
- /* val_hi+val_lo ~ log10(1+f) + k*log10(2) */
- val_hi = hi * IVLN10HI;
- dk = k as f64;
- y = dk * LOG10_2HI;
- val_lo = dk * LOG10_2LO + (lo + hi) * IVLN10LO + lo * IVLN10HI;
-
- /*
- * Extra precision in for adding y is not strictly needed
- * since there is no very large cancellation near x = sqrt(2) or
- * x = 1/sqrt(2), but we do it anyway since it costs little on CPUs
- * with some parallelism and it reduces the error for many args.
- */
- w = y + val_hi;
- val_lo += (y - w) + val_hi;
- val_hi = w;
-
- val_lo + val_hi
-}
diff --git a/vendor/libm-0.1.4/src/math/log10f.rs b/vendor/libm-0.1.4/src/math/log10f.rs
deleted file mode 100644
index 9845cda5d..000000000
--- a/vendor/libm-0.1.4/src/math/log10f.rs
+++ /dev/null
@@ -1,92 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_log10f.c */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-/*
- * See comments in log10.c.
- */
-
-use core::f32;
-
-const IVLN10HI: f32 = 4.3432617188e-01; /* 0x3ede6000 */
-const IVLN10LO: f32 = -3.1689971365e-05; /* 0xb804ead9 */
-const LOG10_2HI: f32 = 3.0102920532e-01; /* 0x3e9a2080 */
-const LOG10_2LO: f32 = 7.9034151668e-07; /* 0x355427db */
-/* |(log(1+s)-log(1-s))/s - Lg(s)| < 2**-34.24 (~[-4.95e-11, 4.97e-11]). */
-const LG1: f32 = 0.66666662693; /* 0xaaaaaa.0p-24 */
-const LG2: f32 = 0.40000972152; /* 0xccce13.0p-25 */
-const LG3: f32 = 0.28498786688; /* 0x91e9ee.0p-25 */
-const LG4: f32 = 0.24279078841; /* 0xf89e26.0p-26 */
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn log10f(mut x: f32) -> f32 {
- let x1p25f = f32::from_bits(0x4c000000); // 0x1p25f === 2 ^ 25
-
- let mut ui: u32 = x.to_bits();
- let hfsq: f32;
- let f: f32;
- let s: f32;
- let z: f32;
- let r: f32;
- let w: f32;
- let t1: f32;
- let t2: f32;
- let dk: f32;
- let mut hi: f32;
- let lo: f32;
- let mut ix: u32;
- let mut k: i32;
-
- ix = ui;
- k = 0;
- if ix < 0x00800000 || (ix >> 31) > 0 {
- /* x < 2**-126 */
- if ix << 1 == 0 {
- return -1. / (x * x); /* log(+-0)=-inf */
- }
- if (ix >> 31) > 0 {
- return (x - x) / 0.0; /* log(-#) = NaN */
- }
- /* subnormal number, scale up x */
- k -= 25;
- x *= x1p25f;
- ui = x.to_bits();
- ix = ui;
- } else if ix >= 0x7f800000 {
- return x;
- } else if ix == 0x3f800000 {
- return 0.;
- }
-
- /* reduce x into [sqrt(2)/2, sqrt(2)] */
- ix += 0x3f800000 - 0x3f3504f3;
- k += (ix >> 23) as i32 - 0x7f;
- ix = (ix & 0x007fffff) + 0x3f3504f3;
- ui = ix;
- x = f32::from_bits(ui);
-
- f = x - 1.0;
- s = f / (2.0 + f);
- z = s * s;
- w = z * z;
- t1 = w * (LG2 + w * LG4);
- t2 = z * (LG1 + w * LG3);
- r = t2 + t1;
- hfsq = 0.5 * f * f;
-
- hi = f - hfsq;
- ui = hi.to_bits();
- ui &= 0xfffff000;
- hi = f32::from_bits(ui);
- lo = f - hi - hfsq + s * (hfsq + r);
- dk = k as f32;
- dk * LOG10_2LO + (lo + hi) * IVLN10LO + lo * IVLN10HI + hi * IVLN10HI + dk * LOG10_2HI
-}
diff --git a/vendor/libm-0.1.4/src/math/log1p.rs b/vendor/libm-0.1.4/src/math/log1p.rs
deleted file mode 100644
index cd7045ac9..000000000
--- a/vendor/libm-0.1.4/src/math/log1p.rs
+++ /dev/null
@@ -1,144 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/s_log1p.c */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-/* double log1p(double x)
- * Return the natural logarithm of 1+x.
- *
- * Method :
- * 1. Argument Reduction: find k and f such that
- * 1+x = 2^k * (1+f),
- * where sqrt(2)/2 < 1+f < sqrt(2) .
- *
- * Note. If k=0, then f=x is exact. However, if k!=0, then f
- * may not be representable exactly. In that case, a correction
- * term is need. Let u=1+x rounded. Let c = (1+x)-u, then
- * log(1+x) - log(u) ~ c/u. Thus, we proceed to compute log(u),
- * and add back the correction term c/u.
- * (Note: when x > 2**53, one can simply return log(x))
- *
- * 2. Approximation of log(1+f): See log.c
- *
- * 3. Finally, log1p(x) = k*ln2 + log(1+f) + c/u. See log.c
- *
- * Special cases:
- * log1p(x) is NaN with signal if x < -1 (including -INF) ;
- * log1p(+INF) is +INF; log1p(-1) is -INF with signal;
- * log1p(NaN) is that NaN with no signal.
- *
- * Accuracy:
- * according to an error analysis, the error is always less than
- * 1 ulp (unit in the last place).
- *
- * Constants:
- * The hexadecimal values are the intended ones for the following
- * constants. The decimal values may be used, provided that the
- * compiler will convert from decimal to binary accurately enough
- * to produce the hexadecimal values shown.
- *
- * Note: Assuming log() return accurate answer, the following
- * algorithm can be used to compute log1p(x) to within a few ULP:
- *
- * u = 1+x;
- * if(u==1.0) return x ; else
- * return log(u)*(x/(u-1.0));
- *
- * See HP-15C Advanced Functions Handbook, p.193.
- */
-
-use core::f64;
-
-const LN2_HI: f64 = 6.93147180369123816490e-01; /* 3fe62e42 fee00000 */
-const LN2_LO: f64 = 1.90821492927058770002e-10; /* 3dea39ef 35793c76 */
-const LG1: f64 = 6.666666666666735130e-01; /* 3FE55555 55555593 */
-const LG2: f64 = 3.999999999940941908e-01; /* 3FD99999 9997FA04 */
-const LG3: f64 = 2.857142874366239149e-01; /* 3FD24924 94229359 */
-const LG4: f64 = 2.222219843214978396e-01; /* 3FCC71C5 1D8E78AF */
-const LG5: f64 = 1.818357216161805012e-01; /* 3FC74664 96CB03DE */
-const LG6: f64 = 1.531383769920937332e-01; /* 3FC39A09 D078C69F */
-const LG7: f64 = 1.479819860511658591e-01; /* 3FC2F112 DF3E5244 */
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn log1p(x: f64) -> f64 {
- let mut ui: u64 = x.to_bits();
- let hfsq: f64;
- let mut f: f64 = 0.;
- let mut c: f64 = 0.;
- let s: f64;
- let z: f64;
- let r: f64;
- let w: f64;
- let t1: f64;
- let t2: f64;
- let dk: f64;
- let hx: u32;
- let mut hu: u32;
- let mut k: i32;
-
- hx = (ui >> 32) as u32;
- k = 1;
- if hx < 0x3fda827a || (hx >> 31) > 0 {
- /* 1+x < sqrt(2)+ */
- if hx >= 0xbff00000 {
- /* x <= -1.0 */
- if x == -1. {
- return x / 0.0; /* log1p(-1) = -inf */
- }
- return (x - x) / 0.0; /* log1p(x<-1) = NaN */
- }
- if hx << 1 < 0x3ca00000 << 1 {
- /* |x| < 2**-53 */
- /* underflow if subnormal */
- if (hx & 0x7ff00000) == 0 {
- force_eval!(x as f32);
- }
- return x;
- }
- if hx <= 0xbfd2bec4 {
- /* sqrt(2)/2- <= 1+x < sqrt(2)+ */
- k = 0;
- c = 0.;
- f = x;
- }
- } else if hx >= 0x7ff00000 {
- return x;
- }
- if k > 0 {
- ui = (1. + x).to_bits();
- hu = (ui >> 32) as u32;
- hu += 0x3ff00000 - 0x3fe6a09e;
- k = (hu >> 20) as i32 - 0x3ff;
- /* correction term ~ log(1+x)-log(u), avoid underflow in c/u */
- if k < 54 {
- c = if k >= 2 {
- 1. - (f64::from_bits(ui) - x)
- } else {
- x - (f64::from_bits(ui) - 1.)
- };
- c /= f64::from_bits(ui);
- } else {
- c = 0.;
- }
- /* reduce u into [sqrt(2)/2, sqrt(2)] */
- hu = (hu & 0x000fffff) + 0x3fe6a09e;
- ui = (hu as u64) << 32 | (ui & 0xffffffff);
- f = f64::from_bits(ui) - 1.;
- }
- hfsq = 0.5 * f * f;
- s = f / (2.0 + f);
- z = s * s;
- w = z * z;
- t1 = w * (LG2 + w * (LG4 + w * LG6));
- t2 = z * (LG1 + w * (LG3 + w * (LG5 + w * LG7)));
- r = t2 + t1;
- dk = k as f64;
- s * (hfsq + r) + (dk * LN2_LO + c) - hfsq + f + dk * LN2_HI
-}
diff --git a/vendor/libm-0.1.4/src/math/log1pf.rs b/vendor/libm-0.1.4/src/math/log1pf.rs
deleted file mode 100644
index 8e9651357..000000000
--- a/vendor/libm-0.1.4/src/math/log1pf.rs
+++ /dev/null
@@ -1,99 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/s_log1pf.c */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-use core::f32;
-
-const LN2_HI: f32 = 6.9313812256e-01; /* 0x3f317180 */
-const LN2_LO: f32 = 9.0580006145e-06; /* 0x3717f7d1 */
-/* |(log(1+s)-log(1-s))/s - Lg(s)| < 2**-34.24 (~[-4.95e-11, 4.97e-11]). */
-const LG1: f32 = 0.66666662693; /* 0xaaaaaa.0p-24 */
-const LG2: f32 = 0.40000972152; /* 0xccce13.0p-25 */
-const LG3: f32 = 0.28498786688; /* 0x91e9ee.0p-25 */
-const LG4: f32 = 0.24279078841; /* 0xf89e26.0p-26 */
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn log1pf(x: f32) -> f32 {
- let mut ui: u32 = x.to_bits();
- let hfsq: f32;
- let mut f: f32 = 0.;
- let mut c: f32 = 0.;
- let s: f32;
- let z: f32;
- let r: f32;
- let w: f32;
- let t1: f32;
- let t2: f32;
- let dk: f32;
- let ix: u32;
- let mut iu: u32;
- let mut k: i32;
-
- ix = ui;
- k = 1;
- if ix < 0x3ed413d0 || (ix >> 31) > 0 {
- /* 1+x < sqrt(2)+ */
- if ix >= 0xbf800000 {
- /* x <= -1.0 */
- if x == -1. {
- return x / 0.0; /* log1p(-1)=+inf */
- }
- return (x - x) / 0.0; /* log1p(x<-1)=NaN */
- }
- if ix << 1 < 0x33800000 << 1 {
- /* |x| < 2**-24 */
- /* underflow if subnormal */
- if (ix & 0x7f800000) == 0 {
- force_eval!(x * x);
- }
- return x;
- }
- if ix <= 0xbe95f619 {
- /* sqrt(2)/2- <= 1+x < sqrt(2)+ */
- k = 0;
- c = 0.;
- f = x;
- }
- } else if ix >= 0x7f800000 {
- return x;
- }
- if k > 0 {
- ui = (1. + x).to_bits();
- iu = ui;
- iu += 0x3f800000 - 0x3f3504f3;
- k = (iu >> 23) as i32 - 0x7f;
- /* correction term ~ log(1+x)-log(u), avoid underflow in c/u */
- if k < 25 {
- c = if k >= 2 {
- 1. - (f32::from_bits(ui) - x)
- } else {
- x - (f32::from_bits(ui) - 1.)
- };
- c /= f32::from_bits(ui);
- } else {
- c = 0.;
- }
- /* reduce u into [sqrt(2)/2, sqrt(2)] */
- iu = (iu & 0x007fffff) + 0x3f3504f3;
- ui = iu;
- f = f32::from_bits(ui) - 1.;
- }
- s = f / (2.0 + f);
- z = s * s;
- w = z * z;
- t1 = w * (LG2 + w * LG4);
- t2 = z * (LG1 + w * LG3);
- r = t2 + t1;
- hfsq = 0.5 * f * f;
- dk = k as f32;
- s * (hfsq + r) + (dk * LN2_LO + c) - hfsq + f + dk * LN2_HI
-}
diff --git a/vendor/libm-0.1.4/src/math/log2.rs b/vendor/libm-0.1.4/src/math/log2.rs
deleted file mode 100644
index a3d43e55c..000000000
--- a/vendor/libm-0.1.4/src/math/log2.rs
+++ /dev/null
@@ -1,107 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_log2.c */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunSoft, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-/*
- * Return the base 2 logarithm of x. See log.c for most comments.
- *
- * Reduce x to 2^k (1+f) and calculate r = log(1+f) - f + f*f/2
- * as in log.c, then combine and scale in extra precision:
- * log2(x) = (f - f*f/2 + r)/log(2) + k
- */
-
-use core::f64;
-
-const IVLN2HI: f64 = 1.44269504072144627571e+00; /* 0x3ff71547, 0x65200000 */
-const IVLN2LO: f64 = 1.67517131648865118353e-10; /* 0x3de705fc, 0x2eefa200 */
-const LG1: f64 = 6.666666666666735130e-01; /* 3FE55555 55555593 */
-const LG2: f64 = 3.999999999940941908e-01; /* 3FD99999 9997FA04 */
-const LG3: f64 = 2.857142874366239149e-01; /* 3FD24924 94229359 */
-const LG4: f64 = 2.222219843214978396e-01; /* 3FCC71C5 1D8E78AF */
-const LG5: f64 = 1.818357216161805012e-01; /* 3FC74664 96CB03DE */
-const LG6: f64 = 1.531383769920937332e-01; /* 3FC39A09 D078C69F */
-const LG7: f64 = 1.479819860511658591e-01; /* 3FC2F112 DF3E5244 */
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn log2(mut x: f64) -> f64 {
- let x1p54 = f64::from_bits(0x4350000000000000); // 0x1p54 === 2 ^ 54
-
- let mut ui: u64 = x.to_bits();
- let hfsq: f64;
- let f: f64;
- let s: f64;
- let z: f64;
- let r: f64;
- let mut w: f64;
- let t1: f64;
- let t2: f64;
- let y: f64;
- let mut hi: f64;
- let lo: f64;
- let mut val_hi: f64;
- let mut val_lo: f64;
- let mut hx: u32;
- let mut k: i32;
-
- hx = (ui >> 32) as u32;
- k = 0;
- if hx < 0x00100000 || (hx >> 31) > 0 {
- if ui << 1 == 0 {
- return -1. / (x * x); /* log(+-0)=-inf */
- }
- if (hx >> 31) > 0 {
- return (x - x) / 0.0; /* log(-#) = NaN */
- }
- /* subnormal number, scale x up */
- k -= 54;
- x *= x1p54;
- ui = x.to_bits();
- hx = (ui >> 32) as u32;
- } else if hx >= 0x7ff00000 {
- return x;
- } else if hx == 0x3ff00000 && ui << 32 == 0 {
- return 0.;
- }
-
- /* reduce x into [sqrt(2)/2, sqrt(2)] */
- hx += 0x3ff00000 - 0x3fe6a09e;
- k += (hx >> 20) as i32 - 0x3ff;
- hx = (hx & 0x000fffff) + 0x3fe6a09e;
- ui = (hx as u64) << 32 | (ui & 0xffffffff);
- x = f64::from_bits(ui);
-
- f = x - 1.0;
- hfsq = 0.5 * f * f;
- s = f / (2.0 + f);
- z = s * s;
- w = z * z;
- t1 = w * (LG2 + w * (LG4 + w * LG6));
- t2 = z * (LG1 + w * (LG3 + w * (LG5 + w * LG7)));
- r = t2 + t1;
-
- /* hi+lo = f - hfsq + s*(hfsq+R) ~ log(1+f) */
- hi = f - hfsq;
- ui = hi.to_bits();
- ui &= (-1i64 as u64) << 32;
- hi = f64::from_bits(ui);
- lo = f - hi - hfsq + s * (hfsq + r);
-
- val_hi = hi * IVLN2HI;
- val_lo = (lo + hi) * IVLN2LO + lo * IVLN2HI;
-
- /* spadd(val_hi, val_lo, y), except for not using double_t: */
- y = k.into();
- w = y + val_hi;
- val_lo += (y - w) + val_hi;
- val_hi = w;
-
- val_lo + val_hi
-}
diff --git a/vendor/libm-0.1.4/src/math/log2f.rs b/vendor/libm-0.1.4/src/math/log2f.rs
deleted file mode 100644
index 53a37e503..000000000
--- a/vendor/libm-0.1.4/src/math/log2f.rs
+++ /dev/null
@@ -1,88 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_log2f.c */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-/*
- * See comments in log2.c.
- */
-
-use core::f32;
-
-const IVLN2HI: f32 = 1.4428710938e+00; /* 0x3fb8b000 */
-const IVLN2LO: f32 = -1.7605285393e-04; /* 0xb9389ad4 */
-/* |(log(1+s)-log(1-s))/s - Lg(s)| < 2**-34.24 (~[-4.95e-11, 4.97e-11]). */
-const LG1: f32 = 0.66666662693; /* 0xaaaaaa.0p-24 */
-const LG2: f32 = 0.40000972152; /* 0xccce13.0p-25 */
-const LG3: f32 = 0.28498786688; /* 0x91e9ee.0p-25 */
-const LG4: f32 = 0.24279078841; /* 0xf89e26.0p-26 */
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn log2f(mut x: f32) -> f32 {
- let x1p25f = f32::from_bits(0x4c000000); // 0x1p25f === 2 ^ 25
-
- let mut ui: u32 = x.to_bits();
- let hfsq: f32;
- let f: f32;
- let s: f32;
- let z: f32;
- let r: f32;
- let w: f32;
- let t1: f32;
- let t2: f32;
- let mut hi: f32;
- let lo: f32;
- let mut ix: u32;
- let mut k: i32;
-
- ix = ui;
- k = 0;
- if ix < 0x00800000 || (ix >> 31) > 0 {
- /* x < 2**-126 */
- if ix << 1 == 0 {
- return -1. / (x * x); /* log(+-0)=-inf */
- }
- if (ix >> 31) > 0 {
- return (x - x) / 0.0; /* log(-#) = NaN */
- }
- /* subnormal number, scale up x */
- k -= 25;
- x *= x1p25f;
- ui = x.to_bits();
- ix = ui;
- } else if ix >= 0x7f800000 {
- return x;
- } else if ix == 0x3f800000 {
- return 0.;
- }
-
- /* reduce x into [sqrt(2)/2, sqrt(2)] */
- ix += 0x3f800000 - 0x3f3504f3;
- k += (ix >> 23) as i32 - 0x7f;
- ix = (ix & 0x007fffff) + 0x3f3504f3;
- ui = ix;
- x = f32::from_bits(ui);
-
- f = x - 1.0;
- s = f / (2.0 + f);
- z = s * s;
- w = z * z;
- t1 = w * (LG2 + w * LG4);
- t2 = z * (LG1 + w * LG3);
- r = t2 + t1;
- hfsq = 0.5 * f * f;
-
- hi = f - hfsq;
- ui = hi.to_bits();
- ui &= 0xfffff000;
- hi = f32::from_bits(ui);
- lo = f - hi - hfsq + s * (hfsq + r);
- (lo + hi) * IVLN2LO + lo * IVLN2HI + hi * IVLN2HI + k as f32
-}
diff --git a/vendor/libm-0.1.4/src/math/logf.rs b/vendor/libm-0.1.4/src/math/logf.rs
deleted file mode 100644
index 95195601c..000000000
--- a/vendor/libm-0.1.4/src/math/logf.rs
+++ /dev/null
@@ -1,66 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_logf.c */
-/*
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-const LN2_HI: f32 = 6.9313812256e-01; /* 0x3f317180 */
-const LN2_LO: f32 = 9.0580006145e-06; /* 0x3717f7d1 */
-/* |(log(1+s)-log(1-s))/s - Lg(s)| < 2**-34.24 (~[-4.95e-11, 4.97e-11]). */
-const LG1: f32 = 0.66666662693; /* 0xaaaaaa.0p-24*/
-const LG2: f32 = 0.40000972152; /* 0xccce13.0p-25 */
-const LG3: f32 = 0.28498786688; /* 0x91e9ee.0p-25 */
-const LG4: f32 = 0.24279078841; /* 0xf89e26.0p-26 */
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn logf(mut x: f32) -> f32 {
- let x1p25 = f32::from_bits(0x4c000000); // 0x1p25f === 2 ^ 25
-
- let mut ix = x.to_bits();
- let mut k = 0i32;
-
- if (ix < 0x00800000) || ((ix >> 31) != 0) {
- /* x < 2**-126 */
- if ix << 1 == 0 {
- return -1. / (x * x); /* log(+-0)=-inf */
- }
- if (ix >> 31) != 0 {
- return (x - x) / 0.; /* log(-#) = NaN */
- }
- /* subnormal number, scale up x */
- k -= 25;
- x *= x1p25;
- ix = x.to_bits();
- } else if ix >= 0x7f800000 {
- return x;
- } else if ix == 0x3f800000 {
- return 0.;
- }
-
- /* reduce x into [sqrt(2)/2, sqrt(2)] */
- ix += 0x3f800000 - 0x3f3504f3;
- k += ((ix >> 23) as i32) - 0x7f;
- ix = (ix & 0x007fffff) + 0x3f3504f3;
- x = f32::from_bits(ix);
-
- let f = x - 1.;
- let s = f / (2. + f);
- let z = s * s;
- let w = z * z;
- let t1 = w * (LG2 + w * LG4);
- let t2 = z * (LG1 + w * LG3);
- let r = t2 + t1;
- let hfsq = 0.5 * f * f;
- let dk = k as f32;
- s * (hfsq + r) + dk * LN2_LO - hfsq + f + dk * LN2_HI
-}
diff --git a/vendor/libm-0.1.4/src/math/mod.rs b/vendor/libm-0.1.4/src/math/mod.rs
deleted file mode 100644
index 35ffe1a2c..000000000
--- a/vendor/libm-0.1.4/src/math/mod.rs
+++ /dev/null
@@ -1,342 +0,0 @@
-macro_rules! force_eval {
- ($e:expr) => {
- unsafe {
- ::core::ptr::read_volatile(&$e);
- }
- };
-}
-
-#[cfg(not(feature = "checked"))]
-macro_rules! i {
- ($array:expr, $index:expr) => {
- unsafe { *$array.get_unchecked($index) }
- };
- ($array:expr, $index:expr, = , $rhs:expr) => {
- unsafe {
- *$array.get_unchecked_mut($index) = $rhs;
- }
- };
- ($array:expr, $index:expr, += , $rhs:expr) => {
- unsafe {
- *$array.get_unchecked_mut($index) += $rhs;
- }
- };
- ($array:expr, $index:expr, -= , $rhs:expr) => {
- unsafe {
- *$array.get_unchecked_mut($index) -= $rhs;
- }
- };
- ($array:expr, $index:expr, &= , $rhs:expr) => {
- unsafe {
- *$array.get_unchecked_mut($index) &= $rhs;
- }
- };
- ($array:expr, $index:expr, == , $rhs:expr) => {
- unsafe { *$array.get_unchecked_mut($index) == $rhs }
- };
-}
-
-#[cfg(feature = "checked")]
-macro_rules! i {
- ($array:expr, $index:expr) => {
- *$array.get($index).unwrap()
- };
- ($array:expr, $index:expr, = , $rhs:expr) => {
- *$array.get_mut($index).unwrap() = $rhs;
- };
- ($array:expr, $index:expr, -= , $rhs:expr) => {
- *$array.get_mut($index).unwrap() -= $rhs;
- };
- ($array:expr, $index:expr, += , $rhs:expr) => {
- *$array.get_mut($index).unwrap() += $rhs;
- };
- ($array:expr, $index:expr, &= , $rhs:expr) => {
- *$array.get_mut($index).unwrap() &= $rhs;
- };
- ($array:expr, $index:expr, == , $rhs:expr) => {
- *$array.get_mut($index).unwrap() == $rhs
- };
-}
-
-macro_rules! llvm_intrinsically_optimized {
- (#[cfg($($clause:tt)*)] $e:expr) => {
- #[cfg(all(not(feature = "stable"), $($clause)*))]
- {
- if true { // thwart the dead code lint
- $e
- }
- }
- };
-}
-
-// Public modules
-mod acos;
-mod acosf;
-mod acosh;
-mod acoshf;
-mod asin;
-mod asinf;
-mod asinh;
-mod asinhf;
-mod atan;
-mod atan2;
-mod atan2f;
-mod atanf;
-mod atanh;
-mod atanhf;
-mod cbrt;
-mod cbrtf;
-mod ceil;
-mod ceilf;
-mod copysign;
-mod copysignf;
-mod cos;
-mod cosf;
-mod cosh;
-mod coshf;
-mod erf;
-mod erff;
-mod exp;
-mod exp10;
-mod exp10f;
-mod exp2;
-mod exp2f;
-mod expf;
-mod expm1;
-mod expm1f;
-mod fabs;
-mod fabsf;
-mod fdim;
-mod fdimf;
-mod floor;
-mod floorf;
-mod fma;
-mod fmaf;
-mod fmax;
-mod fmaxf;
-mod fmin;
-mod fminf;
-mod fmod;
-mod fmodf;
-mod frexp;
-mod frexpf;
-mod hypot;
-mod hypotf;
-mod ilogb;
-mod ilogbf;
-mod j0;
-mod j0f;
-mod j1;
-mod j1f;
-mod jn;
-mod jnf;
-mod ldexp;
-mod ldexpf;
-mod lgamma;
-mod lgamma_r;
-mod lgammaf;
-mod lgammaf_r;
-mod log;
-mod log10;
-mod log10f;
-mod log1p;
-mod log1pf;
-mod log2;
-mod log2f;
-mod logf;
-mod modf;
-mod modff;
-mod pow;
-mod powf;
-mod remquo;
-mod remquof;
-mod round;
-mod roundf;
-mod scalbn;
-mod scalbnf;
-mod sin;
-mod sincos;
-mod sincosf;
-mod sinf;
-mod sinh;
-mod sinhf;
-mod sqrt;
-mod sqrtf;
-mod tan;
-mod tanf;
-mod tanh;
-mod tanhf;
-mod tgamma;
-mod tgammaf;
-mod trunc;
-mod truncf;
-
-// Use separated imports instead of {}-grouped imports for easier merging.
-pub use self::acos::acos;
-pub use self::acosf::acosf;
-pub use self::acosh::acosh;
-pub use self::acoshf::acoshf;
-pub use self::asin::asin;
-pub use self::asinf::asinf;
-pub use self::asinh::asinh;
-pub use self::asinhf::asinhf;
-pub use self::atan::atan;
-pub use self::atan2::atan2;
-pub use self::atan2f::atan2f;
-pub use self::atanf::atanf;
-pub use self::atanh::atanh;
-pub use self::atanhf::atanhf;
-pub use self::cbrt::cbrt;
-pub use self::cbrtf::cbrtf;
-pub use self::ceil::ceil;
-pub use self::ceilf::ceilf;
-pub use self::copysign::copysign;
-pub use self::copysignf::copysignf;
-pub use self::cos::cos;
-pub use self::cosf::cosf;
-pub use self::cosh::cosh;
-pub use self::coshf::coshf;
-pub use self::erf::erf;
-pub use self::erf::erfc;
-pub use self::erff::erfcf;
-pub use self::erff::erff;
-pub use self::exp::exp;
-pub use self::exp10::exp10;
-pub use self::exp10f::exp10f;
-pub use self::exp2::exp2;
-pub use self::exp2f::exp2f;
-pub use self::expf::expf;
-pub use self::expm1::expm1;
-pub use self::expm1f::expm1f;
-pub use self::fabs::fabs;
-pub use self::fabsf::fabsf;
-pub use self::fdim::fdim;
-pub use self::fdimf::fdimf;
-pub use self::floor::floor;
-pub use self::floorf::floorf;
-pub use self::fma::fma;
-pub use self::fmaf::fmaf;
-pub use self::fmax::fmax;
-pub use self::fmaxf::fmaxf;
-pub use self::fmin::fmin;
-pub use self::fminf::fminf;
-pub use self::fmod::fmod;
-pub use self::fmodf::fmodf;
-pub use self::frexp::frexp;
-pub use self::frexpf::frexpf;
-pub use self::hypot::hypot;
-pub use self::hypotf::hypotf;
-pub use self::ilogb::ilogb;
-pub use self::ilogbf::ilogbf;
-pub use self::j0::j0;
-pub use self::j0::y0;
-pub use self::j0f::j0f;
-pub use self::j0f::y0f;
-pub use self::j1::j1;
-pub use self::j1::y1;
-pub use self::j1f::j1f;
-pub use self::j1f::y1f;
-pub use self::jn::jn;
-pub use self::jn::yn;
-pub use self::jnf::jnf;
-pub use self::jnf::ynf;
-pub use self::ldexp::ldexp;
-pub use self::ldexpf::ldexpf;
-pub use self::lgamma::lgamma;
-pub use self::lgamma_r::lgamma_r;
-pub use self::lgammaf::lgammaf;
-pub use self::lgammaf_r::lgammaf_r;
-pub use self::log::log;
-pub use self::log10::log10;
-pub use self::log10f::log10f;
-pub use self::log1p::log1p;
-pub use self::log1pf::log1pf;
-pub use self::log2::log2;
-pub use self::log2f::log2f;
-pub use self::logf::logf;
-pub use self::modf::modf;
-pub use self::modff::modff;
-pub use self::pow::pow;
-pub use self::powf::powf;
-pub use self::remquo::remquo;
-pub use self::remquof::remquof;
-pub use self::round::round;
-pub use self::roundf::roundf;
-pub use self::scalbn::scalbn;
-pub use self::scalbnf::scalbnf;
-pub use self::sin::sin;
-pub use self::sincos::sincos;
-pub use self::sincosf::sincosf;
-pub use self::sinf::sinf;
-pub use self::sinh::sinh;
-pub use self::sinhf::sinhf;
-pub use self::sqrt::sqrt;
-pub use self::sqrtf::sqrtf;
-pub use self::tan::tan;
-pub use self::tanf::tanf;
-pub use self::tanh::tanh;
-pub use self::tanhf::tanhf;
-pub use self::tgamma::tgamma;
-pub use self::tgammaf::tgammaf;
-pub use self::trunc::trunc;
-pub use self::truncf::truncf;
-
-// Private modules
-mod expo2;
-mod fenv;
-mod k_cos;
-mod k_cosf;
-mod k_expo2;
-mod k_expo2f;
-mod k_sin;
-mod k_sinf;
-mod k_tan;
-mod k_tanf;
-mod rem_pio2;
-mod rem_pio2_large;
-mod rem_pio2f;
-
-// Private re-imports
-use self::expo2::expo2;
-use self::k_cos::k_cos;
-use self::k_cosf::k_cosf;
-use self::k_expo2::k_expo2;
-use self::k_expo2f::k_expo2f;
-use self::k_sin::k_sin;
-use self::k_sinf::k_sinf;
-use self::k_tan::k_tan;
-use self::k_tanf::k_tanf;
-use self::rem_pio2::rem_pio2;
-use self::rem_pio2_large::rem_pio2_large;
-use self::rem_pio2f::rem_pio2f;
-
-#[inline]
-fn get_high_word(x: f64) -> u32 {
- (x.to_bits() >> 32) as u32
-}
-
-#[inline]
-fn get_low_word(x: f64) -> u32 {
- x.to_bits() as u32
-}
-
-#[inline]
-fn with_set_high_word(f: f64, hi: u32) -> f64 {
- let mut tmp = f.to_bits();
- tmp &= 0x00000000_ffffffff;
- tmp |= (hi as u64) << 32;
- f64::from_bits(tmp)
-}
-
-#[inline]
-fn with_set_low_word(f: f64, lo: u32) -> f64 {
- let mut tmp = f.to_bits();
- tmp &= 0xffffffff_00000000;
- tmp |= lo as u64;
- f64::from_bits(tmp)
-}
-
-#[inline]
-fn combine_words(hi: u32, lo: u32) -> f64 {
- f64::from_bits((hi as u64) << 32 | lo as u64)
-}
diff --git a/vendor/libm-0.1.4/src/math/modf.rs b/vendor/libm-0.1.4/src/math/modf.rs
deleted file mode 100644
index bcab33a81..000000000
--- a/vendor/libm-0.1.4/src/math/modf.rs
+++ /dev/null
@@ -1,34 +0,0 @@
-pub fn modf(x: f64) -> (f64, f64) {
- let rv2: f64;
- let mut u = x.to_bits();
- let mask: u64;
- let e = ((u >> 52 & 0x7ff) as i32) - 0x3ff;
-
- /* no fractional part */
- if e >= 52 {
- rv2 = x;
- if e == 0x400 && (u << 12) != 0 {
- /* nan */
- return (x, rv2);
- }
- u &= 1 << 63;
- return (f64::from_bits(u), rv2);
- }
-
- /* no integral part*/
- if e < 0 {
- u &= 1 << 63;
- rv2 = f64::from_bits(u);
- return (x, rv2);
- }
-
- mask = ((!0) >> 12) >> e;
- if (u & mask) == 0 {
- rv2 = x;
- u &= 1 << 63;
- return (f64::from_bits(u), rv2);
- }
- u &= !mask;
- rv2 = f64::from_bits(u);
- return (x - rv2, rv2);
-}
diff --git a/vendor/libm-0.1.4/src/math/modff.rs b/vendor/libm-0.1.4/src/math/modff.rs
deleted file mode 100644
index 56ece12e3..000000000
--- a/vendor/libm-0.1.4/src/math/modff.rs
+++ /dev/null
@@ -1,33 +0,0 @@
-pub fn modff(x: f32) -> (f32, f32) {
- let rv2: f32;
- let mut u: u32 = x.to_bits();
- let mask: u32;
- let e = ((u >> 23 & 0xff) as i32) - 0x7f;
-
- /* no fractional part */
- if e >= 23 {
- rv2 = x;
- if e == 0x80 && (u << 9) != 0 {
- /* nan */
- return (x, rv2);
- }
- u &= 0x80000000;
- return (f32::from_bits(u), rv2);
- }
- /* no integral part */
- if e < 0 {
- u &= 0x80000000;
- rv2 = f32::from_bits(u);
- return (x, rv2);
- }
-
- mask = 0x007fffff >> e;
- if (u & mask) == 0 {
- rv2 = x;
- u &= 0x80000000;
- return (f32::from_bits(u), rv2);
- }
- u &= !mask;
- rv2 = f32::from_bits(u);
- return (x - rv2, rv2);
-}
diff --git a/vendor/libm-0.1.4/src/math/pow.rs b/vendor/libm-0.1.4/src/math/pow.rs
deleted file mode 100644
index 111d712ff..000000000
--- a/vendor/libm-0.1.4/src/math/pow.rs
+++ /dev/null
@@ -1,634 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_pow.c */
-/*
- * ====================================================
- * Copyright (C) 2004 by Sun Microsystems, Inc. All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-// pow(x,y) return x**y
-//
-// n
-// Method: Let x = 2 * (1+f)
-// 1. Compute and return log2(x) in two pieces:
-// log2(x) = w1 + w2,
-// where w1 has 53-24 = 29 bit trailing zeros.
-// 2. Perform y*log2(x) = n+y' by simulating muti-precision
-// arithmetic, where |y'|<=0.5.
-// 3. Return x**y = 2**n*exp(y'*log2)
-//
-// Special cases:
-// 1. (anything) ** 0 is 1
-// 2. 1 ** (anything) is 1
-// 3. (anything except 1) ** NAN is NAN
-// 4. NAN ** (anything except 0) is NAN
-// 5. +-(|x| > 1) ** +INF is +INF
-// 6. +-(|x| > 1) ** -INF is +0
-// 7. +-(|x| < 1) ** +INF is +0
-// 8. +-(|x| < 1) ** -INF is +INF
-// 9. -1 ** +-INF is 1
-// 10. +0 ** (+anything except 0, NAN) is +0
-// 11. -0 ** (+anything except 0, NAN, odd integer) is +0
-// 12. +0 ** (-anything except 0, NAN) is +INF, raise divbyzero
-// 13. -0 ** (-anything except 0, NAN, odd integer) is +INF, raise divbyzero
-// 14. -0 ** (+odd integer) is -0
-// 15. -0 ** (-odd integer) is -INF, raise divbyzero
-// 16. +INF ** (+anything except 0,NAN) is +INF
-// 17. +INF ** (-anything except 0,NAN) is +0
-// 18. -INF ** (+odd integer) is -INF
-// 19. -INF ** (anything) = -0 ** (-anything), (anything except odd integer)
-// 20. (anything) ** 1 is (anything)
-// 21. (anything) ** -1 is 1/(anything)
-// 22. (-anything) ** (integer) is (-1)**(integer)*(+anything**integer)
-// 23. (-anything except 0 and inf) ** (non-integer) is NAN
-//
-// Accuracy:
-// pow(x,y) returns x**y nearly rounded. In particular
-// pow(integer,integer)
-// always returns the correct integer provided it is
-// representable.
-//
-// Constants :
-// The hexadecimal values are the intended ones for the following
-// constants. The decimal values may be used, provided that the
-// compiler will convert from decimal to binary accurately enough
-// to produce the hexadecimal values shown.
-//
-use super::{fabs, get_high_word, scalbn, sqrt, with_set_high_word, with_set_low_word};
-
-const BP: [f64; 2] = [1.0, 1.5];
-const DP_H: [f64; 2] = [0.0, 5.84962487220764160156e-01]; /* 0x3fe2b803_40000000 */
-const DP_L: [f64; 2] = [0.0, 1.35003920212974897128e-08]; /* 0x3E4CFDEB, 0x43CFD006 */
-const TWO53: f64 = 9007199254740992.0; /* 0x43400000_00000000 */
-const HUGE: f64 = 1.0e300;
-const TINY: f64 = 1.0e-300;
-
-// poly coefs for (3/2)*(log(x)-2s-2/3*s**3:
-const L1: f64 = 5.99999999999994648725e-01; /* 0x3fe33333_33333303 */
-const L2: f64 = 4.28571428578550184252e-01; /* 0x3fdb6db6_db6fabff */
-const L3: f64 = 3.33333329818377432918e-01; /* 0x3fd55555_518f264d */
-const L4: f64 = 2.72728123808534006489e-01; /* 0x3fd17460_a91d4101 */
-const L5: f64 = 2.30660745775561754067e-01; /* 0x3fcd864a_93c9db65 */
-const L6: f64 = 2.06975017800338417784e-01; /* 0x3fca7e28_4a454eef */
-const P1: f64 = 1.66666666666666019037e-01; /* 0x3fc55555_5555553e */
-const P2: f64 = -2.77777777770155933842e-03; /* 0xbf66c16c_16bebd93 */
-const P3: f64 = 6.61375632143793436117e-05; /* 0x3f11566a_af25de2c */
-const P4: f64 = -1.65339022054652515390e-06; /* 0xbebbbd41_c5d26bf1 */
-const P5: f64 = 4.13813679705723846039e-08; /* 0x3e663769_72bea4d0 */
-const LG2: f64 = 6.93147180559945286227e-01; /* 0x3fe62e42_fefa39ef */
-const LG2_H: f64 = 6.93147182464599609375e-01; /* 0x3fe62e43_00000000 */
-const LG2_L: f64 = -1.90465429995776804525e-09; /* 0xbe205c61_0ca86c39 */
-const OVT: f64 = 8.0085662595372944372e-017; /* -(1024-log2(ovfl+.5ulp)) */
-const CP: f64 = 9.61796693925975554329e-01; /* 0x3feec709_dc3a03fd =2/(3ln2) */
-const CP_H: f64 = 9.61796700954437255859e-01; /* 0x3feec709_e0000000 =(float)cp */
-const CP_L: f64 = -7.02846165095275826516e-09; /* 0xbe3e2fe0_145b01f5 =tail of cp_h*/
-const IVLN2: f64 = 1.44269504088896338700e+00; /* 0x3ff71547_652b82fe =1/ln2 */
-const IVLN2_H: f64 = 1.44269502162933349609e+00; /* 0x3ff71547_60000000 =24b 1/ln2*/
-const IVLN2_L: f64 = 1.92596299112661746887e-08; /* 0x3e54ae0b_f85ddf44 =1/ln2 tail*/
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn pow(x: f64, y: f64) -> f64 {
- let t1: f64;
- let t2: f64;
-
- let (hx, lx): (i32, u32) = ((x.to_bits() >> 32) as i32, x.to_bits() as u32);
- let (hy, ly): (i32, u32) = ((y.to_bits() >> 32) as i32, y.to_bits() as u32);
-
- let mut ix: i32 = (hx & 0x7fffffff) as i32;
- let iy: i32 = (hy & 0x7fffffff) as i32;
-
- /* x**0 = 1, even if x is NaN */
- if ((iy as u32) | ly) == 0 {
- return 1.0;
- }
-
- /* 1**y = 1, even if y is NaN */
- if hx == 0x3ff00000 && lx == 0 {
- return 1.0;
- }
-
- /* NaN if either arg is NaN */
- if ix > 0x7ff00000
- || (ix == 0x7ff00000 && lx != 0)
- || iy > 0x7ff00000
- || (iy == 0x7ff00000 && ly != 0)
- {
- return x + y;
- }
-
- /* determine if y is an odd int when x < 0
- * yisint = 0 ... y is not an integer
- * yisint = 1 ... y is an odd int
- * yisint = 2 ... y is an even int
- */
- let mut yisint: i32 = 0;
- let mut k: i32;
- let mut j: i32;
- if hx < 0 {
- if iy >= 0x43400000 {
- yisint = 2; /* even integer y */
- } else if iy >= 0x3ff00000 {
- k = (iy >> 20) - 0x3ff; /* exponent */
-
- if k > 20 {
- j = (ly >> (52 - k)) as i32;
-
- if (j << (52 - k)) == (ly as i32) {
- yisint = 2 - (j & 1);
- }
- } else if ly == 0 {
- j = iy >> (20 - k);
-
- if (j << (20 - k)) == iy {
- yisint = 2 - (j & 1);
- }
- }
- }
- }
-
- if ly == 0 {
- /* special value of y */
- if iy == 0x7ff00000 {
- /* y is +-inf */
-
- return if ((ix - 0x3ff00000) | (lx as i32)) == 0 {
- /* (-1)**+-inf is 1 */
- 1.0
- } else if ix >= 0x3ff00000 {
- /* (|x|>1)**+-inf = inf,0 */
- if hy >= 0 {
- y
- } else {
- 0.0
- }
- } else {
- /* (|x|<1)**+-inf = 0,inf */
- if hy >= 0 {
- 0.0
- } else {
- -y
- }
- };
- }
-
- if iy == 0x3ff00000 {
- /* y is +-1 */
- return if hy >= 0 { x } else { 1.0 / x };
- }
-
- if hy == 0x40000000 {
- /* y is 2 */
- return x * x;
- }
-
- if hy == 0x3fe00000 {
- /* y is 0.5 */
- if hx >= 0 {
- /* x >= +0 */
- return sqrt(x);
- }
- }
- }
-
- let mut ax: f64 = fabs(x);
- if lx == 0 {
- /* special value of x */
- if ix == 0x7ff00000 || ix == 0 || ix == 0x3ff00000 {
- /* x is +-0,+-inf,+-1 */
- let mut z: f64 = ax;
-
- if hy < 0 {
- /* z = (1/|x|) */
- z = 1.0 / z;
- }
-
- if hx < 0 {
- if ((ix - 0x3ff00000) | yisint) == 0 {
- z = (z - z) / (z - z); /* (-1)**non-int is NaN */
- } else if yisint == 1 {
- z = -z; /* (x<0)**odd = -(|x|**odd) */
- }
- }
-
- return z;
- }
- }
-
- let mut s: f64 = 1.0; /* sign of result */
- if hx < 0 {
- if yisint == 0 {
- /* (x<0)**(non-int) is NaN */
- return (x - x) / (x - x);
- }
-
- if yisint == 1 {
- /* (x<0)**(odd int) */
- s = -1.0;
- }
- }
-
- /* |y| is HUGE */
- if iy > 0x41e00000 {
- /* if |y| > 2**31 */
- if iy > 0x43f00000 {
- /* if |y| > 2**64, must o/uflow */
- if ix <= 0x3fefffff {
- return if hy < 0 { HUGE * HUGE } else { TINY * TINY };
- }
-
- if ix >= 0x3ff00000 {
- return if hy > 0 { HUGE * HUGE } else { TINY * TINY };
- }
- }
-
- /* over/underflow if x is not close to one */
- if ix < 0x3fefffff {
- return if hy < 0 {
- s * HUGE * HUGE
- } else {
- s * TINY * TINY
- };
- }
- if ix > 0x3ff00000 {
- return if hy > 0 {
- s * HUGE * HUGE
- } else {
- s * TINY * TINY
- };
- }
-
- /* now |1-x| is TINY <= 2**-20, suffice to compute
- log(x) by x-x^2/2+x^3/3-x^4/4 */
- let t: f64 = ax - 1.0; /* t has 20 trailing zeros */
- let w: f64 = (t * t) * (0.5 - t * (0.3333333333333333333333 - t * 0.25));
- let u: f64 = IVLN2_H * t; /* ivln2_h has 21 sig. bits */
- let v: f64 = t * IVLN2_L - w * IVLN2;
- t1 = with_set_low_word(u + v, 0);
- t2 = v - (t1 - u);
- } else {
- // double ss,s2,s_h,s_l,t_h,t_l;
- let mut n: i32 = 0;
-
- if ix < 0x00100000 {
- /* take care subnormal number */
- ax *= TWO53;
- n -= 53;
- ix = get_high_word(ax) as i32;
- }
-
- n += (ix >> 20) - 0x3ff;
- j = ix & 0x000fffff;
-
- /* determine interval */
- let k: i32;
- ix = j | 0x3ff00000; /* normalize ix */
- if j <= 0x3988E {
- /* |x|<sqrt(3/2) */
- k = 0;
- } else if j < 0xBB67A {
- /* |x|<sqrt(3) */
- k = 1;
- } else {
- k = 0;
- n += 1;
- ix -= 0x00100000;
- }
- ax = with_set_high_word(ax, ix as u32);
-
- /* compute ss = s_h+s_l = (x-1)/(x+1) or (x-1.5)/(x+1.5) */
- let u: f64 = ax - BP[k as usize]; /* bp[0]=1.0, bp[1]=1.5 */
- let v: f64 = 1.0 / (ax + BP[k as usize]);
- let ss: f64 = u * v;
- let s_h = with_set_low_word(ss, 0);
-
- /* t_h=ax+bp[k] High */
- let t_h: f64 = with_set_high_word(
- 0.0,
- ((ix as u32 >> 1) | 0x20000000) + 0x00080000 + ((k as u32) << 18),
- );
- let t_l: f64 = ax - (t_h - BP[k as usize]);
- let s_l: f64 = v * ((u - s_h * t_h) - s_h * t_l);
-
- /* compute log(ax) */
- let s2: f64 = ss * ss;
- let mut r: f64 = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));
- r += s_l * (s_h + ss);
- let s2: f64 = s_h * s_h;
- let t_h: f64 = with_set_low_word(3.0 + s2 + r, 0);
- let t_l: f64 = r - ((t_h - 3.0) - s2);
-
- /* u+v = ss*(1+...) */
- let u: f64 = s_h * t_h;
- let v: f64 = s_l * t_h + t_l * ss;
-
- /* 2/(3log2)*(ss+...) */
- let p_h: f64 = with_set_low_word(u + v, 0);
- let p_l = v - (p_h - u);
- let z_h: f64 = CP_H * p_h; /* cp_h+cp_l = 2/(3*log2) */
- let z_l: f64 = CP_L * p_h + p_l * CP + DP_L[k as usize];
-
- /* log2(ax) = (ss+..)*2/(3*log2) = n + dp_h + z_h + z_l */
- let t: f64 = n as f64;
- t1 = with_set_low_word(((z_h + z_l) + DP_H[k as usize]) + t, 0);
- t2 = z_l - (((t1 - t) - DP_H[k as usize]) - z_h);
- }
-
- /* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */
- let y1: f64 = with_set_low_word(y, 0);
- let p_l: f64 = (y - y1) * t1 + y * t2;
- let mut p_h: f64 = y1 * t1;
- let z: f64 = p_l + p_h;
- let mut j: i32 = (z.to_bits() >> 32) as i32;
- let i: i32 = z.to_bits() as i32;
- // let (j, i): (i32, i32) = ((z.to_bits() >> 32) as i32, z.to_bits() as i32);
-
- if j >= 0x40900000 {
- /* z >= 1024 */
- if (j - 0x40900000) | i != 0 {
- /* if z > 1024 */
- return s * HUGE * HUGE; /* overflow */
- }
-
- if p_l + OVT > z - p_h {
- return s * HUGE * HUGE; /* overflow */
- }
- } else if (j & 0x7fffffff) >= 0x4090cc00 {
- /* z <= -1075 */
- // FIXME: instead of abs(j) use unsigned j
-
- if (((j as u32) - 0xc090cc00) | (i as u32)) != 0 {
- /* z < -1075 */
- return s * TINY * TINY; /* underflow */
- }
-
- if p_l <= z - p_h {
- return s * TINY * TINY; /* underflow */
- }
- }
-
- /* compute 2**(p_h+p_l) */
- let i: i32 = j & (0x7fffffff as i32);
- k = (i >> 20) - 0x3ff;
- let mut n: i32 = 0;
-
- if i > 0x3fe00000 {
- /* if |z| > 0.5, set n = [z+0.5] */
- n = j + (0x00100000 >> (k + 1));
- k = ((n & 0x7fffffff) >> 20) - 0x3ff; /* new k for n */
- let t: f64 = with_set_high_word(0.0, (n & !(0x000fffff >> k)) as u32);
- n = ((n & 0x000fffff) | 0x00100000) >> (20 - k);
- if j < 0 {
- n = -n;
- }
- p_h -= t;
- }
-
- let t: f64 = with_set_low_word(p_l + p_h, 0);
- let u: f64 = t * LG2_H;
- let v: f64 = (p_l - (t - p_h)) * LG2 + t * LG2_L;
- let mut z: f64 = u + v;
- let w: f64 = v - (z - u);
- let t: f64 = z * z;
- let t1: f64 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));
- let r: f64 = (z * t1) / (t1 - 2.0) - (w + z * w);
- z = 1.0 - (r - z);
- j = get_high_word(z) as i32;
- j += n << 20;
-
- if (j >> 20) <= 0 {
- /* subnormal output */
- z = scalbn(z, n);
- } else {
- z = with_set_high_word(z, j as u32);
- }
-
- s * z
-}
-
-#[cfg(test)]
-mod tests {
- extern crate core;
-
- use self::core::f64::consts::{E, PI};
- use self::core::f64::{EPSILON, INFINITY, MAX, MIN, MIN_POSITIVE, NAN, NEG_INFINITY};
- use super::pow;
-
- const POS_ZERO: &[f64] = &[0.0];
- const NEG_ZERO: &[f64] = &[-0.0];
- const POS_ONE: &[f64] = &[1.0];
- const NEG_ONE: &[f64] = &[-1.0];
- const POS_FLOATS: &[f64] = &[99.0 / 70.0, E, PI];
- const NEG_FLOATS: &[f64] = &[-99.0 / 70.0, -E, -PI];
- const POS_SMALL_FLOATS: &[f64] = &[(1.0 / 2.0), MIN_POSITIVE, EPSILON];
- const NEG_SMALL_FLOATS: &[f64] = &[-(1.0 / 2.0), -MIN_POSITIVE, -EPSILON];
- const POS_EVENS: &[f64] = &[2.0, 6.0, 8.0, 10.0, 22.0, 100.0, MAX];
- const NEG_EVENS: &[f64] = &[MIN, -100.0, -22.0, -10.0, -8.0, -6.0, -2.0];
- const POS_ODDS: &[f64] = &[3.0, 7.0];
- const NEG_ODDS: &[f64] = &[-7.0, -3.0];
- const NANS: &[f64] = &[NAN];
- const POS_INF: &[f64] = &[INFINITY];
- const NEG_INF: &[f64] = &[NEG_INFINITY];
-
- const ALL: &[&[f64]] = &[
- POS_ZERO,
- NEG_ZERO,
- NANS,
- NEG_SMALL_FLOATS,
- POS_SMALL_FLOATS,
- NEG_FLOATS,
- POS_FLOATS,
- NEG_EVENS,
- POS_EVENS,
- NEG_ODDS,
- POS_ODDS,
- NEG_INF,
- POS_INF,
- NEG_ONE,
- POS_ONE,
- ];
- const POS: &[&[f64]] = &[POS_ZERO, POS_ODDS, POS_ONE, POS_FLOATS, POS_EVENS, POS_INF];
- const NEG: &[&[f64]] = &[NEG_ZERO, NEG_ODDS, NEG_ONE, NEG_FLOATS, NEG_EVENS, NEG_INF];
-
- fn pow_test(base: f64, exponent: f64, expected: f64) {
- let res = pow(base, exponent);
- assert!(
- if expected.is_nan() {
- res.is_nan()
- } else {
- pow(base, exponent) == expected
- },
- "{} ** {} was {} instead of {}",
- base,
- exponent,
- res,
- expected
- );
- }
-
- fn test_sets_as_base(sets: &[&[f64]], exponent: f64, expected: f64) {
- sets.iter()
- .for_each(|s| s.iter().for_each(|val| pow_test(*val, exponent, expected)));
- }
-
- fn test_sets_as_exponent(base: f64, sets: &[&[f64]], expected: f64) {
- sets.iter()
- .for_each(|s| s.iter().for_each(|val| pow_test(base, *val, expected)));
- }
-
- fn test_sets(sets: &[&[f64]], computed: &Fn(f64) -> f64, expected: &Fn(f64) -> f64) {
- sets.iter().for_each(|s| {
- s.iter().for_each(|val| {
- let exp = expected(*val);
- let res = computed(*val);
-
- assert!(
- if exp.is_nan() {
- res.is_nan()
- } else {
- exp == res
- },
- "test for {} was {} instead of {}",
- val,
- res,
- exp
- );
- })
- });
- }
-
- #[test]
- fn zero_as_exponent() {
- test_sets_as_base(ALL, 0.0, 1.0);
- test_sets_as_base(ALL, -0.0, 1.0);
- }
-
- #[test]
- fn one_as_base() {
- test_sets_as_exponent(1.0, ALL, 1.0);
- }
-
- #[test]
- fn nan_inputs() {
- // NAN as the base:
- // (NAN ^ anything *but 0* should be NAN)
- test_sets_as_exponent(NAN, &ALL[2..], NAN);
-
- // NAN as the exponent:
- // (anything *but 1* ^ NAN should be NAN)
- test_sets_as_base(&ALL[..(ALL.len() - 2)], NAN, NAN);
- }
-
- #[test]
- fn infinity_as_base() {
- // Positive Infinity as the base:
- // (+Infinity ^ positive anything but 0 and NAN should be +Infinity)
- test_sets_as_exponent(INFINITY, &POS[1..], INFINITY);
-
- // (+Infinity ^ negative anything except 0 and NAN should be 0.0)
- test_sets_as_exponent(INFINITY, &NEG[1..], 0.0);
-
- // Negative Infinity as the base:
- // (-Infinity ^ positive odd ints should be -Infinity)
- test_sets_as_exponent(NEG_INFINITY, &[POS_ODDS], NEG_INFINITY);
-
- // (-Infinity ^ anything but odd ints should be == -0 ^ (-anything))
- // We can lump in pos/neg odd ints here because they don't seem to
- // cause panics (div by zero) in release mode (I think).
- test_sets(ALL, &|v: f64| pow(NEG_INFINITY, v), &|v: f64| pow(-0.0, -v));
- }
-
- #[test]
- fn infinity_as_exponent() {
- // Positive/Negative base greater than 1:
- // (pos/neg > 1 ^ Infinity should be Infinity - note this excludes NAN as the base)
- test_sets_as_base(&ALL[5..(ALL.len() - 2)], INFINITY, INFINITY);
-
- // (pos/neg > 1 ^ -Infinity should be 0.0)
- test_sets_as_base(&ALL[5..ALL.len() - 2], NEG_INFINITY, 0.0);
-
- // Positive/Negative base less than 1:
- let base_below_one = &[POS_ZERO, NEG_ZERO, NEG_SMALL_FLOATS, POS_SMALL_FLOATS];
-
- // (pos/neg < 1 ^ Infinity should be 0.0 - this also excludes NAN as the base)
- test_sets_as_base(base_below_one, INFINITY, 0.0);
-
- // (pos/neg < 1 ^ -Infinity should be Infinity)
- test_sets_as_base(base_below_one, NEG_INFINITY, INFINITY);
-
- // Positive/Negative 1 as the base:
- // (pos/neg 1 ^ Infinity should be 1)
- test_sets_as_base(&[NEG_ONE, POS_ONE], INFINITY, 1.0);
-
- // (pos/neg 1 ^ -Infinity should be 1)
- test_sets_as_base(&[NEG_ONE, POS_ONE], NEG_INFINITY, 1.0);
- }
-
- #[test]
- fn zero_as_base() {
- // Positive Zero as the base:
- // (+0 ^ anything positive but 0 and NAN should be +0)
- test_sets_as_exponent(0.0, &POS[1..], 0.0);
-
- // (+0 ^ anything negative but 0 and NAN should be Infinity)
- // (this should panic because we're dividing by zero)
- test_sets_as_exponent(0.0, &NEG[1..], INFINITY);
-
- // Negative Zero as the base:
- // (-0 ^ anything positive but 0, NAN, and odd ints should be +0)
- test_sets_as_exponent(-0.0, &POS[3..], 0.0);
-
- // (-0 ^ anything negative but 0, NAN, and odd ints should be Infinity)
- // (should panic because of divide by zero)
- test_sets_as_exponent(-0.0, &NEG[3..], INFINITY);
-
- // (-0 ^ positive odd ints should be -0)
- test_sets_as_exponent(-0.0, &[POS_ODDS], -0.0);
-
- // (-0 ^ negative odd ints should be -Infinity)
- // (should panic because of divide by zero)
- test_sets_as_exponent(-0.0, &[NEG_ODDS], NEG_INFINITY);
- }
-
- #[test]
- fn special_cases() {
- // One as the exponent:
- // (anything ^ 1 should be anything - i.e. the base)
- test_sets(ALL, &|v: f64| pow(v, 1.0), &|v: f64| v);
-
- // Negative One as the exponent:
- // (anything ^ -1 should be 1/anything)
- test_sets(ALL, &|v: f64| pow(v, -1.0), &|v: f64| 1.0 / v);
-
- // Factoring -1 out:
- // (negative anything ^ integer should be (-1 ^ integer) * (positive anything ^ integer))
- &[POS_ZERO, NEG_ZERO, POS_ONE, NEG_ONE, POS_EVENS, NEG_EVENS]
- .iter()
- .for_each(|int_set| {
- int_set.iter().for_each(|int| {
- test_sets(ALL, &|v: f64| pow(-v, *int), &|v: f64| {
- pow(-1.0, *int) * pow(v, *int)
- });
- })
- });
-
- // Negative base (imaginary results):
- // (-anything except 0 and Infinity ^ non-integer should be NAN)
- &NEG[1..(NEG.len() - 1)].iter().for_each(|set| {
- set.iter().for_each(|val| {
- test_sets(&ALL[3..7], &|v: f64| pow(*val, v), &|_| NAN);
- })
- });
- }
-
- #[test]
- fn normal_cases() {
- assert_eq!(pow(2.0, 20.0), (1 << 20) as f64);
- assert_eq!(pow(-1.0, 9.0), -1.0);
- assert!(pow(-1.0, 2.2).is_nan());
- assert!(pow(-1.0, -1.14).is_nan());
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/powf.rs b/vendor/libm-0.1.4/src/math/powf.rs
deleted file mode 100644
index 015bade86..000000000
--- a/vendor/libm-0.1.4/src/math/powf.rs
+++ /dev/null
@@ -1,343 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_powf.c */
-/*
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-use super::{fabsf, scalbnf, sqrtf};
-
-const BP: [f32; 2] = [1.0, 1.5];
-const DP_H: [f32; 2] = [0.0, 5.84960938e-01]; /* 0x3f15c000 */
-const DP_L: [f32; 2] = [0.0, 1.56322085e-06]; /* 0x35d1cfdc */
-const TWO24: f32 = 16777216.0; /* 0x4b800000 */
-const HUGE: f32 = 1.0e30;
-const TINY: f32 = 1.0e-30;
-const L1: f32 = 6.0000002384e-01; /* 0x3f19999a */
-const L2: f32 = 4.2857143283e-01; /* 0x3edb6db7 */
-const L3: f32 = 3.3333334327e-01; /* 0x3eaaaaab */
-const L4: f32 = 2.7272811532e-01; /* 0x3e8ba305 */
-const L5: f32 = 2.3066075146e-01; /* 0x3e6c3255 */
-const L6: f32 = 2.0697501302e-01; /* 0x3e53f142 */
-const P1: f32 = 1.6666667163e-01; /* 0x3e2aaaab */
-const P2: f32 = -2.7777778450e-03; /* 0xbb360b61 */
-const P3: f32 = 6.6137559770e-05; /* 0x388ab355 */
-const P4: f32 = -1.6533901999e-06; /* 0xb5ddea0e */
-const P5: f32 = 4.1381369442e-08; /* 0x3331bb4c */
-const LG2: f32 = 6.9314718246e-01; /* 0x3f317218 */
-const LG2_H: f32 = 6.93145752e-01; /* 0x3f317200 */
-const LG2_L: f32 = 1.42860654e-06; /* 0x35bfbe8c */
-const OVT: f32 = 4.2995665694e-08; /* -(128-log2(ovfl+.5ulp)) */
-const CP: f32 = 9.6179670095e-01; /* 0x3f76384f =2/(3ln2) */
-const CP_H: f32 = 9.6191406250e-01; /* 0x3f764000 =12b cp */
-const CP_L: f32 = -1.1736857402e-04; /* 0xb8f623c6 =tail of cp_h */
-const IVLN2: f32 = 1.4426950216e+00;
-const IVLN2_H: f32 = 1.4426879883e+00;
-const IVLN2_L: f32 = 7.0526075433e-06;
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn powf(x: f32, y: f32) -> f32 {
- let mut z: f32;
- let mut ax: f32;
- let z_h: f32;
- let z_l: f32;
- let mut p_h: f32;
- let mut p_l: f32;
- let y1: f32;
- let mut t1: f32;
- let t2: f32;
- let mut r: f32;
- let s: f32;
- let mut sn: f32;
- let mut t: f32;
- let mut u: f32;
- let mut v: f32;
- let mut w: f32;
- let i: i32;
- let mut j: i32;
- let mut k: i32;
- let mut yisint: i32;
- let mut n: i32;
- let hx: i32;
- let hy: i32;
- let mut ix: i32;
- let iy: i32;
- let mut is: i32;
-
- hx = x.to_bits() as i32;
- hy = y.to_bits() as i32;
-
- ix = hx & 0x7fffffff;
- iy = hy & 0x7fffffff;
-
- /* x**0 = 1, even if x is NaN */
- if iy == 0 {
- return 1.0;
- }
-
- /* 1**y = 1, even if y is NaN */
- if hx == 0x3f800000 {
- return 1.0;
- }
-
- /* NaN if either arg is NaN */
- if ix > 0x7f800000 || iy > 0x7f800000 {
- return x + y;
- }
-
- /* determine if y is an odd int when x < 0
- * yisint = 0 ... y is not an integer
- * yisint = 1 ... y is an odd int
- * yisint = 2 ... y is an even int
- */
- yisint = 0;
- if hx < 0 {
- if iy >= 0x4b800000 {
- yisint = 2; /* even integer y */
- } else if iy >= 0x3f800000 {
- k = (iy >> 23) - 0x7f; /* exponent */
- j = iy >> (23 - k);
- if (j << (23 - k)) == iy {
- yisint = 2 - (j & 1);
- }
- }
- }
-
- /* special value of y */
- if iy == 0x7f800000 {
- /* y is +-inf */
- if ix == 0x3f800000 {
- /* (-1)**+-inf is 1 */
- return 1.0;
- } else if ix > 0x3f800000 {
- /* (|x|>1)**+-inf = inf,0 */
- return if hy >= 0 { y } else { 0.0 };
- } else {
- /* (|x|<1)**+-inf = 0,inf */
- return if hy >= 0 { 0.0 } else { -y };
- }
- }
- if iy == 0x3f800000 {
- /* y is +-1 */
- return if hy >= 0 { x } else { 1.0 / x };
- }
-
- if hy == 0x40000000 {
- /* y is 2 */
- return x * x;
- }
-
- if hy == 0x3f000000
- /* y is 0.5 */
- && hx >= 0
- {
- /* x >= +0 */
- return sqrtf(x);
- }
-
- ax = fabsf(x);
- /* special value of x */
- if ix == 0x7f800000 || ix == 0 || ix == 0x3f800000 {
- /* x is +-0,+-inf,+-1 */
- z = ax;
- if hy < 0 {
- /* z = (1/|x|) */
- z = 1.0 / z;
- }
-
- if hx < 0 {
- if ((ix - 0x3f800000) | yisint) == 0 {
- z = (z - z) / (z - z); /* (-1)**non-int is NaN */
- } else if yisint == 1 {
- z = -z; /* (x<0)**odd = -(|x|**odd) */
- }
- }
- return z;
- }
-
- sn = 1.0; /* sign of result */
- if hx < 0 {
- if yisint == 0 {
- /* (x<0)**(non-int) is NaN */
- return (x - x) / (x - x);
- }
-
- if yisint == 1 {
- /* (x<0)**(odd int) */
- sn = -1.0;
- }
- }
-
- /* |y| is HUGE */
- if iy > 0x4d000000 {
- /* if |y| > 2**27 */
- /* over/underflow if x is not close to one */
- if ix < 0x3f7ffff8 {
- return if hy < 0 {
- sn * HUGE * HUGE
- } else {
- sn * TINY * TINY
- };
- }
-
- if ix > 0x3f800007 {
- return if hy > 0 {
- sn * HUGE * HUGE
- } else {
- sn * TINY * TINY
- };
- }
-
- /* now |1-x| is TINY <= 2**-20, suffice to compute
- log(x) by x-x^2/2+x^3/3-x^4/4 */
- t = ax - 1.; /* t has 20 trailing zeros */
- w = (t * t) * (0.5 - t * (0.333333333333 - t * 0.25));
- u = IVLN2_H * t; /* IVLN2_H has 16 sig. bits */
- v = t * IVLN2_L - w * IVLN2;
- t1 = u + v;
- is = t1.to_bits() as i32;
- t1 = f32::from_bits(is as u32 & 0xfffff000);
- t2 = v - (t1 - u);
- } else {
- let mut s2: f32;
- let mut s_h: f32;
- let s_l: f32;
- let mut t_h: f32;
- let mut t_l: f32;
-
- n = 0;
- /* take care subnormal number */
- if ix < 0x00800000 {
- ax *= TWO24;
- n -= 24;
- ix = ax.to_bits() as i32;
- }
- n += ((ix) >> 23) - 0x7f;
- j = ix & 0x007fffff;
- /* determine interval */
- ix = j | 0x3f800000; /* normalize ix */
- if j <= 0x1cc471 {
- /* |x|<sqrt(3/2) */
- k = 0;
- } else if j < 0x5db3d7 {
- /* |x|<sqrt(3) */
- k = 1;
- } else {
- k = 0;
- n += 1;
- ix -= 0x00800000;
- }
- ax = f32::from_bits(ix as u32);
-
- /* compute s = s_h+s_l = (x-1)/(x+1) or (x-1.5)/(x+1.5) */
- u = ax - BP[k as usize]; /* bp[0]=1.0, bp[1]=1.5 */
- v = 1.0 / (ax + BP[k as usize]);
- s = u * v;
- s_h = s;
- is = s_h.to_bits() as i32;
- s_h = f32::from_bits(is as u32 & 0xfffff000);
- /* t_h=ax+bp[k] High */
- is = (((ix as u32 >> 1) & 0xfffff000) | 0x20000000) as i32;
- t_h = f32::from_bits(is as u32 + 0x00400000 + ((k as u32) << 21));
- t_l = ax - (t_h - BP[k as usize]);
- s_l = v * ((u - s_h * t_h) - s_h * t_l);
- /* compute log(ax) */
- s2 = s * s;
- r = s2 * s2 * (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));
- r += s_l * (s_h + s);
- s2 = s_h * s_h;
- t_h = 3.0 + s2 + r;
- is = t_h.to_bits() as i32;
- t_h = f32::from_bits(is as u32 & 0xfffff000);
- t_l = r - ((t_h - 3.0) - s2);
- /* u+v = s*(1+...) */
- u = s_h * t_h;
- v = s_l * t_h + t_l * s;
- /* 2/(3log2)*(s+...) */
- p_h = u + v;
- is = p_h.to_bits() as i32;
- p_h = f32::from_bits(is as u32 & 0xfffff000);
- p_l = v - (p_h - u);
- z_h = CP_H * p_h; /* cp_h+cp_l = 2/(3*log2) */
- z_l = CP_L * p_h + p_l * CP + DP_L[k as usize];
- /* log2(ax) = (s+..)*2/(3*log2) = n + dp_h + z_h + z_l */
- t = n as f32;
- t1 = ((z_h + z_l) + DP_H[k as usize]) + t;
- is = t1.to_bits() as i32;
- t1 = f32::from_bits(is as u32 & 0xfffff000);
- t2 = z_l - (((t1 - t) - DP_H[k as usize]) - z_h);
- };
-
- /* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */
- is = y.to_bits() as i32;
- y1 = f32::from_bits(is as u32 & 0xfffff000);
- p_l = (y - y1) * t1 + y * t2;
- p_h = y1 * t1;
- z = p_l + p_h;
- j = z.to_bits() as i32;
- if j > 0x43000000 {
- /* if z > 128 */
- return sn * HUGE * HUGE; /* overflow */
- } else if j == 0x43000000 {
- /* if z == 128 */
- if p_l + OVT > z - p_h {
- return sn * HUGE * HUGE; /* overflow */
- }
- } else if (j & 0x7fffffff) > 0x43160000 {
- /* z < -150 */
- // FIXME: check should be (uint32_t)j > 0xc3160000
- return sn * TINY * TINY; /* underflow */
- } else if j as u32 == 0xc3160000
- /* z == -150 */
- && p_l <= z - p_h
- {
- return sn * TINY * TINY; /* underflow */
- }
-
- /*
- * compute 2**(p_h+p_l)
- */
- i = j & 0x7fffffff;
- k = (i >> 23) - 0x7f;
- n = 0;
- if i > 0x3f000000 {
- /* if |z| > 0.5, set n = [z+0.5] */
- n = j + (0x00800000 >> (k + 1));
- k = ((n & 0x7fffffff) >> 23) - 0x7f; /* new k for n */
- t = f32::from_bits(n as u32 & !(0x007fffff >> k));
- n = ((n & 0x007fffff) | 0x00800000) >> (23 - k);
- if j < 0 {
- n = -n;
- }
- p_h -= t;
- }
- t = p_l + p_h;
- is = t.to_bits() as i32;
- t = f32::from_bits(is as u32 & 0xffff8000);
- u = t * LG2_H;
- v = (p_l - (t - p_h)) * LG2 + t * LG2_L;
- z = u + v;
- w = v - (z - u);
- t = z * z;
- t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));
- r = (z * t1) / (t1 - 2.0) - (w + z * w);
- z = 1.0 - (r - z);
- j = z.to_bits() as i32;
- j += n << 23;
- if (j >> 23) <= 0 {
- /* subnormal output */
- z = scalbnf(z, n);
- } else {
- z = f32::from_bits(j as u32);
- }
- sn * z
-}
diff --git a/vendor/libm-0.1.4/src/math/rem_pio2.rs b/vendor/libm-0.1.4/src/math/rem_pio2.rs
deleted file mode 100644
index 536dfac3c..000000000
--- a/vendor/libm-0.1.4/src/math/rem_pio2.rs
+++ /dev/null
@@ -1,207 +0,0 @@
-// origin: FreeBSD /usr/src/lib/msun/src/e_rem_pio2.c
-//
-// ====================================================
-// Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
-//
-// Developed at SunPro, a Sun Microsystems, Inc. business.
-// Permission to use, copy, modify, and distribute this
-// software is freely granted, provided that this notice
-// is preserved.
-// ====================================================
-//
-// Optimized by Bruce D. Evans. */
-use super::rem_pio2_large;
-
-// #if FLT_EVAL_METHOD==0 || FLT_EVAL_METHOD==1
-// #define EPS DBL_EPSILON
-const EPS: f64 = 2.2204460492503131e-16;
-// #elif FLT_EVAL_METHOD==2
-// #define EPS LDBL_EPSILON
-// #endif
-
-// TODO: Support FLT_EVAL_METHOD?
-
-const TO_INT: f64 = 1.5 / EPS;
-/// 53 bits of 2/pi
-const INV_PIO2: f64 = 6.36619772367581382433e-01; /* 0x3FE45F30, 0x6DC9C883 */
-/// first 33 bits of pi/2
-const PIO2_1: f64 = 1.57079632673412561417e+00; /* 0x3FF921FB, 0x54400000 */
-/// pi/2 - PIO2_1
-const PIO2_1T: f64 = 6.07710050650619224932e-11; /* 0x3DD0B461, 0x1A626331 */
-/// second 33 bits of pi/2
-const PIO2_2: f64 = 6.07710050630396597660e-11; /* 0x3DD0B461, 0x1A600000 */
-/// pi/2 - (PIO2_1+PIO2_2)
-const PIO2_2T: f64 = 2.02226624879595063154e-21; /* 0x3BA3198A, 0x2E037073 */
-/// third 33 bits of pi/2
-const PIO2_3: f64 = 2.02226624871116645580e-21; /* 0x3BA3198A, 0x2E000000 */
-/// pi/2 - (PIO2_1+PIO2_2+PIO2_3)
-const PIO2_3T: f64 = 8.47842766036889956997e-32; /* 0x397B839A, 0x252049C1 */
-
-// return the remainder of x rem pi/2 in y[0]+y[1]
-// use rem_pio2_large() for large x
-//
-// caller must handle the case when reduction is not needed: |x| ~<= pi/4 */
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub(crate) fn rem_pio2(x: f64) -> (i32, f64, f64) {
- let x1p24 = f64::from_bits(0x4170000000000000);
-
- let sign = (f64::to_bits(x) >> 63) as i32;
- let ix = (f64::to_bits(x) >> 32) as u32 & 0x7fffffff;
-
- #[inline]
- fn medium(x: f64, ix: u32) -> (i32, f64, f64) {
- /* rint(x/(pi/2)), Assume round-to-nearest. */
- let f_n = x as f64 * INV_PIO2 + TO_INT - TO_INT;
- let n = f_n as i32;
- let mut r = x - f_n * PIO2_1;
- let mut w = f_n * PIO2_1T; /* 1st round, good to 85 bits */
- let mut y0 = r - w;
- let ui = f64::to_bits(y0);
- let ey = (ui >> 52) as i32 & 0x7ff;
- let ex = (ix >> 20) as i32;
- if ex - ey > 16 {
- /* 2nd round, good to 118 bits */
- let t = r;
- w = f_n * PIO2_2;
- r = t - w;
- w = f_n * PIO2_2T - ((t - r) - w);
- y0 = r - w;
- let ey = (f64::to_bits(y0) >> 52) as i32 & 0x7ff;
- if ex - ey > 49 {
- /* 3rd round, good to 151 bits, covers all cases */
- let t = r;
- w = f_n * PIO2_3;
- r = t - w;
- w = f_n * PIO2_3T - ((t - r) - w);
- y0 = r - w;
- }
- }
- let y1 = (r - y0) - w;
- (n, y0, y1)
- }
-
- if ix <= 0x400f6a7a {
- /* |x| ~<= 5pi/4 */
- if (ix & 0xfffff) == 0x921fb {
- /* |x| ~= pi/2 or 2pi/2 */
- return medium(x, ix); /* cancellation -- use medium case */
- }
- if ix <= 0x4002d97c {
- /* |x| ~<= 3pi/4 */
- if sign == 0 {
- let z = x - PIO2_1; /* one round good to 85 bits */
- let y0 = z - PIO2_1T;
- let y1 = (z - y0) - PIO2_1T;
- return (1, y0, y1);
- } else {
- let z = x + PIO2_1;
- let y0 = z + PIO2_1T;
- let y1 = (z - y0) + PIO2_1T;
- return (-1, y0, y1);
- }
- } else if sign == 0 {
- let z = x - 2.0 * PIO2_1;
- let y0 = z - 2.0 * PIO2_1T;
- let y1 = (z - y0) - 2.0 * PIO2_1T;
- return (2, y0, y1);
- } else {
- let z = x + 2.0 * PIO2_1;
- let y0 = z + 2.0 * PIO2_1T;
- let y1 = (z - y0) + 2.0 * PIO2_1T;
- return (-2, y0, y1);
- }
- }
- if ix <= 0x401c463b {
- /* |x| ~<= 9pi/4 */
- if ix <= 0x4015fdbc {
- /* |x| ~<= 7pi/4 */
- if ix == 0x4012d97c {
- /* |x| ~= 3pi/2 */
- return medium(x, ix);
- }
- if sign == 0 {
- let z = x - 3.0 * PIO2_1;
- let y0 = z - 3.0 * PIO2_1T;
- let y1 = (z - y0) - 3.0 * PIO2_1T;
- return (3, y0, y1);
- } else {
- let z = x + 3.0 * PIO2_1;
- let y0 = z + 3.0 * PIO2_1T;
- let y1 = (z - y0) + 3.0 * PIO2_1T;
- return (-3, y0, y1);
- }
- } else {
- if ix == 0x401921fb {
- /* |x| ~= 4pi/2 */
- return medium(x, ix);
- }
- if sign == 0 {
- let z = x - 4.0 * PIO2_1;
- let y0 = z - 4.0 * PIO2_1T;
- let y1 = (z - y0) - 4.0 * PIO2_1T;
- return (4, y0, y1);
- } else {
- let z = x + 4.0 * PIO2_1;
- let y0 = z + 4.0 * PIO2_1T;
- let y1 = (z - y0) + 4.0 * PIO2_1T;
- return (-4, y0, y1);
- }
- }
- }
- if ix < 0x413921fb {
- /* |x| ~< 2^20*(pi/2), medium size */
- return medium(x, ix);
- }
- /*
- * all other (large) arguments
- */
- if ix >= 0x7ff00000 {
- /* x is inf or NaN */
- let y0 = x - x;
- let y1 = y0;
- return (0, y0, y1);
- }
- /* set z = scalbn(|x|,-ilogb(x)+23) */
- let mut ui = f64::to_bits(x);
- ui &= (!1) >> 12;
- ui |= (0x3ff + 23) << 52;
- let mut z = f64::from_bits(ui);
- let mut tx = [0.0; 3];
- for i in 0..2 {
- tx[i] = z as i32 as f64;
- z = (z - tx[i]) * x1p24;
- }
- tx[2] = z;
- /* skip zero terms, first term is non-zero */
- let mut i = 2;
- while i != 0 && tx[i] == 0.0 {
- i -= 1;
- }
- let mut ty = [0.0; 3];
- let n = rem_pio2_large(&tx[..=i], &mut ty, ((ix >> 20) - (0x3ff + 23)) as i32, 1);
- if sign != 0 {
- return (-n, -ty[0], -ty[1]);
- }
- (n, ty[0], ty[1])
-}
-
-#[test]
-fn test_near_pi() {
- assert_eq!(
- rem_pio2(3.141592025756836),
- (2, -6.278329573009626e-7, -2.1125998133974653e-23)
- );
- assert_eq!(
- rem_pio2(3.141592033207416),
- (2, -6.20382377148128e-7, -2.1125998133974653e-23)
- );
- assert_eq!(
- rem_pio2(3.141592144966125),
- (2, -5.086236681942706e-7, -2.1125998133974653e-23)
- );
- assert_eq!(
- rem_pio2(3.141592979431152),
- (2, 3.2584135866119817e-7, -2.1125998133974653e-23)
- );
-}
diff --git a/vendor/libm-0.1.4/src/math/rem_pio2_large.rs b/vendor/libm-0.1.4/src/math/rem_pio2_large.rs
deleted file mode 100644
index 006d3e153..000000000
--- a/vendor/libm-0.1.4/src/math/rem_pio2_large.rs
+++ /dev/null
@@ -1,471 +0,0 @@
-#![allow(unused_unsafe)]
-/* origin: FreeBSD /usr/src/lib/msun/src/k_rem_pio2.c */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunSoft, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-use super::floor;
-use super::scalbn;
-
-// initial value for jk
-const INIT_JK: [usize; 4] = [3, 4, 4, 6];
-
-// Table of constants for 2/pi, 396 Hex digits (476 decimal) of 2/pi
-//
-// integer array, contains the (24*i)-th to (24*i+23)-th
-// bit of 2/pi after binary point. The corresponding
-// floating value is
-//
-// ipio2[i] * 2^(-24(i+1)).
-//
-// NB: This table must have at least (e0-3)/24 + jk terms.
-// For quad precision (e0 <= 16360, jk = 6), this is 686.
-#[cfg(target_pointer_width = "32")]
-const IPIO2: [i32; 66] = [
- 0xA2F983, 0x6E4E44, 0x1529FC, 0x2757D1, 0xF534DD, 0xC0DB62, 0x95993C, 0x439041, 0xFE5163,
- 0xABDEBB, 0xC561B7, 0x246E3A, 0x424DD2, 0xE00649, 0x2EEA09, 0xD1921C, 0xFE1DEB, 0x1CB129,
- 0xA73EE8, 0x8235F5, 0x2EBB44, 0x84E99C, 0x7026B4, 0x5F7E41, 0x3991D6, 0x398353, 0x39F49C,
- 0x845F8B, 0xBDF928, 0x3B1FF8, 0x97FFDE, 0x05980F, 0xEF2F11, 0x8B5A0A, 0x6D1F6D, 0x367ECF,
- 0x27CB09, 0xB74F46, 0x3F669E, 0x5FEA2D, 0x7527BA, 0xC7EBE5, 0xF17B3D, 0x0739F7, 0x8A5292,
- 0xEA6BFB, 0x5FB11F, 0x8D5D08, 0x560330, 0x46FC7B, 0x6BABF0, 0xCFBC20, 0x9AF436, 0x1DA9E3,
- 0x91615E, 0xE61B08, 0x659985, 0x5F14A0, 0x68408D, 0xFFD880, 0x4D7327, 0x310606, 0x1556CA,
- 0x73A8C9, 0x60E27B, 0xC08C6B,
-];
-
-#[cfg(target_pointer_width = "64")]
-const IPIO2: [i32; 690] = [
- 0xA2F983, 0x6E4E44, 0x1529FC, 0x2757D1, 0xF534DD, 0xC0DB62, 0x95993C, 0x439041, 0xFE5163,
- 0xABDEBB, 0xC561B7, 0x246E3A, 0x424DD2, 0xE00649, 0x2EEA09, 0xD1921C, 0xFE1DEB, 0x1CB129,
- 0xA73EE8, 0x8235F5, 0x2EBB44, 0x84E99C, 0x7026B4, 0x5F7E41, 0x3991D6, 0x398353, 0x39F49C,
- 0x845F8B, 0xBDF928, 0x3B1FF8, 0x97FFDE, 0x05980F, 0xEF2F11, 0x8B5A0A, 0x6D1F6D, 0x367ECF,
- 0x27CB09, 0xB74F46, 0x3F669E, 0x5FEA2D, 0x7527BA, 0xC7EBE5, 0xF17B3D, 0x0739F7, 0x8A5292,
- 0xEA6BFB, 0x5FB11F, 0x8D5D08, 0x560330, 0x46FC7B, 0x6BABF0, 0xCFBC20, 0x9AF436, 0x1DA9E3,
- 0x91615E, 0xE61B08, 0x659985, 0x5F14A0, 0x68408D, 0xFFD880, 0x4D7327, 0x310606, 0x1556CA,
- 0x73A8C9, 0x60E27B, 0xC08C6B, 0x47C419, 0xC367CD, 0xDCE809, 0x2A8359, 0xC4768B, 0x961CA6,
- 0xDDAF44, 0xD15719, 0x053EA5, 0xFF0705, 0x3F7E33, 0xE832C2, 0xDE4F98, 0x327DBB, 0xC33D26,
- 0xEF6B1E, 0x5EF89F, 0x3A1F35, 0xCAF27F, 0x1D87F1, 0x21907C, 0x7C246A, 0xFA6ED5, 0x772D30,
- 0x433B15, 0xC614B5, 0x9D19C3, 0xC2C4AD, 0x414D2C, 0x5D000C, 0x467D86, 0x2D71E3, 0x9AC69B,
- 0x006233, 0x7CD2B4, 0x97A7B4, 0xD55537, 0xF63ED7, 0x1810A3, 0xFC764D, 0x2A9D64, 0xABD770,
- 0xF87C63, 0x57B07A, 0xE71517, 0x5649C0, 0xD9D63B, 0x3884A7, 0xCB2324, 0x778AD6, 0x23545A,
- 0xB91F00, 0x1B0AF1, 0xDFCE19, 0xFF319F, 0x6A1E66, 0x615799, 0x47FBAC, 0xD87F7E, 0xB76522,
- 0x89E832, 0x60BFE6, 0xCDC4EF, 0x09366C, 0xD43F5D, 0xD7DE16, 0xDE3B58, 0x929BDE, 0x2822D2,
- 0xE88628, 0x4D58E2, 0x32CAC6, 0x16E308, 0xCB7DE0, 0x50C017, 0xA71DF3, 0x5BE018, 0x34132E,
- 0x621283, 0x014883, 0x5B8EF5, 0x7FB0AD, 0xF2E91E, 0x434A48, 0xD36710, 0xD8DDAA, 0x425FAE,
- 0xCE616A, 0xA4280A, 0xB499D3, 0xF2A606, 0x7F775C, 0x83C2A3, 0x883C61, 0x78738A, 0x5A8CAF,
- 0xBDD76F, 0x63A62D, 0xCBBFF4, 0xEF818D, 0x67C126, 0x45CA55, 0x36D9CA, 0xD2A828, 0x8D61C2,
- 0x77C912, 0x142604, 0x9B4612, 0xC459C4, 0x44C5C8, 0x91B24D, 0xF31700, 0xAD43D4, 0xE54929,
- 0x10D5FD, 0xFCBE00, 0xCC941E, 0xEECE70, 0xF53E13, 0x80F1EC, 0xC3E7B3, 0x28F8C7, 0x940593,
- 0x3E71C1, 0xB3092E, 0xF3450B, 0x9C1288, 0x7B20AB, 0x9FB52E, 0xC29247, 0x2F327B, 0x6D550C,
- 0x90A772, 0x1FE76B, 0x96CB31, 0x4A1679, 0xE27941, 0x89DFF4, 0x9794E8, 0x84E6E2, 0x973199,
- 0x6BED88, 0x365F5F, 0x0EFDBB, 0xB49A48, 0x6CA467, 0x427271, 0x325D8D, 0xB8159F, 0x09E5BC,
- 0x25318D, 0x3974F7, 0x1C0530, 0x010C0D, 0x68084B, 0x58EE2C, 0x90AA47, 0x02E774, 0x24D6BD,
- 0xA67DF7, 0x72486E, 0xEF169F, 0xA6948E, 0xF691B4, 0x5153D1, 0xF20ACF, 0x339820, 0x7E4BF5,
- 0x6863B2, 0x5F3EDD, 0x035D40, 0x7F8985, 0x295255, 0xC06437, 0x10D86D, 0x324832, 0x754C5B,
- 0xD4714E, 0x6E5445, 0xC1090B, 0x69F52A, 0xD56614, 0x9D0727, 0x50045D, 0xDB3BB4, 0xC576EA,
- 0x17F987, 0x7D6B49, 0xBA271D, 0x296996, 0xACCCC6, 0x5414AD, 0x6AE290, 0x89D988, 0x50722C,
- 0xBEA404, 0x940777, 0x7030F3, 0x27FC00, 0xA871EA, 0x49C266, 0x3DE064, 0x83DD97, 0x973FA3,
- 0xFD9443, 0x8C860D, 0xDE4131, 0x9D3992, 0x8C70DD, 0xE7B717, 0x3BDF08, 0x2B3715, 0xA0805C,
- 0x93805A, 0x921110, 0xD8E80F, 0xAF806C, 0x4BFFDB, 0x0F9038, 0x761859, 0x15A562, 0xBBCB61,
- 0xB989C7, 0xBD4010, 0x04F2D2, 0x277549, 0xF6B6EB, 0xBB22DB, 0xAA140A, 0x2F2689, 0x768364,
- 0x333B09, 0x1A940E, 0xAA3A51, 0xC2A31D, 0xAEEDAF, 0x12265C, 0x4DC26D, 0x9C7A2D, 0x9756C0,
- 0x833F03, 0xF6F009, 0x8C402B, 0x99316D, 0x07B439, 0x15200C, 0x5BC3D8, 0xC492F5, 0x4BADC6,
- 0xA5CA4E, 0xCD37A7, 0x36A9E6, 0x9492AB, 0x6842DD, 0xDE6319, 0xEF8C76, 0x528B68, 0x37DBFC,
- 0xABA1AE, 0x3115DF, 0xA1AE00, 0xDAFB0C, 0x664D64, 0xB705ED, 0x306529, 0xBF5657, 0x3AFF47,
- 0xB9F96A, 0xF3BE75, 0xDF9328, 0x3080AB, 0xF68C66, 0x15CB04, 0x0622FA, 0x1DE4D9, 0xA4B33D,
- 0x8F1B57, 0x09CD36, 0xE9424E, 0xA4BE13, 0xB52333, 0x1AAAF0, 0xA8654F, 0xA5C1D2, 0x0F3F0B,
- 0xCD785B, 0x76F923, 0x048B7B, 0x721789, 0x53A6C6, 0xE26E6F, 0x00EBEF, 0x584A9B, 0xB7DAC4,
- 0xBA66AA, 0xCFCF76, 0x1D02D1, 0x2DF1B1, 0xC1998C, 0x77ADC3, 0xDA4886, 0xA05DF7, 0xF480C6,
- 0x2FF0AC, 0x9AECDD, 0xBC5C3F, 0x6DDED0, 0x1FC790, 0xB6DB2A, 0x3A25A3, 0x9AAF00, 0x9353AD,
- 0x0457B6, 0xB42D29, 0x7E804B, 0xA707DA, 0x0EAA76, 0xA1597B, 0x2A1216, 0x2DB7DC, 0xFDE5FA,
- 0xFEDB89, 0xFDBE89, 0x6C76E4, 0xFCA906, 0x70803E, 0x156E85, 0xFF87FD, 0x073E28, 0x336761,
- 0x86182A, 0xEABD4D, 0xAFE7B3, 0x6E6D8F, 0x396795, 0x5BBF31, 0x48D784, 0x16DF30, 0x432DC7,
- 0x356125, 0xCE70C9, 0xB8CB30, 0xFD6CBF, 0xA200A4, 0xE46C05, 0xA0DD5A, 0x476F21, 0xD21262,
- 0x845CB9, 0x496170, 0xE0566B, 0x015299, 0x375550, 0xB7D51E, 0xC4F133, 0x5F6E13, 0xE4305D,
- 0xA92E85, 0xC3B21D, 0x3632A1, 0xA4B708, 0xD4B1EA, 0x21F716, 0xE4698F, 0x77FF27, 0x80030C,
- 0x2D408D, 0xA0CD4F, 0x99A520, 0xD3A2B3, 0x0A5D2F, 0x42F9B4, 0xCBDA11, 0xD0BE7D, 0xC1DB9B,
- 0xBD17AB, 0x81A2CA, 0x5C6A08, 0x17552E, 0x550027, 0xF0147F, 0x8607E1, 0x640B14, 0x8D4196,
- 0xDEBE87, 0x2AFDDA, 0xB6256B, 0x34897B, 0xFEF305, 0x9EBFB9, 0x4F6A68, 0xA82A4A, 0x5AC44F,
- 0xBCF82D, 0x985AD7, 0x95C7F4, 0x8D4D0D, 0xA63A20, 0x5F57A4, 0xB13F14, 0x953880, 0x0120CC,
- 0x86DD71, 0xB6DEC9, 0xF560BF, 0x11654D, 0x6B0701, 0xACB08C, 0xD0C0B2, 0x485551, 0x0EFB1E,
- 0xC37295, 0x3B06A3, 0x3540C0, 0x7BDC06, 0xCC45E0, 0xFA294E, 0xC8CAD6, 0x41F3E8, 0xDE647C,
- 0xD8649B, 0x31BED9, 0xC397A4, 0xD45877, 0xC5E369, 0x13DAF0, 0x3C3ABA, 0x461846, 0x5F7555,
- 0xF5BDD2, 0xC6926E, 0x5D2EAC, 0xED440E, 0x423E1C, 0x87C461, 0xE9FD29, 0xF3D6E7, 0xCA7C22,
- 0x35916F, 0xC5E008, 0x8DD7FF, 0xE26A6E, 0xC6FDB0, 0xC10893, 0x745D7C, 0xB2AD6B, 0x9D6ECD,
- 0x7B723E, 0x6A11C6, 0xA9CFF7, 0xDF7329, 0xBAC9B5, 0x5100B7, 0x0DB2E2, 0x24BA74, 0x607DE5,
- 0x8AD874, 0x2C150D, 0x0C1881, 0x94667E, 0x162901, 0x767A9F, 0xBEFDFD, 0xEF4556, 0x367ED9,
- 0x13D9EC, 0xB9BA8B, 0xFC97C4, 0x27A831, 0xC36EF1, 0x36C594, 0x56A8D8, 0xB5A8B4, 0x0ECCCF,
- 0x2D8912, 0x34576F, 0x89562C, 0xE3CE99, 0xB920D6, 0xAA5E6B, 0x9C2A3E, 0xCC5F11, 0x4A0BFD,
- 0xFBF4E1, 0x6D3B8E, 0x2C86E2, 0x84D4E9, 0xA9B4FC, 0xD1EEEF, 0xC9352E, 0x61392F, 0x442138,
- 0xC8D91B, 0x0AFC81, 0x6A4AFB, 0xD81C2F, 0x84B453, 0x8C994E, 0xCC2254, 0xDC552A, 0xD6C6C0,
- 0x96190B, 0xB8701A, 0x649569, 0x605A26, 0xEE523F, 0x0F117F, 0x11B5F4, 0xF5CBFC, 0x2DBC34,
- 0xEEBC34, 0xCC5DE8, 0x605EDD, 0x9B8E67, 0xEF3392, 0xB817C9, 0x9B5861, 0xBC57E1, 0xC68351,
- 0x103ED8, 0x4871DD, 0xDD1C2D, 0xA118AF, 0x462C21, 0xD7F359, 0x987AD9, 0xC0549E, 0xFA864F,
- 0xFC0656, 0xAE79E5, 0x362289, 0x22AD38, 0xDC9367, 0xAAE855, 0x382682, 0x9BE7CA, 0xA40D51,
- 0xB13399, 0x0ED7A9, 0x480569, 0xF0B265, 0xA7887F, 0x974C88, 0x36D1F9, 0xB39221, 0x4A827B,
- 0x21CF98, 0xDC9F40, 0x5547DC, 0x3A74E1, 0x42EB67, 0xDF9DFE, 0x5FD45E, 0xA4677B, 0x7AACBA,
- 0xA2F655, 0x23882B, 0x55BA41, 0x086E59, 0x862A21, 0x834739, 0xE6E389, 0xD49EE5, 0x40FB49,
- 0xE956FF, 0xCA0F1C, 0x8A59C5, 0x2BFA94, 0xC5C1D3, 0xCFC50F, 0xAE5ADB, 0x86C547, 0x624385,
- 0x3B8621, 0x94792C, 0x876110, 0x7B4C2A, 0x1A2C80, 0x12BF43, 0x902688, 0x893C78, 0xE4C4A8,
- 0x7BDBE5, 0xC23AC4, 0xEAF426, 0x8A67F7, 0xBF920D, 0x2BA365, 0xB1933D, 0x0B7CBD, 0xDC51A4,
- 0x63DD27, 0xDDE169, 0x19949A, 0x9529A8, 0x28CE68, 0xB4ED09, 0x209F44, 0xCA984E, 0x638270,
- 0x237C7E, 0x32B90F, 0x8EF5A7, 0xE75614, 0x08F121, 0x2A9DB5, 0x4D7E6F, 0x5119A5, 0xABF9B5,
- 0xD6DF82, 0x61DD96, 0x023616, 0x9F3AC4, 0xA1A283, 0x6DED72, 0x7A8D39, 0xA9B882, 0x5C326B,
- 0x5B2746, 0xED3400, 0x7700D2, 0x55F4FC, 0x4D5901, 0x8071E0,
-];
-
-const PIO2: [f64; 8] = [
- 1.57079625129699707031e+00, /* 0x3FF921FB, 0x40000000 */
- 7.54978941586159635335e-08, /* 0x3E74442D, 0x00000000 */
- 5.39030252995776476554e-15, /* 0x3CF84698, 0x80000000 */
- 3.28200341580791294123e-22, /* 0x3B78CC51, 0x60000000 */
- 1.27065575308067607349e-29, /* 0x39F01B83, 0x80000000 */
- 1.22933308981111328932e-36, /* 0x387A2520, 0x40000000 */
- 2.73370053816464559624e-44, /* 0x36E38222, 0x80000000 */
- 2.16741683877804819444e-51, /* 0x3569F31D, 0x00000000 */
-];
-
-// fn rem_pio2_large(x : &[f64], y : &mut [f64], e0 : i32, prec : usize) -> i32
-//
-// Input parameters:
-// x[] The input value (must be positive) is broken into nx
-// pieces of 24-bit integers in double precision format.
-// x[i] will be the i-th 24 bit of x. The scaled exponent
-// of x[0] is given in input parameter e0 (i.e., x[0]*2^e0
-// match x's up to 24 bits.
-//
-// Example of breaking a double positive z into x[0]+x[1]+x[2]:
-// e0 = ilogb(z)-23
-// z = scalbn(z,-e0)
-// for i = 0,1,2
-// x[i] = floor(z)
-// z = (z-x[i])*2**24
-//
-// y[] ouput result in an array of double precision numbers.
-// The dimension of y[] is:
-// 24-bit precision 1
-// 53-bit precision 2
-// 64-bit precision 2
-// 113-bit precision 3
-// The actual value is the sum of them. Thus for 113-bit
-// precison, one may have to do something like:
-//
-// long double t,w,r_head, r_tail;
-// t = (long double)y[2] + (long double)y[1];
-// w = (long double)y[0];
-// r_head = t+w;
-// r_tail = w - (r_head - t);
-//
-// e0 The exponent of x[0]. Must be <= 16360 or you need to
-// expand the ipio2 table.
-//
-// prec an integer indicating the precision:
-// 0 24 bits (single)
-// 1 53 bits (double)
-// 2 64 bits (extended)
-// 3 113 bits (quad)
-//
-// Here is the description of some local variables:
-//
-// jk jk+1 is the initial number of terms of ipio2[] needed
-// in the computation. The minimum and recommended value
-// for jk is 3,4,4,6 for single, double, extended, and quad.
-// jk+1 must be 2 larger than you might expect so that our
-// recomputation test works. (Up to 24 bits in the integer
-// part (the 24 bits of it that we compute) and 23 bits in
-// the fraction part may be lost to cancelation before we
-// recompute.)
-//
-// jz local integer variable indicating the number of
-// terms of ipio2[] used.
-//
-// jx nx - 1
-//
-// jv index for pointing to the suitable ipio2[] for the
-// computation. In general, we want
-// ( 2^e0*x[0] * ipio2[jv-1]*2^(-24jv) )/8
-// is an integer. Thus
-// e0-3-24*jv >= 0 or (e0-3)/24 >= jv
-// Hence jv = max(0,(e0-3)/24).
-//
-// jp jp+1 is the number of terms in PIo2[] needed, jp = jk.
-//
-// q[] double array with integral value, representing the
-// 24-bits chunk of the product of x and 2/pi.
-//
-// q0 the corresponding exponent of q[0]. Note that the
-// exponent for q[i] would be q0-24*i.
-//
-// PIo2[] double precision array, obtained by cutting pi/2
-// into 24 bits chunks.
-//
-// f[] ipio2[] in floating point
-//
-// iq[] integer array by breaking up q[] in 24-bits chunk.
-//
-// fq[] final product of x*(2/pi) in fq[0],..,fq[jk]
-//
-// ih integer. If >0 it indicates q[] is >= 0.5, hence
-// it also indicates the *sign* of the result.
-
-/// Return the last three digits of N with y = x - N*pi/2
-/// so that |y| < pi/2.
-///
-/// The method is to compute the integer (mod 8) and fraction parts of
-/// (2/pi)*x without doing the full multiplication. In general we
-/// skip the part of the product that are known to be a huge integer (
-/// more accurately, = 0 mod 8 ). Thus the number of operations are
-/// independent of the exponent of the input.
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub(crate) fn rem_pio2_large(x: &[f64], y: &mut [f64], e0: i32, prec: usize) -> i32 {
- let x1p24 = f64::from_bits(0x4170000000000000); // 0x1p24 === 2 ^ 24
- let x1p_24 = f64::from_bits(0x3e70000000000000); // 0x1p_24 === 2 ^ (-24)
-
- #[cfg(all(target_pointer_width = "64", feature = "checked"))]
- assert!(e0 <= 16360);
-
- let nx = x.len();
-
- let mut fw: f64;
- let mut n: i32;
- let mut ih: i32;
- let mut z: f64;
- let mut f: [f64; 20] = [0.; 20];
- let mut fq: [f64; 20] = [0.; 20];
- let mut q: [f64; 20] = [0.; 20];
- let mut iq: [i32; 20] = [0; 20];
-
- /* initialize jk*/
- let jk = INIT_JK[prec];
- let jp = jk;
-
- /* determine jx,jv,q0, note that 3>q0 */
- let jx = nx - 1;
- let mut jv = (e0 - 3) / 24;
- if jv < 0 {
- jv = 0;
- }
- let mut q0 = e0 - 24 * (jv + 1);
- let jv = jv as usize;
-
- /* set up f[0] to f[jx+jk] where f[jx+jk] = ipio2[jv+jk] */
- let mut j = (jv - jx) as i32;
- let m = jx + jk;
- for i in 0..=m {
- i!(f, i, =, if j < 0 {
- 0.
- } else {
- i!(IPIO2, j as usize) as f64
- });
- j += 1;
- }
-
- /* compute q[0],q[1],...q[jk] */
- for i in 0..=jk {
- fw = 0f64;
- for j in 0..=jx {
- fw += i!(x, j) * i!(f, jx + i - j);
- }
- i!(q, i, =, fw);
- }
-
- let mut jz = jk;
-
- 'recompute: loop {
- /* distill q[] into iq[] reversingly */
- let mut i = 0i32;
- z = i!(q, jz);
- for j in (1..=jz).rev() {
- fw = (x1p_24 * z) as i32 as f64;
- i!(iq, i as usize, =, (z - x1p24 * fw) as i32);
- z = i!(q, j - 1) + fw;
- i += 1;
- }
-
- /* compute n */
- z = scalbn(z, q0); /* actual value of z */
- z -= 8.0 * floor(z * 0.125); /* trim off integer >= 8 */
- n = z as i32;
- z -= n as f64;
- ih = 0;
- if q0 > 0 {
- /* need iq[jz-1] to determine n */
- i = i!(iq, jz - 1) >> (24 - q0);
- n += i;
- i!(iq, jz - 1, -=, i << (24 - q0));
- ih = i!(iq, jz - 1) >> (23 - q0);
- } else if q0 == 0 {
- ih = i!(iq, jz - 1) >> 23;
- } else if z >= 0.5 {
- ih = 2;
- }
-
- if ih > 0 {
- /* q > 0.5 */
- n += 1;
- let mut carry = 0i32;
- for i in 0..jz {
- /* compute 1-q */
- let j = i!(iq, i);
- if carry == 0 {
- if j != 0 {
- carry = 1;
- i!(iq, i, =, 0x1000000 - j);
- }
- } else {
- i!(iq, i, =, 0xffffff - j);
- }
- }
- if q0 > 0 {
- /* rare case: chance is 1 in 12 */
- match q0 {
- 1 => {
- i!(iq, jz - 1, &=, 0x7fffff);
- }
- 2 => {
- i!(iq, jz - 1, &=, 0x3fffff);
- }
- _ => {}
- }
- }
- if ih == 2 {
- z = 1. - z;
- if carry != 0 {
- z -= scalbn(1., q0);
- }
- }
- }
-
- /* check if recomputation is needed */
- if z == 0. {
- let mut j = 0;
- for i in (jk..=jz - 1).rev() {
- j |= i!(iq, i);
- }
- if j == 0 {
- /* need recomputation */
- let mut k = 1;
- while i!(iq, jk - k, ==, 0) {
- k += 1; /* k = no. of terms needed */
- }
-
- for i in (jz + 1)..=(jz + k) {
- /* add q[jz+1] to q[jz+k] */
- i!(f, jx + i, =, i!(IPIO2, jv + i) as f64);
- fw = 0f64;
- for j in 0..=jx {
- fw += i!(x, j) * i!(f, jx + i - j);
- }
- i!(q, i, =, fw);
- }
- jz += k;
- continue 'recompute;
- }
- }
-
- break;
- }
-
- /* chop off zero terms */
- if z == 0. {
- jz -= 1;
- q0 -= 24;
- while i!(iq, jz) == 0 {
- jz -= 1;
- q0 -= 24;
- }
- } else {
- /* break z into 24-bit if necessary */
- z = scalbn(z, -q0);
- if z >= x1p24 {
- fw = (x1p_24 * z) as i32 as f64;
- i!(iq, jz, =, (z - x1p24 * fw) as i32);
- jz += 1;
- q0 += 24;
- i!(iq, jz, =, fw as i32);
- } else {
- i!(iq, jz, =, z as i32);
- }
- }
-
- /* convert integer "bit" chunk to floating-point value */
- fw = scalbn(1., q0);
- for i in (0..=jz).rev() {
- i!(q, i, =, fw * (i!(iq, i) as f64));
- fw *= x1p_24;
- }
-
- /* compute PIo2[0,...,jp]*q[jz,...,0] */
- for i in (0..=jz).rev() {
- fw = 0f64;
- let mut k = 0;
- while (k <= jp) && (k <= jz - i) {
- fw += i!(PIO2, k) * i!(q, i + k);
- k += 1;
- }
- i!(fq, jz - i, =, fw);
- }
-
- /* compress fq[] into y[] */
- match prec {
- 0 => {
- fw = 0f64;
- for i in (0..=jz).rev() {
- fw += i!(fq, i);
- }
- i!(y, 0, =, if ih == 0 { fw } else { -fw });
- }
- 1 | 2 => {
- fw = 0f64;
- for i in (0..=jz).rev() {
- fw += i!(fq, i);
- }
- // TODO: drop excess precision here once double_t is used
- fw = fw as f64;
- i!(y, 0, =, if ih == 0 { fw } else { -fw });
- fw = i!(fq, 0) - fw;
- for i in 1..=jz {
- fw += i!(fq, i);
- }
- i!(y, 1, =, if ih == 0 { fw } else { -fw });
- }
- 3 => {
- /* painful */
- for i in (1..=jz).rev() {
- fw = i!(fq, i - 1) + i!(fq, i);
- i!(fq, i, +=, i!(fq, i - 1) - fw);
- i!(fq, i - 1, =, fw);
- }
- for i in (2..=jz).rev() {
- fw = i!(fq, i - 1) + i!(fq, i);
- i!(fq, i, +=, i!(fq, i - 1) - fw);
- i!(fq, i - 1, =, fw);
- }
- fw = 0f64;
- for i in (2..=jz).rev() {
- fw += i!(fq, i);
- }
- if ih == 0 {
- i!(y, 0, =, i!(fq, 0));
- i!(y, 1, =, i!(fq, 1));
- i!(y, 2, =, fw);
- } else {
- i!(y, 0, =, -i!(fq, 0));
- i!(y, 1, =, -i!(fq, 1));
- i!(y, 2, =, -fw);
- }
- }
- #[cfg(feature = "checked")]
- _ => unreachable!(),
- #[cfg(not(feature = "checked"))]
- _ => {}
- }
- n & 7
-}
diff --git a/vendor/libm-0.1.4/src/math/rem_pio2f.rs b/vendor/libm-0.1.4/src/math/rem_pio2f.rs
deleted file mode 100644
index af2745d1b..000000000
--- a/vendor/libm-0.1.4/src/math/rem_pio2f.rs
+++ /dev/null
@@ -1,63 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_rem_pio2f.c */
-/*
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- * Debugged and optimized by Bruce D. Evans.
- */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-use super::rem_pio2_large;
-
-use core::f64;
-
-const TOINT: f64 = 1.5 / f64::EPSILON;
-
-/// 53 bits of 2/pi
-const INV_PIO2: f64 = 6.36619772367581382433e-01; /* 0x3FE45F30, 0x6DC9C883 */
-/// first 25 bits of pi/2
-const PIO2_1: f64 = 1.57079631090164184570e+00; /* 0x3FF921FB, 0x50000000 */
-/// pi/2 - pio2_1
-const PIO2_1T: f64 = 1.58932547735281966916e-08; /* 0x3E5110b4, 0x611A6263 */
-
-/// Return the remainder of x rem pi/2 in *y
-///
-/// use double precision for everything except passing x
-/// use __rem_pio2_large() for large x
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub(crate) fn rem_pio2f(x: f32) -> (i32, f64) {
- let x64 = x as f64;
-
- let mut tx: [f64; 1] = [0.];
- let mut ty: [f64; 1] = [0.];
-
- let ix = x.to_bits() & 0x7fffffff;
- /* 25+53 bit pi is good enough for medium size */
- if ix < 0x4dc90fdb {
- /* |x| ~< 2^28*(pi/2), medium size */
- /* Use a specialized rint() to get fn. Assume round-to-nearest. */
- let f_n = x64 * INV_PIO2 + TOINT - TOINT;
- return (f_n as i32, x64 - f_n * PIO2_1 - f_n * PIO2_1T);
- }
- if ix >= 0x7f800000 {
- /* x is inf or NaN */
- return (0, x64 - x64);
- }
- /* scale x into [2^23, 2^24-1] */
- let sign = (x.to_bits() >> 31) != 0;
- let e0 = ((ix >> 23) - (0x7f + 23)) as i32; /* e0 = ilogb(|x|)-23, positive */
- tx[0] = f32::from_bits(ix - (e0 << 23) as u32) as f64;
- let n = rem_pio2_large(&tx, &mut ty, e0, 0);
- if sign {
- return (-n, -ty[0]);
- }
- (n, ty[0])
-}
diff --git a/vendor/libm-0.1.4/src/math/remquo.rs b/vendor/libm-0.1.4/src/math/remquo.rs
deleted file mode 100644
index 1c2ba8918..000000000
--- a/vendor/libm-0.1.4/src/math/remquo.rs
+++ /dev/null
@@ -1,97 +0,0 @@
-pub fn remquo(mut x: f64, mut y: f64) -> (f64, i32) {
- let ux: u64 = x.to_bits();
- let mut uy: u64 = y.to_bits();
- let mut ex = ((ux >> 52) & 0x7ff) as i32;
- let mut ey = ((uy >> 52) & 0x7ff) as i32;
- let sx = (ux >> 63) != 0;
- let sy = (uy >> 63) != 0;
- let mut q: u32;
- let mut i: u64;
- let mut uxi: u64 = ux;
-
- if (uy << 1) == 0 || y.is_nan() || ex == 0x7ff {
- return ((x * y) / (x * y), 0);
- }
- if (ux << 1) == 0 {
- return (x, 0);
- }
-
- /* normalize x and y */
- if ex == 0 {
- i = uxi << 12;
- while (i >> 63) == 0 {
- ex -= 1;
- i <<= 1;
- }
- uxi <<= -ex + 1;
- } else {
- uxi &= (!0) >> 12;
- uxi |= 1 << 52;
- }
- if ey == 0 {
- i = uy << 12;
- while (i >> 63) == 0 {
- ey -= 1;
- i <<= 1;
- }
- uy <<= -ey + 1;
- } else {
- uy &= (!0) >> 12;
- uy |= 1 << 52;
- }
-
- q = 0;
-
- if ex + 1 != ey {
- if ex < ey {
- return (x, 0);
- }
- /* x mod y */
- while ex > ey {
- i = uxi.wrapping_sub(uy);
- if (i >> 63) == 0 {
- uxi = i;
- q += 1;
- }
- uxi <<= 1;
- q <<= 1;
- ex -= 1;
- }
- i = uxi.wrapping_sub(uy);
- if (i >> 63) == 0 {
- uxi = i;
- q += 1;
- }
- if uxi == 0 {
- ex = -60;
- } else {
- while (uxi >> 52) == 0 {
- uxi <<= 1;
- ex -= 1;
- }
- }
- }
-
- /* scale result and decide between |x| and |x|-|y| */
- if ex > 0 {
- uxi -= 1 << 52;
- uxi |= (ex as u64) << 52;
- } else {
- uxi >>= -ex + 1;
- }
- x = f64::from_bits(uxi);
- if sy {
- y = -y;
- }
- if ex == ey || (ex + 1 == ey && (2.0 * x > y || (2.0 * x == y && (q % 2) != 0))) {
- x -= y;
- q += 1;
- }
- q &= 0x7fffffff;
- let quo = if sx ^ sy { -(q as i32) } else { q as i32 };
- if sx {
- (-x, quo)
- } else {
- (x, quo)
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/remquof.rs b/vendor/libm-0.1.4/src/math/remquof.rs
deleted file mode 100644
index 871d0c7d6..000000000
--- a/vendor/libm-0.1.4/src/math/remquof.rs
+++ /dev/null
@@ -1,96 +0,0 @@
-pub fn remquof(mut x: f32, mut y: f32) -> (f32, i32) {
- let ux: u32 = x.to_bits();
- let mut uy: u32 = y.to_bits();
- let mut ex = ((ux >> 23) & 0xff) as i32;
- let mut ey = ((uy >> 23) & 0xff) as i32;
- let sx = (ux >> 31) != 0;
- let sy = (uy >> 31) != 0;
- let mut q: u32;
- let mut i: u32;
- let mut uxi: u32 = ux;
-
- if (uy << 1) == 0 || y.is_nan() || ex == 0xff {
- return ((x * y) / (x * y), 0);
- }
- if (ux << 1) == 0 {
- return (x, 0);
- }
-
- /* normalize x and y */
- if ex == 0 {
- i = uxi << 9;
- while (i >> 31) == 0 {
- ex -= 1;
- i <<= 1;
- }
- uxi <<= -ex + 1;
- } else {
- uxi &= (!0) >> 9;
- uxi |= 1 << 23;
- }
- if ey == 0 {
- i = uy << 9;
- while (i >> 31) == 0 {
- ey -= 1;
- i <<= 1;
- }
- uy <<= -ey + 1;
- } else {
- uy &= (!0) >> 9;
- uy |= 1 << 23;
- }
-
- q = 0;
- if ex + 1 != ey {
- if ex < ey {
- return (x, 0);
- }
- /* x mod y */
- while ex > ey {
- i = uxi.wrapping_sub(uy);
- if (i >> 31) == 0 {
- uxi = i;
- q += 1;
- }
- uxi <<= 1;
- q <<= 1;
- ex -= 1;
- }
- i = uxi.wrapping_sub(uy);
- if (i >> 31) == 0 {
- uxi = i;
- q += 1;
- }
- if uxi == 0 {
- ex = -30;
- } else {
- while (uxi >> 23) == 0 {
- uxi <<= 1;
- ex -= 1;
- }
- }
- }
-
- /* scale result and decide between |x| and |x|-|y| */
- if ex > 0 {
- uxi -= 1 << 23;
- uxi |= (ex as u32) << 23;
- } else {
- uxi >>= -ex + 1;
- }
- x = f32::from_bits(uxi);
- if sy {
- y = -y;
- }
- if ex == ey || (ex + 1 == ey && (2.0 * x > y || (2.0 * x == y && (q % 2) != 0))) {
- x -= y;
- q += 1;
- }
- q &= 0x7fffffff;
- let quo = if sx ^ sy { -(q as i32) } else { q as i32 };
- if sx {
- (-x, quo)
- } else {
- (x, quo)
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/round.rs b/vendor/libm-0.1.4/src/math/round.rs
deleted file mode 100644
index 9a9723cfb..000000000
--- a/vendor/libm-0.1.4/src/math/round.rs
+++ /dev/null
@@ -1,37 +0,0 @@
-use core::f64;
-
-const TOINT: f64 = 1.0 / f64::EPSILON;
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn round(mut x: f64) -> f64 {
- let (f, i) = (x, x.to_bits());
- let e: u64 = i >> 52 & 0x7ff;
- let mut y: f64;
-
- if e >= 0x3ff + 52 {
- return x;
- }
- if i >> 63 != 0 {
- x = -x;
- }
- if e < 0x3ff - 1 {
- // raise inexact if x!=0
- force_eval!(x + TOINT);
- return 0.0 * f;
- }
- y = x + TOINT - TOINT - x;
- if y > 0.5 {
- y = y + x - 1.0;
- } else if y <= -0.5 {
- y = y + x + 1.0;
- } else {
- y = y + x;
- }
-
- if i >> 63 != 0 {
- -y
- } else {
- y
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/roundf.rs b/vendor/libm-0.1.4/src/math/roundf.rs
deleted file mode 100644
index 839d9469a..000000000
--- a/vendor/libm-0.1.4/src/math/roundf.rs
+++ /dev/null
@@ -1,35 +0,0 @@
-use core::f32;
-
-const TOINT: f32 = 1.0 / f32::EPSILON;
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn roundf(mut x: f32) -> f32 {
- let i = x.to_bits();
- let e: u32 = i >> 23 & 0xff;
- let mut y: f32;
-
- if e >= 0x7f + 23 {
- return x;
- }
- if i >> 31 != 0 {
- x = -x;
- }
- if e < 0x7f - 1 {
- force_eval!(x + TOINT);
- return 0.0 * x;
- }
- y = x + TOINT - TOINT - x;
- if y > 0.5f32 {
- y = y + x - 1.0;
- } else if y <= -0.5f32 {
- y = y + x + 1.0;
- } else {
- y = y + x;
- }
- if i >> 31 != 0 {
- -y
- } else {
- y
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/scalbn.rs b/vendor/libm-0.1.4/src/math/scalbn.rs
deleted file mode 100644
index d8c8409ac..000000000
--- a/vendor/libm-0.1.4/src/math/scalbn.rs
+++ /dev/null
@@ -1,34 +0,0 @@
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn scalbn(x: f64, mut n: i32) -> f64 {
- let x1p1023 = f64::from_bits(0x7fe0000000000000); // 0x1p1023 === 2 ^ 1023
- let x1p53 = f64::from_bits(0x4340000000000000); // 0x1p53 === 2 ^ 53
- let x1p_1022 = f64::from_bits(0x0010000000000000); // 0x1p-1022 === 2 ^ (-1022)
-
- let mut y = x;
-
- if n > 1023 {
- y *= x1p1023;
- n -= 1023;
- if n > 1023 {
- y *= x1p1023;
- n -= 1023;
- if n > 1023 {
- n = 1023;
- }
- }
- } else if n < -1022 {
- /* make sure final n < -53 to avoid double
- rounding in the subnormal range */
- y *= x1p_1022 * x1p53;
- n += 1022 - 53;
- if n < -1022 {
- y *= x1p_1022 * x1p53;
- n += 1022 - 53;
- if n < -1022 {
- n = -1022;
- }
- }
- }
- y * f64::from_bits(((0x3ff + n) as u64) << 52)
-}
diff --git a/vendor/libm-0.1.4/src/math/scalbnf.rs b/vendor/libm-0.1.4/src/math/scalbnf.rs
deleted file mode 100644
index 4e9771175..000000000
--- a/vendor/libm-0.1.4/src/math/scalbnf.rs
+++ /dev/null
@@ -1,30 +0,0 @@
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn scalbnf(mut x: f32, mut n: i32) -> f32 {
- let x1p127 = f32::from_bits(0x7f000000); // 0x1p127f === 2 ^ 127
- let x1p_126 = f32::from_bits(0x800000); // 0x1p-126f === 2 ^ -126
- let x1p24 = f32::from_bits(0x4b800000); // 0x1p24f === 2 ^ 24
-
- if n > 127 {
- x *= x1p127;
- n -= 127;
- if n > 127 {
- x *= x1p127;
- n -= 127;
- if n > 127 {
- n = 127;
- }
- }
- } else if n < -126 {
- x *= x1p_126 * x1p24;
- n += 126 - 24;
- if n < -126 {
- x *= x1p_126 * x1p24;
- n += 126 - 24;
- if n < -126 {
- n = -126;
- }
- }
- }
- x * f32::from_bits(((0x7f + n) as u32) << 23)
-}
diff --git a/vendor/libm-0.1.4/src/math/sin.rs b/vendor/libm-0.1.4/src/math/sin.rs
deleted file mode 100644
index 51aed88a8..000000000
--- a/vendor/libm-0.1.4/src/math/sin.rs
+++ /dev/null
@@ -1,86 +0,0 @@
-// origin: FreeBSD /usr/src/lib/msun/src/s_sin.c */
-//
-// ====================================================
-// Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
-//
-// Developed at SunPro, a Sun Microsystems, Inc. business.
-// Permission to use, copy, modify, and distribute this
-// software is freely granted, provided that this notice
-// is preserved.
-// ====================================================
-
-use super::{k_cos, k_sin, rem_pio2};
-
-// sin(x)
-// Return sine function of x.
-//
-// kernel function:
-// k_sin ... sine function on [-pi/4,pi/4]
-// k_cos ... cose function on [-pi/4,pi/4]
-// rem_pio2 ... argument reduction routine
-//
-// Method.
-// Let S,C and T denote the sin, cos and tan respectively on
-// [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2
-// in [-pi/4 , +pi/4], and let n = k mod 4.
-// We have
-//
-// n sin(x) cos(x) tan(x)
-// ----------------------------------------------------------
-// 0 S C T
-// 1 C -S -1/T
-// 2 -S -C T
-// 3 -C S -1/T
-// ----------------------------------------------------------
-//
-// Special cases:
-// Let trig be any of sin, cos, or tan.
-// trig(+-INF) is NaN, with signals;
-// trig(NaN) is that NaN;
-//
-// Accuracy:
-// TRIG(x) returns trig(x) nearly rounded
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn sin(x: f64) -> f64 {
- let x1p120 = f64::from_bits(0x4770000000000000); // 0x1p120f === 2 ^ 120
-
- /* High word of x. */
- let ix = (f64::to_bits(x) >> 32) as u32 & 0x7fffffff;
-
- /* |x| ~< pi/4 */
- if ix <= 0x3fe921fb {
- if ix < 0x3e500000 {
- /* |x| < 2**-26 */
- /* raise inexact if x != 0 and underflow if subnormal*/
- if ix < 0x00100000 {
- force_eval!(x / x1p120);
- } else {
- force_eval!(x + x1p120);
- }
- return x;
- }
- return k_sin(x, 0.0, 0);
- }
-
- /* sin(Inf or NaN) is NaN */
- if ix >= 0x7ff00000 {
- return x - x;
- }
-
- /* argument reduction needed */
- let (n, y0, y1) = rem_pio2(x);
- match n & 3 {
- 0 => k_sin(y0, y1, 1),
- 1 => k_cos(y0, y1),
- 2 => -k_sin(y0, y1, 1),
- _ => -k_cos(y0, y1),
- }
-}
-
-#[test]
-fn test_near_pi() {
- let x = f64::from_bits(0x400921fb000FD5DD); // 3.141592026217707
- let sx = f64::from_bits(0x3ea50d15ced1a4a2); // 6.273720864039205e-7
- assert_eq!(sin(x), sx);
-}
diff --git a/vendor/libm-0.1.4/src/math/sincos.rs b/vendor/libm-0.1.4/src/math/sincos.rs
deleted file mode 100644
index 750908df4..000000000
--- a/vendor/libm-0.1.4/src/math/sincos.rs
+++ /dev/null
@@ -1,59 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/s_sin.c */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-use super::{get_high_word, k_cos, k_sin, rem_pio2};
-
-pub fn sincos(x: f64) -> (f64, f64) {
- let s: f64;
- let c: f64;
- let mut ix: u32;
-
- ix = get_high_word(x);
- ix &= 0x7fffffff;
-
- /* |x| ~< pi/4 */
- if ix <= 0x3fe921fb {
- /* if |x| < 2**-27 * sqrt(2) */
- if ix < 0x3e46a09e {
- /* raise inexact if x!=0 and underflow if subnormal */
- let x1p120 = f64::from_bits(0x4770000000000000); // 0x1p120 == 2^120
- if ix < 0x00100000 {
- force_eval!(x / x1p120);
- } else {
- force_eval!(x + x1p120);
- }
- return (x, 1.0);
- }
- return (k_sin(x, 0.0, 0), k_cos(x, 0.0));
- }
-
- /* sincos(Inf or NaN) is NaN */
- if ix >= 0x7ff00000 {
- let rv = x - x;
- return (rv, rv);
- }
-
- /* argument reduction needed */
- let (n, y0, y1) = rem_pio2(x);
- s = k_sin(y0, y1, 1);
- c = k_cos(y0, y1);
- match n & 3 {
- 0 => (s, c),
- 1 => (c, -s),
- 2 => (-s, -c),
- 3 => (-c, s),
- #[cfg(feature = "checked")]
- _ => unreachable!(),
- #[cfg(not(feature = "checked"))]
- _ => (0.0, 1.0),
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/sincosf.rs b/vendor/libm-0.1.4/src/math/sincosf.rs
deleted file mode 100644
index bb9a00392..000000000
--- a/vendor/libm-0.1.4/src/math/sincosf.rs
+++ /dev/null
@@ -1,123 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/s_sinf.c */
-/*
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- * Optimized by Bruce D. Evans.
- */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-use super::{k_cosf, k_sinf, rem_pio2f};
-
-/* Small multiples of pi/2 rounded to double precision. */
-const PI_2: f32 = 0.5 * 3.1415926535897931160E+00;
-const S1PIO2: f32 = 1.0 * PI_2; /* 0x3FF921FB, 0x54442D18 */
-const S2PIO2: f32 = 2.0 * PI_2; /* 0x400921FB, 0x54442D18 */
-const S3PIO2: f32 = 3.0 * PI_2; /* 0x4012D97C, 0x7F3321D2 */
-const S4PIO2: f32 = 4.0 * PI_2; /* 0x401921FB, 0x54442D18 */
-
-pub fn sincosf(x: f32) -> (f32, f32) {
- let s: f32;
- let c: f32;
- let mut ix: u32;
- let sign: bool;
-
- ix = x.to_bits();
- sign = (ix >> 31) != 0;
- ix &= 0x7fffffff;
-
- /* |x| ~<= pi/4 */
- if ix <= 0x3f490fda {
- /* |x| < 2**-12 */
- if ix < 0x39800000 {
- /* raise inexact if x!=0 and underflow if subnormal */
-
- let x1p120 = f32::from_bits(0x7b800000); // 0x1p120 == 2^120
- if ix < 0x00100000 {
- force_eval!(x / x1p120);
- } else {
- force_eval!(x + x1p120);
- }
- return (x, 1.0);
- }
- return (k_sinf(x as f64), k_cosf(x as f64));
- }
-
- /* |x| ~<= 5*pi/4 */
- if ix <= 0x407b53d1 {
- if ix <= 0x4016cbe3 {
- /* |x| ~<= 3pi/4 */
- if sign {
- s = -k_cosf((x + S1PIO2) as f64);
- c = k_sinf((x + S1PIO2) as f64);
- } else {
- s = k_cosf((S1PIO2 - x) as f64);
- c = k_sinf((S1PIO2 - x) as f64);
- }
- }
- /* -sin(x+c) is not correct if x+c could be 0: -0 vs +0 */
- else {
- if sign {
- s = k_sinf((x + S2PIO2) as f64);
- c = k_cosf((x + S2PIO2) as f64);
- } else {
- s = k_sinf((x - S2PIO2) as f64);
- c = k_cosf((x - S2PIO2) as f64);
- }
- }
-
- return (s, c);
- }
-
- /* |x| ~<= 9*pi/4 */
- if ix <= 0x40e231d5 {
- if ix <= 0x40afeddf {
- /* |x| ~<= 7*pi/4 */
- if sign {
- s = k_cosf((x + S3PIO2) as f64);
- c = -k_sinf((x + S3PIO2) as f64);
- } else {
- s = -k_cosf((x - S3PIO2) as f64);
- c = k_sinf((x - S3PIO2) as f64);
- }
- } else {
- if sign {
- s = k_cosf((x + S4PIO2) as f64);
- c = k_sinf((x + S4PIO2) as f64);
- } else {
- s = k_cosf((x - S4PIO2) as f64);
- c = k_sinf((x - S4PIO2) as f64);
- }
- }
-
- return (s, c);
- }
-
- /* sin(Inf or NaN) is NaN */
- if ix >= 0x7f800000 {
- let rv = x - x;
- return (rv, rv);
- }
-
- /* general argument reduction needed */
- let (n, y) = rem_pio2f(x);
- s = k_sinf(y);
- c = k_cosf(y);
- match n & 3 {
- 0 => (s, c),
- 1 => (c, -s),
- 2 => (-s, -c),
- 3 => (-c, s),
- #[cfg(feature = "checked")]
- _ => unreachable!(),
- #[cfg(not(feature = "checked"))]
- _ => (0.0, 1.0),
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/sinf.rs b/vendor/libm-0.1.4/src/math/sinf.rs
deleted file mode 100644
index 0c31099ed..000000000
--- a/vendor/libm-0.1.4/src/math/sinf.rs
+++ /dev/null
@@ -1,94 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/s_sinf.c */
-/*
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- * Optimized by Bruce D. Evans.
- */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-use super::{k_cosf, k_sinf, rem_pio2f};
-
-use core::f64::consts::FRAC_PI_2;
-
-/* Small multiples of pi/2 rounded to double precision. */
-const S1_PIO2: f64 = 1. * FRAC_PI_2; /* 0x3FF921FB, 0x54442D18 */
-const S2_PIO2: f64 = 2. * FRAC_PI_2; /* 0x400921FB, 0x54442D18 */
-const S3_PIO2: f64 = 3. * FRAC_PI_2; /* 0x4012D97C, 0x7F3321D2 */
-const S4_PIO2: f64 = 4. * FRAC_PI_2; /* 0x401921FB, 0x54442D18 */
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn sinf(x: f32) -> f32 {
- let x64 = x as f64;
-
- let x1p120 = f32::from_bits(0x7b800000); // 0x1p120f === 2 ^ 120
-
- let mut ix = x.to_bits();
- let sign = (ix >> 31) != 0;
- ix &= 0x7fffffff;
-
- if ix <= 0x3f490fda {
- /* |x| ~<= pi/4 */
- if ix < 0x39800000 {
- /* |x| < 2**-12 */
- /* raise inexact if x!=0 and underflow if subnormal */
- force_eval!(if ix < 0x00800000 {
- x / x1p120
- } else {
- x + x1p120
- });
- return x;
- }
- return k_sinf(x64);
- }
- if ix <= 0x407b53d1 {
- /* |x| ~<= 5*pi/4 */
- if ix <= 0x4016cbe3 {
- /* |x| ~<= 3pi/4 */
- if sign {
- return -k_cosf(x64 + S1_PIO2);
- } else {
- return k_cosf(x64 - S1_PIO2);
- }
- }
- return k_sinf(if sign {
- -(x64 + S2_PIO2)
- } else {
- -(x64 - S2_PIO2)
- });
- }
- if ix <= 0x40e231d5 {
- /* |x| ~<= 9*pi/4 */
- if ix <= 0x40afeddf {
- /* |x| ~<= 7*pi/4 */
- if sign {
- return k_cosf(x64 + S3_PIO2);
- } else {
- return -k_cosf(x64 - S3_PIO2);
- }
- }
- return k_sinf(if sign { x64 + S4_PIO2 } else { x64 - S4_PIO2 });
- }
-
- /* sin(Inf or NaN) is NaN */
- if ix >= 0x7f800000 {
- return x - x;
- }
-
- /* general argument reduction needed */
- let (n, y) = rem_pio2f(x);
- match n & 3 {
- 0 => k_sinf(y),
- 1 => k_cosf(y),
- 2 => k_sinf(-y),
- _ => -k_cosf(y),
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/sinh.rs b/vendor/libm-0.1.4/src/math/sinh.rs
deleted file mode 100644
index d36de66c1..000000000
--- a/vendor/libm-0.1.4/src/math/sinh.rs
+++ /dev/null
@@ -1,50 +0,0 @@
-use super::{expm1, expo2};
-
-// sinh(x) = (exp(x) - 1/exp(x))/2
-// = (exp(x)-1 + (exp(x)-1)/exp(x))/2
-// = x + x^3/6 + o(x^5)
-//
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn sinh(x: f64) -> f64 {
- // union {double f; uint64_t i;} u = {.f = x};
- // uint32_t w;
- // double t, h, absx;
-
- let mut uf: f64 = x;
- let mut ui: u64 = f64::to_bits(uf);
- let w: u32;
- let t: f64;
- let mut h: f64;
- let absx: f64;
-
- h = 0.5;
- if ui >> 63 != 0 {
- h = -h;
- }
- /* |x| */
- ui &= !1 / 2;
- uf = f64::from_bits(ui);
- absx = uf;
- w = (ui >> 32) as u32;
-
- /* |x| < log(DBL_MAX) */
- if w < 0x40862e42 {
- t = expm1(absx);
- if w < 0x3ff00000 {
- if w < 0x3ff00000 - (26 << 20) {
- /* note: inexact and underflow are raised by expm1 */
- /* note: this branch avoids spurious underflow */
- return x;
- }
- return h * (2.0 * t - t * t / (t + 1.0));
- }
- /* note: |x|>log(0x1p26)+eps could be just h*exp(x) */
- return h * (t + t / (t + 1.0));
- }
-
- /* |x| > log(DBL_MAX) or nan */
- /* note: the result is stored to handle overflow */
- t = 2.0 * h * expo2(absx);
- t
-}
diff --git a/vendor/libm-0.1.4/src/math/sinhf.rs b/vendor/libm-0.1.4/src/math/sinhf.rs
deleted file mode 100644
index fd0b2bfc8..000000000
--- a/vendor/libm-0.1.4/src/math/sinhf.rs
+++ /dev/null
@@ -1,31 +0,0 @@
-use super::expm1f;
-use super::k_expo2f;
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn sinhf(x: f32) -> f32 {
- let mut h = 0.5f32;
- let mut ix = x.to_bits();
- if (ix >> 31) != 0 {
- h = -h;
- }
- /* |x| */
- ix &= 0x7fffffff;
- let absx = f32::from_bits(ix);
- let w = ix;
-
- /* |x| < log(FLT_MAX) */
- if w < 0x42b17217 {
- let t = expm1f(absx);
- if w < 0x3f800000 {
- if w < (0x3f800000 - (12 << 23)) {
- return x;
- }
- return h * (2. * t - t * t / (t + 1.));
- }
- return h * (t + t / (t + 1.));
- }
-
- /* |x| > logf(FLT_MAX) or nan */
- 2. * h * k_expo2f(absx)
-}
diff --git a/vendor/libm-0.1.4/src/math/sqrt.rs b/vendor/libm-0.1.4/src/math/sqrt.rs
deleted file mode 100644
index 14404d4eb..000000000
--- a/vendor/libm-0.1.4/src/math/sqrt.rs
+++ /dev/null
@@ -1,223 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_sqrt.c */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunSoft, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-/* sqrt(x)
- * Return correctly rounded sqrt.
- * ------------------------------------------
- * | Use the hardware sqrt if you have one |
- * ------------------------------------------
- * Method:
- * Bit by bit method using integer arithmetic. (Slow, but portable)
- * 1. Normalization
- * Scale x to y in [1,4) with even powers of 2:
- * find an integer k such that 1 <= (y=x*2^(2k)) < 4, then
- * sqrt(x) = 2^k * sqrt(y)
- * 2. Bit by bit computation
- * Let q = sqrt(y) truncated to i bit after binary point (q = 1),
- * i 0
- * i+1 2
- * s = 2*q , and y = 2 * ( y - q ). (1)
- * i i i i
- *
- * To compute q from q , one checks whether
- * i+1 i
- *
- * -(i+1) 2
- * (q + 2 ) <= y. (2)
- * i
- * -(i+1)
- * If (2) is false, then q = q ; otherwise q = q + 2 .
- * i+1 i i+1 i
- *
- * With some algebric manipulation, it is not difficult to see
- * that (2) is equivalent to
- * -(i+1)
- * s + 2 <= y (3)
- * i i
- *
- * The advantage of (3) is that s and y can be computed by
- * i i
- * the following recurrence formula:
- * if (3) is false
- *
- * s = s , y = y ; (4)
- * i+1 i i+1 i
- *
- * otherwise,
- * -i -(i+1)
- * s = s + 2 , y = y - s - 2 (5)
- * i+1 i i+1 i i
- *
- * One may easily use induction to prove (4) and (5).
- * Note. Since the left hand side of (3) contain only i+2 bits,
- * it does not necessary to do a full (53-bit) comparison
- * in (3).
- * 3. Final rounding
- * After generating the 53 bits result, we compute one more bit.
- * Together with the remainder, we can decide whether the
- * result is exact, bigger than 1/2ulp, or less than 1/2ulp
- * (it will never equal to 1/2ulp).
- * The rounding mode can be detected by checking whether
- * huge + tiny is equal to huge, and whether huge - tiny is
- * equal to huge for some floating point number "huge" and "tiny".
- *
- * Special cases:
- * sqrt(+-0) = +-0 ... exact
- * sqrt(inf) = inf
- * sqrt(-ve) = NaN ... with invalid signal
- * sqrt(NaN) = NaN ... with invalid signal for signaling NaN
- */
-
-use core::f64;
-use core::num::Wrapping;
-
-const TINY: f64 = 1.0e-300;
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn sqrt(x: f64) -> f64 {
- // On wasm32 we know that LLVM's intrinsic will compile to an optimized
- // `f64.sqrt` native instruction, so we can leverage this for both code size
- // and speed.
- llvm_intrinsically_optimized! {
- #[cfg(target_arch = "wasm32")] {
- return if x < 0.0 {
- f64::NAN
- } else {
- unsafe { ::core::intrinsics::sqrtf64(x) }
- }
- }
- }
- let mut z: f64;
- let sign: Wrapping<u32> = Wrapping(0x80000000);
- let mut ix0: i32;
- let mut s0: i32;
- let mut q: i32;
- let mut m: i32;
- let mut t: i32;
- let mut i: i32;
- let mut r: Wrapping<u32>;
- let mut t1: Wrapping<u32>;
- let mut s1: Wrapping<u32>;
- let mut ix1: Wrapping<u32>;
- let mut q1: Wrapping<u32>;
-
- ix0 = (x.to_bits() >> 32) as i32;
- ix1 = Wrapping(x.to_bits() as u32);
-
- /* take care of Inf and NaN */
- if (ix0 & 0x7ff00000) == 0x7ff00000 {
- return x * x + x; /* sqrt(NaN)=NaN, sqrt(+inf)=+inf, sqrt(-inf)=sNaN */
- }
- /* take care of zero */
- if ix0 <= 0 {
- if ((ix0 & !(sign.0 as i32)) | ix1.0 as i32) == 0 {
- return x; /* sqrt(+-0) = +-0 */
- }
- if ix0 < 0 {
- return (x - x) / (x - x); /* sqrt(-ve) = sNaN */
- }
- }
- /* normalize x */
- m = ix0 >> 20;
- if m == 0 {
- /* subnormal x */
- while ix0 == 0 {
- m -= 21;
- ix0 |= (ix1 >> 11).0 as i32;
- ix1 <<= 21;
- }
- i = 0;
- while (ix0 & 0x00100000) == 0 {
- i += 1;
- ix0 <<= 1;
- }
- m -= i - 1;
- ix0 |= (ix1 >> (32 - i) as usize).0 as i32;
- ix1 = ix1 << i as usize;
- }
- m -= 1023; /* unbias exponent */
- ix0 = (ix0 & 0x000fffff) | 0x00100000;
- if (m & 1) == 1 {
- /* odd m, double x to make it even */
- ix0 += ix0 + ((ix1 & sign) >> 31).0 as i32;
- ix1 += ix1;
- }
- m >>= 1; /* m = [m/2] */
-
- /* generate sqrt(x) bit by bit */
- ix0 += ix0 + ((ix1 & sign) >> 31).0 as i32;
- ix1 += ix1;
- q = 0; /* [q,q1] = sqrt(x) */
- q1 = Wrapping(0);
- s0 = 0;
- s1 = Wrapping(0);
- r = Wrapping(0x00200000); /* r = moving bit from right to left */
-
- while r != Wrapping(0) {
- t = s0 + r.0 as i32;
- if t <= ix0 {
- s0 = t + r.0 as i32;
- ix0 -= t;
- q += r.0 as i32;
- }
- ix0 += ix0 + ((ix1 & sign) >> 31).0 as i32;
- ix1 += ix1;
- r >>= 1;
- }
-
- r = sign;
- while r != Wrapping(0) {
- t1 = s1 + r;
- t = s0;
- if t < ix0 || (t == ix0 && t1 <= ix1) {
- s1 = t1 + r;
- if (t1 & sign) == sign && (s1 & sign) == Wrapping(0) {
- s0 += 1;
- }
- ix0 -= t;
- if ix1 < t1 {
- ix0 -= 1;
- }
- ix1 -= t1;
- q1 += r;
- }
- ix0 += ix0 + ((ix1 & sign) >> 31).0 as i32;
- ix1 += ix1;
- r >>= 1;
- }
-
- /* use floating add to find out rounding direction */
- if (ix0 as u32 | ix1.0) != 0 {
- z = 1.0 - TINY; /* raise inexact flag */
- if z >= 1.0 {
- z = 1.0 + TINY;
- if q1.0 == 0xffffffff {
- q1 = Wrapping(0);
- q += 1;
- } else if z > 1.0 {
- if q1.0 == 0xfffffffe {
- q += 1;
- }
- q1 += Wrapping(2);
- } else {
- q1 += q1 & Wrapping(1);
- }
- }
- }
- ix0 = (q >> 1) + 0x3fe00000;
- ix1 = q1 >> 1;
- if (q & 1) == 1 {
- ix1 |= sign;
- }
- ix0 += m << 20;
- f64::from_bits((ix0 as u64) << 32 | ix1.0 as u64)
-}
diff --git a/vendor/libm-0.1.4/src/math/sqrtf.rs b/vendor/libm-0.1.4/src/math/sqrtf.rs
deleted file mode 100644
index b9365c617..000000000
--- a/vendor/libm-0.1.4/src/math/sqrtf.rs
+++ /dev/null
@@ -1,112 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/e_sqrtf.c */
-/*
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-const TINY: f32 = 1.0e-30;
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn sqrtf(x: f32) -> f32 {
- // On wasm32 we know that LLVM's intrinsic will compile to an optimized
- // `f32.sqrt` native instruction, so we can leverage this for both code size
- // and speed.
- llvm_intrinsically_optimized! {
- #[cfg(target_arch = "wasm32")] {
- return if x < 0.0 {
- ::core::f32::NAN
- } else {
- unsafe { ::core::intrinsics::sqrtf32(x) }
- }
- }
- }
- let mut z: f32;
- let sign: i32 = 0x80000000u32 as i32;
- let mut ix: i32;
- let mut s: i32;
- let mut q: i32;
- let mut m: i32;
- let mut t: i32;
- let mut i: i32;
- let mut r: u32;
-
- ix = x.to_bits() as i32;
-
- /* take care of Inf and NaN */
- if (ix as u32 & 0x7f800000) == 0x7f800000 {
- return x * x + x; /* sqrt(NaN)=NaN, sqrt(+inf)=+inf, sqrt(-inf)=sNaN */
- }
-
- /* take care of zero */
- if ix <= 0 {
- if (ix & !sign) == 0 {
- return x; /* sqrt(+-0) = +-0 */
- }
- if ix < 0 {
- return (x - x) / (x - x); /* sqrt(-ve) = sNaN */
- }
- }
-
- /* normalize x */
- m = ix >> 23;
- if m == 0 {
- /* subnormal x */
- i = 0;
- while ix & 0x00800000 == 0 {
- ix <<= 1;
- i = i + 1;
- }
- m -= i - 1;
- }
- m -= 127; /* unbias exponent */
- ix = (ix & 0x007fffff) | 0x00800000;
- if m & 1 == 1 {
- /* odd m, double x to make it even */
- ix += ix;
- }
- m >>= 1; /* m = [m/2] */
-
- /* generate sqrt(x) bit by bit */
- ix += ix;
- q = 0;
- s = 0;
- r = 0x01000000; /* r = moving bit from right to left */
-
- while r != 0 {
- t = s + r as i32;
- if t <= ix {
- s = t + r as i32;
- ix -= t;
- q += r as i32;
- }
- ix += ix;
- r >>= 1;
- }
-
- /* use floating add to find out rounding direction */
- if ix != 0 {
- z = 1.0 - TINY; /* raise inexact flag */
- if z >= 1.0 {
- z = 1.0 + TINY;
- if z > 1.0 {
- q += 2;
- } else {
- q += q & 1;
- }
- }
- }
-
- ix = (q >> 1) + 0x3f000000;
- ix += m << 23;
- f32::from_bits(ix as u32)
-}
diff --git a/vendor/libm-0.1.4/src/math/tan.rs b/vendor/libm-0.1.4/src/math/tan.rs
deleted file mode 100644
index e5c94cbb1..000000000
--- a/vendor/libm-0.1.4/src/math/tan.rs
+++ /dev/null
@@ -1,71 +0,0 @@
-// origin: FreeBSD /usr/src/lib/msun/src/s_tan.c */
-//
-// ====================================================
-// Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
-//
-// Developed at SunPro, a Sun Microsystems, Inc. business.
-// Permission to use, copy, modify, and distribute this
-// software is freely granted, provided that this notice
-// is preserved.
-// ====================================================
-
-use super::{k_tan, rem_pio2};
-
-// tan(x)
-// Return tangent function of x.
-//
-// kernel function:
-// k_tan ... tangent function on [-pi/4,pi/4]
-// rem_pio2 ... argument reduction routine
-//
-// Method.
-// Let S,C and T denote the sin, cos and tan respectively on
-// [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2
-// in [-pi/4 , +pi/4], and let n = k mod 4.
-// We have
-//
-// n sin(x) cos(x) tan(x)
-// ----------------------------------------------------------
-// 0 S C T
-// 1 C -S -1/T
-// 2 -S -C T
-// 3 -C S -1/T
-// ----------------------------------------------------------
-//
-// Special cases:
-// Let trig be any of sin, cos, or tan.
-// trig(+-INF) is NaN, with signals;
-// trig(NaN) is that NaN;
-//
-// Accuracy:
-// TRIG(x) returns trig(x) nearly rounded
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn tan(x: f64) -> f64 {
- let x1p120 = f32::from_bits(0x7b800000); // 0x1p120f === 2 ^ 120
-
- let ix = (f64::to_bits(x) >> 32) as u32 & 0x7fffffff;
- /* |x| ~< pi/4 */
- if ix <= 0x3fe921fb {
- if ix < 0x3e400000 {
- /* |x| < 2**-27 */
- /* raise inexact if x!=0 and underflow if subnormal */
- force_eval!(if ix < 0x00100000 {
- x / x1p120 as f64
- } else {
- x + x1p120 as f64
- });
- return x;
- }
- return k_tan(x, 0.0, 0);
- }
-
- /* tan(Inf or NaN) is NaN */
- if ix >= 0x7ff00000 {
- return x - x;
- }
-
- /* argument reduction */
- let (n, y0, y1) = rem_pio2(x);
- k_tan(y0, y1, n & 1)
-}
diff --git a/vendor/libm-0.1.4/src/math/tanf.rs b/vendor/libm-0.1.4/src/math/tanf.rs
deleted file mode 100644
index c286cdeb4..000000000
--- a/vendor/libm-0.1.4/src/math/tanf.rs
+++ /dev/null
@@ -1,79 +0,0 @@
-/* origin: FreeBSD /usr/src/lib/msun/src/s_tanf.c */
-/*
- * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
- * Optimized by Bruce D. Evans.
- */
-/*
- * ====================================================
- * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
- *
- * Developed at SunPro, a Sun Microsystems, Inc. business.
- * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice
- * is preserved.
- * ====================================================
- */
-
-use super::{k_tanf, rem_pio2f};
-
-use core::f64::consts::FRAC_PI_2;
-
-/* Small multiples of pi/2 rounded to double precision. */
-const T1_PIO2: f64 = 1. * FRAC_PI_2; /* 0x3FF921FB, 0x54442D18 */
-const T2_PIO2: f64 = 2. * FRAC_PI_2; /* 0x400921FB, 0x54442D18 */
-const T3_PIO2: f64 = 3. * FRAC_PI_2; /* 0x4012D97C, 0x7F3321D2 */
-const T4_PIO2: f64 = 4. * FRAC_PI_2; /* 0x401921FB, 0x54442D18 */
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn tanf(x: f32) -> f32 {
- let x64 = x as f64;
-
- let x1p120 = f32::from_bits(0x7b800000); // 0x1p120f === 2 ^ 120
-
- let mut ix = x.to_bits();
- let sign = (ix >> 31) != 0;
- ix &= 0x7fffffff;
-
- if ix <= 0x3f490fda {
- /* |x| ~<= pi/4 */
- if ix < 0x39800000 {
- /* |x| < 2**-12 */
- /* raise inexact if x!=0 and underflow if subnormal */
- force_eval!(if ix < 0x00800000 {
- x / x1p120
- } else {
- x + x1p120
- });
- return x;
- }
- return k_tanf(x64, false);
- }
- if ix <= 0x407b53d1 {
- /* |x| ~<= 5*pi/4 */
- if ix <= 0x4016cbe3 {
- /* |x| ~<= 3pi/4 */
- return k_tanf(if sign { x64 + T1_PIO2 } else { x64 - T1_PIO2 }, true);
- } else {
- return k_tanf(if sign { x64 + T2_PIO2 } else { x64 - T2_PIO2 }, false);
- }
- }
- if ix <= 0x40e231d5 {
- /* |x| ~<= 9*pi/4 */
- if ix <= 0x40afeddf {
- /* |x| ~<= 7*pi/4 */
- return k_tanf(if sign { x64 + T3_PIO2 } else { x64 - T3_PIO2 }, true);
- } else {
- return k_tanf(if sign { x64 + T4_PIO2 } else { x64 - T4_PIO2 }, false);
- }
- }
-
- /* tan(Inf or NaN) is NaN */
- if ix >= 0x7f800000 {
- return x - x;
- }
-
- /* argument reduction */
- let (n, y) = rem_pio2f(x);
- k_tanf(y, n & 1 != 0)
-}
diff --git a/vendor/libm-0.1.4/src/math/tanh.rs b/vendor/libm-0.1.4/src/math/tanh.rs
deleted file mode 100644
index 75d695cf7..000000000
--- a/vendor/libm-0.1.4/src/math/tanh.rs
+++ /dev/null
@@ -1,54 +0,0 @@
-use super::expm1;
-
-/* tanh(x) = (exp(x) - exp(-x))/(exp(x) + exp(-x))
- * = (exp(2*x) - 1)/(exp(2*x) - 1 + 2)
- * = (1 - exp(-2*x))/(exp(-2*x) - 1 + 2)
- */
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn tanh(mut x: f64) -> f64 {
- let mut uf: f64 = x;
- let mut ui: u64 = f64::to_bits(uf);
-
- let w: u32;
- let sign: bool;
- let mut t: f64;
-
- /* x = |x| */
- sign = ui >> 63 != 0;
- ui &= !1 / 2;
- uf = f64::from_bits(ui);
- x = uf;
- w = (ui >> 32) as u32;
-
- if w > 0x3fe193ea {
- /* |x| > log(3)/2 ~= 0.5493 or nan */
- if w > 0x40340000 {
- /* |x| > 20 or nan */
- /* note: this branch avoids raising overflow */
- t = 1.0 - 0.0 / x;
- } else {
- t = expm1(2.0 * x);
- t = 1.0 - 2.0 / (t + 2.0);
- }
- } else if w > 0x3fd058ae {
- /* |x| > log(5/3)/2 ~= 0.2554 */
- t = expm1(2.0 * x);
- t = t / (t + 2.0);
- } else if w >= 0x00100000 {
- /* |x| >= 0x1p-1022, up to 2ulp error in [0.1,0.2554] */
- t = expm1(-2.0 * x);
- t = -t / (t + 2.0);
- } else {
- /* |x| is subnormal */
- /* note: the branch above would not raise underflow in [0x1p-1023,0x1p-1022) */
- force_eval!(x as f32);
- t = x;
- }
-
- if sign {
- -t
- } else {
- t
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/tanhf.rs b/vendor/libm-0.1.4/src/math/tanhf.rs
deleted file mode 100644
index ac4657b5a..000000000
--- a/vendor/libm-0.1.4/src/math/tanhf.rs
+++ /dev/null
@@ -1,40 +0,0 @@
-use super::expm1f;
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn tanhf(mut x: f32) -> f32 {
- /* x = |x| */
- let mut ix = x.to_bits();
- let sign = (ix >> 31) != 0;
- ix &= 0x7fffffff;
- x = f32::from_bits(ix);
- let w = ix;
-
- let tt = if w > 0x3f0c9f54 {
- /* |x| > log(3)/2 ~= 0.5493 or nan */
- if w > 0x41200000 {
- /* |x| > 10 */
- 1. + 0. / x
- } else {
- let t = expm1f(2. * x);
- 1. - 2. / (t + 2.)
- }
- } else if w > 0x3e82c578 {
- /* |x| > log(5/3)/2 ~= 0.2554 */
- let t = expm1f(2. * x);
- t / (t + 2.)
- } else if w >= 0x00800000 {
- /* |x| >= 0x1p-126 */
- let t = expm1f(-2. * x);
- -t / (t + 2.)
- } else {
- /* |x| is subnormal */
- force_eval!(x * x);
- x
- };
- if sign {
- -tt
- } else {
- tt
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/tgamma.rs b/vendor/libm-0.1.4/src/math/tgamma.rs
deleted file mode 100644
index f8ccf669a..000000000
--- a/vendor/libm-0.1.4/src/math/tgamma.rs
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
-"A Precision Approximation of the Gamma Function" - Cornelius Lanczos (1964)
-"Lanczos Implementation of the Gamma Function" - Paul Godfrey (2001)
-"An Analysis of the Lanczos Gamma Approximation" - Glendon Ralph Pugh (2004)
-
-approximation method:
-
- (x - 0.5) S(x)
-Gamma(x) = (x + g - 0.5) * ----------------
- exp(x + g - 0.5)
-
-with
- a1 a2 a3 aN
-S(x) ~= [ a0 + ----- + ----- + ----- + ... + ----- ]
- x + 1 x + 2 x + 3 x + N
-
-with a0, a1, a2, a3,.. aN constants which depend on g.
-
-for x < 0 the following reflection formula is used:
-
-Gamma(x)*Gamma(-x) = -pi/(x sin(pi x))
-
-most ideas and constants are from boost and python
-*/
-extern crate core;
-use super::{exp, floor, k_cos, k_sin, pow};
-
-const PI: f64 = 3.141592653589793238462643383279502884;
-
-/* sin(pi x) with x > 0x1p-100, if sin(pi*x)==0 the sign is arbitrary */
-fn sinpi(mut x: f64) -> f64 {
- let mut n: isize;
-
- /* argument reduction: x = |x| mod 2 */
- /* spurious inexact when x is odd int */
- x = x * 0.5;
- x = 2.0 * (x - floor(x));
-
- /* reduce x into [-.25,.25] */
- n = (4.0 * x) as isize;
- n = (n + 1) / 2;
- x -= (n as f64) * 0.5;
-
- x *= PI;
- match n {
- 1 => k_cos(x, 0.0),
- 2 => k_sin(-x, 0.0, 0),
- 3 => -k_cos(x, 0.0),
- 0 | _ => k_sin(x, 0.0, 0),
- }
-}
-
-const N: usize = 12;
-//static const double g = 6.024680040776729583740234375;
-const GMHALF: f64 = 5.524680040776729583740234375;
-const SNUM: [f64; N + 1] = [
- 23531376880.410759688572007674451636754734846804940,
- 42919803642.649098768957899047001988850926355848959,
- 35711959237.355668049440185451547166705960488635843,
- 17921034426.037209699919755754458931112671403265390,
- 6039542586.3520280050642916443072979210699388420708,
- 1439720407.3117216736632230727949123939715485786772,
- 248874557.86205415651146038641322942321632125127801,
- 31426415.585400194380614231628318205362874684987640,
- 2876370.6289353724412254090516208496135991145378768,
- 186056.26539522349504029498971604569928220784236328,
- 8071.6720023658162106380029022722506138218516325024,
- 210.82427775157934587250973392071336271166969580291,
- 2.5066282746310002701649081771338373386264310793408,
-];
-const SDEN: [f64; N + 1] = [
- 0.0,
- 39916800.0,
- 120543840.0,
- 150917976.0,
- 105258076.0,
- 45995730.0,
- 13339535.0,
- 2637558.0,
- 357423.0,
- 32670.0,
- 1925.0,
- 66.0,
- 1.0,
-];
-/* n! for small integer n */
-const FACT: [f64; 23] = [
- 1.0,
- 1.0,
- 2.0,
- 6.0,
- 24.0,
- 120.0,
- 720.0,
- 5040.0,
- 40320.0,
- 362880.0,
- 3628800.0,
- 39916800.0,
- 479001600.0,
- 6227020800.0,
- 87178291200.0,
- 1307674368000.0,
- 20922789888000.0,
- 355687428096000.0,
- 6402373705728000.0,
- 121645100408832000.0,
- 2432902008176640000.0,
- 51090942171709440000.0,
- 1124000727777607680000.0,
-];
-
-/* S(x) rational function for positive x */
-fn s(x: f64) -> f64 {
- let mut num: f64 = 0.0;
- let mut den: f64 = 0.0;
-
- /* to avoid overflow handle large x differently */
- if x < 8.0 {
- for i in (0..=N).rev() {
- num = num * x + SNUM[i];
- den = den * x + SDEN[i];
- }
- } else {
- for i in 0..=N {
- num = num / x + SNUM[i];
- den = den / x + SDEN[i];
- }
- }
- return num / den;
-}
-
-pub fn tgamma(mut x: f64) -> f64 {
- let u: u64 = x.to_bits();
- let absx: f64;
- let mut y: f64;
- let mut dy: f64;
- let mut z: f64;
- let mut r: f64;
- let ix: u32 = ((u >> 32) as u32) & 0x7fffffff;
- let sign: bool = (u >> 63) != 0;
-
- /* special cases */
- if ix >= 0x7ff00000 {
- /* tgamma(nan)=nan, tgamma(inf)=inf, tgamma(-inf)=nan with invalid */
- return x + core::f64::INFINITY;
- }
- if ix < ((0x3ff - 54) << 20) {
- /* |x| < 2^-54: tgamma(x) ~ 1/x, +-0 raises div-by-zero */
- return 1.0 / x;
- }
-
- /* integer arguments */
- /* raise inexact when non-integer */
- if x == floor(x) {
- if sign {
- return 0.0 / 0.0;
- }
- if x <= FACT.len() as f64 {
- return FACT[(x as usize) - 1];
- }
- }
-
- /* x >= 172: tgamma(x)=inf with overflow */
- /* x =< -184: tgamma(x)=+-0 with underflow */
- if ix >= 0x40670000 {
- /* |x| >= 184 */
- if sign {
- let x1p_126 = f64::from_bits(0x3810000000000000); // 0x1p-126 == 2^-126
- force_eval!((x1p_126 / x) as f32);
- if floor(x) * 0.5 == floor(x * 0.5) {
- return 0.0;
- } else {
- return -0.0;
- }
- }
- let x1p1023 = f64::from_bits(0x7fe0000000000000); // 0x1p1023 == 2^1023
- x *= x1p1023;
- return x;
- }
-
- absx = if sign { -x } else { x };
-
- /* handle the error of x + g - 0.5 */
- y = absx + GMHALF;
- if absx > GMHALF {
- dy = y - absx;
- dy -= GMHALF;
- } else {
- dy = y - GMHALF;
- dy -= absx;
- }
-
- z = absx - 0.5;
- r = s(absx) * exp(-y);
- if x < 0.0 {
- /* reflection formula for negative x */
- /* sinpi(absx) is not 0, integers are already handled */
- r = -PI / (sinpi(absx) * absx * r);
- dy = -dy;
- z = -z;
- }
- r += dy * (GMHALF + 0.5) * r / y;
- z = pow(y, 0.5 * z);
- y = r * z * z;
- return y;
-}
diff --git a/vendor/libm-0.1.4/src/math/tgammaf.rs b/vendor/libm-0.1.4/src/math/tgammaf.rs
deleted file mode 100644
index a8f161f0c..000000000
--- a/vendor/libm-0.1.4/src/math/tgammaf.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-use super::tgamma;
-
-pub fn tgammaf(x: f32) -> f32 {
- tgamma(x as f64) as f32
-}
diff --git a/vendor/libm-0.1.4/src/math/trunc.rs b/vendor/libm-0.1.4/src/math/trunc.rs
deleted file mode 100644
index 1ee46fc7d..000000000
--- a/vendor/libm-0.1.4/src/math/trunc.rs
+++ /dev/null
@@ -1,41 +0,0 @@
-use core::f64;
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn trunc(x: f64) -> f64 {
- // On wasm32 we know that LLVM's intrinsic will compile to an optimized
- // `f64.trunc` native instruction, so we can leverage this for both code size
- // and speed.
- llvm_intrinsically_optimized! {
- #[cfg(target_arch = "wasm32")] {
- return unsafe { ::core::intrinsics::truncf64(x) }
- }
- }
- let x1p120 = f64::from_bits(0x4770000000000000); // 0x1p120f === 2 ^ 120
-
- let mut i: u64 = x.to_bits();
- let mut e: i64 = (i >> 52 & 0x7ff) as i64 - 0x3ff + 12;
- let m: u64;
-
- if e >= 52 + 12 {
- return x;
- }
- if e < 12 {
- e = 1;
- }
- m = -1i64 as u64 >> e;
- if (i & m) == 0 {
- return x;
- }
- force_eval!(x + x1p120);
- i &= !m;
- f64::from_bits(i)
-}
-
-#[cfg(test)]
-mod tests {
- #[test]
- fn sanity_check() {
- assert_eq!(super::trunc(1.1), 1.0);
- }
-}
diff --git a/vendor/libm-0.1.4/src/math/truncf.rs b/vendor/libm-0.1.4/src/math/truncf.rs
deleted file mode 100644
index f93383269..000000000
--- a/vendor/libm-0.1.4/src/math/truncf.rs
+++ /dev/null
@@ -1,41 +0,0 @@
-use core::f32;
-
-#[inline]
-#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
-pub fn truncf(x: f32) -> f32 {
- // On wasm32 we know that LLVM's intrinsic will compile to an optimized
- // `f32.trunc` native instruction, so we can leverage this for both code size
- // and speed.
- llvm_intrinsically_optimized! {
- #[cfg(target_arch = "wasm32")] {
- return unsafe { ::core::intrinsics::truncf32(x) }
- }
- }
- let x1p120 = f32::from_bits(0x7b800000); // 0x1p120f === 2 ^ 120
-
- let mut i: u32 = x.to_bits();
- let mut e: i32 = (i >> 23 & 0xff) as i32 - 0x7f + 9;
- let m: u32;
-
- if e >= 23 + 9 {
- return x;
- }
- if e < 9 {
- e = 1;
- }
- m = -1i32 as u32 >> e;
- if (i & m) == 0 {
- return x;
- }
- force_eval!(x + x1p120);
- i &= !m;
- f32::from_bits(i)
-}
-
-#[cfg(test)]
-mod tests {
- #[test]
- fn sanity_check() {
- assert_eq!(super::truncf(1.1), 1.0);
- }
-}
diff --git a/vendor/linux-raw-sys-0.3.2/.cargo-checksum.json b/vendor/linux-raw-sys-0.3.2/.cargo-checksum.json
deleted file mode 100644
index 9fe673773..000000000
--- a/vendor/linux-raw-sys-0.3.2/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"CODE_OF_CONDUCT.md":"ccd9e538ce44713a2486cc8e4c01b8c8b846d1ccff15de728d8d6fa9a7f846cd","COPYRIGHT":"3290ae0fbc9ddb77d2239121d710f0bb9d31b3b4744e6d97fe01e652b4c1870b","Cargo.toml":"c81c089b4f396c581b425491ef5f67a6b3629f946b70efadd818f53d4386c5ac","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-Apache-2.0_WITH_LLVM-exception":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","ORG_CODE_OF_CONDUCT.md":"a62b69bf86e605ee1bcbb2f0a12ba79e4cebb6983a7b6491949750aecc4f2178","README.md":"018c6f3402f53659e773ed3d9f7b340fb0f76cba6354c0f13705960a7ba23d61","src/aarch64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/aarch64/general.rs":"20193d1895f8a41cf45b77e5afeb81fd3e620cb35ea844097eff70fa6c9845e5","src/aarch64/ioctl.rs":"727349d0df54e988edb6142455468cd061f6f86d352c283731c1e13ada4e823f","src/aarch64/netlink.rs":"5ed713330e10ad0aa9e13cb302bb09aa76d5e0e172fa8f7596d184d097aaf582","src/arm/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/arm/general.rs":"935be1cb6be7e8261217122a86a61225543980d1591a81b54b9d38372145b567","src/arm/ioctl.rs":"cfb334f02783ffa9b1f0b6e54882fe6f041714b0a347828adcc041e5aea4d93a","src/arm/netlink.rs":"56a74611ccd43e7e41b67f298bef8e276e5e99c18e8037028d00afe3e51d142f","src/lib.rs":"c67930f5d7ca3d727c7662de6d52acec2c88468952009349097e50e2e2bf59b4","src/loongarch64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/loongarch64/general.rs":"3773fec3ddf27668d2fd48ac2b83a551a06db5f017ee2242e70c194cce3bef9f","src/loongarch64/ioctl.rs":"c5e3e77f50f71f996c6112e5acf8ebf7cf5519ea57c32c7e570b89d857057f7d","src/loongarch64/netlink.rs":"0a61b43de4353c28fe746cc196a2696ff469b6aa7f2b35541e01d79ae05d6a0b","src/mips/errno.rs":"4e2c1dbfd013d8701edc010da77e36e0693c9d434ddaa68a299fd338cadb2c06","src/mips/general.rs":"170f07291793a895825237db393cd822f534a74c8c0a62b326f732080bfeb2ee","src/mips/ioctl.rs":"fbc92ec55a9f7c7642bea69c9de2c59cca3fcfdd62f259e2cce1a89bf5f5b006","src/mips/netlink.rs":"3e3bc7e89459d78d7e4425ae4851942b2685e4b90920eaf87035708fe8ca1b84","src/mips64/errno.rs":"4e2c1dbfd013d8701edc010da77e36e0693c9d434ddaa68a299fd338cadb2c06","src/mips64/general.rs":"3ab46dba3f87de450458adf3bb9bf931ea444f7755448643a7d54a3df678f4c9","src/mips64/ioctl.rs":"0bdfe3e93e880b069c9168c62f95994621b62238f560102f2089cadbae0a1596","src/mips64/netlink.rs":"9c5215479ce5a6c051b824e8d34c2db4a9bc15eab565678bd91e07b19fb3cbc3","src/powerpc/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/powerpc/general.rs":"84cbb457d4ce8d5d41082de6e11890cffab8e93e9c660087c8dd299074a075db","src/powerpc/ioctl.rs":"d2ce80cea7bd6c17b61fe732a5e3f0cc912bac33e6109157cf6f3ac4263d32b7","src/powerpc/netlink.rs":"101012198c487e6086f7d506bb1bc0a83d2516417eb1824696764f50263a1b63","src/powerpc64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/powerpc64/general.rs":"7a0637dcad9a15d82075534ef7fbe8834e37c4e34915a9a4ae5c527338039e65","src/powerpc64/ioctl.rs":"d2ce80cea7bd6c17b61fe732a5e3f0cc912bac33e6109157cf6f3ac4263d32b7","src/powerpc64/netlink.rs":"63b3d12eadc5743d79796ec890f81c6450a58369244ae3cc76c3a5adb7dd3045","src/riscv32/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/riscv32/general.rs":"c775c3e13eaa1b974191d9ee8356af9749b715515f9166adea1e38cd9c67d834","src/riscv32/ioctl.rs":"33ce4abc4d6893d1c93485eea3159bc8cefff945d09de7d530ca7b6e99da0097","src/riscv32/netlink.rs":"9d074167e32107adbd65cdd90c7837d5363cd19810db009079f626ad19a70ecb","src/riscv64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/riscv64/general.rs":"b85d787efeb7aa17f1214b8ac8300b23c02b3be6a88a6ff2fedfe70c1f16c532","src/riscv64/ioctl.rs":"c5e3e77f50f71f996c6112e5acf8ebf7cf5519ea57c32c7e570b89d857057f7d","src/riscv64/netlink.rs":"0a61b43de4353c28fe746cc196a2696ff469b6aa7f2b35541e01d79ae05d6a0b","src/s390x/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/s390x/general.rs":"3bf838206120b83d6f428c23058831f04d84e2d713070d72a4b439bb0ddaeae5","src/s390x/ioctl.rs":"87041c1ae1e8478043c47f0f5d04a0468fd6c41f8c7f8e00fd9d5a11ef13a147","src/s390x/netlink.rs":"26f16e6117cea008ba97495cd481c7b1ae2571a962d4f67d968c720d8ed25c61","src/sparc/errno.rs":"41ed2550f56eab092ceeed642290811c05f48be68cd557dc3020c7fb4a92b877","src/sparc/general.rs":"91018a4e834b85a5020ac732ce7a3354870ff6c73ef7cc16a9203cb68446985e","src/sparc/ioctl.rs":"33ce4abc4d6893d1c93485eea3159bc8cefff945d09de7d530ca7b6e99da0097","src/sparc/netlink.rs":"10ac394954c256b0dc1eae0695fd5c09a3876907d7ea35f6341311be16d01207","src/sparc64/errno.rs":"41ed2550f56eab092ceeed642290811c05f48be68cd557dc3020c7fb4a92b877","src/sparc64/general.rs":"3c45c6109196f66912a737eb122de281f2de0701d2f34db338a5bacdd28279fb","src/sparc64/ioctl.rs":"33ce4abc4d6893d1c93485eea3159bc8cefff945d09de7d530ca7b6e99da0097","src/sparc64/netlink.rs":"a25ebcb20d6d22972fda8f07b9e0d7b0aaa4eb96487140cc5d8f625a30249e6b","src/x32/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/x32/general.rs":"81053e162e731952a9b166e16aabe32683a3662488b7df2561a9fd31a896c7ab","src/x32/ioctl.rs":"f14af9d9e6a9b1d5d5cbc631c52e6ae7869976edbe9b09bf599fc837a97f9c65","src/x32/netlink.rs":"8940bfac4bcfa9b40f6f16133d655f9a8cc1d1fd42cb15d6a9b5df63b0d64a2f","src/x86/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/x86/general.rs":"4ef785537d2adfd431403f237c8e4e6250de6e5b340c60cec498cb825dba9816","src/x86/ioctl.rs":"08f35af9b2389f0771f7b631d4140fae64871fec4c8b2f0fbe80a93f07885344","src/x86/netlink.rs":"56a74611ccd43e7e41b67f298bef8e276e5e99c18e8037028d00afe3e51d142f","src/x86_64/errno.rs":"fff6de3b7ed5b73adfd52c3d27d4603340b7a36aea4736b8bd9cdd4c5b982d55","src/x86_64/general.rs":"7fc70ba4a40b88ba93c80e9961b5bfffbb897ca66dd55d96804a92b41db9d037","src/x86_64/ioctl.rs":"f14af9d9e6a9b1d5d5cbc631c52e6ae7869976edbe9b09bf599fc837a97f9c65","src/x86_64/netlink.rs":"756aaaeb8707e5c58087b3df8c272699b33d85b25932a977fc34eb2cb32bf9bd"},"package":"3f508063cc7bb32987c71511216bd5a32be15bccb6a80b52df8b9d7f01fc3aa2"} \ No newline at end of file
diff --git a/vendor/linux-raw-sys-0.3.2/CODE_OF_CONDUCT.md b/vendor/linux-raw-sys-0.3.2/CODE_OF_CONDUCT.md
deleted file mode 100644
index affbd3dbb..000000000
--- a/vendor/linux-raw-sys-0.3.2/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,49 +0,0 @@
-# Contributor Covenant Code of Conduct
-
-*Note*: this Code of Conduct pertains to individuals' behavior. Please also see the [Organizational Code of Conduct][OCoC].
-
-## Our Pledge
-
-In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
-
-## Our Standards
-
-Examples of behavior that contributes to creating a positive environment include:
-
-* Using welcoming and inclusive language
-* Being respectful of differing viewpoints and experiences
-* Gracefully accepting constructive criticism
-* Focusing on what is best for the community
-* Showing empathy towards other community members
-
-Examples of unacceptable behavior by participants include:
-
-* The use of sexualized language or imagery and unwelcome sexual attention or advances
-* Trolling, insulting/derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or electronic address, without explicit permission
-* Other conduct which could reasonably be considered inappropriate in a professional setting
-
-## Our Responsibilities
-
-Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
-
-Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
-
-## Scope
-
-This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
-
-## Enforcement
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the Bytecode Alliance CoC team at [report@bytecodealliance.org](mailto:report@bytecodealliance.org). The CoC team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The CoC team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
-
-Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the Bytecode Alliance's leadership.
-
-## Attribution
-
-This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
-
-[OCoC]: https://github.com/sunfishcode/linux-raw-sys/blob/main/ORG_CODE_OF_CONDUCT.md
-[homepage]: https://www.contributor-covenant.org
-[version]: https://www.contributor-covenant.org/version/1/4/
diff --git a/vendor/linux-raw-sys-0.3.2/COPYRIGHT b/vendor/linux-raw-sys-0.3.2/COPYRIGHT
deleted file mode 100644
index 719e3dbc8..000000000
--- a/vendor/linux-raw-sys-0.3.2/COPYRIGHT
+++ /dev/null
@@ -1,29 +0,0 @@
-Short version for non-lawyers:
-
-`linux-raw-sys` is triple-licensed under Apache 2.0 with the LLVM Exception,
-Apache 2.0, and MIT terms.
-
-
-Longer version:
-
-Copyrights in the `linux-raw-sys` project are retained by their contributors.
-No copyright assignment is required to contribute to the `linux-raw-sys`
-project.
-
-Some files include code derived from Rust's `libstd`; see the comments in
-the code for details.
-
-Except as otherwise noted (below and/or in individual files), `linux-raw-sys`
-is licensed under:
-
- - the Apache License, Version 2.0, with the LLVM Exception
- <LICENSE-Apache-2.0_WITH_LLVM-exception> or
- <http://llvm.org/foundation/relicensing/LICENSE.txt>
- - the Apache License, Version 2.0
- <LICENSE-APACHE> or
- <http://www.apache.org/licenses/LICENSE-2.0>,
- - or the MIT license
- <LICENSE-MIT> or
- <http://opensource.org/licenses/MIT>,
-
-at your option.
diff --git a/vendor/linux-raw-sys-0.3.2/Cargo.toml b/vendor/linux-raw-sys-0.3.2/Cargo.toml
deleted file mode 100644
index 9be62b007..000000000
--- a/vendor/linux-raw-sys-0.3.2/Cargo.toml
+++ /dev/null
@@ -1,76 +0,0 @@
-# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
-#
-# When uploading crates to the registry Cargo will automatically
-# "normalize" Cargo.toml files for maximal compatibility
-# with all versions of Cargo and also rewrite `path` dependencies
-# to registry (e.g., crates.io) dependencies.
-#
-# If you are reading this file be aware that the original Cargo.toml
-# will likely look very different (and much more reasonable).
-# See Cargo.toml.orig for the original contents.
-
-[package]
-edition = "2018"
-rust-version = "1.48"
-name = "linux-raw-sys"
-version = "0.3.2"
-authors = ["Dan Gohman <dev@sunfishcode.online>"]
-exclude = [
- "/gen",
- "/.*",
-]
-description = "Generated bindings for Linux's userspace API"
-documentation = "https://docs.rs/linux-raw-sys"
-readme = "README.md"
-keywords = [
- "linux",
- "uapi",
- "ffi",
-]
-categories = ["external-ffi-bindings"]
-license = "Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT"
-repository = "https://github.com/sunfishcode/linux-raw-sys"
-
-[package.metadata.docs.rs]
-features = [
- "default",
- "ioctl",
- "netlink",
-]
-targets = [
- "x86_64-unknown-linux-gnu",
- "i686-unknown-linux-gnu",
-]
-
-[dependencies.compiler_builtins]
-version = "0.1.49"
-optional = true
-
-[dependencies.core]
-version = "1.0.0"
-optional = true
-package = "rustc-std-workspace-core"
-
-[dev-dependencies.libc]
-version = "0.2.100"
-
-[dev-dependencies.static_assertions]
-version = "1.1.0"
-
-[features]
-default = [
- "std",
- "general",
- "errno",
-]
-errno = []
-general = []
-ioctl = []
-netlink = []
-no_std = []
-rustc-dep-of-std = [
- "core",
- "compiler_builtins",
- "no_std",
-]
-std = []
diff --git a/vendor/linux-raw-sys-0.3.2/LICENSE-Apache-2.0_WITH_LLVM-exception b/vendor/linux-raw-sys-0.3.2/LICENSE-Apache-2.0_WITH_LLVM-exception
deleted file mode 100644
index f9d81955f..000000000
--- a/vendor/linux-raw-sys-0.3.2/LICENSE-Apache-2.0_WITH_LLVM-exception
+++ /dev/null
@@ -1,220 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-
---- LLVM Exceptions to the Apache 2.0 License ----
-
-As an exception, if, as a result of your compiling your source code, portions
-of this Software are embedded into an Object form of such source code, you
-may redistribute such embedded portions in such Object form without complying
-with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
-
-In addition, if you combine or link compiled forms of this Software with
-software that is licensed under the GPLv2 ("Combined Software") and if a
-court of competent jurisdiction determines that the patent provision (Section
-3), the indemnity provision (Section 9) or other Section of the License
-conflicts with the conditions of the GPLv2, you may retroactively and
-prospectively choose to deem waived or otherwise exclude such Section(s) of
-the License, but only in their entirety and only with respect to the Combined
-Software.
-
diff --git a/vendor/linux-raw-sys-0.3.2/ORG_CODE_OF_CONDUCT.md b/vendor/linux-raw-sys-0.3.2/ORG_CODE_OF_CONDUCT.md
deleted file mode 100644
index 6f4fb3f53..000000000
--- a/vendor/linux-raw-sys-0.3.2/ORG_CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,143 +0,0 @@
-# Bytecode Alliance Organizational Code of Conduct (OCoC)
-
-*Note*: this Code of Conduct pertains to organizations' behavior. Please also see the [Individual Code of Conduct](CODE_OF_CONDUCT.md).
-
-## Preamble
-
-The Bytecode Alliance (BA) welcomes involvement from organizations,
-including commercial organizations. This document is an
-*organizational* code of conduct, intended particularly to provide
-guidance to commercial organizations. It is distinct from the
-[Individual Code of Conduct (ICoC)](CODE_OF_CONDUCT.md), and does not
-replace the ICoC. This OCoC applies to any group of people acting in
-concert as a BA member or as a participant in BA activities, whether
-or not that group is formally incorporated in some jurisdiction.
-
-The code of conduct described below is not a set of rigid rules, and
-we did not write it to encompass every conceivable scenario that might
-arise. For example, it is theoretically possible there would be times
-when asserting patents is in the best interest of the BA community as
-a whole. In such instances, consult with the BA, strive for
-consensus, and interpret these rules with an intent that is generous
-to the community the BA serves.
-
-While we may revise these guidelines from time to time based on
-real-world experience, overall they are based on a simple principle:
-
-*Bytecode Alliance members should observe the distinction between
- public community functions and private functions — especially
- commercial ones — and should ensure that the latter support, or at
- least do not harm, the former.*
-
-## Guidelines
-
- * **Do not cause confusion about Wasm standards or interoperability.**
-
- Having an interoperable WebAssembly core is a high priority for
- the BA, and members should strive to preserve that core. It is fine
- to develop additional non-standard features or APIs, but they
- should always be clearly distinguished from the core interoperable
- Wasm.
-
- Treat the WebAssembly name and any BA-associated names with
- respect, and follow BA trademark and branding guidelines. If you
- distribute a customized version of software originally produced by
- the BA, or if you build a product or service using BA-derived
- software, use names that clearly distinguish your work from the
- original. (You should still provide proper attribution to the
- original, of course, wherever such attribution would normally be
- given.)
-
- Further, do not use the WebAssembly name or BA-associated names in
- other public namespaces in ways that could cause confusion, e.g.,
- in company names, names of commercial service offerings, domain
- names, publicly-visible social media accounts or online service
- accounts, etc. It may sometimes be reasonable, however, to
- register such a name in a new namespace and then immediately donate
- control of that account to the BA, because that would help the project
- maintain its identity.
-
- For further guidance, see the BA Trademark and Branding Policy
- [TODO: create policy, then insert link].
-
- * **Do not restrict contributors.** If your company requires
- employees or contractors to sign non-compete agreements, those
- agreements must not prevent people from participating in the BA or
- contributing to related projects.
-
- This does not mean that all non-compete agreements are incompatible
- with this code of conduct. For example, a company may restrict an
- employee's ability to solicit the company's customers. However, an
- agreement must not block any form of technical or social
- participation in BA activities, including but not limited to the
- implementation of particular features.
-
- The accumulation of experience and expertise in individual persons,
- who are ultimately free to direct their energy and attention as
- they decide, is one of the most important drivers of progress in
- open source projects. A company that limits this freedom may hinder
- the success of the BA's efforts.
-
- * **Do not use patents as offensive weapons.** If any BA participant
- prevents the adoption or development of BA technologies by
- asserting its patents, that undermines the purpose of the
- coalition. The collaboration fostered by the BA cannot include
- members who act to undermine its work.
-
- * **Practice responsible disclosure** for security vulnerabilities.
- Use designated, non-public reporting channels to disclose technical
- vulnerabilities, and give the project a reasonable period to
- respond, remediate, and patch. [TODO: optionally include the
- security vulnerability reporting URL here.]
-
- Vulnerability reporters may patch their company's own offerings, as
- long as that patching does not significantly delay the reporting of
- the vulnerability. Vulnerability information should never be used
- for unilateral commercial advantage. Vendors may legitimately
- compete on the speed and reliability with which they deploy
- security fixes, but withholding vulnerability information damages
- everyone in the long run by risking harm to the BA project's
- reputation and to the security of all users.
-
- * **Respect the letter and spirit of open source practice.** While
- there is not space to list here all possible aspects of standard
- open source practice, some examples will help show what we mean:
-
- * Abide by all applicable open source license terms. Do not engage
- in copyright violation or misattribution of any kind.
-
- * Do not claim others' ideas or designs as your own.
-
- * When others engage in publicly visible work (e.g., an upcoming
- demo that is coordinated in a public issue tracker), do not
- unilaterally announce early releases or early demonstrations of
- that work ahead of their schedule in order to secure private
- advantage (such as marketplace advantage) for yourself.
-
- The BA reserves the right to determine what constitutes good open
- source practices and to take action as it deems appropriate to
- encourage, and if necessary enforce, such practices.
-
-## Enforcement
-
-Instances of organizational behavior in violation of the OCoC may
-be reported by contacting the Bytecode Alliance CoC team at
-[report@bytecodealliance.org](mailto:report@bytecodealliance.org). The
-CoC team will review and investigate all complaints, and will respond
-in a way that it deems appropriate to the circumstances. The CoC team
-is obligated to maintain confidentiality with regard to the reporter of
-an incident. Further details of specific enforcement policies may be
-posted separately.
-
-When the BA deems an organization in violation of this OCoC, the BA
-will, at its sole discretion, determine what action to take. The BA
-will decide what type, degree, and duration of corrective action is
-needed, if any, before a violating organization can be considered for
-membership (if it was not already a member) or can have its membership
-reinstated (if it was a member and the BA canceled its membership due
-to the violation).
-
-In practice, the BA's first approach will be to start a conversation,
-with punitive enforcement used only as a last resort. Violations
-often turn out to be unintentional and swiftly correctable with all
-parties acting in good faith.
diff --git a/vendor/linux-raw-sys-0.3.2/README.md b/vendor/linux-raw-sys-0.3.2/README.md
deleted file mode 100644
index 75f1e673e..000000000
--- a/vendor/linux-raw-sys-0.3.2/README.md
+++ /dev/null
@@ -1,44 +0,0 @@
-<div align="center">
- <h1><code>linux-raw-sys</code></h1>
-
- <p>
- <strong>Generated bindings for Linux's userspace API</strong>
- </p>
-
- <p>
- <a href="https://github.com/sunfishcode/linux-raw-sys/actions?query=workflow%3ACI"><img src="https://github.com/sunfishcode/linux-raw-sys/workflows/CI/badge.svg" alt="Github Actions CI Status" /></a>
- <a href="https://bytecodealliance.zulipchat.com/#narrow/stream/206238-general"><img src="https://img.shields.io/badge/zulip-join_chat-brightgreen.svg" alt="zulip chat" /></a>
- <a href="https://crates.io/crates/linux-raw-sys"><img src="https://img.shields.io/crates/v/linux-raw-sys.svg" alt="crates.io page" /></a>
- <a href="https://docs.rs/linux-raw-sys"><img src="https://docs.rs/linux-raw-sys/badge.svg" alt="docs.rs docs" /></a>
- </p>
-</div>
-
-This crate contains bindgen-generated bindings for Linux's userspace API.
-
-This is primarily of interest if you want to make raw system calls directly,
-which is tedious and error prone and not necessary for most use cases. For a
-minimal type-safe, memory-safe, and I/O-safe API to the Linux system calls
-built on these bindings, see the [rustix crate].
-
-The full bindings are quite large, so they've been split up into modules and
-cargo features. By default, `general` and `errno` are enabled, which provide
-most things needed by general-purpose code.
-
-To regenerate the generated bindings, run `cargo update && cd gen && cargo run --release`.
-
-## Similar crates
-
-This is similar to [linux-sys], except the bindings are generated offline,
-rather than in a build.rs, making downstream builds simpler. And, this crate
-has bindings for more headers, as well as supplementary definitions not
-exported by Linux's headers but nonetheless needed by userspace.
-
-# Minimum Supported Rust Version (MSRV)
-
-This crate currently works on the version of [Rust on Debian stable], which is
-currently Rust 1.48. This policy may change in the future, in minor version
-releases, so users using a fixed version of Rust should pin to a specific
-version of this crate.
-
-[linux-sys]: https://crates.io/crates/linux-sys
-[rustix crate]: https://github.com/bytecodealliance/rustix#linux-raw-syscall-support
diff --git a/vendor/linux-raw-sys-0.3.2/src/aarch64/errno.rs b/vendor/linux-raw-sys-0.3.2/src/aarch64/errno.rs
deleted file mode 100644
index 8c5620d74..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/aarch64/errno.rs
+++ /dev/null
@@ -1,135 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const EPERM: u32 = 1;
-pub const ENOENT: u32 = 2;
-pub const ESRCH: u32 = 3;
-pub const EINTR: u32 = 4;
-pub const EIO: u32 = 5;
-pub const ENXIO: u32 = 6;
-pub const E2BIG: u32 = 7;
-pub const ENOEXEC: u32 = 8;
-pub const EBADF: u32 = 9;
-pub const ECHILD: u32 = 10;
-pub const EAGAIN: u32 = 11;
-pub const ENOMEM: u32 = 12;
-pub const EACCES: u32 = 13;
-pub const EFAULT: u32 = 14;
-pub const ENOTBLK: u32 = 15;
-pub const EBUSY: u32 = 16;
-pub const EEXIST: u32 = 17;
-pub const EXDEV: u32 = 18;
-pub const ENODEV: u32 = 19;
-pub const ENOTDIR: u32 = 20;
-pub const EISDIR: u32 = 21;
-pub const EINVAL: u32 = 22;
-pub const ENFILE: u32 = 23;
-pub const EMFILE: u32 = 24;
-pub const ENOTTY: u32 = 25;
-pub const ETXTBSY: u32 = 26;
-pub const EFBIG: u32 = 27;
-pub const ENOSPC: u32 = 28;
-pub const ESPIPE: u32 = 29;
-pub const EROFS: u32 = 30;
-pub const EMLINK: u32 = 31;
-pub const EPIPE: u32 = 32;
-pub const EDOM: u32 = 33;
-pub const ERANGE: u32 = 34;
-pub const EDEADLK: u32 = 35;
-pub const ENAMETOOLONG: u32 = 36;
-pub const ENOLCK: u32 = 37;
-pub const ENOSYS: u32 = 38;
-pub const ENOTEMPTY: u32 = 39;
-pub const ELOOP: u32 = 40;
-pub const EWOULDBLOCK: u32 = 11;
-pub const ENOMSG: u32 = 42;
-pub const EIDRM: u32 = 43;
-pub const ECHRNG: u32 = 44;
-pub const EL2NSYNC: u32 = 45;
-pub const EL3HLT: u32 = 46;
-pub const EL3RST: u32 = 47;
-pub const ELNRNG: u32 = 48;
-pub const EUNATCH: u32 = 49;
-pub const ENOCSI: u32 = 50;
-pub const EL2HLT: u32 = 51;
-pub const EBADE: u32 = 52;
-pub const EBADR: u32 = 53;
-pub const EXFULL: u32 = 54;
-pub const ENOANO: u32 = 55;
-pub const EBADRQC: u32 = 56;
-pub const EBADSLT: u32 = 57;
-pub const EDEADLOCK: u32 = 35;
-pub const EBFONT: u32 = 59;
-pub const ENOSTR: u32 = 60;
-pub const ENODATA: u32 = 61;
-pub const ETIME: u32 = 62;
-pub const ENOSR: u32 = 63;
-pub const ENONET: u32 = 64;
-pub const ENOPKG: u32 = 65;
-pub const EREMOTE: u32 = 66;
-pub const ENOLINK: u32 = 67;
-pub const EADV: u32 = 68;
-pub const ESRMNT: u32 = 69;
-pub const ECOMM: u32 = 70;
-pub const EPROTO: u32 = 71;
-pub const EMULTIHOP: u32 = 72;
-pub const EDOTDOT: u32 = 73;
-pub const EBADMSG: u32 = 74;
-pub const EOVERFLOW: u32 = 75;
-pub const ENOTUNIQ: u32 = 76;
-pub const EBADFD: u32 = 77;
-pub const EREMCHG: u32 = 78;
-pub const ELIBACC: u32 = 79;
-pub const ELIBBAD: u32 = 80;
-pub const ELIBSCN: u32 = 81;
-pub const ELIBMAX: u32 = 82;
-pub const ELIBEXEC: u32 = 83;
-pub const EILSEQ: u32 = 84;
-pub const ERESTART: u32 = 85;
-pub const ESTRPIPE: u32 = 86;
-pub const EUSERS: u32 = 87;
-pub const ENOTSOCK: u32 = 88;
-pub const EDESTADDRREQ: u32 = 89;
-pub const EMSGSIZE: u32 = 90;
-pub const EPROTOTYPE: u32 = 91;
-pub const ENOPROTOOPT: u32 = 92;
-pub const EPROTONOSUPPORT: u32 = 93;
-pub const ESOCKTNOSUPPORT: u32 = 94;
-pub const EOPNOTSUPP: u32 = 95;
-pub const EPFNOSUPPORT: u32 = 96;
-pub const EAFNOSUPPORT: u32 = 97;
-pub const EADDRINUSE: u32 = 98;
-pub const EADDRNOTAVAIL: u32 = 99;
-pub const ENETDOWN: u32 = 100;
-pub const ENETUNREACH: u32 = 101;
-pub const ENETRESET: u32 = 102;
-pub const ECONNABORTED: u32 = 103;
-pub const ECONNRESET: u32 = 104;
-pub const ENOBUFS: u32 = 105;
-pub const EISCONN: u32 = 106;
-pub const ENOTCONN: u32 = 107;
-pub const ESHUTDOWN: u32 = 108;
-pub const ETOOMANYREFS: u32 = 109;
-pub const ETIMEDOUT: u32 = 110;
-pub const ECONNREFUSED: u32 = 111;
-pub const EHOSTDOWN: u32 = 112;
-pub const EHOSTUNREACH: u32 = 113;
-pub const EALREADY: u32 = 114;
-pub const EINPROGRESS: u32 = 115;
-pub const ESTALE: u32 = 116;
-pub const EUCLEAN: u32 = 117;
-pub const ENOTNAM: u32 = 118;
-pub const ENAVAIL: u32 = 119;
-pub const EISNAM: u32 = 120;
-pub const EREMOTEIO: u32 = 121;
-pub const EDQUOT: u32 = 122;
-pub const ENOMEDIUM: u32 = 123;
-pub const EMEDIUMTYPE: u32 = 124;
-pub const ECANCELED: u32 = 125;
-pub const ENOKEY: u32 = 126;
-pub const EKEYEXPIRED: u32 = 127;
-pub const EKEYREVOKED: u32 = 128;
-pub const EKEYREJECTED: u32 = 129;
-pub const EOWNERDEAD: u32 = 130;
-pub const ENOTRECOVERABLE: u32 = 131;
-pub const ERFKILL: u32 = 132;
-pub const EHWPOISON: u32 = 133;
diff --git a/vendor/linux-raw-sys-0.3.2/src/aarch64/general.rs b/vendor/linux-raw-sys-0.3.2/src/aarch64/general.rs
deleted file mode 100644
index 9d95a8ffc..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/aarch64/general.rs
+++ /dev/null
@@ -1,5256 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
-pub struct __BindgenBitfieldUnit<Storage> {
-storage: Storage,
-}
-impl<Storage> __BindgenBitfieldUnit<Storage> {
-#[inline]
-pub const fn new(storage: Storage) -> Self {
-Self { storage }
-}
-}
-impl<Storage> __BindgenBitfieldUnit<Storage>
-where
-Storage: AsRef<[u8]> + AsMut<[u8]>,
-{
-#[inline]
-pub fn get_bit(&self, index: usize) -> bool {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = self.storage.as_ref()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-byte & mask == mask
-}
-#[inline]
-pub fn set_bit(&mut self, index: usize, val: bool) {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = &mut self.storage.as_mut()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-if val {
-*byte |= mask;
-} else {
-*byte &= !mask;
-}
-}
-#[inline]
-pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-let mut val = 0;
-for i in 0..(bit_width as usize) {
-if self.get_bit(i + bit_offset) {
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-val |= 1 << index;
-}
-}
-val
-}
-#[inline]
-pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-for i in 0..(bit_width as usize) {
-let mask = 1 << i;
-let val_bit_is_set = val & mask == mask;
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-self.set_bit(index + bit_offset, val_bit_is_set);
-}
-}
-}
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-#[repr(C)]
-pub struct __BindgenUnionField<T>(::core::marker::PhantomData<T>);
-impl<T> __BindgenUnionField<T> {
-#[inline]
-pub const fn new() -> Self {
-__BindgenUnionField(::core::marker::PhantomData)
-}
-#[inline]
-pub unsafe fn as_ref(&self) -> &T {
-::core::mem::transmute(self)
-}
-#[inline]
-pub unsafe fn as_mut(&mut self) -> &mut T {
-::core::mem::transmute(self)
-}
-}
-impl<T> ::core::default::Default for __BindgenUnionField<T> {
-#[inline]
-fn default() -> Self {
-Self::new()
-}
-}
-impl<T> ::core::clone::Clone for __BindgenUnionField<T> {
-#[inline]
-fn clone(&self) -> Self {
-Self::new()
-}
-}
-impl<T> ::core::marker::Copy for __BindgenUnionField<T> {}
-impl<T> ::core::fmt::Debug for __BindgenUnionField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__BindgenUnionField")
-}
-}
-impl<T> ::core::hash::Hash for __BindgenUnionField<T> {
-fn hash<H: ::core::hash::Hasher>(&self, _state: &mut H) {}
-}
-impl<T> ::core::cmp::PartialEq for __BindgenUnionField<T> {
-fn eq(&self, _other: &__BindgenUnionField<T>) -> bool {
-true
-}
-}
-impl<T> ::core::cmp::Eq for __BindgenUnionField<T> {}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const AT_SYSINFO_EHDR: u32 = 33;
-pub const AT_MINSIGSTKSZ: u32 = 51;
-pub const AT_VECTOR_SIZE_ARCH: u32 = 2;
-pub const AT_NULL: u32 = 0;
-pub const AT_IGNORE: u32 = 1;
-pub const AT_EXECFD: u32 = 2;
-pub const AT_PHDR: u32 = 3;
-pub const AT_PHENT: u32 = 4;
-pub const AT_PHNUM: u32 = 5;
-pub const AT_PAGESZ: u32 = 6;
-pub const AT_BASE: u32 = 7;
-pub const AT_FLAGS: u32 = 8;
-pub const AT_ENTRY: u32 = 9;
-pub const AT_NOTELF: u32 = 10;
-pub const AT_UID: u32 = 11;
-pub const AT_EUID: u32 = 12;
-pub const AT_GID: u32 = 13;
-pub const AT_EGID: u32 = 14;
-pub const AT_PLATFORM: u32 = 15;
-pub const AT_HWCAP: u32 = 16;
-pub const AT_CLKTCK: u32 = 17;
-pub const AT_SECURE: u32 = 23;
-pub const AT_BASE_PLATFORM: u32 = 24;
-pub const AT_RANDOM: u32 = 25;
-pub const AT_HWCAP2: u32 = 26;
-pub const AT_EXECFN: u32 = 31;
-pub const __BITS_PER_LONG: u32 = 64;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S_1: u32 = 1;
-pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798;
-pub const _LINUX_CAPABILITY_U32S_2: u32 = 2;
-pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514;
-pub const _LINUX_CAPABILITY_U32S_3: u32 = 2;
-pub const VFS_CAP_REVISION_MASK: u32 = 4278190080;
-pub const VFS_CAP_REVISION_SHIFT: u32 = 24;
-pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081;
-pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1;
-pub const VFS_CAP_REVISION_1: u32 = 16777216;
-pub const VFS_CAP_U32_1: u32 = 1;
-pub const VFS_CAP_REVISION_2: u32 = 33554432;
-pub const VFS_CAP_U32_2: u32 = 2;
-pub const VFS_CAP_REVISION_3: u32 = 50331648;
-pub const VFS_CAP_U32_3: u32 = 2;
-pub const VFS_CAP_U32: u32 = 2;
-pub const VFS_CAP_REVISION: u32 = 50331648;
-pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S: u32 = 1;
-pub const CAP_CHOWN: u32 = 0;
-pub const CAP_DAC_OVERRIDE: u32 = 1;
-pub const CAP_DAC_READ_SEARCH: u32 = 2;
-pub const CAP_FOWNER: u32 = 3;
-pub const CAP_FSETID: u32 = 4;
-pub const CAP_KILL: u32 = 5;
-pub const CAP_SETGID: u32 = 6;
-pub const CAP_SETUID: u32 = 7;
-pub const CAP_SETPCAP: u32 = 8;
-pub const CAP_LINUX_IMMUTABLE: u32 = 9;
-pub const CAP_NET_BIND_SERVICE: u32 = 10;
-pub const CAP_NET_BROADCAST: u32 = 11;
-pub const CAP_NET_ADMIN: u32 = 12;
-pub const CAP_NET_RAW: u32 = 13;
-pub const CAP_IPC_LOCK: u32 = 14;
-pub const CAP_IPC_OWNER: u32 = 15;
-pub const CAP_SYS_MODULE: u32 = 16;
-pub const CAP_SYS_RAWIO: u32 = 17;
-pub const CAP_SYS_CHROOT: u32 = 18;
-pub const CAP_SYS_PTRACE: u32 = 19;
-pub const CAP_SYS_PACCT: u32 = 20;
-pub const CAP_SYS_ADMIN: u32 = 21;
-pub const CAP_SYS_BOOT: u32 = 22;
-pub const CAP_SYS_NICE: u32 = 23;
-pub const CAP_SYS_RESOURCE: u32 = 24;
-pub const CAP_SYS_TIME: u32 = 25;
-pub const CAP_SYS_TTY_CONFIG: u32 = 26;
-pub const CAP_MKNOD: u32 = 27;
-pub const CAP_LEASE: u32 = 28;
-pub const CAP_AUDIT_WRITE: u32 = 29;
-pub const CAP_AUDIT_CONTROL: u32 = 30;
-pub const CAP_SETFCAP: u32 = 31;
-pub const CAP_MAC_OVERRIDE: u32 = 32;
-pub const CAP_MAC_ADMIN: u32 = 33;
-pub const CAP_SYSLOG: u32 = 34;
-pub const CAP_WAKE_ALARM: u32 = 35;
-pub const CAP_BLOCK_SUSPEND: u32 = 36;
-pub const CAP_AUDIT_READ: u32 = 37;
-pub const CAP_PERFMON: u32 = 38;
-pub const CAP_BPF: u32 = 39;
-pub const CAP_CHECKPOINT_RESTORE: u32 = 40;
-pub const CAP_LAST_CAP: u32 = 40;
-pub const O_DIRECTORY: u32 = 16384;
-pub const O_NOFOLLOW: u32 = 32768;
-pub const O_DIRECT: u32 = 65536;
-pub const O_LARGEFILE: u32 = 131072;
-pub const O_ACCMODE: u32 = 3;
-pub const O_RDONLY: u32 = 0;
-pub const O_WRONLY: u32 = 1;
-pub const O_RDWR: u32 = 2;
-pub const O_CREAT: u32 = 64;
-pub const O_EXCL: u32 = 128;
-pub const O_NOCTTY: u32 = 256;
-pub const O_TRUNC: u32 = 512;
-pub const O_APPEND: u32 = 1024;
-pub const O_NONBLOCK: u32 = 2048;
-pub const O_DSYNC: u32 = 4096;
-pub const FASYNC: u32 = 8192;
-pub const O_NOATIME: u32 = 262144;
-pub const O_CLOEXEC: u32 = 524288;
-pub const __O_SYNC: u32 = 1048576;
-pub const O_SYNC: u32 = 1052672;
-pub const O_PATH: u32 = 2097152;
-pub const __O_TMPFILE: u32 = 4194304;
-pub const O_TMPFILE: u32 = 4210688;
-pub const O_TMPFILE_MASK: u32 = 4210752;
-pub const O_NDELAY: u32 = 2048;
-pub const F_DUPFD: u32 = 0;
-pub const F_GETFD: u32 = 1;
-pub const F_SETFD: u32 = 2;
-pub const F_GETFL: u32 = 3;
-pub const F_SETFL: u32 = 4;
-pub const F_GETLK: u32 = 5;
-pub const F_SETLK: u32 = 6;
-pub const F_SETLKW: u32 = 7;
-pub const F_SETOWN: u32 = 8;
-pub const F_GETOWN: u32 = 9;
-pub const F_SETSIG: u32 = 10;
-pub const F_GETSIG: u32 = 11;
-pub const F_SETOWN_EX: u32 = 15;
-pub const F_GETOWN_EX: u32 = 16;
-pub const F_GETOWNER_UIDS: u32 = 17;
-pub const F_OFD_GETLK: u32 = 36;
-pub const F_OFD_SETLK: u32 = 37;
-pub const F_OFD_SETLKW: u32 = 38;
-pub const F_OWNER_TID: u32 = 0;
-pub const F_OWNER_PID: u32 = 1;
-pub const F_OWNER_PGRP: u32 = 2;
-pub const FD_CLOEXEC: u32 = 1;
-pub const F_RDLCK: u32 = 0;
-pub const F_WRLCK: u32 = 1;
-pub const F_UNLCK: u32 = 2;
-pub const F_EXLCK: u32 = 4;
-pub const F_SHLCK: u32 = 8;
-pub const LOCK_SH: u32 = 1;
-pub const LOCK_EX: u32 = 2;
-pub const LOCK_NB: u32 = 4;
-pub const LOCK_UN: u32 = 8;
-pub const LOCK_MAND: u32 = 32;
-pub const LOCK_READ: u32 = 64;
-pub const LOCK_WRITE: u32 = 128;
-pub const LOCK_RW: u32 = 192;
-pub const F_LINUX_SPECIFIC_BASE: u32 = 1024;
-pub const RESOLVE_NO_XDEV: u32 = 1;
-pub const RESOLVE_NO_MAGICLINKS: u32 = 2;
-pub const RESOLVE_NO_SYMLINKS: u32 = 4;
-pub const RESOLVE_BENEATH: u32 = 8;
-pub const RESOLVE_IN_ROOT: u32 = 16;
-pub const RESOLVE_CACHED: u32 = 32;
-pub const F_SETLEASE: u32 = 1024;
-pub const F_GETLEASE: u32 = 1025;
-pub const F_CANCELLK: u32 = 1029;
-pub const F_DUPFD_CLOEXEC: u32 = 1030;
-pub const F_NOTIFY: u32 = 1026;
-pub const F_SETPIPE_SZ: u32 = 1031;
-pub const F_GETPIPE_SZ: u32 = 1032;
-pub const F_ADD_SEALS: u32 = 1033;
-pub const F_GET_SEALS: u32 = 1034;
-pub const F_SEAL_SEAL: u32 = 1;
-pub const F_SEAL_SHRINK: u32 = 2;
-pub const F_SEAL_GROW: u32 = 4;
-pub const F_SEAL_WRITE: u32 = 8;
-pub const F_SEAL_FUTURE_WRITE: u32 = 16;
-pub const F_GET_RW_HINT: u32 = 1035;
-pub const F_SET_RW_HINT: u32 = 1036;
-pub const F_GET_FILE_RW_HINT: u32 = 1037;
-pub const F_SET_FILE_RW_HINT: u32 = 1038;
-pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const RWH_WRITE_LIFE_NONE: u32 = 1;
-pub const RWH_WRITE_LIFE_SHORT: u32 = 2;
-pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3;
-pub const RWH_WRITE_LIFE_LONG: u32 = 4;
-pub const RWH_WRITE_LIFE_EXTREME: u32 = 5;
-pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const DN_ACCESS: u32 = 1;
-pub const DN_MODIFY: u32 = 2;
-pub const DN_CREATE: u32 = 4;
-pub const DN_DELETE: u32 = 8;
-pub const DN_RENAME: u32 = 16;
-pub const DN_ATTRIB: u32 = 32;
-pub const DN_MULTISHOT: u32 = 2147483648;
-pub const AT_FDCWD: i32 = -100;
-pub const AT_SYMLINK_NOFOLLOW: u32 = 256;
-pub const AT_EACCESS: u32 = 512;
-pub const AT_REMOVEDIR: u32 = 512;
-pub const AT_SYMLINK_FOLLOW: u32 = 1024;
-pub const AT_NO_AUTOMOUNT: u32 = 2048;
-pub const AT_EMPTY_PATH: u32 = 4096;
-pub const AT_STATX_SYNC_TYPE: u32 = 24576;
-pub const AT_STATX_SYNC_AS_STAT: u32 = 0;
-pub const AT_STATX_FORCE_SYNC: u32 = 8192;
-pub const AT_STATX_DONT_SYNC: u32 = 16384;
-pub const AT_RECURSIVE: u32 = 32768;
-pub const EPOLL_CLOEXEC: u32 = 524288;
-pub const EPOLL_CTL_ADD: u32 = 1;
-pub const EPOLL_CTL_DEL: u32 = 2;
-pub const EPOLL_CTL_MOD: u32 = 3;
-pub const POSIX_FADV_NORMAL: u32 = 0;
-pub const POSIX_FADV_RANDOM: u32 = 1;
-pub const POSIX_FADV_SEQUENTIAL: u32 = 2;
-pub const POSIX_FADV_WILLNEED: u32 = 3;
-pub const POSIX_FADV_DONTNEED: u32 = 4;
-pub const POSIX_FADV_NOREUSE: u32 = 5;
-pub const FALLOC_FL_KEEP_SIZE: u32 = 1;
-pub const FALLOC_FL_PUNCH_HOLE: u32 = 2;
-pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4;
-pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8;
-pub const FALLOC_FL_ZERO_RANGE: u32 = 16;
-pub const FALLOC_FL_INSERT_RANGE: u32 = 32;
-pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64;
-pub const NR_OPEN: u32 = 1024;
-pub const NGROUPS_MAX: u32 = 65536;
-pub const ARG_MAX: u32 = 131072;
-pub const LINK_MAX: u32 = 127;
-pub const MAX_CANON: u32 = 255;
-pub const MAX_INPUT: u32 = 255;
-pub const NAME_MAX: u32 = 255;
-pub const PATH_MAX: u32 = 4096;
-pub const PIPE_BUF: u32 = 4096;
-pub const XATTR_NAME_MAX: u32 = 255;
-pub const XATTR_SIZE_MAX: u32 = 65536;
-pub const XATTR_LIST_MAX: u32 = 65536;
-pub const RTSIG_MAX: u32 = 32;
-pub const _IOC_NRBITS: u32 = 8;
-pub const _IOC_TYPEBITS: u32 = 8;
-pub const _IOC_SIZEBITS: u32 = 14;
-pub const _IOC_DIRBITS: u32 = 2;
-pub const _IOC_NRMASK: u32 = 255;
-pub const _IOC_TYPEMASK: u32 = 255;
-pub const _IOC_SIZEMASK: u32 = 16383;
-pub const _IOC_DIRMASK: u32 = 3;
-pub const _IOC_NRSHIFT: u32 = 0;
-pub const _IOC_TYPESHIFT: u32 = 8;
-pub const _IOC_SIZESHIFT: u32 = 16;
-pub const _IOC_DIRSHIFT: u32 = 30;
-pub const _IOC_NONE: u32 = 0;
-pub const _IOC_WRITE: u32 = 1;
-pub const _IOC_READ: u32 = 2;
-pub const IOC_IN: u32 = 1073741824;
-pub const IOC_OUT: u32 = 2147483648;
-pub const IOC_INOUT: u32 = 3221225472;
-pub const IOCSIZE_MASK: u32 = 1073676288;
-pub const IOCSIZE_SHIFT: u32 = 16;
-pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16;
-pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1;
-pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4;
-pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5;
-pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6;
-pub const FSCRYPT_MODE_SM4_XTS: u32 = 7;
-pub const FSCRYPT_MODE_SM4_CTS: u32 = 8;
-pub const FSCRYPT_MODE_ADIANTUM: u32 = 9;
-pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10;
-pub const FSCRYPT_POLICY_V1: u32 = 0;
-pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64;
-pub const FSCRYPT_POLICY_V2: u32 = 2;
-pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16;
-pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1;
-pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1;
-pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3;
-pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1;
-pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FS_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FS_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FS_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FS_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FS_POLICY_FLAGS_VALID: u32 = 7;
-pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0;
-pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1;
-pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2;
-pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3;
-pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4;
-pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5;
-pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6;
-pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9;
-pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FS_MAX_KEY_SIZE: u32 = 64;
-pub const MS_RDONLY: u32 = 1;
-pub const MS_NOSUID: u32 = 2;
-pub const MS_NODEV: u32 = 4;
-pub const MS_NOEXEC: u32 = 8;
-pub const MS_SYNCHRONOUS: u32 = 16;
-pub const MS_REMOUNT: u32 = 32;
-pub const MS_MANDLOCK: u32 = 64;
-pub const MS_DIRSYNC: u32 = 128;
-pub const MS_NOSYMFOLLOW: u32 = 256;
-pub const MS_NOATIME: u32 = 1024;
-pub const MS_NODIRATIME: u32 = 2048;
-pub const MS_BIND: u32 = 4096;
-pub const MS_MOVE: u32 = 8192;
-pub const MS_REC: u32 = 16384;
-pub const MS_VERBOSE: u32 = 32768;
-pub const MS_SILENT: u32 = 32768;
-pub const MS_POSIXACL: u32 = 65536;
-pub const MS_UNBINDABLE: u32 = 131072;
-pub const MS_PRIVATE: u32 = 262144;
-pub const MS_SLAVE: u32 = 524288;
-pub const MS_SHARED: u32 = 1048576;
-pub const MS_RELATIME: u32 = 2097152;
-pub const MS_KERNMOUNT: u32 = 4194304;
-pub const MS_I_VERSION: u32 = 8388608;
-pub const MS_STRICTATIME: u32 = 16777216;
-pub const MS_LAZYTIME: u32 = 33554432;
-pub const MS_SUBMOUNT: u32 = 67108864;
-pub const MS_NOREMOTELOCK: u32 = 134217728;
-pub const MS_NOSEC: u32 = 268435456;
-pub const MS_BORN: u32 = 536870912;
-pub const MS_ACTIVE: u32 = 1073741824;
-pub const MS_NOUSER: u32 = 2147483648;
-pub const MS_RMT_MASK: u32 = 41943121;
-pub const MS_MGC_VAL: u32 = 3236757504;
-pub const MS_MGC_MSK: u32 = 4294901760;
-pub const OPEN_TREE_CLONE: u32 = 1;
-pub const OPEN_TREE_CLOEXEC: u32 = 524288;
-pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1;
-pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2;
-pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4;
-pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16;
-pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32;
-pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64;
-pub const MOVE_MOUNT_SET_GROUP: u32 = 256;
-pub const MOVE_MOUNT__MASK: u32 = 375;
-pub const FSOPEN_CLOEXEC: u32 = 1;
-pub const FSPICK_CLOEXEC: u32 = 1;
-pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2;
-pub const FSPICK_NO_AUTOMOUNT: u32 = 4;
-pub const FSPICK_EMPTY_PATH: u32 = 8;
-pub const FSMOUNT_CLOEXEC: u32 = 1;
-pub const MOUNT_ATTR_RDONLY: u32 = 1;
-pub const MOUNT_ATTR_NOSUID: u32 = 2;
-pub const MOUNT_ATTR_NODEV: u32 = 4;
-pub const MOUNT_ATTR_NOEXEC: u32 = 8;
-pub const MOUNT_ATTR__ATIME: u32 = 112;
-pub const MOUNT_ATTR_RELATIME: u32 = 0;
-pub const MOUNT_ATTR_NOATIME: u32 = 16;
-pub const MOUNT_ATTR_STRICTATIME: u32 = 32;
-pub const MOUNT_ATTR_NODIRATIME: u32 = 128;
-pub const MOUNT_ATTR_IDMAP: u32 = 1048576;
-pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152;
-pub const MOUNT_ATTR_SIZE_VER0: u32 = 32;
-pub const INR_OPEN_CUR: u32 = 1024;
-pub const INR_OPEN_MAX: u32 = 4096;
-pub const BLOCK_SIZE_BITS: u32 = 10;
-pub const BLOCK_SIZE: u32 = 1024;
-pub const SEEK_SET: u32 = 0;
-pub const SEEK_CUR: u32 = 1;
-pub const SEEK_END: u32 = 2;
-pub const SEEK_DATA: u32 = 3;
-pub const SEEK_HOLE: u32 = 4;
-pub const SEEK_MAX: u32 = 4;
-pub const RENAME_NOREPLACE: u32 = 1;
-pub const RENAME_EXCHANGE: u32 = 2;
-pub const RENAME_WHITEOUT: u32 = 4;
-pub const FILE_DEDUPE_RANGE_SAME: u32 = 0;
-pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1;
-pub const NR_FILE: u32 = 8192;
-pub const FS_XFLAG_REALTIME: u32 = 1;
-pub const FS_XFLAG_PREALLOC: u32 = 2;
-pub const FS_XFLAG_IMMUTABLE: u32 = 8;
-pub const FS_XFLAG_APPEND: u32 = 16;
-pub const FS_XFLAG_SYNC: u32 = 32;
-pub const FS_XFLAG_NOATIME: u32 = 64;
-pub const FS_XFLAG_NODUMP: u32 = 128;
-pub const FS_XFLAG_RTINHERIT: u32 = 256;
-pub const FS_XFLAG_PROJINHERIT: u32 = 512;
-pub const FS_XFLAG_NOSYMLINKS: u32 = 1024;
-pub const FS_XFLAG_EXTSIZE: u32 = 2048;
-pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096;
-pub const FS_XFLAG_NODEFRAG: u32 = 8192;
-pub const FS_XFLAG_FILESTREAM: u32 = 16384;
-pub const FS_XFLAG_DAX: u32 = 32768;
-pub const FS_XFLAG_COWEXTSIZE: u32 = 65536;
-pub const FS_XFLAG_HASATTR: u32 = 2147483648;
-pub const BMAP_IOCTL: u32 = 1;
-pub const FSLABEL_MAX: u32 = 256;
-pub const FS_SECRM_FL: u32 = 1;
-pub const FS_UNRM_FL: u32 = 2;
-pub const FS_COMPR_FL: u32 = 4;
-pub const FS_SYNC_FL: u32 = 8;
-pub const FS_IMMUTABLE_FL: u32 = 16;
-pub const FS_APPEND_FL: u32 = 32;
-pub const FS_NODUMP_FL: u32 = 64;
-pub const FS_NOATIME_FL: u32 = 128;
-pub const FS_DIRTY_FL: u32 = 256;
-pub const FS_COMPRBLK_FL: u32 = 512;
-pub const FS_NOCOMP_FL: u32 = 1024;
-pub const FS_ENCRYPT_FL: u32 = 2048;
-pub const FS_BTREE_FL: u32 = 4096;
-pub const FS_INDEX_FL: u32 = 4096;
-pub const FS_IMAGIC_FL: u32 = 8192;
-pub const FS_JOURNAL_DATA_FL: u32 = 16384;
-pub const FS_NOTAIL_FL: u32 = 32768;
-pub const FS_DIRSYNC_FL: u32 = 65536;
-pub const FS_TOPDIR_FL: u32 = 131072;
-pub const FS_HUGE_FILE_FL: u32 = 262144;
-pub const FS_EXTENT_FL: u32 = 524288;
-pub const FS_VERITY_FL: u32 = 1048576;
-pub const FS_EA_INODE_FL: u32 = 2097152;
-pub const FS_EOFBLOCKS_FL: u32 = 4194304;
-pub const FS_NOCOW_FL: u32 = 8388608;
-pub const FS_DAX_FL: u32 = 33554432;
-pub const FS_INLINE_DATA_FL: u32 = 268435456;
-pub const FS_PROJINHERIT_FL: u32 = 536870912;
-pub const FS_CASEFOLD_FL: u32 = 1073741824;
-pub const FS_RESERVED_FL: u32 = 2147483648;
-pub const FS_FL_USER_VISIBLE: u32 = 253951;
-pub const FS_FL_USER_MODIFIABLE: u32 = 229631;
-pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1;
-pub const SYNC_FILE_RANGE_WRITE: u32 = 2;
-pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4;
-pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7;
-pub const FUTEX_WAIT: u32 = 0;
-pub const FUTEX_WAKE: u32 = 1;
-pub const FUTEX_FD: u32 = 2;
-pub const FUTEX_REQUEUE: u32 = 3;
-pub const FUTEX_CMP_REQUEUE: u32 = 4;
-pub const FUTEX_WAKE_OP: u32 = 5;
-pub const FUTEX_LOCK_PI: u32 = 6;
-pub const FUTEX_UNLOCK_PI: u32 = 7;
-pub const FUTEX_TRYLOCK_PI: u32 = 8;
-pub const FUTEX_WAIT_BITSET: u32 = 9;
-pub const FUTEX_WAKE_BITSET: u32 = 10;
-pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11;
-pub const FUTEX_CMP_REQUEUE_PI: u32 = 12;
-pub const FUTEX_LOCK_PI2: u32 = 13;
-pub const FUTEX_PRIVATE_FLAG: u32 = 128;
-pub const FUTEX_CLOCK_REALTIME: u32 = 256;
-pub const FUTEX_CMD_MASK: i32 = -385;
-pub const FUTEX_WAIT_PRIVATE: u32 = 128;
-pub const FUTEX_WAKE_PRIVATE: u32 = 129;
-pub const FUTEX_REQUEUE_PRIVATE: u32 = 131;
-pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132;
-pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133;
-pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134;
-pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141;
-pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135;
-pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136;
-pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137;
-pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138;
-pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139;
-pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140;
-pub const FUTEX_32: u32 = 2;
-pub const FUTEX_WAITV_MAX: u32 = 128;
-pub const FUTEX_WAITERS: u32 = 2147483648;
-pub const FUTEX_OWNER_DIED: u32 = 1073741824;
-pub const FUTEX_TID_MASK: u32 = 1073741823;
-pub const ROBUST_LIST_LIMIT: u32 = 2048;
-pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295;
-pub const FUTEX_OP_SET: u32 = 0;
-pub const FUTEX_OP_ADD: u32 = 1;
-pub const FUTEX_OP_OR: u32 = 2;
-pub const FUTEX_OP_ANDN: u32 = 3;
-pub const FUTEX_OP_XOR: u32 = 4;
-pub const FUTEX_OP_OPARG_SHIFT: u32 = 8;
-pub const FUTEX_OP_CMP_EQ: u32 = 0;
-pub const FUTEX_OP_CMP_NE: u32 = 1;
-pub const FUTEX_OP_CMP_LT: u32 = 2;
-pub const FUTEX_OP_CMP_LE: u32 = 3;
-pub const FUTEX_OP_CMP_GT: u32 = 4;
-pub const FUTEX_OP_CMP_GE: u32 = 5;
-pub const __UAPI_DEF_IF_IFCONF: u32 = 1;
-pub const __UAPI_DEF_IF_IFMAP: u32 = 1;
-pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1;
-pub const __UAPI_DEF_IF_IFREQ: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1;
-pub const __UAPI_DEF_IN_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN_IPPROTO: u32 = 1;
-pub const __UAPI_DEF_IN_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP_MREQ: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1;
-pub const __UAPI_DEF_IN_CLASS: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1;
-pub const __UAPI_DEF_IPV6_MREQ: u32 = 1;
-pub const __UAPI_DEF_IPPROTO_V6: u32 = 1;
-pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1;
-pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1;
-pub const __UAPI_DEF_XATTR: u32 = 1;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const IP_TOS: u32 = 1;
-pub const IP_TTL: u32 = 2;
-pub const IP_HDRINCL: u32 = 3;
-pub const IP_OPTIONS: u32 = 4;
-pub const IP_ROUTER_ALERT: u32 = 5;
-pub const IP_RECVOPTS: u32 = 6;
-pub const IP_RETOPTS: u32 = 7;
-pub const IP_PKTINFO: u32 = 8;
-pub const IP_PKTOPTIONS: u32 = 9;
-pub const IP_MTU_DISCOVER: u32 = 10;
-pub const IP_RECVERR: u32 = 11;
-pub const IP_RECVTTL: u32 = 12;
-pub const IP_RECVTOS: u32 = 13;
-pub const IP_MTU: u32 = 14;
-pub const IP_FREEBIND: u32 = 15;
-pub const IP_IPSEC_POLICY: u32 = 16;
-pub const IP_XFRM_POLICY: u32 = 17;
-pub const IP_PASSSEC: u32 = 18;
-pub const IP_TRANSPARENT: u32 = 19;
-pub const IP_RECVRETOPTS: u32 = 7;
-pub const IP_ORIGDSTADDR: u32 = 20;
-pub const IP_RECVORIGDSTADDR: u32 = 20;
-pub const IP_MINTTL: u32 = 21;
-pub const IP_NODEFRAG: u32 = 22;
-pub const IP_CHECKSUM: u32 = 23;
-pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24;
-pub const IP_RECVFRAGSIZE: u32 = 25;
-pub const IP_RECVERR_RFC4884: u32 = 26;
-pub const IP_PMTUDISC_DONT: u32 = 0;
-pub const IP_PMTUDISC_WANT: u32 = 1;
-pub const IP_PMTUDISC_DO: u32 = 2;
-pub const IP_PMTUDISC_PROBE: u32 = 3;
-pub const IP_PMTUDISC_INTERFACE: u32 = 4;
-pub const IP_PMTUDISC_OMIT: u32 = 5;
-pub const IP_MULTICAST_IF: u32 = 32;
-pub const IP_MULTICAST_TTL: u32 = 33;
-pub const IP_MULTICAST_LOOP: u32 = 34;
-pub const IP_ADD_MEMBERSHIP: u32 = 35;
-pub const IP_DROP_MEMBERSHIP: u32 = 36;
-pub const IP_UNBLOCK_SOURCE: u32 = 37;
-pub const IP_BLOCK_SOURCE: u32 = 38;
-pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39;
-pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40;
-pub const IP_MSFILTER: u32 = 41;
-pub const MCAST_JOIN_GROUP: u32 = 42;
-pub const MCAST_BLOCK_SOURCE: u32 = 43;
-pub const MCAST_UNBLOCK_SOURCE: u32 = 44;
-pub const MCAST_LEAVE_GROUP: u32 = 45;
-pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46;
-pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47;
-pub const MCAST_MSFILTER: u32 = 48;
-pub const IP_MULTICAST_ALL: u32 = 49;
-pub const IP_UNICAST_IF: u32 = 50;
-pub const MCAST_EXCLUDE: u32 = 0;
-pub const MCAST_INCLUDE: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1;
-pub const __SOCK_SIZE__: u32 = 16;
-pub const IN_CLASSA_NET: u32 = 4278190080;
-pub const IN_CLASSA_NSHIFT: u32 = 24;
-pub const IN_CLASSA_HOST: u32 = 16777215;
-pub const IN_CLASSA_MAX: u32 = 128;
-pub const IN_CLASSB_NET: u32 = 4294901760;
-pub const IN_CLASSB_NSHIFT: u32 = 16;
-pub const IN_CLASSB_HOST: u32 = 65535;
-pub const IN_CLASSB_MAX: u32 = 65536;
-pub const IN_CLASSC_NET: u32 = 4294967040;
-pub const IN_CLASSC_NSHIFT: u32 = 8;
-pub const IN_CLASSC_HOST: u32 = 255;
-pub const IN_MULTICAST_NET: u32 = 3758096384;
-pub const IN_CLASSE_NET: u32 = 4294967295;
-pub const IN_CLASSE_NSHIFT: u32 = 0;
-pub const IN_LOOPBACKNET: u32 = 127;
-pub const INADDR_LOOPBACK: u32 = 2130706433;
-pub const INADDR_UNSPEC_GROUP: u32 = 3758096384;
-pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385;
-pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386;
-pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490;
-pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639;
-pub const __LITTLE_ENDIAN: u32 = 1234;
-pub const IN_ACCESS: u32 = 1;
-pub const IN_MODIFY: u32 = 2;
-pub const IN_ATTRIB: u32 = 4;
-pub const IN_CLOSE_WRITE: u32 = 8;
-pub const IN_CLOSE_NOWRITE: u32 = 16;
-pub const IN_OPEN: u32 = 32;
-pub const IN_MOVED_FROM: u32 = 64;
-pub const IN_MOVED_TO: u32 = 128;
-pub const IN_CREATE: u32 = 256;
-pub const IN_DELETE: u32 = 512;
-pub const IN_DELETE_SELF: u32 = 1024;
-pub const IN_MOVE_SELF: u32 = 2048;
-pub const IN_UNMOUNT: u32 = 8192;
-pub const IN_Q_OVERFLOW: u32 = 16384;
-pub const IN_IGNORED: u32 = 32768;
-pub const IN_CLOSE: u32 = 24;
-pub const IN_MOVE: u32 = 192;
-pub const IN_ONLYDIR: u32 = 16777216;
-pub const IN_DONT_FOLLOW: u32 = 33554432;
-pub const IN_EXCL_UNLINK: u32 = 67108864;
-pub const IN_MASK_CREATE: u32 = 268435456;
-pub const IN_MASK_ADD: u32 = 536870912;
-pub const IN_ISDIR: u32 = 1073741824;
-pub const IN_ONESHOT: u32 = 2147483648;
-pub const IN_ALL_EVENTS: u32 = 4095;
-pub const IN_CLOEXEC: u32 = 524288;
-pub const IN_NONBLOCK: u32 = 2048;
-pub const IPTOS_TOS_MASK: u32 = 30;
-pub const IPTOS_LOWDELAY: u32 = 16;
-pub const IPTOS_THROUGHPUT: u32 = 8;
-pub const IPTOS_RELIABILITY: u32 = 4;
-pub const IPTOS_MINCOST: u32 = 2;
-pub const IPTOS_PREC_MASK: u32 = 224;
-pub const IPTOS_PREC_NETCONTROL: u32 = 224;
-pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192;
-pub const IPTOS_PREC_CRITIC_ECP: u32 = 160;
-pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128;
-pub const IPTOS_PREC_FLASH: u32 = 96;
-pub const IPTOS_PREC_IMMEDIATE: u32 = 64;
-pub const IPTOS_PREC_PRIORITY: u32 = 32;
-pub const IPTOS_PREC_ROUTINE: u32 = 0;
-pub const IPOPT_COPY: u32 = 128;
-pub const IPOPT_CLASS_MASK: u32 = 96;
-pub const IPOPT_NUMBER_MASK: u32 = 31;
-pub const IPOPT_CONTROL: u32 = 0;
-pub const IPOPT_RESERVED1: u32 = 32;
-pub const IPOPT_MEASUREMENT: u32 = 64;
-pub const IPOPT_RESERVED2: u32 = 96;
-pub const IPOPT_END: u32 = 0;
-pub const IPOPT_NOOP: u32 = 1;
-pub const IPOPT_SEC: u32 = 130;
-pub const IPOPT_LSRR: u32 = 131;
-pub const IPOPT_TIMESTAMP: u32 = 68;
-pub const IPOPT_CIPSO: u32 = 134;
-pub const IPOPT_RR: u32 = 7;
-pub const IPOPT_SID: u32 = 136;
-pub const IPOPT_SSRR: u32 = 137;
-pub const IPOPT_RA: u32 = 148;
-pub const IPVERSION: u32 = 4;
-pub const MAXTTL: u32 = 255;
-pub const IPDEFTTL: u32 = 64;
-pub const IPOPT_OPTVAL: u32 = 0;
-pub const IPOPT_OLEN: u32 = 1;
-pub const IPOPT_OFFSET: u32 = 2;
-pub const IPOPT_MINOFF: u32 = 4;
-pub const MAX_IPOPTLEN: u32 = 40;
-pub const IPOPT_NOP: u32 = 1;
-pub const IPOPT_EOL: u32 = 0;
-pub const IPOPT_TS: u32 = 68;
-pub const IPOPT_TS_TSONLY: u32 = 0;
-pub const IPOPT_TS_TSANDADDR: u32 = 1;
-pub const IPOPT_TS_PRESPEC: u32 = 3;
-pub const IPV4_BEET_PHMAXLEN: u32 = 8;
-pub const IPV6_FL_A_GET: u32 = 0;
-pub const IPV6_FL_A_PUT: u32 = 1;
-pub const IPV6_FL_A_RENEW: u32 = 2;
-pub const IPV6_FL_F_CREATE: u32 = 1;
-pub const IPV6_FL_F_EXCL: u32 = 2;
-pub const IPV6_FL_F_REFLECT: u32 = 4;
-pub const IPV6_FL_F_REMOTE: u32 = 8;
-pub const IPV6_FL_S_NONE: u32 = 0;
-pub const IPV6_FL_S_EXCL: u32 = 1;
-pub const IPV6_FL_S_PROCESS: u32 = 2;
-pub const IPV6_FL_S_USER: u32 = 3;
-pub const IPV6_FL_S_ANY: u32 = 255;
-pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575;
-pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880;
-pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0;
-pub const IPV6_PRIORITY_FILLER: u32 = 256;
-pub const IPV6_PRIORITY_UNATTENDED: u32 = 512;
-pub const IPV6_PRIORITY_RESERVED1: u32 = 768;
-pub const IPV6_PRIORITY_BULK: u32 = 1024;
-pub const IPV6_PRIORITY_RESERVED2: u32 = 1280;
-pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536;
-pub const IPV6_PRIORITY_CONTROL: u32 = 1792;
-pub const IPV6_PRIORITY_8: u32 = 2048;
-pub const IPV6_PRIORITY_9: u32 = 2304;
-pub const IPV6_PRIORITY_10: u32 = 2560;
-pub const IPV6_PRIORITY_11: u32 = 2816;
-pub const IPV6_PRIORITY_12: u32 = 3072;
-pub const IPV6_PRIORITY_13: u32 = 3328;
-pub const IPV6_PRIORITY_14: u32 = 3584;
-pub const IPV6_PRIORITY_15: u32 = 3840;
-pub const IPPROTO_HOPOPTS: u32 = 0;
-pub const IPPROTO_ROUTING: u32 = 43;
-pub const IPPROTO_FRAGMENT: u32 = 44;
-pub const IPPROTO_ICMPV6: u32 = 58;
-pub const IPPROTO_NONE: u32 = 59;
-pub const IPPROTO_DSTOPTS: u32 = 60;
-pub const IPPROTO_MH: u32 = 135;
-pub const IPV6_TLV_PAD1: u32 = 0;
-pub const IPV6_TLV_PADN: u32 = 1;
-pub const IPV6_TLV_ROUTERALERT: u32 = 5;
-pub const IPV6_TLV_CALIPSO: u32 = 7;
-pub const IPV6_TLV_IOAM: u32 = 49;
-pub const IPV6_TLV_JUMBO: u32 = 194;
-pub const IPV6_TLV_HAO: u32 = 201;
-pub const IPV6_ADDRFORM: u32 = 1;
-pub const IPV6_2292PKTINFO: u32 = 2;
-pub const IPV6_2292HOPOPTS: u32 = 3;
-pub const IPV6_2292DSTOPTS: u32 = 4;
-pub const IPV6_2292RTHDR: u32 = 5;
-pub const IPV6_2292PKTOPTIONS: u32 = 6;
-pub const IPV6_CHECKSUM: u32 = 7;
-pub const IPV6_2292HOPLIMIT: u32 = 8;
-pub const IPV6_NEXTHOP: u32 = 9;
-pub const IPV6_AUTHHDR: u32 = 10;
-pub const IPV6_FLOWINFO: u32 = 11;
-pub const IPV6_UNICAST_HOPS: u32 = 16;
-pub const IPV6_MULTICAST_IF: u32 = 17;
-pub const IPV6_MULTICAST_HOPS: u32 = 18;
-pub const IPV6_MULTICAST_LOOP: u32 = 19;
-pub const IPV6_ADD_MEMBERSHIP: u32 = 20;
-pub const IPV6_DROP_MEMBERSHIP: u32 = 21;
-pub const IPV6_ROUTER_ALERT: u32 = 22;
-pub const IPV6_MTU_DISCOVER: u32 = 23;
-pub const IPV6_MTU: u32 = 24;
-pub const IPV6_RECVERR: u32 = 25;
-pub const IPV6_V6ONLY: u32 = 26;
-pub const IPV6_JOIN_ANYCAST: u32 = 27;
-pub const IPV6_LEAVE_ANYCAST: u32 = 28;
-pub const IPV6_MULTICAST_ALL: u32 = 29;
-pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30;
-pub const IPV6_RECVERR_RFC4884: u32 = 31;
-pub const IPV6_PMTUDISC_DONT: u32 = 0;
-pub const IPV6_PMTUDISC_WANT: u32 = 1;
-pub const IPV6_PMTUDISC_DO: u32 = 2;
-pub const IPV6_PMTUDISC_PROBE: u32 = 3;
-pub const IPV6_PMTUDISC_INTERFACE: u32 = 4;
-pub const IPV6_PMTUDISC_OMIT: u32 = 5;
-pub const IPV6_FLOWLABEL_MGR: u32 = 32;
-pub const IPV6_FLOWINFO_SEND: u32 = 33;
-pub const IPV6_IPSEC_POLICY: u32 = 34;
-pub const IPV6_XFRM_POLICY: u32 = 35;
-pub const IPV6_HDRINCL: u32 = 36;
-pub const IPV6_RECVPKTINFO: u32 = 49;
-pub const IPV6_PKTINFO: u32 = 50;
-pub const IPV6_RECVHOPLIMIT: u32 = 51;
-pub const IPV6_HOPLIMIT: u32 = 52;
-pub const IPV6_RECVHOPOPTS: u32 = 53;
-pub const IPV6_HOPOPTS: u32 = 54;
-pub const IPV6_RTHDRDSTOPTS: u32 = 55;
-pub const IPV6_RECVRTHDR: u32 = 56;
-pub const IPV6_RTHDR: u32 = 57;
-pub const IPV6_RECVDSTOPTS: u32 = 58;
-pub const IPV6_DSTOPTS: u32 = 59;
-pub const IPV6_RECVPATHMTU: u32 = 60;
-pub const IPV6_PATHMTU: u32 = 61;
-pub const IPV6_DONTFRAG: u32 = 62;
-pub const IPV6_RECVTCLASS: u32 = 66;
-pub const IPV6_TCLASS: u32 = 67;
-pub const IPV6_AUTOFLOWLABEL: u32 = 70;
-pub const IPV6_ADDR_PREFERENCES: u32 = 72;
-pub const IPV6_PREFER_SRC_TMP: u32 = 1;
-pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2;
-pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256;
-pub const IPV6_PREFER_SRC_COA: u32 = 4;
-pub const IPV6_PREFER_SRC_HOME: u32 = 1024;
-pub const IPV6_PREFER_SRC_CGA: u32 = 8;
-pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048;
-pub const IPV6_MINHOPCOUNT: u32 = 73;
-pub const IPV6_ORIGDSTADDR: u32 = 74;
-pub const IPV6_RECVORIGDSTADDR: u32 = 74;
-pub const IPV6_TRANSPARENT: u32 = 75;
-pub const IPV6_UNICAST_IF: u32 = 76;
-pub const IPV6_RECVFRAGSIZE: u32 = 77;
-pub const IPV6_FREEBIND: u32 = 78;
-pub const IPV6_MIN_MTU: u32 = 1280;
-pub const IPV6_SRCRT_STRICT: u32 = 1;
-pub const IPV6_SRCRT_TYPE_0: u32 = 0;
-pub const IPV6_SRCRT_TYPE_2: u32 = 2;
-pub const IPV6_SRCRT_TYPE_3: u32 = 3;
-pub const IPV6_SRCRT_TYPE_4: u32 = 4;
-pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0;
-pub const ADFS_SUPER_MAGIC: u32 = 44533;
-pub const AFFS_SUPER_MAGIC: u32 = 44543;
-pub const AFS_SUPER_MAGIC: u32 = 1397113167;
-pub const AUTOFS_SUPER_MAGIC: u32 = 391;
-pub const CEPH_SUPER_MAGIC: u32 = 12805120;
-pub const CODA_SUPER_MAGIC: u32 = 1937076805;
-pub const CRAMFS_MAGIC: u32 = 684539205;
-pub const CRAMFS_MAGIC_WEND: u32 = 1161678120;
-pub const DEBUGFS_MAGIC: u32 = 1684170528;
-pub const SECURITYFS_MAGIC: u32 = 1935894131;
-pub const SELINUX_MAGIC: u32 = 4185718668;
-pub const SMACK_MAGIC: u32 = 1128357203;
-pub const RAMFS_MAGIC: u32 = 2240043254;
-pub const TMPFS_MAGIC: u32 = 16914836;
-pub const HUGETLBFS_MAGIC: u32 = 2508478710;
-pub const SQUASHFS_MAGIC: u32 = 1936814952;
-pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791;
-pub const EFS_SUPER_MAGIC: u32 = 4278867;
-pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530;
-pub const EXT2_SUPER_MAGIC: u32 = 61267;
-pub const EXT3_SUPER_MAGIC: u32 = 61267;
-pub const XENFS_SUPER_MAGIC: u32 = 2881100148;
-pub const EXT4_SUPER_MAGIC: u32 = 61267;
-pub const BTRFS_SUPER_MAGIC: u32 = 2435016766;
-pub const NILFS_SUPER_MAGIC: u32 = 13364;
-pub const F2FS_SUPER_MAGIC: u32 = 4076150800;
-pub const HPFS_SUPER_MAGIC: u32 = 4187351113;
-pub const ISOFS_SUPER_MAGIC: u32 = 38496;
-pub const JFFS2_SUPER_MAGIC: u32 = 29366;
-pub const XFS_SUPER_MAGIC: u32 = 1481003842;
-pub const PSTOREFS_MAGIC: u32 = 1634035564;
-pub const EFIVARFS_MAGIC: u32 = 3730735588;
-pub const HOSTFS_SUPER_MAGIC: u32 = 12648430;
-pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128;
-pub const FUSE_SUPER_MAGIC: u32 = 1702057286;
-pub const MINIX_SUPER_MAGIC: u32 = 4991;
-pub const MINIX_SUPER_MAGIC2: u32 = 5007;
-pub const MINIX2_SUPER_MAGIC: u32 = 9320;
-pub const MINIX2_SUPER_MAGIC2: u32 = 9336;
-pub const MINIX3_SUPER_MAGIC: u32 = 19802;
-pub const MSDOS_SUPER_MAGIC: u32 = 19780;
-pub const EXFAT_SUPER_MAGIC: u32 = 538032816;
-pub const NCP_SUPER_MAGIC: u32 = 22092;
-pub const NFS_SUPER_MAGIC: u32 = 26985;
-pub const OCFS2_SUPER_MAGIC: u32 = 1952539503;
-pub const OPENPROM_SUPER_MAGIC: u32 = 40865;
-pub const QNX4_SUPER_MAGIC: u32 = 47;
-pub const QNX6_SUPER_MAGIC: u32 = 1746473250;
-pub const AFS_FS_MAGIC: u32 = 1799439955;
-pub const REISERFS_SUPER_MAGIC: u32 = 1382369651;
-pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0";
-pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0";
-pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0";
-pub const SMB_SUPER_MAGIC: u32 = 20859;
-pub const CIFS_SUPER_MAGIC: u32 = 4283649346;
-pub const SMB2_SUPER_MAGIC: u32 = 4266872130;
-pub const CGROUP_SUPER_MAGIC: u32 = 2613483;
-pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888;
-pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209;
-pub const STACK_END_MAGIC: u32 = 1470918301;
-pub const TRACEFS_MAGIC: u32 = 1953653091;
-pub const V9FS_MAGIC: u32 = 16914839;
-pub const BDEVFS_MAGIC: u32 = 1650746742;
-pub const DAXFS_MAGIC: u32 = 1684300152;
-pub const BINFMTFS_MAGIC: u32 = 1112100429;
-pub const DEVPTS_SUPER_MAGIC: u32 = 7377;
-pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352;
-pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762;
-pub const PIPEFS_MAGIC: u32 = 1346981957;
-pub const PROC_SUPER_MAGIC: u32 = 40864;
-pub const SOCKFS_MAGIC: u32 = 1397703499;
-pub const SYSFS_MAGIC: u32 = 1650812274;
-pub const USBDEVICE_SUPER_MAGIC: u32 = 40866;
-pub const MTD_INODE_FS_MAGIC: u32 = 288389204;
-pub const ANON_INODE_FS_MAGIC: u32 = 151263540;
-pub const BTRFS_TEST_MAGIC: u32 = 1936880249;
-pub const NSFS_MAGIC: u32 = 1853056627;
-pub const BPF_FS_MAGIC: u32 = 3405662737;
-pub const AAFS_MAGIC: u32 = 1513908720;
-pub const ZONEFS_MAGIC: u32 = 1515144787;
-pub const UDF_SUPER_MAGIC: u32 = 352400198;
-pub const DMA_BUF_MAGIC: u32 = 1145913666;
-pub const DEVMEM_MAGIC: u32 = 1162691661;
-pub const SECRETMEM_MAGIC: u32 = 1397048141;
-pub const PROT_READ: u32 = 1;
-pub const PROT_WRITE: u32 = 2;
-pub const PROT_EXEC: u32 = 4;
-pub const PROT_SEM: u32 = 8;
-pub const PROT_NONE: u32 = 0;
-pub const PROT_GROWSDOWN: u32 = 16777216;
-pub const PROT_GROWSUP: u32 = 33554432;
-pub const MAP_TYPE: u32 = 15;
-pub const MAP_FIXED: u32 = 16;
-pub const MAP_ANONYMOUS: u32 = 32;
-pub const MAP_POPULATE: u32 = 32768;
-pub const MAP_NONBLOCK: u32 = 65536;
-pub const MAP_STACK: u32 = 131072;
-pub const MAP_HUGETLB: u32 = 262144;
-pub const MAP_SYNC: u32 = 524288;
-pub const MAP_FIXED_NOREPLACE: u32 = 1048576;
-pub const MAP_UNINITIALIZED: u32 = 67108864;
-pub const MLOCK_ONFAULT: u32 = 1;
-pub const MS_ASYNC: u32 = 1;
-pub const MS_INVALIDATE: u32 = 2;
-pub const MS_SYNC: u32 = 4;
-pub const MADV_NORMAL: u32 = 0;
-pub const MADV_RANDOM: u32 = 1;
-pub const MADV_SEQUENTIAL: u32 = 2;
-pub const MADV_WILLNEED: u32 = 3;
-pub const MADV_DONTNEED: u32 = 4;
-pub const MADV_FREE: u32 = 8;
-pub const MADV_REMOVE: u32 = 9;
-pub const MADV_DONTFORK: u32 = 10;
-pub const MADV_DOFORK: u32 = 11;
-pub const MADV_HWPOISON: u32 = 100;
-pub const MADV_SOFT_OFFLINE: u32 = 101;
-pub const MADV_MERGEABLE: u32 = 12;
-pub const MADV_UNMERGEABLE: u32 = 13;
-pub const MADV_HUGEPAGE: u32 = 14;
-pub const MADV_NOHUGEPAGE: u32 = 15;
-pub const MADV_DONTDUMP: u32 = 16;
-pub const MADV_DODUMP: u32 = 17;
-pub const MADV_WIPEONFORK: u32 = 18;
-pub const MADV_KEEPONFORK: u32 = 19;
-pub const MADV_COLD: u32 = 20;
-pub const MADV_PAGEOUT: u32 = 21;
-pub const MADV_POPULATE_READ: u32 = 22;
-pub const MADV_POPULATE_WRITE: u32 = 23;
-pub const MADV_DONTNEED_LOCKED: u32 = 24;
-pub const MADV_COLLAPSE: u32 = 25;
-pub const MAP_FILE: u32 = 0;
-pub const PKEY_DISABLE_ACCESS: u32 = 1;
-pub const PKEY_DISABLE_WRITE: u32 = 2;
-pub const PKEY_ACCESS_MASK: u32 = 3;
-pub const MAP_GROWSDOWN: u32 = 256;
-pub const MAP_DENYWRITE: u32 = 2048;
-pub const MAP_EXECUTABLE: u32 = 4096;
-pub const MAP_LOCKED: u32 = 8192;
-pub const MAP_NORESERVE: u32 = 16384;
-pub const MCL_CURRENT: u32 = 1;
-pub const MCL_FUTURE: u32 = 2;
-pub const MCL_ONFAULT: u32 = 4;
-pub const PROT_BTI: u32 = 16;
-pub const PROT_MTE: u32 = 32;
-pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26;
-pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63;
-pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096;
-pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824;
-pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416;
-pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280;
-pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144;
-pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872;
-pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736;
-pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600;
-pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192;
-pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056;
-pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920;
-pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784;
-pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376;
-pub const MREMAP_MAYMOVE: u32 = 1;
-pub const MREMAP_FIXED: u32 = 2;
-pub const MREMAP_DONTUNMAP: u32 = 4;
-pub const OVERCOMMIT_GUESS: u32 = 0;
-pub const OVERCOMMIT_ALWAYS: u32 = 1;
-pub const OVERCOMMIT_NEVER: u32 = 2;
-pub const MAP_SHARED: u32 = 1;
-pub const MAP_PRIVATE: u32 = 2;
-pub const MAP_SHARED_VALIDATE: u32 = 3;
-pub const MAP_HUGE_SHIFT: u32 = 26;
-pub const MAP_HUGE_MASK: u32 = 63;
-pub const MAP_HUGE_16KB: u32 = 939524096;
-pub const MAP_HUGE_64KB: u32 = 1073741824;
-pub const MAP_HUGE_512KB: u32 = 1275068416;
-pub const MAP_HUGE_1MB: u32 = 1342177280;
-pub const MAP_HUGE_2MB: u32 = 1409286144;
-pub const MAP_HUGE_8MB: u32 = 1543503872;
-pub const MAP_HUGE_16MB: u32 = 1610612736;
-pub const MAP_HUGE_32MB: u32 = 1677721600;
-pub const MAP_HUGE_256MB: u32 = 1879048192;
-pub const MAP_HUGE_512MB: u32 = 1946157056;
-pub const MAP_HUGE_1GB: u32 = 2013265920;
-pub const MAP_HUGE_2GB: u32 = 2080374784;
-pub const MAP_HUGE_16GB: u32 = 2281701376;
-pub const SIOCGSTAMP_OLD: u32 = 35078;
-pub const SIOCGSTAMPNS_OLD: u32 = 35079;
-pub const SOL_SOCKET: u32 = 1;
-pub const SO_DEBUG: u32 = 1;
-pub const SO_REUSEADDR: u32 = 2;
-pub const SO_TYPE: u32 = 3;
-pub const SO_ERROR: u32 = 4;
-pub const SO_DONTROUTE: u32 = 5;
-pub const SO_BROADCAST: u32 = 6;
-pub const SO_SNDBUF: u32 = 7;
-pub const SO_RCVBUF: u32 = 8;
-pub const SO_SNDBUFFORCE: u32 = 32;
-pub const SO_RCVBUFFORCE: u32 = 33;
-pub const SO_KEEPALIVE: u32 = 9;
-pub const SO_OOBINLINE: u32 = 10;
-pub const SO_NO_CHECK: u32 = 11;
-pub const SO_PRIORITY: u32 = 12;
-pub const SO_LINGER: u32 = 13;
-pub const SO_BSDCOMPAT: u32 = 14;
-pub const SO_REUSEPORT: u32 = 15;
-pub const SO_PASSCRED: u32 = 16;
-pub const SO_PEERCRED: u32 = 17;
-pub const SO_RCVLOWAT: u32 = 18;
-pub const SO_SNDLOWAT: u32 = 19;
-pub const SO_RCVTIMEO_OLD: u32 = 20;
-pub const SO_SNDTIMEO_OLD: u32 = 21;
-pub const SO_SECURITY_AUTHENTICATION: u32 = 22;
-pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23;
-pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24;
-pub const SO_BINDTODEVICE: u32 = 25;
-pub const SO_ATTACH_FILTER: u32 = 26;
-pub const SO_DETACH_FILTER: u32 = 27;
-pub const SO_GET_FILTER: u32 = 26;
-pub const SO_PEERNAME: u32 = 28;
-pub const SO_ACCEPTCONN: u32 = 30;
-pub const SO_PEERSEC: u32 = 31;
-pub const SO_PASSSEC: u32 = 34;
-pub const SO_MARK: u32 = 36;
-pub const SO_PROTOCOL: u32 = 38;
-pub const SO_DOMAIN: u32 = 39;
-pub const SO_RXQ_OVFL: u32 = 40;
-pub const SO_WIFI_STATUS: u32 = 41;
-pub const SCM_WIFI_STATUS: u32 = 41;
-pub const SO_PEEK_OFF: u32 = 42;
-pub const SO_NOFCS: u32 = 43;
-pub const SO_LOCK_FILTER: u32 = 44;
-pub const SO_SELECT_ERR_QUEUE: u32 = 45;
-pub const SO_BUSY_POLL: u32 = 46;
-pub const SO_MAX_PACING_RATE: u32 = 47;
-pub const SO_BPF_EXTENSIONS: u32 = 48;
-pub const SO_INCOMING_CPU: u32 = 49;
-pub const SO_ATTACH_BPF: u32 = 50;
-pub const SO_DETACH_BPF: u32 = 27;
-pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51;
-pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52;
-pub const SO_CNX_ADVICE: u32 = 53;
-pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54;
-pub const SO_MEMINFO: u32 = 55;
-pub const SO_INCOMING_NAPI_ID: u32 = 56;
-pub const SO_COOKIE: u32 = 57;
-pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58;
-pub const SO_PEERGROUPS: u32 = 59;
-pub const SO_ZEROCOPY: u32 = 60;
-pub const SO_TXTIME: u32 = 61;
-pub const SCM_TXTIME: u32 = 61;
-pub const SO_BINDTOIFINDEX: u32 = 62;
-pub const SO_TIMESTAMP_OLD: u32 = 29;
-pub const SO_TIMESTAMPNS_OLD: u32 = 35;
-pub const SO_TIMESTAMPING_OLD: u32 = 37;
-pub const SO_TIMESTAMP_NEW: u32 = 63;
-pub const SO_TIMESTAMPNS_NEW: u32 = 64;
-pub const SO_TIMESTAMPING_NEW: u32 = 65;
-pub const SO_RCVTIMEO_NEW: u32 = 66;
-pub const SO_SNDTIMEO_NEW: u32 = 67;
-pub const SO_DETACH_REUSEPORT_BPF: u32 = 68;
-pub const SO_PREFER_BUSY_POLL: u32 = 69;
-pub const SO_BUSY_POLL_BUDGET: u32 = 70;
-pub const SO_NETNS_COOKIE: u32 = 71;
-pub const SO_BUF_LOCK: u32 = 72;
-pub const SO_RESERVE_MEM: u32 = 73;
-pub const SO_TXREHASH: u32 = 74;
-pub const SO_RCVMARK: u32 = 75;
-pub const SO_TIMESTAMP: u32 = 29;
-pub const SO_TIMESTAMPNS: u32 = 35;
-pub const SO_TIMESTAMPING: u32 = 37;
-pub const SO_RCVTIMEO: u32 = 20;
-pub const SO_SNDTIMEO: u32 = 21;
-pub const SCM_TIMESTAMP: u32 = 29;
-pub const SCM_TIMESTAMPNS: u32 = 35;
-pub const SCM_TIMESTAMPING: u32 = 37;
-pub const SYS_SOCKET: u32 = 1;
-pub const SYS_BIND: u32 = 2;
-pub const SYS_CONNECT: u32 = 3;
-pub const SYS_LISTEN: u32 = 4;
-pub const SYS_ACCEPT: u32 = 5;
-pub const SYS_GETSOCKNAME: u32 = 6;
-pub const SYS_GETPEERNAME: u32 = 7;
-pub const SYS_SOCKETPAIR: u32 = 8;
-pub const SYS_SEND: u32 = 9;
-pub const SYS_RECV: u32 = 10;
-pub const SYS_SENDTO: u32 = 11;
-pub const SYS_RECVFROM: u32 = 12;
-pub const SYS_SHUTDOWN: u32 = 13;
-pub const SYS_SETSOCKOPT: u32 = 14;
-pub const SYS_GETSOCKOPT: u32 = 15;
-pub const SYS_SENDMSG: u32 = 16;
-pub const SYS_RECVMSG: u32 = 17;
-pub const SYS_ACCEPT4: u32 = 18;
-pub const SYS_RECVMMSG: u32 = 19;
-pub const SYS_SENDMMSG: u32 = 20;
-pub const __SO_ACCEPTCON: u32 = 65536;
-pub const POLLIN: u32 = 1;
-pub const POLLPRI: u32 = 2;
-pub const POLLOUT: u32 = 4;
-pub const POLLERR: u32 = 8;
-pub const POLLHUP: u32 = 16;
-pub const POLLNVAL: u32 = 32;
-pub const POLLRDNORM: u32 = 64;
-pub const POLLRDBAND: u32 = 128;
-pub const POLLWRNORM: u32 = 256;
-pub const POLLWRBAND: u32 = 512;
-pub const POLLMSG: u32 = 1024;
-pub const POLLREMOVE: u32 = 4096;
-pub const POLLRDHUP: u32 = 8192;
-pub const PR_SET_PDEATHSIG: u32 = 1;
-pub const PR_GET_PDEATHSIG: u32 = 2;
-pub const PR_GET_DUMPABLE: u32 = 3;
-pub const PR_SET_DUMPABLE: u32 = 4;
-pub const PR_GET_UNALIGN: u32 = 5;
-pub const PR_SET_UNALIGN: u32 = 6;
-pub const PR_UNALIGN_NOPRINT: u32 = 1;
-pub const PR_UNALIGN_SIGBUS: u32 = 2;
-pub const PR_GET_KEEPCAPS: u32 = 7;
-pub const PR_SET_KEEPCAPS: u32 = 8;
-pub const PR_GET_FPEMU: u32 = 9;
-pub const PR_SET_FPEMU: u32 = 10;
-pub const PR_FPEMU_NOPRINT: u32 = 1;
-pub const PR_FPEMU_SIGFPE: u32 = 2;
-pub const PR_GET_FPEXC: u32 = 11;
-pub const PR_SET_FPEXC: u32 = 12;
-pub const PR_FP_EXC_SW_ENABLE: u32 = 128;
-pub const PR_FP_EXC_DIV: u32 = 65536;
-pub const PR_FP_EXC_OVF: u32 = 131072;
-pub const PR_FP_EXC_UND: u32 = 262144;
-pub const PR_FP_EXC_RES: u32 = 524288;
-pub const PR_FP_EXC_INV: u32 = 1048576;
-pub const PR_FP_EXC_DISABLED: u32 = 0;
-pub const PR_FP_EXC_NONRECOV: u32 = 1;
-pub const PR_FP_EXC_ASYNC: u32 = 2;
-pub const PR_FP_EXC_PRECISE: u32 = 3;
-pub const PR_GET_TIMING: u32 = 13;
-pub const PR_SET_TIMING: u32 = 14;
-pub const PR_TIMING_STATISTICAL: u32 = 0;
-pub const PR_TIMING_TIMESTAMP: u32 = 1;
-pub const PR_SET_NAME: u32 = 15;
-pub const PR_GET_NAME: u32 = 16;
-pub const PR_GET_ENDIAN: u32 = 19;
-pub const PR_SET_ENDIAN: u32 = 20;
-pub const PR_ENDIAN_BIG: u32 = 0;
-pub const PR_ENDIAN_LITTLE: u32 = 1;
-pub const PR_ENDIAN_PPC_LITTLE: u32 = 2;
-pub const PR_GET_SECCOMP: u32 = 21;
-pub const PR_SET_SECCOMP: u32 = 22;
-pub const PR_CAPBSET_READ: u32 = 23;
-pub const PR_CAPBSET_DROP: u32 = 24;
-pub const PR_GET_TSC: u32 = 25;
-pub const PR_SET_TSC: u32 = 26;
-pub const PR_TSC_ENABLE: u32 = 1;
-pub const PR_TSC_SIGSEGV: u32 = 2;
-pub const PR_GET_SECUREBITS: u32 = 27;
-pub const PR_SET_SECUREBITS: u32 = 28;
-pub const PR_SET_TIMERSLACK: u32 = 29;
-pub const PR_GET_TIMERSLACK: u32 = 30;
-pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31;
-pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32;
-pub const PR_MCE_KILL: u32 = 33;
-pub const PR_MCE_KILL_CLEAR: u32 = 0;
-pub const PR_MCE_KILL_SET: u32 = 1;
-pub const PR_MCE_KILL_LATE: u32 = 0;
-pub const PR_MCE_KILL_EARLY: u32 = 1;
-pub const PR_MCE_KILL_DEFAULT: u32 = 2;
-pub const PR_MCE_KILL_GET: u32 = 34;
-pub const PR_SET_MM: u32 = 35;
-pub const PR_SET_MM_START_CODE: u32 = 1;
-pub const PR_SET_MM_END_CODE: u32 = 2;
-pub const PR_SET_MM_START_DATA: u32 = 3;
-pub const PR_SET_MM_END_DATA: u32 = 4;
-pub const PR_SET_MM_START_STACK: u32 = 5;
-pub const PR_SET_MM_START_BRK: u32 = 6;
-pub const PR_SET_MM_BRK: u32 = 7;
-pub const PR_SET_MM_ARG_START: u32 = 8;
-pub const PR_SET_MM_ARG_END: u32 = 9;
-pub const PR_SET_MM_ENV_START: u32 = 10;
-pub const PR_SET_MM_ENV_END: u32 = 11;
-pub const PR_SET_MM_AUXV: u32 = 12;
-pub const PR_SET_MM_EXE_FILE: u32 = 13;
-pub const PR_SET_MM_MAP: u32 = 14;
-pub const PR_SET_MM_MAP_SIZE: u32 = 15;
-pub const PR_SET_PTRACER: u32 = 1499557217;
-pub const PR_SET_CHILD_SUBREAPER: u32 = 36;
-pub const PR_GET_CHILD_SUBREAPER: u32 = 37;
-pub const PR_SET_NO_NEW_PRIVS: u32 = 38;
-pub const PR_GET_NO_NEW_PRIVS: u32 = 39;
-pub const PR_GET_TID_ADDRESS: u32 = 40;
-pub const PR_SET_THP_DISABLE: u32 = 41;
-pub const PR_GET_THP_DISABLE: u32 = 42;
-pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43;
-pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44;
-pub const PR_SET_FP_MODE: u32 = 45;
-pub const PR_GET_FP_MODE: u32 = 46;
-pub const PR_FP_MODE_FR: u32 = 1;
-pub const PR_FP_MODE_FRE: u32 = 2;
-pub const PR_CAP_AMBIENT: u32 = 47;
-pub const PR_CAP_AMBIENT_IS_SET: u32 = 1;
-pub const PR_CAP_AMBIENT_RAISE: u32 = 2;
-pub const PR_CAP_AMBIENT_LOWER: u32 = 3;
-pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4;
-pub const PR_SVE_SET_VL: u32 = 50;
-pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SVE_GET_VL: u32 = 51;
-pub const PR_SVE_VL_LEN_MASK: u32 = 65535;
-pub const PR_SVE_VL_INHERIT: u32 = 131072;
-pub const PR_GET_SPECULATION_CTRL: u32 = 52;
-pub const PR_SET_SPECULATION_CTRL: u32 = 53;
-pub const PR_SPEC_STORE_BYPASS: u32 = 0;
-pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1;
-pub const PR_SPEC_L1D_FLUSH: u32 = 2;
-pub const PR_SPEC_NOT_AFFECTED: u32 = 0;
-pub const PR_SPEC_PRCTL: u32 = 1;
-pub const PR_SPEC_ENABLE: u32 = 2;
-pub const PR_SPEC_DISABLE: u32 = 4;
-pub const PR_SPEC_FORCE_DISABLE: u32 = 8;
-pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16;
-pub const PR_PAC_RESET_KEYS: u32 = 54;
-pub const PR_PAC_APIAKEY: u32 = 1;
-pub const PR_PAC_APIBKEY: u32 = 2;
-pub const PR_PAC_APDAKEY: u32 = 4;
-pub const PR_PAC_APDBKEY: u32 = 8;
-pub const PR_PAC_APGAKEY: u32 = 16;
-pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55;
-pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56;
-pub const PR_TAGGED_ADDR_ENABLE: u32 = 1;
-pub const PR_MTE_TCF_NONE: u32 = 0;
-pub const PR_MTE_TCF_SYNC: u32 = 2;
-pub const PR_MTE_TCF_ASYNC: u32 = 4;
-pub const PR_MTE_TCF_MASK: u32 = 6;
-pub const PR_MTE_TAG_SHIFT: u32 = 3;
-pub const PR_MTE_TAG_MASK: u32 = 524280;
-pub const PR_MTE_TCF_SHIFT: u32 = 1;
-pub const PR_SET_IO_FLUSHER: u32 = 57;
-pub const PR_GET_IO_FLUSHER: u32 = 58;
-pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59;
-pub const PR_SYS_DISPATCH_OFF: u32 = 0;
-pub const PR_SYS_DISPATCH_ON: u32 = 1;
-pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0;
-pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1;
-pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60;
-pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61;
-pub const PR_SCHED_CORE: u32 = 62;
-pub const PR_SCHED_CORE_GET: u32 = 0;
-pub const PR_SCHED_CORE_CREATE: u32 = 1;
-pub const PR_SCHED_CORE_SHARE_TO: u32 = 2;
-pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3;
-pub const PR_SCHED_CORE_MAX: u32 = 4;
-pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0;
-pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1;
-pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2;
-pub const PR_SME_SET_VL: u32 = 63;
-pub const PR_SME_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SME_GET_VL: u32 = 64;
-pub const PR_SME_VL_LEN_MASK: u32 = 65535;
-pub const PR_SME_VL_INHERIT: u32 = 131072;
-pub const PR_SET_VMA: u32 = 1398164801;
-pub const PR_SET_VMA_ANON_NAME: u32 = 0;
-pub const GRND_NONBLOCK: u32 = 1;
-pub const GRND_RANDOM: u32 = 2;
-pub const GRND_INSECURE: u32 = 4;
-pub const ITIMER_REAL: u32 = 0;
-pub const ITIMER_VIRTUAL: u32 = 1;
-pub const ITIMER_PROF: u32 = 2;
-pub const CLOCK_REALTIME: u32 = 0;
-pub const CLOCK_MONOTONIC: u32 = 1;
-pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2;
-pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3;
-pub const CLOCK_MONOTONIC_RAW: u32 = 4;
-pub const CLOCK_REALTIME_COARSE: u32 = 5;
-pub const CLOCK_MONOTONIC_COARSE: u32 = 6;
-pub const CLOCK_BOOTTIME: u32 = 7;
-pub const CLOCK_REALTIME_ALARM: u32 = 8;
-pub const CLOCK_BOOTTIME_ALARM: u32 = 9;
-pub const CLOCK_SGI_CYCLE: u32 = 10;
-pub const CLOCK_TAI: u32 = 11;
-pub const MAX_CLOCKS: u32 = 16;
-pub const CLOCKS_MASK: u32 = 1;
-pub const CLOCKS_MONO: u32 = 1;
-pub const TIMER_ABSTIME: u32 = 1;
-pub const RUSAGE_SELF: u32 = 0;
-pub const RUSAGE_CHILDREN: i32 = -1;
-pub const RUSAGE_BOTH: i32 = -2;
-pub const RUSAGE_THREAD: u32 = 1;
-pub const RLIM64_INFINITY: i32 = -1;
-pub const PRIO_MIN: i32 = -20;
-pub const PRIO_MAX: u32 = 20;
-pub const PRIO_PROCESS: u32 = 0;
-pub const PRIO_PGRP: u32 = 1;
-pub const PRIO_USER: u32 = 2;
-pub const _STK_LIM: u32 = 8388608;
-pub const MLOCK_LIMIT: u32 = 8388608;
-pub const RLIMIT_CPU: u32 = 0;
-pub const RLIMIT_FSIZE: u32 = 1;
-pub const RLIMIT_DATA: u32 = 2;
-pub const RLIMIT_STACK: u32 = 3;
-pub const RLIMIT_CORE: u32 = 4;
-pub const RLIMIT_RSS: u32 = 5;
-pub const RLIMIT_NPROC: u32 = 6;
-pub const RLIMIT_NOFILE: u32 = 7;
-pub const RLIMIT_MEMLOCK: u32 = 8;
-pub const RLIMIT_AS: u32 = 9;
-pub const RLIMIT_LOCKS: u32 = 10;
-pub const RLIMIT_SIGPENDING: u32 = 11;
-pub const RLIMIT_MSGQUEUE: u32 = 12;
-pub const RLIMIT_NICE: u32 = 13;
-pub const RLIMIT_RTPRIO: u32 = 14;
-pub const RLIMIT_RTTIME: u32 = 15;
-pub const RLIM_NLIMITS: u32 = 16;
-pub const RLIM_INFINITY: i32 = -1;
-pub const CSIGNAL: u32 = 255;
-pub const CLONE_VM: u32 = 256;
-pub const CLONE_FS: u32 = 512;
-pub const CLONE_FILES: u32 = 1024;
-pub const CLONE_SIGHAND: u32 = 2048;
-pub const CLONE_PIDFD: u32 = 4096;
-pub const CLONE_PTRACE: u32 = 8192;
-pub const CLONE_VFORK: u32 = 16384;
-pub const CLONE_PARENT: u32 = 32768;
-pub const CLONE_THREAD: u32 = 65536;
-pub const CLONE_NEWNS: u32 = 131072;
-pub const CLONE_SYSVSEM: u32 = 262144;
-pub const CLONE_SETTLS: u32 = 524288;
-pub const CLONE_PARENT_SETTID: u32 = 1048576;
-pub const CLONE_CHILD_CLEARTID: u32 = 2097152;
-pub const CLONE_DETACHED: u32 = 4194304;
-pub const CLONE_UNTRACED: u32 = 8388608;
-pub const CLONE_CHILD_SETTID: u32 = 16777216;
-pub const CLONE_NEWCGROUP: u32 = 33554432;
-pub const CLONE_NEWUTS: u32 = 67108864;
-pub const CLONE_NEWIPC: u32 = 134217728;
-pub const CLONE_NEWUSER: u32 = 268435456;
-pub const CLONE_NEWPID: u32 = 536870912;
-pub const CLONE_NEWNET: u32 = 1073741824;
-pub const CLONE_IO: u32 = 2147483648;
-pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296;
-pub const CLONE_INTO_CGROUP: u64 = 8589934592;
-pub const CLONE_NEWTIME: u32 = 128;
-pub const CLONE_ARGS_SIZE_VER0: u32 = 64;
-pub const CLONE_ARGS_SIZE_VER1: u32 = 80;
-pub const CLONE_ARGS_SIZE_VER2: u32 = 88;
-pub const SCHED_NORMAL: u32 = 0;
-pub const SCHED_FIFO: u32 = 1;
-pub const SCHED_RR: u32 = 2;
-pub const SCHED_BATCH: u32 = 3;
-pub const SCHED_IDLE: u32 = 5;
-pub const SCHED_DEADLINE: u32 = 6;
-pub const SCHED_RESET_ON_FORK: u32 = 1073741824;
-pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1;
-pub const SCHED_FLAG_RECLAIM: u32 = 2;
-pub const SCHED_FLAG_DL_OVERRUN: u32 = 4;
-pub const SCHED_FLAG_KEEP_POLICY: u32 = 8;
-pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16;
-pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32;
-pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64;
-pub const SCHED_FLAG_KEEP_ALL: u32 = 24;
-pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96;
-pub const SCHED_FLAG_ALL: u32 = 127;
-pub const SA_RESTORER: u32 = 67108864;
-pub const MINSIGSTKSZ: u32 = 5120;
-pub const SIGSTKSZ: u32 = 16384;
-pub const _NSIG: u32 = 64;
-pub const _NSIG_BPW: u32 = 64;
-pub const _NSIG_WORDS: u32 = 1;
-pub const SIGHUP: u32 = 1;
-pub const SIGINT: u32 = 2;
-pub const SIGQUIT: u32 = 3;
-pub const SIGILL: u32 = 4;
-pub const SIGTRAP: u32 = 5;
-pub const SIGABRT: u32 = 6;
-pub const SIGIOT: u32 = 6;
-pub const SIGBUS: u32 = 7;
-pub const SIGFPE: u32 = 8;
-pub const SIGKILL: u32 = 9;
-pub const SIGUSR1: u32 = 10;
-pub const SIGSEGV: u32 = 11;
-pub const SIGUSR2: u32 = 12;
-pub const SIGPIPE: u32 = 13;
-pub const SIGALRM: u32 = 14;
-pub const SIGTERM: u32 = 15;
-pub const SIGSTKFLT: u32 = 16;
-pub const SIGCHLD: u32 = 17;
-pub const SIGCONT: u32 = 18;
-pub const SIGSTOP: u32 = 19;
-pub const SIGTSTP: u32 = 20;
-pub const SIGTTIN: u32 = 21;
-pub const SIGTTOU: u32 = 22;
-pub const SIGURG: u32 = 23;
-pub const SIGXCPU: u32 = 24;
-pub const SIGXFSZ: u32 = 25;
-pub const SIGVTALRM: u32 = 26;
-pub const SIGPROF: u32 = 27;
-pub const SIGWINCH: u32 = 28;
-pub const SIGIO: u32 = 29;
-pub const SIGPOLL: u32 = 29;
-pub const SIGPWR: u32 = 30;
-pub const SIGSYS: u32 = 31;
-pub const SIGUNUSED: u32 = 31;
-pub const SIGRTMIN: u32 = 32;
-pub const SIGRTMAX: u32 = 64;
-pub const SA_NOCLDSTOP: u32 = 1;
-pub const SA_NOCLDWAIT: u32 = 2;
-pub const SA_SIGINFO: u32 = 4;
-pub const SA_UNSUPPORTED: u32 = 1024;
-pub const SA_EXPOSE_TAGBITS: u32 = 2048;
-pub const SA_ONSTACK: u32 = 134217728;
-pub const SA_RESTART: u32 = 268435456;
-pub const SA_NODEFER: u32 = 1073741824;
-pub const SA_RESETHAND: u32 = 2147483648;
-pub const SA_NOMASK: u32 = 1073741824;
-pub const SA_ONESHOT: u32 = 2147483648;
-pub const SIG_BLOCK: u32 = 0;
-pub const SIG_UNBLOCK: u32 = 1;
-pub const SIG_SETMASK: u32 = 2;
-pub const SI_MAX_SIZE: u32 = 128;
-pub const SI_USER: u32 = 0;
-pub const SI_KERNEL: u32 = 128;
-pub const SI_QUEUE: i32 = -1;
-pub const SI_TIMER: i32 = -2;
-pub const SI_MESGQ: i32 = -3;
-pub const SI_ASYNCIO: i32 = -4;
-pub const SI_SIGIO: i32 = -5;
-pub const SI_TKILL: i32 = -6;
-pub const SI_DETHREAD: i32 = -7;
-pub const SI_ASYNCNL: i32 = -60;
-pub const ILL_ILLOPC: u32 = 1;
-pub const ILL_ILLOPN: u32 = 2;
-pub const ILL_ILLADR: u32 = 3;
-pub const ILL_ILLTRP: u32 = 4;
-pub const ILL_PRVOPC: u32 = 5;
-pub const ILL_PRVREG: u32 = 6;
-pub const ILL_COPROC: u32 = 7;
-pub const ILL_BADSTK: u32 = 8;
-pub const ILL_BADIADDR: u32 = 9;
-pub const __ILL_BREAK: u32 = 10;
-pub const __ILL_BNDMOD: u32 = 11;
-pub const NSIGILL: u32 = 11;
-pub const FPE_INTDIV: u32 = 1;
-pub const FPE_INTOVF: u32 = 2;
-pub const FPE_FLTDIV: u32 = 3;
-pub const FPE_FLTOVF: u32 = 4;
-pub const FPE_FLTUND: u32 = 5;
-pub const FPE_FLTRES: u32 = 6;
-pub const FPE_FLTINV: u32 = 7;
-pub const FPE_FLTSUB: u32 = 8;
-pub const __FPE_DECOVF: u32 = 9;
-pub const __FPE_DECDIV: u32 = 10;
-pub const __FPE_DECERR: u32 = 11;
-pub const __FPE_INVASC: u32 = 12;
-pub const __FPE_INVDEC: u32 = 13;
-pub const FPE_FLTUNK: u32 = 14;
-pub const FPE_CONDTRAP: u32 = 15;
-pub const NSIGFPE: u32 = 15;
-pub const SEGV_MAPERR: u32 = 1;
-pub const SEGV_ACCERR: u32 = 2;
-pub const SEGV_BNDERR: u32 = 3;
-pub const SEGV_PKUERR: u32 = 4;
-pub const SEGV_ACCADI: u32 = 5;
-pub const SEGV_ADIDERR: u32 = 6;
-pub const SEGV_ADIPERR: u32 = 7;
-pub const SEGV_MTEAERR: u32 = 8;
-pub const SEGV_MTESERR: u32 = 9;
-pub const NSIGSEGV: u32 = 9;
-pub const BUS_ADRALN: u32 = 1;
-pub const BUS_ADRERR: u32 = 2;
-pub const BUS_OBJERR: u32 = 3;
-pub const BUS_MCEERR_AR: u32 = 4;
-pub const BUS_MCEERR_AO: u32 = 5;
-pub const NSIGBUS: u32 = 5;
-pub const TRAP_BRKPT: u32 = 1;
-pub const TRAP_TRACE: u32 = 2;
-pub const TRAP_BRANCH: u32 = 3;
-pub const TRAP_HWBKPT: u32 = 4;
-pub const TRAP_UNK: u32 = 5;
-pub const TRAP_PERF: u32 = 6;
-pub const NSIGTRAP: u32 = 6;
-pub const TRAP_PERF_FLAG_ASYNC: u32 = 1;
-pub const CLD_EXITED: u32 = 1;
-pub const CLD_KILLED: u32 = 2;
-pub const CLD_DUMPED: u32 = 3;
-pub const CLD_TRAPPED: u32 = 4;
-pub const CLD_STOPPED: u32 = 5;
-pub const CLD_CONTINUED: u32 = 6;
-pub const NSIGCHLD: u32 = 6;
-pub const POLL_IN: u32 = 1;
-pub const POLL_OUT: u32 = 2;
-pub const POLL_MSG: u32 = 3;
-pub const POLL_ERR: u32 = 4;
-pub const POLL_PRI: u32 = 5;
-pub const POLL_HUP: u32 = 6;
-pub const NSIGPOLL: u32 = 6;
-pub const SYS_SECCOMP: u32 = 1;
-pub const SYS_USER_DISPATCH: u32 = 2;
-pub const NSIGSYS: u32 = 2;
-pub const EMT_TAGOVF: u32 = 1;
-pub const NSIGEMT: u32 = 1;
-pub const SIGEV_SIGNAL: u32 = 0;
-pub const SIGEV_NONE: u32 = 1;
-pub const SIGEV_THREAD: u32 = 2;
-pub const SIGEV_THREAD_ID: u32 = 4;
-pub const SIGEV_MAX_SIZE: u32 = 64;
-pub const SS_ONSTACK: u32 = 1;
-pub const SS_DISABLE: u32 = 2;
-pub const SS_AUTODISARM: u32 = 2147483648;
-pub const SS_FLAG_BITS: u32 = 2147483648;
-pub const S_IFMT: u32 = 61440;
-pub const S_IFSOCK: u32 = 49152;
-pub const S_IFLNK: u32 = 40960;
-pub const S_IFREG: u32 = 32768;
-pub const S_IFBLK: u32 = 24576;
-pub const S_IFDIR: u32 = 16384;
-pub const S_IFCHR: u32 = 8192;
-pub const S_IFIFO: u32 = 4096;
-pub const S_ISUID: u32 = 2048;
-pub const S_ISGID: u32 = 1024;
-pub const S_ISVTX: u32 = 512;
-pub const S_IRWXU: u32 = 448;
-pub const S_IRUSR: u32 = 256;
-pub const S_IWUSR: u32 = 128;
-pub const S_IXUSR: u32 = 64;
-pub const S_IRWXG: u32 = 56;
-pub const S_IRGRP: u32 = 32;
-pub const S_IWGRP: u32 = 16;
-pub const S_IXGRP: u32 = 8;
-pub const S_IRWXO: u32 = 7;
-pub const S_IROTH: u32 = 4;
-pub const S_IWOTH: u32 = 2;
-pub const S_IXOTH: u32 = 1;
-pub const STATX_TYPE: u32 = 1;
-pub const STATX_MODE: u32 = 2;
-pub const STATX_NLINK: u32 = 4;
-pub const STATX_UID: u32 = 8;
-pub const STATX_GID: u32 = 16;
-pub const STATX_ATIME: u32 = 32;
-pub const STATX_MTIME: u32 = 64;
-pub const STATX_CTIME: u32 = 128;
-pub const STATX_INO: u32 = 256;
-pub const STATX_SIZE: u32 = 512;
-pub const STATX_BLOCKS: u32 = 1024;
-pub const STATX_BASIC_STATS: u32 = 2047;
-pub const STATX_BTIME: u32 = 2048;
-pub const STATX_MNT_ID: u32 = 4096;
-pub const STATX_DIOALIGN: u32 = 8192;
-pub const STATX__RESERVED: u32 = 2147483648;
-pub const STATX_ALL: u32 = 4095;
-pub const STATX_ATTR_COMPRESSED: u32 = 4;
-pub const STATX_ATTR_IMMUTABLE: u32 = 16;
-pub const STATX_ATTR_APPEND: u32 = 32;
-pub const STATX_ATTR_NODUMP: u32 = 64;
-pub const STATX_ATTR_ENCRYPTED: u32 = 2048;
-pub const STATX_ATTR_AUTOMOUNT: u32 = 4096;
-pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192;
-pub const STATX_ATTR_VERITY: u32 = 1048576;
-pub const STATX_ATTR_DAX: u32 = 2097152;
-pub const SI_LOAD_SHIFT: u32 = 16;
-pub const TCP_MSS_DEFAULT: u32 = 536;
-pub const TCP_MSS_DESIRED: u32 = 1220;
-pub const TCP_NODELAY: u32 = 1;
-pub const TCP_MAXSEG: u32 = 2;
-pub const TCP_CORK: u32 = 3;
-pub const TCP_KEEPIDLE: u32 = 4;
-pub const TCP_KEEPINTVL: u32 = 5;
-pub const TCP_KEEPCNT: u32 = 6;
-pub const TCP_SYNCNT: u32 = 7;
-pub const TCP_LINGER2: u32 = 8;
-pub const TCP_DEFER_ACCEPT: u32 = 9;
-pub const TCP_WINDOW_CLAMP: u32 = 10;
-pub const TCP_INFO: u32 = 11;
-pub const TCP_QUICKACK: u32 = 12;
-pub const TCP_CONGESTION: u32 = 13;
-pub const TCP_MD5SIG: u32 = 14;
-pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16;
-pub const TCP_THIN_DUPACK: u32 = 17;
-pub const TCP_USER_TIMEOUT: u32 = 18;
-pub const TCP_REPAIR: u32 = 19;
-pub const TCP_REPAIR_QUEUE: u32 = 20;
-pub const TCP_QUEUE_SEQ: u32 = 21;
-pub const TCP_REPAIR_OPTIONS: u32 = 22;
-pub const TCP_FASTOPEN: u32 = 23;
-pub const TCP_TIMESTAMP: u32 = 24;
-pub const TCP_NOTSENT_LOWAT: u32 = 25;
-pub const TCP_CC_INFO: u32 = 26;
-pub const TCP_SAVE_SYN: u32 = 27;
-pub const TCP_SAVED_SYN: u32 = 28;
-pub const TCP_REPAIR_WINDOW: u32 = 29;
-pub const TCP_FASTOPEN_CONNECT: u32 = 30;
-pub const TCP_ULP: u32 = 31;
-pub const TCP_MD5SIG_EXT: u32 = 32;
-pub const TCP_FASTOPEN_KEY: u32 = 33;
-pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34;
-pub const TCP_ZEROCOPY_RECEIVE: u32 = 35;
-pub const TCP_INQ: u32 = 36;
-pub const TCP_CM_INQ: u32 = 36;
-pub const TCP_TX_DELAY: u32 = 37;
-pub const TCP_REPAIR_ON: u32 = 1;
-pub const TCP_REPAIR_OFF: u32 = 0;
-pub const TCP_REPAIR_OFF_NO_WP: i32 = -1;
-pub const TCPI_OPT_TIMESTAMPS: u32 = 1;
-pub const TCPI_OPT_SACK: u32 = 2;
-pub const TCPI_OPT_WSCALE: u32 = 4;
-pub const TCPI_OPT_ECN: u32 = 8;
-pub const TCPI_OPT_ECN_SEEN: u32 = 16;
-pub const TCPI_OPT_SYN_DATA: u32 = 32;
-pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80;
-pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
-pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
-pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
-pub const IGNBRK: u32 = 1;
-pub const BRKINT: u32 = 2;
-pub const IGNPAR: u32 = 4;
-pub const PARMRK: u32 = 8;
-pub const INPCK: u32 = 16;
-pub const ISTRIP: u32 = 32;
-pub const INLCR: u32 = 64;
-pub const IGNCR: u32 = 128;
-pub const ICRNL: u32 = 256;
-pub const IXANY: u32 = 2048;
-pub const OPOST: u32 = 1;
-pub const OCRNL: u32 = 8;
-pub const ONOCR: u32 = 16;
-pub const ONLRET: u32 = 32;
-pub const OFILL: u32 = 64;
-pub const OFDEL: u32 = 128;
-pub const B0: u32 = 0;
-pub const B50: u32 = 1;
-pub const B75: u32 = 2;
-pub const B110: u32 = 3;
-pub const B134: u32 = 4;
-pub const B150: u32 = 5;
-pub const B200: u32 = 6;
-pub const B300: u32 = 7;
-pub const B600: u32 = 8;
-pub const B1200: u32 = 9;
-pub const B1800: u32 = 10;
-pub const B2400: u32 = 11;
-pub const B4800: u32 = 12;
-pub const B9600: u32 = 13;
-pub const B19200: u32 = 14;
-pub const B38400: u32 = 15;
-pub const EXTA: u32 = 14;
-pub const EXTB: u32 = 15;
-pub const ADDRB: u32 = 536870912;
-pub const CMSPAR: u32 = 1073741824;
-pub const CRTSCTS: u32 = 2147483648;
-pub const IBSHIFT: u32 = 16;
-pub const TCOOFF: u32 = 0;
-pub const TCOON: u32 = 1;
-pub const TCIOFF: u32 = 2;
-pub const TCION: u32 = 3;
-pub const TCIFLUSH: u32 = 0;
-pub const TCOFLUSH: u32 = 1;
-pub const TCIOFLUSH: u32 = 2;
-pub const NCCS: u32 = 19;
-pub const VINTR: u32 = 0;
-pub const VQUIT: u32 = 1;
-pub const VERASE: u32 = 2;
-pub const VKILL: u32 = 3;
-pub const VEOF: u32 = 4;
-pub const VTIME: u32 = 5;
-pub const VMIN: u32 = 6;
-pub const VSWTC: u32 = 7;
-pub const VSTART: u32 = 8;
-pub const VSTOP: u32 = 9;
-pub const VSUSP: u32 = 10;
-pub const VEOL: u32 = 11;
-pub const VREPRINT: u32 = 12;
-pub const VDISCARD: u32 = 13;
-pub const VWERASE: u32 = 14;
-pub const VLNEXT: u32 = 15;
-pub const VEOL2: u32 = 16;
-pub const IUCLC: u32 = 512;
-pub const IXON: u32 = 1024;
-pub const IXOFF: u32 = 4096;
-pub const IMAXBEL: u32 = 8192;
-pub const IUTF8: u32 = 16384;
-pub const OLCUC: u32 = 2;
-pub const ONLCR: u32 = 4;
-pub const NLDLY: u32 = 256;
-pub const NL0: u32 = 0;
-pub const NL1: u32 = 256;
-pub const CRDLY: u32 = 1536;
-pub const CR0: u32 = 0;
-pub const CR1: u32 = 512;
-pub const CR2: u32 = 1024;
-pub const CR3: u32 = 1536;
-pub const TABDLY: u32 = 6144;
-pub const TAB0: u32 = 0;
-pub const TAB1: u32 = 2048;
-pub const TAB2: u32 = 4096;
-pub const TAB3: u32 = 6144;
-pub const XTABS: u32 = 6144;
-pub const BSDLY: u32 = 8192;
-pub const BS0: u32 = 0;
-pub const BS1: u32 = 8192;
-pub const VTDLY: u32 = 16384;
-pub const VT0: u32 = 0;
-pub const VT1: u32 = 16384;
-pub const FFDLY: u32 = 32768;
-pub const FF0: u32 = 0;
-pub const FF1: u32 = 32768;
-pub const CBAUD: u32 = 4111;
-pub const CSIZE: u32 = 48;
-pub const CS5: u32 = 0;
-pub const CS6: u32 = 16;
-pub const CS7: u32 = 32;
-pub const CS8: u32 = 48;
-pub const CSTOPB: u32 = 64;
-pub const CREAD: u32 = 128;
-pub const PARENB: u32 = 256;
-pub const PARODD: u32 = 512;
-pub const HUPCL: u32 = 1024;
-pub const CLOCAL: u32 = 2048;
-pub const CBAUDEX: u32 = 4096;
-pub const BOTHER: u32 = 4096;
-pub const B57600: u32 = 4097;
-pub const B115200: u32 = 4098;
-pub const B230400: u32 = 4099;
-pub const B460800: u32 = 4100;
-pub const B500000: u32 = 4101;
-pub const B576000: u32 = 4102;
-pub const B921600: u32 = 4103;
-pub const B1000000: u32 = 4104;
-pub const B1152000: u32 = 4105;
-pub const B1500000: u32 = 4106;
-pub const B2000000: u32 = 4107;
-pub const B2500000: u32 = 4108;
-pub const B3000000: u32 = 4109;
-pub const B3500000: u32 = 4110;
-pub const B4000000: u32 = 4111;
-pub const CIBAUD: u32 = 269418496;
-pub const ISIG: u32 = 1;
-pub const ICANON: u32 = 2;
-pub const XCASE: u32 = 4;
-pub const ECHO: u32 = 8;
-pub const ECHOE: u32 = 16;
-pub const ECHOK: u32 = 32;
-pub const ECHONL: u32 = 64;
-pub const NOFLSH: u32 = 128;
-pub const TOSTOP: u32 = 256;
-pub const ECHOCTL: u32 = 512;
-pub const ECHOPRT: u32 = 1024;
-pub const ECHOKE: u32 = 2048;
-pub const FLUSHO: u32 = 4096;
-pub const PENDIN: u32 = 16384;
-pub const IEXTEN: u32 = 32768;
-pub const EXTPROC: u32 = 65536;
-pub const TCSANOW: u32 = 0;
-pub const TCSADRAIN: u32 = 1;
-pub const TCSAFLUSH: u32 = 2;
-pub const TIOCPKT_DATA: u32 = 0;
-pub const TIOCPKT_FLUSHREAD: u32 = 1;
-pub const TIOCPKT_FLUSHWRITE: u32 = 2;
-pub const TIOCPKT_STOP: u32 = 4;
-pub const TIOCPKT_START: u32 = 8;
-pub const TIOCPKT_NOSTOP: u32 = 16;
-pub const TIOCPKT_DOSTOP: u32 = 32;
-pub const TIOCPKT_IOCTL: u32 = 64;
-pub const TIOCSER_TEMT: u32 = 1;
-pub const NCC: u32 = 8;
-pub const TIOCM_LE: u32 = 1;
-pub const TIOCM_DTR: u32 = 2;
-pub const TIOCM_RTS: u32 = 4;
-pub const TIOCM_ST: u32 = 8;
-pub const TIOCM_SR: u32 = 16;
-pub const TIOCM_CTS: u32 = 32;
-pub const TIOCM_CAR: u32 = 64;
-pub const TIOCM_RNG: u32 = 128;
-pub const TIOCM_DSR: u32 = 256;
-pub const TIOCM_CD: u32 = 64;
-pub const TIOCM_RI: u32 = 128;
-pub const TIOCM_OUT1: u32 = 8192;
-pub const TIOCM_OUT2: u32 = 16384;
-pub const TIOCM_LOOP: u32 = 32768;
-pub const UIO_FASTIOV: u32 = 8;
-pub const UIO_MAXIOV: u32 = 1024;
-pub const UNIX_PATH_MAX: u32 = 108;
-pub const __NR_io_setup: u32 = 0;
-pub const __NR_io_destroy: u32 = 1;
-pub const __NR_io_submit: u32 = 2;
-pub const __NR_io_cancel: u32 = 3;
-pub const __NR_io_getevents: u32 = 4;
-pub const __NR_setxattr: u32 = 5;
-pub const __NR_lsetxattr: u32 = 6;
-pub const __NR_fsetxattr: u32 = 7;
-pub const __NR_getxattr: u32 = 8;
-pub const __NR_lgetxattr: u32 = 9;
-pub const __NR_fgetxattr: u32 = 10;
-pub const __NR_listxattr: u32 = 11;
-pub const __NR_llistxattr: u32 = 12;
-pub const __NR_flistxattr: u32 = 13;
-pub const __NR_removexattr: u32 = 14;
-pub const __NR_lremovexattr: u32 = 15;
-pub const __NR_fremovexattr: u32 = 16;
-pub const __NR_getcwd: u32 = 17;
-pub const __NR_lookup_dcookie: u32 = 18;
-pub const __NR_eventfd2: u32 = 19;
-pub const __NR_epoll_create1: u32 = 20;
-pub const __NR_epoll_ctl: u32 = 21;
-pub const __NR_epoll_pwait: u32 = 22;
-pub const __NR_dup: u32 = 23;
-pub const __NR_dup3: u32 = 24;
-pub const __NR3264_fcntl: u32 = 25;
-pub const __NR_inotify_init1: u32 = 26;
-pub const __NR_inotify_add_watch: u32 = 27;
-pub const __NR_inotify_rm_watch: u32 = 28;
-pub const __NR_ioctl: u32 = 29;
-pub const __NR_ioprio_set: u32 = 30;
-pub const __NR_ioprio_get: u32 = 31;
-pub const __NR_flock: u32 = 32;
-pub const __NR_mknodat: u32 = 33;
-pub const __NR_mkdirat: u32 = 34;
-pub const __NR_unlinkat: u32 = 35;
-pub const __NR_symlinkat: u32 = 36;
-pub const __NR_linkat: u32 = 37;
-pub const __NR_renameat: u32 = 38;
-pub const __NR_umount2: u32 = 39;
-pub const __NR_mount: u32 = 40;
-pub const __NR_pivot_root: u32 = 41;
-pub const __NR_nfsservctl: u32 = 42;
-pub const __NR3264_statfs: u32 = 43;
-pub const __NR3264_fstatfs: u32 = 44;
-pub const __NR3264_truncate: u32 = 45;
-pub const __NR3264_ftruncate: u32 = 46;
-pub const __NR_fallocate: u32 = 47;
-pub const __NR_faccessat: u32 = 48;
-pub const __NR_chdir: u32 = 49;
-pub const __NR_fchdir: u32 = 50;
-pub const __NR_chroot: u32 = 51;
-pub const __NR_fchmod: u32 = 52;
-pub const __NR_fchmodat: u32 = 53;
-pub const __NR_fchownat: u32 = 54;
-pub const __NR_fchown: u32 = 55;
-pub const __NR_openat: u32 = 56;
-pub const __NR_close: u32 = 57;
-pub const __NR_vhangup: u32 = 58;
-pub const __NR_pipe2: u32 = 59;
-pub const __NR_quotactl: u32 = 60;
-pub const __NR_getdents64: u32 = 61;
-pub const __NR3264_lseek: u32 = 62;
-pub const __NR_read: u32 = 63;
-pub const __NR_write: u32 = 64;
-pub const __NR_readv: u32 = 65;
-pub const __NR_writev: u32 = 66;
-pub const __NR_pread64: u32 = 67;
-pub const __NR_pwrite64: u32 = 68;
-pub const __NR_preadv: u32 = 69;
-pub const __NR_pwritev: u32 = 70;
-pub const __NR3264_sendfile: u32 = 71;
-pub const __NR_pselect6: u32 = 72;
-pub const __NR_ppoll: u32 = 73;
-pub const __NR_signalfd4: u32 = 74;
-pub const __NR_vmsplice: u32 = 75;
-pub const __NR_splice: u32 = 76;
-pub const __NR_tee: u32 = 77;
-pub const __NR_readlinkat: u32 = 78;
-pub const __NR3264_fstatat: u32 = 79;
-pub const __NR3264_fstat: u32 = 80;
-pub const __NR_sync: u32 = 81;
-pub const __NR_fsync: u32 = 82;
-pub const __NR_fdatasync: u32 = 83;
-pub const __NR_sync_file_range: u32 = 84;
-pub const __NR_timerfd_create: u32 = 85;
-pub const __NR_timerfd_settime: u32 = 86;
-pub const __NR_timerfd_gettime: u32 = 87;
-pub const __NR_utimensat: u32 = 88;
-pub const __NR_acct: u32 = 89;
-pub const __NR_capget: u32 = 90;
-pub const __NR_capset: u32 = 91;
-pub const __NR_personality: u32 = 92;
-pub const __NR_exit: u32 = 93;
-pub const __NR_exit_group: u32 = 94;
-pub const __NR_waitid: u32 = 95;
-pub const __NR_set_tid_address: u32 = 96;
-pub const __NR_unshare: u32 = 97;
-pub const __NR_futex: u32 = 98;
-pub const __NR_set_robust_list: u32 = 99;
-pub const __NR_get_robust_list: u32 = 100;
-pub const __NR_nanosleep: u32 = 101;
-pub const __NR_getitimer: u32 = 102;
-pub const __NR_setitimer: u32 = 103;
-pub const __NR_kexec_load: u32 = 104;
-pub const __NR_init_module: u32 = 105;
-pub const __NR_delete_module: u32 = 106;
-pub const __NR_timer_create: u32 = 107;
-pub const __NR_timer_gettime: u32 = 108;
-pub const __NR_timer_getoverrun: u32 = 109;
-pub const __NR_timer_settime: u32 = 110;
-pub const __NR_timer_delete: u32 = 111;
-pub const __NR_clock_settime: u32 = 112;
-pub const __NR_clock_gettime: u32 = 113;
-pub const __NR_clock_getres: u32 = 114;
-pub const __NR_clock_nanosleep: u32 = 115;
-pub const __NR_syslog: u32 = 116;
-pub const __NR_ptrace: u32 = 117;
-pub const __NR_sched_setparam: u32 = 118;
-pub const __NR_sched_setscheduler: u32 = 119;
-pub const __NR_sched_getscheduler: u32 = 120;
-pub const __NR_sched_getparam: u32 = 121;
-pub const __NR_sched_setaffinity: u32 = 122;
-pub const __NR_sched_getaffinity: u32 = 123;
-pub const __NR_sched_yield: u32 = 124;
-pub const __NR_sched_get_priority_max: u32 = 125;
-pub const __NR_sched_get_priority_min: u32 = 126;
-pub const __NR_sched_rr_get_interval: u32 = 127;
-pub const __NR_restart_syscall: u32 = 128;
-pub const __NR_kill: u32 = 129;
-pub const __NR_tkill: u32 = 130;
-pub const __NR_tgkill: u32 = 131;
-pub const __NR_sigaltstack: u32 = 132;
-pub const __NR_rt_sigsuspend: u32 = 133;
-pub const __NR_rt_sigaction: u32 = 134;
-pub const __NR_rt_sigprocmask: u32 = 135;
-pub const __NR_rt_sigpending: u32 = 136;
-pub const __NR_rt_sigtimedwait: u32 = 137;
-pub const __NR_rt_sigqueueinfo: u32 = 138;
-pub const __NR_rt_sigreturn: u32 = 139;
-pub const __NR_setpriority: u32 = 140;
-pub const __NR_getpriority: u32 = 141;
-pub const __NR_reboot: u32 = 142;
-pub const __NR_setregid: u32 = 143;
-pub const __NR_setgid: u32 = 144;
-pub const __NR_setreuid: u32 = 145;
-pub const __NR_setuid: u32 = 146;
-pub const __NR_setresuid: u32 = 147;
-pub const __NR_getresuid: u32 = 148;
-pub const __NR_setresgid: u32 = 149;
-pub const __NR_getresgid: u32 = 150;
-pub const __NR_setfsuid: u32 = 151;
-pub const __NR_setfsgid: u32 = 152;
-pub const __NR_times: u32 = 153;
-pub const __NR_setpgid: u32 = 154;
-pub const __NR_getpgid: u32 = 155;
-pub const __NR_getsid: u32 = 156;
-pub const __NR_setsid: u32 = 157;
-pub const __NR_getgroups: u32 = 158;
-pub const __NR_setgroups: u32 = 159;
-pub const __NR_uname: u32 = 160;
-pub const __NR_sethostname: u32 = 161;
-pub const __NR_setdomainname: u32 = 162;
-pub const __NR_getrlimit: u32 = 163;
-pub const __NR_setrlimit: u32 = 164;
-pub const __NR_getrusage: u32 = 165;
-pub const __NR_umask: u32 = 166;
-pub const __NR_prctl: u32 = 167;
-pub const __NR_getcpu: u32 = 168;
-pub const __NR_gettimeofday: u32 = 169;
-pub const __NR_settimeofday: u32 = 170;
-pub const __NR_adjtimex: u32 = 171;
-pub const __NR_getpid: u32 = 172;
-pub const __NR_getppid: u32 = 173;
-pub const __NR_getuid: u32 = 174;
-pub const __NR_geteuid: u32 = 175;
-pub const __NR_getgid: u32 = 176;
-pub const __NR_getegid: u32 = 177;
-pub const __NR_gettid: u32 = 178;
-pub const __NR_sysinfo: u32 = 179;
-pub const __NR_mq_open: u32 = 180;
-pub const __NR_mq_unlink: u32 = 181;
-pub const __NR_mq_timedsend: u32 = 182;
-pub const __NR_mq_timedreceive: u32 = 183;
-pub const __NR_mq_notify: u32 = 184;
-pub const __NR_mq_getsetattr: u32 = 185;
-pub const __NR_msgget: u32 = 186;
-pub const __NR_msgctl: u32 = 187;
-pub const __NR_msgrcv: u32 = 188;
-pub const __NR_msgsnd: u32 = 189;
-pub const __NR_semget: u32 = 190;
-pub const __NR_semctl: u32 = 191;
-pub const __NR_semtimedop: u32 = 192;
-pub const __NR_semop: u32 = 193;
-pub const __NR_shmget: u32 = 194;
-pub const __NR_shmctl: u32 = 195;
-pub const __NR_shmat: u32 = 196;
-pub const __NR_shmdt: u32 = 197;
-pub const __NR_socket: u32 = 198;
-pub const __NR_socketpair: u32 = 199;
-pub const __NR_bind: u32 = 200;
-pub const __NR_listen: u32 = 201;
-pub const __NR_accept: u32 = 202;
-pub const __NR_connect: u32 = 203;
-pub const __NR_getsockname: u32 = 204;
-pub const __NR_getpeername: u32 = 205;
-pub const __NR_sendto: u32 = 206;
-pub const __NR_recvfrom: u32 = 207;
-pub const __NR_setsockopt: u32 = 208;
-pub const __NR_getsockopt: u32 = 209;
-pub const __NR_shutdown: u32 = 210;
-pub const __NR_sendmsg: u32 = 211;
-pub const __NR_recvmsg: u32 = 212;
-pub const __NR_readahead: u32 = 213;
-pub const __NR_brk: u32 = 214;
-pub const __NR_munmap: u32 = 215;
-pub const __NR_mremap: u32 = 216;
-pub const __NR_add_key: u32 = 217;
-pub const __NR_request_key: u32 = 218;
-pub const __NR_keyctl: u32 = 219;
-pub const __NR_clone: u32 = 220;
-pub const __NR_execve: u32 = 221;
-pub const __NR3264_mmap: u32 = 222;
-pub const __NR3264_fadvise64: u32 = 223;
-pub const __NR_swapon: u32 = 224;
-pub const __NR_swapoff: u32 = 225;
-pub const __NR_mprotect: u32 = 226;
-pub const __NR_msync: u32 = 227;
-pub const __NR_mlock: u32 = 228;
-pub const __NR_munlock: u32 = 229;
-pub const __NR_mlockall: u32 = 230;
-pub const __NR_munlockall: u32 = 231;
-pub const __NR_mincore: u32 = 232;
-pub const __NR_madvise: u32 = 233;
-pub const __NR_remap_file_pages: u32 = 234;
-pub const __NR_mbind: u32 = 235;
-pub const __NR_get_mempolicy: u32 = 236;
-pub const __NR_set_mempolicy: u32 = 237;
-pub const __NR_migrate_pages: u32 = 238;
-pub const __NR_move_pages: u32 = 239;
-pub const __NR_rt_tgsigqueueinfo: u32 = 240;
-pub const __NR_perf_event_open: u32 = 241;
-pub const __NR_accept4: u32 = 242;
-pub const __NR_recvmmsg: u32 = 243;
-pub const __NR_arch_specific_syscall: u32 = 244;
-pub const __NR_wait4: u32 = 260;
-pub const __NR_prlimit64: u32 = 261;
-pub const __NR_fanotify_init: u32 = 262;
-pub const __NR_fanotify_mark: u32 = 263;
-pub const __NR_name_to_handle_at: u32 = 264;
-pub const __NR_open_by_handle_at: u32 = 265;
-pub const __NR_clock_adjtime: u32 = 266;
-pub const __NR_syncfs: u32 = 267;
-pub const __NR_setns: u32 = 268;
-pub const __NR_sendmmsg: u32 = 269;
-pub const __NR_process_vm_readv: u32 = 270;
-pub const __NR_process_vm_writev: u32 = 271;
-pub const __NR_kcmp: u32 = 272;
-pub const __NR_finit_module: u32 = 273;
-pub const __NR_sched_setattr: u32 = 274;
-pub const __NR_sched_getattr: u32 = 275;
-pub const __NR_renameat2: u32 = 276;
-pub const __NR_seccomp: u32 = 277;
-pub const __NR_getrandom: u32 = 278;
-pub const __NR_memfd_create: u32 = 279;
-pub const __NR_bpf: u32 = 280;
-pub const __NR_execveat: u32 = 281;
-pub const __NR_userfaultfd: u32 = 282;
-pub const __NR_membarrier: u32 = 283;
-pub const __NR_mlock2: u32 = 284;
-pub const __NR_copy_file_range: u32 = 285;
-pub const __NR_preadv2: u32 = 286;
-pub const __NR_pwritev2: u32 = 287;
-pub const __NR_pkey_mprotect: u32 = 288;
-pub const __NR_pkey_alloc: u32 = 289;
-pub const __NR_pkey_free: u32 = 290;
-pub const __NR_statx: u32 = 291;
-pub const __NR_io_pgetevents: u32 = 292;
-pub const __NR_rseq: u32 = 293;
-pub const __NR_kexec_file_load: u32 = 294;
-pub const __NR_pidfd_send_signal: u32 = 424;
-pub const __NR_io_uring_setup: u32 = 425;
-pub const __NR_io_uring_enter: u32 = 426;
-pub const __NR_io_uring_register: u32 = 427;
-pub const __NR_open_tree: u32 = 428;
-pub const __NR_move_mount: u32 = 429;
-pub const __NR_fsopen: u32 = 430;
-pub const __NR_fsconfig: u32 = 431;
-pub const __NR_fsmount: u32 = 432;
-pub const __NR_fspick: u32 = 433;
-pub const __NR_pidfd_open: u32 = 434;
-pub const __NR_clone3: u32 = 435;
-pub const __NR_close_range: u32 = 436;
-pub const __NR_openat2: u32 = 437;
-pub const __NR_pidfd_getfd: u32 = 438;
-pub const __NR_faccessat2: u32 = 439;
-pub const __NR_process_madvise: u32 = 440;
-pub const __NR_epoll_pwait2: u32 = 441;
-pub const __NR_mount_setattr: u32 = 442;
-pub const __NR_quotactl_fd: u32 = 443;
-pub const __NR_landlock_create_ruleset: u32 = 444;
-pub const __NR_landlock_add_rule: u32 = 445;
-pub const __NR_landlock_restrict_self: u32 = 446;
-pub const __NR_memfd_secret: u32 = 447;
-pub const __NR_process_mrelease: u32 = 448;
-pub const __NR_futex_waitv: u32 = 449;
-pub const __NR_set_mempolicy_home_node: u32 = 450;
-pub const __NR_syscalls: u32 = 451;
-pub const __NR_fcntl: u32 = 25;
-pub const __NR_statfs: u32 = 43;
-pub const __NR_fstatfs: u32 = 44;
-pub const __NR_truncate: u32 = 45;
-pub const __NR_ftruncate: u32 = 46;
-pub const __NR_lseek: u32 = 62;
-pub const __NR_sendfile: u32 = 71;
-pub const __NR_newfstatat: u32 = 79;
-pub const __NR_fstat: u32 = 80;
-pub const __NR_mmap: u32 = 222;
-pub const __NR_fadvise64: u32 = 223;
-pub const __OLD_UTS_LEN: u32 = 8;
-pub const __NEW_UTS_LEN: u32 = 64;
-pub const WNOHANG: u32 = 1;
-pub const WUNTRACED: u32 = 2;
-pub const WSTOPPED: u32 = 2;
-pub const WEXITED: u32 = 4;
-pub const WCONTINUED: u32 = 8;
-pub const WNOWAIT: u32 = 16777216;
-pub const __WNOTHREAD: u32 = 536870912;
-pub const __WALL: u32 = 1073741824;
-pub const __WCLONE: u32 = 2147483648;
-pub const P_ALL: u32 = 0;
-pub const P_PID: u32 = 1;
-pub const P_PGID: u32 = 2;
-pub const P_PIDFD: u32 = 3;
-pub const XATTR_CREATE: u32 = 1;
-pub const XATTR_REPLACE: u32 = 2;
-pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0";
-pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0";
-pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0";
-pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0";
-pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0";
-pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0";
-pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0";
-pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0";
-pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0";
-pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0";
-pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0";
-pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0";
-pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0";
-pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0";
-pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0";
-pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0";
-pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0";
-pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0";
-pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0";
-pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0";
-pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0";
-pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0";
-pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0";
-pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0";
-pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0";
-pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0";
-pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0";
-pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0";
-pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0";
-pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0";
-pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0";
-pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0";
-pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0";
-pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0";
-pub const MFD_CLOEXEC: u32 = 1;
-pub const MFD_ALLOW_SEALING: u32 = 2;
-pub const MFD_HUGETLB: u32 = 4;
-pub const MFD_HUGE_SHIFT: u32 = 26;
-pub const MFD_HUGE_MASK: u32 = 63;
-pub const MFD_HUGE_64KB: u32 = 1073741824;
-pub const MFD_HUGE_512KB: u32 = 1275068416;
-pub const MFD_HUGE_1MB: u32 = 1342177280;
-pub const MFD_HUGE_2MB: u32 = 1409286144;
-pub const MFD_HUGE_8MB: u32 = 1543503872;
-pub const MFD_HUGE_16MB: u32 = 1610612736;
-pub const MFD_HUGE_32MB: u32 = 1677721600;
-pub const MFD_HUGE_256MB: u32 = 1879048192;
-pub const MFD_HUGE_512MB: u32 = 1946157056;
-pub const MFD_HUGE_1GB: u32 = 2013265920;
-pub const MFD_HUGE_2GB: u32 = 2080374784;
-pub const MFD_HUGE_16GB: u32 = 2281701376;
-pub const TFD_TIMER_ABSTIME: u32 = 1;
-pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2;
-pub const TFD_CLOEXEC: u32 = 524288;
-pub const TFD_NONBLOCK: u32 = 2048;
-pub const USERFAULTFD_IOC: u32 = 170;
-pub const _UFFDIO_REGISTER: u32 = 0;
-pub const _UFFDIO_UNREGISTER: u32 = 1;
-pub const _UFFDIO_WAKE: u32 = 2;
-pub const _UFFDIO_COPY: u32 = 3;
-pub const _UFFDIO_ZEROPAGE: u32 = 4;
-pub const _UFFDIO_WRITEPROTECT: u32 = 6;
-pub const _UFFDIO_CONTINUE: u32 = 7;
-pub const _UFFDIO_API: u32 = 63;
-pub const UFFDIO: u32 = 170;
-pub const UFFD_EVENT_PAGEFAULT: u32 = 18;
-pub const UFFD_EVENT_FORK: u32 = 19;
-pub const UFFD_EVENT_REMAP: u32 = 20;
-pub const UFFD_EVENT_REMOVE: u32 = 21;
-pub const UFFD_EVENT_UNMAP: u32 = 22;
-pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1;
-pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2;
-pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4;
-pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1;
-pub const UFFD_FEATURE_EVENT_FORK: u32 = 2;
-pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4;
-pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8;
-pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16;
-pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32;
-pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64;
-pub const UFFD_FEATURE_SIGBUS: u32 = 128;
-pub const UFFD_FEATURE_THREAD_ID: u32 = 256;
-pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512;
-pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024;
-pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048;
-pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096;
-pub const UFFD_USER_MODE_ONLY: u32 = 1;
-pub const IORING_FILE_INDEX_ALLOC: i32 = -1;
-pub const IORING_SETUP_IOPOLL: u32 = 1;
-pub const IORING_SETUP_SQPOLL: u32 = 2;
-pub const IORING_SETUP_SQ_AFF: u32 = 4;
-pub const IORING_SETUP_CQSIZE: u32 = 8;
-pub const IORING_SETUP_CLAMP: u32 = 16;
-pub const IORING_SETUP_ATTACH_WQ: u32 = 32;
-pub const IORING_SETUP_R_DISABLED: u32 = 64;
-pub const IORING_SETUP_SUBMIT_ALL: u32 = 128;
-pub const IORING_SETUP_COOP_TASKRUN: u32 = 256;
-pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512;
-pub const IORING_SETUP_SQE128: u32 = 1024;
-pub const IORING_SETUP_CQE32: u32 = 2048;
-pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096;
-pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192;
-pub const IORING_URING_CMD_FIXED: u32 = 1;
-pub const IORING_FSYNC_DATASYNC: u32 = 1;
-pub const IORING_TIMEOUT_ABS: u32 = 1;
-pub const IORING_TIMEOUT_UPDATE: u32 = 2;
-pub const IORING_TIMEOUT_BOOTTIME: u32 = 4;
-pub const IORING_TIMEOUT_REALTIME: u32 = 8;
-pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16;
-pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32;
-pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12;
-pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18;
-pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648;
-pub const IORING_POLL_ADD_MULTI: u32 = 1;
-pub const IORING_POLL_UPDATE_EVENTS: u32 = 2;
-pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4;
-pub const IORING_POLL_ADD_LEVEL: u32 = 8;
-pub const IORING_ASYNC_CANCEL_ALL: u32 = 1;
-pub const IORING_ASYNC_CANCEL_FD: u32 = 2;
-pub const IORING_ASYNC_CANCEL_ANY: u32 = 4;
-pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8;
-pub const IORING_RECVSEND_POLL_FIRST: u32 = 1;
-pub const IORING_RECV_MULTISHOT: u32 = 2;
-pub const IORING_RECVSEND_FIXED_BUF: u32 = 4;
-pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8;
-pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648;
-pub const IORING_ACCEPT_MULTISHOT: u32 = 1;
-pub const IORING_MSG_RING_CQE_SKIP: u32 = 1;
-pub const IORING_CQE_F_BUFFER: u32 = 1;
-pub const IORING_CQE_F_MORE: u32 = 2;
-pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4;
-pub const IORING_CQE_F_NOTIF: u32 = 8;
-pub const IORING_OFF_SQ_RING: u32 = 0;
-pub const IORING_OFF_CQ_RING: u32 = 134217728;
-pub const IORING_OFF_SQES: u32 = 268435456;
-pub const IORING_SQ_NEED_WAKEUP: u32 = 1;
-pub const IORING_SQ_CQ_OVERFLOW: u32 = 2;
-pub const IORING_SQ_TASKRUN: u32 = 4;
-pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1;
-pub const IORING_ENTER_GETEVENTS: u32 = 1;
-pub const IORING_ENTER_SQ_WAKEUP: u32 = 2;
-pub const IORING_ENTER_SQ_WAIT: u32 = 4;
-pub const IORING_ENTER_EXT_ARG: u32 = 8;
-pub const IORING_ENTER_REGISTERED_RING: u32 = 16;
-pub const IORING_FEAT_SINGLE_MMAP: u32 = 1;
-pub const IORING_FEAT_NODROP: u32 = 2;
-pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4;
-pub const IORING_FEAT_RW_CUR_POS: u32 = 8;
-pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16;
-pub const IORING_FEAT_FAST_POLL: u32 = 32;
-pub const IORING_FEAT_POLL_32BITS: u32 = 64;
-pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128;
-pub const IORING_FEAT_EXT_ARG: u32 = 256;
-pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512;
-pub const IORING_FEAT_RSRC_TAGS: u32 = 1024;
-pub const IORING_FEAT_CQE_SKIP: u32 = 2048;
-pub const IORING_FEAT_LINKED_FILE: u32 = 4096;
-pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1;
-pub const IORING_REGISTER_FILES_SKIP: i32 = -2;
-pub const IO_URING_OP_SUPPORTED: u32 = 1;
-pub const DT_UNKNOWN: u32 = 0;
-pub const DT_FIFO: u32 = 1;
-pub const DT_CHR: u32 = 2;
-pub const DT_DIR: u32 = 4;
-pub const DT_BLK: u32 = 6;
-pub const DT_REG: u32 = 8;
-pub const DT_LNK: u32 = 10;
-pub const DT_SOCK: u32 = 12;
-pub const SHUT_RD: u32 = 0;
-pub const SHUT_WR: u32 = 1;
-pub const SHUT_RDWR: u32 = 2;
-pub const STAT_HAVE_NSEC: u32 = 1;
-pub const SOCK_STREAM: u32 = 1;
-pub const SOCK_DGRAM: u32 = 2;
-pub const SOCK_RAW: u32 = 3;
-pub const SOCK_RDM: u32 = 4;
-pub const SOCK_SEQPACKET: u32 = 5;
-pub const F_OK: u32 = 0;
-pub const R_OK: u32 = 4;
-pub const W_OK: u32 = 2;
-pub const X_OK: u32 = 1;
-pub const UTIME_NOW: u32 = 1073741823;
-pub const UTIME_OMIT: u32 = 1073741822;
-pub const MSG_DONTWAIT: u32 = 64;
-pub const AF_UNSPEC: u32 = 0;
-pub const AF_UNIX: u32 = 1;
-pub const AF_INET: u32 = 2;
-pub const AF_AX25: u32 = 3;
-pub const AF_IPX: u32 = 4;
-pub const AF_APPLETALK: u32 = 5;
-pub const AF_NETROM: u32 = 6;
-pub const AF_BRIDGE: u32 = 7;
-pub const AF_ATMPVC: u32 = 8;
-pub const AF_X25: u32 = 9;
-pub const AF_INET6: u32 = 10;
-pub const AF_ROSE: u32 = 11;
-pub const AF_DECnet: u32 = 12;
-pub const AF_NETBEUI: u32 = 13;
-pub const AF_SECURITY: u32 = 14;
-pub const AF_KEY: u32 = 15;
-pub const AF_NETLINK: u32 = 16;
-pub const AF_PACKET: u32 = 17;
-pub const AF_ASH: u32 = 18;
-pub const AF_ECONET: u32 = 19;
-pub const AF_ATMSVC: u32 = 20;
-pub const AF_RDS: u32 = 21;
-pub const AF_SNA: u32 = 22;
-pub const AF_IRDA: u32 = 23;
-pub const AF_PPPOX: u32 = 24;
-pub const AF_WANPIPE: u32 = 25;
-pub const AF_LLC: u32 = 26;
-pub const AF_CAN: u32 = 29;
-pub const AF_TIPC: u32 = 30;
-pub const AF_BLUETOOTH: u32 = 31;
-pub const AF_IUCV: u32 = 32;
-pub const AF_RXRPC: u32 = 33;
-pub const AF_ISDN: u32 = 34;
-pub const AF_PHONET: u32 = 35;
-pub const AF_IEEE802154: u32 = 36;
-pub const AF_MAX: u32 = 37;
-pub const MSG_OOB: u32 = 1;
-pub const MSG_PEEK: u32 = 2;
-pub const MSG_DONTROUTE: u32 = 4;
-pub const MSG_CTRUNC: u32 = 8;
-pub const MSG_PROBE: u32 = 16;
-pub const MSG_TRUNC: u32 = 32;
-pub const MSG_EOR: u32 = 128;
-pub const MSG_WAITALL: u32 = 256;
-pub const MSG_FIN: u32 = 512;
-pub const MSG_SYN: u32 = 1024;
-pub const MSG_CONFIRM: u32 = 2048;
-pub const MSG_RST: u32 = 4096;
-pub const MSG_ERRQUEUE: u32 = 8192;
-pub const MSG_NOSIGNAL: u32 = 16384;
-pub const MSG_MORE: u32 = 32768;
-pub const MSG_CMSG_CLOEXEC: u32 = 1073741824;
-pub const STDIN_FILENO: u32 = 0;
-pub const STDOUT_FILENO: u32 = 1;
-pub const STDERR_FILENO: u32 = 2;
-pub const RWF_HIPRI: u32 = 1;
-pub const RWF_DSYNC: u32 = 2;
-pub const RWF_SYNC: u32 = 4;
-pub const RWF_NOWAIT: u32 = 8;
-pub const RWF_APPEND: u32 = 16;
-pub const EFD_SEMAPHORE: u32 = 1;
-pub const EFD_CLOEXEC: u32 = 524288;
-pub const EFD_NONBLOCK: u32 = 2048;
-pub const EPOLLIN: u32 = 1;
-pub const EPOLLPRI: u32 = 2;
-pub const EPOLLOUT: u32 = 4;
-pub const EPOLLERR: u32 = 8;
-pub const EPOLLHUP: u32 = 16;
-pub const EPOLLNVAL: u32 = 32;
-pub const EPOLLRDNORM: u32 = 64;
-pub const EPOLLRDBAND: u32 = 128;
-pub const EPOLLWRNORM: u32 = 256;
-pub const EPOLLWRBAND: u32 = 512;
-pub const EPOLLMSG: u32 = 1024;
-pub const EPOLLRDHUP: u32 = 8192;
-pub const EPOLLEXCLUSIVE: u32 = 268435456;
-pub const EPOLLWAKEUP: u32 = 536870912;
-pub const EPOLLONESHOT: u32 = 1073741824;
-pub const EPOLLET: u32 = 2147483648;
-pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336;
-pub const TFD_CREATE_FLAGS: u32 = 526336;
-pub const TFD_SETTIME_FLAGS: u32 = 1;
-pub const SCM_RIGHTS: u32 = 1;
-pub const SCM_CREDENTIALS: u32 = 2;
-pub const SCM_SECURITY: u32 = 3;
-pub const UFFD_API: u32 = 170;
-pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1;
-pub const UFFDIO_REGISTER_MODE_WP: u32 = 2;
-pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4;
-pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1;
-pub const UFFDIO_COPY_MODE_WP: u32 = 2;
-pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1;
-pub const SPLICE_F_MOVE: u32 = 1;
-pub const SPLICE_F_NONBLOCK: u32 = 2;
-pub const SPLICE_F_MORE: u32 = 4;
-pub const SPLICE_F_GIFT: u32 = 8;
-pub const MNT_FORCE: u32 = 1;
-pub const MNT_DETACH: u32 = 2;
-pub const MNT_EXPIRE: u32 = 4;
-pub const UMOUNT_NOFOLLOW: u32 = 8;
-pub const UMOUNT_UNUSED: u32 = 2147483648;
-pub type size_t = crate::ctypes::c_ulong;
-pub type ssize_t = crate::ctypes::c_long;
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 16usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_old_uid_t = crate::ctypes::c_ushort;
-pub type __kernel_old_gid_t = crate::ctypes::c_ushort;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_dev_t = crate::ctypes::c_uint;
-pub type __kernel_size_t = __kernel_ulong_t;
-pub type __kernel_ssize_t = __kernel_long_t;
-pub type __kernel_ptrdiff_t = __kernel_long_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_header_struct {
-pub version: __u32,
-pub pid: crate::ctypes::c_int,
-}
-pub type cap_user_header_t = *mut __user_cap_header_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_data_struct {
-pub effective: __u32,
-pub permitted: __u32,
-pub inheritable: __u32,
-}
-pub type cap_user_data_t = *mut __user_cap_data_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_cap_data__bindgen_ty_1; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize],
-pub rootid: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct f_owner_ex {
-pub type_: crate::ctypes::c_int,
-pub pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_off_t,
-pub l_len: __kernel_off_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock64 {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_loff_t,
-pub l_len: __kernel_loff_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct open_how {
-pub flags: __u64,
-pub mode: __u64,
-pub resolve: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct epoll_event {
-pub events: __poll_t,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v1 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub master_key_descriptor: [__u8; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_key {
-pub mode: __u32,
-pub raw: [__u8; 64usize],
-pub size: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v2 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub __reserved: [__u8; 4usize],
-pub master_key_identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_policy_ex_arg {
-pub policy_size: __u64,
-pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 {
-pub version: __u8,
-pub v1: fscrypt_policy_v1,
-pub v2: fscrypt_policy_v2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_key_specifier {
-pub type_: __u32,
-pub __reserved: __u32,
-pub u: fscrypt_key_specifier__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_key_specifier__bindgen_ty_1 {
-pub __reserved: [__u8; 32usize],
-pub descriptor: [__u8; 8usize],
-pub identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct fscrypt_provisioning_key_payload {
-pub type_: __u32,
-pub __reserved: __u32,
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-pub struct fscrypt_add_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub raw_size: __u32,
-pub key_id: __u32,
-pub __reserved: [__u32; 8usize],
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_remove_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub removal_status_flags: __u32,
-pub __reserved: [__u32; 5usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_key_status_arg {
-pub key_spec: fscrypt_key_specifier,
-pub __reserved: [__u32; 6usize],
-pub status: __u32,
-pub status_flags: __u32,
-pub user_count: __u32,
-pub __out_reserved: [__u32; 13usize],
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum fsconfig_command {
-FSCONFIG_SET_FLAG = 0,
-FSCONFIG_SET_STRING = 1,
-FSCONFIG_SET_BINARY = 2,
-FSCONFIG_SET_PATH = 3,
-FSCONFIG_SET_PATH_EMPTY = 4,
-FSCONFIG_SET_FD = 5,
-FSCONFIG_CMD_CREATE = 6,
-FSCONFIG_CMD_RECONFIGURE = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mount_attr {
-pub attr_set: __u64,
-pub attr_clr: __u64,
-pub propagation: __u64,
-pub userns_fd: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_clone_range {
-pub src_fd: __s64,
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_offset: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fstrim_range {
-pub start: __u64,
-pub len: __u64,
-pub minlen: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_dedupe_range_info {
-pub dest_fd: __s64,
-pub dest_offset: __u64,
-pub bytes_deduped: __u64,
-pub status: __s32,
-pub reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct file_dedupe_range {
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_count: __u16,
-pub reserved1: __u16,
-pub reserved2: __u32,
-pub info: __IncompleteArrayField<file_dedupe_range_info>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct files_stat_struct {
-pub nr_files: crate::ctypes::c_ulong,
-pub nr_free_files: crate::ctypes::c_ulong,
-pub max_files: crate::ctypes::c_ulong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct inodes_stat_t {
-pub nr_inodes: crate::ctypes::c_long,
-pub nr_unused: crate::ctypes::c_long,
-pub dummy: [crate::ctypes::c_long; 5usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fsxattr {
-pub fsx_xflags: __u32,
-pub fsx_extsize: __u32,
-pub fsx_nextents: __u32,
-pub fsx_projid: __u32,
-pub fsx_cowextsize: __u32,
-pub fsx_pad: [crate::ctypes::c_uchar; 8usize],
-}
-pub type __kernel_rwf_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct futex_waitv {
-pub val: __u64,
-pub uaddr: __u64,
-pub flags: __u32,
-pub __reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list {
-pub next: *mut robust_list,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list_head {
-pub list: robust_list,
-pub futex_offset: crate::ctypes::c_long,
-pub list_op_pending: *mut robust_list,
-}
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP;
-pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP;
-pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP;
-pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP;
-pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP;
-pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP;
-pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP;
-pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP;
-pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP;
-pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP;
-pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP;
-pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6;
-pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP;
-pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE;
-pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP;
-pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH;
-pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP;
-pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH;
-pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP;
-pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM;
-pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP;
-pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP;
-pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP;
-pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE;
-pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS;
-pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET;
-pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW;
-pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP;
-pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-IPPROTO_IP = 0,
-IPPROTO_ICMP = 1,
-IPPROTO_IGMP = 2,
-IPPROTO_IPIP = 4,
-IPPROTO_TCP = 6,
-IPPROTO_EGP = 8,
-IPPROTO_PUP = 12,
-IPPROTO_UDP = 17,
-IPPROTO_IDP = 22,
-IPPROTO_TP = 29,
-IPPROTO_DCCP = 33,
-IPPROTO_IPV6 = 41,
-IPPROTO_RSVP = 46,
-IPPROTO_GRE = 47,
-IPPROTO_ESP = 50,
-IPPROTO_AH = 51,
-IPPROTO_MTP = 92,
-IPPROTO_BEETPH = 94,
-IPPROTO_ENCAP = 98,
-IPPROTO_PIM = 103,
-IPPROTO_COMP = 108,
-IPPROTO_L2TP = 115,
-IPPROTO_SCTP = 132,
-IPPROTO_UDPLITE = 136,
-IPPROTO_MPLS = 137,
-IPPROTO_ETHERNET = 143,
-IPPROTO_RAW = 255,
-IPPROTO_MPTCP = 262,
-IPPROTO_MAX = 263,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_addr {
-pub s_addr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq {
-pub imr_multiaddr: in_addr,
-pub imr_interface: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreqn {
-pub imr_multiaddr: in_addr,
-pub imr_address: in_addr,
-pub imr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq_source {
-pub imr_multiaddr: __be32,
-pub imr_interface: __be32,
-pub imr_sourceaddr: __be32,
-}
-#[repr(C)]
-pub struct ip_msfilter {
-pub imsf_multiaddr: __be32,
-pub imsf_interface: __be32,
-pub imsf_fmode: __u32,
-pub imsf_numsrc: __u32,
-pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct ip_msfilter__bindgen_ty_1 {
-pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>,
-pub __bindgen_anon_1: __BindgenUnionField<ip_msfilter__bindgen_ty_1__bindgen_ty_1>,
-pub bindgen_union_field: u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 {
-pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-pub imsf_slist_flex: __IncompleteArrayField<__be32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_req {
-pub gr_interface: __u32,
-pub gr_group: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_source_req {
-pub gsr_interface: __u32,
-pub gsr_group: __kernel_sockaddr_storage,
-pub gsr_source: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-pub struct group_filter {
-pub __bindgen_anon_1: group_filter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_1>,
-pub __bindgen_anon_2: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_2>,
-pub bindgen_union_field: [u64; 34usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_1 {
-pub gf_interface_aux: __u32,
-pub gf_group_aux: __kernel_sockaddr_storage,
-pub gf_fmode_aux: __u32,
-pub gf_numsrc_aux: __u32,
-pub gf_slist: [__kernel_sockaddr_storage; 1usize],
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_2 {
-pub gf_interface: __u32,
-pub gf_group: __kernel_sockaddr_storage,
-pub gf_fmode: __u32,
-pub gf_numsrc: __u32,
-pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_pktinfo {
-pub ipi_ifindex: crate::ctypes::c_int,
-pub ipi_spec_dst: in_addr,
-pub ipi_addr: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_in {
-pub sin_family: __kernel_sa_family_t,
-pub sin_port: __be16,
-pub sin_addr: in_addr,
-pub __pad: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct inotify_event {
-pub wd: __s32,
-pub mask: __u32,
-pub cookie: __u32,
-pub len: __u32,
-pub name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct iphdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub tos: __u8,
-pub tot_len: __be16,
-pub id: __be16,
-pub frag_off: __be16,
-pub ttl: __u8,
-pub protocol: __u8,
-pub check: __sum16,
-pub __bindgen_anon_1: iphdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union iphdr__bindgen_ty_1 {
-pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-impl iphdr {
-#[inline]
-pub fn ihl(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_ihl(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let ihl: u8 = unsafe { ::core::mem::transmute(ihl) };
-ihl as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_auth_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub reserved: __be16,
-pub spi: __be32,
-pub seq_no: __be32,
-pub auth_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_esp_hdr {
-pub spi: __be32,
-pub seq_no: __be32,
-pub enc_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_comp_hdr {
-pub nexthdr: __u8,
-pub flags: __u8,
-pub cpi: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_beet_phdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub padlen: __u8,
-pub reserved: __u8,
-}
-pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING;
-pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING;
-pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP;
-pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS;
-pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS;
-pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS;
-pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA;
-pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER;
-pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY;
-pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS;
-pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG;
-pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER;
-pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID;
-pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM;
-pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY;
-pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION;
-pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE;
-pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE;
-pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES;
-pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT;
-pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY;
-pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL;
-pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK;
-pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN;
-pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET;
-pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP;
-pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING;
-pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER;
-pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IPV4_DEVCONF_FORWARDING = 1,
-IPV4_DEVCONF_MC_FORWARDING = 2,
-IPV4_DEVCONF_PROXY_ARP = 3,
-IPV4_DEVCONF_ACCEPT_REDIRECTS = 4,
-IPV4_DEVCONF_SECURE_REDIRECTS = 5,
-IPV4_DEVCONF_SEND_REDIRECTS = 6,
-IPV4_DEVCONF_SHARED_MEDIA = 7,
-IPV4_DEVCONF_RP_FILTER = 8,
-IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9,
-IPV4_DEVCONF_BOOTP_RELAY = 10,
-IPV4_DEVCONF_LOG_MARTIANS = 11,
-IPV4_DEVCONF_TAG = 12,
-IPV4_DEVCONF_ARPFILTER = 13,
-IPV4_DEVCONF_MEDIUM_ID = 14,
-IPV4_DEVCONF_NOXFRM = 15,
-IPV4_DEVCONF_NOPOLICY = 16,
-IPV4_DEVCONF_FORCE_IGMP_VERSION = 17,
-IPV4_DEVCONF_ARP_ANNOUNCE = 18,
-IPV4_DEVCONF_ARP_IGNORE = 19,
-IPV4_DEVCONF_PROMOTE_SECONDARIES = 20,
-IPV4_DEVCONF_ARP_ACCEPT = 21,
-IPV4_DEVCONF_ARP_NOTIFY = 22,
-IPV4_DEVCONF_ACCEPT_LOCAL = 23,
-IPV4_DEVCONF_SRC_VMARK = 24,
-IPV4_DEVCONF_PROXY_ARP_PVLAN = 25,
-IPV4_DEVCONF_ROUTE_LOCALNET = 26,
-IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27,
-IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28,
-IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29,
-IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30,
-IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31,
-IPV4_DEVCONF_BC_FORWARDING = 32,
-IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33,
-__IPV4_DEVCONF_MAX = 34,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_addr {
-pub in6_u: in6_addr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union in6_addr__bindgen_ty_1 {
-pub u6_addr8: [__u8; 16usize],
-pub u6_addr16: [__be16; 8usize],
-pub u6_addr32: [__be32; 4usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr_in6 {
-pub sin6_family: crate::ctypes::c_ushort,
-pub sin6_port: __be16,
-pub sin6_flowinfo: __be32,
-pub sin6_addr: in6_addr,
-pub sin6_scope_id: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6_mreq {
-pub ipv6mr_multiaddr: in6_addr,
-pub ipv6mr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_flowlabel_req {
-pub flr_dst: in6_addr,
-pub flr_label: __be32,
-pub flr_action: __u8,
-pub flr_share: __u8,
-pub flr_flags: __u16,
-pub flr_expires: __u16,
-pub flr_linger: __u16,
-pub __flr_pad: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_pktinfo {
-pub ipi6_addr: in6_addr,
-pub ipi6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ip6_mtuinfo {
-pub ip6m_addr: sockaddr_in6,
-pub ip6m_mtu: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_ifreq {
-pub ifr6_addr: in6_addr,
-pub ifr6_prefixlen: __u32,
-pub ifr6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_rt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub type_: __u8,
-pub segments_left: __u8,
-}
-#[repr(C, packed)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_opt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-}
-#[repr(C)]
-pub struct rt0_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: __IncompleteArrayField<in6_addr>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rt2_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: in6_addr,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct ipv6_destopt_hao {
-pub type_: __u8,
-pub length: __u8,
-pub addr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub flow_lbl: [__u8; 3usize],
-pub payload_len: __be16,
-pub nexthdr: __u8,
-pub hop_limit: __u8,
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union ipv6hdr__bindgen_ty_1 {
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-impl ipv6hdr {
-#[inline]
-pub fn priority(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_priority(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let priority: u8 = unsafe { ::core::mem::transmute(priority) };
-priority as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING;
-pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT;
-pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6;
-pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA;
-pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS;
-pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF;
-pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS;
-pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS;
-pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL;
-pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY;
-pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR;
-pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT;
-pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT;
-pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY;
-pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR;
-pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES;
-pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION;
-pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR;
-pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO;
-pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF;
-pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN;
-pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP;
-pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD;
-pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING;
-pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6;
-pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD;
-pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO;
-pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY;
-pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC;
-pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL;
-pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC;
-pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU;
-pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET;
-pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY;
-pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT;
-pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA;
-pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN;
-pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL;
-pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED;
-pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC;
-pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD;
-pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE;
-pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN;
-pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS;
-pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED;
-pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC;
-pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED;
-pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID;
-pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE;
-pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER;
-pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA;
-pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-DEVCONF_FORWARDING = 0,
-DEVCONF_HOPLIMIT = 1,
-DEVCONF_MTU6 = 2,
-DEVCONF_ACCEPT_RA = 3,
-DEVCONF_ACCEPT_REDIRECTS = 4,
-DEVCONF_AUTOCONF = 5,
-DEVCONF_DAD_TRANSMITS = 6,
-DEVCONF_RTR_SOLICITS = 7,
-DEVCONF_RTR_SOLICIT_INTERVAL = 8,
-DEVCONF_RTR_SOLICIT_DELAY = 9,
-DEVCONF_USE_TEMPADDR = 10,
-DEVCONF_TEMP_VALID_LFT = 11,
-DEVCONF_TEMP_PREFERED_LFT = 12,
-DEVCONF_REGEN_MAX_RETRY = 13,
-DEVCONF_MAX_DESYNC_FACTOR = 14,
-DEVCONF_MAX_ADDRESSES = 15,
-DEVCONF_FORCE_MLD_VERSION = 16,
-DEVCONF_ACCEPT_RA_DEFRTR = 17,
-DEVCONF_ACCEPT_RA_PINFO = 18,
-DEVCONF_ACCEPT_RA_RTR_PREF = 19,
-DEVCONF_RTR_PROBE_INTERVAL = 20,
-DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21,
-DEVCONF_PROXY_NDP = 22,
-DEVCONF_OPTIMISTIC_DAD = 23,
-DEVCONF_ACCEPT_SOURCE_ROUTE = 24,
-DEVCONF_MC_FORWARDING = 25,
-DEVCONF_DISABLE_IPV6 = 26,
-DEVCONF_ACCEPT_DAD = 27,
-DEVCONF_FORCE_TLLAO = 28,
-DEVCONF_NDISC_NOTIFY = 29,
-DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30,
-DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31,
-DEVCONF_SUPPRESS_FRAG_NDISC = 32,
-DEVCONF_ACCEPT_RA_FROM_LOCAL = 33,
-DEVCONF_USE_OPTIMISTIC = 34,
-DEVCONF_ACCEPT_RA_MTU = 35,
-DEVCONF_STABLE_SECRET = 36,
-DEVCONF_USE_OIF_ADDRS_ONLY = 37,
-DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38,
-DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39,
-DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40,
-DEVCONF_DROP_UNSOLICITED_NA = 41,
-DEVCONF_KEEP_ADDR_ON_DOWN = 42,
-DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43,
-DEVCONF_SEG6_ENABLED = 44,
-DEVCONF_SEG6_REQUIRE_HMAC = 45,
-DEVCONF_ENHANCED_DAD = 46,
-DEVCONF_ADDR_GEN_MODE = 47,
-DEVCONF_DISABLE_POLICY = 48,
-DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49,
-DEVCONF_NDISC_TCLASS = 50,
-DEVCONF_RPL_SEG_ENABLED = 51,
-DEVCONF_RA_DEFRTR_METRIC = 52,
-DEVCONF_IOAM6_ENABLED = 53,
-DEVCONF_IOAM6_ID = 54,
-DEVCONF_IOAM6_ID_WIDE = 55,
-DEVCONF_NDISC_EVICT_NOCARRIER = 56,
-DEVCONF_ACCEPT_UNTRACKED_NA = 57,
-DEVCONF_MAX = 58,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum socket_state {
-SS_FREE = 0,
-SS_UNCONNECTED = 1,
-SS_CONNECTING = 2,
-SS_CONNECTED = 3,
-SS_DISCONNECTING = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct pollfd {
-pub fd: crate::ctypes::c_int,
-pub events: crate::ctypes::c_short,
-pub revents: crate::ctypes::c_short,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prctl_mm_map {
-pub start_code: __u64,
-pub end_code: __u64,
-pub start_data: __u64,
-pub end_data: __u64,
-pub start_brk: __u64,
-pub brk: __u64,
-pub start_stack: __u64,
-pub arg_start: __u64,
-pub arg_end: __u64,
-pub env_start: __u64,
-pub env_end: __u64,
-pub auxv: *mut __u64,
-pub auxv_size: __u32,
-pub exe_fd: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rand_pool_info {
-pub entropy_count: crate::ctypes::c_int,
-pub buf_size: crate::ctypes::c_int,
-pub buf: __IncompleteArrayField<__u32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_timespec {
-pub tv_sec: __kernel_time64_t,
-pub tv_nsec: crate::ctypes::c_longlong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_itimerspec {
-pub it_interval: __kernel_timespec,
-pub it_value: __kernel_timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timeval {
-pub tv_sec: __kernel_long_t,
-pub tv_usec: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_itimerval {
-pub it_interval: __kernel_old_timeval,
-pub it_value: __kernel_old_timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sock_timeval {
-pub tv_sec: __s64,
-pub tv_usec: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timeval {
-pub tv_sec: __kernel_old_time_t,
-pub tv_usec: __kernel_suseconds_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerspec {
-pub it_interval: timespec,
-pub it_value: timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerval {
-pub it_interval: timeval,
-pub it_value: timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timezone {
-pub tz_minuteswest: crate::ctypes::c_int,
-pub tz_dsttime: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rusage {
-pub ru_utime: __kernel_old_timeval,
-pub ru_stime: __kernel_old_timeval,
-pub ru_maxrss: __kernel_long_t,
-pub ru_ixrss: __kernel_long_t,
-pub ru_idrss: __kernel_long_t,
-pub ru_isrss: __kernel_long_t,
-pub ru_minflt: __kernel_long_t,
-pub ru_majflt: __kernel_long_t,
-pub ru_nswap: __kernel_long_t,
-pub ru_inblock: __kernel_long_t,
-pub ru_oublock: __kernel_long_t,
-pub ru_msgsnd: __kernel_long_t,
-pub ru_msgrcv: __kernel_long_t,
-pub ru_nsignals: __kernel_long_t,
-pub ru_nvcsw: __kernel_long_t,
-pub ru_nivcsw: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit {
-pub rlim_cur: __kernel_ulong_t,
-pub rlim_max: __kernel_ulong_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit64 {
-pub rlim_cur: __u64,
-pub rlim_max: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct clone_args {
-pub flags: __u64,
-pub pidfd: __u64,
-pub child_tid: __u64,
-pub parent_tid: __u64,
-pub exit_signal: __u64,
-pub stack: __u64,
-pub stack_size: __u64,
-pub tls: __u64,
-pub set_tid: __u64,
-pub set_tid_size: __u64,
-pub cgroup: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigset_t {
-pub sig: [crate::ctypes::c_ulong; 1usize],
-}
-pub type old_sigset_t = crate::ctypes::c_ulong;
-pub type __signalfn_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __sighandler_t = __signalfn_t;
-pub type __restorefn_t = ::core::option::Option<unsafe extern "C" fn()>;
-pub type __sigrestore_t = __restorefn_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaction {
-pub sa_handler: __sighandler_t,
-pub sa_flags: crate::ctypes::c_ulong,
-pub sa_restorer: __sigrestore_t,
-pub sa_mask: sigset_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaltstack {
-pub ss_sp: *mut crate::ctypes::c_void,
-pub ss_flags: crate::ctypes::c_int,
-pub ss_size: __kernel_size_t,
-}
-pub type stack_t = sigaltstack;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigval {
-pub sival_int: crate::ctypes::c_int,
-pub sival_ptr: *mut crate::ctypes::c_void,
-}
-pub type sigval_t = sigval;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields {
-pub _kill: __sifields__bindgen_ty_1,
-pub _timer: __sifields__bindgen_ty_2,
-pub _rt: __sifields__bindgen_ty_3,
-pub _sigchld: __sifields__bindgen_ty_4,
-pub _sigfault: __sifields__bindgen_ty_5,
-pub _sigpoll: __sifields__bindgen_ty_6,
-pub _sigsys: __sifields__bindgen_ty_7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_1 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_2 {
-pub _tid: __kernel_timer_t,
-pub _overrun: crate::ctypes::c_int,
-pub _sigval: sigval_t,
-pub _sys_private: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_3 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _sigval: sigval_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_4 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _status: crate::ctypes::c_int,
-pub _utime: __kernel_clock_t,
-pub _stime: __kernel_clock_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_5 {
-pub _addr: *mut crate::ctypes::c_void,
-pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields__bindgen_ty_5__bindgen_ty_1 {
-pub _trapno: crate::ctypes::c_int,
-pub _addr_lsb: crate::ctypes::c_short,
-pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1,
-pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2,
-pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {
-pub _dummy_bnd: [crate::ctypes::c_char; 8usize],
-pub _lower: *mut crate::ctypes::c_void,
-pub _upper: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 {
-pub _dummy_pkey: [crate::ctypes::c_char; 8usize],
-pub _pkey: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 {
-pub _data: crate::ctypes::c_ulong,
-pub _type: __u32,
-pub _flags: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_6 {
-pub _band: crate::ctypes::c_long,
-pub _fd: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_7 {
-pub _call_addr: *mut crate::ctypes::c_void,
-pub _syscall: crate::ctypes::c_int,
-pub _arch: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union siginfo__bindgen_ty_1 {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1,
-pub _si_pad: [crate::ctypes::c_int; 32usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo__bindgen_ty_1__bindgen_ty_1 {
-pub si_signo: crate::ctypes::c_int,
-pub si_errno: crate::ctypes::c_int,
-pub si_code: crate::ctypes::c_int,
-pub _sifields: __sifields,
-}
-pub type siginfo_t = siginfo;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sigevent {
-pub sigev_value: sigval_t,
-pub sigev_signo: crate::ctypes::c_int,
-pub sigev_notify: crate::ctypes::c_int,
-pub _sigev_un: sigevent__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigevent__bindgen_ty_1 {
-pub _pad: [crate::ctypes::c_int; 12usize],
-pub _tid: crate::ctypes::c_int,
-pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigevent__bindgen_ty_1__bindgen_ty_1 {
-pub _function: ::core::option::Option<unsafe extern "C" fn(arg1: sigval_t)>,
-pub _attribute: *mut crate::ctypes::c_void,
-}
-pub type sigevent_t = sigevent;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx_timestamp {
-pub tv_sec: __s64,
-pub tv_nsec: __u32,
-pub __reserved: __s32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx {
-pub stx_mask: __u32,
-pub stx_blksize: __u32,
-pub stx_attributes: __u64,
-pub stx_nlink: __u32,
-pub stx_uid: __u32,
-pub stx_gid: __u32,
-pub stx_mode: __u16,
-pub __spare0: [__u16; 1usize],
-pub stx_ino: __u64,
-pub stx_size: __u64,
-pub stx_blocks: __u64,
-pub stx_attributes_mask: __u64,
-pub stx_atime: statx_timestamp,
-pub stx_btime: statx_timestamp,
-pub stx_ctime: statx_timestamp,
-pub stx_mtime: statx_timestamp,
-pub stx_rdev_major: __u32,
-pub stx_rdev_minor: __u32,
-pub stx_dev_major: __u32,
-pub stx_dev_minor: __u32,
-pub stx_mnt_id: __u64,
-pub stx_dio_mem_align: __u32,
-pub stx_dio_offset_align: __u32,
-pub __spare3: [__u64; 12usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct sysinfo {
-pub uptime: __kernel_long_t,
-pub loads: [__kernel_ulong_t; 3usize],
-pub totalram: __kernel_ulong_t,
-pub freeram: __kernel_ulong_t,
-pub sharedram: __kernel_ulong_t,
-pub bufferram: __kernel_ulong_t,
-pub totalswap: __kernel_ulong_t,
-pub freeswap: __kernel_ulong_t,
-pub procs: __u16,
-pub pad: __u16,
-pub totalhigh: __kernel_ulong_t,
-pub freehigh: __kernel_ulong_t,
-pub mem_unit: __u32,
-pub _f: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcphdr {
-pub source: __be16,
-pub dest: __be16,
-pub seq: __be32,
-pub ack_seq: __be32,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub window: __be16,
-pub check: __sum16,
-pub urg_ptr: __be16,
-}
-impl tcphdr {
-#[inline]
-pub fn res1(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_res1(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn doff(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_doff(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn fin(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_fin(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn syn(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_syn(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn rst(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_rst(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(10usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn psh(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_psh(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(11usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ack(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ack(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(12usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn urg(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_urg(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(13usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ece(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ece(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(14usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn cwr(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_cwr(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(15usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let res1: u16 = unsafe { ::core::mem::transmute(res1) };
-res1 as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let doff: u16 = unsafe { ::core::mem::transmute(doff) };
-doff as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let fin: u16 = unsafe { ::core::mem::transmute(fin) };
-fin as u64
-});
-__bindgen_bitfield_unit.set(9usize, 1u8, {
-let syn: u16 = unsafe { ::core::mem::transmute(syn) };
-syn as u64
-});
-__bindgen_bitfield_unit.set(10usize, 1u8, {
-let rst: u16 = unsafe { ::core::mem::transmute(rst) };
-rst as u64
-});
-__bindgen_bitfield_unit.set(11usize, 1u8, {
-let psh: u16 = unsafe { ::core::mem::transmute(psh) };
-psh as u64
-});
-__bindgen_bitfield_unit.set(12usize, 1u8, {
-let ack: u16 = unsafe { ::core::mem::transmute(ack) };
-ack as u64
-});
-__bindgen_bitfield_unit.set(13usize, 1u8, {
-let urg: u16 = unsafe { ::core::mem::transmute(urg) };
-urg as u64
-});
-__bindgen_bitfield_unit.set(14usize, 1u8, {
-let ece: u16 = unsafe { ::core::mem::transmute(ece) };
-ece as u64
-});
-__bindgen_bitfield_unit.set(15usize, 1u8, {
-let cwr: u16 = unsafe { ::core::mem::transmute(cwr) };
-cwr as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union tcp_word_hdr {
-pub hdr: tcphdr,
-pub words: [__be32; 5usize],
-}
-pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR;
-pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE;
-pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG;
-pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK;
-pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH;
-pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST;
-pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN;
-pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN;
-pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS;
-pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-TCP_FLAG_CWR = 32768,
-TCP_FLAG_ECE = 16384,
-TCP_FLAG_URG = 8192,
-TCP_FLAG_ACK = 4096,
-TCP_FLAG_PSH = 2048,
-TCP_FLAG_RST = 1024,
-TCP_FLAG_SYN = 512,
-TCP_FLAG_FIN = 256,
-TCP_RESERVED_BITS = 15,
-TCP_DATA_OFFSET = 240,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_opt {
-pub opt_code: __u32,
-pub opt_val: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_window {
-pub snd_wl1: __u32,
-pub snd_wnd: __u32,
-pub max_window: __u32,
-pub rcv_wnd: __u32,
-pub rcv_wup: __u32,
-}
-pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE;
-pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE;
-pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE;
-pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-TCP_NO_QUEUE = 0,
-TCP_RECV_QUEUE = 1,
-TCP_SEND_QUEUE = 2,
-TCP_QUEUES_NR = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_fastopen_client_fail {
-TFO_STATUS_UNSPEC = 0,
-TFO_COOKIE_UNAVAILABLE = 1,
-TFO_DATA_NOT_ACKED = 2,
-TFO_SYN_RETRANSMITTED = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_ca_state {
-TCP_CA_Open = 0,
-TCP_CA_Disorder = 1,
-TCP_CA_CWR = 2,
-TCP_CA_Recovery = 3,
-TCP_CA_Loss = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_info {
-pub tcpi_state: __u8,
-pub tcpi_ca_state: __u8,
-pub tcpi_retransmits: __u8,
-pub tcpi_probes: __u8,
-pub tcpi_backoff: __u8,
-pub tcpi_options: __u8,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub tcpi_rto: __u32,
-pub tcpi_ato: __u32,
-pub tcpi_snd_mss: __u32,
-pub tcpi_rcv_mss: __u32,
-pub tcpi_unacked: __u32,
-pub tcpi_sacked: __u32,
-pub tcpi_lost: __u32,
-pub tcpi_retrans: __u32,
-pub tcpi_fackets: __u32,
-pub tcpi_last_data_sent: __u32,
-pub tcpi_last_ack_sent: __u32,
-pub tcpi_last_data_recv: __u32,
-pub tcpi_last_ack_recv: __u32,
-pub tcpi_pmtu: __u32,
-pub tcpi_rcv_ssthresh: __u32,
-pub tcpi_rtt: __u32,
-pub tcpi_rttvar: __u32,
-pub tcpi_snd_ssthresh: __u32,
-pub tcpi_snd_cwnd: __u32,
-pub tcpi_advmss: __u32,
-pub tcpi_reordering: __u32,
-pub tcpi_rcv_rtt: __u32,
-pub tcpi_rcv_space: __u32,
-pub tcpi_total_retrans: __u32,
-pub tcpi_pacing_rate: __u64,
-pub tcpi_max_pacing_rate: __u64,
-pub tcpi_bytes_acked: __u64,
-pub tcpi_bytes_received: __u64,
-pub tcpi_segs_out: __u32,
-pub tcpi_segs_in: __u32,
-pub tcpi_notsent_bytes: __u32,
-pub tcpi_min_rtt: __u32,
-pub tcpi_data_segs_in: __u32,
-pub tcpi_data_segs_out: __u32,
-pub tcpi_delivery_rate: __u64,
-pub tcpi_busy_time: __u64,
-pub tcpi_rwnd_limited: __u64,
-pub tcpi_sndbuf_limited: __u64,
-pub tcpi_delivered: __u32,
-pub tcpi_delivered_ce: __u32,
-pub tcpi_bytes_sent: __u64,
-pub tcpi_bytes_retrans: __u64,
-pub tcpi_dsack_dups: __u32,
-pub tcpi_reord_seen: __u32,
-pub tcpi_rcv_ooopack: __u32,
-pub tcpi_snd_wnd: __u32,
-pub tcpi_rcv_wnd: __u32,
-pub tcpi_rehash: __u32,
-}
-impl tcp_info {
-#[inline]
-pub fn tcpi_snd_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_snd_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_rcv_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_fastopen_client_fail(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) };
-tcpi_snd_wscale as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) };
-tcpi_rcv_wscale as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) };
-tcpi_delivery_rate_app_limited as u64
-});
-__bindgen_bitfield_unit.set(9usize, 2u8, {
-let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) };
-tcpi_fastopen_client_fail as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD;
-pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY;
-pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED;
-pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED;
-pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT;
-pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS;
-pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE;
-pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE;
-pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND;
-pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING;
-pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT;
-pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS;
-pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT;
-pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE;
-pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE;
-pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH;
-pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED;
-pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE;
-pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT;
-pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS;
-pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS;
-pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN;
-pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT;
-pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH;
-pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT;
-pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
-pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
-pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-TCP_NLA_PAD = 0,
-TCP_NLA_BUSY = 1,
-TCP_NLA_RWND_LIMITED = 2,
-TCP_NLA_SNDBUF_LIMITED = 3,
-TCP_NLA_DATA_SEGS_OUT = 4,
-TCP_NLA_TOTAL_RETRANS = 5,
-TCP_NLA_PACING_RATE = 6,
-TCP_NLA_DELIVERY_RATE = 7,
-TCP_NLA_SND_CWND = 8,
-TCP_NLA_REORDERING = 9,
-TCP_NLA_MIN_RTT = 10,
-TCP_NLA_RECUR_RETRANS = 11,
-TCP_NLA_DELIVERY_RATE_APP_LMT = 12,
-TCP_NLA_SNDQ_SIZE = 13,
-TCP_NLA_CA_STATE = 14,
-TCP_NLA_SND_SSTHRESH = 15,
-TCP_NLA_DELIVERED = 16,
-TCP_NLA_DELIVERED_CE = 17,
-TCP_NLA_BYTES_SENT = 18,
-TCP_NLA_BYTES_RETRANS = 19,
-TCP_NLA_DSACK_DUPS = 20,
-TCP_NLA_REORD_SEEN = 21,
-TCP_NLA_SRTT = 22,
-TCP_NLA_TIMEOUT_REHASH = 23,
-TCP_NLA_BYTES_NOTSENT = 24,
-TCP_NLA_EDT = 25,
-TCP_NLA_TTL = 26,
-TCP_NLA_REHASH = 27,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct tcp_md5sig {
-pub tcpm_addr: __kernel_sockaddr_storage,
-pub tcpm_flags: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_ifindex: crate::ctypes::c_int,
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_diag_md5sig {
-pub tcpm_family: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_addr: [__be32; 4usize],
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_zerocopy_receive {
-pub address: __u64,
-pub length: __u32,
-pub recv_skip_hint: __u32,
-pub inq: __u32,
-pub err: __s32,
-pub copybuf_address: __u64,
-pub copybuf_len: __s32,
-pub flags: __u32,
-pub msg_control: __u64,
-pub msg_controllen: __u64,
-pub msg_flags: __u32,
-pub reserved: __u32,
-}
-pub type cc_t = crate::ctypes::c_uchar;
-pub type speed_t = crate::ctypes::c_uint;
-pub type tcflag_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios2 {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ktermios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct winsize {
-pub ws_row: crate::ctypes::c_ushort,
-pub ws_col: crate::ctypes::c_ushort,
-pub ws_xpixel: crate::ctypes::c_ushort,
-pub ws_ypixel: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termio {
-pub c_iflag: crate::ctypes::c_ushort,
-pub c_oflag: crate::ctypes::c_ushort,
-pub c_cflag: crate::ctypes::c_ushort,
-pub c_lflag: crate::ctypes::c_ushort,
-pub c_line: crate::ctypes::c_uchar,
-pub c_cc: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iovec {
-pub iov_base: *mut crate::ctypes::c_void,
-pub iov_len: __kernel_size_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_un {
-pub sun_family: __kernel_sa_family_t,
-pub sun_path: [crate::ctypes::c_char; 108usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct oldold_utsname {
-pub sysname: [crate::ctypes::c_char; 9usize],
-pub nodename: [crate::ctypes::c_char; 9usize],
-pub release: [crate::ctypes::c_char; 9usize],
-pub version: [crate::ctypes::c_char; 9usize],
-pub machine: [crate::ctypes::c_char; 9usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct old_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct new_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-pub domainname: [crate::ctypes::c_char; 65usize],
-}
-impl membarrier_cmd {
-pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd {
-MEMBARRIER_CMD_QUERY = 0,
-MEMBARRIER_CMD_GLOBAL = 1,
-MEMBARRIER_CMD_GLOBAL_EXPEDITED = 2,
-MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = 4,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED = 8,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = 16,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = 32,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = 64,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = 128,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = 256,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd_flag {
-MEMBARRIER_CMD_FLAG_CPU = 1,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg {
-pub event: __u8,
-pub reserved1: __u8,
-pub reserved2: __u16,
-pub reserved3: __u32,
-pub arg: uffd_msg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1 {
-pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1,
-pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2,
-pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3,
-pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4,
-pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 {
-pub flags: __u64,
-pub address: __u64,
-pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {
-pub ptid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 {
-pub ufd: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 {
-pub from: __u64,
-pub to: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 {
-pub start: __u64,
-pub end: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 {
-pub reserved1: __u64,
-pub reserved2: __u64,
-pub reserved3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_api {
-pub api: __u64,
-pub features: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_range {
-pub start: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_register {
-pub range: uffdio_range,
-pub mode: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_copy {
-pub dst: __u64,
-pub src: __u64,
-pub len: __u64,
-pub mode: __u64,
-pub copy: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_zeropage {
-pub range: uffdio_range,
-pub mode: __u64,
-pub zeropage: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_writeprotect {
-pub range: uffdio_range,
-pub mode: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_continue {
-pub range: uffdio_range,
-pub mode: __u64,
-pub mapped: __s64,
-}
-#[repr(C)]
-pub struct io_uring_sqe {
-pub opcode: __u8,
-pub flags: __u8,
-pub ioprio: __u16,
-pub fd: __s32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1,
-pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2,
-pub len: __u32,
-pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3,
-pub user_data: __u64,
-pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4,
-pub personality: __u16,
-pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5,
-pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_1 {
-pub off: __u64,
-pub addr2: __u64,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 {
-pub cmd_op: __u32,
-pub __pad1: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_2 {
-pub addr: __u64,
-pub splice_off_in: __u64,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_3 {
-pub rw_flags: __kernel_rwf_t,
-pub fsync_flags: __u32,
-pub poll_events: __u16,
-pub poll32_events: __u32,
-pub sync_range_flags: __u32,
-pub msg_flags: __u32,
-pub timeout_flags: __u32,
-pub accept_flags: __u32,
-pub cancel_flags: __u32,
-pub open_flags: __u32,
-pub statx_flags: __u32,
-pub fadvise_advice: __u32,
-pub splice_flags: __u32,
-pub rename_flags: __u32,
-pub unlink_flags: __u32,
-pub hardlink_flags: __u32,
-pub xattr_flags: __u32,
-pub msg_ring_flags: __u32,
-pub uring_cmd_flags: __u32,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_4 {
-pub buf_index: __u16,
-pub buf_group: __u16,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_5 {
-pub splice_fd_in: __s32,
-pub file_index: __u32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 {
-pub addr_len: __u16,
-pub __pad3: [__u16; 1usize],
-}
-#[repr(C)]
-pub struct io_uring_sqe__bindgen_ty_6 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_sqe__bindgen_ty_6__bindgen_ty_1>,
-pub cmd: __BindgenUnionField<[__u8; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 {
-pub addr3: __u64,
-pub __pad2: [__u64; 1usize],
-}
-pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT;
-pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT;
-pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT;
-pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT;
-pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT;
-pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT;
-pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-IOSQE_FIXED_FILE_BIT = 0,
-IOSQE_IO_DRAIN_BIT = 1,
-IOSQE_IO_LINK_BIT = 2,
-IOSQE_IO_HARDLINK_BIT = 3,
-IOSQE_ASYNC_BIT = 4,
-IOSQE_BUFFER_SELECT_BIT = 5,
-IOSQE_CQE_SKIP_SUCCESS_BIT = 6,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum io_uring_op {
-IORING_OP_NOP = 0,
-IORING_OP_READV = 1,
-IORING_OP_WRITEV = 2,
-IORING_OP_FSYNC = 3,
-IORING_OP_READ_FIXED = 4,
-IORING_OP_WRITE_FIXED = 5,
-IORING_OP_POLL_ADD = 6,
-IORING_OP_POLL_REMOVE = 7,
-IORING_OP_SYNC_FILE_RANGE = 8,
-IORING_OP_SENDMSG = 9,
-IORING_OP_RECVMSG = 10,
-IORING_OP_TIMEOUT = 11,
-IORING_OP_TIMEOUT_REMOVE = 12,
-IORING_OP_ACCEPT = 13,
-IORING_OP_ASYNC_CANCEL = 14,
-IORING_OP_LINK_TIMEOUT = 15,
-IORING_OP_CONNECT = 16,
-IORING_OP_FALLOCATE = 17,
-IORING_OP_OPENAT = 18,
-IORING_OP_CLOSE = 19,
-IORING_OP_FILES_UPDATE = 20,
-IORING_OP_STATX = 21,
-IORING_OP_READ = 22,
-IORING_OP_WRITE = 23,
-IORING_OP_FADVISE = 24,
-IORING_OP_MADVISE = 25,
-IORING_OP_SEND = 26,
-IORING_OP_RECV = 27,
-IORING_OP_OPENAT2 = 28,
-IORING_OP_EPOLL_CTL = 29,
-IORING_OP_SPLICE = 30,
-IORING_OP_PROVIDE_BUFFERS = 31,
-IORING_OP_REMOVE_BUFFERS = 32,
-IORING_OP_TEE = 33,
-IORING_OP_SHUTDOWN = 34,
-IORING_OP_RENAMEAT = 35,
-IORING_OP_UNLINKAT = 36,
-IORING_OP_MKDIRAT = 37,
-IORING_OP_SYMLINKAT = 38,
-IORING_OP_LINKAT = 39,
-IORING_OP_MSG_RING = 40,
-IORING_OP_FSETXATTR = 41,
-IORING_OP_SETXATTR = 42,
-IORING_OP_FGETXATTR = 43,
-IORING_OP_GETXATTR = 44,
-IORING_OP_SOCKET = 45,
-IORING_OP_URING_CMD = 46,
-IORING_OP_SEND_ZC = 47,
-IORING_OP_SENDMSG_ZC = 48,
-IORING_OP_LAST = 49,
-}
-pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA;
-pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IORING_MSG_DATA = 0,
-IORING_MSG_SEND_FD = 1,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_cqe {
-pub user_data: __u64,
-pub res: __s32,
-pub flags: __u32,
-pub big_cqe: __IncompleteArrayField<__u64>,
-}
-pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IORING_CQE_BUFFER_SHIFT = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_sqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub flags: __u32,
-pub dropped: __u32,
-pub array: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_cqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub overflow: __u32,
-pub cqes: __u32,
-pub flags: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_params {
-pub sq_entries: __u32,
-pub cq_entries: __u32,
-pub flags: __u32,
-pub sq_thread_cpu: __u32,
-pub sq_thread_idle: __u32,
-pub features: __u32,
-pub wq_fd: __u32,
-pub resv: [__u32; 3usize],
-pub sq_off: io_sqring_offsets,
-pub cq_off: io_cqring_offsets,
-}
-pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS;
-pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS;
-pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES;
-pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES;
-pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD;
-pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD;
-pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE;
-pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC;
-pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE;
-pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY;
-pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY;
-pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS;
-pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS;
-pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2;
-pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2;
-pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2;
-pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE;
-pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF;
-pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF;
-pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS;
-pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS;
-pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS;
-pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING;
-pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING;
-pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL;
-pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE;
-pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IORING_REGISTER_BUFFERS = 0,
-IORING_UNREGISTER_BUFFERS = 1,
-IORING_REGISTER_FILES = 2,
-IORING_UNREGISTER_FILES = 3,
-IORING_REGISTER_EVENTFD = 4,
-IORING_UNREGISTER_EVENTFD = 5,
-IORING_REGISTER_FILES_UPDATE = 6,
-IORING_REGISTER_EVENTFD_ASYNC = 7,
-IORING_REGISTER_PROBE = 8,
-IORING_REGISTER_PERSONALITY = 9,
-IORING_UNREGISTER_PERSONALITY = 10,
-IORING_REGISTER_RESTRICTIONS = 11,
-IORING_REGISTER_ENABLE_RINGS = 12,
-IORING_REGISTER_FILES2 = 13,
-IORING_REGISTER_FILES_UPDATE2 = 14,
-IORING_REGISTER_BUFFERS2 = 15,
-IORING_REGISTER_BUFFERS_UPDATE = 16,
-IORING_REGISTER_IOWQ_AFF = 17,
-IORING_UNREGISTER_IOWQ_AFF = 18,
-IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
-IORING_REGISTER_RING_FDS = 20,
-IORING_UNREGISTER_RING_FDS = 21,
-IORING_REGISTER_PBUF_RING = 22,
-IORING_UNREGISTER_PBUF_RING = 23,
-IORING_REGISTER_SYNC_CANCEL = 24,
-IORING_REGISTER_FILE_ALLOC_RANGE = 25,
-IORING_REGISTER_LAST = 26,
-}
-pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND;
-pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IO_WQ_BOUND = 0,
-IO_WQ_UNBOUND = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_files_update {
-pub offset: __u32,
-pub resv: __u32,
-pub fds: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_register {
-pub nr: __u32,
-pub flags: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub tags: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update2 {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-pub tags: __u64,
-pub nr: __u32,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_slot {
-pub tag: __u64,
-pub resv: [__u64; 3usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_register {
-pub nr_slots: __u32,
-pub resv: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub resv3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_probe_op {
-pub op: __u8,
-pub resv: __u8,
-pub flags: __u16,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_probe {
-pub last_op: __u8,
-pub ops_len: __u8,
-pub resv: __u16,
-pub resv2: [__u32; 3usize],
-pub ops: __IncompleteArrayField<io_uring_probe_op>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct io_uring_restriction {
-pub opcode: __u16,
-pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1,
-pub resv: __u8,
-pub resv2: [__u32; 3usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_restriction__bindgen_ty_1 {
-pub register_op: __u8,
-pub sqe_op: __u8,
-pub sqe_flags: __u8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf {
-pub addr: __u64,
-pub len: __u32,
-pub bid: __u16,
-pub resv: __u16,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring {
-pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1>,
-pub bufs: __BindgenUnionField<[io_uring_buf; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 {
-pub resv1: __u64,
-pub resv2: __u32,
-pub resv3: __u16,
-pub tail: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_reg {
-pub ring_addr: __u64,
-pub ring_entries: __u32,
-pub bgid: __u16,
-pub pad: __u16,
-pub resv: [__u64; 3usize],
-}
-pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP;
-pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP;
-pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED;
-pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED;
-pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IORING_RESTRICTION_REGISTER_OP = 0,
-IORING_RESTRICTION_SQE_OP = 1,
-IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2,
-IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3,
-IORING_RESTRICTION_LAST = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_getevents_arg {
-pub sigmask: __u64,
-pub sigmask_sz: __u32,
-pub pad: __u32,
-pub ts: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sync_cancel_reg {
-pub addr: __u64,
-pub fd: __s32,
-pub flags: __u32,
-pub timeout: __kernel_timespec,
-pub pad: [__u64; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_file_index_range {
-pub off: __u32,
-pub len: __u32,
-pub resv: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_recvmsg_out {
-pub namelen: __u32,
-pub controllen: __u32,
-pub payloadlen: __u32,
-pub flags: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr {
-pub __storage: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct linger {
-pub l_onoff: crate::ctypes::c_int,
-pub l_linger: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct linux_dirent64 {
-pub d_ino: crate::ctypes::c_ulong,
-pub d_off: crate::ctypes::c_long,
-pub d_reclen: __u16,
-pub d_type: __u8,
-pub d_name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-pub type socklen_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct stat {
-pub st_dev: crate::ctypes::c_ulong,
-pub st_ino: crate::ctypes::c_ulong,
-pub st_mode: crate::ctypes::c_uint,
-pub st_nlink: crate::ctypes::c_uint,
-pub st_uid: crate::ctypes::c_uint,
-pub st_gid: crate::ctypes::c_uint,
-pub st_rdev: crate::ctypes::c_ulong,
-pub __pad1: crate::ctypes::c_ulong,
-pub st_size: crate::ctypes::c_long,
-pub st_blksize: crate::ctypes::c_int,
-pub __pad2: crate::ctypes::c_int,
-pub st_blocks: crate::ctypes::c_long,
-pub st_atime: crate::ctypes::c_long,
-pub st_atime_nsec: crate::ctypes::c_ulong,
-pub st_mtime: crate::ctypes::c_long,
-pub st_mtime_nsec: crate::ctypes::c_ulong,
-pub st_ctime: crate::ctypes::c_long,
-pub st_ctime_nsec: crate::ctypes::c_ulong,
-pub __unused4: crate::ctypes::c_uint,
-pub __unused5: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs {
-pub f_type: __kernel_long_t,
-pub f_bsize: __kernel_long_t,
-pub f_blocks: __kernel_long_t,
-pub f_bfree: __kernel_long_t,
-pub f_bavail: __kernel_long_t,
-pub f_files: __kernel_long_t,
-pub f_ffree: __kernel_long_t,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __kernel_long_t,
-pub f_frsize: __kernel_long_t,
-pub f_flags: __kernel_long_t,
-pub f_spare: [__kernel_long_t; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs64 {
-pub f_type: __kernel_long_t,
-pub f_bsize: __kernel_long_t,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __kernel_long_t,
-pub f_frsize: __kernel_long_t,
-pub f_flags: __kernel_long_t,
-pub f_spare: [__kernel_long_t; 4usize],
-}
-#[repr(C, packed(4))]
-#[derive(Debug, Copy, Clone)]
-pub struct compat_statfs64 {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-pub type __fsword_t = __kernel_long_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct user_desc {
-pub entry_number: crate::ctypes::c_uint,
-pub base_addr: crate::ctypes::c_uint,
-pub limit: crate::ctypes::c_uint,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub __bindgen_padding_0: [u8; 3usize],
-}
-impl user_desc {
-#[inline]
-pub fn seg_32bit(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_32bit(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn contents(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 2u8) as u32) }
-}
-#[inline]
-pub fn set_contents(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(1usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn read_exec_only(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_read_exec_only(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(3usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn limit_in_pages(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_limit_in_pages(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn seg_not_present(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_not_present(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(5usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn useable(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_useable(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(6usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(seg_32bit: crate::ctypes::c_uint, contents: crate::ctypes::c_uint, read_exec_only: crate::ctypes::c_uint, limit_in_pages: crate::ctypes::c_uint, seg_not_present: crate::ctypes::c_uint, useable: crate::ctypes::c_uint) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 1u8, {
-let seg_32bit: u32 = unsafe { ::core::mem::transmute(seg_32bit) };
-seg_32bit as u64
-});
-__bindgen_bitfield_unit.set(1usize, 2u8, {
-let contents: u32 = unsafe { ::core::mem::transmute(contents) };
-contents as u64
-});
-__bindgen_bitfield_unit.set(3usize, 1u8, {
-let read_exec_only: u32 = unsafe { ::core::mem::transmute(read_exec_only) };
-read_exec_only as u64
-});
-__bindgen_bitfield_unit.set(4usize, 1u8, {
-let limit_in_pages: u32 = unsafe { ::core::mem::transmute(limit_in_pages) };
-limit_in_pages as u64
-});
-__bindgen_bitfield_unit.set(5usize, 1u8, {
-let seg_not_present: u32 = unsafe { ::core::mem::transmute(seg_not_present) };
-seg_not_present as u64
-});
-__bindgen_bitfield_unit.set(6usize, 1u8, {
-let useable: u32 = unsafe { ::core::mem::transmute(useable) };
-useable as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct msghdr {
-pub msg_name: *mut crate::ctypes::c_void,
-pub msg_namelen: crate::ctypes::c_int,
-pub msg_iov: *mut iovec,
-pub msg_iovlen: size_t,
-pub msg_control: *mut crate::ctypes::c_void,
-pub msg_controllen: size_t,
-pub msg_flags: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct cmsghdr {
-pub cmsg_len: size_t,
-pub cmsg_level: crate::ctypes::c_int,
-pub cmsg_type: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ucred {
-pub pid: __u32,
-pub uid: __u32,
-pub gid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mmsghdr {
-pub msg_hdr: msghdr,
-pub msg_len: crate::ctypes::c_uint,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/aarch64/ioctl.rs b/vendor/linux-raw-sys-0.3.2/src/aarch64/ioctl.rs
deleted file mode 100644
index 5004cefa9..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/aarch64/ioctl.rs
+++ /dev/null
@@ -1,1570 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const FIONREAD: u32 = 21531;
-pub const FIONBIO: u32 = 21537;
-pub const FIOCLEX: u32 = 21585;
-pub const FIONCLEX: u32 = 21584;
-pub const FIOASYNC: u32 = 21586;
-pub const FIOQSIZE: u32 = 21600;
-pub const TCXONC: u32 = 21514;
-pub const TCFLSH: u32 = 21515;
-pub const TIOCSCTTY: u32 = 21518;
-pub const TIOCSPGRP: u32 = 21520;
-pub const TIOCOUTQ: u32 = 21521;
-pub const TIOCSTI: u32 = 21522;
-pub const TIOCSWINSZ: u32 = 21524;
-pub const TIOCMGET: u32 = 21525;
-pub const TIOCMBIS: u32 = 21526;
-pub const TIOCMBIC: u32 = 21527;
-pub const TIOCMSET: u32 = 21528;
-pub const TIOCSSOFTCAR: u32 = 21530;
-pub const TIOCLINUX: u32 = 21532;
-pub const TIOCCONS: u32 = 21533;
-pub const TIOCSSERIAL: u32 = 21535;
-pub const TIOCPKT: u32 = 21536;
-pub const TIOCNOTTY: u32 = 21538;
-pub const TIOCSETD: u32 = 21539;
-pub const TIOCSBRK: u32 = 21543;
-pub const TIOCCBRK: u32 = 21544;
-pub const TIOCSRS485: u32 = 21551;
-pub const TIOCSPTLCK: u32 = 1074025521;
-pub const TIOCSIG: u32 = 1074025526;
-pub const TIOCVHANGUP: u32 = 21559;
-pub const TIOCSERCONFIG: u32 = 21587;
-pub const TIOCSERGWILD: u32 = 21588;
-pub const TIOCSERSWILD: u32 = 21589;
-pub const TIOCSLCKTRMIOS: u32 = 21591;
-pub const TIOCSERGSTRUCT: u32 = 21592;
-pub const TIOCSERGETLSR: u32 = 21593;
-pub const TIOCSERGETMULTI: u32 = 21594;
-pub const TIOCSERSETMULTI: u32 = 21595;
-pub const TIOCMIWAIT: u32 = 21596;
-pub const TCGETS: u32 = 21505;
-pub const TCGETA: u32 = 21509;
-pub const TCSBRK: u32 = 21513;
-pub const TCSBRKP: u32 = 21541;
-pub const TCSETA: u32 = 21510;
-pub const TCSETAF: u32 = 21512;
-pub const TCSETAW: u32 = 21511;
-pub const TIOCEXCL: u32 = 21516;
-pub const TIOCNXCL: u32 = 21517;
-pub const TIOCGDEV: u32 = 2147767346;
-pub const TIOCGEXCL: u32 = 2147767360;
-pub const TIOCGICOUNT: u32 = 21597;
-pub const TIOCGLCKTRMIOS: u32 = 21590;
-pub const TIOCGPGRP: u32 = 21519;
-pub const TIOCGPKT: u32 = 2147767352;
-pub const TIOCGPTLCK: u32 = 2147767353;
-pub const TIOCGPTN: u32 = 2147767344;
-pub const TIOCGPTPEER: u32 = 21569;
-pub const TIOCGRS485: u32 = 21550;
-pub const TIOCGSERIAL: u32 = 21534;
-pub const TIOCGSID: u32 = 21545;
-pub const TIOCGSOFTCAR: u32 = 21529;
-pub const TIOCGWINSZ: u32 = 21523;
-pub const TCGETS2: u32 = 2150388778;
-pub const TCGETX: u32 = 21554;
-pub const TCSETS: u32 = 21506;
-pub const TCSETS2: u32 = 1076646955;
-pub const TCSETSF: u32 = 21508;
-pub const TCSETSF2: u32 = 1076646957;
-pub const TCSETSW: u32 = 21507;
-pub const TCSETSW2: u32 = 1076646956;
-pub const TCSETX: u32 = 21555;
-pub const TCSETXF: u32 = 21556;
-pub const TCSETXW: u32 = 21557;
-pub const TIOCGETD: u32 = 21540;
-pub const MTIOCGET: u32 = 2150657282;
-pub const BLKSSZGET: u32 = 4712;
-pub const BLKPBSZGET: u32 = 4731;
-pub const BLKROSET: u32 = 4701;
-pub const BLKROGET: u32 = 4702;
-pub const BLKRRPART: u32 = 4703;
-pub const BLKGETSIZE: u32 = 4704;
-pub const BLKFLSBUF: u32 = 4705;
-pub const BLKRASET: u32 = 4706;
-pub const BLKRAGET: u32 = 4707;
-pub const BLKFRASET: u32 = 4708;
-pub const BLKFRAGET: u32 = 4709;
-pub const BLKSECTSET: u32 = 4710;
-pub const BLKSECTGET: u32 = 4711;
-pub const BLKPG: u32 = 4713;
-pub const BLKBSZGET: u32 = 2148012656;
-pub const BLKBSZSET: u32 = 1074270833;
-pub const BLKGETSIZE64: u32 = 2148012658;
-pub const BLKTRACESETUP: u32 = 3225948787;
-pub const BLKTRACESTART: u32 = 4724;
-pub const BLKTRACESTOP: u32 = 4725;
-pub const BLKTRACETEARDOWN: u32 = 4726;
-pub const BLKDISCARD: u32 = 4727;
-pub const BLKIOMIN: u32 = 4728;
-pub const BLKIOOPT: u32 = 4729;
-pub const BLKALIGNOFF: u32 = 4730;
-pub const BLKDISCARDZEROES: u32 = 4732;
-pub const BLKSECDISCARD: u32 = 4733;
-pub const BLKROTATIONAL: u32 = 4734;
-pub const BLKZEROOUT: u32 = 4735;
-pub const UFFDIO_REGISTER: u32 = 3223366144;
-pub const UFFDIO_UNREGISTER: u32 = 2148575745;
-pub const UFFDIO_WAKE: u32 = 2148575746;
-pub const UFFDIO_COPY: u32 = 3223890435;
-pub const UFFDIO_ZEROPAGE: u32 = 3223366148;
-pub const UFFDIO_WRITEPROTECT: u32 = 3222841862;
-pub const UFFDIO_API: u32 = 3222841919;
-pub const NS_GET_USERNS: u32 = 46849;
-pub const NS_GET_PARENT: u32 = 46850;
-pub const NS_GET_NSTYPE: u32 = 46851;
-pub const KDGETLED: u32 = 19249;
-pub const KDSETLED: u32 = 19250;
-pub const KDGKBLED: u32 = 19300;
-pub const KDSKBLED: u32 = 19301;
-pub const KDGKBTYPE: u32 = 19251;
-pub const KDADDIO: u32 = 19252;
-pub const KDDELIO: u32 = 19253;
-pub const KDENABIO: u32 = 19254;
-pub const KDDISABIO: u32 = 19255;
-pub const KDSETMODE: u32 = 19258;
-pub const KDGETMODE: u32 = 19259;
-pub const KDMKTONE: u32 = 19248;
-pub const KIOCSOUND: u32 = 19247;
-pub const GIO_CMAP: u32 = 19312;
-pub const PIO_CMAP: u32 = 19313;
-pub const GIO_FONT: u32 = 19296;
-pub const GIO_FONTX: u32 = 19307;
-pub const PIO_FONT: u32 = 19297;
-pub const PIO_FONTX: u32 = 19308;
-pub const PIO_FONTRESET: u32 = 19309;
-pub const GIO_SCRNMAP: u32 = 19264;
-pub const GIO_UNISCRNMAP: u32 = 19305;
-pub const PIO_SCRNMAP: u32 = 19265;
-pub const PIO_UNISCRNMAP: u32 = 19306;
-pub const GIO_UNIMAP: u32 = 19302;
-pub const PIO_UNIMAP: u32 = 19303;
-pub const PIO_UNIMAPCLR: u32 = 19304;
-pub const KDGKBMODE: u32 = 19268;
-pub const KDSKBMODE: u32 = 19269;
-pub const KDGKBMETA: u32 = 19298;
-pub const KDSKBMETA: u32 = 19299;
-pub const KDGKBENT: u32 = 19270;
-pub const KDSKBENT: u32 = 19271;
-pub const KDGKBSENT: u32 = 19272;
-pub const KDSKBSENT: u32 = 19273;
-pub const KDGKBDIACR: u32 = 19274;
-pub const KDGETKEYCODE: u32 = 19276;
-pub const KDSETKEYCODE: u32 = 19277;
-pub const KDSIGACCEPT: u32 = 19278;
-pub const VT_OPENQRY: u32 = 22016;
-pub const VT_GETMODE: u32 = 22017;
-pub const VT_SETMODE: u32 = 22018;
-pub const VT_GETSTATE: u32 = 22019;
-pub const VT_RELDISP: u32 = 22021;
-pub const VT_ACTIVATE: u32 = 22022;
-pub const VT_WAITACTIVE: u32 = 22023;
-pub const VT_DISALLOCATE: u32 = 22024;
-pub const VT_RESIZE: u32 = 22025;
-pub const VT_RESIZEX: u32 = 22026;
-pub const FIOSETOWN: u32 = 35073;
-pub const SIOCSPGRP: u32 = 35074;
-pub const FIOGETOWN: u32 = 35075;
-pub const SIOCGPGRP: u32 = 35076;
-pub const SIOCATMARK: u32 = 35077;
-pub const SIOCGSTAMP: u32 = 35078;
-pub const TIOCINQ: u32 = 21531;
-pub const SIOCADDRT: u32 = 35083;
-pub const SIOCDELRT: u32 = 35084;
-pub const SIOCGIFNAME: u32 = 35088;
-pub const SIOCSIFLINK: u32 = 35089;
-pub const SIOCGIFCONF: u32 = 35090;
-pub const SIOCGIFFLAGS: u32 = 35091;
-pub const SIOCSIFFLAGS: u32 = 35092;
-pub const SIOCGIFADDR: u32 = 35093;
-pub const SIOCSIFADDR: u32 = 35094;
-pub const SIOCGIFDSTADDR: u32 = 35095;
-pub const SIOCSIFDSTADDR: u32 = 35096;
-pub const SIOCGIFBRDADDR: u32 = 35097;
-pub const SIOCSIFBRDADDR: u32 = 35098;
-pub const SIOCGIFNETMASK: u32 = 35099;
-pub const SIOCSIFNETMASK: u32 = 35100;
-pub const SIOCGIFMETRIC: u32 = 35101;
-pub const SIOCSIFMETRIC: u32 = 35102;
-pub const SIOCGIFMEM: u32 = 35103;
-pub const SIOCSIFMEM: u32 = 35104;
-pub const SIOCGIFMTU: u32 = 35105;
-pub const SIOCSIFMTU: u32 = 35106;
-pub const SIOCSIFHWADDR: u32 = 35108;
-pub const SIOCGIFENCAP: u32 = 35109;
-pub const SIOCSIFENCAP: u32 = 35110;
-pub const SIOCGIFHWADDR: u32 = 35111;
-pub const SIOCGIFSLAVE: u32 = 35113;
-pub const SIOCSIFSLAVE: u32 = 35120;
-pub const SIOCADDMULTI: u32 = 35121;
-pub const SIOCDELMULTI: u32 = 35122;
-pub const SIOCDARP: u32 = 35155;
-pub const SIOCGARP: u32 = 35156;
-pub const SIOCSARP: u32 = 35157;
-pub const SIOCDRARP: u32 = 35168;
-pub const SIOCGRARP: u32 = 35169;
-pub const SIOCSRARP: u32 = 35170;
-pub const SIOCGIFMAP: u32 = 35184;
-pub const SIOCSIFMAP: u32 = 35185;
-pub const SIOCRTMSG: u32 = 35085;
-pub const SIOCSIFNAME: u32 = 35107;
-pub const SIOCGIFINDEX: u32 = 35123;
-pub const SIOGIFINDEX: u32 = 35123;
-pub const SIOCSIFPFLAGS: u32 = 35124;
-pub const SIOCGIFPFLAGS: u32 = 35125;
-pub const SIOCDIFADDR: u32 = 35126;
-pub const SIOCSIFHWBROADCAST: u32 = 35127;
-pub const SIOCGIFCOUNT: u32 = 35128;
-pub const SIOCGIFBR: u32 = 35136;
-pub const SIOCSIFBR: u32 = 35137;
-pub const SIOCGIFTXQLEN: u32 = 35138;
-pub const SIOCSIFTXQLEN: u32 = 35139;
-pub const SIOCADDDLCI: u32 = 35200;
-pub const SIOCDELDLCI: u32 = 35201;
-pub const SIOCDEVPRIVATE: u32 = 35312;
-pub const SIOCPROTOPRIVATE: u32 = 35296;
-pub const FIBMAP: u32 = 1;
-pub const FIGETBSZ: u32 = 2;
-pub const FIFREEZE: u32 = 3221510263;
-pub const FITHAW: u32 = 3221510264;
-pub const FITRIM: u32 = 3222820985;
-pub const FICLONE: u32 = 1074041865;
-pub const FICLONERANGE: u32 = 1075876877;
-pub const FIDEDUPERANGE: u32 = 3222836278;
-pub const FS_IOC_GETFLAGS: u32 = 2148034049;
-pub const FS_IOC_SETFLAGS: u32 = 1074292226;
-pub const FS_IOC_GETVERSION: u32 = 2148038145;
-pub const FS_IOC_SETVERSION: u32 = 1074296322;
-pub const FS_IOC_FIEMAP: u32 = 3223348747;
-pub const FS_IOC32_GETFLAGS: u32 = 2147771905;
-pub const FS_IOC32_SETFLAGS: u32 = 1074030082;
-pub const FS_IOC32_GETVERSION: u32 = 2147776001;
-pub const FS_IOC32_SETVERSION: u32 = 1074034178;
-pub const FS_IOC_FSGETXATTR: u32 = 2149341215;
-pub const FS_IOC_FSSETXATTR: u32 = 1075599392;
-pub const FS_IOC_GETFSLABEL: u32 = 2164298801;
-pub const FS_IOC_SETFSLABEL: u32 = 1090556978;
-pub const VIDIOC_SUBDEV_QUERYSTD: u32 = 2148030015;
-pub const AUTOFS_DEV_IOCTL_CLOSEMOUNT: u32 = 3222836085;
-pub const LIRC_SET_SEND_CARRIER: u32 = 1074030867;
-pub const AUTOFS_IOC_PROTOSUBVER: u32 = 2147783527;
-pub const PTP_SYS_OFFSET_PRECISE: u32 = 3225435400;
-pub const FSI_SCOM_WRITE: u32 = 3223352066;
-pub const ATM_GETCIRANGE: u32 = 1074815370;
-pub const DMA_BUF_SET_NAME_B: u32 = 1074291201;
-pub const RIO_CM_EP_GET_LIST_SIZE: u32 = 3221512961;
-pub const TUNSETPERSIST: u32 = 1074025675;
-pub const FS_IOC_GET_ENCRYPTION_POLICY: u32 = 1074554389;
-pub const CEC_RECEIVE: u32 = 3224920326;
-pub const MGSL_IOCGPARAMS: u32 = 2150657281;
-pub const ENI_SETMULT: u32 = 1074815335;
-pub const RIO_GET_EVENT_MASK: u32 = 2147773710;
-pub const LIRC_GET_MAX_TIMEOUT: u32 = 2147772681;
-pub const KVM_SET_BOOT_CPU_ID: u32 = 44664;
-pub const KVM_SET_MP_STATE: u32 = 1074048665;
-pub const KVM_GET_MP_STATE: u32 = 2147790488;
-pub const KVM_SET_MEMORY_REGION: u32 = 1075359296;
-pub const KVM_GET_API_VERSION: u32 = 44544;
-pub const KVM_S390_GET_SKEYS: u32 = 1077980850;
-pub const KVM_SET_ONE_REG: u32 = 1074835116;
-pub const KVM_IRQ_LINE_STATUS: u32 = 3221794407;
-pub const KVM_SET_USER_MEMORY_REGION: u32 = 1075883590;
-pub const KVM_S390_INTERRUPT: u32 = 1074835092;
-pub const KVM_TPR_ACCESS_REPORTING: u32 = 3223891602;
-pub const KVM_GET_FPU: u32 = 2147528332;
-pub const KVM_ASSIGN_SET_MSIX_ENTRY: u32 = 1074835060;
-pub const KVM_MEMORY_ENCRYPT_REG_REGION: u32 = 2148576955;
-pub const KVM_S390_UCAS_MAP: u32 = 1075359312;
-pub const KVM_ASSIGN_SET_INTX_MASK: u32 = 1077980836;
-pub const KVM_MEMORY_ENCRYPT_OP: u32 = 3221794490;
-pub const KVM_CREATE_PIT2: u32 = 1077980791;
-pub const KVM_S390_VCPU_FAULT: u32 = 1074310738;
-pub const KVM_REGISTER_COALESCED_MMIO: u32 = 1074835047;
-pub const KVM_SET_VAPIC_ADDR: u32 = 1074310803;
-pub const KVM_CREATE_DEVICE: u32 = 3222056672;
-pub const KVM_GET_IRQCHIP: u32 = 3255348834;
-pub const KVM_TRANSLATE: u32 = 3222843013;
-pub const KVM_S390_SET_INITIAL_PSW: u32 = 1074835094;
-pub const KVM_X86_SETUP_MCE: u32 = 1074310812;
-pub const KVM_DEASSIGN_PCI_DEVICE: u32 = 1077980786;
-pub const KVM_XEN_HVM_SET_ATTR: u32 = 1078505161;
-pub const KVM_GET_CLOCK: u32 = 2150674044;
-pub const KVM_SET_FPU: u32 = 1073786509;
-pub const KVM_KVMCLOCK_CTRL: u32 = 44717;
-pub const KVM_PPC_GET_PVINFO: u32 = 1082175137;
-pub const KVM_X86_GET_MCE_CAP_SUPPORTED: u32 = 2148052637;
-pub const KVM_S390_GET_IRQ_STATE: u32 = 1075883702;
-pub const KVM_GET_DEVICE_ATTR: u32 = 1075359458;
-pub const KVM_S390_INITIAL_RESET: u32 = 44695;
-pub const KVM_SET_REGS: u32 = 1130409602;
-pub const KVM_GET_TSC_KHZ: u32 = 44707;
-pub const KVM_CHECK_EXTENSION: u32 = 44547;
-pub const KVM_PPC_RESIZE_HPT_COMMIT: u32 = 2148576942;
-pub const KVM_GET_DIRTY_LOG: u32 = 1074835010;
-pub const KVM_S390_SET_IRQ_STATE: u32 = 1075883701;
-pub const KVM_S390_NORMAL_RESET: u32 = 44739;
-pub const KVM_SET_SIGNAL_MASK: u32 = 1074048651;
-pub const KVM_XEN_VCPU_SET_ATTR: u32 = 1078505163;
-pub const KVM_SET_GSI_ROUTING: u32 = 1074310762;
-pub const KVM_CREATE_VCPU: u32 = 44609;
-pub const KVM_S390_UCAS_UNMAP: u32 = 1075359313;
-pub const KVM_S390_STORE_STATUS: u32 = 1074310805;
-pub const KVM_UNREGISTER_COALESCED_MMIO: u32 = 1074835048;
-pub const KVM_ASSIGN_DEV_IRQ: u32 = 1077980784;
-pub const KVM_S390_PV_COMMAND: u32 = 3223367365;
-pub const KVM_S390_ENABLE_SIE: u32 = 44550;
-pub const KVM_CLEAR_DIRTY_LOG: u32 = 3222843072;
-pub const KVM_GET_ONE_REG: u32 = 1074835115;
-pub const KVM_ARM_SET_DEVICE_ADDR: u32 = 1074835115;
-pub const KVM_DIRTY_TLB: u32 = 1074835114;
-pub const KVM_NMI: u32 = 44698;
-pub const KVM_HYPERV_EVENTFD: u32 = 1075359421;
-pub const KVM_S390_MEM_OP: u32 = 1077980849;
-pub const KVM_PPC_SVM_OFF: u32 = 44723;
-pub const KVM_PPC_RESIZE_HPT_PREPARE: u32 = 2148576941;
-pub const KVM_INTERRUPT: u32 = 1074048646;
-pub const KVM_XEN_HVM_GET_ATTR: u32 = 3225988808;
-pub const KVM_GET_SREGS: u32 = 2147528323;
-pub const KVM_SET_IDENTITY_MAP_ADDR: u32 = 1074310728;
-pub const KVM_GET_REGS: u32 = 2204151425;
-pub const KVM_S390_GET_CMMA_BITS: u32 = 3223367352;
-pub const KVM_CREATE_IRQCHIP: u32 = 44640;
-pub const KVM_ASSIGN_PCI_DEVICE: u32 = 2151722601;
-pub const KVM_SET_NR_MMU_PAGES: u32 = 44612;
-pub const KVM_IOEVENTFD: u32 = 1077980793;
-pub const KVM_RUN: u32 = 44672;
-pub const KVM_S390_SET_SKEYS: u32 = 1077980851;
-pub const KVM_SET_DEVICE_ATTR: u32 = 1075359457;
-pub const KVM_DEASSIGN_DEV_IRQ: u32 = 1077980789;
-pub const KVM_SMI: u32 = 44727;
-pub const KVM_SET_TSS_ADDR: u32 = 44615;
-pub const KVM_GET_NR_MMU_PAGES: u32 = 44613;
-pub const KVM_XEN_VCPU_GET_ATTR: u32 = 3225988810;
-pub const KVM_REINJECT_CONTROL: u32 = 44657;
-pub const KVM_HAS_DEVICE_ATTR: u32 = 1075359459;
-pub const KVM_IRQFD: u32 = 1075883638;
-pub const KVM_S390_SET_CMMA_BITS: u32 = 1075883705;
-pub const KVM_SET_IRQCHIP: u32 = 2181607011;
-pub const KVM_SIGNAL_MSI: u32 = 1075883685;
-pub const KVM_GET_VCPU_MMAP_SIZE: u32 = 44548;
-pub const KVM_CREATE_VM: u32 = 44545;
-pub const KVM_S390_CLEAR_RESET: u32 = 44740;
-pub const KVM_RESET_DIRTY_RINGS: u32 = 44743;
-pub const KVM_ASSIGN_SET_MSIX_NR: u32 = 1074310771;
-pub const KVM_CREATE_PIT: u32 = 44644;
-pub const KVM_SET_GUEST_DEBUG: u32 = 1107865243;
-pub const KVM_GET_REG_LIST: u32 = 3221794480;
-pub const KVM_ARM_VCPU_FINALIZE: u32 = 1074048706;
-pub const KVM_SET_CLOCK: u32 = 1076932219;
-pub const KVM_PPC_ALLOCATE_HTAB: u32 = 3221532327;
-pub const KVM_PPC_GET_SMMU_INFO: u32 = 2186325670;
-pub const KVM_SET_TSC_KHZ: u32 = 44706;
-pub const KVM_S390_IRQ: u32 = 1078505140;
-pub const KVM_ENABLE_CAP: u32 = 1080602275;
-pub const KVM_IRQ_LINE: u32 = 1074310753;
-pub const KVM_SET_SREGS: u32 = 1073786500;
-pub const KVM_MEMORY_ENCRYPT_UNREG_REGION: u32 = 2148576956;
-pub const KVM_GET_STATS_FD: u32 = 44750;
-pub const USBDEVFS_CLAIMINTERFACE: u32 = 2147767567;
-pub const CHIOMOVE: u32 = 1075077889;
-pub const SONYPI_IOCGBATFLAGS: u32 = 2147579399;
-pub const BTRFS_IOC_SYNC: u32 = 37896;
-pub const VIDIOC_TRY_FMT: u32 = 3234879040;
-pub const LIRC_SET_REC_MODE: u32 = 1074030866;
-pub const VIDIOC_DQEVENT: u32 = 2156418649;
-pub const RPMSG_DESTROY_EPT_IOCTL: u32 = 46338;
-pub const UVCIOC_CTRL_MAP: u32 = 3227546912;
-pub const VHOST_SET_BACKEND_FEATURES: u32 = 1074310949;
-pub const VHOST_VSOCK_SET_GUEST_CID: u32 = 1074311008;
-pub const UI_SET_KEYBIT: u32 = 1074025829;
-pub const LIRC_SET_REC_TIMEOUT: u32 = 1074030872;
-pub const FS_IOC_GET_ENCRYPTION_KEY_STATUS: u32 = 3229640218;
-pub const BTRFS_IOC_TREE_SEARCH_V2: u32 = 3228603409;
-pub const VHOST_SET_VRING_BASE: u32 = 1074310930;
-pub const RIO_ENABLE_DOORBELL_RANGE: u32 = 1074294025;
-pub const VIDIOC_TRY_EXT_CTRLS: u32 = 3223344713;
-pub const LIRC_GET_REC_MODE: u32 = 2147772674;
-pub const PPGETTIME: u32 = 2148561045;
-pub const BTRFS_IOC_RM_DEV: u32 = 1342215179;
-pub const ATM_SETBACKEND: u32 = 1073897970;
-pub const FSL_HV_IOCTL_PARTITION_START: u32 = 3222318851;
-pub const FBIO_WAITEVENT: u32 = 18056;
-pub const SWITCHTEC_IOCTL_PORT_TO_PFF: u32 = 3222034245;
-pub const NVME_IOCTL_IO_CMD: u32 = 3225964099;
-pub const IPMICTL_RECEIVE_MSG_TRUNC: u32 = 3224398091;
-pub const FDTWADDLE: u32 = 601;
-pub const NVME_IOCTL_SUBMIT_IO: u32 = 1076907586;
-pub const NILFS_IOCTL_SYNC: u32 = 2148036234;
-pub const VIDIOC_SUBDEV_S_DV_TIMINGS: u32 = 3229898327;
-pub const ASPEED_LPC_CTRL_IOCTL_GET_SIZE: u32 = 3222319616;
-pub const DM_DEV_STATUS: u32 = 3241737479;
-pub const TEE_IOC_CLOSE_SESSION: u32 = 2147787781;
-pub const NS_GETPSTAT: u32 = 3222298977;
-pub const UI_SET_PROPBIT: u32 = 1074025838;
-pub const TUNSETFILTEREBPF: u32 = 2147767521;
-pub const RIO_MPORT_MAINT_COMPTAG_SET: u32 = 1074031874;
-pub const AUTOFS_DEV_IOCTL_VERSION: u32 = 3222836081;
-pub const WDIOC_SETOPTIONS: u32 = 2147768068;
-pub const VHOST_SCSI_SET_ENDPOINT: u32 = 1088991040;
-pub const MGSL_IOCGTXIDLE: u32 = 27907;
-pub const ATM_ADDLECSADDR: u32 = 1074815374;
-pub const FSL_HV_IOCTL_GETPROP: u32 = 3223891719;
-pub const FDGETPRM: u32 = 2149581316;
-pub const HIDIOCAPPLICATION: u32 = 18434;
-pub const ENI_MEMDUMP: u32 = 1074815328;
-pub const PTP_SYS_OFFSET2: u32 = 1128283406;
-pub const VIDIOC_SUBDEV_G_DV_TIMINGS: u32 = 3229898328;
-pub const DMA_BUF_SET_NAME_A: u32 = 1074029057;
-pub const PTP_PIN_GETFUNC: u32 = 3227532550;
-pub const PTP_SYS_OFFSET_EXTENDED: u32 = 3300932873;
-pub const DFL_FPGA_PORT_UINT_SET_IRQ: u32 = 1074312776;
-pub const RTC_EPOCH_READ: u32 = 2148036621;
-pub const VIDIOC_SUBDEV_S_SELECTION: u32 = 3225441854;
-pub const VIDIOC_QUERY_EXT_CTRL: u32 = 3236451943;
-pub const ATM_GETLECSADDR: u32 = 1074815376;
-pub const FSL_HV_IOCTL_PARTITION_STOP: u32 = 3221794564;
-pub const SONET_GETDIAG: u32 = 2147770644;
-pub const ATMMPC_DATA: u32 = 25049;
-pub const IPMICTL_UNREGISTER_FOR_CMD_CHANS: u32 = 2148296989;
-pub const HIDIOCGCOLLECTIONINDEX: u32 = 1075333136;
-pub const RPMSG_CREATE_EPT_IOCTL: u32 = 1076409601;
-pub const GPIOHANDLE_GET_LINE_VALUES_IOCTL: u32 = 3225465864;
-pub const UI_DEV_SETUP: u32 = 1079792899;
-pub const ISST_IF_IO_CMD: u32 = 1074331138;
-pub const RIO_MPORT_MAINT_READ_REMOTE: u32 = 2149084423;
-pub const VIDIOC_OMAP3ISP_HIST_CFG: u32 = 3224393412;
-pub const BLKGETNRZONES: u32 = 2147750533;
-pub const VIDIOC_G_MODULATOR: u32 = 3225703990;
-pub const VBG_IOCTL_WRITE_CORE_DUMP: u32 = 3223082515;
-pub const USBDEVFS_SETINTERFACE: u32 = 2148029700;
-pub const PPPIOCGCHAN: u32 = 2147775543;
-pub const EVIOCGVERSION: u32 = 2147763457;
-pub const VHOST_NET_SET_BACKEND: u32 = 1074310960;
-pub const USBDEVFS_REAPURBNDELAY: u32 = 1074287885;
-pub const RNDZAPENTCNT: u32 = 20996;
-pub const VIDIOC_G_PARM: u32 = 3234616853;
-pub const TUNGETDEVNETNS: u32 = 21731;
-pub const LIRC_SET_MEASURE_CARRIER_MODE: u32 = 1074030877;
-pub const VHOST_SET_VRING_ERR: u32 = 1074310946;
-pub const VDUSE_VQ_SETUP: u32 = 1075872020;
-pub const AUTOFS_IOC_SETTIMEOUT: u32 = 3221787492;
-pub const VIDIOC_S_FREQUENCY: u32 = 1076647481;
-pub const F2FS_IOC_SEC_TRIM_FILE: u32 = 1075377428;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY: u32 = 3225445912;
-pub const WDIOC_GETPRETIMEOUT: u32 = 2147768073;
-pub const USBDEVFS_DROP_PRIVILEGES: u32 = 1074025758;
-pub const BTRFS_IOC_SNAP_CREATE_V2: u32 = 1342215191;
-pub const VHOST_VSOCK_SET_RUNNING: u32 = 1074048865;
-pub const STP_SET_OPTIONS: u32 = 1074275586;
-pub const FBIO_RADEON_GET_MIRROR: u32 = 2148024323;
-pub const IVTVFB_IOC_DMA_FRAME: u32 = 1075336896;
-pub const IPMICTL_SEND_COMMAND: u32 = 2150131981;
-pub const VIDIOC_G_ENC_INDEX: u32 = 2283296332;
-pub const DFL_FPGA_FME_PORT_PR: u32 = 46720;
-pub const CHIOSVOLTAG: u32 = 1076912914;
-pub const ATM_SETESIF: u32 = 1074815373;
-pub const FW_CDEV_IOC_SEND_RESPONSE: u32 = 1075323652;
-pub const PMU_IOC_GET_MODEL: u32 = 2148024835;
-pub const JSIOCGBTNMAP: u32 = 2214619700;
-pub const USBDEVFS_HUB_PORTINFO: u32 = 2155894035;
-pub const VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS: u32 = 3222820363;
-pub const FDCLRPRM: u32 = 577;
-pub const BTRFS_IOC_SCRUB: u32 = 3288372251;
-pub const USBDEVFS_DISCONNECT: u32 = 21782;
-pub const TUNSETVNETBE: u32 = 1074025694;
-pub const ATMTCP_REMOVE: u32 = 24975;
-pub const VHOST_VDPA_GET_CONFIG: u32 = 2148052851;
-pub const PPPIOCGNPMODE: u32 = 3221779532;
-pub const FDGETDRVPRM: u32 = 2155872785;
-pub const TUNSETVNETLE: u32 = 1074025692;
-pub const PHN_SETREG: u32 = 1074294790;
-pub const PPPIOCDETACH: u32 = 1074033724;
-pub const MMTIMER_GETRES: u32 = 2148035841;
-pub const VIDIOC_SUBDEV_ENUMSTD: u32 = 3225966105;
-pub const PPGETFLAGS: u32 = 2147774618;
-pub const VDUSE_DEV_GET_FEATURES: u32 = 2148040977;
-pub const CAPI_MANUFACTURER_CMD: u32 = 3222291232;
-pub const VIDIOC_G_TUNER: u32 = 3226752541;
-pub const DM_TABLE_STATUS: u32 = 3241737484;
-pub const DM_DEV_ARM_POLL: u32 = 3241737488;
-pub const NE_CREATE_VM: u32 = 2148052512;
-pub const MEDIA_IOC_ENUM_LINKS: u32 = 3223878658;
-pub const F2FS_IOC_PRECACHE_EXTENTS: u32 = 62735;
-pub const DFL_FPGA_PORT_DMA_MAP: u32 = 46659;
-pub const MGSL_IOCGXCTRL: u32 = 27926;
-pub const FW_CDEV_IOC_SEND_REQUEST: u32 = 1076372225;
-pub const SONYPI_IOCGBLUE: u32 = 2147579400;
-pub const F2FS_IOC_DECOMPRESS_FILE: u32 = 62743;
-pub const I2OHTML: u32 = 3224398089;
-pub const VFIO_GET_API_VERSION: u32 = 15204;
-pub const IDT77105_GETSTATZ: u32 = 1074815283;
-pub const I2OPARMSET: u32 = 3223873795;
-pub const TEE_IOC_CANCEL: u32 = 2148049924;
-pub const PTP_SYS_OFFSET_PRECISE2: u32 = 3225435409;
-pub const DFL_FPGA_PORT_RESET: u32 = 46656;
-pub const PPPIOCGASYNCMAP: u32 = 2147775576;
-pub const EVIOCGKEYCODE_V2: u32 = 2150122756;
-pub const DM_DEV_SET_GEOMETRY: u32 = 3241737487;
-pub const HIDIOCSUSAGE: u32 = 1075333132;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE: u32 = 1075323664;
-pub const PTP_EXTTS_REQUEST: u32 = 1074806018;
-pub const SWITCHTEC_IOCTL_EVENT_CTL: u32 = 3223869251;
-pub const WDIOC_SETPRETIMEOUT: u32 = 3221509896;
-pub const VHOST_SCSI_CLEAR_ENDPOINT: u32 = 1088991041;
-pub const JSIOCGAXES: u32 = 2147576337;
-pub const HIDIOCSFLAG: u32 = 1074022415;
-pub const PTP_PEROUT_REQUEST2: u32 = 1077427468;
-pub const PPWDATA: u32 = 1073836166;
-pub const PTP_CLOCK_GETCAPS: u32 = 2152742145;
-pub const FDGETMAXERRS: u32 = 2148794894;
-pub const TUNSETQUEUE: u32 = 1074025689;
-pub const PTP_ENABLE_PPS: u32 = 1074019588;
-pub const SIOCSIFATMTCP: u32 = 24960;
-pub const CEC_ADAP_G_LOG_ADDRS: u32 = 2153537795;
-pub const ND_IOCTL_ARS_CAP: u32 = 3223342593;
-pub const NBD_SET_BLKSIZE: u32 = 43777;
-pub const NBD_SET_TIMEOUT: u32 = 43785;
-pub const VHOST_SCSI_GET_ABI_VERSION: u32 = 1074048834;
-pub const RIO_UNMAP_INBOUND: u32 = 1074294034;
-pub const ATM_QUERYLOOP: u32 = 1074815316;
-pub const DFL_FPGA_GET_API_VERSION: u32 = 46592;
-pub const USBDEVFS_WAIT_FOR_RESUME: u32 = 21795;
-pub const FBIO_CURSOR: u32 = 3228059144;
-pub const RNDCLEARPOOL: u32 = 20998;
-pub const VIDIOC_QUERYSTD: u32 = 2148030015;
-pub const DMA_BUF_IOCTL_SYNC: u32 = 1074291200;
-pub const SCIF_RECV: u32 = 3222827783;
-pub const PTP_PIN_GETFUNC2: u32 = 3227532559;
-pub const FW_CDEV_IOC_ALLOCATE: u32 = 3223331586;
-pub const CEC_ADAP_G_CAPS: u32 = 3226231040;
-pub const VIDIOC_G_FBUF: u32 = 2150651402;
-pub const PTP_ENABLE_PPS2: u32 = 1074019597;
-pub const PCITEST_CLEAR_IRQ: u32 = 20496;
-pub const IPMICTL_SET_GETS_EVENTS_CMD: u32 = 2147772688;
-pub const BTRFS_IOC_DEVICES_READY: u32 = 2415957031;
-pub const JSIOCGAXMAP: u32 = 2151705138;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER: u32 = 2148541196;
-pub const FW_CDEV_IOC_SET_ISO_CHANNELS: u32 = 1074799383;
-pub const RTC_WIE_OFF: u32 = 28688;
-pub const PPGETMODE: u32 = 2147774616;
-pub const VIDIOC_DBG_G_REGISTER: u32 = 3224917584;
-pub const PTP_SYS_OFFSET: u32 = 1128283397;
-pub const BTRFS_IOC_SPACE_INFO: u32 = 3222311956;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_SIZE: u32 = 3225441866;
-pub const ND_IOCTL_VENDOR: u32 = 3221769737;
-pub const SCIF_VREADFROM: u32 = 3223876364;
-pub const BTRFS_IOC_TRANS_START: u32 = 37894;
-pub const INOTIFY_IOC_SETNEXTWD: u32 = 1074022656;
-pub const SNAPSHOT_GET_IMAGE_SIZE: u32 = 2148021006;
-pub const TUNDETACHFILTER: u32 = 1074812118;
-pub const ND_IOCTL_CLEAR_ERROR: u32 = 3223342596;
-pub const IOC_PR_CLEAR: u32 = 1074819277;
-pub const SCIF_READFROM: u32 = 3223876362;
-pub const PPPIOCGDEBUG: u32 = 2147775553;
-pub const BLKGETZONESZ: u32 = 2147750532;
-pub const HIDIOCGUSAGES: u32 = 3491514387;
-pub const SONYPI_IOCGTEMP: u32 = 2147579404;
-pub const UI_SET_MSCBIT: u32 = 1074025832;
-pub const APM_IOC_SUSPEND: u32 = 16642;
-pub const BTRFS_IOC_TREE_SEARCH: u32 = 3489698833;
-pub const RTC_PLL_GET: u32 = 2149609489;
-pub const RIO_CM_EP_GET_LIST: u32 = 3221512962;
-pub const USBDEVFS_DISCSIGNAL: u32 = 2148553998;
-pub const LIRC_GET_MIN_TIMEOUT: u32 = 2147772680;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY: u32 = 2174244674;
-pub const DM_TARGET_MSG: u32 = 3241737486;
-pub const SONYPI_IOCGBAT1REM: u32 = 2147644931;
-pub const EVIOCSFF: u32 = 1076905344;
-pub const TUNSETGROUP: u32 = 1074025678;
-pub const EVIOCGKEYCODE: u32 = 2148025604;
-pub const KCOV_REMOTE_ENABLE: u32 = 1075340134;
-pub const ND_IOCTL_GET_CONFIG_SIZE: u32 = 3222031876;
-pub const FDEJECT: u32 = 602;
-pub const TUNSETOFFLOAD: u32 = 1074025680;
-pub const PPPIOCCONNECT: u32 = 1074033722;
-pub const ATM_ADDADDR: u32 = 1074815368;
-pub const VDUSE_DEV_INJECT_CONFIG_IRQ: u32 = 33043;
-pub const AUTOFS_DEV_IOCTL_ASKUMOUNT: u32 = 3222836093;
-pub const VHOST_VDPA_GET_STATUS: u32 = 2147594097;
-pub const CCISS_PASSTHRU: u32 = 3227009547;
-pub const MGSL_IOCCLRMODCOUNT: u32 = 27919;
-pub const TEE_IOC_SUPPL_SEND: u32 = 2148574215;
-pub const ATMARPD_CTRL: u32 = 25057;
-pub const UI_ABS_SETUP: u32 = 1075598596;
-pub const UI_DEV_DESTROY: u32 = 21762;
-pub const BTRFS_IOC_QUOTA_CTL: u32 = 3222311976;
-pub const RTC_AIE_ON: u32 = 28673;
-pub const AUTOFS_IOC_EXPIRE: u32 = 2165085029;
-pub const PPPIOCSDEBUG: u32 = 1074033728;
-pub const GPIO_V2_LINE_SET_VALUES_IOCTL: u32 = 3222320143;
-pub const PPPIOCSMRU: u32 = 1074033746;
-pub const CCISS_DEREGDISK: u32 = 16908;
-pub const UI_DEV_CREATE: u32 = 21761;
-pub const FUSE_DEV_IOC_CLONE: u32 = 2147804416;
-pub const BTRFS_IOC_START_SYNC: u32 = 2148045848;
-pub const NILFS_IOCTL_DELETE_CHECKPOINT: u32 = 1074294401;
-pub const SNAPSHOT_AVAIL_SWAP_SIZE: u32 = 2148021011;
-pub const DM_TABLE_CLEAR: u32 = 3241737482;
-pub const CCISS_GETINTINFO: u32 = 2148024834;
-pub const PPPIOCSASYNCMAP: u32 = 1074033751;
-pub const I2OEVTGET: u32 = 2154326283;
-pub const NVME_IOCTL_RESET: u32 = 20036;
-pub const PPYIELD: u32 = 28813;
-pub const NVME_IOCTL_IO64_CMD: u32 = 3226488392;
-pub const TUNSETCARRIER: u32 = 1074025698;
-pub const DM_DEV_WAIT: u32 = 3241737480;
-pub const RTC_WIE_ON: u32 = 28687;
-pub const MEDIA_IOC_DEVICE_INFO: u32 = 3238034432;
-pub const RIO_CM_CHAN_CREATE: u32 = 3221381891;
-pub const MGSL_IOCSPARAMS: u32 = 1076915456;
-pub const RTC_SET_TIME: u32 = 1076129802;
-pub const VHOST_RESET_OWNER: u32 = 44802;
-pub const IOC_OPAL_PSID_REVERT_TPR: u32 = 1091072232;
-pub const AUTOFS_DEV_IOCTL_OPENMOUNT: u32 = 3222836084;
-pub const UDF_GETEABLOCK: u32 = 2148035649;
-pub const VFIO_IOMMU_MAP_DMA: u32 = 15217;
-pub const VIDIOC_SUBSCRIBE_EVENT: u32 = 1075861082;
-pub const HIDIOCGFLAG: u32 = 2147764238;
-pub const HIDIOCGUCODE: u32 = 3222816781;
-pub const VIDIOC_OMAP3ISP_AF_CFG: u32 = 3226228421;
-pub const DM_REMOVE_ALL: u32 = 3241737473;
-pub const ASPEED_LPC_CTRL_IOCTL_MAP: u32 = 1074835969;
-pub const CCISS_GETFIRMVER: u32 = 2147762696;
-pub const ND_IOCTL_ARS_START: u32 = 3223342594;
-pub const PPPIOCSMRRU: u32 = 1074033723;
-pub const CEC_ADAP_S_LOG_ADDRS: u32 = 3227279620;
-pub const RPROC_GET_SHUTDOWN_ON_RELEASE: u32 = 2147792642;
-pub const DMA_HEAP_IOCTL_ALLOC: u32 = 3222816768;
-pub const PPSETTIME: u32 = 1074819222;
-pub const RTC_ALM_READ: u32 = 2149871624;
-pub const VDUSE_SET_API_VERSION: u32 = 1074299137;
-pub const RIO_MPORT_MAINT_WRITE_REMOTE: u32 = 1075342600;
-pub const VIDIOC_SUBDEV_S_CROP: u32 = 3224917564;
-pub const USBDEVFS_CONNECT: u32 = 21783;
-pub const SYNC_IOC_FILE_INFO: u32 = 3224911364;
-pub const ATMARP_MKIP: u32 = 25058;
-pub const VFIO_IOMMU_SPAPR_TCE_GET_INFO: u32 = 15216;
-pub const CCISS_GETHEARTBEAT: u32 = 2147762694;
-pub const ATM_RSTADDR: u32 = 1074815367;
-pub const NBD_SET_SIZE: u32 = 43778;
-pub const UDF_GETVOLIDENT: u32 = 2148035650;
-pub const GPIO_V2_LINE_GET_VALUES_IOCTL: u32 = 3222320142;
-pub const MGSL_IOCSTXIDLE: u32 = 27906;
-pub const FSL_HV_IOCTL_SETPROP: u32 = 3223891720;
-pub const BTRFS_IOC_GET_DEV_STATS: u32 = 3288896564;
-pub const PPRSTATUS: u32 = 2147577985;
-pub const MGSL_IOCTXENABLE: u32 = 27908;
-pub const UDF_GETEASIZE: u32 = 2147773504;
-pub const NVME_IOCTL_ADMIN64_CMD: u32 = 3226488391;
-pub const VHOST_SET_OWNER: u32 = 44801;
-pub const RIO_ALLOC_DMA: u32 = 3222826259;
-pub const RIO_CM_CHAN_ACCEPT: u32 = 3221775111;
-pub const I2OHRTGET: u32 = 3222825217;
-pub const ATM_SETCIRANGE: u32 = 1074815371;
-pub const HPET_IE_ON: u32 = 26625;
-pub const PERF_EVENT_IOC_ID: u32 = 2148017159;
-pub const TUNSETSNDBUF: u32 = 1074025684;
-pub const PTP_PIN_SETFUNC: u32 = 1080048903;
-pub const PPPIOCDISCONN: u32 = 29753;
-pub const VIDIOC_QUERYCTRL: u32 = 3225703972;
-pub const PPEXCL: u32 = 28815;
-pub const PCITEST_MSI: u32 = 1074024451;
-pub const FDWERRORCLR: u32 = 598;
-pub const AUTOFS_IOC_FAIL: u32 = 37729;
-pub const USBDEVFS_IOCTL: u32 = 3222295826;
-pub const VIDIOC_S_STD: u32 = 1074288152;
-pub const F2FS_IOC_RESIZE_FS: u32 = 1074328848;
-pub const SONET_SETDIAG: u32 = 3221512466;
-pub const BTRFS_IOC_DEFRAG: u32 = 1342215170;
-pub const CCISS_GETDRIVVER: u32 = 2147762697;
-pub const IPMICTL_GET_TIMING_PARMS_CMD: u32 = 2148034839;
-pub const HPET_IRQFREQ: u32 = 1074292742;
-pub const ATM_GETESI: u32 = 1074815365;
-pub const CCISS_GETLUNINFO: u32 = 2148286993;
-pub const AUTOFS_DEV_IOCTL_ISMOUNTPOINT: u32 = 3222836094;
-pub const TEE_IOC_SHM_ALLOC: u32 = 3222316033;
-pub const PERF_EVENT_IOC_SET_BPF: u32 = 1074013192;
-pub const UDMABUF_CREATE_LIST: u32 = 1074296131;
-pub const VHOST_SET_LOG_BASE: u32 = 1074310916;
-pub const ZATM_GETPOOL: u32 = 1074815329;
-pub const BR2684_SETFILT: u32 = 1075601808;
-pub const RNDGETPOOL: u32 = 2148028930;
-pub const PPS_GETPARAMS: u32 = 2148036769;
-pub const IOC_PR_RESERVE: u32 = 1074819273;
-pub const VIDIOC_TRY_DECODER_CMD: u32 = 3225966177;
-pub const RIO_CM_CHAN_CLOSE: u32 = 1073898244;
-pub const VIDIOC_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const IOCTL_MEI_CONNECT_CLIENT_VTAG: u32 = 3222554628;
-pub const PMU_IOC_GET_BACKLIGHT: u32 = 2148024833;
-pub const USBDEVFS_GET_CAPABILITIES: u32 = 2147767578;
-pub const SCIF_WRITETO: u32 = 3223876363;
-pub const UDF_RELOCATE_BLOCKS: u32 = 3221777475;
-pub const FSL_HV_IOCTL_PARTITION_RESTART: u32 = 3221794561;
-pub const CCISS_REGNEWD: u32 = 16910;
-pub const FAT_IOCTL_SET_ATTRIBUTES: u32 = 1074033169;
-pub const VIDIOC_CREATE_BUFS: u32 = 3238024796;
-pub const CAPI_GET_VERSION: u32 = 3222291207;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY: u32 = 2228770626;
-pub const VFIO_EEH_PE_OP: u32 = 15225;
-pub const FW_CDEV_IOC_CREATE_ISO_CONTEXT: u32 = 3223331592;
-pub const F2FS_IOC_RELEASE_COMPRESS_BLOCKS: u32 = 2148070674;
-pub const NBD_SET_SIZE_BLOCKS: u32 = 43783;
-pub const IPMI_BMC_IOCTL_SET_SMS_ATN: u32 = 45312;
-pub const ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG: u32 = 3222319873;
-pub const VIDIOC_S_AUDOUT: u32 = 1077171762;
-pub const VIDIOC_S_FMT: u32 = 3234878981;
-pub const PPPIOCATTACH: u32 = 1074033725;
-pub const VHOST_GET_VRING_BUSYLOOP_TIMEOUT: u32 = 1074310948;
-pub const FS_IOC_MEASURE_VERITY: u32 = 3221513862;
-pub const CCISS_BIG_PASSTHRU: u32 = 3227533842;
-pub const IPMICTL_SET_MY_LUN_CMD: u32 = 2147772691;
-pub const PCITEST_LEGACY_IRQ: u32 = 20482;
-pub const USBDEVFS_SUBMITURB: u32 = 2151175434;
-pub const AUTOFS_IOC_READY: u32 = 37728;
-pub const BTRFS_IOC_SEND: u32 = 1078498342;
-pub const VIDIOC_G_EXT_CTRLS: u32 = 3223344711;
-pub const JSIOCSBTNMAP: u32 = 1140877875;
-pub const PPPIOCSFLAGS: u32 = 1074033753;
-pub const NVRAM_INIT: u32 = 28736;
-pub const RFKILL_IOCTL_NOINPUT: u32 = 20993;
-pub const BTRFS_IOC_BALANCE: u32 = 1342215180;
-pub const FS_IOC_GETFSMAP: u32 = 3233830971;
-pub const IPMICTL_GET_MY_CHANNEL_LUN_CMD: u32 = 2147772699;
-pub const STP_POLICY_ID_GET: u32 = 2148541697;
-pub const PPSETFLAGS: u32 = 1074032795;
-pub const CEC_ADAP_S_PHYS_ADDR: u32 = 1073897730;
-pub const ATMTCP_CREATE: u32 = 24974;
-pub const IPMI_BMC_IOCTL_FORCE_ABORT: u32 = 45314;
-pub const PPPIOCGXASYNCMAP: u32 = 2149610576;
-pub const VHOST_SET_VRING_CALL: u32 = 1074310945;
-pub const LIRC_GET_FEATURES: u32 = 2147772672;
-pub const GSMIOC_DISABLE_NET: u32 = 18179;
-pub const AUTOFS_IOC_CATATONIC: u32 = 37730;
-pub const NBD_DO_IT: u32 = 43779;
-pub const LIRC_SET_REC_CARRIER_RANGE: u32 = 1074030879;
-pub const IPMICTL_GET_MY_CHANNEL_ADDRESS_CMD: u32 = 2147772697;
-pub const EVIOCSCLOCKID: u32 = 1074021792;
-pub const USBDEVFS_FREE_STREAMS: u32 = 2148029725;
-pub const FSI_SCOM_RESET: u32 = 1074033411;
-pub const PMU_IOC_GRAB_BACKLIGHT: u32 = 2148024838;
-pub const VIDIOC_SUBDEV_S_FMT: u32 = 3227014661;
-pub const FDDEFPRM: u32 = 1075839555;
-pub const TEE_IOC_INVOKE: u32 = 2148574211;
-pub const USBDEVFS_BULK: u32 = 3222820098;
-pub const SCIF_VWRITETO: u32 = 3223876365;
-pub const SONYPI_IOCSBRT: u32 = 1073837568;
-pub const BTRFS_IOC_FILE_EXTENT_SAME: u32 = 3222836278;
-pub const RTC_PIE_ON: u32 = 28677;
-pub const BTRFS_IOC_SCAN_DEV: u32 = 1342215172;
-pub const PPPIOCXFERUNIT: u32 = 29774;
-pub const WDIOC_GETTIMEOUT: u32 = 2147768071;
-pub const BTRFS_IOC_SET_RECEIVED_SUBVOL: u32 = 3234370597;
-pub const DFL_FPGA_PORT_ERR_SET_IRQ: u32 = 1074312774;
-pub const FBIO_WAITFORVSYNC: u32 = 1074021920;
-pub const RTC_PIE_OFF: u32 = 28678;
-pub const EVIOCGRAB: u32 = 1074021776;
-pub const PMU_IOC_SET_BACKLIGHT: u32 = 1074283010;
-pub const EVIOCGREP: u32 = 2148025603;
-pub const PERF_EVENT_IOC_MODIFY_ATTRIBUTES: u32 = 1074275339;
-pub const UFFDIO_CONTINUE: u32 = 3223366151;
-pub const VDUSE_GET_API_VERSION: u32 = 2148040960;
-pub const RTC_RD_TIME: u32 = 2149871625;
-pub const FDMSGOFF: u32 = 582;
-pub const IPMICTL_REGISTER_FOR_CMD_CHANS: u32 = 2148296988;
-pub const CAPI_GET_ERRCODE: u32 = 2147631905;
-pub const PCITEST_SET_IRQTYPE: u32 = 1074024456;
-pub const VIDIOC_SUBDEV_S_EDID: u32 = 3223868969;
-pub const MATROXFB_SET_OUTPUT_MODE: u32 = 1074294522;
-pub const RIO_DEV_ADD: u32 = 1075866903;
-pub const VIDIOC_ENUM_FREQ_BANDS: u32 = 3225441893;
-pub const FBIO_RADEON_SET_MIRROR: u32 = 1074282500;
-pub const PCITEST_GET_IRQTYPE: u32 = 20489;
-pub const JSIOCGVERSION: u32 = 2147772929;
-pub const SONYPI_IOCSBLUE: u32 = 1073837577;
-pub const SNAPSHOT_PREF_IMAGE_SIZE: u32 = 13074;
-pub const F2FS_IOC_GET_FEATURES: u32 = 2147808524;
-pub const SCIF_REG: u32 = 3223876360;
-pub const NILFS_IOCTL_CLEAN_SEGMENTS: u32 = 1081634440;
-pub const FW_CDEV_IOC_INITIATE_BUS_RESET: u32 = 1074012933;
-pub const RIO_WAIT_FOR_ASYNC: u32 = 1074294038;
-pub const VHOST_SET_VRING_NUM: u32 = 1074310928;
-pub const AUTOFS_DEV_IOCTL_PROTOVER: u32 = 3222836082;
-pub const RIO_FREE_DMA: u32 = 1074294036;
-pub const MGSL_IOCRXENABLE: u32 = 27909;
-pub const IOCTL_VM_SOCKETS_GET_LOCAL_CID: u32 = 1977;
-pub const IPMICTL_SET_TIMING_PARMS_CMD: u32 = 2148034838;
-pub const PPPIOCGL2TPSTATS: u32 = 2152231990;
-pub const PERF_EVENT_IOC_PERIOD: u32 = 1074275332;
-pub const PTP_PIN_SETFUNC2: u32 = 1080048912;
-pub const CHIOEXCHANGE: u32 = 1075602178;
-pub const NILFS_IOCTL_GET_SUINFO: u32 = 2149084804;
-pub const CEC_DQEVENT: u32 = 3226493191;
-pub const UI_SET_SWBIT: u32 = 1074025837;
-pub const VHOST_VDPA_SET_CONFIG: u32 = 1074311028;
-pub const TUNSETIFF: u32 = 1074025674;
-pub const CHIOPOSITION: u32 = 1074553603;
-pub const IPMICTL_SET_MAINTENANCE_MODE_CMD: u32 = 1074030879;
-pub const BTRFS_IOC_DEFAULT_SUBVOL: u32 = 1074304019;
-pub const RIO_UNMAP_OUTBOUND: u32 = 1076391184;
-pub const CAPI_CLR_FLAGS: u32 = 2147762981;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE: u32 = 1075323663;
-pub const MATROXFB_GET_OUTPUT_CONNECTION: u32 = 2148036344;
-pub const EVIOCSMASK: u32 = 1074808211;
-pub const BTRFS_IOC_FORGET_DEV: u32 = 1342215173;
-pub const CXL_MEM_QUERY_COMMANDS: u32 = 2148060673;
-pub const CEC_S_MODE: u32 = 1074028809;
-pub const MGSL_IOCSIF: u32 = 27914;
-pub const SWITCHTEC_IOCTL_PFF_TO_PORT: u32 = 3222034244;
-pub const PPSETMODE: u32 = 1074032768;
-pub const VFIO_DEVICE_SET_IRQS: u32 = 15214;
-pub const VIDIOC_PREPARE_BUF: u32 = 3227014749;
-pub const CEC_ADAP_G_CONNECTOR_INFO: u32 = 2151964938;
-pub const IOC_OPAL_WRITE_SHADOW_MBR: u32 = 1092645098;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL: u32 = 3225441867;
-pub const UDMABUF_CREATE: u32 = 1075344706;
-pub const SONET_CLRDIAG: u32 = 3221512467;
-pub const PHN_SET_REG: u32 = 1074294785;
-pub const RNDADDTOENTCNT: u32 = 1074024961;
-pub const VBG_IOCTL_CHECK_BALLOON: u32 = 3223344657;
-pub const VIDIOC_OMAP3ISP_STAT_REQ: u32 = 3223869126;
-pub const PPS_FETCH: u32 = 3221778596;
-pub const RTC_AIE_OFF: u32 = 28674;
-pub const VFIO_GROUP_SET_CONTAINER: u32 = 15208;
-pub const FW_CDEV_IOC_RECEIVE_PHY_PACKETS: u32 = 1074275094;
-pub const VFIO_IOMMU_SPAPR_TCE_REMOVE: u32 = 15224;
-pub const VFIO_IOMMU_GET_INFO: u32 = 15216;
-pub const DM_DEV_SUSPEND: u32 = 3241737478;
-pub const F2FS_IOC_GET_COMPRESS_OPTION: u32 = 2147677461;
-pub const FW_CDEV_IOC_STOP_ISO: u32 = 1074012939;
-pub const GPIO_V2_GET_LINEINFO_IOCTL: u32 = 3238048773;
-pub const ATMMPC_CTRL: u32 = 25048;
-pub const PPPIOCSXASYNCMAP: u32 = 1075868751;
-pub const CHIOGSTATUS: u32 = 1074815752;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE: u32 = 3222807309;
-pub const RIO_MPORT_MAINT_PORT_IDX_GET: u32 = 2147773699;
-pub const CAPI_SET_FLAGS: u32 = 2147762980;
-pub const VFIO_GROUP_GET_DEVICE_FD: u32 = 15210;
-pub const VHOST_SET_MEM_TABLE: u32 = 1074310915;
-pub const MATROXFB_SET_OUTPUT_CONNECTION: u32 = 1074294520;
-pub const DFL_FPGA_PORT_GET_REGION_INFO: u32 = 46658;
-pub const VHOST_GET_FEATURES: u32 = 2148052736;
-pub const LIRC_GET_REC_RESOLUTION: u32 = 2147772679;
-pub const PACKET_CTRL_CMD: u32 = 3222820865;
-pub const LIRC_SET_TRANSMITTER_MASK: u32 = 1074030871;
-pub const BTRFS_IOC_ADD_DEV: u32 = 1342215178;
-pub const JSIOCGCORR: u32 = 2149870114;
-pub const VIDIOC_G_FMT: u32 = 3234878980;
-pub const RTC_EPOCH_SET: u32 = 1074294798;
-pub const CAPI_GET_PROFILE: u32 = 3225436937;
-pub const ATM_GETLOOP: u32 = 1074815314;
-pub const SCIF_LISTEN: u32 = 1074033410;
-pub const NBD_CLEAR_QUE: u32 = 43781;
-pub const F2FS_IOC_MOVE_RANGE: u32 = 3223385353;
-pub const LIRC_GET_LENGTH: u32 = 2147772687;
-pub const I8K_SET_FAN: u32 = 3221776775;
-pub const FDSETMAXERRS: u32 = 1075053132;
-pub const VIDIOC_SUBDEV_QUERYCAP: u32 = 2151699968;
-pub const SNAPSHOT_SET_SWAP_AREA: u32 = 1074541325;
-pub const LIRC_GET_REC_TIMEOUT: u32 = 2147772708;
-pub const EVIOCRMFF: u32 = 1074021761;
-pub const GPIO_GET_LINEEVENT_IOCTL: u32 = 3224417284;
-pub const PPRDATA: u32 = 2147577989;
-pub const RIO_MPORT_GET_PROPERTIES: u32 = 2150657284;
-pub const TUNSETVNETHDRSZ: u32 = 1074025688;
-pub const GPIO_GET_LINEINFO_IOCTL: u32 = 3225990146;
-pub const GSMIOC_GETCONF: u32 = 2152482560;
-pub const LIRC_GET_SEND_MODE: u32 = 2147772673;
-pub const PPPIOCSACTIVE: u32 = 1074820166;
-pub const SIOCGSTAMPNS_NEW: u32 = 2148567303;
-pub const IPMICTL_RECEIVE_MSG: u32 = 3224398092;
-pub const LIRC_SET_SEND_DUTY_CYCLE: u32 = 1074030869;
-pub const UI_END_FF_ERASE: u32 = 1074550219;
-pub const SWITCHTEC_IOCTL_FLASH_PART_INFO: u32 = 3222296385;
-pub const FW_CDEV_IOC_SEND_PHY_PACKET: u32 = 3222807317;
-pub const NBD_SET_FLAGS: u32 = 43786;
-pub const VFIO_DEVICE_GET_REGION_INFO: u32 = 15212;
-pub const REISERFS_IOC_UNPACK: u32 = 1074318593;
-pub const FW_CDEV_IOC_REMOVE_DESCRIPTOR: u32 = 1074012935;
-pub const RIO_SET_EVENT_MASK: u32 = 1074031885;
-pub const SNAPSHOT_ALLOC_SWAP_PAGE: u32 = 2148021012;
-pub const VDUSE_VQ_INJECT_IRQ: u32 = 1074037015;
-pub const I2OPASSTHRU: u32 = 2148559116;
-pub const IOC_OPAL_SET_PW: u32 = 1109422304;
-pub const FSI_SCOM_READ: u32 = 3223352065;
-pub const VHOST_VDPA_GET_DEVICE_ID: u32 = 2147790704;
-pub const VIDIOC_QBUF: u32 = 3227014671;
-pub const VIDIOC_S_TUNER: u32 = 1079268894;
-pub const TUNGETVNETHDRSZ: u32 = 2147767511;
-pub const CAPI_NCCI_GETUNIT: u32 = 2147762983;
-pub const DFL_FPGA_PORT_UINT_GET_IRQ_NUM: u32 = 2147792455;
-pub const VIDIOC_OMAP3ISP_STAT_EN: u32 = 3221771975;
-pub const GPIO_V2_LINE_SET_CONFIG_IOCTL: u32 = 3239097357;
-pub const TEE_IOC_VERSION: u32 = 2148312064;
-pub const VIDIOC_LOG_STATUS: u32 = 22086;
-pub const IPMICTL_SEND_COMMAND_SETTIME: u32 = 2150656277;
-pub const VHOST_SET_LOG_FD: u32 = 1074048775;
-pub const SCIF_SEND: u32 = 3222827782;
-pub const VIDIOC_SUBDEV_G_FMT: u32 = 3227014660;
-pub const NS_ADJBUFLEV: u32 = 24931;
-pub const VIDIOC_DBG_S_REGISTER: u32 = 1077433935;
-pub const NILFS_IOCTL_RESIZE: u32 = 1074294411;
-pub const PHN_GETREG: u32 = 3221778437;
-pub const I2OSWDL: u32 = 3224398085;
-pub const VBG_IOCTL_VMMDEV_REQUEST_BIG: u32 = 22019;
-pub const JSIOCGBUTTONS: u32 = 2147576338;
-pub const VFIO_IOMMU_ENABLE: u32 = 15219;
-pub const DM_DEV_RENAME: u32 = 3241737477;
-pub const MEDIA_IOC_SETUP_LINK: u32 = 3224665091;
-pub const VIDIOC_ENUMOUTPUT: u32 = 3225966128;
-pub const STP_POLICY_ID_SET: u32 = 3222283520;
-pub const VHOST_VDPA_SET_CONFIG_CALL: u32 = 1074048887;
-pub const VIDIOC_SUBDEV_G_CROP: u32 = 3224917563;
-pub const VIDIOC_S_CROP: u32 = 1075074620;
-pub const WDIOC_GETTEMP: u32 = 2147768067;
-pub const IOC_OPAL_ADD_USR_TO_LR: u32 = 1092120804;
-pub const UI_SET_LEDBIT: u32 = 1074025833;
-pub const NBD_SET_SOCK: u32 = 43776;
-pub const BTRFS_IOC_SNAP_DESTROY_V2: u32 = 1342215231;
-pub const HIDIOCGCOLLECTIONINFO: u32 = 3222292497;
-pub const I2OSWUL: u32 = 3224398086;
-pub const IOCTL_MEI_NOTIFY_GET: u32 = 2147764227;
-pub const FDFMTTRK: u32 = 1074528840;
-pub const MMTIMER_GETBITS: u32 = 27908;
-pub const VIDIOC_ENUMSTD: u32 = 3225966105;
-pub const VHOST_GET_VRING_BASE: u32 = 3221794578;
-pub const VFIO_DEVICE_IOEVENTFD: u32 = 15220;
-pub const ATMARP_SETENTRY: u32 = 25059;
-pub const CCISS_REVALIDVOLS: u32 = 16906;
-pub const MGSL_IOCLOOPTXDONE: u32 = 27913;
-pub const RTC_VL_READ: u32 = 2147774483;
-pub const ND_IOCTL_ARS_STATUS: u32 = 3224391171;
-pub const RIO_DEV_DEL: u32 = 1075866904;
-pub const VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES: u32 = 3223606797;
-pub const VIDIOC_SUBDEV_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const SONYPI_IOCSFAN: u32 = 1073837579;
-pub const SPIOCSTYPE: u32 = 1074295041;
-pub const IPMICTL_REGISTER_FOR_CMD: u32 = 2147641614;
-pub const I8K_GET_FAN: u32 = 3221776774;
-pub const TUNGETVNETBE: u32 = 2147767519;
-pub const AUTOFS_DEV_IOCTL_FAIL: u32 = 3222836087;
-pub const UI_END_FF_UPLOAD: u32 = 1080579529;
-pub const TOSH_SMM: u32 = 3222828176;
-pub const SONYPI_IOCGBAT2REM: u32 = 2147644933;
-pub const F2FS_IOC_GET_COMPRESS_BLOCKS: u32 = 2148070673;
-pub const PPPIOCSNPMODE: u32 = 1074295883;
-pub const USBDEVFS_CONTROL: u32 = 3222820096;
-pub const HIDIOCGUSAGE: u32 = 3222816779;
-pub const TUNSETTXFILTER: u32 = 1074025681;
-pub const TUNGETVNETLE: u32 = 2147767517;
-pub const VIDIOC_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const BTRFS_IOC_INO_PATHS: u32 = 3224933411;
-pub const MGSL_IOCGXSYNC: u32 = 27924;
-pub const HIDIOCGFIELDINFO: u32 = 3224913930;
-pub const VIDIOC_SUBDEV_G_STD: u32 = 2148029975;
-pub const I2OVALIDATE: u32 = 2147772680;
-pub const VIDIOC_TRY_ENCODER_CMD: u32 = 3223869006;
-pub const NILFS_IOCTL_GET_CPINFO: u32 = 2149084802;
-pub const VIDIOC_G_FREQUENCY: u32 = 3224131128;
-pub const VFAT_IOCTL_READDIR_SHORT: u32 = 2184212994;
-pub const ND_IOCTL_GET_CONFIG_DATA: u32 = 3222031877;
-pub const F2FS_IOC_RESERVE_COMPRESS_BLOCKS: u32 = 2148070675;
-pub const FDGETDRVSTAT: u32 = 2152727058;
-pub const SYNC_IOC_MERGE: u32 = 3224387075;
-pub const VIDIOC_S_DV_TIMINGS: u32 = 3229898327;
-pub const PPPIOCBRIDGECHAN: u32 = 1074033717;
-pub const LIRC_SET_SEND_MODE: u32 = 1074030865;
-pub const RIO_ENABLE_PORTWRITE_RANGE: u32 = 1074818315;
-pub const ATM_GETTYPE: u32 = 1074815364;
-pub const PHN_GETREGS: u32 = 3223875591;
-pub const FDSETEMSGTRESH: u32 = 586;
-pub const NILFS_IOCTL_GET_VINFO: u32 = 3222826630;
-pub const MGSL_IOCWAITEVENT: u32 = 3221515528;
-pub const CAPI_INSTALLED: u32 = 2147631906;
-pub const EVIOCGMASK: u32 = 2148550034;
-pub const BTRFS_IOC_SUBVOL_GETFLAGS: u32 = 2148045849;
-pub const FSL_HV_IOCTL_PARTITION_GET_STATUS: u32 = 3222056706;
-pub const MEDIA_IOC_ENUM_ENTITIES: u32 = 3238034433;
-pub const GSMIOC_GETFIRST: u32 = 2147763972;
-pub const FW_CDEV_IOC_FLUSH_ISO: u32 = 1074012952;
-pub const VIDIOC_DBG_G_CHIP_INFO: u32 = 3234354790;
-pub const F2FS_IOC_RELEASE_VOLATILE_WRITE: u32 = 62724;
-pub const CAPI_GET_SERIAL: u32 = 3221504776;
-pub const FDSETDRVPRM: u32 = 1082131088;
-pub const IOC_OPAL_SAVE: u32 = 1092120796;
-pub const VIDIOC_G_DV_TIMINGS: u32 = 3229898328;
-pub const TUNSETIFINDEX: u32 = 1074025690;
-pub const CCISS_SETINTINFO: u32 = 1074283011;
-pub const CM_IOSDBGLVL: u32 = 1074291706;
-pub const RTC_VL_CLR: u32 = 28692;
-pub const VIDIOC_REQBUFS: u32 = 3222558216;
-pub const USBDEVFS_REAPURBNDELAY32: u32 = 1074025741;
-pub const TEE_IOC_SHM_REGISTER: u32 = 3222840329;
-pub const USBDEVFS_SETCONFIGURATION: u32 = 2147767557;
-pub const CCISS_GETNODENAME: u32 = 2148549124;
-pub const VIDIOC_SUBDEV_S_FRAME_INTERVAL: u32 = 3224393238;
-pub const VIDIOC_ENUM_FRAMESIZES: u32 = 3224131146;
-pub const VFIO_DEVICE_PCI_HOT_RESET: u32 = 15217;
-pub const FW_CDEV_IOC_SEND_BROADCAST_REQUEST: u32 = 1076372242;
-pub const LPSETTIMEOUT_NEW: u32 = 1074791951;
-pub const RIO_CM_MPORT_GET_LIST: u32 = 3221512971;
-pub const FW_CDEV_IOC_QUEUE_ISO: u32 = 3222807305;
-pub const FDRAWCMD: u32 = 600;
-pub const SCIF_UNREG: u32 = 3222303497;
-pub const PPPIOCGIDLE64: u32 = 2148561983;
-pub const USBDEVFS_RELEASEINTERFACE: u32 = 2147767568;
-pub const VIDIOC_CROPCAP: u32 = 3224131130;
-pub const DFL_FPGA_PORT_GET_INFO: u32 = 46657;
-pub const PHN_SET_REGS: u32 = 1074294787;
-pub const ATMLEC_DATA: u32 = 25041;
-pub const PPPOEIOCDFWD: u32 = 45313;
-pub const VIDIOC_S_SELECTION: u32 = 3225441887;
-pub const SNAPSHOT_FREE_SWAP_PAGES: u32 = 13065;
-pub const BTRFS_IOC_LOGICAL_INO: u32 = 3224933412;
-pub const VIDIOC_S_CTRL: u32 = 3221771804;
-pub const ZATM_SETPOOL: u32 = 1074815331;
-pub const MTIOCPOS: u32 = 2148035843;
-pub const PMU_IOC_SLEEP: u32 = 16896;
-pub const AUTOFS_DEV_IOCTL_PROTOSUBVER: u32 = 3222836083;
-pub const VBG_IOCTL_CHANGE_FILTER_MASK: u32 = 3223344652;
-pub const NILFS_IOCTL_GET_SUSTAT: u32 = 2150657669;
-pub const VIDIOC_QUERYCAP: u32 = 2154321408;
-pub const HPET_INFO: u32 = 2149083139;
-pub const VIDIOC_AM437X_CCDC_CFG: u32 = 1074288321;
-pub const DM_LIST_DEVICES: u32 = 3241737474;
-pub const TUNSETOWNER: u32 = 1074025676;
-pub const VBG_IOCTL_CHANGE_GUEST_CAPABILITIES: u32 = 3223344654;
-pub const RNDADDENTROPY: u32 = 1074287107;
-pub const USBDEVFS_RESET: u32 = 21780;
-pub const BTRFS_IOC_SUBVOL_CREATE: u32 = 1342215182;
-pub const USBDEVFS_FORBID_SUSPEND: u32 = 21793;
-pub const FDGETDRVTYP: u32 = 2148532751;
-pub const PPWCONTROL: u32 = 1073836164;
-pub const VIDIOC_ENUM_FRAMEINTERVALS: u32 = 3224655435;
-pub const KCOV_DISABLE: u32 = 25445;
-pub const IOC_OPAL_ACTIVATE_LSP: u32 = 1092120799;
-pub const VHOST_VDPA_GET_IOVA_RANGE: u32 = 2148577144;
-pub const PPPIOCSPASS: u32 = 1074820167;
-pub const RIO_CM_CHAN_CONNECT: u32 = 1074291464;
-pub const I2OSWDEL: u32 = 3224398087;
-pub const FS_IOC_SET_ENCRYPTION_POLICY: u32 = 2148296211;
-pub const IOC_OPAL_MBR_DONE: u32 = 1091596521;
-pub const PPPIOCSMAXCID: u32 = 1074033745;
-pub const PPSETPHASE: u32 = 1074032788;
-pub const VHOST_VDPA_SET_VRING_ENABLE: u32 = 1074311029;
-pub const USBDEVFS_GET_SPEED: u32 = 21791;
-pub const SONET_GETFRAMING: u32 = 2147770646;
-pub const VIDIOC_QUERYBUF: u32 = 3227014665;
-pub const VIDIOC_S_EDID: u32 = 3223868969;
-pub const BTRFS_IOC_QGROUP_ASSIGN: u32 = 1075352617;
-pub const PPS_GETCAP: u32 = 2148036771;
-pub const SNAPSHOT_PLATFORM_SUPPORT: u32 = 13071;
-pub const LIRC_SET_REC_TIMEOUT_REPORTS: u32 = 1074030873;
-pub const SCIF_GET_NODEIDS: u32 = 3222827790;
-pub const NBD_DISCONNECT: u32 = 43784;
-pub const VIDIOC_SUBDEV_G_FRAME_INTERVAL: u32 = 3224393237;
-pub const VFIO_IOMMU_DISABLE: u32 = 15220;
-pub const SNAPSHOT_CREATE_IMAGE: u32 = 1074017041;
-pub const SNAPSHOT_POWER_OFF: u32 = 13072;
-pub const APM_IOC_STANDBY: u32 = 16641;
-pub const PPPIOCGUNIT: u32 = 2147775574;
-pub const AUTOFS_IOC_EXPIRE_MULTI: u32 = 1074041702;
-pub const SCIF_BIND: u32 = 3221779201;
-pub const IOC_WATCH_QUEUE_SET_SIZE: u32 = 22368;
-pub const NILFS_IOCTL_CHANGE_CPMODE: u32 = 1074818688;
-pub const IOC_OPAL_LOCK_UNLOCK: u32 = 1092120797;
-pub const F2FS_IOC_SET_PIN_FILE: u32 = 1074066701;
-pub const PPPIOCGRASYNCMAP: u32 = 2147775573;
-pub const MMTIMER_MMAPAVAIL: u32 = 27910;
-pub const I2OPASSTHRU32: u32 = 2148034828;
-pub const DFL_FPGA_FME_PORT_RELEASE: u32 = 1074050689;
-pub const VIDIOC_SUBDEV_QUERY_DV_TIMINGS: u32 = 2156156515;
-pub const UI_SET_SNDBIT: u32 = 1074025834;
-pub const VIDIOC_G_AUDOUT: u32 = 2150913585;
-pub const RTC_PLL_SET: u32 = 1075867666;
-pub const VIDIOC_ENUMAUDIO: u32 = 3224655425;
-pub const AUTOFS_DEV_IOCTL_TIMEOUT: u32 = 3222836090;
-pub const VBG_IOCTL_DRIVER_VERSION_INFO: u32 = 3224131072;
-pub const VHOST_SCSI_GET_EVENTS_MISSED: u32 = 1074048836;
-pub const VHOST_SET_VRING_ADDR: u32 = 1076408081;
-pub const VDUSE_CREATE_DEV: u32 = 1095794946;
-pub const FDFLUSH: u32 = 587;
-pub const VBG_IOCTL_WAIT_FOR_EVENTS: u32 = 3223344650;
-pub const DFL_FPGA_FME_ERR_SET_IRQ: u32 = 1074312836;
-pub const F2FS_IOC_GET_PIN_FILE: u32 = 2147808526;
-pub const SCIF_CONNECT: u32 = 3221779203;
-pub const BLKREPORTZONE: u32 = 3222278786;
-pub const AUTOFS_IOC_ASKUMOUNT: u32 = 2147783536;
-pub const ATM_ADDPARTY: u32 = 1074815476;
-pub const FDSETPRM: u32 = 1075839554;
-pub const ATM_GETSTATZ: u32 = 1074815313;
-pub const ISST_IF_MSR_COMMAND: u32 = 3221814788;
-pub const BTRFS_IOC_GET_SUBVOL_INFO: u32 = 2180551740;
-pub const VIDIOC_UNSUBSCRIBE_EVENT: u32 = 1075861083;
-pub const SEV_ISSUE_CMD: u32 = 3222295296;
-pub const GPIOHANDLE_SET_LINE_VALUES_IOCTL: u32 = 3225465865;
-pub const PCITEST_COPY: u32 = 1074286598;
-pub const IPMICTL_GET_MY_ADDRESS_CMD: u32 = 2147772690;
-pub const CHIOGPICKER: u32 = 2147771140;
-pub const CAPI_NCCI_OPENCOUNT: u32 = 2147762982;
-pub const CXL_MEM_SEND_COMMAND: u32 = 3224423938;
-pub const PERF_EVENT_IOC_SET_FILTER: u32 = 1074275334;
-pub const IOC_OPAL_REVERT_TPR: u32 = 1091072226;
-pub const CHIOGVPARAMS: u32 = 2154849043;
-pub const PTP_PEROUT_REQUEST: u32 = 1077427459;
-pub const FSI_SCOM_CHECK: u32 = 2147775232;
-pub const RTC_IRQP_READ: u32 = 2148036619;
-pub const RIO_MPORT_MAINT_READ_LOCAL: u32 = 2149084421;
-pub const HIDIOCGRDESCSIZE: u32 = 2147764225;
-pub const UI_GET_VERSION: u32 = 2147767597;
-pub const NILFS_IOCTL_GET_CPSTAT: u32 = 2149084803;
-pub const CCISS_GETBUSTYPES: u32 = 2147762695;
-pub const VFIO_IOMMU_SPAPR_TCE_CREATE: u32 = 15223;
-pub const VIDIOC_EXPBUF: u32 = 3225441808;
-pub const UI_SET_RELBIT: u32 = 1074025830;
-pub const VFIO_SET_IOMMU: u32 = 15206;
-pub const VIDIOC_S_MODULATOR: u32 = 1078220343;
-pub const TUNGETFILTER: u32 = 2148553947;
-pub const MEYEIOC_SYNC: u32 = 3221518019;
-pub const CCISS_SETNODENAME: u32 = 1074807301;
-pub const FBIO_GETCONTROL2: u32 = 2148025993;
-pub const TUNSETDEBUG: u32 = 1074025673;
-pub const DM_DEV_REMOVE: u32 = 3241737476;
-pub const HIDIOCSUSAGES: u32 = 1344030740;
-pub const FS_IOC_ADD_ENCRYPTION_KEY: u32 = 3226494487;
-pub const FBIOGET_VBLANK: u32 = 2149598738;
-pub const ATM_GETSTAT: u32 = 1074815312;
-pub const VIDIOC_G_JPEGCOMP: u32 = 2156680765;
-pub const TUNATTACHFILTER: u32 = 1074812117;
-pub const UI_SET_ABSBIT: u32 = 1074025831;
-pub const DFL_FPGA_PORT_ERR_GET_IRQ_NUM: u32 = 2147792453;
-pub const USBDEVFS_REAPURB32: u32 = 1074025740;
-pub const BTRFS_IOC_TRANS_END: u32 = 37895;
-pub const CAPI_REGISTER: u32 = 1074545409;
-pub const F2FS_IOC_COMPRESS_FILE: u32 = 62744;
-pub const USBDEVFS_DISCARDURB: u32 = 21771;
-pub const HE_GET_REG: u32 = 1074815328;
-pub const ATM_SETLOOP: u32 = 1074815315;
-pub const ATMSIGD_CTRL: u32 = 25072;
-pub const CIOC_KERNEL_VERSION: u32 = 3221775114;
-pub const BTRFS_IOC_CLONE_RANGE: u32 = 1075876877;
-pub const SNAPSHOT_UNFREEZE: u32 = 13058;
-pub const F2FS_IOC_START_VOLATILE_WRITE: u32 = 62723;
-pub const PMU_IOC_HAS_ADB: u32 = 2148024836;
-pub const I2OGETIOPS: u32 = 2149607680;
-pub const VIDIOC_S_FBUF: u32 = 1076909579;
-pub const PPRCONTROL: u32 = 2147577987;
-pub const CHIOSPICKER: u32 = 1074029317;
-pub const VFIO_IOMMU_SPAPR_REGISTER_MEMORY: u32 = 15221;
-pub const TUNGETSNDBUF: u32 = 2147767507;
-pub const GSMIOC_SETCONF: u32 = 1078740737;
-pub const IOC_PR_PREEMPT: u32 = 1075343563;
-pub const KCOV_INIT_TRACE: u32 = 2148033281;
-pub const SONYPI_IOCGBAT1CAP: u32 = 2147644930;
-pub const SWITCHTEC_IOCTL_FLASH_INFO: u32 = 2148554560;
-pub const MTIOCTOP: u32 = 1074294017;
-pub const VHOST_VDPA_SET_STATUS: u32 = 1073852274;
-pub const VHOST_SCSI_SET_EVENTS_MISSED: u32 = 1074048835;
-pub const VFIO_IOMMU_DIRTY_PAGES: u32 = 15221;
-pub const BTRFS_IOC_SCRUB_PROGRESS: u32 = 3288372253;
-pub const PPPIOCGMRU: u32 = 2147775571;
-pub const BTRFS_IOC_DEV_REPLACE: u32 = 3391657013;
-pub const PPPIOCGFLAGS: u32 = 2147775578;
-pub const NILFS_IOCTL_SET_SUINFO: u32 = 1075342989;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER2: u32 = 3222807316;
-pub const ATM_DELLECSADDR: u32 = 1074815375;
-pub const FW_CDEV_IOC_GET_SPEED: u32 = 8977;
-pub const PPPIOCGIDLE32: u32 = 2148037695;
-pub const VFIO_DEVICE_RESET: u32 = 15215;
-pub const GPIO_GET_LINEINFO_UNWATCH_IOCTL: u32 = 3221533708;
-pub const WDIOC_GETSTATUS: u32 = 2147768065;
-pub const BTRFS_IOC_SET_FEATURES: u32 = 1076925497;
-pub const IOCTL_MEI_CONNECT_CLIENT: u32 = 3222292481;
-pub const VIDIOC_OMAP3ISP_AEWB_CFG: u32 = 3223344835;
-pub const PCITEST_READ: u32 = 1074286597;
-pub const VFIO_GROUP_GET_STATUS: u32 = 15207;
-pub const MATROXFB_GET_ALL_OUTPUTS: u32 = 2148036347;
-pub const USBDEVFS_CLEAR_HALT: u32 = 2147767573;
-pub const VIDIOC_DECODER_CMD: u32 = 3225966176;
-pub const VIDIOC_G_AUDIO: u32 = 2150913569;
-pub const CCISS_RESCANDISK: u32 = 16912;
-pub const RIO_DISABLE_PORTWRITE_RANGE: u32 = 1074818316;
-pub const IOC_OPAL_SECURE_ERASE_LR: u32 = 1091596519;
-pub const USBDEVFS_REAPURB: u32 = 1074287884;
-pub const DFL_FPGA_CHECK_EXTENSION: u32 = 46593;
-pub const AUTOFS_IOC_PROTOVER: u32 = 2147783523;
-pub const FSL_HV_IOCTL_MEMCPY: u32 = 3223891717;
-pub const BTRFS_IOC_GET_FEATURES: u32 = 2149094457;
-pub const PCITEST_MSIX: u32 = 1074024455;
-pub const BTRFS_IOC_DEFRAG_RANGE: u32 = 1076925456;
-pub const UI_BEGIN_FF_ERASE: u32 = 3222033866;
-pub const DM_GET_TARGET_VERSION: u32 = 3241737489;
-pub const PPPIOCGIDLE: u32 = 2148561983;
-pub const NVRAM_SETCKS: u32 = 28737;
-pub const WDIOC_GETSUPPORT: u32 = 2150127360;
-pub const GSMIOC_ENABLE_NET: u32 = 1077167874;
-pub const GPIO_GET_CHIPINFO_IOCTL: u32 = 2151986177;
-pub const NE_ADD_VCPU: u32 = 3221532193;
-pub const EVIOCSKEYCODE_V2: u32 = 1076380932;
-pub const PTP_SYS_OFFSET_EXTENDED2: u32 = 3300932882;
-pub const SCIF_FENCE_WAIT: u32 = 3221517072;
-pub const RIO_TRANSFER: u32 = 3222826261;
-pub const FSL_HV_IOCTL_DOORBELL: u32 = 3221794566;
-pub const RIO_MPORT_MAINT_WRITE_LOCAL: u32 = 1075342598;
-pub const I2OEVTREG: u32 = 1074555146;
-pub const I2OPARMGET: u32 = 3223873796;
-pub const EVIOCGID: u32 = 2148025602;
-pub const BTRFS_IOC_QGROUP_CREATE: u32 = 1074828330;
-pub const AUTOFS_DEV_IOCTL_SETPIPEFD: u32 = 3222836088;
-pub const VIDIOC_S_PARM: u32 = 3234616854;
-pub const TUNSETSTEERINGEBPF: u32 = 2147767520;
-pub const ATM_GETNAMES: u32 = 1074815363;
-pub const VIDIOC_QUERYMENU: u32 = 3224131109;
-pub const DFL_FPGA_PORT_DMA_UNMAP: u32 = 46660;
-pub const I2OLCTGET: u32 = 3222825218;
-pub const FS_IOC_GET_ENCRYPTION_PWSALT: u32 = 1074816532;
-pub const NS_SETBUFLEV: u32 = 1074815330;
-pub const BLKCLOSEZONE: u32 = 1074795143;
-pub const SONET_GETFRSENSE: u32 = 2147901719;
-pub const UI_SET_EVBIT: u32 = 1074025828;
-pub const DM_LIST_VERSIONS: u32 = 3241737485;
-pub const HIDIOCGSTRING: u32 = 2164541444;
-pub const PPPIOCATTCHAN: u32 = 1074033720;
-pub const VDUSE_DEV_SET_CONFIG: u32 = 1074299154;
-pub const TUNGETFEATURES: u32 = 2147767503;
-pub const VFIO_GROUP_UNSET_CONTAINER: u32 = 15209;
-pub const IPMICTL_SET_MY_ADDRESS_CMD: u32 = 2147772689;
-pub const CCISS_REGNEWDISK: u32 = 1074020877;
-pub const VIDIOC_QUERY_DV_TIMINGS: u32 = 2156156515;
-pub const PHN_SETREGS: u32 = 1076391944;
-pub const FAT_IOCTL_GET_ATTRIBUTES: u32 = 2147774992;
-pub const FSL_MC_SEND_MC_COMMAND: u32 = 3225440992;
-pub const TUNGETIFF: u32 = 2147767506;
-pub const PTP_CLOCK_GETCAPS2: u32 = 2152742154;
-pub const BTRFS_IOC_RESIZE: u32 = 1342215171;
-pub const VHOST_SET_VRING_ENDIAN: u32 = 1074310931;
-pub const PPS_KC_BIND: u32 = 1074294949;
-pub const F2FS_IOC_WRITE_CHECKPOINT: u32 = 62727;
-pub const UI_SET_FFBIT: u32 = 1074025835;
-pub const IPMICTL_GET_MY_LUN_CMD: u32 = 2147772692;
-pub const CEC_ADAP_G_PHYS_ADDR: u32 = 2147639553;
-pub const CEC_G_MODE: u32 = 2147770632;
-pub const USBDEVFS_RESETEP: u32 = 2147767555;
-pub const MEDIA_REQUEST_IOC_QUEUE: u32 = 31872;
-pub const USBDEVFS_ALLOC_STREAMS: u32 = 2148029724;
-pub const MGSL_IOCSXCTRL: u32 = 27925;
-pub const MEDIA_IOC_G_TOPOLOGY: u32 = 3225975812;
-pub const PPPIOCUNBRIDGECHAN: u32 = 29748;
-pub const F2FS_IOC_COMMIT_ATOMIC_WRITE: u32 = 62722;
-pub const ISST_IF_GET_PLATFORM_INFO: u32 = 2148072960;
-pub const SCIF_FENCE_MARK: u32 = 3222303503;
-pub const USBDEVFS_RELEASE_PORT: u32 = 2147767577;
-pub const VFIO_CHECK_EXTENSION: u32 = 15205;
-pub const BTRFS_IOC_QGROUP_LIMIT: u32 = 2150667307;
-pub const FAT_IOCTL_GET_VOLUME_ID: u32 = 2147774995;
-pub const UI_SET_PHYS: u32 = 1074287980;
-pub const FDWERRORGET: u32 = 2150105623;
-pub const VIDIOC_SUBDEV_G_EDID: u32 = 3223868968;
-pub const MGSL_IOCGSTATS: u32 = 27911;
-pub const RPROC_SET_SHUTDOWN_ON_RELEASE: u32 = 1074050817;
-pub const SIOCGSTAMP_NEW: u32 = 2148567302;
-pub const RTC_WKALM_RD: u32 = 2150133776;
-pub const PHN_GET_REG: u32 = 3221778432;
-pub const DELL_WMI_SMBIOS_CMD: u32 = 3224655616;
-pub const PHN_NOT_OH: u32 = 28676;
-pub const PPGETMODES: u32 = 2147774615;
-pub const CHIOGPARAMS: u32 = 2148819718;
-pub const VFIO_DEVICE_GET_GFX_DMABUF: u32 = 15219;
-pub const VHOST_SET_VRING_BUSYLOOP_TIMEOUT: u32 = 1074310947;
-pub const VIDIOC_SUBDEV_G_SELECTION: u32 = 3225441853;
-pub const BTRFS_IOC_RM_DEV_V2: u32 = 1342215226;
-pub const MGSL_IOCWAITGPIO: u32 = 3222301970;
-pub const PMU_IOC_CAN_SLEEP: u32 = 2148024837;
-pub const KCOV_ENABLE: u32 = 25444;
-pub const BTRFS_IOC_CLONE: u32 = 1074041865;
-pub const F2FS_IOC_DEFRAGMENT: u32 = 3222336776;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE: u32 = 1074012942;
-pub const AGPIOC_ALLOCATE: u32 = 3221766406;
-pub const NE_SET_USER_MEMORY_REGION: u32 = 1075359267;
-pub const MGSL_IOCTXABORT: u32 = 27910;
-pub const MGSL_IOCSGPIO: u32 = 1074818320;
-pub const LIRC_SET_REC_CARRIER: u32 = 1074030868;
-pub const F2FS_IOC_FLUSH_DEVICE: u32 = 1074328842;
-pub const SNAPSHOT_ATOMIC_RESTORE: u32 = 13060;
-pub const RTC_UIE_OFF: u32 = 28676;
-pub const BT_BMC_IOCTL_SMS_ATN: u32 = 45312;
-pub const NVME_IOCTL_ID: u32 = 20032;
-pub const NE_START_ENCLAVE: u32 = 3222318628;
-pub const VIDIOC_STREAMON: u32 = 1074026002;
-pub const FDPOLLDRVSTAT: u32 = 2152727059;
-pub const AUTOFS_DEV_IOCTL_READY: u32 = 3222836086;
-pub const VIDIOC_ENUMAUDOUT: u32 = 3224655426;
-pub const VIDIOC_SUBDEV_S_STD: u32 = 1074288152;
-pub const WDIOC_GETTIMELEFT: u32 = 2147768074;
-pub const ATM_GETLINKRATE: u32 = 1074815361;
-pub const RTC_WKALM_SET: u32 = 1076391951;
-pub const VHOST_GET_BACKEND_FEATURES: u32 = 2148052774;
-pub const ATMARP_ENCAP: u32 = 25061;
-pub const CAPI_GET_FLAGS: u32 = 2147762979;
-pub const IPMICTL_SET_MY_CHANNEL_ADDRESS_CMD: u32 = 2147772696;
-pub const DFL_FPGA_FME_PORT_ASSIGN: u32 = 1074050690;
-pub const NS_GET_OWNER_UID: u32 = 46852;
-pub const VIDIOC_OVERLAY: u32 = 1074025998;
-pub const BTRFS_IOC_WAIT_SYNC: u32 = 1074304022;
-pub const GPIOHANDLE_SET_CONFIG_IOCTL: u32 = 3226776586;
-pub const VHOST_GET_VRING_ENDIAN: u32 = 1074310932;
-pub const ATM_GETADDR: u32 = 1074815366;
-pub const PHN_GET_REGS: u32 = 3221778434;
-pub const AUTOFS_DEV_IOCTL_REQUESTER: u32 = 3222836091;
-pub const AUTOFS_DEV_IOCTL_EXPIRE: u32 = 3222836092;
-pub const SNAPSHOT_S2RAM: u32 = 13067;
-pub const JSIOCSAXMAP: u32 = 1077963313;
-pub const F2FS_IOC_SET_COMPRESS_OPTION: u32 = 1073935638;
-pub const VBG_IOCTL_HGCM_DISCONNECT: u32 = 3223082501;
-pub const SCIF_FENCE_SIGNAL: u32 = 3223876369;
-pub const VFIO_DEVICE_GET_PCI_HOT_RESET_INFO: u32 = 15216;
-pub const VIDIOC_SUBDEV_ENUM_MBUS_CODE: u32 = 3224393218;
-pub const MMTIMER_GETOFFSET: u32 = 27904;
-pub const RIO_CM_CHAN_LISTEN: u32 = 1073898246;
-pub const ATM_SETSC: u32 = 1074029041;
-pub const F2FS_IOC_SHUTDOWN: u32 = 2147768445;
-pub const NVME_IOCTL_RESCAN: u32 = 20038;
-pub const BLKOPENZONE: u32 = 1074795142;
-pub const DM_VERSION: u32 = 3241737472;
-pub const CEC_TRANSMIT: u32 = 3224920325;
-pub const FS_IOC_GET_ENCRYPTION_POLICY_EX: u32 = 3221841430;
-pub const SIOCMKCLIP: u32 = 25056;
-pub const IPMI_BMC_IOCTL_CLEAR_SMS_ATN: u32 = 45313;
-pub const HIDIOCGVERSION: u32 = 2147764225;
-pub const VIDIOC_S_INPUT: u32 = 3221509671;
-pub const VIDIOC_G_CROP: u32 = 3222558267;
-pub const LIRC_SET_WIDEBAND_RECEIVER: u32 = 1074030883;
-pub const EVIOCGEFFECTS: u32 = 2147763588;
-pub const UVCIOC_CTRL_QUERY: u32 = 3222304033;
-pub const IOC_OPAL_GENERIC_TABLE_RW: u32 = 1094217963;
-pub const FS_IOC_READ_VERITY_METADATA: u32 = 3223873159;
-pub const ND_IOCTL_SET_CONFIG_DATA: u32 = 3221769734;
-pub const USBDEVFS_GETDRIVER: u32 = 1090802952;
-pub const IDT77105_GETSTAT: u32 = 1074815282;
-pub const HIDIOCINITREPORT: u32 = 18437;
-pub const VFIO_DEVICE_GET_INFO: u32 = 15211;
-pub const RIO_CM_CHAN_RECEIVE: u32 = 3222299402;
-pub const RNDGETENTCNT: u32 = 2147766784;
-pub const PPPIOCNEWUNIT: u32 = 3221517374;
-pub const BTRFS_IOC_INO_LOOKUP: u32 = 3489698834;
-pub const FDRESET: u32 = 596;
-pub const IOC_PR_REGISTER: u32 = 1075343560;
-pub const HIDIOCSREPORT: u32 = 1074546696;
-pub const TEE_IOC_OPEN_SESSION: u32 = 2148574210;
-pub const TEE_IOC_SUPPL_RECV: u32 = 2148574214;
-pub const BTRFS_IOC_BALANCE_CTL: u32 = 1074041889;
-pub const GPIO_GET_LINEINFO_WATCH_IOCTL: u32 = 3225990155;
-pub const HIDIOCGRAWINFO: u32 = 2148026371;
-pub const PPPIOCSCOMPRESS: u32 = 1074820173;
-pub const USBDEVFS_CONNECTINFO: u32 = 1074287889;
-pub const BLKRESETZONE: u32 = 1074795139;
-pub const CHIOINITELEM: u32 = 25361;
-pub const NILFS_IOCTL_SET_ALLOC_RANGE: u32 = 1074818700;
-pub const AUTOFS_DEV_IOCTL_CATATONIC: u32 = 3222836089;
-pub const RIO_MPORT_MAINT_HDID_SET: u32 = 1073900801;
-pub const PPGETPHASE: u32 = 2147774617;
-pub const USBDEVFS_DISCONNECT_CLAIM: u32 = 2164806939;
-pub const FDMSGON: u32 = 581;
-pub const VIDIOC_G_SLICED_VBI_CAP: u32 = 3228849733;
-pub const BTRFS_IOC_BALANCE_V2: u32 = 3288372256;
-pub const MEDIA_REQUEST_IOC_REINIT: u32 = 31873;
-pub const IOC_OPAL_ERASE_LR: u32 = 1091596518;
-pub const FDFMTBEG: u32 = 583;
-pub const RNDRESEEDCRNG: u32 = 20999;
-pub const ISST_IF_GET_PHY_ID: u32 = 3221814785;
-pub const TUNSETNOCSUM: u32 = 1074025672;
-pub const SONET_GETSTAT: u32 = 2149867792;
-pub const TFD_IOC_SET_TICKS: u32 = 1074287616;
-pub const PPDATADIR: u32 = 1074032784;
-pub const IOC_OPAL_ENABLE_DISABLE_MBR: u32 = 1091596517;
-pub const GPIO_V2_GET_LINE_IOCTL: u32 = 3260068871;
-pub const RIO_CM_CHAN_SEND: u32 = 1074815753;
-pub const PPWCTLONIRQ: u32 = 1073836178;
-pub const SONYPI_IOCGBRT: u32 = 2147579392;
-pub const IOC_PR_RELEASE: u32 = 1074819274;
-pub const PPCLRIRQ: u32 = 2147774611;
-pub const IPMICTL_SET_MY_CHANNEL_LUN_CMD: u32 = 2147772698;
-pub const MGSL_IOCSXSYNC: u32 = 27923;
-pub const HPET_IE_OFF: u32 = 26626;
-pub const IOC_OPAL_ACTIVATE_USR: u32 = 1091596513;
-pub const SONET_SETFRAMING: u32 = 1074028821;
-pub const PERF_EVENT_IOC_PAUSE_OUTPUT: u32 = 1074013193;
-pub const BTRFS_IOC_LOGICAL_INO_V2: u32 = 3224933435;
-pub const VBG_IOCTL_HGCM_CONNECT: u32 = 3231471108;
-pub const BLKFINISHZONE: u32 = 1074795144;
-pub const EVIOCREVOKE: u32 = 1074021777;
-pub const VFIO_DEVICE_FEATURE: u32 = 15221;
-pub const CCISS_GETPCIINFO: u32 = 2148024833;
-pub const ISST_IF_MBOX_COMMAND: u32 = 3221814787;
-pub const SCIF_ACCEPTREQ: u32 = 3222303492;
-pub const PERF_EVENT_IOC_QUERY_BPF: u32 = 3221758986;
-pub const VIDIOC_STREAMOFF: u32 = 1074026003;
-pub const VDUSE_DESTROY_DEV: u32 = 1090552067;
-pub const FDGETFDCSTAT: u32 = 2150105621;
-pub const CM_IOCGATR: u32 = 3221775105;
-pub const VIDIOC_S_PRIORITY: u32 = 1074026052;
-pub const SNAPSHOT_FREEZE: u32 = 13057;
-pub const VIDIOC_ENUMINPUT: u32 = 3226490394;
-pub const ZATM_GETPOOLZ: u32 = 1074815330;
-pub const RIO_DISABLE_DOORBELL_RANGE: u32 = 1074294026;
-pub const GPIO_V2_GET_LINEINFO_WATCH_IOCTL: u32 = 3238048774;
-pub const VIDIOC_G_STD: u32 = 2148029975;
-pub const USBDEVFS_ALLOW_SUSPEND: u32 = 21794;
-pub const SONET_GETSTATZ: u32 = 2149867793;
-pub const SCIF_ACCEPTREG: u32 = 3221779205;
-pub const VIDIOC_ENCODER_CMD: u32 = 3223869005;
-pub const PPPIOCSRASYNCMAP: u32 = 1074033748;
-pub const IOCTL_MEI_NOTIFY_SET: u32 = 1074022402;
-pub const BTRFS_IOC_QUOTA_RESCAN_STATUS: u32 = 2151715885;
-pub const F2FS_IOC_GARBAGE_COLLECT: u32 = 1074066694;
-pub const ATMLEC_CTRL: u32 = 25040;
-pub const MATROXFB_GET_AVAILABLE_OUTPUTS: u32 = 2148036345;
-pub const DM_DEV_CREATE: u32 = 3241737475;
-pub const VHOST_VDPA_GET_VRING_NUM: u32 = 2147659638;
-pub const VIDIOC_G_CTRL: u32 = 3221771803;
-pub const NBD_CLEAR_SOCK: u32 = 43780;
-pub const VFIO_DEVICE_QUERY_GFX_PLANE: u32 = 15218;
-pub const WDIOC_KEEPALIVE: u32 = 2147768069;
-pub const NVME_IOCTL_SUBSYS_RESET: u32 = 20037;
-pub const PTP_EXTTS_REQUEST2: u32 = 1074806027;
-pub const PCITEST_BAR: u32 = 20481;
-pub const MGSL_IOCGGPIO: u32 = 2148560145;
-pub const EVIOCSREP: u32 = 1074283779;
-pub const VFIO_DEVICE_GET_IRQ_INFO: u32 = 15213;
-pub const HPET_DPI: u32 = 26629;
-pub const VDUSE_VQ_SETUP_KICKFD: u32 = 1074299158;
-pub const ND_IOCTL_CALL: u32 = 3225439754;
-pub const HIDIOCGDEVINFO: u32 = 2149337091;
-pub const DM_TABLE_DEPS: u32 = 3241737483;
-pub const BTRFS_IOC_DEV_INFO: u32 = 3489698846;
-pub const VDUSE_IOTLB_GET_FD: u32 = 3223355664;
-pub const FW_CDEV_IOC_GET_INFO: u32 = 3223855872;
-pub const VIDIOC_G_PRIORITY: u32 = 2147767875;
-pub const ATM_NEWBACKENDIF: u32 = 1073897971;
-pub const VIDIOC_S_EXT_CTRLS: u32 = 3223344712;
-pub const VIDIOC_SUBDEV_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const VIDIOC_OMAP3ISP_CCDC_CFG: u32 = 3224917697;
-pub const VIDIOC_S_HW_FREQ_SEEK: u32 = 1076909650;
-pub const DM_TABLE_LOAD: u32 = 3241737481;
-pub const F2FS_IOC_START_ATOMIC_WRITE: u32 = 62721;
-pub const VIDIOC_G_OUTPUT: u32 = 2147767854;
-pub const ATM_DROPPARTY: u32 = 1074029045;
-pub const CHIOGELEM: u32 = 1080845072;
-pub const BTRFS_IOC_GET_SUPPORTED_FEATURES: u32 = 2152240185;
-pub const EVIOCSKEYCODE: u32 = 1074283780;
-pub const NE_GET_IMAGE_LOAD_INFO: u32 = 3222318626;
-pub const TUNSETLINK: u32 = 1074025677;
-pub const FW_CDEV_IOC_ADD_DESCRIPTOR: u32 = 3222807302;
-pub const BTRFS_IOC_SCRUB_CANCEL: u32 = 37916;
-pub const PPS_SETPARAMS: u32 = 1074294946;
-pub const IOC_OPAL_LR_SETUP: u32 = 1093169379;
-pub const FW_CDEV_IOC_DEALLOCATE: u32 = 1074012931;
-pub const WDIOC_SETTIMEOUT: u32 = 3221509894;
-pub const IOC_WATCH_QUEUE_SET_FILTER: u32 = 22369;
-pub const CAPI_GET_MANUFACTURER: u32 = 3221504774;
-pub const VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY: u32 = 15222;
-pub const ASPEED_P2A_CTRL_IOCTL_SET_WINDOW: u32 = 1074836224;
-pub const VIDIOC_G_EDID: u32 = 3223868968;
-pub const F2FS_IOC_GARBAGE_COLLECT_RANGE: u32 = 1075377419;
-pub const RIO_MAP_INBOUND: u32 = 3223874833;
-pub const IOC_OPAL_TAKE_OWNERSHIP: u32 = 1091072222;
-pub const USBDEVFS_CLAIM_PORT: u32 = 2147767576;
-pub const VIDIOC_S_AUDIO: u32 = 1077171746;
-pub const FS_IOC_GET_ENCRYPTION_NONCE: u32 = 2148558363;
-pub const FW_CDEV_IOC_SEND_STREAM_PACKET: u32 = 1076372243;
-pub const BTRFS_IOC_SNAP_DESTROY: u32 = 1342215183;
-pub const SNAPSHOT_FREE: u32 = 13061;
-pub const I8K_GET_SPEED: u32 = 3221776773;
-pub const HIDIOCGREPORT: u32 = 1074546695;
-pub const HPET_EPI: u32 = 26628;
-pub const JSIOCSCORR: u32 = 1076128289;
-pub const IOC_PR_PREEMPT_ABORT: u32 = 1075343564;
-pub const RIO_MAP_OUTBOUND: u32 = 3223874831;
-pub const ATM_SETESI: u32 = 1074815372;
-pub const FW_CDEV_IOC_START_ISO: u32 = 1074799370;
-pub const ATM_DELADDR: u32 = 1074815369;
-pub const PPFCONTROL: u32 = 1073901710;
-pub const SONYPI_IOCGFAN: u32 = 2147579402;
-pub const RTC_IRQP_SET: u32 = 1074294796;
-pub const PCITEST_WRITE: u32 = 1074286596;
-pub const PPCLAIM: u32 = 28811;
-pub const VIDIOC_S_JPEGCOMP: u32 = 1082938942;
-pub const IPMICTL_UNREGISTER_FOR_CMD: u32 = 2147641615;
-pub const VHOST_SET_FEATURES: u32 = 1074310912;
-pub const TOSHIBA_ACPI_SCI: u32 = 3222828177;
-pub const VIDIOC_DQBUF: u32 = 3227014673;
-pub const BTRFS_IOC_BALANCE_PROGRESS: u32 = 2214630434;
-pub const BTRFS_IOC_SUBVOL_SETFLAGS: u32 = 1074304026;
-pub const ATMLEC_MCAST: u32 = 25042;
-pub const MMTIMER_GETFREQ: u32 = 2148035842;
-pub const VIDIOC_G_SELECTION: u32 = 3225441886;
-pub const RTC_ALM_SET: u32 = 1076129799;
-pub const PPPOEIOCSFWD: u32 = 1074311424;
-pub const IPMICTL_GET_MAINTENANCE_MODE_CMD: u32 = 2147772702;
-pub const FS_IOC_ENABLE_VERITY: u32 = 1082156677;
-pub const NILFS_IOCTL_GET_BDESCS: u32 = 3222826631;
-pub const FDFMTEND: u32 = 585;
-pub const DMA_BUF_SET_NAME: u32 = 1074291201;
-pub const UI_BEGIN_FF_UPLOAD: u32 = 3228063176;
-pub const RTC_UIE_ON: u32 = 28675;
-pub const PPRELEASE: u32 = 28812;
-pub const VFIO_IOMMU_UNMAP_DMA: u32 = 15218;
-pub const VIDIOC_OMAP3ISP_PRV_CFG: u32 = 3228587714;
-pub const GPIO_GET_LINEHANDLE_IOCTL: u32 = 3245126659;
-pub const VFAT_IOCTL_READDIR_BOTH: u32 = 2184212993;
-pub const NVME_IOCTL_ADMIN_CMD: u32 = 3225964097;
-pub const VHOST_SET_VRING_KICK: u32 = 1074310944;
-pub const BTRFS_IOC_SUBVOL_CREATE_V2: u32 = 1342215192;
-pub const BTRFS_IOC_SNAP_CREATE: u32 = 1342215169;
-pub const SONYPI_IOCGBAT2CAP: u32 = 2147644932;
-pub const PPNEGOT: u32 = 1074032785;
-pub const NBD_PRINT_DEBUG: u32 = 43782;
-pub const BTRFS_IOC_INO_LOOKUP_USER: u32 = 3489698878;
-pub const BTRFS_IOC_GET_SUBVOL_ROOTREF: u32 = 3489698877;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS: u32 = 3225445913;
-pub const BTRFS_IOC_FS_INFO: u32 = 2214630431;
-pub const VIDIOC_ENUM_FMT: u32 = 3225441794;
-pub const VIDIOC_G_INPUT: u32 = 2147767846;
-pub const VTPM_PROXY_IOC_NEW_DEV: u32 = 3222577408;
-pub const DFL_FPGA_FME_ERR_GET_IRQ_NUM: u32 = 2147792515;
-pub const ND_IOCTL_DIMM_FLAGS: u32 = 3221769731;
-pub const BTRFS_IOC_QUOTA_RESCAN: u32 = 1077974060;
-pub const MMTIMER_GETCOUNTER: u32 = 2148035849;
-pub const MATROXFB_GET_OUTPUT_MODE: u32 = 3221778170;
-pub const BTRFS_IOC_QUOTA_RESCAN_WAIT: u32 = 37934;
-pub const RIO_CM_CHAN_BIND: u32 = 1074291461;
-pub const HIDIOCGRDESC: u32 = 2416199682;
-pub const MGSL_IOCGIF: u32 = 27915;
-pub const VIDIOC_S_OUTPUT: u32 = 3221509679;
-pub const HIDIOCGREPORTINFO: u32 = 3222030345;
-pub const WDIOC_GETBOOTSTATUS: u32 = 2147768066;
-pub const VDUSE_VQ_GET_INFO: u32 = 3224404245;
-pub const ACRN_IOCTL_ASSIGN_PCIDEV: u32 = 1076142677;
-pub const BLKGETDISKSEQ: u32 = 2148012672;
-pub const ACRN_IOCTL_PM_GET_CPU_STATE: u32 = 3221791328;
-pub const ACRN_IOCTL_DESTROY_VM: u32 = 41489;
-pub const ACRN_IOCTL_SET_PTDEV_INTR: u32 = 1075094099;
-pub const ACRN_IOCTL_CREATE_IOREQ_CLIENT: u32 = 41522;
-pub const ACRN_IOCTL_IRQFD: u32 = 1075356273;
-pub const ACRN_IOCTL_CREATE_VM: u32 = 3224412688;
-pub const ACRN_IOCTL_INJECT_MSI: u32 = 1074831907;
-pub const ACRN_IOCTL_ATTACH_IOREQ_CLIENT: u32 = 41523;
-pub const ACRN_IOCTL_RESET_PTDEV_INTR: u32 = 1075094100;
-pub const ACRN_IOCTL_NOTIFY_REQUEST_FINISH: u32 = 1074307633;
-pub const ACRN_IOCTL_SET_IRQLINE: u32 = 1074307621;
-pub const ACRN_IOCTL_START_VM: u32 = 41490;
-pub const ACRN_IOCTL_SET_VCPU_REGS: u32 = 1093181974;
-pub const ACRN_IOCTL_SET_MEMSEG: u32 = 1075880513;
-pub const ACRN_IOCTL_PAUSE_VM: u32 = 41491;
-pub const ACRN_IOCTL_CLEAR_VM_IOREQ: u32 = 41525;
-pub const ACRN_IOCTL_UNSET_MEMSEG: u32 = 1075880514;
-pub const ACRN_IOCTL_IOEVENTFD: u32 = 1075880560;
-pub const ACRN_IOCTL_DEASSIGN_PCIDEV: u32 = 1076142678;
-pub const ACRN_IOCTL_RESET_VM: u32 = 41493;
-pub const ACRN_IOCTL_DESTROY_IOREQ_CLIENT: u32 = 41524;
-pub const ACRN_IOCTL_VM_INTR_MONITOR: u32 = 1074307620;
diff --git a/vendor/linux-raw-sys-0.3.2/src/aarch64/netlink.rs b/vendor/linux-raw-sys-0.3.2/src/aarch64/netlink.rs
deleted file mode 100644
index c088e0016..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/aarch64/netlink.rs
+++ /dev/null
@@ -1,2861 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const __BITS_PER_LONG: u32 = 64;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const NETLINK_ROUTE: u32 = 0;
-pub const NETLINK_UNUSED: u32 = 1;
-pub const NETLINK_USERSOCK: u32 = 2;
-pub const NETLINK_FIREWALL: u32 = 3;
-pub const NETLINK_SOCK_DIAG: u32 = 4;
-pub const NETLINK_NFLOG: u32 = 5;
-pub const NETLINK_XFRM: u32 = 6;
-pub const NETLINK_SELINUX: u32 = 7;
-pub const NETLINK_ISCSI: u32 = 8;
-pub const NETLINK_AUDIT: u32 = 9;
-pub const NETLINK_FIB_LOOKUP: u32 = 10;
-pub const NETLINK_CONNECTOR: u32 = 11;
-pub const NETLINK_NETFILTER: u32 = 12;
-pub const NETLINK_IP6_FW: u32 = 13;
-pub const NETLINK_DNRTMSG: u32 = 14;
-pub const NETLINK_KOBJECT_UEVENT: u32 = 15;
-pub const NETLINK_GENERIC: u32 = 16;
-pub const NETLINK_SCSITRANSPORT: u32 = 18;
-pub const NETLINK_ECRYPTFS: u32 = 19;
-pub const NETLINK_RDMA: u32 = 20;
-pub const NETLINK_CRYPTO: u32 = 21;
-pub const NETLINK_SMC: u32 = 22;
-pub const NETLINK_INET_DIAG: u32 = 4;
-pub const MAX_LINKS: u32 = 32;
-pub const NLM_F_REQUEST: u32 = 1;
-pub const NLM_F_MULTI: u32 = 2;
-pub const NLM_F_ACK: u32 = 4;
-pub const NLM_F_ECHO: u32 = 8;
-pub const NLM_F_DUMP_INTR: u32 = 16;
-pub const NLM_F_DUMP_FILTERED: u32 = 32;
-pub const NLM_F_ROOT: u32 = 256;
-pub const NLM_F_MATCH: u32 = 512;
-pub const NLM_F_ATOMIC: u32 = 1024;
-pub const NLM_F_DUMP: u32 = 768;
-pub const NLM_F_REPLACE: u32 = 256;
-pub const NLM_F_EXCL: u32 = 512;
-pub const NLM_F_CREATE: u32 = 1024;
-pub const NLM_F_APPEND: u32 = 2048;
-pub const NLM_F_NONREC: u32 = 256;
-pub const NLM_F_BULK: u32 = 512;
-pub const NLM_F_CAPPED: u32 = 256;
-pub const NLM_F_ACK_TLVS: u32 = 512;
-pub const NLMSG_ALIGNTO: u32 = 4;
-pub const NLMSG_NOOP: u32 = 1;
-pub const NLMSG_ERROR: u32 = 2;
-pub const NLMSG_DONE: u32 = 3;
-pub const NLMSG_OVERRUN: u32 = 4;
-pub const NLMSG_MIN_TYPE: u32 = 16;
-pub const NETLINK_ADD_MEMBERSHIP: u32 = 1;
-pub const NETLINK_DROP_MEMBERSHIP: u32 = 2;
-pub const NETLINK_PKTINFO: u32 = 3;
-pub const NETLINK_BROADCAST_ERROR: u32 = 4;
-pub const NETLINK_NO_ENOBUFS: u32 = 5;
-pub const NETLINK_RX_RING: u32 = 6;
-pub const NETLINK_TX_RING: u32 = 7;
-pub const NETLINK_LISTEN_ALL_NSID: u32 = 8;
-pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9;
-pub const NETLINK_CAP_ACK: u32 = 10;
-pub const NETLINK_EXT_ACK: u32 = 11;
-pub const NETLINK_GET_STRICT_CHK: u32 = 12;
-pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4;
-pub const NET_MAJOR: u32 = 36;
-pub const NLA_F_NESTED: u32 = 32768;
-pub const NLA_F_NET_BYTEORDER: u32 = 16384;
-pub const NLA_TYPE_MASK: i32 = -49153;
-pub const NLA_ALIGNTO: u32 = 4;
-pub const MACVLAN_FLAG_NOPROMISC: u32 = 1;
-pub const MACVLAN_FLAG_NODST: u32 = 2;
-pub const IPVLAN_F_PRIVATE: u32 = 1;
-pub const IPVLAN_F_VEPA: u32 = 2;
-pub const TUNNEL_MSG_FLAG_STATS: u32 = 1;
-pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1;
-pub const MAX_VLAN_LIST_LEN: u32 = 1;
-pub const PORT_PROFILE_MAX: u32 = 40;
-pub const PORT_UUID_MAX: u32 = 16;
-pub const PORT_SELF_VF: i32 = -1;
-pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1;
-pub const XDP_FLAGS_SKB_MODE: u32 = 2;
-pub const XDP_FLAGS_DRV_MODE: u32 = 4;
-pub const XDP_FLAGS_HW_MODE: u32 = 8;
-pub const XDP_FLAGS_REPLACE: u32 = 16;
-pub const XDP_FLAGS_MODES: u32 = 14;
-pub const XDP_FLAGS_MASK: u32 = 31;
-pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1;
-pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32;
-pub const IFA_F_SECONDARY: u32 = 1;
-pub const IFA_F_TEMPORARY: u32 = 1;
-pub const IFA_F_NODAD: u32 = 2;
-pub const IFA_F_OPTIMISTIC: u32 = 4;
-pub const IFA_F_DADFAILED: u32 = 8;
-pub const IFA_F_HOMEADDRESS: u32 = 16;
-pub const IFA_F_DEPRECATED: u32 = 32;
-pub const IFA_F_TENTATIVE: u32 = 64;
-pub const IFA_F_PERMANENT: u32 = 128;
-pub const IFA_F_MANAGETEMPADDR: u32 = 256;
-pub const IFA_F_NOPREFIXROUTE: u32 = 512;
-pub const IFA_F_MCAUTOJOIN: u32 = 1024;
-pub const IFA_F_STABLE_PRIVACY: u32 = 2048;
-pub const IFAPROT_UNSPEC: u32 = 0;
-pub const IFAPROT_KERNEL_LO: u32 = 1;
-pub const IFAPROT_KERNEL_RA: u32 = 2;
-pub const IFAPROT_KERNEL_LL: u32 = 3;
-pub const NTF_USE: u32 = 1;
-pub const NTF_SELF: u32 = 2;
-pub const NTF_MASTER: u32 = 4;
-pub const NTF_PROXY: u32 = 8;
-pub const NTF_EXT_LEARNED: u32 = 16;
-pub const NTF_OFFLOADED: u32 = 32;
-pub const NTF_STICKY: u32 = 64;
-pub const NTF_ROUTER: u32 = 128;
-pub const NTF_EXT_MANAGED: u32 = 1;
-pub const NTF_EXT_LOCKED: u32 = 2;
-pub const NUD_INCOMPLETE: u32 = 1;
-pub const NUD_REACHABLE: u32 = 2;
-pub const NUD_STALE: u32 = 4;
-pub const NUD_DELAY: u32 = 8;
-pub const NUD_PROBE: u32 = 16;
-pub const NUD_FAILED: u32 = 32;
-pub const NUD_NOARP: u32 = 64;
-pub const NUD_PERMANENT: u32 = 128;
-pub const NUD_NONE: u32 = 0;
-pub const RTNL_FAMILY_IPMR: u32 = 128;
-pub const RTNL_FAMILY_IP6MR: u32 = 129;
-pub const RTNL_FAMILY_MAX: u32 = 129;
-pub const RTA_ALIGNTO: u32 = 4;
-pub const RTPROT_UNSPEC: u32 = 0;
-pub const RTPROT_REDIRECT: u32 = 1;
-pub const RTPROT_KERNEL: u32 = 2;
-pub const RTPROT_BOOT: u32 = 3;
-pub const RTPROT_STATIC: u32 = 4;
-pub const RTPROT_GATED: u32 = 8;
-pub const RTPROT_RA: u32 = 9;
-pub const RTPROT_MRT: u32 = 10;
-pub const RTPROT_ZEBRA: u32 = 11;
-pub const RTPROT_BIRD: u32 = 12;
-pub const RTPROT_DNROUTED: u32 = 13;
-pub const RTPROT_XORP: u32 = 14;
-pub const RTPROT_NTK: u32 = 15;
-pub const RTPROT_DHCP: u32 = 16;
-pub const RTPROT_MROUTED: u32 = 17;
-pub const RTPROT_KEEPALIVED: u32 = 18;
-pub const RTPROT_BABEL: u32 = 42;
-pub const RTPROT_OPENR: u32 = 99;
-pub const RTPROT_BGP: u32 = 186;
-pub const RTPROT_ISIS: u32 = 187;
-pub const RTPROT_OSPF: u32 = 188;
-pub const RTPROT_RIP: u32 = 189;
-pub const RTPROT_EIGRP: u32 = 192;
-pub const RTM_F_NOTIFY: u32 = 256;
-pub const RTM_F_CLONED: u32 = 512;
-pub const RTM_F_EQUALIZE: u32 = 1024;
-pub const RTM_F_PREFIX: u32 = 2048;
-pub const RTM_F_LOOKUP_TABLE: u32 = 4096;
-pub const RTM_F_FIB_MATCH: u32 = 8192;
-pub const RTM_F_OFFLOAD: u32 = 16384;
-pub const RTM_F_TRAP: u32 = 32768;
-pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912;
-pub const RTNH_F_DEAD: u32 = 1;
-pub const RTNH_F_PERVASIVE: u32 = 2;
-pub const RTNH_F_ONLINK: u32 = 4;
-pub const RTNH_F_OFFLOAD: u32 = 8;
-pub const RTNH_F_LINKDOWN: u32 = 16;
-pub const RTNH_F_UNRESOLVED: u32 = 32;
-pub const RTNH_F_TRAP: u32 = 64;
-pub const RTNH_COMPARE_MASK: u32 = 89;
-pub const RTNH_ALIGNTO: u32 = 4;
-pub const RTNETLINK_HAVE_PEERINFO: u32 = 1;
-pub const RTAX_FEATURE_ECN: u32 = 1;
-pub const RTAX_FEATURE_SACK: u32 = 2;
-pub const RTAX_FEATURE_TIMESTAMP: u32 = 4;
-pub const RTAX_FEATURE_ALLFRAG: u32 = 8;
-pub const RTAX_FEATURE_MASK: u32 = 15;
-pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295;
-pub const TCA_DUMP_FLAGS_TERSE: u32 = 1;
-pub const RTMGRP_LINK: u32 = 1;
-pub const RTMGRP_NOTIFY: u32 = 2;
-pub const RTMGRP_NEIGH: u32 = 4;
-pub const RTMGRP_TC: u32 = 8;
-pub const RTMGRP_IPV4_IFADDR: u32 = 16;
-pub const RTMGRP_IPV4_MROUTE: u32 = 32;
-pub const RTMGRP_IPV4_ROUTE: u32 = 64;
-pub const RTMGRP_IPV4_RULE: u32 = 128;
-pub const RTMGRP_IPV6_IFADDR: u32 = 256;
-pub const RTMGRP_IPV6_MROUTE: u32 = 512;
-pub const RTMGRP_IPV6_ROUTE: u32 = 1024;
-pub const RTMGRP_IPV6_IFINFO: u32 = 2048;
-pub const RTMGRP_DECnet_IFADDR: u32 = 4096;
-pub const RTMGRP_DECnet_ROUTE: u32 = 16384;
-pub const RTMGRP_IPV6_PREFIX: u32 = 131072;
-pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2;
-pub const RTEXT_FILTER_VF: u32 = 1;
-pub const RTEXT_FILTER_BRVLAN: u32 = 2;
-pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4;
-pub const RTEXT_FILTER_SKIP_STATS: u32 = 8;
-pub const RTEXT_FILTER_MRP: u32 = 16;
-pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32;
-pub const RTEXT_FILTER_CFM_STATUS: u32 = 64;
-pub const RTEXT_FILTER_MST: u32 = 128;
-pub type size_t = crate::ctypes::c_ulong;
-pub type ssize_t = crate::ctypes::c_long;
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 16usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_old_uid_t = crate::ctypes::c_ushort;
-pub type __kernel_old_gid_t = crate::ctypes::c_ushort;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_dev_t = crate::ctypes::c_uint;
-pub type __kernel_size_t = __kernel_ulong_t;
-pub type __kernel_ssize_t = __kernel_long_t;
-pub type __kernel_ptrdiff_t = __kernel_long_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_nl {
-pub nl_family: __kernel_sa_family_t,
-pub nl_pad: crate::ctypes::c_ushort,
-pub nl_pid: __u32,
-pub nl_groups: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsghdr {
-pub nlmsg_len: __u32,
-pub nlmsg_type: __u16,
-pub nlmsg_flags: __u16,
-pub nlmsg_seq: __u32,
-pub nlmsg_pid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsgerr {
-pub error: crate::ctypes::c_int,
-pub msg: nlmsghdr,
-}
-impl nlmsgerr_attrs {
-pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nlmsgerr_attrs {
-NLMSGERR_ATTR_UNUSED = 0,
-NLMSGERR_ATTR_MSG = 1,
-NLMSGERR_ATTR_OFFS = 2,
-NLMSGERR_ATTR_COOKIE = 3,
-NLMSGERR_ATTR_POLICY = 4,
-NLMSGERR_ATTR_MISS_TYPE = 5,
-NLMSGERR_ATTR_MISS_NEST = 6,
-__NLMSGERR_ATTR_MAX = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_pktinfo {
-pub group: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_req {
-pub nm_block_size: crate::ctypes::c_uint,
-pub nm_block_nr: crate::ctypes::c_uint,
-pub nm_frame_size: crate::ctypes::c_uint,
-pub nm_frame_nr: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_hdr {
-pub nm_status: crate::ctypes::c_uint,
-pub nm_len: crate::ctypes::c_uint,
-pub nm_group: __u32,
-pub nm_pid: __u32,
-pub nm_uid: __u32,
-pub nm_gid: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nl_mmap_status {
-NL_MMAP_STATUS_UNUSED = 0,
-NL_MMAP_STATUS_RESERVED = 1,
-NL_MMAP_STATUS_VALID = 2,
-NL_MMAP_STATUS_COPY = 3,
-NL_MMAP_STATUS_SKIP = 4,
-}
-pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED;
-pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-NETLINK_UNCONNECTED = 0,
-NETLINK_CONNECTED = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlattr {
-pub nla_len: __u16,
-pub nla_type: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nla_bitfield32 {
-pub value: __u32,
-pub selector: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_attribute_type {
-NL_ATTR_TYPE_INVALID = 0,
-NL_ATTR_TYPE_FLAG = 1,
-NL_ATTR_TYPE_U8 = 2,
-NL_ATTR_TYPE_U16 = 3,
-NL_ATTR_TYPE_U32 = 4,
-NL_ATTR_TYPE_U64 = 5,
-NL_ATTR_TYPE_S8 = 6,
-NL_ATTR_TYPE_S16 = 7,
-NL_ATTR_TYPE_S32 = 8,
-NL_ATTR_TYPE_S64 = 9,
-NL_ATTR_TYPE_BINARY = 10,
-NL_ATTR_TYPE_STRING = 11,
-NL_ATTR_TYPE_NUL_STRING = 12,
-NL_ATTR_TYPE_NESTED = 13,
-NL_ATTR_TYPE_NESTED_ARRAY = 14,
-NL_ATTR_TYPE_BITFIELD32 = 15,
-}
-impl netlink_policy_type_attr {
-pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_policy_type_attr {
-NL_POLICY_TYPE_ATTR_UNSPEC = 0,
-NL_POLICY_TYPE_ATTR_TYPE = 1,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5,
-NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6,
-NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7,
-NL_POLICY_TYPE_ATTR_POLICY_IDX = 8,
-NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9,
-NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10,
-NL_POLICY_TYPE_ATTR_PAD = 11,
-NL_POLICY_TYPE_ATTR_MASK = 12,
-__NL_POLICY_TYPE_ATTR_MAX = 13,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats {
-pub rx_packets: __u32,
-pub tx_packets: __u32,
-pub rx_bytes: __u32,
-pub tx_bytes: __u32,
-pub rx_errors: __u32,
-pub tx_errors: __u32,
-pub rx_dropped: __u32,
-pub tx_dropped: __u32,
-pub multicast: __u32,
-pub collisions: __u32,
-pub rx_length_errors: __u32,
-pub rx_over_errors: __u32,
-pub rx_crc_errors: __u32,
-pub rx_frame_errors: __u32,
-pub rx_fifo_errors: __u32,
-pub rx_missed_errors: __u32,
-pub tx_aborted_errors: __u32,
-pub tx_carrier_errors: __u32,
-pub tx_fifo_errors: __u32,
-pub tx_heartbeat_errors: __u32,
-pub tx_window_errors: __u32,
-pub rx_compressed: __u32,
-pub tx_compressed: __u32,
-pub rx_nohandler: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-pub collisions: __u64,
-pub rx_length_errors: __u64,
-pub rx_over_errors: __u64,
-pub rx_crc_errors: __u64,
-pub rx_frame_errors: __u64,
-pub rx_fifo_errors: __u64,
-pub rx_missed_errors: __u64,
-pub tx_aborted_errors: __u64,
-pub tx_carrier_errors: __u64,
-pub tx_fifo_errors: __u64,
-pub tx_heartbeat_errors: __u64,
-pub tx_window_errors: __u64,
-pub rx_compressed: __u64,
-pub tx_compressed: __u64,
-pub rx_nohandler: __u64,
-pub rx_otherhost_dropped: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_hw_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_ifmap {
-pub mem_start: __u64,
-pub mem_end: __u64,
-pub base_addr: __u64,
-pub irq: __u16,
-pub dma: __u8,
-pub port: __u8,
-}
-pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC;
-pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS;
-pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST;
-pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME;
-pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU;
-pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK;
-pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC;
-pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS;
-pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST;
-pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY;
-pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER;
-pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS;
-pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO;
-pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN;
-pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP;
-pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT;
-pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE;
-pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE;
-pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO;
-pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID;
-pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS;
-pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF;
-pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST;
-pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64;
-pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS;
-pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF;
-pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC;
-pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP;
-pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD;
-pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK;
-pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY;
-pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES;
-pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES;
-pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER;
-pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID;
-pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES;
-pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID;
-pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID;
-pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME;
-pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN;
-pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS;
-pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE;
-pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD;
-pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP;
-pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT;
-pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID;
-pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT;
-pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT;
-pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX;
-pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU;
-pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU;
-pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST;
-pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME;
-pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS;
-pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON;
-pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME;
-pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME;
-pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS;
-pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI;
-pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT;
-pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IFLA_UNSPEC = 0,
-IFLA_ADDRESS = 1,
-IFLA_BROADCAST = 2,
-IFLA_IFNAME = 3,
-IFLA_MTU = 4,
-IFLA_LINK = 5,
-IFLA_QDISC = 6,
-IFLA_STATS = 7,
-IFLA_COST = 8,
-IFLA_PRIORITY = 9,
-IFLA_MASTER = 10,
-IFLA_WIRELESS = 11,
-IFLA_PROTINFO = 12,
-IFLA_TXQLEN = 13,
-IFLA_MAP = 14,
-IFLA_WEIGHT = 15,
-IFLA_OPERSTATE = 16,
-IFLA_LINKMODE = 17,
-IFLA_LINKINFO = 18,
-IFLA_NET_NS_PID = 19,
-IFLA_IFALIAS = 20,
-IFLA_NUM_VF = 21,
-IFLA_VFINFO_LIST = 22,
-IFLA_STATS64 = 23,
-IFLA_VF_PORTS = 24,
-IFLA_PORT_SELF = 25,
-IFLA_AF_SPEC = 26,
-IFLA_GROUP = 27,
-IFLA_NET_NS_FD = 28,
-IFLA_EXT_MASK = 29,
-IFLA_PROMISCUITY = 30,
-IFLA_NUM_TX_QUEUES = 31,
-IFLA_NUM_RX_QUEUES = 32,
-IFLA_CARRIER = 33,
-IFLA_PHYS_PORT_ID = 34,
-IFLA_CARRIER_CHANGES = 35,
-IFLA_PHYS_SWITCH_ID = 36,
-IFLA_LINK_NETNSID = 37,
-IFLA_PHYS_PORT_NAME = 38,
-IFLA_PROTO_DOWN = 39,
-IFLA_GSO_MAX_SEGS = 40,
-IFLA_GSO_MAX_SIZE = 41,
-IFLA_PAD = 42,
-IFLA_XDP = 43,
-IFLA_EVENT = 44,
-IFLA_NEW_NETNSID = 45,
-IFLA_IF_NETNSID = 46,
-IFLA_CARRIER_UP_COUNT = 47,
-IFLA_CARRIER_DOWN_COUNT = 48,
-IFLA_NEW_IFINDEX = 49,
-IFLA_MIN_MTU = 50,
-IFLA_MAX_MTU = 51,
-IFLA_PROP_LIST = 52,
-IFLA_ALT_IFNAME = 53,
-IFLA_PERM_ADDRESS = 54,
-IFLA_PROTO_DOWN_REASON = 55,
-IFLA_PARENT_DEV_NAME = 56,
-IFLA_PARENT_DEV_BUS_NAME = 57,
-IFLA_GRO_MAX_SIZE = 58,
-IFLA_TSO_MAX_SIZE = 59,
-IFLA_TSO_MAX_SEGS = 60,
-IFLA_ALLMULTI = 61,
-IFLA_DEVLINK_PORT = 62,
-__IFLA_MAX = 63,
-}
-pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC;
-pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK;
-pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT;
-pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-IFLA_PROTO_DOWN_REASON_UNSPEC = 0,
-IFLA_PROTO_DOWN_REASON_MASK = 1,
-IFLA_PROTO_DOWN_REASON_VALUE = 2,
-__IFLA_PROTO_DOWN_REASON_CNT = 3,
-}
-pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC;
-pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF;
-pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-IFLA_INET_UNSPEC = 0,
-IFLA_INET_CONF = 1,
-__IFLA_INET_MAX = 2,
-}
-pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC;
-pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS;
-pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF;
-pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS;
-pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST;
-pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO;
-pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS;
-pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN;
-pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE;
-pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU;
-pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-IFLA_INET6_UNSPEC = 0,
-IFLA_INET6_FLAGS = 1,
-IFLA_INET6_CONF = 2,
-IFLA_INET6_STATS = 3,
-IFLA_INET6_MCAST = 4,
-IFLA_INET6_CACHEINFO = 5,
-IFLA_INET6_ICMP6STATS = 6,
-IFLA_INET6_TOKEN = 7,
-IFLA_INET6_ADDR_GEN_MODE = 8,
-IFLA_INET6_RA_MTU = 9,
-__IFLA_INET6_MAX = 10,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum in6_addr_gen_mode {
-IN6_ADDR_GEN_MODE_EUI64 = 0,
-IN6_ADDR_GEN_MODE_NONE = 1,
-IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2,
-IN6_ADDR_GEN_MODE_RANDOM = 3,
-}
-pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC;
-pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY;
-pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME;
-pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE;
-pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME;
-pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE;
-pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY;
-pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING;
-pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL;
-pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK;
-pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID;
-pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID;
-pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT;
-pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST;
-pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE;
-pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED;
-pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER;
-pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER;
-pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER;
-pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER;
-pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR;
-pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH;
-pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER;
-pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING;
-pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR;
-pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER;
-pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY;
-pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX;
-pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT;
-pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL;
-pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL;
-pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL;
-pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL;
-pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL;
-pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES;
-pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES;
-pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES;
-pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID;
-pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD;
-pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED;
-pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED;
-pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION;
-pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION;
-pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT;
-pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT;
-pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE;
-pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-IFLA_BR_UNSPEC = 0,
-IFLA_BR_FORWARD_DELAY = 1,
-IFLA_BR_HELLO_TIME = 2,
-IFLA_BR_MAX_AGE = 3,
-IFLA_BR_AGEING_TIME = 4,
-IFLA_BR_STP_STATE = 5,
-IFLA_BR_PRIORITY = 6,
-IFLA_BR_VLAN_FILTERING = 7,
-IFLA_BR_VLAN_PROTOCOL = 8,
-IFLA_BR_GROUP_FWD_MASK = 9,
-IFLA_BR_ROOT_ID = 10,
-IFLA_BR_BRIDGE_ID = 11,
-IFLA_BR_ROOT_PORT = 12,
-IFLA_BR_ROOT_PATH_COST = 13,
-IFLA_BR_TOPOLOGY_CHANGE = 14,
-IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 15,
-IFLA_BR_HELLO_TIMER = 16,
-IFLA_BR_TCN_TIMER = 17,
-IFLA_BR_TOPOLOGY_CHANGE_TIMER = 18,
-IFLA_BR_GC_TIMER = 19,
-IFLA_BR_GROUP_ADDR = 20,
-IFLA_BR_FDB_FLUSH = 21,
-IFLA_BR_MCAST_ROUTER = 22,
-IFLA_BR_MCAST_SNOOPING = 23,
-IFLA_BR_MCAST_QUERY_USE_IFADDR = 24,
-IFLA_BR_MCAST_QUERIER = 25,
-IFLA_BR_MCAST_HASH_ELASTICITY = 26,
-IFLA_BR_MCAST_HASH_MAX = 27,
-IFLA_BR_MCAST_LAST_MEMBER_CNT = 28,
-IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29,
-IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30,
-IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31,
-IFLA_BR_MCAST_QUERIER_INTVL = 32,
-IFLA_BR_MCAST_QUERY_INTVL = 33,
-IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34,
-IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35,
-IFLA_BR_NF_CALL_IPTABLES = 36,
-IFLA_BR_NF_CALL_IP6TABLES = 37,
-IFLA_BR_NF_CALL_ARPTABLES = 38,
-IFLA_BR_VLAN_DEFAULT_PVID = 39,
-IFLA_BR_PAD = 40,
-IFLA_BR_VLAN_STATS_ENABLED = 41,
-IFLA_BR_MCAST_STATS_ENABLED = 42,
-IFLA_BR_MCAST_IGMP_VERSION = 43,
-IFLA_BR_MCAST_MLD_VERSION = 44,
-IFLA_BR_VLAN_STATS_PER_PORT = 45,
-IFLA_BR_MULTI_BOOLOPT = 46,
-IFLA_BR_MCAST_QUERIER_STATE = 47,
-__IFLA_BR_MAX = 48,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_bridge_id {
-pub prio: [__u8; 2usize],
-pub addr: [__u8; 6usize],
-}
-pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC;
-pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-BRIDGE_MODE_UNSPEC = 0,
-BRIDGE_MODE_HAIRPIN = 1,
-}
-pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC;
-pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE;
-pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY;
-pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST;
-pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE;
-pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD;
-pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT;
-pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE;
-pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING;
-pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD;
-pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP;
-pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC;
-pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI;
-pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID;
-pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID;
-pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT;
-pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST;
-pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID;
-pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO;
-pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK;
-pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING;
-pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER;
-pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER;
-pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER;
-pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH;
-pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER;
-pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD;
-pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD;
-pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST;
-pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL;
-pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD;
-pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK;
-pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS;
-pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED;
-pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT;
-pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN;
-pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT;
-pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED;
-pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB;
-pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IFLA_BRPORT_UNSPEC = 0,
-IFLA_BRPORT_STATE = 1,
-IFLA_BRPORT_PRIORITY = 2,
-IFLA_BRPORT_COST = 3,
-IFLA_BRPORT_MODE = 4,
-IFLA_BRPORT_GUARD = 5,
-IFLA_BRPORT_PROTECT = 6,
-IFLA_BRPORT_FAST_LEAVE = 7,
-IFLA_BRPORT_LEARNING = 8,
-IFLA_BRPORT_UNICAST_FLOOD = 9,
-IFLA_BRPORT_PROXYARP = 10,
-IFLA_BRPORT_LEARNING_SYNC = 11,
-IFLA_BRPORT_PROXYARP_WIFI = 12,
-IFLA_BRPORT_ROOT_ID = 13,
-IFLA_BRPORT_BRIDGE_ID = 14,
-IFLA_BRPORT_DESIGNATED_PORT = 15,
-IFLA_BRPORT_DESIGNATED_COST = 16,
-IFLA_BRPORT_ID = 17,
-IFLA_BRPORT_NO = 18,
-IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 19,
-IFLA_BRPORT_CONFIG_PENDING = 20,
-IFLA_BRPORT_MESSAGE_AGE_TIMER = 21,
-IFLA_BRPORT_FORWARD_DELAY_TIMER = 22,
-IFLA_BRPORT_HOLD_TIMER = 23,
-IFLA_BRPORT_FLUSH = 24,
-IFLA_BRPORT_MULTICAST_ROUTER = 25,
-IFLA_BRPORT_PAD = 26,
-IFLA_BRPORT_MCAST_FLOOD = 27,
-IFLA_BRPORT_MCAST_TO_UCAST = 28,
-IFLA_BRPORT_VLAN_TUNNEL = 29,
-IFLA_BRPORT_BCAST_FLOOD = 30,
-IFLA_BRPORT_GROUP_FWD_MASK = 31,
-IFLA_BRPORT_NEIGH_SUPPRESS = 32,
-IFLA_BRPORT_ISOLATED = 33,
-IFLA_BRPORT_BACKUP_PORT = 34,
-IFLA_BRPORT_MRP_RING_OPEN = 35,
-IFLA_BRPORT_MRP_IN_OPEN = 36,
-IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 37,
-IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 38,
-IFLA_BRPORT_LOCKED = 39,
-IFLA_BRPORT_MAB = 40,
-__IFLA_BRPORT_MAX = 41,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_cacheinfo {
-pub max_reasm_len: __u32,
-pub tstamp: __u32,
-pub reachable_time: __u32,
-pub retrans_time: __u32,
-}
-pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC;
-pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND;
-pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA;
-pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS;
-pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND;
-pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA;
-pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IFLA_INFO_UNSPEC = 0,
-IFLA_INFO_KIND = 1,
-IFLA_INFO_DATA = 2,
-IFLA_INFO_XSTATS = 3,
-IFLA_INFO_SLAVE_KIND = 4,
-IFLA_INFO_SLAVE_DATA = 5,
-__IFLA_INFO_MAX = 6,
-}
-pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC;
-pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID;
-pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS;
-pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS;
-pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS;
-pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL;
-pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IFLA_VLAN_UNSPEC = 0,
-IFLA_VLAN_ID = 1,
-IFLA_VLAN_FLAGS = 2,
-IFLA_VLAN_EGRESS_QOS = 3,
-IFLA_VLAN_INGRESS_QOS = 4,
-IFLA_VLAN_PROTOCOL = 5,
-__IFLA_VLAN_MAX = 6,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC;
-pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING;
-pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IFLA_VLAN_QOS_UNSPEC = 0,
-IFLA_VLAN_QOS_MAPPING = 1,
-__IFLA_VLAN_QOS_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_qos_mapping {
-pub from: __u32,
-pub to: __u32,
-}
-pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC;
-pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE;
-pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS;
-pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE;
-pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR;
-pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA;
-pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED;
-pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IFLA_MACVLAN_UNSPEC = 0,
-IFLA_MACVLAN_MODE = 1,
-IFLA_MACVLAN_FLAGS = 2,
-IFLA_MACVLAN_MACADDR_MODE = 3,
-IFLA_MACVLAN_MACADDR = 4,
-IFLA_MACVLAN_MACADDR_DATA = 5,
-IFLA_MACVLAN_MACADDR_COUNT = 6,
-IFLA_MACVLAN_BC_QUEUE_LEN = 7,
-IFLA_MACVLAN_BC_QUEUE_LEN_USED = 8,
-__IFLA_MACVLAN_MAX = 9,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_mode {
-MACVLAN_MODE_PRIVATE = 1,
-MACVLAN_MODE_VEPA = 2,
-MACVLAN_MODE_BRIDGE = 4,
-MACVLAN_MODE_PASSTHRU = 8,
-MACVLAN_MODE_SOURCE = 16,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_macaddr_mode {
-MACVLAN_MACADDR_ADD = 0,
-MACVLAN_MACADDR_DEL = 1,
-MACVLAN_MACADDR_FLUSH = 2,
-MACVLAN_MACADDR_SET = 3,
-}
-pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC;
-pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE;
-pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_13 {
-IFLA_VRF_UNSPEC = 0,
-IFLA_VRF_TABLE = 1,
-__IFLA_VRF_MAX = 2,
-}
-pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC;
-pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE;
-pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_14 {
-IFLA_VRF_PORT_UNSPEC = 0,
-IFLA_VRF_PORT_TABLE = 1,
-__IFLA_VRF_PORT_MAX = 2,
-}
-pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC;
-pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI;
-pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT;
-pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN;
-pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE;
-pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW;
-pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA;
-pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT;
-pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT;
-pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI;
-pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES;
-pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB;
-pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT;
-pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION;
-pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD;
-pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD;
-pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_15 {
-IFLA_MACSEC_UNSPEC = 0,
-IFLA_MACSEC_SCI = 1,
-IFLA_MACSEC_PORT = 2,
-IFLA_MACSEC_ICV_LEN = 3,
-IFLA_MACSEC_CIPHER_SUITE = 4,
-IFLA_MACSEC_WINDOW = 5,
-IFLA_MACSEC_ENCODING_SA = 6,
-IFLA_MACSEC_ENCRYPT = 7,
-IFLA_MACSEC_PROTECT = 8,
-IFLA_MACSEC_INC_SCI = 9,
-IFLA_MACSEC_ES = 10,
-IFLA_MACSEC_SCB = 11,
-IFLA_MACSEC_REPLAY_PROTECT = 12,
-IFLA_MACSEC_VALIDATION = 13,
-IFLA_MACSEC_PAD = 14,
-IFLA_MACSEC_OFFLOAD = 15,
-__IFLA_MACSEC_MAX = 16,
-}
-pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC;
-pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK;
-pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID;
-pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA;
-pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_16 {
-IFLA_XFRM_UNSPEC = 0,
-IFLA_XFRM_LINK = 1,
-IFLA_XFRM_IF_ID = 2,
-IFLA_XFRM_COLLECT_METADATA = 3,
-__IFLA_XFRM_MAX = 4,
-}
-impl macsec_validation_type {
-pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_validation_type {
-MACSEC_VALIDATE_DISABLED = 0,
-MACSEC_VALIDATE_CHECK = 1,
-MACSEC_VALIDATE_STRICT = 2,
-__MACSEC_VALIDATE_END = 3,
-}
-impl macsec_offload {
-pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_offload {
-MACSEC_OFFLOAD_OFF = 0,
-MACSEC_OFFLOAD_PHY = 1,
-MACSEC_OFFLOAD_MAC = 2,
-__MACSEC_OFFLOAD_END = 3,
-}
-pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC;
-pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE;
-pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS;
-pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_17 {
-IFLA_IPVLAN_UNSPEC = 0,
-IFLA_IPVLAN_MODE = 1,
-IFLA_IPVLAN_FLAGS = 2,
-__IFLA_IPVLAN_MAX = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ipvlan_mode {
-IPVLAN_MODE_L2 = 0,
-IPVLAN_MODE_L3 = 1,
-IPVLAN_MODE_L3S = 2,
-IPVLAN_MODE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tunnel_msg {
-pub family: __u8,
-pub flags: __u8,
-pub reserved2: __u16,
-pub ifindex: __u32,
-}
-pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC;
-pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD;
-pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_18 {
-VNIFILTER_ENTRY_STATS_UNSPEC = 0,
-VNIFILTER_ENTRY_STATS_RX_BYTES = 1,
-VNIFILTER_ENTRY_STATS_RX_PKTS = 2,
-VNIFILTER_ENTRY_STATS_RX_DROPS = 3,
-VNIFILTER_ENTRY_STATS_RX_ERRORS = 4,
-VNIFILTER_ENTRY_STATS_TX_BYTES = 5,
-VNIFILTER_ENTRY_STATS_TX_PKTS = 6,
-VNIFILTER_ENTRY_STATS_TX_DROPS = 7,
-VNIFILTER_ENTRY_STATS_TX_ERRORS = 8,
-VNIFILTER_ENTRY_STATS_PAD = 9,
-__VNIFILTER_ENTRY_STATS_MAX = 10,
-}
-pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START;
-pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6;
-pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS;
-pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_19 {
-VXLAN_VNIFILTER_ENTRY_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY_START = 1,
-VXLAN_VNIFILTER_ENTRY_END = 2,
-VXLAN_VNIFILTER_ENTRY_GROUP = 3,
-VXLAN_VNIFILTER_ENTRY_GROUP6 = 4,
-VXLAN_VNIFILTER_ENTRY_STATS = 5,
-__VXLAN_VNIFILTER_ENTRY_MAX = 6,
-}
-pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY;
-pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_20 {
-VXLAN_VNIFILTER_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY = 1,
-__VXLAN_VNIFILTER_MAX = 2,
-}
-pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC;
-pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID;
-pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP;
-pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK;
-pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL;
-pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL;
-pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS;
-pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING;
-pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING;
-pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT;
-pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE;
-pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY;
-pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC;
-pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS;
-pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS;
-pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT;
-pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6;
-pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6;
-pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX;
-pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX;
-pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX;
-pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP;
-pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL;
-pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA;
-pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL;
-pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE;
-pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT;
-pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF;
-pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER;
-pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_21 {
-IFLA_VXLAN_UNSPEC = 0,
-IFLA_VXLAN_ID = 1,
-IFLA_VXLAN_GROUP = 2,
-IFLA_VXLAN_LINK = 3,
-IFLA_VXLAN_LOCAL = 4,
-IFLA_VXLAN_TTL = 5,
-IFLA_VXLAN_TOS = 6,
-IFLA_VXLAN_LEARNING = 7,
-IFLA_VXLAN_AGEING = 8,
-IFLA_VXLAN_LIMIT = 9,
-IFLA_VXLAN_PORT_RANGE = 10,
-IFLA_VXLAN_PROXY = 11,
-IFLA_VXLAN_RSC = 12,
-IFLA_VXLAN_L2MISS = 13,
-IFLA_VXLAN_L3MISS = 14,
-IFLA_VXLAN_PORT = 15,
-IFLA_VXLAN_GROUP6 = 16,
-IFLA_VXLAN_LOCAL6 = 17,
-IFLA_VXLAN_UDP_CSUM = 18,
-IFLA_VXLAN_UDP_ZERO_CSUM6_TX = 19,
-IFLA_VXLAN_UDP_ZERO_CSUM6_RX = 20,
-IFLA_VXLAN_REMCSUM_TX = 21,
-IFLA_VXLAN_REMCSUM_RX = 22,
-IFLA_VXLAN_GBP = 23,
-IFLA_VXLAN_REMCSUM_NOPARTIAL = 24,
-IFLA_VXLAN_COLLECT_METADATA = 25,
-IFLA_VXLAN_LABEL = 26,
-IFLA_VXLAN_GPE = 27,
-IFLA_VXLAN_TTL_INHERIT = 28,
-IFLA_VXLAN_DF = 29,
-IFLA_VXLAN_VNIFILTER = 30,
-__IFLA_VXLAN_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vxlan_port_range {
-pub low: __be16,
-pub high: __be16,
-}
-impl ifla_vxlan_df {
-pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_vxlan_df {
-VXLAN_DF_UNSET = 0,
-VXLAN_DF_SET = 1,
-VXLAN_DF_INHERIT = 2,
-__VXLAN_DF_END = 3,
-}
-pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC;
-pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID;
-pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE;
-pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL;
-pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS;
-pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT;
-pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA;
-pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6;
-pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX;
-pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL;
-pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT;
-pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF;
-pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT;
-pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_22 {
-IFLA_GENEVE_UNSPEC = 0,
-IFLA_GENEVE_ID = 1,
-IFLA_GENEVE_REMOTE = 2,
-IFLA_GENEVE_TTL = 3,
-IFLA_GENEVE_TOS = 4,
-IFLA_GENEVE_PORT = 5,
-IFLA_GENEVE_COLLECT_METADATA = 6,
-IFLA_GENEVE_REMOTE6 = 7,
-IFLA_GENEVE_UDP_CSUM = 8,
-IFLA_GENEVE_UDP_ZERO_CSUM6_TX = 9,
-IFLA_GENEVE_UDP_ZERO_CSUM6_RX = 10,
-IFLA_GENEVE_LABEL = 11,
-IFLA_GENEVE_TTL_INHERIT = 12,
-IFLA_GENEVE_DF = 13,
-IFLA_GENEVE_INNER_PROTO_INHERIT = 14,
-__IFLA_GENEVE_MAX = 15,
-}
-impl ifla_geneve_df {
-pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_geneve_df {
-GENEVE_DF_UNSET = 0,
-GENEVE_DF_SET = 1,
-GENEVE_DF_INHERIT = 2,
-__GENEVE_DF_END = 3,
-}
-pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC;
-pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT;
-pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE;
-pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN;
-pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE;
-pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_23 {
-IFLA_BAREUDP_UNSPEC = 0,
-IFLA_BAREUDP_PORT = 1,
-IFLA_BAREUDP_ETHERTYPE = 2,
-IFLA_BAREUDP_SRCPORT_MIN = 3,
-IFLA_BAREUDP_MULTIPROTO_MODE = 4,
-__IFLA_BAREUDP_MAX = 5,
-}
-pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC;
-pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD;
-pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_24 {
-IFLA_PPP_UNSPEC = 0,
-IFLA_PPP_DEV_FD = 1,
-__IFLA_PPP_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_gtp_role {
-GTP_ROLE_GGSN = 0,
-GTP_ROLE_SGSN = 1,
-}
-pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC;
-pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0;
-pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1;
-pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE;
-pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE;
-pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS;
-pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT;
-pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_25 {
-IFLA_GTP_UNSPEC = 0,
-IFLA_GTP_FD0 = 1,
-IFLA_GTP_FD1 = 2,
-IFLA_GTP_PDP_HASHSIZE = 3,
-IFLA_GTP_ROLE = 4,
-IFLA_GTP_CREATE_SOCKETS = 5,
-IFLA_GTP_RESTART_COUNT = 6,
-__IFLA_GTP_MAX = 7,
-}
-pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC;
-pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE;
-pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE;
-pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON;
-pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY;
-pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY;
-pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER;
-pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL;
-pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET;
-pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE;
-pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS;
-pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY;
-pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT;
-pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC;
-pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY;
-pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP;
-pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF;
-pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE;
-pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS;
-pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL;
-pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE;
-pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE;
-pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT;
-pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO;
-pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO;
-pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY;
-pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM;
-pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB;
-pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY;
-pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE;
-pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX;
-pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET;
-pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_26 {
-IFLA_BOND_UNSPEC = 0,
-IFLA_BOND_MODE = 1,
-IFLA_BOND_ACTIVE_SLAVE = 2,
-IFLA_BOND_MIIMON = 3,
-IFLA_BOND_UPDELAY = 4,
-IFLA_BOND_DOWNDELAY = 5,
-IFLA_BOND_USE_CARRIER = 6,
-IFLA_BOND_ARP_INTERVAL = 7,
-IFLA_BOND_ARP_IP_TARGET = 8,
-IFLA_BOND_ARP_VALIDATE = 9,
-IFLA_BOND_ARP_ALL_TARGETS = 10,
-IFLA_BOND_PRIMARY = 11,
-IFLA_BOND_PRIMARY_RESELECT = 12,
-IFLA_BOND_FAIL_OVER_MAC = 13,
-IFLA_BOND_XMIT_HASH_POLICY = 14,
-IFLA_BOND_RESEND_IGMP = 15,
-IFLA_BOND_NUM_PEER_NOTIF = 16,
-IFLA_BOND_ALL_SLAVES_ACTIVE = 17,
-IFLA_BOND_MIN_LINKS = 18,
-IFLA_BOND_LP_INTERVAL = 19,
-IFLA_BOND_PACKETS_PER_SLAVE = 20,
-IFLA_BOND_AD_LACP_RATE = 21,
-IFLA_BOND_AD_SELECT = 22,
-IFLA_BOND_AD_INFO = 23,
-IFLA_BOND_AD_ACTOR_SYS_PRIO = 24,
-IFLA_BOND_AD_USER_PORT_KEY = 25,
-IFLA_BOND_AD_ACTOR_SYSTEM = 26,
-IFLA_BOND_TLB_DYNAMIC_LB = 27,
-IFLA_BOND_PEER_NOTIF_DELAY = 28,
-IFLA_BOND_AD_LACP_ACTIVE = 29,
-IFLA_BOND_MISSED_MAX = 30,
-IFLA_BOND_NS_IP6_TARGET = 31,
-__IFLA_BOND_MAX = 32,
-}
-pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC;
-pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR;
-pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS;
-pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC;
-pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_27 {
-IFLA_BOND_AD_INFO_UNSPEC = 0,
-IFLA_BOND_AD_INFO_AGGREGATOR = 1,
-IFLA_BOND_AD_INFO_NUM_PORTS = 2,
-IFLA_BOND_AD_INFO_ACTOR_KEY = 3,
-IFLA_BOND_AD_INFO_PARTNER_KEY = 4,
-IFLA_BOND_AD_INFO_PARTNER_MAC = 5,
-__IFLA_BOND_AD_INFO_MAX = 6,
-}
-pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC;
-pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE;
-pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS;
-pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT;
-pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR;
-pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID;
-pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID;
-pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO;
-pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_28 {
-IFLA_BOND_SLAVE_UNSPEC = 0,
-IFLA_BOND_SLAVE_STATE = 1,
-IFLA_BOND_SLAVE_MII_STATUS = 2,
-IFLA_BOND_SLAVE_LINK_FAILURE_COUNT = 3,
-IFLA_BOND_SLAVE_PERM_HWADDR = 4,
-IFLA_BOND_SLAVE_QUEUE_ID = 5,
-IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 6,
-IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 7,
-IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 8,
-IFLA_BOND_SLAVE_PRIO = 9,
-__IFLA_BOND_SLAVE_MAX = 10,
-}
-pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC;
-pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO;
-pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_29 {
-IFLA_VF_INFO_UNSPEC = 0,
-IFLA_VF_INFO = 1,
-__IFLA_VF_INFO_MAX = 2,
-}
-pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC;
-pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC;
-pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN;
-pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE;
-pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK;
-pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE;
-pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE;
-pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN;
-pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS;
-pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST;
-pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID;
-pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID;
-pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST;
-pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST;
-pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_30 {
-IFLA_VF_UNSPEC = 0,
-IFLA_VF_MAC = 1,
-IFLA_VF_VLAN = 2,
-IFLA_VF_TX_RATE = 3,
-IFLA_VF_SPOOFCHK = 4,
-IFLA_VF_LINK_STATE = 5,
-IFLA_VF_RATE = 6,
-IFLA_VF_RSS_QUERY_EN = 7,
-IFLA_VF_STATS = 8,
-IFLA_VF_TRUST = 9,
-IFLA_VF_IB_NODE_GUID = 10,
-IFLA_VF_IB_PORT_GUID = 11,
-IFLA_VF_VLAN_LIST = 12,
-IFLA_VF_BROADCAST = 13,
-__IFLA_VF_MAX = 14,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_mac {
-pub vf: __u32,
-pub mac: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_broadcast {
-pub broadcast: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-}
-pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC;
-pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO;
-pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_31 {
-IFLA_VF_VLAN_INFO_UNSPEC = 0,
-IFLA_VF_VLAN_INFO = 1,
-__IFLA_VF_VLAN_INFO_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan_info {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-pub vlan_proto: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_tx_rate {
-pub vf: __u32,
-pub rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rate {
-pub vf: __u32,
-pub min_tx_rate: __u32,
-pub max_tx_rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_spoofchk {
-pub vf: __u32,
-pub setting: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_guid {
-pub vf: __u32,
-pub guid: __u64,
-}
-pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO;
-pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE;
-pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE;
-pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_32 {
-IFLA_VF_LINK_STATE_AUTO = 0,
-IFLA_VF_LINK_STATE_ENABLE = 1,
-IFLA_VF_LINK_STATE_DISABLE = 2,
-__IFLA_VF_LINK_STATE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_link_state {
-pub vf: __u32,
-pub link_state: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rss_query_en {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS;
-pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS;
-pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES;
-pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES;
-pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST;
-pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST;
-pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD;
-pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED;
-pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED;
-pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_33 {
-IFLA_VF_STATS_RX_PACKETS = 0,
-IFLA_VF_STATS_TX_PACKETS = 1,
-IFLA_VF_STATS_RX_BYTES = 2,
-IFLA_VF_STATS_TX_BYTES = 3,
-IFLA_VF_STATS_BROADCAST = 4,
-IFLA_VF_STATS_MULTICAST = 5,
-IFLA_VF_STATS_PAD = 6,
-IFLA_VF_STATS_RX_DROPPED = 7,
-IFLA_VF_STATS_TX_DROPPED = 8,
-__IFLA_VF_STATS_MAX = 9,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_trust {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC;
-pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT;
-pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_34 {
-IFLA_VF_PORT_UNSPEC = 0,
-IFLA_VF_PORT = 1,
-__IFLA_VF_PORT_MAX = 2,
-}
-pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC;
-pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF;
-pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE;
-pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE;
-pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID;
-pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID;
-pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST;
-pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE;
-pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_35 {
-IFLA_PORT_UNSPEC = 0,
-IFLA_PORT_VF = 1,
-IFLA_PORT_PROFILE = 2,
-IFLA_PORT_VSI_TYPE = 3,
-IFLA_PORT_INSTANCE_UUID = 4,
-IFLA_PORT_HOST_UUID = 5,
-IFLA_PORT_REQUEST = 6,
-IFLA_PORT_RESPONSE = 7,
-__IFLA_PORT_MAX = 8,
-}
-pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE;
-pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR;
-pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE;
-pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_36 {
-PORT_REQUEST_PREASSOCIATE = 0,
-PORT_REQUEST_PREASSOCIATE_RR = 1,
-PORT_REQUEST_ASSOCIATE = 2,
-PORT_REQUEST_DISASSOCIATE = 3,
-}
-pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS;
-pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT;
-pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID;
-pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION;
-pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION;
-pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC;
-pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS;
-pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS;
-pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID;
-pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE;
-pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_37 {
-PORT_VDP_RESPONSE_SUCCESS = 0,
-PORT_VDP_RESPONSE_INVALID_FORMAT = 1,
-PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES = 2,
-PORT_VDP_RESPONSE_UNUSED_VTID = 3,
-PORT_VDP_RESPONSE_VTID_VIOLATION = 4,
-PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION = 5,
-PORT_VDP_RESPONSE_OUT_OF_SYNC = 6,
-PORT_PROFILE_RESPONSE_SUCCESS = 256,
-PORT_PROFILE_RESPONSE_INPROGRESS = 257,
-PORT_PROFILE_RESPONSE_INVALID = 258,
-PORT_PROFILE_RESPONSE_BADSTATE = 259,
-PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260,
-PORT_PROFILE_RESPONSE_ERROR = 261,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_port_vsi {
-pub vsi_mgr_id: __u8,
-pub vsi_type_id: [__u8; 3usize],
-pub vsi_type_version: __u8,
-pub pad: [__u8; 3usize],
-}
-pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC;
-pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY;
-pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE;
-pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST;
-pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_38 {
-IFLA_IPOIB_UNSPEC = 0,
-IFLA_IPOIB_PKEY = 1,
-IFLA_IPOIB_MODE = 2,
-IFLA_IPOIB_UMCAST = 3,
-__IFLA_IPOIB_MAX = 4,
-}
-pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM;
-pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_39 {
-IPOIB_MODE_DATAGRAM = 0,
-IPOIB_MODE_CONNECTED = 1,
-}
-pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR;
-pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP;
-pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_40 {
-HSR_PROTOCOL_HSR = 0,
-HSR_PROTOCOL_PRP = 1,
-HSR_PROTOCOL_MAX = 2,
-}
-pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC;
-pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1;
-pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2;
-pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC;
-pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR;
-pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR;
-pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION;
-pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL;
-pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_41 {
-IFLA_HSR_UNSPEC = 0,
-IFLA_HSR_SLAVE1 = 1,
-IFLA_HSR_SLAVE2 = 2,
-IFLA_HSR_MULTICAST_SPEC = 3,
-IFLA_HSR_SUPERVISION_ADDR = 4,
-IFLA_HSR_SEQ_NR = 5,
-IFLA_HSR_VERSION = 6,
-IFLA_HSR_PROTOCOL = 7,
-__IFLA_HSR_MAX = 8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct if_stats_msg {
-pub family: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub ifindex: __u32,
-pub filter_mask: __u32,
-}
-pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC;
-pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64;
-pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS;
-pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE;
-pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS;
-pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC;
-pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_42 {
-IFLA_STATS_UNSPEC = 0,
-IFLA_STATS_LINK_64 = 1,
-IFLA_STATS_LINK_XSTATS = 2,
-IFLA_STATS_LINK_XSTATS_SLAVE = 3,
-IFLA_STATS_LINK_OFFLOAD_XSTATS = 4,
-IFLA_STATS_AF_SPEC = 5,
-__IFLA_STATS_MAX = 6,
-}
-pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC;
-pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS;
-pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_43 {
-IFLA_STATS_GETSET_UNSPEC = 0,
-IFLA_STATS_GET_FILTERS = 1,
-IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2,
-__IFLA_STATS_GETSET_MAX = 3,
-}
-pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC;
-pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE;
-pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND;
-pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_44 {
-LINK_XSTATS_TYPE_UNSPEC = 0,
-LINK_XSTATS_TYPE_BRIDGE = 1,
-LINK_XSTATS_TYPE_BOND = 2,
-__LINK_XSTATS_TYPE_MAX = 3,
-}
-pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO;
-pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_45 {
-IFLA_OFFLOAD_XSTATS_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_CPU_HIT = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO = 2,
-IFLA_OFFLOAD_XSTATS_L3_STATS = 3,
-__IFLA_OFFLOAD_XSTATS_MAX = 4,
-}
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED;
-pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_46 {
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2,
-__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3,
-}
-pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE;
-pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV;
-pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB;
-pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW;
-pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_47 {
-XDP_ATTACHED_NONE = 0,
-XDP_ATTACHED_DRV = 1,
-XDP_ATTACHED_SKB = 2,
-XDP_ATTACHED_HW = 3,
-XDP_ATTACHED_MULTI = 4,
-}
-pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC;
-pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD;
-pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED;
-pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS;
-pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID;
-pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID;
-pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID;
-pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID;
-pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD;
-pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_48 {
-IFLA_XDP_UNSPEC = 0,
-IFLA_XDP_FD = 1,
-IFLA_XDP_ATTACHED = 2,
-IFLA_XDP_FLAGS = 3,
-IFLA_XDP_PROG_ID = 4,
-IFLA_XDP_DRV_PROG_ID = 5,
-IFLA_XDP_SKB_PROG_ID = 6,
-IFLA_XDP_HW_PROG_ID = 7,
-IFLA_XDP_EXPECTED_FD = 8,
-__IFLA_XDP_MAX = 9,
-}
-pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE;
-pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT;
-pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES;
-pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER;
-pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS;
-pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND;
-pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_49 {
-IFLA_EVENT_NONE = 0,
-IFLA_EVENT_REBOOT = 1,
-IFLA_EVENT_FEATURES = 2,
-IFLA_EVENT_BONDING_FAILOVER = 3,
-IFLA_EVENT_NOTIFY_PEERS = 4,
-IFLA_EVENT_IGMP_RESEND = 5,
-IFLA_EVENT_BONDING_OPTIONS = 6,
-}
-pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC;
-pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER;
-pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP;
-pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE;
-pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI;
-pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR;
-pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST;
-pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE;
-pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES;
-pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES;
-pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_50 {
-IFLA_TUN_UNSPEC = 0,
-IFLA_TUN_OWNER = 1,
-IFLA_TUN_GROUP = 2,
-IFLA_TUN_TYPE = 3,
-IFLA_TUN_PI = 4,
-IFLA_TUN_VNET_HDR = 5,
-IFLA_TUN_PERSIST = 6,
-IFLA_TUN_MULTI_QUEUE = 7,
-IFLA_TUN_NUM_QUEUES = 8,
-IFLA_TUN_NUM_DISABLED_QUEUES = 9,
-__IFLA_TUN_MAX = 10,
-}
-pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC;
-pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID;
-pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS;
-pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_51 {
-IFLA_RMNET_UNSPEC = 0,
-IFLA_RMNET_MUX_ID = 1,
-IFLA_RMNET_FLAGS = 2,
-__IFLA_RMNET_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_rmnet_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC;
-pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET;
-pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_52 {
-IFLA_MCTP_UNSPEC = 0,
-IFLA_MCTP_NET = 1,
-__IFLA_MCTP_MAX = 2,
-}
-pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC;
-pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER;
-pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_53 {
-IFLA_DSA_UNSPEC = 0,
-IFLA_DSA_MASTER = 1,
-__IFLA_DSA_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifaddrmsg {
-pub ifa_family: __u8,
-pub ifa_prefixlen: __u8,
-pub ifa_flags: __u8,
-pub ifa_scope: __u8,
-pub ifa_index: __u32,
-}
-pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC;
-pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS;
-pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL;
-pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL;
-pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST;
-pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST;
-pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO;
-pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST;
-pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS;
-pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY;
-pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID;
-pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO;
-pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_54 {
-IFA_UNSPEC = 0,
-IFA_ADDRESS = 1,
-IFA_LOCAL = 2,
-IFA_LABEL = 3,
-IFA_BROADCAST = 4,
-IFA_ANYCAST = 5,
-IFA_CACHEINFO = 6,
-IFA_MULTICAST = 7,
-IFA_FLAGS = 8,
-IFA_RT_PRIORITY = 9,
-IFA_TARGET_NETNSID = 10,
-IFA_PROTO = 11,
-__IFA_MAX = 12,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifa_cacheinfo {
-pub ifa_prefered: __u32,
-pub ifa_valid: __u32,
-pub cstamp: __u32,
-pub tstamp: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndmsg {
-pub ndm_family: __u8,
-pub ndm_pad1: __u8,
-pub ndm_pad2: __u16,
-pub ndm_ifindex: __s32,
-pub ndm_state: __u16,
-pub ndm_flags: __u8,
-pub ndm_type: __u8,
-}
-pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC;
-pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST;
-pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR;
-pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO;
-pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES;
-pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN;
-pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT;
-pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI;
-pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX;
-pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER;
-pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID;
-pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI;
-pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL;
-pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID;
-pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS;
-pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT;
-pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK;
-pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK;
-pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_55 {
-NDA_UNSPEC = 0,
-NDA_DST = 1,
-NDA_LLADDR = 2,
-NDA_CACHEINFO = 3,
-NDA_PROBES = 4,
-NDA_VLAN = 5,
-NDA_PORT = 6,
-NDA_VNI = 7,
-NDA_IFINDEX = 8,
-NDA_MASTER = 9,
-NDA_LINK_NETNSID = 10,
-NDA_SRC_VNI = 11,
-NDA_PROTOCOL = 12,
-NDA_NH_ID = 13,
-NDA_FDB_EXT_ATTRS = 14,
-NDA_FLAGS_EXT = 15,
-NDA_NDM_STATE_MASK = 16,
-NDA_NDM_FLAGS_MASK = 17,
-__NDA_MAX = 18,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nda_cacheinfo {
-pub ndm_confirmed: __u32,
-pub ndm_used: __u32,
-pub ndm_updated: __u32,
-pub ndm_refcnt: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_stats {
-pub ndts_allocs: __u64,
-pub ndts_destroys: __u64,
-pub ndts_hash_grows: __u64,
-pub ndts_res_failed: __u64,
-pub ndts_lookups: __u64,
-pub ndts_hits: __u64,
-pub ndts_rcv_probes_mcast: __u64,
-pub ndts_rcv_probes_ucast: __u64,
-pub ndts_periodic_gc_runs: __u64,
-pub ndts_forced_gc_runs: __u64,
-pub ndts_table_fulls: __u64,
-}
-pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC;
-pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX;
-pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT;
-pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME;
-pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME;
-pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME;
-pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME;
-pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME;
-pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN;
-pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES;
-pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES;
-pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES;
-pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY;
-pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY;
-pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN;
-pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME;
-pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES;
-pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES;
-pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD;
-pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS;
-pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_56 {
-NDTPA_UNSPEC = 0,
-NDTPA_IFINDEX = 1,
-NDTPA_REFCNT = 2,
-NDTPA_REACHABLE_TIME = 3,
-NDTPA_BASE_REACHABLE_TIME = 4,
-NDTPA_RETRANS_TIME = 5,
-NDTPA_GC_STALETIME = 6,
-NDTPA_DELAY_PROBE_TIME = 7,
-NDTPA_QUEUE_LEN = 8,
-NDTPA_APP_PROBES = 9,
-NDTPA_UCAST_PROBES = 10,
-NDTPA_MCAST_PROBES = 11,
-NDTPA_ANYCAST_DELAY = 12,
-NDTPA_PROXY_DELAY = 13,
-NDTPA_PROXY_QLEN = 14,
-NDTPA_LOCKTIME = 15,
-NDTPA_QUEUE_LENBYTES = 16,
-NDTPA_MCAST_REPROBES = 17,
-NDTPA_PAD = 18,
-NDTPA_INTERVAL_PROBE_TIME_MS = 19,
-__NDTPA_MAX = 20,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndtmsg {
-pub ndtm_family: __u8,
-pub ndtm_pad1: __u8,
-pub ndtm_pad2: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_config {
-pub ndtc_key_len: __u16,
-pub ndtc_entry_size: __u16,
-pub ndtc_entries: __u32,
-pub ndtc_last_flush: __u32,
-pub ndtc_last_rand: __u32,
-pub ndtc_hash_rnd: __u32,
-pub ndtc_hash_mask: __u32,
-pub ndtc_hash_chain_gc: __u32,
-pub ndtc_proxy_qlen: __u32,
-}
-pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC;
-pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME;
-pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1;
-pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2;
-pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3;
-pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG;
-pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS;
-pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS;
-pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL;
-pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD;
-pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_57 {
-NDTA_UNSPEC = 0,
-NDTA_NAME = 1,
-NDTA_THRESH1 = 2,
-NDTA_THRESH2 = 3,
-NDTA_THRESH3 = 4,
-NDTA_CONFIG = 5,
-NDTA_PARMS = 6,
-NDTA_STATS = 7,
-NDTA_GC_INTERVAL = 8,
-NDTA_PAD = 9,
-__NDTA_MAX = 10,
-}
-pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT;
-pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_58 {
-FDB_NOTIFY_BIT = 1,
-FDB_NOTIFY_INACTIVE_BIT = 2,
-}
-pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC;
-pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY;
-pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH;
-pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_59 {
-NFEA_UNSPEC = 0,
-NFEA_ACTIVITY_NOTIFY = 1,
-NFEA_DONT_REFRESH = 2,
-__NFEA_MAX = 3,
-}
-pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK;
-pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK;
-pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK;
-pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR;
-pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR;
-pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR;
-pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE;
-pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE;
-pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE;
-pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH;
-pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH;
-pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH;
-pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE;
-pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE;
-pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE;
-pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC;
-pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC;
-pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC;
-pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS;
-pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS;
-pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS;
-pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER;
-pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER;
-pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER;
-pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION;
-pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION;
-pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION;
-pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX;
-pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST;
-pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST;
-pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL;
-pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL;
-pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL;
-pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT;
-pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL;
-pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL;
-pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL;
-pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB;
-pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB;
-pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF;
-pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF;
-pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF;
-pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB;
-pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB;
-pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB;
-pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID;
-pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID;
-pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID;
-pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS;
-pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS;
-pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS;
-pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT;
-pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN;
-pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN;
-pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN;
-pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP;
-pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP;
-pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP;
-pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP;
-pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP;
-pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP;
-pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN;
-pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN;
-pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN;
-pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET;
-pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET;
-pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET;
-pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL;
-pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL;
-pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL;
-pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_60 {
-RTM_BASE = 16,
-RTM_DELLINK = 17,
-RTM_GETLINK = 18,
-RTM_SETLINK = 19,
-RTM_NEWADDR = 20,
-RTM_DELADDR = 21,
-RTM_GETADDR = 22,
-RTM_NEWROUTE = 24,
-RTM_DELROUTE = 25,
-RTM_GETROUTE = 26,
-RTM_NEWNEIGH = 28,
-RTM_DELNEIGH = 29,
-RTM_GETNEIGH = 30,
-RTM_NEWRULE = 32,
-RTM_DELRULE = 33,
-RTM_GETRULE = 34,
-RTM_NEWQDISC = 36,
-RTM_DELQDISC = 37,
-RTM_GETQDISC = 38,
-RTM_NEWTCLASS = 40,
-RTM_DELTCLASS = 41,
-RTM_GETTCLASS = 42,
-RTM_NEWTFILTER = 44,
-RTM_DELTFILTER = 45,
-RTM_GETTFILTER = 46,
-RTM_NEWACTION = 48,
-RTM_DELACTION = 49,
-RTM_GETACTION = 50,
-RTM_NEWPREFIX = 52,
-RTM_GETMULTICAST = 58,
-RTM_GETANYCAST = 62,
-RTM_NEWNEIGHTBL = 64,
-RTM_GETNEIGHTBL = 66,
-RTM_SETNEIGHTBL = 67,
-RTM_NEWNDUSEROPT = 68,
-RTM_NEWADDRLABEL = 72,
-RTM_DELADDRLABEL = 73,
-RTM_GETADDRLABEL = 74,
-RTM_GETDCB = 78,
-RTM_SETDCB = 79,
-RTM_NEWNETCONF = 80,
-RTM_DELNETCONF = 81,
-RTM_GETNETCONF = 82,
-RTM_NEWMDB = 84,
-RTM_DELMDB = 85,
-RTM_GETMDB = 86,
-RTM_NEWNSID = 88,
-RTM_DELNSID = 89,
-RTM_GETNSID = 90,
-RTM_NEWSTATS = 92,
-RTM_GETSTATS = 94,
-RTM_SETSTATS = 95,
-RTM_NEWCACHEREPORT = 96,
-RTM_NEWCHAIN = 100,
-RTM_DELCHAIN = 101,
-RTM_GETCHAIN = 102,
-RTM_NEWNEXTHOP = 104,
-RTM_DELNEXTHOP = 105,
-RTM_GETNEXTHOP = 106,
-RTM_NEWLINKPROP = 108,
-RTM_DELLINKPROP = 109,
-RTM_GETLINKPROP = 110,
-RTM_NEWVLAN = 112,
-RTM_DELVLAN = 113,
-RTM_GETVLAN = 114,
-RTM_NEWNEXTHOPBUCKET = 116,
-RTM_DELNEXTHOPBUCKET = 117,
-RTM_GETNEXTHOPBUCKET = 118,
-RTM_NEWTUNNEL = 120,
-RTM_DELTUNNEL = 121,
-RTM_GETTUNNEL = 122,
-__RTM_MAX = 123,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtattr {
-pub rta_len: crate::ctypes::c_ushort,
-pub rta_type: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtmsg {
-pub rtm_family: crate::ctypes::c_uchar,
-pub rtm_dst_len: crate::ctypes::c_uchar,
-pub rtm_src_len: crate::ctypes::c_uchar,
-pub rtm_tos: crate::ctypes::c_uchar,
-pub rtm_table: crate::ctypes::c_uchar,
-pub rtm_protocol: crate::ctypes::c_uchar,
-pub rtm_scope: crate::ctypes::c_uchar,
-pub rtm_type: crate::ctypes::c_uchar,
-pub rtm_flags: crate::ctypes::c_uint,
-}
-pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC;
-pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST;
-pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL;
-pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST;
-pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST;
-pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST;
-pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE;
-pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE;
-pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT;
-pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW;
-pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT;
-pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE;
-pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_61 {
-RTN_UNSPEC = 0,
-RTN_UNICAST = 1,
-RTN_LOCAL = 2,
-RTN_BROADCAST = 3,
-RTN_ANYCAST = 4,
-RTN_MULTICAST = 5,
-RTN_BLACKHOLE = 6,
-RTN_UNREACHABLE = 7,
-RTN_PROHIBIT = 8,
-RTN_THROW = 9,
-RTN_NAT = 10,
-RTN_XRESOLVE = 11,
-__RTN_MAX = 12,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_scope_t {
-RT_SCOPE_UNIVERSE = 0,
-RT_SCOPE_SITE = 200,
-RT_SCOPE_LINK = 253,
-RT_SCOPE_HOST = 254,
-RT_SCOPE_NOWHERE = 255,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_class_t {
-RT_TABLE_UNSPEC = 0,
-RT_TABLE_COMPAT = 252,
-RT_TABLE_DEFAULT = 253,
-RT_TABLE_MAIN = 254,
-RT_TABLE_LOCAL = 255,
-RT_TABLE_MAX = 4294967295,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtattr_type_t {
-RTA_UNSPEC = 0,
-RTA_DST = 1,
-RTA_SRC = 2,
-RTA_IIF = 3,
-RTA_OIF = 4,
-RTA_GATEWAY = 5,
-RTA_PRIORITY = 6,
-RTA_PREFSRC = 7,
-RTA_METRICS = 8,
-RTA_MULTIPATH = 9,
-RTA_PROTOINFO = 10,
-RTA_FLOW = 11,
-RTA_CACHEINFO = 12,
-RTA_SESSION = 13,
-RTA_MP_ALGO = 14,
-RTA_TABLE = 15,
-RTA_MARK = 16,
-RTA_MFC_STATS = 17,
-RTA_VIA = 18,
-RTA_NEWDST = 19,
-RTA_PREF = 20,
-RTA_ENCAP_TYPE = 21,
-RTA_ENCAP = 22,
-RTA_EXPIRES = 23,
-RTA_PAD = 24,
-RTA_UID = 25,
-RTA_TTL_PROPAGATE = 26,
-RTA_IP_PROTO = 27,
-RTA_SPORT = 28,
-RTA_DPORT = 29,
-RTA_NH_ID = 30,
-__RTA_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnexthop {
-pub rtnh_len: crate::ctypes::c_ushort,
-pub rtnh_flags: crate::ctypes::c_uchar,
-pub rtnh_hops: crate::ctypes::c_uchar,
-pub rtnh_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rtvia {
-pub rtvia_family: __kernel_sa_family_t,
-pub rtvia_addr: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_cacheinfo {
-pub rta_clntref: __u32,
-pub rta_lastuse: __u32,
-pub rta_expires: __s32,
-pub rta_error: __u32,
-pub rta_used: __u32,
-pub rta_id: __u32,
-pub rta_ts: __u32,
-pub rta_tsage: __u32,
-}
-pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC;
-pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK;
-pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU;
-pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW;
-pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT;
-pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR;
-pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH;
-pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND;
-pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS;
-pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING;
-pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT;
-pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND;
-pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES;
-pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN;
-pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND;
-pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK;
-pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO;
-pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE;
-pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_62 {
-RTAX_UNSPEC = 0,
-RTAX_LOCK = 1,
-RTAX_MTU = 2,
-RTAX_WINDOW = 3,
-RTAX_RTT = 4,
-RTAX_RTTVAR = 5,
-RTAX_SSTHRESH = 6,
-RTAX_CWND = 7,
-RTAX_ADVMSS = 8,
-RTAX_REORDERING = 9,
-RTAX_HOPLIMIT = 10,
-RTAX_INITCWND = 11,
-RTAX_FEATURES = 12,
-RTAX_RTO_MIN = 13,
-RTAX_INITRWND = 14,
-RTAX_QUICKACK = 15,
-RTAX_CC_ALGO = 16,
-RTAX_FASTOPEN_NO_COOKIE = 17,
-__RTAX_MAX = 18,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rta_session {
-pub proto: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub u: rta_session__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union rta_session__bindgen_ty_1 {
-pub ports: rta_session__bindgen_ty_1__bindgen_ty_1,
-pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2,
-pub spi: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_1 {
-pub sport: __u16,
-pub dport: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_2 {
-pub type_: __u8,
-pub code: __u8,
-pub ident: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_mfc_stats {
-pub mfcs_packets: __u64,
-pub mfcs_bytes: __u64,
-pub mfcs_wrong_if: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtgenmsg {
-pub rtgen_family: crate::ctypes::c_uchar,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifinfomsg {
-pub ifi_family: crate::ctypes::c_uchar,
-pub __ifi_pad: crate::ctypes::c_uchar,
-pub ifi_type: crate::ctypes::c_ushort,
-pub ifi_index: crate::ctypes::c_int,
-pub ifi_flags: crate::ctypes::c_uint,
-pub ifi_change: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefixmsg {
-pub prefix_family: crate::ctypes::c_uchar,
-pub prefix_pad1: crate::ctypes::c_uchar,
-pub prefix_pad2: crate::ctypes::c_ushort,
-pub prefix_ifindex: crate::ctypes::c_int,
-pub prefix_type: crate::ctypes::c_uchar,
-pub prefix_len: crate::ctypes::c_uchar,
-pub prefix_flags: crate::ctypes::c_uchar,
-pub prefix_pad3: crate::ctypes::c_uchar,
-}
-pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC;
-pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS;
-pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO;
-pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_63 {
-PREFIX_UNSPEC = 0,
-PREFIX_ADDRESS = 1,
-PREFIX_CACHEINFO = 2,
-__PREFIX_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefix_cacheinfo {
-pub preferred_time: __u32,
-pub valid_time: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcmsg {
-pub tcm_family: crate::ctypes::c_uchar,
-pub tcm__pad1: crate::ctypes::c_uchar,
-pub tcm__pad2: crate::ctypes::c_ushort,
-pub tcm_ifindex: crate::ctypes::c_int,
-pub tcm_handle: __u32,
-pub tcm_parent: __u32,
-pub tcm_info: __u32,
-}
-pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC;
-pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND;
-pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS;
-pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS;
-pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS;
-pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE;
-pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT;
-pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2;
-pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB;
-pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD;
-pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE;
-pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN;
-pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD;
-pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK;
-pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK;
-pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS;
-pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_64 {
-TCA_UNSPEC = 0,
-TCA_KIND = 1,
-TCA_OPTIONS = 2,
-TCA_STATS = 3,
-TCA_XSTATS = 4,
-TCA_RATE = 5,
-TCA_FCNT = 6,
-TCA_STATS2 = 7,
-TCA_STAB = 8,
-TCA_PAD = 9,
-TCA_DUMP_INVISIBLE = 10,
-TCA_CHAIN = 11,
-TCA_HW_OFFLOAD = 12,
-TCA_INGRESS_BLOCK = 13,
-TCA_EGRESS_BLOCK = 14,
-TCA_DUMP_FLAGS = 15,
-__TCA_MAX = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nduseroptmsg {
-pub nduseropt_family: crate::ctypes::c_uchar,
-pub nduseropt_pad1: crate::ctypes::c_uchar,
-pub nduseropt_opts_len: crate::ctypes::c_ushort,
-pub nduseropt_ifindex: crate::ctypes::c_int,
-pub nduseropt_icmp_type: __u8,
-pub nduseropt_icmp_code: __u8,
-pub nduseropt_pad2: crate::ctypes::c_ushort,
-pub nduseropt_pad3: crate::ctypes::c_uint,
-}
-pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC;
-pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR;
-pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_65 {
-NDUSEROPT_UNSPEC = 0,
-NDUSEROPT_SRCADDR = 1,
-__NDUSEROPT_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtnetlink_groups {
-RTNLGRP_NONE = 0,
-RTNLGRP_LINK = 1,
-RTNLGRP_NOTIFY = 2,
-RTNLGRP_NEIGH = 3,
-RTNLGRP_TC = 4,
-RTNLGRP_IPV4_IFADDR = 5,
-RTNLGRP_IPV4_MROUTE = 6,
-RTNLGRP_IPV4_ROUTE = 7,
-RTNLGRP_IPV4_RULE = 8,
-RTNLGRP_IPV6_IFADDR = 9,
-RTNLGRP_IPV6_MROUTE = 10,
-RTNLGRP_IPV6_ROUTE = 11,
-RTNLGRP_IPV6_IFINFO = 12,
-RTNLGRP_DECnet_IFADDR = 13,
-RTNLGRP_NOP2 = 14,
-RTNLGRP_DECnet_ROUTE = 15,
-RTNLGRP_DECnet_RULE = 16,
-RTNLGRP_NOP4 = 17,
-RTNLGRP_IPV6_PREFIX = 18,
-RTNLGRP_IPV6_RULE = 19,
-RTNLGRP_ND_USEROPT = 20,
-RTNLGRP_PHONET_IFADDR = 21,
-RTNLGRP_PHONET_ROUTE = 22,
-RTNLGRP_DCB = 23,
-RTNLGRP_IPV4_NETCONF = 24,
-RTNLGRP_IPV6_NETCONF = 25,
-RTNLGRP_MDB = 26,
-RTNLGRP_MPLS_ROUTE = 27,
-RTNLGRP_NSID = 28,
-RTNLGRP_MPLS_NETCONF = 29,
-RTNLGRP_IPV4_MROUTE_R = 30,
-RTNLGRP_IPV6_MROUTE_R = 31,
-RTNLGRP_NEXTHOP = 32,
-RTNLGRP_BRVLAN = 33,
-RTNLGRP_MCTP_IFADDR = 34,
-RTNLGRP_TUNNEL = 35,
-RTNLGRP_STATS = 36,
-__RTNLGRP_MAX = 37,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcamsg {
-pub tca_family: crate::ctypes::c_uchar,
-pub tca__pad1: crate::ctypes::c_uchar,
-pub tca__pad2: crate::ctypes::c_ushort,
-}
-pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC;
-pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB;
-pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS;
-pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT;
-pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA;
-pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_66 {
-TCA_ROOT_UNSPEC = 0,
-TCA_ROOT_TAB = 1,
-TCA_ROOT_FLAGS = 2,
-TCA_ROOT_COUNT = 3,
-TCA_ROOT_TIME_DELTA = 4,
-__TCA_ROOT_MAX = 5,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/arm/errno.rs b/vendor/linux-raw-sys-0.3.2/src/arm/errno.rs
deleted file mode 100644
index 8c5620d74..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/arm/errno.rs
+++ /dev/null
@@ -1,135 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const EPERM: u32 = 1;
-pub const ENOENT: u32 = 2;
-pub const ESRCH: u32 = 3;
-pub const EINTR: u32 = 4;
-pub const EIO: u32 = 5;
-pub const ENXIO: u32 = 6;
-pub const E2BIG: u32 = 7;
-pub const ENOEXEC: u32 = 8;
-pub const EBADF: u32 = 9;
-pub const ECHILD: u32 = 10;
-pub const EAGAIN: u32 = 11;
-pub const ENOMEM: u32 = 12;
-pub const EACCES: u32 = 13;
-pub const EFAULT: u32 = 14;
-pub const ENOTBLK: u32 = 15;
-pub const EBUSY: u32 = 16;
-pub const EEXIST: u32 = 17;
-pub const EXDEV: u32 = 18;
-pub const ENODEV: u32 = 19;
-pub const ENOTDIR: u32 = 20;
-pub const EISDIR: u32 = 21;
-pub const EINVAL: u32 = 22;
-pub const ENFILE: u32 = 23;
-pub const EMFILE: u32 = 24;
-pub const ENOTTY: u32 = 25;
-pub const ETXTBSY: u32 = 26;
-pub const EFBIG: u32 = 27;
-pub const ENOSPC: u32 = 28;
-pub const ESPIPE: u32 = 29;
-pub const EROFS: u32 = 30;
-pub const EMLINK: u32 = 31;
-pub const EPIPE: u32 = 32;
-pub const EDOM: u32 = 33;
-pub const ERANGE: u32 = 34;
-pub const EDEADLK: u32 = 35;
-pub const ENAMETOOLONG: u32 = 36;
-pub const ENOLCK: u32 = 37;
-pub const ENOSYS: u32 = 38;
-pub const ENOTEMPTY: u32 = 39;
-pub const ELOOP: u32 = 40;
-pub const EWOULDBLOCK: u32 = 11;
-pub const ENOMSG: u32 = 42;
-pub const EIDRM: u32 = 43;
-pub const ECHRNG: u32 = 44;
-pub const EL2NSYNC: u32 = 45;
-pub const EL3HLT: u32 = 46;
-pub const EL3RST: u32 = 47;
-pub const ELNRNG: u32 = 48;
-pub const EUNATCH: u32 = 49;
-pub const ENOCSI: u32 = 50;
-pub const EL2HLT: u32 = 51;
-pub const EBADE: u32 = 52;
-pub const EBADR: u32 = 53;
-pub const EXFULL: u32 = 54;
-pub const ENOANO: u32 = 55;
-pub const EBADRQC: u32 = 56;
-pub const EBADSLT: u32 = 57;
-pub const EDEADLOCK: u32 = 35;
-pub const EBFONT: u32 = 59;
-pub const ENOSTR: u32 = 60;
-pub const ENODATA: u32 = 61;
-pub const ETIME: u32 = 62;
-pub const ENOSR: u32 = 63;
-pub const ENONET: u32 = 64;
-pub const ENOPKG: u32 = 65;
-pub const EREMOTE: u32 = 66;
-pub const ENOLINK: u32 = 67;
-pub const EADV: u32 = 68;
-pub const ESRMNT: u32 = 69;
-pub const ECOMM: u32 = 70;
-pub const EPROTO: u32 = 71;
-pub const EMULTIHOP: u32 = 72;
-pub const EDOTDOT: u32 = 73;
-pub const EBADMSG: u32 = 74;
-pub const EOVERFLOW: u32 = 75;
-pub const ENOTUNIQ: u32 = 76;
-pub const EBADFD: u32 = 77;
-pub const EREMCHG: u32 = 78;
-pub const ELIBACC: u32 = 79;
-pub const ELIBBAD: u32 = 80;
-pub const ELIBSCN: u32 = 81;
-pub const ELIBMAX: u32 = 82;
-pub const ELIBEXEC: u32 = 83;
-pub const EILSEQ: u32 = 84;
-pub const ERESTART: u32 = 85;
-pub const ESTRPIPE: u32 = 86;
-pub const EUSERS: u32 = 87;
-pub const ENOTSOCK: u32 = 88;
-pub const EDESTADDRREQ: u32 = 89;
-pub const EMSGSIZE: u32 = 90;
-pub const EPROTOTYPE: u32 = 91;
-pub const ENOPROTOOPT: u32 = 92;
-pub const EPROTONOSUPPORT: u32 = 93;
-pub const ESOCKTNOSUPPORT: u32 = 94;
-pub const EOPNOTSUPP: u32 = 95;
-pub const EPFNOSUPPORT: u32 = 96;
-pub const EAFNOSUPPORT: u32 = 97;
-pub const EADDRINUSE: u32 = 98;
-pub const EADDRNOTAVAIL: u32 = 99;
-pub const ENETDOWN: u32 = 100;
-pub const ENETUNREACH: u32 = 101;
-pub const ENETRESET: u32 = 102;
-pub const ECONNABORTED: u32 = 103;
-pub const ECONNRESET: u32 = 104;
-pub const ENOBUFS: u32 = 105;
-pub const EISCONN: u32 = 106;
-pub const ENOTCONN: u32 = 107;
-pub const ESHUTDOWN: u32 = 108;
-pub const ETOOMANYREFS: u32 = 109;
-pub const ETIMEDOUT: u32 = 110;
-pub const ECONNREFUSED: u32 = 111;
-pub const EHOSTDOWN: u32 = 112;
-pub const EHOSTUNREACH: u32 = 113;
-pub const EALREADY: u32 = 114;
-pub const EINPROGRESS: u32 = 115;
-pub const ESTALE: u32 = 116;
-pub const EUCLEAN: u32 = 117;
-pub const ENOTNAM: u32 = 118;
-pub const ENAVAIL: u32 = 119;
-pub const EISNAM: u32 = 120;
-pub const EREMOTEIO: u32 = 121;
-pub const EDQUOT: u32 = 122;
-pub const ENOMEDIUM: u32 = 123;
-pub const EMEDIUMTYPE: u32 = 124;
-pub const ECANCELED: u32 = 125;
-pub const ENOKEY: u32 = 126;
-pub const EKEYEXPIRED: u32 = 127;
-pub const EKEYREVOKED: u32 = 128;
-pub const EKEYREJECTED: u32 = 129;
-pub const EOWNERDEAD: u32 = 130;
-pub const ENOTRECOVERABLE: u32 = 131;
-pub const ERFKILL: u32 = 132;
-pub const EHWPOISON: u32 = 133;
diff --git a/vendor/linux-raw-sys-0.3.2/src/arm/general.rs b/vendor/linux-raw-sys-0.3.2/src/arm/general.rs
deleted file mode 100644
index 6d713b1f8..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/arm/general.rs
+++ /dev/null
@@ -1,5379 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
-pub struct __BindgenBitfieldUnit<Storage> {
-storage: Storage,
-}
-impl<Storage> __BindgenBitfieldUnit<Storage> {
-#[inline]
-pub const fn new(storage: Storage) -> Self {
-Self { storage }
-}
-}
-impl<Storage> __BindgenBitfieldUnit<Storage>
-where
-Storage: AsRef<[u8]> + AsMut<[u8]>,
-{
-#[inline]
-pub fn get_bit(&self, index: usize) -> bool {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = self.storage.as_ref()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-byte & mask == mask
-}
-#[inline]
-pub fn set_bit(&mut self, index: usize, val: bool) {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = &mut self.storage.as_mut()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-if val {
-*byte |= mask;
-} else {
-*byte &= !mask;
-}
-}
-#[inline]
-pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-let mut val = 0;
-for i in 0..(bit_width as usize) {
-if self.get_bit(i + bit_offset) {
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-val |= 1 << index;
-}
-}
-val
-}
-#[inline]
-pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-for i in 0..(bit_width as usize) {
-let mask = 1 << i;
-let val_bit_is_set = val & mask == mask;
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-self.set_bit(index + bit_offset, val_bit_is_set);
-}
-}
-}
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-#[repr(C)]
-pub struct __BindgenUnionField<T>(::core::marker::PhantomData<T>);
-impl<T> __BindgenUnionField<T> {
-#[inline]
-pub const fn new() -> Self {
-__BindgenUnionField(::core::marker::PhantomData)
-}
-#[inline]
-pub unsafe fn as_ref(&self) -> &T {
-::core::mem::transmute(self)
-}
-#[inline]
-pub unsafe fn as_mut(&mut self) -> &mut T {
-::core::mem::transmute(self)
-}
-}
-impl<T> ::core::default::Default for __BindgenUnionField<T> {
-#[inline]
-fn default() -> Self {
-Self::new()
-}
-}
-impl<T> ::core::clone::Clone for __BindgenUnionField<T> {
-#[inline]
-fn clone(&self) -> Self {
-Self::new()
-}
-}
-impl<T> ::core::marker::Copy for __BindgenUnionField<T> {}
-impl<T> ::core::fmt::Debug for __BindgenUnionField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__BindgenUnionField")
-}
-}
-impl<T> ::core::hash::Hash for __BindgenUnionField<T> {
-fn hash<H: ::core::hash::Hasher>(&self, _state: &mut H) {}
-}
-impl<T> ::core::cmp::PartialEq for __BindgenUnionField<T> {
-fn eq(&self, _other: &__BindgenUnionField<T>) -> bool {
-true
-}
-}
-impl<T> ::core::cmp::Eq for __BindgenUnionField<T> {}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const AT_SYSINFO_EHDR: u32 = 33;
-pub const AT_NULL: u32 = 0;
-pub const AT_IGNORE: u32 = 1;
-pub const AT_EXECFD: u32 = 2;
-pub const AT_PHDR: u32 = 3;
-pub const AT_PHENT: u32 = 4;
-pub const AT_PHNUM: u32 = 5;
-pub const AT_PAGESZ: u32 = 6;
-pub const AT_BASE: u32 = 7;
-pub const AT_FLAGS: u32 = 8;
-pub const AT_ENTRY: u32 = 9;
-pub const AT_NOTELF: u32 = 10;
-pub const AT_UID: u32 = 11;
-pub const AT_EUID: u32 = 12;
-pub const AT_GID: u32 = 13;
-pub const AT_EGID: u32 = 14;
-pub const AT_PLATFORM: u32 = 15;
-pub const AT_HWCAP: u32 = 16;
-pub const AT_CLKTCK: u32 = 17;
-pub const AT_SECURE: u32 = 23;
-pub const AT_BASE_PLATFORM: u32 = 24;
-pub const AT_RANDOM: u32 = 25;
-pub const AT_HWCAP2: u32 = 26;
-pub const AT_EXECFN: u32 = 31;
-pub const AT_MINSIGSTKSZ: u32 = 51;
-pub const __BITS_PER_LONG: u32 = 32;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S_1: u32 = 1;
-pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798;
-pub const _LINUX_CAPABILITY_U32S_2: u32 = 2;
-pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514;
-pub const _LINUX_CAPABILITY_U32S_3: u32 = 2;
-pub const VFS_CAP_REVISION_MASK: u32 = 4278190080;
-pub const VFS_CAP_REVISION_SHIFT: u32 = 24;
-pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081;
-pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1;
-pub const VFS_CAP_REVISION_1: u32 = 16777216;
-pub const VFS_CAP_U32_1: u32 = 1;
-pub const VFS_CAP_REVISION_2: u32 = 33554432;
-pub const VFS_CAP_U32_2: u32 = 2;
-pub const VFS_CAP_REVISION_3: u32 = 50331648;
-pub const VFS_CAP_U32_3: u32 = 2;
-pub const VFS_CAP_U32: u32 = 2;
-pub const VFS_CAP_REVISION: u32 = 50331648;
-pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S: u32 = 1;
-pub const CAP_CHOWN: u32 = 0;
-pub const CAP_DAC_OVERRIDE: u32 = 1;
-pub const CAP_DAC_READ_SEARCH: u32 = 2;
-pub const CAP_FOWNER: u32 = 3;
-pub const CAP_FSETID: u32 = 4;
-pub const CAP_KILL: u32 = 5;
-pub const CAP_SETGID: u32 = 6;
-pub const CAP_SETUID: u32 = 7;
-pub const CAP_SETPCAP: u32 = 8;
-pub const CAP_LINUX_IMMUTABLE: u32 = 9;
-pub const CAP_NET_BIND_SERVICE: u32 = 10;
-pub const CAP_NET_BROADCAST: u32 = 11;
-pub const CAP_NET_ADMIN: u32 = 12;
-pub const CAP_NET_RAW: u32 = 13;
-pub const CAP_IPC_LOCK: u32 = 14;
-pub const CAP_IPC_OWNER: u32 = 15;
-pub const CAP_SYS_MODULE: u32 = 16;
-pub const CAP_SYS_RAWIO: u32 = 17;
-pub const CAP_SYS_CHROOT: u32 = 18;
-pub const CAP_SYS_PTRACE: u32 = 19;
-pub const CAP_SYS_PACCT: u32 = 20;
-pub const CAP_SYS_ADMIN: u32 = 21;
-pub const CAP_SYS_BOOT: u32 = 22;
-pub const CAP_SYS_NICE: u32 = 23;
-pub const CAP_SYS_RESOURCE: u32 = 24;
-pub const CAP_SYS_TIME: u32 = 25;
-pub const CAP_SYS_TTY_CONFIG: u32 = 26;
-pub const CAP_MKNOD: u32 = 27;
-pub const CAP_LEASE: u32 = 28;
-pub const CAP_AUDIT_WRITE: u32 = 29;
-pub const CAP_AUDIT_CONTROL: u32 = 30;
-pub const CAP_SETFCAP: u32 = 31;
-pub const CAP_MAC_OVERRIDE: u32 = 32;
-pub const CAP_MAC_ADMIN: u32 = 33;
-pub const CAP_SYSLOG: u32 = 34;
-pub const CAP_WAKE_ALARM: u32 = 35;
-pub const CAP_BLOCK_SUSPEND: u32 = 36;
-pub const CAP_AUDIT_READ: u32 = 37;
-pub const CAP_PERFMON: u32 = 38;
-pub const CAP_BPF: u32 = 39;
-pub const CAP_CHECKPOINT_RESTORE: u32 = 40;
-pub const CAP_LAST_CAP: u32 = 40;
-pub const O_DIRECTORY: u32 = 16384;
-pub const O_NOFOLLOW: u32 = 32768;
-pub const O_DIRECT: u32 = 65536;
-pub const O_LARGEFILE: u32 = 131072;
-pub const O_ACCMODE: u32 = 3;
-pub const O_RDONLY: u32 = 0;
-pub const O_WRONLY: u32 = 1;
-pub const O_RDWR: u32 = 2;
-pub const O_CREAT: u32 = 64;
-pub const O_EXCL: u32 = 128;
-pub const O_NOCTTY: u32 = 256;
-pub const O_TRUNC: u32 = 512;
-pub const O_APPEND: u32 = 1024;
-pub const O_NONBLOCK: u32 = 2048;
-pub const O_DSYNC: u32 = 4096;
-pub const FASYNC: u32 = 8192;
-pub const O_NOATIME: u32 = 262144;
-pub const O_CLOEXEC: u32 = 524288;
-pub const __O_SYNC: u32 = 1048576;
-pub const O_SYNC: u32 = 1052672;
-pub const O_PATH: u32 = 2097152;
-pub const __O_TMPFILE: u32 = 4194304;
-pub const O_TMPFILE: u32 = 4210688;
-pub const O_TMPFILE_MASK: u32 = 4210752;
-pub const O_NDELAY: u32 = 2048;
-pub const F_DUPFD: u32 = 0;
-pub const F_GETFD: u32 = 1;
-pub const F_SETFD: u32 = 2;
-pub const F_GETFL: u32 = 3;
-pub const F_SETFL: u32 = 4;
-pub const F_GETLK: u32 = 5;
-pub const F_SETLK: u32 = 6;
-pub const F_SETLKW: u32 = 7;
-pub const F_SETOWN: u32 = 8;
-pub const F_GETOWN: u32 = 9;
-pub const F_SETSIG: u32 = 10;
-pub const F_GETSIG: u32 = 11;
-pub const F_GETLK64: u32 = 12;
-pub const F_SETLK64: u32 = 13;
-pub const F_SETLKW64: u32 = 14;
-pub const F_SETOWN_EX: u32 = 15;
-pub const F_GETOWN_EX: u32 = 16;
-pub const F_GETOWNER_UIDS: u32 = 17;
-pub const F_OFD_GETLK: u32 = 36;
-pub const F_OFD_SETLK: u32 = 37;
-pub const F_OFD_SETLKW: u32 = 38;
-pub const F_OWNER_TID: u32 = 0;
-pub const F_OWNER_PID: u32 = 1;
-pub const F_OWNER_PGRP: u32 = 2;
-pub const FD_CLOEXEC: u32 = 1;
-pub const F_RDLCK: u32 = 0;
-pub const F_WRLCK: u32 = 1;
-pub const F_UNLCK: u32 = 2;
-pub const F_EXLCK: u32 = 4;
-pub const F_SHLCK: u32 = 8;
-pub const LOCK_SH: u32 = 1;
-pub const LOCK_EX: u32 = 2;
-pub const LOCK_NB: u32 = 4;
-pub const LOCK_UN: u32 = 8;
-pub const LOCK_MAND: u32 = 32;
-pub const LOCK_READ: u32 = 64;
-pub const LOCK_WRITE: u32 = 128;
-pub const LOCK_RW: u32 = 192;
-pub const F_LINUX_SPECIFIC_BASE: u32 = 1024;
-pub const RESOLVE_NO_XDEV: u32 = 1;
-pub const RESOLVE_NO_MAGICLINKS: u32 = 2;
-pub const RESOLVE_NO_SYMLINKS: u32 = 4;
-pub const RESOLVE_BENEATH: u32 = 8;
-pub const RESOLVE_IN_ROOT: u32 = 16;
-pub const RESOLVE_CACHED: u32 = 32;
-pub const F_SETLEASE: u32 = 1024;
-pub const F_GETLEASE: u32 = 1025;
-pub const F_CANCELLK: u32 = 1029;
-pub const F_DUPFD_CLOEXEC: u32 = 1030;
-pub const F_NOTIFY: u32 = 1026;
-pub const F_SETPIPE_SZ: u32 = 1031;
-pub const F_GETPIPE_SZ: u32 = 1032;
-pub const F_ADD_SEALS: u32 = 1033;
-pub const F_GET_SEALS: u32 = 1034;
-pub const F_SEAL_SEAL: u32 = 1;
-pub const F_SEAL_SHRINK: u32 = 2;
-pub const F_SEAL_GROW: u32 = 4;
-pub const F_SEAL_WRITE: u32 = 8;
-pub const F_SEAL_FUTURE_WRITE: u32 = 16;
-pub const F_GET_RW_HINT: u32 = 1035;
-pub const F_SET_RW_HINT: u32 = 1036;
-pub const F_GET_FILE_RW_HINT: u32 = 1037;
-pub const F_SET_FILE_RW_HINT: u32 = 1038;
-pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const RWH_WRITE_LIFE_NONE: u32 = 1;
-pub const RWH_WRITE_LIFE_SHORT: u32 = 2;
-pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3;
-pub const RWH_WRITE_LIFE_LONG: u32 = 4;
-pub const RWH_WRITE_LIFE_EXTREME: u32 = 5;
-pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const DN_ACCESS: u32 = 1;
-pub const DN_MODIFY: u32 = 2;
-pub const DN_CREATE: u32 = 4;
-pub const DN_DELETE: u32 = 8;
-pub const DN_RENAME: u32 = 16;
-pub const DN_ATTRIB: u32 = 32;
-pub const DN_MULTISHOT: u32 = 2147483648;
-pub const AT_FDCWD: i32 = -100;
-pub const AT_SYMLINK_NOFOLLOW: u32 = 256;
-pub const AT_EACCESS: u32 = 512;
-pub const AT_REMOVEDIR: u32 = 512;
-pub const AT_SYMLINK_FOLLOW: u32 = 1024;
-pub const AT_NO_AUTOMOUNT: u32 = 2048;
-pub const AT_EMPTY_PATH: u32 = 4096;
-pub const AT_STATX_SYNC_TYPE: u32 = 24576;
-pub const AT_STATX_SYNC_AS_STAT: u32 = 0;
-pub const AT_STATX_FORCE_SYNC: u32 = 8192;
-pub const AT_STATX_DONT_SYNC: u32 = 16384;
-pub const AT_RECURSIVE: u32 = 32768;
-pub const EPOLL_CLOEXEC: u32 = 524288;
-pub const EPOLL_CTL_ADD: u32 = 1;
-pub const EPOLL_CTL_DEL: u32 = 2;
-pub const EPOLL_CTL_MOD: u32 = 3;
-pub const POSIX_FADV_NORMAL: u32 = 0;
-pub const POSIX_FADV_RANDOM: u32 = 1;
-pub const POSIX_FADV_SEQUENTIAL: u32 = 2;
-pub const POSIX_FADV_WILLNEED: u32 = 3;
-pub const POSIX_FADV_DONTNEED: u32 = 4;
-pub const POSIX_FADV_NOREUSE: u32 = 5;
-pub const FALLOC_FL_KEEP_SIZE: u32 = 1;
-pub const FALLOC_FL_PUNCH_HOLE: u32 = 2;
-pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4;
-pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8;
-pub const FALLOC_FL_ZERO_RANGE: u32 = 16;
-pub const FALLOC_FL_INSERT_RANGE: u32 = 32;
-pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64;
-pub const NR_OPEN: u32 = 1024;
-pub const NGROUPS_MAX: u32 = 65536;
-pub const ARG_MAX: u32 = 131072;
-pub const LINK_MAX: u32 = 127;
-pub const MAX_CANON: u32 = 255;
-pub const MAX_INPUT: u32 = 255;
-pub const NAME_MAX: u32 = 255;
-pub const PATH_MAX: u32 = 4096;
-pub const PIPE_BUF: u32 = 4096;
-pub const XATTR_NAME_MAX: u32 = 255;
-pub const XATTR_SIZE_MAX: u32 = 65536;
-pub const XATTR_LIST_MAX: u32 = 65536;
-pub const RTSIG_MAX: u32 = 32;
-pub const _IOC_NRBITS: u32 = 8;
-pub const _IOC_TYPEBITS: u32 = 8;
-pub const _IOC_SIZEBITS: u32 = 14;
-pub const _IOC_DIRBITS: u32 = 2;
-pub const _IOC_NRMASK: u32 = 255;
-pub const _IOC_TYPEMASK: u32 = 255;
-pub const _IOC_SIZEMASK: u32 = 16383;
-pub const _IOC_DIRMASK: u32 = 3;
-pub const _IOC_NRSHIFT: u32 = 0;
-pub const _IOC_TYPESHIFT: u32 = 8;
-pub const _IOC_SIZESHIFT: u32 = 16;
-pub const _IOC_DIRSHIFT: u32 = 30;
-pub const _IOC_NONE: u32 = 0;
-pub const _IOC_WRITE: u32 = 1;
-pub const _IOC_READ: u32 = 2;
-pub const IOC_IN: u32 = 1073741824;
-pub const IOC_OUT: u32 = 2147483648;
-pub const IOC_INOUT: u32 = 3221225472;
-pub const IOCSIZE_MASK: u32 = 1073676288;
-pub const IOCSIZE_SHIFT: u32 = 16;
-pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16;
-pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1;
-pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4;
-pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5;
-pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6;
-pub const FSCRYPT_MODE_SM4_XTS: u32 = 7;
-pub const FSCRYPT_MODE_SM4_CTS: u32 = 8;
-pub const FSCRYPT_MODE_ADIANTUM: u32 = 9;
-pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10;
-pub const FSCRYPT_POLICY_V1: u32 = 0;
-pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64;
-pub const FSCRYPT_POLICY_V2: u32 = 2;
-pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16;
-pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1;
-pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1;
-pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3;
-pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1;
-pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FS_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FS_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FS_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FS_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FS_POLICY_FLAGS_VALID: u32 = 7;
-pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0;
-pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1;
-pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2;
-pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3;
-pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4;
-pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5;
-pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6;
-pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9;
-pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FS_MAX_KEY_SIZE: u32 = 64;
-pub const MS_RDONLY: u32 = 1;
-pub const MS_NOSUID: u32 = 2;
-pub const MS_NODEV: u32 = 4;
-pub const MS_NOEXEC: u32 = 8;
-pub const MS_SYNCHRONOUS: u32 = 16;
-pub const MS_REMOUNT: u32 = 32;
-pub const MS_MANDLOCK: u32 = 64;
-pub const MS_DIRSYNC: u32 = 128;
-pub const MS_NOSYMFOLLOW: u32 = 256;
-pub const MS_NOATIME: u32 = 1024;
-pub const MS_NODIRATIME: u32 = 2048;
-pub const MS_BIND: u32 = 4096;
-pub const MS_MOVE: u32 = 8192;
-pub const MS_REC: u32 = 16384;
-pub const MS_VERBOSE: u32 = 32768;
-pub const MS_SILENT: u32 = 32768;
-pub const MS_POSIXACL: u32 = 65536;
-pub const MS_UNBINDABLE: u32 = 131072;
-pub const MS_PRIVATE: u32 = 262144;
-pub const MS_SLAVE: u32 = 524288;
-pub const MS_SHARED: u32 = 1048576;
-pub const MS_RELATIME: u32 = 2097152;
-pub const MS_KERNMOUNT: u32 = 4194304;
-pub const MS_I_VERSION: u32 = 8388608;
-pub const MS_STRICTATIME: u32 = 16777216;
-pub const MS_LAZYTIME: u32 = 33554432;
-pub const MS_SUBMOUNT: u32 = 67108864;
-pub const MS_NOREMOTELOCK: u32 = 134217728;
-pub const MS_NOSEC: u32 = 268435456;
-pub const MS_BORN: u32 = 536870912;
-pub const MS_ACTIVE: u32 = 1073741824;
-pub const MS_NOUSER: u32 = 2147483648;
-pub const MS_RMT_MASK: u32 = 41943121;
-pub const MS_MGC_VAL: u32 = 3236757504;
-pub const MS_MGC_MSK: u32 = 4294901760;
-pub const OPEN_TREE_CLONE: u32 = 1;
-pub const OPEN_TREE_CLOEXEC: u32 = 524288;
-pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1;
-pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2;
-pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4;
-pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16;
-pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32;
-pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64;
-pub const MOVE_MOUNT_SET_GROUP: u32 = 256;
-pub const MOVE_MOUNT__MASK: u32 = 375;
-pub const FSOPEN_CLOEXEC: u32 = 1;
-pub const FSPICK_CLOEXEC: u32 = 1;
-pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2;
-pub const FSPICK_NO_AUTOMOUNT: u32 = 4;
-pub const FSPICK_EMPTY_PATH: u32 = 8;
-pub const FSMOUNT_CLOEXEC: u32 = 1;
-pub const MOUNT_ATTR_RDONLY: u32 = 1;
-pub const MOUNT_ATTR_NOSUID: u32 = 2;
-pub const MOUNT_ATTR_NODEV: u32 = 4;
-pub const MOUNT_ATTR_NOEXEC: u32 = 8;
-pub const MOUNT_ATTR__ATIME: u32 = 112;
-pub const MOUNT_ATTR_RELATIME: u32 = 0;
-pub const MOUNT_ATTR_NOATIME: u32 = 16;
-pub const MOUNT_ATTR_STRICTATIME: u32 = 32;
-pub const MOUNT_ATTR_NODIRATIME: u32 = 128;
-pub const MOUNT_ATTR_IDMAP: u32 = 1048576;
-pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152;
-pub const MOUNT_ATTR_SIZE_VER0: u32 = 32;
-pub const INR_OPEN_CUR: u32 = 1024;
-pub const INR_OPEN_MAX: u32 = 4096;
-pub const BLOCK_SIZE_BITS: u32 = 10;
-pub const BLOCK_SIZE: u32 = 1024;
-pub const SEEK_SET: u32 = 0;
-pub const SEEK_CUR: u32 = 1;
-pub const SEEK_END: u32 = 2;
-pub const SEEK_DATA: u32 = 3;
-pub const SEEK_HOLE: u32 = 4;
-pub const SEEK_MAX: u32 = 4;
-pub const RENAME_NOREPLACE: u32 = 1;
-pub const RENAME_EXCHANGE: u32 = 2;
-pub const RENAME_WHITEOUT: u32 = 4;
-pub const FILE_DEDUPE_RANGE_SAME: u32 = 0;
-pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1;
-pub const NR_FILE: u32 = 8192;
-pub const FS_XFLAG_REALTIME: u32 = 1;
-pub const FS_XFLAG_PREALLOC: u32 = 2;
-pub const FS_XFLAG_IMMUTABLE: u32 = 8;
-pub const FS_XFLAG_APPEND: u32 = 16;
-pub const FS_XFLAG_SYNC: u32 = 32;
-pub const FS_XFLAG_NOATIME: u32 = 64;
-pub const FS_XFLAG_NODUMP: u32 = 128;
-pub const FS_XFLAG_RTINHERIT: u32 = 256;
-pub const FS_XFLAG_PROJINHERIT: u32 = 512;
-pub const FS_XFLAG_NOSYMLINKS: u32 = 1024;
-pub const FS_XFLAG_EXTSIZE: u32 = 2048;
-pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096;
-pub const FS_XFLAG_NODEFRAG: u32 = 8192;
-pub const FS_XFLAG_FILESTREAM: u32 = 16384;
-pub const FS_XFLAG_DAX: u32 = 32768;
-pub const FS_XFLAG_COWEXTSIZE: u32 = 65536;
-pub const FS_XFLAG_HASATTR: u32 = 2147483648;
-pub const BMAP_IOCTL: u32 = 1;
-pub const FSLABEL_MAX: u32 = 256;
-pub const FS_SECRM_FL: u32 = 1;
-pub const FS_UNRM_FL: u32 = 2;
-pub const FS_COMPR_FL: u32 = 4;
-pub const FS_SYNC_FL: u32 = 8;
-pub const FS_IMMUTABLE_FL: u32 = 16;
-pub const FS_APPEND_FL: u32 = 32;
-pub const FS_NODUMP_FL: u32 = 64;
-pub const FS_NOATIME_FL: u32 = 128;
-pub const FS_DIRTY_FL: u32 = 256;
-pub const FS_COMPRBLK_FL: u32 = 512;
-pub const FS_NOCOMP_FL: u32 = 1024;
-pub const FS_ENCRYPT_FL: u32 = 2048;
-pub const FS_BTREE_FL: u32 = 4096;
-pub const FS_INDEX_FL: u32 = 4096;
-pub const FS_IMAGIC_FL: u32 = 8192;
-pub const FS_JOURNAL_DATA_FL: u32 = 16384;
-pub const FS_NOTAIL_FL: u32 = 32768;
-pub const FS_DIRSYNC_FL: u32 = 65536;
-pub const FS_TOPDIR_FL: u32 = 131072;
-pub const FS_HUGE_FILE_FL: u32 = 262144;
-pub const FS_EXTENT_FL: u32 = 524288;
-pub const FS_VERITY_FL: u32 = 1048576;
-pub const FS_EA_INODE_FL: u32 = 2097152;
-pub const FS_EOFBLOCKS_FL: u32 = 4194304;
-pub const FS_NOCOW_FL: u32 = 8388608;
-pub const FS_DAX_FL: u32 = 33554432;
-pub const FS_INLINE_DATA_FL: u32 = 268435456;
-pub const FS_PROJINHERIT_FL: u32 = 536870912;
-pub const FS_CASEFOLD_FL: u32 = 1073741824;
-pub const FS_RESERVED_FL: u32 = 2147483648;
-pub const FS_FL_USER_VISIBLE: u32 = 253951;
-pub const FS_FL_USER_MODIFIABLE: u32 = 229631;
-pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1;
-pub const SYNC_FILE_RANGE_WRITE: u32 = 2;
-pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4;
-pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7;
-pub const FUTEX_WAIT: u32 = 0;
-pub const FUTEX_WAKE: u32 = 1;
-pub const FUTEX_FD: u32 = 2;
-pub const FUTEX_REQUEUE: u32 = 3;
-pub const FUTEX_CMP_REQUEUE: u32 = 4;
-pub const FUTEX_WAKE_OP: u32 = 5;
-pub const FUTEX_LOCK_PI: u32 = 6;
-pub const FUTEX_UNLOCK_PI: u32 = 7;
-pub const FUTEX_TRYLOCK_PI: u32 = 8;
-pub const FUTEX_WAIT_BITSET: u32 = 9;
-pub const FUTEX_WAKE_BITSET: u32 = 10;
-pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11;
-pub const FUTEX_CMP_REQUEUE_PI: u32 = 12;
-pub const FUTEX_LOCK_PI2: u32 = 13;
-pub const FUTEX_PRIVATE_FLAG: u32 = 128;
-pub const FUTEX_CLOCK_REALTIME: u32 = 256;
-pub const FUTEX_CMD_MASK: i32 = -385;
-pub const FUTEX_WAIT_PRIVATE: u32 = 128;
-pub const FUTEX_WAKE_PRIVATE: u32 = 129;
-pub const FUTEX_REQUEUE_PRIVATE: u32 = 131;
-pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132;
-pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133;
-pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134;
-pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141;
-pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135;
-pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136;
-pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137;
-pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138;
-pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139;
-pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140;
-pub const FUTEX_32: u32 = 2;
-pub const FUTEX_WAITV_MAX: u32 = 128;
-pub const FUTEX_WAITERS: u32 = 2147483648;
-pub const FUTEX_OWNER_DIED: u32 = 1073741824;
-pub const FUTEX_TID_MASK: u32 = 1073741823;
-pub const ROBUST_LIST_LIMIT: u32 = 2048;
-pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295;
-pub const FUTEX_OP_SET: u32 = 0;
-pub const FUTEX_OP_ADD: u32 = 1;
-pub const FUTEX_OP_OR: u32 = 2;
-pub const FUTEX_OP_ANDN: u32 = 3;
-pub const FUTEX_OP_XOR: u32 = 4;
-pub const FUTEX_OP_OPARG_SHIFT: u32 = 8;
-pub const FUTEX_OP_CMP_EQ: u32 = 0;
-pub const FUTEX_OP_CMP_NE: u32 = 1;
-pub const FUTEX_OP_CMP_LT: u32 = 2;
-pub const FUTEX_OP_CMP_LE: u32 = 3;
-pub const FUTEX_OP_CMP_GT: u32 = 4;
-pub const FUTEX_OP_CMP_GE: u32 = 5;
-pub const __UAPI_DEF_IF_IFCONF: u32 = 1;
-pub const __UAPI_DEF_IF_IFMAP: u32 = 1;
-pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1;
-pub const __UAPI_DEF_IF_IFREQ: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1;
-pub const __UAPI_DEF_IN_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN_IPPROTO: u32 = 1;
-pub const __UAPI_DEF_IN_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP_MREQ: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1;
-pub const __UAPI_DEF_IN_CLASS: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1;
-pub const __UAPI_DEF_IPV6_MREQ: u32 = 1;
-pub const __UAPI_DEF_IPPROTO_V6: u32 = 1;
-pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1;
-pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1;
-pub const __UAPI_DEF_XATTR: u32 = 1;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const IP_TOS: u32 = 1;
-pub const IP_TTL: u32 = 2;
-pub const IP_HDRINCL: u32 = 3;
-pub const IP_OPTIONS: u32 = 4;
-pub const IP_ROUTER_ALERT: u32 = 5;
-pub const IP_RECVOPTS: u32 = 6;
-pub const IP_RETOPTS: u32 = 7;
-pub const IP_PKTINFO: u32 = 8;
-pub const IP_PKTOPTIONS: u32 = 9;
-pub const IP_MTU_DISCOVER: u32 = 10;
-pub const IP_RECVERR: u32 = 11;
-pub const IP_RECVTTL: u32 = 12;
-pub const IP_RECVTOS: u32 = 13;
-pub const IP_MTU: u32 = 14;
-pub const IP_FREEBIND: u32 = 15;
-pub const IP_IPSEC_POLICY: u32 = 16;
-pub const IP_XFRM_POLICY: u32 = 17;
-pub const IP_PASSSEC: u32 = 18;
-pub const IP_TRANSPARENT: u32 = 19;
-pub const IP_RECVRETOPTS: u32 = 7;
-pub const IP_ORIGDSTADDR: u32 = 20;
-pub const IP_RECVORIGDSTADDR: u32 = 20;
-pub const IP_MINTTL: u32 = 21;
-pub const IP_NODEFRAG: u32 = 22;
-pub const IP_CHECKSUM: u32 = 23;
-pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24;
-pub const IP_RECVFRAGSIZE: u32 = 25;
-pub const IP_RECVERR_RFC4884: u32 = 26;
-pub const IP_PMTUDISC_DONT: u32 = 0;
-pub const IP_PMTUDISC_WANT: u32 = 1;
-pub const IP_PMTUDISC_DO: u32 = 2;
-pub const IP_PMTUDISC_PROBE: u32 = 3;
-pub const IP_PMTUDISC_INTERFACE: u32 = 4;
-pub const IP_PMTUDISC_OMIT: u32 = 5;
-pub const IP_MULTICAST_IF: u32 = 32;
-pub const IP_MULTICAST_TTL: u32 = 33;
-pub const IP_MULTICAST_LOOP: u32 = 34;
-pub const IP_ADD_MEMBERSHIP: u32 = 35;
-pub const IP_DROP_MEMBERSHIP: u32 = 36;
-pub const IP_UNBLOCK_SOURCE: u32 = 37;
-pub const IP_BLOCK_SOURCE: u32 = 38;
-pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39;
-pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40;
-pub const IP_MSFILTER: u32 = 41;
-pub const MCAST_JOIN_GROUP: u32 = 42;
-pub const MCAST_BLOCK_SOURCE: u32 = 43;
-pub const MCAST_UNBLOCK_SOURCE: u32 = 44;
-pub const MCAST_LEAVE_GROUP: u32 = 45;
-pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46;
-pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47;
-pub const MCAST_MSFILTER: u32 = 48;
-pub const IP_MULTICAST_ALL: u32 = 49;
-pub const IP_UNICAST_IF: u32 = 50;
-pub const MCAST_EXCLUDE: u32 = 0;
-pub const MCAST_INCLUDE: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1;
-pub const __SOCK_SIZE__: u32 = 16;
-pub const IN_CLASSA_NET: u32 = 4278190080;
-pub const IN_CLASSA_NSHIFT: u32 = 24;
-pub const IN_CLASSA_HOST: u32 = 16777215;
-pub const IN_CLASSA_MAX: u32 = 128;
-pub const IN_CLASSB_NET: u32 = 4294901760;
-pub const IN_CLASSB_NSHIFT: u32 = 16;
-pub const IN_CLASSB_HOST: u32 = 65535;
-pub const IN_CLASSB_MAX: u32 = 65536;
-pub const IN_CLASSC_NET: u32 = 4294967040;
-pub const IN_CLASSC_NSHIFT: u32 = 8;
-pub const IN_CLASSC_HOST: u32 = 255;
-pub const IN_MULTICAST_NET: u32 = 3758096384;
-pub const IN_CLASSE_NET: u32 = 4294967295;
-pub const IN_CLASSE_NSHIFT: u32 = 0;
-pub const IN_LOOPBACKNET: u32 = 127;
-pub const INADDR_LOOPBACK: u32 = 2130706433;
-pub const INADDR_UNSPEC_GROUP: u32 = 3758096384;
-pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385;
-pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386;
-pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490;
-pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639;
-pub const __LITTLE_ENDIAN: u32 = 1234;
-pub const IN_ACCESS: u32 = 1;
-pub const IN_MODIFY: u32 = 2;
-pub const IN_ATTRIB: u32 = 4;
-pub const IN_CLOSE_WRITE: u32 = 8;
-pub const IN_CLOSE_NOWRITE: u32 = 16;
-pub const IN_OPEN: u32 = 32;
-pub const IN_MOVED_FROM: u32 = 64;
-pub const IN_MOVED_TO: u32 = 128;
-pub const IN_CREATE: u32 = 256;
-pub const IN_DELETE: u32 = 512;
-pub const IN_DELETE_SELF: u32 = 1024;
-pub const IN_MOVE_SELF: u32 = 2048;
-pub const IN_UNMOUNT: u32 = 8192;
-pub const IN_Q_OVERFLOW: u32 = 16384;
-pub const IN_IGNORED: u32 = 32768;
-pub const IN_CLOSE: u32 = 24;
-pub const IN_MOVE: u32 = 192;
-pub const IN_ONLYDIR: u32 = 16777216;
-pub const IN_DONT_FOLLOW: u32 = 33554432;
-pub const IN_EXCL_UNLINK: u32 = 67108864;
-pub const IN_MASK_CREATE: u32 = 268435456;
-pub const IN_MASK_ADD: u32 = 536870912;
-pub const IN_ISDIR: u32 = 1073741824;
-pub const IN_ONESHOT: u32 = 2147483648;
-pub const IN_ALL_EVENTS: u32 = 4095;
-pub const IN_CLOEXEC: u32 = 524288;
-pub const IN_NONBLOCK: u32 = 2048;
-pub const IPTOS_TOS_MASK: u32 = 30;
-pub const IPTOS_LOWDELAY: u32 = 16;
-pub const IPTOS_THROUGHPUT: u32 = 8;
-pub const IPTOS_RELIABILITY: u32 = 4;
-pub const IPTOS_MINCOST: u32 = 2;
-pub const IPTOS_PREC_MASK: u32 = 224;
-pub const IPTOS_PREC_NETCONTROL: u32 = 224;
-pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192;
-pub const IPTOS_PREC_CRITIC_ECP: u32 = 160;
-pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128;
-pub const IPTOS_PREC_FLASH: u32 = 96;
-pub const IPTOS_PREC_IMMEDIATE: u32 = 64;
-pub const IPTOS_PREC_PRIORITY: u32 = 32;
-pub const IPTOS_PREC_ROUTINE: u32 = 0;
-pub const IPOPT_COPY: u32 = 128;
-pub const IPOPT_CLASS_MASK: u32 = 96;
-pub const IPOPT_NUMBER_MASK: u32 = 31;
-pub const IPOPT_CONTROL: u32 = 0;
-pub const IPOPT_RESERVED1: u32 = 32;
-pub const IPOPT_MEASUREMENT: u32 = 64;
-pub const IPOPT_RESERVED2: u32 = 96;
-pub const IPOPT_END: u32 = 0;
-pub const IPOPT_NOOP: u32 = 1;
-pub const IPOPT_SEC: u32 = 130;
-pub const IPOPT_LSRR: u32 = 131;
-pub const IPOPT_TIMESTAMP: u32 = 68;
-pub const IPOPT_CIPSO: u32 = 134;
-pub const IPOPT_RR: u32 = 7;
-pub const IPOPT_SID: u32 = 136;
-pub const IPOPT_SSRR: u32 = 137;
-pub const IPOPT_RA: u32 = 148;
-pub const IPVERSION: u32 = 4;
-pub const MAXTTL: u32 = 255;
-pub const IPDEFTTL: u32 = 64;
-pub const IPOPT_OPTVAL: u32 = 0;
-pub const IPOPT_OLEN: u32 = 1;
-pub const IPOPT_OFFSET: u32 = 2;
-pub const IPOPT_MINOFF: u32 = 4;
-pub const MAX_IPOPTLEN: u32 = 40;
-pub const IPOPT_NOP: u32 = 1;
-pub const IPOPT_EOL: u32 = 0;
-pub const IPOPT_TS: u32 = 68;
-pub const IPOPT_TS_TSONLY: u32 = 0;
-pub const IPOPT_TS_TSANDADDR: u32 = 1;
-pub const IPOPT_TS_PRESPEC: u32 = 3;
-pub const IPV4_BEET_PHMAXLEN: u32 = 8;
-pub const IPV6_FL_A_GET: u32 = 0;
-pub const IPV6_FL_A_PUT: u32 = 1;
-pub const IPV6_FL_A_RENEW: u32 = 2;
-pub const IPV6_FL_F_CREATE: u32 = 1;
-pub const IPV6_FL_F_EXCL: u32 = 2;
-pub const IPV6_FL_F_REFLECT: u32 = 4;
-pub const IPV6_FL_F_REMOTE: u32 = 8;
-pub const IPV6_FL_S_NONE: u32 = 0;
-pub const IPV6_FL_S_EXCL: u32 = 1;
-pub const IPV6_FL_S_PROCESS: u32 = 2;
-pub const IPV6_FL_S_USER: u32 = 3;
-pub const IPV6_FL_S_ANY: u32 = 255;
-pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575;
-pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880;
-pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0;
-pub const IPV6_PRIORITY_FILLER: u32 = 256;
-pub const IPV6_PRIORITY_UNATTENDED: u32 = 512;
-pub const IPV6_PRIORITY_RESERVED1: u32 = 768;
-pub const IPV6_PRIORITY_BULK: u32 = 1024;
-pub const IPV6_PRIORITY_RESERVED2: u32 = 1280;
-pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536;
-pub const IPV6_PRIORITY_CONTROL: u32 = 1792;
-pub const IPV6_PRIORITY_8: u32 = 2048;
-pub const IPV6_PRIORITY_9: u32 = 2304;
-pub const IPV6_PRIORITY_10: u32 = 2560;
-pub const IPV6_PRIORITY_11: u32 = 2816;
-pub const IPV6_PRIORITY_12: u32 = 3072;
-pub const IPV6_PRIORITY_13: u32 = 3328;
-pub const IPV6_PRIORITY_14: u32 = 3584;
-pub const IPV6_PRIORITY_15: u32 = 3840;
-pub const IPPROTO_HOPOPTS: u32 = 0;
-pub const IPPROTO_ROUTING: u32 = 43;
-pub const IPPROTO_FRAGMENT: u32 = 44;
-pub const IPPROTO_ICMPV6: u32 = 58;
-pub const IPPROTO_NONE: u32 = 59;
-pub const IPPROTO_DSTOPTS: u32 = 60;
-pub const IPPROTO_MH: u32 = 135;
-pub const IPV6_TLV_PAD1: u32 = 0;
-pub const IPV6_TLV_PADN: u32 = 1;
-pub const IPV6_TLV_ROUTERALERT: u32 = 5;
-pub const IPV6_TLV_CALIPSO: u32 = 7;
-pub const IPV6_TLV_IOAM: u32 = 49;
-pub const IPV6_TLV_JUMBO: u32 = 194;
-pub const IPV6_TLV_HAO: u32 = 201;
-pub const IPV6_ADDRFORM: u32 = 1;
-pub const IPV6_2292PKTINFO: u32 = 2;
-pub const IPV6_2292HOPOPTS: u32 = 3;
-pub const IPV6_2292DSTOPTS: u32 = 4;
-pub const IPV6_2292RTHDR: u32 = 5;
-pub const IPV6_2292PKTOPTIONS: u32 = 6;
-pub const IPV6_CHECKSUM: u32 = 7;
-pub const IPV6_2292HOPLIMIT: u32 = 8;
-pub const IPV6_NEXTHOP: u32 = 9;
-pub const IPV6_AUTHHDR: u32 = 10;
-pub const IPV6_FLOWINFO: u32 = 11;
-pub const IPV6_UNICAST_HOPS: u32 = 16;
-pub const IPV6_MULTICAST_IF: u32 = 17;
-pub const IPV6_MULTICAST_HOPS: u32 = 18;
-pub const IPV6_MULTICAST_LOOP: u32 = 19;
-pub const IPV6_ADD_MEMBERSHIP: u32 = 20;
-pub const IPV6_DROP_MEMBERSHIP: u32 = 21;
-pub const IPV6_ROUTER_ALERT: u32 = 22;
-pub const IPV6_MTU_DISCOVER: u32 = 23;
-pub const IPV6_MTU: u32 = 24;
-pub const IPV6_RECVERR: u32 = 25;
-pub const IPV6_V6ONLY: u32 = 26;
-pub const IPV6_JOIN_ANYCAST: u32 = 27;
-pub const IPV6_LEAVE_ANYCAST: u32 = 28;
-pub const IPV6_MULTICAST_ALL: u32 = 29;
-pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30;
-pub const IPV6_RECVERR_RFC4884: u32 = 31;
-pub const IPV6_PMTUDISC_DONT: u32 = 0;
-pub const IPV6_PMTUDISC_WANT: u32 = 1;
-pub const IPV6_PMTUDISC_DO: u32 = 2;
-pub const IPV6_PMTUDISC_PROBE: u32 = 3;
-pub const IPV6_PMTUDISC_INTERFACE: u32 = 4;
-pub const IPV6_PMTUDISC_OMIT: u32 = 5;
-pub const IPV6_FLOWLABEL_MGR: u32 = 32;
-pub const IPV6_FLOWINFO_SEND: u32 = 33;
-pub const IPV6_IPSEC_POLICY: u32 = 34;
-pub const IPV6_XFRM_POLICY: u32 = 35;
-pub const IPV6_HDRINCL: u32 = 36;
-pub const IPV6_RECVPKTINFO: u32 = 49;
-pub const IPV6_PKTINFO: u32 = 50;
-pub const IPV6_RECVHOPLIMIT: u32 = 51;
-pub const IPV6_HOPLIMIT: u32 = 52;
-pub const IPV6_RECVHOPOPTS: u32 = 53;
-pub const IPV6_HOPOPTS: u32 = 54;
-pub const IPV6_RTHDRDSTOPTS: u32 = 55;
-pub const IPV6_RECVRTHDR: u32 = 56;
-pub const IPV6_RTHDR: u32 = 57;
-pub const IPV6_RECVDSTOPTS: u32 = 58;
-pub const IPV6_DSTOPTS: u32 = 59;
-pub const IPV6_RECVPATHMTU: u32 = 60;
-pub const IPV6_PATHMTU: u32 = 61;
-pub const IPV6_DONTFRAG: u32 = 62;
-pub const IPV6_RECVTCLASS: u32 = 66;
-pub const IPV6_TCLASS: u32 = 67;
-pub const IPV6_AUTOFLOWLABEL: u32 = 70;
-pub const IPV6_ADDR_PREFERENCES: u32 = 72;
-pub const IPV6_PREFER_SRC_TMP: u32 = 1;
-pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2;
-pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256;
-pub const IPV6_PREFER_SRC_COA: u32 = 4;
-pub const IPV6_PREFER_SRC_HOME: u32 = 1024;
-pub const IPV6_PREFER_SRC_CGA: u32 = 8;
-pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048;
-pub const IPV6_MINHOPCOUNT: u32 = 73;
-pub const IPV6_ORIGDSTADDR: u32 = 74;
-pub const IPV6_RECVORIGDSTADDR: u32 = 74;
-pub const IPV6_TRANSPARENT: u32 = 75;
-pub const IPV6_UNICAST_IF: u32 = 76;
-pub const IPV6_RECVFRAGSIZE: u32 = 77;
-pub const IPV6_FREEBIND: u32 = 78;
-pub const IPV6_MIN_MTU: u32 = 1280;
-pub const IPV6_SRCRT_STRICT: u32 = 1;
-pub const IPV6_SRCRT_TYPE_0: u32 = 0;
-pub const IPV6_SRCRT_TYPE_2: u32 = 2;
-pub const IPV6_SRCRT_TYPE_3: u32 = 3;
-pub const IPV6_SRCRT_TYPE_4: u32 = 4;
-pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0;
-pub const ADFS_SUPER_MAGIC: u32 = 44533;
-pub const AFFS_SUPER_MAGIC: u32 = 44543;
-pub const AFS_SUPER_MAGIC: u32 = 1397113167;
-pub const AUTOFS_SUPER_MAGIC: u32 = 391;
-pub const CEPH_SUPER_MAGIC: u32 = 12805120;
-pub const CODA_SUPER_MAGIC: u32 = 1937076805;
-pub const CRAMFS_MAGIC: u32 = 684539205;
-pub const CRAMFS_MAGIC_WEND: u32 = 1161678120;
-pub const DEBUGFS_MAGIC: u32 = 1684170528;
-pub const SECURITYFS_MAGIC: u32 = 1935894131;
-pub const SELINUX_MAGIC: u32 = 4185718668;
-pub const SMACK_MAGIC: u32 = 1128357203;
-pub const RAMFS_MAGIC: u32 = 2240043254;
-pub const TMPFS_MAGIC: u32 = 16914836;
-pub const HUGETLBFS_MAGIC: u32 = 2508478710;
-pub const SQUASHFS_MAGIC: u32 = 1936814952;
-pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791;
-pub const EFS_SUPER_MAGIC: u32 = 4278867;
-pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530;
-pub const EXT2_SUPER_MAGIC: u32 = 61267;
-pub const EXT3_SUPER_MAGIC: u32 = 61267;
-pub const XENFS_SUPER_MAGIC: u32 = 2881100148;
-pub const EXT4_SUPER_MAGIC: u32 = 61267;
-pub const BTRFS_SUPER_MAGIC: u32 = 2435016766;
-pub const NILFS_SUPER_MAGIC: u32 = 13364;
-pub const F2FS_SUPER_MAGIC: u32 = 4076150800;
-pub const HPFS_SUPER_MAGIC: u32 = 4187351113;
-pub const ISOFS_SUPER_MAGIC: u32 = 38496;
-pub const JFFS2_SUPER_MAGIC: u32 = 29366;
-pub const XFS_SUPER_MAGIC: u32 = 1481003842;
-pub const PSTOREFS_MAGIC: u32 = 1634035564;
-pub const EFIVARFS_MAGIC: u32 = 3730735588;
-pub const HOSTFS_SUPER_MAGIC: u32 = 12648430;
-pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128;
-pub const FUSE_SUPER_MAGIC: u32 = 1702057286;
-pub const MINIX_SUPER_MAGIC: u32 = 4991;
-pub const MINIX_SUPER_MAGIC2: u32 = 5007;
-pub const MINIX2_SUPER_MAGIC: u32 = 9320;
-pub const MINIX2_SUPER_MAGIC2: u32 = 9336;
-pub const MINIX3_SUPER_MAGIC: u32 = 19802;
-pub const MSDOS_SUPER_MAGIC: u32 = 19780;
-pub const EXFAT_SUPER_MAGIC: u32 = 538032816;
-pub const NCP_SUPER_MAGIC: u32 = 22092;
-pub const NFS_SUPER_MAGIC: u32 = 26985;
-pub const OCFS2_SUPER_MAGIC: u32 = 1952539503;
-pub const OPENPROM_SUPER_MAGIC: u32 = 40865;
-pub const QNX4_SUPER_MAGIC: u32 = 47;
-pub const QNX6_SUPER_MAGIC: u32 = 1746473250;
-pub const AFS_FS_MAGIC: u32 = 1799439955;
-pub const REISERFS_SUPER_MAGIC: u32 = 1382369651;
-pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0";
-pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0";
-pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0";
-pub const SMB_SUPER_MAGIC: u32 = 20859;
-pub const CIFS_SUPER_MAGIC: u32 = 4283649346;
-pub const SMB2_SUPER_MAGIC: u32 = 4266872130;
-pub const CGROUP_SUPER_MAGIC: u32 = 2613483;
-pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888;
-pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209;
-pub const STACK_END_MAGIC: u32 = 1470918301;
-pub const TRACEFS_MAGIC: u32 = 1953653091;
-pub const V9FS_MAGIC: u32 = 16914839;
-pub const BDEVFS_MAGIC: u32 = 1650746742;
-pub const DAXFS_MAGIC: u32 = 1684300152;
-pub const BINFMTFS_MAGIC: u32 = 1112100429;
-pub const DEVPTS_SUPER_MAGIC: u32 = 7377;
-pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352;
-pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762;
-pub const PIPEFS_MAGIC: u32 = 1346981957;
-pub const PROC_SUPER_MAGIC: u32 = 40864;
-pub const SOCKFS_MAGIC: u32 = 1397703499;
-pub const SYSFS_MAGIC: u32 = 1650812274;
-pub const USBDEVICE_SUPER_MAGIC: u32 = 40866;
-pub const MTD_INODE_FS_MAGIC: u32 = 288389204;
-pub const ANON_INODE_FS_MAGIC: u32 = 151263540;
-pub const BTRFS_TEST_MAGIC: u32 = 1936880249;
-pub const NSFS_MAGIC: u32 = 1853056627;
-pub const BPF_FS_MAGIC: u32 = 3405662737;
-pub const AAFS_MAGIC: u32 = 1513908720;
-pub const ZONEFS_MAGIC: u32 = 1515144787;
-pub const UDF_SUPER_MAGIC: u32 = 352400198;
-pub const DMA_BUF_MAGIC: u32 = 1145913666;
-pub const DEVMEM_MAGIC: u32 = 1162691661;
-pub const SECRETMEM_MAGIC: u32 = 1397048141;
-pub const PROT_READ: u32 = 1;
-pub const PROT_WRITE: u32 = 2;
-pub const PROT_EXEC: u32 = 4;
-pub const PROT_SEM: u32 = 8;
-pub const PROT_NONE: u32 = 0;
-pub const PROT_GROWSDOWN: u32 = 16777216;
-pub const PROT_GROWSUP: u32 = 33554432;
-pub const MAP_TYPE: u32 = 15;
-pub const MAP_FIXED: u32 = 16;
-pub const MAP_ANONYMOUS: u32 = 32;
-pub const MAP_POPULATE: u32 = 32768;
-pub const MAP_NONBLOCK: u32 = 65536;
-pub const MAP_STACK: u32 = 131072;
-pub const MAP_HUGETLB: u32 = 262144;
-pub const MAP_SYNC: u32 = 524288;
-pub const MAP_FIXED_NOREPLACE: u32 = 1048576;
-pub const MAP_UNINITIALIZED: u32 = 67108864;
-pub const MLOCK_ONFAULT: u32 = 1;
-pub const MS_ASYNC: u32 = 1;
-pub const MS_INVALIDATE: u32 = 2;
-pub const MS_SYNC: u32 = 4;
-pub const MADV_NORMAL: u32 = 0;
-pub const MADV_RANDOM: u32 = 1;
-pub const MADV_SEQUENTIAL: u32 = 2;
-pub const MADV_WILLNEED: u32 = 3;
-pub const MADV_DONTNEED: u32 = 4;
-pub const MADV_FREE: u32 = 8;
-pub const MADV_REMOVE: u32 = 9;
-pub const MADV_DONTFORK: u32 = 10;
-pub const MADV_DOFORK: u32 = 11;
-pub const MADV_HWPOISON: u32 = 100;
-pub const MADV_SOFT_OFFLINE: u32 = 101;
-pub const MADV_MERGEABLE: u32 = 12;
-pub const MADV_UNMERGEABLE: u32 = 13;
-pub const MADV_HUGEPAGE: u32 = 14;
-pub const MADV_NOHUGEPAGE: u32 = 15;
-pub const MADV_DONTDUMP: u32 = 16;
-pub const MADV_DODUMP: u32 = 17;
-pub const MADV_WIPEONFORK: u32 = 18;
-pub const MADV_KEEPONFORK: u32 = 19;
-pub const MADV_COLD: u32 = 20;
-pub const MADV_PAGEOUT: u32 = 21;
-pub const MADV_POPULATE_READ: u32 = 22;
-pub const MADV_POPULATE_WRITE: u32 = 23;
-pub const MADV_DONTNEED_LOCKED: u32 = 24;
-pub const MADV_COLLAPSE: u32 = 25;
-pub const MAP_FILE: u32 = 0;
-pub const PKEY_DISABLE_ACCESS: u32 = 1;
-pub const PKEY_DISABLE_WRITE: u32 = 2;
-pub const PKEY_ACCESS_MASK: u32 = 3;
-pub const MAP_GROWSDOWN: u32 = 256;
-pub const MAP_DENYWRITE: u32 = 2048;
-pub const MAP_EXECUTABLE: u32 = 4096;
-pub const MAP_LOCKED: u32 = 8192;
-pub const MAP_NORESERVE: u32 = 16384;
-pub const MCL_CURRENT: u32 = 1;
-pub const MCL_FUTURE: u32 = 2;
-pub const MCL_ONFAULT: u32 = 4;
-pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26;
-pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63;
-pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096;
-pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824;
-pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416;
-pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280;
-pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144;
-pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872;
-pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736;
-pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600;
-pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192;
-pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056;
-pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920;
-pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784;
-pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376;
-pub const MREMAP_MAYMOVE: u32 = 1;
-pub const MREMAP_FIXED: u32 = 2;
-pub const MREMAP_DONTUNMAP: u32 = 4;
-pub const OVERCOMMIT_GUESS: u32 = 0;
-pub const OVERCOMMIT_ALWAYS: u32 = 1;
-pub const OVERCOMMIT_NEVER: u32 = 2;
-pub const MAP_SHARED: u32 = 1;
-pub const MAP_PRIVATE: u32 = 2;
-pub const MAP_SHARED_VALIDATE: u32 = 3;
-pub const MAP_HUGE_SHIFT: u32 = 26;
-pub const MAP_HUGE_MASK: u32 = 63;
-pub const MAP_HUGE_16KB: u32 = 939524096;
-pub const MAP_HUGE_64KB: u32 = 1073741824;
-pub const MAP_HUGE_512KB: u32 = 1275068416;
-pub const MAP_HUGE_1MB: u32 = 1342177280;
-pub const MAP_HUGE_2MB: u32 = 1409286144;
-pub const MAP_HUGE_8MB: u32 = 1543503872;
-pub const MAP_HUGE_16MB: u32 = 1610612736;
-pub const MAP_HUGE_32MB: u32 = 1677721600;
-pub const MAP_HUGE_256MB: u32 = 1879048192;
-pub const MAP_HUGE_512MB: u32 = 1946157056;
-pub const MAP_HUGE_1GB: u32 = 2013265920;
-pub const MAP_HUGE_2GB: u32 = 2080374784;
-pub const MAP_HUGE_16GB: u32 = 2281701376;
-pub const SIOCGSTAMP_OLD: u32 = 35078;
-pub const SIOCGSTAMPNS_OLD: u32 = 35079;
-pub const SOL_SOCKET: u32 = 1;
-pub const SO_DEBUG: u32 = 1;
-pub const SO_REUSEADDR: u32 = 2;
-pub const SO_TYPE: u32 = 3;
-pub const SO_ERROR: u32 = 4;
-pub const SO_DONTROUTE: u32 = 5;
-pub const SO_BROADCAST: u32 = 6;
-pub const SO_SNDBUF: u32 = 7;
-pub const SO_RCVBUF: u32 = 8;
-pub const SO_SNDBUFFORCE: u32 = 32;
-pub const SO_RCVBUFFORCE: u32 = 33;
-pub const SO_KEEPALIVE: u32 = 9;
-pub const SO_OOBINLINE: u32 = 10;
-pub const SO_NO_CHECK: u32 = 11;
-pub const SO_PRIORITY: u32 = 12;
-pub const SO_LINGER: u32 = 13;
-pub const SO_BSDCOMPAT: u32 = 14;
-pub const SO_REUSEPORT: u32 = 15;
-pub const SO_PASSCRED: u32 = 16;
-pub const SO_PEERCRED: u32 = 17;
-pub const SO_RCVLOWAT: u32 = 18;
-pub const SO_SNDLOWAT: u32 = 19;
-pub const SO_RCVTIMEO_OLD: u32 = 20;
-pub const SO_SNDTIMEO_OLD: u32 = 21;
-pub const SO_SECURITY_AUTHENTICATION: u32 = 22;
-pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23;
-pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24;
-pub const SO_BINDTODEVICE: u32 = 25;
-pub const SO_ATTACH_FILTER: u32 = 26;
-pub const SO_DETACH_FILTER: u32 = 27;
-pub const SO_GET_FILTER: u32 = 26;
-pub const SO_PEERNAME: u32 = 28;
-pub const SO_ACCEPTCONN: u32 = 30;
-pub const SO_PEERSEC: u32 = 31;
-pub const SO_PASSSEC: u32 = 34;
-pub const SO_MARK: u32 = 36;
-pub const SO_PROTOCOL: u32 = 38;
-pub const SO_DOMAIN: u32 = 39;
-pub const SO_RXQ_OVFL: u32 = 40;
-pub const SO_WIFI_STATUS: u32 = 41;
-pub const SCM_WIFI_STATUS: u32 = 41;
-pub const SO_PEEK_OFF: u32 = 42;
-pub const SO_NOFCS: u32 = 43;
-pub const SO_LOCK_FILTER: u32 = 44;
-pub const SO_SELECT_ERR_QUEUE: u32 = 45;
-pub const SO_BUSY_POLL: u32 = 46;
-pub const SO_MAX_PACING_RATE: u32 = 47;
-pub const SO_BPF_EXTENSIONS: u32 = 48;
-pub const SO_INCOMING_CPU: u32 = 49;
-pub const SO_ATTACH_BPF: u32 = 50;
-pub const SO_DETACH_BPF: u32 = 27;
-pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51;
-pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52;
-pub const SO_CNX_ADVICE: u32 = 53;
-pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54;
-pub const SO_MEMINFO: u32 = 55;
-pub const SO_INCOMING_NAPI_ID: u32 = 56;
-pub const SO_COOKIE: u32 = 57;
-pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58;
-pub const SO_PEERGROUPS: u32 = 59;
-pub const SO_ZEROCOPY: u32 = 60;
-pub const SO_TXTIME: u32 = 61;
-pub const SCM_TXTIME: u32 = 61;
-pub const SO_BINDTOIFINDEX: u32 = 62;
-pub const SO_TIMESTAMP_OLD: u32 = 29;
-pub const SO_TIMESTAMPNS_OLD: u32 = 35;
-pub const SO_TIMESTAMPING_OLD: u32 = 37;
-pub const SO_TIMESTAMP_NEW: u32 = 63;
-pub const SO_TIMESTAMPNS_NEW: u32 = 64;
-pub const SO_TIMESTAMPING_NEW: u32 = 65;
-pub const SO_RCVTIMEO_NEW: u32 = 66;
-pub const SO_SNDTIMEO_NEW: u32 = 67;
-pub const SO_DETACH_REUSEPORT_BPF: u32 = 68;
-pub const SO_PREFER_BUSY_POLL: u32 = 69;
-pub const SO_BUSY_POLL_BUDGET: u32 = 70;
-pub const SO_NETNS_COOKIE: u32 = 71;
-pub const SO_BUF_LOCK: u32 = 72;
-pub const SO_RESERVE_MEM: u32 = 73;
-pub const SO_TXREHASH: u32 = 74;
-pub const SO_RCVMARK: u32 = 75;
-pub const SYS_SOCKET: u32 = 1;
-pub const SYS_BIND: u32 = 2;
-pub const SYS_CONNECT: u32 = 3;
-pub const SYS_LISTEN: u32 = 4;
-pub const SYS_ACCEPT: u32 = 5;
-pub const SYS_GETSOCKNAME: u32 = 6;
-pub const SYS_GETPEERNAME: u32 = 7;
-pub const SYS_SOCKETPAIR: u32 = 8;
-pub const SYS_SEND: u32 = 9;
-pub const SYS_RECV: u32 = 10;
-pub const SYS_SENDTO: u32 = 11;
-pub const SYS_RECVFROM: u32 = 12;
-pub const SYS_SHUTDOWN: u32 = 13;
-pub const SYS_SETSOCKOPT: u32 = 14;
-pub const SYS_GETSOCKOPT: u32 = 15;
-pub const SYS_SENDMSG: u32 = 16;
-pub const SYS_RECVMSG: u32 = 17;
-pub const SYS_ACCEPT4: u32 = 18;
-pub const SYS_RECVMMSG: u32 = 19;
-pub const SYS_SENDMMSG: u32 = 20;
-pub const __SO_ACCEPTCON: u32 = 65536;
-pub const POLLIN: u32 = 1;
-pub const POLLPRI: u32 = 2;
-pub const POLLOUT: u32 = 4;
-pub const POLLERR: u32 = 8;
-pub const POLLHUP: u32 = 16;
-pub const POLLNVAL: u32 = 32;
-pub const POLLRDNORM: u32 = 64;
-pub const POLLRDBAND: u32 = 128;
-pub const POLLWRNORM: u32 = 256;
-pub const POLLWRBAND: u32 = 512;
-pub const POLLMSG: u32 = 1024;
-pub const POLLREMOVE: u32 = 4096;
-pub const POLLRDHUP: u32 = 8192;
-pub const PR_SET_PDEATHSIG: u32 = 1;
-pub const PR_GET_PDEATHSIG: u32 = 2;
-pub const PR_GET_DUMPABLE: u32 = 3;
-pub const PR_SET_DUMPABLE: u32 = 4;
-pub const PR_GET_UNALIGN: u32 = 5;
-pub const PR_SET_UNALIGN: u32 = 6;
-pub const PR_UNALIGN_NOPRINT: u32 = 1;
-pub const PR_UNALIGN_SIGBUS: u32 = 2;
-pub const PR_GET_KEEPCAPS: u32 = 7;
-pub const PR_SET_KEEPCAPS: u32 = 8;
-pub const PR_GET_FPEMU: u32 = 9;
-pub const PR_SET_FPEMU: u32 = 10;
-pub const PR_FPEMU_NOPRINT: u32 = 1;
-pub const PR_FPEMU_SIGFPE: u32 = 2;
-pub const PR_GET_FPEXC: u32 = 11;
-pub const PR_SET_FPEXC: u32 = 12;
-pub const PR_FP_EXC_SW_ENABLE: u32 = 128;
-pub const PR_FP_EXC_DIV: u32 = 65536;
-pub const PR_FP_EXC_OVF: u32 = 131072;
-pub const PR_FP_EXC_UND: u32 = 262144;
-pub const PR_FP_EXC_RES: u32 = 524288;
-pub const PR_FP_EXC_INV: u32 = 1048576;
-pub const PR_FP_EXC_DISABLED: u32 = 0;
-pub const PR_FP_EXC_NONRECOV: u32 = 1;
-pub const PR_FP_EXC_ASYNC: u32 = 2;
-pub const PR_FP_EXC_PRECISE: u32 = 3;
-pub const PR_GET_TIMING: u32 = 13;
-pub const PR_SET_TIMING: u32 = 14;
-pub const PR_TIMING_STATISTICAL: u32 = 0;
-pub const PR_TIMING_TIMESTAMP: u32 = 1;
-pub const PR_SET_NAME: u32 = 15;
-pub const PR_GET_NAME: u32 = 16;
-pub const PR_GET_ENDIAN: u32 = 19;
-pub const PR_SET_ENDIAN: u32 = 20;
-pub const PR_ENDIAN_BIG: u32 = 0;
-pub const PR_ENDIAN_LITTLE: u32 = 1;
-pub const PR_ENDIAN_PPC_LITTLE: u32 = 2;
-pub const PR_GET_SECCOMP: u32 = 21;
-pub const PR_SET_SECCOMP: u32 = 22;
-pub const PR_CAPBSET_READ: u32 = 23;
-pub const PR_CAPBSET_DROP: u32 = 24;
-pub const PR_GET_TSC: u32 = 25;
-pub const PR_SET_TSC: u32 = 26;
-pub const PR_TSC_ENABLE: u32 = 1;
-pub const PR_TSC_SIGSEGV: u32 = 2;
-pub const PR_GET_SECUREBITS: u32 = 27;
-pub const PR_SET_SECUREBITS: u32 = 28;
-pub const PR_SET_TIMERSLACK: u32 = 29;
-pub const PR_GET_TIMERSLACK: u32 = 30;
-pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31;
-pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32;
-pub const PR_MCE_KILL: u32 = 33;
-pub const PR_MCE_KILL_CLEAR: u32 = 0;
-pub const PR_MCE_KILL_SET: u32 = 1;
-pub const PR_MCE_KILL_LATE: u32 = 0;
-pub const PR_MCE_KILL_EARLY: u32 = 1;
-pub const PR_MCE_KILL_DEFAULT: u32 = 2;
-pub const PR_MCE_KILL_GET: u32 = 34;
-pub const PR_SET_MM: u32 = 35;
-pub const PR_SET_MM_START_CODE: u32 = 1;
-pub const PR_SET_MM_END_CODE: u32 = 2;
-pub const PR_SET_MM_START_DATA: u32 = 3;
-pub const PR_SET_MM_END_DATA: u32 = 4;
-pub const PR_SET_MM_START_STACK: u32 = 5;
-pub const PR_SET_MM_START_BRK: u32 = 6;
-pub const PR_SET_MM_BRK: u32 = 7;
-pub const PR_SET_MM_ARG_START: u32 = 8;
-pub const PR_SET_MM_ARG_END: u32 = 9;
-pub const PR_SET_MM_ENV_START: u32 = 10;
-pub const PR_SET_MM_ENV_END: u32 = 11;
-pub const PR_SET_MM_AUXV: u32 = 12;
-pub const PR_SET_MM_EXE_FILE: u32 = 13;
-pub const PR_SET_MM_MAP: u32 = 14;
-pub const PR_SET_MM_MAP_SIZE: u32 = 15;
-pub const PR_SET_PTRACER: u32 = 1499557217;
-pub const PR_SET_CHILD_SUBREAPER: u32 = 36;
-pub const PR_GET_CHILD_SUBREAPER: u32 = 37;
-pub const PR_SET_NO_NEW_PRIVS: u32 = 38;
-pub const PR_GET_NO_NEW_PRIVS: u32 = 39;
-pub const PR_GET_TID_ADDRESS: u32 = 40;
-pub const PR_SET_THP_DISABLE: u32 = 41;
-pub const PR_GET_THP_DISABLE: u32 = 42;
-pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43;
-pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44;
-pub const PR_SET_FP_MODE: u32 = 45;
-pub const PR_GET_FP_MODE: u32 = 46;
-pub const PR_FP_MODE_FR: u32 = 1;
-pub const PR_FP_MODE_FRE: u32 = 2;
-pub const PR_CAP_AMBIENT: u32 = 47;
-pub const PR_CAP_AMBIENT_IS_SET: u32 = 1;
-pub const PR_CAP_AMBIENT_RAISE: u32 = 2;
-pub const PR_CAP_AMBIENT_LOWER: u32 = 3;
-pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4;
-pub const PR_SVE_SET_VL: u32 = 50;
-pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SVE_GET_VL: u32 = 51;
-pub const PR_SVE_VL_LEN_MASK: u32 = 65535;
-pub const PR_SVE_VL_INHERIT: u32 = 131072;
-pub const PR_GET_SPECULATION_CTRL: u32 = 52;
-pub const PR_SET_SPECULATION_CTRL: u32 = 53;
-pub const PR_SPEC_STORE_BYPASS: u32 = 0;
-pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1;
-pub const PR_SPEC_L1D_FLUSH: u32 = 2;
-pub const PR_SPEC_NOT_AFFECTED: u32 = 0;
-pub const PR_SPEC_PRCTL: u32 = 1;
-pub const PR_SPEC_ENABLE: u32 = 2;
-pub const PR_SPEC_DISABLE: u32 = 4;
-pub const PR_SPEC_FORCE_DISABLE: u32 = 8;
-pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16;
-pub const PR_PAC_RESET_KEYS: u32 = 54;
-pub const PR_PAC_APIAKEY: u32 = 1;
-pub const PR_PAC_APIBKEY: u32 = 2;
-pub const PR_PAC_APDAKEY: u32 = 4;
-pub const PR_PAC_APDBKEY: u32 = 8;
-pub const PR_PAC_APGAKEY: u32 = 16;
-pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55;
-pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56;
-pub const PR_TAGGED_ADDR_ENABLE: u32 = 1;
-pub const PR_MTE_TCF_NONE: u32 = 0;
-pub const PR_MTE_TCF_SYNC: u32 = 2;
-pub const PR_MTE_TCF_ASYNC: u32 = 4;
-pub const PR_MTE_TCF_MASK: u32 = 6;
-pub const PR_MTE_TAG_SHIFT: u32 = 3;
-pub const PR_MTE_TAG_MASK: u32 = 524280;
-pub const PR_MTE_TCF_SHIFT: u32 = 1;
-pub const PR_SET_IO_FLUSHER: u32 = 57;
-pub const PR_GET_IO_FLUSHER: u32 = 58;
-pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59;
-pub const PR_SYS_DISPATCH_OFF: u32 = 0;
-pub const PR_SYS_DISPATCH_ON: u32 = 1;
-pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0;
-pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1;
-pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60;
-pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61;
-pub const PR_SCHED_CORE: u32 = 62;
-pub const PR_SCHED_CORE_GET: u32 = 0;
-pub const PR_SCHED_CORE_CREATE: u32 = 1;
-pub const PR_SCHED_CORE_SHARE_TO: u32 = 2;
-pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3;
-pub const PR_SCHED_CORE_MAX: u32 = 4;
-pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0;
-pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1;
-pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2;
-pub const PR_SME_SET_VL: u32 = 63;
-pub const PR_SME_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SME_GET_VL: u32 = 64;
-pub const PR_SME_VL_LEN_MASK: u32 = 65535;
-pub const PR_SME_VL_INHERIT: u32 = 131072;
-pub const PR_SET_VMA: u32 = 1398164801;
-pub const PR_SET_VMA_ANON_NAME: u32 = 0;
-pub const GRND_NONBLOCK: u32 = 1;
-pub const GRND_RANDOM: u32 = 2;
-pub const GRND_INSECURE: u32 = 4;
-pub const ITIMER_REAL: u32 = 0;
-pub const ITIMER_VIRTUAL: u32 = 1;
-pub const ITIMER_PROF: u32 = 2;
-pub const CLOCK_REALTIME: u32 = 0;
-pub const CLOCK_MONOTONIC: u32 = 1;
-pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2;
-pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3;
-pub const CLOCK_MONOTONIC_RAW: u32 = 4;
-pub const CLOCK_REALTIME_COARSE: u32 = 5;
-pub const CLOCK_MONOTONIC_COARSE: u32 = 6;
-pub const CLOCK_BOOTTIME: u32 = 7;
-pub const CLOCK_REALTIME_ALARM: u32 = 8;
-pub const CLOCK_BOOTTIME_ALARM: u32 = 9;
-pub const CLOCK_SGI_CYCLE: u32 = 10;
-pub const CLOCK_TAI: u32 = 11;
-pub const MAX_CLOCKS: u32 = 16;
-pub const CLOCKS_MASK: u32 = 1;
-pub const CLOCKS_MONO: u32 = 1;
-pub const TIMER_ABSTIME: u32 = 1;
-pub const RUSAGE_SELF: u32 = 0;
-pub const RUSAGE_CHILDREN: i32 = -1;
-pub const RUSAGE_BOTH: i32 = -2;
-pub const RUSAGE_THREAD: u32 = 1;
-pub const RLIM64_INFINITY: i32 = -1;
-pub const PRIO_MIN: i32 = -20;
-pub const PRIO_MAX: u32 = 20;
-pub const PRIO_PROCESS: u32 = 0;
-pub const PRIO_PGRP: u32 = 1;
-pub const PRIO_USER: u32 = 2;
-pub const _STK_LIM: u32 = 8388608;
-pub const MLOCK_LIMIT: u32 = 8388608;
-pub const RLIMIT_CPU: u32 = 0;
-pub const RLIMIT_FSIZE: u32 = 1;
-pub const RLIMIT_DATA: u32 = 2;
-pub const RLIMIT_STACK: u32 = 3;
-pub const RLIMIT_CORE: u32 = 4;
-pub const RLIMIT_RSS: u32 = 5;
-pub const RLIMIT_NPROC: u32 = 6;
-pub const RLIMIT_NOFILE: u32 = 7;
-pub const RLIMIT_MEMLOCK: u32 = 8;
-pub const RLIMIT_AS: u32 = 9;
-pub const RLIMIT_LOCKS: u32 = 10;
-pub const RLIMIT_SIGPENDING: u32 = 11;
-pub const RLIMIT_MSGQUEUE: u32 = 12;
-pub const RLIMIT_NICE: u32 = 13;
-pub const RLIMIT_RTPRIO: u32 = 14;
-pub const RLIMIT_RTTIME: u32 = 15;
-pub const RLIM_NLIMITS: u32 = 16;
-pub const RLIM_INFINITY: i32 = -1;
-pub const CSIGNAL: u32 = 255;
-pub const CLONE_VM: u32 = 256;
-pub const CLONE_FS: u32 = 512;
-pub const CLONE_FILES: u32 = 1024;
-pub const CLONE_SIGHAND: u32 = 2048;
-pub const CLONE_PIDFD: u32 = 4096;
-pub const CLONE_PTRACE: u32 = 8192;
-pub const CLONE_VFORK: u32 = 16384;
-pub const CLONE_PARENT: u32 = 32768;
-pub const CLONE_THREAD: u32 = 65536;
-pub const CLONE_NEWNS: u32 = 131072;
-pub const CLONE_SYSVSEM: u32 = 262144;
-pub const CLONE_SETTLS: u32 = 524288;
-pub const CLONE_PARENT_SETTID: u32 = 1048576;
-pub const CLONE_CHILD_CLEARTID: u32 = 2097152;
-pub const CLONE_DETACHED: u32 = 4194304;
-pub const CLONE_UNTRACED: u32 = 8388608;
-pub const CLONE_CHILD_SETTID: u32 = 16777216;
-pub const CLONE_NEWCGROUP: u32 = 33554432;
-pub const CLONE_NEWUTS: u32 = 67108864;
-pub const CLONE_NEWIPC: u32 = 134217728;
-pub const CLONE_NEWUSER: u32 = 268435456;
-pub const CLONE_NEWPID: u32 = 536870912;
-pub const CLONE_NEWNET: u32 = 1073741824;
-pub const CLONE_IO: u32 = 2147483648;
-pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296;
-pub const CLONE_INTO_CGROUP: u64 = 8589934592;
-pub const CLONE_NEWTIME: u32 = 128;
-pub const CLONE_ARGS_SIZE_VER0: u32 = 64;
-pub const CLONE_ARGS_SIZE_VER1: u32 = 80;
-pub const CLONE_ARGS_SIZE_VER2: u32 = 88;
-pub const SCHED_NORMAL: u32 = 0;
-pub const SCHED_FIFO: u32 = 1;
-pub const SCHED_RR: u32 = 2;
-pub const SCHED_BATCH: u32 = 3;
-pub const SCHED_IDLE: u32 = 5;
-pub const SCHED_DEADLINE: u32 = 6;
-pub const SCHED_RESET_ON_FORK: u32 = 1073741824;
-pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1;
-pub const SCHED_FLAG_RECLAIM: u32 = 2;
-pub const SCHED_FLAG_DL_OVERRUN: u32 = 4;
-pub const SCHED_FLAG_KEEP_POLICY: u32 = 8;
-pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16;
-pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32;
-pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64;
-pub const SCHED_FLAG_KEEP_ALL: u32 = 24;
-pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96;
-pub const SCHED_FLAG_ALL: u32 = 127;
-pub const NSIG: u32 = 32;
-pub const SIGHUP: u32 = 1;
-pub const SIGINT: u32 = 2;
-pub const SIGQUIT: u32 = 3;
-pub const SIGILL: u32 = 4;
-pub const SIGTRAP: u32 = 5;
-pub const SIGABRT: u32 = 6;
-pub const SIGIOT: u32 = 6;
-pub const SIGBUS: u32 = 7;
-pub const SIGFPE: u32 = 8;
-pub const SIGKILL: u32 = 9;
-pub const SIGUSR1: u32 = 10;
-pub const SIGSEGV: u32 = 11;
-pub const SIGUSR2: u32 = 12;
-pub const SIGPIPE: u32 = 13;
-pub const SIGALRM: u32 = 14;
-pub const SIGTERM: u32 = 15;
-pub const SIGSTKFLT: u32 = 16;
-pub const SIGCHLD: u32 = 17;
-pub const SIGCONT: u32 = 18;
-pub const SIGSTOP: u32 = 19;
-pub const SIGTSTP: u32 = 20;
-pub const SIGTTIN: u32 = 21;
-pub const SIGTTOU: u32 = 22;
-pub const SIGURG: u32 = 23;
-pub const SIGXCPU: u32 = 24;
-pub const SIGXFSZ: u32 = 25;
-pub const SIGVTALRM: u32 = 26;
-pub const SIGPROF: u32 = 27;
-pub const SIGWINCH: u32 = 28;
-pub const SIGIO: u32 = 29;
-pub const SIGPOLL: u32 = 29;
-pub const SIGPWR: u32 = 30;
-pub const SIGSYS: u32 = 31;
-pub const SIGUNUSED: u32 = 31;
-pub const SIGRTMIN: u32 = 32;
-pub const SIGSWI: u32 = 32;
-pub const SA_THIRTYTWO: u32 = 33554432;
-pub const SA_RESTORER: u32 = 67108864;
-pub const MINSIGSTKSZ: u32 = 2048;
-pub const SIGSTKSZ: u32 = 8192;
-pub const SA_NOCLDSTOP: u32 = 1;
-pub const SA_NOCLDWAIT: u32 = 2;
-pub const SA_SIGINFO: u32 = 4;
-pub const SA_UNSUPPORTED: u32 = 1024;
-pub const SA_EXPOSE_TAGBITS: u32 = 2048;
-pub const SA_ONSTACK: u32 = 134217728;
-pub const SA_RESTART: u32 = 268435456;
-pub const SA_NODEFER: u32 = 1073741824;
-pub const SA_RESETHAND: u32 = 2147483648;
-pub const SA_NOMASK: u32 = 1073741824;
-pub const SA_ONESHOT: u32 = 2147483648;
-pub const SIG_BLOCK: u32 = 0;
-pub const SIG_UNBLOCK: u32 = 1;
-pub const SIG_SETMASK: u32 = 2;
-pub const SI_MAX_SIZE: u32 = 128;
-pub const SI_USER: u32 = 0;
-pub const SI_KERNEL: u32 = 128;
-pub const SI_QUEUE: i32 = -1;
-pub const SI_TIMER: i32 = -2;
-pub const SI_MESGQ: i32 = -3;
-pub const SI_ASYNCIO: i32 = -4;
-pub const SI_SIGIO: i32 = -5;
-pub const SI_TKILL: i32 = -6;
-pub const SI_DETHREAD: i32 = -7;
-pub const SI_ASYNCNL: i32 = -60;
-pub const ILL_ILLOPC: u32 = 1;
-pub const ILL_ILLOPN: u32 = 2;
-pub const ILL_ILLADR: u32 = 3;
-pub const ILL_ILLTRP: u32 = 4;
-pub const ILL_PRVOPC: u32 = 5;
-pub const ILL_PRVREG: u32 = 6;
-pub const ILL_COPROC: u32 = 7;
-pub const ILL_BADSTK: u32 = 8;
-pub const ILL_BADIADDR: u32 = 9;
-pub const __ILL_BREAK: u32 = 10;
-pub const __ILL_BNDMOD: u32 = 11;
-pub const NSIGILL: u32 = 11;
-pub const FPE_INTDIV: u32 = 1;
-pub const FPE_INTOVF: u32 = 2;
-pub const FPE_FLTDIV: u32 = 3;
-pub const FPE_FLTOVF: u32 = 4;
-pub const FPE_FLTUND: u32 = 5;
-pub const FPE_FLTRES: u32 = 6;
-pub const FPE_FLTINV: u32 = 7;
-pub const FPE_FLTSUB: u32 = 8;
-pub const __FPE_DECOVF: u32 = 9;
-pub const __FPE_DECDIV: u32 = 10;
-pub const __FPE_DECERR: u32 = 11;
-pub const __FPE_INVASC: u32 = 12;
-pub const __FPE_INVDEC: u32 = 13;
-pub const FPE_FLTUNK: u32 = 14;
-pub const FPE_CONDTRAP: u32 = 15;
-pub const NSIGFPE: u32 = 15;
-pub const SEGV_MAPERR: u32 = 1;
-pub const SEGV_ACCERR: u32 = 2;
-pub const SEGV_BNDERR: u32 = 3;
-pub const SEGV_PKUERR: u32 = 4;
-pub const SEGV_ACCADI: u32 = 5;
-pub const SEGV_ADIDERR: u32 = 6;
-pub const SEGV_ADIPERR: u32 = 7;
-pub const SEGV_MTEAERR: u32 = 8;
-pub const SEGV_MTESERR: u32 = 9;
-pub const NSIGSEGV: u32 = 9;
-pub const BUS_ADRALN: u32 = 1;
-pub const BUS_ADRERR: u32 = 2;
-pub const BUS_OBJERR: u32 = 3;
-pub const BUS_MCEERR_AR: u32 = 4;
-pub const BUS_MCEERR_AO: u32 = 5;
-pub const NSIGBUS: u32 = 5;
-pub const TRAP_BRKPT: u32 = 1;
-pub const TRAP_TRACE: u32 = 2;
-pub const TRAP_BRANCH: u32 = 3;
-pub const TRAP_HWBKPT: u32 = 4;
-pub const TRAP_UNK: u32 = 5;
-pub const TRAP_PERF: u32 = 6;
-pub const NSIGTRAP: u32 = 6;
-pub const TRAP_PERF_FLAG_ASYNC: u32 = 1;
-pub const CLD_EXITED: u32 = 1;
-pub const CLD_KILLED: u32 = 2;
-pub const CLD_DUMPED: u32 = 3;
-pub const CLD_TRAPPED: u32 = 4;
-pub const CLD_STOPPED: u32 = 5;
-pub const CLD_CONTINUED: u32 = 6;
-pub const NSIGCHLD: u32 = 6;
-pub const POLL_IN: u32 = 1;
-pub const POLL_OUT: u32 = 2;
-pub const POLL_MSG: u32 = 3;
-pub const POLL_ERR: u32 = 4;
-pub const POLL_PRI: u32 = 5;
-pub const POLL_HUP: u32 = 6;
-pub const NSIGPOLL: u32 = 6;
-pub const SYS_SECCOMP: u32 = 1;
-pub const SYS_USER_DISPATCH: u32 = 2;
-pub const NSIGSYS: u32 = 2;
-pub const EMT_TAGOVF: u32 = 1;
-pub const NSIGEMT: u32 = 1;
-pub const SIGEV_SIGNAL: u32 = 0;
-pub const SIGEV_NONE: u32 = 1;
-pub const SIGEV_THREAD: u32 = 2;
-pub const SIGEV_THREAD_ID: u32 = 4;
-pub const SIGEV_MAX_SIZE: u32 = 64;
-pub const SS_ONSTACK: u32 = 1;
-pub const SS_DISABLE: u32 = 2;
-pub const SS_AUTODISARM: u32 = 2147483648;
-pub const SS_FLAG_BITS: u32 = 2147483648;
-pub const S_IFMT: u32 = 61440;
-pub const S_IFSOCK: u32 = 49152;
-pub const S_IFLNK: u32 = 40960;
-pub const S_IFREG: u32 = 32768;
-pub const S_IFBLK: u32 = 24576;
-pub const S_IFDIR: u32 = 16384;
-pub const S_IFCHR: u32 = 8192;
-pub const S_IFIFO: u32 = 4096;
-pub const S_ISUID: u32 = 2048;
-pub const S_ISGID: u32 = 1024;
-pub const S_ISVTX: u32 = 512;
-pub const S_IRWXU: u32 = 448;
-pub const S_IRUSR: u32 = 256;
-pub const S_IWUSR: u32 = 128;
-pub const S_IXUSR: u32 = 64;
-pub const S_IRWXG: u32 = 56;
-pub const S_IRGRP: u32 = 32;
-pub const S_IWGRP: u32 = 16;
-pub const S_IXGRP: u32 = 8;
-pub const S_IRWXO: u32 = 7;
-pub const S_IROTH: u32 = 4;
-pub const S_IWOTH: u32 = 2;
-pub const S_IXOTH: u32 = 1;
-pub const STATX_TYPE: u32 = 1;
-pub const STATX_MODE: u32 = 2;
-pub const STATX_NLINK: u32 = 4;
-pub const STATX_UID: u32 = 8;
-pub const STATX_GID: u32 = 16;
-pub const STATX_ATIME: u32 = 32;
-pub const STATX_MTIME: u32 = 64;
-pub const STATX_CTIME: u32 = 128;
-pub const STATX_INO: u32 = 256;
-pub const STATX_SIZE: u32 = 512;
-pub const STATX_BLOCKS: u32 = 1024;
-pub const STATX_BASIC_STATS: u32 = 2047;
-pub const STATX_BTIME: u32 = 2048;
-pub const STATX_MNT_ID: u32 = 4096;
-pub const STATX_DIOALIGN: u32 = 8192;
-pub const STATX__RESERVED: u32 = 2147483648;
-pub const STATX_ALL: u32 = 4095;
-pub const STATX_ATTR_COMPRESSED: u32 = 4;
-pub const STATX_ATTR_IMMUTABLE: u32 = 16;
-pub const STATX_ATTR_APPEND: u32 = 32;
-pub const STATX_ATTR_NODUMP: u32 = 64;
-pub const STATX_ATTR_ENCRYPTED: u32 = 2048;
-pub const STATX_ATTR_AUTOMOUNT: u32 = 4096;
-pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192;
-pub const STATX_ATTR_VERITY: u32 = 1048576;
-pub const STATX_ATTR_DAX: u32 = 2097152;
-pub const SI_LOAD_SHIFT: u32 = 16;
-pub const TCP_MSS_DEFAULT: u32 = 536;
-pub const TCP_MSS_DESIRED: u32 = 1220;
-pub const TCP_NODELAY: u32 = 1;
-pub const TCP_MAXSEG: u32 = 2;
-pub const TCP_CORK: u32 = 3;
-pub const TCP_KEEPIDLE: u32 = 4;
-pub const TCP_KEEPINTVL: u32 = 5;
-pub const TCP_KEEPCNT: u32 = 6;
-pub const TCP_SYNCNT: u32 = 7;
-pub const TCP_LINGER2: u32 = 8;
-pub const TCP_DEFER_ACCEPT: u32 = 9;
-pub const TCP_WINDOW_CLAMP: u32 = 10;
-pub const TCP_INFO: u32 = 11;
-pub const TCP_QUICKACK: u32 = 12;
-pub const TCP_CONGESTION: u32 = 13;
-pub const TCP_MD5SIG: u32 = 14;
-pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16;
-pub const TCP_THIN_DUPACK: u32 = 17;
-pub const TCP_USER_TIMEOUT: u32 = 18;
-pub const TCP_REPAIR: u32 = 19;
-pub const TCP_REPAIR_QUEUE: u32 = 20;
-pub const TCP_QUEUE_SEQ: u32 = 21;
-pub const TCP_REPAIR_OPTIONS: u32 = 22;
-pub const TCP_FASTOPEN: u32 = 23;
-pub const TCP_TIMESTAMP: u32 = 24;
-pub const TCP_NOTSENT_LOWAT: u32 = 25;
-pub const TCP_CC_INFO: u32 = 26;
-pub const TCP_SAVE_SYN: u32 = 27;
-pub const TCP_SAVED_SYN: u32 = 28;
-pub const TCP_REPAIR_WINDOW: u32 = 29;
-pub const TCP_FASTOPEN_CONNECT: u32 = 30;
-pub const TCP_ULP: u32 = 31;
-pub const TCP_MD5SIG_EXT: u32 = 32;
-pub const TCP_FASTOPEN_KEY: u32 = 33;
-pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34;
-pub const TCP_ZEROCOPY_RECEIVE: u32 = 35;
-pub const TCP_INQ: u32 = 36;
-pub const TCP_CM_INQ: u32 = 36;
-pub const TCP_TX_DELAY: u32 = 37;
-pub const TCP_REPAIR_ON: u32 = 1;
-pub const TCP_REPAIR_OFF: u32 = 0;
-pub const TCP_REPAIR_OFF_NO_WP: i32 = -1;
-pub const TCPI_OPT_TIMESTAMPS: u32 = 1;
-pub const TCPI_OPT_SACK: u32 = 2;
-pub const TCPI_OPT_WSCALE: u32 = 4;
-pub const TCPI_OPT_ECN: u32 = 8;
-pub const TCPI_OPT_ECN_SEEN: u32 = 16;
-pub const TCPI_OPT_SYN_DATA: u32 = 32;
-pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80;
-pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
-pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
-pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
-pub const IGNBRK: u32 = 1;
-pub const BRKINT: u32 = 2;
-pub const IGNPAR: u32 = 4;
-pub const PARMRK: u32 = 8;
-pub const INPCK: u32 = 16;
-pub const ISTRIP: u32 = 32;
-pub const INLCR: u32 = 64;
-pub const IGNCR: u32 = 128;
-pub const ICRNL: u32 = 256;
-pub const IXANY: u32 = 2048;
-pub const OPOST: u32 = 1;
-pub const OCRNL: u32 = 8;
-pub const ONOCR: u32 = 16;
-pub const ONLRET: u32 = 32;
-pub const OFILL: u32 = 64;
-pub const OFDEL: u32 = 128;
-pub const B0: u32 = 0;
-pub const B50: u32 = 1;
-pub const B75: u32 = 2;
-pub const B110: u32 = 3;
-pub const B134: u32 = 4;
-pub const B150: u32 = 5;
-pub const B200: u32 = 6;
-pub const B300: u32 = 7;
-pub const B600: u32 = 8;
-pub const B1200: u32 = 9;
-pub const B1800: u32 = 10;
-pub const B2400: u32 = 11;
-pub const B4800: u32 = 12;
-pub const B9600: u32 = 13;
-pub const B19200: u32 = 14;
-pub const B38400: u32 = 15;
-pub const EXTA: u32 = 14;
-pub const EXTB: u32 = 15;
-pub const ADDRB: u32 = 536870912;
-pub const CMSPAR: u32 = 1073741824;
-pub const CRTSCTS: u32 = 2147483648;
-pub const IBSHIFT: u32 = 16;
-pub const TCOOFF: u32 = 0;
-pub const TCOON: u32 = 1;
-pub const TCIOFF: u32 = 2;
-pub const TCION: u32 = 3;
-pub const TCIFLUSH: u32 = 0;
-pub const TCOFLUSH: u32 = 1;
-pub const TCIOFLUSH: u32 = 2;
-pub const NCCS: u32 = 19;
-pub const VINTR: u32 = 0;
-pub const VQUIT: u32 = 1;
-pub const VERASE: u32 = 2;
-pub const VKILL: u32 = 3;
-pub const VEOF: u32 = 4;
-pub const VTIME: u32 = 5;
-pub const VMIN: u32 = 6;
-pub const VSWTC: u32 = 7;
-pub const VSTART: u32 = 8;
-pub const VSTOP: u32 = 9;
-pub const VSUSP: u32 = 10;
-pub const VEOL: u32 = 11;
-pub const VREPRINT: u32 = 12;
-pub const VDISCARD: u32 = 13;
-pub const VWERASE: u32 = 14;
-pub const VLNEXT: u32 = 15;
-pub const VEOL2: u32 = 16;
-pub const IUCLC: u32 = 512;
-pub const IXON: u32 = 1024;
-pub const IXOFF: u32 = 4096;
-pub const IMAXBEL: u32 = 8192;
-pub const IUTF8: u32 = 16384;
-pub const OLCUC: u32 = 2;
-pub const ONLCR: u32 = 4;
-pub const NLDLY: u32 = 256;
-pub const NL0: u32 = 0;
-pub const NL1: u32 = 256;
-pub const CRDLY: u32 = 1536;
-pub const CR0: u32 = 0;
-pub const CR1: u32 = 512;
-pub const CR2: u32 = 1024;
-pub const CR3: u32 = 1536;
-pub const TABDLY: u32 = 6144;
-pub const TAB0: u32 = 0;
-pub const TAB1: u32 = 2048;
-pub const TAB2: u32 = 4096;
-pub const TAB3: u32 = 6144;
-pub const XTABS: u32 = 6144;
-pub const BSDLY: u32 = 8192;
-pub const BS0: u32 = 0;
-pub const BS1: u32 = 8192;
-pub const VTDLY: u32 = 16384;
-pub const VT0: u32 = 0;
-pub const VT1: u32 = 16384;
-pub const FFDLY: u32 = 32768;
-pub const FF0: u32 = 0;
-pub const FF1: u32 = 32768;
-pub const CBAUD: u32 = 4111;
-pub const CSIZE: u32 = 48;
-pub const CS5: u32 = 0;
-pub const CS6: u32 = 16;
-pub const CS7: u32 = 32;
-pub const CS8: u32 = 48;
-pub const CSTOPB: u32 = 64;
-pub const CREAD: u32 = 128;
-pub const PARENB: u32 = 256;
-pub const PARODD: u32 = 512;
-pub const HUPCL: u32 = 1024;
-pub const CLOCAL: u32 = 2048;
-pub const CBAUDEX: u32 = 4096;
-pub const BOTHER: u32 = 4096;
-pub const B57600: u32 = 4097;
-pub const B115200: u32 = 4098;
-pub const B230400: u32 = 4099;
-pub const B460800: u32 = 4100;
-pub const B500000: u32 = 4101;
-pub const B576000: u32 = 4102;
-pub const B921600: u32 = 4103;
-pub const B1000000: u32 = 4104;
-pub const B1152000: u32 = 4105;
-pub const B1500000: u32 = 4106;
-pub const B2000000: u32 = 4107;
-pub const B2500000: u32 = 4108;
-pub const B3000000: u32 = 4109;
-pub const B3500000: u32 = 4110;
-pub const B4000000: u32 = 4111;
-pub const CIBAUD: u32 = 269418496;
-pub const ISIG: u32 = 1;
-pub const ICANON: u32 = 2;
-pub const XCASE: u32 = 4;
-pub const ECHO: u32 = 8;
-pub const ECHOE: u32 = 16;
-pub const ECHOK: u32 = 32;
-pub const ECHONL: u32 = 64;
-pub const NOFLSH: u32 = 128;
-pub const TOSTOP: u32 = 256;
-pub const ECHOCTL: u32 = 512;
-pub const ECHOPRT: u32 = 1024;
-pub const ECHOKE: u32 = 2048;
-pub const FLUSHO: u32 = 4096;
-pub const PENDIN: u32 = 16384;
-pub const IEXTEN: u32 = 32768;
-pub const EXTPROC: u32 = 65536;
-pub const TCSANOW: u32 = 0;
-pub const TCSADRAIN: u32 = 1;
-pub const TCSAFLUSH: u32 = 2;
-pub const TIOCPKT_DATA: u32 = 0;
-pub const TIOCPKT_FLUSHREAD: u32 = 1;
-pub const TIOCPKT_FLUSHWRITE: u32 = 2;
-pub const TIOCPKT_STOP: u32 = 4;
-pub const TIOCPKT_START: u32 = 8;
-pub const TIOCPKT_NOSTOP: u32 = 16;
-pub const TIOCPKT_DOSTOP: u32 = 32;
-pub const TIOCPKT_IOCTL: u32 = 64;
-pub const TIOCSER_TEMT: u32 = 1;
-pub const NCC: u32 = 8;
-pub const TIOCM_LE: u32 = 1;
-pub const TIOCM_DTR: u32 = 2;
-pub const TIOCM_RTS: u32 = 4;
-pub const TIOCM_ST: u32 = 8;
-pub const TIOCM_SR: u32 = 16;
-pub const TIOCM_CTS: u32 = 32;
-pub const TIOCM_CAR: u32 = 64;
-pub const TIOCM_RNG: u32 = 128;
-pub const TIOCM_DSR: u32 = 256;
-pub const TIOCM_CD: u32 = 64;
-pub const TIOCM_RI: u32 = 128;
-pub const TIOCM_OUT1: u32 = 8192;
-pub const TIOCM_OUT2: u32 = 16384;
-pub const TIOCM_LOOP: u32 = 32768;
-pub const UIO_FASTIOV: u32 = 8;
-pub const UIO_MAXIOV: u32 = 1024;
-pub const UNIX_PATH_MAX: u32 = 108;
-pub const __NR_OABI_SYSCALL_BASE: u32 = 9437184;
-pub const __NR_SYSCALL_MASK: u32 = 1048575;
-pub const __NR_SYSCALL_BASE: u32 = 0;
-pub const __NR_restart_syscall: u32 = 0;
-pub const __NR_exit: u32 = 1;
-pub const __NR_fork: u32 = 2;
-pub const __NR_read: u32 = 3;
-pub const __NR_write: u32 = 4;
-pub const __NR_open: u32 = 5;
-pub const __NR_close: u32 = 6;
-pub const __NR_creat: u32 = 8;
-pub const __NR_link: u32 = 9;
-pub const __NR_unlink: u32 = 10;
-pub const __NR_execve: u32 = 11;
-pub const __NR_chdir: u32 = 12;
-pub const __NR_mknod: u32 = 14;
-pub const __NR_chmod: u32 = 15;
-pub const __NR_lchown: u32 = 16;
-pub const __NR_lseek: u32 = 19;
-pub const __NR_getpid: u32 = 20;
-pub const __NR_mount: u32 = 21;
-pub const __NR_setuid: u32 = 23;
-pub const __NR_getuid: u32 = 24;
-pub const __NR_ptrace: u32 = 26;
-pub const __NR_pause: u32 = 29;
-pub const __NR_access: u32 = 33;
-pub const __NR_nice: u32 = 34;
-pub const __NR_sync: u32 = 36;
-pub const __NR_kill: u32 = 37;
-pub const __NR_rename: u32 = 38;
-pub const __NR_mkdir: u32 = 39;
-pub const __NR_rmdir: u32 = 40;
-pub const __NR_dup: u32 = 41;
-pub const __NR_pipe: u32 = 42;
-pub const __NR_times: u32 = 43;
-pub const __NR_brk: u32 = 45;
-pub const __NR_setgid: u32 = 46;
-pub const __NR_getgid: u32 = 47;
-pub const __NR_geteuid: u32 = 49;
-pub const __NR_getegid: u32 = 50;
-pub const __NR_acct: u32 = 51;
-pub const __NR_umount2: u32 = 52;
-pub const __NR_ioctl: u32 = 54;
-pub const __NR_fcntl: u32 = 55;
-pub const __NR_setpgid: u32 = 57;
-pub const __NR_umask: u32 = 60;
-pub const __NR_chroot: u32 = 61;
-pub const __NR_ustat: u32 = 62;
-pub const __NR_dup2: u32 = 63;
-pub const __NR_getppid: u32 = 64;
-pub const __NR_getpgrp: u32 = 65;
-pub const __NR_setsid: u32 = 66;
-pub const __NR_sigaction: u32 = 67;
-pub const __NR_setreuid: u32 = 70;
-pub const __NR_setregid: u32 = 71;
-pub const __NR_sigsuspend: u32 = 72;
-pub const __NR_sigpending: u32 = 73;
-pub const __NR_sethostname: u32 = 74;
-pub const __NR_setrlimit: u32 = 75;
-pub const __NR_getrusage: u32 = 77;
-pub const __NR_gettimeofday: u32 = 78;
-pub const __NR_settimeofday: u32 = 79;
-pub const __NR_getgroups: u32 = 80;
-pub const __NR_setgroups: u32 = 81;
-pub const __NR_symlink: u32 = 83;
-pub const __NR_readlink: u32 = 85;
-pub const __NR_uselib: u32 = 86;
-pub const __NR_swapon: u32 = 87;
-pub const __NR_reboot: u32 = 88;
-pub const __NR_munmap: u32 = 91;
-pub const __NR_truncate: u32 = 92;
-pub const __NR_ftruncate: u32 = 93;
-pub const __NR_fchmod: u32 = 94;
-pub const __NR_fchown: u32 = 95;
-pub const __NR_getpriority: u32 = 96;
-pub const __NR_setpriority: u32 = 97;
-pub const __NR_statfs: u32 = 99;
-pub const __NR_fstatfs: u32 = 100;
-pub const __NR_syslog: u32 = 103;
-pub const __NR_setitimer: u32 = 104;
-pub const __NR_getitimer: u32 = 105;
-pub const __NR_stat: u32 = 106;
-pub const __NR_lstat: u32 = 107;
-pub const __NR_fstat: u32 = 108;
-pub const __NR_vhangup: u32 = 111;
-pub const __NR_wait4: u32 = 114;
-pub const __NR_swapoff: u32 = 115;
-pub const __NR_sysinfo: u32 = 116;
-pub const __NR_fsync: u32 = 118;
-pub const __NR_sigreturn: u32 = 119;
-pub const __NR_clone: u32 = 120;
-pub const __NR_setdomainname: u32 = 121;
-pub const __NR_uname: u32 = 122;
-pub const __NR_adjtimex: u32 = 124;
-pub const __NR_mprotect: u32 = 125;
-pub const __NR_sigprocmask: u32 = 126;
-pub const __NR_init_module: u32 = 128;
-pub const __NR_delete_module: u32 = 129;
-pub const __NR_quotactl: u32 = 131;
-pub const __NR_getpgid: u32 = 132;
-pub const __NR_fchdir: u32 = 133;
-pub const __NR_bdflush: u32 = 134;
-pub const __NR_sysfs: u32 = 135;
-pub const __NR_personality: u32 = 136;
-pub const __NR_setfsuid: u32 = 138;
-pub const __NR_setfsgid: u32 = 139;
-pub const __NR__llseek: u32 = 140;
-pub const __NR_getdents: u32 = 141;
-pub const __NR__newselect: u32 = 142;
-pub const __NR_flock: u32 = 143;
-pub const __NR_msync: u32 = 144;
-pub const __NR_readv: u32 = 145;
-pub const __NR_writev: u32 = 146;
-pub const __NR_getsid: u32 = 147;
-pub const __NR_fdatasync: u32 = 148;
-pub const __NR__sysctl: u32 = 149;
-pub const __NR_mlock: u32 = 150;
-pub const __NR_munlock: u32 = 151;
-pub const __NR_mlockall: u32 = 152;
-pub const __NR_munlockall: u32 = 153;
-pub const __NR_sched_setparam: u32 = 154;
-pub const __NR_sched_getparam: u32 = 155;
-pub const __NR_sched_setscheduler: u32 = 156;
-pub const __NR_sched_getscheduler: u32 = 157;
-pub const __NR_sched_yield: u32 = 158;
-pub const __NR_sched_get_priority_max: u32 = 159;
-pub const __NR_sched_get_priority_min: u32 = 160;
-pub const __NR_sched_rr_get_interval: u32 = 161;
-pub const __NR_nanosleep: u32 = 162;
-pub const __NR_mremap: u32 = 163;
-pub const __NR_setresuid: u32 = 164;
-pub const __NR_getresuid: u32 = 165;
-pub const __NR_poll: u32 = 168;
-pub const __NR_nfsservctl: u32 = 169;
-pub const __NR_setresgid: u32 = 170;
-pub const __NR_getresgid: u32 = 171;
-pub const __NR_prctl: u32 = 172;
-pub const __NR_rt_sigreturn: u32 = 173;
-pub const __NR_rt_sigaction: u32 = 174;
-pub const __NR_rt_sigprocmask: u32 = 175;
-pub const __NR_rt_sigpending: u32 = 176;
-pub const __NR_rt_sigtimedwait: u32 = 177;
-pub const __NR_rt_sigqueueinfo: u32 = 178;
-pub const __NR_rt_sigsuspend: u32 = 179;
-pub const __NR_pread64: u32 = 180;
-pub const __NR_pwrite64: u32 = 181;
-pub const __NR_chown: u32 = 182;
-pub const __NR_getcwd: u32 = 183;
-pub const __NR_capget: u32 = 184;
-pub const __NR_capset: u32 = 185;
-pub const __NR_sigaltstack: u32 = 186;
-pub const __NR_sendfile: u32 = 187;
-pub const __NR_vfork: u32 = 190;
-pub const __NR_ugetrlimit: u32 = 191;
-pub const __NR_mmap2: u32 = 192;
-pub const __NR_truncate64: u32 = 193;
-pub const __NR_ftruncate64: u32 = 194;
-pub const __NR_stat64: u32 = 195;
-pub const __NR_lstat64: u32 = 196;
-pub const __NR_fstat64: u32 = 197;
-pub const __NR_lchown32: u32 = 198;
-pub const __NR_getuid32: u32 = 199;
-pub const __NR_getgid32: u32 = 200;
-pub const __NR_geteuid32: u32 = 201;
-pub const __NR_getegid32: u32 = 202;
-pub const __NR_setreuid32: u32 = 203;
-pub const __NR_setregid32: u32 = 204;
-pub const __NR_getgroups32: u32 = 205;
-pub const __NR_setgroups32: u32 = 206;
-pub const __NR_fchown32: u32 = 207;
-pub const __NR_setresuid32: u32 = 208;
-pub const __NR_getresuid32: u32 = 209;
-pub const __NR_setresgid32: u32 = 210;
-pub const __NR_getresgid32: u32 = 211;
-pub const __NR_chown32: u32 = 212;
-pub const __NR_setuid32: u32 = 213;
-pub const __NR_setgid32: u32 = 214;
-pub const __NR_setfsuid32: u32 = 215;
-pub const __NR_setfsgid32: u32 = 216;
-pub const __NR_getdents64: u32 = 217;
-pub const __NR_pivot_root: u32 = 218;
-pub const __NR_mincore: u32 = 219;
-pub const __NR_madvise: u32 = 220;
-pub const __NR_fcntl64: u32 = 221;
-pub const __NR_gettid: u32 = 224;
-pub const __NR_readahead: u32 = 225;
-pub const __NR_setxattr: u32 = 226;
-pub const __NR_lsetxattr: u32 = 227;
-pub const __NR_fsetxattr: u32 = 228;
-pub const __NR_getxattr: u32 = 229;
-pub const __NR_lgetxattr: u32 = 230;
-pub const __NR_fgetxattr: u32 = 231;
-pub const __NR_listxattr: u32 = 232;
-pub const __NR_llistxattr: u32 = 233;
-pub const __NR_flistxattr: u32 = 234;
-pub const __NR_removexattr: u32 = 235;
-pub const __NR_lremovexattr: u32 = 236;
-pub const __NR_fremovexattr: u32 = 237;
-pub const __NR_tkill: u32 = 238;
-pub const __NR_sendfile64: u32 = 239;
-pub const __NR_futex: u32 = 240;
-pub const __NR_sched_setaffinity: u32 = 241;
-pub const __NR_sched_getaffinity: u32 = 242;
-pub const __NR_io_setup: u32 = 243;
-pub const __NR_io_destroy: u32 = 244;
-pub const __NR_io_getevents: u32 = 245;
-pub const __NR_io_submit: u32 = 246;
-pub const __NR_io_cancel: u32 = 247;
-pub const __NR_exit_group: u32 = 248;
-pub const __NR_lookup_dcookie: u32 = 249;
-pub const __NR_epoll_create: u32 = 250;
-pub const __NR_epoll_ctl: u32 = 251;
-pub const __NR_epoll_wait: u32 = 252;
-pub const __NR_remap_file_pages: u32 = 253;
-pub const __NR_set_tid_address: u32 = 256;
-pub const __NR_timer_create: u32 = 257;
-pub const __NR_timer_settime: u32 = 258;
-pub const __NR_timer_gettime: u32 = 259;
-pub const __NR_timer_getoverrun: u32 = 260;
-pub const __NR_timer_delete: u32 = 261;
-pub const __NR_clock_settime: u32 = 262;
-pub const __NR_clock_gettime: u32 = 263;
-pub const __NR_clock_getres: u32 = 264;
-pub const __NR_clock_nanosleep: u32 = 265;
-pub const __NR_statfs64: u32 = 266;
-pub const __NR_fstatfs64: u32 = 267;
-pub const __NR_tgkill: u32 = 268;
-pub const __NR_utimes: u32 = 269;
-pub const __NR_arm_fadvise64_64: u32 = 270;
-pub const __NR_pciconfig_iobase: u32 = 271;
-pub const __NR_pciconfig_read: u32 = 272;
-pub const __NR_pciconfig_write: u32 = 273;
-pub const __NR_mq_open: u32 = 274;
-pub const __NR_mq_unlink: u32 = 275;
-pub const __NR_mq_timedsend: u32 = 276;
-pub const __NR_mq_timedreceive: u32 = 277;
-pub const __NR_mq_notify: u32 = 278;
-pub const __NR_mq_getsetattr: u32 = 279;
-pub const __NR_waitid: u32 = 280;
-pub const __NR_socket: u32 = 281;
-pub const __NR_bind: u32 = 282;
-pub const __NR_connect: u32 = 283;
-pub const __NR_listen: u32 = 284;
-pub const __NR_accept: u32 = 285;
-pub const __NR_getsockname: u32 = 286;
-pub const __NR_getpeername: u32 = 287;
-pub const __NR_socketpair: u32 = 288;
-pub const __NR_send: u32 = 289;
-pub const __NR_sendto: u32 = 290;
-pub const __NR_recv: u32 = 291;
-pub const __NR_recvfrom: u32 = 292;
-pub const __NR_shutdown: u32 = 293;
-pub const __NR_setsockopt: u32 = 294;
-pub const __NR_getsockopt: u32 = 295;
-pub const __NR_sendmsg: u32 = 296;
-pub const __NR_recvmsg: u32 = 297;
-pub const __NR_semop: u32 = 298;
-pub const __NR_semget: u32 = 299;
-pub const __NR_semctl: u32 = 300;
-pub const __NR_msgsnd: u32 = 301;
-pub const __NR_msgrcv: u32 = 302;
-pub const __NR_msgget: u32 = 303;
-pub const __NR_msgctl: u32 = 304;
-pub const __NR_shmat: u32 = 305;
-pub const __NR_shmdt: u32 = 306;
-pub const __NR_shmget: u32 = 307;
-pub const __NR_shmctl: u32 = 308;
-pub const __NR_add_key: u32 = 309;
-pub const __NR_request_key: u32 = 310;
-pub const __NR_keyctl: u32 = 311;
-pub const __NR_semtimedop: u32 = 312;
-pub const __NR_vserver: u32 = 313;
-pub const __NR_ioprio_set: u32 = 314;
-pub const __NR_ioprio_get: u32 = 315;
-pub const __NR_inotify_init: u32 = 316;
-pub const __NR_inotify_add_watch: u32 = 317;
-pub const __NR_inotify_rm_watch: u32 = 318;
-pub const __NR_mbind: u32 = 319;
-pub const __NR_get_mempolicy: u32 = 320;
-pub const __NR_set_mempolicy: u32 = 321;
-pub const __NR_openat: u32 = 322;
-pub const __NR_mkdirat: u32 = 323;
-pub const __NR_mknodat: u32 = 324;
-pub const __NR_fchownat: u32 = 325;
-pub const __NR_futimesat: u32 = 326;
-pub const __NR_fstatat64: u32 = 327;
-pub const __NR_unlinkat: u32 = 328;
-pub const __NR_renameat: u32 = 329;
-pub const __NR_linkat: u32 = 330;
-pub const __NR_symlinkat: u32 = 331;
-pub const __NR_readlinkat: u32 = 332;
-pub const __NR_fchmodat: u32 = 333;
-pub const __NR_faccessat: u32 = 334;
-pub const __NR_pselect6: u32 = 335;
-pub const __NR_ppoll: u32 = 336;
-pub const __NR_unshare: u32 = 337;
-pub const __NR_set_robust_list: u32 = 338;
-pub const __NR_get_robust_list: u32 = 339;
-pub const __NR_splice: u32 = 340;
-pub const __NR_arm_sync_file_range: u32 = 341;
-pub const __NR_tee: u32 = 342;
-pub const __NR_vmsplice: u32 = 343;
-pub const __NR_move_pages: u32 = 344;
-pub const __NR_getcpu: u32 = 345;
-pub const __NR_epoll_pwait: u32 = 346;
-pub const __NR_kexec_load: u32 = 347;
-pub const __NR_utimensat: u32 = 348;
-pub const __NR_signalfd: u32 = 349;
-pub const __NR_timerfd_create: u32 = 350;
-pub const __NR_eventfd: u32 = 351;
-pub const __NR_fallocate: u32 = 352;
-pub const __NR_timerfd_settime: u32 = 353;
-pub const __NR_timerfd_gettime: u32 = 354;
-pub const __NR_signalfd4: u32 = 355;
-pub const __NR_eventfd2: u32 = 356;
-pub const __NR_epoll_create1: u32 = 357;
-pub const __NR_dup3: u32 = 358;
-pub const __NR_pipe2: u32 = 359;
-pub const __NR_inotify_init1: u32 = 360;
-pub const __NR_preadv: u32 = 361;
-pub const __NR_pwritev: u32 = 362;
-pub const __NR_rt_tgsigqueueinfo: u32 = 363;
-pub const __NR_perf_event_open: u32 = 364;
-pub const __NR_recvmmsg: u32 = 365;
-pub const __NR_accept4: u32 = 366;
-pub const __NR_fanotify_init: u32 = 367;
-pub const __NR_fanotify_mark: u32 = 368;
-pub const __NR_prlimit64: u32 = 369;
-pub const __NR_name_to_handle_at: u32 = 370;
-pub const __NR_open_by_handle_at: u32 = 371;
-pub const __NR_clock_adjtime: u32 = 372;
-pub const __NR_syncfs: u32 = 373;
-pub const __NR_sendmmsg: u32 = 374;
-pub const __NR_setns: u32 = 375;
-pub const __NR_process_vm_readv: u32 = 376;
-pub const __NR_process_vm_writev: u32 = 377;
-pub const __NR_kcmp: u32 = 378;
-pub const __NR_finit_module: u32 = 379;
-pub const __NR_sched_setattr: u32 = 380;
-pub const __NR_sched_getattr: u32 = 381;
-pub const __NR_renameat2: u32 = 382;
-pub const __NR_seccomp: u32 = 383;
-pub const __NR_getrandom: u32 = 384;
-pub const __NR_memfd_create: u32 = 385;
-pub const __NR_bpf: u32 = 386;
-pub const __NR_execveat: u32 = 387;
-pub const __NR_userfaultfd: u32 = 388;
-pub const __NR_membarrier: u32 = 389;
-pub const __NR_mlock2: u32 = 390;
-pub const __NR_copy_file_range: u32 = 391;
-pub const __NR_preadv2: u32 = 392;
-pub const __NR_pwritev2: u32 = 393;
-pub const __NR_pkey_mprotect: u32 = 394;
-pub const __NR_pkey_alloc: u32 = 395;
-pub const __NR_pkey_free: u32 = 396;
-pub const __NR_statx: u32 = 397;
-pub const __NR_rseq: u32 = 398;
-pub const __NR_io_pgetevents: u32 = 399;
-pub const __NR_migrate_pages: u32 = 400;
-pub const __NR_kexec_file_load: u32 = 401;
-pub const __NR_clock_gettime64: u32 = 403;
-pub const __NR_clock_settime64: u32 = 404;
-pub const __NR_clock_adjtime64: u32 = 405;
-pub const __NR_clock_getres_time64: u32 = 406;
-pub const __NR_clock_nanosleep_time64: u32 = 407;
-pub const __NR_timer_gettime64: u32 = 408;
-pub const __NR_timer_settime64: u32 = 409;
-pub const __NR_timerfd_gettime64: u32 = 410;
-pub const __NR_timerfd_settime64: u32 = 411;
-pub const __NR_utimensat_time64: u32 = 412;
-pub const __NR_pselect6_time64: u32 = 413;
-pub const __NR_ppoll_time64: u32 = 414;
-pub const __NR_io_pgetevents_time64: u32 = 416;
-pub const __NR_recvmmsg_time64: u32 = 417;
-pub const __NR_mq_timedsend_time64: u32 = 418;
-pub const __NR_mq_timedreceive_time64: u32 = 419;
-pub const __NR_semtimedop_time64: u32 = 420;
-pub const __NR_rt_sigtimedwait_time64: u32 = 421;
-pub const __NR_futex_time64: u32 = 422;
-pub const __NR_sched_rr_get_interval_time64: u32 = 423;
-pub const __NR_pidfd_send_signal: u32 = 424;
-pub const __NR_io_uring_setup: u32 = 425;
-pub const __NR_io_uring_enter: u32 = 426;
-pub const __NR_io_uring_register: u32 = 427;
-pub const __NR_open_tree: u32 = 428;
-pub const __NR_move_mount: u32 = 429;
-pub const __NR_fsopen: u32 = 430;
-pub const __NR_fsconfig: u32 = 431;
-pub const __NR_fsmount: u32 = 432;
-pub const __NR_fspick: u32 = 433;
-pub const __NR_pidfd_open: u32 = 434;
-pub const __NR_clone3: u32 = 435;
-pub const __NR_close_range: u32 = 436;
-pub const __NR_openat2: u32 = 437;
-pub const __NR_pidfd_getfd: u32 = 438;
-pub const __NR_faccessat2: u32 = 439;
-pub const __NR_process_madvise: u32 = 440;
-pub const __NR_epoll_pwait2: u32 = 441;
-pub const __NR_mount_setattr: u32 = 442;
-pub const __NR_quotactl_fd: u32 = 443;
-pub const __NR_landlock_create_ruleset: u32 = 444;
-pub const __NR_landlock_add_rule: u32 = 445;
-pub const __NR_landlock_restrict_self: u32 = 446;
-pub const __NR_process_mrelease: u32 = 448;
-pub const __NR_futex_waitv: u32 = 449;
-pub const __NR_set_mempolicy_home_node: u32 = 450;
-pub const __NR_sync_file_range2: u32 = 341;
-pub const __ARM_NR_BASE: u32 = 983040;
-pub const __ARM_NR_breakpoint: u32 = 983041;
-pub const __ARM_NR_cacheflush: u32 = 983042;
-pub const __ARM_NR_usr26: u32 = 983043;
-pub const __ARM_NR_usr32: u32 = 983044;
-pub const __ARM_NR_set_tls: u32 = 983045;
-pub const __ARM_NR_get_tls: u32 = 983046;
-pub const __OLD_UTS_LEN: u32 = 8;
-pub const __NEW_UTS_LEN: u32 = 64;
-pub const WNOHANG: u32 = 1;
-pub const WUNTRACED: u32 = 2;
-pub const WSTOPPED: u32 = 2;
-pub const WEXITED: u32 = 4;
-pub const WCONTINUED: u32 = 8;
-pub const WNOWAIT: u32 = 16777216;
-pub const __WNOTHREAD: u32 = 536870912;
-pub const __WALL: u32 = 1073741824;
-pub const __WCLONE: u32 = 2147483648;
-pub const P_ALL: u32 = 0;
-pub const P_PID: u32 = 1;
-pub const P_PGID: u32 = 2;
-pub const P_PIDFD: u32 = 3;
-pub const XATTR_CREATE: u32 = 1;
-pub const XATTR_REPLACE: u32 = 2;
-pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0";
-pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0";
-pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0";
-pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0";
-pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0";
-pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0";
-pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0";
-pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0";
-pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0";
-pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0";
-pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0";
-pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0";
-pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0";
-pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0";
-pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0";
-pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0";
-pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0";
-pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0";
-pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0";
-pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0";
-pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0";
-pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0";
-pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0";
-pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0";
-pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0";
-pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0";
-pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0";
-pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0";
-pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0";
-pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0";
-pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0";
-pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0";
-pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0";
-pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0";
-pub const MFD_CLOEXEC: u32 = 1;
-pub const MFD_ALLOW_SEALING: u32 = 2;
-pub const MFD_HUGETLB: u32 = 4;
-pub const MFD_HUGE_SHIFT: u32 = 26;
-pub const MFD_HUGE_MASK: u32 = 63;
-pub const MFD_HUGE_64KB: u32 = 1073741824;
-pub const MFD_HUGE_512KB: u32 = 1275068416;
-pub const MFD_HUGE_1MB: u32 = 1342177280;
-pub const MFD_HUGE_2MB: u32 = 1409286144;
-pub const MFD_HUGE_8MB: u32 = 1543503872;
-pub const MFD_HUGE_16MB: u32 = 1610612736;
-pub const MFD_HUGE_32MB: u32 = 1677721600;
-pub const MFD_HUGE_256MB: u32 = 1879048192;
-pub const MFD_HUGE_512MB: u32 = 1946157056;
-pub const MFD_HUGE_1GB: u32 = 2013265920;
-pub const MFD_HUGE_2GB: u32 = 2080374784;
-pub const MFD_HUGE_16GB: u32 = 2281701376;
-pub const TFD_TIMER_ABSTIME: u32 = 1;
-pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2;
-pub const TFD_CLOEXEC: u32 = 524288;
-pub const TFD_NONBLOCK: u32 = 2048;
-pub const USERFAULTFD_IOC: u32 = 170;
-pub const _UFFDIO_REGISTER: u32 = 0;
-pub const _UFFDIO_UNREGISTER: u32 = 1;
-pub const _UFFDIO_WAKE: u32 = 2;
-pub const _UFFDIO_COPY: u32 = 3;
-pub const _UFFDIO_ZEROPAGE: u32 = 4;
-pub const _UFFDIO_WRITEPROTECT: u32 = 6;
-pub const _UFFDIO_CONTINUE: u32 = 7;
-pub const _UFFDIO_API: u32 = 63;
-pub const UFFDIO: u32 = 170;
-pub const UFFD_EVENT_PAGEFAULT: u32 = 18;
-pub const UFFD_EVENT_FORK: u32 = 19;
-pub const UFFD_EVENT_REMAP: u32 = 20;
-pub const UFFD_EVENT_REMOVE: u32 = 21;
-pub const UFFD_EVENT_UNMAP: u32 = 22;
-pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1;
-pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2;
-pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4;
-pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1;
-pub const UFFD_FEATURE_EVENT_FORK: u32 = 2;
-pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4;
-pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8;
-pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16;
-pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32;
-pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64;
-pub const UFFD_FEATURE_SIGBUS: u32 = 128;
-pub const UFFD_FEATURE_THREAD_ID: u32 = 256;
-pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512;
-pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024;
-pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048;
-pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096;
-pub const UFFD_USER_MODE_ONLY: u32 = 1;
-pub const IORING_FILE_INDEX_ALLOC: i32 = -1;
-pub const IORING_SETUP_IOPOLL: u32 = 1;
-pub const IORING_SETUP_SQPOLL: u32 = 2;
-pub const IORING_SETUP_SQ_AFF: u32 = 4;
-pub const IORING_SETUP_CQSIZE: u32 = 8;
-pub const IORING_SETUP_CLAMP: u32 = 16;
-pub const IORING_SETUP_ATTACH_WQ: u32 = 32;
-pub const IORING_SETUP_R_DISABLED: u32 = 64;
-pub const IORING_SETUP_SUBMIT_ALL: u32 = 128;
-pub const IORING_SETUP_COOP_TASKRUN: u32 = 256;
-pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512;
-pub const IORING_SETUP_SQE128: u32 = 1024;
-pub const IORING_SETUP_CQE32: u32 = 2048;
-pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096;
-pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192;
-pub const IORING_URING_CMD_FIXED: u32 = 1;
-pub const IORING_FSYNC_DATASYNC: u32 = 1;
-pub const IORING_TIMEOUT_ABS: u32 = 1;
-pub const IORING_TIMEOUT_UPDATE: u32 = 2;
-pub const IORING_TIMEOUT_BOOTTIME: u32 = 4;
-pub const IORING_TIMEOUT_REALTIME: u32 = 8;
-pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16;
-pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32;
-pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12;
-pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18;
-pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648;
-pub const IORING_POLL_ADD_MULTI: u32 = 1;
-pub const IORING_POLL_UPDATE_EVENTS: u32 = 2;
-pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4;
-pub const IORING_POLL_ADD_LEVEL: u32 = 8;
-pub const IORING_ASYNC_CANCEL_ALL: u32 = 1;
-pub const IORING_ASYNC_CANCEL_FD: u32 = 2;
-pub const IORING_ASYNC_CANCEL_ANY: u32 = 4;
-pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8;
-pub const IORING_RECVSEND_POLL_FIRST: u32 = 1;
-pub const IORING_RECV_MULTISHOT: u32 = 2;
-pub const IORING_RECVSEND_FIXED_BUF: u32 = 4;
-pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8;
-pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648;
-pub const IORING_ACCEPT_MULTISHOT: u32 = 1;
-pub const IORING_MSG_RING_CQE_SKIP: u32 = 1;
-pub const IORING_CQE_F_BUFFER: u32 = 1;
-pub const IORING_CQE_F_MORE: u32 = 2;
-pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4;
-pub const IORING_CQE_F_NOTIF: u32 = 8;
-pub const IORING_OFF_SQ_RING: u32 = 0;
-pub const IORING_OFF_CQ_RING: u32 = 134217728;
-pub const IORING_OFF_SQES: u32 = 268435456;
-pub const IORING_SQ_NEED_WAKEUP: u32 = 1;
-pub const IORING_SQ_CQ_OVERFLOW: u32 = 2;
-pub const IORING_SQ_TASKRUN: u32 = 4;
-pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1;
-pub const IORING_ENTER_GETEVENTS: u32 = 1;
-pub const IORING_ENTER_SQ_WAKEUP: u32 = 2;
-pub const IORING_ENTER_SQ_WAIT: u32 = 4;
-pub const IORING_ENTER_EXT_ARG: u32 = 8;
-pub const IORING_ENTER_REGISTERED_RING: u32 = 16;
-pub const IORING_FEAT_SINGLE_MMAP: u32 = 1;
-pub const IORING_FEAT_NODROP: u32 = 2;
-pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4;
-pub const IORING_FEAT_RW_CUR_POS: u32 = 8;
-pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16;
-pub const IORING_FEAT_FAST_POLL: u32 = 32;
-pub const IORING_FEAT_POLL_32BITS: u32 = 64;
-pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128;
-pub const IORING_FEAT_EXT_ARG: u32 = 256;
-pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512;
-pub const IORING_FEAT_RSRC_TAGS: u32 = 1024;
-pub const IORING_FEAT_CQE_SKIP: u32 = 2048;
-pub const IORING_FEAT_LINKED_FILE: u32 = 4096;
-pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1;
-pub const IORING_REGISTER_FILES_SKIP: i32 = -2;
-pub const IO_URING_OP_SUPPORTED: u32 = 1;
-pub const DT_UNKNOWN: u32 = 0;
-pub const DT_FIFO: u32 = 1;
-pub const DT_CHR: u32 = 2;
-pub const DT_DIR: u32 = 4;
-pub const DT_BLK: u32 = 6;
-pub const DT_REG: u32 = 8;
-pub const DT_LNK: u32 = 10;
-pub const DT_SOCK: u32 = 12;
-pub const SHUT_RD: u32 = 0;
-pub const SHUT_WR: u32 = 1;
-pub const SHUT_RDWR: u32 = 2;
-pub const STAT64_HAS_BROKEN_ST_INO: u32 = 1;
-pub const SOCK_STREAM: u32 = 1;
-pub const SOCK_DGRAM: u32 = 2;
-pub const SOCK_RAW: u32 = 3;
-pub const SOCK_RDM: u32 = 4;
-pub const SOCK_SEQPACKET: u32 = 5;
-pub const F_OK: u32 = 0;
-pub const R_OK: u32 = 4;
-pub const W_OK: u32 = 2;
-pub const X_OK: u32 = 1;
-pub const UTIME_NOW: u32 = 1073741823;
-pub const UTIME_OMIT: u32 = 1073741822;
-pub const MSG_DONTWAIT: u32 = 64;
-pub const AF_UNSPEC: u32 = 0;
-pub const AF_UNIX: u32 = 1;
-pub const AF_INET: u32 = 2;
-pub const AF_AX25: u32 = 3;
-pub const AF_IPX: u32 = 4;
-pub const AF_APPLETALK: u32 = 5;
-pub const AF_NETROM: u32 = 6;
-pub const AF_BRIDGE: u32 = 7;
-pub const AF_ATMPVC: u32 = 8;
-pub const AF_X25: u32 = 9;
-pub const AF_INET6: u32 = 10;
-pub const AF_ROSE: u32 = 11;
-pub const AF_DECnet: u32 = 12;
-pub const AF_NETBEUI: u32 = 13;
-pub const AF_SECURITY: u32 = 14;
-pub const AF_KEY: u32 = 15;
-pub const AF_NETLINK: u32 = 16;
-pub const AF_PACKET: u32 = 17;
-pub const AF_ASH: u32 = 18;
-pub const AF_ECONET: u32 = 19;
-pub const AF_ATMSVC: u32 = 20;
-pub const AF_RDS: u32 = 21;
-pub const AF_SNA: u32 = 22;
-pub const AF_IRDA: u32 = 23;
-pub const AF_PPPOX: u32 = 24;
-pub const AF_WANPIPE: u32 = 25;
-pub const AF_LLC: u32 = 26;
-pub const AF_CAN: u32 = 29;
-pub const AF_TIPC: u32 = 30;
-pub const AF_BLUETOOTH: u32 = 31;
-pub const AF_IUCV: u32 = 32;
-pub const AF_RXRPC: u32 = 33;
-pub const AF_ISDN: u32 = 34;
-pub const AF_PHONET: u32 = 35;
-pub const AF_IEEE802154: u32 = 36;
-pub const AF_MAX: u32 = 37;
-pub const MSG_OOB: u32 = 1;
-pub const MSG_PEEK: u32 = 2;
-pub const MSG_DONTROUTE: u32 = 4;
-pub const MSG_CTRUNC: u32 = 8;
-pub const MSG_PROBE: u32 = 16;
-pub const MSG_TRUNC: u32 = 32;
-pub const MSG_EOR: u32 = 128;
-pub const MSG_WAITALL: u32 = 256;
-pub const MSG_FIN: u32 = 512;
-pub const MSG_SYN: u32 = 1024;
-pub const MSG_CONFIRM: u32 = 2048;
-pub const MSG_RST: u32 = 4096;
-pub const MSG_ERRQUEUE: u32 = 8192;
-pub const MSG_NOSIGNAL: u32 = 16384;
-pub const MSG_MORE: u32 = 32768;
-pub const MSG_CMSG_CLOEXEC: u32 = 1073741824;
-pub const STDIN_FILENO: u32 = 0;
-pub const STDOUT_FILENO: u32 = 1;
-pub const STDERR_FILENO: u32 = 2;
-pub const RWF_HIPRI: u32 = 1;
-pub const RWF_DSYNC: u32 = 2;
-pub const RWF_SYNC: u32 = 4;
-pub const RWF_NOWAIT: u32 = 8;
-pub const RWF_APPEND: u32 = 16;
-pub const EFD_SEMAPHORE: u32 = 1;
-pub const EFD_CLOEXEC: u32 = 524288;
-pub const EFD_NONBLOCK: u32 = 2048;
-pub const EPOLLIN: u32 = 1;
-pub const EPOLLPRI: u32 = 2;
-pub const EPOLLOUT: u32 = 4;
-pub const EPOLLERR: u32 = 8;
-pub const EPOLLHUP: u32 = 16;
-pub const EPOLLNVAL: u32 = 32;
-pub const EPOLLRDNORM: u32 = 64;
-pub const EPOLLRDBAND: u32 = 128;
-pub const EPOLLWRNORM: u32 = 256;
-pub const EPOLLWRBAND: u32 = 512;
-pub const EPOLLMSG: u32 = 1024;
-pub const EPOLLRDHUP: u32 = 8192;
-pub const EPOLLEXCLUSIVE: u32 = 268435456;
-pub const EPOLLWAKEUP: u32 = 536870912;
-pub const EPOLLONESHOT: u32 = 1073741824;
-pub const EPOLLET: u32 = 2147483648;
-pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336;
-pub const TFD_CREATE_FLAGS: u32 = 526336;
-pub const TFD_SETTIME_FLAGS: u32 = 1;
-pub const SCM_RIGHTS: u32 = 1;
-pub const SCM_CREDENTIALS: u32 = 2;
-pub const SCM_SECURITY: u32 = 3;
-pub const UFFD_API: u32 = 170;
-pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1;
-pub const UFFDIO_REGISTER_MODE_WP: u32 = 2;
-pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4;
-pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1;
-pub const UFFDIO_COPY_MODE_WP: u32 = 2;
-pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1;
-pub const SPLICE_F_MOVE: u32 = 1;
-pub const SPLICE_F_NONBLOCK: u32 = 2;
-pub const SPLICE_F_MORE: u32 = 4;
-pub const SPLICE_F_GIFT: u32 = 8;
-pub const MNT_FORCE: u32 = 1;
-pub const MNT_DETACH: u32 = 2;
-pub const MNT_EXPIRE: u32 = 4;
-pub const UMOUNT_NOFOLLOW: u32 = 8;
-pub const UMOUNT_UNUSED: u32 = 2147483648;
-pub type size_t = crate::ctypes::c_uint;
-pub type ssize_t = crate::ctypes::c_int;
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 32usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_mode_t = crate::ctypes::c_ushort;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort;
-pub type __kernel_uid_t = crate::ctypes::c_ushort;
-pub type __kernel_gid_t = crate::ctypes::c_ushort;
-pub type __kernel_old_dev_t = crate::ctypes::c_ushort;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_uid_t = __kernel_uid_t;
-pub type __kernel_old_gid_t = __kernel_gid_t;
-pub type __kernel_size_t = crate::ctypes::c_uint;
-pub type __kernel_ssize_t = crate::ctypes::c_int;
-pub type __kernel_ptrdiff_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_header_struct {
-pub version: __u32,
-pub pid: crate::ctypes::c_int,
-}
-pub type cap_user_header_t = *mut __user_cap_header_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_data_struct {
-pub effective: __u32,
-pub permitted: __u32,
-pub inheritable: __u32,
-}
-pub type cap_user_data_t = *mut __user_cap_data_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_cap_data__bindgen_ty_1; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize],
-pub rootid: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct f_owner_ex {
-pub type_: crate::ctypes::c_int,
-pub pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_off_t,
-pub l_len: __kernel_off_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock64 {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_loff_t,
-pub l_len: __kernel_loff_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct open_how {
-pub flags: __u64,
-pub mode: __u64,
-pub resolve: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct epoll_event {
-pub events: __poll_t,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v1 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub master_key_descriptor: [__u8; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_key {
-pub mode: __u32,
-pub raw: [__u8; 64usize],
-pub size: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v2 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub __reserved: [__u8; 4usize],
-pub master_key_identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_policy_ex_arg {
-pub policy_size: __u64,
-pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 {
-pub version: __u8,
-pub v1: fscrypt_policy_v1,
-pub v2: fscrypt_policy_v2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_key_specifier {
-pub type_: __u32,
-pub __reserved: __u32,
-pub u: fscrypt_key_specifier__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_key_specifier__bindgen_ty_1 {
-pub __reserved: [__u8; 32usize],
-pub descriptor: [__u8; 8usize],
-pub identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct fscrypt_provisioning_key_payload {
-pub type_: __u32,
-pub __reserved: __u32,
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-pub struct fscrypt_add_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub raw_size: __u32,
-pub key_id: __u32,
-pub __reserved: [__u32; 8usize],
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_remove_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub removal_status_flags: __u32,
-pub __reserved: [__u32; 5usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_key_status_arg {
-pub key_spec: fscrypt_key_specifier,
-pub __reserved: [__u32; 6usize],
-pub status: __u32,
-pub status_flags: __u32,
-pub user_count: __u32,
-pub __out_reserved: [__u32; 13usize],
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum fsconfig_command {
-FSCONFIG_SET_FLAG = 0,
-FSCONFIG_SET_STRING = 1,
-FSCONFIG_SET_BINARY = 2,
-FSCONFIG_SET_PATH = 3,
-FSCONFIG_SET_PATH_EMPTY = 4,
-FSCONFIG_SET_FD = 5,
-FSCONFIG_CMD_CREATE = 6,
-FSCONFIG_CMD_RECONFIGURE = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mount_attr {
-pub attr_set: __u64,
-pub attr_clr: __u64,
-pub propagation: __u64,
-pub userns_fd: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_clone_range {
-pub src_fd: __s64,
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_offset: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fstrim_range {
-pub start: __u64,
-pub len: __u64,
-pub minlen: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_dedupe_range_info {
-pub dest_fd: __s64,
-pub dest_offset: __u64,
-pub bytes_deduped: __u64,
-pub status: __s32,
-pub reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct file_dedupe_range {
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_count: __u16,
-pub reserved1: __u16,
-pub reserved2: __u32,
-pub info: __IncompleteArrayField<file_dedupe_range_info>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct files_stat_struct {
-pub nr_files: crate::ctypes::c_ulong,
-pub nr_free_files: crate::ctypes::c_ulong,
-pub max_files: crate::ctypes::c_ulong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct inodes_stat_t {
-pub nr_inodes: crate::ctypes::c_long,
-pub nr_unused: crate::ctypes::c_long,
-pub dummy: [crate::ctypes::c_long; 5usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fsxattr {
-pub fsx_xflags: __u32,
-pub fsx_extsize: __u32,
-pub fsx_nextents: __u32,
-pub fsx_projid: __u32,
-pub fsx_cowextsize: __u32,
-pub fsx_pad: [crate::ctypes::c_uchar; 8usize],
-}
-pub type __kernel_rwf_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct futex_waitv {
-pub val: __u64,
-pub uaddr: __u64,
-pub flags: __u32,
-pub __reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list {
-pub next: *mut robust_list,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list_head {
-pub list: robust_list,
-pub futex_offset: crate::ctypes::c_long,
-pub list_op_pending: *mut robust_list,
-}
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP;
-pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP;
-pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP;
-pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP;
-pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP;
-pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP;
-pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP;
-pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP;
-pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP;
-pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP;
-pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP;
-pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6;
-pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP;
-pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE;
-pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP;
-pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH;
-pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP;
-pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH;
-pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP;
-pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM;
-pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP;
-pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP;
-pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP;
-pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE;
-pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS;
-pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET;
-pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW;
-pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP;
-pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-IPPROTO_IP = 0,
-IPPROTO_ICMP = 1,
-IPPROTO_IGMP = 2,
-IPPROTO_IPIP = 4,
-IPPROTO_TCP = 6,
-IPPROTO_EGP = 8,
-IPPROTO_PUP = 12,
-IPPROTO_UDP = 17,
-IPPROTO_IDP = 22,
-IPPROTO_TP = 29,
-IPPROTO_DCCP = 33,
-IPPROTO_IPV6 = 41,
-IPPROTO_RSVP = 46,
-IPPROTO_GRE = 47,
-IPPROTO_ESP = 50,
-IPPROTO_AH = 51,
-IPPROTO_MTP = 92,
-IPPROTO_BEETPH = 94,
-IPPROTO_ENCAP = 98,
-IPPROTO_PIM = 103,
-IPPROTO_COMP = 108,
-IPPROTO_L2TP = 115,
-IPPROTO_SCTP = 132,
-IPPROTO_UDPLITE = 136,
-IPPROTO_MPLS = 137,
-IPPROTO_ETHERNET = 143,
-IPPROTO_RAW = 255,
-IPPROTO_MPTCP = 262,
-IPPROTO_MAX = 263,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_addr {
-pub s_addr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq {
-pub imr_multiaddr: in_addr,
-pub imr_interface: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreqn {
-pub imr_multiaddr: in_addr,
-pub imr_address: in_addr,
-pub imr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq_source {
-pub imr_multiaddr: __be32,
-pub imr_interface: __be32,
-pub imr_sourceaddr: __be32,
-}
-#[repr(C)]
-pub struct ip_msfilter {
-pub imsf_multiaddr: __be32,
-pub imsf_interface: __be32,
-pub imsf_fmode: __u32,
-pub imsf_numsrc: __u32,
-pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct ip_msfilter__bindgen_ty_1 {
-pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>,
-pub __bindgen_anon_1: __BindgenUnionField<ip_msfilter__bindgen_ty_1__bindgen_ty_1>,
-pub bindgen_union_field: u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 {
-pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-pub imsf_slist_flex: __IncompleteArrayField<__be32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_req {
-pub gr_interface: __u32,
-pub gr_group: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_source_req {
-pub gsr_interface: __u32,
-pub gsr_group: __kernel_sockaddr_storage,
-pub gsr_source: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-pub struct group_filter {
-pub __bindgen_anon_1: group_filter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_1>,
-pub __bindgen_anon_2: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_2>,
-pub bindgen_union_field: [u32; 67usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_1 {
-pub gf_interface_aux: __u32,
-pub gf_group_aux: __kernel_sockaddr_storage,
-pub gf_fmode_aux: __u32,
-pub gf_numsrc_aux: __u32,
-pub gf_slist: [__kernel_sockaddr_storage; 1usize],
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_2 {
-pub gf_interface: __u32,
-pub gf_group: __kernel_sockaddr_storage,
-pub gf_fmode: __u32,
-pub gf_numsrc: __u32,
-pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_pktinfo {
-pub ipi_ifindex: crate::ctypes::c_int,
-pub ipi_spec_dst: in_addr,
-pub ipi_addr: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_in {
-pub sin_family: __kernel_sa_family_t,
-pub sin_port: __be16,
-pub sin_addr: in_addr,
-pub __pad: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct inotify_event {
-pub wd: __s32,
-pub mask: __u32,
-pub cookie: __u32,
-pub len: __u32,
-pub name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct iphdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub tos: __u8,
-pub tot_len: __be16,
-pub id: __be16,
-pub frag_off: __be16,
-pub ttl: __u8,
-pub protocol: __u8,
-pub check: __sum16,
-pub __bindgen_anon_1: iphdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union iphdr__bindgen_ty_1 {
-pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-impl iphdr {
-#[inline]
-pub fn ihl(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_ihl(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let ihl: u8 = unsafe { ::core::mem::transmute(ihl) };
-ihl as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_auth_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub reserved: __be16,
-pub spi: __be32,
-pub seq_no: __be32,
-pub auth_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_esp_hdr {
-pub spi: __be32,
-pub seq_no: __be32,
-pub enc_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_comp_hdr {
-pub nexthdr: __u8,
-pub flags: __u8,
-pub cpi: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_beet_phdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub padlen: __u8,
-pub reserved: __u8,
-}
-pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING;
-pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING;
-pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP;
-pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS;
-pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS;
-pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS;
-pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA;
-pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER;
-pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY;
-pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS;
-pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG;
-pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER;
-pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID;
-pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM;
-pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY;
-pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION;
-pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE;
-pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE;
-pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES;
-pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT;
-pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY;
-pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL;
-pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK;
-pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN;
-pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET;
-pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP;
-pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING;
-pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER;
-pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IPV4_DEVCONF_FORWARDING = 1,
-IPV4_DEVCONF_MC_FORWARDING = 2,
-IPV4_DEVCONF_PROXY_ARP = 3,
-IPV4_DEVCONF_ACCEPT_REDIRECTS = 4,
-IPV4_DEVCONF_SECURE_REDIRECTS = 5,
-IPV4_DEVCONF_SEND_REDIRECTS = 6,
-IPV4_DEVCONF_SHARED_MEDIA = 7,
-IPV4_DEVCONF_RP_FILTER = 8,
-IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9,
-IPV4_DEVCONF_BOOTP_RELAY = 10,
-IPV4_DEVCONF_LOG_MARTIANS = 11,
-IPV4_DEVCONF_TAG = 12,
-IPV4_DEVCONF_ARPFILTER = 13,
-IPV4_DEVCONF_MEDIUM_ID = 14,
-IPV4_DEVCONF_NOXFRM = 15,
-IPV4_DEVCONF_NOPOLICY = 16,
-IPV4_DEVCONF_FORCE_IGMP_VERSION = 17,
-IPV4_DEVCONF_ARP_ANNOUNCE = 18,
-IPV4_DEVCONF_ARP_IGNORE = 19,
-IPV4_DEVCONF_PROMOTE_SECONDARIES = 20,
-IPV4_DEVCONF_ARP_ACCEPT = 21,
-IPV4_DEVCONF_ARP_NOTIFY = 22,
-IPV4_DEVCONF_ACCEPT_LOCAL = 23,
-IPV4_DEVCONF_SRC_VMARK = 24,
-IPV4_DEVCONF_PROXY_ARP_PVLAN = 25,
-IPV4_DEVCONF_ROUTE_LOCALNET = 26,
-IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27,
-IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28,
-IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29,
-IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30,
-IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31,
-IPV4_DEVCONF_BC_FORWARDING = 32,
-IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33,
-__IPV4_DEVCONF_MAX = 34,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_addr {
-pub in6_u: in6_addr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union in6_addr__bindgen_ty_1 {
-pub u6_addr8: [__u8; 16usize],
-pub u6_addr16: [__be16; 8usize],
-pub u6_addr32: [__be32; 4usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr_in6 {
-pub sin6_family: crate::ctypes::c_ushort,
-pub sin6_port: __be16,
-pub sin6_flowinfo: __be32,
-pub sin6_addr: in6_addr,
-pub sin6_scope_id: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6_mreq {
-pub ipv6mr_multiaddr: in6_addr,
-pub ipv6mr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_flowlabel_req {
-pub flr_dst: in6_addr,
-pub flr_label: __be32,
-pub flr_action: __u8,
-pub flr_share: __u8,
-pub flr_flags: __u16,
-pub flr_expires: __u16,
-pub flr_linger: __u16,
-pub __flr_pad: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_pktinfo {
-pub ipi6_addr: in6_addr,
-pub ipi6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ip6_mtuinfo {
-pub ip6m_addr: sockaddr_in6,
-pub ip6m_mtu: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_ifreq {
-pub ifr6_addr: in6_addr,
-pub ifr6_prefixlen: __u32,
-pub ifr6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_rt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub type_: __u8,
-pub segments_left: __u8,
-}
-#[repr(C, packed)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_opt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-}
-#[repr(C)]
-pub struct rt0_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: __IncompleteArrayField<in6_addr>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rt2_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: in6_addr,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct ipv6_destopt_hao {
-pub type_: __u8,
-pub length: __u8,
-pub addr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub flow_lbl: [__u8; 3usize],
-pub payload_len: __be16,
-pub nexthdr: __u8,
-pub hop_limit: __u8,
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union ipv6hdr__bindgen_ty_1 {
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-impl ipv6hdr {
-#[inline]
-pub fn priority(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_priority(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let priority: u8 = unsafe { ::core::mem::transmute(priority) };
-priority as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING;
-pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT;
-pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6;
-pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA;
-pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS;
-pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF;
-pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS;
-pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS;
-pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL;
-pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY;
-pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR;
-pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT;
-pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT;
-pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY;
-pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR;
-pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES;
-pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION;
-pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR;
-pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO;
-pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF;
-pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN;
-pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP;
-pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD;
-pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING;
-pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6;
-pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD;
-pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO;
-pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY;
-pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC;
-pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL;
-pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC;
-pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU;
-pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET;
-pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY;
-pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT;
-pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA;
-pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN;
-pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL;
-pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED;
-pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC;
-pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD;
-pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE;
-pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN;
-pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS;
-pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED;
-pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC;
-pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED;
-pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID;
-pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE;
-pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER;
-pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA;
-pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-DEVCONF_FORWARDING = 0,
-DEVCONF_HOPLIMIT = 1,
-DEVCONF_MTU6 = 2,
-DEVCONF_ACCEPT_RA = 3,
-DEVCONF_ACCEPT_REDIRECTS = 4,
-DEVCONF_AUTOCONF = 5,
-DEVCONF_DAD_TRANSMITS = 6,
-DEVCONF_RTR_SOLICITS = 7,
-DEVCONF_RTR_SOLICIT_INTERVAL = 8,
-DEVCONF_RTR_SOLICIT_DELAY = 9,
-DEVCONF_USE_TEMPADDR = 10,
-DEVCONF_TEMP_VALID_LFT = 11,
-DEVCONF_TEMP_PREFERED_LFT = 12,
-DEVCONF_REGEN_MAX_RETRY = 13,
-DEVCONF_MAX_DESYNC_FACTOR = 14,
-DEVCONF_MAX_ADDRESSES = 15,
-DEVCONF_FORCE_MLD_VERSION = 16,
-DEVCONF_ACCEPT_RA_DEFRTR = 17,
-DEVCONF_ACCEPT_RA_PINFO = 18,
-DEVCONF_ACCEPT_RA_RTR_PREF = 19,
-DEVCONF_RTR_PROBE_INTERVAL = 20,
-DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21,
-DEVCONF_PROXY_NDP = 22,
-DEVCONF_OPTIMISTIC_DAD = 23,
-DEVCONF_ACCEPT_SOURCE_ROUTE = 24,
-DEVCONF_MC_FORWARDING = 25,
-DEVCONF_DISABLE_IPV6 = 26,
-DEVCONF_ACCEPT_DAD = 27,
-DEVCONF_FORCE_TLLAO = 28,
-DEVCONF_NDISC_NOTIFY = 29,
-DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30,
-DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31,
-DEVCONF_SUPPRESS_FRAG_NDISC = 32,
-DEVCONF_ACCEPT_RA_FROM_LOCAL = 33,
-DEVCONF_USE_OPTIMISTIC = 34,
-DEVCONF_ACCEPT_RA_MTU = 35,
-DEVCONF_STABLE_SECRET = 36,
-DEVCONF_USE_OIF_ADDRS_ONLY = 37,
-DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38,
-DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39,
-DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40,
-DEVCONF_DROP_UNSOLICITED_NA = 41,
-DEVCONF_KEEP_ADDR_ON_DOWN = 42,
-DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43,
-DEVCONF_SEG6_ENABLED = 44,
-DEVCONF_SEG6_REQUIRE_HMAC = 45,
-DEVCONF_ENHANCED_DAD = 46,
-DEVCONF_ADDR_GEN_MODE = 47,
-DEVCONF_DISABLE_POLICY = 48,
-DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49,
-DEVCONF_NDISC_TCLASS = 50,
-DEVCONF_RPL_SEG_ENABLED = 51,
-DEVCONF_RA_DEFRTR_METRIC = 52,
-DEVCONF_IOAM6_ENABLED = 53,
-DEVCONF_IOAM6_ID = 54,
-DEVCONF_IOAM6_ID_WIDE = 55,
-DEVCONF_NDISC_EVICT_NOCARRIER = 56,
-DEVCONF_ACCEPT_UNTRACKED_NA = 57,
-DEVCONF_MAX = 58,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum socket_state {
-SS_FREE = 0,
-SS_UNCONNECTED = 1,
-SS_CONNECTING = 2,
-SS_CONNECTED = 3,
-SS_DISCONNECTING = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct pollfd {
-pub fd: crate::ctypes::c_int,
-pub events: crate::ctypes::c_short,
-pub revents: crate::ctypes::c_short,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prctl_mm_map {
-pub start_code: __u64,
-pub end_code: __u64,
-pub start_data: __u64,
-pub end_data: __u64,
-pub start_brk: __u64,
-pub brk: __u64,
-pub start_stack: __u64,
-pub arg_start: __u64,
-pub arg_end: __u64,
-pub env_start: __u64,
-pub env_end: __u64,
-pub auxv: *mut __u64,
-pub auxv_size: __u32,
-pub exe_fd: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rand_pool_info {
-pub entropy_count: crate::ctypes::c_int,
-pub buf_size: crate::ctypes::c_int,
-pub buf: __IncompleteArrayField<__u32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_timespec {
-pub tv_sec: __kernel_time64_t,
-pub tv_nsec: crate::ctypes::c_longlong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_itimerspec {
-pub it_interval: __kernel_timespec,
-pub it_value: __kernel_timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timeval {
-pub tv_sec: __kernel_long_t,
-pub tv_usec: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_itimerval {
-pub it_interval: __kernel_old_timeval,
-pub it_value: __kernel_old_timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sock_timeval {
-pub tv_sec: __s64,
-pub tv_usec: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timeval {
-pub tv_sec: __kernel_old_time_t,
-pub tv_usec: __kernel_suseconds_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerspec {
-pub it_interval: timespec,
-pub it_value: timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerval {
-pub it_interval: timeval,
-pub it_value: timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timezone {
-pub tz_minuteswest: crate::ctypes::c_int,
-pub tz_dsttime: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rusage {
-pub ru_utime: __kernel_old_timeval,
-pub ru_stime: __kernel_old_timeval,
-pub ru_maxrss: __kernel_long_t,
-pub ru_ixrss: __kernel_long_t,
-pub ru_idrss: __kernel_long_t,
-pub ru_isrss: __kernel_long_t,
-pub ru_minflt: __kernel_long_t,
-pub ru_majflt: __kernel_long_t,
-pub ru_nswap: __kernel_long_t,
-pub ru_inblock: __kernel_long_t,
-pub ru_oublock: __kernel_long_t,
-pub ru_msgsnd: __kernel_long_t,
-pub ru_msgrcv: __kernel_long_t,
-pub ru_nsignals: __kernel_long_t,
-pub ru_nvcsw: __kernel_long_t,
-pub ru_nivcsw: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit {
-pub rlim_cur: __kernel_ulong_t,
-pub rlim_max: __kernel_ulong_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit64 {
-pub rlim_cur: __u64,
-pub rlim_max: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct clone_args {
-pub flags: __u64,
-pub pidfd: __u64,
-pub child_tid: __u64,
-pub parent_tid: __u64,
-pub exit_signal: __u64,
-pub stack: __u64,
-pub stack_size: __u64,
-pub tls: __u64,
-pub set_tid: __u64,
-pub set_tid_size: __u64,
-pub cgroup: __u64,
-}
-pub type sigset_t = crate::ctypes::c_ulong;
-pub type __signalfn_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __sighandler_t = __signalfn_t;
-pub type __restorefn_t = ::core::option::Option<unsafe extern "C" fn()>;
-pub type __sigrestore_t = __restorefn_t;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sigaction {
-pub _u: sigaction__bindgen_ty_1,
-pub sa_mask: sigset_t,
-pub sa_flags: crate::ctypes::c_ulong,
-pub sa_restorer: ::core::option::Option<unsafe extern "C" fn()>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigaction__bindgen_ty_1 {
-pub _sa_handler: __sighandler_t,
-pub _sa_sigaction: ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int, arg2: *mut siginfo, arg3: *mut crate::ctypes::c_void)>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaltstack {
-pub ss_sp: *mut crate::ctypes::c_void,
-pub ss_flags: crate::ctypes::c_int,
-pub ss_size: __kernel_size_t,
-}
-pub type stack_t = sigaltstack;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigval {
-pub sival_int: crate::ctypes::c_int,
-pub sival_ptr: *mut crate::ctypes::c_void,
-}
-pub type sigval_t = sigval;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields {
-pub _kill: __sifields__bindgen_ty_1,
-pub _timer: __sifields__bindgen_ty_2,
-pub _rt: __sifields__bindgen_ty_3,
-pub _sigchld: __sifields__bindgen_ty_4,
-pub _sigfault: __sifields__bindgen_ty_5,
-pub _sigpoll: __sifields__bindgen_ty_6,
-pub _sigsys: __sifields__bindgen_ty_7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_1 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_2 {
-pub _tid: __kernel_timer_t,
-pub _overrun: crate::ctypes::c_int,
-pub _sigval: sigval_t,
-pub _sys_private: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_3 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _sigval: sigval_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_4 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _status: crate::ctypes::c_int,
-pub _utime: __kernel_clock_t,
-pub _stime: __kernel_clock_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_5 {
-pub _addr: *mut crate::ctypes::c_void,
-pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields__bindgen_ty_5__bindgen_ty_1 {
-pub _trapno: crate::ctypes::c_int,
-pub _addr_lsb: crate::ctypes::c_short,
-pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1,
-pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2,
-pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {
-pub _dummy_bnd: [crate::ctypes::c_char; 4usize],
-pub _lower: *mut crate::ctypes::c_void,
-pub _upper: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 {
-pub _dummy_pkey: [crate::ctypes::c_char; 4usize],
-pub _pkey: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 {
-pub _data: crate::ctypes::c_ulong,
-pub _type: __u32,
-pub _flags: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_6 {
-pub _band: crate::ctypes::c_long,
-pub _fd: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_7 {
-pub _call_addr: *mut crate::ctypes::c_void,
-pub _syscall: crate::ctypes::c_int,
-pub _arch: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union siginfo__bindgen_ty_1 {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1,
-pub _si_pad: [crate::ctypes::c_int; 32usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo__bindgen_ty_1__bindgen_ty_1 {
-pub si_signo: crate::ctypes::c_int,
-pub si_errno: crate::ctypes::c_int,
-pub si_code: crate::ctypes::c_int,
-pub _sifields: __sifields,
-}
-pub type siginfo_t = siginfo;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sigevent {
-pub sigev_value: sigval_t,
-pub sigev_signo: crate::ctypes::c_int,
-pub sigev_notify: crate::ctypes::c_int,
-pub _sigev_un: sigevent__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigevent__bindgen_ty_1 {
-pub _pad: [crate::ctypes::c_int; 13usize],
-pub _tid: crate::ctypes::c_int,
-pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigevent__bindgen_ty_1__bindgen_ty_1 {
-pub _function: ::core::option::Option<unsafe extern "C" fn(arg1: sigval_t)>,
-pub _attribute: *mut crate::ctypes::c_void,
-}
-pub type sigevent_t = sigevent;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx_timestamp {
-pub tv_sec: __s64,
-pub tv_nsec: __u32,
-pub __reserved: __s32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx {
-pub stx_mask: __u32,
-pub stx_blksize: __u32,
-pub stx_attributes: __u64,
-pub stx_nlink: __u32,
-pub stx_uid: __u32,
-pub stx_gid: __u32,
-pub stx_mode: __u16,
-pub __spare0: [__u16; 1usize],
-pub stx_ino: __u64,
-pub stx_size: __u64,
-pub stx_blocks: __u64,
-pub stx_attributes_mask: __u64,
-pub stx_atime: statx_timestamp,
-pub stx_btime: statx_timestamp,
-pub stx_ctime: statx_timestamp,
-pub stx_mtime: statx_timestamp,
-pub stx_rdev_major: __u32,
-pub stx_rdev_minor: __u32,
-pub stx_dev_major: __u32,
-pub stx_dev_minor: __u32,
-pub stx_mnt_id: __u64,
-pub stx_dio_mem_align: __u32,
-pub stx_dio_offset_align: __u32,
-pub __spare3: [__u64; 12usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sysinfo {
-pub uptime: __kernel_long_t,
-pub loads: [__kernel_ulong_t; 3usize],
-pub totalram: __kernel_ulong_t,
-pub freeram: __kernel_ulong_t,
-pub sharedram: __kernel_ulong_t,
-pub bufferram: __kernel_ulong_t,
-pub totalswap: __kernel_ulong_t,
-pub freeswap: __kernel_ulong_t,
-pub procs: __u16,
-pub pad: __u16,
-pub totalhigh: __kernel_ulong_t,
-pub freehigh: __kernel_ulong_t,
-pub mem_unit: __u32,
-pub _f: [crate::ctypes::c_char; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcphdr {
-pub source: __be16,
-pub dest: __be16,
-pub seq: __be32,
-pub ack_seq: __be32,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub window: __be16,
-pub check: __sum16,
-pub urg_ptr: __be16,
-}
-impl tcphdr {
-#[inline]
-pub fn res1(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_res1(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn doff(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_doff(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn fin(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_fin(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn syn(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_syn(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn rst(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_rst(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(10usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn psh(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_psh(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(11usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ack(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ack(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(12usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn urg(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_urg(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(13usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ece(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ece(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(14usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn cwr(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_cwr(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(15usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let res1: u16 = unsafe { ::core::mem::transmute(res1) };
-res1 as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let doff: u16 = unsafe { ::core::mem::transmute(doff) };
-doff as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let fin: u16 = unsafe { ::core::mem::transmute(fin) };
-fin as u64
-});
-__bindgen_bitfield_unit.set(9usize, 1u8, {
-let syn: u16 = unsafe { ::core::mem::transmute(syn) };
-syn as u64
-});
-__bindgen_bitfield_unit.set(10usize, 1u8, {
-let rst: u16 = unsafe { ::core::mem::transmute(rst) };
-rst as u64
-});
-__bindgen_bitfield_unit.set(11usize, 1u8, {
-let psh: u16 = unsafe { ::core::mem::transmute(psh) };
-psh as u64
-});
-__bindgen_bitfield_unit.set(12usize, 1u8, {
-let ack: u16 = unsafe { ::core::mem::transmute(ack) };
-ack as u64
-});
-__bindgen_bitfield_unit.set(13usize, 1u8, {
-let urg: u16 = unsafe { ::core::mem::transmute(urg) };
-urg as u64
-});
-__bindgen_bitfield_unit.set(14usize, 1u8, {
-let ece: u16 = unsafe { ::core::mem::transmute(ece) };
-ece as u64
-});
-__bindgen_bitfield_unit.set(15usize, 1u8, {
-let cwr: u16 = unsafe { ::core::mem::transmute(cwr) };
-cwr as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union tcp_word_hdr {
-pub hdr: tcphdr,
-pub words: [__be32; 5usize],
-}
-pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR;
-pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE;
-pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG;
-pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK;
-pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH;
-pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST;
-pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN;
-pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN;
-pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS;
-pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-TCP_FLAG_CWR = 32768,
-TCP_FLAG_ECE = 16384,
-TCP_FLAG_URG = 8192,
-TCP_FLAG_ACK = 4096,
-TCP_FLAG_PSH = 2048,
-TCP_FLAG_RST = 1024,
-TCP_FLAG_SYN = 512,
-TCP_FLAG_FIN = 256,
-TCP_RESERVED_BITS = 15,
-TCP_DATA_OFFSET = 240,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_opt {
-pub opt_code: __u32,
-pub opt_val: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_window {
-pub snd_wl1: __u32,
-pub snd_wnd: __u32,
-pub max_window: __u32,
-pub rcv_wnd: __u32,
-pub rcv_wup: __u32,
-}
-pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE;
-pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE;
-pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE;
-pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-TCP_NO_QUEUE = 0,
-TCP_RECV_QUEUE = 1,
-TCP_SEND_QUEUE = 2,
-TCP_QUEUES_NR = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_fastopen_client_fail {
-TFO_STATUS_UNSPEC = 0,
-TFO_COOKIE_UNAVAILABLE = 1,
-TFO_DATA_NOT_ACKED = 2,
-TFO_SYN_RETRANSMITTED = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_ca_state {
-TCP_CA_Open = 0,
-TCP_CA_Disorder = 1,
-TCP_CA_CWR = 2,
-TCP_CA_Recovery = 3,
-TCP_CA_Loss = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_info {
-pub tcpi_state: __u8,
-pub tcpi_ca_state: __u8,
-pub tcpi_retransmits: __u8,
-pub tcpi_probes: __u8,
-pub tcpi_backoff: __u8,
-pub tcpi_options: __u8,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub tcpi_rto: __u32,
-pub tcpi_ato: __u32,
-pub tcpi_snd_mss: __u32,
-pub tcpi_rcv_mss: __u32,
-pub tcpi_unacked: __u32,
-pub tcpi_sacked: __u32,
-pub tcpi_lost: __u32,
-pub tcpi_retrans: __u32,
-pub tcpi_fackets: __u32,
-pub tcpi_last_data_sent: __u32,
-pub tcpi_last_ack_sent: __u32,
-pub tcpi_last_data_recv: __u32,
-pub tcpi_last_ack_recv: __u32,
-pub tcpi_pmtu: __u32,
-pub tcpi_rcv_ssthresh: __u32,
-pub tcpi_rtt: __u32,
-pub tcpi_rttvar: __u32,
-pub tcpi_snd_ssthresh: __u32,
-pub tcpi_snd_cwnd: __u32,
-pub tcpi_advmss: __u32,
-pub tcpi_reordering: __u32,
-pub tcpi_rcv_rtt: __u32,
-pub tcpi_rcv_space: __u32,
-pub tcpi_total_retrans: __u32,
-pub tcpi_pacing_rate: __u64,
-pub tcpi_max_pacing_rate: __u64,
-pub tcpi_bytes_acked: __u64,
-pub tcpi_bytes_received: __u64,
-pub tcpi_segs_out: __u32,
-pub tcpi_segs_in: __u32,
-pub tcpi_notsent_bytes: __u32,
-pub tcpi_min_rtt: __u32,
-pub tcpi_data_segs_in: __u32,
-pub tcpi_data_segs_out: __u32,
-pub tcpi_delivery_rate: __u64,
-pub tcpi_busy_time: __u64,
-pub tcpi_rwnd_limited: __u64,
-pub tcpi_sndbuf_limited: __u64,
-pub tcpi_delivered: __u32,
-pub tcpi_delivered_ce: __u32,
-pub tcpi_bytes_sent: __u64,
-pub tcpi_bytes_retrans: __u64,
-pub tcpi_dsack_dups: __u32,
-pub tcpi_reord_seen: __u32,
-pub tcpi_rcv_ooopack: __u32,
-pub tcpi_snd_wnd: __u32,
-pub tcpi_rcv_wnd: __u32,
-pub tcpi_rehash: __u32,
-}
-impl tcp_info {
-#[inline]
-pub fn tcpi_snd_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_snd_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_rcv_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_fastopen_client_fail(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) };
-tcpi_snd_wscale as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) };
-tcpi_rcv_wscale as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) };
-tcpi_delivery_rate_app_limited as u64
-});
-__bindgen_bitfield_unit.set(9usize, 2u8, {
-let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) };
-tcpi_fastopen_client_fail as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD;
-pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY;
-pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED;
-pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED;
-pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT;
-pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS;
-pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE;
-pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE;
-pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND;
-pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING;
-pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT;
-pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS;
-pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT;
-pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE;
-pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE;
-pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH;
-pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED;
-pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE;
-pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT;
-pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS;
-pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS;
-pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN;
-pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT;
-pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH;
-pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT;
-pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
-pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
-pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-TCP_NLA_PAD = 0,
-TCP_NLA_BUSY = 1,
-TCP_NLA_RWND_LIMITED = 2,
-TCP_NLA_SNDBUF_LIMITED = 3,
-TCP_NLA_DATA_SEGS_OUT = 4,
-TCP_NLA_TOTAL_RETRANS = 5,
-TCP_NLA_PACING_RATE = 6,
-TCP_NLA_DELIVERY_RATE = 7,
-TCP_NLA_SND_CWND = 8,
-TCP_NLA_REORDERING = 9,
-TCP_NLA_MIN_RTT = 10,
-TCP_NLA_RECUR_RETRANS = 11,
-TCP_NLA_DELIVERY_RATE_APP_LMT = 12,
-TCP_NLA_SNDQ_SIZE = 13,
-TCP_NLA_CA_STATE = 14,
-TCP_NLA_SND_SSTHRESH = 15,
-TCP_NLA_DELIVERED = 16,
-TCP_NLA_DELIVERED_CE = 17,
-TCP_NLA_BYTES_SENT = 18,
-TCP_NLA_BYTES_RETRANS = 19,
-TCP_NLA_DSACK_DUPS = 20,
-TCP_NLA_REORD_SEEN = 21,
-TCP_NLA_SRTT = 22,
-TCP_NLA_TIMEOUT_REHASH = 23,
-TCP_NLA_BYTES_NOTSENT = 24,
-TCP_NLA_EDT = 25,
-TCP_NLA_TTL = 26,
-TCP_NLA_REHASH = 27,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct tcp_md5sig {
-pub tcpm_addr: __kernel_sockaddr_storage,
-pub tcpm_flags: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_ifindex: crate::ctypes::c_int,
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_diag_md5sig {
-pub tcpm_family: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_addr: [__be32; 4usize],
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_zerocopy_receive {
-pub address: __u64,
-pub length: __u32,
-pub recv_skip_hint: __u32,
-pub inq: __u32,
-pub err: __s32,
-pub copybuf_address: __u64,
-pub copybuf_len: __s32,
-pub flags: __u32,
-pub msg_control: __u64,
-pub msg_controllen: __u64,
-pub msg_flags: __u32,
-pub reserved: __u32,
-}
-pub type cc_t = crate::ctypes::c_uchar;
-pub type speed_t = crate::ctypes::c_uint;
-pub type tcflag_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios2 {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ktermios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct winsize {
-pub ws_row: crate::ctypes::c_ushort,
-pub ws_col: crate::ctypes::c_ushort,
-pub ws_xpixel: crate::ctypes::c_ushort,
-pub ws_ypixel: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termio {
-pub c_iflag: crate::ctypes::c_ushort,
-pub c_oflag: crate::ctypes::c_ushort,
-pub c_cflag: crate::ctypes::c_ushort,
-pub c_lflag: crate::ctypes::c_ushort,
-pub c_line: crate::ctypes::c_uchar,
-pub c_cc: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iovec {
-pub iov_base: *mut crate::ctypes::c_void,
-pub iov_len: __kernel_size_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_un {
-pub sun_family: __kernel_sa_family_t,
-pub sun_path: [crate::ctypes::c_char; 108usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct oldold_utsname {
-pub sysname: [crate::ctypes::c_char; 9usize],
-pub nodename: [crate::ctypes::c_char; 9usize],
-pub release: [crate::ctypes::c_char; 9usize],
-pub version: [crate::ctypes::c_char; 9usize],
-pub machine: [crate::ctypes::c_char; 9usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct old_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct new_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-pub domainname: [crate::ctypes::c_char; 65usize],
-}
-impl membarrier_cmd {
-pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd {
-MEMBARRIER_CMD_QUERY = 0,
-MEMBARRIER_CMD_GLOBAL = 1,
-MEMBARRIER_CMD_GLOBAL_EXPEDITED = 2,
-MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = 4,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED = 8,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = 16,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = 32,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = 64,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = 128,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = 256,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd_flag {
-MEMBARRIER_CMD_FLAG_CPU = 1,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg {
-pub event: __u8,
-pub reserved1: __u8,
-pub reserved2: __u16,
-pub reserved3: __u32,
-pub arg: uffd_msg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1 {
-pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1,
-pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2,
-pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3,
-pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4,
-pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 {
-pub flags: __u64,
-pub address: __u64,
-pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {
-pub ptid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 {
-pub ufd: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 {
-pub from: __u64,
-pub to: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 {
-pub start: __u64,
-pub end: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 {
-pub reserved1: __u64,
-pub reserved2: __u64,
-pub reserved3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_api {
-pub api: __u64,
-pub features: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_range {
-pub start: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_register {
-pub range: uffdio_range,
-pub mode: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_copy {
-pub dst: __u64,
-pub src: __u64,
-pub len: __u64,
-pub mode: __u64,
-pub copy: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_zeropage {
-pub range: uffdio_range,
-pub mode: __u64,
-pub zeropage: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_writeprotect {
-pub range: uffdio_range,
-pub mode: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_continue {
-pub range: uffdio_range,
-pub mode: __u64,
-pub mapped: __s64,
-}
-#[repr(C)]
-pub struct io_uring_sqe {
-pub opcode: __u8,
-pub flags: __u8,
-pub ioprio: __u16,
-pub fd: __s32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1,
-pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2,
-pub len: __u32,
-pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3,
-pub user_data: __u64,
-pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4,
-pub personality: __u16,
-pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5,
-pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_1 {
-pub off: __u64,
-pub addr2: __u64,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 {
-pub cmd_op: __u32,
-pub __pad1: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_2 {
-pub addr: __u64,
-pub splice_off_in: __u64,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_3 {
-pub rw_flags: __kernel_rwf_t,
-pub fsync_flags: __u32,
-pub poll_events: __u16,
-pub poll32_events: __u32,
-pub sync_range_flags: __u32,
-pub msg_flags: __u32,
-pub timeout_flags: __u32,
-pub accept_flags: __u32,
-pub cancel_flags: __u32,
-pub open_flags: __u32,
-pub statx_flags: __u32,
-pub fadvise_advice: __u32,
-pub splice_flags: __u32,
-pub rename_flags: __u32,
-pub unlink_flags: __u32,
-pub hardlink_flags: __u32,
-pub xattr_flags: __u32,
-pub msg_ring_flags: __u32,
-pub uring_cmd_flags: __u32,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_4 {
-pub buf_index: __u16,
-pub buf_group: __u16,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_5 {
-pub splice_fd_in: __s32,
-pub file_index: __u32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 {
-pub addr_len: __u16,
-pub __pad3: [__u16; 1usize],
-}
-#[repr(C)]
-pub struct io_uring_sqe__bindgen_ty_6 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_sqe__bindgen_ty_6__bindgen_ty_1>,
-pub cmd: __BindgenUnionField<[__u8; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 {
-pub addr3: __u64,
-pub __pad2: [__u64; 1usize],
-}
-pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT;
-pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT;
-pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT;
-pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT;
-pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT;
-pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT;
-pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-IOSQE_FIXED_FILE_BIT = 0,
-IOSQE_IO_DRAIN_BIT = 1,
-IOSQE_IO_LINK_BIT = 2,
-IOSQE_IO_HARDLINK_BIT = 3,
-IOSQE_ASYNC_BIT = 4,
-IOSQE_BUFFER_SELECT_BIT = 5,
-IOSQE_CQE_SKIP_SUCCESS_BIT = 6,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum io_uring_op {
-IORING_OP_NOP = 0,
-IORING_OP_READV = 1,
-IORING_OP_WRITEV = 2,
-IORING_OP_FSYNC = 3,
-IORING_OP_READ_FIXED = 4,
-IORING_OP_WRITE_FIXED = 5,
-IORING_OP_POLL_ADD = 6,
-IORING_OP_POLL_REMOVE = 7,
-IORING_OP_SYNC_FILE_RANGE = 8,
-IORING_OP_SENDMSG = 9,
-IORING_OP_RECVMSG = 10,
-IORING_OP_TIMEOUT = 11,
-IORING_OP_TIMEOUT_REMOVE = 12,
-IORING_OP_ACCEPT = 13,
-IORING_OP_ASYNC_CANCEL = 14,
-IORING_OP_LINK_TIMEOUT = 15,
-IORING_OP_CONNECT = 16,
-IORING_OP_FALLOCATE = 17,
-IORING_OP_OPENAT = 18,
-IORING_OP_CLOSE = 19,
-IORING_OP_FILES_UPDATE = 20,
-IORING_OP_STATX = 21,
-IORING_OP_READ = 22,
-IORING_OP_WRITE = 23,
-IORING_OP_FADVISE = 24,
-IORING_OP_MADVISE = 25,
-IORING_OP_SEND = 26,
-IORING_OP_RECV = 27,
-IORING_OP_OPENAT2 = 28,
-IORING_OP_EPOLL_CTL = 29,
-IORING_OP_SPLICE = 30,
-IORING_OP_PROVIDE_BUFFERS = 31,
-IORING_OP_REMOVE_BUFFERS = 32,
-IORING_OP_TEE = 33,
-IORING_OP_SHUTDOWN = 34,
-IORING_OP_RENAMEAT = 35,
-IORING_OP_UNLINKAT = 36,
-IORING_OP_MKDIRAT = 37,
-IORING_OP_SYMLINKAT = 38,
-IORING_OP_LINKAT = 39,
-IORING_OP_MSG_RING = 40,
-IORING_OP_FSETXATTR = 41,
-IORING_OP_SETXATTR = 42,
-IORING_OP_FGETXATTR = 43,
-IORING_OP_GETXATTR = 44,
-IORING_OP_SOCKET = 45,
-IORING_OP_URING_CMD = 46,
-IORING_OP_SEND_ZC = 47,
-IORING_OP_SENDMSG_ZC = 48,
-IORING_OP_LAST = 49,
-}
-pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA;
-pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IORING_MSG_DATA = 0,
-IORING_MSG_SEND_FD = 1,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_cqe {
-pub user_data: __u64,
-pub res: __s32,
-pub flags: __u32,
-pub big_cqe: __IncompleteArrayField<__u64>,
-}
-pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IORING_CQE_BUFFER_SHIFT = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_sqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub flags: __u32,
-pub dropped: __u32,
-pub array: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_cqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub overflow: __u32,
-pub cqes: __u32,
-pub flags: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_params {
-pub sq_entries: __u32,
-pub cq_entries: __u32,
-pub flags: __u32,
-pub sq_thread_cpu: __u32,
-pub sq_thread_idle: __u32,
-pub features: __u32,
-pub wq_fd: __u32,
-pub resv: [__u32; 3usize],
-pub sq_off: io_sqring_offsets,
-pub cq_off: io_cqring_offsets,
-}
-pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS;
-pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS;
-pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES;
-pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES;
-pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD;
-pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD;
-pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE;
-pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC;
-pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE;
-pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY;
-pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY;
-pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS;
-pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS;
-pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2;
-pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2;
-pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2;
-pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE;
-pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF;
-pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF;
-pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS;
-pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS;
-pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS;
-pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING;
-pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING;
-pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL;
-pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE;
-pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IORING_REGISTER_BUFFERS = 0,
-IORING_UNREGISTER_BUFFERS = 1,
-IORING_REGISTER_FILES = 2,
-IORING_UNREGISTER_FILES = 3,
-IORING_REGISTER_EVENTFD = 4,
-IORING_UNREGISTER_EVENTFD = 5,
-IORING_REGISTER_FILES_UPDATE = 6,
-IORING_REGISTER_EVENTFD_ASYNC = 7,
-IORING_REGISTER_PROBE = 8,
-IORING_REGISTER_PERSONALITY = 9,
-IORING_UNREGISTER_PERSONALITY = 10,
-IORING_REGISTER_RESTRICTIONS = 11,
-IORING_REGISTER_ENABLE_RINGS = 12,
-IORING_REGISTER_FILES2 = 13,
-IORING_REGISTER_FILES_UPDATE2 = 14,
-IORING_REGISTER_BUFFERS2 = 15,
-IORING_REGISTER_BUFFERS_UPDATE = 16,
-IORING_REGISTER_IOWQ_AFF = 17,
-IORING_UNREGISTER_IOWQ_AFF = 18,
-IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
-IORING_REGISTER_RING_FDS = 20,
-IORING_UNREGISTER_RING_FDS = 21,
-IORING_REGISTER_PBUF_RING = 22,
-IORING_UNREGISTER_PBUF_RING = 23,
-IORING_REGISTER_SYNC_CANCEL = 24,
-IORING_REGISTER_FILE_ALLOC_RANGE = 25,
-IORING_REGISTER_LAST = 26,
-}
-pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND;
-pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IO_WQ_BOUND = 0,
-IO_WQ_UNBOUND = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_files_update {
-pub offset: __u32,
-pub resv: __u32,
-pub fds: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_register {
-pub nr: __u32,
-pub flags: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub tags: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update2 {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-pub tags: __u64,
-pub nr: __u32,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_slot {
-pub tag: __u64,
-pub resv: [__u64; 3usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_register {
-pub nr_slots: __u32,
-pub resv: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub resv3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_probe_op {
-pub op: __u8,
-pub resv: __u8,
-pub flags: __u16,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_probe {
-pub last_op: __u8,
-pub ops_len: __u8,
-pub resv: __u16,
-pub resv2: [__u32; 3usize],
-pub ops: __IncompleteArrayField<io_uring_probe_op>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct io_uring_restriction {
-pub opcode: __u16,
-pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1,
-pub resv: __u8,
-pub resv2: [__u32; 3usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_restriction__bindgen_ty_1 {
-pub register_op: __u8,
-pub sqe_op: __u8,
-pub sqe_flags: __u8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf {
-pub addr: __u64,
-pub len: __u32,
-pub bid: __u16,
-pub resv: __u16,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring {
-pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1>,
-pub bufs: __BindgenUnionField<[io_uring_buf; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 {
-pub resv1: __u64,
-pub resv2: __u32,
-pub resv3: __u16,
-pub tail: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_reg {
-pub ring_addr: __u64,
-pub ring_entries: __u32,
-pub bgid: __u16,
-pub pad: __u16,
-pub resv: [__u64; 3usize],
-}
-pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP;
-pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP;
-pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED;
-pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED;
-pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IORING_RESTRICTION_REGISTER_OP = 0,
-IORING_RESTRICTION_SQE_OP = 1,
-IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2,
-IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3,
-IORING_RESTRICTION_LAST = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_getevents_arg {
-pub sigmask: __u64,
-pub sigmask_sz: __u32,
-pub pad: __u32,
-pub ts: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sync_cancel_reg {
-pub addr: __u64,
-pub fd: __s32,
-pub flags: __u32,
-pub timeout: __kernel_timespec,
-pub pad: [__u64; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_file_index_range {
-pub off: __u32,
-pub len: __u32,
-pub resv: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_recvmsg_out {
-pub namelen: __u32,
-pub controllen: __u32,
-pub payloadlen: __u32,
-pub flags: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr {
-pub __storage: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct linger {
-pub l_onoff: crate::ctypes::c_int,
-pub l_linger: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct linux_dirent64 {
-pub d_ino: crate::ctypes::c_ulonglong,
-pub d_off: crate::ctypes::c_longlong,
-pub d_reclen: __u16,
-pub d_type: __u8,
-pub d_name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-pub type socklen_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __old_kernel_stat {
-pub st_dev: crate::ctypes::c_ushort,
-pub st_ino: crate::ctypes::c_ushort,
-pub st_mode: crate::ctypes::c_ushort,
-pub st_nlink: crate::ctypes::c_ushort,
-pub st_uid: crate::ctypes::c_ushort,
-pub st_gid: crate::ctypes::c_ushort,
-pub st_rdev: crate::ctypes::c_ushort,
-pub st_size: crate::ctypes::c_ulong,
-pub st_atime: crate::ctypes::c_ulong,
-pub st_mtime: crate::ctypes::c_ulong,
-pub st_ctime: crate::ctypes::c_ulong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct stat {
-pub st_dev: crate::ctypes::c_ulong,
-pub st_ino: crate::ctypes::c_ulong,
-pub st_mode: crate::ctypes::c_ushort,
-pub st_nlink: crate::ctypes::c_ushort,
-pub st_uid: crate::ctypes::c_ushort,
-pub st_gid: crate::ctypes::c_ushort,
-pub st_rdev: crate::ctypes::c_ulong,
-pub st_size: crate::ctypes::c_ulong,
-pub st_blksize: crate::ctypes::c_ulong,
-pub st_blocks: crate::ctypes::c_ulong,
-pub st_atime: crate::ctypes::c_ulong,
-pub st_atime_nsec: crate::ctypes::c_ulong,
-pub st_mtime: crate::ctypes::c_ulong,
-pub st_mtime_nsec: crate::ctypes::c_ulong,
-pub st_ctime: crate::ctypes::c_ulong,
-pub st_ctime_nsec: crate::ctypes::c_ulong,
-pub __unused4: crate::ctypes::c_ulong,
-pub __unused5: crate::ctypes::c_ulong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct stat64 {
-pub st_dev: crate::ctypes::c_ulonglong,
-pub __pad0: [crate::ctypes::c_uchar; 4usize],
-pub __st_ino: crate::ctypes::c_ulong,
-pub st_mode: crate::ctypes::c_uint,
-pub st_nlink: crate::ctypes::c_uint,
-pub st_uid: crate::ctypes::c_ulong,
-pub st_gid: crate::ctypes::c_ulong,
-pub st_rdev: crate::ctypes::c_ulonglong,
-pub __pad3: [crate::ctypes::c_uchar; 4usize],
-pub st_size: crate::ctypes::c_longlong,
-pub st_blksize: crate::ctypes::c_ulong,
-pub st_blocks: crate::ctypes::c_ulonglong,
-pub st_atime: crate::ctypes::c_ulong,
-pub st_atime_nsec: crate::ctypes::c_ulong,
-pub st_mtime: crate::ctypes::c_ulong,
-pub st_mtime_nsec: crate::ctypes::c_ulong,
-pub st_ctime: crate::ctypes::c_ulong,
-pub st_ctime_nsec: crate::ctypes::c_ulong,
-pub st_ino: crate::ctypes::c_ulonglong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u32,
-pub f_bfree: __u32,
-pub f_bavail: __u32,
-pub f_files: __u32,
-pub f_ffree: __u32,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-#[repr(C, packed(4))]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs64 {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct compat_statfs64 {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-pub type __fsword_t = __u32;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct user_desc {
-pub entry_number: crate::ctypes::c_uint,
-pub base_addr: crate::ctypes::c_uint,
-pub limit: crate::ctypes::c_uint,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub __bindgen_padding_0: [u8; 3usize],
-}
-impl user_desc {
-#[inline]
-pub fn seg_32bit(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_32bit(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn contents(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 2u8) as u32) }
-}
-#[inline]
-pub fn set_contents(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(1usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn read_exec_only(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_read_exec_only(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(3usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn limit_in_pages(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_limit_in_pages(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn seg_not_present(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_not_present(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(5usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn useable(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_useable(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(6usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(seg_32bit: crate::ctypes::c_uint, contents: crate::ctypes::c_uint, read_exec_only: crate::ctypes::c_uint, limit_in_pages: crate::ctypes::c_uint, seg_not_present: crate::ctypes::c_uint, useable: crate::ctypes::c_uint) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 1u8, {
-let seg_32bit: u32 = unsafe { ::core::mem::transmute(seg_32bit) };
-seg_32bit as u64
-});
-__bindgen_bitfield_unit.set(1usize, 2u8, {
-let contents: u32 = unsafe { ::core::mem::transmute(contents) };
-contents as u64
-});
-__bindgen_bitfield_unit.set(3usize, 1u8, {
-let read_exec_only: u32 = unsafe { ::core::mem::transmute(read_exec_only) };
-read_exec_only as u64
-});
-__bindgen_bitfield_unit.set(4usize, 1u8, {
-let limit_in_pages: u32 = unsafe { ::core::mem::transmute(limit_in_pages) };
-limit_in_pages as u64
-});
-__bindgen_bitfield_unit.set(5usize, 1u8, {
-let seg_not_present: u32 = unsafe { ::core::mem::transmute(seg_not_present) };
-seg_not_present as u64
-});
-__bindgen_bitfield_unit.set(6usize, 1u8, {
-let useable: u32 = unsafe { ::core::mem::transmute(useable) };
-useable as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct msghdr {
-pub msg_name: *mut crate::ctypes::c_void,
-pub msg_namelen: crate::ctypes::c_int,
-pub msg_iov: *mut iovec,
-pub msg_iovlen: size_t,
-pub msg_control: *mut crate::ctypes::c_void,
-pub msg_controllen: size_t,
-pub msg_flags: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct cmsghdr {
-pub cmsg_len: size_t,
-pub cmsg_level: crate::ctypes::c_int,
-pub cmsg_type: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ucred {
-pub pid: __u32,
-pub uid: __u32,
-pub gid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mmsghdr {
-pub msg_hdr: msghdr,
-pub msg_len: crate::ctypes::c_uint,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/arm/ioctl.rs b/vendor/linux-raw-sys-0.3.2/src/arm/ioctl.rs
deleted file mode 100644
index a858397da..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/arm/ioctl.rs
+++ /dev/null
@@ -1,1465 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const FIONREAD: u32 = 21531;
-pub const FIONBIO: u32 = 21537;
-pub const FIOCLEX: u32 = 21585;
-pub const FIONCLEX: u32 = 21584;
-pub const FIOASYNC: u32 = 21586;
-pub const FIOQSIZE: u32 = 21598;
-pub const TCXONC: u32 = 21514;
-pub const TCFLSH: u32 = 21515;
-pub const TIOCSCTTY: u32 = 21518;
-pub const TIOCSPGRP: u32 = 21520;
-pub const TIOCOUTQ: u32 = 21521;
-pub const TIOCSTI: u32 = 21522;
-pub const TIOCSWINSZ: u32 = 21524;
-pub const TIOCMGET: u32 = 21525;
-pub const TIOCMBIS: u32 = 21526;
-pub const TIOCMBIC: u32 = 21527;
-pub const TIOCMSET: u32 = 21528;
-pub const TIOCSSOFTCAR: u32 = 21530;
-pub const TIOCLINUX: u32 = 21532;
-pub const TIOCCONS: u32 = 21533;
-pub const TIOCSSERIAL: u32 = 21535;
-pub const TIOCPKT: u32 = 21536;
-pub const TIOCNOTTY: u32 = 21538;
-pub const TIOCSETD: u32 = 21539;
-pub const TIOCSBRK: u32 = 21543;
-pub const TIOCCBRK: u32 = 21544;
-pub const TIOCSRS485: u32 = 21551;
-pub const TIOCSPTLCK: u32 = 1074025521;
-pub const TIOCSIG: u32 = 1074025526;
-pub const TIOCVHANGUP: u32 = 21559;
-pub const TIOCSERCONFIG: u32 = 21587;
-pub const TIOCSERGWILD: u32 = 21588;
-pub const TIOCSERSWILD: u32 = 21589;
-pub const TIOCSLCKTRMIOS: u32 = 21591;
-pub const TIOCSERGSTRUCT: u32 = 21592;
-pub const TIOCSERGETLSR: u32 = 21593;
-pub const TIOCSERGETMULTI: u32 = 21594;
-pub const TIOCSERSETMULTI: u32 = 21595;
-pub const TIOCMIWAIT: u32 = 21596;
-pub const TCGETS: u32 = 21505;
-pub const TCGETA: u32 = 21509;
-pub const TCSBRK: u32 = 21513;
-pub const TCSBRKP: u32 = 21541;
-pub const TCSETA: u32 = 21510;
-pub const TCSETAF: u32 = 21512;
-pub const TCSETAW: u32 = 21511;
-pub const TIOCEXCL: u32 = 21516;
-pub const TIOCNXCL: u32 = 21517;
-pub const TIOCGDEV: u32 = 2147767346;
-pub const TIOCGEXCL: u32 = 2147767360;
-pub const TIOCGICOUNT: u32 = 21597;
-pub const TIOCGLCKTRMIOS: u32 = 21590;
-pub const TIOCGPGRP: u32 = 21519;
-pub const TIOCGPKT: u32 = 2147767352;
-pub const TIOCGPTLCK: u32 = 2147767353;
-pub const TIOCGPTN: u32 = 2147767344;
-pub const TIOCGPTPEER: u32 = 21569;
-pub const TIOCGRS485: u32 = 21550;
-pub const TIOCGSERIAL: u32 = 21534;
-pub const TIOCGSID: u32 = 21545;
-pub const TIOCGSOFTCAR: u32 = 21529;
-pub const TIOCGWINSZ: u32 = 21523;
-pub const TCGETS2: u32 = 2150388778;
-pub const TCGETX: u32 = 21554;
-pub const TCSETS: u32 = 21506;
-pub const TCSETS2: u32 = 1076646955;
-pub const TCSETSF: u32 = 21508;
-pub const TCSETSF2: u32 = 1076646957;
-pub const TCSETSW: u32 = 21507;
-pub const TCSETSW2: u32 = 1076646956;
-pub const TCSETX: u32 = 21555;
-pub const TCSETXF: u32 = 21556;
-pub const TCSETXW: u32 = 21557;
-pub const TIOCGETD: u32 = 21540;
-pub const MTIOCGET: u32 = 2149346562;
-pub const BLKSSZGET: u32 = 4712;
-pub const BLKPBSZGET: u32 = 4731;
-pub const BLKROSET: u32 = 4701;
-pub const BLKROGET: u32 = 4702;
-pub const BLKRRPART: u32 = 4703;
-pub const BLKGETSIZE: u32 = 4704;
-pub const BLKFLSBUF: u32 = 4705;
-pub const BLKRASET: u32 = 4706;
-pub const BLKRAGET: u32 = 4707;
-pub const BLKFRASET: u32 = 4708;
-pub const BLKFRAGET: u32 = 4709;
-pub const BLKSECTSET: u32 = 4710;
-pub const BLKSECTGET: u32 = 4711;
-pub const BLKPG: u32 = 4713;
-pub const BLKBSZGET: u32 = 2147750512;
-pub const BLKBSZSET: u32 = 1074008689;
-pub const BLKGETSIZE64: u32 = 2147750514;
-pub const BLKTRACESETUP: u32 = 3225948787;
-pub const BLKTRACESTART: u32 = 4724;
-pub const BLKTRACESTOP: u32 = 4725;
-pub const BLKTRACETEARDOWN: u32 = 4726;
-pub const BLKDISCARD: u32 = 4727;
-pub const BLKIOMIN: u32 = 4728;
-pub const BLKIOOPT: u32 = 4729;
-pub const BLKALIGNOFF: u32 = 4730;
-pub const BLKDISCARDZEROES: u32 = 4732;
-pub const BLKSECDISCARD: u32 = 4733;
-pub const BLKROTATIONAL: u32 = 4734;
-pub const BLKZEROOUT: u32 = 4735;
-pub const UFFDIO_REGISTER: u32 = 3223366144;
-pub const UFFDIO_UNREGISTER: u32 = 2148575745;
-pub const UFFDIO_WAKE: u32 = 2148575746;
-pub const UFFDIO_COPY: u32 = 3223890435;
-pub const UFFDIO_ZEROPAGE: u32 = 3223366148;
-pub const UFFDIO_WRITEPROTECT: u32 = 3222841862;
-pub const UFFDIO_API: u32 = 3222841919;
-pub const NS_GET_USERNS: u32 = 46849;
-pub const NS_GET_PARENT: u32 = 46850;
-pub const NS_GET_NSTYPE: u32 = 46851;
-pub const KDGETLED: u32 = 19249;
-pub const KDSETLED: u32 = 19250;
-pub const KDGKBLED: u32 = 19300;
-pub const KDSKBLED: u32 = 19301;
-pub const KDGKBTYPE: u32 = 19251;
-pub const KDADDIO: u32 = 19252;
-pub const KDDELIO: u32 = 19253;
-pub const KDENABIO: u32 = 19254;
-pub const KDDISABIO: u32 = 19255;
-pub const KDSETMODE: u32 = 19258;
-pub const KDGETMODE: u32 = 19259;
-pub const KDMKTONE: u32 = 19248;
-pub const KIOCSOUND: u32 = 19247;
-pub const GIO_CMAP: u32 = 19312;
-pub const PIO_CMAP: u32 = 19313;
-pub const GIO_FONT: u32 = 19296;
-pub const GIO_FONTX: u32 = 19307;
-pub const PIO_FONT: u32 = 19297;
-pub const PIO_FONTX: u32 = 19308;
-pub const PIO_FONTRESET: u32 = 19309;
-pub const GIO_SCRNMAP: u32 = 19264;
-pub const GIO_UNISCRNMAP: u32 = 19305;
-pub const PIO_SCRNMAP: u32 = 19265;
-pub const PIO_UNISCRNMAP: u32 = 19306;
-pub const GIO_UNIMAP: u32 = 19302;
-pub const PIO_UNIMAP: u32 = 19303;
-pub const PIO_UNIMAPCLR: u32 = 19304;
-pub const KDGKBMODE: u32 = 19268;
-pub const KDSKBMODE: u32 = 19269;
-pub const KDGKBMETA: u32 = 19298;
-pub const KDSKBMETA: u32 = 19299;
-pub const KDGKBENT: u32 = 19270;
-pub const KDSKBENT: u32 = 19271;
-pub const KDGKBSENT: u32 = 19272;
-pub const KDSKBSENT: u32 = 19273;
-pub const KDGKBDIACR: u32 = 19274;
-pub const KDGETKEYCODE: u32 = 19276;
-pub const KDSETKEYCODE: u32 = 19277;
-pub const KDSIGACCEPT: u32 = 19278;
-pub const VT_OPENQRY: u32 = 22016;
-pub const VT_GETMODE: u32 = 22017;
-pub const VT_SETMODE: u32 = 22018;
-pub const VT_GETSTATE: u32 = 22019;
-pub const VT_RELDISP: u32 = 22021;
-pub const VT_ACTIVATE: u32 = 22022;
-pub const VT_WAITACTIVE: u32 = 22023;
-pub const VT_DISALLOCATE: u32 = 22024;
-pub const VT_RESIZE: u32 = 22025;
-pub const VT_RESIZEX: u32 = 22026;
-pub const FIOSETOWN: u32 = 35073;
-pub const SIOCSPGRP: u32 = 35074;
-pub const FIOGETOWN: u32 = 35075;
-pub const SIOCGPGRP: u32 = 35076;
-pub const SIOCATMARK: u32 = 35077;
-pub const SIOCGSTAMP: u32 = 35078;
-pub const TIOCINQ: u32 = 21531;
-pub const SIOCADDRT: u32 = 35083;
-pub const SIOCDELRT: u32 = 35084;
-pub const SIOCGIFNAME: u32 = 35088;
-pub const SIOCSIFLINK: u32 = 35089;
-pub const SIOCGIFCONF: u32 = 35090;
-pub const SIOCGIFFLAGS: u32 = 35091;
-pub const SIOCSIFFLAGS: u32 = 35092;
-pub const SIOCGIFADDR: u32 = 35093;
-pub const SIOCSIFADDR: u32 = 35094;
-pub const SIOCGIFDSTADDR: u32 = 35095;
-pub const SIOCSIFDSTADDR: u32 = 35096;
-pub const SIOCGIFBRDADDR: u32 = 35097;
-pub const SIOCSIFBRDADDR: u32 = 35098;
-pub const SIOCGIFNETMASK: u32 = 35099;
-pub const SIOCSIFNETMASK: u32 = 35100;
-pub const SIOCGIFMETRIC: u32 = 35101;
-pub const SIOCSIFMETRIC: u32 = 35102;
-pub const SIOCGIFMEM: u32 = 35103;
-pub const SIOCSIFMEM: u32 = 35104;
-pub const SIOCGIFMTU: u32 = 35105;
-pub const SIOCSIFMTU: u32 = 35106;
-pub const SIOCSIFHWADDR: u32 = 35108;
-pub const SIOCGIFENCAP: u32 = 35109;
-pub const SIOCSIFENCAP: u32 = 35110;
-pub const SIOCGIFHWADDR: u32 = 35111;
-pub const SIOCGIFSLAVE: u32 = 35113;
-pub const SIOCSIFSLAVE: u32 = 35120;
-pub const SIOCADDMULTI: u32 = 35121;
-pub const SIOCDELMULTI: u32 = 35122;
-pub const SIOCDARP: u32 = 35155;
-pub const SIOCGARP: u32 = 35156;
-pub const SIOCSARP: u32 = 35157;
-pub const SIOCDRARP: u32 = 35168;
-pub const SIOCGRARP: u32 = 35169;
-pub const SIOCSRARP: u32 = 35170;
-pub const SIOCGIFMAP: u32 = 35184;
-pub const SIOCSIFMAP: u32 = 35185;
-pub const SIOCRTMSG: u32 = 35085;
-pub const SIOCSIFNAME: u32 = 35107;
-pub const SIOCGIFINDEX: u32 = 35123;
-pub const SIOGIFINDEX: u32 = 35123;
-pub const SIOCSIFPFLAGS: u32 = 35124;
-pub const SIOCGIFPFLAGS: u32 = 35125;
-pub const SIOCDIFADDR: u32 = 35126;
-pub const SIOCSIFHWBROADCAST: u32 = 35127;
-pub const SIOCGIFCOUNT: u32 = 35128;
-pub const SIOCGIFBR: u32 = 35136;
-pub const SIOCSIFBR: u32 = 35137;
-pub const SIOCGIFTXQLEN: u32 = 35138;
-pub const SIOCSIFTXQLEN: u32 = 35139;
-pub const SIOCADDDLCI: u32 = 35200;
-pub const SIOCDELDLCI: u32 = 35201;
-pub const SIOCDEVPRIVATE: u32 = 35312;
-pub const SIOCPROTOPRIVATE: u32 = 35296;
-pub const FIBMAP: u32 = 1;
-pub const FIGETBSZ: u32 = 2;
-pub const FIFREEZE: u32 = 3221510263;
-pub const FITHAW: u32 = 3221510264;
-pub const FITRIM: u32 = 3222820985;
-pub const FICLONE: u32 = 1074041865;
-pub const FICLONERANGE: u32 = 1075876877;
-pub const FIDEDUPERANGE: u32 = 3222836278;
-pub const FS_IOC_GETFLAGS: u32 = 2147771905;
-pub const FS_IOC_SETFLAGS: u32 = 1074030082;
-pub const FS_IOC_GETVERSION: u32 = 2147776001;
-pub const FS_IOC_SETVERSION: u32 = 1074034178;
-pub const FS_IOC_FIEMAP: u32 = 3223348747;
-pub const FS_IOC32_GETFLAGS: u32 = 2147771905;
-pub const FS_IOC32_SETFLAGS: u32 = 1074030082;
-pub const FS_IOC32_GETVERSION: u32 = 2147776001;
-pub const FS_IOC32_SETVERSION: u32 = 1074034178;
-pub const FS_IOC_FSGETXATTR: u32 = 2149341215;
-pub const FS_IOC_FSSETXATTR: u32 = 1075599392;
-pub const FS_IOC_GETFSLABEL: u32 = 2164298801;
-pub const FS_IOC_SETFSLABEL: u32 = 1090556978;
-pub const VIDIOC_SUBDEV_QUERYSTD: u32 = 2148030015;
-pub const AUTOFS_DEV_IOCTL_CLOSEMOUNT: u32 = 3222836085;
-pub const LIRC_SET_SEND_CARRIER: u32 = 1074030867;
-pub const AUTOFS_IOC_PROTOSUBVER: u32 = 2147783527;
-pub const PTP_SYS_OFFSET_PRECISE: u32 = 3225435400;
-pub const FSI_SCOM_WRITE: u32 = 3223352066;
-pub const ATM_GETCIRANGE: u32 = 1074553226;
-pub const DMA_BUF_SET_NAME_B: u32 = 1074291201;
-pub const RIO_CM_EP_GET_LIST_SIZE: u32 = 3221512961;
-pub const TUNSETPERSIST: u32 = 1074025675;
-pub const FS_IOC_GET_ENCRYPTION_POLICY: u32 = 1074554389;
-pub const CEC_RECEIVE: u32 = 3224920326;
-pub const MGSL_IOCGPARAMS: u32 = 2149608705;
-pub const ENI_SETMULT: u32 = 1074553191;
-pub const RIO_GET_EVENT_MASK: u32 = 2147773710;
-pub const LIRC_GET_MAX_TIMEOUT: u32 = 2147772681;
-pub const USBDEVFS_CLAIMINTERFACE: u32 = 2147767567;
-pub const CHIOMOVE: u32 = 1075077889;
-pub const SONYPI_IOCGBATFLAGS: u32 = 2147579399;
-pub const BTRFS_IOC_SYNC: u32 = 37896;
-pub const VIDIOC_TRY_FMT: u32 = 3234616896;
-pub const LIRC_SET_REC_MODE: u32 = 1074030866;
-pub const VIDIOC_DQEVENT: u32 = 2155894361;
-pub const RPMSG_DESTROY_EPT_IOCTL: u32 = 46338;
-pub const UVCIOC_CTRL_MAP: u32 = 3227022624;
-pub const VHOST_SET_BACKEND_FEATURES: u32 = 1074310949;
-pub const VHOST_VSOCK_SET_GUEST_CID: u32 = 1074311008;
-pub const UI_SET_KEYBIT: u32 = 1074025829;
-pub const LIRC_SET_REC_TIMEOUT: u32 = 1074030872;
-pub const FS_IOC_GET_ENCRYPTION_KEY_STATUS: u32 = 3229640218;
-pub const BTRFS_IOC_TREE_SEARCH_V2: u32 = 3228603409;
-pub const VHOST_SET_VRING_BASE: u32 = 1074310930;
-pub const RIO_ENABLE_DOORBELL_RANGE: u32 = 1074294025;
-pub const VIDIOC_TRY_EXT_CTRLS: u32 = 3222820425;
-pub const LIRC_GET_REC_MODE: u32 = 2147772674;
-pub const PPGETTIME: u32 = 2148036757;
-pub const BTRFS_IOC_RM_DEV: u32 = 1342215179;
-pub const ATM_SETBACKEND: u32 = 1073897970;
-pub const FSL_HV_IOCTL_PARTITION_START: u32 = 3222318851;
-pub const FBIO_WAITEVENT: u32 = 18056;
-pub const SWITCHTEC_IOCTL_PORT_TO_PFF: u32 = 3222034245;
-pub const NVME_IOCTL_IO_CMD: u32 = 3225964099;
-pub const IPMICTL_RECEIVE_MSG_TRUNC: u32 = 3222825227;
-pub const FDTWADDLE: u32 = 601;
-pub const NVME_IOCTL_SUBMIT_IO: u32 = 1076907586;
-pub const NILFS_IOCTL_SYNC: u32 = 2148036234;
-pub const VIDIOC_SUBDEV_S_DV_TIMINGS: u32 = 3229898327;
-pub const ASPEED_LPC_CTRL_IOCTL_GET_SIZE: u32 = 3222319616;
-pub const DM_DEV_STATUS: u32 = 3241737479;
-pub const TEE_IOC_CLOSE_SESSION: u32 = 2147787781;
-pub const NS_GETPSTAT: u32 = 3222036833;
-pub const UI_SET_PROPBIT: u32 = 1074025838;
-pub const TUNSETFILTEREBPF: u32 = 2147767521;
-pub const RIO_MPORT_MAINT_COMPTAG_SET: u32 = 1074031874;
-pub const AUTOFS_DEV_IOCTL_VERSION: u32 = 3222836081;
-pub const WDIOC_SETOPTIONS: u32 = 2147768068;
-pub const VHOST_SCSI_SET_ENDPOINT: u32 = 1088991040;
-pub const MGSL_IOCGTXIDLE: u32 = 27907;
-pub const ATM_ADDLECSADDR: u32 = 1074553230;
-pub const FSL_HV_IOCTL_GETPROP: u32 = 3223891719;
-pub const FDGETPRM: u32 = 2149319172;
-pub const HIDIOCAPPLICATION: u32 = 18434;
-pub const ENI_MEMDUMP: u32 = 1074553184;
-pub const PTP_SYS_OFFSET2: u32 = 1128283406;
-pub const VIDIOC_SUBDEV_G_DV_TIMINGS: u32 = 3229898328;
-pub const DMA_BUF_SET_NAME_A: u32 = 1074029057;
-pub const PTP_PIN_GETFUNC: u32 = 3227532550;
-pub const PTP_SYS_OFFSET_EXTENDED: u32 = 3300932873;
-pub const DFL_FPGA_PORT_UINT_SET_IRQ: u32 = 1074312776;
-pub const RTC_EPOCH_READ: u32 = 2147774477;
-pub const VIDIOC_SUBDEV_S_SELECTION: u32 = 3225441854;
-pub const VIDIOC_QUERY_EXT_CTRL: u32 = 3236451943;
-pub const ATM_GETLECSADDR: u32 = 1074553232;
-pub const FSL_HV_IOCTL_PARTITION_STOP: u32 = 3221794564;
-pub const SONET_GETDIAG: u32 = 2147770644;
-pub const ATMMPC_DATA: u32 = 25049;
-pub const IPMICTL_UNREGISTER_FOR_CMD_CHANS: u32 = 2148296989;
-pub const HIDIOCGCOLLECTIONINDEX: u32 = 1075333136;
-pub const RPMSG_CREATE_EPT_IOCTL: u32 = 1076409601;
-pub const GPIOHANDLE_GET_LINE_VALUES_IOCTL: u32 = 3225465864;
-pub const UI_DEV_SETUP: u32 = 1079792899;
-pub const ISST_IF_IO_CMD: u32 = 1074068994;
-pub const RIO_MPORT_MAINT_READ_REMOTE: u32 = 2149084423;
-pub const VIDIOC_OMAP3ISP_HIST_CFG: u32 = 3224393412;
-pub const BLKGETNRZONES: u32 = 2147750533;
-pub const VIDIOC_G_MODULATOR: u32 = 3225703990;
-pub const VBG_IOCTL_WRITE_CORE_DUMP: u32 = 3223082515;
-pub const USBDEVFS_SETINTERFACE: u32 = 2148029700;
-pub const PPPIOCGCHAN: u32 = 2147775543;
-pub const EVIOCGVERSION: u32 = 2147763457;
-pub const VHOST_NET_SET_BACKEND: u32 = 1074310960;
-pub const USBDEVFS_REAPURBNDELAY: u32 = 1074025741;
-pub const RNDZAPENTCNT: u32 = 20996;
-pub const VIDIOC_G_PARM: u32 = 3234616853;
-pub const TUNGETDEVNETNS: u32 = 21731;
-pub const LIRC_SET_MEASURE_CARRIER_MODE: u32 = 1074030877;
-pub const VHOST_SET_VRING_ERR: u32 = 1074310946;
-pub const VDUSE_VQ_SETUP: u32 = 1075872020;
-pub const AUTOFS_IOC_SETTIMEOUT: u32 = 3221525348;
-pub const VIDIOC_S_FREQUENCY: u32 = 1076647481;
-pub const F2FS_IOC_SEC_TRIM_FILE: u32 = 1075377428;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY: u32 = 3225445912;
-pub const WDIOC_GETPRETIMEOUT: u32 = 2147768073;
-pub const USBDEVFS_DROP_PRIVILEGES: u32 = 1074025758;
-pub const BTRFS_IOC_SNAP_CREATE_V2: u32 = 1342215191;
-pub const VHOST_VSOCK_SET_RUNNING: u32 = 1074048865;
-pub const STP_SET_OPTIONS: u32 = 1074275586;
-pub const FBIO_RADEON_GET_MIRROR: u32 = 2147762179;
-pub const IVTVFB_IOC_DMA_FRAME: u32 = 1074550464;
-pub const IPMICTL_SEND_COMMAND: u32 = 2148821261;
-pub const VIDIOC_G_ENC_INDEX: u32 = 2283296332;
-pub const DFL_FPGA_FME_PORT_PR: u32 = 46720;
-pub const CHIOSVOLTAG: u32 = 1076912914;
-pub const ATM_SETESIF: u32 = 1074553229;
-pub const FW_CDEV_IOC_SEND_RESPONSE: u32 = 1075323652;
-pub const PMU_IOC_GET_MODEL: u32 = 2147762691;
-pub const JSIOCGBTNMAP: u32 = 2214619700;
-pub const USBDEVFS_HUB_PORTINFO: u32 = 2155894035;
-pub const VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS: u32 = 3222820363;
-pub const FDCLRPRM: u32 = 577;
-pub const BTRFS_IOC_SCRUB: u32 = 3288372251;
-pub const USBDEVFS_DISCONNECT: u32 = 21782;
-pub const TUNSETVNETBE: u32 = 1074025694;
-pub const ATMTCP_REMOVE: u32 = 24975;
-pub const VHOST_VDPA_GET_CONFIG: u32 = 2148052851;
-pub const PPPIOCGNPMODE: u32 = 3221779532;
-pub const FDGETDRVPRM: u32 = 2153251345;
-pub const TUNSETVNETLE: u32 = 1074025692;
-pub const PHN_SETREG: u32 = 1074294790;
-pub const PPPIOCDETACH: u32 = 1074033724;
-pub const MMTIMER_GETRES: u32 = 2147773697;
-pub const VIDIOC_SUBDEV_ENUMSTD: u32 = 3225966105;
-pub const PPGETFLAGS: u32 = 2147774618;
-pub const VDUSE_DEV_GET_FEATURES: u32 = 2148040977;
-pub const CAPI_MANUFACTURER_CMD: u32 = 3221766944;
-pub const VIDIOC_G_TUNER: u32 = 3226752541;
-pub const DM_TABLE_STATUS: u32 = 3241737484;
-pub const DM_DEV_ARM_POLL: u32 = 3241737488;
-pub const NE_CREATE_VM: u32 = 2148052512;
-pub const MEDIA_IOC_ENUM_LINKS: u32 = 3223092226;
-pub const F2FS_IOC_PRECACHE_EXTENTS: u32 = 62735;
-pub const DFL_FPGA_PORT_DMA_MAP: u32 = 46659;
-pub const MGSL_IOCGXCTRL: u32 = 27926;
-pub const FW_CDEV_IOC_SEND_REQUEST: u32 = 1076372225;
-pub const SONYPI_IOCGBLUE: u32 = 2147579400;
-pub const F2FS_IOC_DECOMPRESS_FILE: u32 = 62743;
-pub const I2OHTML: u32 = 3223087369;
-pub const VFIO_GET_API_VERSION: u32 = 15204;
-pub const IDT77105_GETSTATZ: u32 = 1074553139;
-pub const I2OPARMSET: u32 = 3222825219;
-pub const TEE_IOC_CANCEL: u32 = 2148049924;
-pub const PTP_SYS_OFFSET_PRECISE2: u32 = 3225435409;
-pub const DFL_FPGA_PORT_RESET: u32 = 46656;
-pub const PPPIOCGASYNCMAP: u32 = 2147775576;
-pub const EVIOCGKEYCODE_V2: u32 = 2150122756;
-pub const DM_DEV_SET_GEOMETRY: u32 = 3241737487;
-pub const HIDIOCSUSAGE: u32 = 1075333132;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE: u32 = 1075323664;
-pub const PTP_EXTTS_REQUEST: u32 = 1074806018;
-pub const SWITCHTEC_IOCTL_EVENT_CTL: u32 = 3223869251;
-pub const WDIOC_SETPRETIMEOUT: u32 = 3221509896;
-pub const VHOST_SCSI_CLEAR_ENDPOINT: u32 = 1088991041;
-pub const JSIOCGAXES: u32 = 2147576337;
-pub const HIDIOCSFLAG: u32 = 1074022415;
-pub const PTP_PEROUT_REQUEST2: u32 = 1077427468;
-pub const PPWDATA: u32 = 1073836166;
-pub const PTP_CLOCK_GETCAPS: u32 = 2152742145;
-pub const FDGETMAXERRS: u32 = 2148794894;
-pub const TUNSETQUEUE: u32 = 1074025689;
-pub const PTP_ENABLE_PPS: u32 = 1074019588;
-pub const SIOCSIFATMTCP: u32 = 24960;
-pub const CEC_ADAP_G_LOG_ADDRS: u32 = 2153537795;
-pub const ND_IOCTL_ARS_CAP: u32 = 3223342593;
-pub const NBD_SET_BLKSIZE: u32 = 43777;
-pub const NBD_SET_TIMEOUT: u32 = 43785;
-pub const VHOST_SCSI_GET_ABI_VERSION: u32 = 1074048834;
-pub const RIO_UNMAP_INBOUND: u32 = 1074294034;
-pub const ATM_QUERYLOOP: u32 = 1074553172;
-pub const DFL_FPGA_GET_API_VERSION: u32 = 46592;
-pub const USBDEVFS_WAIT_FOR_RESUME: u32 = 21795;
-pub const FBIO_CURSOR: u32 = 3225961992;
-pub const RNDCLEARPOOL: u32 = 20998;
-pub const VIDIOC_QUERYSTD: u32 = 2148030015;
-pub const DMA_BUF_IOCTL_SYNC: u32 = 1074291200;
-pub const SCIF_RECV: u32 = 3222827783;
-pub const PTP_PIN_GETFUNC2: u32 = 3227532559;
-pub const FW_CDEV_IOC_ALLOCATE: u32 = 3223331586;
-pub const CEC_ADAP_G_CAPS: u32 = 3226231040;
-pub const VIDIOC_G_FBUF: u32 = 2150389258;
-pub const PTP_ENABLE_PPS2: u32 = 1074019597;
-pub const PCITEST_CLEAR_IRQ: u32 = 20496;
-pub const IPMICTL_SET_GETS_EVENTS_CMD: u32 = 2147772688;
-pub const BTRFS_IOC_DEVICES_READY: u32 = 2415957031;
-pub const JSIOCGAXMAP: u32 = 2151705138;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER: u32 = 2148541196;
-pub const FW_CDEV_IOC_SET_ISO_CHANNELS: u32 = 1074799383;
-pub const RTC_WIE_OFF: u32 = 28688;
-pub const PPGETMODE: u32 = 2147774616;
-pub const VIDIOC_DBG_G_REGISTER: u32 = 3224917584;
-pub const PTP_SYS_OFFSET: u32 = 1128283397;
-pub const BTRFS_IOC_SPACE_INFO: u32 = 3222311956;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_SIZE: u32 = 3225441866;
-pub const ND_IOCTL_VENDOR: u32 = 3221769737;
-pub const SCIF_VREADFROM: u32 = 3223876364;
-pub const BTRFS_IOC_TRANS_START: u32 = 37894;
-pub const INOTIFY_IOC_SETNEXTWD: u32 = 1074022656;
-pub const SNAPSHOT_GET_IMAGE_SIZE: u32 = 2148021006;
-pub const TUNDETACHFILTER: u32 = 1074287830;
-pub const ND_IOCTL_CLEAR_ERROR: u32 = 3223342596;
-pub const IOC_PR_CLEAR: u32 = 1074819277;
-pub const SCIF_READFROM: u32 = 3223876362;
-pub const PPPIOCGDEBUG: u32 = 2147775553;
-pub const BLKGETZONESZ: u32 = 2147750532;
-pub const HIDIOCGUSAGES: u32 = 3491514387;
-pub const SONYPI_IOCGTEMP: u32 = 2147579404;
-pub const UI_SET_MSCBIT: u32 = 1074025832;
-pub const APM_IOC_SUSPEND: u32 = 16642;
-pub const BTRFS_IOC_TREE_SEARCH: u32 = 3489698833;
-pub const RTC_PLL_GET: u32 = 2149347345;
-pub const RIO_CM_EP_GET_LIST: u32 = 3221512962;
-pub const USBDEVFS_DISCSIGNAL: u32 = 2148029710;
-pub const LIRC_GET_MIN_TIMEOUT: u32 = 2147772680;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY: u32 = 2174244674;
-pub const DM_TARGET_MSG: u32 = 3241737486;
-pub const SONYPI_IOCGBAT1REM: u32 = 2147644931;
-pub const EVIOCSFF: u32 = 1076643200;
-pub const TUNSETGROUP: u32 = 1074025678;
-pub const EVIOCGKEYCODE: u32 = 2148025604;
-pub const KCOV_REMOTE_ENABLE: u32 = 1075340134;
-pub const ND_IOCTL_GET_CONFIG_SIZE: u32 = 3222031876;
-pub const FDEJECT: u32 = 602;
-pub const TUNSETOFFLOAD: u32 = 1074025680;
-pub const PPPIOCCONNECT: u32 = 1074033722;
-pub const ATM_ADDADDR: u32 = 1074553224;
-pub const VDUSE_DEV_INJECT_CONFIG_IRQ: u32 = 33043;
-pub const AUTOFS_DEV_IOCTL_ASKUMOUNT: u32 = 3222836093;
-pub const VHOST_VDPA_GET_STATUS: u32 = 2147594097;
-pub const CCISS_PASSTHRU: u32 = 3226747403;
-pub const MGSL_IOCCLRMODCOUNT: u32 = 27919;
-pub const TEE_IOC_SUPPL_SEND: u32 = 2148574215;
-pub const ATMARPD_CTRL: u32 = 25057;
-pub const UI_ABS_SETUP: u32 = 1075598596;
-pub const UI_DEV_DESTROY: u32 = 21762;
-pub const BTRFS_IOC_QUOTA_CTL: u32 = 3222311976;
-pub const RTC_AIE_ON: u32 = 28673;
-pub const AUTOFS_IOC_EXPIRE: u32 = 2165085029;
-pub const PPPIOCSDEBUG: u32 = 1074033728;
-pub const GPIO_V2_LINE_SET_VALUES_IOCTL: u32 = 3222320143;
-pub const PPPIOCSMRU: u32 = 1074033746;
-pub const CCISS_DEREGDISK: u32 = 16908;
-pub const UI_DEV_CREATE: u32 = 21761;
-pub const FUSE_DEV_IOC_CLONE: u32 = 2147804416;
-pub const BTRFS_IOC_START_SYNC: u32 = 2148045848;
-pub const NILFS_IOCTL_DELETE_CHECKPOINT: u32 = 1074294401;
-pub const SNAPSHOT_AVAIL_SWAP_SIZE: u32 = 2148021011;
-pub const DM_TABLE_CLEAR: u32 = 3241737482;
-pub const CCISS_GETINTINFO: u32 = 2148024834;
-pub const PPPIOCSASYNCMAP: u32 = 1074033751;
-pub const I2OEVTGET: u32 = 2154326283;
-pub const NVME_IOCTL_RESET: u32 = 20036;
-pub const PPYIELD: u32 = 28813;
-pub const NVME_IOCTL_IO64_CMD: u32 = 3226488392;
-pub const TUNSETCARRIER: u32 = 1074025698;
-pub const DM_DEV_WAIT: u32 = 3241737480;
-pub const RTC_WIE_ON: u32 = 28687;
-pub const MEDIA_IOC_DEVICE_INFO: u32 = 3238034432;
-pub const RIO_CM_CHAN_CREATE: u32 = 3221381891;
-pub const MGSL_IOCSPARAMS: u32 = 1075866880;
-pub const RTC_SET_TIME: u32 = 1076129802;
-pub const VHOST_RESET_OWNER: u32 = 44802;
-pub const IOC_OPAL_PSID_REVERT_TPR: u32 = 1091072232;
-pub const AUTOFS_DEV_IOCTL_OPENMOUNT: u32 = 3222836084;
-pub const UDF_GETEABLOCK: u32 = 2147773505;
-pub const VFIO_IOMMU_MAP_DMA: u32 = 15217;
-pub const VIDIOC_SUBSCRIBE_EVENT: u32 = 1075861082;
-pub const HIDIOCGFLAG: u32 = 2147764238;
-pub const HIDIOCGUCODE: u32 = 3222816781;
-pub const VIDIOC_OMAP3ISP_AF_CFG: u32 = 3226228421;
-pub const DM_REMOVE_ALL: u32 = 3241737473;
-pub const ASPEED_LPC_CTRL_IOCTL_MAP: u32 = 1074835969;
-pub const CCISS_GETFIRMVER: u32 = 2147762696;
-pub const ND_IOCTL_ARS_START: u32 = 3223342594;
-pub const PPPIOCSMRRU: u32 = 1074033723;
-pub const CEC_ADAP_S_LOG_ADDRS: u32 = 3227279620;
-pub const RPROC_GET_SHUTDOWN_ON_RELEASE: u32 = 2147792642;
-pub const DMA_HEAP_IOCTL_ALLOC: u32 = 3222816768;
-pub const PPSETTIME: u32 = 1074294934;
-pub const RTC_ALM_READ: u32 = 2149871624;
-pub const VDUSE_SET_API_VERSION: u32 = 1074299137;
-pub const RIO_MPORT_MAINT_WRITE_REMOTE: u32 = 1075342600;
-pub const VIDIOC_SUBDEV_S_CROP: u32 = 3224917564;
-pub const USBDEVFS_CONNECT: u32 = 21783;
-pub const SYNC_IOC_FILE_INFO: u32 = 3224911364;
-pub const ATMARP_MKIP: u32 = 25058;
-pub const VFIO_IOMMU_SPAPR_TCE_GET_INFO: u32 = 15216;
-pub const CCISS_GETHEARTBEAT: u32 = 2147762694;
-pub const ATM_RSTADDR: u32 = 1074553223;
-pub const NBD_SET_SIZE: u32 = 43778;
-pub const UDF_GETVOLIDENT: u32 = 2147773506;
-pub const GPIO_V2_LINE_GET_VALUES_IOCTL: u32 = 3222320142;
-pub const MGSL_IOCSTXIDLE: u32 = 27906;
-pub const FSL_HV_IOCTL_SETPROP: u32 = 3223891720;
-pub const BTRFS_IOC_GET_DEV_STATS: u32 = 3288896564;
-pub const PPRSTATUS: u32 = 2147577985;
-pub const MGSL_IOCTXENABLE: u32 = 27908;
-pub const UDF_GETEASIZE: u32 = 2147773504;
-pub const NVME_IOCTL_ADMIN64_CMD: u32 = 3226488391;
-pub const VHOST_SET_OWNER: u32 = 44801;
-pub const RIO_ALLOC_DMA: u32 = 3222826259;
-pub const RIO_CM_CHAN_ACCEPT: u32 = 3221775111;
-pub const I2OHRTGET: u32 = 3222038785;
-pub const ATM_SETCIRANGE: u32 = 1074553227;
-pub const HPET_IE_ON: u32 = 26625;
-pub const PERF_EVENT_IOC_ID: u32 = 2147755015;
-pub const TUNSETSNDBUF: u32 = 1074025684;
-pub const PTP_PIN_SETFUNC: u32 = 1080048903;
-pub const PPPIOCDISCONN: u32 = 29753;
-pub const VIDIOC_QUERYCTRL: u32 = 3225703972;
-pub const PPEXCL: u32 = 28815;
-pub const PCITEST_MSI: u32 = 1074024451;
-pub const FDWERRORCLR: u32 = 598;
-pub const AUTOFS_IOC_FAIL: u32 = 37729;
-pub const USBDEVFS_IOCTL: u32 = 3222033682;
-pub const VIDIOC_S_STD: u32 = 1074288152;
-pub const F2FS_IOC_RESIZE_FS: u32 = 1074328848;
-pub const SONET_SETDIAG: u32 = 3221512466;
-pub const BTRFS_IOC_DEFRAG: u32 = 1342215170;
-pub const CCISS_GETDRIVVER: u32 = 2147762697;
-pub const IPMICTL_GET_TIMING_PARMS_CMD: u32 = 2148034839;
-pub const HPET_IRQFREQ: u32 = 1074030598;
-pub const ATM_GETESI: u32 = 1074553221;
-pub const CCISS_GETLUNINFO: u32 = 2148286993;
-pub const AUTOFS_DEV_IOCTL_ISMOUNTPOINT: u32 = 3222836094;
-pub const TEE_IOC_SHM_ALLOC: u32 = 3222316033;
-pub const PERF_EVENT_IOC_SET_BPF: u32 = 1074013192;
-pub const UDMABUF_CREATE_LIST: u32 = 1074296131;
-pub const VHOST_SET_LOG_BASE: u32 = 1074310916;
-pub const ZATM_GETPOOL: u32 = 1074553185;
-pub const BR2684_SETFILT: u32 = 1075601808;
-pub const RNDGETPOOL: u32 = 2148028930;
-pub const PPS_GETPARAMS: u32 = 2147774625;
-pub const IOC_PR_RESERVE: u32 = 1074819273;
-pub const VIDIOC_TRY_DECODER_CMD: u32 = 3225966177;
-pub const RIO_CM_CHAN_CLOSE: u32 = 1073898244;
-pub const VIDIOC_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const IOCTL_MEI_CONNECT_CLIENT_VTAG: u32 = 3222554628;
-pub const PMU_IOC_GET_BACKLIGHT: u32 = 2147762689;
-pub const USBDEVFS_GET_CAPABILITIES: u32 = 2147767578;
-pub const SCIF_WRITETO: u32 = 3223876363;
-pub const UDF_RELOCATE_BLOCKS: u32 = 3221515331;
-pub const FSL_HV_IOCTL_PARTITION_RESTART: u32 = 3221794561;
-pub const CCISS_REGNEWD: u32 = 16910;
-pub const FAT_IOCTL_SET_ATTRIBUTES: u32 = 1074033169;
-pub const VIDIOC_CREATE_BUFS: u32 = 3237500508;
-pub const CAPI_GET_VERSION: u32 = 3222291207;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY: u32 = 2228770626;
-pub const VFIO_EEH_PE_OP: u32 = 15225;
-pub const FW_CDEV_IOC_CREATE_ISO_CONTEXT: u32 = 3223331592;
-pub const F2FS_IOC_RELEASE_COMPRESS_BLOCKS: u32 = 2148070674;
-pub const NBD_SET_SIZE_BLOCKS: u32 = 43783;
-pub const IPMI_BMC_IOCTL_SET_SMS_ATN: u32 = 45312;
-pub const ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG: u32 = 3222319873;
-pub const VIDIOC_S_AUDOUT: u32 = 1077171762;
-pub const VIDIOC_S_FMT: u32 = 3234616837;
-pub const PPPIOCATTACH: u32 = 1074033725;
-pub const VHOST_GET_VRING_BUSYLOOP_TIMEOUT: u32 = 1074310948;
-pub const FS_IOC_MEASURE_VERITY: u32 = 3221513862;
-pub const CCISS_BIG_PASSTHRU: u32 = 3227009554;
-pub const IPMICTL_SET_MY_LUN_CMD: u32 = 2147772691;
-pub const PCITEST_LEGACY_IRQ: u32 = 20482;
-pub const USBDEVFS_SUBMITURB: u32 = 2150389002;
-pub const AUTOFS_IOC_READY: u32 = 37728;
-pub const BTRFS_IOC_SEND: u32 = 1078498342;
-pub const VIDIOC_G_EXT_CTRLS: u32 = 3222820423;
-pub const JSIOCSBTNMAP: u32 = 1140877875;
-pub const PPPIOCSFLAGS: u32 = 1074033753;
-pub const NVRAM_INIT: u32 = 28736;
-pub const RFKILL_IOCTL_NOINPUT: u32 = 20993;
-pub const BTRFS_IOC_BALANCE: u32 = 1342215180;
-pub const FS_IOC_GETFSMAP: u32 = 3233830971;
-pub const IPMICTL_GET_MY_CHANNEL_LUN_CMD: u32 = 2147772699;
-pub const STP_POLICY_ID_GET: u32 = 2148541697;
-pub const PPSETFLAGS: u32 = 1074032795;
-pub const CEC_ADAP_S_PHYS_ADDR: u32 = 1073897730;
-pub const ATMTCP_CREATE: u32 = 24974;
-pub const IPMI_BMC_IOCTL_FORCE_ABORT: u32 = 45314;
-pub const PPPIOCGXASYNCMAP: u32 = 2149610576;
-pub const VHOST_SET_VRING_CALL: u32 = 1074310945;
-pub const LIRC_GET_FEATURES: u32 = 2147772672;
-pub const GSMIOC_DISABLE_NET: u32 = 18179;
-pub const AUTOFS_IOC_CATATONIC: u32 = 37730;
-pub const NBD_DO_IT: u32 = 43779;
-pub const LIRC_SET_REC_CARRIER_RANGE: u32 = 1074030879;
-pub const IPMICTL_GET_MY_CHANNEL_ADDRESS_CMD: u32 = 2147772697;
-pub const EVIOCSCLOCKID: u32 = 1074021792;
-pub const USBDEVFS_FREE_STREAMS: u32 = 2148029725;
-pub const FSI_SCOM_RESET: u32 = 1074033411;
-pub const PMU_IOC_GRAB_BACKLIGHT: u32 = 2147762694;
-pub const VIDIOC_SUBDEV_S_FMT: u32 = 3227014661;
-pub const FDDEFPRM: u32 = 1075577411;
-pub const TEE_IOC_INVOKE: u32 = 2148574211;
-pub const USBDEVFS_BULK: u32 = 3222295810;
-pub const SCIF_VWRITETO: u32 = 3223876365;
-pub const SONYPI_IOCSBRT: u32 = 1073837568;
-pub const BTRFS_IOC_FILE_EXTENT_SAME: u32 = 3222836278;
-pub const RTC_PIE_ON: u32 = 28677;
-pub const BTRFS_IOC_SCAN_DEV: u32 = 1342215172;
-pub const PPPIOCXFERUNIT: u32 = 29774;
-pub const WDIOC_GETTIMEOUT: u32 = 2147768071;
-pub const BTRFS_IOC_SET_RECEIVED_SUBVOL: u32 = 3234370597;
-pub const DFL_FPGA_PORT_ERR_SET_IRQ: u32 = 1074312774;
-pub const FBIO_WAITFORVSYNC: u32 = 1074021920;
-pub const RTC_PIE_OFF: u32 = 28678;
-pub const EVIOCGRAB: u32 = 1074021776;
-pub const PMU_IOC_SET_BACKLIGHT: u32 = 1074020866;
-pub const EVIOCGREP: u32 = 2148025603;
-pub const PERF_EVENT_IOC_MODIFY_ATTRIBUTES: u32 = 1074013195;
-pub const UFFDIO_CONTINUE: u32 = 3223366151;
-pub const VDUSE_GET_API_VERSION: u32 = 2148040960;
-pub const RTC_RD_TIME: u32 = 2149871625;
-pub const FDMSGOFF: u32 = 582;
-pub const IPMICTL_REGISTER_FOR_CMD_CHANS: u32 = 2148296988;
-pub const CAPI_GET_ERRCODE: u32 = 2147631905;
-pub const PCITEST_SET_IRQTYPE: u32 = 1074024456;
-pub const VIDIOC_SUBDEV_S_EDID: u32 = 3223606825;
-pub const MATROXFB_SET_OUTPUT_MODE: u32 = 1074032378;
-pub const RIO_DEV_ADD: u32 = 1075866903;
-pub const VIDIOC_ENUM_FREQ_BANDS: u32 = 3225441893;
-pub const FBIO_RADEON_SET_MIRROR: u32 = 1074020356;
-pub const PCITEST_GET_IRQTYPE: u32 = 20489;
-pub const JSIOCGVERSION: u32 = 2147772929;
-pub const SONYPI_IOCSBLUE: u32 = 1073837577;
-pub const SNAPSHOT_PREF_IMAGE_SIZE: u32 = 13074;
-pub const F2FS_IOC_GET_FEATURES: u32 = 2147808524;
-pub const SCIF_REG: u32 = 3223876360;
-pub const NILFS_IOCTL_CLEAN_SEGMENTS: u32 = 1081634440;
-pub const FW_CDEV_IOC_INITIATE_BUS_RESET: u32 = 1074012933;
-pub const RIO_WAIT_FOR_ASYNC: u32 = 1074294038;
-pub const VHOST_SET_VRING_NUM: u32 = 1074310928;
-pub const AUTOFS_DEV_IOCTL_PROTOVER: u32 = 3222836082;
-pub const RIO_FREE_DMA: u32 = 1074294036;
-pub const MGSL_IOCRXENABLE: u32 = 27909;
-pub const IOCTL_VM_SOCKETS_GET_LOCAL_CID: u32 = 1977;
-pub const IPMICTL_SET_TIMING_PARMS_CMD: u32 = 2148034838;
-pub const PPPIOCGL2TPSTATS: u32 = 2152231990;
-pub const PERF_EVENT_IOC_PERIOD: u32 = 1074275332;
-pub const PTP_PIN_SETFUNC2: u32 = 1080048912;
-pub const CHIOEXCHANGE: u32 = 1075602178;
-pub const NILFS_IOCTL_GET_SUINFO: u32 = 2149084804;
-pub const CEC_DQEVENT: u32 = 3226493191;
-pub const UI_SET_SWBIT: u32 = 1074025837;
-pub const VHOST_VDPA_SET_CONFIG: u32 = 1074311028;
-pub const TUNSETIFF: u32 = 1074025674;
-pub const CHIOPOSITION: u32 = 1074553603;
-pub const IPMICTL_SET_MAINTENANCE_MODE_CMD: u32 = 1074030879;
-pub const BTRFS_IOC_DEFAULT_SUBVOL: u32 = 1074304019;
-pub const RIO_UNMAP_OUTBOUND: u32 = 1076391184;
-pub const CAPI_CLR_FLAGS: u32 = 2147762981;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE: u32 = 1075323663;
-pub const MATROXFB_GET_OUTPUT_CONNECTION: u32 = 2147774200;
-pub const EVIOCSMASK: u32 = 1074808211;
-pub const BTRFS_IOC_FORGET_DEV: u32 = 1342215173;
-pub const CXL_MEM_QUERY_COMMANDS: u32 = 2148060673;
-pub const CEC_S_MODE: u32 = 1074028809;
-pub const MGSL_IOCSIF: u32 = 27914;
-pub const SWITCHTEC_IOCTL_PFF_TO_PORT: u32 = 3222034244;
-pub const PPSETMODE: u32 = 1074032768;
-pub const VFIO_DEVICE_SET_IRQS: u32 = 15214;
-pub const VIDIOC_PREPARE_BUF: u32 = 3225704029;
-pub const CEC_ADAP_G_CONNECTOR_INFO: u32 = 2151964938;
-pub const IOC_OPAL_WRITE_SHADOW_MBR: u32 = 1092645098;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL: u32 = 3225441867;
-pub const UDMABUF_CREATE: u32 = 1075344706;
-pub const SONET_CLRDIAG: u32 = 3221512467;
-pub const PHN_SET_REG: u32 = 1074032641;
-pub const RNDADDTOENTCNT: u32 = 1074024961;
-pub const VBG_IOCTL_CHECK_BALLOON: u32 = 3223344657;
-pub const VIDIOC_OMAP3ISP_STAT_REQ: u32 = 3222820550;
-pub const PPS_FETCH: u32 = 3221516452;
-pub const RTC_AIE_OFF: u32 = 28674;
-pub const VFIO_GROUP_SET_CONTAINER: u32 = 15208;
-pub const FW_CDEV_IOC_RECEIVE_PHY_PACKETS: u32 = 1074275094;
-pub const VFIO_IOMMU_SPAPR_TCE_REMOVE: u32 = 15224;
-pub const VFIO_IOMMU_GET_INFO: u32 = 15216;
-pub const DM_DEV_SUSPEND: u32 = 3241737478;
-pub const F2FS_IOC_GET_COMPRESS_OPTION: u32 = 2147677461;
-pub const FW_CDEV_IOC_STOP_ISO: u32 = 1074012939;
-pub const GPIO_V2_GET_LINEINFO_IOCTL: u32 = 3238048773;
-pub const ATMMPC_CTRL: u32 = 25048;
-pub const PPPIOCSXASYNCMAP: u32 = 1075868751;
-pub const CHIOGSTATUS: u32 = 1074291464;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE: u32 = 3222807309;
-pub const RIO_MPORT_MAINT_PORT_IDX_GET: u32 = 2147773699;
-pub const CAPI_SET_FLAGS: u32 = 2147762980;
-pub const VFIO_GROUP_GET_DEVICE_FD: u32 = 15210;
-pub const VHOST_SET_MEM_TABLE: u32 = 1074310915;
-pub const MATROXFB_SET_OUTPUT_CONNECTION: u32 = 1074032376;
-pub const DFL_FPGA_PORT_GET_REGION_INFO: u32 = 46658;
-pub const VHOST_GET_FEATURES: u32 = 2148052736;
-pub const LIRC_GET_REC_RESOLUTION: u32 = 2147772679;
-pub const PACKET_CTRL_CMD: u32 = 3222820865;
-pub const LIRC_SET_TRANSMITTER_MASK: u32 = 1074030871;
-pub const BTRFS_IOC_ADD_DEV: u32 = 1342215178;
-pub const JSIOCGCORR: u32 = 2149870114;
-pub const VIDIOC_G_FMT: u32 = 3234616836;
-pub const RTC_EPOCH_SET: u32 = 1074032654;
-pub const CAPI_GET_PROFILE: u32 = 3225436937;
-pub const ATM_GETLOOP: u32 = 1074553170;
-pub const SCIF_LISTEN: u32 = 1074033410;
-pub const NBD_CLEAR_QUE: u32 = 43781;
-pub const F2FS_IOC_MOVE_RANGE: u32 = 3223385353;
-pub const LIRC_GET_LENGTH: u32 = 2147772687;
-pub const I8K_SET_FAN: u32 = 3221514631;
-pub const FDSETMAXERRS: u32 = 1075053132;
-pub const VIDIOC_SUBDEV_QUERYCAP: u32 = 2151699968;
-pub const SNAPSHOT_SET_SWAP_AREA: u32 = 1074541325;
-pub const LIRC_GET_REC_TIMEOUT: u32 = 2147772708;
-pub const EVIOCRMFF: u32 = 1074021761;
-pub const GPIO_GET_LINEEVENT_IOCTL: u32 = 3224417284;
-pub const PPRDATA: u32 = 2147577989;
-pub const RIO_MPORT_GET_PROPERTIES: u32 = 2150657284;
-pub const TUNSETVNETHDRSZ: u32 = 1074025688;
-pub const GPIO_GET_LINEINFO_IOCTL: u32 = 3225990146;
-pub const GSMIOC_GETCONF: u32 = 2152482560;
-pub const LIRC_GET_SEND_MODE: u32 = 2147772673;
-pub const PPPIOCSACTIVE: u32 = 1074295878;
-pub const SIOCGSTAMPNS_NEW: u32 = 2148567303;
-pub const IPMICTL_RECEIVE_MSG: u32 = 3222825228;
-pub const LIRC_SET_SEND_DUTY_CYCLE: u32 = 1074030869;
-pub const UI_END_FF_ERASE: u32 = 1074550219;
-pub const SWITCHTEC_IOCTL_FLASH_PART_INFO: u32 = 3222296385;
-pub const FW_CDEV_IOC_SEND_PHY_PACKET: u32 = 3222807317;
-pub const NBD_SET_FLAGS: u32 = 43786;
-pub const VFIO_DEVICE_GET_REGION_INFO: u32 = 15212;
-pub const REISERFS_IOC_UNPACK: u32 = 1074056449;
-pub const FW_CDEV_IOC_REMOVE_DESCRIPTOR: u32 = 1074012935;
-pub const RIO_SET_EVENT_MASK: u32 = 1074031885;
-pub const SNAPSHOT_ALLOC_SWAP_PAGE: u32 = 2148021012;
-pub const VDUSE_VQ_INJECT_IRQ: u32 = 1074037015;
-pub const I2OPASSTHRU: u32 = 2148034828;
-pub const IOC_OPAL_SET_PW: u32 = 1109422304;
-pub const FSI_SCOM_READ: u32 = 3223352065;
-pub const VHOST_VDPA_GET_DEVICE_ID: u32 = 2147790704;
-pub const VIDIOC_QBUF: u32 = 3225703951;
-pub const VIDIOC_S_TUNER: u32 = 1079268894;
-pub const TUNGETVNETHDRSZ: u32 = 2147767511;
-pub const CAPI_NCCI_GETUNIT: u32 = 2147762983;
-pub const DFL_FPGA_PORT_UINT_GET_IRQ_NUM: u32 = 2147792455;
-pub const VIDIOC_OMAP3ISP_STAT_EN: u32 = 3221509831;
-pub const GPIO_V2_LINE_SET_CONFIG_IOCTL: u32 = 3239097357;
-pub const TEE_IOC_VERSION: u32 = 2148312064;
-pub const VIDIOC_LOG_STATUS: u32 = 22086;
-pub const IPMICTL_SEND_COMMAND_SETTIME: u32 = 2149345557;
-pub const VHOST_SET_LOG_FD: u32 = 1074048775;
-pub const SCIF_SEND: u32 = 3222827782;
-pub const VIDIOC_SUBDEV_G_FMT: u32 = 3227014660;
-pub const NS_ADJBUFLEV: u32 = 24931;
-pub const VIDIOC_DBG_S_REGISTER: u32 = 1077433935;
-pub const NILFS_IOCTL_RESIZE: u32 = 1074294411;
-pub const PHN_GETREG: u32 = 3221778437;
-pub const I2OSWDL: u32 = 3223087365;
-pub const VBG_IOCTL_VMMDEV_REQUEST_BIG: u32 = 22019;
-pub const JSIOCGBUTTONS: u32 = 2147576338;
-pub const VFIO_IOMMU_ENABLE: u32 = 15219;
-pub const DM_DEV_RENAME: u32 = 3241737477;
-pub const MEDIA_IOC_SETUP_LINK: u32 = 3224665091;
-pub const VIDIOC_ENUMOUTPUT: u32 = 3225966128;
-pub const STP_POLICY_ID_SET: u32 = 3222283520;
-pub const VHOST_VDPA_SET_CONFIG_CALL: u32 = 1074048887;
-pub const VIDIOC_SUBDEV_G_CROP: u32 = 3224917563;
-pub const VIDIOC_S_CROP: u32 = 1075074620;
-pub const WDIOC_GETTEMP: u32 = 2147768067;
-pub const IOC_OPAL_ADD_USR_TO_LR: u32 = 1092120804;
-pub const UI_SET_LEDBIT: u32 = 1074025833;
-pub const NBD_SET_SOCK: u32 = 43776;
-pub const BTRFS_IOC_SNAP_DESTROY_V2: u32 = 1342215231;
-pub const HIDIOCGCOLLECTIONINFO: u32 = 3222292497;
-pub const I2OSWUL: u32 = 3223087366;
-pub const IOCTL_MEI_NOTIFY_GET: u32 = 2147764227;
-pub const FDFMTTRK: u32 = 1074528840;
-pub const MMTIMER_GETBITS: u32 = 27908;
-pub const VIDIOC_ENUMSTD: u32 = 3225966105;
-pub const VHOST_GET_VRING_BASE: u32 = 3221794578;
-pub const VFIO_DEVICE_IOEVENTFD: u32 = 15220;
-pub const ATMARP_SETENTRY: u32 = 25059;
-pub const CCISS_REVALIDVOLS: u32 = 16906;
-pub const MGSL_IOCLOOPTXDONE: u32 = 27913;
-pub const RTC_VL_READ: u32 = 2147774483;
-pub const ND_IOCTL_ARS_STATUS: u32 = 3224391171;
-pub const RIO_DEV_DEL: u32 = 1075866904;
-pub const VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES: u32 = 3223606797;
-pub const VIDIOC_SUBDEV_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const SONYPI_IOCSFAN: u32 = 1073837579;
-pub const SPIOCSTYPE: u32 = 1074032897;
-pub const IPMICTL_REGISTER_FOR_CMD: u32 = 2147641614;
-pub const I8K_GET_FAN: u32 = 3221514630;
-pub const TUNGETVNETBE: u32 = 2147767519;
-pub const AUTOFS_DEV_IOCTL_FAIL: u32 = 3222836087;
-pub const UI_END_FF_UPLOAD: u32 = 1080055241;
-pub const TOSH_SMM: u32 = 3222828176;
-pub const SONYPI_IOCGBAT2REM: u32 = 2147644933;
-pub const F2FS_IOC_GET_COMPRESS_BLOCKS: u32 = 2148070673;
-pub const PPPIOCSNPMODE: u32 = 1074295883;
-pub const USBDEVFS_CONTROL: u32 = 3222295808;
-pub const HIDIOCGUSAGE: u32 = 3222816779;
-pub const TUNSETTXFILTER: u32 = 1074025681;
-pub const TUNGETVNETLE: u32 = 2147767517;
-pub const VIDIOC_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const BTRFS_IOC_INO_PATHS: u32 = 3224933411;
-pub const MGSL_IOCGXSYNC: u32 = 27924;
-pub const HIDIOCGFIELDINFO: u32 = 3224913930;
-pub const VIDIOC_SUBDEV_G_STD: u32 = 2148029975;
-pub const I2OVALIDATE: u32 = 2147772680;
-pub const VIDIOC_TRY_ENCODER_CMD: u32 = 3223869006;
-pub const NILFS_IOCTL_GET_CPINFO: u32 = 2149084802;
-pub const VIDIOC_G_FREQUENCY: u32 = 3224131128;
-pub const VFAT_IOCTL_READDIR_SHORT: u32 = 2182640130;
-pub const ND_IOCTL_GET_CONFIG_DATA: u32 = 3222031877;
-pub const F2FS_IOC_RESERVE_COMPRESS_BLOCKS: u32 = 2148070675;
-pub const FDGETDRVSTAT: u32 = 2150892050;
-pub const SYNC_IOC_MERGE: u32 = 3224387075;
-pub const VIDIOC_S_DV_TIMINGS: u32 = 3229898327;
-pub const PPPIOCBRIDGECHAN: u32 = 1074033717;
-pub const LIRC_SET_SEND_MODE: u32 = 1074030865;
-pub const RIO_ENABLE_PORTWRITE_RANGE: u32 = 1074818315;
-pub const ATM_GETTYPE: u32 = 1074553220;
-pub const PHN_GETREGS: u32 = 3223875591;
-pub const FDSETEMSGTRESH: u32 = 586;
-pub const NILFS_IOCTL_GET_VINFO: u32 = 3222826630;
-pub const MGSL_IOCWAITEVENT: u32 = 3221515528;
-pub const CAPI_INSTALLED: u32 = 2147631906;
-pub const EVIOCGMASK: u32 = 2148550034;
-pub const BTRFS_IOC_SUBVOL_GETFLAGS: u32 = 2148045849;
-pub const FSL_HV_IOCTL_PARTITION_GET_STATUS: u32 = 3222056706;
-pub const MEDIA_IOC_ENUM_ENTITIES: u32 = 3238034433;
-pub const GSMIOC_GETFIRST: u32 = 2147763972;
-pub const FW_CDEV_IOC_FLUSH_ISO: u32 = 1074012952;
-pub const VIDIOC_DBG_G_CHIP_INFO: u32 = 3234354790;
-pub const F2FS_IOC_RELEASE_VOLATILE_WRITE: u32 = 62724;
-pub const CAPI_GET_SERIAL: u32 = 3221504776;
-pub const FDSETDRVPRM: u32 = 1079509648;
-pub const IOC_OPAL_SAVE: u32 = 1092120796;
-pub const VIDIOC_G_DV_TIMINGS: u32 = 3229898328;
-pub const TUNSETIFINDEX: u32 = 1074025690;
-pub const CCISS_SETINTINFO: u32 = 1074283011;
-pub const CM_IOSDBGLVL: u32 = 1074029562;
-pub const RTC_VL_CLR: u32 = 28692;
-pub const VIDIOC_REQBUFS: u32 = 3222558216;
-pub const USBDEVFS_REAPURBNDELAY32: u32 = 1074025741;
-pub const TEE_IOC_SHM_REGISTER: u32 = 3222840329;
-pub const USBDEVFS_SETCONFIGURATION: u32 = 2147767557;
-pub const CCISS_GETNODENAME: u32 = 2148549124;
-pub const VIDIOC_SUBDEV_S_FRAME_INTERVAL: u32 = 3224393238;
-pub const VIDIOC_ENUM_FRAMESIZES: u32 = 3224131146;
-pub const VFIO_DEVICE_PCI_HOT_RESET: u32 = 15217;
-pub const FW_CDEV_IOC_SEND_BROADCAST_REQUEST: u32 = 1076372242;
-pub const LPSETTIMEOUT_NEW: u32 = 1074791951;
-pub const RIO_CM_MPORT_GET_LIST: u32 = 3221512971;
-pub const FW_CDEV_IOC_QUEUE_ISO: u32 = 3222807305;
-pub const FDRAWCMD: u32 = 600;
-pub const SCIF_UNREG: u32 = 3222303497;
-pub const PPPIOCGIDLE64: u32 = 2148561983;
-pub const USBDEVFS_RELEASEINTERFACE: u32 = 2147767568;
-pub const VIDIOC_CROPCAP: u32 = 3224131130;
-pub const DFL_FPGA_PORT_GET_INFO: u32 = 46657;
-pub const PHN_SET_REGS: u32 = 1074032643;
-pub const ATMLEC_DATA: u32 = 25041;
-pub const PPPOEIOCDFWD: u32 = 45313;
-pub const VIDIOC_S_SELECTION: u32 = 3225441887;
-pub const SNAPSHOT_FREE_SWAP_PAGES: u32 = 13065;
-pub const BTRFS_IOC_LOGICAL_INO: u32 = 3224933412;
-pub const VIDIOC_S_CTRL: u32 = 3221771804;
-pub const ZATM_SETPOOL: u32 = 1074553187;
-pub const MTIOCPOS: u32 = 2147773699;
-pub const PMU_IOC_SLEEP: u32 = 16896;
-pub const AUTOFS_DEV_IOCTL_PROTOSUBVER: u32 = 3222836083;
-pub const VBG_IOCTL_CHANGE_FILTER_MASK: u32 = 3223344652;
-pub const NILFS_IOCTL_GET_SUSTAT: u32 = 2150657669;
-pub const VIDIOC_QUERYCAP: u32 = 2154321408;
-pub const HPET_INFO: u32 = 2148296707;
-pub const VIDIOC_AM437X_CCDC_CFG: u32 = 1074026177;
-pub const DM_LIST_DEVICES: u32 = 3241737474;
-pub const TUNSETOWNER: u32 = 1074025676;
-pub const VBG_IOCTL_CHANGE_GUEST_CAPABILITIES: u32 = 3223344654;
-pub const RNDADDENTROPY: u32 = 1074287107;
-pub const USBDEVFS_RESET: u32 = 21780;
-pub const BTRFS_IOC_SUBVOL_CREATE: u32 = 1342215182;
-pub const USBDEVFS_FORBID_SUSPEND: u32 = 21793;
-pub const FDGETDRVTYP: u32 = 2148532751;
-pub const PPWCONTROL: u32 = 1073836164;
-pub const VIDIOC_ENUM_FRAMEINTERVALS: u32 = 3224655435;
-pub const KCOV_DISABLE: u32 = 25445;
-pub const IOC_OPAL_ACTIVATE_LSP: u32 = 1092120799;
-pub const VHOST_VDPA_GET_IOVA_RANGE: u32 = 2148577144;
-pub const PPPIOCSPASS: u32 = 1074295879;
-pub const RIO_CM_CHAN_CONNECT: u32 = 1074291464;
-pub const I2OSWDEL: u32 = 3223087367;
-pub const FS_IOC_SET_ENCRYPTION_POLICY: u32 = 2148296211;
-pub const IOC_OPAL_MBR_DONE: u32 = 1091596521;
-pub const PPPIOCSMAXCID: u32 = 1074033745;
-pub const PPSETPHASE: u32 = 1074032788;
-pub const VHOST_VDPA_SET_VRING_ENABLE: u32 = 1074311029;
-pub const USBDEVFS_GET_SPEED: u32 = 21791;
-pub const SONET_GETFRAMING: u32 = 2147770646;
-pub const VIDIOC_QUERYBUF: u32 = 3225703945;
-pub const VIDIOC_S_EDID: u32 = 3223606825;
-pub const BTRFS_IOC_QGROUP_ASSIGN: u32 = 1075352617;
-pub const PPS_GETCAP: u32 = 2147774627;
-pub const SNAPSHOT_PLATFORM_SUPPORT: u32 = 13071;
-pub const LIRC_SET_REC_TIMEOUT_REPORTS: u32 = 1074030873;
-pub const SCIF_GET_NODEIDS: u32 = 3222827790;
-pub const NBD_DISCONNECT: u32 = 43784;
-pub const VIDIOC_SUBDEV_G_FRAME_INTERVAL: u32 = 3224393237;
-pub const VFIO_IOMMU_DISABLE: u32 = 15220;
-pub const SNAPSHOT_CREATE_IMAGE: u32 = 1074017041;
-pub const SNAPSHOT_POWER_OFF: u32 = 13072;
-pub const APM_IOC_STANDBY: u32 = 16641;
-pub const PPPIOCGUNIT: u32 = 2147775574;
-pub const AUTOFS_IOC_EXPIRE_MULTI: u32 = 1074041702;
-pub const SCIF_BIND: u32 = 3221779201;
-pub const IOC_WATCH_QUEUE_SET_SIZE: u32 = 22368;
-pub const NILFS_IOCTL_CHANGE_CPMODE: u32 = 1074818688;
-pub const IOC_OPAL_LOCK_UNLOCK: u32 = 1092120797;
-pub const F2FS_IOC_SET_PIN_FILE: u32 = 1074066701;
-pub const PPPIOCGRASYNCMAP: u32 = 2147775573;
-pub const MMTIMER_MMAPAVAIL: u32 = 27910;
-pub const I2OPASSTHRU32: u32 = 2148034828;
-pub const DFL_FPGA_FME_PORT_RELEASE: u32 = 1074050689;
-pub const VIDIOC_SUBDEV_QUERY_DV_TIMINGS: u32 = 2156156515;
-pub const UI_SET_SNDBIT: u32 = 1074025834;
-pub const VIDIOC_G_AUDOUT: u32 = 2150913585;
-pub const RTC_PLL_SET: u32 = 1075605522;
-pub const VIDIOC_ENUMAUDIO: u32 = 3224655425;
-pub const AUTOFS_DEV_IOCTL_TIMEOUT: u32 = 3222836090;
-pub const VBG_IOCTL_DRIVER_VERSION_INFO: u32 = 3224131072;
-pub const VHOST_SCSI_GET_EVENTS_MISSED: u32 = 1074048836;
-pub const VHOST_SET_VRING_ADDR: u32 = 1076408081;
-pub const VDUSE_CREATE_DEV: u32 = 1095794946;
-pub const FDFLUSH: u32 = 587;
-pub const VBG_IOCTL_WAIT_FOR_EVENTS: u32 = 3223344650;
-pub const DFL_FPGA_FME_ERR_SET_IRQ: u32 = 1074312836;
-pub const F2FS_IOC_GET_PIN_FILE: u32 = 2147808526;
-pub const SCIF_CONNECT: u32 = 3221779203;
-pub const BLKREPORTZONE: u32 = 3222278786;
-pub const AUTOFS_IOC_ASKUMOUNT: u32 = 2147783536;
-pub const ATM_ADDPARTY: u32 = 1074291188;
-pub const FDSETPRM: u32 = 1075577410;
-pub const ATM_GETSTATZ: u32 = 1074553169;
-pub const ISST_IF_MSR_COMMAND: u32 = 3221552644;
-pub const BTRFS_IOC_GET_SUBVOL_INFO: u32 = 2180551740;
-pub const VIDIOC_UNSUBSCRIBE_EVENT: u32 = 1075861083;
-pub const SEV_ISSUE_CMD: u32 = 3222295296;
-pub const GPIOHANDLE_SET_LINE_VALUES_IOCTL: u32 = 3225465865;
-pub const PCITEST_COPY: u32 = 1074024454;
-pub const IPMICTL_GET_MY_ADDRESS_CMD: u32 = 2147772690;
-pub const CHIOGPICKER: u32 = 2147771140;
-pub const CAPI_NCCI_OPENCOUNT: u32 = 2147762982;
-pub const CXL_MEM_SEND_COMMAND: u32 = 3224423938;
-pub const PERF_EVENT_IOC_SET_FILTER: u32 = 1074013190;
-pub const IOC_OPAL_REVERT_TPR: u32 = 1091072226;
-pub const CHIOGVPARAMS: u32 = 2154849043;
-pub const PTP_PEROUT_REQUEST: u32 = 1077427459;
-pub const FSI_SCOM_CHECK: u32 = 2147775232;
-pub const RTC_IRQP_READ: u32 = 2147774475;
-pub const RIO_MPORT_MAINT_READ_LOCAL: u32 = 2149084421;
-pub const HIDIOCGRDESCSIZE: u32 = 2147764225;
-pub const UI_GET_VERSION: u32 = 2147767597;
-pub const NILFS_IOCTL_GET_CPSTAT: u32 = 2149084803;
-pub const CCISS_GETBUSTYPES: u32 = 2147762695;
-pub const VFIO_IOMMU_SPAPR_TCE_CREATE: u32 = 15223;
-pub const VIDIOC_EXPBUF: u32 = 3225441808;
-pub const UI_SET_RELBIT: u32 = 1074025830;
-pub const VFIO_SET_IOMMU: u32 = 15206;
-pub const VIDIOC_S_MODULATOR: u32 = 1078220343;
-pub const TUNGETFILTER: u32 = 2148029659;
-pub const MEYEIOC_SYNC: u32 = 3221518019;
-pub const CCISS_SETNODENAME: u32 = 1074807301;
-pub const FBIO_GETCONTROL2: u32 = 2147763849;
-pub const TUNSETDEBUG: u32 = 1074025673;
-pub const DM_DEV_REMOVE: u32 = 3241737476;
-pub const HIDIOCSUSAGES: u32 = 1344030740;
-pub const FS_IOC_ADD_ENCRYPTION_KEY: u32 = 3226494487;
-pub const FBIOGET_VBLANK: u32 = 2149598738;
-pub const ATM_GETSTAT: u32 = 1074553168;
-pub const VIDIOC_G_JPEGCOMP: u32 = 2156680765;
-pub const TUNATTACHFILTER: u32 = 1074287829;
-pub const UI_SET_ABSBIT: u32 = 1074025831;
-pub const DFL_FPGA_PORT_ERR_GET_IRQ_NUM: u32 = 2147792453;
-pub const USBDEVFS_REAPURB32: u32 = 1074025740;
-pub const BTRFS_IOC_TRANS_END: u32 = 37895;
-pub const CAPI_REGISTER: u32 = 1074545409;
-pub const F2FS_IOC_COMPRESS_FILE: u32 = 62744;
-pub const USBDEVFS_DISCARDURB: u32 = 21771;
-pub const HE_GET_REG: u32 = 1074553184;
-pub const ATM_SETLOOP: u32 = 1074553171;
-pub const ATMSIGD_CTRL: u32 = 25072;
-pub const CIOC_KERNEL_VERSION: u32 = 3221512970;
-pub const BTRFS_IOC_CLONE_RANGE: u32 = 1075876877;
-pub const SNAPSHOT_UNFREEZE: u32 = 13058;
-pub const F2FS_IOC_START_VOLATILE_WRITE: u32 = 62723;
-pub const PMU_IOC_HAS_ADB: u32 = 2147762692;
-pub const I2OGETIOPS: u32 = 2149607680;
-pub const VIDIOC_S_FBUF: u32 = 1076647435;
-pub const PPRCONTROL: u32 = 2147577987;
-pub const CHIOSPICKER: u32 = 1074029317;
-pub const VFIO_IOMMU_SPAPR_REGISTER_MEMORY: u32 = 15221;
-pub const TUNGETSNDBUF: u32 = 2147767507;
-pub const GSMIOC_SETCONF: u32 = 1078740737;
-pub const IOC_PR_PREEMPT: u32 = 1075343563;
-pub const KCOV_INIT_TRACE: u32 = 2147771137;
-pub const SONYPI_IOCGBAT1CAP: u32 = 2147644930;
-pub const SWITCHTEC_IOCTL_FLASH_INFO: u32 = 2148554560;
-pub const MTIOCTOP: u32 = 1074294017;
-pub const VHOST_VDPA_SET_STATUS: u32 = 1073852274;
-pub const VHOST_SCSI_SET_EVENTS_MISSED: u32 = 1074048835;
-pub const VFIO_IOMMU_DIRTY_PAGES: u32 = 15221;
-pub const BTRFS_IOC_SCRUB_PROGRESS: u32 = 3288372253;
-pub const PPPIOCGMRU: u32 = 2147775571;
-pub const BTRFS_IOC_DEV_REPLACE: u32 = 3391657013;
-pub const PPPIOCGFLAGS: u32 = 2147775578;
-pub const NILFS_IOCTL_SET_SUINFO: u32 = 1075342989;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER2: u32 = 3222807316;
-pub const ATM_DELLECSADDR: u32 = 1074553231;
-pub const FW_CDEV_IOC_GET_SPEED: u32 = 8977;
-pub const PPPIOCGIDLE32: u32 = 2148037695;
-pub const VFIO_DEVICE_RESET: u32 = 15215;
-pub const GPIO_GET_LINEINFO_UNWATCH_IOCTL: u32 = 3221533708;
-pub const WDIOC_GETSTATUS: u32 = 2147768065;
-pub const BTRFS_IOC_SET_FEATURES: u32 = 1076925497;
-pub const IOCTL_MEI_CONNECT_CLIENT: u32 = 3222292481;
-pub const VIDIOC_OMAP3ISP_AEWB_CFG: u32 = 3223344835;
-pub const PCITEST_READ: u32 = 1074024453;
-pub const VFIO_GROUP_GET_STATUS: u32 = 15207;
-pub const MATROXFB_GET_ALL_OUTPUTS: u32 = 2147774203;
-pub const USBDEVFS_CLEAR_HALT: u32 = 2147767573;
-pub const VIDIOC_DECODER_CMD: u32 = 3225966176;
-pub const VIDIOC_G_AUDIO: u32 = 2150913569;
-pub const CCISS_RESCANDISK: u32 = 16912;
-pub const RIO_DISABLE_PORTWRITE_RANGE: u32 = 1074818316;
-pub const IOC_OPAL_SECURE_ERASE_LR: u32 = 1091596519;
-pub const USBDEVFS_REAPURB: u32 = 1074025740;
-pub const DFL_FPGA_CHECK_EXTENSION: u32 = 46593;
-pub const AUTOFS_IOC_PROTOVER: u32 = 2147783523;
-pub const FSL_HV_IOCTL_MEMCPY: u32 = 3223891717;
-pub const BTRFS_IOC_GET_FEATURES: u32 = 2149094457;
-pub const PCITEST_MSIX: u32 = 1074024455;
-pub const BTRFS_IOC_DEFRAG_RANGE: u32 = 1076925456;
-pub const UI_BEGIN_FF_ERASE: u32 = 3222033866;
-pub const DM_GET_TARGET_VERSION: u32 = 3241737489;
-pub const PPPIOCGIDLE: u32 = 2148037695;
-pub const NVRAM_SETCKS: u32 = 28737;
-pub const WDIOC_GETSUPPORT: u32 = 2150127360;
-pub const GSMIOC_ENABLE_NET: u32 = 1077167874;
-pub const GPIO_GET_CHIPINFO_IOCTL: u32 = 2151986177;
-pub const NE_ADD_VCPU: u32 = 3221532193;
-pub const EVIOCSKEYCODE_V2: u32 = 1076380932;
-pub const PTP_SYS_OFFSET_EXTENDED2: u32 = 3300932882;
-pub const SCIF_FENCE_WAIT: u32 = 3221517072;
-pub const RIO_TRANSFER: u32 = 3222826261;
-pub const FSL_HV_IOCTL_DOORBELL: u32 = 3221794566;
-pub const RIO_MPORT_MAINT_WRITE_LOCAL: u32 = 1075342598;
-pub const I2OEVTREG: u32 = 1074555146;
-pub const I2OPARMGET: u32 = 3222825220;
-pub const EVIOCGID: u32 = 2148025602;
-pub const BTRFS_IOC_QGROUP_CREATE: u32 = 1074828330;
-pub const AUTOFS_DEV_IOCTL_SETPIPEFD: u32 = 3222836088;
-pub const VIDIOC_S_PARM: u32 = 3234616854;
-pub const TUNSETSTEERINGEBPF: u32 = 2147767520;
-pub const ATM_GETNAMES: u32 = 1074291075;
-pub const VIDIOC_QUERYMENU: u32 = 3224131109;
-pub const DFL_FPGA_PORT_DMA_UNMAP: u32 = 46660;
-pub const I2OLCTGET: u32 = 3222038786;
-pub const FS_IOC_GET_ENCRYPTION_PWSALT: u32 = 1074816532;
-pub const NS_SETBUFLEV: u32 = 1074553186;
-pub const BLKCLOSEZONE: u32 = 1074795143;
-pub const SONET_GETFRSENSE: u32 = 2147901719;
-pub const UI_SET_EVBIT: u32 = 1074025828;
-pub const DM_LIST_VERSIONS: u32 = 3241737485;
-pub const HIDIOCGSTRING: u32 = 2164541444;
-pub const PPPIOCATTCHAN: u32 = 1074033720;
-pub const VDUSE_DEV_SET_CONFIG: u32 = 1074299154;
-pub const TUNGETFEATURES: u32 = 2147767503;
-pub const VFIO_GROUP_UNSET_CONTAINER: u32 = 15209;
-pub const IPMICTL_SET_MY_ADDRESS_CMD: u32 = 2147772689;
-pub const CCISS_REGNEWDISK: u32 = 1074020877;
-pub const VIDIOC_QUERY_DV_TIMINGS: u32 = 2156156515;
-pub const PHN_SETREGS: u32 = 1076391944;
-pub const FAT_IOCTL_GET_ATTRIBUTES: u32 = 2147774992;
-pub const FSL_MC_SEND_MC_COMMAND: u32 = 3225440992;
-pub const TUNGETIFF: u32 = 2147767506;
-pub const PTP_CLOCK_GETCAPS2: u32 = 2152742154;
-pub const BTRFS_IOC_RESIZE: u32 = 1342215171;
-pub const VHOST_SET_VRING_ENDIAN: u32 = 1074310931;
-pub const PPS_KC_BIND: u32 = 1074032805;
-pub const F2FS_IOC_WRITE_CHECKPOINT: u32 = 62727;
-pub const UI_SET_FFBIT: u32 = 1074025835;
-pub const IPMICTL_GET_MY_LUN_CMD: u32 = 2147772692;
-pub const CEC_ADAP_G_PHYS_ADDR: u32 = 2147639553;
-pub const CEC_G_MODE: u32 = 2147770632;
-pub const USBDEVFS_RESETEP: u32 = 2147767555;
-pub const MEDIA_REQUEST_IOC_QUEUE: u32 = 31872;
-pub const USBDEVFS_ALLOC_STREAMS: u32 = 2148029724;
-pub const MGSL_IOCSXCTRL: u32 = 27925;
-pub const MEDIA_IOC_G_TOPOLOGY: u32 = 3225975812;
-pub const PPPIOCUNBRIDGECHAN: u32 = 29748;
-pub const F2FS_IOC_COMMIT_ATOMIC_WRITE: u32 = 62722;
-pub const ISST_IF_GET_PLATFORM_INFO: u32 = 2147810816;
-pub const SCIF_FENCE_MARK: u32 = 3222303503;
-pub const USBDEVFS_RELEASE_PORT: u32 = 2147767577;
-pub const VFIO_CHECK_EXTENSION: u32 = 15205;
-pub const BTRFS_IOC_QGROUP_LIMIT: u32 = 2150667307;
-pub const FAT_IOCTL_GET_VOLUME_ID: u32 = 2147774995;
-pub const UI_SET_PHYS: u32 = 1074025836;
-pub const FDWERRORGET: u32 = 2149057047;
-pub const VIDIOC_SUBDEV_G_EDID: u32 = 3223606824;
-pub const MGSL_IOCGSTATS: u32 = 27911;
-pub const RPROC_SET_SHUTDOWN_ON_RELEASE: u32 = 1074050817;
-pub const SIOCGSTAMP_NEW: u32 = 2148567302;
-pub const RTC_WKALM_RD: u32 = 2150133776;
-pub const PHN_GET_REG: u32 = 3221516288;
-pub const DELL_WMI_SMBIOS_CMD: u32 = 3224655616;
-pub const PHN_NOT_OH: u32 = 28676;
-pub const PPGETMODES: u32 = 2147774615;
-pub const CHIOGPARAMS: u32 = 2148819718;
-pub const VFIO_DEVICE_GET_GFX_DMABUF: u32 = 15219;
-pub const VHOST_SET_VRING_BUSYLOOP_TIMEOUT: u32 = 1074310947;
-pub const VIDIOC_SUBDEV_G_SELECTION: u32 = 3225441853;
-pub const BTRFS_IOC_RM_DEV_V2: u32 = 1342215226;
-pub const MGSL_IOCWAITGPIO: u32 = 3222301970;
-pub const PMU_IOC_CAN_SLEEP: u32 = 2147762693;
-pub const KCOV_ENABLE: u32 = 25444;
-pub const BTRFS_IOC_CLONE: u32 = 1074041865;
-pub const F2FS_IOC_DEFRAGMENT: u32 = 3222336776;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE: u32 = 1074012942;
-pub const AGPIOC_ALLOCATE: u32 = 3221504262;
-pub const NE_SET_USER_MEMORY_REGION: u32 = 1075359267;
-pub const MGSL_IOCTXABORT: u32 = 27910;
-pub const MGSL_IOCSGPIO: u32 = 1074818320;
-pub const LIRC_SET_REC_CARRIER: u32 = 1074030868;
-pub const F2FS_IOC_FLUSH_DEVICE: u32 = 1074328842;
-pub const SNAPSHOT_ATOMIC_RESTORE: u32 = 13060;
-pub const RTC_UIE_OFF: u32 = 28676;
-pub const BT_BMC_IOCTL_SMS_ATN: u32 = 45312;
-pub const NVME_IOCTL_ID: u32 = 20032;
-pub const NE_START_ENCLAVE: u32 = 3222318628;
-pub const VIDIOC_STREAMON: u32 = 1074026002;
-pub const FDPOLLDRVSTAT: u32 = 2150892051;
-pub const AUTOFS_DEV_IOCTL_READY: u32 = 3222836086;
-pub const VIDIOC_ENUMAUDOUT: u32 = 3224655426;
-pub const VIDIOC_SUBDEV_S_STD: u32 = 1074288152;
-pub const WDIOC_GETTIMELEFT: u32 = 2147768074;
-pub const ATM_GETLINKRATE: u32 = 1074553217;
-pub const RTC_WKALM_SET: u32 = 1076391951;
-pub const VHOST_GET_BACKEND_FEATURES: u32 = 2148052774;
-pub const ATMARP_ENCAP: u32 = 25061;
-pub const CAPI_GET_FLAGS: u32 = 2147762979;
-pub const IPMICTL_SET_MY_CHANNEL_ADDRESS_CMD: u32 = 2147772696;
-pub const DFL_FPGA_FME_PORT_ASSIGN: u32 = 1074050690;
-pub const NS_GET_OWNER_UID: u32 = 46852;
-pub const VIDIOC_OVERLAY: u32 = 1074025998;
-pub const BTRFS_IOC_WAIT_SYNC: u32 = 1074304022;
-pub const GPIOHANDLE_SET_CONFIG_IOCTL: u32 = 3226776586;
-pub const VHOST_GET_VRING_ENDIAN: u32 = 1074310932;
-pub const ATM_GETADDR: u32 = 1074553222;
-pub const PHN_GET_REGS: u32 = 3221516290;
-pub const AUTOFS_DEV_IOCTL_REQUESTER: u32 = 3222836091;
-pub const AUTOFS_DEV_IOCTL_EXPIRE: u32 = 3222836092;
-pub const SNAPSHOT_S2RAM: u32 = 13067;
-pub const JSIOCSAXMAP: u32 = 1077963313;
-pub const F2FS_IOC_SET_COMPRESS_OPTION: u32 = 1073935638;
-pub const VBG_IOCTL_HGCM_DISCONNECT: u32 = 3223082501;
-pub const SCIF_FENCE_SIGNAL: u32 = 3223876369;
-pub const VFIO_DEVICE_GET_PCI_HOT_RESET_INFO: u32 = 15216;
-pub const VIDIOC_SUBDEV_ENUM_MBUS_CODE: u32 = 3224393218;
-pub const MMTIMER_GETOFFSET: u32 = 27904;
-pub const RIO_CM_CHAN_LISTEN: u32 = 1073898246;
-pub const ATM_SETSC: u32 = 1074029041;
-pub const F2FS_IOC_SHUTDOWN: u32 = 2147768445;
-pub const NVME_IOCTL_RESCAN: u32 = 20038;
-pub const BLKOPENZONE: u32 = 1074795142;
-pub const DM_VERSION: u32 = 3241737472;
-pub const CEC_TRANSMIT: u32 = 3224920325;
-pub const FS_IOC_GET_ENCRYPTION_POLICY_EX: u32 = 3221841430;
-pub const SIOCMKCLIP: u32 = 25056;
-pub const IPMI_BMC_IOCTL_CLEAR_SMS_ATN: u32 = 45313;
-pub const HIDIOCGVERSION: u32 = 2147764225;
-pub const VIDIOC_S_INPUT: u32 = 3221509671;
-pub const VIDIOC_G_CROP: u32 = 3222558267;
-pub const LIRC_SET_WIDEBAND_RECEIVER: u32 = 1074030883;
-pub const EVIOCGEFFECTS: u32 = 2147763588;
-pub const UVCIOC_CTRL_QUERY: u32 = 3222041889;
-pub const IOC_OPAL_GENERIC_TABLE_RW: u32 = 1094217963;
-pub const FS_IOC_READ_VERITY_METADATA: u32 = 3223873159;
-pub const ND_IOCTL_SET_CONFIG_DATA: u32 = 3221769734;
-pub const USBDEVFS_GETDRIVER: u32 = 1090802952;
-pub const IDT77105_GETSTAT: u32 = 1074553138;
-pub const HIDIOCINITREPORT: u32 = 18437;
-pub const VFIO_DEVICE_GET_INFO: u32 = 15211;
-pub const RIO_CM_CHAN_RECEIVE: u32 = 3222299402;
-pub const RNDGETENTCNT: u32 = 2147766784;
-pub const PPPIOCNEWUNIT: u32 = 3221517374;
-pub const BTRFS_IOC_INO_LOOKUP: u32 = 3489698834;
-pub const FDRESET: u32 = 596;
-pub const IOC_PR_REGISTER: u32 = 1075343560;
-pub const HIDIOCSREPORT: u32 = 1074546696;
-pub const TEE_IOC_OPEN_SESSION: u32 = 2148574210;
-pub const TEE_IOC_SUPPL_RECV: u32 = 2148574214;
-pub const BTRFS_IOC_BALANCE_CTL: u32 = 1074041889;
-pub const GPIO_GET_LINEINFO_WATCH_IOCTL: u32 = 3225990155;
-pub const HIDIOCGRAWINFO: u32 = 2148026371;
-pub const PPPIOCSCOMPRESS: u32 = 1074558029;
-pub const USBDEVFS_CONNECTINFO: u32 = 1074287889;
-pub const BLKRESETZONE: u32 = 1074795139;
-pub const CHIOINITELEM: u32 = 25361;
-pub const NILFS_IOCTL_SET_ALLOC_RANGE: u32 = 1074818700;
-pub const AUTOFS_DEV_IOCTL_CATATONIC: u32 = 3222836089;
-pub const RIO_MPORT_MAINT_HDID_SET: u32 = 1073900801;
-pub const PPGETPHASE: u32 = 2147774617;
-pub const USBDEVFS_DISCONNECT_CLAIM: u32 = 2164806939;
-pub const FDMSGON: u32 = 581;
-pub const VIDIOC_G_SLICED_VBI_CAP: u32 = 3228849733;
-pub const BTRFS_IOC_BALANCE_V2: u32 = 3288372256;
-pub const MEDIA_REQUEST_IOC_REINIT: u32 = 31873;
-pub const IOC_OPAL_ERASE_LR: u32 = 1091596518;
-pub const FDFMTBEG: u32 = 583;
-pub const RNDRESEEDCRNG: u32 = 20999;
-pub const ISST_IF_GET_PHY_ID: u32 = 3221552641;
-pub const TUNSETNOCSUM: u32 = 1074025672;
-pub const SONET_GETSTAT: u32 = 2149867792;
-pub const TFD_IOC_SET_TICKS: u32 = 1074287616;
-pub const PPDATADIR: u32 = 1074032784;
-pub const IOC_OPAL_ENABLE_DISABLE_MBR: u32 = 1091596517;
-pub const GPIO_V2_GET_LINE_IOCTL: u32 = 3260068871;
-pub const RIO_CM_CHAN_SEND: u32 = 1074815753;
-pub const PPWCTLONIRQ: u32 = 1073836178;
-pub const SONYPI_IOCGBRT: u32 = 2147579392;
-pub const IOC_PR_RELEASE: u32 = 1074819274;
-pub const PPCLRIRQ: u32 = 2147774611;
-pub const IPMICTL_SET_MY_CHANNEL_LUN_CMD: u32 = 2147772698;
-pub const MGSL_IOCSXSYNC: u32 = 27923;
-pub const HPET_IE_OFF: u32 = 26626;
-pub const IOC_OPAL_ACTIVATE_USR: u32 = 1091596513;
-pub const SONET_SETFRAMING: u32 = 1074028821;
-pub const PERF_EVENT_IOC_PAUSE_OUTPUT: u32 = 1074013193;
-pub const BTRFS_IOC_LOGICAL_INO_V2: u32 = 3224933435;
-pub const VBG_IOCTL_HGCM_CONNECT: u32 = 3231471108;
-pub const BLKFINISHZONE: u32 = 1074795144;
-pub const EVIOCREVOKE: u32 = 1074021777;
-pub const VFIO_DEVICE_FEATURE: u32 = 15221;
-pub const CCISS_GETPCIINFO: u32 = 2148024833;
-pub const ISST_IF_MBOX_COMMAND: u32 = 3221552643;
-pub const SCIF_ACCEPTREQ: u32 = 3222303492;
-pub const PERF_EVENT_IOC_QUERY_BPF: u32 = 3221496842;
-pub const VIDIOC_STREAMOFF: u32 = 1074026003;
-pub const VDUSE_DESTROY_DEV: u32 = 1090552067;
-pub const FDGETFDCSTAT: u32 = 2149581333;
-pub const CM_IOCGATR: u32 = 3221512961;
-pub const VIDIOC_S_PRIORITY: u32 = 1074026052;
-pub const SNAPSHOT_FREEZE: u32 = 13057;
-pub const VIDIOC_ENUMINPUT: u32 = 3226490394;
-pub const ZATM_GETPOOLZ: u32 = 1074553186;
-pub const RIO_DISABLE_DOORBELL_RANGE: u32 = 1074294026;
-pub const GPIO_V2_GET_LINEINFO_WATCH_IOCTL: u32 = 3238048774;
-pub const VIDIOC_G_STD: u32 = 2148029975;
-pub const USBDEVFS_ALLOW_SUSPEND: u32 = 21794;
-pub const SONET_GETSTATZ: u32 = 2149867793;
-pub const SCIF_ACCEPTREG: u32 = 3221779205;
-pub const VIDIOC_ENCODER_CMD: u32 = 3223869005;
-pub const PPPIOCSRASYNCMAP: u32 = 1074033748;
-pub const IOCTL_MEI_NOTIFY_SET: u32 = 1074022402;
-pub const BTRFS_IOC_QUOTA_RESCAN_STATUS: u32 = 2151715885;
-pub const F2FS_IOC_GARBAGE_COLLECT: u32 = 1074066694;
-pub const ATMLEC_CTRL: u32 = 25040;
-pub const MATROXFB_GET_AVAILABLE_OUTPUTS: u32 = 2147774201;
-pub const DM_DEV_CREATE: u32 = 3241737475;
-pub const VHOST_VDPA_GET_VRING_NUM: u32 = 2147659638;
-pub const VIDIOC_G_CTRL: u32 = 3221771803;
-pub const NBD_CLEAR_SOCK: u32 = 43780;
-pub const VFIO_DEVICE_QUERY_GFX_PLANE: u32 = 15218;
-pub const WDIOC_KEEPALIVE: u32 = 2147768069;
-pub const NVME_IOCTL_SUBSYS_RESET: u32 = 20037;
-pub const PTP_EXTTS_REQUEST2: u32 = 1074806027;
-pub const PCITEST_BAR: u32 = 20481;
-pub const MGSL_IOCGGPIO: u32 = 2148560145;
-pub const EVIOCSREP: u32 = 1074283779;
-pub const VFIO_DEVICE_GET_IRQ_INFO: u32 = 15213;
-pub const HPET_DPI: u32 = 26629;
-pub const VDUSE_VQ_SETUP_KICKFD: u32 = 1074299158;
-pub const ND_IOCTL_CALL: u32 = 3225439754;
-pub const HIDIOCGDEVINFO: u32 = 2149337091;
-pub const DM_TABLE_DEPS: u32 = 3241737483;
-pub const BTRFS_IOC_DEV_INFO: u32 = 3489698846;
-pub const VDUSE_IOTLB_GET_FD: u32 = 3223355664;
-pub const FW_CDEV_IOC_GET_INFO: u32 = 3223855872;
-pub const VIDIOC_G_PRIORITY: u32 = 2147767875;
-pub const ATM_NEWBACKENDIF: u32 = 1073897971;
-pub const VIDIOC_S_EXT_CTRLS: u32 = 3222820424;
-pub const VIDIOC_SUBDEV_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const VIDIOC_OMAP3ISP_CCDC_CFG: u32 = 3223344833;
-pub const VIDIOC_S_HW_FREQ_SEEK: u32 = 1076909650;
-pub const DM_TABLE_LOAD: u32 = 3241737481;
-pub const F2FS_IOC_START_ATOMIC_WRITE: u32 = 62721;
-pub const VIDIOC_G_OUTPUT: u32 = 2147767854;
-pub const ATM_DROPPARTY: u32 = 1074029045;
-pub const CHIOGELEM: u32 = 1080845072;
-pub const BTRFS_IOC_GET_SUPPORTED_FEATURES: u32 = 2152240185;
-pub const EVIOCSKEYCODE: u32 = 1074283780;
-pub const NE_GET_IMAGE_LOAD_INFO: u32 = 3222318626;
-pub const TUNSETLINK: u32 = 1074025677;
-pub const FW_CDEV_IOC_ADD_DESCRIPTOR: u32 = 3222807302;
-pub const BTRFS_IOC_SCRUB_CANCEL: u32 = 37916;
-pub const PPS_SETPARAMS: u32 = 1074032802;
-pub const IOC_OPAL_LR_SETUP: u32 = 1093169379;
-pub const FW_CDEV_IOC_DEALLOCATE: u32 = 1074012931;
-pub const WDIOC_SETTIMEOUT: u32 = 3221509894;
-pub const IOC_WATCH_QUEUE_SET_FILTER: u32 = 22369;
-pub const CAPI_GET_MANUFACTURER: u32 = 3221504774;
-pub const VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY: u32 = 15222;
-pub const ASPEED_P2A_CTRL_IOCTL_SET_WINDOW: u32 = 1074836224;
-pub const VIDIOC_G_EDID: u32 = 3223606824;
-pub const F2FS_IOC_GARBAGE_COLLECT_RANGE: u32 = 1075377419;
-pub const RIO_MAP_INBOUND: u32 = 3223874833;
-pub const IOC_OPAL_TAKE_OWNERSHIP: u32 = 1091072222;
-pub const USBDEVFS_CLAIM_PORT: u32 = 2147767576;
-pub const VIDIOC_S_AUDIO: u32 = 1077171746;
-pub const FS_IOC_GET_ENCRYPTION_NONCE: u32 = 2148558363;
-pub const FW_CDEV_IOC_SEND_STREAM_PACKET: u32 = 1076372243;
-pub const BTRFS_IOC_SNAP_DESTROY: u32 = 1342215183;
-pub const SNAPSHOT_FREE: u32 = 13061;
-pub const I8K_GET_SPEED: u32 = 3221514629;
-pub const HIDIOCGREPORT: u32 = 1074546695;
-pub const HPET_EPI: u32 = 26628;
-pub const JSIOCSCORR: u32 = 1076128289;
-pub const IOC_PR_PREEMPT_ABORT: u32 = 1075343564;
-pub const RIO_MAP_OUTBOUND: u32 = 3223874831;
-pub const ATM_SETESI: u32 = 1074553228;
-pub const FW_CDEV_IOC_START_ISO: u32 = 1074799370;
-pub const ATM_DELADDR: u32 = 1074553225;
-pub const PPFCONTROL: u32 = 1073901710;
-pub const SONYPI_IOCGFAN: u32 = 2147579402;
-pub const RTC_IRQP_SET: u32 = 1074032652;
-pub const PCITEST_WRITE: u32 = 1074024452;
-pub const PPCLAIM: u32 = 28811;
-pub const VIDIOC_S_JPEGCOMP: u32 = 1082938942;
-pub const IPMICTL_UNREGISTER_FOR_CMD: u32 = 2147641615;
-pub const VHOST_SET_FEATURES: u32 = 1074310912;
-pub const TOSHIBA_ACPI_SCI: u32 = 3222828177;
-pub const VIDIOC_DQBUF: u32 = 3225703953;
-pub const BTRFS_IOC_BALANCE_PROGRESS: u32 = 2214630434;
-pub const BTRFS_IOC_SUBVOL_SETFLAGS: u32 = 1074304026;
-pub const ATMLEC_MCAST: u32 = 25042;
-pub const MMTIMER_GETFREQ: u32 = 2147773698;
-pub const VIDIOC_G_SELECTION: u32 = 3225441886;
-pub const RTC_ALM_SET: u32 = 1076129799;
-pub const PPPOEIOCSFWD: u32 = 1074049280;
-pub const IPMICTL_GET_MAINTENANCE_MODE_CMD: u32 = 2147772702;
-pub const FS_IOC_ENABLE_VERITY: u32 = 1082156677;
-pub const NILFS_IOCTL_GET_BDESCS: u32 = 3222826631;
-pub const FDFMTEND: u32 = 585;
-pub const DMA_BUF_SET_NAME: u32 = 1074029057;
-pub const UI_BEGIN_FF_UPLOAD: u32 = 3227538888;
-pub const RTC_UIE_ON: u32 = 28675;
-pub const PPRELEASE: u32 = 28812;
-pub const VFIO_IOMMU_UNMAP_DMA: u32 = 15218;
-pub const VIDIOC_OMAP3ISP_PRV_CFG: u32 = 3225179842;
-pub const GPIO_GET_LINEHANDLE_IOCTL: u32 = 3245126659;
-pub const VFAT_IOCTL_READDIR_BOTH: u32 = 2182640129;
-pub const NVME_IOCTL_ADMIN_CMD: u32 = 3225964097;
-pub const VHOST_SET_VRING_KICK: u32 = 1074310944;
-pub const BTRFS_IOC_SUBVOL_CREATE_V2: u32 = 1342215192;
-pub const BTRFS_IOC_SNAP_CREATE: u32 = 1342215169;
-pub const SONYPI_IOCGBAT2CAP: u32 = 2147644932;
-pub const PPNEGOT: u32 = 1074032785;
-pub const NBD_PRINT_DEBUG: u32 = 43782;
-pub const BTRFS_IOC_INO_LOOKUP_USER: u32 = 3489698878;
-pub const BTRFS_IOC_GET_SUBVOL_ROOTREF: u32 = 3489698877;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS: u32 = 3225445913;
-pub const BTRFS_IOC_FS_INFO: u32 = 2214630431;
-pub const VIDIOC_ENUM_FMT: u32 = 3225441794;
-pub const VIDIOC_G_INPUT: u32 = 2147767846;
-pub const VTPM_PROXY_IOC_NEW_DEV: u32 = 3222577408;
-pub const DFL_FPGA_FME_ERR_GET_IRQ_NUM: u32 = 2147792515;
-pub const ND_IOCTL_DIMM_FLAGS: u32 = 3221769731;
-pub const BTRFS_IOC_QUOTA_RESCAN: u32 = 1077974060;
-pub const MMTIMER_GETCOUNTER: u32 = 2147773705;
-pub const MATROXFB_GET_OUTPUT_MODE: u32 = 3221516026;
-pub const BTRFS_IOC_QUOTA_RESCAN_WAIT: u32 = 37934;
-pub const RIO_CM_CHAN_BIND: u32 = 1074291461;
-pub const HIDIOCGRDESC: u32 = 2416199682;
-pub const MGSL_IOCGIF: u32 = 27915;
-pub const VIDIOC_S_OUTPUT: u32 = 3221509679;
-pub const HIDIOCGREPORTINFO: u32 = 3222030345;
-pub const WDIOC_GETBOOTSTATUS: u32 = 2147768066;
-pub const VDUSE_VQ_GET_INFO: u32 = 3224404245;
-pub const ACRN_IOCTL_ASSIGN_PCIDEV: u32 = 1076142677;
-pub const BLKGETDISKSEQ: u32 = 2148012672;
-pub const ACRN_IOCTL_PM_GET_CPU_STATE: u32 = 3221791328;
-pub const ACRN_IOCTL_DESTROY_VM: u32 = 41489;
-pub const ACRN_IOCTL_SET_PTDEV_INTR: u32 = 1075094099;
-pub const ACRN_IOCTL_CREATE_IOREQ_CLIENT: u32 = 41522;
-pub const ACRN_IOCTL_IRQFD: u32 = 1075356273;
-pub const ACRN_IOCTL_CREATE_VM: u32 = 3224412688;
-pub const ACRN_IOCTL_INJECT_MSI: u32 = 1074831907;
-pub const ACRN_IOCTL_ATTACH_IOREQ_CLIENT: u32 = 41523;
-pub const ACRN_IOCTL_RESET_PTDEV_INTR: u32 = 1075094100;
-pub const ACRN_IOCTL_NOTIFY_REQUEST_FINISH: u32 = 1074307633;
-pub const ACRN_IOCTL_SET_IRQLINE: u32 = 1074307621;
-pub const ACRN_IOCTL_START_VM: u32 = 41490;
-pub const ACRN_IOCTL_SET_VCPU_REGS: u32 = 1093181974;
-pub const ACRN_IOCTL_SET_MEMSEG: u32 = 1075880513;
-pub const ACRN_IOCTL_PAUSE_VM: u32 = 41491;
-pub const ACRN_IOCTL_CLEAR_VM_IOREQ: u32 = 41525;
-pub const ACRN_IOCTL_UNSET_MEMSEG: u32 = 1075880514;
-pub const ACRN_IOCTL_IOEVENTFD: u32 = 1075880560;
-pub const ACRN_IOCTL_DEASSIGN_PCIDEV: u32 = 1076142678;
-pub const ACRN_IOCTL_RESET_VM: u32 = 41493;
-pub const ACRN_IOCTL_DESTROY_IOREQ_CLIENT: u32 = 41524;
-pub const ACRN_IOCTL_VM_INTR_MONITOR: u32 = 1074045476;
diff --git a/vendor/linux-raw-sys-0.3.2/src/arm/netlink.rs b/vendor/linux-raw-sys-0.3.2/src/arm/netlink.rs
deleted file mode 100644
index 019805303..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/arm/netlink.rs
+++ /dev/null
@@ -1,2861 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const __BITS_PER_LONG: u32 = 32;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const NETLINK_ROUTE: u32 = 0;
-pub const NETLINK_UNUSED: u32 = 1;
-pub const NETLINK_USERSOCK: u32 = 2;
-pub const NETLINK_FIREWALL: u32 = 3;
-pub const NETLINK_SOCK_DIAG: u32 = 4;
-pub const NETLINK_NFLOG: u32 = 5;
-pub const NETLINK_XFRM: u32 = 6;
-pub const NETLINK_SELINUX: u32 = 7;
-pub const NETLINK_ISCSI: u32 = 8;
-pub const NETLINK_AUDIT: u32 = 9;
-pub const NETLINK_FIB_LOOKUP: u32 = 10;
-pub const NETLINK_CONNECTOR: u32 = 11;
-pub const NETLINK_NETFILTER: u32 = 12;
-pub const NETLINK_IP6_FW: u32 = 13;
-pub const NETLINK_DNRTMSG: u32 = 14;
-pub const NETLINK_KOBJECT_UEVENT: u32 = 15;
-pub const NETLINK_GENERIC: u32 = 16;
-pub const NETLINK_SCSITRANSPORT: u32 = 18;
-pub const NETLINK_ECRYPTFS: u32 = 19;
-pub const NETLINK_RDMA: u32 = 20;
-pub const NETLINK_CRYPTO: u32 = 21;
-pub const NETLINK_SMC: u32 = 22;
-pub const NETLINK_INET_DIAG: u32 = 4;
-pub const MAX_LINKS: u32 = 32;
-pub const NLM_F_REQUEST: u32 = 1;
-pub const NLM_F_MULTI: u32 = 2;
-pub const NLM_F_ACK: u32 = 4;
-pub const NLM_F_ECHO: u32 = 8;
-pub const NLM_F_DUMP_INTR: u32 = 16;
-pub const NLM_F_DUMP_FILTERED: u32 = 32;
-pub const NLM_F_ROOT: u32 = 256;
-pub const NLM_F_MATCH: u32 = 512;
-pub const NLM_F_ATOMIC: u32 = 1024;
-pub const NLM_F_DUMP: u32 = 768;
-pub const NLM_F_REPLACE: u32 = 256;
-pub const NLM_F_EXCL: u32 = 512;
-pub const NLM_F_CREATE: u32 = 1024;
-pub const NLM_F_APPEND: u32 = 2048;
-pub const NLM_F_NONREC: u32 = 256;
-pub const NLM_F_BULK: u32 = 512;
-pub const NLM_F_CAPPED: u32 = 256;
-pub const NLM_F_ACK_TLVS: u32 = 512;
-pub const NLMSG_ALIGNTO: u32 = 4;
-pub const NLMSG_NOOP: u32 = 1;
-pub const NLMSG_ERROR: u32 = 2;
-pub const NLMSG_DONE: u32 = 3;
-pub const NLMSG_OVERRUN: u32 = 4;
-pub const NLMSG_MIN_TYPE: u32 = 16;
-pub const NETLINK_ADD_MEMBERSHIP: u32 = 1;
-pub const NETLINK_DROP_MEMBERSHIP: u32 = 2;
-pub const NETLINK_PKTINFO: u32 = 3;
-pub const NETLINK_BROADCAST_ERROR: u32 = 4;
-pub const NETLINK_NO_ENOBUFS: u32 = 5;
-pub const NETLINK_RX_RING: u32 = 6;
-pub const NETLINK_TX_RING: u32 = 7;
-pub const NETLINK_LISTEN_ALL_NSID: u32 = 8;
-pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9;
-pub const NETLINK_CAP_ACK: u32 = 10;
-pub const NETLINK_EXT_ACK: u32 = 11;
-pub const NETLINK_GET_STRICT_CHK: u32 = 12;
-pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4;
-pub const NET_MAJOR: u32 = 36;
-pub const NLA_F_NESTED: u32 = 32768;
-pub const NLA_F_NET_BYTEORDER: u32 = 16384;
-pub const NLA_TYPE_MASK: i32 = -49153;
-pub const NLA_ALIGNTO: u32 = 4;
-pub const MACVLAN_FLAG_NOPROMISC: u32 = 1;
-pub const MACVLAN_FLAG_NODST: u32 = 2;
-pub const IPVLAN_F_PRIVATE: u32 = 1;
-pub const IPVLAN_F_VEPA: u32 = 2;
-pub const TUNNEL_MSG_FLAG_STATS: u32 = 1;
-pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1;
-pub const MAX_VLAN_LIST_LEN: u32 = 1;
-pub const PORT_PROFILE_MAX: u32 = 40;
-pub const PORT_UUID_MAX: u32 = 16;
-pub const PORT_SELF_VF: i32 = -1;
-pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1;
-pub const XDP_FLAGS_SKB_MODE: u32 = 2;
-pub const XDP_FLAGS_DRV_MODE: u32 = 4;
-pub const XDP_FLAGS_HW_MODE: u32 = 8;
-pub const XDP_FLAGS_REPLACE: u32 = 16;
-pub const XDP_FLAGS_MODES: u32 = 14;
-pub const XDP_FLAGS_MASK: u32 = 31;
-pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1;
-pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32;
-pub const IFA_F_SECONDARY: u32 = 1;
-pub const IFA_F_TEMPORARY: u32 = 1;
-pub const IFA_F_NODAD: u32 = 2;
-pub const IFA_F_OPTIMISTIC: u32 = 4;
-pub const IFA_F_DADFAILED: u32 = 8;
-pub const IFA_F_HOMEADDRESS: u32 = 16;
-pub const IFA_F_DEPRECATED: u32 = 32;
-pub const IFA_F_TENTATIVE: u32 = 64;
-pub const IFA_F_PERMANENT: u32 = 128;
-pub const IFA_F_MANAGETEMPADDR: u32 = 256;
-pub const IFA_F_NOPREFIXROUTE: u32 = 512;
-pub const IFA_F_MCAUTOJOIN: u32 = 1024;
-pub const IFA_F_STABLE_PRIVACY: u32 = 2048;
-pub const IFAPROT_UNSPEC: u32 = 0;
-pub const IFAPROT_KERNEL_LO: u32 = 1;
-pub const IFAPROT_KERNEL_RA: u32 = 2;
-pub const IFAPROT_KERNEL_LL: u32 = 3;
-pub const NTF_USE: u32 = 1;
-pub const NTF_SELF: u32 = 2;
-pub const NTF_MASTER: u32 = 4;
-pub const NTF_PROXY: u32 = 8;
-pub const NTF_EXT_LEARNED: u32 = 16;
-pub const NTF_OFFLOADED: u32 = 32;
-pub const NTF_STICKY: u32 = 64;
-pub const NTF_ROUTER: u32 = 128;
-pub const NTF_EXT_MANAGED: u32 = 1;
-pub const NTF_EXT_LOCKED: u32 = 2;
-pub const NUD_INCOMPLETE: u32 = 1;
-pub const NUD_REACHABLE: u32 = 2;
-pub const NUD_STALE: u32 = 4;
-pub const NUD_DELAY: u32 = 8;
-pub const NUD_PROBE: u32 = 16;
-pub const NUD_FAILED: u32 = 32;
-pub const NUD_NOARP: u32 = 64;
-pub const NUD_PERMANENT: u32 = 128;
-pub const NUD_NONE: u32 = 0;
-pub const RTNL_FAMILY_IPMR: u32 = 128;
-pub const RTNL_FAMILY_IP6MR: u32 = 129;
-pub const RTNL_FAMILY_MAX: u32 = 129;
-pub const RTA_ALIGNTO: u32 = 4;
-pub const RTPROT_UNSPEC: u32 = 0;
-pub const RTPROT_REDIRECT: u32 = 1;
-pub const RTPROT_KERNEL: u32 = 2;
-pub const RTPROT_BOOT: u32 = 3;
-pub const RTPROT_STATIC: u32 = 4;
-pub const RTPROT_GATED: u32 = 8;
-pub const RTPROT_RA: u32 = 9;
-pub const RTPROT_MRT: u32 = 10;
-pub const RTPROT_ZEBRA: u32 = 11;
-pub const RTPROT_BIRD: u32 = 12;
-pub const RTPROT_DNROUTED: u32 = 13;
-pub const RTPROT_XORP: u32 = 14;
-pub const RTPROT_NTK: u32 = 15;
-pub const RTPROT_DHCP: u32 = 16;
-pub const RTPROT_MROUTED: u32 = 17;
-pub const RTPROT_KEEPALIVED: u32 = 18;
-pub const RTPROT_BABEL: u32 = 42;
-pub const RTPROT_OPENR: u32 = 99;
-pub const RTPROT_BGP: u32 = 186;
-pub const RTPROT_ISIS: u32 = 187;
-pub const RTPROT_OSPF: u32 = 188;
-pub const RTPROT_RIP: u32 = 189;
-pub const RTPROT_EIGRP: u32 = 192;
-pub const RTM_F_NOTIFY: u32 = 256;
-pub const RTM_F_CLONED: u32 = 512;
-pub const RTM_F_EQUALIZE: u32 = 1024;
-pub const RTM_F_PREFIX: u32 = 2048;
-pub const RTM_F_LOOKUP_TABLE: u32 = 4096;
-pub const RTM_F_FIB_MATCH: u32 = 8192;
-pub const RTM_F_OFFLOAD: u32 = 16384;
-pub const RTM_F_TRAP: u32 = 32768;
-pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912;
-pub const RTNH_F_DEAD: u32 = 1;
-pub const RTNH_F_PERVASIVE: u32 = 2;
-pub const RTNH_F_ONLINK: u32 = 4;
-pub const RTNH_F_OFFLOAD: u32 = 8;
-pub const RTNH_F_LINKDOWN: u32 = 16;
-pub const RTNH_F_UNRESOLVED: u32 = 32;
-pub const RTNH_F_TRAP: u32 = 64;
-pub const RTNH_COMPARE_MASK: u32 = 89;
-pub const RTNH_ALIGNTO: u32 = 4;
-pub const RTNETLINK_HAVE_PEERINFO: u32 = 1;
-pub const RTAX_FEATURE_ECN: u32 = 1;
-pub const RTAX_FEATURE_SACK: u32 = 2;
-pub const RTAX_FEATURE_TIMESTAMP: u32 = 4;
-pub const RTAX_FEATURE_ALLFRAG: u32 = 8;
-pub const RTAX_FEATURE_MASK: u32 = 15;
-pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295;
-pub const TCA_DUMP_FLAGS_TERSE: u32 = 1;
-pub const RTMGRP_LINK: u32 = 1;
-pub const RTMGRP_NOTIFY: u32 = 2;
-pub const RTMGRP_NEIGH: u32 = 4;
-pub const RTMGRP_TC: u32 = 8;
-pub const RTMGRP_IPV4_IFADDR: u32 = 16;
-pub const RTMGRP_IPV4_MROUTE: u32 = 32;
-pub const RTMGRP_IPV4_ROUTE: u32 = 64;
-pub const RTMGRP_IPV4_RULE: u32 = 128;
-pub const RTMGRP_IPV6_IFADDR: u32 = 256;
-pub const RTMGRP_IPV6_MROUTE: u32 = 512;
-pub const RTMGRP_IPV6_ROUTE: u32 = 1024;
-pub const RTMGRP_IPV6_IFINFO: u32 = 2048;
-pub const RTMGRP_DECnet_IFADDR: u32 = 4096;
-pub const RTMGRP_DECnet_ROUTE: u32 = 16384;
-pub const RTMGRP_IPV6_PREFIX: u32 = 131072;
-pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2;
-pub const RTEXT_FILTER_VF: u32 = 1;
-pub const RTEXT_FILTER_BRVLAN: u32 = 2;
-pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4;
-pub const RTEXT_FILTER_SKIP_STATS: u32 = 8;
-pub const RTEXT_FILTER_MRP: u32 = 16;
-pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32;
-pub const RTEXT_FILTER_CFM_STATUS: u32 = 64;
-pub const RTEXT_FILTER_MST: u32 = 128;
-pub type size_t = crate::ctypes::c_uint;
-pub type ssize_t = crate::ctypes::c_int;
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 32usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_mode_t = crate::ctypes::c_ushort;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort;
-pub type __kernel_uid_t = crate::ctypes::c_ushort;
-pub type __kernel_gid_t = crate::ctypes::c_ushort;
-pub type __kernel_old_dev_t = crate::ctypes::c_ushort;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_uid_t = __kernel_uid_t;
-pub type __kernel_old_gid_t = __kernel_gid_t;
-pub type __kernel_size_t = crate::ctypes::c_uint;
-pub type __kernel_ssize_t = crate::ctypes::c_int;
-pub type __kernel_ptrdiff_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_nl {
-pub nl_family: __kernel_sa_family_t,
-pub nl_pad: crate::ctypes::c_ushort,
-pub nl_pid: __u32,
-pub nl_groups: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsghdr {
-pub nlmsg_len: __u32,
-pub nlmsg_type: __u16,
-pub nlmsg_flags: __u16,
-pub nlmsg_seq: __u32,
-pub nlmsg_pid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsgerr {
-pub error: crate::ctypes::c_int,
-pub msg: nlmsghdr,
-}
-impl nlmsgerr_attrs {
-pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nlmsgerr_attrs {
-NLMSGERR_ATTR_UNUSED = 0,
-NLMSGERR_ATTR_MSG = 1,
-NLMSGERR_ATTR_OFFS = 2,
-NLMSGERR_ATTR_COOKIE = 3,
-NLMSGERR_ATTR_POLICY = 4,
-NLMSGERR_ATTR_MISS_TYPE = 5,
-NLMSGERR_ATTR_MISS_NEST = 6,
-__NLMSGERR_ATTR_MAX = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_pktinfo {
-pub group: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_req {
-pub nm_block_size: crate::ctypes::c_uint,
-pub nm_block_nr: crate::ctypes::c_uint,
-pub nm_frame_size: crate::ctypes::c_uint,
-pub nm_frame_nr: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_hdr {
-pub nm_status: crate::ctypes::c_uint,
-pub nm_len: crate::ctypes::c_uint,
-pub nm_group: __u32,
-pub nm_pid: __u32,
-pub nm_uid: __u32,
-pub nm_gid: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nl_mmap_status {
-NL_MMAP_STATUS_UNUSED = 0,
-NL_MMAP_STATUS_RESERVED = 1,
-NL_MMAP_STATUS_VALID = 2,
-NL_MMAP_STATUS_COPY = 3,
-NL_MMAP_STATUS_SKIP = 4,
-}
-pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED;
-pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-NETLINK_UNCONNECTED = 0,
-NETLINK_CONNECTED = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlattr {
-pub nla_len: __u16,
-pub nla_type: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nla_bitfield32 {
-pub value: __u32,
-pub selector: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_attribute_type {
-NL_ATTR_TYPE_INVALID = 0,
-NL_ATTR_TYPE_FLAG = 1,
-NL_ATTR_TYPE_U8 = 2,
-NL_ATTR_TYPE_U16 = 3,
-NL_ATTR_TYPE_U32 = 4,
-NL_ATTR_TYPE_U64 = 5,
-NL_ATTR_TYPE_S8 = 6,
-NL_ATTR_TYPE_S16 = 7,
-NL_ATTR_TYPE_S32 = 8,
-NL_ATTR_TYPE_S64 = 9,
-NL_ATTR_TYPE_BINARY = 10,
-NL_ATTR_TYPE_STRING = 11,
-NL_ATTR_TYPE_NUL_STRING = 12,
-NL_ATTR_TYPE_NESTED = 13,
-NL_ATTR_TYPE_NESTED_ARRAY = 14,
-NL_ATTR_TYPE_BITFIELD32 = 15,
-}
-impl netlink_policy_type_attr {
-pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_policy_type_attr {
-NL_POLICY_TYPE_ATTR_UNSPEC = 0,
-NL_POLICY_TYPE_ATTR_TYPE = 1,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5,
-NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6,
-NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7,
-NL_POLICY_TYPE_ATTR_POLICY_IDX = 8,
-NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9,
-NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10,
-NL_POLICY_TYPE_ATTR_PAD = 11,
-NL_POLICY_TYPE_ATTR_MASK = 12,
-__NL_POLICY_TYPE_ATTR_MAX = 13,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats {
-pub rx_packets: __u32,
-pub tx_packets: __u32,
-pub rx_bytes: __u32,
-pub tx_bytes: __u32,
-pub rx_errors: __u32,
-pub tx_errors: __u32,
-pub rx_dropped: __u32,
-pub tx_dropped: __u32,
-pub multicast: __u32,
-pub collisions: __u32,
-pub rx_length_errors: __u32,
-pub rx_over_errors: __u32,
-pub rx_crc_errors: __u32,
-pub rx_frame_errors: __u32,
-pub rx_fifo_errors: __u32,
-pub rx_missed_errors: __u32,
-pub tx_aborted_errors: __u32,
-pub tx_carrier_errors: __u32,
-pub tx_fifo_errors: __u32,
-pub tx_heartbeat_errors: __u32,
-pub tx_window_errors: __u32,
-pub rx_compressed: __u32,
-pub tx_compressed: __u32,
-pub rx_nohandler: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-pub collisions: __u64,
-pub rx_length_errors: __u64,
-pub rx_over_errors: __u64,
-pub rx_crc_errors: __u64,
-pub rx_frame_errors: __u64,
-pub rx_fifo_errors: __u64,
-pub rx_missed_errors: __u64,
-pub tx_aborted_errors: __u64,
-pub tx_carrier_errors: __u64,
-pub tx_fifo_errors: __u64,
-pub tx_heartbeat_errors: __u64,
-pub tx_window_errors: __u64,
-pub rx_compressed: __u64,
-pub tx_compressed: __u64,
-pub rx_nohandler: __u64,
-pub rx_otherhost_dropped: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_hw_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_ifmap {
-pub mem_start: __u64,
-pub mem_end: __u64,
-pub base_addr: __u64,
-pub irq: __u16,
-pub dma: __u8,
-pub port: __u8,
-}
-pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC;
-pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS;
-pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST;
-pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME;
-pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU;
-pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK;
-pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC;
-pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS;
-pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST;
-pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY;
-pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER;
-pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS;
-pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO;
-pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN;
-pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP;
-pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT;
-pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE;
-pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE;
-pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO;
-pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID;
-pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS;
-pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF;
-pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST;
-pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64;
-pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS;
-pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF;
-pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC;
-pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP;
-pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD;
-pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK;
-pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY;
-pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES;
-pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES;
-pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER;
-pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID;
-pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES;
-pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID;
-pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID;
-pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME;
-pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN;
-pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS;
-pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE;
-pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD;
-pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP;
-pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT;
-pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID;
-pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT;
-pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT;
-pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX;
-pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU;
-pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU;
-pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST;
-pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME;
-pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS;
-pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON;
-pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME;
-pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME;
-pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS;
-pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI;
-pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT;
-pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IFLA_UNSPEC = 0,
-IFLA_ADDRESS = 1,
-IFLA_BROADCAST = 2,
-IFLA_IFNAME = 3,
-IFLA_MTU = 4,
-IFLA_LINK = 5,
-IFLA_QDISC = 6,
-IFLA_STATS = 7,
-IFLA_COST = 8,
-IFLA_PRIORITY = 9,
-IFLA_MASTER = 10,
-IFLA_WIRELESS = 11,
-IFLA_PROTINFO = 12,
-IFLA_TXQLEN = 13,
-IFLA_MAP = 14,
-IFLA_WEIGHT = 15,
-IFLA_OPERSTATE = 16,
-IFLA_LINKMODE = 17,
-IFLA_LINKINFO = 18,
-IFLA_NET_NS_PID = 19,
-IFLA_IFALIAS = 20,
-IFLA_NUM_VF = 21,
-IFLA_VFINFO_LIST = 22,
-IFLA_STATS64 = 23,
-IFLA_VF_PORTS = 24,
-IFLA_PORT_SELF = 25,
-IFLA_AF_SPEC = 26,
-IFLA_GROUP = 27,
-IFLA_NET_NS_FD = 28,
-IFLA_EXT_MASK = 29,
-IFLA_PROMISCUITY = 30,
-IFLA_NUM_TX_QUEUES = 31,
-IFLA_NUM_RX_QUEUES = 32,
-IFLA_CARRIER = 33,
-IFLA_PHYS_PORT_ID = 34,
-IFLA_CARRIER_CHANGES = 35,
-IFLA_PHYS_SWITCH_ID = 36,
-IFLA_LINK_NETNSID = 37,
-IFLA_PHYS_PORT_NAME = 38,
-IFLA_PROTO_DOWN = 39,
-IFLA_GSO_MAX_SEGS = 40,
-IFLA_GSO_MAX_SIZE = 41,
-IFLA_PAD = 42,
-IFLA_XDP = 43,
-IFLA_EVENT = 44,
-IFLA_NEW_NETNSID = 45,
-IFLA_IF_NETNSID = 46,
-IFLA_CARRIER_UP_COUNT = 47,
-IFLA_CARRIER_DOWN_COUNT = 48,
-IFLA_NEW_IFINDEX = 49,
-IFLA_MIN_MTU = 50,
-IFLA_MAX_MTU = 51,
-IFLA_PROP_LIST = 52,
-IFLA_ALT_IFNAME = 53,
-IFLA_PERM_ADDRESS = 54,
-IFLA_PROTO_DOWN_REASON = 55,
-IFLA_PARENT_DEV_NAME = 56,
-IFLA_PARENT_DEV_BUS_NAME = 57,
-IFLA_GRO_MAX_SIZE = 58,
-IFLA_TSO_MAX_SIZE = 59,
-IFLA_TSO_MAX_SEGS = 60,
-IFLA_ALLMULTI = 61,
-IFLA_DEVLINK_PORT = 62,
-__IFLA_MAX = 63,
-}
-pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC;
-pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK;
-pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT;
-pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-IFLA_PROTO_DOWN_REASON_UNSPEC = 0,
-IFLA_PROTO_DOWN_REASON_MASK = 1,
-IFLA_PROTO_DOWN_REASON_VALUE = 2,
-__IFLA_PROTO_DOWN_REASON_CNT = 3,
-}
-pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC;
-pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF;
-pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-IFLA_INET_UNSPEC = 0,
-IFLA_INET_CONF = 1,
-__IFLA_INET_MAX = 2,
-}
-pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC;
-pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS;
-pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF;
-pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS;
-pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST;
-pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO;
-pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS;
-pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN;
-pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE;
-pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU;
-pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-IFLA_INET6_UNSPEC = 0,
-IFLA_INET6_FLAGS = 1,
-IFLA_INET6_CONF = 2,
-IFLA_INET6_STATS = 3,
-IFLA_INET6_MCAST = 4,
-IFLA_INET6_CACHEINFO = 5,
-IFLA_INET6_ICMP6STATS = 6,
-IFLA_INET6_TOKEN = 7,
-IFLA_INET6_ADDR_GEN_MODE = 8,
-IFLA_INET6_RA_MTU = 9,
-__IFLA_INET6_MAX = 10,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum in6_addr_gen_mode {
-IN6_ADDR_GEN_MODE_EUI64 = 0,
-IN6_ADDR_GEN_MODE_NONE = 1,
-IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2,
-IN6_ADDR_GEN_MODE_RANDOM = 3,
-}
-pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC;
-pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY;
-pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME;
-pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE;
-pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME;
-pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE;
-pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY;
-pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING;
-pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL;
-pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK;
-pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID;
-pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID;
-pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT;
-pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST;
-pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE;
-pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED;
-pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER;
-pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER;
-pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER;
-pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER;
-pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR;
-pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH;
-pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER;
-pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING;
-pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR;
-pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER;
-pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY;
-pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX;
-pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT;
-pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL;
-pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL;
-pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL;
-pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL;
-pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL;
-pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES;
-pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES;
-pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES;
-pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID;
-pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD;
-pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED;
-pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED;
-pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION;
-pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION;
-pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT;
-pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT;
-pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE;
-pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-IFLA_BR_UNSPEC = 0,
-IFLA_BR_FORWARD_DELAY = 1,
-IFLA_BR_HELLO_TIME = 2,
-IFLA_BR_MAX_AGE = 3,
-IFLA_BR_AGEING_TIME = 4,
-IFLA_BR_STP_STATE = 5,
-IFLA_BR_PRIORITY = 6,
-IFLA_BR_VLAN_FILTERING = 7,
-IFLA_BR_VLAN_PROTOCOL = 8,
-IFLA_BR_GROUP_FWD_MASK = 9,
-IFLA_BR_ROOT_ID = 10,
-IFLA_BR_BRIDGE_ID = 11,
-IFLA_BR_ROOT_PORT = 12,
-IFLA_BR_ROOT_PATH_COST = 13,
-IFLA_BR_TOPOLOGY_CHANGE = 14,
-IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 15,
-IFLA_BR_HELLO_TIMER = 16,
-IFLA_BR_TCN_TIMER = 17,
-IFLA_BR_TOPOLOGY_CHANGE_TIMER = 18,
-IFLA_BR_GC_TIMER = 19,
-IFLA_BR_GROUP_ADDR = 20,
-IFLA_BR_FDB_FLUSH = 21,
-IFLA_BR_MCAST_ROUTER = 22,
-IFLA_BR_MCAST_SNOOPING = 23,
-IFLA_BR_MCAST_QUERY_USE_IFADDR = 24,
-IFLA_BR_MCAST_QUERIER = 25,
-IFLA_BR_MCAST_HASH_ELASTICITY = 26,
-IFLA_BR_MCAST_HASH_MAX = 27,
-IFLA_BR_MCAST_LAST_MEMBER_CNT = 28,
-IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29,
-IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30,
-IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31,
-IFLA_BR_MCAST_QUERIER_INTVL = 32,
-IFLA_BR_MCAST_QUERY_INTVL = 33,
-IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34,
-IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35,
-IFLA_BR_NF_CALL_IPTABLES = 36,
-IFLA_BR_NF_CALL_IP6TABLES = 37,
-IFLA_BR_NF_CALL_ARPTABLES = 38,
-IFLA_BR_VLAN_DEFAULT_PVID = 39,
-IFLA_BR_PAD = 40,
-IFLA_BR_VLAN_STATS_ENABLED = 41,
-IFLA_BR_MCAST_STATS_ENABLED = 42,
-IFLA_BR_MCAST_IGMP_VERSION = 43,
-IFLA_BR_MCAST_MLD_VERSION = 44,
-IFLA_BR_VLAN_STATS_PER_PORT = 45,
-IFLA_BR_MULTI_BOOLOPT = 46,
-IFLA_BR_MCAST_QUERIER_STATE = 47,
-__IFLA_BR_MAX = 48,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_bridge_id {
-pub prio: [__u8; 2usize],
-pub addr: [__u8; 6usize],
-}
-pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC;
-pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-BRIDGE_MODE_UNSPEC = 0,
-BRIDGE_MODE_HAIRPIN = 1,
-}
-pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC;
-pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE;
-pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY;
-pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST;
-pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE;
-pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD;
-pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT;
-pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE;
-pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING;
-pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD;
-pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP;
-pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC;
-pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI;
-pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID;
-pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID;
-pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT;
-pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST;
-pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID;
-pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO;
-pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK;
-pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING;
-pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER;
-pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER;
-pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER;
-pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH;
-pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER;
-pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD;
-pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD;
-pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST;
-pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL;
-pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD;
-pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK;
-pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS;
-pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED;
-pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT;
-pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN;
-pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT;
-pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED;
-pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB;
-pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IFLA_BRPORT_UNSPEC = 0,
-IFLA_BRPORT_STATE = 1,
-IFLA_BRPORT_PRIORITY = 2,
-IFLA_BRPORT_COST = 3,
-IFLA_BRPORT_MODE = 4,
-IFLA_BRPORT_GUARD = 5,
-IFLA_BRPORT_PROTECT = 6,
-IFLA_BRPORT_FAST_LEAVE = 7,
-IFLA_BRPORT_LEARNING = 8,
-IFLA_BRPORT_UNICAST_FLOOD = 9,
-IFLA_BRPORT_PROXYARP = 10,
-IFLA_BRPORT_LEARNING_SYNC = 11,
-IFLA_BRPORT_PROXYARP_WIFI = 12,
-IFLA_BRPORT_ROOT_ID = 13,
-IFLA_BRPORT_BRIDGE_ID = 14,
-IFLA_BRPORT_DESIGNATED_PORT = 15,
-IFLA_BRPORT_DESIGNATED_COST = 16,
-IFLA_BRPORT_ID = 17,
-IFLA_BRPORT_NO = 18,
-IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 19,
-IFLA_BRPORT_CONFIG_PENDING = 20,
-IFLA_BRPORT_MESSAGE_AGE_TIMER = 21,
-IFLA_BRPORT_FORWARD_DELAY_TIMER = 22,
-IFLA_BRPORT_HOLD_TIMER = 23,
-IFLA_BRPORT_FLUSH = 24,
-IFLA_BRPORT_MULTICAST_ROUTER = 25,
-IFLA_BRPORT_PAD = 26,
-IFLA_BRPORT_MCAST_FLOOD = 27,
-IFLA_BRPORT_MCAST_TO_UCAST = 28,
-IFLA_BRPORT_VLAN_TUNNEL = 29,
-IFLA_BRPORT_BCAST_FLOOD = 30,
-IFLA_BRPORT_GROUP_FWD_MASK = 31,
-IFLA_BRPORT_NEIGH_SUPPRESS = 32,
-IFLA_BRPORT_ISOLATED = 33,
-IFLA_BRPORT_BACKUP_PORT = 34,
-IFLA_BRPORT_MRP_RING_OPEN = 35,
-IFLA_BRPORT_MRP_IN_OPEN = 36,
-IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 37,
-IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 38,
-IFLA_BRPORT_LOCKED = 39,
-IFLA_BRPORT_MAB = 40,
-__IFLA_BRPORT_MAX = 41,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_cacheinfo {
-pub max_reasm_len: __u32,
-pub tstamp: __u32,
-pub reachable_time: __u32,
-pub retrans_time: __u32,
-}
-pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC;
-pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND;
-pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA;
-pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS;
-pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND;
-pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA;
-pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IFLA_INFO_UNSPEC = 0,
-IFLA_INFO_KIND = 1,
-IFLA_INFO_DATA = 2,
-IFLA_INFO_XSTATS = 3,
-IFLA_INFO_SLAVE_KIND = 4,
-IFLA_INFO_SLAVE_DATA = 5,
-__IFLA_INFO_MAX = 6,
-}
-pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC;
-pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID;
-pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS;
-pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS;
-pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS;
-pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL;
-pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IFLA_VLAN_UNSPEC = 0,
-IFLA_VLAN_ID = 1,
-IFLA_VLAN_FLAGS = 2,
-IFLA_VLAN_EGRESS_QOS = 3,
-IFLA_VLAN_INGRESS_QOS = 4,
-IFLA_VLAN_PROTOCOL = 5,
-__IFLA_VLAN_MAX = 6,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC;
-pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING;
-pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IFLA_VLAN_QOS_UNSPEC = 0,
-IFLA_VLAN_QOS_MAPPING = 1,
-__IFLA_VLAN_QOS_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_qos_mapping {
-pub from: __u32,
-pub to: __u32,
-}
-pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC;
-pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE;
-pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS;
-pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE;
-pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR;
-pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA;
-pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED;
-pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IFLA_MACVLAN_UNSPEC = 0,
-IFLA_MACVLAN_MODE = 1,
-IFLA_MACVLAN_FLAGS = 2,
-IFLA_MACVLAN_MACADDR_MODE = 3,
-IFLA_MACVLAN_MACADDR = 4,
-IFLA_MACVLAN_MACADDR_DATA = 5,
-IFLA_MACVLAN_MACADDR_COUNT = 6,
-IFLA_MACVLAN_BC_QUEUE_LEN = 7,
-IFLA_MACVLAN_BC_QUEUE_LEN_USED = 8,
-__IFLA_MACVLAN_MAX = 9,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_mode {
-MACVLAN_MODE_PRIVATE = 1,
-MACVLAN_MODE_VEPA = 2,
-MACVLAN_MODE_BRIDGE = 4,
-MACVLAN_MODE_PASSTHRU = 8,
-MACVLAN_MODE_SOURCE = 16,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_macaddr_mode {
-MACVLAN_MACADDR_ADD = 0,
-MACVLAN_MACADDR_DEL = 1,
-MACVLAN_MACADDR_FLUSH = 2,
-MACVLAN_MACADDR_SET = 3,
-}
-pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC;
-pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE;
-pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_13 {
-IFLA_VRF_UNSPEC = 0,
-IFLA_VRF_TABLE = 1,
-__IFLA_VRF_MAX = 2,
-}
-pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC;
-pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE;
-pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_14 {
-IFLA_VRF_PORT_UNSPEC = 0,
-IFLA_VRF_PORT_TABLE = 1,
-__IFLA_VRF_PORT_MAX = 2,
-}
-pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC;
-pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI;
-pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT;
-pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN;
-pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE;
-pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW;
-pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA;
-pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT;
-pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT;
-pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI;
-pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES;
-pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB;
-pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT;
-pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION;
-pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD;
-pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD;
-pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_15 {
-IFLA_MACSEC_UNSPEC = 0,
-IFLA_MACSEC_SCI = 1,
-IFLA_MACSEC_PORT = 2,
-IFLA_MACSEC_ICV_LEN = 3,
-IFLA_MACSEC_CIPHER_SUITE = 4,
-IFLA_MACSEC_WINDOW = 5,
-IFLA_MACSEC_ENCODING_SA = 6,
-IFLA_MACSEC_ENCRYPT = 7,
-IFLA_MACSEC_PROTECT = 8,
-IFLA_MACSEC_INC_SCI = 9,
-IFLA_MACSEC_ES = 10,
-IFLA_MACSEC_SCB = 11,
-IFLA_MACSEC_REPLAY_PROTECT = 12,
-IFLA_MACSEC_VALIDATION = 13,
-IFLA_MACSEC_PAD = 14,
-IFLA_MACSEC_OFFLOAD = 15,
-__IFLA_MACSEC_MAX = 16,
-}
-pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC;
-pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK;
-pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID;
-pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA;
-pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_16 {
-IFLA_XFRM_UNSPEC = 0,
-IFLA_XFRM_LINK = 1,
-IFLA_XFRM_IF_ID = 2,
-IFLA_XFRM_COLLECT_METADATA = 3,
-__IFLA_XFRM_MAX = 4,
-}
-impl macsec_validation_type {
-pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_validation_type {
-MACSEC_VALIDATE_DISABLED = 0,
-MACSEC_VALIDATE_CHECK = 1,
-MACSEC_VALIDATE_STRICT = 2,
-__MACSEC_VALIDATE_END = 3,
-}
-impl macsec_offload {
-pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_offload {
-MACSEC_OFFLOAD_OFF = 0,
-MACSEC_OFFLOAD_PHY = 1,
-MACSEC_OFFLOAD_MAC = 2,
-__MACSEC_OFFLOAD_END = 3,
-}
-pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC;
-pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE;
-pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS;
-pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_17 {
-IFLA_IPVLAN_UNSPEC = 0,
-IFLA_IPVLAN_MODE = 1,
-IFLA_IPVLAN_FLAGS = 2,
-__IFLA_IPVLAN_MAX = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ipvlan_mode {
-IPVLAN_MODE_L2 = 0,
-IPVLAN_MODE_L3 = 1,
-IPVLAN_MODE_L3S = 2,
-IPVLAN_MODE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tunnel_msg {
-pub family: __u8,
-pub flags: __u8,
-pub reserved2: __u16,
-pub ifindex: __u32,
-}
-pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC;
-pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD;
-pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_18 {
-VNIFILTER_ENTRY_STATS_UNSPEC = 0,
-VNIFILTER_ENTRY_STATS_RX_BYTES = 1,
-VNIFILTER_ENTRY_STATS_RX_PKTS = 2,
-VNIFILTER_ENTRY_STATS_RX_DROPS = 3,
-VNIFILTER_ENTRY_STATS_RX_ERRORS = 4,
-VNIFILTER_ENTRY_STATS_TX_BYTES = 5,
-VNIFILTER_ENTRY_STATS_TX_PKTS = 6,
-VNIFILTER_ENTRY_STATS_TX_DROPS = 7,
-VNIFILTER_ENTRY_STATS_TX_ERRORS = 8,
-VNIFILTER_ENTRY_STATS_PAD = 9,
-__VNIFILTER_ENTRY_STATS_MAX = 10,
-}
-pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START;
-pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6;
-pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS;
-pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_19 {
-VXLAN_VNIFILTER_ENTRY_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY_START = 1,
-VXLAN_VNIFILTER_ENTRY_END = 2,
-VXLAN_VNIFILTER_ENTRY_GROUP = 3,
-VXLAN_VNIFILTER_ENTRY_GROUP6 = 4,
-VXLAN_VNIFILTER_ENTRY_STATS = 5,
-__VXLAN_VNIFILTER_ENTRY_MAX = 6,
-}
-pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY;
-pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_20 {
-VXLAN_VNIFILTER_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY = 1,
-__VXLAN_VNIFILTER_MAX = 2,
-}
-pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC;
-pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID;
-pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP;
-pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK;
-pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL;
-pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL;
-pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS;
-pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING;
-pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING;
-pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT;
-pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE;
-pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY;
-pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC;
-pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS;
-pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS;
-pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT;
-pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6;
-pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6;
-pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX;
-pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX;
-pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX;
-pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP;
-pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL;
-pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA;
-pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL;
-pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE;
-pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT;
-pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF;
-pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER;
-pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_21 {
-IFLA_VXLAN_UNSPEC = 0,
-IFLA_VXLAN_ID = 1,
-IFLA_VXLAN_GROUP = 2,
-IFLA_VXLAN_LINK = 3,
-IFLA_VXLAN_LOCAL = 4,
-IFLA_VXLAN_TTL = 5,
-IFLA_VXLAN_TOS = 6,
-IFLA_VXLAN_LEARNING = 7,
-IFLA_VXLAN_AGEING = 8,
-IFLA_VXLAN_LIMIT = 9,
-IFLA_VXLAN_PORT_RANGE = 10,
-IFLA_VXLAN_PROXY = 11,
-IFLA_VXLAN_RSC = 12,
-IFLA_VXLAN_L2MISS = 13,
-IFLA_VXLAN_L3MISS = 14,
-IFLA_VXLAN_PORT = 15,
-IFLA_VXLAN_GROUP6 = 16,
-IFLA_VXLAN_LOCAL6 = 17,
-IFLA_VXLAN_UDP_CSUM = 18,
-IFLA_VXLAN_UDP_ZERO_CSUM6_TX = 19,
-IFLA_VXLAN_UDP_ZERO_CSUM6_RX = 20,
-IFLA_VXLAN_REMCSUM_TX = 21,
-IFLA_VXLAN_REMCSUM_RX = 22,
-IFLA_VXLAN_GBP = 23,
-IFLA_VXLAN_REMCSUM_NOPARTIAL = 24,
-IFLA_VXLAN_COLLECT_METADATA = 25,
-IFLA_VXLAN_LABEL = 26,
-IFLA_VXLAN_GPE = 27,
-IFLA_VXLAN_TTL_INHERIT = 28,
-IFLA_VXLAN_DF = 29,
-IFLA_VXLAN_VNIFILTER = 30,
-__IFLA_VXLAN_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vxlan_port_range {
-pub low: __be16,
-pub high: __be16,
-}
-impl ifla_vxlan_df {
-pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_vxlan_df {
-VXLAN_DF_UNSET = 0,
-VXLAN_DF_SET = 1,
-VXLAN_DF_INHERIT = 2,
-__VXLAN_DF_END = 3,
-}
-pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC;
-pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID;
-pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE;
-pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL;
-pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS;
-pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT;
-pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA;
-pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6;
-pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX;
-pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL;
-pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT;
-pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF;
-pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT;
-pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_22 {
-IFLA_GENEVE_UNSPEC = 0,
-IFLA_GENEVE_ID = 1,
-IFLA_GENEVE_REMOTE = 2,
-IFLA_GENEVE_TTL = 3,
-IFLA_GENEVE_TOS = 4,
-IFLA_GENEVE_PORT = 5,
-IFLA_GENEVE_COLLECT_METADATA = 6,
-IFLA_GENEVE_REMOTE6 = 7,
-IFLA_GENEVE_UDP_CSUM = 8,
-IFLA_GENEVE_UDP_ZERO_CSUM6_TX = 9,
-IFLA_GENEVE_UDP_ZERO_CSUM6_RX = 10,
-IFLA_GENEVE_LABEL = 11,
-IFLA_GENEVE_TTL_INHERIT = 12,
-IFLA_GENEVE_DF = 13,
-IFLA_GENEVE_INNER_PROTO_INHERIT = 14,
-__IFLA_GENEVE_MAX = 15,
-}
-impl ifla_geneve_df {
-pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_geneve_df {
-GENEVE_DF_UNSET = 0,
-GENEVE_DF_SET = 1,
-GENEVE_DF_INHERIT = 2,
-__GENEVE_DF_END = 3,
-}
-pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC;
-pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT;
-pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE;
-pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN;
-pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE;
-pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_23 {
-IFLA_BAREUDP_UNSPEC = 0,
-IFLA_BAREUDP_PORT = 1,
-IFLA_BAREUDP_ETHERTYPE = 2,
-IFLA_BAREUDP_SRCPORT_MIN = 3,
-IFLA_BAREUDP_MULTIPROTO_MODE = 4,
-__IFLA_BAREUDP_MAX = 5,
-}
-pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC;
-pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD;
-pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_24 {
-IFLA_PPP_UNSPEC = 0,
-IFLA_PPP_DEV_FD = 1,
-__IFLA_PPP_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_gtp_role {
-GTP_ROLE_GGSN = 0,
-GTP_ROLE_SGSN = 1,
-}
-pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC;
-pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0;
-pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1;
-pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE;
-pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE;
-pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS;
-pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT;
-pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_25 {
-IFLA_GTP_UNSPEC = 0,
-IFLA_GTP_FD0 = 1,
-IFLA_GTP_FD1 = 2,
-IFLA_GTP_PDP_HASHSIZE = 3,
-IFLA_GTP_ROLE = 4,
-IFLA_GTP_CREATE_SOCKETS = 5,
-IFLA_GTP_RESTART_COUNT = 6,
-__IFLA_GTP_MAX = 7,
-}
-pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC;
-pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE;
-pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE;
-pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON;
-pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY;
-pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY;
-pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER;
-pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL;
-pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET;
-pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE;
-pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS;
-pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY;
-pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT;
-pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC;
-pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY;
-pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP;
-pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF;
-pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE;
-pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS;
-pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL;
-pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE;
-pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE;
-pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT;
-pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO;
-pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO;
-pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY;
-pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM;
-pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB;
-pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY;
-pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE;
-pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX;
-pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET;
-pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_26 {
-IFLA_BOND_UNSPEC = 0,
-IFLA_BOND_MODE = 1,
-IFLA_BOND_ACTIVE_SLAVE = 2,
-IFLA_BOND_MIIMON = 3,
-IFLA_BOND_UPDELAY = 4,
-IFLA_BOND_DOWNDELAY = 5,
-IFLA_BOND_USE_CARRIER = 6,
-IFLA_BOND_ARP_INTERVAL = 7,
-IFLA_BOND_ARP_IP_TARGET = 8,
-IFLA_BOND_ARP_VALIDATE = 9,
-IFLA_BOND_ARP_ALL_TARGETS = 10,
-IFLA_BOND_PRIMARY = 11,
-IFLA_BOND_PRIMARY_RESELECT = 12,
-IFLA_BOND_FAIL_OVER_MAC = 13,
-IFLA_BOND_XMIT_HASH_POLICY = 14,
-IFLA_BOND_RESEND_IGMP = 15,
-IFLA_BOND_NUM_PEER_NOTIF = 16,
-IFLA_BOND_ALL_SLAVES_ACTIVE = 17,
-IFLA_BOND_MIN_LINKS = 18,
-IFLA_BOND_LP_INTERVAL = 19,
-IFLA_BOND_PACKETS_PER_SLAVE = 20,
-IFLA_BOND_AD_LACP_RATE = 21,
-IFLA_BOND_AD_SELECT = 22,
-IFLA_BOND_AD_INFO = 23,
-IFLA_BOND_AD_ACTOR_SYS_PRIO = 24,
-IFLA_BOND_AD_USER_PORT_KEY = 25,
-IFLA_BOND_AD_ACTOR_SYSTEM = 26,
-IFLA_BOND_TLB_DYNAMIC_LB = 27,
-IFLA_BOND_PEER_NOTIF_DELAY = 28,
-IFLA_BOND_AD_LACP_ACTIVE = 29,
-IFLA_BOND_MISSED_MAX = 30,
-IFLA_BOND_NS_IP6_TARGET = 31,
-__IFLA_BOND_MAX = 32,
-}
-pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC;
-pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR;
-pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS;
-pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC;
-pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_27 {
-IFLA_BOND_AD_INFO_UNSPEC = 0,
-IFLA_BOND_AD_INFO_AGGREGATOR = 1,
-IFLA_BOND_AD_INFO_NUM_PORTS = 2,
-IFLA_BOND_AD_INFO_ACTOR_KEY = 3,
-IFLA_BOND_AD_INFO_PARTNER_KEY = 4,
-IFLA_BOND_AD_INFO_PARTNER_MAC = 5,
-__IFLA_BOND_AD_INFO_MAX = 6,
-}
-pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC;
-pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE;
-pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS;
-pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT;
-pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR;
-pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID;
-pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID;
-pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO;
-pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_28 {
-IFLA_BOND_SLAVE_UNSPEC = 0,
-IFLA_BOND_SLAVE_STATE = 1,
-IFLA_BOND_SLAVE_MII_STATUS = 2,
-IFLA_BOND_SLAVE_LINK_FAILURE_COUNT = 3,
-IFLA_BOND_SLAVE_PERM_HWADDR = 4,
-IFLA_BOND_SLAVE_QUEUE_ID = 5,
-IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 6,
-IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 7,
-IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 8,
-IFLA_BOND_SLAVE_PRIO = 9,
-__IFLA_BOND_SLAVE_MAX = 10,
-}
-pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC;
-pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO;
-pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_29 {
-IFLA_VF_INFO_UNSPEC = 0,
-IFLA_VF_INFO = 1,
-__IFLA_VF_INFO_MAX = 2,
-}
-pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC;
-pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC;
-pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN;
-pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE;
-pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK;
-pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE;
-pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE;
-pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN;
-pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS;
-pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST;
-pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID;
-pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID;
-pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST;
-pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST;
-pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_30 {
-IFLA_VF_UNSPEC = 0,
-IFLA_VF_MAC = 1,
-IFLA_VF_VLAN = 2,
-IFLA_VF_TX_RATE = 3,
-IFLA_VF_SPOOFCHK = 4,
-IFLA_VF_LINK_STATE = 5,
-IFLA_VF_RATE = 6,
-IFLA_VF_RSS_QUERY_EN = 7,
-IFLA_VF_STATS = 8,
-IFLA_VF_TRUST = 9,
-IFLA_VF_IB_NODE_GUID = 10,
-IFLA_VF_IB_PORT_GUID = 11,
-IFLA_VF_VLAN_LIST = 12,
-IFLA_VF_BROADCAST = 13,
-__IFLA_VF_MAX = 14,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_mac {
-pub vf: __u32,
-pub mac: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_broadcast {
-pub broadcast: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-}
-pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC;
-pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO;
-pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_31 {
-IFLA_VF_VLAN_INFO_UNSPEC = 0,
-IFLA_VF_VLAN_INFO = 1,
-__IFLA_VF_VLAN_INFO_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan_info {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-pub vlan_proto: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_tx_rate {
-pub vf: __u32,
-pub rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rate {
-pub vf: __u32,
-pub min_tx_rate: __u32,
-pub max_tx_rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_spoofchk {
-pub vf: __u32,
-pub setting: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_guid {
-pub vf: __u32,
-pub guid: __u64,
-}
-pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO;
-pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE;
-pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE;
-pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_32 {
-IFLA_VF_LINK_STATE_AUTO = 0,
-IFLA_VF_LINK_STATE_ENABLE = 1,
-IFLA_VF_LINK_STATE_DISABLE = 2,
-__IFLA_VF_LINK_STATE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_link_state {
-pub vf: __u32,
-pub link_state: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rss_query_en {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS;
-pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS;
-pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES;
-pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES;
-pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST;
-pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST;
-pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD;
-pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED;
-pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED;
-pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_33 {
-IFLA_VF_STATS_RX_PACKETS = 0,
-IFLA_VF_STATS_TX_PACKETS = 1,
-IFLA_VF_STATS_RX_BYTES = 2,
-IFLA_VF_STATS_TX_BYTES = 3,
-IFLA_VF_STATS_BROADCAST = 4,
-IFLA_VF_STATS_MULTICAST = 5,
-IFLA_VF_STATS_PAD = 6,
-IFLA_VF_STATS_RX_DROPPED = 7,
-IFLA_VF_STATS_TX_DROPPED = 8,
-__IFLA_VF_STATS_MAX = 9,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_trust {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC;
-pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT;
-pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_34 {
-IFLA_VF_PORT_UNSPEC = 0,
-IFLA_VF_PORT = 1,
-__IFLA_VF_PORT_MAX = 2,
-}
-pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC;
-pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF;
-pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE;
-pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE;
-pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID;
-pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID;
-pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST;
-pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE;
-pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_35 {
-IFLA_PORT_UNSPEC = 0,
-IFLA_PORT_VF = 1,
-IFLA_PORT_PROFILE = 2,
-IFLA_PORT_VSI_TYPE = 3,
-IFLA_PORT_INSTANCE_UUID = 4,
-IFLA_PORT_HOST_UUID = 5,
-IFLA_PORT_REQUEST = 6,
-IFLA_PORT_RESPONSE = 7,
-__IFLA_PORT_MAX = 8,
-}
-pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE;
-pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR;
-pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE;
-pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_36 {
-PORT_REQUEST_PREASSOCIATE = 0,
-PORT_REQUEST_PREASSOCIATE_RR = 1,
-PORT_REQUEST_ASSOCIATE = 2,
-PORT_REQUEST_DISASSOCIATE = 3,
-}
-pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS;
-pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT;
-pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID;
-pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION;
-pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION;
-pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC;
-pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS;
-pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS;
-pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID;
-pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE;
-pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_37 {
-PORT_VDP_RESPONSE_SUCCESS = 0,
-PORT_VDP_RESPONSE_INVALID_FORMAT = 1,
-PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES = 2,
-PORT_VDP_RESPONSE_UNUSED_VTID = 3,
-PORT_VDP_RESPONSE_VTID_VIOLATION = 4,
-PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION = 5,
-PORT_VDP_RESPONSE_OUT_OF_SYNC = 6,
-PORT_PROFILE_RESPONSE_SUCCESS = 256,
-PORT_PROFILE_RESPONSE_INPROGRESS = 257,
-PORT_PROFILE_RESPONSE_INVALID = 258,
-PORT_PROFILE_RESPONSE_BADSTATE = 259,
-PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260,
-PORT_PROFILE_RESPONSE_ERROR = 261,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_port_vsi {
-pub vsi_mgr_id: __u8,
-pub vsi_type_id: [__u8; 3usize],
-pub vsi_type_version: __u8,
-pub pad: [__u8; 3usize],
-}
-pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC;
-pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY;
-pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE;
-pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST;
-pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_38 {
-IFLA_IPOIB_UNSPEC = 0,
-IFLA_IPOIB_PKEY = 1,
-IFLA_IPOIB_MODE = 2,
-IFLA_IPOIB_UMCAST = 3,
-__IFLA_IPOIB_MAX = 4,
-}
-pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM;
-pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_39 {
-IPOIB_MODE_DATAGRAM = 0,
-IPOIB_MODE_CONNECTED = 1,
-}
-pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR;
-pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP;
-pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_40 {
-HSR_PROTOCOL_HSR = 0,
-HSR_PROTOCOL_PRP = 1,
-HSR_PROTOCOL_MAX = 2,
-}
-pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC;
-pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1;
-pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2;
-pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC;
-pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR;
-pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR;
-pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION;
-pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL;
-pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_41 {
-IFLA_HSR_UNSPEC = 0,
-IFLA_HSR_SLAVE1 = 1,
-IFLA_HSR_SLAVE2 = 2,
-IFLA_HSR_MULTICAST_SPEC = 3,
-IFLA_HSR_SUPERVISION_ADDR = 4,
-IFLA_HSR_SEQ_NR = 5,
-IFLA_HSR_VERSION = 6,
-IFLA_HSR_PROTOCOL = 7,
-__IFLA_HSR_MAX = 8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct if_stats_msg {
-pub family: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub ifindex: __u32,
-pub filter_mask: __u32,
-}
-pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC;
-pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64;
-pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS;
-pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE;
-pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS;
-pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC;
-pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_42 {
-IFLA_STATS_UNSPEC = 0,
-IFLA_STATS_LINK_64 = 1,
-IFLA_STATS_LINK_XSTATS = 2,
-IFLA_STATS_LINK_XSTATS_SLAVE = 3,
-IFLA_STATS_LINK_OFFLOAD_XSTATS = 4,
-IFLA_STATS_AF_SPEC = 5,
-__IFLA_STATS_MAX = 6,
-}
-pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC;
-pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS;
-pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_43 {
-IFLA_STATS_GETSET_UNSPEC = 0,
-IFLA_STATS_GET_FILTERS = 1,
-IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2,
-__IFLA_STATS_GETSET_MAX = 3,
-}
-pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC;
-pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE;
-pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND;
-pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_44 {
-LINK_XSTATS_TYPE_UNSPEC = 0,
-LINK_XSTATS_TYPE_BRIDGE = 1,
-LINK_XSTATS_TYPE_BOND = 2,
-__LINK_XSTATS_TYPE_MAX = 3,
-}
-pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO;
-pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_45 {
-IFLA_OFFLOAD_XSTATS_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_CPU_HIT = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO = 2,
-IFLA_OFFLOAD_XSTATS_L3_STATS = 3,
-__IFLA_OFFLOAD_XSTATS_MAX = 4,
-}
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED;
-pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_46 {
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2,
-__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3,
-}
-pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE;
-pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV;
-pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB;
-pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW;
-pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_47 {
-XDP_ATTACHED_NONE = 0,
-XDP_ATTACHED_DRV = 1,
-XDP_ATTACHED_SKB = 2,
-XDP_ATTACHED_HW = 3,
-XDP_ATTACHED_MULTI = 4,
-}
-pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC;
-pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD;
-pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED;
-pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS;
-pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID;
-pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID;
-pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID;
-pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID;
-pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD;
-pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_48 {
-IFLA_XDP_UNSPEC = 0,
-IFLA_XDP_FD = 1,
-IFLA_XDP_ATTACHED = 2,
-IFLA_XDP_FLAGS = 3,
-IFLA_XDP_PROG_ID = 4,
-IFLA_XDP_DRV_PROG_ID = 5,
-IFLA_XDP_SKB_PROG_ID = 6,
-IFLA_XDP_HW_PROG_ID = 7,
-IFLA_XDP_EXPECTED_FD = 8,
-__IFLA_XDP_MAX = 9,
-}
-pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE;
-pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT;
-pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES;
-pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER;
-pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS;
-pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND;
-pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_49 {
-IFLA_EVENT_NONE = 0,
-IFLA_EVENT_REBOOT = 1,
-IFLA_EVENT_FEATURES = 2,
-IFLA_EVENT_BONDING_FAILOVER = 3,
-IFLA_EVENT_NOTIFY_PEERS = 4,
-IFLA_EVENT_IGMP_RESEND = 5,
-IFLA_EVENT_BONDING_OPTIONS = 6,
-}
-pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC;
-pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER;
-pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP;
-pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE;
-pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI;
-pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR;
-pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST;
-pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE;
-pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES;
-pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES;
-pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_50 {
-IFLA_TUN_UNSPEC = 0,
-IFLA_TUN_OWNER = 1,
-IFLA_TUN_GROUP = 2,
-IFLA_TUN_TYPE = 3,
-IFLA_TUN_PI = 4,
-IFLA_TUN_VNET_HDR = 5,
-IFLA_TUN_PERSIST = 6,
-IFLA_TUN_MULTI_QUEUE = 7,
-IFLA_TUN_NUM_QUEUES = 8,
-IFLA_TUN_NUM_DISABLED_QUEUES = 9,
-__IFLA_TUN_MAX = 10,
-}
-pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC;
-pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID;
-pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS;
-pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_51 {
-IFLA_RMNET_UNSPEC = 0,
-IFLA_RMNET_MUX_ID = 1,
-IFLA_RMNET_FLAGS = 2,
-__IFLA_RMNET_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_rmnet_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC;
-pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET;
-pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_52 {
-IFLA_MCTP_UNSPEC = 0,
-IFLA_MCTP_NET = 1,
-__IFLA_MCTP_MAX = 2,
-}
-pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC;
-pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER;
-pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_53 {
-IFLA_DSA_UNSPEC = 0,
-IFLA_DSA_MASTER = 1,
-__IFLA_DSA_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifaddrmsg {
-pub ifa_family: __u8,
-pub ifa_prefixlen: __u8,
-pub ifa_flags: __u8,
-pub ifa_scope: __u8,
-pub ifa_index: __u32,
-}
-pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC;
-pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS;
-pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL;
-pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL;
-pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST;
-pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST;
-pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO;
-pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST;
-pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS;
-pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY;
-pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID;
-pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO;
-pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_54 {
-IFA_UNSPEC = 0,
-IFA_ADDRESS = 1,
-IFA_LOCAL = 2,
-IFA_LABEL = 3,
-IFA_BROADCAST = 4,
-IFA_ANYCAST = 5,
-IFA_CACHEINFO = 6,
-IFA_MULTICAST = 7,
-IFA_FLAGS = 8,
-IFA_RT_PRIORITY = 9,
-IFA_TARGET_NETNSID = 10,
-IFA_PROTO = 11,
-__IFA_MAX = 12,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifa_cacheinfo {
-pub ifa_prefered: __u32,
-pub ifa_valid: __u32,
-pub cstamp: __u32,
-pub tstamp: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndmsg {
-pub ndm_family: __u8,
-pub ndm_pad1: __u8,
-pub ndm_pad2: __u16,
-pub ndm_ifindex: __s32,
-pub ndm_state: __u16,
-pub ndm_flags: __u8,
-pub ndm_type: __u8,
-}
-pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC;
-pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST;
-pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR;
-pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO;
-pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES;
-pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN;
-pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT;
-pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI;
-pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX;
-pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER;
-pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID;
-pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI;
-pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL;
-pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID;
-pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS;
-pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT;
-pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK;
-pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK;
-pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_55 {
-NDA_UNSPEC = 0,
-NDA_DST = 1,
-NDA_LLADDR = 2,
-NDA_CACHEINFO = 3,
-NDA_PROBES = 4,
-NDA_VLAN = 5,
-NDA_PORT = 6,
-NDA_VNI = 7,
-NDA_IFINDEX = 8,
-NDA_MASTER = 9,
-NDA_LINK_NETNSID = 10,
-NDA_SRC_VNI = 11,
-NDA_PROTOCOL = 12,
-NDA_NH_ID = 13,
-NDA_FDB_EXT_ATTRS = 14,
-NDA_FLAGS_EXT = 15,
-NDA_NDM_STATE_MASK = 16,
-NDA_NDM_FLAGS_MASK = 17,
-__NDA_MAX = 18,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nda_cacheinfo {
-pub ndm_confirmed: __u32,
-pub ndm_used: __u32,
-pub ndm_updated: __u32,
-pub ndm_refcnt: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_stats {
-pub ndts_allocs: __u64,
-pub ndts_destroys: __u64,
-pub ndts_hash_grows: __u64,
-pub ndts_res_failed: __u64,
-pub ndts_lookups: __u64,
-pub ndts_hits: __u64,
-pub ndts_rcv_probes_mcast: __u64,
-pub ndts_rcv_probes_ucast: __u64,
-pub ndts_periodic_gc_runs: __u64,
-pub ndts_forced_gc_runs: __u64,
-pub ndts_table_fulls: __u64,
-}
-pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC;
-pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX;
-pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT;
-pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME;
-pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME;
-pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME;
-pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME;
-pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME;
-pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN;
-pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES;
-pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES;
-pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES;
-pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY;
-pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY;
-pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN;
-pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME;
-pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES;
-pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES;
-pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD;
-pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS;
-pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_56 {
-NDTPA_UNSPEC = 0,
-NDTPA_IFINDEX = 1,
-NDTPA_REFCNT = 2,
-NDTPA_REACHABLE_TIME = 3,
-NDTPA_BASE_REACHABLE_TIME = 4,
-NDTPA_RETRANS_TIME = 5,
-NDTPA_GC_STALETIME = 6,
-NDTPA_DELAY_PROBE_TIME = 7,
-NDTPA_QUEUE_LEN = 8,
-NDTPA_APP_PROBES = 9,
-NDTPA_UCAST_PROBES = 10,
-NDTPA_MCAST_PROBES = 11,
-NDTPA_ANYCAST_DELAY = 12,
-NDTPA_PROXY_DELAY = 13,
-NDTPA_PROXY_QLEN = 14,
-NDTPA_LOCKTIME = 15,
-NDTPA_QUEUE_LENBYTES = 16,
-NDTPA_MCAST_REPROBES = 17,
-NDTPA_PAD = 18,
-NDTPA_INTERVAL_PROBE_TIME_MS = 19,
-__NDTPA_MAX = 20,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndtmsg {
-pub ndtm_family: __u8,
-pub ndtm_pad1: __u8,
-pub ndtm_pad2: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_config {
-pub ndtc_key_len: __u16,
-pub ndtc_entry_size: __u16,
-pub ndtc_entries: __u32,
-pub ndtc_last_flush: __u32,
-pub ndtc_last_rand: __u32,
-pub ndtc_hash_rnd: __u32,
-pub ndtc_hash_mask: __u32,
-pub ndtc_hash_chain_gc: __u32,
-pub ndtc_proxy_qlen: __u32,
-}
-pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC;
-pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME;
-pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1;
-pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2;
-pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3;
-pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG;
-pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS;
-pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS;
-pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL;
-pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD;
-pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_57 {
-NDTA_UNSPEC = 0,
-NDTA_NAME = 1,
-NDTA_THRESH1 = 2,
-NDTA_THRESH2 = 3,
-NDTA_THRESH3 = 4,
-NDTA_CONFIG = 5,
-NDTA_PARMS = 6,
-NDTA_STATS = 7,
-NDTA_GC_INTERVAL = 8,
-NDTA_PAD = 9,
-__NDTA_MAX = 10,
-}
-pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT;
-pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_58 {
-FDB_NOTIFY_BIT = 1,
-FDB_NOTIFY_INACTIVE_BIT = 2,
-}
-pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC;
-pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY;
-pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH;
-pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_59 {
-NFEA_UNSPEC = 0,
-NFEA_ACTIVITY_NOTIFY = 1,
-NFEA_DONT_REFRESH = 2,
-__NFEA_MAX = 3,
-}
-pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK;
-pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK;
-pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK;
-pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR;
-pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR;
-pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR;
-pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE;
-pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE;
-pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE;
-pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH;
-pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH;
-pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH;
-pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE;
-pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE;
-pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE;
-pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC;
-pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC;
-pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC;
-pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS;
-pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS;
-pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS;
-pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER;
-pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER;
-pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER;
-pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION;
-pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION;
-pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION;
-pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX;
-pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST;
-pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST;
-pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL;
-pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL;
-pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL;
-pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT;
-pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL;
-pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL;
-pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL;
-pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB;
-pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB;
-pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF;
-pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF;
-pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF;
-pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB;
-pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB;
-pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB;
-pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID;
-pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID;
-pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID;
-pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS;
-pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS;
-pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS;
-pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT;
-pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN;
-pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN;
-pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN;
-pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP;
-pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP;
-pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP;
-pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP;
-pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP;
-pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP;
-pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN;
-pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN;
-pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN;
-pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET;
-pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET;
-pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET;
-pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL;
-pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL;
-pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL;
-pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_60 {
-RTM_BASE = 16,
-RTM_DELLINK = 17,
-RTM_GETLINK = 18,
-RTM_SETLINK = 19,
-RTM_NEWADDR = 20,
-RTM_DELADDR = 21,
-RTM_GETADDR = 22,
-RTM_NEWROUTE = 24,
-RTM_DELROUTE = 25,
-RTM_GETROUTE = 26,
-RTM_NEWNEIGH = 28,
-RTM_DELNEIGH = 29,
-RTM_GETNEIGH = 30,
-RTM_NEWRULE = 32,
-RTM_DELRULE = 33,
-RTM_GETRULE = 34,
-RTM_NEWQDISC = 36,
-RTM_DELQDISC = 37,
-RTM_GETQDISC = 38,
-RTM_NEWTCLASS = 40,
-RTM_DELTCLASS = 41,
-RTM_GETTCLASS = 42,
-RTM_NEWTFILTER = 44,
-RTM_DELTFILTER = 45,
-RTM_GETTFILTER = 46,
-RTM_NEWACTION = 48,
-RTM_DELACTION = 49,
-RTM_GETACTION = 50,
-RTM_NEWPREFIX = 52,
-RTM_GETMULTICAST = 58,
-RTM_GETANYCAST = 62,
-RTM_NEWNEIGHTBL = 64,
-RTM_GETNEIGHTBL = 66,
-RTM_SETNEIGHTBL = 67,
-RTM_NEWNDUSEROPT = 68,
-RTM_NEWADDRLABEL = 72,
-RTM_DELADDRLABEL = 73,
-RTM_GETADDRLABEL = 74,
-RTM_GETDCB = 78,
-RTM_SETDCB = 79,
-RTM_NEWNETCONF = 80,
-RTM_DELNETCONF = 81,
-RTM_GETNETCONF = 82,
-RTM_NEWMDB = 84,
-RTM_DELMDB = 85,
-RTM_GETMDB = 86,
-RTM_NEWNSID = 88,
-RTM_DELNSID = 89,
-RTM_GETNSID = 90,
-RTM_NEWSTATS = 92,
-RTM_GETSTATS = 94,
-RTM_SETSTATS = 95,
-RTM_NEWCACHEREPORT = 96,
-RTM_NEWCHAIN = 100,
-RTM_DELCHAIN = 101,
-RTM_GETCHAIN = 102,
-RTM_NEWNEXTHOP = 104,
-RTM_DELNEXTHOP = 105,
-RTM_GETNEXTHOP = 106,
-RTM_NEWLINKPROP = 108,
-RTM_DELLINKPROP = 109,
-RTM_GETLINKPROP = 110,
-RTM_NEWVLAN = 112,
-RTM_DELVLAN = 113,
-RTM_GETVLAN = 114,
-RTM_NEWNEXTHOPBUCKET = 116,
-RTM_DELNEXTHOPBUCKET = 117,
-RTM_GETNEXTHOPBUCKET = 118,
-RTM_NEWTUNNEL = 120,
-RTM_DELTUNNEL = 121,
-RTM_GETTUNNEL = 122,
-__RTM_MAX = 123,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtattr {
-pub rta_len: crate::ctypes::c_ushort,
-pub rta_type: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtmsg {
-pub rtm_family: crate::ctypes::c_uchar,
-pub rtm_dst_len: crate::ctypes::c_uchar,
-pub rtm_src_len: crate::ctypes::c_uchar,
-pub rtm_tos: crate::ctypes::c_uchar,
-pub rtm_table: crate::ctypes::c_uchar,
-pub rtm_protocol: crate::ctypes::c_uchar,
-pub rtm_scope: crate::ctypes::c_uchar,
-pub rtm_type: crate::ctypes::c_uchar,
-pub rtm_flags: crate::ctypes::c_uint,
-}
-pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC;
-pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST;
-pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL;
-pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST;
-pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST;
-pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST;
-pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE;
-pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE;
-pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT;
-pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW;
-pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT;
-pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE;
-pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_61 {
-RTN_UNSPEC = 0,
-RTN_UNICAST = 1,
-RTN_LOCAL = 2,
-RTN_BROADCAST = 3,
-RTN_ANYCAST = 4,
-RTN_MULTICAST = 5,
-RTN_BLACKHOLE = 6,
-RTN_UNREACHABLE = 7,
-RTN_PROHIBIT = 8,
-RTN_THROW = 9,
-RTN_NAT = 10,
-RTN_XRESOLVE = 11,
-__RTN_MAX = 12,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_scope_t {
-RT_SCOPE_UNIVERSE = 0,
-RT_SCOPE_SITE = 200,
-RT_SCOPE_LINK = 253,
-RT_SCOPE_HOST = 254,
-RT_SCOPE_NOWHERE = 255,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_class_t {
-RT_TABLE_UNSPEC = 0,
-RT_TABLE_COMPAT = 252,
-RT_TABLE_DEFAULT = 253,
-RT_TABLE_MAIN = 254,
-RT_TABLE_LOCAL = 255,
-RT_TABLE_MAX = 4294967295,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtattr_type_t {
-RTA_UNSPEC = 0,
-RTA_DST = 1,
-RTA_SRC = 2,
-RTA_IIF = 3,
-RTA_OIF = 4,
-RTA_GATEWAY = 5,
-RTA_PRIORITY = 6,
-RTA_PREFSRC = 7,
-RTA_METRICS = 8,
-RTA_MULTIPATH = 9,
-RTA_PROTOINFO = 10,
-RTA_FLOW = 11,
-RTA_CACHEINFO = 12,
-RTA_SESSION = 13,
-RTA_MP_ALGO = 14,
-RTA_TABLE = 15,
-RTA_MARK = 16,
-RTA_MFC_STATS = 17,
-RTA_VIA = 18,
-RTA_NEWDST = 19,
-RTA_PREF = 20,
-RTA_ENCAP_TYPE = 21,
-RTA_ENCAP = 22,
-RTA_EXPIRES = 23,
-RTA_PAD = 24,
-RTA_UID = 25,
-RTA_TTL_PROPAGATE = 26,
-RTA_IP_PROTO = 27,
-RTA_SPORT = 28,
-RTA_DPORT = 29,
-RTA_NH_ID = 30,
-__RTA_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnexthop {
-pub rtnh_len: crate::ctypes::c_ushort,
-pub rtnh_flags: crate::ctypes::c_uchar,
-pub rtnh_hops: crate::ctypes::c_uchar,
-pub rtnh_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rtvia {
-pub rtvia_family: __kernel_sa_family_t,
-pub rtvia_addr: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_cacheinfo {
-pub rta_clntref: __u32,
-pub rta_lastuse: __u32,
-pub rta_expires: __s32,
-pub rta_error: __u32,
-pub rta_used: __u32,
-pub rta_id: __u32,
-pub rta_ts: __u32,
-pub rta_tsage: __u32,
-}
-pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC;
-pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK;
-pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU;
-pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW;
-pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT;
-pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR;
-pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH;
-pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND;
-pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS;
-pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING;
-pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT;
-pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND;
-pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES;
-pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN;
-pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND;
-pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK;
-pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO;
-pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE;
-pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_62 {
-RTAX_UNSPEC = 0,
-RTAX_LOCK = 1,
-RTAX_MTU = 2,
-RTAX_WINDOW = 3,
-RTAX_RTT = 4,
-RTAX_RTTVAR = 5,
-RTAX_SSTHRESH = 6,
-RTAX_CWND = 7,
-RTAX_ADVMSS = 8,
-RTAX_REORDERING = 9,
-RTAX_HOPLIMIT = 10,
-RTAX_INITCWND = 11,
-RTAX_FEATURES = 12,
-RTAX_RTO_MIN = 13,
-RTAX_INITRWND = 14,
-RTAX_QUICKACK = 15,
-RTAX_CC_ALGO = 16,
-RTAX_FASTOPEN_NO_COOKIE = 17,
-__RTAX_MAX = 18,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rta_session {
-pub proto: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub u: rta_session__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union rta_session__bindgen_ty_1 {
-pub ports: rta_session__bindgen_ty_1__bindgen_ty_1,
-pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2,
-pub spi: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_1 {
-pub sport: __u16,
-pub dport: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_2 {
-pub type_: __u8,
-pub code: __u8,
-pub ident: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_mfc_stats {
-pub mfcs_packets: __u64,
-pub mfcs_bytes: __u64,
-pub mfcs_wrong_if: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtgenmsg {
-pub rtgen_family: crate::ctypes::c_uchar,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifinfomsg {
-pub ifi_family: crate::ctypes::c_uchar,
-pub __ifi_pad: crate::ctypes::c_uchar,
-pub ifi_type: crate::ctypes::c_ushort,
-pub ifi_index: crate::ctypes::c_int,
-pub ifi_flags: crate::ctypes::c_uint,
-pub ifi_change: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefixmsg {
-pub prefix_family: crate::ctypes::c_uchar,
-pub prefix_pad1: crate::ctypes::c_uchar,
-pub prefix_pad2: crate::ctypes::c_ushort,
-pub prefix_ifindex: crate::ctypes::c_int,
-pub prefix_type: crate::ctypes::c_uchar,
-pub prefix_len: crate::ctypes::c_uchar,
-pub prefix_flags: crate::ctypes::c_uchar,
-pub prefix_pad3: crate::ctypes::c_uchar,
-}
-pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC;
-pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS;
-pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO;
-pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_63 {
-PREFIX_UNSPEC = 0,
-PREFIX_ADDRESS = 1,
-PREFIX_CACHEINFO = 2,
-__PREFIX_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefix_cacheinfo {
-pub preferred_time: __u32,
-pub valid_time: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcmsg {
-pub tcm_family: crate::ctypes::c_uchar,
-pub tcm__pad1: crate::ctypes::c_uchar,
-pub tcm__pad2: crate::ctypes::c_ushort,
-pub tcm_ifindex: crate::ctypes::c_int,
-pub tcm_handle: __u32,
-pub tcm_parent: __u32,
-pub tcm_info: __u32,
-}
-pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC;
-pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND;
-pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS;
-pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS;
-pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS;
-pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE;
-pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT;
-pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2;
-pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB;
-pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD;
-pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE;
-pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN;
-pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD;
-pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK;
-pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK;
-pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS;
-pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_64 {
-TCA_UNSPEC = 0,
-TCA_KIND = 1,
-TCA_OPTIONS = 2,
-TCA_STATS = 3,
-TCA_XSTATS = 4,
-TCA_RATE = 5,
-TCA_FCNT = 6,
-TCA_STATS2 = 7,
-TCA_STAB = 8,
-TCA_PAD = 9,
-TCA_DUMP_INVISIBLE = 10,
-TCA_CHAIN = 11,
-TCA_HW_OFFLOAD = 12,
-TCA_INGRESS_BLOCK = 13,
-TCA_EGRESS_BLOCK = 14,
-TCA_DUMP_FLAGS = 15,
-__TCA_MAX = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nduseroptmsg {
-pub nduseropt_family: crate::ctypes::c_uchar,
-pub nduseropt_pad1: crate::ctypes::c_uchar,
-pub nduseropt_opts_len: crate::ctypes::c_ushort,
-pub nduseropt_ifindex: crate::ctypes::c_int,
-pub nduseropt_icmp_type: __u8,
-pub nduseropt_icmp_code: __u8,
-pub nduseropt_pad2: crate::ctypes::c_ushort,
-pub nduseropt_pad3: crate::ctypes::c_uint,
-}
-pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC;
-pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR;
-pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_65 {
-NDUSEROPT_UNSPEC = 0,
-NDUSEROPT_SRCADDR = 1,
-__NDUSEROPT_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtnetlink_groups {
-RTNLGRP_NONE = 0,
-RTNLGRP_LINK = 1,
-RTNLGRP_NOTIFY = 2,
-RTNLGRP_NEIGH = 3,
-RTNLGRP_TC = 4,
-RTNLGRP_IPV4_IFADDR = 5,
-RTNLGRP_IPV4_MROUTE = 6,
-RTNLGRP_IPV4_ROUTE = 7,
-RTNLGRP_IPV4_RULE = 8,
-RTNLGRP_IPV6_IFADDR = 9,
-RTNLGRP_IPV6_MROUTE = 10,
-RTNLGRP_IPV6_ROUTE = 11,
-RTNLGRP_IPV6_IFINFO = 12,
-RTNLGRP_DECnet_IFADDR = 13,
-RTNLGRP_NOP2 = 14,
-RTNLGRP_DECnet_ROUTE = 15,
-RTNLGRP_DECnet_RULE = 16,
-RTNLGRP_NOP4 = 17,
-RTNLGRP_IPV6_PREFIX = 18,
-RTNLGRP_IPV6_RULE = 19,
-RTNLGRP_ND_USEROPT = 20,
-RTNLGRP_PHONET_IFADDR = 21,
-RTNLGRP_PHONET_ROUTE = 22,
-RTNLGRP_DCB = 23,
-RTNLGRP_IPV4_NETCONF = 24,
-RTNLGRP_IPV6_NETCONF = 25,
-RTNLGRP_MDB = 26,
-RTNLGRP_MPLS_ROUTE = 27,
-RTNLGRP_NSID = 28,
-RTNLGRP_MPLS_NETCONF = 29,
-RTNLGRP_IPV4_MROUTE_R = 30,
-RTNLGRP_IPV6_MROUTE_R = 31,
-RTNLGRP_NEXTHOP = 32,
-RTNLGRP_BRVLAN = 33,
-RTNLGRP_MCTP_IFADDR = 34,
-RTNLGRP_TUNNEL = 35,
-RTNLGRP_STATS = 36,
-__RTNLGRP_MAX = 37,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcamsg {
-pub tca_family: crate::ctypes::c_uchar,
-pub tca__pad1: crate::ctypes::c_uchar,
-pub tca__pad2: crate::ctypes::c_ushort,
-}
-pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC;
-pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB;
-pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS;
-pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT;
-pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA;
-pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_66 {
-TCA_ROOT_UNSPEC = 0,
-TCA_ROOT_TAB = 1,
-TCA_ROOT_FLAGS = 2,
-TCA_ROOT_COUNT = 3,
-TCA_ROOT_TIME_DELTA = 4,
-__TCA_ROOT_MAX = 5,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/lib.rs b/vendor/linux-raw-sys-0.3.2/src/lib.rs
deleted file mode 100644
index 857b23f18..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/lib.rs
+++ /dev/null
@@ -1,409 +0,0 @@
-#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
-#![cfg_attr(not(feature = "std"), no_std)]
-
-#[cfg(feature = "std")]
-pub use std::os::raw as ctypes;
-
-#[cfg(all(not(feature = "std"), feature = "no_std"))]
-pub mod ctypes {
- // The signedness of `char` is platform-specific, however a consequence
- // of it being platform-specific is that any code which depends on the
- // signedness of `char` is already non-portable. So we can just use `u8`
- // here and no portable code will notice.
- pub type c_char = u8;
-
- // The following assumes that Linux is always either ILP32 or LP64,
- // and char is always 8-bit.
- //
- // In theory, `c_long` and `c_ulong` could be `isize` and `usize`
- // respectively, however in practice Linux doesn't use them in that way
- // consistently. So stick with the convention followed by `libc` and
- // others and use the fixed-width types.
- pub type c_schar = i8;
- pub type c_uchar = u8;
- pub type c_short = i16;
- pub type c_ushort = u16;
- pub type c_int = i32;
- pub type c_uint = u32;
- #[cfg(target_pointer_width = "32")]
- pub type c_long = i32;
- #[cfg(target_pointer_width = "32")]
- pub type c_ulong = u32;
- #[cfg(target_pointer_width = "64")]
- pub type c_long = i64;
- #[cfg(target_pointer_width = "64")]
- pub type c_ulong = u64;
- pub type c_longlong = i64;
- pub type c_ulonglong = u64;
- pub type c_float = f32;
- pub type c_double = f64;
-
- pub use core::ffi::c_void;
-}
-
-// Confirm that our type definitions above match the actual type definitions.
-#[cfg(test)]
-mod assertions {
- use super::ctypes;
- static_assertions::assert_eq_size!(ctypes::c_char, libc::c_char);
- static_assertions::assert_type_eq_all!(ctypes::c_schar, libc::c_schar);
- static_assertions::assert_type_eq_all!(ctypes::c_uchar, libc::c_uchar);
- static_assertions::assert_type_eq_all!(ctypes::c_short, libc::c_short);
- static_assertions::assert_type_eq_all!(ctypes::c_ushort, libc::c_ushort);
- static_assertions::assert_type_eq_all!(ctypes::c_int, libc::c_int);
- static_assertions::assert_type_eq_all!(ctypes::c_uint, libc::c_uint);
- static_assertions::assert_type_eq_all!(ctypes::c_long, libc::c_long);
- static_assertions::assert_type_eq_all!(ctypes::c_ulong, libc::c_ulong);
- static_assertions::assert_type_eq_all!(ctypes::c_longlong, libc::c_longlong);
- static_assertions::assert_type_eq_all!(ctypes::c_ulonglong, libc::c_ulonglong);
- static_assertions::assert_type_eq_all!(ctypes::c_float, libc::c_float);
- static_assertions::assert_type_eq_all!(ctypes::c_double, libc::c_double);
-}
-
-// We don't enable `derive_eq` in bindgen because adding `PartialEq`/`Eq` to
-// *all* structs noticeably increases compile times. But we can add a few
-// manual impls where they're especially useful.
-#[cfg(feature = "general")]
-impl PartialEq for general::__kernel_timespec {
- fn eq(&self, other: &Self) -> bool {
- ({
- let Self { tv_sec, tv_nsec } = self;
- (tv_sec, tv_nsec)
- }) == ({
- let Self { tv_sec, tv_nsec } = other;
- (tv_sec, tv_nsec)
- })
- }
-}
-#[cfg(feature = "general")]
-impl Eq for general::__kernel_timespec {}
-
-#[cfg(feature = "general")]
-pub mod cmsg_macros {
- use crate::ctypes::{c_long, c_uint, c_uchar};
- use crate::general::{cmsghdr, msghdr};
- use core::mem::size_of;
- use core::ptr;
-
- pub unsafe fn CMSG_ALIGN(len: c_uint) -> c_uint {
- let c_long_size = size_of::<c_long>() as c_uint;
- (len + c_long_size - 1) & !(c_long_size - 1)
- }
-
- pub unsafe fn CMSG_DATA(cmsg: *const cmsghdr) -> *mut c_uchar {
- (cmsg as *mut c_uchar).offset(size_of::<cmsghdr>() as isize)
- }
-
- pub unsafe fn CMSG_SPACE(len: c_uint) -> c_uint {
- size_of::<cmsghdr>() as c_uint + CMSG_ALIGN(len)
- }
-
- pub unsafe fn CMSG_LEN(len: c_uint) -> c_uint {
- size_of::<cmsghdr>() as c_uint + len
- }
-
- pub unsafe fn CMSG_FIRSTHDR(mhdr: *const msghdr) -> *mut cmsghdr {
- if (*mhdr).msg_controllen < size_of::<cmsghdr>() as _ {
- return ptr::null_mut();
- }
-
- (*mhdr).msg_control as *mut cmsghdr
- }
-
- pub unsafe fn CMSG_NXTHDR(mhdr: *const msghdr, cmsg: *const cmsghdr) -> *mut cmsghdr {
- // We convert from raw pointers to isize here, which may not be sound in a future version of Rust.
- // Once the provenance rules are set in stone, it will be a good idea to give this function a once-over.
-
- let cmsg_len = (*cmsg).cmsg_len;
- let next_cmsg = (cmsg as *mut u8).offset(CMSG_ALIGN(cmsg_len as _) as isize) as *mut cmsghdr;
- let max = ((*mhdr).msg_control as usize) + ((*mhdr).msg_controllen as usize);
-
- if cmsg_len < size_of::<cmsghdr>() as _ {
- return ptr::null_mut();
- }
-
- if next_cmsg.offset(1) as usize > max || next_cmsg as usize + CMSG_ALIGN(cmsg_len as _) as usize > max
- {
- return ptr::null_mut();
- }
-
- next_cmsg
- }
-}
-
-#[cfg(feature = "general")]
-pub mod select_macros {
- use crate::ctypes::c_int;
- use crate::general::__kernel_fd_set;
- use core::mem::size_of;
-
- pub unsafe fn FD_CLR(fd: c_int, set: *mut __kernel_fd_set) {
- let bytes = set as *mut u8;
- if fd >= 0 {
- *bytes.offset((fd / 8) as isize) &= !(1 << (fd % 8));
- }
- }
-
- pub unsafe fn FD_SET(fd: c_int, set: *mut __kernel_fd_set) {
- let bytes = set as *mut u8;
- if fd >= 0 {
- *bytes.offset((fd / 8) as isize) |= 1 << (fd % 8);
- }
- }
-
- pub unsafe fn FD_ISSET(fd: c_int, set: *const __kernel_fd_set) -> bool {
- let bytes = set as *const u8;
- if fd >= 0 {
- *bytes.offset((fd / 8) as isize) & (1 << (fd % 8)) != 0
- } else {
- false
- }
- }
-
- pub unsafe fn FD_ZERO(set: *mut __kernel_fd_set) {
- let bytes = set as *mut u8;
- core::ptr::write_bytes(bytes, 0, size_of::<__kernel_fd_set>());
- }
-}
-
-// The rest of this file is auto-generated!
-#[cfg(feature = "errno")]
-#[cfg(target_arch = "arm")]
-#[path = "arm/errno.rs"]
-pub mod errno;
-#[cfg(feature = "general")]
-#[cfg(target_arch = "arm")]
-#[path = "arm/general.rs"]
-pub mod general;
-#[cfg(feature = "ioctl")]
-#[cfg(target_arch = "arm")]
-#[path = "arm/ioctl.rs"]
-pub mod ioctl;
-#[cfg(feature = "netlink")]
-#[cfg(target_arch = "arm")]
-#[path = "arm/netlink.rs"]
-pub mod netlink;
-#[cfg(feature = "errno")]
-#[cfg(target_arch = "aarch64")]
-#[path = "aarch64/errno.rs"]
-pub mod errno;
-#[cfg(feature = "general")]
-#[cfg(target_arch = "aarch64")]
-#[path = "aarch64/general.rs"]
-pub mod general;
-#[cfg(feature = "ioctl")]
-#[cfg(target_arch = "aarch64")]
-#[path = "aarch64/ioctl.rs"]
-pub mod ioctl;
-#[cfg(feature = "netlink")]
-#[cfg(target_arch = "aarch64")]
-#[path = "aarch64/netlink.rs"]
-pub mod netlink;
-#[cfg(feature = "errno")]
-#[cfg(target_arch = "loongarch64")]
-#[path = "loongarch64/errno.rs"]
-pub mod errno;
-#[cfg(feature = "general")]
-#[cfg(target_arch = "loongarch64")]
-#[path = "loongarch64/general.rs"]
-pub mod general;
-#[cfg(feature = "ioctl")]
-#[cfg(target_arch = "loongarch64")]
-#[path = "loongarch64/ioctl.rs"]
-pub mod ioctl;
-#[cfg(feature = "netlink")]
-#[cfg(target_arch = "loongarch64")]
-#[path = "loongarch64/netlink.rs"]
-pub mod netlink;
-#[cfg(feature = "errno")]
-#[cfg(target_arch = "mips")]
-#[path = "mips/errno.rs"]
-pub mod errno;
-#[cfg(feature = "general")]
-#[cfg(target_arch = "mips")]
-#[path = "mips/general.rs"]
-pub mod general;
-#[cfg(feature = "ioctl")]
-#[cfg(target_arch = "mips")]
-#[path = "mips/ioctl.rs"]
-pub mod ioctl;
-#[cfg(feature = "netlink")]
-#[cfg(target_arch = "mips")]
-#[path = "mips/netlink.rs"]
-pub mod netlink;
-#[cfg(feature = "errno")]
-#[cfg(target_arch = "mips64")]
-#[path = "mips64/errno.rs"]
-pub mod errno;
-#[cfg(feature = "general")]
-#[cfg(target_arch = "mips64")]
-#[path = "mips64/general.rs"]
-pub mod general;
-#[cfg(feature = "ioctl")]
-#[cfg(target_arch = "mips64")]
-#[path = "mips64/ioctl.rs"]
-pub mod ioctl;
-#[cfg(feature = "netlink")]
-#[cfg(target_arch = "mips64")]
-#[path = "mips64/netlink.rs"]
-pub mod netlink;
-#[cfg(feature = "errno")]
-#[cfg(target_arch = "powerpc")]
-#[path = "powerpc/errno.rs"]
-pub mod errno;
-#[cfg(feature = "general")]
-#[cfg(target_arch = "powerpc")]
-#[path = "powerpc/general.rs"]
-pub mod general;
-#[cfg(feature = "ioctl")]
-#[cfg(target_arch = "powerpc")]
-#[path = "powerpc/ioctl.rs"]
-pub mod ioctl;
-#[cfg(feature = "netlink")]
-#[cfg(target_arch = "powerpc")]
-#[path = "powerpc/netlink.rs"]
-pub mod netlink;
-#[cfg(feature = "errno")]
-#[cfg(target_arch = "powerpc64")]
-#[path = "powerpc64/errno.rs"]
-pub mod errno;
-#[cfg(feature = "general")]
-#[cfg(target_arch = "powerpc64")]
-#[path = "powerpc64/general.rs"]
-pub mod general;
-#[cfg(feature = "ioctl")]
-#[cfg(target_arch = "powerpc64")]
-#[path = "powerpc64/ioctl.rs"]
-pub mod ioctl;
-#[cfg(feature = "netlink")]
-#[cfg(target_arch = "powerpc64")]
-#[path = "powerpc64/netlink.rs"]
-pub mod netlink;
-#[cfg(feature = "errno")]
-#[cfg(target_arch = "riscv32")]
-#[path = "riscv32/errno.rs"]
-pub mod errno;
-#[cfg(feature = "general")]
-#[cfg(target_arch = "riscv32")]
-#[path = "riscv32/general.rs"]
-pub mod general;
-#[cfg(feature = "ioctl")]
-#[cfg(target_arch = "riscv32")]
-#[path = "riscv32/ioctl.rs"]
-pub mod ioctl;
-#[cfg(feature = "netlink")]
-#[cfg(target_arch = "riscv32")]
-#[path = "riscv32/netlink.rs"]
-pub mod netlink;
-#[cfg(feature = "errno")]
-#[cfg(target_arch = "riscv64")]
-#[path = "riscv64/errno.rs"]
-pub mod errno;
-#[cfg(feature = "general")]
-#[cfg(target_arch = "riscv64")]
-#[path = "riscv64/general.rs"]
-pub mod general;
-#[cfg(feature = "ioctl")]
-#[cfg(target_arch = "riscv64")]
-#[path = "riscv64/ioctl.rs"]
-pub mod ioctl;
-#[cfg(feature = "netlink")]
-#[cfg(target_arch = "riscv64")]
-#[path = "riscv64/netlink.rs"]
-pub mod netlink;
-#[cfg(feature = "errno")]
-#[cfg(target_arch = "s390x")]
-#[path = "s390x/errno.rs"]
-pub mod errno;
-#[cfg(feature = "general")]
-#[cfg(target_arch = "s390x")]
-#[path = "s390x/general.rs"]
-pub mod general;
-#[cfg(feature = "ioctl")]
-#[cfg(target_arch = "s390x")]
-#[path = "s390x/ioctl.rs"]
-pub mod ioctl;
-#[cfg(feature = "netlink")]
-#[cfg(target_arch = "s390x")]
-#[path = "s390x/netlink.rs"]
-pub mod netlink;
-#[cfg(feature = "errno")]
-#[cfg(target_arch = "sparc")]
-#[path = "sparc/errno.rs"]
-pub mod errno;
-#[cfg(feature = "general")]
-#[cfg(target_arch = "sparc")]
-#[path = "sparc/general.rs"]
-pub mod general;
-#[cfg(feature = "ioctl")]
-#[cfg(target_arch = "sparc")]
-#[path = "sparc/ioctl.rs"]
-pub mod ioctl;
-#[cfg(feature = "netlink")]
-#[cfg(target_arch = "sparc")]
-#[path = "sparc/netlink.rs"]
-pub mod netlink;
-#[cfg(feature = "errno")]
-#[cfg(target_arch = "sparc64")]
-#[path = "sparc64/errno.rs"]
-pub mod errno;
-#[cfg(feature = "general")]
-#[cfg(target_arch = "sparc64")]
-#[path = "sparc64/general.rs"]
-pub mod general;
-#[cfg(feature = "ioctl")]
-#[cfg(target_arch = "sparc64")]
-#[path = "sparc64/ioctl.rs"]
-pub mod ioctl;
-#[cfg(feature = "netlink")]
-#[cfg(target_arch = "sparc64")]
-#[path = "sparc64/netlink.rs"]
-pub mod netlink;
-#[cfg(feature = "errno")]
-#[cfg(target_arch = "x86")]
-#[path = "x86/errno.rs"]
-pub mod errno;
-#[cfg(feature = "general")]
-#[cfg(target_arch = "x86")]
-#[path = "x86/general.rs"]
-pub mod general;
-#[cfg(feature = "ioctl")]
-#[cfg(target_arch = "x86")]
-#[path = "x86/ioctl.rs"]
-pub mod ioctl;
-#[cfg(feature = "netlink")]
-#[cfg(target_arch = "x86")]
-#[path = "x86/netlink.rs"]
-pub mod netlink;
-#[cfg(feature = "errno")]
-#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
-#[path = "x86_64/errno.rs"]
-pub mod errno;
-#[cfg(feature = "general")]
-#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
-#[path = "x86_64/general.rs"]
-pub mod general;
-#[cfg(feature = "ioctl")]
-#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
-#[path = "x86_64/ioctl.rs"]
-pub mod ioctl;
-#[cfg(feature = "netlink")]
-#[cfg(all(target_arch = "x86_64", target_pointer_width = "64"))]
-#[path = "x86_64/netlink.rs"]
-pub mod netlink;
-#[cfg(feature = "errno")]
-#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
-#[path = "x32/errno.rs"]
-pub mod errno;
-#[cfg(feature = "general")]
-#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
-#[path = "x32/general.rs"]
-pub mod general;
-#[cfg(feature = "ioctl")]
-#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
-#[path = "x32/ioctl.rs"]
-pub mod ioctl;
-#[cfg(feature = "netlink")]
-#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
-#[path = "x32/netlink.rs"]
-pub mod netlink;
diff --git a/vendor/linux-raw-sys-0.3.2/src/loongarch64/errno.rs b/vendor/linux-raw-sys-0.3.2/src/loongarch64/errno.rs
deleted file mode 100644
index 8c5620d74..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/loongarch64/errno.rs
+++ /dev/null
@@ -1,135 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const EPERM: u32 = 1;
-pub const ENOENT: u32 = 2;
-pub const ESRCH: u32 = 3;
-pub const EINTR: u32 = 4;
-pub const EIO: u32 = 5;
-pub const ENXIO: u32 = 6;
-pub const E2BIG: u32 = 7;
-pub const ENOEXEC: u32 = 8;
-pub const EBADF: u32 = 9;
-pub const ECHILD: u32 = 10;
-pub const EAGAIN: u32 = 11;
-pub const ENOMEM: u32 = 12;
-pub const EACCES: u32 = 13;
-pub const EFAULT: u32 = 14;
-pub const ENOTBLK: u32 = 15;
-pub const EBUSY: u32 = 16;
-pub const EEXIST: u32 = 17;
-pub const EXDEV: u32 = 18;
-pub const ENODEV: u32 = 19;
-pub const ENOTDIR: u32 = 20;
-pub const EISDIR: u32 = 21;
-pub const EINVAL: u32 = 22;
-pub const ENFILE: u32 = 23;
-pub const EMFILE: u32 = 24;
-pub const ENOTTY: u32 = 25;
-pub const ETXTBSY: u32 = 26;
-pub const EFBIG: u32 = 27;
-pub const ENOSPC: u32 = 28;
-pub const ESPIPE: u32 = 29;
-pub const EROFS: u32 = 30;
-pub const EMLINK: u32 = 31;
-pub const EPIPE: u32 = 32;
-pub const EDOM: u32 = 33;
-pub const ERANGE: u32 = 34;
-pub const EDEADLK: u32 = 35;
-pub const ENAMETOOLONG: u32 = 36;
-pub const ENOLCK: u32 = 37;
-pub const ENOSYS: u32 = 38;
-pub const ENOTEMPTY: u32 = 39;
-pub const ELOOP: u32 = 40;
-pub const EWOULDBLOCK: u32 = 11;
-pub const ENOMSG: u32 = 42;
-pub const EIDRM: u32 = 43;
-pub const ECHRNG: u32 = 44;
-pub const EL2NSYNC: u32 = 45;
-pub const EL3HLT: u32 = 46;
-pub const EL3RST: u32 = 47;
-pub const ELNRNG: u32 = 48;
-pub const EUNATCH: u32 = 49;
-pub const ENOCSI: u32 = 50;
-pub const EL2HLT: u32 = 51;
-pub const EBADE: u32 = 52;
-pub const EBADR: u32 = 53;
-pub const EXFULL: u32 = 54;
-pub const ENOANO: u32 = 55;
-pub const EBADRQC: u32 = 56;
-pub const EBADSLT: u32 = 57;
-pub const EDEADLOCK: u32 = 35;
-pub const EBFONT: u32 = 59;
-pub const ENOSTR: u32 = 60;
-pub const ENODATA: u32 = 61;
-pub const ETIME: u32 = 62;
-pub const ENOSR: u32 = 63;
-pub const ENONET: u32 = 64;
-pub const ENOPKG: u32 = 65;
-pub const EREMOTE: u32 = 66;
-pub const ENOLINK: u32 = 67;
-pub const EADV: u32 = 68;
-pub const ESRMNT: u32 = 69;
-pub const ECOMM: u32 = 70;
-pub const EPROTO: u32 = 71;
-pub const EMULTIHOP: u32 = 72;
-pub const EDOTDOT: u32 = 73;
-pub const EBADMSG: u32 = 74;
-pub const EOVERFLOW: u32 = 75;
-pub const ENOTUNIQ: u32 = 76;
-pub const EBADFD: u32 = 77;
-pub const EREMCHG: u32 = 78;
-pub const ELIBACC: u32 = 79;
-pub const ELIBBAD: u32 = 80;
-pub const ELIBSCN: u32 = 81;
-pub const ELIBMAX: u32 = 82;
-pub const ELIBEXEC: u32 = 83;
-pub const EILSEQ: u32 = 84;
-pub const ERESTART: u32 = 85;
-pub const ESTRPIPE: u32 = 86;
-pub const EUSERS: u32 = 87;
-pub const ENOTSOCK: u32 = 88;
-pub const EDESTADDRREQ: u32 = 89;
-pub const EMSGSIZE: u32 = 90;
-pub const EPROTOTYPE: u32 = 91;
-pub const ENOPROTOOPT: u32 = 92;
-pub const EPROTONOSUPPORT: u32 = 93;
-pub const ESOCKTNOSUPPORT: u32 = 94;
-pub const EOPNOTSUPP: u32 = 95;
-pub const EPFNOSUPPORT: u32 = 96;
-pub const EAFNOSUPPORT: u32 = 97;
-pub const EADDRINUSE: u32 = 98;
-pub const EADDRNOTAVAIL: u32 = 99;
-pub const ENETDOWN: u32 = 100;
-pub const ENETUNREACH: u32 = 101;
-pub const ENETRESET: u32 = 102;
-pub const ECONNABORTED: u32 = 103;
-pub const ECONNRESET: u32 = 104;
-pub const ENOBUFS: u32 = 105;
-pub const EISCONN: u32 = 106;
-pub const ENOTCONN: u32 = 107;
-pub const ESHUTDOWN: u32 = 108;
-pub const ETOOMANYREFS: u32 = 109;
-pub const ETIMEDOUT: u32 = 110;
-pub const ECONNREFUSED: u32 = 111;
-pub const EHOSTDOWN: u32 = 112;
-pub const EHOSTUNREACH: u32 = 113;
-pub const EALREADY: u32 = 114;
-pub const EINPROGRESS: u32 = 115;
-pub const ESTALE: u32 = 116;
-pub const EUCLEAN: u32 = 117;
-pub const ENOTNAM: u32 = 118;
-pub const ENAVAIL: u32 = 119;
-pub const EISNAM: u32 = 120;
-pub const EREMOTEIO: u32 = 121;
-pub const EDQUOT: u32 = 122;
-pub const ENOMEDIUM: u32 = 123;
-pub const EMEDIUMTYPE: u32 = 124;
-pub const ECANCELED: u32 = 125;
-pub const ENOKEY: u32 = 126;
-pub const EKEYEXPIRED: u32 = 127;
-pub const EKEYREVOKED: u32 = 128;
-pub const EKEYREJECTED: u32 = 129;
-pub const EOWNERDEAD: u32 = 130;
-pub const ENOTRECOVERABLE: u32 = 131;
-pub const ERFKILL: u32 = 132;
-pub const EHWPOISON: u32 = 133;
diff --git a/vendor/linux-raw-sys-0.3.2/src/loongarch64/general.rs b/vendor/linux-raw-sys-0.3.2/src/loongarch64/general.rs
deleted file mode 100644
index 79d309016..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/loongarch64/general.rs
+++ /dev/null
@@ -1,5205 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
-pub struct __BindgenBitfieldUnit<Storage> {
-storage: Storage,
-}
-impl<Storage> __BindgenBitfieldUnit<Storage> {
-#[inline]
-pub const fn new(storage: Storage) -> Self {
-Self { storage }
-}
-}
-impl<Storage> __BindgenBitfieldUnit<Storage>
-where
-Storage: AsRef<[u8]> + AsMut<[u8]>,
-{
-#[inline]
-pub fn get_bit(&self, index: usize) -> bool {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = self.storage.as_ref()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-byte & mask == mask
-}
-#[inline]
-pub fn set_bit(&mut self, index: usize, val: bool) {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = &mut self.storage.as_mut()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-if val {
-*byte |= mask;
-} else {
-*byte &= !mask;
-}
-}
-#[inline]
-pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-let mut val = 0;
-for i in 0..(bit_width as usize) {
-if self.get_bit(i + bit_offset) {
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-val |= 1 << index;
-}
-}
-val
-}
-#[inline]
-pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-for i in 0..(bit_width as usize) {
-let mask = 1 << i;
-let val_bit_is_set = val & mask == mask;
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-self.set_bit(index + bit_offset, val_bit_is_set);
-}
-}
-}
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-#[repr(C)]
-pub struct __BindgenUnionField<T>(::core::marker::PhantomData<T>);
-impl<T> __BindgenUnionField<T> {
-#[inline]
-pub const fn new() -> Self {
-__BindgenUnionField(::core::marker::PhantomData)
-}
-#[inline]
-pub unsafe fn as_ref(&self) -> &T {
-::core::mem::transmute(self)
-}
-#[inline]
-pub unsafe fn as_mut(&mut self) -> &mut T {
-::core::mem::transmute(self)
-}
-}
-impl<T> ::core::default::Default for __BindgenUnionField<T> {
-#[inline]
-fn default() -> Self {
-Self::new()
-}
-}
-impl<T> ::core::clone::Clone for __BindgenUnionField<T> {
-#[inline]
-fn clone(&self) -> Self {
-Self::new()
-}
-}
-impl<T> ::core::marker::Copy for __BindgenUnionField<T> {}
-impl<T> ::core::fmt::Debug for __BindgenUnionField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__BindgenUnionField")
-}
-}
-impl<T> ::core::hash::Hash for __BindgenUnionField<T> {
-fn hash<H: ::core::hash::Hasher>(&self, _state: &mut H) {}
-}
-impl<T> ::core::cmp::PartialEq for __BindgenUnionField<T> {
-fn eq(&self, _other: &__BindgenUnionField<T>) -> bool {
-true
-}
-}
-impl<T> ::core::cmp::Eq for __BindgenUnionField<T> {}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const AT_SYSINFO_EHDR: u32 = 33;
-pub const AT_VECTOR_SIZE_ARCH: u32 = 1;
-pub const AT_NULL: u32 = 0;
-pub const AT_IGNORE: u32 = 1;
-pub const AT_EXECFD: u32 = 2;
-pub const AT_PHDR: u32 = 3;
-pub const AT_PHENT: u32 = 4;
-pub const AT_PHNUM: u32 = 5;
-pub const AT_PAGESZ: u32 = 6;
-pub const AT_BASE: u32 = 7;
-pub const AT_FLAGS: u32 = 8;
-pub const AT_ENTRY: u32 = 9;
-pub const AT_NOTELF: u32 = 10;
-pub const AT_UID: u32 = 11;
-pub const AT_EUID: u32 = 12;
-pub const AT_GID: u32 = 13;
-pub const AT_EGID: u32 = 14;
-pub const AT_PLATFORM: u32 = 15;
-pub const AT_HWCAP: u32 = 16;
-pub const AT_CLKTCK: u32 = 17;
-pub const AT_SECURE: u32 = 23;
-pub const AT_BASE_PLATFORM: u32 = 24;
-pub const AT_RANDOM: u32 = 25;
-pub const AT_HWCAP2: u32 = 26;
-pub const AT_EXECFN: u32 = 31;
-pub const AT_MINSIGSTKSZ: u32 = 51;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S_1: u32 = 1;
-pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798;
-pub const _LINUX_CAPABILITY_U32S_2: u32 = 2;
-pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514;
-pub const _LINUX_CAPABILITY_U32S_3: u32 = 2;
-pub const VFS_CAP_REVISION_MASK: u32 = 4278190080;
-pub const VFS_CAP_REVISION_SHIFT: u32 = 24;
-pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081;
-pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1;
-pub const VFS_CAP_REVISION_1: u32 = 16777216;
-pub const VFS_CAP_U32_1: u32 = 1;
-pub const VFS_CAP_REVISION_2: u32 = 33554432;
-pub const VFS_CAP_U32_2: u32 = 2;
-pub const VFS_CAP_REVISION_3: u32 = 50331648;
-pub const VFS_CAP_U32_3: u32 = 2;
-pub const VFS_CAP_U32: u32 = 2;
-pub const VFS_CAP_REVISION: u32 = 50331648;
-pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S: u32 = 1;
-pub const CAP_CHOWN: u32 = 0;
-pub const CAP_DAC_OVERRIDE: u32 = 1;
-pub const CAP_DAC_READ_SEARCH: u32 = 2;
-pub const CAP_FOWNER: u32 = 3;
-pub const CAP_FSETID: u32 = 4;
-pub const CAP_KILL: u32 = 5;
-pub const CAP_SETGID: u32 = 6;
-pub const CAP_SETUID: u32 = 7;
-pub const CAP_SETPCAP: u32 = 8;
-pub const CAP_LINUX_IMMUTABLE: u32 = 9;
-pub const CAP_NET_BIND_SERVICE: u32 = 10;
-pub const CAP_NET_BROADCAST: u32 = 11;
-pub const CAP_NET_ADMIN: u32 = 12;
-pub const CAP_NET_RAW: u32 = 13;
-pub const CAP_IPC_LOCK: u32 = 14;
-pub const CAP_IPC_OWNER: u32 = 15;
-pub const CAP_SYS_MODULE: u32 = 16;
-pub const CAP_SYS_RAWIO: u32 = 17;
-pub const CAP_SYS_CHROOT: u32 = 18;
-pub const CAP_SYS_PTRACE: u32 = 19;
-pub const CAP_SYS_PACCT: u32 = 20;
-pub const CAP_SYS_ADMIN: u32 = 21;
-pub const CAP_SYS_BOOT: u32 = 22;
-pub const CAP_SYS_NICE: u32 = 23;
-pub const CAP_SYS_RESOURCE: u32 = 24;
-pub const CAP_SYS_TIME: u32 = 25;
-pub const CAP_SYS_TTY_CONFIG: u32 = 26;
-pub const CAP_MKNOD: u32 = 27;
-pub const CAP_LEASE: u32 = 28;
-pub const CAP_AUDIT_WRITE: u32 = 29;
-pub const CAP_AUDIT_CONTROL: u32 = 30;
-pub const CAP_SETFCAP: u32 = 31;
-pub const CAP_MAC_OVERRIDE: u32 = 32;
-pub const CAP_MAC_ADMIN: u32 = 33;
-pub const CAP_SYSLOG: u32 = 34;
-pub const CAP_WAKE_ALARM: u32 = 35;
-pub const CAP_BLOCK_SUSPEND: u32 = 36;
-pub const CAP_AUDIT_READ: u32 = 37;
-pub const CAP_PERFMON: u32 = 38;
-pub const CAP_BPF: u32 = 39;
-pub const CAP_CHECKPOINT_RESTORE: u32 = 40;
-pub const CAP_LAST_CAP: u32 = 40;
-pub const O_ACCMODE: u32 = 3;
-pub const O_RDONLY: u32 = 0;
-pub const O_WRONLY: u32 = 1;
-pub const O_RDWR: u32 = 2;
-pub const O_CREAT: u32 = 64;
-pub const O_EXCL: u32 = 128;
-pub const O_NOCTTY: u32 = 256;
-pub const O_TRUNC: u32 = 512;
-pub const O_APPEND: u32 = 1024;
-pub const O_NONBLOCK: u32 = 2048;
-pub const O_DSYNC: u32 = 4096;
-pub const FASYNC: u32 = 8192;
-pub const O_DIRECT: u32 = 16384;
-pub const O_LARGEFILE: u32 = 32768;
-pub const O_DIRECTORY: u32 = 65536;
-pub const O_NOFOLLOW: u32 = 131072;
-pub const O_NOATIME: u32 = 262144;
-pub const O_CLOEXEC: u32 = 524288;
-pub const __O_SYNC: u32 = 1048576;
-pub const O_SYNC: u32 = 1052672;
-pub const O_PATH: u32 = 2097152;
-pub const __O_TMPFILE: u32 = 4194304;
-pub const O_TMPFILE: u32 = 4259840;
-pub const O_TMPFILE_MASK: u32 = 4259904;
-pub const O_NDELAY: u32 = 2048;
-pub const F_DUPFD: u32 = 0;
-pub const F_GETFD: u32 = 1;
-pub const F_SETFD: u32 = 2;
-pub const F_GETFL: u32 = 3;
-pub const F_SETFL: u32 = 4;
-pub const F_GETLK: u32 = 5;
-pub const F_SETLK: u32 = 6;
-pub const F_SETLKW: u32 = 7;
-pub const F_SETOWN: u32 = 8;
-pub const F_GETOWN: u32 = 9;
-pub const F_SETSIG: u32 = 10;
-pub const F_GETSIG: u32 = 11;
-pub const F_SETOWN_EX: u32 = 15;
-pub const F_GETOWN_EX: u32 = 16;
-pub const F_GETOWNER_UIDS: u32 = 17;
-pub const F_OFD_GETLK: u32 = 36;
-pub const F_OFD_SETLK: u32 = 37;
-pub const F_OFD_SETLKW: u32 = 38;
-pub const F_OWNER_TID: u32 = 0;
-pub const F_OWNER_PID: u32 = 1;
-pub const F_OWNER_PGRP: u32 = 2;
-pub const FD_CLOEXEC: u32 = 1;
-pub const F_RDLCK: u32 = 0;
-pub const F_WRLCK: u32 = 1;
-pub const F_UNLCK: u32 = 2;
-pub const F_EXLCK: u32 = 4;
-pub const F_SHLCK: u32 = 8;
-pub const LOCK_SH: u32 = 1;
-pub const LOCK_EX: u32 = 2;
-pub const LOCK_NB: u32 = 4;
-pub const LOCK_UN: u32 = 8;
-pub const LOCK_MAND: u32 = 32;
-pub const LOCK_READ: u32 = 64;
-pub const LOCK_WRITE: u32 = 128;
-pub const LOCK_RW: u32 = 192;
-pub const F_LINUX_SPECIFIC_BASE: u32 = 1024;
-pub const RESOLVE_NO_XDEV: u32 = 1;
-pub const RESOLVE_NO_MAGICLINKS: u32 = 2;
-pub const RESOLVE_NO_SYMLINKS: u32 = 4;
-pub const RESOLVE_BENEATH: u32 = 8;
-pub const RESOLVE_IN_ROOT: u32 = 16;
-pub const RESOLVE_CACHED: u32 = 32;
-pub const F_SETLEASE: u32 = 1024;
-pub const F_GETLEASE: u32 = 1025;
-pub const F_CANCELLK: u32 = 1029;
-pub const F_DUPFD_CLOEXEC: u32 = 1030;
-pub const F_NOTIFY: u32 = 1026;
-pub const F_SETPIPE_SZ: u32 = 1031;
-pub const F_GETPIPE_SZ: u32 = 1032;
-pub const F_ADD_SEALS: u32 = 1033;
-pub const F_GET_SEALS: u32 = 1034;
-pub const F_SEAL_SEAL: u32 = 1;
-pub const F_SEAL_SHRINK: u32 = 2;
-pub const F_SEAL_GROW: u32 = 4;
-pub const F_SEAL_WRITE: u32 = 8;
-pub const F_SEAL_FUTURE_WRITE: u32 = 16;
-pub const F_GET_RW_HINT: u32 = 1035;
-pub const F_SET_RW_HINT: u32 = 1036;
-pub const F_GET_FILE_RW_HINT: u32 = 1037;
-pub const F_SET_FILE_RW_HINT: u32 = 1038;
-pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const RWH_WRITE_LIFE_NONE: u32 = 1;
-pub const RWH_WRITE_LIFE_SHORT: u32 = 2;
-pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3;
-pub const RWH_WRITE_LIFE_LONG: u32 = 4;
-pub const RWH_WRITE_LIFE_EXTREME: u32 = 5;
-pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const DN_ACCESS: u32 = 1;
-pub const DN_MODIFY: u32 = 2;
-pub const DN_CREATE: u32 = 4;
-pub const DN_DELETE: u32 = 8;
-pub const DN_RENAME: u32 = 16;
-pub const DN_ATTRIB: u32 = 32;
-pub const DN_MULTISHOT: u32 = 2147483648;
-pub const AT_FDCWD: i32 = -100;
-pub const AT_SYMLINK_NOFOLLOW: u32 = 256;
-pub const AT_EACCESS: u32 = 512;
-pub const AT_REMOVEDIR: u32 = 512;
-pub const AT_SYMLINK_FOLLOW: u32 = 1024;
-pub const AT_NO_AUTOMOUNT: u32 = 2048;
-pub const AT_EMPTY_PATH: u32 = 4096;
-pub const AT_STATX_SYNC_TYPE: u32 = 24576;
-pub const AT_STATX_SYNC_AS_STAT: u32 = 0;
-pub const AT_STATX_FORCE_SYNC: u32 = 8192;
-pub const AT_STATX_DONT_SYNC: u32 = 16384;
-pub const AT_RECURSIVE: u32 = 32768;
-pub const EPOLL_CLOEXEC: u32 = 524288;
-pub const EPOLL_CTL_ADD: u32 = 1;
-pub const EPOLL_CTL_DEL: u32 = 2;
-pub const EPOLL_CTL_MOD: u32 = 3;
-pub const POSIX_FADV_NORMAL: u32 = 0;
-pub const POSIX_FADV_RANDOM: u32 = 1;
-pub const POSIX_FADV_SEQUENTIAL: u32 = 2;
-pub const POSIX_FADV_WILLNEED: u32 = 3;
-pub const POSIX_FADV_DONTNEED: u32 = 4;
-pub const POSIX_FADV_NOREUSE: u32 = 5;
-pub const FALLOC_FL_KEEP_SIZE: u32 = 1;
-pub const FALLOC_FL_PUNCH_HOLE: u32 = 2;
-pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4;
-pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8;
-pub const FALLOC_FL_ZERO_RANGE: u32 = 16;
-pub const FALLOC_FL_INSERT_RANGE: u32 = 32;
-pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64;
-pub const NR_OPEN: u32 = 1024;
-pub const NGROUPS_MAX: u32 = 65536;
-pub const ARG_MAX: u32 = 131072;
-pub const LINK_MAX: u32 = 127;
-pub const MAX_CANON: u32 = 255;
-pub const MAX_INPUT: u32 = 255;
-pub const NAME_MAX: u32 = 255;
-pub const PATH_MAX: u32 = 4096;
-pub const PIPE_BUF: u32 = 4096;
-pub const XATTR_NAME_MAX: u32 = 255;
-pub const XATTR_SIZE_MAX: u32 = 65536;
-pub const XATTR_LIST_MAX: u32 = 65536;
-pub const RTSIG_MAX: u32 = 32;
-pub const _IOC_NRBITS: u32 = 8;
-pub const _IOC_TYPEBITS: u32 = 8;
-pub const _IOC_SIZEBITS: u32 = 14;
-pub const _IOC_DIRBITS: u32 = 2;
-pub const _IOC_NRMASK: u32 = 255;
-pub const _IOC_TYPEMASK: u32 = 255;
-pub const _IOC_SIZEMASK: u32 = 16383;
-pub const _IOC_DIRMASK: u32 = 3;
-pub const _IOC_NRSHIFT: u32 = 0;
-pub const _IOC_TYPESHIFT: u32 = 8;
-pub const _IOC_SIZESHIFT: u32 = 16;
-pub const _IOC_DIRSHIFT: u32 = 30;
-pub const _IOC_NONE: u32 = 0;
-pub const _IOC_WRITE: u32 = 1;
-pub const _IOC_READ: u32 = 2;
-pub const IOC_IN: u32 = 1073741824;
-pub const IOC_OUT: u32 = 2147483648;
-pub const IOC_INOUT: u32 = 3221225472;
-pub const IOCSIZE_MASK: u32 = 1073676288;
-pub const IOCSIZE_SHIFT: u32 = 16;
-pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16;
-pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1;
-pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4;
-pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5;
-pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6;
-pub const FSCRYPT_MODE_SM4_XTS: u32 = 7;
-pub const FSCRYPT_MODE_SM4_CTS: u32 = 8;
-pub const FSCRYPT_MODE_ADIANTUM: u32 = 9;
-pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10;
-pub const FSCRYPT_POLICY_V1: u32 = 0;
-pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64;
-pub const FSCRYPT_POLICY_V2: u32 = 2;
-pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16;
-pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1;
-pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1;
-pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3;
-pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1;
-pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FS_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FS_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FS_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FS_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FS_POLICY_FLAGS_VALID: u32 = 7;
-pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0;
-pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1;
-pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2;
-pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3;
-pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4;
-pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5;
-pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6;
-pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9;
-pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FS_MAX_KEY_SIZE: u32 = 64;
-pub const MS_RDONLY: u32 = 1;
-pub const MS_NOSUID: u32 = 2;
-pub const MS_NODEV: u32 = 4;
-pub const MS_NOEXEC: u32 = 8;
-pub const MS_SYNCHRONOUS: u32 = 16;
-pub const MS_REMOUNT: u32 = 32;
-pub const MS_MANDLOCK: u32 = 64;
-pub const MS_DIRSYNC: u32 = 128;
-pub const MS_NOSYMFOLLOW: u32 = 256;
-pub const MS_NOATIME: u32 = 1024;
-pub const MS_NODIRATIME: u32 = 2048;
-pub const MS_BIND: u32 = 4096;
-pub const MS_MOVE: u32 = 8192;
-pub const MS_REC: u32 = 16384;
-pub const MS_VERBOSE: u32 = 32768;
-pub const MS_SILENT: u32 = 32768;
-pub const MS_POSIXACL: u32 = 65536;
-pub const MS_UNBINDABLE: u32 = 131072;
-pub const MS_PRIVATE: u32 = 262144;
-pub const MS_SLAVE: u32 = 524288;
-pub const MS_SHARED: u32 = 1048576;
-pub const MS_RELATIME: u32 = 2097152;
-pub const MS_KERNMOUNT: u32 = 4194304;
-pub const MS_I_VERSION: u32 = 8388608;
-pub const MS_STRICTATIME: u32 = 16777216;
-pub const MS_LAZYTIME: u32 = 33554432;
-pub const MS_SUBMOUNT: u32 = 67108864;
-pub const MS_NOREMOTELOCK: u32 = 134217728;
-pub const MS_NOSEC: u32 = 268435456;
-pub const MS_BORN: u32 = 536870912;
-pub const MS_ACTIVE: u32 = 1073741824;
-pub const MS_NOUSER: u32 = 2147483648;
-pub const MS_RMT_MASK: u32 = 41943121;
-pub const MS_MGC_VAL: u32 = 3236757504;
-pub const MS_MGC_MSK: u32 = 4294901760;
-pub const OPEN_TREE_CLONE: u32 = 1;
-pub const OPEN_TREE_CLOEXEC: u32 = 524288;
-pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1;
-pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2;
-pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4;
-pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16;
-pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32;
-pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64;
-pub const MOVE_MOUNT_SET_GROUP: u32 = 256;
-pub const MOVE_MOUNT__MASK: u32 = 375;
-pub const FSOPEN_CLOEXEC: u32 = 1;
-pub const FSPICK_CLOEXEC: u32 = 1;
-pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2;
-pub const FSPICK_NO_AUTOMOUNT: u32 = 4;
-pub const FSPICK_EMPTY_PATH: u32 = 8;
-pub const FSMOUNT_CLOEXEC: u32 = 1;
-pub const MOUNT_ATTR_RDONLY: u32 = 1;
-pub const MOUNT_ATTR_NOSUID: u32 = 2;
-pub const MOUNT_ATTR_NODEV: u32 = 4;
-pub const MOUNT_ATTR_NOEXEC: u32 = 8;
-pub const MOUNT_ATTR__ATIME: u32 = 112;
-pub const MOUNT_ATTR_RELATIME: u32 = 0;
-pub const MOUNT_ATTR_NOATIME: u32 = 16;
-pub const MOUNT_ATTR_STRICTATIME: u32 = 32;
-pub const MOUNT_ATTR_NODIRATIME: u32 = 128;
-pub const MOUNT_ATTR_IDMAP: u32 = 1048576;
-pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152;
-pub const MOUNT_ATTR_SIZE_VER0: u32 = 32;
-pub const INR_OPEN_CUR: u32 = 1024;
-pub const INR_OPEN_MAX: u32 = 4096;
-pub const BLOCK_SIZE_BITS: u32 = 10;
-pub const BLOCK_SIZE: u32 = 1024;
-pub const SEEK_SET: u32 = 0;
-pub const SEEK_CUR: u32 = 1;
-pub const SEEK_END: u32 = 2;
-pub const SEEK_DATA: u32 = 3;
-pub const SEEK_HOLE: u32 = 4;
-pub const SEEK_MAX: u32 = 4;
-pub const RENAME_NOREPLACE: u32 = 1;
-pub const RENAME_EXCHANGE: u32 = 2;
-pub const RENAME_WHITEOUT: u32 = 4;
-pub const FILE_DEDUPE_RANGE_SAME: u32 = 0;
-pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1;
-pub const NR_FILE: u32 = 8192;
-pub const FS_XFLAG_REALTIME: u32 = 1;
-pub const FS_XFLAG_PREALLOC: u32 = 2;
-pub const FS_XFLAG_IMMUTABLE: u32 = 8;
-pub const FS_XFLAG_APPEND: u32 = 16;
-pub const FS_XFLAG_SYNC: u32 = 32;
-pub const FS_XFLAG_NOATIME: u32 = 64;
-pub const FS_XFLAG_NODUMP: u32 = 128;
-pub const FS_XFLAG_RTINHERIT: u32 = 256;
-pub const FS_XFLAG_PROJINHERIT: u32 = 512;
-pub const FS_XFLAG_NOSYMLINKS: u32 = 1024;
-pub const FS_XFLAG_EXTSIZE: u32 = 2048;
-pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096;
-pub const FS_XFLAG_NODEFRAG: u32 = 8192;
-pub const FS_XFLAG_FILESTREAM: u32 = 16384;
-pub const FS_XFLAG_DAX: u32 = 32768;
-pub const FS_XFLAG_COWEXTSIZE: u32 = 65536;
-pub const FS_XFLAG_HASATTR: u32 = 2147483648;
-pub const BMAP_IOCTL: u32 = 1;
-pub const FSLABEL_MAX: u32 = 256;
-pub const FS_SECRM_FL: u32 = 1;
-pub const FS_UNRM_FL: u32 = 2;
-pub const FS_COMPR_FL: u32 = 4;
-pub const FS_SYNC_FL: u32 = 8;
-pub const FS_IMMUTABLE_FL: u32 = 16;
-pub const FS_APPEND_FL: u32 = 32;
-pub const FS_NODUMP_FL: u32 = 64;
-pub const FS_NOATIME_FL: u32 = 128;
-pub const FS_DIRTY_FL: u32 = 256;
-pub const FS_COMPRBLK_FL: u32 = 512;
-pub const FS_NOCOMP_FL: u32 = 1024;
-pub const FS_ENCRYPT_FL: u32 = 2048;
-pub const FS_BTREE_FL: u32 = 4096;
-pub const FS_INDEX_FL: u32 = 4096;
-pub const FS_IMAGIC_FL: u32 = 8192;
-pub const FS_JOURNAL_DATA_FL: u32 = 16384;
-pub const FS_NOTAIL_FL: u32 = 32768;
-pub const FS_DIRSYNC_FL: u32 = 65536;
-pub const FS_TOPDIR_FL: u32 = 131072;
-pub const FS_HUGE_FILE_FL: u32 = 262144;
-pub const FS_EXTENT_FL: u32 = 524288;
-pub const FS_VERITY_FL: u32 = 1048576;
-pub const FS_EA_INODE_FL: u32 = 2097152;
-pub const FS_EOFBLOCKS_FL: u32 = 4194304;
-pub const FS_NOCOW_FL: u32 = 8388608;
-pub const FS_DAX_FL: u32 = 33554432;
-pub const FS_INLINE_DATA_FL: u32 = 268435456;
-pub const FS_PROJINHERIT_FL: u32 = 536870912;
-pub const FS_CASEFOLD_FL: u32 = 1073741824;
-pub const FS_RESERVED_FL: u32 = 2147483648;
-pub const FS_FL_USER_VISIBLE: u32 = 253951;
-pub const FS_FL_USER_MODIFIABLE: u32 = 229631;
-pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1;
-pub const SYNC_FILE_RANGE_WRITE: u32 = 2;
-pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4;
-pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7;
-pub const FUTEX_WAIT: u32 = 0;
-pub const FUTEX_WAKE: u32 = 1;
-pub const FUTEX_FD: u32 = 2;
-pub const FUTEX_REQUEUE: u32 = 3;
-pub const FUTEX_CMP_REQUEUE: u32 = 4;
-pub const FUTEX_WAKE_OP: u32 = 5;
-pub const FUTEX_LOCK_PI: u32 = 6;
-pub const FUTEX_UNLOCK_PI: u32 = 7;
-pub const FUTEX_TRYLOCK_PI: u32 = 8;
-pub const FUTEX_WAIT_BITSET: u32 = 9;
-pub const FUTEX_WAKE_BITSET: u32 = 10;
-pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11;
-pub const FUTEX_CMP_REQUEUE_PI: u32 = 12;
-pub const FUTEX_LOCK_PI2: u32 = 13;
-pub const FUTEX_PRIVATE_FLAG: u32 = 128;
-pub const FUTEX_CLOCK_REALTIME: u32 = 256;
-pub const FUTEX_CMD_MASK: i32 = -385;
-pub const FUTEX_WAIT_PRIVATE: u32 = 128;
-pub const FUTEX_WAKE_PRIVATE: u32 = 129;
-pub const FUTEX_REQUEUE_PRIVATE: u32 = 131;
-pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132;
-pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133;
-pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134;
-pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141;
-pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135;
-pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136;
-pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137;
-pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138;
-pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139;
-pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140;
-pub const FUTEX_32: u32 = 2;
-pub const FUTEX_WAITV_MAX: u32 = 128;
-pub const FUTEX_WAITERS: u32 = 2147483648;
-pub const FUTEX_OWNER_DIED: u32 = 1073741824;
-pub const FUTEX_TID_MASK: u32 = 1073741823;
-pub const ROBUST_LIST_LIMIT: u32 = 2048;
-pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295;
-pub const FUTEX_OP_SET: u32 = 0;
-pub const FUTEX_OP_ADD: u32 = 1;
-pub const FUTEX_OP_OR: u32 = 2;
-pub const FUTEX_OP_ANDN: u32 = 3;
-pub const FUTEX_OP_XOR: u32 = 4;
-pub const FUTEX_OP_OPARG_SHIFT: u32 = 8;
-pub const FUTEX_OP_CMP_EQ: u32 = 0;
-pub const FUTEX_OP_CMP_NE: u32 = 1;
-pub const FUTEX_OP_CMP_LT: u32 = 2;
-pub const FUTEX_OP_CMP_LE: u32 = 3;
-pub const FUTEX_OP_CMP_GT: u32 = 4;
-pub const FUTEX_OP_CMP_GE: u32 = 5;
-pub const __UAPI_DEF_IF_IFCONF: u32 = 1;
-pub const __UAPI_DEF_IF_IFMAP: u32 = 1;
-pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1;
-pub const __UAPI_DEF_IF_IFREQ: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1;
-pub const __UAPI_DEF_IN_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN_IPPROTO: u32 = 1;
-pub const __UAPI_DEF_IN_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP_MREQ: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1;
-pub const __UAPI_DEF_IN_CLASS: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1;
-pub const __UAPI_DEF_IPV6_MREQ: u32 = 1;
-pub const __UAPI_DEF_IPPROTO_V6: u32 = 1;
-pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1;
-pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1;
-pub const __UAPI_DEF_XATTR: u32 = 1;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const IP_TOS: u32 = 1;
-pub const IP_TTL: u32 = 2;
-pub const IP_HDRINCL: u32 = 3;
-pub const IP_OPTIONS: u32 = 4;
-pub const IP_ROUTER_ALERT: u32 = 5;
-pub const IP_RECVOPTS: u32 = 6;
-pub const IP_RETOPTS: u32 = 7;
-pub const IP_PKTINFO: u32 = 8;
-pub const IP_PKTOPTIONS: u32 = 9;
-pub const IP_MTU_DISCOVER: u32 = 10;
-pub const IP_RECVERR: u32 = 11;
-pub const IP_RECVTTL: u32 = 12;
-pub const IP_RECVTOS: u32 = 13;
-pub const IP_MTU: u32 = 14;
-pub const IP_FREEBIND: u32 = 15;
-pub const IP_IPSEC_POLICY: u32 = 16;
-pub const IP_XFRM_POLICY: u32 = 17;
-pub const IP_PASSSEC: u32 = 18;
-pub const IP_TRANSPARENT: u32 = 19;
-pub const IP_RECVRETOPTS: u32 = 7;
-pub const IP_ORIGDSTADDR: u32 = 20;
-pub const IP_RECVORIGDSTADDR: u32 = 20;
-pub const IP_MINTTL: u32 = 21;
-pub const IP_NODEFRAG: u32 = 22;
-pub const IP_CHECKSUM: u32 = 23;
-pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24;
-pub const IP_RECVFRAGSIZE: u32 = 25;
-pub const IP_RECVERR_RFC4884: u32 = 26;
-pub const IP_PMTUDISC_DONT: u32 = 0;
-pub const IP_PMTUDISC_WANT: u32 = 1;
-pub const IP_PMTUDISC_DO: u32 = 2;
-pub const IP_PMTUDISC_PROBE: u32 = 3;
-pub const IP_PMTUDISC_INTERFACE: u32 = 4;
-pub const IP_PMTUDISC_OMIT: u32 = 5;
-pub const IP_MULTICAST_IF: u32 = 32;
-pub const IP_MULTICAST_TTL: u32 = 33;
-pub const IP_MULTICAST_LOOP: u32 = 34;
-pub const IP_ADD_MEMBERSHIP: u32 = 35;
-pub const IP_DROP_MEMBERSHIP: u32 = 36;
-pub const IP_UNBLOCK_SOURCE: u32 = 37;
-pub const IP_BLOCK_SOURCE: u32 = 38;
-pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39;
-pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40;
-pub const IP_MSFILTER: u32 = 41;
-pub const MCAST_JOIN_GROUP: u32 = 42;
-pub const MCAST_BLOCK_SOURCE: u32 = 43;
-pub const MCAST_UNBLOCK_SOURCE: u32 = 44;
-pub const MCAST_LEAVE_GROUP: u32 = 45;
-pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46;
-pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47;
-pub const MCAST_MSFILTER: u32 = 48;
-pub const IP_MULTICAST_ALL: u32 = 49;
-pub const IP_UNICAST_IF: u32 = 50;
-pub const MCAST_EXCLUDE: u32 = 0;
-pub const MCAST_INCLUDE: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1;
-pub const __SOCK_SIZE__: u32 = 16;
-pub const IN_CLASSA_NET: u32 = 4278190080;
-pub const IN_CLASSA_NSHIFT: u32 = 24;
-pub const IN_CLASSA_HOST: u32 = 16777215;
-pub const IN_CLASSA_MAX: u32 = 128;
-pub const IN_CLASSB_NET: u32 = 4294901760;
-pub const IN_CLASSB_NSHIFT: u32 = 16;
-pub const IN_CLASSB_HOST: u32 = 65535;
-pub const IN_CLASSB_MAX: u32 = 65536;
-pub const IN_CLASSC_NET: u32 = 4294967040;
-pub const IN_CLASSC_NSHIFT: u32 = 8;
-pub const IN_CLASSC_HOST: u32 = 255;
-pub const IN_MULTICAST_NET: u32 = 3758096384;
-pub const IN_CLASSE_NET: u32 = 4294967295;
-pub const IN_CLASSE_NSHIFT: u32 = 0;
-pub const IN_LOOPBACKNET: u32 = 127;
-pub const INADDR_LOOPBACK: u32 = 2130706433;
-pub const INADDR_UNSPEC_GROUP: u32 = 3758096384;
-pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385;
-pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386;
-pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490;
-pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639;
-pub const __LITTLE_ENDIAN: u32 = 1234;
-pub const IN_ACCESS: u32 = 1;
-pub const IN_MODIFY: u32 = 2;
-pub const IN_ATTRIB: u32 = 4;
-pub const IN_CLOSE_WRITE: u32 = 8;
-pub const IN_CLOSE_NOWRITE: u32 = 16;
-pub const IN_OPEN: u32 = 32;
-pub const IN_MOVED_FROM: u32 = 64;
-pub const IN_MOVED_TO: u32 = 128;
-pub const IN_CREATE: u32 = 256;
-pub const IN_DELETE: u32 = 512;
-pub const IN_DELETE_SELF: u32 = 1024;
-pub const IN_MOVE_SELF: u32 = 2048;
-pub const IN_UNMOUNT: u32 = 8192;
-pub const IN_Q_OVERFLOW: u32 = 16384;
-pub const IN_IGNORED: u32 = 32768;
-pub const IN_CLOSE: u32 = 24;
-pub const IN_MOVE: u32 = 192;
-pub const IN_ONLYDIR: u32 = 16777216;
-pub const IN_DONT_FOLLOW: u32 = 33554432;
-pub const IN_EXCL_UNLINK: u32 = 67108864;
-pub const IN_MASK_CREATE: u32 = 268435456;
-pub const IN_MASK_ADD: u32 = 536870912;
-pub const IN_ISDIR: u32 = 1073741824;
-pub const IN_ONESHOT: u32 = 2147483648;
-pub const IN_ALL_EVENTS: u32 = 4095;
-pub const IN_CLOEXEC: u32 = 524288;
-pub const IN_NONBLOCK: u32 = 2048;
-pub const IPTOS_TOS_MASK: u32 = 30;
-pub const IPTOS_LOWDELAY: u32 = 16;
-pub const IPTOS_THROUGHPUT: u32 = 8;
-pub const IPTOS_RELIABILITY: u32 = 4;
-pub const IPTOS_MINCOST: u32 = 2;
-pub const IPTOS_PREC_MASK: u32 = 224;
-pub const IPTOS_PREC_NETCONTROL: u32 = 224;
-pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192;
-pub const IPTOS_PREC_CRITIC_ECP: u32 = 160;
-pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128;
-pub const IPTOS_PREC_FLASH: u32 = 96;
-pub const IPTOS_PREC_IMMEDIATE: u32 = 64;
-pub const IPTOS_PREC_PRIORITY: u32 = 32;
-pub const IPTOS_PREC_ROUTINE: u32 = 0;
-pub const IPOPT_COPY: u32 = 128;
-pub const IPOPT_CLASS_MASK: u32 = 96;
-pub const IPOPT_NUMBER_MASK: u32 = 31;
-pub const IPOPT_CONTROL: u32 = 0;
-pub const IPOPT_RESERVED1: u32 = 32;
-pub const IPOPT_MEASUREMENT: u32 = 64;
-pub const IPOPT_RESERVED2: u32 = 96;
-pub const IPOPT_END: u32 = 0;
-pub const IPOPT_NOOP: u32 = 1;
-pub const IPOPT_SEC: u32 = 130;
-pub const IPOPT_LSRR: u32 = 131;
-pub const IPOPT_TIMESTAMP: u32 = 68;
-pub const IPOPT_CIPSO: u32 = 134;
-pub const IPOPT_RR: u32 = 7;
-pub const IPOPT_SID: u32 = 136;
-pub const IPOPT_SSRR: u32 = 137;
-pub const IPOPT_RA: u32 = 148;
-pub const IPVERSION: u32 = 4;
-pub const MAXTTL: u32 = 255;
-pub const IPDEFTTL: u32 = 64;
-pub const IPOPT_OPTVAL: u32 = 0;
-pub const IPOPT_OLEN: u32 = 1;
-pub const IPOPT_OFFSET: u32 = 2;
-pub const IPOPT_MINOFF: u32 = 4;
-pub const MAX_IPOPTLEN: u32 = 40;
-pub const IPOPT_NOP: u32 = 1;
-pub const IPOPT_EOL: u32 = 0;
-pub const IPOPT_TS: u32 = 68;
-pub const IPOPT_TS_TSONLY: u32 = 0;
-pub const IPOPT_TS_TSANDADDR: u32 = 1;
-pub const IPOPT_TS_PRESPEC: u32 = 3;
-pub const IPV4_BEET_PHMAXLEN: u32 = 8;
-pub const IPV6_FL_A_GET: u32 = 0;
-pub const IPV6_FL_A_PUT: u32 = 1;
-pub const IPV6_FL_A_RENEW: u32 = 2;
-pub const IPV6_FL_F_CREATE: u32 = 1;
-pub const IPV6_FL_F_EXCL: u32 = 2;
-pub const IPV6_FL_F_REFLECT: u32 = 4;
-pub const IPV6_FL_F_REMOTE: u32 = 8;
-pub const IPV6_FL_S_NONE: u32 = 0;
-pub const IPV6_FL_S_EXCL: u32 = 1;
-pub const IPV6_FL_S_PROCESS: u32 = 2;
-pub const IPV6_FL_S_USER: u32 = 3;
-pub const IPV6_FL_S_ANY: u32 = 255;
-pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575;
-pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880;
-pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0;
-pub const IPV6_PRIORITY_FILLER: u32 = 256;
-pub const IPV6_PRIORITY_UNATTENDED: u32 = 512;
-pub const IPV6_PRIORITY_RESERVED1: u32 = 768;
-pub const IPV6_PRIORITY_BULK: u32 = 1024;
-pub const IPV6_PRIORITY_RESERVED2: u32 = 1280;
-pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536;
-pub const IPV6_PRIORITY_CONTROL: u32 = 1792;
-pub const IPV6_PRIORITY_8: u32 = 2048;
-pub const IPV6_PRIORITY_9: u32 = 2304;
-pub const IPV6_PRIORITY_10: u32 = 2560;
-pub const IPV6_PRIORITY_11: u32 = 2816;
-pub const IPV6_PRIORITY_12: u32 = 3072;
-pub const IPV6_PRIORITY_13: u32 = 3328;
-pub const IPV6_PRIORITY_14: u32 = 3584;
-pub const IPV6_PRIORITY_15: u32 = 3840;
-pub const IPPROTO_HOPOPTS: u32 = 0;
-pub const IPPROTO_ROUTING: u32 = 43;
-pub const IPPROTO_FRAGMENT: u32 = 44;
-pub const IPPROTO_ICMPV6: u32 = 58;
-pub const IPPROTO_NONE: u32 = 59;
-pub const IPPROTO_DSTOPTS: u32 = 60;
-pub const IPPROTO_MH: u32 = 135;
-pub const IPV6_TLV_PAD1: u32 = 0;
-pub const IPV6_TLV_PADN: u32 = 1;
-pub const IPV6_TLV_ROUTERALERT: u32 = 5;
-pub const IPV6_TLV_CALIPSO: u32 = 7;
-pub const IPV6_TLV_IOAM: u32 = 49;
-pub const IPV6_TLV_JUMBO: u32 = 194;
-pub const IPV6_TLV_HAO: u32 = 201;
-pub const IPV6_ADDRFORM: u32 = 1;
-pub const IPV6_2292PKTINFO: u32 = 2;
-pub const IPV6_2292HOPOPTS: u32 = 3;
-pub const IPV6_2292DSTOPTS: u32 = 4;
-pub const IPV6_2292RTHDR: u32 = 5;
-pub const IPV6_2292PKTOPTIONS: u32 = 6;
-pub const IPV6_CHECKSUM: u32 = 7;
-pub const IPV6_2292HOPLIMIT: u32 = 8;
-pub const IPV6_NEXTHOP: u32 = 9;
-pub const IPV6_AUTHHDR: u32 = 10;
-pub const IPV6_FLOWINFO: u32 = 11;
-pub const IPV6_UNICAST_HOPS: u32 = 16;
-pub const IPV6_MULTICAST_IF: u32 = 17;
-pub const IPV6_MULTICAST_HOPS: u32 = 18;
-pub const IPV6_MULTICAST_LOOP: u32 = 19;
-pub const IPV6_ADD_MEMBERSHIP: u32 = 20;
-pub const IPV6_DROP_MEMBERSHIP: u32 = 21;
-pub const IPV6_ROUTER_ALERT: u32 = 22;
-pub const IPV6_MTU_DISCOVER: u32 = 23;
-pub const IPV6_MTU: u32 = 24;
-pub const IPV6_RECVERR: u32 = 25;
-pub const IPV6_V6ONLY: u32 = 26;
-pub const IPV6_JOIN_ANYCAST: u32 = 27;
-pub const IPV6_LEAVE_ANYCAST: u32 = 28;
-pub const IPV6_MULTICAST_ALL: u32 = 29;
-pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30;
-pub const IPV6_RECVERR_RFC4884: u32 = 31;
-pub const IPV6_PMTUDISC_DONT: u32 = 0;
-pub const IPV6_PMTUDISC_WANT: u32 = 1;
-pub const IPV6_PMTUDISC_DO: u32 = 2;
-pub const IPV6_PMTUDISC_PROBE: u32 = 3;
-pub const IPV6_PMTUDISC_INTERFACE: u32 = 4;
-pub const IPV6_PMTUDISC_OMIT: u32 = 5;
-pub const IPV6_FLOWLABEL_MGR: u32 = 32;
-pub const IPV6_FLOWINFO_SEND: u32 = 33;
-pub const IPV6_IPSEC_POLICY: u32 = 34;
-pub const IPV6_XFRM_POLICY: u32 = 35;
-pub const IPV6_HDRINCL: u32 = 36;
-pub const IPV6_RECVPKTINFO: u32 = 49;
-pub const IPV6_PKTINFO: u32 = 50;
-pub const IPV6_RECVHOPLIMIT: u32 = 51;
-pub const IPV6_HOPLIMIT: u32 = 52;
-pub const IPV6_RECVHOPOPTS: u32 = 53;
-pub const IPV6_HOPOPTS: u32 = 54;
-pub const IPV6_RTHDRDSTOPTS: u32 = 55;
-pub const IPV6_RECVRTHDR: u32 = 56;
-pub const IPV6_RTHDR: u32 = 57;
-pub const IPV6_RECVDSTOPTS: u32 = 58;
-pub const IPV6_DSTOPTS: u32 = 59;
-pub const IPV6_RECVPATHMTU: u32 = 60;
-pub const IPV6_PATHMTU: u32 = 61;
-pub const IPV6_DONTFRAG: u32 = 62;
-pub const IPV6_RECVTCLASS: u32 = 66;
-pub const IPV6_TCLASS: u32 = 67;
-pub const IPV6_AUTOFLOWLABEL: u32 = 70;
-pub const IPV6_ADDR_PREFERENCES: u32 = 72;
-pub const IPV6_PREFER_SRC_TMP: u32 = 1;
-pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2;
-pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256;
-pub const IPV6_PREFER_SRC_COA: u32 = 4;
-pub const IPV6_PREFER_SRC_HOME: u32 = 1024;
-pub const IPV6_PREFER_SRC_CGA: u32 = 8;
-pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048;
-pub const IPV6_MINHOPCOUNT: u32 = 73;
-pub const IPV6_ORIGDSTADDR: u32 = 74;
-pub const IPV6_RECVORIGDSTADDR: u32 = 74;
-pub const IPV6_TRANSPARENT: u32 = 75;
-pub const IPV6_UNICAST_IF: u32 = 76;
-pub const IPV6_RECVFRAGSIZE: u32 = 77;
-pub const IPV6_FREEBIND: u32 = 78;
-pub const IPV6_MIN_MTU: u32 = 1280;
-pub const IPV6_SRCRT_STRICT: u32 = 1;
-pub const IPV6_SRCRT_TYPE_0: u32 = 0;
-pub const IPV6_SRCRT_TYPE_2: u32 = 2;
-pub const IPV6_SRCRT_TYPE_3: u32 = 3;
-pub const IPV6_SRCRT_TYPE_4: u32 = 4;
-pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0;
-pub const ADFS_SUPER_MAGIC: u32 = 44533;
-pub const AFFS_SUPER_MAGIC: u32 = 44543;
-pub const AFS_SUPER_MAGIC: u32 = 1397113167;
-pub const AUTOFS_SUPER_MAGIC: u32 = 391;
-pub const CEPH_SUPER_MAGIC: u32 = 12805120;
-pub const CODA_SUPER_MAGIC: u32 = 1937076805;
-pub const CRAMFS_MAGIC: u32 = 684539205;
-pub const CRAMFS_MAGIC_WEND: u32 = 1161678120;
-pub const DEBUGFS_MAGIC: u32 = 1684170528;
-pub const SECURITYFS_MAGIC: u32 = 1935894131;
-pub const SELINUX_MAGIC: u32 = 4185718668;
-pub const SMACK_MAGIC: u32 = 1128357203;
-pub const RAMFS_MAGIC: u32 = 2240043254;
-pub const TMPFS_MAGIC: u32 = 16914836;
-pub const HUGETLBFS_MAGIC: u32 = 2508478710;
-pub const SQUASHFS_MAGIC: u32 = 1936814952;
-pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791;
-pub const EFS_SUPER_MAGIC: u32 = 4278867;
-pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530;
-pub const EXT2_SUPER_MAGIC: u32 = 61267;
-pub const EXT3_SUPER_MAGIC: u32 = 61267;
-pub const XENFS_SUPER_MAGIC: u32 = 2881100148;
-pub const EXT4_SUPER_MAGIC: u32 = 61267;
-pub const BTRFS_SUPER_MAGIC: u32 = 2435016766;
-pub const NILFS_SUPER_MAGIC: u32 = 13364;
-pub const F2FS_SUPER_MAGIC: u32 = 4076150800;
-pub const HPFS_SUPER_MAGIC: u32 = 4187351113;
-pub const ISOFS_SUPER_MAGIC: u32 = 38496;
-pub const JFFS2_SUPER_MAGIC: u32 = 29366;
-pub const XFS_SUPER_MAGIC: u32 = 1481003842;
-pub const PSTOREFS_MAGIC: u32 = 1634035564;
-pub const EFIVARFS_MAGIC: u32 = 3730735588;
-pub const HOSTFS_SUPER_MAGIC: u32 = 12648430;
-pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128;
-pub const FUSE_SUPER_MAGIC: u32 = 1702057286;
-pub const MINIX_SUPER_MAGIC: u32 = 4991;
-pub const MINIX_SUPER_MAGIC2: u32 = 5007;
-pub const MINIX2_SUPER_MAGIC: u32 = 9320;
-pub const MINIX2_SUPER_MAGIC2: u32 = 9336;
-pub const MINIX3_SUPER_MAGIC: u32 = 19802;
-pub const MSDOS_SUPER_MAGIC: u32 = 19780;
-pub const EXFAT_SUPER_MAGIC: u32 = 538032816;
-pub const NCP_SUPER_MAGIC: u32 = 22092;
-pub const NFS_SUPER_MAGIC: u32 = 26985;
-pub const OCFS2_SUPER_MAGIC: u32 = 1952539503;
-pub const OPENPROM_SUPER_MAGIC: u32 = 40865;
-pub const QNX4_SUPER_MAGIC: u32 = 47;
-pub const QNX6_SUPER_MAGIC: u32 = 1746473250;
-pub const AFS_FS_MAGIC: u32 = 1799439955;
-pub const REISERFS_SUPER_MAGIC: u32 = 1382369651;
-pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0";
-pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0";
-pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0";
-pub const SMB_SUPER_MAGIC: u32 = 20859;
-pub const CIFS_SUPER_MAGIC: u32 = 4283649346;
-pub const SMB2_SUPER_MAGIC: u32 = 4266872130;
-pub const CGROUP_SUPER_MAGIC: u32 = 2613483;
-pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888;
-pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209;
-pub const STACK_END_MAGIC: u32 = 1470918301;
-pub const TRACEFS_MAGIC: u32 = 1953653091;
-pub const V9FS_MAGIC: u32 = 16914839;
-pub const BDEVFS_MAGIC: u32 = 1650746742;
-pub const DAXFS_MAGIC: u32 = 1684300152;
-pub const BINFMTFS_MAGIC: u32 = 1112100429;
-pub const DEVPTS_SUPER_MAGIC: u32 = 7377;
-pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352;
-pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762;
-pub const PIPEFS_MAGIC: u32 = 1346981957;
-pub const PROC_SUPER_MAGIC: u32 = 40864;
-pub const SOCKFS_MAGIC: u32 = 1397703499;
-pub const SYSFS_MAGIC: u32 = 1650812274;
-pub const USBDEVICE_SUPER_MAGIC: u32 = 40866;
-pub const MTD_INODE_FS_MAGIC: u32 = 288389204;
-pub const ANON_INODE_FS_MAGIC: u32 = 151263540;
-pub const BTRFS_TEST_MAGIC: u32 = 1936880249;
-pub const NSFS_MAGIC: u32 = 1853056627;
-pub const BPF_FS_MAGIC: u32 = 3405662737;
-pub const AAFS_MAGIC: u32 = 1513908720;
-pub const ZONEFS_MAGIC: u32 = 1515144787;
-pub const UDF_SUPER_MAGIC: u32 = 352400198;
-pub const DMA_BUF_MAGIC: u32 = 1145913666;
-pub const DEVMEM_MAGIC: u32 = 1162691661;
-pub const SECRETMEM_MAGIC: u32 = 1397048141;
-pub const PROT_READ: u32 = 1;
-pub const PROT_WRITE: u32 = 2;
-pub const PROT_EXEC: u32 = 4;
-pub const PROT_SEM: u32 = 8;
-pub const PROT_NONE: u32 = 0;
-pub const PROT_GROWSDOWN: u32 = 16777216;
-pub const PROT_GROWSUP: u32 = 33554432;
-pub const MAP_TYPE: u32 = 15;
-pub const MAP_FIXED: u32 = 16;
-pub const MAP_ANONYMOUS: u32 = 32;
-pub const MAP_POPULATE: u32 = 32768;
-pub const MAP_NONBLOCK: u32 = 65536;
-pub const MAP_STACK: u32 = 131072;
-pub const MAP_HUGETLB: u32 = 262144;
-pub const MAP_SYNC: u32 = 524288;
-pub const MAP_FIXED_NOREPLACE: u32 = 1048576;
-pub const MAP_UNINITIALIZED: u32 = 67108864;
-pub const MLOCK_ONFAULT: u32 = 1;
-pub const MS_ASYNC: u32 = 1;
-pub const MS_INVALIDATE: u32 = 2;
-pub const MS_SYNC: u32 = 4;
-pub const MADV_NORMAL: u32 = 0;
-pub const MADV_RANDOM: u32 = 1;
-pub const MADV_SEQUENTIAL: u32 = 2;
-pub const MADV_WILLNEED: u32 = 3;
-pub const MADV_DONTNEED: u32 = 4;
-pub const MADV_FREE: u32 = 8;
-pub const MADV_REMOVE: u32 = 9;
-pub const MADV_DONTFORK: u32 = 10;
-pub const MADV_DOFORK: u32 = 11;
-pub const MADV_HWPOISON: u32 = 100;
-pub const MADV_SOFT_OFFLINE: u32 = 101;
-pub const MADV_MERGEABLE: u32 = 12;
-pub const MADV_UNMERGEABLE: u32 = 13;
-pub const MADV_HUGEPAGE: u32 = 14;
-pub const MADV_NOHUGEPAGE: u32 = 15;
-pub const MADV_DONTDUMP: u32 = 16;
-pub const MADV_DODUMP: u32 = 17;
-pub const MADV_WIPEONFORK: u32 = 18;
-pub const MADV_KEEPONFORK: u32 = 19;
-pub const MADV_COLD: u32 = 20;
-pub const MADV_PAGEOUT: u32 = 21;
-pub const MADV_POPULATE_READ: u32 = 22;
-pub const MADV_POPULATE_WRITE: u32 = 23;
-pub const MADV_DONTNEED_LOCKED: u32 = 24;
-pub const MADV_COLLAPSE: u32 = 25;
-pub const MAP_FILE: u32 = 0;
-pub const PKEY_DISABLE_ACCESS: u32 = 1;
-pub const PKEY_DISABLE_WRITE: u32 = 2;
-pub const PKEY_ACCESS_MASK: u32 = 3;
-pub const MAP_GROWSDOWN: u32 = 256;
-pub const MAP_DENYWRITE: u32 = 2048;
-pub const MAP_EXECUTABLE: u32 = 4096;
-pub const MAP_LOCKED: u32 = 8192;
-pub const MAP_NORESERVE: u32 = 16384;
-pub const MCL_CURRENT: u32 = 1;
-pub const MCL_FUTURE: u32 = 2;
-pub const MCL_ONFAULT: u32 = 4;
-pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26;
-pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63;
-pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096;
-pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824;
-pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416;
-pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280;
-pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144;
-pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872;
-pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736;
-pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600;
-pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192;
-pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056;
-pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920;
-pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784;
-pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376;
-pub const MREMAP_MAYMOVE: u32 = 1;
-pub const MREMAP_FIXED: u32 = 2;
-pub const MREMAP_DONTUNMAP: u32 = 4;
-pub const OVERCOMMIT_GUESS: u32 = 0;
-pub const OVERCOMMIT_ALWAYS: u32 = 1;
-pub const OVERCOMMIT_NEVER: u32 = 2;
-pub const MAP_SHARED: u32 = 1;
-pub const MAP_PRIVATE: u32 = 2;
-pub const MAP_SHARED_VALIDATE: u32 = 3;
-pub const MAP_HUGE_SHIFT: u32 = 26;
-pub const MAP_HUGE_MASK: u32 = 63;
-pub const MAP_HUGE_16KB: u32 = 939524096;
-pub const MAP_HUGE_64KB: u32 = 1073741824;
-pub const MAP_HUGE_512KB: u32 = 1275068416;
-pub const MAP_HUGE_1MB: u32 = 1342177280;
-pub const MAP_HUGE_2MB: u32 = 1409286144;
-pub const MAP_HUGE_8MB: u32 = 1543503872;
-pub const MAP_HUGE_16MB: u32 = 1610612736;
-pub const MAP_HUGE_32MB: u32 = 1677721600;
-pub const MAP_HUGE_256MB: u32 = 1879048192;
-pub const MAP_HUGE_512MB: u32 = 1946157056;
-pub const MAP_HUGE_1GB: u32 = 2013265920;
-pub const MAP_HUGE_2GB: u32 = 2080374784;
-pub const MAP_HUGE_16GB: u32 = 2281701376;
-pub const SIOCGSTAMP_OLD: u32 = 35078;
-pub const SIOCGSTAMPNS_OLD: u32 = 35079;
-pub const SOL_SOCKET: u32 = 1;
-pub const SO_DEBUG: u32 = 1;
-pub const SO_REUSEADDR: u32 = 2;
-pub const SO_TYPE: u32 = 3;
-pub const SO_ERROR: u32 = 4;
-pub const SO_DONTROUTE: u32 = 5;
-pub const SO_BROADCAST: u32 = 6;
-pub const SO_SNDBUF: u32 = 7;
-pub const SO_RCVBUF: u32 = 8;
-pub const SO_SNDBUFFORCE: u32 = 32;
-pub const SO_RCVBUFFORCE: u32 = 33;
-pub const SO_KEEPALIVE: u32 = 9;
-pub const SO_OOBINLINE: u32 = 10;
-pub const SO_NO_CHECK: u32 = 11;
-pub const SO_PRIORITY: u32 = 12;
-pub const SO_LINGER: u32 = 13;
-pub const SO_BSDCOMPAT: u32 = 14;
-pub const SO_REUSEPORT: u32 = 15;
-pub const SO_PASSCRED: u32 = 16;
-pub const SO_PEERCRED: u32 = 17;
-pub const SO_RCVLOWAT: u32 = 18;
-pub const SO_SNDLOWAT: u32 = 19;
-pub const SO_RCVTIMEO_OLD: u32 = 20;
-pub const SO_SNDTIMEO_OLD: u32 = 21;
-pub const SO_SECURITY_AUTHENTICATION: u32 = 22;
-pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23;
-pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24;
-pub const SO_BINDTODEVICE: u32 = 25;
-pub const SO_ATTACH_FILTER: u32 = 26;
-pub const SO_DETACH_FILTER: u32 = 27;
-pub const SO_GET_FILTER: u32 = 26;
-pub const SO_PEERNAME: u32 = 28;
-pub const SO_ACCEPTCONN: u32 = 30;
-pub const SO_PEERSEC: u32 = 31;
-pub const SO_PASSSEC: u32 = 34;
-pub const SO_MARK: u32 = 36;
-pub const SO_PROTOCOL: u32 = 38;
-pub const SO_DOMAIN: u32 = 39;
-pub const SO_RXQ_OVFL: u32 = 40;
-pub const SO_WIFI_STATUS: u32 = 41;
-pub const SCM_WIFI_STATUS: u32 = 41;
-pub const SO_PEEK_OFF: u32 = 42;
-pub const SO_NOFCS: u32 = 43;
-pub const SO_LOCK_FILTER: u32 = 44;
-pub const SO_SELECT_ERR_QUEUE: u32 = 45;
-pub const SO_BUSY_POLL: u32 = 46;
-pub const SO_MAX_PACING_RATE: u32 = 47;
-pub const SO_BPF_EXTENSIONS: u32 = 48;
-pub const SO_INCOMING_CPU: u32 = 49;
-pub const SO_ATTACH_BPF: u32 = 50;
-pub const SO_DETACH_BPF: u32 = 27;
-pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51;
-pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52;
-pub const SO_CNX_ADVICE: u32 = 53;
-pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54;
-pub const SO_MEMINFO: u32 = 55;
-pub const SO_INCOMING_NAPI_ID: u32 = 56;
-pub const SO_COOKIE: u32 = 57;
-pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58;
-pub const SO_PEERGROUPS: u32 = 59;
-pub const SO_ZEROCOPY: u32 = 60;
-pub const SO_TXTIME: u32 = 61;
-pub const SCM_TXTIME: u32 = 61;
-pub const SO_BINDTOIFINDEX: u32 = 62;
-pub const SO_TIMESTAMP_OLD: u32 = 29;
-pub const SO_TIMESTAMPNS_OLD: u32 = 35;
-pub const SO_TIMESTAMPING_OLD: u32 = 37;
-pub const SO_TIMESTAMP_NEW: u32 = 63;
-pub const SO_TIMESTAMPNS_NEW: u32 = 64;
-pub const SO_TIMESTAMPING_NEW: u32 = 65;
-pub const SO_RCVTIMEO_NEW: u32 = 66;
-pub const SO_SNDTIMEO_NEW: u32 = 67;
-pub const SO_DETACH_REUSEPORT_BPF: u32 = 68;
-pub const SO_PREFER_BUSY_POLL: u32 = 69;
-pub const SO_BUSY_POLL_BUDGET: u32 = 70;
-pub const SO_NETNS_COOKIE: u32 = 71;
-pub const SO_BUF_LOCK: u32 = 72;
-pub const SO_RESERVE_MEM: u32 = 73;
-pub const SO_TXREHASH: u32 = 74;
-pub const SO_RCVMARK: u32 = 75;
-pub const SO_TIMESTAMP: u32 = 29;
-pub const SO_TIMESTAMPNS: u32 = 35;
-pub const SO_TIMESTAMPING: u32 = 37;
-pub const SO_RCVTIMEO: u32 = 20;
-pub const SO_SNDTIMEO: u32 = 21;
-pub const SCM_TIMESTAMP: u32 = 29;
-pub const SCM_TIMESTAMPNS: u32 = 35;
-pub const SCM_TIMESTAMPING: u32 = 37;
-pub const SYS_SOCKET: u32 = 1;
-pub const SYS_BIND: u32 = 2;
-pub const SYS_CONNECT: u32 = 3;
-pub const SYS_LISTEN: u32 = 4;
-pub const SYS_ACCEPT: u32 = 5;
-pub const SYS_GETSOCKNAME: u32 = 6;
-pub const SYS_GETPEERNAME: u32 = 7;
-pub const SYS_SOCKETPAIR: u32 = 8;
-pub const SYS_SEND: u32 = 9;
-pub const SYS_RECV: u32 = 10;
-pub const SYS_SENDTO: u32 = 11;
-pub const SYS_RECVFROM: u32 = 12;
-pub const SYS_SHUTDOWN: u32 = 13;
-pub const SYS_SETSOCKOPT: u32 = 14;
-pub const SYS_GETSOCKOPT: u32 = 15;
-pub const SYS_SENDMSG: u32 = 16;
-pub const SYS_RECVMSG: u32 = 17;
-pub const SYS_ACCEPT4: u32 = 18;
-pub const SYS_RECVMMSG: u32 = 19;
-pub const SYS_SENDMMSG: u32 = 20;
-pub const __SO_ACCEPTCON: u32 = 65536;
-pub const POLLIN: u32 = 1;
-pub const POLLPRI: u32 = 2;
-pub const POLLOUT: u32 = 4;
-pub const POLLERR: u32 = 8;
-pub const POLLHUP: u32 = 16;
-pub const POLLNVAL: u32 = 32;
-pub const POLLRDNORM: u32 = 64;
-pub const POLLRDBAND: u32 = 128;
-pub const POLLWRNORM: u32 = 256;
-pub const POLLWRBAND: u32 = 512;
-pub const POLLMSG: u32 = 1024;
-pub const POLLREMOVE: u32 = 4096;
-pub const POLLRDHUP: u32 = 8192;
-pub const PR_SET_PDEATHSIG: u32 = 1;
-pub const PR_GET_PDEATHSIG: u32 = 2;
-pub const PR_GET_DUMPABLE: u32 = 3;
-pub const PR_SET_DUMPABLE: u32 = 4;
-pub const PR_GET_UNALIGN: u32 = 5;
-pub const PR_SET_UNALIGN: u32 = 6;
-pub const PR_UNALIGN_NOPRINT: u32 = 1;
-pub const PR_UNALIGN_SIGBUS: u32 = 2;
-pub const PR_GET_KEEPCAPS: u32 = 7;
-pub const PR_SET_KEEPCAPS: u32 = 8;
-pub const PR_GET_FPEMU: u32 = 9;
-pub const PR_SET_FPEMU: u32 = 10;
-pub const PR_FPEMU_NOPRINT: u32 = 1;
-pub const PR_FPEMU_SIGFPE: u32 = 2;
-pub const PR_GET_FPEXC: u32 = 11;
-pub const PR_SET_FPEXC: u32 = 12;
-pub const PR_FP_EXC_SW_ENABLE: u32 = 128;
-pub const PR_FP_EXC_DIV: u32 = 65536;
-pub const PR_FP_EXC_OVF: u32 = 131072;
-pub const PR_FP_EXC_UND: u32 = 262144;
-pub const PR_FP_EXC_RES: u32 = 524288;
-pub const PR_FP_EXC_INV: u32 = 1048576;
-pub const PR_FP_EXC_DISABLED: u32 = 0;
-pub const PR_FP_EXC_NONRECOV: u32 = 1;
-pub const PR_FP_EXC_ASYNC: u32 = 2;
-pub const PR_FP_EXC_PRECISE: u32 = 3;
-pub const PR_GET_TIMING: u32 = 13;
-pub const PR_SET_TIMING: u32 = 14;
-pub const PR_TIMING_STATISTICAL: u32 = 0;
-pub const PR_TIMING_TIMESTAMP: u32 = 1;
-pub const PR_SET_NAME: u32 = 15;
-pub const PR_GET_NAME: u32 = 16;
-pub const PR_GET_ENDIAN: u32 = 19;
-pub const PR_SET_ENDIAN: u32 = 20;
-pub const PR_ENDIAN_BIG: u32 = 0;
-pub const PR_ENDIAN_LITTLE: u32 = 1;
-pub const PR_ENDIAN_PPC_LITTLE: u32 = 2;
-pub const PR_GET_SECCOMP: u32 = 21;
-pub const PR_SET_SECCOMP: u32 = 22;
-pub const PR_CAPBSET_READ: u32 = 23;
-pub const PR_CAPBSET_DROP: u32 = 24;
-pub const PR_GET_TSC: u32 = 25;
-pub const PR_SET_TSC: u32 = 26;
-pub const PR_TSC_ENABLE: u32 = 1;
-pub const PR_TSC_SIGSEGV: u32 = 2;
-pub const PR_GET_SECUREBITS: u32 = 27;
-pub const PR_SET_SECUREBITS: u32 = 28;
-pub const PR_SET_TIMERSLACK: u32 = 29;
-pub const PR_GET_TIMERSLACK: u32 = 30;
-pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31;
-pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32;
-pub const PR_MCE_KILL: u32 = 33;
-pub const PR_MCE_KILL_CLEAR: u32 = 0;
-pub const PR_MCE_KILL_SET: u32 = 1;
-pub const PR_MCE_KILL_LATE: u32 = 0;
-pub const PR_MCE_KILL_EARLY: u32 = 1;
-pub const PR_MCE_KILL_DEFAULT: u32 = 2;
-pub const PR_MCE_KILL_GET: u32 = 34;
-pub const PR_SET_MM: u32 = 35;
-pub const PR_SET_MM_START_CODE: u32 = 1;
-pub const PR_SET_MM_END_CODE: u32 = 2;
-pub const PR_SET_MM_START_DATA: u32 = 3;
-pub const PR_SET_MM_END_DATA: u32 = 4;
-pub const PR_SET_MM_START_STACK: u32 = 5;
-pub const PR_SET_MM_START_BRK: u32 = 6;
-pub const PR_SET_MM_BRK: u32 = 7;
-pub const PR_SET_MM_ARG_START: u32 = 8;
-pub const PR_SET_MM_ARG_END: u32 = 9;
-pub const PR_SET_MM_ENV_START: u32 = 10;
-pub const PR_SET_MM_ENV_END: u32 = 11;
-pub const PR_SET_MM_AUXV: u32 = 12;
-pub const PR_SET_MM_EXE_FILE: u32 = 13;
-pub const PR_SET_MM_MAP: u32 = 14;
-pub const PR_SET_MM_MAP_SIZE: u32 = 15;
-pub const PR_SET_PTRACER: u32 = 1499557217;
-pub const PR_SET_CHILD_SUBREAPER: u32 = 36;
-pub const PR_GET_CHILD_SUBREAPER: u32 = 37;
-pub const PR_SET_NO_NEW_PRIVS: u32 = 38;
-pub const PR_GET_NO_NEW_PRIVS: u32 = 39;
-pub const PR_GET_TID_ADDRESS: u32 = 40;
-pub const PR_SET_THP_DISABLE: u32 = 41;
-pub const PR_GET_THP_DISABLE: u32 = 42;
-pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43;
-pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44;
-pub const PR_SET_FP_MODE: u32 = 45;
-pub const PR_GET_FP_MODE: u32 = 46;
-pub const PR_FP_MODE_FR: u32 = 1;
-pub const PR_FP_MODE_FRE: u32 = 2;
-pub const PR_CAP_AMBIENT: u32 = 47;
-pub const PR_CAP_AMBIENT_IS_SET: u32 = 1;
-pub const PR_CAP_AMBIENT_RAISE: u32 = 2;
-pub const PR_CAP_AMBIENT_LOWER: u32 = 3;
-pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4;
-pub const PR_SVE_SET_VL: u32 = 50;
-pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SVE_GET_VL: u32 = 51;
-pub const PR_SVE_VL_LEN_MASK: u32 = 65535;
-pub const PR_SVE_VL_INHERIT: u32 = 131072;
-pub const PR_GET_SPECULATION_CTRL: u32 = 52;
-pub const PR_SET_SPECULATION_CTRL: u32 = 53;
-pub const PR_SPEC_STORE_BYPASS: u32 = 0;
-pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1;
-pub const PR_SPEC_L1D_FLUSH: u32 = 2;
-pub const PR_SPEC_NOT_AFFECTED: u32 = 0;
-pub const PR_SPEC_PRCTL: u32 = 1;
-pub const PR_SPEC_ENABLE: u32 = 2;
-pub const PR_SPEC_DISABLE: u32 = 4;
-pub const PR_SPEC_FORCE_DISABLE: u32 = 8;
-pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16;
-pub const PR_PAC_RESET_KEYS: u32 = 54;
-pub const PR_PAC_APIAKEY: u32 = 1;
-pub const PR_PAC_APIBKEY: u32 = 2;
-pub const PR_PAC_APDAKEY: u32 = 4;
-pub const PR_PAC_APDBKEY: u32 = 8;
-pub const PR_PAC_APGAKEY: u32 = 16;
-pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55;
-pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56;
-pub const PR_TAGGED_ADDR_ENABLE: u32 = 1;
-pub const PR_MTE_TCF_NONE: u32 = 0;
-pub const PR_MTE_TCF_SYNC: u32 = 2;
-pub const PR_MTE_TCF_ASYNC: u32 = 4;
-pub const PR_MTE_TCF_MASK: u32 = 6;
-pub const PR_MTE_TAG_SHIFT: u32 = 3;
-pub const PR_MTE_TAG_MASK: u32 = 524280;
-pub const PR_MTE_TCF_SHIFT: u32 = 1;
-pub const PR_SET_IO_FLUSHER: u32 = 57;
-pub const PR_GET_IO_FLUSHER: u32 = 58;
-pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59;
-pub const PR_SYS_DISPATCH_OFF: u32 = 0;
-pub const PR_SYS_DISPATCH_ON: u32 = 1;
-pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0;
-pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1;
-pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60;
-pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61;
-pub const PR_SCHED_CORE: u32 = 62;
-pub const PR_SCHED_CORE_GET: u32 = 0;
-pub const PR_SCHED_CORE_CREATE: u32 = 1;
-pub const PR_SCHED_CORE_SHARE_TO: u32 = 2;
-pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3;
-pub const PR_SCHED_CORE_MAX: u32 = 4;
-pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0;
-pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1;
-pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2;
-pub const PR_SME_SET_VL: u32 = 63;
-pub const PR_SME_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SME_GET_VL: u32 = 64;
-pub const PR_SME_VL_LEN_MASK: u32 = 65535;
-pub const PR_SME_VL_INHERIT: u32 = 131072;
-pub const PR_SET_VMA: u32 = 1398164801;
-pub const PR_SET_VMA_ANON_NAME: u32 = 0;
-pub const GRND_NONBLOCK: u32 = 1;
-pub const GRND_RANDOM: u32 = 2;
-pub const GRND_INSECURE: u32 = 4;
-pub const ITIMER_REAL: u32 = 0;
-pub const ITIMER_VIRTUAL: u32 = 1;
-pub const ITIMER_PROF: u32 = 2;
-pub const CLOCK_REALTIME: u32 = 0;
-pub const CLOCK_MONOTONIC: u32 = 1;
-pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2;
-pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3;
-pub const CLOCK_MONOTONIC_RAW: u32 = 4;
-pub const CLOCK_REALTIME_COARSE: u32 = 5;
-pub const CLOCK_MONOTONIC_COARSE: u32 = 6;
-pub const CLOCK_BOOTTIME: u32 = 7;
-pub const CLOCK_REALTIME_ALARM: u32 = 8;
-pub const CLOCK_BOOTTIME_ALARM: u32 = 9;
-pub const CLOCK_SGI_CYCLE: u32 = 10;
-pub const CLOCK_TAI: u32 = 11;
-pub const MAX_CLOCKS: u32 = 16;
-pub const CLOCKS_MASK: u32 = 1;
-pub const CLOCKS_MONO: u32 = 1;
-pub const TIMER_ABSTIME: u32 = 1;
-pub const RUSAGE_SELF: u32 = 0;
-pub const RUSAGE_CHILDREN: i32 = -1;
-pub const RUSAGE_BOTH: i32 = -2;
-pub const RUSAGE_THREAD: u32 = 1;
-pub const RLIM64_INFINITY: i32 = -1;
-pub const PRIO_MIN: i32 = -20;
-pub const PRIO_MAX: u32 = 20;
-pub const PRIO_PROCESS: u32 = 0;
-pub const PRIO_PGRP: u32 = 1;
-pub const PRIO_USER: u32 = 2;
-pub const _STK_LIM: u32 = 8388608;
-pub const MLOCK_LIMIT: u32 = 8388608;
-pub const RLIMIT_CPU: u32 = 0;
-pub const RLIMIT_FSIZE: u32 = 1;
-pub const RLIMIT_DATA: u32 = 2;
-pub const RLIMIT_STACK: u32 = 3;
-pub const RLIMIT_CORE: u32 = 4;
-pub const RLIMIT_RSS: u32 = 5;
-pub const RLIMIT_NPROC: u32 = 6;
-pub const RLIMIT_NOFILE: u32 = 7;
-pub const RLIMIT_MEMLOCK: u32 = 8;
-pub const RLIMIT_AS: u32 = 9;
-pub const RLIMIT_LOCKS: u32 = 10;
-pub const RLIMIT_SIGPENDING: u32 = 11;
-pub const RLIMIT_MSGQUEUE: u32 = 12;
-pub const RLIMIT_NICE: u32 = 13;
-pub const RLIMIT_RTPRIO: u32 = 14;
-pub const RLIMIT_RTTIME: u32 = 15;
-pub const RLIM_NLIMITS: u32 = 16;
-pub const RLIM_INFINITY: i32 = -1;
-pub const CSIGNAL: u32 = 255;
-pub const CLONE_VM: u32 = 256;
-pub const CLONE_FS: u32 = 512;
-pub const CLONE_FILES: u32 = 1024;
-pub const CLONE_SIGHAND: u32 = 2048;
-pub const CLONE_PIDFD: u32 = 4096;
-pub const CLONE_PTRACE: u32 = 8192;
-pub const CLONE_VFORK: u32 = 16384;
-pub const CLONE_PARENT: u32 = 32768;
-pub const CLONE_THREAD: u32 = 65536;
-pub const CLONE_NEWNS: u32 = 131072;
-pub const CLONE_SYSVSEM: u32 = 262144;
-pub const CLONE_SETTLS: u32 = 524288;
-pub const CLONE_PARENT_SETTID: u32 = 1048576;
-pub const CLONE_CHILD_CLEARTID: u32 = 2097152;
-pub const CLONE_DETACHED: u32 = 4194304;
-pub const CLONE_UNTRACED: u32 = 8388608;
-pub const CLONE_CHILD_SETTID: u32 = 16777216;
-pub const CLONE_NEWCGROUP: u32 = 33554432;
-pub const CLONE_NEWUTS: u32 = 67108864;
-pub const CLONE_NEWIPC: u32 = 134217728;
-pub const CLONE_NEWUSER: u32 = 268435456;
-pub const CLONE_NEWPID: u32 = 536870912;
-pub const CLONE_NEWNET: u32 = 1073741824;
-pub const CLONE_IO: u32 = 2147483648;
-pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296;
-pub const CLONE_INTO_CGROUP: u64 = 8589934592;
-pub const CLONE_NEWTIME: u32 = 128;
-pub const CLONE_ARGS_SIZE_VER0: u32 = 64;
-pub const CLONE_ARGS_SIZE_VER1: u32 = 80;
-pub const CLONE_ARGS_SIZE_VER2: u32 = 88;
-pub const SCHED_NORMAL: u32 = 0;
-pub const SCHED_FIFO: u32 = 1;
-pub const SCHED_RR: u32 = 2;
-pub const SCHED_BATCH: u32 = 3;
-pub const SCHED_IDLE: u32 = 5;
-pub const SCHED_DEADLINE: u32 = 6;
-pub const SCHED_RESET_ON_FORK: u32 = 1073741824;
-pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1;
-pub const SCHED_FLAG_RECLAIM: u32 = 2;
-pub const SCHED_FLAG_DL_OVERRUN: u32 = 4;
-pub const SCHED_FLAG_KEEP_POLICY: u32 = 8;
-pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16;
-pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32;
-pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64;
-pub const SCHED_FLAG_KEEP_ALL: u32 = 24;
-pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96;
-pub const SCHED_FLAG_ALL: u32 = 127;
-pub const MINSIGSTKSZ: u32 = 4096;
-pub const SIGSTKSZ: u32 = 16384;
-pub const _NSIG: u32 = 64;
-pub const SIGHUP: u32 = 1;
-pub const SIGINT: u32 = 2;
-pub const SIGQUIT: u32 = 3;
-pub const SIGILL: u32 = 4;
-pub const SIGTRAP: u32 = 5;
-pub const SIGABRT: u32 = 6;
-pub const SIGIOT: u32 = 6;
-pub const SIGBUS: u32 = 7;
-pub const SIGFPE: u32 = 8;
-pub const SIGKILL: u32 = 9;
-pub const SIGUSR1: u32 = 10;
-pub const SIGSEGV: u32 = 11;
-pub const SIGUSR2: u32 = 12;
-pub const SIGPIPE: u32 = 13;
-pub const SIGALRM: u32 = 14;
-pub const SIGTERM: u32 = 15;
-pub const SIGSTKFLT: u32 = 16;
-pub const SIGCHLD: u32 = 17;
-pub const SIGCONT: u32 = 18;
-pub const SIGSTOP: u32 = 19;
-pub const SIGTSTP: u32 = 20;
-pub const SIGTTIN: u32 = 21;
-pub const SIGTTOU: u32 = 22;
-pub const SIGURG: u32 = 23;
-pub const SIGXCPU: u32 = 24;
-pub const SIGXFSZ: u32 = 25;
-pub const SIGVTALRM: u32 = 26;
-pub const SIGPROF: u32 = 27;
-pub const SIGWINCH: u32 = 28;
-pub const SIGIO: u32 = 29;
-pub const SIGPOLL: u32 = 29;
-pub const SIGPWR: u32 = 30;
-pub const SIGSYS: u32 = 31;
-pub const SIGUNUSED: u32 = 31;
-pub const SIGRTMIN: u32 = 32;
-pub const SIGRTMAX: u32 = 64;
-pub const SA_NOCLDSTOP: u32 = 1;
-pub const SA_NOCLDWAIT: u32 = 2;
-pub const SA_SIGINFO: u32 = 4;
-pub const SA_UNSUPPORTED: u32 = 1024;
-pub const SA_EXPOSE_TAGBITS: u32 = 2048;
-pub const SA_ONSTACK: u32 = 134217728;
-pub const SA_RESTART: u32 = 268435456;
-pub const SA_NODEFER: u32 = 1073741824;
-pub const SA_RESETHAND: u32 = 2147483648;
-pub const SA_NOMASK: u32 = 1073741824;
-pub const SA_ONESHOT: u32 = 2147483648;
-pub const SIG_BLOCK: u32 = 0;
-pub const SIG_UNBLOCK: u32 = 1;
-pub const SIG_SETMASK: u32 = 2;
-pub const SI_MAX_SIZE: u32 = 128;
-pub const SI_USER: u32 = 0;
-pub const SI_KERNEL: u32 = 128;
-pub const SI_QUEUE: i32 = -1;
-pub const SI_TIMER: i32 = -2;
-pub const SI_MESGQ: i32 = -3;
-pub const SI_ASYNCIO: i32 = -4;
-pub const SI_SIGIO: i32 = -5;
-pub const SI_TKILL: i32 = -6;
-pub const SI_DETHREAD: i32 = -7;
-pub const SI_ASYNCNL: i32 = -60;
-pub const ILL_ILLOPC: u32 = 1;
-pub const ILL_ILLOPN: u32 = 2;
-pub const ILL_ILLADR: u32 = 3;
-pub const ILL_ILLTRP: u32 = 4;
-pub const ILL_PRVOPC: u32 = 5;
-pub const ILL_PRVREG: u32 = 6;
-pub const ILL_COPROC: u32 = 7;
-pub const ILL_BADSTK: u32 = 8;
-pub const ILL_BADIADDR: u32 = 9;
-pub const __ILL_BREAK: u32 = 10;
-pub const __ILL_BNDMOD: u32 = 11;
-pub const NSIGILL: u32 = 11;
-pub const FPE_INTDIV: u32 = 1;
-pub const FPE_INTOVF: u32 = 2;
-pub const FPE_FLTDIV: u32 = 3;
-pub const FPE_FLTOVF: u32 = 4;
-pub const FPE_FLTUND: u32 = 5;
-pub const FPE_FLTRES: u32 = 6;
-pub const FPE_FLTINV: u32 = 7;
-pub const FPE_FLTSUB: u32 = 8;
-pub const __FPE_DECOVF: u32 = 9;
-pub const __FPE_DECDIV: u32 = 10;
-pub const __FPE_DECERR: u32 = 11;
-pub const __FPE_INVASC: u32 = 12;
-pub const __FPE_INVDEC: u32 = 13;
-pub const FPE_FLTUNK: u32 = 14;
-pub const FPE_CONDTRAP: u32 = 15;
-pub const NSIGFPE: u32 = 15;
-pub const SEGV_MAPERR: u32 = 1;
-pub const SEGV_ACCERR: u32 = 2;
-pub const SEGV_BNDERR: u32 = 3;
-pub const SEGV_PKUERR: u32 = 4;
-pub const SEGV_ACCADI: u32 = 5;
-pub const SEGV_ADIDERR: u32 = 6;
-pub const SEGV_ADIPERR: u32 = 7;
-pub const SEGV_MTEAERR: u32 = 8;
-pub const SEGV_MTESERR: u32 = 9;
-pub const NSIGSEGV: u32 = 9;
-pub const BUS_ADRALN: u32 = 1;
-pub const BUS_ADRERR: u32 = 2;
-pub const BUS_OBJERR: u32 = 3;
-pub const BUS_MCEERR_AR: u32 = 4;
-pub const BUS_MCEERR_AO: u32 = 5;
-pub const NSIGBUS: u32 = 5;
-pub const TRAP_BRKPT: u32 = 1;
-pub const TRAP_TRACE: u32 = 2;
-pub const TRAP_BRANCH: u32 = 3;
-pub const TRAP_HWBKPT: u32 = 4;
-pub const TRAP_UNK: u32 = 5;
-pub const TRAP_PERF: u32 = 6;
-pub const NSIGTRAP: u32 = 6;
-pub const TRAP_PERF_FLAG_ASYNC: u32 = 1;
-pub const CLD_EXITED: u32 = 1;
-pub const CLD_KILLED: u32 = 2;
-pub const CLD_DUMPED: u32 = 3;
-pub const CLD_TRAPPED: u32 = 4;
-pub const CLD_STOPPED: u32 = 5;
-pub const CLD_CONTINUED: u32 = 6;
-pub const NSIGCHLD: u32 = 6;
-pub const POLL_IN: u32 = 1;
-pub const POLL_OUT: u32 = 2;
-pub const POLL_MSG: u32 = 3;
-pub const POLL_ERR: u32 = 4;
-pub const POLL_PRI: u32 = 5;
-pub const POLL_HUP: u32 = 6;
-pub const NSIGPOLL: u32 = 6;
-pub const SYS_SECCOMP: u32 = 1;
-pub const SYS_USER_DISPATCH: u32 = 2;
-pub const NSIGSYS: u32 = 2;
-pub const EMT_TAGOVF: u32 = 1;
-pub const NSIGEMT: u32 = 1;
-pub const SIGEV_SIGNAL: u32 = 0;
-pub const SIGEV_NONE: u32 = 1;
-pub const SIGEV_THREAD: u32 = 2;
-pub const SIGEV_THREAD_ID: u32 = 4;
-pub const SIGEV_MAX_SIZE: u32 = 64;
-pub const SS_ONSTACK: u32 = 1;
-pub const SS_DISABLE: u32 = 2;
-pub const SS_AUTODISARM: u32 = 2147483648;
-pub const SS_FLAG_BITS: u32 = 2147483648;
-pub const S_IFMT: u32 = 61440;
-pub const S_IFSOCK: u32 = 49152;
-pub const S_IFLNK: u32 = 40960;
-pub const S_IFREG: u32 = 32768;
-pub const S_IFBLK: u32 = 24576;
-pub const S_IFDIR: u32 = 16384;
-pub const S_IFCHR: u32 = 8192;
-pub const S_IFIFO: u32 = 4096;
-pub const S_ISUID: u32 = 2048;
-pub const S_ISGID: u32 = 1024;
-pub const S_ISVTX: u32 = 512;
-pub const S_IRWXU: u32 = 448;
-pub const S_IRUSR: u32 = 256;
-pub const S_IWUSR: u32 = 128;
-pub const S_IXUSR: u32 = 64;
-pub const S_IRWXG: u32 = 56;
-pub const S_IRGRP: u32 = 32;
-pub const S_IWGRP: u32 = 16;
-pub const S_IXGRP: u32 = 8;
-pub const S_IRWXO: u32 = 7;
-pub const S_IROTH: u32 = 4;
-pub const S_IWOTH: u32 = 2;
-pub const S_IXOTH: u32 = 1;
-pub const STATX_TYPE: u32 = 1;
-pub const STATX_MODE: u32 = 2;
-pub const STATX_NLINK: u32 = 4;
-pub const STATX_UID: u32 = 8;
-pub const STATX_GID: u32 = 16;
-pub const STATX_ATIME: u32 = 32;
-pub const STATX_MTIME: u32 = 64;
-pub const STATX_CTIME: u32 = 128;
-pub const STATX_INO: u32 = 256;
-pub const STATX_SIZE: u32 = 512;
-pub const STATX_BLOCKS: u32 = 1024;
-pub const STATX_BASIC_STATS: u32 = 2047;
-pub const STATX_BTIME: u32 = 2048;
-pub const STATX_MNT_ID: u32 = 4096;
-pub const STATX_DIOALIGN: u32 = 8192;
-pub const STATX__RESERVED: u32 = 2147483648;
-pub const STATX_ALL: u32 = 4095;
-pub const STATX_ATTR_COMPRESSED: u32 = 4;
-pub const STATX_ATTR_IMMUTABLE: u32 = 16;
-pub const STATX_ATTR_APPEND: u32 = 32;
-pub const STATX_ATTR_NODUMP: u32 = 64;
-pub const STATX_ATTR_ENCRYPTED: u32 = 2048;
-pub const STATX_ATTR_AUTOMOUNT: u32 = 4096;
-pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192;
-pub const STATX_ATTR_VERITY: u32 = 1048576;
-pub const STATX_ATTR_DAX: u32 = 2097152;
-pub const SI_LOAD_SHIFT: u32 = 16;
-pub const TCP_MSS_DEFAULT: u32 = 536;
-pub const TCP_MSS_DESIRED: u32 = 1220;
-pub const TCP_NODELAY: u32 = 1;
-pub const TCP_MAXSEG: u32 = 2;
-pub const TCP_CORK: u32 = 3;
-pub const TCP_KEEPIDLE: u32 = 4;
-pub const TCP_KEEPINTVL: u32 = 5;
-pub const TCP_KEEPCNT: u32 = 6;
-pub const TCP_SYNCNT: u32 = 7;
-pub const TCP_LINGER2: u32 = 8;
-pub const TCP_DEFER_ACCEPT: u32 = 9;
-pub const TCP_WINDOW_CLAMP: u32 = 10;
-pub const TCP_INFO: u32 = 11;
-pub const TCP_QUICKACK: u32 = 12;
-pub const TCP_CONGESTION: u32 = 13;
-pub const TCP_MD5SIG: u32 = 14;
-pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16;
-pub const TCP_THIN_DUPACK: u32 = 17;
-pub const TCP_USER_TIMEOUT: u32 = 18;
-pub const TCP_REPAIR: u32 = 19;
-pub const TCP_REPAIR_QUEUE: u32 = 20;
-pub const TCP_QUEUE_SEQ: u32 = 21;
-pub const TCP_REPAIR_OPTIONS: u32 = 22;
-pub const TCP_FASTOPEN: u32 = 23;
-pub const TCP_TIMESTAMP: u32 = 24;
-pub const TCP_NOTSENT_LOWAT: u32 = 25;
-pub const TCP_CC_INFO: u32 = 26;
-pub const TCP_SAVE_SYN: u32 = 27;
-pub const TCP_SAVED_SYN: u32 = 28;
-pub const TCP_REPAIR_WINDOW: u32 = 29;
-pub const TCP_FASTOPEN_CONNECT: u32 = 30;
-pub const TCP_ULP: u32 = 31;
-pub const TCP_MD5SIG_EXT: u32 = 32;
-pub const TCP_FASTOPEN_KEY: u32 = 33;
-pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34;
-pub const TCP_ZEROCOPY_RECEIVE: u32 = 35;
-pub const TCP_INQ: u32 = 36;
-pub const TCP_CM_INQ: u32 = 36;
-pub const TCP_TX_DELAY: u32 = 37;
-pub const TCP_REPAIR_ON: u32 = 1;
-pub const TCP_REPAIR_OFF: u32 = 0;
-pub const TCP_REPAIR_OFF_NO_WP: i32 = -1;
-pub const TCPI_OPT_TIMESTAMPS: u32 = 1;
-pub const TCPI_OPT_SACK: u32 = 2;
-pub const TCPI_OPT_WSCALE: u32 = 4;
-pub const TCPI_OPT_ECN: u32 = 8;
-pub const TCPI_OPT_ECN_SEEN: u32 = 16;
-pub const TCPI_OPT_SYN_DATA: u32 = 32;
-pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80;
-pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
-pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
-pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
-pub const IGNBRK: u32 = 1;
-pub const BRKINT: u32 = 2;
-pub const IGNPAR: u32 = 4;
-pub const PARMRK: u32 = 8;
-pub const INPCK: u32 = 16;
-pub const ISTRIP: u32 = 32;
-pub const INLCR: u32 = 64;
-pub const IGNCR: u32 = 128;
-pub const ICRNL: u32 = 256;
-pub const IXANY: u32 = 2048;
-pub const OPOST: u32 = 1;
-pub const OCRNL: u32 = 8;
-pub const ONOCR: u32 = 16;
-pub const ONLRET: u32 = 32;
-pub const OFILL: u32 = 64;
-pub const OFDEL: u32 = 128;
-pub const B0: u32 = 0;
-pub const B50: u32 = 1;
-pub const B75: u32 = 2;
-pub const B110: u32 = 3;
-pub const B134: u32 = 4;
-pub const B150: u32 = 5;
-pub const B200: u32 = 6;
-pub const B300: u32 = 7;
-pub const B600: u32 = 8;
-pub const B1200: u32 = 9;
-pub const B1800: u32 = 10;
-pub const B2400: u32 = 11;
-pub const B4800: u32 = 12;
-pub const B9600: u32 = 13;
-pub const B19200: u32 = 14;
-pub const B38400: u32 = 15;
-pub const EXTA: u32 = 14;
-pub const EXTB: u32 = 15;
-pub const ADDRB: u32 = 536870912;
-pub const CMSPAR: u32 = 1073741824;
-pub const CRTSCTS: u32 = 2147483648;
-pub const IBSHIFT: u32 = 16;
-pub const TCOOFF: u32 = 0;
-pub const TCOON: u32 = 1;
-pub const TCIOFF: u32 = 2;
-pub const TCION: u32 = 3;
-pub const TCIFLUSH: u32 = 0;
-pub const TCOFLUSH: u32 = 1;
-pub const TCIOFLUSH: u32 = 2;
-pub const NCCS: u32 = 19;
-pub const VINTR: u32 = 0;
-pub const VQUIT: u32 = 1;
-pub const VERASE: u32 = 2;
-pub const VKILL: u32 = 3;
-pub const VEOF: u32 = 4;
-pub const VTIME: u32 = 5;
-pub const VMIN: u32 = 6;
-pub const VSWTC: u32 = 7;
-pub const VSTART: u32 = 8;
-pub const VSTOP: u32 = 9;
-pub const VSUSP: u32 = 10;
-pub const VEOL: u32 = 11;
-pub const VREPRINT: u32 = 12;
-pub const VDISCARD: u32 = 13;
-pub const VWERASE: u32 = 14;
-pub const VLNEXT: u32 = 15;
-pub const VEOL2: u32 = 16;
-pub const IUCLC: u32 = 512;
-pub const IXON: u32 = 1024;
-pub const IXOFF: u32 = 4096;
-pub const IMAXBEL: u32 = 8192;
-pub const IUTF8: u32 = 16384;
-pub const OLCUC: u32 = 2;
-pub const ONLCR: u32 = 4;
-pub const NLDLY: u32 = 256;
-pub const NL0: u32 = 0;
-pub const NL1: u32 = 256;
-pub const CRDLY: u32 = 1536;
-pub const CR0: u32 = 0;
-pub const CR1: u32 = 512;
-pub const CR2: u32 = 1024;
-pub const CR3: u32 = 1536;
-pub const TABDLY: u32 = 6144;
-pub const TAB0: u32 = 0;
-pub const TAB1: u32 = 2048;
-pub const TAB2: u32 = 4096;
-pub const TAB3: u32 = 6144;
-pub const XTABS: u32 = 6144;
-pub const BSDLY: u32 = 8192;
-pub const BS0: u32 = 0;
-pub const BS1: u32 = 8192;
-pub const VTDLY: u32 = 16384;
-pub const VT0: u32 = 0;
-pub const VT1: u32 = 16384;
-pub const FFDLY: u32 = 32768;
-pub const FF0: u32 = 0;
-pub const FF1: u32 = 32768;
-pub const CBAUD: u32 = 4111;
-pub const CSIZE: u32 = 48;
-pub const CS5: u32 = 0;
-pub const CS6: u32 = 16;
-pub const CS7: u32 = 32;
-pub const CS8: u32 = 48;
-pub const CSTOPB: u32 = 64;
-pub const CREAD: u32 = 128;
-pub const PARENB: u32 = 256;
-pub const PARODD: u32 = 512;
-pub const HUPCL: u32 = 1024;
-pub const CLOCAL: u32 = 2048;
-pub const CBAUDEX: u32 = 4096;
-pub const BOTHER: u32 = 4096;
-pub const B57600: u32 = 4097;
-pub const B115200: u32 = 4098;
-pub const B230400: u32 = 4099;
-pub const B460800: u32 = 4100;
-pub const B500000: u32 = 4101;
-pub const B576000: u32 = 4102;
-pub const B921600: u32 = 4103;
-pub const B1000000: u32 = 4104;
-pub const B1152000: u32 = 4105;
-pub const B1500000: u32 = 4106;
-pub const B2000000: u32 = 4107;
-pub const B2500000: u32 = 4108;
-pub const B3000000: u32 = 4109;
-pub const B3500000: u32 = 4110;
-pub const B4000000: u32 = 4111;
-pub const CIBAUD: u32 = 269418496;
-pub const ISIG: u32 = 1;
-pub const ICANON: u32 = 2;
-pub const XCASE: u32 = 4;
-pub const ECHO: u32 = 8;
-pub const ECHOE: u32 = 16;
-pub const ECHOK: u32 = 32;
-pub const ECHONL: u32 = 64;
-pub const NOFLSH: u32 = 128;
-pub const TOSTOP: u32 = 256;
-pub const ECHOCTL: u32 = 512;
-pub const ECHOPRT: u32 = 1024;
-pub const ECHOKE: u32 = 2048;
-pub const FLUSHO: u32 = 4096;
-pub const PENDIN: u32 = 16384;
-pub const IEXTEN: u32 = 32768;
-pub const EXTPROC: u32 = 65536;
-pub const TCSANOW: u32 = 0;
-pub const TCSADRAIN: u32 = 1;
-pub const TCSAFLUSH: u32 = 2;
-pub const TIOCPKT_DATA: u32 = 0;
-pub const TIOCPKT_FLUSHREAD: u32 = 1;
-pub const TIOCPKT_FLUSHWRITE: u32 = 2;
-pub const TIOCPKT_STOP: u32 = 4;
-pub const TIOCPKT_START: u32 = 8;
-pub const TIOCPKT_NOSTOP: u32 = 16;
-pub const TIOCPKT_DOSTOP: u32 = 32;
-pub const TIOCPKT_IOCTL: u32 = 64;
-pub const TIOCSER_TEMT: u32 = 1;
-pub const NCC: u32 = 8;
-pub const TIOCM_LE: u32 = 1;
-pub const TIOCM_DTR: u32 = 2;
-pub const TIOCM_RTS: u32 = 4;
-pub const TIOCM_ST: u32 = 8;
-pub const TIOCM_SR: u32 = 16;
-pub const TIOCM_CTS: u32 = 32;
-pub const TIOCM_CAR: u32 = 64;
-pub const TIOCM_RNG: u32 = 128;
-pub const TIOCM_DSR: u32 = 256;
-pub const TIOCM_CD: u32 = 64;
-pub const TIOCM_RI: u32 = 128;
-pub const TIOCM_OUT1: u32 = 8192;
-pub const TIOCM_OUT2: u32 = 16384;
-pub const TIOCM_LOOP: u32 = 32768;
-pub const UIO_FASTIOV: u32 = 8;
-pub const UIO_MAXIOV: u32 = 1024;
-pub const UNIX_PATH_MAX: u32 = 108;
-pub const __NR_io_setup: u32 = 0;
-pub const __NR_io_destroy: u32 = 1;
-pub const __NR_io_submit: u32 = 2;
-pub const __NR_io_cancel: u32 = 3;
-pub const __NR_io_getevents: u32 = 4;
-pub const __NR_setxattr: u32 = 5;
-pub const __NR_lsetxattr: u32 = 6;
-pub const __NR_fsetxattr: u32 = 7;
-pub const __NR_getxattr: u32 = 8;
-pub const __NR_lgetxattr: u32 = 9;
-pub const __NR_fgetxattr: u32 = 10;
-pub const __NR_listxattr: u32 = 11;
-pub const __NR_llistxattr: u32 = 12;
-pub const __NR_flistxattr: u32 = 13;
-pub const __NR_removexattr: u32 = 14;
-pub const __NR_lremovexattr: u32 = 15;
-pub const __NR_fremovexattr: u32 = 16;
-pub const __NR_getcwd: u32 = 17;
-pub const __NR_lookup_dcookie: u32 = 18;
-pub const __NR_eventfd2: u32 = 19;
-pub const __NR_epoll_create1: u32 = 20;
-pub const __NR_epoll_ctl: u32 = 21;
-pub const __NR_epoll_pwait: u32 = 22;
-pub const __NR_dup: u32 = 23;
-pub const __NR_dup3: u32 = 24;
-pub const __NR3264_fcntl: u32 = 25;
-pub const __NR_inotify_init1: u32 = 26;
-pub const __NR_inotify_add_watch: u32 = 27;
-pub const __NR_inotify_rm_watch: u32 = 28;
-pub const __NR_ioctl: u32 = 29;
-pub const __NR_ioprio_set: u32 = 30;
-pub const __NR_ioprio_get: u32 = 31;
-pub const __NR_flock: u32 = 32;
-pub const __NR_mknodat: u32 = 33;
-pub const __NR_mkdirat: u32 = 34;
-pub const __NR_unlinkat: u32 = 35;
-pub const __NR_symlinkat: u32 = 36;
-pub const __NR_linkat: u32 = 37;
-pub const __NR_umount2: u32 = 39;
-pub const __NR_mount: u32 = 40;
-pub const __NR_pivot_root: u32 = 41;
-pub const __NR_nfsservctl: u32 = 42;
-pub const __NR3264_statfs: u32 = 43;
-pub const __NR3264_fstatfs: u32 = 44;
-pub const __NR3264_truncate: u32 = 45;
-pub const __NR3264_ftruncate: u32 = 46;
-pub const __NR_fallocate: u32 = 47;
-pub const __NR_faccessat: u32 = 48;
-pub const __NR_chdir: u32 = 49;
-pub const __NR_fchdir: u32 = 50;
-pub const __NR_chroot: u32 = 51;
-pub const __NR_fchmod: u32 = 52;
-pub const __NR_fchmodat: u32 = 53;
-pub const __NR_fchownat: u32 = 54;
-pub const __NR_fchown: u32 = 55;
-pub const __NR_openat: u32 = 56;
-pub const __NR_close: u32 = 57;
-pub const __NR_vhangup: u32 = 58;
-pub const __NR_pipe2: u32 = 59;
-pub const __NR_quotactl: u32 = 60;
-pub const __NR_getdents64: u32 = 61;
-pub const __NR3264_lseek: u32 = 62;
-pub const __NR_read: u32 = 63;
-pub const __NR_write: u32 = 64;
-pub const __NR_readv: u32 = 65;
-pub const __NR_writev: u32 = 66;
-pub const __NR_pread64: u32 = 67;
-pub const __NR_pwrite64: u32 = 68;
-pub const __NR_preadv: u32 = 69;
-pub const __NR_pwritev: u32 = 70;
-pub const __NR3264_sendfile: u32 = 71;
-pub const __NR_pselect6: u32 = 72;
-pub const __NR_ppoll: u32 = 73;
-pub const __NR_signalfd4: u32 = 74;
-pub const __NR_vmsplice: u32 = 75;
-pub const __NR_splice: u32 = 76;
-pub const __NR_tee: u32 = 77;
-pub const __NR_readlinkat: u32 = 78;
-pub const __NR_sync: u32 = 81;
-pub const __NR_fsync: u32 = 82;
-pub const __NR_fdatasync: u32 = 83;
-pub const __NR_sync_file_range: u32 = 84;
-pub const __NR_timerfd_create: u32 = 85;
-pub const __NR_timerfd_settime: u32 = 86;
-pub const __NR_timerfd_gettime: u32 = 87;
-pub const __NR_utimensat: u32 = 88;
-pub const __NR_acct: u32 = 89;
-pub const __NR_capget: u32 = 90;
-pub const __NR_capset: u32 = 91;
-pub const __NR_personality: u32 = 92;
-pub const __NR_exit: u32 = 93;
-pub const __NR_exit_group: u32 = 94;
-pub const __NR_waitid: u32 = 95;
-pub const __NR_set_tid_address: u32 = 96;
-pub const __NR_unshare: u32 = 97;
-pub const __NR_futex: u32 = 98;
-pub const __NR_set_robust_list: u32 = 99;
-pub const __NR_get_robust_list: u32 = 100;
-pub const __NR_nanosleep: u32 = 101;
-pub const __NR_getitimer: u32 = 102;
-pub const __NR_setitimer: u32 = 103;
-pub const __NR_kexec_load: u32 = 104;
-pub const __NR_init_module: u32 = 105;
-pub const __NR_delete_module: u32 = 106;
-pub const __NR_timer_create: u32 = 107;
-pub const __NR_timer_gettime: u32 = 108;
-pub const __NR_timer_getoverrun: u32 = 109;
-pub const __NR_timer_settime: u32 = 110;
-pub const __NR_timer_delete: u32 = 111;
-pub const __NR_clock_settime: u32 = 112;
-pub const __NR_clock_gettime: u32 = 113;
-pub const __NR_clock_getres: u32 = 114;
-pub const __NR_clock_nanosleep: u32 = 115;
-pub const __NR_syslog: u32 = 116;
-pub const __NR_ptrace: u32 = 117;
-pub const __NR_sched_setparam: u32 = 118;
-pub const __NR_sched_setscheduler: u32 = 119;
-pub const __NR_sched_getscheduler: u32 = 120;
-pub const __NR_sched_getparam: u32 = 121;
-pub const __NR_sched_setaffinity: u32 = 122;
-pub const __NR_sched_getaffinity: u32 = 123;
-pub const __NR_sched_yield: u32 = 124;
-pub const __NR_sched_get_priority_max: u32 = 125;
-pub const __NR_sched_get_priority_min: u32 = 126;
-pub const __NR_sched_rr_get_interval: u32 = 127;
-pub const __NR_restart_syscall: u32 = 128;
-pub const __NR_kill: u32 = 129;
-pub const __NR_tkill: u32 = 130;
-pub const __NR_tgkill: u32 = 131;
-pub const __NR_sigaltstack: u32 = 132;
-pub const __NR_rt_sigsuspend: u32 = 133;
-pub const __NR_rt_sigaction: u32 = 134;
-pub const __NR_rt_sigprocmask: u32 = 135;
-pub const __NR_rt_sigpending: u32 = 136;
-pub const __NR_rt_sigtimedwait: u32 = 137;
-pub const __NR_rt_sigqueueinfo: u32 = 138;
-pub const __NR_rt_sigreturn: u32 = 139;
-pub const __NR_setpriority: u32 = 140;
-pub const __NR_getpriority: u32 = 141;
-pub const __NR_reboot: u32 = 142;
-pub const __NR_setregid: u32 = 143;
-pub const __NR_setgid: u32 = 144;
-pub const __NR_setreuid: u32 = 145;
-pub const __NR_setuid: u32 = 146;
-pub const __NR_setresuid: u32 = 147;
-pub const __NR_getresuid: u32 = 148;
-pub const __NR_setresgid: u32 = 149;
-pub const __NR_getresgid: u32 = 150;
-pub const __NR_setfsuid: u32 = 151;
-pub const __NR_setfsgid: u32 = 152;
-pub const __NR_times: u32 = 153;
-pub const __NR_setpgid: u32 = 154;
-pub const __NR_getpgid: u32 = 155;
-pub const __NR_getsid: u32 = 156;
-pub const __NR_setsid: u32 = 157;
-pub const __NR_getgroups: u32 = 158;
-pub const __NR_setgroups: u32 = 159;
-pub const __NR_uname: u32 = 160;
-pub const __NR_sethostname: u32 = 161;
-pub const __NR_setdomainname: u32 = 162;
-pub const __NR_getrusage: u32 = 165;
-pub const __NR_umask: u32 = 166;
-pub const __NR_prctl: u32 = 167;
-pub const __NR_getcpu: u32 = 168;
-pub const __NR_gettimeofday: u32 = 169;
-pub const __NR_settimeofday: u32 = 170;
-pub const __NR_adjtimex: u32 = 171;
-pub const __NR_getpid: u32 = 172;
-pub const __NR_getppid: u32 = 173;
-pub const __NR_getuid: u32 = 174;
-pub const __NR_geteuid: u32 = 175;
-pub const __NR_getgid: u32 = 176;
-pub const __NR_getegid: u32 = 177;
-pub const __NR_gettid: u32 = 178;
-pub const __NR_sysinfo: u32 = 179;
-pub const __NR_mq_open: u32 = 180;
-pub const __NR_mq_unlink: u32 = 181;
-pub const __NR_mq_timedsend: u32 = 182;
-pub const __NR_mq_timedreceive: u32 = 183;
-pub const __NR_mq_notify: u32 = 184;
-pub const __NR_mq_getsetattr: u32 = 185;
-pub const __NR_msgget: u32 = 186;
-pub const __NR_msgctl: u32 = 187;
-pub const __NR_msgrcv: u32 = 188;
-pub const __NR_msgsnd: u32 = 189;
-pub const __NR_semget: u32 = 190;
-pub const __NR_semctl: u32 = 191;
-pub const __NR_semtimedop: u32 = 192;
-pub const __NR_semop: u32 = 193;
-pub const __NR_shmget: u32 = 194;
-pub const __NR_shmctl: u32 = 195;
-pub const __NR_shmat: u32 = 196;
-pub const __NR_shmdt: u32 = 197;
-pub const __NR_socket: u32 = 198;
-pub const __NR_socketpair: u32 = 199;
-pub const __NR_bind: u32 = 200;
-pub const __NR_listen: u32 = 201;
-pub const __NR_accept: u32 = 202;
-pub const __NR_connect: u32 = 203;
-pub const __NR_getsockname: u32 = 204;
-pub const __NR_getpeername: u32 = 205;
-pub const __NR_sendto: u32 = 206;
-pub const __NR_recvfrom: u32 = 207;
-pub const __NR_setsockopt: u32 = 208;
-pub const __NR_getsockopt: u32 = 209;
-pub const __NR_shutdown: u32 = 210;
-pub const __NR_sendmsg: u32 = 211;
-pub const __NR_recvmsg: u32 = 212;
-pub const __NR_readahead: u32 = 213;
-pub const __NR_brk: u32 = 214;
-pub const __NR_munmap: u32 = 215;
-pub const __NR_mremap: u32 = 216;
-pub const __NR_add_key: u32 = 217;
-pub const __NR_request_key: u32 = 218;
-pub const __NR_keyctl: u32 = 219;
-pub const __NR_clone: u32 = 220;
-pub const __NR_execve: u32 = 221;
-pub const __NR3264_mmap: u32 = 222;
-pub const __NR3264_fadvise64: u32 = 223;
-pub const __NR_swapon: u32 = 224;
-pub const __NR_swapoff: u32 = 225;
-pub const __NR_mprotect: u32 = 226;
-pub const __NR_msync: u32 = 227;
-pub const __NR_mlock: u32 = 228;
-pub const __NR_munlock: u32 = 229;
-pub const __NR_mlockall: u32 = 230;
-pub const __NR_munlockall: u32 = 231;
-pub const __NR_mincore: u32 = 232;
-pub const __NR_madvise: u32 = 233;
-pub const __NR_remap_file_pages: u32 = 234;
-pub const __NR_mbind: u32 = 235;
-pub const __NR_get_mempolicy: u32 = 236;
-pub const __NR_set_mempolicy: u32 = 237;
-pub const __NR_migrate_pages: u32 = 238;
-pub const __NR_move_pages: u32 = 239;
-pub const __NR_rt_tgsigqueueinfo: u32 = 240;
-pub const __NR_perf_event_open: u32 = 241;
-pub const __NR_accept4: u32 = 242;
-pub const __NR_recvmmsg: u32 = 243;
-pub const __NR_arch_specific_syscall: u32 = 244;
-pub const __NR_wait4: u32 = 260;
-pub const __NR_prlimit64: u32 = 261;
-pub const __NR_fanotify_init: u32 = 262;
-pub const __NR_fanotify_mark: u32 = 263;
-pub const __NR_name_to_handle_at: u32 = 264;
-pub const __NR_open_by_handle_at: u32 = 265;
-pub const __NR_clock_adjtime: u32 = 266;
-pub const __NR_syncfs: u32 = 267;
-pub const __NR_setns: u32 = 268;
-pub const __NR_sendmmsg: u32 = 269;
-pub const __NR_process_vm_readv: u32 = 270;
-pub const __NR_process_vm_writev: u32 = 271;
-pub const __NR_kcmp: u32 = 272;
-pub const __NR_finit_module: u32 = 273;
-pub const __NR_sched_setattr: u32 = 274;
-pub const __NR_sched_getattr: u32 = 275;
-pub const __NR_renameat2: u32 = 276;
-pub const __NR_seccomp: u32 = 277;
-pub const __NR_getrandom: u32 = 278;
-pub const __NR_memfd_create: u32 = 279;
-pub const __NR_bpf: u32 = 280;
-pub const __NR_execveat: u32 = 281;
-pub const __NR_userfaultfd: u32 = 282;
-pub const __NR_membarrier: u32 = 283;
-pub const __NR_mlock2: u32 = 284;
-pub const __NR_copy_file_range: u32 = 285;
-pub const __NR_preadv2: u32 = 286;
-pub const __NR_pwritev2: u32 = 287;
-pub const __NR_pkey_mprotect: u32 = 288;
-pub const __NR_pkey_alloc: u32 = 289;
-pub const __NR_pkey_free: u32 = 290;
-pub const __NR_statx: u32 = 291;
-pub const __NR_io_pgetevents: u32 = 292;
-pub const __NR_rseq: u32 = 293;
-pub const __NR_kexec_file_load: u32 = 294;
-pub const __NR_pidfd_send_signal: u32 = 424;
-pub const __NR_io_uring_setup: u32 = 425;
-pub const __NR_io_uring_enter: u32 = 426;
-pub const __NR_io_uring_register: u32 = 427;
-pub const __NR_open_tree: u32 = 428;
-pub const __NR_move_mount: u32 = 429;
-pub const __NR_fsopen: u32 = 430;
-pub const __NR_fsconfig: u32 = 431;
-pub const __NR_fsmount: u32 = 432;
-pub const __NR_fspick: u32 = 433;
-pub const __NR_pidfd_open: u32 = 434;
-pub const __NR_clone3: u32 = 435;
-pub const __NR_close_range: u32 = 436;
-pub const __NR_openat2: u32 = 437;
-pub const __NR_pidfd_getfd: u32 = 438;
-pub const __NR_faccessat2: u32 = 439;
-pub const __NR_process_madvise: u32 = 440;
-pub const __NR_epoll_pwait2: u32 = 441;
-pub const __NR_mount_setattr: u32 = 442;
-pub const __NR_quotactl_fd: u32 = 443;
-pub const __NR_landlock_create_ruleset: u32 = 444;
-pub const __NR_landlock_add_rule: u32 = 445;
-pub const __NR_landlock_restrict_self: u32 = 446;
-pub const __NR_process_mrelease: u32 = 448;
-pub const __NR_futex_waitv: u32 = 449;
-pub const __NR_set_mempolicy_home_node: u32 = 450;
-pub const __NR_syscalls: u32 = 451;
-pub const __NR_fcntl: u32 = 25;
-pub const __NR_statfs: u32 = 43;
-pub const __NR_fstatfs: u32 = 44;
-pub const __NR_truncate: u32 = 45;
-pub const __NR_ftruncate: u32 = 46;
-pub const __NR_lseek: u32 = 62;
-pub const __NR_sendfile: u32 = 71;
-pub const __NR_mmap: u32 = 222;
-pub const __NR_fadvise64: u32 = 223;
-pub const __OLD_UTS_LEN: u32 = 8;
-pub const __NEW_UTS_LEN: u32 = 64;
-pub const WNOHANG: u32 = 1;
-pub const WUNTRACED: u32 = 2;
-pub const WSTOPPED: u32 = 2;
-pub const WEXITED: u32 = 4;
-pub const WCONTINUED: u32 = 8;
-pub const WNOWAIT: u32 = 16777216;
-pub const __WNOTHREAD: u32 = 536870912;
-pub const __WALL: u32 = 1073741824;
-pub const __WCLONE: u32 = 2147483648;
-pub const P_ALL: u32 = 0;
-pub const P_PID: u32 = 1;
-pub const P_PGID: u32 = 2;
-pub const P_PIDFD: u32 = 3;
-pub const MFD_CLOEXEC: u32 = 1;
-pub const MFD_ALLOW_SEALING: u32 = 2;
-pub const MFD_HUGETLB: u32 = 4;
-pub const MFD_HUGE_SHIFT: u32 = 26;
-pub const MFD_HUGE_MASK: u32 = 63;
-pub const MFD_HUGE_64KB: u32 = 1073741824;
-pub const MFD_HUGE_512KB: u32 = 1275068416;
-pub const MFD_HUGE_1MB: u32 = 1342177280;
-pub const MFD_HUGE_2MB: u32 = 1409286144;
-pub const MFD_HUGE_8MB: u32 = 1543503872;
-pub const MFD_HUGE_16MB: u32 = 1610612736;
-pub const MFD_HUGE_32MB: u32 = 1677721600;
-pub const MFD_HUGE_256MB: u32 = 1879048192;
-pub const MFD_HUGE_512MB: u32 = 1946157056;
-pub const MFD_HUGE_1GB: u32 = 2013265920;
-pub const MFD_HUGE_2GB: u32 = 2080374784;
-pub const MFD_HUGE_16GB: u32 = 2281701376;
-pub const TFD_TIMER_ABSTIME: u32 = 1;
-pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2;
-pub const TFD_CLOEXEC: u32 = 524288;
-pub const TFD_NONBLOCK: u32 = 2048;
-pub const USERFAULTFD_IOC: u32 = 170;
-pub const _UFFDIO_REGISTER: u32 = 0;
-pub const _UFFDIO_UNREGISTER: u32 = 1;
-pub const _UFFDIO_WAKE: u32 = 2;
-pub const _UFFDIO_COPY: u32 = 3;
-pub const _UFFDIO_ZEROPAGE: u32 = 4;
-pub const _UFFDIO_WRITEPROTECT: u32 = 6;
-pub const _UFFDIO_CONTINUE: u32 = 7;
-pub const _UFFDIO_API: u32 = 63;
-pub const UFFDIO: u32 = 170;
-pub const UFFD_EVENT_PAGEFAULT: u32 = 18;
-pub const UFFD_EVENT_FORK: u32 = 19;
-pub const UFFD_EVENT_REMAP: u32 = 20;
-pub const UFFD_EVENT_REMOVE: u32 = 21;
-pub const UFFD_EVENT_UNMAP: u32 = 22;
-pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1;
-pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2;
-pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4;
-pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1;
-pub const UFFD_FEATURE_EVENT_FORK: u32 = 2;
-pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4;
-pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8;
-pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16;
-pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32;
-pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64;
-pub const UFFD_FEATURE_SIGBUS: u32 = 128;
-pub const UFFD_FEATURE_THREAD_ID: u32 = 256;
-pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512;
-pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024;
-pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048;
-pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096;
-pub const UFFD_USER_MODE_ONLY: u32 = 1;
-pub const IORING_FILE_INDEX_ALLOC: i32 = -1;
-pub const IORING_SETUP_IOPOLL: u32 = 1;
-pub const IORING_SETUP_SQPOLL: u32 = 2;
-pub const IORING_SETUP_SQ_AFF: u32 = 4;
-pub const IORING_SETUP_CQSIZE: u32 = 8;
-pub const IORING_SETUP_CLAMP: u32 = 16;
-pub const IORING_SETUP_ATTACH_WQ: u32 = 32;
-pub const IORING_SETUP_R_DISABLED: u32 = 64;
-pub const IORING_SETUP_SUBMIT_ALL: u32 = 128;
-pub const IORING_SETUP_COOP_TASKRUN: u32 = 256;
-pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512;
-pub const IORING_SETUP_SQE128: u32 = 1024;
-pub const IORING_SETUP_CQE32: u32 = 2048;
-pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096;
-pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192;
-pub const IORING_URING_CMD_FIXED: u32 = 1;
-pub const IORING_FSYNC_DATASYNC: u32 = 1;
-pub const IORING_TIMEOUT_ABS: u32 = 1;
-pub const IORING_TIMEOUT_UPDATE: u32 = 2;
-pub const IORING_TIMEOUT_BOOTTIME: u32 = 4;
-pub const IORING_TIMEOUT_REALTIME: u32 = 8;
-pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16;
-pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32;
-pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12;
-pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18;
-pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648;
-pub const IORING_POLL_ADD_MULTI: u32 = 1;
-pub const IORING_POLL_UPDATE_EVENTS: u32 = 2;
-pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4;
-pub const IORING_POLL_ADD_LEVEL: u32 = 8;
-pub const IORING_ASYNC_CANCEL_ALL: u32 = 1;
-pub const IORING_ASYNC_CANCEL_FD: u32 = 2;
-pub const IORING_ASYNC_CANCEL_ANY: u32 = 4;
-pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8;
-pub const IORING_RECVSEND_POLL_FIRST: u32 = 1;
-pub const IORING_RECV_MULTISHOT: u32 = 2;
-pub const IORING_RECVSEND_FIXED_BUF: u32 = 4;
-pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8;
-pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648;
-pub const IORING_ACCEPT_MULTISHOT: u32 = 1;
-pub const IORING_MSG_RING_CQE_SKIP: u32 = 1;
-pub const IORING_CQE_F_BUFFER: u32 = 1;
-pub const IORING_CQE_F_MORE: u32 = 2;
-pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4;
-pub const IORING_CQE_F_NOTIF: u32 = 8;
-pub const IORING_OFF_SQ_RING: u32 = 0;
-pub const IORING_OFF_CQ_RING: u32 = 134217728;
-pub const IORING_OFF_SQES: u32 = 268435456;
-pub const IORING_SQ_NEED_WAKEUP: u32 = 1;
-pub const IORING_SQ_CQ_OVERFLOW: u32 = 2;
-pub const IORING_SQ_TASKRUN: u32 = 4;
-pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1;
-pub const IORING_ENTER_GETEVENTS: u32 = 1;
-pub const IORING_ENTER_SQ_WAKEUP: u32 = 2;
-pub const IORING_ENTER_SQ_WAIT: u32 = 4;
-pub const IORING_ENTER_EXT_ARG: u32 = 8;
-pub const IORING_ENTER_REGISTERED_RING: u32 = 16;
-pub const IORING_FEAT_SINGLE_MMAP: u32 = 1;
-pub const IORING_FEAT_NODROP: u32 = 2;
-pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4;
-pub const IORING_FEAT_RW_CUR_POS: u32 = 8;
-pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16;
-pub const IORING_FEAT_FAST_POLL: u32 = 32;
-pub const IORING_FEAT_POLL_32BITS: u32 = 64;
-pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128;
-pub const IORING_FEAT_EXT_ARG: u32 = 256;
-pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512;
-pub const IORING_FEAT_RSRC_TAGS: u32 = 1024;
-pub const IORING_FEAT_CQE_SKIP: u32 = 2048;
-pub const IORING_FEAT_LINKED_FILE: u32 = 4096;
-pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1;
-pub const IORING_REGISTER_FILES_SKIP: i32 = -2;
-pub const IO_URING_OP_SUPPORTED: u32 = 1;
-pub const DT_UNKNOWN: u32 = 0;
-pub const DT_FIFO: u32 = 1;
-pub const DT_CHR: u32 = 2;
-pub const DT_DIR: u32 = 4;
-pub const DT_BLK: u32 = 6;
-pub const DT_REG: u32 = 8;
-pub const DT_LNK: u32 = 10;
-pub const DT_SOCK: u32 = 12;
-pub const SHUT_RD: u32 = 0;
-pub const SHUT_WR: u32 = 1;
-pub const SHUT_RDWR: u32 = 2;
-pub const STAT_HAVE_NSEC: u32 = 1;
-pub const SOCK_STREAM: u32 = 1;
-pub const SOCK_DGRAM: u32 = 2;
-pub const SOCK_RAW: u32 = 3;
-pub const SOCK_RDM: u32 = 4;
-pub const SOCK_SEQPACKET: u32 = 5;
-pub const F_OK: u32 = 0;
-pub const R_OK: u32 = 4;
-pub const W_OK: u32 = 2;
-pub const X_OK: u32 = 1;
-pub const UTIME_NOW: u32 = 1073741823;
-pub const UTIME_OMIT: u32 = 1073741822;
-pub const MSG_DONTWAIT: u32 = 64;
-pub const AF_UNSPEC: u32 = 0;
-pub const AF_UNIX: u32 = 1;
-pub const AF_INET: u32 = 2;
-pub const AF_AX25: u32 = 3;
-pub const AF_IPX: u32 = 4;
-pub const AF_APPLETALK: u32 = 5;
-pub const AF_NETROM: u32 = 6;
-pub const AF_BRIDGE: u32 = 7;
-pub const AF_ATMPVC: u32 = 8;
-pub const AF_X25: u32 = 9;
-pub const AF_INET6: u32 = 10;
-pub const AF_ROSE: u32 = 11;
-pub const AF_DECnet: u32 = 12;
-pub const AF_NETBEUI: u32 = 13;
-pub const AF_SECURITY: u32 = 14;
-pub const AF_KEY: u32 = 15;
-pub const AF_NETLINK: u32 = 16;
-pub const AF_PACKET: u32 = 17;
-pub const AF_ASH: u32 = 18;
-pub const AF_ECONET: u32 = 19;
-pub const AF_ATMSVC: u32 = 20;
-pub const AF_RDS: u32 = 21;
-pub const AF_SNA: u32 = 22;
-pub const AF_IRDA: u32 = 23;
-pub const AF_PPPOX: u32 = 24;
-pub const AF_WANPIPE: u32 = 25;
-pub const AF_LLC: u32 = 26;
-pub const AF_CAN: u32 = 29;
-pub const AF_TIPC: u32 = 30;
-pub const AF_BLUETOOTH: u32 = 31;
-pub const AF_IUCV: u32 = 32;
-pub const AF_RXRPC: u32 = 33;
-pub const AF_ISDN: u32 = 34;
-pub const AF_PHONET: u32 = 35;
-pub const AF_IEEE802154: u32 = 36;
-pub const AF_MAX: u32 = 37;
-pub const MSG_OOB: u32 = 1;
-pub const MSG_PEEK: u32 = 2;
-pub const MSG_DONTROUTE: u32 = 4;
-pub const MSG_CTRUNC: u32 = 8;
-pub const MSG_PROBE: u32 = 16;
-pub const MSG_TRUNC: u32 = 32;
-pub const MSG_EOR: u32 = 128;
-pub const MSG_WAITALL: u32 = 256;
-pub const MSG_FIN: u32 = 512;
-pub const MSG_SYN: u32 = 1024;
-pub const MSG_CONFIRM: u32 = 2048;
-pub const MSG_RST: u32 = 4096;
-pub const MSG_ERRQUEUE: u32 = 8192;
-pub const MSG_NOSIGNAL: u32 = 16384;
-pub const MSG_MORE: u32 = 32768;
-pub const MSG_CMSG_CLOEXEC: u32 = 1073741824;
-pub const STDIN_FILENO: u32 = 0;
-pub const STDOUT_FILENO: u32 = 1;
-pub const STDERR_FILENO: u32 = 2;
-pub const RWF_HIPRI: u32 = 1;
-pub const RWF_DSYNC: u32 = 2;
-pub const RWF_SYNC: u32 = 4;
-pub const RWF_NOWAIT: u32 = 8;
-pub const RWF_APPEND: u32 = 16;
-pub const EFD_SEMAPHORE: u32 = 1;
-pub const EFD_CLOEXEC: u32 = 524288;
-pub const EFD_NONBLOCK: u32 = 2048;
-pub const EPOLLIN: u32 = 1;
-pub const EPOLLPRI: u32 = 2;
-pub const EPOLLOUT: u32 = 4;
-pub const EPOLLERR: u32 = 8;
-pub const EPOLLHUP: u32 = 16;
-pub const EPOLLNVAL: u32 = 32;
-pub const EPOLLRDNORM: u32 = 64;
-pub const EPOLLRDBAND: u32 = 128;
-pub const EPOLLWRNORM: u32 = 256;
-pub const EPOLLWRBAND: u32 = 512;
-pub const EPOLLMSG: u32 = 1024;
-pub const EPOLLRDHUP: u32 = 8192;
-pub const EPOLLEXCLUSIVE: u32 = 268435456;
-pub const EPOLLWAKEUP: u32 = 536870912;
-pub const EPOLLONESHOT: u32 = 1073741824;
-pub const EPOLLET: u32 = 2147483648;
-pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336;
-pub const TFD_CREATE_FLAGS: u32 = 526336;
-pub const TFD_SETTIME_FLAGS: u32 = 1;
-pub const SCM_RIGHTS: u32 = 1;
-pub const SCM_CREDENTIALS: u32 = 2;
-pub const SCM_SECURITY: u32 = 3;
-pub const UFFD_API: u32 = 170;
-pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1;
-pub const UFFDIO_REGISTER_MODE_WP: u32 = 2;
-pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4;
-pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1;
-pub const UFFDIO_COPY_MODE_WP: u32 = 2;
-pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1;
-pub const SPLICE_F_MOVE: u32 = 1;
-pub const SPLICE_F_NONBLOCK: u32 = 2;
-pub const SPLICE_F_MORE: u32 = 4;
-pub const SPLICE_F_GIFT: u32 = 8;
-pub const MNT_FORCE: u32 = 1;
-pub const MNT_DETACH: u32 = 2;
-pub const MNT_EXPIRE: u32 = 4;
-pub const UMOUNT_NOFOLLOW: u32 = 8;
-pub const UMOUNT_UNUSED: u32 = 2147483648;
-pub type size_t = crate::ctypes::c_ulong;
-pub type ssize_t = crate::ctypes::c_long;
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 16usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_uid_t = __kernel_uid_t;
-pub type __kernel_old_gid_t = __kernel_gid_t;
-pub type __kernel_old_dev_t = crate::ctypes::c_uint;
-pub type __kernel_size_t = __kernel_ulong_t;
-pub type __kernel_ssize_t = __kernel_long_t;
-pub type __kernel_ptrdiff_t = __kernel_long_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_header_struct {
-pub version: __u32,
-pub pid: crate::ctypes::c_int,
-}
-pub type cap_user_header_t = *mut __user_cap_header_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_data_struct {
-pub effective: __u32,
-pub permitted: __u32,
-pub inheritable: __u32,
-}
-pub type cap_user_data_t = *mut __user_cap_data_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_cap_data__bindgen_ty_1; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize],
-pub rootid: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct f_owner_ex {
-pub type_: crate::ctypes::c_int,
-pub pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_off_t,
-pub l_len: __kernel_off_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock64 {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_loff_t,
-pub l_len: __kernel_loff_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct open_how {
-pub flags: __u64,
-pub mode: __u64,
-pub resolve: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct epoll_event {
-pub events: __poll_t,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v1 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub master_key_descriptor: [__u8; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_key {
-pub mode: __u32,
-pub raw: [__u8; 64usize],
-pub size: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v2 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub __reserved: [__u8; 4usize],
-pub master_key_identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_policy_ex_arg {
-pub policy_size: __u64,
-pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 {
-pub version: __u8,
-pub v1: fscrypt_policy_v1,
-pub v2: fscrypt_policy_v2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_key_specifier {
-pub type_: __u32,
-pub __reserved: __u32,
-pub u: fscrypt_key_specifier__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_key_specifier__bindgen_ty_1 {
-pub __reserved: [__u8; 32usize],
-pub descriptor: [__u8; 8usize],
-pub identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct fscrypt_provisioning_key_payload {
-pub type_: __u32,
-pub __reserved: __u32,
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-pub struct fscrypt_add_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub raw_size: __u32,
-pub key_id: __u32,
-pub __reserved: [__u32; 8usize],
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_remove_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub removal_status_flags: __u32,
-pub __reserved: [__u32; 5usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_key_status_arg {
-pub key_spec: fscrypt_key_specifier,
-pub __reserved: [__u32; 6usize],
-pub status: __u32,
-pub status_flags: __u32,
-pub user_count: __u32,
-pub __out_reserved: [__u32; 13usize],
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum fsconfig_command {
-FSCONFIG_SET_FLAG = 0,
-FSCONFIG_SET_STRING = 1,
-FSCONFIG_SET_BINARY = 2,
-FSCONFIG_SET_PATH = 3,
-FSCONFIG_SET_PATH_EMPTY = 4,
-FSCONFIG_SET_FD = 5,
-FSCONFIG_CMD_CREATE = 6,
-FSCONFIG_CMD_RECONFIGURE = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mount_attr {
-pub attr_set: __u64,
-pub attr_clr: __u64,
-pub propagation: __u64,
-pub userns_fd: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_clone_range {
-pub src_fd: __s64,
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_offset: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fstrim_range {
-pub start: __u64,
-pub len: __u64,
-pub minlen: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_dedupe_range_info {
-pub dest_fd: __s64,
-pub dest_offset: __u64,
-pub bytes_deduped: __u64,
-pub status: __s32,
-pub reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct file_dedupe_range {
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_count: __u16,
-pub reserved1: __u16,
-pub reserved2: __u32,
-pub info: __IncompleteArrayField<file_dedupe_range_info>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct files_stat_struct {
-pub nr_files: crate::ctypes::c_ulong,
-pub nr_free_files: crate::ctypes::c_ulong,
-pub max_files: crate::ctypes::c_ulong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct inodes_stat_t {
-pub nr_inodes: crate::ctypes::c_long,
-pub nr_unused: crate::ctypes::c_long,
-pub dummy: [crate::ctypes::c_long; 5usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fsxattr {
-pub fsx_xflags: __u32,
-pub fsx_extsize: __u32,
-pub fsx_nextents: __u32,
-pub fsx_projid: __u32,
-pub fsx_cowextsize: __u32,
-pub fsx_pad: [crate::ctypes::c_uchar; 8usize],
-}
-pub type __kernel_rwf_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct futex_waitv {
-pub val: __u64,
-pub uaddr: __u64,
-pub flags: __u32,
-pub __reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list {
-pub next: *mut robust_list,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list_head {
-pub list: robust_list,
-pub futex_offset: crate::ctypes::c_long,
-pub list_op_pending: *mut robust_list,
-}
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP;
-pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP;
-pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP;
-pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP;
-pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP;
-pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP;
-pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP;
-pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP;
-pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP;
-pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP;
-pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP;
-pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6;
-pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP;
-pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE;
-pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP;
-pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH;
-pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP;
-pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH;
-pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP;
-pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM;
-pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP;
-pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP;
-pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP;
-pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE;
-pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS;
-pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET;
-pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW;
-pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP;
-pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-IPPROTO_IP = 0,
-IPPROTO_ICMP = 1,
-IPPROTO_IGMP = 2,
-IPPROTO_IPIP = 4,
-IPPROTO_TCP = 6,
-IPPROTO_EGP = 8,
-IPPROTO_PUP = 12,
-IPPROTO_UDP = 17,
-IPPROTO_IDP = 22,
-IPPROTO_TP = 29,
-IPPROTO_DCCP = 33,
-IPPROTO_IPV6 = 41,
-IPPROTO_RSVP = 46,
-IPPROTO_GRE = 47,
-IPPROTO_ESP = 50,
-IPPROTO_AH = 51,
-IPPROTO_MTP = 92,
-IPPROTO_BEETPH = 94,
-IPPROTO_ENCAP = 98,
-IPPROTO_PIM = 103,
-IPPROTO_COMP = 108,
-IPPROTO_L2TP = 115,
-IPPROTO_SCTP = 132,
-IPPROTO_UDPLITE = 136,
-IPPROTO_MPLS = 137,
-IPPROTO_ETHERNET = 143,
-IPPROTO_RAW = 255,
-IPPROTO_MPTCP = 262,
-IPPROTO_MAX = 263,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_addr {
-pub s_addr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq {
-pub imr_multiaddr: in_addr,
-pub imr_interface: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreqn {
-pub imr_multiaddr: in_addr,
-pub imr_address: in_addr,
-pub imr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq_source {
-pub imr_multiaddr: __be32,
-pub imr_interface: __be32,
-pub imr_sourceaddr: __be32,
-}
-#[repr(C)]
-pub struct ip_msfilter {
-pub imsf_multiaddr: __be32,
-pub imsf_interface: __be32,
-pub imsf_fmode: __u32,
-pub imsf_numsrc: __u32,
-pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct ip_msfilter__bindgen_ty_1 {
-pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>,
-pub __bindgen_anon_1: __BindgenUnionField<ip_msfilter__bindgen_ty_1__bindgen_ty_1>,
-pub bindgen_union_field: u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 {
-pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-pub imsf_slist_flex: __IncompleteArrayField<__be32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_req {
-pub gr_interface: __u32,
-pub gr_group: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_source_req {
-pub gsr_interface: __u32,
-pub gsr_group: __kernel_sockaddr_storage,
-pub gsr_source: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-pub struct group_filter {
-pub __bindgen_anon_1: group_filter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_1>,
-pub __bindgen_anon_2: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_2>,
-pub bindgen_union_field: [u64; 34usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_1 {
-pub gf_interface_aux: __u32,
-pub gf_group_aux: __kernel_sockaddr_storage,
-pub gf_fmode_aux: __u32,
-pub gf_numsrc_aux: __u32,
-pub gf_slist: [__kernel_sockaddr_storage; 1usize],
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_2 {
-pub gf_interface: __u32,
-pub gf_group: __kernel_sockaddr_storage,
-pub gf_fmode: __u32,
-pub gf_numsrc: __u32,
-pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_pktinfo {
-pub ipi_ifindex: crate::ctypes::c_int,
-pub ipi_spec_dst: in_addr,
-pub ipi_addr: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_in {
-pub sin_family: __kernel_sa_family_t,
-pub sin_port: __be16,
-pub sin_addr: in_addr,
-pub __pad: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct inotify_event {
-pub wd: __s32,
-pub mask: __u32,
-pub cookie: __u32,
-pub len: __u32,
-pub name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct iphdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub tos: __u8,
-pub tot_len: __be16,
-pub id: __be16,
-pub frag_off: __be16,
-pub ttl: __u8,
-pub protocol: __u8,
-pub check: __sum16,
-pub __bindgen_anon_1: iphdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union iphdr__bindgen_ty_1 {
-pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-impl iphdr {
-#[inline]
-pub fn ihl(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_ihl(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let ihl: u8 = unsafe { ::core::mem::transmute(ihl) };
-ihl as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_auth_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub reserved: __be16,
-pub spi: __be32,
-pub seq_no: __be32,
-pub auth_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_esp_hdr {
-pub spi: __be32,
-pub seq_no: __be32,
-pub enc_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_comp_hdr {
-pub nexthdr: __u8,
-pub flags: __u8,
-pub cpi: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_beet_phdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub padlen: __u8,
-pub reserved: __u8,
-}
-pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING;
-pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING;
-pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP;
-pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS;
-pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS;
-pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS;
-pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA;
-pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER;
-pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY;
-pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS;
-pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG;
-pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER;
-pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID;
-pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM;
-pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY;
-pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION;
-pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE;
-pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE;
-pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES;
-pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT;
-pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY;
-pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL;
-pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK;
-pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN;
-pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET;
-pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP;
-pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING;
-pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER;
-pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IPV4_DEVCONF_FORWARDING = 1,
-IPV4_DEVCONF_MC_FORWARDING = 2,
-IPV4_DEVCONF_PROXY_ARP = 3,
-IPV4_DEVCONF_ACCEPT_REDIRECTS = 4,
-IPV4_DEVCONF_SECURE_REDIRECTS = 5,
-IPV4_DEVCONF_SEND_REDIRECTS = 6,
-IPV4_DEVCONF_SHARED_MEDIA = 7,
-IPV4_DEVCONF_RP_FILTER = 8,
-IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9,
-IPV4_DEVCONF_BOOTP_RELAY = 10,
-IPV4_DEVCONF_LOG_MARTIANS = 11,
-IPV4_DEVCONF_TAG = 12,
-IPV4_DEVCONF_ARPFILTER = 13,
-IPV4_DEVCONF_MEDIUM_ID = 14,
-IPV4_DEVCONF_NOXFRM = 15,
-IPV4_DEVCONF_NOPOLICY = 16,
-IPV4_DEVCONF_FORCE_IGMP_VERSION = 17,
-IPV4_DEVCONF_ARP_ANNOUNCE = 18,
-IPV4_DEVCONF_ARP_IGNORE = 19,
-IPV4_DEVCONF_PROMOTE_SECONDARIES = 20,
-IPV4_DEVCONF_ARP_ACCEPT = 21,
-IPV4_DEVCONF_ARP_NOTIFY = 22,
-IPV4_DEVCONF_ACCEPT_LOCAL = 23,
-IPV4_DEVCONF_SRC_VMARK = 24,
-IPV4_DEVCONF_PROXY_ARP_PVLAN = 25,
-IPV4_DEVCONF_ROUTE_LOCALNET = 26,
-IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27,
-IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28,
-IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29,
-IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30,
-IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31,
-IPV4_DEVCONF_BC_FORWARDING = 32,
-IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33,
-__IPV4_DEVCONF_MAX = 34,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_addr {
-pub in6_u: in6_addr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union in6_addr__bindgen_ty_1 {
-pub u6_addr8: [__u8; 16usize],
-pub u6_addr16: [__be16; 8usize],
-pub u6_addr32: [__be32; 4usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr_in6 {
-pub sin6_family: crate::ctypes::c_ushort,
-pub sin6_port: __be16,
-pub sin6_flowinfo: __be32,
-pub sin6_addr: in6_addr,
-pub sin6_scope_id: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6_mreq {
-pub ipv6mr_multiaddr: in6_addr,
-pub ipv6mr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_flowlabel_req {
-pub flr_dst: in6_addr,
-pub flr_label: __be32,
-pub flr_action: __u8,
-pub flr_share: __u8,
-pub flr_flags: __u16,
-pub flr_expires: __u16,
-pub flr_linger: __u16,
-pub __flr_pad: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_pktinfo {
-pub ipi6_addr: in6_addr,
-pub ipi6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ip6_mtuinfo {
-pub ip6m_addr: sockaddr_in6,
-pub ip6m_mtu: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_ifreq {
-pub ifr6_addr: in6_addr,
-pub ifr6_prefixlen: __u32,
-pub ifr6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_rt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub type_: __u8,
-pub segments_left: __u8,
-}
-#[repr(C, packed)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_opt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-}
-#[repr(C)]
-pub struct rt0_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: __IncompleteArrayField<in6_addr>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rt2_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: in6_addr,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct ipv6_destopt_hao {
-pub type_: __u8,
-pub length: __u8,
-pub addr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub flow_lbl: [__u8; 3usize],
-pub payload_len: __be16,
-pub nexthdr: __u8,
-pub hop_limit: __u8,
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union ipv6hdr__bindgen_ty_1 {
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-impl ipv6hdr {
-#[inline]
-pub fn priority(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_priority(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let priority: u8 = unsafe { ::core::mem::transmute(priority) };
-priority as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING;
-pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT;
-pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6;
-pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA;
-pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS;
-pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF;
-pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS;
-pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS;
-pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL;
-pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY;
-pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR;
-pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT;
-pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT;
-pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY;
-pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR;
-pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES;
-pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION;
-pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR;
-pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO;
-pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF;
-pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN;
-pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP;
-pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD;
-pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING;
-pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6;
-pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD;
-pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO;
-pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY;
-pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC;
-pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL;
-pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC;
-pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU;
-pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET;
-pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY;
-pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT;
-pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA;
-pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN;
-pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL;
-pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED;
-pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC;
-pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD;
-pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE;
-pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN;
-pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS;
-pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED;
-pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC;
-pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED;
-pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID;
-pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE;
-pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER;
-pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA;
-pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-DEVCONF_FORWARDING = 0,
-DEVCONF_HOPLIMIT = 1,
-DEVCONF_MTU6 = 2,
-DEVCONF_ACCEPT_RA = 3,
-DEVCONF_ACCEPT_REDIRECTS = 4,
-DEVCONF_AUTOCONF = 5,
-DEVCONF_DAD_TRANSMITS = 6,
-DEVCONF_RTR_SOLICITS = 7,
-DEVCONF_RTR_SOLICIT_INTERVAL = 8,
-DEVCONF_RTR_SOLICIT_DELAY = 9,
-DEVCONF_USE_TEMPADDR = 10,
-DEVCONF_TEMP_VALID_LFT = 11,
-DEVCONF_TEMP_PREFERED_LFT = 12,
-DEVCONF_REGEN_MAX_RETRY = 13,
-DEVCONF_MAX_DESYNC_FACTOR = 14,
-DEVCONF_MAX_ADDRESSES = 15,
-DEVCONF_FORCE_MLD_VERSION = 16,
-DEVCONF_ACCEPT_RA_DEFRTR = 17,
-DEVCONF_ACCEPT_RA_PINFO = 18,
-DEVCONF_ACCEPT_RA_RTR_PREF = 19,
-DEVCONF_RTR_PROBE_INTERVAL = 20,
-DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21,
-DEVCONF_PROXY_NDP = 22,
-DEVCONF_OPTIMISTIC_DAD = 23,
-DEVCONF_ACCEPT_SOURCE_ROUTE = 24,
-DEVCONF_MC_FORWARDING = 25,
-DEVCONF_DISABLE_IPV6 = 26,
-DEVCONF_ACCEPT_DAD = 27,
-DEVCONF_FORCE_TLLAO = 28,
-DEVCONF_NDISC_NOTIFY = 29,
-DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30,
-DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31,
-DEVCONF_SUPPRESS_FRAG_NDISC = 32,
-DEVCONF_ACCEPT_RA_FROM_LOCAL = 33,
-DEVCONF_USE_OPTIMISTIC = 34,
-DEVCONF_ACCEPT_RA_MTU = 35,
-DEVCONF_STABLE_SECRET = 36,
-DEVCONF_USE_OIF_ADDRS_ONLY = 37,
-DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38,
-DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39,
-DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40,
-DEVCONF_DROP_UNSOLICITED_NA = 41,
-DEVCONF_KEEP_ADDR_ON_DOWN = 42,
-DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43,
-DEVCONF_SEG6_ENABLED = 44,
-DEVCONF_SEG6_REQUIRE_HMAC = 45,
-DEVCONF_ENHANCED_DAD = 46,
-DEVCONF_ADDR_GEN_MODE = 47,
-DEVCONF_DISABLE_POLICY = 48,
-DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49,
-DEVCONF_NDISC_TCLASS = 50,
-DEVCONF_RPL_SEG_ENABLED = 51,
-DEVCONF_RA_DEFRTR_METRIC = 52,
-DEVCONF_IOAM6_ENABLED = 53,
-DEVCONF_IOAM6_ID = 54,
-DEVCONF_IOAM6_ID_WIDE = 55,
-DEVCONF_NDISC_EVICT_NOCARRIER = 56,
-DEVCONF_ACCEPT_UNTRACKED_NA = 57,
-DEVCONF_MAX = 58,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum socket_state {
-SS_FREE = 0,
-SS_UNCONNECTED = 1,
-SS_CONNECTING = 2,
-SS_CONNECTED = 3,
-SS_DISCONNECTING = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct pollfd {
-pub fd: crate::ctypes::c_int,
-pub events: crate::ctypes::c_short,
-pub revents: crate::ctypes::c_short,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prctl_mm_map {
-pub start_code: __u64,
-pub end_code: __u64,
-pub start_data: __u64,
-pub end_data: __u64,
-pub start_brk: __u64,
-pub brk: __u64,
-pub start_stack: __u64,
-pub arg_start: __u64,
-pub arg_end: __u64,
-pub env_start: __u64,
-pub env_end: __u64,
-pub auxv: *mut __u64,
-pub auxv_size: __u32,
-pub exe_fd: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rand_pool_info {
-pub entropy_count: crate::ctypes::c_int,
-pub buf_size: crate::ctypes::c_int,
-pub buf: __IncompleteArrayField<__u32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_timespec {
-pub tv_sec: __kernel_time64_t,
-pub tv_nsec: crate::ctypes::c_longlong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_itimerspec {
-pub it_interval: __kernel_timespec,
-pub it_value: __kernel_timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timeval {
-pub tv_sec: __kernel_long_t,
-pub tv_usec: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_itimerval {
-pub it_interval: __kernel_old_timeval,
-pub it_value: __kernel_old_timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sock_timeval {
-pub tv_sec: __s64,
-pub tv_usec: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timeval {
-pub tv_sec: __kernel_old_time_t,
-pub tv_usec: __kernel_suseconds_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerspec {
-pub it_interval: timespec,
-pub it_value: timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerval {
-pub it_interval: timeval,
-pub it_value: timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timezone {
-pub tz_minuteswest: crate::ctypes::c_int,
-pub tz_dsttime: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rusage {
-pub ru_utime: __kernel_old_timeval,
-pub ru_stime: __kernel_old_timeval,
-pub ru_maxrss: __kernel_long_t,
-pub ru_ixrss: __kernel_long_t,
-pub ru_idrss: __kernel_long_t,
-pub ru_isrss: __kernel_long_t,
-pub ru_minflt: __kernel_long_t,
-pub ru_majflt: __kernel_long_t,
-pub ru_nswap: __kernel_long_t,
-pub ru_inblock: __kernel_long_t,
-pub ru_oublock: __kernel_long_t,
-pub ru_msgsnd: __kernel_long_t,
-pub ru_msgrcv: __kernel_long_t,
-pub ru_nsignals: __kernel_long_t,
-pub ru_nvcsw: __kernel_long_t,
-pub ru_nivcsw: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit {
-pub rlim_cur: __kernel_ulong_t,
-pub rlim_max: __kernel_ulong_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit64 {
-pub rlim_cur: __u64,
-pub rlim_max: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct clone_args {
-pub flags: __u64,
-pub pidfd: __u64,
-pub child_tid: __u64,
-pub parent_tid: __u64,
-pub exit_signal: __u64,
-pub stack: __u64,
-pub stack_size: __u64,
-pub tls: __u64,
-pub set_tid: __u64,
-pub set_tid_size: __u64,
-pub cgroup: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigset_t {
-pub sig: [crate::ctypes::c_ulong; 1usize],
-}
-pub type old_sigset_t = crate::ctypes::c_ulong;
-pub type __signalfn_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __sighandler_t = __signalfn_t;
-pub type __restorefn_t = ::core::option::Option<unsafe extern "C" fn()>;
-pub type __sigrestore_t = __restorefn_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaction {
-pub sa_handler: __sighandler_t,
-pub sa_flags: crate::ctypes::c_ulong,
-pub sa_mask: sigset_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaltstack {
-pub ss_sp: *mut crate::ctypes::c_void,
-pub ss_flags: crate::ctypes::c_int,
-pub ss_size: __kernel_size_t,
-}
-pub type stack_t = sigaltstack;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigval {
-pub sival_int: crate::ctypes::c_int,
-pub sival_ptr: *mut crate::ctypes::c_void,
-}
-pub type sigval_t = sigval;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields {
-pub _kill: __sifields__bindgen_ty_1,
-pub _timer: __sifields__bindgen_ty_2,
-pub _rt: __sifields__bindgen_ty_3,
-pub _sigchld: __sifields__bindgen_ty_4,
-pub _sigfault: __sifields__bindgen_ty_5,
-pub _sigpoll: __sifields__bindgen_ty_6,
-pub _sigsys: __sifields__bindgen_ty_7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_1 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_2 {
-pub _tid: __kernel_timer_t,
-pub _overrun: crate::ctypes::c_int,
-pub _sigval: sigval_t,
-pub _sys_private: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_3 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _sigval: sigval_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_4 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _status: crate::ctypes::c_int,
-pub _utime: __kernel_clock_t,
-pub _stime: __kernel_clock_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_5 {
-pub _addr: *mut crate::ctypes::c_void,
-pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields__bindgen_ty_5__bindgen_ty_1 {
-pub _trapno: crate::ctypes::c_int,
-pub _addr_lsb: crate::ctypes::c_short,
-pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1,
-pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2,
-pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {
-pub _dummy_bnd: [crate::ctypes::c_char; 8usize],
-pub _lower: *mut crate::ctypes::c_void,
-pub _upper: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 {
-pub _dummy_pkey: [crate::ctypes::c_char; 8usize],
-pub _pkey: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 {
-pub _data: crate::ctypes::c_ulong,
-pub _type: __u32,
-pub _flags: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_6 {
-pub _band: crate::ctypes::c_long,
-pub _fd: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_7 {
-pub _call_addr: *mut crate::ctypes::c_void,
-pub _syscall: crate::ctypes::c_int,
-pub _arch: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union siginfo__bindgen_ty_1 {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1,
-pub _si_pad: [crate::ctypes::c_int; 32usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo__bindgen_ty_1__bindgen_ty_1 {
-pub si_signo: crate::ctypes::c_int,
-pub si_errno: crate::ctypes::c_int,
-pub si_code: crate::ctypes::c_int,
-pub _sifields: __sifields,
-}
-pub type siginfo_t = siginfo;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sigevent {
-pub sigev_value: sigval_t,
-pub sigev_signo: crate::ctypes::c_int,
-pub sigev_notify: crate::ctypes::c_int,
-pub _sigev_un: sigevent__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigevent__bindgen_ty_1 {
-pub _pad: [crate::ctypes::c_int; 12usize],
-pub _tid: crate::ctypes::c_int,
-pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigevent__bindgen_ty_1__bindgen_ty_1 {
-pub _function: ::core::option::Option<unsafe extern "C" fn(arg1: sigval_t)>,
-pub _attribute: *mut crate::ctypes::c_void,
-}
-pub type sigevent_t = sigevent;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx_timestamp {
-pub tv_sec: __s64,
-pub tv_nsec: __u32,
-pub __reserved: __s32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx {
-pub stx_mask: __u32,
-pub stx_blksize: __u32,
-pub stx_attributes: __u64,
-pub stx_nlink: __u32,
-pub stx_uid: __u32,
-pub stx_gid: __u32,
-pub stx_mode: __u16,
-pub __spare0: [__u16; 1usize],
-pub stx_ino: __u64,
-pub stx_size: __u64,
-pub stx_blocks: __u64,
-pub stx_attributes_mask: __u64,
-pub stx_atime: statx_timestamp,
-pub stx_btime: statx_timestamp,
-pub stx_ctime: statx_timestamp,
-pub stx_mtime: statx_timestamp,
-pub stx_rdev_major: __u32,
-pub stx_rdev_minor: __u32,
-pub stx_dev_major: __u32,
-pub stx_dev_minor: __u32,
-pub stx_mnt_id: __u64,
-pub stx_dio_mem_align: __u32,
-pub stx_dio_offset_align: __u32,
-pub __spare3: [__u64; 12usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct sysinfo {
-pub uptime: __kernel_long_t,
-pub loads: [__kernel_ulong_t; 3usize],
-pub totalram: __kernel_ulong_t,
-pub freeram: __kernel_ulong_t,
-pub sharedram: __kernel_ulong_t,
-pub bufferram: __kernel_ulong_t,
-pub totalswap: __kernel_ulong_t,
-pub freeswap: __kernel_ulong_t,
-pub procs: __u16,
-pub pad: __u16,
-pub totalhigh: __kernel_ulong_t,
-pub freehigh: __kernel_ulong_t,
-pub mem_unit: __u32,
-pub _f: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcphdr {
-pub source: __be16,
-pub dest: __be16,
-pub seq: __be32,
-pub ack_seq: __be32,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub window: __be16,
-pub check: __sum16,
-pub urg_ptr: __be16,
-}
-impl tcphdr {
-#[inline]
-pub fn res1(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_res1(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn doff(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_doff(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn fin(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_fin(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn syn(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_syn(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn rst(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_rst(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(10usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn psh(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_psh(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(11usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ack(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ack(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(12usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn urg(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_urg(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(13usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ece(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ece(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(14usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn cwr(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_cwr(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(15usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let res1: u16 = unsafe { ::core::mem::transmute(res1) };
-res1 as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let doff: u16 = unsafe { ::core::mem::transmute(doff) };
-doff as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let fin: u16 = unsafe { ::core::mem::transmute(fin) };
-fin as u64
-});
-__bindgen_bitfield_unit.set(9usize, 1u8, {
-let syn: u16 = unsafe { ::core::mem::transmute(syn) };
-syn as u64
-});
-__bindgen_bitfield_unit.set(10usize, 1u8, {
-let rst: u16 = unsafe { ::core::mem::transmute(rst) };
-rst as u64
-});
-__bindgen_bitfield_unit.set(11usize, 1u8, {
-let psh: u16 = unsafe { ::core::mem::transmute(psh) };
-psh as u64
-});
-__bindgen_bitfield_unit.set(12usize, 1u8, {
-let ack: u16 = unsafe { ::core::mem::transmute(ack) };
-ack as u64
-});
-__bindgen_bitfield_unit.set(13usize, 1u8, {
-let urg: u16 = unsafe { ::core::mem::transmute(urg) };
-urg as u64
-});
-__bindgen_bitfield_unit.set(14usize, 1u8, {
-let ece: u16 = unsafe { ::core::mem::transmute(ece) };
-ece as u64
-});
-__bindgen_bitfield_unit.set(15usize, 1u8, {
-let cwr: u16 = unsafe { ::core::mem::transmute(cwr) };
-cwr as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union tcp_word_hdr {
-pub hdr: tcphdr,
-pub words: [__be32; 5usize],
-}
-pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR;
-pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE;
-pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG;
-pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK;
-pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH;
-pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST;
-pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN;
-pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN;
-pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS;
-pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-TCP_FLAG_CWR = 32768,
-TCP_FLAG_ECE = 16384,
-TCP_FLAG_URG = 8192,
-TCP_FLAG_ACK = 4096,
-TCP_FLAG_PSH = 2048,
-TCP_FLAG_RST = 1024,
-TCP_FLAG_SYN = 512,
-TCP_FLAG_FIN = 256,
-TCP_RESERVED_BITS = 15,
-TCP_DATA_OFFSET = 240,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_opt {
-pub opt_code: __u32,
-pub opt_val: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_window {
-pub snd_wl1: __u32,
-pub snd_wnd: __u32,
-pub max_window: __u32,
-pub rcv_wnd: __u32,
-pub rcv_wup: __u32,
-}
-pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE;
-pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE;
-pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE;
-pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-TCP_NO_QUEUE = 0,
-TCP_RECV_QUEUE = 1,
-TCP_SEND_QUEUE = 2,
-TCP_QUEUES_NR = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_fastopen_client_fail {
-TFO_STATUS_UNSPEC = 0,
-TFO_COOKIE_UNAVAILABLE = 1,
-TFO_DATA_NOT_ACKED = 2,
-TFO_SYN_RETRANSMITTED = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_ca_state {
-TCP_CA_Open = 0,
-TCP_CA_Disorder = 1,
-TCP_CA_CWR = 2,
-TCP_CA_Recovery = 3,
-TCP_CA_Loss = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_info {
-pub tcpi_state: __u8,
-pub tcpi_ca_state: __u8,
-pub tcpi_retransmits: __u8,
-pub tcpi_probes: __u8,
-pub tcpi_backoff: __u8,
-pub tcpi_options: __u8,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub tcpi_rto: __u32,
-pub tcpi_ato: __u32,
-pub tcpi_snd_mss: __u32,
-pub tcpi_rcv_mss: __u32,
-pub tcpi_unacked: __u32,
-pub tcpi_sacked: __u32,
-pub tcpi_lost: __u32,
-pub tcpi_retrans: __u32,
-pub tcpi_fackets: __u32,
-pub tcpi_last_data_sent: __u32,
-pub tcpi_last_ack_sent: __u32,
-pub tcpi_last_data_recv: __u32,
-pub tcpi_last_ack_recv: __u32,
-pub tcpi_pmtu: __u32,
-pub tcpi_rcv_ssthresh: __u32,
-pub tcpi_rtt: __u32,
-pub tcpi_rttvar: __u32,
-pub tcpi_snd_ssthresh: __u32,
-pub tcpi_snd_cwnd: __u32,
-pub tcpi_advmss: __u32,
-pub tcpi_reordering: __u32,
-pub tcpi_rcv_rtt: __u32,
-pub tcpi_rcv_space: __u32,
-pub tcpi_total_retrans: __u32,
-pub tcpi_pacing_rate: __u64,
-pub tcpi_max_pacing_rate: __u64,
-pub tcpi_bytes_acked: __u64,
-pub tcpi_bytes_received: __u64,
-pub tcpi_segs_out: __u32,
-pub tcpi_segs_in: __u32,
-pub tcpi_notsent_bytes: __u32,
-pub tcpi_min_rtt: __u32,
-pub tcpi_data_segs_in: __u32,
-pub tcpi_data_segs_out: __u32,
-pub tcpi_delivery_rate: __u64,
-pub tcpi_busy_time: __u64,
-pub tcpi_rwnd_limited: __u64,
-pub tcpi_sndbuf_limited: __u64,
-pub tcpi_delivered: __u32,
-pub tcpi_delivered_ce: __u32,
-pub tcpi_bytes_sent: __u64,
-pub tcpi_bytes_retrans: __u64,
-pub tcpi_dsack_dups: __u32,
-pub tcpi_reord_seen: __u32,
-pub tcpi_rcv_ooopack: __u32,
-pub tcpi_snd_wnd: __u32,
-pub tcpi_rcv_wnd: __u32,
-pub tcpi_rehash: __u32,
-}
-impl tcp_info {
-#[inline]
-pub fn tcpi_snd_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_snd_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_rcv_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_fastopen_client_fail(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) };
-tcpi_snd_wscale as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) };
-tcpi_rcv_wscale as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) };
-tcpi_delivery_rate_app_limited as u64
-});
-__bindgen_bitfield_unit.set(9usize, 2u8, {
-let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) };
-tcpi_fastopen_client_fail as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD;
-pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY;
-pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED;
-pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED;
-pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT;
-pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS;
-pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE;
-pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE;
-pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND;
-pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING;
-pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT;
-pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS;
-pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT;
-pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE;
-pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE;
-pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH;
-pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED;
-pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE;
-pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT;
-pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS;
-pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS;
-pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN;
-pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT;
-pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH;
-pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT;
-pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
-pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
-pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-TCP_NLA_PAD = 0,
-TCP_NLA_BUSY = 1,
-TCP_NLA_RWND_LIMITED = 2,
-TCP_NLA_SNDBUF_LIMITED = 3,
-TCP_NLA_DATA_SEGS_OUT = 4,
-TCP_NLA_TOTAL_RETRANS = 5,
-TCP_NLA_PACING_RATE = 6,
-TCP_NLA_DELIVERY_RATE = 7,
-TCP_NLA_SND_CWND = 8,
-TCP_NLA_REORDERING = 9,
-TCP_NLA_MIN_RTT = 10,
-TCP_NLA_RECUR_RETRANS = 11,
-TCP_NLA_DELIVERY_RATE_APP_LMT = 12,
-TCP_NLA_SNDQ_SIZE = 13,
-TCP_NLA_CA_STATE = 14,
-TCP_NLA_SND_SSTHRESH = 15,
-TCP_NLA_DELIVERED = 16,
-TCP_NLA_DELIVERED_CE = 17,
-TCP_NLA_BYTES_SENT = 18,
-TCP_NLA_BYTES_RETRANS = 19,
-TCP_NLA_DSACK_DUPS = 20,
-TCP_NLA_REORD_SEEN = 21,
-TCP_NLA_SRTT = 22,
-TCP_NLA_TIMEOUT_REHASH = 23,
-TCP_NLA_BYTES_NOTSENT = 24,
-TCP_NLA_EDT = 25,
-TCP_NLA_TTL = 26,
-TCP_NLA_REHASH = 27,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct tcp_md5sig {
-pub tcpm_addr: __kernel_sockaddr_storage,
-pub tcpm_flags: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_ifindex: crate::ctypes::c_int,
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_diag_md5sig {
-pub tcpm_family: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_addr: [__be32; 4usize],
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_zerocopy_receive {
-pub address: __u64,
-pub length: __u32,
-pub recv_skip_hint: __u32,
-pub inq: __u32,
-pub err: __s32,
-pub copybuf_address: __u64,
-pub copybuf_len: __s32,
-pub flags: __u32,
-pub msg_control: __u64,
-pub msg_controllen: __u64,
-pub msg_flags: __u32,
-pub reserved: __u32,
-}
-pub type cc_t = crate::ctypes::c_uchar;
-pub type speed_t = crate::ctypes::c_uint;
-pub type tcflag_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios2 {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ktermios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct winsize {
-pub ws_row: crate::ctypes::c_ushort,
-pub ws_col: crate::ctypes::c_ushort,
-pub ws_xpixel: crate::ctypes::c_ushort,
-pub ws_ypixel: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termio {
-pub c_iflag: crate::ctypes::c_ushort,
-pub c_oflag: crate::ctypes::c_ushort,
-pub c_cflag: crate::ctypes::c_ushort,
-pub c_lflag: crate::ctypes::c_ushort,
-pub c_line: crate::ctypes::c_uchar,
-pub c_cc: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iovec {
-pub iov_base: *mut crate::ctypes::c_void,
-pub iov_len: __kernel_size_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_un {
-pub sun_family: __kernel_sa_family_t,
-pub sun_path: [crate::ctypes::c_char; 108usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct oldold_utsname {
-pub sysname: [crate::ctypes::c_char; 9usize],
-pub nodename: [crate::ctypes::c_char; 9usize],
-pub release: [crate::ctypes::c_char; 9usize],
-pub version: [crate::ctypes::c_char; 9usize],
-pub machine: [crate::ctypes::c_char; 9usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct old_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct new_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-pub domainname: [crate::ctypes::c_char; 65usize],
-}
-impl membarrier_cmd {
-pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd {
-MEMBARRIER_CMD_QUERY = 0,
-MEMBARRIER_CMD_GLOBAL = 1,
-MEMBARRIER_CMD_GLOBAL_EXPEDITED = 2,
-MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = 4,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED = 8,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = 16,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = 32,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = 64,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = 128,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = 256,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd_flag {
-MEMBARRIER_CMD_FLAG_CPU = 1,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg {
-pub event: __u8,
-pub reserved1: __u8,
-pub reserved2: __u16,
-pub reserved3: __u32,
-pub arg: uffd_msg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1 {
-pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1,
-pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2,
-pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3,
-pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4,
-pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 {
-pub flags: __u64,
-pub address: __u64,
-pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {
-pub ptid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 {
-pub ufd: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 {
-pub from: __u64,
-pub to: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 {
-pub start: __u64,
-pub end: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 {
-pub reserved1: __u64,
-pub reserved2: __u64,
-pub reserved3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_api {
-pub api: __u64,
-pub features: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_range {
-pub start: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_register {
-pub range: uffdio_range,
-pub mode: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_copy {
-pub dst: __u64,
-pub src: __u64,
-pub len: __u64,
-pub mode: __u64,
-pub copy: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_zeropage {
-pub range: uffdio_range,
-pub mode: __u64,
-pub zeropage: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_writeprotect {
-pub range: uffdio_range,
-pub mode: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_continue {
-pub range: uffdio_range,
-pub mode: __u64,
-pub mapped: __s64,
-}
-#[repr(C)]
-pub struct io_uring_sqe {
-pub opcode: __u8,
-pub flags: __u8,
-pub ioprio: __u16,
-pub fd: __s32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1,
-pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2,
-pub len: __u32,
-pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3,
-pub user_data: __u64,
-pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4,
-pub personality: __u16,
-pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5,
-pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_1 {
-pub off: __u64,
-pub addr2: __u64,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 {
-pub cmd_op: __u32,
-pub __pad1: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_2 {
-pub addr: __u64,
-pub splice_off_in: __u64,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_3 {
-pub rw_flags: __kernel_rwf_t,
-pub fsync_flags: __u32,
-pub poll_events: __u16,
-pub poll32_events: __u32,
-pub sync_range_flags: __u32,
-pub msg_flags: __u32,
-pub timeout_flags: __u32,
-pub accept_flags: __u32,
-pub cancel_flags: __u32,
-pub open_flags: __u32,
-pub statx_flags: __u32,
-pub fadvise_advice: __u32,
-pub splice_flags: __u32,
-pub rename_flags: __u32,
-pub unlink_flags: __u32,
-pub hardlink_flags: __u32,
-pub xattr_flags: __u32,
-pub msg_ring_flags: __u32,
-pub uring_cmd_flags: __u32,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_4 {
-pub buf_index: __u16,
-pub buf_group: __u16,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_5 {
-pub splice_fd_in: __s32,
-pub file_index: __u32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 {
-pub addr_len: __u16,
-pub __pad3: [__u16; 1usize],
-}
-#[repr(C)]
-pub struct io_uring_sqe__bindgen_ty_6 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_sqe__bindgen_ty_6__bindgen_ty_1>,
-pub cmd: __BindgenUnionField<[__u8; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 {
-pub addr3: __u64,
-pub __pad2: [__u64; 1usize],
-}
-pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT;
-pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT;
-pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT;
-pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT;
-pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT;
-pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT;
-pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-IOSQE_FIXED_FILE_BIT = 0,
-IOSQE_IO_DRAIN_BIT = 1,
-IOSQE_IO_LINK_BIT = 2,
-IOSQE_IO_HARDLINK_BIT = 3,
-IOSQE_ASYNC_BIT = 4,
-IOSQE_BUFFER_SELECT_BIT = 5,
-IOSQE_CQE_SKIP_SUCCESS_BIT = 6,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum io_uring_op {
-IORING_OP_NOP = 0,
-IORING_OP_READV = 1,
-IORING_OP_WRITEV = 2,
-IORING_OP_FSYNC = 3,
-IORING_OP_READ_FIXED = 4,
-IORING_OP_WRITE_FIXED = 5,
-IORING_OP_POLL_ADD = 6,
-IORING_OP_POLL_REMOVE = 7,
-IORING_OP_SYNC_FILE_RANGE = 8,
-IORING_OP_SENDMSG = 9,
-IORING_OP_RECVMSG = 10,
-IORING_OP_TIMEOUT = 11,
-IORING_OP_TIMEOUT_REMOVE = 12,
-IORING_OP_ACCEPT = 13,
-IORING_OP_ASYNC_CANCEL = 14,
-IORING_OP_LINK_TIMEOUT = 15,
-IORING_OP_CONNECT = 16,
-IORING_OP_FALLOCATE = 17,
-IORING_OP_OPENAT = 18,
-IORING_OP_CLOSE = 19,
-IORING_OP_FILES_UPDATE = 20,
-IORING_OP_STATX = 21,
-IORING_OP_READ = 22,
-IORING_OP_WRITE = 23,
-IORING_OP_FADVISE = 24,
-IORING_OP_MADVISE = 25,
-IORING_OP_SEND = 26,
-IORING_OP_RECV = 27,
-IORING_OP_OPENAT2 = 28,
-IORING_OP_EPOLL_CTL = 29,
-IORING_OP_SPLICE = 30,
-IORING_OP_PROVIDE_BUFFERS = 31,
-IORING_OP_REMOVE_BUFFERS = 32,
-IORING_OP_TEE = 33,
-IORING_OP_SHUTDOWN = 34,
-IORING_OP_RENAMEAT = 35,
-IORING_OP_UNLINKAT = 36,
-IORING_OP_MKDIRAT = 37,
-IORING_OP_SYMLINKAT = 38,
-IORING_OP_LINKAT = 39,
-IORING_OP_MSG_RING = 40,
-IORING_OP_FSETXATTR = 41,
-IORING_OP_SETXATTR = 42,
-IORING_OP_FGETXATTR = 43,
-IORING_OP_GETXATTR = 44,
-IORING_OP_SOCKET = 45,
-IORING_OP_URING_CMD = 46,
-IORING_OP_SEND_ZC = 47,
-IORING_OP_SENDMSG_ZC = 48,
-IORING_OP_LAST = 49,
-}
-pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA;
-pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IORING_MSG_DATA = 0,
-IORING_MSG_SEND_FD = 1,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_cqe {
-pub user_data: __u64,
-pub res: __s32,
-pub flags: __u32,
-pub big_cqe: __IncompleteArrayField<__u64>,
-}
-pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IORING_CQE_BUFFER_SHIFT = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_sqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub flags: __u32,
-pub dropped: __u32,
-pub array: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_cqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub overflow: __u32,
-pub cqes: __u32,
-pub flags: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_params {
-pub sq_entries: __u32,
-pub cq_entries: __u32,
-pub flags: __u32,
-pub sq_thread_cpu: __u32,
-pub sq_thread_idle: __u32,
-pub features: __u32,
-pub wq_fd: __u32,
-pub resv: [__u32; 3usize],
-pub sq_off: io_sqring_offsets,
-pub cq_off: io_cqring_offsets,
-}
-pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS;
-pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS;
-pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES;
-pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES;
-pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD;
-pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD;
-pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE;
-pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC;
-pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE;
-pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY;
-pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY;
-pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS;
-pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS;
-pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2;
-pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2;
-pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2;
-pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE;
-pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF;
-pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF;
-pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS;
-pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS;
-pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS;
-pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING;
-pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING;
-pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL;
-pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE;
-pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IORING_REGISTER_BUFFERS = 0,
-IORING_UNREGISTER_BUFFERS = 1,
-IORING_REGISTER_FILES = 2,
-IORING_UNREGISTER_FILES = 3,
-IORING_REGISTER_EVENTFD = 4,
-IORING_UNREGISTER_EVENTFD = 5,
-IORING_REGISTER_FILES_UPDATE = 6,
-IORING_REGISTER_EVENTFD_ASYNC = 7,
-IORING_REGISTER_PROBE = 8,
-IORING_REGISTER_PERSONALITY = 9,
-IORING_UNREGISTER_PERSONALITY = 10,
-IORING_REGISTER_RESTRICTIONS = 11,
-IORING_REGISTER_ENABLE_RINGS = 12,
-IORING_REGISTER_FILES2 = 13,
-IORING_REGISTER_FILES_UPDATE2 = 14,
-IORING_REGISTER_BUFFERS2 = 15,
-IORING_REGISTER_BUFFERS_UPDATE = 16,
-IORING_REGISTER_IOWQ_AFF = 17,
-IORING_UNREGISTER_IOWQ_AFF = 18,
-IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
-IORING_REGISTER_RING_FDS = 20,
-IORING_UNREGISTER_RING_FDS = 21,
-IORING_REGISTER_PBUF_RING = 22,
-IORING_UNREGISTER_PBUF_RING = 23,
-IORING_REGISTER_SYNC_CANCEL = 24,
-IORING_REGISTER_FILE_ALLOC_RANGE = 25,
-IORING_REGISTER_LAST = 26,
-}
-pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND;
-pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IO_WQ_BOUND = 0,
-IO_WQ_UNBOUND = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_files_update {
-pub offset: __u32,
-pub resv: __u32,
-pub fds: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_register {
-pub nr: __u32,
-pub flags: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub tags: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update2 {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-pub tags: __u64,
-pub nr: __u32,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_slot {
-pub tag: __u64,
-pub resv: [__u64; 3usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_register {
-pub nr_slots: __u32,
-pub resv: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub resv3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_probe_op {
-pub op: __u8,
-pub resv: __u8,
-pub flags: __u16,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_probe {
-pub last_op: __u8,
-pub ops_len: __u8,
-pub resv: __u16,
-pub resv2: [__u32; 3usize],
-pub ops: __IncompleteArrayField<io_uring_probe_op>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct io_uring_restriction {
-pub opcode: __u16,
-pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1,
-pub resv: __u8,
-pub resv2: [__u32; 3usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_restriction__bindgen_ty_1 {
-pub register_op: __u8,
-pub sqe_op: __u8,
-pub sqe_flags: __u8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf {
-pub addr: __u64,
-pub len: __u32,
-pub bid: __u16,
-pub resv: __u16,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring {
-pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1>,
-pub bufs: __BindgenUnionField<[io_uring_buf; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 {
-pub resv1: __u64,
-pub resv2: __u32,
-pub resv3: __u16,
-pub tail: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_reg {
-pub ring_addr: __u64,
-pub ring_entries: __u32,
-pub bgid: __u16,
-pub pad: __u16,
-pub resv: [__u64; 3usize],
-}
-pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP;
-pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP;
-pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED;
-pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED;
-pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IORING_RESTRICTION_REGISTER_OP = 0,
-IORING_RESTRICTION_SQE_OP = 1,
-IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2,
-IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3,
-IORING_RESTRICTION_LAST = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_getevents_arg {
-pub sigmask: __u64,
-pub sigmask_sz: __u32,
-pub pad: __u32,
-pub ts: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sync_cancel_reg {
-pub addr: __u64,
-pub fd: __s32,
-pub flags: __u32,
-pub timeout: __kernel_timespec,
-pub pad: [__u64; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_file_index_range {
-pub off: __u32,
-pub len: __u32,
-pub resv: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_recvmsg_out {
-pub namelen: __u32,
-pub controllen: __u32,
-pub payloadlen: __u32,
-pub flags: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr {
-pub __storage: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct linger {
-pub l_onoff: crate::ctypes::c_int,
-pub l_linger: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct linux_dirent64 {
-pub d_ino: crate::ctypes::c_ulong,
-pub d_off: crate::ctypes::c_long,
-pub d_reclen: __u16,
-pub d_type: __u8,
-pub d_name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-pub type socklen_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct stat {
-pub st_dev: crate::ctypes::c_ulong,
-pub st_ino: crate::ctypes::c_ulong,
-pub st_mode: crate::ctypes::c_uint,
-pub st_nlink: crate::ctypes::c_uint,
-pub st_uid: crate::ctypes::c_uint,
-pub st_gid: crate::ctypes::c_uint,
-pub st_rdev: crate::ctypes::c_ulong,
-pub __pad1: crate::ctypes::c_ulong,
-pub st_size: crate::ctypes::c_long,
-pub st_blksize: crate::ctypes::c_int,
-pub __pad2: crate::ctypes::c_int,
-pub st_blocks: crate::ctypes::c_long,
-pub st_atime: crate::ctypes::c_long,
-pub st_atime_nsec: crate::ctypes::c_ulong,
-pub st_mtime: crate::ctypes::c_long,
-pub st_mtime_nsec: crate::ctypes::c_ulong,
-pub st_ctime: crate::ctypes::c_long,
-pub st_ctime_nsec: crate::ctypes::c_ulong,
-pub __unused4: crate::ctypes::c_uint,
-pub __unused5: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs {
-pub f_type: __kernel_long_t,
-pub f_bsize: __kernel_long_t,
-pub f_blocks: __kernel_long_t,
-pub f_bfree: __kernel_long_t,
-pub f_bavail: __kernel_long_t,
-pub f_files: __kernel_long_t,
-pub f_ffree: __kernel_long_t,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __kernel_long_t,
-pub f_frsize: __kernel_long_t,
-pub f_flags: __kernel_long_t,
-pub f_spare: [__kernel_long_t; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs64 {
-pub f_type: __kernel_long_t,
-pub f_bsize: __kernel_long_t,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __kernel_long_t,
-pub f_frsize: __kernel_long_t,
-pub f_flags: __kernel_long_t,
-pub f_spare: [__kernel_long_t; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct compat_statfs64 {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-pub type __fsword_t = __kernel_long_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct user_desc {
-pub entry_number: crate::ctypes::c_uint,
-pub base_addr: crate::ctypes::c_uint,
-pub limit: crate::ctypes::c_uint,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub __bindgen_padding_0: [u8; 3usize],
-}
-impl user_desc {
-#[inline]
-pub fn seg_32bit(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_32bit(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn contents(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 2u8) as u32) }
-}
-#[inline]
-pub fn set_contents(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(1usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn read_exec_only(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_read_exec_only(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(3usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn limit_in_pages(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_limit_in_pages(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn seg_not_present(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_not_present(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(5usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn useable(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_useable(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(6usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(seg_32bit: crate::ctypes::c_uint, contents: crate::ctypes::c_uint, read_exec_only: crate::ctypes::c_uint, limit_in_pages: crate::ctypes::c_uint, seg_not_present: crate::ctypes::c_uint, useable: crate::ctypes::c_uint) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 1u8, {
-let seg_32bit: u32 = unsafe { ::core::mem::transmute(seg_32bit) };
-seg_32bit as u64
-});
-__bindgen_bitfield_unit.set(1usize, 2u8, {
-let contents: u32 = unsafe { ::core::mem::transmute(contents) };
-contents as u64
-});
-__bindgen_bitfield_unit.set(3usize, 1u8, {
-let read_exec_only: u32 = unsafe { ::core::mem::transmute(read_exec_only) };
-read_exec_only as u64
-});
-__bindgen_bitfield_unit.set(4usize, 1u8, {
-let limit_in_pages: u32 = unsafe { ::core::mem::transmute(limit_in_pages) };
-limit_in_pages as u64
-});
-__bindgen_bitfield_unit.set(5usize, 1u8, {
-let seg_not_present: u32 = unsafe { ::core::mem::transmute(seg_not_present) };
-seg_not_present as u64
-});
-__bindgen_bitfield_unit.set(6usize, 1u8, {
-let useable: u32 = unsafe { ::core::mem::transmute(useable) };
-useable as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct msghdr {
-pub msg_name: *mut crate::ctypes::c_void,
-pub msg_namelen: crate::ctypes::c_int,
-pub msg_iov: *mut iovec,
-pub msg_iovlen: size_t,
-pub msg_control: *mut crate::ctypes::c_void,
-pub msg_controllen: size_t,
-pub msg_flags: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct cmsghdr {
-pub cmsg_len: size_t,
-pub cmsg_level: crate::ctypes::c_int,
-pub cmsg_type: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ucred {
-pub pid: __u32,
-pub uid: __u32,
-pub gid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mmsghdr {
-pub msg_hdr: msghdr,
-pub msg_len: crate::ctypes::c_uint,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/loongarch64/ioctl.rs b/vendor/linux-raw-sys-0.3.2/src/loongarch64/ioctl.rs
deleted file mode 100644
index 1b6c25e1f..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/loongarch64/ioctl.rs
+++ /dev/null
@@ -1,1465 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const FIONREAD: u32 = 21531;
-pub const FIONBIO: u32 = 21537;
-pub const FIOCLEX: u32 = 21585;
-pub const FIONCLEX: u32 = 21584;
-pub const FIOASYNC: u32 = 21586;
-pub const FIOQSIZE: u32 = 21600;
-pub const TCXONC: u32 = 21514;
-pub const TCFLSH: u32 = 21515;
-pub const TIOCSCTTY: u32 = 21518;
-pub const TIOCSPGRP: u32 = 21520;
-pub const TIOCOUTQ: u32 = 21521;
-pub const TIOCSTI: u32 = 21522;
-pub const TIOCSWINSZ: u32 = 21524;
-pub const TIOCMGET: u32 = 21525;
-pub const TIOCMBIS: u32 = 21526;
-pub const TIOCMBIC: u32 = 21527;
-pub const TIOCMSET: u32 = 21528;
-pub const TIOCSSOFTCAR: u32 = 21530;
-pub const TIOCLINUX: u32 = 21532;
-pub const TIOCCONS: u32 = 21533;
-pub const TIOCSSERIAL: u32 = 21535;
-pub const TIOCPKT: u32 = 21536;
-pub const TIOCNOTTY: u32 = 21538;
-pub const TIOCSETD: u32 = 21539;
-pub const TIOCSBRK: u32 = 21543;
-pub const TIOCCBRK: u32 = 21544;
-pub const TIOCSRS485: u32 = 21551;
-pub const TIOCSPTLCK: u32 = 1074025521;
-pub const TIOCSIG: u32 = 1074025526;
-pub const TIOCVHANGUP: u32 = 21559;
-pub const TIOCSERCONFIG: u32 = 21587;
-pub const TIOCSERGWILD: u32 = 21588;
-pub const TIOCSERSWILD: u32 = 21589;
-pub const TIOCSLCKTRMIOS: u32 = 21591;
-pub const TIOCSERGSTRUCT: u32 = 21592;
-pub const TIOCSERGETLSR: u32 = 21593;
-pub const TIOCSERGETMULTI: u32 = 21594;
-pub const TIOCSERSETMULTI: u32 = 21595;
-pub const TIOCMIWAIT: u32 = 21596;
-pub const TCGETS: u32 = 21505;
-pub const TCGETA: u32 = 21509;
-pub const TCSBRK: u32 = 21513;
-pub const TCSBRKP: u32 = 21541;
-pub const TCSETA: u32 = 21510;
-pub const TCSETAF: u32 = 21512;
-pub const TCSETAW: u32 = 21511;
-pub const TIOCEXCL: u32 = 21516;
-pub const TIOCNXCL: u32 = 21517;
-pub const TIOCGDEV: u32 = 2147767346;
-pub const TIOCGEXCL: u32 = 2147767360;
-pub const TIOCGICOUNT: u32 = 21597;
-pub const TIOCGLCKTRMIOS: u32 = 21590;
-pub const TIOCGPGRP: u32 = 21519;
-pub const TIOCGPKT: u32 = 2147767352;
-pub const TIOCGPTLCK: u32 = 2147767353;
-pub const TIOCGPTN: u32 = 2147767344;
-pub const TIOCGPTPEER: u32 = 21569;
-pub const TIOCGRS485: u32 = 21550;
-pub const TIOCGSERIAL: u32 = 21534;
-pub const TIOCGSID: u32 = 21545;
-pub const TIOCGSOFTCAR: u32 = 21529;
-pub const TIOCGWINSZ: u32 = 21523;
-pub const TCGETS2: u32 = 2150388778;
-pub const TCGETX: u32 = 21554;
-pub const TCSETS: u32 = 21506;
-pub const TCSETS2: u32 = 1076646955;
-pub const TCSETSF: u32 = 21508;
-pub const TCSETSF2: u32 = 1076646957;
-pub const TCSETSW: u32 = 21507;
-pub const TCSETSW2: u32 = 1076646956;
-pub const TCSETX: u32 = 21555;
-pub const TCSETXF: u32 = 21556;
-pub const TCSETXW: u32 = 21557;
-pub const TIOCGETD: u32 = 21540;
-pub const MTIOCGET: u32 = 2150657282;
-pub const BLKSSZGET: u32 = 4712;
-pub const BLKPBSZGET: u32 = 4731;
-pub const BLKROSET: u32 = 4701;
-pub const BLKROGET: u32 = 4702;
-pub const BLKRRPART: u32 = 4703;
-pub const BLKGETSIZE: u32 = 4704;
-pub const BLKFLSBUF: u32 = 4705;
-pub const BLKRASET: u32 = 4706;
-pub const BLKRAGET: u32 = 4707;
-pub const BLKFRASET: u32 = 4708;
-pub const BLKFRAGET: u32 = 4709;
-pub const BLKSECTSET: u32 = 4710;
-pub const BLKSECTGET: u32 = 4711;
-pub const BLKPG: u32 = 4713;
-pub const BLKBSZGET: u32 = 2148012656;
-pub const BLKBSZSET: u32 = 1074270833;
-pub const BLKGETSIZE64: u32 = 2148012658;
-pub const BLKTRACESETUP: u32 = 3225948787;
-pub const BLKTRACESTART: u32 = 4724;
-pub const BLKTRACESTOP: u32 = 4725;
-pub const BLKTRACETEARDOWN: u32 = 4726;
-pub const BLKDISCARD: u32 = 4727;
-pub const BLKIOMIN: u32 = 4728;
-pub const BLKIOOPT: u32 = 4729;
-pub const BLKALIGNOFF: u32 = 4730;
-pub const BLKDISCARDZEROES: u32 = 4732;
-pub const BLKSECDISCARD: u32 = 4733;
-pub const BLKROTATIONAL: u32 = 4734;
-pub const BLKZEROOUT: u32 = 4735;
-pub const UFFDIO_REGISTER: u32 = 3223366144;
-pub const UFFDIO_UNREGISTER: u32 = 2148575745;
-pub const UFFDIO_WAKE: u32 = 2148575746;
-pub const UFFDIO_COPY: u32 = 3223890435;
-pub const UFFDIO_ZEROPAGE: u32 = 3223366148;
-pub const UFFDIO_WRITEPROTECT: u32 = 3222841862;
-pub const UFFDIO_API: u32 = 3222841919;
-pub const NS_GET_USERNS: u32 = 46849;
-pub const NS_GET_PARENT: u32 = 46850;
-pub const NS_GET_NSTYPE: u32 = 46851;
-pub const KDGETLED: u32 = 19249;
-pub const KDSETLED: u32 = 19250;
-pub const KDGKBLED: u32 = 19300;
-pub const KDSKBLED: u32 = 19301;
-pub const KDGKBTYPE: u32 = 19251;
-pub const KDADDIO: u32 = 19252;
-pub const KDDELIO: u32 = 19253;
-pub const KDENABIO: u32 = 19254;
-pub const KDDISABIO: u32 = 19255;
-pub const KDSETMODE: u32 = 19258;
-pub const KDGETMODE: u32 = 19259;
-pub const KDMKTONE: u32 = 19248;
-pub const KIOCSOUND: u32 = 19247;
-pub const GIO_CMAP: u32 = 19312;
-pub const PIO_CMAP: u32 = 19313;
-pub const GIO_FONT: u32 = 19296;
-pub const GIO_FONTX: u32 = 19307;
-pub const PIO_FONT: u32 = 19297;
-pub const PIO_FONTX: u32 = 19308;
-pub const PIO_FONTRESET: u32 = 19309;
-pub const GIO_SCRNMAP: u32 = 19264;
-pub const GIO_UNISCRNMAP: u32 = 19305;
-pub const PIO_SCRNMAP: u32 = 19265;
-pub const PIO_UNISCRNMAP: u32 = 19306;
-pub const GIO_UNIMAP: u32 = 19302;
-pub const PIO_UNIMAP: u32 = 19303;
-pub const PIO_UNIMAPCLR: u32 = 19304;
-pub const KDGKBMODE: u32 = 19268;
-pub const KDSKBMODE: u32 = 19269;
-pub const KDGKBMETA: u32 = 19298;
-pub const KDSKBMETA: u32 = 19299;
-pub const KDGKBENT: u32 = 19270;
-pub const KDSKBENT: u32 = 19271;
-pub const KDGKBSENT: u32 = 19272;
-pub const KDSKBSENT: u32 = 19273;
-pub const KDGKBDIACR: u32 = 19274;
-pub const KDGETKEYCODE: u32 = 19276;
-pub const KDSETKEYCODE: u32 = 19277;
-pub const KDSIGACCEPT: u32 = 19278;
-pub const VT_OPENQRY: u32 = 22016;
-pub const VT_GETMODE: u32 = 22017;
-pub const VT_SETMODE: u32 = 22018;
-pub const VT_GETSTATE: u32 = 22019;
-pub const VT_RELDISP: u32 = 22021;
-pub const VT_ACTIVATE: u32 = 22022;
-pub const VT_WAITACTIVE: u32 = 22023;
-pub const VT_DISALLOCATE: u32 = 22024;
-pub const VT_RESIZE: u32 = 22025;
-pub const VT_RESIZEX: u32 = 22026;
-pub const FIOSETOWN: u32 = 35073;
-pub const SIOCSPGRP: u32 = 35074;
-pub const FIOGETOWN: u32 = 35075;
-pub const SIOCGPGRP: u32 = 35076;
-pub const SIOCATMARK: u32 = 35077;
-pub const SIOCGSTAMP: u32 = 35078;
-pub const TIOCINQ: u32 = 21531;
-pub const SIOCADDRT: u32 = 35083;
-pub const SIOCDELRT: u32 = 35084;
-pub const SIOCGIFNAME: u32 = 35088;
-pub const SIOCSIFLINK: u32 = 35089;
-pub const SIOCGIFCONF: u32 = 35090;
-pub const SIOCGIFFLAGS: u32 = 35091;
-pub const SIOCSIFFLAGS: u32 = 35092;
-pub const SIOCGIFADDR: u32 = 35093;
-pub const SIOCSIFADDR: u32 = 35094;
-pub const SIOCGIFDSTADDR: u32 = 35095;
-pub const SIOCSIFDSTADDR: u32 = 35096;
-pub const SIOCGIFBRDADDR: u32 = 35097;
-pub const SIOCSIFBRDADDR: u32 = 35098;
-pub const SIOCGIFNETMASK: u32 = 35099;
-pub const SIOCSIFNETMASK: u32 = 35100;
-pub const SIOCGIFMETRIC: u32 = 35101;
-pub const SIOCSIFMETRIC: u32 = 35102;
-pub const SIOCGIFMEM: u32 = 35103;
-pub const SIOCSIFMEM: u32 = 35104;
-pub const SIOCGIFMTU: u32 = 35105;
-pub const SIOCSIFMTU: u32 = 35106;
-pub const SIOCSIFHWADDR: u32 = 35108;
-pub const SIOCGIFENCAP: u32 = 35109;
-pub const SIOCSIFENCAP: u32 = 35110;
-pub const SIOCGIFHWADDR: u32 = 35111;
-pub const SIOCGIFSLAVE: u32 = 35113;
-pub const SIOCSIFSLAVE: u32 = 35120;
-pub const SIOCADDMULTI: u32 = 35121;
-pub const SIOCDELMULTI: u32 = 35122;
-pub const SIOCDARP: u32 = 35155;
-pub const SIOCGARP: u32 = 35156;
-pub const SIOCSARP: u32 = 35157;
-pub const SIOCDRARP: u32 = 35168;
-pub const SIOCGRARP: u32 = 35169;
-pub const SIOCSRARP: u32 = 35170;
-pub const SIOCGIFMAP: u32 = 35184;
-pub const SIOCSIFMAP: u32 = 35185;
-pub const SIOCRTMSG: u32 = 35085;
-pub const SIOCSIFNAME: u32 = 35107;
-pub const SIOCGIFINDEX: u32 = 35123;
-pub const SIOGIFINDEX: u32 = 35123;
-pub const SIOCSIFPFLAGS: u32 = 35124;
-pub const SIOCGIFPFLAGS: u32 = 35125;
-pub const SIOCDIFADDR: u32 = 35126;
-pub const SIOCSIFHWBROADCAST: u32 = 35127;
-pub const SIOCGIFCOUNT: u32 = 35128;
-pub const SIOCGIFBR: u32 = 35136;
-pub const SIOCSIFBR: u32 = 35137;
-pub const SIOCGIFTXQLEN: u32 = 35138;
-pub const SIOCSIFTXQLEN: u32 = 35139;
-pub const SIOCADDDLCI: u32 = 35200;
-pub const SIOCDELDLCI: u32 = 35201;
-pub const SIOCDEVPRIVATE: u32 = 35312;
-pub const SIOCPROTOPRIVATE: u32 = 35296;
-pub const FIBMAP: u32 = 1;
-pub const FIGETBSZ: u32 = 2;
-pub const FIFREEZE: u32 = 3221510263;
-pub const FITHAW: u32 = 3221510264;
-pub const FITRIM: u32 = 3222820985;
-pub const FICLONE: u32 = 1074041865;
-pub const FICLONERANGE: u32 = 1075876877;
-pub const FIDEDUPERANGE: u32 = 3222836278;
-pub const FS_IOC_GETFLAGS: u32 = 2148034049;
-pub const FS_IOC_SETFLAGS: u32 = 1074292226;
-pub const FS_IOC_GETVERSION: u32 = 2148038145;
-pub const FS_IOC_SETVERSION: u32 = 1074296322;
-pub const FS_IOC_FIEMAP: u32 = 3223348747;
-pub const FS_IOC32_GETFLAGS: u32 = 2147771905;
-pub const FS_IOC32_SETFLAGS: u32 = 1074030082;
-pub const FS_IOC32_GETVERSION: u32 = 2147776001;
-pub const FS_IOC32_SETVERSION: u32 = 1074034178;
-pub const FS_IOC_FSGETXATTR: u32 = 2149341215;
-pub const FS_IOC_FSSETXATTR: u32 = 1075599392;
-pub const FS_IOC_GETFSLABEL: u32 = 2164298801;
-pub const FS_IOC_SETFSLABEL: u32 = 1090556978;
-pub const VIDIOC_SUBDEV_QUERYSTD: u32 = 2148030015;
-pub const AUTOFS_DEV_IOCTL_CLOSEMOUNT: u32 = 3222836085;
-pub const LIRC_SET_SEND_CARRIER: u32 = 1074030867;
-pub const AUTOFS_IOC_PROTOSUBVER: u32 = 2147783527;
-pub const PTP_SYS_OFFSET_PRECISE: u32 = 3225435400;
-pub const FSI_SCOM_WRITE: u32 = 3223352066;
-pub const ATM_GETCIRANGE: u32 = 1074815370;
-pub const DMA_BUF_SET_NAME_B: u32 = 1074291201;
-pub const RIO_CM_EP_GET_LIST_SIZE: u32 = 3221512961;
-pub const TUNSETPERSIST: u32 = 1074025675;
-pub const FS_IOC_GET_ENCRYPTION_POLICY: u32 = 1074554389;
-pub const CEC_RECEIVE: u32 = 3224920326;
-pub const MGSL_IOCGPARAMS: u32 = 2150657281;
-pub const ENI_SETMULT: u32 = 1074815335;
-pub const RIO_GET_EVENT_MASK: u32 = 2147773710;
-pub const LIRC_GET_MAX_TIMEOUT: u32 = 2147772681;
-pub const USBDEVFS_CLAIMINTERFACE: u32 = 2147767567;
-pub const CHIOMOVE: u32 = 1075077889;
-pub const SONYPI_IOCGBATFLAGS: u32 = 2147579399;
-pub const BTRFS_IOC_SYNC: u32 = 37896;
-pub const VIDIOC_TRY_FMT: u32 = 3234879040;
-pub const LIRC_SET_REC_MODE: u32 = 1074030866;
-pub const VIDIOC_DQEVENT: u32 = 2156418649;
-pub const RPMSG_DESTROY_EPT_IOCTL: u32 = 46338;
-pub const UVCIOC_CTRL_MAP: u32 = 3227546912;
-pub const VHOST_SET_BACKEND_FEATURES: u32 = 1074310949;
-pub const VHOST_VSOCK_SET_GUEST_CID: u32 = 1074311008;
-pub const UI_SET_KEYBIT: u32 = 1074025829;
-pub const LIRC_SET_REC_TIMEOUT: u32 = 1074030872;
-pub const FS_IOC_GET_ENCRYPTION_KEY_STATUS: u32 = 3229640218;
-pub const BTRFS_IOC_TREE_SEARCH_V2: u32 = 3228603409;
-pub const VHOST_SET_VRING_BASE: u32 = 1074310930;
-pub const RIO_ENABLE_DOORBELL_RANGE: u32 = 1074294025;
-pub const VIDIOC_TRY_EXT_CTRLS: u32 = 3223344713;
-pub const LIRC_GET_REC_MODE: u32 = 2147772674;
-pub const PPGETTIME: u32 = 2148561045;
-pub const BTRFS_IOC_RM_DEV: u32 = 1342215179;
-pub const ATM_SETBACKEND: u32 = 1073897970;
-pub const FSL_HV_IOCTL_PARTITION_START: u32 = 3222318851;
-pub const FBIO_WAITEVENT: u32 = 18056;
-pub const SWITCHTEC_IOCTL_PORT_TO_PFF: u32 = 3222034245;
-pub const NVME_IOCTL_IO_CMD: u32 = 3225964099;
-pub const IPMICTL_RECEIVE_MSG_TRUNC: u32 = 3224398091;
-pub const FDTWADDLE: u32 = 601;
-pub const NVME_IOCTL_SUBMIT_IO: u32 = 1076907586;
-pub const NILFS_IOCTL_SYNC: u32 = 2148036234;
-pub const VIDIOC_SUBDEV_S_DV_TIMINGS: u32 = 3229898327;
-pub const ASPEED_LPC_CTRL_IOCTL_GET_SIZE: u32 = 3222319616;
-pub const DM_DEV_STATUS: u32 = 3241737479;
-pub const TEE_IOC_CLOSE_SESSION: u32 = 2147787781;
-pub const NS_GETPSTAT: u32 = 3222298977;
-pub const UI_SET_PROPBIT: u32 = 1074025838;
-pub const TUNSETFILTEREBPF: u32 = 2147767521;
-pub const RIO_MPORT_MAINT_COMPTAG_SET: u32 = 1074031874;
-pub const AUTOFS_DEV_IOCTL_VERSION: u32 = 3222836081;
-pub const WDIOC_SETOPTIONS: u32 = 2147768068;
-pub const VHOST_SCSI_SET_ENDPOINT: u32 = 1088991040;
-pub const MGSL_IOCGTXIDLE: u32 = 27907;
-pub const ATM_ADDLECSADDR: u32 = 1074815374;
-pub const FSL_HV_IOCTL_GETPROP: u32 = 3223891719;
-pub const FDGETPRM: u32 = 2149581316;
-pub const HIDIOCAPPLICATION: u32 = 18434;
-pub const ENI_MEMDUMP: u32 = 1074815328;
-pub const PTP_SYS_OFFSET2: u32 = 1128283406;
-pub const VIDIOC_SUBDEV_G_DV_TIMINGS: u32 = 3229898328;
-pub const DMA_BUF_SET_NAME_A: u32 = 1074029057;
-pub const PTP_PIN_GETFUNC: u32 = 3227532550;
-pub const PTP_SYS_OFFSET_EXTENDED: u32 = 3300932873;
-pub const DFL_FPGA_PORT_UINT_SET_IRQ: u32 = 1074312776;
-pub const RTC_EPOCH_READ: u32 = 2148036621;
-pub const VIDIOC_SUBDEV_S_SELECTION: u32 = 3225441854;
-pub const VIDIOC_QUERY_EXT_CTRL: u32 = 3236451943;
-pub const ATM_GETLECSADDR: u32 = 1074815376;
-pub const FSL_HV_IOCTL_PARTITION_STOP: u32 = 3221794564;
-pub const SONET_GETDIAG: u32 = 2147770644;
-pub const ATMMPC_DATA: u32 = 25049;
-pub const IPMICTL_UNREGISTER_FOR_CMD_CHANS: u32 = 2148296989;
-pub const HIDIOCGCOLLECTIONINDEX: u32 = 1075333136;
-pub const RPMSG_CREATE_EPT_IOCTL: u32 = 1076409601;
-pub const GPIOHANDLE_GET_LINE_VALUES_IOCTL: u32 = 3225465864;
-pub const UI_DEV_SETUP: u32 = 1079792899;
-pub const ISST_IF_IO_CMD: u32 = 1074331138;
-pub const RIO_MPORT_MAINT_READ_REMOTE: u32 = 2149084423;
-pub const VIDIOC_OMAP3ISP_HIST_CFG: u32 = 3224393412;
-pub const BLKGETNRZONES: u32 = 2147750533;
-pub const VIDIOC_G_MODULATOR: u32 = 3225703990;
-pub const VBG_IOCTL_WRITE_CORE_DUMP: u32 = 3223082515;
-pub const USBDEVFS_SETINTERFACE: u32 = 2148029700;
-pub const PPPIOCGCHAN: u32 = 2147775543;
-pub const EVIOCGVERSION: u32 = 2147763457;
-pub const VHOST_NET_SET_BACKEND: u32 = 1074310960;
-pub const USBDEVFS_REAPURBNDELAY: u32 = 1074287885;
-pub const RNDZAPENTCNT: u32 = 20996;
-pub const VIDIOC_G_PARM: u32 = 3234616853;
-pub const TUNGETDEVNETNS: u32 = 21731;
-pub const LIRC_SET_MEASURE_CARRIER_MODE: u32 = 1074030877;
-pub const VHOST_SET_VRING_ERR: u32 = 1074310946;
-pub const VDUSE_VQ_SETUP: u32 = 1075872020;
-pub const AUTOFS_IOC_SETTIMEOUT: u32 = 3221787492;
-pub const VIDIOC_S_FREQUENCY: u32 = 1076647481;
-pub const F2FS_IOC_SEC_TRIM_FILE: u32 = 1075377428;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY: u32 = 3225445912;
-pub const WDIOC_GETPRETIMEOUT: u32 = 2147768073;
-pub const USBDEVFS_DROP_PRIVILEGES: u32 = 1074025758;
-pub const BTRFS_IOC_SNAP_CREATE_V2: u32 = 1342215191;
-pub const VHOST_VSOCK_SET_RUNNING: u32 = 1074048865;
-pub const STP_SET_OPTIONS: u32 = 1074275586;
-pub const FBIO_RADEON_GET_MIRROR: u32 = 2148024323;
-pub const IVTVFB_IOC_DMA_FRAME: u32 = 1075336896;
-pub const IPMICTL_SEND_COMMAND: u32 = 2150131981;
-pub const VIDIOC_G_ENC_INDEX: u32 = 2283296332;
-pub const DFL_FPGA_FME_PORT_PR: u32 = 46720;
-pub const CHIOSVOLTAG: u32 = 1076912914;
-pub const ATM_SETESIF: u32 = 1074815373;
-pub const FW_CDEV_IOC_SEND_RESPONSE: u32 = 1075323652;
-pub const PMU_IOC_GET_MODEL: u32 = 2148024835;
-pub const JSIOCGBTNMAP: u32 = 2214619700;
-pub const USBDEVFS_HUB_PORTINFO: u32 = 2155894035;
-pub const VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS: u32 = 3222820363;
-pub const FDCLRPRM: u32 = 577;
-pub const BTRFS_IOC_SCRUB: u32 = 3288372251;
-pub const USBDEVFS_DISCONNECT: u32 = 21782;
-pub const TUNSETVNETBE: u32 = 1074025694;
-pub const ATMTCP_REMOVE: u32 = 24975;
-pub const VHOST_VDPA_GET_CONFIG: u32 = 2148052851;
-pub const PPPIOCGNPMODE: u32 = 3221779532;
-pub const FDGETDRVPRM: u32 = 2155872785;
-pub const TUNSETVNETLE: u32 = 1074025692;
-pub const PHN_SETREG: u32 = 1074294790;
-pub const PPPIOCDETACH: u32 = 1074033724;
-pub const MMTIMER_GETRES: u32 = 2148035841;
-pub const VIDIOC_SUBDEV_ENUMSTD: u32 = 3225966105;
-pub const PPGETFLAGS: u32 = 2147774618;
-pub const VDUSE_DEV_GET_FEATURES: u32 = 2148040977;
-pub const CAPI_MANUFACTURER_CMD: u32 = 3222291232;
-pub const VIDIOC_G_TUNER: u32 = 3226752541;
-pub const DM_TABLE_STATUS: u32 = 3241737484;
-pub const DM_DEV_ARM_POLL: u32 = 3241737488;
-pub const NE_CREATE_VM: u32 = 2148052512;
-pub const MEDIA_IOC_ENUM_LINKS: u32 = 3223878658;
-pub const F2FS_IOC_PRECACHE_EXTENTS: u32 = 62735;
-pub const DFL_FPGA_PORT_DMA_MAP: u32 = 46659;
-pub const MGSL_IOCGXCTRL: u32 = 27926;
-pub const FW_CDEV_IOC_SEND_REQUEST: u32 = 1076372225;
-pub const SONYPI_IOCGBLUE: u32 = 2147579400;
-pub const F2FS_IOC_DECOMPRESS_FILE: u32 = 62743;
-pub const I2OHTML: u32 = 3224398089;
-pub const VFIO_GET_API_VERSION: u32 = 15204;
-pub const IDT77105_GETSTATZ: u32 = 1074815283;
-pub const I2OPARMSET: u32 = 3223873795;
-pub const TEE_IOC_CANCEL: u32 = 2148049924;
-pub const PTP_SYS_OFFSET_PRECISE2: u32 = 3225435409;
-pub const DFL_FPGA_PORT_RESET: u32 = 46656;
-pub const PPPIOCGASYNCMAP: u32 = 2147775576;
-pub const EVIOCGKEYCODE_V2: u32 = 2150122756;
-pub const DM_DEV_SET_GEOMETRY: u32 = 3241737487;
-pub const HIDIOCSUSAGE: u32 = 1075333132;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE: u32 = 1075323664;
-pub const PTP_EXTTS_REQUEST: u32 = 1074806018;
-pub const SWITCHTEC_IOCTL_EVENT_CTL: u32 = 3223869251;
-pub const WDIOC_SETPRETIMEOUT: u32 = 3221509896;
-pub const VHOST_SCSI_CLEAR_ENDPOINT: u32 = 1088991041;
-pub const JSIOCGAXES: u32 = 2147576337;
-pub const HIDIOCSFLAG: u32 = 1074022415;
-pub const PTP_PEROUT_REQUEST2: u32 = 1077427468;
-pub const PPWDATA: u32 = 1073836166;
-pub const PTP_CLOCK_GETCAPS: u32 = 2152742145;
-pub const FDGETMAXERRS: u32 = 2148794894;
-pub const TUNSETQUEUE: u32 = 1074025689;
-pub const PTP_ENABLE_PPS: u32 = 1074019588;
-pub const SIOCSIFATMTCP: u32 = 24960;
-pub const CEC_ADAP_G_LOG_ADDRS: u32 = 2153537795;
-pub const ND_IOCTL_ARS_CAP: u32 = 3223342593;
-pub const NBD_SET_BLKSIZE: u32 = 43777;
-pub const NBD_SET_TIMEOUT: u32 = 43785;
-pub const VHOST_SCSI_GET_ABI_VERSION: u32 = 1074048834;
-pub const RIO_UNMAP_INBOUND: u32 = 1074294034;
-pub const ATM_QUERYLOOP: u32 = 1074815316;
-pub const DFL_FPGA_GET_API_VERSION: u32 = 46592;
-pub const USBDEVFS_WAIT_FOR_RESUME: u32 = 21795;
-pub const FBIO_CURSOR: u32 = 3228059144;
-pub const RNDCLEARPOOL: u32 = 20998;
-pub const VIDIOC_QUERYSTD: u32 = 2148030015;
-pub const DMA_BUF_IOCTL_SYNC: u32 = 1074291200;
-pub const SCIF_RECV: u32 = 3222827783;
-pub const PTP_PIN_GETFUNC2: u32 = 3227532559;
-pub const FW_CDEV_IOC_ALLOCATE: u32 = 3223331586;
-pub const CEC_ADAP_G_CAPS: u32 = 3226231040;
-pub const VIDIOC_G_FBUF: u32 = 2150651402;
-pub const PTP_ENABLE_PPS2: u32 = 1074019597;
-pub const PCITEST_CLEAR_IRQ: u32 = 20496;
-pub const IPMICTL_SET_GETS_EVENTS_CMD: u32 = 2147772688;
-pub const BTRFS_IOC_DEVICES_READY: u32 = 2415957031;
-pub const JSIOCGAXMAP: u32 = 2151705138;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER: u32 = 2148541196;
-pub const FW_CDEV_IOC_SET_ISO_CHANNELS: u32 = 1074799383;
-pub const RTC_WIE_OFF: u32 = 28688;
-pub const PPGETMODE: u32 = 2147774616;
-pub const VIDIOC_DBG_G_REGISTER: u32 = 3224917584;
-pub const PTP_SYS_OFFSET: u32 = 1128283397;
-pub const BTRFS_IOC_SPACE_INFO: u32 = 3222311956;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_SIZE: u32 = 3225441866;
-pub const ND_IOCTL_VENDOR: u32 = 3221769737;
-pub const SCIF_VREADFROM: u32 = 3223876364;
-pub const BTRFS_IOC_TRANS_START: u32 = 37894;
-pub const INOTIFY_IOC_SETNEXTWD: u32 = 1074022656;
-pub const SNAPSHOT_GET_IMAGE_SIZE: u32 = 2148021006;
-pub const TUNDETACHFILTER: u32 = 1074812118;
-pub const ND_IOCTL_CLEAR_ERROR: u32 = 3223342596;
-pub const IOC_PR_CLEAR: u32 = 1074819277;
-pub const SCIF_READFROM: u32 = 3223876362;
-pub const PPPIOCGDEBUG: u32 = 2147775553;
-pub const BLKGETZONESZ: u32 = 2147750532;
-pub const HIDIOCGUSAGES: u32 = 3491514387;
-pub const SONYPI_IOCGTEMP: u32 = 2147579404;
-pub const UI_SET_MSCBIT: u32 = 1074025832;
-pub const APM_IOC_SUSPEND: u32 = 16642;
-pub const BTRFS_IOC_TREE_SEARCH: u32 = 3489698833;
-pub const RTC_PLL_GET: u32 = 2149609489;
-pub const RIO_CM_EP_GET_LIST: u32 = 3221512962;
-pub const USBDEVFS_DISCSIGNAL: u32 = 2148553998;
-pub const LIRC_GET_MIN_TIMEOUT: u32 = 2147772680;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY: u32 = 2174244674;
-pub const DM_TARGET_MSG: u32 = 3241737486;
-pub const SONYPI_IOCGBAT1REM: u32 = 2147644931;
-pub const EVIOCSFF: u32 = 1076905344;
-pub const TUNSETGROUP: u32 = 1074025678;
-pub const EVIOCGKEYCODE: u32 = 2148025604;
-pub const KCOV_REMOTE_ENABLE: u32 = 1075340134;
-pub const ND_IOCTL_GET_CONFIG_SIZE: u32 = 3222031876;
-pub const FDEJECT: u32 = 602;
-pub const TUNSETOFFLOAD: u32 = 1074025680;
-pub const PPPIOCCONNECT: u32 = 1074033722;
-pub const ATM_ADDADDR: u32 = 1074815368;
-pub const VDUSE_DEV_INJECT_CONFIG_IRQ: u32 = 33043;
-pub const AUTOFS_DEV_IOCTL_ASKUMOUNT: u32 = 3222836093;
-pub const VHOST_VDPA_GET_STATUS: u32 = 2147594097;
-pub const CCISS_PASSTHRU: u32 = 3227009547;
-pub const MGSL_IOCCLRMODCOUNT: u32 = 27919;
-pub const TEE_IOC_SUPPL_SEND: u32 = 2148574215;
-pub const ATMARPD_CTRL: u32 = 25057;
-pub const UI_ABS_SETUP: u32 = 1075598596;
-pub const UI_DEV_DESTROY: u32 = 21762;
-pub const BTRFS_IOC_QUOTA_CTL: u32 = 3222311976;
-pub const RTC_AIE_ON: u32 = 28673;
-pub const AUTOFS_IOC_EXPIRE: u32 = 2165085029;
-pub const PPPIOCSDEBUG: u32 = 1074033728;
-pub const GPIO_V2_LINE_SET_VALUES_IOCTL: u32 = 3222320143;
-pub const PPPIOCSMRU: u32 = 1074033746;
-pub const CCISS_DEREGDISK: u32 = 16908;
-pub const UI_DEV_CREATE: u32 = 21761;
-pub const FUSE_DEV_IOC_CLONE: u32 = 2147804416;
-pub const BTRFS_IOC_START_SYNC: u32 = 2148045848;
-pub const NILFS_IOCTL_DELETE_CHECKPOINT: u32 = 1074294401;
-pub const SNAPSHOT_AVAIL_SWAP_SIZE: u32 = 2148021011;
-pub const DM_TABLE_CLEAR: u32 = 3241737482;
-pub const CCISS_GETINTINFO: u32 = 2148024834;
-pub const PPPIOCSASYNCMAP: u32 = 1074033751;
-pub const I2OEVTGET: u32 = 2154326283;
-pub const NVME_IOCTL_RESET: u32 = 20036;
-pub const PPYIELD: u32 = 28813;
-pub const NVME_IOCTL_IO64_CMD: u32 = 3226488392;
-pub const TUNSETCARRIER: u32 = 1074025698;
-pub const DM_DEV_WAIT: u32 = 3241737480;
-pub const RTC_WIE_ON: u32 = 28687;
-pub const MEDIA_IOC_DEVICE_INFO: u32 = 3238034432;
-pub const RIO_CM_CHAN_CREATE: u32 = 3221381891;
-pub const MGSL_IOCSPARAMS: u32 = 1076915456;
-pub const RTC_SET_TIME: u32 = 1076129802;
-pub const VHOST_RESET_OWNER: u32 = 44802;
-pub const IOC_OPAL_PSID_REVERT_TPR: u32 = 1091072232;
-pub const AUTOFS_DEV_IOCTL_OPENMOUNT: u32 = 3222836084;
-pub const UDF_GETEABLOCK: u32 = 2148035649;
-pub const VFIO_IOMMU_MAP_DMA: u32 = 15217;
-pub const VIDIOC_SUBSCRIBE_EVENT: u32 = 1075861082;
-pub const HIDIOCGFLAG: u32 = 2147764238;
-pub const HIDIOCGUCODE: u32 = 3222816781;
-pub const VIDIOC_OMAP3ISP_AF_CFG: u32 = 3226228421;
-pub const DM_REMOVE_ALL: u32 = 3241737473;
-pub const ASPEED_LPC_CTRL_IOCTL_MAP: u32 = 1074835969;
-pub const CCISS_GETFIRMVER: u32 = 2147762696;
-pub const ND_IOCTL_ARS_START: u32 = 3223342594;
-pub const PPPIOCSMRRU: u32 = 1074033723;
-pub const CEC_ADAP_S_LOG_ADDRS: u32 = 3227279620;
-pub const RPROC_GET_SHUTDOWN_ON_RELEASE: u32 = 2147792642;
-pub const DMA_HEAP_IOCTL_ALLOC: u32 = 3222816768;
-pub const PPSETTIME: u32 = 1074819222;
-pub const RTC_ALM_READ: u32 = 2149871624;
-pub const VDUSE_SET_API_VERSION: u32 = 1074299137;
-pub const RIO_MPORT_MAINT_WRITE_REMOTE: u32 = 1075342600;
-pub const VIDIOC_SUBDEV_S_CROP: u32 = 3224917564;
-pub const USBDEVFS_CONNECT: u32 = 21783;
-pub const SYNC_IOC_FILE_INFO: u32 = 3224911364;
-pub const ATMARP_MKIP: u32 = 25058;
-pub const VFIO_IOMMU_SPAPR_TCE_GET_INFO: u32 = 15216;
-pub const CCISS_GETHEARTBEAT: u32 = 2147762694;
-pub const ATM_RSTADDR: u32 = 1074815367;
-pub const NBD_SET_SIZE: u32 = 43778;
-pub const UDF_GETVOLIDENT: u32 = 2148035650;
-pub const GPIO_V2_LINE_GET_VALUES_IOCTL: u32 = 3222320142;
-pub const MGSL_IOCSTXIDLE: u32 = 27906;
-pub const FSL_HV_IOCTL_SETPROP: u32 = 3223891720;
-pub const BTRFS_IOC_GET_DEV_STATS: u32 = 3288896564;
-pub const PPRSTATUS: u32 = 2147577985;
-pub const MGSL_IOCTXENABLE: u32 = 27908;
-pub const UDF_GETEASIZE: u32 = 2147773504;
-pub const NVME_IOCTL_ADMIN64_CMD: u32 = 3226488391;
-pub const VHOST_SET_OWNER: u32 = 44801;
-pub const RIO_ALLOC_DMA: u32 = 3222826259;
-pub const RIO_CM_CHAN_ACCEPT: u32 = 3221775111;
-pub const I2OHRTGET: u32 = 3222825217;
-pub const ATM_SETCIRANGE: u32 = 1074815371;
-pub const HPET_IE_ON: u32 = 26625;
-pub const PERF_EVENT_IOC_ID: u32 = 2148017159;
-pub const TUNSETSNDBUF: u32 = 1074025684;
-pub const PTP_PIN_SETFUNC: u32 = 1080048903;
-pub const PPPIOCDISCONN: u32 = 29753;
-pub const VIDIOC_QUERYCTRL: u32 = 3225703972;
-pub const PPEXCL: u32 = 28815;
-pub const PCITEST_MSI: u32 = 1074024451;
-pub const FDWERRORCLR: u32 = 598;
-pub const AUTOFS_IOC_FAIL: u32 = 37729;
-pub const USBDEVFS_IOCTL: u32 = 3222295826;
-pub const VIDIOC_S_STD: u32 = 1074288152;
-pub const F2FS_IOC_RESIZE_FS: u32 = 1074328848;
-pub const SONET_SETDIAG: u32 = 3221512466;
-pub const BTRFS_IOC_DEFRAG: u32 = 1342215170;
-pub const CCISS_GETDRIVVER: u32 = 2147762697;
-pub const IPMICTL_GET_TIMING_PARMS_CMD: u32 = 2148034839;
-pub const HPET_IRQFREQ: u32 = 1074292742;
-pub const ATM_GETESI: u32 = 1074815365;
-pub const CCISS_GETLUNINFO: u32 = 2148286993;
-pub const AUTOFS_DEV_IOCTL_ISMOUNTPOINT: u32 = 3222836094;
-pub const TEE_IOC_SHM_ALLOC: u32 = 3222316033;
-pub const PERF_EVENT_IOC_SET_BPF: u32 = 1074013192;
-pub const UDMABUF_CREATE_LIST: u32 = 1074296131;
-pub const VHOST_SET_LOG_BASE: u32 = 1074310916;
-pub const ZATM_GETPOOL: u32 = 1074815329;
-pub const BR2684_SETFILT: u32 = 1075601808;
-pub const RNDGETPOOL: u32 = 2148028930;
-pub const PPS_GETPARAMS: u32 = 2148036769;
-pub const IOC_PR_RESERVE: u32 = 1074819273;
-pub const VIDIOC_TRY_DECODER_CMD: u32 = 3225966177;
-pub const RIO_CM_CHAN_CLOSE: u32 = 1073898244;
-pub const VIDIOC_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const IOCTL_MEI_CONNECT_CLIENT_VTAG: u32 = 3222554628;
-pub const PMU_IOC_GET_BACKLIGHT: u32 = 2148024833;
-pub const USBDEVFS_GET_CAPABILITIES: u32 = 2147767578;
-pub const SCIF_WRITETO: u32 = 3223876363;
-pub const UDF_RELOCATE_BLOCKS: u32 = 3221777475;
-pub const FSL_HV_IOCTL_PARTITION_RESTART: u32 = 3221794561;
-pub const CCISS_REGNEWD: u32 = 16910;
-pub const FAT_IOCTL_SET_ATTRIBUTES: u32 = 1074033169;
-pub const VIDIOC_CREATE_BUFS: u32 = 3238024796;
-pub const CAPI_GET_VERSION: u32 = 3222291207;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY: u32 = 2228770626;
-pub const VFIO_EEH_PE_OP: u32 = 15225;
-pub const FW_CDEV_IOC_CREATE_ISO_CONTEXT: u32 = 3223331592;
-pub const F2FS_IOC_RELEASE_COMPRESS_BLOCKS: u32 = 2148070674;
-pub const NBD_SET_SIZE_BLOCKS: u32 = 43783;
-pub const IPMI_BMC_IOCTL_SET_SMS_ATN: u32 = 45312;
-pub const ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG: u32 = 3222319873;
-pub const VIDIOC_S_AUDOUT: u32 = 1077171762;
-pub const VIDIOC_S_FMT: u32 = 3234878981;
-pub const PPPIOCATTACH: u32 = 1074033725;
-pub const VHOST_GET_VRING_BUSYLOOP_TIMEOUT: u32 = 1074310948;
-pub const FS_IOC_MEASURE_VERITY: u32 = 3221513862;
-pub const CCISS_BIG_PASSTHRU: u32 = 3227533842;
-pub const IPMICTL_SET_MY_LUN_CMD: u32 = 2147772691;
-pub const PCITEST_LEGACY_IRQ: u32 = 20482;
-pub const USBDEVFS_SUBMITURB: u32 = 2151175434;
-pub const AUTOFS_IOC_READY: u32 = 37728;
-pub const BTRFS_IOC_SEND: u32 = 1078498342;
-pub const VIDIOC_G_EXT_CTRLS: u32 = 3223344711;
-pub const JSIOCSBTNMAP: u32 = 1140877875;
-pub const PPPIOCSFLAGS: u32 = 1074033753;
-pub const NVRAM_INIT: u32 = 28736;
-pub const RFKILL_IOCTL_NOINPUT: u32 = 20993;
-pub const BTRFS_IOC_BALANCE: u32 = 1342215180;
-pub const FS_IOC_GETFSMAP: u32 = 3233830971;
-pub const IPMICTL_GET_MY_CHANNEL_LUN_CMD: u32 = 2147772699;
-pub const STP_POLICY_ID_GET: u32 = 2148541697;
-pub const PPSETFLAGS: u32 = 1074032795;
-pub const CEC_ADAP_S_PHYS_ADDR: u32 = 1073897730;
-pub const ATMTCP_CREATE: u32 = 24974;
-pub const IPMI_BMC_IOCTL_FORCE_ABORT: u32 = 45314;
-pub const PPPIOCGXASYNCMAP: u32 = 2149610576;
-pub const VHOST_SET_VRING_CALL: u32 = 1074310945;
-pub const LIRC_GET_FEATURES: u32 = 2147772672;
-pub const GSMIOC_DISABLE_NET: u32 = 18179;
-pub const AUTOFS_IOC_CATATONIC: u32 = 37730;
-pub const NBD_DO_IT: u32 = 43779;
-pub const LIRC_SET_REC_CARRIER_RANGE: u32 = 1074030879;
-pub const IPMICTL_GET_MY_CHANNEL_ADDRESS_CMD: u32 = 2147772697;
-pub const EVIOCSCLOCKID: u32 = 1074021792;
-pub const USBDEVFS_FREE_STREAMS: u32 = 2148029725;
-pub const FSI_SCOM_RESET: u32 = 1074033411;
-pub const PMU_IOC_GRAB_BACKLIGHT: u32 = 2148024838;
-pub const VIDIOC_SUBDEV_S_FMT: u32 = 3227014661;
-pub const FDDEFPRM: u32 = 1075839555;
-pub const TEE_IOC_INVOKE: u32 = 2148574211;
-pub const USBDEVFS_BULK: u32 = 3222820098;
-pub const SCIF_VWRITETO: u32 = 3223876365;
-pub const SONYPI_IOCSBRT: u32 = 1073837568;
-pub const BTRFS_IOC_FILE_EXTENT_SAME: u32 = 3222836278;
-pub const RTC_PIE_ON: u32 = 28677;
-pub const BTRFS_IOC_SCAN_DEV: u32 = 1342215172;
-pub const PPPIOCXFERUNIT: u32 = 29774;
-pub const WDIOC_GETTIMEOUT: u32 = 2147768071;
-pub const BTRFS_IOC_SET_RECEIVED_SUBVOL: u32 = 3234370597;
-pub const DFL_FPGA_PORT_ERR_SET_IRQ: u32 = 1074312774;
-pub const FBIO_WAITFORVSYNC: u32 = 1074021920;
-pub const RTC_PIE_OFF: u32 = 28678;
-pub const EVIOCGRAB: u32 = 1074021776;
-pub const PMU_IOC_SET_BACKLIGHT: u32 = 1074283010;
-pub const EVIOCGREP: u32 = 2148025603;
-pub const PERF_EVENT_IOC_MODIFY_ATTRIBUTES: u32 = 1074275339;
-pub const UFFDIO_CONTINUE: u32 = 3223366151;
-pub const VDUSE_GET_API_VERSION: u32 = 2148040960;
-pub const RTC_RD_TIME: u32 = 2149871625;
-pub const FDMSGOFF: u32 = 582;
-pub const IPMICTL_REGISTER_FOR_CMD_CHANS: u32 = 2148296988;
-pub const CAPI_GET_ERRCODE: u32 = 2147631905;
-pub const PCITEST_SET_IRQTYPE: u32 = 1074024456;
-pub const VIDIOC_SUBDEV_S_EDID: u32 = 3223868969;
-pub const MATROXFB_SET_OUTPUT_MODE: u32 = 1074294522;
-pub const RIO_DEV_ADD: u32 = 1075866903;
-pub const VIDIOC_ENUM_FREQ_BANDS: u32 = 3225441893;
-pub const FBIO_RADEON_SET_MIRROR: u32 = 1074282500;
-pub const PCITEST_GET_IRQTYPE: u32 = 20489;
-pub const JSIOCGVERSION: u32 = 2147772929;
-pub const SONYPI_IOCSBLUE: u32 = 1073837577;
-pub const SNAPSHOT_PREF_IMAGE_SIZE: u32 = 13074;
-pub const F2FS_IOC_GET_FEATURES: u32 = 2147808524;
-pub const SCIF_REG: u32 = 3223876360;
-pub const NILFS_IOCTL_CLEAN_SEGMENTS: u32 = 1081634440;
-pub const FW_CDEV_IOC_INITIATE_BUS_RESET: u32 = 1074012933;
-pub const RIO_WAIT_FOR_ASYNC: u32 = 1074294038;
-pub const VHOST_SET_VRING_NUM: u32 = 1074310928;
-pub const AUTOFS_DEV_IOCTL_PROTOVER: u32 = 3222836082;
-pub const RIO_FREE_DMA: u32 = 1074294036;
-pub const MGSL_IOCRXENABLE: u32 = 27909;
-pub const IOCTL_VM_SOCKETS_GET_LOCAL_CID: u32 = 1977;
-pub const IPMICTL_SET_TIMING_PARMS_CMD: u32 = 2148034838;
-pub const PPPIOCGL2TPSTATS: u32 = 2152231990;
-pub const PERF_EVENT_IOC_PERIOD: u32 = 1074275332;
-pub const PTP_PIN_SETFUNC2: u32 = 1080048912;
-pub const CHIOEXCHANGE: u32 = 1075602178;
-pub const NILFS_IOCTL_GET_SUINFO: u32 = 2149084804;
-pub const CEC_DQEVENT: u32 = 3226493191;
-pub const UI_SET_SWBIT: u32 = 1074025837;
-pub const VHOST_VDPA_SET_CONFIG: u32 = 1074311028;
-pub const TUNSETIFF: u32 = 1074025674;
-pub const CHIOPOSITION: u32 = 1074553603;
-pub const IPMICTL_SET_MAINTENANCE_MODE_CMD: u32 = 1074030879;
-pub const BTRFS_IOC_DEFAULT_SUBVOL: u32 = 1074304019;
-pub const RIO_UNMAP_OUTBOUND: u32 = 1076391184;
-pub const CAPI_CLR_FLAGS: u32 = 2147762981;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE: u32 = 1075323663;
-pub const MATROXFB_GET_OUTPUT_CONNECTION: u32 = 2148036344;
-pub const EVIOCSMASK: u32 = 1074808211;
-pub const BTRFS_IOC_FORGET_DEV: u32 = 1342215173;
-pub const CXL_MEM_QUERY_COMMANDS: u32 = 2148060673;
-pub const CEC_S_MODE: u32 = 1074028809;
-pub const MGSL_IOCSIF: u32 = 27914;
-pub const SWITCHTEC_IOCTL_PFF_TO_PORT: u32 = 3222034244;
-pub const PPSETMODE: u32 = 1074032768;
-pub const VFIO_DEVICE_SET_IRQS: u32 = 15214;
-pub const VIDIOC_PREPARE_BUF: u32 = 3227014749;
-pub const CEC_ADAP_G_CONNECTOR_INFO: u32 = 2151964938;
-pub const IOC_OPAL_WRITE_SHADOW_MBR: u32 = 1092645098;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL: u32 = 3225441867;
-pub const UDMABUF_CREATE: u32 = 1075344706;
-pub const SONET_CLRDIAG: u32 = 3221512467;
-pub const PHN_SET_REG: u32 = 1074294785;
-pub const RNDADDTOENTCNT: u32 = 1074024961;
-pub const VBG_IOCTL_CHECK_BALLOON: u32 = 3223344657;
-pub const VIDIOC_OMAP3ISP_STAT_REQ: u32 = 3223869126;
-pub const PPS_FETCH: u32 = 3221778596;
-pub const RTC_AIE_OFF: u32 = 28674;
-pub const VFIO_GROUP_SET_CONTAINER: u32 = 15208;
-pub const FW_CDEV_IOC_RECEIVE_PHY_PACKETS: u32 = 1074275094;
-pub const VFIO_IOMMU_SPAPR_TCE_REMOVE: u32 = 15224;
-pub const VFIO_IOMMU_GET_INFO: u32 = 15216;
-pub const DM_DEV_SUSPEND: u32 = 3241737478;
-pub const F2FS_IOC_GET_COMPRESS_OPTION: u32 = 2147677461;
-pub const FW_CDEV_IOC_STOP_ISO: u32 = 1074012939;
-pub const GPIO_V2_GET_LINEINFO_IOCTL: u32 = 3238048773;
-pub const ATMMPC_CTRL: u32 = 25048;
-pub const PPPIOCSXASYNCMAP: u32 = 1075868751;
-pub const CHIOGSTATUS: u32 = 1074815752;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE: u32 = 3222807309;
-pub const RIO_MPORT_MAINT_PORT_IDX_GET: u32 = 2147773699;
-pub const CAPI_SET_FLAGS: u32 = 2147762980;
-pub const VFIO_GROUP_GET_DEVICE_FD: u32 = 15210;
-pub const VHOST_SET_MEM_TABLE: u32 = 1074310915;
-pub const MATROXFB_SET_OUTPUT_CONNECTION: u32 = 1074294520;
-pub const DFL_FPGA_PORT_GET_REGION_INFO: u32 = 46658;
-pub const VHOST_GET_FEATURES: u32 = 2148052736;
-pub const LIRC_GET_REC_RESOLUTION: u32 = 2147772679;
-pub const PACKET_CTRL_CMD: u32 = 3222820865;
-pub const LIRC_SET_TRANSMITTER_MASK: u32 = 1074030871;
-pub const BTRFS_IOC_ADD_DEV: u32 = 1342215178;
-pub const JSIOCGCORR: u32 = 2149870114;
-pub const VIDIOC_G_FMT: u32 = 3234878980;
-pub const RTC_EPOCH_SET: u32 = 1074294798;
-pub const CAPI_GET_PROFILE: u32 = 3225436937;
-pub const ATM_GETLOOP: u32 = 1074815314;
-pub const SCIF_LISTEN: u32 = 1074033410;
-pub const NBD_CLEAR_QUE: u32 = 43781;
-pub const F2FS_IOC_MOVE_RANGE: u32 = 3223385353;
-pub const LIRC_GET_LENGTH: u32 = 2147772687;
-pub const I8K_SET_FAN: u32 = 3221776775;
-pub const FDSETMAXERRS: u32 = 1075053132;
-pub const VIDIOC_SUBDEV_QUERYCAP: u32 = 2151699968;
-pub const SNAPSHOT_SET_SWAP_AREA: u32 = 1074541325;
-pub const LIRC_GET_REC_TIMEOUT: u32 = 2147772708;
-pub const EVIOCRMFF: u32 = 1074021761;
-pub const GPIO_GET_LINEEVENT_IOCTL: u32 = 3224417284;
-pub const PPRDATA: u32 = 2147577989;
-pub const RIO_MPORT_GET_PROPERTIES: u32 = 2150657284;
-pub const TUNSETVNETHDRSZ: u32 = 1074025688;
-pub const GPIO_GET_LINEINFO_IOCTL: u32 = 3225990146;
-pub const GSMIOC_GETCONF: u32 = 2152482560;
-pub const LIRC_GET_SEND_MODE: u32 = 2147772673;
-pub const PPPIOCSACTIVE: u32 = 1074820166;
-pub const SIOCGSTAMPNS_NEW: u32 = 2148567303;
-pub const IPMICTL_RECEIVE_MSG: u32 = 3224398092;
-pub const LIRC_SET_SEND_DUTY_CYCLE: u32 = 1074030869;
-pub const UI_END_FF_ERASE: u32 = 1074550219;
-pub const SWITCHTEC_IOCTL_FLASH_PART_INFO: u32 = 3222296385;
-pub const FW_CDEV_IOC_SEND_PHY_PACKET: u32 = 3222807317;
-pub const NBD_SET_FLAGS: u32 = 43786;
-pub const VFIO_DEVICE_GET_REGION_INFO: u32 = 15212;
-pub const REISERFS_IOC_UNPACK: u32 = 1074318593;
-pub const FW_CDEV_IOC_REMOVE_DESCRIPTOR: u32 = 1074012935;
-pub const RIO_SET_EVENT_MASK: u32 = 1074031885;
-pub const SNAPSHOT_ALLOC_SWAP_PAGE: u32 = 2148021012;
-pub const VDUSE_VQ_INJECT_IRQ: u32 = 1074037015;
-pub const I2OPASSTHRU: u32 = 2148559116;
-pub const IOC_OPAL_SET_PW: u32 = 1109422304;
-pub const FSI_SCOM_READ: u32 = 3223352065;
-pub const VHOST_VDPA_GET_DEVICE_ID: u32 = 2147790704;
-pub const VIDIOC_QBUF: u32 = 3227014671;
-pub const VIDIOC_S_TUNER: u32 = 1079268894;
-pub const TUNGETVNETHDRSZ: u32 = 2147767511;
-pub const CAPI_NCCI_GETUNIT: u32 = 2147762983;
-pub const DFL_FPGA_PORT_UINT_GET_IRQ_NUM: u32 = 2147792455;
-pub const VIDIOC_OMAP3ISP_STAT_EN: u32 = 3221771975;
-pub const GPIO_V2_LINE_SET_CONFIG_IOCTL: u32 = 3239097357;
-pub const TEE_IOC_VERSION: u32 = 2148312064;
-pub const VIDIOC_LOG_STATUS: u32 = 22086;
-pub const IPMICTL_SEND_COMMAND_SETTIME: u32 = 2150656277;
-pub const VHOST_SET_LOG_FD: u32 = 1074048775;
-pub const SCIF_SEND: u32 = 3222827782;
-pub const VIDIOC_SUBDEV_G_FMT: u32 = 3227014660;
-pub const NS_ADJBUFLEV: u32 = 24931;
-pub const VIDIOC_DBG_S_REGISTER: u32 = 1077433935;
-pub const NILFS_IOCTL_RESIZE: u32 = 1074294411;
-pub const PHN_GETREG: u32 = 3221778437;
-pub const I2OSWDL: u32 = 3224398085;
-pub const VBG_IOCTL_VMMDEV_REQUEST_BIG: u32 = 22019;
-pub const JSIOCGBUTTONS: u32 = 2147576338;
-pub const VFIO_IOMMU_ENABLE: u32 = 15219;
-pub const DM_DEV_RENAME: u32 = 3241737477;
-pub const MEDIA_IOC_SETUP_LINK: u32 = 3224665091;
-pub const VIDIOC_ENUMOUTPUT: u32 = 3225966128;
-pub const STP_POLICY_ID_SET: u32 = 3222283520;
-pub const VHOST_VDPA_SET_CONFIG_CALL: u32 = 1074048887;
-pub const VIDIOC_SUBDEV_G_CROP: u32 = 3224917563;
-pub const VIDIOC_S_CROP: u32 = 1075074620;
-pub const WDIOC_GETTEMP: u32 = 2147768067;
-pub const IOC_OPAL_ADD_USR_TO_LR: u32 = 1092120804;
-pub const UI_SET_LEDBIT: u32 = 1074025833;
-pub const NBD_SET_SOCK: u32 = 43776;
-pub const BTRFS_IOC_SNAP_DESTROY_V2: u32 = 1342215231;
-pub const HIDIOCGCOLLECTIONINFO: u32 = 3222292497;
-pub const I2OSWUL: u32 = 3224398086;
-pub const IOCTL_MEI_NOTIFY_GET: u32 = 2147764227;
-pub const FDFMTTRK: u32 = 1074528840;
-pub const MMTIMER_GETBITS: u32 = 27908;
-pub const VIDIOC_ENUMSTD: u32 = 3225966105;
-pub const VHOST_GET_VRING_BASE: u32 = 3221794578;
-pub const VFIO_DEVICE_IOEVENTFD: u32 = 15220;
-pub const ATMARP_SETENTRY: u32 = 25059;
-pub const CCISS_REVALIDVOLS: u32 = 16906;
-pub const MGSL_IOCLOOPTXDONE: u32 = 27913;
-pub const RTC_VL_READ: u32 = 2147774483;
-pub const ND_IOCTL_ARS_STATUS: u32 = 3224391171;
-pub const RIO_DEV_DEL: u32 = 1075866904;
-pub const VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES: u32 = 3223606797;
-pub const VIDIOC_SUBDEV_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const SONYPI_IOCSFAN: u32 = 1073837579;
-pub const SPIOCSTYPE: u32 = 1074295041;
-pub const IPMICTL_REGISTER_FOR_CMD: u32 = 2147641614;
-pub const I8K_GET_FAN: u32 = 3221776774;
-pub const TUNGETVNETBE: u32 = 2147767519;
-pub const AUTOFS_DEV_IOCTL_FAIL: u32 = 3222836087;
-pub const UI_END_FF_UPLOAD: u32 = 1080579529;
-pub const TOSH_SMM: u32 = 3222828176;
-pub const SONYPI_IOCGBAT2REM: u32 = 2147644933;
-pub const F2FS_IOC_GET_COMPRESS_BLOCKS: u32 = 2148070673;
-pub const PPPIOCSNPMODE: u32 = 1074295883;
-pub const USBDEVFS_CONTROL: u32 = 3222820096;
-pub const HIDIOCGUSAGE: u32 = 3222816779;
-pub const TUNSETTXFILTER: u32 = 1074025681;
-pub const TUNGETVNETLE: u32 = 2147767517;
-pub const VIDIOC_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const BTRFS_IOC_INO_PATHS: u32 = 3224933411;
-pub const MGSL_IOCGXSYNC: u32 = 27924;
-pub const HIDIOCGFIELDINFO: u32 = 3224913930;
-pub const VIDIOC_SUBDEV_G_STD: u32 = 2148029975;
-pub const I2OVALIDATE: u32 = 2147772680;
-pub const VIDIOC_TRY_ENCODER_CMD: u32 = 3223869006;
-pub const NILFS_IOCTL_GET_CPINFO: u32 = 2149084802;
-pub const VIDIOC_G_FREQUENCY: u32 = 3224131128;
-pub const VFAT_IOCTL_READDIR_SHORT: u32 = 2184212994;
-pub const ND_IOCTL_GET_CONFIG_DATA: u32 = 3222031877;
-pub const F2FS_IOC_RESERVE_COMPRESS_BLOCKS: u32 = 2148070675;
-pub const FDGETDRVSTAT: u32 = 2152727058;
-pub const SYNC_IOC_MERGE: u32 = 3224387075;
-pub const VIDIOC_S_DV_TIMINGS: u32 = 3229898327;
-pub const PPPIOCBRIDGECHAN: u32 = 1074033717;
-pub const LIRC_SET_SEND_MODE: u32 = 1074030865;
-pub const RIO_ENABLE_PORTWRITE_RANGE: u32 = 1074818315;
-pub const ATM_GETTYPE: u32 = 1074815364;
-pub const PHN_GETREGS: u32 = 3223875591;
-pub const FDSETEMSGTRESH: u32 = 586;
-pub const NILFS_IOCTL_GET_VINFO: u32 = 3222826630;
-pub const MGSL_IOCWAITEVENT: u32 = 3221515528;
-pub const CAPI_INSTALLED: u32 = 2147631906;
-pub const EVIOCGMASK: u32 = 2148550034;
-pub const BTRFS_IOC_SUBVOL_GETFLAGS: u32 = 2148045849;
-pub const FSL_HV_IOCTL_PARTITION_GET_STATUS: u32 = 3222056706;
-pub const MEDIA_IOC_ENUM_ENTITIES: u32 = 3238034433;
-pub const GSMIOC_GETFIRST: u32 = 2147763972;
-pub const FW_CDEV_IOC_FLUSH_ISO: u32 = 1074012952;
-pub const VIDIOC_DBG_G_CHIP_INFO: u32 = 3234354790;
-pub const F2FS_IOC_RELEASE_VOLATILE_WRITE: u32 = 62724;
-pub const CAPI_GET_SERIAL: u32 = 3221504776;
-pub const FDSETDRVPRM: u32 = 1082131088;
-pub const IOC_OPAL_SAVE: u32 = 1092120796;
-pub const VIDIOC_G_DV_TIMINGS: u32 = 3229898328;
-pub const TUNSETIFINDEX: u32 = 1074025690;
-pub const CCISS_SETINTINFO: u32 = 1074283011;
-pub const CM_IOSDBGLVL: u32 = 1074291706;
-pub const RTC_VL_CLR: u32 = 28692;
-pub const VIDIOC_REQBUFS: u32 = 3222558216;
-pub const USBDEVFS_REAPURBNDELAY32: u32 = 1074025741;
-pub const TEE_IOC_SHM_REGISTER: u32 = 3222840329;
-pub const USBDEVFS_SETCONFIGURATION: u32 = 2147767557;
-pub const CCISS_GETNODENAME: u32 = 2148549124;
-pub const VIDIOC_SUBDEV_S_FRAME_INTERVAL: u32 = 3224393238;
-pub const VIDIOC_ENUM_FRAMESIZES: u32 = 3224131146;
-pub const VFIO_DEVICE_PCI_HOT_RESET: u32 = 15217;
-pub const FW_CDEV_IOC_SEND_BROADCAST_REQUEST: u32 = 1076372242;
-pub const LPSETTIMEOUT_NEW: u32 = 1074791951;
-pub const RIO_CM_MPORT_GET_LIST: u32 = 3221512971;
-pub const FW_CDEV_IOC_QUEUE_ISO: u32 = 3222807305;
-pub const FDRAWCMD: u32 = 600;
-pub const SCIF_UNREG: u32 = 3222303497;
-pub const PPPIOCGIDLE64: u32 = 2148561983;
-pub const USBDEVFS_RELEASEINTERFACE: u32 = 2147767568;
-pub const VIDIOC_CROPCAP: u32 = 3224131130;
-pub const DFL_FPGA_PORT_GET_INFO: u32 = 46657;
-pub const PHN_SET_REGS: u32 = 1074294787;
-pub const ATMLEC_DATA: u32 = 25041;
-pub const PPPOEIOCDFWD: u32 = 45313;
-pub const VIDIOC_S_SELECTION: u32 = 3225441887;
-pub const SNAPSHOT_FREE_SWAP_PAGES: u32 = 13065;
-pub const BTRFS_IOC_LOGICAL_INO: u32 = 3224933412;
-pub const VIDIOC_S_CTRL: u32 = 3221771804;
-pub const ZATM_SETPOOL: u32 = 1074815331;
-pub const MTIOCPOS: u32 = 2148035843;
-pub const PMU_IOC_SLEEP: u32 = 16896;
-pub const AUTOFS_DEV_IOCTL_PROTOSUBVER: u32 = 3222836083;
-pub const VBG_IOCTL_CHANGE_FILTER_MASK: u32 = 3223344652;
-pub const NILFS_IOCTL_GET_SUSTAT: u32 = 2150657669;
-pub const VIDIOC_QUERYCAP: u32 = 2154321408;
-pub const HPET_INFO: u32 = 2149083139;
-pub const VIDIOC_AM437X_CCDC_CFG: u32 = 1074288321;
-pub const DM_LIST_DEVICES: u32 = 3241737474;
-pub const TUNSETOWNER: u32 = 1074025676;
-pub const VBG_IOCTL_CHANGE_GUEST_CAPABILITIES: u32 = 3223344654;
-pub const RNDADDENTROPY: u32 = 1074287107;
-pub const USBDEVFS_RESET: u32 = 21780;
-pub const BTRFS_IOC_SUBVOL_CREATE: u32 = 1342215182;
-pub const USBDEVFS_FORBID_SUSPEND: u32 = 21793;
-pub const FDGETDRVTYP: u32 = 2148532751;
-pub const PPWCONTROL: u32 = 1073836164;
-pub const VIDIOC_ENUM_FRAMEINTERVALS: u32 = 3224655435;
-pub const KCOV_DISABLE: u32 = 25445;
-pub const IOC_OPAL_ACTIVATE_LSP: u32 = 1092120799;
-pub const VHOST_VDPA_GET_IOVA_RANGE: u32 = 2148577144;
-pub const PPPIOCSPASS: u32 = 1074820167;
-pub const RIO_CM_CHAN_CONNECT: u32 = 1074291464;
-pub const I2OSWDEL: u32 = 3224398087;
-pub const FS_IOC_SET_ENCRYPTION_POLICY: u32 = 2148296211;
-pub const IOC_OPAL_MBR_DONE: u32 = 1091596521;
-pub const PPPIOCSMAXCID: u32 = 1074033745;
-pub const PPSETPHASE: u32 = 1074032788;
-pub const VHOST_VDPA_SET_VRING_ENABLE: u32 = 1074311029;
-pub const USBDEVFS_GET_SPEED: u32 = 21791;
-pub const SONET_GETFRAMING: u32 = 2147770646;
-pub const VIDIOC_QUERYBUF: u32 = 3227014665;
-pub const VIDIOC_S_EDID: u32 = 3223868969;
-pub const BTRFS_IOC_QGROUP_ASSIGN: u32 = 1075352617;
-pub const PPS_GETCAP: u32 = 2148036771;
-pub const SNAPSHOT_PLATFORM_SUPPORT: u32 = 13071;
-pub const LIRC_SET_REC_TIMEOUT_REPORTS: u32 = 1074030873;
-pub const SCIF_GET_NODEIDS: u32 = 3222827790;
-pub const NBD_DISCONNECT: u32 = 43784;
-pub const VIDIOC_SUBDEV_G_FRAME_INTERVAL: u32 = 3224393237;
-pub const VFIO_IOMMU_DISABLE: u32 = 15220;
-pub const SNAPSHOT_CREATE_IMAGE: u32 = 1074017041;
-pub const SNAPSHOT_POWER_OFF: u32 = 13072;
-pub const APM_IOC_STANDBY: u32 = 16641;
-pub const PPPIOCGUNIT: u32 = 2147775574;
-pub const AUTOFS_IOC_EXPIRE_MULTI: u32 = 1074041702;
-pub const SCIF_BIND: u32 = 3221779201;
-pub const IOC_WATCH_QUEUE_SET_SIZE: u32 = 22368;
-pub const NILFS_IOCTL_CHANGE_CPMODE: u32 = 1074818688;
-pub const IOC_OPAL_LOCK_UNLOCK: u32 = 1092120797;
-pub const F2FS_IOC_SET_PIN_FILE: u32 = 1074066701;
-pub const PPPIOCGRASYNCMAP: u32 = 2147775573;
-pub const MMTIMER_MMAPAVAIL: u32 = 27910;
-pub const I2OPASSTHRU32: u32 = 2148034828;
-pub const DFL_FPGA_FME_PORT_RELEASE: u32 = 1074050689;
-pub const VIDIOC_SUBDEV_QUERY_DV_TIMINGS: u32 = 2156156515;
-pub const UI_SET_SNDBIT: u32 = 1074025834;
-pub const VIDIOC_G_AUDOUT: u32 = 2150913585;
-pub const RTC_PLL_SET: u32 = 1075867666;
-pub const VIDIOC_ENUMAUDIO: u32 = 3224655425;
-pub const AUTOFS_DEV_IOCTL_TIMEOUT: u32 = 3222836090;
-pub const VBG_IOCTL_DRIVER_VERSION_INFO: u32 = 3224131072;
-pub const VHOST_SCSI_GET_EVENTS_MISSED: u32 = 1074048836;
-pub const VHOST_SET_VRING_ADDR: u32 = 1076408081;
-pub const VDUSE_CREATE_DEV: u32 = 1095794946;
-pub const FDFLUSH: u32 = 587;
-pub const VBG_IOCTL_WAIT_FOR_EVENTS: u32 = 3223344650;
-pub const DFL_FPGA_FME_ERR_SET_IRQ: u32 = 1074312836;
-pub const F2FS_IOC_GET_PIN_FILE: u32 = 2147808526;
-pub const SCIF_CONNECT: u32 = 3221779203;
-pub const BLKREPORTZONE: u32 = 3222278786;
-pub const AUTOFS_IOC_ASKUMOUNT: u32 = 2147783536;
-pub const ATM_ADDPARTY: u32 = 1074815476;
-pub const FDSETPRM: u32 = 1075839554;
-pub const ATM_GETSTATZ: u32 = 1074815313;
-pub const ISST_IF_MSR_COMMAND: u32 = 3221814788;
-pub const BTRFS_IOC_GET_SUBVOL_INFO: u32 = 2180551740;
-pub const VIDIOC_UNSUBSCRIBE_EVENT: u32 = 1075861083;
-pub const SEV_ISSUE_CMD: u32 = 3222295296;
-pub const GPIOHANDLE_SET_LINE_VALUES_IOCTL: u32 = 3225465865;
-pub const PCITEST_COPY: u32 = 1074286598;
-pub const IPMICTL_GET_MY_ADDRESS_CMD: u32 = 2147772690;
-pub const CHIOGPICKER: u32 = 2147771140;
-pub const CAPI_NCCI_OPENCOUNT: u32 = 2147762982;
-pub const CXL_MEM_SEND_COMMAND: u32 = 3224423938;
-pub const PERF_EVENT_IOC_SET_FILTER: u32 = 1074275334;
-pub const IOC_OPAL_REVERT_TPR: u32 = 1091072226;
-pub const CHIOGVPARAMS: u32 = 2154849043;
-pub const PTP_PEROUT_REQUEST: u32 = 1077427459;
-pub const FSI_SCOM_CHECK: u32 = 2147775232;
-pub const RTC_IRQP_READ: u32 = 2148036619;
-pub const RIO_MPORT_MAINT_READ_LOCAL: u32 = 2149084421;
-pub const HIDIOCGRDESCSIZE: u32 = 2147764225;
-pub const UI_GET_VERSION: u32 = 2147767597;
-pub const NILFS_IOCTL_GET_CPSTAT: u32 = 2149084803;
-pub const CCISS_GETBUSTYPES: u32 = 2147762695;
-pub const VFIO_IOMMU_SPAPR_TCE_CREATE: u32 = 15223;
-pub const VIDIOC_EXPBUF: u32 = 3225441808;
-pub const UI_SET_RELBIT: u32 = 1074025830;
-pub const VFIO_SET_IOMMU: u32 = 15206;
-pub const VIDIOC_S_MODULATOR: u32 = 1078220343;
-pub const TUNGETFILTER: u32 = 2148553947;
-pub const MEYEIOC_SYNC: u32 = 3221518019;
-pub const CCISS_SETNODENAME: u32 = 1074807301;
-pub const FBIO_GETCONTROL2: u32 = 2148025993;
-pub const TUNSETDEBUG: u32 = 1074025673;
-pub const DM_DEV_REMOVE: u32 = 3241737476;
-pub const HIDIOCSUSAGES: u32 = 1344030740;
-pub const FS_IOC_ADD_ENCRYPTION_KEY: u32 = 3226494487;
-pub const FBIOGET_VBLANK: u32 = 2149598738;
-pub const ATM_GETSTAT: u32 = 1074815312;
-pub const VIDIOC_G_JPEGCOMP: u32 = 2156680765;
-pub const TUNATTACHFILTER: u32 = 1074812117;
-pub const UI_SET_ABSBIT: u32 = 1074025831;
-pub const DFL_FPGA_PORT_ERR_GET_IRQ_NUM: u32 = 2147792453;
-pub const USBDEVFS_REAPURB32: u32 = 1074025740;
-pub const BTRFS_IOC_TRANS_END: u32 = 37895;
-pub const CAPI_REGISTER: u32 = 1074545409;
-pub const F2FS_IOC_COMPRESS_FILE: u32 = 62744;
-pub const USBDEVFS_DISCARDURB: u32 = 21771;
-pub const HE_GET_REG: u32 = 1074815328;
-pub const ATM_SETLOOP: u32 = 1074815315;
-pub const ATMSIGD_CTRL: u32 = 25072;
-pub const CIOC_KERNEL_VERSION: u32 = 3221775114;
-pub const BTRFS_IOC_CLONE_RANGE: u32 = 1075876877;
-pub const SNAPSHOT_UNFREEZE: u32 = 13058;
-pub const F2FS_IOC_START_VOLATILE_WRITE: u32 = 62723;
-pub const PMU_IOC_HAS_ADB: u32 = 2148024836;
-pub const I2OGETIOPS: u32 = 2149607680;
-pub const VIDIOC_S_FBUF: u32 = 1076909579;
-pub const PPRCONTROL: u32 = 2147577987;
-pub const CHIOSPICKER: u32 = 1074029317;
-pub const VFIO_IOMMU_SPAPR_REGISTER_MEMORY: u32 = 15221;
-pub const TUNGETSNDBUF: u32 = 2147767507;
-pub const GSMIOC_SETCONF: u32 = 1078740737;
-pub const IOC_PR_PREEMPT: u32 = 1075343563;
-pub const KCOV_INIT_TRACE: u32 = 2148033281;
-pub const SONYPI_IOCGBAT1CAP: u32 = 2147644930;
-pub const SWITCHTEC_IOCTL_FLASH_INFO: u32 = 2148554560;
-pub const MTIOCTOP: u32 = 1074294017;
-pub const VHOST_VDPA_SET_STATUS: u32 = 1073852274;
-pub const VHOST_SCSI_SET_EVENTS_MISSED: u32 = 1074048835;
-pub const VFIO_IOMMU_DIRTY_PAGES: u32 = 15221;
-pub const BTRFS_IOC_SCRUB_PROGRESS: u32 = 3288372253;
-pub const PPPIOCGMRU: u32 = 2147775571;
-pub const BTRFS_IOC_DEV_REPLACE: u32 = 3391657013;
-pub const PPPIOCGFLAGS: u32 = 2147775578;
-pub const NILFS_IOCTL_SET_SUINFO: u32 = 1075342989;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER2: u32 = 3222807316;
-pub const ATM_DELLECSADDR: u32 = 1074815375;
-pub const FW_CDEV_IOC_GET_SPEED: u32 = 8977;
-pub const PPPIOCGIDLE32: u32 = 2148037695;
-pub const VFIO_DEVICE_RESET: u32 = 15215;
-pub const GPIO_GET_LINEINFO_UNWATCH_IOCTL: u32 = 3221533708;
-pub const WDIOC_GETSTATUS: u32 = 2147768065;
-pub const BTRFS_IOC_SET_FEATURES: u32 = 1076925497;
-pub const IOCTL_MEI_CONNECT_CLIENT: u32 = 3222292481;
-pub const VIDIOC_OMAP3ISP_AEWB_CFG: u32 = 3223344835;
-pub const PCITEST_READ: u32 = 1074286597;
-pub const VFIO_GROUP_GET_STATUS: u32 = 15207;
-pub const MATROXFB_GET_ALL_OUTPUTS: u32 = 2148036347;
-pub const USBDEVFS_CLEAR_HALT: u32 = 2147767573;
-pub const VIDIOC_DECODER_CMD: u32 = 3225966176;
-pub const VIDIOC_G_AUDIO: u32 = 2150913569;
-pub const CCISS_RESCANDISK: u32 = 16912;
-pub const RIO_DISABLE_PORTWRITE_RANGE: u32 = 1074818316;
-pub const IOC_OPAL_SECURE_ERASE_LR: u32 = 1091596519;
-pub const USBDEVFS_REAPURB: u32 = 1074287884;
-pub const DFL_FPGA_CHECK_EXTENSION: u32 = 46593;
-pub const AUTOFS_IOC_PROTOVER: u32 = 2147783523;
-pub const FSL_HV_IOCTL_MEMCPY: u32 = 3223891717;
-pub const BTRFS_IOC_GET_FEATURES: u32 = 2149094457;
-pub const PCITEST_MSIX: u32 = 1074024455;
-pub const BTRFS_IOC_DEFRAG_RANGE: u32 = 1076925456;
-pub const UI_BEGIN_FF_ERASE: u32 = 3222033866;
-pub const DM_GET_TARGET_VERSION: u32 = 3241737489;
-pub const PPPIOCGIDLE: u32 = 2148561983;
-pub const NVRAM_SETCKS: u32 = 28737;
-pub const WDIOC_GETSUPPORT: u32 = 2150127360;
-pub const GSMIOC_ENABLE_NET: u32 = 1077167874;
-pub const GPIO_GET_CHIPINFO_IOCTL: u32 = 2151986177;
-pub const NE_ADD_VCPU: u32 = 3221532193;
-pub const EVIOCSKEYCODE_V2: u32 = 1076380932;
-pub const PTP_SYS_OFFSET_EXTENDED2: u32 = 3300932882;
-pub const SCIF_FENCE_WAIT: u32 = 3221517072;
-pub const RIO_TRANSFER: u32 = 3222826261;
-pub const FSL_HV_IOCTL_DOORBELL: u32 = 3221794566;
-pub const RIO_MPORT_MAINT_WRITE_LOCAL: u32 = 1075342598;
-pub const I2OEVTREG: u32 = 1074555146;
-pub const I2OPARMGET: u32 = 3223873796;
-pub const EVIOCGID: u32 = 2148025602;
-pub const BTRFS_IOC_QGROUP_CREATE: u32 = 1074828330;
-pub const AUTOFS_DEV_IOCTL_SETPIPEFD: u32 = 3222836088;
-pub const VIDIOC_S_PARM: u32 = 3234616854;
-pub const TUNSETSTEERINGEBPF: u32 = 2147767520;
-pub const ATM_GETNAMES: u32 = 1074815363;
-pub const VIDIOC_QUERYMENU: u32 = 3224131109;
-pub const DFL_FPGA_PORT_DMA_UNMAP: u32 = 46660;
-pub const I2OLCTGET: u32 = 3222825218;
-pub const FS_IOC_GET_ENCRYPTION_PWSALT: u32 = 1074816532;
-pub const NS_SETBUFLEV: u32 = 1074815330;
-pub const BLKCLOSEZONE: u32 = 1074795143;
-pub const SONET_GETFRSENSE: u32 = 2147901719;
-pub const UI_SET_EVBIT: u32 = 1074025828;
-pub const DM_LIST_VERSIONS: u32 = 3241737485;
-pub const HIDIOCGSTRING: u32 = 2164541444;
-pub const PPPIOCATTCHAN: u32 = 1074033720;
-pub const VDUSE_DEV_SET_CONFIG: u32 = 1074299154;
-pub const TUNGETFEATURES: u32 = 2147767503;
-pub const VFIO_GROUP_UNSET_CONTAINER: u32 = 15209;
-pub const IPMICTL_SET_MY_ADDRESS_CMD: u32 = 2147772689;
-pub const CCISS_REGNEWDISK: u32 = 1074020877;
-pub const VIDIOC_QUERY_DV_TIMINGS: u32 = 2156156515;
-pub const PHN_SETREGS: u32 = 1076391944;
-pub const FAT_IOCTL_GET_ATTRIBUTES: u32 = 2147774992;
-pub const FSL_MC_SEND_MC_COMMAND: u32 = 3225440992;
-pub const TUNGETIFF: u32 = 2147767506;
-pub const PTP_CLOCK_GETCAPS2: u32 = 2152742154;
-pub const BTRFS_IOC_RESIZE: u32 = 1342215171;
-pub const VHOST_SET_VRING_ENDIAN: u32 = 1074310931;
-pub const PPS_KC_BIND: u32 = 1074294949;
-pub const F2FS_IOC_WRITE_CHECKPOINT: u32 = 62727;
-pub const UI_SET_FFBIT: u32 = 1074025835;
-pub const IPMICTL_GET_MY_LUN_CMD: u32 = 2147772692;
-pub const CEC_ADAP_G_PHYS_ADDR: u32 = 2147639553;
-pub const CEC_G_MODE: u32 = 2147770632;
-pub const USBDEVFS_RESETEP: u32 = 2147767555;
-pub const MEDIA_REQUEST_IOC_QUEUE: u32 = 31872;
-pub const USBDEVFS_ALLOC_STREAMS: u32 = 2148029724;
-pub const MGSL_IOCSXCTRL: u32 = 27925;
-pub const MEDIA_IOC_G_TOPOLOGY: u32 = 3225975812;
-pub const PPPIOCUNBRIDGECHAN: u32 = 29748;
-pub const F2FS_IOC_COMMIT_ATOMIC_WRITE: u32 = 62722;
-pub const ISST_IF_GET_PLATFORM_INFO: u32 = 2148072960;
-pub const SCIF_FENCE_MARK: u32 = 3222303503;
-pub const USBDEVFS_RELEASE_PORT: u32 = 2147767577;
-pub const VFIO_CHECK_EXTENSION: u32 = 15205;
-pub const BTRFS_IOC_QGROUP_LIMIT: u32 = 2150667307;
-pub const FAT_IOCTL_GET_VOLUME_ID: u32 = 2147774995;
-pub const UI_SET_PHYS: u32 = 1074287980;
-pub const FDWERRORGET: u32 = 2150105623;
-pub const VIDIOC_SUBDEV_G_EDID: u32 = 3223868968;
-pub const MGSL_IOCGSTATS: u32 = 27911;
-pub const RPROC_SET_SHUTDOWN_ON_RELEASE: u32 = 1074050817;
-pub const SIOCGSTAMP_NEW: u32 = 2148567302;
-pub const RTC_WKALM_RD: u32 = 2150133776;
-pub const PHN_GET_REG: u32 = 3221778432;
-pub const DELL_WMI_SMBIOS_CMD: u32 = 3224655616;
-pub const PHN_NOT_OH: u32 = 28676;
-pub const PPGETMODES: u32 = 2147774615;
-pub const CHIOGPARAMS: u32 = 2148819718;
-pub const VFIO_DEVICE_GET_GFX_DMABUF: u32 = 15219;
-pub const VHOST_SET_VRING_BUSYLOOP_TIMEOUT: u32 = 1074310947;
-pub const VIDIOC_SUBDEV_G_SELECTION: u32 = 3225441853;
-pub const BTRFS_IOC_RM_DEV_V2: u32 = 1342215226;
-pub const MGSL_IOCWAITGPIO: u32 = 3222301970;
-pub const PMU_IOC_CAN_SLEEP: u32 = 2148024837;
-pub const KCOV_ENABLE: u32 = 25444;
-pub const BTRFS_IOC_CLONE: u32 = 1074041865;
-pub const F2FS_IOC_DEFRAGMENT: u32 = 3222336776;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE: u32 = 1074012942;
-pub const AGPIOC_ALLOCATE: u32 = 3221766406;
-pub const NE_SET_USER_MEMORY_REGION: u32 = 1075359267;
-pub const MGSL_IOCTXABORT: u32 = 27910;
-pub const MGSL_IOCSGPIO: u32 = 1074818320;
-pub const LIRC_SET_REC_CARRIER: u32 = 1074030868;
-pub const F2FS_IOC_FLUSH_DEVICE: u32 = 1074328842;
-pub const SNAPSHOT_ATOMIC_RESTORE: u32 = 13060;
-pub const RTC_UIE_OFF: u32 = 28676;
-pub const BT_BMC_IOCTL_SMS_ATN: u32 = 45312;
-pub const NVME_IOCTL_ID: u32 = 20032;
-pub const NE_START_ENCLAVE: u32 = 3222318628;
-pub const VIDIOC_STREAMON: u32 = 1074026002;
-pub const FDPOLLDRVSTAT: u32 = 2152727059;
-pub const AUTOFS_DEV_IOCTL_READY: u32 = 3222836086;
-pub const VIDIOC_ENUMAUDOUT: u32 = 3224655426;
-pub const VIDIOC_SUBDEV_S_STD: u32 = 1074288152;
-pub const WDIOC_GETTIMELEFT: u32 = 2147768074;
-pub const ATM_GETLINKRATE: u32 = 1074815361;
-pub const RTC_WKALM_SET: u32 = 1076391951;
-pub const VHOST_GET_BACKEND_FEATURES: u32 = 2148052774;
-pub const ATMARP_ENCAP: u32 = 25061;
-pub const CAPI_GET_FLAGS: u32 = 2147762979;
-pub const IPMICTL_SET_MY_CHANNEL_ADDRESS_CMD: u32 = 2147772696;
-pub const DFL_FPGA_FME_PORT_ASSIGN: u32 = 1074050690;
-pub const NS_GET_OWNER_UID: u32 = 46852;
-pub const VIDIOC_OVERLAY: u32 = 1074025998;
-pub const BTRFS_IOC_WAIT_SYNC: u32 = 1074304022;
-pub const GPIOHANDLE_SET_CONFIG_IOCTL: u32 = 3226776586;
-pub const VHOST_GET_VRING_ENDIAN: u32 = 1074310932;
-pub const ATM_GETADDR: u32 = 1074815366;
-pub const PHN_GET_REGS: u32 = 3221778434;
-pub const AUTOFS_DEV_IOCTL_REQUESTER: u32 = 3222836091;
-pub const AUTOFS_DEV_IOCTL_EXPIRE: u32 = 3222836092;
-pub const SNAPSHOT_S2RAM: u32 = 13067;
-pub const JSIOCSAXMAP: u32 = 1077963313;
-pub const F2FS_IOC_SET_COMPRESS_OPTION: u32 = 1073935638;
-pub const VBG_IOCTL_HGCM_DISCONNECT: u32 = 3223082501;
-pub const SCIF_FENCE_SIGNAL: u32 = 3223876369;
-pub const VFIO_DEVICE_GET_PCI_HOT_RESET_INFO: u32 = 15216;
-pub const VIDIOC_SUBDEV_ENUM_MBUS_CODE: u32 = 3224393218;
-pub const MMTIMER_GETOFFSET: u32 = 27904;
-pub const RIO_CM_CHAN_LISTEN: u32 = 1073898246;
-pub const ATM_SETSC: u32 = 1074029041;
-pub const F2FS_IOC_SHUTDOWN: u32 = 2147768445;
-pub const NVME_IOCTL_RESCAN: u32 = 20038;
-pub const BLKOPENZONE: u32 = 1074795142;
-pub const DM_VERSION: u32 = 3241737472;
-pub const CEC_TRANSMIT: u32 = 3224920325;
-pub const FS_IOC_GET_ENCRYPTION_POLICY_EX: u32 = 3221841430;
-pub const SIOCMKCLIP: u32 = 25056;
-pub const IPMI_BMC_IOCTL_CLEAR_SMS_ATN: u32 = 45313;
-pub const HIDIOCGVERSION: u32 = 2147764225;
-pub const VIDIOC_S_INPUT: u32 = 3221509671;
-pub const VIDIOC_G_CROP: u32 = 3222558267;
-pub const LIRC_SET_WIDEBAND_RECEIVER: u32 = 1074030883;
-pub const EVIOCGEFFECTS: u32 = 2147763588;
-pub const UVCIOC_CTRL_QUERY: u32 = 3222304033;
-pub const IOC_OPAL_GENERIC_TABLE_RW: u32 = 1094217963;
-pub const FS_IOC_READ_VERITY_METADATA: u32 = 3223873159;
-pub const ND_IOCTL_SET_CONFIG_DATA: u32 = 3221769734;
-pub const USBDEVFS_GETDRIVER: u32 = 1090802952;
-pub const IDT77105_GETSTAT: u32 = 1074815282;
-pub const HIDIOCINITREPORT: u32 = 18437;
-pub const VFIO_DEVICE_GET_INFO: u32 = 15211;
-pub const RIO_CM_CHAN_RECEIVE: u32 = 3222299402;
-pub const RNDGETENTCNT: u32 = 2147766784;
-pub const PPPIOCNEWUNIT: u32 = 3221517374;
-pub const BTRFS_IOC_INO_LOOKUP: u32 = 3489698834;
-pub const FDRESET: u32 = 596;
-pub const IOC_PR_REGISTER: u32 = 1075343560;
-pub const HIDIOCSREPORT: u32 = 1074546696;
-pub const TEE_IOC_OPEN_SESSION: u32 = 2148574210;
-pub const TEE_IOC_SUPPL_RECV: u32 = 2148574214;
-pub const BTRFS_IOC_BALANCE_CTL: u32 = 1074041889;
-pub const GPIO_GET_LINEINFO_WATCH_IOCTL: u32 = 3225990155;
-pub const HIDIOCGRAWINFO: u32 = 2148026371;
-pub const PPPIOCSCOMPRESS: u32 = 1074820173;
-pub const USBDEVFS_CONNECTINFO: u32 = 1074287889;
-pub const BLKRESETZONE: u32 = 1074795139;
-pub const CHIOINITELEM: u32 = 25361;
-pub const NILFS_IOCTL_SET_ALLOC_RANGE: u32 = 1074818700;
-pub const AUTOFS_DEV_IOCTL_CATATONIC: u32 = 3222836089;
-pub const RIO_MPORT_MAINT_HDID_SET: u32 = 1073900801;
-pub const PPGETPHASE: u32 = 2147774617;
-pub const USBDEVFS_DISCONNECT_CLAIM: u32 = 2164806939;
-pub const FDMSGON: u32 = 581;
-pub const VIDIOC_G_SLICED_VBI_CAP: u32 = 3228849733;
-pub const BTRFS_IOC_BALANCE_V2: u32 = 3288372256;
-pub const MEDIA_REQUEST_IOC_REINIT: u32 = 31873;
-pub const IOC_OPAL_ERASE_LR: u32 = 1091596518;
-pub const FDFMTBEG: u32 = 583;
-pub const RNDRESEEDCRNG: u32 = 20999;
-pub const ISST_IF_GET_PHY_ID: u32 = 3221814785;
-pub const TUNSETNOCSUM: u32 = 1074025672;
-pub const SONET_GETSTAT: u32 = 2149867792;
-pub const TFD_IOC_SET_TICKS: u32 = 1074287616;
-pub const PPDATADIR: u32 = 1074032784;
-pub const IOC_OPAL_ENABLE_DISABLE_MBR: u32 = 1091596517;
-pub const GPIO_V2_GET_LINE_IOCTL: u32 = 3260068871;
-pub const RIO_CM_CHAN_SEND: u32 = 1074815753;
-pub const PPWCTLONIRQ: u32 = 1073836178;
-pub const SONYPI_IOCGBRT: u32 = 2147579392;
-pub const IOC_PR_RELEASE: u32 = 1074819274;
-pub const PPCLRIRQ: u32 = 2147774611;
-pub const IPMICTL_SET_MY_CHANNEL_LUN_CMD: u32 = 2147772698;
-pub const MGSL_IOCSXSYNC: u32 = 27923;
-pub const HPET_IE_OFF: u32 = 26626;
-pub const IOC_OPAL_ACTIVATE_USR: u32 = 1091596513;
-pub const SONET_SETFRAMING: u32 = 1074028821;
-pub const PERF_EVENT_IOC_PAUSE_OUTPUT: u32 = 1074013193;
-pub const BTRFS_IOC_LOGICAL_INO_V2: u32 = 3224933435;
-pub const VBG_IOCTL_HGCM_CONNECT: u32 = 3231471108;
-pub const BLKFINISHZONE: u32 = 1074795144;
-pub const EVIOCREVOKE: u32 = 1074021777;
-pub const VFIO_DEVICE_FEATURE: u32 = 15221;
-pub const CCISS_GETPCIINFO: u32 = 2148024833;
-pub const ISST_IF_MBOX_COMMAND: u32 = 3221814787;
-pub const SCIF_ACCEPTREQ: u32 = 3222303492;
-pub const PERF_EVENT_IOC_QUERY_BPF: u32 = 3221758986;
-pub const VIDIOC_STREAMOFF: u32 = 1074026003;
-pub const VDUSE_DESTROY_DEV: u32 = 1090552067;
-pub const FDGETFDCSTAT: u32 = 2150105621;
-pub const CM_IOCGATR: u32 = 3221775105;
-pub const VIDIOC_S_PRIORITY: u32 = 1074026052;
-pub const SNAPSHOT_FREEZE: u32 = 13057;
-pub const VIDIOC_ENUMINPUT: u32 = 3226490394;
-pub const ZATM_GETPOOLZ: u32 = 1074815330;
-pub const RIO_DISABLE_DOORBELL_RANGE: u32 = 1074294026;
-pub const GPIO_V2_GET_LINEINFO_WATCH_IOCTL: u32 = 3238048774;
-pub const VIDIOC_G_STD: u32 = 2148029975;
-pub const USBDEVFS_ALLOW_SUSPEND: u32 = 21794;
-pub const SONET_GETSTATZ: u32 = 2149867793;
-pub const SCIF_ACCEPTREG: u32 = 3221779205;
-pub const VIDIOC_ENCODER_CMD: u32 = 3223869005;
-pub const PPPIOCSRASYNCMAP: u32 = 1074033748;
-pub const IOCTL_MEI_NOTIFY_SET: u32 = 1074022402;
-pub const BTRFS_IOC_QUOTA_RESCAN_STATUS: u32 = 2151715885;
-pub const F2FS_IOC_GARBAGE_COLLECT: u32 = 1074066694;
-pub const ATMLEC_CTRL: u32 = 25040;
-pub const MATROXFB_GET_AVAILABLE_OUTPUTS: u32 = 2148036345;
-pub const DM_DEV_CREATE: u32 = 3241737475;
-pub const VHOST_VDPA_GET_VRING_NUM: u32 = 2147659638;
-pub const VIDIOC_G_CTRL: u32 = 3221771803;
-pub const NBD_CLEAR_SOCK: u32 = 43780;
-pub const VFIO_DEVICE_QUERY_GFX_PLANE: u32 = 15218;
-pub const WDIOC_KEEPALIVE: u32 = 2147768069;
-pub const NVME_IOCTL_SUBSYS_RESET: u32 = 20037;
-pub const PTP_EXTTS_REQUEST2: u32 = 1074806027;
-pub const PCITEST_BAR: u32 = 20481;
-pub const MGSL_IOCGGPIO: u32 = 2148560145;
-pub const EVIOCSREP: u32 = 1074283779;
-pub const VFIO_DEVICE_GET_IRQ_INFO: u32 = 15213;
-pub const HPET_DPI: u32 = 26629;
-pub const VDUSE_VQ_SETUP_KICKFD: u32 = 1074299158;
-pub const ND_IOCTL_CALL: u32 = 3225439754;
-pub const HIDIOCGDEVINFO: u32 = 2149337091;
-pub const DM_TABLE_DEPS: u32 = 3241737483;
-pub const BTRFS_IOC_DEV_INFO: u32 = 3489698846;
-pub const VDUSE_IOTLB_GET_FD: u32 = 3223355664;
-pub const FW_CDEV_IOC_GET_INFO: u32 = 3223855872;
-pub const VIDIOC_G_PRIORITY: u32 = 2147767875;
-pub const ATM_NEWBACKENDIF: u32 = 1073897971;
-pub const VIDIOC_S_EXT_CTRLS: u32 = 3223344712;
-pub const VIDIOC_SUBDEV_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const VIDIOC_OMAP3ISP_CCDC_CFG: u32 = 3224917697;
-pub const VIDIOC_S_HW_FREQ_SEEK: u32 = 1076909650;
-pub const DM_TABLE_LOAD: u32 = 3241737481;
-pub const F2FS_IOC_START_ATOMIC_WRITE: u32 = 62721;
-pub const VIDIOC_G_OUTPUT: u32 = 2147767854;
-pub const ATM_DROPPARTY: u32 = 1074029045;
-pub const CHIOGELEM: u32 = 1080845072;
-pub const BTRFS_IOC_GET_SUPPORTED_FEATURES: u32 = 2152240185;
-pub const EVIOCSKEYCODE: u32 = 1074283780;
-pub const NE_GET_IMAGE_LOAD_INFO: u32 = 3222318626;
-pub const TUNSETLINK: u32 = 1074025677;
-pub const FW_CDEV_IOC_ADD_DESCRIPTOR: u32 = 3222807302;
-pub const BTRFS_IOC_SCRUB_CANCEL: u32 = 37916;
-pub const PPS_SETPARAMS: u32 = 1074294946;
-pub const IOC_OPAL_LR_SETUP: u32 = 1093169379;
-pub const FW_CDEV_IOC_DEALLOCATE: u32 = 1074012931;
-pub const WDIOC_SETTIMEOUT: u32 = 3221509894;
-pub const IOC_WATCH_QUEUE_SET_FILTER: u32 = 22369;
-pub const CAPI_GET_MANUFACTURER: u32 = 3221504774;
-pub const VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY: u32 = 15222;
-pub const ASPEED_P2A_CTRL_IOCTL_SET_WINDOW: u32 = 1074836224;
-pub const VIDIOC_G_EDID: u32 = 3223868968;
-pub const F2FS_IOC_GARBAGE_COLLECT_RANGE: u32 = 1075377419;
-pub const RIO_MAP_INBOUND: u32 = 3223874833;
-pub const IOC_OPAL_TAKE_OWNERSHIP: u32 = 1091072222;
-pub const USBDEVFS_CLAIM_PORT: u32 = 2147767576;
-pub const VIDIOC_S_AUDIO: u32 = 1077171746;
-pub const FS_IOC_GET_ENCRYPTION_NONCE: u32 = 2148558363;
-pub const FW_CDEV_IOC_SEND_STREAM_PACKET: u32 = 1076372243;
-pub const BTRFS_IOC_SNAP_DESTROY: u32 = 1342215183;
-pub const SNAPSHOT_FREE: u32 = 13061;
-pub const I8K_GET_SPEED: u32 = 3221776773;
-pub const HIDIOCGREPORT: u32 = 1074546695;
-pub const HPET_EPI: u32 = 26628;
-pub const JSIOCSCORR: u32 = 1076128289;
-pub const IOC_PR_PREEMPT_ABORT: u32 = 1075343564;
-pub const RIO_MAP_OUTBOUND: u32 = 3223874831;
-pub const ATM_SETESI: u32 = 1074815372;
-pub const FW_CDEV_IOC_START_ISO: u32 = 1074799370;
-pub const ATM_DELADDR: u32 = 1074815369;
-pub const PPFCONTROL: u32 = 1073901710;
-pub const SONYPI_IOCGFAN: u32 = 2147579402;
-pub const RTC_IRQP_SET: u32 = 1074294796;
-pub const PCITEST_WRITE: u32 = 1074286596;
-pub const PPCLAIM: u32 = 28811;
-pub const VIDIOC_S_JPEGCOMP: u32 = 1082938942;
-pub const IPMICTL_UNREGISTER_FOR_CMD: u32 = 2147641615;
-pub const VHOST_SET_FEATURES: u32 = 1074310912;
-pub const TOSHIBA_ACPI_SCI: u32 = 3222828177;
-pub const VIDIOC_DQBUF: u32 = 3227014673;
-pub const BTRFS_IOC_BALANCE_PROGRESS: u32 = 2214630434;
-pub const BTRFS_IOC_SUBVOL_SETFLAGS: u32 = 1074304026;
-pub const ATMLEC_MCAST: u32 = 25042;
-pub const MMTIMER_GETFREQ: u32 = 2148035842;
-pub const VIDIOC_G_SELECTION: u32 = 3225441886;
-pub const RTC_ALM_SET: u32 = 1076129799;
-pub const PPPOEIOCSFWD: u32 = 1074311424;
-pub const IPMICTL_GET_MAINTENANCE_MODE_CMD: u32 = 2147772702;
-pub const FS_IOC_ENABLE_VERITY: u32 = 1082156677;
-pub const NILFS_IOCTL_GET_BDESCS: u32 = 3222826631;
-pub const FDFMTEND: u32 = 585;
-pub const DMA_BUF_SET_NAME: u32 = 1074291201;
-pub const UI_BEGIN_FF_UPLOAD: u32 = 3228063176;
-pub const RTC_UIE_ON: u32 = 28675;
-pub const PPRELEASE: u32 = 28812;
-pub const VFIO_IOMMU_UNMAP_DMA: u32 = 15218;
-pub const VIDIOC_OMAP3ISP_PRV_CFG: u32 = 3228587714;
-pub const GPIO_GET_LINEHANDLE_IOCTL: u32 = 3245126659;
-pub const VFAT_IOCTL_READDIR_BOTH: u32 = 2184212993;
-pub const NVME_IOCTL_ADMIN_CMD: u32 = 3225964097;
-pub const VHOST_SET_VRING_KICK: u32 = 1074310944;
-pub const BTRFS_IOC_SUBVOL_CREATE_V2: u32 = 1342215192;
-pub const BTRFS_IOC_SNAP_CREATE: u32 = 1342215169;
-pub const SONYPI_IOCGBAT2CAP: u32 = 2147644932;
-pub const PPNEGOT: u32 = 1074032785;
-pub const NBD_PRINT_DEBUG: u32 = 43782;
-pub const BTRFS_IOC_INO_LOOKUP_USER: u32 = 3489698878;
-pub const BTRFS_IOC_GET_SUBVOL_ROOTREF: u32 = 3489698877;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS: u32 = 3225445913;
-pub const BTRFS_IOC_FS_INFO: u32 = 2214630431;
-pub const VIDIOC_ENUM_FMT: u32 = 3225441794;
-pub const VIDIOC_G_INPUT: u32 = 2147767846;
-pub const VTPM_PROXY_IOC_NEW_DEV: u32 = 3222577408;
-pub const DFL_FPGA_FME_ERR_GET_IRQ_NUM: u32 = 2147792515;
-pub const ND_IOCTL_DIMM_FLAGS: u32 = 3221769731;
-pub const BTRFS_IOC_QUOTA_RESCAN: u32 = 1077974060;
-pub const MMTIMER_GETCOUNTER: u32 = 2148035849;
-pub const MATROXFB_GET_OUTPUT_MODE: u32 = 3221778170;
-pub const BTRFS_IOC_QUOTA_RESCAN_WAIT: u32 = 37934;
-pub const RIO_CM_CHAN_BIND: u32 = 1074291461;
-pub const HIDIOCGRDESC: u32 = 2416199682;
-pub const MGSL_IOCGIF: u32 = 27915;
-pub const VIDIOC_S_OUTPUT: u32 = 3221509679;
-pub const HIDIOCGREPORTINFO: u32 = 3222030345;
-pub const WDIOC_GETBOOTSTATUS: u32 = 2147768066;
-pub const VDUSE_VQ_GET_INFO: u32 = 3224404245;
-pub const ACRN_IOCTL_ASSIGN_PCIDEV: u32 = 1076142677;
-pub const BLKGETDISKSEQ: u32 = 2148012672;
-pub const ACRN_IOCTL_PM_GET_CPU_STATE: u32 = 3221791328;
-pub const ACRN_IOCTL_DESTROY_VM: u32 = 41489;
-pub const ACRN_IOCTL_SET_PTDEV_INTR: u32 = 1075094099;
-pub const ACRN_IOCTL_CREATE_IOREQ_CLIENT: u32 = 41522;
-pub const ACRN_IOCTL_IRQFD: u32 = 1075356273;
-pub const ACRN_IOCTL_CREATE_VM: u32 = 3224412688;
-pub const ACRN_IOCTL_INJECT_MSI: u32 = 1074831907;
-pub const ACRN_IOCTL_ATTACH_IOREQ_CLIENT: u32 = 41523;
-pub const ACRN_IOCTL_RESET_PTDEV_INTR: u32 = 1075094100;
-pub const ACRN_IOCTL_NOTIFY_REQUEST_FINISH: u32 = 1074307633;
-pub const ACRN_IOCTL_SET_IRQLINE: u32 = 1074307621;
-pub const ACRN_IOCTL_START_VM: u32 = 41490;
-pub const ACRN_IOCTL_SET_VCPU_REGS: u32 = 1093181974;
-pub const ACRN_IOCTL_SET_MEMSEG: u32 = 1075880513;
-pub const ACRN_IOCTL_PAUSE_VM: u32 = 41491;
-pub const ACRN_IOCTL_CLEAR_VM_IOREQ: u32 = 41525;
-pub const ACRN_IOCTL_UNSET_MEMSEG: u32 = 1075880514;
-pub const ACRN_IOCTL_IOEVENTFD: u32 = 1075880560;
-pub const ACRN_IOCTL_DEASSIGN_PCIDEV: u32 = 1076142678;
-pub const ACRN_IOCTL_RESET_VM: u32 = 41493;
-pub const ACRN_IOCTL_DESTROY_IOREQ_CLIENT: u32 = 41524;
-pub const ACRN_IOCTL_VM_INTR_MONITOR: u32 = 1074307620;
diff --git a/vendor/linux-raw-sys-0.3.2/src/loongarch64/netlink.rs b/vendor/linux-raw-sys-0.3.2/src/loongarch64/netlink.rs
deleted file mode 100644
index 8069c2f5c..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/loongarch64/netlink.rs
+++ /dev/null
@@ -1,2860 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const NETLINK_ROUTE: u32 = 0;
-pub const NETLINK_UNUSED: u32 = 1;
-pub const NETLINK_USERSOCK: u32 = 2;
-pub const NETLINK_FIREWALL: u32 = 3;
-pub const NETLINK_SOCK_DIAG: u32 = 4;
-pub const NETLINK_NFLOG: u32 = 5;
-pub const NETLINK_XFRM: u32 = 6;
-pub const NETLINK_SELINUX: u32 = 7;
-pub const NETLINK_ISCSI: u32 = 8;
-pub const NETLINK_AUDIT: u32 = 9;
-pub const NETLINK_FIB_LOOKUP: u32 = 10;
-pub const NETLINK_CONNECTOR: u32 = 11;
-pub const NETLINK_NETFILTER: u32 = 12;
-pub const NETLINK_IP6_FW: u32 = 13;
-pub const NETLINK_DNRTMSG: u32 = 14;
-pub const NETLINK_KOBJECT_UEVENT: u32 = 15;
-pub const NETLINK_GENERIC: u32 = 16;
-pub const NETLINK_SCSITRANSPORT: u32 = 18;
-pub const NETLINK_ECRYPTFS: u32 = 19;
-pub const NETLINK_RDMA: u32 = 20;
-pub const NETLINK_CRYPTO: u32 = 21;
-pub const NETLINK_SMC: u32 = 22;
-pub const NETLINK_INET_DIAG: u32 = 4;
-pub const MAX_LINKS: u32 = 32;
-pub const NLM_F_REQUEST: u32 = 1;
-pub const NLM_F_MULTI: u32 = 2;
-pub const NLM_F_ACK: u32 = 4;
-pub const NLM_F_ECHO: u32 = 8;
-pub const NLM_F_DUMP_INTR: u32 = 16;
-pub const NLM_F_DUMP_FILTERED: u32 = 32;
-pub const NLM_F_ROOT: u32 = 256;
-pub const NLM_F_MATCH: u32 = 512;
-pub const NLM_F_ATOMIC: u32 = 1024;
-pub const NLM_F_DUMP: u32 = 768;
-pub const NLM_F_REPLACE: u32 = 256;
-pub const NLM_F_EXCL: u32 = 512;
-pub const NLM_F_CREATE: u32 = 1024;
-pub const NLM_F_APPEND: u32 = 2048;
-pub const NLM_F_NONREC: u32 = 256;
-pub const NLM_F_BULK: u32 = 512;
-pub const NLM_F_CAPPED: u32 = 256;
-pub const NLM_F_ACK_TLVS: u32 = 512;
-pub const NLMSG_ALIGNTO: u32 = 4;
-pub const NLMSG_NOOP: u32 = 1;
-pub const NLMSG_ERROR: u32 = 2;
-pub const NLMSG_DONE: u32 = 3;
-pub const NLMSG_OVERRUN: u32 = 4;
-pub const NLMSG_MIN_TYPE: u32 = 16;
-pub const NETLINK_ADD_MEMBERSHIP: u32 = 1;
-pub const NETLINK_DROP_MEMBERSHIP: u32 = 2;
-pub const NETLINK_PKTINFO: u32 = 3;
-pub const NETLINK_BROADCAST_ERROR: u32 = 4;
-pub const NETLINK_NO_ENOBUFS: u32 = 5;
-pub const NETLINK_RX_RING: u32 = 6;
-pub const NETLINK_TX_RING: u32 = 7;
-pub const NETLINK_LISTEN_ALL_NSID: u32 = 8;
-pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9;
-pub const NETLINK_CAP_ACK: u32 = 10;
-pub const NETLINK_EXT_ACK: u32 = 11;
-pub const NETLINK_GET_STRICT_CHK: u32 = 12;
-pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4;
-pub const NET_MAJOR: u32 = 36;
-pub const NLA_F_NESTED: u32 = 32768;
-pub const NLA_F_NET_BYTEORDER: u32 = 16384;
-pub const NLA_TYPE_MASK: i32 = -49153;
-pub const NLA_ALIGNTO: u32 = 4;
-pub const MACVLAN_FLAG_NOPROMISC: u32 = 1;
-pub const MACVLAN_FLAG_NODST: u32 = 2;
-pub const IPVLAN_F_PRIVATE: u32 = 1;
-pub const IPVLAN_F_VEPA: u32 = 2;
-pub const TUNNEL_MSG_FLAG_STATS: u32 = 1;
-pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1;
-pub const MAX_VLAN_LIST_LEN: u32 = 1;
-pub const PORT_PROFILE_MAX: u32 = 40;
-pub const PORT_UUID_MAX: u32 = 16;
-pub const PORT_SELF_VF: i32 = -1;
-pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1;
-pub const XDP_FLAGS_SKB_MODE: u32 = 2;
-pub const XDP_FLAGS_DRV_MODE: u32 = 4;
-pub const XDP_FLAGS_HW_MODE: u32 = 8;
-pub const XDP_FLAGS_REPLACE: u32 = 16;
-pub const XDP_FLAGS_MODES: u32 = 14;
-pub const XDP_FLAGS_MASK: u32 = 31;
-pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1;
-pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32;
-pub const IFA_F_SECONDARY: u32 = 1;
-pub const IFA_F_TEMPORARY: u32 = 1;
-pub const IFA_F_NODAD: u32 = 2;
-pub const IFA_F_OPTIMISTIC: u32 = 4;
-pub const IFA_F_DADFAILED: u32 = 8;
-pub const IFA_F_HOMEADDRESS: u32 = 16;
-pub const IFA_F_DEPRECATED: u32 = 32;
-pub const IFA_F_TENTATIVE: u32 = 64;
-pub const IFA_F_PERMANENT: u32 = 128;
-pub const IFA_F_MANAGETEMPADDR: u32 = 256;
-pub const IFA_F_NOPREFIXROUTE: u32 = 512;
-pub const IFA_F_MCAUTOJOIN: u32 = 1024;
-pub const IFA_F_STABLE_PRIVACY: u32 = 2048;
-pub const IFAPROT_UNSPEC: u32 = 0;
-pub const IFAPROT_KERNEL_LO: u32 = 1;
-pub const IFAPROT_KERNEL_RA: u32 = 2;
-pub const IFAPROT_KERNEL_LL: u32 = 3;
-pub const NTF_USE: u32 = 1;
-pub const NTF_SELF: u32 = 2;
-pub const NTF_MASTER: u32 = 4;
-pub const NTF_PROXY: u32 = 8;
-pub const NTF_EXT_LEARNED: u32 = 16;
-pub const NTF_OFFLOADED: u32 = 32;
-pub const NTF_STICKY: u32 = 64;
-pub const NTF_ROUTER: u32 = 128;
-pub const NTF_EXT_MANAGED: u32 = 1;
-pub const NTF_EXT_LOCKED: u32 = 2;
-pub const NUD_INCOMPLETE: u32 = 1;
-pub const NUD_REACHABLE: u32 = 2;
-pub const NUD_STALE: u32 = 4;
-pub const NUD_DELAY: u32 = 8;
-pub const NUD_PROBE: u32 = 16;
-pub const NUD_FAILED: u32 = 32;
-pub const NUD_NOARP: u32 = 64;
-pub const NUD_PERMANENT: u32 = 128;
-pub const NUD_NONE: u32 = 0;
-pub const RTNL_FAMILY_IPMR: u32 = 128;
-pub const RTNL_FAMILY_IP6MR: u32 = 129;
-pub const RTNL_FAMILY_MAX: u32 = 129;
-pub const RTA_ALIGNTO: u32 = 4;
-pub const RTPROT_UNSPEC: u32 = 0;
-pub const RTPROT_REDIRECT: u32 = 1;
-pub const RTPROT_KERNEL: u32 = 2;
-pub const RTPROT_BOOT: u32 = 3;
-pub const RTPROT_STATIC: u32 = 4;
-pub const RTPROT_GATED: u32 = 8;
-pub const RTPROT_RA: u32 = 9;
-pub const RTPROT_MRT: u32 = 10;
-pub const RTPROT_ZEBRA: u32 = 11;
-pub const RTPROT_BIRD: u32 = 12;
-pub const RTPROT_DNROUTED: u32 = 13;
-pub const RTPROT_XORP: u32 = 14;
-pub const RTPROT_NTK: u32 = 15;
-pub const RTPROT_DHCP: u32 = 16;
-pub const RTPROT_MROUTED: u32 = 17;
-pub const RTPROT_KEEPALIVED: u32 = 18;
-pub const RTPROT_BABEL: u32 = 42;
-pub const RTPROT_OPENR: u32 = 99;
-pub const RTPROT_BGP: u32 = 186;
-pub const RTPROT_ISIS: u32 = 187;
-pub const RTPROT_OSPF: u32 = 188;
-pub const RTPROT_RIP: u32 = 189;
-pub const RTPROT_EIGRP: u32 = 192;
-pub const RTM_F_NOTIFY: u32 = 256;
-pub const RTM_F_CLONED: u32 = 512;
-pub const RTM_F_EQUALIZE: u32 = 1024;
-pub const RTM_F_PREFIX: u32 = 2048;
-pub const RTM_F_LOOKUP_TABLE: u32 = 4096;
-pub const RTM_F_FIB_MATCH: u32 = 8192;
-pub const RTM_F_OFFLOAD: u32 = 16384;
-pub const RTM_F_TRAP: u32 = 32768;
-pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912;
-pub const RTNH_F_DEAD: u32 = 1;
-pub const RTNH_F_PERVASIVE: u32 = 2;
-pub const RTNH_F_ONLINK: u32 = 4;
-pub const RTNH_F_OFFLOAD: u32 = 8;
-pub const RTNH_F_LINKDOWN: u32 = 16;
-pub const RTNH_F_UNRESOLVED: u32 = 32;
-pub const RTNH_F_TRAP: u32 = 64;
-pub const RTNH_COMPARE_MASK: u32 = 89;
-pub const RTNH_ALIGNTO: u32 = 4;
-pub const RTNETLINK_HAVE_PEERINFO: u32 = 1;
-pub const RTAX_FEATURE_ECN: u32 = 1;
-pub const RTAX_FEATURE_SACK: u32 = 2;
-pub const RTAX_FEATURE_TIMESTAMP: u32 = 4;
-pub const RTAX_FEATURE_ALLFRAG: u32 = 8;
-pub const RTAX_FEATURE_MASK: u32 = 15;
-pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295;
-pub const TCA_DUMP_FLAGS_TERSE: u32 = 1;
-pub const RTMGRP_LINK: u32 = 1;
-pub const RTMGRP_NOTIFY: u32 = 2;
-pub const RTMGRP_NEIGH: u32 = 4;
-pub const RTMGRP_TC: u32 = 8;
-pub const RTMGRP_IPV4_IFADDR: u32 = 16;
-pub const RTMGRP_IPV4_MROUTE: u32 = 32;
-pub const RTMGRP_IPV4_ROUTE: u32 = 64;
-pub const RTMGRP_IPV4_RULE: u32 = 128;
-pub const RTMGRP_IPV6_IFADDR: u32 = 256;
-pub const RTMGRP_IPV6_MROUTE: u32 = 512;
-pub const RTMGRP_IPV6_ROUTE: u32 = 1024;
-pub const RTMGRP_IPV6_IFINFO: u32 = 2048;
-pub const RTMGRP_DECnet_IFADDR: u32 = 4096;
-pub const RTMGRP_DECnet_ROUTE: u32 = 16384;
-pub const RTMGRP_IPV6_PREFIX: u32 = 131072;
-pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2;
-pub const RTEXT_FILTER_VF: u32 = 1;
-pub const RTEXT_FILTER_BRVLAN: u32 = 2;
-pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4;
-pub const RTEXT_FILTER_SKIP_STATS: u32 = 8;
-pub const RTEXT_FILTER_MRP: u32 = 16;
-pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32;
-pub const RTEXT_FILTER_CFM_STATUS: u32 = 64;
-pub const RTEXT_FILTER_MST: u32 = 128;
-pub type size_t = crate::ctypes::c_ulong;
-pub type ssize_t = crate::ctypes::c_long;
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 16usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_uid_t = __kernel_uid_t;
-pub type __kernel_old_gid_t = __kernel_gid_t;
-pub type __kernel_old_dev_t = crate::ctypes::c_uint;
-pub type __kernel_size_t = __kernel_ulong_t;
-pub type __kernel_ssize_t = __kernel_long_t;
-pub type __kernel_ptrdiff_t = __kernel_long_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_nl {
-pub nl_family: __kernel_sa_family_t,
-pub nl_pad: crate::ctypes::c_ushort,
-pub nl_pid: __u32,
-pub nl_groups: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsghdr {
-pub nlmsg_len: __u32,
-pub nlmsg_type: __u16,
-pub nlmsg_flags: __u16,
-pub nlmsg_seq: __u32,
-pub nlmsg_pid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsgerr {
-pub error: crate::ctypes::c_int,
-pub msg: nlmsghdr,
-}
-impl nlmsgerr_attrs {
-pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nlmsgerr_attrs {
-NLMSGERR_ATTR_UNUSED = 0,
-NLMSGERR_ATTR_MSG = 1,
-NLMSGERR_ATTR_OFFS = 2,
-NLMSGERR_ATTR_COOKIE = 3,
-NLMSGERR_ATTR_POLICY = 4,
-NLMSGERR_ATTR_MISS_TYPE = 5,
-NLMSGERR_ATTR_MISS_NEST = 6,
-__NLMSGERR_ATTR_MAX = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_pktinfo {
-pub group: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_req {
-pub nm_block_size: crate::ctypes::c_uint,
-pub nm_block_nr: crate::ctypes::c_uint,
-pub nm_frame_size: crate::ctypes::c_uint,
-pub nm_frame_nr: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_hdr {
-pub nm_status: crate::ctypes::c_uint,
-pub nm_len: crate::ctypes::c_uint,
-pub nm_group: __u32,
-pub nm_pid: __u32,
-pub nm_uid: __u32,
-pub nm_gid: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nl_mmap_status {
-NL_MMAP_STATUS_UNUSED = 0,
-NL_MMAP_STATUS_RESERVED = 1,
-NL_MMAP_STATUS_VALID = 2,
-NL_MMAP_STATUS_COPY = 3,
-NL_MMAP_STATUS_SKIP = 4,
-}
-pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED;
-pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-NETLINK_UNCONNECTED = 0,
-NETLINK_CONNECTED = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlattr {
-pub nla_len: __u16,
-pub nla_type: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nla_bitfield32 {
-pub value: __u32,
-pub selector: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_attribute_type {
-NL_ATTR_TYPE_INVALID = 0,
-NL_ATTR_TYPE_FLAG = 1,
-NL_ATTR_TYPE_U8 = 2,
-NL_ATTR_TYPE_U16 = 3,
-NL_ATTR_TYPE_U32 = 4,
-NL_ATTR_TYPE_U64 = 5,
-NL_ATTR_TYPE_S8 = 6,
-NL_ATTR_TYPE_S16 = 7,
-NL_ATTR_TYPE_S32 = 8,
-NL_ATTR_TYPE_S64 = 9,
-NL_ATTR_TYPE_BINARY = 10,
-NL_ATTR_TYPE_STRING = 11,
-NL_ATTR_TYPE_NUL_STRING = 12,
-NL_ATTR_TYPE_NESTED = 13,
-NL_ATTR_TYPE_NESTED_ARRAY = 14,
-NL_ATTR_TYPE_BITFIELD32 = 15,
-}
-impl netlink_policy_type_attr {
-pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_policy_type_attr {
-NL_POLICY_TYPE_ATTR_UNSPEC = 0,
-NL_POLICY_TYPE_ATTR_TYPE = 1,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5,
-NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6,
-NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7,
-NL_POLICY_TYPE_ATTR_POLICY_IDX = 8,
-NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9,
-NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10,
-NL_POLICY_TYPE_ATTR_PAD = 11,
-NL_POLICY_TYPE_ATTR_MASK = 12,
-__NL_POLICY_TYPE_ATTR_MAX = 13,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats {
-pub rx_packets: __u32,
-pub tx_packets: __u32,
-pub rx_bytes: __u32,
-pub tx_bytes: __u32,
-pub rx_errors: __u32,
-pub tx_errors: __u32,
-pub rx_dropped: __u32,
-pub tx_dropped: __u32,
-pub multicast: __u32,
-pub collisions: __u32,
-pub rx_length_errors: __u32,
-pub rx_over_errors: __u32,
-pub rx_crc_errors: __u32,
-pub rx_frame_errors: __u32,
-pub rx_fifo_errors: __u32,
-pub rx_missed_errors: __u32,
-pub tx_aborted_errors: __u32,
-pub tx_carrier_errors: __u32,
-pub tx_fifo_errors: __u32,
-pub tx_heartbeat_errors: __u32,
-pub tx_window_errors: __u32,
-pub rx_compressed: __u32,
-pub tx_compressed: __u32,
-pub rx_nohandler: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-pub collisions: __u64,
-pub rx_length_errors: __u64,
-pub rx_over_errors: __u64,
-pub rx_crc_errors: __u64,
-pub rx_frame_errors: __u64,
-pub rx_fifo_errors: __u64,
-pub rx_missed_errors: __u64,
-pub tx_aborted_errors: __u64,
-pub tx_carrier_errors: __u64,
-pub tx_fifo_errors: __u64,
-pub tx_heartbeat_errors: __u64,
-pub tx_window_errors: __u64,
-pub rx_compressed: __u64,
-pub tx_compressed: __u64,
-pub rx_nohandler: __u64,
-pub rx_otherhost_dropped: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_hw_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_ifmap {
-pub mem_start: __u64,
-pub mem_end: __u64,
-pub base_addr: __u64,
-pub irq: __u16,
-pub dma: __u8,
-pub port: __u8,
-}
-pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC;
-pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS;
-pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST;
-pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME;
-pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU;
-pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK;
-pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC;
-pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS;
-pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST;
-pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY;
-pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER;
-pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS;
-pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO;
-pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN;
-pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP;
-pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT;
-pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE;
-pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE;
-pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO;
-pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID;
-pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS;
-pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF;
-pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST;
-pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64;
-pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS;
-pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF;
-pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC;
-pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP;
-pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD;
-pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK;
-pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY;
-pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES;
-pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES;
-pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER;
-pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID;
-pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES;
-pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID;
-pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID;
-pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME;
-pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN;
-pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS;
-pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE;
-pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD;
-pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP;
-pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT;
-pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID;
-pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT;
-pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT;
-pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX;
-pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU;
-pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU;
-pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST;
-pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME;
-pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS;
-pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON;
-pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME;
-pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME;
-pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS;
-pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI;
-pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT;
-pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IFLA_UNSPEC = 0,
-IFLA_ADDRESS = 1,
-IFLA_BROADCAST = 2,
-IFLA_IFNAME = 3,
-IFLA_MTU = 4,
-IFLA_LINK = 5,
-IFLA_QDISC = 6,
-IFLA_STATS = 7,
-IFLA_COST = 8,
-IFLA_PRIORITY = 9,
-IFLA_MASTER = 10,
-IFLA_WIRELESS = 11,
-IFLA_PROTINFO = 12,
-IFLA_TXQLEN = 13,
-IFLA_MAP = 14,
-IFLA_WEIGHT = 15,
-IFLA_OPERSTATE = 16,
-IFLA_LINKMODE = 17,
-IFLA_LINKINFO = 18,
-IFLA_NET_NS_PID = 19,
-IFLA_IFALIAS = 20,
-IFLA_NUM_VF = 21,
-IFLA_VFINFO_LIST = 22,
-IFLA_STATS64 = 23,
-IFLA_VF_PORTS = 24,
-IFLA_PORT_SELF = 25,
-IFLA_AF_SPEC = 26,
-IFLA_GROUP = 27,
-IFLA_NET_NS_FD = 28,
-IFLA_EXT_MASK = 29,
-IFLA_PROMISCUITY = 30,
-IFLA_NUM_TX_QUEUES = 31,
-IFLA_NUM_RX_QUEUES = 32,
-IFLA_CARRIER = 33,
-IFLA_PHYS_PORT_ID = 34,
-IFLA_CARRIER_CHANGES = 35,
-IFLA_PHYS_SWITCH_ID = 36,
-IFLA_LINK_NETNSID = 37,
-IFLA_PHYS_PORT_NAME = 38,
-IFLA_PROTO_DOWN = 39,
-IFLA_GSO_MAX_SEGS = 40,
-IFLA_GSO_MAX_SIZE = 41,
-IFLA_PAD = 42,
-IFLA_XDP = 43,
-IFLA_EVENT = 44,
-IFLA_NEW_NETNSID = 45,
-IFLA_IF_NETNSID = 46,
-IFLA_CARRIER_UP_COUNT = 47,
-IFLA_CARRIER_DOWN_COUNT = 48,
-IFLA_NEW_IFINDEX = 49,
-IFLA_MIN_MTU = 50,
-IFLA_MAX_MTU = 51,
-IFLA_PROP_LIST = 52,
-IFLA_ALT_IFNAME = 53,
-IFLA_PERM_ADDRESS = 54,
-IFLA_PROTO_DOWN_REASON = 55,
-IFLA_PARENT_DEV_NAME = 56,
-IFLA_PARENT_DEV_BUS_NAME = 57,
-IFLA_GRO_MAX_SIZE = 58,
-IFLA_TSO_MAX_SIZE = 59,
-IFLA_TSO_MAX_SEGS = 60,
-IFLA_ALLMULTI = 61,
-IFLA_DEVLINK_PORT = 62,
-__IFLA_MAX = 63,
-}
-pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC;
-pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK;
-pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT;
-pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-IFLA_PROTO_DOWN_REASON_UNSPEC = 0,
-IFLA_PROTO_DOWN_REASON_MASK = 1,
-IFLA_PROTO_DOWN_REASON_VALUE = 2,
-__IFLA_PROTO_DOWN_REASON_CNT = 3,
-}
-pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC;
-pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF;
-pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-IFLA_INET_UNSPEC = 0,
-IFLA_INET_CONF = 1,
-__IFLA_INET_MAX = 2,
-}
-pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC;
-pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS;
-pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF;
-pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS;
-pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST;
-pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO;
-pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS;
-pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN;
-pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE;
-pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU;
-pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-IFLA_INET6_UNSPEC = 0,
-IFLA_INET6_FLAGS = 1,
-IFLA_INET6_CONF = 2,
-IFLA_INET6_STATS = 3,
-IFLA_INET6_MCAST = 4,
-IFLA_INET6_CACHEINFO = 5,
-IFLA_INET6_ICMP6STATS = 6,
-IFLA_INET6_TOKEN = 7,
-IFLA_INET6_ADDR_GEN_MODE = 8,
-IFLA_INET6_RA_MTU = 9,
-__IFLA_INET6_MAX = 10,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum in6_addr_gen_mode {
-IN6_ADDR_GEN_MODE_EUI64 = 0,
-IN6_ADDR_GEN_MODE_NONE = 1,
-IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2,
-IN6_ADDR_GEN_MODE_RANDOM = 3,
-}
-pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC;
-pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY;
-pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME;
-pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE;
-pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME;
-pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE;
-pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY;
-pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING;
-pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL;
-pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK;
-pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID;
-pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID;
-pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT;
-pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST;
-pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE;
-pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED;
-pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER;
-pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER;
-pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER;
-pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER;
-pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR;
-pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH;
-pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER;
-pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING;
-pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR;
-pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER;
-pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY;
-pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX;
-pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT;
-pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL;
-pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL;
-pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL;
-pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL;
-pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL;
-pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES;
-pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES;
-pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES;
-pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID;
-pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD;
-pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED;
-pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED;
-pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION;
-pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION;
-pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT;
-pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT;
-pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE;
-pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-IFLA_BR_UNSPEC = 0,
-IFLA_BR_FORWARD_DELAY = 1,
-IFLA_BR_HELLO_TIME = 2,
-IFLA_BR_MAX_AGE = 3,
-IFLA_BR_AGEING_TIME = 4,
-IFLA_BR_STP_STATE = 5,
-IFLA_BR_PRIORITY = 6,
-IFLA_BR_VLAN_FILTERING = 7,
-IFLA_BR_VLAN_PROTOCOL = 8,
-IFLA_BR_GROUP_FWD_MASK = 9,
-IFLA_BR_ROOT_ID = 10,
-IFLA_BR_BRIDGE_ID = 11,
-IFLA_BR_ROOT_PORT = 12,
-IFLA_BR_ROOT_PATH_COST = 13,
-IFLA_BR_TOPOLOGY_CHANGE = 14,
-IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 15,
-IFLA_BR_HELLO_TIMER = 16,
-IFLA_BR_TCN_TIMER = 17,
-IFLA_BR_TOPOLOGY_CHANGE_TIMER = 18,
-IFLA_BR_GC_TIMER = 19,
-IFLA_BR_GROUP_ADDR = 20,
-IFLA_BR_FDB_FLUSH = 21,
-IFLA_BR_MCAST_ROUTER = 22,
-IFLA_BR_MCAST_SNOOPING = 23,
-IFLA_BR_MCAST_QUERY_USE_IFADDR = 24,
-IFLA_BR_MCAST_QUERIER = 25,
-IFLA_BR_MCAST_HASH_ELASTICITY = 26,
-IFLA_BR_MCAST_HASH_MAX = 27,
-IFLA_BR_MCAST_LAST_MEMBER_CNT = 28,
-IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29,
-IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30,
-IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31,
-IFLA_BR_MCAST_QUERIER_INTVL = 32,
-IFLA_BR_MCAST_QUERY_INTVL = 33,
-IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34,
-IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35,
-IFLA_BR_NF_CALL_IPTABLES = 36,
-IFLA_BR_NF_CALL_IP6TABLES = 37,
-IFLA_BR_NF_CALL_ARPTABLES = 38,
-IFLA_BR_VLAN_DEFAULT_PVID = 39,
-IFLA_BR_PAD = 40,
-IFLA_BR_VLAN_STATS_ENABLED = 41,
-IFLA_BR_MCAST_STATS_ENABLED = 42,
-IFLA_BR_MCAST_IGMP_VERSION = 43,
-IFLA_BR_MCAST_MLD_VERSION = 44,
-IFLA_BR_VLAN_STATS_PER_PORT = 45,
-IFLA_BR_MULTI_BOOLOPT = 46,
-IFLA_BR_MCAST_QUERIER_STATE = 47,
-__IFLA_BR_MAX = 48,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_bridge_id {
-pub prio: [__u8; 2usize],
-pub addr: [__u8; 6usize],
-}
-pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC;
-pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-BRIDGE_MODE_UNSPEC = 0,
-BRIDGE_MODE_HAIRPIN = 1,
-}
-pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC;
-pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE;
-pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY;
-pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST;
-pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE;
-pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD;
-pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT;
-pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE;
-pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING;
-pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD;
-pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP;
-pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC;
-pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI;
-pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID;
-pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID;
-pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT;
-pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST;
-pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID;
-pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO;
-pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK;
-pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING;
-pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER;
-pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER;
-pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER;
-pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH;
-pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER;
-pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD;
-pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD;
-pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST;
-pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL;
-pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD;
-pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK;
-pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS;
-pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED;
-pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT;
-pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN;
-pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT;
-pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED;
-pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB;
-pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IFLA_BRPORT_UNSPEC = 0,
-IFLA_BRPORT_STATE = 1,
-IFLA_BRPORT_PRIORITY = 2,
-IFLA_BRPORT_COST = 3,
-IFLA_BRPORT_MODE = 4,
-IFLA_BRPORT_GUARD = 5,
-IFLA_BRPORT_PROTECT = 6,
-IFLA_BRPORT_FAST_LEAVE = 7,
-IFLA_BRPORT_LEARNING = 8,
-IFLA_BRPORT_UNICAST_FLOOD = 9,
-IFLA_BRPORT_PROXYARP = 10,
-IFLA_BRPORT_LEARNING_SYNC = 11,
-IFLA_BRPORT_PROXYARP_WIFI = 12,
-IFLA_BRPORT_ROOT_ID = 13,
-IFLA_BRPORT_BRIDGE_ID = 14,
-IFLA_BRPORT_DESIGNATED_PORT = 15,
-IFLA_BRPORT_DESIGNATED_COST = 16,
-IFLA_BRPORT_ID = 17,
-IFLA_BRPORT_NO = 18,
-IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 19,
-IFLA_BRPORT_CONFIG_PENDING = 20,
-IFLA_BRPORT_MESSAGE_AGE_TIMER = 21,
-IFLA_BRPORT_FORWARD_DELAY_TIMER = 22,
-IFLA_BRPORT_HOLD_TIMER = 23,
-IFLA_BRPORT_FLUSH = 24,
-IFLA_BRPORT_MULTICAST_ROUTER = 25,
-IFLA_BRPORT_PAD = 26,
-IFLA_BRPORT_MCAST_FLOOD = 27,
-IFLA_BRPORT_MCAST_TO_UCAST = 28,
-IFLA_BRPORT_VLAN_TUNNEL = 29,
-IFLA_BRPORT_BCAST_FLOOD = 30,
-IFLA_BRPORT_GROUP_FWD_MASK = 31,
-IFLA_BRPORT_NEIGH_SUPPRESS = 32,
-IFLA_BRPORT_ISOLATED = 33,
-IFLA_BRPORT_BACKUP_PORT = 34,
-IFLA_BRPORT_MRP_RING_OPEN = 35,
-IFLA_BRPORT_MRP_IN_OPEN = 36,
-IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 37,
-IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 38,
-IFLA_BRPORT_LOCKED = 39,
-IFLA_BRPORT_MAB = 40,
-__IFLA_BRPORT_MAX = 41,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_cacheinfo {
-pub max_reasm_len: __u32,
-pub tstamp: __u32,
-pub reachable_time: __u32,
-pub retrans_time: __u32,
-}
-pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC;
-pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND;
-pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA;
-pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS;
-pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND;
-pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA;
-pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IFLA_INFO_UNSPEC = 0,
-IFLA_INFO_KIND = 1,
-IFLA_INFO_DATA = 2,
-IFLA_INFO_XSTATS = 3,
-IFLA_INFO_SLAVE_KIND = 4,
-IFLA_INFO_SLAVE_DATA = 5,
-__IFLA_INFO_MAX = 6,
-}
-pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC;
-pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID;
-pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS;
-pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS;
-pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS;
-pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL;
-pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IFLA_VLAN_UNSPEC = 0,
-IFLA_VLAN_ID = 1,
-IFLA_VLAN_FLAGS = 2,
-IFLA_VLAN_EGRESS_QOS = 3,
-IFLA_VLAN_INGRESS_QOS = 4,
-IFLA_VLAN_PROTOCOL = 5,
-__IFLA_VLAN_MAX = 6,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC;
-pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING;
-pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IFLA_VLAN_QOS_UNSPEC = 0,
-IFLA_VLAN_QOS_MAPPING = 1,
-__IFLA_VLAN_QOS_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_qos_mapping {
-pub from: __u32,
-pub to: __u32,
-}
-pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC;
-pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE;
-pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS;
-pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE;
-pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR;
-pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA;
-pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED;
-pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IFLA_MACVLAN_UNSPEC = 0,
-IFLA_MACVLAN_MODE = 1,
-IFLA_MACVLAN_FLAGS = 2,
-IFLA_MACVLAN_MACADDR_MODE = 3,
-IFLA_MACVLAN_MACADDR = 4,
-IFLA_MACVLAN_MACADDR_DATA = 5,
-IFLA_MACVLAN_MACADDR_COUNT = 6,
-IFLA_MACVLAN_BC_QUEUE_LEN = 7,
-IFLA_MACVLAN_BC_QUEUE_LEN_USED = 8,
-__IFLA_MACVLAN_MAX = 9,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_mode {
-MACVLAN_MODE_PRIVATE = 1,
-MACVLAN_MODE_VEPA = 2,
-MACVLAN_MODE_BRIDGE = 4,
-MACVLAN_MODE_PASSTHRU = 8,
-MACVLAN_MODE_SOURCE = 16,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_macaddr_mode {
-MACVLAN_MACADDR_ADD = 0,
-MACVLAN_MACADDR_DEL = 1,
-MACVLAN_MACADDR_FLUSH = 2,
-MACVLAN_MACADDR_SET = 3,
-}
-pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC;
-pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE;
-pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_13 {
-IFLA_VRF_UNSPEC = 0,
-IFLA_VRF_TABLE = 1,
-__IFLA_VRF_MAX = 2,
-}
-pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC;
-pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE;
-pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_14 {
-IFLA_VRF_PORT_UNSPEC = 0,
-IFLA_VRF_PORT_TABLE = 1,
-__IFLA_VRF_PORT_MAX = 2,
-}
-pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC;
-pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI;
-pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT;
-pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN;
-pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE;
-pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW;
-pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA;
-pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT;
-pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT;
-pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI;
-pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES;
-pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB;
-pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT;
-pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION;
-pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD;
-pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD;
-pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_15 {
-IFLA_MACSEC_UNSPEC = 0,
-IFLA_MACSEC_SCI = 1,
-IFLA_MACSEC_PORT = 2,
-IFLA_MACSEC_ICV_LEN = 3,
-IFLA_MACSEC_CIPHER_SUITE = 4,
-IFLA_MACSEC_WINDOW = 5,
-IFLA_MACSEC_ENCODING_SA = 6,
-IFLA_MACSEC_ENCRYPT = 7,
-IFLA_MACSEC_PROTECT = 8,
-IFLA_MACSEC_INC_SCI = 9,
-IFLA_MACSEC_ES = 10,
-IFLA_MACSEC_SCB = 11,
-IFLA_MACSEC_REPLAY_PROTECT = 12,
-IFLA_MACSEC_VALIDATION = 13,
-IFLA_MACSEC_PAD = 14,
-IFLA_MACSEC_OFFLOAD = 15,
-__IFLA_MACSEC_MAX = 16,
-}
-pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC;
-pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK;
-pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID;
-pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA;
-pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_16 {
-IFLA_XFRM_UNSPEC = 0,
-IFLA_XFRM_LINK = 1,
-IFLA_XFRM_IF_ID = 2,
-IFLA_XFRM_COLLECT_METADATA = 3,
-__IFLA_XFRM_MAX = 4,
-}
-impl macsec_validation_type {
-pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_validation_type {
-MACSEC_VALIDATE_DISABLED = 0,
-MACSEC_VALIDATE_CHECK = 1,
-MACSEC_VALIDATE_STRICT = 2,
-__MACSEC_VALIDATE_END = 3,
-}
-impl macsec_offload {
-pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_offload {
-MACSEC_OFFLOAD_OFF = 0,
-MACSEC_OFFLOAD_PHY = 1,
-MACSEC_OFFLOAD_MAC = 2,
-__MACSEC_OFFLOAD_END = 3,
-}
-pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC;
-pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE;
-pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS;
-pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_17 {
-IFLA_IPVLAN_UNSPEC = 0,
-IFLA_IPVLAN_MODE = 1,
-IFLA_IPVLAN_FLAGS = 2,
-__IFLA_IPVLAN_MAX = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ipvlan_mode {
-IPVLAN_MODE_L2 = 0,
-IPVLAN_MODE_L3 = 1,
-IPVLAN_MODE_L3S = 2,
-IPVLAN_MODE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tunnel_msg {
-pub family: __u8,
-pub flags: __u8,
-pub reserved2: __u16,
-pub ifindex: __u32,
-}
-pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC;
-pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD;
-pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_18 {
-VNIFILTER_ENTRY_STATS_UNSPEC = 0,
-VNIFILTER_ENTRY_STATS_RX_BYTES = 1,
-VNIFILTER_ENTRY_STATS_RX_PKTS = 2,
-VNIFILTER_ENTRY_STATS_RX_DROPS = 3,
-VNIFILTER_ENTRY_STATS_RX_ERRORS = 4,
-VNIFILTER_ENTRY_STATS_TX_BYTES = 5,
-VNIFILTER_ENTRY_STATS_TX_PKTS = 6,
-VNIFILTER_ENTRY_STATS_TX_DROPS = 7,
-VNIFILTER_ENTRY_STATS_TX_ERRORS = 8,
-VNIFILTER_ENTRY_STATS_PAD = 9,
-__VNIFILTER_ENTRY_STATS_MAX = 10,
-}
-pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START;
-pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6;
-pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS;
-pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_19 {
-VXLAN_VNIFILTER_ENTRY_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY_START = 1,
-VXLAN_VNIFILTER_ENTRY_END = 2,
-VXLAN_VNIFILTER_ENTRY_GROUP = 3,
-VXLAN_VNIFILTER_ENTRY_GROUP6 = 4,
-VXLAN_VNIFILTER_ENTRY_STATS = 5,
-__VXLAN_VNIFILTER_ENTRY_MAX = 6,
-}
-pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY;
-pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_20 {
-VXLAN_VNIFILTER_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY = 1,
-__VXLAN_VNIFILTER_MAX = 2,
-}
-pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC;
-pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID;
-pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP;
-pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK;
-pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL;
-pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL;
-pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS;
-pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING;
-pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING;
-pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT;
-pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE;
-pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY;
-pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC;
-pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS;
-pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS;
-pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT;
-pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6;
-pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6;
-pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX;
-pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX;
-pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX;
-pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP;
-pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL;
-pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA;
-pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL;
-pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE;
-pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT;
-pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF;
-pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER;
-pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_21 {
-IFLA_VXLAN_UNSPEC = 0,
-IFLA_VXLAN_ID = 1,
-IFLA_VXLAN_GROUP = 2,
-IFLA_VXLAN_LINK = 3,
-IFLA_VXLAN_LOCAL = 4,
-IFLA_VXLAN_TTL = 5,
-IFLA_VXLAN_TOS = 6,
-IFLA_VXLAN_LEARNING = 7,
-IFLA_VXLAN_AGEING = 8,
-IFLA_VXLAN_LIMIT = 9,
-IFLA_VXLAN_PORT_RANGE = 10,
-IFLA_VXLAN_PROXY = 11,
-IFLA_VXLAN_RSC = 12,
-IFLA_VXLAN_L2MISS = 13,
-IFLA_VXLAN_L3MISS = 14,
-IFLA_VXLAN_PORT = 15,
-IFLA_VXLAN_GROUP6 = 16,
-IFLA_VXLAN_LOCAL6 = 17,
-IFLA_VXLAN_UDP_CSUM = 18,
-IFLA_VXLAN_UDP_ZERO_CSUM6_TX = 19,
-IFLA_VXLAN_UDP_ZERO_CSUM6_RX = 20,
-IFLA_VXLAN_REMCSUM_TX = 21,
-IFLA_VXLAN_REMCSUM_RX = 22,
-IFLA_VXLAN_GBP = 23,
-IFLA_VXLAN_REMCSUM_NOPARTIAL = 24,
-IFLA_VXLAN_COLLECT_METADATA = 25,
-IFLA_VXLAN_LABEL = 26,
-IFLA_VXLAN_GPE = 27,
-IFLA_VXLAN_TTL_INHERIT = 28,
-IFLA_VXLAN_DF = 29,
-IFLA_VXLAN_VNIFILTER = 30,
-__IFLA_VXLAN_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vxlan_port_range {
-pub low: __be16,
-pub high: __be16,
-}
-impl ifla_vxlan_df {
-pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_vxlan_df {
-VXLAN_DF_UNSET = 0,
-VXLAN_DF_SET = 1,
-VXLAN_DF_INHERIT = 2,
-__VXLAN_DF_END = 3,
-}
-pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC;
-pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID;
-pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE;
-pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL;
-pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS;
-pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT;
-pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA;
-pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6;
-pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX;
-pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL;
-pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT;
-pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF;
-pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT;
-pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_22 {
-IFLA_GENEVE_UNSPEC = 0,
-IFLA_GENEVE_ID = 1,
-IFLA_GENEVE_REMOTE = 2,
-IFLA_GENEVE_TTL = 3,
-IFLA_GENEVE_TOS = 4,
-IFLA_GENEVE_PORT = 5,
-IFLA_GENEVE_COLLECT_METADATA = 6,
-IFLA_GENEVE_REMOTE6 = 7,
-IFLA_GENEVE_UDP_CSUM = 8,
-IFLA_GENEVE_UDP_ZERO_CSUM6_TX = 9,
-IFLA_GENEVE_UDP_ZERO_CSUM6_RX = 10,
-IFLA_GENEVE_LABEL = 11,
-IFLA_GENEVE_TTL_INHERIT = 12,
-IFLA_GENEVE_DF = 13,
-IFLA_GENEVE_INNER_PROTO_INHERIT = 14,
-__IFLA_GENEVE_MAX = 15,
-}
-impl ifla_geneve_df {
-pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_geneve_df {
-GENEVE_DF_UNSET = 0,
-GENEVE_DF_SET = 1,
-GENEVE_DF_INHERIT = 2,
-__GENEVE_DF_END = 3,
-}
-pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC;
-pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT;
-pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE;
-pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN;
-pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE;
-pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_23 {
-IFLA_BAREUDP_UNSPEC = 0,
-IFLA_BAREUDP_PORT = 1,
-IFLA_BAREUDP_ETHERTYPE = 2,
-IFLA_BAREUDP_SRCPORT_MIN = 3,
-IFLA_BAREUDP_MULTIPROTO_MODE = 4,
-__IFLA_BAREUDP_MAX = 5,
-}
-pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC;
-pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD;
-pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_24 {
-IFLA_PPP_UNSPEC = 0,
-IFLA_PPP_DEV_FD = 1,
-__IFLA_PPP_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_gtp_role {
-GTP_ROLE_GGSN = 0,
-GTP_ROLE_SGSN = 1,
-}
-pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC;
-pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0;
-pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1;
-pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE;
-pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE;
-pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS;
-pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT;
-pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_25 {
-IFLA_GTP_UNSPEC = 0,
-IFLA_GTP_FD0 = 1,
-IFLA_GTP_FD1 = 2,
-IFLA_GTP_PDP_HASHSIZE = 3,
-IFLA_GTP_ROLE = 4,
-IFLA_GTP_CREATE_SOCKETS = 5,
-IFLA_GTP_RESTART_COUNT = 6,
-__IFLA_GTP_MAX = 7,
-}
-pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC;
-pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE;
-pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE;
-pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON;
-pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY;
-pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY;
-pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER;
-pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL;
-pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET;
-pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE;
-pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS;
-pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY;
-pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT;
-pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC;
-pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY;
-pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP;
-pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF;
-pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE;
-pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS;
-pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL;
-pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE;
-pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE;
-pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT;
-pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO;
-pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO;
-pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY;
-pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM;
-pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB;
-pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY;
-pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE;
-pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX;
-pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET;
-pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_26 {
-IFLA_BOND_UNSPEC = 0,
-IFLA_BOND_MODE = 1,
-IFLA_BOND_ACTIVE_SLAVE = 2,
-IFLA_BOND_MIIMON = 3,
-IFLA_BOND_UPDELAY = 4,
-IFLA_BOND_DOWNDELAY = 5,
-IFLA_BOND_USE_CARRIER = 6,
-IFLA_BOND_ARP_INTERVAL = 7,
-IFLA_BOND_ARP_IP_TARGET = 8,
-IFLA_BOND_ARP_VALIDATE = 9,
-IFLA_BOND_ARP_ALL_TARGETS = 10,
-IFLA_BOND_PRIMARY = 11,
-IFLA_BOND_PRIMARY_RESELECT = 12,
-IFLA_BOND_FAIL_OVER_MAC = 13,
-IFLA_BOND_XMIT_HASH_POLICY = 14,
-IFLA_BOND_RESEND_IGMP = 15,
-IFLA_BOND_NUM_PEER_NOTIF = 16,
-IFLA_BOND_ALL_SLAVES_ACTIVE = 17,
-IFLA_BOND_MIN_LINKS = 18,
-IFLA_BOND_LP_INTERVAL = 19,
-IFLA_BOND_PACKETS_PER_SLAVE = 20,
-IFLA_BOND_AD_LACP_RATE = 21,
-IFLA_BOND_AD_SELECT = 22,
-IFLA_BOND_AD_INFO = 23,
-IFLA_BOND_AD_ACTOR_SYS_PRIO = 24,
-IFLA_BOND_AD_USER_PORT_KEY = 25,
-IFLA_BOND_AD_ACTOR_SYSTEM = 26,
-IFLA_BOND_TLB_DYNAMIC_LB = 27,
-IFLA_BOND_PEER_NOTIF_DELAY = 28,
-IFLA_BOND_AD_LACP_ACTIVE = 29,
-IFLA_BOND_MISSED_MAX = 30,
-IFLA_BOND_NS_IP6_TARGET = 31,
-__IFLA_BOND_MAX = 32,
-}
-pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC;
-pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR;
-pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS;
-pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC;
-pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_27 {
-IFLA_BOND_AD_INFO_UNSPEC = 0,
-IFLA_BOND_AD_INFO_AGGREGATOR = 1,
-IFLA_BOND_AD_INFO_NUM_PORTS = 2,
-IFLA_BOND_AD_INFO_ACTOR_KEY = 3,
-IFLA_BOND_AD_INFO_PARTNER_KEY = 4,
-IFLA_BOND_AD_INFO_PARTNER_MAC = 5,
-__IFLA_BOND_AD_INFO_MAX = 6,
-}
-pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC;
-pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE;
-pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS;
-pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT;
-pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR;
-pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID;
-pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID;
-pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO;
-pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_28 {
-IFLA_BOND_SLAVE_UNSPEC = 0,
-IFLA_BOND_SLAVE_STATE = 1,
-IFLA_BOND_SLAVE_MII_STATUS = 2,
-IFLA_BOND_SLAVE_LINK_FAILURE_COUNT = 3,
-IFLA_BOND_SLAVE_PERM_HWADDR = 4,
-IFLA_BOND_SLAVE_QUEUE_ID = 5,
-IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 6,
-IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 7,
-IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 8,
-IFLA_BOND_SLAVE_PRIO = 9,
-__IFLA_BOND_SLAVE_MAX = 10,
-}
-pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC;
-pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO;
-pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_29 {
-IFLA_VF_INFO_UNSPEC = 0,
-IFLA_VF_INFO = 1,
-__IFLA_VF_INFO_MAX = 2,
-}
-pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC;
-pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC;
-pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN;
-pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE;
-pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK;
-pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE;
-pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE;
-pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN;
-pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS;
-pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST;
-pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID;
-pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID;
-pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST;
-pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST;
-pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_30 {
-IFLA_VF_UNSPEC = 0,
-IFLA_VF_MAC = 1,
-IFLA_VF_VLAN = 2,
-IFLA_VF_TX_RATE = 3,
-IFLA_VF_SPOOFCHK = 4,
-IFLA_VF_LINK_STATE = 5,
-IFLA_VF_RATE = 6,
-IFLA_VF_RSS_QUERY_EN = 7,
-IFLA_VF_STATS = 8,
-IFLA_VF_TRUST = 9,
-IFLA_VF_IB_NODE_GUID = 10,
-IFLA_VF_IB_PORT_GUID = 11,
-IFLA_VF_VLAN_LIST = 12,
-IFLA_VF_BROADCAST = 13,
-__IFLA_VF_MAX = 14,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_mac {
-pub vf: __u32,
-pub mac: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_broadcast {
-pub broadcast: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-}
-pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC;
-pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO;
-pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_31 {
-IFLA_VF_VLAN_INFO_UNSPEC = 0,
-IFLA_VF_VLAN_INFO = 1,
-__IFLA_VF_VLAN_INFO_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan_info {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-pub vlan_proto: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_tx_rate {
-pub vf: __u32,
-pub rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rate {
-pub vf: __u32,
-pub min_tx_rate: __u32,
-pub max_tx_rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_spoofchk {
-pub vf: __u32,
-pub setting: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_guid {
-pub vf: __u32,
-pub guid: __u64,
-}
-pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO;
-pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE;
-pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE;
-pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_32 {
-IFLA_VF_LINK_STATE_AUTO = 0,
-IFLA_VF_LINK_STATE_ENABLE = 1,
-IFLA_VF_LINK_STATE_DISABLE = 2,
-__IFLA_VF_LINK_STATE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_link_state {
-pub vf: __u32,
-pub link_state: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rss_query_en {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS;
-pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS;
-pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES;
-pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES;
-pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST;
-pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST;
-pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD;
-pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED;
-pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED;
-pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_33 {
-IFLA_VF_STATS_RX_PACKETS = 0,
-IFLA_VF_STATS_TX_PACKETS = 1,
-IFLA_VF_STATS_RX_BYTES = 2,
-IFLA_VF_STATS_TX_BYTES = 3,
-IFLA_VF_STATS_BROADCAST = 4,
-IFLA_VF_STATS_MULTICAST = 5,
-IFLA_VF_STATS_PAD = 6,
-IFLA_VF_STATS_RX_DROPPED = 7,
-IFLA_VF_STATS_TX_DROPPED = 8,
-__IFLA_VF_STATS_MAX = 9,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_trust {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC;
-pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT;
-pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_34 {
-IFLA_VF_PORT_UNSPEC = 0,
-IFLA_VF_PORT = 1,
-__IFLA_VF_PORT_MAX = 2,
-}
-pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC;
-pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF;
-pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE;
-pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE;
-pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID;
-pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID;
-pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST;
-pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE;
-pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_35 {
-IFLA_PORT_UNSPEC = 0,
-IFLA_PORT_VF = 1,
-IFLA_PORT_PROFILE = 2,
-IFLA_PORT_VSI_TYPE = 3,
-IFLA_PORT_INSTANCE_UUID = 4,
-IFLA_PORT_HOST_UUID = 5,
-IFLA_PORT_REQUEST = 6,
-IFLA_PORT_RESPONSE = 7,
-__IFLA_PORT_MAX = 8,
-}
-pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE;
-pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR;
-pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE;
-pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_36 {
-PORT_REQUEST_PREASSOCIATE = 0,
-PORT_REQUEST_PREASSOCIATE_RR = 1,
-PORT_REQUEST_ASSOCIATE = 2,
-PORT_REQUEST_DISASSOCIATE = 3,
-}
-pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS;
-pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT;
-pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID;
-pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION;
-pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION;
-pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC;
-pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS;
-pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS;
-pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID;
-pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE;
-pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_37 {
-PORT_VDP_RESPONSE_SUCCESS = 0,
-PORT_VDP_RESPONSE_INVALID_FORMAT = 1,
-PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES = 2,
-PORT_VDP_RESPONSE_UNUSED_VTID = 3,
-PORT_VDP_RESPONSE_VTID_VIOLATION = 4,
-PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION = 5,
-PORT_VDP_RESPONSE_OUT_OF_SYNC = 6,
-PORT_PROFILE_RESPONSE_SUCCESS = 256,
-PORT_PROFILE_RESPONSE_INPROGRESS = 257,
-PORT_PROFILE_RESPONSE_INVALID = 258,
-PORT_PROFILE_RESPONSE_BADSTATE = 259,
-PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260,
-PORT_PROFILE_RESPONSE_ERROR = 261,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_port_vsi {
-pub vsi_mgr_id: __u8,
-pub vsi_type_id: [__u8; 3usize],
-pub vsi_type_version: __u8,
-pub pad: [__u8; 3usize],
-}
-pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC;
-pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY;
-pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE;
-pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST;
-pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_38 {
-IFLA_IPOIB_UNSPEC = 0,
-IFLA_IPOIB_PKEY = 1,
-IFLA_IPOIB_MODE = 2,
-IFLA_IPOIB_UMCAST = 3,
-__IFLA_IPOIB_MAX = 4,
-}
-pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM;
-pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_39 {
-IPOIB_MODE_DATAGRAM = 0,
-IPOIB_MODE_CONNECTED = 1,
-}
-pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR;
-pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP;
-pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_40 {
-HSR_PROTOCOL_HSR = 0,
-HSR_PROTOCOL_PRP = 1,
-HSR_PROTOCOL_MAX = 2,
-}
-pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC;
-pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1;
-pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2;
-pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC;
-pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR;
-pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR;
-pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION;
-pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL;
-pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_41 {
-IFLA_HSR_UNSPEC = 0,
-IFLA_HSR_SLAVE1 = 1,
-IFLA_HSR_SLAVE2 = 2,
-IFLA_HSR_MULTICAST_SPEC = 3,
-IFLA_HSR_SUPERVISION_ADDR = 4,
-IFLA_HSR_SEQ_NR = 5,
-IFLA_HSR_VERSION = 6,
-IFLA_HSR_PROTOCOL = 7,
-__IFLA_HSR_MAX = 8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct if_stats_msg {
-pub family: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub ifindex: __u32,
-pub filter_mask: __u32,
-}
-pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC;
-pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64;
-pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS;
-pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE;
-pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS;
-pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC;
-pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_42 {
-IFLA_STATS_UNSPEC = 0,
-IFLA_STATS_LINK_64 = 1,
-IFLA_STATS_LINK_XSTATS = 2,
-IFLA_STATS_LINK_XSTATS_SLAVE = 3,
-IFLA_STATS_LINK_OFFLOAD_XSTATS = 4,
-IFLA_STATS_AF_SPEC = 5,
-__IFLA_STATS_MAX = 6,
-}
-pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC;
-pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS;
-pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_43 {
-IFLA_STATS_GETSET_UNSPEC = 0,
-IFLA_STATS_GET_FILTERS = 1,
-IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2,
-__IFLA_STATS_GETSET_MAX = 3,
-}
-pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC;
-pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE;
-pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND;
-pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_44 {
-LINK_XSTATS_TYPE_UNSPEC = 0,
-LINK_XSTATS_TYPE_BRIDGE = 1,
-LINK_XSTATS_TYPE_BOND = 2,
-__LINK_XSTATS_TYPE_MAX = 3,
-}
-pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO;
-pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_45 {
-IFLA_OFFLOAD_XSTATS_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_CPU_HIT = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO = 2,
-IFLA_OFFLOAD_XSTATS_L3_STATS = 3,
-__IFLA_OFFLOAD_XSTATS_MAX = 4,
-}
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED;
-pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_46 {
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2,
-__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3,
-}
-pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE;
-pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV;
-pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB;
-pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW;
-pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_47 {
-XDP_ATTACHED_NONE = 0,
-XDP_ATTACHED_DRV = 1,
-XDP_ATTACHED_SKB = 2,
-XDP_ATTACHED_HW = 3,
-XDP_ATTACHED_MULTI = 4,
-}
-pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC;
-pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD;
-pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED;
-pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS;
-pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID;
-pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID;
-pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID;
-pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID;
-pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD;
-pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_48 {
-IFLA_XDP_UNSPEC = 0,
-IFLA_XDP_FD = 1,
-IFLA_XDP_ATTACHED = 2,
-IFLA_XDP_FLAGS = 3,
-IFLA_XDP_PROG_ID = 4,
-IFLA_XDP_DRV_PROG_ID = 5,
-IFLA_XDP_SKB_PROG_ID = 6,
-IFLA_XDP_HW_PROG_ID = 7,
-IFLA_XDP_EXPECTED_FD = 8,
-__IFLA_XDP_MAX = 9,
-}
-pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE;
-pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT;
-pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES;
-pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER;
-pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS;
-pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND;
-pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_49 {
-IFLA_EVENT_NONE = 0,
-IFLA_EVENT_REBOOT = 1,
-IFLA_EVENT_FEATURES = 2,
-IFLA_EVENT_BONDING_FAILOVER = 3,
-IFLA_EVENT_NOTIFY_PEERS = 4,
-IFLA_EVENT_IGMP_RESEND = 5,
-IFLA_EVENT_BONDING_OPTIONS = 6,
-}
-pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC;
-pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER;
-pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP;
-pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE;
-pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI;
-pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR;
-pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST;
-pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE;
-pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES;
-pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES;
-pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_50 {
-IFLA_TUN_UNSPEC = 0,
-IFLA_TUN_OWNER = 1,
-IFLA_TUN_GROUP = 2,
-IFLA_TUN_TYPE = 3,
-IFLA_TUN_PI = 4,
-IFLA_TUN_VNET_HDR = 5,
-IFLA_TUN_PERSIST = 6,
-IFLA_TUN_MULTI_QUEUE = 7,
-IFLA_TUN_NUM_QUEUES = 8,
-IFLA_TUN_NUM_DISABLED_QUEUES = 9,
-__IFLA_TUN_MAX = 10,
-}
-pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC;
-pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID;
-pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS;
-pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_51 {
-IFLA_RMNET_UNSPEC = 0,
-IFLA_RMNET_MUX_ID = 1,
-IFLA_RMNET_FLAGS = 2,
-__IFLA_RMNET_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_rmnet_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC;
-pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET;
-pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_52 {
-IFLA_MCTP_UNSPEC = 0,
-IFLA_MCTP_NET = 1,
-__IFLA_MCTP_MAX = 2,
-}
-pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC;
-pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER;
-pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_53 {
-IFLA_DSA_UNSPEC = 0,
-IFLA_DSA_MASTER = 1,
-__IFLA_DSA_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifaddrmsg {
-pub ifa_family: __u8,
-pub ifa_prefixlen: __u8,
-pub ifa_flags: __u8,
-pub ifa_scope: __u8,
-pub ifa_index: __u32,
-}
-pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC;
-pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS;
-pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL;
-pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL;
-pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST;
-pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST;
-pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO;
-pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST;
-pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS;
-pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY;
-pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID;
-pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO;
-pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_54 {
-IFA_UNSPEC = 0,
-IFA_ADDRESS = 1,
-IFA_LOCAL = 2,
-IFA_LABEL = 3,
-IFA_BROADCAST = 4,
-IFA_ANYCAST = 5,
-IFA_CACHEINFO = 6,
-IFA_MULTICAST = 7,
-IFA_FLAGS = 8,
-IFA_RT_PRIORITY = 9,
-IFA_TARGET_NETNSID = 10,
-IFA_PROTO = 11,
-__IFA_MAX = 12,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifa_cacheinfo {
-pub ifa_prefered: __u32,
-pub ifa_valid: __u32,
-pub cstamp: __u32,
-pub tstamp: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndmsg {
-pub ndm_family: __u8,
-pub ndm_pad1: __u8,
-pub ndm_pad2: __u16,
-pub ndm_ifindex: __s32,
-pub ndm_state: __u16,
-pub ndm_flags: __u8,
-pub ndm_type: __u8,
-}
-pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC;
-pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST;
-pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR;
-pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO;
-pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES;
-pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN;
-pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT;
-pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI;
-pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX;
-pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER;
-pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID;
-pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI;
-pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL;
-pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID;
-pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS;
-pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT;
-pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK;
-pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK;
-pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_55 {
-NDA_UNSPEC = 0,
-NDA_DST = 1,
-NDA_LLADDR = 2,
-NDA_CACHEINFO = 3,
-NDA_PROBES = 4,
-NDA_VLAN = 5,
-NDA_PORT = 6,
-NDA_VNI = 7,
-NDA_IFINDEX = 8,
-NDA_MASTER = 9,
-NDA_LINK_NETNSID = 10,
-NDA_SRC_VNI = 11,
-NDA_PROTOCOL = 12,
-NDA_NH_ID = 13,
-NDA_FDB_EXT_ATTRS = 14,
-NDA_FLAGS_EXT = 15,
-NDA_NDM_STATE_MASK = 16,
-NDA_NDM_FLAGS_MASK = 17,
-__NDA_MAX = 18,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nda_cacheinfo {
-pub ndm_confirmed: __u32,
-pub ndm_used: __u32,
-pub ndm_updated: __u32,
-pub ndm_refcnt: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_stats {
-pub ndts_allocs: __u64,
-pub ndts_destroys: __u64,
-pub ndts_hash_grows: __u64,
-pub ndts_res_failed: __u64,
-pub ndts_lookups: __u64,
-pub ndts_hits: __u64,
-pub ndts_rcv_probes_mcast: __u64,
-pub ndts_rcv_probes_ucast: __u64,
-pub ndts_periodic_gc_runs: __u64,
-pub ndts_forced_gc_runs: __u64,
-pub ndts_table_fulls: __u64,
-}
-pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC;
-pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX;
-pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT;
-pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME;
-pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME;
-pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME;
-pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME;
-pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME;
-pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN;
-pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES;
-pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES;
-pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES;
-pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY;
-pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY;
-pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN;
-pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME;
-pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES;
-pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES;
-pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD;
-pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS;
-pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_56 {
-NDTPA_UNSPEC = 0,
-NDTPA_IFINDEX = 1,
-NDTPA_REFCNT = 2,
-NDTPA_REACHABLE_TIME = 3,
-NDTPA_BASE_REACHABLE_TIME = 4,
-NDTPA_RETRANS_TIME = 5,
-NDTPA_GC_STALETIME = 6,
-NDTPA_DELAY_PROBE_TIME = 7,
-NDTPA_QUEUE_LEN = 8,
-NDTPA_APP_PROBES = 9,
-NDTPA_UCAST_PROBES = 10,
-NDTPA_MCAST_PROBES = 11,
-NDTPA_ANYCAST_DELAY = 12,
-NDTPA_PROXY_DELAY = 13,
-NDTPA_PROXY_QLEN = 14,
-NDTPA_LOCKTIME = 15,
-NDTPA_QUEUE_LENBYTES = 16,
-NDTPA_MCAST_REPROBES = 17,
-NDTPA_PAD = 18,
-NDTPA_INTERVAL_PROBE_TIME_MS = 19,
-__NDTPA_MAX = 20,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndtmsg {
-pub ndtm_family: __u8,
-pub ndtm_pad1: __u8,
-pub ndtm_pad2: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_config {
-pub ndtc_key_len: __u16,
-pub ndtc_entry_size: __u16,
-pub ndtc_entries: __u32,
-pub ndtc_last_flush: __u32,
-pub ndtc_last_rand: __u32,
-pub ndtc_hash_rnd: __u32,
-pub ndtc_hash_mask: __u32,
-pub ndtc_hash_chain_gc: __u32,
-pub ndtc_proxy_qlen: __u32,
-}
-pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC;
-pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME;
-pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1;
-pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2;
-pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3;
-pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG;
-pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS;
-pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS;
-pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL;
-pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD;
-pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_57 {
-NDTA_UNSPEC = 0,
-NDTA_NAME = 1,
-NDTA_THRESH1 = 2,
-NDTA_THRESH2 = 3,
-NDTA_THRESH3 = 4,
-NDTA_CONFIG = 5,
-NDTA_PARMS = 6,
-NDTA_STATS = 7,
-NDTA_GC_INTERVAL = 8,
-NDTA_PAD = 9,
-__NDTA_MAX = 10,
-}
-pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT;
-pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_58 {
-FDB_NOTIFY_BIT = 1,
-FDB_NOTIFY_INACTIVE_BIT = 2,
-}
-pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC;
-pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY;
-pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH;
-pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_59 {
-NFEA_UNSPEC = 0,
-NFEA_ACTIVITY_NOTIFY = 1,
-NFEA_DONT_REFRESH = 2,
-__NFEA_MAX = 3,
-}
-pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK;
-pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK;
-pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK;
-pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR;
-pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR;
-pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR;
-pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE;
-pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE;
-pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE;
-pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH;
-pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH;
-pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH;
-pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE;
-pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE;
-pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE;
-pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC;
-pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC;
-pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC;
-pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS;
-pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS;
-pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS;
-pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER;
-pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER;
-pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER;
-pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION;
-pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION;
-pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION;
-pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX;
-pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST;
-pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST;
-pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL;
-pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL;
-pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL;
-pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT;
-pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL;
-pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL;
-pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL;
-pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB;
-pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB;
-pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF;
-pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF;
-pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF;
-pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB;
-pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB;
-pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB;
-pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID;
-pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID;
-pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID;
-pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS;
-pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS;
-pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS;
-pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT;
-pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN;
-pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN;
-pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN;
-pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP;
-pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP;
-pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP;
-pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP;
-pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP;
-pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP;
-pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN;
-pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN;
-pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN;
-pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET;
-pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET;
-pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET;
-pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL;
-pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL;
-pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL;
-pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_60 {
-RTM_BASE = 16,
-RTM_DELLINK = 17,
-RTM_GETLINK = 18,
-RTM_SETLINK = 19,
-RTM_NEWADDR = 20,
-RTM_DELADDR = 21,
-RTM_GETADDR = 22,
-RTM_NEWROUTE = 24,
-RTM_DELROUTE = 25,
-RTM_GETROUTE = 26,
-RTM_NEWNEIGH = 28,
-RTM_DELNEIGH = 29,
-RTM_GETNEIGH = 30,
-RTM_NEWRULE = 32,
-RTM_DELRULE = 33,
-RTM_GETRULE = 34,
-RTM_NEWQDISC = 36,
-RTM_DELQDISC = 37,
-RTM_GETQDISC = 38,
-RTM_NEWTCLASS = 40,
-RTM_DELTCLASS = 41,
-RTM_GETTCLASS = 42,
-RTM_NEWTFILTER = 44,
-RTM_DELTFILTER = 45,
-RTM_GETTFILTER = 46,
-RTM_NEWACTION = 48,
-RTM_DELACTION = 49,
-RTM_GETACTION = 50,
-RTM_NEWPREFIX = 52,
-RTM_GETMULTICAST = 58,
-RTM_GETANYCAST = 62,
-RTM_NEWNEIGHTBL = 64,
-RTM_GETNEIGHTBL = 66,
-RTM_SETNEIGHTBL = 67,
-RTM_NEWNDUSEROPT = 68,
-RTM_NEWADDRLABEL = 72,
-RTM_DELADDRLABEL = 73,
-RTM_GETADDRLABEL = 74,
-RTM_GETDCB = 78,
-RTM_SETDCB = 79,
-RTM_NEWNETCONF = 80,
-RTM_DELNETCONF = 81,
-RTM_GETNETCONF = 82,
-RTM_NEWMDB = 84,
-RTM_DELMDB = 85,
-RTM_GETMDB = 86,
-RTM_NEWNSID = 88,
-RTM_DELNSID = 89,
-RTM_GETNSID = 90,
-RTM_NEWSTATS = 92,
-RTM_GETSTATS = 94,
-RTM_SETSTATS = 95,
-RTM_NEWCACHEREPORT = 96,
-RTM_NEWCHAIN = 100,
-RTM_DELCHAIN = 101,
-RTM_GETCHAIN = 102,
-RTM_NEWNEXTHOP = 104,
-RTM_DELNEXTHOP = 105,
-RTM_GETNEXTHOP = 106,
-RTM_NEWLINKPROP = 108,
-RTM_DELLINKPROP = 109,
-RTM_GETLINKPROP = 110,
-RTM_NEWVLAN = 112,
-RTM_DELVLAN = 113,
-RTM_GETVLAN = 114,
-RTM_NEWNEXTHOPBUCKET = 116,
-RTM_DELNEXTHOPBUCKET = 117,
-RTM_GETNEXTHOPBUCKET = 118,
-RTM_NEWTUNNEL = 120,
-RTM_DELTUNNEL = 121,
-RTM_GETTUNNEL = 122,
-__RTM_MAX = 123,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtattr {
-pub rta_len: crate::ctypes::c_ushort,
-pub rta_type: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtmsg {
-pub rtm_family: crate::ctypes::c_uchar,
-pub rtm_dst_len: crate::ctypes::c_uchar,
-pub rtm_src_len: crate::ctypes::c_uchar,
-pub rtm_tos: crate::ctypes::c_uchar,
-pub rtm_table: crate::ctypes::c_uchar,
-pub rtm_protocol: crate::ctypes::c_uchar,
-pub rtm_scope: crate::ctypes::c_uchar,
-pub rtm_type: crate::ctypes::c_uchar,
-pub rtm_flags: crate::ctypes::c_uint,
-}
-pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC;
-pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST;
-pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL;
-pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST;
-pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST;
-pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST;
-pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE;
-pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE;
-pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT;
-pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW;
-pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT;
-pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE;
-pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_61 {
-RTN_UNSPEC = 0,
-RTN_UNICAST = 1,
-RTN_LOCAL = 2,
-RTN_BROADCAST = 3,
-RTN_ANYCAST = 4,
-RTN_MULTICAST = 5,
-RTN_BLACKHOLE = 6,
-RTN_UNREACHABLE = 7,
-RTN_PROHIBIT = 8,
-RTN_THROW = 9,
-RTN_NAT = 10,
-RTN_XRESOLVE = 11,
-__RTN_MAX = 12,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_scope_t {
-RT_SCOPE_UNIVERSE = 0,
-RT_SCOPE_SITE = 200,
-RT_SCOPE_LINK = 253,
-RT_SCOPE_HOST = 254,
-RT_SCOPE_NOWHERE = 255,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_class_t {
-RT_TABLE_UNSPEC = 0,
-RT_TABLE_COMPAT = 252,
-RT_TABLE_DEFAULT = 253,
-RT_TABLE_MAIN = 254,
-RT_TABLE_LOCAL = 255,
-RT_TABLE_MAX = 4294967295,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtattr_type_t {
-RTA_UNSPEC = 0,
-RTA_DST = 1,
-RTA_SRC = 2,
-RTA_IIF = 3,
-RTA_OIF = 4,
-RTA_GATEWAY = 5,
-RTA_PRIORITY = 6,
-RTA_PREFSRC = 7,
-RTA_METRICS = 8,
-RTA_MULTIPATH = 9,
-RTA_PROTOINFO = 10,
-RTA_FLOW = 11,
-RTA_CACHEINFO = 12,
-RTA_SESSION = 13,
-RTA_MP_ALGO = 14,
-RTA_TABLE = 15,
-RTA_MARK = 16,
-RTA_MFC_STATS = 17,
-RTA_VIA = 18,
-RTA_NEWDST = 19,
-RTA_PREF = 20,
-RTA_ENCAP_TYPE = 21,
-RTA_ENCAP = 22,
-RTA_EXPIRES = 23,
-RTA_PAD = 24,
-RTA_UID = 25,
-RTA_TTL_PROPAGATE = 26,
-RTA_IP_PROTO = 27,
-RTA_SPORT = 28,
-RTA_DPORT = 29,
-RTA_NH_ID = 30,
-__RTA_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnexthop {
-pub rtnh_len: crate::ctypes::c_ushort,
-pub rtnh_flags: crate::ctypes::c_uchar,
-pub rtnh_hops: crate::ctypes::c_uchar,
-pub rtnh_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rtvia {
-pub rtvia_family: __kernel_sa_family_t,
-pub rtvia_addr: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_cacheinfo {
-pub rta_clntref: __u32,
-pub rta_lastuse: __u32,
-pub rta_expires: __s32,
-pub rta_error: __u32,
-pub rta_used: __u32,
-pub rta_id: __u32,
-pub rta_ts: __u32,
-pub rta_tsage: __u32,
-}
-pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC;
-pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK;
-pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU;
-pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW;
-pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT;
-pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR;
-pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH;
-pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND;
-pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS;
-pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING;
-pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT;
-pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND;
-pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES;
-pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN;
-pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND;
-pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK;
-pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO;
-pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE;
-pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_62 {
-RTAX_UNSPEC = 0,
-RTAX_LOCK = 1,
-RTAX_MTU = 2,
-RTAX_WINDOW = 3,
-RTAX_RTT = 4,
-RTAX_RTTVAR = 5,
-RTAX_SSTHRESH = 6,
-RTAX_CWND = 7,
-RTAX_ADVMSS = 8,
-RTAX_REORDERING = 9,
-RTAX_HOPLIMIT = 10,
-RTAX_INITCWND = 11,
-RTAX_FEATURES = 12,
-RTAX_RTO_MIN = 13,
-RTAX_INITRWND = 14,
-RTAX_QUICKACK = 15,
-RTAX_CC_ALGO = 16,
-RTAX_FASTOPEN_NO_COOKIE = 17,
-__RTAX_MAX = 18,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rta_session {
-pub proto: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub u: rta_session__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union rta_session__bindgen_ty_1 {
-pub ports: rta_session__bindgen_ty_1__bindgen_ty_1,
-pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2,
-pub spi: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_1 {
-pub sport: __u16,
-pub dport: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_2 {
-pub type_: __u8,
-pub code: __u8,
-pub ident: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_mfc_stats {
-pub mfcs_packets: __u64,
-pub mfcs_bytes: __u64,
-pub mfcs_wrong_if: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtgenmsg {
-pub rtgen_family: crate::ctypes::c_uchar,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifinfomsg {
-pub ifi_family: crate::ctypes::c_uchar,
-pub __ifi_pad: crate::ctypes::c_uchar,
-pub ifi_type: crate::ctypes::c_ushort,
-pub ifi_index: crate::ctypes::c_int,
-pub ifi_flags: crate::ctypes::c_uint,
-pub ifi_change: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefixmsg {
-pub prefix_family: crate::ctypes::c_uchar,
-pub prefix_pad1: crate::ctypes::c_uchar,
-pub prefix_pad2: crate::ctypes::c_ushort,
-pub prefix_ifindex: crate::ctypes::c_int,
-pub prefix_type: crate::ctypes::c_uchar,
-pub prefix_len: crate::ctypes::c_uchar,
-pub prefix_flags: crate::ctypes::c_uchar,
-pub prefix_pad3: crate::ctypes::c_uchar,
-}
-pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC;
-pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS;
-pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO;
-pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_63 {
-PREFIX_UNSPEC = 0,
-PREFIX_ADDRESS = 1,
-PREFIX_CACHEINFO = 2,
-__PREFIX_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefix_cacheinfo {
-pub preferred_time: __u32,
-pub valid_time: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcmsg {
-pub tcm_family: crate::ctypes::c_uchar,
-pub tcm__pad1: crate::ctypes::c_uchar,
-pub tcm__pad2: crate::ctypes::c_ushort,
-pub tcm_ifindex: crate::ctypes::c_int,
-pub tcm_handle: __u32,
-pub tcm_parent: __u32,
-pub tcm_info: __u32,
-}
-pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC;
-pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND;
-pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS;
-pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS;
-pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS;
-pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE;
-pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT;
-pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2;
-pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB;
-pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD;
-pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE;
-pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN;
-pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD;
-pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK;
-pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK;
-pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS;
-pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_64 {
-TCA_UNSPEC = 0,
-TCA_KIND = 1,
-TCA_OPTIONS = 2,
-TCA_STATS = 3,
-TCA_XSTATS = 4,
-TCA_RATE = 5,
-TCA_FCNT = 6,
-TCA_STATS2 = 7,
-TCA_STAB = 8,
-TCA_PAD = 9,
-TCA_DUMP_INVISIBLE = 10,
-TCA_CHAIN = 11,
-TCA_HW_OFFLOAD = 12,
-TCA_INGRESS_BLOCK = 13,
-TCA_EGRESS_BLOCK = 14,
-TCA_DUMP_FLAGS = 15,
-__TCA_MAX = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nduseroptmsg {
-pub nduseropt_family: crate::ctypes::c_uchar,
-pub nduseropt_pad1: crate::ctypes::c_uchar,
-pub nduseropt_opts_len: crate::ctypes::c_ushort,
-pub nduseropt_ifindex: crate::ctypes::c_int,
-pub nduseropt_icmp_type: __u8,
-pub nduseropt_icmp_code: __u8,
-pub nduseropt_pad2: crate::ctypes::c_ushort,
-pub nduseropt_pad3: crate::ctypes::c_uint,
-}
-pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC;
-pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR;
-pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_65 {
-NDUSEROPT_UNSPEC = 0,
-NDUSEROPT_SRCADDR = 1,
-__NDUSEROPT_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtnetlink_groups {
-RTNLGRP_NONE = 0,
-RTNLGRP_LINK = 1,
-RTNLGRP_NOTIFY = 2,
-RTNLGRP_NEIGH = 3,
-RTNLGRP_TC = 4,
-RTNLGRP_IPV4_IFADDR = 5,
-RTNLGRP_IPV4_MROUTE = 6,
-RTNLGRP_IPV4_ROUTE = 7,
-RTNLGRP_IPV4_RULE = 8,
-RTNLGRP_IPV6_IFADDR = 9,
-RTNLGRP_IPV6_MROUTE = 10,
-RTNLGRP_IPV6_ROUTE = 11,
-RTNLGRP_IPV6_IFINFO = 12,
-RTNLGRP_DECnet_IFADDR = 13,
-RTNLGRP_NOP2 = 14,
-RTNLGRP_DECnet_ROUTE = 15,
-RTNLGRP_DECnet_RULE = 16,
-RTNLGRP_NOP4 = 17,
-RTNLGRP_IPV6_PREFIX = 18,
-RTNLGRP_IPV6_RULE = 19,
-RTNLGRP_ND_USEROPT = 20,
-RTNLGRP_PHONET_IFADDR = 21,
-RTNLGRP_PHONET_ROUTE = 22,
-RTNLGRP_DCB = 23,
-RTNLGRP_IPV4_NETCONF = 24,
-RTNLGRP_IPV6_NETCONF = 25,
-RTNLGRP_MDB = 26,
-RTNLGRP_MPLS_ROUTE = 27,
-RTNLGRP_NSID = 28,
-RTNLGRP_MPLS_NETCONF = 29,
-RTNLGRP_IPV4_MROUTE_R = 30,
-RTNLGRP_IPV6_MROUTE_R = 31,
-RTNLGRP_NEXTHOP = 32,
-RTNLGRP_BRVLAN = 33,
-RTNLGRP_MCTP_IFADDR = 34,
-RTNLGRP_TUNNEL = 35,
-RTNLGRP_STATS = 36,
-__RTNLGRP_MAX = 37,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcamsg {
-pub tca_family: crate::ctypes::c_uchar,
-pub tca__pad1: crate::ctypes::c_uchar,
-pub tca__pad2: crate::ctypes::c_ushort,
-}
-pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC;
-pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB;
-pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS;
-pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT;
-pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA;
-pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_66 {
-TCA_ROOT_UNSPEC = 0,
-TCA_ROOT_TAB = 1,
-TCA_ROOT_FLAGS = 2,
-TCA_ROOT_COUNT = 3,
-TCA_ROOT_TIME_DELTA = 4,
-__TCA_ROOT_MAX = 5,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/mips/errno.rs b/vendor/linux-raw-sys-0.3.2/src/mips/errno.rs
deleted file mode 100644
index c43288df3..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/mips/errno.rs
+++ /dev/null
@@ -1,137 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const EPERM: u32 = 1;
-pub const ENOENT: u32 = 2;
-pub const ESRCH: u32 = 3;
-pub const EINTR: u32 = 4;
-pub const EIO: u32 = 5;
-pub const ENXIO: u32 = 6;
-pub const E2BIG: u32 = 7;
-pub const ENOEXEC: u32 = 8;
-pub const EBADF: u32 = 9;
-pub const ECHILD: u32 = 10;
-pub const EAGAIN: u32 = 11;
-pub const ENOMEM: u32 = 12;
-pub const EACCES: u32 = 13;
-pub const EFAULT: u32 = 14;
-pub const ENOTBLK: u32 = 15;
-pub const EBUSY: u32 = 16;
-pub const EEXIST: u32 = 17;
-pub const EXDEV: u32 = 18;
-pub const ENODEV: u32 = 19;
-pub const ENOTDIR: u32 = 20;
-pub const EISDIR: u32 = 21;
-pub const EINVAL: u32 = 22;
-pub const ENFILE: u32 = 23;
-pub const EMFILE: u32 = 24;
-pub const ENOTTY: u32 = 25;
-pub const ETXTBSY: u32 = 26;
-pub const EFBIG: u32 = 27;
-pub const ENOSPC: u32 = 28;
-pub const ESPIPE: u32 = 29;
-pub const EROFS: u32 = 30;
-pub const EMLINK: u32 = 31;
-pub const EPIPE: u32 = 32;
-pub const EDOM: u32 = 33;
-pub const ERANGE: u32 = 34;
-pub const ENOMSG: u32 = 35;
-pub const EIDRM: u32 = 36;
-pub const ECHRNG: u32 = 37;
-pub const EL2NSYNC: u32 = 38;
-pub const EL3HLT: u32 = 39;
-pub const EL3RST: u32 = 40;
-pub const ELNRNG: u32 = 41;
-pub const EUNATCH: u32 = 42;
-pub const ENOCSI: u32 = 43;
-pub const EL2HLT: u32 = 44;
-pub const EDEADLK: u32 = 45;
-pub const ENOLCK: u32 = 46;
-pub const EBADE: u32 = 50;
-pub const EBADR: u32 = 51;
-pub const EXFULL: u32 = 52;
-pub const ENOANO: u32 = 53;
-pub const EBADRQC: u32 = 54;
-pub const EBADSLT: u32 = 55;
-pub const EDEADLOCK: u32 = 56;
-pub const EBFONT: u32 = 59;
-pub const ENOSTR: u32 = 60;
-pub const ENODATA: u32 = 61;
-pub const ETIME: u32 = 62;
-pub const ENOSR: u32 = 63;
-pub const ENONET: u32 = 64;
-pub const ENOPKG: u32 = 65;
-pub const EREMOTE: u32 = 66;
-pub const ENOLINK: u32 = 67;
-pub const EADV: u32 = 68;
-pub const ESRMNT: u32 = 69;
-pub const ECOMM: u32 = 70;
-pub const EPROTO: u32 = 71;
-pub const EDOTDOT: u32 = 73;
-pub const EMULTIHOP: u32 = 74;
-pub const EBADMSG: u32 = 77;
-pub const ENAMETOOLONG: u32 = 78;
-pub const EOVERFLOW: u32 = 79;
-pub const ENOTUNIQ: u32 = 80;
-pub const EBADFD: u32 = 81;
-pub const EREMCHG: u32 = 82;
-pub const ELIBACC: u32 = 83;
-pub const ELIBBAD: u32 = 84;
-pub const ELIBSCN: u32 = 85;
-pub const ELIBMAX: u32 = 86;
-pub const ELIBEXEC: u32 = 87;
-pub const EILSEQ: u32 = 88;
-pub const ENOSYS: u32 = 89;
-pub const ELOOP: u32 = 90;
-pub const ERESTART: u32 = 91;
-pub const ESTRPIPE: u32 = 92;
-pub const ENOTEMPTY: u32 = 93;
-pub const EUSERS: u32 = 94;
-pub const ENOTSOCK: u32 = 95;
-pub const EDESTADDRREQ: u32 = 96;
-pub const EMSGSIZE: u32 = 97;
-pub const EPROTOTYPE: u32 = 98;
-pub const ENOPROTOOPT: u32 = 99;
-pub const EPROTONOSUPPORT: u32 = 120;
-pub const ESOCKTNOSUPPORT: u32 = 121;
-pub const EOPNOTSUPP: u32 = 122;
-pub const EPFNOSUPPORT: u32 = 123;
-pub const EAFNOSUPPORT: u32 = 124;
-pub const EADDRINUSE: u32 = 125;
-pub const EADDRNOTAVAIL: u32 = 126;
-pub const ENETDOWN: u32 = 127;
-pub const ENETUNREACH: u32 = 128;
-pub const ENETRESET: u32 = 129;
-pub const ECONNABORTED: u32 = 130;
-pub const ECONNRESET: u32 = 131;
-pub const ENOBUFS: u32 = 132;
-pub const EISCONN: u32 = 133;
-pub const ENOTCONN: u32 = 134;
-pub const EUCLEAN: u32 = 135;
-pub const ENOTNAM: u32 = 137;
-pub const ENAVAIL: u32 = 138;
-pub const EISNAM: u32 = 139;
-pub const EREMOTEIO: u32 = 140;
-pub const EINIT: u32 = 141;
-pub const EREMDEV: u32 = 142;
-pub const ESHUTDOWN: u32 = 143;
-pub const ETOOMANYREFS: u32 = 144;
-pub const ETIMEDOUT: u32 = 145;
-pub const ECONNREFUSED: u32 = 146;
-pub const EHOSTDOWN: u32 = 147;
-pub const EHOSTUNREACH: u32 = 148;
-pub const EWOULDBLOCK: u32 = 11;
-pub const EALREADY: u32 = 149;
-pub const EINPROGRESS: u32 = 150;
-pub const ESTALE: u32 = 151;
-pub const ECANCELED: u32 = 158;
-pub const ENOMEDIUM: u32 = 159;
-pub const EMEDIUMTYPE: u32 = 160;
-pub const ENOKEY: u32 = 161;
-pub const EKEYEXPIRED: u32 = 162;
-pub const EKEYREVOKED: u32 = 163;
-pub const EKEYREJECTED: u32 = 164;
-pub const EOWNERDEAD: u32 = 165;
-pub const ENOTRECOVERABLE: u32 = 166;
-pub const ERFKILL: u32 = 167;
-pub const EHWPOISON: u32 = 168;
-pub const EDQUOT: u32 = 1133;
diff --git a/vendor/linux-raw-sys-0.3.2/src/mips/general.rs b/vendor/linux-raw-sys-0.3.2/src/mips/general.rs
deleted file mode 100644
index b2e048624..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/mips/general.rs
+++ /dev/null
@@ -1,5544 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
-pub struct __BindgenBitfieldUnit<Storage> {
-storage: Storage,
-}
-impl<Storage> __BindgenBitfieldUnit<Storage> {
-#[inline]
-pub const fn new(storage: Storage) -> Self {
-Self { storage }
-}
-}
-impl<Storage> __BindgenBitfieldUnit<Storage>
-where
-Storage: AsRef<[u8]> + AsMut<[u8]>,
-{
-#[inline]
-pub fn get_bit(&self, index: usize) -> bool {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = self.storage.as_ref()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-byte & mask == mask
-}
-#[inline]
-pub fn set_bit(&mut self, index: usize, val: bool) {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = &mut self.storage.as_mut()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-if val {
-*byte |= mask;
-} else {
-*byte &= !mask;
-}
-}
-#[inline]
-pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-let mut val = 0;
-for i in 0..(bit_width as usize) {
-if self.get_bit(i + bit_offset) {
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-val |= 1 << index;
-}
-}
-val
-}
-#[inline]
-pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-for i in 0..(bit_width as usize) {
-let mask = 1 << i;
-let val_bit_is_set = val & mask == mask;
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-self.set_bit(index + bit_offset, val_bit_is_set);
-}
-}
-}
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-#[repr(C)]
-pub struct __BindgenUnionField<T>(::core::marker::PhantomData<T>);
-impl<T> __BindgenUnionField<T> {
-#[inline]
-pub const fn new() -> Self {
-__BindgenUnionField(::core::marker::PhantomData)
-}
-#[inline]
-pub unsafe fn as_ref(&self) -> &T {
-::core::mem::transmute(self)
-}
-#[inline]
-pub unsafe fn as_mut(&mut self) -> &mut T {
-::core::mem::transmute(self)
-}
-}
-impl<T> ::core::default::Default for __BindgenUnionField<T> {
-#[inline]
-fn default() -> Self {
-Self::new()
-}
-}
-impl<T> ::core::clone::Clone for __BindgenUnionField<T> {
-#[inline]
-fn clone(&self) -> Self {
-Self::new()
-}
-}
-impl<T> ::core::marker::Copy for __BindgenUnionField<T> {}
-impl<T> ::core::fmt::Debug for __BindgenUnionField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__BindgenUnionField")
-}
-}
-impl<T> ::core::hash::Hash for __BindgenUnionField<T> {
-fn hash<H: ::core::hash::Hasher>(&self, _state: &mut H) {}
-}
-impl<T> ::core::cmp::PartialEq for __BindgenUnionField<T> {
-fn eq(&self, _other: &__BindgenUnionField<T>) -> bool {
-true
-}
-}
-impl<T> ::core::cmp::Eq for __BindgenUnionField<T> {}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const AT_SYSINFO_EHDR: u32 = 33;
-pub const AT_VECTOR_SIZE_ARCH: u32 = 1;
-pub const AT_NULL: u32 = 0;
-pub const AT_IGNORE: u32 = 1;
-pub const AT_EXECFD: u32 = 2;
-pub const AT_PHDR: u32 = 3;
-pub const AT_PHENT: u32 = 4;
-pub const AT_PHNUM: u32 = 5;
-pub const AT_PAGESZ: u32 = 6;
-pub const AT_BASE: u32 = 7;
-pub const AT_FLAGS: u32 = 8;
-pub const AT_ENTRY: u32 = 9;
-pub const AT_NOTELF: u32 = 10;
-pub const AT_UID: u32 = 11;
-pub const AT_EUID: u32 = 12;
-pub const AT_GID: u32 = 13;
-pub const AT_EGID: u32 = 14;
-pub const AT_PLATFORM: u32 = 15;
-pub const AT_HWCAP: u32 = 16;
-pub const AT_CLKTCK: u32 = 17;
-pub const AT_SECURE: u32 = 23;
-pub const AT_BASE_PLATFORM: u32 = 24;
-pub const AT_RANDOM: u32 = 25;
-pub const AT_HWCAP2: u32 = 26;
-pub const AT_EXECFN: u32 = 31;
-pub const AT_MINSIGSTKSZ: u32 = 51;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const _MIPS_ISA_MIPS1: u32 = 1;
-pub const _MIPS_ISA_MIPS2: u32 = 2;
-pub const _MIPS_ISA_MIPS3: u32 = 3;
-pub const _MIPS_ISA_MIPS4: u32 = 4;
-pub const _MIPS_ISA_MIPS5: u32 = 5;
-pub const _MIPS_ISA_MIPS32: u32 = 6;
-pub const _MIPS_ISA_MIPS64: u32 = 7;
-pub const _MIPS_SIM_ABI32: u32 = 1;
-pub const _MIPS_SIM_NABI32: u32 = 2;
-pub const _MIPS_SIM_ABI64: u32 = 3;
-pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S_1: u32 = 1;
-pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798;
-pub const _LINUX_CAPABILITY_U32S_2: u32 = 2;
-pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514;
-pub const _LINUX_CAPABILITY_U32S_3: u32 = 2;
-pub const VFS_CAP_REVISION_MASK: u32 = 4278190080;
-pub const VFS_CAP_REVISION_SHIFT: u32 = 24;
-pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081;
-pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1;
-pub const VFS_CAP_REVISION_1: u32 = 16777216;
-pub const VFS_CAP_U32_1: u32 = 1;
-pub const VFS_CAP_REVISION_2: u32 = 33554432;
-pub const VFS_CAP_U32_2: u32 = 2;
-pub const VFS_CAP_REVISION_3: u32 = 50331648;
-pub const VFS_CAP_U32_3: u32 = 2;
-pub const VFS_CAP_U32: u32 = 2;
-pub const VFS_CAP_REVISION: u32 = 50331648;
-pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S: u32 = 1;
-pub const CAP_CHOWN: u32 = 0;
-pub const CAP_DAC_OVERRIDE: u32 = 1;
-pub const CAP_DAC_READ_SEARCH: u32 = 2;
-pub const CAP_FOWNER: u32 = 3;
-pub const CAP_FSETID: u32 = 4;
-pub const CAP_KILL: u32 = 5;
-pub const CAP_SETGID: u32 = 6;
-pub const CAP_SETUID: u32 = 7;
-pub const CAP_SETPCAP: u32 = 8;
-pub const CAP_LINUX_IMMUTABLE: u32 = 9;
-pub const CAP_NET_BIND_SERVICE: u32 = 10;
-pub const CAP_NET_BROADCAST: u32 = 11;
-pub const CAP_NET_ADMIN: u32 = 12;
-pub const CAP_NET_RAW: u32 = 13;
-pub const CAP_IPC_LOCK: u32 = 14;
-pub const CAP_IPC_OWNER: u32 = 15;
-pub const CAP_SYS_MODULE: u32 = 16;
-pub const CAP_SYS_RAWIO: u32 = 17;
-pub const CAP_SYS_CHROOT: u32 = 18;
-pub const CAP_SYS_PTRACE: u32 = 19;
-pub const CAP_SYS_PACCT: u32 = 20;
-pub const CAP_SYS_ADMIN: u32 = 21;
-pub const CAP_SYS_BOOT: u32 = 22;
-pub const CAP_SYS_NICE: u32 = 23;
-pub const CAP_SYS_RESOURCE: u32 = 24;
-pub const CAP_SYS_TIME: u32 = 25;
-pub const CAP_SYS_TTY_CONFIG: u32 = 26;
-pub const CAP_MKNOD: u32 = 27;
-pub const CAP_LEASE: u32 = 28;
-pub const CAP_AUDIT_WRITE: u32 = 29;
-pub const CAP_AUDIT_CONTROL: u32 = 30;
-pub const CAP_SETFCAP: u32 = 31;
-pub const CAP_MAC_OVERRIDE: u32 = 32;
-pub const CAP_MAC_ADMIN: u32 = 33;
-pub const CAP_SYSLOG: u32 = 34;
-pub const CAP_WAKE_ALARM: u32 = 35;
-pub const CAP_BLOCK_SUSPEND: u32 = 36;
-pub const CAP_AUDIT_READ: u32 = 37;
-pub const CAP_PERFMON: u32 = 38;
-pub const CAP_BPF: u32 = 39;
-pub const CAP_CHECKPOINT_RESTORE: u32 = 40;
-pub const CAP_LAST_CAP: u32 = 40;
-pub const O_APPEND: u32 = 8;
-pub const O_DSYNC: u32 = 16;
-pub const O_NONBLOCK: u32 = 128;
-pub const O_CREAT: u32 = 256;
-pub const O_TRUNC: u32 = 512;
-pub const O_EXCL: u32 = 1024;
-pub const O_NOCTTY: u32 = 2048;
-pub const FASYNC: u32 = 4096;
-pub const O_LARGEFILE: u32 = 8192;
-pub const __O_SYNC: u32 = 16384;
-pub const O_SYNC: u32 = 16400;
-pub const O_DIRECT: u32 = 32768;
-pub const F_GETLK: u32 = 14;
-pub const F_SETLK: u32 = 6;
-pub const F_SETLKW: u32 = 7;
-pub const F_SETOWN: u32 = 24;
-pub const F_GETOWN: u32 = 23;
-pub const F_GETLK64: u32 = 33;
-pub const F_SETLK64: u32 = 34;
-pub const F_SETLKW64: u32 = 35;
-pub const O_ACCMODE: u32 = 3;
-pub const O_RDONLY: u32 = 0;
-pub const O_WRONLY: u32 = 1;
-pub const O_RDWR: u32 = 2;
-pub const O_DIRECTORY: u32 = 65536;
-pub const O_NOFOLLOW: u32 = 131072;
-pub const O_NOATIME: u32 = 262144;
-pub const O_CLOEXEC: u32 = 524288;
-pub const O_PATH: u32 = 2097152;
-pub const __O_TMPFILE: u32 = 4194304;
-pub const O_TMPFILE: u32 = 4259840;
-pub const O_TMPFILE_MASK: u32 = 4260096;
-pub const O_NDELAY: u32 = 128;
-pub const F_DUPFD: u32 = 0;
-pub const F_GETFD: u32 = 1;
-pub const F_SETFD: u32 = 2;
-pub const F_GETFL: u32 = 3;
-pub const F_SETFL: u32 = 4;
-pub const F_SETSIG: u32 = 10;
-pub const F_GETSIG: u32 = 11;
-pub const F_SETOWN_EX: u32 = 15;
-pub const F_GETOWN_EX: u32 = 16;
-pub const F_GETOWNER_UIDS: u32 = 17;
-pub const F_OFD_GETLK: u32 = 36;
-pub const F_OFD_SETLK: u32 = 37;
-pub const F_OFD_SETLKW: u32 = 38;
-pub const F_OWNER_TID: u32 = 0;
-pub const F_OWNER_PID: u32 = 1;
-pub const F_OWNER_PGRP: u32 = 2;
-pub const FD_CLOEXEC: u32 = 1;
-pub const F_RDLCK: u32 = 0;
-pub const F_WRLCK: u32 = 1;
-pub const F_UNLCK: u32 = 2;
-pub const F_EXLCK: u32 = 4;
-pub const F_SHLCK: u32 = 8;
-pub const LOCK_SH: u32 = 1;
-pub const LOCK_EX: u32 = 2;
-pub const LOCK_NB: u32 = 4;
-pub const LOCK_UN: u32 = 8;
-pub const LOCK_MAND: u32 = 32;
-pub const LOCK_READ: u32 = 64;
-pub const LOCK_WRITE: u32 = 128;
-pub const LOCK_RW: u32 = 192;
-pub const F_LINUX_SPECIFIC_BASE: u32 = 1024;
-pub const RESOLVE_NO_XDEV: u32 = 1;
-pub const RESOLVE_NO_MAGICLINKS: u32 = 2;
-pub const RESOLVE_NO_SYMLINKS: u32 = 4;
-pub const RESOLVE_BENEATH: u32 = 8;
-pub const RESOLVE_IN_ROOT: u32 = 16;
-pub const RESOLVE_CACHED: u32 = 32;
-pub const F_SETLEASE: u32 = 1024;
-pub const F_GETLEASE: u32 = 1025;
-pub const F_CANCELLK: u32 = 1029;
-pub const F_DUPFD_CLOEXEC: u32 = 1030;
-pub const F_NOTIFY: u32 = 1026;
-pub const F_SETPIPE_SZ: u32 = 1031;
-pub const F_GETPIPE_SZ: u32 = 1032;
-pub const F_ADD_SEALS: u32 = 1033;
-pub const F_GET_SEALS: u32 = 1034;
-pub const F_SEAL_SEAL: u32 = 1;
-pub const F_SEAL_SHRINK: u32 = 2;
-pub const F_SEAL_GROW: u32 = 4;
-pub const F_SEAL_WRITE: u32 = 8;
-pub const F_SEAL_FUTURE_WRITE: u32 = 16;
-pub const F_GET_RW_HINT: u32 = 1035;
-pub const F_SET_RW_HINT: u32 = 1036;
-pub const F_GET_FILE_RW_HINT: u32 = 1037;
-pub const F_SET_FILE_RW_HINT: u32 = 1038;
-pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const RWH_WRITE_LIFE_NONE: u32 = 1;
-pub const RWH_WRITE_LIFE_SHORT: u32 = 2;
-pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3;
-pub const RWH_WRITE_LIFE_LONG: u32 = 4;
-pub const RWH_WRITE_LIFE_EXTREME: u32 = 5;
-pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const DN_ACCESS: u32 = 1;
-pub const DN_MODIFY: u32 = 2;
-pub const DN_CREATE: u32 = 4;
-pub const DN_DELETE: u32 = 8;
-pub const DN_RENAME: u32 = 16;
-pub const DN_ATTRIB: u32 = 32;
-pub const DN_MULTISHOT: u32 = 2147483648;
-pub const AT_FDCWD: i32 = -100;
-pub const AT_SYMLINK_NOFOLLOW: u32 = 256;
-pub const AT_EACCESS: u32 = 512;
-pub const AT_REMOVEDIR: u32 = 512;
-pub const AT_SYMLINK_FOLLOW: u32 = 1024;
-pub const AT_NO_AUTOMOUNT: u32 = 2048;
-pub const AT_EMPTY_PATH: u32 = 4096;
-pub const AT_STATX_SYNC_TYPE: u32 = 24576;
-pub const AT_STATX_SYNC_AS_STAT: u32 = 0;
-pub const AT_STATX_FORCE_SYNC: u32 = 8192;
-pub const AT_STATX_DONT_SYNC: u32 = 16384;
-pub const AT_RECURSIVE: u32 = 32768;
-pub const EPOLL_CLOEXEC: u32 = 524288;
-pub const EPOLL_CTL_ADD: u32 = 1;
-pub const EPOLL_CTL_DEL: u32 = 2;
-pub const EPOLL_CTL_MOD: u32 = 3;
-pub const POSIX_FADV_NORMAL: u32 = 0;
-pub const POSIX_FADV_RANDOM: u32 = 1;
-pub const POSIX_FADV_SEQUENTIAL: u32 = 2;
-pub const POSIX_FADV_WILLNEED: u32 = 3;
-pub const POSIX_FADV_DONTNEED: u32 = 4;
-pub const POSIX_FADV_NOREUSE: u32 = 5;
-pub const FALLOC_FL_KEEP_SIZE: u32 = 1;
-pub const FALLOC_FL_PUNCH_HOLE: u32 = 2;
-pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4;
-pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8;
-pub const FALLOC_FL_ZERO_RANGE: u32 = 16;
-pub const FALLOC_FL_INSERT_RANGE: u32 = 32;
-pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64;
-pub const NR_OPEN: u32 = 1024;
-pub const NGROUPS_MAX: u32 = 65536;
-pub const ARG_MAX: u32 = 131072;
-pub const LINK_MAX: u32 = 127;
-pub const MAX_CANON: u32 = 255;
-pub const MAX_INPUT: u32 = 255;
-pub const NAME_MAX: u32 = 255;
-pub const PATH_MAX: u32 = 4096;
-pub const PIPE_BUF: u32 = 4096;
-pub const XATTR_NAME_MAX: u32 = 255;
-pub const XATTR_SIZE_MAX: u32 = 65536;
-pub const XATTR_LIST_MAX: u32 = 65536;
-pub const RTSIG_MAX: u32 = 32;
-pub const _IOC_SIZEBITS: u32 = 13;
-pub const _IOC_DIRBITS: u32 = 3;
-pub const _IOC_NONE: u32 = 1;
-pub const _IOC_READ: u32 = 2;
-pub const _IOC_WRITE: u32 = 4;
-pub const _IOC_NRBITS: u32 = 8;
-pub const _IOC_TYPEBITS: u32 = 8;
-pub const _IOC_NRMASK: u32 = 255;
-pub const _IOC_TYPEMASK: u32 = 255;
-pub const _IOC_SIZEMASK: u32 = 8191;
-pub const _IOC_DIRMASK: u32 = 7;
-pub const _IOC_NRSHIFT: u32 = 0;
-pub const _IOC_TYPESHIFT: u32 = 8;
-pub const _IOC_SIZESHIFT: u32 = 16;
-pub const _IOC_DIRSHIFT: u32 = 29;
-pub const IOC_IN: u32 = 2147483648;
-pub const IOC_OUT: u32 = 1073741824;
-pub const IOC_INOUT: u32 = 3221225472;
-pub const IOCSIZE_MASK: u32 = 536805376;
-pub const IOCSIZE_SHIFT: u32 = 16;
-pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16;
-pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1;
-pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4;
-pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5;
-pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6;
-pub const FSCRYPT_MODE_SM4_XTS: u32 = 7;
-pub const FSCRYPT_MODE_SM4_CTS: u32 = 8;
-pub const FSCRYPT_MODE_ADIANTUM: u32 = 9;
-pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10;
-pub const FSCRYPT_POLICY_V1: u32 = 0;
-pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64;
-pub const FSCRYPT_POLICY_V2: u32 = 2;
-pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16;
-pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1;
-pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1;
-pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3;
-pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1;
-pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FS_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FS_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FS_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FS_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FS_POLICY_FLAGS_VALID: u32 = 7;
-pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0;
-pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1;
-pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2;
-pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3;
-pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4;
-pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5;
-pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6;
-pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9;
-pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FS_MAX_KEY_SIZE: u32 = 64;
-pub const MS_RDONLY: u32 = 1;
-pub const MS_NOSUID: u32 = 2;
-pub const MS_NODEV: u32 = 4;
-pub const MS_NOEXEC: u32 = 8;
-pub const MS_SYNCHRONOUS: u32 = 16;
-pub const MS_REMOUNT: u32 = 32;
-pub const MS_MANDLOCK: u32 = 64;
-pub const MS_DIRSYNC: u32 = 128;
-pub const MS_NOSYMFOLLOW: u32 = 256;
-pub const MS_NOATIME: u32 = 1024;
-pub const MS_NODIRATIME: u32 = 2048;
-pub const MS_BIND: u32 = 4096;
-pub const MS_MOVE: u32 = 8192;
-pub const MS_REC: u32 = 16384;
-pub const MS_VERBOSE: u32 = 32768;
-pub const MS_SILENT: u32 = 32768;
-pub const MS_POSIXACL: u32 = 65536;
-pub const MS_UNBINDABLE: u32 = 131072;
-pub const MS_PRIVATE: u32 = 262144;
-pub const MS_SLAVE: u32 = 524288;
-pub const MS_SHARED: u32 = 1048576;
-pub const MS_RELATIME: u32 = 2097152;
-pub const MS_KERNMOUNT: u32 = 4194304;
-pub const MS_I_VERSION: u32 = 8388608;
-pub const MS_STRICTATIME: u32 = 16777216;
-pub const MS_LAZYTIME: u32 = 33554432;
-pub const MS_SUBMOUNT: u32 = 67108864;
-pub const MS_NOREMOTELOCK: u32 = 134217728;
-pub const MS_NOSEC: u32 = 268435456;
-pub const MS_BORN: u32 = 536870912;
-pub const MS_ACTIVE: u32 = 1073741824;
-pub const MS_NOUSER: u32 = 2147483648;
-pub const MS_RMT_MASK: u32 = 41943121;
-pub const MS_MGC_VAL: u32 = 3236757504;
-pub const MS_MGC_MSK: u32 = 4294901760;
-pub const OPEN_TREE_CLONE: u32 = 1;
-pub const OPEN_TREE_CLOEXEC: u32 = 524288;
-pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1;
-pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2;
-pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4;
-pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16;
-pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32;
-pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64;
-pub const MOVE_MOUNT_SET_GROUP: u32 = 256;
-pub const MOVE_MOUNT__MASK: u32 = 375;
-pub const FSOPEN_CLOEXEC: u32 = 1;
-pub const FSPICK_CLOEXEC: u32 = 1;
-pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2;
-pub const FSPICK_NO_AUTOMOUNT: u32 = 4;
-pub const FSPICK_EMPTY_PATH: u32 = 8;
-pub const FSMOUNT_CLOEXEC: u32 = 1;
-pub const MOUNT_ATTR_RDONLY: u32 = 1;
-pub const MOUNT_ATTR_NOSUID: u32 = 2;
-pub const MOUNT_ATTR_NODEV: u32 = 4;
-pub const MOUNT_ATTR_NOEXEC: u32 = 8;
-pub const MOUNT_ATTR__ATIME: u32 = 112;
-pub const MOUNT_ATTR_RELATIME: u32 = 0;
-pub const MOUNT_ATTR_NOATIME: u32 = 16;
-pub const MOUNT_ATTR_STRICTATIME: u32 = 32;
-pub const MOUNT_ATTR_NODIRATIME: u32 = 128;
-pub const MOUNT_ATTR_IDMAP: u32 = 1048576;
-pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152;
-pub const MOUNT_ATTR_SIZE_VER0: u32 = 32;
-pub const INR_OPEN_CUR: u32 = 1024;
-pub const INR_OPEN_MAX: u32 = 4096;
-pub const BLOCK_SIZE_BITS: u32 = 10;
-pub const BLOCK_SIZE: u32 = 1024;
-pub const SEEK_SET: u32 = 0;
-pub const SEEK_CUR: u32 = 1;
-pub const SEEK_END: u32 = 2;
-pub const SEEK_DATA: u32 = 3;
-pub const SEEK_HOLE: u32 = 4;
-pub const SEEK_MAX: u32 = 4;
-pub const RENAME_NOREPLACE: u32 = 1;
-pub const RENAME_EXCHANGE: u32 = 2;
-pub const RENAME_WHITEOUT: u32 = 4;
-pub const FILE_DEDUPE_RANGE_SAME: u32 = 0;
-pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1;
-pub const NR_FILE: u32 = 8192;
-pub const FS_XFLAG_REALTIME: u32 = 1;
-pub const FS_XFLAG_PREALLOC: u32 = 2;
-pub const FS_XFLAG_IMMUTABLE: u32 = 8;
-pub const FS_XFLAG_APPEND: u32 = 16;
-pub const FS_XFLAG_SYNC: u32 = 32;
-pub const FS_XFLAG_NOATIME: u32 = 64;
-pub const FS_XFLAG_NODUMP: u32 = 128;
-pub const FS_XFLAG_RTINHERIT: u32 = 256;
-pub const FS_XFLAG_PROJINHERIT: u32 = 512;
-pub const FS_XFLAG_NOSYMLINKS: u32 = 1024;
-pub const FS_XFLAG_EXTSIZE: u32 = 2048;
-pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096;
-pub const FS_XFLAG_NODEFRAG: u32 = 8192;
-pub const FS_XFLAG_FILESTREAM: u32 = 16384;
-pub const FS_XFLAG_DAX: u32 = 32768;
-pub const FS_XFLAG_COWEXTSIZE: u32 = 65536;
-pub const FS_XFLAG_HASATTR: u32 = 2147483648;
-pub const BMAP_IOCTL: u32 = 1;
-pub const FSLABEL_MAX: u32 = 256;
-pub const FS_SECRM_FL: u32 = 1;
-pub const FS_UNRM_FL: u32 = 2;
-pub const FS_COMPR_FL: u32 = 4;
-pub const FS_SYNC_FL: u32 = 8;
-pub const FS_IMMUTABLE_FL: u32 = 16;
-pub const FS_APPEND_FL: u32 = 32;
-pub const FS_NODUMP_FL: u32 = 64;
-pub const FS_NOATIME_FL: u32 = 128;
-pub const FS_DIRTY_FL: u32 = 256;
-pub const FS_COMPRBLK_FL: u32 = 512;
-pub const FS_NOCOMP_FL: u32 = 1024;
-pub const FS_ENCRYPT_FL: u32 = 2048;
-pub const FS_BTREE_FL: u32 = 4096;
-pub const FS_INDEX_FL: u32 = 4096;
-pub const FS_IMAGIC_FL: u32 = 8192;
-pub const FS_JOURNAL_DATA_FL: u32 = 16384;
-pub const FS_NOTAIL_FL: u32 = 32768;
-pub const FS_DIRSYNC_FL: u32 = 65536;
-pub const FS_TOPDIR_FL: u32 = 131072;
-pub const FS_HUGE_FILE_FL: u32 = 262144;
-pub const FS_EXTENT_FL: u32 = 524288;
-pub const FS_VERITY_FL: u32 = 1048576;
-pub const FS_EA_INODE_FL: u32 = 2097152;
-pub const FS_EOFBLOCKS_FL: u32 = 4194304;
-pub const FS_NOCOW_FL: u32 = 8388608;
-pub const FS_DAX_FL: u32 = 33554432;
-pub const FS_INLINE_DATA_FL: u32 = 268435456;
-pub const FS_PROJINHERIT_FL: u32 = 536870912;
-pub const FS_CASEFOLD_FL: u32 = 1073741824;
-pub const FS_RESERVED_FL: u32 = 2147483648;
-pub const FS_FL_USER_VISIBLE: u32 = 253951;
-pub const FS_FL_USER_MODIFIABLE: u32 = 229631;
-pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1;
-pub const SYNC_FILE_RANGE_WRITE: u32 = 2;
-pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4;
-pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7;
-pub const FUTEX_WAIT: u32 = 0;
-pub const FUTEX_WAKE: u32 = 1;
-pub const FUTEX_FD: u32 = 2;
-pub const FUTEX_REQUEUE: u32 = 3;
-pub const FUTEX_CMP_REQUEUE: u32 = 4;
-pub const FUTEX_WAKE_OP: u32 = 5;
-pub const FUTEX_LOCK_PI: u32 = 6;
-pub const FUTEX_UNLOCK_PI: u32 = 7;
-pub const FUTEX_TRYLOCK_PI: u32 = 8;
-pub const FUTEX_WAIT_BITSET: u32 = 9;
-pub const FUTEX_WAKE_BITSET: u32 = 10;
-pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11;
-pub const FUTEX_CMP_REQUEUE_PI: u32 = 12;
-pub const FUTEX_LOCK_PI2: u32 = 13;
-pub const FUTEX_PRIVATE_FLAG: u32 = 128;
-pub const FUTEX_CLOCK_REALTIME: u32 = 256;
-pub const FUTEX_CMD_MASK: i32 = -385;
-pub const FUTEX_WAIT_PRIVATE: u32 = 128;
-pub const FUTEX_WAKE_PRIVATE: u32 = 129;
-pub const FUTEX_REQUEUE_PRIVATE: u32 = 131;
-pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132;
-pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133;
-pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134;
-pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141;
-pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135;
-pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136;
-pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137;
-pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138;
-pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139;
-pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140;
-pub const FUTEX_32: u32 = 2;
-pub const FUTEX_WAITV_MAX: u32 = 128;
-pub const FUTEX_WAITERS: u32 = 2147483648;
-pub const FUTEX_OWNER_DIED: u32 = 1073741824;
-pub const FUTEX_TID_MASK: u32 = 1073741823;
-pub const ROBUST_LIST_LIMIT: u32 = 2048;
-pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295;
-pub const FUTEX_OP_SET: u32 = 0;
-pub const FUTEX_OP_ADD: u32 = 1;
-pub const FUTEX_OP_OR: u32 = 2;
-pub const FUTEX_OP_ANDN: u32 = 3;
-pub const FUTEX_OP_XOR: u32 = 4;
-pub const FUTEX_OP_OPARG_SHIFT: u32 = 8;
-pub const FUTEX_OP_CMP_EQ: u32 = 0;
-pub const FUTEX_OP_CMP_NE: u32 = 1;
-pub const FUTEX_OP_CMP_LT: u32 = 2;
-pub const FUTEX_OP_CMP_LE: u32 = 3;
-pub const FUTEX_OP_CMP_GT: u32 = 4;
-pub const FUTEX_OP_CMP_GE: u32 = 5;
-pub const __UAPI_DEF_IF_IFCONF: u32 = 1;
-pub const __UAPI_DEF_IF_IFMAP: u32 = 1;
-pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1;
-pub const __UAPI_DEF_IF_IFREQ: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1;
-pub const __UAPI_DEF_IN_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN_IPPROTO: u32 = 1;
-pub const __UAPI_DEF_IN_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP_MREQ: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1;
-pub const __UAPI_DEF_IN_CLASS: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1;
-pub const __UAPI_DEF_IPV6_MREQ: u32 = 1;
-pub const __UAPI_DEF_IPPROTO_V6: u32 = 1;
-pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1;
-pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1;
-pub const __UAPI_DEF_XATTR: u32 = 1;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const IP_TOS: u32 = 1;
-pub const IP_TTL: u32 = 2;
-pub const IP_HDRINCL: u32 = 3;
-pub const IP_OPTIONS: u32 = 4;
-pub const IP_ROUTER_ALERT: u32 = 5;
-pub const IP_RECVOPTS: u32 = 6;
-pub const IP_RETOPTS: u32 = 7;
-pub const IP_PKTINFO: u32 = 8;
-pub const IP_PKTOPTIONS: u32 = 9;
-pub const IP_MTU_DISCOVER: u32 = 10;
-pub const IP_RECVERR: u32 = 11;
-pub const IP_RECVTTL: u32 = 12;
-pub const IP_RECVTOS: u32 = 13;
-pub const IP_MTU: u32 = 14;
-pub const IP_FREEBIND: u32 = 15;
-pub const IP_IPSEC_POLICY: u32 = 16;
-pub const IP_XFRM_POLICY: u32 = 17;
-pub const IP_PASSSEC: u32 = 18;
-pub const IP_TRANSPARENT: u32 = 19;
-pub const IP_RECVRETOPTS: u32 = 7;
-pub const IP_ORIGDSTADDR: u32 = 20;
-pub const IP_RECVORIGDSTADDR: u32 = 20;
-pub const IP_MINTTL: u32 = 21;
-pub const IP_NODEFRAG: u32 = 22;
-pub const IP_CHECKSUM: u32 = 23;
-pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24;
-pub const IP_RECVFRAGSIZE: u32 = 25;
-pub const IP_RECVERR_RFC4884: u32 = 26;
-pub const IP_PMTUDISC_DONT: u32 = 0;
-pub const IP_PMTUDISC_WANT: u32 = 1;
-pub const IP_PMTUDISC_DO: u32 = 2;
-pub const IP_PMTUDISC_PROBE: u32 = 3;
-pub const IP_PMTUDISC_INTERFACE: u32 = 4;
-pub const IP_PMTUDISC_OMIT: u32 = 5;
-pub const IP_MULTICAST_IF: u32 = 32;
-pub const IP_MULTICAST_TTL: u32 = 33;
-pub const IP_MULTICAST_LOOP: u32 = 34;
-pub const IP_ADD_MEMBERSHIP: u32 = 35;
-pub const IP_DROP_MEMBERSHIP: u32 = 36;
-pub const IP_UNBLOCK_SOURCE: u32 = 37;
-pub const IP_BLOCK_SOURCE: u32 = 38;
-pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39;
-pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40;
-pub const IP_MSFILTER: u32 = 41;
-pub const MCAST_JOIN_GROUP: u32 = 42;
-pub const MCAST_BLOCK_SOURCE: u32 = 43;
-pub const MCAST_UNBLOCK_SOURCE: u32 = 44;
-pub const MCAST_LEAVE_GROUP: u32 = 45;
-pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46;
-pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47;
-pub const MCAST_MSFILTER: u32 = 48;
-pub const IP_MULTICAST_ALL: u32 = 49;
-pub const IP_UNICAST_IF: u32 = 50;
-pub const MCAST_EXCLUDE: u32 = 0;
-pub const MCAST_INCLUDE: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1;
-pub const __SOCK_SIZE__: u32 = 16;
-pub const IN_CLASSA_NET: u32 = 4278190080;
-pub const IN_CLASSA_NSHIFT: u32 = 24;
-pub const IN_CLASSA_HOST: u32 = 16777215;
-pub const IN_CLASSA_MAX: u32 = 128;
-pub const IN_CLASSB_NET: u32 = 4294901760;
-pub const IN_CLASSB_NSHIFT: u32 = 16;
-pub const IN_CLASSB_HOST: u32 = 65535;
-pub const IN_CLASSB_MAX: u32 = 65536;
-pub const IN_CLASSC_NET: u32 = 4294967040;
-pub const IN_CLASSC_NSHIFT: u32 = 8;
-pub const IN_CLASSC_HOST: u32 = 255;
-pub const IN_MULTICAST_NET: u32 = 3758096384;
-pub const IN_CLASSE_NET: u32 = 4294967295;
-pub const IN_CLASSE_NSHIFT: u32 = 0;
-pub const IN_LOOPBACKNET: u32 = 127;
-pub const INADDR_LOOPBACK: u32 = 2130706433;
-pub const INADDR_UNSPEC_GROUP: u32 = 3758096384;
-pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385;
-pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386;
-pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490;
-pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639;
-pub const __BIG_ENDIAN: u32 = 4321;
-pub const IN_ACCESS: u32 = 1;
-pub const IN_MODIFY: u32 = 2;
-pub const IN_ATTRIB: u32 = 4;
-pub const IN_CLOSE_WRITE: u32 = 8;
-pub const IN_CLOSE_NOWRITE: u32 = 16;
-pub const IN_OPEN: u32 = 32;
-pub const IN_MOVED_FROM: u32 = 64;
-pub const IN_MOVED_TO: u32 = 128;
-pub const IN_CREATE: u32 = 256;
-pub const IN_DELETE: u32 = 512;
-pub const IN_DELETE_SELF: u32 = 1024;
-pub const IN_MOVE_SELF: u32 = 2048;
-pub const IN_UNMOUNT: u32 = 8192;
-pub const IN_Q_OVERFLOW: u32 = 16384;
-pub const IN_IGNORED: u32 = 32768;
-pub const IN_CLOSE: u32 = 24;
-pub const IN_MOVE: u32 = 192;
-pub const IN_ONLYDIR: u32 = 16777216;
-pub const IN_DONT_FOLLOW: u32 = 33554432;
-pub const IN_EXCL_UNLINK: u32 = 67108864;
-pub const IN_MASK_CREATE: u32 = 268435456;
-pub const IN_MASK_ADD: u32 = 536870912;
-pub const IN_ISDIR: u32 = 1073741824;
-pub const IN_ONESHOT: u32 = 2147483648;
-pub const IN_ALL_EVENTS: u32 = 4095;
-pub const IN_CLOEXEC: u32 = 524288;
-pub const IN_NONBLOCK: u32 = 128;
-pub const IPTOS_TOS_MASK: u32 = 30;
-pub const IPTOS_LOWDELAY: u32 = 16;
-pub const IPTOS_THROUGHPUT: u32 = 8;
-pub const IPTOS_RELIABILITY: u32 = 4;
-pub const IPTOS_MINCOST: u32 = 2;
-pub const IPTOS_PREC_MASK: u32 = 224;
-pub const IPTOS_PREC_NETCONTROL: u32 = 224;
-pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192;
-pub const IPTOS_PREC_CRITIC_ECP: u32 = 160;
-pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128;
-pub const IPTOS_PREC_FLASH: u32 = 96;
-pub const IPTOS_PREC_IMMEDIATE: u32 = 64;
-pub const IPTOS_PREC_PRIORITY: u32 = 32;
-pub const IPTOS_PREC_ROUTINE: u32 = 0;
-pub const IPOPT_COPY: u32 = 128;
-pub const IPOPT_CLASS_MASK: u32 = 96;
-pub const IPOPT_NUMBER_MASK: u32 = 31;
-pub const IPOPT_CONTROL: u32 = 0;
-pub const IPOPT_RESERVED1: u32 = 32;
-pub const IPOPT_MEASUREMENT: u32 = 64;
-pub const IPOPT_RESERVED2: u32 = 96;
-pub const IPOPT_END: u32 = 0;
-pub const IPOPT_NOOP: u32 = 1;
-pub const IPOPT_SEC: u32 = 130;
-pub const IPOPT_LSRR: u32 = 131;
-pub const IPOPT_TIMESTAMP: u32 = 68;
-pub const IPOPT_CIPSO: u32 = 134;
-pub const IPOPT_RR: u32 = 7;
-pub const IPOPT_SID: u32 = 136;
-pub const IPOPT_SSRR: u32 = 137;
-pub const IPOPT_RA: u32 = 148;
-pub const IPVERSION: u32 = 4;
-pub const MAXTTL: u32 = 255;
-pub const IPDEFTTL: u32 = 64;
-pub const IPOPT_OPTVAL: u32 = 0;
-pub const IPOPT_OLEN: u32 = 1;
-pub const IPOPT_OFFSET: u32 = 2;
-pub const IPOPT_MINOFF: u32 = 4;
-pub const MAX_IPOPTLEN: u32 = 40;
-pub const IPOPT_NOP: u32 = 1;
-pub const IPOPT_EOL: u32 = 0;
-pub const IPOPT_TS: u32 = 68;
-pub const IPOPT_TS_TSONLY: u32 = 0;
-pub const IPOPT_TS_TSANDADDR: u32 = 1;
-pub const IPOPT_TS_PRESPEC: u32 = 3;
-pub const IPV4_BEET_PHMAXLEN: u32 = 8;
-pub const IPV6_FL_A_GET: u32 = 0;
-pub const IPV6_FL_A_PUT: u32 = 1;
-pub const IPV6_FL_A_RENEW: u32 = 2;
-pub const IPV6_FL_F_CREATE: u32 = 1;
-pub const IPV6_FL_F_EXCL: u32 = 2;
-pub const IPV6_FL_F_REFLECT: u32 = 4;
-pub const IPV6_FL_F_REMOTE: u32 = 8;
-pub const IPV6_FL_S_NONE: u32 = 0;
-pub const IPV6_FL_S_EXCL: u32 = 1;
-pub const IPV6_FL_S_PROCESS: u32 = 2;
-pub const IPV6_FL_S_USER: u32 = 3;
-pub const IPV6_FL_S_ANY: u32 = 255;
-pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575;
-pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880;
-pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0;
-pub const IPV6_PRIORITY_FILLER: u32 = 256;
-pub const IPV6_PRIORITY_UNATTENDED: u32 = 512;
-pub const IPV6_PRIORITY_RESERVED1: u32 = 768;
-pub const IPV6_PRIORITY_BULK: u32 = 1024;
-pub const IPV6_PRIORITY_RESERVED2: u32 = 1280;
-pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536;
-pub const IPV6_PRIORITY_CONTROL: u32 = 1792;
-pub const IPV6_PRIORITY_8: u32 = 2048;
-pub const IPV6_PRIORITY_9: u32 = 2304;
-pub const IPV6_PRIORITY_10: u32 = 2560;
-pub const IPV6_PRIORITY_11: u32 = 2816;
-pub const IPV6_PRIORITY_12: u32 = 3072;
-pub const IPV6_PRIORITY_13: u32 = 3328;
-pub const IPV6_PRIORITY_14: u32 = 3584;
-pub const IPV6_PRIORITY_15: u32 = 3840;
-pub const IPPROTO_HOPOPTS: u32 = 0;
-pub const IPPROTO_ROUTING: u32 = 43;
-pub const IPPROTO_FRAGMENT: u32 = 44;
-pub const IPPROTO_ICMPV6: u32 = 58;
-pub const IPPROTO_NONE: u32 = 59;
-pub const IPPROTO_DSTOPTS: u32 = 60;
-pub const IPPROTO_MH: u32 = 135;
-pub const IPV6_TLV_PAD1: u32 = 0;
-pub const IPV6_TLV_PADN: u32 = 1;
-pub const IPV6_TLV_ROUTERALERT: u32 = 5;
-pub const IPV6_TLV_CALIPSO: u32 = 7;
-pub const IPV6_TLV_IOAM: u32 = 49;
-pub const IPV6_TLV_JUMBO: u32 = 194;
-pub const IPV6_TLV_HAO: u32 = 201;
-pub const IPV6_ADDRFORM: u32 = 1;
-pub const IPV6_2292PKTINFO: u32 = 2;
-pub const IPV6_2292HOPOPTS: u32 = 3;
-pub const IPV6_2292DSTOPTS: u32 = 4;
-pub const IPV6_2292RTHDR: u32 = 5;
-pub const IPV6_2292PKTOPTIONS: u32 = 6;
-pub const IPV6_CHECKSUM: u32 = 7;
-pub const IPV6_2292HOPLIMIT: u32 = 8;
-pub const IPV6_NEXTHOP: u32 = 9;
-pub const IPV6_AUTHHDR: u32 = 10;
-pub const IPV6_FLOWINFO: u32 = 11;
-pub const IPV6_UNICAST_HOPS: u32 = 16;
-pub const IPV6_MULTICAST_IF: u32 = 17;
-pub const IPV6_MULTICAST_HOPS: u32 = 18;
-pub const IPV6_MULTICAST_LOOP: u32 = 19;
-pub const IPV6_ADD_MEMBERSHIP: u32 = 20;
-pub const IPV6_DROP_MEMBERSHIP: u32 = 21;
-pub const IPV6_ROUTER_ALERT: u32 = 22;
-pub const IPV6_MTU_DISCOVER: u32 = 23;
-pub const IPV6_MTU: u32 = 24;
-pub const IPV6_RECVERR: u32 = 25;
-pub const IPV6_V6ONLY: u32 = 26;
-pub const IPV6_JOIN_ANYCAST: u32 = 27;
-pub const IPV6_LEAVE_ANYCAST: u32 = 28;
-pub const IPV6_MULTICAST_ALL: u32 = 29;
-pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30;
-pub const IPV6_RECVERR_RFC4884: u32 = 31;
-pub const IPV6_PMTUDISC_DONT: u32 = 0;
-pub const IPV6_PMTUDISC_WANT: u32 = 1;
-pub const IPV6_PMTUDISC_DO: u32 = 2;
-pub const IPV6_PMTUDISC_PROBE: u32 = 3;
-pub const IPV6_PMTUDISC_INTERFACE: u32 = 4;
-pub const IPV6_PMTUDISC_OMIT: u32 = 5;
-pub const IPV6_FLOWLABEL_MGR: u32 = 32;
-pub const IPV6_FLOWINFO_SEND: u32 = 33;
-pub const IPV6_IPSEC_POLICY: u32 = 34;
-pub const IPV6_XFRM_POLICY: u32 = 35;
-pub const IPV6_HDRINCL: u32 = 36;
-pub const IPV6_RECVPKTINFO: u32 = 49;
-pub const IPV6_PKTINFO: u32 = 50;
-pub const IPV6_RECVHOPLIMIT: u32 = 51;
-pub const IPV6_HOPLIMIT: u32 = 52;
-pub const IPV6_RECVHOPOPTS: u32 = 53;
-pub const IPV6_HOPOPTS: u32 = 54;
-pub const IPV6_RTHDRDSTOPTS: u32 = 55;
-pub const IPV6_RECVRTHDR: u32 = 56;
-pub const IPV6_RTHDR: u32 = 57;
-pub const IPV6_RECVDSTOPTS: u32 = 58;
-pub const IPV6_DSTOPTS: u32 = 59;
-pub const IPV6_RECVPATHMTU: u32 = 60;
-pub const IPV6_PATHMTU: u32 = 61;
-pub const IPV6_DONTFRAG: u32 = 62;
-pub const IPV6_RECVTCLASS: u32 = 66;
-pub const IPV6_TCLASS: u32 = 67;
-pub const IPV6_AUTOFLOWLABEL: u32 = 70;
-pub const IPV6_ADDR_PREFERENCES: u32 = 72;
-pub const IPV6_PREFER_SRC_TMP: u32 = 1;
-pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2;
-pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256;
-pub const IPV6_PREFER_SRC_COA: u32 = 4;
-pub const IPV6_PREFER_SRC_HOME: u32 = 1024;
-pub const IPV6_PREFER_SRC_CGA: u32 = 8;
-pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048;
-pub const IPV6_MINHOPCOUNT: u32 = 73;
-pub const IPV6_ORIGDSTADDR: u32 = 74;
-pub const IPV6_RECVORIGDSTADDR: u32 = 74;
-pub const IPV6_TRANSPARENT: u32 = 75;
-pub const IPV6_UNICAST_IF: u32 = 76;
-pub const IPV6_RECVFRAGSIZE: u32 = 77;
-pub const IPV6_FREEBIND: u32 = 78;
-pub const IPV6_MIN_MTU: u32 = 1280;
-pub const IPV6_SRCRT_STRICT: u32 = 1;
-pub const IPV6_SRCRT_TYPE_0: u32 = 0;
-pub const IPV6_SRCRT_TYPE_2: u32 = 2;
-pub const IPV6_SRCRT_TYPE_3: u32 = 3;
-pub const IPV6_SRCRT_TYPE_4: u32 = 4;
-pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0;
-pub const ADFS_SUPER_MAGIC: u32 = 44533;
-pub const AFFS_SUPER_MAGIC: u32 = 44543;
-pub const AFS_SUPER_MAGIC: u32 = 1397113167;
-pub const AUTOFS_SUPER_MAGIC: u32 = 391;
-pub const CEPH_SUPER_MAGIC: u32 = 12805120;
-pub const CODA_SUPER_MAGIC: u32 = 1937076805;
-pub const CRAMFS_MAGIC: u32 = 684539205;
-pub const CRAMFS_MAGIC_WEND: u32 = 1161678120;
-pub const DEBUGFS_MAGIC: u32 = 1684170528;
-pub const SECURITYFS_MAGIC: u32 = 1935894131;
-pub const SELINUX_MAGIC: u32 = 4185718668;
-pub const SMACK_MAGIC: u32 = 1128357203;
-pub const RAMFS_MAGIC: u32 = 2240043254;
-pub const TMPFS_MAGIC: u32 = 16914836;
-pub const HUGETLBFS_MAGIC: u32 = 2508478710;
-pub const SQUASHFS_MAGIC: u32 = 1936814952;
-pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791;
-pub const EFS_SUPER_MAGIC: u32 = 4278867;
-pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530;
-pub const EXT2_SUPER_MAGIC: u32 = 61267;
-pub const EXT3_SUPER_MAGIC: u32 = 61267;
-pub const XENFS_SUPER_MAGIC: u32 = 2881100148;
-pub const EXT4_SUPER_MAGIC: u32 = 61267;
-pub const BTRFS_SUPER_MAGIC: u32 = 2435016766;
-pub const NILFS_SUPER_MAGIC: u32 = 13364;
-pub const F2FS_SUPER_MAGIC: u32 = 4076150800;
-pub const HPFS_SUPER_MAGIC: u32 = 4187351113;
-pub const ISOFS_SUPER_MAGIC: u32 = 38496;
-pub const JFFS2_SUPER_MAGIC: u32 = 29366;
-pub const XFS_SUPER_MAGIC: u32 = 1481003842;
-pub const PSTOREFS_MAGIC: u32 = 1634035564;
-pub const EFIVARFS_MAGIC: u32 = 3730735588;
-pub const HOSTFS_SUPER_MAGIC: u32 = 12648430;
-pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128;
-pub const FUSE_SUPER_MAGIC: u32 = 1702057286;
-pub const MINIX_SUPER_MAGIC: u32 = 4991;
-pub const MINIX_SUPER_MAGIC2: u32 = 5007;
-pub const MINIX2_SUPER_MAGIC: u32 = 9320;
-pub const MINIX2_SUPER_MAGIC2: u32 = 9336;
-pub const MINIX3_SUPER_MAGIC: u32 = 19802;
-pub const MSDOS_SUPER_MAGIC: u32 = 19780;
-pub const EXFAT_SUPER_MAGIC: u32 = 538032816;
-pub const NCP_SUPER_MAGIC: u32 = 22092;
-pub const NFS_SUPER_MAGIC: u32 = 26985;
-pub const OCFS2_SUPER_MAGIC: u32 = 1952539503;
-pub const OPENPROM_SUPER_MAGIC: u32 = 40865;
-pub const QNX4_SUPER_MAGIC: u32 = 47;
-pub const QNX6_SUPER_MAGIC: u32 = 1746473250;
-pub const AFS_FS_MAGIC: u32 = 1799439955;
-pub const REISERFS_SUPER_MAGIC: u32 = 1382369651;
-pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0";
-pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0";
-pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0";
-pub const SMB_SUPER_MAGIC: u32 = 20859;
-pub const CIFS_SUPER_MAGIC: u32 = 4283649346;
-pub const SMB2_SUPER_MAGIC: u32 = 4266872130;
-pub const CGROUP_SUPER_MAGIC: u32 = 2613483;
-pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888;
-pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209;
-pub const STACK_END_MAGIC: u32 = 1470918301;
-pub const TRACEFS_MAGIC: u32 = 1953653091;
-pub const V9FS_MAGIC: u32 = 16914839;
-pub const BDEVFS_MAGIC: u32 = 1650746742;
-pub const DAXFS_MAGIC: u32 = 1684300152;
-pub const BINFMTFS_MAGIC: u32 = 1112100429;
-pub const DEVPTS_SUPER_MAGIC: u32 = 7377;
-pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352;
-pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762;
-pub const PIPEFS_MAGIC: u32 = 1346981957;
-pub const PROC_SUPER_MAGIC: u32 = 40864;
-pub const SOCKFS_MAGIC: u32 = 1397703499;
-pub const SYSFS_MAGIC: u32 = 1650812274;
-pub const USBDEVICE_SUPER_MAGIC: u32 = 40866;
-pub const MTD_INODE_FS_MAGIC: u32 = 288389204;
-pub const ANON_INODE_FS_MAGIC: u32 = 151263540;
-pub const BTRFS_TEST_MAGIC: u32 = 1936880249;
-pub const NSFS_MAGIC: u32 = 1853056627;
-pub const BPF_FS_MAGIC: u32 = 3405662737;
-pub const AAFS_MAGIC: u32 = 1513908720;
-pub const ZONEFS_MAGIC: u32 = 1515144787;
-pub const UDF_SUPER_MAGIC: u32 = 352400198;
-pub const DMA_BUF_MAGIC: u32 = 1145913666;
-pub const DEVMEM_MAGIC: u32 = 1162691661;
-pub const SECRETMEM_MAGIC: u32 = 1397048141;
-pub const PROT_NONE: u32 = 0;
-pub const PROT_READ: u32 = 1;
-pub const PROT_WRITE: u32 = 2;
-pub const PROT_EXEC: u32 = 4;
-pub const PROT_SEM: u32 = 16;
-pub const PROT_GROWSDOWN: u32 = 16777216;
-pub const PROT_GROWSUP: u32 = 33554432;
-pub const MAP_TYPE: u32 = 15;
-pub const MAP_FIXED: u32 = 16;
-pub const MAP_RENAME: u32 = 32;
-pub const MAP_AUTOGROW: u32 = 64;
-pub const MAP_LOCAL: u32 = 128;
-pub const MAP_AUTORSRV: u32 = 256;
-pub const MAP_NORESERVE: u32 = 1024;
-pub const MAP_ANONYMOUS: u32 = 2048;
-pub const MAP_GROWSDOWN: u32 = 4096;
-pub const MAP_DENYWRITE: u32 = 8192;
-pub const MAP_EXECUTABLE: u32 = 16384;
-pub const MAP_LOCKED: u32 = 32768;
-pub const MAP_POPULATE: u32 = 65536;
-pub const MAP_NONBLOCK: u32 = 131072;
-pub const MAP_STACK: u32 = 262144;
-pub const MAP_HUGETLB: u32 = 524288;
-pub const MAP_FIXED_NOREPLACE: u32 = 1048576;
-pub const MS_ASYNC: u32 = 1;
-pub const MS_INVALIDATE: u32 = 2;
-pub const MS_SYNC: u32 = 4;
-pub const MCL_CURRENT: u32 = 1;
-pub const MCL_FUTURE: u32 = 2;
-pub const MCL_ONFAULT: u32 = 4;
-pub const MLOCK_ONFAULT: u32 = 1;
-pub const MADV_NORMAL: u32 = 0;
-pub const MADV_RANDOM: u32 = 1;
-pub const MADV_SEQUENTIAL: u32 = 2;
-pub const MADV_WILLNEED: u32 = 3;
-pub const MADV_DONTNEED: u32 = 4;
-pub const MADV_FREE: u32 = 8;
-pub const MADV_REMOVE: u32 = 9;
-pub const MADV_DONTFORK: u32 = 10;
-pub const MADV_DOFORK: u32 = 11;
-pub const MADV_MERGEABLE: u32 = 12;
-pub const MADV_UNMERGEABLE: u32 = 13;
-pub const MADV_HWPOISON: u32 = 100;
-pub const MADV_HUGEPAGE: u32 = 14;
-pub const MADV_NOHUGEPAGE: u32 = 15;
-pub const MADV_DONTDUMP: u32 = 16;
-pub const MADV_DODUMP: u32 = 17;
-pub const MADV_WIPEONFORK: u32 = 18;
-pub const MADV_KEEPONFORK: u32 = 19;
-pub const MADV_COLD: u32 = 20;
-pub const MADV_PAGEOUT: u32 = 21;
-pub const MADV_POPULATE_READ: u32 = 22;
-pub const MADV_POPULATE_WRITE: u32 = 23;
-pub const MADV_DONTNEED_LOCKED: u32 = 24;
-pub const MADV_COLLAPSE: u32 = 25;
-pub const MAP_FILE: u32 = 0;
-pub const PKEY_DISABLE_ACCESS: u32 = 1;
-pub const PKEY_DISABLE_WRITE: u32 = 2;
-pub const PKEY_ACCESS_MASK: u32 = 3;
-pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26;
-pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63;
-pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096;
-pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824;
-pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416;
-pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280;
-pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144;
-pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872;
-pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736;
-pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600;
-pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192;
-pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056;
-pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920;
-pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784;
-pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376;
-pub const MREMAP_MAYMOVE: u32 = 1;
-pub const MREMAP_FIXED: u32 = 2;
-pub const MREMAP_DONTUNMAP: u32 = 4;
-pub const OVERCOMMIT_GUESS: u32 = 0;
-pub const OVERCOMMIT_ALWAYS: u32 = 1;
-pub const OVERCOMMIT_NEVER: u32 = 2;
-pub const MAP_SHARED: u32 = 1;
-pub const MAP_PRIVATE: u32 = 2;
-pub const MAP_SHARED_VALIDATE: u32 = 3;
-pub const MAP_HUGE_SHIFT: u32 = 26;
-pub const MAP_HUGE_MASK: u32 = 63;
-pub const MAP_HUGE_16KB: u32 = 939524096;
-pub const MAP_HUGE_64KB: u32 = 1073741824;
-pub const MAP_HUGE_512KB: u32 = 1275068416;
-pub const MAP_HUGE_1MB: u32 = 1342177280;
-pub const MAP_HUGE_2MB: u32 = 1409286144;
-pub const MAP_HUGE_8MB: u32 = 1543503872;
-pub const MAP_HUGE_16MB: u32 = 1610612736;
-pub const MAP_HUGE_32MB: u32 = 1677721600;
-pub const MAP_HUGE_256MB: u32 = 1879048192;
-pub const MAP_HUGE_512MB: u32 = 1946157056;
-pub const MAP_HUGE_1GB: u32 = 2013265920;
-pub const MAP_HUGE_2GB: u32 = 2080374784;
-pub const MAP_HUGE_16GB: u32 = 2281701376;
-pub const SIOCGSTAMP_OLD: u32 = 35078;
-pub const SIOCGSTAMPNS_OLD: u32 = 35079;
-pub const SOL_SOCKET: u32 = 65535;
-pub const SO_DEBUG: u32 = 1;
-pub const SO_REUSEADDR: u32 = 4;
-pub const SO_KEEPALIVE: u32 = 8;
-pub const SO_DONTROUTE: u32 = 16;
-pub const SO_BROADCAST: u32 = 32;
-pub const SO_LINGER: u32 = 128;
-pub const SO_OOBINLINE: u32 = 256;
-pub const SO_REUSEPORT: u32 = 512;
-pub const SO_TYPE: u32 = 4104;
-pub const SO_STYLE: u32 = 4104;
-pub const SO_ERROR: u32 = 4103;
-pub const SO_SNDBUF: u32 = 4097;
-pub const SO_RCVBUF: u32 = 4098;
-pub const SO_SNDLOWAT: u32 = 4099;
-pub const SO_RCVLOWAT: u32 = 4100;
-pub const SO_SNDTIMEO_OLD: u32 = 4101;
-pub const SO_RCVTIMEO_OLD: u32 = 4102;
-pub const SO_ACCEPTCONN: u32 = 4105;
-pub const SO_PROTOCOL: u32 = 4136;
-pub const SO_DOMAIN: u32 = 4137;
-pub const SO_NO_CHECK: u32 = 11;
-pub const SO_PRIORITY: u32 = 12;
-pub const SO_BSDCOMPAT: u32 = 14;
-pub const SO_PASSCRED: u32 = 17;
-pub const SO_PEERCRED: u32 = 18;
-pub const SO_SECURITY_AUTHENTICATION: u32 = 22;
-pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23;
-pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24;
-pub const SO_BINDTODEVICE: u32 = 25;
-pub const SO_ATTACH_FILTER: u32 = 26;
-pub const SO_DETACH_FILTER: u32 = 27;
-pub const SO_GET_FILTER: u32 = 26;
-pub const SO_PEERNAME: u32 = 28;
-pub const SO_PEERSEC: u32 = 30;
-pub const SO_SNDBUFFORCE: u32 = 31;
-pub const SO_RCVBUFFORCE: u32 = 33;
-pub const SO_PASSSEC: u32 = 34;
-pub const SO_MARK: u32 = 36;
-pub const SO_RXQ_OVFL: u32 = 40;
-pub const SO_WIFI_STATUS: u32 = 41;
-pub const SCM_WIFI_STATUS: u32 = 41;
-pub const SO_PEEK_OFF: u32 = 42;
-pub const SO_NOFCS: u32 = 43;
-pub const SO_LOCK_FILTER: u32 = 44;
-pub const SO_SELECT_ERR_QUEUE: u32 = 45;
-pub const SO_BUSY_POLL: u32 = 46;
-pub const SO_MAX_PACING_RATE: u32 = 47;
-pub const SO_BPF_EXTENSIONS: u32 = 48;
-pub const SO_INCOMING_CPU: u32 = 49;
-pub const SO_ATTACH_BPF: u32 = 50;
-pub const SO_DETACH_BPF: u32 = 27;
-pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51;
-pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52;
-pub const SO_CNX_ADVICE: u32 = 53;
-pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54;
-pub const SO_MEMINFO: u32 = 55;
-pub const SO_INCOMING_NAPI_ID: u32 = 56;
-pub const SO_COOKIE: u32 = 57;
-pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58;
-pub const SO_PEERGROUPS: u32 = 59;
-pub const SO_ZEROCOPY: u32 = 60;
-pub const SO_TXTIME: u32 = 61;
-pub const SCM_TXTIME: u32 = 61;
-pub const SO_BINDTOIFINDEX: u32 = 62;
-pub const SO_TIMESTAMP_OLD: u32 = 29;
-pub const SO_TIMESTAMPNS_OLD: u32 = 35;
-pub const SO_TIMESTAMPING_OLD: u32 = 37;
-pub const SO_TIMESTAMP_NEW: u32 = 63;
-pub const SO_TIMESTAMPNS_NEW: u32 = 64;
-pub const SO_TIMESTAMPING_NEW: u32 = 65;
-pub const SO_RCVTIMEO_NEW: u32 = 66;
-pub const SO_SNDTIMEO_NEW: u32 = 67;
-pub const SO_DETACH_REUSEPORT_BPF: u32 = 68;
-pub const SO_PREFER_BUSY_POLL: u32 = 69;
-pub const SO_BUSY_POLL_BUDGET: u32 = 70;
-pub const SO_NETNS_COOKIE: u32 = 71;
-pub const SO_BUF_LOCK: u32 = 72;
-pub const SO_RESERVE_MEM: u32 = 73;
-pub const SO_TXREHASH: u32 = 74;
-pub const SO_RCVMARK: u32 = 75;
-pub const SYS_SOCKET: u32 = 1;
-pub const SYS_BIND: u32 = 2;
-pub const SYS_CONNECT: u32 = 3;
-pub const SYS_LISTEN: u32 = 4;
-pub const SYS_ACCEPT: u32 = 5;
-pub const SYS_GETSOCKNAME: u32 = 6;
-pub const SYS_GETPEERNAME: u32 = 7;
-pub const SYS_SOCKETPAIR: u32 = 8;
-pub const SYS_SEND: u32 = 9;
-pub const SYS_RECV: u32 = 10;
-pub const SYS_SENDTO: u32 = 11;
-pub const SYS_RECVFROM: u32 = 12;
-pub const SYS_SHUTDOWN: u32 = 13;
-pub const SYS_SETSOCKOPT: u32 = 14;
-pub const SYS_GETSOCKOPT: u32 = 15;
-pub const SYS_SENDMSG: u32 = 16;
-pub const SYS_RECVMSG: u32 = 17;
-pub const SYS_ACCEPT4: u32 = 18;
-pub const SYS_RECVMMSG: u32 = 19;
-pub const SYS_SENDMMSG: u32 = 20;
-pub const __SO_ACCEPTCON: u32 = 65536;
-pub const POLLWRBAND: u32 = 256;
-pub const POLLIN: u32 = 1;
-pub const POLLPRI: u32 = 2;
-pub const POLLOUT: u32 = 4;
-pub const POLLERR: u32 = 8;
-pub const POLLHUP: u32 = 16;
-pub const POLLNVAL: u32 = 32;
-pub const POLLRDNORM: u32 = 64;
-pub const POLLRDBAND: u32 = 128;
-pub const POLLMSG: u32 = 1024;
-pub const POLLREMOVE: u32 = 4096;
-pub const POLLRDHUP: u32 = 8192;
-pub const PR_SET_PDEATHSIG: u32 = 1;
-pub const PR_GET_PDEATHSIG: u32 = 2;
-pub const PR_GET_DUMPABLE: u32 = 3;
-pub const PR_SET_DUMPABLE: u32 = 4;
-pub const PR_GET_UNALIGN: u32 = 5;
-pub const PR_SET_UNALIGN: u32 = 6;
-pub const PR_UNALIGN_NOPRINT: u32 = 1;
-pub const PR_UNALIGN_SIGBUS: u32 = 2;
-pub const PR_GET_KEEPCAPS: u32 = 7;
-pub const PR_SET_KEEPCAPS: u32 = 8;
-pub const PR_GET_FPEMU: u32 = 9;
-pub const PR_SET_FPEMU: u32 = 10;
-pub const PR_FPEMU_NOPRINT: u32 = 1;
-pub const PR_FPEMU_SIGFPE: u32 = 2;
-pub const PR_GET_FPEXC: u32 = 11;
-pub const PR_SET_FPEXC: u32 = 12;
-pub const PR_FP_EXC_SW_ENABLE: u32 = 128;
-pub const PR_FP_EXC_DIV: u32 = 65536;
-pub const PR_FP_EXC_OVF: u32 = 131072;
-pub const PR_FP_EXC_UND: u32 = 262144;
-pub const PR_FP_EXC_RES: u32 = 524288;
-pub const PR_FP_EXC_INV: u32 = 1048576;
-pub const PR_FP_EXC_DISABLED: u32 = 0;
-pub const PR_FP_EXC_NONRECOV: u32 = 1;
-pub const PR_FP_EXC_ASYNC: u32 = 2;
-pub const PR_FP_EXC_PRECISE: u32 = 3;
-pub const PR_GET_TIMING: u32 = 13;
-pub const PR_SET_TIMING: u32 = 14;
-pub const PR_TIMING_STATISTICAL: u32 = 0;
-pub const PR_TIMING_TIMESTAMP: u32 = 1;
-pub const PR_SET_NAME: u32 = 15;
-pub const PR_GET_NAME: u32 = 16;
-pub const PR_GET_ENDIAN: u32 = 19;
-pub const PR_SET_ENDIAN: u32 = 20;
-pub const PR_ENDIAN_BIG: u32 = 0;
-pub const PR_ENDIAN_LITTLE: u32 = 1;
-pub const PR_ENDIAN_PPC_LITTLE: u32 = 2;
-pub const PR_GET_SECCOMP: u32 = 21;
-pub const PR_SET_SECCOMP: u32 = 22;
-pub const PR_CAPBSET_READ: u32 = 23;
-pub const PR_CAPBSET_DROP: u32 = 24;
-pub const PR_GET_TSC: u32 = 25;
-pub const PR_SET_TSC: u32 = 26;
-pub const PR_TSC_ENABLE: u32 = 1;
-pub const PR_TSC_SIGSEGV: u32 = 2;
-pub const PR_GET_SECUREBITS: u32 = 27;
-pub const PR_SET_SECUREBITS: u32 = 28;
-pub const PR_SET_TIMERSLACK: u32 = 29;
-pub const PR_GET_TIMERSLACK: u32 = 30;
-pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31;
-pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32;
-pub const PR_MCE_KILL: u32 = 33;
-pub const PR_MCE_KILL_CLEAR: u32 = 0;
-pub const PR_MCE_KILL_SET: u32 = 1;
-pub const PR_MCE_KILL_LATE: u32 = 0;
-pub const PR_MCE_KILL_EARLY: u32 = 1;
-pub const PR_MCE_KILL_DEFAULT: u32 = 2;
-pub const PR_MCE_KILL_GET: u32 = 34;
-pub const PR_SET_MM: u32 = 35;
-pub const PR_SET_MM_START_CODE: u32 = 1;
-pub const PR_SET_MM_END_CODE: u32 = 2;
-pub const PR_SET_MM_START_DATA: u32 = 3;
-pub const PR_SET_MM_END_DATA: u32 = 4;
-pub const PR_SET_MM_START_STACK: u32 = 5;
-pub const PR_SET_MM_START_BRK: u32 = 6;
-pub const PR_SET_MM_BRK: u32 = 7;
-pub const PR_SET_MM_ARG_START: u32 = 8;
-pub const PR_SET_MM_ARG_END: u32 = 9;
-pub const PR_SET_MM_ENV_START: u32 = 10;
-pub const PR_SET_MM_ENV_END: u32 = 11;
-pub const PR_SET_MM_AUXV: u32 = 12;
-pub const PR_SET_MM_EXE_FILE: u32 = 13;
-pub const PR_SET_MM_MAP: u32 = 14;
-pub const PR_SET_MM_MAP_SIZE: u32 = 15;
-pub const PR_SET_PTRACER: u32 = 1499557217;
-pub const PR_SET_CHILD_SUBREAPER: u32 = 36;
-pub const PR_GET_CHILD_SUBREAPER: u32 = 37;
-pub const PR_SET_NO_NEW_PRIVS: u32 = 38;
-pub const PR_GET_NO_NEW_PRIVS: u32 = 39;
-pub const PR_GET_TID_ADDRESS: u32 = 40;
-pub const PR_SET_THP_DISABLE: u32 = 41;
-pub const PR_GET_THP_DISABLE: u32 = 42;
-pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43;
-pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44;
-pub const PR_SET_FP_MODE: u32 = 45;
-pub const PR_GET_FP_MODE: u32 = 46;
-pub const PR_FP_MODE_FR: u32 = 1;
-pub const PR_FP_MODE_FRE: u32 = 2;
-pub const PR_CAP_AMBIENT: u32 = 47;
-pub const PR_CAP_AMBIENT_IS_SET: u32 = 1;
-pub const PR_CAP_AMBIENT_RAISE: u32 = 2;
-pub const PR_CAP_AMBIENT_LOWER: u32 = 3;
-pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4;
-pub const PR_SVE_SET_VL: u32 = 50;
-pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SVE_GET_VL: u32 = 51;
-pub const PR_SVE_VL_LEN_MASK: u32 = 65535;
-pub const PR_SVE_VL_INHERIT: u32 = 131072;
-pub const PR_GET_SPECULATION_CTRL: u32 = 52;
-pub const PR_SET_SPECULATION_CTRL: u32 = 53;
-pub const PR_SPEC_STORE_BYPASS: u32 = 0;
-pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1;
-pub const PR_SPEC_L1D_FLUSH: u32 = 2;
-pub const PR_SPEC_NOT_AFFECTED: u32 = 0;
-pub const PR_SPEC_PRCTL: u32 = 1;
-pub const PR_SPEC_ENABLE: u32 = 2;
-pub const PR_SPEC_DISABLE: u32 = 4;
-pub const PR_SPEC_FORCE_DISABLE: u32 = 8;
-pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16;
-pub const PR_PAC_RESET_KEYS: u32 = 54;
-pub const PR_PAC_APIAKEY: u32 = 1;
-pub const PR_PAC_APIBKEY: u32 = 2;
-pub const PR_PAC_APDAKEY: u32 = 4;
-pub const PR_PAC_APDBKEY: u32 = 8;
-pub const PR_PAC_APGAKEY: u32 = 16;
-pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55;
-pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56;
-pub const PR_TAGGED_ADDR_ENABLE: u32 = 1;
-pub const PR_MTE_TCF_NONE: u32 = 0;
-pub const PR_MTE_TCF_SYNC: u32 = 2;
-pub const PR_MTE_TCF_ASYNC: u32 = 4;
-pub const PR_MTE_TCF_MASK: u32 = 6;
-pub const PR_MTE_TAG_SHIFT: u32 = 3;
-pub const PR_MTE_TAG_MASK: u32 = 524280;
-pub const PR_MTE_TCF_SHIFT: u32 = 1;
-pub const PR_SET_IO_FLUSHER: u32 = 57;
-pub const PR_GET_IO_FLUSHER: u32 = 58;
-pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59;
-pub const PR_SYS_DISPATCH_OFF: u32 = 0;
-pub const PR_SYS_DISPATCH_ON: u32 = 1;
-pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0;
-pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1;
-pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60;
-pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61;
-pub const PR_SCHED_CORE: u32 = 62;
-pub const PR_SCHED_CORE_GET: u32 = 0;
-pub const PR_SCHED_CORE_CREATE: u32 = 1;
-pub const PR_SCHED_CORE_SHARE_TO: u32 = 2;
-pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3;
-pub const PR_SCHED_CORE_MAX: u32 = 4;
-pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0;
-pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1;
-pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2;
-pub const PR_SME_SET_VL: u32 = 63;
-pub const PR_SME_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SME_GET_VL: u32 = 64;
-pub const PR_SME_VL_LEN_MASK: u32 = 65535;
-pub const PR_SME_VL_INHERIT: u32 = 131072;
-pub const PR_SET_VMA: u32 = 1398164801;
-pub const PR_SET_VMA_ANON_NAME: u32 = 0;
-pub const GRND_NONBLOCK: u32 = 1;
-pub const GRND_RANDOM: u32 = 2;
-pub const GRND_INSECURE: u32 = 4;
-pub const ITIMER_REAL: u32 = 0;
-pub const ITIMER_VIRTUAL: u32 = 1;
-pub const ITIMER_PROF: u32 = 2;
-pub const CLOCK_REALTIME: u32 = 0;
-pub const CLOCK_MONOTONIC: u32 = 1;
-pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2;
-pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3;
-pub const CLOCK_MONOTONIC_RAW: u32 = 4;
-pub const CLOCK_REALTIME_COARSE: u32 = 5;
-pub const CLOCK_MONOTONIC_COARSE: u32 = 6;
-pub const CLOCK_BOOTTIME: u32 = 7;
-pub const CLOCK_REALTIME_ALARM: u32 = 8;
-pub const CLOCK_BOOTTIME_ALARM: u32 = 9;
-pub const CLOCK_SGI_CYCLE: u32 = 10;
-pub const CLOCK_TAI: u32 = 11;
-pub const MAX_CLOCKS: u32 = 16;
-pub const CLOCKS_MASK: u32 = 1;
-pub const CLOCKS_MONO: u32 = 1;
-pub const TIMER_ABSTIME: u32 = 1;
-pub const RUSAGE_SELF: u32 = 0;
-pub const RUSAGE_CHILDREN: i32 = -1;
-pub const RUSAGE_BOTH: i32 = -2;
-pub const RUSAGE_THREAD: u32 = 1;
-pub const RLIM64_INFINITY: i32 = -1;
-pub const PRIO_MIN: i32 = -20;
-pub const PRIO_MAX: u32 = 20;
-pub const PRIO_PROCESS: u32 = 0;
-pub const PRIO_PGRP: u32 = 1;
-pub const PRIO_USER: u32 = 2;
-pub const _STK_LIM: u32 = 8388608;
-pub const MLOCK_LIMIT: u32 = 8388608;
-pub const RLIMIT_NOFILE: u32 = 5;
-pub const RLIMIT_AS: u32 = 6;
-pub const RLIMIT_RSS: u32 = 7;
-pub const RLIMIT_NPROC: u32 = 8;
-pub const RLIMIT_MEMLOCK: u32 = 9;
-pub const RLIM_INFINITY: u32 = 2147483647;
-pub const RLIMIT_CPU: u32 = 0;
-pub const RLIMIT_FSIZE: u32 = 1;
-pub const RLIMIT_DATA: u32 = 2;
-pub const RLIMIT_STACK: u32 = 3;
-pub const RLIMIT_CORE: u32 = 4;
-pub const RLIMIT_LOCKS: u32 = 10;
-pub const RLIMIT_SIGPENDING: u32 = 11;
-pub const RLIMIT_MSGQUEUE: u32 = 12;
-pub const RLIMIT_NICE: u32 = 13;
-pub const RLIMIT_RTPRIO: u32 = 14;
-pub const RLIMIT_RTTIME: u32 = 15;
-pub const RLIM_NLIMITS: u32 = 16;
-pub const CSIGNAL: u32 = 255;
-pub const CLONE_VM: u32 = 256;
-pub const CLONE_FS: u32 = 512;
-pub const CLONE_FILES: u32 = 1024;
-pub const CLONE_SIGHAND: u32 = 2048;
-pub const CLONE_PIDFD: u32 = 4096;
-pub const CLONE_PTRACE: u32 = 8192;
-pub const CLONE_VFORK: u32 = 16384;
-pub const CLONE_PARENT: u32 = 32768;
-pub const CLONE_THREAD: u32 = 65536;
-pub const CLONE_NEWNS: u32 = 131072;
-pub const CLONE_SYSVSEM: u32 = 262144;
-pub const CLONE_SETTLS: u32 = 524288;
-pub const CLONE_PARENT_SETTID: u32 = 1048576;
-pub const CLONE_CHILD_CLEARTID: u32 = 2097152;
-pub const CLONE_DETACHED: u32 = 4194304;
-pub const CLONE_UNTRACED: u32 = 8388608;
-pub const CLONE_CHILD_SETTID: u32 = 16777216;
-pub const CLONE_NEWCGROUP: u32 = 33554432;
-pub const CLONE_NEWUTS: u32 = 67108864;
-pub const CLONE_NEWIPC: u32 = 134217728;
-pub const CLONE_NEWUSER: u32 = 268435456;
-pub const CLONE_NEWPID: u32 = 536870912;
-pub const CLONE_NEWNET: u32 = 1073741824;
-pub const CLONE_IO: u32 = 2147483648;
-pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296;
-pub const CLONE_INTO_CGROUP: u64 = 8589934592;
-pub const CLONE_NEWTIME: u32 = 128;
-pub const CLONE_ARGS_SIZE_VER0: u32 = 64;
-pub const CLONE_ARGS_SIZE_VER1: u32 = 80;
-pub const CLONE_ARGS_SIZE_VER2: u32 = 88;
-pub const SCHED_NORMAL: u32 = 0;
-pub const SCHED_FIFO: u32 = 1;
-pub const SCHED_RR: u32 = 2;
-pub const SCHED_BATCH: u32 = 3;
-pub const SCHED_IDLE: u32 = 5;
-pub const SCHED_DEADLINE: u32 = 6;
-pub const SCHED_RESET_ON_FORK: u32 = 1073741824;
-pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1;
-pub const SCHED_FLAG_RECLAIM: u32 = 2;
-pub const SCHED_FLAG_DL_OVERRUN: u32 = 4;
-pub const SCHED_FLAG_KEEP_POLICY: u32 = 8;
-pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16;
-pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32;
-pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64;
-pub const SCHED_FLAG_KEEP_ALL: u32 = 24;
-pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96;
-pub const SCHED_FLAG_ALL: u32 = 127;
-pub const _NSIG: u32 = 128;
-pub const SIGHUP: u32 = 1;
-pub const SIGINT: u32 = 2;
-pub const SIGQUIT: u32 = 3;
-pub const SIGILL: u32 = 4;
-pub const SIGTRAP: u32 = 5;
-pub const SIGIOT: u32 = 6;
-pub const SIGABRT: u32 = 6;
-pub const SIGEMT: u32 = 7;
-pub const SIGFPE: u32 = 8;
-pub const SIGKILL: u32 = 9;
-pub const SIGBUS: u32 = 10;
-pub const SIGSEGV: u32 = 11;
-pub const SIGSYS: u32 = 12;
-pub const SIGPIPE: u32 = 13;
-pub const SIGALRM: u32 = 14;
-pub const SIGTERM: u32 = 15;
-pub const SIGUSR1: u32 = 16;
-pub const SIGUSR2: u32 = 17;
-pub const SIGCHLD: u32 = 18;
-pub const SIGCLD: u32 = 18;
-pub const SIGPWR: u32 = 19;
-pub const SIGWINCH: u32 = 20;
-pub const SIGURG: u32 = 21;
-pub const SIGIO: u32 = 22;
-pub const SIGPOLL: u32 = 22;
-pub const SIGSTOP: u32 = 23;
-pub const SIGTSTP: u32 = 24;
-pub const SIGCONT: u32 = 25;
-pub const SIGTTIN: u32 = 26;
-pub const SIGTTOU: u32 = 27;
-pub const SIGVTALRM: u32 = 28;
-pub const SIGPROF: u32 = 29;
-pub const SIGXCPU: u32 = 30;
-pub const SIGXFSZ: u32 = 31;
-pub const SIGRTMIN: u32 = 32;
-pub const SIGRTMAX: u32 = 128;
-pub const SA_ONSTACK: u32 = 134217728;
-pub const SA_RESETHAND: u32 = 2147483648;
-pub const SA_RESTART: u32 = 268435456;
-pub const SA_SIGINFO: u32 = 8;
-pub const SA_NODEFER: u32 = 1073741824;
-pub const SA_NOCLDWAIT: u32 = 65536;
-pub const SA_NOCLDSTOP: u32 = 1;
-pub const SA_NOMASK: u32 = 1073741824;
-pub const SA_ONESHOT: u32 = 2147483648;
-pub const MINSIGSTKSZ: u32 = 2048;
-pub const SIGSTKSZ: u32 = 8192;
-pub const SIG_BLOCK: u32 = 1;
-pub const SIG_UNBLOCK: u32 = 2;
-pub const SIG_SETMASK: u32 = 3;
-pub const SA_UNSUPPORTED: u32 = 1024;
-pub const SA_EXPOSE_TAGBITS: u32 = 2048;
-pub const SI_MAX_SIZE: u32 = 128;
-pub const SI_USER: u32 = 0;
-pub const SI_KERNEL: u32 = 128;
-pub const SI_QUEUE: i32 = -1;
-pub const SI_TIMER: i32 = -2;
-pub const SI_MESGQ: i32 = -3;
-pub const SI_ASYNCIO: i32 = -4;
-pub const SI_SIGIO: i32 = -5;
-pub const SI_TKILL: i32 = -6;
-pub const SI_DETHREAD: i32 = -7;
-pub const SI_ASYNCNL: i32 = -60;
-pub const ILL_ILLOPC: u32 = 1;
-pub const ILL_ILLOPN: u32 = 2;
-pub const ILL_ILLADR: u32 = 3;
-pub const ILL_ILLTRP: u32 = 4;
-pub const ILL_PRVOPC: u32 = 5;
-pub const ILL_PRVREG: u32 = 6;
-pub const ILL_COPROC: u32 = 7;
-pub const ILL_BADSTK: u32 = 8;
-pub const ILL_BADIADDR: u32 = 9;
-pub const __ILL_BREAK: u32 = 10;
-pub const __ILL_BNDMOD: u32 = 11;
-pub const NSIGILL: u32 = 11;
-pub const FPE_INTDIV: u32 = 1;
-pub const FPE_INTOVF: u32 = 2;
-pub const FPE_FLTDIV: u32 = 3;
-pub const FPE_FLTOVF: u32 = 4;
-pub const FPE_FLTUND: u32 = 5;
-pub const FPE_FLTRES: u32 = 6;
-pub const FPE_FLTINV: u32 = 7;
-pub const FPE_FLTSUB: u32 = 8;
-pub const __FPE_DECOVF: u32 = 9;
-pub const __FPE_DECDIV: u32 = 10;
-pub const __FPE_DECERR: u32 = 11;
-pub const __FPE_INVASC: u32 = 12;
-pub const __FPE_INVDEC: u32 = 13;
-pub const FPE_FLTUNK: u32 = 14;
-pub const FPE_CONDTRAP: u32 = 15;
-pub const NSIGFPE: u32 = 15;
-pub const SEGV_MAPERR: u32 = 1;
-pub const SEGV_ACCERR: u32 = 2;
-pub const SEGV_BNDERR: u32 = 3;
-pub const SEGV_PKUERR: u32 = 4;
-pub const SEGV_ACCADI: u32 = 5;
-pub const SEGV_ADIDERR: u32 = 6;
-pub const SEGV_ADIPERR: u32 = 7;
-pub const SEGV_MTEAERR: u32 = 8;
-pub const SEGV_MTESERR: u32 = 9;
-pub const NSIGSEGV: u32 = 9;
-pub const BUS_ADRALN: u32 = 1;
-pub const BUS_ADRERR: u32 = 2;
-pub const BUS_OBJERR: u32 = 3;
-pub const BUS_MCEERR_AR: u32 = 4;
-pub const BUS_MCEERR_AO: u32 = 5;
-pub const NSIGBUS: u32 = 5;
-pub const TRAP_BRKPT: u32 = 1;
-pub const TRAP_TRACE: u32 = 2;
-pub const TRAP_BRANCH: u32 = 3;
-pub const TRAP_HWBKPT: u32 = 4;
-pub const TRAP_UNK: u32 = 5;
-pub const TRAP_PERF: u32 = 6;
-pub const NSIGTRAP: u32 = 6;
-pub const TRAP_PERF_FLAG_ASYNC: u32 = 1;
-pub const CLD_EXITED: u32 = 1;
-pub const CLD_KILLED: u32 = 2;
-pub const CLD_DUMPED: u32 = 3;
-pub const CLD_TRAPPED: u32 = 4;
-pub const CLD_STOPPED: u32 = 5;
-pub const CLD_CONTINUED: u32 = 6;
-pub const NSIGCHLD: u32 = 6;
-pub const POLL_IN: u32 = 1;
-pub const POLL_OUT: u32 = 2;
-pub const POLL_MSG: u32 = 3;
-pub const POLL_ERR: u32 = 4;
-pub const POLL_PRI: u32 = 5;
-pub const POLL_HUP: u32 = 6;
-pub const NSIGPOLL: u32 = 6;
-pub const SYS_SECCOMP: u32 = 1;
-pub const SYS_USER_DISPATCH: u32 = 2;
-pub const NSIGSYS: u32 = 2;
-pub const EMT_TAGOVF: u32 = 1;
-pub const NSIGEMT: u32 = 1;
-pub const SIGEV_SIGNAL: u32 = 0;
-pub const SIGEV_NONE: u32 = 1;
-pub const SIGEV_THREAD: u32 = 2;
-pub const SIGEV_THREAD_ID: u32 = 4;
-pub const SIGEV_MAX_SIZE: u32 = 64;
-pub const SS_ONSTACK: u32 = 1;
-pub const SS_DISABLE: u32 = 2;
-pub const SS_AUTODISARM: u32 = 2147483648;
-pub const SS_FLAG_BITS: u32 = 2147483648;
-pub const S_IFMT: u32 = 61440;
-pub const S_IFSOCK: u32 = 49152;
-pub const S_IFLNK: u32 = 40960;
-pub const S_IFREG: u32 = 32768;
-pub const S_IFBLK: u32 = 24576;
-pub const S_IFDIR: u32 = 16384;
-pub const S_IFCHR: u32 = 8192;
-pub const S_IFIFO: u32 = 4096;
-pub const S_ISUID: u32 = 2048;
-pub const S_ISGID: u32 = 1024;
-pub const S_ISVTX: u32 = 512;
-pub const S_IRWXU: u32 = 448;
-pub const S_IRUSR: u32 = 256;
-pub const S_IWUSR: u32 = 128;
-pub const S_IXUSR: u32 = 64;
-pub const S_IRWXG: u32 = 56;
-pub const S_IRGRP: u32 = 32;
-pub const S_IWGRP: u32 = 16;
-pub const S_IXGRP: u32 = 8;
-pub const S_IRWXO: u32 = 7;
-pub const S_IROTH: u32 = 4;
-pub const S_IWOTH: u32 = 2;
-pub const S_IXOTH: u32 = 1;
-pub const STATX_TYPE: u32 = 1;
-pub const STATX_MODE: u32 = 2;
-pub const STATX_NLINK: u32 = 4;
-pub const STATX_UID: u32 = 8;
-pub const STATX_GID: u32 = 16;
-pub const STATX_ATIME: u32 = 32;
-pub const STATX_MTIME: u32 = 64;
-pub const STATX_CTIME: u32 = 128;
-pub const STATX_INO: u32 = 256;
-pub const STATX_SIZE: u32 = 512;
-pub const STATX_BLOCKS: u32 = 1024;
-pub const STATX_BASIC_STATS: u32 = 2047;
-pub const STATX_BTIME: u32 = 2048;
-pub const STATX_MNT_ID: u32 = 4096;
-pub const STATX_DIOALIGN: u32 = 8192;
-pub const STATX__RESERVED: u32 = 2147483648;
-pub const STATX_ALL: u32 = 4095;
-pub const STATX_ATTR_COMPRESSED: u32 = 4;
-pub const STATX_ATTR_IMMUTABLE: u32 = 16;
-pub const STATX_ATTR_APPEND: u32 = 32;
-pub const STATX_ATTR_NODUMP: u32 = 64;
-pub const STATX_ATTR_ENCRYPTED: u32 = 2048;
-pub const STATX_ATTR_AUTOMOUNT: u32 = 4096;
-pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192;
-pub const STATX_ATTR_VERITY: u32 = 1048576;
-pub const STATX_ATTR_DAX: u32 = 2097152;
-pub const SI_LOAD_SHIFT: u32 = 16;
-pub const TCP_MSS_DEFAULT: u32 = 536;
-pub const TCP_MSS_DESIRED: u32 = 1220;
-pub const TCP_NODELAY: u32 = 1;
-pub const TCP_MAXSEG: u32 = 2;
-pub const TCP_CORK: u32 = 3;
-pub const TCP_KEEPIDLE: u32 = 4;
-pub const TCP_KEEPINTVL: u32 = 5;
-pub const TCP_KEEPCNT: u32 = 6;
-pub const TCP_SYNCNT: u32 = 7;
-pub const TCP_LINGER2: u32 = 8;
-pub const TCP_DEFER_ACCEPT: u32 = 9;
-pub const TCP_WINDOW_CLAMP: u32 = 10;
-pub const TCP_INFO: u32 = 11;
-pub const TCP_QUICKACK: u32 = 12;
-pub const TCP_CONGESTION: u32 = 13;
-pub const TCP_MD5SIG: u32 = 14;
-pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16;
-pub const TCP_THIN_DUPACK: u32 = 17;
-pub const TCP_USER_TIMEOUT: u32 = 18;
-pub const TCP_REPAIR: u32 = 19;
-pub const TCP_REPAIR_QUEUE: u32 = 20;
-pub const TCP_QUEUE_SEQ: u32 = 21;
-pub const TCP_REPAIR_OPTIONS: u32 = 22;
-pub const TCP_FASTOPEN: u32 = 23;
-pub const TCP_TIMESTAMP: u32 = 24;
-pub const TCP_NOTSENT_LOWAT: u32 = 25;
-pub const TCP_CC_INFO: u32 = 26;
-pub const TCP_SAVE_SYN: u32 = 27;
-pub const TCP_SAVED_SYN: u32 = 28;
-pub const TCP_REPAIR_WINDOW: u32 = 29;
-pub const TCP_FASTOPEN_CONNECT: u32 = 30;
-pub const TCP_ULP: u32 = 31;
-pub const TCP_MD5SIG_EXT: u32 = 32;
-pub const TCP_FASTOPEN_KEY: u32 = 33;
-pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34;
-pub const TCP_ZEROCOPY_RECEIVE: u32 = 35;
-pub const TCP_INQ: u32 = 36;
-pub const TCP_CM_INQ: u32 = 36;
-pub const TCP_TX_DELAY: u32 = 37;
-pub const TCP_REPAIR_ON: u32 = 1;
-pub const TCP_REPAIR_OFF: u32 = 0;
-pub const TCP_REPAIR_OFF_NO_WP: i32 = -1;
-pub const TCPI_OPT_TIMESTAMPS: u32 = 1;
-pub const TCPI_OPT_SACK: u32 = 2;
-pub const TCPI_OPT_WSCALE: u32 = 4;
-pub const TCPI_OPT_ECN: u32 = 8;
-pub const TCPI_OPT_ECN_SEEN: u32 = 16;
-pub const TCPI_OPT_SYN_DATA: u32 = 32;
-pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80;
-pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
-pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
-pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
-pub const EPERM: u32 = 1;
-pub const ENOENT: u32 = 2;
-pub const ESRCH: u32 = 3;
-pub const EINTR: u32 = 4;
-pub const EIO: u32 = 5;
-pub const ENXIO: u32 = 6;
-pub const E2BIG: u32 = 7;
-pub const ENOEXEC: u32 = 8;
-pub const EBADF: u32 = 9;
-pub const ECHILD: u32 = 10;
-pub const EAGAIN: u32 = 11;
-pub const ENOMEM: u32 = 12;
-pub const EACCES: u32 = 13;
-pub const EFAULT: u32 = 14;
-pub const ENOTBLK: u32 = 15;
-pub const EBUSY: u32 = 16;
-pub const EEXIST: u32 = 17;
-pub const EXDEV: u32 = 18;
-pub const ENODEV: u32 = 19;
-pub const ENOTDIR: u32 = 20;
-pub const EISDIR: u32 = 21;
-pub const EINVAL: u32 = 22;
-pub const ENFILE: u32 = 23;
-pub const EMFILE: u32 = 24;
-pub const ENOTTY: u32 = 25;
-pub const ETXTBSY: u32 = 26;
-pub const EFBIG: u32 = 27;
-pub const ENOSPC: u32 = 28;
-pub const ESPIPE: u32 = 29;
-pub const EROFS: u32 = 30;
-pub const EMLINK: u32 = 31;
-pub const EPIPE: u32 = 32;
-pub const EDOM: u32 = 33;
-pub const ERANGE: u32 = 34;
-pub const ENOMSG: u32 = 35;
-pub const EIDRM: u32 = 36;
-pub const ECHRNG: u32 = 37;
-pub const EL2NSYNC: u32 = 38;
-pub const EL3HLT: u32 = 39;
-pub const EL3RST: u32 = 40;
-pub const ELNRNG: u32 = 41;
-pub const EUNATCH: u32 = 42;
-pub const ENOCSI: u32 = 43;
-pub const EL2HLT: u32 = 44;
-pub const EDEADLK: u32 = 45;
-pub const ENOLCK: u32 = 46;
-pub const EBADE: u32 = 50;
-pub const EBADR: u32 = 51;
-pub const EXFULL: u32 = 52;
-pub const ENOANO: u32 = 53;
-pub const EBADRQC: u32 = 54;
-pub const EBADSLT: u32 = 55;
-pub const EDEADLOCK: u32 = 56;
-pub const EBFONT: u32 = 59;
-pub const ENOSTR: u32 = 60;
-pub const ENODATA: u32 = 61;
-pub const ETIME: u32 = 62;
-pub const ENOSR: u32 = 63;
-pub const ENONET: u32 = 64;
-pub const ENOPKG: u32 = 65;
-pub const EREMOTE: u32 = 66;
-pub const ENOLINK: u32 = 67;
-pub const EADV: u32 = 68;
-pub const ESRMNT: u32 = 69;
-pub const ECOMM: u32 = 70;
-pub const EPROTO: u32 = 71;
-pub const EDOTDOT: u32 = 73;
-pub const EMULTIHOP: u32 = 74;
-pub const EBADMSG: u32 = 77;
-pub const ENAMETOOLONG: u32 = 78;
-pub const EOVERFLOW: u32 = 79;
-pub const ENOTUNIQ: u32 = 80;
-pub const EBADFD: u32 = 81;
-pub const EREMCHG: u32 = 82;
-pub const ELIBACC: u32 = 83;
-pub const ELIBBAD: u32 = 84;
-pub const ELIBSCN: u32 = 85;
-pub const ELIBMAX: u32 = 86;
-pub const ELIBEXEC: u32 = 87;
-pub const EILSEQ: u32 = 88;
-pub const ENOSYS: u32 = 89;
-pub const ELOOP: u32 = 90;
-pub const ERESTART: u32 = 91;
-pub const ESTRPIPE: u32 = 92;
-pub const ENOTEMPTY: u32 = 93;
-pub const EUSERS: u32 = 94;
-pub const ENOTSOCK: u32 = 95;
-pub const EDESTADDRREQ: u32 = 96;
-pub const EMSGSIZE: u32 = 97;
-pub const EPROTOTYPE: u32 = 98;
-pub const ENOPROTOOPT: u32 = 99;
-pub const EPROTONOSUPPORT: u32 = 120;
-pub const ESOCKTNOSUPPORT: u32 = 121;
-pub const EOPNOTSUPP: u32 = 122;
-pub const EPFNOSUPPORT: u32 = 123;
-pub const EAFNOSUPPORT: u32 = 124;
-pub const EADDRINUSE: u32 = 125;
-pub const EADDRNOTAVAIL: u32 = 126;
-pub const ENETDOWN: u32 = 127;
-pub const ENETUNREACH: u32 = 128;
-pub const ENETRESET: u32 = 129;
-pub const ECONNABORTED: u32 = 130;
-pub const ECONNRESET: u32 = 131;
-pub const ENOBUFS: u32 = 132;
-pub const EISCONN: u32 = 133;
-pub const ENOTCONN: u32 = 134;
-pub const EUCLEAN: u32 = 135;
-pub const ENOTNAM: u32 = 137;
-pub const ENAVAIL: u32 = 138;
-pub const EISNAM: u32 = 139;
-pub const EREMOTEIO: u32 = 140;
-pub const EINIT: u32 = 141;
-pub const EREMDEV: u32 = 142;
-pub const ESHUTDOWN: u32 = 143;
-pub const ETOOMANYREFS: u32 = 144;
-pub const ETIMEDOUT: u32 = 145;
-pub const ECONNREFUSED: u32 = 146;
-pub const EHOSTDOWN: u32 = 147;
-pub const EHOSTUNREACH: u32 = 148;
-pub const EWOULDBLOCK: u32 = 11;
-pub const EALREADY: u32 = 149;
-pub const EINPROGRESS: u32 = 150;
-pub const ESTALE: u32 = 151;
-pub const ECANCELED: u32 = 158;
-pub const ENOMEDIUM: u32 = 159;
-pub const EMEDIUMTYPE: u32 = 160;
-pub const ENOKEY: u32 = 161;
-pub const EKEYEXPIRED: u32 = 162;
-pub const EKEYREVOKED: u32 = 163;
-pub const EKEYREJECTED: u32 = 164;
-pub const EOWNERDEAD: u32 = 165;
-pub const ENOTRECOVERABLE: u32 = 166;
-pub const ERFKILL: u32 = 167;
-pub const EHWPOISON: u32 = 168;
-pub const EDQUOT: u32 = 1133;
-pub const IGNBRK: u32 = 1;
-pub const BRKINT: u32 = 2;
-pub const IGNPAR: u32 = 4;
-pub const PARMRK: u32 = 8;
-pub const INPCK: u32 = 16;
-pub const ISTRIP: u32 = 32;
-pub const INLCR: u32 = 64;
-pub const IGNCR: u32 = 128;
-pub const ICRNL: u32 = 256;
-pub const IXANY: u32 = 2048;
-pub const OPOST: u32 = 1;
-pub const OCRNL: u32 = 8;
-pub const ONOCR: u32 = 16;
-pub const ONLRET: u32 = 32;
-pub const OFILL: u32 = 64;
-pub const OFDEL: u32 = 128;
-pub const B0: u32 = 0;
-pub const B50: u32 = 1;
-pub const B75: u32 = 2;
-pub const B110: u32 = 3;
-pub const B134: u32 = 4;
-pub const B150: u32 = 5;
-pub const B200: u32 = 6;
-pub const B300: u32 = 7;
-pub const B600: u32 = 8;
-pub const B1200: u32 = 9;
-pub const B1800: u32 = 10;
-pub const B2400: u32 = 11;
-pub const B4800: u32 = 12;
-pub const B9600: u32 = 13;
-pub const B19200: u32 = 14;
-pub const B38400: u32 = 15;
-pub const EXTA: u32 = 14;
-pub const EXTB: u32 = 15;
-pub const ADDRB: u32 = 536870912;
-pub const CMSPAR: u32 = 1073741824;
-pub const CRTSCTS: u32 = 2147483648;
-pub const IBSHIFT: u32 = 16;
-pub const TCOOFF: u32 = 0;
-pub const TCOON: u32 = 1;
-pub const TCIOFF: u32 = 2;
-pub const TCION: u32 = 3;
-pub const TCIFLUSH: u32 = 0;
-pub const TCOFLUSH: u32 = 1;
-pub const TCIOFLUSH: u32 = 2;
-pub const NCCS: u32 = 23;
-pub const VINTR: u32 = 0;
-pub const VQUIT: u32 = 1;
-pub const VERASE: u32 = 2;
-pub const VKILL: u32 = 3;
-pub const VMIN: u32 = 4;
-pub const VTIME: u32 = 5;
-pub const VEOL2: u32 = 6;
-pub const VSWTC: u32 = 7;
-pub const VSWTCH: u32 = 7;
-pub const VSTART: u32 = 8;
-pub const VSTOP: u32 = 9;
-pub const VSUSP: u32 = 10;
-pub const VREPRINT: u32 = 12;
-pub const VDISCARD: u32 = 13;
-pub const VWERASE: u32 = 14;
-pub const VLNEXT: u32 = 15;
-pub const VEOF: u32 = 16;
-pub const VEOL: u32 = 17;
-pub const IUCLC: u32 = 512;
-pub const IXON: u32 = 1024;
-pub const IXOFF: u32 = 4096;
-pub const IMAXBEL: u32 = 8192;
-pub const IUTF8: u32 = 16384;
-pub const OLCUC: u32 = 2;
-pub const ONLCR: u32 = 4;
-pub const NLDLY: u32 = 256;
-pub const NL0: u32 = 0;
-pub const NL1: u32 = 256;
-pub const CRDLY: u32 = 1536;
-pub const CR0: u32 = 0;
-pub const CR1: u32 = 512;
-pub const CR2: u32 = 1024;
-pub const CR3: u32 = 1536;
-pub const TABDLY: u32 = 6144;
-pub const TAB0: u32 = 0;
-pub const TAB1: u32 = 2048;
-pub const TAB2: u32 = 4096;
-pub const TAB3: u32 = 6144;
-pub const XTABS: u32 = 6144;
-pub const BSDLY: u32 = 8192;
-pub const BS0: u32 = 0;
-pub const BS1: u32 = 8192;
-pub const VTDLY: u32 = 16384;
-pub const VT0: u32 = 0;
-pub const VT1: u32 = 16384;
-pub const FFDLY: u32 = 32768;
-pub const FF0: u32 = 0;
-pub const FF1: u32 = 32768;
-pub const CBAUD: u32 = 4111;
-pub const CSIZE: u32 = 48;
-pub const CS5: u32 = 0;
-pub const CS6: u32 = 16;
-pub const CS7: u32 = 32;
-pub const CS8: u32 = 48;
-pub const CSTOPB: u32 = 64;
-pub const CREAD: u32 = 128;
-pub const PARENB: u32 = 256;
-pub const PARODD: u32 = 512;
-pub const HUPCL: u32 = 1024;
-pub const CLOCAL: u32 = 2048;
-pub const CBAUDEX: u32 = 4096;
-pub const BOTHER: u32 = 4096;
-pub const B57600: u32 = 4097;
-pub const B115200: u32 = 4098;
-pub const B230400: u32 = 4099;
-pub const B460800: u32 = 4100;
-pub const B500000: u32 = 4101;
-pub const B576000: u32 = 4102;
-pub const B921600: u32 = 4103;
-pub const B1000000: u32 = 4104;
-pub const B1152000: u32 = 4105;
-pub const B1500000: u32 = 4106;
-pub const B2000000: u32 = 4107;
-pub const B2500000: u32 = 4108;
-pub const B3000000: u32 = 4109;
-pub const B3500000: u32 = 4110;
-pub const B4000000: u32 = 4111;
-pub const CIBAUD: u32 = 269418496;
-pub const ISIG: u32 = 1;
-pub const ICANON: u32 = 2;
-pub const XCASE: u32 = 4;
-pub const ECHO: u32 = 8;
-pub const ECHOE: u32 = 16;
-pub const ECHOK: u32 = 32;
-pub const ECHONL: u32 = 64;
-pub const NOFLSH: u32 = 128;
-pub const IEXTEN: u32 = 256;
-pub const ECHOCTL: u32 = 512;
-pub const ECHOPRT: u32 = 1024;
-pub const ECHOKE: u32 = 2048;
-pub const FLUSHO: u32 = 8192;
-pub const PENDIN: u32 = 16384;
-pub const TOSTOP: u32 = 32768;
-pub const ITOSTOP: u32 = 32768;
-pub const EXTPROC: u32 = 65536;
-pub const TIOCSER_TEMT: u32 = 1;
-pub const TIOCPKT_DATA: u32 = 0;
-pub const TIOCPKT_FLUSHREAD: u32 = 1;
-pub const TIOCPKT_FLUSHWRITE: u32 = 2;
-pub const TIOCPKT_STOP: u32 = 4;
-pub const TIOCPKT_START: u32 = 8;
-pub const TIOCPKT_NOSTOP: u32 = 16;
-pub const TIOCPKT_DOSTOP: u32 = 32;
-pub const TIOCPKT_IOCTL: u32 = 64;
-pub const TIOCGLTC: u32 = 29812;
-pub const TIOCSLTC: u32 = 29813;
-pub const TIOCGETP: u32 = 29704;
-pub const TIOCSETP: u32 = 29705;
-pub const TIOCSETN: u32 = 29706;
-pub const NCC: u32 = 8;
-pub const TIOCM_LE: u32 = 1;
-pub const TIOCM_DTR: u32 = 2;
-pub const TIOCM_RTS: u32 = 4;
-pub const TIOCM_ST: u32 = 16;
-pub const TIOCM_SR: u32 = 32;
-pub const TIOCM_CTS: u32 = 64;
-pub const TIOCM_CAR: u32 = 256;
-pub const TIOCM_CD: u32 = 256;
-pub const TIOCM_RNG: u32 = 512;
-pub const TIOCM_RI: u32 = 512;
-pub const TIOCM_DSR: u32 = 1024;
-pub const TIOCM_OUT1: u32 = 8192;
-pub const TIOCM_OUT2: u32 = 16384;
-pub const TIOCM_LOOP: u32 = 32768;
-pub const UIO_FASTIOV: u32 = 8;
-pub const UIO_MAXIOV: u32 = 1024;
-pub const UNIX_PATH_MAX: u32 = 108;
-pub const __NR_Linux: u32 = 4000;
-pub const __NR_syscall: u32 = 4000;
-pub const __NR_exit: u32 = 4001;
-pub const __NR_fork: u32 = 4002;
-pub const __NR_read: u32 = 4003;
-pub const __NR_write: u32 = 4004;
-pub const __NR_open: u32 = 4005;
-pub const __NR_close: u32 = 4006;
-pub const __NR_waitpid: u32 = 4007;
-pub const __NR_creat: u32 = 4008;
-pub const __NR_link: u32 = 4009;
-pub const __NR_unlink: u32 = 4010;
-pub const __NR_execve: u32 = 4011;
-pub const __NR_chdir: u32 = 4012;
-pub const __NR_time: u32 = 4013;
-pub const __NR_mknod: u32 = 4014;
-pub const __NR_chmod: u32 = 4015;
-pub const __NR_lchown: u32 = 4016;
-pub const __NR_break: u32 = 4017;
-pub const __NR_unused18: u32 = 4018;
-pub const __NR_lseek: u32 = 4019;
-pub const __NR_getpid: u32 = 4020;
-pub const __NR_mount: u32 = 4021;
-pub const __NR_umount: u32 = 4022;
-pub const __NR_setuid: u32 = 4023;
-pub const __NR_getuid: u32 = 4024;
-pub const __NR_stime: u32 = 4025;
-pub const __NR_ptrace: u32 = 4026;
-pub const __NR_alarm: u32 = 4027;
-pub const __NR_unused28: u32 = 4028;
-pub const __NR_pause: u32 = 4029;
-pub const __NR_utime: u32 = 4030;
-pub const __NR_stty: u32 = 4031;
-pub const __NR_gtty: u32 = 4032;
-pub const __NR_access: u32 = 4033;
-pub const __NR_nice: u32 = 4034;
-pub const __NR_ftime: u32 = 4035;
-pub const __NR_sync: u32 = 4036;
-pub const __NR_kill: u32 = 4037;
-pub const __NR_rename: u32 = 4038;
-pub const __NR_mkdir: u32 = 4039;
-pub const __NR_rmdir: u32 = 4040;
-pub const __NR_dup: u32 = 4041;
-pub const __NR_pipe: u32 = 4042;
-pub const __NR_times: u32 = 4043;
-pub const __NR_prof: u32 = 4044;
-pub const __NR_brk: u32 = 4045;
-pub const __NR_setgid: u32 = 4046;
-pub const __NR_getgid: u32 = 4047;
-pub const __NR_signal: u32 = 4048;
-pub const __NR_geteuid: u32 = 4049;
-pub const __NR_getegid: u32 = 4050;
-pub const __NR_acct: u32 = 4051;
-pub const __NR_umount2: u32 = 4052;
-pub const __NR_lock: u32 = 4053;
-pub const __NR_ioctl: u32 = 4054;
-pub const __NR_fcntl: u32 = 4055;
-pub const __NR_mpx: u32 = 4056;
-pub const __NR_setpgid: u32 = 4057;
-pub const __NR_ulimit: u32 = 4058;
-pub const __NR_unused59: u32 = 4059;
-pub const __NR_umask: u32 = 4060;
-pub const __NR_chroot: u32 = 4061;
-pub const __NR_ustat: u32 = 4062;
-pub const __NR_dup2: u32 = 4063;
-pub const __NR_getppid: u32 = 4064;
-pub const __NR_getpgrp: u32 = 4065;
-pub const __NR_setsid: u32 = 4066;
-pub const __NR_sigaction: u32 = 4067;
-pub const __NR_sgetmask: u32 = 4068;
-pub const __NR_ssetmask: u32 = 4069;
-pub const __NR_setreuid: u32 = 4070;
-pub const __NR_setregid: u32 = 4071;
-pub const __NR_sigsuspend: u32 = 4072;
-pub const __NR_sigpending: u32 = 4073;
-pub const __NR_sethostname: u32 = 4074;
-pub const __NR_setrlimit: u32 = 4075;
-pub const __NR_getrlimit: u32 = 4076;
-pub const __NR_getrusage: u32 = 4077;
-pub const __NR_gettimeofday: u32 = 4078;
-pub const __NR_settimeofday: u32 = 4079;
-pub const __NR_getgroups: u32 = 4080;
-pub const __NR_setgroups: u32 = 4081;
-pub const __NR_reserved82: u32 = 4082;
-pub const __NR_symlink: u32 = 4083;
-pub const __NR_unused84: u32 = 4084;
-pub const __NR_readlink: u32 = 4085;
-pub const __NR_uselib: u32 = 4086;
-pub const __NR_swapon: u32 = 4087;
-pub const __NR_reboot: u32 = 4088;
-pub const __NR_readdir: u32 = 4089;
-pub const __NR_mmap: u32 = 4090;
-pub const __NR_munmap: u32 = 4091;
-pub const __NR_truncate: u32 = 4092;
-pub const __NR_ftruncate: u32 = 4093;
-pub const __NR_fchmod: u32 = 4094;
-pub const __NR_fchown: u32 = 4095;
-pub const __NR_getpriority: u32 = 4096;
-pub const __NR_setpriority: u32 = 4097;
-pub const __NR_profil: u32 = 4098;
-pub const __NR_statfs: u32 = 4099;
-pub const __NR_fstatfs: u32 = 4100;
-pub const __NR_ioperm: u32 = 4101;
-pub const __NR_socketcall: u32 = 4102;
-pub const __NR_syslog: u32 = 4103;
-pub const __NR_setitimer: u32 = 4104;
-pub const __NR_getitimer: u32 = 4105;
-pub const __NR_stat: u32 = 4106;
-pub const __NR_lstat: u32 = 4107;
-pub const __NR_fstat: u32 = 4108;
-pub const __NR_unused109: u32 = 4109;
-pub const __NR_iopl: u32 = 4110;
-pub const __NR_vhangup: u32 = 4111;
-pub const __NR_idle: u32 = 4112;
-pub const __NR_vm86: u32 = 4113;
-pub const __NR_wait4: u32 = 4114;
-pub const __NR_swapoff: u32 = 4115;
-pub const __NR_sysinfo: u32 = 4116;
-pub const __NR_ipc: u32 = 4117;
-pub const __NR_fsync: u32 = 4118;
-pub const __NR_sigreturn: u32 = 4119;
-pub const __NR_clone: u32 = 4120;
-pub const __NR_setdomainname: u32 = 4121;
-pub const __NR_uname: u32 = 4122;
-pub const __NR_modify_ldt: u32 = 4123;
-pub const __NR_adjtimex: u32 = 4124;
-pub const __NR_mprotect: u32 = 4125;
-pub const __NR_sigprocmask: u32 = 4126;
-pub const __NR_create_module: u32 = 4127;
-pub const __NR_init_module: u32 = 4128;
-pub const __NR_delete_module: u32 = 4129;
-pub const __NR_get_kernel_syms: u32 = 4130;
-pub const __NR_quotactl: u32 = 4131;
-pub const __NR_getpgid: u32 = 4132;
-pub const __NR_fchdir: u32 = 4133;
-pub const __NR_bdflush: u32 = 4134;
-pub const __NR_sysfs: u32 = 4135;
-pub const __NR_personality: u32 = 4136;
-pub const __NR_afs_syscall: u32 = 4137;
-pub const __NR_setfsuid: u32 = 4138;
-pub const __NR_setfsgid: u32 = 4139;
-pub const __NR__llseek: u32 = 4140;
-pub const __NR_getdents: u32 = 4141;
-pub const __NR__newselect: u32 = 4142;
-pub const __NR_flock: u32 = 4143;
-pub const __NR_msync: u32 = 4144;
-pub const __NR_readv: u32 = 4145;
-pub const __NR_writev: u32 = 4146;
-pub const __NR_cacheflush: u32 = 4147;
-pub const __NR_cachectl: u32 = 4148;
-pub const __NR_sysmips: u32 = 4149;
-pub const __NR_unused150: u32 = 4150;
-pub const __NR_getsid: u32 = 4151;
-pub const __NR_fdatasync: u32 = 4152;
-pub const __NR__sysctl: u32 = 4153;
-pub const __NR_mlock: u32 = 4154;
-pub const __NR_munlock: u32 = 4155;
-pub const __NR_mlockall: u32 = 4156;
-pub const __NR_munlockall: u32 = 4157;
-pub const __NR_sched_setparam: u32 = 4158;
-pub const __NR_sched_getparam: u32 = 4159;
-pub const __NR_sched_setscheduler: u32 = 4160;
-pub const __NR_sched_getscheduler: u32 = 4161;
-pub const __NR_sched_yield: u32 = 4162;
-pub const __NR_sched_get_priority_max: u32 = 4163;
-pub const __NR_sched_get_priority_min: u32 = 4164;
-pub const __NR_sched_rr_get_interval: u32 = 4165;
-pub const __NR_nanosleep: u32 = 4166;
-pub const __NR_mremap: u32 = 4167;
-pub const __NR_accept: u32 = 4168;
-pub const __NR_bind: u32 = 4169;
-pub const __NR_connect: u32 = 4170;
-pub const __NR_getpeername: u32 = 4171;
-pub const __NR_getsockname: u32 = 4172;
-pub const __NR_getsockopt: u32 = 4173;
-pub const __NR_listen: u32 = 4174;
-pub const __NR_recv: u32 = 4175;
-pub const __NR_recvfrom: u32 = 4176;
-pub const __NR_recvmsg: u32 = 4177;
-pub const __NR_send: u32 = 4178;
-pub const __NR_sendmsg: u32 = 4179;
-pub const __NR_sendto: u32 = 4180;
-pub const __NR_setsockopt: u32 = 4181;
-pub const __NR_shutdown: u32 = 4182;
-pub const __NR_socket: u32 = 4183;
-pub const __NR_socketpair: u32 = 4184;
-pub const __NR_setresuid: u32 = 4185;
-pub const __NR_getresuid: u32 = 4186;
-pub const __NR_query_module: u32 = 4187;
-pub const __NR_poll: u32 = 4188;
-pub const __NR_nfsservctl: u32 = 4189;
-pub const __NR_setresgid: u32 = 4190;
-pub const __NR_getresgid: u32 = 4191;
-pub const __NR_prctl: u32 = 4192;
-pub const __NR_rt_sigreturn: u32 = 4193;
-pub const __NR_rt_sigaction: u32 = 4194;
-pub const __NR_rt_sigprocmask: u32 = 4195;
-pub const __NR_rt_sigpending: u32 = 4196;
-pub const __NR_rt_sigtimedwait: u32 = 4197;
-pub const __NR_rt_sigqueueinfo: u32 = 4198;
-pub const __NR_rt_sigsuspend: u32 = 4199;
-pub const __NR_pread64: u32 = 4200;
-pub const __NR_pwrite64: u32 = 4201;
-pub const __NR_chown: u32 = 4202;
-pub const __NR_getcwd: u32 = 4203;
-pub const __NR_capget: u32 = 4204;
-pub const __NR_capset: u32 = 4205;
-pub const __NR_sigaltstack: u32 = 4206;
-pub const __NR_sendfile: u32 = 4207;
-pub const __NR_getpmsg: u32 = 4208;
-pub const __NR_putpmsg: u32 = 4209;
-pub const __NR_mmap2: u32 = 4210;
-pub const __NR_truncate64: u32 = 4211;
-pub const __NR_ftruncate64: u32 = 4212;
-pub const __NR_stat64: u32 = 4213;
-pub const __NR_lstat64: u32 = 4214;
-pub const __NR_fstat64: u32 = 4215;
-pub const __NR_pivot_root: u32 = 4216;
-pub const __NR_mincore: u32 = 4217;
-pub const __NR_madvise: u32 = 4218;
-pub const __NR_getdents64: u32 = 4219;
-pub const __NR_fcntl64: u32 = 4220;
-pub const __NR_reserved221: u32 = 4221;
-pub const __NR_gettid: u32 = 4222;
-pub const __NR_readahead: u32 = 4223;
-pub const __NR_setxattr: u32 = 4224;
-pub const __NR_lsetxattr: u32 = 4225;
-pub const __NR_fsetxattr: u32 = 4226;
-pub const __NR_getxattr: u32 = 4227;
-pub const __NR_lgetxattr: u32 = 4228;
-pub const __NR_fgetxattr: u32 = 4229;
-pub const __NR_listxattr: u32 = 4230;
-pub const __NR_llistxattr: u32 = 4231;
-pub const __NR_flistxattr: u32 = 4232;
-pub const __NR_removexattr: u32 = 4233;
-pub const __NR_lremovexattr: u32 = 4234;
-pub const __NR_fremovexattr: u32 = 4235;
-pub const __NR_tkill: u32 = 4236;
-pub const __NR_sendfile64: u32 = 4237;
-pub const __NR_futex: u32 = 4238;
-pub const __NR_sched_setaffinity: u32 = 4239;
-pub const __NR_sched_getaffinity: u32 = 4240;
-pub const __NR_io_setup: u32 = 4241;
-pub const __NR_io_destroy: u32 = 4242;
-pub const __NR_io_getevents: u32 = 4243;
-pub const __NR_io_submit: u32 = 4244;
-pub const __NR_io_cancel: u32 = 4245;
-pub const __NR_exit_group: u32 = 4246;
-pub const __NR_lookup_dcookie: u32 = 4247;
-pub const __NR_epoll_create: u32 = 4248;
-pub const __NR_epoll_ctl: u32 = 4249;
-pub const __NR_epoll_wait: u32 = 4250;
-pub const __NR_remap_file_pages: u32 = 4251;
-pub const __NR_set_tid_address: u32 = 4252;
-pub const __NR_restart_syscall: u32 = 4253;
-pub const __NR_fadvise64: u32 = 4254;
-pub const __NR_statfs64: u32 = 4255;
-pub const __NR_fstatfs64: u32 = 4256;
-pub const __NR_timer_create: u32 = 4257;
-pub const __NR_timer_settime: u32 = 4258;
-pub const __NR_timer_gettime: u32 = 4259;
-pub const __NR_timer_getoverrun: u32 = 4260;
-pub const __NR_timer_delete: u32 = 4261;
-pub const __NR_clock_settime: u32 = 4262;
-pub const __NR_clock_gettime: u32 = 4263;
-pub const __NR_clock_getres: u32 = 4264;
-pub const __NR_clock_nanosleep: u32 = 4265;
-pub const __NR_tgkill: u32 = 4266;
-pub const __NR_utimes: u32 = 4267;
-pub const __NR_mbind: u32 = 4268;
-pub const __NR_get_mempolicy: u32 = 4269;
-pub const __NR_set_mempolicy: u32 = 4270;
-pub const __NR_mq_open: u32 = 4271;
-pub const __NR_mq_unlink: u32 = 4272;
-pub const __NR_mq_timedsend: u32 = 4273;
-pub const __NR_mq_timedreceive: u32 = 4274;
-pub const __NR_mq_notify: u32 = 4275;
-pub const __NR_mq_getsetattr: u32 = 4276;
-pub const __NR_vserver: u32 = 4277;
-pub const __NR_waitid: u32 = 4278;
-pub const __NR_add_key: u32 = 4280;
-pub const __NR_request_key: u32 = 4281;
-pub const __NR_keyctl: u32 = 4282;
-pub const __NR_set_thread_area: u32 = 4283;
-pub const __NR_inotify_init: u32 = 4284;
-pub const __NR_inotify_add_watch: u32 = 4285;
-pub const __NR_inotify_rm_watch: u32 = 4286;
-pub const __NR_migrate_pages: u32 = 4287;
-pub const __NR_openat: u32 = 4288;
-pub const __NR_mkdirat: u32 = 4289;
-pub const __NR_mknodat: u32 = 4290;
-pub const __NR_fchownat: u32 = 4291;
-pub const __NR_futimesat: u32 = 4292;
-pub const __NR_fstatat64: u32 = 4293;
-pub const __NR_unlinkat: u32 = 4294;
-pub const __NR_renameat: u32 = 4295;
-pub const __NR_linkat: u32 = 4296;
-pub const __NR_symlinkat: u32 = 4297;
-pub const __NR_readlinkat: u32 = 4298;
-pub const __NR_fchmodat: u32 = 4299;
-pub const __NR_faccessat: u32 = 4300;
-pub const __NR_pselect6: u32 = 4301;
-pub const __NR_ppoll: u32 = 4302;
-pub const __NR_unshare: u32 = 4303;
-pub const __NR_splice: u32 = 4304;
-pub const __NR_sync_file_range: u32 = 4305;
-pub const __NR_tee: u32 = 4306;
-pub const __NR_vmsplice: u32 = 4307;
-pub const __NR_move_pages: u32 = 4308;
-pub const __NR_set_robust_list: u32 = 4309;
-pub const __NR_get_robust_list: u32 = 4310;
-pub const __NR_kexec_load: u32 = 4311;
-pub const __NR_getcpu: u32 = 4312;
-pub const __NR_epoll_pwait: u32 = 4313;
-pub const __NR_ioprio_set: u32 = 4314;
-pub const __NR_ioprio_get: u32 = 4315;
-pub const __NR_utimensat: u32 = 4316;
-pub const __NR_signalfd: u32 = 4317;
-pub const __NR_timerfd: u32 = 4318;
-pub const __NR_eventfd: u32 = 4319;
-pub const __NR_fallocate: u32 = 4320;
-pub const __NR_timerfd_create: u32 = 4321;
-pub const __NR_timerfd_gettime: u32 = 4322;
-pub const __NR_timerfd_settime: u32 = 4323;
-pub const __NR_signalfd4: u32 = 4324;
-pub const __NR_eventfd2: u32 = 4325;
-pub const __NR_epoll_create1: u32 = 4326;
-pub const __NR_dup3: u32 = 4327;
-pub const __NR_pipe2: u32 = 4328;
-pub const __NR_inotify_init1: u32 = 4329;
-pub const __NR_preadv: u32 = 4330;
-pub const __NR_pwritev: u32 = 4331;
-pub const __NR_rt_tgsigqueueinfo: u32 = 4332;
-pub const __NR_perf_event_open: u32 = 4333;
-pub const __NR_accept4: u32 = 4334;
-pub const __NR_recvmmsg: u32 = 4335;
-pub const __NR_fanotify_init: u32 = 4336;
-pub const __NR_fanotify_mark: u32 = 4337;
-pub const __NR_prlimit64: u32 = 4338;
-pub const __NR_name_to_handle_at: u32 = 4339;
-pub const __NR_open_by_handle_at: u32 = 4340;
-pub const __NR_clock_adjtime: u32 = 4341;
-pub const __NR_syncfs: u32 = 4342;
-pub const __NR_sendmmsg: u32 = 4343;
-pub const __NR_setns: u32 = 4344;
-pub const __NR_process_vm_readv: u32 = 4345;
-pub const __NR_process_vm_writev: u32 = 4346;
-pub const __NR_kcmp: u32 = 4347;
-pub const __NR_finit_module: u32 = 4348;
-pub const __NR_sched_setattr: u32 = 4349;
-pub const __NR_sched_getattr: u32 = 4350;
-pub const __NR_renameat2: u32 = 4351;
-pub const __NR_seccomp: u32 = 4352;
-pub const __NR_getrandom: u32 = 4353;
-pub const __NR_memfd_create: u32 = 4354;
-pub const __NR_bpf: u32 = 4355;
-pub const __NR_execveat: u32 = 4356;
-pub const __NR_userfaultfd: u32 = 4357;
-pub const __NR_membarrier: u32 = 4358;
-pub const __NR_mlock2: u32 = 4359;
-pub const __NR_copy_file_range: u32 = 4360;
-pub const __NR_preadv2: u32 = 4361;
-pub const __NR_pwritev2: u32 = 4362;
-pub const __NR_pkey_mprotect: u32 = 4363;
-pub const __NR_pkey_alloc: u32 = 4364;
-pub const __NR_pkey_free: u32 = 4365;
-pub const __NR_statx: u32 = 4366;
-pub const __NR_rseq: u32 = 4367;
-pub const __NR_io_pgetevents: u32 = 4368;
-pub const __NR_semget: u32 = 4393;
-pub const __NR_semctl: u32 = 4394;
-pub const __NR_shmget: u32 = 4395;
-pub const __NR_shmctl: u32 = 4396;
-pub const __NR_shmat: u32 = 4397;
-pub const __NR_shmdt: u32 = 4398;
-pub const __NR_msgget: u32 = 4399;
-pub const __NR_msgsnd: u32 = 4400;
-pub const __NR_msgrcv: u32 = 4401;
-pub const __NR_msgctl: u32 = 4402;
-pub const __NR_clock_gettime64: u32 = 4403;
-pub const __NR_clock_settime64: u32 = 4404;
-pub const __NR_clock_adjtime64: u32 = 4405;
-pub const __NR_clock_getres_time64: u32 = 4406;
-pub const __NR_clock_nanosleep_time64: u32 = 4407;
-pub const __NR_timer_gettime64: u32 = 4408;
-pub const __NR_timer_settime64: u32 = 4409;
-pub const __NR_timerfd_gettime64: u32 = 4410;
-pub const __NR_timerfd_settime64: u32 = 4411;
-pub const __NR_utimensat_time64: u32 = 4412;
-pub const __NR_pselect6_time64: u32 = 4413;
-pub const __NR_ppoll_time64: u32 = 4414;
-pub const __NR_io_pgetevents_time64: u32 = 4416;
-pub const __NR_recvmmsg_time64: u32 = 4417;
-pub const __NR_mq_timedsend_time64: u32 = 4418;
-pub const __NR_mq_timedreceive_time64: u32 = 4419;
-pub const __NR_semtimedop_time64: u32 = 4420;
-pub const __NR_rt_sigtimedwait_time64: u32 = 4421;
-pub const __NR_futex_time64: u32 = 4422;
-pub const __NR_sched_rr_get_interval_time64: u32 = 4423;
-pub const __NR_pidfd_send_signal: u32 = 4424;
-pub const __NR_io_uring_setup: u32 = 4425;
-pub const __NR_io_uring_enter: u32 = 4426;
-pub const __NR_io_uring_register: u32 = 4427;
-pub const __NR_open_tree: u32 = 4428;
-pub const __NR_move_mount: u32 = 4429;
-pub const __NR_fsopen: u32 = 4430;
-pub const __NR_fsconfig: u32 = 4431;
-pub const __NR_fsmount: u32 = 4432;
-pub const __NR_fspick: u32 = 4433;
-pub const __NR_pidfd_open: u32 = 4434;
-pub const __NR_clone3: u32 = 4435;
-pub const __NR_close_range: u32 = 4436;
-pub const __NR_openat2: u32 = 4437;
-pub const __NR_pidfd_getfd: u32 = 4438;
-pub const __NR_faccessat2: u32 = 4439;
-pub const __NR_process_madvise: u32 = 4440;
-pub const __NR_epoll_pwait2: u32 = 4441;
-pub const __NR_mount_setattr: u32 = 4442;
-pub const __NR_quotactl_fd: u32 = 4443;
-pub const __NR_landlock_create_ruleset: u32 = 4444;
-pub const __NR_landlock_add_rule: u32 = 4445;
-pub const __NR_landlock_restrict_self: u32 = 4446;
-pub const __NR_process_mrelease: u32 = 4448;
-pub const __NR_futex_waitv: u32 = 4449;
-pub const __NR_set_mempolicy_home_node: u32 = 4450;
-pub const __OLD_UTS_LEN: u32 = 8;
-pub const __NEW_UTS_LEN: u32 = 64;
-pub const WNOHANG: u32 = 1;
-pub const WUNTRACED: u32 = 2;
-pub const WSTOPPED: u32 = 2;
-pub const WEXITED: u32 = 4;
-pub const WCONTINUED: u32 = 8;
-pub const WNOWAIT: u32 = 16777216;
-pub const __WNOTHREAD: u32 = 536870912;
-pub const __WALL: u32 = 1073741824;
-pub const __WCLONE: u32 = 2147483648;
-pub const P_ALL: u32 = 0;
-pub const P_PID: u32 = 1;
-pub const P_PGID: u32 = 2;
-pub const P_PIDFD: u32 = 3;
-pub const XATTR_CREATE: u32 = 1;
-pub const XATTR_REPLACE: u32 = 2;
-pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0";
-pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0";
-pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0";
-pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0";
-pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0";
-pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0";
-pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0";
-pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0";
-pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0";
-pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0";
-pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0";
-pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0";
-pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0";
-pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0";
-pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0";
-pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0";
-pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0";
-pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0";
-pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0";
-pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0";
-pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0";
-pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0";
-pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0";
-pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0";
-pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0";
-pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0";
-pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0";
-pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0";
-pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0";
-pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0";
-pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0";
-pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0";
-pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0";
-pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0";
-pub const MFD_CLOEXEC: u32 = 1;
-pub const MFD_ALLOW_SEALING: u32 = 2;
-pub const MFD_HUGETLB: u32 = 4;
-pub const MFD_HUGE_SHIFT: u32 = 26;
-pub const MFD_HUGE_MASK: u32 = 63;
-pub const MFD_HUGE_64KB: u32 = 1073741824;
-pub const MFD_HUGE_512KB: u32 = 1275068416;
-pub const MFD_HUGE_1MB: u32 = 1342177280;
-pub const MFD_HUGE_2MB: u32 = 1409286144;
-pub const MFD_HUGE_8MB: u32 = 1543503872;
-pub const MFD_HUGE_16MB: u32 = 1610612736;
-pub const MFD_HUGE_32MB: u32 = 1677721600;
-pub const MFD_HUGE_256MB: u32 = 1879048192;
-pub const MFD_HUGE_512MB: u32 = 1946157056;
-pub const MFD_HUGE_1GB: u32 = 2013265920;
-pub const MFD_HUGE_2GB: u32 = 2080374784;
-pub const MFD_HUGE_16GB: u32 = 2281701376;
-pub const TFD_TIMER_ABSTIME: u32 = 1;
-pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2;
-pub const TFD_CLOEXEC: u32 = 524288;
-pub const TFD_NONBLOCK: u32 = 128;
-pub const USERFAULTFD_IOC: u32 = 170;
-pub const _UFFDIO_REGISTER: u32 = 0;
-pub const _UFFDIO_UNREGISTER: u32 = 1;
-pub const _UFFDIO_WAKE: u32 = 2;
-pub const _UFFDIO_COPY: u32 = 3;
-pub const _UFFDIO_ZEROPAGE: u32 = 4;
-pub const _UFFDIO_WRITEPROTECT: u32 = 6;
-pub const _UFFDIO_CONTINUE: u32 = 7;
-pub const _UFFDIO_API: u32 = 63;
-pub const UFFDIO: u32 = 170;
-pub const UFFD_EVENT_PAGEFAULT: u32 = 18;
-pub const UFFD_EVENT_FORK: u32 = 19;
-pub const UFFD_EVENT_REMAP: u32 = 20;
-pub const UFFD_EVENT_REMOVE: u32 = 21;
-pub const UFFD_EVENT_UNMAP: u32 = 22;
-pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1;
-pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2;
-pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4;
-pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1;
-pub const UFFD_FEATURE_EVENT_FORK: u32 = 2;
-pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4;
-pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8;
-pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16;
-pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32;
-pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64;
-pub const UFFD_FEATURE_SIGBUS: u32 = 128;
-pub const UFFD_FEATURE_THREAD_ID: u32 = 256;
-pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512;
-pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024;
-pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048;
-pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096;
-pub const UFFD_USER_MODE_ONLY: u32 = 1;
-pub const IORING_FILE_INDEX_ALLOC: i32 = -1;
-pub const IORING_SETUP_IOPOLL: u32 = 1;
-pub const IORING_SETUP_SQPOLL: u32 = 2;
-pub const IORING_SETUP_SQ_AFF: u32 = 4;
-pub const IORING_SETUP_CQSIZE: u32 = 8;
-pub const IORING_SETUP_CLAMP: u32 = 16;
-pub const IORING_SETUP_ATTACH_WQ: u32 = 32;
-pub const IORING_SETUP_R_DISABLED: u32 = 64;
-pub const IORING_SETUP_SUBMIT_ALL: u32 = 128;
-pub const IORING_SETUP_COOP_TASKRUN: u32 = 256;
-pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512;
-pub const IORING_SETUP_SQE128: u32 = 1024;
-pub const IORING_SETUP_CQE32: u32 = 2048;
-pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096;
-pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192;
-pub const IORING_URING_CMD_FIXED: u32 = 1;
-pub const IORING_FSYNC_DATASYNC: u32 = 1;
-pub const IORING_TIMEOUT_ABS: u32 = 1;
-pub const IORING_TIMEOUT_UPDATE: u32 = 2;
-pub const IORING_TIMEOUT_BOOTTIME: u32 = 4;
-pub const IORING_TIMEOUT_REALTIME: u32 = 8;
-pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16;
-pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32;
-pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12;
-pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18;
-pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648;
-pub const IORING_POLL_ADD_MULTI: u32 = 1;
-pub const IORING_POLL_UPDATE_EVENTS: u32 = 2;
-pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4;
-pub const IORING_POLL_ADD_LEVEL: u32 = 8;
-pub const IORING_ASYNC_CANCEL_ALL: u32 = 1;
-pub const IORING_ASYNC_CANCEL_FD: u32 = 2;
-pub const IORING_ASYNC_CANCEL_ANY: u32 = 4;
-pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8;
-pub const IORING_RECVSEND_POLL_FIRST: u32 = 1;
-pub const IORING_RECV_MULTISHOT: u32 = 2;
-pub const IORING_RECVSEND_FIXED_BUF: u32 = 4;
-pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8;
-pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648;
-pub const IORING_ACCEPT_MULTISHOT: u32 = 1;
-pub const IORING_MSG_RING_CQE_SKIP: u32 = 1;
-pub const IORING_CQE_F_BUFFER: u32 = 1;
-pub const IORING_CQE_F_MORE: u32 = 2;
-pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4;
-pub const IORING_CQE_F_NOTIF: u32 = 8;
-pub const IORING_OFF_SQ_RING: u32 = 0;
-pub const IORING_OFF_CQ_RING: u32 = 134217728;
-pub const IORING_OFF_SQES: u32 = 268435456;
-pub const IORING_SQ_NEED_WAKEUP: u32 = 1;
-pub const IORING_SQ_CQ_OVERFLOW: u32 = 2;
-pub const IORING_SQ_TASKRUN: u32 = 4;
-pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1;
-pub const IORING_ENTER_GETEVENTS: u32 = 1;
-pub const IORING_ENTER_SQ_WAKEUP: u32 = 2;
-pub const IORING_ENTER_SQ_WAIT: u32 = 4;
-pub const IORING_ENTER_EXT_ARG: u32 = 8;
-pub const IORING_ENTER_REGISTERED_RING: u32 = 16;
-pub const IORING_FEAT_SINGLE_MMAP: u32 = 1;
-pub const IORING_FEAT_NODROP: u32 = 2;
-pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4;
-pub const IORING_FEAT_RW_CUR_POS: u32 = 8;
-pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16;
-pub const IORING_FEAT_FAST_POLL: u32 = 32;
-pub const IORING_FEAT_POLL_32BITS: u32 = 64;
-pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128;
-pub const IORING_FEAT_EXT_ARG: u32 = 256;
-pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512;
-pub const IORING_FEAT_RSRC_TAGS: u32 = 1024;
-pub const IORING_FEAT_CQE_SKIP: u32 = 2048;
-pub const IORING_FEAT_LINKED_FILE: u32 = 4096;
-pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1;
-pub const IORING_REGISTER_FILES_SKIP: i32 = -2;
-pub const IO_URING_OP_SUPPORTED: u32 = 1;
-pub const DT_UNKNOWN: u32 = 0;
-pub const DT_FIFO: u32 = 1;
-pub const DT_CHR: u32 = 2;
-pub const DT_DIR: u32 = 4;
-pub const DT_BLK: u32 = 6;
-pub const DT_REG: u32 = 8;
-pub const DT_LNK: u32 = 10;
-pub const DT_SOCK: u32 = 12;
-pub const SHUT_RD: u32 = 0;
-pub const SHUT_WR: u32 = 1;
-pub const SHUT_RDWR: u32 = 2;
-pub const STAT_HAVE_NSEC: u32 = 1;
-pub const SOCK_STREAM: u32 = 2;
-pub const SOCK_DGRAM: u32 = 1;
-pub const SOCK_RAW: u32 = 3;
-pub const SOCK_RDM: u32 = 4;
-pub const SOCK_SEQPACKET: u32 = 5;
-pub const F_OK: u32 = 0;
-pub const R_OK: u32 = 4;
-pub const W_OK: u32 = 2;
-pub const X_OK: u32 = 1;
-pub const UTIME_NOW: u32 = 1073741823;
-pub const UTIME_OMIT: u32 = 1073741822;
-pub const MSG_DONTWAIT: u32 = 64;
-pub const AF_UNSPEC: u32 = 0;
-pub const AF_UNIX: u32 = 1;
-pub const AF_INET: u32 = 2;
-pub const AF_AX25: u32 = 3;
-pub const AF_IPX: u32 = 4;
-pub const AF_APPLETALK: u32 = 5;
-pub const AF_NETROM: u32 = 6;
-pub const AF_BRIDGE: u32 = 7;
-pub const AF_ATMPVC: u32 = 8;
-pub const AF_X25: u32 = 9;
-pub const AF_INET6: u32 = 10;
-pub const AF_ROSE: u32 = 11;
-pub const AF_DECnet: u32 = 12;
-pub const AF_NETBEUI: u32 = 13;
-pub const AF_SECURITY: u32 = 14;
-pub const AF_KEY: u32 = 15;
-pub const AF_NETLINK: u32 = 16;
-pub const AF_PACKET: u32 = 17;
-pub const AF_ASH: u32 = 18;
-pub const AF_ECONET: u32 = 19;
-pub const AF_ATMSVC: u32 = 20;
-pub const AF_RDS: u32 = 21;
-pub const AF_SNA: u32 = 22;
-pub const AF_IRDA: u32 = 23;
-pub const AF_PPPOX: u32 = 24;
-pub const AF_WANPIPE: u32 = 25;
-pub const AF_LLC: u32 = 26;
-pub const AF_CAN: u32 = 29;
-pub const AF_TIPC: u32 = 30;
-pub const AF_BLUETOOTH: u32 = 31;
-pub const AF_IUCV: u32 = 32;
-pub const AF_RXRPC: u32 = 33;
-pub const AF_ISDN: u32 = 34;
-pub const AF_PHONET: u32 = 35;
-pub const AF_IEEE802154: u32 = 36;
-pub const AF_MAX: u32 = 37;
-pub const MSG_OOB: u32 = 1;
-pub const MSG_PEEK: u32 = 2;
-pub const MSG_DONTROUTE: u32 = 4;
-pub const MSG_CTRUNC: u32 = 8;
-pub const MSG_PROBE: u32 = 16;
-pub const MSG_TRUNC: u32 = 32;
-pub const MSG_EOR: u32 = 128;
-pub const MSG_WAITALL: u32 = 256;
-pub const MSG_FIN: u32 = 512;
-pub const MSG_SYN: u32 = 1024;
-pub const MSG_CONFIRM: u32 = 2048;
-pub const MSG_RST: u32 = 4096;
-pub const MSG_ERRQUEUE: u32 = 8192;
-pub const MSG_NOSIGNAL: u32 = 16384;
-pub const MSG_MORE: u32 = 32768;
-pub const MSG_CMSG_CLOEXEC: u32 = 1073741824;
-pub const STDIN_FILENO: u32 = 0;
-pub const STDOUT_FILENO: u32 = 1;
-pub const STDERR_FILENO: u32 = 2;
-pub const RWF_HIPRI: u32 = 1;
-pub const RWF_DSYNC: u32 = 2;
-pub const RWF_SYNC: u32 = 4;
-pub const RWF_NOWAIT: u32 = 8;
-pub const RWF_APPEND: u32 = 16;
-pub const EFD_SEMAPHORE: u32 = 1;
-pub const EFD_CLOEXEC: u32 = 524288;
-pub const EFD_NONBLOCK: u32 = 128;
-pub const EPOLLIN: u32 = 1;
-pub const EPOLLPRI: u32 = 2;
-pub const EPOLLOUT: u32 = 4;
-pub const EPOLLERR: u32 = 8;
-pub const EPOLLHUP: u32 = 16;
-pub const EPOLLNVAL: u32 = 32;
-pub const EPOLLRDNORM: u32 = 64;
-pub const EPOLLRDBAND: u32 = 128;
-pub const EPOLLWRNORM: u32 = 256;
-pub const EPOLLWRBAND: u32 = 512;
-pub const EPOLLMSG: u32 = 1024;
-pub const EPOLLRDHUP: u32 = 8192;
-pub const EPOLLEXCLUSIVE: u32 = 268435456;
-pub const EPOLLWAKEUP: u32 = 536870912;
-pub const EPOLLONESHOT: u32 = 1073741824;
-pub const EPOLLET: u32 = 2147483648;
-pub const TFD_SHARED_FCNTL_FLAGS: u32 = 524416;
-pub const TFD_CREATE_FLAGS: u32 = 524416;
-pub const TFD_SETTIME_FLAGS: u32 = 1;
-pub const SCM_RIGHTS: u32 = 1;
-pub const SCM_CREDENTIALS: u32 = 2;
-pub const SCM_SECURITY: u32 = 3;
-pub const UFFD_API: u32 = 170;
-pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1;
-pub const UFFDIO_REGISTER_MODE_WP: u32 = 2;
-pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4;
-pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1;
-pub const UFFDIO_COPY_MODE_WP: u32 = 2;
-pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1;
-pub const POLLWRNORM: u32 = 4;
-pub const TCSANOW: u32 = 21518;
-pub const TCSADRAIN: u32 = 21519;
-pub const TCSAFLUSH: u32 = 21520;
-pub const SPLICE_F_MOVE: u32 = 1;
-pub const SPLICE_F_NONBLOCK: u32 = 2;
-pub const SPLICE_F_MORE: u32 = 4;
-pub const SPLICE_F_GIFT: u32 = 8;
-pub const MNT_FORCE: u32 = 1;
-pub const MNT_DETACH: u32 = 2;
-pub const MNT_EXPIRE: u32 = 4;
-pub const UMOUNT_NOFOLLOW: u32 = 8;
-pub const UMOUNT_UNUSED: u32 = 2147483648;
-pub type size_t = crate::ctypes::c_uint;
-pub type ssize_t = crate::ctypes::c_int;
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 32usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_daddr_t = crate::ctypes::c_long;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_uid_t = __kernel_uid_t;
-pub type __kernel_old_gid_t = __kernel_gid_t;
-pub type __kernel_old_dev_t = crate::ctypes::c_uint;
-pub type __kernel_size_t = crate::ctypes::c_uint;
-pub type __kernel_ssize_t = crate::ctypes::c_int;
-pub type __kernel_ptrdiff_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_header_struct {
-pub version: __u32,
-pub pid: crate::ctypes::c_int,
-}
-pub type cap_user_header_t = *mut __user_cap_header_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_data_struct {
-pub effective: __u32,
-pub permitted: __u32,
-pub inheritable: __u32,
-}
-pub type cap_user_data_t = *mut __user_cap_data_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_cap_data__bindgen_ty_1; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize],
-pub rootid: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct f_owner_ex {
-pub type_: crate::ctypes::c_int,
-pub pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_off_t,
-pub l_len: __kernel_off_t,
-pub l_pid: __kernel_pid_t,
-pub l_sysid: crate::ctypes::c_long,
-pub pad: [crate::ctypes::c_long; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock64 {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_loff_t,
-pub l_len: __kernel_loff_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct open_how {
-pub flags: __u64,
-pub mode: __u64,
-pub resolve: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct epoll_event {
-pub events: __poll_t,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v1 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub master_key_descriptor: [__u8; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_key {
-pub mode: __u32,
-pub raw: [__u8; 64usize],
-pub size: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v2 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub __reserved: [__u8; 4usize],
-pub master_key_identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_policy_ex_arg {
-pub policy_size: __u64,
-pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 {
-pub version: __u8,
-pub v1: fscrypt_policy_v1,
-pub v2: fscrypt_policy_v2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_key_specifier {
-pub type_: __u32,
-pub __reserved: __u32,
-pub u: fscrypt_key_specifier__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_key_specifier__bindgen_ty_1 {
-pub __reserved: [__u8; 32usize],
-pub descriptor: [__u8; 8usize],
-pub identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct fscrypt_provisioning_key_payload {
-pub type_: __u32,
-pub __reserved: __u32,
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-pub struct fscrypt_add_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub raw_size: __u32,
-pub key_id: __u32,
-pub __reserved: [__u32; 8usize],
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_remove_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub removal_status_flags: __u32,
-pub __reserved: [__u32; 5usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_key_status_arg {
-pub key_spec: fscrypt_key_specifier,
-pub __reserved: [__u32; 6usize],
-pub status: __u32,
-pub status_flags: __u32,
-pub user_count: __u32,
-pub __out_reserved: [__u32; 13usize],
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum fsconfig_command {
-FSCONFIG_SET_FLAG = 0,
-FSCONFIG_SET_STRING = 1,
-FSCONFIG_SET_BINARY = 2,
-FSCONFIG_SET_PATH = 3,
-FSCONFIG_SET_PATH_EMPTY = 4,
-FSCONFIG_SET_FD = 5,
-FSCONFIG_CMD_CREATE = 6,
-FSCONFIG_CMD_RECONFIGURE = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mount_attr {
-pub attr_set: __u64,
-pub attr_clr: __u64,
-pub propagation: __u64,
-pub userns_fd: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_clone_range {
-pub src_fd: __s64,
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_offset: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fstrim_range {
-pub start: __u64,
-pub len: __u64,
-pub minlen: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_dedupe_range_info {
-pub dest_fd: __s64,
-pub dest_offset: __u64,
-pub bytes_deduped: __u64,
-pub status: __s32,
-pub reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct file_dedupe_range {
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_count: __u16,
-pub reserved1: __u16,
-pub reserved2: __u32,
-pub info: __IncompleteArrayField<file_dedupe_range_info>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct files_stat_struct {
-pub nr_files: crate::ctypes::c_ulong,
-pub nr_free_files: crate::ctypes::c_ulong,
-pub max_files: crate::ctypes::c_ulong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct inodes_stat_t {
-pub nr_inodes: crate::ctypes::c_long,
-pub nr_unused: crate::ctypes::c_long,
-pub dummy: [crate::ctypes::c_long; 5usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fsxattr {
-pub fsx_xflags: __u32,
-pub fsx_extsize: __u32,
-pub fsx_nextents: __u32,
-pub fsx_projid: __u32,
-pub fsx_cowextsize: __u32,
-pub fsx_pad: [crate::ctypes::c_uchar; 8usize],
-}
-pub type __kernel_rwf_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct futex_waitv {
-pub val: __u64,
-pub uaddr: __u64,
-pub flags: __u32,
-pub __reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list {
-pub next: *mut robust_list,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list_head {
-pub list: robust_list,
-pub futex_offset: crate::ctypes::c_long,
-pub list_op_pending: *mut robust_list,
-}
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP;
-pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP;
-pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP;
-pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP;
-pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP;
-pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP;
-pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP;
-pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP;
-pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP;
-pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP;
-pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP;
-pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6;
-pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP;
-pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE;
-pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP;
-pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH;
-pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP;
-pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH;
-pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP;
-pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM;
-pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP;
-pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP;
-pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP;
-pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE;
-pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS;
-pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET;
-pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW;
-pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP;
-pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-IPPROTO_IP = 0,
-IPPROTO_ICMP = 1,
-IPPROTO_IGMP = 2,
-IPPROTO_IPIP = 4,
-IPPROTO_TCP = 6,
-IPPROTO_EGP = 8,
-IPPROTO_PUP = 12,
-IPPROTO_UDP = 17,
-IPPROTO_IDP = 22,
-IPPROTO_TP = 29,
-IPPROTO_DCCP = 33,
-IPPROTO_IPV6 = 41,
-IPPROTO_RSVP = 46,
-IPPROTO_GRE = 47,
-IPPROTO_ESP = 50,
-IPPROTO_AH = 51,
-IPPROTO_MTP = 92,
-IPPROTO_BEETPH = 94,
-IPPROTO_ENCAP = 98,
-IPPROTO_PIM = 103,
-IPPROTO_COMP = 108,
-IPPROTO_L2TP = 115,
-IPPROTO_SCTP = 132,
-IPPROTO_UDPLITE = 136,
-IPPROTO_MPLS = 137,
-IPPROTO_ETHERNET = 143,
-IPPROTO_RAW = 255,
-IPPROTO_MPTCP = 262,
-IPPROTO_MAX = 263,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_addr {
-pub s_addr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq {
-pub imr_multiaddr: in_addr,
-pub imr_interface: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreqn {
-pub imr_multiaddr: in_addr,
-pub imr_address: in_addr,
-pub imr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq_source {
-pub imr_multiaddr: __be32,
-pub imr_interface: __be32,
-pub imr_sourceaddr: __be32,
-}
-#[repr(C)]
-pub struct ip_msfilter {
-pub imsf_multiaddr: __be32,
-pub imsf_interface: __be32,
-pub imsf_fmode: __u32,
-pub imsf_numsrc: __u32,
-pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct ip_msfilter__bindgen_ty_1 {
-pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>,
-pub __bindgen_anon_1: __BindgenUnionField<ip_msfilter__bindgen_ty_1__bindgen_ty_1>,
-pub bindgen_union_field: u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 {
-pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-pub imsf_slist_flex: __IncompleteArrayField<__be32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_req {
-pub gr_interface: __u32,
-pub gr_group: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_source_req {
-pub gsr_interface: __u32,
-pub gsr_group: __kernel_sockaddr_storage,
-pub gsr_source: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-pub struct group_filter {
-pub __bindgen_anon_1: group_filter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_1>,
-pub __bindgen_anon_2: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_2>,
-pub bindgen_union_field: [u32; 67usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_1 {
-pub gf_interface_aux: __u32,
-pub gf_group_aux: __kernel_sockaddr_storage,
-pub gf_fmode_aux: __u32,
-pub gf_numsrc_aux: __u32,
-pub gf_slist: [__kernel_sockaddr_storage; 1usize],
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_2 {
-pub gf_interface: __u32,
-pub gf_group: __kernel_sockaddr_storage,
-pub gf_fmode: __u32,
-pub gf_numsrc: __u32,
-pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_pktinfo {
-pub ipi_ifindex: crate::ctypes::c_int,
-pub ipi_spec_dst: in_addr,
-pub ipi_addr: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_in {
-pub sin_family: __kernel_sa_family_t,
-pub sin_port: __be16,
-pub sin_addr: in_addr,
-pub __pad: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct inotify_event {
-pub wd: __s32,
-pub mask: __u32,
-pub cookie: __u32,
-pub len: __u32,
-pub name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct iphdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub tos: __u8,
-pub tot_len: __be16,
-pub id: __be16,
-pub frag_off: __be16,
-pub ttl: __u8,
-pub protocol: __u8,
-pub check: __sum16,
-pub __bindgen_anon_1: iphdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union iphdr__bindgen_ty_1 {
-pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-impl iphdr {
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn ihl(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_ihl(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(version: __u8, ihl: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let ihl: u8 = unsafe { ::core::mem::transmute(ihl) };
-ihl as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_auth_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub reserved: __be16,
-pub spi: __be32,
-pub seq_no: __be32,
-pub auth_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_esp_hdr {
-pub spi: __be32,
-pub seq_no: __be32,
-pub enc_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_comp_hdr {
-pub nexthdr: __u8,
-pub flags: __u8,
-pub cpi: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_beet_phdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub padlen: __u8,
-pub reserved: __u8,
-}
-pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING;
-pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING;
-pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP;
-pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS;
-pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS;
-pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS;
-pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA;
-pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER;
-pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY;
-pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS;
-pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG;
-pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER;
-pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID;
-pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM;
-pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY;
-pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION;
-pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE;
-pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE;
-pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES;
-pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT;
-pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY;
-pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL;
-pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK;
-pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN;
-pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET;
-pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP;
-pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING;
-pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER;
-pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IPV4_DEVCONF_FORWARDING = 1,
-IPV4_DEVCONF_MC_FORWARDING = 2,
-IPV4_DEVCONF_PROXY_ARP = 3,
-IPV4_DEVCONF_ACCEPT_REDIRECTS = 4,
-IPV4_DEVCONF_SECURE_REDIRECTS = 5,
-IPV4_DEVCONF_SEND_REDIRECTS = 6,
-IPV4_DEVCONF_SHARED_MEDIA = 7,
-IPV4_DEVCONF_RP_FILTER = 8,
-IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9,
-IPV4_DEVCONF_BOOTP_RELAY = 10,
-IPV4_DEVCONF_LOG_MARTIANS = 11,
-IPV4_DEVCONF_TAG = 12,
-IPV4_DEVCONF_ARPFILTER = 13,
-IPV4_DEVCONF_MEDIUM_ID = 14,
-IPV4_DEVCONF_NOXFRM = 15,
-IPV4_DEVCONF_NOPOLICY = 16,
-IPV4_DEVCONF_FORCE_IGMP_VERSION = 17,
-IPV4_DEVCONF_ARP_ANNOUNCE = 18,
-IPV4_DEVCONF_ARP_IGNORE = 19,
-IPV4_DEVCONF_PROMOTE_SECONDARIES = 20,
-IPV4_DEVCONF_ARP_ACCEPT = 21,
-IPV4_DEVCONF_ARP_NOTIFY = 22,
-IPV4_DEVCONF_ACCEPT_LOCAL = 23,
-IPV4_DEVCONF_SRC_VMARK = 24,
-IPV4_DEVCONF_PROXY_ARP_PVLAN = 25,
-IPV4_DEVCONF_ROUTE_LOCALNET = 26,
-IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27,
-IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28,
-IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29,
-IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30,
-IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31,
-IPV4_DEVCONF_BC_FORWARDING = 32,
-IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33,
-__IPV4_DEVCONF_MAX = 34,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_addr {
-pub in6_u: in6_addr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union in6_addr__bindgen_ty_1 {
-pub u6_addr8: [__u8; 16usize],
-pub u6_addr16: [__be16; 8usize],
-pub u6_addr32: [__be32; 4usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr_in6 {
-pub sin6_family: crate::ctypes::c_ushort,
-pub sin6_port: __be16,
-pub sin6_flowinfo: __be32,
-pub sin6_addr: in6_addr,
-pub sin6_scope_id: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6_mreq {
-pub ipv6mr_multiaddr: in6_addr,
-pub ipv6mr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_flowlabel_req {
-pub flr_dst: in6_addr,
-pub flr_label: __be32,
-pub flr_action: __u8,
-pub flr_share: __u8,
-pub flr_flags: __u16,
-pub flr_expires: __u16,
-pub flr_linger: __u16,
-pub __flr_pad: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_pktinfo {
-pub ipi6_addr: in6_addr,
-pub ipi6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ip6_mtuinfo {
-pub ip6m_addr: sockaddr_in6,
-pub ip6m_mtu: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_ifreq {
-pub ifr6_addr: in6_addr,
-pub ifr6_prefixlen: __u32,
-pub ifr6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_rt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub type_: __u8,
-pub segments_left: __u8,
-}
-#[repr(C, packed)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_opt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-}
-#[repr(C)]
-pub struct rt0_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: __IncompleteArrayField<in6_addr>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rt2_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: in6_addr,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct ipv6_destopt_hao {
-pub type_: __u8,
-pub length: __u8,
-pub addr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub flow_lbl: [__u8; 3usize],
-pub payload_len: __be16,
-pub nexthdr: __u8,
-pub hop_limit: __u8,
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union ipv6hdr__bindgen_ty_1 {
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-impl ipv6hdr {
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn priority(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_priority(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(version: __u8, priority: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let priority: u8 = unsafe { ::core::mem::transmute(priority) };
-priority as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING;
-pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT;
-pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6;
-pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA;
-pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS;
-pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF;
-pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS;
-pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS;
-pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL;
-pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY;
-pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR;
-pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT;
-pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT;
-pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY;
-pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR;
-pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES;
-pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION;
-pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR;
-pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO;
-pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF;
-pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN;
-pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP;
-pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD;
-pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING;
-pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6;
-pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD;
-pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO;
-pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY;
-pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC;
-pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL;
-pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC;
-pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU;
-pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET;
-pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY;
-pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT;
-pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA;
-pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN;
-pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL;
-pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED;
-pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC;
-pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD;
-pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE;
-pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN;
-pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS;
-pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED;
-pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC;
-pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED;
-pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID;
-pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE;
-pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER;
-pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA;
-pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-DEVCONF_FORWARDING = 0,
-DEVCONF_HOPLIMIT = 1,
-DEVCONF_MTU6 = 2,
-DEVCONF_ACCEPT_RA = 3,
-DEVCONF_ACCEPT_REDIRECTS = 4,
-DEVCONF_AUTOCONF = 5,
-DEVCONF_DAD_TRANSMITS = 6,
-DEVCONF_RTR_SOLICITS = 7,
-DEVCONF_RTR_SOLICIT_INTERVAL = 8,
-DEVCONF_RTR_SOLICIT_DELAY = 9,
-DEVCONF_USE_TEMPADDR = 10,
-DEVCONF_TEMP_VALID_LFT = 11,
-DEVCONF_TEMP_PREFERED_LFT = 12,
-DEVCONF_REGEN_MAX_RETRY = 13,
-DEVCONF_MAX_DESYNC_FACTOR = 14,
-DEVCONF_MAX_ADDRESSES = 15,
-DEVCONF_FORCE_MLD_VERSION = 16,
-DEVCONF_ACCEPT_RA_DEFRTR = 17,
-DEVCONF_ACCEPT_RA_PINFO = 18,
-DEVCONF_ACCEPT_RA_RTR_PREF = 19,
-DEVCONF_RTR_PROBE_INTERVAL = 20,
-DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21,
-DEVCONF_PROXY_NDP = 22,
-DEVCONF_OPTIMISTIC_DAD = 23,
-DEVCONF_ACCEPT_SOURCE_ROUTE = 24,
-DEVCONF_MC_FORWARDING = 25,
-DEVCONF_DISABLE_IPV6 = 26,
-DEVCONF_ACCEPT_DAD = 27,
-DEVCONF_FORCE_TLLAO = 28,
-DEVCONF_NDISC_NOTIFY = 29,
-DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30,
-DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31,
-DEVCONF_SUPPRESS_FRAG_NDISC = 32,
-DEVCONF_ACCEPT_RA_FROM_LOCAL = 33,
-DEVCONF_USE_OPTIMISTIC = 34,
-DEVCONF_ACCEPT_RA_MTU = 35,
-DEVCONF_STABLE_SECRET = 36,
-DEVCONF_USE_OIF_ADDRS_ONLY = 37,
-DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38,
-DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39,
-DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40,
-DEVCONF_DROP_UNSOLICITED_NA = 41,
-DEVCONF_KEEP_ADDR_ON_DOWN = 42,
-DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43,
-DEVCONF_SEG6_ENABLED = 44,
-DEVCONF_SEG6_REQUIRE_HMAC = 45,
-DEVCONF_ENHANCED_DAD = 46,
-DEVCONF_ADDR_GEN_MODE = 47,
-DEVCONF_DISABLE_POLICY = 48,
-DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49,
-DEVCONF_NDISC_TCLASS = 50,
-DEVCONF_RPL_SEG_ENABLED = 51,
-DEVCONF_RA_DEFRTR_METRIC = 52,
-DEVCONF_IOAM6_ENABLED = 53,
-DEVCONF_IOAM6_ID = 54,
-DEVCONF_IOAM6_ID_WIDE = 55,
-DEVCONF_NDISC_EVICT_NOCARRIER = 56,
-DEVCONF_ACCEPT_UNTRACKED_NA = 57,
-DEVCONF_MAX = 58,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum socket_state {
-SS_FREE = 0,
-SS_UNCONNECTED = 1,
-SS_CONNECTING = 2,
-SS_CONNECTED = 3,
-SS_DISCONNECTING = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct pollfd {
-pub fd: crate::ctypes::c_int,
-pub events: crate::ctypes::c_short,
-pub revents: crate::ctypes::c_short,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prctl_mm_map {
-pub start_code: __u64,
-pub end_code: __u64,
-pub start_data: __u64,
-pub end_data: __u64,
-pub start_brk: __u64,
-pub brk: __u64,
-pub start_stack: __u64,
-pub arg_start: __u64,
-pub arg_end: __u64,
-pub env_start: __u64,
-pub env_end: __u64,
-pub auxv: *mut __u64,
-pub auxv_size: __u32,
-pub exe_fd: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rand_pool_info {
-pub entropy_count: crate::ctypes::c_int,
-pub buf_size: crate::ctypes::c_int,
-pub buf: __IncompleteArrayField<__u32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_timespec {
-pub tv_sec: __kernel_time64_t,
-pub tv_nsec: crate::ctypes::c_longlong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_itimerspec {
-pub it_interval: __kernel_timespec,
-pub it_value: __kernel_timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timeval {
-pub tv_sec: __kernel_long_t,
-pub tv_usec: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_itimerval {
-pub it_interval: __kernel_old_timeval,
-pub it_value: __kernel_old_timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sock_timeval {
-pub tv_sec: __s64,
-pub tv_usec: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timeval {
-pub tv_sec: __kernel_old_time_t,
-pub tv_usec: __kernel_suseconds_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerspec {
-pub it_interval: timespec,
-pub it_value: timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerval {
-pub it_interval: timeval,
-pub it_value: timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timezone {
-pub tz_minuteswest: crate::ctypes::c_int,
-pub tz_dsttime: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rusage {
-pub ru_utime: __kernel_old_timeval,
-pub ru_stime: __kernel_old_timeval,
-pub ru_maxrss: __kernel_long_t,
-pub ru_ixrss: __kernel_long_t,
-pub ru_idrss: __kernel_long_t,
-pub ru_isrss: __kernel_long_t,
-pub ru_minflt: __kernel_long_t,
-pub ru_majflt: __kernel_long_t,
-pub ru_nswap: __kernel_long_t,
-pub ru_inblock: __kernel_long_t,
-pub ru_oublock: __kernel_long_t,
-pub ru_msgsnd: __kernel_long_t,
-pub ru_msgrcv: __kernel_long_t,
-pub ru_nsignals: __kernel_long_t,
-pub ru_nvcsw: __kernel_long_t,
-pub ru_nivcsw: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit {
-pub rlim_cur: __kernel_ulong_t,
-pub rlim_max: __kernel_ulong_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit64 {
-pub rlim_cur: __u64,
-pub rlim_max: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct clone_args {
-pub flags: __u64,
-pub pidfd: __u64,
-pub child_tid: __u64,
-pub parent_tid: __u64,
-pub exit_signal: __u64,
-pub stack: __u64,
-pub stack_size: __u64,
-pub tls: __u64,
-pub set_tid: __u64,
-pub set_tid_size: __u64,
-pub cgroup: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigset_t {
-pub sig: [crate::ctypes::c_ulong; 4usize],
-}
-pub type old_sigset_t = crate::ctypes::c_ulong;
-pub type __signalfn_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __sighandler_t = __signalfn_t;
-pub type __restorefn_t = ::core::option::Option<unsafe extern "C" fn()>;
-pub type __sigrestore_t = __restorefn_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaction {
-pub sa_flags: crate::ctypes::c_uint,
-pub sa_handler: __sighandler_t,
-pub sa_mask: sigset_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaltstack {
-pub ss_sp: *mut crate::ctypes::c_void,
-pub ss_size: __kernel_size_t,
-pub ss_flags: crate::ctypes::c_int,
-}
-pub type stack_t = sigaltstack;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigval {
-pub sival_int: crate::ctypes::c_int,
-pub sival_ptr: *mut crate::ctypes::c_void,
-}
-pub type sigval_t = sigval;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields {
-pub _kill: __sifields__bindgen_ty_1,
-pub _timer: __sifields__bindgen_ty_2,
-pub _rt: __sifields__bindgen_ty_3,
-pub _sigchld: __sifields__bindgen_ty_4,
-pub _sigfault: __sifields__bindgen_ty_5,
-pub _sigpoll: __sifields__bindgen_ty_6,
-pub _sigsys: __sifields__bindgen_ty_7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_1 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_2 {
-pub _tid: __kernel_timer_t,
-pub _overrun: crate::ctypes::c_int,
-pub _sigval: sigval_t,
-pub _sys_private: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_3 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _sigval: sigval_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_4 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _status: crate::ctypes::c_int,
-pub _utime: __kernel_clock_t,
-pub _stime: __kernel_clock_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_5 {
-pub _addr: *mut crate::ctypes::c_void,
-pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields__bindgen_ty_5__bindgen_ty_1 {
-pub _trapno: crate::ctypes::c_int,
-pub _addr_lsb: crate::ctypes::c_short,
-pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1,
-pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2,
-pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {
-pub _dummy_bnd: [crate::ctypes::c_char; 4usize],
-pub _lower: *mut crate::ctypes::c_void,
-pub _upper: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 {
-pub _dummy_pkey: [crate::ctypes::c_char; 4usize],
-pub _pkey: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 {
-pub _data: crate::ctypes::c_ulong,
-pub _type: __u32,
-pub _flags: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_6 {
-pub _band: crate::ctypes::c_long,
-pub _fd: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_7 {
-pub _call_addr: *mut crate::ctypes::c_void,
-pub _syscall: crate::ctypes::c_int,
-pub _arch: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union siginfo__bindgen_ty_1 {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1,
-pub _si_pad: [crate::ctypes::c_int; 32usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo__bindgen_ty_1__bindgen_ty_1 {
-pub si_signo: crate::ctypes::c_int,
-pub si_code: crate::ctypes::c_int,
-pub si_errno: crate::ctypes::c_int,
-pub _sifields: __sifields,
-}
-pub type siginfo_t = siginfo;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sigevent {
-pub sigev_value: sigval_t,
-pub sigev_signo: crate::ctypes::c_int,
-pub sigev_notify: crate::ctypes::c_int,
-pub _sigev_un: sigevent__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigevent__bindgen_ty_1 {
-pub _pad: [crate::ctypes::c_int; 13usize],
-pub _tid: crate::ctypes::c_int,
-pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigevent__bindgen_ty_1__bindgen_ty_1 {
-pub _function: ::core::option::Option<unsafe extern "C" fn(arg1: sigval_t)>,
-pub _attribute: *mut crate::ctypes::c_void,
-}
-pub type sigevent_t = sigevent;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx_timestamp {
-pub tv_sec: __s64,
-pub tv_nsec: __u32,
-pub __reserved: __s32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx {
-pub stx_mask: __u32,
-pub stx_blksize: __u32,
-pub stx_attributes: __u64,
-pub stx_nlink: __u32,
-pub stx_uid: __u32,
-pub stx_gid: __u32,
-pub stx_mode: __u16,
-pub __spare0: [__u16; 1usize],
-pub stx_ino: __u64,
-pub stx_size: __u64,
-pub stx_blocks: __u64,
-pub stx_attributes_mask: __u64,
-pub stx_atime: statx_timestamp,
-pub stx_btime: statx_timestamp,
-pub stx_ctime: statx_timestamp,
-pub stx_mtime: statx_timestamp,
-pub stx_rdev_major: __u32,
-pub stx_rdev_minor: __u32,
-pub stx_dev_major: __u32,
-pub stx_dev_minor: __u32,
-pub stx_mnt_id: __u64,
-pub stx_dio_mem_align: __u32,
-pub stx_dio_offset_align: __u32,
-pub __spare3: [__u64; 12usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sysinfo {
-pub uptime: __kernel_long_t,
-pub loads: [__kernel_ulong_t; 3usize],
-pub totalram: __kernel_ulong_t,
-pub freeram: __kernel_ulong_t,
-pub sharedram: __kernel_ulong_t,
-pub bufferram: __kernel_ulong_t,
-pub totalswap: __kernel_ulong_t,
-pub freeswap: __kernel_ulong_t,
-pub procs: __u16,
-pub pad: __u16,
-pub totalhigh: __kernel_ulong_t,
-pub freehigh: __kernel_ulong_t,
-pub mem_unit: __u32,
-pub _f: [crate::ctypes::c_char; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcphdr {
-pub source: __be16,
-pub dest: __be16,
-pub seq: __be32,
-pub ack_seq: __be32,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub window: __be16,
-pub check: __sum16,
-pub urg_ptr: __be16,
-}
-impl tcphdr {
-#[inline]
-pub fn doff(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_doff(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn res1(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_res1(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn cwr(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_cwr(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ece(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ece(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn urg(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_urg(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(10usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ack(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ack(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(11usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn psh(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_psh(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(12usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn rst(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_rst(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(13usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn syn(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_syn(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(14usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn fin(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_fin(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(15usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(doff: __u16, res1: __u16, cwr: __u16, ece: __u16, urg: __u16, ack: __u16, psh: __u16, rst: __u16, syn: __u16, fin: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let doff: u16 = unsafe { ::core::mem::transmute(doff) };
-doff as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let res1: u16 = unsafe { ::core::mem::transmute(res1) };
-res1 as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let cwr: u16 = unsafe { ::core::mem::transmute(cwr) };
-cwr as u64
-});
-__bindgen_bitfield_unit.set(9usize, 1u8, {
-let ece: u16 = unsafe { ::core::mem::transmute(ece) };
-ece as u64
-});
-__bindgen_bitfield_unit.set(10usize, 1u8, {
-let urg: u16 = unsafe { ::core::mem::transmute(urg) };
-urg as u64
-});
-__bindgen_bitfield_unit.set(11usize, 1u8, {
-let ack: u16 = unsafe { ::core::mem::transmute(ack) };
-ack as u64
-});
-__bindgen_bitfield_unit.set(12usize, 1u8, {
-let psh: u16 = unsafe { ::core::mem::transmute(psh) };
-psh as u64
-});
-__bindgen_bitfield_unit.set(13usize, 1u8, {
-let rst: u16 = unsafe { ::core::mem::transmute(rst) };
-rst as u64
-});
-__bindgen_bitfield_unit.set(14usize, 1u8, {
-let syn: u16 = unsafe { ::core::mem::transmute(syn) };
-syn as u64
-});
-__bindgen_bitfield_unit.set(15usize, 1u8, {
-let fin: u16 = unsafe { ::core::mem::transmute(fin) };
-fin as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union tcp_word_hdr {
-pub hdr: tcphdr,
-pub words: [__be32; 5usize],
-}
-pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR;
-pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE;
-pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG;
-pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK;
-pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH;
-pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST;
-pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN;
-pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN;
-pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS;
-pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-TCP_FLAG_CWR = 8388608,
-TCP_FLAG_ECE = 4194304,
-TCP_FLAG_URG = 2097152,
-TCP_FLAG_ACK = 1048576,
-TCP_FLAG_PSH = 524288,
-TCP_FLAG_RST = 262144,
-TCP_FLAG_SYN = 131072,
-TCP_FLAG_FIN = 65536,
-TCP_RESERVED_BITS = 251658240,
-TCP_DATA_OFFSET = 4026531840,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_opt {
-pub opt_code: __u32,
-pub opt_val: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_window {
-pub snd_wl1: __u32,
-pub snd_wnd: __u32,
-pub max_window: __u32,
-pub rcv_wnd: __u32,
-pub rcv_wup: __u32,
-}
-pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE;
-pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE;
-pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE;
-pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-TCP_NO_QUEUE = 0,
-TCP_RECV_QUEUE = 1,
-TCP_SEND_QUEUE = 2,
-TCP_QUEUES_NR = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_fastopen_client_fail {
-TFO_STATUS_UNSPEC = 0,
-TFO_COOKIE_UNAVAILABLE = 1,
-TFO_DATA_NOT_ACKED = 2,
-TFO_SYN_RETRANSMITTED = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_ca_state {
-TCP_CA_Open = 0,
-TCP_CA_Disorder = 1,
-TCP_CA_CWR = 2,
-TCP_CA_Recovery = 3,
-TCP_CA_Loss = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_info {
-pub tcpi_state: __u8,
-pub tcpi_ca_state: __u8,
-pub tcpi_retransmits: __u8,
-pub tcpi_probes: __u8,
-pub tcpi_backoff: __u8,
-pub tcpi_options: __u8,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub tcpi_rto: __u32,
-pub tcpi_ato: __u32,
-pub tcpi_snd_mss: __u32,
-pub tcpi_rcv_mss: __u32,
-pub tcpi_unacked: __u32,
-pub tcpi_sacked: __u32,
-pub tcpi_lost: __u32,
-pub tcpi_retrans: __u32,
-pub tcpi_fackets: __u32,
-pub tcpi_last_data_sent: __u32,
-pub tcpi_last_ack_sent: __u32,
-pub tcpi_last_data_recv: __u32,
-pub tcpi_last_ack_recv: __u32,
-pub tcpi_pmtu: __u32,
-pub tcpi_rcv_ssthresh: __u32,
-pub tcpi_rtt: __u32,
-pub tcpi_rttvar: __u32,
-pub tcpi_snd_ssthresh: __u32,
-pub tcpi_snd_cwnd: __u32,
-pub tcpi_advmss: __u32,
-pub tcpi_reordering: __u32,
-pub tcpi_rcv_rtt: __u32,
-pub tcpi_rcv_space: __u32,
-pub tcpi_total_retrans: __u32,
-pub tcpi_pacing_rate: __u64,
-pub tcpi_max_pacing_rate: __u64,
-pub tcpi_bytes_acked: __u64,
-pub tcpi_bytes_received: __u64,
-pub tcpi_segs_out: __u32,
-pub tcpi_segs_in: __u32,
-pub tcpi_notsent_bytes: __u32,
-pub tcpi_min_rtt: __u32,
-pub tcpi_data_segs_in: __u32,
-pub tcpi_data_segs_out: __u32,
-pub tcpi_delivery_rate: __u64,
-pub tcpi_busy_time: __u64,
-pub tcpi_rwnd_limited: __u64,
-pub tcpi_sndbuf_limited: __u64,
-pub tcpi_delivered: __u32,
-pub tcpi_delivered_ce: __u32,
-pub tcpi_bytes_sent: __u64,
-pub tcpi_bytes_retrans: __u64,
-pub tcpi_dsack_dups: __u32,
-pub tcpi_reord_seen: __u32,
-pub tcpi_rcv_ooopack: __u32,
-pub tcpi_snd_wnd: __u32,
-pub tcpi_rcv_wnd: __u32,
-pub tcpi_rehash: __u32,
-}
-impl tcp_info {
-#[inline]
-pub fn tcpi_snd_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_snd_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_rcv_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_fastopen_client_fail(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) };
-tcpi_snd_wscale as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) };
-tcpi_rcv_wscale as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) };
-tcpi_delivery_rate_app_limited as u64
-});
-__bindgen_bitfield_unit.set(9usize, 2u8, {
-let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) };
-tcpi_fastopen_client_fail as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD;
-pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY;
-pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED;
-pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED;
-pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT;
-pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS;
-pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE;
-pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE;
-pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND;
-pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING;
-pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT;
-pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS;
-pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT;
-pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE;
-pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE;
-pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH;
-pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED;
-pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE;
-pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT;
-pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS;
-pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS;
-pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN;
-pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT;
-pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH;
-pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT;
-pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
-pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
-pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-TCP_NLA_PAD = 0,
-TCP_NLA_BUSY = 1,
-TCP_NLA_RWND_LIMITED = 2,
-TCP_NLA_SNDBUF_LIMITED = 3,
-TCP_NLA_DATA_SEGS_OUT = 4,
-TCP_NLA_TOTAL_RETRANS = 5,
-TCP_NLA_PACING_RATE = 6,
-TCP_NLA_DELIVERY_RATE = 7,
-TCP_NLA_SND_CWND = 8,
-TCP_NLA_REORDERING = 9,
-TCP_NLA_MIN_RTT = 10,
-TCP_NLA_RECUR_RETRANS = 11,
-TCP_NLA_DELIVERY_RATE_APP_LMT = 12,
-TCP_NLA_SNDQ_SIZE = 13,
-TCP_NLA_CA_STATE = 14,
-TCP_NLA_SND_SSTHRESH = 15,
-TCP_NLA_DELIVERED = 16,
-TCP_NLA_DELIVERED_CE = 17,
-TCP_NLA_BYTES_SENT = 18,
-TCP_NLA_BYTES_RETRANS = 19,
-TCP_NLA_DSACK_DUPS = 20,
-TCP_NLA_REORD_SEEN = 21,
-TCP_NLA_SRTT = 22,
-TCP_NLA_TIMEOUT_REHASH = 23,
-TCP_NLA_BYTES_NOTSENT = 24,
-TCP_NLA_EDT = 25,
-TCP_NLA_TTL = 26,
-TCP_NLA_REHASH = 27,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct tcp_md5sig {
-pub tcpm_addr: __kernel_sockaddr_storage,
-pub tcpm_flags: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_ifindex: crate::ctypes::c_int,
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_diag_md5sig {
-pub tcpm_family: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_addr: [__be32; 4usize],
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_zerocopy_receive {
-pub address: __u64,
-pub length: __u32,
-pub recv_skip_hint: __u32,
-pub inq: __u32,
-pub err: __s32,
-pub copybuf_address: __u64,
-pub copybuf_len: __s32,
-pub flags: __u32,
-pub msg_control: __u64,
-pub msg_controllen: __u64,
-pub msg_flags: __u32,
-pub reserved: __u32,
-}
-pub type cc_t = crate::ctypes::c_uchar;
-pub type speed_t = crate::ctypes::c_uint;
-pub type tcflag_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 23usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios2 {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 23usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ktermios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 23usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sgttyb {
-pub sg_ispeed: crate::ctypes::c_char,
-pub sg_ospeed: crate::ctypes::c_char,
-pub sg_erase: crate::ctypes::c_char,
-pub sg_kill: crate::ctypes::c_char,
-pub sg_flags: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tchars {
-pub t_intrc: crate::ctypes::c_char,
-pub t_quitc: crate::ctypes::c_char,
-pub t_startc: crate::ctypes::c_char,
-pub t_stopc: crate::ctypes::c_char,
-pub t_eofc: crate::ctypes::c_char,
-pub t_brkc: crate::ctypes::c_char,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ltchars {
-pub t_suspc: crate::ctypes::c_char,
-pub t_dsuspc: crate::ctypes::c_char,
-pub t_rprntc: crate::ctypes::c_char,
-pub t_flushc: crate::ctypes::c_char,
-pub t_werasc: crate::ctypes::c_char,
-pub t_lnextc: crate::ctypes::c_char,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct winsize {
-pub ws_row: crate::ctypes::c_ushort,
-pub ws_col: crate::ctypes::c_ushort,
-pub ws_xpixel: crate::ctypes::c_ushort,
-pub ws_ypixel: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termio {
-pub c_iflag: crate::ctypes::c_ushort,
-pub c_oflag: crate::ctypes::c_ushort,
-pub c_cflag: crate::ctypes::c_ushort,
-pub c_lflag: crate::ctypes::c_ushort,
-pub c_line: crate::ctypes::c_char,
-pub c_cc: [crate::ctypes::c_uchar; 23usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iovec {
-pub iov_base: *mut crate::ctypes::c_void,
-pub iov_len: __kernel_size_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_un {
-pub sun_family: __kernel_sa_family_t,
-pub sun_path: [crate::ctypes::c_char; 108usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct oldold_utsname {
-pub sysname: [crate::ctypes::c_char; 9usize],
-pub nodename: [crate::ctypes::c_char; 9usize],
-pub release: [crate::ctypes::c_char; 9usize],
-pub version: [crate::ctypes::c_char; 9usize],
-pub machine: [crate::ctypes::c_char; 9usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct old_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct new_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-pub domainname: [crate::ctypes::c_char; 65usize],
-}
-impl membarrier_cmd {
-pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd {
-MEMBARRIER_CMD_QUERY = 0,
-MEMBARRIER_CMD_GLOBAL = 1,
-MEMBARRIER_CMD_GLOBAL_EXPEDITED = 2,
-MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = 4,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED = 8,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = 16,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = 32,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = 64,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = 128,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = 256,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd_flag {
-MEMBARRIER_CMD_FLAG_CPU = 1,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg {
-pub event: __u8,
-pub reserved1: __u8,
-pub reserved2: __u16,
-pub reserved3: __u32,
-pub arg: uffd_msg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1 {
-pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1,
-pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2,
-pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3,
-pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4,
-pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 {
-pub flags: __u64,
-pub address: __u64,
-pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {
-pub ptid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 {
-pub ufd: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 {
-pub from: __u64,
-pub to: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 {
-pub start: __u64,
-pub end: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 {
-pub reserved1: __u64,
-pub reserved2: __u64,
-pub reserved3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_api {
-pub api: __u64,
-pub features: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_range {
-pub start: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_register {
-pub range: uffdio_range,
-pub mode: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_copy {
-pub dst: __u64,
-pub src: __u64,
-pub len: __u64,
-pub mode: __u64,
-pub copy: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_zeropage {
-pub range: uffdio_range,
-pub mode: __u64,
-pub zeropage: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_writeprotect {
-pub range: uffdio_range,
-pub mode: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_continue {
-pub range: uffdio_range,
-pub mode: __u64,
-pub mapped: __s64,
-}
-#[repr(C)]
-pub struct io_uring_sqe {
-pub opcode: __u8,
-pub flags: __u8,
-pub ioprio: __u16,
-pub fd: __s32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1,
-pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2,
-pub len: __u32,
-pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3,
-pub user_data: __u64,
-pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4,
-pub personality: __u16,
-pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5,
-pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_1 {
-pub off: __u64,
-pub addr2: __u64,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 {
-pub cmd_op: __u32,
-pub __pad1: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_2 {
-pub addr: __u64,
-pub splice_off_in: __u64,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_3 {
-pub rw_flags: __kernel_rwf_t,
-pub fsync_flags: __u32,
-pub poll_events: __u16,
-pub poll32_events: __u32,
-pub sync_range_flags: __u32,
-pub msg_flags: __u32,
-pub timeout_flags: __u32,
-pub accept_flags: __u32,
-pub cancel_flags: __u32,
-pub open_flags: __u32,
-pub statx_flags: __u32,
-pub fadvise_advice: __u32,
-pub splice_flags: __u32,
-pub rename_flags: __u32,
-pub unlink_flags: __u32,
-pub hardlink_flags: __u32,
-pub xattr_flags: __u32,
-pub msg_ring_flags: __u32,
-pub uring_cmd_flags: __u32,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_4 {
-pub buf_index: __u16,
-pub buf_group: __u16,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_5 {
-pub splice_fd_in: __s32,
-pub file_index: __u32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 {
-pub addr_len: __u16,
-pub __pad3: [__u16; 1usize],
-}
-#[repr(C)]
-pub struct io_uring_sqe__bindgen_ty_6 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_sqe__bindgen_ty_6__bindgen_ty_1>,
-pub cmd: __BindgenUnionField<[__u8; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 {
-pub addr3: __u64,
-pub __pad2: [__u64; 1usize],
-}
-pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT;
-pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT;
-pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT;
-pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT;
-pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT;
-pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT;
-pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-IOSQE_FIXED_FILE_BIT = 0,
-IOSQE_IO_DRAIN_BIT = 1,
-IOSQE_IO_LINK_BIT = 2,
-IOSQE_IO_HARDLINK_BIT = 3,
-IOSQE_ASYNC_BIT = 4,
-IOSQE_BUFFER_SELECT_BIT = 5,
-IOSQE_CQE_SKIP_SUCCESS_BIT = 6,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum io_uring_op {
-IORING_OP_NOP = 0,
-IORING_OP_READV = 1,
-IORING_OP_WRITEV = 2,
-IORING_OP_FSYNC = 3,
-IORING_OP_READ_FIXED = 4,
-IORING_OP_WRITE_FIXED = 5,
-IORING_OP_POLL_ADD = 6,
-IORING_OP_POLL_REMOVE = 7,
-IORING_OP_SYNC_FILE_RANGE = 8,
-IORING_OP_SENDMSG = 9,
-IORING_OP_RECVMSG = 10,
-IORING_OP_TIMEOUT = 11,
-IORING_OP_TIMEOUT_REMOVE = 12,
-IORING_OP_ACCEPT = 13,
-IORING_OP_ASYNC_CANCEL = 14,
-IORING_OP_LINK_TIMEOUT = 15,
-IORING_OP_CONNECT = 16,
-IORING_OP_FALLOCATE = 17,
-IORING_OP_OPENAT = 18,
-IORING_OP_CLOSE = 19,
-IORING_OP_FILES_UPDATE = 20,
-IORING_OP_STATX = 21,
-IORING_OP_READ = 22,
-IORING_OP_WRITE = 23,
-IORING_OP_FADVISE = 24,
-IORING_OP_MADVISE = 25,
-IORING_OP_SEND = 26,
-IORING_OP_RECV = 27,
-IORING_OP_OPENAT2 = 28,
-IORING_OP_EPOLL_CTL = 29,
-IORING_OP_SPLICE = 30,
-IORING_OP_PROVIDE_BUFFERS = 31,
-IORING_OP_REMOVE_BUFFERS = 32,
-IORING_OP_TEE = 33,
-IORING_OP_SHUTDOWN = 34,
-IORING_OP_RENAMEAT = 35,
-IORING_OP_UNLINKAT = 36,
-IORING_OP_MKDIRAT = 37,
-IORING_OP_SYMLINKAT = 38,
-IORING_OP_LINKAT = 39,
-IORING_OP_MSG_RING = 40,
-IORING_OP_FSETXATTR = 41,
-IORING_OP_SETXATTR = 42,
-IORING_OP_FGETXATTR = 43,
-IORING_OP_GETXATTR = 44,
-IORING_OP_SOCKET = 45,
-IORING_OP_URING_CMD = 46,
-IORING_OP_SEND_ZC = 47,
-IORING_OP_SENDMSG_ZC = 48,
-IORING_OP_LAST = 49,
-}
-pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA;
-pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IORING_MSG_DATA = 0,
-IORING_MSG_SEND_FD = 1,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_cqe {
-pub user_data: __u64,
-pub res: __s32,
-pub flags: __u32,
-pub big_cqe: __IncompleteArrayField<__u64>,
-}
-pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IORING_CQE_BUFFER_SHIFT = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_sqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub flags: __u32,
-pub dropped: __u32,
-pub array: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_cqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub overflow: __u32,
-pub cqes: __u32,
-pub flags: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_params {
-pub sq_entries: __u32,
-pub cq_entries: __u32,
-pub flags: __u32,
-pub sq_thread_cpu: __u32,
-pub sq_thread_idle: __u32,
-pub features: __u32,
-pub wq_fd: __u32,
-pub resv: [__u32; 3usize],
-pub sq_off: io_sqring_offsets,
-pub cq_off: io_cqring_offsets,
-}
-pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS;
-pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS;
-pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES;
-pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES;
-pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD;
-pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD;
-pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE;
-pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC;
-pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE;
-pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY;
-pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY;
-pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS;
-pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS;
-pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2;
-pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2;
-pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2;
-pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE;
-pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF;
-pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF;
-pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS;
-pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS;
-pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS;
-pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING;
-pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING;
-pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL;
-pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE;
-pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IORING_REGISTER_BUFFERS = 0,
-IORING_UNREGISTER_BUFFERS = 1,
-IORING_REGISTER_FILES = 2,
-IORING_UNREGISTER_FILES = 3,
-IORING_REGISTER_EVENTFD = 4,
-IORING_UNREGISTER_EVENTFD = 5,
-IORING_REGISTER_FILES_UPDATE = 6,
-IORING_REGISTER_EVENTFD_ASYNC = 7,
-IORING_REGISTER_PROBE = 8,
-IORING_REGISTER_PERSONALITY = 9,
-IORING_UNREGISTER_PERSONALITY = 10,
-IORING_REGISTER_RESTRICTIONS = 11,
-IORING_REGISTER_ENABLE_RINGS = 12,
-IORING_REGISTER_FILES2 = 13,
-IORING_REGISTER_FILES_UPDATE2 = 14,
-IORING_REGISTER_BUFFERS2 = 15,
-IORING_REGISTER_BUFFERS_UPDATE = 16,
-IORING_REGISTER_IOWQ_AFF = 17,
-IORING_UNREGISTER_IOWQ_AFF = 18,
-IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
-IORING_REGISTER_RING_FDS = 20,
-IORING_UNREGISTER_RING_FDS = 21,
-IORING_REGISTER_PBUF_RING = 22,
-IORING_UNREGISTER_PBUF_RING = 23,
-IORING_REGISTER_SYNC_CANCEL = 24,
-IORING_REGISTER_FILE_ALLOC_RANGE = 25,
-IORING_REGISTER_LAST = 26,
-}
-pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND;
-pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IO_WQ_BOUND = 0,
-IO_WQ_UNBOUND = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_files_update {
-pub offset: __u32,
-pub resv: __u32,
-pub fds: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_register {
-pub nr: __u32,
-pub flags: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub tags: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update2 {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-pub tags: __u64,
-pub nr: __u32,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_slot {
-pub tag: __u64,
-pub resv: [__u64; 3usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_register {
-pub nr_slots: __u32,
-pub resv: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub resv3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_probe_op {
-pub op: __u8,
-pub resv: __u8,
-pub flags: __u16,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_probe {
-pub last_op: __u8,
-pub ops_len: __u8,
-pub resv: __u16,
-pub resv2: [__u32; 3usize],
-pub ops: __IncompleteArrayField<io_uring_probe_op>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct io_uring_restriction {
-pub opcode: __u16,
-pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1,
-pub resv: __u8,
-pub resv2: [__u32; 3usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_restriction__bindgen_ty_1 {
-pub register_op: __u8,
-pub sqe_op: __u8,
-pub sqe_flags: __u8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf {
-pub addr: __u64,
-pub len: __u32,
-pub bid: __u16,
-pub resv: __u16,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring {
-pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1>,
-pub bufs: __BindgenUnionField<[io_uring_buf; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 {
-pub resv1: __u64,
-pub resv2: __u32,
-pub resv3: __u16,
-pub tail: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_reg {
-pub ring_addr: __u64,
-pub ring_entries: __u32,
-pub bgid: __u16,
-pub pad: __u16,
-pub resv: [__u64; 3usize],
-}
-pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP;
-pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP;
-pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED;
-pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED;
-pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IORING_RESTRICTION_REGISTER_OP = 0,
-IORING_RESTRICTION_SQE_OP = 1,
-IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2,
-IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3,
-IORING_RESTRICTION_LAST = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_getevents_arg {
-pub sigmask: __u64,
-pub sigmask_sz: __u32,
-pub pad: __u32,
-pub ts: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sync_cancel_reg {
-pub addr: __u64,
-pub fd: __s32,
-pub flags: __u32,
-pub timeout: __kernel_timespec,
-pub pad: [__u64; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_file_index_range {
-pub off: __u32,
-pub len: __u32,
-pub resv: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_recvmsg_out {
-pub namelen: __u32,
-pub controllen: __u32,
-pub payloadlen: __u32,
-pub flags: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr {
-pub __storage: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct linger {
-pub l_onoff: crate::ctypes::c_int,
-pub l_linger: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct linux_dirent64 {
-pub d_ino: crate::ctypes::c_ulonglong,
-pub d_off: crate::ctypes::c_longlong,
-pub d_reclen: __u16,
-pub d_type: __u8,
-pub d_name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-pub type socklen_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct stat {
-pub st_dev: crate::ctypes::c_uint,
-pub st_pad1: [crate::ctypes::c_long; 3usize],
-pub st_ino: __kernel_ino_t,
-pub st_mode: __kernel_mode_t,
-pub st_nlink: __u32,
-pub st_uid: __kernel_uid32_t,
-pub st_gid: __kernel_gid32_t,
-pub st_rdev: crate::ctypes::c_uint,
-pub st_pad2: [crate::ctypes::c_long; 2usize],
-pub st_size: crate::ctypes::c_long,
-pub st_pad3: crate::ctypes::c_long,
-pub st_atime: crate::ctypes::c_long,
-pub st_atime_nsec: crate::ctypes::c_long,
-pub st_mtime: crate::ctypes::c_long,
-pub st_mtime_nsec: crate::ctypes::c_long,
-pub st_ctime: crate::ctypes::c_long,
-pub st_ctime_nsec: crate::ctypes::c_long,
-pub st_blksize: crate::ctypes::c_long,
-pub st_blocks: crate::ctypes::c_long,
-pub st_pad4: [crate::ctypes::c_long; 14usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct stat64 {
-pub st_dev: crate::ctypes::c_ulong,
-pub st_pad0: [crate::ctypes::c_ulong; 3usize],
-pub st_ino: crate::ctypes::c_ulonglong,
-pub st_mode: __kernel_mode_t,
-pub st_nlink: __u32,
-pub st_uid: __kernel_uid32_t,
-pub st_gid: __kernel_gid32_t,
-pub st_rdev: crate::ctypes::c_ulong,
-pub st_pad1: [crate::ctypes::c_ulong; 3usize],
-pub st_size: crate::ctypes::c_longlong,
-pub st_atime: crate::ctypes::c_long,
-pub st_atime_nsec: crate::ctypes::c_ulong,
-pub st_mtime: crate::ctypes::c_long,
-pub st_mtime_nsec: crate::ctypes::c_ulong,
-pub st_ctime: crate::ctypes::c_long,
-pub st_ctime_nsec: crate::ctypes::c_ulong,
-pub st_blksize: crate::ctypes::c_ulong,
-pub st_pad2: crate::ctypes::c_ulong,
-pub st_blocks: crate::ctypes::c_longlong,
-}
-pub type fsid_t = __kernel_fsid_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs {
-pub f_type: crate::ctypes::c_long,
-pub f_bsize: crate::ctypes::c_long,
-pub f_frsize: crate::ctypes::c_long,
-pub f_blocks: crate::ctypes::c_long,
-pub f_bfree: crate::ctypes::c_long,
-pub f_files: crate::ctypes::c_long,
-pub f_ffree: crate::ctypes::c_long,
-pub f_bavail: crate::ctypes::c_long,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: crate::ctypes::c_long,
-pub f_flags: crate::ctypes::c_long,
-pub f_spare: [crate::ctypes::c_long; 5usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs64 {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_frsize: __u32,
-pub __pad: __u32,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_bavail: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 5usize],
-}
-pub type __fsword_t = __u32;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct user_desc {
-pub entry_number: crate::ctypes::c_uint,
-pub base_addr: crate::ctypes::c_uint,
-pub limit: crate::ctypes::c_uint,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub __bindgen_padding_0: [u8; 3usize],
-}
-impl user_desc {
-#[inline]
-pub fn seg_32bit(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_32bit(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn contents(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 2u8) as u32) }
-}
-#[inline]
-pub fn set_contents(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(1usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn read_exec_only(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_read_exec_only(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(3usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn limit_in_pages(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_limit_in_pages(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn seg_not_present(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_not_present(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(5usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn useable(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_useable(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(6usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(seg_32bit: crate::ctypes::c_uint, contents: crate::ctypes::c_uint, read_exec_only: crate::ctypes::c_uint, limit_in_pages: crate::ctypes::c_uint, seg_not_present: crate::ctypes::c_uint, useable: crate::ctypes::c_uint) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 1u8, {
-let seg_32bit: u32 = unsafe { ::core::mem::transmute(seg_32bit) };
-seg_32bit as u64
-});
-__bindgen_bitfield_unit.set(1usize, 2u8, {
-let contents: u32 = unsafe { ::core::mem::transmute(contents) };
-contents as u64
-});
-__bindgen_bitfield_unit.set(3usize, 1u8, {
-let read_exec_only: u32 = unsafe { ::core::mem::transmute(read_exec_only) };
-read_exec_only as u64
-});
-__bindgen_bitfield_unit.set(4usize, 1u8, {
-let limit_in_pages: u32 = unsafe { ::core::mem::transmute(limit_in_pages) };
-limit_in_pages as u64
-});
-__bindgen_bitfield_unit.set(5usize, 1u8, {
-let seg_not_present: u32 = unsafe { ::core::mem::transmute(seg_not_present) };
-seg_not_present as u64
-});
-__bindgen_bitfield_unit.set(6usize, 1u8, {
-let useable: u32 = unsafe { ::core::mem::transmute(useable) };
-useable as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct msghdr {
-pub msg_name: *mut crate::ctypes::c_void,
-pub msg_namelen: crate::ctypes::c_int,
-pub msg_iov: *mut iovec,
-pub msg_iovlen: size_t,
-pub msg_control: *mut crate::ctypes::c_void,
-pub msg_controllen: size_t,
-pub msg_flags: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct cmsghdr {
-pub cmsg_len: size_t,
-pub cmsg_level: crate::ctypes::c_int,
-pub cmsg_type: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ucred {
-pub pid: __u32,
-pub uid: __u32,
-pub gid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mmsghdr {
-pub msg_hdr: msghdr,
-pub msg_len: crate::ctypes::c_uint,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/mips/ioctl.rs b/vendor/linux-raw-sys-0.3.2/src/mips/ioctl.rs
deleted file mode 100644
index 6fe11cb89..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/mips/ioctl.rs
+++ /dev/null
@@ -1,1564 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const FIONREAD: u32 = 18047;
-pub const FIONBIO: u32 = 26238;
-pub const FIOCLEX: u32 = 26113;
-pub const FIONCLEX: u32 = 26114;
-pub const FIOASYNC: u32 = 26237;
-pub const FIOQSIZE: u32 = 26239;
-pub const TCXONC: u32 = 21510;
-pub const TCFLSH: u32 = 21511;
-pub const TIOCSCTTY: u32 = 21632;
-pub const TIOCSPGRP: u32 = 2147775606;
-pub const TIOCOUTQ: u32 = 29810;
-pub const TIOCSTI: u32 = 21618;
-pub const TIOCSWINSZ: u32 = 2148037735;
-pub const TIOCMGET: u32 = 29725;
-pub const TIOCMBIS: u32 = 29723;
-pub const TIOCMBIC: u32 = 29724;
-pub const TIOCMSET: u32 = 29722;
-pub const TIOCSSOFTCAR: u32 = 21634;
-pub const TIOCLINUX: u32 = 21635;
-pub const TIOCCONS: u32 = 2147775608;
-pub const TIOCSSERIAL: u32 = 21637;
-pub const TIOCPKT: u32 = 21616;
-pub const TIOCNOTTY: u32 = 21617;
-pub const TIOCSETD: u32 = 29697;
-pub const TIOCSBRK: u32 = 21543;
-pub const TIOCCBRK: u32 = 21544;
-pub const TIOCSPTLCK: u32 = 2147767345;
-pub const TIOCSIG: u32 = 2147767350;
-pub const TIOCVHANGUP: u32 = 21559;
-pub const TIOCSERCONFIG: u32 = 21640;
-pub const TIOCSERGWILD: u32 = 21641;
-pub const TIOCSERSWILD: u32 = 21642;
-pub const TIOCSLCKTRMIOS: u32 = 21644;
-pub const TIOCSERGSTRUCT: u32 = 21645;
-pub const TIOCSERGETLSR: u32 = 21646;
-pub const TIOCSERGETMULTI: u32 = 21647;
-pub const TIOCSERSETMULTI: u32 = 21648;
-pub const TIOCMIWAIT: u32 = 21649;
-pub const TCGETS: u32 = 21517;
-pub const TCGETA: u32 = 21505;
-pub const TCSBRK: u32 = 21509;
-pub const TCSBRKP: u32 = 21638;
-pub const TCSETA: u32 = 21506;
-pub const TCSETAF: u32 = 21508;
-pub const TCSETAW: u32 = 21507;
-pub const TIOCEXCL: u32 = 29709;
-pub const TIOCNXCL: u32 = 29710;
-pub const TIOCGDEV: u32 = 1074025522;
-pub const TIOCGEXCL: u32 = 1074025536;
-pub const TIOCGICOUNT: u32 = 21650;
-pub const TIOCGLCKTRMIOS: u32 = 21643;
-pub const TIOCGPGRP: u32 = 1074033783;
-pub const TIOCGPKT: u32 = 1074025528;
-pub const TIOCGPTLCK: u32 = 1074025529;
-pub const TIOCGPTN: u32 = 1074025520;
-pub const TIOCGPTPEER: u32 = 536892481;
-pub const TIOCGSERIAL: u32 = 21636;
-pub const TIOCGSID: u32 = 29718;
-pub const TIOCGSOFTCAR: u32 = 21633;
-pub const TIOCGWINSZ: u32 = 1074295912;
-pub const TCGETS2: u32 = 1076909098;
-pub const TCSETS: u32 = 21518;
-pub const TCSETS2: u32 = 2150650923;
-pub const TCSETSF: u32 = 21520;
-pub const TCSETSF2: u32 = 2150650925;
-pub const TCSETSW: u32 = 21519;
-pub const TCSETSW2: u32 = 2150650924;
-pub const TIOCGETD: u32 = 29696;
-pub const TIOCGETP: u32 = 29704;
-pub const TIOCGLTC: u32 = 29812;
-pub const MTIOCGET: u32 = 1075604738;
-pub const BLKSSZGET: u32 = 536875624;
-pub const BLKPBSZGET: u32 = 536875643;
-pub const BLKROSET: u32 = 536875613;
-pub const BLKROGET: u32 = 536875614;
-pub const BLKRRPART: u32 = 536875615;
-pub const BLKGETSIZE: u32 = 536875616;
-pub const BLKFLSBUF: u32 = 536875617;
-pub const BLKRASET: u32 = 536875618;
-pub const BLKRAGET: u32 = 536875619;
-pub const BLKFRASET: u32 = 536875620;
-pub const BLKFRAGET: u32 = 536875621;
-pub const BLKSECTSET: u32 = 536875622;
-pub const BLKSECTGET: u32 = 536875623;
-pub const BLKPG: u32 = 536875625;
-pub const BLKBSZGET: u32 = 1074008688;
-pub const BLKBSZSET: u32 = 2147750513;
-pub const BLKGETSIZE64: u32 = 1074008690;
-pub const BLKTRACESETUP: u32 = 3225948787;
-pub const BLKTRACESTART: u32 = 536875636;
-pub const BLKTRACESTOP: u32 = 536875637;
-pub const BLKTRACETEARDOWN: u32 = 536875638;
-pub const BLKDISCARD: u32 = 536875639;
-pub const BLKIOMIN: u32 = 536875640;
-pub const BLKIOOPT: u32 = 536875641;
-pub const BLKALIGNOFF: u32 = 536875642;
-pub const BLKDISCARDZEROES: u32 = 536875644;
-pub const BLKSECDISCARD: u32 = 536875645;
-pub const BLKROTATIONAL: u32 = 536875646;
-pub const BLKZEROOUT: u32 = 536875647;
-pub const UFFDIO_REGISTER: u32 = 3223366144;
-pub const UFFDIO_UNREGISTER: u32 = 1074833921;
-pub const UFFDIO_WAKE: u32 = 1074833922;
-pub const UFFDIO_COPY: u32 = 3223890435;
-pub const UFFDIO_ZEROPAGE: u32 = 3223366148;
-pub const UFFDIO_WRITEPROTECT: u32 = 3222841862;
-pub const UFFDIO_API: u32 = 3222841919;
-pub const NS_GET_USERNS: u32 = 536917761;
-pub const NS_GET_PARENT: u32 = 536917762;
-pub const NS_GET_NSTYPE: u32 = 536917763;
-pub const KDGETLED: u32 = 19249;
-pub const KDSETLED: u32 = 19250;
-pub const KDGKBLED: u32 = 19300;
-pub const KDSKBLED: u32 = 19301;
-pub const KDGKBTYPE: u32 = 19251;
-pub const KDADDIO: u32 = 19252;
-pub const KDDELIO: u32 = 19253;
-pub const KDENABIO: u32 = 19254;
-pub const KDDISABIO: u32 = 19255;
-pub const KDSETMODE: u32 = 19258;
-pub const KDGETMODE: u32 = 19259;
-pub const KDMKTONE: u32 = 19248;
-pub const KIOCSOUND: u32 = 19247;
-pub const GIO_CMAP: u32 = 19312;
-pub const PIO_CMAP: u32 = 19313;
-pub const GIO_FONT: u32 = 19296;
-pub const GIO_FONTX: u32 = 19307;
-pub const PIO_FONT: u32 = 19297;
-pub const PIO_FONTX: u32 = 19308;
-pub const PIO_FONTRESET: u32 = 19309;
-pub const GIO_SCRNMAP: u32 = 19264;
-pub const GIO_UNISCRNMAP: u32 = 19305;
-pub const PIO_SCRNMAP: u32 = 19265;
-pub const PIO_UNISCRNMAP: u32 = 19306;
-pub const GIO_UNIMAP: u32 = 19302;
-pub const PIO_UNIMAP: u32 = 19303;
-pub const PIO_UNIMAPCLR: u32 = 19304;
-pub const KDGKBMODE: u32 = 19268;
-pub const KDSKBMODE: u32 = 19269;
-pub const KDGKBMETA: u32 = 19298;
-pub const KDSKBMETA: u32 = 19299;
-pub const KDGKBENT: u32 = 19270;
-pub const KDSKBENT: u32 = 19271;
-pub const KDGKBSENT: u32 = 19272;
-pub const KDSKBSENT: u32 = 19273;
-pub const KDGKBDIACR: u32 = 19274;
-pub const KDGETKEYCODE: u32 = 19276;
-pub const KDSETKEYCODE: u32 = 19277;
-pub const KDSIGACCEPT: u32 = 19278;
-pub const VT_OPENQRY: u32 = 22016;
-pub const VT_GETMODE: u32 = 22017;
-pub const VT_SETMODE: u32 = 22018;
-pub const VT_GETSTATE: u32 = 22019;
-pub const VT_RELDISP: u32 = 22021;
-pub const VT_ACTIVATE: u32 = 22022;
-pub const VT_WAITACTIVE: u32 = 22023;
-pub const VT_DISALLOCATE: u32 = 22024;
-pub const VT_RESIZE: u32 = 22025;
-pub const VT_RESIZEX: u32 = 22026;
-pub const FIOSETOWN: u32 = 2147772028;
-pub const FIOGETOWN: u32 = 1074030203;
-pub const SIOCATMARK: u32 = 1074033415;
-pub const SIOCGSTAMP: u32 = 35078;
-pub const TIOCINQ: u32 = 18047;
-pub const SIOCADDRT: u32 = 35083;
-pub const SIOCDELRT: u32 = 35084;
-pub const SIOCGIFNAME: u32 = 35088;
-pub const SIOCSIFLINK: u32 = 35089;
-pub const SIOCGIFCONF: u32 = 35090;
-pub const SIOCGIFFLAGS: u32 = 35091;
-pub const SIOCSIFFLAGS: u32 = 35092;
-pub const SIOCGIFADDR: u32 = 35093;
-pub const SIOCSIFADDR: u32 = 35094;
-pub const SIOCGIFDSTADDR: u32 = 35095;
-pub const SIOCSIFDSTADDR: u32 = 35096;
-pub const SIOCGIFBRDADDR: u32 = 35097;
-pub const SIOCSIFBRDADDR: u32 = 35098;
-pub const SIOCGIFNETMASK: u32 = 35099;
-pub const SIOCSIFNETMASK: u32 = 35100;
-pub const SIOCGIFMETRIC: u32 = 35101;
-pub const SIOCSIFMETRIC: u32 = 35102;
-pub const SIOCGIFMEM: u32 = 35103;
-pub const SIOCSIFMEM: u32 = 35104;
-pub const SIOCGIFMTU: u32 = 35105;
-pub const SIOCSIFMTU: u32 = 35106;
-pub const SIOCSIFHWADDR: u32 = 35108;
-pub const SIOCGIFENCAP: u32 = 35109;
-pub const SIOCSIFENCAP: u32 = 35110;
-pub const SIOCGIFHWADDR: u32 = 35111;
-pub const SIOCGIFSLAVE: u32 = 35113;
-pub const SIOCSIFSLAVE: u32 = 35120;
-pub const SIOCADDMULTI: u32 = 35121;
-pub const SIOCDELMULTI: u32 = 35122;
-pub const SIOCDARP: u32 = 35155;
-pub const SIOCGARP: u32 = 35156;
-pub const SIOCSARP: u32 = 35157;
-pub const SIOCDRARP: u32 = 35168;
-pub const SIOCGRARP: u32 = 35169;
-pub const SIOCSRARP: u32 = 35170;
-pub const SIOCGIFMAP: u32 = 35184;
-pub const SIOCSIFMAP: u32 = 35185;
-pub const SIOCRTMSG: u32 = 35085;
-pub const SIOCSIFNAME: u32 = 35107;
-pub const SIOCGIFINDEX: u32 = 35123;
-pub const SIOGIFINDEX: u32 = 35123;
-pub const SIOCSIFPFLAGS: u32 = 35124;
-pub const SIOCGIFPFLAGS: u32 = 35125;
-pub const SIOCDIFADDR: u32 = 35126;
-pub const SIOCSIFHWBROADCAST: u32 = 35127;
-pub const SIOCGIFCOUNT: u32 = 35128;
-pub const SIOCGIFBR: u32 = 35136;
-pub const SIOCSIFBR: u32 = 35137;
-pub const SIOCGIFTXQLEN: u32 = 35138;
-pub const SIOCSIFTXQLEN: u32 = 35139;
-pub const SIOCADDDLCI: u32 = 35200;
-pub const SIOCDELDLCI: u32 = 35201;
-pub const SIOCDEVPRIVATE: u32 = 35312;
-pub const SIOCPROTOPRIVATE: u32 = 35296;
-pub const FIBMAP: u32 = 536870913;
-pub const FIGETBSZ: u32 = 536870914;
-pub const FIFREEZE: u32 = 3221510263;
-pub const FITHAW: u32 = 3221510264;
-pub const FITRIM: u32 = 3222820985;
-pub const FICLONE: u32 = 2147783689;
-pub const FICLONERANGE: u32 = 2149618701;
-pub const FIDEDUPERANGE: u32 = 3222836278;
-pub const FS_IOC_GETFLAGS: u32 = 1074030081;
-pub const FS_IOC_SETFLAGS: u32 = 2147771906;
-pub const FS_IOC_GETVERSION: u32 = 1074034177;
-pub const FS_IOC_SETVERSION: u32 = 2147776002;
-pub const FS_IOC_FIEMAP: u32 = 3223348747;
-pub const FS_IOC32_GETFLAGS: u32 = 1074030081;
-pub const FS_IOC32_SETFLAGS: u32 = 2147771906;
-pub const FS_IOC32_GETVERSION: u32 = 1074034177;
-pub const FS_IOC32_SETVERSION: u32 = 2147776002;
-pub const FS_IOC_FSGETXATTR: u32 = 1075599391;
-pub const FS_IOC_FSSETXATTR: u32 = 2149341216;
-pub const FS_IOC_GETFSLABEL: u32 = 1090556977;
-pub const FS_IOC_SETFSLABEL: u32 = 2164298802;
-pub const VIDIOC_SUBDEV_QUERYSTD: u32 = 1074288191;
-pub const AUTOFS_DEV_IOCTL_CLOSEMOUNT: u32 = 3222836085;
-pub const LIRC_SET_SEND_CARRIER: u32 = 2147772691;
-pub const AUTOFS_IOC_PROTOSUBVER: u32 = 1074041703;
-pub const PTP_SYS_OFFSET_PRECISE: u32 = 3225435400;
-pub const FSI_SCOM_WRITE: u32 = 3223352066;
-pub const ATM_GETCIRANGE: u32 = 2148295050;
-pub const DMA_BUF_SET_NAME_B: u32 = 2148033025;
-pub const RIO_CM_EP_GET_LIST_SIZE: u32 = 3221512961;
-pub const TUNSETPERSIST: u32 = 2147767499;
-pub const FS_IOC_GET_ENCRYPTION_POLICY: u32 = 2148296213;
-pub const CEC_RECEIVE: u32 = 3224920326;
-pub const MGSL_IOCGPARAMS: u32 = 1075866881;
-pub const ENI_SETMULT: u32 = 2148295015;
-pub const RIO_GET_EVENT_MASK: u32 = 1074031886;
-pub const LIRC_GET_MAX_TIMEOUT: u32 = 1074030857;
-pub const KVM_SET_BOOT_CPU_ID: u32 = 536915576;
-pub const KVM_SET_MP_STATE: u32 = 2147790489;
-pub const KVM_GET_MP_STATE: u32 = 1074048664;
-pub const KVM_SET_MEMORY_REGION: u32 = 2149101120;
-pub const KVM_GET_API_VERSION: u32 = 536915456;
-pub const KVM_S390_GET_SKEYS: u32 = 2151722674;
-pub const KVM_SET_ONE_REG: u32 = 2148576940;
-pub const KVM_IRQ_LINE_STATUS: u32 = 3221794407;
-pub const KVM_SET_USER_MEMORY_REGION: u32 = 2149625414;
-pub const KVM_S390_INTERRUPT: u32 = 2148576916;
-pub const KVM_TPR_ACCESS_REPORTING: u32 = 3223891602;
-pub const KVM_GET_FPU: u32 = 1073786508;
-pub const KVM_ASSIGN_SET_MSIX_ENTRY: u32 = 2148576884;
-pub const KVM_MEMORY_ENCRYPT_REG_REGION: u32 = 1074835131;
-pub const KVM_S390_UCAS_MAP: u32 = 2149101136;
-pub const KVM_ASSIGN_SET_INTX_MASK: u32 = 2151722660;
-pub const KVM_MEMORY_ENCRYPT_OP: u32 = 3221532346;
-pub const KVM_CREATE_PIT2: u32 = 2151722615;
-pub const KVM_S390_VCPU_FAULT: u32 = 2147790418;
-pub const KVM_REGISTER_COALESCED_MMIO: u32 = 2148576871;
-pub const KVM_SET_VAPIC_ADDR: u32 = 2148052627;
-pub const KVM_CREATE_DEVICE: u32 = 3222056672;
-pub const KVM_GET_IRQCHIP: u32 = 3255348834;
-pub const KVM_TRANSLATE: u32 = 3222843013;
-pub const KVM_S390_SET_INITIAL_PSW: u32 = 2148576918;
-pub const KVM_X86_SETUP_MCE: u32 = 2148052636;
-pub const KVM_DEASSIGN_PCI_DEVICE: u32 = 2151722610;
-pub const KVM_XEN_HVM_SET_ATTR: u32 = 2152246985;
-pub const KVM_GET_CLOCK: u32 = 1076932220;
-pub const KVM_SET_FPU: u32 = 2147528333;
-pub const KVM_KVMCLOCK_CTRL: u32 = 536915629;
-pub const KVM_PPC_GET_PVINFO: u32 = 2155916961;
-pub const KVM_X86_GET_MCE_CAP_SUPPORTED: u32 = 1074310813;
-pub const KVM_S390_GET_IRQ_STATE: u32 = 2149625526;
-pub const KVM_GET_DEVICE_ATTR: u32 = 2149101282;
-pub const KVM_S390_INITIAL_RESET: u32 = 536915607;
-pub const KVM_SET_REGS: u32 = 2165878402;
-pub const KVM_GET_TSC_KHZ: u32 = 536915619;
-pub const KVM_CHECK_EXTENSION: u32 = 536915459;
-pub const KVM_PPC_RESIZE_HPT_COMMIT: u32 = 1074835118;
-pub const KVM_GET_DIRTY_LOG: u32 = 2148576834;
-pub const KVM_S390_SET_IRQ_STATE: u32 = 2149625525;
-pub const KVM_S390_NORMAL_RESET: u32 = 536915651;
-pub const KVM_SET_SIGNAL_MASK: u32 = 2147790475;
-pub const KVM_XEN_VCPU_SET_ATTR: u32 = 2152246987;
-pub const KVM_SET_GSI_ROUTING: u32 = 2148052586;
-pub const KVM_CREATE_VCPU: u32 = 536915521;
-pub const KVM_S390_UCAS_UNMAP: u32 = 2149101137;
-pub const KVM_S390_STORE_STATUS: u32 = 2147790485;
-pub const KVM_UNREGISTER_COALESCED_MMIO: u32 = 2148576872;
-pub const KVM_ASSIGN_DEV_IRQ: u32 = 2151722608;
-pub const KVM_S390_PV_COMMAND: u32 = 3223367365;
-pub const KVM_S390_ENABLE_SIE: u32 = 536915462;
-pub const KVM_CLEAR_DIRTY_LOG: u32 = 3222843072;
-pub const KVM_GET_ONE_REG: u32 = 2148576939;
-pub const KVM_ARM_SET_DEVICE_ADDR: u32 = 2148576939;
-pub const KVM_DIRTY_TLB: u32 = 2148576938;
-pub const KVM_NMI: u32 = 536915610;
-pub const KVM_HYPERV_EVENTFD: u32 = 2149101245;
-pub const KVM_S390_MEM_OP: u32 = 2151722673;
-pub const KVM_PPC_SVM_OFF: u32 = 536915635;
-pub const KVM_PPC_RESIZE_HPT_PREPARE: u32 = 1074835117;
-pub const KVM_INTERRUPT: u32 = 2147790470;
-pub const KVM_XEN_HVM_GET_ATTR: u32 = 3225988808;
-pub const KVM_GET_SREGS: u32 = 1073786499;
-pub const KVM_SET_IDENTITY_MAP_ADDR: u32 = 2148052552;
-pub const KVM_GET_REGS: u32 = 1092136577;
-pub const KVM_S390_GET_CMMA_BITS: u32 = 3223367352;
-pub const KVM_CREATE_IRQCHIP: u32 = 536915552;
-pub const KVM_ASSIGN_PCI_DEVICE: u32 = 1077980777;
-pub const KVM_SET_NR_MMU_PAGES: u32 = 536915524;
-pub const KVM_IOEVENTFD: u32 = 2151722617;
-pub const KVM_RUN: u32 = 536915584;
-pub const KVM_S390_SET_SKEYS: u32 = 2151722675;
-pub const KVM_SET_DEVICE_ATTR: u32 = 2149101281;
-pub const KVM_DEASSIGN_DEV_IRQ: u32 = 2151722613;
-pub const KVM_SMI: u32 = 536915639;
-pub const KVM_SET_TSS_ADDR: u32 = 536915527;
-pub const KVM_GET_NR_MMU_PAGES: u32 = 536915525;
-pub const KVM_XEN_VCPU_GET_ATTR: u32 = 3225988810;
-pub const KVM_REINJECT_CONTROL: u32 = 536915569;
-pub const KVM_HAS_DEVICE_ATTR: u32 = 2149101283;
-pub const KVM_IRQFD: u32 = 2149625462;
-pub const KVM_S390_SET_CMMA_BITS: u32 = 2149625529;
-pub const KVM_SET_IRQCHIP: u32 = 1107865187;
-pub const KVM_SIGNAL_MSI: u32 = 2149625509;
-pub const KVM_GET_VCPU_MMAP_SIZE: u32 = 536915460;
-pub const KVM_CREATE_VM: u32 = 536915457;
-pub const KVM_S390_CLEAR_RESET: u32 = 536915652;
-pub const KVM_RESET_DIRTY_RINGS: u32 = 536915655;
-pub const KVM_ASSIGN_SET_MSIX_NR: u32 = 2148052595;
-pub const KVM_CREATE_PIT: u32 = 536915556;
-pub const KVM_SET_GUEST_DEBUG: u32 = 2148052635;
-pub const KVM_GET_REG_LIST: u32 = 3221794480;
-pub const KVM_ARM_VCPU_FINALIZE: u32 = 2147790530;
-pub const KVM_SET_CLOCK: u32 = 2150674043;
-pub const KVM_PPC_ALLOCATE_HTAB: u32 = 3221532327;
-pub const KVM_PPC_GET_SMMU_INFO: u32 = 1112583846;
-pub const KVM_SET_TSC_KHZ: u32 = 536915618;
-pub const KVM_S390_IRQ: u32 = 2152246964;
-pub const KVM_ENABLE_CAP: u32 = 2154344099;
-pub const KVM_IRQ_LINE: u32 = 2148052577;
-pub const KVM_SET_SREGS: u32 = 2147528324;
-pub const KVM_MEMORY_ENCRYPT_UNREG_REGION: u32 = 1074835132;
-pub const KVM_GET_STATS_FD: u32 = 536915662;
-pub const USBDEVFS_CLAIMINTERFACE: u32 = 1074025743;
-pub const CHIOMOVE: u32 = 2148819713;
-pub const SONYPI_IOCGBATFLAGS: u32 = 1073837575;
-pub const BTRFS_IOC_SYNC: u32 = 536908808;
-pub const VIDIOC_TRY_FMT: u32 = 3234616896;
-pub const LIRC_SET_REC_MODE: u32 = 2147772690;
-pub const VIDIOC_DQEVENT: u32 = 1082152537;
-pub const RPMSG_DESTROY_EPT_IOCTL: u32 = 536917250;
-pub const UVCIOC_CTRL_MAP: u32 = 3227022624;
-pub const VHOST_SET_BACKEND_FEATURES: u32 = 2148052773;
-pub const VHOST_VSOCK_SET_GUEST_CID: u32 = 2148052832;
-pub const UI_SET_KEYBIT: u32 = 2147767653;
-pub const LIRC_SET_REC_TIMEOUT: u32 = 2147772696;
-pub const FS_IOC_GET_ENCRYPTION_KEY_STATUS: u32 = 3229640218;
-pub const BTRFS_IOC_TREE_SEARCH_V2: u32 = 3228603409;
-pub const VHOST_SET_VRING_BASE: u32 = 2148052754;
-pub const RIO_ENABLE_DOORBELL_RANGE: u32 = 2148035849;
-pub const VIDIOC_TRY_EXT_CTRLS: u32 = 3222820425;
-pub const LIRC_GET_REC_MODE: u32 = 1074030850;
-pub const PPGETTIME: u32 = 1074294933;
-pub const BTRFS_IOC_RM_DEV: u32 = 2415957003;
-pub const ATM_SETBACKEND: u32 = 2147639794;
-pub const FSL_HV_IOCTL_PARTITION_START: u32 = 3222318851;
-pub const FBIO_WAITEVENT: u32 = 536888968;
-pub const SWITCHTEC_IOCTL_PORT_TO_PFF: u32 = 3222034245;
-pub const NVME_IOCTL_IO_CMD: u32 = 3225964099;
-pub const IPMICTL_RECEIVE_MSG_TRUNC: u32 = 3222825227;
-pub const FDTWADDLE: u32 = 536871513;
-pub const NVME_IOCTL_SUBMIT_IO: u32 = 2150649410;
-pub const NILFS_IOCTL_SYNC: u32 = 1074294410;
-pub const VIDIOC_SUBDEV_S_DV_TIMINGS: u32 = 3229898327;
-pub const ASPEED_LPC_CTRL_IOCTL_GET_SIZE: u32 = 3222319616;
-pub const DM_DEV_STATUS: u32 = 3241737479;
-pub const TEE_IOC_CLOSE_SESSION: u32 = 1074045957;
-pub const NS_GETPSTAT: u32 = 3222036833;
-pub const UI_SET_PROPBIT: u32 = 2147767662;
-pub const TUNSETFILTEREBPF: u32 = 1074025697;
-pub const RIO_MPORT_MAINT_COMPTAG_SET: u32 = 2147773698;
-pub const AUTOFS_DEV_IOCTL_VERSION: u32 = 3222836081;
-pub const WDIOC_SETOPTIONS: u32 = 1074026244;
-pub const VHOST_SCSI_SET_ENDPOINT: u32 = 2162732864;
-pub const MGSL_IOCGTXIDLE: u32 = 536898819;
-pub const ATM_ADDLECSADDR: u32 = 2148295054;
-pub const FSL_HV_IOCTL_GETPROP: u32 = 3223891719;
-pub const FDGETPRM: u32 = 1075577348;
-pub const HIDIOCAPPLICATION: u32 = 536889346;
-pub const ENI_MEMDUMP: u32 = 2148295008;
-pub const PTP_SYS_OFFSET2: u32 = 2202025230;
-pub const VIDIOC_SUBDEV_G_DV_TIMINGS: u32 = 3229898328;
-pub const DMA_BUF_SET_NAME_A: u32 = 2147770881;
-pub const PTP_PIN_GETFUNC: u32 = 3227532550;
-pub const PTP_SYS_OFFSET_EXTENDED: u32 = 3300932873;
-pub const DFL_FPGA_PORT_UINT_SET_IRQ: u32 = 2148054600;
-pub const RTC_EPOCH_READ: u32 = 1074032653;
-pub const VIDIOC_SUBDEV_S_SELECTION: u32 = 3225441854;
-pub const VIDIOC_QUERY_EXT_CTRL: u32 = 3236451943;
-pub const ATM_GETLECSADDR: u32 = 2148295056;
-pub const FSL_HV_IOCTL_PARTITION_STOP: u32 = 3221794564;
-pub const SONET_GETDIAG: u32 = 1074028820;
-pub const ATMMPC_DATA: u32 = 536895961;
-pub const IPMICTL_UNREGISTER_FOR_CMD_CHANS: u32 = 1074555165;
-pub const HIDIOCGCOLLECTIONINDEX: u32 = 2149074960;
-pub const RPMSG_CREATE_EPT_IOCTL: u32 = 2150151425;
-pub const GPIOHANDLE_GET_LINE_VALUES_IOCTL: u32 = 3225465864;
-pub const UI_DEV_SETUP: u32 = 2153534723;
-pub const ISST_IF_IO_CMD: u32 = 2147810818;
-pub const RIO_MPORT_MAINT_READ_REMOTE: u32 = 1075342599;
-pub const VIDIOC_OMAP3ISP_HIST_CFG: u32 = 3224393412;
-pub const BLKGETNRZONES: u32 = 1074008709;
-pub const VIDIOC_G_MODULATOR: u32 = 3225703990;
-pub const VBG_IOCTL_WRITE_CORE_DUMP: u32 = 3223082515;
-pub const USBDEVFS_SETINTERFACE: u32 = 1074287876;
-pub const PPPIOCGCHAN: u32 = 1074033719;
-pub const EVIOCGVERSION: u32 = 1074021633;
-pub const VHOST_NET_SET_BACKEND: u32 = 2148052784;
-pub const USBDEVFS_REAPURBNDELAY: u32 = 2147767565;
-pub const RNDZAPENTCNT: u32 = 536891908;
-pub const VIDIOC_G_PARM: u32 = 3234616853;
-pub const TUNGETDEVNETNS: u32 = 536892643;
-pub const LIRC_SET_MEASURE_CARRIER_MODE: u32 = 2147772701;
-pub const VHOST_SET_VRING_ERR: u32 = 2148052770;
-pub const VDUSE_VQ_SETUP: u32 = 2149613844;
-pub const AUTOFS_IOC_SETTIMEOUT: u32 = 3221525348;
-pub const VIDIOC_S_FREQUENCY: u32 = 2150389305;
-pub const F2FS_IOC_SEC_TRIM_FILE: u32 = 2149119252;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY: u32 = 3225445912;
-pub const WDIOC_GETPRETIMEOUT: u32 = 1074026249;
-pub const USBDEVFS_DROP_PRIVILEGES: u32 = 2147767582;
-pub const BTRFS_IOC_SNAP_CREATE_V2: u32 = 2415957015;
-pub const VHOST_VSOCK_SET_RUNNING: u32 = 2147790689;
-pub const STP_SET_OPTIONS: u32 = 2148017410;
-pub const FBIO_RADEON_GET_MIRROR: u32 = 1074020355;
-pub const IVTVFB_IOC_DMA_FRAME: u32 = 2148292288;
-pub const IPMICTL_SEND_COMMAND: u32 = 1075079437;
-pub const VIDIOC_G_ENC_INDEX: u32 = 1209554508;
-pub const DFL_FPGA_FME_PORT_PR: u32 = 536917632;
-pub const CHIOSVOLTAG: u32 = 2150654738;
-pub const ATM_SETESIF: u32 = 2148295053;
-pub const FW_CDEV_IOC_SEND_RESPONSE: u32 = 2149065476;
-pub const PMU_IOC_GET_MODEL: u32 = 1074020867;
-pub const JSIOCGBTNMAP: u32 = 1140877876;
-pub const USBDEVFS_HUB_PORTINFO: u32 = 1082152211;
-pub const VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS: u32 = 3222820363;
-pub const FDCLRPRM: u32 = 536871489;
-pub const BTRFS_IOC_SCRUB: u32 = 3288372251;
-pub const USBDEVFS_DISCONNECT: u32 = 536892694;
-pub const TUNSETVNETBE: u32 = 2147767518;
-pub const ATMTCP_REMOVE: u32 = 536895887;
-pub const VHOST_VDPA_GET_CONFIG: u32 = 1074311027;
-pub const PPPIOCGNPMODE: u32 = 3221779532;
-pub const FDGETDRVPRM: u32 = 1079509521;
-pub const TUNSETVNETLE: u32 = 2147767516;
-pub const PHN_SETREG: u32 = 2148036614;
-pub const PPPIOCDETACH: u32 = 2147775548;
-pub const MMTIMER_GETRES: u32 = 1074031873;
-pub const VIDIOC_SUBDEV_ENUMSTD: u32 = 3225966105;
-pub const PPGETFLAGS: u32 = 1074032794;
-pub const VDUSE_DEV_GET_FEATURES: u32 = 1074299153;
-pub const CAPI_MANUFACTURER_CMD: u32 = 3221766944;
-pub const VIDIOC_G_TUNER: u32 = 3226752541;
-pub const DM_TABLE_STATUS: u32 = 3241737484;
-pub const DM_DEV_ARM_POLL: u32 = 3241737488;
-pub const NE_CREATE_VM: u32 = 1074310688;
-pub const MEDIA_IOC_ENUM_LINKS: u32 = 3223092226;
-pub const F2FS_IOC_PRECACHE_EXTENTS: u32 = 536933647;
-pub const DFL_FPGA_PORT_DMA_MAP: u32 = 536917571;
-pub const MGSL_IOCGXCTRL: u32 = 536898838;
-pub const FW_CDEV_IOC_SEND_REQUEST: u32 = 2150114049;
-pub const SONYPI_IOCGBLUE: u32 = 1073837576;
-pub const F2FS_IOC_DECOMPRESS_FILE: u32 = 536933655;
-pub const I2OHTML: u32 = 3223087369;
-pub const VFIO_GET_API_VERSION: u32 = 536886116;
-pub const IDT77105_GETSTATZ: u32 = 2148294963;
-pub const I2OPARMSET: u32 = 3222825219;
-pub const TEE_IOC_CANCEL: u32 = 1074308100;
-pub const PTP_SYS_OFFSET_PRECISE2: u32 = 3225435409;
-pub const DFL_FPGA_PORT_RESET: u32 = 536917568;
-pub const PPPIOCGASYNCMAP: u32 = 1074033752;
-pub const EVIOCGKEYCODE_V2: u32 = 1076380932;
-pub const DM_DEV_SET_GEOMETRY: u32 = 3241737487;
-pub const HIDIOCSUSAGE: u32 = 2149074956;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE: u32 = 2149065488;
-pub const PTP_EXTTS_REQUEST: u32 = 2148547842;
-pub const SWITCHTEC_IOCTL_EVENT_CTL: u32 = 3223869251;
-pub const WDIOC_SETPRETIMEOUT: u32 = 3221509896;
-pub const VHOST_SCSI_CLEAR_ENDPOINT: u32 = 2162732865;
-pub const JSIOCGAXES: u32 = 1073834513;
-pub const HIDIOCSFLAG: u32 = 2147764239;
-pub const PTP_PEROUT_REQUEST2: u32 = 2151169292;
-pub const PPWDATA: u32 = 2147577990;
-pub const PTP_CLOCK_GETCAPS: u32 = 1079000321;
-pub const FDGETMAXERRS: u32 = 1075053070;
-pub const TUNSETQUEUE: u32 = 2147767513;
-pub const PTP_ENABLE_PPS: u32 = 2147761412;
-pub const SIOCSIFATMTCP: u32 = 536895872;
-pub const CEC_ADAP_G_LOG_ADDRS: u32 = 1079795971;
-pub const ND_IOCTL_ARS_CAP: u32 = 3223342593;
-pub const NBD_SET_BLKSIZE: u32 = 536914689;
-pub const NBD_SET_TIMEOUT: u32 = 536914697;
-pub const VHOST_SCSI_GET_ABI_VERSION: u32 = 2147790658;
-pub const RIO_UNMAP_INBOUND: u32 = 2148035858;
-pub const ATM_QUERYLOOP: u32 = 2148294996;
-pub const DFL_FPGA_GET_API_VERSION: u32 = 536917504;
-pub const USBDEVFS_WAIT_FOR_RESUME: u32 = 536892707;
-pub const FBIO_CURSOR: u32 = 3225961992;
-pub const RNDCLEARPOOL: u32 = 536891910;
-pub const VIDIOC_QUERYSTD: u32 = 1074288191;
-pub const DMA_BUF_IOCTL_SYNC: u32 = 2148033024;
-pub const SCIF_RECV: u32 = 3222827783;
-pub const PTP_PIN_GETFUNC2: u32 = 3227532559;
-pub const FW_CDEV_IOC_ALLOCATE: u32 = 3223331586;
-pub const CEC_ADAP_G_CAPS: u32 = 3226231040;
-pub const VIDIOC_G_FBUF: u32 = 1076647434;
-pub const PTP_ENABLE_PPS2: u32 = 2147761421;
-pub const PCITEST_CLEAR_IRQ: u32 = 536891408;
-pub const IPMICTL_SET_GETS_EVENTS_CMD: u32 = 1074030864;
-pub const BTRFS_IOC_DEVICES_READY: u32 = 1342215207;
-pub const JSIOCGAXMAP: u32 = 1077963314;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER: u32 = 1074799372;
-pub const FW_CDEV_IOC_SET_ISO_CHANNELS: u32 = 2148541207;
-pub const RTC_WIE_OFF: u32 = 536899600;
-pub const PPGETMODE: u32 = 1074032792;
-pub const VIDIOC_DBG_G_REGISTER: u32 = 3224917584;
-pub const PTP_SYS_OFFSET: u32 = 2202025221;
-pub const BTRFS_IOC_SPACE_INFO: u32 = 3222311956;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_SIZE: u32 = 3225441866;
-pub const ND_IOCTL_VENDOR: u32 = 3221769737;
-pub const SCIF_VREADFROM: u32 = 3223876364;
-pub const BTRFS_IOC_TRANS_START: u32 = 536908806;
-pub const INOTIFY_IOC_SETNEXTWD: u32 = 2147764480;
-pub const SNAPSHOT_GET_IMAGE_SIZE: u32 = 1074279182;
-pub const TUNDETACHFILTER: u32 = 2148029654;
-pub const ND_IOCTL_CLEAR_ERROR: u32 = 3223342596;
-pub const IOC_PR_CLEAR: u32 = 2148561101;
-pub const SCIF_READFROM: u32 = 3223876362;
-pub const PPPIOCGDEBUG: u32 = 1074033729;
-pub const BLKGETZONESZ: u32 = 1074008708;
-pub const HIDIOCGUSAGES: u32 = 3491514387;
-pub const SONYPI_IOCGTEMP: u32 = 1073837580;
-pub const UI_SET_MSCBIT: u32 = 2147767656;
-pub const APM_IOC_SUSPEND: u32 = 536887554;
-pub const BTRFS_IOC_TREE_SEARCH: u32 = 3489698833;
-pub const RTC_PLL_GET: u32 = 1075605521;
-pub const RIO_CM_EP_GET_LIST: u32 = 3221512962;
-pub const USBDEVFS_DISCSIGNAL: u32 = 1074287886;
-pub const LIRC_GET_MIN_TIMEOUT: u32 = 1074030856;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY: u32 = 1100502850;
-pub const DM_TARGET_MSG: u32 = 3241737486;
-pub const SONYPI_IOCGBAT1REM: u32 = 1073903107;
-pub const EVIOCSFF: u32 = 2150385024;
-pub const TUNSETGROUP: u32 = 2147767502;
-pub const EVIOCGKEYCODE: u32 = 1074283780;
-pub const KCOV_REMOTE_ENABLE: u32 = 2149081958;
-pub const ND_IOCTL_GET_CONFIG_SIZE: u32 = 3222031876;
-pub const FDEJECT: u32 = 536871514;
-pub const TUNSETOFFLOAD: u32 = 2147767504;
-pub const PPPIOCCONNECT: u32 = 2147775546;
-pub const ATM_ADDADDR: u32 = 2148295048;
-pub const VDUSE_DEV_INJECT_CONFIG_IRQ: u32 = 536903955;
-pub const AUTOFS_DEV_IOCTL_ASKUMOUNT: u32 = 3222836093;
-pub const VHOST_VDPA_GET_STATUS: u32 = 1073852273;
-pub const CCISS_PASSTHRU: u32 = 3226747403;
-pub const MGSL_IOCCLRMODCOUNT: u32 = 536898831;
-pub const TEE_IOC_SUPPL_SEND: u32 = 1074832391;
-pub const ATMARPD_CTRL: u32 = 536895969;
-pub const UI_ABS_SETUP: u32 = 2149340420;
-pub const UI_DEV_DESTROY: u32 = 536892674;
-pub const BTRFS_IOC_QUOTA_CTL: u32 = 3222311976;
-pub const RTC_AIE_ON: u32 = 536899585;
-pub const AUTOFS_IOC_EXPIRE: u32 = 1091343205;
-pub const PPPIOCSDEBUG: u32 = 2147775552;
-pub const GPIO_V2_LINE_SET_VALUES_IOCTL: u32 = 3222320143;
-pub const PPPIOCSMRU: u32 = 2147775570;
-pub const CCISS_DEREGDISK: u32 = 536887820;
-pub const UI_DEV_CREATE: u32 = 536892673;
-pub const FUSE_DEV_IOC_CLONE: u32 = 1074062592;
-pub const BTRFS_IOC_START_SYNC: u32 = 1074304024;
-pub const NILFS_IOCTL_DELETE_CHECKPOINT: u32 = 2148036225;
-pub const SNAPSHOT_AVAIL_SWAP_SIZE: u32 = 1074279187;
-pub const DM_TABLE_CLEAR: u32 = 3241737482;
-pub const CCISS_GETINTINFO: u32 = 1074283010;
-pub const PPPIOCSASYNCMAP: u32 = 2147775575;
-pub const I2OEVTGET: u32 = 1080584459;
-pub const NVME_IOCTL_RESET: u32 = 536890948;
-pub const PPYIELD: u32 = 536899725;
-pub const NVME_IOCTL_IO64_CMD: u32 = 3226488392;
-pub const TUNSETCARRIER: u32 = 2147767522;
-pub const DM_DEV_WAIT: u32 = 3241737480;
-pub const RTC_WIE_ON: u32 = 536899599;
-pub const MEDIA_IOC_DEVICE_INFO: u32 = 3238034432;
-pub const RIO_CM_CHAN_CREATE: u32 = 3221381891;
-pub const MGSL_IOCSPARAMS: u32 = 2149608704;
-pub const RTC_SET_TIME: u32 = 2149871626;
-pub const VHOST_RESET_OWNER: u32 = 536915714;
-pub const IOC_OPAL_PSID_REVERT_TPR: u32 = 2164814056;
-pub const AUTOFS_DEV_IOCTL_OPENMOUNT: u32 = 3222836084;
-pub const UDF_GETEABLOCK: u32 = 1074031681;
-pub const VFIO_IOMMU_MAP_DMA: u32 = 536886129;
-pub const VIDIOC_SUBSCRIBE_EVENT: u32 = 2149602906;
-pub const HIDIOCGFLAG: u32 = 1074022414;
-pub const HIDIOCGUCODE: u32 = 3222816781;
-pub const VIDIOC_OMAP3ISP_AF_CFG: u32 = 3226228421;
-pub const DM_REMOVE_ALL: u32 = 3241737473;
-pub const ASPEED_LPC_CTRL_IOCTL_MAP: u32 = 2148577793;
-pub const CCISS_GETFIRMVER: u32 = 1074020872;
-pub const ND_IOCTL_ARS_START: u32 = 3223342594;
-pub const PPPIOCSMRRU: u32 = 2147775547;
-pub const CEC_ADAP_S_LOG_ADDRS: u32 = 3227279620;
-pub const RPROC_GET_SHUTDOWN_ON_RELEASE: u32 = 1074050818;
-pub const DMA_HEAP_IOCTL_ALLOC: u32 = 3222816768;
-pub const PPSETTIME: u32 = 2148036758;
-pub const RTC_ALM_READ: u32 = 1076129800;
-pub const VDUSE_SET_API_VERSION: u32 = 2148040961;
-pub const RIO_MPORT_MAINT_WRITE_REMOTE: u32 = 2149084424;
-pub const VIDIOC_SUBDEV_S_CROP: u32 = 3224917564;
-pub const USBDEVFS_CONNECT: u32 = 536892695;
-pub const SYNC_IOC_FILE_INFO: u32 = 3224911364;
-pub const ATMARP_MKIP: u32 = 536895970;
-pub const VFIO_IOMMU_SPAPR_TCE_GET_INFO: u32 = 536886128;
-pub const CCISS_GETHEARTBEAT: u32 = 1074020870;
-pub const ATM_RSTADDR: u32 = 2148295047;
-pub const NBD_SET_SIZE: u32 = 536914690;
-pub const UDF_GETVOLIDENT: u32 = 1074031682;
-pub const GPIO_V2_LINE_GET_VALUES_IOCTL: u32 = 3222320142;
-pub const MGSL_IOCSTXIDLE: u32 = 536898818;
-pub const FSL_HV_IOCTL_SETPROP: u32 = 3223891720;
-pub const BTRFS_IOC_GET_DEV_STATS: u32 = 3288896564;
-pub const PPRSTATUS: u32 = 1073836161;
-pub const MGSL_IOCTXENABLE: u32 = 536898820;
-pub const UDF_GETEASIZE: u32 = 1074031680;
-pub const NVME_IOCTL_ADMIN64_CMD: u32 = 3226488391;
-pub const VHOST_SET_OWNER: u32 = 536915713;
-pub const RIO_ALLOC_DMA: u32 = 3222826259;
-pub const RIO_CM_CHAN_ACCEPT: u32 = 3221775111;
-pub const I2OHRTGET: u32 = 3222038785;
-pub const ATM_SETCIRANGE: u32 = 2148295051;
-pub const HPET_IE_ON: u32 = 536897537;
-pub const PERF_EVENT_IOC_ID: u32 = 1074013191;
-pub const TUNSETSNDBUF: u32 = 2147767508;
-pub const PTP_PIN_SETFUNC: u32 = 2153790727;
-pub const PPPIOCDISCONN: u32 = 536900665;
-pub const VIDIOC_QUERYCTRL: u32 = 3225703972;
-pub const PPEXCL: u32 = 536899727;
-pub const PCITEST_MSI: u32 = 2147766275;
-pub const FDWERRORCLR: u32 = 536871510;
-pub const AUTOFS_IOC_FAIL: u32 = 536908641;
-pub const USBDEVFS_IOCTL: u32 = 3222033682;
-pub const VIDIOC_S_STD: u32 = 2148029976;
-pub const F2FS_IOC_RESIZE_FS: u32 = 2148070672;
-pub const SONET_SETDIAG: u32 = 3221512466;
-pub const BTRFS_IOC_DEFRAG: u32 = 2415956994;
-pub const CCISS_GETDRIVVER: u32 = 1074020873;
-pub const IPMICTL_GET_TIMING_PARMS_CMD: u32 = 1074293015;
-pub const HPET_IRQFREQ: u32 = 2147772422;
-pub const ATM_GETESI: u32 = 2148295045;
-pub const CCISS_GETLUNINFO: u32 = 1074545169;
-pub const AUTOFS_DEV_IOCTL_ISMOUNTPOINT: u32 = 3222836094;
-pub const TEE_IOC_SHM_ALLOC: u32 = 3222316033;
-pub const PERF_EVENT_IOC_SET_BPF: u32 = 2147755016;
-pub const UDMABUF_CREATE_LIST: u32 = 2148037955;
-pub const VHOST_SET_LOG_BASE: u32 = 2148052740;
-pub const ZATM_GETPOOL: u32 = 2148295009;
-pub const BR2684_SETFILT: u32 = 2149343632;
-pub const RNDGETPOOL: u32 = 1074287106;
-pub const PPS_GETPARAMS: u32 = 1074032801;
-pub const IOC_PR_RESERVE: u32 = 2148561097;
-pub const VIDIOC_TRY_DECODER_CMD: u32 = 3225966177;
-pub const RIO_CM_CHAN_CLOSE: u32 = 2147640068;
-pub const VIDIOC_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const IOCTL_MEI_CONNECT_CLIENT_VTAG: u32 = 3222554628;
-pub const PMU_IOC_GET_BACKLIGHT: u32 = 1074020865;
-pub const USBDEVFS_GET_CAPABILITIES: u32 = 1074025754;
-pub const SCIF_WRITETO: u32 = 3223876363;
-pub const UDF_RELOCATE_BLOCKS: u32 = 3221515331;
-pub const FSL_HV_IOCTL_PARTITION_RESTART: u32 = 3221794561;
-pub const CCISS_REGNEWD: u32 = 536887822;
-pub const FAT_IOCTL_SET_ATTRIBUTES: u32 = 2147774993;
-pub const VIDIOC_CREATE_BUFS: u32 = 3237500508;
-pub const CAPI_GET_VERSION: u32 = 3222291207;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY: u32 = 1155028802;
-pub const VFIO_EEH_PE_OP: u32 = 536886137;
-pub const FW_CDEV_IOC_CREATE_ISO_CONTEXT: u32 = 3223331592;
-pub const F2FS_IOC_RELEASE_COMPRESS_BLOCKS: u32 = 1074328850;
-pub const NBD_SET_SIZE_BLOCKS: u32 = 536914695;
-pub const IPMI_BMC_IOCTL_SET_SMS_ATN: u32 = 536916224;
-pub const ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG: u32 = 3222319873;
-pub const VIDIOC_S_AUDOUT: u32 = 2150913586;
-pub const VIDIOC_S_FMT: u32 = 3234616837;
-pub const PPPIOCATTACH: u32 = 2147775549;
-pub const VHOST_GET_VRING_BUSYLOOP_TIMEOUT: u32 = 2148052772;
-pub const FS_IOC_MEASURE_VERITY: u32 = 3221513862;
-pub const CCISS_BIG_PASSTHRU: u32 = 3227009554;
-pub const IPMICTL_SET_MY_LUN_CMD: u32 = 1074030867;
-pub const PCITEST_LEGACY_IRQ: u32 = 536891394;
-pub const USBDEVFS_SUBMITURB: u32 = 1076647178;
-pub const AUTOFS_IOC_READY: u32 = 536908640;
-pub const BTRFS_IOC_SEND: u32 = 2152240166;
-pub const VIDIOC_G_EXT_CTRLS: u32 = 3222820423;
-pub const JSIOCSBTNMAP: u32 = 2214619699;
-pub const PPPIOCSFLAGS: u32 = 2147775577;
-pub const NVRAM_INIT: u32 = 536899648;
-pub const RFKILL_IOCTL_NOINPUT: u32 = 536891905;
-pub const BTRFS_IOC_BALANCE: u32 = 2415957004;
-pub const FS_IOC_GETFSMAP: u32 = 3233830971;
-pub const IPMICTL_GET_MY_CHANNEL_LUN_CMD: u32 = 1074030875;
-pub const STP_POLICY_ID_GET: u32 = 1074799873;
-pub const PPSETFLAGS: u32 = 2147774619;
-pub const CEC_ADAP_S_PHYS_ADDR: u32 = 2147639554;
-pub const ATMTCP_CREATE: u32 = 536895886;
-pub const IPMI_BMC_IOCTL_FORCE_ABORT: u32 = 536916226;
-pub const PPPIOCGXASYNCMAP: u32 = 1075868752;
-pub const VHOST_SET_VRING_CALL: u32 = 2148052769;
-pub const LIRC_GET_FEATURES: u32 = 1074030848;
-pub const GSMIOC_DISABLE_NET: u32 = 536889091;
-pub const AUTOFS_IOC_CATATONIC: u32 = 536908642;
-pub const NBD_DO_IT: u32 = 536914691;
-pub const LIRC_SET_REC_CARRIER_RANGE: u32 = 2147772703;
-pub const IPMICTL_GET_MY_CHANNEL_ADDRESS_CMD: u32 = 1074030873;
-pub const EVIOCSCLOCKID: u32 = 2147763616;
-pub const USBDEVFS_FREE_STREAMS: u32 = 1074287901;
-pub const FSI_SCOM_RESET: u32 = 2147775235;
-pub const PMU_IOC_GRAB_BACKLIGHT: u32 = 1074020870;
-pub const VIDIOC_SUBDEV_S_FMT: u32 = 3227014661;
-pub const FDDEFPRM: u32 = 2149319235;
-pub const TEE_IOC_INVOKE: u32 = 1074832387;
-pub const USBDEVFS_BULK: u32 = 3222295810;
-pub const SCIF_VWRITETO: u32 = 3223876365;
-pub const SONYPI_IOCSBRT: u32 = 2147579392;
-pub const BTRFS_IOC_FILE_EXTENT_SAME: u32 = 3222836278;
-pub const RTC_PIE_ON: u32 = 536899589;
-pub const BTRFS_IOC_SCAN_DEV: u32 = 2415956996;
-pub const PPPIOCXFERUNIT: u32 = 536900686;
-pub const WDIOC_GETTIMEOUT: u32 = 1074026247;
-pub const BTRFS_IOC_SET_RECEIVED_SUBVOL: u32 = 3234370597;
-pub const DFL_FPGA_PORT_ERR_SET_IRQ: u32 = 2148054598;
-pub const FBIO_WAITFORVSYNC: u32 = 2147763744;
-pub const RTC_PIE_OFF: u32 = 536899590;
-pub const EVIOCGRAB: u32 = 2147763600;
-pub const PMU_IOC_SET_BACKLIGHT: u32 = 2147762690;
-pub const EVIOCGREP: u32 = 1074283779;
-pub const PERF_EVENT_IOC_MODIFY_ATTRIBUTES: u32 = 2147755019;
-pub const UFFDIO_CONTINUE: u32 = 3223366151;
-pub const VDUSE_GET_API_VERSION: u32 = 1074299136;
-pub const RTC_RD_TIME: u32 = 1076129801;
-pub const FDMSGOFF: u32 = 536871494;
-pub const IPMICTL_REGISTER_FOR_CMD_CHANS: u32 = 1074555164;
-pub const CAPI_GET_ERRCODE: u32 = 1073890081;
-pub const PCITEST_SET_IRQTYPE: u32 = 2147766280;
-pub const VIDIOC_SUBDEV_S_EDID: u32 = 3223606825;
-pub const MATROXFB_SET_OUTPUT_MODE: u32 = 2147774202;
-pub const RIO_DEV_ADD: u32 = 2149608727;
-pub const VIDIOC_ENUM_FREQ_BANDS: u32 = 3225441893;
-pub const FBIO_RADEON_SET_MIRROR: u32 = 2147762180;
-pub const PCITEST_GET_IRQTYPE: u32 = 536891401;
-pub const JSIOCGVERSION: u32 = 1074031105;
-pub const SONYPI_IOCSBLUE: u32 = 2147579401;
-pub const SNAPSHOT_PREF_IMAGE_SIZE: u32 = 536883986;
-pub const F2FS_IOC_GET_FEATURES: u32 = 1074066700;
-pub const SCIF_REG: u32 = 3223876360;
-pub const NILFS_IOCTL_CLEAN_SEGMENTS: u32 = 2155376264;
-pub const FW_CDEV_IOC_INITIATE_BUS_RESET: u32 = 2147754757;
-pub const RIO_WAIT_FOR_ASYNC: u32 = 2148035862;
-pub const VHOST_SET_VRING_NUM: u32 = 2148052752;
-pub const AUTOFS_DEV_IOCTL_PROTOVER: u32 = 3222836082;
-pub const RIO_FREE_DMA: u32 = 2148035860;
-pub const MGSL_IOCRXENABLE: u32 = 536898821;
-pub const IOCTL_VM_SOCKETS_GET_LOCAL_CID: u32 = 536872889;
-pub const IPMICTL_SET_TIMING_PARMS_CMD: u32 = 1074293014;
-pub const PPPIOCGL2TPSTATS: u32 = 1078490166;
-pub const PERF_EVENT_IOC_PERIOD: u32 = 2148017156;
-pub const PTP_PIN_SETFUNC2: u32 = 2153790736;
-pub const CHIOEXCHANGE: u32 = 2149344002;
-pub const NILFS_IOCTL_GET_SUINFO: u32 = 1075342980;
-pub const CEC_DQEVENT: u32 = 3226493191;
-pub const UI_SET_SWBIT: u32 = 2147767661;
-pub const VHOST_VDPA_SET_CONFIG: u32 = 2148052852;
-pub const TUNSETIFF: u32 = 2147767498;
-pub const CHIOPOSITION: u32 = 2148295427;
-pub const IPMICTL_SET_MAINTENANCE_MODE_CMD: u32 = 2147772703;
-pub const BTRFS_IOC_DEFAULT_SUBVOL: u32 = 2148045843;
-pub const RIO_UNMAP_OUTBOUND: u32 = 2150133008;
-pub const CAPI_CLR_FLAGS: u32 = 1074021157;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE: u32 = 2149065487;
-pub const MATROXFB_GET_OUTPUT_CONNECTION: u32 = 1074032376;
-pub const EVIOCSMASK: u32 = 2148550035;
-pub const BTRFS_IOC_FORGET_DEV: u32 = 2415956997;
-pub const CXL_MEM_QUERY_COMMANDS: u32 = 1074318849;
-pub const CEC_S_MODE: u32 = 2147770633;
-pub const MGSL_IOCSIF: u32 = 536898826;
-pub const SWITCHTEC_IOCTL_PFF_TO_PORT: u32 = 3222034244;
-pub const PPSETMODE: u32 = 2147774592;
-pub const VFIO_DEVICE_SET_IRQS: u32 = 536886126;
-pub const VIDIOC_PREPARE_BUF: u32 = 3225704029;
-pub const CEC_ADAP_G_CONNECTOR_INFO: u32 = 1078223114;
-pub const IOC_OPAL_WRITE_SHADOW_MBR: u32 = 2166386922;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL: u32 = 3225441867;
-pub const UDMABUF_CREATE: u32 = 2149086530;
-pub const SONET_CLRDIAG: u32 = 3221512467;
-pub const PHN_SET_REG: u32 = 2147774465;
-pub const RNDADDTOENTCNT: u32 = 2147766785;
-pub const VBG_IOCTL_CHECK_BALLOON: u32 = 3223344657;
-pub const VIDIOC_OMAP3ISP_STAT_REQ: u32 = 3222820550;
-pub const PPS_FETCH: u32 = 3221516452;
-pub const RTC_AIE_OFF: u32 = 536899586;
-pub const VFIO_GROUP_SET_CONTAINER: u32 = 536886120;
-pub const FW_CDEV_IOC_RECEIVE_PHY_PACKETS: u32 = 2148016918;
-pub const VFIO_IOMMU_SPAPR_TCE_REMOVE: u32 = 536886136;
-pub const VFIO_IOMMU_GET_INFO: u32 = 536886128;
-pub const DM_DEV_SUSPEND: u32 = 3241737478;
-pub const F2FS_IOC_GET_COMPRESS_OPTION: u32 = 1073935637;
-pub const FW_CDEV_IOC_STOP_ISO: u32 = 2147754763;
-pub const GPIO_V2_GET_LINEINFO_IOCTL: u32 = 3238048773;
-pub const ATMMPC_CTRL: u32 = 536895960;
-pub const PPPIOCSXASYNCMAP: u32 = 2149610575;
-pub const CHIOGSTATUS: u32 = 2148033288;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE: u32 = 3222807309;
-pub const RIO_MPORT_MAINT_PORT_IDX_GET: u32 = 1074031875;
-pub const CAPI_SET_FLAGS: u32 = 1074021156;
-pub const VFIO_GROUP_GET_DEVICE_FD: u32 = 536886122;
-pub const VHOST_SET_MEM_TABLE: u32 = 2148052739;
-pub const MATROXFB_SET_OUTPUT_CONNECTION: u32 = 2147774200;
-pub const DFL_FPGA_PORT_GET_REGION_INFO: u32 = 536917570;
-pub const VHOST_GET_FEATURES: u32 = 1074310912;
-pub const LIRC_GET_REC_RESOLUTION: u32 = 1074030855;
-pub const PACKET_CTRL_CMD: u32 = 3222820865;
-pub const LIRC_SET_TRANSMITTER_MASK: u32 = 2147772695;
-pub const BTRFS_IOC_ADD_DEV: u32 = 2415957002;
-pub const JSIOCGCORR: u32 = 1076128290;
-pub const VIDIOC_G_FMT: u32 = 3234616836;
-pub const RTC_EPOCH_SET: u32 = 2147774478;
-pub const CAPI_GET_PROFILE: u32 = 3225436937;
-pub const ATM_GETLOOP: u32 = 2148294994;
-pub const SCIF_LISTEN: u32 = 2147775234;
-pub const NBD_CLEAR_QUE: u32 = 536914693;
-pub const F2FS_IOC_MOVE_RANGE: u32 = 3223385353;
-pub const LIRC_GET_LENGTH: u32 = 1074030863;
-pub const I8K_SET_FAN: u32 = 3221514631;
-pub const FDSETMAXERRS: u32 = 2148794956;
-pub const VIDIOC_SUBDEV_QUERYCAP: u32 = 1077958144;
-pub const SNAPSHOT_SET_SWAP_AREA: u32 = 2148283149;
-pub const LIRC_GET_REC_TIMEOUT: u32 = 1074030884;
-pub const EVIOCRMFF: u32 = 2147763585;
-pub const GPIO_GET_LINEEVENT_IOCTL: u32 = 3224417284;
-pub const PPRDATA: u32 = 1073836165;
-pub const RIO_MPORT_GET_PROPERTIES: u32 = 1076915460;
-pub const TUNSETVNETHDRSZ: u32 = 2147767512;
-pub const GPIO_GET_LINEINFO_IOCTL: u32 = 3225990146;
-pub const GSMIOC_GETCONF: u32 = 1078740736;
-pub const LIRC_GET_SEND_MODE: u32 = 1074030849;
-pub const PPPIOCSACTIVE: u32 = 2148037702;
-pub const SIOCGSTAMPNS_NEW: u32 = 1074825479;
-pub const IPMICTL_RECEIVE_MSG: u32 = 3222825228;
-pub const LIRC_SET_SEND_DUTY_CYCLE: u32 = 2147772693;
-pub const UI_END_FF_ERASE: u32 = 2148292043;
-pub const SWITCHTEC_IOCTL_FLASH_PART_INFO: u32 = 3222296385;
-pub const FW_CDEV_IOC_SEND_PHY_PACKET: u32 = 3222807317;
-pub const NBD_SET_FLAGS: u32 = 536914698;
-pub const VFIO_DEVICE_GET_REGION_INFO: u32 = 536886124;
-pub const REISERFS_IOC_UNPACK: u32 = 2147798273;
-pub const FW_CDEV_IOC_REMOVE_DESCRIPTOR: u32 = 2147754759;
-pub const RIO_SET_EVENT_MASK: u32 = 2147773709;
-pub const SNAPSHOT_ALLOC_SWAP_PAGE: u32 = 1074279188;
-pub const VDUSE_VQ_INJECT_IRQ: u32 = 2147778839;
-pub const I2OPASSTHRU: u32 = 1074293004;
-pub const IOC_OPAL_SET_PW: u32 = 2183164128;
-pub const FSI_SCOM_READ: u32 = 3223352065;
-pub const VHOST_VDPA_GET_DEVICE_ID: u32 = 1074048880;
-pub const VIDIOC_QBUF: u32 = 3225703951;
-pub const VIDIOC_S_TUNER: u32 = 2153010718;
-pub const TUNGETVNETHDRSZ: u32 = 1074025687;
-pub const CAPI_NCCI_GETUNIT: u32 = 1074021159;
-pub const DFL_FPGA_PORT_UINT_GET_IRQ_NUM: u32 = 1074050631;
-pub const VIDIOC_OMAP3ISP_STAT_EN: u32 = 3221509831;
-pub const GPIO_V2_LINE_SET_CONFIG_IOCTL: u32 = 3239097357;
-pub const TEE_IOC_VERSION: u32 = 1074570240;
-pub const VIDIOC_LOG_STATUS: u32 = 536892998;
-pub const IPMICTL_SEND_COMMAND_SETTIME: u32 = 1075603733;
-pub const VHOST_SET_LOG_FD: u32 = 2147790599;
-pub const SCIF_SEND: u32 = 3222827782;
-pub const VIDIOC_SUBDEV_G_FMT: u32 = 3227014660;
-pub const NS_ADJBUFLEV: u32 = 536895843;
-pub const VIDIOC_DBG_S_REGISTER: u32 = 2151175759;
-pub const NILFS_IOCTL_RESIZE: u32 = 2148036235;
-pub const PHN_GETREG: u32 = 3221778437;
-pub const I2OSWDL: u32 = 3223087365;
-pub const VBG_IOCTL_VMMDEV_REQUEST_BIG: u32 = 536892931;
-pub const JSIOCGBUTTONS: u32 = 1073834514;
-pub const VFIO_IOMMU_ENABLE: u32 = 536886131;
-pub const DM_DEV_RENAME: u32 = 3241737477;
-pub const MEDIA_IOC_SETUP_LINK: u32 = 3224665091;
-pub const VIDIOC_ENUMOUTPUT: u32 = 3225966128;
-pub const STP_POLICY_ID_SET: u32 = 3222283520;
-pub const VHOST_VDPA_SET_CONFIG_CALL: u32 = 2147790711;
-pub const VIDIOC_SUBDEV_G_CROP: u32 = 3224917563;
-pub const VIDIOC_S_CROP: u32 = 2148816444;
-pub const WDIOC_GETTEMP: u32 = 1074026243;
-pub const IOC_OPAL_ADD_USR_TO_LR: u32 = 2165862628;
-pub const UI_SET_LEDBIT: u32 = 2147767657;
-pub const NBD_SET_SOCK: u32 = 536914688;
-pub const BTRFS_IOC_SNAP_DESTROY_V2: u32 = 2415957055;
-pub const HIDIOCGCOLLECTIONINFO: u32 = 3222292497;
-pub const I2OSWUL: u32 = 3223087366;
-pub const IOCTL_MEI_NOTIFY_GET: u32 = 1074022403;
-pub const FDFMTTRK: u32 = 2148270664;
-pub const MMTIMER_GETBITS: u32 = 536898820;
-pub const VIDIOC_ENUMSTD: u32 = 3225966105;
-pub const VHOST_GET_VRING_BASE: u32 = 3221794578;
-pub const VFIO_DEVICE_IOEVENTFD: u32 = 536886132;
-pub const ATMARP_SETENTRY: u32 = 536895971;
-pub const CCISS_REVALIDVOLS: u32 = 536887818;
-pub const MGSL_IOCLOOPTXDONE: u32 = 536898825;
-pub const RTC_VL_READ: u32 = 1074032659;
-pub const ND_IOCTL_ARS_STATUS: u32 = 3224391171;
-pub const RIO_DEV_DEL: u32 = 2149608728;
-pub const VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES: u32 = 3223606797;
-pub const VIDIOC_SUBDEV_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const SONYPI_IOCSFAN: u32 = 2147579403;
-pub const SPIOCSTYPE: u32 = 2147774721;
-pub const IPMICTL_REGISTER_FOR_CMD: u32 = 1073899790;
-pub const I8K_GET_FAN: u32 = 3221514630;
-pub const TUNGETVNETBE: u32 = 1074025695;
-pub const AUTOFS_DEV_IOCTL_FAIL: u32 = 3222836087;
-pub const UI_END_FF_UPLOAD: u32 = 2153797065;
-pub const TOSH_SMM: u32 = 3222828176;
-pub const SONYPI_IOCGBAT2REM: u32 = 1073903109;
-pub const F2FS_IOC_GET_COMPRESS_BLOCKS: u32 = 1074328849;
-pub const PPPIOCSNPMODE: u32 = 2148037707;
-pub const USBDEVFS_CONTROL: u32 = 3222295808;
-pub const HIDIOCGUSAGE: u32 = 3222816779;
-pub const TUNSETTXFILTER: u32 = 2147767505;
-pub const TUNGETVNETLE: u32 = 1074025693;
-pub const VIDIOC_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const BTRFS_IOC_INO_PATHS: u32 = 3224933411;
-pub const MGSL_IOCGXSYNC: u32 = 536898836;
-pub const HIDIOCGFIELDINFO: u32 = 3224913930;
-pub const VIDIOC_SUBDEV_G_STD: u32 = 1074288151;
-pub const I2OVALIDATE: u32 = 1074030856;
-pub const VIDIOC_TRY_ENCODER_CMD: u32 = 3223869006;
-pub const NILFS_IOCTL_GET_CPINFO: u32 = 1075342978;
-pub const VIDIOC_G_FREQUENCY: u32 = 3224131128;
-pub const VFAT_IOCTL_READDIR_SHORT: u32 = 1108898306;
-pub const ND_IOCTL_GET_CONFIG_DATA: u32 = 3222031877;
-pub const F2FS_IOC_RESERVE_COMPRESS_BLOCKS: u32 = 1074328851;
-pub const FDGETDRVSTAT: u32 = 1077150226;
-pub const SYNC_IOC_MERGE: u32 = 3224387075;
-pub const VIDIOC_S_DV_TIMINGS: u32 = 3229898327;
-pub const PPPIOCBRIDGECHAN: u32 = 2147775541;
-pub const LIRC_SET_SEND_MODE: u32 = 2147772689;
-pub const RIO_ENABLE_PORTWRITE_RANGE: u32 = 2148560139;
-pub const ATM_GETTYPE: u32 = 2148295044;
-pub const PHN_GETREGS: u32 = 3223875591;
-pub const FDSETEMSGTRESH: u32 = 536871498;
-pub const NILFS_IOCTL_GET_VINFO: u32 = 3222826630;
-pub const MGSL_IOCWAITEVENT: u32 = 3221515528;
-pub const CAPI_INSTALLED: u32 = 1073890082;
-pub const EVIOCGMASK: u32 = 1074808210;
-pub const BTRFS_IOC_SUBVOL_GETFLAGS: u32 = 1074304025;
-pub const FSL_HV_IOCTL_PARTITION_GET_STATUS: u32 = 3222056706;
-pub const MEDIA_IOC_ENUM_ENTITIES: u32 = 3238034433;
-pub const GSMIOC_GETFIRST: u32 = 1074022148;
-pub const FW_CDEV_IOC_FLUSH_ISO: u32 = 2147754776;
-pub const VIDIOC_DBG_G_CHIP_INFO: u32 = 3234354790;
-pub const F2FS_IOC_RELEASE_VOLATILE_WRITE: u32 = 536933636;
-pub const CAPI_GET_SERIAL: u32 = 3221504776;
-pub const FDSETDRVPRM: u32 = 2153251472;
-pub const IOC_OPAL_SAVE: u32 = 2165862620;
-pub const VIDIOC_G_DV_TIMINGS: u32 = 3229898328;
-pub const TUNSETIFINDEX: u32 = 2147767514;
-pub const CCISS_SETINTINFO: u32 = 2148024835;
-pub const CM_IOSDBGLVL: u32 = 2147771386;
-pub const RTC_VL_CLR: u32 = 536899604;
-pub const VIDIOC_REQBUFS: u32 = 3222558216;
-pub const USBDEVFS_REAPURBNDELAY32: u32 = 2147767565;
-pub const TEE_IOC_SHM_REGISTER: u32 = 3222840329;
-pub const USBDEVFS_SETCONFIGURATION: u32 = 1074025733;
-pub const CCISS_GETNODENAME: u32 = 1074807300;
-pub const VIDIOC_SUBDEV_S_FRAME_INTERVAL: u32 = 3224393238;
-pub const VIDIOC_ENUM_FRAMESIZES: u32 = 3224131146;
-pub const VFIO_DEVICE_PCI_HOT_RESET: u32 = 536886129;
-pub const FW_CDEV_IOC_SEND_BROADCAST_REQUEST: u32 = 2150114066;
-pub const LPSETTIMEOUT_NEW: u32 = 2148533775;
-pub const RIO_CM_MPORT_GET_LIST: u32 = 3221512971;
-pub const FW_CDEV_IOC_QUEUE_ISO: u32 = 3222807305;
-pub const FDRAWCMD: u32 = 536871512;
-pub const SCIF_UNREG: u32 = 3222303497;
-pub const PPPIOCGIDLE64: u32 = 1074820159;
-pub const USBDEVFS_RELEASEINTERFACE: u32 = 1074025744;
-pub const VIDIOC_CROPCAP: u32 = 3224131130;
-pub const DFL_FPGA_PORT_GET_INFO: u32 = 536917569;
-pub const PHN_SET_REGS: u32 = 2147774467;
-pub const ATMLEC_DATA: u32 = 536895953;
-pub const PPPOEIOCDFWD: u32 = 536916225;
-pub const VIDIOC_S_SELECTION: u32 = 3225441887;
-pub const SNAPSHOT_FREE_SWAP_PAGES: u32 = 536883977;
-pub const BTRFS_IOC_LOGICAL_INO: u32 = 3224933412;
-pub const VIDIOC_S_CTRL: u32 = 3221771804;
-pub const ZATM_SETPOOL: u32 = 2148295011;
-pub const MTIOCPOS: u32 = 1074031875;
-pub const PMU_IOC_SLEEP: u32 = 536887808;
-pub const AUTOFS_DEV_IOCTL_PROTOSUBVER: u32 = 3222836083;
-pub const VBG_IOCTL_CHANGE_FILTER_MASK: u32 = 3223344652;
-pub const NILFS_IOCTL_GET_SUSTAT: u32 = 1076915845;
-pub const VIDIOC_QUERYCAP: u32 = 1080579584;
-pub const HPET_INFO: u32 = 1074554883;
-pub const VIDIOC_AM437X_CCDC_CFG: u32 = 2147768001;
-pub const DM_LIST_DEVICES: u32 = 3241737474;
-pub const TUNSETOWNER: u32 = 2147767500;
-pub const VBG_IOCTL_CHANGE_GUEST_CAPABILITIES: u32 = 3223344654;
-pub const RNDADDENTROPY: u32 = 2148028931;
-pub const USBDEVFS_RESET: u32 = 536892692;
-pub const BTRFS_IOC_SUBVOL_CREATE: u32 = 2415957006;
-pub const USBDEVFS_FORBID_SUSPEND: u32 = 536892705;
-pub const FDGETDRVTYP: u32 = 1074790927;
-pub const PPWCONTROL: u32 = 2147577988;
-pub const VIDIOC_ENUM_FRAMEINTERVALS: u32 = 3224655435;
-pub const KCOV_DISABLE: u32 = 536896357;
-pub const IOC_OPAL_ACTIVATE_LSP: u32 = 2165862623;
-pub const VHOST_VDPA_GET_IOVA_RANGE: u32 = 1074835320;
-pub const PPPIOCSPASS: u32 = 2148037703;
-pub const RIO_CM_CHAN_CONNECT: u32 = 2148033288;
-pub const I2OSWDEL: u32 = 3223087367;
-pub const FS_IOC_SET_ENCRYPTION_POLICY: u32 = 1074554387;
-pub const IOC_OPAL_MBR_DONE: u32 = 2165338345;
-pub const PPPIOCSMAXCID: u32 = 2147775569;
-pub const PPSETPHASE: u32 = 2147774612;
-pub const VHOST_VDPA_SET_VRING_ENABLE: u32 = 2148052853;
-pub const USBDEVFS_GET_SPEED: u32 = 536892703;
-pub const SONET_GETFRAMING: u32 = 1074028822;
-pub const VIDIOC_QUERYBUF: u32 = 3225703945;
-pub const VIDIOC_S_EDID: u32 = 3223606825;
-pub const BTRFS_IOC_QGROUP_ASSIGN: u32 = 2149094441;
-pub const PPS_GETCAP: u32 = 1074032803;
-pub const SNAPSHOT_PLATFORM_SUPPORT: u32 = 536883983;
-pub const LIRC_SET_REC_TIMEOUT_REPORTS: u32 = 2147772697;
-pub const SCIF_GET_NODEIDS: u32 = 3222827790;
-pub const NBD_DISCONNECT: u32 = 536914696;
-pub const VIDIOC_SUBDEV_G_FRAME_INTERVAL: u32 = 3224393237;
-pub const VFIO_IOMMU_DISABLE: u32 = 536886132;
-pub const SNAPSHOT_CREATE_IMAGE: u32 = 2147758865;
-pub const SNAPSHOT_POWER_OFF: u32 = 536883984;
-pub const APM_IOC_STANDBY: u32 = 536887553;
-pub const PPPIOCGUNIT: u32 = 1074033750;
-pub const AUTOFS_IOC_EXPIRE_MULTI: u32 = 2147783526;
-pub const SCIF_BIND: u32 = 3221779201;
-pub const IOC_WATCH_QUEUE_SET_SIZE: u32 = 536893280;
-pub const NILFS_IOCTL_CHANGE_CPMODE: u32 = 2148560512;
-pub const IOC_OPAL_LOCK_UNLOCK: u32 = 2165862621;
-pub const F2FS_IOC_SET_PIN_FILE: u32 = 2147808525;
-pub const PPPIOCGRASYNCMAP: u32 = 1074033749;
-pub const MMTIMER_MMAPAVAIL: u32 = 536898822;
-pub const I2OPASSTHRU32: u32 = 1074293004;
-pub const DFL_FPGA_FME_PORT_RELEASE: u32 = 2147792513;
-pub const VIDIOC_SUBDEV_QUERY_DV_TIMINGS: u32 = 1082414691;
-pub const UI_SET_SNDBIT: u32 = 2147767658;
-pub const VIDIOC_G_AUDOUT: u32 = 1077171761;
-pub const RTC_PLL_SET: u32 = 2149347346;
-pub const VIDIOC_ENUMAUDIO: u32 = 3224655425;
-pub const AUTOFS_DEV_IOCTL_TIMEOUT: u32 = 3222836090;
-pub const VBG_IOCTL_DRIVER_VERSION_INFO: u32 = 3224131072;
-pub const VHOST_SCSI_GET_EVENTS_MISSED: u32 = 2147790660;
-pub const VHOST_SET_VRING_ADDR: u32 = 2150149905;
-pub const VDUSE_CREATE_DEV: u32 = 2169536770;
-pub const FDFLUSH: u32 = 536871499;
-pub const VBG_IOCTL_WAIT_FOR_EVENTS: u32 = 3223344650;
-pub const DFL_FPGA_FME_ERR_SET_IRQ: u32 = 2148054660;
-pub const F2FS_IOC_GET_PIN_FILE: u32 = 1074066702;
-pub const SCIF_CONNECT: u32 = 3221779203;
-pub const BLKREPORTZONE: u32 = 3222278786;
-pub const AUTOFS_IOC_ASKUMOUNT: u32 = 1074041712;
-pub const ATM_ADDPARTY: u32 = 2148033012;
-pub const FDSETPRM: u32 = 2149319234;
-pub const ATM_GETSTATZ: u32 = 2148294993;
-pub const ISST_IF_MSR_COMMAND: u32 = 3221552644;
-pub const BTRFS_IOC_GET_SUBVOL_INFO: u32 = 1106809916;
-pub const VIDIOC_UNSUBSCRIBE_EVENT: u32 = 2149602907;
-pub const SEV_ISSUE_CMD: u32 = 3222295296;
-pub const GPIOHANDLE_SET_LINE_VALUES_IOCTL: u32 = 3225465865;
-pub const PCITEST_COPY: u32 = 2147766278;
-pub const IPMICTL_GET_MY_ADDRESS_CMD: u32 = 1074030866;
-pub const CHIOGPICKER: u32 = 1074029316;
-pub const CAPI_NCCI_OPENCOUNT: u32 = 1074021158;
-pub const CXL_MEM_SEND_COMMAND: u32 = 3224423938;
-pub const PERF_EVENT_IOC_SET_FILTER: u32 = 2147755014;
-pub const IOC_OPAL_REVERT_TPR: u32 = 2164814050;
-pub const CHIOGVPARAMS: u32 = 1081107219;
-pub const PTP_PEROUT_REQUEST: u32 = 2151169283;
-pub const FSI_SCOM_CHECK: u32 = 1074033408;
-pub const RTC_IRQP_READ: u32 = 1074032651;
-pub const RIO_MPORT_MAINT_READ_LOCAL: u32 = 1075342597;
-pub const HIDIOCGRDESCSIZE: u32 = 1074022401;
-pub const UI_GET_VERSION: u32 = 1074025773;
-pub const NILFS_IOCTL_GET_CPSTAT: u32 = 1075342979;
-pub const CCISS_GETBUSTYPES: u32 = 1074020871;
-pub const VFIO_IOMMU_SPAPR_TCE_CREATE: u32 = 536886135;
-pub const VIDIOC_EXPBUF: u32 = 3225441808;
-pub const UI_SET_RELBIT: u32 = 2147767654;
-pub const VFIO_SET_IOMMU: u32 = 536886118;
-pub const VIDIOC_S_MODULATOR: u32 = 2151962167;
-pub const TUNGETFILTER: u32 = 1074287835;
-pub const MEYEIOC_SYNC: u32 = 3221518019;
-pub const CCISS_SETNODENAME: u32 = 2148549125;
-pub const FBIO_GETCONTROL2: u32 = 1074022025;
-pub const TUNSETDEBUG: u32 = 2147767497;
-pub const DM_DEV_REMOVE: u32 = 3241737476;
-pub const HIDIOCSUSAGES: u32 = 2417772564;
-pub const FS_IOC_ADD_ENCRYPTION_KEY: u32 = 3226494487;
-pub const FBIOGET_VBLANK: u32 = 1075856914;
-pub const ATM_GETSTAT: u32 = 2148294992;
-pub const VIDIOC_G_JPEGCOMP: u32 = 1082938941;
-pub const TUNATTACHFILTER: u32 = 2148029653;
-pub const UI_SET_ABSBIT: u32 = 2147767655;
-pub const DFL_FPGA_PORT_ERR_GET_IRQ_NUM: u32 = 1074050629;
-pub const USBDEVFS_REAPURB32: u32 = 2147767564;
-pub const BTRFS_IOC_TRANS_END: u32 = 536908807;
-pub const CAPI_REGISTER: u32 = 2148287233;
-pub const F2FS_IOC_COMPRESS_FILE: u32 = 536933656;
-pub const USBDEVFS_DISCARDURB: u32 = 536892683;
-pub const HE_GET_REG: u32 = 2148295008;
-pub const ATM_SETLOOP: u32 = 2148294995;
-pub const ATMSIGD_CTRL: u32 = 536895984;
-pub const CIOC_KERNEL_VERSION: u32 = 3221512970;
-pub const BTRFS_IOC_CLONE_RANGE: u32 = 2149618701;
-pub const SNAPSHOT_UNFREEZE: u32 = 536883970;
-pub const F2FS_IOC_START_VOLATILE_WRITE: u32 = 536933635;
-pub const PMU_IOC_HAS_ADB: u32 = 1074020868;
-pub const I2OGETIOPS: u32 = 1075865856;
-pub const VIDIOC_S_FBUF: u32 = 2150389259;
-pub const PPRCONTROL: u32 = 1073836163;
-pub const CHIOSPICKER: u32 = 2147771141;
-pub const VFIO_IOMMU_SPAPR_REGISTER_MEMORY: u32 = 536886133;
-pub const TUNGETSNDBUF: u32 = 1074025683;
-pub const GSMIOC_SETCONF: u32 = 2152482561;
-pub const IOC_PR_PREEMPT: u32 = 2149085387;
-pub const KCOV_INIT_TRACE: u32 = 1074029313;
-pub const SONYPI_IOCGBAT1CAP: u32 = 1073903106;
-pub const SWITCHTEC_IOCTL_FLASH_INFO: u32 = 1074812736;
-pub const MTIOCTOP: u32 = 2148035841;
-pub const VHOST_VDPA_SET_STATUS: u32 = 2147594098;
-pub const VHOST_SCSI_SET_EVENTS_MISSED: u32 = 2147790659;
-pub const VFIO_IOMMU_DIRTY_PAGES: u32 = 536886133;
-pub const BTRFS_IOC_SCRUB_PROGRESS: u32 = 3288372253;
-pub const PPPIOCGMRU: u32 = 1074033747;
-pub const BTRFS_IOC_DEV_REPLACE: u32 = 3391657013;
-pub const PPPIOCGFLAGS: u32 = 1074033754;
-pub const NILFS_IOCTL_SET_SUINFO: u32 = 2149084813;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER2: u32 = 3222807316;
-pub const ATM_DELLECSADDR: u32 = 2148295055;
-pub const FW_CDEV_IOC_GET_SPEED: u32 = 536879889;
-pub const PPPIOCGIDLE32: u32 = 1074295871;
-pub const VFIO_DEVICE_RESET: u32 = 536886127;
-pub const GPIO_GET_LINEINFO_UNWATCH_IOCTL: u32 = 3221533708;
-pub const WDIOC_GETSTATUS: u32 = 1074026241;
-pub const BTRFS_IOC_SET_FEATURES: u32 = 2150667321;
-pub const IOCTL_MEI_CONNECT_CLIENT: u32 = 3222292481;
-pub const VIDIOC_OMAP3ISP_AEWB_CFG: u32 = 3223344835;
-pub const PCITEST_READ: u32 = 2147766277;
-pub const VFIO_GROUP_GET_STATUS: u32 = 536886119;
-pub const MATROXFB_GET_ALL_OUTPUTS: u32 = 1074032379;
-pub const USBDEVFS_CLEAR_HALT: u32 = 1074025749;
-pub const VIDIOC_DECODER_CMD: u32 = 3225966176;
-pub const VIDIOC_G_AUDIO: u32 = 1077171745;
-pub const CCISS_RESCANDISK: u32 = 536887824;
-pub const RIO_DISABLE_PORTWRITE_RANGE: u32 = 2148560140;
-pub const IOC_OPAL_SECURE_ERASE_LR: u32 = 2165338343;
-pub const USBDEVFS_REAPURB: u32 = 2147767564;
-pub const DFL_FPGA_CHECK_EXTENSION: u32 = 536917505;
-pub const AUTOFS_IOC_PROTOVER: u32 = 1074041699;
-pub const FSL_HV_IOCTL_MEMCPY: u32 = 3223891717;
-pub const BTRFS_IOC_GET_FEATURES: u32 = 1075352633;
-pub const PCITEST_MSIX: u32 = 2147766279;
-pub const BTRFS_IOC_DEFRAG_RANGE: u32 = 2150667280;
-pub const UI_BEGIN_FF_ERASE: u32 = 3222033866;
-pub const DM_GET_TARGET_VERSION: u32 = 3241737489;
-pub const PPPIOCGIDLE: u32 = 1074295871;
-pub const NVRAM_SETCKS: u32 = 536899649;
-pub const WDIOC_GETSUPPORT: u32 = 1076385536;
-pub const GSMIOC_ENABLE_NET: u32 = 2150909698;
-pub const GPIO_GET_CHIPINFO_IOCTL: u32 = 1078244353;
-pub const NE_ADD_VCPU: u32 = 3221532193;
-pub const EVIOCSKEYCODE_V2: u32 = 2150122756;
-pub const PTP_SYS_OFFSET_EXTENDED2: u32 = 3300932882;
-pub const SCIF_FENCE_WAIT: u32 = 3221517072;
-pub const RIO_TRANSFER: u32 = 3222826261;
-pub const FSL_HV_IOCTL_DOORBELL: u32 = 3221794566;
-pub const RIO_MPORT_MAINT_WRITE_LOCAL: u32 = 2149084422;
-pub const I2OEVTREG: u32 = 2148296970;
-pub const I2OPARMGET: u32 = 3222825220;
-pub const EVIOCGID: u32 = 1074283778;
-pub const BTRFS_IOC_QGROUP_CREATE: u32 = 2148570154;
-pub const AUTOFS_DEV_IOCTL_SETPIPEFD: u32 = 3222836088;
-pub const VIDIOC_S_PARM: u32 = 3234616854;
-pub const TUNSETSTEERINGEBPF: u32 = 1074025696;
-pub const ATM_GETNAMES: u32 = 2148032899;
-pub const VIDIOC_QUERYMENU: u32 = 3224131109;
-pub const DFL_FPGA_PORT_DMA_UNMAP: u32 = 536917572;
-pub const I2OLCTGET: u32 = 3222038786;
-pub const FS_IOC_GET_ENCRYPTION_PWSALT: u32 = 2148558356;
-pub const NS_SETBUFLEV: u32 = 2148295010;
-pub const BLKCLOSEZONE: u32 = 2148536967;
-pub const SONET_GETFRSENSE: u32 = 1074159895;
-pub const UI_SET_EVBIT: u32 = 2147767652;
-pub const DM_LIST_VERSIONS: u32 = 3241737485;
-pub const HIDIOCGSTRING: u32 = 1090799620;
-pub const PPPIOCATTCHAN: u32 = 2147775544;
-pub const VDUSE_DEV_SET_CONFIG: u32 = 2148040978;
-pub const TUNGETFEATURES: u32 = 1074025679;
-pub const VFIO_GROUP_UNSET_CONTAINER: u32 = 536886121;
-pub const IPMICTL_SET_MY_ADDRESS_CMD: u32 = 1074030865;
-pub const CCISS_REGNEWDISK: u32 = 2147762701;
-pub const VIDIOC_QUERY_DV_TIMINGS: u32 = 1082414691;
-pub const PHN_SETREGS: u32 = 2150133768;
-pub const FAT_IOCTL_GET_ATTRIBUTES: u32 = 1074033168;
-pub const FSL_MC_SEND_MC_COMMAND: u32 = 3225440992;
-pub const TUNGETIFF: u32 = 1074025682;
-pub const PTP_CLOCK_GETCAPS2: u32 = 1079000330;
-pub const BTRFS_IOC_RESIZE: u32 = 2415956995;
-pub const VHOST_SET_VRING_ENDIAN: u32 = 2148052755;
-pub const PPS_KC_BIND: u32 = 2147774629;
-pub const F2FS_IOC_WRITE_CHECKPOINT: u32 = 536933639;
-pub const UI_SET_FFBIT: u32 = 2147767659;
-pub const IPMICTL_GET_MY_LUN_CMD: u32 = 1074030868;
-pub const CEC_ADAP_G_PHYS_ADDR: u32 = 1073897729;
-pub const CEC_G_MODE: u32 = 1074028808;
-pub const USBDEVFS_RESETEP: u32 = 1074025731;
-pub const MEDIA_REQUEST_IOC_QUEUE: u32 = 536902784;
-pub const USBDEVFS_ALLOC_STREAMS: u32 = 1074287900;
-pub const MGSL_IOCSXCTRL: u32 = 536898837;
-pub const MEDIA_IOC_G_TOPOLOGY: u32 = 3225975812;
-pub const PPPIOCUNBRIDGECHAN: u32 = 536900660;
-pub const F2FS_IOC_COMMIT_ATOMIC_WRITE: u32 = 536933634;
-pub const ISST_IF_GET_PLATFORM_INFO: u32 = 1074068992;
-pub const SCIF_FENCE_MARK: u32 = 3222303503;
-pub const USBDEVFS_RELEASE_PORT: u32 = 1074025753;
-pub const VFIO_CHECK_EXTENSION: u32 = 536886117;
-pub const BTRFS_IOC_QGROUP_LIMIT: u32 = 1076925483;
-pub const FAT_IOCTL_GET_VOLUME_ID: u32 = 1074033171;
-pub const UI_SET_PHYS: u32 = 2147767660;
-pub const FDWERRORGET: u32 = 1075315223;
-pub const VIDIOC_SUBDEV_G_EDID: u32 = 3223606824;
-pub const MGSL_IOCGSTATS: u32 = 536898823;
-pub const RPROC_SET_SHUTDOWN_ON_RELEASE: u32 = 2147792641;
-pub const SIOCGSTAMP_NEW: u32 = 1074825478;
-pub const RTC_WKALM_RD: u32 = 1076391952;
-pub const PHN_GET_REG: u32 = 3221516288;
-pub const DELL_WMI_SMBIOS_CMD: u32 = 3224655616;
-pub const PHN_NOT_OH: u32 = 536899588;
-pub const PPGETMODES: u32 = 1074032791;
-pub const CHIOGPARAMS: u32 = 1075077894;
-pub const VFIO_DEVICE_GET_GFX_DMABUF: u32 = 536886131;
-pub const VHOST_SET_VRING_BUSYLOOP_TIMEOUT: u32 = 2148052771;
-pub const VIDIOC_SUBDEV_G_SELECTION: u32 = 3225441853;
-pub const BTRFS_IOC_RM_DEV_V2: u32 = 2415957050;
-pub const MGSL_IOCWAITGPIO: u32 = 3222301970;
-pub const PMU_IOC_CAN_SLEEP: u32 = 1074020869;
-pub const KCOV_ENABLE: u32 = 536896356;
-pub const BTRFS_IOC_CLONE: u32 = 2147783689;
-pub const F2FS_IOC_DEFRAGMENT: u32 = 3222336776;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE: u32 = 2147754766;
-pub const AGPIOC_ALLOCATE: u32 = 3221504262;
-pub const NE_SET_USER_MEMORY_REGION: u32 = 2149101091;
-pub const MGSL_IOCTXABORT: u32 = 536898822;
-pub const MGSL_IOCSGPIO: u32 = 2148560144;
-pub const LIRC_SET_REC_CARRIER: u32 = 2147772692;
-pub const F2FS_IOC_FLUSH_DEVICE: u32 = 2148070666;
-pub const SNAPSHOT_ATOMIC_RESTORE: u32 = 536883972;
-pub const RTC_UIE_OFF: u32 = 536899588;
-pub const BT_BMC_IOCTL_SMS_ATN: u32 = 536916224;
-pub const NVME_IOCTL_ID: u32 = 536890944;
-pub const NE_START_ENCLAVE: u32 = 3222318628;
-pub const VIDIOC_STREAMON: u32 = 2147767826;
-pub const FDPOLLDRVSTAT: u32 = 1077150227;
-pub const AUTOFS_DEV_IOCTL_READY: u32 = 3222836086;
-pub const VIDIOC_ENUMAUDOUT: u32 = 3224655426;
-pub const VIDIOC_SUBDEV_S_STD: u32 = 2148029976;
-pub const WDIOC_GETTIMELEFT: u32 = 1074026250;
-pub const ATM_GETLINKRATE: u32 = 2148295041;
-pub const RTC_WKALM_SET: u32 = 2150133775;
-pub const VHOST_GET_BACKEND_FEATURES: u32 = 1074310950;
-pub const ATMARP_ENCAP: u32 = 536895973;
-pub const CAPI_GET_FLAGS: u32 = 1074021155;
-pub const IPMICTL_SET_MY_CHANNEL_ADDRESS_CMD: u32 = 1074030872;
-pub const DFL_FPGA_FME_PORT_ASSIGN: u32 = 2147792514;
-pub const NS_GET_OWNER_UID: u32 = 536917764;
-pub const VIDIOC_OVERLAY: u32 = 2147767822;
-pub const BTRFS_IOC_WAIT_SYNC: u32 = 2148045846;
-pub const GPIOHANDLE_SET_CONFIG_IOCTL: u32 = 3226776586;
-pub const VHOST_GET_VRING_ENDIAN: u32 = 2148052756;
-pub const ATM_GETADDR: u32 = 2148295046;
-pub const PHN_GET_REGS: u32 = 3221516290;
-pub const AUTOFS_DEV_IOCTL_REQUESTER: u32 = 3222836091;
-pub const AUTOFS_DEV_IOCTL_EXPIRE: u32 = 3222836092;
-pub const SNAPSHOT_S2RAM: u32 = 536883979;
-pub const JSIOCSAXMAP: u32 = 2151705137;
-pub const F2FS_IOC_SET_COMPRESS_OPTION: u32 = 2147677462;
-pub const VBG_IOCTL_HGCM_DISCONNECT: u32 = 3223082501;
-pub const SCIF_FENCE_SIGNAL: u32 = 3223876369;
-pub const VFIO_DEVICE_GET_PCI_HOT_RESET_INFO: u32 = 536886128;
-pub const VIDIOC_SUBDEV_ENUM_MBUS_CODE: u32 = 3224393218;
-pub const MMTIMER_GETOFFSET: u32 = 536898816;
-pub const RIO_CM_CHAN_LISTEN: u32 = 2147640070;
-pub const ATM_SETSC: u32 = 2147770865;
-pub const F2FS_IOC_SHUTDOWN: u32 = 1074026621;
-pub const NVME_IOCTL_RESCAN: u32 = 536890950;
-pub const BLKOPENZONE: u32 = 2148536966;
-pub const DM_VERSION: u32 = 3241737472;
-pub const CEC_TRANSMIT: u32 = 3224920325;
-pub const FS_IOC_GET_ENCRYPTION_POLICY_EX: u32 = 3221841430;
-pub const SIOCMKCLIP: u32 = 536895968;
-pub const IPMI_BMC_IOCTL_CLEAR_SMS_ATN: u32 = 536916225;
-pub const HIDIOCGVERSION: u32 = 1074022401;
-pub const VIDIOC_S_INPUT: u32 = 3221509671;
-pub const VIDIOC_G_CROP: u32 = 3222558267;
-pub const LIRC_SET_WIDEBAND_RECEIVER: u32 = 2147772707;
-pub const EVIOCGEFFECTS: u32 = 1074021764;
-pub const UVCIOC_CTRL_QUERY: u32 = 3222041889;
-pub const IOC_OPAL_GENERIC_TABLE_RW: u32 = 2167959787;
-pub const FS_IOC_READ_VERITY_METADATA: u32 = 3223873159;
-pub const ND_IOCTL_SET_CONFIG_DATA: u32 = 3221769734;
-pub const USBDEVFS_GETDRIVER: u32 = 2164544776;
-pub const IDT77105_GETSTAT: u32 = 2148294962;
-pub const HIDIOCINITREPORT: u32 = 536889349;
-pub const VFIO_DEVICE_GET_INFO: u32 = 536886123;
-pub const RIO_CM_CHAN_RECEIVE: u32 = 3222299402;
-pub const RNDGETENTCNT: u32 = 1074024960;
-pub const PPPIOCNEWUNIT: u32 = 3221517374;
-pub const BTRFS_IOC_INO_LOOKUP: u32 = 3489698834;
-pub const FDRESET: u32 = 536871508;
-pub const IOC_PR_REGISTER: u32 = 2149085384;
-pub const HIDIOCSREPORT: u32 = 2148288520;
-pub const TEE_IOC_OPEN_SESSION: u32 = 1074832386;
-pub const TEE_IOC_SUPPL_RECV: u32 = 1074832390;
-pub const BTRFS_IOC_BALANCE_CTL: u32 = 2147783713;
-pub const GPIO_GET_LINEINFO_WATCH_IOCTL: u32 = 3225990155;
-pub const HIDIOCGRAWINFO: u32 = 1074284547;
-pub const PPPIOCSCOMPRESS: u32 = 2148299853;
-pub const USBDEVFS_CONNECTINFO: u32 = 2148029713;
-pub const BLKRESETZONE: u32 = 2148536963;
-pub const CHIOINITELEM: u32 = 536896273;
-pub const NILFS_IOCTL_SET_ALLOC_RANGE: u32 = 2148560524;
-pub const AUTOFS_DEV_IOCTL_CATATONIC: u32 = 3222836089;
-pub const RIO_MPORT_MAINT_HDID_SET: u32 = 2147642625;
-pub const PPGETPHASE: u32 = 1074032793;
-pub const USBDEVFS_DISCONNECT_CLAIM: u32 = 1091065115;
-pub const FDMSGON: u32 = 536871493;
-pub const VIDIOC_G_SLICED_VBI_CAP: u32 = 3228849733;
-pub const BTRFS_IOC_BALANCE_V2: u32 = 3288372256;
-pub const MEDIA_REQUEST_IOC_REINIT: u32 = 536902785;
-pub const IOC_OPAL_ERASE_LR: u32 = 2165338342;
-pub const FDFMTBEG: u32 = 536871495;
-pub const RNDRESEEDCRNG: u32 = 536891911;
-pub const ISST_IF_GET_PHY_ID: u32 = 3221552641;
-pub const TUNSETNOCSUM: u32 = 2147767496;
-pub const SONET_GETSTAT: u32 = 1076125968;
-pub const TFD_IOC_SET_TICKS: u32 = 2148029440;
-pub const PPDATADIR: u32 = 2147774608;
-pub const IOC_OPAL_ENABLE_DISABLE_MBR: u32 = 2165338341;
-pub const GPIO_V2_GET_LINE_IOCTL: u32 = 3260068871;
-pub const RIO_CM_CHAN_SEND: u32 = 2148557577;
-pub const PPWCTLONIRQ: u32 = 2147578002;
-pub const SONYPI_IOCGBRT: u32 = 1073837568;
-pub const IOC_PR_RELEASE: u32 = 2148561098;
-pub const PPCLRIRQ: u32 = 1074032787;
-pub const IPMICTL_SET_MY_CHANNEL_LUN_CMD: u32 = 1074030874;
-pub const MGSL_IOCSXSYNC: u32 = 536898835;
-pub const HPET_IE_OFF: u32 = 536897538;
-pub const IOC_OPAL_ACTIVATE_USR: u32 = 2165338337;
-pub const SONET_SETFRAMING: u32 = 2147770645;
-pub const PERF_EVENT_IOC_PAUSE_OUTPUT: u32 = 2147755017;
-pub const BTRFS_IOC_LOGICAL_INO_V2: u32 = 3224933435;
-pub const VBG_IOCTL_HGCM_CONNECT: u32 = 3231471108;
-pub const BLKFINISHZONE: u32 = 2148536968;
-pub const EVIOCREVOKE: u32 = 2147763601;
-pub const VFIO_DEVICE_FEATURE: u32 = 536886133;
-pub const CCISS_GETPCIINFO: u32 = 1074283009;
-pub const ISST_IF_MBOX_COMMAND: u32 = 3221552643;
-pub const SCIF_ACCEPTREQ: u32 = 3222303492;
-pub const PERF_EVENT_IOC_QUERY_BPF: u32 = 3221496842;
-pub const VIDIOC_STREAMOFF: u32 = 2147767827;
-pub const VDUSE_DESTROY_DEV: u32 = 2164293891;
-pub const FDGETFDCSTAT: u32 = 1075839509;
-pub const CM_IOCGATR: u32 = 3221512961;
-pub const VIDIOC_S_PRIORITY: u32 = 2147767876;
-pub const SNAPSHOT_FREEZE: u32 = 536883969;
-pub const VIDIOC_ENUMINPUT: u32 = 3226490394;
-pub const ZATM_GETPOOLZ: u32 = 2148295010;
-pub const RIO_DISABLE_DOORBELL_RANGE: u32 = 2148035850;
-pub const GPIO_V2_GET_LINEINFO_WATCH_IOCTL: u32 = 3238048774;
-pub const VIDIOC_G_STD: u32 = 1074288151;
-pub const USBDEVFS_ALLOW_SUSPEND: u32 = 536892706;
-pub const SONET_GETSTATZ: u32 = 1076125969;
-pub const SCIF_ACCEPTREG: u32 = 3221779205;
-pub const VIDIOC_ENCODER_CMD: u32 = 3223869005;
-pub const PPPIOCSRASYNCMAP: u32 = 2147775572;
-pub const IOCTL_MEI_NOTIFY_SET: u32 = 2147764226;
-pub const BTRFS_IOC_QUOTA_RESCAN_STATUS: u32 = 1077974061;
-pub const F2FS_IOC_GARBAGE_COLLECT: u32 = 2147808518;
-pub const ATMLEC_CTRL: u32 = 536895952;
-pub const MATROXFB_GET_AVAILABLE_OUTPUTS: u32 = 1074032377;
-pub const DM_DEV_CREATE: u32 = 3241737475;
-pub const VHOST_VDPA_GET_VRING_NUM: u32 = 1073917814;
-pub const VIDIOC_G_CTRL: u32 = 3221771803;
-pub const NBD_CLEAR_SOCK: u32 = 536914692;
-pub const VFIO_DEVICE_QUERY_GFX_PLANE: u32 = 536886130;
-pub const WDIOC_KEEPALIVE: u32 = 1074026245;
-pub const NVME_IOCTL_SUBSYS_RESET: u32 = 536890949;
-pub const PTP_EXTTS_REQUEST2: u32 = 2148547851;
-pub const PCITEST_BAR: u32 = 536891393;
-pub const MGSL_IOCGGPIO: u32 = 1074818321;
-pub const EVIOCSREP: u32 = 2148025603;
-pub const VFIO_DEVICE_GET_IRQ_INFO: u32 = 536886125;
-pub const HPET_DPI: u32 = 536897541;
-pub const VDUSE_VQ_SETUP_KICKFD: u32 = 2148040982;
-pub const ND_IOCTL_CALL: u32 = 3225439754;
-pub const HIDIOCGDEVINFO: u32 = 1075595267;
-pub const DM_TABLE_DEPS: u32 = 3241737483;
-pub const BTRFS_IOC_DEV_INFO: u32 = 3489698846;
-pub const VDUSE_IOTLB_GET_FD: u32 = 3223355664;
-pub const FW_CDEV_IOC_GET_INFO: u32 = 3223855872;
-pub const VIDIOC_G_PRIORITY: u32 = 1074026051;
-pub const ATM_NEWBACKENDIF: u32 = 2147639795;
-pub const VIDIOC_S_EXT_CTRLS: u32 = 3222820424;
-pub const VIDIOC_SUBDEV_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const VIDIOC_OMAP3ISP_CCDC_CFG: u32 = 3223344833;
-pub const VIDIOC_S_HW_FREQ_SEEK: u32 = 2150651474;
-pub const DM_TABLE_LOAD: u32 = 3241737481;
-pub const F2FS_IOC_START_ATOMIC_WRITE: u32 = 536933633;
-pub const VIDIOC_G_OUTPUT: u32 = 1074026030;
-pub const ATM_DROPPARTY: u32 = 2147770869;
-pub const CHIOGELEM: u32 = 2154586896;
-pub const BTRFS_IOC_GET_SUPPORTED_FEATURES: u32 = 1078498361;
-pub const EVIOCSKEYCODE: u32 = 2148025604;
-pub const NE_GET_IMAGE_LOAD_INFO: u32 = 3222318626;
-pub const TUNSETLINK: u32 = 2147767501;
-pub const FW_CDEV_IOC_ADD_DESCRIPTOR: u32 = 3222807302;
-pub const BTRFS_IOC_SCRUB_CANCEL: u32 = 536908828;
-pub const PPS_SETPARAMS: u32 = 2147774626;
-pub const IOC_OPAL_LR_SETUP: u32 = 2166911203;
-pub const FW_CDEV_IOC_DEALLOCATE: u32 = 2147754755;
-pub const WDIOC_SETTIMEOUT: u32 = 3221509894;
-pub const IOC_WATCH_QUEUE_SET_FILTER: u32 = 536893281;
-pub const CAPI_GET_MANUFACTURER: u32 = 3221504774;
-pub const VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY: u32 = 536886134;
-pub const ASPEED_P2A_CTRL_IOCTL_SET_WINDOW: u32 = 2148578048;
-pub const VIDIOC_G_EDID: u32 = 3223606824;
-pub const F2FS_IOC_GARBAGE_COLLECT_RANGE: u32 = 2149119243;
-pub const RIO_MAP_INBOUND: u32 = 3223874833;
-pub const IOC_OPAL_TAKE_OWNERSHIP: u32 = 2164814046;
-pub const USBDEVFS_CLAIM_PORT: u32 = 1074025752;
-pub const VIDIOC_S_AUDIO: u32 = 2150913570;
-pub const FS_IOC_GET_ENCRYPTION_NONCE: u32 = 1074816539;
-pub const FW_CDEV_IOC_SEND_STREAM_PACKET: u32 = 2150114067;
-pub const BTRFS_IOC_SNAP_DESTROY: u32 = 2415957007;
-pub const SNAPSHOT_FREE: u32 = 536883973;
-pub const I8K_GET_SPEED: u32 = 3221514629;
-pub const HIDIOCGREPORT: u32 = 2148288519;
-pub const HPET_EPI: u32 = 536897540;
-pub const JSIOCSCORR: u32 = 2149870113;
-pub const IOC_PR_PREEMPT_ABORT: u32 = 2149085388;
-pub const RIO_MAP_OUTBOUND: u32 = 3223874831;
-pub const ATM_SETESI: u32 = 2148295052;
-pub const FW_CDEV_IOC_START_ISO: u32 = 2148541194;
-pub const ATM_DELADDR: u32 = 2148295049;
-pub const PPFCONTROL: u32 = 2147643534;
-pub const SONYPI_IOCGFAN: u32 = 1073837578;
-pub const RTC_IRQP_SET: u32 = 2147774476;
-pub const PCITEST_WRITE: u32 = 2147766276;
-pub const PPCLAIM: u32 = 536899723;
-pub const VIDIOC_S_JPEGCOMP: u32 = 2156680766;
-pub const IPMICTL_UNREGISTER_FOR_CMD: u32 = 1073899791;
-pub const VHOST_SET_FEATURES: u32 = 2148052736;
-pub const TOSHIBA_ACPI_SCI: u32 = 3222828177;
-pub const VIDIOC_DQBUF: u32 = 3225703953;
-pub const BTRFS_IOC_BALANCE_PROGRESS: u32 = 1140888610;
-pub const BTRFS_IOC_SUBVOL_SETFLAGS: u32 = 2148045850;
-pub const ATMLEC_MCAST: u32 = 536895954;
-pub const MMTIMER_GETFREQ: u32 = 1074031874;
-pub const VIDIOC_G_SELECTION: u32 = 3225441886;
-pub const RTC_ALM_SET: u32 = 2149871623;
-pub const PPPOEIOCSFWD: u32 = 2147791104;
-pub const IPMICTL_GET_MAINTENANCE_MODE_CMD: u32 = 1074030878;
-pub const FS_IOC_ENABLE_VERITY: u32 = 2155898501;
-pub const NILFS_IOCTL_GET_BDESCS: u32 = 3222826631;
-pub const FDFMTEND: u32 = 536871497;
-pub const DMA_BUF_SET_NAME: u32 = 2147770881;
-pub const UI_BEGIN_FF_UPLOAD: u32 = 3227538888;
-pub const RTC_UIE_ON: u32 = 536899587;
-pub const PPRELEASE: u32 = 536899724;
-pub const VFIO_IOMMU_UNMAP_DMA: u32 = 536886130;
-pub const VIDIOC_OMAP3ISP_PRV_CFG: u32 = 3225179842;
-pub const GPIO_GET_LINEHANDLE_IOCTL: u32 = 3245126659;
-pub const VFAT_IOCTL_READDIR_BOTH: u32 = 1108898305;
-pub const NVME_IOCTL_ADMIN_CMD: u32 = 3225964097;
-pub const VHOST_SET_VRING_KICK: u32 = 2148052768;
-pub const BTRFS_IOC_SUBVOL_CREATE_V2: u32 = 2415957016;
-pub const BTRFS_IOC_SNAP_CREATE: u32 = 2415956993;
-pub const SONYPI_IOCGBAT2CAP: u32 = 1073903108;
-pub const PPNEGOT: u32 = 2147774609;
-pub const NBD_PRINT_DEBUG: u32 = 536914694;
-pub const BTRFS_IOC_INO_LOOKUP_USER: u32 = 3489698878;
-pub const BTRFS_IOC_GET_SUBVOL_ROOTREF: u32 = 3489698877;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS: u32 = 3225445913;
-pub const BTRFS_IOC_FS_INFO: u32 = 1140888607;
-pub const VIDIOC_ENUM_FMT: u32 = 3225441794;
-pub const VIDIOC_G_INPUT: u32 = 1074026022;
-pub const VTPM_PROXY_IOC_NEW_DEV: u32 = 3222577408;
-pub const DFL_FPGA_FME_ERR_GET_IRQ_NUM: u32 = 1074050691;
-pub const ND_IOCTL_DIMM_FLAGS: u32 = 3221769731;
-pub const BTRFS_IOC_QUOTA_RESCAN: u32 = 2151715884;
-pub const MMTIMER_GETCOUNTER: u32 = 1074031881;
-pub const MATROXFB_GET_OUTPUT_MODE: u32 = 3221516026;
-pub const BTRFS_IOC_QUOTA_RESCAN_WAIT: u32 = 536908846;
-pub const RIO_CM_CHAN_BIND: u32 = 2148033285;
-pub const HIDIOCGRDESC: u32 = 1342457858;
-pub const MGSL_IOCGIF: u32 = 536898827;
-pub const VIDIOC_S_OUTPUT: u32 = 3221509679;
-pub const HIDIOCGREPORTINFO: u32 = 3222030345;
-pub const WDIOC_GETBOOTSTATUS: u32 = 1074026242;
-pub const VDUSE_VQ_GET_INFO: u32 = 3224404245;
-pub const ACRN_IOCTL_ASSIGN_PCIDEV: u32 = 2149884501;
-pub const BLKGETDISKSEQ: u32 = 1074270848;
-pub const ACRN_IOCTL_PM_GET_CPU_STATE: u32 = 3221791328;
-pub const ACRN_IOCTL_DESTROY_VM: u32 = 536912401;
-pub const ACRN_IOCTL_SET_PTDEV_INTR: u32 = 2148835923;
-pub const ACRN_IOCTL_CREATE_IOREQ_CLIENT: u32 = 536912434;
-pub const ACRN_IOCTL_IRQFD: u32 = 2149098097;
-pub const ACRN_IOCTL_CREATE_VM: u32 = 3224412688;
-pub const ACRN_IOCTL_INJECT_MSI: u32 = 2148573731;
-pub const ACRN_IOCTL_ATTACH_IOREQ_CLIENT: u32 = 536912435;
-pub const ACRN_IOCTL_RESET_PTDEV_INTR: u32 = 2148835924;
-pub const ACRN_IOCTL_NOTIFY_REQUEST_FINISH: u32 = 2148049457;
-pub const ACRN_IOCTL_SET_IRQLINE: u32 = 2148049445;
-pub const ACRN_IOCTL_START_VM: u32 = 536912402;
-pub const ACRN_IOCTL_SET_VCPU_REGS: u32 = 2166923798;
-pub const ACRN_IOCTL_SET_MEMSEG: u32 = 2149622337;
-pub const ACRN_IOCTL_PAUSE_VM: u32 = 536912403;
-pub const ACRN_IOCTL_CLEAR_VM_IOREQ: u32 = 536912437;
-pub const ACRN_IOCTL_UNSET_MEMSEG: u32 = 2149622338;
-pub const ACRN_IOCTL_IOEVENTFD: u32 = 2149622384;
-pub const ACRN_IOCTL_DEASSIGN_PCIDEV: u32 = 2149884502;
-pub const ACRN_IOCTL_RESET_VM: u32 = 536912405;
-pub const ACRN_IOCTL_DESTROY_IOREQ_CLIENT: u32 = 536912436;
-pub const ACRN_IOCTL_VM_INTR_MONITOR: u32 = 2147787300;
diff --git a/vendor/linux-raw-sys-0.3.2/src/mips/netlink.rs b/vendor/linux-raw-sys-0.3.2/src/mips/netlink.rs
deleted file mode 100644
index 48578d72c..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/mips/netlink.rs
+++ /dev/null
@@ -1,2870 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const _MIPS_ISA_MIPS1: u32 = 1;
-pub const _MIPS_ISA_MIPS2: u32 = 2;
-pub const _MIPS_ISA_MIPS3: u32 = 3;
-pub const _MIPS_ISA_MIPS4: u32 = 4;
-pub const _MIPS_ISA_MIPS5: u32 = 5;
-pub const _MIPS_ISA_MIPS32: u32 = 6;
-pub const _MIPS_ISA_MIPS64: u32 = 7;
-pub const _MIPS_SIM_ABI32: u32 = 1;
-pub const _MIPS_SIM_NABI32: u32 = 2;
-pub const _MIPS_SIM_ABI64: u32 = 3;
-pub const NETLINK_ROUTE: u32 = 0;
-pub const NETLINK_UNUSED: u32 = 1;
-pub const NETLINK_USERSOCK: u32 = 2;
-pub const NETLINK_FIREWALL: u32 = 3;
-pub const NETLINK_SOCK_DIAG: u32 = 4;
-pub const NETLINK_NFLOG: u32 = 5;
-pub const NETLINK_XFRM: u32 = 6;
-pub const NETLINK_SELINUX: u32 = 7;
-pub const NETLINK_ISCSI: u32 = 8;
-pub const NETLINK_AUDIT: u32 = 9;
-pub const NETLINK_FIB_LOOKUP: u32 = 10;
-pub const NETLINK_CONNECTOR: u32 = 11;
-pub const NETLINK_NETFILTER: u32 = 12;
-pub const NETLINK_IP6_FW: u32 = 13;
-pub const NETLINK_DNRTMSG: u32 = 14;
-pub const NETLINK_KOBJECT_UEVENT: u32 = 15;
-pub const NETLINK_GENERIC: u32 = 16;
-pub const NETLINK_SCSITRANSPORT: u32 = 18;
-pub const NETLINK_ECRYPTFS: u32 = 19;
-pub const NETLINK_RDMA: u32 = 20;
-pub const NETLINK_CRYPTO: u32 = 21;
-pub const NETLINK_SMC: u32 = 22;
-pub const NETLINK_INET_DIAG: u32 = 4;
-pub const MAX_LINKS: u32 = 32;
-pub const NLM_F_REQUEST: u32 = 1;
-pub const NLM_F_MULTI: u32 = 2;
-pub const NLM_F_ACK: u32 = 4;
-pub const NLM_F_ECHO: u32 = 8;
-pub const NLM_F_DUMP_INTR: u32 = 16;
-pub const NLM_F_DUMP_FILTERED: u32 = 32;
-pub const NLM_F_ROOT: u32 = 256;
-pub const NLM_F_MATCH: u32 = 512;
-pub const NLM_F_ATOMIC: u32 = 1024;
-pub const NLM_F_DUMP: u32 = 768;
-pub const NLM_F_REPLACE: u32 = 256;
-pub const NLM_F_EXCL: u32 = 512;
-pub const NLM_F_CREATE: u32 = 1024;
-pub const NLM_F_APPEND: u32 = 2048;
-pub const NLM_F_NONREC: u32 = 256;
-pub const NLM_F_BULK: u32 = 512;
-pub const NLM_F_CAPPED: u32 = 256;
-pub const NLM_F_ACK_TLVS: u32 = 512;
-pub const NLMSG_ALIGNTO: u32 = 4;
-pub const NLMSG_NOOP: u32 = 1;
-pub const NLMSG_ERROR: u32 = 2;
-pub const NLMSG_DONE: u32 = 3;
-pub const NLMSG_OVERRUN: u32 = 4;
-pub const NLMSG_MIN_TYPE: u32 = 16;
-pub const NETLINK_ADD_MEMBERSHIP: u32 = 1;
-pub const NETLINK_DROP_MEMBERSHIP: u32 = 2;
-pub const NETLINK_PKTINFO: u32 = 3;
-pub const NETLINK_BROADCAST_ERROR: u32 = 4;
-pub const NETLINK_NO_ENOBUFS: u32 = 5;
-pub const NETLINK_RX_RING: u32 = 6;
-pub const NETLINK_TX_RING: u32 = 7;
-pub const NETLINK_LISTEN_ALL_NSID: u32 = 8;
-pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9;
-pub const NETLINK_CAP_ACK: u32 = 10;
-pub const NETLINK_EXT_ACK: u32 = 11;
-pub const NETLINK_GET_STRICT_CHK: u32 = 12;
-pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4;
-pub const NET_MAJOR: u32 = 36;
-pub const NLA_F_NESTED: u32 = 32768;
-pub const NLA_F_NET_BYTEORDER: u32 = 16384;
-pub const NLA_TYPE_MASK: i32 = -49153;
-pub const NLA_ALIGNTO: u32 = 4;
-pub const MACVLAN_FLAG_NOPROMISC: u32 = 1;
-pub const MACVLAN_FLAG_NODST: u32 = 2;
-pub const IPVLAN_F_PRIVATE: u32 = 1;
-pub const IPVLAN_F_VEPA: u32 = 2;
-pub const TUNNEL_MSG_FLAG_STATS: u32 = 1;
-pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1;
-pub const MAX_VLAN_LIST_LEN: u32 = 1;
-pub const PORT_PROFILE_MAX: u32 = 40;
-pub const PORT_UUID_MAX: u32 = 16;
-pub const PORT_SELF_VF: i32 = -1;
-pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1;
-pub const XDP_FLAGS_SKB_MODE: u32 = 2;
-pub const XDP_FLAGS_DRV_MODE: u32 = 4;
-pub const XDP_FLAGS_HW_MODE: u32 = 8;
-pub const XDP_FLAGS_REPLACE: u32 = 16;
-pub const XDP_FLAGS_MODES: u32 = 14;
-pub const XDP_FLAGS_MASK: u32 = 31;
-pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1;
-pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32;
-pub const IFA_F_SECONDARY: u32 = 1;
-pub const IFA_F_TEMPORARY: u32 = 1;
-pub const IFA_F_NODAD: u32 = 2;
-pub const IFA_F_OPTIMISTIC: u32 = 4;
-pub const IFA_F_DADFAILED: u32 = 8;
-pub const IFA_F_HOMEADDRESS: u32 = 16;
-pub const IFA_F_DEPRECATED: u32 = 32;
-pub const IFA_F_TENTATIVE: u32 = 64;
-pub const IFA_F_PERMANENT: u32 = 128;
-pub const IFA_F_MANAGETEMPADDR: u32 = 256;
-pub const IFA_F_NOPREFIXROUTE: u32 = 512;
-pub const IFA_F_MCAUTOJOIN: u32 = 1024;
-pub const IFA_F_STABLE_PRIVACY: u32 = 2048;
-pub const IFAPROT_UNSPEC: u32 = 0;
-pub const IFAPROT_KERNEL_LO: u32 = 1;
-pub const IFAPROT_KERNEL_RA: u32 = 2;
-pub const IFAPROT_KERNEL_LL: u32 = 3;
-pub const NTF_USE: u32 = 1;
-pub const NTF_SELF: u32 = 2;
-pub const NTF_MASTER: u32 = 4;
-pub const NTF_PROXY: u32 = 8;
-pub const NTF_EXT_LEARNED: u32 = 16;
-pub const NTF_OFFLOADED: u32 = 32;
-pub const NTF_STICKY: u32 = 64;
-pub const NTF_ROUTER: u32 = 128;
-pub const NTF_EXT_MANAGED: u32 = 1;
-pub const NTF_EXT_LOCKED: u32 = 2;
-pub const NUD_INCOMPLETE: u32 = 1;
-pub const NUD_REACHABLE: u32 = 2;
-pub const NUD_STALE: u32 = 4;
-pub const NUD_DELAY: u32 = 8;
-pub const NUD_PROBE: u32 = 16;
-pub const NUD_FAILED: u32 = 32;
-pub const NUD_NOARP: u32 = 64;
-pub const NUD_PERMANENT: u32 = 128;
-pub const NUD_NONE: u32 = 0;
-pub const RTNL_FAMILY_IPMR: u32 = 128;
-pub const RTNL_FAMILY_IP6MR: u32 = 129;
-pub const RTNL_FAMILY_MAX: u32 = 129;
-pub const RTA_ALIGNTO: u32 = 4;
-pub const RTPROT_UNSPEC: u32 = 0;
-pub const RTPROT_REDIRECT: u32 = 1;
-pub const RTPROT_KERNEL: u32 = 2;
-pub const RTPROT_BOOT: u32 = 3;
-pub const RTPROT_STATIC: u32 = 4;
-pub const RTPROT_GATED: u32 = 8;
-pub const RTPROT_RA: u32 = 9;
-pub const RTPROT_MRT: u32 = 10;
-pub const RTPROT_ZEBRA: u32 = 11;
-pub const RTPROT_BIRD: u32 = 12;
-pub const RTPROT_DNROUTED: u32 = 13;
-pub const RTPROT_XORP: u32 = 14;
-pub const RTPROT_NTK: u32 = 15;
-pub const RTPROT_DHCP: u32 = 16;
-pub const RTPROT_MROUTED: u32 = 17;
-pub const RTPROT_KEEPALIVED: u32 = 18;
-pub const RTPROT_BABEL: u32 = 42;
-pub const RTPROT_OPENR: u32 = 99;
-pub const RTPROT_BGP: u32 = 186;
-pub const RTPROT_ISIS: u32 = 187;
-pub const RTPROT_OSPF: u32 = 188;
-pub const RTPROT_RIP: u32 = 189;
-pub const RTPROT_EIGRP: u32 = 192;
-pub const RTM_F_NOTIFY: u32 = 256;
-pub const RTM_F_CLONED: u32 = 512;
-pub const RTM_F_EQUALIZE: u32 = 1024;
-pub const RTM_F_PREFIX: u32 = 2048;
-pub const RTM_F_LOOKUP_TABLE: u32 = 4096;
-pub const RTM_F_FIB_MATCH: u32 = 8192;
-pub const RTM_F_OFFLOAD: u32 = 16384;
-pub const RTM_F_TRAP: u32 = 32768;
-pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912;
-pub const RTNH_F_DEAD: u32 = 1;
-pub const RTNH_F_PERVASIVE: u32 = 2;
-pub const RTNH_F_ONLINK: u32 = 4;
-pub const RTNH_F_OFFLOAD: u32 = 8;
-pub const RTNH_F_LINKDOWN: u32 = 16;
-pub const RTNH_F_UNRESOLVED: u32 = 32;
-pub const RTNH_F_TRAP: u32 = 64;
-pub const RTNH_COMPARE_MASK: u32 = 89;
-pub const RTNH_ALIGNTO: u32 = 4;
-pub const RTNETLINK_HAVE_PEERINFO: u32 = 1;
-pub const RTAX_FEATURE_ECN: u32 = 1;
-pub const RTAX_FEATURE_SACK: u32 = 2;
-pub const RTAX_FEATURE_TIMESTAMP: u32 = 4;
-pub const RTAX_FEATURE_ALLFRAG: u32 = 8;
-pub const RTAX_FEATURE_MASK: u32 = 15;
-pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295;
-pub const TCA_DUMP_FLAGS_TERSE: u32 = 1;
-pub const RTMGRP_LINK: u32 = 1;
-pub const RTMGRP_NOTIFY: u32 = 2;
-pub const RTMGRP_NEIGH: u32 = 4;
-pub const RTMGRP_TC: u32 = 8;
-pub const RTMGRP_IPV4_IFADDR: u32 = 16;
-pub const RTMGRP_IPV4_MROUTE: u32 = 32;
-pub const RTMGRP_IPV4_ROUTE: u32 = 64;
-pub const RTMGRP_IPV4_RULE: u32 = 128;
-pub const RTMGRP_IPV6_IFADDR: u32 = 256;
-pub const RTMGRP_IPV6_MROUTE: u32 = 512;
-pub const RTMGRP_IPV6_ROUTE: u32 = 1024;
-pub const RTMGRP_IPV6_IFINFO: u32 = 2048;
-pub const RTMGRP_DECnet_IFADDR: u32 = 4096;
-pub const RTMGRP_DECnet_ROUTE: u32 = 16384;
-pub const RTMGRP_IPV6_PREFIX: u32 = 131072;
-pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2;
-pub const RTEXT_FILTER_VF: u32 = 1;
-pub const RTEXT_FILTER_BRVLAN: u32 = 2;
-pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4;
-pub const RTEXT_FILTER_SKIP_STATS: u32 = 8;
-pub const RTEXT_FILTER_MRP: u32 = 16;
-pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32;
-pub const RTEXT_FILTER_CFM_STATUS: u32 = 64;
-pub const RTEXT_FILTER_MST: u32 = 128;
-pub type size_t = crate::ctypes::c_uint;
-pub type ssize_t = crate::ctypes::c_int;
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 32usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_daddr_t = crate::ctypes::c_long;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_uid_t = __kernel_uid_t;
-pub type __kernel_old_gid_t = __kernel_gid_t;
-pub type __kernel_old_dev_t = crate::ctypes::c_uint;
-pub type __kernel_size_t = crate::ctypes::c_uint;
-pub type __kernel_ssize_t = crate::ctypes::c_int;
-pub type __kernel_ptrdiff_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_nl {
-pub nl_family: __kernel_sa_family_t,
-pub nl_pad: crate::ctypes::c_ushort,
-pub nl_pid: __u32,
-pub nl_groups: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsghdr {
-pub nlmsg_len: __u32,
-pub nlmsg_type: __u16,
-pub nlmsg_flags: __u16,
-pub nlmsg_seq: __u32,
-pub nlmsg_pid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsgerr {
-pub error: crate::ctypes::c_int,
-pub msg: nlmsghdr,
-}
-impl nlmsgerr_attrs {
-pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nlmsgerr_attrs {
-NLMSGERR_ATTR_UNUSED = 0,
-NLMSGERR_ATTR_MSG = 1,
-NLMSGERR_ATTR_OFFS = 2,
-NLMSGERR_ATTR_COOKIE = 3,
-NLMSGERR_ATTR_POLICY = 4,
-NLMSGERR_ATTR_MISS_TYPE = 5,
-NLMSGERR_ATTR_MISS_NEST = 6,
-__NLMSGERR_ATTR_MAX = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_pktinfo {
-pub group: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_req {
-pub nm_block_size: crate::ctypes::c_uint,
-pub nm_block_nr: crate::ctypes::c_uint,
-pub nm_frame_size: crate::ctypes::c_uint,
-pub nm_frame_nr: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_hdr {
-pub nm_status: crate::ctypes::c_uint,
-pub nm_len: crate::ctypes::c_uint,
-pub nm_group: __u32,
-pub nm_pid: __u32,
-pub nm_uid: __u32,
-pub nm_gid: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nl_mmap_status {
-NL_MMAP_STATUS_UNUSED = 0,
-NL_MMAP_STATUS_RESERVED = 1,
-NL_MMAP_STATUS_VALID = 2,
-NL_MMAP_STATUS_COPY = 3,
-NL_MMAP_STATUS_SKIP = 4,
-}
-pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED;
-pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-NETLINK_UNCONNECTED = 0,
-NETLINK_CONNECTED = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlattr {
-pub nla_len: __u16,
-pub nla_type: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nla_bitfield32 {
-pub value: __u32,
-pub selector: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_attribute_type {
-NL_ATTR_TYPE_INVALID = 0,
-NL_ATTR_TYPE_FLAG = 1,
-NL_ATTR_TYPE_U8 = 2,
-NL_ATTR_TYPE_U16 = 3,
-NL_ATTR_TYPE_U32 = 4,
-NL_ATTR_TYPE_U64 = 5,
-NL_ATTR_TYPE_S8 = 6,
-NL_ATTR_TYPE_S16 = 7,
-NL_ATTR_TYPE_S32 = 8,
-NL_ATTR_TYPE_S64 = 9,
-NL_ATTR_TYPE_BINARY = 10,
-NL_ATTR_TYPE_STRING = 11,
-NL_ATTR_TYPE_NUL_STRING = 12,
-NL_ATTR_TYPE_NESTED = 13,
-NL_ATTR_TYPE_NESTED_ARRAY = 14,
-NL_ATTR_TYPE_BITFIELD32 = 15,
-}
-impl netlink_policy_type_attr {
-pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_policy_type_attr {
-NL_POLICY_TYPE_ATTR_UNSPEC = 0,
-NL_POLICY_TYPE_ATTR_TYPE = 1,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5,
-NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6,
-NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7,
-NL_POLICY_TYPE_ATTR_POLICY_IDX = 8,
-NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9,
-NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10,
-NL_POLICY_TYPE_ATTR_PAD = 11,
-NL_POLICY_TYPE_ATTR_MASK = 12,
-__NL_POLICY_TYPE_ATTR_MAX = 13,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats {
-pub rx_packets: __u32,
-pub tx_packets: __u32,
-pub rx_bytes: __u32,
-pub tx_bytes: __u32,
-pub rx_errors: __u32,
-pub tx_errors: __u32,
-pub rx_dropped: __u32,
-pub tx_dropped: __u32,
-pub multicast: __u32,
-pub collisions: __u32,
-pub rx_length_errors: __u32,
-pub rx_over_errors: __u32,
-pub rx_crc_errors: __u32,
-pub rx_frame_errors: __u32,
-pub rx_fifo_errors: __u32,
-pub rx_missed_errors: __u32,
-pub tx_aborted_errors: __u32,
-pub tx_carrier_errors: __u32,
-pub tx_fifo_errors: __u32,
-pub tx_heartbeat_errors: __u32,
-pub tx_window_errors: __u32,
-pub rx_compressed: __u32,
-pub tx_compressed: __u32,
-pub rx_nohandler: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-pub collisions: __u64,
-pub rx_length_errors: __u64,
-pub rx_over_errors: __u64,
-pub rx_crc_errors: __u64,
-pub rx_frame_errors: __u64,
-pub rx_fifo_errors: __u64,
-pub rx_missed_errors: __u64,
-pub tx_aborted_errors: __u64,
-pub tx_carrier_errors: __u64,
-pub tx_fifo_errors: __u64,
-pub tx_heartbeat_errors: __u64,
-pub tx_window_errors: __u64,
-pub rx_compressed: __u64,
-pub tx_compressed: __u64,
-pub rx_nohandler: __u64,
-pub rx_otherhost_dropped: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_hw_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_ifmap {
-pub mem_start: __u64,
-pub mem_end: __u64,
-pub base_addr: __u64,
-pub irq: __u16,
-pub dma: __u8,
-pub port: __u8,
-}
-pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC;
-pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS;
-pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST;
-pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME;
-pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU;
-pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK;
-pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC;
-pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS;
-pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST;
-pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY;
-pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER;
-pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS;
-pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO;
-pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN;
-pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP;
-pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT;
-pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE;
-pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE;
-pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO;
-pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID;
-pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS;
-pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF;
-pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST;
-pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64;
-pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS;
-pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF;
-pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC;
-pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP;
-pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD;
-pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK;
-pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY;
-pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES;
-pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES;
-pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER;
-pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID;
-pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES;
-pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID;
-pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID;
-pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME;
-pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN;
-pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS;
-pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE;
-pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD;
-pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP;
-pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT;
-pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID;
-pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT;
-pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT;
-pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX;
-pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU;
-pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU;
-pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST;
-pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME;
-pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS;
-pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON;
-pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME;
-pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME;
-pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS;
-pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI;
-pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT;
-pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IFLA_UNSPEC = 0,
-IFLA_ADDRESS = 1,
-IFLA_BROADCAST = 2,
-IFLA_IFNAME = 3,
-IFLA_MTU = 4,
-IFLA_LINK = 5,
-IFLA_QDISC = 6,
-IFLA_STATS = 7,
-IFLA_COST = 8,
-IFLA_PRIORITY = 9,
-IFLA_MASTER = 10,
-IFLA_WIRELESS = 11,
-IFLA_PROTINFO = 12,
-IFLA_TXQLEN = 13,
-IFLA_MAP = 14,
-IFLA_WEIGHT = 15,
-IFLA_OPERSTATE = 16,
-IFLA_LINKMODE = 17,
-IFLA_LINKINFO = 18,
-IFLA_NET_NS_PID = 19,
-IFLA_IFALIAS = 20,
-IFLA_NUM_VF = 21,
-IFLA_VFINFO_LIST = 22,
-IFLA_STATS64 = 23,
-IFLA_VF_PORTS = 24,
-IFLA_PORT_SELF = 25,
-IFLA_AF_SPEC = 26,
-IFLA_GROUP = 27,
-IFLA_NET_NS_FD = 28,
-IFLA_EXT_MASK = 29,
-IFLA_PROMISCUITY = 30,
-IFLA_NUM_TX_QUEUES = 31,
-IFLA_NUM_RX_QUEUES = 32,
-IFLA_CARRIER = 33,
-IFLA_PHYS_PORT_ID = 34,
-IFLA_CARRIER_CHANGES = 35,
-IFLA_PHYS_SWITCH_ID = 36,
-IFLA_LINK_NETNSID = 37,
-IFLA_PHYS_PORT_NAME = 38,
-IFLA_PROTO_DOWN = 39,
-IFLA_GSO_MAX_SEGS = 40,
-IFLA_GSO_MAX_SIZE = 41,
-IFLA_PAD = 42,
-IFLA_XDP = 43,
-IFLA_EVENT = 44,
-IFLA_NEW_NETNSID = 45,
-IFLA_IF_NETNSID = 46,
-IFLA_CARRIER_UP_COUNT = 47,
-IFLA_CARRIER_DOWN_COUNT = 48,
-IFLA_NEW_IFINDEX = 49,
-IFLA_MIN_MTU = 50,
-IFLA_MAX_MTU = 51,
-IFLA_PROP_LIST = 52,
-IFLA_ALT_IFNAME = 53,
-IFLA_PERM_ADDRESS = 54,
-IFLA_PROTO_DOWN_REASON = 55,
-IFLA_PARENT_DEV_NAME = 56,
-IFLA_PARENT_DEV_BUS_NAME = 57,
-IFLA_GRO_MAX_SIZE = 58,
-IFLA_TSO_MAX_SIZE = 59,
-IFLA_TSO_MAX_SEGS = 60,
-IFLA_ALLMULTI = 61,
-IFLA_DEVLINK_PORT = 62,
-__IFLA_MAX = 63,
-}
-pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC;
-pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK;
-pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT;
-pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-IFLA_PROTO_DOWN_REASON_UNSPEC = 0,
-IFLA_PROTO_DOWN_REASON_MASK = 1,
-IFLA_PROTO_DOWN_REASON_VALUE = 2,
-__IFLA_PROTO_DOWN_REASON_CNT = 3,
-}
-pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC;
-pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF;
-pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-IFLA_INET_UNSPEC = 0,
-IFLA_INET_CONF = 1,
-__IFLA_INET_MAX = 2,
-}
-pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC;
-pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS;
-pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF;
-pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS;
-pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST;
-pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO;
-pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS;
-pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN;
-pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE;
-pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU;
-pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-IFLA_INET6_UNSPEC = 0,
-IFLA_INET6_FLAGS = 1,
-IFLA_INET6_CONF = 2,
-IFLA_INET6_STATS = 3,
-IFLA_INET6_MCAST = 4,
-IFLA_INET6_CACHEINFO = 5,
-IFLA_INET6_ICMP6STATS = 6,
-IFLA_INET6_TOKEN = 7,
-IFLA_INET6_ADDR_GEN_MODE = 8,
-IFLA_INET6_RA_MTU = 9,
-__IFLA_INET6_MAX = 10,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum in6_addr_gen_mode {
-IN6_ADDR_GEN_MODE_EUI64 = 0,
-IN6_ADDR_GEN_MODE_NONE = 1,
-IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2,
-IN6_ADDR_GEN_MODE_RANDOM = 3,
-}
-pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC;
-pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY;
-pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME;
-pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE;
-pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME;
-pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE;
-pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY;
-pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING;
-pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL;
-pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK;
-pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID;
-pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID;
-pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT;
-pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST;
-pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE;
-pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED;
-pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER;
-pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER;
-pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER;
-pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER;
-pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR;
-pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH;
-pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER;
-pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING;
-pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR;
-pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER;
-pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY;
-pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX;
-pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT;
-pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL;
-pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL;
-pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL;
-pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL;
-pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL;
-pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES;
-pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES;
-pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES;
-pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID;
-pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD;
-pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED;
-pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED;
-pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION;
-pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION;
-pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT;
-pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT;
-pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE;
-pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-IFLA_BR_UNSPEC = 0,
-IFLA_BR_FORWARD_DELAY = 1,
-IFLA_BR_HELLO_TIME = 2,
-IFLA_BR_MAX_AGE = 3,
-IFLA_BR_AGEING_TIME = 4,
-IFLA_BR_STP_STATE = 5,
-IFLA_BR_PRIORITY = 6,
-IFLA_BR_VLAN_FILTERING = 7,
-IFLA_BR_VLAN_PROTOCOL = 8,
-IFLA_BR_GROUP_FWD_MASK = 9,
-IFLA_BR_ROOT_ID = 10,
-IFLA_BR_BRIDGE_ID = 11,
-IFLA_BR_ROOT_PORT = 12,
-IFLA_BR_ROOT_PATH_COST = 13,
-IFLA_BR_TOPOLOGY_CHANGE = 14,
-IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 15,
-IFLA_BR_HELLO_TIMER = 16,
-IFLA_BR_TCN_TIMER = 17,
-IFLA_BR_TOPOLOGY_CHANGE_TIMER = 18,
-IFLA_BR_GC_TIMER = 19,
-IFLA_BR_GROUP_ADDR = 20,
-IFLA_BR_FDB_FLUSH = 21,
-IFLA_BR_MCAST_ROUTER = 22,
-IFLA_BR_MCAST_SNOOPING = 23,
-IFLA_BR_MCAST_QUERY_USE_IFADDR = 24,
-IFLA_BR_MCAST_QUERIER = 25,
-IFLA_BR_MCAST_HASH_ELASTICITY = 26,
-IFLA_BR_MCAST_HASH_MAX = 27,
-IFLA_BR_MCAST_LAST_MEMBER_CNT = 28,
-IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29,
-IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30,
-IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31,
-IFLA_BR_MCAST_QUERIER_INTVL = 32,
-IFLA_BR_MCAST_QUERY_INTVL = 33,
-IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34,
-IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35,
-IFLA_BR_NF_CALL_IPTABLES = 36,
-IFLA_BR_NF_CALL_IP6TABLES = 37,
-IFLA_BR_NF_CALL_ARPTABLES = 38,
-IFLA_BR_VLAN_DEFAULT_PVID = 39,
-IFLA_BR_PAD = 40,
-IFLA_BR_VLAN_STATS_ENABLED = 41,
-IFLA_BR_MCAST_STATS_ENABLED = 42,
-IFLA_BR_MCAST_IGMP_VERSION = 43,
-IFLA_BR_MCAST_MLD_VERSION = 44,
-IFLA_BR_VLAN_STATS_PER_PORT = 45,
-IFLA_BR_MULTI_BOOLOPT = 46,
-IFLA_BR_MCAST_QUERIER_STATE = 47,
-__IFLA_BR_MAX = 48,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_bridge_id {
-pub prio: [__u8; 2usize],
-pub addr: [__u8; 6usize],
-}
-pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC;
-pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-BRIDGE_MODE_UNSPEC = 0,
-BRIDGE_MODE_HAIRPIN = 1,
-}
-pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC;
-pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE;
-pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY;
-pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST;
-pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE;
-pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD;
-pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT;
-pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE;
-pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING;
-pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD;
-pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP;
-pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC;
-pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI;
-pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID;
-pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID;
-pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT;
-pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST;
-pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID;
-pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO;
-pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK;
-pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING;
-pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER;
-pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER;
-pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER;
-pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH;
-pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER;
-pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD;
-pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD;
-pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST;
-pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL;
-pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD;
-pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK;
-pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS;
-pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED;
-pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT;
-pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN;
-pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT;
-pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED;
-pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB;
-pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IFLA_BRPORT_UNSPEC = 0,
-IFLA_BRPORT_STATE = 1,
-IFLA_BRPORT_PRIORITY = 2,
-IFLA_BRPORT_COST = 3,
-IFLA_BRPORT_MODE = 4,
-IFLA_BRPORT_GUARD = 5,
-IFLA_BRPORT_PROTECT = 6,
-IFLA_BRPORT_FAST_LEAVE = 7,
-IFLA_BRPORT_LEARNING = 8,
-IFLA_BRPORT_UNICAST_FLOOD = 9,
-IFLA_BRPORT_PROXYARP = 10,
-IFLA_BRPORT_LEARNING_SYNC = 11,
-IFLA_BRPORT_PROXYARP_WIFI = 12,
-IFLA_BRPORT_ROOT_ID = 13,
-IFLA_BRPORT_BRIDGE_ID = 14,
-IFLA_BRPORT_DESIGNATED_PORT = 15,
-IFLA_BRPORT_DESIGNATED_COST = 16,
-IFLA_BRPORT_ID = 17,
-IFLA_BRPORT_NO = 18,
-IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 19,
-IFLA_BRPORT_CONFIG_PENDING = 20,
-IFLA_BRPORT_MESSAGE_AGE_TIMER = 21,
-IFLA_BRPORT_FORWARD_DELAY_TIMER = 22,
-IFLA_BRPORT_HOLD_TIMER = 23,
-IFLA_BRPORT_FLUSH = 24,
-IFLA_BRPORT_MULTICAST_ROUTER = 25,
-IFLA_BRPORT_PAD = 26,
-IFLA_BRPORT_MCAST_FLOOD = 27,
-IFLA_BRPORT_MCAST_TO_UCAST = 28,
-IFLA_BRPORT_VLAN_TUNNEL = 29,
-IFLA_BRPORT_BCAST_FLOOD = 30,
-IFLA_BRPORT_GROUP_FWD_MASK = 31,
-IFLA_BRPORT_NEIGH_SUPPRESS = 32,
-IFLA_BRPORT_ISOLATED = 33,
-IFLA_BRPORT_BACKUP_PORT = 34,
-IFLA_BRPORT_MRP_RING_OPEN = 35,
-IFLA_BRPORT_MRP_IN_OPEN = 36,
-IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 37,
-IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 38,
-IFLA_BRPORT_LOCKED = 39,
-IFLA_BRPORT_MAB = 40,
-__IFLA_BRPORT_MAX = 41,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_cacheinfo {
-pub max_reasm_len: __u32,
-pub tstamp: __u32,
-pub reachable_time: __u32,
-pub retrans_time: __u32,
-}
-pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC;
-pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND;
-pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA;
-pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS;
-pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND;
-pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA;
-pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IFLA_INFO_UNSPEC = 0,
-IFLA_INFO_KIND = 1,
-IFLA_INFO_DATA = 2,
-IFLA_INFO_XSTATS = 3,
-IFLA_INFO_SLAVE_KIND = 4,
-IFLA_INFO_SLAVE_DATA = 5,
-__IFLA_INFO_MAX = 6,
-}
-pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC;
-pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID;
-pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS;
-pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS;
-pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS;
-pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL;
-pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IFLA_VLAN_UNSPEC = 0,
-IFLA_VLAN_ID = 1,
-IFLA_VLAN_FLAGS = 2,
-IFLA_VLAN_EGRESS_QOS = 3,
-IFLA_VLAN_INGRESS_QOS = 4,
-IFLA_VLAN_PROTOCOL = 5,
-__IFLA_VLAN_MAX = 6,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC;
-pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING;
-pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IFLA_VLAN_QOS_UNSPEC = 0,
-IFLA_VLAN_QOS_MAPPING = 1,
-__IFLA_VLAN_QOS_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_qos_mapping {
-pub from: __u32,
-pub to: __u32,
-}
-pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC;
-pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE;
-pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS;
-pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE;
-pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR;
-pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA;
-pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED;
-pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IFLA_MACVLAN_UNSPEC = 0,
-IFLA_MACVLAN_MODE = 1,
-IFLA_MACVLAN_FLAGS = 2,
-IFLA_MACVLAN_MACADDR_MODE = 3,
-IFLA_MACVLAN_MACADDR = 4,
-IFLA_MACVLAN_MACADDR_DATA = 5,
-IFLA_MACVLAN_MACADDR_COUNT = 6,
-IFLA_MACVLAN_BC_QUEUE_LEN = 7,
-IFLA_MACVLAN_BC_QUEUE_LEN_USED = 8,
-__IFLA_MACVLAN_MAX = 9,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_mode {
-MACVLAN_MODE_PRIVATE = 1,
-MACVLAN_MODE_VEPA = 2,
-MACVLAN_MODE_BRIDGE = 4,
-MACVLAN_MODE_PASSTHRU = 8,
-MACVLAN_MODE_SOURCE = 16,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_macaddr_mode {
-MACVLAN_MACADDR_ADD = 0,
-MACVLAN_MACADDR_DEL = 1,
-MACVLAN_MACADDR_FLUSH = 2,
-MACVLAN_MACADDR_SET = 3,
-}
-pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC;
-pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE;
-pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_13 {
-IFLA_VRF_UNSPEC = 0,
-IFLA_VRF_TABLE = 1,
-__IFLA_VRF_MAX = 2,
-}
-pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC;
-pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE;
-pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_14 {
-IFLA_VRF_PORT_UNSPEC = 0,
-IFLA_VRF_PORT_TABLE = 1,
-__IFLA_VRF_PORT_MAX = 2,
-}
-pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC;
-pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI;
-pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT;
-pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN;
-pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE;
-pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW;
-pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA;
-pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT;
-pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT;
-pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI;
-pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES;
-pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB;
-pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT;
-pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION;
-pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD;
-pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD;
-pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_15 {
-IFLA_MACSEC_UNSPEC = 0,
-IFLA_MACSEC_SCI = 1,
-IFLA_MACSEC_PORT = 2,
-IFLA_MACSEC_ICV_LEN = 3,
-IFLA_MACSEC_CIPHER_SUITE = 4,
-IFLA_MACSEC_WINDOW = 5,
-IFLA_MACSEC_ENCODING_SA = 6,
-IFLA_MACSEC_ENCRYPT = 7,
-IFLA_MACSEC_PROTECT = 8,
-IFLA_MACSEC_INC_SCI = 9,
-IFLA_MACSEC_ES = 10,
-IFLA_MACSEC_SCB = 11,
-IFLA_MACSEC_REPLAY_PROTECT = 12,
-IFLA_MACSEC_VALIDATION = 13,
-IFLA_MACSEC_PAD = 14,
-IFLA_MACSEC_OFFLOAD = 15,
-__IFLA_MACSEC_MAX = 16,
-}
-pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC;
-pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK;
-pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID;
-pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA;
-pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_16 {
-IFLA_XFRM_UNSPEC = 0,
-IFLA_XFRM_LINK = 1,
-IFLA_XFRM_IF_ID = 2,
-IFLA_XFRM_COLLECT_METADATA = 3,
-__IFLA_XFRM_MAX = 4,
-}
-impl macsec_validation_type {
-pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_validation_type {
-MACSEC_VALIDATE_DISABLED = 0,
-MACSEC_VALIDATE_CHECK = 1,
-MACSEC_VALIDATE_STRICT = 2,
-__MACSEC_VALIDATE_END = 3,
-}
-impl macsec_offload {
-pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_offload {
-MACSEC_OFFLOAD_OFF = 0,
-MACSEC_OFFLOAD_PHY = 1,
-MACSEC_OFFLOAD_MAC = 2,
-__MACSEC_OFFLOAD_END = 3,
-}
-pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC;
-pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE;
-pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS;
-pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_17 {
-IFLA_IPVLAN_UNSPEC = 0,
-IFLA_IPVLAN_MODE = 1,
-IFLA_IPVLAN_FLAGS = 2,
-__IFLA_IPVLAN_MAX = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ipvlan_mode {
-IPVLAN_MODE_L2 = 0,
-IPVLAN_MODE_L3 = 1,
-IPVLAN_MODE_L3S = 2,
-IPVLAN_MODE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tunnel_msg {
-pub family: __u8,
-pub flags: __u8,
-pub reserved2: __u16,
-pub ifindex: __u32,
-}
-pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC;
-pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD;
-pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_18 {
-VNIFILTER_ENTRY_STATS_UNSPEC = 0,
-VNIFILTER_ENTRY_STATS_RX_BYTES = 1,
-VNIFILTER_ENTRY_STATS_RX_PKTS = 2,
-VNIFILTER_ENTRY_STATS_RX_DROPS = 3,
-VNIFILTER_ENTRY_STATS_RX_ERRORS = 4,
-VNIFILTER_ENTRY_STATS_TX_BYTES = 5,
-VNIFILTER_ENTRY_STATS_TX_PKTS = 6,
-VNIFILTER_ENTRY_STATS_TX_DROPS = 7,
-VNIFILTER_ENTRY_STATS_TX_ERRORS = 8,
-VNIFILTER_ENTRY_STATS_PAD = 9,
-__VNIFILTER_ENTRY_STATS_MAX = 10,
-}
-pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START;
-pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6;
-pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS;
-pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_19 {
-VXLAN_VNIFILTER_ENTRY_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY_START = 1,
-VXLAN_VNIFILTER_ENTRY_END = 2,
-VXLAN_VNIFILTER_ENTRY_GROUP = 3,
-VXLAN_VNIFILTER_ENTRY_GROUP6 = 4,
-VXLAN_VNIFILTER_ENTRY_STATS = 5,
-__VXLAN_VNIFILTER_ENTRY_MAX = 6,
-}
-pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY;
-pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_20 {
-VXLAN_VNIFILTER_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY = 1,
-__VXLAN_VNIFILTER_MAX = 2,
-}
-pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC;
-pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID;
-pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP;
-pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK;
-pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL;
-pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL;
-pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS;
-pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING;
-pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING;
-pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT;
-pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE;
-pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY;
-pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC;
-pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS;
-pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS;
-pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT;
-pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6;
-pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6;
-pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX;
-pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX;
-pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX;
-pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP;
-pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL;
-pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA;
-pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL;
-pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE;
-pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT;
-pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF;
-pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER;
-pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_21 {
-IFLA_VXLAN_UNSPEC = 0,
-IFLA_VXLAN_ID = 1,
-IFLA_VXLAN_GROUP = 2,
-IFLA_VXLAN_LINK = 3,
-IFLA_VXLAN_LOCAL = 4,
-IFLA_VXLAN_TTL = 5,
-IFLA_VXLAN_TOS = 6,
-IFLA_VXLAN_LEARNING = 7,
-IFLA_VXLAN_AGEING = 8,
-IFLA_VXLAN_LIMIT = 9,
-IFLA_VXLAN_PORT_RANGE = 10,
-IFLA_VXLAN_PROXY = 11,
-IFLA_VXLAN_RSC = 12,
-IFLA_VXLAN_L2MISS = 13,
-IFLA_VXLAN_L3MISS = 14,
-IFLA_VXLAN_PORT = 15,
-IFLA_VXLAN_GROUP6 = 16,
-IFLA_VXLAN_LOCAL6 = 17,
-IFLA_VXLAN_UDP_CSUM = 18,
-IFLA_VXLAN_UDP_ZERO_CSUM6_TX = 19,
-IFLA_VXLAN_UDP_ZERO_CSUM6_RX = 20,
-IFLA_VXLAN_REMCSUM_TX = 21,
-IFLA_VXLAN_REMCSUM_RX = 22,
-IFLA_VXLAN_GBP = 23,
-IFLA_VXLAN_REMCSUM_NOPARTIAL = 24,
-IFLA_VXLAN_COLLECT_METADATA = 25,
-IFLA_VXLAN_LABEL = 26,
-IFLA_VXLAN_GPE = 27,
-IFLA_VXLAN_TTL_INHERIT = 28,
-IFLA_VXLAN_DF = 29,
-IFLA_VXLAN_VNIFILTER = 30,
-__IFLA_VXLAN_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vxlan_port_range {
-pub low: __be16,
-pub high: __be16,
-}
-impl ifla_vxlan_df {
-pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_vxlan_df {
-VXLAN_DF_UNSET = 0,
-VXLAN_DF_SET = 1,
-VXLAN_DF_INHERIT = 2,
-__VXLAN_DF_END = 3,
-}
-pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC;
-pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID;
-pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE;
-pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL;
-pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS;
-pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT;
-pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA;
-pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6;
-pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX;
-pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL;
-pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT;
-pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF;
-pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT;
-pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_22 {
-IFLA_GENEVE_UNSPEC = 0,
-IFLA_GENEVE_ID = 1,
-IFLA_GENEVE_REMOTE = 2,
-IFLA_GENEVE_TTL = 3,
-IFLA_GENEVE_TOS = 4,
-IFLA_GENEVE_PORT = 5,
-IFLA_GENEVE_COLLECT_METADATA = 6,
-IFLA_GENEVE_REMOTE6 = 7,
-IFLA_GENEVE_UDP_CSUM = 8,
-IFLA_GENEVE_UDP_ZERO_CSUM6_TX = 9,
-IFLA_GENEVE_UDP_ZERO_CSUM6_RX = 10,
-IFLA_GENEVE_LABEL = 11,
-IFLA_GENEVE_TTL_INHERIT = 12,
-IFLA_GENEVE_DF = 13,
-IFLA_GENEVE_INNER_PROTO_INHERIT = 14,
-__IFLA_GENEVE_MAX = 15,
-}
-impl ifla_geneve_df {
-pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_geneve_df {
-GENEVE_DF_UNSET = 0,
-GENEVE_DF_SET = 1,
-GENEVE_DF_INHERIT = 2,
-__GENEVE_DF_END = 3,
-}
-pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC;
-pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT;
-pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE;
-pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN;
-pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE;
-pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_23 {
-IFLA_BAREUDP_UNSPEC = 0,
-IFLA_BAREUDP_PORT = 1,
-IFLA_BAREUDP_ETHERTYPE = 2,
-IFLA_BAREUDP_SRCPORT_MIN = 3,
-IFLA_BAREUDP_MULTIPROTO_MODE = 4,
-__IFLA_BAREUDP_MAX = 5,
-}
-pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC;
-pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD;
-pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_24 {
-IFLA_PPP_UNSPEC = 0,
-IFLA_PPP_DEV_FD = 1,
-__IFLA_PPP_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_gtp_role {
-GTP_ROLE_GGSN = 0,
-GTP_ROLE_SGSN = 1,
-}
-pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC;
-pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0;
-pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1;
-pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE;
-pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE;
-pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS;
-pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT;
-pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_25 {
-IFLA_GTP_UNSPEC = 0,
-IFLA_GTP_FD0 = 1,
-IFLA_GTP_FD1 = 2,
-IFLA_GTP_PDP_HASHSIZE = 3,
-IFLA_GTP_ROLE = 4,
-IFLA_GTP_CREATE_SOCKETS = 5,
-IFLA_GTP_RESTART_COUNT = 6,
-__IFLA_GTP_MAX = 7,
-}
-pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC;
-pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE;
-pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE;
-pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON;
-pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY;
-pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY;
-pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER;
-pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL;
-pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET;
-pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE;
-pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS;
-pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY;
-pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT;
-pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC;
-pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY;
-pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP;
-pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF;
-pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE;
-pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS;
-pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL;
-pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE;
-pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE;
-pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT;
-pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO;
-pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO;
-pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY;
-pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM;
-pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB;
-pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY;
-pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE;
-pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX;
-pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET;
-pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_26 {
-IFLA_BOND_UNSPEC = 0,
-IFLA_BOND_MODE = 1,
-IFLA_BOND_ACTIVE_SLAVE = 2,
-IFLA_BOND_MIIMON = 3,
-IFLA_BOND_UPDELAY = 4,
-IFLA_BOND_DOWNDELAY = 5,
-IFLA_BOND_USE_CARRIER = 6,
-IFLA_BOND_ARP_INTERVAL = 7,
-IFLA_BOND_ARP_IP_TARGET = 8,
-IFLA_BOND_ARP_VALIDATE = 9,
-IFLA_BOND_ARP_ALL_TARGETS = 10,
-IFLA_BOND_PRIMARY = 11,
-IFLA_BOND_PRIMARY_RESELECT = 12,
-IFLA_BOND_FAIL_OVER_MAC = 13,
-IFLA_BOND_XMIT_HASH_POLICY = 14,
-IFLA_BOND_RESEND_IGMP = 15,
-IFLA_BOND_NUM_PEER_NOTIF = 16,
-IFLA_BOND_ALL_SLAVES_ACTIVE = 17,
-IFLA_BOND_MIN_LINKS = 18,
-IFLA_BOND_LP_INTERVAL = 19,
-IFLA_BOND_PACKETS_PER_SLAVE = 20,
-IFLA_BOND_AD_LACP_RATE = 21,
-IFLA_BOND_AD_SELECT = 22,
-IFLA_BOND_AD_INFO = 23,
-IFLA_BOND_AD_ACTOR_SYS_PRIO = 24,
-IFLA_BOND_AD_USER_PORT_KEY = 25,
-IFLA_BOND_AD_ACTOR_SYSTEM = 26,
-IFLA_BOND_TLB_DYNAMIC_LB = 27,
-IFLA_BOND_PEER_NOTIF_DELAY = 28,
-IFLA_BOND_AD_LACP_ACTIVE = 29,
-IFLA_BOND_MISSED_MAX = 30,
-IFLA_BOND_NS_IP6_TARGET = 31,
-__IFLA_BOND_MAX = 32,
-}
-pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC;
-pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR;
-pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS;
-pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC;
-pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_27 {
-IFLA_BOND_AD_INFO_UNSPEC = 0,
-IFLA_BOND_AD_INFO_AGGREGATOR = 1,
-IFLA_BOND_AD_INFO_NUM_PORTS = 2,
-IFLA_BOND_AD_INFO_ACTOR_KEY = 3,
-IFLA_BOND_AD_INFO_PARTNER_KEY = 4,
-IFLA_BOND_AD_INFO_PARTNER_MAC = 5,
-__IFLA_BOND_AD_INFO_MAX = 6,
-}
-pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC;
-pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE;
-pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS;
-pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT;
-pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR;
-pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID;
-pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID;
-pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO;
-pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_28 {
-IFLA_BOND_SLAVE_UNSPEC = 0,
-IFLA_BOND_SLAVE_STATE = 1,
-IFLA_BOND_SLAVE_MII_STATUS = 2,
-IFLA_BOND_SLAVE_LINK_FAILURE_COUNT = 3,
-IFLA_BOND_SLAVE_PERM_HWADDR = 4,
-IFLA_BOND_SLAVE_QUEUE_ID = 5,
-IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 6,
-IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 7,
-IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 8,
-IFLA_BOND_SLAVE_PRIO = 9,
-__IFLA_BOND_SLAVE_MAX = 10,
-}
-pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC;
-pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO;
-pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_29 {
-IFLA_VF_INFO_UNSPEC = 0,
-IFLA_VF_INFO = 1,
-__IFLA_VF_INFO_MAX = 2,
-}
-pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC;
-pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC;
-pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN;
-pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE;
-pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK;
-pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE;
-pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE;
-pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN;
-pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS;
-pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST;
-pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID;
-pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID;
-pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST;
-pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST;
-pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_30 {
-IFLA_VF_UNSPEC = 0,
-IFLA_VF_MAC = 1,
-IFLA_VF_VLAN = 2,
-IFLA_VF_TX_RATE = 3,
-IFLA_VF_SPOOFCHK = 4,
-IFLA_VF_LINK_STATE = 5,
-IFLA_VF_RATE = 6,
-IFLA_VF_RSS_QUERY_EN = 7,
-IFLA_VF_STATS = 8,
-IFLA_VF_TRUST = 9,
-IFLA_VF_IB_NODE_GUID = 10,
-IFLA_VF_IB_PORT_GUID = 11,
-IFLA_VF_VLAN_LIST = 12,
-IFLA_VF_BROADCAST = 13,
-__IFLA_VF_MAX = 14,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_mac {
-pub vf: __u32,
-pub mac: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_broadcast {
-pub broadcast: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-}
-pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC;
-pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO;
-pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_31 {
-IFLA_VF_VLAN_INFO_UNSPEC = 0,
-IFLA_VF_VLAN_INFO = 1,
-__IFLA_VF_VLAN_INFO_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan_info {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-pub vlan_proto: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_tx_rate {
-pub vf: __u32,
-pub rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rate {
-pub vf: __u32,
-pub min_tx_rate: __u32,
-pub max_tx_rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_spoofchk {
-pub vf: __u32,
-pub setting: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_guid {
-pub vf: __u32,
-pub guid: __u64,
-}
-pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO;
-pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE;
-pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE;
-pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_32 {
-IFLA_VF_LINK_STATE_AUTO = 0,
-IFLA_VF_LINK_STATE_ENABLE = 1,
-IFLA_VF_LINK_STATE_DISABLE = 2,
-__IFLA_VF_LINK_STATE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_link_state {
-pub vf: __u32,
-pub link_state: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rss_query_en {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS;
-pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS;
-pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES;
-pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES;
-pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST;
-pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST;
-pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD;
-pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED;
-pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED;
-pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_33 {
-IFLA_VF_STATS_RX_PACKETS = 0,
-IFLA_VF_STATS_TX_PACKETS = 1,
-IFLA_VF_STATS_RX_BYTES = 2,
-IFLA_VF_STATS_TX_BYTES = 3,
-IFLA_VF_STATS_BROADCAST = 4,
-IFLA_VF_STATS_MULTICAST = 5,
-IFLA_VF_STATS_PAD = 6,
-IFLA_VF_STATS_RX_DROPPED = 7,
-IFLA_VF_STATS_TX_DROPPED = 8,
-__IFLA_VF_STATS_MAX = 9,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_trust {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC;
-pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT;
-pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_34 {
-IFLA_VF_PORT_UNSPEC = 0,
-IFLA_VF_PORT = 1,
-__IFLA_VF_PORT_MAX = 2,
-}
-pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC;
-pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF;
-pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE;
-pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE;
-pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID;
-pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID;
-pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST;
-pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE;
-pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_35 {
-IFLA_PORT_UNSPEC = 0,
-IFLA_PORT_VF = 1,
-IFLA_PORT_PROFILE = 2,
-IFLA_PORT_VSI_TYPE = 3,
-IFLA_PORT_INSTANCE_UUID = 4,
-IFLA_PORT_HOST_UUID = 5,
-IFLA_PORT_REQUEST = 6,
-IFLA_PORT_RESPONSE = 7,
-__IFLA_PORT_MAX = 8,
-}
-pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE;
-pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR;
-pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE;
-pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_36 {
-PORT_REQUEST_PREASSOCIATE = 0,
-PORT_REQUEST_PREASSOCIATE_RR = 1,
-PORT_REQUEST_ASSOCIATE = 2,
-PORT_REQUEST_DISASSOCIATE = 3,
-}
-pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS;
-pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT;
-pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID;
-pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION;
-pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION;
-pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC;
-pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS;
-pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS;
-pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID;
-pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE;
-pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_37 {
-PORT_VDP_RESPONSE_SUCCESS = 0,
-PORT_VDP_RESPONSE_INVALID_FORMAT = 1,
-PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES = 2,
-PORT_VDP_RESPONSE_UNUSED_VTID = 3,
-PORT_VDP_RESPONSE_VTID_VIOLATION = 4,
-PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION = 5,
-PORT_VDP_RESPONSE_OUT_OF_SYNC = 6,
-PORT_PROFILE_RESPONSE_SUCCESS = 256,
-PORT_PROFILE_RESPONSE_INPROGRESS = 257,
-PORT_PROFILE_RESPONSE_INVALID = 258,
-PORT_PROFILE_RESPONSE_BADSTATE = 259,
-PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260,
-PORT_PROFILE_RESPONSE_ERROR = 261,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_port_vsi {
-pub vsi_mgr_id: __u8,
-pub vsi_type_id: [__u8; 3usize],
-pub vsi_type_version: __u8,
-pub pad: [__u8; 3usize],
-}
-pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC;
-pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY;
-pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE;
-pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST;
-pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_38 {
-IFLA_IPOIB_UNSPEC = 0,
-IFLA_IPOIB_PKEY = 1,
-IFLA_IPOIB_MODE = 2,
-IFLA_IPOIB_UMCAST = 3,
-__IFLA_IPOIB_MAX = 4,
-}
-pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM;
-pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_39 {
-IPOIB_MODE_DATAGRAM = 0,
-IPOIB_MODE_CONNECTED = 1,
-}
-pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR;
-pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP;
-pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_40 {
-HSR_PROTOCOL_HSR = 0,
-HSR_PROTOCOL_PRP = 1,
-HSR_PROTOCOL_MAX = 2,
-}
-pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC;
-pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1;
-pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2;
-pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC;
-pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR;
-pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR;
-pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION;
-pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL;
-pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_41 {
-IFLA_HSR_UNSPEC = 0,
-IFLA_HSR_SLAVE1 = 1,
-IFLA_HSR_SLAVE2 = 2,
-IFLA_HSR_MULTICAST_SPEC = 3,
-IFLA_HSR_SUPERVISION_ADDR = 4,
-IFLA_HSR_SEQ_NR = 5,
-IFLA_HSR_VERSION = 6,
-IFLA_HSR_PROTOCOL = 7,
-__IFLA_HSR_MAX = 8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct if_stats_msg {
-pub family: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub ifindex: __u32,
-pub filter_mask: __u32,
-}
-pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC;
-pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64;
-pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS;
-pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE;
-pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS;
-pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC;
-pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_42 {
-IFLA_STATS_UNSPEC = 0,
-IFLA_STATS_LINK_64 = 1,
-IFLA_STATS_LINK_XSTATS = 2,
-IFLA_STATS_LINK_XSTATS_SLAVE = 3,
-IFLA_STATS_LINK_OFFLOAD_XSTATS = 4,
-IFLA_STATS_AF_SPEC = 5,
-__IFLA_STATS_MAX = 6,
-}
-pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC;
-pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS;
-pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_43 {
-IFLA_STATS_GETSET_UNSPEC = 0,
-IFLA_STATS_GET_FILTERS = 1,
-IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2,
-__IFLA_STATS_GETSET_MAX = 3,
-}
-pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC;
-pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE;
-pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND;
-pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_44 {
-LINK_XSTATS_TYPE_UNSPEC = 0,
-LINK_XSTATS_TYPE_BRIDGE = 1,
-LINK_XSTATS_TYPE_BOND = 2,
-__LINK_XSTATS_TYPE_MAX = 3,
-}
-pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO;
-pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_45 {
-IFLA_OFFLOAD_XSTATS_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_CPU_HIT = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO = 2,
-IFLA_OFFLOAD_XSTATS_L3_STATS = 3,
-__IFLA_OFFLOAD_XSTATS_MAX = 4,
-}
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED;
-pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_46 {
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2,
-__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3,
-}
-pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE;
-pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV;
-pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB;
-pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW;
-pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_47 {
-XDP_ATTACHED_NONE = 0,
-XDP_ATTACHED_DRV = 1,
-XDP_ATTACHED_SKB = 2,
-XDP_ATTACHED_HW = 3,
-XDP_ATTACHED_MULTI = 4,
-}
-pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC;
-pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD;
-pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED;
-pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS;
-pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID;
-pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID;
-pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID;
-pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID;
-pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD;
-pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_48 {
-IFLA_XDP_UNSPEC = 0,
-IFLA_XDP_FD = 1,
-IFLA_XDP_ATTACHED = 2,
-IFLA_XDP_FLAGS = 3,
-IFLA_XDP_PROG_ID = 4,
-IFLA_XDP_DRV_PROG_ID = 5,
-IFLA_XDP_SKB_PROG_ID = 6,
-IFLA_XDP_HW_PROG_ID = 7,
-IFLA_XDP_EXPECTED_FD = 8,
-__IFLA_XDP_MAX = 9,
-}
-pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE;
-pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT;
-pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES;
-pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER;
-pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS;
-pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND;
-pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_49 {
-IFLA_EVENT_NONE = 0,
-IFLA_EVENT_REBOOT = 1,
-IFLA_EVENT_FEATURES = 2,
-IFLA_EVENT_BONDING_FAILOVER = 3,
-IFLA_EVENT_NOTIFY_PEERS = 4,
-IFLA_EVENT_IGMP_RESEND = 5,
-IFLA_EVENT_BONDING_OPTIONS = 6,
-}
-pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC;
-pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER;
-pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP;
-pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE;
-pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI;
-pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR;
-pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST;
-pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE;
-pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES;
-pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES;
-pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_50 {
-IFLA_TUN_UNSPEC = 0,
-IFLA_TUN_OWNER = 1,
-IFLA_TUN_GROUP = 2,
-IFLA_TUN_TYPE = 3,
-IFLA_TUN_PI = 4,
-IFLA_TUN_VNET_HDR = 5,
-IFLA_TUN_PERSIST = 6,
-IFLA_TUN_MULTI_QUEUE = 7,
-IFLA_TUN_NUM_QUEUES = 8,
-IFLA_TUN_NUM_DISABLED_QUEUES = 9,
-__IFLA_TUN_MAX = 10,
-}
-pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC;
-pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID;
-pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS;
-pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_51 {
-IFLA_RMNET_UNSPEC = 0,
-IFLA_RMNET_MUX_ID = 1,
-IFLA_RMNET_FLAGS = 2,
-__IFLA_RMNET_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_rmnet_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC;
-pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET;
-pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_52 {
-IFLA_MCTP_UNSPEC = 0,
-IFLA_MCTP_NET = 1,
-__IFLA_MCTP_MAX = 2,
-}
-pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC;
-pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER;
-pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_53 {
-IFLA_DSA_UNSPEC = 0,
-IFLA_DSA_MASTER = 1,
-__IFLA_DSA_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifaddrmsg {
-pub ifa_family: __u8,
-pub ifa_prefixlen: __u8,
-pub ifa_flags: __u8,
-pub ifa_scope: __u8,
-pub ifa_index: __u32,
-}
-pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC;
-pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS;
-pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL;
-pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL;
-pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST;
-pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST;
-pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO;
-pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST;
-pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS;
-pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY;
-pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID;
-pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO;
-pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_54 {
-IFA_UNSPEC = 0,
-IFA_ADDRESS = 1,
-IFA_LOCAL = 2,
-IFA_LABEL = 3,
-IFA_BROADCAST = 4,
-IFA_ANYCAST = 5,
-IFA_CACHEINFO = 6,
-IFA_MULTICAST = 7,
-IFA_FLAGS = 8,
-IFA_RT_PRIORITY = 9,
-IFA_TARGET_NETNSID = 10,
-IFA_PROTO = 11,
-__IFA_MAX = 12,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifa_cacheinfo {
-pub ifa_prefered: __u32,
-pub ifa_valid: __u32,
-pub cstamp: __u32,
-pub tstamp: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndmsg {
-pub ndm_family: __u8,
-pub ndm_pad1: __u8,
-pub ndm_pad2: __u16,
-pub ndm_ifindex: __s32,
-pub ndm_state: __u16,
-pub ndm_flags: __u8,
-pub ndm_type: __u8,
-}
-pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC;
-pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST;
-pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR;
-pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO;
-pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES;
-pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN;
-pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT;
-pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI;
-pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX;
-pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER;
-pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID;
-pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI;
-pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL;
-pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID;
-pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS;
-pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT;
-pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK;
-pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK;
-pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_55 {
-NDA_UNSPEC = 0,
-NDA_DST = 1,
-NDA_LLADDR = 2,
-NDA_CACHEINFO = 3,
-NDA_PROBES = 4,
-NDA_VLAN = 5,
-NDA_PORT = 6,
-NDA_VNI = 7,
-NDA_IFINDEX = 8,
-NDA_MASTER = 9,
-NDA_LINK_NETNSID = 10,
-NDA_SRC_VNI = 11,
-NDA_PROTOCOL = 12,
-NDA_NH_ID = 13,
-NDA_FDB_EXT_ATTRS = 14,
-NDA_FLAGS_EXT = 15,
-NDA_NDM_STATE_MASK = 16,
-NDA_NDM_FLAGS_MASK = 17,
-__NDA_MAX = 18,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nda_cacheinfo {
-pub ndm_confirmed: __u32,
-pub ndm_used: __u32,
-pub ndm_updated: __u32,
-pub ndm_refcnt: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_stats {
-pub ndts_allocs: __u64,
-pub ndts_destroys: __u64,
-pub ndts_hash_grows: __u64,
-pub ndts_res_failed: __u64,
-pub ndts_lookups: __u64,
-pub ndts_hits: __u64,
-pub ndts_rcv_probes_mcast: __u64,
-pub ndts_rcv_probes_ucast: __u64,
-pub ndts_periodic_gc_runs: __u64,
-pub ndts_forced_gc_runs: __u64,
-pub ndts_table_fulls: __u64,
-}
-pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC;
-pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX;
-pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT;
-pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME;
-pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME;
-pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME;
-pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME;
-pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME;
-pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN;
-pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES;
-pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES;
-pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES;
-pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY;
-pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY;
-pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN;
-pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME;
-pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES;
-pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES;
-pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD;
-pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS;
-pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_56 {
-NDTPA_UNSPEC = 0,
-NDTPA_IFINDEX = 1,
-NDTPA_REFCNT = 2,
-NDTPA_REACHABLE_TIME = 3,
-NDTPA_BASE_REACHABLE_TIME = 4,
-NDTPA_RETRANS_TIME = 5,
-NDTPA_GC_STALETIME = 6,
-NDTPA_DELAY_PROBE_TIME = 7,
-NDTPA_QUEUE_LEN = 8,
-NDTPA_APP_PROBES = 9,
-NDTPA_UCAST_PROBES = 10,
-NDTPA_MCAST_PROBES = 11,
-NDTPA_ANYCAST_DELAY = 12,
-NDTPA_PROXY_DELAY = 13,
-NDTPA_PROXY_QLEN = 14,
-NDTPA_LOCKTIME = 15,
-NDTPA_QUEUE_LENBYTES = 16,
-NDTPA_MCAST_REPROBES = 17,
-NDTPA_PAD = 18,
-NDTPA_INTERVAL_PROBE_TIME_MS = 19,
-__NDTPA_MAX = 20,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndtmsg {
-pub ndtm_family: __u8,
-pub ndtm_pad1: __u8,
-pub ndtm_pad2: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_config {
-pub ndtc_key_len: __u16,
-pub ndtc_entry_size: __u16,
-pub ndtc_entries: __u32,
-pub ndtc_last_flush: __u32,
-pub ndtc_last_rand: __u32,
-pub ndtc_hash_rnd: __u32,
-pub ndtc_hash_mask: __u32,
-pub ndtc_hash_chain_gc: __u32,
-pub ndtc_proxy_qlen: __u32,
-}
-pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC;
-pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME;
-pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1;
-pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2;
-pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3;
-pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG;
-pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS;
-pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS;
-pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL;
-pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD;
-pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_57 {
-NDTA_UNSPEC = 0,
-NDTA_NAME = 1,
-NDTA_THRESH1 = 2,
-NDTA_THRESH2 = 3,
-NDTA_THRESH3 = 4,
-NDTA_CONFIG = 5,
-NDTA_PARMS = 6,
-NDTA_STATS = 7,
-NDTA_GC_INTERVAL = 8,
-NDTA_PAD = 9,
-__NDTA_MAX = 10,
-}
-pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT;
-pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_58 {
-FDB_NOTIFY_BIT = 1,
-FDB_NOTIFY_INACTIVE_BIT = 2,
-}
-pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC;
-pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY;
-pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH;
-pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_59 {
-NFEA_UNSPEC = 0,
-NFEA_ACTIVITY_NOTIFY = 1,
-NFEA_DONT_REFRESH = 2,
-__NFEA_MAX = 3,
-}
-pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK;
-pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK;
-pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK;
-pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR;
-pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR;
-pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR;
-pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE;
-pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE;
-pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE;
-pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH;
-pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH;
-pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH;
-pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE;
-pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE;
-pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE;
-pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC;
-pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC;
-pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC;
-pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS;
-pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS;
-pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS;
-pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER;
-pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER;
-pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER;
-pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION;
-pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION;
-pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION;
-pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX;
-pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST;
-pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST;
-pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL;
-pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL;
-pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL;
-pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT;
-pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL;
-pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL;
-pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL;
-pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB;
-pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB;
-pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF;
-pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF;
-pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF;
-pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB;
-pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB;
-pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB;
-pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID;
-pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID;
-pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID;
-pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS;
-pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS;
-pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS;
-pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT;
-pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN;
-pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN;
-pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN;
-pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP;
-pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP;
-pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP;
-pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP;
-pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP;
-pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP;
-pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN;
-pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN;
-pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN;
-pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET;
-pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET;
-pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET;
-pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL;
-pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL;
-pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL;
-pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_60 {
-RTM_BASE = 16,
-RTM_DELLINK = 17,
-RTM_GETLINK = 18,
-RTM_SETLINK = 19,
-RTM_NEWADDR = 20,
-RTM_DELADDR = 21,
-RTM_GETADDR = 22,
-RTM_NEWROUTE = 24,
-RTM_DELROUTE = 25,
-RTM_GETROUTE = 26,
-RTM_NEWNEIGH = 28,
-RTM_DELNEIGH = 29,
-RTM_GETNEIGH = 30,
-RTM_NEWRULE = 32,
-RTM_DELRULE = 33,
-RTM_GETRULE = 34,
-RTM_NEWQDISC = 36,
-RTM_DELQDISC = 37,
-RTM_GETQDISC = 38,
-RTM_NEWTCLASS = 40,
-RTM_DELTCLASS = 41,
-RTM_GETTCLASS = 42,
-RTM_NEWTFILTER = 44,
-RTM_DELTFILTER = 45,
-RTM_GETTFILTER = 46,
-RTM_NEWACTION = 48,
-RTM_DELACTION = 49,
-RTM_GETACTION = 50,
-RTM_NEWPREFIX = 52,
-RTM_GETMULTICAST = 58,
-RTM_GETANYCAST = 62,
-RTM_NEWNEIGHTBL = 64,
-RTM_GETNEIGHTBL = 66,
-RTM_SETNEIGHTBL = 67,
-RTM_NEWNDUSEROPT = 68,
-RTM_NEWADDRLABEL = 72,
-RTM_DELADDRLABEL = 73,
-RTM_GETADDRLABEL = 74,
-RTM_GETDCB = 78,
-RTM_SETDCB = 79,
-RTM_NEWNETCONF = 80,
-RTM_DELNETCONF = 81,
-RTM_GETNETCONF = 82,
-RTM_NEWMDB = 84,
-RTM_DELMDB = 85,
-RTM_GETMDB = 86,
-RTM_NEWNSID = 88,
-RTM_DELNSID = 89,
-RTM_GETNSID = 90,
-RTM_NEWSTATS = 92,
-RTM_GETSTATS = 94,
-RTM_SETSTATS = 95,
-RTM_NEWCACHEREPORT = 96,
-RTM_NEWCHAIN = 100,
-RTM_DELCHAIN = 101,
-RTM_GETCHAIN = 102,
-RTM_NEWNEXTHOP = 104,
-RTM_DELNEXTHOP = 105,
-RTM_GETNEXTHOP = 106,
-RTM_NEWLINKPROP = 108,
-RTM_DELLINKPROP = 109,
-RTM_GETLINKPROP = 110,
-RTM_NEWVLAN = 112,
-RTM_DELVLAN = 113,
-RTM_GETVLAN = 114,
-RTM_NEWNEXTHOPBUCKET = 116,
-RTM_DELNEXTHOPBUCKET = 117,
-RTM_GETNEXTHOPBUCKET = 118,
-RTM_NEWTUNNEL = 120,
-RTM_DELTUNNEL = 121,
-RTM_GETTUNNEL = 122,
-__RTM_MAX = 123,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtattr {
-pub rta_len: crate::ctypes::c_ushort,
-pub rta_type: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtmsg {
-pub rtm_family: crate::ctypes::c_uchar,
-pub rtm_dst_len: crate::ctypes::c_uchar,
-pub rtm_src_len: crate::ctypes::c_uchar,
-pub rtm_tos: crate::ctypes::c_uchar,
-pub rtm_table: crate::ctypes::c_uchar,
-pub rtm_protocol: crate::ctypes::c_uchar,
-pub rtm_scope: crate::ctypes::c_uchar,
-pub rtm_type: crate::ctypes::c_uchar,
-pub rtm_flags: crate::ctypes::c_uint,
-}
-pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC;
-pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST;
-pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL;
-pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST;
-pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST;
-pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST;
-pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE;
-pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE;
-pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT;
-pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW;
-pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT;
-pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE;
-pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_61 {
-RTN_UNSPEC = 0,
-RTN_UNICAST = 1,
-RTN_LOCAL = 2,
-RTN_BROADCAST = 3,
-RTN_ANYCAST = 4,
-RTN_MULTICAST = 5,
-RTN_BLACKHOLE = 6,
-RTN_UNREACHABLE = 7,
-RTN_PROHIBIT = 8,
-RTN_THROW = 9,
-RTN_NAT = 10,
-RTN_XRESOLVE = 11,
-__RTN_MAX = 12,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_scope_t {
-RT_SCOPE_UNIVERSE = 0,
-RT_SCOPE_SITE = 200,
-RT_SCOPE_LINK = 253,
-RT_SCOPE_HOST = 254,
-RT_SCOPE_NOWHERE = 255,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_class_t {
-RT_TABLE_UNSPEC = 0,
-RT_TABLE_COMPAT = 252,
-RT_TABLE_DEFAULT = 253,
-RT_TABLE_MAIN = 254,
-RT_TABLE_LOCAL = 255,
-RT_TABLE_MAX = 4294967295,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtattr_type_t {
-RTA_UNSPEC = 0,
-RTA_DST = 1,
-RTA_SRC = 2,
-RTA_IIF = 3,
-RTA_OIF = 4,
-RTA_GATEWAY = 5,
-RTA_PRIORITY = 6,
-RTA_PREFSRC = 7,
-RTA_METRICS = 8,
-RTA_MULTIPATH = 9,
-RTA_PROTOINFO = 10,
-RTA_FLOW = 11,
-RTA_CACHEINFO = 12,
-RTA_SESSION = 13,
-RTA_MP_ALGO = 14,
-RTA_TABLE = 15,
-RTA_MARK = 16,
-RTA_MFC_STATS = 17,
-RTA_VIA = 18,
-RTA_NEWDST = 19,
-RTA_PREF = 20,
-RTA_ENCAP_TYPE = 21,
-RTA_ENCAP = 22,
-RTA_EXPIRES = 23,
-RTA_PAD = 24,
-RTA_UID = 25,
-RTA_TTL_PROPAGATE = 26,
-RTA_IP_PROTO = 27,
-RTA_SPORT = 28,
-RTA_DPORT = 29,
-RTA_NH_ID = 30,
-__RTA_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnexthop {
-pub rtnh_len: crate::ctypes::c_ushort,
-pub rtnh_flags: crate::ctypes::c_uchar,
-pub rtnh_hops: crate::ctypes::c_uchar,
-pub rtnh_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rtvia {
-pub rtvia_family: __kernel_sa_family_t,
-pub rtvia_addr: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_cacheinfo {
-pub rta_clntref: __u32,
-pub rta_lastuse: __u32,
-pub rta_expires: __s32,
-pub rta_error: __u32,
-pub rta_used: __u32,
-pub rta_id: __u32,
-pub rta_ts: __u32,
-pub rta_tsage: __u32,
-}
-pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC;
-pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK;
-pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU;
-pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW;
-pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT;
-pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR;
-pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH;
-pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND;
-pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS;
-pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING;
-pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT;
-pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND;
-pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES;
-pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN;
-pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND;
-pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK;
-pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO;
-pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE;
-pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_62 {
-RTAX_UNSPEC = 0,
-RTAX_LOCK = 1,
-RTAX_MTU = 2,
-RTAX_WINDOW = 3,
-RTAX_RTT = 4,
-RTAX_RTTVAR = 5,
-RTAX_SSTHRESH = 6,
-RTAX_CWND = 7,
-RTAX_ADVMSS = 8,
-RTAX_REORDERING = 9,
-RTAX_HOPLIMIT = 10,
-RTAX_INITCWND = 11,
-RTAX_FEATURES = 12,
-RTAX_RTO_MIN = 13,
-RTAX_INITRWND = 14,
-RTAX_QUICKACK = 15,
-RTAX_CC_ALGO = 16,
-RTAX_FASTOPEN_NO_COOKIE = 17,
-__RTAX_MAX = 18,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rta_session {
-pub proto: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub u: rta_session__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union rta_session__bindgen_ty_1 {
-pub ports: rta_session__bindgen_ty_1__bindgen_ty_1,
-pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2,
-pub spi: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_1 {
-pub sport: __u16,
-pub dport: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_2 {
-pub type_: __u8,
-pub code: __u8,
-pub ident: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_mfc_stats {
-pub mfcs_packets: __u64,
-pub mfcs_bytes: __u64,
-pub mfcs_wrong_if: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtgenmsg {
-pub rtgen_family: crate::ctypes::c_uchar,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifinfomsg {
-pub ifi_family: crate::ctypes::c_uchar,
-pub __ifi_pad: crate::ctypes::c_uchar,
-pub ifi_type: crate::ctypes::c_ushort,
-pub ifi_index: crate::ctypes::c_int,
-pub ifi_flags: crate::ctypes::c_uint,
-pub ifi_change: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefixmsg {
-pub prefix_family: crate::ctypes::c_uchar,
-pub prefix_pad1: crate::ctypes::c_uchar,
-pub prefix_pad2: crate::ctypes::c_ushort,
-pub prefix_ifindex: crate::ctypes::c_int,
-pub prefix_type: crate::ctypes::c_uchar,
-pub prefix_len: crate::ctypes::c_uchar,
-pub prefix_flags: crate::ctypes::c_uchar,
-pub prefix_pad3: crate::ctypes::c_uchar,
-}
-pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC;
-pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS;
-pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO;
-pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_63 {
-PREFIX_UNSPEC = 0,
-PREFIX_ADDRESS = 1,
-PREFIX_CACHEINFO = 2,
-__PREFIX_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefix_cacheinfo {
-pub preferred_time: __u32,
-pub valid_time: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcmsg {
-pub tcm_family: crate::ctypes::c_uchar,
-pub tcm__pad1: crate::ctypes::c_uchar,
-pub tcm__pad2: crate::ctypes::c_ushort,
-pub tcm_ifindex: crate::ctypes::c_int,
-pub tcm_handle: __u32,
-pub tcm_parent: __u32,
-pub tcm_info: __u32,
-}
-pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC;
-pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND;
-pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS;
-pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS;
-pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS;
-pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE;
-pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT;
-pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2;
-pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB;
-pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD;
-pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE;
-pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN;
-pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD;
-pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK;
-pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK;
-pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS;
-pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_64 {
-TCA_UNSPEC = 0,
-TCA_KIND = 1,
-TCA_OPTIONS = 2,
-TCA_STATS = 3,
-TCA_XSTATS = 4,
-TCA_RATE = 5,
-TCA_FCNT = 6,
-TCA_STATS2 = 7,
-TCA_STAB = 8,
-TCA_PAD = 9,
-TCA_DUMP_INVISIBLE = 10,
-TCA_CHAIN = 11,
-TCA_HW_OFFLOAD = 12,
-TCA_INGRESS_BLOCK = 13,
-TCA_EGRESS_BLOCK = 14,
-TCA_DUMP_FLAGS = 15,
-__TCA_MAX = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nduseroptmsg {
-pub nduseropt_family: crate::ctypes::c_uchar,
-pub nduseropt_pad1: crate::ctypes::c_uchar,
-pub nduseropt_opts_len: crate::ctypes::c_ushort,
-pub nduseropt_ifindex: crate::ctypes::c_int,
-pub nduseropt_icmp_type: __u8,
-pub nduseropt_icmp_code: __u8,
-pub nduseropt_pad2: crate::ctypes::c_ushort,
-pub nduseropt_pad3: crate::ctypes::c_uint,
-}
-pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC;
-pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR;
-pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_65 {
-NDUSEROPT_UNSPEC = 0,
-NDUSEROPT_SRCADDR = 1,
-__NDUSEROPT_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtnetlink_groups {
-RTNLGRP_NONE = 0,
-RTNLGRP_LINK = 1,
-RTNLGRP_NOTIFY = 2,
-RTNLGRP_NEIGH = 3,
-RTNLGRP_TC = 4,
-RTNLGRP_IPV4_IFADDR = 5,
-RTNLGRP_IPV4_MROUTE = 6,
-RTNLGRP_IPV4_ROUTE = 7,
-RTNLGRP_IPV4_RULE = 8,
-RTNLGRP_IPV6_IFADDR = 9,
-RTNLGRP_IPV6_MROUTE = 10,
-RTNLGRP_IPV6_ROUTE = 11,
-RTNLGRP_IPV6_IFINFO = 12,
-RTNLGRP_DECnet_IFADDR = 13,
-RTNLGRP_NOP2 = 14,
-RTNLGRP_DECnet_ROUTE = 15,
-RTNLGRP_DECnet_RULE = 16,
-RTNLGRP_NOP4 = 17,
-RTNLGRP_IPV6_PREFIX = 18,
-RTNLGRP_IPV6_RULE = 19,
-RTNLGRP_ND_USEROPT = 20,
-RTNLGRP_PHONET_IFADDR = 21,
-RTNLGRP_PHONET_ROUTE = 22,
-RTNLGRP_DCB = 23,
-RTNLGRP_IPV4_NETCONF = 24,
-RTNLGRP_IPV6_NETCONF = 25,
-RTNLGRP_MDB = 26,
-RTNLGRP_MPLS_ROUTE = 27,
-RTNLGRP_NSID = 28,
-RTNLGRP_MPLS_NETCONF = 29,
-RTNLGRP_IPV4_MROUTE_R = 30,
-RTNLGRP_IPV6_MROUTE_R = 31,
-RTNLGRP_NEXTHOP = 32,
-RTNLGRP_BRVLAN = 33,
-RTNLGRP_MCTP_IFADDR = 34,
-RTNLGRP_TUNNEL = 35,
-RTNLGRP_STATS = 36,
-__RTNLGRP_MAX = 37,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcamsg {
-pub tca_family: crate::ctypes::c_uchar,
-pub tca__pad1: crate::ctypes::c_uchar,
-pub tca__pad2: crate::ctypes::c_ushort,
-}
-pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC;
-pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB;
-pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS;
-pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT;
-pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA;
-pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_66 {
-TCA_ROOT_UNSPEC = 0,
-TCA_ROOT_TAB = 1,
-TCA_ROOT_FLAGS = 2,
-TCA_ROOT_COUNT = 3,
-TCA_ROOT_TIME_DELTA = 4,
-__TCA_ROOT_MAX = 5,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/mips64/errno.rs b/vendor/linux-raw-sys-0.3.2/src/mips64/errno.rs
deleted file mode 100644
index c43288df3..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/mips64/errno.rs
+++ /dev/null
@@ -1,137 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const EPERM: u32 = 1;
-pub const ENOENT: u32 = 2;
-pub const ESRCH: u32 = 3;
-pub const EINTR: u32 = 4;
-pub const EIO: u32 = 5;
-pub const ENXIO: u32 = 6;
-pub const E2BIG: u32 = 7;
-pub const ENOEXEC: u32 = 8;
-pub const EBADF: u32 = 9;
-pub const ECHILD: u32 = 10;
-pub const EAGAIN: u32 = 11;
-pub const ENOMEM: u32 = 12;
-pub const EACCES: u32 = 13;
-pub const EFAULT: u32 = 14;
-pub const ENOTBLK: u32 = 15;
-pub const EBUSY: u32 = 16;
-pub const EEXIST: u32 = 17;
-pub const EXDEV: u32 = 18;
-pub const ENODEV: u32 = 19;
-pub const ENOTDIR: u32 = 20;
-pub const EISDIR: u32 = 21;
-pub const EINVAL: u32 = 22;
-pub const ENFILE: u32 = 23;
-pub const EMFILE: u32 = 24;
-pub const ENOTTY: u32 = 25;
-pub const ETXTBSY: u32 = 26;
-pub const EFBIG: u32 = 27;
-pub const ENOSPC: u32 = 28;
-pub const ESPIPE: u32 = 29;
-pub const EROFS: u32 = 30;
-pub const EMLINK: u32 = 31;
-pub const EPIPE: u32 = 32;
-pub const EDOM: u32 = 33;
-pub const ERANGE: u32 = 34;
-pub const ENOMSG: u32 = 35;
-pub const EIDRM: u32 = 36;
-pub const ECHRNG: u32 = 37;
-pub const EL2NSYNC: u32 = 38;
-pub const EL3HLT: u32 = 39;
-pub const EL3RST: u32 = 40;
-pub const ELNRNG: u32 = 41;
-pub const EUNATCH: u32 = 42;
-pub const ENOCSI: u32 = 43;
-pub const EL2HLT: u32 = 44;
-pub const EDEADLK: u32 = 45;
-pub const ENOLCK: u32 = 46;
-pub const EBADE: u32 = 50;
-pub const EBADR: u32 = 51;
-pub const EXFULL: u32 = 52;
-pub const ENOANO: u32 = 53;
-pub const EBADRQC: u32 = 54;
-pub const EBADSLT: u32 = 55;
-pub const EDEADLOCK: u32 = 56;
-pub const EBFONT: u32 = 59;
-pub const ENOSTR: u32 = 60;
-pub const ENODATA: u32 = 61;
-pub const ETIME: u32 = 62;
-pub const ENOSR: u32 = 63;
-pub const ENONET: u32 = 64;
-pub const ENOPKG: u32 = 65;
-pub const EREMOTE: u32 = 66;
-pub const ENOLINK: u32 = 67;
-pub const EADV: u32 = 68;
-pub const ESRMNT: u32 = 69;
-pub const ECOMM: u32 = 70;
-pub const EPROTO: u32 = 71;
-pub const EDOTDOT: u32 = 73;
-pub const EMULTIHOP: u32 = 74;
-pub const EBADMSG: u32 = 77;
-pub const ENAMETOOLONG: u32 = 78;
-pub const EOVERFLOW: u32 = 79;
-pub const ENOTUNIQ: u32 = 80;
-pub const EBADFD: u32 = 81;
-pub const EREMCHG: u32 = 82;
-pub const ELIBACC: u32 = 83;
-pub const ELIBBAD: u32 = 84;
-pub const ELIBSCN: u32 = 85;
-pub const ELIBMAX: u32 = 86;
-pub const ELIBEXEC: u32 = 87;
-pub const EILSEQ: u32 = 88;
-pub const ENOSYS: u32 = 89;
-pub const ELOOP: u32 = 90;
-pub const ERESTART: u32 = 91;
-pub const ESTRPIPE: u32 = 92;
-pub const ENOTEMPTY: u32 = 93;
-pub const EUSERS: u32 = 94;
-pub const ENOTSOCK: u32 = 95;
-pub const EDESTADDRREQ: u32 = 96;
-pub const EMSGSIZE: u32 = 97;
-pub const EPROTOTYPE: u32 = 98;
-pub const ENOPROTOOPT: u32 = 99;
-pub const EPROTONOSUPPORT: u32 = 120;
-pub const ESOCKTNOSUPPORT: u32 = 121;
-pub const EOPNOTSUPP: u32 = 122;
-pub const EPFNOSUPPORT: u32 = 123;
-pub const EAFNOSUPPORT: u32 = 124;
-pub const EADDRINUSE: u32 = 125;
-pub const EADDRNOTAVAIL: u32 = 126;
-pub const ENETDOWN: u32 = 127;
-pub const ENETUNREACH: u32 = 128;
-pub const ENETRESET: u32 = 129;
-pub const ECONNABORTED: u32 = 130;
-pub const ECONNRESET: u32 = 131;
-pub const ENOBUFS: u32 = 132;
-pub const EISCONN: u32 = 133;
-pub const ENOTCONN: u32 = 134;
-pub const EUCLEAN: u32 = 135;
-pub const ENOTNAM: u32 = 137;
-pub const ENAVAIL: u32 = 138;
-pub const EISNAM: u32 = 139;
-pub const EREMOTEIO: u32 = 140;
-pub const EINIT: u32 = 141;
-pub const EREMDEV: u32 = 142;
-pub const ESHUTDOWN: u32 = 143;
-pub const ETOOMANYREFS: u32 = 144;
-pub const ETIMEDOUT: u32 = 145;
-pub const ECONNREFUSED: u32 = 146;
-pub const EHOSTDOWN: u32 = 147;
-pub const EHOSTUNREACH: u32 = 148;
-pub const EWOULDBLOCK: u32 = 11;
-pub const EALREADY: u32 = 149;
-pub const EINPROGRESS: u32 = 150;
-pub const ESTALE: u32 = 151;
-pub const ECANCELED: u32 = 158;
-pub const ENOMEDIUM: u32 = 159;
-pub const EMEDIUMTYPE: u32 = 160;
-pub const ENOKEY: u32 = 161;
-pub const EKEYEXPIRED: u32 = 162;
-pub const EKEYREVOKED: u32 = 163;
-pub const EKEYREJECTED: u32 = 164;
-pub const EOWNERDEAD: u32 = 165;
-pub const ENOTRECOVERABLE: u32 = 166;
-pub const ERFKILL: u32 = 167;
-pub const EHWPOISON: u32 = 168;
-pub const EDQUOT: u32 = 1133;
diff --git a/vendor/linux-raw-sys-0.3.2/src/mips64/general.rs b/vendor/linux-raw-sys-0.3.2/src/mips64/general.rs
deleted file mode 100644
index 9a6ad5532..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/mips64/general.rs
+++ /dev/null
@@ -1,5469 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
-pub struct __BindgenBitfieldUnit<Storage> {
-storage: Storage,
-}
-impl<Storage> __BindgenBitfieldUnit<Storage> {
-#[inline]
-pub const fn new(storage: Storage) -> Self {
-Self { storage }
-}
-}
-impl<Storage> __BindgenBitfieldUnit<Storage>
-where
-Storage: AsRef<[u8]> + AsMut<[u8]>,
-{
-#[inline]
-pub fn get_bit(&self, index: usize) -> bool {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = self.storage.as_ref()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-byte & mask == mask
-}
-#[inline]
-pub fn set_bit(&mut self, index: usize, val: bool) {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = &mut self.storage.as_mut()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-if val {
-*byte |= mask;
-} else {
-*byte &= !mask;
-}
-}
-#[inline]
-pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-let mut val = 0;
-for i in 0..(bit_width as usize) {
-if self.get_bit(i + bit_offset) {
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-val |= 1 << index;
-}
-}
-val
-}
-#[inline]
-pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-for i in 0..(bit_width as usize) {
-let mask = 1 << i;
-let val_bit_is_set = val & mask == mask;
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-self.set_bit(index + bit_offset, val_bit_is_set);
-}
-}
-}
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-#[repr(C)]
-pub struct __BindgenUnionField<T>(::core::marker::PhantomData<T>);
-impl<T> __BindgenUnionField<T> {
-#[inline]
-pub const fn new() -> Self {
-__BindgenUnionField(::core::marker::PhantomData)
-}
-#[inline]
-pub unsafe fn as_ref(&self) -> &T {
-::core::mem::transmute(self)
-}
-#[inline]
-pub unsafe fn as_mut(&mut self) -> &mut T {
-::core::mem::transmute(self)
-}
-}
-impl<T> ::core::default::Default for __BindgenUnionField<T> {
-#[inline]
-fn default() -> Self {
-Self::new()
-}
-}
-impl<T> ::core::clone::Clone for __BindgenUnionField<T> {
-#[inline]
-fn clone(&self) -> Self {
-Self::new()
-}
-}
-impl<T> ::core::marker::Copy for __BindgenUnionField<T> {}
-impl<T> ::core::fmt::Debug for __BindgenUnionField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__BindgenUnionField")
-}
-}
-impl<T> ::core::hash::Hash for __BindgenUnionField<T> {
-fn hash<H: ::core::hash::Hasher>(&self, _state: &mut H) {}
-}
-impl<T> ::core::cmp::PartialEq for __BindgenUnionField<T> {
-fn eq(&self, _other: &__BindgenUnionField<T>) -> bool {
-true
-}
-}
-impl<T> ::core::cmp::Eq for __BindgenUnionField<T> {}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const AT_SYSINFO_EHDR: u32 = 33;
-pub const AT_VECTOR_SIZE_ARCH: u32 = 1;
-pub const AT_NULL: u32 = 0;
-pub const AT_IGNORE: u32 = 1;
-pub const AT_EXECFD: u32 = 2;
-pub const AT_PHDR: u32 = 3;
-pub const AT_PHENT: u32 = 4;
-pub const AT_PHNUM: u32 = 5;
-pub const AT_PAGESZ: u32 = 6;
-pub const AT_BASE: u32 = 7;
-pub const AT_FLAGS: u32 = 8;
-pub const AT_ENTRY: u32 = 9;
-pub const AT_NOTELF: u32 = 10;
-pub const AT_UID: u32 = 11;
-pub const AT_EUID: u32 = 12;
-pub const AT_GID: u32 = 13;
-pub const AT_EGID: u32 = 14;
-pub const AT_PLATFORM: u32 = 15;
-pub const AT_HWCAP: u32 = 16;
-pub const AT_CLKTCK: u32 = 17;
-pub const AT_SECURE: u32 = 23;
-pub const AT_BASE_PLATFORM: u32 = 24;
-pub const AT_RANDOM: u32 = 25;
-pub const AT_HWCAP2: u32 = 26;
-pub const AT_EXECFN: u32 = 31;
-pub const AT_MINSIGSTKSZ: u32 = 51;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const _MIPS_ISA_MIPS1: u32 = 1;
-pub const _MIPS_ISA_MIPS2: u32 = 2;
-pub const _MIPS_ISA_MIPS3: u32 = 3;
-pub const _MIPS_ISA_MIPS4: u32 = 4;
-pub const _MIPS_ISA_MIPS5: u32 = 5;
-pub const _MIPS_ISA_MIPS32: u32 = 6;
-pub const _MIPS_ISA_MIPS64: u32 = 7;
-pub const _MIPS_SIM_ABI32: u32 = 1;
-pub const _MIPS_SIM_NABI32: u32 = 2;
-pub const _MIPS_SIM_ABI64: u32 = 3;
-pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S_1: u32 = 1;
-pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798;
-pub const _LINUX_CAPABILITY_U32S_2: u32 = 2;
-pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514;
-pub const _LINUX_CAPABILITY_U32S_3: u32 = 2;
-pub const VFS_CAP_REVISION_MASK: u32 = 4278190080;
-pub const VFS_CAP_REVISION_SHIFT: u32 = 24;
-pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081;
-pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1;
-pub const VFS_CAP_REVISION_1: u32 = 16777216;
-pub const VFS_CAP_U32_1: u32 = 1;
-pub const VFS_CAP_REVISION_2: u32 = 33554432;
-pub const VFS_CAP_U32_2: u32 = 2;
-pub const VFS_CAP_REVISION_3: u32 = 50331648;
-pub const VFS_CAP_U32_3: u32 = 2;
-pub const VFS_CAP_U32: u32 = 2;
-pub const VFS_CAP_REVISION: u32 = 50331648;
-pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S: u32 = 1;
-pub const CAP_CHOWN: u32 = 0;
-pub const CAP_DAC_OVERRIDE: u32 = 1;
-pub const CAP_DAC_READ_SEARCH: u32 = 2;
-pub const CAP_FOWNER: u32 = 3;
-pub const CAP_FSETID: u32 = 4;
-pub const CAP_KILL: u32 = 5;
-pub const CAP_SETGID: u32 = 6;
-pub const CAP_SETUID: u32 = 7;
-pub const CAP_SETPCAP: u32 = 8;
-pub const CAP_LINUX_IMMUTABLE: u32 = 9;
-pub const CAP_NET_BIND_SERVICE: u32 = 10;
-pub const CAP_NET_BROADCAST: u32 = 11;
-pub const CAP_NET_ADMIN: u32 = 12;
-pub const CAP_NET_RAW: u32 = 13;
-pub const CAP_IPC_LOCK: u32 = 14;
-pub const CAP_IPC_OWNER: u32 = 15;
-pub const CAP_SYS_MODULE: u32 = 16;
-pub const CAP_SYS_RAWIO: u32 = 17;
-pub const CAP_SYS_CHROOT: u32 = 18;
-pub const CAP_SYS_PTRACE: u32 = 19;
-pub const CAP_SYS_PACCT: u32 = 20;
-pub const CAP_SYS_ADMIN: u32 = 21;
-pub const CAP_SYS_BOOT: u32 = 22;
-pub const CAP_SYS_NICE: u32 = 23;
-pub const CAP_SYS_RESOURCE: u32 = 24;
-pub const CAP_SYS_TIME: u32 = 25;
-pub const CAP_SYS_TTY_CONFIG: u32 = 26;
-pub const CAP_MKNOD: u32 = 27;
-pub const CAP_LEASE: u32 = 28;
-pub const CAP_AUDIT_WRITE: u32 = 29;
-pub const CAP_AUDIT_CONTROL: u32 = 30;
-pub const CAP_SETFCAP: u32 = 31;
-pub const CAP_MAC_OVERRIDE: u32 = 32;
-pub const CAP_MAC_ADMIN: u32 = 33;
-pub const CAP_SYSLOG: u32 = 34;
-pub const CAP_WAKE_ALARM: u32 = 35;
-pub const CAP_BLOCK_SUSPEND: u32 = 36;
-pub const CAP_AUDIT_READ: u32 = 37;
-pub const CAP_PERFMON: u32 = 38;
-pub const CAP_BPF: u32 = 39;
-pub const CAP_CHECKPOINT_RESTORE: u32 = 40;
-pub const CAP_LAST_CAP: u32 = 40;
-pub const O_APPEND: u32 = 8;
-pub const O_DSYNC: u32 = 16;
-pub const O_NONBLOCK: u32 = 128;
-pub const O_CREAT: u32 = 256;
-pub const O_TRUNC: u32 = 512;
-pub const O_EXCL: u32 = 1024;
-pub const O_NOCTTY: u32 = 2048;
-pub const FASYNC: u32 = 4096;
-pub const O_LARGEFILE: u32 = 8192;
-pub const __O_SYNC: u32 = 16384;
-pub const O_SYNC: u32 = 16400;
-pub const O_DIRECT: u32 = 32768;
-pub const F_GETLK: u32 = 14;
-pub const F_SETLK: u32 = 6;
-pub const F_SETLKW: u32 = 7;
-pub const F_SETOWN: u32 = 24;
-pub const F_GETOWN: u32 = 23;
-pub const O_ACCMODE: u32 = 3;
-pub const O_RDONLY: u32 = 0;
-pub const O_WRONLY: u32 = 1;
-pub const O_RDWR: u32 = 2;
-pub const O_DIRECTORY: u32 = 65536;
-pub const O_NOFOLLOW: u32 = 131072;
-pub const O_NOATIME: u32 = 262144;
-pub const O_CLOEXEC: u32 = 524288;
-pub const O_PATH: u32 = 2097152;
-pub const __O_TMPFILE: u32 = 4194304;
-pub const O_TMPFILE: u32 = 4259840;
-pub const O_TMPFILE_MASK: u32 = 4260096;
-pub const O_NDELAY: u32 = 128;
-pub const F_DUPFD: u32 = 0;
-pub const F_GETFD: u32 = 1;
-pub const F_SETFD: u32 = 2;
-pub const F_GETFL: u32 = 3;
-pub const F_SETFL: u32 = 4;
-pub const F_SETSIG: u32 = 10;
-pub const F_GETSIG: u32 = 11;
-pub const F_SETOWN_EX: u32 = 15;
-pub const F_GETOWN_EX: u32 = 16;
-pub const F_GETOWNER_UIDS: u32 = 17;
-pub const F_OFD_GETLK: u32 = 36;
-pub const F_OFD_SETLK: u32 = 37;
-pub const F_OFD_SETLKW: u32 = 38;
-pub const F_OWNER_TID: u32 = 0;
-pub const F_OWNER_PID: u32 = 1;
-pub const F_OWNER_PGRP: u32 = 2;
-pub const FD_CLOEXEC: u32 = 1;
-pub const F_RDLCK: u32 = 0;
-pub const F_WRLCK: u32 = 1;
-pub const F_UNLCK: u32 = 2;
-pub const F_EXLCK: u32 = 4;
-pub const F_SHLCK: u32 = 8;
-pub const LOCK_SH: u32 = 1;
-pub const LOCK_EX: u32 = 2;
-pub const LOCK_NB: u32 = 4;
-pub const LOCK_UN: u32 = 8;
-pub const LOCK_MAND: u32 = 32;
-pub const LOCK_READ: u32 = 64;
-pub const LOCK_WRITE: u32 = 128;
-pub const LOCK_RW: u32 = 192;
-pub const F_LINUX_SPECIFIC_BASE: u32 = 1024;
-pub const RESOLVE_NO_XDEV: u32 = 1;
-pub const RESOLVE_NO_MAGICLINKS: u32 = 2;
-pub const RESOLVE_NO_SYMLINKS: u32 = 4;
-pub const RESOLVE_BENEATH: u32 = 8;
-pub const RESOLVE_IN_ROOT: u32 = 16;
-pub const RESOLVE_CACHED: u32 = 32;
-pub const F_SETLEASE: u32 = 1024;
-pub const F_GETLEASE: u32 = 1025;
-pub const F_CANCELLK: u32 = 1029;
-pub const F_DUPFD_CLOEXEC: u32 = 1030;
-pub const F_NOTIFY: u32 = 1026;
-pub const F_SETPIPE_SZ: u32 = 1031;
-pub const F_GETPIPE_SZ: u32 = 1032;
-pub const F_ADD_SEALS: u32 = 1033;
-pub const F_GET_SEALS: u32 = 1034;
-pub const F_SEAL_SEAL: u32 = 1;
-pub const F_SEAL_SHRINK: u32 = 2;
-pub const F_SEAL_GROW: u32 = 4;
-pub const F_SEAL_WRITE: u32 = 8;
-pub const F_SEAL_FUTURE_WRITE: u32 = 16;
-pub const F_GET_RW_HINT: u32 = 1035;
-pub const F_SET_RW_HINT: u32 = 1036;
-pub const F_GET_FILE_RW_HINT: u32 = 1037;
-pub const F_SET_FILE_RW_HINT: u32 = 1038;
-pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const RWH_WRITE_LIFE_NONE: u32 = 1;
-pub const RWH_WRITE_LIFE_SHORT: u32 = 2;
-pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3;
-pub const RWH_WRITE_LIFE_LONG: u32 = 4;
-pub const RWH_WRITE_LIFE_EXTREME: u32 = 5;
-pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const DN_ACCESS: u32 = 1;
-pub const DN_MODIFY: u32 = 2;
-pub const DN_CREATE: u32 = 4;
-pub const DN_DELETE: u32 = 8;
-pub const DN_RENAME: u32 = 16;
-pub const DN_ATTRIB: u32 = 32;
-pub const DN_MULTISHOT: u32 = 2147483648;
-pub const AT_FDCWD: i32 = -100;
-pub const AT_SYMLINK_NOFOLLOW: u32 = 256;
-pub const AT_EACCESS: u32 = 512;
-pub const AT_REMOVEDIR: u32 = 512;
-pub const AT_SYMLINK_FOLLOW: u32 = 1024;
-pub const AT_NO_AUTOMOUNT: u32 = 2048;
-pub const AT_EMPTY_PATH: u32 = 4096;
-pub const AT_STATX_SYNC_TYPE: u32 = 24576;
-pub const AT_STATX_SYNC_AS_STAT: u32 = 0;
-pub const AT_STATX_FORCE_SYNC: u32 = 8192;
-pub const AT_STATX_DONT_SYNC: u32 = 16384;
-pub const AT_RECURSIVE: u32 = 32768;
-pub const EPOLL_CLOEXEC: u32 = 524288;
-pub const EPOLL_CTL_ADD: u32 = 1;
-pub const EPOLL_CTL_DEL: u32 = 2;
-pub const EPOLL_CTL_MOD: u32 = 3;
-pub const POSIX_FADV_NORMAL: u32 = 0;
-pub const POSIX_FADV_RANDOM: u32 = 1;
-pub const POSIX_FADV_SEQUENTIAL: u32 = 2;
-pub const POSIX_FADV_WILLNEED: u32 = 3;
-pub const POSIX_FADV_DONTNEED: u32 = 4;
-pub const POSIX_FADV_NOREUSE: u32 = 5;
-pub const FALLOC_FL_KEEP_SIZE: u32 = 1;
-pub const FALLOC_FL_PUNCH_HOLE: u32 = 2;
-pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4;
-pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8;
-pub const FALLOC_FL_ZERO_RANGE: u32 = 16;
-pub const FALLOC_FL_INSERT_RANGE: u32 = 32;
-pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64;
-pub const NR_OPEN: u32 = 1024;
-pub const NGROUPS_MAX: u32 = 65536;
-pub const ARG_MAX: u32 = 131072;
-pub const LINK_MAX: u32 = 127;
-pub const MAX_CANON: u32 = 255;
-pub const MAX_INPUT: u32 = 255;
-pub const NAME_MAX: u32 = 255;
-pub const PATH_MAX: u32 = 4096;
-pub const PIPE_BUF: u32 = 4096;
-pub const XATTR_NAME_MAX: u32 = 255;
-pub const XATTR_SIZE_MAX: u32 = 65536;
-pub const XATTR_LIST_MAX: u32 = 65536;
-pub const RTSIG_MAX: u32 = 32;
-pub const _IOC_SIZEBITS: u32 = 13;
-pub const _IOC_DIRBITS: u32 = 3;
-pub const _IOC_NONE: u32 = 1;
-pub const _IOC_READ: u32 = 2;
-pub const _IOC_WRITE: u32 = 4;
-pub const _IOC_NRBITS: u32 = 8;
-pub const _IOC_TYPEBITS: u32 = 8;
-pub const _IOC_NRMASK: u32 = 255;
-pub const _IOC_TYPEMASK: u32 = 255;
-pub const _IOC_SIZEMASK: u32 = 8191;
-pub const _IOC_DIRMASK: u32 = 7;
-pub const _IOC_NRSHIFT: u32 = 0;
-pub const _IOC_TYPESHIFT: u32 = 8;
-pub const _IOC_SIZESHIFT: u32 = 16;
-pub const _IOC_DIRSHIFT: u32 = 29;
-pub const IOC_IN: u32 = 2147483648;
-pub const IOC_OUT: u32 = 1073741824;
-pub const IOC_INOUT: u32 = 3221225472;
-pub const IOCSIZE_MASK: u32 = 536805376;
-pub const IOCSIZE_SHIFT: u32 = 16;
-pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16;
-pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1;
-pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4;
-pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5;
-pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6;
-pub const FSCRYPT_MODE_SM4_XTS: u32 = 7;
-pub const FSCRYPT_MODE_SM4_CTS: u32 = 8;
-pub const FSCRYPT_MODE_ADIANTUM: u32 = 9;
-pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10;
-pub const FSCRYPT_POLICY_V1: u32 = 0;
-pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64;
-pub const FSCRYPT_POLICY_V2: u32 = 2;
-pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16;
-pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1;
-pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1;
-pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3;
-pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1;
-pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FS_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FS_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FS_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FS_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FS_POLICY_FLAGS_VALID: u32 = 7;
-pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0;
-pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1;
-pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2;
-pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3;
-pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4;
-pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5;
-pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6;
-pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9;
-pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FS_MAX_KEY_SIZE: u32 = 64;
-pub const MS_RDONLY: u32 = 1;
-pub const MS_NOSUID: u32 = 2;
-pub const MS_NODEV: u32 = 4;
-pub const MS_NOEXEC: u32 = 8;
-pub const MS_SYNCHRONOUS: u32 = 16;
-pub const MS_REMOUNT: u32 = 32;
-pub const MS_MANDLOCK: u32 = 64;
-pub const MS_DIRSYNC: u32 = 128;
-pub const MS_NOSYMFOLLOW: u32 = 256;
-pub const MS_NOATIME: u32 = 1024;
-pub const MS_NODIRATIME: u32 = 2048;
-pub const MS_BIND: u32 = 4096;
-pub const MS_MOVE: u32 = 8192;
-pub const MS_REC: u32 = 16384;
-pub const MS_VERBOSE: u32 = 32768;
-pub const MS_SILENT: u32 = 32768;
-pub const MS_POSIXACL: u32 = 65536;
-pub const MS_UNBINDABLE: u32 = 131072;
-pub const MS_PRIVATE: u32 = 262144;
-pub const MS_SLAVE: u32 = 524288;
-pub const MS_SHARED: u32 = 1048576;
-pub const MS_RELATIME: u32 = 2097152;
-pub const MS_KERNMOUNT: u32 = 4194304;
-pub const MS_I_VERSION: u32 = 8388608;
-pub const MS_STRICTATIME: u32 = 16777216;
-pub const MS_LAZYTIME: u32 = 33554432;
-pub const MS_SUBMOUNT: u32 = 67108864;
-pub const MS_NOREMOTELOCK: u32 = 134217728;
-pub const MS_NOSEC: u32 = 268435456;
-pub const MS_BORN: u32 = 536870912;
-pub const MS_ACTIVE: u32 = 1073741824;
-pub const MS_NOUSER: u32 = 2147483648;
-pub const MS_RMT_MASK: u32 = 41943121;
-pub const MS_MGC_VAL: u32 = 3236757504;
-pub const MS_MGC_MSK: u32 = 4294901760;
-pub const OPEN_TREE_CLONE: u32 = 1;
-pub const OPEN_TREE_CLOEXEC: u32 = 524288;
-pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1;
-pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2;
-pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4;
-pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16;
-pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32;
-pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64;
-pub const MOVE_MOUNT_SET_GROUP: u32 = 256;
-pub const MOVE_MOUNT__MASK: u32 = 375;
-pub const FSOPEN_CLOEXEC: u32 = 1;
-pub const FSPICK_CLOEXEC: u32 = 1;
-pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2;
-pub const FSPICK_NO_AUTOMOUNT: u32 = 4;
-pub const FSPICK_EMPTY_PATH: u32 = 8;
-pub const FSMOUNT_CLOEXEC: u32 = 1;
-pub const MOUNT_ATTR_RDONLY: u32 = 1;
-pub const MOUNT_ATTR_NOSUID: u32 = 2;
-pub const MOUNT_ATTR_NODEV: u32 = 4;
-pub const MOUNT_ATTR_NOEXEC: u32 = 8;
-pub const MOUNT_ATTR__ATIME: u32 = 112;
-pub const MOUNT_ATTR_RELATIME: u32 = 0;
-pub const MOUNT_ATTR_NOATIME: u32 = 16;
-pub const MOUNT_ATTR_STRICTATIME: u32 = 32;
-pub const MOUNT_ATTR_NODIRATIME: u32 = 128;
-pub const MOUNT_ATTR_IDMAP: u32 = 1048576;
-pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152;
-pub const MOUNT_ATTR_SIZE_VER0: u32 = 32;
-pub const INR_OPEN_CUR: u32 = 1024;
-pub const INR_OPEN_MAX: u32 = 4096;
-pub const BLOCK_SIZE_BITS: u32 = 10;
-pub const BLOCK_SIZE: u32 = 1024;
-pub const SEEK_SET: u32 = 0;
-pub const SEEK_CUR: u32 = 1;
-pub const SEEK_END: u32 = 2;
-pub const SEEK_DATA: u32 = 3;
-pub const SEEK_HOLE: u32 = 4;
-pub const SEEK_MAX: u32 = 4;
-pub const RENAME_NOREPLACE: u32 = 1;
-pub const RENAME_EXCHANGE: u32 = 2;
-pub const RENAME_WHITEOUT: u32 = 4;
-pub const FILE_DEDUPE_RANGE_SAME: u32 = 0;
-pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1;
-pub const NR_FILE: u32 = 8192;
-pub const FS_XFLAG_REALTIME: u32 = 1;
-pub const FS_XFLAG_PREALLOC: u32 = 2;
-pub const FS_XFLAG_IMMUTABLE: u32 = 8;
-pub const FS_XFLAG_APPEND: u32 = 16;
-pub const FS_XFLAG_SYNC: u32 = 32;
-pub const FS_XFLAG_NOATIME: u32 = 64;
-pub const FS_XFLAG_NODUMP: u32 = 128;
-pub const FS_XFLAG_RTINHERIT: u32 = 256;
-pub const FS_XFLAG_PROJINHERIT: u32 = 512;
-pub const FS_XFLAG_NOSYMLINKS: u32 = 1024;
-pub const FS_XFLAG_EXTSIZE: u32 = 2048;
-pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096;
-pub const FS_XFLAG_NODEFRAG: u32 = 8192;
-pub const FS_XFLAG_FILESTREAM: u32 = 16384;
-pub const FS_XFLAG_DAX: u32 = 32768;
-pub const FS_XFLAG_COWEXTSIZE: u32 = 65536;
-pub const FS_XFLAG_HASATTR: u32 = 2147483648;
-pub const BMAP_IOCTL: u32 = 1;
-pub const FSLABEL_MAX: u32 = 256;
-pub const FS_SECRM_FL: u32 = 1;
-pub const FS_UNRM_FL: u32 = 2;
-pub const FS_COMPR_FL: u32 = 4;
-pub const FS_SYNC_FL: u32 = 8;
-pub const FS_IMMUTABLE_FL: u32 = 16;
-pub const FS_APPEND_FL: u32 = 32;
-pub const FS_NODUMP_FL: u32 = 64;
-pub const FS_NOATIME_FL: u32 = 128;
-pub const FS_DIRTY_FL: u32 = 256;
-pub const FS_COMPRBLK_FL: u32 = 512;
-pub const FS_NOCOMP_FL: u32 = 1024;
-pub const FS_ENCRYPT_FL: u32 = 2048;
-pub const FS_BTREE_FL: u32 = 4096;
-pub const FS_INDEX_FL: u32 = 4096;
-pub const FS_IMAGIC_FL: u32 = 8192;
-pub const FS_JOURNAL_DATA_FL: u32 = 16384;
-pub const FS_NOTAIL_FL: u32 = 32768;
-pub const FS_DIRSYNC_FL: u32 = 65536;
-pub const FS_TOPDIR_FL: u32 = 131072;
-pub const FS_HUGE_FILE_FL: u32 = 262144;
-pub const FS_EXTENT_FL: u32 = 524288;
-pub const FS_VERITY_FL: u32 = 1048576;
-pub const FS_EA_INODE_FL: u32 = 2097152;
-pub const FS_EOFBLOCKS_FL: u32 = 4194304;
-pub const FS_NOCOW_FL: u32 = 8388608;
-pub const FS_DAX_FL: u32 = 33554432;
-pub const FS_INLINE_DATA_FL: u32 = 268435456;
-pub const FS_PROJINHERIT_FL: u32 = 536870912;
-pub const FS_CASEFOLD_FL: u32 = 1073741824;
-pub const FS_RESERVED_FL: u32 = 2147483648;
-pub const FS_FL_USER_VISIBLE: u32 = 253951;
-pub const FS_FL_USER_MODIFIABLE: u32 = 229631;
-pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1;
-pub const SYNC_FILE_RANGE_WRITE: u32 = 2;
-pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4;
-pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7;
-pub const FUTEX_WAIT: u32 = 0;
-pub const FUTEX_WAKE: u32 = 1;
-pub const FUTEX_FD: u32 = 2;
-pub const FUTEX_REQUEUE: u32 = 3;
-pub const FUTEX_CMP_REQUEUE: u32 = 4;
-pub const FUTEX_WAKE_OP: u32 = 5;
-pub const FUTEX_LOCK_PI: u32 = 6;
-pub const FUTEX_UNLOCK_PI: u32 = 7;
-pub const FUTEX_TRYLOCK_PI: u32 = 8;
-pub const FUTEX_WAIT_BITSET: u32 = 9;
-pub const FUTEX_WAKE_BITSET: u32 = 10;
-pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11;
-pub const FUTEX_CMP_REQUEUE_PI: u32 = 12;
-pub const FUTEX_LOCK_PI2: u32 = 13;
-pub const FUTEX_PRIVATE_FLAG: u32 = 128;
-pub const FUTEX_CLOCK_REALTIME: u32 = 256;
-pub const FUTEX_CMD_MASK: i32 = -385;
-pub const FUTEX_WAIT_PRIVATE: u32 = 128;
-pub const FUTEX_WAKE_PRIVATE: u32 = 129;
-pub const FUTEX_REQUEUE_PRIVATE: u32 = 131;
-pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132;
-pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133;
-pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134;
-pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141;
-pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135;
-pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136;
-pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137;
-pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138;
-pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139;
-pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140;
-pub const FUTEX_32: u32 = 2;
-pub const FUTEX_WAITV_MAX: u32 = 128;
-pub const FUTEX_WAITERS: u32 = 2147483648;
-pub const FUTEX_OWNER_DIED: u32 = 1073741824;
-pub const FUTEX_TID_MASK: u32 = 1073741823;
-pub const ROBUST_LIST_LIMIT: u32 = 2048;
-pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295;
-pub const FUTEX_OP_SET: u32 = 0;
-pub const FUTEX_OP_ADD: u32 = 1;
-pub const FUTEX_OP_OR: u32 = 2;
-pub const FUTEX_OP_ANDN: u32 = 3;
-pub const FUTEX_OP_XOR: u32 = 4;
-pub const FUTEX_OP_OPARG_SHIFT: u32 = 8;
-pub const FUTEX_OP_CMP_EQ: u32 = 0;
-pub const FUTEX_OP_CMP_NE: u32 = 1;
-pub const FUTEX_OP_CMP_LT: u32 = 2;
-pub const FUTEX_OP_CMP_LE: u32 = 3;
-pub const FUTEX_OP_CMP_GT: u32 = 4;
-pub const FUTEX_OP_CMP_GE: u32 = 5;
-pub const __UAPI_DEF_IF_IFCONF: u32 = 1;
-pub const __UAPI_DEF_IF_IFMAP: u32 = 1;
-pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1;
-pub const __UAPI_DEF_IF_IFREQ: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1;
-pub const __UAPI_DEF_IN_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN_IPPROTO: u32 = 1;
-pub const __UAPI_DEF_IN_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP_MREQ: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1;
-pub const __UAPI_DEF_IN_CLASS: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1;
-pub const __UAPI_DEF_IPV6_MREQ: u32 = 1;
-pub const __UAPI_DEF_IPPROTO_V6: u32 = 1;
-pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1;
-pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1;
-pub const __UAPI_DEF_XATTR: u32 = 1;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const IP_TOS: u32 = 1;
-pub const IP_TTL: u32 = 2;
-pub const IP_HDRINCL: u32 = 3;
-pub const IP_OPTIONS: u32 = 4;
-pub const IP_ROUTER_ALERT: u32 = 5;
-pub const IP_RECVOPTS: u32 = 6;
-pub const IP_RETOPTS: u32 = 7;
-pub const IP_PKTINFO: u32 = 8;
-pub const IP_PKTOPTIONS: u32 = 9;
-pub const IP_MTU_DISCOVER: u32 = 10;
-pub const IP_RECVERR: u32 = 11;
-pub const IP_RECVTTL: u32 = 12;
-pub const IP_RECVTOS: u32 = 13;
-pub const IP_MTU: u32 = 14;
-pub const IP_FREEBIND: u32 = 15;
-pub const IP_IPSEC_POLICY: u32 = 16;
-pub const IP_XFRM_POLICY: u32 = 17;
-pub const IP_PASSSEC: u32 = 18;
-pub const IP_TRANSPARENT: u32 = 19;
-pub const IP_RECVRETOPTS: u32 = 7;
-pub const IP_ORIGDSTADDR: u32 = 20;
-pub const IP_RECVORIGDSTADDR: u32 = 20;
-pub const IP_MINTTL: u32 = 21;
-pub const IP_NODEFRAG: u32 = 22;
-pub const IP_CHECKSUM: u32 = 23;
-pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24;
-pub const IP_RECVFRAGSIZE: u32 = 25;
-pub const IP_RECVERR_RFC4884: u32 = 26;
-pub const IP_PMTUDISC_DONT: u32 = 0;
-pub const IP_PMTUDISC_WANT: u32 = 1;
-pub const IP_PMTUDISC_DO: u32 = 2;
-pub const IP_PMTUDISC_PROBE: u32 = 3;
-pub const IP_PMTUDISC_INTERFACE: u32 = 4;
-pub const IP_PMTUDISC_OMIT: u32 = 5;
-pub const IP_MULTICAST_IF: u32 = 32;
-pub const IP_MULTICAST_TTL: u32 = 33;
-pub const IP_MULTICAST_LOOP: u32 = 34;
-pub const IP_ADD_MEMBERSHIP: u32 = 35;
-pub const IP_DROP_MEMBERSHIP: u32 = 36;
-pub const IP_UNBLOCK_SOURCE: u32 = 37;
-pub const IP_BLOCK_SOURCE: u32 = 38;
-pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39;
-pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40;
-pub const IP_MSFILTER: u32 = 41;
-pub const MCAST_JOIN_GROUP: u32 = 42;
-pub const MCAST_BLOCK_SOURCE: u32 = 43;
-pub const MCAST_UNBLOCK_SOURCE: u32 = 44;
-pub const MCAST_LEAVE_GROUP: u32 = 45;
-pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46;
-pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47;
-pub const MCAST_MSFILTER: u32 = 48;
-pub const IP_MULTICAST_ALL: u32 = 49;
-pub const IP_UNICAST_IF: u32 = 50;
-pub const MCAST_EXCLUDE: u32 = 0;
-pub const MCAST_INCLUDE: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1;
-pub const __SOCK_SIZE__: u32 = 16;
-pub const IN_CLASSA_NET: u32 = 4278190080;
-pub const IN_CLASSA_NSHIFT: u32 = 24;
-pub const IN_CLASSA_HOST: u32 = 16777215;
-pub const IN_CLASSA_MAX: u32 = 128;
-pub const IN_CLASSB_NET: u32 = 4294901760;
-pub const IN_CLASSB_NSHIFT: u32 = 16;
-pub const IN_CLASSB_HOST: u32 = 65535;
-pub const IN_CLASSB_MAX: u32 = 65536;
-pub const IN_CLASSC_NET: u32 = 4294967040;
-pub const IN_CLASSC_NSHIFT: u32 = 8;
-pub const IN_CLASSC_HOST: u32 = 255;
-pub const IN_MULTICAST_NET: u32 = 3758096384;
-pub const IN_CLASSE_NET: u32 = 4294967295;
-pub const IN_CLASSE_NSHIFT: u32 = 0;
-pub const IN_LOOPBACKNET: u32 = 127;
-pub const INADDR_LOOPBACK: u32 = 2130706433;
-pub const INADDR_UNSPEC_GROUP: u32 = 3758096384;
-pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385;
-pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386;
-pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490;
-pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639;
-pub const __BIG_ENDIAN: u32 = 4321;
-pub const IN_ACCESS: u32 = 1;
-pub const IN_MODIFY: u32 = 2;
-pub const IN_ATTRIB: u32 = 4;
-pub const IN_CLOSE_WRITE: u32 = 8;
-pub const IN_CLOSE_NOWRITE: u32 = 16;
-pub const IN_OPEN: u32 = 32;
-pub const IN_MOVED_FROM: u32 = 64;
-pub const IN_MOVED_TO: u32 = 128;
-pub const IN_CREATE: u32 = 256;
-pub const IN_DELETE: u32 = 512;
-pub const IN_DELETE_SELF: u32 = 1024;
-pub const IN_MOVE_SELF: u32 = 2048;
-pub const IN_UNMOUNT: u32 = 8192;
-pub const IN_Q_OVERFLOW: u32 = 16384;
-pub const IN_IGNORED: u32 = 32768;
-pub const IN_CLOSE: u32 = 24;
-pub const IN_MOVE: u32 = 192;
-pub const IN_ONLYDIR: u32 = 16777216;
-pub const IN_DONT_FOLLOW: u32 = 33554432;
-pub const IN_EXCL_UNLINK: u32 = 67108864;
-pub const IN_MASK_CREATE: u32 = 268435456;
-pub const IN_MASK_ADD: u32 = 536870912;
-pub const IN_ISDIR: u32 = 1073741824;
-pub const IN_ONESHOT: u32 = 2147483648;
-pub const IN_ALL_EVENTS: u32 = 4095;
-pub const IN_CLOEXEC: u32 = 524288;
-pub const IN_NONBLOCK: u32 = 128;
-pub const IPTOS_TOS_MASK: u32 = 30;
-pub const IPTOS_LOWDELAY: u32 = 16;
-pub const IPTOS_THROUGHPUT: u32 = 8;
-pub const IPTOS_RELIABILITY: u32 = 4;
-pub const IPTOS_MINCOST: u32 = 2;
-pub const IPTOS_PREC_MASK: u32 = 224;
-pub const IPTOS_PREC_NETCONTROL: u32 = 224;
-pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192;
-pub const IPTOS_PREC_CRITIC_ECP: u32 = 160;
-pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128;
-pub const IPTOS_PREC_FLASH: u32 = 96;
-pub const IPTOS_PREC_IMMEDIATE: u32 = 64;
-pub const IPTOS_PREC_PRIORITY: u32 = 32;
-pub const IPTOS_PREC_ROUTINE: u32 = 0;
-pub const IPOPT_COPY: u32 = 128;
-pub const IPOPT_CLASS_MASK: u32 = 96;
-pub const IPOPT_NUMBER_MASK: u32 = 31;
-pub const IPOPT_CONTROL: u32 = 0;
-pub const IPOPT_RESERVED1: u32 = 32;
-pub const IPOPT_MEASUREMENT: u32 = 64;
-pub const IPOPT_RESERVED2: u32 = 96;
-pub const IPOPT_END: u32 = 0;
-pub const IPOPT_NOOP: u32 = 1;
-pub const IPOPT_SEC: u32 = 130;
-pub const IPOPT_LSRR: u32 = 131;
-pub const IPOPT_TIMESTAMP: u32 = 68;
-pub const IPOPT_CIPSO: u32 = 134;
-pub const IPOPT_RR: u32 = 7;
-pub const IPOPT_SID: u32 = 136;
-pub const IPOPT_SSRR: u32 = 137;
-pub const IPOPT_RA: u32 = 148;
-pub const IPVERSION: u32 = 4;
-pub const MAXTTL: u32 = 255;
-pub const IPDEFTTL: u32 = 64;
-pub const IPOPT_OPTVAL: u32 = 0;
-pub const IPOPT_OLEN: u32 = 1;
-pub const IPOPT_OFFSET: u32 = 2;
-pub const IPOPT_MINOFF: u32 = 4;
-pub const MAX_IPOPTLEN: u32 = 40;
-pub const IPOPT_NOP: u32 = 1;
-pub const IPOPT_EOL: u32 = 0;
-pub const IPOPT_TS: u32 = 68;
-pub const IPOPT_TS_TSONLY: u32 = 0;
-pub const IPOPT_TS_TSANDADDR: u32 = 1;
-pub const IPOPT_TS_PRESPEC: u32 = 3;
-pub const IPV4_BEET_PHMAXLEN: u32 = 8;
-pub const IPV6_FL_A_GET: u32 = 0;
-pub const IPV6_FL_A_PUT: u32 = 1;
-pub const IPV6_FL_A_RENEW: u32 = 2;
-pub const IPV6_FL_F_CREATE: u32 = 1;
-pub const IPV6_FL_F_EXCL: u32 = 2;
-pub const IPV6_FL_F_REFLECT: u32 = 4;
-pub const IPV6_FL_F_REMOTE: u32 = 8;
-pub const IPV6_FL_S_NONE: u32 = 0;
-pub const IPV6_FL_S_EXCL: u32 = 1;
-pub const IPV6_FL_S_PROCESS: u32 = 2;
-pub const IPV6_FL_S_USER: u32 = 3;
-pub const IPV6_FL_S_ANY: u32 = 255;
-pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575;
-pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880;
-pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0;
-pub const IPV6_PRIORITY_FILLER: u32 = 256;
-pub const IPV6_PRIORITY_UNATTENDED: u32 = 512;
-pub const IPV6_PRIORITY_RESERVED1: u32 = 768;
-pub const IPV6_PRIORITY_BULK: u32 = 1024;
-pub const IPV6_PRIORITY_RESERVED2: u32 = 1280;
-pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536;
-pub const IPV6_PRIORITY_CONTROL: u32 = 1792;
-pub const IPV6_PRIORITY_8: u32 = 2048;
-pub const IPV6_PRIORITY_9: u32 = 2304;
-pub const IPV6_PRIORITY_10: u32 = 2560;
-pub const IPV6_PRIORITY_11: u32 = 2816;
-pub const IPV6_PRIORITY_12: u32 = 3072;
-pub const IPV6_PRIORITY_13: u32 = 3328;
-pub const IPV6_PRIORITY_14: u32 = 3584;
-pub const IPV6_PRIORITY_15: u32 = 3840;
-pub const IPPROTO_HOPOPTS: u32 = 0;
-pub const IPPROTO_ROUTING: u32 = 43;
-pub const IPPROTO_FRAGMENT: u32 = 44;
-pub const IPPROTO_ICMPV6: u32 = 58;
-pub const IPPROTO_NONE: u32 = 59;
-pub const IPPROTO_DSTOPTS: u32 = 60;
-pub const IPPROTO_MH: u32 = 135;
-pub const IPV6_TLV_PAD1: u32 = 0;
-pub const IPV6_TLV_PADN: u32 = 1;
-pub const IPV6_TLV_ROUTERALERT: u32 = 5;
-pub const IPV6_TLV_CALIPSO: u32 = 7;
-pub const IPV6_TLV_IOAM: u32 = 49;
-pub const IPV6_TLV_JUMBO: u32 = 194;
-pub const IPV6_TLV_HAO: u32 = 201;
-pub const IPV6_ADDRFORM: u32 = 1;
-pub const IPV6_2292PKTINFO: u32 = 2;
-pub const IPV6_2292HOPOPTS: u32 = 3;
-pub const IPV6_2292DSTOPTS: u32 = 4;
-pub const IPV6_2292RTHDR: u32 = 5;
-pub const IPV6_2292PKTOPTIONS: u32 = 6;
-pub const IPV6_CHECKSUM: u32 = 7;
-pub const IPV6_2292HOPLIMIT: u32 = 8;
-pub const IPV6_NEXTHOP: u32 = 9;
-pub const IPV6_AUTHHDR: u32 = 10;
-pub const IPV6_FLOWINFO: u32 = 11;
-pub const IPV6_UNICAST_HOPS: u32 = 16;
-pub const IPV6_MULTICAST_IF: u32 = 17;
-pub const IPV6_MULTICAST_HOPS: u32 = 18;
-pub const IPV6_MULTICAST_LOOP: u32 = 19;
-pub const IPV6_ADD_MEMBERSHIP: u32 = 20;
-pub const IPV6_DROP_MEMBERSHIP: u32 = 21;
-pub const IPV6_ROUTER_ALERT: u32 = 22;
-pub const IPV6_MTU_DISCOVER: u32 = 23;
-pub const IPV6_MTU: u32 = 24;
-pub const IPV6_RECVERR: u32 = 25;
-pub const IPV6_V6ONLY: u32 = 26;
-pub const IPV6_JOIN_ANYCAST: u32 = 27;
-pub const IPV6_LEAVE_ANYCAST: u32 = 28;
-pub const IPV6_MULTICAST_ALL: u32 = 29;
-pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30;
-pub const IPV6_RECVERR_RFC4884: u32 = 31;
-pub const IPV6_PMTUDISC_DONT: u32 = 0;
-pub const IPV6_PMTUDISC_WANT: u32 = 1;
-pub const IPV6_PMTUDISC_DO: u32 = 2;
-pub const IPV6_PMTUDISC_PROBE: u32 = 3;
-pub const IPV6_PMTUDISC_INTERFACE: u32 = 4;
-pub const IPV6_PMTUDISC_OMIT: u32 = 5;
-pub const IPV6_FLOWLABEL_MGR: u32 = 32;
-pub const IPV6_FLOWINFO_SEND: u32 = 33;
-pub const IPV6_IPSEC_POLICY: u32 = 34;
-pub const IPV6_XFRM_POLICY: u32 = 35;
-pub const IPV6_HDRINCL: u32 = 36;
-pub const IPV6_RECVPKTINFO: u32 = 49;
-pub const IPV6_PKTINFO: u32 = 50;
-pub const IPV6_RECVHOPLIMIT: u32 = 51;
-pub const IPV6_HOPLIMIT: u32 = 52;
-pub const IPV6_RECVHOPOPTS: u32 = 53;
-pub const IPV6_HOPOPTS: u32 = 54;
-pub const IPV6_RTHDRDSTOPTS: u32 = 55;
-pub const IPV6_RECVRTHDR: u32 = 56;
-pub const IPV6_RTHDR: u32 = 57;
-pub const IPV6_RECVDSTOPTS: u32 = 58;
-pub const IPV6_DSTOPTS: u32 = 59;
-pub const IPV6_RECVPATHMTU: u32 = 60;
-pub const IPV6_PATHMTU: u32 = 61;
-pub const IPV6_DONTFRAG: u32 = 62;
-pub const IPV6_RECVTCLASS: u32 = 66;
-pub const IPV6_TCLASS: u32 = 67;
-pub const IPV6_AUTOFLOWLABEL: u32 = 70;
-pub const IPV6_ADDR_PREFERENCES: u32 = 72;
-pub const IPV6_PREFER_SRC_TMP: u32 = 1;
-pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2;
-pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256;
-pub const IPV6_PREFER_SRC_COA: u32 = 4;
-pub const IPV6_PREFER_SRC_HOME: u32 = 1024;
-pub const IPV6_PREFER_SRC_CGA: u32 = 8;
-pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048;
-pub const IPV6_MINHOPCOUNT: u32 = 73;
-pub const IPV6_ORIGDSTADDR: u32 = 74;
-pub const IPV6_RECVORIGDSTADDR: u32 = 74;
-pub const IPV6_TRANSPARENT: u32 = 75;
-pub const IPV6_UNICAST_IF: u32 = 76;
-pub const IPV6_RECVFRAGSIZE: u32 = 77;
-pub const IPV6_FREEBIND: u32 = 78;
-pub const IPV6_MIN_MTU: u32 = 1280;
-pub const IPV6_SRCRT_STRICT: u32 = 1;
-pub const IPV6_SRCRT_TYPE_0: u32 = 0;
-pub const IPV6_SRCRT_TYPE_2: u32 = 2;
-pub const IPV6_SRCRT_TYPE_3: u32 = 3;
-pub const IPV6_SRCRT_TYPE_4: u32 = 4;
-pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0;
-pub const ADFS_SUPER_MAGIC: u32 = 44533;
-pub const AFFS_SUPER_MAGIC: u32 = 44543;
-pub const AFS_SUPER_MAGIC: u32 = 1397113167;
-pub const AUTOFS_SUPER_MAGIC: u32 = 391;
-pub const CEPH_SUPER_MAGIC: u32 = 12805120;
-pub const CODA_SUPER_MAGIC: u32 = 1937076805;
-pub const CRAMFS_MAGIC: u32 = 684539205;
-pub const CRAMFS_MAGIC_WEND: u32 = 1161678120;
-pub const DEBUGFS_MAGIC: u32 = 1684170528;
-pub const SECURITYFS_MAGIC: u32 = 1935894131;
-pub const SELINUX_MAGIC: u32 = 4185718668;
-pub const SMACK_MAGIC: u32 = 1128357203;
-pub const RAMFS_MAGIC: u32 = 2240043254;
-pub const TMPFS_MAGIC: u32 = 16914836;
-pub const HUGETLBFS_MAGIC: u32 = 2508478710;
-pub const SQUASHFS_MAGIC: u32 = 1936814952;
-pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791;
-pub const EFS_SUPER_MAGIC: u32 = 4278867;
-pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530;
-pub const EXT2_SUPER_MAGIC: u32 = 61267;
-pub const EXT3_SUPER_MAGIC: u32 = 61267;
-pub const XENFS_SUPER_MAGIC: u32 = 2881100148;
-pub const EXT4_SUPER_MAGIC: u32 = 61267;
-pub const BTRFS_SUPER_MAGIC: u32 = 2435016766;
-pub const NILFS_SUPER_MAGIC: u32 = 13364;
-pub const F2FS_SUPER_MAGIC: u32 = 4076150800;
-pub const HPFS_SUPER_MAGIC: u32 = 4187351113;
-pub const ISOFS_SUPER_MAGIC: u32 = 38496;
-pub const JFFS2_SUPER_MAGIC: u32 = 29366;
-pub const XFS_SUPER_MAGIC: u32 = 1481003842;
-pub const PSTOREFS_MAGIC: u32 = 1634035564;
-pub const EFIVARFS_MAGIC: u32 = 3730735588;
-pub const HOSTFS_SUPER_MAGIC: u32 = 12648430;
-pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128;
-pub const FUSE_SUPER_MAGIC: u32 = 1702057286;
-pub const MINIX_SUPER_MAGIC: u32 = 4991;
-pub const MINIX_SUPER_MAGIC2: u32 = 5007;
-pub const MINIX2_SUPER_MAGIC: u32 = 9320;
-pub const MINIX2_SUPER_MAGIC2: u32 = 9336;
-pub const MINIX3_SUPER_MAGIC: u32 = 19802;
-pub const MSDOS_SUPER_MAGIC: u32 = 19780;
-pub const EXFAT_SUPER_MAGIC: u32 = 538032816;
-pub const NCP_SUPER_MAGIC: u32 = 22092;
-pub const NFS_SUPER_MAGIC: u32 = 26985;
-pub const OCFS2_SUPER_MAGIC: u32 = 1952539503;
-pub const OPENPROM_SUPER_MAGIC: u32 = 40865;
-pub const QNX4_SUPER_MAGIC: u32 = 47;
-pub const QNX6_SUPER_MAGIC: u32 = 1746473250;
-pub const AFS_FS_MAGIC: u32 = 1799439955;
-pub const REISERFS_SUPER_MAGIC: u32 = 1382369651;
-pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0";
-pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0";
-pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0";
-pub const SMB_SUPER_MAGIC: u32 = 20859;
-pub const CIFS_SUPER_MAGIC: u32 = 4283649346;
-pub const SMB2_SUPER_MAGIC: u32 = 4266872130;
-pub const CGROUP_SUPER_MAGIC: u32 = 2613483;
-pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888;
-pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209;
-pub const STACK_END_MAGIC: u32 = 1470918301;
-pub const TRACEFS_MAGIC: u32 = 1953653091;
-pub const V9FS_MAGIC: u32 = 16914839;
-pub const BDEVFS_MAGIC: u32 = 1650746742;
-pub const DAXFS_MAGIC: u32 = 1684300152;
-pub const BINFMTFS_MAGIC: u32 = 1112100429;
-pub const DEVPTS_SUPER_MAGIC: u32 = 7377;
-pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352;
-pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762;
-pub const PIPEFS_MAGIC: u32 = 1346981957;
-pub const PROC_SUPER_MAGIC: u32 = 40864;
-pub const SOCKFS_MAGIC: u32 = 1397703499;
-pub const SYSFS_MAGIC: u32 = 1650812274;
-pub const USBDEVICE_SUPER_MAGIC: u32 = 40866;
-pub const MTD_INODE_FS_MAGIC: u32 = 288389204;
-pub const ANON_INODE_FS_MAGIC: u32 = 151263540;
-pub const BTRFS_TEST_MAGIC: u32 = 1936880249;
-pub const NSFS_MAGIC: u32 = 1853056627;
-pub const BPF_FS_MAGIC: u32 = 3405662737;
-pub const AAFS_MAGIC: u32 = 1513908720;
-pub const ZONEFS_MAGIC: u32 = 1515144787;
-pub const UDF_SUPER_MAGIC: u32 = 352400198;
-pub const DMA_BUF_MAGIC: u32 = 1145913666;
-pub const DEVMEM_MAGIC: u32 = 1162691661;
-pub const SECRETMEM_MAGIC: u32 = 1397048141;
-pub const PROT_NONE: u32 = 0;
-pub const PROT_READ: u32 = 1;
-pub const PROT_WRITE: u32 = 2;
-pub const PROT_EXEC: u32 = 4;
-pub const PROT_SEM: u32 = 16;
-pub const PROT_GROWSDOWN: u32 = 16777216;
-pub const PROT_GROWSUP: u32 = 33554432;
-pub const MAP_TYPE: u32 = 15;
-pub const MAP_FIXED: u32 = 16;
-pub const MAP_RENAME: u32 = 32;
-pub const MAP_AUTOGROW: u32 = 64;
-pub const MAP_LOCAL: u32 = 128;
-pub const MAP_AUTORSRV: u32 = 256;
-pub const MAP_NORESERVE: u32 = 1024;
-pub const MAP_ANONYMOUS: u32 = 2048;
-pub const MAP_GROWSDOWN: u32 = 4096;
-pub const MAP_DENYWRITE: u32 = 8192;
-pub const MAP_EXECUTABLE: u32 = 16384;
-pub const MAP_LOCKED: u32 = 32768;
-pub const MAP_POPULATE: u32 = 65536;
-pub const MAP_NONBLOCK: u32 = 131072;
-pub const MAP_STACK: u32 = 262144;
-pub const MAP_HUGETLB: u32 = 524288;
-pub const MAP_FIXED_NOREPLACE: u32 = 1048576;
-pub const MS_ASYNC: u32 = 1;
-pub const MS_INVALIDATE: u32 = 2;
-pub const MS_SYNC: u32 = 4;
-pub const MCL_CURRENT: u32 = 1;
-pub const MCL_FUTURE: u32 = 2;
-pub const MCL_ONFAULT: u32 = 4;
-pub const MLOCK_ONFAULT: u32 = 1;
-pub const MADV_NORMAL: u32 = 0;
-pub const MADV_RANDOM: u32 = 1;
-pub const MADV_SEQUENTIAL: u32 = 2;
-pub const MADV_WILLNEED: u32 = 3;
-pub const MADV_DONTNEED: u32 = 4;
-pub const MADV_FREE: u32 = 8;
-pub const MADV_REMOVE: u32 = 9;
-pub const MADV_DONTFORK: u32 = 10;
-pub const MADV_DOFORK: u32 = 11;
-pub const MADV_MERGEABLE: u32 = 12;
-pub const MADV_UNMERGEABLE: u32 = 13;
-pub const MADV_HWPOISON: u32 = 100;
-pub const MADV_HUGEPAGE: u32 = 14;
-pub const MADV_NOHUGEPAGE: u32 = 15;
-pub const MADV_DONTDUMP: u32 = 16;
-pub const MADV_DODUMP: u32 = 17;
-pub const MADV_WIPEONFORK: u32 = 18;
-pub const MADV_KEEPONFORK: u32 = 19;
-pub const MADV_COLD: u32 = 20;
-pub const MADV_PAGEOUT: u32 = 21;
-pub const MADV_POPULATE_READ: u32 = 22;
-pub const MADV_POPULATE_WRITE: u32 = 23;
-pub const MADV_DONTNEED_LOCKED: u32 = 24;
-pub const MADV_COLLAPSE: u32 = 25;
-pub const MAP_FILE: u32 = 0;
-pub const PKEY_DISABLE_ACCESS: u32 = 1;
-pub const PKEY_DISABLE_WRITE: u32 = 2;
-pub const PKEY_ACCESS_MASK: u32 = 3;
-pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26;
-pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63;
-pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096;
-pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824;
-pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416;
-pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280;
-pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144;
-pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872;
-pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736;
-pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600;
-pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192;
-pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056;
-pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920;
-pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784;
-pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376;
-pub const MREMAP_MAYMOVE: u32 = 1;
-pub const MREMAP_FIXED: u32 = 2;
-pub const MREMAP_DONTUNMAP: u32 = 4;
-pub const OVERCOMMIT_GUESS: u32 = 0;
-pub const OVERCOMMIT_ALWAYS: u32 = 1;
-pub const OVERCOMMIT_NEVER: u32 = 2;
-pub const MAP_SHARED: u32 = 1;
-pub const MAP_PRIVATE: u32 = 2;
-pub const MAP_SHARED_VALIDATE: u32 = 3;
-pub const MAP_HUGE_SHIFT: u32 = 26;
-pub const MAP_HUGE_MASK: u32 = 63;
-pub const MAP_HUGE_16KB: u32 = 939524096;
-pub const MAP_HUGE_64KB: u32 = 1073741824;
-pub const MAP_HUGE_512KB: u32 = 1275068416;
-pub const MAP_HUGE_1MB: u32 = 1342177280;
-pub const MAP_HUGE_2MB: u32 = 1409286144;
-pub const MAP_HUGE_8MB: u32 = 1543503872;
-pub const MAP_HUGE_16MB: u32 = 1610612736;
-pub const MAP_HUGE_32MB: u32 = 1677721600;
-pub const MAP_HUGE_256MB: u32 = 1879048192;
-pub const MAP_HUGE_512MB: u32 = 1946157056;
-pub const MAP_HUGE_1GB: u32 = 2013265920;
-pub const MAP_HUGE_2GB: u32 = 2080374784;
-pub const MAP_HUGE_16GB: u32 = 2281701376;
-pub const SIOCGSTAMP_OLD: u32 = 35078;
-pub const SIOCGSTAMPNS_OLD: u32 = 35079;
-pub const SOL_SOCKET: u32 = 65535;
-pub const SO_DEBUG: u32 = 1;
-pub const SO_REUSEADDR: u32 = 4;
-pub const SO_KEEPALIVE: u32 = 8;
-pub const SO_DONTROUTE: u32 = 16;
-pub const SO_BROADCAST: u32 = 32;
-pub const SO_LINGER: u32 = 128;
-pub const SO_OOBINLINE: u32 = 256;
-pub const SO_REUSEPORT: u32 = 512;
-pub const SO_TYPE: u32 = 4104;
-pub const SO_STYLE: u32 = 4104;
-pub const SO_ERROR: u32 = 4103;
-pub const SO_SNDBUF: u32 = 4097;
-pub const SO_RCVBUF: u32 = 4098;
-pub const SO_SNDLOWAT: u32 = 4099;
-pub const SO_RCVLOWAT: u32 = 4100;
-pub const SO_SNDTIMEO_OLD: u32 = 4101;
-pub const SO_RCVTIMEO_OLD: u32 = 4102;
-pub const SO_ACCEPTCONN: u32 = 4105;
-pub const SO_PROTOCOL: u32 = 4136;
-pub const SO_DOMAIN: u32 = 4137;
-pub const SO_NO_CHECK: u32 = 11;
-pub const SO_PRIORITY: u32 = 12;
-pub const SO_BSDCOMPAT: u32 = 14;
-pub const SO_PASSCRED: u32 = 17;
-pub const SO_PEERCRED: u32 = 18;
-pub const SO_SECURITY_AUTHENTICATION: u32 = 22;
-pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23;
-pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24;
-pub const SO_BINDTODEVICE: u32 = 25;
-pub const SO_ATTACH_FILTER: u32 = 26;
-pub const SO_DETACH_FILTER: u32 = 27;
-pub const SO_GET_FILTER: u32 = 26;
-pub const SO_PEERNAME: u32 = 28;
-pub const SO_PEERSEC: u32 = 30;
-pub const SO_SNDBUFFORCE: u32 = 31;
-pub const SO_RCVBUFFORCE: u32 = 33;
-pub const SO_PASSSEC: u32 = 34;
-pub const SO_MARK: u32 = 36;
-pub const SO_RXQ_OVFL: u32 = 40;
-pub const SO_WIFI_STATUS: u32 = 41;
-pub const SCM_WIFI_STATUS: u32 = 41;
-pub const SO_PEEK_OFF: u32 = 42;
-pub const SO_NOFCS: u32 = 43;
-pub const SO_LOCK_FILTER: u32 = 44;
-pub const SO_SELECT_ERR_QUEUE: u32 = 45;
-pub const SO_BUSY_POLL: u32 = 46;
-pub const SO_MAX_PACING_RATE: u32 = 47;
-pub const SO_BPF_EXTENSIONS: u32 = 48;
-pub const SO_INCOMING_CPU: u32 = 49;
-pub const SO_ATTACH_BPF: u32 = 50;
-pub const SO_DETACH_BPF: u32 = 27;
-pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51;
-pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52;
-pub const SO_CNX_ADVICE: u32 = 53;
-pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54;
-pub const SO_MEMINFO: u32 = 55;
-pub const SO_INCOMING_NAPI_ID: u32 = 56;
-pub const SO_COOKIE: u32 = 57;
-pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58;
-pub const SO_PEERGROUPS: u32 = 59;
-pub const SO_ZEROCOPY: u32 = 60;
-pub const SO_TXTIME: u32 = 61;
-pub const SCM_TXTIME: u32 = 61;
-pub const SO_BINDTOIFINDEX: u32 = 62;
-pub const SO_TIMESTAMP_OLD: u32 = 29;
-pub const SO_TIMESTAMPNS_OLD: u32 = 35;
-pub const SO_TIMESTAMPING_OLD: u32 = 37;
-pub const SO_TIMESTAMP_NEW: u32 = 63;
-pub const SO_TIMESTAMPNS_NEW: u32 = 64;
-pub const SO_TIMESTAMPING_NEW: u32 = 65;
-pub const SO_RCVTIMEO_NEW: u32 = 66;
-pub const SO_SNDTIMEO_NEW: u32 = 67;
-pub const SO_DETACH_REUSEPORT_BPF: u32 = 68;
-pub const SO_PREFER_BUSY_POLL: u32 = 69;
-pub const SO_BUSY_POLL_BUDGET: u32 = 70;
-pub const SO_NETNS_COOKIE: u32 = 71;
-pub const SO_BUF_LOCK: u32 = 72;
-pub const SO_RESERVE_MEM: u32 = 73;
-pub const SO_TXREHASH: u32 = 74;
-pub const SO_RCVMARK: u32 = 75;
-pub const SO_TIMESTAMP: u32 = 29;
-pub const SO_TIMESTAMPNS: u32 = 35;
-pub const SO_TIMESTAMPING: u32 = 37;
-pub const SO_RCVTIMEO: u32 = 4102;
-pub const SO_SNDTIMEO: u32 = 4101;
-pub const SCM_TIMESTAMP: u32 = 29;
-pub const SCM_TIMESTAMPNS: u32 = 35;
-pub const SCM_TIMESTAMPING: u32 = 37;
-pub const SYS_SOCKET: u32 = 1;
-pub const SYS_BIND: u32 = 2;
-pub const SYS_CONNECT: u32 = 3;
-pub const SYS_LISTEN: u32 = 4;
-pub const SYS_ACCEPT: u32 = 5;
-pub const SYS_GETSOCKNAME: u32 = 6;
-pub const SYS_GETPEERNAME: u32 = 7;
-pub const SYS_SOCKETPAIR: u32 = 8;
-pub const SYS_SEND: u32 = 9;
-pub const SYS_RECV: u32 = 10;
-pub const SYS_SENDTO: u32 = 11;
-pub const SYS_RECVFROM: u32 = 12;
-pub const SYS_SHUTDOWN: u32 = 13;
-pub const SYS_SETSOCKOPT: u32 = 14;
-pub const SYS_GETSOCKOPT: u32 = 15;
-pub const SYS_SENDMSG: u32 = 16;
-pub const SYS_RECVMSG: u32 = 17;
-pub const SYS_ACCEPT4: u32 = 18;
-pub const SYS_RECVMMSG: u32 = 19;
-pub const SYS_SENDMMSG: u32 = 20;
-pub const __SO_ACCEPTCON: u32 = 65536;
-pub const POLLWRBAND: u32 = 256;
-pub const POLLIN: u32 = 1;
-pub const POLLPRI: u32 = 2;
-pub const POLLOUT: u32 = 4;
-pub const POLLERR: u32 = 8;
-pub const POLLHUP: u32 = 16;
-pub const POLLNVAL: u32 = 32;
-pub const POLLRDNORM: u32 = 64;
-pub const POLLRDBAND: u32 = 128;
-pub const POLLMSG: u32 = 1024;
-pub const POLLREMOVE: u32 = 4096;
-pub const POLLRDHUP: u32 = 8192;
-pub const PR_SET_PDEATHSIG: u32 = 1;
-pub const PR_GET_PDEATHSIG: u32 = 2;
-pub const PR_GET_DUMPABLE: u32 = 3;
-pub const PR_SET_DUMPABLE: u32 = 4;
-pub const PR_GET_UNALIGN: u32 = 5;
-pub const PR_SET_UNALIGN: u32 = 6;
-pub const PR_UNALIGN_NOPRINT: u32 = 1;
-pub const PR_UNALIGN_SIGBUS: u32 = 2;
-pub const PR_GET_KEEPCAPS: u32 = 7;
-pub const PR_SET_KEEPCAPS: u32 = 8;
-pub const PR_GET_FPEMU: u32 = 9;
-pub const PR_SET_FPEMU: u32 = 10;
-pub const PR_FPEMU_NOPRINT: u32 = 1;
-pub const PR_FPEMU_SIGFPE: u32 = 2;
-pub const PR_GET_FPEXC: u32 = 11;
-pub const PR_SET_FPEXC: u32 = 12;
-pub const PR_FP_EXC_SW_ENABLE: u32 = 128;
-pub const PR_FP_EXC_DIV: u32 = 65536;
-pub const PR_FP_EXC_OVF: u32 = 131072;
-pub const PR_FP_EXC_UND: u32 = 262144;
-pub const PR_FP_EXC_RES: u32 = 524288;
-pub const PR_FP_EXC_INV: u32 = 1048576;
-pub const PR_FP_EXC_DISABLED: u32 = 0;
-pub const PR_FP_EXC_NONRECOV: u32 = 1;
-pub const PR_FP_EXC_ASYNC: u32 = 2;
-pub const PR_FP_EXC_PRECISE: u32 = 3;
-pub const PR_GET_TIMING: u32 = 13;
-pub const PR_SET_TIMING: u32 = 14;
-pub const PR_TIMING_STATISTICAL: u32 = 0;
-pub const PR_TIMING_TIMESTAMP: u32 = 1;
-pub const PR_SET_NAME: u32 = 15;
-pub const PR_GET_NAME: u32 = 16;
-pub const PR_GET_ENDIAN: u32 = 19;
-pub const PR_SET_ENDIAN: u32 = 20;
-pub const PR_ENDIAN_BIG: u32 = 0;
-pub const PR_ENDIAN_LITTLE: u32 = 1;
-pub const PR_ENDIAN_PPC_LITTLE: u32 = 2;
-pub const PR_GET_SECCOMP: u32 = 21;
-pub const PR_SET_SECCOMP: u32 = 22;
-pub const PR_CAPBSET_READ: u32 = 23;
-pub const PR_CAPBSET_DROP: u32 = 24;
-pub const PR_GET_TSC: u32 = 25;
-pub const PR_SET_TSC: u32 = 26;
-pub const PR_TSC_ENABLE: u32 = 1;
-pub const PR_TSC_SIGSEGV: u32 = 2;
-pub const PR_GET_SECUREBITS: u32 = 27;
-pub const PR_SET_SECUREBITS: u32 = 28;
-pub const PR_SET_TIMERSLACK: u32 = 29;
-pub const PR_GET_TIMERSLACK: u32 = 30;
-pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31;
-pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32;
-pub const PR_MCE_KILL: u32 = 33;
-pub const PR_MCE_KILL_CLEAR: u32 = 0;
-pub const PR_MCE_KILL_SET: u32 = 1;
-pub const PR_MCE_KILL_LATE: u32 = 0;
-pub const PR_MCE_KILL_EARLY: u32 = 1;
-pub const PR_MCE_KILL_DEFAULT: u32 = 2;
-pub const PR_MCE_KILL_GET: u32 = 34;
-pub const PR_SET_MM: u32 = 35;
-pub const PR_SET_MM_START_CODE: u32 = 1;
-pub const PR_SET_MM_END_CODE: u32 = 2;
-pub const PR_SET_MM_START_DATA: u32 = 3;
-pub const PR_SET_MM_END_DATA: u32 = 4;
-pub const PR_SET_MM_START_STACK: u32 = 5;
-pub const PR_SET_MM_START_BRK: u32 = 6;
-pub const PR_SET_MM_BRK: u32 = 7;
-pub const PR_SET_MM_ARG_START: u32 = 8;
-pub const PR_SET_MM_ARG_END: u32 = 9;
-pub const PR_SET_MM_ENV_START: u32 = 10;
-pub const PR_SET_MM_ENV_END: u32 = 11;
-pub const PR_SET_MM_AUXV: u32 = 12;
-pub const PR_SET_MM_EXE_FILE: u32 = 13;
-pub const PR_SET_MM_MAP: u32 = 14;
-pub const PR_SET_MM_MAP_SIZE: u32 = 15;
-pub const PR_SET_PTRACER: u32 = 1499557217;
-pub const PR_SET_CHILD_SUBREAPER: u32 = 36;
-pub const PR_GET_CHILD_SUBREAPER: u32 = 37;
-pub const PR_SET_NO_NEW_PRIVS: u32 = 38;
-pub const PR_GET_NO_NEW_PRIVS: u32 = 39;
-pub const PR_GET_TID_ADDRESS: u32 = 40;
-pub const PR_SET_THP_DISABLE: u32 = 41;
-pub const PR_GET_THP_DISABLE: u32 = 42;
-pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43;
-pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44;
-pub const PR_SET_FP_MODE: u32 = 45;
-pub const PR_GET_FP_MODE: u32 = 46;
-pub const PR_FP_MODE_FR: u32 = 1;
-pub const PR_FP_MODE_FRE: u32 = 2;
-pub const PR_CAP_AMBIENT: u32 = 47;
-pub const PR_CAP_AMBIENT_IS_SET: u32 = 1;
-pub const PR_CAP_AMBIENT_RAISE: u32 = 2;
-pub const PR_CAP_AMBIENT_LOWER: u32 = 3;
-pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4;
-pub const PR_SVE_SET_VL: u32 = 50;
-pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SVE_GET_VL: u32 = 51;
-pub const PR_SVE_VL_LEN_MASK: u32 = 65535;
-pub const PR_SVE_VL_INHERIT: u32 = 131072;
-pub const PR_GET_SPECULATION_CTRL: u32 = 52;
-pub const PR_SET_SPECULATION_CTRL: u32 = 53;
-pub const PR_SPEC_STORE_BYPASS: u32 = 0;
-pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1;
-pub const PR_SPEC_L1D_FLUSH: u32 = 2;
-pub const PR_SPEC_NOT_AFFECTED: u32 = 0;
-pub const PR_SPEC_PRCTL: u32 = 1;
-pub const PR_SPEC_ENABLE: u32 = 2;
-pub const PR_SPEC_DISABLE: u32 = 4;
-pub const PR_SPEC_FORCE_DISABLE: u32 = 8;
-pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16;
-pub const PR_PAC_RESET_KEYS: u32 = 54;
-pub const PR_PAC_APIAKEY: u32 = 1;
-pub const PR_PAC_APIBKEY: u32 = 2;
-pub const PR_PAC_APDAKEY: u32 = 4;
-pub const PR_PAC_APDBKEY: u32 = 8;
-pub const PR_PAC_APGAKEY: u32 = 16;
-pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55;
-pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56;
-pub const PR_TAGGED_ADDR_ENABLE: u32 = 1;
-pub const PR_MTE_TCF_NONE: u32 = 0;
-pub const PR_MTE_TCF_SYNC: u32 = 2;
-pub const PR_MTE_TCF_ASYNC: u32 = 4;
-pub const PR_MTE_TCF_MASK: u32 = 6;
-pub const PR_MTE_TAG_SHIFT: u32 = 3;
-pub const PR_MTE_TAG_MASK: u32 = 524280;
-pub const PR_MTE_TCF_SHIFT: u32 = 1;
-pub const PR_SET_IO_FLUSHER: u32 = 57;
-pub const PR_GET_IO_FLUSHER: u32 = 58;
-pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59;
-pub const PR_SYS_DISPATCH_OFF: u32 = 0;
-pub const PR_SYS_DISPATCH_ON: u32 = 1;
-pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0;
-pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1;
-pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60;
-pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61;
-pub const PR_SCHED_CORE: u32 = 62;
-pub const PR_SCHED_CORE_GET: u32 = 0;
-pub const PR_SCHED_CORE_CREATE: u32 = 1;
-pub const PR_SCHED_CORE_SHARE_TO: u32 = 2;
-pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3;
-pub const PR_SCHED_CORE_MAX: u32 = 4;
-pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0;
-pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1;
-pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2;
-pub const PR_SME_SET_VL: u32 = 63;
-pub const PR_SME_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SME_GET_VL: u32 = 64;
-pub const PR_SME_VL_LEN_MASK: u32 = 65535;
-pub const PR_SME_VL_INHERIT: u32 = 131072;
-pub const PR_SET_VMA: u32 = 1398164801;
-pub const PR_SET_VMA_ANON_NAME: u32 = 0;
-pub const GRND_NONBLOCK: u32 = 1;
-pub const GRND_RANDOM: u32 = 2;
-pub const GRND_INSECURE: u32 = 4;
-pub const ITIMER_REAL: u32 = 0;
-pub const ITIMER_VIRTUAL: u32 = 1;
-pub const ITIMER_PROF: u32 = 2;
-pub const CLOCK_REALTIME: u32 = 0;
-pub const CLOCK_MONOTONIC: u32 = 1;
-pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2;
-pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3;
-pub const CLOCK_MONOTONIC_RAW: u32 = 4;
-pub const CLOCK_REALTIME_COARSE: u32 = 5;
-pub const CLOCK_MONOTONIC_COARSE: u32 = 6;
-pub const CLOCK_BOOTTIME: u32 = 7;
-pub const CLOCK_REALTIME_ALARM: u32 = 8;
-pub const CLOCK_BOOTTIME_ALARM: u32 = 9;
-pub const CLOCK_SGI_CYCLE: u32 = 10;
-pub const CLOCK_TAI: u32 = 11;
-pub const MAX_CLOCKS: u32 = 16;
-pub const CLOCKS_MASK: u32 = 1;
-pub const CLOCKS_MONO: u32 = 1;
-pub const TIMER_ABSTIME: u32 = 1;
-pub const RUSAGE_SELF: u32 = 0;
-pub const RUSAGE_CHILDREN: i32 = -1;
-pub const RUSAGE_BOTH: i32 = -2;
-pub const RUSAGE_THREAD: u32 = 1;
-pub const RLIM64_INFINITY: i32 = -1;
-pub const PRIO_MIN: i32 = -20;
-pub const PRIO_MAX: u32 = 20;
-pub const PRIO_PROCESS: u32 = 0;
-pub const PRIO_PGRP: u32 = 1;
-pub const PRIO_USER: u32 = 2;
-pub const _STK_LIM: u32 = 8388608;
-pub const MLOCK_LIMIT: u32 = 8388608;
-pub const RLIMIT_NOFILE: u32 = 5;
-pub const RLIMIT_AS: u32 = 6;
-pub const RLIMIT_RSS: u32 = 7;
-pub const RLIMIT_NPROC: u32 = 8;
-pub const RLIMIT_MEMLOCK: u32 = 9;
-pub const RLIMIT_CPU: u32 = 0;
-pub const RLIMIT_FSIZE: u32 = 1;
-pub const RLIMIT_DATA: u32 = 2;
-pub const RLIMIT_STACK: u32 = 3;
-pub const RLIMIT_CORE: u32 = 4;
-pub const RLIMIT_LOCKS: u32 = 10;
-pub const RLIMIT_SIGPENDING: u32 = 11;
-pub const RLIMIT_MSGQUEUE: u32 = 12;
-pub const RLIMIT_NICE: u32 = 13;
-pub const RLIMIT_RTPRIO: u32 = 14;
-pub const RLIMIT_RTTIME: u32 = 15;
-pub const RLIM_NLIMITS: u32 = 16;
-pub const RLIM_INFINITY: i32 = -1;
-pub const CSIGNAL: u32 = 255;
-pub const CLONE_VM: u32 = 256;
-pub const CLONE_FS: u32 = 512;
-pub const CLONE_FILES: u32 = 1024;
-pub const CLONE_SIGHAND: u32 = 2048;
-pub const CLONE_PIDFD: u32 = 4096;
-pub const CLONE_PTRACE: u32 = 8192;
-pub const CLONE_VFORK: u32 = 16384;
-pub const CLONE_PARENT: u32 = 32768;
-pub const CLONE_THREAD: u32 = 65536;
-pub const CLONE_NEWNS: u32 = 131072;
-pub const CLONE_SYSVSEM: u32 = 262144;
-pub const CLONE_SETTLS: u32 = 524288;
-pub const CLONE_PARENT_SETTID: u32 = 1048576;
-pub const CLONE_CHILD_CLEARTID: u32 = 2097152;
-pub const CLONE_DETACHED: u32 = 4194304;
-pub const CLONE_UNTRACED: u32 = 8388608;
-pub const CLONE_CHILD_SETTID: u32 = 16777216;
-pub const CLONE_NEWCGROUP: u32 = 33554432;
-pub const CLONE_NEWUTS: u32 = 67108864;
-pub const CLONE_NEWIPC: u32 = 134217728;
-pub const CLONE_NEWUSER: u32 = 268435456;
-pub const CLONE_NEWPID: u32 = 536870912;
-pub const CLONE_NEWNET: u32 = 1073741824;
-pub const CLONE_IO: u32 = 2147483648;
-pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296;
-pub const CLONE_INTO_CGROUP: u64 = 8589934592;
-pub const CLONE_NEWTIME: u32 = 128;
-pub const CLONE_ARGS_SIZE_VER0: u32 = 64;
-pub const CLONE_ARGS_SIZE_VER1: u32 = 80;
-pub const CLONE_ARGS_SIZE_VER2: u32 = 88;
-pub const SCHED_NORMAL: u32 = 0;
-pub const SCHED_FIFO: u32 = 1;
-pub const SCHED_RR: u32 = 2;
-pub const SCHED_BATCH: u32 = 3;
-pub const SCHED_IDLE: u32 = 5;
-pub const SCHED_DEADLINE: u32 = 6;
-pub const SCHED_RESET_ON_FORK: u32 = 1073741824;
-pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1;
-pub const SCHED_FLAG_RECLAIM: u32 = 2;
-pub const SCHED_FLAG_DL_OVERRUN: u32 = 4;
-pub const SCHED_FLAG_KEEP_POLICY: u32 = 8;
-pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16;
-pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32;
-pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64;
-pub const SCHED_FLAG_KEEP_ALL: u32 = 24;
-pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96;
-pub const SCHED_FLAG_ALL: u32 = 127;
-pub const _NSIG: u32 = 128;
-pub const SIGHUP: u32 = 1;
-pub const SIGINT: u32 = 2;
-pub const SIGQUIT: u32 = 3;
-pub const SIGILL: u32 = 4;
-pub const SIGTRAP: u32 = 5;
-pub const SIGIOT: u32 = 6;
-pub const SIGABRT: u32 = 6;
-pub const SIGEMT: u32 = 7;
-pub const SIGFPE: u32 = 8;
-pub const SIGKILL: u32 = 9;
-pub const SIGBUS: u32 = 10;
-pub const SIGSEGV: u32 = 11;
-pub const SIGSYS: u32 = 12;
-pub const SIGPIPE: u32 = 13;
-pub const SIGALRM: u32 = 14;
-pub const SIGTERM: u32 = 15;
-pub const SIGUSR1: u32 = 16;
-pub const SIGUSR2: u32 = 17;
-pub const SIGCHLD: u32 = 18;
-pub const SIGCLD: u32 = 18;
-pub const SIGPWR: u32 = 19;
-pub const SIGWINCH: u32 = 20;
-pub const SIGURG: u32 = 21;
-pub const SIGIO: u32 = 22;
-pub const SIGPOLL: u32 = 22;
-pub const SIGSTOP: u32 = 23;
-pub const SIGTSTP: u32 = 24;
-pub const SIGCONT: u32 = 25;
-pub const SIGTTIN: u32 = 26;
-pub const SIGTTOU: u32 = 27;
-pub const SIGVTALRM: u32 = 28;
-pub const SIGPROF: u32 = 29;
-pub const SIGXCPU: u32 = 30;
-pub const SIGXFSZ: u32 = 31;
-pub const SIGRTMIN: u32 = 32;
-pub const SIGRTMAX: u32 = 128;
-pub const SA_ONSTACK: u32 = 134217728;
-pub const SA_RESETHAND: u32 = 2147483648;
-pub const SA_RESTART: u32 = 268435456;
-pub const SA_SIGINFO: u32 = 8;
-pub const SA_NODEFER: u32 = 1073741824;
-pub const SA_NOCLDWAIT: u32 = 65536;
-pub const SA_NOCLDSTOP: u32 = 1;
-pub const SA_NOMASK: u32 = 1073741824;
-pub const SA_ONESHOT: u32 = 2147483648;
-pub const MINSIGSTKSZ: u32 = 2048;
-pub const SIGSTKSZ: u32 = 8192;
-pub const SIG_BLOCK: u32 = 1;
-pub const SIG_UNBLOCK: u32 = 2;
-pub const SIG_SETMASK: u32 = 3;
-pub const SA_UNSUPPORTED: u32 = 1024;
-pub const SA_EXPOSE_TAGBITS: u32 = 2048;
-pub const SI_MAX_SIZE: u32 = 128;
-pub const SI_USER: u32 = 0;
-pub const SI_KERNEL: u32 = 128;
-pub const SI_QUEUE: i32 = -1;
-pub const SI_TIMER: i32 = -2;
-pub const SI_MESGQ: i32 = -3;
-pub const SI_ASYNCIO: i32 = -4;
-pub const SI_SIGIO: i32 = -5;
-pub const SI_TKILL: i32 = -6;
-pub const SI_DETHREAD: i32 = -7;
-pub const SI_ASYNCNL: i32 = -60;
-pub const ILL_ILLOPC: u32 = 1;
-pub const ILL_ILLOPN: u32 = 2;
-pub const ILL_ILLADR: u32 = 3;
-pub const ILL_ILLTRP: u32 = 4;
-pub const ILL_PRVOPC: u32 = 5;
-pub const ILL_PRVREG: u32 = 6;
-pub const ILL_COPROC: u32 = 7;
-pub const ILL_BADSTK: u32 = 8;
-pub const ILL_BADIADDR: u32 = 9;
-pub const __ILL_BREAK: u32 = 10;
-pub const __ILL_BNDMOD: u32 = 11;
-pub const NSIGILL: u32 = 11;
-pub const FPE_INTDIV: u32 = 1;
-pub const FPE_INTOVF: u32 = 2;
-pub const FPE_FLTDIV: u32 = 3;
-pub const FPE_FLTOVF: u32 = 4;
-pub const FPE_FLTUND: u32 = 5;
-pub const FPE_FLTRES: u32 = 6;
-pub const FPE_FLTINV: u32 = 7;
-pub const FPE_FLTSUB: u32 = 8;
-pub const __FPE_DECOVF: u32 = 9;
-pub const __FPE_DECDIV: u32 = 10;
-pub const __FPE_DECERR: u32 = 11;
-pub const __FPE_INVASC: u32 = 12;
-pub const __FPE_INVDEC: u32 = 13;
-pub const FPE_FLTUNK: u32 = 14;
-pub const FPE_CONDTRAP: u32 = 15;
-pub const NSIGFPE: u32 = 15;
-pub const SEGV_MAPERR: u32 = 1;
-pub const SEGV_ACCERR: u32 = 2;
-pub const SEGV_BNDERR: u32 = 3;
-pub const SEGV_PKUERR: u32 = 4;
-pub const SEGV_ACCADI: u32 = 5;
-pub const SEGV_ADIDERR: u32 = 6;
-pub const SEGV_ADIPERR: u32 = 7;
-pub const SEGV_MTEAERR: u32 = 8;
-pub const SEGV_MTESERR: u32 = 9;
-pub const NSIGSEGV: u32 = 9;
-pub const BUS_ADRALN: u32 = 1;
-pub const BUS_ADRERR: u32 = 2;
-pub const BUS_OBJERR: u32 = 3;
-pub const BUS_MCEERR_AR: u32 = 4;
-pub const BUS_MCEERR_AO: u32 = 5;
-pub const NSIGBUS: u32 = 5;
-pub const TRAP_BRKPT: u32 = 1;
-pub const TRAP_TRACE: u32 = 2;
-pub const TRAP_BRANCH: u32 = 3;
-pub const TRAP_HWBKPT: u32 = 4;
-pub const TRAP_UNK: u32 = 5;
-pub const TRAP_PERF: u32 = 6;
-pub const NSIGTRAP: u32 = 6;
-pub const TRAP_PERF_FLAG_ASYNC: u32 = 1;
-pub const CLD_EXITED: u32 = 1;
-pub const CLD_KILLED: u32 = 2;
-pub const CLD_DUMPED: u32 = 3;
-pub const CLD_TRAPPED: u32 = 4;
-pub const CLD_STOPPED: u32 = 5;
-pub const CLD_CONTINUED: u32 = 6;
-pub const NSIGCHLD: u32 = 6;
-pub const POLL_IN: u32 = 1;
-pub const POLL_OUT: u32 = 2;
-pub const POLL_MSG: u32 = 3;
-pub const POLL_ERR: u32 = 4;
-pub const POLL_PRI: u32 = 5;
-pub const POLL_HUP: u32 = 6;
-pub const NSIGPOLL: u32 = 6;
-pub const SYS_SECCOMP: u32 = 1;
-pub const SYS_USER_DISPATCH: u32 = 2;
-pub const NSIGSYS: u32 = 2;
-pub const EMT_TAGOVF: u32 = 1;
-pub const NSIGEMT: u32 = 1;
-pub const SIGEV_SIGNAL: u32 = 0;
-pub const SIGEV_NONE: u32 = 1;
-pub const SIGEV_THREAD: u32 = 2;
-pub const SIGEV_THREAD_ID: u32 = 4;
-pub const SIGEV_MAX_SIZE: u32 = 64;
-pub const SS_ONSTACK: u32 = 1;
-pub const SS_DISABLE: u32 = 2;
-pub const SS_AUTODISARM: u32 = 2147483648;
-pub const SS_FLAG_BITS: u32 = 2147483648;
-pub const S_IFMT: u32 = 61440;
-pub const S_IFSOCK: u32 = 49152;
-pub const S_IFLNK: u32 = 40960;
-pub const S_IFREG: u32 = 32768;
-pub const S_IFBLK: u32 = 24576;
-pub const S_IFDIR: u32 = 16384;
-pub const S_IFCHR: u32 = 8192;
-pub const S_IFIFO: u32 = 4096;
-pub const S_ISUID: u32 = 2048;
-pub const S_ISGID: u32 = 1024;
-pub const S_ISVTX: u32 = 512;
-pub const S_IRWXU: u32 = 448;
-pub const S_IRUSR: u32 = 256;
-pub const S_IWUSR: u32 = 128;
-pub const S_IXUSR: u32 = 64;
-pub const S_IRWXG: u32 = 56;
-pub const S_IRGRP: u32 = 32;
-pub const S_IWGRP: u32 = 16;
-pub const S_IXGRP: u32 = 8;
-pub const S_IRWXO: u32 = 7;
-pub const S_IROTH: u32 = 4;
-pub const S_IWOTH: u32 = 2;
-pub const S_IXOTH: u32 = 1;
-pub const STATX_TYPE: u32 = 1;
-pub const STATX_MODE: u32 = 2;
-pub const STATX_NLINK: u32 = 4;
-pub const STATX_UID: u32 = 8;
-pub const STATX_GID: u32 = 16;
-pub const STATX_ATIME: u32 = 32;
-pub const STATX_MTIME: u32 = 64;
-pub const STATX_CTIME: u32 = 128;
-pub const STATX_INO: u32 = 256;
-pub const STATX_SIZE: u32 = 512;
-pub const STATX_BLOCKS: u32 = 1024;
-pub const STATX_BASIC_STATS: u32 = 2047;
-pub const STATX_BTIME: u32 = 2048;
-pub const STATX_MNT_ID: u32 = 4096;
-pub const STATX_DIOALIGN: u32 = 8192;
-pub const STATX__RESERVED: u32 = 2147483648;
-pub const STATX_ALL: u32 = 4095;
-pub const STATX_ATTR_COMPRESSED: u32 = 4;
-pub const STATX_ATTR_IMMUTABLE: u32 = 16;
-pub const STATX_ATTR_APPEND: u32 = 32;
-pub const STATX_ATTR_NODUMP: u32 = 64;
-pub const STATX_ATTR_ENCRYPTED: u32 = 2048;
-pub const STATX_ATTR_AUTOMOUNT: u32 = 4096;
-pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192;
-pub const STATX_ATTR_VERITY: u32 = 1048576;
-pub const STATX_ATTR_DAX: u32 = 2097152;
-pub const SI_LOAD_SHIFT: u32 = 16;
-pub const TCP_MSS_DEFAULT: u32 = 536;
-pub const TCP_MSS_DESIRED: u32 = 1220;
-pub const TCP_NODELAY: u32 = 1;
-pub const TCP_MAXSEG: u32 = 2;
-pub const TCP_CORK: u32 = 3;
-pub const TCP_KEEPIDLE: u32 = 4;
-pub const TCP_KEEPINTVL: u32 = 5;
-pub const TCP_KEEPCNT: u32 = 6;
-pub const TCP_SYNCNT: u32 = 7;
-pub const TCP_LINGER2: u32 = 8;
-pub const TCP_DEFER_ACCEPT: u32 = 9;
-pub const TCP_WINDOW_CLAMP: u32 = 10;
-pub const TCP_INFO: u32 = 11;
-pub const TCP_QUICKACK: u32 = 12;
-pub const TCP_CONGESTION: u32 = 13;
-pub const TCP_MD5SIG: u32 = 14;
-pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16;
-pub const TCP_THIN_DUPACK: u32 = 17;
-pub const TCP_USER_TIMEOUT: u32 = 18;
-pub const TCP_REPAIR: u32 = 19;
-pub const TCP_REPAIR_QUEUE: u32 = 20;
-pub const TCP_QUEUE_SEQ: u32 = 21;
-pub const TCP_REPAIR_OPTIONS: u32 = 22;
-pub const TCP_FASTOPEN: u32 = 23;
-pub const TCP_TIMESTAMP: u32 = 24;
-pub const TCP_NOTSENT_LOWAT: u32 = 25;
-pub const TCP_CC_INFO: u32 = 26;
-pub const TCP_SAVE_SYN: u32 = 27;
-pub const TCP_SAVED_SYN: u32 = 28;
-pub const TCP_REPAIR_WINDOW: u32 = 29;
-pub const TCP_FASTOPEN_CONNECT: u32 = 30;
-pub const TCP_ULP: u32 = 31;
-pub const TCP_MD5SIG_EXT: u32 = 32;
-pub const TCP_FASTOPEN_KEY: u32 = 33;
-pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34;
-pub const TCP_ZEROCOPY_RECEIVE: u32 = 35;
-pub const TCP_INQ: u32 = 36;
-pub const TCP_CM_INQ: u32 = 36;
-pub const TCP_TX_DELAY: u32 = 37;
-pub const TCP_REPAIR_ON: u32 = 1;
-pub const TCP_REPAIR_OFF: u32 = 0;
-pub const TCP_REPAIR_OFF_NO_WP: i32 = -1;
-pub const TCPI_OPT_TIMESTAMPS: u32 = 1;
-pub const TCPI_OPT_SACK: u32 = 2;
-pub const TCPI_OPT_WSCALE: u32 = 4;
-pub const TCPI_OPT_ECN: u32 = 8;
-pub const TCPI_OPT_ECN_SEEN: u32 = 16;
-pub const TCPI_OPT_SYN_DATA: u32 = 32;
-pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80;
-pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
-pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
-pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
-pub const EPERM: u32 = 1;
-pub const ENOENT: u32 = 2;
-pub const ESRCH: u32 = 3;
-pub const EINTR: u32 = 4;
-pub const EIO: u32 = 5;
-pub const ENXIO: u32 = 6;
-pub const E2BIG: u32 = 7;
-pub const ENOEXEC: u32 = 8;
-pub const EBADF: u32 = 9;
-pub const ECHILD: u32 = 10;
-pub const EAGAIN: u32 = 11;
-pub const ENOMEM: u32 = 12;
-pub const EACCES: u32 = 13;
-pub const EFAULT: u32 = 14;
-pub const ENOTBLK: u32 = 15;
-pub const EBUSY: u32 = 16;
-pub const EEXIST: u32 = 17;
-pub const EXDEV: u32 = 18;
-pub const ENODEV: u32 = 19;
-pub const ENOTDIR: u32 = 20;
-pub const EISDIR: u32 = 21;
-pub const EINVAL: u32 = 22;
-pub const ENFILE: u32 = 23;
-pub const EMFILE: u32 = 24;
-pub const ENOTTY: u32 = 25;
-pub const ETXTBSY: u32 = 26;
-pub const EFBIG: u32 = 27;
-pub const ENOSPC: u32 = 28;
-pub const ESPIPE: u32 = 29;
-pub const EROFS: u32 = 30;
-pub const EMLINK: u32 = 31;
-pub const EPIPE: u32 = 32;
-pub const EDOM: u32 = 33;
-pub const ERANGE: u32 = 34;
-pub const ENOMSG: u32 = 35;
-pub const EIDRM: u32 = 36;
-pub const ECHRNG: u32 = 37;
-pub const EL2NSYNC: u32 = 38;
-pub const EL3HLT: u32 = 39;
-pub const EL3RST: u32 = 40;
-pub const ELNRNG: u32 = 41;
-pub const EUNATCH: u32 = 42;
-pub const ENOCSI: u32 = 43;
-pub const EL2HLT: u32 = 44;
-pub const EDEADLK: u32 = 45;
-pub const ENOLCK: u32 = 46;
-pub const EBADE: u32 = 50;
-pub const EBADR: u32 = 51;
-pub const EXFULL: u32 = 52;
-pub const ENOANO: u32 = 53;
-pub const EBADRQC: u32 = 54;
-pub const EBADSLT: u32 = 55;
-pub const EDEADLOCK: u32 = 56;
-pub const EBFONT: u32 = 59;
-pub const ENOSTR: u32 = 60;
-pub const ENODATA: u32 = 61;
-pub const ETIME: u32 = 62;
-pub const ENOSR: u32 = 63;
-pub const ENONET: u32 = 64;
-pub const ENOPKG: u32 = 65;
-pub const EREMOTE: u32 = 66;
-pub const ENOLINK: u32 = 67;
-pub const EADV: u32 = 68;
-pub const ESRMNT: u32 = 69;
-pub const ECOMM: u32 = 70;
-pub const EPROTO: u32 = 71;
-pub const EDOTDOT: u32 = 73;
-pub const EMULTIHOP: u32 = 74;
-pub const EBADMSG: u32 = 77;
-pub const ENAMETOOLONG: u32 = 78;
-pub const EOVERFLOW: u32 = 79;
-pub const ENOTUNIQ: u32 = 80;
-pub const EBADFD: u32 = 81;
-pub const EREMCHG: u32 = 82;
-pub const ELIBACC: u32 = 83;
-pub const ELIBBAD: u32 = 84;
-pub const ELIBSCN: u32 = 85;
-pub const ELIBMAX: u32 = 86;
-pub const ELIBEXEC: u32 = 87;
-pub const EILSEQ: u32 = 88;
-pub const ENOSYS: u32 = 89;
-pub const ELOOP: u32 = 90;
-pub const ERESTART: u32 = 91;
-pub const ESTRPIPE: u32 = 92;
-pub const ENOTEMPTY: u32 = 93;
-pub const EUSERS: u32 = 94;
-pub const ENOTSOCK: u32 = 95;
-pub const EDESTADDRREQ: u32 = 96;
-pub const EMSGSIZE: u32 = 97;
-pub const EPROTOTYPE: u32 = 98;
-pub const ENOPROTOOPT: u32 = 99;
-pub const EPROTONOSUPPORT: u32 = 120;
-pub const ESOCKTNOSUPPORT: u32 = 121;
-pub const EOPNOTSUPP: u32 = 122;
-pub const EPFNOSUPPORT: u32 = 123;
-pub const EAFNOSUPPORT: u32 = 124;
-pub const EADDRINUSE: u32 = 125;
-pub const EADDRNOTAVAIL: u32 = 126;
-pub const ENETDOWN: u32 = 127;
-pub const ENETUNREACH: u32 = 128;
-pub const ENETRESET: u32 = 129;
-pub const ECONNABORTED: u32 = 130;
-pub const ECONNRESET: u32 = 131;
-pub const ENOBUFS: u32 = 132;
-pub const EISCONN: u32 = 133;
-pub const ENOTCONN: u32 = 134;
-pub const EUCLEAN: u32 = 135;
-pub const ENOTNAM: u32 = 137;
-pub const ENAVAIL: u32 = 138;
-pub const EISNAM: u32 = 139;
-pub const EREMOTEIO: u32 = 140;
-pub const EINIT: u32 = 141;
-pub const EREMDEV: u32 = 142;
-pub const ESHUTDOWN: u32 = 143;
-pub const ETOOMANYREFS: u32 = 144;
-pub const ETIMEDOUT: u32 = 145;
-pub const ECONNREFUSED: u32 = 146;
-pub const EHOSTDOWN: u32 = 147;
-pub const EHOSTUNREACH: u32 = 148;
-pub const EWOULDBLOCK: u32 = 11;
-pub const EALREADY: u32 = 149;
-pub const EINPROGRESS: u32 = 150;
-pub const ESTALE: u32 = 151;
-pub const ECANCELED: u32 = 158;
-pub const ENOMEDIUM: u32 = 159;
-pub const EMEDIUMTYPE: u32 = 160;
-pub const ENOKEY: u32 = 161;
-pub const EKEYEXPIRED: u32 = 162;
-pub const EKEYREVOKED: u32 = 163;
-pub const EKEYREJECTED: u32 = 164;
-pub const EOWNERDEAD: u32 = 165;
-pub const ENOTRECOVERABLE: u32 = 166;
-pub const ERFKILL: u32 = 167;
-pub const EHWPOISON: u32 = 168;
-pub const EDQUOT: u32 = 1133;
-pub const IGNBRK: u32 = 1;
-pub const BRKINT: u32 = 2;
-pub const IGNPAR: u32 = 4;
-pub const PARMRK: u32 = 8;
-pub const INPCK: u32 = 16;
-pub const ISTRIP: u32 = 32;
-pub const INLCR: u32 = 64;
-pub const IGNCR: u32 = 128;
-pub const ICRNL: u32 = 256;
-pub const IXANY: u32 = 2048;
-pub const OPOST: u32 = 1;
-pub const OCRNL: u32 = 8;
-pub const ONOCR: u32 = 16;
-pub const ONLRET: u32 = 32;
-pub const OFILL: u32 = 64;
-pub const OFDEL: u32 = 128;
-pub const B0: u32 = 0;
-pub const B50: u32 = 1;
-pub const B75: u32 = 2;
-pub const B110: u32 = 3;
-pub const B134: u32 = 4;
-pub const B150: u32 = 5;
-pub const B200: u32 = 6;
-pub const B300: u32 = 7;
-pub const B600: u32 = 8;
-pub const B1200: u32 = 9;
-pub const B1800: u32 = 10;
-pub const B2400: u32 = 11;
-pub const B4800: u32 = 12;
-pub const B9600: u32 = 13;
-pub const B19200: u32 = 14;
-pub const B38400: u32 = 15;
-pub const EXTA: u32 = 14;
-pub const EXTB: u32 = 15;
-pub const ADDRB: u32 = 536870912;
-pub const CMSPAR: u32 = 1073741824;
-pub const CRTSCTS: u32 = 2147483648;
-pub const IBSHIFT: u32 = 16;
-pub const TCOOFF: u32 = 0;
-pub const TCOON: u32 = 1;
-pub const TCIOFF: u32 = 2;
-pub const TCION: u32 = 3;
-pub const TCIFLUSH: u32 = 0;
-pub const TCOFLUSH: u32 = 1;
-pub const TCIOFLUSH: u32 = 2;
-pub const NCCS: u32 = 23;
-pub const VINTR: u32 = 0;
-pub const VQUIT: u32 = 1;
-pub const VERASE: u32 = 2;
-pub const VKILL: u32 = 3;
-pub const VMIN: u32 = 4;
-pub const VTIME: u32 = 5;
-pub const VEOL2: u32 = 6;
-pub const VSWTC: u32 = 7;
-pub const VSWTCH: u32 = 7;
-pub const VSTART: u32 = 8;
-pub const VSTOP: u32 = 9;
-pub const VSUSP: u32 = 10;
-pub const VREPRINT: u32 = 12;
-pub const VDISCARD: u32 = 13;
-pub const VWERASE: u32 = 14;
-pub const VLNEXT: u32 = 15;
-pub const VEOF: u32 = 16;
-pub const VEOL: u32 = 17;
-pub const IUCLC: u32 = 512;
-pub const IXON: u32 = 1024;
-pub const IXOFF: u32 = 4096;
-pub const IMAXBEL: u32 = 8192;
-pub const IUTF8: u32 = 16384;
-pub const OLCUC: u32 = 2;
-pub const ONLCR: u32 = 4;
-pub const NLDLY: u32 = 256;
-pub const NL0: u32 = 0;
-pub const NL1: u32 = 256;
-pub const CRDLY: u32 = 1536;
-pub const CR0: u32 = 0;
-pub const CR1: u32 = 512;
-pub const CR2: u32 = 1024;
-pub const CR3: u32 = 1536;
-pub const TABDLY: u32 = 6144;
-pub const TAB0: u32 = 0;
-pub const TAB1: u32 = 2048;
-pub const TAB2: u32 = 4096;
-pub const TAB3: u32 = 6144;
-pub const XTABS: u32 = 6144;
-pub const BSDLY: u32 = 8192;
-pub const BS0: u32 = 0;
-pub const BS1: u32 = 8192;
-pub const VTDLY: u32 = 16384;
-pub const VT0: u32 = 0;
-pub const VT1: u32 = 16384;
-pub const FFDLY: u32 = 32768;
-pub const FF0: u32 = 0;
-pub const FF1: u32 = 32768;
-pub const CBAUD: u32 = 4111;
-pub const CSIZE: u32 = 48;
-pub const CS5: u32 = 0;
-pub const CS6: u32 = 16;
-pub const CS7: u32 = 32;
-pub const CS8: u32 = 48;
-pub const CSTOPB: u32 = 64;
-pub const CREAD: u32 = 128;
-pub const PARENB: u32 = 256;
-pub const PARODD: u32 = 512;
-pub const HUPCL: u32 = 1024;
-pub const CLOCAL: u32 = 2048;
-pub const CBAUDEX: u32 = 4096;
-pub const BOTHER: u32 = 4096;
-pub const B57600: u32 = 4097;
-pub const B115200: u32 = 4098;
-pub const B230400: u32 = 4099;
-pub const B460800: u32 = 4100;
-pub const B500000: u32 = 4101;
-pub const B576000: u32 = 4102;
-pub const B921600: u32 = 4103;
-pub const B1000000: u32 = 4104;
-pub const B1152000: u32 = 4105;
-pub const B1500000: u32 = 4106;
-pub const B2000000: u32 = 4107;
-pub const B2500000: u32 = 4108;
-pub const B3000000: u32 = 4109;
-pub const B3500000: u32 = 4110;
-pub const B4000000: u32 = 4111;
-pub const CIBAUD: u32 = 269418496;
-pub const ISIG: u32 = 1;
-pub const ICANON: u32 = 2;
-pub const XCASE: u32 = 4;
-pub const ECHO: u32 = 8;
-pub const ECHOE: u32 = 16;
-pub const ECHOK: u32 = 32;
-pub const ECHONL: u32 = 64;
-pub const NOFLSH: u32 = 128;
-pub const IEXTEN: u32 = 256;
-pub const ECHOCTL: u32 = 512;
-pub const ECHOPRT: u32 = 1024;
-pub const ECHOKE: u32 = 2048;
-pub const FLUSHO: u32 = 8192;
-pub const PENDIN: u32 = 16384;
-pub const TOSTOP: u32 = 32768;
-pub const ITOSTOP: u32 = 32768;
-pub const EXTPROC: u32 = 65536;
-pub const TIOCSER_TEMT: u32 = 1;
-pub const TIOCPKT_DATA: u32 = 0;
-pub const TIOCPKT_FLUSHREAD: u32 = 1;
-pub const TIOCPKT_FLUSHWRITE: u32 = 2;
-pub const TIOCPKT_STOP: u32 = 4;
-pub const TIOCPKT_START: u32 = 8;
-pub const TIOCPKT_NOSTOP: u32 = 16;
-pub const TIOCPKT_DOSTOP: u32 = 32;
-pub const TIOCPKT_IOCTL: u32 = 64;
-pub const TIOCGLTC: u32 = 29812;
-pub const TIOCSLTC: u32 = 29813;
-pub const TIOCGETP: u32 = 29704;
-pub const TIOCSETP: u32 = 29705;
-pub const TIOCSETN: u32 = 29706;
-pub const NCC: u32 = 8;
-pub const TIOCM_LE: u32 = 1;
-pub const TIOCM_DTR: u32 = 2;
-pub const TIOCM_RTS: u32 = 4;
-pub const TIOCM_ST: u32 = 16;
-pub const TIOCM_SR: u32 = 32;
-pub const TIOCM_CTS: u32 = 64;
-pub const TIOCM_CAR: u32 = 256;
-pub const TIOCM_CD: u32 = 256;
-pub const TIOCM_RNG: u32 = 512;
-pub const TIOCM_RI: u32 = 512;
-pub const TIOCM_DSR: u32 = 1024;
-pub const TIOCM_OUT1: u32 = 8192;
-pub const TIOCM_OUT2: u32 = 16384;
-pub const TIOCM_LOOP: u32 = 32768;
-pub const UIO_FASTIOV: u32 = 8;
-pub const UIO_MAXIOV: u32 = 1024;
-pub const UNIX_PATH_MAX: u32 = 108;
-pub const __NR_Linux: u32 = 5000;
-pub const __NR_read: u32 = 5000;
-pub const __NR_write: u32 = 5001;
-pub const __NR_open: u32 = 5002;
-pub const __NR_close: u32 = 5003;
-pub const __NR_stat: u32 = 5004;
-pub const __NR_fstat: u32 = 5005;
-pub const __NR_lstat: u32 = 5006;
-pub const __NR_poll: u32 = 5007;
-pub const __NR_lseek: u32 = 5008;
-pub const __NR_mmap: u32 = 5009;
-pub const __NR_mprotect: u32 = 5010;
-pub const __NR_munmap: u32 = 5011;
-pub const __NR_brk: u32 = 5012;
-pub const __NR_rt_sigaction: u32 = 5013;
-pub const __NR_rt_sigprocmask: u32 = 5014;
-pub const __NR_ioctl: u32 = 5015;
-pub const __NR_pread64: u32 = 5016;
-pub const __NR_pwrite64: u32 = 5017;
-pub const __NR_readv: u32 = 5018;
-pub const __NR_writev: u32 = 5019;
-pub const __NR_access: u32 = 5020;
-pub const __NR_pipe: u32 = 5021;
-pub const __NR__newselect: u32 = 5022;
-pub const __NR_sched_yield: u32 = 5023;
-pub const __NR_mremap: u32 = 5024;
-pub const __NR_msync: u32 = 5025;
-pub const __NR_mincore: u32 = 5026;
-pub const __NR_madvise: u32 = 5027;
-pub const __NR_shmget: u32 = 5028;
-pub const __NR_shmat: u32 = 5029;
-pub const __NR_shmctl: u32 = 5030;
-pub const __NR_dup: u32 = 5031;
-pub const __NR_dup2: u32 = 5032;
-pub const __NR_pause: u32 = 5033;
-pub const __NR_nanosleep: u32 = 5034;
-pub const __NR_getitimer: u32 = 5035;
-pub const __NR_setitimer: u32 = 5036;
-pub const __NR_alarm: u32 = 5037;
-pub const __NR_getpid: u32 = 5038;
-pub const __NR_sendfile: u32 = 5039;
-pub const __NR_socket: u32 = 5040;
-pub const __NR_connect: u32 = 5041;
-pub const __NR_accept: u32 = 5042;
-pub const __NR_sendto: u32 = 5043;
-pub const __NR_recvfrom: u32 = 5044;
-pub const __NR_sendmsg: u32 = 5045;
-pub const __NR_recvmsg: u32 = 5046;
-pub const __NR_shutdown: u32 = 5047;
-pub const __NR_bind: u32 = 5048;
-pub const __NR_listen: u32 = 5049;
-pub const __NR_getsockname: u32 = 5050;
-pub const __NR_getpeername: u32 = 5051;
-pub const __NR_socketpair: u32 = 5052;
-pub const __NR_setsockopt: u32 = 5053;
-pub const __NR_getsockopt: u32 = 5054;
-pub const __NR_clone: u32 = 5055;
-pub const __NR_fork: u32 = 5056;
-pub const __NR_execve: u32 = 5057;
-pub const __NR_exit: u32 = 5058;
-pub const __NR_wait4: u32 = 5059;
-pub const __NR_kill: u32 = 5060;
-pub const __NR_uname: u32 = 5061;
-pub const __NR_semget: u32 = 5062;
-pub const __NR_semop: u32 = 5063;
-pub const __NR_semctl: u32 = 5064;
-pub const __NR_shmdt: u32 = 5065;
-pub const __NR_msgget: u32 = 5066;
-pub const __NR_msgsnd: u32 = 5067;
-pub const __NR_msgrcv: u32 = 5068;
-pub const __NR_msgctl: u32 = 5069;
-pub const __NR_fcntl: u32 = 5070;
-pub const __NR_flock: u32 = 5071;
-pub const __NR_fsync: u32 = 5072;
-pub const __NR_fdatasync: u32 = 5073;
-pub const __NR_truncate: u32 = 5074;
-pub const __NR_ftruncate: u32 = 5075;
-pub const __NR_getdents: u32 = 5076;
-pub const __NR_getcwd: u32 = 5077;
-pub const __NR_chdir: u32 = 5078;
-pub const __NR_fchdir: u32 = 5079;
-pub const __NR_rename: u32 = 5080;
-pub const __NR_mkdir: u32 = 5081;
-pub const __NR_rmdir: u32 = 5082;
-pub const __NR_creat: u32 = 5083;
-pub const __NR_link: u32 = 5084;
-pub const __NR_unlink: u32 = 5085;
-pub const __NR_symlink: u32 = 5086;
-pub const __NR_readlink: u32 = 5087;
-pub const __NR_chmod: u32 = 5088;
-pub const __NR_fchmod: u32 = 5089;
-pub const __NR_chown: u32 = 5090;
-pub const __NR_fchown: u32 = 5091;
-pub const __NR_lchown: u32 = 5092;
-pub const __NR_umask: u32 = 5093;
-pub const __NR_gettimeofday: u32 = 5094;
-pub const __NR_getrlimit: u32 = 5095;
-pub const __NR_getrusage: u32 = 5096;
-pub const __NR_sysinfo: u32 = 5097;
-pub const __NR_times: u32 = 5098;
-pub const __NR_ptrace: u32 = 5099;
-pub const __NR_getuid: u32 = 5100;
-pub const __NR_syslog: u32 = 5101;
-pub const __NR_getgid: u32 = 5102;
-pub const __NR_setuid: u32 = 5103;
-pub const __NR_setgid: u32 = 5104;
-pub const __NR_geteuid: u32 = 5105;
-pub const __NR_getegid: u32 = 5106;
-pub const __NR_setpgid: u32 = 5107;
-pub const __NR_getppid: u32 = 5108;
-pub const __NR_getpgrp: u32 = 5109;
-pub const __NR_setsid: u32 = 5110;
-pub const __NR_setreuid: u32 = 5111;
-pub const __NR_setregid: u32 = 5112;
-pub const __NR_getgroups: u32 = 5113;
-pub const __NR_setgroups: u32 = 5114;
-pub const __NR_setresuid: u32 = 5115;
-pub const __NR_getresuid: u32 = 5116;
-pub const __NR_setresgid: u32 = 5117;
-pub const __NR_getresgid: u32 = 5118;
-pub const __NR_getpgid: u32 = 5119;
-pub const __NR_setfsuid: u32 = 5120;
-pub const __NR_setfsgid: u32 = 5121;
-pub const __NR_getsid: u32 = 5122;
-pub const __NR_capget: u32 = 5123;
-pub const __NR_capset: u32 = 5124;
-pub const __NR_rt_sigpending: u32 = 5125;
-pub const __NR_rt_sigtimedwait: u32 = 5126;
-pub const __NR_rt_sigqueueinfo: u32 = 5127;
-pub const __NR_rt_sigsuspend: u32 = 5128;
-pub const __NR_sigaltstack: u32 = 5129;
-pub const __NR_utime: u32 = 5130;
-pub const __NR_mknod: u32 = 5131;
-pub const __NR_personality: u32 = 5132;
-pub const __NR_ustat: u32 = 5133;
-pub const __NR_statfs: u32 = 5134;
-pub const __NR_fstatfs: u32 = 5135;
-pub const __NR_sysfs: u32 = 5136;
-pub const __NR_getpriority: u32 = 5137;
-pub const __NR_setpriority: u32 = 5138;
-pub const __NR_sched_setparam: u32 = 5139;
-pub const __NR_sched_getparam: u32 = 5140;
-pub const __NR_sched_setscheduler: u32 = 5141;
-pub const __NR_sched_getscheduler: u32 = 5142;
-pub const __NR_sched_get_priority_max: u32 = 5143;
-pub const __NR_sched_get_priority_min: u32 = 5144;
-pub const __NR_sched_rr_get_interval: u32 = 5145;
-pub const __NR_mlock: u32 = 5146;
-pub const __NR_munlock: u32 = 5147;
-pub const __NR_mlockall: u32 = 5148;
-pub const __NR_munlockall: u32 = 5149;
-pub const __NR_vhangup: u32 = 5150;
-pub const __NR_pivot_root: u32 = 5151;
-pub const __NR__sysctl: u32 = 5152;
-pub const __NR_prctl: u32 = 5153;
-pub const __NR_adjtimex: u32 = 5154;
-pub const __NR_setrlimit: u32 = 5155;
-pub const __NR_chroot: u32 = 5156;
-pub const __NR_sync: u32 = 5157;
-pub const __NR_acct: u32 = 5158;
-pub const __NR_settimeofday: u32 = 5159;
-pub const __NR_mount: u32 = 5160;
-pub const __NR_umount2: u32 = 5161;
-pub const __NR_swapon: u32 = 5162;
-pub const __NR_swapoff: u32 = 5163;
-pub const __NR_reboot: u32 = 5164;
-pub const __NR_sethostname: u32 = 5165;
-pub const __NR_setdomainname: u32 = 5166;
-pub const __NR_create_module: u32 = 5167;
-pub const __NR_init_module: u32 = 5168;
-pub const __NR_delete_module: u32 = 5169;
-pub const __NR_get_kernel_syms: u32 = 5170;
-pub const __NR_query_module: u32 = 5171;
-pub const __NR_quotactl: u32 = 5172;
-pub const __NR_nfsservctl: u32 = 5173;
-pub const __NR_getpmsg: u32 = 5174;
-pub const __NR_putpmsg: u32 = 5175;
-pub const __NR_afs_syscall: u32 = 5176;
-pub const __NR_reserved177: u32 = 5177;
-pub const __NR_gettid: u32 = 5178;
-pub const __NR_readahead: u32 = 5179;
-pub const __NR_setxattr: u32 = 5180;
-pub const __NR_lsetxattr: u32 = 5181;
-pub const __NR_fsetxattr: u32 = 5182;
-pub const __NR_getxattr: u32 = 5183;
-pub const __NR_lgetxattr: u32 = 5184;
-pub const __NR_fgetxattr: u32 = 5185;
-pub const __NR_listxattr: u32 = 5186;
-pub const __NR_llistxattr: u32 = 5187;
-pub const __NR_flistxattr: u32 = 5188;
-pub const __NR_removexattr: u32 = 5189;
-pub const __NR_lremovexattr: u32 = 5190;
-pub const __NR_fremovexattr: u32 = 5191;
-pub const __NR_tkill: u32 = 5192;
-pub const __NR_reserved193: u32 = 5193;
-pub const __NR_futex: u32 = 5194;
-pub const __NR_sched_setaffinity: u32 = 5195;
-pub const __NR_sched_getaffinity: u32 = 5196;
-pub const __NR_cacheflush: u32 = 5197;
-pub const __NR_cachectl: u32 = 5198;
-pub const __NR_sysmips: u32 = 5199;
-pub const __NR_io_setup: u32 = 5200;
-pub const __NR_io_destroy: u32 = 5201;
-pub const __NR_io_getevents: u32 = 5202;
-pub const __NR_io_submit: u32 = 5203;
-pub const __NR_io_cancel: u32 = 5204;
-pub const __NR_exit_group: u32 = 5205;
-pub const __NR_lookup_dcookie: u32 = 5206;
-pub const __NR_epoll_create: u32 = 5207;
-pub const __NR_epoll_ctl: u32 = 5208;
-pub const __NR_epoll_wait: u32 = 5209;
-pub const __NR_remap_file_pages: u32 = 5210;
-pub const __NR_rt_sigreturn: u32 = 5211;
-pub const __NR_set_tid_address: u32 = 5212;
-pub const __NR_restart_syscall: u32 = 5213;
-pub const __NR_semtimedop: u32 = 5214;
-pub const __NR_fadvise64: u32 = 5215;
-pub const __NR_timer_create: u32 = 5216;
-pub const __NR_timer_settime: u32 = 5217;
-pub const __NR_timer_gettime: u32 = 5218;
-pub const __NR_timer_getoverrun: u32 = 5219;
-pub const __NR_timer_delete: u32 = 5220;
-pub const __NR_clock_settime: u32 = 5221;
-pub const __NR_clock_gettime: u32 = 5222;
-pub const __NR_clock_getres: u32 = 5223;
-pub const __NR_clock_nanosleep: u32 = 5224;
-pub const __NR_tgkill: u32 = 5225;
-pub const __NR_utimes: u32 = 5226;
-pub const __NR_mbind: u32 = 5227;
-pub const __NR_get_mempolicy: u32 = 5228;
-pub const __NR_set_mempolicy: u32 = 5229;
-pub const __NR_mq_open: u32 = 5230;
-pub const __NR_mq_unlink: u32 = 5231;
-pub const __NR_mq_timedsend: u32 = 5232;
-pub const __NR_mq_timedreceive: u32 = 5233;
-pub const __NR_mq_notify: u32 = 5234;
-pub const __NR_mq_getsetattr: u32 = 5235;
-pub const __NR_vserver: u32 = 5236;
-pub const __NR_waitid: u32 = 5237;
-pub const __NR_add_key: u32 = 5239;
-pub const __NR_request_key: u32 = 5240;
-pub const __NR_keyctl: u32 = 5241;
-pub const __NR_set_thread_area: u32 = 5242;
-pub const __NR_inotify_init: u32 = 5243;
-pub const __NR_inotify_add_watch: u32 = 5244;
-pub const __NR_inotify_rm_watch: u32 = 5245;
-pub const __NR_migrate_pages: u32 = 5246;
-pub const __NR_openat: u32 = 5247;
-pub const __NR_mkdirat: u32 = 5248;
-pub const __NR_mknodat: u32 = 5249;
-pub const __NR_fchownat: u32 = 5250;
-pub const __NR_futimesat: u32 = 5251;
-pub const __NR_newfstatat: u32 = 5252;
-pub const __NR_unlinkat: u32 = 5253;
-pub const __NR_renameat: u32 = 5254;
-pub const __NR_linkat: u32 = 5255;
-pub const __NR_symlinkat: u32 = 5256;
-pub const __NR_readlinkat: u32 = 5257;
-pub const __NR_fchmodat: u32 = 5258;
-pub const __NR_faccessat: u32 = 5259;
-pub const __NR_pselect6: u32 = 5260;
-pub const __NR_ppoll: u32 = 5261;
-pub const __NR_unshare: u32 = 5262;
-pub const __NR_splice: u32 = 5263;
-pub const __NR_sync_file_range: u32 = 5264;
-pub const __NR_tee: u32 = 5265;
-pub const __NR_vmsplice: u32 = 5266;
-pub const __NR_move_pages: u32 = 5267;
-pub const __NR_set_robust_list: u32 = 5268;
-pub const __NR_get_robust_list: u32 = 5269;
-pub const __NR_kexec_load: u32 = 5270;
-pub const __NR_getcpu: u32 = 5271;
-pub const __NR_epoll_pwait: u32 = 5272;
-pub const __NR_ioprio_set: u32 = 5273;
-pub const __NR_ioprio_get: u32 = 5274;
-pub const __NR_utimensat: u32 = 5275;
-pub const __NR_signalfd: u32 = 5276;
-pub const __NR_timerfd: u32 = 5277;
-pub const __NR_eventfd: u32 = 5278;
-pub const __NR_fallocate: u32 = 5279;
-pub const __NR_timerfd_create: u32 = 5280;
-pub const __NR_timerfd_gettime: u32 = 5281;
-pub const __NR_timerfd_settime: u32 = 5282;
-pub const __NR_signalfd4: u32 = 5283;
-pub const __NR_eventfd2: u32 = 5284;
-pub const __NR_epoll_create1: u32 = 5285;
-pub const __NR_dup3: u32 = 5286;
-pub const __NR_pipe2: u32 = 5287;
-pub const __NR_inotify_init1: u32 = 5288;
-pub const __NR_preadv: u32 = 5289;
-pub const __NR_pwritev: u32 = 5290;
-pub const __NR_rt_tgsigqueueinfo: u32 = 5291;
-pub const __NR_perf_event_open: u32 = 5292;
-pub const __NR_accept4: u32 = 5293;
-pub const __NR_recvmmsg: u32 = 5294;
-pub const __NR_fanotify_init: u32 = 5295;
-pub const __NR_fanotify_mark: u32 = 5296;
-pub const __NR_prlimit64: u32 = 5297;
-pub const __NR_name_to_handle_at: u32 = 5298;
-pub const __NR_open_by_handle_at: u32 = 5299;
-pub const __NR_clock_adjtime: u32 = 5300;
-pub const __NR_syncfs: u32 = 5301;
-pub const __NR_sendmmsg: u32 = 5302;
-pub const __NR_setns: u32 = 5303;
-pub const __NR_process_vm_readv: u32 = 5304;
-pub const __NR_process_vm_writev: u32 = 5305;
-pub const __NR_kcmp: u32 = 5306;
-pub const __NR_finit_module: u32 = 5307;
-pub const __NR_getdents64: u32 = 5308;
-pub const __NR_sched_setattr: u32 = 5309;
-pub const __NR_sched_getattr: u32 = 5310;
-pub const __NR_renameat2: u32 = 5311;
-pub const __NR_seccomp: u32 = 5312;
-pub const __NR_getrandom: u32 = 5313;
-pub const __NR_memfd_create: u32 = 5314;
-pub const __NR_bpf: u32 = 5315;
-pub const __NR_execveat: u32 = 5316;
-pub const __NR_userfaultfd: u32 = 5317;
-pub const __NR_membarrier: u32 = 5318;
-pub const __NR_mlock2: u32 = 5319;
-pub const __NR_copy_file_range: u32 = 5320;
-pub const __NR_preadv2: u32 = 5321;
-pub const __NR_pwritev2: u32 = 5322;
-pub const __NR_pkey_mprotect: u32 = 5323;
-pub const __NR_pkey_alloc: u32 = 5324;
-pub const __NR_pkey_free: u32 = 5325;
-pub const __NR_statx: u32 = 5326;
-pub const __NR_rseq: u32 = 5327;
-pub const __NR_io_pgetevents: u32 = 5328;
-pub const __NR_pidfd_send_signal: u32 = 5424;
-pub const __NR_io_uring_setup: u32 = 5425;
-pub const __NR_io_uring_enter: u32 = 5426;
-pub const __NR_io_uring_register: u32 = 5427;
-pub const __NR_open_tree: u32 = 5428;
-pub const __NR_move_mount: u32 = 5429;
-pub const __NR_fsopen: u32 = 5430;
-pub const __NR_fsconfig: u32 = 5431;
-pub const __NR_fsmount: u32 = 5432;
-pub const __NR_fspick: u32 = 5433;
-pub const __NR_pidfd_open: u32 = 5434;
-pub const __NR_clone3: u32 = 5435;
-pub const __NR_close_range: u32 = 5436;
-pub const __NR_openat2: u32 = 5437;
-pub const __NR_pidfd_getfd: u32 = 5438;
-pub const __NR_faccessat2: u32 = 5439;
-pub const __NR_process_madvise: u32 = 5440;
-pub const __NR_epoll_pwait2: u32 = 5441;
-pub const __NR_mount_setattr: u32 = 5442;
-pub const __NR_quotactl_fd: u32 = 5443;
-pub const __NR_landlock_create_ruleset: u32 = 5444;
-pub const __NR_landlock_add_rule: u32 = 5445;
-pub const __NR_landlock_restrict_self: u32 = 5446;
-pub const __NR_process_mrelease: u32 = 5448;
-pub const __NR_futex_waitv: u32 = 5449;
-pub const __NR_set_mempolicy_home_node: u32 = 5450;
-pub const __OLD_UTS_LEN: u32 = 8;
-pub const __NEW_UTS_LEN: u32 = 64;
-pub const WNOHANG: u32 = 1;
-pub const WUNTRACED: u32 = 2;
-pub const WSTOPPED: u32 = 2;
-pub const WEXITED: u32 = 4;
-pub const WCONTINUED: u32 = 8;
-pub const WNOWAIT: u32 = 16777216;
-pub const __WNOTHREAD: u32 = 536870912;
-pub const __WALL: u32 = 1073741824;
-pub const __WCLONE: u32 = 2147483648;
-pub const P_ALL: u32 = 0;
-pub const P_PID: u32 = 1;
-pub const P_PGID: u32 = 2;
-pub const P_PIDFD: u32 = 3;
-pub const XATTR_CREATE: u32 = 1;
-pub const XATTR_REPLACE: u32 = 2;
-pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0";
-pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0";
-pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0";
-pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0";
-pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0";
-pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0";
-pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0";
-pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0";
-pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0";
-pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0";
-pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0";
-pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0";
-pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0";
-pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0";
-pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0";
-pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0";
-pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0";
-pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0";
-pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0";
-pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0";
-pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0";
-pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0";
-pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0";
-pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0";
-pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0";
-pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0";
-pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0";
-pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0";
-pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0";
-pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0";
-pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0";
-pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0";
-pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0";
-pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0";
-pub const MFD_CLOEXEC: u32 = 1;
-pub const MFD_ALLOW_SEALING: u32 = 2;
-pub const MFD_HUGETLB: u32 = 4;
-pub const MFD_HUGE_SHIFT: u32 = 26;
-pub const MFD_HUGE_MASK: u32 = 63;
-pub const MFD_HUGE_64KB: u32 = 1073741824;
-pub const MFD_HUGE_512KB: u32 = 1275068416;
-pub const MFD_HUGE_1MB: u32 = 1342177280;
-pub const MFD_HUGE_2MB: u32 = 1409286144;
-pub const MFD_HUGE_8MB: u32 = 1543503872;
-pub const MFD_HUGE_16MB: u32 = 1610612736;
-pub const MFD_HUGE_32MB: u32 = 1677721600;
-pub const MFD_HUGE_256MB: u32 = 1879048192;
-pub const MFD_HUGE_512MB: u32 = 1946157056;
-pub const MFD_HUGE_1GB: u32 = 2013265920;
-pub const MFD_HUGE_2GB: u32 = 2080374784;
-pub const MFD_HUGE_16GB: u32 = 2281701376;
-pub const TFD_TIMER_ABSTIME: u32 = 1;
-pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2;
-pub const TFD_CLOEXEC: u32 = 524288;
-pub const TFD_NONBLOCK: u32 = 128;
-pub const USERFAULTFD_IOC: u32 = 170;
-pub const _UFFDIO_REGISTER: u32 = 0;
-pub const _UFFDIO_UNREGISTER: u32 = 1;
-pub const _UFFDIO_WAKE: u32 = 2;
-pub const _UFFDIO_COPY: u32 = 3;
-pub const _UFFDIO_ZEROPAGE: u32 = 4;
-pub const _UFFDIO_WRITEPROTECT: u32 = 6;
-pub const _UFFDIO_CONTINUE: u32 = 7;
-pub const _UFFDIO_API: u32 = 63;
-pub const UFFDIO: u32 = 170;
-pub const UFFD_EVENT_PAGEFAULT: u32 = 18;
-pub const UFFD_EVENT_FORK: u32 = 19;
-pub const UFFD_EVENT_REMAP: u32 = 20;
-pub const UFFD_EVENT_REMOVE: u32 = 21;
-pub const UFFD_EVENT_UNMAP: u32 = 22;
-pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1;
-pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2;
-pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4;
-pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1;
-pub const UFFD_FEATURE_EVENT_FORK: u32 = 2;
-pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4;
-pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8;
-pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16;
-pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32;
-pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64;
-pub const UFFD_FEATURE_SIGBUS: u32 = 128;
-pub const UFFD_FEATURE_THREAD_ID: u32 = 256;
-pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512;
-pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024;
-pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048;
-pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096;
-pub const UFFD_USER_MODE_ONLY: u32 = 1;
-pub const IORING_FILE_INDEX_ALLOC: i32 = -1;
-pub const IORING_SETUP_IOPOLL: u32 = 1;
-pub const IORING_SETUP_SQPOLL: u32 = 2;
-pub const IORING_SETUP_SQ_AFF: u32 = 4;
-pub const IORING_SETUP_CQSIZE: u32 = 8;
-pub const IORING_SETUP_CLAMP: u32 = 16;
-pub const IORING_SETUP_ATTACH_WQ: u32 = 32;
-pub const IORING_SETUP_R_DISABLED: u32 = 64;
-pub const IORING_SETUP_SUBMIT_ALL: u32 = 128;
-pub const IORING_SETUP_COOP_TASKRUN: u32 = 256;
-pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512;
-pub const IORING_SETUP_SQE128: u32 = 1024;
-pub const IORING_SETUP_CQE32: u32 = 2048;
-pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096;
-pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192;
-pub const IORING_URING_CMD_FIXED: u32 = 1;
-pub const IORING_FSYNC_DATASYNC: u32 = 1;
-pub const IORING_TIMEOUT_ABS: u32 = 1;
-pub const IORING_TIMEOUT_UPDATE: u32 = 2;
-pub const IORING_TIMEOUT_BOOTTIME: u32 = 4;
-pub const IORING_TIMEOUT_REALTIME: u32 = 8;
-pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16;
-pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32;
-pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12;
-pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18;
-pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648;
-pub const IORING_POLL_ADD_MULTI: u32 = 1;
-pub const IORING_POLL_UPDATE_EVENTS: u32 = 2;
-pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4;
-pub const IORING_POLL_ADD_LEVEL: u32 = 8;
-pub const IORING_ASYNC_CANCEL_ALL: u32 = 1;
-pub const IORING_ASYNC_CANCEL_FD: u32 = 2;
-pub const IORING_ASYNC_CANCEL_ANY: u32 = 4;
-pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8;
-pub const IORING_RECVSEND_POLL_FIRST: u32 = 1;
-pub const IORING_RECV_MULTISHOT: u32 = 2;
-pub const IORING_RECVSEND_FIXED_BUF: u32 = 4;
-pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8;
-pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648;
-pub const IORING_ACCEPT_MULTISHOT: u32 = 1;
-pub const IORING_MSG_RING_CQE_SKIP: u32 = 1;
-pub const IORING_CQE_F_BUFFER: u32 = 1;
-pub const IORING_CQE_F_MORE: u32 = 2;
-pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4;
-pub const IORING_CQE_F_NOTIF: u32 = 8;
-pub const IORING_OFF_SQ_RING: u32 = 0;
-pub const IORING_OFF_CQ_RING: u32 = 134217728;
-pub const IORING_OFF_SQES: u32 = 268435456;
-pub const IORING_SQ_NEED_WAKEUP: u32 = 1;
-pub const IORING_SQ_CQ_OVERFLOW: u32 = 2;
-pub const IORING_SQ_TASKRUN: u32 = 4;
-pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1;
-pub const IORING_ENTER_GETEVENTS: u32 = 1;
-pub const IORING_ENTER_SQ_WAKEUP: u32 = 2;
-pub const IORING_ENTER_SQ_WAIT: u32 = 4;
-pub const IORING_ENTER_EXT_ARG: u32 = 8;
-pub const IORING_ENTER_REGISTERED_RING: u32 = 16;
-pub const IORING_FEAT_SINGLE_MMAP: u32 = 1;
-pub const IORING_FEAT_NODROP: u32 = 2;
-pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4;
-pub const IORING_FEAT_RW_CUR_POS: u32 = 8;
-pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16;
-pub const IORING_FEAT_FAST_POLL: u32 = 32;
-pub const IORING_FEAT_POLL_32BITS: u32 = 64;
-pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128;
-pub const IORING_FEAT_EXT_ARG: u32 = 256;
-pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512;
-pub const IORING_FEAT_RSRC_TAGS: u32 = 1024;
-pub const IORING_FEAT_CQE_SKIP: u32 = 2048;
-pub const IORING_FEAT_LINKED_FILE: u32 = 4096;
-pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1;
-pub const IORING_REGISTER_FILES_SKIP: i32 = -2;
-pub const IO_URING_OP_SUPPORTED: u32 = 1;
-pub const DT_UNKNOWN: u32 = 0;
-pub const DT_FIFO: u32 = 1;
-pub const DT_CHR: u32 = 2;
-pub const DT_DIR: u32 = 4;
-pub const DT_BLK: u32 = 6;
-pub const DT_REG: u32 = 8;
-pub const DT_LNK: u32 = 10;
-pub const DT_SOCK: u32 = 12;
-pub const SHUT_RD: u32 = 0;
-pub const SHUT_WR: u32 = 1;
-pub const SHUT_RDWR: u32 = 2;
-pub const STAT_HAVE_NSEC: u32 = 1;
-pub const SOCK_STREAM: u32 = 2;
-pub const SOCK_DGRAM: u32 = 1;
-pub const SOCK_RAW: u32 = 3;
-pub const SOCK_RDM: u32 = 4;
-pub const SOCK_SEQPACKET: u32 = 5;
-pub const F_OK: u32 = 0;
-pub const R_OK: u32 = 4;
-pub const W_OK: u32 = 2;
-pub const X_OK: u32 = 1;
-pub const UTIME_NOW: u32 = 1073741823;
-pub const UTIME_OMIT: u32 = 1073741822;
-pub const MSG_DONTWAIT: u32 = 64;
-pub const AF_UNSPEC: u32 = 0;
-pub const AF_UNIX: u32 = 1;
-pub const AF_INET: u32 = 2;
-pub const AF_AX25: u32 = 3;
-pub const AF_IPX: u32 = 4;
-pub const AF_APPLETALK: u32 = 5;
-pub const AF_NETROM: u32 = 6;
-pub const AF_BRIDGE: u32 = 7;
-pub const AF_ATMPVC: u32 = 8;
-pub const AF_X25: u32 = 9;
-pub const AF_INET6: u32 = 10;
-pub const AF_ROSE: u32 = 11;
-pub const AF_DECnet: u32 = 12;
-pub const AF_NETBEUI: u32 = 13;
-pub const AF_SECURITY: u32 = 14;
-pub const AF_KEY: u32 = 15;
-pub const AF_NETLINK: u32 = 16;
-pub const AF_PACKET: u32 = 17;
-pub const AF_ASH: u32 = 18;
-pub const AF_ECONET: u32 = 19;
-pub const AF_ATMSVC: u32 = 20;
-pub const AF_RDS: u32 = 21;
-pub const AF_SNA: u32 = 22;
-pub const AF_IRDA: u32 = 23;
-pub const AF_PPPOX: u32 = 24;
-pub const AF_WANPIPE: u32 = 25;
-pub const AF_LLC: u32 = 26;
-pub const AF_CAN: u32 = 29;
-pub const AF_TIPC: u32 = 30;
-pub const AF_BLUETOOTH: u32 = 31;
-pub const AF_IUCV: u32 = 32;
-pub const AF_RXRPC: u32 = 33;
-pub const AF_ISDN: u32 = 34;
-pub const AF_PHONET: u32 = 35;
-pub const AF_IEEE802154: u32 = 36;
-pub const AF_MAX: u32 = 37;
-pub const MSG_OOB: u32 = 1;
-pub const MSG_PEEK: u32 = 2;
-pub const MSG_DONTROUTE: u32 = 4;
-pub const MSG_CTRUNC: u32 = 8;
-pub const MSG_PROBE: u32 = 16;
-pub const MSG_TRUNC: u32 = 32;
-pub const MSG_EOR: u32 = 128;
-pub const MSG_WAITALL: u32 = 256;
-pub const MSG_FIN: u32 = 512;
-pub const MSG_SYN: u32 = 1024;
-pub const MSG_CONFIRM: u32 = 2048;
-pub const MSG_RST: u32 = 4096;
-pub const MSG_ERRQUEUE: u32 = 8192;
-pub const MSG_NOSIGNAL: u32 = 16384;
-pub const MSG_MORE: u32 = 32768;
-pub const MSG_CMSG_CLOEXEC: u32 = 1073741824;
-pub const STDIN_FILENO: u32 = 0;
-pub const STDOUT_FILENO: u32 = 1;
-pub const STDERR_FILENO: u32 = 2;
-pub const RWF_HIPRI: u32 = 1;
-pub const RWF_DSYNC: u32 = 2;
-pub const RWF_SYNC: u32 = 4;
-pub const RWF_NOWAIT: u32 = 8;
-pub const RWF_APPEND: u32 = 16;
-pub const EFD_SEMAPHORE: u32 = 1;
-pub const EFD_CLOEXEC: u32 = 524288;
-pub const EFD_NONBLOCK: u32 = 128;
-pub const EPOLLIN: u32 = 1;
-pub const EPOLLPRI: u32 = 2;
-pub const EPOLLOUT: u32 = 4;
-pub const EPOLLERR: u32 = 8;
-pub const EPOLLHUP: u32 = 16;
-pub const EPOLLNVAL: u32 = 32;
-pub const EPOLLRDNORM: u32 = 64;
-pub const EPOLLRDBAND: u32 = 128;
-pub const EPOLLWRNORM: u32 = 256;
-pub const EPOLLWRBAND: u32 = 512;
-pub const EPOLLMSG: u32 = 1024;
-pub const EPOLLRDHUP: u32 = 8192;
-pub const EPOLLEXCLUSIVE: u32 = 268435456;
-pub const EPOLLWAKEUP: u32 = 536870912;
-pub const EPOLLONESHOT: u32 = 1073741824;
-pub const EPOLLET: u32 = 2147483648;
-pub const TFD_SHARED_FCNTL_FLAGS: u32 = 524416;
-pub const TFD_CREATE_FLAGS: u32 = 524416;
-pub const TFD_SETTIME_FLAGS: u32 = 1;
-pub const SCM_RIGHTS: u32 = 1;
-pub const SCM_CREDENTIALS: u32 = 2;
-pub const SCM_SECURITY: u32 = 3;
-pub const UFFD_API: u32 = 170;
-pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1;
-pub const UFFDIO_REGISTER_MODE_WP: u32 = 2;
-pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4;
-pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1;
-pub const UFFDIO_COPY_MODE_WP: u32 = 2;
-pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1;
-pub const POLLWRNORM: u32 = 4;
-pub const TCSANOW: u32 = 21518;
-pub const TCSADRAIN: u32 = 21519;
-pub const TCSAFLUSH: u32 = 21520;
-pub const SPLICE_F_MOVE: u32 = 1;
-pub const SPLICE_F_NONBLOCK: u32 = 2;
-pub const SPLICE_F_MORE: u32 = 4;
-pub const SPLICE_F_GIFT: u32 = 8;
-pub const MNT_FORCE: u32 = 1;
-pub const MNT_DETACH: u32 = 2;
-pub const MNT_EXPIRE: u32 = 4;
-pub const UMOUNT_NOFOLLOW: u32 = 8;
-pub const UMOUNT_UNUSED: u32 = 2147483648;
-pub type size_t = crate::ctypes::c_ulong;
-pub type ssize_t = crate::ctypes::c_long;
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_long;
-pub type __u64 = crate::ctypes::c_ulong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 16usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_daddr_t = crate::ctypes::c_long;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_uid_t = __kernel_uid_t;
-pub type __kernel_old_gid_t = __kernel_gid_t;
-pub type __kernel_old_dev_t = crate::ctypes::c_uint;
-pub type __kernel_size_t = __kernel_ulong_t;
-pub type __kernel_ssize_t = __kernel_long_t;
-pub type __kernel_ptrdiff_t = __kernel_long_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_header_struct {
-pub version: __u32,
-pub pid: crate::ctypes::c_int,
-}
-pub type cap_user_header_t = *mut __user_cap_header_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_data_struct {
-pub effective: __u32,
-pub permitted: __u32,
-pub inheritable: __u32,
-}
-pub type cap_user_data_t = *mut __user_cap_data_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_cap_data__bindgen_ty_1; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize],
-pub rootid: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct f_owner_ex {
-pub type_: crate::ctypes::c_int,
-pub pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_off_t,
-pub l_len: __kernel_off_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock64 {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_loff_t,
-pub l_len: __kernel_loff_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct open_how {
-pub flags: __u64,
-pub mode: __u64,
-pub resolve: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct epoll_event {
-pub events: __poll_t,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v1 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub master_key_descriptor: [__u8; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_key {
-pub mode: __u32,
-pub raw: [__u8; 64usize],
-pub size: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v2 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub __reserved: [__u8; 4usize],
-pub master_key_identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_policy_ex_arg {
-pub policy_size: __u64,
-pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 {
-pub version: __u8,
-pub v1: fscrypt_policy_v1,
-pub v2: fscrypt_policy_v2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_key_specifier {
-pub type_: __u32,
-pub __reserved: __u32,
-pub u: fscrypt_key_specifier__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_key_specifier__bindgen_ty_1 {
-pub __reserved: [__u8; 32usize],
-pub descriptor: [__u8; 8usize],
-pub identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct fscrypt_provisioning_key_payload {
-pub type_: __u32,
-pub __reserved: __u32,
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-pub struct fscrypt_add_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub raw_size: __u32,
-pub key_id: __u32,
-pub __reserved: [__u32; 8usize],
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_remove_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub removal_status_flags: __u32,
-pub __reserved: [__u32; 5usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_key_status_arg {
-pub key_spec: fscrypt_key_specifier,
-pub __reserved: [__u32; 6usize],
-pub status: __u32,
-pub status_flags: __u32,
-pub user_count: __u32,
-pub __out_reserved: [__u32; 13usize],
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum fsconfig_command {
-FSCONFIG_SET_FLAG = 0,
-FSCONFIG_SET_STRING = 1,
-FSCONFIG_SET_BINARY = 2,
-FSCONFIG_SET_PATH = 3,
-FSCONFIG_SET_PATH_EMPTY = 4,
-FSCONFIG_SET_FD = 5,
-FSCONFIG_CMD_CREATE = 6,
-FSCONFIG_CMD_RECONFIGURE = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mount_attr {
-pub attr_set: __u64,
-pub attr_clr: __u64,
-pub propagation: __u64,
-pub userns_fd: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_clone_range {
-pub src_fd: __s64,
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_offset: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fstrim_range {
-pub start: __u64,
-pub len: __u64,
-pub minlen: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_dedupe_range_info {
-pub dest_fd: __s64,
-pub dest_offset: __u64,
-pub bytes_deduped: __u64,
-pub status: __s32,
-pub reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct file_dedupe_range {
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_count: __u16,
-pub reserved1: __u16,
-pub reserved2: __u32,
-pub info: __IncompleteArrayField<file_dedupe_range_info>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct files_stat_struct {
-pub nr_files: crate::ctypes::c_ulong,
-pub nr_free_files: crate::ctypes::c_ulong,
-pub max_files: crate::ctypes::c_ulong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct inodes_stat_t {
-pub nr_inodes: crate::ctypes::c_long,
-pub nr_unused: crate::ctypes::c_long,
-pub dummy: [crate::ctypes::c_long; 5usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fsxattr {
-pub fsx_xflags: __u32,
-pub fsx_extsize: __u32,
-pub fsx_nextents: __u32,
-pub fsx_projid: __u32,
-pub fsx_cowextsize: __u32,
-pub fsx_pad: [crate::ctypes::c_uchar; 8usize],
-}
-pub type __kernel_rwf_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct futex_waitv {
-pub val: __u64,
-pub uaddr: __u64,
-pub flags: __u32,
-pub __reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list {
-pub next: *mut robust_list,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list_head {
-pub list: robust_list,
-pub futex_offset: crate::ctypes::c_long,
-pub list_op_pending: *mut robust_list,
-}
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP;
-pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP;
-pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP;
-pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP;
-pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP;
-pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP;
-pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP;
-pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP;
-pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP;
-pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP;
-pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP;
-pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6;
-pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP;
-pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE;
-pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP;
-pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH;
-pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP;
-pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH;
-pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP;
-pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM;
-pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP;
-pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP;
-pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP;
-pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE;
-pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS;
-pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET;
-pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW;
-pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP;
-pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-IPPROTO_IP = 0,
-IPPROTO_ICMP = 1,
-IPPROTO_IGMP = 2,
-IPPROTO_IPIP = 4,
-IPPROTO_TCP = 6,
-IPPROTO_EGP = 8,
-IPPROTO_PUP = 12,
-IPPROTO_UDP = 17,
-IPPROTO_IDP = 22,
-IPPROTO_TP = 29,
-IPPROTO_DCCP = 33,
-IPPROTO_IPV6 = 41,
-IPPROTO_RSVP = 46,
-IPPROTO_GRE = 47,
-IPPROTO_ESP = 50,
-IPPROTO_AH = 51,
-IPPROTO_MTP = 92,
-IPPROTO_BEETPH = 94,
-IPPROTO_ENCAP = 98,
-IPPROTO_PIM = 103,
-IPPROTO_COMP = 108,
-IPPROTO_L2TP = 115,
-IPPROTO_SCTP = 132,
-IPPROTO_UDPLITE = 136,
-IPPROTO_MPLS = 137,
-IPPROTO_ETHERNET = 143,
-IPPROTO_RAW = 255,
-IPPROTO_MPTCP = 262,
-IPPROTO_MAX = 263,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_addr {
-pub s_addr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq {
-pub imr_multiaddr: in_addr,
-pub imr_interface: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreqn {
-pub imr_multiaddr: in_addr,
-pub imr_address: in_addr,
-pub imr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq_source {
-pub imr_multiaddr: __be32,
-pub imr_interface: __be32,
-pub imr_sourceaddr: __be32,
-}
-#[repr(C)]
-pub struct ip_msfilter {
-pub imsf_multiaddr: __be32,
-pub imsf_interface: __be32,
-pub imsf_fmode: __u32,
-pub imsf_numsrc: __u32,
-pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct ip_msfilter__bindgen_ty_1 {
-pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>,
-pub __bindgen_anon_1: __BindgenUnionField<ip_msfilter__bindgen_ty_1__bindgen_ty_1>,
-pub bindgen_union_field: u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 {
-pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-pub imsf_slist_flex: __IncompleteArrayField<__be32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_req {
-pub gr_interface: __u32,
-pub gr_group: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_source_req {
-pub gsr_interface: __u32,
-pub gsr_group: __kernel_sockaddr_storage,
-pub gsr_source: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-pub struct group_filter {
-pub __bindgen_anon_1: group_filter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_1>,
-pub __bindgen_anon_2: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_2>,
-pub bindgen_union_field: [u64; 34usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_1 {
-pub gf_interface_aux: __u32,
-pub gf_group_aux: __kernel_sockaddr_storage,
-pub gf_fmode_aux: __u32,
-pub gf_numsrc_aux: __u32,
-pub gf_slist: [__kernel_sockaddr_storage; 1usize],
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_2 {
-pub gf_interface: __u32,
-pub gf_group: __kernel_sockaddr_storage,
-pub gf_fmode: __u32,
-pub gf_numsrc: __u32,
-pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_pktinfo {
-pub ipi_ifindex: crate::ctypes::c_int,
-pub ipi_spec_dst: in_addr,
-pub ipi_addr: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_in {
-pub sin_family: __kernel_sa_family_t,
-pub sin_port: __be16,
-pub sin_addr: in_addr,
-pub __pad: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct inotify_event {
-pub wd: __s32,
-pub mask: __u32,
-pub cookie: __u32,
-pub len: __u32,
-pub name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct iphdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub tos: __u8,
-pub tot_len: __be16,
-pub id: __be16,
-pub frag_off: __be16,
-pub ttl: __u8,
-pub protocol: __u8,
-pub check: __sum16,
-pub __bindgen_anon_1: iphdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union iphdr__bindgen_ty_1 {
-pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-impl iphdr {
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn ihl(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_ihl(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(version: __u8, ihl: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let ihl: u8 = unsafe { ::core::mem::transmute(ihl) };
-ihl as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_auth_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub reserved: __be16,
-pub spi: __be32,
-pub seq_no: __be32,
-pub auth_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_esp_hdr {
-pub spi: __be32,
-pub seq_no: __be32,
-pub enc_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_comp_hdr {
-pub nexthdr: __u8,
-pub flags: __u8,
-pub cpi: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_beet_phdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub padlen: __u8,
-pub reserved: __u8,
-}
-pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING;
-pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING;
-pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP;
-pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS;
-pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS;
-pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS;
-pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA;
-pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER;
-pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY;
-pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS;
-pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG;
-pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER;
-pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID;
-pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM;
-pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY;
-pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION;
-pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE;
-pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE;
-pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES;
-pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT;
-pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY;
-pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL;
-pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK;
-pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN;
-pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET;
-pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP;
-pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING;
-pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER;
-pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IPV4_DEVCONF_FORWARDING = 1,
-IPV4_DEVCONF_MC_FORWARDING = 2,
-IPV4_DEVCONF_PROXY_ARP = 3,
-IPV4_DEVCONF_ACCEPT_REDIRECTS = 4,
-IPV4_DEVCONF_SECURE_REDIRECTS = 5,
-IPV4_DEVCONF_SEND_REDIRECTS = 6,
-IPV4_DEVCONF_SHARED_MEDIA = 7,
-IPV4_DEVCONF_RP_FILTER = 8,
-IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9,
-IPV4_DEVCONF_BOOTP_RELAY = 10,
-IPV4_DEVCONF_LOG_MARTIANS = 11,
-IPV4_DEVCONF_TAG = 12,
-IPV4_DEVCONF_ARPFILTER = 13,
-IPV4_DEVCONF_MEDIUM_ID = 14,
-IPV4_DEVCONF_NOXFRM = 15,
-IPV4_DEVCONF_NOPOLICY = 16,
-IPV4_DEVCONF_FORCE_IGMP_VERSION = 17,
-IPV4_DEVCONF_ARP_ANNOUNCE = 18,
-IPV4_DEVCONF_ARP_IGNORE = 19,
-IPV4_DEVCONF_PROMOTE_SECONDARIES = 20,
-IPV4_DEVCONF_ARP_ACCEPT = 21,
-IPV4_DEVCONF_ARP_NOTIFY = 22,
-IPV4_DEVCONF_ACCEPT_LOCAL = 23,
-IPV4_DEVCONF_SRC_VMARK = 24,
-IPV4_DEVCONF_PROXY_ARP_PVLAN = 25,
-IPV4_DEVCONF_ROUTE_LOCALNET = 26,
-IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27,
-IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28,
-IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29,
-IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30,
-IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31,
-IPV4_DEVCONF_BC_FORWARDING = 32,
-IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33,
-__IPV4_DEVCONF_MAX = 34,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_addr {
-pub in6_u: in6_addr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union in6_addr__bindgen_ty_1 {
-pub u6_addr8: [__u8; 16usize],
-pub u6_addr16: [__be16; 8usize],
-pub u6_addr32: [__be32; 4usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr_in6 {
-pub sin6_family: crate::ctypes::c_ushort,
-pub sin6_port: __be16,
-pub sin6_flowinfo: __be32,
-pub sin6_addr: in6_addr,
-pub sin6_scope_id: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6_mreq {
-pub ipv6mr_multiaddr: in6_addr,
-pub ipv6mr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_flowlabel_req {
-pub flr_dst: in6_addr,
-pub flr_label: __be32,
-pub flr_action: __u8,
-pub flr_share: __u8,
-pub flr_flags: __u16,
-pub flr_expires: __u16,
-pub flr_linger: __u16,
-pub __flr_pad: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_pktinfo {
-pub ipi6_addr: in6_addr,
-pub ipi6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ip6_mtuinfo {
-pub ip6m_addr: sockaddr_in6,
-pub ip6m_mtu: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_ifreq {
-pub ifr6_addr: in6_addr,
-pub ifr6_prefixlen: __u32,
-pub ifr6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_rt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub type_: __u8,
-pub segments_left: __u8,
-}
-#[repr(C, packed)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_opt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-}
-#[repr(C)]
-pub struct rt0_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: __IncompleteArrayField<in6_addr>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rt2_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: in6_addr,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct ipv6_destopt_hao {
-pub type_: __u8,
-pub length: __u8,
-pub addr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub flow_lbl: [__u8; 3usize],
-pub payload_len: __be16,
-pub nexthdr: __u8,
-pub hop_limit: __u8,
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union ipv6hdr__bindgen_ty_1 {
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-impl ipv6hdr {
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn priority(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_priority(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(version: __u8, priority: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let priority: u8 = unsafe { ::core::mem::transmute(priority) };
-priority as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING;
-pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT;
-pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6;
-pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA;
-pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS;
-pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF;
-pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS;
-pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS;
-pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL;
-pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY;
-pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR;
-pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT;
-pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT;
-pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY;
-pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR;
-pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES;
-pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION;
-pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR;
-pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO;
-pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF;
-pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN;
-pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP;
-pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD;
-pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING;
-pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6;
-pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD;
-pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO;
-pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY;
-pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC;
-pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL;
-pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC;
-pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU;
-pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET;
-pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY;
-pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT;
-pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA;
-pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN;
-pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL;
-pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED;
-pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC;
-pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD;
-pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE;
-pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN;
-pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS;
-pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED;
-pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC;
-pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED;
-pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID;
-pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE;
-pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER;
-pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA;
-pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-DEVCONF_FORWARDING = 0,
-DEVCONF_HOPLIMIT = 1,
-DEVCONF_MTU6 = 2,
-DEVCONF_ACCEPT_RA = 3,
-DEVCONF_ACCEPT_REDIRECTS = 4,
-DEVCONF_AUTOCONF = 5,
-DEVCONF_DAD_TRANSMITS = 6,
-DEVCONF_RTR_SOLICITS = 7,
-DEVCONF_RTR_SOLICIT_INTERVAL = 8,
-DEVCONF_RTR_SOLICIT_DELAY = 9,
-DEVCONF_USE_TEMPADDR = 10,
-DEVCONF_TEMP_VALID_LFT = 11,
-DEVCONF_TEMP_PREFERED_LFT = 12,
-DEVCONF_REGEN_MAX_RETRY = 13,
-DEVCONF_MAX_DESYNC_FACTOR = 14,
-DEVCONF_MAX_ADDRESSES = 15,
-DEVCONF_FORCE_MLD_VERSION = 16,
-DEVCONF_ACCEPT_RA_DEFRTR = 17,
-DEVCONF_ACCEPT_RA_PINFO = 18,
-DEVCONF_ACCEPT_RA_RTR_PREF = 19,
-DEVCONF_RTR_PROBE_INTERVAL = 20,
-DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21,
-DEVCONF_PROXY_NDP = 22,
-DEVCONF_OPTIMISTIC_DAD = 23,
-DEVCONF_ACCEPT_SOURCE_ROUTE = 24,
-DEVCONF_MC_FORWARDING = 25,
-DEVCONF_DISABLE_IPV6 = 26,
-DEVCONF_ACCEPT_DAD = 27,
-DEVCONF_FORCE_TLLAO = 28,
-DEVCONF_NDISC_NOTIFY = 29,
-DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30,
-DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31,
-DEVCONF_SUPPRESS_FRAG_NDISC = 32,
-DEVCONF_ACCEPT_RA_FROM_LOCAL = 33,
-DEVCONF_USE_OPTIMISTIC = 34,
-DEVCONF_ACCEPT_RA_MTU = 35,
-DEVCONF_STABLE_SECRET = 36,
-DEVCONF_USE_OIF_ADDRS_ONLY = 37,
-DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38,
-DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39,
-DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40,
-DEVCONF_DROP_UNSOLICITED_NA = 41,
-DEVCONF_KEEP_ADDR_ON_DOWN = 42,
-DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43,
-DEVCONF_SEG6_ENABLED = 44,
-DEVCONF_SEG6_REQUIRE_HMAC = 45,
-DEVCONF_ENHANCED_DAD = 46,
-DEVCONF_ADDR_GEN_MODE = 47,
-DEVCONF_DISABLE_POLICY = 48,
-DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49,
-DEVCONF_NDISC_TCLASS = 50,
-DEVCONF_RPL_SEG_ENABLED = 51,
-DEVCONF_RA_DEFRTR_METRIC = 52,
-DEVCONF_IOAM6_ENABLED = 53,
-DEVCONF_IOAM6_ID = 54,
-DEVCONF_IOAM6_ID_WIDE = 55,
-DEVCONF_NDISC_EVICT_NOCARRIER = 56,
-DEVCONF_ACCEPT_UNTRACKED_NA = 57,
-DEVCONF_MAX = 58,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum socket_state {
-SS_FREE = 0,
-SS_UNCONNECTED = 1,
-SS_CONNECTING = 2,
-SS_CONNECTED = 3,
-SS_DISCONNECTING = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct pollfd {
-pub fd: crate::ctypes::c_int,
-pub events: crate::ctypes::c_short,
-pub revents: crate::ctypes::c_short,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prctl_mm_map {
-pub start_code: __u64,
-pub end_code: __u64,
-pub start_data: __u64,
-pub end_data: __u64,
-pub start_brk: __u64,
-pub brk: __u64,
-pub start_stack: __u64,
-pub arg_start: __u64,
-pub arg_end: __u64,
-pub env_start: __u64,
-pub env_end: __u64,
-pub auxv: *mut __u64,
-pub auxv_size: __u32,
-pub exe_fd: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rand_pool_info {
-pub entropy_count: crate::ctypes::c_int,
-pub buf_size: crate::ctypes::c_int,
-pub buf: __IncompleteArrayField<__u32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_timespec {
-pub tv_sec: __kernel_time64_t,
-pub tv_nsec: crate::ctypes::c_longlong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_itimerspec {
-pub it_interval: __kernel_timespec,
-pub it_value: __kernel_timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timeval {
-pub tv_sec: __kernel_long_t,
-pub tv_usec: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_itimerval {
-pub it_interval: __kernel_old_timeval,
-pub it_value: __kernel_old_timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sock_timeval {
-pub tv_sec: __s64,
-pub tv_usec: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timeval {
-pub tv_sec: __kernel_old_time_t,
-pub tv_usec: __kernel_suseconds_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerspec {
-pub it_interval: timespec,
-pub it_value: timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerval {
-pub it_interval: timeval,
-pub it_value: timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timezone {
-pub tz_minuteswest: crate::ctypes::c_int,
-pub tz_dsttime: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rusage {
-pub ru_utime: __kernel_old_timeval,
-pub ru_stime: __kernel_old_timeval,
-pub ru_maxrss: __kernel_long_t,
-pub ru_ixrss: __kernel_long_t,
-pub ru_idrss: __kernel_long_t,
-pub ru_isrss: __kernel_long_t,
-pub ru_minflt: __kernel_long_t,
-pub ru_majflt: __kernel_long_t,
-pub ru_nswap: __kernel_long_t,
-pub ru_inblock: __kernel_long_t,
-pub ru_oublock: __kernel_long_t,
-pub ru_msgsnd: __kernel_long_t,
-pub ru_msgrcv: __kernel_long_t,
-pub ru_nsignals: __kernel_long_t,
-pub ru_nvcsw: __kernel_long_t,
-pub ru_nivcsw: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit {
-pub rlim_cur: __kernel_ulong_t,
-pub rlim_max: __kernel_ulong_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit64 {
-pub rlim_cur: __u64,
-pub rlim_max: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct clone_args {
-pub flags: __u64,
-pub pidfd: __u64,
-pub child_tid: __u64,
-pub parent_tid: __u64,
-pub exit_signal: __u64,
-pub stack: __u64,
-pub stack_size: __u64,
-pub tls: __u64,
-pub set_tid: __u64,
-pub set_tid_size: __u64,
-pub cgroup: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigset_t {
-pub sig: [crate::ctypes::c_ulong; 2usize],
-}
-pub type old_sigset_t = crate::ctypes::c_ulong;
-pub type __signalfn_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __sighandler_t = __signalfn_t;
-pub type __restorefn_t = ::core::option::Option<unsafe extern "C" fn()>;
-pub type __sigrestore_t = __restorefn_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaction {
-pub sa_flags: crate::ctypes::c_uint,
-pub sa_handler: __sighandler_t,
-pub sa_mask: sigset_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaltstack {
-pub ss_sp: *mut crate::ctypes::c_void,
-pub ss_size: __kernel_size_t,
-pub ss_flags: crate::ctypes::c_int,
-}
-pub type stack_t = sigaltstack;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigval {
-pub sival_int: crate::ctypes::c_int,
-pub sival_ptr: *mut crate::ctypes::c_void,
-}
-pub type sigval_t = sigval;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields {
-pub _kill: __sifields__bindgen_ty_1,
-pub _timer: __sifields__bindgen_ty_2,
-pub _rt: __sifields__bindgen_ty_3,
-pub _sigchld: __sifields__bindgen_ty_4,
-pub _sigfault: __sifields__bindgen_ty_5,
-pub _sigpoll: __sifields__bindgen_ty_6,
-pub _sigsys: __sifields__bindgen_ty_7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_1 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_2 {
-pub _tid: __kernel_timer_t,
-pub _overrun: crate::ctypes::c_int,
-pub _sigval: sigval_t,
-pub _sys_private: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_3 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _sigval: sigval_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_4 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _status: crate::ctypes::c_int,
-pub _utime: __kernel_clock_t,
-pub _stime: __kernel_clock_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_5 {
-pub _addr: *mut crate::ctypes::c_void,
-pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields__bindgen_ty_5__bindgen_ty_1 {
-pub _trapno: crate::ctypes::c_int,
-pub _addr_lsb: crate::ctypes::c_short,
-pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1,
-pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2,
-pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {
-pub _dummy_bnd: [crate::ctypes::c_char; 8usize],
-pub _lower: *mut crate::ctypes::c_void,
-pub _upper: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 {
-pub _dummy_pkey: [crate::ctypes::c_char; 8usize],
-pub _pkey: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 {
-pub _data: crate::ctypes::c_ulong,
-pub _type: __u32,
-pub _flags: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_6 {
-pub _band: crate::ctypes::c_long,
-pub _fd: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_7 {
-pub _call_addr: *mut crate::ctypes::c_void,
-pub _syscall: crate::ctypes::c_int,
-pub _arch: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union siginfo__bindgen_ty_1 {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1,
-pub _si_pad: [crate::ctypes::c_int; 32usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo__bindgen_ty_1__bindgen_ty_1 {
-pub si_signo: crate::ctypes::c_int,
-pub si_code: crate::ctypes::c_int,
-pub si_errno: crate::ctypes::c_int,
-pub _sifields: __sifields,
-}
-pub type siginfo_t = siginfo;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sigevent {
-pub sigev_value: sigval_t,
-pub sigev_signo: crate::ctypes::c_int,
-pub sigev_notify: crate::ctypes::c_int,
-pub _sigev_un: sigevent__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigevent__bindgen_ty_1 {
-pub _pad: [crate::ctypes::c_int; 12usize],
-pub _tid: crate::ctypes::c_int,
-pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigevent__bindgen_ty_1__bindgen_ty_1 {
-pub _function: ::core::option::Option<unsafe extern "C" fn(arg1: sigval_t)>,
-pub _attribute: *mut crate::ctypes::c_void,
-}
-pub type sigevent_t = sigevent;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx_timestamp {
-pub tv_sec: __s64,
-pub tv_nsec: __u32,
-pub __reserved: __s32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx {
-pub stx_mask: __u32,
-pub stx_blksize: __u32,
-pub stx_attributes: __u64,
-pub stx_nlink: __u32,
-pub stx_uid: __u32,
-pub stx_gid: __u32,
-pub stx_mode: __u16,
-pub __spare0: [__u16; 1usize],
-pub stx_ino: __u64,
-pub stx_size: __u64,
-pub stx_blocks: __u64,
-pub stx_attributes_mask: __u64,
-pub stx_atime: statx_timestamp,
-pub stx_btime: statx_timestamp,
-pub stx_ctime: statx_timestamp,
-pub stx_mtime: statx_timestamp,
-pub stx_rdev_major: __u32,
-pub stx_rdev_minor: __u32,
-pub stx_dev_major: __u32,
-pub stx_dev_minor: __u32,
-pub stx_mnt_id: __u64,
-pub stx_dio_mem_align: __u32,
-pub stx_dio_offset_align: __u32,
-pub __spare3: [__u64; 12usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct sysinfo {
-pub uptime: __kernel_long_t,
-pub loads: [__kernel_ulong_t; 3usize],
-pub totalram: __kernel_ulong_t,
-pub freeram: __kernel_ulong_t,
-pub sharedram: __kernel_ulong_t,
-pub bufferram: __kernel_ulong_t,
-pub totalswap: __kernel_ulong_t,
-pub freeswap: __kernel_ulong_t,
-pub procs: __u16,
-pub pad: __u16,
-pub totalhigh: __kernel_ulong_t,
-pub freehigh: __kernel_ulong_t,
-pub mem_unit: __u32,
-pub _f: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcphdr {
-pub source: __be16,
-pub dest: __be16,
-pub seq: __be32,
-pub ack_seq: __be32,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub window: __be16,
-pub check: __sum16,
-pub urg_ptr: __be16,
-}
-impl tcphdr {
-#[inline]
-pub fn doff(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_doff(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn res1(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_res1(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn cwr(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_cwr(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ece(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ece(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn urg(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_urg(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(10usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ack(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ack(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(11usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn psh(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_psh(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(12usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn rst(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_rst(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(13usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn syn(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_syn(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(14usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn fin(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_fin(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(15usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(doff: __u16, res1: __u16, cwr: __u16, ece: __u16, urg: __u16, ack: __u16, psh: __u16, rst: __u16, syn: __u16, fin: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let doff: u16 = unsafe { ::core::mem::transmute(doff) };
-doff as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let res1: u16 = unsafe { ::core::mem::transmute(res1) };
-res1 as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let cwr: u16 = unsafe { ::core::mem::transmute(cwr) };
-cwr as u64
-});
-__bindgen_bitfield_unit.set(9usize, 1u8, {
-let ece: u16 = unsafe { ::core::mem::transmute(ece) };
-ece as u64
-});
-__bindgen_bitfield_unit.set(10usize, 1u8, {
-let urg: u16 = unsafe { ::core::mem::transmute(urg) };
-urg as u64
-});
-__bindgen_bitfield_unit.set(11usize, 1u8, {
-let ack: u16 = unsafe { ::core::mem::transmute(ack) };
-ack as u64
-});
-__bindgen_bitfield_unit.set(12usize, 1u8, {
-let psh: u16 = unsafe { ::core::mem::transmute(psh) };
-psh as u64
-});
-__bindgen_bitfield_unit.set(13usize, 1u8, {
-let rst: u16 = unsafe { ::core::mem::transmute(rst) };
-rst as u64
-});
-__bindgen_bitfield_unit.set(14usize, 1u8, {
-let syn: u16 = unsafe { ::core::mem::transmute(syn) };
-syn as u64
-});
-__bindgen_bitfield_unit.set(15usize, 1u8, {
-let fin: u16 = unsafe { ::core::mem::transmute(fin) };
-fin as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union tcp_word_hdr {
-pub hdr: tcphdr,
-pub words: [__be32; 5usize],
-}
-pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR;
-pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE;
-pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG;
-pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK;
-pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH;
-pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST;
-pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN;
-pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN;
-pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS;
-pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-TCP_FLAG_CWR = 8388608,
-TCP_FLAG_ECE = 4194304,
-TCP_FLAG_URG = 2097152,
-TCP_FLAG_ACK = 1048576,
-TCP_FLAG_PSH = 524288,
-TCP_FLAG_RST = 262144,
-TCP_FLAG_SYN = 131072,
-TCP_FLAG_FIN = 65536,
-TCP_RESERVED_BITS = 251658240,
-TCP_DATA_OFFSET = 4026531840,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_opt {
-pub opt_code: __u32,
-pub opt_val: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_window {
-pub snd_wl1: __u32,
-pub snd_wnd: __u32,
-pub max_window: __u32,
-pub rcv_wnd: __u32,
-pub rcv_wup: __u32,
-}
-pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE;
-pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE;
-pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE;
-pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-TCP_NO_QUEUE = 0,
-TCP_RECV_QUEUE = 1,
-TCP_SEND_QUEUE = 2,
-TCP_QUEUES_NR = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_fastopen_client_fail {
-TFO_STATUS_UNSPEC = 0,
-TFO_COOKIE_UNAVAILABLE = 1,
-TFO_DATA_NOT_ACKED = 2,
-TFO_SYN_RETRANSMITTED = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_ca_state {
-TCP_CA_Open = 0,
-TCP_CA_Disorder = 1,
-TCP_CA_CWR = 2,
-TCP_CA_Recovery = 3,
-TCP_CA_Loss = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_info {
-pub tcpi_state: __u8,
-pub tcpi_ca_state: __u8,
-pub tcpi_retransmits: __u8,
-pub tcpi_probes: __u8,
-pub tcpi_backoff: __u8,
-pub tcpi_options: __u8,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub tcpi_rto: __u32,
-pub tcpi_ato: __u32,
-pub tcpi_snd_mss: __u32,
-pub tcpi_rcv_mss: __u32,
-pub tcpi_unacked: __u32,
-pub tcpi_sacked: __u32,
-pub tcpi_lost: __u32,
-pub tcpi_retrans: __u32,
-pub tcpi_fackets: __u32,
-pub tcpi_last_data_sent: __u32,
-pub tcpi_last_ack_sent: __u32,
-pub tcpi_last_data_recv: __u32,
-pub tcpi_last_ack_recv: __u32,
-pub tcpi_pmtu: __u32,
-pub tcpi_rcv_ssthresh: __u32,
-pub tcpi_rtt: __u32,
-pub tcpi_rttvar: __u32,
-pub tcpi_snd_ssthresh: __u32,
-pub tcpi_snd_cwnd: __u32,
-pub tcpi_advmss: __u32,
-pub tcpi_reordering: __u32,
-pub tcpi_rcv_rtt: __u32,
-pub tcpi_rcv_space: __u32,
-pub tcpi_total_retrans: __u32,
-pub tcpi_pacing_rate: __u64,
-pub tcpi_max_pacing_rate: __u64,
-pub tcpi_bytes_acked: __u64,
-pub tcpi_bytes_received: __u64,
-pub tcpi_segs_out: __u32,
-pub tcpi_segs_in: __u32,
-pub tcpi_notsent_bytes: __u32,
-pub tcpi_min_rtt: __u32,
-pub tcpi_data_segs_in: __u32,
-pub tcpi_data_segs_out: __u32,
-pub tcpi_delivery_rate: __u64,
-pub tcpi_busy_time: __u64,
-pub tcpi_rwnd_limited: __u64,
-pub tcpi_sndbuf_limited: __u64,
-pub tcpi_delivered: __u32,
-pub tcpi_delivered_ce: __u32,
-pub tcpi_bytes_sent: __u64,
-pub tcpi_bytes_retrans: __u64,
-pub tcpi_dsack_dups: __u32,
-pub tcpi_reord_seen: __u32,
-pub tcpi_rcv_ooopack: __u32,
-pub tcpi_snd_wnd: __u32,
-pub tcpi_rcv_wnd: __u32,
-pub tcpi_rehash: __u32,
-}
-impl tcp_info {
-#[inline]
-pub fn tcpi_snd_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_snd_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_rcv_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_fastopen_client_fail(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) };
-tcpi_snd_wscale as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) };
-tcpi_rcv_wscale as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) };
-tcpi_delivery_rate_app_limited as u64
-});
-__bindgen_bitfield_unit.set(9usize, 2u8, {
-let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) };
-tcpi_fastopen_client_fail as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD;
-pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY;
-pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED;
-pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED;
-pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT;
-pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS;
-pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE;
-pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE;
-pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND;
-pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING;
-pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT;
-pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS;
-pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT;
-pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE;
-pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE;
-pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH;
-pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED;
-pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE;
-pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT;
-pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS;
-pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS;
-pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN;
-pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT;
-pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH;
-pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT;
-pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
-pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
-pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-TCP_NLA_PAD = 0,
-TCP_NLA_BUSY = 1,
-TCP_NLA_RWND_LIMITED = 2,
-TCP_NLA_SNDBUF_LIMITED = 3,
-TCP_NLA_DATA_SEGS_OUT = 4,
-TCP_NLA_TOTAL_RETRANS = 5,
-TCP_NLA_PACING_RATE = 6,
-TCP_NLA_DELIVERY_RATE = 7,
-TCP_NLA_SND_CWND = 8,
-TCP_NLA_REORDERING = 9,
-TCP_NLA_MIN_RTT = 10,
-TCP_NLA_RECUR_RETRANS = 11,
-TCP_NLA_DELIVERY_RATE_APP_LMT = 12,
-TCP_NLA_SNDQ_SIZE = 13,
-TCP_NLA_CA_STATE = 14,
-TCP_NLA_SND_SSTHRESH = 15,
-TCP_NLA_DELIVERED = 16,
-TCP_NLA_DELIVERED_CE = 17,
-TCP_NLA_BYTES_SENT = 18,
-TCP_NLA_BYTES_RETRANS = 19,
-TCP_NLA_DSACK_DUPS = 20,
-TCP_NLA_REORD_SEEN = 21,
-TCP_NLA_SRTT = 22,
-TCP_NLA_TIMEOUT_REHASH = 23,
-TCP_NLA_BYTES_NOTSENT = 24,
-TCP_NLA_EDT = 25,
-TCP_NLA_TTL = 26,
-TCP_NLA_REHASH = 27,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct tcp_md5sig {
-pub tcpm_addr: __kernel_sockaddr_storage,
-pub tcpm_flags: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_ifindex: crate::ctypes::c_int,
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_diag_md5sig {
-pub tcpm_family: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_addr: [__be32; 4usize],
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_zerocopy_receive {
-pub address: __u64,
-pub length: __u32,
-pub recv_skip_hint: __u32,
-pub inq: __u32,
-pub err: __s32,
-pub copybuf_address: __u64,
-pub copybuf_len: __s32,
-pub flags: __u32,
-pub msg_control: __u64,
-pub msg_controllen: __u64,
-pub msg_flags: __u32,
-pub reserved: __u32,
-}
-pub type cc_t = crate::ctypes::c_uchar;
-pub type speed_t = crate::ctypes::c_uint;
-pub type tcflag_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 23usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios2 {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 23usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ktermios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 23usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sgttyb {
-pub sg_ispeed: crate::ctypes::c_char,
-pub sg_ospeed: crate::ctypes::c_char,
-pub sg_erase: crate::ctypes::c_char,
-pub sg_kill: crate::ctypes::c_char,
-pub sg_flags: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tchars {
-pub t_intrc: crate::ctypes::c_char,
-pub t_quitc: crate::ctypes::c_char,
-pub t_startc: crate::ctypes::c_char,
-pub t_stopc: crate::ctypes::c_char,
-pub t_eofc: crate::ctypes::c_char,
-pub t_brkc: crate::ctypes::c_char,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ltchars {
-pub t_suspc: crate::ctypes::c_char,
-pub t_dsuspc: crate::ctypes::c_char,
-pub t_rprntc: crate::ctypes::c_char,
-pub t_flushc: crate::ctypes::c_char,
-pub t_werasc: crate::ctypes::c_char,
-pub t_lnextc: crate::ctypes::c_char,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct winsize {
-pub ws_row: crate::ctypes::c_ushort,
-pub ws_col: crate::ctypes::c_ushort,
-pub ws_xpixel: crate::ctypes::c_ushort,
-pub ws_ypixel: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termio {
-pub c_iflag: crate::ctypes::c_ushort,
-pub c_oflag: crate::ctypes::c_ushort,
-pub c_cflag: crate::ctypes::c_ushort,
-pub c_lflag: crate::ctypes::c_ushort,
-pub c_line: crate::ctypes::c_char,
-pub c_cc: [crate::ctypes::c_uchar; 23usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iovec {
-pub iov_base: *mut crate::ctypes::c_void,
-pub iov_len: __kernel_size_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_un {
-pub sun_family: __kernel_sa_family_t,
-pub sun_path: [crate::ctypes::c_char; 108usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct oldold_utsname {
-pub sysname: [crate::ctypes::c_char; 9usize],
-pub nodename: [crate::ctypes::c_char; 9usize],
-pub release: [crate::ctypes::c_char; 9usize],
-pub version: [crate::ctypes::c_char; 9usize],
-pub machine: [crate::ctypes::c_char; 9usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct old_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct new_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-pub domainname: [crate::ctypes::c_char; 65usize],
-}
-impl membarrier_cmd {
-pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd {
-MEMBARRIER_CMD_QUERY = 0,
-MEMBARRIER_CMD_GLOBAL = 1,
-MEMBARRIER_CMD_GLOBAL_EXPEDITED = 2,
-MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = 4,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED = 8,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = 16,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = 32,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = 64,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = 128,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = 256,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd_flag {
-MEMBARRIER_CMD_FLAG_CPU = 1,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg {
-pub event: __u8,
-pub reserved1: __u8,
-pub reserved2: __u16,
-pub reserved3: __u32,
-pub arg: uffd_msg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1 {
-pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1,
-pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2,
-pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3,
-pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4,
-pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 {
-pub flags: __u64,
-pub address: __u64,
-pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {
-pub ptid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 {
-pub ufd: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 {
-pub from: __u64,
-pub to: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 {
-pub start: __u64,
-pub end: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 {
-pub reserved1: __u64,
-pub reserved2: __u64,
-pub reserved3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_api {
-pub api: __u64,
-pub features: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_range {
-pub start: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_register {
-pub range: uffdio_range,
-pub mode: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_copy {
-pub dst: __u64,
-pub src: __u64,
-pub len: __u64,
-pub mode: __u64,
-pub copy: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_zeropage {
-pub range: uffdio_range,
-pub mode: __u64,
-pub zeropage: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_writeprotect {
-pub range: uffdio_range,
-pub mode: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_continue {
-pub range: uffdio_range,
-pub mode: __u64,
-pub mapped: __s64,
-}
-#[repr(C)]
-pub struct io_uring_sqe {
-pub opcode: __u8,
-pub flags: __u8,
-pub ioprio: __u16,
-pub fd: __s32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1,
-pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2,
-pub len: __u32,
-pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3,
-pub user_data: __u64,
-pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4,
-pub personality: __u16,
-pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5,
-pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_1 {
-pub off: __u64,
-pub addr2: __u64,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 {
-pub cmd_op: __u32,
-pub __pad1: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_2 {
-pub addr: __u64,
-pub splice_off_in: __u64,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_3 {
-pub rw_flags: __kernel_rwf_t,
-pub fsync_flags: __u32,
-pub poll_events: __u16,
-pub poll32_events: __u32,
-pub sync_range_flags: __u32,
-pub msg_flags: __u32,
-pub timeout_flags: __u32,
-pub accept_flags: __u32,
-pub cancel_flags: __u32,
-pub open_flags: __u32,
-pub statx_flags: __u32,
-pub fadvise_advice: __u32,
-pub splice_flags: __u32,
-pub rename_flags: __u32,
-pub unlink_flags: __u32,
-pub hardlink_flags: __u32,
-pub xattr_flags: __u32,
-pub msg_ring_flags: __u32,
-pub uring_cmd_flags: __u32,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_4 {
-pub buf_index: __u16,
-pub buf_group: __u16,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_5 {
-pub splice_fd_in: __s32,
-pub file_index: __u32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 {
-pub addr_len: __u16,
-pub __pad3: [__u16; 1usize],
-}
-#[repr(C)]
-pub struct io_uring_sqe__bindgen_ty_6 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_sqe__bindgen_ty_6__bindgen_ty_1>,
-pub cmd: __BindgenUnionField<[__u8; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 {
-pub addr3: __u64,
-pub __pad2: [__u64; 1usize],
-}
-pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT;
-pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT;
-pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT;
-pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT;
-pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT;
-pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT;
-pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-IOSQE_FIXED_FILE_BIT = 0,
-IOSQE_IO_DRAIN_BIT = 1,
-IOSQE_IO_LINK_BIT = 2,
-IOSQE_IO_HARDLINK_BIT = 3,
-IOSQE_ASYNC_BIT = 4,
-IOSQE_BUFFER_SELECT_BIT = 5,
-IOSQE_CQE_SKIP_SUCCESS_BIT = 6,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum io_uring_op {
-IORING_OP_NOP = 0,
-IORING_OP_READV = 1,
-IORING_OP_WRITEV = 2,
-IORING_OP_FSYNC = 3,
-IORING_OP_READ_FIXED = 4,
-IORING_OP_WRITE_FIXED = 5,
-IORING_OP_POLL_ADD = 6,
-IORING_OP_POLL_REMOVE = 7,
-IORING_OP_SYNC_FILE_RANGE = 8,
-IORING_OP_SENDMSG = 9,
-IORING_OP_RECVMSG = 10,
-IORING_OP_TIMEOUT = 11,
-IORING_OP_TIMEOUT_REMOVE = 12,
-IORING_OP_ACCEPT = 13,
-IORING_OP_ASYNC_CANCEL = 14,
-IORING_OP_LINK_TIMEOUT = 15,
-IORING_OP_CONNECT = 16,
-IORING_OP_FALLOCATE = 17,
-IORING_OP_OPENAT = 18,
-IORING_OP_CLOSE = 19,
-IORING_OP_FILES_UPDATE = 20,
-IORING_OP_STATX = 21,
-IORING_OP_READ = 22,
-IORING_OP_WRITE = 23,
-IORING_OP_FADVISE = 24,
-IORING_OP_MADVISE = 25,
-IORING_OP_SEND = 26,
-IORING_OP_RECV = 27,
-IORING_OP_OPENAT2 = 28,
-IORING_OP_EPOLL_CTL = 29,
-IORING_OP_SPLICE = 30,
-IORING_OP_PROVIDE_BUFFERS = 31,
-IORING_OP_REMOVE_BUFFERS = 32,
-IORING_OP_TEE = 33,
-IORING_OP_SHUTDOWN = 34,
-IORING_OP_RENAMEAT = 35,
-IORING_OP_UNLINKAT = 36,
-IORING_OP_MKDIRAT = 37,
-IORING_OP_SYMLINKAT = 38,
-IORING_OP_LINKAT = 39,
-IORING_OP_MSG_RING = 40,
-IORING_OP_FSETXATTR = 41,
-IORING_OP_SETXATTR = 42,
-IORING_OP_FGETXATTR = 43,
-IORING_OP_GETXATTR = 44,
-IORING_OP_SOCKET = 45,
-IORING_OP_URING_CMD = 46,
-IORING_OP_SEND_ZC = 47,
-IORING_OP_SENDMSG_ZC = 48,
-IORING_OP_LAST = 49,
-}
-pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA;
-pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IORING_MSG_DATA = 0,
-IORING_MSG_SEND_FD = 1,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_cqe {
-pub user_data: __u64,
-pub res: __s32,
-pub flags: __u32,
-pub big_cqe: __IncompleteArrayField<__u64>,
-}
-pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IORING_CQE_BUFFER_SHIFT = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_sqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub flags: __u32,
-pub dropped: __u32,
-pub array: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_cqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub overflow: __u32,
-pub cqes: __u32,
-pub flags: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_params {
-pub sq_entries: __u32,
-pub cq_entries: __u32,
-pub flags: __u32,
-pub sq_thread_cpu: __u32,
-pub sq_thread_idle: __u32,
-pub features: __u32,
-pub wq_fd: __u32,
-pub resv: [__u32; 3usize],
-pub sq_off: io_sqring_offsets,
-pub cq_off: io_cqring_offsets,
-}
-pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS;
-pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS;
-pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES;
-pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES;
-pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD;
-pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD;
-pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE;
-pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC;
-pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE;
-pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY;
-pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY;
-pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS;
-pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS;
-pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2;
-pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2;
-pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2;
-pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE;
-pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF;
-pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF;
-pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS;
-pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS;
-pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS;
-pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING;
-pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING;
-pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL;
-pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE;
-pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IORING_REGISTER_BUFFERS = 0,
-IORING_UNREGISTER_BUFFERS = 1,
-IORING_REGISTER_FILES = 2,
-IORING_UNREGISTER_FILES = 3,
-IORING_REGISTER_EVENTFD = 4,
-IORING_UNREGISTER_EVENTFD = 5,
-IORING_REGISTER_FILES_UPDATE = 6,
-IORING_REGISTER_EVENTFD_ASYNC = 7,
-IORING_REGISTER_PROBE = 8,
-IORING_REGISTER_PERSONALITY = 9,
-IORING_UNREGISTER_PERSONALITY = 10,
-IORING_REGISTER_RESTRICTIONS = 11,
-IORING_REGISTER_ENABLE_RINGS = 12,
-IORING_REGISTER_FILES2 = 13,
-IORING_REGISTER_FILES_UPDATE2 = 14,
-IORING_REGISTER_BUFFERS2 = 15,
-IORING_REGISTER_BUFFERS_UPDATE = 16,
-IORING_REGISTER_IOWQ_AFF = 17,
-IORING_UNREGISTER_IOWQ_AFF = 18,
-IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
-IORING_REGISTER_RING_FDS = 20,
-IORING_UNREGISTER_RING_FDS = 21,
-IORING_REGISTER_PBUF_RING = 22,
-IORING_UNREGISTER_PBUF_RING = 23,
-IORING_REGISTER_SYNC_CANCEL = 24,
-IORING_REGISTER_FILE_ALLOC_RANGE = 25,
-IORING_REGISTER_LAST = 26,
-}
-pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND;
-pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IO_WQ_BOUND = 0,
-IO_WQ_UNBOUND = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_files_update {
-pub offset: __u32,
-pub resv: __u32,
-pub fds: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_register {
-pub nr: __u32,
-pub flags: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub tags: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update2 {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-pub tags: __u64,
-pub nr: __u32,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_slot {
-pub tag: __u64,
-pub resv: [__u64; 3usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_register {
-pub nr_slots: __u32,
-pub resv: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub resv3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_probe_op {
-pub op: __u8,
-pub resv: __u8,
-pub flags: __u16,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_probe {
-pub last_op: __u8,
-pub ops_len: __u8,
-pub resv: __u16,
-pub resv2: [__u32; 3usize],
-pub ops: __IncompleteArrayField<io_uring_probe_op>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct io_uring_restriction {
-pub opcode: __u16,
-pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1,
-pub resv: __u8,
-pub resv2: [__u32; 3usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_restriction__bindgen_ty_1 {
-pub register_op: __u8,
-pub sqe_op: __u8,
-pub sqe_flags: __u8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf {
-pub addr: __u64,
-pub len: __u32,
-pub bid: __u16,
-pub resv: __u16,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring {
-pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1>,
-pub bufs: __BindgenUnionField<[io_uring_buf; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 {
-pub resv1: __u64,
-pub resv2: __u32,
-pub resv3: __u16,
-pub tail: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_reg {
-pub ring_addr: __u64,
-pub ring_entries: __u32,
-pub bgid: __u16,
-pub pad: __u16,
-pub resv: [__u64; 3usize],
-}
-pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP;
-pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP;
-pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED;
-pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED;
-pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IORING_RESTRICTION_REGISTER_OP = 0,
-IORING_RESTRICTION_SQE_OP = 1,
-IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2,
-IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3,
-IORING_RESTRICTION_LAST = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_getevents_arg {
-pub sigmask: __u64,
-pub sigmask_sz: __u32,
-pub pad: __u32,
-pub ts: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sync_cancel_reg {
-pub addr: __u64,
-pub fd: __s32,
-pub flags: __u32,
-pub timeout: __kernel_timespec,
-pub pad: [__u64; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_file_index_range {
-pub off: __u32,
-pub len: __u32,
-pub resv: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_recvmsg_out {
-pub namelen: __u32,
-pub controllen: __u32,
-pub payloadlen: __u32,
-pub flags: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr {
-pub __storage: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct linger {
-pub l_onoff: crate::ctypes::c_int,
-pub l_linger: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct linux_dirent64 {
-pub d_ino: crate::ctypes::c_ulong,
-pub d_off: crate::ctypes::c_long,
-pub d_reclen: __u16,
-pub d_type: __u8,
-pub d_name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-pub type socklen_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct stat {
-pub st_dev: crate::ctypes::c_uint,
-pub st_pad0: [crate::ctypes::c_uint; 3usize],
-pub st_ino: crate::ctypes::c_ulong,
-pub st_mode: __kernel_mode_t,
-pub st_nlink: __u32,
-pub st_uid: __kernel_uid32_t,
-pub st_gid: __kernel_gid32_t,
-pub st_rdev: crate::ctypes::c_uint,
-pub st_pad1: [crate::ctypes::c_uint; 3usize],
-pub st_size: crate::ctypes::c_long,
-pub st_atime: crate::ctypes::c_uint,
-pub st_atime_nsec: crate::ctypes::c_uint,
-pub st_mtime: crate::ctypes::c_uint,
-pub st_mtime_nsec: crate::ctypes::c_uint,
-pub st_ctime: crate::ctypes::c_uint,
-pub st_ctime_nsec: crate::ctypes::c_uint,
-pub st_blksize: crate::ctypes::c_uint,
-pub st_pad2: crate::ctypes::c_uint,
-pub st_blocks: crate::ctypes::c_ulong,
-}
-pub type fsid_t = __kernel_fsid_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs {
-pub f_type: crate::ctypes::c_long,
-pub f_bsize: crate::ctypes::c_long,
-pub f_frsize: crate::ctypes::c_long,
-pub f_blocks: crate::ctypes::c_long,
-pub f_bfree: crate::ctypes::c_long,
-pub f_files: crate::ctypes::c_long,
-pub f_ffree: crate::ctypes::c_long,
-pub f_bavail: crate::ctypes::c_long,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: crate::ctypes::c_long,
-pub f_flags: crate::ctypes::c_long,
-pub f_spare: [crate::ctypes::c_long; 5usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs64 {
-pub f_type: crate::ctypes::c_long,
-pub f_bsize: crate::ctypes::c_long,
-pub f_frsize: crate::ctypes::c_long,
-pub f_blocks: crate::ctypes::c_long,
-pub f_bfree: crate::ctypes::c_long,
-pub f_files: crate::ctypes::c_long,
-pub f_ffree: crate::ctypes::c_long,
-pub f_bavail: crate::ctypes::c_long,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: crate::ctypes::c_long,
-pub f_flags: crate::ctypes::c_long,
-pub f_spare: [crate::ctypes::c_long; 5usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct compat_statfs64 {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_frsize: __u32,
-pub __pad: __u32,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_bavail: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 5usize],
-}
-pub type __fsword_t = __u32;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct user_desc {
-pub entry_number: crate::ctypes::c_uint,
-pub base_addr: crate::ctypes::c_uint,
-pub limit: crate::ctypes::c_uint,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub __bindgen_padding_0: [u8; 3usize],
-}
-impl user_desc {
-#[inline]
-pub fn seg_32bit(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_32bit(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn contents(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 2u8) as u32) }
-}
-#[inline]
-pub fn set_contents(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(1usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn read_exec_only(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_read_exec_only(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(3usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn limit_in_pages(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_limit_in_pages(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn seg_not_present(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_not_present(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(5usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn useable(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_useable(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(6usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(seg_32bit: crate::ctypes::c_uint, contents: crate::ctypes::c_uint, read_exec_only: crate::ctypes::c_uint, limit_in_pages: crate::ctypes::c_uint, seg_not_present: crate::ctypes::c_uint, useable: crate::ctypes::c_uint) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 1u8, {
-let seg_32bit: u32 = unsafe { ::core::mem::transmute(seg_32bit) };
-seg_32bit as u64
-});
-__bindgen_bitfield_unit.set(1usize, 2u8, {
-let contents: u32 = unsafe { ::core::mem::transmute(contents) };
-contents as u64
-});
-__bindgen_bitfield_unit.set(3usize, 1u8, {
-let read_exec_only: u32 = unsafe { ::core::mem::transmute(read_exec_only) };
-read_exec_only as u64
-});
-__bindgen_bitfield_unit.set(4usize, 1u8, {
-let limit_in_pages: u32 = unsafe { ::core::mem::transmute(limit_in_pages) };
-limit_in_pages as u64
-});
-__bindgen_bitfield_unit.set(5usize, 1u8, {
-let seg_not_present: u32 = unsafe { ::core::mem::transmute(seg_not_present) };
-seg_not_present as u64
-});
-__bindgen_bitfield_unit.set(6usize, 1u8, {
-let useable: u32 = unsafe { ::core::mem::transmute(useable) };
-useable as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct msghdr {
-pub msg_name: *mut crate::ctypes::c_void,
-pub msg_namelen: crate::ctypes::c_int,
-pub msg_iov: *mut iovec,
-pub msg_iovlen: size_t,
-pub msg_control: *mut crate::ctypes::c_void,
-pub msg_controllen: size_t,
-pub msg_flags: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct cmsghdr {
-pub cmsg_len: size_t,
-pub cmsg_level: crate::ctypes::c_int,
-pub cmsg_type: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ucred {
-pub pid: __u32,
-pub uid: __u32,
-pub gid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mmsghdr {
-pub msg_hdr: msghdr,
-pub msg_len: crate::ctypes::c_uint,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/mips64/ioctl.rs b/vendor/linux-raw-sys-0.3.2/src/mips64/ioctl.rs
deleted file mode 100644
index e6f8556b4..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/mips64/ioctl.rs
+++ /dev/null
@@ -1,1564 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const FIONREAD: u32 = 18047;
-pub const FIONBIO: u32 = 26238;
-pub const FIOCLEX: u32 = 26113;
-pub const FIONCLEX: u32 = 26114;
-pub const FIOASYNC: u32 = 26237;
-pub const FIOQSIZE: u32 = 26239;
-pub const TCXONC: u32 = 21510;
-pub const TCFLSH: u32 = 21511;
-pub const TIOCSCTTY: u32 = 21632;
-pub const TIOCSPGRP: u32 = 2147775606;
-pub const TIOCOUTQ: u32 = 29810;
-pub const TIOCSTI: u32 = 21618;
-pub const TIOCSWINSZ: u32 = 2148037735;
-pub const TIOCMGET: u32 = 29725;
-pub const TIOCMBIS: u32 = 29723;
-pub const TIOCMBIC: u32 = 29724;
-pub const TIOCMSET: u32 = 29722;
-pub const TIOCSSOFTCAR: u32 = 21634;
-pub const TIOCLINUX: u32 = 21635;
-pub const TIOCCONS: u32 = 2147775608;
-pub const TIOCSSERIAL: u32 = 21637;
-pub const TIOCPKT: u32 = 21616;
-pub const TIOCNOTTY: u32 = 21617;
-pub const TIOCSETD: u32 = 29697;
-pub const TIOCSBRK: u32 = 21543;
-pub const TIOCCBRK: u32 = 21544;
-pub const TIOCSPTLCK: u32 = 2147767345;
-pub const TIOCSIG: u32 = 2147767350;
-pub const TIOCVHANGUP: u32 = 21559;
-pub const TIOCSERCONFIG: u32 = 21640;
-pub const TIOCSERGWILD: u32 = 21641;
-pub const TIOCSERSWILD: u32 = 21642;
-pub const TIOCSLCKTRMIOS: u32 = 21644;
-pub const TIOCSERGSTRUCT: u32 = 21645;
-pub const TIOCSERGETLSR: u32 = 21646;
-pub const TIOCSERGETMULTI: u32 = 21647;
-pub const TIOCSERSETMULTI: u32 = 21648;
-pub const TIOCMIWAIT: u32 = 21649;
-pub const TCGETS: u32 = 21517;
-pub const TCGETA: u32 = 21505;
-pub const TCSBRK: u32 = 21509;
-pub const TCSBRKP: u32 = 21638;
-pub const TCSETA: u32 = 21506;
-pub const TCSETAF: u32 = 21508;
-pub const TCSETAW: u32 = 21507;
-pub const TIOCEXCL: u32 = 29709;
-pub const TIOCNXCL: u32 = 29710;
-pub const TIOCGDEV: u32 = 1074025522;
-pub const TIOCGEXCL: u32 = 1074025536;
-pub const TIOCGICOUNT: u32 = 21650;
-pub const TIOCGLCKTRMIOS: u32 = 21643;
-pub const TIOCGPGRP: u32 = 1074033783;
-pub const TIOCGPKT: u32 = 1074025528;
-pub const TIOCGPTLCK: u32 = 1074025529;
-pub const TIOCGPTN: u32 = 1074025520;
-pub const TIOCGPTPEER: u32 = 536892481;
-pub const TIOCGSERIAL: u32 = 21636;
-pub const TIOCGSID: u32 = 29718;
-pub const TIOCGSOFTCAR: u32 = 21633;
-pub const TIOCGWINSZ: u32 = 1074295912;
-pub const TCGETS2: u32 = 1076909098;
-pub const TCSETS: u32 = 21518;
-pub const TCSETS2: u32 = 2150650923;
-pub const TCSETSF: u32 = 21520;
-pub const TCSETSF2: u32 = 2150650925;
-pub const TCSETSW: u32 = 21519;
-pub const TCSETSW2: u32 = 2150650924;
-pub const TIOCGETD: u32 = 29696;
-pub const TIOCGETP: u32 = 29704;
-pub const TIOCGLTC: u32 = 29812;
-pub const MTIOCGET: u32 = 1077439746;
-pub const BLKSSZGET: u32 = 536875624;
-pub const BLKPBSZGET: u32 = 536875643;
-pub const BLKROSET: u32 = 536875613;
-pub const BLKROGET: u32 = 536875614;
-pub const BLKRRPART: u32 = 536875615;
-pub const BLKGETSIZE: u32 = 536875616;
-pub const BLKFLSBUF: u32 = 536875617;
-pub const BLKRASET: u32 = 536875618;
-pub const BLKRAGET: u32 = 536875619;
-pub const BLKFRASET: u32 = 536875620;
-pub const BLKFRAGET: u32 = 536875621;
-pub const BLKSECTSET: u32 = 536875622;
-pub const BLKSECTGET: u32 = 536875623;
-pub const BLKPG: u32 = 536875625;
-pub const BLKBSZGET: u32 = 1074270832;
-pub const BLKBSZSET: u32 = 2148012657;
-pub const BLKGETSIZE64: u32 = 1074270834;
-pub const BLKTRACESETUP: u32 = 3225948787;
-pub const BLKTRACESTART: u32 = 536875636;
-pub const BLKTRACESTOP: u32 = 536875637;
-pub const BLKTRACETEARDOWN: u32 = 536875638;
-pub const BLKDISCARD: u32 = 536875639;
-pub const BLKIOMIN: u32 = 536875640;
-pub const BLKIOOPT: u32 = 536875641;
-pub const BLKALIGNOFF: u32 = 536875642;
-pub const BLKDISCARDZEROES: u32 = 536875644;
-pub const BLKSECDISCARD: u32 = 536875645;
-pub const BLKROTATIONAL: u32 = 536875646;
-pub const BLKZEROOUT: u32 = 536875647;
-pub const UFFDIO_REGISTER: u32 = 3223366144;
-pub const UFFDIO_UNREGISTER: u32 = 1074833921;
-pub const UFFDIO_WAKE: u32 = 1074833922;
-pub const UFFDIO_COPY: u32 = 3223890435;
-pub const UFFDIO_ZEROPAGE: u32 = 3223366148;
-pub const UFFDIO_WRITEPROTECT: u32 = 3222841862;
-pub const UFFDIO_API: u32 = 3222841919;
-pub const NS_GET_USERNS: u32 = 536917761;
-pub const NS_GET_PARENT: u32 = 536917762;
-pub const NS_GET_NSTYPE: u32 = 536917763;
-pub const KDGETLED: u32 = 19249;
-pub const KDSETLED: u32 = 19250;
-pub const KDGKBLED: u32 = 19300;
-pub const KDSKBLED: u32 = 19301;
-pub const KDGKBTYPE: u32 = 19251;
-pub const KDADDIO: u32 = 19252;
-pub const KDDELIO: u32 = 19253;
-pub const KDENABIO: u32 = 19254;
-pub const KDDISABIO: u32 = 19255;
-pub const KDSETMODE: u32 = 19258;
-pub const KDGETMODE: u32 = 19259;
-pub const KDMKTONE: u32 = 19248;
-pub const KIOCSOUND: u32 = 19247;
-pub const GIO_CMAP: u32 = 19312;
-pub const PIO_CMAP: u32 = 19313;
-pub const GIO_FONT: u32 = 19296;
-pub const GIO_FONTX: u32 = 19307;
-pub const PIO_FONT: u32 = 19297;
-pub const PIO_FONTX: u32 = 19308;
-pub const PIO_FONTRESET: u32 = 19309;
-pub const GIO_SCRNMAP: u32 = 19264;
-pub const GIO_UNISCRNMAP: u32 = 19305;
-pub const PIO_SCRNMAP: u32 = 19265;
-pub const PIO_UNISCRNMAP: u32 = 19306;
-pub const GIO_UNIMAP: u32 = 19302;
-pub const PIO_UNIMAP: u32 = 19303;
-pub const PIO_UNIMAPCLR: u32 = 19304;
-pub const KDGKBMODE: u32 = 19268;
-pub const KDSKBMODE: u32 = 19269;
-pub const KDGKBMETA: u32 = 19298;
-pub const KDSKBMETA: u32 = 19299;
-pub const KDGKBENT: u32 = 19270;
-pub const KDSKBENT: u32 = 19271;
-pub const KDGKBSENT: u32 = 19272;
-pub const KDSKBSENT: u32 = 19273;
-pub const KDGKBDIACR: u32 = 19274;
-pub const KDGETKEYCODE: u32 = 19276;
-pub const KDSETKEYCODE: u32 = 19277;
-pub const KDSIGACCEPT: u32 = 19278;
-pub const VT_OPENQRY: u32 = 22016;
-pub const VT_GETMODE: u32 = 22017;
-pub const VT_SETMODE: u32 = 22018;
-pub const VT_GETSTATE: u32 = 22019;
-pub const VT_RELDISP: u32 = 22021;
-pub const VT_ACTIVATE: u32 = 22022;
-pub const VT_WAITACTIVE: u32 = 22023;
-pub const VT_DISALLOCATE: u32 = 22024;
-pub const VT_RESIZE: u32 = 22025;
-pub const VT_RESIZEX: u32 = 22026;
-pub const FIOSETOWN: u32 = 2147772028;
-pub const FIOGETOWN: u32 = 1074030203;
-pub const SIOCATMARK: u32 = 1074033415;
-pub const SIOCGSTAMP: u32 = 35078;
-pub const TIOCINQ: u32 = 18047;
-pub const SIOCADDRT: u32 = 35083;
-pub const SIOCDELRT: u32 = 35084;
-pub const SIOCGIFNAME: u32 = 35088;
-pub const SIOCSIFLINK: u32 = 35089;
-pub const SIOCGIFCONF: u32 = 35090;
-pub const SIOCGIFFLAGS: u32 = 35091;
-pub const SIOCSIFFLAGS: u32 = 35092;
-pub const SIOCGIFADDR: u32 = 35093;
-pub const SIOCSIFADDR: u32 = 35094;
-pub const SIOCGIFDSTADDR: u32 = 35095;
-pub const SIOCSIFDSTADDR: u32 = 35096;
-pub const SIOCGIFBRDADDR: u32 = 35097;
-pub const SIOCSIFBRDADDR: u32 = 35098;
-pub const SIOCGIFNETMASK: u32 = 35099;
-pub const SIOCSIFNETMASK: u32 = 35100;
-pub const SIOCGIFMETRIC: u32 = 35101;
-pub const SIOCSIFMETRIC: u32 = 35102;
-pub const SIOCGIFMEM: u32 = 35103;
-pub const SIOCSIFMEM: u32 = 35104;
-pub const SIOCGIFMTU: u32 = 35105;
-pub const SIOCSIFMTU: u32 = 35106;
-pub const SIOCSIFHWADDR: u32 = 35108;
-pub const SIOCGIFENCAP: u32 = 35109;
-pub const SIOCSIFENCAP: u32 = 35110;
-pub const SIOCGIFHWADDR: u32 = 35111;
-pub const SIOCGIFSLAVE: u32 = 35113;
-pub const SIOCSIFSLAVE: u32 = 35120;
-pub const SIOCADDMULTI: u32 = 35121;
-pub const SIOCDELMULTI: u32 = 35122;
-pub const SIOCDARP: u32 = 35155;
-pub const SIOCGARP: u32 = 35156;
-pub const SIOCSARP: u32 = 35157;
-pub const SIOCDRARP: u32 = 35168;
-pub const SIOCGRARP: u32 = 35169;
-pub const SIOCSRARP: u32 = 35170;
-pub const SIOCGIFMAP: u32 = 35184;
-pub const SIOCSIFMAP: u32 = 35185;
-pub const SIOCRTMSG: u32 = 35085;
-pub const SIOCSIFNAME: u32 = 35107;
-pub const SIOCGIFINDEX: u32 = 35123;
-pub const SIOGIFINDEX: u32 = 35123;
-pub const SIOCSIFPFLAGS: u32 = 35124;
-pub const SIOCGIFPFLAGS: u32 = 35125;
-pub const SIOCDIFADDR: u32 = 35126;
-pub const SIOCSIFHWBROADCAST: u32 = 35127;
-pub const SIOCGIFCOUNT: u32 = 35128;
-pub const SIOCGIFBR: u32 = 35136;
-pub const SIOCSIFBR: u32 = 35137;
-pub const SIOCGIFTXQLEN: u32 = 35138;
-pub const SIOCSIFTXQLEN: u32 = 35139;
-pub const SIOCADDDLCI: u32 = 35200;
-pub const SIOCDELDLCI: u32 = 35201;
-pub const SIOCDEVPRIVATE: u32 = 35312;
-pub const SIOCPROTOPRIVATE: u32 = 35296;
-pub const FIBMAP: u32 = 536870913;
-pub const FIGETBSZ: u32 = 536870914;
-pub const FIFREEZE: u32 = 3221510263;
-pub const FITHAW: u32 = 3221510264;
-pub const FITRIM: u32 = 3222820985;
-pub const FICLONE: u32 = 2147783689;
-pub const FICLONERANGE: u32 = 2149618701;
-pub const FIDEDUPERANGE: u32 = 3222836278;
-pub const FS_IOC_GETFLAGS: u32 = 1074292225;
-pub const FS_IOC_SETFLAGS: u32 = 2148034050;
-pub const FS_IOC_GETVERSION: u32 = 1074296321;
-pub const FS_IOC_SETVERSION: u32 = 2148038146;
-pub const FS_IOC_FIEMAP: u32 = 3223348747;
-pub const FS_IOC32_GETFLAGS: u32 = 1074030081;
-pub const FS_IOC32_SETFLAGS: u32 = 2147771906;
-pub const FS_IOC32_GETVERSION: u32 = 1074034177;
-pub const FS_IOC32_SETVERSION: u32 = 2147776002;
-pub const FS_IOC_FSGETXATTR: u32 = 1075599391;
-pub const FS_IOC_FSSETXATTR: u32 = 2149341216;
-pub const FS_IOC_GETFSLABEL: u32 = 1090556977;
-pub const FS_IOC_SETFSLABEL: u32 = 2164298802;
-pub const VIDIOC_SUBDEV_QUERYSTD: u32 = 1074288191;
-pub const AUTOFS_DEV_IOCTL_CLOSEMOUNT: u32 = 3222836085;
-pub const LIRC_SET_SEND_CARRIER: u32 = 2147772691;
-pub const AUTOFS_IOC_PROTOSUBVER: u32 = 1074041703;
-pub const PTP_SYS_OFFSET_PRECISE: u32 = 3225435400;
-pub const FSI_SCOM_WRITE: u32 = 3223352066;
-pub const ATM_GETCIRANGE: u32 = 2148557194;
-pub const DMA_BUF_SET_NAME_B: u32 = 2148033025;
-pub const RIO_CM_EP_GET_LIST_SIZE: u32 = 3221512961;
-pub const TUNSETPERSIST: u32 = 2147767499;
-pub const FS_IOC_GET_ENCRYPTION_POLICY: u32 = 2148296213;
-pub const CEC_RECEIVE: u32 = 3224920326;
-pub const MGSL_IOCGPARAMS: u32 = 1076915457;
-pub const ENI_SETMULT: u32 = 2148557159;
-pub const RIO_GET_EVENT_MASK: u32 = 1074031886;
-pub const LIRC_GET_MAX_TIMEOUT: u32 = 1074030857;
-pub const KVM_SET_BOOT_CPU_ID: u32 = 536915576;
-pub const KVM_SET_MP_STATE: u32 = 2147790489;
-pub const KVM_GET_MP_STATE: u32 = 1074048664;
-pub const KVM_SET_MEMORY_REGION: u32 = 2149101120;
-pub const KVM_GET_API_VERSION: u32 = 536915456;
-pub const KVM_S390_GET_SKEYS: u32 = 2151722674;
-pub const KVM_SET_ONE_REG: u32 = 2148576940;
-pub const KVM_IRQ_LINE_STATUS: u32 = 3221794407;
-pub const KVM_SET_USER_MEMORY_REGION: u32 = 2149625414;
-pub const KVM_S390_INTERRUPT: u32 = 2148576916;
-pub const KVM_TPR_ACCESS_REPORTING: u32 = 3223891602;
-pub const KVM_GET_FPU: u32 = 1073786508;
-pub const KVM_ASSIGN_SET_MSIX_ENTRY: u32 = 2148576884;
-pub const KVM_MEMORY_ENCRYPT_REG_REGION: u32 = 1074835131;
-pub const KVM_S390_UCAS_MAP: u32 = 2149101136;
-pub const KVM_ASSIGN_SET_INTX_MASK: u32 = 2151722660;
-pub const KVM_MEMORY_ENCRYPT_OP: u32 = 3221794490;
-pub const KVM_CREATE_PIT2: u32 = 2151722615;
-pub const KVM_S390_VCPU_FAULT: u32 = 2148052562;
-pub const KVM_REGISTER_COALESCED_MMIO: u32 = 2148576871;
-pub const KVM_SET_VAPIC_ADDR: u32 = 2148052627;
-pub const KVM_CREATE_DEVICE: u32 = 3222056672;
-pub const KVM_GET_IRQCHIP: u32 = 3255348834;
-pub const KVM_TRANSLATE: u32 = 3222843013;
-pub const KVM_S390_SET_INITIAL_PSW: u32 = 2148576918;
-pub const KVM_X86_SETUP_MCE: u32 = 2148052636;
-pub const KVM_DEASSIGN_PCI_DEVICE: u32 = 2151722610;
-pub const KVM_XEN_HVM_SET_ATTR: u32 = 2152246985;
-pub const KVM_GET_CLOCK: u32 = 1076932220;
-pub const KVM_SET_FPU: u32 = 2147528333;
-pub const KVM_KVMCLOCK_CTRL: u32 = 536915629;
-pub const KVM_PPC_GET_PVINFO: u32 = 2155916961;
-pub const KVM_X86_GET_MCE_CAP_SUPPORTED: u32 = 1074310813;
-pub const KVM_S390_GET_IRQ_STATE: u32 = 2149625526;
-pub const KVM_GET_DEVICE_ATTR: u32 = 2149101282;
-pub const KVM_S390_INITIAL_RESET: u32 = 536915607;
-pub const KVM_SET_REGS: u32 = 2165878402;
-pub const KVM_GET_TSC_KHZ: u32 = 536915619;
-pub const KVM_CHECK_EXTENSION: u32 = 536915459;
-pub const KVM_PPC_RESIZE_HPT_COMMIT: u32 = 1074835118;
-pub const KVM_GET_DIRTY_LOG: u32 = 2148576834;
-pub const KVM_S390_SET_IRQ_STATE: u32 = 2149625525;
-pub const KVM_S390_NORMAL_RESET: u32 = 536915651;
-pub const KVM_SET_SIGNAL_MASK: u32 = 2147790475;
-pub const KVM_XEN_VCPU_SET_ATTR: u32 = 2152246987;
-pub const KVM_SET_GSI_ROUTING: u32 = 2148052586;
-pub const KVM_CREATE_VCPU: u32 = 536915521;
-pub const KVM_S390_UCAS_UNMAP: u32 = 2149101137;
-pub const KVM_S390_STORE_STATUS: u32 = 2148052629;
-pub const KVM_UNREGISTER_COALESCED_MMIO: u32 = 2148576872;
-pub const KVM_ASSIGN_DEV_IRQ: u32 = 2151722608;
-pub const KVM_S390_PV_COMMAND: u32 = 3223367365;
-pub const KVM_S390_ENABLE_SIE: u32 = 536915462;
-pub const KVM_CLEAR_DIRTY_LOG: u32 = 3222843072;
-pub const KVM_GET_ONE_REG: u32 = 2148576939;
-pub const KVM_ARM_SET_DEVICE_ADDR: u32 = 2148576939;
-pub const KVM_DIRTY_TLB: u32 = 2148576938;
-pub const KVM_NMI: u32 = 536915610;
-pub const KVM_HYPERV_EVENTFD: u32 = 2149101245;
-pub const KVM_S390_MEM_OP: u32 = 2151722673;
-pub const KVM_PPC_SVM_OFF: u32 = 536915635;
-pub const KVM_PPC_RESIZE_HPT_PREPARE: u32 = 1074835117;
-pub const KVM_INTERRUPT: u32 = 2147790470;
-pub const KVM_XEN_HVM_GET_ATTR: u32 = 3225988808;
-pub const KVM_GET_SREGS: u32 = 1073786499;
-pub const KVM_SET_IDENTITY_MAP_ADDR: u32 = 2148052552;
-pub const KVM_GET_REGS: u32 = 1092136577;
-pub const KVM_S390_GET_CMMA_BITS: u32 = 3223367352;
-pub const KVM_CREATE_IRQCHIP: u32 = 536915552;
-pub const KVM_ASSIGN_PCI_DEVICE: u32 = 1077980777;
-pub const KVM_SET_NR_MMU_PAGES: u32 = 536915524;
-pub const KVM_IOEVENTFD: u32 = 2151722617;
-pub const KVM_RUN: u32 = 536915584;
-pub const KVM_S390_SET_SKEYS: u32 = 2151722675;
-pub const KVM_SET_DEVICE_ATTR: u32 = 2149101281;
-pub const KVM_DEASSIGN_DEV_IRQ: u32 = 2151722613;
-pub const KVM_SMI: u32 = 536915639;
-pub const KVM_SET_TSS_ADDR: u32 = 536915527;
-pub const KVM_GET_NR_MMU_PAGES: u32 = 536915525;
-pub const KVM_XEN_VCPU_GET_ATTR: u32 = 3225988810;
-pub const KVM_REINJECT_CONTROL: u32 = 536915569;
-pub const KVM_HAS_DEVICE_ATTR: u32 = 2149101283;
-pub const KVM_IRQFD: u32 = 2149625462;
-pub const KVM_S390_SET_CMMA_BITS: u32 = 2149625529;
-pub const KVM_SET_IRQCHIP: u32 = 1107865187;
-pub const KVM_SIGNAL_MSI: u32 = 2149625509;
-pub const KVM_GET_VCPU_MMAP_SIZE: u32 = 536915460;
-pub const KVM_CREATE_VM: u32 = 536915457;
-pub const KVM_S390_CLEAR_RESET: u32 = 536915652;
-pub const KVM_RESET_DIRTY_RINGS: u32 = 536915655;
-pub const KVM_ASSIGN_SET_MSIX_NR: u32 = 2148052595;
-pub const KVM_CREATE_PIT: u32 = 536915556;
-pub const KVM_SET_GUEST_DEBUG: u32 = 2148052635;
-pub const KVM_GET_REG_LIST: u32 = 3221794480;
-pub const KVM_ARM_VCPU_FINALIZE: u32 = 2147790530;
-pub const KVM_SET_CLOCK: u32 = 2150674043;
-pub const KVM_PPC_ALLOCATE_HTAB: u32 = 3221532327;
-pub const KVM_PPC_GET_SMMU_INFO: u32 = 1112583846;
-pub const KVM_SET_TSC_KHZ: u32 = 536915618;
-pub const KVM_S390_IRQ: u32 = 2152246964;
-pub const KVM_ENABLE_CAP: u32 = 2154344099;
-pub const KVM_IRQ_LINE: u32 = 2148052577;
-pub const KVM_SET_SREGS: u32 = 2147528324;
-pub const KVM_MEMORY_ENCRYPT_UNREG_REGION: u32 = 1074835132;
-pub const KVM_GET_STATS_FD: u32 = 536915662;
-pub const USBDEVFS_CLAIMINTERFACE: u32 = 1074025743;
-pub const CHIOMOVE: u32 = 2148819713;
-pub const SONYPI_IOCGBATFLAGS: u32 = 1073837575;
-pub const BTRFS_IOC_SYNC: u32 = 536908808;
-pub const VIDIOC_TRY_FMT: u32 = 3234879040;
-pub const LIRC_SET_REC_MODE: u32 = 2147772690;
-pub const VIDIOC_DQEVENT: u32 = 1082676825;
-pub const RPMSG_DESTROY_EPT_IOCTL: u32 = 536917250;
-pub const UVCIOC_CTRL_MAP: u32 = 3227546912;
-pub const VHOST_SET_BACKEND_FEATURES: u32 = 2148052773;
-pub const VHOST_VSOCK_SET_GUEST_CID: u32 = 2148052832;
-pub const UI_SET_KEYBIT: u32 = 2147767653;
-pub const LIRC_SET_REC_TIMEOUT: u32 = 2147772696;
-pub const FS_IOC_GET_ENCRYPTION_KEY_STATUS: u32 = 3229640218;
-pub const BTRFS_IOC_TREE_SEARCH_V2: u32 = 3228603409;
-pub const VHOST_SET_VRING_BASE: u32 = 2148052754;
-pub const RIO_ENABLE_DOORBELL_RANGE: u32 = 2148035849;
-pub const VIDIOC_TRY_EXT_CTRLS: u32 = 3223344713;
-pub const LIRC_GET_REC_MODE: u32 = 1074030850;
-pub const PPGETTIME: u32 = 1074819221;
-pub const BTRFS_IOC_RM_DEV: u32 = 2415957003;
-pub const ATM_SETBACKEND: u32 = 2147639794;
-pub const FSL_HV_IOCTL_PARTITION_START: u32 = 3222318851;
-pub const FBIO_WAITEVENT: u32 = 536888968;
-pub const SWITCHTEC_IOCTL_PORT_TO_PFF: u32 = 3222034245;
-pub const NVME_IOCTL_IO_CMD: u32 = 3225964099;
-pub const IPMICTL_RECEIVE_MSG_TRUNC: u32 = 3224398091;
-pub const FDTWADDLE: u32 = 536871513;
-pub const NVME_IOCTL_SUBMIT_IO: u32 = 2150649410;
-pub const NILFS_IOCTL_SYNC: u32 = 1074294410;
-pub const VIDIOC_SUBDEV_S_DV_TIMINGS: u32 = 3229898327;
-pub const ASPEED_LPC_CTRL_IOCTL_GET_SIZE: u32 = 3222319616;
-pub const DM_DEV_STATUS: u32 = 3241737479;
-pub const TEE_IOC_CLOSE_SESSION: u32 = 1074045957;
-pub const NS_GETPSTAT: u32 = 3222298977;
-pub const UI_SET_PROPBIT: u32 = 2147767662;
-pub const TUNSETFILTEREBPF: u32 = 1074025697;
-pub const RIO_MPORT_MAINT_COMPTAG_SET: u32 = 2147773698;
-pub const AUTOFS_DEV_IOCTL_VERSION: u32 = 3222836081;
-pub const WDIOC_SETOPTIONS: u32 = 1074026244;
-pub const VHOST_SCSI_SET_ENDPOINT: u32 = 2162732864;
-pub const MGSL_IOCGTXIDLE: u32 = 536898819;
-pub const ATM_ADDLECSADDR: u32 = 2148557198;
-pub const FSL_HV_IOCTL_GETPROP: u32 = 3223891719;
-pub const FDGETPRM: u32 = 1075839492;
-pub const HIDIOCAPPLICATION: u32 = 536889346;
-pub const ENI_MEMDUMP: u32 = 2148557152;
-pub const PTP_SYS_OFFSET2: u32 = 2202025230;
-pub const VIDIOC_SUBDEV_G_DV_TIMINGS: u32 = 3229898328;
-pub const DMA_BUF_SET_NAME_A: u32 = 2147770881;
-pub const PTP_PIN_GETFUNC: u32 = 3227532550;
-pub const PTP_SYS_OFFSET_EXTENDED: u32 = 3300932873;
-pub const DFL_FPGA_PORT_UINT_SET_IRQ: u32 = 2148054600;
-pub const RTC_EPOCH_READ: u32 = 1074294797;
-pub const VIDIOC_SUBDEV_S_SELECTION: u32 = 3225441854;
-pub const VIDIOC_QUERY_EXT_CTRL: u32 = 3236451943;
-pub const ATM_GETLECSADDR: u32 = 2148557200;
-pub const FSL_HV_IOCTL_PARTITION_STOP: u32 = 3221794564;
-pub const SONET_GETDIAG: u32 = 1074028820;
-pub const ATMMPC_DATA: u32 = 536895961;
-pub const IPMICTL_UNREGISTER_FOR_CMD_CHANS: u32 = 1074555165;
-pub const HIDIOCGCOLLECTIONINDEX: u32 = 2149074960;
-pub const RPMSG_CREATE_EPT_IOCTL: u32 = 2150151425;
-pub const GPIOHANDLE_GET_LINE_VALUES_IOCTL: u32 = 3225465864;
-pub const UI_DEV_SETUP: u32 = 2153534723;
-pub const ISST_IF_IO_CMD: u32 = 2148072962;
-pub const RIO_MPORT_MAINT_READ_REMOTE: u32 = 1075342599;
-pub const VIDIOC_OMAP3ISP_HIST_CFG: u32 = 3224393412;
-pub const BLKGETNRZONES: u32 = 1074008709;
-pub const VIDIOC_G_MODULATOR: u32 = 3225703990;
-pub const VBG_IOCTL_WRITE_CORE_DUMP: u32 = 3223082515;
-pub const USBDEVFS_SETINTERFACE: u32 = 1074287876;
-pub const PPPIOCGCHAN: u32 = 1074033719;
-pub const EVIOCGVERSION: u32 = 1074021633;
-pub const VHOST_NET_SET_BACKEND: u32 = 2148052784;
-pub const USBDEVFS_REAPURBNDELAY: u32 = 2148029709;
-pub const RNDZAPENTCNT: u32 = 536891908;
-pub const VIDIOC_G_PARM: u32 = 3234616853;
-pub const TUNGETDEVNETNS: u32 = 536892643;
-pub const LIRC_SET_MEASURE_CARRIER_MODE: u32 = 2147772701;
-pub const VHOST_SET_VRING_ERR: u32 = 2148052770;
-pub const VDUSE_VQ_SETUP: u32 = 2149613844;
-pub const AUTOFS_IOC_SETTIMEOUT: u32 = 3221787492;
-pub const VIDIOC_S_FREQUENCY: u32 = 2150389305;
-pub const F2FS_IOC_SEC_TRIM_FILE: u32 = 2149119252;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY: u32 = 3225445912;
-pub const WDIOC_GETPRETIMEOUT: u32 = 1074026249;
-pub const USBDEVFS_DROP_PRIVILEGES: u32 = 2147767582;
-pub const BTRFS_IOC_SNAP_CREATE_V2: u32 = 2415957015;
-pub const VHOST_VSOCK_SET_RUNNING: u32 = 2147790689;
-pub const STP_SET_OPTIONS: u32 = 2148017410;
-pub const FBIO_RADEON_GET_MIRROR: u32 = 1074282499;
-pub const IVTVFB_IOC_DMA_FRAME: u32 = 2149078720;
-pub const IPMICTL_SEND_COMMAND: u32 = 1076390157;
-pub const VIDIOC_G_ENC_INDEX: u32 = 1209554508;
-pub const DFL_FPGA_FME_PORT_PR: u32 = 536917632;
-pub const CHIOSVOLTAG: u32 = 2150654738;
-pub const ATM_SETESIF: u32 = 2148557197;
-pub const FW_CDEV_IOC_SEND_RESPONSE: u32 = 2149065476;
-pub const PMU_IOC_GET_MODEL: u32 = 1074283011;
-pub const JSIOCGBTNMAP: u32 = 1140877876;
-pub const USBDEVFS_HUB_PORTINFO: u32 = 1082152211;
-pub const VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS: u32 = 3222820363;
-pub const FDCLRPRM: u32 = 536871489;
-pub const BTRFS_IOC_SCRUB: u32 = 3288372251;
-pub const USBDEVFS_DISCONNECT: u32 = 536892694;
-pub const TUNSETVNETBE: u32 = 2147767518;
-pub const ATMTCP_REMOVE: u32 = 536895887;
-pub const VHOST_VDPA_GET_CONFIG: u32 = 1074311027;
-pub const PPPIOCGNPMODE: u32 = 3221779532;
-pub const FDGETDRVPRM: u32 = 1082130961;
-pub const TUNSETVNETLE: u32 = 2147767516;
-pub const PHN_SETREG: u32 = 2148036614;
-pub const PPPIOCDETACH: u32 = 2147775548;
-pub const MMTIMER_GETRES: u32 = 1074294017;
-pub const VIDIOC_SUBDEV_ENUMSTD: u32 = 3225966105;
-pub const PPGETFLAGS: u32 = 1074032794;
-pub const VDUSE_DEV_GET_FEATURES: u32 = 1074299153;
-pub const CAPI_MANUFACTURER_CMD: u32 = 3222291232;
-pub const VIDIOC_G_TUNER: u32 = 3226752541;
-pub const DM_TABLE_STATUS: u32 = 3241737484;
-pub const DM_DEV_ARM_POLL: u32 = 3241737488;
-pub const NE_CREATE_VM: u32 = 1074310688;
-pub const MEDIA_IOC_ENUM_LINKS: u32 = 3223878658;
-pub const F2FS_IOC_PRECACHE_EXTENTS: u32 = 536933647;
-pub const DFL_FPGA_PORT_DMA_MAP: u32 = 536917571;
-pub const MGSL_IOCGXCTRL: u32 = 536898838;
-pub const FW_CDEV_IOC_SEND_REQUEST: u32 = 2150114049;
-pub const SONYPI_IOCGBLUE: u32 = 1073837576;
-pub const F2FS_IOC_DECOMPRESS_FILE: u32 = 536933655;
-pub const I2OHTML: u32 = 3224398089;
-pub const VFIO_GET_API_VERSION: u32 = 536886116;
-pub const IDT77105_GETSTATZ: u32 = 2148557107;
-pub const I2OPARMSET: u32 = 3223873795;
-pub const TEE_IOC_CANCEL: u32 = 1074308100;
-pub const PTP_SYS_OFFSET_PRECISE2: u32 = 3225435409;
-pub const DFL_FPGA_PORT_RESET: u32 = 536917568;
-pub const PPPIOCGASYNCMAP: u32 = 1074033752;
-pub const EVIOCGKEYCODE_V2: u32 = 1076380932;
-pub const DM_DEV_SET_GEOMETRY: u32 = 3241737487;
-pub const HIDIOCSUSAGE: u32 = 2149074956;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE: u32 = 2149065488;
-pub const PTP_EXTTS_REQUEST: u32 = 2148547842;
-pub const SWITCHTEC_IOCTL_EVENT_CTL: u32 = 3223869251;
-pub const WDIOC_SETPRETIMEOUT: u32 = 3221509896;
-pub const VHOST_SCSI_CLEAR_ENDPOINT: u32 = 2162732865;
-pub const JSIOCGAXES: u32 = 1073834513;
-pub const HIDIOCSFLAG: u32 = 2147764239;
-pub const PTP_PEROUT_REQUEST2: u32 = 2151169292;
-pub const PPWDATA: u32 = 2147577990;
-pub const PTP_CLOCK_GETCAPS: u32 = 1079000321;
-pub const FDGETMAXERRS: u32 = 1075053070;
-pub const TUNSETQUEUE: u32 = 2147767513;
-pub const PTP_ENABLE_PPS: u32 = 2147761412;
-pub const SIOCSIFATMTCP: u32 = 536895872;
-pub const CEC_ADAP_G_LOG_ADDRS: u32 = 1079795971;
-pub const ND_IOCTL_ARS_CAP: u32 = 3223342593;
-pub const NBD_SET_BLKSIZE: u32 = 536914689;
-pub const NBD_SET_TIMEOUT: u32 = 536914697;
-pub const VHOST_SCSI_GET_ABI_VERSION: u32 = 2147790658;
-pub const RIO_UNMAP_INBOUND: u32 = 2148035858;
-pub const ATM_QUERYLOOP: u32 = 2148557140;
-pub const DFL_FPGA_GET_API_VERSION: u32 = 536917504;
-pub const USBDEVFS_WAIT_FOR_RESUME: u32 = 536892707;
-pub const FBIO_CURSOR: u32 = 3228059144;
-pub const RNDCLEARPOOL: u32 = 536891910;
-pub const VIDIOC_QUERYSTD: u32 = 1074288191;
-pub const DMA_BUF_IOCTL_SYNC: u32 = 2148033024;
-pub const SCIF_RECV: u32 = 3222827783;
-pub const PTP_PIN_GETFUNC2: u32 = 3227532559;
-pub const FW_CDEV_IOC_ALLOCATE: u32 = 3223331586;
-pub const CEC_ADAP_G_CAPS: u32 = 3226231040;
-pub const VIDIOC_G_FBUF: u32 = 1076909578;
-pub const PTP_ENABLE_PPS2: u32 = 2147761421;
-pub const PCITEST_CLEAR_IRQ: u32 = 536891408;
-pub const IPMICTL_SET_GETS_EVENTS_CMD: u32 = 1074030864;
-pub const BTRFS_IOC_DEVICES_READY: u32 = 1342215207;
-pub const JSIOCGAXMAP: u32 = 1077963314;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER: u32 = 1074799372;
-pub const FW_CDEV_IOC_SET_ISO_CHANNELS: u32 = 2148541207;
-pub const RTC_WIE_OFF: u32 = 536899600;
-pub const PPGETMODE: u32 = 1074032792;
-pub const VIDIOC_DBG_G_REGISTER: u32 = 3224917584;
-pub const PTP_SYS_OFFSET: u32 = 2202025221;
-pub const BTRFS_IOC_SPACE_INFO: u32 = 3222311956;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_SIZE: u32 = 3225441866;
-pub const ND_IOCTL_VENDOR: u32 = 3221769737;
-pub const SCIF_VREADFROM: u32 = 3223876364;
-pub const BTRFS_IOC_TRANS_START: u32 = 536908806;
-pub const INOTIFY_IOC_SETNEXTWD: u32 = 2147764480;
-pub const SNAPSHOT_GET_IMAGE_SIZE: u32 = 1074279182;
-pub const TUNDETACHFILTER: u32 = 2148553942;
-pub const ND_IOCTL_CLEAR_ERROR: u32 = 3223342596;
-pub const IOC_PR_CLEAR: u32 = 2148561101;
-pub const SCIF_READFROM: u32 = 3223876362;
-pub const PPPIOCGDEBUG: u32 = 1074033729;
-pub const BLKGETZONESZ: u32 = 1074008708;
-pub const HIDIOCGUSAGES: u32 = 3491514387;
-pub const SONYPI_IOCGTEMP: u32 = 1073837580;
-pub const UI_SET_MSCBIT: u32 = 2147767656;
-pub const APM_IOC_SUSPEND: u32 = 536887554;
-pub const BTRFS_IOC_TREE_SEARCH: u32 = 3489698833;
-pub const RTC_PLL_GET: u32 = 1075867665;
-pub const RIO_CM_EP_GET_LIST: u32 = 3221512962;
-pub const USBDEVFS_DISCSIGNAL: u32 = 1074812174;
-pub const LIRC_GET_MIN_TIMEOUT: u32 = 1074030856;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY: u32 = 1100502850;
-pub const DM_TARGET_MSG: u32 = 3241737486;
-pub const SONYPI_IOCGBAT1REM: u32 = 1073903107;
-pub const EVIOCSFF: u32 = 2150647168;
-pub const TUNSETGROUP: u32 = 2147767502;
-pub const EVIOCGKEYCODE: u32 = 1074283780;
-pub const KCOV_REMOTE_ENABLE: u32 = 2149081958;
-pub const ND_IOCTL_GET_CONFIG_SIZE: u32 = 3222031876;
-pub const FDEJECT: u32 = 536871514;
-pub const TUNSETOFFLOAD: u32 = 2147767504;
-pub const PPPIOCCONNECT: u32 = 2147775546;
-pub const ATM_ADDADDR: u32 = 2148557192;
-pub const VDUSE_DEV_INJECT_CONFIG_IRQ: u32 = 536903955;
-pub const AUTOFS_DEV_IOCTL_ASKUMOUNT: u32 = 3222836093;
-pub const VHOST_VDPA_GET_STATUS: u32 = 1073852273;
-pub const CCISS_PASSTHRU: u32 = 3227009547;
-pub const MGSL_IOCCLRMODCOUNT: u32 = 536898831;
-pub const TEE_IOC_SUPPL_SEND: u32 = 1074832391;
-pub const ATMARPD_CTRL: u32 = 536895969;
-pub const UI_ABS_SETUP: u32 = 2149340420;
-pub const UI_DEV_DESTROY: u32 = 536892674;
-pub const BTRFS_IOC_QUOTA_CTL: u32 = 3222311976;
-pub const RTC_AIE_ON: u32 = 536899585;
-pub const AUTOFS_IOC_EXPIRE: u32 = 1091343205;
-pub const PPPIOCSDEBUG: u32 = 2147775552;
-pub const GPIO_V2_LINE_SET_VALUES_IOCTL: u32 = 3222320143;
-pub const PPPIOCSMRU: u32 = 2147775570;
-pub const CCISS_DEREGDISK: u32 = 536887820;
-pub const UI_DEV_CREATE: u32 = 536892673;
-pub const FUSE_DEV_IOC_CLONE: u32 = 1074062592;
-pub const BTRFS_IOC_START_SYNC: u32 = 1074304024;
-pub const NILFS_IOCTL_DELETE_CHECKPOINT: u32 = 2148036225;
-pub const SNAPSHOT_AVAIL_SWAP_SIZE: u32 = 1074279187;
-pub const DM_TABLE_CLEAR: u32 = 3241737482;
-pub const CCISS_GETINTINFO: u32 = 1074283010;
-pub const PPPIOCSASYNCMAP: u32 = 2147775575;
-pub const I2OEVTGET: u32 = 1080584459;
-pub const NVME_IOCTL_RESET: u32 = 536890948;
-pub const PPYIELD: u32 = 536899725;
-pub const NVME_IOCTL_IO64_CMD: u32 = 3226488392;
-pub const TUNSETCARRIER: u32 = 2147767522;
-pub const DM_DEV_WAIT: u32 = 3241737480;
-pub const RTC_WIE_ON: u32 = 536899599;
-pub const MEDIA_IOC_DEVICE_INFO: u32 = 3238034432;
-pub const RIO_CM_CHAN_CREATE: u32 = 3221381891;
-pub const MGSL_IOCSPARAMS: u32 = 2150657280;
-pub const RTC_SET_TIME: u32 = 2149871626;
-pub const VHOST_RESET_OWNER: u32 = 536915714;
-pub const IOC_OPAL_PSID_REVERT_TPR: u32 = 2164814056;
-pub const AUTOFS_DEV_IOCTL_OPENMOUNT: u32 = 3222836084;
-pub const UDF_GETEABLOCK: u32 = 1074293825;
-pub const VFIO_IOMMU_MAP_DMA: u32 = 536886129;
-pub const VIDIOC_SUBSCRIBE_EVENT: u32 = 2149602906;
-pub const HIDIOCGFLAG: u32 = 1074022414;
-pub const HIDIOCGUCODE: u32 = 3222816781;
-pub const VIDIOC_OMAP3ISP_AF_CFG: u32 = 3226228421;
-pub const DM_REMOVE_ALL: u32 = 3241737473;
-pub const ASPEED_LPC_CTRL_IOCTL_MAP: u32 = 2148577793;
-pub const CCISS_GETFIRMVER: u32 = 1074020872;
-pub const ND_IOCTL_ARS_START: u32 = 3223342594;
-pub const PPPIOCSMRRU: u32 = 2147775547;
-pub const CEC_ADAP_S_LOG_ADDRS: u32 = 3227279620;
-pub const RPROC_GET_SHUTDOWN_ON_RELEASE: u32 = 1074050818;
-pub const DMA_HEAP_IOCTL_ALLOC: u32 = 3222816768;
-pub const PPSETTIME: u32 = 2148561046;
-pub const RTC_ALM_READ: u32 = 1076129800;
-pub const VDUSE_SET_API_VERSION: u32 = 2148040961;
-pub const RIO_MPORT_MAINT_WRITE_REMOTE: u32 = 2149084424;
-pub const VIDIOC_SUBDEV_S_CROP: u32 = 3224917564;
-pub const USBDEVFS_CONNECT: u32 = 536892695;
-pub const SYNC_IOC_FILE_INFO: u32 = 3224911364;
-pub const ATMARP_MKIP: u32 = 536895970;
-pub const VFIO_IOMMU_SPAPR_TCE_GET_INFO: u32 = 536886128;
-pub const CCISS_GETHEARTBEAT: u32 = 1074020870;
-pub const ATM_RSTADDR: u32 = 2148557191;
-pub const NBD_SET_SIZE: u32 = 536914690;
-pub const UDF_GETVOLIDENT: u32 = 1074293826;
-pub const GPIO_V2_LINE_GET_VALUES_IOCTL: u32 = 3222320142;
-pub const MGSL_IOCSTXIDLE: u32 = 536898818;
-pub const FSL_HV_IOCTL_SETPROP: u32 = 3223891720;
-pub const BTRFS_IOC_GET_DEV_STATS: u32 = 3288896564;
-pub const PPRSTATUS: u32 = 1073836161;
-pub const MGSL_IOCTXENABLE: u32 = 536898820;
-pub const UDF_GETEASIZE: u32 = 1074031680;
-pub const NVME_IOCTL_ADMIN64_CMD: u32 = 3226488391;
-pub const VHOST_SET_OWNER: u32 = 536915713;
-pub const RIO_ALLOC_DMA: u32 = 3222826259;
-pub const RIO_CM_CHAN_ACCEPT: u32 = 3221775111;
-pub const I2OHRTGET: u32 = 3222825217;
-pub const ATM_SETCIRANGE: u32 = 2148557195;
-pub const HPET_IE_ON: u32 = 536897537;
-pub const PERF_EVENT_IOC_ID: u32 = 1074275335;
-pub const TUNSETSNDBUF: u32 = 2147767508;
-pub const PTP_PIN_SETFUNC: u32 = 2153790727;
-pub const PPPIOCDISCONN: u32 = 536900665;
-pub const VIDIOC_QUERYCTRL: u32 = 3225703972;
-pub const PPEXCL: u32 = 536899727;
-pub const PCITEST_MSI: u32 = 2147766275;
-pub const FDWERRORCLR: u32 = 536871510;
-pub const AUTOFS_IOC_FAIL: u32 = 536908641;
-pub const USBDEVFS_IOCTL: u32 = 3222295826;
-pub const VIDIOC_S_STD: u32 = 2148029976;
-pub const F2FS_IOC_RESIZE_FS: u32 = 2148070672;
-pub const SONET_SETDIAG: u32 = 3221512466;
-pub const BTRFS_IOC_DEFRAG: u32 = 2415956994;
-pub const CCISS_GETDRIVVER: u32 = 1074020873;
-pub const IPMICTL_GET_TIMING_PARMS_CMD: u32 = 1074293015;
-pub const HPET_IRQFREQ: u32 = 2148034566;
-pub const ATM_GETESI: u32 = 2148557189;
-pub const CCISS_GETLUNINFO: u32 = 1074545169;
-pub const AUTOFS_DEV_IOCTL_ISMOUNTPOINT: u32 = 3222836094;
-pub const TEE_IOC_SHM_ALLOC: u32 = 3222316033;
-pub const PERF_EVENT_IOC_SET_BPF: u32 = 2147755016;
-pub const UDMABUF_CREATE_LIST: u32 = 2148037955;
-pub const VHOST_SET_LOG_BASE: u32 = 2148052740;
-pub const ZATM_GETPOOL: u32 = 2148557153;
-pub const BR2684_SETFILT: u32 = 2149343632;
-pub const RNDGETPOOL: u32 = 1074287106;
-pub const PPS_GETPARAMS: u32 = 1074294945;
-pub const IOC_PR_RESERVE: u32 = 2148561097;
-pub const VIDIOC_TRY_DECODER_CMD: u32 = 3225966177;
-pub const RIO_CM_CHAN_CLOSE: u32 = 2147640068;
-pub const VIDIOC_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const IOCTL_MEI_CONNECT_CLIENT_VTAG: u32 = 3222554628;
-pub const PMU_IOC_GET_BACKLIGHT: u32 = 1074283009;
-pub const USBDEVFS_GET_CAPABILITIES: u32 = 1074025754;
-pub const SCIF_WRITETO: u32 = 3223876363;
-pub const UDF_RELOCATE_BLOCKS: u32 = 3221777475;
-pub const FSL_HV_IOCTL_PARTITION_RESTART: u32 = 3221794561;
-pub const CCISS_REGNEWD: u32 = 536887822;
-pub const FAT_IOCTL_SET_ATTRIBUTES: u32 = 2147774993;
-pub const VIDIOC_CREATE_BUFS: u32 = 3238024796;
-pub const CAPI_GET_VERSION: u32 = 3222291207;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY: u32 = 1155028802;
-pub const VFIO_EEH_PE_OP: u32 = 536886137;
-pub const FW_CDEV_IOC_CREATE_ISO_CONTEXT: u32 = 3223331592;
-pub const F2FS_IOC_RELEASE_COMPRESS_BLOCKS: u32 = 1074328850;
-pub const NBD_SET_SIZE_BLOCKS: u32 = 536914695;
-pub const IPMI_BMC_IOCTL_SET_SMS_ATN: u32 = 536916224;
-pub const ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG: u32 = 3222319873;
-pub const VIDIOC_S_AUDOUT: u32 = 2150913586;
-pub const VIDIOC_S_FMT: u32 = 3234878981;
-pub const PPPIOCATTACH: u32 = 2147775549;
-pub const VHOST_GET_VRING_BUSYLOOP_TIMEOUT: u32 = 2148052772;
-pub const FS_IOC_MEASURE_VERITY: u32 = 3221513862;
-pub const CCISS_BIG_PASSTHRU: u32 = 3227533842;
-pub const IPMICTL_SET_MY_LUN_CMD: u32 = 1074030867;
-pub const PCITEST_LEGACY_IRQ: u32 = 536891394;
-pub const USBDEVFS_SUBMITURB: u32 = 1077433610;
-pub const AUTOFS_IOC_READY: u32 = 536908640;
-pub const BTRFS_IOC_SEND: u32 = 2152240166;
-pub const VIDIOC_G_EXT_CTRLS: u32 = 3223344711;
-pub const JSIOCSBTNMAP: u32 = 2214619699;
-pub const PPPIOCSFLAGS: u32 = 2147775577;
-pub const NVRAM_INIT: u32 = 536899648;
-pub const RFKILL_IOCTL_NOINPUT: u32 = 536891905;
-pub const BTRFS_IOC_BALANCE: u32 = 2415957004;
-pub const FS_IOC_GETFSMAP: u32 = 3233830971;
-pub const IPMICTL_GET_MY_CHANNEL_LUN_CMD: u32 = 1074030875;
-pub const STP_POLICY_ID_GET: u32 = 1074799873;
-pub const PPSETFLAGS: u32 = 2147774619;
-pub const CEC_ADAP_S_PHYS_ADDR: u32 = 2147639554;
-pub const ATMTCP_CREATE: u32 = 536895886;
-pub const IPMI_BMC_IOCTL_FORCE_ABORT: u32 = 536916226;
-pub const PPPIOCGXASYNCMAP: u32 = 1075868752;
-pub const VHOST_SET_VRING_CALL: u32 = 2148052769;
-pub const LIRC_GET_FEATURES: u32 = 1074030848;
-pub const GSMIOC_DISABLE_NET: u32 = 536889091;
-pub const AUTOFS_IOC_CATATONIC: u32 = 536908642;
-pub const NBD_DO_IT: u32 = 536914691;
-pub const LIRC_SET_REC_CARRIER_RANGE: u32 = 2147772703;
-pub const IPMICTL_GET_MY_CHANNEL_ADDRESS_CMD: u32 = 1074030873;
-pub const EVIOCSCLOCKID: u32 = 2147763616;
-pub const USBDEVFS_FREE_STREAMS: u32 = 1074287901;
-pub const FSI_SCOM_RESET: u32 = 2147775235;
-pub const PMU_IOC_GRAB_BACKLIGHT: u32 = 1074283014;
-pub const VIDIOC_SUBDEV_S_FMT: u32 = 3227014661;
-pub const FDDEFPRM: u32 = 2149581379;
-pub const TEE_IOC_INVOKE: u32 = 1074832387;
-pub const USBDEVFS_BULK: u32 = 3222820098;
-pub const SCIF_VWRITETO: u32 = 3223876365;
-pub const SONYPI_IOCSBRT: u32 = 2147579392;
-pub const BTRFS_IOC_FILE_EXTENT_SAME: u32 = 3222836278;
-pub const RTC_PIE_ON: u32 = 536899589;
-pub const BTRFS_IOC_SCAN_DEV: u32 = 2415956996;
-pub const PPPIOCXFERUNIT: u32 = 536900686;
-pub const WDIOC_GETTIMEOUT: u32 = 1074026247;
-pub const BTRFS_IOC_SET_RECEIVED_SUBVOL: u32 = 3234370597;
-pub const DFL_FPGA_PORT_ERR_SET_IRQ: u32 = 2148054598;
-pub const FBIO_WAITFORVSYNC: u32 = 2147763744;
-pub const RTC_PIE_OFF: u32 = 536899590;
-pub const EVIOCGRAB: u32 = 2147763600;
-pub const PMU_IOC_SET_BACKLIGHT: u32 = 2148024834;
-pub const EVIOCGREP: u32 = 1074283779;
-pub const PERF_EVENT_IOC_MODIFY_ATTRIBUTES: u32 = 2148017163;
-pub const UFFDIO_CONTINUE: u32 = 3223366151;
-pub const VDUSE_GET_API_VERSION: u32 = 1074299136;
-pub const RTC_RD_TIME: u32 = 1076129801;
-pub const FDMSGOFF: u32 = 536871494;
-pub const IPMICTL_REGISTER_FOR_CMD_CHANS: u32 = 1074555164;
-pub const CAPI_GET_ERRCODE: u32 = 1073890081;
-pub const PCITEST_SET_IRQTYPE: u32 = 2147766280;
-pub const VIDIOC_SUBDEV_S_EDID: u32 = 3223868969;
-pub const MATROXFB_SET_OUTPUT_MODE: u32 = 2148036346;
-pub const RIO_DEV_ADD: u32 = 2149608727;
-pub const VIDIOC_ENUM_FREQ_BANDS: u32 = 3225441893;
-pub const FBIO_RADEON_SET_MIRROR: u32 = 2148024324;
-pub const PCITEST_GET_IRQTYPE: u32 = 536891401;
-pub const JSIOCGVERSION: u32 = 1074031105;
-pub const SONYPI_IOCSBLUE: u32 = 2147579401;
-pub const SNAPSHOT_PREF_IMAGE_SIZE: u32 = 536883986;
-pub const F2FS_IOC_GET_FEATURES: u32 = 1074066700;
-pub const SCIF_REG: u32 = 3223876360;
-pub const NILFS_IOCTL_CLEAN_SEGMENTS: u32 = 2155376264;
-pub const FW_CDEV_IOC_INITIATE_BUS_RESET: u32 = 2147754757;
-pub const RIO_WAIT_FOR_ASYNC: u32 = 2148035862;
-pub const VHOST_SET_VRING_NUM: u32 = 2148052752;
-pub const AUTOFS_DEV_IOCTL_PROTOVER: u32 = 3222836082;
-pub const RIO_FREE_DMA: u32 = 2148035860;
-pub const MGSL_IOCRXENABLE: u32 = 536898821;
-pub const IOCTL_VM_SOCKETS_GET_LOCAL_CID: u32 = 536872889;
-pub const IPMICTL_SET_TIMING_PARMS_CMD: u32 = 1074293014;
-pub const PPPIOCGL2TPSTATS: u32 = 1078490166;
-pub const PERF_EVENT_IOC_PERIOD: u32 = 2148017156;
-pub const PTP_PIN_SETFUNC2: u32 = 2153790736;
-pub const CHIOEXCHANGE: u32 = 2149344002;
-pub const NILFS_IOCTL_GET_SUINFO: u32 = 1075342980;
-pub const CEC_DQEVENT: u32 = 3226493191;
-pub const UI_SET_SWBIT: u32 = 2147767661;
-pub const VHOST_VDPA_SET_CONFIG: u32 = 2148052852;
-pub const TUNSETIFF: u32 = 2147767498;
-pub const CHIOPOSITION: u32 = 2148295427;
-pub const IPMICTL_SET_MAINTENANCE_MODE_CMD: u32 = 2147772703;
-pub const BTRFS_IOC_DEFAULT_SUBVOL: u32 = 2148045843;
-pub const RIO_UNMAP_OUTBOUND: u32 = 2150133008;
-pub const CAPI_CLR_FLAGS: u32 = 1074021157;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE: u32 = 2149065487;
-pub const MATROXFB_GET_OUTPUT_CONNECTION: u32 = 1074294520;
-pub const EVIOCSMASK: u32 = 2148550035;
-pub const BTRFS_IOC_FORGET_DEV: u32 = 2415956997;
-pub const CXL_MEM_QUERY_COMMANDS: u32 = 1074318849;
-pub const CEC_S_MODE: u32 = 2147770633;
-pub const MGSL_IOCSIF: u32 = 536898826;
-pub const SWITCHTEC_IOCTL_PFF_TO_PORT: u32 = 3222034244;
-pub const PPSETMODE: u32 = 2147774592;
-pub const VFIO_DEVICE_SET_IRQS: u32 = 536886126;
-pub const VIDIOC_PREPARE_BUF: u32 = 3227014749;
-pub const CEC_ADAP_G_CONNECTOR_INFO: u32 = 1078223114;
-pub const IOC_OPAL_WRITE_SHADOW_MBR: u32 = 2166386922;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL: u32 = 3225441867;
-pub const UDMABUF_CREATE: u32 = 2149086530;
-pub const SONET_CLRDIAG: u32 = 3221512467;
-pub const PHN_SET_REG: u32 = 2148036609;
-pub const RNDADDTOENTCNT: u32 = 2147766785;
-pub const VBG_IOCTL_CHECK_BALLOON: u32 = 3223344657;
-pub const VIDIOC_OMAP3ISP_STAT_REQ: u32 = 3223869126;
-pub const PPS_FETCH: u32 = 3221778596;
-pub const RTC_AIE_OFF: u32 = 536899586;
-pub const VFIO_GROUP_SET_CONTAINER: u32 = 536886120;
-pub const FW_CDEV_IOC_RECEIVE_PHY_PACKETS: u32 = 2148016918;
-pub const VFIO_IOMMU_SPAPR_TCE_REMOVE: u32 = 536886136;
-pub const VFIO_IOMMU_GET_INFO: u32 = 536886128;
-pub const DM_DEV_SUSPEND: u32 = 3241737478;
-pub const F2FS_IOC_GET_COMPRESS_OPTION: u32 = 1073935637;
-pub const FW_CDEV_IOC_STOP_ISO: u32 = 2147754763;
-pub const GPIO_V2_GET_LINEINFO_IOCTL: u32 = 3238048773;
-pub const ATMMPC_CTRL: u32 = 536895960;
-pub const PPPIOCSXASYNCMAP: u32 = 2149610575;
-pub const CHIOGSTATUS: u32 = 2148557576;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE: u32 = 3222807309;
-pub const RIO_MPORT_MAINT_PORT_IDX_GET: u32 = 1074031875;
-pub const CAPI_SET_FLAGS: u32 = 1074021156;
-pub const VFIO_GROUP_GET_DEVICE_FD: u32 = 536886122;
-pub const VHOST_SET_MEM_TABLE: u32 = 2148052739;
-pub const MATROXFB_SET_OUTPUT_CONNECTION: u32 = 2148036344;
-pub const DFL_FPGA_PORT_GET_REGION_INFO: u32 = 536917570;
-pub const VHOST_GET_FEATURES: u32 = 1074310912;
-pub const LIRC_GET_REC_RESOLUTION: u32 = 1074030855;
-pub const PACKET_CTRL_CMD: u32 = 3222820865;
-pub const LIRC_SET_TRANSMITTER_MASK: u32 = 2147772695;
-pub const BTRFS_IOC_ADD_DEV: u32 = 2415957002;
-pub const JSIOCGCORR: u32 = 1076128290;
-pub const VIDIOC_G_FMT: u32 = 3234878980;
-pub const RTC_EPOCH_SET: u32 = 2148036622;
-pub const CAPI_GET_PROFILE: u32 = 3225436937;
-pub const ATM_GETLOOP: u32 = 2148557138;
-pub const SCIF_LISTEN: u32 = 2147775234;
-pub const NBD_CLEAR_QUE: u32 = 536914693;
-pub const F2FS_IOC_MOVE_RANGE: u32 = 3223385353;
-pub const LIRC_GET_LENGTH: u32 = 1074030863;
-pub const I8K_SET_FAN: u32 = 3221776775;
-pub const FDSETMAXERRS: u32 = 2148794956;
-pub const VIDIOC_SUBDEV_QUERYCAP: u32 = 1077958144;
-pub const SNAPSHOT_SET_SWAP_AREA: u32 = 2148283149;
-pub const LIRC_GET_REC_TIMEOUT: u32 = 1074030884;
-pub const EVIOCRMFF: u32 = 2147763585;
-pub const GPIO_GET_LINEEVENT_IOCTL: u32 = 3224417284;
-pub const PPRDATA: u32 = 1073836165;
-pub const RIO_MPORT_GET_PROPERTIES: u32 = 1076915460;
-pub const TUNSETVNETHDRSZ: u32 = 2147767512;
-pub const GPIO_GET_LINEINFO_IOCTL: u32 = 3225990146;
-pub const GSMIOC_GETCONF: u32 = 1078740736;
-pub const LIRC_GET_SEND_MODE: u32 = 1074030849;
-pub const PPPIOCSACTIVE: u32 = 2148561990;
-pub const SIOCGSTAMPNS_NEW: u32 = 1074825479;
-pub const IPMICTL_RECEIVE_MSG: u32 = 3224398092;
-pub const LIRC_SET_SEND_DUTY_CYCLE: u32 = 2147772693;
-pub const UI_END_FF_ERASE: u32 = 2148292043;
-pub const SWITCHTEC_IOCTL_FLASH_PART_INFO: u32 = 3222296385;
-pub const FW_CDEV_IOC_SEND_PHY_PACKET: u32 = 3222807317;
-pub const NBD_SET_FLAGS: u32 = 536914698;
-pub const VFIO_DEVICE_GET_REGION_INFO: u32 = 536886124;
-pub const REISERFS_IOC_UNPACK: u32 = 2148060417;
-pub const FW_CDEV_IOC_REMOVE_DESCRIPTOR: u32 = 2147754759;
-pub const RIO_SET_EVENT_MASK: u32 = 2147773709;
-pub const SNAPSHOT_ALLOC_SWAP_PAGE: u32 = 1074279188;
-pub const VDUSE_VQ_INJECT_IRQ: u32 = 2147778839;
-pub const I2OPASSTHRU: u32 = 1074817292;
-pub const IOC_OPAL_SET_PW: u32 = 2183164128;
-pub const FSI_SCOM_READ: u32 = 3223352065;
-pub const VHOST_VDPA_GET_DEVICE_ID: u32 = 1074048880;
-pub const VIDIOC_QBUF: u32 = 3227014671;
-pub const VIDIOC_S_TUNER: u32 = 2153010718;
-pub const TUNGETVNETHDRSZ: u32 = 1074025687;
-pub const CAPI_NCCI_GETUNIT: u32 = 1074021159;
-pub const DFL_FPGA_PORT_UINT_GET_IRQ_NUM: u32 = 1074050631;
-pub const VIDIOC_OMAP3ISP_STAT_EN: u32 = 3221771975;
-pub const GPIO_V2_LINE_SET_CONFIG_IOCTL: u32 = 3239097357;
-pub const TEE_IOC_VERSION: u32 = 1074570240;
-pub const VIDIOC_LOG_STATUS: u32 = 536892998;
-pub const IPMICTL_SEND_COMMAND_SETTIME: u32 = 1076914453;
-pub const VHOST_SET_LOG_FD: u32 = 2147790599;
-pub const SCIF_SEND: u32 = 3222827782;
-pub const VIDIOC_SUBDEV_G_FMT: u32 = 3227014660;
-pub const NS_ADJBUFLEV: u32 = 536895843;
-pub const VIDIOC_DBG_S_REGISTER: u32 = 2151175759;
-pub const NILFS_IOCTL_RESIZE: u32 = 2148036235;
-pub const PHN_GETREG: u32 = 3221778437;
-pub const I2OSWDL: u32 = 3224398085;
-pub const VBG_IOCTL_VMMDEV_REQUEST_BIG: u32 = 536892931;
-pub const JSIOCGBUTTONS: u32 = 1073834514;
-pub const VFIO_IOMMU_ENABLE: u32 = 536886131;
-pub const DM_DEV_RENAME: u32 = 3241737477;
-pub const MEDIA_IOC_SETUP_LINK: u32 = 3224665091;
-pub const VIDIOC_ENUMOUTPUT: u32 = 3225966128;
-pub const STP_POLICY_ID_SET: u32 = 3222283520;
-pub const VHOST_VDPA_SET_CONFIG_CALL: u32 = 2147790711;
-pub const VIDIOC_SUBDEV_G_CROP: u32 = 3224917563;
-pub const VIDIOC_S_CROP: u32 = 2148816444;
-pub const WDIOC_GETTEMP: u32 = 1074026243;
-pub const IOC_OPAL_ADD_USR_TO_LR: u32 = 2165862628;
-pub const UI_SET_LEDBIT: u32 = 2147767657;
-pub const NBD_SET_SOCK: u32 = 536914688;
-pub const BTRFS_IOC_SNAP_DESTROY_V2: u32 = 2415957055;
-pub const HIDIOCGCOLLECTIONINFO: u32 = 3222292497;
-pub const I2OSWUL: u32 = 3224398086;
-pub const IOCTL_MEI_NOTIFY_GET: u32 = 1074022403;
-pub const FDFMTTRK: u32 = 2148270664;
-pub const MMTIMER_GETBITS: u32 = 536898820;
-pub const VIDIOC_ENUMSTD: u32 = 3225966105;
-pub const VHOST_GET_VRING_BASE: u32 = 3221794578;
-pub const VFIO_DEVICE_IOEVENTFD: u32 = 536886132;
-pub const ATMARP_SETENTRY: u32 = 536895971;
-pub const CCISS_REVALIDVOLS: u32 = 536887818;
-pub const MGSL_IOCLOOPTXDONE: u32 = 536898825;
-pub const RTC_VL_READ: u32 = 1074032659;
-pub const ND_IOCTL_ARS_STATUS: u32 = 3224391171;
-pub const RIO_DEV_DEL: u32 = 2149608728;
-pub const VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES: u32 = 3223606797;
-pub const VIDIOC_SUBDEV_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const SONYPI_IOCSFAN: u32 = 2147579403;
-pub const SPIOCSTYPE: u32 = 2148036865;
-pub const IPMICTL_REGISTER_FOR_CMD: u32 = 1073899790;
-pub const I8K_GET_FAN: u32 = 3221776774;
-pub const TUNGETVNETBE: u32 = 1074025695;
-pub const AUTOFS_DEV_IOCTL_FAIL: u32 = 3222836087;
-pub const UI_END_FF_UPLOAD: u32 = 2154321353;
-pub const TOSH_SMM: u32 = 3222828176;
-pub const SONYPI_IOCGBAT2REM: u32 = 1073903109;
-pub const F2FS_IOC_GET_COMPRESS_BLOCKS: u32 = 1074328849;
-pub const PPPIOCSNPMODE: u32 = 2148037707;
-pub const USBDEVFS_CONTROL: u32 = 3222820096;
-pub const HIDIOCGUSAGE: u32 = 3222816779;
-pub const TUNSETTXFILTER: u32 = 2147767505;
-pub const TUNGETVNETLE: u32 = 1074025693;
-pub const VIDIOC_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const BTRFS_IOC_INO_PATHS: u32 = 3224933411;
-pub const MGSL_IOCGXSYNC: u32 = 536898836;
-pub const HIDIOCGFIELDINFO: u32 = 3224913930;
-pub const VIDIOC_SUBDEV_G_STD: u32 = 1074288151;
-pub const I2OVALIDATE: u32 = 1074030856;
-pub const VIDIOC_TRY_ENCODER_CMD: u32 = 3223869006;
-pub const NILFS_IOCTL_GET_CPINFO: u32 = 1075342978;
-pub const VIDIOC_G_FREQUENCY: u32 = 3224131128;
-pub const VFAT_IOCTL_READDIR_SHORT: u32 = 1110471170;
-pub const ND_IOCTL_GET_CONFIG_DATA: u32 = 3222031877;
-pub const F2FS_IOC_RESERVE_COMPRESS_BLOCKS: u32 = 1074328851;
-pub const FDGETDRVSTAT: u32 = 1078985234;
-pub const SYNC_IOC_MERGE: u32 = 3224387075;
-pub const VIDIOC_S_DV_TIMINGS: u32 = 3229898327;
-pub const PPPIOCBRIDGECHAN: u32 = 2147775541;
-pub const LIRC_SET_SEND_MODE: u32 = 2147772689;
-pub const RIO_ENABLE_PORTWRITE_RANGE: u32 = 2148560139;
-pub const ATM_GETTYPE: u32 = 2148557188;
-pub const PHN_GETREGS: u32 = 3223875591;
-pub const FDSETEMSGTRESH: u32 = 536871498;
-pub const NILFS_IOCTL_GET_VINFO: u32 = 3222826630;
-pub const MGSL_IOCWAITEVENT: u32 = 3221515528;
-pub const CAPI_INSTALLED: u32 = 1073890082;
-pub const EVIOCGMASK: u32 = 1074808210;
-pub const BTRFS_IOC_SUBVOL_GETFLAGS: u32 = 1074304025;
-pub const FSL_HV_IOCTL_PARTITION_GET_STATUS: u32 = 3222056706;
-pub const MEDIA_IOC_ENUM_ENTITIES: u32 = 3238034433;
-pub const GSMIOC_GETFIRST: u32 = 1074022148;
-pub const FW_CDEV_IOC_FLUSH_ISO: u32 = 2147754776;
-pub const VIDIOC_DBG_G_CHIP_INFO: u32 = 3234354790;
-pub const F2FS_IOC_RELEASE_VOLATILE_WRITE: u32 = 536933636;
-pub const CAPI_GET_SERIAL: u32 = 3221504776;
-pub const FDSETDRVPRM: u32 = 2155872912;
-pub const IOC_OPAL_SAVE: u32 = 2165862620;
-pub const VIDIOC_G_DV_TIMINGS: u32 = 3229898328;
-pub const TUNSETIFINDEX: u32 = 2147767514;
-pub const CCISS_SETINTINFO: u32 = 2148024835;
-pub const CM_IOSDBGLVL: u32 = 2148033530;
-pub const RTC_VL_CLR: u32 = 536899604;
-pub const VIDIOC_REQBUFS: u32 = 3222558216;
-pub const USBDEVFS_REAPURBNDELAY32: u32 = 2147767565;
-pub const TEE_IOC_SHM_REGISTER: u32 = 3222840329;
-pub const USBDEVFS_SETCONFIGURATION: u32 = 1074025733;
-pub const CCISS_GETNODENAME: u32 = 1074807300;
-pub const VIDIOC_SUBDEV_S_FRAME_INTERVAL: u32 = 3224393238;
-pub const VIDIOC_ENUM_FRAMESIZES: u32 = 3224131146;
-pub const VFIO_DEVICE_PCI_HOT_RESET: u32 = 536886129;
-pub const FW_CDEV_IOC_SEND_BROADCAST_REQUEST: u32 = 2150114066;
-pub const LPSETTIMEOUT_NEW: u32 = 2148533775;
-pub const RIO_CM_MPORT_GET_LIST: u32 = 3221512971;
-pub const FW_CDEV_IOC_QUEUE_ISO: u32 = 3222807305;
-pub const FDRAWCMD: u32 = 536871512;
-pub const SCIF_UNREG: u32 = 3222303497;
-pub const PPPIOCGIDLE64: u32 = 1074820159;
-pub const USBDEVFS_RELEASEINTERFACE: u32 = 1074025744;
-pub const VIDIOC_CROPCAP: u32 = 3224131130;
-pub const DFL_FPGA_PORT_GET_INFO: u32 = 536917569;
-pub const PHN_SET_REGS: u32 = 2148036611;
-pub const ATMLEC_DATA: u32 = 536895953;
-pub const PPPOEIOCDFWD: u32 = 536916225;
-pub const VIDIOC_S_SELECTION: u32 = 3225441887;
-pub const SNAPSHOT_FREE_SWAP_PAGES: u32 = 536883977;
-pub const BTRFS_IOC_LOGICAL_INO: u32 = 3224933412;
-pub const VIDIOC_S_CTRL: u32 = 3221771804;
-pub const ZATM_SETPOOL: u32 = 2148557155;
-pub const MTIOCPOS: u32 = 1074294019;
-pub const PMU_IOC_SLEEP: u32 = 536887808;
-pub const AUTOFS_DEV_IOCTL_PROTOSUBVER: u32 = 3222836083;
-pub const VBG_IOCTL_CHANGE_FILTER_MASK: u32 = 3223344652;
-pub const NILFS_IOCTL_GET_SUSTAT: u32 = 1076915845;
-pub const VIDIOC_QUERYCAP: u32 = 1080579584;
-pub const HPET_INFO: u32 = 1075341315;
-pub const VIDIOC_AM437X_CCDC_CFG: u32 = 2148030145;
-pub const DM_LIST_DEVICES: u32 = 3241737474;
-pub const TUNSETOWNER: u32 = 2147767500;
-pub const VBG_IOCTL_CHANGE_GUEST_CAPABILITIES: u32 = 3223344654;
-pub const RNDADDENTROPY: u32 = 2148028931;
-pub const USBDEVFS_RESET: u32 = 536892692;
-pub const BTRFS_IOC_SUBVOL_CREATE: u32 = 2415957006;
-pub const USBDEVFS_FORBID_SUSPEND: u32 = 536892705;
-pub const FDGETDRVTYP: u32 = 1074790927;
-pub const PPWCONTROL: u32 = 2147577988;
-pub const VIDIOC_ENUM_FRAMEINTERVALS: u32 = 3224655435;
-pub const KCOV_DISABLE: u32 = 536896357;
-pub const IOC_OPAL_ACTIVATE_LSP: u32 = 2165862623;
-pub const VHOST_VDPA_GET_IOVA_RANGE: u32 = 1074835320;
-pub const PPPIOCSPASS: u32 = 2148561991;
-pub const RIO_CM_CHAN_CONNECT: u32 = 2148033288;
-pub const I2OSWDEL: u32 = 3224398087;
-pub const FS_IOC_SET_ENCRYPTION_POLICY: u32 = 1074554387;
-pub const IOC_OPAL_MBR_DONE: u32 = 2165338345;
-pub const PPPIOCSMAXCID: u32 = 2147775569;
-pub const PPSETPHASE: u32 = 2147774612;
-pub const VHOST_VDPA_SET_VRING_ENABLE: u32 = 2148052853;
-pub const USBDEVFS_GET_SPEED: u32 = 536892703;
-pub const SONET_GETFRAMING: u32 = 1074028822;
-pub const VIDIOC_QUERYBUF: u32 = 3227014665;
-pub const VIDIOC_S_EDID: u32 = 3223868969;
-pub const BTRFS_IOC_QGROUP_ASSIGN: u32 = 2149094441;
-pub const PPS_GETCAP: u32 = 1074294947;
-pub const SNAPSHOT_PLATFORM_SUPPORT: u32 = 536883983;
-pub const LIRC_SET_REC_TIMEOUT_REPORTS: u32 = 2147772697;
-pub const SCIF_GET_NODEIDS: u32 = 3222827790;
-pub const NBD_DISCONNECT: u32 = 536914696;
-pub const VIDIOC_SUBDEV_G_FRAME_INTERVAL: u32 = 3224393237;
-pub const VFIO_IOMMU_DISABLE: u32 = 536886132;
-pub const SNAPSHOT_CREATE_IMAGE: u32 = 2147758865;
-pub const SNAPSHOT_POWER_OFF: u32 = 536883984;
-pub const APM_IOC_STANDBY: u32 = 536887553;
-pub const PPPIOCGUNIT: u32 = 1074033750;
-pub const AUTOFS_IOC_EXPIRE_MULTI: u32 = 2147783526;
-pub const SCIF_BIND: u32 = 3221779201;
-pub const IOC_WATCH_QUEUE_SET_SIZE: u32 = 536893280;
-pub const NILFS_IOCTL_CHANGE_CPMODE: u32 = 2148560512;
-pub const IOC_OPAL_LOCK_UNLOCK: u32 = 2165862621;
-pub const F2FS_IOC_SET_PIN_FILE: u32 = 2147808525;
-pub const PPPIOCGRASYNCMAP: u32 = 1074033749;
-pub const MMTIMER_MMAPAVAIL: u32 = 536898822;
-pub const I2OPASSTHRU32: u32 = 1074293004;
-pub const DFL_FPGA_FME_PORT_RELEASE: u32 = 2147792513;
-pub const VIDIOC_SUBDEV_QUERY_DV_TIMINGS: u32 = 1082414691;
-pub const UI_SET_SNDBIT: u32 = 2147767658;
-pub const VIDIOC_G_AUDOUT: u32 = 1077171761;
-pub const RTC_PLL_SET: u32 = 2149609490;
-pub const VIDIOC_ENUMAUDIO: u32 = 3224655425;
-pub const AUTOFS_DEV_IOCTL_TIMEOUT: u32 = 3222836090;
-pub const VBG_IOCTL_DRIVER_VERSION_INFO: u32 = 3224131072;
-pub const VHOST_SCSI_GET_EVENTS_MISSED: u32 = 2147790660;
-pub const VHOST_SET_VRING_ADDR: u32 = 2150149905;
-pub const VDUSE_CREATE_DEV: u32 = 2169536770;
-pub const FDFLUSH: u32 = 536871499;
-pub const VBG_IOCTL_WAIT_FOR_EVENTS: u32 = 3223344650;
-pub const DFL_FPGA_FME_ERR_SET_IRQ: u32 = 2148054660;
-pub const F2FS_IOC_GET_PIN_FILE: u32 = 1074066702;
-pub const SCIF_CONNECT: u32 = 3221779203;
-pub const BLKREPORTZONE: u32 = 3222278786;
-pub const AUTOFS_IOC_ASKUMOUNT: u32 = 1074041712;
-pub const ATM_ADDPARTY: u32 = 2148557300;
-pub const FDSETPRM: u32 = 2149581378;
-pub const ATM_GETSTATZ: u32 = 2148557137;
-pub const ISST_IF_MSR_COMMAND: u32 = 3221814788;
-pub const BTRFS_IOC_GET_SUBVOL_INFO: u32 = 1106809916;
-pub const VIDIOC_UNSUBSCRIBE_EVENT: u32 = 2149602907;
-pub const SEV_ISSUE_CMD: u32 = 3222295296;
-pub const GPIOHANDLE_SET_LINE_VALUES_IOCTL: u32 = 3225465865;
-pub const PCITEST_COPY: u32 = 2148028422;
-pub const IPMICTL_GET_MY_ADDRESS_CMD: u32 = 1074030866;
-pub const CHIOGPICKER: u32 = 1074029316;
-pub const CAPI_NCCI_OPENCOUNT: u32 = 1074021158;
-pub const CXL_MEM_SEND_COMMAND: u32 = 3224423938;
-pub const PERF_EVENT_IOC_SET_FILTER: u32 = 2148017158;
-pub const IOC_OPAL_REVERT_TPR: u32 = 2164814050;
-pub const CHIOGVPARAMS: u32 = 1081107219;
-pub const PTP_PEROUT_REQUEST: u32 = 2151169283;
-pub const FSI_SCOM_CHECK: u32 = 1074033408;
-pub const RTC_IRQP_READ: u32 = 1074294795;
-pub const RIO_MPORT_MAINT_READ_LOCAL: u32 = 1075342597;
-pub const HIDIOCGRDESCSIZE: u32 = 1074022401;
-pub const UI_GET_VERSION: u32 = 1074025773;
-pub const NILFS_IOCTL_GET_CPSTAT: u32 = 1075342979;
-pub const CCISS_GETBUSTYPES: u32 = 1074020871;
-pub const VFIO_IOMMU_SPAPR_TCE_CREATE: u32 = 536886135;
-pub const VIDIOC_EXPBUF: u32 = 3225441808;
-pub const UI_SET_RELBIT: u32 = 2147767654;
-pub const VFIO_SET_IOMMU: u32 = 536886118;
-pub const VIDIOC_S_MODULATOR: u32 = 2151962167;
-pub const TUNGETFILTER: u32 = 1074812123;
-pub const MEYEIOC_SYNC: u32 = 3221518019;
-pub const CCISS_SETNODENAME: u32 = 2148549125;
-pub const FBIO_GETCONTROL2: u32 = 1074284169;
-pub const TUNSETDEBUG: u32 = 2147767497;
-pub const DM_DEV_REMOVE: u32 = 3241737476;
-pub const HIDIOCSUSAGES: u32 = 2417772564;
-pub const FS_IOC_ADD_ENCRYPTION_KEY: u32 = 3226494487;
-pub const FBIOGET_VBLANK: u32 = 1075856914;
-pub const ATM_GETSTAT: u32 = 2148557136;
-pub const VIDIOC_G_JPEGCOMP: u32 = 1082938941;
-pub const TUNATTACHFILTER: u32 = 2148553941;
-pub const UI_SET_ABSBIT: u32 = 2147767655;
-pub const DFL_FPGA_PORT_ERR_GET_IRQ_NUM: u32 = 1074050629;
-pub const USBDEVFS_REAPURB32: u32 = 2147767564;
-pub const BTRFS_IOC_TRANS_END: u32 = 536908807;
-pub const CAPI_REGISTER: u32 = 2148287233;
-pub const F2FS_IOC_COMPRESS_FILE: u32 = 536933656;
-pub const USBDEVFS_DISCARDURB: u32 = 536892683;
-pub const HE_GET_REG: u32 = 2148557152;
-pub const ATM_SETLOOP: u32 = 2148557139;
-pub const ATMSIGD_CTRL: u32 = 536895984;
-pub const CIOC_KERNEL_VERSION: u32 = 3221775114;
-pub const BTRFS_IOC_CLONE_RANGE: u32 = 2149618701;
-pub const SNAPSHOT_UNFREEZE: u32 = 536883970;
-pub const F2FS_IOC_START_VOLATILE_WRITE: u32 = 536933635;
-pub const PMU_IOC_HAS_ADB: u32 = 1074283012;
-pub const I2OGETIOPS: u32 = 1075865856;
-pub const VIDIOC_S_FBUF: u32 = 2150651403;
-pub const PPRCONTROL: u32 = 1073836163;
-pub const CHIOSPICKER: u32 = 2147771141;
-pub const VFIO_IOMMU_SPAPR_REGISTER_MEMORY: u32 = 536886133;
-pub const TUNGETSNDBUF: u32 = 1074025683;
-pub const GSMIOC_SETCONF: u32 = 2152482561;
-pub const IOC_PR_PREEMPT: u32 = 2149085387;
-pub const KCOV_INIT_TRACE: u32 = 1074291457;
-pub const SONYPI_IOCGBAT1CAP: u32 = 1073903106;
-pub const SWITCHTEC_IOCTL_FLASH_INFO: u32 = 1074812736;
-pub const MTIOCTOP: u32 = 2148035841;
-pub const VHOST_VDPA_SET_STATUS: u32 = 2147594098;
-pub const VHOST_SCSI_SET_EVENTS_MISSED: u32 = 2147790659;
-pub const VFIO_IOMMU_DIRTY_PAGES: u32 = 536886133;
-pub const BTRFS_IOC_SCRUB_PROGRESS: u32 = 3288372253;
-pub const PPPIOCGMRU: u32 = 1074033747;
-pub const BTRFS_IOC_DEV_REPLACE: u32 = 3391657013;
-pub const PPPIOCGFLAGS: u32 = 1074033754;
-pub const NILFS_IOCTL_SET_SUINFO: u32 = 2149084813;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER2: u32 = 3222807316;
-pub const ATM_DELLECSADDR: u32 = 2148557199;
-pub const FW_CDEV_IOC_GET_SPEED: u32 = 536879889;
-pub const PPPIOCGIDLE32: u32 = 1074295871;
-pub const VFIO_DEVICE_RESET: u32 = 536886127;
-pub const GPIO_GET_LINEINFO_UNWATCH_IOCTL: u32 = 3221533708;
-pub const WDIOC_GETSTATUS: u32 = 1074026241;
-pub const BTRFS_IOC_SET_FEATURES: u32 = 2150667321;
-pub const IOCTL_MEI_CONNECT_CLIENT: u32 = 3222292481;
-pub const VIDIOC_OMAP3ISP_AEWB_CFG: u32 = 3223344835;
-pub const PCITEST_READ: u32 = 2148028421;
-pub const VFIO_GROUP_GET_STATUS: u32 = 536886119;
-pub const MATROXFB_GET_ALL_OUTPUTS: u32 = 1074294523;
-pub const USBDEVFS_CLEAR_HALT: u32 = 1074025749;
-pub const VIDIOC_DECODER_CMD: u32 = 3225966176;
-pub const VIDIOC_G_AUDIO: u32 = 1077171745;
-pub const CCISS_RESCANDISK: u32 = 536887824;
-pub const RIO_DISABLE_PORTWRITE_RANGE: u32 = 2148560140;
-pub const IOC_OPAL_SECURE_ERASE_LR: u32 = 2165338343;
-pub const USBDEVFS_REAPURB: u32 = 2148029708;
-pub const DFL_FPGA_CHECK_EXTENSION: u32 = 536917505;
-pub const AUTOFS_IOC_PROTOVER: u32 = 1074041699;
-pub const FSL_HV_IOCTL_MEMCPY: u32 = 3223891717;
-pub const BTRFS_IOC_GET_FEATURES: u32 = 1075352633;
-pub const PCITEST_MSIX: u32 = 2147766279;
-pub const BTRFS_IOC_DEFRAG_RANGE: u32 = 2150667280;
-pub const UI_BEGIN_FF_ERASE: u32 = 3222033866;
-pub const DM_GET_TARGET_VERSION: u32 = 3241737489;
-pub const PPPIOCGIDLE: u32 = 1074820159;
-pub const NVRAM_SETCKS: u32 = 536899649;
-pub const WDIOC_GETSUPPORT: u32 = 1076385536;
-pub const GSMIOC_ENABLE_NET: u32 = 2150909698;
-pub const GPIO_GET_CHIPINFO_IOCTL: u32 = 1078244353;
-pub const NE_ADD_VCPU: u32 = 3221532193;
-pub const EVIOCSKEYCODE_V2: u32 = 2150122756;
-pub const PTP_SYS_OFFSET_EXTENDED2: u32 = 3300932882;
-pub const SCIF_FENCE_WAIT: u32 = 3221517072;
-pub const RIO_TRANSFER: u32 = 3222826261;
-pub const FSL_HV_IOCTL_DOORBELL: u32 = 3221794566;
-pub const RIO_MPORT_MAINT_WRITE_LOCAL: u32 = 2149084422;
-pub const I2OEVTREG: u32 = 2148296970;
-pub const I2OPARMGET: u32 = 3223873796;
-pub const EVIOCGID: u32 = 1074283778;
-pub const BTRFS_IOC_QGROUP_CREATE: u32 = 2148570154;
-pub const AUTOFS_DEV_IOCTL_SETPIPEFD: u32 = 3222836088;
-pub const VIDIOC_S_PARM: u32 = 3234616854;
-pub const TUNSETSTEERINGEBPF: u32 = 1074025696;
-pub const ATM_GETNAMES: u32 = 2148557187;
-pub const VIDIOC_QUERYMENU: u32 = 3224131109;
-pub const DFL_FPGA_PORT_DMA_UNMAP: u32 = 536917572;
-pub const I2OLCTGET: u32 = 3222825218;
-pub const FS_IOC_GET_ENCRYPTION_PWSALT: u32 = 2148558356;
-pub const NS_SETBUFLEV: u32 = 2148557154;
-pub const BLKCLOSEZONE: u32 = 2148536967;
-pub const SONET_GETFRSENSE: u32 = 1074159895;
-pub const UI_SET_EVBIT: u32 = 2147767652;
-pub const DM_LIST_VERSIONS: u32 = 3241737485;
-pub const HIDIOCGSTRING: u32 = 1090799620;
-pub const PPPIOCATTCHAN: u32 = 2147775544;
-pub const VDUSE_DEV_SET_CONFIG: u32 = 2148040978;
-pub const TUNGETFEATURES: u32 = 1074025679;
-pub const VFIO_GROUP_UNSET_CONTAINER: u32 = 536886121;
-pub const IPMICTL_SET_MY_ADDRESS_CMD: u32 = 1074030865;
-pub const CCISS_REGNEWDISK: u32 = 2147762701;
-pub const VIDIOC_QUERY_DV_TIMINGS: u32 = 1082414691;
-pub const PHN_SETREGS: u32 = 2150133768;
-pub const FAT_IOCTL_GET_ATTRIBUTES: u32 = 1074033168;
-pub const FSL_MC_SEND_MC_COMMAND: u32 = 3225440992;
-pub const TUNGETIFF: u32 = 1074025682;
-pub const PTP_CLOCK_GETCAPS2: u32 = 1079000330;
-pub const BTRFS_IOC_RESIZE: u32 = 2415956995;
-pub const VHOST_SET_VRING_ENDIAN: u32 = 2148052755;
-pub const PPS_KC_BIND: u32 = 2148036773;
-pub const F2FS_IOC_WRITE_CHECKPOINT: u32 = 536933639;
-pub const UI_SET_FFBIT: u32 = 2147767659;
-pub const IPMICTL_GET_MY_LUN_CMD: u32 = 1074030868;
-pub const CEC_ADAP_G_PHYS_ADDR: u32 = 1073897729;
-pub const CEC_G_MODE: u32 = 1074028808;
-pub const USBDEVFS_RESETEP: u32 = 1074025731;
-pub const MEDIA_REQUEST_IOC_QUEUE: u32 = 536902784;
-pub const USBDEVFS_ALLOC_STREAMS: u32 = 1074287900;
-pub const MGSL_IOCSXCTRL: u32 = 536898837;
-pub const MEDIA_IOC_G_TOPOLOGY: u32 = 3225975812;
-pub const PPPIOCUNBRIDGECHAN: u32 = 536900660;
-pub const F2FS_IOC_COMMIT_ATOMIC_WRITE: u32 = 536933634;
-pub const ISST_IF_GET_PLATFORM_INFO: u32 = 1074331136;
-pub const SCIF_FENCE_MARK: u32 = 3222303503;
-pub const USBDEVFS_RELEASE_PORT: u32 = 1074025753;
-pub const VFIO_CHECK_EXTENSION: u32 = 536886117;
-pub const BTRFS_IOC_QGROUP_LIMIT: u32 = 1076925483;
-pub const FAT_IOCTL_GET_VOLUME_ID: u32 = 1074033171;
-pub const UI_SET_PHYS: u32 = 2148029804;
-pub const FDWERRORGET: u32 = 1076363799;
-pub const VIDIOC_SUBDEV_G_EDID: u32 = 3223868968;
-pub const MGSL_IOCGSTATS: u32 = 536898823;
-pub const RPROC_SET_SHUTDOWN_ON_RELEASE: u32 = 2147792641;
-pub const SIOCGSTAMP_NEW: u32 = 1074825478;
-pub const RTC_WKALM_RD: u32 = 1076391952;
-pub const PHN_GET_REG: u32 = 3221778432;
-pub const DELL_WMI_SMBIOS_CMD: u32 = 3224655616;
-pub const PHN_NOT_OH: u32 = 536899588;
-pub const PPGETMODES: u32 = 1074032791;
-pub const CHIOGPARAMS: u32 = 1075077894;
-pub const VFIO_DEVICE_GET_GFX_DMABUF: u32 = 536886131;
-pub const VHOST_SET_VRING_BUSYLOOP_TIMEOUT: u32 = 2148052771;
-pub const VIDIOC_SUBDEV_G_SELECTION: u32 = 3225441853;
-pub const BTRFS_IOC_RM_DEV_V2: u32 = 2415957050;
-pub const MGSL_IOCWAITGPIO: u32 = 3222301970;
-pub const PMU_IOC_CAN_SLEEP: u32 = 1074283013;
-pub const KCOV_ENABLE: u32 = 536896356;
-pub const BTRFS_IOC_CLONE: u32 = 2147783689;
-pub const F2FS_IOC_DEFRAGMENT: u32 = 3222336776;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE: u32 = 2147754766;
-pub const AGPIOC_ALLOCATE: u32 = 3221766406;
-pub const NE_SET_USER_MEMORY_REGION: u32 = 2149101091;
-pub const MGSL_IOCTXABORT: u32 = 536898822;
-pub const MGSL_IOCSGPIO: u32 = 2148560144;
-pub const LIRC_SET_REC_CARRIER: u32 = 2147772692;
-pub const F2FS_IOC_FLUSH_DEVICE: u32 = 2148070666;
-pub const SNAPSHOT_ATOMIC_RESTORE: u32 = 536883972;
-pub const RTC_UIE_OFF: u32 = 536899588;
-pub const BT_BMC_IOCTL_SMS_ATN: u32 = 536916224;
-pub const NVME_IOCTL_ID: u32 = 536890944;
-pub const NE_START_ENCLAVE: u32 = 3222318628;
-pub const VIDIOC_STREAMON: u32 = 2147767826;
-pub const FDPOLLDRVSTAT: u32 = 1078985235;
-pub const AUTOFS_DEV_IOCTL_READY: u32 = 3222836086;
-pub const VIDIOC_ENUMAUDOUT: u32 = 3224655426;
-pub const VIDIOC_SUBDEV_S_STD: u32 = 2148029976;
-pub const WDIOC_GETTIMELEFT: u32 = 1074026250;
-pub const ATM_GETLINKRATE: u32 = 2148557185;
-pub const RTC_WKALM_SET: u32 = 2150133775;
-pub const VHOST_GET_BACKEND_FEATURES: u32 = 1074310950;
-pub const ATMARP_ENCAP: u32 = 536895973;
-pub const CAPI_GET_FLAGS: u32 = 1074021155;
-pub const IPMICTL_SET_MY_CHANNEL_ADDRESS_CMD: u32 = 1074030872;
-pub const DFL_FPGA_FME_PORT_ASSIGN: u32 = 2147792514;
-pub const NS_GET_OWNER_UID: u32 = 536917764;
-pub const VIDIOC_OVERLAY: u32 = 2147767822;
-pub const BTRFS_IOC_WAIT_SYNC: u32 = 2148045846;
-pub const GPIOHANDLE_SET_CONFIG_IOCTL: u32 = 3226776586;
-pub const VHOST_GET_VRING_ENDIAN: u32 = 2148052756;
-pub const ATM_GETADDR: u32 = 2148557190;
-pub const PHN_GET_REGS: u32 = 3221778434;
-pub const AUTOFS_DEV_IOCTL_REQUESTER: u32 = 3222836091;
-pub const AUTOFS_DEV_IOCTL_EXPIRE: u32 = 3222836092;
-pub const SNAPSHOT_S2RAM: u32 = 536883979;
-pub const JSIOCSAXMAP: u32 = 2151705137;
-pub const F2FS_IOC_SET_COMPRESS_OPTION: u32 = 2147677462;
-pub const VBG_IOCTL_HGCM_DISCONNECT: u32 = 3223082501;
-pub const SCIF_FENCE_SIGNAL: u32 = 3223876369;
-pub const VFIO_DEVICE_GET_PCI_HOT_RESET_INFO: u32 = 536886128;
-pub const VIDIOC_SUBDEV_ENUM_MBUS_CODE: u32 = 3224393218;
-pub const MMTIMER_GETOFFSET: u32 = 536898816;
-pub const RIO_CM_CHAN_LISTEN: u32 = 2147640070;
-pub const ATM_SETSC: u32 = 2147770865;
-pub const F2FS_IOC_SHUTDOWN: u32 = 1074026621;
-pub const NVME_IOCTL_RESCAN: u32 = 536890950;
-pub const BLKOPENZONE: u32 = 2148536966;
-pub const DM_VERSION: u32 = 3241737472;
-pub const CEC_TRANSMIT: u32 = 3224920325;
-pub const FS_IOC_GET_ENCRYPTION_POLICY_EX: u32 = 3221841430;
-pub const SIOCMKCLIP: u32 = 536895968;
-pub const IPMI_BMC_IOCTL_CLEAR_SMS_ATN: u32 = 536916225;
-pub const HIDIOCGVERSION: u32 = 1074022401;
-pub const VIDIOC_S_INPUT: u32 = 3221509671;
-pub const VIDIOC_G_CROP: u32 = 3222558267;
-pub const LIRC_SET_WIDEBAND_RECEIVER: u32 = 2147772707;
-pub const EVIOCGEFFECTS: u32 = 1074021764;
-pub const UVCIOC_CTRL_QUERY: u32 = 3222304033;
-pub const IOC_OPAL_GENERIC_TABLE_RW: u32 = 2167959787;
-pub const FS_IOC_READ_VERITY_METADATA: u32 = 3223873159;
-pub const ND_IOCTL_SET_CONFIG_DATA: u32 = 3221769734;
-pub const USBDEVFS_GETDRIVER: u32 = 2164544776;
-pub const IDT77105_GETSTAT: u32 = 2148557106;
-pub const HIDIOCINITREPORT: u32 = 536889349;
-pub const VFIO_DEVICE_GET_INFO: u32 = 536886123;
-pub const RIO_CM_CHAN_RECEIVE: u32 = 3222299402;
-pub const RNDGETENTCNT: u32 = 1074024960;
-pub const PPPIOCNEWUNIT: u32 = 3221517374;
-pub const BTRFS_IOC_INO_LOOKUP: u32 = 3489698834;
-pub const FDRESET: u32 = 536871508;
-pub const IOC_PR_REGISTER: u32 = 2149085384;
-pub const HIDIOCSREPORT: u32 = 2148288520;
-pub const TEE_IOC_OPEN_SESSION: u32 = 1074832386;
-pub const TEE_IOC_SUPPL_RECV: u32 = 1074832390;
-pub const BTRFS_IOC_BALANCE_CTL: u32 = 2147783713;
-pub const GPIO_GET_LINEINFO_WATCH_IOCTL: u32 = 3225990155;
-pub const HIDIOCGRAWINFO: u32 = 1074284547;
-pub const PPPIOCSCOMPRESS: u32 = 2148561997;
-pub const USBDEVFS_CONNECTINFO: u32 = 2148029713;
-pub const BLKRESETZONE: u32 = 2148536963;
-pub const CHIOINITELEM: u32 = 536896273;
-pub const NILFS_IOCTL_SET_ALLOC_RANGE: u32 = 2148560524;
-pub const AUTOFS_DEV_IOCTL_CATATONIC: u32 = 3222836089;
-pub const RIO_MPORT_MAINT_HDID_SET: u32 = 2147642625;
-pub const PPGETPHASE: u32 = 1074032793;
-pub const USBDEVFS_DISCONNECT_CLAIM: u32 = 1091065115;
-pub const FDMSGON: u32 = 536871493;
-pub const VIDIOC_G_SLICED_VBI_CAP: u32 = 3228849733;
-pub const BTRFS_IOC_BALANCE_V2: u32 = 3288372256;
-pub const MEDIA_REQUEST_IOC_REINIT: u32 = 536902785;
-pub const IOC_OPAL_ERASE_LR: u32 = 2165338342;
-pub const FDFMTBEG: u32 = 536871495;
-pub const RNDRESEEDCRNG: u32 = 536891911;
-pub const ISST_IF_GET_PHY_ID: u32 = 3221814785;
-pub const TUNSETNOCSUM: u32 = 2147767496;
-pub const SONET_GETSTAT: u32 = 1076125968;
-pub const TFD_IOC_SET_TICKS: u32 = 2148029440;
-pub const PPDATADIR: u32 = 2147774608;
-pub const IOC_OPAL_ENABLE_DISABLE_MBR: u32 = 2165338341;
-pub const GPIO_V2_GET_LINE_IOCTL: u32 = 3260068871;
-pub const RIO_CM_CHAN_SEND: u32 = 2148557577;
-pub const PPWCTLONIRQ: u32 = 2147578002;
-pub const SONYPI_IOCGBRT: u32 = 1073837568;
-pub const IOC_PR_RELEASE: u32 = 2148561098;
-pub const PPCLRIRQ: u32 = 1074032787;
-pub const IPMICTL_SET_MY_CHANNEL_LUN_CMD: u32 = 1074030874;
-pub const MGSL_IOCSXSYNC: u32 = 536898835;
-pub const HPET_IE_OFF: u32 = 536897538;
-pub const IOC_OPAL_ACTIVATE_USR: u32 = 2165338337;
-pub const SONET_SETFRAMING: u32 = 2147770645;
-pub const PERF_EVENT_IOC_PAUSE_OUTPUT: u32 = 2147755017;
-pub const BTRFS_IOC_LOGICAL_INO_V2: u32 = 3224933435;
-pub const VBG_IOCTL_HGCM_CONNECT: u32 = 3231471108;
-pub const BLKFINISHZONE: u32 = 2148536968;
-pub const EVIOCREVOKE: u32 = 2147763601;
-pub const VFIO_DEVICE_FEATURE: u32 = 536886133;
-pub const CCISS_GETPCIINFO: u32 = 1074283009;
-pub const ISST_IF_MBOX_COMMAND: u32 = 3221814787;
-pub const SCIF_ACCEPTREQ: u32 = 3222303492;
-pub const PERF_EVENT_IOC_QUERY_BPF: u32 = 3221758986;
-pub const VIDIOC_STREAMOFF: u32 = 2147767827;
-pub const VDUSE_DESTROY_DEV: u32 = 2164293891;
-pub const FDGETFDCSTAT: u32 = 1076363797;
-pub const CM_IOCGATR: u32 = 3221775105;
-pub const VIDIOC_S_PRIORITY: u32 = 2147767876;
-pub const SNAPSHOT_FREEZE: u32 = 536883969;
-pub const VIDIOC_ENUMINPUT: u32 = 3226490394;
-pub const ZATM_GETPOOLZ: u32 = 2148557154;
-pub const RIO_DISABLE_DOORBELL_RANGE: u32 = 2148035850;
-pub const GPIO_V2_GET_LINEINFO_WATCH_IOCTL: u32 = 3238048774;
-pub const VIDIOC_G_STD: u32 = 1074288151;
-pub const USBDEVFS_ALLOW_SUSPEND: u32 = 536892706;
-pub const SONET_GETSTATZ: u32 = 1076125969;
-pub const SCIF_ACCEPTREG: u32 = 3221779205;
-pub const VIDIOC_ENCODER_CMD: u32 = 3223869005;
-pub const PPPIOCSRASYNCMAP: u32 = 2147775572;
-pub const IOCTL_MEI_NOTIFY_SET: u32 = 2147764226;
-pub const BTRFS_IOC_QUOTA_RESCAN_STATUS: u32 = 1077974061;
-pub const F2FS_IOC_GARBAGE_COLLECT: u32 = 2147808518;
-pub const ATMLEC_CTRL: u32 = 536895952;
-pub const MATROXFB_GET_AVAILABLE_OUTPUTS: u32 = 1074294521;
-pub const DM_DEV_CREATE: u32 = 3241737475;
-pub const VHOST_VDPA_GET_VRING_NUM: u32 = 1073917814;
-pub const VIDIOC_G_CTRL: u32 = 3221771803;
-pub const NBD_CLEAR_SOCK: u32 = 536914692;
-pub const VFIO_DEVICE_QUERY_GFX_PLANE: u32 = 536886130;
-pub const WDIOC_KEEPALIVE: u32 = 1074026245;
-pub const NVME_IOCTL_SUBSYS_RESET: u32 = 536890949;
-pub const PTP_EXTTS_REQUEST2: u32 = 2148547851;
-pub const PCITEST_BAR: u32 = 536891393;
-pub const MGSL_IOCGGPIO: u32 = 1074818321;
-pub const EVIOCSREP: u32 = 2148025603;
-pub const VFIO_DEVICE_GET_IRQ_INFO: u32 = 536886125;
-pub const HPET_DPI: u32 = 536897541;
-pub const VDUSE_VQ_SETUP_KICKFD: u32 = 2148040982;
-pub const ND_IOCTL_CALL: u32 = 3225439754;
-pub const HIDIOCGDEVINFO: u32 = 1075595267;
-pub const DM_TABLE_DEPS: u32 = 3241737483;
-pub const BTRFS_IOC_DEV_INFO: u32 = 3489698846;
-pub const VDUSE_IOTLB_GET_FD: u32 = 3223355664;
-pub const FW_CDEV_IOC_GET_INFO: u32 = 3223855872;
-pub const VIDIOC_G_PRIORITY: u32 = 1074026051;
-pub const ATM_NEWBACKENDIF: u32 = 2147639795;
-pub const VIDIOC_S_EXT_CTRLS: u32 = 3223344712;
-pub const VIDIOC_SUBDEV_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const VIDIOC_OMAP3ISP_CCDC_CFG: u32 = 3224917697;
-pub const VIDIOC_S_HW_FREQ_SEEK: u32 = 2150651474;
-pub const DM_TABLE_LOAD: u32 = 3241737481;
-pub const F2FS_IOC_START_ATOMIC_WRITE: u32 = 536933633;
-pub const VIDIOC_G_OUTPUT: u32 = 1074026030;
-pub const ATM_DROPPARTY: u32 = 2147770869;
-pub const CHIOGELEM: u32 = 2154586896;
-pub const BTRFS_IOC_GET_SUPPORTED_FEATURES: u32 = 1078498361;
-pub const EVIOCSKEYCODE: u32 = 2148025604;
-pub const NE_GET_IMAGE_LOAD_INFO: u32 = 3222318626;
-pub const TUNSETLINK: u32 = 2147767501;
-pub const FW_CDEV_IOC_ADD_DESCRIPTOR: u32 = 3222807302;
-pub const BTRFS_IOC_SCRUB_CANCEL: u32 = 536908828;
-pub const PPS_SETPARAMS: u32 = 2148036770;
-pub const IOC_OPAL_LR_SETUP: u32 = 2166911203;
-pub const FW_CDEV_IOC_DEALLOCATE: u32 = 2147754755;
-pub const WDIOC_SETTIMEOUT: u32 = 3221509894;
-pub const IOC_WATCH_QUEUE_SET_FILTER: u32 = 536893281;
-pub const CAPI_GET_MANUFACTURER: u32 = 3221504774;
-pub const VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY: u32 = 536886134;
-pub const ASPEED_P2A_CTRL_IOCTL_SET_WINDOW: u32 = 2148578048;
-pub const VIDIOC_G_EDID: u32 = 3223868968;
-pub const F2FS_IOC_GARBAGE_COLLECT_RANGE: u32 = 2149119243;
-pub const RIO_MAP_INBOUND: u32 = 3223874833;
-pub const IOC_OPAL_TAKE_OWNERSHIP: u32 = 2164814046;
-pub const USBDEVFS_CLAIM_PORT: u32 = 1074025752;
-pub const VIDIOC_S_AUDIO: u32 = 2150913570;
-pub const FS_IOC_GET_ENCRYPTION_NONCE: u32 = 1074816539;
-pub const FW_CDEV_IOC_SEND_STREAM_PACKET: u32 = 2150114067;
-pub const BTRFS_IOC_SNAP_DESTROY: u32 = 2415957007;
-pub const SNAPSHOT_FREE: u32 = 536883973;
-pub const I8K_GET_SPEED: u32 = 3221776773;
-pub const HIDIOCGREPORT: u32 = 2148288519;
-pub const HPET_EPI: u32 = 536897540;
-pub const JSIOCSCORR: u32 = 2149870113;
-pub const IOC_PR_PREEMPT_ABORT: u32 = 2149085388;
-pub const RIO_MAP_OUTBOUND: u32 = 3223874831;
-pub const ATM_SETESI: u32 = 2148557196;
-pub const FW_CDEV_IOC_START_ISO: u32 = 2148541194;
-pub const ATM_DELADDR: u32 = 2148557193;
-pub const PPFCONTROL: u32 = 2147643534;
-pub const SONYPI_IOCGFAN: u32 = 1073837578;
-pub const RTC_IRQP_SET: u32 = 2148036620;
-pub const PCITEST_WRITE: u32 = 2148028420;
-pub const PPCLAIM: u32 = 536899723;
-pub const VIDIOC_S_JPEGCOMP: u32 = 2156680766;
-pub const IPMICTL_UNREGISTER_FOR_CMD: u32 = 1073899791;
-pub const VHOST_SET_FEATURES: u32 = 2148052736;
-pub const TOSHIBA_ACPI_SCI: u32 = 3222828177;
-pub const VIDIOC_DQBUF: u32 = 3227014673;
-pub const BTRFS_IOC_BALANCE_PROGRESS: u32 = 1140888610;
-pub const BTRFS_IOC_SUBVOL_SETFLAGS: u32 = 2148045850;
-pub const ATMLEC_MCAST: u32 = 536895954;
-pub const MMTIMER_GETFREQ: u32 = 1074294018;
-pub const VIDIOC_G_SELECTION: u32 = 3225441886;
-pub const RTC_ALM_SET: u32 = 2149871623;
-pub const PPPOEIOCSFWD: u32 = 2148053248;
-pub const IPMICTL_GET_MAINTENANCE_MODE_CMD: u32 = 1074030878;
-pub const FS_IOC_ENABLE_VERITY: u32 = 2155898501;
-pub const NILFS_IOCTL_GET_BDESCS: u32 = 3222826631;
-pub const FDFMTEND: u32 = 536871497;
-pub const DMA_BUF_SET_NAME: u32 = 2148033025;
-pub const UI_BEGIN_FF_UPLOAD: u32 = 3228063176;
-pub const RTC_UIE_ON: u32 = 536899587;
-pub const PPRELEASE: u32 = 536899724;
-pub const VFIO_IOMMU_UNMAP_DMA: u32 = 536886130;
-pub const VIDIOC_OMAP3ISP_PRV_CFG: u32 = 3228587714;
-pub const GPIO_GET_LINEHANDLE_IOCTL: u32 = 3245126659;
-pub const VFAT_IOCTL_READDIR_BOTH: u32 = 1110471169;
-pub const NVME_IOCTL_ADMIN_CMD: u32 = 3225964097;
-pub const VHOST_SET_VRING_KICK: u32 = 2148052768;
-pub const BTRFS_IOC_SUBVOL_CREATE_V2: u32 = 2415957016;
-pub const BTRFS_IOC_SNAP_CREATE: u32 = 2415956993;
-pub const SONYPI_IOCGBAT2CAP: u32 = 1073903108;
-pub const PPNEGOT: u32 = 2147774609;
-pub const NBD_PRINT_DEBUG: u32 = 536914694;
-pub const BTRFS_IOC_INO_LOOKUP_USER: u32 = 3489698878;
-pub const BTRFS_IOC_GET_SUBVOL_ROOTREF: u32 = 3489698877;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS: u32 = 3225445913;
-pub const BTRFS_IOC_FS_INFO: u32 = 1140888607;
-pub const VIDIOC_ENUM_FMT: u32 = 3225441794;
-pub const VIDIOC_G_INPUT: u32 = 1074026022;
-pub const VTPM_PROXY_IOC_NEW_DEV: u32 = 3222577408;
-pub const DFL_FPGA_FME_ERR_GET_IRQ_NUM: u32 = 1074050691;
-pub const ND_IOCTL_DIMM_FLAGS: u32 = 3221769731;
-pub const BTRFS_IOC_QUOTA_RESCAN: u32 = 2151715884;
-pub const MMTIMER_GETCOUNTER: u32 = 1074294025;
-pub const MATROXFB_GET_OUTPUT_MODE: u32 = 3221778170;
-pub const BTRFS_IOC_QUOTA_RESCAN_WAIT: u32 = 536908846;
-pub const RIO_CM_CHAN_BIND: u32 = 2148033285;
-pub const HIDIOCGRDESC: u32 = 1342457858;
-pub const MGSL_IOCGIF: u32 = 536898827;
-pub const VIDIOC_S_OUTPUT: u32 = 3221509679;
-pub const HIDIOCGREPORTINFO: u32 = 3222030345;
-pub const WDIOC_GETBOOTSTATUS: u32 = 1074026242;
-pub const VDUSE_VQ_GET_INFO: u32 = 3224404245;
-pub const ACRN_IOCTL_ASSIGN_PCIDEV: u32 = 2149884501;
-pub const BLKGETDISKSEQ: u32 = 1074270848;
-pub const ACRN_IOCTL_PM_GET_CPU_STATE: u32 = 3221791328;
-pub const ACRN_IOCTL_DESTROY_VM: u32 = 536912401;
-pub const ACRN_IOCTL_SET_PTDEV_INTR: u32 = 2148835923;
-pub const ACRN_IOCTL_CREATE_IOREQ_CLIENT: u32 = 536912434;
-pub const ACRN_IOCTL_IRQFD: u32 = 2149098097;
-pub const ACRN_IOCTL_CREATE_VM: u32 = 3224412688;
-pub const ACRN_IOCTL_INJECT_MSI: u32 = 2148573731;
-pub const ACRN_IOCTL_ATTACH_IOREQ_CLIENT: u32 = 536912435;
-pub const ACRN_IOCTL_RESET_PTDEV_INTR: u32 = 2148835924;
-pub const ACRN_IOCTL_NOTIFY_REQUEST_FINISH: u32 = 2148049457;
-pub const ACRN_IOCTL_SET_IRQLINE: u32 = 2148049445;
-pub const ACRN_IOCTL_START_VM: u32 = 536912402;
-pub const ACRN_IOCTL_SET_VCPU_REGS: u32 = 2166923798;
-pub const ACRN_IOCTL_SET_MEMSEG: u32 = 2149622337;
-pub const ACRN_IOCTL_PAUSE_VM: u32 = 536912403;
-pub const ACRN_IOCTL_CLEAR_VM_IOREQ: u32 = 536912437;
-pub const ACRN_IOCTL_UNSET_MEMSEG: u32 = 2149622338;
-pub const ACRN_IOCTL_IOEVENTFD: u32 = 2149622384;
-pub const ACRN_IOCTL_DEASSIGN_PCIDEV: u32 = 2149884502;
-pub const ACRN_IOCTL_RESET_VM: u32 = 536912405;
-pub const ACRN_IOCTL_DESTROY_IOREQ_CLIENT: u32 = 536912436;
-pub const ACRN_IOCTL_VM_INTR_MONITOR: u32 = 2148049444;
diff --git a/vendor/linux-raw-sys-0.3.2/src/mips64/netlink.rs b/vendor/linux-raw-sys-0.3.2/src/mips64/netlink.rs
deleted file mode 100644
index 3dade139d..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/mips64/netlink.rs
+++ /dev/null
@@ -1,2870 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const _MIPS_ISA_MIPS1: u32 = 1;
-pub const _MIPS_ISA_MIPS2: u32 = 2;
-pub const _MIPS_ISA_MIPS3: u32 = 3;
-pub const _MIPS_ISA_MIPS4: u32 = 4;
-pub const _MIPS_ISA_MIPS5: u32 = 5;
-pub const _MIPS_ISA_MIPS32: u32 = 6;
-pub const _MIPS_ISA_MIPS64: u32 = 7;
-pub const _MIPS_SIM_ABI32: u32 = 1;
-pub const _MIPS_SIM_NABI32: u32 = 2;
-pub const _MIPS_SIM_ABI64: u32 = 3;
-pub const NETLINK_ROUTE: u32 = 0;
-pub const NETLINK_UNUSED: u32 = 1;
-pub const NETLINK_USERSOCK: u32 = 2;
-pub const NETLINK_FIREWALL: u32 = 3;
-pub const NETLINK_SOCK_DIAG: u32 = 4;
-pub const NETLINK_NFLOG: u32 = 5;
-pub const NETLINK_XFRM: u32 = 6;
-pub const NETLINK_SELINUX: u32 = 7;
-pub const NETLINK_ISCSI: u32 = 8;
-pub const NETLINK_AUDIT: u32 = 9;
-pub const NETLINK_FIB_LOOKUP: u32 = 10;
-pub const NETLINK_CONNECTOR: u32 = 11;
-pub const NETLINK_NETFILTER: u32 = 12;
-pub const NETLINK_IP6_FW: u32 = 13;
-pub const NETLINK_DNRTMSG: u32 = 14;
-pub const NETLINK_KOBJECT_UEVENT: u32 = 15;
-pub const NETLINK_GENERIC: u32 = 16;
-pub const NETLINK_SCSITRANSPORT: u32 = 18;
-pub const NETLINK_ECRYPTFS: u32 = 19;
-pub const NETLINK_RDMA: u32 = 20;
-pub const NETLINK_CRYPTO: u32 = 21;
-pub const NETLINK_SMC: u32 = 22;
-pub const NETLINK_INET_DIAG: u32 = 4;
-pub const MAX_LINKS: u32 = 32;
-pub const NLM_F_REQUEST: u32 = 1;
-pub const NLM_F_MULTI: u32 = 2;
-pub const NLM_F_ACK: u32 = 4;
-pub const NLM_F_ECHO: u32 = 8;
-pub const NLM_F_DUMP_INTR: u32 = 16;
-pub const NLM_F_DUMP_FILTERED: u32 = 32;
-pub const NLM_F_ROOT: u32 = 256;
-pub const NLM_F_MATCH: u32 = 512;
-pub const NLM_F_ATOMIC: u32 = 1024;
-pub const NLM_F_DUMP: u32 = 768;
-pub const NLM_F_REPLACE: u32 = 256;
-pub const NLM_F_EXCL: u32 = 512;
-pub const NLM_F_CREATE: u32 = 1024;
-pub const NLM_F_APPEND: u32 = 2048;
-pub const NLM_F_NONREC: u32 = 256;
-pub const NLM_F_BULK: u32 = 512;
-pub const NLM_F_CAPPED: u32 = 256;
-pub const NLM_F_ACK_TLVS: u32 = 512;
-pub const NLMSG_ALIGNTO: u32 = 4;
-pub const NLMSG_NOOP: u32 = 1;
-pub const NLMSG_ERROR: u32 = 2;
-pub const NLMSG_DONE: u32 = 3;
-pub const NLMSG_OVERRUN: u32 = 4;
-pub const NLMSG_MIN_TYPE: u32 = 16;
-pub const NETLINK_ADD_MEMBERSHIP: u32 = 1;
-pub const NETLINK_DROP_MEMBERSHIP: u32 = 2;
-pub const NETLINK_PKTINFO: u32 = 3;
-pub const NETLINK_BROADCAST_ERROR: u32 = 4;
-pub const NETLINK_NO_ENOBUFS: u32 = 5;
-pub const NETLINK_RX_RING: u32 = 6;
-pub const NETLINK_TX_RING: u32 = 7;
-pub const NETLINK_LISTEN_ALL_NSID: u32 = 8;
-pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9;
-pub const NETLINK_CAP_ACK: u32 = 10;
-pub const NETLINK_EXT_ACK: u32 = 11;
-pub const NETLINK_GET_STRICT_CHK: u32 = 12;
-pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4;
-pub const NET_MAJOR: u32 = 36;
-pub const NLA_F_NESTED: u32 = 32768;
-pub const NLA_F_NET_BYTEORDER: u32 = 16384;
-pub const NLA_TYPE_MASK: i32 = -49153;
-pub const NLA_ALIGNTO: u32 = 4;
-pub const MACVLAN_FLAG_NOPROMISC: u32 = 1;
-pub const MACVLAN_FLAG_NODST: u32 = 2;
-pub const IPVLAN_F_PRIVATE: u32 = 1;
-pub const IPVLAN_F_VEPA: u32 = 2;
-pub const TUNNEL_MSG_FLAG_STATS: u32 = 1;
-pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1;
-pub const MAX_VLAN_LIST_LEN: u32 = 1;
-pub const PORT_PROFILE_MAX: u32 = 40;
-pub const PORT_UUID_MAX: u32 = 16;
-pub const PORT_SELF_VF: i32 = -1;
-pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1;
-pub const XDP_FLAGS_SKB_MODE: u32 = 2;
-pub const XDP_FLAGS_DRV_MODE: u32 = 4;
-pub const XDP_FLAGS_HW_MODE: u32 = 8;
-pub const XDP_FLAGS_REPLACE: u32 = 16;
-pub const XDP_FLAGS_MODES: u32 = 14;
-pub const XDP_FLAGS_MASK: u32 = 31;
-pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1;
-pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32;
-pub const IFA_F_SECONDARY: u32 = 1;
-pub const IFA_F_TEMPORARY: u32 = 1;
-pub const IFA_F_NODAD: u32 = 2;
-pub const IFA_F_OPTIMISTIC: u32 = 4;
-pub const IFA_F_DADFAILED: u32 = 8;
-pub const IFA_F_HOMEADDRESS: u32 = 16;
-pub const IFA_F_DEPRECATED: u32 = 32;
-pub const IFA_F_TENTATIVE: u32 = 64;
-pub const IFA_F_PERMANENT: u32 = 128;
-pub const IFA_F_MANAGETEMPADDR: u32 = 256;
-pub const IFA_F_NOPREFIXROUTE: u32 = 512;
-pub const IFA_F_MCAUTOJOIN: u32 = 1024;
-pub const IFA_F_STABLE_PRIVACY: u32 = 2048;
-pub const IFAPROT_UNSPEC: u32 = 0;
-pub const IFAPROT_KERNEL_LO: u32 = 1;
-pub const IFAPROT_KERNEL_RA: u32 = 2;
-pub const IFAPROT_KERNEL_LL: u32 = 3;
-pub const NTF_USE: u32 = 1;
-pub const NTF_SELF: u32 = 2;
-pub const NTF_MASTER: u32 = 4;
-pub const NTF_PROXY: u32 = 8;
-pub const NTF_EXT_LEARNED: u32 = 16;
-pub const NTF_OFFLOADED: u32 = 32;
-pub const NTF_STICKY: u32 = 64;
-pub const NTF_ROUTER: u32 = 128;
-pub const NTF_EXT_MANAGED: u32 = 1;
-pub const NTF_EXT_LOCKED: u32 = 2;
-pub const NUD_INCOMPLETE: u32 = 1;
-pub const NUD_REACHABLE: u32 = 2;
-pub const NUD_STALE: u32 = 4;
-pub const NUD_DELAY: u32 = 8;
-pub const NUD_PROBE: u32 = 16;
-pub const NUD_FAILED: u32 = 32;
-pub const NUD_NOARP: u32 = 64;
-pub const NUD_PERMANENT: u32 = 128;
-pub const NUD_NONE: u32 = 0;
-pub const RTNL_FAMILY_IPMR: u32 = 128;
-pub const RTNL_FAMILY_IP6MR: u32 = 129;
-pub const RTNL_FAMILY_MAX: u32 = 129;
-pub const RTA_ALIGNTO: u32 = 4;
-pub const RTPROT_UNSPEC: u32 = 0;
-pub const RTPROT_REDIRECT: u32 = 1;
-pub const RTPROT_KERNEL: u32 = 2;
-pub const RTPROT_BOOT: u32 = 3;
-pub const RTPROT_STATIC: u32 = 4;
-pub const RTPROT_GATED: u32 = 8;
-pub const RTPROT_RA: u32 = 9;
-pub const RTPROT_MRT: u32 = 10;
-pub const RTPROT_ZEBRA: u32 = 11;
-pub const RTPROT_BIRD: u32 = 12;
-pub const RTPROT_DNROUTED: u32 = 13;
-pub const RTPROT_XORP: u32 = 14;
-pub const RTPROT_NTK: u32 = 15;
-pub const RTPROT_DHCP: u32 = 16;
-pub const RTPROT_MROUTED: u32 = 17;
-pub const RTPROT_KEEPALIVED: u32 = 18;
-pub const RTPROT_BABEL: u32 = 42;
-pub const RTPROT_OPENR: u32 = 99;
-pub const RTPROT_BGP: u32 = 186;
-pub const RTPROT_ISIS: u32 = 187;
-pub const RTPROT_OSPF: u32 = 188;
-pub const RTPROT_RIP: u32 = 189;
-pub const RTPROT_EIGRP: u32 = 192;
-pub const RTM_F_NOTIFY: u32 = 256;
-pub const RTM_F_CLONED: u32 = 512;
-pub const RTM_F_EQUALIZE: u32 = 1024;
-pub const RTM_F_PREFIX: u32 = 2048;
-pub const RTM_F_LOOKUP_TABLE: u32 = 4096;
-pub const RTM_F_FIB_MATCH: u32 = 8192;
-pub const RTM_F_OFFLOAD: u32 = 16384;
-pub const RTM_F_TRAP: u32 = 32768;
-pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912;
-pub const RTNH_F_DEAD: u32 = 1;
-pub const RTNH_F_PERVASIVE: u32 = 2;
-pub const RTNH_F_ONLINK: u32 = 4;
-pub const RTNH_F_OFFLOAD: u32 = 8;
-pub const RTNH_F_LINKDOWN: u32 = 16;
-pub const RTNH_F_UNRESOLVED: u32 = 32;
-pub const RTNH_F_TRAP: u32 = 64;
-pub const RTNH_COMPARE_MASK: u32 = 89;
-pub const RTNH_ALIGNTO: u32 = 4;
-pub const RTNETLINK_HAVE_PEERINFO: u32 = 1;
-pub const RTAX_FEATURE_ECN: u32 = 1;
-pub const RTAX_FEATURE_SACK: u32 = 2;
-pub const RTAX_FEATURE_TIMESTAMP: u32 = 4;
-pub const RTAX_FEATURE_ALLFRAG: u32 = 8;
-pub const RTAX_FEATURE_MASK: u32 = 15;
-pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295;
-pub const TCA_DUMP_FLAGS_TERSE: u32 = 1;
-pub const RTMGRP_LINK: u32 = 1;
-pub const RTMGRP_NOTIFY: u32 = 2;
-pub const RTMGRP_NEIGH: u32 = 4;
-pub const RTMGRP_TC: u32 = 8;
-pub const RTMGRP_IPV4_IFADDR: u32 = 16;
-pub const RTMGRP_IPV4_MROUTE: u32 = 32;
-pub const RTMGRP_IPV4_ROUTE: u32 = 64;
-pub const RTMGRP_IPV4_RULE: u32 = 128;
-pub const RTMGRP_IPV6_IFADDR: u32 = 256;
-pub const RTMGRP_IPV6_MROUTE: u32 = 512;
-pub const RTMGRP_IPV6_ROUTE: u32 = 1024;
-pub const RTMGRP_IPV6_IFINFO: u32 = 2048;
-pub const RTMGRP_DECnet_IFADDR: u32 = 4096;
-pub const RTMGRP_DECnet_ROUTE: u32 = 16384;
-pub const RTMGRP_IPV6_PREFIX: u32 = 131072;
-pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2;
-pub const RTEXT_FILTER_VF: u32 = 1;
-pub const RTEXT_FILTER_BRVLAN: u32 = 2;
-pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4;
-pub const RTEXT_FILTER_SKIP_STATS: u32 = 8;
-pub const RTEXT_FILTER_MRP: u32 = 16;
-pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32;
-pub const RTEXT_FILTER_CFM_STATUS: u32 = 64;
-pub const RTEXT_FILTER_MST: u32 = 128;
-pub type size_t = crate::ctypes::c_ulong;
-pub type ssize_t = crate::ctypes::c_long;
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_long;
-pub type __u64 = crate::ctypes::c_ulong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 16usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_daddr_t = crate::ctypes::c_long;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_uid_t = __kernel_uid_t;
-pub type __kernel_old_gid_t = __kernel_gid_t;
-pub type __kernel_old_dev_t = crate::ctypes::c_uint;
-pub type __kernel_size_t = __kernel_ulong_t;
-pub type __kernel_ssize_t = __kernel_long_t;
-pub type __kernel_ptrdiff_t = __kernel_long_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_nl {
-pub nl_family: __kernel_sa_family_t,
-pub nl_pad: crate::ctypes::c_ushort,
-pub nl_pid: __u32,
-pub nl_groups: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsghdr {
-pub nlmsg_len: __u32,
-pub nlmsg_type: __u16,
-pub nlmsg_flags: __u16,
-pub nlmsg_seq: __u32,
-pub nlmsg_pid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsgerr {
-pub error: crate::ctypes::c_int,
-pub msg: nlmsghdr,
-}
-impl nlmsgerr_attrs {
-pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nlmsgerr_attrs {
-NLMSGERR_ATTR_UNUSED = 0,
-NLMSGERR_ATTR_MSG = 1,
-NLMSGERR_ATTR_OFFS = 2,
-NLMSGERR_ATTR_COOKIE = 3,
-NLMSGERR_ATTR_POLICY = 4,
-NLMSGERR_ATTR_MISS_TYPE = 5,
-NLMSGERR_ATTR_MISS_NEST = 6,
-__NLMSGERR_ATTR_MAX = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_pktinfo {
-pub group: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_req {
-pub nm_block_size: crate::ctypes::c_uint,
-pub nm_block_nr: crate::ctypes::c_uint,
-pub nm_frame_size: crate::ctypes::c_uint,
-pub nm_frame_nr: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_hdr {
-pub nm_status: crate::ctypes::c_uint,
-pub nm_len: crate::ctypes::c_uint,
-pub nm_group: __u32,
-pub nm_pid: __u32,
-pub nm_uid: __u32,
-pub nm_gid: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nl_mmap_status {
-NL_MMAP_STATUS_UNUSED = 0,
-NL_MMAP_STATUS_RESERVED = 1,
-NL_MMAP_STATUS_VALID = 2,
-NL_MMAP_STATUS_COPY = 3,
-NL_MMAP_STATUS_SKIP = 4,
-}
-pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED;
-pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-NETLINK_UNCONNECTED = 0,
-NETLINK_CONNECTED = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlattr {
-pub nla_len: __u16,
-pub nla_type: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nla_bitfield32 {
-pub value: __u32,
-pub selector: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_attribute_type {
-NL_ATTR_TYPE_INVALID = 0,
-NL_ATTR_TYPE_FLAG = 1,
-NL_ATTR_TYPE_U8 = 2,
-NL_ATTR_TYPE_U16 = 3,
-NL_ATTR_TYPE_U32 = 4,
-NL_ATTR_TYPE_U64 = 5,
-NL_ATTR_TYPE_S8 = 6,
-NL_ATTR_TYPE_S16 = 7,
-NL_ATTR_TYPE_S32 = 8,
-NL_ATTR_TYPE_S64 = 9,
-NL_ATTR_TYPE_BINARY = 10,
-NL_ATTR_TYPE_STRING = 11,
-NL_ATTR_TYPE_NUL_STRING = 12,
-NL_ATTR_TYPE_NESTED = 13,
-NL_ATTR_TYPE_NESTED_ARRAY = 14,
-NL_ATTR_TYPE_BITFIELD32 = 15,
-}
-impl netlink_policy_type_attr {
-pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_policy_type_attr {
-NL_POLICY_TYPE_ATTR_UNSPEC = 0,
-NL_POLICY_TYPE_ATTR_TYPE = 1,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5,
-NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6,
-NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7,
-NL_POLICY_TYPE_ATTR_POLICY_IDX = 8,
-NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9,
-NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10,
-NL_POLICY_TYPE_ATTR_PAD = 11,
-NL_POLICY_TYPE_ATTR_MASK = 12,
-__NL_POLICY_TYPE_ATTR_MAX = 13,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats {
-pub rx_packets: __u32,
-pub tx_packets: __u32,
-pub rx_bytes: __u32,
-pub tx_bytes: __u32,
-pub rx_errors: __u32,
-pub tx_errors: __u32,
-pub rx_dropped: __u32,
-pub tx_dropped: __u32,
-pub multicast: __u32,
-pub collisions: __u32,
-pub rx_length_errors: __u32,
-pub rx_over_errors: __u32,
-pub rx_crc_errors: __u32,
-pub rx_frame_errors: __u32,
-pub rx_fifo_errors: __u32,
-pub rx_missed_errors: __u32,
-pub tx_aborted_errors: __u32,
-pub tx_carrier_errors: __u32,
-pub tx_fifo_errors: __u32,
-pub tx_heartbeat_errors: __u32,
-pub tx_window_errors: __u32,
-pub rx_compressed: __u32,
-pub tx_compressed: __u32,
-pub rx_nohandler: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-pub collisions: __u64,
-pub rx_length_errors: __u64,
-pub rx_over_errors: __u64,
-pub rx_crc_errors: __u64,
-pub rx_frame_errors: __u64,
-pub rx_fifo_errors: __u64,
-pub rx_missed_errors: __u64,
-pub tx_aborted_errors: __u64,
-pub tx_carrier_errors: __u64,
-pub tx_fifo_errors: __u64,
-pub tx_heartbeat_errors: __u64,
-pub tx_window_errors: __u64,
-pub rx_compressed: __u64,
-pub tx_compressed: __u64,
-pub rx_nohandler: __u64,
-pub rx_otherhost_dropped: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_hw_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_ifmap {
-pub mem_start: __u64,
-pub mem_end: __u64,
-pub base_addr: __u64,
-pub irq: __u16,
-pub dma: __u8,
-pub port: __u8,
-}
-pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC;
-pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS;
-pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST;
-pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME;
-pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU;
-pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK;
-pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC;
-pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS;
-pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST;
-pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY;
-pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER;
-pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS;
-pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO;
-pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN;
-pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP;
-pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT;
-pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE;
-pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE;
-pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO;
-pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID;
-pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS;
-pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF;
-pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST;
-pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64;
-pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS;
-pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF;
-pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC;
-pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP;
-pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD;
-pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK;
-pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY;
-pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES;
-pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES;
-pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER;
-pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID;
-pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES;
-pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID;
-pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID;
-pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME;
-pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN;
-pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS;
-pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE;
-pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD;
-pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP;
-pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT;
-pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID;
-pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT;
-pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT;
-pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX;
-pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU;
-pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU;
-pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST;
-pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME;
-pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS;
-pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON;
-pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME;
-pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME;
-pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS;
-pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI;
-pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT;
-pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IFLA_UNSPEC = 0,
-IFLA_ADDRESS = 1,
-IFLA_BROADCAST = 2,
-IFLA_IFNAME = 3,
-IFLA_MTU = 4,
-IFLA_LINK = 5,
-IFLA_QDISC = 6,
-IFLA_STATS = 7,
-IFLA_COST = 8,
-IFLA_PRIORITY = 9,
-IFLA_MASTER = 10,
-IFLA_WIRELESS = 11,
-IFLA_PROTINFO = 12,
-IFLA_TXQLEN = 13,
-IFLA_MAP = 14,
-IFLA_WEIGHT = 15,
-IFLA_OPERSTATE = 16,
-IFLA_LINKMODE = 17,
-IFLA_LINKINFO = 18,
-IFLA_NET_NS_PID = 19,
-IFLA_IFALIAS = 20,
-IFLA_NUM_VF = 21,
-IFLA_VFINFO_LIST = 22,
-IFLA_STATS64 = 23,
-IFLA_VF_PORTS = 24,
-IFLA_PORT_SELF = 25,
-IFLA_AF_SPEC = 26,
-IFLA_GROUP = 27,
-IFLA_NET_NS_FD = 28,
-IFLA_EXT_MASK = 29,
-IFLA_PROMISCUITY = 30,
-IFLA_NUM_TX_QUEUES = 31,
-IFLA_NUM_RX_QUEUES = 32,
-IFLA_CARRIER = 33,
-IFLA_PHYS_PORT_ID = 34,
-IFLA_CARRIER_CHANGES = 35,
-IFLA_PHYS_SWITCH_ID = 36,
-IFLA_LINK_NETNSID = 37,
-IFLA_PHYS_PORT_NAME = 38,
-IFLA_PROTO_DOWN = 39,
-IFLA_GSO_MAX_SEGS = 40,
-IFLA_GSO_MAX_SIZE = 41,
-IFLA_PAD = 42,
-IFLA_XDP = 43,
-IFLA_EVENT = 44,
-IFLA_NEW_NETNSID = 45,
-IFLA_IF_NETNSID = 46,
-IFLA_CARRIER_UP_COUNT = 47,
-IFLA_CARRIER_DOWN_COUNT = 48,
-IFLA_NEW_IFINDEX = 49,
-IFLA_MIN_MTU = 50,
-IFLA_MAX_MTU = 51,
-IFLA_PROP_LIST = 52,
-IFLA_ALT_IFNAME = 53,
-IFLA_PERM_ADDRESS = 54,
-IFLA_PROTO_DOWN_REASON = 55,
-IFLA_PARENT_DEV_NAME = 56,
-IFLA_PARENT_DEV_BUS_NAME = 57,
-IFLA_GRO_MAX_SIZE = 58,
-IFLA_TSO_MAX_SIZE = 59,
-IFLA_TSO_MAX_SEGS = 60,
-IFLA_ALLMULTI = 61,
-IFLA_DEVLINK_PORT = 62,
-__IFLA_MAX = 63,
-}
-pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC;
-pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK;
-pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT;
-pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-IFLA_PROTO_DOWN_REASON_UNSPEC = 0,
-IFLA_PROTO_DOWN_REASON_MASK = 1,
-IFLA_PROTO_DOWN_REASON_VALUE = 2,
-__IFLA_PROTO_DOWN_REASON_CNT = 3,
-}
-pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC;
-pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF;
-pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-IFLA_INET_UNSPEC = 0,
-IFLA_INET_CONF = 1,
-__IFLA_INET_MAX = 2,
-}
-pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC;
-pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS;
-pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF;
-pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS;
-pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST;
-pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO;
-pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS;
-pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN;
-pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE;
-pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU;
-pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-IFLA_INET6_UNSPEC = 0,
-IFLA_INET6_FLAGS = 1,
-IFLA_INET6_CONF = 2,
-IFLA_INET6_STATS = 3,
-IFLA_INET6_MCAST = 4,
-IFLA_INET6_CACHEINFO = 5,
-IFLA_INET6_ICMP6STATS = 6,
-IFLA_INET6_TOKEN = 7,
-IFLA_INET6_ADDR_GEN_MODE = 8,
-IFLA_INET6_RA_MTU = 9,
-__IFLA_INET6_MAX = 10,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum in6_addr_gen_mode {
-IN6_ADDR_GEN_MODE_EUI64 = 0,
-IN6_ADDR_GEN_MODE_NONE = 1,
-IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2,
-IN6_ADDR_GEN_MODE_RANDOM = 3,
-}
-pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC;
-pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY;
-pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME;
-pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE;
-pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME;
-pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE;
-pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY;
-pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING;
-pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL;
-pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK;
-pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID;
-pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID;
-pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT;
-pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST;
-pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE;
-pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED;
-pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER;
-pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER;
-pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER;
-pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER;
-pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR;
-pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH;
-pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER;
-pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING;
-pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR;
-pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER;
-pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY;
-pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX;
-pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT;
-pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL;
-pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL;
-pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL;
-pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL;
-pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL;
-pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES;
-pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES;
-pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES;
-pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID;
-pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD;
-pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED;
-pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED;
-pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION;
-pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION;
-pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT;
-pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT;
-pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE;
-pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-IFLA_BR_UNSPEC = 0,
-IFLA_BR_FORWARD_DELAY = 1,
-IFLA_BR_HELLO_TIME = 2,
-IFLA_BR_MAX_AGE = 3,
-IFLA_BR_AGEING_TIME = 4,
-IFLA_BR_STP_STATE = 5,
-IFLA_BR_PRIORITY = 6,
-IFLA_BR_VLAN_FILTERING = 7,
-IFLA_BR_VLAN_PROTOCOL = 8,
-IFLA_BR_GROUP_FWD_MASK = 9,
-IFLA_BR_ROOT_ID = 10,
-IFLA_BR_BRIDGE_ID = 11,
-IFLA_BR_ROOT_PORT = 12,
-IFLA_BR_ROOT_PATH_COST = 13,
-IFLA_BR_TOPOLOGY_CHANGE = 14,
-IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 15,
-IFLA_BR_HELLO_TIMER = 16,
-IFLA_BR_TCN_TIMER = 17,
-IFLA_BR_TOPOLOGY_CHANGE_TIMER = 18,
-IFLA_BR_GC_TIMER = 19,
-IFLA_BR_GROUP_ADDR = 20,
-IFLA_BR_FDB_FLUSH = 21,
-IFLA_BR_MCAST_ROUTER = 22,
-IFLA_BR_MCAST_SNOOPING = 23,
-IFLA_BR_MCAST_QUERY_USE_IFADDR = 24,
-IFLA_BR_MCAST_QUERIER = 25,
-IFLA_BR_MCAST_HASH_ELASTICITY = 26,
-IFLA_BR_MCAST_HASH_MAX = 27,
-IFLA_BR_MCAST_LAST_MEMBER_CNT = 28,
-IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29,
-IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30,
-IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31,
-IFLA_BR_MCAST_QUERIER_INTVL = 32,
-IFLA_BR_MCAST_QUERY_INTVL = 33,
-IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34,
-IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35,
-IFLA_BR_NF_CALL_IPTABLES = 36,
-IFLA_BR_NF_CALL_IP6TABLES = 37,
-IFLA_BR_NF_CALL_ARPTABLES = 38,
-IFLA_BR_VLAN_DEFAULT_PVID = 39,
-IFLA_BR_PAD = 40,
-IFLA_BR_VLAN_STATS_ENABLED = 41,
-IFLA_BR_MCAST_STATS_ENABLED = 42,
-IFLA_BR_MCAST_IGMP_VERSION = 43,
-IFLA_BR_MCAST_MLD_VERSION = 44,
-IFLA_BR_VLAN_STATS_PER_PORT = 45,
-IFLA_BR_MULTI_BOOLOPT = 46,
-IFLA_BR_MCAST_QUERIER_STATE = 47,
-__IFLA_BR_MAX = 48,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_bridge_id {
-pub prio: [__u8; 2usize],
-pub addr: [__u8; 6usize],
-}
-pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC;
-pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-BRIDGE_MODE_UNSPEC = 0,
-BRIDGE_MODE_HAIRPIN = 1,
-}
-pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC;
-pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE;
-pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY;
-pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST;
-pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE;
-pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD;
-pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT;
-pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE;
-pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING;
-pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD;
-pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP;
-pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC;
-pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI;
-pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID;
-pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID;
-pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT;
-pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST;
-pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID;
-pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO;
-pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK;
-pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING;
-pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER;
-pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER;
-pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER;
-pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH;
-pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER;
-pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD;
-pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD;
-pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST;
-pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL;
-pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD;
-pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK;
-pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS;
-pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED;
-pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT;
-pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN;
-pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT;
-pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED;
-pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB;
-pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IFLA_BRPORT_UNSPEC = 0,
-IFLA_BRPORT_STATE = 1,
-IFLA_BRPORT_PRIORITY = 2,
-IFLA_BRPORT_COST = 3,
-IFLA_BRPORT_MODE = 4,
-IFLA_BRPORT_GUARD = 5,
-IFLA_BRPORT_PROTECT = 6,
-IFLA_BRPORT_FAST_LEAVE = 7,
-IFLA_BRPORT_LEARNING = 8,
-IFLA_BRPORT_UNICAST_FLOOD = 9,
-IFLA_BRPORT_PROXYARP = 10,
-IFLA_BRPORT_LEARNING_SYNC = 11,
-IFLA_BRPORT_PROXYARP_WIFI = 12,
-IFLA_BRPORT_ROOT_ID = 13,
-IFLA_BRPORT_BRIDGE_ID = 14,
-IFLA_BRPORT_DESIGNATED_PORT = 15,
-IFLA_BRPORT_DESIGNATED_COST = 16,
-IFLA_BRPORT_ID = 17,
-IFLA_BRPORT_NO = 18,
-IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 19,
-IFLA_BRPORT_CONFIG_PENDING = 20,
-IFLA_BRPORT_MESSAGE_AGE_TIMER = 21,
-IFLA_BRPORT_FORWARD_DELAY_TIMER = 22,
-IFLA_BRPORT_HOLD_TIMER = 23,
-IFLA_BRPORT_FLUSH = 24,
-IFLA_BRPORT_MULTICAST_ROUTER = 25,
-IFLA_BRPORT_PAD = 26,
-IFLA_BRPORT_MCAST_FLOOD = 27,
-IFLA_BRPORT_MCAST_TO_UCAST = 28,
-IFLA_BRPORT_VLAN_TUNNEL = 29,
-IFLA_BRPORT_BCAST_FLOOD = 30,
-IFLA_BRPORT_GROUP_FWD_MASK = 31,
-IFLA_BRPORT_NEIGH_SUPPRESS = 32,
-IFLA_BRPORT_ISOLATED = 33,
-IFLA_BRPORT_BACKUP_PORT = 34,
-IFLA_BRPORT_MRP_RING_OPEN = 35,
-IFLA_BRPORT_MRP_IN_OPEN = 36,
-IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 37,
-IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 38,
-IFLA_BRPORT_LOCKED = 39,
-IFLA_BRPORT_MAB = 40,
-__IFLA_BRPORT_MAX = 41,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_cacheinfo {
-pub max_reasm_len: __u32,
-pub tstamp: __u32,
-pub reachable_time: __u32,
-pub retrans_time: __u32,
-}
-pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC;
-pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND;
-pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA;
-pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS;
-pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND;
-pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA;
-pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IFLA_INFO_UNSPEC = 0,
-IFLA_INFO_KIND = 1,
-IFLA_INFO_DATA = 2,
-IFLA_INFO_XSTATS = 3,
-IFLA_INFO_SLAVE_KIND = 4,
-IFLA_INFO_SLAVE_DATA = 5,
-__IFLA_INFO_MAX = 6,
-}
-pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC;
-pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID;
-pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS;
-pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS;
-pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS;
-pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL;
-pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IFLA_VLAN_UNSPEC = 0,
-IFLA_VLAN_ID = 1,
-IFLA_VLAN_FLAGS = 2,
-IFLA_VLAN_EGRESS_QOS = 3,
-IFLA_VLAN_INGRESS_QOS = 4,
-IFLA_VLAN_PROTOCOL = 5,
-__IFLA_VLAN_MAX = 6,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC;
-pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING;
-pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IFLA_VLAN_QOS_UNSPEC = 0,
-IFLA_VLAN_QOS_MAPPING = 1,
-__IFLA_VLAN_QOS_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_qos_mapping {
-pub from: __u32,
-pub to: __u32,
-}
-pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC;
-pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE;
-pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS;
-pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE;
-pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR;
-pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA;
-pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED;
-pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IFLA_MACVLAN_UNSPEC = 0,
-IFLA_MACVLAN_MODE = 1,
-IFLA_MACVLAN_FLAGS = 2,
-IFLA_MACVLAN_MACADDR_MODE = 3,
-IFLA_MACVLAN_MACADDR = 4,
-IFLA_MACVLAN_MACADDR_DATA = 5,
-IFLA_MACVLAN_MACADDR_COUNT = 6,
-IFLA_MACVLAN_BC_QUEUE_LEN = 7,
-IFLA_MACVLAN_BC_QUEUE_LEN_USED = 8,
-__IFLA_MACVLAN_MAX = 9,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_mode {
-MACVLAN_MODE_PRIVATE = 1,
-MACVLAN_MODE_VEPA = 2,
-MACVLAN_MODE_BRIDGE = 4,
-MACVLAN_MODE_PASSTHRU = 8,
-MACVLAN_MODE_SOURCE = 16,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_macaddr_mode {
-MACVLAN_MACADDR_ADD = 0,
-MACVLAN_MACADDR_DEL = 1,
-MACVLAN_MACADDR_FLUSH = 2,
-MACVLAN_MACADDR_SET = 3,
-}
-pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC;
-pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE;
-pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_13 {
-IFLA_VRF_UNSPEC = 0,
-IFLA_VRF_TABLE = 1,
-__IFLA_VRF_MAX = 2,
-}
-pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC;
-pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE;
-pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_14 {
-IFLA_VRF_PORT_UNSPEC = 0,
-IFLA_VRF_PORT_TABLE = 1,
-__IFLA_VRF_PORT_MAX = 2,
-}
-pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC;
-pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI;
-pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT;
-pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN;
-pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE;
-pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW;
-pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA;
-pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT;
-pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT;
-pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI;
-pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES;
-pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB;
-pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT;
-pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION;
-pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD;
-pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD;
-pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_15 {
-IFLA_MACSEC_UNSPEC = 0,
-IFLA_MACSEC_SCI = 1,
-IFLA_MACSEC_PORT = 2,
-IFLA_MACSEC_ICV_LEN = 3,
-IFLA_MACSEC_CIPHER_SUITE = 4,
-IFLA_MACSEC_WINDOW = 5,
-IFLA_MACSEC_ENCODING_SA = 6,
-IFLA_MACSEC_ENCRYPT = 7,
-IFLA_MACSEC_PROTECT = 8,
-IFLA_MACSEC_INC_SCI = 9,
-IFLA_MACSEC_ES = 10,
-IFLA_MACSEC_SCB = 11,
-IFLA_MACSEC_REPLAY_PROTECT = 12,
-IFLA_MACSEC_VALIDATION = 13,
-IFLA_MACSEC_PAD = 14,
-IFLA_MACSEC_OFFLOAD = 15,
-__IFLA_MACSEC_MAX = 16,
-}
-pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC;
-pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK;
-pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID;
-pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA;
-pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_16 {
-IFLA_XFRM_UNSPEC = 0,
-IFLA_XFRM_LINK = 1,
-IFLA_XFRM_IF_ID = 2,
-IFLA_XFRM_COLLECT_METADATA = 3,
-__IFLA_XFRM_MAX = 4,
-}
-impl macsec_validation_type {
-pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_validation_type {
-MACSEC_VALIDATE_DISABLED = 0,
-MACSEC_VALIDATE_CHECK = 1,
-MACSEC_VALIDATE_STRICT = 2,
-__MACSEC_VALIDATE_END = 3,
-}
-impl macsec_offload {
-pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_offload {
-MACSEC_OFFLOAD_OFF = 0,
-MACSEC_OFFLOAD_PHY = 1,
-MACSEC_OFFLOAD_MAC = 2,
-__MACSEC_OFFLOAD_END = 3,
-}
-pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC;
-pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE;
-pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS;
-pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_17 {
-IFLA_IPVLAN_UNSPEC = 0,
-IFLA_IPVLAN_MODE = 1,
-IFLA_IPVLAN_FLAGS = 2,
-__IFLA_IPVLAN_MAX = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ipvlan_mode {
-IPVLAN_MODE_L2 = 0,
-IPVLAN_MODE_L3 = 1,
-IPVLAN_MODE_L3S = 2,
-IPVLAN_MODE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tunnel_msg {
-pub family: __u8,
-pub flags: __u8,
-pub reserved2: __u16,
-pub ifindex: __u32,
-}
-pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC;
-pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD;
-pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_18 {
-VNIFILTER_ENTRY_STATS_UNSPEC = 0,
-VNIFILTER_ENTRY_STATS_RX_BYTES = 1,
-VNIFILTER_ENTRY_STATS_RX_PKTS = 2,
-VNIFILTER_ENTRY_STATS_RX_DROPS = 3,
-VNIFILTER_ENTRY_STATS_RX_ERRORS = 4,
-VNIFILTER_ENTRY_STATS_TX_BYTES = 5,
-VNIFILTER_ENTRY_STATS_TX_PKTS = 6,
-VNIFILTER_ENTRY_STATS_TX_DROPS = 7,
-VNIFILTER_ENTRY_STATS_TX_ERRORS = 8,
-VNIFILTER_ENTRY_STATS_PAD = 9,
-__VNIFILTER_ENTRY_STATS_MAX = 10,
-}
-pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START;
-pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6;
-pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS;
-pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_19 {
-VXLAN_VNIFILTER_ENTRY_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY_START = 1,
-VXLAN_VNIFILTER_ENTRY_END = 2,
-VXLAN_VNIFILTER_ENTRY_GROUP = 3,
-VXLAN_VNIFILTER_ENTRY_GROUP6 = 4,
-VXLAN_VNIFILTER_ENTRY_STATS = 5,
-__VXLAN_VNIFILTER_ENTRY_MAX = 6,
-}
-pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY;
-pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_20 {
-VXLAN_VNIFILTER_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY = 1,
-__VXLAN_VNIFILTER_MAX = 2,
-}
-pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC;
-pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID;
-pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP;
-pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK;
-pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL;
-pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL;
-pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS;
-pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING;
-pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING;
-pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT;
-pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE;
-pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY;
-pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC;
-pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS;
-pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS;
-pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT;
-pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6;
-pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6;
-pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX;
-pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX;
-pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX;
-pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP;
-pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL;
-pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA;
-pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL;
-pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE;
-pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT;
-pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF;
-pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER;
-pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_21 {
-IFLA_VXLAN_UNSPEC = 0,
-IFLA_VXLAN_ID = 1,
-IFLA_VXLAN_GROUP = 2,
-IFLA_VXLAN_LINK = 3,
-IFLA_VXLAN_LOCAL = 4,
-IFLA_VXLAN_TTL = 5,
-IFLA_VXLAN_TOS = 6,
-IFLA_VXLAN_LEARNING = 7,
-IFLA_VXLAN_AGEING = 8,
-IFLA_VXLAN_LIMIT = 9,
-IFLA_VXLAN_PORT_RANGE = 10,
-IFLA_VXLAN_PROXY = 11,
-IFLA_VXLAN_RSC = 12,
-IFLA_VXLAN_L2MISS = 13,
-IFLA_VXLAN_L3MISS = 14,
-IFLA_VXLAN_PORT = 15,
-IFLA_VXLAN_GROUP6 = 16,
-IFLA_VXLAN_LOCAL6 = 17,
-IFLA_VXLAN_UDP_CSUM = 18,
-IFLA_VXLAN_UDP_ZERO_CSUM6_TX = 19,
-IFLA_VXLAN_UDP_ZERO_CSUM6_RX = 20,
-IFLA_VXLAN_REMCSUM_TX = 21,
-IFLA_VXLAN_REMCSUM_RX = 22,
-IFLA_VXLAN_GBP = 23,
-IFLA_VXLAN_REMCSUM_NOPARTIAL = 24,
-IFLA_VXLAN_COLLECT_METADATA = 25,
-IFLA_VXLAN_LABEL = 26,
-IFLA_VXLAN_GPE = 27,
-IFLA_VXLAN_TTL_INHERIT = 28,
-IFLA_VXLAN_DF = 29,
-IFLA_VXLAN_VNIFILTER = 30,
-__IFLA_VXLAN_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vxlan_port_range {
-pub low: __be16,
-pub high: __be16,
-}
-impl ifla_vxlan_df {
-pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_vxlan_df {
-VXLAN_DF_UNSET = 0,
-VXLAN_DF_SET = 1,
-VXLAN_DF_INHERIT = 2,
-__VXLAN_DF_END = 3,
-}
-pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC;
-pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID;
-pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE;
-pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL;
-pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS;
-pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT;
-pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA;
-pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6;
-pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX;
-pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL;
-pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT;
-pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF;
-pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT;
-pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_22 {
-IFLA_GENEVE_UNSPEC = 0,
-IFLA_GENEVE_ID = 1,
-IFLA_GENEVE_REMOTE = 2,
-IFLA_GENEVE_TTL = 3,
-IFLA_GENEVE_TOS = 4,
-IFLA_GENEVE_PORT = 5,
-IFLA_GENEVE_COLLECT_METADATA = 6,
-IFLA_GENEVE_REMOTE6 = 7,
-IFLA_GENEVE_UDP_CSUM = 8,
-IFLA_GENEVE_UDP_ZERO_CSUM6_TX = 9,
-IFLA_GENEVE_UDP_ZERO_CSUM6_RX = 10,
-IFLA_GENEVE_LABEL = 11,
-IFLA_GENEVE_TTL_INHERIT = 12,
-IFLA_GENEVE_DF = 13,
-IFLA_GENEVE_INNER_PROTO_INHERIT = 14,
-__IFLA_GENEVE_MAX = 15,
-}
-impl ifla_geneve_df {
-pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_geneve_df {
-GENEVE_DF_UNSET = 0,
-GENEVE_DF_SET = 1,
-GENEVE_DF_INHERIT = 2,
-__GENEVE_DF_END = 3,
-}
-pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC;
-pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT;
-pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE;
-pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN;
-pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE;
-pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_23 {
-IFLA_BAREUDP_UNSPEC = 0,
-IFLA_BAREUDP_PORT = 1,
-IFLA_BAREUDP_ETHERTYPE = 2,
-IFLA_BAREUDP_SRCPORT_MIN = 3,
-IFLA_BAREUDP_MULTIPROTO_MODE = 4,
-__IFLA_BAREUDP_MAX = 5,
-}
-pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC;
-pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD;
-pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_24 {
-IFLA_PPP_UNSPEC = 0,
-IFLA_PPP_DEV_FD = 1,
-__IFLA_PPP_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_gtp_role {
-GTP_ROLE_GGSN = 0,
-GTP_ROLE_SGSN = 1,
-}
-pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC;
-pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0;
-pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1;
-pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE;
-pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE;
-pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS;
-pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT;
-pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_25 {
-IFLA_GTP_UNSPEC = 0,
-IFLA_GTP_FD0 = 1,
-IFLA_GTP_FD1 = 2,
-IFLA_GTP_PDP_HASHSIZE = 3,
-IFLA_GTP_ROLE = 4,
-IFLA_GTP_CREATE_SOCKETS = 5,
-IFLA_GTP_RESTART_COUNT = 6,
-__IFLA_GTP_MAX = 7,
-}
-pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC;
-pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE;
-pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE;
-pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON;
-pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY;
-pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY;
-pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER;
-pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL;
-pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET;
-pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE;
-pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS;
-pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY;
-pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT;
-pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC;
-pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY;
-pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP;
-pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF;
-pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE;
-pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS;
-pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL;
-pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE;
-pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE;
-pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT;
-pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO;
-pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO;
-pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY;
-pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM;
-pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB;
-pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY;
-pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE;
-pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX;
-pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET;
-pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_26 {
-IFLA_BOND_UNSPEC = 0,
-IFLA_BOND_MODE = 1,
-IFLA_BOND_ACTIVE_SLAVE = 2,
-IFLA_BOND_MIIMON = 3,
-IFLA_BOND_UPDELAY = 4,
-IFLA_BOND_DOWNDELAY = 5,
-IFLA_BOND_USE_CARRIER = 6,
-IFLA_BOND_ARP_INTERVAL = 7,
-IFLA_BOND_ARP_IP_TARGET = 8,
-IFLA_BOND_ARP_VALIDATE = 9,
-IFLA_BOND_ARP_ALL_TARGETS = 10,
-IFLA_BOND_PRIMARY = 11,
-IFLA_BOND_PRIMARY_RESELECT = 12,
-IFLA_BOND_FAIL_OVER_MAC = 13,
-IFLA_BOND_XMIT_HASH_POLICY = 14,
-IFLA_BOND_RESEND_IGMP = 15,
-IFLA_BOND_NUM_PEER_NOTIF = 16,
-IFLA_BOND_ALL_SLAVES_ACTIVE = 17,
-IFLA_BOND_MIN_LINKS = 18,
-IFLA_BOND_LP_INTERVAL = 19,
-IFLA_BOND_PACKETS_PER_SLAVE = 20,
-IFLA_BOND_AD_LACP_RATE = 21,
-IFLA_BOND_AD_SELECT = 22,
-IFLA_BOND_AD_INFO = 23,
-IFLA_BOND_AD_ACTOR_SYS_PRIO = 24,
-IFLA_BOND_AD_USER_PORT_KEY = 25,
-IFLA_BOND_AD_ACTOR_SYSTEM = 26,
-IFLA_BOND_TLB_DYNAMIC_LB = 27,
-IFLA_BOND_PEER_NOTIF_DELAY = 28,
-IFLA_BOND_AD_LACP_ACTIVE = 29,
-IFLA_BOND_MISSED_MAX = 30,
-IFLA_BOND_NS_IP6_TARGET = 31,
-__IFLA_BOND_MAX = 32,
-}
-pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC;
-pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR;
-pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS;
-pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC;
-pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_27 {
-IFLA_BOND_AD_INFO_UNSPEC = 0,
-IFLA_BOND_AD_INFO_AGGREGATOR = 1,
-IFLA_BOND_AD_INFO_NUM_PORTS = 2,
-IFLA_BOND_AD_INFO_ACTOR_KEY = 3,
-IFLA_BOND_AD_INFO_PARTNER_KEY = 4,
-IFLA_BOND_AD_INFO_PARTNER_MAC = 5,
-__IFLA_BOND_AD_INFO_MAX = 6,
-}
-pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC;
-pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE;
-pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS;
-pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT;
-pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR;
-pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID;
-pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID;
-pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO;
-pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_28 {
-IFLA_BOND_SLAVE_UNSPEC = 0,
-IFLA_BOND_SLAVE_STATE = 1,
-IFLA_BOND_SLAVE_MII_STATUS = 2,
-IFLA_BOND_SLAVE_LINK_FAILURE_COUNT = 3,
-IFLA_BOND_SLAVE_PERM_HWADDR = 4,
-IFLA_BOND_SLAVE_QUEUE_ID = 5,
-IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 6,
-IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 7,
-IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 8,
-IFLA_BOND_SLAVE_PRIO = 9,
-__IFLA_BOND_SLAVE_MAX = 10,
-}
-pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC;
-pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO;
-pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_29 {
-IFLA_VF_INFO_UNSPEC = 0,
-IFLA_VF_INFO = 1,
-__IFLA_VF_INFO_MAX = 2,
-}
-pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC;
-pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC;
-pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN;
-pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE;
-pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK;
-pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE;
-pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE;
-pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN;
-pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS;
-pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST;
-pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID;
-pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID;
-pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST;
-pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST;
-pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_30 {
-IFLA_VF_UNSPEC = 0,
-IFLA_VF_MAC = 1,
-IFLA_VF_VLAN = 2,
-IFLA_VF_TX_RATE = 3,
-IFLA_VF_SPOOFCHK = 4,
-IFLA_VF_LINK_STATE = 5,
-IFLA_VF_RATE = 6,
-IFLA_VF_RSS_QUERY_EN = 7,
-IFLA_VF_STATS = 8,
-IFLA_VF_TRUST = 9,
-IFLA_VF_IB_NODE_GUID = 10,
-IFLA_VF_IB_PORT_GUID = 11,
-IFLA_VF_VLAN_LIST = 12,
-IFLA_VF_BROADCAST = 13,
-__IFLA_VF_MAX = 14,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_mac {
-pub vf: __u32,
-pub mac: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_broadcast {
-pub broadcast: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-}
-pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC;
-pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO;
-pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_31 {
-IFLA_VF_VLAN_INFO_UNSPEC = 0,
-IFLA_VF_VLAN_INFO = 1,
-__IFLA_VF_VLAN_INFO_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan_info {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-pub vlan_proto: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_tx_rate {
-pub vf: __u32,
-pub rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rate {
-pub vf: __u32,
-pub min_tx_rate: __u32,
-pub max_tx_rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_spoofchk {
-pub vf: __u32,
-pub setting: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_guid {
-pub vf: __u32,
-pub guid: __u64,
-}
-pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO;
-pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE;
-pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE;
-pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_32 {
-IFLA_VF_LINK_STATE_AUTO = 0,
-IFLA_VF_LINK_STATE_ENABLE = 1,
-IFLA_VF_LINK_STATE_DISABLE = 2,
-__IFLA_VF_LINK_STATE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_link_state {
-pub vf: __u32,
-pub link_state: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rss_query_en {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS;
-pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS;
-pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES;
-pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES;
-pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST;
-pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST;
-pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD;
-pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED;
-pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED;
-pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_33 {
-IFLA_VF_STATS_RX_PACKETS = 0,
-IFLA_VF_STATS_TX_PACKETS = 1,
-IFLA_VF_STATS_RX_BYTES = 2,
-IFLA_VF_STATS_TX_BYTES = 3,
-IFLA_VF_STATS_BROADCAST = 4,
-IFLA_VF_STATS_MULTICAST = 5,
-IFLA_VF_STATS_PAD = 6,
-IFLA_VF_STATS_RX_DROPPED = 7,
-IFLA_VF_STATS_TX_DROPPED = 8,
-__IFLA_VF_STATS_MAX = 9,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_trust {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC;
-pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT;
-pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_34 {
-IFLA_VF_PORT_UNSPEC = 0,
-IFLA_VF_PORT = 1,
-__IFLA_VF_PORT_MAX = 2,
-}
-pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC;
-pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF;
-pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE;
-pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE;
-pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID;
-pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID;
-pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST;
-pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE;
-pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_35 {
-IFLA_PORT_UNSPEC = 0,
-IFLA_PORT_VF = 1,
-IFLA_PORT_PROFILE = 2,
-IFLA_PORT_VSI_TYPE = 3,
-IFLA_PORT_INSTANCE_UUID = 4,
-IFLA_PORT_HOST_UUID = 5,
-IFLA_PORT_REQUEST = 6,
-IFLA_PORT_RESPONSE = 7,
-__IFLA_PORT_MAX = 8,
-}
-pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE;
-pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR;
-pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE;
-pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_36 {
-PORT_REQUEST_PREASSOCIATE = 0,
-PORT_REQUEST_PREASSOCIATE_RR = 1,
-PORT_REQUEST_ASSOCIATE = 2,
-PORT_REQUEST_DISASSOCIATE = 3,
-}
-pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS;
-pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT;
-pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID;
-pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION;
-pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION;
-pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC;
-pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS;
-pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS;
-pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID;
-pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE;
-pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_37 {
-PORT_VDP_RESPONSE_SUCCESS = 0,
-PORT_VDP_RESPONSE_INVALID_FORMAT = 1,
-PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES = 2,
-PORT_VDP_RESPONSE_UNUSED_VTID = 3,
-PORT_VDP_RESPONSE_VTID_VIOLATION = 4,
-PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION = 5,
-PORT_VDP_RESPONSE_OUT_OF_SYNC = 6,
-PORT_PROFILE_RESPONSE_SUCCESS = 256,
-PORT_PROFILE_RESPONSE_INPROGRESS = 257,
-PORT_PROFILE_RESPONSE_INVALID = 258,
-PORT_PROFILE_RESPONSE_BADSTATE = 259,
-PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260,
-PORT_PROFILE_RESPONSE_ERROR = 261,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_port_vsi {
-pub vsi_mgr_id: __u8,
-pub vsi_type_id: [__u8; 3usize],
-pub vsi_type_version: __u8,
-pub pad: [__u8; 3usize],
-}
-pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC;
-pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY;
-pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE;
-pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST;
-pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_38 {
-IFLA_IPOIB_UNSPEC = 0,
-IFLA_IPOIB_PKEY = 1,
-IFLA_IPOIB_MODE = 2,
-IFLA_IPOIB_UMCAST = 3,
-__IFLA_IPOIB_MAX = 4,
-}
-pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM;
-pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_39 {
-IPOIB_MODE_DATAGRAM = 0,
-IPOIB_MODE_CONNECTED = 1,
-}
-pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR;
-pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP;
-pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_40 {
-HSR_PROTOCOL_HSR = 0,
-HSR_PROTOCOL_PRP = 1,
-HSR_PROTOCOL_MAX = 2,
-}
-pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC;
-pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1;
-pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2;
-pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC;
-pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR;
-pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR;
-pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION;
-pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL;
-pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_41 {
-IFLA_HSR_UNSPEC = 0,
-IFLA_HSR_SLAVE1 = 1,
-IFLA_HSR_SLAVE2 = 2,
-IFLA_HSR_MULTICAST_SPEC = 3,
-IFLA_HSR_SUPERVISION_ADDR = 4,
-IFLA_HSR_SEQ_NR = 5,
-IFLA_HSR_VERSION = 6,
-IFLA_HSR_PROTOCOL = 7,
-__IFLA_HSR_MAX = 8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct if_stats_msg {
-pub family: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub ifindex: __u32,
-pub filter_mask: __u32,
-}
-pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC;
-pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64;
-pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS;
-pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE;
-pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS;
-pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC;
-pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_42 {
-IFLA_STATS_UNSPEC = 0,
-IFLA_STATS_LINK_64 = 1,
-IFLA_STATS_LINK_XSTATS = 2,
-IFLA_STATS_LINK_XSTATS_SLAVE = 3,
-IFLA_STATS_LINK_OFFLOAD_XSTATS = 4,
-IFLA_STATS_AF_SPEC = 5,
-__IFLA_STATS_MAX = 6,
-}
-pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC;
-pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS;
-pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_43 {
-IFLA_STATS_GETSET_UNSPEC = 0,
-IFLA_STATS_GET_FILTERS = 1,
-IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2,
-__IFLA_STATS_GETSET_MAX = 3,
-}
-pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC;
-pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE;
-pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND;
-pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_44 {
-LINK_XSTATS_TYPE_UNSPEC = 0,
-LINK_XSTATS_TYPE_BRIDGE = 1,
-LINK_XSTATS_TYPE_BOND = 2,
-__LINK_XSTATS_TYPE_MAX = 3,
-}
-pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO;
-pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_45 {
-IFLA_OFFLOAD_XSTATS_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_CPU_HIT = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO = 2,
-IFLA_OFFLOAD_XSTATS_L3_STATS = 3,
-__IFLA_OFFLOAD_XSTATS_MAX = 4,
-}
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED;
-pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_46 {
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2,
-__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3,
-}
-pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE;
-pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV;
-pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB;
-pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW;
-pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_47 {
-XDP_ATTACHED_NONE = 0,
-XDP_ATTACHED_DRV = 1,
-XDP_ATTACHED_SKB = 2,
-XDP_ATTACHED_HW = 3,
-XDP_ATTACHED_MULTI = 4,
-}
-pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC;
-pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD;
-pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED;
-pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS;
-pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID;
-pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID;
-pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID;
-pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID;
-pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD;
-pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_48 {
-IFLA_XDP_UNSPEC = 0,
-IFLA_XDP_FD = 1,
-IFLA_XDP_ATTACHED = 2,
-IFLA_XDP_FLAGS = 3,
-IFLA_XDP_PROG_ID = 4,
-IFLA_XDP_DRV_PROG_ID = 5,
-IFLA_XDP_SKB_PROG_ID = 6,
-IFLA_XDP_HW_PROG_ID = 7,
-IFLA_XDP_EXPECTED_FD = 8,
-__IFLA_XDP_MAX = 9,
-}
-pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE;
-pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT;
-pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES;
-pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER;
-pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS;
-pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND;
-pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_49 {
-IFLA_EVENT_NONE = 0,
-IFLA_EVENT_REBOOT = 1,
-IFLA_EVENT_FEATURES = 2,
-IFLA_EVENT_BONDING_FAILOVER = 3,
-IFLA_EVENT_NOTIFY_PEERS = 4,
-IFLA_EVENT_IGMP_RESEND = 5,
-IFLA_EVENT_BONDING_OPTIONS = 6,
-}
-pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC;
-pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER;
-pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP;
-pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE;
-pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI;
-pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR;
-pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST;
-pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE;
-pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES;
-pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES;
-pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_50 {
-IFLA_TUN_UNSPEC = 0,
-IFLA_TUN_OWNER = 1,
-IFLA_TUN_GROUP = 2,
-IFLA_TUN_TYPE = 3,
-IFLA_TUN_PI = 4,
-IFLA_TUN_VNET_HDR = 5,
-IFLA_TUN_PERSIST = 6,
-IFLA_TUN_MULTI_QUEUE = 7,
-IFLA_TUN_NUM_QUEUES = 8,
-IFLA_TUN_NUM_DISABLED_QUEUES = 9,
-__IFLA_TUN_MAX = 10,
-}
-pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC;
-pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID;
-pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS;
-pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_51 {
-IFLA_RMNET_UNSPEC = 0,
-IFLA_RMNET_MUX_ID = 1,
-IFLA_RMNET_FLAGS = 2,
-__IFLA_RMNET_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_rmnet_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC;
-pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET;
-pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_52 {
-IFLA_MCTP_UNSPEC = 0,
-IFLA_MCTP_NET = 1,
-__IFLA_MCTP_MAX = 2,
-}
-pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC;
-pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER;
-pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_53 {
-IFLA_DSA_UNSPEC = 0,
-IFLA_DSA_MASTER = 1,
-__IFLA_DSA_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifaddrmsg {
-pub ifa_family: __u8,
-pub ifa_prefixlen: __u8,
-pub ifa_flags: __u8,
-pub ifa_scope: __u8,
-pub ifa_index: __u32,
-}
-pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC;
-pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS;
-pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL;
-pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL;
-pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST;
-pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST;
-pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO;
-pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST;
-pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS;
-pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY;
-pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID;
-pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO;
-pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_54 {
-IFA_UNSPEC = 0,
-IFA_ADDRESS = 1,
-IFA_LOCAL = 2,
-IFA_LABEL = 3,
-IFA_BROADCAST = 4,
-IFA_ANYCAST = 5,
-IFA_CACHEINFO = 6,
-IFA_MULTICAST = 7,
-IFA_FLAGS = 8,
-IFA_RT_PRIORITY = 9,
-IFA_TARGET_NETNSID = 10,
-IFA_PROTO = 11,
-__IFA_MAX = 12,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifa_cacheinfo {
-pub ifa_prefered: __u32,
-pub ifa_valid: __u32,
-pub cstamp: __u32,
-pub tstamp: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndmsg {
-pub ndm_family: __u8,
-pub ndm_pad1: __u8,
-pub ndm_pad2: __u16,
-pub ndm_ifindex: __s32,
-pub ndm_state: __u16,
-pub ndm_flags: __u8,
-pub ndm_type: __u8,
-}
-pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC;
-pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST;
-pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR;
-pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO;
-pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES;
-pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN;
-pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT;
-pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI;
-pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX;
-pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER;
-pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID;
-pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI;
-pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL;
-pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID;
-pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS;
-pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT;
-pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK;
-pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK;
-pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_55 {
-NDA_UNSPEC = 0,
-NDA_DST = 1,
-NDA_LLADDR = 2,
-NDA_CACHEINFO = 3,
-NDA_PROBES = 4,
-NDA_VLAN = 5,
-NDA_PORT = 6,
-NDA_VNI = 7,
-NDA_IFINDEX = 8,
-NDA_MASTER = 9,
-NDA_LINK_NETNSID = 10,
-NDA_SRC_VNI = 11,
-NDA_PROTOCOL = 12,
-NDA_NH_ID = 13,
-NDA_FDB_EXT_ATTRS = 14,
-NDA_FLAGS_EXT = 15,
-NDA_NDM_STATE_MASK = 16,
-NDA_NDM_FLAGS_MASK = 17,
-__NDA_MAX = 18,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nda_cacheinfo {
-pub ndm_confirmed: __u32,
-pub ndm_used: __u32,
-pub ndm_updated: __u32,
-pub ndm_refcnt: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_stats {
-pub ndts_allocs: __u64,
-pub ndts_destroys: __u64,
-pub ndts_hash_grows: __u64,
-pub ndts_res_failed: __u64,
-pub ndts_lookups: __u64,
-pub ndts_hits: __u64,
-pub ndts_rcv_probes_mcast: __u64,
-pub ndts_rcv_probes_ucast: __u64,
-pub ndts_periodic_gc_runs: __u64,
-pub ndts_forced_gc_runs: __u64,
-pub ndts_table_fulls: __u64,
-}
-pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC;
-pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX;
-pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT;
-pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME;
-pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME;
-pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME;
-pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME;
-pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME;
-pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN;
-pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES;
-pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES;
-pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES;
-pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY;
-pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY;
-pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN;
-pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME;
-pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES;
-pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES;
-pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD;
-pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS;
-pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_56 {
-NDTPA_UNSPEC = 0,
-NDTPA_IFINDEX = 1,
-NDTPA_REFCNT = 2,
-NDTPA_REACHABLE_TIME = 3,
-NDTPA_BASE_REACHABLE_TIME = 4,
-NDTPA_RETRANS_TIME = 5,
-NDTPA_GC_STALETIME = 6,
-NDTPA_DELAY_PROBE_TIME = 7,
-NDTPA_QUEUE_LEN = 8,
-NDTPA_APP_PROBES = 9,
-NDTPA_UCAST_PROBES = 10,
-NDTPA_MCAST_PROBES = 11,
-NDTPA_ANYCAST_DELAY = 12,
-NDTPA_PROXY_DELAY = 13,
-NDTPA_PROXY_QLEN = 14,
-NDTPA_LOCKTIME = 15,
-NDTPA_QUEUE_LENBYTES = 16,
-NDTPA_MCAST_REPROBES = 17,
-NDTPA_PAD = 18,
-NDTPA_INTERVAL_PROBE_TIME_MS = 19,
-__NDTPA_MAX = 20,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndtmsg {
-pub ndtm_family: __u8,
-pub ndtm_pad1: __u8,
-pub ndtm_pad2: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_config {
-pub ndtc_key_len: __u16,
-pub ndtc_entry_size: __u16,
-pub ndtc_entries: __u32,
-pub ndtc_last_flush: __u32,
-pub ndtc_last_rand: __u32,
-pub ndtc_hash_rnd: __u32,
-pub ndtc_hash_mask: __u32,
-pub ndtc_hash_chain_gc: __u32,
-pub ndtc_proxy_qlen: __u32,
-}
-pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC;
-pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME;
-pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1;
-pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2;
-pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3;
-pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG;
-pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS;
-pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS;
-pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL;
-pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD;
-pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_57 {
-NDTA_UNSPEC = 0,
-NDTA_NAME = 1,
-NDTA_THRESH1 = 2,
-NDTA_THRESH2 = 3,
-NDTA_THRESH3 = 4,
-NDTA_CONFIG = 5,
-NDTA_PARMS = 6,
-NDTA_STATS = 7,
-NDTA_GC_INTERVAL = 8,
-NDTA_PAD = 9,
-__NDTA_MAX = 10,
-}
-pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT;
-pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_58 {
-FDB_NOTIFY_BIT = 1,
-FDB_NOTIFY_INACTIVE_BIT = 2,
-}
-pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC;
-pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY;
-pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH;
-pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_59 {
-NFEA_UNSPEC = 0,
-NFEA_ACTIVITY_NOTIFY = 1,
-NFEA_DONT_REFRESH = 2,
-__NFEA_MAX = 3,
-}
-pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK;
-pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK;
-pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK;
-pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR;
-pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR;
-pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR;
-pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE;
-pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE;
-pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE;
-pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH;
-pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH;
-pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH;
-pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE;
-pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE;
-pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE;
-pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC;
-pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC;
-pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC;
-pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS;
-pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS;
-pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS;
-pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER;
-pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER;
-pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER;
-pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION;
-pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION;
-pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION;
-pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX;
-pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST;
-pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST;
-pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL;
-pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL;
-pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL;
-pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT;
-pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL;
-pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL;
-pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL;
-pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB;
-pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB;
-pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF;
-pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF;
-pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF;
-pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB;
-pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB;
-pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB;
-pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID;
-pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID;
-pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID;
-pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS;
-pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS;
-pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS;
-pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT;
-pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN;
-pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN;
-pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN;
-pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP;
-pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP;
-pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP;
-pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP;
-pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP;
-pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP;
-pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN;
-pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN;
-pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN;
-pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET;
-pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET;
-pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET;
-pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL;
-pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL;
-pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL;
-pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_60 {
-RTM_BASE = 16,
-RTM_DELLINK = 17,
-RTM_GETLINK = 18,
-RTM_SETLINK = 19,
-RTM_NEWADDR = 20,
-RTM_DELADDR = 21,
-RTM_GETADDR = 22,
-RTM_NEWROUTE = 24,
-RTM_DELROUTE = 25,
-RTM_GETROUTE = 26,
-RTM_NEWNEIGH = 28,
-RTM_DELNEIGH = 29,
-RTM_GETNEIGH = 30,
-RTM_NEWRULE = 32,
-RTM_DELRULE = 33,
-RTM_GETRULE = 34,
-RTM_NEWQDISC = 36,
-RTM_DELQDISC = 37,
-RTM_GETQDISC = 38,
-RTM_NEWTCLASS = 40,
-RTM_DELTCLASS = 41,
-RTM_GETTCLASS = 42,
-RTM_NEWTFILTER = 44,
-RTM_DELTFILTER = 45,
-RTM_GETTFILTER = 46,
-RTM_NEWACTION = 48,
-RTM_DELACTION = 49,
-RTM_GETACTION = 50,
-RTM_NEWPREFIX = 52,
-RTM_GETMULTICAST = 58,
-RTM_GETANYCAST = 62,
-RTM_NEWNEIGHTBL = 64,
-RTM_GETNEIGHTBL = 66,
-RTM_SETNEIGHTBL = 67,
-RTM_NEWNDUSEROPT = 68,
-RTM_NEWADDRLABEL = 72,
-RTM_DELADDRLABEL = 73,
-RTM_GETADDRLABEL = 74,
-RTM_GETDCB = 78,
-RTM_SETDCB = 79,
-RTM_NEWNETCONF = 80,
-RTM_DELNETCONF = 81,
-RTM_GETNETCONF = 82,
-RTM_NEWMDB = 84,
-RTM_DELMDB = 85,
-RTM_GETMDB = 86,
-RTM_NEWNSID = 88,
-RTM_DELNSID = 89,
-RTM_GETNSID = 90,
-RTM_NEWSTATS = 92,
-RTM_GETSTATS = 94,
-RTM_SETSTATS = 95,
-RTM_NEWCACHEREPORT = 96,
-RTM_NEWCHAIN = 100,
-RTM_DELCHAIN = 101,
-RTM_GETCHAIN = 102,
-RTM_NEWNEXTHOP = 104,
-RTM_DELNEXTHOP = 105,
-RTM_GETNEXTHOP = 106,
-RTM_NEWLINKPROP = 108,
-RTM_DELLINKPROP = 109,
-RTM_GETLINKPROP = 110,
-RTM_NEWVLAN = 112,
-RTM_DELVLAN = 113,
-RTM_GETVLAN = 114,
-RTM_NEWNEXTHOPBUCKET = 116,
-RTM_DELNEXTHOPBUCKET = 117,
-RTM_GETNEXTHOPBUCKET = 118,
-RTM_NEWTUNNEL = 120,
-RTM_DELTUNNEL = 121,
-RTM_GETTUNNEL = 122,
-__RTM_MAX = 123,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtattr {
-pub rta_len: crate::ctypes::c_ushort,
-pub rta_type: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtmsg {
-pub rtm_family: crate::ctypes::c_uchar,
-pub rtm_dst_len: crate::ctypes::c_uchar,
-pub rtm_src_len: crate::ctypes::c_uchar,
-pub rtm_tos: crate::ctypes::c_uchar,
-pub rtm_table: crate::ctypes::c_uchar,
-pub rtm_protocol: crate::ctypes::c_uchar,
-pub rtm_scope: crate::ctypes::c_uchar,
-pub rtm_type: crate::ctypes::c_uchar,
-pub rtm_flags: crate::ctypes::c_uint,
-}
-pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC;
-pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST;
-pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL;
-pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST;
-pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST;
-pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST;
-pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE;
-pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE;
-pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT;
-pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW;
-pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT;
-pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE;
-pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_61 {
-RTN_UNSPEC = 0,
-RTN_UNICAST = 1,
-RTN_LOCAL = 2,
-RTN_BROADCAST = 3,
-RTN_ANYCAST = 4,
-RTN_MULTICAST = 5,
-RTN_BLACKHOLE = 6,
-RTN_UNREACHABLE = 7,
-RTN_PROHIBIT = 8,
-RTN_THROW = 9,
-RTN_NAT = 10,
-RTN_XRESOLVE = 11,
-__RTN_MAX = 12,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_scope_t {
-RT_SCOPE_UNIVERSE = 0,
-RT_SCOPE_SITE = 200,
-RT_SCOPE_LINK = 253,
-RT_SCOPE_HOST = 254,
-RT_SCOPE_NOWHERE = 255,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_class_t {
-RT_TABLE_UNSPEC = 0,
-RT_TABLE_COMPAT = 252,
-RT_TABLE_DEFAULT = 253,
-RT_TABLE_MAIN = 254,
-RT_TABLE_LOCAL = 255,
-RT_TABLE_MAX = 4294967295,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtattr_type_t {
-RTA_UNSPEC = 0,
-RTA_DST = 1,
-RTA_SRC = 2,
-RTA_IIF = 3,
-RTA_OIF = 4,
-RTA_GATEWAY = 5,
-RTA_PRIORITY = 6,
-RTA_PREFSRC = 7,
-RTA_METRICS = 8,
-RTA_MULTIPATH = 9,
-RTA_PROTOINFO = 10,
-RTA_FLOW = 11,
-RTA_CACHEINFO = 12,
-RTA_SESSION = 13,
-RTA_MP_ALGO = 14,
-RTA_TABLE = 15,
-RTA_MARK = 16,
-RTA_MFC_STATS = 17,
-RTA_VIA = 18,
-RTA_NEWDST = 19,
-RTA_PREF = 20,
-RTA_ENCAP_TYPE = 21,
-RTA_ENCAP = 22,
-RTA_EXPIRES = 23,
-RTA_PAD = 24,
-RTA_UID = 25,
-RTA_TTL_PROPAGATE = 26,
-RTA_IP_PROTO = 27,
-RTA_SPORT = 28,
-RTA_DPORT = 29,
-RTA_NH_ID = 30,
-__RTA_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnexthop {
-pub rtnh_len: crate::ctypes::c_ushort,
-pub rtnh_flags: crate::ctypes::c_uchar,
-pub rtnh_hops: crate::ctypes::c_uchar,
-pub rtnh_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rtvia {
-pub rtvia_family: __kernel_sa_family_t,
-pub rtvia_addr: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_cacheinfo {
-pub rta_clntref: __u32,
-pub rta_lastuse: __u32,
-pub rta_expires: __s32,
-pub rta_error: __u32,
-pub rta_used: __u32,
-pub rta_id: __u32,
-pub rta_ts: __u32,
-pub rta_tsage: __u32,
-}
-pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC;
-pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK;
-pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU;
-pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW;
-pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT;
-pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR;
-pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH;
-pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND;
-pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS;
-pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING;
-pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT;
-pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND;
-pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES;
-pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN;
-pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND;
-pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK;
-pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO;
-pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE;
-pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_62 {
-RTAX_UNSPEC = 0,
-RTAX_LOCK = 1,
-RTAX_MTU = 2,
-RTAX_WINDOW = 3,
-RTAX_RTT = 4,
-RTAX_RTTVAR = 5,
-RTAX_SSTHRESH = 6,
-RTAX_CWND = 7,
-RTAX_ADVMSS = 8,
-RTAX_REORDERING = 9,
-RTAX_HOPLIMIT = 10,
-RTAX_INITCWND = 11,
-RTAX_FEATURES = 12,
-RTAX_RTO_MIN = 13,
-RTAX_INITRWND = 14,
-RTAX_QUICKACK = 15,
-RTAX_CC_ALGO = 16,
-RTAX_FASTOPEN_NO_COOKIE = 17,
-__RTAX_MAX = 18,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rta_session {
-pub proto: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub u: rta_session__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union rta_session__bindgen_ty_1 {
-pub ports: rta_session__bindgen_ty_1__bindgen_ty_1,
-pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2,
-pub spi: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_1 {
-pub sport: __u16,
-pub dport: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_2 {
-pub type_: __u8,
-pub code: __u8,
-pub ident: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_mfc_stats {
-pub mfcs_packets: __u64,
-pub mfcs_bytes: __u64,
-pub mfcs_wrong_if: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtgenmsg {
-pub rtgen_family: crate::ctypes::c_uchar,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifinfomsg {
-pub ifi_family: crate::ctypes::c_uchar,
-pub __ifi_pad: crate::ctypes::c_uchar,
-pub ifi_type: crate::ctypes::c_ushort,
-pub ifi_index: crate::ctypes::c_int,
-pub ifi_flags: crate::ctypes::c_uint,
-pub ifi_change: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefixmsg {
-pub prefix_family: crate::ctypes::c_uchar,
-pub prefix_pad1: crate::ctypes::c_uchar,
-pub prefix_pad2: crate::ctypes::c_ushort,
-pub prefix_ifindex: crate::ctypes::c_int,
-pub prefix_type: crate::ctypes::c_uchar,
-pub prefix_len: crate::ctypes::c_uchar,
-pub prefix_flags: crate::ctypes::c_uchar,
-pub prefix_pad3: crate::ctypes::c_uchar,
-}
-pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC;
-pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS;
-pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO;
-pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_63 {
-PREFIX_UNSPEC = 0,
-PREFIX_ADDRESS = 1,
-PREFIX_CACHEINFO = 2,
-__PREFIX_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefix_cacheinfo {
-pub preferred_time: __u32,
-pub valid_time: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcmsg {
-pub tcm_family: crate::ctypes::c_uchar,
-pub tcm__pad1: crate::ctypes::c_uchar,
-pub tcm__pad2: crate::ctypes::c_ushort,
-pub tcm_ifindex: crate::ctypes::c_int,
-pub tcm_handle: __u32,
-pub tcm_parent: __u32,
-pub tcm_info: __u32,
-}
-pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC;
-pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND;
-pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS;
-pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS;
-pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS;
-pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE;
-pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT;
-pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2;
-pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB;
-pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD;
-pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE;
-pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN;
-pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD;
-pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK;
-pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK;
-pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS;
-pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_64 {
-TCA_UNSPEC = 0,
-TCA_KIND = 1,
-TCA_OPTIONS = 2,
-TCA_STATS = 3,
-TCA_XSTATS = 4,
-TCA_RATE = 5,
-TCA_FCNT = 6,
-TCA_STATS2 = 7,
-TCA_STAB = 8,
-TCA_PAD = 9,
-TCA_DUMP_INVISIBLE = 10,
-TCA_CHAIN = 11,
-TCA_HW_OFFLOAD = 12,
-TCA_INGRESS_BLOCK = 13,
-TCA_EGRESS_BLOCK = 14,
-TCA_DUMP_FLAGS = 15,
-__TCA_MAX = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nduseroptmsg {
-pub nduseropt_family: crate::ctypes::c_uchar,
-pub nduseropt_pad1: crate::ctypes::c_uchar,
-pub nduseropt_opts_len: crate::ctypes::c_ushort,
-pub nduseropt_ifindex: crate::ctypes::c_int,
-pub nduseropt_icmp_type: __u8,
-pub nduseropt_icmp_code: __u8,
-pub nduseropt_pad2: crate::ctypes::c_ushort,
-pub nduseropt_pad3: crate::ctypes::c_uint,
-}
-pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC;
-pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR;
-pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_65 {
-NDUSEROPT_UNSPEC = 0,
-NDUSEROPT_SRCADDR = 1,
-__NDUSEROPT_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtnetlink_groups {
-RTNLGRP_NONE = 0,
-RTNLGRP_LINK = 1,
-RTNLGRP_NOTIFY = 2,
-RTNLGRP_NEIGH = 3,
-RTNLGRP_TC = 4,
-RTNLGRP_IPV4_IFADDR = 5,
-RTNLGRP_IPV4_MROUTE = 6,
-RTNLGRP_IPV4_ROUTE = 7,
-RTNLGRP_IPV4_RULE = 8,
-RTNLGRP_IPV6_IFADDR = 9,
-RTNLGRP_IPV6_MROUTE = 10,
-RTNLGRP_IPV6_ROUTE = 11,
-RTNLGRP_IPV6_IFINFO = 12,
-RTNLGRP_DECnet_IFADDR = 13,
-RTNLGRP_NOP2 = 14,
-RTNLGRP_DECnet_ROUTE = 15,
-RTNLGRP_DECnet_RULE = 16,
-RTNLGRP_NOP4 = 17,
-RTNLGRP_IPV6_PREFIX = 18,
-RTNLGRP_IPV6_RULE = 19,
-RTNLGRP_ND_USEROPT = 20,
-RTNLGRP_PHONET_IFADDR = 21,
-RTNLGRP_PHONET_ROUTE = 22,
-RTNLGRP_DCB = 23,
-RTNLGRP_IPV4_NETCONF = 24,
-RTNLGRP_IPV6_NETCONF = 25,
-RTNLGRP_MDB = 26,
-RTNLGRP_MPLS_ROUTE = 27,
-RTNLGRP_NSID = 28,
-RTNLGRP_MPLS_NETCONF = 29,
-RTNLGRP_IPV4_MROUTE_R = 30,
-RTNLGRP_IPV6_MROUTE_R = 31,
-RTNLGRP_NEXTHOP = 32,
-RTNLGRP_BRVLAN = 33,
-RTNLGRP_MCTP_IFADDR = 34,
-RTNLGRP_TUNNEL = 35,
-RTNLGRP_STATS = 36,
-__RTNLGRP_MAX = 37,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcamsg {
-pub tca_family: crate::ctypes::c_uchar,
-pub tca__pad1: crate::ctypes::c_uchar,
-pub tca__pad2: crate::ctypes::c_ushort,
-}
-pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC;
-pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB;
-pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS;
-pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT;
-pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA;
-pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_66 {
-TCA_ROOT_UNSPEC = 0,
-TCA_ROOT_TAB = 1,
-TCA_ROOT_FLAGS = 2,
-TCA_ROOT_COUNT = 3,
-TCA_ROOT_TIME_DELTA = 4,
-__TCA_ROOT_MAX = 5,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/powerpc/errno.rs b/vendor/linux-raw-sys-0.3.2/src/powerpc/errno.rs
deleted file mode 100644
index 8c5620d74..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/powerpc/errno.rs
+++ /dev/null
@@ -1,135 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const EPERM: u32 = 1;
-pub const ENOENT: u32 = 2;
-pub const ESRCH: u32 = 3;
-pub const EINTR: u32 = 4;
-pub const EIO: u32 = 5;
-pub const ENXIO: u32 = 6;
-pub const E2BIG: u32 = 7;
-pub const ENOEXEC: u32 = 8;
-pub const EBADF: u32 = 9;
-pub const ECHILD: u32 = 10;
-pub const EAGAIN: u32 = 11;
-pub const ENOMEM: u32 = 12;
-pub const EACCES: u32 = 13;
-pub const EFAULT: u32 = 14;
-pub const ENOTBLK: u32 = 15;
-pub const EBUSY: u32 = 16;
-pub const EEXIST: u32 = 17;
-pub const EXDEV: u32 = 18;
-pub const ENODEV: u32 = 19;
-pub const ENOTDIR: u32 = 20;
-pub const EISDIR: u32 = 21;
-pub const EINVAL: u32 = 22;
-pub const ENFILE: u32 = 23;
-pub const EMFILE: u32 = 24;
-pub const ENOTTY: u32 = 25;
-pub const ETXTBSY: u32 = 26;
-pub const EFBIG: u32 = 27;
-pub const ENOSPC: u32 = 28;
-pub const ESPIPE: u32 = 29;
-pub const EROFS: u32 = 30;
-pub const EMLINK: u32 = 31;
-pub const EPIPE: u32 = 32;
-pub const EDOM: u32 = 33;
-pub const ERANGE: u32 = 34;
-pub const EDEADLK: u32 = 35;
-pub const ENAMETOOLONG: u32 = 36;
-pub const ENOLCK: u32 = 37;
-pub const ENOSYS: u32 = 38;
-pub const ENOTEMPTY: u32 = 39;
-pub const ELOOP: u32 = 40;
-pub const EWOULDBLOCK: u32 = 11;
-pub const ENOMSG: u32 = 42;
-pub const EIDRM: u32 = 43;
-pub const ECHRNG: u32 = 44;
-pub const EL2NSYNC: u32 = 45;
-pub const EL3HLT: u32 = 46;
-pub const EL3RST: u32 = 47;
-pub const ELNRNG: u32 = 48;
-pub const EUNATCH: u32 = 49;
-pub const ENOCSI: u32 = 50;
-pub const EL2HLT: u32 = 51;
-pub const EBADE: u32 = 52;
-pub const EBADR: u32 = 53;
-pub const EXFULL: u32 = 54;
-pub const ENOANO: u32 = 55;
-pub const EBADRQC: u32 = 56;
-pub const EBADSLT: u32 = 57;
-pub const EDEADLOCK: u32 = 35;
-pub const EBFONT: u32 = 59;
-pub const ENOSTR: u32 = 60;
-pub const ENODATA: u32 = 61;
-pub const ETIME: u32 = 62;
-pub const ENOSR: u32 = 63;
-pub const ENONET: u32 = 64;
-pub const ENOPKG: u32 = 65;
-pub const EREMOTE: u32 = 66;
-pub const ENOLINK: u32 = 67;
-pub const EADV: u32 = 68;
-pub const ESRMNT: u32 = 69;
-pub const ECOMM: u32 = 70;
-pub const EPROTO: u32 = 71;
-pub const EMULTIHOP: u32 = 72;
-pub const EDOTDOT: u32 = 73;
-pub const EBADMSG: u32 = 74;
-pub const EOVERFLOW: u32 = 75;
-pub const ENOTUNIQ: u32 = 76;
-pub const EBADFD: u32 = 77;
-pub const EREMCHG: u32 = 78;
-pub const ELIBACC: u32 = 79;
-pub const ELIBBAD: u32 = 80;
-pub const ELIBSCN: u32 = 81;
-pub const ELIBMAX: u32 = 82;
-pub const ELIBEXEC: u32 = 83;
-pub const EILSEQ: u32 = 84;
-pub const ERESTART: u32 = 85;
-pub const ESTRPIPE: u32 = 86;
-pub const EUSERS: u32 = 87;
-pub const ENOTSOCK: u32 = 88;
-pub const EDESTADDRREQ: u32 = 89;
-pub const EMSGSIZE: u32 = 90;
-pub const EPROTOTYPE: u32 = 91;
-pub const ENOPROTOOPT: u32 = 92;
-pub const EPROTONOSUPPORT: u32 = 93;
-pub const ESOCKTNOSUPPORT: u32 = 94;
-pub const EOPNOTSUPP: u32 = 95;
-pub const EPFNOSUPPORT: u32 = 96;
-pub const EAFNOSUPPORT: u32 = 97;
-pub const EADDRINUSE: u32 = 98;
-pub const EADDRNOTAVAIL: u32 = 99;
-pub const ENETDOWN: u32 = 100;
-pub const ENETUNREACH: u32 = 101;
-pub const ENETRESET: u32 = 102;
-pub const ECONNABORTED: u32 = 103;
-pub const ECONNRESET: u32 = 104;
-pub const ENOBUFS: u32 = 105;
-pub const EISCONN: u32 = 106;
-pub const ENOTCONN: u32 = 107;
-pub const ESHUTDOWN: u32 = 108;
-pub const ETOOMANYREFS: u32 = 109;
-pub const ETIMEDOUT: u32 = 110;
-pub const ECONNREFUSED: u32 = 111;
-pub const EHOSTDOWN: u32 = 112;
-pub const EHOSTUNREACH: u32 = 113;
-pub const EALREADY: u32 = 114;
-pub const EINPROGRESS: u32 = 115;
-pub const ESTALE: u32 = 116;
-pub const EUCLEAN: u32 = 117;
-pub const ENOTNAM: u32 = 118;
-pub const ENAVAIL: u32 = 119;
-pub const EISNAM: u32 = 120;
-pub const EREMOTEIO: u32 = 121;
-pub const EDQUOT: u32 = 122;
-pub const ENOMEDIUM: u32 = 123;
-pub const EMEDIUMTYPE: u32 = 124;
-pub const ECANCELED: u32 = 125;
-pub const ENOKEY: u32 = 126;
-pub const EKEYEXPIRED: u32 = 127;
-pub const EKEYREVOKED: u32 = 128;
-pub const EKEYREJECTED: u32 = 129;
-pub const EOWNERDEAD: u32 = 130;
-pub const ENOTRECOVERABLE: u32 = 131;
-pub const ERFKILL: u32 = 132;
-pub const EHWPOISON: u32 = 133;
diff --git a/vendor/linux-raw-sys-0.3.2/src/powerpc/general.rs b/vendor/linux-raw-sys-0.3.2/src/powerpc/general.rs
deleted file mode 100644
index f0cb71ce0..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/powerpc/general.rs
+++ /dev/null
@@ -1,5465 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
-pub struct __BindgenBitfieldUnit<Storage> {
-storage: Storage,
-}
-impl<Storage> __BindgenBitfieldUnit<Storage> {
-#[inline]
-pub const fn new(storage: Storage) -> Self {
-Self { storage }
-}
-}
-impl<Storage> __BindgenBitfieldUnit<Storage>
-where
-Storage: AsRef<[u8]> + AsMut<[u8]>,
-{
-#[inline]
-pub fn get_bit(&self, index: usize) -> bool {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = self.storage.as_ref()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-byte & mask == mask
-}
-#[inline]
-pub fn set_bit(&mut self, index: usize, val: bool) {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = &mut self.storage.as_mut()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-if val {
-*byte |= mask;
-} else {
-*byte &= !mask;
-}
-}
-#[inline]
-pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-let mut val = 0;
-for i in 0..(bit_width as usize) {
-if self.get_bit(i + bit_offset) {
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-val |= 1 << index;
-}
-}
-val
-}
-#[inline]
-pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-for i in 0..(bit_width as usize) {
-let mask = 1 << i;
-let val_bit_is_set = val & mask == mask;
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-self.set_bit(index + bit_offset, val_bit_is_set);
-}
-}
-}
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-#[repr(C)]
-pub struct __BindgenUnionField<T>(::core::marker::PhantomData<T>);
-impl<T> __BindgenUnionField<T> {
-#[inline]
-pub const fn new() -> Self {
-__BindgenUnionField(::core::marker::PhantomData)
-}
-#[inline]
-pub unsafe fn as_ref(&self) -> &T {
-::core::mem::transmute(self)
-}
-#[inline]
-pub unsafe fn as_mut(&mut self) -> &mut T {
-::core::mem::transmute(self)
-}
-}
-impl<T> ::core::default::Default for __BindgenUnionField<T> {
-#[inline]
-fn default() -> Self {
-Self::new()
-}
-}
-impl<T> ::core::clone::Clone for __BindgenUnionField<T> {
-#[inline]
-fn clone(&self) -> Self {
-Self::new()
-}
-}
-impl<T> ::core::marker::Copy for __BindgenUnionField<T> {}
-impl<T> ::core::fmt::Debug for __BindgenUnionField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__BindgenUnionField")
-}
-}
-impl<T> ::core::hash::Hash for __BindgenUnionField<T> {
-fn hash<H: ::core::hash::Hasher>(&self, _state: &mut H) {}
-}
-impl<T> ::core::cmp::PartialEq for __BindgenUnionField<T> {
-fn eq(&self, _other: &__BindgenUnionField<T>) -> bool {
-true
-}
-}
-impl<T> ::core::cmp::Eq for __BindgenUnionField<T> {}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const AT_DCACHEBSIZE: u32 = 19;
-pub const AT_ICACHEBSIZE: u32 = 20;
-pub const AT_UCACHEBSIZE: u32 = 21;
-pub const AT_IGNOREPPC: u32 = 22;
-pub const AT_SYSINFO_EHDR: u32 = 33;
-pub const AT_L1I_CACHESIZE: u32 = 40;
-pub const AT_L1I_CACHEGEOMETRY: u32 = 41;
-pub const AT_L1D_CACHESIZE: u32 = 42;
-pub const AT_L1D_CACHEGEOMETRY: u32 = 43;
-pub const AT_L2_CACHESIZE: u32 = 44;
-pub const AT_L2_CACHEGEOMETRY: u32 = 45;
-pub const AT_L3_CACHESIZE: u32 = 46;
-pub const AT_L3_CACHEGEOMETRY: u32 = 47;
-pub const AT_MINSIGSTKSZ: u32 = 51;
-pub const AT_VECTOR_SIZE_ARCH: u32 = 15;
-pub const AT_NULL: u32 = 0;
-pub const AT_IGNORE: u32 = 1;
-pub const AT_EXECFD: u32 = 2;
-pub const AT_PHDR: u32 = 3;
-pub const AT_PHENT: u32 = 4;
-pub const AT_PHNUM: u32 = 5;
-pub const AT_PAGESZ: u32 = 6;
-pub const AT_BASE: u32 = 7;
-pub const AT_FLAGS: u32 = 8;
-pub const AT_ENTRY: u32 = 9;
-pub const AT_NOTELF: u32 = 10;
-pub const AT_UID: u32 = 11;
-pub const AT_EUID: u32 = 12;
-pub const AT_GID: u32 = 13;
-pub const AT_EGID: u32 = 14;
-pub const AT_PLATFORM: u32 = 15;
-pub const AT_HWCAP: u32 = 16;
-pub const AT_CLKTCK: u32 = 17;
-pub const AT_SECURE: u32 = 23;
-pub const AT_BASE_PLATFORM: u32 = 24;
-pub const AT_RANDOM: u32 = 25;
-pub const AT_HWCAP2: u32 = 26;
-pub const AT_EXECFN: u32 = 31;
-pub const __BITS_PER_LONG: u32 = 32;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S_1: u32 = 1;
-pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798;
-pub const _LINUX_CAPABILITY_U32S_2: u32 = 2;
-pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514;
-pub const _LINUX_CAPABILITY_U32S_3: u32 = 2;
-pub const VFS_CAP_REVISION_MASK: u32 = 4278190080;
-pub const VFS_CAP_REVISION_SHIFT: u32 = 24;
-pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081;
-pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1;
-pub const VFS_CAP_REVISION_1: u32 = 16777216;
-pub const VFS_CAP_U32_1: u32 = 1;
-pub const VFS_CAP_REVISION_2: u32 = 33554432;
-pub const VFS_CAP_U32_2: u32 = 2;
-pub const VFS_CAP_REVISION_3: u32 = 50331648;
-pub const VFS_CAP_U32_3: u32 = 2;
-pub const VFS_CAP_U32: u32 = 2;
-pub const VFS_CAP_REVISION: u32 = 50331648;
-pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S: u32 = 1;
-pub const CAP_CHOWN: u32 = 0;
-pub const CAP_DAC_OVERRIDE: u32 = 1;
-pub const CAP_DAC_READ_SEARCH: u32 = 2;
-pub const CAP_FOWNER: u32 = 3;
-pub const CAP_FSETID: u32 = 4;
-pub const CAP_KILL: u32 = 5;
-pub const CAP_SETGID: u32 = 6;
-pub const CAP_SETUID: u32 = 7;
-pub const CAP_SETPCAP: u32 = 8;
-pub const CAP_LINUX_IMMUTABLE: u32 = 9;
-pub const CAP_NET_BIND_SERVICE: u32 = 10;
-pub const CAP_NET_BROADCAST: u32 = 11;
-pub const CAP_NET_ADMIN: u32 = 12;
-pub const CAP_NET_RAW: u32 = 13;
-pub const CAP_IPC_LOCK: u32 = 14;
-pub const CAP_IPC_OWNER: u32 = 15;
-pub const CAP_SYS_MODULE: u32 = 16;
-pub const CAP_SYS_RAWIO: u32 = 17;
-pub const CAP_SYS_CHROOT: u32 = 18;
-pub const CAP_SYS_PTRACE: u32 = 19;
-pub const CAP_SYS_PACCT: u32 = 20;
-pub const CAP_SYS_ADMIN: u32 = 21;
-pub const CAP_SYS_BOOT: u32 = 22;
-pub const CAP_SYS_NICE: u32 = 23;
-pub const CAP_SYS_RESOURCE: u32 = 24;
-pub const CAP_SYS_TIME: u32 = 25;
-pub const CAP_SYS_TTY_CONFIG: u32 = 26;
-pub const CAP_MKNOD: u32 = 27;
-pub const CAP_LEASE: u32 = 28;
-pub const CAP_AUDIT_WRITE: u32 = 29;
-pub const CAP_AUDIT_CONTROL: u32 = 30;
-pub const CAP_SETFCAP: u32 = 31;
-pub const CAP_MAC_OVERRIDE: u32 = 32;
-pub const CAP_MAC_ADMIN: u32 = 33;
-pub const CAP_SYSLOG: u32 = 34;
-pub const CAP_WAKE_ALARM: u32 = 35;
-pub const CAP_BLOCK_SUSPEND: u32 = 36;
-pub const CAP_AUDIT_READ: u32 = 37;
-pub const CAP_PERFMON: u32 = 38;
-pub const CAP_BPF: u32 = 39;
-pub const CAP_CHECKPOINT_RESTORE: u32 = 40;
-pub const CAP_LAST_CAP: u32 = 40;
-pub const O_DIRECTORY: u32 = 16384;
-pub const O_NOFOLLOW: u32 = 32768;
-pub const O_LARGEFILE: u32 = 65536;
-pub const O_DIRECT: u32 = 131072;
-pub const O_ACCMODE: u32 = 3;
-pub const O_RDONLY: u32 = 0;
-pub const O_WRONLY: u32 = 1;
-pub const O_RDWR: u32 = 2;
-pub const O_CREAT: u32 = 64;
-pub const O_EXCL: u32 = 128;
-pub const O_NOCTTY: u32 = 256;
-pub const O_TRUNC: u32 = 512;
-pub const O_APPEND: u32 = 1024;
-pub const O_NONBLOCK: u32 = 2048;
-pub const O_DSYNC: u32 = 4096;
-pub const FASYNC: u32 = 8192;
-pub const O_NOATIME: u32 = 262144;
-pub const O_CLOEXEC: u32 = 524288;
-pub const __O_SYNC: u32 = 1048576;
-pub const O_SYNC: u32 = 1052672;
-pub const O_PATH: u32 = 2097152;
-pub const __O_TMPFILE: u32 = 4194304;
-pub const O_TMPFILE: u32 = 4210688;
-pub const O_TMPFILE_MASK: u32 = 4210752;
-pub const O_NDELAY: u32 = 2048;
-pub const F_DUPFD: u32 = 0;
-pub const F_GETFD: u32 = 1;
-pub const F_SETFD: u32 = 2;
-pub const F_GETFL: u32 = 3;
-pub const F_SETFL: u32 = 4;
-pub const F_GETLK: u32 = 5;
-pub const F_SETLK: u32 = 6;
-pub const F_SETLKW: u32 = 7;
-pub const F_SETOWN: u32 = 8;
-pub const F_GETOWN: u32 = 9;
-pub const F_SETSIG: u32 = 10;
-pub const F_GETSIG: u32 = 11;
-pub const F_GETLK64: u32 = 12;
-pub const F_SETLK64: u32 = 13;
-pub const F_SETLKW64: u32 = 14;
-pub const F_SETOWN_EX: u32 = 15;
-pub const F_GETOWN_EX: u32 = 16;
-pub const F_GETOWNER_UIDS: u32 = 17;
-pub const F_OFD_GETLK: u32 = 36;
-pub const F_OFD_SETLK: u32 = 37;
-pub const F_OFD_SETLKW: u32 = 38;
-pub const F_OWNER_TID: u32 = 0;
-pub const F_OWNER_PID: u32 = 1;
-pub const F_OWNER_PGRP: u32 = 2;
-pub const FD_CLOEXEC: u32 = 1;
-pub const F_RDLCK: u32 = 0;
-pub const F_WRLCK: u32 = 1;
-pub const F_UNLCK: u32 = 2;
-pub const F_EXLCK: u32 = 4;
-pub const F_SHLCK: u32 = 8;
-pub const LOCK_SH: u32 = 1;
-pub const LOCK_EX: u32 = 2;
-pub const LOCK_NB: u32 = 4;
-pub const LOCK_UN: u32 = 8;
-pub const LOCK_MAND: u32 = 32;
-pub const LOCK_READ: u32 = 64;
-pub const LOCK_WRITE: u32 = 128;
-pub const LOCK_RW: u32 = 192;
-pub const F_LINUX_SPECIFIC_BASE: u32 = 1024;
-pub const RESOLVE_NO_XDEV: u32 = 1;
-pub const RESOLVE_NO_MAGICLINKS: u32 = 2;
-pub const RESOLVE_NO_SYMLINKS: u32 = 4;
-pub const RESOLVE_BENEATH: u32 = 8;
-pub const RESOLVE_IN_ROOT: u32 = 16;
-pub const RESOLVE_CACHED: u32 = 32;
-pub const F_SETLEASE: u32 = 1024;
-pub const F_GETLEASE: u32 = 1025;
-pub const F_CANCELLK: u32 = 1029;
-pub const F_DUPFD_CLOEXEC: u32 = 1030;
-pub const F_NOTIFY: u32 = 1026;
-pub const F_SETPIPE_SZ: u32 = 1031;
-pub const F_GETPIPE_SZ: u32 = 1032;
-pub const F_ADD_SEALS: u32 = 1033;
-pub const F_GET_SEALS: u32 = 1034;
-pub const F_SEAL_SEAL: u32 = 1;
-pub const F_SEAL_SHRINK: u32 = 2;
-pub const F_SEAL_GROW: u32 = 4;
-pub const F_SEAL_WRITE: u32 = 8;
-pub const F_SEAL_FUTURE_WRITE: u32 = 16;
-pub const F_GET_RW_HINT: u32 = 1035;
-pub const F_SET_RW_HINT: u32 = 1036;
-pub const F_GET_FILE_RW_HINT: u32 = 1037;
-pub const F_SET_FILE_RW_HINT: u32 = 1038;
-pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const RWH_WRITE_LIFE_NONE: u32 = 1;
-pub const RWH_WRITE_LIFE_SHORT: u32 = 2;
-pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3;
-pub const RWH_WRITE_LIFE_LONG: u32 = 4;
-pub const RWH_WRITE_LIFE_EXTREME: u32 = 5;
-pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const DN_ACCESS: u32 = 1;
-pub const DN_MODIFY: u32 = 2;
-pub const DN_CREATE: u32 = 4;
-pub const DN_DELETE: u32 = 8;
-pub const DN_RENAME: u32 = 16;
-pub const DN_ATTRIB: u32 = 32;
-pub const DN_MULTISHOT: u32 = 2147483648;
-pub const AT_FDCWD: i32 = -100;
-pub const AT_SYMLINK_NOFOLLOW: u32 = 256;
-pub const AT_EACCESS: u32 = 512;
-pub const AT_REMOVEDIR: u32 = 512;
-pub const AT_SYMLINK_FOLLOW: u32 = 1024;
-pub const AT_NO_AUTOMOUNT: u32 = 2048;
-pub const AT_EMPTY_PATH: u32 = 4096;
-pub const AT_STATX_SYNC_TYPE: u32 = 24576;
-pub const AT_STATX_SYNC_AS_STAT: u32 = 0;
-pub const AT_STATX_FORCE_SYNC: u32 = 8192;
-pub const AT_STATX_DONT_SYNC: u32 = 16384;
-pub const AT_RECURSIVE: u32 = 32768;
-pub const EPOLL_CLOEXEC: u32 = 524288;
-pub const EPOLL_CTL_ADD: u32 = 1;
-pub const EPOLL_CTL_DEL: u32 = 2;
-pub const EPOLL_CTL_MOD: u32 = 3;
-pub const POSIX_FADV_NORMAL: u32 = 0;
-pub const POSIX_FADV_RANDOM: u32 = 1;
-pub const POSIX_FADV_SEQUENTIAL: u32 = 2;
-pub const POSIX_FADV_WILLNEED: u32 = 3;
-pub const POSIX_FADV_DONTNEED: u32 = 4;
-pub const POSIX_FADV_NOREUSE: u32 = 5;
-pub const FALLOC_FL_KEEP_SIZE: u32 = 1;
-pub const FALLOC_FL_PUNCH_HOLE: u32 = 2;
-pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4;
-pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8;
-pub const FALLOC_FL_ZERO_RANGE: u32 = 16;
-pub const FALLOC_FL_INSERT_RANGE: u32 = 32;
-pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64;
-pub const NR_OPEN: u32 = 1024;
-pub const NGROUPS_MAX: u32 = 65536;
-pub const ARG_MAX: u32 = 131072;
-pub const LINK_MAX: u32 = 127;
-pub const MAX_CANON: u32 = 255;
-pub const MAX_INPUT: u32 = 255;
-pub const NAME_MAX: u32 = 255;
-pub const PATH_MAX: u32 = 4096;
-pub const PIPE_BUF: u32 = 4096;
-pub const XATTR_NAME_MAX: u32 = 255;
-pub const XATTR_SIZE_MAX: u32 = 65536;
-pub const XATTR_LIST_MAX: u32 = 65536;
-pub const RTSIG_MAX: u32 = 32;
-pub const _IOC_SIZEBITS: u32 = 13;
-pub const _IOC_DIRBITS: u32 = 3;
-pub const _IOC_NONE: u32 = 1;
-pub const _IOC_READ: u32 = 2;
-pub const _IOC_WRITE: u32 = 4;
-pub const _IOC_NRBITS: u32 = 8;
-pub const _IOC_TYPEBITS: u32 = 8;
-pub const _IOC_NRMASK: u32 = 255;
-pub const _IOC_TYPEMASK: u32 = 255;
-pub const _IOC_SIZEMASK: u32 = 8191;
-pub const _IOC_DIRMASK: u32 = 7;
-pub const _IOC_NRSHIFT: u32 = 0;
-pub const _IOC_TYPESHIFT: u32 = 8;
-pub const _IOC_SIZESHIFT: u32 = 16;
-pub const _IOC_DIRSHIFT: u32 = 29;
-pub const IOC_IN: u32 = 2147483648;
-pub const IOC_OUT: u32 = 1073741824;
-pub const IOC_INOUT: u32 = 3221225472;
-pub const IOCSIZE_MASK: u32 = 536805376;
-pub const IOCSIZE_SHIFT: u32 = 16;
-pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16;
-pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1;
-pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4;
-pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5;
-pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6;
-pub const FSCRYPT_MODE_SM4_XTS: u32 = 7;
-pub const FSCRYPT_MODE_SM4_CTS: u32 = 8;
-pub const FSCRYPT_MODE_ADIANTUM: u32 = 9;
-pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10;
-pub const FSCRYPT_POLICY_V1: u32 = 0;
-pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64;
-pub const FSCRYPT_POLICY_V2: u32 = 2;
-pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16;
-pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1;
-pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1;
-pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3;
-pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1;
-pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FS_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FS_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FS_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FS_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FS_POLICY_FLAGS_VALID: u32 = 7;
-pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0;
-pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1;
-pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2;
-pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3;
-pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4;
-pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5;
-pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6;
-pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9;
-pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FS_MAX_KEY_SIZE: u32 = 64;
-pub const MS_RDONLY: u32 = 1;
-pub const MS_NOSUID: u32 = 2;
-pub const MS_NODEV: u32 = 4;
-pub const MS_NOEXEC: u32 = 8;
-pub const MS_SYNCHRONOUS: u32 = 16;
-pub const MS_REMOUNT: u32 = 32;
-pub const MS_MANDLOCK: u32 = 64;
-pub const MS_DIRSYNC: u32 = 128;
-pub const MS_NOSYMFOLLOW: u32 = 256;
-pub const MS_NOATIME: u32 = 1024;
-pub const MS_NODIRATIME: u32 = 2048;
-pub const MS_BIND: u32 = 4096;
-pub const MS_MOVE: u32 = 8192;
-pub const MS_REC: u32 = 16384;
-pub const MS_VERBOSE: u32 = 32768;
-pub const MS_SILENT: u32 = 32768;
-pub const MS_POSIXACL: u32 = 65536;
-pub const MS_UNBINDABLE: u32 = 131072;
-pub const MS_PRIVATE: u32 = 262144;
-pub const MS_SLAVE: u32 = 524288;
-pub const MS_SHARED: u32 = 1048576;
-pub const MS_RELATIME: u32 = 2097152;
-pub const MS_KERNMOUNT: u32 = 4194304;
-pub const MS_I_VERSION: u32 = 8388608;
-pub const MS_STRICTATIME: u32 = 16777216;
-pub const MS_LAZYTIME: u32 = 33554432;
-pub const MS_SUBMOUNT: u32 = 67108864;
-pub const MS_NOREMOTELOCK: u32 = 134217728;
-pub const MS_NOSEC: u32 = 268435456;
-pub const MS_BORN: u32 = 536870912;
-pub const MS_ACTIVE: u32 = 1073741824;
-pub const MS_NOUSER: u32 = 2147483648;
-pub const MS_RMT_MASK: u32 = 41943121;
-pub const MS_MGC_VAL: u32 = 3236757504;
-pub const MS_MGC_MSK: u32 = 4294901760;
-pub const OPEN_TREE_CLONE: u32 = 1;
-pub const OPEN_TREE_CLOEXEC: u32 = 524288;
-pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1;
-pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2;
-pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4;
-pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16;
-pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32;
-pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64;
-pub const MOVE_MOUNT_SET_GROUP: u32 = 256;
-pub const MOVE_MOUNT__MASK: u32 = 375;
-pub const FSOPEN_CLOEXEC: u32 = 1;
-pub const FSPICK_CLOEXEC: u32 = 1;
-pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2;
-pub const FSPICK_NO_AUTOMOUNT: u32 = 4;
-pub const FSPICK_EMPTY_PATH: u32 = 8;
-pub const FSMOUNT_CLOEXEC: u32 = 1;
-pub const MOUNT_ATTR_RDONLY: u32 = 1;
-pub const MOUNT_ATTR_NOSUID: u32 = 2;
-pub const MOUNT_ATTR_NODEV: u32 = 4;
-pub const MOUNT_ATTR_NOEXEC: u32 = 8;
-pub const MOUNT_ATTR__ATIME: u32 = 112;
-pub const MOUNT_ATTR_RELATIME: u32 = 0;
-pub const MOUNT_ATTR_NOATIME: u32 = 16;
-pub const MOUNT_ATTR_STRICTATIME: u32 = 32;
-pub const MOUNT_ATTR_NODIRATIME: u32 = 128;
-pub const MOUNT_ATTR_IDMAP: u32 = 1048576;
-pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152;
-pub const MOUNT_ATTR_SIZE_VER0: u32 = 32;
-pub const INR_OPEN_CUR: u32 = 1024;
-pub const INR_OPEN_MAX: u32 = 4096;
-pub const BLOCK_SIZE_BITS: u32 = 10;
-pub const BLOCK_SIZE: u32 = 1024;
-pub const SEEK_SET: u32 = 0;
-pub const SEEK_CUR: u32 = 1;
-pub const SEEK_END: u32 = 2;
-pub const SEEK_DATA: u32 = 3;
-pub const SEEK_HOLE: u32 = 4;
-pub const SEEK_MAX: u32 = 4;
-pub const RENAME_NOREPLACE: u32 = 1;
-pub const RENAME_EXCHANGE: u32 = 2;
-pub const RENAME_WHITEOUT: u32 = 4;
-pub const FILE_DEDUPE_RANGE_SAME: u32 = 0;
-pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1;
-pub const NR_FILE: u32 = 8192;
-pub const FS_XFLAG_REALTIME: u32 = 1;
-pub const FS_XFLAG_PREALLOC: u32 = 2;
-pub const FS_XFLAG_IMMUTABLE: u32 = 8;
-pub const FS_XFLAG_APPEND: u32 = 16;
-pub const FS_XFLAG_SYNC: u32 = 32;
-pub const FS_XFLAG_NOATIME: u32 = 64;
-pub const FS_XFLAG_NODUMP: u32 = 128;
-pub const FS_XFLAG_RTINHERIT: u32 = 256;
-pub const FS_XFLAG_PROJINHERIT: u32 = 512;
-pub const FS_XFLAG_NOSYMLINKS: u32 = 1024;
-pub const FS_XFLAG_EXTSIZE: u32 = 2048;
-pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096;
-pub const FS_XFLAG_NODEFRAG: u32 = 8192;
-pub const FS_XFLAG_FILESTREAM: u32 = 16384;
-pub const FS_XFLAG_DAX: u32 = 32768;
-pub const FS_XFLAG_COWEXTSIZE: u32 = 65536;
-pub const FS_XFLAG_HASATTR: u32 = 2147483648;
-pub const BMAP_IOCTL: u32 = 1;
-pub const FSLABEL_MAX: u32 = 256;
-pub const FS_SECRM_FL: u32 = 1;
-pub const FS_UNRM_FL: u32 = 2;
-pub const FS_COMPR_FL: u32 = 4;
-pub const FS_SYNC_FL: u32 = 8;
-pub const FS_IMMUTABLE_FL: u32 = 16;
-pub const FS_APPEND_FL: u32 = 32;
-pub const FS_NODUMP_FL: u32 = 64;
-pub const FS_NOATIME_FL: u32 = 128;
-pub const FS_DIRTY_FL: u32 = 256;
-pub const FS_COMPRBLK_FL: u32 = 512;
-pub const FS_NOCOMP_FL: u32 = 1024;
-pub const FS_ENCRYPT_FL: u32 = 2048;
-pub const FS_BTREE_FL: u32 = 4096;
-pub const FS_INDEX_FL: u32 = 4096;
-pub const FS_IMAGIC_FL: u32 = 8192;
-pub const FS_JOURNAL_DATA_FL: u32 = 16384;
-pub const FS_NOTAIL_FL: u32 = 32768;
-pub const FS_DIRSYNC_FL: u32 = 65536;
-pub const FS_TOPDIR_FL: u32 = 131072;
-pub const FS_HUGE_FILE_FL: u32 = 262144;
-pub const FS_EXTENT_FL: u32 = 524288;
-pub const FS_VERITY_FL: u32 = 1048576;
-pub const FS_EA_INODE_FL: u32 = 2097152;
-pub const FS_EOFBLOCKS_FL: u32 = 4194304;
-pub const FS_NOCOW_FL: u32 = 8388608;
-pub const FS_DAX_FL: u32 = 33554432;
-pub const FS_INLINE_DATA_FL: u32 = 268435456;
-pub const FS_PROJINHERIT_FL: u32 = 536870912;
-pub const FS_CASEFOLD_FL: u32 = 1073741824;
-pub const FS_RESERVED_FL: u32 = 2147483648;
-pub const FS_FL_USER_VISIBLE: u32 = 253951;
-pub const FS_FL_USER_MODIFIABLE: u32 = 229631;
-pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1;
-pub const SYNC_FILE_RANGE_WRITE: u32 = 2;
-pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4;
-pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7;
-pub const FUTEX_WAIT: u32 = 0;
-pub const FUTEX_WAKE: u32 = 1;
-pub const FUTEX_FD: u32 = 2;
-pub const FUTEX_REQUEUE: u32 = 3;
-pub const FUTEX_CMP_REQUEUE: u32 = 4;
-pub const FUTEX_WAKE_OP: u32 = 5;
-pub const FUTEX_LOCK_PI: u32 = 6;
-pub const FUTEX_UNLOCK_PI: u32 = 7;
-pub const FUTEX_TRYLOCK_PI: u32 = 8;
-pub const FUTEX_WAIT_BITSET: u32 = 9;
-pub const FUTEX_WAKE_BITSET: u32 = 10;
-pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11;
-pub const FUTEX_CMP_REQUEUE_PI: u32 = 12;
-pub const FUTEX_LOCK_PI2: u32 = 13;
-pub const FUTEX_PRIVATE_FLAG: u32 = 128;
-pub const FUTEX_CLOCK_REALTIME: u32 = 256;
-pub const FUTEX_CMD_MASK: i32 = -385;
-pub const FUTEX_WAIT_PRIVATE: u32 = 128;
-pub const FUTEX_WAKE_PRIVATE: u32 = 129;
-pub const FUTEX_REQUEUE_PRIVATE: u32 = 131;
-pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132;
-pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133;
-pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134;
-pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141;
-pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135;
-pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136;
-pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137;
-pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138;
-pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139;
-pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140;
-pub const FUTEX_32: u32 = 2;
-pub const FUTEX_WAITV_MAX: u32 = 128;
-pub const FUTEX_WAITERS: u32 = 2147483648;
-pub const FUTEX_OWNER_DIED: u32 = 1073741824;
-pub const FUTEX_TID_MASK: u32 = 1073741823;
-pub const ROBUST_LIST_LIMIT: u32 = 2048;
-pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295;
-pub const FUTEX_OP_SET: u32 = 0;
-pub const FUTEX_OP_ADD: u32 = 1;
-pub const FUTEX_OP_OR: u32 = 2;
-pub const FUTEX_OP_ANDN: u32 = 3;
-pub const FUTEX_OP_XOR: u32 = 4;
-pub const FUTEX_OP_OPARG_SHIFT: u32 = 8;
-pub const FUTEX_OP_CMP_EQ: u32 = 0;
-pub const FUTEX_OP_CMP_NE: u32 = 1;
-pub const FUTEX_OP_CMP_LT: u32 = 2;
-pub const FUTEX_OP_CMP_LE: u32 = 3;
-pub const FUTEX_OP_CMP_GT: u32 = 4;
-pub const FUTEX_OP_CMP_GE: u32 = 5;
-pub const __UAPI_DEF_IF_IFCONF: u32 = 1;
-pub const __UAPI_DEF_IF_IFMAP: u32 = 1;
-pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1;
-pub const __UAPI_DEF_IF_IFREQ: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1;
-pub const __UAPI_DEF_IN_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN_IPPROTO: u32 = 1;
-pub const __UAPI_DEF_IN_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP_MREQ: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1;
-pub const __UAPI_DEF_IN_CLASS: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1;
-pub const __UAPI_DEF_IPV6_MREQ: u32 = 1;
-pub const __UAPI_DEF_IPPROTO_V6: u32 = 1;
-pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1;
-pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1;
-pub const __UAPI_DEF_XATTR: u32 = 1;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const IP_TOS: u32 = 1;
-pub const IP_TTL: u32 = 2;
-pub const IP_HDRINCL: u32 = 3;
-pub const IP_OPTIONS: u32 = 4;
-pub const IP_ROUTER_ALERT: u32 = 5;
-pub const IP_RECVOPTS: u32 = 6;
-pub const IP_RETOPTS: u32 = 7;
-pub const IP_PKTINFO: u32 = 8;
-pub const IP_PKTOPTIONS: u32 = 9;
-pub const IP_MTU_DISCOVER: u32 = 10;
-pub const IP_RECVERR: u32 = 11;
-pub const IP_RECVTTL: u32 = 12;
-pub const IP_RECVTOS: u32 = 13;
-pub const IP_MTU: u32 = 14;
-pub const IP_FREEBIND: u32 = 15;
-pub const IP_IPSEC_POLICY: u32 = 16;
-pub const IP_XFRM_POLICY: u32 = 17;
-pub const IP_PASSSEC: u32 = 18;
-pub const IP_TRANSPARENT: u32 = 19;
-pub const IP_RECVRETOPTS: u32 = 7;
-pub const IP_ORIGDSTADDR: u32 = 20;
-pub const IP_RECVORIGDSTADDR: u32 = 20;
-pub const IP_MINTTL: u32 = 21;
-pub const IP_NODEFRAG: u32 = 22;
-pub const IP_CHECKSUM: u32 = 23;
-pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24;
-pub const IP_RECVFRAGSIZE: u32 = 25;
-pub const IP_RECVERR_RFC4884: u32 = 26;
-pub const IP_PMTUDISC_DONT: u32 = 0;
-pub const IP_PMTUDISC_WANT: u32 = 1;
-pub const IP_PMTUDISC_DO: u32 = 2;
-pub const IP_PMTUDISC_PROBE: u32 = 3;
-pub const IP_PMTUDISC_INTERFACE: u32 = 4;
-pub const IP_PMTUDISC_OMIT: u32 = 5;
-pub const IP_MULTICAST_IF: u32 = 32;
-pub const IP_MULTICAST_TTL: u32 = 33;
-pub const IP_MULTICAST_LOOP: u32 = 34;
-pub const IP_ADD_MEMBERSHIP: u32 = 35;
-pub const IP_DROP_MEMBERSHIP: u32 = 36;
-pub const IP_UNBLOCK_SOURCE: u32 = 37;
-pub const IP_BLOCK_SOURCE: u32 = 38;
-pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39;
-pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40;
-pub const IP_MSFILTER: u32 = 41;
-pub const MCAST_JOIN_GROUP: u32 = 42;
-pub const MCAST_BLOCK_SOURCE: u32 = 43;
-pub const MCAST_UNBLOCK_SOURCE: u32 = 44;
-pub const MCAST_LEAVE_GROUP: u32 = 45;
-pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46;
-pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47;
-pub const MCAST_MSFILTER: u32 = 48;
-pub const IP_MULTICAST_ALL: u32 = 49;
-pub const IP_UNICAST_IF: u32 = 50;
-pub const MCAST_EXCLUDE: u32 = 0;
-pub const MCAST_INCLUDE: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1;
-pub const __SOCK_SIZE__: u32 = 16;
-pub const IN_CLASSA_NET: u32 = 4278190080;
-pub const IN_CLASSA_NSHIFT: u32 = 24;
-pub const IN_CLASSA_HOST: u32 = 16777215;
-pub const IN_CLASSA_MAX: u32 = 128;
-pub const IN_CLASSB_NET: u32 = 4294901760;
-pub const IN_CLASSB_NSHIFT: u32 = 16;
-pub const IN_CLASSB_HOST: u32 = 65535;
-pub const IN_CLASSB_MAX: u32 = 65536;
-pub const IN_CLASSC_NET: u32 = 4294967040;
-pub const IN_CLASSC_NSHIFT: u32 = 8;
-pub const IN_CLASSC_HOST: u32 = 255;
-pub const IN_MULTICAST_NET: u32 = 3758096384;
-pub const IN_CLASSE_NET: u32 = 4294967295;
-pub const IN_CLASSE_NSHIFT: u32 = 0;
-pub const IN_LOOPBACKNET: u32 = 127;
-pub const INADDR_LOOPBACK: u32 = 2130706433;
-pub const INADDR_UNSPEC_GROUP: u32 = 3758096384;
-pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385;
-pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386;
-pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490;
-pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639;
-pub const __BIG_ENDIAN: u32 = 4321;
-pub const IN_ACCESS: u32 = 1;
-pub const IN_MODIFY: u32 = 2;
-pub const IN_ATTRIB: u32 = 4;
-pub const IN_CLOSE_WRITE: u32 = 8;
-pub const IN_CLOSE_NOWRITE: u32 = 16;
-pub const IN_OPEN: u32 = 32;
-pub const IN_MOVED_FROM: u32 = 64;
-pub const IN_MOVED_TO: u32 = 128;
-pub const IN_CREATE: u32 = 256;
-pub const IN_DELETE: u32 = 512;
-pub const IN_DELETE_SELF: u32 = 1024;
-pub const IN_MOVE_SELF: u32 = 2048;
-pub const IN_UNMOUNT: u32 = 8192;
-pub const IN_Q_OVERFLOW: u32 = 16384;
-pub const IN_IGNORED: u32 = 32768;
-pub const IN_CLOSE: u32 = 24;
-pub const IN_MOVE: u32 = 192;
-pub const IN_ONLYDIR: u32 = 16777216;
-pub const IN_DONT_FOLLOW: u32 = 33554432;
-pub const IN_EXCL_UNLINK: u32 = 67108864;
-pub const IN_MASK_CREATE: u32 = 268435456;
-pub const IN_MASK_ADD: u32 = 536870912;
-pub const IN_ISDIR: u32 = 1073741824;
-pub const IN_ONESHOT: u32 = 2147483648;
-pub const IN_ALL_EVENTS: u32 = 4095;
-pub const IN_CLOEXEC: u32 = 524288;
-pub const IN_NONBLOCK: u32 = 2048;
-pub const IPTOS_TOS_MASK: u32 = 30;
-pub const IPTOS_LOWDELAY: u32 = 16;
-pub const IPTOS_THROUGHPUT: u32 = 8;
-pub const IPTOS_RELIABILITY: u32 = 4;
-pub const IPTOS_MINCOST: u32 = 2;
-pub const IPTOS_PREC_MASK: u32 = 224;
-pub const IPTOS_PREC_NETCONTROL: u32 = 224;
-pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192;
-pub const IPTOS_PREC_CRITIC_ECP: u32 = 160;
-pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128;
-pub const IPTOS_PREC_FLASH: u32 = 96;
-pub const IPTOS_PREC_IMMEDIATE: u32 = 64;
-pub const IPTOS_PREC_PRIORITY: u32 = 32;
-pub const IPTOS_PREC_ROUTINE: u32 = 0;
-pub const IPOPT_COPY: u32 = 128;
-pub const IPOPT_CLASS_MASK: u32 = 96;
-pub const IPOPT_NUMBER_MASK: u32 = 31;
-pub const IPOPT_CONTROL: u32 = 0;
-pub const IPOPT_RESERVED1: u32 = 32;
-pub const IPOPT_MEASUREMENT: u32 = 64;
-pub const IPOPT_RESERVED2: u32 = 96;
-pub const IPOPT_END: u32 = 0;
-pub const IPOPT_NOOP: u32 = 1;
-pub const IPOPT_SEC: u32 = 130;
-pub const IPOPT_LSRR: u32 = 131;
-pub const IPOPT_TIMESTAMP: u32 = 68;
-pub const IPOPT_CIPSO: u32 = 134;
-pub const IPOPT_RR: u32 = 7;
-pub const IPOPT_SID: u32 = 136;
-pub const IPOPT_SSRR: u32 = 137;
-pub const IPOPT_RA: u32 = 148;
-pub const IPVERSION: u32 = 4;
-pub const MAXTTL: u32 = 255;
-pub const IPDEFTTL: u32 = 64;
-pub const IPOPT_OPTVAL: u32 = 0;
-pub const IPOPT_OLEN: u32 = 1;
-pub const IPOPT_OFFSET: u32 = 2;
-pub const IPOPT_MINOFF: u32 = 4;
-pub const MAX_IPOPTLEN: u32 = 40;
-pub const IPOPT_NOP: u32 = 1;
-pub const IPOPT_EOL: u32 = 0;
-pub const IPOPT_TS: u32 = 68;
-pub const IPOPT_TS_TSONLY: u32 = 0;
-pub const IPOPT_TS_TSANDADDR: u32 = 1;
-pub const IPOPT_TS_PRESPEC: u32 = 3;
-pub const IPV4_BEET_PHMAXLEN: u32 = 8;
-pub const IPV6_FL_A_GET: u32 = 0;
-pub const IPV6_FL_A_PUT: u32 = 1;
-pub const IPV6_FL_A_RENEW: u32 = 2;
-pub const IPV6_FL_F_CREATE: u32 = 1;
-pub const IPV6_FL_F_EXCL: u32 = 2;
-pub const IPV6_FL_F_REFLECT: u32 = 4;
-pub const IPV6_FL_F_REMOTE: u32 = 8;
-pub const IPV6_FL_S_NONE: u32 = 0;
-pub const IPV6_FL_S_EXCL: u32 = 1;
-pub const IPV6_FL_S_PROCESS: u32 = 2;
-pub const IPV6_FL_S_USER: u32 = 3;
-pub const IPV6_FL_S_ANY: u32 = 255;
-pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575;
-pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880;
-pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0;
-pub const IPV6_PRIORITY_FILLER: u32 = 256;
-pub const IPV6_PRIORITY_UNATTENDED: u32 = 512;
-pub const IPV6_PRIORITY_RESERVED1: u32 = 768;
-pub const IPV6_PRIORITY_BULK: u32 = 1024;
-pub const IPV6_PRIORITY_RESERVED2: u32 = 1280;
-pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536;
-pub const IPV6_PRIORITY_CONTROL: u32 = 1792;
-pub const IPV6_PRIORITY_8: u32 = 2048;
-pub const IPV6_PRIORITY_9: u32 = 2304;
-pub const IPV6_PRIORITY_10: u32 = 2560;
-pub const IPV6_PRIORITY_11: u32 = 2816;
-pub const IPV6_PRIORITY_12: u32 = 3072;
-pub const IPV6_PRIORITY_13: u32 = 3328;
-pub const IPV6_PRIORITY_14: u32 = 3584;
-pub const IPV6_PRIORITY_15: u32 = 3840;
-pub const IPPROTO_HOPOPTS: u32 = 0;
-pub const IPPROTO_ROUTING: u32 = 43;
-pub const IPPROTO_FRAGMENT: u32 = 44;
-pub const IPPROTO_ICMPV6: u32 = 58;
-pub const IPPROTO_NONE: u32 = 59;
-pub const IPPROTO_DSTOPTS: u32 = 60;
-pub const IPPROTO_MH: u32 = 135;
-pub const IPV6_TLV_PAD1: u32 = 0;
-pub const IPV6_TLV_PADN: u32 = 1;
-pub const IPV6_TLV_ROUTERALERT: u32 = 5;
-pub const IPV6_TLV_CALIPSO: u32 = 7;
-pub const IPV6_TLV_IOAM: u32 = 49;
-pub const IPV6_TLV_JUMBO: u32 = 194;
-pub const IPV6_TLV_HAO: u32 = 201;
-pub const IPV6_ADDRFORM: u32 = 1;
-pub const IPV6_2292PKTINFO: u32 = 2;
-pub const IPV6_2292HOPOPTS: u32 = 3;
-pub const IPV6_2292DSTOPTS: u32 = 4;
-pub const IPV6_2292RTHDR: u32 = 5;
-pub const IPV6_2292PKTOPTIONS: u32 = 6;
-pub const IPV6_CHECKSUM: u32 = 7;
-pub const IPV6_2292HOPLIMIT: u32 = 8;
-pub const IPV6_NEXTHOP: u32 = 9;
-pub const IPV6_AUTHHDR: u32 = 10;
-pub const IPV6_FLOWINFO: u32 = 11;
-pub const IPV6_UNICAST_HOPS: u32 = 16;
-pub const IPV6_MULTICAST_IF: u32 = 17;
-pub const IPV6_MULTICAST_HOPS: u32 = 18;
-pub const IPV6_MULTICAST_LOOP: u32 = 19;
-pub const IPV6_ADD_MEMBERSHIP: u32 = 20;
-pub const IPV6_DROP_MEMBERSHIP: u32 = 21;
-pub const IPV6_ROUTER_ALERT: u32 = 22;
-pub const IPV6_MTU_DISCOVER: u32 = 23;
-pub const IPV6_MTU: u32 = 24;
-pub const IPV6_RECVERR: u32 = 25;
-pub const IPV6_V6ONLY: u32 = 26;
-pub const IPV6_JOIN_ANYCAST: u32 = 27;
-pub const IPV6_LEAVE_ANYCAST: u32 = 28;
-pub const IPV6_MULTICAST_ALL: u32 = 29;
-pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30;
-pub const IPV6_RECVERR_RFC4884: u32 = 31;
-pub const IPV6_PMTUDISC_DONT: u32 = 0;
-pub const IPV6_PMTUDISC_WANT: u32 = 1;
-pub const IPV6_PMTUDISC_DO: u32 = 2;
-pub const IPV6_PMTUDISC_PROBE: u32 = 3;
-pub const IPV6_PMTUDISC_INTERFACE: u32 = 4;
-pub const IPV6_PMTUDISC_OMIT: u32 = 5;
-pub const IPV6_FLOWLABEL_MGR: u32 = 32;
-pub const IPV6_FLOWINFO_SEND: u32 = 33;
-pub const IPV6_IPSEC_POLICY: u32 = 34;
-pub const IPV6_XFRM_POLICY: u32 = 35;
-pub const IPV6_HDRINCL: u32 = 36;
-pub const IPV6_RECVPKTINFO: u32 = 49;
-pub const IPV6_PKTINFO: u32 = 50;
-pub const IPV6_RECVHOPLIMIT: u32 = 51;
-pub const IPV6_HOPLIMIT: u32 = 52;
-pub const IPV6_RECVHOPOPTS: u32 = 53;
-pub const IPV6_HOPOPTS: u32 = 54;
-pub const IPV6_RTHDRDSTOPTS: u32 = 55;
-pub const IPV6_RECVRTHDR: u32 = 56;
-pub const IPV6_RTHDR: u32 = 57;
-pub const IPV6_RECVDSTOPTS: u32 = 58;
-pub const IPV6_DSTOPTS: u32 = 59;
-pub const IPV6_RECVPATHMTU: u32 = 60;
-pub const IPV6_PATHMTU: u32 = 61;
-pub const IPV6_DONTFRAG: u32 = 62;
-pub const IPV6_RECVTCLASS: u32 = 66;
-pub const IPV6_TCLASS: u32 = 67;
-pub const IPV6_AUTOFLOWLABEL: u32 = 70;
-pub const IPV6_ADDR_PREFERENCES: u32 = 72;
-pub const IPV6_PREFER_SRC_TMP: u32 = 1;
-pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2;
-pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256;
-pub const IPV6_PREFER_SRC_COA: u32 = 4;
-pub const IPV6_PREFER_SRC_HOME: u32 = 1024;
-pub const IPV6_PREFER_SRC_CGA: u32 = 8;
-pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048;
-pub const IPV6_MINHOPCOUNT: u32 = 73;
-pub const IPV6_ORIGDSTADDR: u32 = 74;
-pub const IPV6_RECVORIGDSTADDR: u32 = 74;
-pub const IPV6_TRANSPARENT: u32 = 75;
-pub const IPV6_UNICAST_IF: u32 = 76;
-pub const IPV6_RECVFRAGSIZE: u32 = 77;
-pub const IPV6_FREEBIND: u32 = 78;
-pub const IPV6_MIN_MTU: u32 = 1280;
-pub const IPV6_SRCRT_STRICT: u32 = 1;
-pub const IPV6_SRCRT_TYPE_0: u32 = 0;
-pub const IPV6_SRCRT_TYPE_2: u32 = 2;
-pub const IPV6_SRCRT_TYPE_3: u32 = 3;
-pub const IPV6_SRCRT_TYPE_4: u32 = 4;
-pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0;
-pub const ADFS_SUPER_MAGIC: u32 = 44533;
-pub const AFFS_SUPER_MAGIC: u32 = 44543;
-pub const AFS_SUPER_MAGIC: u32 = 1397113167;
-pub const AUTOFS_SUPER_MAGIC: u32 = 391;
-pub const CEPH_SUPER_MAGIC: u32 = 12805120;
-pub const CODA_SUPER_MAGIC: u32 = 1937076805;
-pub const CRAMFS_MAGIC: u32 = 684539205;
-pub const CRAMFS_MAGIC_WEND: u32 = 1161678120;
-pub const DEBUGFS_MAGIC: u32 = 1684170528;
-pub const SECURITYFS_MAGIC: u32 = 1935894131;
-pub const SELINUX_MAGIC: u32 = 4185718668;
-pub const SMACK_MAGIC: u32 = 1128357203;
-pub const RAMFS_MAGIC: u32 = 2240043254;
-pub const TMPFS_MAGIC: u32 = 16914836;
-pub const HUGETLBFS_MAGIC: u32 = 2508478710;
-pub const SQUASHFS_MAGIC: u32 = 1936814952;
-pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791;
-pub const EFS_SUPER_MAGIC: u32 = 4278867;
-pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530;
-pub const EXT2_SUPER_MAGIC: u32 = 61267;
-pub const EXT3_SUPER_MAGIC: u32 = 61267;
-pub const XENFS_SUPER_MAGIC: u32 = 2881100148;
-pub const EXT4_SUPER_MAGIC: u32 = 61267;
-pub const BTRFS_SUPER_MAGIC: u32 = 2435016766;
-pub const NILFS_SUPER_MAGIC: u32 = 13364;
-pub const F2FS_SUPER_MAGIC: u32 = 4076150800;
-pub const HPFS_SUPER_MAGIC: u32 = 4187351113;
-pub const ISOFS_SUPER_MAGIC: u32 = 38496;
-pub const JFFS2_SUPER_MAGIC: u32 = 29366;
-pub const XFS_SUPER_MAGIC: u32 = 1481003842;
-pub const PSTOREFS_MAGIC: u32 = 1634035564;
-pub const EFIVARFS_MAGIC: u32 = 3730735588;
-pub const HOSTFS_SUPER_MAGIC: u32 = 12648430;
-pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128;
-pub const FUSE_SUPER_MAGIC: u32 = 1702057286;
-pub const MINIX_SUPER_MAGIC: u32 = 4991;
-pub const MINIX_SUPER_MAGIC2: u32 = 5007;
-pub const MINIX2_SUPER_MAGIC: u32 = 9320;
-pub const MINIX2_SUPER_MAGIC2: u32 = 9336;
-pub const MINIX3_SUPER_MAGIC: u32 = 19802;
-pub const MSDOS_SUPER_MAGIC: u32 = 19780;
-pub const EXFAT_SUPER_MAGIC: u32 = 538032816;
-pub const NCP_SUPER_MAGIC: u32 = 22092;
-pub const NFS_SUPER_MAGIC: u32 = 26985;
-pub const OCFS2_SUPER_MAGIC: u32 = 1952539503;
-pub const OPENPROM_SUPER_MAGIC: u32 = 40865;
-pub const QNX4_SUPER_MAGIC: u32 = 47;
-pub const QNX6_SUPER_MAGIC: u32 = 1746473250;
-pub const AFS_FS_MAGIC: u32 = 1799439955;
-pub const REISERFS_SUPER_MAGIC: u32 = 1382369651;
-pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0";
-pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0";
-pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0";
-pub const SMB_SUPER_MAGIC: u32 = 20859;
-pub const CIFS_SUPER_MAGIC: u32 = 4283649346;
-pub const SMB2_SUPER_MAGIC: u32 = 4266872130;
-pub const CGROUP_SUPER_MAGIC: u32 = 2613483;
-pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888;
-pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209;
-pub const STACK_END_MAGIC: u32 = 1470918301;
-pub const TRACEFS_MAGIC: u32 = 1953653091;
-pub const V9FS_MAGIC: u32 = 16914839;
-pub const BDEVFS_MAGIC: u32 = 1650746742;
-pub const DAXFS_MAGIC: u32 = 1684300152;
-pub const BINFMTFS_MAGIC: u32 = 1112100429;
-pub const DEVPTS_SUPER_MAGIC: u32 = 7377;
-pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352;
-pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762;
-pub const PIPEFS_MAGIC: u32 = 1346981957;
-pub const PROC_SUPER_MAGIC: u32 = 40864;
-pub const SOCKFS_MAGIC: u32 = 1397703499;
-pub const SYSFS_MAGIC: u32 = 1650812274;
-pub const USBDEVICE_SUPER_MAGIC: u32 = 40866;
-pub const MTD_INODE_FS_MAGIC: u32 = 288389204;
-pub const ANON_INODE_FS_MAGIC: u32 = 151263540;
-pub const BTRFS_TEST_MAGIC: u32 = 1936880249;
-pub const NSFS_MAGIC: u32 = 1853056627;
-pub const BPF_FS_MAGIC: u32 = 3405662737;
-pub const AAFS_MAGIC: u32 = 1513908720;
-pub const ZONEFS_MAGIC: u32 = 1515144787;
-pub const UDF_SUPER_MAGIC: u32 = 352400198;
-pub const DMA_BUF_MAGIC: u32 = 1145913666;
-pub const DEVMEM_MAGIC: u32 = 1162691661;
-pub const SECRETMEM_MAGIC: u32 = 1397048141;
-pub const PROT_READ: u32 = 1;
-pub const PROT_WRITE: u32 = 2;
-pub const PROT_EXEC: u32 = 4;
-pub const PROT_SEM: u32 = 8;
-pub const PROT_NONE: u32 = 0;
-pub const PROT_GROWSDOWN: u32 = 16777216;
-pub const PROT_GROWSUP: u32 = 33554432;
-pub const MAP_TYPE: u32 = 15;
-pub const MAP_FIXED: u32 = 16;
-pub const MAP_ANONYMOUS: u32 = 32;
-pub const MAP_POPULATE: u32 = 32768;
-pub const MAP_NONBLOCK: u32 = 65536;
-pub const MAP_STACK: u32 = 131072;
-pub const MAP_HUGETLB: u32 = 262144;
-pub const MAP_SYNC: u32 = 524288;
-pub const MAP_FIXED_NOREPLACE: u32 = 1048576;
-pub const MAP_UNINITIALIZED: u32 = 67108864;
-pub const MLOCK_ONFAULT: u32 = 1;
-pub const MS_ASYNC: u32 = 1;
-pub const MS_INVALIDATE: u32 = 2;
-pub const MS_SYNC: u32 = 4;
-pub const MADV_NORMAL: u32 = 0;
-pub const MADV_RANDOM: u32 = 1;
-pub const MADV_SEQUENTIAL: u32 = 2;
-pub const MADV_WILLNEED: u32 = 3;
-pub const MADV_DONTNEED: u32 = 4;
-pub const MADV_FREE: u32 = 8;
-pub const MADV_REMOVE: u32 = 9;
-pub const MADV_DONTFORK: u32 = 10;
-pub const MADV_DOFORK: u32 = 11;
-pub const MADV_HWPOISON: u32 = 100;
-pub const MADV_SOFT_OFFLINE: u32 = 101;
-pub const MADV_MERGEABLE: u32 = 12;
-pub const MADV_UNMERGEABLE: u32 = 13;
-pub const MADV_HUGEPAGE: u32 = 14;
-pub const MADV_NOHUGEPAGE: u32 = 15;
-pub const MADV_DONTDUMP: u32 = 16;
-pub const MADV_DODUMP: u32 = 17;
-pub const MADV_WIPEONFORK: u32 = 18;
-pub const MADV_KEEPONFORK: u32 = 19;
-pub const MADV_COLD: u32 = 20;
-pub const MADV_PAGEOUT: u32 = 21;
-pub const MADV_POPULATE_READ: u32 = 22;
-pub const MADV_POPULATE_WRITE: u32 = 23;
-pub const MADV_DONTNEED_LOCKED: u32 = 24;
-pub const MADV_COLLAPSE: u32 = 25;
-pub const MAP_FILE: u32 = 0;
-pub const PKEY_DISABLE_ACCESS: u32 = 1;
-pub const PKEY_DISABLE_WRITE: u32 = 2;
-pub const PKEY_ACCESS_MASK: u32 = 3;
-pub const PROT_SAO: u32 = 16;
-pub const MAP_RENAME: u32 = 32;
-pub const MAP_NORESERVE: u32 = 64;
-pub const MAP_LOCKED: u32 = 128;
-pub const MAP_GROWSDOWN: u32 = 256;
-pub const MAP_DENYWRITE: u32 = 2048;
-pub const MAP_EXECUTABLE: u32 = 4096;
-pub const MCL_CURRENT: u32 = 8192;
-pub const MCL_FUTURE: u32 = 16384;
-pub const MCL_ONFAULT: u32 = 32768;
-pub const PKEY_DISABLE_EXECUTE: u32 = 4;
-pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26;
-pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63;
-pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096;
-pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824;
-pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416;
-pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280;
-pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144;
-pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872;
-pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736;
-pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600;
-pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192;
-pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056;
-pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920;
-pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784;
-pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376;
-pub const MREMAP_MAYMOVE: u32 = 1;
-pub const MREMAP_FIXED: u32 = 2;
-pub const MREMAP_DONTUNMAP: u32 = 4;
-pub const OVERCOMMIT_GUESS: u32 = 0;
-pub const OVERCOMMIT_ALWAYS: u32 = 1;
-pub const OVERCOMMIT_NEVER: u32 = 2;
-pub const MAP_SHARED: u32 = 1;
-pub const MAP_PRIVATE: u32 = 2;
-pub const MAP_SHARED_VALIDATE: u32 = 3;
-pub const MAP_HUGE_SHIFT: u32 = 26;
-pub const MAP_HUGE_MASK: u32 = 63;
-pub const MAP_HUGE_16KB: u32 = 939524096;
-pub const MAP_HUGE_64KB: u32 = 1073741824;
-pub const MAP_HUGE_512KB: u32 = 1275068416;
-pub const MAP_HUGE_1MB: u32 = 1342177280;
-pub const MAP_HUGE_2MB: u32 = 1409286144;
-pub const MAP_HUGE_8MB: u32 = 1543503872;
-pub const MAP_HUGE_16MB: u32 = 1610612736;
-pub const MAP_HUGE_32MB: u32 = 1677721600;
-pub const MAP_HUGE_256MB: u32 = 1879048192;
-pub const MAP_HUGE_512MB: u32 = 1946157056;
-pub const MAP_HUGE_1GB: u32 = 2013265920;
-pub const MAP_HUGE_2GB: u32 = 2080374784;
-pub const MAP_HUGE_16GB: u32 = 2281701376;
-pub const SO_RCVLOWAT: u32 = 16;
-pub const SO_SNDLOWAT: u32 = 17;
-pub const SO_RCVTIMEO_OLD: u32 = 18;
-pub const SO_SNDTIMEO_OLD: u32 = 19;
-pub const SO_PASSCRED: u32 = 20;
-pub const SO_PEERCRED: u32 = 21;
-pub const SIOCGSTAMP_OLD: u32 = 35078;
-pub const SIOCGSTAMPNS_OLD: u32 = 35079;
-pub const SOL_SOCKET: u32 = 1;
-pub const SO_DEBUG: u32 = 1;
-pub const SO_REUSEADDR: u32 = 2;
-pub const SO_TYPE: u32 = 3;
-pub const SO_ERROR: u32 = 4;
-pub const SO_DONTROUTE: u32 = 5;
-pub const SO_BROADCAST: u32 = 6;
-pub const SO_SNDBUF: u32 = 7;
-pub const SO_RCVBUF: u32 = 8;
-pub const SO_SNDBUFFORCE: u32 = 32;
-pub const SO_RCVBUFFORCE: u32 = 33;
-pub const SO_KEEPALIVE: u32 = 9;
-pub const SO_OOBINLINE: u32 = 10;
-pub const SO_NO_CHECK: u32 = 11;
-pub const SO_PRIORITY: u32 = 12;
-pub const SO_LINGER: u32 = 13;
-pub const SO_BSDCOMPAT: u32 = 14;
-pub const SO_REUSEPORT: u32 = 15;
-pub const SO_SECURITY_AUTHENTICATION: u32 = 22;
-pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23;
-pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24;
-pub const SO_BINDTODEVICE: u32 = 25;
-pub const SO_ATTACH_FILTER: u32 = 26;
-pub const SO_DETACH_FILTER: u32 = 27;
-pub const SO_GET_FILTER: u32 = 26;
-pub const SO_PEERNAME: u32 = 28;
-pub const SO_ACCEPTCONN: u32 = 30;
-pub const SO_PEERSEC: u32 = 31;
-pub const SO_PASSSEC: u32 = 34;
-pub const SO_MARK: u32 = 36;
-pub const SO_PROTOCOL: u32 = 38;
-pub const SO_DOMAIN: u32 = 39;
-pub const SO_RXQ_OVFL: u32 = 40;
-pub const SO_WIFI_STATUS: u32 = 41;
-pub const SCM_WIFI_STATUS: u32 = 41;
-pub const SO_PEEK_OFF: u32 = 42;
-pub const SO_NOFCS: u32 = 43;
-pub const SO_LOCK_FILTER: u32 = 44;
-pub const SO_SELECT_ERR_QUEUE: u32 = 45;
-pub const SO_BUSY_POLL: u32 = 46;
-pub const SO_MAX_PACING_RATE: u32 = 47;
-pub const SO_BPF_EXTENSIONS: u32 = 48;
-pub const SO_INCOMING_CPU: u32 = 49;
-pub const SO_ATTACH_BPF: u32 = 50;
-pub const SO_DETACH_BPF: u32 = 27;
-pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51;
-pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52;
-pub const SO_CNX_ADVICE: u32 = 53;
-pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54;
-pub const SO_MEMINFO: u32 = 55;
-pub const SO_INCOMING_NAPI_ID: u32 = 56;
-pub const SO_COOKIE: u32 = 57;
-pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58;
-pub const SO_PEERGROUPS: u32 = 59;
-pub const SO_ZEROCOPY: u32 = 60;
-pub const SO_TXTIME: u32 = 61;
-pub const SCM_TXTIME: u32 = 61;
-pub const SO_BINDTOIFINDEX: u32 = 62;
-pub const SO_TIMESTAMP_OLD: u32 = 29;
-pub const SO_TIMESTAMPNS_OLD: u32 = 35;
-pub const SO_TIMESTAMPING_OLD: u32 = 37;
-pub const SO_TIMESTAMP_NEW: u32 = 63;
-pub const SO_TIMESTAMPNS_NEW: u32 = 64;
-pub const SO_TIMESTAMPING_NEW: u32 = 65;
-pub const SO_RCVTIMEO_NEW: u32 = 66;
-pub const SO_SNDTIMEO_NEW: u32 = 67;
-pub const SO_DETACH_REUSEPORT_BPF: u32 = 68;
-pub const SO_PREFER_BUSY_POLL: u32 = 69;
-pub const SO_BUSY_POLL_BUDGET: u32 = 70;
-pub const SO_NETNS_COOKIE: u32 = 71;
-pub const SO_BUF_LOCK: u32 = 72;
-pub const SO_RESERVE_MEM: u32 = 73;
-pub const SO_TXREHASH: u32 = 74;
-pub const SO_RCVMARK: u32 = 75;
-pub const SYS_SOCKET: u32 = 1;
-pub const SYS_BIND: u32 = 2;
-pub const SYS_CONNECT: u32 = 3;
-pub const SYS_LISTEN: u32 = 4;
-pub const SYS_ACCEPT: u32 = 5;
-pub const SYS_GETSOCKNAME: u32 = 6;
-pub const SYS_GETPEERNAME: u32 = 7;
-pub const SYS_SOCKETPAIR: u32 = 8;
-pub const SYS_SEND: u32 = 9;
-pub const SYS_RECV: u32 = 10;
-pub const SYS_SENDTO: u32 = 11;
-pub const SYS_RECVFROM: u32 = 12;
-pub const SYS_SHUTDOWN: u32 = 13;
-pub const SYS_SETSOCKOPT: u32 = 14;
-pub const SYS_GETSOCKOPT: u32 = 15;
-pub const SYS_SENDMSG: u32 = 16;
-pub const SYS_RECVMSG: u32 = 17;
-pub const SYS_ACCEPT4: u32 = 18;
-pub const SYS_RECVMMSG: u32 = 19;
-pub const SYS_SENDMMSG: u32 = 20;
-pub const __SO_ACCEPTCON: u32 = 65536;
-pub const POLLIN: u32 = 1;
-pub const POLLPRI: u32 = 2;
-pub const POLLOUT: u32 = 4;
-pub const POLLERR: u32 = 8;
-pub const POLLHUP: u32 = 16;
-pub const POLLNVAL: u32 = 32;
-pub const POLLRDNORM: u32 = 64;
-pub const POLLRDBAND: u32 = 128;
-pub const POLLWRNORM: u32 = 256;
-pub const POLLWRBAND: u32 = 512;
-pub const POLLMSG: u32 = 1024;
-pub const POLLREMOVE: u32 = 4096;
-pub const POLLRDHUP: u32 = 8192;
-pub const PR_SET_PDEATHSIG: u32 = 1;
-pub const PR_GET_PDEATHSIG: u32 = 2;
-pub const PR_GET_DUMPABLE: u32 = 3;
-pub const PR_SET_DUMPABLE: u32 = 4;
-pub const PR_GET_UNALIGN: u32 = 5;
-pub const PR_SET_UNALIGN: u32 = 6;
-pub const PR_UNALIGN_NOPRINT: u32 = 1;
-pub const PR_UNALIGN_SIGBUS: u32 = 2;
-pub const PR_GET_KEEPCAPS: u32 = 7;
-pub const PR_SET_KEEPCAPS: u32 = 8;
-pub const PR_GET_FPEMU: u32 = 9;
-pub const PR_SET_FPEMU: u32 = 10;
-pub const PR_FPEMU_NOPRINT: u32 = 1;
-pub const PR_FPEMU_SIGFPE: u32 = 2;
-pub const PR_GET_FPEXC: u32 = 11;
-pub const PR_SET_FPEXC: u32 = 12;
-pub const PR_FP_EXC_SW_ENABLE: u32 = 128;
-pub const PR_FP_EXC_DIV: u32 = 65536;
-pub const PR_FP_EXC_OVF: u32 = 131072;
-pub const PR_FP_EXC_UND: u32 = 262144;
-pub const PR_FP_EXC_RES: u32 = 524288;
-pub const PR_FP_EXC_INV: u32 = 1048576;
-pub const PR_FP_EXC_DISABLED: u32 = 0;
-pub const PR_FP_EXC_NONRECOV: u32 = 1;
-pub const PR_FP_EXC_ASYNC: u32 = 2;
-pub const PR_FP_EXC_PRECISE: u32 = 3;
-pub const PR_GET_TIMING: u32 = 13;
-pub const PR_SET_TIMING: u32 = 14;
-pub const PR_TIMING_STATISTICAL: u32 = 0;
-pub const PR_TIMING_TIMESTAMP: u32 = 1;
-pub const PR_SET_NAME: u32 = 15;
-pub const PR_GET_NAME: u32 = 16;
-pub const PR_GET_ENDIAN: u32 = 19;
-pub const PR_SET_ENDIAN: u32 = 20;
-pub const PR_ENDIAN_BIG: u32 = 0;
-pub const PR_ENDIAN_LITTLE: u32 = 1;
-pub const PR_ENDIAN_PPC_LITTLE: u32 = 2;
-pub const PR_GET_SECCOMP: u32 = 21;
-pub const PR_SET_SECCOMP: u32 = 22;
-pub const PR_CAPBSET_READ: u32 = 23;
-pub const PR_CAPBSET_DROP: u32 = 24;
-pub const PR_GET_TSC: u32 = 25;
-pub const PR_SET_TSC: u32 = 26;
-pub const PR_TSC_ENABLE: u32 = 1;
-pub const PR_TSC_SIGSEGV: u32 = 2;
-pub const PR_GET_SECUREBITS: u32 = 27;
-pub const PR_SET_SECUREBITS: u32 = 28;
-pub const PR_SET_TIMERSLACK: u32 = 29;
-pub const PR_GET_TIMERSLACK: u32 = 30;
-pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31;
-pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32;
-pub const PR_MCE_KILL: u32 = 33;
-pub const PR_MCE_KILL_CLEAR: u32 = 0;
-pub const PR_MCE_KILL_SET: u32 = 1;
-pub const PR_MCE_KILL_LATE: u32 = 0;
-pub const PR_MCE_KILL_EARLY: u32 = 1;
-pub const PR_MCE_KILL_DEFAULT: u32 = 2;
-pub const PR_MCE_KILL_GET: u32 = 34;
-pub const PR_SET_MM: u32 = 35;
-pub const PR_SET_MM_START_CODE: u32 = 1;
-pub const PR_SET_MM_END_CODE: u32 = 2;
-pub const PR_SET_MM_START_DATA: u32 = 3;
-pub const PR_SET_MM_END_DATA: u32 = 4;
-pub const PR_SET_MM_START_STACK: u32 = 5;
-pub const PR_SET_MM_START_BRK: u32 = 6;
-pub const PR_SET_MM_BRK: u32 = 7;
-pub const PR_SET_MM_ARG_START: u32 = 8;
-pub const PR_SET_MM_ARG_END: u32 = 9;
-pub const PR_SET_MM_ENV_START: u32 = 10;
-pub const PR_SET_MM_ENV_END: u32 = 11;
-pub const PR_SET_MM_AUXV: u32 = 12;
-pub const PR_SET_MM_EXE_FILE: u32 = 13;
-pub const PR_SET_MM_MAP: u32 = 14;
-pub const PR_SET_MM_MAP_SIZE: u32 = 15;
-pub const PR_SET_PTRACER: u32 = 1499557217;
-pub const PR_SET_CHILD_SUBREAPER: u32 = 36;
-pub const PR_GET_CHILD_SUBREAPER: u32 = 37;
-pub const PR_SET_NO_NEW_PRIVS: u32 = 38;
-pub const PR_GET_NO_NEW_PRIVS: u32 = 39;
-pub const PR_GET_TID_ADDRESS: u32 = 40;
-pub const PR_SET_THP_DISABLE: u32 = 41;
-pub const PR_GET_THP_DISABLE: u32 = 42;
-pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43;
-pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44;
-pub const PR_SET_FP_MODE: u32 = 45;
-pub const PR_GET_FP_MODE: u32 = 46;
-pub const PR_FP_MODE_FR: u32 = 1;
-pub const PR_FP_MODE_FRE: u32 = 2;
-pub const PR_CAP_AMBIENT: u32 = 47;
-pub const PR_CAP_AMBIENT_IS_SET: u32 = 1;
-pub const PR_CAP_AMBIENT_RAISE: u32 = 2;
-pub const PR_CAP_AMBIENT_LOWER: u32 = 3;
-pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4;
-pub const PR_SVE_SET_VL: u32 = 50;
-pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SVE_GET_VL: u32 = 51;
-pub const PR_SVE_VL_LEN_MASK: u32 = 65535;
-pub const PR_SVE_VL_INHERIT: u32 = 131072;
-pub const PR_GET_SPECULATION_CTRL: u32 = 52;
-pub const PR_SET_SPECULATION_CTRL: u32 = 53;
-pub const PR_SPEC_STORE_BYPASS: u32 = 0;
-pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1;
-pub const PR_SPEC_L1D_FLUSH: u32 = 2;
-pub const PR_SPEC_NOT_AFFECTED: u32 = 0;
-pub const PR_SPEC_PRCTL: u32 = 1;
-pub const PR_SPEC_ENABLE: u32 = 2;
-pub const PR_SPEC_DISABLE: u32 = 4;
-pub const PR_SPEC_FORCE_DISABLE: u32 = 8;
-pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16;
-pub const PR_PAC_RESET_KEYS: u32 = 54;
-pub const PR_PAC_APIAKEY: u32 = 1;
-pub const PR_PAC_APIBKEY: u32 = 2;
-pub const PR_PAC_APDAKEY: u32 = 4;
-pub const PR_PAC_APDBKEY: u32 = 8;
-pub const PR_PAC_APGAKEY: u32 = 16;
-pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55;
-pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56;
-pub const PR_TAGGED_ADDR_ENABLE: u32 = 1;
-pub const PR_MTE_TCF_NONE: u32 = 0;
-pub const PR_MTE_TCF_SYNC: u32 = 2;
-pub const PR_MTE_TCF_ASYNC: u32 = 4;
-pub const PR_MTE_TCF_MASK: u32 = 6;
-pub const PR_MTE_TAG_SHIFT: u32 = 3;
-pub const PR_MTE_TAG_MASK: u32 = 524280;
-pub const PR_MTE_TCF_SHIFT: u32 = 1;
-pub const PR_SET_IO_FLUSHER: u32 = 57;
-pub const PR_GET_IO_FLUSHER: u32 = 58;
-pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59;
-pub const PR_SYS_DISPATCH_OFF: u32 = 0;
-pub const PR_SYS_DISPATCH_ON: u32 = 1;
-pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0;
-pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1;
-pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60;
-pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61;
-pub const PR_SCHED_CORE: u32 = 62;
-pub const PR_SCHED_CORE_GET: u32 = 0;
-pub const PR_SCHED_CORE_CREATE: u32 = 1;
-pub const PR_SCHED_CORE_SHARE_TO: u32 = 2;
-pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3;
-pub const PR_SCHED_CORE_MAX: u32 = 4;
-pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0;
-pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1;
-pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2;
-pub const PR_SME_SET_VL: u32 = 63;
-pub const PR_SME_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SME_GET_VL: u32 = 64;
-pub const PR_SME_VL_LEN_MASK: u32 = 65535;
-pub const PR_SME_VL_INHERIT: u32 = 131072;
-pub const PR_SET_VMA: u32 = 1398164801;
-pub const PR_SET_VMA_ANON_NAME: u32 = 0;
-pub const GRND_NONBLOCK: u32 = 1;
-pub const GRND_RANDOM: u32 = 2;
-pub const GRND_INSECURE: u32 = 4;
-pub const ITIMER_REAL: u32 = 0;
-pub const ITIMER_VIRTUAL: u32 = 1;
-pub const ITIMER_PROF: u32 = 2;
-pub const CLOCK_REALTIME: u32 = 0;
-pub const CLOCK_MONOTONIC: u32 = 1;
-pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2;
-pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3;
-pub const CLOCK_MONOTONIC_RAW: u32 = 4;
-pub const CLOCK_REALTIME_COARSE: u32 = 5;
-pub const CLOCK_MONOTONIC_COARSE: u32 = 6;
-pub const CLOCK_BOOTTIME: u32 = 7;
-pub const CLOCK_REALTIME_ALARM: u32 = 8;
-pub const CLOCK_BOOTTIME_ALARM: u32 = 9;
-pub const CLOCK_SGI_CYCLE: u32 = 10;
-pub const CLOCK_TAI: u32 = 11;
-pub const MAX_CLOCKS: u32 = 16;
-pub const CLOCKS_MASK: u32 = 1;
-pub const CLOCKS_MONO: u32 = 1;
-pub const TIMER_ABSTIME: u32 = 1;
-pub const RUSAGE_SELF: u32 = 0;
-pub const RUSAGE_CHILDREN: i32 = -1;
-pub const RUSAGE_BOTH: i32 = -2;
-pub const RUSAGE_THREAD: u32 = 1;
-pub const RLIM64_INFINITY: i32 = -1;
-pub const PRIO_MIN: i32 = -20;
-pub const PRIO_MAX: u32 = 20;
-pub const PRIO_PROCESS: u32 = 0;
-pub const PRIO_PGRP: u32 = 1;
-pub const PRIO_USER: u32 = 2;
-pub const _STK_LIM: u32 = 8388608;
-pub const MLOCK_LIMIT: u32 = 8388608;
-pub const RLIMIT_CPU: u32 = 0;
-pub const RLIMIT_FSIZE: u32 = 1;
-pub const RLIMIT_DATA: u32 = 2;
-pub const RLIMIT_STACK: u32 = 3;
-pub const RLIMIT_CORE: u32 = 4;
-pub const RLIMIT_RSS: u32 = 5;
-pub const RLIMIT_NPROC: u32 = 6;
-pub const RLIMIT_NOFILE: u32 = 7;
-pub const RLIMIT_MEMLOCK: u32 = 8;
-pub const RLIMIT_AS: u32 = 9;
-pub const RLIMIT_LOCKS: u32 = 10;
-pub const RLIMIT_SIGPENDING: u32 = 11;
-pub const RLIMIT_MSGQUEUE: u32 = 12;
-pub const RLIMIT_NICE: u32 = 13;
-pub const RLIMIT_RTPRIO: u32 = 14;
-pub const RLIMIT_RTTIME: u32 = 15;
-pub const RLIM_NLIMITS: u32 = 16;
-pub const RLIM_INFINITY: i32 = -1;
-pub const CSIGNAL: u32 = 255;
-pub const CLONE_VM: u32 = 256;
-pub const CLONE_FS: u32 = 512;
-pub const CLONE_FILES: u32 = 1024;
-pub const CLONE_SIGHAND: u32 = 2048;
-pub const CLONE_PIDFD: u32 = 4096;
-pub const CLONE_PTRACE: u32 = 8192;
-pub const CLONE_VFORK: u32 = 16384;
-pub const CLONE_PARENT: u32 = 32768;
-pub const CLONE_THREAD: u32 = 65536;
-pub const CLONE_NEWNS: u32 = 131072;
-pub const CLONE_SYSVSEM: u32 = 262144;
-pub const CLONE_SETTLS: u32 = 524288;
-pub const CLONE_PARENT_SETTID: u32 = 1048576;
-pub const CLONE_CHILD_CLEARTID: u32 = 2097152;
-pub const CLONE_DETACHED: u32 = 4194304;
-pub const CLONE_UNTRACED: u32 = 8388608;
-pub const CLONE_CHILD_SETTID: u32 = 16777216;
-pub const CLONE_NEWCGROUP: u32 = 33554432;
-pub const CLONE_NEWUTS: u32 = 67108864;
-pub const CLONE_NEWIPC: u32 = 134217728;
-pub const CLONE_NEWUSER: u32 = 268435456;
-pub const CLONE_NEWPID: u32 = 536870912;
-pub const CLONE_NEWNET: u32 = 1073741824;
-pub const CLONE_IO: u32 = 2147483648;
-pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296;
-pub const CLONE_INTO_CGROUP: u64 = 8589934592;
-pub const CLONE_NEWTIME: u32 = 128;
-pub const CLONE_ARGS_SIZE_VER0: u32 = 64;
-pub const CLONE_ARGS_SIZE_VER1: u32 = 80;
-pub const CLONE_ARGS_SIZE_VER2: u32 = 88;
-pub const SCHED_NORMAL: u32 = 0;
-pub const SCHED_FIFO: u32 = 1;
-pub const SCHED_RR: u32 = 2;
-pub const SCHED_BATCH: u32 = 3;
-pub const SCHED_IDLE: u32 = 5;
-pub const SCHED_DEADLINE: u32 = 6;
-pub const SCHED_RESET_ON_FORK: u32 = 1073741824;
-pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1;
-pub const SCHED_FLAG_RECLAIM: u32 = 2;
-pub const SCHED_FLAG_DL_OVERRUN: u32 = 4;
-pub const SCHED_FLAG_KEEP_POLICY: u32 = 8;
-pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16;
-pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32;
-pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64;
-pub const SCHED_FLAG_KEEP_ALL: u32 = 24;
-pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96;
-pub const SCHED_FLAG_ALL: u32 = 127;
-pub const _NSIG: u32 = 64;
-pub const _NSIG_BPW: u32 = 32;
-pub const _NSIG_WORDS: u32 = 2;
-pub const SIGHUP: u32 = 1;
-pub const SIGINT: u32 = 2;
-pub const SIGQUIT: u32 = 3;
-pub const SIGILL: u32 = 4;
-pub const SIGTRAP: u32 = 5;
-pub const SIGABRT: u32 = 6;
-pub const SIGIOT: u32 = 6;
-pub const SIGBUS: u32 = 7;
-pub const SIGFPE: u32 = 8;
-pub const SIGKILL: u32 = 9;
-pub const SIGUSR1: u32 = 10;
-pub const SIGSEGV: u32 = 11;
-pub const SIGUSR2: u32 = 12;
-pub const SIGPIPE: u32 = 13;
-pub const SIGALRM: u32 = 14;
-pub const SIGTERM: u32 = 15;
-pub const SIGSTKFLT: u32 = 16;
-pub const SIGCHLD: u32 = 17;
-pub const SIGCONT: u32 = 18;
-pub const SIGSTOP: u32 = 19;
-pub const SIGTSTP: u32 = 20;
-pub const SIGTTIN: u32 = 21;
-pub const SIGTTOU: u32 = 22;
-pub const SIGURG: u32 = 23;
-pub const SIGXCPU: u32 = 24;
-pub const SIGXFSZ: u32 = 25;
-pub const SIGVTALRM: u32 = 26;
-pub const SIGPROF: u32 = 27;
-pub const SIGWINCH: u32 = 28;
-pub const SIGIO: u32 = 29;
-pub const SIGPOLL: u32 = 29;
-pub const SIGPWR: u32 = 30;
-pub const SIGSYS: u32 = 31;
-pub const SIGUNUSED: u32 = 31;
-pub const SIGRTMIN: u32 = 32;
-pub const SIGRTMAX: u32 = 64;
-pub const SA_RESTORER: u32 = 67108864;
-pub const MINSIGSTKSZ: u32 = 2048;
-pub const SIGSTKSZ: u32 = 8192;
-pub const SA_NOCLDSTOP: u32 = 1;
-pub const SA_NOCLDWAIT: u32 = 2;
-pub const SA_SIGINFO: u32 = 4;
-pub const SA_UNSUPPORTED: u32 = 1024;
-pub const SA_EXPOSE_TAGBITS: u32 = 2048;
-pub const SA_ONSTACK: u32 = 134217728;
-pub const SA_RESTART: u32 = 268435456;
-pub const SA_NODEFER: u32 = 1073741824;
-pub const SA_RESETHAND: u32 = 2147483648;
-pub const SA_NOMASK: u32 = 1073741824;
-pub const SA_ONESHOT: u32 = 2147483648;
-pub const SIG_BLOCK: u32 = 0;
-pub const SIG_UNBLOCK: u32 = 1;
-pub const SIG_SETMASK: u32 = 2;
-pub const SIG_DBG_SINGLE_STEPPING: u32 = 1;
-pub const SIG_DBG_BRANCH_TRACING: u32 = 2;
-pub const SI_MAX_SIZE: u32 = 128;
-pub const SI_USER: u32 = 0;
-pub const SI_KERNEL: u32 = 128;
-pub const SI_QUEUE: i32 = -1;
-pub const SI_TIMER: i32 = -2;
-pub const SI_MESGQ: i32 = -3;
-pub const SI_ASYNCIO: i32 = -4;
-pub const SI_SIGIO: i32 = -5;
-pub const SI_TKILL: i32 = -6;
-pub const SI_DETHREAD: i32 = -7;
-pub const SI_ASYNCNL: i32 = -60;
-pub const ILL_ILLOPC: u32 = 1;
-pub const ILL_ILLOPN: u32 = 2;
-pub const ILL_ILLADR: u32 = 3;
-pub const ILL_ILLTRP: u32 = 4;
-pub const ILL_PRVOPC: u32 = 5;
-pub const ILL_PRVREG: u32 = 6;
-pub const ILL_COPROC: u32 = 7;
-pub const ILL_BADSTK: u32 = 8;
-pub const ILL_BADIADDR: u32 = 9;
-pub const __ILL_BREAK: u32 = 10;
-pub const __ILL_BNDMOD: u32 = 11;
-pub const NSIGILL: u32 = 11;
-pub const FPE_INTDIV: u32 = 1;
-pub const FPE_INTOVF: u32 = 2;
-pub const FPE_FLTDIV: u32 = 3;
-pub const FPE_FLTOVF: u32 = 4;
-pub const FPE_FLTUND: u32 = 5;
-pub const FPE_FLTRES: u32 = 6;
-pub const FPE_FLTINV: u32 = 7;
-pub const FPE_FLTSUB: u32 = 8;
-pub const __FPE_DECOVF: u32 = 9;
-pub const __FPE_DECDIV: u32 = 10;
-pub const __FPE_DECERR: u32 = 11;
-pub const __FPE_INVASC: u32 = 12;
-pub const __FPE_INVDEC: u32 = 13;
-pub const FPE_FLTUNK: u32 = 14;
-pub const FPE_CONDTRAP: u32 = 15;
-pub const NSIGFPE: u32 = 15;
-pub const SEGV_MAPERR: u32 = 1;
-pub const SEGV_ACCERR: u32 = 2;
-pub const SEGV_BNDERR: u32 = 3;
-pub const SEGV_PKUERR: u32 = 4;
-pub const SEGV_ACCADI: u32 = 5;
-pub const SEGV_ADIDERR: u32 = 6;
-pub const SEGV_ADIPERR: u32 = 7;
-pub const SEGV_MTEAERR: u32 = 8;
-pub const SEGV_MTESERR: u32 = 9;
-pub const NSIGSEGV: u32 = 9;
-pub const BUS_ADRALN: u32 = 1;
-pub const BUS_ADRERR: u32 = 2;
-pub const BUS_OBJERR: u32 = 3;
-pub const BUS_MCEERR_AR: u32 = 4;
-pub const BUS_MCEERR_AO: u32 = 5;
-pub const NSIGBUS: u32 = 5;
-pub const TRAP_BRKPT: u32 = 1;
-pub const TRAP_TRACE: u32 = 2;
-pub const TRAP_BRANCH: u32 = 3;
-pub const TRAP_HWBKPT: u32 = 4;
-pub const TRAP_UNK: u32 = 5;
-pub const TRAP_PERF: u32 = 6;
-pub const NSIGTRAP: u32 = 6;
-pub const TRAP_PERF_FLAG_ASYNC: u32 = 1;
-pub const CLD_EXITED: u32 = 1;
-pub const CLD_KILLED: u32 = 2;
-pub const CLD_DUMPED: u32 = 3;
-pub const CLD_TRAPPED: u32 = 4;
-pub const CLD_STOPPED: u32 = 5;
-pub const CLD_CONTINUED: u32 = 6;
-pub const NSIGCHLD: u32 = 6;
-pub const POLL_IN: u32 = 1;
-pub const POLL_OUT: u32 = 2;
-pub const POLL_MSG: u32 = 3;
-pub const POLL_ERR: u32 = 4;
-pub const POLL_PRI: u32 = 5;
-pub const POLL_HUP: u32 = 6;
-pub const NSIGPOLL: u32 = 6;
-pub const SYS_SECCOMP: u32 = 1;
-pub const SYS_USER_DISPATCH: u32 = 2;
-pub const NSIGSYS: u32 = 2;
-pub const EMT_TAGOVF: u32 = 1;
-pub const NSIGEMT: u32 = 1;
-pub const SIGEV_SIGNAL: u32 = 0;
-pub const SIGEV_NONE: u32 = 1;
-pub const SIGEV_THREAD: u32 = 2;
-pub const SIGEV_THREAD_ID: u32 = 4;
-pub const SIGEV_MAX_SIZE: u32 = 64;
-pub const SS_ONSTACK: u32 = 1;
-pub const SS_DISABLE: u32 = 2;
-pub const SS_AUTODISARM: u32 = 2147483648;
-pub const SS_FLAG_BITS: u32 = 2147483648;
-pub const S_IFMT: u32 = 61440;
-pub const S_IFSOCK: u32 = 49152;
-pub const S_IFLNK: u32 = 40960;
-pub const S_IFREG: u32 = 32768;
-pub const S_IFBLK: u32 = 24576;
-pub const S_IFDIR: u32 = 16384;
-pub const S_IFCHR: u32 = 8192;
-pub const S_IFIFO: u32 = 4096;
-pub const S_ISUID: u32 = 2048;
-pub const S_ISGID: u32 = 1024;
-pub const S_ISVTX: u32 = 512;
-pub const S_IRWXU: u32 = 448;
-pub const S_IRUSR: u32 = 256;
-pub const S_IWUSR: u32 = 128;
-pub const S_IXUSR: u32 = 64;
-pub const S_IRWXG: u32 = 56;
-pub const S_IRGRP: u32 = 32;
-pub const S_IWGRP: u32 = 16;
-pub const S_IXGRP: u32 = 8;
-pub const S_IRWXO: u32 = 7;
-pub const S_IROTH: u32 = 4;
-pub const S_IWOTH: u32 = 2;
-pub const S_IXOTH: u32 = 1;
-pub const STATX_TYPE: u32 = 1;
-pub const STATX_MODE: u32 = 2;
-pub const STATX_NLINK: u32 = 4;
-pub const STATX_UID: u32 = 8;
-pub const STATX_GID: u32 = 16;
-pub const STATX_ATIME: u32 = 32;
-pub const STATX_MTIME: u32 = 64;
-pub const STATX_CTIME: u32 = 128;
-pub const STATX_INO: u32 = 256;
-pub const STATX_SIZE: u32 = 512;
-pub const STATX_BLOCKS: u32 = 1024;
-pub const STATX_BASIC_STATS: u32 = 2047;
-pub const STATX_BTIME: u32 = 2048;
-pub const STATX_MNT_ID: u32 = 4096;
-pub const STATX_DIOALIGN: u32 = 8192;
-pub const STATX__RESERVED: u32 = 2147483648;
-pub const STATX_ALL: u32 = 4095;
-pub const STATX_ATTR_COMPRESSED: u32 = 4;
-pub const STATX_ATTR_IMMUTABLE: u32 = 16;
-pub const STATX_ATTR_APPEND: u32 = 32;
-pub const STATX_ATTR_NODUMP: u32 = 64;
-pub const STATX_ATTR_ENCRYPTED: u32 = 2048;
-pub const STATX_ATTR_AUTOMOUNT: u32 = 4096;
-pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192;
-pub const STATX_ATTR_VERITY: u32 = 1048576;
-pub const STATX_ATTR_DAX: u32 = 2097152;
-pub const SI_LOAD_SHIFT: u32 = 16;
-pub const TCP_MSS_DEFAULT: u32 = 536;
-pub const TCP_MSS_DESIRED: u32 = 1220;
-pub const TCP_NODELAY: u32 = 1;
-pub const TCP_MAXSEG: u32 = 2;
-pub const TCP_CORK: u32 = 3;
-pub const TCP_KEEPIDLE: u32 = 4;
-pub const TCP_KEEPINTVL: u32 = 5;
-pub const TCP_KEEPCNT: u32 = 6;
-pub const TCP_SYNCNT: u32 = 7;
-pub const TCP_LINGER2: u32 = 8;
-pub const TCP_DEFER_ACCEPT: u32 = 9;
-pub const TCP_WINDOW_CLAMP: u32 = 10;
-pub const TCP_INFO: u32 = 11;
-pub const TCP_QUICKACK: u32 = 12;
-pub const TCP_CONGESTION: u32 = 13;
-pub const TCP_MD5SIG: u32 = 14;
-pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16;
-pub const TCP_THIN_DUPACK: u32 = 17;
-pub const TCP_USER_TIMEOUT: u32 = 18;
-pub const TCP_REPAIR: u32 = 19;
-pub const TCP_REPAIR_QUEUE: u32 = 20;
-pub const TCP_QUEUE_SEQ: u32 = 21;
-pub const TCP_REPAIR_OPTIONS: u32 = 22;
-pub const TCP_FASTOPEN: u32 = 23;
-pub const TCP_TIMESTAMP: u32 = 24;
-pub const TCP_NOTSENT_LOWAT: u32 = 25;
-pub const TCP_CC_INFO: u32 = 26;
-pub const TCP_SAVE_SYN: u32 = 27;
-pub const TCP_SAVED_SYN: u32 = 28;
-pub const TCP_REPAIR_WINDOW: u32 = 29;
-pub const TCP_FASTOPEN_CONNECT: u32 = 30;
-pub const TCP_ULP: u32 = 31;
-pub const TCP_MD5SIG_EXT: u32 = 32;
-pub const TCP_FASTOPEN_KEY: u32 = 33;
-pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34;
-pub const TCP_ZEROCOPY_RECEIVE: u32 = 35;
-pub const TCP_INQ: u32 = 36;
-pub const TCP_CM_INQ: u32 = 36;
-pub const TCP_TX_DELAY: u32 = 37;
-pub const TCP_REPAIR_ON: u32 = 1;
-pub const TCP_REPAIR_OFF: u32 = 0;
-pub const TCP_REPAIR_OFF_NO_WP: i32 = -1;
-pub const TCPI_OPT_TIMESTAMPS: u32 = 1;
-pub const TCPI_OPT_SACK: u32 = 2;
-pub const TCPI_OPT_WSCALE: u32 = 4;
-pub const TCPI_OPT_ECN: u32 = 8;
-pub const TCPI_OPT_ECN_SEEN: u32 = 16;
-pub const TCPI_OPT_SYN_DATA: u32 = 32;
-pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80;
-pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
-pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
-pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
-pub const TIOCM_LE: u32 = 1;
-pub const TIOCM_DTR: u32 = 2;
-pub const TIOCM_RTS: u32 = 4;
-pub const TIOCM_ST: u32 = 8;
-pub const TIOCM_SR: u32 = 16;
-pub const TIOCM_CTS: u32 = 32;
-pub const TIOCM_CAR: u32 = 64;
-pub const TIOCM_RNG: u32 = 128;
-pub const TIOCM_DSR: u32 = 256;
-pub const TIOCM_CD: u32 = 64;
-pub const TIOCM_RI: u32 = 128;
-pub const TIOCM_OUT1: u32 = 8192;
-pub const TIOCM_OUT2: u32 = 16384;
-pub const TIOCM_LOOP: u32 = 32768;
-pub const TIOCPKT_DATA: u32 = 0;
-pub const TIOCPKT_FLUSHREAD: u32 = 1;
-pub const TIOCPKT_FLUSHWRITE: u32 = 2;
-pub const TIOCPKT_STOP: u32 = 4;
-pub const TIOCPKT_START: u32 = 8;
-pub const TIOCPKT_NOSTOP: u32 = 16;
-pub const TIOCPKT_DOSTOP: u32 = 32;
-pub const TIOCPKT_IOCTL: u32 = 64;
-pub const TIOCSER_TEMT: u32 = 1;
-pub const IGNBRK: u32 = 1;
-pub const BRKINT: u32 = 2;
-pub const IGNPAR: u32 = 4;
-pub const PARMRK: u32 = 8;
-pub const INPCK: u32 = 16;
-pub const ISTRIP: u32 = 32;
-pub const INLCR: u32 = 64;
-pub const IGNCR: u32 = 128;
-pub const ICRNL: u32 = 256;
-pub const IXANY: u32 = 2048;
-pub const OPOST: u32 = 1;
-pub const OCRNL: u32 = 8;
-pub const ONOCR: u32 = 16;
-pub const ONLRET: u32 = 32;
-pub const OFILL: u32 = 64;
-pub const OFDEL: u32 = 128;
-pub const B0: u32 = 0;
-pub const B50: u32 = 1;
-pub const B75: u32 = 2;
-pub const B110: u32 = 3;
-pub const B134: u32 = 4;
-pub const B150: u32 = 5;
-pub const B200: u32 = 6;
-pub const B300: u32 = 7;
-pub const B600: u32 = 8;
-pub const B1200: u32 = 9;
-pub const B1800: u32 = 10;
-pub const B2400: u32 = 11;
-pub const B4800: u32 = 12;
-pub const B9600: u32 = 13;
-pub const B19200: u32 = 14;
-pub const B38400: u32 = 15;
-pub const EXTA: u32 = 14;
-pub const EXTB: u32 = 15;
-pub const ADDRB: u32 = 536870912;
-pub const CMSPAR: u32 = 1073741824;
-pub const CRTSCTS: u32 = 2147483648;
-pub const IBSHIFT: u32 = 16;
-pub const TCOOFF: u32 = 0;
-pub const TCOON: u32 = 1;
-pub const TCIOFF: u32 = 2;
-pub const TCION: u32 = 3;
-pub const TCIFLUSH: u32 = 0;
-pub const TCOFLUSH: u32 = 1;
-pub const TCIOFLUSH: u32 = 2;
-pub const NCCS: u32 = 19;
-pub const VINTR: u32 = 0;
-pub const VQUIT: u32 = 1;
-pub const VERASE: u32 = 2;
-pub const VKILL: u32 = 3;
-pub const VEOF: u32 = 4;
-pub const VMIN: u32 = 5;
-pub const VEOL: u32 = 6;
-pub const VTIME: u32 = 7;
-pub const VEOL2: u32 = 8;
-pub const VSWTC: u32 = 9;
-pub const VWERASE: u32 = 10;
-pub const VREPRINT: u32 = 11;
-pub const VSUSP: u32 = 12;
-pub const VSTART: u32 = 13;
-pub const VSTOP: u32 = 14;
-pub const VLNEXT: u32 = 15;
-pub const VDISCARD: u32 = 16;
-pub const IXON: u32 = 512;
-pub const IXOFF: u32 = 1024;
-pub const IUCLC: u32 = 4096;
-pub const IMAXBEL: u32 = 8192;
-pub const IUTF8: u32 = 16384;
-pub const ONLCR: u32 = 2;
-pub const OLCUC: u32 = 4;
-pub const NLDLY: u32 = 768;
-pub const NL0: u32 = 0;
-pub const NL1: u32 = 256;
-pub const NL2: u32 = 512;
-pub const NL3: u32 = 768;
-pub const TABDLY: u32 = 3072;
-pub const TAB0: u32 = 0;
-pub const TAB1: u32 = 1024;
-pub const TAB2: u32 = 2048;
-pub const TAB3: u32 = 3072;
-pub const XTABS: u32 = 3072;
-pub const CRDLY: u32 = 12288;
-pub const CR0: u32 = 0;
-pub const CR1: u32 = 4096;
-pub const CR2: u32 = 8192;
-pub const CR3: u32 = 12288;
-pub const FFDLY: u32 = 16384;
-pub const FF0: u32 = 0;
-pub const FF1: u32 = 16384;
-pub const BSDLY: u32 = 32768;
-pub const BS0: u32 = 0;
-pub const BS1: u32 = 32768;
-pub const VTDLY: u32 = 65536;
-pub const VT0: u32 = 0;
-pub const VT1: u32 = 65536;
-pub const CBAUD: u32 = 255;
-pub const CBAUDEX: u32 = 0;
-pub const BOTHER: u32 = 31;
-pub const B57600: u32 = 16;
-pub const B115200: u32 = 17;
-pub const B230400: u32 = 18;
-pub const B460800: u32 = 19;
-pub const B500000: u32 = 20;
-pub const B576000: u32 = 21;
-pub const B921600: u32 = 22;
-pub const B1000000: u32 = 23;
-pub const B1152000: u32 = 24;
-pub const B1500000: u32 = 25;
-pub const B2000000: u32 = 26;
-pub const B2500000: u32 = 27;
-pub const B3000000: u32 = 28;
-pub const B3500000: u32 = 29;
-pub const B4000000: u32 = 30;
-pub const CSIZE: u32 = 768;
-pub const CS5: u32 = 0;
-pub const CS6: u32 = 256;
-pub const CS7: u32 = 512;
-pub const CS8: u32 = 768;
-pub const CSTOPB: u32 = 1024;
-pub const CREAD: u32 = 2048;
-pub const PARENB: u32 = 4096;
-pub const PARODD: u32 = 8192;
-pub const HUPCL: u32 = 16384;
-pub const CLOCAL: u32 = 32768;
-pub const CIBAUD: u32 = 16711680;
-pub const ISIG: u32 = 128;
-pub const ICANON: u32 = 256;
-pub const XCASE: u32 = 16384;
-pub const ECHO: u32 = 8;
-pub const ECHOE: u32 = 2;
-pub const ECHOK: u32 = 4;
-pub const ECHONL: u32 = 16;
-pub const NOFLSH: u32 = 2147483648;
-pub const TOSTOP: u32 = 4194304;
-pub const ECHOCTL: u32 = 64;
-pub const ECHOPRT: u32 = 32;
-pub const ECHOKE: u32 = 1;
-pub const FLUSHO: u32 = 8388608;
-pub const PENDIN: u32 = 536870912;
-pub const IEXTEN: u32 = 1024;
-pub const EXTPROC: u32 = 268435456;
-pub const TCSANOW: u32 = 0;
-pub const TCSADRAIN: u32 = 1;
-pub const TCSAFLUSH: u32 = 2;
-pub const NCC: u32 = 10;
-pub const _VINTR: u32 = 0;
-pub const _VQUIT: u32 = 1;
-pub const _VERASE: u32 = 2;
-pub const _VKILL: u32 = 3;
-pub const _VEOF: u32 = 4;
-pub const _VMIN: u32 = 5;
-pub const _VEOL: u32 = 6;
-pub const _VTIME: u32 = 7;
-pub const _VEOL2: u32 = 8;
-pub const _VSWTC: u32 = 9;
-pub const UIO_FASTIOV: u32 = 8;
-pub const UIO_MAXIOV: u32 = 1024;
-pub const UNIX_PATH_MAX: u32 = 108;
-pub const __NR_restart_syscall: u32 = 0;
-pub const __NR_exit: u32 = 1;
-pub const __NR_fork: u32 = 2;
-pub const __NR_read: u32 = 3;
-pub const __NR_write: u32 = 4;
-pub const __NR_open: u32 = 5;
-pub const __NR_close: u32 = 6;
-pub const __NR_waitpid: u32 = 7;
-pub const __NR_creat: u32 = 8;
-pub const __NR_link: u32 = 9;
-pub const __NR_unlink: u32 = 10;
-pub const __NR_execve: u32 = 11;
-pub const __NR_chdir: u32 = 12;
-pub const __NR_time: u32 = 13;
-pub const __NR_mknod: u32 = 14;
-pub const __NR_chmod: u32 = 15;
-pub const __NR_lchown: u32 = 16;
-pub const __NR_break: u32 = 17;
-pub const __NR_oldstat: u32 = 18;
-pub const __NR_lseek: u32 = 19;
-pub const __NR_getpid: u32 = 20;
-pub const __NR_mount: u32 = 21;
-pub const __NR_umount: u32 = 22;
-pub const __NR_setuid: u32 = 23;
-pub const __NR_getuid: u32 = 24;
-pub const __NR_stime: u32 = 25;
-pub const __NR_ptrace: u32 = 26;
-pub const __NR_alarm: u32 = 27;
-pub const __NR_oldfstat: u32 = 28;
-pub const __NR_pause: u32 = 29;
-pub const __NR_utime: u32 = 30;
-pub const __NR_stty: u32 = 31;
-pub const __NR_gtty: u32 = 32;
-pub const __NR_access: u32 = 33;
-pub const __NR_nice: u32 = 34;
-pub const __NR_ftime: u32 = 35;
-pub const __NR_sync: u32 = 36;
-pub const __NR_kill: u32 = 37;
-pub const __NR_rename: u32 = 38;
-pub const __NR_mkdir: u32 = 39;
-pub const __NR_rmdir: u32 = 40;
-pub const __NR_dup: u32 = 41;
-pub const __NR_pipe: u32 = 42;
-pub const __NR_times: u32 = 43;
-pub const __NR_prof: u32 = 44;
-pub const __NR_brk: u32 = 45;
-pub const __NR_setgid: u32 = 46;
-pub const __NR_getgid: u32 = 47;
-pub const __NR_signal: u32 = 48;
-pub const __NR_geteuid: u32 = 49;
-pub const __NR_getegid: u32 = 50;
-pub const __NR_acct: u32 = 51;
-pub const __NR_umount2: u32 = 52;
-pub const __NR_lock: u32 = 53;
-pub const __NR_ioctl: u32 = 54;
-pub const __NR_fcntl: u32 = 55;
-pub const __NR_mpx: u32 = 56;
-pub const __NR_setpgid: u32 = 57;
-pub const __NR_ulimit: u32 = 58;
-pub const __NR_oldolduname: u32 = 59;
-pub const __NR_umask: u32 = 60;
-pub const __NR_chroot: u32 = 61;
-pub const __NR_ustat: u32 = 62;
-pub const __NR_dup2: u32 = 63;
-pub const __NR_getppid: u32 = 64;
-pub const __NR_getpgrp: u32 = 65;
-pub const __NR_setsid: u32 = 66;
-pub const __NR_sigaction: u32 = 67;
-pub const __NR_sgetmask: u32 = 68;
-pub const __NR_ssetmask: u32 = 69;
-pub const __NR_setreuid: u32 = 70;
-pub const __NR_setregid: u32 = 71;
-pub const __NR_sigsuspend: u32 = 72;
-pub const __NR_sigpending: u32 = 73;
-pub const __NR_sethostname: u32 = 74;
-pub const __NR_setrlimit: u32 = 75;
-pub const __NR_getrlimit: u32 = 76;
-pub const __NR_getrusage: u32 = 77;
-pub const __NR_gettimeofday: u32 = 78;
-pub const __NR_settimeofday: u32 = 79;
-pub const __NR_getgroups: u32 = 80;
-pub const __NR_setgroups: u32 = 81;
-pub const __NR_select: u32 = 82;
-pub const __NR_symlink: u32 = 83;
-pub const __NR_oldlstat: u32 = 84;
-pub const __NR_readlink: u32 = 85;
-pub const __NR_uselib: u32 = 86;
-pub const __NR_swapon: u32 = 87;
-pub const __NR_reboot: u32 = 88;
-pub const __NR_readdir: u32 = 89;
-pub const __NR_mmap: u32 = 90;
-pub const __NR_munmap: u32 = 91;
-pub const __NR_truncate: u32 = 92;
-pub const __NR_ftruncate: u32 = 93;
-pub const __NR_fchmod: u32 = 94;
-pub const __NR_fchown: u32 = 95;
-pub const __NR_getpriority: u32 = 96;
-pub const __NR_setpriority: u32 = 97;
-pub const __NR_profil: u32 = 98;
-pub const __NR_statfs: u32 = 99;
-pub const __NR_fstatfs: u32 = 100;
-pub const __NR_ioperm: u32 = 101;
-pub const __NR_socketcall: u32 = 102;
-pub const __NR_syslog: u32 = 103;
-pub const __NR_setitimer: u32 = 104;
-pub const __NR_getitimer: u32 = 105;
-pub const __NR_stat: u32 = 106;
-pub const __NR_lstat: u32 = 107;
-pub const __NR_fstat: u32 = 108;
-pub const __NR_olduname: u32 = 109;
-pub const __NR_iopl: u32 = 110;
-pub const __NR_vhangup: u32 = 111;
-pub const __NR_idle: u32 = 112;
-pub const __NR_vm86: u32 = 113;
-pub const __NR_wait4: u32 = 114;
-pub const __NR_swapoff: u32 = 115;
-pub const __NR_sysinfo: u32 = 116;
-pub const __NR_ipc: u32 = 117;
-pub const __NR_fsync: u32 = 118;
-pub const __NR_sigreturn: u32 = 119;
-pub const __NR_clone: u32 = 120;
-pub const __NR_setdomainname: u32 = 121;
-pub const __NR_uname: u32 = 122;
-pub const __NR_modify_ldt: u32 = 123;
-pub const __NR_adjtimex: u32 = 124;
-pub const __NR_mprotect: u32 = 125;
-pub const __NR_sigprocmask: u32 = 126;
-pub const __NR_create_module: u32 = 127;
-pub const __NR_init_module: u32 = 128;
-pub const __NR_delete_module: u32 = 129;
-pub const __NR_get_kernel_syms: u32 = 130;
-pub const __NR_quotactl: u32 = 131;
-pub const __NR_getpgid: u32 = 132;
-pub const __NR_fchdir: u32 = 133;
-pub const __NR_bdflush: u32 = 134;
-pub const __NR_sysfs: u32 = 135;
-pub const __NR_personality: u32 = 136;
-pub const __NR_afs_syscall: u32 = 137;
-pub const __NR_setfsuid: u32 = 138;
-pub const __NR_setfsgid: u32 = 139;
-pub const __NR__llseek: u32 = 140;
-pub const __NR_getdents: u32 = 141;
-pub const __NR__newselect: u32 = 142;
-pub const __NR_flock: u32 = 143;
-pub const __NR_msync: u32 = 144;
-pub const __NR_readv: u32 = 145;
-pub const __NR_writev: u32 = 146;
-pub const __NR_getsid: u32 = 147;
-pub const __NR_fdatasync: u32 = 148;
-pub const __NR__sysctl: u32 = 149;
-pub const __NR_mlock: u32 = 150;
-pub const __NR_munlock: u32 = 151;
-pub const __NR_mlockall: u32 = 152;
-pub const __NR_munlockall: u32 = 153;
-pub const __NR_sched_setparam: u32 = 154;
-pub const __NR_sched_getparam: u32 = 155;
-pub const __NR_sched_setscheduler: u32 = 156;
-pub const __NR_sched_getscheduler: u32 = 157;
-pub const __NR_sched_yield: u32 = 158;
-pub const __NR_sched_get_priority_max: u32 = 159;
-pub const __NR_sched_get_priority_min: u32 = 160;
-pub const __NR_sched_rr_get_interval: u32 = 161;
-pub const __NR_nanosleep: u32 = 162;
-pub const __NR_mremap: u32 = 163;
-pub const __NR_setresuid: u32 = 164;
-pub const __NR_getresuid: u32 = 165;
-pub const __NR_query_module: u32 = 166;
-pub const __NR_poll: u32 = 167;
-pub const __NR_nfsservctl: u32 = 168;
-pub const __NR_setresgid: u32 = 169;
-pub const __NR_getresgid: u32 = 170;
-pub const __NR_prctl: u32 = 171;
-pub const __NR_rt_sigreturn: u32 = 172;
-pub const __NR_rt_sigaction: u32 = 173;
-pub const __NR_rt_sigprocmask: u32 = 174;
-pub const __NR_rt_sigpending: u32 = 175;
-pub const __NR_rt_sigtimedwait: u32 = 176;
-pub const __NR_rt_sigqueueinfo: u32 = 177;
-pub const __NR_rt_sigsuspend: u32 = 178;
-pub const __NR_pread64: u32 = 179;
-pub const __NR_pwrite64: u32 = 180;
-pub const __NR_chown: u32 = 181;
-pub const __NR_getcwd: u32 = 182;
-pub const __NR_capget: u32 = 183;
-pub const __NR_capset: u32 = 184;
-pub const __NR_sigaltstack: u32 = 185;
-pub const __NR_sendfile: u32 = 186;
-pub const __NR_getpmsg: u32 = 187;
-pub const __NR_putpmsg: u32 = 188;
-pub const __NR_vfork: u32 = 189;
-pub const __NR_ugetrlimit: u32 = 190;
-pub const __NR_readahead: u32 = 191;
-pub const __NR_mmap2: u32 = 192;
-pub const __NR_truncate64: u32 = 193;
-pub const __NR_ftruncate64: u32 = 194;
-pub const __NR_stat64: u32 = 195;
-pub const __NR_lstat64: u32 = 196;
-pub const __NR_fstat64: u32 = 197;
-pub const __NR_pciconfig_read: u32 = 198;
-pub const __NR_pciconfig_write: u32 = 199;
-pub const __NR_pciconfig_iobase: u32 = 200;
-pub const __NR_multiplexer: u32 = 201;
-pub const __NR_getdents64: u32 = 202;
-pub const __NR_pivot_root: u32 = 203;
-pub const __NR_fcntl64: u32 = 204;
-pub const __NR_madvise: u32 = 205;
-pub const __NR_mincore: u32 = 206;
-pub const __NR_gettid: u32 = 207;
-pub const __NR_tkill: u32 = 208;
-pub const __NR_setxattr: u32 = 209;
-pub const __NR_lsetxattr: u32 = 210;
-pub const __NR_fsetxattr: u32 = 211;
-pub const __NR_getxattr: u32 = 212;
-pub const __NR_lgetxattr: u32 = 213;
-pub const __NR_fgetxattr: u32 = 214;
-pub const __NR_listxattr: u32 = 215;
-pub const __NR_llistxattr: u32 = 216;
-pub const __NR_flistxattr: u32 = 217;
-pub const __NR_removexattr: u32 = 218;
-pub const __NR_lremovexattr: u32 = 219;
-pub const __NR_fremovexattr: u32 = 220;
-pub const __NR_futex: u32 = 221;
-pub const __NR_sched_setaffinity: u32 = 222;
-pub const __NR_sched_getaffinity: u32 = 223;
-pub const __NR_tuxcall: u32 = 225;
-pub const __NR_sendfile64: u32 = 226;
-pub const __NR_io_setup: u32 = 227;
-pub const __NR_io_destroy: u32 = 228;
-pub const __NR_io_getevents: u32 = 229;
-pub const __NR_io_submit: u32 = 230;
-pub const __NR_io_cancel: u32 = 231;
-pub const __NR_set_tid_address: u32 = 232;
-pub const __NR_fadvise64: u32 = 233;
-pub const __NR_exit_group: u32 = 234;
-pub const __NR_lookup_dcookie: u32 = 235;
-pub const __NR_epoll_create: u32 = 236;
-pub const __NR_epoll_ctl: u32 = 237;
-pub const __NR_epoll_wait: u32 = 238;
-pub const __NR_remap_file_pages: u32 = 239;
-pub const __NR_timer_create: u32 = 240;
-pub const __NR_timer_settime: u32 = 241;
-pub const __NR_timer_gettime: u32 = 242;
-pub const __NR_timer_getoverrun: u32 = 243;
-pub const __NR_timer_delete: u32 = 244;
-pub const __NR_clock_settime: u32 = 245;
-pub const __NR_clock_gettime: u32 = 246;
-pub const __NR_clock_getres: u32 = 247;
-pub const __NR_clock_nanosleep: u32 = 248;
-pub const __NR_swapcontext: u32 = 249;
-pub const __NR_tgkill: u32 = 250;
-pub const __NR_utimes: u32 = 251;
-pub const __NR_statfs64: u32 = 252;
-pub const __NR_fstatfs64: u32 = 253;
-pub const __NR_fadvise64_64: u32 = 254;
-pub const __NR_rtas: u32 = 255;
-pub const __NR_sys_debug_setcontext: u32 = 256;
-pub const __NR_migrate_pages: u32 = 258;
-pub const __NR_mbind: u32 = 259;
-pub const __NR_get_mempolicy: u32 = 260;
-pub const __NR_set_mempolicy: u32 = 261;
-pub const __NR_mq_open: u32 = 262;
-pub const __NR_mq_unlink: u32 = 263;
-pub const __NR_mq_timedsend: u32 = 264;
-pub const __NR_mq_timedreceive: u32 = 265;
-pub const __NR_mq_notify: u32 = 266;
-pub const __NR_mq_getsetattr: u32 = 267;
-pub const __NR_kexec_load: u32 = 268;
-pub const __NR_add_key: u32 = 269;
-pub const __NR_request_key: u32 = 270;
-pub const __NR_keyctl: u32 = 271;
-pub const __NR_waitid: u32 = 272;
-pub const __NR_ioprio_set: u32 = 273;
-pub const __NR_ioprio_get: u32 = 274;
-pub const __NR_inotify_init: u32 = 275;
-pub const __NR_inotify_add_watch: u32 = 276;
-pub const __NR_inotify_rm_watch: u32 = 277;
-pub const __NR_spu_run: u32 = 278;
-pub const __NR_spu_create: u32 = 279;
-pub const __NR_pselect6: u32 = 280;
-pub const __NR_ppoll: u32 = 281;
-pub const __NR_unshare: u32 = 282;
-pub const __NR_splice: u32 = 283;
-pub const __NR_tee: u32 = 284;
-pub const __NR_vmsplice: u32 = 285;
-pub const __NR_openat: u32 = 286;
-pub const __NR_mkdirat: u32 = 287;
-pub const __NR_mknodat: u32 = 288;
-pub const __NR_fchownat: u32 = 289;
-pub const __NR_futimesat: u32 = 290;
-pub const __NR_fstatat64: u32 = 291;
-pub const __NR_unlinkat: u32 = 292;
-pub const __NR_renameat: u32 = 293;
-pub const __NR_linkat: u32 = 294;
-pub const __NR_symlinkat: u32 = 295;
-pub const __NR_readlinkat: u32 = 296;
-pub const __NR_fchmodat: u32 = 297;
-pub const __NR_faccessat: u32 = 298;
-pub const __NR_get_robust_list: u32 = 299;
-pub const __NR_set_robust_list: u32 = 300;
-pub const __NR_move_pages: u32 = 301;
-pub const __NR_getcpu: u32 = 302;
-pub const __NR_epoll_pwait: u32 = 303;
-pub const __NR_utimensat: u32 = 304;
-pub const __NR_signalfd: u32 = 305;
-pub const __NR_timerfd_create: u32 = 306;
-pub const __NR_eventfd: u32 = 307;
-pub const __NR_sync_file_range2: u32 = 308;
-pub const __NR_fallocate: u32 = 309;
-pub const __NR_subpage_prot: u32 = 310;
-pub const __NR_timerfd_settime: u32 = 311;
-pub const __NR_timerfd_gettime: u32 = 312;
-pub const __NR_signalfd4: u32 = 313;
-pub const __NR_eventfd2: u32 = 314;
-pub const __NR_epoll_create1: u32 = 315;
-pub const __NR_dup3: u32 = 316;
-pub const __NR_pipe2: u32 = 317;
-pub const __NR_inotify_init1: u32 = 318;
-pub const __NR_perf_event_open: u32 = 319;
-pub const __NR_preadv: u32 = 320;
-pub const __NR_pwritev: u32 = 321;
-pub const __NR_rt_tgsigqueueinfo: u32 = 322;
-pub const __NR_fanotify_init: u32 = 323;
-pub const __NR_fanotify_mark: u32 = 324;
-pub const __NR_prlimit64: u32 = 325;
-pub const __NR_socket: u32 = 326;
-pub const __NR_bind: u32 = 327;
-pub const __NR_connect: u32 = 328;
-pub const __NR_listen: u32 = 329;
-pub const __NR_accept: u32 = 330;
-pub const __NR_getsockname: u32 = 331;
-pub const __NR_getpeername: u32 = 332;
-pub const __NR_socketpair: u32 = 333;
-pub const __NR_send: u32 = 334;
-pub const __NR_sendto: u32 = 335;
-pub const __NR_recv: u32 = 336;
-pub const __NR_recvfrom: u32 = 337;
-pub const __NR_shutdown: u32 = 338;
-pub const __NR_setsockopt: u32 = 339;
-pub const __NR_getsockopt: u32 = 340;
-pub const __NR_sendmsg: u32 = 341;
-pub const __NR_recvmsg: u32 = 342;
-pub const __NR_recvmmsg: u32 = 343;
-pub const __NR_accept4: u32 = 344;
-pub const __NR_name_to_handle_at: u32 = 345;
-pub const __NR_open_by_handle_at: u32 = 346;
-pub const __NR_clock_adjtime: u32 = 347;
-pub const __NR_syncfs: u32 = 348;
-pub const __NR_sendmmsg: u32 = 349;
-pub const __NR_setns: u32 = 350;
-pub const __NR_process_vm_readv: u32 = 351;
-pub const __NR_process_vm_writev: u32 = 352;
-pub const __NR_finit_module: u32 = 353;
-pub const __NR_kcmp: u32 = 354;
-pub const __NR_sched_setattr: u32 = 355;
-pub const __NR_sched_getattr: u32 = 356;
-pub const __NR_renameat2: u32 = 357;
-pub const __NR_seccomp: u32 = 358;
-pub const __NR_getrandom: u32 = 359;
-pub const __NR_memfd_create: u32 = 360;
-pub const __NR_bpf: u32 = 361;
-pub const __NR_execveat: u32 = 362;
-pub const __NR_switch_endian: u32 = 363;
-pub const __NR_userfaultfd: u32 = 364;
-pub const __NR_membarrier: u32 = 365;
-pub const __NR_mlock2: u32 = 378;
-pub const __NR_copy_file_range: u32 = 379;
-pub const __NR_preadv2: u32 = 380;
-pub const __NR_pwritev2: u32 = 381;
-pub const __NR_kexec_file_load: u32 = 382;
-pub const __NR_statx: u32 = 383;
-pub const __NR_pkey_alloc: u32 = 384;
-pub const __NR_pkey_free: u32 = 385;
-pub const __NR_pkey_mprotect: u32 = 386;
-pub const __NR_rseq: u32 = 387;
-pub const __NR_io_pgetevents: u32 = 388;
-pub const __NR_semget: u32 = 393;
-pub const __NR_semctl: u32 = 394;
-pub const __NR_shmget: u32 = 395;
-pub const __NR_shmctl: u32 = 396;
-pub const __NR_shmat: u32 = 397;
-pub const __NR_shmdt: u32 = 398;
-pub const __NR_msgget: u32 = 399;
-pub const __NR_msgsnd: u32 = 400;
-pub const __NR_msgrcv: u32 = 401;
-pub const __NR_msgctl: u32 = 402;
-pub const __NR_clock_gettime64: u32 = 403;
-pub const __NR_clock_settime64: u32 = 404;
-pub const __NR_clock_adjtime64: u32 = 405;
-pub const __NR_clock_getres_time64: u32 = 406;
-pub const __NR_clock_nanosleep_time64: u32 = 407;
-pub const __NR_timer_gettime64: u32 = 408;
-pub const __NR_timer_settime64: u32 = 409;
-pub const __NR_timerfd_gettime64: u32 = 410;
-pub const __NR_timerfd_settime64: u32 = 411;
-pub const __NR_utimensat_time64: u32 = 412;
-pub const __NR_pselect6_time64: u32 = 413;
-pub const __NR_ppoll_time64: u32 = 414;
-pub const __NR_io_pgetevents_time64: u32 = 416;
-pub const __NR_recvmmsg_time64: u32 = 417;
-pub const __NR_mq_timedsend_time64: u32 = 418;
-pub const __NR_mq_timedreceive_time64: u32 = 419;
-pub const __NR_semtimedop_time64: u32 = 420;
-pub const __NR_rt_sigtimedwait_time64: u32 = 421;
-pub const __NR_futex_time64: u32 = 422;
-pub const __NR_sched_rr_get_interval_time64: u32 = 423;
-pub const __NR_pidfd_send_signal: u32 = 424;
-pub const __NR_io_uring_setup: u32 = 425;
-pub const __NR_io_uring_enter: u32 = 426;
-pub const __NR_io_uring_register: u32 = 427;
-pub const __NR_open_tree: u32 = 428;
-pub const __NR_move_mount: u32 = 429;
-pub const __NR_fsopen: u32 = 430;
-pub const __NR_fsconfig: u32 = 431;
-pub const __NR_fsmount: u32 = 432;
-pub const __NR_fspick: u32 = 433;
-pub const __NR_pidfd_open: u32 = 434;
-pub const __NR_clone3: u32 = 435;
-pub const __NR_close_range: u32 = 436;
-pub const __NR_openat2: u32 = 437;
-pub const __NR_pidfd_getfd: u32 = 438;
-pub const __NR_faccessat2: u32 = 439;
-pub const __NR_process_madvise: u32 = 440;
-pub const __NR_epoll_pwait2: u32 = 441;
-pub const __NR_mount_setattr: u32 = 442;
-pub const __NR_quotactl_fd: u32 = 443;
-pub const __NR_landlock_create_ruleset: u32 = 444;
-pub const __NR_landlock_add_rule: u32 = 445;
-pub const __NR_landlock_restrict_self: u32 = 446;
-pub const __NR_process_mrelease: u32 = 448;
-pub const __NR_futex_waitv: u32 = 449;
-pub const __NR_set_mempolicy_home_node: u32 = 450;
-pub const __OLD_UTS_LEN: u32 = 8;
-pub const __NEW_UTS_LEN: u32 = 64;
-pub const WNOHANG: u32 = 1;
-pub const WUNTRACED: u32 = 2;
-pub const WSTOPPED: u32 = 2;
-pub const WEXITED: u32 = 4;
-pub const WCONTINUED: u32 = 8;
-pub const WNOWAIT: u32 = 16777216;
-pub const __WNOTHREAD: u32 = 536870912;
-pub const __WALL: u32 = 1073741824;
-pub const __WCLONE: u32 = 2147483648;
-pub const P_ALL: u32 = 0;
-pub const P_PID: u32 = 1;
-pub const P_PGID: u32 = 2;
-pub const P_PIDFD: u32 = 3;
-pub const XATTR_CREATE: u32 = 1;
-pub const XATTR_REPLACE: u32 = 2;
-pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0";
-pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0";
-pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0";
-pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0";
-pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0";
-pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0";
-pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0";
-pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0";
-pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0";
-pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0";
-pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0";
-pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0";
-pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0";
-pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0";
-pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0";
-pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0";
-pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0";
-pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0";
-pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0";
-pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0";
-pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0";
-pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0";
-pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0";
-pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0";
-pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0";
-pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0";
-pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0";
-pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0";
-pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0";
-pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0";
-pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0";
-pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0";
-pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0";
-pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0";
-pub const MFD_CLOEXEC: u32 = 1;
-pub const MFD_ALLOW_SEALING: u32 = 2;
-pub const MFD_HUGETLB: u32 = 4;
-pub const MFD_HUGE_SHIFT: u32 = 26;
-pub const MFD_HUGE_MASK: u32 = 63;
-pub const MFD_HUGE_64KB: u32 = 1073741824;
-pub const MFD_HUGE_512KB: u32 = 1275068416;
-pub const MFD_HUGE_1MB: u32 = 1342177280;
-pub const MFD_HUGE_2MB: u32 = 1409286144;
-pub const MFD_HUGE_8MB: u32 = 1543503872;
-pub const MFD_HUGE_16MB: u32 = 1610612736;
-pub const MFD_HUGE_32MB: u32 = 1677721600;
-pub const MFD_HUGE_256MB: u32 = 1879048192;
-pub const MFD_HUGE_512MB: u32 = 1946157056;
-pub const MFD_HUGE_1GB: u32 = 2013265920;
-pub const MFD_HUGE_2GB: u32 = 2080374784;
-pub const MFD_HUGE_16GB: u32 = 2281701376;
-pub const TFD_TIMER_ABSTIME: u32 = 1;
-pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2;
-pub const TFD_CLOEXEC: u32 = 524288;
-pub const TFD_NONBLOCK: u32 = 2048;
-pub const USERFAULTFD_IOC: u32 = 170;
-pub const _UFFDIO_REGISTER: u32 = 0;
-pub const _UFFDIO_UNREGISTER: u32 = 1;
-pub const _UFFDIO_WAKE: u32 = 2;
-pub const _UFFDIO_COPY: u32 = 3;
-pub const _UFFDIO_ZEROPAGE: u32 = 4;
-pub const _UFFDIO_WRITEPROTECT: u32 = 6;
-pub const _UFFDIO_CONTINUE: u32 = 7;
-pub const _UFFDIO_API: u32 = 63;
-pub const UFFDIO: u32 = 170;
-pub const UFFD_EVENT_PAGEFAULT: u32 = 18;
-pub const UFFD_EVENT_FORK: u32 = 19;
-pub const UFFD_EVENT_REMAP: u32 = 20;
-pub const UFFD_EVENT_REMOVE: u32 = 21;
-pub const UFFD_EVENT_UNMAP: u32 = 22;
-pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1;
-pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2;
-pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4;
-pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1;
-pub const UFFD_FEATURE_EVENT_FORK: u32 = 2;
-pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4;
-pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8;
-pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16;
-pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32;
-pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64;
-pub const UFFD_FEATURE_SIGBUS: u32 = 128;
-pub const UFFD_FEATURE_THREAD_ID: u32 = 256;
-pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512;
-pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024;
-pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048;
-pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096;
-pub const UFFD_USER_MODE_ONLY: u32 = 1;
-pub const IORING_FILE_INDEX_ALLOC: i32 = -1;
-pub const IORING_SETUP_IOPOLL: u32 = 1;
-pub const IORING_SETUP_SQPOLL: u32 = 2;
-pub const IORING_SETUP_SQ_AFF: u32 = 4;
-pub const IORING_SETUP_CQSIZE: u32 = 8;
-pub const IORING_SETUP_CLAMP: u32 = 16;
-pub const IORING_SETUP_ATTACH_WQ: u32 = 32;
-pub const IORING_SETUP_R_DISABLED: u32 = 64;
-pub const IORING_SETUP_SUBMIT_ALL: u32 = 128;
-pub const IORING_SETUP_COOP_TASKRUN: u32 = 256;
-pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512;
-pub const IORING_SETUP_SQE128: u32 = 1024;
-pub const IORING_SETUP_CQE32: u32 = 2048;
-pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096;
-pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192;
-pub const IORING_URING_CMD_FIXED: u32 = 1;
-pub const IORING_FSYNC_DATASYNC: u32 = 1;
-pub const IORING_TIMEOUT_ABS: u32 = 1;
-pub const IORING_TIMEOUT_UPDATE: u32 = 2;
-pub const IORING_TIMEOUT_BOOTTIME: u32 = 4;
-pub const IORING_TIMEOUT_REALTIME: u32 = 8;
-pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16;
-pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32;
-pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12;
-pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18;
-pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648;
-pub const IORING_POLL_ADD_MULTI: u32 = 1;
-pub const IORING_POLL_UPDATE_EVENTS: u32 = 2;
-pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4;
-pub const IORING_POLL_ADD_LEVEL: u32 = 8;
-pub const IORING_ASYNC_CANCEL_ALL: u32 = 1;
-pub const IORING_ASYNC_CANCEL_FD: u32 = 2;
-pub const IORING_ASYNC_CANCEL_ANY: u32 = 4;
-pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8;
-pub const IORING_RECVSEND_POLL_FIRST: u32 = 1;
-pub const IORING_RECV_MULTISHOT: u32 = 2;
-pub const IORING_RECVSEND_FIXED_BUF: u32 = 4;
-pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8;
-pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648;
-pub const IORING_ACCEPT_MULTISHOT: u32 = 1;
-pub const IORING_MSG_RING_CQE_SKIP: u32 = 1;
-pub const IORING_CQE_F_BUFFER: u32 = 1;
-pub const IORING_CQE_F_MORE: u32 = 2;
-pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4;
-pub const IORING_CQE_F_NOTIF: u32 = 8;
-pub const IORING_OFF_SQ_RING: u32 = 0;
-pub const IORING_OFF_CQ_RING: u32 = 134217728;
-pub const IORING_OFF_SQES: u32 = 268435456;
-pub const IORING_SQ_NEED_WAKEUP: u32 = 1;
-pub const IORING_SQ_CQ_OVERFLOW: u32 = 2;
-pub const IORING_SQ_TASKRUN: u32 = 4;
-pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1;
-pub const IORING_ENTER_GETEVENTS: u32 = 1;
-pub const IORING_ENTER_SQ_WAKEUP: u32 = 2;
-pub const IORING_ENTER_SQ_WAIT: u32 = 4;
-pub const IORING_ENTER_EXT_ARG: u32 = 8;
-pub const IORING_ENTER_REGISTERED_RING: u32 = 16;
-pub const IORING_FEAT_SINGLE_MMAP: u32 = 1;
-pub const IORING_FEAT_NODROP: u32 = 2;
-pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4;
-pub const IORING_FEAT_RW_CUR_POS: u32 = 8;
-pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16;
-pub const IORING_FEAT_FAST_POLL: u32 = 32;
-pub const IORING_FEAT_POLL_32BITS: u32 = 64;
-pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128;
-pub const IORING_FEAT_EXT_ARG: u32 = 256;
-pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512;
-pub const IORING_FEAT_RSRC_TAGS: u32 = 1024;
-pub const IORING_FEAT_CQE_SKIP: u32 = 2048;
-pub const IORING_FEAT_LINKED_FILE: u32 = 4096;
-pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1;
-pub const IORING_REGISTER_FILES_SKIP: i32 = -2;
-pub const IO_URING_OP_SUPPORTED: u32 = 1;
-pub const DT_UNKNOWN: u32 = 0;
-pub const DT_FIFO: u32 = 1;
-pub const DT_CHR: u32 = 2;
-pub const DT_DIR: u32 = 4;
-pub const DT_BLK: u32 = 6;
-pub const DT_REG: u32 = 8;
-pub const DT_LNK: u32 = 10;
-pub const DT_SOCK: u32 = 12;
-pub const SHUT_RD: u32 = 0;
-pub const SHUT_WR: u32 = 1;
-pub const SHUT_RDWR: u32 = 2;
-pub const STAT_HAVE_NSEC: u32 = 1;
-pub const SOCK_STREAM: u32 = 1;
-pub const SOCK_DGRAM: u32 = 2;
-pub const SOCK_RAW: u32 = 3;
-pub const SOCK_RDM: u32 = 4;
-pub const SOCK_SEQPACKET: u32 = 5;
-pub const F_OK: u32 = 0;
-pub const R_OK: u32 = 4;
-pub const W_OK: u32 = 2;
-pub const X_OK: u32 = 1;
-pub const UTIME_NOW: u32 = 1073741823;
-pub const UTIME_OMIT: u32 = 1073741822;
-pub const MSG_DONTWAIT: u32 = 64;
-pub const AF_UNSPEC: u32 = 0;
-pub const AF_UNIX: u32 = 1;
-pub const AF_INET: u32 = 2;
-pub const AF_AX25: u32 = 3;
-pub const AF_IPX: u32 = 4;
-pub const AF_APPLETALK: u32 = 5;
-pub const AF_NETROM: u32 = 6;
-pub const AF_BRIDGE: u32 = 7;
-pub const AF_ATMPVC: u32 = 8;
-pub const AF_X25: u32 = 9;
-pub const AF_INET6: u32 = 10;
-pub const AF_ROSE: u32 = 11;
-pub const AF_DECnet: u32 = 12;
-pub const AF_NETBEUI: u32 = 13;
-pub const AF_SECURITY: u32 = 14;
-pub const AF_KEY: u32 = 15;
-pub const AF_NETLINK: u32 = 16;
-pub const AF_PACKET: u32 = 17;
-pub const AF_ASH: u32 = 18;
-pub const AF_ECONET: u32 = 19;
-pub const AF_ATMSVC: u32 = 20;
-pub const AF_RDS: u32 = 21;
-pub const AF_SNA: u32 = 22;
-pub const AF_IRDA: u32 = 23;
-pub const AF_PPPOX: u32 = 24;
-pub const AF_WANPIPE: u32 = 25;
-pub const AF_LLC: u32 = 26;
-pub const AF_CAN: u32 = 29;
-pub const AF_TIPC: u32 = 30;
-pub const AF_BLUETOOTH: u32 = 31;
-pub const AF_IUCV: u32 = 32;
-pub const AF_RXRPC: u32 = 33;
-pub const AF_ISDN: u32 = 34;
-pub const AF_PHONET: u32 = 35;
-pub const AF_IEEE802154: u32 = 36;
-pub const AF_MAX: u32 = 37;
-pub const MSG_OOB: u32 = 1;
-pub const MSG_PEEK: u32 = 2;
-pub const MSG_DONTROUTE: u32 = 4;
-pub const MSG_CTRUNC: u32 = 8;
-pub const MSG_PROBE: u32 = 16;
-pub const MSG_TRUNC: u32 = 32;
-pub const MSG_EOR: u32 = 128;
-pub const MSG_WAITALL: u32 = 256;
-pub const MSG_FIN: u32 = 512;
-pub const MSG_SYN: u32 = 1024;
-pub const MSG_CONFIRM: u32 = 2048;
-pub const MSG_RST: u32 = 4096;
-pub const MSG_ERRQUEUE: u32 = 8192;
-pub const MSG_NOSIGNAL: u32 = 16384;
-pub const MSG_MORE: u32 = 32768;
-pub const MSG_CMSG_CLOEXEC: u32 = 1073741824;
-pub const STDIN_FILENO: u32 = 0;
-pub const STDOUT_FILENO: u32 = 1;
-pub const STDERR_FILENO: u32 = 2;
-pub const RWF_HIPRI: u32 = 1;
-pub const RWF_DSYNC: u32 = 2;
-pub const RWF_SYNC: u32 = 4;
-pub const RWF_NOWAIT: u32 = 8;
-pub const RWF_APPEND: u32 = 16;
-pub const EFD_SEMAPHORE: u32 = 1;
-pub const EFD_CLOEXEC: u32 = 524288;
-pub const EFD_NONBLOCK: u32 = 2048;
-pub const EPOLLIN: u32 = 1;
-pub const EPOLLPRI: u32 = 2;
-pub const EPOLLOUT: u32 = 4;
-pub const EPOLLERR: u32 = 8;
-pub const EPOLLHUP: u32 = 16;
-pub const EPOLLNVAL: u32 = 32;
-pub const EPOLLRDNORM: u32 = 64;
-pub const EPOLLRDBAND: u32 = 128;
-pub const EPOLLWRNORM: u32 = 256;
-pub const EPOLLWRBAND: u32 = 512;
-pub const EPOLLMSG: u32 = 1024;
-pub const EPOLLRDHUP: u32 = 8192;
-pub const EPOLLEXCLUSIVE: u32 = 268435456;
-pub const EPOLLWAKEUP: u32 = 536870912;
-pub const EPOLLONESHOT: u32 = 1073741824;
-pub const EPOLLET: u32 = 2147483648;
-pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336;
-pub const TFD_CREATE_FLAGS: u32 = 526336;
-pub const TFD_SETTIME_FLAGS: u32 = 1;
-pub const SCM_RIGHTS: u32 = 1;
-pub const SCM_CREDENTIALS: u32 = 2;
-pub const SCM_SECURITY: u32 = 3;
-pub const UFFD_API: u32 = 170;
-pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1;
-pub const UFFDIO_REGISTER_MODE_WP: u32 = 2;
-pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4;
-pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1;
-pub const UFFDIO_COPY_MODE_WP: u32 = 2;
-pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1;
-pub const SPLICE_F_MOVE: u32 = 1;
-pub const SPLICE_F_NONBLOCK: u32 = 2;
-pub const SPLICE_F_MORE: u32 = 4;
-pub const SPLICE_F_GIFT: u32 = 8;
-pub const MNT_FORCE: u32 = 1;
-pub const MNT_DETACH: u32 = 2;
-pub const MNT_EXPIRE: u32 = 4;
-pub const UMOUNT_NOFOLLOW: u32 = 8;
-pub const UMOUNT_UNUSED: u32 = 2147483648;
-pub type size_t = crate::ctypes::c_uint;
-pub type ssize_t = crate::ctypes::c_int;
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[repr(align(16))]
-#[derive(Debug, Copy, Clone)]
-pub struct __vector128 {
-pub u: [__u32; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 32usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_short;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_uid_t = __kernel_uid_t;
-pub type __kernel_old_gid_t = __kernel_gid_t;
-pub type __kernel_old_dev_t = crate::ctypes::c_uint;
-pub type __kernel_size_t = crate::ctypes::c_uint;
-pub type __kernel_ssize_t = crate::ctypes::c_int;
-pub type __kernel_ptrdiff_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_header_struct {
-pub version: __u32,
-pub pid: crate::ctypes::c_int,
-}
-pub type cap_user_header_t = *mut __user_cap_header_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_data_struct {
-pub effective: __u32,
-pub permitted: __u32,
-pub inheritable: __u32,
-}
-pub type cap_user_data_t = *mut __user_cap_data_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_cap_data__bindgen_ty_1; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize],
-pub rootid: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct f_owner_ex {
-pub type_: crate::ctypes::c_int,
-pub pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_off_t,
-pub l_len: __kernel_off_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock64 {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_loff_t,
-pub l_len: __kernel_loff_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct open_how {
-pub flags: __u64,
-pub mode: __u64,
-pub resolve: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct epoll_event {
-pub events: __poll_t,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v1 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub master_key_descriptor: [__u8; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_key {
-pub mode: __u32,
-pub raw: [__u8; 64usize],
-pub size: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v2 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub __reserved: [__u8; 4usize],
-pub master_key_identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_policy_ex_arg {
-pub policy_size: __u64,
-pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 {
-pub version: __u8,
-pub v1: fscrypt_policy_v1,
-pub v2: fscrypt_policy_v2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_key_specifier {
-pub type_: __u32,
-pub __reserved: __u32,
-pub u: fscrypt_key_specifier__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_key_specifier__bindgen_ty_1 {
-pub __reserved: [__u8; 32usize],
-pub descriptor: [__u8; 8usize],
-pub identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct fscrypt_provisioning_key_payload {
-pub type_: __u32,
-pub __reserved: __u32,
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-pub struct fscrypt_add_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub raw_size: __u32,
-pub key_id: __u32,
-pub __reserved: [__u32; 8usize],
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_remove_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub removal_status_flags: __u32,
-pub __reserved: [__u32; 5usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_key_status_arg {
-pub key_spec: fscrypt_key_specifier,
-pub __reserved: [__u32; 6usize],
-pub status: __u32,
-pub status_flags: __u32,
-pub user_count: __u32,
-pub __out_reserved: [__u32; 13usize],
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum fsconfig_command {
-FSCONFIG_SET_FLAG = 0,
-FSCONFIG_SET_STRING = 1,
-FSCONFIG_SET_BINARY = 2,
-FSCONFIG_SET_PATH = 3,
-FSCONFIG_SET_PATH_EMPTY = 4,
-FSCONFIG_SET_FD = 5,
-FSCONFIG_CMD_CREATE = 6,
-FSCONFIG_CMD_RECONFIGURE = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mount_attr {
-pub attr_set: __u64,
-pub attr_clr: __u64,
-pub propagation: __u64,
-pub userns_fd: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_clone_range {
-pub src_fd: __s64,
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_offset: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fstrim_range {
-pub start: __u64,
-pub len: __u64,
-pub minlen: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_dedupe_range_info {
-pub dest_fd: __s64,
-pub dest_offset: __u64,
-pub bytes_deduped: __u64,
-pub status: __s32,
-pub reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct file_dedupe_range {
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_count: __u16,
-pub reserved1: __u16,
-pub reserved2: __u32,
-pub info: __IncompleteArrayField<file_dedupe_range_info>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct files_stat_struct {
-pub nr_files: crate::ctypes::c_ulong,
-pub nr_free_files: crate::ctypes::c_ulong,
-pub max_files: crate::ctypes::c_ulong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct inodes_stat_t {
-pub nr_inodes: crate::ctypes::c_long,
-pub nr_unused: crate::ctypes::c_long,
-pub dummy: [crate::ctypes::c_long; 5usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fsxattr {
-pub fsx_xflags: __u32,
-pub fsx_extsize: __u32,
-pub fsx_nextents: __u32,
-pub fsx_projid: __u32,
-pub fsx_cowextsize: __u32,
-pub fsx_pad: [crate::ctypes::c_uchar; 8usize],
-}
-pub type __kernel_rwf_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct futex_waitv {
-pub val: __u64,
-pub uaddr: __u64,
-pub flags: __u32,
-pub __reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list {
-pub next: *mut robust_list,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list_head {
-pub list: robust_list,
-pub futex_offset: crate::ctypes::c_long,
-pub list_op_pending: *mut robust_list,
-}
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP;
-pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP;
-pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP;
-pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP;
-pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP;
-pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP;
-pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP;
-pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP;
-pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP;
-pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP;
-pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP;
-pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6;
-pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP;
-pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE;
-pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP;
-pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH;
-pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP;
-pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH;
-pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP;
-pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM;
-pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP;
-pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP;
-pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP;
-pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE;
-pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS;
-pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET;
-pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW;
-pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP;
-pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-IPPROTO_IP = 0,
-IPPROTO_ICMP = 1,
-IPPROTO_IGMP = 2,
-IPPROTO_IPIP = 4,
-IPPROTO_TCP = 6,
-IPPROTO_EGP = 8,
-IPPROTO_PUP = 12,
-IPPROTO_UDP = 17,
-IPPROTO_IDP = 22,
-IPPROTO_TP = 29,
-IPPROTO_DCCP = 33,
-IPPROTO_IPV6 = 41,
-IPPROTO_RSVP = 46,
-IPPROTO_GRE = 47,
-IPPROTO_ESP = 50,
-IPPROTO_AH = 51,
-IPPROTO_MTP = 92,
-IPPROTO_BEETPH = 94,
-IPPROTO_ENCAP = 98,
-IPPROTO_PIM = 103,
-IPPROTO_COMP = 108,
-IPPROTO_L2TP = 115,
-IPPROTO_SCTP = 132,
-IPPROTO_UDPLITE = 136,
-IPPROTO_MPLS = 137,
-IPPROTO_ETHERNET = 143,
-IPPROTO_RAW = 255,
-IPPROTO_MPTCP = 262,
-IPPROTO_MAX = 263,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_addr {
-pub s_addr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq {
-pub imr_multiaddr: in_addr,
-pub imr_interface: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreqn {
-pub imr_multiaddr: in_addr,
-pub imr_address: in_addr,
-pub imr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq_source {
-pub imr_multiaddr: __be32,
-pub imr_interface: __be32,
-pub imr_sourceaddr: __be32,
-}
-#[repr(C)]
-pub struct ip_msfilter {
-pub imsf_multiaddr: __be32,
-pub imsf_interface: __be32,
-pub imsf_fmode: __u32,
-pub imsf_numsrc: __u32,
-pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct ip_msfilter__bindgen_ty_1 {
-pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>,
-pub __bindgen_anon_1: __BindgenUnionField<ip_msfilter__bindgen_ty_1__bindgen_ty_1>,
-pub bindgen_union_field: u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 {
-pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-pub imsf_slist_flex: __IncompleteArrayField<__be32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_req {
-pub gr_interface: __u32,
-pub gr_group: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_source_req {
-pub gsr_interface: __u32,
-pub gsr_group: __kernel_sockaddr_storage,
-pub gsr_source: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-pub struct group_filter {
-pub __bindgen_anon_1: group_filter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_1>,
-pub __bindgen_anon_2: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_2>,
-pub bindgen_union_field: [u32; 67usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_1 {
-pub gf_interface_aux: __u32,
-pub gf_group_aux: __kernel_sockaddr_storage,
-pub gf_fmode_aux: __u32,
-pub gf_numsrc_aux: __u32,
-pub gf_slist: [__kernel_sockaddr_storage; 1usize],
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_2 {
-pub gf_interface: __u32,
-pub gf_group: __kernel_sockaddr_storage,
-pub gf_fmode: __u32,
-pub gf_numsrc: __u32,
-pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_pktinfo {
-pub ipi_ifindex: crate::ctypes::c_int,
-pub ipi_spec_dst: in_addr,
-pub ipi_addr: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_in {
-pub sin_family: __kernel_sa_family_t,
-pub sin_port: __be16,
-pub sin_addr: in_addr,
-pub __pad: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct inotify_event {
-pub wd: __s32,
-pub mask: __u32,
-pub cookie: __u32,
-pub len: __u32,
-pub name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct iphdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub tos: __u8,
-pub tot_len: __be16,
-pub id: __be16,
-pub frag_off: __be16,
-pub ttl: __u8,
-pub protocol: __u8,
-pub check: __sum16,
-pub __bindgen_anon_1: iphdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union iphdr__bindgen_ty_1 {
-pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-impl iphdr {
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn ihl(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_ihl(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(version: __u8, ihl: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let ihl: u8 = unsafe { ::core::mem::transmute(ihl) };
-ihl as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_auth_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub reserved: __be16,
-pub spi: __be32,
-pub seq_no: __be32,
-pub auth_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_esp_hdr {
-pub spi: __be32,
-pub seq_no: __be32,
-pub enc_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_comp_hdr {
-pub nexthdr: __u8,
-pub flags: __u8,
-pub cpi: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_beet_phdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub padlen: __u8,
-pub reserved: __u8,
-}
-pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING;
-pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING;
-pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP;
-pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS;
-pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS;
-pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS;
-pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA;
-pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER;
-pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY;
-pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS;
-pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG;
-pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER;
-pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID;
-pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM;
-pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY;
-pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION;
-pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE;
-pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE;
-pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES;
-pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT;
-pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY;
-pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL;
-pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK;
-pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN;
-pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET;
-pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP;
-pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING;
-pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER;
-pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IPV4_DEVCONF_FORWARDING = 1,
-IPV4_DEVCONF_MC_FORWARDING = 2,
-IPV4_DEVCONF_PROXY_ARP = 3,
-IPV4_DEVCONF_ACCEPT_REDIRECTS = 4,
-IPV4_DEVCONF_SECURE_REDIRECTS = 5,
-IPV4_DEVCONF_SEND_REDIRECTS = 6,
-IPV4_DEVCONF_SHARED_MEDIA = 7,
-IPV4_DEVCONF_RP_FILTER = 8,
-IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9,
-IPV4_DEVCONF_BOOTP_RELAY = 10,
-IPV4_DEVCONF_LOG_MARTIANS = 11,
-IPV4_DEVCONF_TAG = 12,
-IPV4_DEVCONF_ARPFILTER = 13,
-IPV4_DEVCONF_MEDIUM_ID = 14,
-IPV4_DEVCONF_NOXFRM = 15,
-IPV4_DEVCONF_NOPOLICY = 16,
-IPV4_DEVCONF_FORCE_IGMP_VERSION = 17,
-IPV4_DEVCONF_ARP_ANNOUNCE = 18,
-IPV4_DEVCONF_ARP_IGNORE = 19,
-IPV4_DEVCONF_PROMOTE_SECONDARIES = 20,
-IPV4_DEVCONF_ARP_ACCEPT = 21,
-IPV4_DEVCONF_ARP_NOTIFY = 22,
-IPV4_DEVCONF_ACCEPT_LOCAL = 23,
-IPV4_DEVCONF_SRC_VMARK = 24,
-IPV4_DEVCONF_PROXY_ARP_PVLAN = 25,
-IPV4_DEVCONF_ROUTE_LOCALNET = 26,
-IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27,
-IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28,
-IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29,
-IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30,
-IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31,
-IPV4_DEVCONF_BC_FORWARDING = 32,
-IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33,
-__IPV4_DEVCONF_MAX = 34,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_addr {
-pub in6_u: in6_addr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union in6_addr__bindgen_ty_1 {
-pub u6_addr8: [__u8; 16usize],
-pub u6_addr16: [__be16; 8usize],
-pub u6_addr32: [__be32; 4usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr_in6 {
-pub sin6_family: crate::ctypes::c_ushort,
-pub sin6_port: __be16,
-pub sin6_flowinfo: __be32,
-pub sin6_addr: in6_addr,
-pub sin6_scope_id: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6_mreq {
-pub ipv6mr_multiaddr: in6_addr,
-pub ipv6mr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_flowlabel_req {
-pub flr_dst: in6_addr,
-pub flr_label: __be32,
-pub flr_action: __u8,
-pub flr_share: __u8,
-pub flr_flags: __u16,
-pub flr_expires: __u16,
-pub flr_linger: __u16,
-pub __flr_pad: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_pktinfo {
-pub ipi6_addr: in6_addr,
-pub ipi6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ip6_mtuinfo {
-pub ip6m_addr: sockaddr_in6,
-pub ip6m_mtu: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_ifreq {
-pub ifr6_addr: in6_addr,
-pub ifr6_prefixlen: __u32,
-pub ifr6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_rt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub type_: __u8,
-pub segments_left: __u8,
-}
-#[repr(C, packed)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_opt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-}
-#[repr(C)]
-pub struct rt0_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: __IncompleteArrayField<in6_addr>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rt2_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: in6_addr,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct ipv6_destopt_hao {
-pub type_: __u8,
-pub length: __u8,
-pub addr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub flow_lbl: [__u8; 3usize],
-pub payload_len: __be16,
-pub nexthdr: __u8,
-pub hop_limit: __u8,
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union ipv6hdr__bindgen_ty_1 {
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-impl ipv6hdr {
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn priority(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_priority(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(version: __u8, priority: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let priority: u8 = unsafe { ::core::mem::transmute(priority) };
-priority as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING;
-pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT;
-pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6;
-pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA;
-pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS;
-pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF;
-pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS;
-pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS;
-pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL;
-pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY;
-pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR;
-pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT;
-pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT;
-pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY;
-pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR;
-pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES;
-pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION;
-pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR;
-pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO;
-pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF;
-pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN;
-pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP;
-pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD;
-pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING;
-pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6;
-pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD;
-pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO;
-pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY;
-pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC;
-pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL;
-pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC;
-pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU;
-pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET;
-pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY;
-pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT;
-pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA;
-pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN;
-pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL;
-pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED;
-pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC;
-pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD;
-pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE;
-pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN;
-pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS;
-pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED;
-pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC;
-pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED;
-pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID;
-pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE;
-pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER;
-pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA;
-pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-DEVCONF_FORWARDING = 0,
-DEVCONF_HOPLIMIT = 1,
-DEVCONF_MTU6 = 2,
-DEVCONF_ACCEPT_RA = 3,
-DEVCONF_ACCEPT_REDIRECTS = 4,
-DEVCONF_AUTOCONF = 5,
-DEVCONF_DAD_TRANSMITS = 6,
-DEVCONF_RTR_SOLICITS = 7,
-DEVCONF_RTR_SOLICIT_INTERVAL = 8,
-DEVCONF_RTR_SOLICIT_DELAY = 9,
-DEVCONF_USE_TEMPADDR = 10,
-DEVCONF_TEMP_VALID_LFT = 11,
-DEVCONF_TEMP_PREFERED_LFT = 12,
-DEVCONF_REGEN_MAX_RETRY = 13,
-DEVCONF_MAX_DESYNC_FACTOR = 14,
-DEVCONF_MAX_ADDRESSES = 15,
-DEVCONF_FORCE_MLD_VERSION = 16,
-DEVCONF_ACCEPT_RA_DEFRTR = 17,
-DEVCONF_ACCEPT_RA_PINFO = 18,
-DEVCONF_ACCEPT_RA_RTR_PREF = 19,
-DEVCONF_RTR_PROBE_INTERVAL = 20,
-DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21,
-DEVCONF_PROXY_NDP = 22,
-DEVCONF_OPTIMISTIC_DAD = 23,
-DEVCONF_ACCEPT_SOURCE_ROUTE = 24,
-DEVCONF_MC_FORWARDING = 25,
-DEVCONF_DISABLE_IPV6 = 26,
-DEVCONF_ACCEPT_DAD = 27,
-DEVCONF_FORCE_TLLAO = 28,
-DEVCONF_NDISC_NOTIFY = 29,
-DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30,
-DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31,
-DEVCONF_SUPPRESS_FRAG_NDISC = 32,
-DEVCONF_ACCEPT_RA_FROM_LOCAL = 33,
-DEVCONF_USE_OPTIMISTIC = 34,
-DEVCONF_ACCEPT_RA_MTU = 35,
-DEVCONF_STABLE_SECRET = 36,
-DEVCONF_USE_OIF_ADDRS_ONLY = 37,
-DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38,
-DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39,
-DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40,
-DEVCONF_DROP_UNSOLICITED_NA = 41,
-DEVCONF_KEEP_ADDR_ON_DOWN = 42,
-DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43,
-DEVCONF_SEG6_ENABLED = 44,
-DEVCONF_SEG6_REQUIRE_HMAC = 45,
-DEVCONF_ENHANCED_DAD = 46,
-DEVCONF_ADDR_GEN_MODE = 47,
-DEVCONF_DISABLE_POLICY = 48,
-DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49,
-DEVCONF_NDISC_TCLASS = 50,
-DEVCONF_RPL_SEG_ENABLED = 51,
-DEVCONF_RA_DEFRTR_METRIC = 52,
-DEVCONF_IOAM6_ENABLED = 53,
-DEVCONF_IOAM6_ID = 54,
-DEVCONF_IOAM6_ID_WIDE = 55,
-DEVCONF_NDISC_EVICT_NOCARRIER = 56,
-DEVCONF_ACCEPT_UNTRACKED_NA = 57,
-DEVCONF_MAX = 58,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum socket_state {
-SS_FREE = 0,
-SS_UNCONNECTED = 1,
-SS_CONNECTING = 2,
-SS_CONNECTED = 3,
-SS_DISCONNECTING = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct pollfd {
-pub fd: crate::ctypes::c_int,
-pub events: crate::ctypes::c_short,
-pub revents: crate::ctypes::c_short,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prctl_mm_map {
-pub start_code: __u64,
-pub end_code: __u64,
-pub start_data: __u64,
-pub end_data: __u64,
-pub start_brk: __u64,
-pub brk: __u64,
-pub start_stack: __u64,
-pub arg_start: __u64,
-pub arg_end: __u64,
-pub env_start: __u64,
-pub env_end: __u64,
-pub auxv: *mut __u64,
-pub auxv_size: __u32,
-pub exe_fd: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rand_pool_info {
-pub entropy_count: crate::ctypes::c_int,
-pub buf_size: crate::ctypes::c_int,
-pub buf: __IncompleteArrayField<__u32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_timespec {
-pub tv_sec: __kernel_time64_t,
-pub tv_nsec: crate::ctypes::c_longlong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_itimerspec {
-pub it_interval: __kernel_timespec,
-pub it_value: __kernel_timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timeval {
-pub tv_sec: __kernel_long_t,
-pub tv_usec: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_itimerval {
-pub it_interval: __kernel_old_timeval,
-pub it_value: __kernel_old_timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sock_timeval {
-pub tv_sec: __s64,
-pub tv_usec: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timeval {
-pub tv_sec: __kernel_old_time_t,
-pub tv_usec: __kernel_suseconds_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerspec {
-pub it_interval: timespec,
-pub it_value: timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerval {
-pub it_interval: timeval,
-pub it_value: timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timezone {
-pub tz_minuteswest: crate::ctypes::c_int,
-pub tz_dsttime: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rusage {
-pub ru_utime: __kernel_old_timeval,
-pub ru_stime: __kernel_old_timeval,
-pub ru_maxrss: __kernel_long_t,
-pub ru_ixrss: __kernel_long_t,
-pub ru_idrss: __kernel_long_t,
-pub ru_isrss: __kernel_long_t,
-pub ru_minflt: __kernel_long_t,
-pub ru_majflt: __kernel_long_t,
-pub ru_nswap: __kernel_long_t,
-pub ru_inblock: __kernel_long_t,
-pub ru_oublock: __kernel_long_t,
-pub ru_msgsnd: __kernel_long_t,
-pub ru_msgrcv: __kernel_long_t,
-pub ru_nsignals: __kernel_long_t,
-pub ru_nvcsw: __kernel_long_t,
-pub ru_nivcsw: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit {
-pub rlim_cur: __kernel_ulong_t,
-pub rlim_max: __kernel_ulong_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit64 {
-pub rlim_cur: __u64,
-pub rlim_max: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct clone_args {
-pub flags: __u64,
-pub pidfd: __u64,
-pub child_tid: __u64,
-pub parent_tid: __u64,
-pub exit_signal: __u64,
-pub stack: __u64,
-pub stack_size: __u64,
-pub tls: __u64,
-pub set_tid: __u64,
-pub set_tid_size: __u64,
-pub cgroup: __u64,
-}
-pub type old_sigset_t = crate::ctypes::c_ulong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigset_t {
-pub sig: [crate::ctypes::c_ulong; 2usize],
-}
-pub type __signalfn_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __sighandler_t = __signalfn_t;
-pub type __restorefn_t = ::core::option::Option<unsafe extern "C" fn()>;
-pub type __sigrestore_t = __restorefn_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct old_sigaction {
-pub sa_handler: __sighandler_t,
-pub sa_mask: old_sigset_t,
-pub sa_flags: crate::ctypes::c_ulong,
-pub sa_restorer: __sigrestore_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaction {
-pub sa_handler: __sighandler_t,
-pub sa_flags: crate::ctypes::c_ulong,
-pub sa_restorer: __sigrestore_t,
-pub sa_mask: sigset_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaltstack {
-pub ss_sp: *mut crate::ctypes::c_void,
-pub ss_flags: crate::ctypes::c_int,
-pub ss_size: __kernel_size_t,
-}
-pub type stack_t = sigaltstack;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sig_dbg_op {
-pub dbg_type: crate::ctypes::c_int,
-pub dbg_value: crate::ctypes::c_ulong,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigval {
-pub sival_int: crate::ctypes::c_int,
-pub sival_ptr: *mut crate::ctypes::c_void,
-}
-pub type sigval_t = sigval;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields {
-pub _kill: __sifields__bindgen_ty_1,
-pub _timer: __sifields__bindgen_ty_2,
-pub _rt: __sifields__bindgen_ty_3,
-pub _sigchld: __sifields__bindgen_ty_4,
-pub _sigfault: __sifields__bindgen_ty_5,
-pub _sigpoll: __sifields__bindgen_ty_6,
-pub _sigsys: __sifields__bindgen_ty_7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_1 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_2 {
-pub _tid: __kernel_timer_t,
-pub _overrun: crate::ctypes::c_int,
-pub _sigval: sigval_t,
-pub _sys_private: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_3 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _sigval: sigval_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_4 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _status: crate::ctypes::c_int,
-pub _utime: __kernel_clock_t,
-pub _stime: __kernel_clock_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_5 {
-pub _addr: *mut crate::ctypes::c_void,
-pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields__bindgen_ty_5__bindgen_ty_1 {
-pub _trapno: crate::ctypes::c_int,
-pub _addr_lsb: crate::ctypes::c_short,
-pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1,
-pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2,
-pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {
-pub _dummy_bnd: [crate::ctypes::c_char; 4usize],
-pub _lower: *mut crate::ctypes::c_void,
-pub _upper: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 {
-pub _dummy_pkey: [crate::ctypes::c_char; 4usize],
-pub _pkey: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 {
-pub _data: crate::ctypes::c_ulong,
-pub _type: __u32,
-pub _flags: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_6 {
-pub _band: crate::ctypes::c_long,
-pub _fd: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_7 {
-pub _call_addr: *mut crate::ctypes::c_void,
-pub _syscall: crate::ctypes::c_int,
-pub _arch: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union siginfo__bindgen_ty_1 {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1,
-pub _si_pad: [crate::ctypes::c_int; 32usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo__bindgen_ty_1__bindgen_ty_1 {
-pub si_signo: crate::ctypes::c_int,
-pub si_errno: crate::ctypes::c_int,
-pub si_code: crate::ctypes::c_int,
-pub _sifields: __sifields,
-}
-pub type siginfo_t = siginfo;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sigevent {
-pub sigev_value: sigval_t,
-pub sigev_signo: crate::ctypes::c_int,
-pub sigev_notify: crate::ctypes::c_int,
-pub _sigev_un: sigevent__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigevent__bindgen_ty_1 {
-pub _pad: [crate::ctypes::c_int; 13usize],
-pub _tid: crate::ctypes::c_int,
-pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigevent__bindgen_ty_1__bindgen_ty_1 {
-pub _function: ::core::option::Option<unsafe extern "C" fn(arg1: sigval_t)>,
-pub _attribute: *mut crate::ctypes::c_void,
-}
-pub type sigevent_t = sigevent;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx_timestamp {
-pub tv_sec: __s64,
-pub tv_nsec: __u32,
-pub __reserved: __s32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx {
-pub stx_mask: __u32,
-pub stx_blksize: __u32,
-pub stx_attributes: __u64,
-pub stx_nlink: __u32,
-pub stx_uid: __u32,
-pub stx_gid: __u32,
-pub stx_mode: __u16,
-pub __spare0: [__u16; 1usize],
-pub stx_ino: __u64,
-pub stx_size: __u64,
-pub stx_blocks: __u64,
-pub stx_attributes_mask: __u64,
-pub stx_atime: statx_timestamp,
-pub stx_btime: statx_timestamp,
-pub stx_ctime: statx_timestamp,
-pub stx_mtime: statx_timestamp,
-pub stx_rdev_major: __u32,
-pub stx_rdev_minor: __u32,
-pub stx_dev_major: __u32,
-pub stx_dev_minor: __u32,
-pub stx_mnt_id: __u64,
-pub stx_dio_mem_align: __u32,
-pub stx_dio_offset_align: __u32,
-pub __spare3: [__u64; 12usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sysinfo {
-pub uptime: __kernel_long_t,
-pub loads: [__kernel_ulong_t; 3usize],
-pub totalram: __kernel_ulong_t,
-pub freeram: __kernel_ulong_t,
-pub sharedram: __kernel_ulong_t,
-pub bufferram: __kernel_ulong_t,
-pub totalswap: __kernel_ulong_t,
-pub freeswap: __kernel_ulong_t,
-pub procs: __u16,
-pub pad: __u16,
-pub totalhigh: __kernel_ulong_t,
-pub freehigh: __kernel_ulong_t,
-pub mem_unit: __u32,
-pub _f: [crate::ctypes::c_char; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcphdr {
-pub source: __be16,
-pub dest: __be16,
-pub seq: __be32,
-pub ack_seq: __be32,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub window: __be16,
-pub check: __sum16,
-pub urg_ptr: __be16,
-}
-impl tcphdr {
-#[inline]
-pub fn doff(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_doff(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn res1(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_res1(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn cwr(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_cwr(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ece(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ece(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn urg(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_urg(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(10usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ack(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ack(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(11usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn psh(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_psh(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(12usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn rst(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_rst(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(13usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn syn(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_syn(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(14usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn fin(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_fin(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(15usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(doff: __u16, res1: __u16, cwr: __u16, ece: __u16, urg: __u16, ack: __u16, psh: __u16, rst: __u16, syn: __u16, fin: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let doff: u16 = unsafe { ::core::mem::transmute(doff) };
-doff as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let res1: u16 = unsafe { ::core::mem::transmute(res1) };
-res1 as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let cwr: u16 = unsafe { ::core::mem::transmute(cwr) };
-cwr as u64
-});
-__bindgen_bitfield_unit.set(9usize, 1u8, {
-let ece: u16 = unsafe { ::core::mem::transmute(ece) };
-ece as u64
-});
-__bindgen_bitfield_unit.set(10usize, 1u8, {
-let urg: u16 = unsafe { ::core::mem::transmute(urg) };
-urg as u64
-});
-__bindgen_bitfield_unit.set(11usize, 1u8, {
-let ack: u16 = unsafe { ::core::mem::transmute(ack) };
-ack as u64
-});
-__bindgen_bitfield_unit.set(12usize, 1u8, {
-let psh: u16 = unsafe { ::core::mem::transmute(psh) };
-psh as u64
-});
-__bindgen_bitfield_unit.set(13usize, 1u8, {
-let rst: u16 = unsafe { ::core::mem::transmute(rst) };
-rst as u64
-});
-__bindgen_bitfield_unit.set(14usize, 1u8, {
-let syn: u16 = unsafe { ::core::mem::transmute(syn) };
-syn as u64
-});
-__bindgen_bitfield_unit.set(15usize, 1u8, {
-let fin: u16 = unsafe { ::core::mem::transmute(fin) };
-fin as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union tcp_word_hdr {
-pub hdr: tcphdr,
-pub words: [__be32; 5usize],
-}
-pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR;
-pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE;
-pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG;
-pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK;
-pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH;
-pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST;
-pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN;
-pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN;
-pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS;
-pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-TCP_FLAG_CWR = 8388608,
-TCP_FLAG_ECE = 4194304,
-TCP_FLAG_URG = 2097152,
-TCP_FLAG_ACK = 1048576,
-TCP_FLAG_PSH = 524288,
-TCP_FLAG_RST = 262144,
-TCP_FLAG_SYN = 131072,
-TCP_FLAG_FIN = 65536,
-TCP_RESERVED_BITS = 251658240,
-TCP_DATA_OFFSET = 4026531840,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_opt {
-pub opt_code: __u32,
-pub opt_val: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_window {
-pub snd_wl1: __u32,
-pub snd_wnd: __u32,
-pub max_window: __u32,
-pub rcv_wnd: __u32,
-pub rcv_wup: __u32,
-}
-pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE;
-pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE;
-pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE;
-pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-TCP_NO_QUEUE = 0,
-TCP_RECV_QUEUE = 1,
-TCP_SEND_QUEUE = 2,
-TCP_QUEUES_NR = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_fastopen_client_fail {
-TFO_STATUS_UNSPEC = 0,
-TFO_COOKIE_UNAVAILABLE = 1,
-TFO_DATA_NOT_ACKED = 2,
-TFO_SYN_RETRANSMITTED = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_ca_state {
-TCP_CA_Open = 0,
-TCP_CA_Disorder = 1,
-TCP_CA_CWR = 2,
-TCP_CA_Recovery = 3,
-TCP_CA_Loss = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_info {
-pub tcpi_state: __u8,
-pub tcpi_ca_state: __u8,
-pub tcpi_retransmits: __u8,
-pub tcpi_probes: __u8,
-pub tcpi_backoff: __u8,
-pub tcpi_options: __u8,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub tcpi_rto: __u32,
-pub tcpi_ato: __u32,
-pub tcpi_snd_mss: __u32,
-pub tcpi_rcv_mss: __u32,
-pub tcpi_unacked: __u32,
-pub tcpi_sacked: __u32,
-pub tcpi_lost: __u32,
-pub tcpi_retrans: __u32,
-pub tcpi_fackets: __u32,
-pub tcpi_last_data_sent: __u32,
-pub tcpi_last_ack_sent: __u32,
-pub tcpi_last_data_recv: __u32,
-pub tcpi_last_ack_recv: __u32,
-pub tcpi_pmtu: __u32,
-pub tcpi_rcv_ssthresh: __u32,
-pub tcpi_rtt: __u32,
-pub tcpi_rttvar: __u32,
-pub tcpi_snd_ssthresh: __u32,
-pub tcpi_snd_cwnd: __u32,
-pub tcpi_advmss: __u32,
-pub tcpi_reordering: __u32,
-pub tcpi_rcv_rtt: __u32,
-pub tcpi_rcv_space: __u32,
-pub tcpi_total_retrans: __u32,
-pub tcpi_pacing_rate: __u64,
-pub tcpi_max_pacing_rate: __u64,
-pub tcpi_bytes_acked: __u64,
-pub tcpi_bytes_received: __u64,
-pub tcpi_segs_out: __u32,
-pub tcpi_segs_in: __u32,
-pub tcpi_notsent_bytes: __u32,
-pub tcpi_min_rtt: __u32,
-pub tcpi_data_segs_in: __u32,
-pub tcpi_data_segs_out: __u32,
-pub tcpi_delivery_rate: __u64,
-pub tcpi_busy_time: __u64,
-pub tcpi_rwnd_limited: __u64,
-pub tcpi_sndbuf_limited: __u64,
-pub tcpi_delivered: __u32,
-pub tcpi_delivered_ce: __u32,
-pub tcpi_bytes_sent: __u64,
-pub tcpi_bytes_retrans: __u64,
-pub tcpi_dsack_dups: __u32,
-pub tcpi_reord_seen: __u32,
-pub tcpi_rcv_ooopack: __u32,
-pub tcpi_snd_wnd: __u32,
-pub tcpi_rcv_wnd: __u32,
-pub tcpi_rehash: __u32,
-}
-impl tcp_info {
-#[inline]
-pub fn tcpi_snd_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_snd_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_rcv_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_fastopen_client_fail(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) };
-tcpi_snd_wscale as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) };
-tcpi_rcv_wscale as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) };
-tcpi_delivery_rate_app_limited as u64
-});
-__bindgen_bitfield_unit.set(9usize, 2u8, {
-let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) };
-tcpi_fastopen_client_fail as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD;
-pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY;
-pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED;
-pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED;
-pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT;
-pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS;
-pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE;
-pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE;
-pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND;
-pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING;
-pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT;
-pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS;
-pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT;
-pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE;
-pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE;
-pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH;
-pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED;
-pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE;
-pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT;
-pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS;
-pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS;
-pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN;
-pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT;
-pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH;
-pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT;
-pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
-pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
-pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-TCP_NLA_PAD = 0,
-TCP_NLA_BUSY = 1,
-TCP_NLA_RWND_LIMITED = 2,
-TCP_NLA_SNDBUF_LIMITED = 3,
-TCP_NLA_DATA_SEGS_OUT = 4,
-TCP_NLA_TOTAL_RETRANS = 5,
-TCP_NLA_PACING_RATE = 6,
-TCP_NLA_DELIVERY_RATE = 7,
-TCP_NLA_SND_CWND = 8,
-TCP_NLA_REORDERING = 9,
-TCP_NLA_MIN_RTT = 10,
-TCP_NLA_RECUR_RETRANS = 11,
-TCP_NLA_DELIVERY_RATE_APP_LMT = 12,
-TCP_NLA_SNDQ_SIZE = 13,
-TCP_NLA_CA_STATE = 14,
-TCP_NLA_SND_SSTHRESH = 15,
-TCP_NLA_DELIVERED = 16,
-TCP_NLA_DELIVERED_CE = 17,
-TCP_NLA_BYTES_SENT = 18,
-TCP_NLA_BYTES_RETRANS = 19,
-TCP_NLA_DSACK_DUPS = 20,
-TCP_NLA_REORD_SEEN = 21,
-TCP_NLA_SRTT = 22,
-TCP_NLA_TIMEOUT_REHASH = 23,
-TCP_NLA_BYTES_NOTSENT = 24,
-TCP_NLA_EDT = 25,
-TCP_NLA_TTL = 26,
-TCP_NLA_REHASH = 27,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct tcp_md5sig {
-pub tcpm_addr: __kernel_sockaddr_storage,
-pub tcpm_flags: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_ifindex: crate::ctypes::c_int,
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_diag_md5sig {
-pub tcpm_family: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_addr: [__be32; 4usize],
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_zerocopy_receive {
-pub address: __u64,
-pub length: __u32,
-pub recv_skip_hint: __u32,
-pub inq: __u32,
-pub err: __s32,
-pub copybuf_address: __u64,
-pub copybuf_len: __s32,
-pub flags: __u32,
-pub msg_control: __u64,
-pub msg_controllen: __u64,
-pub msg_flags: __u32,
-pub reserved: __u32,
-}
-pub type cc_t = crate::ctypes::c_uchar;
-pub type speed_t = crate::ctypes::c_uint;
-pub type tcflag_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_cc: [cc_t; 19usize],
-pub c_line: cc_t,
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ktermios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_cc: [cc_t; 19usize],
-pub c_line: cc_t,
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sgttyb {
-pub sg_ispeed: crate::ctypes::c_char,
-pub sg_ospeed: crate::ctypes::c_char,
-pub sg_erase: crate::ctypes::c_char,
-pub sg_kill: crate::ctypes::c_char,
-pub sg_flags: crate::ctypes::c_short,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tchars {
-pub t_intrc: crate::ctypes::c_char,
-pub t_quitc: crate::ctypes::c_char,
-pub t_startc: crate::ctypes::c_char,
-pub t_stopc: crate::ctypes::c_char,
-pub t_eofc: crate::ctypes::c_char,
-pub t_brkc: crate::ctypes::c_char,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ltchars {
-pub t_suspc: crate::ctypes::c_char,
-pub t_dsuspc: crate::ctypes::c_char,
-pub t_rprntc: crate::ctypes::c_char,
-pub t_flushc: crate::ctypes::c_char,
-pub t_werasc: crate::ctypes::c_char,
-pub t_lnextc: crate::ctypes::c_char,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct winsize {
-pub ws_row: crate::ctypes::c_ushort,
-pub ws_col: crate::ctypes::c_ushort,
-pub ws_xpixel: crate::ctypes::c_ushort,
-pub ws_ypixel: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termio {
-pub c_iflag: crate::ctypes::c_ushort,
-pub c_oflag: crate::ctypes::c_ushort,
-pub c_cflag: crate::ctypes::c_ushort,
-pub c_lflag: crate::ctypes::c_ushort,
-pub c_line: crate::ctypes::c_uchar,
-pub c_cc: [crate::ctypes::c_uchar; 10usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iovec {
-pub iov_base: *mut crate::ctypes::c_void,
-pub iov_len: __kernel_size_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_un {
-pub sun_family: __kernel_sa_family_t,
-pub sun_path: [crate::ctypes::c_char; 108usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct oldold_utsname {
-pub sysname: [crate::ctypes::c_char; 9usize],
-pub nodename: [crate::ctypes::c_char; 9usize],
-pub release: [crate::ctypes::c_char; 9usize],
-pub version: [crate::ctypes::c_char; 9usize],
-pub machine: [crate::ctypes::c_char; 9usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct old_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct new_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-pub domainname: [crate::ctypes::c_char; 65usize],
-}
-impl membarrier_cmd {
-pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd {
-MEMBARRIER_CMD_QUERY = 0,
-MEMBARRIER_CMD_GLOBAL = 1,
-MEMBARRIER_CMD_GLOBAL_EXPEDITED = 2,
-MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = 4,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED = 8,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = 16,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = 32,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = 64,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = 128,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = 256,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd_flag {
-MEMBARRIER_CMD_FLAG_CPU = 1,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg {
-pub event: __u8,
-pub reserved1: __u8,
-pub reserved2: __u16,
-pub reserved3: __u32,
-pub arg: uffd_msg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1 {
-pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1,
-pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2,
-pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3,
-pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4,
-pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 {
-pub flags: __u64,
-pub address: __u64,
-pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {
-pub ptid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 {
-pub ufd: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 {
-pub from: __u64,
-pub to: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 {
-pub start: __u64,
-pub end: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 {
-pub reserved1: __u64,
-pub reserved2: __u64,
-pub reserved3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_api {
-pub api: __u64,
-pub features: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_range {
-pub start: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_register {
-pub range: uffdio_range,
-pub mode: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_copy {
-pub dst: __u64,
-pub src: __u64,
-pub len: __u64,
-pub mode: __u64,
-pub copy: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_zeropage {
-pub range: uffdio_range,
-pub mode: __u64,
-pub zeropage: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_writeprotect {
-pub range: uffdio_range,
-pub mode: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_continue {
-pub range: uffdio_range,
-pub mode: __u64,
-pub mapped: __s64,
-}
-#[repr(C)]
-pub struct io_uring_sqe {
-pub opcode: __u8,
-pub flags: __u8,
-pub ioprio: __u16,
-pub fd: __s32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1,
-pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2,
-pub len: __u32,
-pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3,
-pub user_data: __u64,
-pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4,
-pub personality: __u16,
-pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5,
-pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_1 {
-pub off: __u64,
-pub addr2: __u64,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 {
-pub cmd_op: __u32,
-pub __pad1: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_2 {
-pub addr: __u64,
-pub splice_off_in: __u64,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_3 {
-pub rw_flags: __kernel_rwf_t,
-pub fsync_flags: __u32,
-pub poll_events: __u16,
-pub poll32_events: __u32,
-pub sync_range_flags: __u32,
-pub msg_flags: __u32,
-pub timeout_flags: __u32,
-pub accept_flags: __u32,
-pub cancel_flags: __u32,
-pub open_flags: __u32,
-pub statx_flags: __u32,
-pub fadvise_advice: __u32,
-pub splice_flags: __u32,
-pub rename_flags: __u32,
-pub unlink_flags: __u32,
-pub hardlink_flags: __u32,
-pub xattr_flags: __u32,
-pub msg_ring_flags: __u32,
-pub uring_cmd_flags: __u32,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_4 {
-pub buf_index: __u16,
-pub buf_group: __u16,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_5 {
-pub splice_fd_in: __s32,
-pub file_index: __u32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 {
-pub addr_len: __u16,
-pub __pad3: [__u16; 1usize],
-}
-#[repr(C)]
-pub struct io_uring_sqe__bindgen_ty_6 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_sqe__bindgen_ty_6__bindgen_ty_1>,
-pub cmd: __BindgenUnionField<[__u8; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 {
-pub addr3: __u64,
-pub __pad2: [__u64; 1usize],
-}
-pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT;
-pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT;
-pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT;
-pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT;
-pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT;
-pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT;
-pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-IOSQE_FIXED_FILE_BIT = 0,
-IOSQE_IO_DRAIN_BIT = 1,
-IOSQE_IO_LINK_BIT = 2,
-IOSQE_IO_HARDLINK_BIT = 3,
-IOSQE_ASYNC_BIT = 4,
-IOSQE_BUFFER_SELECT_BIT = 5,
-IOSQE_CQE_SKIP_SUCCESS_BIT = 6,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum io_uring_op {
-IORING_OP_NOP = 0,
-IORING_OP_READV = 1,
-IORING_OP_WRITEV = 2,
-IORING_OP_FSYNC = 3,
-IORING_OP_READ_FIXED = 4,
-IORING_OP_WRITE_FIXED = 5,
-IORING_OP_POLL_ADD = 6,
-IORING_OP_POLL_REMOVE = 7,
-IORING_OP_SYNC_FILE_RANGE = 8,
-IORING_OP_SENDMSG = 9,
-IORING_OP_RECVMSG = 10,
-IORING_OP_TIMEOUT = 11,
-IORING_OP_TIMEOUT_REMOVE = 12,
-IORING_OP_ACCEPT = 13,
-IORING_OP_ASYNC_CANCEL = 14,
-IORING_OP_LINK_TIMEOUT = 15,
-IORING_OP_CONNECT = 16,
-IORING_OP_FALLOCATE = 17,
-IORING_OP_OPENAT = 18,
-IORING_OP_CLOSE = 19,
-IORING_OP_FILES_UPDATE = 20,
-IORING_OP_STATX = 21,
-IORING_OP_READ = 22,
-IORING_OP_WRITE = 23,
-IORING_OP_FADVISE = 24,
-IORING_OP_MADVISE = 25,
-IORING_OP_SEND = 26,
-IORING_OP_RECV = 27,
-IORING_OP_OPENAT2 = 28,
-IORING_OP_EPOLL_CTL = 29,
-IORING_OP_SPLICE = 30,
-IORING_OP_PROVIDE_BUFFERS = 31,
-IORING_OP_REMOVE_BUFFERS = 32,
-IORING_OP_TEE = 33,
-IORING_OP_SHUTDOWN = 34,
-IORING_OP_RENAMEAT = 35,
-IORING_OP_UNLINKAT = 36,
-IORING_OP_MKDIRAT = 37,
-IORING_OP_SYMLINKAT = 38,
-IORING_OP_LINKAT = 39,
-IORING_OP_MSG_RING = 40,
-IORING_OP_FSETXATTR = 41,
-IORING_OP_SETXATTR = 42,
-IORING_OP_FGETXATTR = 43,
-IORING_OP_GETXATTR = 44,
-IORING_OP_SOCKET = 45,
-IORING_OP_URING_CMD = 46,
-IORING_OP_SEND_ZC = 47,
-IORING_OP_SENDMSG_ZC = 48,
-IORING_OP_LAST = 49,
-}
-pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA;
-pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IORING_MSG_DATA = 0,
-IORING_MSG_SEND_FD = 1,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_cqe {
-pub user_data: __u64,
-pub res: __s32,
-pub flags: __u32,
-pub big_cqe: __IncompleteArrayField<__u64>,
-}
-pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IORING_CQE_BUFFER_SHIFT = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_sqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub flags: __u32,
-pub dropped: __u32,
-pub array: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_cqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub overflow: __u32,
-pub cqes: __u32,
-pub flags: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_params {
-pub sq_entries: __u32,
-pub cq_entries: __u32,
-pub flags: __u32,
-pub sq_thread_cpu: __u32,
-pub sq_thread_idle: __u32,
-pub features: __u32,
-pub wq_fd: __u32,
-pub resv: [__u32; 3usize],
-pub sq_off: io_sqring_offsets,
-pub cq_off: io_cqring_offsets,
-}
-pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS;
-pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS;
-pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES;
-pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES;
-pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD;
-pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD;
-pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE;
-pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC;
-pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE;
-pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY;
-pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY;
-pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS;
-pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS;
-pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2;
-pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2;
-pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2;
-pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE;
-pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF;
-pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF;
-pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS;
-pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS;
-pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS;
-pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING;
-pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING;
-pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL;
-pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE;
-pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IORING_REGISTER_BUFFERS = 0,
-IORING_UNREGISTER_BUFFERS = 1,
-IORING_REGISTER_FILES = 2,
-IORING_UNREGISTER_FILES = 3,
-IORING_REGISTER_EVENTFD = 4,
-IORING_UNREGISTER_EVENTFD = 5,
-IORING_REGISTER_FILES_UPDATE = 6,
-IORING_REGISTER_EVENTFD_ASYNC = 7,
-IORING_REGISTER_PROBE = 8,
-IORING_REGISTER_PERSONALITY = 9,
-IORING_UNREGISTER_PERSONALITY = 10,
-IORING_REGISTER_RESTRICTIONS = 11,
-IORING_REGISTER_ENABLE_RINGS = 12,
-IORING_REGISTER_FILES2 = 13,
-IORING_REGISTER_FILES_UPDATE2 = 14,
-IORING_REGISTER_BUFFERS2 = 15,
-IORING_REGISTER_BUFFERS_UPDATE = 16,
-IORING_REGISTER_IOWQ_AFF = 17,
-IORING_UNREGISTER_IOWQ_AFF = 18,
-IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
-IORING_REGISTER_RING_FDS = 20,
-IORING_UNREGISTER_RING_FDS = 21,
-IORING_REGISTER_PBUF_RING = 22,
-IORING_UNREGISTER_PBUF_RING = 23,
-IORING_REGISTER_SYNC_CANCEL = 24,
-IORING_REGISTER_FILE_ALLOC_RANGE = 25,
-IORING_REGISTER_LAST = 26,
-}
-pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND;
-pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IO_WQ_BOUND = 0,
-IO_WQ_UNBOUND = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_files_update {
-pub offset: __u32,
-pub resv: __u32,
-pub fds: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_register {
-pub nr: __u32,
-pub flags: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub tags: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update2 {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-pub tags: __u64,
-pub nr: __u32,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_slot {
-pub tag: __u64,
-pub resv: [__u64; 3usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_register {
-pub nr_slots: __u32,
-pub resv: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub resv3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_probe_op {
-pub op: __u8,
-pub resv: __u8,
-pub flags: __u16,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_probe {
-pub last_op: __u8,
-pub ops_len: __u8,
-pub resv: __u16,
-pub resv2: [__u32; 3usize],
-pub ops: __IncompleteArrayField<io_uring_probe_op>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct io_uring_restriction {
-pub opcode: __u16,
-pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1,
-pub resv: __u8,
-pub resv2: [__u32; 3usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_restriction__bindgen_ty_1 {
-pub register_op: __u8,
-pub sqe_op: __u8,
-pub sqe_flags: __u8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf {
-pub addr: __u64,
-pub len: __u32,
-pub bid: __u16,
-pub resv: __u16,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring {
-pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1>,
-pub bufs: __BindgenUnionField<[io_uring_buf; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 {
-pub resv1: __u64,
-pub resv2: __u32,
-pub resv3: __u16,
-pub tail: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_reg {
-pub ring_addr: __u64,
-pub ring_entries: __u32,
-pub bgid: __u16,
-pub pad: __u16,
-pub resv: [__u64; 3usize],
-}
-pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP;
-pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP;
-pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED;
-pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED;
-pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IORING_RESTRICTION_REGISTER_OP = 0,
-IORING_RESTRICTION_SQE_OP = 1,
-IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2,
-IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3,
-IORING_RESTRICTION_LAST = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_getevents_arg {
-pub sigmask: __u64,
-pub sigmask_sz: __u32,
-pub pad: __u32,
-pub ts: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sync_cancel_reg {
-pub addr: __u64,
-pub fd: __s32,
-pub flags: __u32,
-pub timeout: __kernel_timespec,
-pub pad: [__u64; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_file_index_range {
-pub off: __u32,
-pub len: __u32,
-pub resv: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_recvmsg_out {
-pub namelen: __u32,
-pub controllen: __u32,
-pub payloadlen: __u32,
-pub flags: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr {
-pub __storage: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct linger {
-pub l_onoff: crate::ctypes::c_int,
-pub l_linger: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct linux_dirent64 {
-pub d_ino: crate::ctypes::c_ulonglong,
-pub d_off: crate::ctypes::c_longlong,
-pub d_reclen: __u16,
-pub d_type: __u8,
-pub d_name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-pub type socklen_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __old_kernel_stat {
-pub st_dev: crate::ctypes::c_ushort,
-pub st_ino: crate::ctypes::c_ushort,
-pub st_mode: crate::ctypes::c_ushort,
-pub st_nlink: crate::ctypes::c_ushort,
-pub st_uid: crate::ctypes::c_ushort,
-pub st_gid: crate::ctypes::c_ushort,
-pub st_rdev: crate::ctypes::c_ushort,
-pub st_size: crate::ctypes::c_ulong,
-pub st_atime: crate::ctypes::c_ulong,
-pub st_mtime: crate::ctypes::c_ulong,
-pub st_ctime: crate::ctypes::c_ulong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct stat {
-pub st_dev: crate::ctypes::c_ulong,
-pub st_ino: __kernel_ino_t,
-pub st_mode: __kernel_mode_t,
-pub st_nlink: crate::ctypes::c_ushort,
-pub st_uid: __kernel_uid32_t,
-pub st_gid: __kernel_gid32_t,
-pub st_rdev: crate::ctypes::c_ulong,
-pub st_size: crate::ctypes::c_long,
-pub st_blksize: crate::ctypes::c_ulong,
-pub st_blocks: crate::ctypes::c_ulong,
-pub st_atime: crate::ctypes::c_ulong,
-pub st_atime_nsec: crate::ctypes::c_ulong,
-pub st_mtime: crate::ctypes::c_ulong,
-pub st_mtime_nsec: crate::ctypes::c_ulong,
-pub st_ctime: crate::ctypes::c_ulong,
-pub st_ctime_nsec: crate::ctypes::c_ulong,
-pub __unused4: crate::ctypes::c_ulong,
-pub __unused5: crate::ctypes::c_ulong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct stat64 {
-pub st_dev: crate::ctypes::c_ulonglong,
-pub st_ino: crate::ctypes::c_ulonglong,
-pub st_mode: crate::ctypes::c_uint,
-pub st_nlink: crate::ctypes::c_uint,
-pub st_uid: crate::ctypes::c_uint,
-pub st_gid: crate::ctypes::c_uint,
-pub st_rdev: crate::ctypes::c_ulonglong,
-pub __pad2: crate::ctypes::c_ushort,
-pub st_size: crate::ctypes::c_longlong,
-pub st_blksize: crate::ctypes::c_int,
-pub st_blocks: crate::ctypes::c_longlong,
-pub st_atime: crate::ctypes::c_int,
-pub st_atime_nsec: crate::ctypes::c_uint,
-pub st_mtime: crate::ctypes::c_int,
-pub st_mtime_nsec: crate::ctypes::c_uint,
-pub st_ctime: crate::ctypes::c_int,
-pub st_ctime_nsec: crate::ctypes::c_uint,
-pub __unused4: crate::ctypes::c_uint,
-pub __unused5: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u32,
-pub f_bfree: __u32,
-pub f_bavail: __u32,
-pub f_files: __u32,
-pub f_ffree: __u32,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs64 {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct compat_statfs64 {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-pub type __fsword_t = __u32;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct user_desc {
-pub entry_number: crate::ctypes::c_uint,
-pub base_addr: crate::ctypes::c_uint,
-pub limit: crate::ctypes::c_uint,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub __bindgen_padding_0: [u8; 3usize],
-}
-impl user_desc {
-#[inline]
-pub fn seg_32bit(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_32bit(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn contents(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 2u8) as u32) }
-}
-#[inline]
-pub fn set_contents(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(1usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn read_exec_only(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_read_exec_only(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(3usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn limit_in_pages(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_limit_in_pages(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn seg_not_present(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_not_present(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(5usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn useable(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_useable(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(6usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(seg_32bit: crate::ctypes::c_uint, contents: crate::ctypes::c_uint, read_exec_only: crate::ctypes::c_uint, limit_in_pages: crate::ctypes::c_uint, seg_not_present: crate::ctypes::c_uint, useable: crate::ctypes::c_uint) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 1u8, {
-let seg_32bit: u32 = unsafe { ::core::mem::transmute(seg_32bit) };
-seg_32bit as u64
-});
-__bindgen_bitfield_unit.set(1usize, 2u8, {
-let contents: u32 = unsafe { ::core::mem::transmute(contents) };
-contents as u64
-});
-__bindgen_bitfield_unit.set(3usize, 1u8, {
-let read_exec_only: u32 = unsafe { ::core::mem::transmute(read_exec_only) };
-read_exec_only as u64
-});
-__bindgen_bitfield_unit.set(4usize, 1u8, {
-let limit_in_pages: u32 = unsafe { ::core::mem::transmute(limit_in_pages) };
-limit_in_pages as u64
-});
-__bindgen_bitfield_unit.set(5usize, 1u8, {
-let seg_not_present: u32 = unsafe { ::core::mem::transmute(seg_not_present) };
-seg_not_present as u64
-});
-__bindgen_bitfield_unit.set(6usize, 1u8, {
-let useable: u32 = unsafe { ::core::mem::transmute(useable) };
-useable as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct msghdr {
-pub msg_name: *mut crate::ctypes::c_void,
-pub msg_namelen: crate::ctypes::c_int,
-pub msg_iov: *mut iovec,
-pub msg_iovlen: size_t,
-pub msg_control: *mut crate::ctypes::c_void,
-pub msg_controllen: size_t,
-pub msg_flags: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct cmsghdr {
-pub cmsg_len: size_t,
-pub cmsg_level: crate::ctypes::c_int,
-pub cmsg_type: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ucred {
-pub pid: __u32,
-pub uid: __u32,
-pub gid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mmsghdr {
-pub msg_hdr: msghdr,
-pub msg_len: crate::ctypes::c_uint,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/powerpc/ioctl.rs b/vendor/linux-raw-sys-0.3.2/src/powerpc/ioctl.rs
deleted file mode 100644
index a1dda1edf..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/powerpc/ioctl.rs
+++ /dev/null
@@ -1,1460 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const FIONREAD: u32 = 1074030207;
-pub const FIONBIO: u32 = 2147772030;
-pub const FIOCLEX: u32 = 536897025;
-pub const FIONCLEX: u32 = 536897026;
-pub const FIOASYNC: u32 = 2147772029;
-pub const FIOQSIZE: u32 = 1074292352;
-pub const TCXONC: u32 = 536900638;
-pub const TCFLSH: u32 = 536900639;
-pub const TIOCSCTTY: u32 = 21518;
-pub const TIOCSPGRP: u32 = 2147775606;
-pub const TIOCOUTQ: u32 = 1074033779;
-pub const TIOCSTI: u32 = 21522;
-pub const TIOCSWINSZ: u32 = 2148037735;
-pub const TIOCMGET: u32 = 21525;
-pub const TIOCMBIS: u32 = 21526;
-pub const TIOCMBIC: u32 = 21527;
-pub const TIOCMSET: u32 = 21528;
-pub const TIOCSSOFTCAR: u32 = 21530;
-pub const TIOCLINUX: u32 = 21532;
-pub const TIOCCONS: u32 = 21533;
-pub const TIOCSSERIAL: u32 = 21535;
-pub const TIOCPKT: u32 = 21536;
-pub const TIOCNOTTY: u32 = 21538;
-pub const TIOCSETD: u32 = 21539;
-pub const TIOCSBRK: u32 = 21543;
-pub const TIOCCBRK: u32 = 21544;
-pub const TIOCSRS485: u32 = 21551;
-pub const TIOCSPTLCK: u32 = 2147767345;
-pub const TIOCSIG: u32 = 2147767350;
-pub const TIOCVHANGUP: u32 = 21559;
-pub const TIOCSERCONFIG: u32 = 21587;
-pub const TIOCSERGWILD: u32 = 21588;
-pub const TIOCSERSWILD: u32 = 21589;
-pub const TIOCSLCKTRMIOS: u32 = 21591;
-pub const TIOCSERGSTRUCT: u32 = 21592;
-pub const TIOCSERGETLSR: u32 = 21593;
-pub const TIOCSERGETMULTI: u32 = 21594;
-pub const TIOCSERSETMULTI: u32 = 21595;
-pub const TIOCMIWAIT: u32 = 21596;
-pub const TCGETS: u32 = 1076655123;
-pub const TCGETA: u32 = 1075082263;
-pub const TCSBRK: u32 = 536900637;
-pub const TCSBRKP: u32 = 21541;
-pub const TCSETA: u32 = 2148824088;
-pub const TCSETAF: u32 = 2148824092;
-pub const TCSETAW: u32 = 2148824089;
-pub const TIOCEXCL: u32 = 21516;
-pub const TIOCNXCL: u32 = 21517;
-pub const TIOCGDEV: u32 = 1074025522;
-pub const TIOCGEXCL: u32 = 1074025536;
-pub const TIOCGICOUNT: u32 = 21597;
-pub const TIOCGLCKTRMIOS: u32 = 21590;
-pub const TIOCGPGRP: u32 = 1074033783;
-pub const TIOCGPKT: u32 = 1074025528;
-pub const TIOCGPTLCK: u32 = 1074025529;
-pub const TIOCGPTN: u32 = 1074025520;
-pub const TIOCGPTPEER: u32 = 536892481;
-pub const TIOCGRS485: u32 = 21550;
-pub const TIOCGSERIAL: u32 = 21534;
-pub const TIOCGSID: u32 = 21545;
-pub const TIOCGSOFTCAR: u32 = 21529;
-pub const TIOCGWINSZ: u32 = 1074295912;
-pub const TCSETS: u32 = 2150396948;
-pub const TCSETSF: u32 = 2150396950;
-pub const TCSETSW: u32 = 2150396949;
-pub const TIOCGETC: u32 = 1074164754;
-pub const TIOCGETD: u32 = 21540;
-pub const TIOCGETP: u32 = 1074164744;
-pub const TIOCGLTC: u32 = 1074164852;
-pub const MTIOCGET: u32 = 1076915458;
-pub const BLKSSZGET: u32 = 536875624;
-pub const BLKPBSZGET: u32 = 536875643;
-pub const BLKROSET: u32 = 536875613;
-pub const BLKROGET: u32 = 536875614;
-pub const BLKRRPART: u32 = 536875615;
-pub const BLKGETSIZE: u32 = 536875616;
-pub const BLKFLSBUF: u32 = 536875617;
-pub const BLKRASET: u32 = 536875618;
-pub const BLKRAGET: u32 = 536875619;
-pub const BLKFRASET: u32 = 536875620;
-pub const BLKFRAGET: u32 = 536875621;
-pub const BLKSECTSET: u32 = 536875622;
-pub const BLKSECTGET: u32 = 536875623;
-pub const BLKPG: u32 = 536875625;
-pub const BLKBSZGET: u32 = 1074270832;
-pub const BLKBSZSET: u32 = 2148012657;
-pub const BLKGETSIZE64: u32 = 1074270834;
-pub const BLKTRACESETUP: u32 = 3225948787;
-pub const BLKTRACESTART: u32 = 536875636;
-pub const BLKTRACESTOP: u32 = 536875637;
-pub const BLKTRACETEARDOWN: u32 = 536875638;
-pub const BLKDISCARD: u32 = 536875639;
-pub const BLKIOMIN: u32 = 536875640;
-pub const BLKIOOPT: u32 = 536875641;
-pub const BLKALIGNOFF: u32 = 536875642;
-pub const BLKDISCARDZEROES: u32 = 536875644;
-pub const BLKSECDISCARD: u32 = 536875645;
-pub const BLKROTATIONAL: u32 = 536875646;
-pub const BLKZEROOUT: u32 = 536875647;
-pub const UFFDIO_REGISTER: u32 = 3223366144;
-pub const UFFDIO_UNREGISTER: u32 = 1074833921;
-pub const UFFDIO_WAKE: u32 = 1074833922;
-pub const UFFDIO_COPY: u32 = 3223890435;
-pub const UFFDIO_ZEROPAGE: u32 = 3223366148;
-pub const UFFDIO_WRITEPROTECT: u32 = 3222841862;
-pub const UFFDIO_API: u32 = 3222841919;
-pub const NS_GET_USERNS: u32 = 536917761;
-pub const NS_GET_PARENT: u32 = 536917762;
-pub const NS_GET_NSTYPE: u32 = 536917763;
-pub const KDGETLED: u32 = 19249;
-pub const KDSETLED: u32 = 19250;
-pub const KDGKBLED: u32 = 19300;
-pub const KDSKBLED: u32 = 19301;
-pub const KDGKBTYPE: u32 = 19251;
-pub const KDADDIO: u32 = 19252;
-pub const KDDELIO: u32 = 19253;
-pub const KDENABIO: u32 = 19254;
-pub const KDDISABIO: u32 = 19255;
-pub const KDSETMODE: u32 = 19258;
-pub const KDGETMODE: u32 = 19259;
-pub const KDMKTONE: u32 = 19248;
-pub const KIOCSOUND: u32 = 19247;
-pub const GIO_CMAP: u32 = 19312;
-pub const PIO_CMAP: u32 = 19313;
-pub const GIO_FONT: u32 = 19296;
-pub const GIO_FONTX: u32 = 19307;
-pub const PIO_FONT: u32 = 19297;
-pub const PIO_FONTX: u32 = 19308;
-pub const PIO_FONTRESET: u32 = 19309;
-pub const GIO_SCRNMAP: u32 = 19264;
-pub const GIO_UNISCRNMAP: u32 = 19305;
-pub const PIO_SCRNMAP: u32 = 19265;
-pub const PIO_UNISCRNMAP: u32 = 19306;
-pub const GIO_UNIMAP: u32 = 19302;
-pub const PIO_UNIMAP: u32 = 19303;
-pub const PIO_UNIMAPCLR: u32 = 19304;
-pub const KDGKBMODE: u32 = 19268;
-pub const KDSKBMODE: u32 = 19269;
-pub const KDGKBMETA: u32 = 19298;
-pub const KDSKBMETA: u32 = 19299;
-pub const KDGKBENT: u32 = 19270;
-pub const KDSKBENT: u32 = 19271;
-pub const KDGKBSENT: u32 = 19272;
-pub const KDSKBSENT: u32 = 19273;
-pub const KDGKBDIACR: u32 = 19274;
-pub const KDGETKEYCODE: u32 = 19276;
-pub const KDSETKEYCODE: u32 = 19277;
-pub const KDSIGACCEPT: u32 = 19278;
-pub const VT_OPENQRY: u32 = 22016;
-pub const VT_GETMODE: u32 = 22017;
-pub const VT_SETMODE: u32 = 22018;
-pub const VT_GETSTATE: u32 = 22019;
-pub const VT_RELDISP: u32 = 22021;
-pub const VT_ACTIVATE: u32 = 22022;
-pub const VT_WAITACTIVE: u32 = 22023;
-pub const VT_DISALLOCATE: u32 = 22024;
-pub const VT_RESIZE: u32 = 22025;
-pub const VT_RESIZEX: u32 = 22026;
-pub const FIOSETOWN: u32 = 35073;
-pub const SIOCSPGRP: u32 = 35074;
-pub const FIOGETOWN: u32 = 35075;
-pub const SIOCGPGRP: u32 = 35076;
-pub const SIOCATMARK: u32 = 35077;
-pub const SIOCGSTAMP: u32 = 35078;
-pub const TIOCINQ: u32 = 1074030207;
-pub const SIOCADDRT: u32 = 35083;
-pub const SIOCDELRT: u32 = 35084;
-pub const SIOCGIFNAME: u32 = 35088;
-pub const SIOCSIFLINK: u32 = 35089;
-pub const SIOCGIFCONF: u32 = 35090;
-pub const SIOCGIFFLAGS: u32 = 35091;
-pub const SIOCSIFFLAGS: u32 = 35092;
-pub const SIOCGIFADDR: u32 = 35093;
-pub const SIOCSIFADDR: u32 = 35094;
-pub const SIOCGIFDSTADDR: u32 = 35095;
-pub const SIOCSIFDSTADDR: u32 = 35096;
-pub const SIOCGIFBRDADDR: u32 = 35097;
-pub const SIOCSIFBRDADDR: u32 = 35098;
-pub const SIOCGIFNETMASK: u32 = 35099;
-pub const SIOCSIFNETMASK: u32 = 35100;
-pub const SIOCGIFMETRIC: u32 = 35101;
-pub const SIOCSIFMETRIC: u32 = 35102;
-pub const SIOCGIFMEM: u32 = 35103;
-pub const SIOCSIFMEM: u32 = 35104;
-pub const SIOCGIFMTU: u32 = 35105;
-pub const SIOCSIFMTU: u32 = 35106;
-pub const SIOCSIFHWADDR: u32 = 35108;
-pub const SIOCGIFENCAP: u32 = 35109;
-pub const SIOCSIFENCAP: u32 = 35110;
-pub const SIOCGIFHWADDR: u32 = 35111;
-pub const SIOCGIFSLAVE: u32 = 35113;
-pub const SIOCSIFSLAVE: u32 = 35120;
-pub const SIOCADDMULTI: u32 = 35121;
-pub const SIOCDELMULTI: u32 = 35122;
-pub const SIOCDARP: u32 = 35155;
-pub const SIOCGARP: u32 = 35156;
-pub const SIOCSARP: u32 = 35157;
-pub const SIOCDRARP: u32 = 35168;
-pub const SIOCGRARP: u32 = 35169;
-pub const SIOCSRARP: u32 = 35170;
-pub const SIOCGIFMAP: u32 = 35184;
-pub const SIOCSIFMAP: u32 = 35185;
-pub const SIOCRTMSG: u32 = 35085;
-pub const SIOCSIFNAME: u32 = 35107;
-pub const SIOCGIFINDEX: u32 = 35123;
-pub const SIOGIFINDEX: u32 = 35123;
-pub const SIOCSIFPFLAGS: u32 = 35124;
-pub const SIOCGIFPFLAGS: u32 = 35125;
-pub const SIOCDIFADDR: u32 = 35126;
-pub const SIOCSIFHWBROADCAST: u32 = 35127;
-pub const SIOCGIFCOUNT: u32 = 35128;
-pub const SIOCGIFBR: u32 = 35136;
-pub const SIOCSIFBR: u32 = 35137;
-pub const SIOCGIFTXQLEN: u32 = 35138;
-pub const SIOCSIFTXQLEN: u32 = 35139;
-pub const SIOCADDDLCI: u32 = 35200;
-pub const SIOCDELDLCI: u32 = 35201;
-pub const SIOCDEVPRIVATE: u32 = 35312;
-pub const SIOCPROTOPRIVATE: u32 = 35296;
-pub const FIBMAP: u32 = 536870913;
-pub const FIGETBSZ: u32 = 536870914;
-pub const FIFREEZE: u32 = 3221510263;
-pub const FITHAW: u32 = 3221510264;
-pub const FITRIM: u32 = 3222820985;
-pub const FICLONE: u32 = 2147783689;
-pub const FICLONERANGE: u32 = 2149618701;
-pub const FIDEDUPERANGE: u32 = 3222836278;
-pub const FS_IOC_GETFLAGS: u32 = 1074292225;
-pub const FS_IOC_SETFLAGS: u32 = 2148034050;
-pub const FS_IOC_GETVERSION: u32 = 1074296321;
-pub const FS_IOC_SETVERSION: u32 = 2148038146;
-pub const FS_IOC_FIEMAP: u32 = 3223348747;
-pub const FS_IOC32_GETFLAGS: u32 = 1074030081;
-pub const FS_IOC32_SETFLAGS: u32 = 2147771906;
-pub const FS_IOC32_GETVERSION: u32 = 1074034177;
-pub const FS_IOC32_SETVERSION: u32 = 2147776002;
-pub const FS_IOC_FSGETXATTR: u32 = 1075599391;
-pub const FS_IOC_FSSETXATTR: u32 = 2149341216;
-pub const FS_IOC_GETFSLABEL: u32 = 1090556977;
-pub const FS_IOC_SETFSLABEL: u32 = 2164298802;
-pub const VIDIOC_SUBDEV_QUERYSTD: u32 = 1074288191;
-pub const AUTOFS_DEV_IOCTL_CLOSEMOUNT: u32 = 3222836085;
-pub const LIRC_SET_SEND_CARRIER: u32 = 2147772691;
-pub const AUTOFS_IOC_PROTOSUBVER: u32 = 1074041703;
-pub const PTP_SYS_OFFSET_PRECISE: u32 = 3225435400;
-pub const FSI_SCOM_WRITE: u32 = 3223352066;
-pub const ATM_GETCIRANGE: u32 = 2148557194;
-pub const DMA_BUF_SET_NAME_B: u32 = 2148033025;
-pub const RIO_CM_EP_GET_LIST_SIZE: u32 = 3221512961;
-pub const TUNSETPERSIST: u32 = 2147767499;
-pub const FS_IOC_GET_ENCRYPTION_POLICY: u32 = 2148296213;
-pub const CEC_RECEIVE: u32 = 3224920326;
-pub const MGSL_IOCGPARAMS: u32 = 1076915457;
-pub const ENI_SETMULT: u32 = 2148557159;
-pub const RIO_GET_EVENT_MASK: u32 = 1074031886;
-pub const LIRC_GET_MAX_TIMEOUT: u32 = 1074030857;
-pub const USBDEVFS_CLAIMINTERFACE: u32 = 1074025743;
-pub const CHIOMOVE: u32 = 2148819713;
-pub const SONYPI_IOCGBATFLAGS: u32 = 1073837575;
-pub const BTRFS_IOC_SYNC: u32 = 536908808;
-pub const VIDIOC_TRY_FMT: u32 = 3234879040;
-pub const LIRC_SET_REC_MODE: u32 = 2147772690;
-pub const VIDIOC_DQEVENT: u32 = 1082676825;
-pub const RPMSG_DESTROY_EPT_IOCTL: u32 = 536917250;
-pub const UVCIOC_CTRL_MAP: u32 = 3227546912;
-pub const VHOST_SET_BACKEND_FEATURES: u32 = 2148052773;
-pub const VHOST_VSOCK_SET_GUEST_CID: u32 = 2148052832;
-pub const UI_SET_KEYBIT: u32 = 2147767653;
-pub const LIRC_SET_REC_TIMEOUT: u32 = 2147772696;
-pub const FS_IOC_GET_ENCRYPTION_KEY_STATUS: u32 = 3229640218;
-pub const BTRFS_IOC_TREE_SEARCH_V2: u32 = 3228603409;
-pub const VHOST_SET_VRING_BASE: u32 = 2148052754;
-pub const RIO_ENABLE_DOORBELL_RANGE: u32 = 2148035849;
-pub const VIDIOC_TRY_EXT_CTRLS: u32 = 3223344713;
-pub const LIRC_GET_REC_MODE: u32 = 1074030850;
-pub const PPGETTIME: u32 = 1074819221;
-pub const BTRFS_IOC_RM_DEV: u32 = 2415957003;
-pub const ATM_SETBACKEND: u32 = 2147639794;
-pub const FSL_HV_IOCTL_PARTITION_START: u32 = 3222318851;
-pub const FBIO_WAITEVENT: u32 = 536888968;
-pub const SWITCHTEC_IOCTL_PORT_TO_PFF: u32 = 3222034245;
-pub const NVME_IOCTL_IO_CMD: u32 = 3225964099;
-pub const IPMICTL_RECEIVE_MSG_TRUNC: u32 = 3224398091;
-pub const FDTWADDLE: u32 = 536871513;
-pub const NVME_IOCTL_SUBMIT_IO: u32 = 2150649410;
-pub const NILFS_IOCTL_SYNC: u32 = 1074294410;
-pub const VIDIOC_SUBDEV_S_DV_TIMINGS: u32 = 3229898327;
-pub const ASPEED_LPC_CTRL_IOCTL_GET_SIZE: u32 = 3222319616;
-pub const DM_DEV_STATUS: u32 = 3241737479;
-pub const TEE_IOC_CLOSE_SESSION: u32 = 1074045957;
-pub const NS_GETPSTAT: u32 = 3222298977;
-pub const UI_SET_PROPBIT: u32 = 2147767662;
-pub const TUNSETFILTEREBPF: u32 = 1074025697;
-pub const RIO_MPORT_MAINT_COMPTAG_SET: u32 = 2147773698;
-pub const AUTOFS_DEV_IOCTL_VERSION: u32 = 3222836081;
-pub const WDIOC_SETOPTIONS: u32 = 1074026244;
-pub const VHOST_SCSI_SET_ENDPOINT: u32 = 2162732864;
-pub const MGSL_IOCGTXIDLE: u32 = 536898819;
-pub const ATM_ADDLECSADDR: u32 = 2148557198;
-pub const FSL_HV_IOCTL_GETPROP: u32 = 3223891719;
-pub const FDGETPRM: u32 = 1075839492;
-pub const HIDIOCAPPLICATION: u32 = 536889346;
-pub const ENI_MEMDUMP: u32 = 2148557152;
-pub const PTP_SYS_OFFSET2: u32 = 2202025230;
-pub const VIDIOC_SUBDEV_G_DV_TIMINGS: u32 = 3229898328;
-pub const DMA_BUF_SET_NAME_A: u32 = 2147770881;
-pub const PTP_PIN_GETFUNC: u32 = 3227532550;
-pub const PTP_SYS_OFFSET_EXTENDED: u32 = 3300932873;
-pub const DFL_FPGA_PORT_UINT_SET_IRQ: u32 = 2148054600;
-pub const RTC_EPOCH_READ: u32 = 1074294797;
-pub const VIDIOC_SUBDEV_S_SELECTION: u32 = 3225441854;
-pub const VIDIOC_QUERY_EXT_CTRL: u32 = 3236451943;
-pub const ATM_GETLECSADDR: u32 = 2148557200;
-pub const FSL_HV_IOCTL_PARTITION_STOP: u32 = 3221794564;
-pub const SONET_GETDIAG: u32 = 1074028820;
-pub const ATMMPC_DATA: u32 = 536895961;
-pub const IPMICTL_UNREGISTER_FOR_CMD_CHANS: u32 = 1074555165;
-pub const HIDIOCGCOLLECTIONINDEX: u32 = 2149074960;
-pub const RPMSG_CREATE_EPT_IOCTL: u32 = 2150151425;
-pub const GPIOHANDLE_GET_LINE_VALUES_IOCTL: u32 = 3225465864;
-pub const UI_DEV_SETUP: u32 = 2153534723;
-pub const ISST_IF_IO_CMD: u32 = 2148072962;
-pub const RIO_MPORT_MAINT_READ_REMOTE: u32 = 1075342599;
-pub const VIDIOC_OMAP3ISP_HIST_CFG: u32 = 3224393412;
-pub const BLKGETNRZONES: u32 = 1074008709;
-pub const VIDIOC_G_MODULATOR: u32 = 3225703990;
-pub const VBG_IOCTL_WRITE_CORE_DUMP: u32 = 3223082515;
-pub const USBDEVFS_SETINTERFACE: u32 = 1074287876;
-pub const PPPIOCGCHAN: u32 = 1074033719;
-pub const EVIOCGVERSION: u32 = 1074021633;
-pub const VHOST_NET_SET_BACKEND: u32 = 2148052784;
-pub const USBDEVFS_REAPURBNDELAY: u32 = 2148029709;
-pub const RNDZAPENTCNT: u32 = 536891908;
-pub const VIDIOC_G_PARM: u32 = 3234616853;
-pub const TUNGETDEVNETNS: u32 = 536892643;
-pub const LIRC_SET_MEASURE_CARRIER_MODE: u32 = 2147772701;
-pub const VHOST_SET_VRING_ERR: u32 = 2148052770;
-pub const VDUSE_VQ_SETUP: u32 = 2149613844;
-pub const AUTOFS_IOC_SETTIMEOUT: u32 = 3221787492;
-pub const VIDIOC_S_FREQUENCY: u32 = 2150389305;
-pub const F2FS_IOC_SEC_TRIM_FILE: u32 = 2149119252;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY: u32 = 3225445912;
-pub const WDIOC_GETPRETIMEOUT: u32 = 1074026249;
-pub const USBDEVFS_DROP_PRIVILEGES: u32 = 2147767582;
-pub const BTRFS_IOC_SNAP_CREATE_V2: u32 = 2415957015;
-pub const VHOST_VSOCK_SET_RUNNING: u32 = 2147790689;
-pub const STP_SET_OPTIONS: u32 = 2148017410;
-pub const FBIO_RADEON_GET_MIRROR: u32 = 1074282499;
-pub const IVTVFB_IOC_DMA_FRAME: u32 = 2149078720;
-pub const IPMICTL_SEND_COMMAND: u32 = 1076390157;
-pub const VIDIOC_G_ENC_INDEX: u32 = 1209554508;
-pub const DFL_FPGA_FME_PORT_PR: u32 = 536917632;
-pub const CHIOSVOLTAG: u32 = 2150654738;
-pub const ATM_SETESIF: u32 = 2148557197;
-pub const FW_CDEV_IOC_SEND_RESPONSE: u32 = 2149065476;
-pub const PMU_IOC_GET_MODEL: u32 = 1074283011;
-pub const JSIOCGBTNMAP: u32 = 1140877876;
-pub const USBDEVFS_HUB_PORTINFO: u32 = 1082152211;
-pub const VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS: u32 = 3222820363;
-pub const FDCLRPRM: u32 = 536871489;
-pub const BTRFS_IOC_SCRUB: u32 = 3288372251;
-pub const USBDEVFS_DISCONNECT: u32 = 536892694;
-pub const TUNSETVNETBE: u32 = 2147767518;
-pub const ATMTCP_REMOVE: u32 = 536895887;
-pub const VHOST_VDPA_GET_CONFIG: u32 = 1074311027;
-pub const PPPIOCGNPMODE: u32 = 3221779532;
-pub const FDGETDRVPRM: u32 = 1082130961;
-pub const TUNSETVNETLE: u32 = 2147767516;
-pub const PHN_SETREG: u32 = 2148036614;
-pub const PPPIOCDETACH: u32 = 2147775548;
-pub const MMTIMER_GETRES: u32 = 1074294017;
-pub const VIDIOC_SUBDEV_ENUMSTD: u32 = 3225966105;
-pub const PPGETFLAGS: u32 = 1074032794;
-pub const VDUSE_DEV_GET_FEATURES: u32 = 1074299153;
-pub const CAPI_MANUFACTURER_CMD: u32 = 3222291232;
-pub const VIDIOC_G_TUNER: u32 = 3226752541;
-pub const DM_TABLE_STATUS: u32 = 3241737484;
-pub const DM_DEV_ARM_POLL: u32 = 3241737488;
-pub const NE_CREATE_VM: u32 = 1074310688;
-pub const MEDIA_IOC_ENUM_LINKS: u32 = 3223878658;
-pub const F2FS_IOC_PRECACHE_EXTENTS: u32 = 536933647;
-pub const DFL_FPGA_PORT_DMA_MAP: u32 = 536917571;
-pub const MGSL_IOCGXCTRL: u32 = 536898838;
-pub const FW_CDEV_IOC_SEND_REQUEST: u32 = 2150114049;
-pub const SONYPI_IOCGBLUE: u32 = 1073837576;
-pub const F2FS_IOC_DECOMPRESS_FILE: u32 = 536933655;
-pub const I2OHTML: u32 = 3224398089;
-pub const VFIO_GET_API_VERSION: u32 = 536886116;
-pub const IDT77105_GETSTATZ: u32 = 2148557107;
-pub const I2OPARMSET: u32 = 3223873795;
-pub const TEE_IOC_CANCEL: u32 = 1074308100;
-pub const PTP_SYS_OFFSET_PRECISE2: u32 = 3225435409;
-pub const DFL_FPGA_PORT_RESET: u32 = 536917568;
-pub const PPPIOCGASYNCMAP: u32 = 1074033752;
-pub const EVIOCGKEYCODE_V2: u32 = 1076380932;
-pub const DM_DEV_SET_GEOMETRY: u32 = 3241737487;
-pub const HIDIOCSUSAGE: u32 = 2149074956;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE: u32 = 2149065488;
-pub const PTP_EXTTS_REQUEST: u32 = 2148547842;
-pub const SWITCHTEC_IOCTL_EVENT_CTL: u32 = 3223869251;
-pub const WDIOC_SETPRETIMEOUT: u32 = 3221509896;
-pub const VHOST_SCSI_CLEAR_ENDPOINT: u32 = 2162732865;
-pub const JSIOCGAXES: u32 = 1073834513;
-pub const HIDIOCSFLAG: u32 = 2147764239;
-pub const PTP_PEROUT_REQUEST2: u32 = 2151169292;
-pub const PPWDATA: u32 = 2147577990;
-pub const PTP_CLOCK_GETCAPS: u32 = 1079000321;
-pub const FDGETMAXERRS: u32 = 1075053070;
-pub const TUNSETQUEUE: u32 = 2147767513;
-pub const PTP_ENABLE_PPS: u32 = 2147761412;
-pub const SIOCSIFATMTCP: u32 = 536895872;
-pub const CEC_ADAP_G_LOG_ADDRS: u32 = 1079795971;
-pub const ND_IOCTL_ARS_CAP: u32 = 3223342593;
-pub const NBD_SET_BLKSIZE: u32 = 536914689;
-pub const NBD_SET_TIMEOUT: u32 = 536914697;
-pub const VHOST_SCSI_GET_ABI_VERSION: u32 = 2147790658;
-pub const RIO_UNMAP_INBOUND: u32 = 2148035858;
-pub const ATM_QUERYLOOP: u32 = 2148557140;
-pub const DFL_FPGA_GET_API_VERSION: u32 = 536917504;
-pub const USBDEVFS_WAIT_FOR_RESUME: u32 = 536892707;
-pub const FBIO_CURSOR: u32 = 3228059144;
-pub const RNDCLEARPOOL: u32 = 536891910;
-pub const VIDIOC_QUERYSTD: u32 = 1074288191;
-pub const DMA_BUF_IOCTL_SYNC: u32 = 2148033024;
-pub const SCIF_RECV: u32 = 3222827783;
-pub const PTP_PIN_GETFUNC2: u32 = 3227532559;
-pub const FW_CDEV_IOC_ALLOCATE: u32 = 3223331586;
-pub const CEC_ADAP_G_CAPS: u32 = 3226231040;
-pub const VIDIOC_G_FBUF: u32 = 1076909578;
-pub const PTP_ENABLE_PPS2: u32 = 2147761421;
-pub const PCITEST_CLEAR_IRQ: u32 = 536891408;
-pub const IPMICTL_SET_GETS_EVENTS_CMD: u32 = 1074030864;
-pub const BTRFS_IOC_DEVICES_READY: u32 = 1342215207;
-pub const JSIOCGAXMAP: u32 = 1077963314;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER: u32 = 1074799372;
-pub const FW_CDEV_IOC_SET_ISO_CHANNELS: u32 = 2148541207;
-pub const RTC_WIE_OFF: u32 = 536899600;
-pub const PPGETMODE: u32 = 1074032792;
-pub const VIDIOC_DBG_G_REGISTER: u32 = 3224917584;
-pub const PTP_SYS_OFFSET: u32 = 2202025221;
-pub const BTRFS_IOC_SPACE_INFO: u32 = 3222311956;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_SIZE: u32 = 3225441866;
-pub const ND_IOCTL_VENDOR: u32 = 3221769737;
-pub const SCIF_VREADFROM: u32 = 3223876364;
-pub const BTRFS_IOC_TRANS_START: u32 = 536908806;
-pub const INOTIFY_IOC_SETNEXTWD: u32 = 2147764480;
-pub const SNAPSHOT_GET_IMAGE_SIZE: u32 = 1074279182;
-pub const TUNDETACHFILTER: u32 = 2148553942;
-pub const ND_IOCTL_CLEAR_ERROR: u32 = 3223342596;
-pub const IOC_PR_CLEAR: u32 = 2148561101;
-pub const SCIF_READFROM: u32 = 3223876362;
-pub const PPPIOCGDEBUG: u32 = 1074033729;
-pub const BLKGETZONESZ: u32 = 1074008708;
-pub const HIDIOCGUSAGES: u32 = 3491514387;
-pub const SONYPI_IOCGTEMP: u32 = 1073837580;
-pub const UI_SET_MSCBIT: u32 = 2147767656;
-pub const APM_IOC_SUSPEND: u32 = 536887554;
-pub const BTRFS_IOC_TREE_SEARCH: u32 = 3489698833;
-pub const RTC_PLL_GET: u32 = 1075867665;
-pub const RIO_CM_EP_GET_LIST: u32 = 3221512962;
-pub const USBDEVFS_DISCSIGNAL: u32 = 1074812174;
-pub const LIRC_GET_MIN_TIMEOUT: u32 = 1074030856;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY: u32 = 1100502850;
-pub const DM_TARGET_MSG: u32 = 3241737486;
-pub const SONYPI_IOCGBAT1REM: u32 = 1073903107;
-pub const EVIOCSFF: u32 = 2150647168;
-pub const TUNSETGROUP: u32 = 2147767502;
-pub const EVIOCGKEYCODE: u32 = 1074283780;
-pub const KCOV_REMOTE_ENABLE: u32 = 2149081958;
-pub const ND_IOCTL_GET_CONFIG_SIZE: u32 = 3222031876;
-pub const FDEJECT: u32 = 536871514;
-pub const TUNSETOFFLOAD: u32 = 2147767504;
-pub const PPPIOCCONNECT: u32 = 2147775546;
-pub const ATM_ADDADDR: u32 = 2148557192;
-pub const VDUSE_DEV_INJECT_CONFIG_IRQ: u32 = 536903955;
-pub const AUTOFS_DEV_IOCTL_ASKUMOUNT: u32 = 3222836093;
-pub const VHOST_VDPA_GET_STATUS: u32 = 1073852273;
-pub const CCISS_PASSTHRU: u32 = 3227009547;
-pub const MGSL_IOCCLRMODCOUNT: u32 = 536898831;
-pub const TEE_IOC_SUPPL_SEND: u32 = 1074832391;
-pub const ATMARPD_CTRL: u32 = 536895969;
-pub const UI_ABS_SETUP: u32 = 2149340420;
-pub const UI_DEV_DESTROY: u32 = 536892674;
-pub const BTRFS_IOC_QUOTA_CTL: u32 = 3222311976;
-pub const RTC_AIE_ON: u32 = 536899585;
-pub const AUTOFS_IOC_EXPIRE: u32 = 1091343205;
-pub const PPPIOCSDEBUG: u32 = 2147775552;
-pub const GPIO_V2_LINE_SET_VALUES_IOCTL: u32 = 3222320143;
-pub const PPPIOCSMRU: u32 = 2147775570;
-pub const CCISS_DEREGDISK: u32 = 536887820;
-pub const UI_DEV_CREATE: u32 = 536892673;
-pub const FUSE_DEV_IOC_CLONE: u32 = 1074062592;
-pub const BTRFS_IOC_START_SYNC: u32 = 1074304024;
-pub const NILFS_IOCTL_DELETE_CHECKPOINT: u32 = 2148036225;
-pub const SNAPSHOT_AVAIL_SWAP_SIZE: u32 = 1074279187;
-pub const DM_TABLE_CLEAR: u32 = 3241737482;
-pub const CCISS_GETINTINFO: u32 = 1074283010;
-pub const PPPIOCSASYNCMAP: u32 = 2147775575;
-pub const I2OEVTGET: u32 = 1080584459;
-pub const NVME_IOCTL_RESET: u32 = 536890948;
-pub const PPYIELD: u32 = 536899725;
-pub const NVME_IOCTL_IO64_CMD: u32 = 3226488392;
-pub const TUNSETCARRIER: u32 = 2147767522;
-pub const DM_DEV_WAIT: u32 = 3241737480;
-pub const RTC_WIE_ON: u32 = 536899599;
-pub const MEDIA_IOC_DEVICE_INFO: u32 = 3238034432;
-pub const RIO_CM_CHAN_CREATE: u32 = 3221381891;
-pub const MGSL_IOCSPARAMS: u32 = 2150657280;
-pub const RTC_SET_TIME: u32 = 2149871626;
-pub const VHOST_RESET_OWNER: u32 = 536915714;
-pub const IOC_OPAL_PSID_REVERT_TPR: u32 = 2164814056;
-pub const AUTOFS_DEV_IOCTL_OPENMOUNT: u32 = 3222836084;
-pub const UDF_GETEABLOCK: u32 = 1074293825;
-pub const VFIO_IOMMU_MAP_DMA: u32 = 536886129;
-pub const VIDIOC_SUBSCRIBE_EVENT: u32 = 2149602906;
-pub const HIDIOCGFLAG: u32 = 1074022414;
-pub const HIDIOCGUCODE: u32 = 3222816781;
-pub const VIDIOC_OMAP3ISP_AF_CFG: u32 = 3226228421;
-pub const DM_REMOVE_ALL: u32 = 3241737473;
-pub const ASPEED_LPC_CTRL_IOCTL_MAP: u32 = 2148577793;
-pub const CCISS_GETFIRMVER: u32 = 1074020872;
-pub const ND_IOCTL_ARS_START: u32 = 3223342594;
-pub const PPPIOCSMRRU: u32 = 2147775547;
-pub const CEC_ADAP_S_LOG_ADDRS: u32 = 3227279620;
-pub const RPROC_GET_SHUTDOWN_ON_RELEASE: u32 = 1074050818;
-pub const DMA_HEAP_IOCTL_ALLOC: u32 = 3222816768;
-pub const PPSETTIME: u32 = 2148561046;
-pub const RTC_ALM_READ: u32 = 1076129800;
-pub const VDUSE_SET_API_VERSION: u32 = 2148040961;
-pub const RIO_MPORT_MAINT_WRITE_REMOTE: u32 = 2149084424;
-pub const VIDIOC_SUBDEV_S_CROP: u32 = 3224917564;
-pub const USBDEVFS_CONNECT: u32 = 536892695;
-pub const SYNC_IOC_FILE_INFO: u32 = 3224911364;
-pub const ATMARP_MKIP: u32 = 536895970;
-pub const VFIO_IOMMU_SPAPR_TCE_GET_INFO: u32 = 536886128;
-pub const CCISS_GETHEARTBEAT: u32 = 1074020870;
-pub const ATM_RSTADDR: u32 = 2148557191;
-pub const NBD_SET_SIZE: u32 = 536914690;
-pub const UDF_GETVOLIDENT: u32 = 1074293826;
-pub const GPIO_V2_LINE_GET_VALUES_IOCTL: u32 = 3222320142;
-pub const MGSL_IOCSTXIDLE: u32 = 536898818;
-pub const FSL_HV_IOCTL_SETPROP: u32 = 3223891720;
-pub const BTRFS_IOC_GET_DEV_STATS: u32 = 3288896564;
-pub const PPRSTATUS: u32 = 1073836161;
-pub const MGSL_IOCTXENABLE: u32 = 536898820;
-pub const UDF_GETEASIZE: u32 = 1074031680;
-pub const NVME_IOCTL_ADMIN64_CMD: u32 = 3226488391;
-pub const VHOST_SET_OWNER: u32 = 536915713;
-pub const RIO_ALLOC_DMA: u32 = 3222826259;
-pub const RIO_CM_CHAN_ACCEPT: u32 = 3221775111;
-pub const I2OHRTGET: u32 = 3222825217;
-pub const ATM_SETCIRANGE: u32 = 2148557195;
-pub const HPET_IE_ON: u32 = 536897537;
-pub const PERF_EVENT_IOC_ID: u32 = 1074275335;
-pub const TUNSETSNDBUF: u32 = 2147767508;
-pub const PTP_PIN_SETFUNC: u32 = 2153790727;
-pub const PPPIOCDISCONN: u32 = 536900665;
-pub const VIDIOC_QUERYCTRL: u32 = 3225703972;
-pub const PPEXCL: u32 = 536899727;
-pub const PCITEST_MSI: u32 = 2147766275;
-pub const FDWERRORCLR: u32 = 536871510;
-pub const AUTOFS_IOC_FAIL: u32 = 536908641;
-pub const USBDEVFS_IOCTL: u32 = 3222295826;
-pub const VIDIOC_S_STD: u32 = 2148029976;
-pub const F2FS_IOC_RESIZE_FS: u32 = 2148070672;
-pub const SONET_SETDIAG: u32 = 3221512466;
-pub const BTRFS_IOC_DEFRAG: u32 = 2415956994;
-pub const CCISS_GETDRIVVER: u32 = 1074020873;
-pub const IPMICTL_GET_TIMING_PARMS_CMD: u32 = 1074293015;
-pub const HPET_IRQFREQ: u32 = 2148034566;
-pub const ATM_GETESI: u32 = 2148557189;
-pub const CCISS_GETLUNINFO: u32 = 1074545169;
-pub const AUTOFS_DEV_IOCTL_ISMOUNTPOINT: u32 = 3222836094;
-pub const TEE_IOC_SHM_ALLOC: u32 = 3222316033;
-pub const PERF_EVENT_IOC_SET_BPF: u32 = 2147755016;
-pub const UDMABUF_CREATE_LIST: u32 = 2148037955;
-pub const VHOST_SET_LOG_BASE: u32 = 2148052740;
-pub const ZATM_GETPOOL: u32 = 2148557153;
-pub const BR2684_SETFILT: u32 = 2149343632;
-pub const RNDGETPOOL: u32 = 1074287106;
-pub const PPS_GETPARAMS: u32 = 1074294945;
-pub const IOC_PR_RESERVE: u32 = 2148561097;
-pub const VIDIOC_TRY_DECODER_CMD: u32 = 3225966177;
-pub const RIO_CM_CHAN_CLOSE: u32 = 2147640068;
-pub const VIDIOC_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const IOCTL_MEI_CONNECT_CLIENT_VTAG: u32 = 3222554628;
-pub const PMU_IOC_GET_BACKLIGHT: u32 = 1074283009;
-pub const USBDEVFS_GET_CAPABILITIES: u32 = 1074025754;
-pub const SCIF_WRITETO: u32 = 3223876363;
-pub const UDF_RELOCATE_BLOCKS: u32 = 3221777475;
-pub const FSL_HV_IOCTL_PARTITION_RESTART: u32 = 3221794561;
-pub const CCISS_REGNEWD: u32 = 536887822;
-pub const FAT_IOCTL_SET_ATTRIBUTES: u32 = 2147774993;
-pub const VIDIOC_CREATE_BUFS: u32 = 3238024796;
-pub const CAPI_GET_VERSION: u32 = 3222291207;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY: u32 = 1155028802;
-pub const VFIO_EEH_PE_OP: u32 = 536886137;
-pub const FW_CDEV_IOC_CREATE_ISO_CONTEXT: u32 = 3223331592;
-pub const F2FS_IOC_RELEASE_COMPRESS_BLOCKS: u32 = 1074328850;
-pub const NBD_SET_SIZE_BLOCKS: u32 = 536914695;
-pub const IPMI_BMC_IOCTL_SET_SMS_ATN: u32 = 536916224;
-pub const ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG: u32 = 3222319873;
-pub const VIDIOC_S_AUDOUT: u32 = 2150913586;
-pub const VIDIOC_S_FMT: u32 = 3234878981;
-pub const PPPIOCATTACH: u32 = 2147775549;
-pub const VHOST_GET_VRING_BUSYLOOP_TIMEOUT: u32 = 2148052772;
-pub const FS_IOC_MEASURE_VERITY: u32 = 3221513862;
-pub const CCISS_BIG_PASSTHRU: u32 = 3227533842;
-pub const IPMICTL_SET_MY_LUN_CMD: u32 = 1074030867;
-pub const PCITEST_LEGACY_IRQ: u32 = 536891394;
-pub const USBDEVFS_SUBMITURB: u32 = 1077433610;
-pub const AUTOFS_IOC_READY: u32 = 536908640;
-pub const BTRFS_IOC_SEND: u32 = 2152240166;
-pub const VIDIOC_G_EXT_CTRLS: u32 = 3223344711;
-pub const JSIOCSBTNMAP: u32 = 2214619699;
-pub const PPPIOCSFLAGS: u32 = 2147775577;
-pub const NVRAM_INIT: u32 = 536899648;
-pub const RFKILL_IOCTL_NOINPUT: u32 = 536891905;
-pub const BTRFS_IOC_BALANCE: u32 = 2415957004;
-pub const FS_IOC_GETFSMAP: u32 = 3233830971;
-pub const IPMICTL_GET_MY_CHANNEL_LUN_CMD: u32 = 1074030875;
-pub const STP_POLICY_ID_GET: u32 = 1074799873;
-pub const PPSETFLAGS: u32 = 2147774619;
-pub const CEC_ADAP_S_PHYS_ADDR: u32 = 2147639554;
-pub const ATMTCP_CREATE: u32 = 536895886;
-pub const IPMI_BMC_IOCTL_FORCE_ABORT: u32 = 536916226;
-pub const PPPIOCGXASYNCMAP: u32 = 1075868752;
-pub const VHOST_SET_VRING_CALL: u32 = 2148052769;
-pub const LIRC_GET_FEATURES: u32 = 1074030848;
-pub const GSMIOC_DISABLE_NET: u32 = 536889091;
-pub const AUTOFS_IOC_CATATONIC: u32 = 536908642;
-pub const NBD_DO_IT: u32 = 536914691;
-pub const LIRC_SET_REC_CARRIER_RANGE: u32 = 2147772703;
-pub const IPMICTL_GET_MY_CHANNEL_ADDRESS_CMD: u32 = 1074030873;
-pub const EVIOCSCLOCKID: u32 = 2147763616;
-pub const USBDEVFS_FREE_STREAMS: u32 = 1074287901;
-pub const FSI_SCOM_RESET: u32 = 2147775235;
-pub const PMU_IOC_GRAB_BACKLIGHT: u32 = 1074283014;
-pub const VIDIOC_SUBDEV_S_FMT: u32 = 3227014661;
-pub const FDDEFPRM: u32 = 2149581379;
-pub const TEE_IOC_INVOKE: u32 = 1074832387;
-pub const USBDEVFS_BULK: u32 = 3222820098;
-pub const SCIF_VWRITETO: u32 = 3223876365;
-pub const SONYPI_IOCSBRT: u32 = 2147579392;
-pub const BTRFS_IOC_FILE_EXTENT_SAME: u32 = 3222836278;
-pub const RTC_PIE_ON: u32 = 536899589;
-pub const BTRFS_IOC_SCAN_DEV: u32 = 2415956996;
-pub const PPPIOCXFERUNIT: u32 = 536900686;
-pub const WDIOC_GETTIMEOUT: u32 = 1074026247;
-pub const BTRFS_IOC_SET_RECEIVED_SUBVOL: u32 = 3234370597;
-pub const DFL_FPGA_PORT_ERR_SET_IRQ: u32 = 2148054598;
-pub const FBIO_WAITFORVSYNC: u32 = 2147763744;
-pub const RTC_PIE_OFF: u32 = 536899590;
-pub const EVIOCGRAB: u32 = 2147763600;
-pub const PMU_IOC_SET_BACKLIGHT: u32 = 2148024834;
-pub const EVIOCGREP: u32 = 1074283779;
-pub const PERF_EVENT_IOC_MODIFY_ATTRIBUTES: u32 = 2148017163;
-pub const UFFDIO_CONTINUE: u32 = 3223366151;
-pub const VDUSE_GET_API_VERSION: u32 = 1074299136;
-pub const RTC_RD_TIME: u32 = 1076129801;
-pub const FDMSGOFF: u32 = 536871494;
-pub const IPMICTL_REGISTER_FOR_CMD_CHANS: u32 = 1074555164;
-pub const CAPI_GET_ERRCODE: u32 = 1073890081;
-pub const PCITEST_SET_IRQTYPE: u32 = 2147766280;
-pub const VIDIOC_SUBDEV_S_EDID: u32 = 3223868969;
-pub const MATROXFB_SET_OUTPUT_MODE: u32 = 2148036346;
-pub const RIO_DEV_ADD: u32 = 2149608727;
-pub const VIDIOC_ENUM_FREQ_BANDS: u32 = 3225441893;
-pub const FBIO_RADEON_SET_MIRROR: u32 = 2148024324;
-pub const PCITEST_GET_IRQTYPE: u32 = 536891401;
-pub const JSIOCGVERSION: u32 = 1074031105;
-pub const SONYPI_IOCSBLUE: u32 = 2147579401;
-pub const SNAPSHOT_PREF_IMAGE_SIZE: u32 = 536883986;
-pub const F2FS_IOC_GET_FEATURES: u32 = 1074066700;
-pub const SCIF_REG: u32 = 3223876360;
-pub const NILFS_IOCTL_CLEAN_SEGMENTS: u32 = 2155376264;
-pub const FW_CDEV_IOC_INITIATE_BUS_RESET: u32 = 2147754757;
-pub const RIO_WAIT_FOR_ASYNC: u32 = 2148035862;
-pub const VHOST_SET_VRING_NUM: u32 = 2148052752;
-pub const AUTOFS_DEV_IOCTL_PROTOVER: u32 = 3222836082;
-pub const RIO_FREE_DMA: u32 = 2148035860;
-pub const MGSL_IOCRXENABLE: u32 = 536898821;
-pub const IOCTL_VM_SOCKETS_GET_LOCAL_CID: u32 = 536872889;
-pub const IPMICTL_SET_TIMING_PARMS_CMD: u32 = 1074293014;
-pub const PPPIOCGL2TPSTATS: u32 = 1078490166;
-pub const PERF_EVENT_IOC_PERIOD: u32 = 2148017156;
-pub const PTP_PIN_SETFUNC2: u32 = 2153790736;
-pub const CHIOEXCHANGE: u32 = 2149344002;
-pub const NILFS_IOCTL_GET_SUINFO: u32 = 1075342980;
-pub const CEC_DQEVENT: u32 = 3226493191;
-pub const UI_SET_SWBIT: u32 = 2147767661;
-pub const VHOST_VDPA_SET_CONFIG: u32 = 2148052852;
-pub const TUNSETIFF: u32 = 2147767498;
-pub const CHIOPOSITION: u32 = 2148295427;
-pub const IPMICTL_SET_MAINTENANCE_MODE_CMD: u32 = 2147772703;
-pub const BTRFS_IOC_DEFAULT_SUBVOL: u32 = 2148045843;
-pub const RIO_UNMAP_OUTBOUND: u32 = 2150133008;
-pub const CAPI_CLR_FLAGS: u32 = 1074021157;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE: u32 = 2149065487;
-pub const MATROXFB_GET_OUTPUT_CONNECTION: u32 = 1074294520;
-pub const EVIOCSMASK: u32 = 2148550035;
-pub const BTRFS_IOC_FORGET_DEV: u32 = 2415956997;
-pub const CXL_MEM_QUERY_COMMANDS: u32 = 1074318849;
-pub const CEC_S_MODE: u32 = 2147770633;
-pub const MGSL_IOCSIF: u32 = 536898826;
-pub const SWITCHTEC_IOCTL_PFF_TO_PORT: u32 = 3222034244;
-pub const PPSETMODE: u32 = 2147774592;
-pub const VFIO_DEVICE_SET_IRQS: u32 = 536886126;
-pub const VIDIOC_PREPARE_BUF: u32 = 3227014749;
-pub const CEC_ADAP_G_CONNECTOR_INFO: u32 = 1078223114;
-pub const IOC_OPAL_WRITE_SHADOW_MBR: u32 = 2166386922;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL: u32 = 3225441867;
-pub const UDMABUF_CREATE: u32 = 2149086530;
-pub const SONET_CLRDIAG: u32 = 3221512467;
-pub const PHN_SET_REG: u32 = 2148036609;
-pub const RNDADDTOENTCNT: u32 = 2147766785;
-pub const VBG_IOCTL_CHECK_BALLOON: u32 = 3223344657;
-pub const VIDIOC_OMAP3ISP_STAT_REQ: u32 = 3223869126;
-pub const PPS_FETCH: u32 = 3221778596;
-pub const RTC_AIE_OFF: u32 = 536899586;
-pub const VFIO_GROUP_SET_CONTAINER: u32 = 536886120;
-pub const FW_CDEV_IOC_RECEIVE_PHY_PACKETS: u32 = 2148016918;
-pub const VFIO_IOMMU_SPAPR_TCE_REMOVE: u32 = 536886136;
-pub const VFIO_IOMMU_GET_INFO: u32 = 536886128;
-pub const DM_DEV_SUSPEND: u32 = 3241737478;
-pub const F2FS_IOC_GET_COMPRESS_OPTION: u32 = 1073935637;
-pub const FW_CDEV_IOC_STOP_ISO: u32 = 2147754763;
-pub const GPIO_V2_GET_LINEINFO_IOCTL: u32 = 3238048773;
-pub const ATMMPC_CTRL: u32 = 536895960;
-pub const PPPIOCSXASYNCMAP: u32 = 2149610575;
-pub const CHIOGSTATUS: u32 = 2148557576;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE: u32 = 3222807309;
-pub const RIO_MPORT_MAINT_PORT_IDX_GET: u32 = 1074031875;
-pub const CAPI_SET_FLAGS: u32 = 1074021156;
-pub const VFIO_GROUP_GET_DEVICE_FD: u32 = 536886122;
-pub const VHOST_SET_MEM_TABLE: u32 = 2148052739;
-pub const MATROXFB_SET_OUTPUT_CONNECTION: u32 = 2148036344;
-pub const DFL_FPGA_PORT_GET_REGION_INFO: u32 = 536917570;
-pub const VHOST_GET_FEATURES: u32 = 1074310912;
-pub const LIRC_GET_REC_RESOLUTION: u32 = 1074030855;
-pub const PACKET_CTRL_CMD: u32 = 3222820865;
-pub const LIRC_SET_TRANSMITTER_MASK: u32 = 2147772695;
-pub const BTRFS_IOC_ADD_DEV: u32 = 2415957002;
-pub const JSIOCGCORR: u32 = 1076128290;
-pub const VIDIOC_G_FMT: u32 = 3234878980;
-pub const RTC_EPOCH_SET: u32 = 2148036622;
-pub const CAPI_GET_PROFILE: u32 = 3225436937;
-pub const ATM_GETLOOP: u32 = 2148557138;
-pub const SCIF_LISTEN: u32 = 2147775234;
-pub const NBD_CLEAR_QUE: u32 = 536914693;
-pub const F2FS_IOC_MOVE_RANGE: u32 = 3223385353;
-pub const LIRC_GET_LENGTH: u32 = 1074030863;
-pub const I8K_SET_FAN: u32 = 3221776775;
-pub const FDSETMAXERRS: u32 = 2148794956;
-pub const VIDIOC_SUBDEV_QUERYCAP: u32 = 1077958144;
-pub const SNAPSHOT_SET_SWAP_AREA: u32 = 2148283149;
-pub const LIRC_GET_REC_TIMEOUT: u32 = 1074030884;
-pub const EVIOCRMFF: u32 = 2147763585;
-pub const GPIO_GET_LINEEVENT_IOCTL: u32 = 3224417284;
-pub const PPRDATA: u32 = 1073836165;
-pub const RIO_MPORT_GET_PROPERTIES: u32 = 1076915460;
-pub const TUNSETVNETHDRSZ: u32 = 2147767512;
-pub const GPIO_GET_LINEINFO_IOCTL: u32 = 3225990146;
-pub const GSMIOC_GETCONF: u32 = 1078740736;
-pub const LIRC_GET_SEND_MODE: u32 = 1074030849;
-pub const PPPIOCSACTIVE: u32 = 2148561990;
-pub const SIOCGSTAMPNS_NEW: u32 = 1074825479;
-pub const IPMICTL_RECEIVE_MSG: u32 = 3224398092;
-pub const LIRC_SET_SEND_DUTY_CYCLE: u32 = 2147772693;
-pub const UI_END_FF_ERASE: u32 = 2148292043;
-pub const SWITCHTEC_IOCTL_FLASH_PART_INFO: u32 = 3222296385;
-pub const FW_CDEV_IOC_SEND_PHY_PACKET: u32 = 3222807317;
-pub const NBD_SET_FLAGS: u32 = 536914698;
-pub const VFIO_DEVICE_GET_REGION_INFO: u32 = 536886124;
-pub const REISERFS_IOC_UNPACK: u32 = 2148060417;
-pub const FW_CDEV_IOC_REMOVE_DESCRIPTOR: u32 = 2147754759;
-pub const RIO_SET_EVENT_MASK: u32 = 2147773709;
-pub const SNAPSHOT_ALLOC_SWAP_PAGE: u32 = 1074279188;
-pub const VDUSE_VQ_INJECT_IRQ: u32 = 2147778839;
-pub const I2OPASSTHRU: u32 = 1074817292;
-pub const IOC_OPAL_SET_PW: u32 = 2183164128;
-pub const FSI_SCOM_READ: u32 = 3223352065;
-pub const VHOST_VDPA_GET_DEVICE_ID: u32 = 1074048880;
-pub const VIDIOC_QBUF: u32 = 3227014671;
-pub const VIDIOC_S_TUNER: u32 = 2153010718;
-pub const TUNGETVNETHDRSZ: u32 = 1074025687;
-pub const CAPI_NCCI_GETUNIT: u32 = 1074021159;
-pub const DFL_FPGA_PORT_UINT_GET_IRQ_NUM: u32 = 1074050631;
-pub const VIDIOC_OMAP3ISP_STAT_EN: u32 = 3221771975;
-pub const GPIO_V2_LINE_SET_CONFIG_IOCTL: u32 = 3239097357;
-pub const TEE_IOC_VERSION: u32 = 1074570240;
-pub const VIDIOC_LOG_STATUS: u32 = 536892998;
-pub const IPMICTL_SEND_COMMAND_SETTIME: u32 = 1076914453;
-pub const VHOST_SET_LOG_FD: u32 = 2147790599;
-pub const SCIF_SEND: u32 = 3222827782;
-pub const VIDIOC_SUBDEV_G_FMT: u32 = 3227014660;
-pub const NS_ADJBUFLEV: u32 = 536895843;
-pub const VIDIOC_DBG_S_REGISTER: u32 = 2151175759;
-pub const NILFS_IOCTL_RESIZE: u32 = 2148036235;
-pub const PHN_GETREG: u32 = 3221778437;
-pub const I2OSWDL: u32 = 3224398085;
-pub const VBG_IOCTL_VMMDEV_REQUEST_BIG: u32 = 536892931;
-pub const JSIOCGBUTTONS: u32 = 1073834514;
-pub const VFIO_IOMMU_ENABLE: u32 = 536886131;
-pub const DM_DEV_RENAME: u32 = 3241737477;
-pub const MEDIA_IOC_SETUP_LINK: u32 = 3224665091;
-pub const VIDIOC_ENUMOUTPUT: u32 = 3225966128;
-pub const STP_POLICY_ID_SET: u32 = 3222283520;
-pub const VHOST_VDPA_SET_CONFIG_CALL: u32 = 2147790711;
-pub const VIDIOC_SUBDEV_G_CROP: u32 = 3224917563;
-pub const VIDIOC_S_CROP: u32 = 2148816444;
-pub const WDIOC_GETTEMP: u32 = 1074026243;
-pub const IOC_OPAL_ADD_USR_TO_LR: u32 = 2165862628;
-pub const UI_SET_LEDBIT: u32 = 2147767657;
-pub const NBD_SET_SOCK: u32 = 536914688;
-pub const BTRFS_IOC_SNAP_DESTROY_V2: u32 = 2415957055;
-pub const HIDIOCGCOLLECTIONINFO: u32 = 3222292497;
-pub const I2OSWUL: u32 = 3224398086;
-pub const IOCTL_MEI_NOTIFY_GET: u32 = 1074022403;
-pub const FDFMTTRK: u32 = 2148270664;
-pub const MMTIMER_GETBITS: u32 = 536898820;
-pub const VIDIOC_ENUMSTD: u32 = 3225966105;
-pub const VHOST_GET_VRING_BASE: u32 = 3221794578;
-pub const VFIO_DEVICE_IOEVENTFD: u32 = 536886132;
-pub const ATMARP_SETENTRY: u32 = 536895971;
-pub const CCISS_REVALIDVOLS: u32 = 536887818;
-pub const MGSL_IOCLOOPTXDONE: u32 = 536898825;
-pub const RTC_VL_READ: u32 = 1074032659;
-pub const ND_IOCTL_ARS_STATUS: u32 = 3224391171;
-pub const RIO_DEV_DEL: u32 = 2149608728;
-pub const VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES: u32 = 3223606797;
-pub const VIDIOC_SUBDEV_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const SONYPI_IOCSFAN: u32 = 2147579403;
-pub const SPIOCSTYPE: u32 = 2148036865;
-pub const IPMICTL_REGISTER_FOR_CMD: u32 = 1073899790;
-pub const I8K_GET_FAN: u32 = 3221776774;
-pub const TUNGETVNETBE: u32 = 1074025695;
-pub const AUTOFS_DEV_IOCTL_FAIL: u32 = 3222836087;
-pub const UI_END_FF_UPLOAD: u32 = 2154321353;
-pub const TOSH_SMM: u32 = 3222828176;
-pub const SONYPI_IOCGBAT2REM: u32 = 1073903109;
-pub const F2FS_IOC_GET_COMPRESS_BLOCKS: u32 = 1074328849;
-pub const PPPIOCSNPMODE: u32 = 2148037707;
-pub const USBDEVFS_CONTROL: u32 = 3222820096;
-pub const HIDIOCGUSAGE: u32 = 3222816779;
-pub const TUNSETTXFILTER: u32 = 2147767505;
-pub const TUNGETVNETLE: u32 = 1074025693;
-pub const VIDIOC_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const BTRFS_IOC_INO_PATHS: u32 = 3224933411;
-pub const MGSL_IOCGXSYNC: u32 = 536898836;
-pub const HIDIOCGFIELDINFO: u32 = 3224913930;
-pub const VIDIOC_SUBDEV_G_STD: u32 = 1074288151;
-pub const I2OVALIDATE: u32 = 1074030856;
-pub const VIDIOC_TRY_ENCODER_CMD: u32 = 3223869006;
-pub const NILFS_IOCTL_GET_CPINFO: u32 = 1075342978;
-pub const VIDIOC_G_FREQUENCY: u32 = 3224131128;
-pub const VFAT_IOCTL_READDIR_SHORT: u32 = 1110471170;
-pub const ND_IOCTL_GET_CONFIG_DATA: u32 = 3222031877;
-pub const F2FS_IOC_RESERVE_COMPRESS_BLOCKS: u32 = 1074328851;
-pub const FDGETDRVSTAT: u32 = 1078985234;
-pub const SYNC_IOC_MERGE: u32 = 3224387075;
-pub const VIDIOC_S_DV_TIMINGS: u32 = 3229898327;
-pub const PPPIOCBRIDGECHAN: u32 = 2147775541;
-pub const LIRC_SET_SEND_MODE: u32 = 2147772689;
-pub const RIO_ENABLE_PORTWRITE_RANGE: u32 = 2148560139;
-pub const ATM_GETTYPE: u32 = 2148557188;
-pub const PHN_GETREGS: u32 = 3223875591;
-pub const FDSETEMSGTRESH: u32 = 536871498;
-pub const NILFS_IOCTL_GET_VINFO: u32 = 3222826630;
-pub const MGSL_IOCWAITEVENT: u32 = 3221515528;
-pub const CAPI_INSTALLED: u32 = 1073890082;
-pub const EVIOCGMASK: u32 = 1074808210;
-pub const BTRFS_IOC_SUBVOL_GETFLAGS: u32 = 1074304025;
-pub const FSL_HV_IOCTL_PARTITION_GET_STATUS: u32 = 3222056706;
-pub const MEDIA_IOC_ENUM_ENTITIES: u32 = 3238034433;
-pub const GSMIOC_GETFIRST: u32 = 1074022148;
-pub const FW_CDEV_IOC_FLUSH_ISO: u32 = 2147754776;
-pub const VIDIOC_DBG_G_CHIP_INFO: u32 = 3234354790;
-pub const F2FS_IOC_RELEASE_VOLATILE_WRITE: u32 = 536933636;
-pub const CAPI_GET_SERIAL: u32 = 3221504776;
-pub const FDSETDRVPRM: u32 = 2155872912;
-pub const IOC_OPAL_SAVE: u32 = 2165862620;
-pub const VIDIOC_G_DV_TIMINGS: u32 = 3229898328;
-pub const TUNSETIFINDEX: u32 = 2147767514;
-pub const CCISS_SETINTINFO: u32 = 2148024835;
-pub const CM_IOSDBGLVL: u32 = 2148033530;
-pub const RTC_VL_CLR: u32 = 536899604;
-pub const VIDIOC_REQBUFS: u32 = 3222558216;
-pub const USBDEVFS_REAPURBNDELAY32: u32 = 2147767565;
-pub const TEE_IOC_SHM_REGISTER: u32 = 3222840329;
-pub const USBDEVFS_SETCONFIGURATION: u32 = 1074025733;
-pub const CCISS_GETNODENAME: u32 = 1074807300;
-pub const VIDIOC_SUBDEV_S_FRAME_INTERVAL: u32 = 3224393238;
-pub const VIDIOC_ENUM_FRAMESIZES: u32 = 3224131146;
-pub const VFIO_DEVICE_PCI_HOT_RESET: u32 = 536886129;
-pub const FW_CDEV_IOC_SEND_BROADCAST_REQUEST: u32 = 2150114066;
-pub const LPSETTIMEOUT_NEW: u32 = 2148533775;
-pub const RIO_CM_MPORT_GET_LIST: u32 = 3221512971;
-pub const FW_CDEV_IOC_QUEUE_ISO: u32 = 3222807305;
-pub const FDRAWCMD: u32 = 536871512;
-pub const SCIF_UNREG: u32 = 3222303497;
-pub const PPPIOCGIDLE64: u32 = 1074820159;
-pub const USBDEVFS_RELEASEINTERFACE: u32 = 1074025744;
-pub const VIDIOC_CROPCAP: u32 = 3224131130;
-pub const DFL_FPGA_PORT_GET_INFO: u32 = 536917569;
-pub const PHN_SET_REGS: u32 = 2148036611;
-pub const ATMLEC_DATA: u32 = 536895953;
-pub const PPPOEIOCDFWD: u32 = 536916225;
-pub const VIDIOC_S_SELECTION: u32 = 3225441887;
-pub const SNAPSHOT_FREE_SWAP_PAGES: u32 = 536883977;
-pub const BTRFS_IOC_LOGICAL_INO: u32 = 3224933412;
-pub const VIDIOC_S_CTRL: u32 = 3221771804;
-pub const ZATM_SETPOOL: u32 = 2148557155;
-pub const MTIOCPOS: u32 = 1074294019;
-pub const PMU_IOC_SLEEP: u32 = 536887808;
-pub const AUTOFS_DEV_IOCTL_PROTOSUBVER: u32 = 3222836083;
-pub const VBG_IOCTL_CHANGE_FILTER_MASK: u32 = 3223344652;
-pub const NILFS_IOCTL_GET_SUSTAT: u32 = 1076915845;
-pub const VIDIOC_QUERYCAP: u32 = 1080579584;
-pub const HPET_INFO: u32 = 1075341315;
-pub const VIDIOC_AM437X_CCDC_CFG: u32 = 2148030145;
-pub const DM_LIST_DEVICES: u32 = 3241737474;
-pub const TUNSETOWNER: u32 = 2147767500;
-pub const VBG_IOCTL_CHANGE_GUEST_CAPABILITIES: u32 = 3223344654;
-pub const RNDADDENTROPY: u32 = 2148028931;
-pub const USBDEVFS_RESET: u32 = 536892692;
-pub const BTRFS_IOC_SUBVOL_CREATE: u32 = 2415957006;
-pub const USBDEVFS_FORBID_SUSPEND: u32 = 536892705;
-pub const FDGETDRVTYP: u32 = 1074790927;
-pub const PPWCONTROL: u32 = 2147577988;
-pub const VIDIOC_ENUM_FRAMEINTERVALS: u32 = 3224655435;
-pub const KCOV_DISABLE: u32 = 536896357;
-pub const IOC_OPAL_ACTIVATE_LSP: u32 = 2165862623;
-pub const VHOST_VDPA_GET_IOVA_RANGE: u32 = 1074835320;
-pub const PPPIOCSPASS: u32 = 2148561991;
-pub const RIO_CM_CHAN_CONNECT: u32 = 2148033288;
-pub const I2OSWDEL: u32 = 3224398087;
-pub const FS_IOC_SET_ENCRYPTION_POLICY: u32 = 1074554387;
-pub const IOC_OPAL_MBR_DONE: u32 = 2165338345;
-pub const PPPIOCSMAXCID: u32 = 2147775569;
-pub const PPSETPHASE: u32 = 2147774612;
-pub const VHOST_VDPA_SET_VRING_ENABLE: u32 = 2148052853;
-pub const USBDEVFS_GET_SPEED: u32 = 536892703;
-pub const SONET_GETFRAMING: u32 = 1074028822;
-pub const VIDIOC_QUERYBUF: u32 = 3227014665;
-pub const VIDIOC_S_EDID: u32 = 3223868969;
-pub const BTRFS_IOC_QGROUP_ASSIGN: u32 = 2149094441;
-pub const PPS_GETCAP: u32 = 1074294947;
-pub const SNAPSHOT_PLATFORM_SUPPORT: u32 = 536883983;
-pub const LIRC_SET_REC_TIMEOUT_REPORTS: u32 = 2147772697;
-pub const SCIF_GET_NODEIDS: u32 = 3222827790;
-pub const NBD_DISCONNECT: u32 = 536914696;
-pub const VIDIOC_SUBDEV_G_FRAME_INTERVAL: u32 = 3224393237;
-pub const VFIO_IOMMU_DISABLE: u32 = 536886132;
-pub const SNAPSHOT_CREATE_IMAGE: u32 = 2147758865;
-pub const SNAPSHOT_POWER_OFF: u32 = 536883984;
-pub const APM_IOC_STANDBY: u32 = 536887553;
-pub const PPPIOCGUNIT: u32 = 1074033750;
-pub const AUTOFS_IOC_EXPIRE_MULTI: u32 = 2147783526;
-pub const SCIF_BIND: u32 = 3221779201;
-pub const IOC_WATCH_QUEUE_SET_SIZE: u32 = 536893280;
-pub const NILFS_IOCTL_CHANGE_CPMODE: u32 = 2148560512;
-pub const IOC_OPAL_LOCK_UNLOCK: u32 = 2165862621;
-pub const F2FS_IOC_SET_PIN_FILE: u32 = 2147808525;
-pub const PPPIOCGRASYNCMAP: u32 = 1074033749;
-pub const MMTIMER_MMAPAVAIL: u32 = 536898822;
-pub const I2OPASSTHRU32: u32 = 1074293004;
-pub const DFL_FPGA_FME_PORT_RELEASE: u32 = 2147792513;
-pub const VIDIOC_SUBDEV_QUERY_DV_TIMINGS: u32 = 1082414691;
-pub const UI_SET_SNDBIT: u32 = 2147767658;
-pub const VIDIOC_G_AUDOUT: u32 = 1077171761;
-pub const RTC_PLL_SET: u32 = 2149609490;
-pub const VIDIOC_ENUMAUDIO: u32 = 3224655425;
-pub const AUTOFS_DEV_IOCTL_TIMEOUT: u32 = 3222836090;
-pub const VBG_IOCTL_DRIVER_VERSION_INFO: u32 = 3224131072;
-pub const VHOST_SCSI_GET_EVENTS_MISSED: u32 = 2147790660;
-pub const VHOST_SET_VRING_ADDR: u32 = 2150149905;
-pub const VDUSE_CREATE_DEV: u32 = 2169536770;
-pub const FDFLUSH: u32 = 536871499;
-pub const VBG_IOCTL_WAIT_FOR_EVENTS: u32 = 3223344650;
-pub const DFL_FPGA_FME_ERR_SET_IRQ: u32 = 2148054660;
-pub const F2FS_IOC_GET_PIN_FILE: u32 = 1074066702;
-pub const SCIF_CONNECT: u32 = 3221779203;
-pub const BLKREPORTZONE: u32 = 3222278786;
-pub const AUTOFS_IOC_ASKUMOUNT: u32 = 1074041712;
-pub const ATM_ADDPARTY: u32 = 2148557300;
-pub const FDSETPRM: u32 = 2149581378;
-pub const ATM_GETSTATZ: u32 = 2148557137;
-pub const ISST_IF_MSR_COMMAND: u32 = 3221814788;
-pub const BTRFS_IOC_GET_SUBVOL_INFO: u32 = 1106809916;
-pub const VIDIOC_UNSUBSCRIBE_EVENT: u32 = 2149602907;
-pub const SEV_ISSUE_CMD: u32 = 3222295296;
-pub const GPIOHANDLE_SET_LINE_VALUES_IOCTL: u32 = 3225465865;
-pub const PCITEST_COPY: u32 = 2148028422;
-pub const IPMICTL_GET_MY_ADDRESS_CMD: u32 = 1074030866;
-pub const CHIOGPICKER: u32 = 1074029316;
-pub const CAPI_NCCI_OPENCOUNT: u32 = 1074021158;
-pub const CXL_MEM_SEND_COMMAND: u32 = 3224423938;
-pub const PERF_EVENT_IOC_SET_FILTER: u32 = 2148017158;
-pub const IOC_OPAL_REVERT_TPR: u32 = 2164814050;
-pub const CHIOGVPARAMS: u32 = 1081107219;
-pub const PTP_PEROUT_REQUEST: u32 = 2151169283;
-pub const FSI_SCOM_CHECK: u32 = 1074033408;
-pub const RTC_IRQP_READ: u32 = 1074294795;
-pub const RIO_MPORT_MAINT_READ_LOCAL: u32 = 1075342597;
-pub const HIDIOCGRDESCSIZE: u32 = 1074022401;
-pub const UI_GET_VERSION: u32 = 1074025773;
-pub const NILFS_IOCTL_GET_CPSTAT: u32 = 1075342979;
-pub const CCISS_GETBUSTYPES: u32 = 1074020871;
-pub const VFIO_IOMMU_SPAPR_TCE_CREATE: u32 = 536886135;
-pub const VIDIOC_EXPBUF: u32 = 3225441808;
-pub const UI_SET_RELBIT: u32 = 2147767654;
-pub const VFIO_SET_IOMMU: u32 = 536886118;
-pub const VIDIOC_S_MODULATOR: u32 = 2151962167;
-pub const TUNGETFILTER: u32 = 1074812123;
-pub const MEYEIOC_SYNC: u32 = 3221518019;
-pub const CCISS_SETNODENAME: u32 = 2148549125;
-pub const FBIO_GETCONTROL2: u32 = 1074284169;
-pub const TUNSETDEBUG: u32 = 2147767497;
-pub const DM_DEV_REMOVE: u32 = 3241737476;
-pub const HIDIOCSUSAGES: u32 = 2417772564;
-pub const FS_IOC_ADD_ENCRYPTION_KEY: u32 = 3226494487;
-pub const FBIOGET_VBLANK: u32 = 1075856914;
-pub const ATM_GETSTAT: u32 = 2148557136;
-pub const VIDIOC_G_JPEGCOMP: u32 = 1082938941;
-pub const TUNATTACHFILTER: u32 = 2148553941;
-pub const UI_SET_ABSBIT: u32 = 2147767655;
-pub const DFL_FPGA_PORT_ERR_GET_IRQ_NUM: u32 = 1074050629;
-pub const USBDEVFS_REAPURB32: u32 = 2147767564;
-pub const BTRFS_IOC_TRANS_END: u32 = 536908807;
-pub const CAPI_REGISTER: u32 = 2148287233;
-pub const F2FS_IOC_COMPRESS_FILE: u32 = 536933656;
-pub const USBDEVFS_DISCARDURB: u32 = 536892683;
-pub const HE_GET_REG: u32 = 2148557152;
-pub const ATM_SETLOOP: u32 = 2148557139;
-pub const ATMSIGD_CTRL: u32 = 536895984;
-pub const CIOC_KERNEL_VERSION: u32 = 3221775114;
-pub const BTRFS_IOC_CLONE_RANGE: u32 = 2149618701;
-pub const SNAPSHOT_UNFREEZE: u32 = 536883970;
-pub const F2FS_IOC_START_VOLATILE_WRITE: u32 = 536933635;
-pub const PMU_IOC_HAS_ADB: u32 = 1074283012;
-pub const I2OGETIOPS: u32 = 1075865856;
-pub const VIDIOC_S_FBUF: u32 = 2150651403;
-pub const PPRCONTROL: u32 = 1073836163;
-pub const CHIOSPICKER: u32 = 2147771141;
-pub const VFIO_IOMMU_SPAPR_REGISTER_MEMORY: u32 = 536886133;
-pub const TUNGETSNDBUF: u32 = 1074025683;
-pub const GSMIOC_SETCONF: u32 = 2152482561;
-pub const IOC_PR_PREEMPT: u32 = 2149085387;
-pub const KCOV_INIT_TRACE: u32 = 1074291457;
-pub const SONYPI_IOCGBAT1CAP: u32 = 1073903106;
-pub const SWITCHTEC_IOCTL_FLASH_INFO: u32 = 1074812736;
-pub const MTIOCTOP: u32 = 2148035841;
-pub const VHOST_VDPA_SET_STATUS: u32 = 2147594098;
-pub const VHOST_SCSI_SET_EVENTS_MISSED: u32 = 2147790659;
-pub const VFIO_IOMMU_DIRTY_PAGES: u32 = 536886133;
-pub const BTRFS_IOC_SCRUB_PROGRESS: u32 = 3288372253;
-pub const PPPIOCGMRU: u32 = 1074033747;
-pub const BTRFS_IOC_DEV_REPLACE: u32 = 3391657013;
-pub const PPPIOCGFLAGS: u32 = 1074033754;
-pub const NILFS_IOCTL_SET_SUINFO: u32 = 2149084813;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER2: u32 = 3222807316;
-pub const ATM_DELLECSADDR: u32 = 2148557199;
-pub const FW_CDEV_IOC_GET_SPEED: u32 = 536879889;
-pub const PPPIOCGIDLE32: u32 = 1074295871;
-pub const VFIO_DEVICE_RESET: u32 = 536886127;
-pub const GPIO_GET_LINEINFO_UNWATCH_IOCTL: u32 = 3221533708;
-pub const WDIOC_GETSTATUS: u32 = 1074026241;
-pub const BTRFS_IOC_SET_FEATURES: u32 = 2150667321;
-pub const IOCTL_MEI_CONNECT_CLIENT: u32 = 3222292481;
-pub const VIDIOC_OMAP3ISP_AEWB_CFG: u32 = 3223344835;
-pub const PCITEST_READ: u32 = 2148028421;
-pub const VFIO_GROUP_GET_STATUS: u32 = 536886119;
-pub const MATROXFB_GET_ALL_OUTPUTS: u32 = 1074294523;
-pub const USBDEVFS_CLEAR_HALT: u32 = 1074025749;
-pub const VIDIOC_DECODER_CMD: u32 = 3225966176;
-pub const VIDIOC_G_AUDIO: u32 = 1077171745;
-pub const CCISS_RESCANDISK: u32 = 536887824;
-pub const RIO_DISABLE_PORTWRITE_RANGE: u32 = 2148560140;
-pub const IOC_OPAL_SECURE_ERASE_LR: u32 = 2165338343;
-pub const USBDEVFS_REAPURB: u32 = 2148029708;
-pub const DFL_FPGA_CHECK_EXTENSION: u32 = 536917505;
-pub const AUTOFS_IOC_PROTOVER: u32 = 1074041699;
-pub const FSL_HV_IOCTL_MEMCPY: u32 = 3223891717;
-pub const BTRFS_IOC_GET_FEATURES: u32 = 1075352633;
-pub const PCITEST_MSIX: u32 = 2147766279;
-pub const BTRFS_IOC_DEFRAG_RANGE: u32 = 2150667280;
-pub const UI_BEGIN_FF_ERASE: u32 = 3222033866;
-pub const DM_GET_TARGET_VERSION: u32 = 3241737489;
-pub const PPPIOCGIDLE: u32 = 1074820159;
-pub const NVRAM_SETCKS: u32 = 536899649;
-pub const WDIOC_GETSUPPORT: u32 = 1076385536;
-pub const GSMIOC_ENABLE_NET: u32 = 2150909698;
-pub const GPIO_GET_CHIPINFO_IOCTL: u32 = 1078244353;
-pub const NE_ADD_VCPU: u32 = 3221532193;
-pub const EVIOCSKEYCODE_V2: u32 = 2150122756;
-pub const PTP_SYS_OFFSET_EXTENDED2: u32 = 3300932882;
-pub const SCIF_FENCE_WAIT: u32 = 3221517072;
-pub const RIO_TRANSFER: u32 = 3222826261;
-pub const FSL_HV_IOCTL_DOORBELL: u32 = 3221794566;
-pub const RIO_MPORT_MAINT_WRITE_LOCAL: u32 = 2149084422;
-pub const I2OEVTREG: u32 = 2148296970;
-pub const I2OPARMGET: u32 = 3223873796;
-pub const EVIOCGID: u32 = 1074283778;
-pub const BTRFS_IOC_QGROUP_CREATE: u32 = 2148570154;
-pub const AUTOFS_DEV_IOCTL_SETPIPEFD: u32 = 3222836088;
-pub const VIDIOC_S_PARM: u32 = 3234616854;
-pub const TUNSETSTEERINGEBPF: u32 = 1074025696;
-pub const ATM_GETNAMES: u32 = 2148557187;
-pub const VIDIOC_QUERYMENU: u32 = 3224131109;
-pub const DFL_FPGA_PORT_DMA_UNMAP: u32 = 536917572;
-pub const I2OLCTGET: u32 = 3222825218;
-pub const FS_IOC_GET_ENCRYPTION_PWSALT: u32 = 2148558356;
-pub const NS_SETBUFLEV: u32 = 2148557154;
-pub const BLKCLOSEZONE: u32 = 2148536967;
-pub const SONET_GETFRSENSE: u32 = 1074159895;
-pub const UI_SET_EVBIT: u32 = 2147767652;
-pub const DM_LIST_VERSIONS: u32 = 3241737485;
-pub const HIDIOCGSTRING: u32 = 1090799620;
-pub const PPPIOCATTCHAN: u32 = 2147775544;
-pub const VDUSE_DEV_SET_CONFIG: u32 = 2148040978;
-pub const TUNGETFEATURES: u32 = 1074025679;
-pub const VFIO_GROUP_UNSET_CONTAINER: u32 = 536886121;
-pub const IPMICTL_SET_MY_ADDRESS_CMD: u32 = 1074030865;
-pub const CCISS_REGNEWDISK: u32 = 2147762701;
-pub const VIDIOC_QUERY_DV_TIMINGS: u32 = 1082414691;
-pub const PHN_SETREGS: u32 = 2150133768;
-pub const FAT_IOCTL_GET_ATTRIBUTES: u32 = 1074033168;
-pub const FSL_MC_SEND_MC_COMMAND: u32 = 3225440992;
-pub const TUNGETIFF: u32 = 1074025682;
-pub const PTP_CLOCK_GETCAPS2: u32 = 1079000330;
-pub const BTRFS_IOC_RESIZE: u32 = 2415956995;
-pub const VHOST_SET_VRING_ENDIAN: u32 = 2148052755;
-pub const PPS_KC_BIND: u32 = 2148036773;
-pub const F2FS_IOC_WRITE_CHECKPOINT: u32 = 536933639;
-pub const UI_SET_FFBIT: u32 = 2147767659;
-pub const IPMICTL_GET_MY_LUN_CMD: u32 = 1074030868;
-pub const CEC_ADAP_G_PHYS_ADDR: u32 = 1073897729;
-pub const CEC_G_MODE: u32 = 1074028808;
-pub const USBDEVFS_RESETEP: u32 = 1074025731;
-pub const MEDIA_REQUEST_IOC_QUEUE: u32 = 536902784;
-pub const USBDEVFS_ALLOC_STREAMS: u32 = 1074287900;
-pub const MGSL_IOCSXCTRL: u32 = 536898837;
-pub const MEDIA_IOC_G_TOPOLOGY: u32 = 3225975812;
-pub const PPPIOCUNBRIDGECHAN: u32 = 536900660;
-pub const F2FS_IOC_COMMIT_ATOMIC_WRITE: u32 = 536933634;
-pub const ISST_IF_GET_PLATFORM_INFO: u32 = 1074331136;
-pub const SCIF_FENCE_MARK: u32 = 3222303503;
-pub const USBDEVFS_RELEASE_PORT: u32 = 1074025753;
-pub const VFIO_CHECK_EXTENSION: u32 = 536886117;
-pub const BTRFS_IOC_QGROUP_LIMIT: u32 = 1076925483;
-pub const FAT_IOCTL_GET_VOLUME_ID: u32 = 1074033171;
-pub const UI_SET_PHYS: u32 = 2148029804;
-pub const FDWERRORGET: u32 = 1076363799;
-pub const VIDIOC_SUBDEV_G_EDID: u32 = 3223868968;
-pub const MGSL_IOCGSTATS: u32 = 536898823;
-pub const RPROC_SET_SHUTDOWN_ON_RELEASE: u32 = 2147792641;
-pub const SIOCGSTAMP_NEW: u32 = 1074825478;
-pub const RTC_WKALM_RD: u32 = 1076391952;
-pub const PHN_GET_REG: u32 = 3221778432;
-pub const DELL_WMI_SMBIOS_CMD: u32 = 3224655616;
-pub const PHN_NOT_OH: u32 = 536899588;
-pub const PPGETMODES: u32 = 1074032791;
-pub const CHIOGPARAMS: u32 = 1075077894;
-pub const VFIO_DEVICE_GET_GFX_DMABUF: u32 = 536886131;
-pub const VHOST_SET_VRING_BUSYLOOP_TIMEOUT: u32 = 2148052771;
-pub const VIDIOC_SUBDEV_G_SELECTION: u32 = 3225441853;
-pub const BTRFS_IOC_RM_DEV_V2: u32 = 2415957050;
-pub const MGSL_IOCWAITGPIO: u32 = 3222301970;
-pub const PMU_IOC_CAN_SLEEP: u32 = 1074283013;
-pub const KCOV_ENABLE: u32 = 536896356;
-pub const BTRFS_IOC_CLONE: u32 = 2147783689;
-pub const F2FS_IOC_DEFRAGMENT: u32 = 3222336776;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE: u32 = 2147754766;
-pub const AGPIOC_ALLOCATE: u32 = 3221766406;
-pub const NE_SET_USER_MEMORY_REGION: u32 = 2149101091;
-pub const MGSL_IOCTXABORT: u32 = 536898822;
-pub const MGSL_IOCSGPIO: u32 = 2148560144;
-pub const LIRC_SET_REC_CARRIER: u32 = 2147772692;
-pub const F2FS_IOC_FLUSH_DEVICE: u32 = 2148070666;
-pub const SNAPSHOT_ATOMIC_RESTORE: u32 = 536883972;
-pub const RTC_UIE_OFF: u32 = 536899588;
-pub const BT_BMC_IOCTL_SMS_ATN: u32 = 536916224;
-pub const NVME_IOCTL_ID: u32 = 536890944;
-pub const NE_START_ENCLAVE: u32 = 3222318628;
-pub const VIDIOC_STREAMON: u32 = 2147767826;
-pub const FDPOLLDRVSTAT: u32 = 1078985235;
-pub const AUTOFS_DEV_IOCTL_READY: u32 = 3222836086;
-pub const VIDIOC_ENUMAUDOUT: u32 = 3224655426;
-pub const VIDIOC_SUBDEV_S_STD: u32 = 2148029976;
-pub const WDIOC_GETTIMELEFT: u32 = 1074026250;
-pub const ATM_GETLINKRATE: u32 = 2148557185;
-pub const RTC_WKALM_SET: u32 = 2150133775;
-pub const VHOST_GET_BACKEND_FEATURES: u32 = 1074310950;
-pub const ATMARP_ENCAP: u32 = 536895973;
-pub const CAPI_GET_FLAGS: u32 = 1074021155;
-pub const IPMICTL_SET_MY_CHANNEL_ADDRESS_CMD: u32 = 1074030872;
-pub const DFL_FPGA_FME_PORT_ASSIGN: u32 = 2147792514;
-pub const NS_GET_OWNER_UID: u32 = 536917764;
-pub const VIDIOC_OVERLAY: u32 = 2147767822;
-pub const BTRFS_IOC_WAIT_SYNC: u32 = 2148045846;
-pub const GPIOHANDLE_SET_CONFIG_IOCTL: u32 = 3226776586;
-pub const VHOST_GET_VRING_ENDIAN: u32 = 2148052756;
-pub const ATM_GETADDR: u32 = 2148557190;
-pub const PHN_GET_REGS: u32 = 3221778434;
-pub const AUTOFS_DEV_IOCTL_REQUESTER: u32 = 3222836091;
-pub const AUTOFS_DEV_IOCTL_EXPIRE: u32 = 3222836092;
-pub const SNAPSHOT_S2RAM: u32 = 536883979;
-pub const JSIOCSAXMAP: u32 = 2151705137;
-pub const F2FS_IOC_SET_COMPRESS_OPTION: u32 = 2147677462;
-pub const VBG_IOCTL_HGCM_DISCONNECT: u32 = 3223082501;
-pub const SCIF_FENCE_SIGNAL: u32 = 3223876369;
-pub const VFIO_DEVICE_GET_PCI_HOT_RESET_INFO: u32 = 536886128;
-pub const VIDIOC_SUBDEV_ENUM_MBUS_CODE: u32 = 3224393218;
-pub const MMTIMER_GETOFFSET: u32 = 536898816;
-pub const RIO_CM_CHAN_LISTEN: u32 = 2147640070;
-pub const ATM_SETSC: u32 = 2147770865;
-pub const F2FS_IOC_SHUTDOWN: u32 = 1074026621;
-pub const NVME_IOCTL_RESCAN: u32 = 536890950;
-pub const BLKOPENZONE: u32 = 2148536966;
-pub const DM_VERSION: u32 = 3241737472;
-pub const CEC_TRANSMIT: u32 = 3224920325;
-pub const FS_IOC_GET_ENCRYPTION_POLICY_EX: u32 = 3221841430;
-pub const SIOCMKCLIP: u32 = 536895968;
-pub const IPMI_BMC_IOCTL_CLEAR_SMS_ATN: u32 = 536916225;
-pub const HIDIOCGVERSION: u32 = 1074022401;
-pub const VIDIOC_S_INPUT: u32 = 3221509671;
-pub const VIDIOC_G_CROP: u32 = 3222558267;
-pub const LIRC_SET_WIDEBAND_RECEIVER: u32 = 2147772707;
-pub const EVIOCGEFFECTS: u32 = 1074021764;
-pub const UVCIOC_CTRL_QUERY: u32 = 3222304033;
-pub const IOC_OPAL_GENERIC_TABLE_RW: u32 = 2167959787;
-pub const FS_IOC_READ_VERITY_METADATA: u32 = 3223873159;
-pub const ND_IOCTL_SET_CONFIG_DATA: u32 = 3221769734;
-pub const USBDEVFS_GETDRIVER: u32 = 2164544776;
-pub const IDT77105_GETSTAT: u32 = 2148557106;
-pub const HIDIOCINITREPORT: u32 = 536889349;
-pub const VFIO_DEVICE_GET_INFO: u32 = 536886123;
-pub const RIO_CM_CHAN_RECEIVE: u32 = 3222299402;
-pub const RNDGETENTCNT: u32 = 1074024960;
-pub const PPPIOCNEWUNIT: u32 = 3221517374;
-pub const BTRFS_IOC_INO_LOOKUP: u32 = 3489698834;
-pub const FDRESET: u32 = 536871508;
-pub const IOC_PR_REGISTER: u32 = 2149085384;
-pub const HIDIOCSREPORT: u32 = 2148288520;
-pub const TEE_IOC_OPEN_SESSION: u32 = 1074832386;
-pub const TEE_IOC_SUPPL_RECV: u32 = 1074832390;
-pub const BTRFS_IOC_BALANCE_CTL: u32 = 2147783713;
-pub const GPIO_GET_LINEINFO_WATCH_IOCTL: u32 = 3225990155;
-pub const HIDIOCGRAWINFO: u32 = 1074284547;
-pub const PPPIOCSCOMPRESS: u32 = 2148561997;
-pub const USBDEVFS_CONNECTINFO: u32 = 2148029713;
-pub const BLKRESETZONE: u32 = 2148536963;
-pub const CHIOINITELEM: u32 = 536896273;
-pub const NILFS_IOCTL_SET_ALLOC_RANGE: u32 = 2148560524;
-pub const AUTOFS_DEV_IOCTL_CATATONIC: u32 = 3222836089;
-pub const RIO_MPORT_MAINT_HDID_SET: u32 = 2147642625;
-pub const PPGETPHASE: u32 = 1074032793;
-pub const USBDEVFS_DISCONNECT_CLAIM: u32 = 1091065115;
-pub const FDMSGON: u32 = 536871493;
-pub const VIDIOC_G_SLICED_VBI_CAP: u32 = 3228849733;
-pub const BTRFS_IOC_BALANCE_V2: u32 = 3288372256;
-pub const MEDIA_REQUEST_IOC_REINIT: u32 = 536902785;
-pub const IOC_OPAL_ERASE_LR: u32 = 2165338342;
-pub const FDFMTBEG: u32 = 536871495;
-pub const RNDRESEEDCRNG: u32 = 536891911;
-pub const ISST_IF_GET_PHY_ID: u32 = 3221814785;
-pub const TUNSETNOCSUM: u32 = 2147767496;
-pub const SONET_GETSTAT: u32 = 1076125968;
-pub const TFD_IOC_SET_TICKS: u32 = 2148029440;
-pub const PPDATADIR: u32 = 2147774608;
-pub const IOC_OPAL_ENABLE_DISABLE_MBR: u32 = 2165338341;
-pub const GPIO_V2_GET_LINE_IOCTL: u32 = 3260068871;
-pub const RIO_CM_CHAN_SEND: u32 = 2148557577;
-pub const PPWCTLONIRQ: u32 = 2147578002;
-pub const SONYPI_IOCGBRT: u32 = 1073837568;
-pub const IOC_PR_RELEASE: u32 = 2148561098;
-pub const PPCLRIRQ: u32 = 1074032787;
-pub const IPMICTL_SET_MY_CHANNEL_LUN_CMD: u32 = 1074030874;
-pub const MGSL_IOCSXSYNC: u32 = 536898835;
-pub const HPET_IE_OFF: u32 = 536897538;
-pub const IOC_OPAL_ACTIVATE_USR: u32 = 2165338337;
-pub const SONET_SETFRAMING: u32 = 2147770645;
-pub const PERF_EVENT_IOC_PAUSE_OUTPUT: u32 = 2147755017;
-pub const BTRFS_IOC_LOGICAL_INO_V2: u32 = 3224933435;
-pub const VBG_IOCTL_HGCM_CONNECT: u32 = 3231471108;
-pub const BLKFINISHZONE: u32 = 2148536968;
-pub const EVIOCREVOKE: u32 = 2147763601;
-pub const VFIO_DEVICE_FEATURE: u32 = 536886133;
-pub const CCISS_GETPCIINFO: u32 = 1074283009;
-pub const ISST_IF_MBOX_COMMAND: u32 = 3221814787;
-pub const SCIF_ACCEPTREQ: u32 = 3222303492;
-pub const PERF_EVENT_IOC_QUERY_BPF: u32 = 3221758986;
-pub const VIDIOC_STREAMOFF: u32 = 2147767827;
-pub const VDUSE_DESTROY_DEV: u32 = 2164293891;
-pub const FDGETFDCSTAT: u32 = 1076363797;
-pub const CM_IOCGATR: u32 = 3221775105;
-pub const VIDIOC_S_PRIORITY: u32 = 2147767876;
-pub const SNAPSHOT_FREEZE: u32 = 536883969;
-pub const VIDIOC_ENUMINPUT: u32 = 3226490394;
-pub const ZATM_GETPOOLZ: u32 = 2148557154;
-pub const RIO_DISABLE_DOORBELL_RANGE: u32 = 2148035850;
-pub const GPIO_V2_GET_LINEINFO_WATCH_IOCTL: u32 = 3238048774;
-pub const VIDIOC_G_STD: u32 = 1074288151;
-pub const USBDEVFS_ALLOW_SUSPEND: u32 = 536892706;
-pub const SONET_GETSTATZ: u32 = 1076125969;
-pub const SCIF_ACCEPTREG: u32 = 3221779205;
-pub const VIDIOC_ENCODER_CMD: u32 = 3223869005;
-pub const PPPIOCSRASYNCMAP: u32 = 2147775572;
-pub const IOCTL_MEI_NOTIFY_SET: u32 = 2147764226;
-pub const BTRFS_IOC_QUOTA_RESCAN_STATUS: u32 = 1077974061;
-pub const F2FS_IOC_GARBAGE_COLLECT: u32 = 2147808518;
-pub const ATMLEC_CTRL: u32 = 536895952;
-pub const MATROXFB_GET_AVAILABLE_OUTPUTS: u32 = 1074294521;
-pub const DM_DEV_CREATE: u32 = 3241737475;
-pub const VHOST_VDPA_GET_VRING_NUM: u32 = 1073917814;
-pub const VIDIOC_G_CTRL: u32 = 3221771803;
-pub const NBD_CLEAR_SOCK: u32 = 536914692;
-pub const VFIO_DEVICE_QUERY_GFX_PLANE: u32 = 536886130;
-pub const WDIOC_KEEPALIVE: u32 = 1074026245;
-pub const NVME_IOCTL_SUBSYS_RESET: u32 = 536890949;
-pub const PTP_EXTTS_REQUEST2: u32 = 2148547851;
-pub const PCITEST_BAR: u32 = 536891393;
-pub const MGSL_IOCGGPIO: u32 = 1074818321;
-pub const EVIOCSREP: u32 = 2148025603;
-pub const VFIO_DEVICE_GET_IRQ_INFO: u32 = 536886125;
-pub const HPET_DPI: u32 = 536897541;
-pub const VDUSE_VQ_SETUP_KICKFD: u32 = 2148040982;
-pub const ND_IOCTL_CALL: u32 = 3225439754;
-pub const HIDIOCGDEVINFO: u32 = 1075595267;
-pub const DM_TABLE_DEPS: u32 = 3241737483;
-pub const BTRFS_IOC_DEV_INFO: u32 = 3489698846;
-pub const VDUSE_IOTLB_GET_FD: u32 = 3223355664;
-pub const FW_CDEV_IOC_GET_INFO: u32 = 3223855872;
-pub const VIDIOC_G_PRIORITY: u32 = 1074026051;
-pub const ATM_NEWBACKENDIF: u32 = 2147639795;
-pub const VIDIOC_S_EXT_CTRLS: u32 = 3223344712;
-pub const VIDIOC_SUBDEV_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const VIDIOC_OMAP3ISP_CCDC_CFG: u32 = 3224917697;
-pub const VIDIOC_S_HW_FREQ_SEEK: u32 = 2150651474;
-pub const DM_TABLE_LOAD: u32 = 3241737481;
-pub const F2FS_IOC_START_ATOMIC_WRITE: u32 = 536933633;
-pub const VIDIOC_G_OUTPUT: u32 = 1074026030;
-pub const ATM_DROPPARTY: u32 = 2147770869;
-pub const CHIOGELEM: u32 = 2154586896;
-pub const BTRFS_IOC_GET_SUPPORTED_FEATURES: u32 = 1078498361;
-pub const EVIOCSKEYCODE: u32 = 2148025604;
-pub const NE_GET_IMAGE_LOAD_INFO: u32 = 3222318626;
-pub const TUNSETLINK: u32 = 2147767501;
-pub const FW_CDEV_IOC_ADD_DESCRIPTOR: u32 = 3222807302;
-pub const BTRFS_IOC_SCRUB_CANCEL: u32 = 536908828;
-pub const PPS_SETPARAMS: u32 = 2148036770;
-pub const IOC_OPAL_LR_SETUP: u32 = 2166911203;
-pub const FW_CDEV_IOC_DEALLOCATE: u32 = 2147754755;
-pub const WDIOC_SETTIMEOUT: u32 = 3221509894;
-pub const IOC_WATCH_QUEUE_SET_FILTER: u32 = 536893281;
-pub const CAPI_GET_MANUFACTURER: u32 = 3221504774;
-pub const VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY: u32 = 536886134;
-pub const ASPEED_P2A_CTRL_IOCTL_SET_WINDOW: u32 = 2148578048;
-pub const VIDIOC_G_EDID: u32 = 3223868968;
-pub const F2FS_IOC_GARBAGE_COLLECT_RANGE: u32 = 2149119243;
-pub const RIO_MAP_INBOUND: u32 = 3223874833;
-pub const IOC_OPAL_TAKE_OWNERSHIP: u32 = 2164814046;
-pub const USBDEVFS_CLAIM_PORT: u32 = 1074025752;
-pub const VIDIOC_S_AUDIO: u32 = 2150913570;
-pub const FS_IOC_GET_ENCRYPTION_NONCE: u32 = 1074816539;
-pub const FW_CDEV_IOC_SEND_STREAM_PACKET: u32 = 2150114067;
-pub const BTRFS_IOC_SNAP_DESTROY: u32 = 2415957007;
-pub const SNAPSHOT_FREE: u32 = 536883973;
-pub const I8K_GET_SPEED: u32 = 3221776773;
-pub const HIDIOCGREPORT: u32 = 2148288519;
-pub const HPET_EPI: u32 = 536897540;
-pub const JSIOCSCORR: u32 = 2149870113;
-pub const IOC_PR_PREEMPT_ABORT: u32 = 2149085388;
-pub const RIO_MAP_OUTBOUND: u32 = 3223874831;
-pub const ATM_SETESI: u32 = 2148557196;
-pub const FW_CDEV_IOC_START_ISO: u32 = 2148541194;
-pub const ATM_DELADDR: u32 = 2148557193;
-pub const PPFCONTROL: u32 = 2147643534;
-pub const SONYPI_IOCGFAN: u32 = 1073837578;
-pub const RTC_IRQP_SET: u32 = 2148036620;
-pub const PCITEST_WRITE: u32 = 2148028420;
-pub const PPCLAIM: u32 = 536899723;
-pub const VIDIOC_S_JPEGCOMP: u32 = 2156680766;
-pub const IPMICTL_UNREGISTER_FOR_CMD: u32 = 1073899791;
-pub const VHOST_SET_FEATURES: u32 = 2148052736;
-pub const TOSHIBA_ACPI_SCI: u32 = 3222828177;
-pub const VIDIOC_DQBUF: u32 = 3227014673;
-pub const BTRFS_IOC_BALANCE_PROGRESS: u32 = 1140888610;
-pub const BTRFS_IOC_SUBVOL_SETFLAGS: u32 = 2148045850;
-pub const ATMLEC_MCAST: u32 = 536895954;
-pub const MMTIMER_GETFREQ: u32 = 1074294018;
-pub const VIDIOC_G_SELECTION: u32 = 3225441886;
-pub const RTC_ALM_SET: u32 = 2149871623;
-pub const PPPOEIOCSFWD: u32 = 2148053248;
-pub const IPMICTL_GET_MAINTENANCE_MODE_CMD: u32 = 1074030878;
-pub const FS_IOC_ENABLE_VERITY: u32 = 2155898501;
-pub const NILFS_IOCTL_GET_BDESCS: u32 = 3222826631;
-pub const FDFMTEND: u32 = 536871497;
-pub const DMA_BUF_SET_NAME: u32 = 2148033025;
-pub const UI_BEGIN_FF_UPLOAD: u32 = 3228063176;
-pub const RTC_UIE_ON: u32 = 536899587;
-pub const PPRELEASE: u32 = 536899724;
-pub const VFIO_IOMMU_UNMAP_DMA: u32 = 536886130;
-pub const VIDIOC_OMAP3ISP_PRV_CFG: u32 = 3228587714;
-pub const GPIO_GET_LINEHANDLE_IOCTL: u32 = 3245126659;
-pub const VFAT_IOCTL_READDIR_BOTH: u32 = 1110471169;
-pub const NVME_IOCTL_ADMIN_CMD: u32 = 3225964097;
-pub const VHOST_SET_VRING_KICK: u32 = 2148052768;
-pub const BTRFS_IOC_SUBVOL_CREATE_V2: u32 = 2415957016;
-pub const BTRFS_IOC_SNAP_CREATE: u32 = 2415956993;
-pub const SONYPI_IOCGBAT2CAP: u32 = 1073903108;
-pub const PPNEGOT: u32 = 2147774609;
-pub const NBD_PRINT_DEBUG: u32 = 536914694;
-pub const BTRFS_IOC_INO_LOOKUP_USER: u32 = 3489698878;
-pub const BTRFS_IOC_GET_SUBVOL_ROOTREF: u32 = 3489698877;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS: u32 = 3225445913;
-pub const BTRFS_IOC_FS_INFO: u32 = 1140888607;
-pub const VIDIOC_ENUM_FMT: u32 = 3225441794;
-pub const VIDIOC_G_INPUT: u32 = 1074026022;
-pub const VTPM_PROXY_IOC_NEW_DEV: u32 = 3222577408;
-pub const DFL_FPGA_FME_ERR_GET_IRQ_NUM: u32 = 1074050691;
-pub const ND_IOCTL_DIMM_FLAGS: u32 = 3221769731;
-pub const BTRFS_IOC_QUOTA_RESCAN: u32 = 2151715884;
-pub const MMTIMER_GETCOUNTER: u32 = 1074294025;
-pub const MATROXFB_GET_OUTPUT_MODE: u32 = 3221778170;
-pub const BTRFS_IOC_QUOTA_RESCAN_WAIT: u32 = 536908846;
-pub const RIO_CM_CHAN_BIND: u32 = 2148033285;
-pub const HIDIOCGRDESC: u32 = 1342457858;
-pub const MGSL_IOCGIF: u32 = 536898827;
-pub const VIDIOC_S_OUTPUT: u32 = 3221509679;
-pub const HIDIOCGREPORTINFO: u32 = 3222030345;
-pub const WDIOC_GETBOOTSTATUS: u32 = 1074026242;
-pub const VDUSE_VQ_GET_INFO: u32 = 3224404245;
-pub const ACRN_IOCTL_ASSIGN_PCIDEV: u32 = 2149884501;
-pub const BLKGETDISKSEQ: u32 = 1074270848;
-pub const ACRN_IOCTL_PM_GET_CPU_STATE: u32 = 3221791328;
-pub const ACRN_IOCTL_DESTROY_VM: u32 = 536912401;
-pub const ACRN_IOCTL_SET_PTDEV_INTR: u32 = 2148835923;
-pub const ACRN_IOCTL_CREATE_IOREQ_CLIENT: u32 = 536912434;
-pub const ACRN_IOCTL_IRQFD: u32 = 2149098097;
-pub const ACRN_IOCTL_CREATE_VM: u32 = 3224412688;
-pub const ACRN_IOCTL_INJECT_MSI: u32 = 2148573731;
-pub const ACRN_IOCTL_ATTACH_IOREQ_CLIENT: u32 = 536912435;
-pub const ACRN_IOCTL_RESET_PTDEV_INTR: u32 = 2148835924;
-pub const ACRN_IOCTL_NOTIFY_REQUEST_FINISH: u32 = 2148049457;
-pub const ACRN_IOCTL_SET_IRQLINE: u32 = 2148049445;
-pub const ACRN_IOCTL_START_VM: u32 = 536912402;
-pub const ACRN_IOCTL_SET_VCPU_REGS: u32 = 2166923798;
-pub const ACRN_IOCTL_SET_MEMSEG: u32 = 2149622337;
-pub const ACRN_IOCTL_PAUSE_VM: u32 = 536912403;
-pub const ACRN_IOCTL_CLEAR_VM_IOREQ: u32 = 536912437;
-pub const ACRN_IOCTL_UNSET_MEMSEG: u32 = 2149622338;
-pub const ACRN_IOCTL_IOEVENTFD: u32 = 2149622384;
-pub const ACRN_IOCTL_DEASSIGN_PCIDEV: u32 = 2149884502;
-pub const ACRN_IOCTL_RESET_VM: u32 = 536912405;
-pub const ACRN_IOCTL_DESTROY_IOREQ_CLIENT: u32 = 536912436;
-pub const ACRN_IOCTL_VM_INTR_MONITOR: u32 = 2148049444;
diff --git a/vendor/linux-raw-sys-0.3.2/src/powerpc/netlink.rs b/vendor/linux-raw-sys-0.3.2/src/powerpc/netlink.rs
deleted file mode 100644
index a2e81973e..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/powerpc/netlink.rs
+++ /dev/null
@@ -1,2867 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const __BITS_PER_LONG: u32 = 32;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const NETLINK_ROUTE: u32 = 0;
-pub const NETLINK_UNUSED: u32 = 1;
-pub const NETLINK_USERSOCK: u32 = 2;
-pub const NETLINK_FIREWALL: u32 = 3;
-pub const NETLINK_SOCK_DIAG: u32 = 4;
-pub const NETLINK_NFLOG: u32 = 5;
-pub const NETLINK_XFRM: u32 = 6;
-pub const NETLINK_SELINUX: u32 = 7;
-pub const NETLINK_ISCSI: u32 = 8;
-pub const NETLINK_AUDIT: u32 = 9;
-pub const NETLINK_FIB_LOOKUP: u32 = 10;
-pub const NETLINK_CONNECTOR: u32 = 11;
-pub const NETLINK_NETFILTER: u32 = 12;
-pub const NETLINK_IP6_FW: u32 = 13;
-pub const NETLINK_DNRTMSG: u32 = 14;
-pub const NETLINK_KOBJECT_UEVENT: u32 = 15;
-pub const NETLINK_GENERIC: u32 = 16;
-pub const NETLINK_SCSITRANSPORT: u32 = 18;
-pub const NETLINK_ECRYPTFS: u32 = 19;
-pub const NETLINK_RDMA: u32 = 20;
-pub const NETLINK_CRYPTO: u32 = 21;
-pub const NETLINK_SMC: u32 = 22;
-pub const NETLINK_INET_DIAG: u32 = 4;
-pub const MAX_LINKS: u32 = 32;
-pub const NLM_F_REQUEST: u32 = 1;
-pub const NLM_F_MULTI: u32 = 2;
-pub const NLM_F_ACK: u32 = 4;
-pub const NLM_F_ECHO: u32 = 8;
-pub const NLM_F_DUMP_INTR: u32 = 16;
-pub const NLM_F_DUMP_FILTERED: u32 = 32;
-pub const NLM_F_ROOT: u32 = 256;
-pub const NLM_F_MATCH: u32 = 512;
-pub const NLM_F_ATOMIC: u32 = 1024;
-pub const NLM_F_DUMP: u32 = 768;
-pub const NLM_F_REPLACE: u32 = 256;
-pub const NLM_F_EXCL: u32 = 512;
-pub const NLM_F_CREATE: u32 = 1024;
-pub const NLM_F_APPEND: u32 = 2048;
-pub const NLM_F_NONREC: u32 = 256;
-pub const NLM_F_BULK: u32 = 512;
-pub const NLM_F_CAPPED: u32 = 256;
-pub const NLM_F_ACK_TLVS: u32 = 512;
-pub const NLMSG_ALIGNTO: u32 = 4;
-pub const NLMSG_NOOP: u32 = 1;
-pub const NLMSG_ERROR: u32 = 2;
-pub const NLMSG_DONE: u32 = 3;
-pub const NLMSG_OVERRUN: u32 = 4;
-pub const NLMSG_MIN_TYPE: u32 = 16;
-pub const NETLINK_ADD_MEMBERSHIP: u32 = 1;
-pub const NETLINK_DROP_MEMBERSHIP: u32 = 2;
-pub const NETLINK_PKTINFO: u32 = 3;
-pub const NETLINK_BROADCAST_ERROR: u32 = 4;
-pub const NETLINK_NO_ENOBUFS: u32 = 5;
-pub const NETLINK_RX_RING: u32 = 6;
-pub const NETLINK_TX_RING: u32 = 7;
-pub const NETLINK_LISTEN_ALL_NSID: u32 = 8;
-pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9;
-pub const NETLINK_CAP_ACK: u32 = 10;
-pub const NETLINK_EXT_ACK: u32 = 11;
-pub const NETLINK_GET_STRICT_CHK: u32 = 12;
-pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4;
-pub const NET_MAJOR: u32 = 36;
-pub const NLA_F_NESTED: u32 = 32768;
-pub const NLA_F_NET_BYTEORDER: u32 = 16384;
-pub const NLA_TYPE_MASK: i32 = -49153;
-pub const NLA_ALIGNTO: u32 = 4;
-pub const MACVLAN_FLAG_NOPROMISC: u32 = 1;
-pub const MACVLAN_FLAG_NODST: u32 = 2;
-pub const IPVLAN_F_PRIVATE: u32 = 1;
-pub const IPVLAN_F_VEPA: u32 = 2;
-pub const TUNNEL_MSG_FLAG_STATS: u32 = 1;
-pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1;
-pub const MAX_VLAN_LIST_LEN: u32 = 1;
-pub const PORT_PROFILE_MAX: u32 = 40;
-pub const PORT_UUID_MAX: u32 = 16;
-pub const PORT_SELF_VF: i32 = -1;
-pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1;
-pub const XDP_FLAGS_SKB_MODE: u32 = 2;
-pub const XDP_FLAGS_DRV_MODE: u32 = 4;
-pub const XDP_FLAGS_HW_MODE: u32 = 8;
-pub const XDP_FLAGS_REPLACE: u32 = 16;
-pub const XDP_FLAGS_MODES: u32 = 14;
-pub const XDP_FLAGS_MASK: u32 = 31;
-pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1;
-pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32;
-pub const IFA_F_SECONDARY: u32 = 1;
-pub const IFA_F_TEMPORARY: u32 = 1;
-pub const IFA_F_NODAD: u32 = 2;
-pub const IFA_F_OPTIMISTIC: u32 = 4;
-pub const IFA_F_DADFAILED: u32 = 8;
-pub const IFA_F_HOMEADDRESS: u32 = 16;
-pub const IFA_F_DEPRECATED: u32 = 32;
-pub const IFA_F_TENTATIVE: u32 = 64;
-pub const IFA_F_PERMANENT: u32 = 128;
-pub const IFA_F_MANAGETEMPADDR: u32 = 256;
-pub const IFA_F_NOPREFIXROUTE: u32 = 512;
-pub const IFA_F_MCAUTOJOIN: u32 = 1024;
-pub const IFA_F_STABLE_PRIVACY: u32 = 2048;
-pub const IFAPROT_UNSPEC: u32 = 0;
-pub const IFAPROT_KERNEL_LO: u32 = 1;
-pub const IFAPROT_KERNEL_RA: u32 = 2;
-pub const IFAPROT_KERNEL_LL: u32 = 3;
-pub const NTF_USE: u32 = 1;
-pub const NTF_SELF: u32 = 2;
-pub const NTF_MASTER: u32 = 4;
-pub const NTF_PROXY: u32 = 8;
-pub const NTF_EXT_LEARNED: u32 = 16;
-pub const NTF_OFFLOADED: u32 = 32;
-pub const NTF_STICKY: u32 = 64;
-pub const NTF_ROUTER: u32 = 128;
-pub const NTF_EXT_MANAGED: u32 = 1;
-pub const NTF_EXT_LOCKED: u32 = 2;
-pub const NUD_INCOMPLETE: u32 = 1;
-pub const NUD_REACHABLE: u32 = 2;
-pub const NUD_STALE: u32 = 4;
-pub const NUD_DELAY: u32 = 8;
-pub const NUD_PROBE: u32 = 16;
-pub const NUD_FAILED: u32 = 32;
-pub const NUD_NOARP: u32 = 64;
-pub const NUD_PERMANENT: u32 = 128;
-pub const NUD_NONE: u32 = 0;
-pub const RTNL_FAMILY_IPMR: u32 = 128;
-pub const RTNL_FAMILY_IP6MR: u32 = 129;
-pub const RTNL_FAMILY_MAX: u32 = 129;
-pub const RTA_ALIGNTO: u32 = 4;
-pub const RTPROT_UNSPEC: u32 = 0;
-pub const RTPROT_REDIRECT: u32 = 1;
-pub const RTPROT_KERNEL: u32 = 2;
-pub const RTPROT_BOOT: u32 = 3;
-pub const RTPROT_STATIC: u32 = 4;
-pub const RTPROT_GATED: u32 = 8;
-pub const RTPROT_RA: u32 = 9;
-pub const RTPROT_MRT: u32 = 10;
-pub const RTPROT_ZEBRA: u32 = 11;
-pub const RTPROT_BIRD: u32 = 12;
-pub const RTPROT_DNROUTED: u32 = 13;
-pub const RTPROT_XORP: u32 = 14;
-pub const RTPROT_NTK: u32 = 15;
-pub const RTPROT_DHCP: u32 = 16;
-pub const RTPROT_MROUTED: u32 = 17;
-pub const RTPROT_KEEPALIVED: u32 = 18;
-pub const RTPROT_BABEL: u32 = 42;
-pub const RTPROT_OPENR: u32 = 99;
-pub const RTPROT_BGP: u32 = 186;
-pub const RTPROT_ISIS: u32 = 187;
-pub const RTPROT_OSPF: u32 = 188;
-pub const RTPROT_RIP: u32 = 189;
-pub const RTPROT_EIGRP: u32 = 192;
-pub const RTM_F_NOTIFY: u32 = 256;
-pub const RTM_F_CLONED: u32 = 512;
-pub const RTM_F_EQUALIZE: u32 = 1024;
-pub const RTM_F_PREFIX: u32 = 2048;
-pub const RTM_F_LOOKUP_TABLE: u32 = 4096;
-pub const RTM_F_FIB_MATCH: u32 = 8192;
-pub const RTM_F_OFFLOAD: u32 = 16384;
-pub const RTM_F_TRAP: u32 = 32768;
-pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912;
-pub const RTNH_F_DEAD: u32 = 1;
-pub const RTNH_F_PERVASIVE: u32 = 2;
-pub const RTNH_F_ONLINK: u32 = 4;
-pub const RTNH_F_OFFLOAD: u32 = 8;
-pub const RTNH_F_LINKDOWN: u32 = 16;
-pub const RTNH_F_UNRESOLVED: u32 = 32;
-pub const RTNH_F_TRAP: u32 = 64;
-pub const RTNH_COMPARE_MASK: u32 = 89;
-pub const RTNH_ALIGNTO: u32 = 4;
-pub const RTNETLINK_HAVE_PEERINFO: u32 = 1;
-pub const RTAX_FEATURE_ECN: u32 = 1;
-pub const RTAX_FEATURE_SACK: u32 = 2;
-pub const RTAX_FEATURE_TIMESTAMP: u32 = 4;
-pub const RTAX_FEATURE_ALLFRAG: u32 = 8;
-pub const RTAX_FEATURE_MASK: u32 = 15;
-pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295;
-pub const TCA_DUMP_FLAGS_TERSE: u32 = 1;
-pub const RTMGRP_LINK: u32 = 1;
-pub const RTMGRP_NOTIFY: u32 = 2;
-pub const RTMGRP_NEIGH: u32 = 4;
-pub const RTMGRP_TC: u32 = 8;
-pub const RTMGRP_IPV4_IFADDR: u32 = 16;
-pub const RTMGRP_IPV4_MROUTE: u32 = 32;
-pub const RTMGRP_IPV4_ROUTE: u32 = 64;
-pub const RTMGRP_IPV4_RULE: u32 = 128;
-pub const RTMGRP_IPV6_IFADDR: u32 = 256;
-pub const RTMGRP_IPV6_MROUTE: u32 = 512;
-pub const RTMGRP_IPV6_ROUTE: u32 = 1024;
-pub const RTMGRP_IPV6_IFINFO: u32 = 2048;
-pub const RTMGRP_DECnet_IFADDR: u32 = 4096;
-pub const RTMGRP_DECnet_ROUTE: u32 = 16384;
-pub const RTMGRP_IPV6_PREFIX: u32 = 131072;
-pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2;
-pub const RTEXT_FILTER_VF: u32 = 1;
-pub const RTEXT_FILTER_BRVLAN: u32 = 2;
-pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4;
-pub const RTEXT_FILTER_SKIP_STATS: u32 = 8;
-pub const RTEXT_FILTER_MRP: u32 = 16;
-pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32;
-pub const RTEXT_FILTER_CFM_STATUS: u32 = 64;
-pub const RTEXT_FILTER_MST: u32 = 128;
-pub type size_t = crate::ctypes::c_uint;
-pub type ssize_t = crate::ctypes::c_int;
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[repr(align(16))]
-#[derive(Debug, Copy, Clone)]
-pub struct __vector128 {
-pub u: [__u32; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 32usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_short;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_uid_t = __kernel_uid_t;
-pub type __kernel_old_gid_t = __kernel_gid_t;
-pub type __kernel_old_dev_t = crate::ctypes::c_uint;
-pub type __kernel_size_t = crate::ctypes::c_uint;
-pub type __kernel_ssize_t = crate::ctypes::c_int;
-pub type __kernel_ptrdiff_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_nl {
-pub nl_family: __kernel_sa_family_t,
-pub nl_pad: crate::ctypes::c_ushort,
-pub nl_pid: __u32,
-pub nl_groups: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsghdr {
-pub nlmsg_len: __u32,
-pub nlmsg_type: __u16,
-pub nlmsg_flags: __u16,
-pub nlmsg_seq: __u32,
-pub nlmsg_pid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsgerr {
-pub error: crate::ctypes::c_int,
-pub msg: nlmsghdr,
-}
-impl nlmsgerr_attrs {
-pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nlmsgerr_attrs {
-NLMSGERR_ATTR_UNUSED = 0,
-NLMSGERR_ATTR_MSG = 1,
-NLMSGERR_ATTR_OFFS = 2,
-NLMSGERR_ATTR_COOKIE = 3,
-NLMSGERR_ATTR_POLICY = 4,
-NLMSGERR_ATTR_MISS_TYPE = 5,
-NLMSGERR_ATTR_MISS_NEST = 6,
-__NLMSGERR_ATTR_MAX = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_pktinfo {
-pub group: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_req {
-pub nm_block_size: crate::ctypes::c_uint,
-pub nm_block_nr: crate::ctypes::c_uint,
-pub nm_frame_size: crate::ctypes::c_uint,
-pub nm_frame_nr: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_hdr {
-pub nm_status: crate::ctypes::c_uint,
-pub nm_len: crate::ctypes::c_uint,
-pub nm_group: __u32,
-pub nm_pid: __u32,
-pub nm_uid: __u32,
-pub nm_gid: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nl_mmap_status {
-NL_MMAP_STATUS_UNUSED = 0,
-NL_MMAP_STATUS_RESERVED = 1,
-NL_MMAP_STATUS_VALID = 2,
-NL_MMAP_STATUS_COPY = 3,
-NL_MMAP_STATUS_SKIP = 4,
-}
-pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED;
-pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-NETLINK_UNCONNECTED = 0,
-NETLINK_CONNECTED = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlattr {
-pub nla_len: __u16,
-pub nla_type: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nla_bitfield32 {
-pub value: __u32,
-pub selector: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_attribute_type {
-NL_ATTR_TYPE_INVALID = 0,
-NL_ATTR_TYPE_FLAG = 1,
-NL_ATTR_TYPE_U8 = 2,
-NL_ATTR_TYPE_U16 = 3,
-NL_ATTR_TYPE_U32 = 4,
-NL_ATTR_TYPE_U64 = 5,
-NL_ATTR_TYPE_S8 = 6,
-NL_ATTR_TYPE_S16 = 7,
-NL_ATTR_TYPE_S32 = 8,
-NL_ATTR_TYPE_S64 = 9,
-NL_ATTR_TYPE_BINARY = 10,
-NL_ATTR_TYPE_STRING = 11,
-NL_ATTR_TYPE_NUL_STRING = 12,
-NL_ATTR_TYPE_NESTED = 13,
-NL_ATTR_TYPE_NESTED_ARRAY = 14,
-NL_ATTR_TYPE_BITFIELD32 = 15,
-}
-impl netlink_policy_type_attr {
-pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_policy_type_attr {
-NL_POLICY_TYPE_ATTR_UNSPEC = 0,
-NL_POLICY_TYPE_ATTR_TYPE = 1,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5,
-NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6,
-NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7,
-NL_POLICY_TYPE_ATTR_POLICY_IDX = 8,
-NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9,
-NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10,
-NL_POLICY_TYPE_ATTR_PAD = 11,
-NL_POLICY_TYPE_ATTR_MASK = 12,
-__NL_POLICY_TYPE_ATTR_MAX = 13,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats {
-pub rx_packets: __u32,
-pub tx_packets: __u32,
-pub rx_bytes: __u32,
-pub tx_bytes: __u32,
-pub rx_errors: __u32,
-pub tx_errors: __u32,
-pub rx_dropped: __u32,
-pub tx_dropped: __u32,
-pub multicast: __u32,
-pub collisions: __u32,
-pub rx_length_errors: __u32,
-pub rx_over_errors: __u32,
-pub rx_crc_errors: __u32,
-pub rx_frame_errors: __u32,
-pub rx_fifo_errors: __u32,
-pub rx_missed_errors: __u32,
-pub tx_aborted_errors: __u32,
-pub tx_carrier_errors: __u32,
-pub tx_fifo_errors: __u32,
-pub tx_heartbeat_errors: __u32,
-pub tx_window_errors: __u32,
-pub rx_compressed: __u32,
-pub tx_compressed: __u32,
-pub rx_nohandler: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-pub collisions: __u64,
-pub rx_length_errors: __u64,
-pub rx_over_errors: __u64,
-pub rx_crc_errors: __u64,
-pub rx_frame_errors: __u64,
-pub rx_fifo_errors: __u64,
-pub rx_missed_errors: __u64,
-pub tx_aborted_errors: __u64,
-pub tx_carrier_errors: __u64,
-pub tx_fifo_errors: __u64,
-pub tx_heartbeat_errors: __u64,
-pub tx_window_errors: __u64,
-pub rx_compressed: __u64,
-pub tx_compressed: __u64,
-pub rx_nohandler: __u64,
-pub rx_otherhost_dropped: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_hw_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_ifmap {
-pub mem_start: __u64,
-pub mem_end: __u64,
-pub base_addr: __u64,
-pub irq: __u16,
-pub dma: __u8,
-pub port: __u8,
-}
-pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC;
-pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS;
-pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST;
-pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME;
-pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU;
-pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK;
-pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC;
-pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS;
-pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST;
-pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY;
-pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER;
-pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS;
-pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO;
-pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN;
-pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP;
-pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT;
-pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE;
-pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE;
-pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO;
-pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID;
-pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS;
-pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF;
-pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST;
-pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64;
-pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS;
-pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF;
-pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC;
-pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP;
-pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD;
-pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK;
-pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY;
-pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES;
-pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES;
-pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER;
-pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID;
-pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES;
-pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID;
-pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID;
-pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME;
-pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN;
-pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS;
-pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE;
-pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD;
-pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP;
-pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT;
-pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID;
-pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT;
-pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT;
-pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX;
-pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU;
-pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU;
-pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST;
-pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME;
-pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS;
-pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON;
-pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME;
-pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME;
-pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS;
-pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI;
-pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT;
-pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IFLA_UNSPEC = 0,
-IFLA_ADDRESS = 1,
-IFLA_BROADCAST = 2,
-IFLA_IFNAME = 3,
-IFLA_MTU = 4,
-IFLA_LINK = 5,
-IFLA_QDISC = 6,
-IFLA_STATS = 7,
-IFLA_COST = 8,
-IFLA_PRIORITY = 9,
-IFLA_MASTER = 10,
-IFLA_WIRELESS = 11,
-IFLA_PROTINFO = 12,
-IFLA_TXQLEN = 13,
-IFLA_MAP = 14,
-IFLA_WEIGHT = 15,
-IFLA_OPERSTATE = 16,
-IFLA_LINKMODE = 17,
-IFLA_LINKINFO = 18,
-IFLA_NET_NS_PID = 19,
-IFLA_IFALIAS = 20,
-IFLA_NUM_VF = 21,
-IFLA_VFINFO_LIST = 22,
-IFLA_STATS64 = 23,
-IFLA_VF_PORTS = 24,
-IFLA_PORT_SELF = 25,
-IFLA_AF_SPEC = 26,
-IFLA_GROUP = 27,
-IFLA_NET_NS_FD = 28,
-IFLA_EXT_MASK = 29,
-IFLA_PROMISCUITY = 30,
-IFLA_NUM_TX_QUEUES = 31,
-IFLA_NUM_RX_QUEUES = 32,
-IFLA_CARRIER = 33,
-IFLA_PHYS_PORT_ID = 34,
-IFLA_CARRIER_CHANGES = 35,
-IFLA_PHYS_SWITCH_ID = 36,
-IFLA_LINK_NETNSID = 37,
-IFLA_PHYS_PORT_NAME = 38,
-IFLA_PROTO_DOWN = 39,
-IFLA_GSO_MAX_SEGS = 40,
-IFLA_GSO_MAX_SIZE = 41,
-IFLA_PAD = 42,
-IFLA_XDP = 43,
-IFLA_EVENT = 44,
-IFLA_NEW_NETNSID = 45,
-IFLA_IF_NETNSID = 46,
-IFLA_CARRIER_UP_COUNT = 47,
-IFLA_CARRIER_DOWN_COUNT = 48,
-IFLA_NEW_IFINDEX = 49,
-IFLA_MIN_MTU = 50,
-IFLA_MAX_MTU = 51,
-IFLA_PROP_LIST = 52,
-IFLA_ALT_IFNAME = 53,
-IFLA_PERM_ADDRESS = 54,
-IFLA_PROTO_DOWN_REASON = 55,
-IFLA_PARENT_DEV_NAME = 56,
-IFLA_PARENT_DEV_BUS_NAME = 57,
-IFLA_GRO_MAX_SIZE = 58,
-IFLA_TSO_MAX_SIZE = 59,
-IFLA_TSO_MAX_SEGS = 60,
-IFLA_ALLMULTI = 61,
-IFLA_DEVLINK_PORT = 62,
-__IFLA_MAX = 63,
-}
-pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC;
-pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK;
-pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT;
-pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-IFLA_PROTO_DOWN_REASON_UNSPEC = 0,
-IFLA_PROTO_DOWN_REASON_MASK = 1,
-IFLA_PROTO_DOWN_REASON_VALUE = 2,
-__IFLA_PROTO_DOWN_REASON_CNT = 3,
-}
-pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC;
-pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF;
-pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-IFLA_INET_UNSPEC = 0,
-IFLA_INET_CONF = 1,
-__IFLA_INET_MAX = 2,
-}
-pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC;
-pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS;
-pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF;
-pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS;
-pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST;
-pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO;
-pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS;
-pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN;
-pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE;
-pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU;
-pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-IFLA_INET6_UNSPEC = 0,
-IFLA_INET6_FLAGS = 1,
-IFLA_INET6_CONF = 2,
-IFLA_INET6_STATS = 3,
-IFLA_INET6_MCAST = 4,
-IFLA_INET6_CACHEINFO = 5,
-IFLA_INET6_ICMP6STATS = 6,
-IFLA_INET6_TOKEN = 7,
-IFLA_INET6_ADDR_GEN_MODE = 8,
-IFLA_INET6_RA_MTU = 9,
-__IFLA_INET6_MAX = 10,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum in6_addr_gen_mode {
-IN6_ADDR_GEN_MODE_EUI64 = 0,
-IN6_ADDR_GEN_MODE_NONE = 1,
-IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2,
-IN6_ADDR_GEN_MODE_RANDOM = 3,
-}
-pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC;
-pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY;
-pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME;
-pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE;
-pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME;
-pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE;
-pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY;
-pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING;
-pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL;
-pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK;
-pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID;
-pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID;
-pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT;
-pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST;
-pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE;
-pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED;
-pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER;
-pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER;
-pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER;
-pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER;
-pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR;
-pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH;
-pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER;
-pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING;
-pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR;
-pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER;
-pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY;
-pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX;
-pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT;
-pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL;
-pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL;
-pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL;
-pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL;
-pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL;
-pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES;
-pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES;
-pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES;
-pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID;
-pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD;
-pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED;
-pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED;
-pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION;
-pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION;
-pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT;
-pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT;
-pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE;
-pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-IFLA_BR_UNSPEC = 0,
-IFLA_BR_FORWARD_DELAY = 1,
-IFLA_BR_HELLO_TIME = 2,
-IFLA_BR_MAX_AGE = 3,
-IFLA_BR_AGEING_TIME = 4,
-IFLA_BR_STP_STATE = 5,
-IFLA_BR_PRIORITY = 6,
-IFLA_BR_VLAN_FILTERING = 7,
-IFLA_BR_VLAN_PROTOCOL = 8,
-IFLA_BR_GROUP_FWD_MASK = 9,
-IFLA_BR_ROOT_ID = 10,
-IFLA_BR_BRIDGE_ID = 11,
-IFLA_BR_ROOT_PORT = 12,
-IFLA_BR_ROOT_PATH_COST = 13,
-IFLA_BR_TOPOLOGY_CHANGE = 14,
-IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 15,
-IFLA_BR_HELLO_TIMER = 16,
-IFLA_BR_TCN_TIMER = 17,
-IFLA_BR_TOPOLOGY_CHANGE_TIMER = 18,
-IFLA_BR_GC_TIMER = 19,
-IFLA_BR_GROUP_ADDR = 20,
-IFLA_BR_FDB_FLUSH = 21,
-IFLA_BR_MCAST_ROUTER = 22,
-IFLA_BR_MCAST_SNOOPING = 23,
-IFLA_BR_MCAST_QUERY_USE_IFADDR = 24,
-IFLA_BR_MCAST_QUERIER = 25,
-IFLA_BR_MCAST_HASH_ELASTICITY = 26,
-IFLA_BR_MCAST_HASH_MAX = 27,
-IFLA_BR_MCAST_LAST_MEMBER_CNT = 28,
-IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29,
-IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30,
-IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31,
-IFLA_BR_MCAST_QUERIER_INTVL = 32,
-IFLA_BR_MCAST_QUERY_INTVL = 33,
-IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34,
-IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35,
-IFLA_BR_NF_CALL_IPTABLES = 36,
-IFLA_BR_NF_CALL_IP6TABLES = 37,
-IFLA_BR_NF_CALL_ARPTABLES = 38,
-IFLA_BR_VLAN_DEFAULT_PVID = 39,
-IFLA_BR_PAD = 40,
-IFLA_BR_VLAN_STATS_ENABLED = 41,
-IFLA_BR_MCAST_STATS_ENABLED = 42,
-IFLA_BR_MCAST_IGMP_VERSION = 43,
-IFLA_BR_MCAST_MLD_VERSION = 44,
-IFLA_BR_VLAN_STATS_PER_PORT = 45,
-IFLA_BR_MULTI_BOOLOPT = 46,
-IFLA_BR_MCAST_QUERIER_STATE = 47,
-__IFLA_BR_MAX = 48,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_bridge_id {
-pub prio: [__u8; 2usize],
-pub addr: [__u8; 6usize],
-}
-pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC;
-pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-BRIDGE_MODE_UNSPEC = 0,
-BRIDGE_MODE_HAIRPIN = 1,
-}
-pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC;
-pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE;
-pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY;
-pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST;
-pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE;
-pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD;
-pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT;
-pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE;
-pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING;
-pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD;
-pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP;
-pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC;
-pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI;
-pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID;
-pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID;
-pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT;
-pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST;
-pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID;
-pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO;
-pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK;
-pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING;
-pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER;
-pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER;
-pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER;
-pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH;
-pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER;
-pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD;
-pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD;
-pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST;
-pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL;
-pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD;
-pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK;
-pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS;
-pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED;
-pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT;
-pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN;
-pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT;
-pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED;
-pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB;
-pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IFLA_BRPORT_UNSPEC = 0,
-IFLA_BRPORT_STATE = 1,
-IFLA_BRPORT_PRIORITY = 2,
-IFLA_BRPORT_COST = 3,
-IFLA_BRPORT_MODE = 4,
-IFLA_BRPORT_GUARD = 5,
-IFLA_BRPORT_PROTECT = 6,
-IFLA_BRPORT_FAST_LEAVE = 7,
-IFLA_BRPORT_LEARNING = 8,
-IFLA_BRPORT_UNICAST_FLOOD = 9,
-IFLA_BRPORT_PROXYARP = 10,
-IFLA_BRPORT_LEARNING_SYNC = 11,
-IFLA_BRPORT_PROXYARP_WIFI = 12,
-IFLA_BRPORT_ROOT_ID = 13,
-IFLA_BRPORT_BRIDGE_ID = 14,
-IFLA_BRPORT_DESIGNATED_PORT = 15,
-IFLA_BRPORT_DESIGNATED_COST = 16,
-IFLA_BRPORT_ID = 17,
-IFLA_BRPORT_NO = 18,
-IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 19,
-IFLA_BRPORT_CONFIG_PENDING = 20,
-IFLA_BRPORT_MESSAGE_AGE_TIMER = 21,
-IFLA_BRPORT_FORWARD_DELAY_TIMER = 22,
-IFLA_BRPORT_HOLD_TIMER = 23,
-IFLA_BRPORT_FLUSH = 24,
-IFLA_BRPORT_MULTICAST_ROUTER = 25,
-IFLA_BRPORT_PAD = 26,
-IFLA_BRPORT_MCAST_FLOOD = 27,
-IFLA_BRPORT_MCAST_TO_UCAST = 28,
-IFLA_BRPORT_VLAN_TUNNEL = 29,
-IFLA_BRPORT_BCAST_FLOOD = 30,
-IFLA_BRPORT_GROUP_FWD_MASK = 31,
-IFLA_BRPORT_NEIGH_SUPPRESS = 32,
-IFLA_BRPORT_ISOLATED = 33,
-IFLA_BRPORT_BACKUP_PORT = 34,
-IFLA_BRPORT_MRP_RING_OPEN = 35,
-IFLA_BRPORT_MRP_IN_OPEN = 36,
-IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 37,
-IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 38,
-IFLA_BRPORT_LOCKED = 39,
-IFLA_BRPORT_MAB = 40,
-__IFLA_BRPORT_MAX = 41,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_cacheinfo {
-pub max_reasm_len: __u32,
-pub tstamp: __u32,
-pub reachable_time: __u32,
-pub retrans_time: __u32,
-}
-pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC;
-pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND;
-pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA;
-pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS;
-pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND;
-pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA;
-pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IFLA_INFO_UNSPEC = 0,
-IFLA_INFO_KIND = 1,
-IFLA_INFO_DATA = 2,
-IFLA_INFO_XSTATS = 3,
-IFLA_INFO_SLAVE_KIND = 4,
-IFLA_INFO_SLAVE_DATA = 5,
-__IFLA_INFO_MAX = 6,
-}
-pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC;
-pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID;
-pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS;
-pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS;
-pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS;
-pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL;
-pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IFLA_VLAN_UNSPEC = 0,
-IFLA_VLAN_ID = 1,
-IFLA_VLAN_FLAGS = 2,
-IFLA_VLAN_EGRESS_QOS = 3,
-IFLA_VLAN_INGRESS_QOS = 4,
-IFLA_VLAN_PROTOCOL = 5,
-__IFLA_VLAN_MAX = 6,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC;
-pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING;
-pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IFLA_VLAN_QOS_UNSPEC = 0,
-IFLA_VLAN_QOS_MAPPING = 1,
-__IFLA_VLAN_QOS_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_qos_mapping {
-pub from: __u32,
-pub to: __u32,
-}
-pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC;
-pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE;
-pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS;
-pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE;
-pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR;
-pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA;
-pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED;
-pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IFLA_MACVLAN_UNSPEC = 0,
-IFLA_MACVLAN_MODE = 1,
-IFLA_MACVLAN_FLAGS = 2,
-IFLA_MACVLAN_MACADDR_MODE = 3,
-IFLA_MACVLAN_MACADDR = 4,
-IFLA_MACVLAN_MACADDR_DATA = 5,
-IFLA_MACVLAN_MACADDR_COUNT = 6,
-IFLA_MACVLAN_BC_QUEUE_LEN = 7,
-IFLA_MACVLAN_BC_QUEUE_LEN_USED = 8,
-__IFLA_MACVLAN_MAX = 9,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_mode {
-MACVLAN_MODE_PRIVATE = 1,
-MACVLAN_MODE_VEPA = 2,
-MACVLAN_MODE_BRIDGE = 4,
-MACVLAN_MODE_PASSTHRU = 8,
-MACVLAN_MODE_SOURCE = 16,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_macaddr_mode {
-MACVLAN_MACADDR_ADD = 0,
-MACVLAN_MACADDR_DEL = 1,
-MACVLAN_MACADDR_FLUSH = 2,
-MACVLAN_MACADDR_SET = 3,
-}
-pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC;
-pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE;
-pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_13 {
-IFLA_VRF_UNSPEC = 0,
-IFLA_VRF_TABLE = 1,
-__IFLA_VRF_MAX = 2,
-}
-pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC;
-pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE;
-pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_14 {
-IFLA_VRF_PORT_UNSPEC = 0,
-IFLA_VRF_PORT_TABLE = 1,
-__IFLA_VRF_PORT_MAX = 2,
-}
-pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC;
-pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI;
-pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT;
-pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN;
-pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE;
-pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW;
-pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA;
-pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT;
-pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT;
-pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI;
-pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES;
-pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB;
-pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT;
-pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION;
-pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD;
-pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD;
-pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_15 {
-IFLA_MACSEC_UNSPEC = 0,
-IFLA_MACSEC_SCI = 1,
-IFLA_MACSEC_PORT = 2,
-IFLA_MACSEC_ICV_LEN = 3,
-IFLA_MACSEC_CIPHER_SUITE = 4,
-IFLA_MACSEC_WINDOW = 5,
-IFLA_MACSEC_ENCODING_SA = 6,
-IFLA_MACSEC_ENCRYPT = 7,
-IFLA_MACSEC_PROTECT = 8,
-IFLA_MACSEC_INC_SCI = 9,
-IFLA_MACSEC_ES = 10,
-IFLA_MACSEC_SCB = 11,
-IFLA_MACSEC_REPLAY_PROTECT = 12,
-IFLA_MACSEC_VALIDATION = 13,
-IFLA_MACSEC_PAD = 14,
-IFLA_MACSEC_OFFLOAD = 15,
-__IFLA_MACSEC_MAX = 16,
-}
-pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC;
-pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK;
-pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID;
-pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA;
-pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_16 {
-IFLA_XFRM_UNSPEC = 0,
-IFLA_XFRM_LINK = 1,
-IFLA_XFRM_IF_ID = 2,
-IFLA_XFRM_COLLECT_METADATA = 3,
-__IFLA_XFRM_MAX = 4,
-}
-impl macsec_validation_type {
-pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_validation_type {
-MACSEC_VALIDATE_DISABLED = 0,
-MACSEC_VALIDATE_CHECK = 1,
-MACSEC_VALIDATE_STRICT = 2,
-__MACSEC_VALIDATE_END = 3,
-}
-impl macsec_offload {
-pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_offload {
-MACSEC_OFFLOAD_OFF = 0,
-MACSEC_OFFLOAD_PHY = 1,
-MACSEC_OFFLOAD_MAC = 2,
-__MACSEC_OFFLOAD_END = 3,
-}
-pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC;
-pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE;
-pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS;
-pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_17 {
-IFLA_IPVLAN_UNSPEC = 0,
-IFLA_IPVLAN_MODE = 1,
-IFLA_IPVLAN_FLAGS = 2,
-__IFLA_IPVLAN_MAX = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ipvlan_mode {
-IPVLAN_MODE_L2 = 0,
-IPVLAN_MODE_L3 = 1,
-IPVLAN_MODE_L3S = 2,
-IPVLAN_MODE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tunnel_msg {
-pub family: __u8,
-pub flags: __u8,
-pub reserved2: __u16,
-pub ifindex: __u32,
-}
-pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC;
-pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD;
-pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_18 {
-VNIFILTER_ENTRY_STATS_UNSPEC = 0,
-VNIFILTER_ENTRY_STATS_RX_BYTES = 1,
-VNIFILTER_ENTRY_STATS_RX_PKTS = 2,
-VNIFILTER_ENTRY_STATS_RX_DROPS = 3,
-VNIFILTER_ENTRY_STATS_RX_ERRORS = 4,
-VNIFILTER_ENTRY_STATS_TX_BYTES = 5,
-VNIFILTER_ENTRY_STATS_TX_PKTS = 6,
-VNIFILTER_ENTRY_STATS_TX_DROPS = 7,
-VNIFILTER_ENTRY_STATS_TX_ERRORS = 8,
-VNIFILTER_ENTRY_STATS_PAD = 9,
-__VNIFILTER_ENTRY_STATS_MAX = 10,
-}
-pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START;
-pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6;
-pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS;
-pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_19 {
-VXLAN_VNIFILTER_ENTRY_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY_START = 1,
-VXLAN_VNIFILTER_ENTRY_END = 2,
-VXLAN_VNIFILTER_ENTRY_GROUP = 3,
-VXLAN_VNIFILTER_ENTRY_GROUP6 = 4,
-VXLAN_VNIFILTER_ENTRY_STATS = 5,
-__VXLAN_VNIFILTER_ENTRY_MAX = 6,
-}
-pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY;
-pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_20 {
-VXLAN_VNIFILTER_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY = 1,
-__VXLAN_VNIFILTER_MAX = 2,
-}
-pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC;
-pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID;
-pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP;
-pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK;
-pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL;
-pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL;
-pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS;
-pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING;
-pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING;
-pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT;
-pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE;
-pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY;
-pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC;
-pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS;
-pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS;
-pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT;
-pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6;
-pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6;
-pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX;
-pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX;
-pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX;
-pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP;
-pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL;
-pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA;
-pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL;
-pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE;
-pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT;
-pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF;
-pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER;
-pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_21 {
-IFLA_VXLAN_UNSPEC = 0,
-IFLA_VXLAN_ID = 1,
-IFLA_VXLAN_GROUP = 2,
-IFLA_VXLAN_LINK = 3,
-IFLA_VXLAN_LOCAL = 4,
-IFLA_VXLAN_TTL = 5,
-IFLA_VXLAN_TOS = 6,
-IFLA_VXLAN_LEARNING = 7,
-IFLA_VXLAN_AGEING = 8,
-IFLA_VXLAN_LIMIT = 9,
-IFLA_VXLAN_PORT_RANGE = 10,
-IFLA_VXLAN_PROXY = 11,
-IFLA_VXLAN_RSC = 12,
-IFLA_VXLAN_L2MISS = 13,
-IFLA_VXLAN_L3MISS = 14,
-IFLA_VXLAN_PORT = 15,
-IFLA_VXLAN_GROUP6 = 16,
-IFLA_VXLAN_LOCAL6 = 17,
-IFLA_VXLAN_UDP_CSUM = 18,
-IFLA_VXLAN_UDP_ZERO_CSUM6_TX = 19,
-IFLA_VXLAN_UDP_ZERO_CSUM6_RX = 20,
-IFLA_VXLAN_REMCSUM_TX = 21,
-IFLA_VXLAN_REMCSUM_RX = 22,
-IFLA_VXLAN_GBP = 23,
-IFLA_VXLAN_REMCSUM_NOPARTIAL = 24,
-IFLA_VXLAN_COLLECT_METADATA = 25,
-IFLA_VXLAN_LABEL = 26,
-IFLA_VXLAN_GPE = 27,
-IFLA_VXLAN_TTL_INHERIT = 28,
-IFLA_VXLAN_DF = 29,
-IFLA_VXLAN_VNIFILTER = 30,
-__IFLA_VXLAN_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vxlan_port_range {
-pub low: __be16,
-pub high: __be16,
-}
-impl ifla_vxlan_df {
-pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_vxlan_df {
-VXLAN_DF_UNSET = 0,
-VXLAN_DF_SET = 1,
-VXLAN_DF_INHERIT = 2,
-__VXLAN_DF_END = 3,
-}
-pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC;
-pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID;
-pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE;
-pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL;
-pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS;
-pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT;
-pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA;
-pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6;
-pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX;
-pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL;
-pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT;
-pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF;
-pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT;
-pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_22 {
-IFLA_GENEVE_UNSPEC = 0,
-IFLA_GENEVE_ID = 1,
-IFLA_GENEVE_REMOTE = 2,
-IFLA_GENEVE_TTL = 3,
-IFLA_GENEVE_TOS = 4,
-IFLA_GENEVE_PORT = 5,
-IFLA_GENEVE_COLLECT_METADATA = 6,
-IFLA_GENEVE_REMOTE6 = 7,
-IFLA_GENEVE_UDP_CSUM = 8,
-IFLA_GENEVE_UDP_ZERO_CSUM6_TX = 9,
-IFLA_GENEVE_UDP_ZERO_CSUM6_RX = 10,
-IFLA_GENEVE_LABEL = 11,
-IFLA_GENEVE_TTL_INHERIT = 12,
-IFLA_GENEVE_DF = 13,
-IFLA_GENEVE_INNER_PROTO_INHERIT = 14,
-__IFLA_GENEVE_MAX = 15,
-}
-impl ifla_geneve_df {
-pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_geneve_df {
-GENEVE_DF_UNSET = 0,
-GENEVE_DF_SET = 1,
-GENEVE_DF_INHERIT = 2,
-__GENEVE_DF_END = 3,
-}
-pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC;
-pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT;
-pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE;
-pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN;
-pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE;
-pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_23 {
-IFLA_BAREUDP_UNSPEC = 0,
-IFLA_BAREUDP_PORT = 1,
-IFLA_BAREUDP_ETHERTYPE = 2,
-IFLA_BAREUDP_SRCPORT_MIN = 3,
-IFLA_BAREUDP_MULTIPROTO_MODE = 4,
-__IFLA_BAREUDP_MAX = 5,
-}
-pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC;
-pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD;
-pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_24 {
-IFLA_PPP_UNSPEC = 0,
-IFLA_PPP_DEV_FD = 1,
-__IFLA_PPP_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_gtp_role {
-GTP_ROLE_GGSN = 0,
-GTP_ROLE_SGSN = 1,
-}
-pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC;
-pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0;
-pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1;
-pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE;
-pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE;
-pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS;
-pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT;
-pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_25 {
-IFLA_GTP_UNSPEC = 0,
-IFLA_GTP_FD0 = 1,
-IFLA_GTP_FD1 = 2,
-IFLA_GTP_PDP_HASHSIZE = 3,
-IFLA_GTP_ROLE = 4,
-IFLA_GTP_CREATE_SOCKETS = 5,
-IFLA_GTP_RESTART_COUNT = 6,
-__IFLA_GTP_MAX = 7,
-}
-pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC;
-pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE;
-pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE;
-pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON;
-pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY;
-pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY;
-pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER;
-pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL;
-pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET;
-pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE;
-pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS;
-pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY;
-pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT;
-pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC;
-pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY;
-pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP;
-pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF;
-pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE;
-pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS;
-pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL;
-pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE;
-pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE;
-pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT;
-pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO;
-pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO;
-pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY;
-pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM;
-pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB;
-pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY;
-pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE;
-pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX;
-pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET;
-pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_26 {
-IFLA_BOND_UNSPEC = 0,
-IFLA_BOND_MODE = 1,
-IFLA_BOND_ACTIVE_SLAVE = 2,
-IFLA_BOND_MIIMON = 3,
-IFLA_BOND_UPDELAY = 4,
-IFLA_BOND_DOWNDELAY = 5,
-IFLA_BOND_USE_CARRIER = 6,
-IFLA_BOND_ARP_INTERVAL = 7,
-IFLA_BOND_ARP_IP_TARGET = 8,
-IFLA_BOND_ARP_VALIDATE = 9,
-IFLA_BOND_ARP_ALL_TARGETS = 10,
-IFLA_BOND_PRIMARY = 11,
-IFLA_BOND_PRIMARY_RESELECT = 12,
-IFLA_BOND_FAIL_OVER_MAC = 13,
-IFLA_BOND_XMIT_HASH_POLICY = 14,
-IFLA_BOND_RESEND_IGMP = 15,
-IFLA_BOND_NUM_PEER_NOTIF = 16,
-IFLA_BOND_ALL_SLAVES_ACTIVE = 17,
-IFLA_BOND_MIN_LINKS = 18,
-IFLA_BOND_LP_INTERVAL = 19,
-IFLA_BOND_PACKETS_PER_SLAVE = 20,
-IFLA_BOND_AD_LACP_RATE = 21,
-IFLA_BOND_AD_SELECT = 22,
-IFLA_BOND_AD_INFO = 23,
-IFLA_BOND_AD_ACTOR_SYS_PRIO = 24,
-IFLA_BOND_AD_USER_PORT_KEY = 25,
-IFLA_BOND_AD_ACTOR_SYSTEM = 26,
-IFLA_BOND_TLB_DYNAMIC_LB = 27,
-IFLA_BOND_PEER_NOTIF_DELAY = 28,
-IFLA_BOND_AD_LACP_ACTIVE = 29,
-IFLA_BOND_MISSED_MAX = 30,
-IFLA_BOND_NS_IP6_TARGET = 31,
-__IFLA_BOND_MAX = 32,
-}
-pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC;
-pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR;
-pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS;
-pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC;
-pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_27 {
-IFLA_BOND_AD_INFO_UNSPEC = 0,
-IFLA_BOND_AD_INFO_AGGREGATOR = 1,
-IFLA_BOND_AD_INFO_NUM_PORTS = 2,
-IFLA_BOND_AD_INFO_ACTOR_KEY = 3,
-IFLA_BOND_AD_INFO_PARTNER_KEY = 4,
-IFLA_BOND_AD_INFO_PARTNER_MAC = 5,
-__IFLA_BOND_AD_INFO_MAX = 6,
-}
-pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC;
-pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE;
-pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS;
-pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT;
-pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR;
-pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID;
-pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID;
-pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO;
-pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_28 {
-IFLA_BOND_SLAVE_UNSPEC = 0,
-IFLA_BOND_SLAVE_STATE = 1,
-IFLA_BOND_SLAVE_MII_STATUS = 2,
-IFLA_BOND_SLAVE_LINK_FAILURE_COUNT = 3,
-IFLA_BOND_SLAVE_PERM_HWADDR = 4,
-IFLA_BOND_SLAVE_QUEUE_ID = 5,
-IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 6,
-IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 7,
-IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 8,
-IFLA_BOND_SLAVE_PRIO = 9,
-__IFLA_BOND_SLAVE_MAX = 10,
-}
-pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC;
-pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO;
-pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_29 {
-IFLA_VF_INFO_UNSPEC = 0,
-IFLA_VF_INFO = 1,
-__IFLA_VF_INFO_MAX = 2,
-}
-pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC;
-pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC;
-pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN;
-pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE;
-pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK;
-pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE;
-pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE;
-pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN;
-pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS;
-pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST;
-pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID;
-pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID;
-pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST;
-pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST;
-pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_30 {
-IFLA_VF_UNSPEC = 0,
-IFLA_VF_MAC = 1,
-IFLA_VF_VLAN = 2,
-IFLA_VF_TX_RATE = 3,
-IFLA_VF_SPOOFCHK = 4,
-IFLA_VF_LINK_STATE = 5,
-IFLA_VF_RATE = 6,
-IFLA_VF_RSS_QUERY_EN = 7,
-IFLA_VF_STATS = 8,
-IFLA_VF_TRUST = 9,
-IFLA_VF_IB_NODE_GUID = 10,
-IFLA_VF_IB_PORT_GUID = 11,
-IFLA_VF_VLAN_LIST = 12,
-IFLA_VF_BROADCAST = 13,
-__IFLA_VF_MAX = 14,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_mac {
-pub vf: __u32,
-pub mac: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_broadcast {
-pub broadcast: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-}
-pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC;
-pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO;
-pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_31 {
-IFLA_VF_VLAN_INFO_UNSPEC = 0,
-IFLA_VF_VLAN_INFO = 1,
-__IFLA_VF_VLAN_INFO_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan_info {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-pub vlan_proto: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_tx_rate {
-pub vf: __u32,
-pub rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rate {
-pub vf: __u32,
-pub min_tx_rate: __u32,
-pub max_tx_rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_spoofchk {
-pub vf: __u32,
-pub setting: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_guid {
-pub vf: __u32,
-pub guid: __u64,
-}
-pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO;
-pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE;
-pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE;
-pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_32 {
-IFLA_VF_LINK_STATE_AUTO = 0,
-IFLA_VF_LINK_STATE_ENABLE = 1,
-IFLA_VF_LINK_STATE_DISABLE = 2,
-__IFLA_VF_LINK_STATE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_link_state {
-pub vf: __u32,
-pub link_state: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rss_query_en {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS;
-pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS;
-pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES;
-pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES;
-pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST;
-pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST;
-pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD;
-pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED;
-pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED;
-pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_33 {
-IFLA_VF_STATS_RX_PACKETS = 0,
-IFLA_VF_STATS_TX_PACKETS = 1,
-IFLA_VF_STATS_RX_BYTES = 2,
-IFLA_VF_STATS_TX_BYTES = 3,
-IFLA_VF_STATS_BROADCAST = 4,
-IFLA_VF_STATS_MULTICAST = 5,
-IFLA_VF_STATS_PAD = 6,
-IFLA_VF_STATS_RX_DROPPED = 7,
-IFLA_VF_STATS_TX_DROPPED = 8,
-__IFLA_VF_STATS_MAX = 9,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_trust {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC;
-pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT;
-pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_34 {
-IFLA_VF_PORT_UNSPEC = 0,
-IFLA_VF_PORT = 1,
-__IFLA_VF_PORT_MAX = 2,
-}
-pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC;
-pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF;
-pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE;
-pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE;
-pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID;
-pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID;
-pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST;
-pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE;
-pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_35 {
-IFLA_PORT_UNSPEC = 0,
-IFLA_PORT_VF = 1,
-IFLA_PORT_PROFILE = 2,
-IFLA_PORT_VSI_TYPE = 3,
-IFLA_PORT_INSTANCE_UUID = 4,
-IFLA_PORT_HOST_UUID = 5,
-IFLA_PORT_REQUEST = 6,
-IFLA_PORT_RESPONSE = 7,
-__IFLA_PORT_MAX = 8,
-}
-pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE;
-pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR;
-pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE;
-pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_36 {
-PORT_REQUEST_PREASSOCIATE = 0,
-PORT_REQUEST_PREASSOCIATE_RR = 1,
-PORT_REQUEST_ASSOCIATE = 2,
-PORT_REQUEST_DISASSOCIATE = 3,
-}
-pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS;
-pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT;
-pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID;
-pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION;
-pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION;
-pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC;
-pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS;
-pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS;
-pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID;
-pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE;
-pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_37 {
-PORT_VDP_RESPONSE_SUCCESS = 0,
-PORT_VDP_RESPONSE_INVALID_FORMAT = 1,
-PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES = 2,
-PORT_VDP_RESPONSE_UNUSED_VTID = 3,
-PORT_VDP_RESPONSE_VTID_VIOLATION = 4,
-PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION = 5,
-PORT_VDP_RESPONSE_OUT_OF_SYNC = 6,
-PORT_PROFILE_RESPONSE_SUCCESS = 256,
-PORT_PROFILE_RESPONSE_INPROGRESS = 257,
-PORT_PROFILE_RESPONSE_INVALID = 258,
-PORT_PROFILE_RESPONSE_BADSTATE = 259,
-PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260,
-PORT_PROFILE_RESPONSE_ERROR = 261,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_port_vsi {
-pub vsi_mgr_id: __u8,
-pub vsi_type_id: [__u8; 3usize],
-pub vsi_type_version: __u8,
-pub pad: [__u8; 3usize],
-}
-pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC;
-pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY;
-pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE;
-pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST;
-pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_38 {
-IFLA_IPOIB_UNSPEC = 0,
-IFLA_IPOIB_PKEY = 1,
-IFLA_IPOIB_MODE = 2,
-IFLA_IPOIB_UMCAST = 3,
-__IFLA_IPOIB_MAX = 4,
-}
-pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM;
-pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_39 {
-IPOIB_MODE_DATAGRAM = 0,
-IPOIB_MODE_CONNECTED = 1,
-}
-pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR;
-pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP;
-pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_40 {
-HSR_PROTOCOL_HSR = 0,
-HSR_PROTOCOL_PRP = 1,
-HSR_PROTOCOL_MAX = 2,
-}
-pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC;
-pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1;
-pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2;
-pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC;
-pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR;
-pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR;
-pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION;
-pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL;
-pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_41 {
-IFLA_HSR_UNSPEC = 0,
-IFLA_HSR_SLAVE1 = 1,
-IFLA_HSR_SLAVE2 = 2,
-IFLA_HSR_MULTICAST_SPEC = 3,
-IFLA_HSR_SUPERVISION_ADDR = 4,
-IFLA_HSR_SEQ_NR = 5,
-IFLA_HSR_VERSION = 6,
-IFLA_HSR_PROTOCOL = 7,
-__IFLA_HSR_MAX = 8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct if_stats_msg {
-pub family: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub ifindex: __u32,
-pub filter_mask: __u32,
-}
-pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC;
-pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64;
-pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS;
-pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE;
-pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS;
-pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC;
-pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_42 {
-IFLA_STATS_UNSPEC = 0,
-IFLA_STATS_LINK_64 = 1,
-IFLA_STATS_LINK_XSTATS = 2,
-IFLA_STATS_LINK_XSTATS_SLAVE = 3,
-IFLA_STATS_LINK_OFFLOAD_XSTATS = 4,
-IFLA_STATS_AF_SPEC = 5,
-__IFLA_STATS_MAX = 6,
-}
-pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC;
-pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS;
-pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_43 {
-IFLA_STATS_GETSET_UNSPEC = 0,
-IFLA_STATS_GET_FILTERS = 1,
-IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2,
-__IFLA_STATS_GETSET_MAX = 3,
-}
-pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC;
-pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE;
-pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND;
-pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_44 {
-LINK_XSTATS_TYPE_UNSPEC = 0,
-LINK_XSTATS_TYPE_BRIDGE = 1,
-LINK_XSTATS_TYPE_BOND = 2,
-__LINK_XSTATS_TYPE_MAX = 3,
-}
-pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO;
-pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_45 {
-IFLA_OFFLOAD_XSTATS_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_CPU_HIT = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO = 2,
-IFLA_OFFLOAD_XSTATS_L3_STATS = 3,
-__IFLA_OFFLOAD_XSTATS_MAX = 4,
-}
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED;
-pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_46 {
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2,
-__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3,
-}
-pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE;
-pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV;
-pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB;
-pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW;
-pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_47 {
-XDP_ATTACHED_NONE = 0,
-XDP_ATTACHED_DRV = 1,
-XDP_ATTACHED_SKB = 2,
-XDP_ATTACHED_HW = 3,
-XDP_ATTACHED_MULTI = 4,
-}
-pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC;
-pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD;
-pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED;
-pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS;
-pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID;
-pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID;
-pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID;
-pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID;
-pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD;
-pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_48 {
-IFLA_XDP_UNSPEC = 0,
-IFLA_XDP_FD = 1,
-IFLA_XDP_ATTACHED = 2,
-IFLA_XDP_FLAGS = 3,
-IFLA_XDP_PROG_ID = 4,
-IFLA_XDP_DRV_PROG_ID = 5,
-IFLA_XDP_SKB_PROG_ID = 6,
-IFLA_XDP_HW_PROG_ID = 7,
-IFLA_XDP_EXPECTED_FD = 8,
-__IFLA_XDP_MAX = 9,
-}
-pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE;
-pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT;
-pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES;
-pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER;
-pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS;
-pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND;
-pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_49 {
-IFLA_EVENT_NONE = 0,
-IFLA_EVENT_REBOOT = 1,
-IFLA_EVENT_FEATURES = 2,
-IFLA_EVENT_BONDING_FAILOVER = 3,
-IFLA_EVENT_NOTIFY_PEERS = 4,
-IFLA_EVENT_IGMP_RESEND = 5,
-IFLA_EVENT_BONDING_OPTIONS = 6,
-}
-pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC;
-pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER;
-pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP;
-pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE;
-pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI;
-pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR;
-pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST;
-pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE;
-pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES;
-pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES;
-pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_50 {
-IFLA_TUN_UNSPEC = 0,
-IFLA_TUN_OWNER = 1,
-IFLA_TUN_GROUP = 2,
-IFLA_TUN_TYPE = 3,
-IFLA_TUN_PI = 4,
-IFLA_TUN_VNET_HDR = 5,
-IFLA_TUN_PERSIST = 6,
-IFLA_TUN_MULTI_QUEUE = 7,
-IFLA_TUN_NUM_QUEUES = 8,
-IFLA_TUN_NUM_DISABLED_QUEUES = 9,
-__IFLA_TUN_MAX = 10,
-}
-pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC;
-pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID;
-pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS;
-pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_51 {
-IFLA_RMNET_UNSPEC = 0,
-IFLA_RMNET_MUX_ID = 1,
-IFLA_RMNET_FLAGS = 2,
-__IFLA_RMNET_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_rmnet_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC;
-pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET;
-pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_52 {
-IFLA_MCTP_UNSPEC = 0,
-IFLA_MCTP_NET = 1,
-__IFLA_MCTP_MAX = 2,
-}
-pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC;
-pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER;
-pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_53 {
-IFLA_DSA_UNSPEC = 0,
-IFLA_DSA_MASTER = 1,
-__IFLA_DSA_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifaddrmsg {
-pub ifa_family: __u8,
-pub ifa_prefixlen: __u8,
-pub ifa_flags: __u8,
-pub ifa_scope: __u8,
-pub ifa_index: __u32,
-}
-pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC;
-pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS;
-pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL;
-pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL;
-pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST;
-pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST;
-pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO;
-pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST;
-pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS;
-pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY;
-pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID;
-pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO;
-pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_54 {
-IFA_UNSPEC = 0,
-IFA_ADDRESS = 1,
-IFA_LOCAL = 2,
-IFA_LABEL = 3,
-IFA_BROADCAST = 4,
-IFA_ANYCAST = 5,
-IFA_CACHEINFO = 6,
-IFA_MULTICAST = 7,
-IFA_FLAGS = 8,
-IFA_RT_PRIORITY = 9,
-IFA_TARGET_NETNSID = 10,
-IFA_PROTO = 11,
-__IFA_MAX = 12,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifa_cacheinfo {
-pub ifa_prefered: __u32,
-pub ifa_valid: __u32,
-pub cstamp: __u32,
-pub tstamp: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndmsg {
-pub ndm_family: __u8,
-pub ndm_pad1: __u8,
-pub ndm_pad2: __u16,
-pub ndm_ifindex: __s32,
-pub ndm_state: __u16,
-pub ndm_flags: __u8,
-pub ndm_type: __u8,
-}
-pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC;
-pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST;
-pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR;
-pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO;
-pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES;
-pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN;
-pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT;
-pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI;
-pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX;
-pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER;
-pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID;
-pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI;
-pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL;
-pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID;
-pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS;
-pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT;
-pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK;
-pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK;
-pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_55 {
-NDA_UNSPEC = 0,
-NDA_DST = 1,
-NDA_LLADDR = 2,
-NDA_CACHEINFO = 3,
-NDA_PROBES = 4,
-NDA_VLAN = 5,
-NDA_PORT = 6,
-NDA_VNI = 7,
-NDA_IFINDEX = 8,
-NDA_MASTER = 9,
-NDA_LINK_NETNSID = 10,
-NDA_SRC_VNI = 11,
-NDA_PROTOCOL = 12,
-NDA_NH_ID = 13,
-NDA_FDB_EXT_ATTRS = 14,
-NDA_FLAGS_EXT = 15,
-NDA_NDM_STATE_MASK = 16,
-NDA_NDM_FLAGS_MASK = 17,
-__NDA_MAX = 18,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nda_cacheinfo {
-pub ndm_confirmed: __u32,
-pub ndm_used: __u32,
-pub ndm_updated: __u32,
-pub ndm_refcnt: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_stats {
-pub ndts_allocs: __u64,
-pub ndts_destroys: __u64,
-pub ndts_hash_grows: __u64,
-pub ndts_res_failed: __u64,
-pub ndts_lookups: __u64,
-pub ndts_hits: __u64,
-pub ndts_rcv_probes_mcast: __u64,
-pub ndts_rcv_probes_ucast: __u64,
-pub ndts_periodic_gc_runs: __u64,
-pub ndts_forced_gc_runs: __u64,
-pub ndts_table_fulls: __u64,
-}
-pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC;
-pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX;
-pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT;
-pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME;
-pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME;
-pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME;
-pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME;
-pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME;
-pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN;
-pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES;
-pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES;
-pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES;
-pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY;
-pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY;
-pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN;
-pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME;
-pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES;
-pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES;
-pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD;
-pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS;
-pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_56 {
-NDTPA_UNSPEC = 0,
-NDTPA_IFINDEX = 1,
-NDTPA_REFCNT = 2,
-NDTPA_REACHABLE_TIME = 3,
-NDTPA_BASE_REACHABLE_TIME = 4,
-NDTPA_RETRANS_TIME = 5,
-NDTPA_GC_STALETIME = 6,
-NDTPA_DELAY_PROBE_TIME = 7,
-NDTPA_QUEUE_LEN = 8,
-NDTPA_APP_PROBES = 9,
-NDTPA_UCAST_PROBES = 10,
-NDTPA_MCAST_PROBES = 11,
-NDTPA_ANYCAST_DELAY = 12,
-NDTPA_PROXY_DELAY = 13,
-NDTPA_PROXY_QLEN = 14,
-NDTPA_LOCKTIME = 15,
-NDTPA_QUEUE_LENBYTES = 16,
-NDTPA_MCAST_REPROBES = 17,
-NDTPA_PAD = 18,
-NDTPA_INTERVAL_PROBE_TIME_MS = 19,
-__NDTPA_MAX = 20,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndtmsg {
-pub ndtm_family: __u8,
-pub ndtm_pad1: __u8,
-pub ndtm_pad2: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_config {
-pub ndtc_key_len: __u16,
-pub ndtc_entry_size: __u16,
-pub ndtc_entries: __u32,
-pub ndtc_last_flush: __u32,
-pub ndtc_last_rand: __u32,
-pub ndtc_hash_rnd: __u32,
-pub ndtc_hash_mask: __u32,
-pub ndtc_hash_chain_gc: __u32,
-pub ndtc_proxy_qlen: __u32,
-}
-pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC;
-pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME;
-pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1;
-pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2;
-pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3;
-pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG;
-pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS;
-pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS;
-pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL;
-pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD;
-pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_57 {
-NDTA_UNSPEC = 0,
-NDTA_NAME = 1,
-NDTA_THRESH1 = 2,
-NDTA_THRESH2 = 3,
-NDTA_THRESH3 = 4,
-NDTA_CONFIG = 5,
-NDTA_PARMS = 6,
-NDTA_STATS = 7,
-NDTA_GC_INTERVAL = 8,
-NDTA_PAD = 9,
-__NDTA_MAX = 10,
-}
-pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT;
-pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_58 {
-FDB_NOTIFY_BIT = 1,
-FDB_NOTIFY_INACTIVE_BIT = 2,
-}
-pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC;
-pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY;
-pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH;
-pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_59 {
-NFEA_UNSPEC = 0,
-NFEA_ACTIVITY_NOTIFY = 1,
-NFEA_DONT_REFRESH = 2,
-__NFEA_MAX = 3,
-}
-pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK;
-pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK;
-pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK;
-pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR;
-pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR;
-pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR;
-pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE;
-pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE;
-pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE;
-pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH;
-pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH;
-pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH;
-pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE;
-pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE;
-pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE;
-pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC;
-pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC;
-pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC;
-pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS;
-pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS;
-pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS;
-pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER;
-pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER;
-pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER;
-pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION;
-pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION;
-pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION;
-pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX;
-pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST;
-pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST;
-pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL;
-pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL;
-pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL;
-pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT;
-pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL;
-pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL;
-pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL;
-pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB;
-pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB;
-pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF;
-pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF;
-pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF;
-pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB;
-pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB;
-pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB;
-pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID;
-pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID;
-pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID;
-pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS;
-pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS;
-pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS;
-pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT;
-pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN;
-pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN;
-pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN;
-pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP;
-pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP;
-pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP;
-pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP;
-pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP;
-pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP;
-pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN;
-pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN;
-pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN;
-pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET;
-pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET;
-pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET;
-pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL;
-pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL;
-pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL;
-pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_60 {
-RTM_BASE = 16,
-RTM_DELLINK = 17,
-RTM_GETLINK = 18,
-RTM_SETLINK = 19,
-RTM_NEWADDR = 20,
-RTM_DELADDR = 21,
-RTM_GETADDR = 22,
-RTM_NEWROUTE = 24,
-RTM_DELROUTE = 25,
-RTM_GETROUTE = 26,
-RTM_NEWNEIGH = 28,
-RTM_DELNEIGH = 29,
-RTM_GETNEIGH = 30,
-RTM_NEWRULE = 32,
-RTM_DELRULE = 33,
-RTM_GETRULE = 34,
-RTM_NEWQDISC = 36,
-RTM_DELQDISC = 37,
-RTM_GETQDISC = 38,
-RTM_NEWTCLASS = 40,
-RTM_DELTCLASS = 41,
-RTM_GETTCLASS = 42,
-RTM_NEWTFILTER = 44,
-RTM_DELTFILTER = 45,
-RTM_GETTFILTER = 46,
-RTM_NEWACTION = 48,
-RTM_DELACTION = 49,
-RTM_GETACTION = 50,
-RTM_NEWPREFIX = 52,
-RTM_GETMULTICAST = 58,
-RTM_GETANYCAST = 62,
-RTM_NEWNEIGHTBL = 64,
-RTM_GETNEIGHTBL = 66,
-RTM_SETNEIGHTBL = 67,
-RTM_NEWNDUSEROPT = 68,
-RTM_NEWADDRLABEL = 72,
-RTM_DELADDRLABEL = 73,
-RTM_GETADDRLABEL = 74,
-RTM_GETDCB = 78,
-RTM_SETDCB = 79,
-RTM_NEWNETCONF = 80,
-RTM_DELNETCONF = 81,
-RTM_GETNETCONF = 82,
-RTM_NEWMDB = 84,
-RTM_DELMDB = 85,
-RTM_GETMDB = 86,
-RTM_NEWNSID = 88,
-RTM_DELNSID = 89,
-RTM_GETNSID = 90,
-RTM_NEWSTATS = 92,
-RTM_GETSTATS = 94,
-RTM_SETSTATS = 95,
-RTM_NEWCACHEREPORT = 96,
-RTM_NEWCHAIN = 100,
-RTM_DELCHAIN = 101,
-RTM_GETCHAIN = 102,
-RTM_NEWNEXTHOP = 104,
-RTM_DELNEXTHOP = 105,
-RTM_GETNEXTHOP = 106,
-RTM_NEWLINKPROP = 108,
-RTM_DELLINKPROP = 109,
-RTM_GETLINKPROP = 110,
-RTM_NEWVLAN = 112,
-RTM_DELVLAN = 113,
-RTM_GETVLAN = 114,
-RTM_NEWNEXTHOPBUCKET = 116,
-RTM_DELNEXTHOPBUCKET = 117,
-RTM_GETNEXTHOPBUCKET = 118,
-RTM_NEWTUNNEL = 120,
-RTM_DELTUNNEL = 121,
-RTM_GETTUNNEL = 122,
-__RTM_MAX = 123,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtattr {
-pub rta_len: crate::ctypes::c_ushort,
-pub rta_type: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtmsg {
-pub rtm_family: crate::ctypes::c_uchar,
-pub rtm_dst_len: crate::ctypes::c_uchar,
-pub rtm_src_len: crate::ctypes::c_uchar,
-pub rtm_tos: crate::ctypes::c_uchar,
-pub rtm_table: crate::ctypes::c_uchar,
-pub rtm_protocol: crate::ctypes::c_uchar,
-pub rtm_scope: crate::ctypes::c_uchar,
-pub rtm_type: crate::ctypes::c_uchar,
-pub rtm_flags: crate::ctypes::c_uint,
-}
-pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC;
-pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST;
-pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL;
-pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST;
-pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST;
-pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST;
-pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE;
-pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE;
-pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT;
-pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW;
-pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT;
-pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE;
-pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_61 {
-RTN_UNSPEC = 0,
-RTN_UNICAST = 1,
-RTN_LOCAL = 2,
-RTN_BROADCAST = 3,
-RTN_ANYCAST = 4,
-RTN_MULTICAST = 5,
-RTN_BLACKHOLE = 6,
-RTN_UNREACHABLE = 7,
-RTN_PROHIBIT = 8,
-RTN_THROW = 9,
-RTN_NAT = 10,
-RTN_XRESOLVE = 11,
-__RTN_MAX = 12,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_scope_t {
-RT_SCOPE_UNIVERSE = 0,
-RT_SCOPE_SITE = 200,
-RT_SCOPE_LINK = 253,
-RT_SCOPE_HOST = 254,
-RT_SCOPE_NOWHERE = 255,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_class_t {
-RT_TABLE_UNSPEC = 0,
-RT_TABLE_COMPAT = 252,
-RT_TABLE_DEFAULT = 253,
-RT_TABLE_MAIN = 254,
-RT_TABLE_LOCAL = 255,
-RT_TABLE_MAX = 4294967295,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtattr_type_t {
-RTA_UNSPEC = 0,
-RTA_DST = 1,
-RTA_SRC = 2,
-RTA_IIF = 3,
-RTA_OIF = 4,
-RTA_GATEWAY = 5,
-RTA_PRIORITY = 6,
-RTA_PREFSRC = 7,
-RTA_METRICS = 8,
-RTA_MULTIPATH = 9,
-RTA_PROTOINFO = 10,
-RTA_FLOW = 11,
-RTA_CACHEINFO = 12,
-RTA_SESSION = 13,
-RTA_MP_ALGO = 14,
-RTA_TABLE = 15,
-RTA_MARK = 16,
-RTA_MFC_STATS = 17,
-RTA_VIA = 18,
-RTA_NEWDST = 19,
-RTA_PREF = 20,
-RTA_ENCAP_TYPE = 21,
-RTA_ENCAP = 22,
-RTA_EXPIRES = 23,
-RTA_PAD = 24,
-RTA_UID = 25,
-RTA_TTL_PROPAGATE = 26,
-RTA_IP_PROTO = 27,
-RTA_SPORT = 28,
-RTA_DPORT = 29,
-RTA_NH_ID = 30,
-__RTA_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnexthop {
-pub rtnh_len: crate::ctypes::c_ushort,
-pub rtnh_flags: crate::ctypes::c_uchar,
-pub rtnh_hops: crate::ctypes::c_uchar,
-pub rtnh_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rtvia {
-pub rtvia_family: __kernel_sa_family_t,
-pub rtvia_addr: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_cacheinfo {
-pub rta_clntref: __u32,
-pub rta_lastuse: __u32,
-pub rta_expires: __s32,
-pub rta_error: __u32,
-pub rta_used: __u32,
-pub rta_id: __u32,
-pub rta_ts: __u32,
-pub rta_tsage: __u32,
-}
-pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC;
-pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK;
-pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU;
-pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW;
-pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT;
-pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR;
-pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH;
-pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND;
-pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS;
-pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING;
-pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT;
-pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND;
-pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES;
-pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN;
-pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND;
-pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK;
-pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO;
-pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE;
-pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_62 {
-RTAX_UNSPEC = 0,
-RTAX_LOCK = 1,
-RTAX_MTU = 2,
-RTAX_WINDOW = 3,
-RTAX_RTT = 4,
-RTAX_RTTVAR = 5,
-RTAX_SSTHRESH = 6,
-RTAX_CWND = 7,
-RTAX_ADVMSS = 8,
-RTAX_REORDERING = 9,
-RTAX_HOPLIMIT = 10,
-RTAX_INITCWND = 11,
-RTAX_FEATURES = 12,
-RTAX_RTO_MIN = 13,
-RTAX_INITRWND = 14,
-RTAX_QUICKACK = 15,
-RTAX_CC_ALGO = 16,
-RTAX_FASTOPEN_NO_COOKIE = 17,
-__RTAX_MAX = 18,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rta_session {
-pub proto: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub u: rta_session__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union rta_session__bindgen_ty_1 {
-pub ports: rta_session__bindgen_ty_1__bindgen_ty_1,
-pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2,
-pub spi: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_1 {
-pub sport: __u16,
-pub dport: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_2 {
-pub type_: __u8,
-pub code: __u8,
-pub ident: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_mfc_stats {
-pub mfcs_packets: __u64,
-pub mfcs_bytes: __u64,
-pub mfcs_wrong_if: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtgenmsg {
-pub rtgen_family: crate::ctypes::c_uchar,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifinfomsg {
-pub ifi_family: crate::ctypes::c_uchar,
-pub __ifi_pad: crate::ctypes::c_uchar,
-pub ifi_type: crate::ctypes::c_ushort,
-pub ifi_index: crate::ctypes::c_int,
-pub ifi_flags: crate::ctypes::c_uint,
-pub ifi_change: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefixmsg {
-pub prefix_family: crate::ctypes::c_uchar,
-pub prefix_pad1: crate::ctypes::c_uchar,
-pub prefix_pad2: crate::ctypes::c_ushort,
-pub prefix_ifindex: crate::ctypes::c_int,
-pub prefix_type: crate::ctypes::c_uchar,
-pub prefix_len: crate::ctypes::c_uchar,
-pub prefix_flags: crate::ctypes::c_uchar,
-pub prefix_pad3: crate::ctypes::c_uchar,
-}
-pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC;
-pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS;
-pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO;
-pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_63 {
-PREFIX_UNSPEC = 0,
-PREFIX_ADDRESS = 1,
-PREFIX_CACHEINFO = 2,
-__PREFIX_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefix_cacheinfo {
-pub preferred_time: __u32,
-pub valid_time: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcmsg {
-pub tcm_family: crate::ctypes::c_uchar,
-pub tcm__pad1: crate::ctypes::c_uchar,
-pub tcm__pad2: crate::ctypes::c_ushort,
-pub tcm_ifindex: crate::ctypes::c_int,
-pub tcm_handle: __u32,
-pub tcm_parent: __u32,
-pub tcm_info: __u32,
-}
-pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC;
-pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND;
-pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS;
-pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS;
-pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS;
-pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE;
-pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT;
-pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2;
-pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB;
-pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD;
-pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE;
-pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN;
-pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD;
-pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK;
-pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK;
-pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS;
-pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_64 {
-TCA_UNSPEC = 0,
-TCA_KIND = 1,
-TCA_OPTIONS = 2,
-TCA_STATS = 3,
-TCA_XSTATS = 4,
-TCA_RATE = 5,
-TCA_FCNT = 6,
-TCA_STATS2 = 7,
-TCA_STAB = 8,
-TCA_PAD = 9,
-TCA_DUMP_INVISIBLE = 10,
-TCA_CHAIN = 11,
-TCA_HW_OFFLOAD = 12,
-TCA_INGRESS_BLOCK = 13,
-TCA_EGRESS_BLOCK = 14,
-TCA_DUMP_FLAGS = 15,
-__TCA_MAX = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nduseroptmsg {
-pub nduseropt_family: crate::ctypes::c_uchar,
-pub nduseropt_pad1: crate::ctypes::c_uchar,
-pub nduseropt_opts_len: crate::ctypes::c_ushort,
-pub nduseropt_ifindex: crate::ctypes::c_int,
-pub nduseropt_icmp_type: __u8,
-pub nduseropt_icmp_code: __u8,
-pub nduseropt_pad2: crate::ctypes::c_ushort,
-pub nduseropt_pad3: crate::ctypes::c_uint,
-}
-pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC;
-pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR;
-pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_65 {
-NDUSEROPT_UNSPEC = 0,
-NDUSEROPT_SRCADDR = 1,
-__NDUSEROPT_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtnetlink_groups {
-RTNLGRP_NONE = 0,
-RTNLGRP_LINK = 1,
-RTNLGRP_NOTIFY = 2,
-RTNLGRP_NEIGH = 3,
-RTNLGRP_TC = 4,
-RTNLGRP_IPV4_IFADDR = 5,
-RTNLGRP_IPV4_MROUTE = 6,
-RTNLGRP_IPV4_ROUTE = 7,
-RTNLGRP_IPV4_RULE = 8,
-RTNLGRP_IPV6_IFADDR = 9,
-RTNLGRP_IPV6_MROUTE = 10,
-RTNLGRP_IPV6_ROUTE = 11,
-RTNLGRP_IPV6_IFINFO = 12,
-RTNLGRP_DECnet_IFADDR = 13,
-RTNLGRP_NOP2 = 14,
-RTNLGRP_DECnet_ROUTE = 15,
-RTNLGRP_DECnet_RULE = 16,
-RTNLGRP_NOP4 = 17,
-RTNLGRP_IPV6_PREFIX = 18,
-RTNLGRP_IPV6_RULE = 19,
-RTNLGRP_ND_USEROPT = 20,
-RTNLGRP_PHONET_IFADDR = 21,
-RTNLGRP_PHONET_ROUTE = 22,
-RTNLGRP_DCB = 23,
-RTNLGRP_IPV4_NETCONF = 24,
-RTNLGRP_IPV6_NETCONF = 25,
-RTNLGRP_MDB = 26,
-RTNLGRP_MPLS_ROUTE = 27,
-RTNLGRP_NSID = 28,
-RTNLGRP_MPLS_NETCONF = 29,
-RTNLGRP_IPV4_MROUTE_R = 30,
-RTNLGRP_IPV6_MROUTE_R = 31,
-RTNLGRP_NEXTHOP = 32,
-RTNLGRP_BRVLAN = 33,
-RTNLGRP_MCTP_IFADDR = 34,
-RTNLGRP_TUNNEL = 35,
-RTNLGRP_STATS = 36,
-__RTNLGRP_MAX = 37,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcamsg {
-pub tca_family: crate::ctypes::c_uchar,
-pub tca__pad1: crate::ctypes::c_uchar,
-pub tca__pad2: crate::ctypes::c_ushort,
-}
-pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC;
-pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB;
-pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS;
-pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT;
-pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA;
-pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_66 {
-TCA_ROOT_UNSPEC = 0,
-TCA_ROOT_TAB = 1,
-TCA_ROOT_FLAGS = 2,
-TCA_ROOT_COUNT = 3,
-TCA_ROOT_TIME_DELTA = 4,
-__TCA_ROOT_MAX = 5,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/powerpc64/errno.rs b/vendor/linux-raw-sys-0.3.2/src/powerpc64/errno.rs
deleted file mode 100644
index 8c5620d74..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/powerpc64/errno.rs
+++ /dev/null
@@ -1,135 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const EPERM: u32 = 1;
-pub const ENOENT: u32 = 2;
-pub const ESRCH: u32 = 3;
-pub const EINTR: u32 = 4;
-pub const EIO: u32 = 5;
-pub const ENXIO: u32 = 6;
-pub const E2BIG: u32 = 7;
-pub const ENOEXEC: u32 = 8;
-pub const EBADF: u32 = 9;
-pub const ECHILD: u32 = 10;
-pub const EAGAIN: u32 = 11;
-pub const ENOMEM: u32 = 12;
-pub const EACCES: u32 = 13;
-pub const EFAULT: u32 = 14;
-pub const ENOTBLK: u32 = 15;
-pub const EBUSY: u32 = 16;
-pub const EEXIST: u32 = 17;
-pub const EXDEV: u32 = 18;
-pub const ENODEV: u32 = 19;
-pub const ENOTDIR: u32 = 20;
-pub const EISDIR: u32 = 21;
-pub const EINVAL: u32 = 22;
-pub const ENFILE: u32 = 23;
-pub const EMFILE: u32 = 24;
-pub const ENOTTY: u32 = 25;
-pub const ETXTBSY: u32 = 26;
-pub const EFBIG: u32 = 27;
-pub const ENOSPC: u32 = 28;
-pub const ESPIPE: u32 = 29;
-pub const EROFS: u32 = 30;
-pub const EMLINK: u32 = 31;
-pub const EPIPE: u32 = 32;
-pub const EDOM: u32 = 33;
-pub const ERANGE: u32 = 34;
-pub const EDEADLK: u32 = 35;
-pub const ENAMETOOLONG: u32 = 36;
-pub const ENOLCK: u32 = 37;
-pub const ENOSYS: u32 = 38;
-pub const ENOTEMPTY: u32 = 39;
-pub const ELOOP: u32 = 40;
-pub const EWOULDBLOCK: u32 = 11;
-pub const ENOMSG: u32 = 42;
-pub const EIDRM: u32 = 43;
-pub const ECHRNG: u32 = 44;
-pub const EL2NSYNC: u32 = 45;
-pub const EL3HLT: u32 = 46;
-pub const EL3RST: u32 = 47;
-pub const ELNRNG: u32 = 48;
-pub const EUNATCH: u32 = 49;
-pub const ENOCSI: u32 = 50;
-pub const EL2HLT: u32 = 51;
-pub const EBADE: u32 = 52;
-pub const EBADR: u32 = 53;
-pub const EXFULL: u32 = 54;
-pub const ENOANO: u32 = 55;
-pub const EBADRQC: u32 = 56;
-pub const EBADSLT: u32 = 57;
-pub const EDEADLOCK: u32 = 35;
-pub const EBFONT: u32 = 59;
-pub const ENOSTR: u32 = 60;
-pub const ENODATA: u32 = 61;
-pub const ETIME: u32 = 62;
-pub const ENOSR: u32 = 63;
-pub const ENONET: u32 = 64;
-pub const ENOPKG: u32 = 65;
-pub const EREMOTE: u32 = 66;
-pub const ENOLINK: u32 = 67;
-pub const EADV: u32 = 68;
-pub const ESRMNT: u32 = 69;
-pub const ECOMM: u32 = 70;
-pub const EPROTO: u32 = 71;
-pub const EMULTIHOP: u32 = 72;
-pub const EDOTDOT: u32 = 73;
-pub const EBADMSG: u32 = 74;
-pub const EOVERFLOW: u32 = 75;
-pub const ENOTUNIQ: u32 = 76;
-pub const EBADFD: u32 = 77;
-pub const EREMCHG: u32 = 78;
-pub const ELIBACC: u32 = 79;
-pub const ELIBBAD: u32 = 80;
-pub const ELIBSCN: u32 = 81;
-pub const ELIBMAX: u32 = 82;
-pub const ELIBEXEC: u32 = 83;
-pub const EILSEQ: u32 = 84;
-pub const ERESTART: u32 = 85;
-pub const ESTRPIPE: u32 = 86;
-pub const EUSERS: u32 = 87;
-pub const ENOTSOCK: u32 = 88;
-pub const EDESTADDRREQ: u32 = 89;
-pub const EMSGSIZE: u32 = 90;
-pub const EPROTOTYPE: u32 = 91;
-pub const ENOPROTOOPT: u32 = 92;
-pub const EPROTONOSUPPORT: u32 = 93;
-pub const ESOCKTNOSUPPORT: u32 = 94;
-pub const EOPNOTSUPP: u32 = 95;
-pub const EPFNOSUPPORT: u32 = 96;
-pub const EAFNOSUPPORT: u32 = 97;
-pub const EADDRINUSE: u32 = 98;
-pub const EADDRNOTAVAIL: u32 = 99;
-pub const ENETDOWN: u32 = 100;
-pub const ENETUNREACH: u32 = 101;
-pub const ENETRESET: u32 = 102;
-pub const ECONNABORTED: u32 = 103;
-pub const ECONNRESET: u32 = 104;
-pub const ENOBUFS: u32 = 105;
-pub const EISCONN: u32 = 106;
-pub const ENOTCONN: u32 = 107;
-pub const ESHUTDOWN: u32 = 108;
-pub const ETOOMANYREFS: u32 = 109;
-pub const ETIMEDOUT: u32 = 110;
-pub const ECONNREFUSED: u32 = 111;
-pub const EHOSTDOWN: u32 = 112;
-pub const EHOSTUNREACH: u32 = 113;
-pub const EALREADY: u32 = 114;
-pub const EINPROGRESS: u32 = 115;
-pub const ESTALE: u32 = 116;
-pub const EUCLEAN: u32 = 117;
-pub const ENOTNAM: u32 = 118;
-pub const ENAVAIL: u32 = 119;
-pub const EISNAM: u32 = 120;
-pub const EREMOTEIO: u32 = 121;
-pub const EDQUOT: u32 = 122;
-pub const ENOMEDIUM: u32 = 123;
-pub const EMEDIUMTYPE: u32 = 124;
-pub const ECANCELED: u32 = 125;
-pub const ENOKEY: u32 = 126;
-pub const EKEYEXPIRED: u32 = 127;
-pub const EKEYREVOKED: u32 = 128;
-pub const EKEYREJECTED: u32 = 129;
-pub const EOWNERDEAD: u32 = 130;
-pub const ENOTRECOVERABLE: u32 = 131;
-pub const ERFKILL: u32 = 132;
-pub const EHWPOISON: u32 = 133;
diff --git a/vendor/linux-raw-sys-0.3.2/src/powerpc64/general.rs b/vendor/linux-raw-sys-0.3.2/src/powerpc64/general.rs
deleted file mode 100644
index 9887396e7..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/powerpc64/general.rs
+++ /dev/null
@@ -1,5420 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
-pub struct __BindgenBitfieldUnit<Storage> {
-storage: Storage,
-}
-impl<Storage> __BindgenBitfieldUnit<Storage> {
-#[inline]
-pub const fn new(storage: Storage) -> Self {
-Self { storage }
-}
-}
-impl<Storage> __BindgenBitfieldUnit<Storage>
-where
-Storage: AsRef<[u8]> + AsMut<[u8]>,
-{
-#[inline]
-pub fn get_bit(&self, index: usize) -> bool {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = self.storage.as_ref()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-byte & mask == mask
-}
-#[inline]
-pub fn set_bit(&mut self, index: usize, val: bool) {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = &mut self.storage.as_mut()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-if val {
-*byte |= mask;
-} else {
-*byte &= !mask;
-}
-}
-#[inline]
-pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-let mut val = 0;
-for i in 0..(bit_width as usize) {
-if self.get_bit(i + bit_offset) {
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-val |= 1 << index;
-}
-}
-val
-}
-#[inline]
-pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-for i in 0..(bit_width as usize) {
-let mask = 1 << i;
-let val_bit_is_set = val & mask == mask;
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-self.set_bit(index + bit_offset, val_bit_is_set);
-}
-}
-}
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-#[repr(C)]
-pub struct __BindgenUnionField<T>(::core::marker::PhantomData<T>);
-impl<T> __BindgenUnionField<T> {
-#[inline]
-pub const fn new() -> Self {
-__BindgenUnionField(::core::marker::PhantomData)
-}
-#[inline]
-pub unsafe fn as_ref(&self) -> &T {
-::core::mem::transmute(self)
-}
-#[inline]
-pub unsafe fn as_mut(&mut self) -> &mut T {
-::core::mem::transmute(self)
-}
-}
-impl<T> ::core::default::Default for __BindgenUnionField<T> {
-#[inline]
-fn default() -> Self {
-Self::new()
-}
-}
-impl<T> ::core::clone::Clone for __BindgenUnionField<T> {
-#[inline]
-fn clone(&self) -> Self {
-Self::new()
-}
-}
-impl<T> ::core::marker::Copy for __BindgenUnionField<T> {}
-impl<T> ::core::fmt::Debug for __BindgenUnionField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__BindgenUnionField")
-}
-}
-impl<T> ::core::hash::Hash for __BindgenUnionField<T> {
-fn hash<H: ::core::hash::Hasher>(&self, _state: &mut H) {}
-}
-impl<T> ::core::cmp::PartialEq for __BindgenUnionField<T> {
-fn eq(&self, _other: &__BindgenUnionField<T>) -> bool {
-true
-}
-}
-impl<T> ::core::cmp::Eq for __BindgenUnionField<T> {}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const AT_DCACHEBSIZE: u32 = 19;
-pub const AT_ICACHEBSIZE: u32 = 20;
-pub const AT_UCACHEBSIZE: u32 = 21;
-pub const AT_IGNOREPPC: u32 = 22;
-pub const AT_SYSINFO_EHDR: u32 = 33;
-pub const AT_L1I_CACHESIZE: u32 = 40;
-pub const AT_L1I_CACHEGEOMETRY: u32 = 41;
-pub const AT_L1D_CACHESIZE: u32 = 42;
-pub const AT_L1D_CACHEGEOMETRY: u32 = 43;
-pub const AT_L2_CACHESIZE: u32 = 44;
-pub const AT_L2_CACHEGEOMETRY: u32 = 45;
-pub const AT_L3_CACHESIZE: u32 = 46;
-pub const AT_L3_CACHEGEOMETRY: u32 = 47;
-pub const AT_MINSIGSTKSZ: u32 = 51;
-pub const AT_VECTOR_SIZE_ARCH: u32 = 15;
-pub const AT_NULL: u32 = 0;
-pub const AT_IGNORE: u32 = 1;
-pub const AT_EXECFD: u32 = 2;
-pub const AT_PHDR: u32 = 3;
-pub const AT_PHENT: u32 = 4;
-pub const AT_PHNUM: u32 = 5;
-pub const AT_PAGESZ: u32 = 6;
-pub const AT_BASE: u32 = 7;
-pub const AT_FLAGS: u32 = 8;
-pub const AT_ENTRY: u32 = 9;
-pub const AT_NOTELF: u32 = 10;
-pub const AT_UID: u32 = 11;
-pub const AT_EUID: u32 = 12;
-pub const AT_GID: u32 = 13;
-pub const AT_EGID: u32 = 14;
-pub const AT_PLATFORM: u32 = 15;
-pub const AT_HWCAP: u32 = 16;
-pub const AT_CLKTCK: u32 = 17;
-pub const AT_SECURE: u32 = 23;
-pub const AT_BASE_PLATFORM: u32 = 24;
-pub const AT_RANDOM: u32 = 25;
-pub const AT_HWCAP2: u32 = 26;
-pub const AT_EXECFN: u32 = 31;
-pub const __BITS_PER_LONG: u32 = 64;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S_1: u32 = 1;
-pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798;
-pub const _LINUX_CAPABILITY_U32S_2: u32 = 2;
-pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514;
-pub const _LINUX_CAPABILITY_U32S_3: u32 = 2;
-pub const VFS_CAP_REVISION_MASK: u32 = 4278190080;
-pub const VFS_CAP_REVISION_SHIFT: u32 = 24;
-pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081;
-pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1;
-pub const VFS_CAP_REVISION_1: u32 = 16777216;
-pub const VFS_CAP_U32_1: u32 = 1;
-pub const VFS_CAP_REVISION_2: u32 = 33554432;
-pub const VFS_CAP_U32_2: u32 = 2;
-pub const VFS_CAP_REVISION_3: u32 = 50331648;
-pub const VFS_CAP_U32_3: u32 = 2;
-pub const VFS_CAP_U32: u32 = 2;
-pub const VFS_CAP_REVISION: u32 = 50331648;
-pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S: u32 = 1;
-pub const CAP_CHOWN: u32 = 0;
-pub const CAP_DAC_OVERRIDE: u32 = 1;
-pub const CAP_DAC_READ_SEARCH: u32 = 2;
-pub const CAP_FOWNER: u32 = 3;
-pub const CAP_FSETID: u32 = 4;
-pub const CAP_KILL: u32 = 5;
-pub const CAP_SETGID: u32 = 6;
-pub const CAP_SETUID: u32 = 7;
-pub const CAP_SETPCAP: u32 = 8;
-pub const CAP_LINUX_IMMUTABLE: u32 = 9;
-pub const CAP_NET_BIND_SERVICE: u32 = 10;
-pub const CAP_NET_BROADCAST: u32 = 11;
-pub const CAP_NET_ADMIN: u32 = 12;
-pub const CAP_NET_RAW: u32 = 13;
-pub const CAP_IPC_LOCK: u32 = 14;
-pub const CAP_IPC_OWNER: u32 = 15;
-pub const CAP_SYS_MODULE: u32 = 16;
-pub const CAP_SYS_RAWIO: u32 = 17;
-pub const CAP_SYS_CHROOT: u32 = 18;
-pub const CAP_SYS_PTRACE: u32 = 19;
-pub const CAP_SYS_PACCT: u32 = 20;
-pub const CAP_SYS_ADMIN: u32 = 21;
-pub const CAP_SYS_BOOT: u32 = 22;
-pub const CAP_SYS_NICE: u32 = 23;
-pub const CAP_SYS_RESOURCE: u32 = 24;
-pub const CAP_SYS_TIME: u32 = 25;
-pub const CAP_SYS_TTY_CONFIG: u32 = 26;
-pub const CAP_MKNOD: u32 = 27;
-pub const CAP_LEASE: u32 = 28;
-pub const CAP_AUDIT_WRITE: u32 = 29;
-pub const CAP_AUDIT_CONTROL: u32 = 30;
-pub const CAP_SETFCAP: u32 = 31;
-pub const CAP_MAC_OVERRIDE: u32 = 32;
-pub const CAP_MAC_ADMIN: u32 = 33;
-pub const CAP_SYSLOG: u32 = 34;
-pub const CAP_WAKE_ALARM: u32 = 35;
-pub const CAP_BLOCK_SUSPEND: u32 = 36;
-pub const CAP_AUDIT_READ: u32 = 37;
-pub const CAP_PERFMON: u32 = 38;
-pub const CAP_BPF: u32 = 39;
-pub const CAP_CHECKPOINT_RESTORE: u32 = 40;
-pub const CAP_LAST_CAP: u32 = 40;
-pub const O_DIRECTORY: u32 = 16384;
-pub const O_NOFOLLOW: u32 = 32768;
-pub const O_LARGEFILE: u32 = 65536;
-pub const O_DIRECT: u32 = 131072;
-pub const O_ACCMODE: u32 = 3;
-pub const O_RDONLY: u32 = 0;
-pub const O_WRONLY: u32 = 1;
-pub const O_RDWR: u32 = 2;
-pub const O_CREAT: u32 = 64;
-pub const O_EXCL: u32 = 128;
-pub const O_NOCTTY: u32 = 256;
-pub const O_TRUNC: u32 = 512;
-pub const O_APPEND: u32 = 1024;
-pub const O_NONBLOCK: u32 = 2048;
-pub const O_DSYNC: u32 = 4096;
-pub const FASYNC: u32 = 8192;
-pub const O_NOATIME: u32 = 262144;
-pub const O_CLOEXEC: u32 = 524288;
-pub const __O_SYNC: u32 = 1048576;
-pub const O_SYNC: u32 = 1052672;
-pub const O_PATH: u32 = 2097152;
-pub const __O_TMPFILE: u32 = 4194304;
-pub const O_TMPFILE: u32 = 4210688;
-pub const O_TMPFILE_MASK: u32 = 4210752;
-pub const O_NDELAY: u32 = 2048;
-pub const F_DUPFD: u32 = 0;
-pub const F_GETFD: u32 = 1;
-pub const F_SETFD: u32 = 2;
-pub const F_GETFL: u32 = 3;
-pub const F_SETFL: u32 = 4;
-pub const F_GETLK: u32 = 5;
-pub const F_SETLK: u32 = 6;
-pub const F_SETLKW: u32 = 7;
-pub const F_SETOWN: u32 = 8;
-pub const F_GETOWN: u32 = 9;
-pub const F_SETSIG: u32 = 10;
-pub const F_GETSIG: u32 = 11;
-pub const F_SETOWN_EX: u32 = 15;
-pub const F_GETOWN_EX: u32 = 16;
-pub const F_GETOWNER_UIDS: u32 = 17;
-pub const F_OFD_GETLK: u32 = 36;
-pub const F_OFD_SETLK: u32 = 37;
-pub const F_OFD_SETLKW: u32 = 38;
-pub const F_OWNER_TID: u32 = 0;
-pub const F_OWNER_PID: u32 = 1;
-pub const F_OWNER_PGRP: u32 = 2;
-pub const FD_CLOEXEC: u32 = 1;
-pub const F_RDLCK: u32 = 0;
-pub const F_WRLCK: u32 = 1;
-pub const F_UNLCK: u32 = 2;
-pub const F_EXLCK: u32 = 4;
-pub const F_SHLCK: u32 = 8;
-pub const LOCK_SH: u32 = 1;
-pub const LOCK_EX: u32 = 2;
-pub const LOCK_NB: u32 = 4;
-pub const LOCK_UN: u32 = 8;
-pub const LOCK_MAND: u32 = 32;
-pub const LOCK_READ: u32 = 64;
-pub const LOCK_WRITE: u32 = 128;
-pub const LOCK_RW: u32 = 192;
-pub const F_LINUX_SPECIFIC_BASE: u32 = 1024;
-pub const RESOLVE_NO_XDEV: u32 = 1;
-pub const RESOLVE_NO_MAGICLINKS: u32 = 2;
-pub const RESOLVE_NO_SYMLINKS: u32 = 4;
-pub const RESOLVE_BENEATH: u32 = 8;
-pub const RESOLVE_IN_ROOT: u32 = 16;
-pub const RESOLVE_CACHED: u32 = 32;
-pub const F_SETLEASE: u32 = 1024;
-pub const F_GETLEASE: u32 = 1025;
-pub const F_CANCELLK: u32 = 1029;
-pub const F_DUPFD_CLOEXEC: u32 = 1030;
-pub const F_NOTIFY: u32 = 1026;
-pub const F_SETPIPE_SZ: u32 = 1031;
-pub const F_GETPIPE_SZ: u32 = 1032;
-pub const F_ADD_SEALS: u32 = 1033;
-pub const F_GET_SEALS: u32 = 1034;
-pub const F_SEAL_SEAL: u32 = 1;
-pub const F_SEAL_SHRINK: u32 = 2;
-pub const F_SEAL_GROW: u32 = 4;
-pub const F_SEAL_WRITE: u32 = 8;
-pub const F_SEAL_FUTURE_WRITE: u32 = 16;
-pub const F_GET_RW_HINT: u32 = 1035;
-pub const F_SET_RW_HINT: u32 = 1036;
-pub const F_GET_FILE_RW_HINT: u32 = 1037;
-pub const F_SET_FILE_RW_HINT: u32 = 1038;
-pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const RWH_WRITE_LIFE_NONE: u32 = 1;
-pub const RWH_WRITE_LIFE_SHORT: u32 = 2;
-pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3;
-pub const RWH_WRITE_LIFE_LONG: u32 = 4;
-pub const RWH_WRITE_LIFE_EXTREME: u32 = 5;
-pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const DN_ACCESS: u32 = 1;
-pub const DN_MODIFY: u32 = 2;
-pub const DN_CREATE: u32 = 4;
-pub const DN_DELETE: u32 = 8;
-pub const DN_RENAME: u32 = 16;
-pub const DN_ATTRIB: u32 = 32;
-pub const DN_MULTISHOT: u32 = 2147483648;
-pub const AT_FDCWD: i32 = -100;
-pub const AT_SYMLINK_NOFOLLOW: u32 = 256;
-pub const AT_EACCESS: u32 = 512;
-pub const AT_REMOVEDIR: u32 = 512;
-pub const AT_SYMLINK_FOLLOW: u32 = 1024;
-pub const AT_NO_AUTOMOUNT: u32 = 2048;
-pub const AT_EMPTY_PATH: u32 = 4096;
-pub const AT_STATX_SYNC_TYPE: u32 = 24576;
-pub const AT_STATX_SYNC_AS_STAT: u32 = 0;
-pub const AT_STATX_FORCE_SYNC: u32 = 8192;
-pub const AT_STATX_DONT_SYNC: u32 = 16384;
-pub const AT_RECURSIVE: u32 = 32768;
-pub const EPOLL_CLOEXEC: u32 = 524288;
-pub const EPOLL_CTL_ADD: u32 = 1;
-pub const EPOLL_CTL_DEL: u32 = 2;
-pub const EPOLL_CTL_MOD: u32 = 3;
-pub const POSIX_FADV_NORMAL: u32 = 0;
-pub const POSIX_FADV_RANDOM: u32 = 1;
-pub const POSIX_FADV_SEQUENTIAL: u32 = 2;
-pub const POSIX_FADV_WILLNEED: u32 = 3;
-pub const POSIX_FADV_DONTNEED: u32 = 4;
-pub const POSIX_FADV_NOREUSE: u32 = 5;
-pub const FALLOC_FL_KEEP_SIZE: u32 = 1;
-pub const FALLOC_FL_PUNCH_HOLE: u32 = 2;
-pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4;
-pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8;
-pub const FALLOC_FL_ZERO_RANGE: u32 = 16;
-pub const FALLOC_FL_INSERT_RANGE: u32 = 32;
-pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64;
-pub const NR_OPEN: u32 = 1024;
-pub const NGROUPS_MAX: u32 = 65536;
-pub const ARG_MAX: u32 = 131072;
-pub const LINK_MAX: u32 = 127;
-pub const MAX_CANON: u32 = 255;
-pub const MAX_INPUT: u32 = 255;
-pub const NAME_MAX: u32 = 255;
-pub const PATH_MAX: u32 = 4096;
-pub const PIPE_BUF: u32 = 4096;
-pub const XATTR_NAME_MAX: u32 = 255;
-pub const XATTR_SIZE_MAX: u32 = 65536;
-pub const XATTR_LIST_MAX: u32 = 65536;
-pub const RTSIG_MAX: u32 = 32;
-pub const _IOC_SIZEBITS: u32 = 13;
-pub const _IOC_DIRBITS: u32 = 3;
-pub const _IOC_NONE: u32 = 1;
-pub const _IOC_READ: u32 = 2;
-pub const _IOC_WRITE: u32 = 4;
-pub const _IOC_NRBITS: u32 = 8;
-pub const _IOC_TYPEBITS: u32 = 8;
-pub const _IOC_NRMASK: u32 = 255;
-pub const _IOC_TYPEMASK: u32 = 255;
-pub const _IOC_SIZEMASK: u32 = 8191;
-pub const _IOC_DIRMASK: u32 = 7;
-pub const _IOC_NRSHIFT: u32 = 0;
-pub const _IOC_TYPESHIFT: u32 = 8;
-pub const _IOC_SIZESHIFT: u32 = 16;
-pub const _IOC_DIRSHIFT: u32 = 29;
-pub const IOC_IN: u32 = 2147483648;
-pub const IOC_OUT: u32 = 1073741824;
-pub const IOC_INOUT: u32 = 3221225472;
-pub const IOCSIZE_MASK: u32 = 536805376;
-pub const IOCSIZE_SHIFT: u32 = 16;
-pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16;
-pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1;
-pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4;
-pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5;
-pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6;
-pub const FSCRYPT_MODE_SM4_XTS: u32 = 7;
-pub const FSCRYPT_MODE_SM4_CTS: u32 = 8;
-pub const FSCRYPT_MODE_ADIANTUM: u32 = 9;
-pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10;
-pub const FSCRYPT_POLICY_V1: u32 = 0;
-pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64;
-pub const FSCRYPT_POLICY_V2: u32 = 2;
-pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16;
-pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1;
-pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1;
-pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3;
-pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1;
-pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FS_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FS_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FS_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FS_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FS_POLICY_FLAGS_VALID: u32 = 7;
-pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0;
-pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1;
-pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2;
-pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3;
-pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4;
-pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5;
-pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6;
-pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9;
-pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FS_MAX_KEY_SIZE: u32 = 64;
-pub const MS_RDONLY: u32 = 1;
-pub const MS_NOSUID: u32 = 2;
-pub const MS_NODEV: u32 = 4;
-pub const MS_NOEXEC: u32 = 8;
-pub const MS_SYNCHRONOUS: u32 = 16;
-pub const MS_REMOUNT: u32 = 32;
-pub const MS_MANDLOCK: u32 = 64;
-pub const MS_DIRSYNC: u32 = 128;
-pub const MS_NOSYMFOLLOW: u32 = 256;
-pub const MS_NOATIME: u32 = 1024;
-pub const MS_NODIRATIME: u32 = 2048;
-pub const MS_BIND: u32 = 4096;
-pub const MS_MOVE: u32 = 8192;
-pub const MS_REC: u32 = 16384;
-pub const MS_VERBOSE: u32 = 32768;
-pub const MS_SILENT: u32 = 32768;
-pub const MS_POSIXACL: u32 = 65536;
-pub const MS_UNBINDABLE: u32 = 131072;
-pub const MS_PRIVATE: u32 = 262144;
-pub const MS_SLAVE: u32 = 524288;
-pub const MS_SHARED: u32 = 1048576;
-pub const MS_RELATIME: u32 = 2097152;
-pub const MS_KERNMOUNT: u32 = 4194304;
-pub const MS_I_VERSION: u32 = 8388608;
-pub const MS_STRICTATIME: u32 = 16777216;
-pub const MS_LAZYTIME: u32 = 33554432;
-pub const MS_SUBMOUNT: u32 = 67108864;
-pub const MS_NOREMOTELOCK: u32 = 134217728;
-pub const MS_NOSEC: u32 = 268435456;
-pub const MS_BORN: u32 = 536870912;
-pub const MS_ACTIVE: u32 = 1073741824;
-pub const MS_NOUSER: u32 = 2147483648;
-pub const MS_RMT_MASK: u32 = 41943121;
-pub const MS_MGC_VAL: u32 = 3236757504;
-pub const MS_MGC_MSK: u32 = 4294901760;
-pub const OPEN_TREE_CLONE: u32 = 1;
-pub const OPEN_TREE_CLOEXEC: u32 = 524288;
-pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1;
-pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2;
-pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4;
-pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16;
-pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32;
-pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64;
-pub const MOVE_MOUNT_SET_GROUP: u32 = 256;
-pub const MOVE_MOUNT__MASK: u32 = 375;
-pub const FSOPEN_CLOEXEC: u32 = 1;
-pub const FSPICK_CLOEXEC: u32 = 1;
-pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2;
-pub const FSPICK_NO_AUTOMOUNT: u32 = 4;
-pub const FSPICK_EMPTY_PATH: u32 = 8;
-pub const FSMOUNT_CLOEXEC: u32 = 1;
-pub const MOUNT_ATTR_RDONLY: u32 = 1;
-pub const MOUNT_ATTR_NOSUID: u32 = 2;
-pub const MOUNT_ATTR_NODEV: u32 = 4;
-pub const MOUNT_ATTR_NOEXEC: u32 = 8;
-pub const MOUNT_ATTR__ATIME: u32 = 112;
-pub const MOUNT_ATTR_RELATIME: u32 = 0;
-pub const MOUNT_ATTR_NOATIME: u32 = 16;
-pub const MOUNT_ATTR_STRICTATIME: u32 = 32;
-pub const MOUNT_ATTR_NODIRATIME: u32 = 128;
-pub const MOUNT_ATTR_IDMAP: u32 = 1048576;
-pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152;
-pub const MOUNT_ATTR_SIZE_VER0: u32 = 32;
-pub const INR_OPEN_CUR: u32 = 1024;
-pub const INR_OPEN_MAX: u32 = 4096;
-pub const BLOCK_SIZE_BITS: u32 = 10;
-pub const BLOCK_SIZE: u32 = 1024;
-pub const SEEK_SET: u32 = 0;
-pub const SEEK_CUR: u32 = 1;
-pub const SEEK_END: u32 = 2;
-pub const SEEK_DATA: u32 = 3;
-pub const SEEK_HOLE: u32 = 4;
-pub const SEEK_MAX: u32 = 4;
-pub const RENAME_NOREPLACE: u32 = 1;
-pub const RENAME_EXCHANGE: u32 = 2;
-pub const RENAME_WHITEOUT: u32 = 4;
-pub const FILE_DEDUPE_RANGE_SAME: u32 = 0;
-pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1;
-pub const NR_FILE: u32 = 8192;
-pub const FS_XFLAG_REALTIME: u32 = 1;
-pub const FS_XFLAG_PREALLOC: u32 = 2;
-pub const FS_XFLAG_IMMUTABLE: u32 = 8;
-pub const FS_XFLAG_APPEND: u32 = 16;
-pub const FS_XFLAG_SYNC: u32 = 32;
-pub const FS_XFLAG_NOATIME: u32 = 64;
-pub const FS_XFLAG_NODUMP: u32 = 128;
-pub const FS_XFLAG_RTINHERIT: u32 = 256;
-pub const FS_XFLAG_PROJINHERIT: u32 = 512;
-pub const FS_XFLAG_NOSYMLINKS: u32 = 1024;
-pub const FS_XFLAG_EXTSIZE: u32 = 2048;
-pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096;
-pub const FS_XFLAG_NODEFRAG: u32 = 8192;
-pub const FS_XFLAG_FILESTREAM: u32 = 16384;
-pub const FS_XFLAG_DAX: u32 = 32768;
-pub const FS_XFLAG_COWEXTSIZE: u32 = 65536;
-pub const FS_XFLAG_HASATTR: u32 = 2147483648;
-pub const BMAP_IOCTL: u32 = 1;
-pub const FSLABEL_MAX: u32 = 256;
-pub const FS_SECRM_FL: u32 = 1;
-pub const FS_UNRM_FL: u32 = 2;
-pub const FS_COMPR_FL: u32 = 4;
-pub const FS_SYNC_FL: u32 = 8;
-pub const FS_IMMUTABLE_FL: u32 = 16;
-pub const FS_APPEND_FL: u32 = 32;
-pub const FS_NODUMP_FL: u32 = 64;
-pub const FS_NOATIME_FL: u32 = 128;
-pub const FS_DIRTY_FL: u32 = 256;
-pub const FS_COMPRBLK_FL: u32 = 512;
-pub const FS_NOCOMP_FL: u32 = 1024;
-pub const FS_ENCRYPT_FL: u32 = 2048;
-pub const FS_BTREE_FL: u32 = 4096;
-pub const FS_INDEX_FL: u32 = 4096;
-pub const FS_IMAGIC_FL: u32 = 8192;
-pub const FS_JOURNAL_DATA_FL: u32 = 16384;
-pub const FS_NOTAIL_FL: u32 = 32768;
-pub const FS_DIRSYNC_FL: u32 = 65536;
-pub const FS_TOPDIR_FL: u32 = 131072;
-pub const FS_HUGE_FILE_FL: u32 = 262144;
-pub const FS_EXTENT_FL: u32 = 524288;
-pub const FS_VERITY_FL: u32 = 1048576;
-pub const FS_EA_INODE_FL: u32 = 2097152;
-pub const FS_EOFBLOCKS_FL: u32 = 4194304;
-pub const FS_NOCOW_FL: u32 = 8388608;
-pub const FS_DAX_FL: u32 = 33554432;
-pub const FS_INLINE_DATA_FL: u32 = 268435456;
-pub const FS_PROJINHERIT_FL: u32 = 536870912;
-pub const FS_CASEFOLD_FL: u32 = 1073741824;
-pub const FS_RESERVED_FL: u32 = 2147483648;
-pub const FS_FL_USER_VISIBLE: u32 = 253951;
-pub const FS_FL_USER_MODIFIABLE: u32 = 229631;
-pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1;
-pub const SYNC_FILE_RANGE_WRITE: u32 = 2;
-pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4;
-pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7;
-pub const FUTEX_WAIT: u32 = 0;
-pub const FUTEX_WAKE: u32 = 1;
-pub const FUTEX_FD: u32 = 2;
-pub const FUTEX_REQUEUE: u32 = 3;
-pub const FUTEX_CMP_REQUEUE: u32 = 4;
-pub const FUTEX_WAKE_OP: u32 = 5;
-pub const FUTEX_LOCK_PI: u32 = 6;
-pub const FUTEX_UNLOCK_PI: u32 = 7;
-pub const FUTEX_TRYLOCK_PI: u32 = 8;
-pub const FUTEX_WAIT_BITSET: u32 = 9;
-pub const FUTEX_WAKE_BITSET: u32 = 10;
-pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11;
-pub const FUTEX_CMP_REQUEUE_PI: u32 = 12;
-pub const FUTEX_LOCK_PI2: u32 = 13;
-pub const FUTEX_PRIVATE_FLAG: u32 = 128;
-pub const FUTEX_CLOCK_REALTIME: u32 = 256;
-pub const FUTEX_CMD_MASK: i32 = -385;
-pub const FUTEX_WAIT_PRIVATE: u32 = 128;
-pub const FUTEX_WAKE_PRIVATE: u32 = 129;
-pub const FUTEX_REQUEUE_PRIVATE: u32 = 131;
-pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132;
-pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133;
-pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134;
-pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141;
-pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135;
-pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136;
-pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137;
-pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138;
-pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139;
-pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140;
-pub const FUTEX_32: u32 = 2;
-pub const FUTEX_WAITV_MAX: u32 = 128;
-pub const FUTEX_WAITERS: u32 = 2147483648;
-pub const FUTEX_OWNER_DIED: u32 = 1073741824;
-pub const FUTEX_TID_MASK: u32 = 1073741823;
-pub const ROBUST_LIST_LIMIT: u32 = 2048;
-pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295;
-pub const FUTEX_OP_SET: u32 = 0;
-pub const FUTEX_OP_ADD: u32 = 1;
-pub const FUTEX_OP_OR: u32 = 2;
-pub const FUTEX_OP_ANDN: u32 = 3;
-pub const FUTEX_OP_XOR: u32 = 4;
-pub const FUTEX_OP_OPARG_SHIFT: u32 = 8;
-pub const FUTEX_OP_CMP_EQ: u32 = 0;
-pub const FUTEX_OP_CMP_NE: u32 = 1;
-pub const FUTEX_OP_CMP_LT: u32 = 2;
-pub const FUTEX_OP_CMP_LE: u32 = 3;
-pub const FUTEX_OP_CMP_GT: u32 = 4;
-pub const FUTEX_OP_CMP_GE: u32 = 5;
-pub const __UAPI_DEF_IF_IFCONF: u32 = 1;
-pub const __UAPI_DEF_IF_IFMAP: u32 = 1;
-pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1;
-pub const __UAPI_DEF_IF_IFREQ: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1;
-pub const __UAPI_DEF_IN_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN_IPPROTO: u32 = 1;
-pub const __UAPI_DEF_IN_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP_MREQ: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1;
-pub const __UAPI_DEF_IN_CLASS: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1;
-pub const __UAPI_DEF_IPV6_MREQ: u32 = 1;
-pub const __UAPI_DEF_IPPROTO_V6: u32 = 1;
-pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1;
-pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1;
-pub const __UAPI_DEF_XATTR: u32 = 1;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const IP_TOS: u32 = 1;
-pub const IP_TTL: u32 = 2;
-pub const IP_HDRINCL: u32 = 3;
-pub const IP_OPTIONS: u32 = 4;
-pub const IP_ROUTER_ALERT: u32 = 5;
-pub const IP_RECVOPTS: u32 = 6;
-pub const IP_RETOPTS: u32 = 7;
-pub const IP_PKTINFO: u32 = 8;
-pub const IP_PKTOPTIONS: u32 = 9;
-pub const IP_MTU_DISCOVER: u32 = 10;
-pub const IP_RECVERR: u32 = 11;
-pub const IP_RECVTTL: u32 = 12;
-pub const IP_RECVTOS: u32 = 13;
-pub const IP_MTU: u32 = 14;
-pub const IP_FREEBIND: u32 = 15;
-pub const IP_IPSEC_POLICY: u32 = 16;
-pub const IP_XFRM_POLICY: u32 = 17;
-pub const IP_PASSSEC: u32 = 18;
-pub const IP_TRANSPARENT: u32 = 19;
-pub const IP_RECVRETOPTS: u32 = 7;
-pub const IP_ORIGDSTADDR: u32 = 20;
-pub const IP_RECVORIGDSTADDR: u32 = 20;
-pub const IP_MINTTL: u32 = 21;
-pub const IP_NODEFRAG: u32 = 22;
-pub const IP_CHECKSUM: u32 = 23;
-pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24;
-pub const IP_RECVFRAGSIZE: u32 = 25;
-pub const IP_RECVERR_RFC4884: u32 = 26;
-pub const IP_PMTUDISC_DONT: u32 = 0;
-pub const IP_PMTUDISC_WANT: u32 = 1;
-pub const IP_PMTUDISC_DO: u32 = 2;
-pub const IP_PMTUDISC_PROBE: u32 = 3;
-pub const IP_PMTUDISC_INTERFACE: u32 = 4;
-pub const IP_PMTUDISC_OMIT: u32 = 5;
-pub const IP_MULTICAST_IF: u32 = 32;
-pub const IP_MULTICAST_TTL: u32 = 33;
-pub const IP_MULTICAST_LOOP: u32 = 34;
-pub const IP_ADD_MEMBERSHIP: u32 = 35;
-pub const IP_DROP_MEMBERSHIP: u32 = 36;
-pub const IP_UNBLOCK_SOURCE: u32 = 37;
-pub const IP_BLOCK_SOURCE: u32 = 38;
-pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39;
-pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40;
-pub const IP_MSFILTER: u32 = 41;
-pub const MCAST_JOIN_GROUP: u32 = 42;
-pub const MCAST_BLOCK_SOURCE: u32 = 43;
-pub const MCAST_UNBLOCK_SOURCE: u32 = 44;
-pub const MCAST_LEAVE_GROUP: u32 = 45;
-pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46;
-pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47;
-pub const MCAST_MSFILTER: u32 = 48;
-pub const IP_MULTICAST_ALL: u32 = 49;
-pub const IP_UNICAST_IF: u32 = 50;
-pub const MCAST_EXCLUDE: u32 = 0;
-pub const MCAST_INCLUDE: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1;
-pub const __SOCK_SIZE__: u32 = 16;
-pub const IN_CLASSA_NET: u32 = 4278190080;
-pub const IN_CLASSA_NSHIFT: u32 = 24;
-pub const IN_CLASSA_HOST: u32 = 16777215;
-pub const IN_CLASSA_MAX: u32 = 128;
-pub const IN_CLASSB_NET: u32 = 4294901760;
-pub const IN_CLASSB_NSHIFT: u32 = 16;
-pub const IN_CLASSB_HOST: u32 = 65535;
-pub const IN_CLASSB_MAX: u32 = 65536;
-pub const IN_CLASSC_NET: u32 = 4294967040;
-pub const IN_CLASSC_NSHIFT: u32 = 8;
-pub const IN_CLASSC_HOST: u32 = 255;
-pub const IN_MULTICAST_NET: u32 = 3758096384;
-pub const IN_CLASSE_NET: u32 = 4294967295;
-pub const IN_CLASSE_NSHIFT: u32 = 0;
-pub const IN_LOOPBACKNET: u32 = 127;
-pub const INADDR_LOOPBACK: u32 = 2130706433;
-pub const INADDR_UNSPEC_GROUP: u32 = 3758096384;
-pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385;
-pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386;
-pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490;
-pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639;
-pub const __BIG_ENDIAN: u32 = 4321;
-pub const IN_ACCESS: u32 = 1;
-pub const IN_MODIFY: u32 = 2;
-pub const IN_ATTRIB: u32 = 4;
-pub const IN_CLOSE_WRITE: u32 = 8;
-pub const IN_CLOSE_NOWRITE: u32 = 16;
-pub const IN_OPEN: u32 = 32;
-pub const IN_MOVED_FROM: u32 = 64;
-pub const IN_MOVED_TO: u32 = 128;
-pub const IN_CREATE: u32 = 256;
-pub const IN_DELETE: u32 = 512;
-pub const IN_DELETE_SELF: u32 = 1024;
-pub const IN_MOVE_SELF: u32 = 2048;
-pub const IN_UNMOUNT: u32 = 8192;
-pub const IN_Q_OVERFLOW: u32 = 16384;
-pub const IN_IGNORED: u32 = 32768;
-pub const IN_CLOSE: u32 = 24;
-pub const IN_MOVE: u32 = 192;
-pub const IN_ONLYDIR: u32 = 16777216;
-pub const IN_DONT_FOLLOW: u32 = 33554432;
-pub const IN_EXCL_UNLINK: u32 = 67108864;
-pub const IN_MASK_CREATE: u32 = 268435456;
-pub const IN_MASK_ADD: u32 = 536870912;
-pub const IN_ISDIR: u32 = 1073741824;
-pub const IN_ONESHOT: u32 = 2147483648;
-pub const IN_ALL_EVENTS: u32 = 4095;
-pub const IN_CLOEXEC: u32 = 524288;
-pub const IN_NONBLOCK: u32 = 2048;
-pub const IPTOS_TOS_MASK: u32 = 30;
-pub const IPTOS_LOWDELAY: u32 = 16;
-pub const IPTOS_THROUGHPUT: u32 = 8;
-pub const IPTOS_RELIABILITY: u32 = 4;
-pub const IPTOS_MINCOST: u32 = 2;
-pub const IPTOS_PREC_MASK: u32 = 224;
-pub const IPTOS_PREC_NETCONTROL: u32 = 224;
-pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192;
-pub const IPTOS_PREC_CRITIC_ECP: u32 = 160;
-pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128;
-pub const IPTOS_PREC_FLASH: u32 = 96;
-pub const IPTOS_PREC_IMMEDIATE: u32 = 64;
-pub const IPTOS_PREC_PRIORITY: u32 = 32;
-pub const IPTOS_PREC_ROUTINE: u32 = 0;
-pub const IPOPT_COPY: u32 = 128;
-pub const IPOPT_CLASS_MASK: u32 = 96;
-pub const IPOPT_NUMBER_MASK: u32 = 31;
-pub const IPOPT_CONTROL: u32 = 0;
-pub const IPOPT_RESERVED1: u32 = 32;
-pub const IPOPT_MEASUREMENT: u32 = 64;
-pub const IPOPT_RESERVED2: u32 = 96;
-pub const IPOPT_END: u32 = 0;
-pub const IPOPT_NOOP: u32 = 1;
-pub const IPOPT_SEC: u32 = 130;
-pub const IPOPT_LSRR: u32 = 131;
-pub const IPOPT_TIMESTAMP: u32 = 68;
-pub const IPOPT_CIPSO: u32 = 134;
-pub const IPOPT_RR: u32 = 7;
-pub const IPOPT_SID: u32 = 136;
-pub const IPOPT_SSRR: u32 = 137;
-pub const IPOPT_RA: u32 = 148;
-pub const IPVERSION: u32 = 4;
-pub const MAXTTL: u32 = 255;
-pub const IPDEFTTL: u32 = 64;
-pub const IPOPT_OPTVAL: u32 = 0;
-pub const IPOPT_OLEN: u32 = 1;
-pub const IPOPT_OFFSET: u32 = 2;
-pub const IPOPT_MINOFF: u32 = 4;
-pub const MAX_IPOPTLEN: u32 = 40;
-pub const IPOPT_NOP: u32 = 1;
-pub const IPOPT_EOL: u32 = 0;
-pub const IPOPT_TS: u32 = 68;
-pub const IPOPT_TS_TSONLY: u32 = 0;
-pub const IPOPT_TS_TSANDADDR: u32 = 1;
-pub const IPOPT_TS_PRESPEC: u32 = 3;
-pub const IPV4_BEET_PHMAXLEN: u32 = 8;
-pub const IPV6_FL_A_GET: u32 = 0;
-pub const IPV6_FL_A_PUT: u32 = 1;
-pub const IPV6_FL_A_RENEW: u32 = 2;
-pub const IPV6_FL_F_CREATE: u32 = 1;
-pub const IPV6_FL_F_EXCL: u32 = 2;
-pub const IPV6_FL_F_REFLECT: u32 = 4;
-pub const IPV6_FL_F_REMOTE: u32 = 8;
-pub const IPV6_FL_S_NONE: u32 = 0;
-pub const IPV6_FL_S_EXCL: u32 = 1;
-pub const IPV6_FL_S_PROCESS: u32 = 2;
-pub const IPV6_FL_S_USER: u32 = 3;
-pub const IPV6_FL_S_ANY: u32 = 255;
-pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575;
-pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880;
-pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0;
-pub const IPV6_PRIORITY_FILLER: u32 = 256;
-pub const IPV6_PRIORITY_UNATTENDED: u32 = 512;
-pub const IPV6_PRIORITY_RESERVED1: u32 = 768;
-pub const IPV6_PRIORITY_BULK: u32 = 1024;
-pub const IPV6_PRIORITY_RESERVED2: u32 = 1280;
-pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536;
-pub const IPV6_PRIORITY_CONTROL: u32 = 1792;
-pub const IPV6_PRIORITY_8: u32 = 2048;
-pub const IPV6_PRIORITY_9: u32 = 2304;
-pub const IPV6_PRIORITY_10: u32 = 2560;
-pub const IPV6_PRIORITY_11: u32 = 2816;
-pub const IPV6_PRIORITY_12: u32 = 3072;
-pub const IPV6_PRIORITY_13: u32 = 3328;
-pub const IPV6_PRIORITY_14: u32 = 3584;
-pub const IPV6_PRIORITY_15: u32 = 3840;
-pub const IPPROTO_HOPOPTS: u32 = 0;
-pub const IPPROTO_ROUTING: u32 = 43;
-pub const IPPROTO_FRAGMENT: u32 = 44;
-pub const IPPROTO_ICMPV6: u32 = 58;
-pub const IPPROTO_NONE: u32 = 59;
-pub const IPPROTO_DSTOPTS: u32 = 60;
-pub const IPPROTO_MH: u32 = 135;
-pub const IPV6_TLV_PAD1: u32 = 0;
-pub const IPV6_TLV_PADN: u32 = 1;
-pub const IPV6_TLV_ROUTERALERT: u32 = 5;
-pub const IPV6_TLV_CALIPSO: u32 = 7;
-pub const IPV6_TLV_IOAM: u32 = 49;
-pub const IPV6_TLV_JUMBO: u32 = 194;
-pub const IPV6_TLV_HAO: u32 = 201;
-pub const IPV6_ADDRFORM: u32 = 1;
-pub const IPV6_2292PKTINFO: u32 = 2;
-pub const IPV6_2292HOPOPTS: u32 = 3;
-pub const IPV6_2292DSTOPTS: u32 = 4;
-pub const IPV6_2292RTHDR: u32 = 5;
-pub const IPV6_2292PKTOPTIONS: u32 = 6;
-pub const IPV6_CHECKSUM: u32 = 7;
-pub const IPV6_2292HOPLIMIT: u32 = 8;
-pub const IPV6_NEXTHOP: u32 = 9;
-pub const IPV6_AUTHHDR: u32 = 10;
-pub const IPV6_FLOWINFO: u32 = 11;
-pub const IPV6_UNICAST_HOPS: u32 = 16;
-pub const IPV6_MULTICAST_IF: u32 = 17;
-pub const IPV6_MULTICAST_HOPS: u32 = 18;
-pub const IPV6_MULTICAST_LOOP: u32 = 19;
-pub const IPV6_ADD_MEMBERSHIP: u32 = 20;
-pub const IPV6_DROP_MEMBERSHIP: u32 = 21;
-pub const IPV6_ROUTER_ALERT: u32 = 22;
-pub const IPV6_MTU_DISCOVER: u32 = 23;
-pub const IPV6_MTU: u32 = 24;
-pub const IPV6_RECVERR: u32 = 25;
-pub const IPV6_V6ONLY: u32 = 26;
-pub const IPV6_JOIN_ANYCAST: u32 = 27;
-pub const IPV6_LEAVE_ANYCAST: u32 = 28;
-pub const IPV6_MULTICAST_ALL: u32 = 29;
-pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30;
-pub const IPV6_RECVERR_RFC4884: u32 = 31;
-pub const IPV6_PMTUDISC_DONT: u32 = 0;
-pub const IPV6_PMTUDISC_WANT: u32 = 1;
-pub const IPV6_PMTUDISC_DO: u32 = 2;
-pub const IPV6_PMTUDISC_PROBE: u32 = 3;
-pub const IPV6_PMTUDISC_INTERFACE: u32 = 4;
-pub const IPV6_PMTUDISC_OMIT: u32 = 5;
-pub const IPV6_FLOWLABEL_MGR: u32 = 32;
-pub const IPV6_FLOWINFO_SEND: u32 = 33;
-pub const IPV6_IPSEC_POLICY: u32 = 34;
-pub const IPV6_XFRM_POLICY: u32 = 35;
-pub const IPV6_HDRINCL: u32 = 36;
-pub const IPV6_RECVPKTINFO: u32 = 49;
-pub const IPV6_PKTINFO: u32 = 50;
-pub const IPV6_RECVHOPLIMIT: u32 = 51;
-pub const IPV6_HOPLIMIT: u32 = 52;
-pub const IPV6_RECVHOPOPTS: u32 = 53;
-pub const IPV6_HOPOPTS: u32 = 54;
-pub const IPV6_RTHDRDSTOPTS: u32 = 55;
-pub const IPV6_RECVRTHDR: u32 = 56;
-pub const IPV6_RTHDR: u32 = 57;
-pub const IPV6_RECVDSTOPTS: u32 = 58;
-pub const IPV6_DSTOPTS: u32 = 59;
-pub const IPV6_RECVPATHMTU: u32 = 60;
-pub const IPV6_PATHMTU: u32 = 61;
-pub const IPV6_DONTFRAG: u32 = 62;
-pub const IPV6_RECVTCLASS: u32 = 66;
-pub const IPV6_TCLASS: u32 = 67;
-pub const IPV6_AUTOFLOWLABEL: u32 = 70;
-pub const IPV6_ADDR_PREFERENCES: u32 = 72;
-pub const IPV6_PREFER_SRC_TMP: u32 = 1;
-pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2;
-pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256;
-pub const IPV6_PREFER_SRC_COA: u32 = 4;
-pub const IPV6_PREFER_SRC_HOME: u32 = 1024;
-pub const IPV6_PREFER_SRC_CGA: u32 = 8;
-pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048;
-pub const IPV6_MINHOPCOUNT: u32 = 73;
-pub const IPV6_ORIGDSTADDR: u32 = 74;
-pub const IPV6_RECVORIGDSTADDR: u32 = 74;
-pub const IPV6_TRANSPARENT: u32 = 75;
-pub const IPV6_UNICAST_IF: u32 = 76;
-pub const IPV6_RECVFRAGSIZE: u32 = 77;
-pub const IPV6_FREEBIND: u32 = 78;
-pub const IPV6_MIN_MTU: u32 = 1280;
-pub const IPV6_SRCRT_STRICT: u32 = 1;
-pub const IPV6_SRCRT_TYPE_0: u32 = 0;
-pub const IPV6_SRCRT_TYPE_2: u32 = 2;
-pub const IPV6_SRCRT_TYPE_3: u32 = 3;
-pub const IPV6_SRCRT_TYPE_4: u32 = 4;
-pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0;
-pub const ADFS_SUPER_MAGIC: u32 = 44533;
-pub const AFFS_SUPER_MAGIC: u32 = 44543;
-pub const AFS_SUPER_MAGIC: u32 = 1397113167;
-pub const AUTOFS_SUPER_MAGIC: u32 = 391;
-pub const CEPH_SUPER_MAGIC: u32 = 12805120;
-pub const CODA_SUPER_MAGIC: u32 = 1937076805;
-pub const CRAMFS_MAGIC: u32 = 684539205;
-pub const CRAMFS_MAGIC_WEND: u32 = 1161678120;
-pub const DEBUGFS_MAGIC: u32 = 1684170528;
-pub const SECURITYFS_MAGIC: u32 = 1935894131;
-pub const SELINUX_MAGIC: u32 = 4185718668;
-pub const SMACK_MAGIC: u32 = 1128357203;
-pub const RAMFS_MAGIC: u32 = 2240043254;
-pub const TMPFS_MAGIC: u32 = 16914836;
-pub const HUGETLBFS_MAGIC: u32 = 2508478710;
-pub const SQUASHFS_MAGIC: u32 = 1936814952;
-pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791;
-pub const EFS_SUPER_MAGIC: u32 = 4278867;
-pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530;
-pub const EXT2_SUPER_MAGIC: u32 = 61267;
-pub const EXT3_SUPER_MAGIC: u32 = 61267;
-pub const XENFS_SUPER_MAGIC: u32 = 2881100148;
-pub const EXT4_SUPER_MAGIC: u32 = 61267;
-pub const BTRFS_SUPER_MAGIC: u32 = 2435016766;
-pub const NILFS_SUPER_MAGIC: u32 = 13364;
-pub const F2FS_SUPER_MAGIC: u32 = 4076150800;
-pub const HPFS_SUPER_MAGIC: u32 = 4187351113;
-pub const ISOFS_SUPER_MAGIC: u32 = 38496;
-pub const JFFS2_SUPER_MAGIC: u32 = 29366;
-pub const XFS_SUPER_MAGIC: u32 = 1481003842;
-pub const PSTOREFS_MAGIC: u32 = 1634035564;
-pub const EFIVARFS_MAGIC: u32 = 3730735588;
-pub const HOSTFS_SUPER_MAGIC: u32 = 12648430;
-pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128;
-pub const FUSE_SUPER_MAGIC: u32 = 1702057286;
-pub const MINIX_SUPER_MAGIC: u32 = 4991;
-pub const MINIX_SUPER_MAGIC2: u32 = 5007;
-pub const MINIX2_SUPER_MAGIC: u32 = 9320;
-pub const MINIX2_SUPER_MAGIC2: u32 = 9336;
-pub const MINIX3_SUPER_MAGIC: u32 = 19802;
-pub const MSDOS_SUPER_MAGIC: u32 = 19780;
-pub const EXFAT_SUPER_MAGIC: u32 = 538032816;
-pub const NCP_SUPER_MAGIC: u32 = 22092;
-pub const NFS_SUPER_MAGIC: u32 = 26985;
-pub const OCFS2_SUPER_MAGIC: u32 = 1952539503;
-pub const OPENPROM_SUPER_MAGIC: u32 = 40865;
-pub const QNX4_SUPER_MAGIC: u32 = 47;
-pub const QNX6_SUPER_MAGIC: u32 = 1746473250;
-pub const AFS_FS_MAGIC: u32 = 1799439955;
-pub const REISERFS_SUPER_MAGIC: u32 = 1382369651;
-pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0";
-pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0";
-pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0";
-pub const SMB_SUPER_MAGIC: u32 = 20859;
-pub const CIFS_SUPER_MAGIC: u32 = 4283649346;
-pub const SMB2_SUPER_MAGIC: u32 = 4266872130;
-pub const CGROUP_SUPER_MAGIC: u32 = 2613483;
-pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888;
-pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209;
-pub const STACK_END_MAGIC: u32 = 1470918301;
-pub const TRACEFS_MAGIC: u32 = 1953653091;
-pub const V9FS_MAGIC: u32 = 16914839;
-pub const BDEVFS_MAGIC: u32 = 1650746742;
-pub const DAXFS_MAGIC: u32 = 1684300152;
-pub const BINFMTFS_MAGIC: u32 = 1112100429;
-pub const DEVPTS_SUPER_MAGIC: u32 = 7377;
-pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352;
-pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762;
-pub const PIPEFS_MAGIC: u32 = 1346981957;
-pub const PROC_SUPER_MAGIC: u32 = 40864;
-pub const SOCKFS_MAGIC: u32 = 1397703499;
-pub const SYSFS_MAGIC: u32 = 1650812274;
-pub const USBDEVICE_SUPER_MAGIC: u32 = 40866;
-pub const MTD_INODE_FS_MAGIC: u32 = 288389204;
-pub const ANON_INODE_FS_MAGIC: u32 = 151263540;
-pub const BTRFS_TEST_MAGIC: u32 = 1936880249;
-pub const NSFS_MAGIC: u32 = 1853056627;
-pub const BPF_FS_MAGIC: u32 = 3405662737;
-pub const AAFS_MAGIC: u32 = 1513908720;
-pub const ZONEFS_MAGIC: u32 = 1515144787;
-pub const UDF_SUPER_MAGIC: u32 = 352400198;
-pub const DMA_BUF_MAGIC: u32 = 1145913666;
-pub const DEVMEM_MAGIC: u32 = 1162691661;
-pub const SECRETMEM_MAGIC: u32 = 1397048141;
-pub const PROT_READ: u32 = 1;
-pub const PROT_WRITE: u32 = 2;
-pub const PROT_EXEC: u32 = 4;
-pub const PROT_SEM: u32 = 8;
-pub const PROT_NONE: u32 = 0;
-pub const PROT_GROWSDOWN: u32 = 16777216;
-pub const PROT_GROWSUP: u32 = 33554432;
-pub const MAP_TYPE: u32 = 15;
-pub const MAP_FIXED: u32 = 16;
-pub const MAP_ANONYMOUS: u32 = 32;
-pub const MAP_POPULATE: u32 = 32768;
-pub const MAP_NONBLOCK: u32 = 65536;
-pub const MAP_STACK: u32 = 131072;
-pub const MAP_HUGETLB: u32 = 262144;
-pub const MAP_SYNC: u32 = 524288;
-pub const MAP_FIXED_NOREPLACE: u32 = 1048576;
-pub const MAP_UNINITIALIZED: u32 = 67108864;
-pub const MLOCK_ONFAULT: u32 = 1;
-pub const MS_ASYNC: u32 = 1;
-pub const MS_INVALIDATE: u32 = 2;
-pub const MS_SYNC: u32 = 4;
-pub const MADV_NORMAL: u32 = 0;
-pub const MADV_RANDOM: u32 = 1;
-pub const MADV_SEQUENTIAL: u32 = 2;
-pub const MADV_WILLNEED: u32 = 3;
-pub const MADV_DONTNEED: u32 = 4;
-pub const MADV_FREE: u32 = 8;
-pub const MADV_REMOVE: u32 = 9;
-pub const MADV_DONTFORK: u32 = 10;
-pub const MADV_DOFORK: u32 = 11;
-pub const MADV_HWPOISON: u32 = 100;
-pub const MADV_SOFT_OFFLINE: u32 = 101;
-pub const MADV_MERGEABLE: u32 = 12;
-pub const MADV_UNMERGEABLE: u32 = 13;
-pub const MADV_HUGEPAGE: u32 = 14;
-pub const MADV_NOHUGEPAGE: u32 = 15;
-pub const MADV_DONTDUMP: u32 = 16;
-pub const MADV_DODUMP: u32 = 17;
-pub const MADV_WIPEONFORK: u32 = 18;
-pub const MADV_KEEPONFORK: u32 = 19;
-pub const MADV_COLD: u32 = 20;
-pub const MADV_PAGEOUT: u32 = 21;
-pub const MADV_POPULATE_READ: u32 = 22;
-pub const MADV_POPULATE_WRITE: u32 = 23;
-pub const MADV_DONTNEED_LOCKED: u32 = 24;
-pub const MADV_COLLAPSE: u32 = 25;
-pub const MAP_FILE: u32 = 0;
-pub const PKEY_DISABLE_ACCESS: u32 = 1;
-pub const PKEY_DISABLE_WRITE: u32 = 2;
-pub const PKEY_ACCESS_MASK: u32 = 3;
-pub const PROT_SAO: u32 = 16;
-pub const MAP_RENAME: u32 = 32;
-pub const MAP_NORESERVE: u32 = 64;
-pub const MAP_LOCKED: u32 = 128;
-pub const MAP_GROWSDOWN: u32 = 256;
-pub const MAP_DENYWRITE: u32 = 2048;
-pub const MAP_EXECUTABLE: u32 = 4096;
-pub const MCL_CURRENT: u32 = 8192;
-pub const MCL_FUTURE: u32 = 16384;
-pub const MCL_ONFAULT: u32 = 32768;
-pub const PKEY_DISABLE_EXECUTE: u32 = 4;
-pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26;
-pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63;
-pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096;
-pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824;
-pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416;
-pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280;
-pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144;
-pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872;
-pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736;
-pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600;
-pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192;
-pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056;
-pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920;
-pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784;
-pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376;
-pub const MREMAP_MAYMOVE: u32 = 1;
-pub const MREMAP_FIXED: u32 = 2;
-pub const MREMAP_DONTUNMAP: u32 = 4;
-pub const OVERCOMMIT_GUESS: u32 = 0;
-pub const OVERCOMMIT_ALWAYS: u32 = 1;
-pub const OVERCOMMIT_NEVER: u32 = 2;
-pub const MAP_SHARED: u32 = 1;
-pub const MAP_PRIVATE: u32 = 2;
-pub const MAP_SHARED_VALIDATE: u32 = 3;
-pub const MAP_HUGE_SHIFT: u32 = 26;
-pub const MAP_HUGE_MASK: u32 = 63;
-pub const MAP_HUGE_16KB: u32 = 939524096;
-pub const MAP_HUGE_64KB: u32 = 1073741824;
-pub const MAP_HUGE_512KB: u32 = 1275068416;
-pub const MAP_HUGE_1MB: u32 = 1342177280;
-pub const MAP_HUGE_2MB: u32 = 1409286144;
-pub const MAP_HUGE_8MB: u32 = 1543503872;
-pub const MAP_HUGE_16MB: u32 = 1610612736;
-pub const MAP_HUGE_32MB: u32 = 1677721600;
-pub const MAP_HUGE_256MB: u32 = 1879048192;
-pub const MAP_HUGE_512MB: u32 = 1946157056;
-pub const MAP_HUGE_1GB: u32 = 2013265920;
-pub const MAP_HUGE_2GB: u32 = 2080374784;
-pub const MAP_HUGE_16GB: u32 = 2281701376;
-pub const SO_RCVLOWAT: u32 = 16;
-pub const SO_SNDLOWAT: u32 = 17;
-pub const SO_RCVTIMEO_OLD: u32 = 18;
-pub const SO_SNDTIMEO_OLD: u32 = 19;
-pub const SO_PASSCRED: u32 = 20;
-pub const SO_PEERCRED: u32 = 21;
-pub const SIOCGSTAMP_OLD: u32 = 35078;
-pub const SIOCGSTAMPNS_OLD: u32 = 35079;
-pub const SOL_SOCKET: u32 = 1;
-pub const SO_DEBUG: u32 = 1;
-pub const SO_REUSEADDR: u32 = 2;
-pub const SO_TYPE: u32 = 3;
-pub const SO_ERROR: u32 = 4;
-pub const SO_DONTROUTE: u32 = 5;
-pub const SO_BROADCAST: u32 = 6;
-pub const SO_SNDBUF: u32 = 7;
-pub const SO_RCVBUF: u32 = 8;
-pub const SO_SNDBUFFORCE: u32 = 32;
-pub const SO_RCVBUFFORCE: u32 = 33;
-pub const SO_KEEPALIVE: u32 = 9;
-pub const SO_OOBINLINE: u32 = 10;
-pub const SO_NO_CHECK: u32 = 11;
-pub const SO_PRIORITY: u32 = 12;
-pub const SO_LINGER: u32 = 13;
-pub const SO_BSDCOMPAT: u32 = 14;
-pub const SO_REUSEPORT: u32 = 15;
-pub const SO_SECURITY_AUTHENTICATION: u32 = 22;
-pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23;
-pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24;
-pub const SO_BINDTODEVICE: u32 = 25;
-pub const SO_ATTACH_FILTER: u32 = 26;
-pub const SO_DETACH_FILTER: u32 = 27;
-pub const SO_GET_FILTER: u32 = 26;
-pub const SO_PEERNAME: u32 = 28;
-pub const SO_ACCEPTCONN: u32 = 30;
-pub const SO_PEERSEC: u32 = 31;
-pub const SO_PASSSEC: u32 = 34;
-pub const SO_MARK: u32 = 36;
-pub const SO_PROTOCOL: u32 = 38;
-pub const SO_DOMAIN: u32 = 39;
-pub const SO_RXQ_OVFL: u32 = 40;
-pub const SO_WIFI_STATUS: u32 = 41;
-pub const SCM_WIFI_STATUS: u32 = 41;
-pub const SO_PEEK_OFF: u32 = 42;
-pub const SO_NOFCS: u32 = 43;
-pub const SO_LOCK_FILTER: u32 = 44;
-pub const SO_SELECT_ERR_QUEUE: u32 = 45;
-pub const SO_BUSY_POLL: u32 = 46;
-pub const SO_MAX_PACING_RATE: u32 = 47;
-pub const SO_BPF_EXTENSIONS: u32 = 48;
-pub const SO_INCOMING_CPU: u32 = 49;
-pub const SO_ATTACH_BPF: u32 = 50;
-pub const SO_DETACH_BPF: u32 = 27;
-pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51;
-pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52;
-pub const SO_CNX_ADVICE: u32 = 53;
-pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54;
-pub const SO_MEMINFO: u32 = 55;
-pub const SO_INCOMING_NAPI_ID: u32 = 56;
-pub const SO_COOKIE: u32 = 57;
-pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58;
-pub const SO_PEERGROUPS: u32 = 59;
-pub const SO_ZEROCOPY: u32 = 60;
-pub const SO_TXTIME: u32 = 61;
-pub const SCM_TXTIME: u32 = 61;
-pub const SO_BINDTOIFINDEX: u32 = 62;
-pub const SO_TIMESTAMP_OLD: u32 = 29;
-pub const SO_TIMESTAMPNS_OLD: u32 = 35;
-pub const SO_TIMESTAMPING_OLD: u32 = 37;
-pub const SO_TIMESTAMP_NEW: u32 = 63;
-pub const SO_TIMESTAMPNS_NEW: u32 = 64;
-pub const SO_TIMESTAMPING_NEW: u32 = 65;
-pub const SO_RCVTIMEO_NEW: u32 = 66;
-pub const SO_SNDTIMEO_NEW: u32 = 67;
-pub const SO_DETACH_REUSEPORT_BPF: u32 = 68;
-pub const SO_PREFER_BUSY_POLL: u32 = 69;
-pub const SO_BUSY_POLL_BUDGET: u32 = 70;
-pub const SO_NETNS_COOKIE: u32 = 71;
-pub const SO_BUF_LOCK: u32 = 72;
-pub const SO_RESERVE_MEM: u32 = 73;
-pub const SO_TXREHASH: u32 = 74;
-pub const SO_RCVMARK: u32 = 75;
-pub const SO_TIMESTAMP: u32 = 29;
-pub const SO_TIMESTAMPNS: u32 = 35;
-pub const SO_TIMESTAMPING: u32 = 37;
-pub const SO_RCVTIMEO: u32 = 18;
-pub const SO_SNDTIMEO: u32 = 19;
-pub const SCM_TIMESTAMP: u32 = 29;
-pub const SCM_TIMESTAMPNS: u32 = 35;
-pub const SCM_TIMESTAMPING: u32 = 37;
-pub const SYS_SOCKET: u32 = 1;
-pub const SYS_BIND: u32 = 2;
-pub const SYS_CONNECT: u32 = 3;
-pub const SYS_LISTEN: u32 = 4;
-pub const SYS_ACCEPT: u32 = 5;
-pub const SYS_GETSOCKNAME: u32 = 6;
-pub const SYS_GETPEERNAME: u32 = 7;
-pub const SYS_SOCKETPAIR: u32 = 8;
-pub const SYS_SEND: u32 = 9;
-pub const SYS_RECV: u32 = 10;
-pub const SYS_SENDTO: u32 = 11;
-pub const SYS_RECVFROM: u32 = 12;
-pub const SYS_SHUTDOWN: u32 = 13;
-pub const SYS_SETSOCKOPT: u32 = 14;
-pub const SYS_GETSOCKOPT: u32 = 15;
-pub const SYS_SENDMSG: u32 = 16;
-pub const SYS_RECVMSG: u32 = 17;
-pub const SYS_ACCEPT4: u32 = 18;
-pub const SYS_RECVMMSG: u32 = 19;
-pub const SYS_SENDMMSG: u32 = 20;
-pub const __SO_ACCEPTCON: u32 = 65536;
-pub const POLLIN: u32 = 1;
-pub const POLLPRI: u32 = 2;
-pub const POLLOUT: u32 = 4;
-pub const POLLERR: u32 = 8;
-pub const POLLHUP: u32 = 16;
-pub const POLLNVAL: u32 = 32;
-pub const POLLRDNORM: u32 = 64;
-pub const POLLRDBAND: u32 = 128;
-pub const POLLWRNORM: u32 = 256;
-pub const POLLWRBAND: u32 = 512;
-pub const POLLMSG: u32 = 1024;
-pub const POLLREMOVE: u32 = 4096;
-pub const POLLRDHUP: u32 = 8192;
-pub const PR_SET_PDEATHSIG: u32 = 1;
-pub const PR_GET_PDEATHSIG: u32 = 2;
-pub const PR_GET_DUMPABLE: u32 = 3;
-pub const PR_SET_DUMPABLE: u32 = 4;
-pub const PR_GET_UNALIGN: u32 = 5;
-pub const PR_SET_UNALIGN: u32 = 6;
-pub const PR_UNALIGN_NOPRINT: u32 = 1;
-pub const PR_UNALIGN_SIGBUS: u32 = 2;
-pub const PR_GET_KEEPCAPS: u32 = 7;
-pub const PR_SET_KEEPCAPS: u32 = 8;
-pub const PR_GET_FPEMU: u32 = 9;
-pub const PR_SET_FPEMU: u32 = 10;
-pub const PR_FPEMU_NOPRINT: u32 = 1;
-pub const PR_FPEMU_SIGFPE: u32 = 2;
-pub const PR_GET_FPEXC: u32 = 11;
-pub const PR_SET_FPEXC: u32 = 12;
-pub const PR_FP_EXC_SW_ENABLE: u32 = 128;
-pub const PR_FP_EXC_DIV: u32 = 65536;
-pub const PR_FP_EXC_OVF: u32 = 131072;
-pub const PR_FP_EXC_UND: u32 = 262144;
-pub const PR_FP_EXC_RES: u32 = 524288;
-pub const PR_FP_EXC_INV: u32 = 1048576;
-pub const PR_FP_EXC_DISABLED: u32 = 0;
-pub const PR_FP_EXC_NONRECOV: u32 = 1;
-pub const PR_FP_EXC_ASYNC: u32 = 2;
-pub const PR_FP_EXC_PRECISE: u32 = 3;
-pub const PR_GET_TIMING: u32 = 13;
-pub const PR_SET_TIMING: u32 = 14;
-pub const PR_TIMING_STATISTICAL: u32 = 0;
-pub const PR_TIMING_TIMESTAMP: u32 = 1;
-pub const PR_SET_NAME: u32 = 15;
-pub const PR_GET_NAME: u32 = 16;
-pub const PR_GET_ENDIAN: u32 = 19;
-pub const PR_SET_ENDIAN: u32 = 20;
-pub const PR_ENDIAN_BIG: u32 = 0;
-pub const PR_ENDIAN_LITTLE: u32 = 1;
-pub const PR_ENDIAN_PPC_LITTLE: u32 = 2;
-pub const PR_GET_SECCOMP: u32 = 21;
-pub const PR_SET_SECCOMP: u32 = 22;
-pub const PR_CAPBSET_READ: u32 = 23;
-pub const PR_CAPBSET_DROP: u32 = 24;
-pub const PR_GET_TSC: u32 = 25;
-pub const PR_SET_TSC: u32 = 26;
-pub const PR_TSC_ENABLE: u32 = 1;
-pub const PR_TSC_SIGSEGV: u32 = 2;
-pub const PR_GET_SECUREBITS: u32 = 27;
-pub const PR_SET_SECUREBITS: u32 = 28;
-pub const PR_SET_TIMERSLACK: u32 = 29;
-pub const PR_GET_TIMERSLACK: u32 = 30;
-pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31;
-pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32;
-pub const PR_MCE_KILL: u32 = 33;
-pub const PR_MCE_KILL_CLEAR: u32 = 0;
-pub const PR_MCE_KILL_SET: u32 = 1;
-pub const PR_MCE_KILL_LATE: u32 = 0;
-pub const PR_MCE_KILL_EARLY: u32 = 1;
-pub const PR_MCE_KILL_DEFAULT: u32 = 2;
-pub const PR_MCE_KILL_GET: u32 = 34;
-pub const PR_SET_MM: u32 = 35;
-pub const PR_SET_MM_START_CODE: u32 = 1;
-pub const PR_SET_MM_END_CODE: u32 = 2;
-pub const PR_SET_MM_START_DATA: u32 = 3;
-pub const PR_SET_MM_END_DATA: u32 = 4;
-pub const PR_SET_MM_START_STACK: u32 = 5;
-pub const PR_SET_MM_START_BRK: u32 = 6;
-pub const PR_SET_MM_BRK: u32 = 7;
-pub const PR_SET_MM_ARG_START: u32 = 8;
-pub const PR_SET_MM_ARG_END: u32 = 9;
-pub const PR_SET_MM_ENV_START: u32 = 10;
-pub const PR_SET_MM_ENV_END: u32 = 11;
-pub const PR_SET_MM_AUXV: u32 = 12;
-pub const PR_SET_MM_EXE_FILE: u32 = 13;
-pub const PR_SET_MM_MAP: u32 = 14;
-pub const PR_SET_MM_MAP_SIZE: u32 = 15;
-pub const PR_SET_PTRACER: u32 = 1499557217;
-pub const PR_SET_CHILD_SUBREAPER: u32 = 36;
-pub const PR_GET_CHILD_SUBREAPER: u32 = 37;
-pub const PR_SET_NO_NEW_PRIVS: u32 = 38;
-pub const PR_GET_NO_NEW_PRIVS: u32 = 39;
-pub const PR_GET_TID_ADDRESS: u32 = 40;
-pub const PR_SET_THP_DISABLE: u32 = 41;
-pub const PR_GET_THP_DISABLE: u32 = 42;
-pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43;
-pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44;
-pub const PR_SET_FP_MODE: u32 = 45;
-pub const PR_GET_FP_MODE: u32 = 46;
-pub const PR_FP_MODE_FR: u32 = 1;
-pub const PR_FP_MODE_FRE: u32 = 2;
-pub const PR_CAP_AMBIENT: u32 = 47;
-pub const PR_CAP_AMBIENT_IS_SET: u32 = 1;
-pub const PR_CAP_AMBIENT_RAISE: u32 = 2;
-pub const PR_CAP_AMBIENT_LOWER: u32 = 3;
-pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4;
-pub const PR_SVE_SET_VL: u32 = 50;
-pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SVE_GET_VL: u32 = 51;
-pub const PR_SVE_VL_LEN_MASK: u32 = 65535;
-pub const PR_SVE_VL_INHERIT: u32 = 131072;
-pub const PR_GET_SPECULATION_CTRL: u32 = 52;
-pub const PR_SET_SPECULATION_CTRL: u32 = 53;
-pub const PR_SPEC_STORE_BYPASS: u32 = 0;
-pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1;
-pub const PR_SPEC_L1D_FLUSH: u32 = 2;
-pub const PR_SPEC_NOT_AFFECTED: u32 = 0;
-pub const PR_SPEC_PRCTL: u32 = 1;
-pub const PR_SPEC_ENABLE: u32 = 2;
-pub const PR_SPEC_DISABLE: u32 = 4;
-pub const PR_SPEC_FORCE_DISABLE: u32 = 8;
-pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16;
-pub const PR_PAC_RESET_KEYS: u32 = 54;
-pub const PR_PAC_APIAKEY: u32 = 1;
-pub const PR_PAC_APIBKEY: u32 = 2;
-pub const PR_PAC_APDAKEY: u32 = 4;
-pub const PR_PAC_APDBKEY: u32 = 8;
-pub const PR_PAC_APGAKEY: u32 = 16;
-pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55;
-pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56;
-pub const PR_TAGGED_ADDR_ENABLE: u32 = 1;
-pub const PR_MTE_TCF_NONE: u32 = 0;
-pub const PR_MTE_TCF_SYNC: u32 = 2;
-pub const PR_MTE_TCF_ASYNC: u32 = 4;
-pub const PR_MTE_TCF_MASK: u32 = 6;
-pub const PR_MTE_TAG_SHIFT: u32 = 3;
-pub const PR_MTE_TAG_MASK: u32 = 524280;
-pub const PR_MTE_TCF_SHIFT: u32 = 1;
-pub const PR_SET_IO_FLUSHER: u32 = 57;
-pub const PR_GET_IO_FLUSHER: u32 = 58;
-pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59;
-pub const PR_SYS_DISPATCH_OFF: u32 = 0;
-pub const PR_SYS_DISPATCH_ON: u32 = 1;
-pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0;
-pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1;
-pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60;
-pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61;
-pub const PR_SCHED_CORE: u32 = 62;
-pub const PR_SCHED_CORE_GET: u32 = 0;
-pub const PR_SCHED_CORE_CREATE: u32 = 1;
-pub const PR_SCHED_CORE_SHARE_TO: u32 = 2;
-pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3;
-pub const PR_SCHED_CORE_MAX: u32 = 4;
-pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0;
-pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1;
-pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2;
-pub const PR_SME_SET_VL: u32 = 63;
-pub const PR_SME_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SME_GET_VL: u32 = 64;
-pub const PR_SME_VL_LEN_MASK: u32 = 65535;
-pub const PR_SME_VL_INHERIT: u32 = 131072;
-pub const PR_SET_VMA: u32 = 1398164801;
-pub const PR_SET_VMA_ANON_NAME: u32 = 0;
-pub const GRND_NONBLOCK: u32 = 1;
-pub const GRND_RANDOM: u32 = 2;
-pub const GRND_INSECURE: u32 = 4;
-pub const ITIMER_REAL: u32 = 0;
-pub const ITIMER_VIRTUAL: u32 = 1;
-pub const ITIMER_PROF: u32 = 2;
-pub const CLOCK_REALTIME: u32 = 0;
-pub const CLOCK_MONOTONIC: u32 = 1;
-pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2;
-pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3;
-pub const CLOCK_MONOTONIC_RAW: u32 = 4;
-pub const CLOCK_REALTIME_COARSE: u32 = 5;
-pub const CLOCK_MONOTONIC_COARSE: u32 = 6;
-pub const CLOCK_BOOTTIME: u32 = 7;
-pub const CLOCK_REALTIME_ALARM: u32 = 8;
-pub const CLOCK_BOOTTIME_ALARM: u32 = 9;
-pub const CLOCK_SGI_CYCLE: u32 = 10;
-pub const CLOCK_TAI: u32 = 11;
-pub const MAX_CLOCKS: u32 = 16;
-pub const CLOCKS_MASK: u32 = 1;
-pub const CLOCKS_MONO: u32 = 1;
-pub const TIMER_ABSTIME: u32 = 1;
-pub const RUSAGE_SELF: u32 = 0;
-pub const RUSAGE_CHILDREN: i32 = -1;
-pub const RUSAGE_BOTH: i32 = -2;
-pub const RUSAGE_THREAD: u32 = 1;
-pub const RLIM64_INFINITY: i32 = -1;
-pub const PRIO_MIN: i32 = -20;
-pub const PRIO_MAX: u32 = 20;
-pub const PRIO_PROCESS: u32 = 0;
-pub const PRIO_PGRP: u32 = 1;
-pub const PRIO_USER: u32 = 2;
-pub const _STK_LIM: u32 = 8388608;
-pub const MLOCK_LIMIT: u32 = 8388608;
-pub const RLIMIT_CPU: u32 = 0;
-pub const RLIMIT_FSIZE: u32 = 1;
-pub const RLIMIT_DATA: u32 = 2;
-pub const RLIMIT_STACK: u32 = 3;
-pub const RLIMIT_CORE: u32 = 4;
-pub const RLIMIT_RSS: u32 = 5;
-pub const RLIMIT_NPROC: u32 = 6;
-pub const RLIMIT_NOFILE: u32 = 7;
-pub const RLIMIT_MEMLOCK: u32 = 8;
-pub const RLIMIT_AS: u32 = 9;
-pub const RLIMIT_LOCKS: u32 = 10;
-pub const RLIMIT_SIGPENDING: u32 = 11;
-pub const RLIMIT_MSGQUEUE: u32 = 12;
-pub const RLIMIT_NICE: u32 = 13;
-pub const RLIMIT_RTPRIO: u32 = 14;
-pub const RLIMIT_RTTIME: u32 = 15;
-pub const RLIM_NLIMITS: u32 = 16;
-pub const RLIM_INFINITY: i32 = -1;
-pub const CSIGNAL: u32 = 255;
-pub const CLONE_VM: u32 = 256;
-pub const CLONE_FS: u32 = 512;
-pub const CLONE_FILES: u32 = 1024;
-pub const CLONE_SIGHAND: u32 = 2048;
-pub const CLONE_PIDFD: u32 = 4096;
-pub const CLONE_PTRACE: u32 = 8192;
-pub const CLONE_VFORK: u32 = 16384;
-pub const CLONE_PARENT: u32 = 32768;
-pub const CLONE_THREAD: u32 = 65536;
-pub const CLONE_NEWNS: u32 = 131072;
-pub const CLONE_SYSVSEM: u32 = 262144;
-pub const CLONE_SETTLS: u32 = 524288;
-pub const CLONE_PARENT_SETTID: u32 = 1048576;
-pub const CLONE_CHILD_CLEARTID: u32 = 2097152;
-pub const CLONE_DETACHED: u32 = 4194304;
-pub const CLONE_UNTRACED: u32 = 8388608;
-pub const CLONE_CHILD_SETTID: u32 = 16777216;
-pub const CLONE_NEWCGROUP: u32 = 33554432;
-pub const CLONE_NEWUTS: u32 = 67108864;
-pub const CLONE_NEWIPC: u32 = 134217728;
-pub const CLONE_NEWUSER: u32 = 268435456;
-pub const CLONE_NEWPID: u32 = 536870912;
-pub const CLONE_NEWNET: u32 = 1073741824;
-pub const CLONE_IO: u32 = 2147483648;
-pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296;
-pub const CLONE_INTO_CGROUP: u64 = 8589934592;
-pub const CLONE_NEWTIME: u32 = 128;
-pub const CLONE_ARGS_SIZE_VER0: u32 = 64;
-pub const CLONE_ARGS_SIZE_VER1: u32 = 80;
-pub const CLONE_ARGS_SIZE_VER2: u32 = 88;
-pub const SCHED_NORMAL: u32 = 0;
-pub const SCHED_FIFO: u32 = 1;
-pub const SCHED_RR: u32 = 2;
-pub const SCHED_BATCH: u32 = 3;
-pub const SCHED_IDLE: u32 = 5;
-pub const SCHED_DEADLINE: u32 = 6;
-pub const SCHED_RESET_ON_FORK: u32 = 1073741824;
-pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1;
-pub const SCHED_FLAG_RECLAIM: u32 = 2;
-pub const SCHED_FLAG_DL_OVERRUN: u32 = 4;
-pub const SCHED_FLAG_KEEP_POLICY: u32 = 8;
-pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16;
-pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32;
-pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64;
-pub const SCHED_FLAG_KEEP_ALL: u32 = 24;
-pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96;
-pub const SCHED_FLAG_ALL: u32 = 127;
-pub const _NSIG: u32 = 64;
-pub const _NSIG_BPW: u32 = 64;
-pub const _NSIG_WORDS: u32 = 1;
-pub const SIGHUP: u32 = 1;
-pub const SIGINT: u32 = 2;
-pub const SIGQUIT: u32 = 3;
-pub const SIGILL: u32 = 4;
-pub const SIGTRAP: u32 = 5;
-pub const SIGABRT: u32 = 6;
-pub const SIGIOT: u32 = 6;
-pub const SIGBUS: u32 = 7;
-pub const SIGFPE: u32 = 8;
-pub const SIGKILL: u32 = 9;
-pub const SIGUSR1: u32 = 10;
-pub const SIGSEGV: u32 = 11;
-pub const SIGUSR2: u32 = 12;
-pub const SIGPIPE: u32 = 13;
-pub const SIGALRM: u32 = 14;
-pub const SIGTERM: u32 = 15;
-pub const SIGSTKFLT: u32 = 16;
-pub const SIGCHLD: u32 = 17;
-pub const SIGCONT: u32 = 18;
-pub const SIGSTOP: u32 = 19;
-pub const SIGTSTP: u32 = 20;
-pub const SIGTTIN: u32 = 21;
-pub const SIGTTOU: u32 = 22;
-pub const SIGURG: u32 = 23;
-pub const SIGXCPU: u32 = 24;
-pub const SIGXFSZ: u32 = 25;
-pub const SIGVTALRM: u32 = 26;
-pub const SIGPROF: u32 = 27;
-pub const SIGWINCH: u32 = 28;
-pub const SIGIO: u32 = 29;
-pub const SIGPOLL: u32 = 29;
-pub const SIGPWR: u32 = 30;
-pub const SIGSYS: u32 = 31;
-pub const SIGUNUSED: u32 = 31;
-pub const SIGRTMIN: u32 = 32;
-pub const SIGRTMAX: u32 = 64;
-pub const SA_RESTORER: u32 = 67108864;
-pub const MINSIGSTKSZ: u32 = 8192;
-pub const SIGSTKSZ: u32 = 32768;
-pub const SA_NOCLDSTOP: u32 = 1;
-pub const SA_NOCLDWAIT: u32 = 2;
-pub const SA_SIGINFO: u32 = 4;
-pub const SA_UNSUPPORTED: u32 = 1024;
-pub const SA_EXPOSE_TAGBITS: u32 = 2048;
-pub const SA_ONSTACK: u32 = 134217728;
-pub const SA_RESTART: u32 = 268435456;
-pub const SA_NODEFER: u32 = 1073741824;
-pub const SA_RESETHAND: u32 = 2147483648;
-pub const SA_NOMASK: u32 = 1073741824;
-pub const SA_ONESHOT: u32 = 2147483648;
-pub const SIG_BLOCK: u32 = 0;
-pub const SIG_UNBLOCK: u32 = 1;
-pub const SIG_SETMASK: u32 = 2;
-pub const SI_MAX_SIZE: u32 = 128;
-pub const SI_USER: u32 = 0;
-pub const SI_KERNEL: u32 = 128;
-pub const SI_QUEUE: i32 = -1;
-pub const SI_TIMER: i32 = -2;
-pub const SI_MESGQ: i32 = -3;
-pub const SI_ASYNCIO: i32 = -4;
-pub const SI_SIGIO: i32 = -5;
-pub const SI_TKILL: i32 = -6;
-pub const SI_DETHREAD: i32 = -7;
-pub const SI_ASYNCNL: i32 = -60;
-pub const ILL_ILLOPC: u32 = 1;
-pub const ILL_ILLOPN: u32 = 2;
-pub const ILL_ILLADR: u32 = 3;
-pub const ILL_ILLTRP: u32 = 4;
-pub const ILL_PRVOPC: u32 = 5;
-pub const ILL_PRVREG: u32 = 6;
-pub const ILL_COPROC: u32 = 7;
-pub const ILL_BADSTK: u32 = 8;
-pub const ILL_BADIADDR: u32 = 9;
-pub const __ILL_BREAK: u32 = 10;
-pub const __ILL_BNDMOD: u32 = 11;
-pub const NSIGILL: u32 = 11;
-pub const FPE_INTDIV: u32 = 1;
-pub const FPE_INTOVF: u32 = 2;
-pub const FPE_FLTDIV: u32 = 3;
-pub const FPE_FLTOVF: u32 = 4;
-pub const FPE_FLTUND: u32 = 5;
-pub const FPE_FLTRES: u32 = 6;
-pub const FPE_FLTINV: u32 = 7;
-pub const FPE_FLTSUB: u32 = 8;
-pub const __FPE_DECOVF: u32 = 9;
-pub const __FPE_DECDIV: u32 = 10;
-pub const __FPE_DECERR: u32 = 11;
-pub const __FPE_INVASC: u32 = 12;
-pub const __FPE_INVDEC: u32 = 13;
-pub const FPE_FLTUNK: u32 = 14;
-pub const FPE_CONDTRAP: u32 = 15;
-pub const NSIGFPE: u32 = 15;
-pub const SEGV_MAPERR: u32 = 1;
-pub const SEGV_ACCERR: u32 = 2;
-pub const SEGV_BNDERR: u32 = 3;
-pub const SEGV_PKUERR: u32 = 4;
-pub const SEGV_ACCADI: u32 = 5;
-pub const SEGV_ADIDERR: u32 = 6;
-pub const SEGV_ADIPERR: u32 = 7;
-pub const SEGV_MTEAERR: u32 = 8;
-pub const SEGV_MTESERR: u32 = 9;
-pub const NSIGSEGV: u32 = 9;
-pub const BUS_ADRALN: u32 = 1;
-pub const BUS_ADRERR: u32 = 2;
-pub const BUS_OBJERR: u32 = 3;
-pub const BUS_MCEERR_AR: u32 = 4;
-pub const BUS_MCEERR_AO: u32 = 5;
-pub const NSIGBUS: u32 = 5;
-pub const TRAP_BRKPT: u32 = 1;
-pub const TRAP_TRACE: u32 = 2;
-pub const TRAP_BRANCH: u32 = 3;
-pub const TRAP_HWBKPT: u32 = 4;
-pub const TRAP_UNK: u32 = 5;
-pub const TRAP_PERF: u32 = 6;
-pub const NSIGTRAP: u32 = 6;
-pub const TRAP_PERF_FLAG_ASYNC: u32 = 1;
-pub const CLD_EXITED: u32 = 1;
-pub const CLD_KILLED: u32 = 2;
-pub const CLD_DUMPED: u32 = 3;
-pub const CLD_TRAPPED: u32 = 4;
-pub const CLD_STOPPED: u32 = 5;
-pub const CLD_CONTINUED: u32 = 6;
-pub const NSIGCHLD: u32 = 6;
-pub const POLL_IN: u32 = 1;
-pub const POLL_OUT: u32 = 2;
-pub const POLL_MSG: u32 = 3;
-pub const POLL_ERR: u32 = 4;
-pub const POLL_PRI: u32 = 5;
-pub const POLL_HUP: u32 = 6;
-pub const NSIGPOLL: u32 = 6;
-pub const SYS_SECCOMP: u32 = 1;
-pub const SYS_USER_DISPATCH: u32 = 2;
-pub const NSIGSYS: u32 = 2;
-pub const EMT_TAGOVF: u32 = 1;
-pub const NSIGEMT: u32 = 1;
-pub const SIGEV_SIGNAL: u32 = 0;
-pub const SIGEV_NONE: u32 = 1;
-pub const SIGEV_THREAD: u32 = 2;
-pub const SIGEV_THREAD_ID: u32 = 4;
-pub const SIGEV_MAX_SIZE: u32 = 64;
-pub const SS_ONSTACK: u32 = 1;
-pub const SS_DISABLE: u32 = 2;
-pub const SS_AUTODISARM: u32 = 2147483648;
-pub const SS_FLAG_BITS: u32 = 2147483648;
-pub const S_IFMT: u32 = 61440;
-pub const S_IFSOCK: u32 = 49152;
-pub const S_IFLNK: u32 = 40960;
-pub const S_IFREG: u32 = 32768;
-pub const S_IFBLK: u32 = 24576;
-pub const S_IFDIR: u32 = 16384;
-pub const S_IFCHR: u32 = 8192;
-pub const S_IFIFO: u32 = 4096;
-pub const S_ISUID: u32 = 2048;
-pub const S_ISGID: u32 = 1024;
-pub const S_ISVTX: u32 = 512;
-pub const S_IRWXU: u32 = 448;
-pub const S_IRUSR: u32 = 256;
-pub const S_IWUSR: u32 = 128;
-pub const S_IXUSR: u32 = 64;
-pub const S_IRWXG: u32 = 56;
-pub const S_IRGRP: u32 = 32;
-pub const S_IWGRP: u32 = 16;
-pub const S_IXGRP: u32 = 8;
-pub const S_IRWXO: u32 = 7;
-pub const S_IROTH: u32 = 4;
-pub const S_IWOTH: u32 = 2;
-pub const S_IXOTH: u32 = 1;
-pub const STATX_TYPE: u32 = 1;
-pub const STATX_MODE: u32 = 2;
-pub const STATX_NLINK: u32 = 4;
-pub const STATX_UID: u32 = 8;
-pub const STATX_GID: u32 = 16;
-pub const STATX_ATIME: u32 = 32;
-pub const STATX_MTIME: u32 = 64;
-pub const STATX_CTIME: u32 = 128;
-pub const STATX_INO: u32 = 256;
-pub const STATX_SIZE: u32 = 512;
-pub const STATX_BLOCKS: u32 = 1024;
-pub const STATX_BASIC_STATS: u32 = 2047;
-pub const STATX_BTIME: u32 = 2048;
-pub const STATX_MNT_ID: u32 = 4096;
-pub const STATX_DIOALIGN: u32 = 8192;
-pub const STATX__RESERVED: u32 = 2147483648;
-pub const STATX_ALL: u32 = 4095;
-pub const STATX_ATTR_COMPRESSED: u32 = 4;
-pub const STATX_ATTR_IMMUTABLE: u32 = 16;
-pub const STATX_ATTR_APPEND: u32 = 32;
-pub const STATX_ATTR_NODUMP: u32 = 64;
-pub const STATX_ATTR_ENCRYPTED: u32 = 2048;
-pub const STATX_ATTR_AUTOMOUNT: u32 = 4096;
-pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192;
-pub const STATX_ATTR_VERITY: u32 = 1048576;
-pub const STATX_ATTR_DAX: u32 = 2097152;
-pub const SI_LOAD_SHIFT: u32 = 16;
-pub const TCP_MSS_DEFAULT: u32 = 536;
-pub const TCP_MSS_DESIRED: u32 = 1220;
-pub const TCP_NODELAY: u32 = 1;
-pub const TCP_MAXSEG: u32 = 2;
-pub const TCP_CORK: u32 = 3;
-pub const TCP_KEEPIDLE: u32 = 4;
-pub const TCP_KEEPINTVL: u32 = 5;
-pub const TCP_KEEPCNT: u32 = 6;
-pub const TCP_SYNCNT: u32 = 7;
-pub const TCP_LINGER2: u32 = 8;
-pub const TCP_DEFER_ACCEPT: u32 = 9;
-pub const TCP_WINDOW_CLAMP: u32 = 10;
-pub const TCP_INFO: u32 = 11;
-pub const TCP_QUICKACK: u32 = 12;
-pub const TCP_CONGESTION: u32 = 13;
-pub const TCP_MD5SIG: u32 = 14;
-pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16;
-pub const TCP_THIN_DUPACK: u32 = 17;
-pub const TCP_USER_TIMEOUT: u32 = 18;
-pub const TCP_REPAIR: u32 = 19;
-pub const TCP_REPAIR_QUEUE: u32 = 20;
-pub const TCP_QUEUE_SEQ: u32 = 21;
-pub const TCP_REPAIR_OPTIONS: u32 = 22;
-pub const TCP_FASTOPEN: u32 = 23;
-pub const TCP_TIMESTAMP: u32 = 24;
-pub const TCP_NOTSENT_LOWAT: u32 = 25;
-pub const TCP_CC_INFO: u32 = 26;
-pub const TCP_SAVE_SYN: u32 = 27;
-pub const TCP_SAVED_SYN: u32 = 28;
-pub const TCP_REPAIR_WINDOW: u32 = 29;
-pub const TCP_FASTOPEN_CONNECT: u32 = 30;
-pub const TCP_ULP: u32 = 31;
-pub const TCP_MD5SIG_EXT: u32 = 32;
-pub const TCP_FASTOPEN_KEY: u32 = 33;
-pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34;
-pub const TCP_ZEROCOPY_RECEIVE: u32 = 35;
-pub const TCP_INQ: u32 = 36;
-pub const TCP_CM_INQ: u32 = 36;
-pub const TCP_TX_DELAY: u32 = 37;
-pub const TCP_REPAIR_ON: u32 = 1;
-pub const TCP_REPAIR_OFF: u32 = 0;
-pub const TCP_REPAIR_OFF_NO_WP: i32 = -1;
-pub const TCPI_OPT_TIMESTAMPS: u32 = 1;
-pub const TCPI_OPT_SACK: u32 = 2;
-pub const TCPI_OPT_WSCALE: u32 = 4;
-pub const TCPI_OPT_ECN: u32 = 8;
-pub const TCPI_OPT_ECN_SEEN: u32 = 16;
-pub const TCPI_OPT_SYN_DATA: u32 = 32;
-pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80;
-pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
-pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
-pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
-pub const TIOCM_LE: u32 = 1;
-pub const TIOCM_DTR: u32 = 2;
-pub const TIOCM_RTS: u32 = 4;
-pub const TIOCM_ST: u32 = 8;
-pub const TIOCM_SR: u32 = 16;
-pub const TIOCM_CTS: u32 = 32;
-pub const TIOCM_CAR: u32 = 64;
-pub const TIOCM_RNG: u32 = 128;
-pub const TIOCM_DSR: u32 = 256;
-pub const TIOCM_CD: u32 = 64;
-pub const TIOCM_RI: u32 = 128;
-pub const TIOCM_OUT1: u32 = 8192;
-pub const TIOCM_OUT2: u32 = 16384;
-pub const TIOCM_LOOP: u32 = 32768;
-pub const TIOCPKT_DATA: u32 = 0;
-pub const TIOCPKT_FLUSHREAD: u32 = 1;
-pub const TIOCPKT_FLUSHWRITE: u32 = 2;
-pub const TIOCPKT_STOP: u32 = 4;
-pub const TIOCPKT_START: u32 = 8;
-pub const TIOCPKT_NOSTOP: u32 = 16;
-pub const TIOCPKT_DOSTOP: u32 = 32;
-pub const TIOCPKT_IOCTL: u32 = 64;
-pub const TIOCSER_TEMT: u32 = 1;
-pub const IGNBRK: u32 = 1;
-pub const BRKINT: u32 = 2;
-pub const IGNPAR: u32 = 4;
-pub const PARMRK: u32 = 8;
-pub const INPCK: u32 = 16;
-pub const ISTRIP: u32 = 32;
-pub const INLCR: u32 = 64;
-pub const IGNCR: u32 = 128;
-pub const ICRNL: u32 = 256;
-pub const IXANY: u32 = 2048;
-pub const OPOST: u32 = 1;
-pub const OCRNL: u32 = 8;
-pub const ONOCR: u32 = 16;
-pub const ONLRET: u32 = 32;
-pub const OFILL: u32 = 64;
-pub const OFDEL: u32 = 128;
-pub const B0: u32 = 0;
-pub const B50: u32 = 1;
-pub const B75: u32 = 2;
-pub const B110: u32 = 3;
-pub const B134: u32 = 4;
-pub const B150: u32 = 5;
-pub const B200: u32 = 6;
-pub const B300: u32 = 7;
-pub const B600: u32 = 8;
-pub const B1200: u32 = 9;
-pub const B1800: u32 = 10;
-pub const B2400: u32 = 11;
-pub const B4800: u32 = 12;
-pub const B9600: u32 = 13;
-pub const B19200: u32 = 14;
-pub const B38400: u32 = 15;
-pub const EXTA: u32 = 14;
-pub const EXTB: u32 = 15;
-pub const ADDRB: u32 = 536870912;
-pub const CMSPAR: u32 = 1073741824;
-pub const CRTSCTS: u32 = 2147483648;
-pub const IBSHIFT: u32 = 16;
-pub const TCOOFF: u32 = 0;
-pub const TCOON: u32 = 1;
-pub const TCIOFF: u32 = 2;
-pub const TCION: u32 = 3;
-pub const TCIFLUSH: u32 = 0;
-pub const TCOFLUSH: u32 = 1;
-pub const TCIOFLUSH: u32 = 2;
-pub const NCCS: u32 = 19;
-pub const VINTR: u32 = 0;
-pub const VQUIT: u32 = 1;
-pub const VERASE: u32 = 2;
-pub const VKILL: u32 = 3;
-pub const VEOF: u32 = 4;
-pub const VMIN: u32 = 5;
-pub const VEOL: u32 = 6;
-pub const VTIME: u32 = 7;
-pub const VEOL2: u32 = 8;
-pub const VSWTC: u32 = 9;
-pub const VWERASE: u32 = 10;
-pub const VREPRINT: u32 = 11;
-pub const VSUSP: u32 = 12;
-pub const VSTART: u32 = 13;
-pub const VSTOP: u32 = 14;
-pub const VLNEXT: u32 = 15;
-pub const VDISCARD: u32 = 16;
-pub const IXON: u32 = 512;
-pub const IXOFF: u32 = 1024;
-pub const IUCLC: u32 = 4096;
-pub const IMAXBEL: u32 = 8192;
-pub const IUTF8: u32 = 16384;
-pub const ONLCR: u32 = 2;
-pub const OLCUC: u32 = 4;
-pub const NLDLY: u32 = 768;
-pub const NL0: u32 = 0;
-pub const NL1: u32 = 256;
-pub const NL2: u32 = 512;
-pub const NL3: u32 = 768;
-pub const TABDLY: u32 = 3072;
-pub const TAB0: u32 = 0;
-pub const TAB1: u32 = 1024;
-pub const TAB2: u32 = 2048;
-pub const TAB3: u32 = 3072;
-pub const XTABS: u32 = 3072;
-pub const CRDLY: u32 = 12288;
-pub const CR0: u32 = 0;
-pub const CR1: u32 = 4096;
-pub const CR2: u32 = 8192;
-pub const CR3: u32 = 12288;
-pub const FFDLY: u32 = 16384;
-pub const FF0: u32 = 0;
-pub const FF1: u32 = 16384;
-pub const BSDLY: u32 = 32768;
-pub const BS0: u32 = 0;
-pub const BS1: u32 = 32768;
-pub const VTDLY: u32 = 65536;
-pub const VT0: u32 = 0;
-pub const VT1: u32 = 65536;
-pub const CBAUD: u32 = 255;
-pub const CBAUDEX: u32 = 0;
-pub const BOTHER: u32 = 31;
-pub const B57600: u32 = 16;
-pub const B115200: u32 = 17;
-pub const B230400: u32 = 18;
-pub const B460800: u32 = 19;
-pub const B500000: u32 = 20;
-pub const B576000: u32 = 21;
-pub const B921600: u32 = 22;
-pub const B1000000: u32 = 23;
-pub const B1152000: u32 = 24;
-pub const B1500000: u32 = 25;
-pub const B2000000: u32 = 26;
-pub const B2500000: u32 = 27;
-pub const B3000000: u32 = 28;
-pub const B3500000: u32 = 29;
-pub const B4000000: u32 = 30;
-pub const CSIZE: u32 = 768;
-pub const CS5: u32 = 0;
-pub const CS6: u32 = 256;
-pub const CS7: u32 = 512;
-pub const CS8: u32 = 768;
-pub const CSTOPB: u32 = 1024;
-pub const CREAD: u32 = 2048;
-pub const PARENB: u32 = 4096;
-pub const PARODD: u32 = 8192;
-pub const HUPCL: u32 = 16384;
-pub const CLOCAL: u32 = 32768;
-pub const CIBAUD: u32 = 16711680;
-pub const ISIG: u32 = 128;
-pub const ICANON: u32 = 256;
-pub const XCASE: u32 = 16384;
-pub const ECHO: u32 = 8;
-pub const ECHOE: u32 = 2;
-pub const ECHOK: u32 = 4;
-pub const ECHONL: u32 = 16;
-pub const NOFLSH: u32 = 2147483648;
-pub const TOSTOP: u32 = 4194304;
-pub const ECHOCTL: u32 = 64;
-pub const ECHOPRT: u32 = 32;
-pub const ECHOKE: u32 = 1;
-pub const FLUSHO: u32 = 8388608;
-pub const PENDIN: u32 = 536870912;
-pub const IEXTEN: u32 = 1024;
-pub const EXTPROC: u32 = 268435456;
-pub const TCSANOW: u32 = 0;
-pub const TCSADRAIN: u32 = 1;
-pub const TCSAFLUSH: u32 = 2;
-pub const NCC: u32 = 10;
-pub const _VINTR: u32 = 0;
-pub const _VQUIT: u32 = 1;
-pub const _VERASE: u32 = 2;
-pub const _VKILL: u32 = 3;
-pub const _VEOF: u32 = 4;
-pub const _VMIN: u32 = 5;
-pub const _VEOL: u32 = 6;
-pub const _VTIME: u32 = 7;
-pub const _VEOL2: u32 = 8;
-pub const _VSWTC: u32 = 9;
-pub const UIO_FASTIOV: u32 = 8;
-pub const UIO_MAXIOV: u32 = 1024;
-pub const UNIX_PATH_MAX: u32 = 108;
-pub const __NR_restart_syscall: u32 = 0;
-pub const __NR_exit: u32 = 1;
-pub const __NR_fork: u32 = 2;
-pub const __NR_read: u32 = 3;
-pub const __NR_write: u32 = 4;
-pub const __NR_open: u32 = 5;
-pub const __NR_close: u32 = 6;
-pub const __NR_waitpid: u32 = 7;
-pub const __NR_creat: u32 = 8;
-pub const __NR_link: u32 = 9;
-pub const __NR_unlink: u32 = 10;
-pub const __NR_execve: u32 = 11;
-pub const __NR_chdir: u32 = 12;
-pub const __NR_time: u32 = 13;
-pub const __NR_mknod: u32 = 14;
-pub const __NR_chmod: u32 = 15;
-pub const __NR_lchown: u32 = 16;
-pub const __NR_break: u32 = 17;
-pub const __NR_oldstat: u32 = 18;
-pub const __NR_lseek: u32 = 19;
-pub const __NR_getpid: u32 = 20;
-pub const __NR_mount: u32 = 21;
-pub const __NR_umount: u32 = 22;
-pub const __NR_setuid: u32 = 23;
-pub const __NR_getuid: u32 = 24;
-pub const __NR_stime: u32 = 25;
-pub const __NR_ptrace: u32 = 26;
-pub const __NR_alarm: u32 = 27;
-pub const __NR_oldfstat: u32 = 28;
-pub const __NR_pause: u32 = 29;
-pub const __NR_utime: u32 = 30;
-pub const __NR_stty: u32 = 31;
-pub const __NR_gtty: u32 = 32;
-pub const __NR_access: u32 = 33;
-pub const __NR_nice: u32 = 34;
-pub const __NR_ftime: u32 = 35;
-pub const __NR_sync: u32 = 36;
-pub const __NR_kill: u32 = 37;
-pub const __NR_rename: u32 = 38;
-pub const __NR_mkdir: u32 = 39;
-pub const __NR_rmdir: u32 = 40;
-pub const __NR_dup: u32 = 41;
-pub const __NR_pipe: u32 = 42;
-pub const __NR_times: u32 = 43;
-pub const __NR_prof: u32 = 44;
-pub const __NR_brk: u32 = 45;
-pub const __NR_setgid: u32 = 46;
-pub const __NR_getgid: u32 = 47;
-pub const __NR_signal: u32 = 48;
-pub const __NR_geteuid: u32 = 49;
-pub const __NR_getegid: u32 = 50;
-pub const __NR_acct: u32 = 51;
-pub const __NR_umount2: u32 = 52;
-pub const __NR_lock: u32 = 53;
-pub const __NR_ioctl: u32 = 54;
-pub const __NR_fcntl: u32 = 55;
-pub const __NR_mpx: u32 = 56;
-pub const __NR_setpgid: u32 = 57;
-pub const __NR_ulimit: u32 = 58;
-pub const __NR_oldolduname: u32 = 59;
-pub const __NR_umask: u32 = 60;
-pub const __NR_chroot: u32 = 61;
-pub const __NR_ustat: u32 = 62;
-pub const __NR_dup2: u32 = 63;
-pub const __NR_getppid: u32 = 64;
-pub const __NR_getpgrp: u32 = 65;
-pub const __NR_setsid: u32 = 66;
-pub const __NR_sigaction: u32 = 67;
-pub const __NR_sgetmask: u32 = 68;
-pub const __NR_ssetmask: u32 = 69;
-pub const __NR_setreuid: u32 = 70;
-pub const __NR_setregid: u32 = 71;
-pub const __NR_sigsuspend: u32 = 72;
-pub const __NR_sigpending: u32 = 73;
-pub const __NR_sethostname: u32 = 74;
-pub const __NR_setrlimit: u32 = 75;
-pub const __NR_getrlimit: u32 = 76;
-pub const __NR_getrusage: u32 = 77;
-pub const __NR_gettimeofday: u32 = 78;
-pub const __NR_settimeofday: u32 = 79;
-pub const __NR_getgroups: u32 = 80;
-pub const __NR_setgroups: u32 = 81;
-pub const __NR_select: u32 = 82;
-pub const __NR_symlink: u32 = 83;
-pub const __NR_oldlstat: u32 = 84;
-pub const __NR_readlink: u32 = 85;
-pub const __NR_uselib: u32 = 86;
-pub const __NR_swapon: u32 = 87;
-pub const __NR_reboot: u32 = 88;
-pub const __NR_readdir: u32 = 89;
-pub const __NR_mmap: u32 = 90;
-pub const __NR_munmap: u32 = 91;
-pub const __NR_truncate: u32 = 92;
-pub const __NR_ftruncate: u32 = 93;
-pub const __NR_fchmod: u32 = 94;
-pub const __NR_fchown: u32 = 95;
-pub const __NR_getpriority: u32 = 96;
-pub const __NR_setpriority: u32 = 97;
-pub const __NR_profil: u32 = 98;
-pub const __NR_statfs: u32 = 99;
-pub const __NR_fstatfs: u32 = 100;
-pub const __NR_ioperm: u32 = 101;
-pub const __NR_socketcall: u32 = 102;
-pub const __NR_syslog: u32 = 103;
-pub const __NR_setitimer: u32 = 104;
-pub const __NR_getitimer: u32 = 105;
-pub const __NR_stat: u32 = 106;
-pub const __NR_lstat: u32 = 107;
-pub const __NR_fstat: u32 = 108;
-pub const __NR_olduname: u32 = 109;
-pub const __NR_iopl: u32 = 110;
-pub const __NR_vhangup: u32 = 111;
-pub const __NR_idle: u32 = 112;
-pub const __NR_vm86: u32 = 113;
-pub const __NR_wait4: u32 = 114;
-pub const __NR_swapoff: u32 = 115;
-pub const __NR_sysinfo: u32 = 116;
-pub const __NR_ipc: u32 = 117;
-pub const __NR_fsync: u32 = 118;
-pub const __NR_sigreturn: u32 = 119;
-pub const __NR_clone: u32 = 120;
-pub const __NR_setdomainname: u32 = 121;
-pub const __NR_uname: u32 = 122;
-pub const __NR_modify_ldt: u32 = 123;
-pub const __NR_adjtimex: u32 = 124;
-pub const __NR_mprotect: u32 = 125;
-pub const __NR_sigprocmask: u32 = 126;
-pub const __NR_create_module: u32 = 127;
-pub const __NR_init_module: u32 = 128;
-pub const __NR_delete_module: u32 = 129;
-pub const __NR_get_kernel_syms: u32 = 130;
-pub const __NR_quotactl: u32 = 131;
-pub const __NR_getpgid: u32 = 132;
-pub const __NR_fchdir: u32 = 133;
-pub const __NR_bdflush: u32 = 134;
-pub const __NR_sysfs: u32 = 135;
-pub const __NR_personality: u32 = 136;
-pub const __NR_afs_syscall: u32 = 137;
-pub const __NR_setfsuid: u32 = 138;
-pub const __NR_setfsgid: u32 = 139;
-pub const __NR__llseek: u32 = 140;
-pub const __NR_getdents: u32 = 141;
-pub const __NR__newselect: u32 = 142;
-pub const __NR_flock: u32 = 143;
-pub const __NR_msync: u32 = 144;
-pub const __NR_readv: u32 = 145;
-pub const __NR_writev: u32 = 146;
-pub const __NR_getsid: u32 = 147;
-pub const __NR_fdatasync: u32 = 148;
-pub const __NR__sysctl: u32 = 149;
-pub const __NR_mlock: u32 = 150;
-pub const __NR_munlock: u32 = 151;
-pub const __NR_mlockall: u32 = 152;
-pub const __NR_munlockall: u32 = 153;
-pub const __NR_sched_setparam: u32 = 154;
-pub const __NR_sched_getparam: u32 = 155;
-pub const __NR_sched_setscheduler: u32 = 156;
-pub const __NR_sched_getscheduler: u32 = 157;
-pub const __NR_sched_yield: u32 = 158;
-pub const __NR_sched_get_priority_max: u32 = 159;
-pub const __NR_sched_get_priority_min: u32 = 160;
-pub const __NR_sched_rr_get_interval: u32 = 161;
-pub const __NR_nanosleep: u32 = 162;
-pub const __NR_mremap: u32 = 163;
-pub const __NR_setresuid: u32 = 164;
-pub const __NR_getresuid: u32 = 165;
-pub const __NR_query_module: u32 = 166;
-pub const __NR_poll: u32 = 167;
-pub const __NR_nfsservctl: u32 = 168;
-pub const __NR_setresgid: u32 = 169;
-pub const __NR_getresgid: u32 = 170;
-pub const __NR_prctl: u32 = 171;
-pub const __NR_rt_sigreturn: u32 = 172;
-pub const __NR_rt_sigaction: u32 = 173;
-pub const __NR_rt_sigprocmask: u32 = 174;
-pub const __NR_rt_sigpending: u32 = 175;
-pub const __NR_rt_sigtimedwait: u32 = 176;
-pub const __NR_rt_sigqueueinfo: u32 = 177;
-pub const __NR_rt_sigsuspend: u32 = 178;
-pub const __NR_pread64: u32 = 179;
-pub const __NR_pwrite64: u32 = 180;
-pub const __NR_chown: u32 = 181;
-pub const __NR_getcwd: u32 = 182;
-pub const __NR_capget: u32 = 183;
-pub const __NR_capset: u32 = 184;
-pub const __NR_sigaltstack: u32 = 185;
-pub const __NR_sendfile: u32 = 186;
-pub const __NR_getpmsg: u32 = 187;
-pub const __NR_putpmsg: u32 = 188;
-pub const __NR_vfork: u32 = 189;
-pub const __NR_ugetrlimit: u32 = 190;
-pub const __NR_readahead: u32 = 191;
-pub const __NR_pciconfig_read: u32 = 198;
-pub const __NR_pciconfig_write: u32 = 199;
-pub const __NR_pciconfig_iobase: u32 = 200;
-pub const __NR_multiplexer: u32 = 201;
-pub const __NR_getdents64: u32 = 202;
-pub const __NR_pivot_root: u32 = 203;
-pub const __NR_madvise: u32 = 205;
-pub const __NR_mincore: u32 = 206;
-pub const __NR_gettid: u32 = 207;
-pub const __NR_tkill: u32 = 208;
-pub const __NR_setxattr: u32 = 209;
-pub const __NR_lsetxattr: u32 = 210;
-pub const __NR_fsetxattr: u32 = 211;
-pub const __NR_getxattr: u32 = 212;
-pub const __NR_lgetxattr: u32 = 213;
-pub const __NR_fgetxattr: u32 = 214;
-pub const __NR_listxattr: u32 = 215;
-pub const __NR_llistxattr: u32 = 216;
-pub const __NR_flistxattr: u32 = 217;
-pub const __NR_removexattr: u32 = 218;
-pub const __NR_lremovexattr: u32 = 219;
-pub const __NR_fremovexattr: u32 = 220;
-pub const __NR_futex: u32 = 221;
-pub const __NR_sched_setaffinity: u32 = 222;
-pub const __NR_sched_getaffinity: u32 = 223;
-pub const __NR_tuxcall: u32 = 225;
-pub const __NR_io_setup: u32 = 227;
-pub const __NR_io_destroy: u32 = 228;
-pub const __NR_io_getevents: u32 = 229;
-pub const __NR_io_submit: u32 = 230;
-pub const __NR_io_cancel: u32 = 231;
-pub const __NR_set_tid_address: u32 = 232;
-pub const __NR_fadvise64: u32 = 233;
-pub const __NR_exit_group: u32 = 234;
-pub const __NR_lookup_dcookie: u32 = 235;
-pub const __NR_epoll_create: u32 = 236;
-pub const __NR_epoll_ctl: u32 = 237;
-pub const __NR_epoll_wait: u32 = 238;
-pub const __NR_remap_file_pages: u32 = 239;
-pub const __NR_timer_create: u32 = 240;
-pub const __NR_timer_settime: u32 = 241;
-pub const __NR_timer_gettime: u32 = 242;
-pub const __NR_timer_getoverrun: u32 = 243;
-pub const __NR_timer_delete: u32 = 244;
-pub const __NR_clock_settime: u32 = 245;
-pub const __NR_clock_gettime: u32 = 246;
-pub const __NR_clock_getres: u32 = 247;
-pub const __NR_clock_nanosleep: u32 = 248;
-pub const __NR_swapcontext: u32 = 249;
-pub const __NR_tgkill: u32 = 250;
-pub const __NR_utimes: u32 = 251;
-pub const __NR_statfs64: u32 = 252;
-pub const __NR_fstatfs64: u32 = 253;
-pub const __NR_rtas: u32 = 255;
-pub const __NR_sys_debug_setcontext: u32 = 256;
-pub const __NR_migrate_pages: u32 = 258;
-pub const __NR_mbind: u32 = 259;
-pub const __NR_get_mempolicy: u32 = 260;
-pub const __NR_set_mempolicy: u32 = 261;
-pub const __NR_mq_open: u32 = 262;
-pub const __NR_mq_unlink: u32 = 263;
-pub const __NR_mq_timedsend: u32 = 264;
-pub const __NR_mq_timedreceive: u32 = 265;
-pub const __NR_mq_notify: u32 = 266;
-pub const __NR_mq_getsetattr: u32 = 267;
-pub const __NR_kexec_load: u32 = 268;
-pub const __NR_add_key: u32 = 269;
-pub const __NR_request_key: u32 = 270;
-pub const __NR_keyctl: u32 = 271;
-pub const __NR_waitid: u32 = 272;
-pub const __NR_ioprio_set: u32 = 273;
-pub const __NR_ioprio_get: u32 = 274;
-pub const __NR_inotify_init: u32 = 275;
-pub const __NR_inotify_add_watch: u32 = 276;
-pub const __NR_inotify_rm_watch: u32 = 277;
-pub const __NR_spu_run: u32 = 278;
-pub const __NR_spu_create: u32 = 279;
-pub const __NR_pselect6: u32 = 280;
-pub const __NR_ppoll: u32 = 281;
-pub const __NR_unshare: u32 = 282;
-pub const __NR_splice: u32 = 283;
-pub const __NR_tee: u32 = 284;
-pub const __NR_vmsplice: u32 = 285;
-pub const __NR_openat: u32 = 286;
-pub const __NR_mkdirat: u32 = 287;
-pub const __NR_mknodat: u32 = 288;
-pub const __NR_fchownat: u32 = 289;
-pub const __NR_futimesat: u32 = 290;
-pub const __NR_newfstatat: u32 = 291;
-pub const __NR_unlinkat: u32 = 292;
-pub const __NR_renameat: u32 = 293;
-pub const __NR_linkat: u32 = 294;
-pub const __NR_symlinkat: u32 = 295;
-pub const __NR_readlinkat: u32 = 296;
-pub const __NR_fchmodat: u32 = 297;
-pub const __NR_faccessat: u32 = 298;
-pub const __NR_get_robust_list: u32 = 299;
-pub const __NR_set_robust_list: u32 = 300;
-pub const __NR_move_pages: u32 = 301;
-pub const __NR_getcpu: u32 = 302;
-pub const __NR_epoll_pwait: u32 = 303;
-pub const __NR_utimensat: u32 = 304;
-pub const __NR_signalfd: u32 = 305;
-pub const __NR_timerfd_create: u32 = 306;
-pub const __NR_eventfd: u32 = 307;
-pub const __NR_sync_file_range2: u32 = 308;
-pub const __NR_fallocate: u32 = 309;
-pub const __NR_subpage_prot: u32 = 310;
-pub const __NR_timerfd_settime: u32 = 311;
-pub const __NR_timerfd_gettime: u32 = 312;
-pub const __NR_signalfd4: u32 = 313;
-pub const __NR_eventfd2: u32 = 314;
-pub const __NR_epoll_create1: u32 = 315;
-pub const __NR_dup3: u32 = 316;
-pub const __NR_pipe2: u32 = 317;
-pub const __NR_inotify_init1: u32 = 318;
-pub const __NR_perf_event_open: u32 = 319;
-pub const __NR_preadv: u32 = 320;
-pub const __NR_pwritev: u32 = 321;
-pub const __NR_rt_tgsigqueueinfo: u32 = 322;
-pub const __NR_fanotify_init: u32 = 323;
-pub const __NR_fanotify_mark: u32 = 324;
-pub const __NR_prlimit64: u32 = 325;
-pub const __NR_socket: u32 = 326;
-pub const __NR_bind: u32 = 327;
-pub const __NR_connect: u32 = 328;
-pub const __NR_listen: u32 = 329;
-pub const __NR_accept: u32 = 330;
-pub const __NR_getsockname: u32 = 331;
-pub const __NR_getpeername: u32 = 332;
-pub const __NR_socketpair: u32 = 333;
-pub const __NR_send: u32 = 334;
-pub const __NR_sendto: u32 = 335;
-pub const __NR_recv: u32 = 336;
-pub const __NR_recvfrom: u32 = 337;
-pub const __NR_shutdown: u32 = 338;
-pub const __NR_setsockopt: u32 = 339;
-pub const __NR_getsockopt: u32 = 340;
-pub const __NR_sendmsg: u32 = 341;
-pub const __NR_recvmsg: u32 = 342;
-pub const __NR_recvmmsg: u32 = 343;
-pub const __NR_accept4: u32 = 344;
-pub const __NR_name_to_handle_at: u32 = 345;
-pub const __NR_open_by_handle_at: u32 = 346;
-pub const __NR_clock_adjtime: u32 = 347;
-pub const __NR_syncfs: u32 = 348;
-pub const __NR_sendmmsg: u32 = 349;
-pub const __NR_setns: u32 = 350;
-pub const __NR_process_vm_readv: u32 = 351;
-pub const __NR_process_vm_writev: u32 = 352;
-pub const __NR_finit_module: u32 = 353;
-pub const __NR_kcmp: u32 = 354;
-pub const __NR_sched_setattr: u32 = 355;
-pub const __NR_sched_getattr: u32 = 356;
-pub const __NR_renameat2: u32 = 357;
-pub const __NR_seccomp: u32 = 358;
-pub const __NR_getrandom: u32 = 359;
-pub const __NR_memfd_create: u32 = 360;
-pub const __NR_bpf: u32 = 361;
-pub const __NR_execveat: u32 = 362;
-pub const __NR_switch_endian: u32 = 363;
-pub const __NR_userfaultfd: u32 = 364;
-pub const __NR_membarrier: u32 = 365;
-pub const __NR_mlock2: u32 = 378;
-pub const __NR_copy_file_range: u32 = 379;
-pub const __NR_preadv2: u32 = 380;
-pub const __NR_pwritev2: u32 = 381;
-pub const __NR_kexec_file_load: u32 = 382;
-pub const __NR_statx: u32 = 383;
-pub const __NR_pkey_alloc: u32 = 384;
-pub const __NR_pkey_free: u32 = 385;
-pub const __NR_pkey_mprotect: u32 = 386;
-pub const __NR_rseq: u32 = 387;
-pub const __NR_io_pgetevents: u32 = 388;
-pub const __NR_semtimedop: u32 = 392;
-pub const __NR_semget: u32 = 393;
-pub const __NR_semctl: u32 = 394;
-pub const __NR_shmget: u32 = 395;
-pub const __NR_shmctl: u32 = 396;
-pub const __NR_shmat: u32 = 397;
-pub const __NR_shmdt: u32 = 398;
-pub const __NR_msgget: u32 = 399;
-pub const __NR_msgsnd: u32 = 400;
-pub const __NR_msgrcv: u32 = 401;
-pub const __NR_msgctl: u32 = 402;
-pub const __NR_pidfd_send_signal: u32 = 424;
-pub const __NR_io_uring_setup: u32 = 425;
-pub const __NR_io_uring_enter: u32 = 426;
-pub const __NR_io_uring_register: u32 = 427;
-pub const __NR_open_tree: u32 = 428;
-pub const __NR_move_mount: u32 = 429;
-pub const __NR_fsopen: u32 = 430;
-pub const __NR_fsconfig: u32 = 431;
-pub const __NR_fsmount: u32 = 432;
-pub const __NR_fspick: u32 = 433;
-pub const __NR_pidfd_open: u32 = 434;
-pub const __NR_clone3: u32 = 435;
-pub const __NR_close_range: u32 = 436;
-pub const __NR_openat2: u32 = 437;
-pub const __NR_pidfd_getfd: u32 = 438;
-pub const __NR_faccessat2: u32 = 439;
-pub const __NR_process_madvise: u32 = 440;
-pub const __NR_epoll_pwait2: u32 = 441;
-pub const __NR_mount_setattr: u32 = 442;
-pub const __NR_quotactl_fd: u32 = 443;
-pub const __NR_landlock_create_ruleset: u32 = 444;
-pub const __NR_landlock_add_rule: u32 = 445;
-pub const __NR_landlock_restrict_self: u32 = 446;
-pub const __NR_process_mrelease: u32 = 448;
-pub const __NR_futex_waitv: u32 = 449;
-pub const __NR_set_mempolicy_home_node: u32 = 450;
-pub const __OLD_UTS_LEN: u32 = 8;
-pub const __NEW_UTS_LEN: u32 = 64;
-pub const WNOHANG: u32 = 1;
-pub const WUNTRACED: u32 = 2;
-pub const WSTOPPED: u32 = 2;
-pub const WEXITED: u32 = 4;
-pub const WCONTINUED: u32 = 8;
-pub const WNOWAIT: u32 = 16777216;
-pub const __WNOTHREAD: u32 = 536870912;
-pub const __WALL: u32 = 1073741824;
-pub const __WCLONE: u32 = 2147483648;
-pub const P_ALL: u32 = 0;
-pub const P_PID: u32 = 1;
-pub const P_PGID: u32 = 2;
-pub const P_PIDFD: u32 = 3;
-pub const XATTR_CREATE: u32 = 1;
-pub const XATTR_REPLACE: u32 = 2;
-pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0";
-pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0";
-pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0";
-pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0";
-pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0";
-pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0";
-pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0";
-pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0";
-pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0";
-pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0";
-pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0";
-pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0";
-pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0";
-pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0";
-pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0";
-pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0";
-pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0";
-pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0";
-pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0";
-pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0";
-pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0";
-pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0";
-pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0";
-pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0";
-pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0";
-pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0";
-pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0";
-pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0";
-pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0";
-pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0";
-pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0";
-pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0";
-pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0";
-pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0";
-pub const MFD_CLOEXEC: u32 = 1;
-pub const MFD_ALLOW_SEALING: u32 = 2;
-pub const MFD_HUGETLB: u32 = 4;
-pub const MFD_HUGE_SHIFT: u32 = 26;
-pub const MFD_HUGE_MASK: u32 = 63;
-pub const MFD_HUGE_64KB: u32 = 1073741824;
-pub const MFD_HUGE_512KB: u32 = 1275068416;
-pub const MFD_HUGE_1MB: u32 = 1342177280;
-pub const MFD_HUGE_2MB: u32 = 1409286144;
-pub const MFD_HUGE_8MB: u32 = 1543503872;
-pub const MFD_HUGE_16MB: u32 = 1610612736;
-pub const MFD_HUGE_32MB: u32 = 1677721600;
-pub const MFD_HUGE_256MB: u32 = 1879048192;
-pub const MFD_HUGE_512MB: u32 = 1946157056;
-pub const MFD_HUGE_1GB: u32 = 2013265920;
-pub const MFD_HUGE_2GB: u32 = 2080374784;
-pub const MFD_HUGE_16GB: u32 = 2281701376;
-pub const TFD_TIMER_ABSTIME: u32 = 1;
-pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2;
-pub const TFD_CLOEXEC: u32 = 524288;
-pub const TFD_NONBLOCK: u32 = 2048;
-pub const USERFAULTFD_IOC: u32 = 170;
-pub const _UFFDIO_REGISTER: u32 = 0;
-pub const _UFFDIO_UNREGISTER: u32 = 1;
-pub const _UFFDIO_WAKE: u32 = 2;
-pub const _UFFDIO_COPY: u32 = 3;
-pub const _UFFDIO_ZEROPAGE: u32 = 4;
-pub const _UFFDIO_WRITEPROTECT: u32 = 6;
-pub const _UFFDIO_CONTINUE: u32 = 7;
-pub const _UFFDIO_API: u32 = 63;
-pub const UFFDIO: u32 = 170;
-pub const UFFD_EVENT_PAGEFAULT: u32 = 18;
-pub const UFFD_EVENT_FORK: u32 = 19;
-pub const UFFD_EVENT_REMAP: u32 = 20;
-pub const UFFD_EVENT_REMOVE: u32 = 21;
-pub const UFFD_EVENT_UNMAP: u32 = 22;
-pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1;
-pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2;
-pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4;
-pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1;
-pub const UFFD_FEATURE_EVENT_FORK: u32 = 2;
-pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4;
-pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8;
-pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16;
-pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32;
-pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64;
-pub const UFFD_FEATURE_SIGBUS: u32 = 128;
-pub const UFFD_FEATURE_THREAD_ID: u32 = 256;
-pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512;
-pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024;
-pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048;
-pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096;
-pub const UFFD_USER_MODE_ONLY: u32 = 1;
-pub const IORING_FILE_INDEX_ALLOC: i32 = -1;
-pub const IORING_SETUP_IOPOLL: u32 = 1;
-pub const IORING_SETUP_SQPOLL: u32 = 2;
-pub const IORING_SETUP_SQ_AFF: u32 = 4;
-pub const IORING_SETUP_CQSIZE: u32 = 8;
-pub const IORING_SETUP_CLAMP: u32 = 16;
-pub const IORING_SETUP_ATTACH_WQ: u32 = 32;
-pub const IORING_SETUP_R_DISABLED: u32 = 64;
-pub const IORING_SETUP_SUBMIT_ALL: u32 = 128;
-pub const IORING_SETUP_COOP_TASKRUN: u32 = 256;
-pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512;
-pub const IORING_SETUP_SQE128: u32 = 1024;
-pub const IORING_SETUP_CQE32: u32 = 2048;
-pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096;
-pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192;
-pub const IORING_URING_CMD_FIXED: u32 = 1;
-pub const IORING_FSYNC_DATASYNC: u32 = 1;
-pub const IORING_TIMEOUT_ABS: u32 = 1;
-pub const IORING_TIMEOUT_UPDATE: u32 = 2;
-pub const IORING_TIMEOUT_BOOTTIME: u32 = 4;
-pub const IORING_TIMEOUT_REALTIME: u32 = 8;
-pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16;
-pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32;
-pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12;
-pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18;
-pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648;
-pub const IORING_POLL_ADD_MULTI: u32 = 1;
-pub const IORING_POLL_UPDATE_EVENTS: u32 = 2;
-pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4;
-pub const IORING_POLL_ADD_LEVEL: u32 = 8;
-pub const IORING_ASYNC_CANCEL_ALL: u32 = 1;
-pub const IORING_ASYNC_CANCEL_FD: u32 = 2;
-pub const IORING_ASYNC_CANCEL_ANY: u32 = 4;
-pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8;
-pub const IORING_RECVSEND_POLL_FIRST: u32 = 1;
-pub const IORING_RECV_MULTISHOT: u32 = 2;
-pub const IORING_RECVSEND_FIXED_BUF: u32 = 4;
-pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8;
-pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648;
-pub const IORING_ACCEPT_MULTISHOT: u32 = 1;
-pub const IORING_MSG_RING_CQE_SKIP: u32 = 1;
-pub const IORING_CQE_F_BUFFER: u32 = 1;
-pub const IORING_CQE_F_MORE: u32 = 2;
-pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4;
-pub const IORING_CQE_F_NOTIF: u32 = 8;
-pub const IORING_OFF_SQ_RING: u32 = 0;
-pub const IORING_OFF_CQ_RING: u32 = 134217728;
-pub const IORING_OFF_SQES: u32 = 268435456;
-pub const IORING_SQ_NEED_WAKEUP: u32 = 1;
-pub const IORING_SQ_CQ_OVERFLOW: u32 = 2;
-pub const IORING_SQ_TASKRUN: u32 = 4;
-pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1;
-pub const IORING_ENTER_GETEVENTS: u32 = 1;
-pub const IORING_ENTER_SQ_WAKEUP: u32 = 2;
-pub const IORING_ENTER_SQ_WAIT: u32 = 4;
-pub const IORING_ENTER_EXT_ARG: u32 = 8;
-pub const IORING_ENTER_REGISTERED_RING: u32 = 16;
-pub const IORING_FEAT_SINGLE_MMAP: u32 = 1;
-pub const IORING_FEAT_NODROP: u32 = 2;
-pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4;
-pub const IORING_FEAT_RW_CUR_POS: u32 = 8;
-pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16;
-pub const IORING_FEAT_FAST_POLL: u32 = 32;
-pub const IORING_FEAT_POLL_32BITS: u32 = 64;
-pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128;
-pub const IORING_FEAT_EXT_ARG: u32 = 256;
-pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512;
-pub const IORING_FEAT_RSRC_TAGS: u32 = 1024;
-pub const IORING_FEAT_CQE_SKIP: u32 = 2048;
-pub const IORING_FEAT_LINKED_FILE: u32 = 4096;
-pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1;
-pub const IORING_REGISTER_FILES_SKIP: i32 = -2;
-pub const IO_URING_OP_SUPPORTED: u32 = 1;
-pub const DT_UNKNOWN: u32 = 0;
-pub const DT_FIFO: u32 = 1;
-pub const DT_CHR: u32 = 2;
-pub const DT_DIR: u32 = 4;
-pub const DT_BLK: u32 = 6;
-pub const DT_REG: u32 = 8;
-pub const DT_LNK: u32 = 10;
-pub const DT_SOCK: u32 = 12;
-pub const SHUT_RD: u32 = 0;
-pub const SHUT_WR: u32 = 1;
-pub const SHUT_RDWR: u32 = 2;
-pub const STAT_HAVE_NSEC: u32 = 1;
-pub const SOCK_STREAM: u32 = 1;
-pub const SOCK_DGRAM: u32 = 2;
-pub const SOCK_RAW: u32 = 3;
-pub const SOCK_RDM: u32 = 4;
-pub const SOCK_SEQPACKET: u32 = 5;
-pub const F_OK: u32 = 0;
-pub const R_OK: u32 = 4;
-pub const W_OK: u32 = 2;
-pub const X_OK: u32 = 1;
-pub const UTIME_NOW: u32 = 1073741823;
-pub const UTIME_OMIT: u32 = 1073741822;
-pub const MSG_DONTWAIT: u32 = 64;
-pub const AF_UNSPEC: u32 = 0;
-pub const AF_UNIX: u32 = 1;
-pub const AF_INET: u32 = 2;
-pub const AF_AX25: u32 = 3;
-pub const AF_IPX: u32 = 4;
-pub const AF_APPLETALK: u32 = 5;
-pub const AF_NETROM: u32 = 6;
-pub const AF_BRIDGE: u32 = 7;
-pub const AF_ATMPVC: u32 = 8;
-pub const AF_X25: u32 = 9;
-pub const AF_INET6: u32 = 10;
-pub const AF_ROSE: u32 = 11;
-pub const AF_DECnet: u32 = 12;
-pub const AF_NETBEUI: u32 = 13;
-pub const AF_SECURITY: u32 = 14;
-pub const AF_KEY: u32 = 15;
-pub const AF_NETLINK: u32 = 16;
-pub const AF_PACKET: u32 = 17;
-pub const AF_ASH: u32 = 18;
-pub const AF_ECONET: u32 = 19;
-pub const AF_ATMSVC: u32 = 20;
-pub const AF_RDS: u32 = 21;
-pub const AF_SNA: u32 = 22;
-pub const AF_IRDA: u32 = 23;
-pub const AF_PPPOX: u32 = 24;
-pub const AF_WANPIPE: u32 = 25;
-pub const AF_LLC: u32 = 26;
-pub const AF_CAN: u32 = 29;
-pub const AF_TIPC: u32 = 30;
-pub const AF_BLUETOOTH: u32 = 31;
-pub const AF_IUCV: u32 = 32;
-pub const AF_RXRPC: u32 = 33;
-pub const AF_ISDN: u32 = 34;
-pub const AF_PHONET: u32 = 35;
-pub const AF_IEEE802154: u32 = 36;
-pub const AF_MAX: u32 = 37;
-pub const MSG_OOB: u32 = 1;
-pub const MSG_PEEK: u32 = 2;
-pub const MSG_DONTROUTE: u32 = 4;
-pub const MSG_CTRUNC: u32 = 8;
-pub const MSG_PROBE: u32 = 16;
-pub const MSG_TRUNC: u32 = 32;
-pub const MSG_EOR: u32 = 128;
-pub const MSG_WAITALL: u32 = 256;
-pub const MSG_FIN: u32 = 512;
-pub const MSG_SYN: u32 = 1024;
-pub const MSG_CONFIRM: u32 = 2048;
-pub const MSG_RST: u32 = 4096;
-pub const MSG_ERRQUEUE: u32 = 8192;
-pub const MSG_NOSIGNAL: u32 = 16384;
-pub const MSG_MORE: u32 = 32768;
-pub const MSG_CMSG_CLOEXEC: u32 = 1073741824;
-pub const STDIN_FILENO: u32 = 0;
-pub const STDOUT_FILENO: u32 = 1;
-pub const STDERR_FILENO: u32 = 2;
-pub const RWF_HIPRI: u32 = 1;
-pub const RWF_DSYNC: u32 = 2;
-pub const RWF_SYNC: u32 = 4;
-pub const RWF_NOWAIT: u32 = 8;
-pub const RWF_APPEND: u32 = 16;
-pub const EFD_SEMAPHORE: u32 = 1;
-pub const EFD_CLOEXEC: u32 = 524288;
-pub const EFD_NONBLOCK: u32 = 2048;
-pub const EPOLLIN: u32 = 1;
-pub const EPOLLPRI: u32 = 2;
-pub const EPOLLOUT: u32 = 4;
-pub const EPOLLERR: u32 = 8;
-pub const EPOLLHUP: u32 = 16;
-pub const EPOLLNVAL: u32 = 32;
-pub const EPOLLRDNORM: u32 = 64;
-pub const EPOLLRDBAND: u32 = 128;
-pub const EPOLLWRNORM: u32 = 256;
-pub const EPOLLWRBAND: u32 = 512;
-pub const EPOLLMSG: u32 = 1024;
-pub const EPOLLRDHUP: u32 = 8192;
-pub const EPOLLEXCLUSIVE: u32 = 268435456;
-pub const EPOLLWAKEUP: u32 = 536870912;
-pub const EPOLLONESHOT: u32 = 1073741824;
-pub const EPOLLET: u32 = 2147483648;
-pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336;
-pub const TFD_CREATE_FLAGS: u32 = 526336;
-pub const TFD_SETTIME_FLAGS: u32 = 1;
-pub const SCM_RIGHTS: u32 = 1;
-pub const SCM_CREDENTIALS: u32 = 2;
-pub const SCM_SECURITY: u32 = 3;
-pub const UFFD_API: u32 = 170;
-pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1;
-pub const UFFDIO_REGISTER_MODE_WP: u32 = 2;
-pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4;
-pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1;
-pub const UFFDIO_COPY_MODE_WP: u32 = 2;
-pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1;
-pub const SPLICE_F_MOVE: u32 = 1;
-pub const SPLICE_F_NONBLOCK: u32 = 2;
-pub const SPLICE_F_MORE: u32 = 4;
-pub const SPLICE_F_GIFT: u32 = 8;
-pub const MNT_FORCE: u32 = 1;
-pub const MNT_DETACH: u32 = 2;
-pub const MNT_EXPIRE: u32 = 4;
-pub const UMOUNT_NOFOLLOW: u32 = 8;
-pub const UMOUNT_UNUSED: u32 = 2147483648;
-pub type size_t = crate::ctypes::c_ulong;
-pub type ssize_t = crate::ctypes::c_long;
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_long;
-pub type __u64 = crate::ctypes::c_ulong;
-#[repr(C)]
-#[repr(align(16))]
-#[derive(Debug, Copy, Clone)]
-pub struct __vector128 {
-pub u: [__u32; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 16usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_old_dev_t = crate::ctypes::c_ulong;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_uid_t = __kernel_uid_t;
-pub type __kernel_old_gid_t = __kernel_gid_t;
-pub type __kernel_size_t = __kernel_ulong_t;
-pub type __kernel_ssize_t = __kernel_long_t;
-pub type __kernel_ptrdiff_t = __kernel_long_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_header_struct {
-pub version: __u32,
-pub pid: crate::ctypes::c_int,
-}
-pub type cap_user_header_t = *mut __user_cap_header_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_data_struct {
-pub effective: __u32,
-pub permitted: __u32,
-pub inheritable: __u32,
-}
-pub type cap_user_data_t = *mut __user_cap_data_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_cap_data__bindgen_ty_1; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize],
-pub rootid: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct f_owner_ex {
-pub type_: crate::ctypes::c_int,
-pub pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_off_t,
-pub l_len: __kernel_off_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock64 {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_loff_t,
-pub l_len: __kernel_loff_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct open_how {
-pub flags: __u64,
-pub mode: __u64,
-pub resolve: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct epoll_event {
-pub events: __poll_t,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v1 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub master_key_descriptor: [__u8; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_key {
-pub mode: __u32,
-pub raw: [__u8; 64usize],
-pub size: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v2 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub __reserved: [__u8; 4usize],
-pub master_key_identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_policy_ex_arg {
-pub policy_size: __u64,
-pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 {
-pub version: __u8,
-pub v1: fscrypt_policy_v1,
-pub v2: fscrypt_policy_v2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_key_specifier {
-pub type_: __u32,
-pub __reserved: __u32,
-pub u: fscrypt_key_specifier__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_key_specifier__bindgen_ty_1 {
-pub __reserved: [__u8; 32usize],
-pub descriptor: [__u8; 8usize],
-pub identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct fscrypt_provisioning_key_payload {
-pub type_: __u32,
-pub __reserved: __u32,
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-pub struct fscrypt_add_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub raw_size: __u32,
-pub key_id: __u32,
-pub __reserved: [__u32; 8usize],
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_remove_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub removal_status_flags: __u32,
-pub __reserved: [__u32; 5usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_key_status_arg {
-pub key_spec: fscrypt_key_specifier,
-pub __reserved: [__u32; 6usize],
-pub status: __u32,
-pub status_flags: __u32,
-pub user_count: __u32,
-pub __out_reserved: [__u32; 13usize],
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum fsconfig_command {
-FSCONFIG_SET_FLAG = 0,
-FSCONFIG_SET_STRING = 1,
-FSCONFIG_SET_BINARY = 2,
-FSCONFIG_SET_PATH = 3,
-FSCONFIG_SET_PATH_EMPTY = 4,
-FSCONFIG_SET_FD = 5,
-FSCONFIG_CMD_CREATE = 6,
-FSCONFIG_CMD_RECONFIGURE = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mount_attr {
-pub attr_set: __u64,
-pub attr_clr: __u64,
-pub propagation: __u64,
-pub userns_fd: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_clone_range {
-pub src_fd: __s64,
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_offset: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fstrim_range {
-pub start: __u64,
-pub len: __u64,
-pub minlen: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_dedupe_range_info {
-pub dest_fd: __s64,
-pub dest_offset: __u64,
-pub bytes_deduped: __u64,
-pub status: __s32,
-pub reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct file_dedupe_range {
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_count: __u16,
-pub reserved1: __u16,
-pub reserved2: __u32,
-pub info: __IncompleteArrayField<file_dedupe_range_info>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct files_stat_struct {
-pub nr_files: crate::ctypes::c_ulong,
-pub nr_free_files: crate::ctypes::c_ulong,
-pub max_files: crate::ctypes::c_ulong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct inodes_stat_t {
-pub nr_inodes: crate::ctypes::c_long,
-pub nr_unused: crate::ctypes::c_long,
-pub dummy: [crate::ctypes::c_long; 5usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fsxattr {
-pub fsx_xflags: __u32,
-pub fsx_extsize: __u32,
-pub fsx_nextents: __u32,
-pub fsx_projid: __u32,
-pub fsx_cowextsize: __u32,
-pub fsx_pad: [crate::ctypes::c_uchar; 8usize],
-}
-pub type __kernel_rwf_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct futex_waitv {
-pub val: __u64,
-pub uaddr: __u64,
-pub flags: __u32,
-pub __reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list {
-pub next: *mut robust_list,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list_head {
-pub list: robust_list,
-pub futex_offset: crate::ctypes::c_long,
-pub list_op_pending: *mut robust_list,
-}
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP;
-pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP;
-pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP;
-pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP;
-pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP;
-pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP;
-pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP;
-pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP;
-pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP;
-pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP;
-pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP;
-pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6;
-pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP;
-pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE;
-pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP;
-pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH;
-pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP;
-pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH;
-pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP;
-pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM;
-pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP;
-pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP;
-pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP;
-pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE;
-pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS;
-pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET;
-pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW;
-pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP;
-pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-IPPROTO_IP = 0,
-IPPROTO_ICMP = 1,
-IPPROTO_IGMP = 2,
-IPPROTO_IPIP = 4,
-IPPROTO_TCP = 6,
-IPPROTO_EGP = 8,
-IPPROTO_PUP = 12,
-IPPROTO_UDP = 17,
-IPPROTO_IDP = 22,
-IPPROTO_TP = 29,
-IPPROTO_DCCP = 33,
-IPPROTO_IPV6 = 41,
-IPPROTO_RSVP = 46,
-IPPROTO_GRE = 47,
-IPPROTO_ESP = 50,
-IPPROTO_AH = 51,
-IPPROTO_MTP = 92,
-IPPROTO_BEETPH = 94,
-IPPROTO_ENCAP = 98,
-IPPROTO_PIM = 103,
-IPPROTO_COMP = 108,
-IPPROTO_L2TP = 115,
-IPPROTO_SCTP = 132,
-IPPROTO_UDPLITE = 136,
-IPPROTO_MPLS = 137,
-IPPROTO_ETHERNET = 143,
-IPPROTO_RAW = 255,
-IPPROTO_MPTCP = 262,
-IPPROTO_MAX = 263,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_addr {
-pub s_addr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq {
-pub imr_multiaddr: in_addr,
-pub imr_interface: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreqn {
-pub imr_multiaddr: in_addr,
-pub imr_address: in_addr,
-pub imr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq_source {
-pub imr_multiaddr: __be32,
-pub imr_interface: __be32,
-pub imr_sourceaddr: __be32,
-}
-#[repr(C)]
-pub struct ip_msfilter {
-pub imsf_multiaddr: __be32,
-pub imsf_interface: __be32,
-pub imsf_fmode: __u32,
-pub imsf_numsrc: __u32,
-pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct ip_msfilter__bindgen_ty_1 {
-pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>,
-pub __bindgen_anon_1: __BindgenUnionField<ip_msfilter__bindgen_ty_1__bindgen_ty_1>,
-pub bindgen_union_field: u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 {
-pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-pub imsf_slist_flex: __IncompleteArrayField<__be32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_req {
-pub gr_interface: __u32,
-pub gr_group: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_source_req {
-pub gsr_interface: __u32,
-pub gsr_group: __kernel_sockaddr_storage,
-pub gsr_source: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-pub struct group_filter {
-pub __bindgen_anon_1: group_filter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_1>,
-pub __bindgen_anon_2: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_2>,
-pub bindgen_union_field: [u64; 34usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_1 {
-pub gf_interface_aux: __u32,
-pub gf_group_aux: __kernel_sockaddr_storage,
-pub gf_fmode_aux: __u32,
-pub gf_numsrc_aux: __u32,
-pub gf_slist: [__kernel_sockaddr_storage; 1usize],
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_2 {
-pub gf_interface: __u32,
-pub gf_group: __kernel_sockaddr_storage,
-pub gf_fmode: __u32,
-pub gf_numsrc: __u32,
-pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_pktinfo {
-pub ipi_ifindex: crate::ctypes::c_int,
-pub ipi_spec_dst: in_addr,
-pub ipi_addr: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_in {
-pub sin_family: __kernel_sa_family_t,
-pub sin_port: __be16,
-pub sin_addr: in_addr,
-pub __pad: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct inotify_event {
-pub wd: __s32,
-pub mask: __u32,
-pub cookie: __u32,
-pub len: __u32,
-pub name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct iphdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub tos: __u8,
-pub tot_len: __be16,
-pub id: __be16,
-pub frag_off: __be16,
-pub ttl: __u8,
-pub protocol: __u8,
-pub check: __sum16,
-pub __bindgen_anon_1: iphdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union iphdr__bindgen_ty_1 {
-pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-impl iphdr {
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn ihl(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_ihl(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(version: __u8, ihl: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let ihl: u8 = unsafe { ::core::mem::transmute(ihl) };
-ihl as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_auth_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub reserved: __be16,
-pub spi: __be32,
-pub seq_no: __be32,
-pub auth_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_esp_hdr {
-pub spi: __be32,
-pub seq_no: __be32,
-pub enc_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_comp_hdr {
-pub nexthdr: __u8,
-pub flags: __u8,
-pub cpi: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_beet_phdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub padlen: __u8,
-pub reserved: __u8,
-}
-pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING;
-pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING;
-pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP;
-pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS;
-pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS;
-pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS;
-pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA;
-pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER;
-pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY;
-pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS;
-pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG;
-pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER;
-pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID;
-pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM;
-pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY;
-pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION;
-pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE;
-pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE;
-pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES;
-pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT;
-pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY;
-pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL;
-pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK;
-pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN;
-pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET;
-pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP;
-pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING;
-pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER;
-pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IPV4_DEVCONF_FORWARDING = 1,
-IPV4_DEVCONF_MC_FORWARDING = 2,
-IPV4_DEVCONF_PROXY_ARP = 3,
-IPV4_DEVCONF_ACCEPT_REDIRECTS = 4,
-IPV4_DEVCONF_SECURE_REDIRECTS = 5,
-IPV4_DEVCONF_SEND_REDIRECTS = 6,
-IPV4_DEVCONF_SHARED_MEDIA = 7,
-IPV4_DEVCONF_RP_FILTER = 8,
-IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9,
-IPV4_DEVCONF_BOOTP_RELAY = 10,
-IPV4_DEVCONF_LOG_MARTIANS = 11,
-IPV4_DEVCONF_TAG = 12,
-IPV4_DEVCONF_ARPFILTER = 13,
-IPV4_DEVCONF_MEDIUM_ID = 14,
-IPV4_DEVCONF_NOXFRM = 15,
-IPV4_DEVCONF_NOPOLICY = 16,
-IPV4_DEVCONF_FORCE_IGMP_VERSION = 17,
-IPV4_DEVCONF_ARP_ANNOUNCE = 18,
-IPV4_DEVCONF_ARP_IGNORE = 19,
-IPV4_DEVCONF_PROMOTE_SECONDARIES = 20,
-IPV4_DEVCONF_ARP_ACCEPT = 21,
-IPV4_DEVCONF_ARP_NOTIFY = 22,
-IPV4_DEVCONF_ACCEPT_LOCAL = 23,
-IPV4_DEVCONF_SRC_VMARK = 24,
-IPV4_DEVCONF_PROXY_ARP_PVLAN = 25,
-IPV4_DEVCONF_ROUTE_LOCALNET = 26,
-IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27,
-IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28,
-IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29,
-IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30,
-IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31,
-IPV4_DEVCONF_BC_FORWARDING = 32,
-IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33,
-__IPV4_DEVCONF_MAX = 34,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_addr {
-pub in6_u: in6_addr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union in6_addr__bindgen_ty_1 {
-pub u6_addr8: [__u8; 16usize],
-pub u6_addr16: [__be16; 8usize],
-pub u6_addr32: [__be32; 4usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr_in6 {
-pub sin6_family: crate::ctypes::c_ushort,
-pub sin6_port: __be16,
-pub sin6_flowinfo: __be32,
-pub sin6_addr: in6_addr,
-pub sin6_scope_id: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6_mreq {
-pub ipv6mr_multiaddr: in6_addr,
-pub ipv6mr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_flowlabel_req {
-pub flr_dst: in6_addr,
-pub flr_label: __be32,
-pub flr_action: __u8,
-pub flr_share: __u8,
-pub flr_flags: __u16,
-pub flr_expires: __u16,
-pub flr_linger: __u16,
-pub __flr_pad: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_pktinfo {
-pub ipi6_addr: in6_addr,
-pub ipi6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ip6_mtuinfo {
-pub ip6m_addr: sockaddr_in6,
-pub ip6m_mtu: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_ifreq {
-pub ifr6_addr: in6_addr,
-pub ifr6_prefixlen: __u32,
-pub ifr6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_rt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub type_: __u8,
-pub segments_left: __u8,
-}
-#[repr(C, packed)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_opt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-}
-#[repr(C)]
-pub struct rt0_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: __IncompleteArrayField<in6_addr>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rt2_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: in6_addr,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct ipv6_destopt_hao {
-pub type_: __u8,
-pub length: __u8,
-pub addr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub flow_lbl: [__u8; 3usize],
-pub payload_len: __be16,
-pub nexthdr: __u8,
-pub hop_limit: __u8,
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union ipv6hdr__bindgen_ty_1 {
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-impl ipv6hdr {
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn priority(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_priority(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(version: __u8, priority: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let priority: u8 = unsafe { ::core::mem::transmute(priority) };
-priority as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING;
-pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT;
-pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6;
-pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA;
-pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS;
-pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF;
-pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS;
-pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS;
-pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL;
-pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY;
-pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR;
-pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT;
-pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT;
-pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY;
-pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR;
-pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES;
-pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION;
-pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR;
-pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO;
-pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF;
-pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN;
-pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP;
-pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD;
-pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING;
-pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6;
-pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD;
-pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO;
-pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY;
-pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC;
-pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL;
-pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC;
-pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU;
-pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET;
-pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY;
-pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT;
-pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA;
-pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN;
-pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL;
-pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED;
-pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC;
-pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD;
-pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE;
-pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN;
-pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS;
-pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED;
-pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC;
-pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED;
-pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID;
-pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE;
-pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER;
-pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA;
-pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-DEVCONF_FORWARDING = 0,
-DEVCONF_HOPLIMIT = 1,
-DEVCONF_MTU6 = 2,
-DEVCONF_ACCEPT_RA = 3,
-DEVCONF_ACCEPT_REDIRECTS = 4,
-DEVCONF_AUTOCONF = 5,
-DEVCONF_DAD_TRANSMITS = 6,
-DEVCONF_RTR_SOLICITS = 7,
-DEVCONF_RTR_SOLICIT_INTERVAL = 8,
-DEVCONF_RTR_SOLICIT_DELAY = 9,
-DEVCONF_USE_TEMPADDR = 10,
-DEVCONF_TEMP_VALID_LFT = 11,
-DEVCONF_TEMP_PREFERED_LFT = 12,
-DEVCONF_REGEN_MAX_RETRY = 13,
-DEVCONF_MAX_DESYNC_FACTOR = 14,
-DEVCONF_MAX_ADDRESSES = 15,
-DEVCONF_FORCE_MLD_VERSION = 16,
-DEVCONF_ACCEPT_RA_DEFRTR = 17,
-DEVCONF_ACCEPT_RA_PINFO = 18,
-DEVCONF_ACCEPT_RA_RTR_PREF = 19,
-DEVCONF_RTR_PROBE_INTERVAL = 20,
-DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21,
-DEVCONF_PROXY_NDP = 22,
-DEVCONF_OPTIMISTIC_DAD = 23,
-DEVCONF_ACCEPT_SOURCE_ROUTE = 24,
-DEVCONF_MC_FORWARDING = 25,
-DEVCONF_DISABLE_IPV6 = 26,
-DEVCONF_ACCEPT_DAD = 27,
-DEVCONF_FORCE_TLLAO = 28,
-DEVCONF_NDISC_NOTIFY = 29,
-DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30,
-DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31,
-DEVCONF_SUPPRESS_FRAG_NDISC = 32,
-DEVCONF_ACCEPT_RA_FROM_LOCAL = 33,
-DEVCONF_USE_OPTIMISTIC = 34,
-DEVCONF_ACCEPT_RA_MTU = 35,
-DEVCONF_STABLE_SECRET = 36,
-DEVCONF_USE_OIF_ADDRS_ONLY = 37,
-DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38,
-DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39,
-DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40,
-DEVCONF_DROP_UNSOLICITED_NA = 41,
-DEVCONF_KEEP_ADDR_ON_DOWN = 42,
-DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43,
-DEVCONF_SEG6_ENABLED = 44,
-DEVCONF_SEG6_REQUIRE_HMAC = 45,
-DEVCONF_ENHANCED_DAD = 46,
-DEVCONF_ADDR_GEN_MODE = 47,
-DEVCONF_DISABLE_POLICY = 48,
-DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49,
-DEVCONF_NDISC_TCLASS = 50,
-DEVCONF_RPL_SEG_ENABLED = 51,
-DEVCONF_RA_DEFRTR_METRIC = 52,
-DEVCONF_IOAM6_ENABLED = 53,
-DEVCONF_IOAM6_ID = 54,
-DEVCONF_IOAM6_ID_WIDE = 55,
-DEVCONF_NDISC_EVICT_NOCARRIER = 56,
-DEVCONF_ACCEPT_UNTRACKED_NA = 57,
-DEVCONF_MAX = 58,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum socket_state {
-SS_FREE = 0,
-SS_UNCONNECTED = 1,
-SS_CONNECTING = 2,
-SS_CONNECTED = 3,
-SS_DISCONNECTING = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct pollfd {
-pub fd: crate::ctypes::c_int,
-pub events: crate::ctypes::c_short,
-pub revents: crate::ctypes::c_short,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prctl_mm_map {
-pub start_code: __u64,
-pub end_code: __u64,
-pub start_data: __u64,
-pub end_data: __u64,
-pub start_brk: __u64,
-pub brk: __u64,
-pub start_stack: __u64,
-pub arg_start: __u64,
-pub arg_end: __u64,
-pub env_start: __u64,
-pub env_end: __u64,
-pub auxv: *mut __u64,
-pub auxv_size: __u32,
-pub exe_fd: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rand_pool_info {
-pub entropy_count: crate::ctypes::c_int,
-pub buf_size: crate::ctypes::c_int,
-pub buf: __IncompleteArrayField<__u32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_timespec {
-pub tv_sec: __kernel_time64_t,
-pub tv_nsec: crate::ctypes::c_longlong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_itimerspec {
-pub it_interval: __kernel_timespec,
-pub it_value: __kernel_timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timeval {
-pub tv_sec: __kernel_long_t,
-pub tv_usec: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_itimerval {
-pub it_interval: __kernel_old_timeval,
-pub it_value: __kernel_old_timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sock_timeval {
-pub tv_sec: __s64,
-pub tv_usec: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timeval {
-pub tv_sec: __kernel_old_time_t,
-pub tv_usec: __kernel_suseconds_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerspec {
-pub it_interval: timespec,
-pub it_value: timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerval {
-pub it_interval: timeval,
-pub it_value: timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timezone {
-pub tz_minuteswest: crate::ctypes::c_int,
-pub tz_dsttime: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rusage {
-pub ru_utime: __kernel_old_timeval,
-pub ru_stime: __kernel_old_timeval,
-pub ru_maxrss: __kernel_long_t,
-pub ru_ixrss: __kernel_long_t,
-pub ru_idrss: __kernel_long_t,
-pub ru_isrss: __kernel_long_t,
-pub ru_minflt: __kernel_long_t,
-pub ru_majflt: __kernel_long_t,
-pub ru_nswap: __kernel_long_t,
-pub ru_inblock: __kernel_long_t,
-pub ru_oublock: __kernel_long_t,
-pub ru_msgsnd: __kernel_long_t,
-pub ru_msgrcv: __kernel_long_t,
-pub ru_nsignals: __kernel_long_t,
-pub ru_nvcsw: __kernel_long_t,
-pub ru_nivcsw: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit {
-pub rlim_cur: __kernel_ulong_t,
-pub rlim_max: __kernel_ulong_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit64 {
-pub rlim_cur: __u64,
-pub rlim_max: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct clone_args {
-pub flags: __u64,
-pub pidfd: __u64,
-pub child_tid: __u64,
-pub parent_tid: __u64,
-pub exit_signal: __u64,
-pub stack: __u64,
-pub stack_size: __u64,
-pub tls: __u64,
-pub set_tid: __u64,
-pub set_tid_size: __u64,
-pub cgroup: __u64,
-}
-pub type old_sigset_t = crate::ctypes::c_ulong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigset_t {
-pub sig: [crate::ctypes::c_ulong; 1usize],
-}
-pub type __signalfn_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __sighandler_t = __signalfn_t;
-pub type __restorefn_t = ::core::option::Option<unsafe extern "C" fn()>;
-pub type __sigrestore_t = __restorefn_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct old_sigaction {
-pub sa_handler: __sighandler_t,
-pub sa_mask: old_sigset_t,
-pub sa_flags: crate::ctypes::c_ulong,
-pub sa_restorer: __sigrestore_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaction {
-pub sa_handler: __sighandler_t,
-pub sa_flags: crate::ctypes::c_ulong,
-pub sa_restorer: __sigrestore_t,
-pub sa_mask: sigset_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaltstack {
-pub ss_sp: *mut crate::ctypes::c_void,
-pub ss_flags: crate::ctypes::c_int,
-pub ss_size: __kernel_size_t,
-}
-pub type stack_t = sigaltstack;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigval {
-pub sival_int: crate::ctypes::c_int,
-pub sival_ptr: *mut crate::ctypes::c_void,
-}
-pub type sigval_t = sigval;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields {
-pub _kill: __sifields__bindgen_ty_1,
-pub _timer: __sifields__bindgen_ty_2,
-pub _rt: __sifields__bindgen_ty_3,
-pub _sigchld: __sifields__bindgen_ty_4,
-pub _sigfault: __sifields__bindgen_ty_5,
-pub _sigpoll: __sifields__bindgen_ty_6,
-pub _sigsys: __sifields__bindgen_ty_7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_1 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_2 {
-pub _tid: __kernel_timer_t,
-pub _overrun: crate::ctypes::c_int,
-pub _sigval: sigval_t,
-pub _sys_private: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_3 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _sigval: sigval_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_4 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _status: crate::ctypes::c_int,
-pub _utime: __kernel_clock_t,
-pub _stime: __kernel_clock_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_5 {
-pub _addr: *mut crate::ctypes::c_void,
-pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields__bindgen_ty_5__bindgen_ty_1 {
-pub _trapno: crate::ctypes::c_int,
-pub _addr_lsb: crate::ctypes::c_short,
-pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1,
-pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2,
-pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {
-pub _dummy_bnd: [crate::ctypes::c_char; 8usize],
-pub _lower: *mut crate::ctypes::c_void,
-pub _upper: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 {
-pub _dummy_pkey: [crate::ctypes::c_char; 8usize],
-pub _pkey: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 {
-pub _data: crate::ctypes::c_ulong,
-pub _type: __u32,
-pub _flags: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_6 {
-pub _band: crate::ctypes::c_long,
-pub _fd: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_7 {
-pub _call_addr: *mut crate::ctypes::c_void,
-pub _syscall: crate::ctypes::c_int,
-pub _arch: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union siginfo__bindgen_ty_1 {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1,
-pub _si_pad: [crate::ctypes::c_int; 32usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo__bindgen_ty_1__bindgen_ty_1 {
-pub si_signo: crate::ctypes::c_int,
-pub si_errno: crate::ctypes::c_int,
-pub si_code: crate::ctypes::c_int,
-pub _sifields: __sifields,
-}
-pub type siginfo_t = siginfo;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sigevent {
-pub sigev_value: sigval_t,
-pub sigev_signo: crate::ctypes::c_int,
-pub sigev_notify: crate::ctypes::c_int,
-pub _sigev_un: sigevent__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigevent__bindgen_ty_1 {
-pub _pad: [crate::ctypes::c_int; 12usize],
-pub _tid: crate::ctypes::c_int,
-pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigevent__bindgen_ty_1__bindgen_ty_1 {
-pub _function: ::core::option::Option<unsafe extern "C" fn(arg1: sigval_t)>,
-pub _attribute: *mut crate::ctypes::c_void,
-}
-pub type sigevent_t = sigevent;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx_timestamp {
-pub tv_sec: __s64,
-pub tv_nsec: __u32,
-pub __reserved: __s32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx {
-pub stx_mask: __u32,
-pub stx_blksize: __u32,
-pub stx_attributes: __u64,
-pub stx_nlink: __u32,
-pub stx_uid: __u32,
-pub stx_gid: __u32,
-pub stx_mode: __u16,
-pub __spare0: [__u16; 1usize],
-pub stx_ino: __u64,
-pub stx_size: __u64,
-pub stx_blocks: __u64,
-pub stx_attributes_mask: __u64,
-pub stx_atime: statx_timestamp,
-pub stx_btime: statx_timestamp,
-pub stx_ctime: statx_timestamp,
-pub stx_mtime: statx_timestamp,
-pub stx_rdev_major: __u32,
-pub stx_rdev_minor: __u32,
-pub stx_dev_major: __u32,
-pub stx_dev_minor: __u32,
-pub stx_mnt_id: __u64,
-pub stx_dio_mem_align: __u32,
-pub stx_dio_offset_align: __u32,
-pub __spare3: [__u64; 12usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct sysinfo {
-pub uptime: __kernel_long_t,
-pub loads: [__kernel_ulong_t; 3usize],
-pub totalram: __kernel_ulong_t,
-pub freeram: __kernel_ulong_t,
-pub sharedram: __kernel_ulong_t,
-pub bufferram: __kernel_ulong_t,
-pub totalswap: __kernel_ulong_t,
-pub freeswap: __kernel_ulong_t,
-pub procs: __u16,
-pub pad: __u16,
-pub totalhigh: __kernel_ulong_t,
-pub freehigh: __kernel_ulong_t,
-pub mem_unit: __u32,
-pub _f: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcphdr {
-pub source: __be16,
-pub dest: __be16,
-pub seq: __be32,
-pub ack_seq: __be32,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub window: __be16,
-pub check: __sum16,
-pub urg_ptr: __be16,
-}
-impl tcphdr {
-#[inline]
-pub fn doff(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_doff(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn res1(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_res1(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn cwr(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_cwr(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ece(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ece(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn urg(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_urg(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(10usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ack(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ack(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(11usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn psh(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_psh(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(12usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn rst(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_rst(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(13usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn syn(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_syn(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(14usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn fin(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_fin(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(15usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(doff: __u16, res1: __u16, cwr: __u16, ece: __u16, urg: __u16, ack: __u16, psh: __u16, rst: __u16, syn: __u16, fin: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let doff: u16 = unsafe { ::core::mem::transmute(doff) };
-doff as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let res1: u16 = unsafe { ::core::mem::transmute(res1) };
-res1 as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let cwr: u16 = unsafe { ::core::mem::transmute(cwr) };
-cwr as u64
-});
-__bindgen_bitfield_unit.set(9usize, 1u8, {
-let ece: u16 = unsafe { ::core::mem::transmute(ece) };
-ece as u64
-});
-__bindgen_bitfield_unit.set(10usize, 1u8, {
-let urg: u16 = unsafe { ::core::mem::transmute(urg) };
-urg as u64
-});
-__bindgen_bitfield_unit.set(11usize, 1u8, {
-let ack: u16 = unsafe { ::core::mem::transmute(ack) };
-ack as u64
-});
-__bindgen_bitfield_unit.set(12usize, 1u8, {
-let psh: u16 = unsafe { ::core::mem::transmute(psh) };
-psh as u64
-});
-__bindgen_bitfield_unit.set(13usize, 1u8, {
-let rst: u16 = unsafe { ::core::mem::transmute(rst) };
-rst as u64
-});
-__bindgen_bitfield_unit.set(14usize, 1u8, {
-let syn: u16 = unsafe { ::core::mem::transmute(syn) };
-syn as u64
-});
-__bindgen_bitfield_unit.set(15usize, 1u8, {
-let fin: u16 = unsafe { ::core::mem::transmute(fin) };
-fin as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union tcp_word_hdr {
-pub hdr: tcphdr,
-pub words: [__be32; 5usize],
-}
-pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR;
-pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE;
-pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG;
-pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK;
-pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH;
-pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST;
-pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN;
-pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN;
-pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS;
-pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-TCP_FLAG_CWR = 8388608,
-TCP_FLAG_ECE = 4194304,
-TCP_FLAG_URG = 2097152,
-TCP_FLAG_ACK = 1048576,
-TCP_FLAG_PSH = 524288,
-TCP_FLAG_RST = 262144,
-TCP_FLAG_SYN = 131072,
-TCP_FLAG_FIN = 65536,
-TCP_RESERVED_BITS = 251658240,
-TCP_DATA_OFFSET = 4026531840,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_opt {
-pub opt_code: __u32,
-pub opt_val: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_window {
-pub snd_wl1: __u32,
-pub snd_wnd: __u32,
-pub max_window: __u32,
-pub rcv_wnd: __u32,
-pub rcv_wup: __u32,
-}
-pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE;
-pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE;
-pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE;
-pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-TCP_NO_QUEUE = 0,
-TCP_RECV_QUEUE = 1,
-TCP_SEND_QUEUE = 2,
-TCP_QUEUES_NR = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_fastopen_client_fail {
-TFO_STATUS_UNSPEC = 0,
-TFO_COOKIE_UNAVAILABLE = 1,
-TFO_DATA_NOT_ACKED = 2,
-TFO_SYN_RETRANSMITTED = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_ca_state {
-TCP_CA_Open = 0,
-TCP_CA_Disorder = 1,
-TCP_CA_CWR = 2,
-TCP_CA_Recovery = 3,
-TCP_CA_Loss = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_info {
-pub tcpi_state: __u8,
-pub tcpi_ca_state: __u8,
-pub tcpi_retransmits: __u8,
-pub tcpi_probes: __u8,
-pub tcpi_backoff: __u8,
-pub tcpi_options: __u8,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub tcpi_rto: __u32,
-pub tcpi_ato: __u32,
-pub tcpi_snd_mss: __u32,
-pub tcpi_rcv_mss: __u32,
-pub tcpi_unacked: __u32,
-pub tcpi_sacked: __u32,
-pub tcpi_lost: __u32,
-pub tcpi_retrans: __u32,
-pub tcpi_fackets: __u32,
-pub tcpi_last_data_sent: __u32,
-pub tcpi_last_ack_sent: __u32,
-pub tcpi_last_data_recv: __u32,
-pub tcpi_last_ack_recv: __u32,
-pub tcpi_pmtu: __u32,
-pub tcpi_rcv_ssthresh: __u32,
-pub tcpi_rtt: __u32,
-pub tcpi_rttvar: __u32,
-pub tcpi_snd_ssthresh: __u32,
-pub tcpi_snd_cwnd: __u32,
-pub tcpi_advmss: __u32,
-pub tcpi_reordering: __u32,
-pub tcpi_rcv_rtt: __u32,
-pub tcpi_rcv_space: __u32,
-pub tcpi_total_retrans: __u32,
-pub tcpi_pacing_rate: __u64,
-pub tcpi_max_pacing_rate: __u64,
-pub tcpi_bytes_acked: __u64,
-pub tcpi_bytes_received: __u64,
-pub tcpi_segs_out: __u32,
-pub tcpi_segs_in: __u32,
-pub tcpi_notsent_bytes: __u32,
-pub tcpi_min_rtt: __u32,
-pub tcpi_data_segs_in: __u32,
-pub tcpi_data_segs_out: __u32,
-pub tcpi_delivery_rate: __u64,
-pub tcpi_busy_time: __u64,
-pub tcpi_rwnd_limited: __u64,
-pub tcpi_sndbuf_limited: __u64,
-pub tcpi_delivered: __u32,
-pub tcpi_delivered_ce: __u32,
-pub tcpi_bytes_sent: __u64,
-pub tcpi_bytes_retrans: __u64,
-pub tcpi_dsack_dups: __u32,
-pub tcpi_reord_seen: __u32,
-pub tcpi_rcv_ooopack: __u32,
-pub tcpi_snd_wnd: __u32,
-pub tcpi_rcv_wnd: __u32,
-pub tcpi_rehash: __u32,
-}
-impl tcp_info {
-#[inline]
-pub fn tcpi_snd_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_snd_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_rcv_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_fastopen_client_fail(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) };
-tcpi_snd_wscale as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) };
-tcpi_rcv_wscale as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) };
-tcpi_delivery_rate_app_limited as u64
-});
-__bindgen_bitfield_unit.set(9usize, 2u8, {
-let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) };
-tcpi_fastopen_client_fail as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD;
-pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY;
-pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED;
-pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED;
-pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT;
-pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS;
-pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE;
-pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE;
-pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND;
-pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING;
-pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT;
-pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS;
-pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT;
-pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE;
-pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE;
-pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH;
-pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED;
-pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE;
-pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT;
-pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS;
-pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS;
-pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN;
-pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT;
-pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH;
-pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT;
-pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
-pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
-pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-TCP_NLA_PAD = 0,
-TCP_NLA_BUSY = 1,
-TCP_NLA_RWND_LIMITED = 2,
-TCP_NLA_SNDBUF_LIMITED = 3,
-TCP_NLA_DATA_SEGS_OUT = 4,
-TCP_NLA_TOTAL_RETRANS = 5,
-TCP_NLA_PACING_RATE = 6,
-TCP_NLA_DELIVERY_RATE = 7,
-TCP_NLA_SND_CWND = 8,
-TCP_NLA_REORDERING = 9,
-TCP_NLA_MIN_RTT = 10,
-TCP_NLA_RECUR_RETRANS = 11,
-TCP_NLA_DELIVERY_RATE_APP_LMT = 12,
-TCP_NLA_SNDQ_SIZE = 13,
-TCP_NLA_CA_STATE = 14,
-TCP_NLA_SND_SSTHRESH = 15,
-TCP_NLA_DELIVERED = 16,
-TCP_NLA_DELIVERED_CE = 17,
-TCP_NLA_BYTES_SENT = 18,
-TCP_NLA_BYTES_RETRANS = 19,
-TCP_NLA_DSACK_DUPS = 20,
-TCP_NLA_REORD_SEEN = 21,
-TCP_NLA_SRTT = 22,
-TCP_NLA_TIMEOUT_REHASH = 23,
-TCP_NLA_BYTES_NOTSENT = 24,
-TCP_NLA_EDT = 25,
-TCP_NLA_TTL = 26,
-TCP_NLA_REHASH = 27,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct tcp_md5sig {
-pub tcpm_addr: __kernel_sockaddr_storage,
-pub tcpm_flags: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_ifindex: crate::ctypes::c_int,
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_diag_md5sig {
-pub tcpm_family: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_addr: [__be32; 4usize],
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_zerocopy_receive {
-pub address: __u64,
-pub length: __u32,
-pub recv_skip_hint: __u32,
-pub inq: __u32,
-pub err: __s32,
-pub copybuf_address: __u64,
-pub copybuf_len: __s32,
-pub flags: __u32,
-pub msg_control: __u64,
-pub msg_controllen: __u64,
-pub msg_flags: __u32,
-pub reserved: __u32,
-}
-pub type cc_t = crate::ctypes::c_uchar;
-pub type speed_t = crate::ctypes::c_uint;
-pub type tcflag_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_cc: [cc_t; 19usize],
-pub c_line: cc_t,
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ktermios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_cc: [cc_t; 19usize],
-pub c_line: cc_t,
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sgttyb {
-pub sg_ispeed: crate::ctypes::c_char,
-pub sg_ospeed: crate::ctypes::c_char,
-pub sg_erase: crate::ctypes::c_char,
-pub sg_kill: crate::ctypes::c_char,
-pub sg_flags: crate::ctypes::c_short,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tchars {
-pub t_intrc: crate::ctypes::c_char,
-pub t_quitc: crate::ctypes::c_char,
-pub t_startc: crate::ctypes::c_char,
-pub t_stopc: crate::ctypes::c_char,
-pub t_eofc: crate::ctypes::c_char,
-pub t_brkc: crate::ctypes::c_char,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ltchars {
-pub t_suspc: crate::ctypes::c_char,
-pub t_dsuspc: crate::ctypes::c_char,
-pub t_rprntc: crate::ctypes::c_char,
-pub t_flushc: crate::ctypes::c_char,
-pub t_werasc: crate::ctypes::c_char,
-pub t_lnextc: crate::ctypes::c_char,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct winsize {
-pub ws_row: crate::ctypes::c_ushort,
-pub ws_col: crate::ctypes::c_ushort,
-pub ws_xpixel: crate::ctypes::c_ushort,
-pub ws_ypixel: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termio {
-pub c_iflag: crate::ctypes::c_ushort,
-pub c_oflag: crate::ctypes::c_ushort,
-pub c_cflag: crate::ctypes::c_ushort,
-pub c_lflag: crate::ctypes::c_ushort,
-pub c_line: crate::ctypes::c_uchar,
-pub c_cc: [crate::ctypes::c_uchar; 10usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iovec {
-pub iov_base: *mut crate::ctypes::c_void,
-pub iov_len: __kernel_size_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_un {
-pub sun_family: __kernel_sa_family_t,
-pub sun_path: [crate::ctypes::c_char; 108usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct oldold_utsname {
-pub sysname: [crate::ctypes::c_char; 9usize],
-pub nodename: [crate::ctypes::c_char; 9usize],
-pub release: [crate::ctypes::c_char; 9usize],
-pub version: [crate::ctypes::c_char; 9usize],
-pub machine: [crate::ctypes::c_char; 9usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct old_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct new_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-pub domainname: [crate::ctypes::c_char; 65usize],
-}
-impl membarrier_cmd {
-pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd {
-MEMBARRIER_CMD_QUERY = 0,
-MEMBARRIER_CMD_GLOBAL = 1,
-MEMBARRIER_CMD_GLOBAL_EXPEDITED = 2,
-MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = 4,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED = 8,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = 16,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = 32,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = 64,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = 128,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = 256,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd_flag {
-MEMBARRIER_CMD_FLAG_CPU = 1,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg {
-pub event: __u8,
-pub reserved1: __u8,
-pub reserved2: __u16,
-pub reserved3: __u32,
-pub arg: uffd_msg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1 {
-pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1,
-pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2,
-pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3,
-pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4,
-pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 {
-pub flags: __u64,
-pub address: __u64,
-pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {
-pub ptid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 {
-pub ufd: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 {
-pub from: __u64,
-pub to: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 {
-pub start: __u64,
-pub end: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 {
-pub reserved1: __u64,
-pub reserved2: __u64,
-pub reserved3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_api {
-pub api: __u64,
-pub features: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_range {
-pub start: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_register {
-pub range: uffdio_range,
-pub mode: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_copy {
-pub dst: __u64,
-pub src: __u64,
-pub len: __u64,
-pub mode: __u64,
-pub copy: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_zeropage {
-pub range: uffdio_range,
-pub mode: __u64,
-pub zeropage: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_writeprotect {
-pub range: uffdio_range,
-pub mode: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_continue {
-pub range: uffdio_range,
-pub mode: __u64,
-pub mapped: __s64,
-}
-#[repr(C)]
-pub struct io_uring_sqe {
-pub opcode: __u8,
-pub flags: __u8,
-pub ioprio: __u16,
-pub fd: __s32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1,
-pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2,
-pub len: __u32,
-pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3,
-pub user_data: __u64,
-pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4,
-pub personality: __u16,
-pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5,
-pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_1 {
-pub off: __u64,
-pub addr2: __u64,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 {
-pub cmd_op: __u32,
-pub __pad1: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_2 {
-pub addr: __u64,
-pub splice_off_in: __u64,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_3 {
-pub rw_flags: __kernel_rwf_t,
-pub fsync_flags: __u32,
-pub poll_events: __u16,
-pub poll32_events: __u32,
-pub sync_range_flags: __u32,
-pub msg_flags: __u32,
-pub timeout_flags: __u32,
-pub accept_flags: __u32,
-pub cancel_flags: __u32,
-pub open_flags: __u32,
-pub statx_flags: __u32,
-pub fadvise_advice: __u32,
-pub splice_flags: __u32,
-pub rename_flags: __u32,
-pub unlink_flags: __u32,
-pub hardlink_flags: __u32,
-pub xattr_flags: __u32,
-pub msg_ring_flags: __u32,
-pub uring_cmd_flags: __u32,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_4 {
-pub buf_index: __u16,
-pub buf_group: __u16,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_5 {
-pub splice_fd_in: __s32,
-pub file_index: __u32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 {
-pub addr_len: __u16,
-pub __pad3: [__u16; 1usize],
-}
-#[repr(C)]
-pub struct io_uring_sqe__bindgen_ty_6 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_sqe__bindgen_ty_6__bindgen_ty_1>,
-pub cmd: __BindgenUnionField<[__u8; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 {
-pub addr3: __u64,
-pub __pad2: [__u64; 1usize],
-}
-pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT;
-pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT;
-pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT;
-pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT;
-pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT;
-pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT;
-pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-IOSQE_FIXED_FILE_BIT = 0,
-IOSQE_IO_DRAIN_BIT = 1,
-IOSQE_IO_LINK_BIT = 2,
-IOSQE_IO_HARDLINK_BIT = 3,
-IOSQE_ASYNC_BIT = 4,
-IOSQE_BUFFER_SELECT_BIT = 5,
-IOSQE_CQE_SKIP_SUCCESS_BIT = 6,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum io_uring_op {
-IORING_OP_NOP = 0,
-IORING_OP_READV = 1,
-IORING_OP_WRITEV = 2,
-IORING_OP_FSYNC = 3,
-IORING_OP_READ_FIXED = 4,
-IORING_OP_WRITE_FIXED = 5,
-IORING_OP_POLL_ADD = 6,
-IORING_OP_POLL_REMOVE = 7,
-IORING_OP_SYNC_FILE_RANGE = 8,
-IORING_OP_SENDMSG = 9,
-IORING_OP_RECVMSG = 10,
-IORING_OP_TIMEOUT = 11,
-IORING_OP_TIMEOUT_REMOVE = 12,
-IORING_OP_ACCEPT = 13,
-IORING_OP_ASYNC_CANCEL = 14,
-IORING_OP_LINK_TIMEOUT = 15,
-IORING_OP_CONNECT = 16,
-IORING_OP_FALLOCATE = 17,
-IORING_OP_OPENAT = 18,
-IORING_OP_CLOSE = 19,
-IORING_OP_FILES_UPDATE = 20,
-IORING_OP_STATX = 21,
-IORING_OP_READ = 22,
-IORING_OP_WRITE = 23,
-IORING_OP_FADVISE = 24,
-IORING_OP_MADVISE = 25,
-IORING_OP_SEND = 26,
-IORING_OP_RECV = 27,
-IORING_OP_OPENAT2 = 28,
-IORING_OP_EPOLL_CTL = 29,
-IORING_OP_SPLICE = 30,
-IORING_OP_PROVIDE_BUFFERS = 31,
-IORING_OP_REMOVE_BUFFERS = 32,
-IORING_OP_TEE = 33,
-IORING_OP_SHUTDOWN = 34,
-IORING_OP_RENAMEAT = 35,
-IORING_OP_UNLINKAT = 36,
-IORING_OP_MKDIRAT = 37,
-IORING_OP_SYMLINKAT = 38,
-IORING_OP_LINKAT = 39,
-IORING_OP_MSG_RING = 40,
-IORING_OP_FSETXATTR = 41,
-IORING_OP_SETXATTR = 42,
-IORING_OP_FGETXATTR = 43,
-IORING_OP_GETXATTR = 44,
-IORING_OP_SOCKET = 45,
-IORING_OP_URING_CMD = 46,
-IORING_OP_SEND_ZC = 47,
-IORING_OP_SENDMSG_ZC = 48,
-IORING_OP_LAST = 49,
-}
-pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA;
-pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IORING_MSG_DATA = 0,
-IORING_MSG_SEND_FD = 1,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_cqe {
-pub user_data: __u64,
-pub res: __s32,
-pub flags: __u32,
-pub big_cqe: __IncompleteArrayField<__u64>,
-}
-pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IORING_CQE_BUFFER_SHIFT = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_sqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub flags: __u32,
-pub dropped: __u32,
-pub array: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_cqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub overflow: __u32,
-pub cqes: __u32,
-pub flags: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_params {
-pub sq_entries: __u32,
-pub cq_entries: __u32,
-pub flags: __u32,
-pub sq_thread_cpu: __u32,
-pub sq_thread_idle: __u32,
-pub features: __u32,
-pub wq_fd: __u32,
-pub resv: [__u32; 3usize],
-pub sq_off: io_sqring_offsets,
-pub cq_off: io_cqring_offsets,
-}
-pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS;
-pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS;
-pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES;
-pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES;
-pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD;
-pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD;
-pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE;
-pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC;
-pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE;
-pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY;
-pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY;
-pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS;
-pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS;
-pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2;
-pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2;
-pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2;
-pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE;
-pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF;
-pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF;
-pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS;
-pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS;
-pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS;
-pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING;
-pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING;
-pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL;
-pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE;
-pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IORING_REGISTER_BUFFERS = 0,
-IORING_UNREGISTER_BUFFERS = 1,
-IORING_REGISTER_FILES = 2,
-IORING_UNREGISTER_FILES = 3,
-IORING_REGISTER_EVENTFD = 4,
-IORING_UNREGISTER_EVENTFD = 5,
-IORING_REGISTER_FILES_UPDATE = 6,
-IORING_REGISTER_EVENTFD_ASYNC = 7,
-IORING_REGISTER_PROBE = 8,
-IORING_REGISTER_PERSONALITY = 9,
-IORING_UNREGISTER_PERSONALITY = 10,
-IORING_REGISTER_RESTRICTIONS = 11,
-IORING_REGISTER_ENABLE_RINGS = 12,
-IORING_REGISTER_FILES2 = 13,
-IORING_REGISTER_FILES_UPDATE2 = 14,
-IORING_REGISTER_BUFFERS2 = 15,
-IORING_REGISTER_BUFFERS_UPDATE = 16,
-IORING_REGISTER_IOWQ_AFF = 17,
-IORING_UNREGISTER_IOWQ_AFF = 18,
-IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
-IORING_REGISTER_RING_FDS = 20,
-IORING_UNREGISTER_RING_FDS = 21,
-IORING_REGISTER_PBUF_RING = 22,
-IORING_UNREGISTER_PBUF_RING = 23,
-IORING_REGISTER_SYNC_CANCEL = 24,
-IORING_REGISTER_FILE_ALLOC_RANGE = 25,
-IORING_REGISTER_LAST = 26,
-}
-pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND;
-pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IO_WQ_BOUND = 0,
-IO_WQ_UNBOUND = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_files_update {
-pub offset: __u32,
-pub resv: __u32,
-pub fds: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_register {
-pub nr: __u32,
-pub flags: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub tags: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update2 {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-pub tags: __u64,
-pub nr: __u32,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_slot {
-pub tag: __u64,
-pub resv: [__u64; 3usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_register {
-pub nr_slots: __u32,
-pub resv: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub resv3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_probe_op {
-pub op: __u8,
-pub resv: __u8,
-pub flags: __u16,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_probe {
-pub last_op: __u8,
-pub ops_len: __u8,
-pub resv: __u16,
-pub resv2: [__u32; 3usize],
-pub ops: __IncompleteArrayField<io_uring_probe_op>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct io_uring_restriction {
-pub opcode: __u16,
-pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1,
-pub resv: __u8,
-pub resv2: [__u32; 3usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_restriction__bindgen_ty_1 {
-pub register_op: __u8,
-pub sqe_op: __u8,
-pub sqe_flags: __u8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf {
-pub addr: __u64,
-pub len: __u32,
-pub bid: __u16,
-pub resv: __u16,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring {
-pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1>,
-pub bufs: __BindgenUnionField<[io_uring_buf; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 {
-pub resv1: __u64,
-pub resv2: __u32,
-pub resv3: __u16,
-pub tail: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_reg {
-pub ring_addr: __u64,
-pub ring_entries: __u32,
-pub bgid: __u16,
-pub pad: __u16,
-pub resv: [__u64; 3usize],
-}
-pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP;
-pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP;
-pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED;
-pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED;
-pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IORING_RESTRICTION_REGISTER_OP = 0,
-IORING_RESTRICTION_SQE_OP = 1,
-IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2,
-IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3,
-IORING_RESTRICTION_LAST = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_getevents_arg {
-pub sigmask: __u64,
-pub sigmask_sz: __u32,
-pub pad: __u32,
-pub ts: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sync_cancel_reg {
-pub addr: __u64,
-pub fd: __s32,
-pub flags: __u32,
-pub timeout: __kernel_timespec,
-pub pad: [__u64; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_file_index_range {
-pub off: __u32,
-pub len: __u32,
-pub resv: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_recvmsg_out {
-pub namelen: __u32,
-pub controllen: __u32,
-pub payloadlen: __u32,
-pub flags: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr {
-pub __storage: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct linger {
-pub l_onoff: crate::ctypes::c_int,
-pub l_linger: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct linux_dirent64 {
-pub d_ino: crate::ctypes::c_ulong,
-pub d_off: crate::ctypes::c_long,
-pub d_reclen: __u16,
-pub d_type: __u8,
-pub d_name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-pub type socklen_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct stat {
-pub st_dev: crate::ctypes::c_ulong,
-pub st_ino: __kernel_ino_t,
-pub st_nlink: crate::ctypes::c_ulong,
-pub st_mode: __kernel_mode_t,
-pub st_uid: __kernel_uid32_t,
-pub st_gid: __kernel_gid32_t,
-pub st_rdev: crate::ctypes::c_ulong,
-pub st_size: crate::ctypes::c_long,
-pub st_blksize: crate::ctypes::c_ulong,
-pub st_blocks: crate::ctypes::c_ulong,
-pub st_atime: crate::ctypes::c_ulong,
-pub st_atime_nsec: crate::ctypes::c_ulong,
-pub st_mtime: crate::ctypes::c_ulong,
-pub st_mtime_nsec: crate::ctypes::c_ulong,
-pub st_ctime: crate::ctypes::c_ulong,
-pub st_ctime_nsec: crate::ctypes::c_ulong,
-pub __unused4: crate::ctypes::c_ulong,
-pub __unused5: crate::ctypes::c_ulong,
-pub __unused6: crate::ctypes::c_ulong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct stat64 {
-pub st_dev: crate::ctypes::c_ulonglong,
-pub st_ino: crate::ctypes::c_ulonglong,
-pub st_mode: crate::ctypes::c_uint,
-pub st_nlink: crate::ctypes::c_uint,
-pub st_uid: crate::ctypes::c_uint,
-pub st_gid: crate::ctypes::c_uint,
-pub st_rdev: crate::ctypes::c_ulonglong,
-pub __pad2: crate::ctypes::c_ushort,
-pub st_size: crate::ctypes::c_longlong,
-pub st_blksize: crate::ctypes::c_int,
-pub st_blocks: crate::ctypes::c_longlong,
-pub st_atime: crate::ctypes::c_int,
-pub st_atime_nsec: crate::ctypes::c_uint,
-pub st_mtime: crate::ctypes::c_int,
-pub st_mtime_nsec: crate::ctypes::c_uint,
-pub st_ctime: crate::ctypes::c_int,
-pub st_ctime_nsec: crate::ctypes::c_uint,
-pub __unused4: crate::ctypes::c_uint,
-pub __unused5: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs {
-pub f_type: __kernel_long_t,
-pub f_bsize: __kernel_long_t,
-pub f_blocks: __kernel_long_t,
-pub f_bfree: __kernel_long_t,
-pub f_bavail: __kernel_long_t,
-pub f_files: __kernel_long_t,
-pub f_ffree: __kernel_long_t,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __kernel_long_t,
-pub f_frsize: __kernel_long_t,
-pub f_flags: __kernel_long_t,
-pub f_spare: [__kernel_long_t; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs64 {
-pub f_type: __kernel_long_t,
-pub f_bsize: __kernel_long_t,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __kernel_long_t,
-pub f_frsize: __kernel_long_t,
-pub f_flags: __kernel_long_t,
-pub f_spare: [__kernel_long_t; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct compat_statfs64 {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-pub type __fsword_t = __kernel_long_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct user_desc {
-pub entry_number: crate::ctypes::c_uint,
-pub base_addr: crate::ctypes::c_uint,
-pub limit: crate::ctypes::c_uint,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub __bindgen_padding_0: [u8; 3usize],
-}
-impl user_desc {
-#[inline]
-pub fn seg_32bit(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_32bit(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn contents(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 2u8) as u32) }
-}
-#[inline]
-pub fn set_contents(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(1usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn read_exec_only(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_read_exec_only(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(3usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn limit_in_pages(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_limit_in_pages(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn seg_not_present(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_not_present(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(5usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn useable(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_useable(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(6usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(seg_32bit: crate::ctypes::c_uint, contents: crate::ctypes::c_uint, read_exec_only: crate::ctypes::c_uint, limit_in_pages: crate::ctypes::c_uint, seg_not_present: crate::ctypes::c_uint, useable: crate::ctypes::c_uint) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 1u8, {
-let seg_32bit: u32 = unsafe { ::core::mem::transmute(seg_32bit) };
-seg_32bit as u64
-});
-__bindgen_bitfield_unit.set(1usize, 2u8, {
-let contents: u32 = unsafe { ::core::mem::transmute(contents) };
-contents as u64
-});
-__bindgen_bitfield_unit.set(3usize, 1u8, {
-let read_exec_only: u32 = unsafe { ::core::mem::transmute(read_exec_only) };
-read_exec_only as u64
-});
-__bindgen_bitfield_unit.set(4usize, 1u8, {
-let limit_in_pages: u32 = unsafe { ::core::mem::transmute(limit_in_pages) };
-limit_in_pages as u64
-});
-__bindgen_bitfield_unit.set(5usize, 1u8, {
-let seg_not_present: u32 = unsafe { ::core::mem::transmute(seg_not_present) };
-seg_not_present as u64
-});
-__bindgen_bitfield_unit.set(6usize, 1u8, {
-let useable: u32 = unsafe { ::core::mem::transmute(useable) };
-useable as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct msghdr {
-pub msg_name: *mut crate::ctypes::c_void,
-pub msg_namelen: crate::ctypes::c_int,
-pub msg_iov: *mut iovec,
-pub msg_iovlen: size_t,
-pub msg_control: *mut crate::ctypes::c_void,
-pub msg_controllen: size_t,
-pub msg_flags: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct cmsghdr {
-pub cmsg_len: size_t,
-pub cmsg_level: crate::ctypes::c_int,
-pub cmsg_type: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ucred {
-pub pid: __u32,
-pub uid: __u32,
-pub gid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mmsghdr {
-pub msg_hdr: msghdr,
-pub msg_len: crate::ctypes::c_uint,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/powerpc64/ioctl.rs b/vendor/linux-raw-sys-0.3.2/src/powerpc64/ioctl.rs
deleted file mode 100644
index a1dda1edf..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/powerpc64/ioctl.rs
+++ /dev/null
@@ -1,1460 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const FIONREAD: u32 = 1074030207;
-pub const FIONBIO: u32 = 2147772030;
-pub const FIOCLEX: u32 = 536897025;
-pub const FIONCLEX: u32 = 536897026;
-pub const FIOASYNC: u32 = 2147772029;
-pub const FIOQSIZE: u32 = 1074292352;
-pub const TCXONC: u32 = 536900638;
-pub const TCFLSH: u32 = 536900639;
-pub const TIOCSCTTY: u32 = 21518;
-pub const TIOCSPGRP: u32 = 2147775606;
-pub const TIOCOUTQ: u32 = 1074033779;
-pub const TIOCSTI: u32 = 21522;
-pub const TIOCSWINSZ: u32 = 2148037735;
-pub const TIOCMGET: u32 = 21525;
-pub const TIOCMBIS: u32 = 21526;
-pub const TIOCMBIC: u32 = 21527;
-pub const TIOCMSET: u32 = 21528;
-pub const TIOCSSOFTCAR: u32 = 21530;
-pub const TIOCLINUX: u32 = 21532;
-pub const TIOCCONS: u32 = 21533;
-pub const TIOCSSERIAL: u32 = 21535;
-pub const TIOCPKT: u32 = 21536;
-pub const TIOCNOTTY: u32 = 21538;
-pub const TIOCSETD: u32 = 21539;
-pub const TIOCSBRK: u32 = 21543;
-pub const TIOCCBRK: u32 = 21544;
-pub const TIOCSRS485: u32 = 21551;
-pub const TIOCSPTLCK: u32 = 2147767345;
-pub const TIOCSIG: u32 = 2147767350;
-pub const TIOCVHANGUP: u32 = 21559;
-pub const TIOCSERCONFIG: u32 = 21587;
-pub const TIOCSERGWILD: u32 = 21588;
-pub const TIOCSERSWILD: u32 = 21589;
-pub const TIOCSLCKTRMIOS: u32 = 21591;
-pub const TIOCSERGSTRUCT: u32 = 21592;
-pub const TIOCSERGETLSR: u32 = 21593;
-pub const TIOCSERGETMULTI: u32 = 21594;
-pub const TIOCSERSETMULTI: u32 = 21595;
-pub const TIOCMIWAIT: u32 = 21596;
-pub const TCGETS: u32 = 1076655123;
-pub const TCGETA: u32 = 1075082263;
-pub const TCSBRK: u32 = 536900637;
-pub const TCSBRKP: u32 = 21541;
-pub const TCSETA: u32 = 2148824088;
-pub const TCSETAF: u32 = 2148824092;
-pub const TCSETAW: u32 = 2148824089;
-pub const TIOCEXCL: u32 = 21516;
-pub const TIOCNXCL: u32 = 21517;
-pub const TIOCGDEV: u32 = 1074025522;
-pub const TIOCGEXCL: u32 = 1074025536;
-pub const TIOCGICOUNT: u32 = 21597;
-pub const TIOCGLCKTRMIOS: u32 = 21590;
-pub const TIOCGPGRP: u32 = 1074033783;
-pub const TIOCGPKT: u32 = 1074025528;
-pub const TIOCGPTLCK: u32 = 1074025529;
-pub const TIOCGPTN: u32 = 1074025520;
-pub const TIOCGPTPEER: u32 = 536892481;
-pub const TIOCGRS485: u32 = 21550;
-pub const TIOCGSERIAL: u32 = 21534;
-pub const TIOCGSID: u32 = 21545;
-pub const TIOCGSOFTCAR: u32 = 21529;
-pub const TIOCGWINSZ: u32 = 1074295912;
-pub const TCSETS: u32 = 2150396948;
-pub const TCSETSF: u32 = 2150396950;
-pub const TCSETSW: u32 = 2150396949;
-pub const TIOCGETC: u32 = 1074164754;
-pub const TIOCGETD: u32 = 21540;
-pub const TIOCGETP: u32 = 1074164744;
-pub const TIOCGLTC: u32 = 1074164852;
-pub const MTIOCGET: u32 = 1076915458;
-pub const BLKSSZGET: u32 = 536875624;
-pub const BLKPBSZGET: u32 = 536875643;
-pub const BLKROSET: u32 = 536875613;
-pub const BLKROGET: u32 = 536875614;
-pub const BLKRRPART: u32 = 536875615;
-pub const BLKGETSIZE: u32 = 536875616;
-pub const BLKFLSBUF: u32 = 536875617;
-pub const BLKRASET: u32 = 536875618;
-pub const BLKRAGET: u32 = 536875619;
-pub const BLKFRASET: u32 = 536875620;
-pub const BLKFRAGET: u32 = 536875621;
-pub const BLKSECTSET: u32 = 536875622;
-pub const BLKSECTGET: u32 = 536875623;
-pub const BLKPG: u32 = 536875625;
-pub const BLKBSZGET: u32 = 1074270832;
-pub const BLKBSZSET: u32 = 2148012657;
-pub const BLKGETSIZE64: u32 = 1074270834;
-pub const BLKTRACESETUP: u32 = 3225948787;
-pub const BLKTRACESTART: u32 = 536875636;
-pub const BLKTRACESTOP: u32 = 536875637;
-pub const BLKTRACETEARDOWN: u32 = 536875638;
-pub const BLKDISCARD: u32 = 536875639;
-pub const BLKIOMIN: u32 = 536875640;
-pub const BLKIOOPT: u32 = 536875641;
-pub const BLKALIGNOFF: u32 = 536875642;
-pub const BLKDISCARDZEROES: u32 = 536875644;
-pub const BLKSECDISCARD: u32 = 536875645;
-pub const BLKROTATIONAL: u32 = 536875646;
-pub const BLKZEROOUT: u32 = 536875647;
-pub const UFFDIO_REGISTER: u32 = 3223366144;
-pub const UFFDIO_UNREGISTER: u32 = 1074833921;
-pub const UFFDIO_WAKE: u32 = 1074833922;
-pub const UFFDIO_COPY: u32 = 3223890435;
-pub const UFFDIO_ZEROPAGE: u32 = 3223366148;
-pub const UFFDIO_WRITEPROTECT: u32 = 3222841862;
-pub const UFFDIO_API: u32 = 3222841919;
-pub const NS_GET_USERNS: u32 = 536917761;
-pub const NS_GET_PARENT: u32 = 536917762;
-pub const NS_GET_NSTYPE: u32 = 536917763;
-pub const KDGETLED: u32 = 19249;
-pub const KDSETLED: u32 = 19250;
-pub const KDGKBLED: u32 = 19300;
-pub const KDSKBLED: u32 = 19301;
-pub const KDGKBTYPE: u32 = 19251;
-pub const KDADDIO: u32 = 19252;
-pub const KDDELIO: u32 = 19253;
-pub const KDENABIO: u32 = 19254;
-pub const KDDISABIO: u32 = 19255;
-pub const KDSETMODE: u32 = 19258;
-pub const KDGETMODE: u32 = 19259;
-pub const KDMKTONE: u32 = 19248;
-pub const KIOCSOUND: u32 = 19247;
-pub const GIO_CMAP: u32 = 19312;
-pub const PIO_CMAP: u32 = 19313;
-pub const GIO_FONT: u32 = 19296;
-pub const GIO_FONTX: u32 = 19307;
-pub const PIO_FONT: u32 = 19297;
-pub const PIO_FONTX: u32 = 19308;
-pub const PIO_FONTRESET: u32 = 19309;
-pub const GIO_SCRNMAP: u32 = 19264;
-pub const GIO_UNISCRNMAP: u32 = 19305;
-pub const PIO_SCRNMAP: u32 = 19265;
-pub const PIO_UNISCRNMAP: u32 = 19306;
-pub const GIO_UNIMAP: u32 = 19302;
-pub const PIO_UNIMAP: u32 = 19303;
-pub const PIO_UNIMAPCLR: u32 = 19304;
-pub const KDGKBMODE: u32 = 19268;
-pub const KDSKBMODE: u32 = 19269;
-pub const KDGKBMETA: u32 = 19298;
-pub const KDSKBMETA: u32 = 19299;
-pub const KDGKBENT: u32 = 19270;
-pub const KDSKBENT: u32 = 19271;
-pub const KDGKBSENT: u32 = 19272;
-pub const KDSKBSENT: u32 = 19273;
-pub const KDGKBDIACR: u32 = 19274;
-pub const KDGETKEYCODE: u32 = 19276;
-pub const KDSETKEYCODE: u32 = 19277;
-pub const KDSIGACCEPT: u32 = 19278;
-pub const VT_OPENQRY: u32 = 22016;
-pub const VT_GETMODE: u32 = 22017;
-pub const VT_SETMODE: u32 = 22018;
-pub const VT_GETSTATE: u32 = 22019;
-pub const VT_RELDISP: u32 = 22021;
-pub const VT_ACTIVATE: u32 = 22022;
-pub const VT_WAITACTIVE: u32 = 22023;
-pub const VT_DISALLOCATE: u32 = 22024;
-pub const VT_RESIZE: u32 = 22025;
-pub const VT_RESIZEX: u32 = 22026;
-pub const FIOSETOWN: u32 = 35073;
-pub const SIOCSPGRP: u32 = 35074;
-pub const FIOGETOWN: u32 = 35075;
-pub const SIOCGPGRP: u32 = 35076;
-pub const SIOCATMARK: u32 = 35077;
-pub const SIOCGSTAMP: u32 = 35078;
-pub const TIOCINQ: u32 = 1074030207;
-pub const SIOCADDRT: u32 = 35083;
-pub const SIOCDELRT: u32 = 35084;
-pub const SIOCGIFNAME: u32 = 35088;
-pub const SIOCSIFLINK: u32 = 35089;
-pub const SIOCGIFCONF: u32 = 35090;
-pub const SIOCGIFFLAGS: u32 = 35091;
-pub const SIOCSIFFLAGS: u32 = 35092;
-pub const SIOCGIFADDR: u32 = 35093;
-pub const SIOCSIFADDR: u32 = 35094;
-pub const SIOCGIFDSTADDR: u32 = 35095;
-pub const SIOCSIFDSTADDR: u32 = 35096;
-pub const SIOCGIFBRDADDR: u32 = 35097;
-pub const SIOCSIFBRDADDR: u32 = 35098;
-pub const SIOCGIFNETMASK: u32 = 35099;
-pub const SIOCSIFNETMASK: u32 = 35100;
-pub const SIOCGIFMETRIC: u32 = 35101;
-pub const SIOCSIFMETRIC: u32 = 35102;
-pub const SIOCGIFMEM: u32 = 35103;
-pub const SIOCSIFMEM: u32 = 35104;
-pub const SIOCGIFMTU: u32 = 35105;
-pub const SIOCSIFMTU: u32 = 35106;
-pub const SIOCSIFHWADDR: u32 = 35108;
-pub const SIOCGIFENCAP: u32 = 35109;
-pub const SIOCSIFENCAP: u32 = 35110;
-pub const SIOCGIFHWADDR: u32 = 35111;
-pub const SIOCGIFSLAVE: u32 = 35113;
-pub const SIOCSIFSLAVE: u32 = 35120;
-pub const SIOCADDMULTI: u32 = 35121;
-pub const SIOCDELMULTI: u32 = 35122;
-pub const SIOCDARP: u32 = 35155;
-pub const SIOCGARP: u32 = 35156;
-pub const SIOCSARP: u32 = 35157;
-pub const SIOCDRARP: u32 = 35168;
-pub const SIOCGRARP: u32 = 35169;
-pub const SIOCSRARP: u32 = 35170;
-pub const SIOCGIFMAP: u32 = 35184;
-pub const SIOCSIFMAP: u32 = 35185;
-pub const SIOCRTMSG: u32 = 35085;
-pub const SIOCSIFNAME: u32 = 35107;
-pub const SIOCGIFINDEX: u32 = 35123;
-pub const SIOGIFINDEX: u32 = 35123;
-pub const SIOCSIFPFLAGS: u32 = 35124;
-pub const SIOCGIFPFLAGS: u32 = 35125;
-pub const SIOCDIFADDR: u32 = 35126;
-pub const SIOCSIFHWBROADCAST: u32 = 35127;
-pub const SIOCGIFCOUNT: u32 = 35128;
-pub const SIOCGIFBR: u32 = 35136;
-pub const SIOCSIFBR: u32 = 35137;
-pub const SIOCGIFTXQLEN: u32 = 35138;
-pub const SIOCSIFTXQLEN: u32 = 35139;
-pub const SIOCADDDLCI: u32 = 35200;
-pub const SIOCDELDLCI: u32 = 35201;
-pub const SIOCDEVPRIVATE: u32 = 35312;
-pub const SIOCPROTOPRIVATE: u32 = 35296;
-pub const FIBMAP: u32 = 536870913;
-pub const FIGETBSZ: u32 = 536870914;
-pub const FIFREEZE: u32 = 3221510263;
-pub const FITHAW: u32 = 3221510264;
-pub const FITRIM: u32 = 3222820985;
-pub const FICLONE: u32 = 2147783689;
-pub const FICLONERANGE: u32 = 2149618701;
-pub const FIDEDUPERANGE: u32 = 3222836278;
-pub const FS_IOC_GETFLAGS: u32 = 1074292225;
-pub const FS_IOC_SETFLAGS: u32 = 2148034050;
-pub const FS_IOC_GETVERSION: u32 = 1074296321;
-pub const FS_IOC_SETVERSION: u32 = 2148038146;
-pub const FS_IOC_FIEMAP: u32 = 3223348747;
-pub const FS_IOC32_GETFLAGS: u32 = 1074030081;
-pub const FS_IOC32_SETFLAGS: u32 = 2147771906;
-pub const FS_IOC32_GETVERSION: u32 = 1074034177;
-pub const FS_IOC32_SETVERSION: u32 = 2147776002;
-pub const FS_IOC_FSGETXATTR: u32 = 1075599391;
-pub const FS_IOC_FSSETXATTR: u32 = 2149341216;
-pub const FS_IOC_GETFSLABEL: u32 = 1090556977;
-pub const FS_IOC_SETFSLABEL: u32 = 2164298802;
-pub const VIDIOC_SUBDEV_QUERYSTD: u32 = 1074288191;
-pub const AUTOFS_DEV_IOCTL_CLOSEMOUNT: u32 = 3222836085;
-pub const LIRC_SET_SEND_CARRIER: u32 = 2147772691;
-pub const AUTOFS_IOC_PROTOSUBVER: u32 = 1074041703;
-pub const PTP_SYS_OFFSET_PRECISE: u32 = 3225435400;
-pub const FSI_SCOM_WRITE: u32 = 3223352066;
-pub const ATM_GETCIRANGE: u32 = 2148557194;
-pub const DMA_BUF_SET_NAME_B: u32 = 2148033025;
-pub const RIO_CM_EP_GET_LIST_SIZE: u32 = 3221512961;
-pub const TUNSETPERSIST: u32 = 2147767499;
-pub const FS_IOC_GET_ENCRYPTION_POLICY: u32 = 2148296213;
-pub const CEC_RECEIVE: u32 = 3224920326;
-pub const MGSL_IOCGPARAMS: u32 = 1076915457;
-pub const ENI_SETMULT: u32 = 2148557159;
-pub const RIO_GET_EVENT_MASK: u32 = 1074031886;
-pub const LIRC_GET_MAX_TIMEOUT: u32 = 1074030857;
-pub const USBDEVFS_CLAIMINTERFACE: u32 = 1074025743;
-pub const CHIOMOVE: u32 = 2148819713;
-pub const SONYPI_IOCGBATFLAGS: u32 = 1073837575;
-pub const BTRFS_IOC_SYNC: u32 = 536908808;
-pub const VIDIOC_TRY_FMT: u32 = 3234879040;
-pub const LIRC_SET_REC_MODE: u32 = 2147772690;
-pub const VIDIOC_DQEVENT: u32 = 1082676825;
-pub const RPMSG_DESTROY_EPT_IOCTL: u32 = 536917250;
-pub const UVCIOC_CTRL_MAP: u32 = 3227546912;
-pub const VHOST_SET_BACKEND_FEATURES: u32 = 2148052773;
-pub const VHOST_VSOCK_SET_GUEST_CID: u32 = 2148052832;
-pub const UI_SET_KEYBIT: u32 = 2147767653;
-pub const LIRC_SET_REC_TIMEOUT: u32 = 2147772696;
-pub const FS_IOC_GET_ENCRYPTION_KEY_STATUS: u32 = 3229640218;
-pub const BTRFS_IOC_TREE_SEARCH_V2: u32 = 3228603409;
-pub const VHOST_SET_VRING_BASE: u32 = 2148052754;
-pub const RIO_ENABLE_DOORBELL_RANGE: u32 = 2148035849;
-pub const VIDIOC_TRY_EXT_CTRLS: u32 = 3223344713;
-pub const LIRC_GET_REC_MODE: u32 = 1074030850;
-pub const PPGETTIME: u32 = 1074819221;
-pub const BTRFS_IOC_RM_DEV: u32 = 2415957003;
-pub const ATM_SETBACKEND: u32 = 2147639794;
-pub const FSL_HV_IOCTL_PARTITION_START: u32 = 3222318851;
-pub const FBIO_WAITEVENT: u32 = 536888968;
-pub const SWITCHTEC_IOCTL_PORT_TO_PFF: u32 = 3222034245;
-pub const NVME_IOCTL_IO_CMD: u32 = 3225964099;
-pub const IPMICTL_RECEIVE_MSG_TRUNC: u32 = 3224398091;
-pub const FDTWADDLE: u32 = 536871513;
-pub const NVME_IOCTL_SUBMIT_IO: u32 = 2150649410;
-pub const NILFS_IOCTL_SYNC: u32 = 1074294410;
-pub const VIDIOC_SUBDEV_S_DV_TIMINGS: u32 = 3229898327;
-pub const ASPEED_LPC_CTRL_IOCTL_GET_SIZE: u32 = 3222319616;
-pub const DM_DEV_STATUS: u32 = 3241737479;
-pub const TEE_IOC_CLOSE_SESSION: u32 = 1074045957;
-pub const NS_GETPSTAT: u32 = 3222298977;
-pub const UI_SET_PROPBIT: u32 = 2147767662;
-pub const TUNSETFILTEREBPF: u32 = 1074025697;
-pub const RIO_MPORT_MAINT_COMPTAG_SET: u32 = 2147773698;
-pub const AUTOFS_DEV_IOCTL_VERSION: u32 = 3222836081;
-pub const WDIOC_SETOPTIONS: u32 = 1074026244;
-pub const VHOST_SCSI_SET_ENDPOINT: u32 = 2162732864;
-pub const MGSL_IOCGTXIDLE: u32 = 536898819;
-pub const ATM_ADDLECSADDR: u32 = 2148557198;
-pub const FSL_HV_IOCTL_GETPROP: u32 = 3223891719;
-pub const FDGETPRM: u32 = 1075839492;
-pub const HIDIOCAPPLICATION: u32 = 536889346;
-pub const ENI_MEMDUMP: u32 = 2148557152;
-pub const PTP_SYS_OFFSET2: u32 = 2202025230;
-pub const VIDIOC_SUBDEV_G_DV_TIMINGS: u32 = 3229898328;
-pub const DMA_BUF_SET_NAME_A: u32 = 2147770881;
-pub const PTP_PIN_GETFUNC: u32 = 3227532550;
-pub const PTP_SYS_OFFSET_EXTENDED: u32 = 3300932873;
-pub const DFL_FPGA_PORT_UINT_SET_IRQ: u32 = 2148054600;
-pub const RTC_EPOCH_READ: u32 = 1074294797;
-pub const VIDIOC_SUBDEV_S_SELECTION: u32 = 3225441854;
-pub const VIDIOC_QUERY_EXT_CTRL: u32 = 3236451943;
-pub const ATM_GETLECSADDR: u32 = 2148557200;
-pub const FSL_HV_IOCTL_PARTITION_STOP: u32 = 3221794564;
-pub const SONET_GETDIAG: u32 = 1074028820;
-pub const ATMMPC_DATA: u32 = 536895961;
-pub const IPMICTL_UNREGISTER_FOR_CMD_CHANS: u32 = 1074555165;
-pub const HIDIOCGCOLLECTIONINDEX: u32 = 2149074960;
-pub const RPMSG_CREATE_EPT_IOCTL: u32 = 2150151425;
-pub const GPIOHANDLE_GET_LINE_VALUES_IOCTL: u32 = 3225465864;
-pub const UI_DEV_SETUP: u32 = 2153534723;
-pub const ISST_IF_IO_CMD: u32 = 2148072962;
-pub const RIO_MPORT_MAINT_READ_REMOTE: u32 = 1075342599;
-pub const VIDIOC_OMAP3ISP_HIST_CFG: u32 = 3224393412;
-pub const BLKGETNRZONES: u32 = 1074008709;
-pub const VIDIOC_G_MODULATOR: u32 = 3225703990;
-pub const VBG_IOCTL_WRITE_CORE_DUMP: u32 = 3223082515;
-pub const USBDEVFS_SETINTERFACE: u32 = 1074287876;
-pub const PPPIOCGCHAN: u32 = 1074033719;
-pub const EVIOCGVERSION: u32 = 1074021633;
-pub const VHOST_NET_SET_BACKEND: u32 = 2148052784;
-pub const USBDEVFS_REAPURBNDELAY: u32 = 2148029709;
-pub const RNDZAPENTCNT: u32 = 536891908;
-pub const VIDIOC_G_PARM: u32 = 3234616853;
-pub const TUNGETDEVNETNS: u32 = 536892643;
-pub const LIRC_SET_MEASURE_CARRIER_MODE: u32 = 2147772701;
-pub const VHOST_SET_VRING_ERR: u32 = 2148052770;
-pub const VDUSE_VQ_SETUP: u32 = 2149613844;
-pub const AUTOFS_IOC_SETTIMEOUT: u32 = 3221787492;
-pub const VIDIOC_S_FREQUENCY: u32 = 2150389305;
-pub const F2FS_IOC_SEC_TRIM_FILE: u32 = 2149119252;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY: u32 = 3225445912;
-pub const WDIOC_GETPRETIMEOUT: u32 = 1074026249;
-pub const USBDEVFS_DROP_PRIVILEGES: u32 = 2147767582;
-pub const BTRFS_IOC_SNAP_CREATE_V2: u32 = 2415957015;
-pub const VHOST_VSOCK_SET_RUNNING: u32 = 2147790689;
-pub const STP_SET_OPTIONS: u32 = 2148017410;
-pub const FBIO_RADEON_GET_MIRROR: u32 = 1074282499;
-pub const IVTVFB_IOC_DMA_FRAME: u32 = 2149078720;
-pub const IPMICTL_SEND_COMMAND: u32 = 1076390157;
-pub const VIDIOC_G_ENC_INDEX: u32 = 1209554508;
-pub const DFL_FPGA_FME_PORT_PR: u32 = 536917632;
-pub const CHIOSVOLTAG: u32 = 2150654738;
-pub const ATM_SETESIF: u32 = 2148557197;
-pub const FW_CDEV_IOC_SEND_RESPONSE: u32 = 2149065476;
-pub const PMU_IOC_GET_MODEL: u32 = 1074283011;
-pub const JSIOCGBTNMAP: u32 = 1140877876;
-pub const USBDEVFS_HUB_PORTINFO: u32 = 1082152211;
-pub const VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS: u32 = 3222820363;
-pub const FDCLRPRM: u32 = 536871489;
-pub const BTRFS_IOC_SCRUB: u32 = 3288372251;
-pub const USBDEVFS_DISCONNECT: u32 = 536892694;
-pub const TUNSETVNETBE: u32 = 2147767518;
-pub const ATMTCP_REMOVE: u32 = 536895887;
-pub const VHOST_VDPA_GET_CONFIG: u32 = 1074311027;
-pub const PPPIOCGNPMODE: u32 = 3221779532;
-pub const FDGETDRVPRM: u32 = 1082130961;
-pub const TUNSETVNETLE: u32 = 2147767516;
-pub const PHN_SETREG: u32 = 2148036614;
-pub const PPPIOCDETACH: u32 = 2147775548;
-pub const MMTIMER_GETRES: u32 = 1074294017;
-pub const VIDIOC_SUBDEV_ENUMSTD: u32 = 3225966105;
-pub const PPGETFLAGS: u32 = 1074032794;
-pub const VDUSE_DEV_GET_FEATURES: u32 = 1074299153;
-pub const CAPI_MANUFACTURER_CMD: u32 = 3222291232;
-pub const VIDIOC_G_TUNER: u32 = 3226752541;
-pub const DM_TABLE_STATUS: u32 = 3241737484;
-pub const DM_DEV_ARM_POLL: u32 = 3241737488;
-pub const NE_CREATE_VM: u32 = 1074310688;
-pub const MEDIA_IOC_ENUM_LINKS: u32 = 3223878658;
-pub const F2FS_IOC_PRECACHE_EXTENTS: u32 = 536933647;
-pub const DFL_FPGA_PORT_DMA_MAP: u32 = 536917571;
-pub const MGSL_IOCGXCTRL: u32 = 536898838;
-pub const FW_CDEV_IOC_SEND_REQUEST: u32 = 2150114049;
-pub const SONYPI_IOCGBLUE: u32 = 1073837576;
-pub const F2FS_IOC_DECOMPRESS_FILE: u32 = 536933655;
-pub const I2OHTML: u32 = 3224398089;
-pub const VFIO_GET_API_VERSION: u32 = 536886116;
-pub const IDT77105_GETSTATZ: u32 = 2148557107;
-pub const I2OPARMSET: u32 = 3223873795;
-pub const TEE_IOC_CANCEL: u32 = 1074308100;
-pub const PTP_SYS_OFFSET_PRECISE2: u32 = 3225435409;
-pub const DFL_FPGA_PORT_RESET: u32 = 536917568;
-pub const PPPIOCGASYNCMAP: u32 = 1074033752;
-pub const EVIOCGKEYCODE_V2: u32 = 1076380932;
-pub const DM_DEV_SET_GEOMETRY: u32 = 3241737487;
-pub const HIDIOCSUSAGE: u32 = 2149074956;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE: u32 = 2149065488;
-pub const PTP_EXTTS_REQUEST: u32 = 2148547842;
-pub const SWITCHTEC_IOCTL_EVENT_CTL: u32 = 3223869251;
-pub const WDIOC_SETPRETIMEOUT: u32 = 3221509896;
-pub const VHOST_SCSI_CLEAR_ENDPOINT: u32 = 2162732865;
-pub const JSIOCGAXES: u32 = 1073834513;
-pub const HIDIOCSFLAG: u32 = 2147764239;
-pub const PTP_PEROUT_REQUEST2: u32 = 2151169292;
-pub const PPWDATA: u32 = 2147577990;
-pub const PTP_CLOCK_GETCAPS: u32 = 1079000321;
-pub const FDGETMAXERRS: u32 = 1075053070;
-pub const TUNSETQUEUE: u32 = 2147767513;
-pub const PTP_ENABLE_PPS: u32 = 2147761412;
-pub const SIOCSIFATMTCP: u32 = 536895872;
-pub const CEC_ADAP_G_LOG_ADDRS: u32 = 1079795971;
-pub const ND_IOCTL_ARS_CAP: u32 = 3223342593;
-pub const NBD_SET_BLKSIZE: u32 = 536914689;
-pub const NBD_SET_TIMEOUT: u32 = 536914697;
-pub const VHOST_SCSI_GET_ABI_VERSION: u32 = 2147790658;
-pub const RIO_UNMAP_INBOUND: u32 = 2148035858;
-pub const ATM_QUERYLOOP: u32 = 2148557140;
-pub const DFL_FPGA_GET_API_VERSION: u32 = 536917504;
-pub const USBDEVFS_WAIT_FOR_RESUME: u32 = 536892707;
-pub const FBIO_CURSOR: u32 = 3228059144;
-pub const RNDCLEARPOOL: u32 = 536891910;
-pub const VIDIOC_QUERYSTD: u32 = 1074288191;
-pub const DMA_BUF_IOCTL_SYNC: u32 = 2148033024;
-pub const SCIF_RECV: u32 = 3222827783;
-pub const PTP_PIN_GETFUNC2: u32 = 3227532559;
-pub const FW_CDEV_IOC_ALLOCATE: u32 = 3223331586;
-pub const CEC_ADAP_G_CAPS: u32 = 3226231040;
-pub const VIDIOC_G_FBUF: u32 = 1076909578;
-pub const PTP_ENABLE_PPS2: u32 = 2147761421;
-pub const PCITEST_CLEAR_IRQ: u32 = 536891408;
-pub const IPMICTL_SET_GETS_EVENTS_CMD: u32 = 1074030864;
-pub const BTRFS_IOC_DEVICES_READY: u32 = 1342215207;
-pub const JSIOCGAXMAP: u32 = 1077963314;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER: u32 = 1074799372;
-pub const FW_CDEV_IOC_SET_ISO_CHANNELS: u32 = 2148541207;
-pub const RTC_WIE_OFF: u32 = 536899600;
-pub const PPGETMODE: u32 = 1074032792;
-pub const VIDIOC_DBG_G_REGISTER: u32 = 3224917584;
-pub const PTP_SYS_OFFSET: u32 = 2202025221;
-pub const BTRFS_IOC_SPACE_INFO: u32 = 3222311956;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_SIZE: u32 = 3225441866;
-pub const ND_IOCTL_VENDOR: u32 = 3221769737;
-pub const SCIF_VREADFROM: u32 = 3223876364;
-pub const BTRFS_IOC_TRANS_START: u32 = 536908806;
-pub const INOTIFY_IOC_SETNEXTWD: u32 = 2147764480;
-pub const SNAPSHOT_GET_IMAGE_SIZE: u32 = 1074279182;
-pub const TUNDETACHFILTER: u32 = 2148553942;
-pub const ND_IOCTL_CLEAR_ERROR: u32 = 3223342596;
-pub const IOC_PR_CLEAR: u32 = 2148561101;
-pub const SCIF_READFROM: u32 = 3223876362;
-pub const PPPIOCGDEBUG: u32 = 1074033729;
-pub const BLKGETZONESZ: u32 = 1074008708;
-pub const HIDIOCGUSAGES: u32 = 3491514387;
-pub const SONYPI_IOCGTEMP: u32 = 1073837580;
-pub const UI_SET_MSCBIT: u32 = 2147767656;
-pub const APM_IOC_SUSPEND: u32 = 536887554;
-pub const BTRFS_IOC_TREE_SEARCH: u32 = 3489698833;
-pub const RTC_PLL_GET: u32 = 1075867665;
-pub const RIO_CM_EP_GET_LIST: u32 = 3221512962;
-pub const USBDEVFS_DISCSIGNAL: u32 = 1074812174;
-pub const LIRC_GET_MIN_TIMEOUT: u32 = 1074030856;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY: u32 = 1100502850;
-pub const DM_TARGET_MSG: u32 = 3241737486;
-pub const SONYPI_IOCGBAT1REM: u32 = 1073903107;
-pub const EVIOCSFF: u32 = 2150647168;
-pub const TUNSETGROUP: u32 = 2147767502;
-pub const EVIOCGKEYCODE: u32 = 1074283780;
-pub const KCOV_REMOTE_ENABLE: u32 = 2149081958;
-pub const ND_IOCTL_GET_CONFIG_SIZE: u32 = 3222031876;
-pub const FDEJECT: u32 = 536871514;
-pub const TUNSETOFFLOAD: u32 = 2147767504;
-pub const PPPIOCCONNECT: u32 = 2147775546;
-pub const ATM_ADDADDR: u32 = 2148557192;
-pub const VDUSE_DEV_INJECT_CONFIG_IRQ: u32 = 536903955;
-pub const AUTOFS_DEV_IOCTL_ASKUMOUNT: u32 = 3222836093;
-pub const VHOST_VDPA_GET_STATUS: u32 = 1073852273;
-pub const CCISS_PASSTHRU: u32 = 3227009547;
-pub const MGSL_IOCCLRMODCOUNT: u32 = 536898831;
-pub const TEE_IOC_SUPPL_SEND: u32 = 1074832391;
-pub const ATMARPD_CTRL: u32 = 536895969;
-pub const UI_ABS_SETUP: u32 = 2149340420;
-pub const UI_DEV_DESTROY: u32 = 536892674;
-pub const BTRFS_IOC_QUOTA_CTL: u32 = 3222311976;
-pub const RTC_AIE_ON: u32 = 536899585;
-pub const AUTOFS_IOC_EXPIRE: u32 = 1091343205;
-pub const PPPIOCSDEBUG: u32 = 2147775552;
-pub const GPIO_V2_LINE_SET_VALUES_IOCTL: u32 = 3222320143;
-pub const PPPIOCSMRU: u32 = 2147775570;
-pub const CCISS_DEREGDISK: u32 = 536887820;
-pub const UI_DEV_CREATE: u32 = 536892673;
-pub const FUSE_DEV_IOC_CLONE: u32 = 1074062592;
-pub const BTRFS_IOC_START_SYNC: u32 = 1074304024;
-pub const NILFS_IOCTL_DELETE_CHECKPOINT: u32 = 2148036225;
-pub const SNAPSHOT_AVAIL_SWAP_SIZE: u32 = 1074279187;
-pub const DM_TABLE_CLEAR: u32 = 3241737482;
-pub const CCISS_GETINTINFO: u32 = 1074283010;
-pub const PPPIOCSASYNCMAP: u32 = 2147775575;
-pub const I2OEVTGET: u32 = 1080584459;
-pub const NVME_IOCTL_RESET: u32 = 536890948;
-pub const PPYIELD: u32 = 536899725;
-pub const NVME_IOCTL_IO64_CMD: u32 = 3226488392;
-pub const TUNSETCARRIER: u32 = 2147767522;
-pub const DM_DEV_WAIT: u32 = 3241737480;
-pub const RTC_WIE_ON: u32 = 536899599;
-pub const MEDIA_IOC_DEVICE_INFO: u32 = 3238034432;
-pub const RIO_CM_CHAN_CREATE: u32 = 3221381891;
-pub const MGSL_IOCSPARAMS: u32 = 2150657280;
-pub const RTC_SET_TIME: u32 = 2149871626;
-pub const VHOST_RESET_OWNER: u32 = 536915714;
-pub const IOC_OPAL_PSID_REVERT_TPR: u32 = 2164814056;
-pub const AUTOFS_DEV_IOCTL_OPENMOUNT: u32 = 3222836084;
-pub const UDF_GETEABLOCK: u32 = 1074293825;
-pub const VFIO_IOMMU_MAP_DMA: u32 = 536886129;
-pub const VIDIOC_SUBSCRIBE_EVENT: u32 = 2149602906;
-pub const HIDIOCGFLAG: u32 = 1074022414;
-pub const HIDIOCGUCODE: u32 = 3222816781;
-pub const VIDIOC_OMAP3ISP_AF_CFG: u32 = 3226228421;
-pub const DM_REMOVE_ALL: u32 = 3241737473;
-pub const ASPEED_LPC_CTRL_IOCTL_MAP: u32 = 2148577793;
-pub const CCISS_GETFIRMVER: u32 = 1074020872;
-pub const ND_IOCTL_ARS_START: u32 = 3223342594;
-pub const PPPIOCSMRRU: u32 = 2147775547;
-pub const CEC_ADAP_S_LOG_ADDRS: u32 = 3227279620;
-pub const RPROC_GET_SHUTDOWN_ON_RELEASE: u32 = 1074050818;
-pub const DMA_HEAP_IOCTL_ALLOC: u32 = 3222816768;
-pub const PPSETTIME: u32 = 2148561046;
-pub const RTC_ALM_READ: u32 = 1076129800;
-pub const VDUSE_SET_API_VERSION: u32 = 2148040961;
-pub const RIO_MPORT_MAINT_WRITE_REMOTE: u32 = 2149084424;
-pub const VIDIOC_SUBDEV_S_CROP: u32 = 3224917564;
-pub const USBDEVFS_CONNECT: u32 = 536892695;
-pub const SYNC_IOC_FILE_INFO: u32 = 3224911364;
-pub const ATMARP_MKIP: u32 = 536895970;
-pub const VFIO_IOMMU_SPAPR_TCE_GET_INFO: u32 = 536886128;
-pub const CCISS_GETHEARTBEAT: u32 = 1074020870;
-pub const ATM_RSTADDR: u32 = 2148557191;
-pub const NBD_SET_SIZE: u32 = 536914690;
-pub const UDF_GETVOLIDENT: u32 = 1074293826;
-pub const GPIO_V2_LINE_GET_VALUES_IOCTL: u32 = 3222320142;
-pub const MGSL_IOCSTXIDLE: u32 = 536898818;
-pub const FSL_HV_IOCTL_SETPROP: u32 = 3223891720;
-pub const BTRFS_IOC_GET_DEV_STATS: u32 = 3288896564;
-pub const PPRSTATUS: u32 = 1073836161;
-pub const MGSL_IOCTXENABLE: u32 = 536898820;
-pub const UDF_GETEASIZE: u32 = 1074031680;
-pub const NVME_IOCTL_ADMIN64_CMD: u32 = 3226488391;
-pub const VHOST_SET_OWNER: u32 = 536915713;
-pub const RIO_ALLOC_DMA: u32 = 3222826259;
-pub const RIO_CM_CHAN_ACCEPT: u32 = 3221775111;
-pub const I2OHRTGET: u32 = 3222825217;
-pub const ATM_SETCIRANGE: u32 = 2148557195;
-pub const HPET_IE_ON: u32 = 536897537;
-pub const PERF_EVENT_IOC_ID: u32 = 1074275335;
-pub const TUNSETSNDBUF: u32 = 2147767508;
-pub const PTP_PIN_SETFUNC: u32 = 2153790727;
-pub const PPPIOCDISCONN: u32 = 536900665;
-pub const VIDIOC_QUERYCTRL: u32 = 3225703972;
-pub const PPEXCL: u32 = 536899727;
-pub const PCITEST_MSI: u32 = 2147766275;
-pub const FDWERRORCLR: u32 = 536871510;
-pub const AUTOFS_IOC_FAIL: u32 = 536908641;
-pub const USBDEVFS_IOCTL: u32 = 3222295826;
-pub const VIDIOC_S_STD: u32 = 2148029976;
-pub const F2FS_IOC_RESIZE_FS: u32 = 2148070672;
-pub const SONET_SETDIAG: u32 = 3221512466;
-pub const BTRFS_IOC_DEFRAG: u32 = 2415956994;
-pub const CCISS_GETDRIVVER: u32 = 1074020873;
-pub const IPMICTL_GET_TIMING_PARMS_CMD: u32 = 1074293015;
-pub const HPET_IRQFREQ: u32 = 2148034566;
-pub const ATM_GETESI: u32 = 2148557189;
-pub const CCISS_GETLUNINFO: u32 = 1074545169;
-pub const AUTOFS_DEV_IOCTL_ISMOUNTPOINT: u32 = 3222836094;
-pub const TEE_IOC_SHM_ALLOC: u32 = 3222316033;
-pub const PERF_EVENT_IOC_SET_BPF: u32 = 2147755016;
-pub const UDMABUF_CREATE_LIST: u32 = 2148037955;
-pub const VHOST_SET_LOG_BASE: u32 = 2148052740;
-pub const ZATM_GETPOOL: u32 = 2148557153;
-pub const BR2684_SETFILT: u32 = 2149343632;
-pub const RNDGETPOOL: u32 = 1074287106;
-pub const PPS_GETPARAMS: u32 = 1074294945;
-pub const IOC_PR_RESERVE: u32 = 2148561097;
-pub const VIDIOC_TRY_DECODER_CMD: u32 = 3225966177;
-pub const RIO_CM_CHAN_CLOSE: u32 = 2147640068;
-pub const VIDIOC_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const IOCTL_MEI_CONNECT_CLIENT_VTAG: u32 = 3222554628;
-pub const PMU_IOC_GET_BACKLIGHT: u32 = 1074283009;
-pub const USBDEVFS_GET_CAPABILITIES: u32 = 1074025754;
-pub const SCIF_WRITETO: u32 = 3223876363;
-pub const UDF_RELOCATE_BLOCKS: u32 = 3221777475;
-pub const FSL_HV_IOCTL_PARTITION_RESTART: u32 = 3221794561;
-pub const CCISS_REGNEWD: u32 = 536887822;
-pub const FAT_IOCTL_SET_ATTRIBUTES: u32 = 2147774993;
-pub const VIDIOC_CREATE_BUFS: u32 = 3238024796;
-pub const CAPI_GET_VERSION: u32 = 3222291207;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY: u32 = 1155028802;
-pub const VFIO_EEH_PE_OP: u32 = 536886137;
-pub const FW_CDEV_IOC_CREATE_ISO_CONTEXT: u32 = 3223331592;
-pub const F2FS_IOC_RELEASE_COMPRESS_BLOCKS: u32 = 1074328850;
-pub const NBD_SET_SIZE_BLOCKS: u32 = 536914695;
-pub const IPMI_BMC_IOCTL_SET_SMS_ATN: u32 = 536916224;
-pub const ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG: u32 = 3222319873;
-pub const VIDIOC_S_AUDOUT: u32 = 2150913586;
-pub const VIDIOC_S_FMT: u32 = 3234878981;
-pub const PPPIOCATTACH: u32 = 2147775549;
-pub const VHOST_GET_VRING_BUSYLOOP_TIMEOUT: u32 = 2148052772;
-pub const FS_IOC_MEASURE_VERITY: u32 = 3221513862;
-pub const CCISS_BIG_PASSTHRU: u32 = 3227533842;
-pub const IPMICTL_SET_MY_LUN_CMD: u32 = 1074030867;
-pub const PCITEST_LEGACY_IRQ: u32 = 536891394;
-pub const USBDEVFS_SUBMITURB: u32 = 1077433610;
-pub const AUTOFS_IOC_READY: u32 = 536908640;
-pub const BTRFS_IOC_SEND: u32 = 2152240166;
-pub const VIDIOC_G_EXT_CTRLS: u32 = 3223344711;
-pub const JSIOCSBTNMAP: u32 = 2214619699;
-pub const PPPIOCSFLAGS: u32 = 2147775577;
-pub const NVRAM_INIT: u32 = 536899648;
-pub const RFKILL_IOCTL_NOINPUT: u32 = 536891905;
-pub const BTRFS_IOC_BALANCE: u32 = 2415957004;
-pub const FS_IOC_GETFSMAP: u32 = 3233830971;
-pub const IPMICTL_GET_MY_CHANNEL_LUN_CMD: u32 = 1074030875;
-pub const STP_POLICY_ID_GET: u32 = 1074799873;
-pub const PPSETFLAGS: u32 = 2147774619;
-pub const CEC_ADAP_S_PHYS_ADDR: u32 = 2147639554;
-pub const ATMTCP_CREATE: u32 = 536895886;
-pub const IPMI_BMC_IOCTL_FORCE_ABORT: u32 = 536916226;
-pub const PPPIOCGXASYNCMAP: u32 = 1075868752;
-pub const VHOST_SET_VRING_CALL: u32 = 2148052769;
-pub const LIRC_GET_FEATURES: u32 = 1074030848;
-pub const GSMIOC_DISABLE_NET: u32 = 536889091;
-pub const AUTOFS_IOC_CATATONIC: u32 = 536908642;
-pub const NBD_DO_IT: u32 = 536914691;
-pub const LIRC_SET_REC_CARRIER_RANGE: u32 = 2147772703;
-pub const IPMICTL_GET_MY_CHANNEL_ADDRESS_CMD: u32 = 1074030873;
-pub const EVIOCSCLOCKID: u32 = 2147763616;
-pub const USBDEVFS_FREE_STREAMS: u32 = 1074287901;
-pub const FSI_SCOM_RESET: u32 = 2147775235;
-pub const PMU_IOC_GRAB_BACKLIGHT: u32 = 1074283014;
-pub const VIDIOC_SUBDEV_S_FMT: u32 = 3227014661;
-pub const FDDEFPRM: u32 = 2149581379;
-pub const TEE_IOC_INVOKE: u32 = 1074832387;
-pub const USBDEVFS_BULK: u32 = 3222820098;
-pub const SCIF_VWRITETO: u32 = 3223876365;
-pub const SONYPI_IOCSBRT: u32 = 2147579392;
-pub const BTRFS_IOC_FILE_EXTENT_SAME: u32 = 3222836278;
-pub const RTC_PIE_ON: u32 = 536899589;
-pub const BTRFS_IOC_SCAN_DEV: u32 = 2415956996;
-pub const PPPIOCXFERUNIT: u32 = 536900686;
-pub const WDIOC_GETTIMEOUT: u32 = 1074026247;
-pub const BTRFS_IOC_SET_RECEIVED_SUBVOL: u32 = 3234370597;
-pub const DFL_FPGA_PORT_ERR_SET_IRQ: u32 = 2148054598;
-pub const FBIO_WAITFORVSYNC: u32 = 2147763744;
-pub const RTC_PIE_OFF: u32 = 536899590;
-pub const EVIOCGRAB: u32 = 2147763600;
-pub const PMU_IOC_SET_BACKLIGHT: u32 = 2148024834;
-pub const EVIOCGREP: u32 = 1074283779;
-pub const PERF_EVENT_IOC_MODIFY_ATTRIBUTES: u32 = 2148017163;
-pub const UFFDIO_CONTINUE: u32 = 3223366151;
-pub const VDUSE_GET_API_VERSION: u32 = 1074299136;
-pub const RTC_RD_TIME: u32 = 1076129801;
-pub const FDMSGOFF: u32 = 536871494;
-pub const IPMICTL_REGISTER_FOR_CMD_CHANS: u32 = 1074555164;
-pub const CAPI_GET_ERRCODE: u32 = 1073890081;
-pub const PCITEST_SET_IRQTYPE: u32 = 2147766280;
-pub const VIDIOC_SUBDEV_S_EDID: u32 = 3223868969;
-pub const MATROXFB_SET_OUTPUT_MODE: u32 = 2148036346;
-pub const RIO_DEV_ADD: u32 = 2149608727;
-pub const VIDIOC_ENUM_FREQ_BANDS: u32 = 3225441893;
-pub const FBIO_RADEON_SET_MIRROR: u32 = 2148024324;
-pub const PCITEST_GET_IRQTYPE: u32 = 536891401;
-pub const JSIOCGVERSION: u32 = 1074031105;
-pub const SONYPI_IOCSBLUE: u32 = 2147579401;
-pub const SNAPSHOT_PREF_IMAGE_SIZE: u32 = 536883986;
-pub const F2FS_IOC_GET_FEATURES: u32 = 1074066700;
-pub const SCIF_REG: u32 = 3223876360;
-pub const NILFS_IOCTL_CLEAN_SEGMENTS: u32 = 2155376264;
-pub const FW_CDEV_IOC_INITIATE_BUS_RESET: u32 = 2147754757;
-pub const RIO_WAIT_FOR_ASYNC: u32 = 2148035862;
-pub const VHOST_SET_VRING_NUM: u32 = 2148052752;
-pub const AUTOFS_DEV_IOCTL_PROTOVER: u32 = 3222836082;
-pub const RIO_FREE_DMA: u32 = 2148035860;
-pub const MGSL_IOCRXENABLE: u32 = 536898821;
-pub const IOCTL_VM_SOCKETS_GET_LOCAL_CID: u32 = 536872889;
-pub const IPMICTL_SET_TIMING_PARMS_CMD: u32 = 1074293014;
-pub const PPPIOCGL2TPSTATS: u32 = 1078490166;
-pub const PERF_EVENT_IOC_PERIOD: u32 = 2148017156;
-pub const PTP_PIN_SETFUNC2: u32 = 2153790736;
-pub const CHIOEXCHANGE: u32 = 2149344002;
-pub const NILFS_IOCTL_GET_SUINFO: u32 = 1075342980;
-pub const CEC_DQEVENT: u32 = 3226493191;
-pub const UI_SET_SWBIT: u32 = 2147767661;
-pub const VHOST_VDPA_SET_CONFIG: u32 = 2148052852;
-pub const TUNSETIFF: u32 = 2147767498;
-pub const CHIOPOSITION: u32 = 2148295427;
-pub const IPMICTL_SET_MAINTENANCE_MODE_CMD: u32 = 2147772703;
-pub const BTRFS_IOC_DEFAULT_SUBVOL: u32 = 2148045843;
-pub const RIO_UNMAP_OUTBOUND: u32 = 2150133008;
-pub const CAPI_CLR_FLAGS: u32 = 1074021157;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE: u32 = 2149065487;
-pub const MATROXFB_GET_OUTPUT_CONNECTION: u32 = 1074294520;
-pub const EVIOCSMASK: u32 = 2148550035;
-pub const BTRFS_IOC_FORGET_DEV: u32 = 2415956997;
-pub const CXL_MEM_QUERY_COMMANDS: u32 = 1074318849;
-pub const CEC_S_MODE: u32 = 2147770633;
-pub const MGSL_IOCSIF: u32 = 536898826;
-pub const SWITCHTEC_IOCTL_PFF_TO_PORT: u32 = 3222034244;
-pub const PPSETMODE: u32 = 2147774592;
-pub const VFIO_DEVICE_SET_IRQS: u32 = 536886126;
-pub const VIDIOC_PREPARE_BUF: u32 = 3227014749;
-pub const CEC_ADAP_G_CONNECTOR_INFO: u32 = 1078223114;
-pub const IOC_OPAL_WRITE_SHADOW_MBR: u32 = 2166386922;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL: u32 = 3225441867;
-pub const UDMABUF_CREATE: u32 = 2149086530;
-pub const SONET_CLRDIAG: u32 = 3221512467;
-pub const PHN_SET_REG: u32 = 2148036609;
-pub const RNDADDTOENTCNT: u32 = 2147766785;
-pub const VBG_IOCTL_CHECK_BALLOON: u32 = 3223344657;
-pub const VIDIOC_OMAP3ISP_STAT_REQ: u32 = 3223869126;
-pub const PPS_FETCH: u32 = 3221778596;
-pub const RTC_AIE_OFF: u32 = 536899586;
-pub const VFIO_GROUP_SET_CONTAINER: u32 = 536886120;
-pub const FW_CDEV_IOC_RECEIVE_PHY_PACKETS: u32 = 2148016918;
-pub const VFIO_IOMMU_SPAPR_TCE_REMOVE: u32 = 536886136;
-pub const VFIO_IOMMU_GET_INFO: u32 = 536886128;
-pub const DM_DEV_SUSPEND: u32 = 3241737478;
-pub const F2FS_IOC_GET_COMPRESS_OPTION: u32 = 1073935637;
-pub const FW_CDEV_IOC_STOP_ISO: u32 = 2147754763;
-pub const GPIO_V2_GET_LINEINFO_IOCTL: u32 = 3238048773;
-pub const ATMMPC_CTRL: u32 = 536895960;
-pub const PPPIOCSXASYNCMAP: u32 = 2149610575;
-pub const CHIOGSTATUS: u32 = 2148557576;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE: u32 = 3222807309;
-pub const RIO_MPORT_MAINT_PORT_IDX_GET: u32 = 1074031875;
-pub const CAPI_SET_FLAGS: u32 = 1074021156;
-pub const VFIO_GROUP_GET_DEVICE_FD: u32 = 536886122;
-pub const VHOST_SET_MEM_TABLE: u32 = 2148052739;
-pub const MATROXFB_SET_OUTPUT_CONNECTION: u32 = 2148036344;
-pub const DFL_FPGA_PORT_GET_REGION_INFO: u32 = 536917570;
-pub const VHOST_GET_FEATURES: u32 = 1074310912;
-pub const LIRC_GET_REC_RESOLUTION: u32 = 1074030855;
-pub const PACKET_CTRL_CMD: u32 = 3222820865;
-pub const LIRC_SET_TRANSMITTER_MASK: u32 = 2147772695;
-pub const BTRFS_IOC_ADD_DEV: u32 = 2415957002;
-pub const JSIOCGCORR: u32 = 1076128290;
-pub const VIDIOC_G_FMT: u32 = 3234878980;
-pub const RTC_EPOCH_SET: u32 = 2148036622;
-pub const CAPI_GET_PROFILE: u32 = 3225436937;
-pub const ATM_GETLOOP: u32 = 2148557138;
-pub const SCIF_LISTEN: u32 = 2147775234;
-pub const NBD_CLEAR_QUE: u32 = 536914693;
-pub const F2FS_IOC_MOVE_RANGE: u32 = 3223385353;
-pub const LIRC_GET_LENGTH: u32 = 1074030863;
-pub const I8K_SET_FAN: u32 = 3221776775;
-pub const FDSETMAXERRS: u32 = 2148794956;
-pub const VIDIOC_SUBDEV_QUERYCAP: u32 = 1077958144;
-pub const SNAPSHOT_SET_SWAP_AREA: u32 = 2148283149;
-pub const LIRC_GET_REC_TIMEOUT: u32 = 1074030884;
-pub const EVIOCRMFF: u32 = 2147763585;
-pub const GPIO_GET_LINEEVENT_IOCTL: u32 = 3224417284;
-pub const PPRDATA: u32 = 1073836165;
-pub const RIO_MPORT_GET_PROPERTIES: u32 = 1076915460;
-pub const TUNSETVNETHDRSZ: u32 = 2147767512;
-pub const GPIO_GET_LINEINFO_IOCTL: u32 = 3225990146;
-pub const GSMIOC_GETCONF: u32 = 1078740736;
-pub const LIRC_GET_SEND_MODE: u32 = 1074030849;
-pub const PPPIOCSACTIVE: u32 = 2148561990;
-pub const SIOCGSTAMPNS_NEW: u32 = 1074825479;
-pub const IPMICTL_RECEIVE_MSG: u32 = 3224398092;
-pub const LIRC_SET_SEND_DUTY_CYCLE: u32 = 2147772693;
-pub const UI_END_FF_ERASE: u32 = 2148292043;
-pub const SWITCHTEC_IOCTL_FLASH_PART_INFO: u32 = 3222296385;
-pub const FW_CDEV_IOC_SEND_PHY_PACKET: u32 = 3222807317;
-pub const NBD_SET_FLAGS: u32 = 536914698;
-pub const VFIO_DEVICE_GET_REGION_INFO: u32 = 536886124;
-pub const REISERFS_IOC_UNPACK: u32 = 2148060417;
-pub const FW_CDEV_IOC_REMOVE_DESCRIPTOR: u32 = 2147754759;
-pub const RIO_SET_EVENT_MASK: u32 = 2147773709;
-pub const SNAPSHOT_ALLOC_SWAP_PAGE: u32 = 1074279188;
-pub const VDUSE_VQ_INJECT_IRQ: u32 = 2147778839;
-pub const I2OPASSTHRU: u32 = 1074817292;
-pub const IOC_OPAL_SET_PW: u32 = 2183164128;
-pub const FSI_SCOM_READ: u32 = 3223352065;
-pub const VHOST_VDPA_GET_DEVICE_ID: u32 = 1074048880;
-pub const VIDIOC_QBUF: u32 = 3227014671;
-pub const VIDIOC_S_TUNER: u32 = 2153010718;
-pub const TUNGETVNETHDRSZ: u32 = 1074025687;
-pub const CAPI_NCCI_GETUNIT: u32 = 1074021159;
-pub const DFL_FPGA_PORT_UINT_GET_IRQ_NUM: u32 = 1074050631;
-pub const VIDIOC_OMAP3ISP_STAT_EN: u32 = 3221771975;
-pub const GPIO_V2_LINE_SET_CONFIG_IOCTL: u32 = 3239097357;
-pub const TEE_IOC_VERSION: u32 = 1074570240;
-pub const VIDIOC_LOG_STATUS: u32 = 536892998;
-pub const IPMICTL_SEND_COMMAND_SETTIME: u32 = 1076914453;
-pub const VHOST_SET_LOG_FD: u32 = 2147790599;
-pub const SCIF_SEND: u32 = 3222827782;
-pub const VIDIOC_SUBDEV_G_FMT: u32 = 3227014660;
-pub const NS_ADJBUFLEV: u32 = 536895843;
-pub const VIDIOC_DBG_S_REGISTER: u32 = 2151175759;
-pub const NILFS_IOCTL_RESIZE: u32 = 2148036235;
-pub const PHN_GETREG: u32 = 3221778437;
-pub const I2OSWDL: u32 = 3224398085;
-pub const VBG_IOCTL_VMMDEV_REQUEST_BIG: u32 = 536892931;
-pub const JSIOCGBUTTONS: u32 = 1073834514;
-pub const VFIO_IOMMU_ENABLE: u32 = 536886131;
-pub const DM_DEV_RENAME: u32 = 3241737477;
-pub const MEDIA_IOC_SETUP_LINK: u32 = 3224665091;
-pub const VIDIOC_ENUMOUTPUT: u32 = 3225966128;
-pub const STP_POLICY_ID_SET: u32 = 3222283520;
-pub const VHOST_VDPA_SET_CONFIG_CALL: u32 = 2147790711;
-pub const VIDIOC_SUBDEV_G_CROP: u32 = 3224917563;
-pub const VIDIOC_S_CROP: u32 = 2148816444;
-pub const WDIOC_GETTEMP: u32 = 1074026243;
-pub const IOC_OPAL_ADD_USR_TO_LR: u32 = 2165862628;
-pub const UI_SET_LEDBIT: u32 = 2147767657;
-pub const NBD_SET_SOCK: u32 = 536914688;
-pub const BTRFS_IOC_SNAP_DESTROY_V2: u32 = 2415957055;
-pub const HIDIOCGCOLLECTIONINFO: u32 = 3222292497;
-pub const I2OSWUL: u32 = 3224398086;
-pub const IOCTL_MEI_NOTIFY_GET: u32 = 1074022403;
-pub const FDFMTTRK: u32 = 2148270664;
-pub const MMTIMER_GETBITS: u32 = 536898820;
-pub const VIDIOC_ENUMSTD: u32 = 3225966105;
-pub const VHOST_GET_VRING_BASE: u32 = 3221794578;
-pub const VFIO_DEVICE_IOEVENTFD: u32 = 536886132;
-pub const ATMARP_SETENTRY: u32 = 536895971;
-pub const CCISS_REVALIDVOLS: u32 = 536887818;
-pub const MGSL_IOCLOOPTXDONE: u32 = 536898825;
-pub const RTC_VL_READ: u32 = 1074032659;
-pub const ND_IOCTL_ARS_STATUS: u32 = 3224391171;
-pub const RIO_DEV_DEL: u32 = 2149608728;
-pub const VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES: u32 = 3223606797;
-pub const VIDIOC_SUBDEV_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const SONYPI_IOCSFAN: u32 = 2147579403;
-pub const SPIOCSTYPE: u32 = 2148036865;
-pub const IPMICTL_REGISTER_FOR_CMD: u32 = 1073899790;
-pub const I8K_GET_FAN: u32 = 3221776774;
-pub const TUNGETVNETBE: u32 = 1074025695;
-pub const AUTOFS_DEV_IOCTL_FAIL: u32 = 3222836087;
-pub const UI_END_FF_UPLOAD: u32 = 2154321353;
-pub const TOSH_SMM: u32 = 3222828176;
-pub const SONYPI_IOCGBAT2REM: u32 = 1073903109;
-pub const F2FS_IOC_GET_COMPRESS_BLOCKS: u32 = 1074328849;
-pub const PPPIOCSNPMODE: u32 = 2148037707;
-pub const USBDEVFS_CONTROL: u32 = 3222820096;
-pub const HIDIOCGUSAGE: u32 = 3222816779;
-pub const TUNSETTXFILTER: u32 = 2147767505;
-pub const TUNGETVNETLE: u32 = 1074025693;
-pub const VIDIOC_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const BTRFS_IOC_INO_PATHS: u32 = 3224933411;
-pub const MGSL_IOCGXSYNC: u32 = 536898836;
-pub const HIDIOCGFIELDINFO: u32 = 3224913930;
-pub const VIDIOC_SUBDEV_G_STD: u32 = 1074288151;
-pub const I2OVALIDATE: u32 = 1074030856;
-pub const VIDIOC_TRY_ENCODER_CMD: u32 = 3223869006;
-pub const NILFS_IOCTL_GET_CPINFO: u32 = 1075342978;
-pub const VIDIOC_G_FREQUENCY: u32 = 3224131128;
-pub const VFAT_IOCTL_READDIR_SHORT: u32 = 1110471170;
-pub const ND_IOCTL_GET_CONFIG_DATA: u32 = 3222031877;
-pub const F2FS_IOC_RESERVE_COMPRESS_BLOCKS: u32 = 1074328851;
-pub const FDGETDRVSTAT: u32 = 1078985234;
-pub const SYNC_IOC_MERGE: u32 = 3224387075;
-pub const VIDIOC_S_DV_TIMINGS: u32 = 3229898327;
-pub const PPPIOCBRIDGECHAN: u32 = 2147775541;
-pub const LIRC_SET_SEND_MODE: u32 = 2147772689;
-pub const RIO_ENABLE_PORTWRITE_RANGE: u32 = 2148560139;
-pub const ATM_GETTYPE: u32 = 2148557188;
-pub const PHN_GETREGS: u32 = 3223875591;
-pub const FDSETEMSGTRESH: u32 = 536871498;
-pub const NILFS_IOCTL_GET_VINFO: u32 = 3222826630;
-pub const MGSL_IOCWAITEVENT: u32 = 3221515528;
-pub const CAPI_INSTALLED: u32 = 1073890082;
-pub const EVIOCGMASK: u32 = 1074808210;
-pub const BTRFS_IOC_SUBVOL_GETFLAGS: u32 = 1074304025;
-pub const FSL_HV_IOCTL_PARTITION_GET_STATUS: u32 = 3222056706;
-pub const MEDIA_IOC_ENUM_ENTITIES: u32 = 3238034433;
-pub const GSMIOC_GETFIRST: u32 = 1074022148;
-pub const FW_CDEV_IOC_FLUSH_ISO: u32 = 2147754776;
-pub const VIDIOC_DBG_G_CHIP_INFO: u32 = 3234354790;
-pub const F2FS_IOC_RELEASE_VOLATILE_WRITE: u32 = 536933636;
-pub const CAPI_GET_SERIAL: u32 = 3221504776;
-pub const FDSETDRVPRM: u32 = 2155872912;
-pub const IOC_OPAL_SAVE: u32 = 2165862620;
-pub const VIDIOC_G_DV_TIMINGS: u32 = 3229898328;
-pub const TUNSETIFINDEX: u32 = 2147767514;
-pub const CCISS_SETINTINFO: u32 = 2148024835;
-pub const CM_IOSDBGLVL: u32 = 2148033530;
-pub const RTC_VL_CLR: u32 = 536899604;
-pub const VIDIOC_REQBUFS: u32 = 3222558216;
-pub const USBDEVFS_REAPURBNDELAY32: u32 = 2147767565;
-pub const TEE_IOC_SHM_REGISTER: u32 = 3222840329;
-pub const USBDEVFS_SETCONFIGURATION: u32 = 1074025733;
-pub const CCISS_GETNODENAME: u32 = 1074807300;
-pub const VIDIOC_SUBDEV_S_FRAME_INTERVAL: u32 = 3224393238;
-pub const VIDIOC_ENUM_FRAMESIZES: u32 = 3224131146;
-pub const VFIO_DEVICE_PCI_HOT_RESET: u32 = 536886129;
-pub const FW_CDEV_IOC_SEND_BROADCAST_REQUEST: u32 = 2150114066;
-pub const LPSETTIMEOUT_NEW: u32 = 2148533775;
-pub const RIO_CM_MPORT_GET_LIST: u32 = 3221512971;
-pub const FW_CDEV_IOC_QUEUE_ISO: u32 = 3222807305;
-pub const FDRAWCMD: u32 = 536871512;
-pub const SCIF_UNREG: u32 = 3222303497;
-pub const PPPIOCGIDLE64: u32 = 1074820159;
-pub const USBDEVFS_RELEASEINTERFACE: u32 = 1074025744;
-pub const VIDIOC_CROPCAP: u32 = 3224131130;
-pub const DFL_FPGA_PORT_GET_INFO: u32 = 536917569;
-pub const PHN_SET_REGS: u32 = 2148036611;
-pub const ATMLEC_DATA: u32 = 536895953;
-pub const PPPOEIOCDFWD: u32 = 536916225;
-pub const VIDIOC_S_SELECTION: u32 = 3225441887;
-pub const SNAPSHOT_FREE_SWAP_PAGES: u32 = 536883977;
-pub const BTRFS_IOC_LOGICAL_INO: u32 = 3224933412;
-pub const VIDIOC_S_CTRL: u32 = 3221771804;
-pub const ZATM_SETPOOL: u32 = 2148557155;
-pub const MTIOCPOS: u32 = 1074294019;
-pub const PMU_IOC_SLEEP: u32 = 536887808;
-pub const AUTOFS_DEV_IOCTL_PROTOSUBVER: u32 = 3222836083;
-pub const VBG_IOCTL_CHANGE_FILTER_MASK: u32 = 3223344652;
-pub const NILFS_IOCTL_GET_SUSTAT: u32 = 1076915845;
-pub const VIDIOC_QUERYCAP: u32 = 1080579584;
-pub const HPET_INFO: u32 = 1075341315;
-pub const VIDIOC_AM437X_CCDC_CFG: u32 = 2148030145;
-pub const DM_LIST_DEVICES: u32 = 3241737474;
-pub const TUNSETOWNER: u32 = 2147767500;
-pub const VBG_IOCTL_CHANGE_GUEST_CAPABILITIES: u32 = 3223344654;
-pub const RNDADDENTROPY: u32 = 2148028931;
-pub const USBDEVFS_RESET: u32 = 536892692;
-pub const BTRFS_IOC_SUBVOL_CREATE: u32 = 2415957006;
-pub const USBDEVFS_FORBID_SUSPEND: u32 = 536892705;
-pub const FDGETDRVTYP: u32 = 1074790927;
-pub const PPWCONTROL: u32 = 2147577988;
-pub const VIDIOC_ENUM_FRAMEINTERVALS: u32 = 3224655435;
-pub const KCOV_DISABLE: u32 = 536896357;
-pub const IOC_OPAL_ACTIVATE_LSP: u32 = 2165862623;
-pub const VHOST_VDPA_GET_IOVA_RANGE: u32 = 1074835320;
-pub const PPPIOCSPASS: u32 = 2148561991;
-pub const RIO_CM_CHAN_CONNECT: u32 = 2148033288;
-pub const I2OSWDEL: u32 = 3224398087;
-pub const FS_IOC_SET_ENCRYPTION_POLICY: u32 = 1074554387;
-pub const IOC_OPAL_MBR_DONE: u32 = 2165338345;
-pub const PPPIOCSMAXCID: u32 = 2147775569;
-pub const PPSETPHASE: u32 = 2147774612;
-pub const VHOST_VDPA_SET_VRING_ENABLE: u32 = 2148052853;
-pub const USBDEVFS_GET_SPEED: u32 = 536892703;
-pub const SONET_GETFRAMING: u32 = 1074028822;
-pub const VIDIOC_QUERYBUF: u32 = 3227014665;
-pub const VIDIOC_S_EDID: u32 = 3223868969;
-pub const BTRFS_IOC_QGROUP_ASSIGN: u32 = 2149094441;
-pub const PPS_GETCAP: u32 = 1074294947;
-pub const SNAPSHOT_PLATFORM_SUPPORT: u32 = 536883983;
-pub const LIRC_SET_REC_TIMEOUT_REPORTS: u32 = 2147772697;
-pub const SCIF_GET_NODEIDS: u32 = 3222827790;
-pub const NBD_DISCONNECT: u32 = 536914696;
-pub const VIDIOC_SUBDEV_G_FRAME_INTERVAL: u32 = 3224393237;
-pub const VFIO_IOMMU_DISABLE: u32 = 536886132;
-pub const SNAPSHOT_CREATE_IMAGE: u32 = 2147758865;
-pub const SNAPSHOT_POWER_OFF: u32 = 536883984;
-pub const APM_IOC_STANDBY: u32 = 536887553;
-pub const PPPIOCGUNIT: u32 = 1074033750;
-pub const AUTOFS_IOC_EXPIRE_MULTI: u32 = 2147783526;
-pub const SCIF_BIND: u32 = 3221779201;
-pub const IOC_WATCH_QUEUE_SET_SIZE: u32 = 536893280;
-pub const NILFS_IOCTL_CHANGE_CPMODE: u32 = 2148560512;
-pub const IOC_OPAL_LOCK_UNLOCK: u32 = 2165862621;
-pub const F2FS_IOC_SET_PIN_FILE: u32 = 2147808525;
-pub const PPPIOCGRASYNCMAP: u32 = 1074033749;
-pub const MMTIMER_MMAPAVAIL: u32 = 536898822;
-pub const I2OPASSTHRU32: u32 = 1074293004;
-pub const DFL_FPGA_FME_PORT_RELEASE: u32 = 2147792513;
-pub const VIDIOC_SUBDEV_QUERY_DV_TIMINGS: u32 = 1082414691;
-pub const UI_SET_SNDBIT: u32 = 2147767658;
-pub const VIDIOC_G_AUDOUT: u32 = 1077171761;
-pub const RTC_PLL_SET: u32 = 2149609490;
-pub const VIDIOC_ENUMAUDIO: u32 = 3224655425;
-pub const AUTOFS_DEV_IOCTL_TIMEOUT: u32 = 3222836090;
-pub const VBG_IOCTL_DRIVER_VERSION_INFO: u32 = 3224131072;
-pub const VHOST_SCSI_GET_EVENTS_MISSED: u32 = 2147790660;
-pub const VHOST_SET_VRING_ADDR: u32 = 2150149905;
-pub const VDUSE_CREATE_DEV: u32 = 2169536770;
-pub const FDFLUSH: u32 = 536871499;
-pub const VBG_IOCTL_WAIT_FOR_EVENTS: u32 = 3223344650;
-pub const DFL_FPGA_FME_ERR_SET_IRQ: u32 = 2148054660;
-pub const F2FS_IOC_GET_PIN_FILE: u32 = 1074066702;
-pub const SCIF_CONNECT: u32 = 3221779203;
-pub const BLKREPORTZONE: u32 = 3222278786;
-pub const AUTOFS_IOC_ASKUMOUNT: u32 = 1074041712;
-pub const ATM_ADDPARTY: u32 = 2148557300;
-pub const FDSETPRM: u32 = 2149581378;
-pub const ATM_GETSTATZ: u32 = 2148557137;
-pub const ISST_IF_MSR_COMMAND: u32 = 3221814788;
-pub const BTRFS_IOC_GET_SUBVOL_INFO: u32 = 1106809916;
-pub const VIDIOC_UNSUBSCRIBE_EVENT: u32 = 2149602907;
-pub const SEV_ISSUE_CMD: u32 = 3222295296;
-pub const GPIOHANDLE_SET_LINE_VALUES_IOCTL: u32 = 3225465865;
-pub const PCITEST_COPY: u32 = 2148028422;
-pub const IPMICTL_GET_MY_ADDRESS_CMD: u32 = 1074030866;
-pub const CHIOGPICKER: u32 = 1074029316;
-pub const CAPI_NCCI_OPENCOUNT: u32 = 1074021158;
-pub const CXL_MEM_SEND_COMMAND: u32 = 3224423938;
-pub const PERF_EVENT_IOC_SET_FILTER: u32 = 2148017158;
-pub const IOC_OPAL_REVERT_TPR: u32 = 2164814050;
-pub const CHIOGVPARAMS: u32 = 1081107219;
-pub const PTP_PEROUT_REQUEST: u32 = 2151169283;
-pub const FSI_SCOM_CHECK: u32 = 1074033408;
-pub const RTC_IRQP_READ: u32 = 1074294795;
-pub const RIO_MPORT_MAINT_READ_LOCAL: u32 = 1075342597;
-pub const HIDIOCGRDESCSIZE: u32 = 1074022401;
-pub const UI_GET_VERSION: u32 = 1074025773;
-pub const NILFS_IOCTL_GET_CPSTAT: u32 = 1075342979;
-pub const CCISS_GETBUSTYPES: u32 = 1074020871;
-pub const VFIO_IOMMU_SPAPR_TCE_CREATE: u32 = 536886135;
-pub const VIDIOC_EXPBUF: u32 = 3225441808;
-pub const UI_SET_RELBIT: u32 = 2147767654;
-pub const VFIO_SET_IOMMU: u32 = 536886118;
-pub const VIDIOC_S_MODULATOR: u32 = 2151962167;
-pub const TUNGETFILTER: u32 = 1074812123;
-pub const MEYEIOC_SYNC: u32 = 3221518019;
-pub const CCISS_SETNODENAME: u32 = 2148549125;
-pub const FBIO_GETCONTROL2: u32 = 1074284169;
-pub const TUNSETDEBUG: u32 = 2147767497;
-pub const DM_DEV_REMOVE: u32 = 3241737476;
-pub const HIDIOCSUSAGES: u32 = 2417772564;
-pub const FS_IOC_ADD_ENCRYPTION_KEY: u32 = 3226494487;
-pub const FBIOGET_VBLANK: u32 = 1075856914;
-pub const ATM_GETSTAT: u32 = 2148557136;
-pub const VIDIOC_G_JPEGCOMP: u32 = 1082938941;
-pub const TUNATTACHFILTER: u32 = 2148553941;
-pub const UI_SET_ABSBIT: u32 = 2147767655;
-pub const DFL_FPGA_PORT_ERR_GET_IRQ_NUM: u32 = 1074050629;
-pub const USBDEVFS_REAPURB32: u32 = 2147767564;
-pub const BTRFS_IOC_TRANS_END: u32 = 536908807;
-pub const CAPI_REGISTER: u32 = 2148287233;
-pub const F2FS_IOC_COMPRESS_FILE: u32 = 536933656;
-pub const USBDEVFS_DISCARDURB: u32 = 536892683;
-pub const HE_GET_REG: u32 = 2148557152;
-pub const ATM_SETLOOP: u32 = 2148557139;
-pub const ATMSIGD_CTRL: u32 = 536895984;
-pub const CIOC_KERNEL_VERSION: u32 = 3221775114;
-pub const BTRFS_IOC_CLONE_RANGE: u32 = 2149618701;
-pub const SNAPSHOT_UNFREEZE: u32 = 536883970;
-pub const F2FS_IOC_START_VOLATILE_WRITE: u32 = 536933635;
-pub const PMU_IOC_HAS_ADB: u32 = 1074283012;
-pub const I2OGETIOPS: u32 = 1075865856;
-pub const VIDIOC_S_FBUF: u32 = 2150651403;
-pub const PPRCONTROL: u32 = 1073836163;
-pub const CHIOSPICKER: u32 = 2147771141;
-pub const VFIO_IOMMU_SPAPR_REGISTER_MEMORY: u32 = 536886133;
-pub const TUNGETSNDBUF: u32 = 1074025683;
-pub const GSMIOC_SETCONF: u32 = 2152482561;
-pub const IOC_PR_PREEMPT: u32 = 2149085387;
-pub const KCOV_INIT_TRACE: u32 = 1074291457;
-pub const SONYPI_IOCGBAT1CAP: u32 = 1073903106;
-pub const SWITCHTEC_IOCTL_FLASH_INFO: u32 = 1074812736;
-pub const MTIOCTOP: u32 = 2148035841;
-pub const VHOST_VDPA_SET_STATUS: u32 = 2147594098;
-pub const VHOST_SCSI_SET_EVENTS_MISSED: u32 = 2147790659;
-pub const VFIO_IOMMU_DIRTY_PAGES: u32 = 536886133;
-pub const BTRFS_IOC_SCRUB_PROGRESS: u32 = 3288372253;
-pub const PPPIOCGMRU: u32 = 1074033747;
-pub const BTRFS_IOC_DEV_REPLACE: u32 = 3391657013;
-pub const PPPIOCGFLAGS: u32 = 1074033754;
-pub const NILFS_IOCTL_SET_SUINFO: u32 = 2149084813;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER2: u32 = 3222807316;
-pub const ATM_DELLECSADDR: u32 = 2148557199;
-pub const FW_CDEV_IOC_GET_SPEED: u32 = 536879889;
-pub const PPPIOCGIDLE32: u32 = 1074295871;
-pub const VFIO_DEVICE_RESET: u32 = 536886127;
-pub const GPIO_GET_LINEINFO_UNWATCH_IOCTL: u32 = 3221533708;
-pub const WDIOC_GETSTATUS: u32 = 1074026241;
-pub const BTRFS_IOC_SET_FEATURES: u32 = 2150667321;
-pub const IOCTL_MEI_CONNECT_CLIENT: u32 = 3222292481;
-pub const VIDIOC_OMAP3ISP_AEWB_CFG: u32 = 3223344835;
-pub const PCITEST_READ: u32 = 2148028421;
-pub const VFIO_GROUP_GET_STATUS: u32 = 536886119;
-pub const MATROXFB_GET_ALL_OUTPUTS: u32 = 1074294523;
-pub const USBDEVFS_CLEAR_HALT: u32 = 1074025749;
-pub const VIDIOC_DECODER_CMD: u32 = 3225966176;
-pub const VIDIOC_G_AUDIO: u32 = 1077171745;
-pub const CCISS_RESCANDISK: u32 = 536887824;
-pub const RIO_DISABLE_PORTWRITE_RANGE: u32 = 2148560140;
-pub const IOC_OPAL_SECURE_ERASE_LR: u32 = 2165338343;
-pub const USBDEVFS_REAPURB: u32 = 2148029708;
-pub const DFL_FPGA_CHECK_EXTENSION: u32 = 536917505;
-pub const AUTOFS_IOC_PROTOVER: u32 = 1074041699;
-pub const FSL_HV_IOCTL_MEMCPY: u32 = 3223891717;
-pub const BTRFS_IOC_GET_FEATURES: u32 = 1075352633;
-pub const PCITEST_MSIX: u32 = 2147766279;
-pub const BTRFS_IOC_DEFRAG_RANGE: u32 = 2150667280;
-pub const UI_BEGIN_FF_ERASE: u32 = 3222033866;
-pub const DM_GET_TARGET_VERSION: u32 = 3241737489;
-pub const PPPIOCGIDLE: u32 = 1074820159;
-pub const NVRAM_SETCKS: u32 = 536899649;
-pub const WDIOC_GETSUPPORT: u32 = 1076385536;
-pub const GSMIOC_ENABLE_NET: u32 = 2150909698;
-pub const GPIO_GET_CHIPINFO_IOCTL: u32 = 1078244353;
-pub const NE_ADD_VCPU: u32 = 3221532193;
-pub const EVIOCSKEYCODE_V2: u32 = 2150122756;
-pub const PTP_SYS_OFFSET_EXTENDED2: u32 = 3300932882;
-pub const SCIF_FENCE_WAIT: u32 = 3221517072;
-pub const RIO_TRANSFER: u32 = 3222826261;
-pub const FSL_HV_IOCTL_DOORBELL: u32 = 3221794566;
-pub const RIO_MPORT_MAINT_WRITE_LOCAL: u32 = 2149084422;
-pub const I2OEVTREG: u32 = 2148296970;
-pub const I2OPARMGET: u32 = 3223873796;
-pub const EVIOCGID: u32 = 1074283778;
-pub const BTRFS_IOC_QGROUP_CREATE: u32 = 2148570154;
-pub const AUTOFS_DEV_IOCTL_SETPIPEFD: u32 = 3222836088;
-pub const VIDIOC_S_PARM: u32 = 3234616854;
-pub const TUNSETSTEERINGEBPF: u32 = 1074025696;
-pub const ATM_GETNAMES: u32 = 2148557187;
-pub const VIDIOC_QUERYMENU: u32 = 3224131109;
-pub const DFL_FPGA_PORT_DMA_UNMAP: u32 = 536917572;
-pub const I2OLCTGET: u32 = 3222825218;
-pub const FS_IOC_GET_ENCRYPTION_PWSALT: u32 = 2148558356;
-pub const NS_SETBUFLEV: u32 = 2148557154;
-pub const BLKCLOSEZONE: u32 = 2148536967;
-pub const SONET_GETFRSENSE: u32 = 1074159895;
-pub const UI_SET_EVBIT: u32 = 2147767652;
-pub const DM_LIST_VERSIONS: u32 = 3241737485;
-pub const HIDIOCGSTRING: u32 = 1090799620;
-pub const PPPIOCATTCHAN: u32 = 2147775544;
-pub const VDUSE_DEV_SET_CONFIG: u32 = 2148040978;
-pub const TUNGETFEATURES: u32 = 1074025679;
-pub const VFIO_GROUP_UNSET_CONTAINER: u32 = 536886121;
-pub const IPMICTL_SET_MY_ADDRESS_CMD: u32 = 1074030865;
-pub const CCISS_REGNEWDISK: u32 = 2147762701;
-pub const VIDIOC_QUERY_DV_TIMINGS: u32 = 1082414691;
-pub const PHN_SETREGS: u32 = 2150133768;
-pub const FAT_IOCTL_GET_ATTRIBUTES: u32 = 1074033168;
-pub const FSL_MC_SEND_MC_COMMAND: u32 = 3225440992;
-pub const TUNGETIFF: u32 = 1074025682;
-pub const PTP_CLOCK_GETCAPS2: u32 = 1079000330;
-pub const BTRFS_IOC_RESIZE: u32 = 2415956995;
-pub const VHOST_SET_VRING_ENDIAN: u32 = 2148052755;
-pub const PPS_KC_BIND: u32 = 2148036773;
-pub const F2FS_IOC_WRITE_CHECKPOINT: u32 = 536933639;
-pub const UI_SET_FFBIT: u32 = 2147767659;
-pub const IPMICTL_GET_MY_LUN_CMD: u32 = 1074030868;
-pub const CEC_ADAP_G_PHYS_ADDR: u32 = 1073897729;
-pub const CEC_G_MODE: u32 = 1074028808;
-pub const USBDEVFS_RESETEP: u32 = 1074025731;
-pub const MEDIA_REQUEST_IOC_QUEUE: u32 = 536902784;
-pub const USBDEVFS_ALLOC_STREAMS: u32 = 1074287900;
-pub const MGSL_IOCSXCTRL: u32 = 536898837;
-pub const MEDIA_IOC_G_TOPOLOGY: u32 = 3225975812;
-pub const PPPIOCUNBRIDGECHAN: u32 = 536900660;
-pub const F2FS_IOC_COMMIT_ATOMIC_WRITE: u32 = 536933634;
-pub const ISST_IF_GET_PLATFORM_INFO: u32 = 1074331136;
-pub const SCIF_FENCE_MARK: u32 = 3222303503;
-pub const USBDEVFS_RELEASE_PORT: u32 = 1074025753;
-pub const VFIO_CHECK_EXTENSION: u32 = 536886117;
-pub const BTRFS_IOC_QGROUP_LIMIT: u32 = 1076925483;
-pub const FAT_IOCTL_GET_VOLUME_ID: u32 = 1074033171;
-pub const UI_SET_PHYS: u32 = 2148029804;
-pub const FDWERRORGET: u32 = 1076363799;
-pub const VIDIOC_SUBDEV_G_EDID: u32 = 3223868968;
-pub const MGSL_IOCGSTATS: u32 = 536898823;
-pub const RPROC_SET_SHUTDOWN_ON_RELEASE: u32 = 2147792641;
-pub const SIOCGSTAMP_NEW: u32 = 1074825478;
-pub const RTC_WKALM_RD: u32 = 1076391952;
-pub const PHN_GET_REG: u32 = 3221778432;
-pub const DELL_WMI_SMBIOS_CMD: u32 = 3224655616;
-pub const PHN_NOT_OH: u32 = 536899588;
-pub const PPGETMODES: u32 = 1074032791;
-pub const CHIOGPARAMS: u32 = 1075077894;
-pub const VFIO_DEVICE_GET_GFX_DMABUF: u32 = 536886131;
-pub const VHOST_SET_VRING_BUSYLOOP_TIMEOUT: u32 = 2148052771;
-pub const VIDIOC_SUBDEV_G_SELECTION: u32 = 3225441853;
-pub const BTRFS_IOC_RM_DEV_V2: u32 = 2415957050;
-pub const MGSL_IOCWAITGPIO: u32 = 3222301970;
-pub const PMU_IOC_CAN_SLEEP: u32 = 1074283013;
-pub const KCOV_ENABLE: u32 = 536896356;
-pub const BTRFS_IOC_CLONE: u32 = 2147783689;
-pub const F2FS_IOC_DEFRAGMENT: u32 = 3222336776;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE: u32 = 2147754766;
-pub const AGPIOC_ALLOCATE: u32 = 3221766406;
-pub const NE_SET_USER_MEMORY_REGION: u32 = 2149101091;
-pub const MGSL_IOCTXABORT: u32 = 536898822;
-pub const MGSL_IOCSGPIO: u32 = 2148560144;
-pub const LIRC_SET_REC_CARRIER: u32 = 2147772692;
-pub const F2FS_IOC_FLUSH_DEVICE: u32 = 2148070666;
-pub const SNAPSHOT_ATOMIC_RESTORE: u32 = 536883972;
-pub const RTC_UIE_OFF: u32 = 536899588;
-pub const BT_BMC_IOCTL_SMS_ATN: u32 = 536916224;
-pub const NVME_IOCTL_ID: u32 = 536890944;
-pub const NE_START_ENCLAVE: u32 = 3222318628;
-pub const VIDIOC_STREAMON: u32 = 2147767826;
-pub const FDPOLLDRVSTAT: u32 = 1078985235;
-pub const AUTOFS_DEV_IOCTL_READY: u32 = 3222836086;
-pub const VIDIOC_ENUMAUDOUT: u32 = 3224655426;
-pub const VIDIOC_SUBDEV_S_STD: u32 = 2148029976;
-pub const WDIOC_GETTIMELEFT: u32 = 1074026250;
-pub const ATM_GETLINKRATE: u32 = 2148557185;
-pub const RTC_WKALM_SET: u32 = 2150133775;
-pub const VHOST_GET_BACKEND_FEATURES: u32 = 1074310950;
-pub const ATMARP_ENCAP: u32 = 536895973;
-pub const CAPI_GET_FLAGS: u32 = 1074021155;
-pub const IPMICTL_SET_MY_CHANNEL_ADDRESS_CMD: u32 = 1074030872;
-pub const DFL_FPGA_FME_PORT_ASSIGN: u32 = 2147792514;
-pub const NS_GET_OWNER_UID: u32 = 536917764;
-pub const VIDIOC_OVERLAY: u32 = 2147767822;
-pub const BTRFS_IOC_WAIT_SYNC: u32 = 2148045846;
-pub const GPIOHANDLE_SET_CONFIG_IOCTL: u32 = 3226776586;
-pub const VHOST_GET_VRING_ENDIAN: u32 = 2148052756;
-pub const ATM_GETADDR: u32 = 2148557190;
-pub const PHN_GET_REGS: u32 = 3221778434;
-pub const AUTOFS_DEV_IOCTL_REQUESTER: u32 = 3222836091;
-pub const AUTOFS_DEV_IOCTL_EXPIRE: u32 = 3222836092;
-pub const SNAPSHOT_S2RAM: u32 = 536883979;
-pub const JSIOCSAXMAP: u32 = 2151705137;
-pub const F2FS_IOC_SET_COMPRESS_OPTION: u32 = 2147677462;
-pub const VBG_IOCTL_HGCM_DISCONNECT: u32 = 3223082501;
-pub const SCIF_FENCE_SIGNAL: u32 = 3223876369;
-pub const VFIO_DEVICE_GET_PCI_HOT_RESET_INFO: u32 = 536886128;
-pub const VIDIOC_SUBDEV_ENUM_MBUS_CODE: u32 = 3224393218;
-pub const MMTIMER_GETOFFSET: u32 = 536898816;
-pub const RIO_CM_CHAN_LISTEN: u32 = 2147640070;
-pub const ATM_SETSC: u32 = 2147770865;
-pub const F2FS_IOC_SHUTDOWN: u32 = 1074026621;
-pub const NVME_IOCTL_RESCAN: u32 = 536890950;
-pub const BLKOPENZONE: u32 = 2148536966;
-pub const DM_VERSION: u32 = 3241737472;
-pub const CEC_TRANSMIT: u32 = 3224920325;
-pub const FS_IOC_GET_ENCRYPTION_POLICY_EX: u32 = 3221841430;
-pub const SIOCMKCLIP: u32 = 536895968;
-pub const IPMI_BMC_IOCTL_CLEAR_SMS_ATN: u32 = 536916225;
-pub const HIDIOCGVERSION: u32 = 1074022401;
-pub const VIDIOC_S_INPUT: u32 = 3221509671;
-pub const VIDIOC_G_CROP: u32 = 3222558267;
-pub const LIRC_SET_WIDEBAND_RECEIVER: u32 = 2147772707;
-pub const EVIOCGEFFECTS: u32 = 1074021764;
-pub const UVCIOC_CTRL_QUERY: u32 = 3222304033;
-pub const IOC_OPAL_GENERIC_TABLE_RW: u32 = 2167959787;
-pub const FS_IOC_READ_VERITY_METADATA: u32 = 3223873159;
-pub const ND_IOCTL_SET_CONFIG_DATA: u32 = 3221769734;
-pub const USBDEVFS_GETDRIVER: u32 = 2164544776;
-pub const IDT77105_GETSTAT: u32 = 2148557106;
-pub const HIDIOCINITREPORT: u32 = 536889349;
-pub const VFIO_DEVICE_GET_INFO: u32 = 536886123;
-pub const RIO_CM_CHAN_RECEIVE: u32 = 3222299402;
-pub const RNDGETENTCNT: u32 = 1074024960;
-pub const PPPIOCNEWUNIT: u32 = 3221517374;
-pub const BTRFS_IOC_INO_LOOKUP: u32 = 3489698834;
-pub const FDRESET: u32 = 536871508;
-pub const IOC_PR_REGISTER: u32 = 2149085384;
-pub const HIDIOCSREPORT: u32 = 2148288520;
-pub const TEE_IOC_OPEN_SESSION: u32 = 1074832386;
-pub const TEE_IOC_SUPPL_RECV: u32 = 1074832390;
-pub const BTRFS_IOC_BALANCE_CTL: u32 = 2147783713;
-pub const GPIO_GET_LINEINFO_WATCH_IOCTL: u32 = 3225990155;
-pub const HIDIOCGRAWINFO: u32 = 1074284547;
-pub const PPPIOCSCOMPRESS: u32 = 2148561997;
-pub const USBDEVFS_CONNECTINFO: u32 = 2148029713;
-pub const BLKRESETZONE: u32 = 2148536963;
-pub const CHIOINITELEM: u32 = 536896273;
-pub const NILFS_IOCTL_SET_ALLOC_RANGE: u32 = 2148560524;
-pub const AUTOFS_DEV_IOCTL_CATATONIC: u32 = 3222836089;
-pub const RIO_MPORT_MAINT_HDID_SET: u32 = 2147642625;
-pub const PPGETPHASE: u32 = 1074032793;
-pub const USBDEVFS_DISCONNECT_CLAIM: u32 = 1091065115;
-pub const FDMSGON: u32 = 536871493;
-pub const VIDIOC_G_SLICED_VBI_CAP: u32 = 3228849733;
-pub const BTRFS_IOC_BALANCE_V2: u32 = 3288372256;
-pub const MEDIA_REQUEST_IOC_REINIT: u32 = 536902785;
-pub const IOC_OPAL_ERASE_LR: u32 = 2165338342;
-pub const FDFMTBEG: u32 = 536871495;
-pub const RNDRESEEDCRNG: u32 = 536891911;
-pub const ISST_IF_GET_PHY_ID: u32 = 3221814785;
-pub const TUNSETNOCSUM: u32 = 2147767496;
-pub const SONET_GETSTAT: u32 = 1076125968;
-pub const TFD_IOC_SET_TICKS: u32 = 2148029440;
-pub const PPDATADIR: u32 = 2147774608;
-pub const IOC_OPAL_ENABLE_DISABLE_MBR: u32 = 2165338341;
-pub const GPIO_V2_GET_LINE_IOCTL: u32 = 3260068871;
-pub const RIO_CM_CHAN_SEND: u32 = 2148557577;
-pub const PPWCTLONIRQ: u32 = 2147578002;
-pub const SONYPI_IOCGBRT: u32 = 1073837568;
-pub const IOC_PR_RELEASE: u32 = 2148561098;
-pub const PPCLRIRQ: u32 = 1074032787;
-pub const IPMICTL_SET_MY_CHANNEL_LUN_CMD: u32 = 1074030874;
-pub const MGSL_IOCSXSYNC: u32 = 536898835;
-pub const HPET_IE_OFF: u32 = 536897538;
-pub const IOC_OPAL_ACTIVATE_USR: u32 = 2165338337;
-pub const SONET_SETFRAMING: u32 = 2147770645;
-pub const PERF_EVENT_IOC_PAUSE_OUTPUT: u32 = 2147755017;
-pub const BTRFS_IOC_LOGICAL_INO_V2: u32 = 3224933435;
-pub const VBG_IOCTL_HGCM_CONNECT: u32 = 3231471108;
-pub const BLKFINISHZONE: u32 = 2148536968;
-pub const EVIOCREVOKE: u32 = 2147763601;
-pub const VFIO_DEVICE_FEATURE: u32 = 536886133;
-pub const CCISS_GETPCIINFO: u32 = 1074283009;
-pub const ISST_IF_MBOX_COMMAND: u32 = 3221814787;
-pub const SCIF_ACCEPTREQ: u32 = 3222303492;
-pub const PERF_EVENT_IOC_QUERY_BPF: u32 = 3221758986;
-pub const VIDIOC_STREAMOFF: u32 = 2147767827;
-pub const VDUSE_DESTROY_DEV: u32 = 2164293891;
-pub const FDGETFDCSTAT: u32 = 1076363797;
-pub const CM_IOCGATR: u32 = 3221775105;
-pub const VIDIOC_S_PRIORITY: u32 = 2147767876;
-pub const SNAPSHOT_FREEZE: u32 = 536883969;
-pub const VIDIOC_ENUMINPUT: u32 = 3226490394;
-pub const ZATM_GETPOOLZ: u32 = 2148557154;
-pub const RIO_DISABLE_DOORBELL_RANGE: u32 = 2148035850;
-pub const GPIO_V2_GET_LINEINFO_WATCH_IOCTL: u32 = 3238048774;
-pub const VIDIOC_G_STD: u32 = 1074288151;
-pub const USBDEVFS_ALLOW_SUSPEND: u32 = 536892706;
-pub const SONET_GETSTATZ: u32 = 1076125969;
-pub const SCIF_ACCEPTREG: u32 = 3221779205;
-pub const VIDIOC_ENCODER_CMD: u32 = 3223869005;
-pub const PPPIOCSRASYNCMAP: u32 = 2147775572;
-pub const IOCTL_MEI_NOTIFY_SET: u32 = 2147764226;
-pub const BTRFS_IOC_QUOTA_RESCAN_STATUS: u32 = 1077974061;
-pub const F2FS_IOC_GARBAGE_COLLECT: u32 = 2147808518;
-pub const ATMLEC_CTRL: u32 = 536895952;
-pub const MATROXFB_GET_AVAILABLE_OUTPUTS: u32 = 1074294521;
-pub const DM_DEV_CREATE: u32 = 3241737475;
-pub const VHOST_VDPA_GET_VRING_NUM: u32 = 1073917814;
-pub const VIDIOC_G_CTRL: u32 = 3221771803;
-pub const NBD_CLEAR_SOCK: u32 = 536914692;
-pub const VFIO_DEVICE_QUERY_GFX_PLANE: u32 = 536886130;
-pub const WDIOC_KEEPALIVE: u32 = 1074026245;
-pub const NVME_IOCTL_SUBSYS_RESET: u32 = 536890949;
-pub const PTP_EXTTS_REQUEST2: u32 = 2148547851;
-pub const PCITEST_BAR: u32 = 536891393;
-pub const MGSL_IOCGGPIO: u32 = 1074818321;
-pub const EVIOCSREP: u32 = 2148025603;
-pub const VFIO_DEVICE_GET_IRQ_INFO: u32 = 536886125;
-pub const HPET_DPI: u32 = 536897541;
-pub const VDUSE_VQ_SETUP_KICKFD: u32 = 2148040982;
-pub const ND_IOCTL_CALL: u32 = 3225439754;
-pub const HIDIOCGDEVINFO: u32 = 1075595267;
-pub const DM_TABLE_DEPS: u32 = 3241737483;
-pub const BTRFS_IOC_DEV_INFO: u32 = 3489698846;
-pub const VDUSE_IOTLB_GET_FD: u32 = 3223355664;
-pub const FW_CDEV_IOC_GET_INFO: u32 = 3223855872;
-pub const VIDIOC_G_PRIORITY: u32 = 1074026051;
-pub const ATM_NEWBACKENDIF: u32 = 2147639795;
-pub const VIDIOC_S_EXT_CTRLS: u32 = 3223344712;
-pub const VIDIOC_SUBDEV_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const VIDIOC_OMAP3ISP_CCDC_CFG: u32 = 3224917697;
-pub const VIDIOC_S_HW_FREQ_SEEK: u32 = 2150651474;
-pub const DM_TABLE_LOAD: u32 = 3241737481;
-pub const F2FS_IOC_START_ATOMIC_WRITE: u32 = 536933633;
-pub const VIDIOC_G_OUTPUT: u32 = 1074026030;
-pub const ATM_DROPPARTY: u32 = 2147770869;
-pub const CHIOGELEM: u32 = 2154586896;
-pub const BTRFS_IOC_GET_SUPPORTED_FEATURES: u32 = 1078498361;
-pub const EVIOCSKEYCODE: u32 = 2148025604;
-pub const NE_GET_IMAGE_LOAD_INFO: u32 = 3222318626;
-pub const TUNSETLINK: u32 = 2147767501;
-pub const FW_CDEV_IOC_ADD_DESCRIPTOR: u32 = 3222807302;
-pub const BTRFS_IOC_SCRUB_CANCEL: u32 = 536908828;
-pub const PPS_SETPARAMS: u32 = 2148036770;
-pub const IOC_OPAL_LR_SETUP: u32 = 2166911203;
-pub const FW_CDEV_IOC_DEALLOCATE: u32 = 2147754755;
-pub const WDIOC_SETTIMEOUT: u32 = 3221509894;
-pub const IOC_WATCH_QUEUE_SET_FILTER: u32 = 536893281;
-pub const CAPI_GET_MANUFACTURER: u32 = 3221504774;
-pub const VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY: u32 = 536886134;
-pub const ASPEED_P2A_CTRL_IOCTL_SET_WINDOW: u32 = 2148578048;
-pub const VIDIOC_G_EDID: u32 = 3223868968;
-pub const F2FS_IOC_GARBAGE_COLLECT_RANGE: u32 = 2149119243;
-pub const RIO_MAP_INBOUND: u32 = 3223874833;
-pub const IOC_OPAL_TAKE_OWNERSHIP: u32 = 2164814046;
-pub const USBDEVFS_CLAIM_PORT: u32 = 1074025752;
-pub const VIDIOC_S_AUDIO: u32 = 2150913570;
-pub const FS_IOC_GET_ENCRYPTION_NONCE: u32 = 1074816539;
-pub const FW_CDEV_IOC_SEND_STREAM_PACKET: u32 = 2150114067;
-pub const BTRFS_IOC_SNAP_DESTROY: u32 = 2415957007;
-pub const SNAPSHOT_FREE: u32 = 536883973;
-pub const I8K_GET_SPEED: u32 = 3221776773;
-pub const HIDIOCGREPORT: u32 = 2148288519;
-pub const HPET_EPI: u32 = 536897540;
-pub const JSIOCSCORR: u32 = 2149870113;
-pub const IOC_PR_PREEMPT_ABORT: u32 = 2149085388;
-pub const RIO_MAP_OUTBOUND: u32 = 3223874831;
-pub const ATM_SETESI: u32 = 2148557196;
-pub const FW_CDEV_IOC_START_ISO: u32 = 2148541194;
-pub const ATM_DELADDR: u32 = 2148557193;
-pub const PPFCONTROL: u32 = 2147643534;
-pub const SONYPI_IOCGFAN: u32 = 1073837578;
-pub const RTC_IRQP_SET: u32 = 2148036620;
-pub const PCITEST_WRITE: u32 = 2148028420;
-pub const PPCLAIM: u32 = 536899723;
-pub const VIDIOC_S_JPEGCOMP: u32 = 2156680766;
-pub const IPMICTL_UNREGISTER_FOR_CMD: u32 = 1073899791;
-pub const VHOST_SET_FEATURES: u32 = 2148052736;
-pub const TOSHIBA_ACPI_SCI: u32 = 3222828177;
-pub const VIDIOC_DQBUF: u32 = 3227014673;
-pub const BTRFS_IOC_BALANCE_PROGRESS: u32 = 1140888610;
-pub const BTRFS_IOC_SUBVOL_SETFLAGS: u32 = 2148045850;
-pub const ATMLEC_MCAST: u32 = 536895954;
-pub const MMTIMER_GETFREQ: u32 = 1074294018;
-pub const VIDIOC_G_SELECTION: u32 = 3225441886;
-pub const RTC_ALM_SET: u32 = 2149871623;
-pub const PPPOEIOCSFWD: u32 = 2148053248;
-pub const IPMICTL_GET_MAINTENANCE_MODE_CMD: u32 = 1074030878;
-pub const FS_IOC_ENABLE_VERITY: u32 = 2155898501;
-pub const NILFS_IOCTL_GET_BDESCS: u32 = 3222826631;
-pub const FDFMTEND: u32 = 536871497;
-pub const DMA_BUF_SET_NAME: u32 = 2148033025;
-pub const UI_BEGIN_FF_UPLOAD: u32 = 3228063176;
-pub const RTC_UIE_ON: u32 = 536899587;
-pub const PPRELEASE: u32 = 536899724;
-pub const VFIO_IOMMU_UNMAP_DMA: u32 = 536886130;
-pub const VIDIOC_OMAP3ISP_PRV_CFG: u32 = 3228587714;
-pub const GPIO_GET_LINEHANDLE_IOCTL: u32 = 3245126659;
-pub const VFAT_IOCTL_READDIR_BOTH: u32 = 1110471169;
-pub const NVME_IOCTL_ADMIN_CMD: u32 = 3225964097;
-pub const VHOST_SET_VRING_KICK: u32 = 2148052768;
-pub const BTRFS_IOC_SUBVOL_CREATE_V2: u32 = 2415957016;
-pub const BTRFS_IOC_SNAP_CREATE: u32 = 2415956993;
-pub const SONYPI_IOCGBAT2CAP: u32 = 1073903108;
-pub const PPNEGOT: u32 = 2147774609;
-pub const NBD_PRINT_DEBUG: u32 = 536914694;
-pub const BTRFS_IOC_INO_LOOKUP_USER: u32 = 3489698878;
-pub const BTRFS_IOC_GET_SUBVOL_ROOTREF: u32 = 3489698877;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS: u32 = 3225445913;
-pub const BTRFS_IOC_FS_INFO: u32 = 1140888607;
-pub const VIDIOC_ENUM_FMT: u32 = 3225441794;
-pub const VIDIOC_G_INPUT: u32 = 1074026022;
-pub const VTPM_PROXY_IOC_NEW_DEV: u32 = 3222577408;
-pub const DFL_FPGA_FME_ERR_GET_IRQ_NUM: u32 = 1074050691;
-pub const ND_IOCTL_DIMM_FLAGS: u32 = 3221769731;
-pub const BTRFS_IOC_QUOTA_RESCAN: u32 = 2151715884;
-pub const MMTIMER_GETCOUNTER: u32 = 1074294025;
-pub const MATROXFB_GET_OUTPUT_MODE: u32 = 3221778170;
-pub const BTRFS_IOC_QUOTA_RESCAN_WAIT: u32 = 536908846;
-pub const RIO_CM_CHAN_BIND: u32 = 2148033285;
-pub const HIDIOCGRDESC: u32 = 1342457858;
-pub const MGSL_IOCGIF: u32 = 536898827;
-pub const VIDIOC_S_OUTPUT: u32 = 3221509679;
-pub const HIDIOCGREPORTINFO: u32 = 3222030345;
-pub const WDIOC_GETBOOTSTATUS: u32 = 1074026242;
-pub const VDUSE_VQ_GET_INFO: u32 = 3224404245;
-pub const ACRN_IOCTL_ASSIGN_PCIDEV: u32 = 2149884501;
-pub const BLKGETDISKSEQ: u32 = 1074270848;
-pub const ACRN_IOCTL_PM_GET_CPU_STATE: u32 = 3221791328;
-pub const ACRN_IOCTL_DESTROY_VM: u32 = 536912401;
-pub const ACRN_IOCTL_SET_PTDEV_INTR: u32 = 2148835923;
-pub const ACRN_IOCTL_CREATE_IOREQ_CLIENT: u32 = 536912434;
-pub const ACRN_IOCTL_IRQFD: u32 = 2149098097;
-pub const ACRN_IOCTL_CREATE_VM: u32 = 3224412688;
-pub const ACRN_IOCTL_INJECT_MSI: u32 = 2148573731;
-pub const ACRN_IOCTL_ATTACH_IOREQ_CLIENT: u32 = 536912435;
-pub const ACRN_IOCTL_RESET_PTDEV_INTR: u32 = 2148835924;
-pub const ACRN_IOCTL_NOTIFY_REQUEST_FINISH: u32 = 2148049457;
-pub const ACRN_IOCTL_SET_IRQLINE: u32 = 2148049445;
-pub const ACRN_IOCTL_START_VM: u32 = 536912402;
-pub const ACRN_IOCTL_SET_VCPU_REGS: u32 = 2166923798;
-pub const ACRN_IOCTL_SET_MEMSEG: u32 = 2149622337;
-pub const ACRN_IOCTL_PAUSE_VM: u32 = 536912403;
-pub const ACRN_IOCTL_CLEAR_VM_IOREQ: u32 = 536912437;
-pub const ACRN_IOCTL_UNSET_MEMSEG: u32 = 2149622338;
-pub const ACRN_IOCTL_IOEVENTFD: u32 = 2149622384;
-pub const ACRN_IOCTL_DEASSIGN_PCIDEV: u32 = 2149884502;
-pub const ACRN_IOCTL_RESET_VM: u32 = 536912405;
-pub const ACRN_IOCTL_DESTROY_IOREQ_CLIENT: u32 = 536912436;
-pub const ACRN_IOCTL_VM_INTR_MONITOR: u32 = 2148049444;
diff --git a/vendor/linux-raw-sys-0.3.2/src/powerpc64/netlink.rs b/vendor/linux-raw-sys-0.3.2/src/powerpc64/netlink.rs
deleted file mode 100644
index e7063bb32..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/powerpc64/netlink.rs
+++ /dev/null
@@ -1,2867 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const __BITS_PER_LONG: u32 = 64;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const NETLINK_ROUTE: u32 = 0;
-pub const NETLINK_UNUSED: u32 = 1;
-pub const NETLINK_USERSOCK: u32 = 2;
-pub const NETLINK_FIREWALL: u32 = 3;
-pub const NETLINK_SOCK_DIAG: u32 = 4;
-pub const NETLINK_NFLOG: u32 = 5;
-pub const NETLINK_XFRM: u32 = 6;
-pub const NETLINK_SELINUX: u32 = 7;
-pub const NETLINK_ISCSI: u32 = 8;
-pub const NETLINK_AUDIT: u32 = 9;
-pub const NETLINK_FIB_LOOKUP: u32 = 10;
-pub const NETLINK_CONNECTOR: u32 = 11;
-pub const NETLINK_NETFILTER: u32 = 12;
-pub const NETLINK_IP6_FW: u32 = 13;
-pub const NETLINK_DNRTMSG: u32 = 14;
-pub const NETLINK_KOBJECT_UEVENT: u32 = 15;
-pub const NETLINK_GENERIC: u32 = 16;
-pub const NETLINK_SCSITRANSPORT: u32 = 18;
-pub const NETLINK_ECRYPTFS: u32 = 19;
-pub const NETLINK_RDMA: u32 = 20;
-pub const NETLINK_CRYPTO: u32 = 21;
-pub const NETLINK_SMC: u32 = 22;
-pub const NETLINK_INET_DIAG: u32 = 4;
-pub const MAX_LINKS: u32 = 32;
-pub const NLM_F_REQUEST: u32 = 1;
-pub const NLM_F_MULTI: u32 = 2;
-pub const NLM_F_ACK: u32 = 4;
-pub const NLM_F_ECHO: u32 = 8;
-pub const NLM_F_DUMP_INTR: u32 = 16;
-pub const NLM_F_DUMP_FILTERED: u32 = 32;
-pub const NLM_F_ROOT: u32 = 256;
-pub const NLM_F_MATCH: u32 = 512;
-pub const NLM_F_ATOMIC: u32 = 1024;
-pub const NLM_F_DUMP: u32 = 768;
-pub const NLM_F_REPLACE: u32 = 256;
-pub const NLM_F_EXCL: u32 = 512;
-pub const NLM_F_CREATE: u32 = 1024;
-pub const NLM_F_APPEND: u32 = 2048;
-pub const NLM_F_NONREC: u32 = 256;
-pub const NLM_F_BULK: u32 = 512;
-pub const NLM_F_CAPPED: u32 = 256;
-pub const NLM_F_ACK_TLVS: u32 = 512;
-pub const NLMSG_ALIGNTO: u32 = 4;
-pub const NLMSG_NOOP: u32 = 1;
-pub const NLMSG_ERROR: u32 = 2;
-pub const NLMSG_DONE: u32 = 3;
-pub const NLMSG_OVERRUN: u32 = 4;
-pub const NLMSG_MIN_TYPE: u32 = 16;
-pub const NETLINK_ADD_MEMBERSHIP: u32 = 1;
-pub const NETLINK_DROP_MEMBERSHIP: u32 = 2;
-pub const NETLINK_PKTINFO: u32 = 3;
-pub const NETLINK_BROADCAST_ERROR: u32 = 4;
-pub const NETLINK_NO_ENOBUFS: u32 = 5;
-pub const NETLINK_RX_RING: u32 = 6;
-pub const NETLINK_TX_RING: u32 = 7;
-pub const NETLINK_LISTEN_ALL_NSID: u32 = 8;
-pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9;
-pub const NETLINK_CAP_ACK: u32 = 10;
-pub const NETLINK_EXT_ACK: u32 = 11;
-pub const NETLINK_GET_STRICT_CHK: u32 = 12;
-pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4;
-pub const NET_MAJOR: u32 = 36;
-pub const NLA_F_NESTED: u32 = 32768;
-pub const NLA_F_NET_BYTEORDER: u32 = 16384;
-pub const NLA_TYPE_MASK: i32 = -49153;
-pub const NLA_ALIGNTO: u32 = 4;
-pub const MACVLAN_FLAG_NOPROMISC: u32 = 1;
-pub const MACVLAN_FLAG_NODST: u32 = 2;
-pub const IPVLAN_F_PRIVATE: u32 = 1;
-pub const IPVLAN_F_VEPA: u32 = 2;
-pub const TUNNEL_MSG_FLAG_STATS: u32 = 1;
-pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1;
-pub const MAX_VLAN_LIST_LEN: u32 = 1;
-pub const PORT_PROFILE_MAX: u32 = 40;
-pub const PORT_UUID_MAX: u32 = 16;
-pub const PORT_SELF_VF: i32 = -1;
-pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1;
-pub const XDP_FLAGS_SKB_MODE: u32 = 2;
-pub const XDP_FLAGS_DRV_MODE: u32 = 4;
-pub const XDP_FLAGS_HW_MODE: u32 = 8;
-pub const XDP_FLAGS_REPLACE: u32 = 16;
-pub const XDP_FLAGS_MODES: u32 = 14;
-pub const XDP_FLAGS_MASK: u32 = 31;
-pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1;
-pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32;
-pub const IFA_F_SECONDARY: u32 = 1;
-pub const IFA_F_TEMPORARY: u32 = 1;
-pub const IFA_F_NODAD: u32 = 2;
-pub const IFA_F_OPTIMISTIC: u32 = 4;
-pub const IFA_F_DADFAILED: u32 = 8;
-pub const IFA_F_HOMEADDRESS: u32 = 16;
-pub const IFA_F_DEPRECATED: u32 = 32;
-pub const IFA_F_TENTATIVE: u32 = 64;
-pub const IFA_F_PERMANENT: u32 = 128;
-pub const IFA_F_MANAGETEMPADDR: u32 = 256;
-pub const IFA_F_NOPREFIXROUTE: u32 = 512;
-pub const IFA_F_MCAUTOJOIN: u32 = 1024;
-pub const IFA_F_STABLE_PRIVACY: u32 = 2048;
-pub const IFAPROT_UNSPEC: u32 = 0;
-pub const IFAPROT_KERNEL_LO: u32 = 1;
-pub const IFAPROT_KERNEL_RA: u32 = 2;
-pub const IFAPROT_KERNEL_LL: u32 = 3;
-pub const NTF_USE: u32 = 1;
-pub const NTF_SELF: u32 = 2;
-pub const NTF_MASTER: u32 = 4;
-pub const NTF_PROXY: u32 = 8;
-pub const NTF_EXT_LEARNED: u32 = 16;
-pub const NTF_OFFLOADED: u32 = 32;
-pub const NTF_STICKY: u32 = 64;
-pub const NTF_ROUTER: u32 = 128;
-pub const NTF_EXT_MANAGED: u32 = 1;
-pub const NTF_EXT_LOCKED: u32 = 2;
-pub const NUD_INCOMPLETE: u32 = 1;
-pub const NUD_REACHABLE: u32 = 2;
-pub const NUD_STALE: u32 = 4;
-pub const NUD_DELAY: u32 = 8;
-pub const NUD_PROBE: u32 = 16;
-pub const NUD_FAILED: u32 = 32;
-pub const NUD_NOARP: u32 = 64;
-pub const NUD_PERMANENT: u32 = 128;
-pub const NUD_NONE: u32 = 0;
-pub const RTNL_FAMILY_IPMR: u32 = 128;
-pub const RTNL_FAMILY_IP6MR: u32 = 129;
-pub const RTNL_FAMILY_MAX: u32 = 129;
-pub const RTA_ALIGNTO: u32 = 4;
-pub const RTPROT_UNSPEC: u32 = 0;
-pub const RTPROT_REDIRECT: u32 = 1;
-pub const RTPROT_KERNEL: u32 = 2;
-pub const RTPROT_BOOT: u32 = 3;
-pub const RTPROT_STATIC: u32 = 4;
-pub const RTPROT_GATED: u32 = 8;
-pub const RTPROT_RA: u32 = 9;
-pub const RTPROT_MRT: u32 = 10;
-pub const RTPROT_ZEBRA: u32 = 11;
-pub const RTPROT_BIRD: u32 = 12;
-pub const RTPROT_DNROUTED: u32 = 13;
-pub const RTPROT_XORP: u32 = 14;
-pub const RTPROT_NTK: u32 = 15;
-pub const RTPROT_DHCP: u32 = 16;
-pub const RTPROT_MROUTED: u32 = 17;
-pub const RTPROT_KEEPALIVED: u32 = 18;
-pub const RTPROT_BABEL: u32 = 42;
-pub const RTPROT_OPENR: u32 = 99;
-pub const RTPROT_BGP: u32 = 186;
-pub const RTPROT_ISIS: u32 = 187;
-pub const RTPROT_OSPF: u32 = 188;
-pub const RTPROT_RIP: u32 = 189;
-pub const RTPROT_EIGRP: u32 = 192;
-pub const RTM_F_NOTIFY: u32 = 256;
-pub const RTM_F_CLONED: u32 = 512;
-pub const RTM_F_EQUALIZE: u32 = 1024;
-pub const RTM_F_PREFIX: u32 = 2048;
-pub const RTM_F_LOOKUP_TABLE: u32 = 4096;
-pub const RTM_F_FIB_MATCH: u32 = 8192;
-pub const RTM_F_OFFLOAD: u32 = 16384;
-pub const RTM_F_TRAP: u32 = 32768;
-pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912;
-pub const RTNH_F_DEAD: u32 = 1;
-pub const RTNH_F_PERVASIVE: u32 = 2;
-pub const RTNH_F_ONLINK: u32 = 4;
-pub const RTNH_F_OFFLOAD: u32 = 8;
-pub const RTNH_F_LINKDOWN: u32 = 16;
-pub const RTNH_F_UNRESOLVED: u32 = 32;
-pub const RTNH_F_TRAP: u32 = 64;
-pub const RTNH_COMPARE_MASK: u32 = 89;
-pub const RTNH_ALIGNTO: u32 = 4;
-pub const RTNETLINK_HAVE_PEERINFO: u32 = 1;
-pub const RTAX_FEATURE_ECN: u32 = 1;
-pub const RTAX_FEATURE_SACK: u32 = 2;
-pub const RTAX_FEATURE_TIMESTAMP: u32 = 4;
-pub const RTAX_FEATURE_ALLFRAG: u32 = 8;
-pub const RTAX_FEATURE_MASK: u32 = 15;
-pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295;
-pub const TCA_DUMP_FLAGS_TERSE: u32 = 1;
-pub const RTMGRP_LINK: u32 = 1;
-pub const RTMGRP_NOTIFY: u32 = 2;
-pub const RTMGRP_NEIGH: u32 = 4;
-pub const RTMGRP_TC: u32 = 8;
-pub const RTMGRP_IPV4_IFADDR: u32 = 16;
-pub const RTMGRP_IPV4_MROUTE: u32 = 32;
-pub const RTMGRP_IPV4_ROUTE: u32 = 64;
-pub const RTMGRP_IPV4_RULE: u32 = 128;
-pub const RTMGRP_IPV6_IFADDR: u32 = 256;
-pub const RTMGRP_IPV6_MROUTE: u32 = 512;
-pub const RTMGRP_IPV6_ROUTE: u32 = 1024;
-pub const RTMGRP_IPV6_IFINFO: u32 = 2048;
-pub const RTMGRP_DECnet_IFADDR: u32 = 4096;
-pub const RTMGRP_DECnet_ROUTE: u32 = 16384;
-pub const RTMGRP_IPV6_PREFIX: u32 = 131072;
-pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2;
-pub const RTEXT_FILTER_VF: u32 = 1;
-pub const RTEXT_FILTER_BRVLAN: u32 = 2;
-pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4;
-pub const RTEXT_FILTER_SKIP_STATS: u32 = 8;
-pub const RTEXT_FILTER_MRP: u32 = 16;
-pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32;
-pub const RTEXT_FILTER_CFM_STATUS: u32 = 64;
-pub const RTEXT_FILTER_MST: u32 = 128;
-pub type size_t = crate::ctypes::c_ulong;
-pub type ssize_t = crate::ctypes::c_long;
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_long;
-pub type __u64 = crate::ctypes::c_ulong;
-#[repr(C)]
-#[repr(align(16))]
-#[derive(Debug, Copy, Clone)]
-pub struct __vector128 {
-pub u: [__u32; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 16usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_old_dev_t = crate::ctypes::c_ulong;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_uid_t = __kernel_uid_t;
-pub type __kernel_old_gid_t = __kernel_gid_t;
-pub type __kernel_size_t = __kernel_ulong_t;
-pub type __kernel_ssize_t = __kernel_long_t;
-pub type __kernel_ptrdiff_t = __kernel_long_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_nl {
-pub nl_family: __kernel_sa_family_t,
-pub nl_pad: crate::ctypes::c_ushort,
-pub nl_pid: __u32,
-pub nl_groups: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsghdr {
-pub nlmsg_len: __u32,
-pub nlmsg_type: __u16,
-pub nlmsg_flags: __u16,
-pub nlmsg_seq: __u32,
-pub nlmsg_pid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsgerr {
-pub error: crate::ctypes::c_int,
-pub msg: nlmsghdr,
-}
-impl nlmsgerr_attrs {
-pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nlmsgerr_attrs {
-NLMSGERR_ATTR_UNUSED = 0,
-NLMSGERR_ATTR_MSG = 1,
-NLMSGERR_ATTR_OFFS = 2,
-NLMSGERR_ATTR_COOKIE = 3,
-NLMSGERR_ATTR_POLICY = 4,
-NLMSGERR_ATTR_MISS_TYPE = 5,
-NLMSGERR_ATTR_MISS_NEST = 6,
-__NLMSGERR_ATTR_MAX = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_pktinfo {
-pub group: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_req {
-pub nm_block_size: crate::ctypes::c_uint,
-pub nm_block_nr: crate::ctypes::c_uint,
-pub nm_frame_size: crate::ctypes::c_uint,
-pub nm_frame_nr: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_hdr {
-pub nm_status: crate::ctypes::c_uint,
-pub nm_len: crate::ctypes::c_uint,
-pub nm_group: __u32,
-pub nm_pid: __u32,
-pub nm_uid: __u32,
-pub nm_gid: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nl_mmap_status {
-NL_MMAP_STATUS_UNUSED = 0,
-NL_MMAP_STATUS_RESERVED = 1,
-NL_MMAP_STATUS_VALID = 2,
-NL_MMAP_STATUS_COPY = 3,
-NL_MMAP_STATUS_SKIP = 4,
-}
-pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED;
-pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-NETLINK_UNCONNECTED = 0,
-NETLINK_CONNECTED = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlattr {
-pub nla_len: __u16,
-pub nla_type: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nla_bitfield32 {
-pub value: __u32,
-pub selector: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_attribute_type {
-NL_ATTR_TYPE_INVALID = 0,
-NL_ATTR_TYPE_FLAG = 1,
-NL_ATTR_TYPE_U8 = 2,
-NL_ATTR_TYPE_U16 = 3,
-NL_ATTR_TYPE_U32 = 4,
-NL_ATTR_TYPE_U64 = 5,
-NL_ATTR_TYPE_S8 = 6,
-NL_ATTR_TYPE_S16 = 7,
-NL_ATTR_TYPE_S32 = 8,
-NL_ATTR_TYPE_S64 = 9,
-NL_ATTR_TYPE_BINARY = 10,
-NL_ATTR_TYPE_STRING = 11,
-NL_ATTR_TYPE_NUL_STRING = 12,
-NL_ATTR_TYPE_NESTED = 13,
-NL_ATTR_TYPE_NESTED_ARRAY = 14,
-NL_ATTR_TYPE_BITFIELD32 = 15,
-}
-impl netlink_policy_type_attr {
-pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_policy_type_attr {
-NL_POLICY_TYPE_ATTR_UNSPEC = 0,
-NL_POLICY_TYPE_ATTR_TYPE = 1,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5,
-NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6,
-NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7,
-NL_POLICY_TYPE_ATTR_POLICY_IDX = 8,
-NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9,
-NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10,
-NL_POLICY_TYPE_ATTR_PAD = 11,
-NL_POLICY_TYPE_ATTR_MASK = 12,
-__NL_POLICY_TYPE_ATTR_MAX = 13,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats {
-pub rx_packets: __u32,
-pub tx_packets: __u32,
-pub rx_bytes: __u32,
-pub tx_bytes: __u32,
-pub rx_errors: __u32,
-pub tx_errors: __u32,
-pub rx_dropped: __u32,
-pub tx_dropped: __u32,
-pub multicast: __u32,
-pub collisions: __u32,
-pub rx_length_errors: __u32,
-pub rx_over_errors: __u32,
-pub rx_crc_errors: __u32,
-pub rx_frame_errors: __u32,
-pub rx_fifo_errors: __u32,
-pub rx_missed_errors: __u32,
-pub tx_aborted_errors: __u32,
-pub tx_carrier_errors: __u32,
-pub tx_fifo_errors: __u32,
-pub tx_heartbeat_errors: __u32,
-pub tx_window_errors: __u32,
-pub rx_compressed: __u32,
-pub tx_compressed: __u32,
-pub rx_nohandler: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-pub collisions: __u64,
-pub rx_length_errors: __u64,
-pub rx_over_errors: __u64,
-pub rx_crc_errors: __u64,
-pub rx_frame_errors: __u64,
-pub rx_fifo_errors: __u64,
-pub rx_missed_errors: __u64,
-pub tx_aborted_errors: __u64,
-pub tx_carrier_errors: __u64,
-pub tx_fifo_errors: __u64,
-pub tx_heartbeat_errors: __u64,
-pub tx_window_errors: __u64,
-pub rx_compressed: __u64,
-pub tx_compressed: __u64,
-pub rx_nohandler: __u64,
-pub rx_otherhost_dropped: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_hw_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_ifmap {
-pub mem_start: __u64,
-pub mem_end: __u64,
-pub base_addr: __u64,
-pub irq: __u16,
-pub dma: __u8,
-pub port: __u8,
-}
-pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC;
-pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS;
-pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST;
-pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME;
-pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU;
-pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK;
-pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC;
-pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS;
-pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST;
-pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY;
-pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER;
-pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS;
-pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO;
-pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN;
-pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP;
-pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT;
-pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE;
-pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE;
-pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO;
-pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID;
-pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS;
-pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF;
-pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST;
-pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64;
-pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS;
-pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF;
-pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC;
-pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP;
-pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD;
-pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK;
-pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY;
-pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES;
-pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES;
-pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER;
-pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID;
-pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES;
-pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID;
-pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID;
-pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME;
-pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN;
-pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS;
-pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE;
-pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD;
-pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP;
-pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT;
-pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID;
-pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT;
-pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT;
-pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX;
-pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU;
-pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU;
-pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST;
-pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME;
-pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS;
-pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON;
-pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME;
-pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME;
-pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS;
-pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI;
-pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT;
-pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IFLA_UNSPEC = 0,
-IFLA_ADDRESS = 1,
-IFLA_BROADCAST = 2,
-IFLA_IFNAME = 3,
-IFLA_MTU = 4,
-IFLA_LINK = 5,
-IFLA_QDISC = 6,
-IFLA_STATS = 7,
-IFLA_COST = 8,
-IFLA_PRIORITY = 9,
-IFLA_MASTER = 10,
-IFLA_WIRELESS = 11,
-IFLA_PROTINFO = 12,
-IFLA_TXQLEN = 13,
-IFLA_MAP = 14,
-IFLA_WEIGHT = 15,
-IFLA_OPERSTATE = 16,
-IFLA_LINKMODE = 17,
-IFLA_LINKINFO = 18,
-IFLA_NET_NS_PID = 19,
-IFLA_IFALIAS = 20,
-IFLA_NUM_VF = 21,
-IFLA_VFINFO_LIST = 22,
-IFLA_STATS64 = 23,
-IFLA_VF_PORTS = 24,
-IFLA_PORT_SELF = 25,
-IFLA_AF_SPEC = 26,
-IFLA_GROUP = 27,
-IFLA_NET_NS_FD = 28,
-IFLA_EXT_MASK = 29,
-IFLA_PROMISCUITY = 30,
-IFLA_NUM_TX_QUEUES = 31,
-IFLA_NUM_RX_QUEUES = 32,
-IFLA_CARRIER = 33,
-IFLA_PHYS_PORT_ID = 34,
-IFLA_CARRIER_CHANGES = 35,
-IFLA_PHYS_SWITCH_ID = 36,
-IFLA_LINK_NETNSID = 37,
-IFLA_PHYS_PORT_NAME = 38,
-IFLA_PROTO_DOWN = 39,
-IFLA_GSO_MAX_SEGS = 40,
-IFLA_GSO_MAX_SIZE = 41,
-IFLA_PAD = 42,
-IFLA_XDP = 43,
-IFLA_EVENT = 44,
-IFLA_NEW_NETNSID = 45,
-IFLA_IF_NETNSID = 46,
-IFLA_CARRIER_UP_COUNT = 47,
-IFLA_CARRIER_DOWN_COUNT = 48,
-IFLA_NEW_IFINDEX = 49,
-IFLA_MIN_MTU = 50,
-IFLA_MAX_MTU = 51,
-IFLA_PROP_LIST = 52,
-IFLA_ALT_IFNAME = 53,
-IFLA_PERM_ADDRESS = 54,
-IFLA_PROTO_DOWN_REASON = 55,
-IFLA_PARENT_DEV_NAME = 56,
-IFLA_PARENT_DEV_BUS_NAME = 57,
-IFLA_GRO_MAX_SIZE = 58,
-IFLA_TSO_MAX_SIZE = 59,
-IFLA_TSO_MAX_SEGS = 60,
-IFLA_ALLMULTI = 61,
-IFLA_DEVLINK_PORT = 62,
-__IFLA_MAX = 63,
-}
-pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC;
-pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK;
-pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT;
-pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-IFLA_PROTO_DOWN_REASON_UNSPEC = 0,
-IFLA_PROTO_DOWN_REASON_MASK = 1,
-IFLA_PROTO_DOWN_REASON_VALUE = 2,
-__IFLA_PROTO_DOWN_REASON_CNT = 3,
-}
-pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC;
-pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF;
-pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-IFLA_INET_UNSPEC = 0,
-IFLA_INET_CONF = 1,
-__IFLA_INET_MAX = 2,
-}
-pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC;
-pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS;
-pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF;
-pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS;
-pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST;
-pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO;
-pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS;
-pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN;
-pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE;
-pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU;
-pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-IFLA_INET6_UNSPEC = 0,
-IFLA_INET6_FLAGS = 1,
-IFLA_INET6_CONF = 2,
-IFLA_INET6_STATS = 3,
-IFLA_INET6_MCAST = 4,
-IFLA_INET6_CACHEINFO = 5,
-IFLA_INET6_ICMP6STATS = 6,
-IFLA_INET6_TOKEN = 7,
-IFLA_INET6_ADDR_GEN_MODE = 8,
-IFLA_INET6_RA_MTU = 9,
-__IFLA_INET6_MAX = 10,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum in6_addr_gen_mode {
-IN6_ADDR_GEN_MODE_EUI64 = 0,
-IN6_ADDR_GEN_MODE_NONE = 1,
-IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2,
-IN6_ADDR_GEN_MODE_RANDOM = 3,
-}
-pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC;
-pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY;
-pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME;
-pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE;
-pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME;
-pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE;
-pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY;
-pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING;
-pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL;
-pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK;
-pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID;
-pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID;
-pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT;
-pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST;
-pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE;
-pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED;
-pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER;
-pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER;
-pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER;
-pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER;
-pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR;
-pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH;
-pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER;
-pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING;
-pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR;
-pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER;
-pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY;
-pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX;
-pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT;
-pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL;
-pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL;
-pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL;
-pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL;
-pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL;
-pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES;
-pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES;
-pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES;
-pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID;
-pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD;
-pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED;
-pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED;
-pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION;
-pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION;
-pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT;
-pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT;
-pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE;
-pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-IFLA_BR_UNSPEC = 0,
-IFLA_BR_FORWARD_DELAY = 1,
-IFLA_BR_HELLO_TIME = 2,
-IFLA_BR_MAX_AGE = 3,
-IFLA_BR_AGEING_TIME = 4,
-IFLA_BR_STP_STATE = 5,
-IFLA_BR_PRIORITY = 6,
-IFLA_BR_VLAN_FILTERING = 7,
-IFLA_BR_VLAN_PROTOCOL = 8,
-IFLA_BR_GROUP_FWD_MASK = 9,
-IFLA_BR_ROOT_ID = 10,
-IFLA_BR_BRIDGE_ID = 11,
-IFLA_BR_ROOT_PORT = 12,
-IFLA_BR_ROOT_PATH_COST = 13,
-IFLA_BR_TOPOLOGY_CHANGE = 14,
-IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 15,
-IFLA_BR_HELLO_TIMER = 16,
-IFLA_BR_TCN_TIMER = 17,
-IFLA_BR_TOPOLOGY_CHANGE_TIMER = 18,
-IFLA_BR_GC_TIMER = 19,
-IFLA_BR_GROUP_ADDR = 20,
-IFLA_BR_FDB_FLUSH = 21,
-IFLA_BR_MCAST_ROUTER = 22,
-IFLA_BR_MCAST_SNOOPING = 23,
-IFLA_BR_MCAST_QUERY_USE_IFADDR = 24,
-IFLA_BR_MCAST_QUERIER = 25,
-IFLA_BR_MCAST_HASH_ELASTICITY = 26,
-IFLA_BR_MCAST_HASH_MAX = 27,
-IFLA_BR_MCAST_LAST_MEMBER_CNT = 28,
-IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29,
-IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30,
-IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31,
-IFLA_BR_MCAST_QUERIER_INTVL = 32,
-IFLA_BR_MCAST_QUERY_INTVL = 33,
-IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34,
-IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35,
-IFLA_BR_NF_CALL_IPTABLES = 36,
-IFLA_BR_NF_CALL_IP6TABLES = 37,
-IFLA_BR_NF_CALL_ARPTABLES = 38,
-IFLA_BR_VLAN_DEFAULT_PVID = 39,
-IFLA_BR_PAD = 40,
-IFLA_BR_VLAN_STATS_ENABLED = 41,
-IFLA_BR_MCAST_STATS_ENABLED = 42,
-IFLA_BR_MCAST_IGMP_VERSION = 43,
-IFLA_BR_MCAST_MLD_VERSION = 44,
-IFLA_BR_VLAN_STATS_PER_PORT = 45,
-IFLA_BR_MULTI_BOOLOPT = 46,
-IFLA_BR_MCAST_QUERIER_STATE = 47,
-__IFLA_BR_MAX = 48,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_bridge_id {
-pub prio: [__u8; 2usize],
-pub addr: [__u8; 6usize],
-}
-pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC;
-pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-BRIDGE_MODE_UNSPEC = 0,
-BRIDGE_MODE_HAIRPIN = 1,
-}
-pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC;
-pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE;
-pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY;
-pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST;
-pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE;
-pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD;
-pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT;
-pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE;
-pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING;
-pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD;
-pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP;
-pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC;
-pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI;
-pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID;
-pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID;
-pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT;
-pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST;
-pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID;
-pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO;
-pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK;
-pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING;
-pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER;
-pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER;
-pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER;
-pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH;
-pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER;
-pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD;
-pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD;
-pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST;
-pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL;
-pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD;
-pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK;
-pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS;
-pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED;
-pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT;
-pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN;
-pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT;
-pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED;
-pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB;
-pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IFLA_BRPORT_UNSPEC = 0,
-IFLA_BRPORT_STATE = 1,
-IFLA_BRPORT_PRIORITY = 2,
-IFLA_BRPORT_COST = 3,
-IFLA_BRPORT_MODE = 4,
-IFLA_BRPORT_GUARD = 5,
-IFLA_BRPORT_PROTECT = 6,
-IFLA_BRPORT_FAST_LEAVE = 7,
-IFLA_BRPORT_LEARNING = 8,
-IFLA_BRPORT_UNICAST_FLOOD = 9,
-IFLA_BRPORT_PROXYARP = 10,
-IFLA_BRPORT_LEARNING_SYNC = 11,
-IFLA_BRPORT_PROXYARP_WIFI = 12,
-IFLA_BRPORT_ROOT_ID = 13,
-IFLA_BRPORT_BRIDGE_ID = 14,
-IFLA_BRPORT_DESIGNATED_PORT = 15,
-IFLA_BRPORT_DESIGNATED_COST = 16,
-IFLA_BRPORT_ID = 17,
-IFLA_BRPORT_NO = 18,
-IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 19,
-IFLA_BRPORT_CONFIG_PENDING = 20,
-IFLA_BRPORT_MESSAGE_AGE_TIMER = 21,
-IFLA_BRPORT_FORWARD_DELAY_TIMER = 22,
-IFLA_BRPORT_HOLD_TIMER = 23,
-IFLA_BRPORT_FLUSH = 24,
-IFLA_BRPORT_MULTICAST_ROUTER = 25,
-IFLA_BRPORT_PAD = 26,
-IFLA_BRPORT_MCAST_FLOOD = 27,
-IFLA_BRPORT_MCAST_TO_UCAST = 28,
-IFLA_BRPORT_VLAN_TUNNEL = 29,
-IFLA_BRPORT_BCAST_FLOOD = 30,
-IFLA_BRPORT_GROUP_FWD_MASK = 31,
-IFLA_BRPORT_NEIGH_SUPPRESS = 32,
-IFLA_BRPORT_ISOLATED = 33,
-IFLA_BRPORT_BACKUP_PORT = 34,
-IFLA_BRPORT_MRP_RING_OPEN = 35,
-IFLA_BRPORT_MRP_IN_OPEN = 36,
-IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 37,
-IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 38,
-IFLA_BRPORT_LOCKED = 39,
-IFLA_BRPORT_MAB = 40,
-__IFLA_BRPORT_MAX = 41,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_cacheinfo {
-pub max_reasm_len: __u32,
-pub tstamp: __u32,
-pub reachable_time: __u32,
-pub retrans_time: __u32,
-}
-pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC;
-pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND;
-pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA;
-pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS;
-pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND;
-pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA;
-pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IFLA_INFO_UNSPEC = 0,
-IFLA_INFO_KIND = 1,
-IFLA_INFO_DATA = 2,
-IFLA_INFO_XSTATS = 3,
-IFLA_INFO_SLAVE_KIND = 4,
-IFLA_INFO_SLAVE_DATA = 5,
-__IFLA_INFO_MAX = 6,
-}
-pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC;
-pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID;
-pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS;
-pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS;
-pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS;
-pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL;
-pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IFLA_VLAN_UNSPEC = 0,
-IFLA_VLAN_ID = 1,
-IFLA_VLAN_FLAGS = 2,
-IFLA_VLAN_EGRESS_QOS = 3,
-IFLA_VLAN_INGRESS_QOS = 4,
-IFLA_VLAN_PROTOCOL = 5,
-__IFLA_VLAN_MAX = 6,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC;
-pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING;
-pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IFLA_VLAN_QOS_UNSPEC = 0,
-IFLA_VLAN_QOS_MAPPING = 1,
-__IFLA_VLAN_QOS_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_qos_mapping {
-pub from: __u32,
-pub to: __u32,
-}
-pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC;
-pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE;
-pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS;
-pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE;
-pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR;
-pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA;
-pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED;
-pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IFLA_MACVLAN_UNSPEC = 0,
-IFLA_MACVLAN_MODE = 1,
-IFLA_MACVLAN_FLAGS = 2,
-IFLA_MACVLAN_MACADDR_MODE = 3,
-IFLA_MACVLAN_MACADDR = 4,
-IFLA_MACVLAN_MACADDR_DATA = 5,
-IFLA_MACVLAN_MACADDR_COUNT = 6,
-IFLA_MACVLAN_BC_QUEUE_LEN = 7,
-IFLA_MACVLAN_BC_QUEUE_LEN_USED = 8,
-__IFLA_MACVLAN_MAX = 9,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_mode {
-MACVLAN_MODE_PRIVATE = 1,
-MACVLAN_MODE_VEPA = 2,
-MACVLAN_MODE_BRIDGE = 4,
-MACVLAN_MODE_PASSTHRU = 8,
-MACVLAN_MODE_SOURCE = 16,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_macaddr_mode {
-MACVLAN_MACADDR_ADD = 0,
-MACVLAN_MACADDR_DEL = 1,
-MACVLAN_MACADDR_FLUSH = 2,
-MACVLAN_MACADDR_SET = 3,
-}
-pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC;
-pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE;
-pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_13 {
-IFLA_VRF_UNSPEC = 0,
-IFLA_VRF_TABLE = 1,
-__IFLA_VRF_MAX = 2,
-}
-pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC;
-pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE;
-pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_14 {
-IFLA_VRF_PORT_UNSPEC = 0,
-IFLA_VRF_PORT_TABLE = 1,
-__IFLA_VRF_PORT_MAX = 2,
-}
-pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC;
-pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI;
-pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT;
-pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN;
-pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE;
-pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW;
-pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA;
-pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT;
-pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT;
-pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI;
-pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES;
-pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB;
-pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT;
-pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION;
-pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD;
-pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD;
-pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_15 {
-IFLA_MACSEC_UNSPEC = 0,
-IFLA_MACSEC_SCI = 1,
-IFLA_MACSEC_PORT = 2,
-IFLA_MACSEC_ICV_LEN = 3,
-IFLA_MACSEC_CIPHER_SUITE = 4,
-IFLA_MACSEC_WINDOW = 5,
-IFLA_MACSEC_ENCODING_SA = 6,
-IFLA_MACSEC_ENCRYPT = 7,
-IFLA_MACSEC_PROTECT = 8,
-IFLA_MACSEC_INC_SCI = 9,
-IFLA_MACSEC_ES = 10,
-IFLA_MACSEC_SCB = 11,
-IFLA_MACSEC_REPLAY_PROTECT = 12,
-IFLA_MACSEC_VALIDATION = 13,
-IFLA_MACSEC_PAD = 14,
-IFLA_MACSEC_OFFLOAD = 15,
-__IFLA_MACSEC_MAX = 16,
-}
-pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC;
-pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK;
-pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID;
-pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA;
-pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_16 {
-IFLA_XFRM_UNSPEC = 0,
-IFLA_XFRM_LINK = 1,
-IFLA_XFRM_IF_ID = 2,
-IFLA_XFRM_COLLECT_METADATA = 3,
-__IFLA_XFRM_MAX = 4,
-}
-impl macsec_validation_type {
-pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_validation_type {
-MACSEC_VALIDATE_DISABLED = 0,
-MACSEC_VALIDATE_CHECK = 1,
-MACSEC_VALIDATE_STRICT = 2,
-__MACSEC_VALIDATE_END = 3,
-}
-impl macsec_offload {
-pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_offload {
-MACSEC_OFFLOAD_OFF = 0,
-MACSEC_OFFLOAD_PHY = 1,
-MACSEC_OFFLOAD_MAC = 2,
-__MACSEC_OFFLOAD_END = 3,
-}
-pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC;
-pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE;
-pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS;
-pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_17 {
-IFLA_IPVLAN_UNSPEC = 0,
-IFLA_IPVLAN_MODE = 1,
-IFLA_IPVLAN_FLAGS = 2,
-__IFLA_IPVLAN_MAX = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ipvlan_mode {
-IPVLAN_MODE_L2 = 0,
-IPVLAN_MODE_L3 = 1,
-IPVLAN_MODE_L3S = 2,
-IPVLAN_MODE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tunnel_msg {
-pub family: __u8,
-pub flags: __u8,
-pub reserved2: __u16,
-pub ifindex: __u32,
-}
-pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC;
-pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD;
-pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_18 {
-VNIFILTER_ENTRY_STATS_UNSPEC = 0,
-VNIFILTER_ENTRY_STATS_RX_BYTES = 1,
-VNIFILTER_ENTRY_STATS_RX_PKTS = 2,
-VNIFILTER_ENTRY_STATS_RX_DROPS = 3,
-VNIFILTER_ENTRY_STATS_RX_ERRORS = 4,
-VNIFILTER_ENTRY_STATS_TX_BYTES = 5,
-VNIFILTER_ENTRY_STATS_TX_PKTS = 6,
-VNIFILTER_ENTRY_STATS_TX_DROPS = 7,
-VNIFILTER_ENTRY_STATS_TX_ERRORS = 8,
-VNIFILTER_ENTRY_STATS_PAD = 9,
-__VNIFILTER_ENTRY_STATS_MAX = 10,
-}
-pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START;
-pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6;
-pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS;
-pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_19 {
-VXLAN_VNIFILTER_ENTRY_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY_START = 1,
-VXLAN_VNIFILTER_ENTRY_END = 2,
-VXLAN_VNIFILTER_ENTRY_GROUP = 3,
-VXLAN_VNIFILTER_ENTRY_GROUP6 = 4,
-VXLAN_VNIFILTER_ENTRY_STATS = 5,
-__VXLAN_VNIFILTER_ENTRY_MAX = 6,
-}
-pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY;
-pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_20 {
-VXLAN_VNIFILTER_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY = 1,
-__VXLAN_VNIFILTER_MAX = 2,
-}
-pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC;
-pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID;
-pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP;
-pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK;
-pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL;
-pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL;
-pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS;
-pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING;
-pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING;
-pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT;
-pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE;
-pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY;
-pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC;
-pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS;
-pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS;
-pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT;
-pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6;
-pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6;
-pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX;
-pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX;
-pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX;
-pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP;
-pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL;
-pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA;
-pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL;
-pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE;
-pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT;
-pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF;
-pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER;
-pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_21 {
-IFLA_VXLAN_UNSPEC = 0,
-IFLA_VXLAN_ID = 1,
-IFLA_VXLAN_GROUP = 2,
-IFLA_VXLAN_LINK = 3,
-IFLA_VXLAN_LOCAL = 4,
-IFLA_VXLAN_TTL = 5,
-IFLA_VXLAN_TOS = 6,
-IFLA_VXLAN_LEARNING = 7,
-IFLA_VXLAN_AGEING = 8,
-IFLA_VXLAN_LIMIT = 9,
-IFLA_VXLAN_PORT_RANGE = 10,
-IFLA_VXLAN_PROXY = 11,
-IFLA_VXLAN_RSC = 12,
-IFLA_VXLAN_L2MISS = 13,
-IFLA_VXLAN_L3MISS = 14,
-IFLA_VXLAN_PORT = 15,
-IFLA_VXLAN_GROUP6 = 16,
-IFLA_VXLAN_LOCAL6 = 17,
-IFLA_VXLAN_UDP_CSUM = 18,
-IFLA_VXLAN_UDP_ZERO_CSUM6_TX = 19,
-IFLA_VXLAN_UDP_ZERO_CSUM6_RX = 20,
-IFLA_VXLAN_REMCSUM_TX = 21,
-IFLA_VXLAN_REMCSUM_RX = 22,
-IFLA_VXLAN_GBP = 23,
-IFLA_VXLAN_REMCSUM_NOPARTIAL = 24,
-IFLA_VXLAN_COLLECT_METADATA = 25,
-IFLA_VXLAN_LABEL = 26,
-IFLA_VXLAN_GPE = 27,
-IFLA_VXLAN_TTL_INHERIT = 28,
-IFLA_VXLAN_DF = 29,
-IFLA_VXLAN_VNIFILTER = 30,
-__IFLA_VXLAN_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vxlan_port_range {
-pub low: __be16,
-pub high: __be16,
-}
-impl ifla_vxlan_df {
-pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_vxlan_df {
-VXLAN_DF_UNSET = 0,
-VXLAN_DF_SET = 1,
-VXLAN_DF_INHERIT = 2,
-__VXLAN_DF_END = 3,
-}
-pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC;
-pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID;
-pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE;
-pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL;
-pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS;
-pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT;
-pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA;
-pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6;
-pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX;
-pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL;
-pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT;
-pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF;
-pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT;
-pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_22 {
-IFLA_GENEVE_UNSPEC = 0,
-IFLA_GENEVE_ID = 1,
-IFLA_GENEVE_REMOTE = 2,
-IFLA_GENEVE_TTL = 3,
-IFLA_GENEVE_TOS = 4,
-IFLA_GENEVE_PORT = 5,
-IFLA_GENEVE_COLLECT_METADATA = 6,
-IFLA_GENEVE_REMOTE6 = 7,
-IFLA_GENEVE_UDP_CSUM = 8,
-IFLA_GENEVE_UDP_ZERO_CSUM6_TX = 9,
-IFLA_GENEVE_UDP_ZERO_CSUM6_RX = 10,
-IFLA_GENEVE_LABEL = 11,
-IFLA_GENEVE_TTL_INHERIT = 12,
-IFLA_GENEVE_DF = 13,
-IFLA_GENEVE_INNER_PROTO_INHERIT = 14,
-__IFLA_GENEVE_MAX = 15,
-}
-impl ifla_geneve_df {
-pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_geneve_df {
-GENEVE_DF_UNSET = 0,
-GENEVE_DF_SET = 1,
-GENEVE_DF_INHERIT = 2,
-__GENEVE_DF_END = 3,
-}
-pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC;
-pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT;
-pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE;
-pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN;
-pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE;
-pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_23 {
-IFLA_BAREUDP_UNSPEC = 0,
-IFLA_BAREUDP_PORT = 1,
-IFLA_BAREUDP_ETHERTYPE = 2,
-IFLA_BAREUDP_SRCPORT_MIN = 3,
-IFLA_BAREUDP_MULTIPROTO_MODE = 4,
-__IFLA_BAREUDP_MAX = 5,
-}
-pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC;
-pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD;
-pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_24 {
-IFLA_PPP_UNSPEC = 0,
-IFLA_PPP_DEV_FD = 1,
-__IFLA_PPP_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_gtp_role {
-GTP_ROLE_GGSN = 0,
-GTP_ROLE_SGSN = 1,
-}
-pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC;
-pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0;
-pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1;
-pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE;
-pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE;
-pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS;
-pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT;
-pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_25 {
-IFLA_GTP_UNSPEC = 0,
-IFLA_GTP_FD0 = 1,
-IFLA_GTP_FD1 = 2,
-IFLA_GTP_PDP_HASHSIZE = 3,
-IFLA_GTP_ROLE = 4,
-IFLA_GTP_CREATE_SOCKETS = 5,
-IFLA_GTP_RESTART_COUNT = 6,
-__IFLA_GTP_MAX = 7,
-}
-pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC;
-pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE;
-pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE;
-pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON;
-pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY;
-pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY;
-pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER;
-pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL;
-pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET;
-pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE;
-pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS;
-pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY;
-pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT;
-pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC;
-pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY;
-pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP;
-pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF;
-pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE;
-pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS;
-pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL;
-pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE;
-pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE;
-pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT;
-pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO;
-pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO;
-pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY;
-pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM;
-pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB;
-pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY;
-pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE;
-pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX;
-pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET;
-pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_26 {
-IFLA_BOND_UNSPEC = 0,
-IFLA_BOND_MODE = 1,
-IFLA_BOND_ACTIVE_SLAVE = 2,
-IFLA_BOND_MIIMON = 3,
-IFLA_BOND_UPDELAY = 4,
-IFLA_BOND_DOWNDELAY = 5,
-IFLA_BOND_USE_CARRIER = 6,
-IFLA_BOND_ARP_INTERVAL = 7,
-IFLA_BOND_ARP_IP_TARGET = 8,
-IFLA_BOND_ARP_VALIDATE = 9,
-IFLA_BOND_ARP_ALL_TARGETS = 10,
-IFLA_BOND_PRIMARY = 11,
-IFLA_BOND_PRIMARY_RESELECT = 12,
-IFLA_BOND_FAIL_OVER_MAC = 13,
-IFLA_BOND_XMIT_HASH_POLICY = 14,
-IFLA_BOND_RESEND_IGMP = 15,
-IFLA_BOND_NUM_PEER_NOTIF = 16,
-IFLA_BOND_ALL_SLAVES_ACTIVE = 17,
-IFLA_BOND_MIN_LINKS = 18,
-IFLA_BOND_LP_INTERVAL = 19,
-IFLA_BOND_PACKETS_PER_SLAVE = 20,
-IFLA_BOND_AD_LACP_RATE = 21,
-IFLA_BOND_AD_SELECT = 22,
-IFLA_BOND_AD_INFO = 23,
-IFLA_BOND_AD_ACTOR_SYS_PRIO = 24,
-IFLA_BOND_AD_USER_PORT_KEY = 25,
-IFLA_BOND_AD_ACTOR_SYSTEM = 26,
-IFLA_BOND_TLB_DYNAMIC_LB = 27,
-IFLA_BOND_PEER_NOTIF_DELAY = 28,
-IFLA_BOND_AD_LACP_ACTIVE = 29,
-IFLA_BOND_MISSED_MAX = 30,
-IFLA_BOND_NS_IP6_TARGET = 31,
-__IFLA_BOND_MAX = 32,
-}
-pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC;
-pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR;
-pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS;
-pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC;
-pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_27 {
-IFLA_BOND_AD_INFO_UNSPEC = 0,
-IFLA_BOND_AD_INFO_AGGREGATOR = 1,
-IFLA_BOND_AD_INFO_NUM_PORTS = 2,
-IFLA_BOND_AD_INFO_ACTOR_KEY = 3,
-IFLA_BOND_AD_INFO_PARTNER_KEY = 4,
-IFLA_BOND_AD_INFO_PARTNER_MAC = 5,
-__IFLA_BOND_AD_INFO_MAX = 6,
-}
-pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC;
-pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE;
-pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS;
-pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT;
-pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR;
-pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID;
-pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID;
-pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO;
-pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_28 {
-IFLA_BOND_SLAVE_UNSPEC = 0,
-IFLA_BOND_SLAVE_STATE = 1,
-IFLA_BOND_SLAVE_MII_STATUS = 2,
-IFLA_BOND_SLAVE_LINK_FAILURE_COUNT = 3,
-IFLA_BOND_SLAVE_PERM_HWADDR = 4,
-IFLA_BOND_SLAVE_QUEUE_ID = 5,
-IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 6,
-IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 7,
-IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 8,
-IFLA_BOND_SLAVE_PRIO = 9,
-__IFLA_BOND_SLAVE_MAX = 10,
-}
-pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC;
-pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO;
-pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_29 {
-IFLA_VF_INFO_UNSPEC = 0,
-IFLA_VF_INFO = 1,
-__IFLA_VF_INFO_MAX = 2,
-}
-pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC;
-pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC;
-pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN;
-pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE;
-pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK;
-pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE;
-pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE;
-pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN;
-pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS;
-pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST;
-pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID;
-pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID;
-pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST;
-pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST;
-pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_30 {
-IFLA_VF_UNSPEC = 0,
-IFLA_VF_MAC = 1,
-IFLA_VF_VLAN = 2,
-IFLA_VF_TX_RATE = 3,
-IFLA_VF_SPOOFCHK = 4,
-IFLA_VF_LINK_STATE = 5,
-IFLA_VF_RATE = 6,
-IFLA_VF_RSS_QUERY_EN = 7,
-IFLA_VF_STATS = 8,
-IFLA_VF_TRUST = 9,
-IFLA_VF_IB_NODE_GUID = 10,
-IFLA_VF_IB_PORT_GUID = 11,
-IFLA_VF_VLAN_LIST = 12,
-IFLA_VF_BROADCAST = 13,
-__IFLA_VF_MAX = 14,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_mac {
-pub vf: __u32,
-pub mac: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_broadcast {
-pub broadcast: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-}
-pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC;
-pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO;
-pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_31 {
-IFLA_VF_VLAN_INFO_UNSPEC = 0,
-IFLA_VF_VLAN_INFO = 1,
-__IFLA_VF_VLAN_INFO_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan_info {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-pub vlan_proto: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_tx_rate {
-pub vf: __u32,
-pub rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rate {
-pub vf: __u32,
-pub min_tx_rate: __u32,
-pub max_tx_rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_spoofchk {
-pub vf: __u32,
-pub setting: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_guid {
-pub vf: __u32,
-pub guid: __u64,
-}
-pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO;
-pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE;
-pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE;
-pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_32 {
-IFLA_VF_LINK_STATE_AUTO = 0,
-IFLA_VF_LINK_STATE_ENABLE = 1,
-IFLA_VF_LINK_STATE_DISABLE = 2,
-__IFLA_VF_LINK_STATE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_link_state {
-pub vf: __u32,
-pub link_state: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rss_query_en {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS;
-pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS;
-pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES;
-pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES;
-pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST;
-pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST;
-pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD;
-pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED;
-pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED;
-pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_33 {
-IFLA_VF_STATS_RX_PACKETS = 0,
-IFLA_VF_STATS_TX_PACKETS = 1,
-IFLA_VF_STATS_RX_BYTES = 2,
-IFLA_VF_STATS_TX_BYTES = 3,
-IFLA_VF_STATS_BROADCAST = 4,
-IFLA_VF_STATS_MULTICAST = 5,
-IFLA_VF_STATS_PAD = 6,
-IFLA_VF_STATS_RX_DROPPED = 7,
-IFLA_VF_STATS_TX_DROPPED = 8,
-__IFLA_VF_STATS_MAX = 9,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_trust {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC;
-pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT;
-pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_34 {
-IFLA_VF_PORT_UNSPEC = 0,
-IFLA_VF_PORT = 1,
-__IFLA_VF_PORT_MAX = 2,
-}
-pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC;
-pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF;
-pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE;
-pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE;
-pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID;
-pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID;
-pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST;
-pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE;
-pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_35 {
-IFLA_PORT_UNSPEC = 0,
-IFLA_PORT_VF = 1,
-IFLA_PORT_PROFILE = 2,
-IFLA_PORT_VSI_TYPE = 3,
-IFLA_PORT_INSTANCE_UUID = 4,
-IFLA_PORT_HOST_UUID = 5,
-IFLA_PORT_REQUEST = 6,
-IFLA_PORT_RESPONSE = 7,
-__IFLA_PORT_MAX = 8,
-}
-pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE;
-pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR;
-pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE;
-pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_36 {
-PORT_REQUEST_PREASSOCIATE = 0,
-PORT_REQUEST_PREASSOCIATE_RR = 1,
-PORT_REQUEST_ASSOCIATE = 2,
-PORT_REQUEST_DISASSOCIATE = 3,
-}
-pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS;
-pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT;
-pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID;
-pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION;
-pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION;
-pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC;
-pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS;
-pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS;
-pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID;
-pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE;
-pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_37 {
-PORT_VDP_RESPONSE_SUCCESS = 0,
-PORT_VDP_RESPONSE_INVALID_FORMAT = 1,
-PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES = 2,
-PORT_VDP_RESPONSE_UNUSED_VTID = 3,
-PORT_VDP_RESPONSE_VTID_VIOLATION = 4,
-PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION = 5,
-PORT_VDP_RESPONSE_OUT_OF_SYNC = 6,
-PORT_PROFILE_RESPONSE_SUCCESS = 256,
-PORT_PROFILE_RESPONSE_INPROGRESS = 257,
-PORT_PROFILE_RESPONSE_INVALID = 258,
-PORT_PROFILE_RESPONSE_BADSTATE = 259,
-PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260,
-PORT_PROFILE_RESPONSE_ERROR = 261,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_port_vsi {
-pub vsi_mgr_id: __u8,
-pub vsi_type_id: [__u8; 3usize],
-pub vsi_type_version: __u8,
-pub pad: [__u8; 3usize],
-}
-pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC;
-pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY;
-pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE;
-pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST;
-pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_38 {
-IFLA_IPOIB_UNSPEC = 0,
-IFLA_IPOIB_PKEY = 1,
-IFLA_IPOIB_MODE = 2,
-IFLA_IPOIB_UMCAST = 3,
-__IFLA_IPOIB_MAX = 4,
-}
-pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM;
-pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_39 {
-IPOIB_MODE_DATAGRAM = 0,
-IPOIB_MODE_CONNECTED = 1,
-}
-pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR;
-pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP;
-pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_40 {
-HSR_PROTOCOL_HSR = 0,
-HSR_PROTOCOL_PRP = 1,
-HSR_PROTOCOL_MAX = 2,
-}
-pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC;
-pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1;
-pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2;
-pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC;
-pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR;
-pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR;
-pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION;
-pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL;
-pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_41 {
-IFLA_HSR_UNSPEC = 0,
-IFLA_HSR_SLAVE1 = 1,
-IFLA_HSR_SLAVE2 = 2,
-IFLA_HSR_MULTICAST_SPEC = 3,
-IFLA_HSR_SUPERVISION_ADDR = 4,
-IFLA_HSR_SEQ_NR = 5,
-IFLA_HSR_VERSION = 6,
-IFLA_HSR_PROTOCOL = 7,
-__IFLA_HSR_MAX = 8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct if_stats_msg {
-pub family: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub ifindex: __u32,
-pub filter_mask: __u32,
-}
-pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC;
-pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64;
-pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS;
-pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE;
-pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS;
-pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC;
-pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_42 {
-IFLA_STATS_UNSPEC = 0,
-IFLA_STATS_LINK_64 = 1,
-IFLA_STATS_LINK_XSTATS = 2,
-IFLA_STATS_LINK_XSTATS_SLAVE = 3,
-IFLA_STATS_LINK_OFFLOAD_XSTATS = 4,
-IFLA_STATS_AF_SPEC = 5,
-__IFLA_STATS_MAX = 6,
-}
-pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC;
-pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS;
-pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_43 {
-IFLA_STATS_GETSET_UNSPEC = 0,
-IFLA_STATS_GET_FILTERS = 1,
-IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2,
-__IFLA_STATS_GETSET_MAX = 3,
-}
-pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC;
-pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE;
-pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND;
-pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_44 {
-LINK_XSTATS_TYPE_UNSPEC = 0,
-LINK_XSTATS_TYPE_BRIDGE = 1,
-LINK_XSTATS_TYPE_BOND = 2,
-__LINK_XSTATS_TYPE_MAX = 3,
-}
-pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO;
-pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_45 {
-IFLA_OFFLOAD_XSTATS_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_CPU_HIT = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO = 2,
-IFLA_OFFLOAD_XSTATS_L3_STATS = 3,
-__IFLA_OFFLOAD_XSTATS_MAX = 4,
-}
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED;
-pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_46 {
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2,
-__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3,
-}
-pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE;
-pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV;
-pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB;
-pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW;
-pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_47 {
-XDP_ATTACHED_NONE = 0,
-XDP_ATTACHED_DRV = 1,
-XDP_ATTACHED_SKB = 2,
-XDP_ATTACHED_HW = 3,
-XDP_ATTACHED_MULTI = 4,
-}
-pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC;
-pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD;
-pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED;
-pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS;
-pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID;
-pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID;
-pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID;
-pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID;
-pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD;
-pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_48 {
-IFLA_XDP_UNSPEC = 0,
-IFLA_XDP_FD = 1,
-IFLA_XDP_ATTACHED = 2,
-IFLA_XDP_FLAGS = 3,
-IFLA_XDP_PROG_ID = 4,
-IFLA_XDP_DRV_PROG_ID = 5,
-IFLA_XDP_SKB_PROG_ID = 6,
-IFLA_XDP_HW_PROG_ID = 7,
-IFLA_XDP_EXPECTED_FD = 8,
-__IFLA_XDP_MAX = 9,
-}
-pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE;
-pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT;
-pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES;
-pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER;
-pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS;
-pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND;
-pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_49 {
-IFLA_EVENT_NONE = 0,
-IFLA_EVENT_REBOOT = 1,
-IFLA_EVENT_FEATURES = 2,
-IFLA_EVENT_BONDING_FAILOVER = 3,
-IFLA_EVENT_NOTIFY_PEERS = 4,
-IFLA_EVENT_IGMP_RESEND = 5,
-IFLA_EVENT_BONDING_OPTIONS = 6,
-}
-pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC;
-pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER;
-pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP;
-pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE;
-pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI;
-pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR;
-pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST;
-pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE;
-pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES;
-pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES;
-pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_50 {
-IFLA_TUN_UNSPEC = 0,
-IFLA_TUN_OWNER = 1,
-IFLA_TUN_GROUP = 2,
-IFLA_TUN_TYPE = 3,
-IFLA_TUN_PI = 4,
-IFLA_TUN_VNET_HDR = 5,
-IFLA_TUN_PERSIST = 6,
-IFLA_TUN_MULTI_QUEUE = 7,
-IFLA_TUN_NUM_QUEUES = 8,
-IFLA_TUN_NUM_DISABLED_QUEUES = 9,
-__IFLA_TUN_MAX = 10,
-}
-pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC;
-pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID;
-pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS;
-pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_51 {
-IFLA_RMNET_UNSPEC = 0,
-IFLA_RMNET_MUX_ID = 1,
-IFLA_RMNET_FLAGS = 2,
-__IFLA_RMNET_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_rmnet_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC;
-pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET;
-pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_52 {
-IFLA_MCTP_UNSPEC = 0,
-IFLA_MCTP_NET = 1,
-__IFLA_MCTP_MAX = 2,
-}
-pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC;
-pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER;
-pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_53 {
-IFLA_DSA_UNSPEC = 0,
-IFLA_DSA_MASTER = 1,
-__IFLA_DSA_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifaddrmsg {
-pub ifa_family: __u8,
-pub ifa_prefixlen: __u8,
-pub ifa_flags: __u8,
-pub ifa_scope: __u8,
-pub ifa_index: __u32,
-}
-pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC;
-pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS;
-pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL;
-pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL;
-pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST;
-pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST;
-pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO;
-pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST;
-pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS;
-pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY;
-pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID;
-pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO;
-pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_54 {
-IFA_UNSPEC = 0,
-IFA_ADDRESS = 1,
-IFA_LOCAL = 2,
-IFA_LABEL = 3,
-IFA_BROADCAST = 4,
-IFA_ANYCAST = 5,
-IFA_CACHEINFO = 6,
-IFA_MULTICAST = 7,
-IFA_FLAGS = 8,
-IFA_RT_PRIORITY = 9,
-IFA_TARGET_NETNSID = 10,
-IFA_PROTO = 11,
-__IFA_MAX = 12,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifa_cacheinfo {
-pub ifa_prefered: __u32,
-pub ifa_valid: __u32,
-pub cstamp: __u32,
-pub tstamp: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndmsg {
-pub ndm_family: __u8,
-pub ndm_pad1: __u8,
-pub ndm_pad2: __u16,
-pub ndm_ifindex: __s32,
-pub ndm_state: __u16,
-pub ndm_flags: __u8,
-pub ndm_type: __u8,
-}
-pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC;
-pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST;
-pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR;
-pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO;
-pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES;
-pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN;
-pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT;
-pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI;
-pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX;
-pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER;
-pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID;
-pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI;
-pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL;
-pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID;
-pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS;
-pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT;
-pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK;
-pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK;
-pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_55 {
-NDA_UNSPEC = 0,
-NDA_DST = 1,
-NDA_LLADDR = 2,
-NDA_CACHEINFO = 3,
-NDA_PROBES = 4,
-NDA_VLAN = 5,
-NDA_PORT = 6,
-NDA_VNI = 7,
-NDA_IFINDEX = 8,
-NDA_MASTER = 9,
-NDA_LINK_NETNSID = 10,
-NDA_SRC_VNI = 11,
-NDA_PROTOCOL = 12,
-NDA_NH_ID = 13,
-NDA_FDB_EXT_ATTRS = 14,
-NDA_FLAGS_EXT = 15,
-NDA_NDM_STATE_MASK = 16,
-NDA_NDM_FLAGS_MASK = 17,
-__NDA_MAX = 18,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nda_cacheinfo {
-pub ndm_confirmed: __u32,
-pub ndm_used: __u32,
-pub ndm_updated: __u32,
-pub ndm_refcnt: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_stats {
-pub ndts_allocs: __u64,
-pub ndts_destroys: __u64,
-pub ndts_hash_grows: __u64,
-pub ndts_res_failed: __u64,
-pub ndts_lookups: __u64,
-pub ndts_hits: __u64,
-pub ndts_rcv_probes_mcast: __u64,
-pub ndts_rcv_probes_ucast: __u64,
-pub ndts_periodic_gc_runs: __u64,
-pub ndts_forced_gc_runs: __u64,
-pub ndts_table_fulls: __u64,
-}
-pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC;
-pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX;
-pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT;
-pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME;
-pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME;
-pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME;
-pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME;
-pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME;
-pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN;
-pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES;
-pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES;
-pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES;
-pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY;
-pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY;
-pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN;
-pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME;
-pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES;
-pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES;
-pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD;
-pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS;
-pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_56 {
-NDTPA_UNSPEC = 0,
-NDTPA_IFINDEX = 1,
-NDTPA_REFCNT = 2,
-NDTPA_REACHABLE_TIME = 3,
-NDTPA_BASE_REACHABLE_TIME = 4,
-NDTPA_RETRANS_TIME = 5,
-NDTPA_GC_STALETIME = 6,
-NDTPA_DELAY_PROBE_TIME = 7,
-NDTPA_QUEUE_LEN = 8,
-NDTPA_APP_PROBES = 9,
-NDTPA_UCAST_PROBES = 10,
-NDTPA_MCAST_PROBES = 11,
-NDTPA_ANYCAST_DELAY = 12,
-NDTPA_PROXY_DELAY = 13,
-NDTPA_PROXY_QLEN = 14,
-NDTPA_LOCKTIME = 15,
-NDTPA_QUEUE_LENBYTES = 16,
-NDTPA_MCAST_REPROBES = 17,
-NDTPA_PAD = 18,
-NDTPA_INTERVAL_PROBE_TIME_MS = 19,
-__NDTPA_MAX = 20,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndtmsg {
-pub ndtm_family: __u8,
-pub ndtm_pad1: __u8,
-pub ndtm_pad2: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_config {
-pub ndtc_key_len: __u16,
-pub ndtc_entry_size: __u16,
-pub ndtc_entries: __u32,
-pub ndtc_last_flush: __u32,
-pub ndtc_last_rand: __u32,
-pub ndtc_hash_rnd: __u32,
-pub ndtc_hash_mask: __u32,
-pub ndtc_hash_chain_gc: __u32,
-pub ndtc_proxy_qlen: __u32,
-}
-pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC;
-pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME;
-pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1;
-pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2;
-pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3;
-pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG;
-pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS;
-pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS;
-pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL;
-pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD;
-pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_57 {
-NDTA_UNSPEC = 0,
-NDTA_NAME = 1,
-NDTA_THRESH1 = 2,
-NDTA_THRESH2 = 3,
-NDTA_THRESH3 = 4,
-NDTA_CONFIG = 5,
-NDTA_PARMS = 6,
-NDTA_STATS = 7,
-NDTA_GC_INTERVAL = 8,
-NDTA_PAD = 9,
-__NDTA_MAX = 10,
-}
-pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT;
-pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_58 {
-FDB_NOTIFY_BIT = 1,
-FDB_NOTIFY_INACTIVE_BIT = 2,
-}
-pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC;
-pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY;
-pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH;
-pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_59 {
-NFEA_UNSPEC = 0,
-NFEA_ACTIVITY_NOTIFY = 1,
-NFEA_DONT_REFRESH = 2,
-__NFEA_MAX = 3,
-}
-pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK;
-pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK;
-pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK;
-pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR;
-pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR;
-pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR;
-pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE;
-pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE;
-pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE;
-pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH;
-pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH;
-pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH;
-pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE;
-pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE;
-pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE;
-pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC;
-pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC;
-pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC;
-pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS;
-pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS;
-pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS;
-pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER;
-pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER;
-pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER;
-pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION;
-pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION;
-pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION;
-pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX;
-pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST;
-pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST;
-pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL;
-pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL;
-pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL;
-pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT;
-pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL;
-pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL;
-pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL;
-pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB;
-pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB;
-pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF;
-pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF;
-pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF;
-pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB;
-pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB;
-pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB;
-pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID;
-pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID;
-pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID;
-pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS;
-pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS;
-pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS;
-pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT;
-pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN;
-pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN;
-pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN;
-pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP;
-pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP;
-pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP;
-pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP;
-pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP;
-pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP;
-pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN;
-pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN;
-pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN;
-pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET;
-pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET;
-pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET;
-pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL;
-pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL;
-pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL;
-pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_60 {
-RTM_BASE = 16,
-RTM_DELLINK = 17,
-RTM_GETLINK = 18,
-RTM_SETLINK = 19,
-RTM_NEWADDR = 20,
-RTM_DELADDR = 21,
-RTM_GETADDR = 22,
-RTM_NEWROUTE = 24,
-RTM_DELROUTE = 25,
-RTM_GETROUTE = 26,
-RTM_NEWNEIGH = 28,
-RTM_DELNEIGH = 29,
-RTM_GETNEIGH = 30,
-RTM_NEWRULE = 32,
-RTM_DELRULE = 33,
-RTM_GETRULE = 34,
-RTM_NEWQDISC = 36,
-RTM_DELQDISC = 37,
-RTM_GETQDISC = 38,
-RTM_NEWTCLASS = 40,
-RTM_DELTCLASS = 41,
-RTM_GETTCLASS = 42,
-RTM_NEWTFILTER = 44,
-RTM_DELTFILTER = 45,
-RTM_GETTFILTER = 46,
-RTM_NEWACTION = 48,
-RTM_DELACTION = 49,
-RTM_GETACTION = 50,
-RTM_NEWPREFIX = 52,
-RTM_GETMULTICAST = 58,
-RTM_GETANYCAST = 62,
-RTM_NEWNEIGHTBL = 64,
-RTM_GETNEIGHTBL = 66,
-RTM_SETNEIGHTBL = 67,
-RTM_NEWNDUSEROPT = 68,
-RTM_NEWADDRLABEL = 72,
-RTM_DELADDRLABEL = 73,
-RTM_GETADDRLABEL = 74,
-RTM_GETDCB = 78,
-RTM_SETDCB = 79,
-RTM_NEWNETCONF = 80,
-RTM_DELNETCONF = 81,
-RTM_GETNETCONF = 82,
-RTM_NEWMDB = 84,
-RTM_DELMDB = 85,
-RTM_GETMDB = 86,
-RTM_NEWNSID = 88,
-RTM_DELNSID = 89,
-RTM_GETNSID = 90,
-RTM_NEWSTATS = 92,
-RTM_GETSTATS = 94,
-RTM_SETSTATS = 95,
-RTM_NEWCACHEREPORT = 96,
-RTM_NEWCHAIN = 100,
-RTM_DELCHAIN = 101,
-RTM_GETCHAIN = 102,
-RTM_NEWNEXTHOP = 104,
-RTM_DELNEXTHOP = 105,
-RTM_GETNEXTHOP = 106,
-RTM_NEWLINKPROP = 108,
-RTM_DELLINKPROP = 109,
-RTM_GETLINKPROP = 110,
-RTM_NEWVLAN = 112,
-RTM_DELVLAN = 113,
-RTM_GETVLAN = 114,
-RTM_NEWNEXTHOPBUCKET = 116,
-RTM_DELNEXTHOPBUCKET = 117,
-RTM_GETNEXTHOPBUCKET = 118,
-RTM_NEWTUNNEL = 120,
-RTM_DELTUNNEL = 121,
-RTM_GETTUNNEL = 122,
-__RTM_MAX = 123,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtattr {
-pub rta_len: crate::ctypes::c_ushort,
-pub rta_type: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtmsg {
-pub rtm_family: crate::ctypes::c_uchar,
-pub rtm_dst_len: crate::ctypes::c_uchar,
-pub rtm_src_len: crate::ctypes::c_uchar,
-pub rtm_tos: crate::ctypes::c_uchar,
-pub rtm_table: crate::ctypes::c_uchar,
-pub rtm_protocol: crate::ctypes::c_uchar,
-pub rtm_scope: crate::ctypes::c_uchar,
-pub rtm_type: crate::ctypes::c_uchar,
-pub rtm_flags: crate::ctypes::c_uint,
-}
-pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC;
-pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST;
-pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL;
-pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST;
-pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST;
-pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST;
-pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE;
-pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE;
-pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT;
-pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW;
-pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT;
-pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE;
-pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_61 {
-RTN_UNSPEC = 0,
-RTN_UNICAST = 1,
-RTN_LOCAL = 2,
-RTN_BROADCAST = 3,
-RTN_ANYCAST = 4,
-RTN_MULTICAST = 5,
-RTN_BLACKHOLE = 6,
-RTN_UNREACHABLE = 7,
-RTN_PROHIBIT = 8,
-RTN_THROW = 9,
-RTN_NAT = 10,
-RTN_XRESOLVE = 11,
-__RTN_MAX = 12,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_scope_t {
-RT_SCOPE_UNIVERSE = 0,
-RT_SCOPE_SITE = 200,
-RT_SCOPE_LINK = 253,
-RT_SCOPE_HOST = 254,
-RT_SCOPE_NOWHERE = 255,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_class_t {
-RT_TABLE_UNSPEC = 0,
-RT_TABLE_COMPAT = 252,
-RT_TABLE_DEFAULT = 253,
-RT_TABLE_MAIN = 254,
-RT_TABLE_LOCAL = 255,
-RT_TABLE_MAX = 4294967295,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtattr_type_t {
-RTA_UNSPEC = 0,
-RTA_DST = 1,
-RTA_SRC = 2,
-RTA_IIF = 3,
-RTA_OIF = 4,
-RTA_GATEWAY = 5,
-RTA_PRIORITY = 6,
-RTA_PREFSRC = 7,
-RTA_METRICS = 8,
-RTA_MULTIPATH = 9,
-RTA_PROTOINFO = 10,
-RTA_FLOW = 11,
-RTA_CACHEINFO = 12,
-RTA_SESSION = 13,
-RTA_MP_ALGO = 14,
-RTA_TABLE = 15,
-RTA_MARK = 16,
-RTA_MFC_STATS = 17,
-RTA_VIA = 18,
-RTA_NEWDST = 19,
-RTA_PREF = 20,
-RTA_ENCAP_TYPE = 21,
-RTA_ENCAP = 22,
-RTA_EXPIRES = 23,
-RTA_PAD = 24,
-RTA_UID = 25,
-RTA_TTL_PROPAGATE = 26,
-RTA_IP_PROTO = 27,
-RTA_SPORT = 28,
-RTA_DPORT = 29,
-RTA_NH_ID = 30,
-__RTA_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnexthop {
-pub rtnh_len: crate::ctypes::c_ushort,
-pub rtnh_flags: crate::ctypes::c_uchar,
-pub rtnh_hops: crate::ctypes::c_uchar,
-pub rtnh_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rtvia {
-pub rtvia_family: __kernel_sa_family_t,
-pub rtvia_addr: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_cacheinfo {
-pub rta_clntref: __u32,
-pub rta_lastuse: __u32,
-pub rta_expires: __s32,
-pub rta_error: __u32,
-pub rta_used: __u32,
-pub rta_id: __u32,
-pub rta_ts: __u32,
-pub rta_tsage: __u32,
-}
-pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC;
-pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK;
-pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU;
-pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW;
-pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT;
-pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR;
-pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH;
-pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND;
-pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS;
-pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING;
-pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT;
-pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND;
-pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES;
-pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN;
-pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND;
-pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK;
-pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO;
-pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE;
-pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_62 {
-RTAX_UNSPEC = 0,
-RTAX_LOCK = 1,
-RTAX_MTU = 2,
-RTAX_WINDOW = 3,
-RTAX_RTT = 4,
-RTAX_RTTVAR = 5,
-RTAX_SSTHRESH = 6,
-RTAX_CWND = 7,
-RTAX_ADVMSS = 8,
-RTAX_REORDERING = 9,
-RTAX_HOPLIMIT = 10,
-RTAX_INITCWND = 11,
-RTAX_FEATURES = 12,
-RTAX_RTO_MIN = 13,
-RTAX_INITRWND = 14,
-RTAX_QUICKACK = 15,
-RTAX_CC_ALGO = 16,
-RTAX_FASTOPEN_NO_COOKIE = 17,
-__RTAX_MAX = 18,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rta_session {
-pub proto: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub u: rta_session__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union rta_session__bindgen_ty_1 {
-pub ports: rta_session__bindgen_ty_1__bindgen_ty_1,
-pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2,
-pub spi: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_1 {
-pub sport: __u16,
-pub dport: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_2 {
-pub type_: __u8,
-pub code: __u8,
-pub ident: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_mfc_stats {
-pub mfcs_packets: __u64,
-pub mfcs_bytes: __u64,
-pub mfcs_wrong_if: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtgenmsg {
-pub rtgen_family: crate::ctypes::c_uchar,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifinfomsg {
-pub ifi_family: crate::ctypes::c_uchar,
-pub __ifi_pad: crate::ctypes::c_uchar,
-pub ifi_type: crate::ctypes::c_ushort,
-pub ifi_index: crate::ctypes::c_int,
-pub ifi_flags: crate::ctypes::c_uint,
-pub ifi_change: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefixmsg {
-pub prefix_family: crate::ctypes::c_uchar,
-pub prefix_pad1: crate::ctypes::c_uchar,
-pub prefix_pad2: crate::ctypes::c_ushort,
-pub prefix_ifindex: crate::ctypes::c_int,
-pub prefix_type: crate::ctypes::c_uchar,
-pub prefix_len: crate::ctypes::c_uchar,
-pub prefix_flags: crate::ctypes::c_uchar,
-pub prefix_pad3: crate::ctypes::c_uchar,
-}
-pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC;
-pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS;
-pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO;
-pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_63 {
-PREFIX_UNSPEC = 0,
-PREFIX_ADDRESS = 1,
-PREFIX_CACHEINFO = 2,
-__PREFIX_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefix_cacheinfo {
-pub preferred_time: __u32,
-pub valid_time: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcmsg {
-pub tcm_family: crate::ctypes::c_uchar,
-pub tcm__pad1: crate::ctypes::c_uchar,
-pub tcm__pad2: crate::ctypes::c_ushort,
-pub tcm_ifindex: crate::ctypes::c_int,
-pub tcm_handle: __u32,
-pub tcm_parent: __u32,
-pub tcm_info: __u32,
-}
-pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC;
-pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND;
-pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS;
-pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS;
-pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS;
-pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE;
-pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT;
-pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2;
-pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB;
-pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD;
-pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE;
-pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN;
-pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD;
-pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK;
-pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK;
-pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS;
-pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_64 {
-TCA_UNSPEC = 0,
-TCA_KIND = 1,
-TCA_OPTIONS = 2,
-TCA_STATS = 3,
-TCA_XSTATS = 4,
-TCA_RATE = 5,
-TCA_FCNT = 6,
-TCA_STATS2 = 7,
-TCA_STAB = 8,
-TCA_PAD = 9,
-TCA_DUMP_INVISIBLE = 10,
-TCA_CHAIN = 11,
-TCA_HW_OFFLOAD = 12,
-TCA_INGRESS_BLOCK = 13,
-TCA_EGRESS_BLOCK = 14,
-TCA_DUMP_FLAGS = 15,
-__TCA_MAX = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nduseroptmsg {
-pub nduseropt_family: crate::ctypes::c_uchar,
-pub nduseropt_pad1: crate::ctypes::c_uchar,
-pub nduseropt_opts_len: crate::ctypes::c_ushort,
-pub nduseropt_ifindex: crate::ctypes::c_int,
-pub nduseropt_icmp_type: __u8,
-pub nduseropt_icmp_code: __u8,
-pub nduseropt_pad2: crate::ctypes::c_ushort,
-pub nduseropt_pad3: crate::ctypes::c_uint,
-}
-pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC;
-pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR;
-pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_65 {
-NDUSEROPT_UNSPEC = 0,
-NDUSEROPT_SRCADDR = 1,
-__NDUSEROPT_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtnetlink_groups {
-RTNLGRP_NONE = 0,
-RTNLGRP_LINK = 1,
-RTNLGRP_NOTIFY = 2,
-RTNLGRP_NEIGH = 3,
-RTNLGRP_TC = 4,
-RTNLGRP_IPV4_IFADDR = 5,
-RTNLGRP_IPV4_MROUTE = 6,
-RTNLGRP_IPV4_ROUTE = 7,
-RTNLGRP_IPV4_RULE = 8,
-RTNLGRP_IPV6_IFADDR = 9,
-RTNLGRP_IPV6_MROUTE = 10,
-RTNLGRP_IPV6_ROUTE = 11,
-RTNLGRP_IPV6_IFINFO = 12,
-RTNLGRP_DECnet_IFADDR = 13,
-RTNLGRP_NOP2 = 14,
-RTNLGRP_DECnet_ROUTE = 15,
-RTNLGRP_DECnet_RULE = 16,
-RTNLGRP_NOP4 = 17,
-RTNLGRP_IPV6_PREFIX = 18,
-RTNLGRP_IPV6_RULE = 19,
-RTNLGRP_ND_USEROPT = 20,
-RTNLGRP_PHONET_IFADDR = 21,
-RTNLGRP_PHONET_ROUTE = 22,
-RTNLGRP_DCB = 23,
-RTNLGRP_IPV4_NETCONF = 24,
-RTNLGRP_IPV6_NETCONF = 25,
-RTNLGRP_MDB = 26,
-RTNLGRP_MPLS_ROUTE = 27,
-RTNLGRP_NSID = 28,
-RTNLGRP_MPLS_NETCONF = 29,
-RTNLGRP_IPV4_MROUTE_R = 30,
-RTNLGRP_IPV6_MROUTE_R = 31,
-RTNLGRP_NEXTHOP = 32,
-RTNLGRP_BRVLAN = 33,
-RTNLGRP_MCTP_IFADDR = 34,
-RTNLGRP_TUNNEL = 35,
-RTNLGRP_STATS = 36,
-__RTNLGRP_MAX = 37,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcamsg {
-pub tca_family: crate::ctypes::c_uchar,
-pub tca__pad1: crate::ctypes::c_uchar,
-pub tca__pad2: crate::ctypes::c_ushort,
-}
-pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC;
-pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB;
-pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS;
-pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT;
-pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA;
-pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_66 {
-TCA_ROOT_UNSPEC = 0,
-TCA_ROOT_TAB = 1,
-TCA_ROOT_FLAGS = 2,
-TCA_ROOT_COUNT = 3,
-TCA_ROOT_TIME_DELTA = 4,
-__TCA_ROOT_MAX = 5,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/riscv32/errno.rs b/vendor/linux-raw-sys-0.3.2/src/riscv32/errno.rs
deleted file mode 100644
index 8c5620d74..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/riscv32/errno.rs
+++ /dev/null
@@ -1,135 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const EPERM: u32 = 1;
-pub const ENOENT: u32 = 2;
-pub const ESRCH: u32 = 3;
-pub const EINTR: u32 = 4;
-pub const EIO: u32 = 5;
-pub const ENXIO: u32 = 6;
-pub const E2BIG: u32 = 7;
-pub const ENOEXEC: u32 = 8;
-pub const EBADF: u32 = 9;
-pub const ECHILD: u32 = 10;
-pub const EAGAIN: u32 = 11;
-pub const ENOMEM: u32 = 12;
-pub const EACCES: u32 = 13;
-pub const EFAULT: u32 = 14;
-pub const ENOTBLK: u32 = 15;
-pub const EBUSY: u32 = 16;
-pub const EEXIST: u32 = 17;
-pub const EXDEV: u32 = 18;
-pub const ENODEV: u32 = 19;
-pub const ENOTDIR: u32 = 20;
-pub const EISDIR: u32 = 21;
-pub const EINVAL: u32 = 22;
-pub const ENFILE: u32 = 23;
-pub const EMFILE: u32 = 24;
-pub const ENOTTY: u32 = 25;
-pub const ETXTBSY: u32 = 26;
-pub const EFBIG: u32 = 27;
-pub const ENOSPC: u32 = 28;
-pub const ESPIPE: u32 = 29;
-pub const EROFS: u32 = 30;
-pub const EMLINK: u32 = 31;
-pub const EPIPE: u32 = 32;
-pub const EDOM: u32 = 33;
-pub const ERANGE: u32 = 34;
-pub const EDEADLK: u32 = 35;
-pub const ENAMETOOLONG: u32 = 36;
-pub const ENOLCK: u32 = 37;
-pub const ENOSYS: u32 = 38;
-pub const ENOTEMPTY: u32 = 39;
-pub const ELOOP: u32 = 40;
-pub const EWOULDBLOCK: u32 = 11;
-pub const ENOMSG: u32 = 42;
-pub const EIDRM: u32 = 43;
-pub const ECHRNG: u32 = 44;
-pub const EL2NSYNC: u32 = 45;
-pub const EL3HLT: u32 = 46;
-pub const EL3RST: u32 = 47;
-pub const ELNRNG: u32 = 48;
-pub const EUNATCH: u32 = 49;
-pub const ENOCSI: u32 = 50;
-pub const EL2HLT: u32 = 51;
-pub const EBADE: u32 = 52;
-pub const EBADR: u32 = 53;
-pub const EXFULL: u32 = 54;
-pub const ENOANO: u32 = 55;
-pub const EBADRQC: u32 = 56;
-pub const EBADSLT: u32 = 57;
-pub const EDEADLOCK: u32 = 35;
-pub const EBFONT: u32 = 59;
-pub const ENOSTR: u32 = 60;
-pub const ENODATA: u32 = 61;
-pub const ETIME: u32 = 62;
-pub const ENOSR: u32 = 63;
-pub const ENONET: u32 = 64;
-pub const ENOPKG: u32 = 65;
-pub const EREMOTE: u32 = 66;
-pub const ENOLINK: u32 = 67;
-pub const EADV: u32 = 68;
-pub const ESRMNT: u32 = 69;
-pub const ECOMM: u32 = 70;
-pub const EPROTO: u32 = 71;
-pub const EMULTIHOP: u32 = 72;
-pub const EDOTDOT: u32 = 73;
-pub const EBADMSG: u32 = 74;
-pub const EOVERFLOW: u32 = 75;
-pub const ENOTUNIQ: u32 = 76;
-pub const EBADFD: u32 = 77;
-pub const EREMCHG: u32 = 78;
-pub const ELIBACC: u32 = 79;
-pub const ELIBBAD: u32 = 80;
-pub const ELIBSCN: u32 = 81;
-pub const ELIBMAX: u32 = 82;
-pub const ELIBEXEC: u32 = 83;
-pub const EILSEQ: u32 = 84;
-pub const ERESTART: u32 = 85;
-pub const ESTRPIPE: u32 = 86;
-pub const EUSERS: u32 = 87;
-pub const ENOTSOCK: u32 = 88;
-pub const EDESTADDRREQ: u32 = 89;
-pub const EMSGSIZE: u32 = 90;
-pub const EPROTOTYPE: u32 = 91;
-pub const ENOPROTOOPT: u32 = 92;
-pub const EPROTONOSUPPORT: u32 = 93;
-pub const ESOCKTNOSUPPORT: u32 = 94;
-pub const EOPNOTSUPP: u32 = 95;
-pub const EPFNOSUPPORT: u32 = 96;
-pub const EAFNOSUPPORT: u32 = 97;
-pub const EADDRINUSE: u32 = 98;
-pub const EADDRNOTAVAIL: u32 = 99;
-pub const ENETDOWN: u32 = 100;
-pub const ENETUNREACH: u32 = 101;
-pub const ENETRESET: u32 = 102;
-pub const ECONNABORTED: u32 = 103;
-pub const ECONNRESET: u32 = 104;
-pub const ENOBUFS: u32 = 105;
-pub const EISCONN: u32 = 106;
-pub const ENOTCONN: u32 = 107;
-pub const ESHUTDOWN: u32 = 108;
-pub const ETOOMANYREFS: u32 = 109;
-pub const ETIMEDOUT: u32 = 110;
-pub const ECONNREFUSED: u32 = 111;
-pub const EHOSTDOWN: u32 = 112;
-pub const EHOSTUNREACH: u32 = 113;
-pub const EALREADY: u32 = 114;
-pub const EINPROGRESS: u32 = 115;
-pub const ESTALE: u32 = 116;
-pub const EUCLEAN: u32 = 117;
-pub const ENOTNAM: u32 = 118;
-pub const ENAVAIL: u32 = 119;
-pub const EISNAM: u32 = 120;
-pub const EREMOTEIO: u32 = 121;
-pub const EDQUOT: u32 = 122;
-pub const ENOMEDIUM: u32 = 123;
-pub const EMEDIUMTYPE: u32 = 124;
-pub const ECANCELED: u32 = 125;
-pub const ENOKEY: u32 = 126;
-pub const EKEYEXPIRED: u32 = 127;
-pub const EKEYREVOKED: u32 = 128;
-pub const EKEYREJECTED: u32 = 129;
-pub const EOWNERDEAD: u32 = 130;
-pub const ENOTRECOVERABLE: u32 = 131;
-pub const ERFKILL: u32 = 132;
-pub const EHWPOISON: u32 = 133;
diff --git a/vendor/linux-raw-sys-0.3.2/src/riscv32/general.rs b/vendor/linux-raw-sys-0.3.2/src/riscv32/general.rs
deleted file mode 100644
index c7e4e7b90..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/riscv32/general.rs
+++ /dev/null
@@ -1,5264 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
-pub struct __BindgenBitfieldUnit<Storage> {
-storage: Storage,
-}
-impl<Storage> __BindgenBitfieldUnit<Storage> {
-#[inline]
-pub const fn new(storage: Storage) -> Self {
-Self { storage }
-}
-}
-impl<Storage> __BindgenBitfieldUnit<Storage>
-where
-Storage: AsRef<[u8]> + AsMut<[u8]>,
-{
-#[inline]
-pub fn get_bit(&self, index: usize) -> bool {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = self.storage.as_ref()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-byte & mask == mask
-}
-#[inline]
-pub fn set_bit(&mut self, index: usize, val: bool) {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = &mut self.storage.as_mut()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-if val {
-*byte |= mask;
-} else {
-*byte &= !mask;
-}
-}
-#[inline]
-pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-let mut val = 0;
-for i in 0..(bit_width as usize) {
-if self.get_bit(i + bit_offset) {
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-val |= 1 << index;
-}
-}
-val
-}
-#[inline]
-pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-for i in 0..(bit_width as usize) {
-let mask = 1 << i;
-let val_bit_is_set = val & mask == mask;
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-self.set_bit(index + bit_offset, val_bit_is_set);
-}
-}
-}
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-#[repr(C)]
-pub struct __BindgenUnionField<T>(::core::marker::PhantomData<T>);
-impl<T> __BindgenUnionField<T> {
-#[inline]
-pub const fn new() -> Self {
-__BindgenUnionField(::core::marker::PhantomData)
-}
-#[inline]
-pub unsafe fn as_ref(&self) -> &T {
-::core::mem::transmute(self)
-}
-#[inline]
-pub unsafe fn as_mut(&mut self) -> &mut T {
-::core::mem::transmute(self)
-}
-}
-impl<T> ::core::default::Default for __BindgenUnionField<T> {
-#[inline]
-fn default() -> Self {
-Self::new()
-}
-}
-impl<T> ::core::clone::Clone for __BindgenUnionField<T> {
-#[inline]
-fn clone(&self) -> Self {
-Self::new()
-}
-}
-impl<T> ::core::marker::Copy for __BindgenUnionField<T> {}
-impl<T> ::core::fmt::Debug for __BindgenUnionField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__BindgenUnionField")
-}
-}
-impl<T> ::core::hash::Hash for __BindgenUnionField<T> {
-fn hash<H: ::core::hash::Hasher>(&self, _state: &mut H) {}
-}
-impl<T> ::core::cmp::PartialEq for __BindgenUnionField<T> {
-fn eq(&self, _other: &__BindgenUnionField<T>) -> bool {
-true
-}
-}
-impl<T> ::core::cmp::Eq for __BindgenUnionField<T> {}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const AT_SYSINFO_EHDR: u32 = 33;
-pub const AT_L1I_CACHESIZE: u32 = 40;
-pub const AT_L1I_CACHEGEOMETRY: u32 = 41;
-pub const AT_L1D_CACHESIZE: u32 = 42;
-pub const AT_L1D_CACHEGEOMETRY: u32 = 43;
-pub const AT_L2_CACHESIZE: u32 = 44;
-pub const AT_L2_CACHEGEOMETRY: u32 = 45;
-pub const AT_L3_CACHESIZE: u32 = 46;
-pub const AT_L3_CACHEGEOMETRY: u32 = 47;
-pub const AT_VECTOR_SIZE_ARCH: u32 = 9;
-pub const AT_NULL: u32 = 0;
-pub const AT_IGNORE: u32 = 1;
-pub const AT_EXECFD: u32 = 2;
-pub const AT_PHDR: u32 = 3;
-pub const AT_PHENT: u32 = 4;
-pub const AT_PHNUM: u32 = 5;
-pub const AT_PAGESZ: u32 = 6;
-pub const AT_BASE: u32 = 7;
-pub const AT_FLAGS: u32 = 8;
-pub const AT_ENTRY: u32 = 9;
-pub const AT_NOTELF: u32 = 10;
-pub const AT_UID: u32 = 11;
-pub const AT_EUID: u32 = 12;
-pub const AT_GID: u32 = 13;
-pub const AT_EGID: u32 = 14;
-pub const AT_PLATFORM: u32 = 15;
-pub const AT_HWCAP: u32 = 16;
-pub const AT_CLKTCK: u32 = 17;
-pub const AT_SECURE: u32 = 23;
-pub const AT_BASE_PLATFORM: u32 = 24;
-pub const AT_RANDOM: u32 = 25;
-pub const AT_HWCAP2: u32 = 26;
-pub const AT_EXECFN: u32 = 31;
-pub const AT_MINSIGSTKSZ: u32 = 51;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S_1: u32 = 1;
-pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798;
-pub const _LINUX_CAPABILITY_U32S_2: u32 = 2;
-pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514;
-pub const _LINUX_CAPABILITY_U32S_3: u32 = 2;
-pub const VFS_CAP_REVISION_MASK: u32 = 4278190080;
-pub const VFS_CAP_REVISION_SHIFT: u32 = 24;
-pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081;
-pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1;
-pub const VFS_CAP_REVISION_1: u32 = 16777216;
-pub const VFS_CAP_U32_1: u32 = 1;
-pub const VFS_CAP_REVISION_2: u32 = 33554432;
-pub const VFS_CAP_U32_2: u32 = 2;
-pub const VFS_CAP_REVISION_3: u32 = 50331648;
-pub const VFS_CAP_U32_3: u32 = 2;
-pub const VFS_CAP_U32: u32 = 2;
-pub const VFS_CAP_REVISION: u32 = 50331648;
-pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S: u32 = 1;
-pub const CAP_CHOWN: u32 = 0;
-pub const CAP_DAC_OVERRIDE: u32 = 1;
-pub const CAP_DAC_READ_SEARCH: u32 = 2;
-pub const CAP_FOWNER: u32 = 3;
-pub const CAP_FSETID: u32 = 4;
-pub const CAP_KILL: u32 = 5;
-pub const CAP_SETGID: u32 = 6;
-pub const CAP_SETUID: u32 = 7;
-pub const CAP_SETPCAP: u32 = 8;
-pub const CAP_LINUX_IMMUTABLE: u32 = 9;
-pub const CAP_NET_BIND_SERVICE: u32 = 10;
-pub const CAP_NET_BROADCAST: u32 = 11;
-pub const CAP_NET_ADMIN: u32 = 12;
-pub const CAP_NET_RAW: u32 = 13;
-pub const CAP_IPC_LOCK: u32 = 14;
-pub const CAP_IPC_OWNER: u32 = 15;
-pub const CAP_SYS_MODULE: u32 = 16;
-pub const CAP_SYS_RAWIO: u32 = 17;
-pub const CAP_SYS_CHROOT: u32 = 18;
-pub const CAP_SYS_PTRACE: u32 = 19;
-pub const CAP_SYS_PACCT: u32 = 20;
-pub const CAP_SYS_ADMIN: u32 = 21;
-pub const CAP_SYS_BOOT: u32 = 22;
-pub const CAP_SYS_NICE: u32 = 23;
-pub const CAP_SYS_RESOURCE: u32 = 24;
-pub const CAP_SYS_TIME: u32 = 25;
-pub const CAP_SYS_TTY_CONFIG: u32 = 26;
-pub const CAP_MKNOD: u32 = 27;
-pub const CAP_LEASE: u32 = 28;
-pub const CAP_AUDIT_WRITE: u32 = 29;
-pub const CAP_AUDIT_CONTROL: u32 = 30;
-pub const CAP_SETFCAP: u32 = 31;
-pub const CAP_MAC_OVERRIDE: u32 = 32;
-pub const CAP_MAC_ADMIN: u32 = 33;
-pub const CAP_SYSLOG: u32 = 34;
-pub const CAP_WAKE_ALARM: u32 = 35;
-pub const CAP_BLOCK_SUSPEND: u32 = 36;
-pub const CAP_AUDIT_READ: u32 = 37;
-pub const CAP_PERFMON: u32 = 38;
-pub const CAP_BPF: u32 = 39;
-pub const CAP_CHECKPOINT_RESTORE: u32 = 40;
-pub const CAP_LAST_CAP: u32 = 40;
-pub const O_ACCMODE: u32 = 3;
-pub const O_RDONLY: u32 = 0;
-pub const O_WRONLY: u32 = 1;
-pub const O_RDWR: u32 = 2;
-pub const O_CREAT: u32 = 64;
-pub const O_EXCL: u32 = 128;
-pub const O_NOCTTY: u32 = 256;
-pub const O_TRUNC: u32 = 512;
-pub const O_APPEND: u32 = 1024;
-pub const O_NONBLOCK: u32 = 2048;
-pub const O_DSYNC: u32 = 4096;
-pub const FASYNC: u32 = 8192;
-pub const O_DIRECT: u32 = 16384;
-pub const O_LARGEFILE: u32 = 32768;
-pub const O_DIRECTORY: u32 = 65536;
-pub const O_NOFOLLOW: u32 = 131072;
-pub const O_NOATIME: u32 = 262144;
-pub const O_CLOEXEC: u32 = 524288;
-pub const __O_SYNC: u32 = 1048576;
-pub const O_SYNC: u32 = 1052672;
-pub const O_PATH: u32 = 2097152;
-pub const __O_TMPFILE: u32 = 4194304;
-pub const O_TMPFILE: u32 = 4259840;
-pub const O_TMPFILE_MASK: u32 = 4259904;
-pub const O_NDELAY: u32 = 2048;
-pub const F_DUPFD: u32 = 0;
-pub const F_GETFD: u32 = 1;
-pub const F_SETFD: u32 = 2;
-pub const F_GETFL: u32 = 3;
-pub const F_SETFL: u32 = 4;
-pub const F_GETLK: u32 = 5;
-pub const F_SETLK: u32 = 6;
-pub const F_SETLKW: u32 = 7;
-pub const F_SETOWN: u32 = 8;
-pub const F_GETOWN: u32 = 9;
-pub const F_SETSIG: u32 = 10;
-pub const F_GETSIG: u32 = 11;
-pub const F_GETLK64: u32 = 12;
-pub const F_SETLK64: u32 = 13;
-pub const F_SETLKW64: u32 = 14;
-pub const F_SETOWN_EX: u32 = 15;
-pub const F_GETOWN_EX: u32 = 16;
-pub const F_GETOWNER_UIDS: u32 = 17;
-pub const F_OFD_GETLK: u32 = 36;
-pub const F_OFD_SETLK: u32 = 37;
-pub const F_OFD_SETLKW: u32 = 38;
-pub const F_OWNER_TID: u32 = 0;
-pub const F_OWNER_PID: u32 = 1;
-pub const F_OWNER_PGRP: u32 = 2;
-pub const FD_CLOEXEC: u32 = 1;
-pub const F_RDLCK: u32 = 0;
-pub const F_WRLCK: u32 = 1;
-pub const F_UNLCK: u32 = 2;
-pub const F_EXLCK: u32 = 4;
-pub const F_SHLCK: u32 = 8;
-pub const LOCK_SH: u32 = 1;
-pub const LOCK_EX: u32 = 2;
-pub const LOCK_NB: u32 = 4;
-pub const LOCK_UN: u32 = 8;
-pub const LOCK_MAND: u32 = 32;
-pub const LOCK_READ: u32 = 64;
-pub const LOCK_WRITE: u32 = 128;
-pub const LOCK_RW: u32 = 192;
-pub const F_LINUX_SPECIFIC_BASE: u32 = 1024;
-pub const RESOLVE_NO_XDEV: u32 = 1;
-pub const RESOLVE_NO_MAGICLINKS: u32 = 2;
-pub const RESOLVE_NO_SYMLINKS: u32 = 4;
-pub const RESOLVE_BENEATH: u32 = 8;
-pub const RESOLVE_IN_ROOT: u32 = 16;
-pub const RESOLVE_CACHED: u32 = 32;
-pub const F_SETLEASE: u32 = 1024;
-pub const F_GETLEASE: u32 = 1025;
-pub const F_CANCELLK: u32 = 1029;
-pub const F_DUPFD_CLOEXEC: u32 = 1030;
-pub const F_NOTIFY: u32 = 1026;
-pub const F_SETPIPE_SZ: u32 = 1031;
-pub const F_GETPIPE_SZ: u32 = 1032;
-pub const F_ADD_SEALS: u32 = 1033;
-pub const F_GET_SEALS: u32 = 1034;
-pub const F_SEAL_SEAL: u32 = 1;
-pub const F_SEAL_SHRINK: u32 = 2;
-pub const F_SEAL_GROW: u32 = 4;
-pub const F_SEAL_WRITE: u32 = 8;
-pub const F_SEAL_FUTURE_WRITE: u32 = 16;
-pub const F_GET_RW_HINT: u32 = 1035;
-pub const F_SET_RW_HINT: u32 = 1036;
-pub const F_GET_FILE_RW_HINT: u32 = 1037;
-pub const F_SET_FILE_RW_HINT: u32 = 1038;
-pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const RWH_WRITE_LIFE_NONE: u32 = 1;
-pub const RWH_WRITE_LIFE_SHORT: u32 = 2;
-pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3;
-pub const RWH_WRITE_LIFE_LONG: u32 = 4;
-pub const RWH_WRITE_LIFE_EXTREME: u32 = 5;
-pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const DN_ACCESS: u32 = 1;
-pub const DN_MODIFY: u32 = 2;
-pub const DN_CREATE: u32 = 4;
-pub const DN_DELETE: u32 = 8;
-pub const DN_RENAME: u32 = 16;
-pub const DN_ATTRIB: u32 = 32;
-pub const DN_MULTISHOT: u32 = 2147483648;
-pub const AT_FDCWD: i32 = -100;
-pub const AT_SYMLINK_NOFOLLOW: u32 = 256;
-pub const AT_EACCESS: u32 = 512;
-pub const AT_REMOVEDIR: u32 = 512;
-pub const AT_SYMLINK_FOLLOW: u32 = 1024;
-pub const AT_NO_AUTOMOUNT: u32 = 2048;
-pub const AT_EMPTY_PATH: u32 = 4096;
-pub const AT_STATX_SYNC_TYPE: u32 = 24576;
-pub const AT_STATX_SYNC_AS_STAT: u32 = 0;
-pub const AT_STATX_FORCE_SYNC: u32 = 8192;
-pub const AT_STATX_DONT_SYNC: u32 = 16384;
-pub const AT_RECURSIVE: u32 = 32768;
-pub const EPOLL_CLOEXEC: u32 = 524288;
-pub const EPOLL_CTL_ADD: u32 = 1;
-pub const EPOLL_CTL_DEL: u32 = 2;
-pub const EPOLL_CTL_MOD: u32 = 3;
-pub const POSIX_FADV_NORMAL: u32 = 0;
-pub const POSIX_FADV_RANDOM: u32 = 1;
-pub const POSIX_FADV_SEQUENTIAL: u32 = 2;
-pub const POSIX_FADV_WILLNEED: u32 = 3;
-pub const POSIX_FADV_DONTNEED: u32 = 4;
-pub const POSIX_FADV_NOREUSE: u32 = 5;
-pub const FALLOC_FL_KEEP_SIZE: u32 = 1;
-pub const FALLOC_FL_PUNCH_HOLE: u32 = 2;
-pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4;
-pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8;
-pub const FALLOC_FL_ZERO_RANGE: u32 = 16;
-pub const FALLOC_FL_INSERT_RANGE: u32 = 32;
-pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64;
-pub const NR_OPEN: u32 = 1024;
-pub const NGROUPS_MAX: u32 = 65536;
-pub const ARG_MAX: u32 = 131072;
-pub const LINK_MAX: u32 = 127;
-pub const MAX_CANON: u32 = 255;
-pub const MAX_INPUT: u32 = 255;
-pub const NAME_MAX: u32 = 255;
-pub const PATH_MAX: u32 = 4096;
-pub const PIPE_BUF: u32 = 4096;
-pub const XATTR_NAME_MAX: u32 = 255;
-pub const XATTR_SIZE_MAX: u32 = 65536;
-pub const XATTR_LIST_MAX: u32 = 65536;
-pub const RTSIG_MAX: u32 = 32;
-pub const _IOC_NRBITS: u32 = 8;
-pub const _IOC_TYPEBITS: u32 = 8;
-pub const _IOC_SIZEBITS: u32 = 14;
-pub const _IOC_DIRBITS: u32 = 2;
-pub const _IOC_NRMASK: u32 = 255;
-pub const _IOC_TYPEMASK: u32 = 255;
-pub const _IOC_SIZEMASK: u32 = 16383;
-pub const _IOC_DIRMASK: u32 = 3;
-pub const _IOC_NRSHIFT: u32 = 0;
-pub const _IOC_TYPESHIFT: u32 = 8;
-pub const _IOC_SIZESHIFT: u32 = 16;
-pub const _IOC_DIRSHIFT: u32 = 30;
-pub const _IOC_NONE: u32 = 0;
-pub const _IOC_WRITE: u32 = 1;
-pub const _IOC_READ: u32 = 2;
-pub const IOC_IN: u32 = 1073741824;
-pub const IOC_OUT: u32 = 2147483648;
-pub const IOC_INOUT: u32 = 3221225472;
-pub const IOCSIZE_MASK: u32 = 1073676288;
-pub const IOCSIZE_SHIFT: u32 = 16;
-pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16;
-pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1;
-pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4;
-pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5;
-pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6;
-pub const FSCRYPT_MODE_SM4_XTS: u32 = 7;
-pub const FSCRYPT_MODE_SM4_CTS: u32 = 8;
-pub const FSCRYPT_MODE_ADIANTUM: u32 = 9;
-pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10;
-pub const FSCRYPT_POLICY_V1: u32 = 0;
-pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64;
-pub const FSCRYPT_POLICY_V2: u32 = 2;
-pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16;
-pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1;
-pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1;
-pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3;
-pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1;
-pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FS_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FS_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FS_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FS_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FS_POLICY_FLAGS_VALID: u32 = 7;
-pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0;
-pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1;
-pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2;
-pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3;
-pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4;
-pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5;
-pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6;
-pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9;
-pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FS_MAX_KEY_SIZE: u32 = 64;
-pub const MS_RDONLY: u32 = 1;
-pub const MS_NOSUID: u32 = 2;
-pub const MS_NODEV: u32 = 4;
-pub const MS_NOEXEC: u32 = 8;
-pub const MS_SYNCHRONOUS: u32 = 16;
-pub const MS_REMOUNT: u32 = 32;
-pub const MS_MANDLOCK: u32 = 64;
-pub const MS_DIRSYNC: u32 = 128;
-pub const MS_NOSYMFOLLOW: u32 = 256;
-pub const MS_NOATIME: u32 = 1024;
-pub const MS_NODIRATIME: u32 = 2048;
-pub const MS_BIND: u32 = 4096;
-pub const MS_MOVE: u32 = 8192;
-pub const MS_REC: u32 = 16384;
-pub const MS_VERBOSE: u32 = 32768;
-pub const MS_SILENT: u32 = 32768;
-pub const MS_POSIXACL: u32 = 65536;
-pub const MS_UNBINDABLE: u32 = 131072;
-pub const MS_PRIVATE: u32 = 262144;
-pub const MS_SLAVE: u32 = 524288;
-pub const MS_SHARED: u32 = 1048576;
-pub const MS_RELATIME: u32 = 2097152;
-pub const MS_KERNMOUNT: u32 = 4194304;
-pub const MS_I_VERSION: u32 = 8388608;
-pub const MS_STRICTATIME: u32 = 16777216;
-pub const MS_LAZYTIME: u32 = 33554432;
-pub const MS_SUBMOUNT: u32 = 67108864;
-pub const MS_NOREMOTELOCK: u32 = 134217728;
-pub const MS_NOSEC: u32 = 268435456;
-pub const MS_BORN: u32 = 536870912;
-pub const MS_ACTIVE: u32 = 1073741824;
-pub const MS_NOUSER: u32 = 2147483648;
-pub const MS_RMT_MASK: u32 = 41943121;
-pub const MS_MGC_VAL: u32 = 3236757504;
-pub const MS_MGC_MSK: u32 = 4294901760;
-pub const OPEN_TREE_CLONE: u32 = 1;
-pub const OPEN_TREE_CLOEXEC: u32 = 524288;
-pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1;
-pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2;
-pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4;
-pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16;
-pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32;
-pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64;
-pub const MOVE_MOUNT_SET_GROUP: u32 = 256;
-pub const MOVE_MOUNT__MASK: u32 = 375;
-pub const FSOPEN_CLOEXEC: u32 = 1;
-pub const FSPICK_CLOEXEC: u32 = 1;
-pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2;
-pub const FSPICK_NO_AUTOMOUNT: u32 = 4;
-pub const FSPICK_EMPTY_PATH: u32 = 8;
-pub const FSMOUNT_CLOEXEC: u32 = 1;
-pub const MOUNT_ATTR_RDONLY: u32 = 1;
-pub const MOUNT_ATTR_NOSUID: u32 = 2;
-pub const MOUNT_ATTR_NODEV: u32 = 4;
-pub const MOUNT_ATTR_NOEXEC: u32 = 8;
-pub const MOUNT_ATTR__ATIME: u32 = 112;
-pub const MOUNT_ATTR_RELATIME: u32 = 0;
-pub const MOUNT_ATTR_NOATIME: u32 = 16;
-pub const MOUNT_ATTR_STRICTATIME: u32 = 32;
-pub const MOUNT_ATTR_NODIRATIME: u32 = 128;
-pub const MOUNT_ATTR_IDMAP: u32 = 1048576;
-pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152;
-pub const MOUNT_ATTR_SIZE_VER0: u32 = 32;
-pub const INR_OPEN_CUR: u32 = 1024;
-pub const INR_OPEN_MAX: u32 = 4096;
-pub const BLOCK_SIZE_BITS: u32 = 10;
-pub const BLOCK_SIZE: u32 = 1024;
-pub const SEEK_SET: u32 = 0;
-pub const SEEK_CUR: u32 = 1;
-pub const SEEK_END: u32 = 2;
-pub const SEEK_DATA: u32 = 3;
-pub const SEEK_HOLE: u32 = 4;
-pub const SEEK_MAX: u32 = 4;
-pub const RENAME_NOREPLACE: u32 = 1;
-pub const RENAME_EXCHANGE: u32 = 2;
-pub const RENAME_WHITEOUT: u32 = 4;
-pub const FILE_DEDUPE_RANGE_SAME: u32 = 0;
-pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1;
-pub const NR_FILE: u32 = 8192;
-pub const FS_XFLAG_REALTIME: u32 = 1;
-pub const FS_XFLAG_PREALLOC: u32 = 2;
-pub const FS_XFLAG_IMMUTABLE: u32 = 8;
-pub const FS_XFLAG_APPEND: u32 = 16;
-pub const FS_XFLAG_SYNC: u32 = 32;
-pub const FS_XFLAG_NOATIME: u32 = 64;
-pub const FS_XFLAG_NODUMP: u32 = 128;
-pub const FS_XFLAG_RTINHERIT: u32 = 256;
-pub const FS_XFLAG_PROJINHERIT: u32 = 512;
-pub const FS_XFLAG_NOSYMLINKS: u32 = 1024;
-pub const FS_XFLAG_EXTSIZE: u32 = 2048;
-pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096;
-pub const FS_XFLAG_NODEFRAG: u32 = 8192;
-pub const FS_XFLAG_FILESTREAM: u32 = 16384;
-pub const FS_XFLAG_DAX: u32 = 32768;
-pub const FS_XFLAG_COWEXTSIZE: u32 = 65536;
-pub const FS_XFLAG_HASATTR: u32 = 2147483648;
-pub const BMAP_IOCTL: u32 = 1;
-pub const FSLABEL_MAX: u32 = 256;
-pub const FS_SECRM_FL: u32 = 1;
-pub const FS_UNRM_FL: u32 = 2;
-pub const FS_COMPR_FL: u32 = 4;
-pub const FS_SYNC_FL: u32 = 8;
-pub const FS_IMMUTABLE_FL: u32 = 16;
-pub const FS_APPEND_FL: u32 = 32;
-pub const FS_NODUMP_FL: u32 = 64;
-pub const FS_NOATIME_FL: u32 = 128;
-pub const FS_DIRTY_FL: u32 = 256;
-pub const FS_COMPRBLK_FL: u32 = 512;
-pub const FS_NOCOMP_FL: u32 = 1024;
-pub const FS_ENCRYPT_FL: u32 = 2048;
-pub const FS_BTREE_FL: u32 = 4096;
-pub const FS_INDEX_FL: u32 = 4096;
-pub const FS_IMAGIC_FL: u32 = 8192;
-pub const FS_JOURNAL_DATA_FL: u32 = 16384;
-pub const FS_NOTAIL_FL: u32 = 32768;
-pub const FS_DIRSYNC_FL: u32 = 65536;
-pub const FS_TOPDIR_FL: u32 = 131072;
-pub const FS_HUGE_FILE_FL: u32 = 262144;
-pub const FS_EXTENT_FL: u32 = 524288;
-pub const FS_VERITY_FL: u32 = 1048576;
-pub const FS_EA_INODE_FL: u32 = 2097152;
-pub const FS_EOFBLOCKS_FL: u32 = 4194304;
-pub const FS_NOCOW_FL: u32 = 8388608;
-pub const FS_DAX_FL: u32 = 33554432;
-pub const FS_INLINE_DATA_FL: u32 = 268435456;
-pub const FS_PROJINHERIT_FL: u32 = 536870912;
-pub const FS_CASEFOLD_FL: u32 = 1073741824;
-pub const FS_RESERVED_FL: u32 = 2147483648;
-pub const FS_FL_USER_VISIBLE: u32 = 253951;
-pub const FS_FL_USER_MODIFIABLE: u32 = 229631;
-pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1;
-pub const SYNC_FILE_RANGE_WRITE: u32 = 2;
-pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4;
-pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7;
-pub const FUTEX_WAIT: u32 = 0;
-pub const FUTEX_WAKE: u32 = 1;
-pub const FUTEX_FD: u32 = 2;
-pub const FUTEX_REQUEUE: u32 = 3;
-pub const FUTEX_CMP_REQUEUE: u32 = 4;
-pub const FUTEX_WAKE_OP: u32 = 5;
-pub const FUTEX_LOCK_PI: u32 = 6;
-pub const FUTEX_UNLOCK_PI: u32 = 7;
-pub const FUTEX_TRYLOCK_PI: u32 = 8;
-pub const FUTEX_WAIT_BITSET: u32 = 9;
-pub const FUTEX_WAKE_BITSET: u32 = 10;
-pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11;
-pub const FUTEX_CMP_REQUEUE_PI: u32 = 12;
-pub const FUTEX_LOCK_PI2: u32 = 13;
-pub const FUTEX_PRIVATE_FLAG: u32 = 128;
-pub const FUTEX_CLOCK_REALTIME: u32 = 256;
-pub const FUTEX_CMD_MASK: i32 = -385;
-pub const FUTEX_WAIT_PRIVATE: u32 = 128;
-pub const FUTEX_WAKE_PRIVATE: u32 = 129;
-pub const FUTEX_REQUEUE_PRIVATE: u32 = 131;
-pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132;
-pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133;
-pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134;
-pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141;
-pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135;
-pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136;
-pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137;
-pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138;
-pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139;
-pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140;
-pub const FUTEX_32: u32 = 2;
-pub const FUTEX_WAITV_MAX: u32 = 128;
-pub const FUTEX_WAITERS: u32 = 2147483648;
-pub const FUTEX_OWNER_DIED: u32 = 1073741824;
-pub const FUTEX_TID_MASK: u32 = 1073741823;
-pub const ROBUST_LIST_LIMIT: u32 = 2048;
-pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295;
-pub const FUTEX_OP_SET: u32 = 0;
-pub const FUTEX_OP_ADD: u32 = 1;
-pub const FUTEX_OP_OR: u32 = 2;
-pub const FUTEX_OP_ANDN: u32 = 3;
-pub const FUTEX_OP_XOR: u32 = 4;
-pub const FUTEX_OP_OPARG_SHIFT: u32 = 8;
-pub const FUTEX_OP_CMP_EQ: u32 = 0;
-pub const FUTEX_OP_CMP_NE: u32 = 1;
-pub const FUTEX_OP_CMP_LT: u32 = 2;
-pub const FUTEX_OP_CMP_LE: u32 = 3;
-pub const FUTEX_OP_CMP_GT: u32 = 4;
-pub const FUTEX_OP_CMP_GE: u32 = 5;
-pub const __UAPI_DEF_IF_IFCONF: u32 = 1;
-pub const __UAPI_DEF_IF_IFMAP: u32 = 1;
-pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1;
-pub const __UAPI_DEF_IF_IFREQ: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1;
-pub const __UAPI_DEF_IN_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN_IPPROTO: u32 = 1;
-pub const __UAPI_DEF_IN_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP_MREQ: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1;
-pub const __UAPI_DEF_IN_CLASS: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1;
-pub const __UAPI_DEF_IPV6_MREQ: u32 = 1;
-pub const __UAPI_DEF_IPPROTO_V6: u32 = 1;
-pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1;
-pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1;
-pub const __UAPI_DEF_XATTR: u32 = 1;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const IP_TOS: u32 = 1;
-pub const IP_TTL: u32 = 2;
-pub const IP_HDRINCL: u32 = 3;
-pub const IP_OPTIONS: u32 = 4;
-pub const IP_ROUTER_ALERT: u32 = 5;
-pub const IP_RECVOPTS: u32 = 6;
-pub const IP_RETOPTS: u32 = 7;
-pub const IP_PKTINFO: u32 = 8;
-pub const IP_PKTOPTIONS: u32 = 9;
-pub const IP_MTU_DISCOVER: u32 = 10;
-pub const IP_RECVERR: u32 = 11;
-pub const IP_RECVTTL: u32 = 12;
-pub const IP_RECVTOS: u32 = 13;
-pub const IP_MTU: u32 = 14;
-pub const IP_FREEBIND: u32 = 15;
-pub const IP_IPSEC_POLICY: u32 = 16;
-pub const IP_XFRM_POLICY: u32 = 17;
-pub const IP_PASSSEC: u32 = 18;
-pub const IP_TRANSPARENT: u32 = 19;
-pub const IP_RECVRETOPTS: u32 = 7;
-pub const IP_ORIGDSTADDR: u32 = 20;
-pub const IP_RECVORIGDSTADDR: u32 = 20;
-pub const IP_MINTTL: u32 = 21;
-pub const IP_NODEFRAG: u32 = 22;
-pub const IP_CHECKSUM: u32 = 23;
-pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24;
-pub const IP_RECVFRAGSIZE: u32 = 25;
-pub const IP_RECVERR_RFC4884: u32 = 26;
-pub const IP_PMTUDISC_DONT: u32 = 0;
-pub const IP_PMTUDISC_WANT: u32 = 1;
-pub const IP_PMTUDISC_DO: u32 = 2;
-pub const IP_PMTUDISC_PROBE: u32 = 3;
-pub const IP_PMTUDISC_INTERFACE: u32 = 4;
-pub const IP_PMTUDISC_OMIT: u32 = 5;
-pub const IP_MULTICAST_IF: u32 = 32;
-pub const IP_MULTICAST_TTL: u32 = 33;
-pub const IP_MULTICAST_LOOP: u32 = 34;
-pub const IP_ADD_MEMBERSHIP: u32 = 35;
-pub const IP_DROP_MEMBERSHIP: u32 = 36;
-pub const IP_UNBLOCK_SOURCE: u32 = 37;
-pub const IP_BLOCK_SOURCE: u32 = 38;
-pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39;
-pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40;
-pub const IP_MSFILTER: u32 = 41;
-pub const MCAST_JOIN_GROUP: u32 = 42;
-pub const MCAST_BLOCK_SOURCE: u32 = 43;
-pub const MCAST_UNBLOCK_SOURCE: u32 = 44;
-pub const MCAST_LEAVE_GROUP: u32 = 45;
-pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46;
-pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47;
-pub const MCAST_MSFILTER: u32 = 48;
-pub const IP_MULTICAST_ALL: u32 = 49;
-pub const IP_UNICAST_IF: u32 = 50;
-pub const MCAST_EXCLUDE: u32 = 0;
-pub const MCAST_INCLUDE: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1;
-pub const __SOCK_SIZE__: u32 = 16;
-pub const IN_CLASSA_NET: u32 = 4278190080;
-pub const IN_CLASSA_NSHIFT: u32 = 24;
-pub const IN_CLASSA_HOST: u32 = 16777215;
-pub const IN_CLASSA_MAX: u32 = 128;
-pub const IN_CLASSB_NET: u32 = 4294901760;
-pub const IN_CLASSB_NSHIFT: u32 = 16;
-pub const IN_CLASSB_HOST: u32 = 65535;
-pub const IN_CLASSB_MAX: u32 = 65536;
-pub const IN_CLASSC_NET: u32 = 4294967040;
-pub const IN_CLASSC_NSHIFT: u32 = 8;
-pub const IN_CLASSC_HOST: u32 = 255;
-pub const IN_MULTICAST_NET: u32 = 3758096384;
-pub const IN_CLASSE_NET: u32 = 4294967295;
-pub const IN_CLASSE_NSHIFT: u32 = 0;
-pub const IN_LOOPBACKNET: u32 = 127;
-pub const INADDR_LOOPBACK: u32 = 2130706433;
-pub const INADDR_UNSPEC_GROUP: u32 = 3758096384;
-pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385;
-pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386;
-pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490;
-pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639;
-pub const __LITTLE_ENDIAN: u32 = 1234;
-pub const IN_ACCESS: u32 = 1;
-pub const IN_MODIFY: u32 = 2;
-pub const IN_ATTRIB: u32 = 4;
-pub const IN_CLOSE_WRITE: u32 = 8;
-pub const IN_CLOSE_NOWRITE: u32 = 16;
-pub const IN_OPEN: u32 = 32;
-pub const IN_MOVED_FROM: u32 = 64;
-pub const IN_MOVED_TO: u32 = 128;
-pub const IN_CREATE: u32 = 256;
-pub const IN_DELETE: u32 = 512;
-pub const IN_DELETE_SELF: u32 = 1024;
-pub const IN_MOVE_SELF: u32 = 2048;
-pub const IN_UNMOUNT: u32 = 8192;
-pub const IN_Q_OVERFLOW: u32 = 16384;
-pub const IN_IGNORED: u32 = 32768;
-pub const IN_CLOSE: u32 = 24;
-pub const IN_MOVE: u32 = 192;
-pub const IN_ONLYDIR: u32 = 16777216;
-pub const IN_DONT_FOLLOW: u32 = 33554432;
-pub const IN_EXCL_UNLINK: u32 = 67108864;
-pub const IN_MASK_CREATE: u32 = 268435456;
-pub const IN_MASK_ADD: u32 = 536870912;
-pub const IN_ISDIR: u32 = 1073741824;
-pub const IN_ONESHOT: u32 = 2147483648;
-pub const IN_ALL_EVENTS: u32 = 4095;
-pub const IN_CLOEXEC: u32 = 524288;
-pub const IN_NONBLOCK: u32 = 2048;
-pub const IPTOS_TOS_MASK: u32 = 30;
-pub const IPTOS_LOWDELAY: u32 = 16;
-pub const IPTOS_THROUGHPUT: u32 = 8;
-pub const IPTOS_RELIABILITY: u32 = 4;
-pub const IPTOS_MINCOST: u32 = 2;
-pub const IPTOS_PREC_MASK: u32 = 224;
-pub const IPTOS_PREC_NETCONTROL: u32 = 224;
-pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192;
-pub const IPTOS_PREC_CRITIC_ECP: u32 = 160;
-pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128;
-pub const IPTOS_PREC_FLASH: u32 = 96;
-pub const IPTOS_PREC_IMMEDIATE: u32 = 64;
-pub const IPTOS_PREC_PRIORITY: u32 = 32;
-pub const IPTOS_PREC_ROUTINE: u32 = 0;
-pub const IPOPT_COPY: u32 = 128;
-pub const IPOPT_CLASS_MASK: u32 = 96;
-pub const IPOPT_NUMBER_MASK: u32 = 31;
-pub const IPOPT_CONTROL: u32 = 0;
-pub const IPOPT_RESERVED1: u32 = 32;
-pub const IPOPT_MEASUREMENT: u32 = 64;
-pub const IPOPT_RESERVED2: u32 = 96;
-pub const IPOPT_END: u32 = 0;
-pub const IPOPT_NOOP: u32 = 1;
-pub const IPOPT_SEC: u32 = 130;
-pub const IPOPT_LSRR: u32 = 131;
-pub const IPOPT_TIMESTAMP: u32 = 68;
-pub const IPOPT_CIPSO: u32 = 134;
-pub const IPOPT_RR: u32 = 7;
-pub const IPOPT_SID: u32 = 136;
-pub const IPOPT_SSRR: u32 = 137;
-pub const IPOPT_RA: u32 = 148;
-pub const IPVERSION: u32 = 4;
-pub const MAXTTL: u32 = 255;
-pub const IPDEFTTL: u32 = 64;
-pub const IPOPT_OPTVAL: u32 = 0;
-pub const IPOPT_OLEN: u32 = 1;
-pub const IPOPT_OFFSET: u32 = 2;
-pub const IPOPT_MINOFF: u32 = 4;
-pub const MAX_IPOPTLEN: u32 = 40;
-pub const IPOPT_NOP: u32 = 1;
-pub const IPOPT_EOL: u32 = 0;
-pub const IPOPT_TS: u32 = 68;
-pub const IPOPT_TS_TSONLY: u32 = 0;
-pub const IPOPT_TS_TSANDADDR: u32 = 1;
-pub const IPOPT_TS_PRESPEC: u32 = 3;
-pub const IPV4_BEET_PHMAXLEN: u32 = 8;
-pub const IPV6_FL_A_GET: u32 = 0;
-pub const IPV6_FL_A_PUT: u32 = 1;
-pub const IPV6_FL_A_RENEW: u32 = 2;
-pub const IPV6_FL_F_CREATE: u32 = 1;
-pub const IPV6_FL_F_EXCL: u32 = 2;
-pub const IPV6_FL_F_REFLECT: u32 = 4;
-pub const IPV6_FL_F_REMOTE: u32 = 8;
-pub const IPV6_FL_S_NONE: u32 = 0;
-pub const IPV6_FL_S_EXCL: u32 = 1;
-pub const IPV6_FL_S_PROCESS: u32 = 2;
-pub const IPV6_FL_S_USER: u32 = 3;
-pub const IPV6_FL_S_ANY: u32 = 255;
-pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575;
-pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880;
-pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0;
-pub const IPV6_PRIORITY_FILLER: u32 = 256;
-pub const IPV6_PRIORITY_UNATTENDED: u32 = 512;
-pub const IPV6_PRIORITY_RESERVED1: u32 = 768;
-pub const IPV6_PRIORITY_BULK: u32 = 1024;
-pub const IPV6_PRIORITY_RESERVED2: u32 = 1280;
-pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536;
-pub const IPV6_PRIORITY_CONTROL: u32 = 1792;
-pub const IPV6_PRIORITY_8: u32 = 2048;
-pub const IPV6_PRIORITY_9: u32 = 2304;
-pub const IPV6_PRIORITY_10: u32 = 2560;
-pub const IPV6_PRIORITY_11: u32 = 2816;
-pub const IPV6_PRIORITY_12: u32 = 3072;
-pub const IPV6_PRIORITY_13: u32 = 3328;
-pub const IPV6_PRIORITY_14: u32 = 3584;
-pub const IPV6_PRIORITY_15: u32 = 3840;
-pub const IPPROTO_HOPOPTS: u32 = 0;
-pub const IPPROTO_ROUTING: u32 = 43;
-pub const IPPROTO_FRAGMENT: u32 = 44;
-pub const IPPROTO_ICMPV6: u32 = 58;
-pub const IPPROTO_NONE: u32 = 59;
-pub const IPPROTO_DSTOPTS: u32 = 60;
-pub const IPPROTO_MH: u32 = 135;
-pub const IPV6_TLV_PAD1: u32 = 0;
-pub const IPV6_TLV_PADN: u32 = 1;
-pub const IPV6_TLV_ROUTERALERT: u32 = 5;
-pub const IPV6_TLV_CALIPSO: u32 = 7;
-pub const IPV6_TLV_IOAM: u32 = 49;
-pub const IPV6_TLV_JUMBO: u32 = 194;
-pub const IPV6_TLV_HAO: u32 = 201;
-pub const IPV6_ADDRFORM: u32 = 1;
-pub const IPV6_2292PKTINFO: u32 = 2;
-pub const IPV6_2292HOPOPTS: u32 = 3;
-pub const IPV6_2292DSTOPTS: u32 = 4;
-pub const IPV6_2292RTHDR: u32 = 5;
-pub const IPV6_2292PKTOPTIONS: u32 = 6;
-pub const IPV6_CHECKSUM: u32 = 7;
-pub const IPV6_2292HOPLIMIT: u32 = 8;
-pub const IPV6_NEXTHOP: u32 = 9;
-pub const IPV6_AUTHHDR: u32 = 10;
-pub const IPV6_FLOWINFO: u32 = 11;
-pub const IPV6_UNICAST_HOPS: u32 = 16;
-pub const IPV6_MULTICAST_IF: u32 = 17;
-pub const IPV6_MULTICAST_HOPS: u32 = 18;
-pub const IPV6_MULTICAST_LOOP: u32 = 19;
-pub const IPV6_ADD_MEMBERSHIP: u32 = 20;
-pub const IPV6_DROP_MEMBERSHIP: u32 = 21;
-pub const IPV6_ROUTER_ALERT: u32 = 22;
-pub const IPV6_MTU_DISCOVER: u32 = 23;
-pub const IPV6_MTU: u32 = 24;
-pub const IPV6_RECVERR: u32 = 25;
-pub const IPV6_V6ONLY: u32 = 26;
-pub const IPV6_JOIN_ANYCAST: u32 = 27;
-pub const IPV6_LEAVE_ANYCAST: u32 = 28;
-pub const IPV6_MULTICAST_ALL: u32 = 29;
-pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30;
-pub const IPV6_RECVERR_RFC4884: u32 = 31;
-pub const IPV6_PMTUDISC_DONT: u32 = 0;
-pub const IPV6_PMTUDISC_WANT: u32 = 1;
-pub const IPV6_PMTUDISC_DO: u32 = 2;
-pub const IPV6_PMTUDISC_PROBE: u32 = 3;
-pub const IPV6_PMTUDISC_INTERFACE: u32 = 4;
-pub const IPV6_PMTUDISC_OMIT: u32 = 5;
-pub const IPV6_FLOWLABEL_MGR: u32 = 32;
-pub const IPV6_FLOWINFO_SEND: u32 = 33;
-pub const IPV6_IPSEC_POLICY: u32 = 34;
-pub const IPV6_XFRM_POLICY: u32 = 35;
-pub const IPV6_HDRINCL: u32 = 36;
-pub const IPV6_RECVPKTINFO: u32 = 49;
-pub const IPV6_PKTINFO: u32 = 50;
-pub const IPV6_RECVHOPLIMIT: u32 = 51;
-pub const IPV6_HOPLIMIT: u32 = 52;
-pub const IPV6_RECVHOPOPTS: u32 = 53;
-pub const IPV6_HOPOPTS: u32 = 54;
-pub const IPV6_RTHDRDSTOPTS: u32 = 55;
-pub const IPV6_RECVRTHDR: u32 = 56;
-pub const IPV6_RTHDR: u32 = 57;
-pub const IPV6_RECVDSTOPTS: u32 = 58;
-pub const IPV6_DSTOPTS: u32 = 59;
-pub const IPV6_RECVPATHMTU: u32 = 60;
-pub const IPV6_PATHMTU: u32 = 61;
-pub const IPV6_DONTFRAG: u32 = 62;
-pub const IPV6_RECVTCLASS: u32 = 66;
-pub const IPV6_TCLASS: u32 = 67;
-pub const IPV6_AUTOFLOWLABEL: u32 = 70;
-pub const IPV6_ADDR_PREFERENCES: u32 = 72;
-pub const IPV6_PREFER_SRC_TMP: u32 = 1;
-pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2;
-pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256;
-pub const IPV6_PREFER_SRC_COA: u32 = 4;
-pub const IPV6_PREFER_SRC_HOME: u32 = 1024;
-pub const IPV6_PREFER_SRC_CGA: u32 = 8;
-pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048;
-pub const IPV6_MINHOPCOUNT: u32 = 73;
-pub const IPV6_ORIGDSTADDR: u32 = 74;
-pub const IPV6_RECVORIGDSTADDR: u32 = 74;
-pub const IPV6_TRANSPARENT: u32 = 75;
-pub const IPV6_UNICAST_IF: u32 = 76;
-pub const IPV6_RECVFRAGSIZE: u32 = 77;
-pub const IPV6_FREEBIND: u32 = 78;
-pub const IPV6_MIN_MTU: u32 = 1280;
-pub const IPV6_SRCRT_STRICT: u32 = 1;
-pub const IPV6_SRCRT_TYPE_0: u32 = 0;
-pub const IPV6_SRCRT_TYPE_2: u32 = 2;
-pub const IPV6_SRCRT_TYPE_3: u32 = 3;
-pub const IPV6_SRCRT_TYPE_4: u32 = 4;
-pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0;
-pub const ADFS_SUPER_MAGIC: u32 = 44533;
-pub const AFFS_SUPER_MAGIC: u32 = 44543;
-pub const AFS_SUPER_MAGIC: u32 = 1397113167;
-pub const AUTOFS_SUPER_MAGIC: u32 = 391;
-pub const CEPH_SUPER_MAGIC: u32 = 12805120;
-pub const CODA_SUPER_MAGIC: u32 = 1937076805;
-pub const CRAMFS_MAGIC: u32 = 684539205;
-pub const CRAMFS_MAGIC_WEND: u32 = 1161678120;
-pub const DEBUGFS_MAGIC: u32 = 1684170528;
-pub const SECURITYFS_MAGIC: u32 = 1935894131;
-pub const SELINUX_MAGIC: u32 = 4185718668;
-pub const SMACK_MAGIC: u32 = 1128357203;
-pub const RAMFS_MAGIC: u32 = 2240043254;
-pub const TMPFS_MAGIC: u32 = 16914836;
-pub const HUGETLBFS_MAGIC: u32 = 2508478710;
-pub const SQUASHFS_MAGIC: u32 = 1936814952;
-pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791;
-pub const EFS_SUPER_MAGIC: u32 = 4278867;
-pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530;
-pub const EXT2_SUPER_MAGIC: u32 = 61267;
-pub const EXT3_SUPER_MAGIC: u32 = 61267;
-pub const XENFS_SUPER_MAGIC: u32 = 2881100148;
-pub const EXT4_SUPER_MAGIC: u32 = 61267;
-pub const BTRFS_SUPER_MAGIC: u32 = 2435016766;
-pub const NILFS_SUPER_MAGIC: u32 = 13364;
-pub const F2FS_SUPER_MAGIC: u32 = 4076150800;
-pub const HPFS_SUPER_MAGIC: u32 = 4187351113;
-pub const ISOFS_SUPER_MAGIC: u32 = 38496;
-pub const JFFS2_SUPER_MAGIC: u32 = 29366;
-pub const XFS_SUPER_MAGIC: u32 = 1481003842;
-pub const PSTOREFS_MAGIC: u32 = 1634035564;
-pub const EFIVARFS_MAGIC: u32 = 3730735588;
-pub const HOSTFS_SUPER_MAGIC: u32 = 12648430;
-pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128;
-pub const FUSE_SUPER_MAGIC: u32 = 1702057286;
-pub const MINIX_SUPER_MAGIC: u32 = 4991;
-pub const MINIX_SUPER_MAGIC2: u32 = 5007;
-pub const MINIX2_SUPER_MAGIC: u32 = 9320;
-pub const MINIX2_SUPER_MAGIC2: u32 = 9336;
-pub const MINIX3_SUPER_MAGIC: u32 = 19802;
-pub const MSDOS_SUPER_MAGIC: u32 = 19780;
-pub const EXFAT_SUPER_MAGIC: u32 = 538032816;
-pub const NCP_SUPER_MAGIC: u32 = 22092;
-pub const NFS_SUPER_MAGIC: u32 = 26985;
-pub const OCFS2_SUPER_MAGIC: u32 = 1952539503;
-pub const OPENPROM_SUPER_MAGIC: u32 = 40865;
-pub const QNX4_SUPER_MAGIC: u32 = 47;
-pub const QNX6_SUPER_MAGIC: u32 = 1746473250;
-pub const AFS_FS_MAGIC: u32 = 1799439955;
-pub const REISERFS_SUPER_MAGIC: u32 = 1382369651;
-pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0";
-pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0";
-pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0";
-pub const SMB_SUPER_MAGIC: u32 = 20859;
-pub const CIFS_SUPER_MAGIC: u32 = 4283649346;
-pub const SMB2_SUPER_MAGIC: u32 = 4266872130;
-pub const CGROUP_SUPER_MAGIC: u32 = 2613483;
-pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888;
-pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209;
-pub const STACK_END_MAGIC: u32 = 1470918301;
-pub const TRACEFS_MAGIC: u32 = 1953653091;
-pub const V9FS_MAGIC: u32 = 16914839;
-pub const BDEVFS_MAGIC: u32 = 1650746742;
-pub const DAXFS_MAGIC: u32 = 1684300152;
-pub const BINFMTFS_MAGIC: u32 = 1112100429;
-pub const DEVPTS_SUPER_MAGIC: u32 = 7377;
-pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352;
-pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762;
-pub const PIPEFS_MAGIC: u32 = 1346981957;
-pub const PROC_SUPER_MAGIC: u32 = 40864;
-pub const SOCKFS_MAGIC: u32 = 1397703499;
-pub const SYSFS_MAGIC: u32 = 1650812274;
-pub const USBDEVICE_SUPER_MAGIC: u32 = 40866;
-pub const MTD_INODE_FS_MAGIC: u32 = 288389204;
-pub const ANON_INODE_FS_MAGIC: u32 = 151263540;
-pub const BTRFS_TEST_MAGIC: u32 = 1936880249;
-pub const NSFS_MAGIC: u32 = 1853056627;
-pub const BPF_FS_MAGIC: u32 = 3405662737;
-pub const AAFS_MAGIC: u32 = 1513908720;
-pub const ZONEFS_MAGIC: u32 = 1515144787;
-pub const UDF_SUPER_MAGIC: u32 = 352400198;
-pub const DMA_BUF_MAGIC: u32 = 1145913666;
-pub const DEVMEM_MAGIC: u32 = 1162691661;
-pub const SECRETMEM_MAGIC: u32 = 1397048141;
-pub const PROT_READ: u32 = 1;
-pub const PROT_WRITE: u32 = 2;
-pub const PROT_EXEC: u32 = 4;
-pub const PROT_SEM: u32 = 8;
-pub const PROT_NONE: u32 = 0;
-pub const PROT_GROWSDOWN: u32 = 16777216;
-pub const PROT_GROWSUP: u32 = 33554432;
-pub const MAP_TYPE: u32 = 15;
-pub const MAP_FIXED: u32 = 16;
-pub const MAP_ANONYMOUS: u32 = 32;
-pub const MAP_POPULATE: u32 = 32768;
-pub const MAP_NONBLOCK: u32 = 65536;
-pub const MAP_STACK: u32 = 131072;
-pub const MAP_HUGETLB: u32 = 262144;
-pub const MAP_SYNC: u32 = 524288;
-pub const MAP_FIXED_NOREPLACE: u32 = 1048576;
-pub const MAP_UNINITIALIZED: u32 = 67108864;
-pub const MLOCK_ONFAULT: u32 = 1;
-pub const MS_ASYNC: u32 = 1;
-pub const MS_INVALIDATE: u32 = 2;
-pub const MS_SYNC: u32 = 4;
-pub const MADV_NORMAL: u32 = 0;
-pub const MADV_RANDOM: u32 = 1;
-pub const MADV_SEQUENTIAL: u32 = 2;
-pub const MADV_WILLNEED: u32 = 3;
-pub const MADV_DONTNEED: u32 = 4;
-pub const MADV_FREE: u32 = 8;
-pub const MADV_REMOVE: u32 = 9;
-pub const MADV_DONTFORK: u32 = 10;
-pub const MADV_DOFORK: u32 = 11;
-pub const MADV_HWPOISON: u32 = 100;
-pub const MADV_SOFT_OFFLINE: u32 = 101;
-pub const MADV_MERGEABLE: u32 = 12;
-pub const MADV_UNMERGEABLE: u32 = 13;
-pub const MADV_HUGEPAGE: u32 = 14;
-pub const MADV_NOHUGEPAGE: u32 = 15;
-pub const MADV_DONTDUMP: u32 = 16;
-pub const MADV_DODUMP: u32 = 17;
-pub const MADV_WIPEONFORK: u32 = 18;
-pub const MADV_KEEPONFORK: u32 = 19;
-pub const MADV_COLD: u32 = 20;
-pub const MADV_PAGEOUT: u32 = 21;
-pub const MADV_POPULATE_READ: u32 = 22;
-pub const MADV_POPULATE_WRITE: u32 = 23;
-pub const MADV_DONTNEED_LOCKED: u32 = 24;
-pub const MADV_COLLAPSE: u32 = 25;
-pub const MAP_FILE: u32 = 0;
-pub const PKEY_DISABLE_ACCESS: u32 = 1;
-pub const PKEY_DISABLE_WRITE: u32 = 2;
-pub const PKEY_ACCESS_MASK: u32 = 3;
-pub const MAP_GROWSDOWN: u32 = 256;
-pub const MAP_DENYWRITE: u32 = 2048;
-pub const MAP_EXECUTABLE: u32 = 4096;
-pub const MAP_LOCKED: u32 = 8192;
-pub const MAP_NORESERVE: u32 = 16384;
-pub const MCL_CURRENT: u32 = 1;
-pub const MCL_FUTURE: u32 = 2;
-pub const MCL_ONFAULT: u32 = 4;
-pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26;
-pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63;
-pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096;
-pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824;
-pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416;
-pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280;
-pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144;
-pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872;
-pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736;
-pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600;
-pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192;
-pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056;
-pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920;
-pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784;
-pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376;
-pub const MREMAP_MAYMOVE: u32 = 1;
-pub const MREMAP_FIXED: u32 = 2;
-pub const MREMAP_DONTUNMAP: u32 = 4;
-pub const OVERCOMMIT_GUESS: u32 = 0;
-pub const OVERCOMMIT_ALWAYS: u32 = 1;
-pub const OVERCOMMIT_NEVER: u32 = 2;
-pub const MAP_SHARED: u32 = 1;
-pub const MAP_PRIVATE: u32 = 2;
-pub const MAP_SHARED_VALIDATE: u32 = 3;
-pub const MAP_HUGE_SHIFT: u32 = 26;
-pub const MAP_HUGE_MASK: u32 = 63;
-pub const MAP_HUGE_16KB: u32 = 939524096;
-pub const MAP_HUGE_64KB: u32 = 1073741824;
-pub const MAP_HUGE_512KB: u32 = 1275068416;
-pub const MAP_HUGE_1MB: u32 = 1342177280;
-pub const MAP_HUGE_2MB: u32 = 1409286144;
-pub const MAP_HUGE_8MB: u32 = 1543503872;
-pub const MAP_HUGE_16MB: u32 = 1610612736;
-pub const MAP_HUGE_32MB: u32 = 1677721600;
-pub const MAP_HUGE_256MB: u32 = 1879048192;
-pub const MAP_HUGE_512MB: u32 = 1946157056;
-pub const MAP_HUGE_1GB: u32 = 2013265920;
-pub const MAP_HUGE_2GB: u32 = 2080374784;
-pub const MAP_HUGE_16GB: u32 = 2281701376;
-pub const SIOCGSTAMP_OLD: u32 = 35078;
-pub const SIOCGSTAMPNS_OLD: u32 = 35079;
-pub const SOL_SOCKET: u32 = 1;
-pub const SO_DEBUG: u32 = 1;
-pub const SO_REUSEADDR: u32 = 2;
-pub const SO_TYPE: u32 = 3;
-pub const SO_ERROR: u32 = 4;
-pub const SO_DONTROUTE: u32 = 5;
-pub const SO_BROADCAST: u32 = 6;
-pub const SO_SNDBUF: u32 = 7;
-pub const SO_RCVBUF: u32 = 8;
-pub const SO_SNDBUFFORCE: u32 = 32;
-pub const SO_RCVBUFFORCE: u32 = 33;
-pub const SO_KEEPALIVE: u32 = 9;
-pub const SO_OOBINLINE: u32 = 10;
-pub const SO_NO_CHECK: u32 = 11;
-pub const SO_PRIORITY: u32 = 12;
-pub const SO_LINGER: u32 = 13;
-pub const SO_BSDCOMPAT: u32 = 14;
-pub const SO_REUSEPORT: u32 = 15;
-pub const SO_PASSCRED: u32 = 16;
-pub const SO_PEERCRED: u32 = 17;
-pub const SO_RCVLOWAT: u32 = 18;
-pub const SO_SNDLOWAT: u32 = 19;
-pub const SO_RCVTIMEO_OLD: u32 = 20;
-pub const SO_SNDTIMEO_OLD: u32 = 21;
-pub const SO_SECURITY_AUTHENTICATION: u32 = 22;
-pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23;
-pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24;
-pub const SO_BINDTODEVICE: u32 = 25;
-pub const SO_ATTACH_FILTER: u32 = 26;
-pub const SO_DETACH_FILTER: u32 = 27;
-pub const SO_GET_FILTER: u32 = 26;
-pub const SO_PEERNAME: u32 = 28;
-pub const SO_ACCEPTCONN: u32 = 30;
-pub const SO_PEERSEC: u32 = 31;
-pub const SO_PASSSEC: u32 = 34;
-pub const SO_MARK: u32 = 36;
-pub const SO_PROTOCOL: u32 = 38;
-pub const SO_DOMAIN: u32 = 39;
-pub const SO_RXQ_OVFL: u32 = 40;
-pub const SO_WIFI_STATUS: u32 = 41;
-pub const SCM_WIFI_STATUS: u32 = 41;
-pub const SO_PEEK_OFF: u32 = 42;
-pub const SO_NOFCS: u32 = 43;
-pub const SO_LOCK_FILTER: u32 = 44;
-pub const SO_SELECT_ERR_QUEUE: u32 = 45;
-pub const SO_BUSY_POLL: u32 = 46;
-pub const SO_MAX_PACING_RATE: u32 = 47;
-pub const SO_BPF_EXTENSIONS: u32 = 48;
-pub const SO_INCOMING_CPU: u32 = 49;
-pub const SO_ATTACH_BPF: u32 = 50;
-pub const SO_DETACH_BPF: u32 = 27;
-pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51;
-pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52;
-pub const SO_CNX_ADVICE: u32 = 53;
-pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54;
-pub const SO_MEMINFO: u32 = 55;
-pub const SO_INCOMING_NAPI_ID: u32 = 56;
-pub const SO_COOKIE: u32 = 57;
-pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58;
-pub const SO_PEERGROUPS: u32 = 59;
-pub const SO_ZEROCOPY: u32 = 60;
-pub const SO_TXTIME: u32 = 61;
-pub const SCM_TXTIME: u32 = 61;
-pub const SO_BINDTOIFINDEX: u32 = 62;
-pub const SO_TIMESTAMP_OLD: u32 = 29;
-pub const SO_TIMESTAMPNS_OLD: u32 = 35;
-pub const SO_TIMESTAMPING_OLD: u32 = 37;
-pub const SO_TIMESTAMP_NEW: u32 = 63;
-pub const SO_TIMESTAMPNS_NEW: u32 = 64;
-pub const SO_TIMESTAMPING_NEW: u32 = 65;
-pub const SO_RCVTIMEO_NEW: u32 = 66;
-pub const SO_SNDTIMEO_NEW: u32 = 67;
-pub const SO_DETACH_REUSEPORT_BPF: u32 = 68;
-pub const SO_PREFER_BUSY_POLL: u32 = 69;
-pub const SO_BUSY_POLL_BUDGET: u32 = 70;
-pub const SO_NETNS_COOKIE: u32 = 71;
-pub const SO_BUF_LOCK: u32 = 72;
-pub const SO_RESERVE_MEM: u32 = 73;
-pub const SO_TXREHASH: u32 = 74;
-pub const SO_RCVMARK: u32 = 75;
-pub const SYS_SOCKET: u32 = 1;
-pub const SYS_BIND: u32 = 2;
-pub const SYS_CONNECT: u32 = 3;
-pub const SYS_LISTEN: u32 = 4;
-pub const SYS_ACCEPT: u32 = 5;
-pub const SYS_GETSOCKNAME: u32 = 6;
-pub const SYS_GETPEERNAME: u32 = 7;
-pub const SYS_SOCKETPAIR: u32 = 8;
-pub const SYS_SEND: u32 = 9;
-pub const SYS_RECV: u32 = 10;
-pub const SYS_SENDTO: u32 = 11;
-pub const SYS_RECVFROM: u32 = 12;
-pub const SYS_SHUTDOWN: u32 = 13;
-pub const SYS_SETSOCKOPT: u32 = 14;
-pub const SYS_GETSOCKOPT: u32 = 15;
-pub const SYS_SENDMSG: u32 = 16;
-pub const SYS_RECVMSG: u32 = 17;
-pub const SYS_ACCEPT4: u32 = 18;
-pub const SYS_RECVMMSG: u32 = 19;
-pub const SYS_SENDMMSG: u32 = 20;
-pub const __SO_ACCEPTCON: u32 = 65536;
-pub const POLLIN: u32 = 1;
-pub const POLLPRI: u32 = 2;
-pub const POLLOUT: u32 = 4;
-pub const POLLERR: u32 = 8;
-pub const POLLHUP: u32 = 16;
-pub const POLLNVAL: u32 = 32;
-pub const POLLRDNORM: u32 = 64;
-pub const POLLRDBAND: u32 = 128;
-pub const POLLWRNORM: u32 = 256;
-pub const POLLWRBAND: u32 = 512;
-pub const POLLMSG: u32 = 1024;
-pub const POLLREMOVE: u32 = 4096;
-pub const POLLRDHUP: u32 = 8192;
-pub const PR_SET_PDEATHSIG: u32 = 1;
-pub const PR_GET_PDEATHSIG: u32 = 2;
-pub const PR_GET_DUMPABLE: u32 = 3;
-pub const PR_SET_DUMPABLE: u32 = 4;
-pub const PR_GET_UNALIGN: u32 = 5;
-pub const PR_SET_UNALIGN: u32 = 6;
-pub const PR_UNALIGN_NOPRINT: u32 = 1;
-pub const PR_UNALIGN_SIGBUS: u32 = 2;
-pub const PR_GET_KEEPCAPS: u32 = 7;
-pub const PR_SET_KEEPCAPS: u32 = 8;
-pub const PR_GET_FPEMU: u32 = 9;
-pub const PR_SET_FPEMU: u32 = 10;
-pub const PR_FPEMU_NOPRINT: u32 = 1;
-pub const PR_FPEMU_SIGFPE: u32 = 2;
-pub const PR_GET_FPEXC: u32 = 11;
-pub const PR_SET_FPEXC: u32 = 12;
-pub const PR_FP_EXC_SW_ENABLE: u32 = 128;
-pub const PR_FP_EXC_DIV: u32 = 65536;
-pub const PR_FP_EXC_OVF: u32 = 131072;
-pub const PR_FP_EXC_UND: u32 = 262144;
-pub const PR_FP_EXC_RES: u32 = 524288;
-pub const PR_FP_EXC_INV: u32 = 1048576;
-pub const PR_FP_EXC_DISABLED: u32 = 0;
-pub const PR_FP_EXC_NONRECOV: u32 = 1;
-pub const PR_FP_EXC_ASYNC: u32 = 2;
-pub const PR_FP_EXC_PRECISE: u32 = 3;
-pub const PR_GET_TIMING: u32 = 13;
-pub const PR_SET_TIMING: u32 = 14;
-pub const PR_TIMING_STATISTICAL: u32 = 0;
-pub const PR_TIMING_TIMESTAMP: u32 = 1;
-pub const PR_SET_NAME: u32 = 15;
-pub const PR_GET_NAME: u32 = 16;
-pub const PR_GET_ENDIAN: u32 = 19;
-pub const PR_SET_ENDIAN: u32 = 20;
-pub const PR_ENDIAN_BIG: u32 = 0;
-pub const PR_ENDIAN_LITTLE: u32 = 1;
-pub const PR_ENDIAN_PPC_LITTLE: u32 = 2;
-pub const PR_GET_SECCOMP: u32 = 21;
-pub const PR_SET_SECCOMP: u32 = 22;
-pub const PR_CAPBSET_READ: u32 = 23;
-pub const PR_CAPBSET_DROP: u32 = 24;
-pub const PR_GET_TSC: u32 = 25;
-pub const PR_SET_TSC: u32 = 26;
-pub const PR_TSC_ENABLE: u32 = 1;
-pub const PR_TSC_SIGSEGV: u32 = 2;
-pub const PR_GET_SECUREBITS: u32 = 27;
-pub const PR_SET_SECUREBITS: u32 = 28;
-pub const PR_SET_TIMERSLACK: u32 = 29;
-pub const PR_GET_TIMERSLACK: u32 = 30;
-pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31;
-pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32;
-pub const PR_MCE_KILL: u32 = 33;
-pub const PR_MCE_KILL_CLEAR: u32 = 0;
-pub const PR_MCE_KILL_SET: u32 = 1;
-pub const PR_MCE_KILL_LATE: u32 = 0;
-pub const PR_MCE_KILL_EARLY: u32 = 1;
-pub const PR_MCE_KILL_DEFAULT: u32 = 2;
-pub const PR_MCE_KILL_GET: u32 = 34;
-pub const PR_SET_MM: u32 = 35;
-pub const PR_SET_MM_START_CODE: u32 = 1;
-pub const PR_SET_MM_END_CODE: u32 = 2;
-pub const PR_SET_MM_START_DATA: u32 = 3;
-pub const PR_SET_MM_END_DATA: u32 = 4;
-pub const PR_SET_MM_START_STACK: u32 = 5;
-pub const PR_SET_MM_START_BRK: u32 = 6;
-pub const PR_SET_MM_BRK: u32 = 7;
-pub const PR_SET_MM_ARG_START: u32 = 8;
-pub const PR_SET_MM_ARG_END: u32 = 9;
-pub const PR_SET_MM_ENV_START: u32 = 10;
-pub const PR_SET_MM_ENV_END: u32 = 11;
-pub const PR_SET_MM_AUXV: u32 = 12;
-pub const PR_SET_MM_EXE_FILE: u32 = 13;
-pub const PR_SET_MM_MAP: u32 = 14;
-pub const PR_SET_MM_MAP_SIZE: u32 = 15;
-pub const PR_SET_PTRACER: u32 = 1499557217;
-pub const PR_SET_CHILD_SUBREAPER: u32 = 36;
-pub const PR_GET_CHILD_SUBREAPER: u32 = 37;
-pub const PR_SET_NO_NEW_PRIVS: u32 = 38;
-pub const PR_GET_NO_NEW_PRIVS: u32 = 39;
-pub const PR_GET_TID_ADDRESS: u32 = 40;
-pub const PR_SET_THP_DISABLE: u32 = 41;
-pub const PR_GET_THP_DISABLE: u32 = 42;
-pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43;
-pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44;
-pub const PR_SET_FP_MODE: u32 = 45;
-pub const PR_GET_FP_MODE: u32 = 46;
-pub const PR_FP_MODE_FR: u32 = 1;
-pub const PR_FP_MODE_FRE: u32 = 2;
-pub const PR_CAP_AMBIENT: u32 = 47;
-pub const PR_CAP_AMBIENT_IS_SET: u32 = 1;
-pub const PR_CAP_AMBIENT_RAISE: u32 = 2;
-pub const PR_CAP_AMBIENT_LOWER: u32 = 3;
-pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4;
-pub const PR_SVE_SET_VL: u32 = 50;
-pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SVE_GET_VL: u32 = 51;
-pub const PR_SVE_VL_LEN_MASK: u32 = 65535;
-pub const PR_SVE_VL_INHERIT: u32 = 131072;
-pub const PR_GET_SPECULATION_CTRL: u32 = 52;
-pub const PR_SET_SPECULATION_CTRL: u32 = 53;
-pub const PR_SPEC_STORE_BYPASS: u32 = 0;
-pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1;
-pub const PR_SPEC_L1D_FLUSH: u32 = 2;
-pub const PR_SPEC_NOT_AFFECTED: u32 = 0;
-pub const PR_SPEC_PRCTL: u32 = 1;
-pub const PR_SPEC_ENABLE: u32 = 2;
-pub const PR_SPEC_DISABLE: u32 = 4;
-pub const PR_SPEC_FORCE_DISABLE: u32 = 8;
-pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16;
-pub const PR_PAC_RESET_KEYS: u32 = 54;
-pub const PR_PAC_APIAKEY: u32 = 1;
-pub const PR_PAC_APIBKEY: u32 = 2;
-pub const PR_PAC_APDAKEY: u32 = 4;
-pub const PR_PAC_APDBKEY: u32 = 8;
-pub const PR_PAC_APGAKEY: u32 = 16;
-pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55;
-pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56;
-pub const PR_TAGGED_ADDR_ENABLE: u32 = 1;
-pub const PR_MTE_TCF_NONE: u32 = 0;
-pub const PR_MTE_TCF_SYNC: u32 = 2;
-pub const PR_MTE_TCF_ASYNC: u32 = 4;
-pub const PR_MTE_TCF_MASK: u32 = 6;
-pub const PR_MTE_TAG_SHIFT: u32 = 3;
-pub const PR_MTE_TAG_MASK: u32 = 524280;
-pub const PR_MTE_TCF_SHIFT: u32 = 1;
-pub const PR_SET_IO_FLUSHER: u32 = 57;
-pub const PR_GET_IO_FLUSHER: u32 = 58;
-pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59;
-pub const PR_SYS_DISPATCH_OFF: u32 = 0;
-pub const PR_SYS_DISPATCH_ON: u32 = 1;
-pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0;
-pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1;
-pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60;
-pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61;
-pub const PR_SCHED_CORE: u32 = 62;
-pub const PR_SCHED_CORE_GET: u32 = 0;
-pub const PR_SCHED_CORE_CREATE: u32 = 1;
-pub const PR_SCHED_CORE_SHARE_TO: u32 = 2;
-pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3;
-pub const PR_SCHED_CORE_MAX: u32 = 4;
-pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0;
-pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1;
-pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2;
-pub const PR_SME_SET_VL: u32 = 63;
-pub const PR_SME_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SME_GET_VL: u32 = 64;
-pub const PR_SME_VL_LEN_MASK: u32 = 65535;
-pub const PR_SME_VL_INHERIT: u32 = 131072;
-pub const PR_SET_VMA: u32 = 1398164801;
-pub const PR_SET_VMA_ANON_NAME: u32 = 0;
-pub const GRND_NONBLOCK: u32 = 1;
-pub const GRND_RANDOM: u32 = 2;
-pub const GRND_INSECURE: u32 = 4;
-pub const ITIMER_REAL: u32 = 0;
-pub const ITIMER_VIRTUAL: u32 = 1;
-pub const ITIMER_PROF: u32 = 2;
-pub const CLOCK_REALTIME: u32 = 0;
-pub const CLOCK_MONOTONIC: u32 = 1;
-pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2;
-pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3;
-pub const CLOCK_MONOTONIC_RAW: u32 = 4;
-pub const CLOCK_REALTIME_COARSE: u32 = 5;
-pub const CLOCK_MONOTONIC_COARSE: u32 = 6;
-pub const CLOCK_BOOTTIME: u32 = 7;
-pub const CLOCK_REALTIME_ALARM: u32 = 8;
-pub const CLOCK_BOOTTIME_ALARM: u32 = 9;
-pub const CLOCK_SGI_CYCLE: u32 = 10;
-pub const CLOCK_TAI: u32 = 11;
-pub const MAX_CLOCKS: u32 = 16;
-pub const CLOCKS_MASK: u32 = 1;
-pub const CLOCKS_MONO: u32 = 1;
-pub const TIMER_ABSTIME: u32 = 1;
-pub const RUSAGE_SELF: u32 = 0;
-pub const RUSAGE_CHILDREN: i32 = -1;
-pub const RUSAGE_BOTH: i32 = -2;
-pub const RUSAGE_THREAD: u32 = 1;
-pub const RLIM64_INFINITY: i32 = -1;
-pub const PRIO_MIN: i32 = -20;
-pub const PRIO_MAX: u32 = 20;
-pub const PRIO_PROCESS: u32 = 0;
-pub const PRIO_PGRP: u32 = 1;
-pub const PRIO_USER: u32 = 2;
-pub const _STK_LIM: u32 = 8388608;
-pub const MLOCK_LIMIT: u32 = 8388608;
-pub const RLIMIT_CPU: u32 = 0;
-pub const RLIMIT_FSIZE: u32 = 1;
-pub const RLIMIT_DATA: u32 = 2;
-pub const RLIMIT_STACK: u32 = 3;
-pub const RLIMIT_CORE: u32 = 4;
-pub const RLIMIT_RSS: u32 = 5;
-pub const RLIMIT_NPROC: u32 = 6;
-pub const RLIMIT_NOFILE: u32 = 7;
-pub const RLIMIT_MEMLOCK: u32 = 8;
-pub const RLIMIT_AS: u32 = 9;
-pub const RLIMIT_LOCKS: u32 = 10;
-pub const RLIMIT_SIGPENDING: u32 = 11;
-pub const RLIMIT_MSGQUEUE: u32 = 12;
-pub const RLIMIT_NICE: u32 = 13;
-pub const RLIMIT_RTPRIO: u32 = 14;
-pub const RLIMIT_RTTIME: u32 = 15;
-pub const RLIM_NLIMITS: u32 = 16;
-pub const RLIM_INFINITY: i32 = -1;
-pub const CSIGNAL: u32 = 255;
-pub const CLONE_VM: u32 = 256;
-pub const CLONE_FS: u32 = 512;
-pub const CLONE_FILES: u32 = 1024;
-pub const CLONE_SIGHAND: u32 = 2048;
-pub const CLONE_PIDFD: u32 = 4096;
-pub const CLONE_PTRACE: u32 = 8192;
-pub const CLONE_VFORK: u32 = 16384;
-pub const CLONE_PARENT: u32 = 32768;
-pub const CLONE_THREAD: u32 = 65536;
-pub const CLONE_NEWNS: u32 = 131072;
-pub const CLONE_SYSVSEM: u32 = 262144;
-pub const CLONE_SETTLS: u32 = 524288;
-pub const CLONE_PARENT_SETTID: u32 = 1048576;
-pub const CLONE_CHILD_CLEARTID: u32 = 2097152;
-pub const CLONE_DETACHED: u32 = 4194304;
-pub const CLONE_UNTRACED: u32 = 8388608;
-pub const CLONE_CHILD_SETTID: u32 = 16777216;
-pub const CLONE_NEWCGROUP: u32 = 33554432;
-pub const CLONE_NEWUTS: u32 = 67108864;
-pub const CLONE_NEWIPC: u32 = 134217728;
-pub const CLONE_NEWUSER: u32 = 268435456;
-pub const CLONE_NEWPID: u32 = 536870912;
-pub const CLONE_NEWNET: u32 = 1073741824;
-pub const CLONE_IO: u32 = 2147483648;
-pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296;
-pub const CLONE_INTO_CGROUP: u64 = 8589934592;
-pub const CLONE_NEWTIME: u32 = 128;
-pub const CLONE_ARGS_SIZE_VER0: u32 = 64;
-pub const CLONE_ARGS_SIZE_VER1: u32 = 80;
-pub const CLONE_ARGS_SIZE_VER2: u32 = 88;
-pub const SCHED_NORMAL: u32 = 0;
-pub const SCHED_FIFO: u32 = 1;
-pub const SCHED_RR: u32 = 2;
-pub const SCHED_BATCH: u32 = 3;
-pub const SCHED_IDLE: u32 = 5;
-pub const SCHED_DEADLINE: u32 = 6;
-pub const SCHED_RESET_ON_FORK: u32 = 1073741824;
-pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1;
-pub const SCHED_FLAG_RECLAIM: u32 = 2;
-pub const SCHED_FLAG_DL_OVERRUN: u32 = 4;
-pub const SCHED_FLAG_KEEP_POLICY: u32 = 8;
-pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16;
-pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32;
-pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64;
-pub const SCHED_FLAG_KEEP_ALL: u32 = 24;
-pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96;
-pub const SCHED_FLAG_ALL: u32 = 127;
-pub const _NSIG: u32 = 64;
-pub const SIGHUP: u32 = 1;
-pub const SIGINT: u32 = 2;
-pub const SIGQUIT: u32 = 3;
-pub const SIGILL: u32 = 4;
-pub const SIGTRAP: u32 = 5;
-pub const SIGABRT: u32 = 6;
-pub const SIGIOT: u32 = 6;
-pub const SIGBUS: u32 = 7;
-pub const SIGFPE: u32 = 8;
-pub const SIGKILL: u32 = 9;
-pub const SIGUSR1: u32 = 10;
-pub const SIGSEGV: u32 = 11;
-pub const SIGUSR2: u32 = 12;
-pub const SIGPIPE: u32 = 13;
-pub const SIGALRM: u32 = 14;
-pub const SIGTERM: u32 = 15;
-pub const SIGSTKFLT: u32 = 16;
-pub const SIGCHLD: u32 = 17;
-pub const SIGCONT: u32 = 18;
-pub const SIGSTOP: u32 = 19;
-pub const SIGTSTP: u32 = 20;
-pub const SIGTTIN: u32 = 21;
-pub const SIGTTOU: u32 = 22;
-pub const SIGURG: u32 = 23;
-pub const SIGXCPU: u32 = 24;
-pub const SIGXFSZ: u32 = 25;
-pub const SIGVTALRM: u32 = 26;
-pub const SIGPROF: u32 = 27;
-pub const SIGWINCH: u32 = 28;
-pub const SIGIO: u32 = 29;
-pub const SIGPOLL: u32 = 29;
-pub const SIGPWR: u32 = 30;
-pub const SIGSYS: u32 = 31;
-pub const SIGUNUSED: u32 = 31;
-pub const SIGRTMIN: u32 = 32;
-pub const SIGRTMAX: u32 = 64;
-pub const MINSIGSTKSZ: u32 = 2048;
-pub const SIGSTKSZ: u32 = 8192;
-pub const SA_NOCLDSTOP: u32 = 1;
-pub const SA_NOCLDWAIT: u32 = 2;
-pub const SA_SIGINFO: u32 = 4;
-pub const SA_UNSUPPORTED: u32 = 1024;
-pub const SA_EXPOSE_TAGBITS: u32 = 2048;
-pub const SA_ONSTACK: u32 = 134217728;
-pub const SA_RESTART: u32 = 268435456;
-pub const SA_NODEFER: u32 = 1073741824;
-pub const SA_RESETHAND: u32 = 2147483648;
-pub const SA_NOMASK: u32 = 1073741824;
-pub const SA_ONESHOT: u32 = 2147483648;
-pub const SIG_BLOCK: u32 = 0;
-pub const SIG_UNBLOCK: u32 = 1;
-pub const SIG_SETMASK: u32 = 2;
-pub const SI_MAX_SIZE: u32 = 128;
-pub const SI_USER: u32 = 0;
-pub const SI_KERNEL: u32 = 128;
-pub const SI_QUEUE: i32 = -1;
-pub const SI_TIMER: i32 = -2;
-pub const SI_MESGQ: i32 = -3;
-pub const SI_ASYNCIO: i32 = -4;
-pub const SI_SIGIO: i32 = -5;
-pub const SI_TKILL: i32 = -6;
-pub const SI_DETHREAD: i32 = -7;
-pub const SI_ASYNCNL: i32 = -60;
-pub const ILL_ILLOPC: u32 = 1;
-pub const ILL_ILLOPN: u32 = 2;
-pub const ILL_ILLADR: u32 = 3;
-pub const ILL_ILLTRP: u32 = 4;
-pub const ILL_PRVOPC: u32 = 5;
-pub const ILL_PRVREG: u32 = 6;
-pub const ILL_COPROC: u32 = 7;
-pub const ILL_BADSTK: u32 = 8;
-pub const ILL_BADIADDR: u32 = 9;
-pub const __ILL_BREAK: u32 = 10;
-pub const __ILL_BNDMOD: u32 = 11;
-pub const NSIGILL: u32 = 11;
-pub const FPE_INTDIV: u32 = 1;
-pub const FPE_INTOVF: u32 = 2;
-pub const FPE_FLTDIV: u32 = 3;
-pub const FPE_FLTOVF: u32 = 4;
-pub const FPE_FLTUND: u32 = 5;
-pub const FPE_FLTRES: u32 = 6;
-pub const FPE_FLTINV: u32 = 7;
-pub const FPE_FLTSUB: u32 = 8;
-pub const __FPE_DECOVF: u32 = 9;
-pub const __FPE_DECDIV: u32 = 10;
-pub const __FPE_DECERR: u32 = 11;
-pub const __FPE_INVASC: u32 = 12;
-pub const __FPE_INVDEC: u32 = 13;
-pub const FPE_FLTUNK: u32 = 14;
-pub const FPE_CONDTRAP: u32 = 15;
-pub const NSIGFPE: u32 = 15;
-pub const SEGV_MAPERR: u32 = 1;
-pub const SEGV_ACCERR: u32 = 2;
-pub const SEGV_BNDERR: u32 = 3;
-pub const SEGV_PKUERR: u32 = 4;
-pub const SEGV_ACCADI: u32 = 5;
-pub const SEGV_ADIDERR: u32 = 6;
-pub const SEGV_ADIPERR: u32 = 7;
-pub const SEGV_MTEAERR: u32 = 8;
-pub const SEGV_MTESERR: u32 = 9;
-pub const NSIGSEGV: u32 = 9;
-pub const BUS_ADRALN: u32 = 1;
-pub const BUS_ADRERR: u32 = 2;
-pub const BUS_OBJERR: u32 = 3;
-pub const BUS_MCEERR_AR: u32 = 4;
-pub const BUS_MCEERR_AO: u32 = 5;
-pub const NSIGBUS: u32 = 5;
-pub const TRAP_BRKPT: u32 = 1;
-pub const TRAP_TRACE: u32 = 2;
-pub const TRAP_BRANCH: u32 = 3;
-pub const TRAP_HWBKPT: u32 = 4;
-pub const TRAP_UNK: u32 = 5;
-pub const TRAP_PERF: u32 = 6;
-pub const NSIGTRAP: u32 = 6;
-pub const TRAP_PERF_FLAG_ASYNC: u32 = 1;
-pub const CLD_EXITED: u32 = 1;
-pub const CLD_KILLED: u32 = 2;
-pub const CLD_DUMPED: u32 = 3;
-pub const CLD_TRAPPED: u32 = 4;
-pub const CLD_STOPPED: u32 = 5;
-pub const CLD_CONTINUED: u32 = 6;
-pub const NSIGCHLD: u32 = 6;
-pub const POLL_IN: u32 = 1;
-pub const POLL_OUT: u32 = 2;
-pub const POLL_MSG: u32 = 3;
-pub const POLL_ERR: u32 = 4;
-pub const POLL_PRI: u32 = 5;
-pub const POLL_HUP: u32 = 6;
-pub const NSIGPOLL: u32 = 6;
-pub const SYS_SECCOMP: u32 = 1;
-pub const SYS_USER_DISPATCH: u32 = 2;
-pub const NSIGSYS: u32 = 2;
-pub const EMT_TAGOVF: u32 = 1;
-pub const NSIGEMT: u32 = 1;
-pub const SIGEV_SIGNAL: u32 = 0;
-pub const SIGEV_NONE: u32 = 1;
-pub const SIGEV_THREAD: u32 = 2;
-pub const SIGEV_THREAD_ID: u32 = 4;
-pub const SIGEV_MAX_SIZE: u32 = 64;
-pub const SS_ONSTACK: u32 = 1;
-pub const SS_DISABLE: u32 = 2;
-pub const SS_AUTODISARM: u32 = 2147483648;
-pub const SS_FLAG_BITS: u32 = 2147483648;
-pub const S_IFMT: u32 = 61440;
-pub const S_IFSOCK: u32 = 49152;
-pub const S_IFLNK: u32 = 40960;
-pub const S_IFREG: u32 = 32768;
-pub const S_IFBLK: u32 = 24576;
-pub const S_IFDIR: u32 = 16384;
-pub const S_IFCHR: u32 = 8192;
-pub const S_IFIFO: u32 = 4096;
-pub const S_ISUID: u32 = 2048;
-pub const S_ISGID: u32 = 1024;
-pub const S_ISVTX: u32 = 512;
-pub const S_IRWXU: u32 = 448;
-pub const S_IRUSR: u32 = 256;
-pub const S_IWUSR: u32 = 128;
-pub const S_IXUSR: u32 = 64;
-pub const S_IRWXG: u32 = 56;
-pub const S_IRGRP: u32 = 32;
-pub const S_IWGRP: u32 = 16;
-pub const S_IXGRP: u32 = 8;
-pub const S_IRWXO: u32 = 7;
-pub const S_IROTH: u32 = 4;
-pub const S_IWOTH: u32 = 2;
-pub const S_IXOTH: u32 = 1;
-pub const STATX_TYPE: u32 = 1;
-pub const STATX_MODE: u32 = 2;
-pub const STATX_NLINK: u32 = 4;
-pub const STATX_UID: u32 = 8;
-pub const STATX_GID: u32 = 16;
-pub const STATX_ATIME: u32 = 32;
-pub const STATX_MTIME: u32 = 64;
-pub const STATX_CTIME: u32 = 128;
-pub const STATX_INO: u32 = 256;
-pub const STATX_SIZE: u32 = 512;
-pub const STATX_BLOCKS: u32 = 1024;
-pub const STATX_BASIC_STATS: u32 = 2047;
-pub const STATX_BTIME: u32 = 2048;
-pub const STATX_MNT_ID: u32 = 4096;
-pub const STATX_DIOALIGN: u32 = 8192;
-pub const STATX__RESERVED: u32 = 2147483648;
-pub const STATX_ALL: u32 = 4095;
-pub const STATX_ATTR_COMPRESSED: u32 = 4;
-pub const STATX_ATTR_IMMUTABLE: u32 = 16;
-pub const STATX_ATTR_APPEND: u32 = 32;
-pub const STATX_ATTR_NODUMP: u32 = 64;
-pub const STATX_ATTR_ENCRYPTED: u32 = 2048;
-pub const STATX_ATTR_AUTOMOUNT: u32 = 4096;
-pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192;
-pub const STATX_ATTR_VERITY: u32 = 1048576;
-pub const STATX_ATTR_DAX: u32 = 2097152;
-pub const SI_LOAD_SHIFT: u32 = 16;
-pub const TCP_MSS_DEFAULT: u32 = 536;
-pub const TCP_MSS_DESIRED: u32 = 1220;
-pub const TCP_NODELAY: u32 = 1;
-pub const TCP_MAXSEG: u32 = 2;
-pub const TCP_CORK: u32 = 3;
-pub const TCP_KEEPIDLE: u32 = 4;
-pub const TCP_KEEPINTVL: u32 = 5;
-pub const TCP_KEEPCNT: u32 = 6;
-pub const TCP_SYNCNT: u32 = 7;
-pub const TCP_LINGER2: u32 = 8;
-pub const TCP_DEFER_ACCEPT: u32 = 9;
-pub const TCP_WINDOW_CLAMP: u32 = 10;
-pub const TCP_INFO: u32 = 11;
-pub const TCP_QUICKACK: u32 = 12;
-pub const TCP_CONGESTION: u32 = 13;
-pub const TCP_MD5SIG: u32 = 14;
-pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16;
-pub const TCP_THIN_DUPACK: u32 = 17;
-pub const TCP_USER_TIMEOUT: u32 = 18;
-pub const TCP_REPAIR: u32 = 19;
-pub const TCP_REPAIR_QUEUE: u32 = 20;
-pub const TCP_QUEUE_SEQ: u32 = 21;
-pub const TCP_REPAIR_OPTIONS: u32 = 22;
-pub const TCP_FASTOPEN: u32 = 23;
-pub const TCP_TIMESTAMP: u32 = 24;
-pub const TCP_NOTSENT_LOWAT: u32 = 25;
-pub const TCP_CC_INFO: u32 = 26;
-pub const TCP_SAVE_SYN: u32 = 27;
-pub const TCP_SAVED_SYN: u32 = 28;
-pub const TCP_REPAIR_WINDOW: u32 = 29;
-pub const TCP_FASTOPEN_CONNECT: u32 = 30;
-pub const TCP_ULP: u32 = 31;
-pub const TCP_MD5SIG_EXT: u32 = 32;
-pub const TCP_FASTOPEN_KEY: u32 = 33;
-pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34;
-pub const TCP_ZEROCOPY_RECEIVE: u32 = 35;
-pub const TCP_INQ: u32 = 36;
-pub const TCP_CM_INQ: u32 = 36;
-pub const TCP_TX_DELAY: u32 = 37;
-pub const TCP_REPAIR_ON: u32 = 1;
-pub const TCP_REPAIR_OFF: u32 = 0;
-pub const TCP_REPAIR_OFF_NO_WP: i32 = -1;
-pub const TCPI_OPT_TIMESTAMPS: u32 = 1;
-pub const TCPI_OPT_SACK: u32 = 2;
-pub const TCPI_OPT_WSCALE: u32 = 4;
-pub const TCPI_OPT_ECN: u32 = 8;
-pub const TCPI_OPT_ECN_SEEN: u32 = 16;
-pub const TCPI_OPT_SYN_DATA: u32 = 32;
-pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80;
-pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
-pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
-pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
-pub const IGNBRK: u32 = 1;
-pub const BRKINT: u32 = 2;
-pub const IGNPAR: u32 = 4;
-pub const PARMRK: u32 = 8;
-pub const INPCK: u32 = 16;
-pub const ISTRIP: u32 = 32;
-pub const INLCR: u32 = 64;
-pub const IGNCR: u32 = 128;
-pub const ICRNL: u32 = 256;
-pub const IXANY: u32 = 2048;
-pub const OPOST: u32 = 1;
-pub const OCRNL: u32 = 8;
-pub const ONOCR: u32 = 16;
-pub const ONLRET: u32 = 32;
-pub const OFILL: u32 = 64;
-pub const OFDEL: u32 = 128;
-pub const B0: u32 = 0;
-pub const B50: u32 = 1;
-pub const B75: u32 = 2;
-pub const B110: u32 = 3;
-pub const B134: u32 = 4;
-pub const B150: u32 = 5;
-pub const B200: u32 = 6;
-pub const B300: u32 = 7;
-pub const B600: u32 = 8;
-pub const B1200: u32 = 9;
-pub const B1800: u32 = 10;
-pub const B2400: u32 = 11;
-pub const B4800: u32 = 12;
-pub const B9600: u32 = 13;
-pub const B19200: u32 = 14;
-pub const B38400: u32 = 15;
-pub const EXTA: u32 = 14;
-pub const EXTB: u32 = 15;
-pub const ADDRB: u32 = 536870912;
-pub const CMSPAR: u32 = 1073741824;
-pub const CRTSCTS: u32 = 2147483648;
-pub const IBSHIFT: u32 = 16;
-pub const TCOOFF: u32 = 0;
-pub const TCOON: u32 = 1;
-pub const TCIOFF: u32 = 2;
-pub const TCION: u32 = 3;
-pub const TCIFLUSH: u32 = 0;
-pub const TCOFLUSH: u32 = 1;
-pub const TCIOFLUSH: u32 = 2;
-pub const NCCS: u32 = 19;
-pub const VINTR: u32 = 0;
-pub const VQUIT: u32 = 1;
-pub const VERASE: u32 = 2;
-pub const VKILL: u32 = 3;
-pub const VEOF: u32 = 4;
-pub const VTIME: u32 = 5;
-pub const VMIN: u32 = 6;
-pub const VSWTC: u32 = 7;
-pub const VSTART: u32 = 8;
-pub const VSTOP: u32 = 9;
-pub const VSUSP: u32 = 10;
-pub const VEOL: u32 = 11;
-pub const VREPRINT: u32 = 12;
-pub const VDISCARD: u32 = 13;
-pub const VWERASE: u32 = 14;
-pub const VLNEXT: u32 = 15;
-pub const VEOL2: u32 = 16;
-pub const IUCLC: u32 = 512;
-pub const IXON: u32 = 1024;
-pub const IXOFF: u32 = 4096;
-pub const IMAXBEL: u32 = 8192;
-pub const IUTF8: u32 = 16384;
-pub const OLCUC: u32 = 2;
-pub const ONLCR: u32 = 4;
-pub const NLDLY: u32 = 256;
-pub const NL0: u32 = 0;
-pub const NL1: u32 = 256;
-pub const CRDLY: u32 = 1536;
-pub const CR0: u32 = 0;
-pub const CR1: u32 = 512;
-pub const CR2: u32 = 1024;
-pub const CR3: u32 = 1536;
-pub const TABDLY: u32 = 6144;
-pub const TAB0: u32 = 0;
-pub const TAB1: u32 = 2048;
-pub const TAB2: u32 = 4096;
-pub const TAB3: u32 = 6144;
-pub const XTABS: u32 = 6144;
-pub const BSDLY: u32 = 8192;
-pub const BS0: u32 = 0;
-pub const BS1: u32 = 8192;
-pub const VTDLY: u32 = 16384;
-pub const VT0: u32 = 0;
-pub const VT1: u32 = 16384;
-pub const FFDLY: u32 = 32768;
-pub const FF0: u32 = 0;
-pub const FF1: u32 = 32768;
-pub const CBAUD: u32 = 4111;
-pub const CSIZE: u32 = 48;
-pub const CS5: u32 = 0;
-pub const CS6: u32 = 16;
-pub const CS7: u32 = 32;
-pub const CS8: u32 = 48;
-pub const CSTOPB: u32 = 64;
-pub const CREAD: u32 = 128;
-pub const PARENB: u32 = 256;
-pub const PARODD: u32 = 512;
-pub const HUPCL: u32 = 1024;
-pub const CLOCAL: u32 = 2048;
-pub const CBAUDEX: u32 = 4096;
-pub const BOTHER: u32 = 4096;
-pub const B57600: u32 = 4097;
-pub const B115200: u32 = 4098;
-pub const B230400: u32 = 4099;
-pub const B460800: u32 = 4100;
-pub const B500000: u32 = 4101;
-pub const B576000: u32 = 4102;
-pub const B921600: u32 = 4103;
-pub const B1000000: u32 = 4104;
-pub const B1152000: u32 = 4105;
-pub const B1500000: u32 = 4106;
-pub const B2000000: u32 = 4107;
-pub const B2500000: u32 = 4108;
-pub const B3000000: u32 = 4109;
-pub const B3500000: u32 = 4110;
-pub const B4000000: u32 = 4111;
-pub const CIBAUD: u32 = 269418496;
-pub const ISIG: u32 = 1;
-pub const ICANON: u32 = 2;
-pub const XCASE: u32 = 4;
-pub const ECHO: u32 = 8;
-pub const ECHOE: u32 = 16;
-pub const ECHOK: u32 = 32;
-pub const ECHONL: u32 = 64;
-pub const NOFLSH: u32 = 128;
-pub const TOSTOP: u32 = 256;
-pub const ECHOCTL: u32 = 512;
-pub const ECHOPRT: u32 = 1024;
-pub const ECHOKE: u32 = 2048;
-pub const FLUSHO: u32 = 4096;
-pub const PENDIN: u32 = 16384;
-pub const IEXTEN: u32 = 32768;
-pub const EXTPROC: u32 = 65536;
-pub const TCSANOW: u32 = 0;
-pub const TCSADRAIN: u32 = 1;
-pub const TCSAFLUSH: u32 = 2;
-pub const TIOCPKT_DATA: u32 = 0;
-pub const TIOCPKT_FLUSHREAD: u32 = 1;
-pub const TIOCPKT_FLUSHWRITE: u32 = 2;
-pub const TIOCPKT_STOP: u32 = 4;
-pub const TIOCPKT_START: u32 = 8;
-pub const TIOCPKT_NOSTOP: u32 = 16;
-pub const TIOCPKT_DOSTOP: u32 = 32;
-pub const TIOCPKT_IOCTL: u32 = 64;
-pub const TIOCSER_TEMT: u32 = 1;
-pub const NCC: u32 = 8;
-pub const TIOCM_LE: u32 = 1;
-pub const TIOCM_DTR: u32 = 2;
-pub const TIOCM_RTS: u32 = 4;
-pub const TIOCM_ST: u32 = 8;
-pub const TIOCM_SR: u32 = 16;
-pub const TIOCM_CTS: u32 = 32;
-pub const TIOCM_CAR: u32 = 64;
-pub const TIOCM_RNG: u32 = 128;
-pub const TIOCM_DSR: u32 = 256;
-pub const TIOCM_CD: u32 = 64;
-pub const TIOCM_RI: u32 = 128;
-pub const TIOCM_OUT1: u32 = 8192;
-pub const TIOCM_OUT2: u32 = 16384;
-pub const TIOCM_LOOP: u32 = 32768;
-pub const UIO_FASTIOV: u32 = 8;
-pub const UIO_MAXIOV: u32 = 1024;
-pub const UNIX_PATH_MAX: u32 = 108;
-pub const __NR_io_setup: u32 = 0;
-pub const __NR_io_destroy: u32 = 1;
-pub const __NR_io_submit: u32 = 2;
-pub const __NR_io_cancel: u32 = 3;
-pub const __NR_setxattr: u32 = 5;
-pub const __NR_lsetxattr: u32 = 6;
-pub const __NR_fsetxattr: u32 = 7;
-pub const __NR_getxattr: u32 = 8;
-pub const __NR_lgetxattr: u32 = 9;
-pub const __NR_fgetxattr: u32 = 10;
-pub const __NR_listxattr: u32 = 11;
-pub const __NR_llistxattr: u32 = 12;
-pub const __NR_flistxattr: u32 = 13;
-pub const __NR_removexattr: u32 = 14;
-pub const __NR_lremovexattr: u32 = 15;
-pub const __NR_fremovexattr: u32 = 16;
-pub const __NR_getcwd: u32 = 17;
-pub const __NR_lookup_dcookie: u32 = 18;
-pub const __NR_eventfd2: u32 = 19;
-pub const __NR_epoll_create1: u32 = 20;
-pub const __NR_epoll_ctl: u32 = 21;
-pub const __NR_epoll_pwait: u32 = 22;
-pub const __NR_dup: u32 = 23;
-pub const __NR_dup3: u32 = 24;
-pub const __NR3264_fcntl: u32 = 25;
-pub const __NR_inotify_init1: u32 = 26;
-pub const __NR_inotify_add_watch: u32 = 27;
-pub const __NR_inotify_rm_watch: u32 = 28;
-pub const __NR_ioctl: u32 = 29;
-pub const __NR_ioprio_set: u32 = 30;
-pub const __NR_ioprio_get: u32 = 31;
-pub const __NR_flock: u32 = 32;
-pub const __NR_mknodat: u32 = 33;
-pub const __NR_mkdirat: u32 = 34;
-pub const __NR_unlinkat: u32 = 35;
-pub const __NR_symlinkat: u32 = 36;
-pub const __NR_linkat: u32 = 37;
-pub const __NR_umount2: u32 = 39;
-pub const __NR_mount: u32 = 40;
-pub const __NR_pivot_root: u32 = 41;
-pub const __NR_nfsservctl: u32 = 42;
-pub const __NR3264_statfs: u32 = 43;
-pub const __NR3264_fstatfs: u32 = 44;
-pub const __NR3264_truncate: u32 = 45;
-pub const __NR3264_ftruncate: u32 = 46;
-pub const __NR_fallocate: u32 = 47;
-pub const __NR_faccessat: u32 = 48;
-pub const __NR_chdir: u32 = 49;
-pub const __NR_fchdir: u32 = 50;
-pub const __NR_chroot: u32 = 51;
-pub const __NR_fchmod: u32 = 52;
-pub const __NR_fchmodat: u32 = 53;
-pub const __NR_fchownat: u32 = 54;
-pub const __NR_fchown: u32 = 55;
-pub const __NR_openat: u32 = 56;
-pub const __NR_close: u32 = 57;
-pub const __NR_vhangup: u32 = 58;
-pub const __NR_pipe2: u32 = 59;
-pub const __NR_quotactl: u32 = 60;
-pub const __NR_getdents64: u32 = 61;
-pub const __NR3264_lseek: u32 = 62;
-pub const __NR_read: u32 = 63;
-pub const __NR_write: u32 = 64;
-pub const __NR_readv: u32 = 65;
-pub const __NR_writev: u32 = 66;
-pub const __NR_pread64: u32 = 67;
-pub const __NR_pwrite64: u32 = 68;
-pub const __NR_preadv: u32 = 69;
-pub const __NR_pwritev: u32 = 70;
-pub const __NR3264_sendfile: u32 = 71;
-pub const __NR_signalfd4: u32 = 74;
-pub const __NR_vmsplice: u32 = 75;
-pub const __NR_splice: u32 = 76;
-pub const __NR_tee: u32 = 77;
-pub const __NR_readlinkat: u32 = 78;
-pub const __NR_sync: u32 = 81;
-pub const __NR_fsync: u32 = 82;
-pub const __NR_fdatasync: u32 = 83;
-pub const __NR_sync_file_range: u32 = 84;
-pub const __NR_timerfd_create: u32 = 85;
-pub const __NR_acct: u32 = 89;
-pub const __NR_capget: u32 = 90;
-pub const __NR_capset: u32 = 91;
-pub const __NR_personality: u32 = 92;
-pub const __NR_exit: u32 = 93;
-pub const __NR_exit_group: u32 = 94;
-pub const __NR_waitid: u32 = 95;
-pub const __NR_set_tid_address: u32 = 96;
-pub const __NR_unshare: u32 = 97;
-pub const __NR_set_robust_list: u32 = 99;
-pub const __NR_get_robust_list: u32 = 100;
-pub const __NR_getitimer: u32 = 102;
-pub const __NR_setitimer: u32 = 103;
-pub const __NR_kexec_load: u32 = 104;
-pub const __NR_init_module: u32 = 105;
-pub const __NR_delete_module: u32 = 106;
-pub const __NR_timer_create: u32 = 107;
-pub const __NR_timer_getoverrun: u32 = 109;
-pub const __NR_timer_delete: u32 = 111;
-pub const __NR_syslog: u32 = 116;
-pub const __NR_ptrace: u32 = 117;
-pub const __NR_sched_setparam: u32 = 118;
-pub const __NR_sched_setscheduler: u32 = 119;
-pub const __NR_sched_getscheduler: u32 = 120;
-pub const __NR_sched_getparam: u32 = 121;
-pub const __NR_sched_setaffinity: u32 = 122;
-pub const __NR_sched_getaffinity: u32 = 123;
-pub const __NR_sched_yield: u32 = 124;
-pub const __NR_sched_get_priority_max: u32 = 125;
-pub const __NR_sched_get_priority_min: u32 = 126;
-pub const __NR_restart_syscall: u32 = 128;
-pub const __NR_kill: u32 = 129;
-pub const __NR_tkill: u32 = 130;
-pub const __NR_tgkill: u32 = 131;
-pub const __NR_sigaltstack: u32 = 132;
-pub const __NR_rt_sigsuspend: u32 = 133;
-pub const __NR_rt_sigaction: u32 = 134;
-pub const __NR_rt_sigprocmask: u32 = 135;
-pub const __NR_rt_sigpending: u32 = 136;
-pub const __NR_rt_sigqueueinfo: u32 = 138;
-pub const __NR_rt_sigreturn: u32 = 139;
-pub const __NR_setpriority: u32 = 140;
-pub const __NR_getpriority: u32 = 141;
-pub const __NR_reboot: u32 = 142;
-pub const __NR_setregid: u32 = 143;
-pub const __NR_setgid: u32 = 144;
-pub const __NR_setreuid: u32 = 145;
-pub const __NR_setuid: u32 = 146;
-pub const __NR_setresuid: u32 = 147;
-pub const __NR_getresuid: u32 = 148;
-pub const __NR_setresgid: u32 = 149;
-pub const __NR_getresgid: u32 = 150;
-pub const __NR_setfsuid: u32 = 151;
-pub const __NR_setfsgid: u32 = 152;
-pub const __NR_times: u32 = 153;
-pub const __NR_setpgid: u32 = 154;
-pub const __NR_getpgid: u32 = 155;
-pub const __NR_getsid: u32 = 156;
-pub const __NR_setsid: u32 = 157;
-pub const __NR_getgroups: u32 = 158;
-pub const __NR_setgroups: u32 = 159;
-pub const __NR_uname: u32 = 160;
-pub const __NR_sethostname: u32 = 161;
-pub const __NR_setdomainname: u32 = 162;
-pub const __NR_getrusage: u32 = 165;
-pub const __NR_umask: u32 = 166;
-pub const __NR_prctl: u32 = 167;
-pub const __NR_getcpu: u32 = 168;
-pub const __NR_getpid: u32 = 172;
-pub const __NR_getppid: u32 = 173;
-pub const __NR_getuid: u32 = 174;
-pub const __NR_geteuid: u32 = 175;
-pub const __NR_getgid: u32 = 176;
-pub const __NR_getegid: u32 = 177;
-pub const __NR_gettid: u32 = 178;
-pub const __NR_sysinfo: u32 = 179;
-pub const __NR_mq_open: u32 = 180;
-pub const __NR_mq_unlink: u32 = 181;
-pub const __NR_mq_notify: u32 = 184;
-pub const __NR_mq_getsetattr: u32 = 185;
-pub const __NR_msgget: u32 = 186;
-pub const __NR_msgctl: u32 = 187;
-pub const __NR_msgrcv: u32 = 188;
-pub const __NR_msgsnd: u32 = 189;
-pub const __NR_semget: u32 = 190;
-pub const __NR_semctl: u32 = 191;
-pub const __NR_semop: u32 = 193;
-pub const __NR_shmget: u32 = 194;
-pub const __NR_shmctl: u32 = 195;
-pub const __NR_shmat: u32 = 196;
-pub const __NR_shmdt: u32 = 197;
-pub const __NR_socket: u32 = 198;
-pub const __NR_socketpair: u32 = 199;
-pub const __NR_bind: u32 = 200;
-pub const __NR_listen: u32 = 201;
-pub const __NR_accept: u32 = 202;
-pub const __NR_connect: u32 = 203;
-pub const __NR_getsockname: u32 = 204;
-pub const __NR_getpeername: u32 = 205;
-pub const __NR_sendto: u32 = 206;
-pub const __NR_recvfrom: u32 = 207;
-pub const __NR_setsockopt: u32 = 208;
-pub const __NR_getsockopt: u32 = 209;
-pub const __NR_shutdown: u32 = 210;
-pub const __NR_sendmsg: u32 = 211;
-pub const __NR_recvmsg: u32 = 212;
-pub const __NR_readahead: u32 = 213;
-pub const __NR_brk: u32 = 214;
-pub const __NR_munmap: u32 = 215;
-pub const __NR_mremap: u32 = 216;
-pub const __NR_add_key: u32 = 217;
-pub const __NR_request_key: u32 = 218;
-pub const __NR_keyctl: u32 = 219;
-pub const __NR_clone: u32 = 220;
-pub const __NR_execve: u32 = 221;
-pub const __NR3264_mmap: u32 = 222;
-pub const __NR3264_fadvise64: u32 = 223;
-pub const __NR_swapon: u32 = 224;
-pub const __NR_swapoff: u32 = 225;
-pub const __NR_mprotect: u32 = 226;
-pub const __NR_msync: u32 = 227;
-pub const __NR_mlock: u32 = 228;
-pub const __NR_munlock: u32 = 229;
-pub const __NR_mlockall: u32 = 230;
-pub const __NR_munlockall: u32 = 231;
-pub const __NR_mincore: u32 = 232;
-pub const __NR_madvise: u32 = 233;
-pub const __NR_remap_file_pages: u32 = 234;
-pub const __NR_mbind: u32 = 235;
-pub const __NR_get_mempolicy: u32 = 236;
-pub const __NR_set_mempolicy: u32 = 237;
-pub const __NR_migrate_pages: u32 = 238;
-pub const __NR_move_pages: u32 = 239;
-pub const __NR_rt_tgsigqueueinfo: u32 = 240;
-pub const __NR_perf_event_open: u32 = 241;
-pub const __NR_accept4: u32 = 242;
-pub const __NR_arch_specific_syscall: u32 = 244;
-pub const __NR_prlimit64: u32 = 261;
-pub const __NR_fanotify_init: u32 = 262;
-pub const __NR_fanotify_mark: u32 = 263;
-pub const __NR_name_to_handle_at: u32 = 264;
-pub const __NR_open_by_handle_at: u32 = 265;
-pub const __NR_syncfs: u32 = 267;
-pub const __NR_setns: u32 = 268;
-pub const __NR_sendmmsg: u32 = 269;
-pub const __NR_process_vm_readv: u32 = 270;
-pub const __NR_process_vm_writev: u32 = 271;
-pub const __NR_kcmp: u32 = 272;
-pub const __NR_finit_module: u32 = 273;
-pub const __NR_sched_setattr: u32 = 274;
-pub const __NR_sched_getattr: u32 = 275;
-pub const __NR_renameat2: u32 = 276;
-pub const __NR_seccomp: u32 = 277;
-pub const __NR_getrandom: u32 = 278;
-pub const __NR_memfd_create: u32 = 279;
-pub const __NR_bpf: u32 = 280;
-pub const __NR_execveat: u32 = 281;
-pub const __NR_userfaultfd: u32 = 282;
-pub const __NR_membarrier: u32 = 283;
-pub const __NR_mlock2: u32 = 284;
-pub const __NR_copy_file_range: u32 = 285;
-pub const __NR_preadv2: u32 = 286;
-pub const __NR_pwritev2: u32 = 287;
-pub const __NR_pkey_mprotect: u32 = 288;
-pub const __NR_pkey_alloc: u32 = 289;
-pub const __NR_pkey_free: u32 = 290;
-pub const __NR_statx: u32 = 291;
-pub const __NR_rseq: u32 = 293;
-pub const __NR_kexec_file_load: u32 = 294;
-pub const __NR_clock_gettime64: u32 = 403;
-pub const __NR_clock_settime64: u32 = 404;
-pub const __NR_clock_adjtime64: u32 = 405;
-pub const __NR_clock_getres_time64: u32 = 406;
-pub const __NR_clock_nanosleep_time64: u32 = 407;
-pub const __NR_timer_gettime64: u32 = 408;
-pub const __NR_timer_settime64: u32 = 409;
-pub const __NR_timerfd_gettime64: u32 = 410;
-pub const __NR_timerfd_settime64: u32 = 411;
-pub const __NR_utimensat_time64: u32 = 412;
-pub const __NR_pselect6_time64: u32 = 413;
-pub const __NR_ppoll_time64: u32 = 414;
-pub const __NR_io_pgetevents_time64: u32 = 416;
-pub const __NR_recvmmsg_time64: u32 = 417;
-pub const __NR_mq_timedsend_time64: u32 = 418;
-pub const __NR_mq_timedreceive_time64: u32 = 419;
-pub const __NR_semtimedop_time64: u32 = 420;
-pub const __NR_rt_sigtimedwait_time64: u32 = 421;
-pub const __NR_futex_time64: u32 = 422;
-pub const __NR_sched_rr_get_interval_time64: u32 = 423;
-pub const __NR_pidfd_send_signal: u32 = 424;
-pub const __NR_io_uring_setup: u32 = 425;
-pub const __NR_io_uring_enter: u32 = 426;
-pub const __NR_io_uring_register: u32 = 427;
-pub const __NR_open_tree: u32 = 428;
-pub const __NR_move_mount: u32 = 429;
-pub const __NR_fsopen: u32 = 430;
-pub const __NR_fsconfig: u32 = 431;
-pub const __NR_fsmount: u32 = 432;
-pub const __NR_fspick: u32 = 433;
-pub const __NR_pidfd_open: u32 = 434;
-pub const __NR_clone3: u32 = 435;
-pub const __NR_close_range: u32 = 436;
-pub const __NR_openat2: u32 = 437;
-pub const __NR_pidfd_getfd: u32 = 438;
-pub const __NR_faccessat2: u32 = 439;
-pub const __NR_process_madvise: u32 = 440;
-pub const __NR_epoll_pwait2: u32 = 441;
-pub const __NR_mount_setattr: u32 = 442;
-pub const __NR_quotactl_fd: u32 = 443;
-pub const __NR_landlock_create_ruleset: u32 = 444;
-pub const __NR_landlock_add_rule: u32 = 445;
-pub const __NR_landlock_restrict_self: u32 = 446;
-pub const __NR_memfd_secret: u32 = 447;
-pub const __NR_process_mrelease: u32 = 448;
-pub const __NR_futex_waitv: u32 = 449;
-pub const __NR_set_mempolicy_home_node: u32 = 450;
-pub const __NR_syscalls: u32 = 451;
-pub const __NR_fcntl64: u32 = 25;
-pub const __NR_statfs64: u32 = 43;
-pub const __NR_fstatfs64: u32 = 44;
-pub const __NR_truncate64: u32 = 45;
-pub const __NR_ftruncate64: u32 = 46;
-pub const __NR_llseek: u32 = 62;
-pub const __NR_sendfile64: u32 = 71;
-pub const __NR_mmap2: u32 = 222;
-pub const __NR_fadvise64_64: u32 = 223;
-pub const __NR_riscv_flush_icache: u32 = 259;
-pub const __OLD_UTS_LEN: u32 = 8;
-pub const __NEW_UTS_LEN: u32 = 64;
-pub const WNOHANG: u32 = 1;
-pub const WUNTRACED: u32 = 2;
-pub const WSTOPPED: u32 = 2;
-pub const WEXITED: u32 = 4;
-pub const WCONTINUED: u32 = 8;
-pub const WNOWAIT: u32 = 16777216;
-pub const __WNOTHREAD: u32 = 536870912;
-pub const __WALL: u32 = 1073741824;
-pub const __WCLONE: u32 = 2147483648;
-pub const P_ALL: u32 = 0;
-pub const P_PID: u32 = 1;
-pub const P_PGID: u32 = 2;
-pub const P_PIDFD: u32 = 3;
-pub const XATTR_CREATE: u32 = 1;
-pub const XATTR_REPLACE: u32 = 2;
-pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0";
-pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0";
-pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0";
-pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0";
-pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0";
-pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0";
-pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0";
-pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0";
-pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0";
-pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0";
-pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0";
-pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0";
-pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0";
-pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0";
-pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0";
-pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0";
-pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0";
-pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0";
-pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0";
-pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0";
-pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0";
-pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0";
-pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0";
-pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0";
-pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0";
-pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0";
-pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0";
-pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0";
-pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0";
-pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0";
-pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0";
-pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0";
-pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0";
-pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0";
-pub const MFD_CLOEXEC: u32 = 1;
-pub const MFD_ALLOW_SEALING: u32 = 2;
-pub const MFD_HUGETLB: u32 = 4;
-pub const MFD_HUGE_SHIFT: u32 = 26;
-pub const MFD_HUGE_MASK: u32 = 63;
-pub const MFD_HUGE_64KB: u32 = 1073741824;
-pub const MFD_HUGE_512KB: u32 = 1275068416;
-pub const MFD_HUGE_1MB: u32 = 1342177280;
-pub const MFD_HUGE_2MB: u32 = 1409286144;
-pub const MFD_HUGE_8MB: u32 = 1543503872;
-pub const MFD_HUGE_16MB: u32 = 1610612736;
-pub const MFD_HUGE_32MB: u32 = 1677721600;
-pub const MFD_HUGE_256MB: u32 = 1879048192;
-pub const MFD_HUGE_512MB: u32 = 1946157056;
-pub const MFD_HUGE_1GB: u32 = 2013265920;
-pub const MFD_HUGE_2GB: u32 = 2080374784;
-pub const MFD_HUGE_16GB: u32 = 2281701376;
-pub const TFD_TIMER_ABSTIME: u32 = 1;
-pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2;
-pub const TFD_CLOEXEC: u32 = 524288;
-pub const TFD_NONBLOCK: u32 = 2048;
-pub const USERFAULTFD_IOC: u32 = 170;
-pub const _UFFDIO_REGISTER: u32 = 0;
-pub const _UFFDIO_UNREGISTER: u32 = 1;
-pub const _UFFDIO_WAKE: u32 = 2;
-pub const _UFFDIO_COPY: u32 = 3;
-pub const _UFFDIO_ZEROPAGE: u32 = 4;
-pub const _UFFDIO_WRITEPROTECT: u32 = 6;
-pub const _UFFDIO_CONTINUE: u32 = 7;
-pub const _UFFDIO_API: u32 = 63;
-pub const UFFDIO: u32 = 170;
-pub const UFFD_EVENT_PAGEFAULT: u32 = 18;
-pub const UFFD_EVENT_FORK: u32 = 19;
-pub const UFFD_EVENT_REMAP: u32 = 20;
-pub const UFFD_EVENT_REMOVE: u32 = 21;
-pub const UFFD_EVENT_UNMAP: u32 = 22;
-pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1;
-pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2;
-pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4;
-pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1;
-pub const UFFD_FEATURE_EVENT_FORK: u32 = 2;
-pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4;
-pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8;
-pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16;
-pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32;
-pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64;
-pub const UFFD_FEATURE_SIGBUS: u32 = 128;
-pub const UFFD_FEATURE_THREAD_ID: u32 = 256;
-pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512;
-pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024;
-pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048;
-pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096;
-pub const UFFD_USER_MODE_ONLY: u32 = 1;
-pub const IORING_FILE_INDEX_ALLOC: i32 = -1;
-pub const IORING_SETUP_IOPOLL: u32 = 1;
-pub const IORING_SETUP_SQPOLL: u32 = 2;
-pub const IORING_SETUP_SQ_AFF: u32 = 4;
-pub const IORING_SETUP_CQSIZE: u32 = 8;
-pub const IORING_SETUP_CLAMP: u32 = 16;
-pub const IORING_SETUP_ATTACH_WQ: u32 = 32;
-pub const IORING_SETUP_R_DISABLED: u32 = 64;
-pub const IORING_SETUP_SUBMIT_ALL: u32 = 128;
-pub const IORING_SETUP_COOP_TASKRUN: u32 = 256;
-pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512;
-pub const IORING_SETUP_SQE128: u32 = 1024;
-pub const IORING_SETUP_CQE32: u32 = 2048;
-pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096;
-pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192;
-pub const IORING_URING_CMD_FIXED: u32 = 1;
-pub const IORING_FSYNC_DATASYNC: u32 = 1;
-pub const IORING_TIMEOUT_ABS: u32 = 1;
-pub const IORING_TIMEOUT_UPDATE: u32 = 2;
-pub const IORING_TIMEOUT_BOOTTIME: u32 = 4;
-pub const IORING_TIMEOUT_REALTIME: u32 = 8;
-pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16;
-pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32;
-pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12;
-pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18;
-pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648;
-pub const IORING_POLL_ADD_MULTI: u32 = 1;
-pub const IORING_POLL_UPDATE_EVENTS: u32 = 2;
-pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4;
-pub const IORING_POLL_ADD_LEVEL: u32 = 8;
-pub const IORING_ASYNC_CANCEL_ALL: u32 = 1;
-pub const IORING_ASYNC_CANCEL_FD: u32 = 2;
-pub const IORING_ASYNC_CANCEL_ANY: u32 = 4;
-pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8;
-pub const IORING_RECVSEND_POLL_FIRST: u32 = 1;
-pub const IORING_RECV_MULTISHOT: u32 = 2;
-pub const IORING_RECVSEND_FIXED_BUF: u32 = 4;
-pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8;
-pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648;
-pub const IORING_ACCEPT_MULTISHOT: u32 = 1;
-pub const IORING_MSG_RING_CQE_SKIP: u32 = 1;
-pub const IORING_CQE_F_BUFFER: u32 = 1;
-pub const IORING_CQE_F_MORE: u32 = 2;
-pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4;
-pub const IORING_CQE_F_NOTIF: u32 = 8;
-pub const IORING_OFF_SQ_RING: u32 = 0;
-pub const IORING_OFF_CQ_RING: u32 = 134217728;
-pub const IORING_OFF_SQES: u32 = 268435456;
-pub const IORING_SQ_NEED_WAKEUP: u32 = 1;
-pub const IORING_SQ_CQ_OVERFLOW: u32 = 2;
-pub const IORING_SQ_TASKRUN: u32 = 4;
-pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1;
-pub const IORING_ENTER_GETEVENTS: u32 = 1;
-pub const IORING_ENTER_SQ_WAKEUP: u32 = 2;
-pub const IORING_ENTER_SQ_WAIT: u32 = 4;
-pub const IORING_ENTER_EXT_ARG: u32 = 8;
-pub const IORING_ENTER_REGISTERED_RING: u32 = 16;
-pub const IORING_FEAT_SINGLE_MMAP: u32 = 1;
-pub const IORING_FEAT_NODROP: u32 = 2;
-pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4;
-pub const IORING_FEAT_RW_CUR_POS: u32 = 8;
-pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16;
-pub const IORING_FEAT_FAST_POLL: u32 = 32;
-pub const IORING_FEAT_POLL_32BITS: u32 = 64;
-pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128;
-pub const IORING_FEAT_EXT_ARG: u32 = 256;
-pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512;
-pub const IORING_FEAT_RSRC_TAGS: u32 = 1024;
-pub const IORING_FEAT_CQE_SKIP: u32 = 2048;
-pub const IORING_FEAT_LINKED_FILE: u32 = 4096;
-pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1;
-pub const IORING_REGISTER_FILES_SKIP: i32 = -2;
-pub const IO_URING_OP_SUPPORTED: u32 = 1;
-pub const DT_UNKNOWN: u32 = 0;
-pub const DT_FIFO: u32 = 1;
-pub const DT_CHR: u32 = 2;
-pub const DT_DIR: u32 = 4;
-pub const DT_BLK: u32 = 6;
-pub const DT_REG: u32 = 8;
-pub const DT_LNK: u32 = 10;
-pub const DT_SOCK: u32 = 12;
-pub const SHUT_RD: u32 = 0;
-pub const SHUT_WR: u32 = 1;
-pub const SHUT_RDWR: u32 = 2;
-pub const STAT_HAVE_NSEC: u32 = 1;
-pub const SOCK_STREAM: u32 = 1;
-pub const SOCK_DGRAM: u32 = 2;
-pub const SOCK_RAW: u32 = 3;
-pub const SOCK_RDM: u32 = 4;
-pub const SOCK_SEQPACKET: u32 = 5;
-pub const F_OK: u32 = 0;
-pub const R_OK: u32 = 4;
-pub const W_OK: u32 = 2;
-pub const X_OK: u32 = 1;
-pub const UTIME_NOW: u32 = 1073741823;
-pub const UTIME_OMIT: u32 = 1073741822;
-pub const MSG_DONTWAIT: u32 = 64;
-pub const AF_UNSPEC: u32 = 0;
-pub const AF_UNIX: u32 = 1;
-pub const AF_INET: u32 = 2;
-pub const AF_AX25: u32 = 3;
-pub const AF_IPX: u32 = 4;
-pub const AF_APPLETALK: u32 = 5;
-pub const AF_NETROM: u32 = 6;
-pub const AF_BRIDGE: u32 = 7;
-pub const AF_ATMPVC: u32 = 8;
-pub const AF_X25: u32 = 9;
-pub const AF_INET6: u32 = 10;
-pub const AF_ROSE: u32 = 11;
-pub const AF_DECnet: u32 = 12;
-pub const AF_NETBEUI: u32 = 13;
-pub const AF_SECURITY: u32 = 14;
-pub const AF_KEY: u32 = 15;
-pub const AF_NETLINK: u32 = 16;
-pub const AF_PACKET: u32 = 17;
-pub const AF_ASH: u32 = 18;
-pub const AF_ECONET: u32 = 19;
-pub const AF_ATMSVC: u32 = 20;
-pub const AF_RDS: u32 = 21;
-pub const AF_SNA: u32 = 22;
-pub const AF_IRDA: u32 = 23;
-pub const AF_PPPOX: u32 = 24;
-pub const AF_WANPIPE: u32 = 25;
-pub const AF_LLC: u32 = 26;
-pub const AF_CAN: u32 = 29;
-pub const AF_TIPC: u32 = 30;
-pub const AF_BLUETOOTH: u32 = 31;
-pub const AF_IUCV: u32 = 32;
-pub const AF_RXRPC: u32 = 33;
-pub const AF_ISDN: u32 = 34;
-pub const AF_PHONET: u32 = 35;
-pub const AF_IEEE802154: u32 = 36;
-pub const AF_MAX: u32 = 37;
-pub const MSG_OOB: u32 = 1;
-pub const MSG_PEEK: u32 = 2;
-pub const MSG_DONTROUTE: u32 = 4;
-pub const MSG_CTRUNC: u32 = 8;
-pub const MSG_PROBE: u32 = 16;
-pub const MSG_TRUNC: u32 = 32;
-pub const MSG_EOR: u32 = 128;
-pub const MSG_WAITALL: u32 = 256;
-pub const MSG_FIN: u32 = 512;
-pub const MSG_SYN: u32 = 1024;
-pub const MSG_CONFIRM: u32 = 2048;
-pub const MSG_RST: u32 = 4096;
-pub const MSG_ERRQUEUE: u32 = 8192;
-pub const MSG_NOSIGNAL: u32 = 16384;
-pub const MSG_MORE: u32 = 32768;
-pub const MSG_CMSG_CLOEXEC: u32 = 1073741824;
-pub const STDIN_FILENO: u32 = 0;
-pub const STDOUT_FILENO: u32 = 1;
-pub const STDERR_FILENO: u32 = 2;
-pub const RWF_HIPRI: u32 = 1;
-pub const RWF_DSYNC: u32 = 2;
-pub const RWF_SYNC: u32 = 4;
-pub const RWF_NOWAIT: u32 = 8;
-pub const RWF_APPEND: u32 = 16;
-pub const EFD_SEMAPHORE: u32 = 1;
-pub const EFD_CLOEXEC: u32 = 524288;
-pub const EFD_NONBLOCK: u32 = 2048;
-pub const EPOLLIN: u32 = 1;
-pub const EPOLLPRI: u32 = 2;
-pub const EPOLLOUT: u32 = 4;
-pub const EPOLLERR: u32 = 8;
-pub const EPOLLHUP: u32 = 16;
-pub const EPOLLNVAL: u32 = 32;
-pub const EPOLLRDNORM: u32 = 64;
-pub const EPOLLRDBAND: u32 = 128;
-pub const EPOLLWRNORM: u32 = 256;
-pub const EPOLLWRBAND: u32 = 512;
-pub const EPOLLMSG: u32 = 1024;
-pub const EPOLLRDHUP: u32 = 8192;
-pub const EPOLLEXCLUSIVE: u32 = 268435456;
-pub const EPOLLWAKEUP: u32 = 536870912;
-pub const EPOLLONESHOT: u32 = 1073741824;
-pub const EPOLLET: u32 = 2147483648;
-pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336;
-pub const TFD_CREATE_FLAGS: u32 = 526336;
-pub const TFD_SETTIME_FLAGS: u32 = 1;
-pub const SCM_RIGHTS: u32 = 1;
-pub const SCM_CREDENTIALS: u32 = 2;
-pub const SCM_SECURITY: u32 = 3;
-pub const UFFD_API: u32 = 170;
-pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1;
-pub const UFFDIO_REGISTER_MODE_WP: u32 = 2;
-pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4;
-pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1;
-pub const UFFDIO_COPY_MODE_WP: u32 = 2;
-pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1;
-pub const SPLICE_F_MOVE: u32 = 1;
-pub const SPLICE_F_NONBLOCK: u32 = 2;
-pub const SPLICE_F_MORE: u32 = 4;
-pub const SPLICE_F_GIFT: u32 = 8;
-pub const MNT_FORCE: u32 = 1;
-pub const MNT_DETACH: u32 = 2;
-pub const MNT_EXPIRE: u32 = 4;
-pub const UMOUNT_NOFOLLOW: u32 = 8;
-pub const UMOUNT_UNUSED: u32 = 2147483648;
-pub type size_t = crate::ctypes::c_uint;
-pub type ssize_t = crate::ctypes::c_int;
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 32usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_uid_t = __kernel_uid_t;
-pub type __kernel_old_gid_t = __kernel_gid_t;
-pub type __kernel_old_dev_t = crate::ctypes::c_uint;
-pub type __kernel_size_t = crate::ctypes::c_uint;
-pub type __kernel_ssize_t = crate::ctypes::c_int;
-pub type __kernel_ptrdiff_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_header_struct {
-pub version: __u32,
-pub pid: crate::ctypes::c_int,
-}
-pub type cap_user_header_t = *mut __user_cap_header_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_data_struct {
-pub effective: __u32,
-pub permitted: __u32,
-pub inheritable: __u32,
-}
-pub type cap_user_data_t = *mut __user_cap_data_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_cap_data__bindgen_ty_1; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize],
-pub rootid: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct f_owner_ex {
-pub type_: crate::ctypes::c_int,
-pub pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_off_t,
-pub l_len: __kernel_off_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock64 {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_loff_t,
-pub l_len: __kernel_loff_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct open_how {
-pub flags: __u64,
-pub mode: __u64,
-pub resolve: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct epoll_event {
-pub events: __poll_t,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v1 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub master_key_descriptor: [__u8; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_key {
-pub mode: __u32,
-pub raw: [__u8; 64usize],
-pub size: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v2 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub __reserved: [__u8; 4usize],
-pub master_key_identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_policy_ex_arg {
-pub policy_size: __u64,
-pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 {
-pub version: __u8,
-pub v1: fscrypt_policy_v1,
-pub v2: fscrypt_policy_v2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_key_specifier {
-pub type_: __u32,
-pub __reserved: __u32,
-pub u: fscrypt_key_specifier__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_key_specifier__bindgen_ty_1 {
-pub __reserved: [__u8; 32usize],
-pub descriptor: [__u8; 8usize],
-pub identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct fscrypt_provisioning_key_payload {
-pub type_: __u32,
-pub __reserved: __u32,
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-pub struct fscrypt_add_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub raw_size: __u32,
-pub key_id: __u32,
-pub __reserved: [__u32; 8usize],
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_remove_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub removal_status_flags: __u32,
-pub __reserved: [__u32; 5usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_key_status_arg {
-pub key_spec: fscrypt_key_specifier,
-pub __reserved: [__u32; 6usize],
-pub status: __u32,
-pub status_flags: __u32,
-pub user_count: __u32,
-pub __out_reserved: [__u32; 13usize],
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum fsconfig_command {
-FSCONFIG_SET_FLAG = 0,
-FSCONFIG_SET_STRING = 1,
-FSCONFIG_SET_BINARY = 2,
-FSCONFIG_SET_PATH = 3,
-FSCONFIG_SET_PATH_EMPTY = 4,
-FSCONFIG_SET_FD = 5,
-FSCONFIG_CMD_CREATE = 6,
-FSCONFIG_CMD_RECONFIGURE = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mount_attr {
-pub attr_set: __u64,
-pub attr_clr: __u64,
-pub propagation: __u64,
-pub userns_fd: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_clone_range {
-pub src_fd: __s64,
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_offset: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fstrim_range {
-pub start: __u64,
-pub len: __u64,
-pub minlen: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_dedupe_range_info {
-pub dest_fd: __s64,
-pub dest_offset: __u64,
-pub bytes_deduped: __u64,
-pub status: __s32,
-pub reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct file_dedupe_range {
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_count: __u16,
-pub reserved1: __u16,
-pub reserved2: __u32,
-pub info: __IncompleteArrayField<file_dedupe_range_info>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct files_stat_struct {
-pub nr_files: crate::ctypes::c_ulong,
-pub nr_free_files: crate::ctypes::c_ulong,
-pub max_files: crate::ctypes::c_ulong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct inodes_stat_t {
-pub nr_inodes: crate::ctypes::c_long,
-pub nr_unused: crate::ctypes::c_long,
-pub dummy: [crate::ctypes::c_long; 5usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fsxattr {
-pub fsx_xflags: __u32,
-pub fsx_extsize: __u32,
-pub fsx_nextents: __u32,
-pub fsx_projid: __u32,
-pub fsx_cowextsize: __u32,
-pub fsx_pad: [crate::ctypes::c_uchar; 8usize],
-}
-pub type __kernel_rwf_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct futex_waitv {
-pub val: __u64,
-pub uaddr: __u64,
-pub flags: __u32,
-pub __reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list {
-pub next: *mut robust_list,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list_head {
-pub list: robust_list,
-pub futex_offset: crate::ctypes::c_long,
-pub list_op_pending: *mut robust_list,
-}
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP;
-pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP;
-pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP;
-pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP;
-pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP;
-pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP;
-pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP;
-pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP;
-pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP;
-pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP;
-pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP;
-pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6;
-pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP;
-pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE;
-pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP;
-pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH;
-pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP;
-pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH;
-pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP;
-pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM;
-pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP;
-pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP;
-pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP;
-pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE;
-pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS;
-pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET;
-pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW;
-pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP;
-pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-IPPROTO_IP = 0,
-IPPROTO_ICMP = 1,
-IPPROTO_IGMP = 2,
-IPPROTO_IPIP = 4,
-IPPROTO_TCP = 6,
-IPPROTO_EGP = 8,
-IPPROTO_PUP = 12,
-IPPROTO_UDP = 17,
-IPPROTO_IDP = 22,
-IPPROTO_TP = 29,
-IPPROTO_DCCP = 33,
-IPPROTO_IPV6 = 41,
-IPPROTO_RSVP = 46,
-IPPROTO_GRE = 47,
-IPPROTO_ESP = 50,
-IPPROTO_AH = 51,
-IPPROTO_MTP = 92,
-IPPROTO_BEETPH = 94,
-IPPROTO_ENCAP = 98,
-IPPROTO_PIM = 103,
-IPPROTO_COMP = 108,
-IPPROTO_L2TP = 115,
-IPPROTO_SCTP = 132,
-IPPROTO_UDPLITE = 136,
-IPPROTO_MPLS = 137,
-IPPROTO_ETHERNET = 143,
-IPPROTO_RAW = 255,
-IPPROTO_MPTCP = 262,
-IPPROTO_MAX = 263,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_addr {
-pub s_addr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq {
-pub imr_multiaddr: in_addr,
-pub imr_interface: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreqn {
-pub imr_multiaddr: in_addr,
-pub imr_address: in_addr,
-pub imr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq_source {
-pub imr_multiaddr: __be32,
-pub imr_interface: __be32,
-pub imr_sourceaddr: __be32,
-}
-#[repr(C)]
-pub struct ip_msfilter {
-pub imsf_multiaddr: __be32,
-pub imsf_interface: __be32,
-pub imsf_fmode: __u32,
-pub imsf_numsrc: __u32,
-pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct ip_msfilter__bindgen_ty_1 {
-pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>,
-pub __bindgen_anon_1: __BindgenUnionField<ip_msfilter__bindgen_ty_1__bindgen_ty_1>,
-pub bindgen_union_field: u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 {
-pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-pub imsf_slist_flex: __IncompleteArrayField<__be32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_req {
-pub gr_interface: __u32,
-pub gr_group: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_source_req {
-pub gsr_interface: __u32,
-pub gsr_group: __kernel_sockaddr_storage,
-pub gsr_source: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-pub struct group_filter {
-pub __bindgen_anon_1: group_filter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_1>,
-pub __bindgen_anon_2: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_2>,
-pub bindgen_union_field: [u32; 67usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_1 {
-pub gf_interface_aux: __u32,
-pub gf_group_aux: __kernel_sockaddr_storage,
-pub gf_fmode_aux: __u32,
-pub gf_numsrc_aux: __u32,
-pub gf_slist: [__kernel_sockaddr_storage; 1usize],
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_2 {
-pub gf_interface: __u32,
-pub gf_group: __kernel_sockaddr_storage,
-pub gf_fmode: __u32,
-pub gf_numsrc: __u32,
-pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_pktinfo {
-pub ipi_ifindex: crate::ctypes::c_int,
-pub ipi_spec_dst: in_addr,
-pub ipi_addr: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_in {
-pub sin_family: __kernel_sa_family_t,
-pub sin_port: __be16,
-pub sin_addr: in_addr,
-pub __pad: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct inotify_event {
-pub wd: __s32,
-pub mask: __u32,
-pub cookie: __u32,
-pub len: __u32,
-pub name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct iphdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub tos: __u8,
-pub tot_len: __be16,
-pub id: __be16,
-pub frag_off: __be16,
-pub ttl: __u8,
-pub protocol: __u8,
-pub check: __sum16,
-pub __bindgen_anon_1: iphdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union iphdr__bindgen_ty_1 {
-pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-impl iphdr {
-#[inline]
-pub fn ihl(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_ihl(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let ihl: u8 = unsafe { ::core::mem::transmute(ihl) };
-ihl as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_auth_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub reserved: __be16,
-pub spi: __be32,
-pub seq_no: __be32,
-pub auth_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_esp_hdr {
-pub spi: __be32,
-pub seq_no: __be32,
-pub enc_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_comp_hdr {
-pub nexthdr: __u8,
-pub flags: __u8,
-pub cpi: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_beet_phdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub padlen: __u8,
-pub reserved: __u8,
-}
-pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING;
-pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING;
-pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP;
-pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS;
-pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS;
-pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS;
-pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA;
-pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER;
-pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY;
-pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS;
-pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG;
-pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER;
-pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID;
-pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM;
-pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY;
-pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION;
-pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE;
-pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE;
-pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES;
-pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT;
-pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY;
-pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL;
-pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK;
-pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN;
-pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET;
-pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP;
-pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING;
-pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER;
-pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IPV4_DEVCONF_FORWARDING = 1,
-IPV4_DEVCONF_MC_FORWARDING = 2,
-IPV4_DEVCONF_PROXY_ARP = 3,
-IPV4_DEVCONF_ACCEPT_REDIRECTS = 4,
-IPV4_DEVCONF_SECURE_REDIRECTS = 5,
-IPV4_DEVCONF_SEND_REDIRECTS = 6,
-IPV4_DEVCONF_SHARED_MEDIA = 7,
-IPV4_DEVCONF_RP_FILTER = 8,
-IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9,
-IPV4_DEVCONF_BOOTP_RELAY = 10,
-IPV4_DEVCONF_LOG_MARTIANS = 11,
-IPV4_DEVCONF_TAG = 12,
-IPV4_DEVCONF_ARPFILTER = 13,
-IPV4_DEVCONF_MEDIUM_ID = 14,
-IPV4_DEVCONF_NOXFRM = 15,
-IPV4_DEVCONF_NOPOLICY = 16,
-IPV4_DEVCONF_FORCE_IGMP_VERSION = 17,
-IPV4_DEVCONF_ARP_ANNOUNCE = 18,
-IPV4_DEVCONF_ARP_IGNORE = 19,
-IPV4_DEVCONF_PROMOTE_SECONDARIES = 20,
-IPV4_DEVCONF_ARP_ACCEPT = 21,
-IPV4_DEVCONF_ARP_NOTIFY = 22,
-IPV4_DEVCONF_ACCEPT_LOCAL = 23,
-IPV4_DEVCONF_SRC_VMARK = 24,
-IPV4_DEVCONF_PROXY_ARP_PVLAN = 25,
-IPV4_DEVCONF_ROUTE_LOCALNET = 26,
-IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27,
-IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28,
-IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29,
-IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30,
-IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31,
-IPV4_DEVCONF_BC_FORWARDING = 32,
-IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33,
-__IPV4_DEVCONF_MAX = 34,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_addr {
-pub in6_u: in6_addr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union in6_addr__bindgen_ty_1 {
-pub u6_addr8: [__u8; 16usize],
-pub u6_addr16: [__be16; 8usize],
-pub u6_addr32: [__be32; 4usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr_in6 {
-pub sin6_family: crate::ctypes::c_ushort,
-pub sin6_port: __be16,
-pub sin6_flowinfo: __be32,
-pub sin6_addr: in6_addr,
-pub sin6_scope_id: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6_mreq {
-pub ipv6mr_multiaddr: in6_addr,
-pub ipv6mr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_flowlabel_req {
-pub flr_dst: in6_addr,
-pub flr_label: __be32,
-pub flr_action: __u8,
-pub flr_share: __u8,
-pub flr_flags: __u16,
-pub flr_expires: __u16,
-pub flr_linger: __u16,
-pub __flr_pad: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_pktinfo {
-pub ipi6_addr: in6_addr,
-pub ipi6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ip6_mtuinfo {
-pub ip6m_addr: sockaddr_in6,
-pub ip6m_mtu: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_ifreq {
-pub ifr6_addr: in6_addr,
-pub ifr6_prefixlen: __u32,
-pub ifr6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_rt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub type_: __u8,
-pub segments_left: __u8,
-}
-#[repr(C, packed)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_opt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-}
-#[repr(C)]
-pub struct rt0_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: __IncompleteArrayField<in6_addr>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rt2_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: in6_addr,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct ipv6_destopt_hao {
-pub type_: __u8,
-pub length: __u8,
-pub addr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub flow_lbl: [__u8; 3usize],
-pub payload_len: __be16,
-pub nexthdr: __u8,
-pub hop_limit: __u8,
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union ipv6hdr__bindgen_ty_1 {
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-impl ipv6hdr {
-#[inline]
-pub fn priority(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_priority(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let priority: u8 = unsafe { ::core::mem::transmute(priority) };
-priority as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING;
-pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT;
-pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6;
-pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA;
-pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS;
-pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF;
-pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS;
-pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS;
-pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL;
-pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY;
-pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR;
-pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT;
-pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT;
-pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY;
-pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR;
-pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES;
-pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION;
-pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR;
-pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO;
-pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF;
-pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN;
-pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP;
-pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD;
-pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING;
-pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6;
-pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD;
-pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO;
-pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY;
-pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC;
-pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL;
-pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC;
-pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU;
-pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET;
-pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY;
-pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT;
-pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA;
-pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN;
-pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL;
-pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED;
-pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC;
-pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD;
-pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE;
-pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN;
-pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS;
-pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED;
-pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC;
-pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED;
-pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID;
-pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE;
-pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER;
-pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA;
-pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-DEVCONF_FORWARDING = 0,
-DEVCONF_HOPLIMIT = 1,
-DEVCONF_MTU6 = 2,
-DEVCONF_ACCEPT_RA = 3,
-DEVCONF_ACCEPT_REDIRECTS = 4,
-DEVCONF_AUTOCONF = 5,
-DEVCONF_DAD_TRANSMITS = 6,
-DEVCONF_RTR_SOLICITS = 7,
-DEVCONF_RTR_SOLICIT_INTERVAL = 8,
-DEVCONF_RTR_SOLICIT_DELAY = 9,
-DEVCONF_USE_TEMPADDR = 10,
-DEVCONF_TEMP_VALID_LFT = 11,
-DEVCONF_TEMP_PREFERED_LFT = 12,
-DEVCONF_REGEN_MAX_RETRY = 13,
-DEVCONF_MAX_DESYNC_FACTOR = 14,
-DEVCONF_MAX_ADDRESSES = 15,
-DEVCONF_FORCE_MLD_VERSION = 16,
-DEVCONF_ACCEPT_RA_DEFRTR = 17,
-DEVCONF_ACCEPT_RA_PINFO = 18,
-DEVCONF_ACCEPT_RA_RTR_PREF = 19,
-DEVCONF_RTR_PROBE_INTERVAL = 20,
-DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21,
-DEVCONF_PROXY_NDP = 22,
-DEVCONF_OPTIMISTIC_DAD = 23,
-DEVCONF_ACCEPT_SOURCE_ROUTE = 24,
-DEVCONF_MC_FORWARDING = 25,
-DEVCONF_DISABLE_IPV6 = 26,
-DEVCONF_ACCEPT_DAD = 27,
-DEVCONF_FORCE_TLLAO = 28,
-DEVCONF_NDISC_NOTIFY = 29,
-DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30,
-DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31,
-DEVCONF_SUPPRESS_FRAG_NDISC = 32,
-DEVCONF_ACCEPT_RA_FROM_LOCAL = 33,
-DEVCONF_USE_OPTIMISTIC = 34,
-DEVCONF_ACCEPT_RA_MTU = 35,
-DEVCONF_STABLE_SECRET = 36,
-DEVCONF_USE_OIF_ADDRS_ONLY = 37,
-DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38,
-DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39,
-DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40,
-DEVCONF_DROP_UNSOLICITED_NA = 41,
-DEVCONF_KEEP_ADDR_ON_DOWN = 42,
-DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43,
-DEVCONF_SEG6_ENABLED = 44,
-DEVCONF_SEG6_REQUIRE_HMAC = 45,
-DEVCONF_ENHANCED_DAD = 46,
-DEVCONF_ADDR_GEN_MODE = 47,
-DEVCONF_DISABLE_POLICY = 48,
-DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49,
-DEVCONF_NDISC_TCLASS = 50,
-DEVCONF_RPL_SEG_ENABLED = 51,
-DEVCONF_RA_DEFRTR_METRIC = 52,
-DEVCONF_IOAM6_ENABLED = 53,
-DEVCONF_IOAM6_ID = 54,
-DEVCONF_IOAM6_ID_WIDE = 55,
-DEVCONF_NDISC_EVICT_NOCARRIER = 56,
-DEVCONF_ACCEPT_UNTRACKED_NA = 57,
-DEVCONF_MAX = 58,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum socket_state {
-SS_FREE = 0,
-SS_UNCONNECTED = 1,
-SS_CONNECTING = 2,
-SS_CONNECTED = 3,
-SS_DISCONNECTING = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct pollfd {
-pub fd: crate::ctypes::c_int,
-pub events: crate::ctypes::c_short,
-pub revents: crate::ctypes::c_short,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prctl_mm_map {
-pub start_code: __u64,
-pub end_code: __u64,
-pub start_data: __u64,
-pub end_data: __u64,
-pub start_brk: __u64,
-pub brk: __u64,
-pub start_stack: __u64,
-pub arg_start: __u64,
-pub arg_end: __u64,
-pub env_start: __u64,
-pub env_end: __u64,
-pub auxv: *mut __u64,
-pub auxv_size: __u32,
-pub exe_fd: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rand_pool_info {
-pub entropy_count: crate::ctypes::c_int,
-pub buf_size: crate::ctypes::c_int,
-pub buf: __IncompleteArrayField<__u32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_timespec {
-pub tv_sec: __kernel_time64_t,
-pub tv_nsec: crate::ctypes::c_longlong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_itimerspec {
-pub it_interval: __kernel_timespec,
-pub it_value: __kernel_timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timeval {
-pub tv_sec: __kernel_long_t,
-pub tv_usec: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_itimerval {
-pub it_interval: __kernel_old_timeval,
-pub it_value: __kernel_old_timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sock_timeval {
-pub tv_sec: __s64,
-pub tv_usec: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timeval {
-pub tv_sec: __kernel_old_time_t,
-pub tv_usec: __kernel_suseconds_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerspec {
-pub it_interval: timespec,
-pub it_value: timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerval {
-pub it_interval: timeval,
-pub it_value: timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timezone {
-pub tz_minuteswest: crate::ctypes::c_int,
-pub tz_dsttime: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rusage {
-pub ru_utime: __kernel_old_timeval,
-pub ru_stime: __kernel_old_timeval,
-pub ru_maxrss: __kernel_long_t,
-pub ru_ixrss: __kernel_long_t,
-pub ru_idrss: __kernel_long_t,
-pub ru_isrss: __kernel_long_t,
-pub ru_minflt: __kernel_long_t,
-pub ru_majflt: __kernel_long_t,
-pub ru_nswap: __kernel_long_t,
-pub ru_inblock: __kernel_long_t,
-pub ru_oublock: __kernel_long_t,
-pub ru_msgsnd: __kernel_long_t,
-pub ru_msgrcv: __kernel_long_t,
-pub ru_nsignals: __kernel_long_t,
-pub ru_nvcsw: __kernel_long_t,
-pub ru_nivcsw: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit {
-pub rlim_cur: __kernel_ulong_t,
-pub rlim_max: __kernel_ulong_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit64 {
-pub rlim_cur: __u64,
-pub rlim_max: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct clone_args {
-pub flags: __u64,
-pub pidfd: __u64,
-pub child_tid: __u64,
-pub parent_tid: __u64,
-pub exit_signal: __u64,
-pub stack: __u64,
-pub stack_size: __u64,
-pub tls: __u64,
-pub set_tid: __u64,
-pub set_tid_size: __u64,
-pub cgroup: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigset_t {
-pub sig: [crate::ctypes::c_ulong; 2usize],
-}
-pub type old_sigset_t = crate::ctypes::c_ulong;
-pub type __signalfn_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __sighandler_t = __signalfn_t;
-pub type __restorefn_t = ::core::option::Option<unsafe extern "C" fn()>;
-pub type __sigrestore_t = __restorefn_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaction {
-pub sa_handler: __sighandler_t,
-pub sa_flags: crate::ctypes::c_ulong,
-pub sa_mask: sigset_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaltstack {
-pub ss_sp: *mut crate::ctypes::c_void,
-pub ss_flags: crate::ctypes::c_int,
-pub ss_size: __kernel_size_t,
-}
-pub type stack_t = sigaltstack;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigval {
-pub sival_int: crate::ctypes::c_int,
-pub sival_ptr: *mut crate::ctypes::c_void,
-}
-pub type sigval_t = sigval;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields {
-pub _kill: __sifields__bindgen_ty_1,
-pub _timer: __sifields__bindgen_ty_2,
-pub _rt: __sifields__bindgen_ty_3,
-pub _sigchld: __sifields__bindgen_ty_4,
-pub _sigfault: __sifields__bindgen_ty_5,
-pub _sigpoll: __sifields__bindgen_ty_6,
-pub _sigsys: __sifields__bindgen_ty_7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_1 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_2 {
-pub _tid: __kernel_timer_t,
-pub _overrun: crate::ctypes::c_int,
-pub _sigval: sigval_t,
-pub _sys_private: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_3 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _sigval: sigval_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_4 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _status: crate::ctypes::c_int,
-pub _utime: __kernel_clock_t,
-pub _stime: __kernel_clock_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_5 {
-pub _addr: *mut crate::ctypes::c_void,
-pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields__bindgen_ty_5__bindgen_ty_1 {
-pub _trapno: crate::ctypes::c_int,
-pub _addr_lsb: crate::ctypes::c_short,
-pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1,
-pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2,
-pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {
-pub _dummy_bnd: [crate::ctypes::c_char; 4usize],
-pub _lower: *mut crate::ctypes::c_void,
-pub _upper: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 {
-pub _dummy_pkey: [crate::ctypes::c_char; 4usize],
-pub _pkey: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 {
-pub _data: crate::ctypes::c_ulong,
-pub _type: __u32,
-pub _flags: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_6 {
-pub _band: crate::ctypes::c_long,
-pub _fd: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_7 {
-pub _call_addr: *mut crate::ctypes::c_void,
-pub _syscall: crate::ctypes::c_int,
-pub _arch: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union siginfo__bindgen_ty_1 {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1,
-pub _si_pad: [crate::ctypes::c_int; 32usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo__bindgen_ty_1__bindgen_ty_1 {
-pub si_signo: crate::ctypes::c_int,
-pub si_errno: crate::ctypes::c_int,
-pub si_code: crate::ctypes::c_int,
-pub _sifields: __sifields,
-}
-pub type siginfo_t = siginfo;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sigevent {
-pub sigev_value: sigval_t,
-pub sigev_signo: crate::ctypes::c_int,
-pub sigev_notify: crate::ctypes::c_int,
-pub _sigev_un: sigevent__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigevent__bindgen_ty_1 {
-pub _pad: [crate::ctypes::c_int; 13usize],
-pub _tid: crate::ctypes::c_int,
-pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigevent__bindgen_ty_1__bindgen_ty_1 {
-pub _function: ::core::option::Option<unsafe extern "C" fn(arg1: sigval_t)>,
-pub _attribute: *mut crate::ctypes::c_void,
-}
-pub type sigevent_t = sigevent;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx_timestamp {
-pub tv_sec: __s64,
-pub tv_nsec: __u32,
-pub __reserved: __s32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx {
-pub stx_mask: __u32,
-pub stx_blksize: __u32,
-pub stx_attributes: __u64,
-pub stx_nlink: __u32,
-pub stx_uid: __u32,
-pub stx_gid: __u32,
-pub stx_mode: __u16,
-pub __spare0: [__u16; 1usize],
-pub stx_ino: __u64,
-pub stx_size: __u64,
-pub stx_blocks: __u64,
-pub stx_attributes_mask: __u64,
-pub stx_atime: statx_timestamp,
-pub stx_btime: statx_timestamp,
-pub stx_ctime: statx_timestamp,
-pub stx_mtime: statx_timestamp,
-pub stx_rdev_major: __u32,
-pub stx_rdev_minor: __u32,
-pub stx_dev_major: __u32,
-pub stx_dev_minor: __u32,
-pub stx_mnt_id: __u64,
-pub stx_dio_mem_align: __u32,
-pub stx_dio_offset_align: __u32,
-pub __spare3: [__u64; 12usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sysinfo {
-pub uptime: __kernel_long_t,
-pub loads: [__kernel_ulong_t; 3usize],
-pub totalram: __kernel_ulong_t,
-pub freeram: __kernel_ulong_t,
-pub sharedram: __kernel_ulong_t,
-pub bufferram: __kernel_ulong_t,
-pub totalswap: __kernel_ulong_t,
-pub freeswap: __kernel_ulong_t,
-pub procs: __u16,
-pub pad: __u16,
-pub totalhigh: __kernel_ulong_t,
-pub freehigh: __kernel_ulong_t,
-pub mem_unit: __u32,
-pub _f: [crate::ctypes::c_char; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcphdr {
-pub source: __be16,
-pub dest: __be16,
-pub seq: __be32,
-pub ack_seq: __be32,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub window: __be16,
-pub check: __sum16,
-pub urg_ptr: __be16,
-}
-impl tcphdr {
-#[inline]
-pub fn res1(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_res1(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn doff(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_doff(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn fin(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_fin(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn syn(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_syn(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn rst(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_rst(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(10usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn psh(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_psh(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(11usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ack(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ack(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(12usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn urg(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_urg(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(13usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ece(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ece(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(14usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn cwr(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_cwr(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(15usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let res1: u16 = unsafe { ::core::mem::transmute(res1) };
-res1 as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let doff: u16 = unsafe { ::core::mem::transmute(doff) };
-doff as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let fin: u16 = unsafe { ::core::mem::transmute(fin) };
-fin as u64
-});
-__bindgen_bitfield_unit.set(9usize, 1u8, {
-let syn: u16 = unsafe { ::core::mem::transmute(syn) };
-syn as u64
-});
-__bindgen_bitfield_unit.set(10usize, 1u8, {
-let rst: u16 = unsafe { ::core::mem::transmute(rst) };
-rst as u64
-});
-__bindgen_bitfield_unit.set(11usize, 1u8, {
-let psh: u16 = unsafe { ::core::mem::transmute(psh) };
-psh as u64
-});
-__bindgen_bitfield_unit.set(12usize, 1u8, {
-let ack: u16 = unsafe { ::core::mem::transmute(ack) };
-ack as u64
-});
-__bindgen_bitfield_unit.set(13usize, 1u8, {
-let urg: u16 = unsafe { ::core::mem::transmute(urg) };
-urg as u64
-});
-__bindgen_bitfield_unit.set(14usize, 1u8, {
-let ece: u16 = unsafe { ::core::mem::transmute(ece) };
-ece as u64
-});
-__bindgen_bitfield_unit.set(15usize, 1u8, {
-let cwr: u16 = unsafe { ::core::mem::transmute(cwr) };
-cwr as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union tcp_word_hdr {
-pub hdr: tcphdr,
-pub words: [__be32; 5usize],
-}
-pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR;
-pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE;
-pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG;
-pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK;
-pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH;
-pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST;
-pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN;
-pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN;
-pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS;
-pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-TCP_FLAG_CWR = 32768,
-TCP_FLAG_ECE = 16384,
-TCP_FLAG_URG = 8192,
-TCP_FLAG_ACK = 4096,
-TCP_FLAG_PSH = 2048,
-TCP_FLAG_RST = 1024,
-TCP_FLAG_SYN = 512,
-TCP_FLAG_FIN = 256,
-TCP_RESERVED_BITS = 15,
-TCP_DATA_OFFSET = 240,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_opt {
-pub opt_code: __u32,
-pub opt_val: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_window {
-pub snd_wl1: __u32,
-pub snd_wnd: __u32,
-pub max_window: __u32,
-pub rcv_wnd: __u32,
-pub rcv_wup: __u32,
-}
-pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE;
-pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE;
-pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE;
-pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-TCP_NO_QUEUE = 0,
-TCP_RECV_QUEUE = 1,
-TCP_SEND_QUEUE = 2,
-TCP_QUEUES_NR = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_fastopen_client_fail {
-TFO_STATUS_UNSPEC = 0,
-TFO_COOKIE_UNAVAILABLE = 1,
-TFO_DATA_NOT_ACKED = 2,
-TFO_SYN_RETRANSMITTED = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_ca_state {
-TCP_CA_Open = 0,
-TCP_CA_Disorder = 1,
-TCP_CA_CWR = 2,
-TCP_CA_Recovery = 3,
-TCP_CA_Loss = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_info {
-pub tcpi_state: __u8,
-pub tcpi_ca_state: __u8,
-pub tcpi_retransmits: __u8,
-pub tcpi_probes: __u8,
-pub tcpi_backoff: __u8,
-pub tcpi_options: __u8,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub tcpi_rto: __u32,
-pub tcpi_ato: __u32,
-pub tcpi_snd_mss: __u32,
-pub tcpi_rcv_mss: __u32,
-pub tcpi_unacked: __u32,
-pub tcpi_sacked: __u32,
-pub tcpi_lost: __u32,
-pub tcpi_retrans: __u32,
-pub tcpi_fackets: __u32,
-pub tcpi_last_data_sent: __u32,
-pub tcpi_last_ack_sent: __u32,
-pub tcpi_last_data_recv: __u32,
-pub tcpi_last_ack_recv: __u32,
-pub tcpi_pmtu: __u32,
-pub tcpi_rcv_ssthresh: __u32,
-pub tcpi_rtt: __u32,
-pub tcpi_rttvar: __u32,
-pub tcpi_snd_ssthresh: __u32,
-pub tcpi_snd_cwnd: __u32,
-pub tcpi_advmss: __u32,
-pub tcpi_reordering: __u32,
-pub tcpi_rcv_rtt: __u32,
-pub tcpi_rcv_space: __u32,
-pub tcpi_total_retrans: __u32,
-pub tcpi_pacing_rate: __u64,
-pub tcpi_max_pacing_rate: __u64,
-pub tcpi_bytes_acked: __u64,
-pub tcpi_bytes_received: __u64,
-pub tcpi_segs_out: __u32,
-pub tcpi_segs_in: __u32,
-pub tcpi_notsent_bytes: __u32,
-pub tcpi_min_rtt: __u32,
-pub tcpi_data_segs_in: __u32,
-pub tcpi_data_segs_out: __u32,
-pub tcpi_delivery_rate: __u64,
-pub tcpi_busy_time: __u64,
-pub tcpi_rwnd_limited: __u64,
-pub tcpi_sndbuf_limited: __u64,
-pub tcpi_delivered: __u32,
-pub tcpi_delivered_ce: __u32,
-pub tcpi_bytes_sent: __u64,
-pub tcpi_bytes_retrans: __u64,
-pub tcpi_dsack_dups: __u32,
-pub tcpi_reord_seen: __u32,
-pub tcpi_rcv_ooopack: __u32,
-pub tcpi_snd_wnd: __u32,
-pub tcpi_rcv_wnd: __u32,
-pub tcpi_rehash: __u32,
-}
-impl tcp_info {
-#[inline]
-pub fn tcpi_snd_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_snd_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_rcv_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_fastopen_client_fail(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) };
-tcpi_snd_wscale as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) };
-tcpi_rcv_wscale as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) };
-tcpi_delivery_rate_app_limited as u64
-});
-__bindgen_bitfield_unit.set(9usize, 2u8, {
-let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) };
-tcpi_fastopen_client_fail as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD;
-pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY;
-pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED;
-pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED;
-pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT;
-pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS;
-pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE;
-pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE;
-pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND;
-pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING;
-pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT;
-pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS;
-pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT;
-pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE;
-pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE;
-pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH;
-pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED;
-pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE;
-pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT;
-pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS;
-pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS;
-pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN;
-pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT;
-pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH;
-pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT;
-pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
-pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
-pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-TCP_NLA_PAD = 0,
-TCP_NLA_BUSY = 1,
-TCP_NLA_RWND_LIMITED = 2,
-TCP_NLA_SNDBUF_LIMITED = 3,
-TCP_NLA_DATA_SEGS_OUT = 4,
-TCP_NLA_TOTAL_RETRANS = 5,
-TCP_NLA_PACING_RATE = 6,
-TCP_NLA_DELIVERY_RATE = 7,
-TCP_NLA_SND_CWND = 8,
-TCP_NLA_REORDERING = 9,
-TCP_NLA_MIN_RTT = 10,
-TCP_NLA_RECUR_RETRANS = 11,
-TCP_NLA_DELIVERY_RATE_APP_LMT = 12,
-TCP_NLA_SNDQ_SIZE = 13,
-TCP_NLA_CA_STATE = 14,
-TCP_NLA_SND_SSTHRESH = 15,
-TCP_NLA_DELIVERED = 16,
-TCP_NLA_DELIVERED_CE = 17,
-TCP_NLA_BYTES_SENT = 18,
-TCP_NLA_BYTES_RETRANS = 19,
-TCP_NLA_DSACK_DUPS = 20,
-TCP_NLA_REORD_SEEN = 21,
-TCP_NLA_SRTT = 22,
-TCP_NLA_TIMEOUT_REHASH = 23,
-TCP_NLA_BYTES_NOTSENT = 24,
-TCP_NLA_EDT = 25,
-TCP_NLA_TTL = 26,
-TCP_NLA_REHASH = 27,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct tcp_md5sig {
-pub tcpm_addr: __kernel_sockaddr_storage,
-pub tcpm_flags: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_ifindex: crate::ctypes::c_int,
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_diag_md5sig {
-pub tcpm_family: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_addr: [__be32; 4usize],
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_zerocopy_receive {
-pub address: __u64,
-pub length: __u32,
-pub recv_skip_hint: __u32,
-pub inq: __u32,
-pub err: __s32,
-pub copybuf_address: __u64,
-pub copybuf_len: __s32,
-pub flags: __u32,
-pub msg_control: __u64,
-pub msg_controllen: __u64,
-pub msg_flags: __u32,
-pub reserved: __u32,
-}
-pub type cc_t = crate::ctypes::c_uchar;
-pub type speed_t = crate::ctypes::c_uint;
-pub type tcflag_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios2 {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ktermios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct winsize {
-pub ws_row: crate::ctypes::c_ushort,
-pub ws_col: crate::ctypes::c_ushort,
-pub ws_xpixel: crate::ctypes::c_ushort,
-pub ws_ypixel: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termio {
-pub c_iflag: crate::ctypes::c_ushort,
-pub c_oflag: crate::ctypes::c_ushort,
-pub c_cflag: crate::ctypes::c_ushort,
-pub c_lflag: crate::ctypes::c_ushort,
-pub c_line: crate::ctypes::c_uchar,
-pub c_cc: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iovec {
-pub iov_base: *mut crate::ctypes::c_void,
-pub iov_len: __kernel_size_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_un {
-pub sun_family: __kernel_sa_family_t,
-pub sun_path: [crate::ctypes::c_char; 108usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct oldold_utsname {
-pub sysname: [crate::ctypes::c_char; 9usize],
-pub nodename: [crate::ctypes::c_char; 9usize],
-pub release: [crate::ctypes::c_char; 9usize],
-pub version: [crate::ctypes::c_char; 9usize],
-pub machine: [crate::ctypes::c_char; 9usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct old_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct new_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-pub domainname: [crate::ctypes::c_char; 65usize],
-}
-impl membarrier_cmd {
-pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd {
-MEMBARRIER_CMD_QUERY = 0,
-MEMBARRIER_CMD_GLOBAL = 1,
-MEMBARRIER_CMD_GLOBAL_EXPEDITED = 2,
-MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = 4,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED = 8,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = 16,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = 32,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = 64,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = 128,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = 256,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd_flag {
-MEMBARRIER_CMD_FLAG_CPU = 1,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg {
-pub event: __u8,
-pub reserved1: __u8,
-pub reserved2: __u16,
-pub reserved3: __u32,
-pub arg: uffd_msg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1 {
-pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1,
-pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2,
-pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3,
-pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4,
-pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 {
-pub flags: __u64,
-pub address: __u64,
-pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {
-pub ptid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 {
-pub ufd: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 {
-pub from: __u64,
-pub to: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 {
-pub start: __u64,
-pub end: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 {
-pub reserved1: __u64,
-pub reserved2: __u64,
-pub reserved3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_api {
-pub api: __u64,
-pub features: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_range {
-pub start: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_register {
-pub range: uffdio_range,
-pub mode: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_copy {
-pub dst: __u64,
-pub src: __u64,
-pub len: __u64,
-pub mode: __u64,
-pub copy: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_zeropage {
-pub range: uffdio_range,
-pub mode: __u64,
-pub zeropage: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_writeprotect {
-pub range: uffdio_range,
-pub mode: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_continue {
-pub range: uffdio_range,
-pub mode: __u64,
-pub mapped: __s64,
-}
-#[repr(C)]
-pub struct io_uring_sqe {
-pub opcode: __u8,
-pub flags: __u8,
-pub ioprio: __u16,
-pub fd: __s32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1,
-pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2,
-pub len: __u32,
-pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3,
-pub user_data: __u64,
-pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4,
-pub personality: __u16,
-pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5,
-pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_1 {
-pub off: __u64,
-pub addr2: __u64,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 {
-pub cmd_op: __u32,
-pub __pad1: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_2 {
-pub addr: __u64,
-pub splice_off_in: __u64,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_3 {
-pub rw_flags: __kernel_rwf_t,
-pub fsync_flags: __u32,
-pub poll_events: __u16,
-pub poll32_events: __u32,
-pub sync_range_flags: __u32,
-pub msg_flags: __u32,
-pub timeout_flags: __u32,
-pub accept_flags: __u32,
-pub cancel_flags: __u32,
-pub open_flags: __u32,
-pub statx_flags: __u32,
-pub fadvise_advice: __u32,
-pub splice_flags: __u32,
-pub rename_flags: __u32,
-pub unlink_flags: __u32,
-pub hardlink_flags: __u32,
-pub xattr_flags: __u32,
-pub msg_ring_flags: __u32,
-pub uring_cmd_flags: __u32,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_4 {
-pub buf_index: __u16,
-pub buf_group: __u16,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_5 {
-pub splice_fd_in: __s32,
-pub file_index: __u32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 {
-pub addr_len: __u16,
-pub __pad3: [__u16; 1usize],
-}
-#[repr(C)]
-pub struct io_uring_sqe__bindgen_ty_6 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_sqe__bindgen_ty_6__bindgen_ty_1>,
-pub cmd: __BindgenUnionField<[__u8; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 {
-pub addr3: __u64,
-pub __pad2: [__u64; 1usize],
-}
-pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT;
-pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT;
-pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT;
-pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT;
-pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT;
-pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT;
-pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-IOSQE_FIXED_FILE_BIT = 0,
-IOSQE_IO_DRAIN_BIT = 1,
-IOSQE_IO_LINK_BIT = 2,
-IOSQE_IO_HARDLINK_BIT = 3,
-IOSQE_ASYNC_BIT = 4,
-IOSQE_BUFFER_SELECT_BIT = 5,
-IOSQE_CQE_SKIP_SUCCESS_BIT = 6,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum io_uring_op {
-IORING_OP_NOP = 0,
-IORING_OP_READV = 1,
-IORING_OP_WRITEV = 2,
-IORING_OP_FSYNC = 3,
-IORING_OP_READ_FIXED = 4,
-IORING_OP_WRITE_FIXED = 5,
-IORING_OP_POLL_ADD = 6,
-IORING_OP_POLL_REMOVE = 7,
-IORING_OP_SYNC_FILE_RANGE = 8,
-IORING_OP_SENDMSG = 9,
-IORING_OP_RECVMSG = 10,
-IORING_OP_TIMEOUT = 11,
-IORING_OP_TIMEOUT_REMOVE = 12,
-IORING_OP_ACCEPT = 13,
-IORING_OP_ASYNC_CANCEL = 14,
-IORING_OP_LINK_TIMEOUT = 15,
-IORING_OP_CONNECT = 16,
-IORING_OP_FALLOCATE = 17,
-IORING_OP_OPENAT = 18,
-IORING_OP_CLOSE = 19,
-IORING_OP_FILES_UPDATE = 20,
-IORING_OP_STATX = 21,
-IORING_OP_READ = 22,
-IORING_OP_WRITE = 23,
-IORING_OP_FADVISE = 24,
-IORING_OP_MADVISE = 25,
-IORING_OP_SEND = 26,
-IORING_OP_RECV = 27,
-IORING_OP_OPENAT2 = 28,
-IORING_OP_EPOLL_CTL = 29,
-IORING_OP_SPLICE = 30,
-IORING_OP_PROVIDE_BUFFERS = 31,
-IORING_OP_REMOVE_BUFFERS = 32,
-IORING_OP_TEE = 33,
-IORING_OP_SHUTDOWN = 34,
-IORING_OP_RENAMEAT = 35,
-IORING_OP_UNLINKAT = 36,
-IORING_OP_MKDIRAT = 37,
-IORING_OP_SYMLINKAT = 38,
-IORING_OP_LINKAT = 39,
-IORING_OP_MSG_RING = 40,
-IORING_OP_FSETXATTR = 41,
-IORING_OP_SETXATTR = 42,
-IORING_OP_FGETXATTR = 43,
-IORING_OP_GETXATTR = 44,
-IORING_OP_SOCKET = 45,
-IORING_OP_URING_CMD = 46,
-IORING_OP_SEND_ZC = 47,
-IORING_OP_SENDMSG_ZC = 48,
-IORING_OP_LAST = 49,
-}
-pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA;
-pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IORING_MSG_DATA = 0,
-IORING_MSG_SEND_FD = 1,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_cqe {
-pub user_data: __u64,
-pub res: __s32,
-pub flags: __u32,
-pub big_cqe: __IncompleteArrayField<__u64>,
-}
-pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IORING_CQE_BUFFER_SHIFT = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_sqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub flags: __u32,
-pub dropped: __u32,
-pub array: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_cqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub overflow: __u32,
-pub cqes: __u32,
-pub flags: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_params {
-pub sq_entries: __u32,
-pub cq_entries: __u32,
-pub flags: __u32,
-pub sq_thread_cpu: __u32,
-pub sq_thread_idle: __u32,
-pub features: __u32,
-pub wq_fd: __u32,
-pub resv: [__u32; 3usize],
-pub sq_off: io_sqring_offsets,
-pub cq_off: io_cqring_offsets,
-}
-pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS;
-pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS;
-pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES;
-pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES;
-pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD;
-pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD;
-pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE;
-pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC;
-pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE;
-pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY;
-pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY;
-pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS;
-pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS;
-pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2;
-pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2;
-pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2;
-pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE;
-pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF;
-pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF;
-pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS;
-pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS;
-pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS;
-pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING;
-pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING;
-pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL;
-pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE;
-pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IORING_REGISTER_BUFFERS = 0,
-IORING_UNREGISTER_BUFFERS = 1,
-IORING_REGISTER_FILES = 2,
-IORING_UNREGISTER_FILES = 3,
-IORING_REGISTER_EVENTFD = 4,
-IORING_UNREGISTER_EVENTFD = 5,
-IORING_REGISTER_FILES_UPDATE = 6,
-IORING_REGISTER_EVENTFD_ASYNC = 7,
-IORING_REGISTER_PROBE = 8,
-IORING_REGISTER_PERSONALITY = 9,
-IORING_UNREGISTER_PERSONALITY = 10,
-IORING_REGISTER_RESTRICTIONS = 11,
-IORING_REGISTER_ENABLE_RINGS = 12,
-IORING_REGISTER_FILES2 = 13,
-IORING_REGISTER_FILES_UPDATE2 = 14,
-IORING_REGISTER_BUFFERS2 = 15,
-IORING_REGISTER_BUFFERS_UPDATE = 16,
-IORING_REGISTER_IOWQ_AFF = 17,
-IORING_UNREGISTER_IOWQ_AFF = 18,
-IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
-IORING_REGISTER_RING_FDS = 20,
-IORING_UNREGISTER_RING_FDS = 21,
-IORING_REGISTER_PBUF_RING = 22,
-IORING_UNREGISTER_PBUF_RING = 23,
-IORING_REGISTER_SYNC_CANCEL = 24,
-IORING_REGISTER_FILE_ALLOC_RANGE = 25,
-IORING_REGISTER_LAST = 26,
-}
-pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND;
-pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IO_WQ_BOUND = 0,
-IO_WQ_UNBOUND = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_files_update {
-pub offset: __u32,
-pub resv: __u32,
-pub fds: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_register {
-pub nr: __u32,
-pub flags: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub tags: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update2 {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-pub tags: __u64,
-pub nr: __u32,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_slot {
-pub tag: __u64,
-pub resv: [__u64; 3usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_register {
-pub nr_slots: __u32,
-pub resv: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub resv3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_probe_op {
-pub op: __u8,
-pub resv: __u8,
-pub flags: __u16,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_probe {
-pub last_op: __u8,
-pub ops_len: __u8,
-pub resv: __u16,
-pub resv2: [__u32; 3usize],
-pub ops: __IncompleteArrayField<io_uring_probe_op>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct io_uring_restriction {
-pub opcode: __u16,
-pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1,
-pub resv: __u8,
-pub resv2: [__u32; 3usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_restriction__bindgen_ty_1 {
-pub register_op: __u8,
-pub sqe_op: __u8,
-pub sqe_flags: __u8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf {
-pub addr: __u64,
-pub len: __u32,
-pub bid: __u16,
-pub resv: __u16,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring {
-pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1>,
-pub bufs: __BindgenUnionField<[io_uring_buf; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 {
-pub resv1: __u64,
-pub resv2: __u32,
-pub resv3: __u16,
-pub tail: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_reg {
-pub ring_addr: __u64,
-pub ring_entries: __u32,
-pub bgid: __u16,
-pub pad: __u16,
-pub resv: [__u64; 3usize],
-}
-pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP;
-pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP;
-pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED;
-pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED;
-pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IORING_RESTRICTION_REGISTER_OP = 0,
-IORING_RESTRICTION_SQE_OP = 1,
-IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2,
-IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3,
-IORING_RESTRICTION_LAST = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_getevents_arg {
-pub sigmask: __u64,
-pub sigmask_sz: __u32,
-pub pad: __u32,
-pub ts: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sync_cancel_reg {
-pub addr: __u64,
-pub fd: __s32,
-pub flags: __u32,
-pub timeout: __kernel_timespec,
-pub pad: [__u64; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_file_index_range {
-pub off: __u32,
-pub len: __u32,
-pub resv: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_recvmsg_out {
-pub namelen: __u32,
-pub controllen: __u32,
-pub payloadlen: __u32,
-pub flags: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr {
-pub __storage: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct linger {
-pub l_onoff: crate::ctypes::c_int,
-pub l_linger: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct linux_dirent64 {
-pub d_ino: crate::ctypes::c_ulonglong,
-pub d_off: crate::ctypes::c_longlong,
-pub d_reclen: __u16,
-pub d_type: __u8,
-pub d_name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-pub type socklen_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct stat {
-pub st_dev: crate::ctypes::c_ulong,
-pub st_ino: crate::ctypes::c_ulong,
-pub st_mode: crate::ctypes::c_uint,
-pub st_nlink: crate::ctypes::c_uint,
-pub st_uid: crate::ctypes::c_uint,
-pub st_gid: crate::ctypes::c_uint,
-pub st_rdev: crate::ctypes::c_ulong,
-pub __pad1: crate::ctypes::c_ulong,
-pub st_size: crate::ctypes::c_long,
-pub st_blksize: crate::ctypes::c_int,
-pub __pad2: crate::ctypes::c_int,
-pub st_blocks: crate::ctypes::c_long,
-pub st_atime: crate::ctypes::c_long,
-pub st_atime_nsec: crate::ctypes::c_ulong,
-pub st_mtime: crate::ctypes::c_long,
-pub st_mtime_nsec: crate::ctypes::c_ulong,
-pub st_ctime: crate::ctypes::c_long,
-pub st_ctime_nsec: crate::ctypes::c_ulong,
-pub __unused4: crate::ctypes::c_uint,
-pub __unused5: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct stat64 {
-pub st_dev: crate::ctypes::c_ulonglong,
-pub st_ino: crate::ctypes::c_ulonglong,
-pub st_mode: crate::ctypes::c_uint,
-pub st_nlink: crate::ctypes::c_uint,
-pub st_uid: crate::ctypes::c_uint,
-pub st_gid: crate::ctypes::c_uint,
-pub st_rdev: crate::ctypes::c_ulonglong,
-pub __pad1: crate::ctypes::c_ulonglong,
-pub st_size: crate::ctypes::c_longlong,
-pub st_blksize: crate::ctypes::c_int,
-pub __pad2: crate::ctypes::c_int,
-pub st_blocks: crate::ctypes::c_longlong,
-pub st_atime: crate::ctypes::c_int,
-pub st_atime_nsec: crate::ctypes::c_uint,
-pub st_mtime: crate::ctypes::c_int,
-pub st_mtime_nsec: crate::ctypes::c_uint,
-pub st_ctime: crate::ctypes::c_int,
-pub st_ctime_nsec: crate::ctypes::c_uint,
-pub __unused4: crate::ctypes::c_uint,
-pub __unused5: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u32,
-pub f_bfree: __u32,
-pub f_bavail: __u32,
-pub f_files: __u32,
-pub f_ffree: __u32,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs64 {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct compat_statfs64 {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-pub type __fsword_t = __u32;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct user_desc {
-pub entry_number: crate::ctypes::c_uint,
-pub base_addr: crate::ctypes::c_uint,
-pub limit: crate::ctypes::c_uint,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub __bindgen_padding_0: [u8; 3usize],
-}
-impl user_desc {
-#[inline]
-pub fn seg_32bit(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_32bit(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn contents(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 2u8) as u32) }
-}
-#[inline]
-pub fn set_contents(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(1usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn read_exec_only(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_read_exec_only(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(3usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn limit_in_pages(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_limit_in_pages(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn seg_not_present(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_not_present(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(5usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn useable(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_useable(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(6usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(seg_32bit: crate::ctypes::c_uint, contents: crate::ctypes::c_uint, read_exec_only: crate::ctypes::c_uint, limit_in_pages: crate::ctypes::c_uint, seg_not_present: crate::ctypes::c_uint, useable: crate::ctypes::c_uint) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 1u8, {
-let seg_32bit: u32 = unsafe { ::core::mem::transmute(seg_32bit) };
-seg_32bit as u64
-});
-__bindgen_bitfield_unit.set(1usize, 2u8, {
-let contents: u32 = unsafe { ::core::mem::transmute(contents) };
-contents as u64
-});
-__bindgen_bitfield_unit.set(3usize, 1u8, {
-let read_exec_only: u32 = unsafe { ::core::mem::transmute(read_exec_only) };
-read_exec_only as u64
-});
-__bindgen_bitfield_unit.set(4usize, 1u8, {
-let limit_in_pages: u32 = unsafe { ::core::mem::transmute(limit_in_pages) };
-limit_in_pages as u64
-});
-__bindgen_bitfield_unit.set(5usize, 1u8, {
-let seg_not_present: u32 = unsafe { ::core::mem::transmute(seg_not_present) };
-seg_not_present as u64
-});
-__bindgen_bitfield_unit.set(6usize, 1u8, {
-let useable: u32 = unsafe { ::core::mem::transmute(useable) };
-useable as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct msghdr {
-pub msg_name: *mut crate::ctypes::c_void,
-pub msg_namelen: crate::ctypes::c_int,
-pub msg_iov: *mut iovec,
-pub msg_iovlen: size_t,
-pub msg_control: *mut crate::ctypes::c_void,
-pub msg_controllen: size_t,
-pub msg_flags: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct cmsghdr {
-pub cmsg_len: size_t,
-pub cmsg_level: crate::ctypes::c_int,
-pub cmsg_type: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ucred {
-pub pid: __u32,
-pub uid: __u32,
-pub gid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mmsghdr {
-pub msg_hdr: msghdr,
-pub msg_len: crate::ctypes::c_uint,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/riscv32/ioctl.rs b/vendor/linux-raw-sys-0.3.2/src/riscv32/ioctl.rs
deleted file mode 100644
index 43852a466..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/riscv32/ioctl.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-
diff --git a/vendor/linux-raw-sys-0.3.2/src/riscv32/netlink.rs b/vendor/linux-raw-sys-0.3.2/src/riscv32/netlink.rs
deleted file mode 100644
index 86b823519..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/riscv32/netlink.rs
+++ /dev/null
@@ -1,2860 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const NETLINK_ROUTE: u32 = 0;
-pub const NETLINK_UNUSED: u32 = 1;
-pub const NETLINK_USERSOCK: u32 = 2;
-pub const NETLINK_FIREWALL: u32 = 3;
-pub const NETLINK_SOCK_DIAG: u32 = 4;
-pub const NETLINK_NFLOG: u32 = 5;
-pub const NETLINK_XFRM: u32 = 6;
-pub const NETLINK_SELINUX: u32 = 7;
-pub const NETLINK_ISCSI: u32 = 8;
-pub const NETLINK_AUDIT: u32 = 9;
-pub const NETLINK_FIB_LOOKUP: u32 = 10;
-pub const NETLINK_CONNECTOR: u32 = 11;
-pub const NETLINK_NETFILTER: u32 = 12;
-pub const NETLINK_IP6_FW: u32 = 13;
-pub const NETLINK_DNRTMSG: u32 = 14;
-pub const NETLINK_KOBJECT_UEVENT: u32 = 15;
-pub const NETLINK_GENERIC: u32 = 16;
-pub const NETLINK_SCSITRANSPORT: u32 = 18;
-pub const NETLINK_ECRYPTFS: u32 = 19;
-pub const NETLINK_RDMA: u32 = 20;
-pub const NETLINK_CRYPTO: u32 = 21;
-pub const NETLINK_SMC: u32 = 22;
-pub const NETLINK_INET_DIAG: u32 = 4;
-pub const MAX_LINKS: u32 = 32;
-pub const NLM_F_REQUEST: u32 = 1;
-pub const NLM_F_MULTI: u32 = 2;
-pub const NLM_F_ACK: u32 = 4;
-pub const NLM_F_ECHO: u32 = 8;
-pub const NLM_F_DUMP_INTR: u32 = 16;
-pub const NLM_F_DUMP_FILTERED: u32 = 32;
-pub const NLM_F_ROOT: u32 = 256;
-pub const NLM_F_MATCH: u32 = 512;
-pub const NLM_F_ATOMIC: u32 = 1024;
-pub const NLM_F_DUMP: u32 = 768;
-pub const NLM_F_REPLACE: u32 = 256;
-pub const NLM_F_EXCL: u32 = 512;
-pub const NLM_F_CREATE: u32 = 1024;
-pub const NLM_F_APPEND: u32 = 2048;
-pub const NLM_F_NONREC: u32 = 256;
-pub const NLM_F_BULK: u32 = 512;
-pub const NLM_F_CAPPED: u32 = 256;
-pub const NLM_F_ACK_TLVS: u32 = 512;
-pub const NLMSG_ALIGNTO: u32 = 4;
-pub const NLMSG_NOOP: u32 = 1;
-pub const NLMSG_ERROR: u32 = 2;
-pub const NLMSG_DONE: u32 = 3;
-pub const NLMSG_OVERRUN: u32 = 4;
-pub const NLMSG_MIN_TYPE: u32 = 16;
-pub const NETLINK_ADD_MEMBERSHIP: u32 = 1;
-pub const NETLINK_DROP_MEMBERSHIP: u32 = 2;
-pub const NETLINK_PKTINFO: u32 = 3;
-pub const NETLINK_BROADCAST_ERROR: u32 = 4;
-pub const NETLINK_NO_ENOBUFS: u32 = 5;
-pub const NETLINK_RX_RING: u32 = 6;
-pub const NETLINK_TX_RING: u32 = 7;
-pub const NETLINK_LISTEN_ALL_NSID: u32 = 8;
-pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9;
-pub const NETLINK_CAP_ACK: u32 = 10;
-pub const NETLINK_EXT_ACK: u32 = 11;
-pub const NETLINK_GET_STRICT_CHK: u32 = 12;
-pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4;
-pub const NET_MAJOR: u32 = 36;
-pub const NLA_F_NESTED: u32 = 32768;
-pub const NLA_F_NET_BYTEORDER: u32 = 16384;
-pub const NLA_TYPE_MASK: i32 = -49153;
-pub const NLA_ALIGNTO: u32 = 4;
-pub const MACVLAN_FLAG_NOPROMISC: u32 = 1;
-pub const MACVLAN_FLAG_NODST: u32 = 2;
-pub const IPVLAN_F_PRIVATE: u32 = 1;
-pub const IPVLAN_F_VEPA: u32 = 2;
-pub const TUNNEL_MSG_FLAG_STATS: u32 = 1;
-pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1;
-pub const MAX_VLAN_LIST_LEN: u32 = 1;
-pub const PORT_PROFILE_MAX: u32 = 40;
-pub const PORT_UUID_MAX: u32 = 16;
-pub const PORT_SELF_VF: i32 = -1;
-pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1;
-pub const XDP_FLAGS_SKB_MODE: u32 = 2;
-pub const XDP_FLAGS_DRV_MODE: u32 = 4;
-pub const XDP_FLAGS_HW_MODE: u32 = 8;
-pub const XDP_FLAGS_REPLACE: u32 = 16;
-pub const XDP_FLAGS_MODES: u32 = 14;
-pub const XDP_FLAGS_MASK: u32 = 31;
-pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1;
-pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32;
-pub const IFA_F_SECONDARY: u32 = 1;
-pub const IFA_F_TEMPORARY: u32 = 1;
-pub const IFA_F_NODAD: u32 = 2;
-pub const IFA_F_OPTIMISTIC: u32 = 4;
-pub const IFA_F_DADFAILED: u32 = 8;
-pub const IFA_F_HOMEADDRESS: u32 = 16;
-pub const IFA_F_DEPRECATED: u32 = 32;
-pub const IFA_F_TENTATIVE: u32 = 64;
-pub const IFA_F_PERMANENT: u32 = 128;
-pub const IFA_F_MANAGETEMPADDR: u32 = 256;
-pub const IFA_F_NOPREFIXROUTE: u32 = 512;
-pub const IFA_F_MCAUTOJOIN: u32 = 1024;
-pub const IFA_F_STABLE_PRIVACY: u32 = 2048;
-pub const IFAPROT_UNSPEC: u32 = 0;
-pub const IFAPROT_KERNEL_LO: u32 = 1;
-pub const IFAPROT_KERNEL_RA: u32 = 2;
-pub const IFAPROT_KERNEL_LL: u32 = 3;
-pub const NTF_USE: u32 = 1;
-pub const NTF_SELF: u32 = 2;
-pub const NTF_MASTER: u32 = 4;
-pub const NTF_PROXY: u32 = 8;
-pub const NTF_EXT_LEARNED: u32 = 16;
-pub const NTF_OFFLOADED: u32 = 32;
-pub const NTF_STICKY: u32 = 64;
-pub const NTF_ROUTER: u32 = 128;
-pub const NTF_EXT_MANAGED: u32 = 1;
-pub const NTF_EXT_LOCKED: u32 = 2;
-pub const NUD_INCOMPLETE: u32 = 1;
-pub const NUD_REACHABLE: u32 = 2;
-pub const NUD_STALE: u32 = 4;
-pub const NUD_DELAY: u32 = 8;
-pub const NUD_PROBE: u32 = 16;
-pub const NUD_FAILED: u32 = 32;
-pub const NUD_NOARP: u32 = 64;
-pub const NUD_PERMANENT: u32 = 128;
-pub const NUD_NONE: u32 = 0;
-pub const RTNL_FAMILY_IPMR: u32 = 128;
-pub const RTNL_FAMILY_IP6MR: u32 = 129;
-pub const RTNL_FAMILY_MAX: u32 = 129;
-pub const RTA_ALIGNTO: u32 = 4;
-pub const RTPROT_UNSPEC: u32 = 0;
-pub const RTPROT_REDIRECT: u32 = 1;
-pub const RTPROT_KERNEL: u32 = 2;
-pub const RTPROT_BOOT: u32 = 3;
-pub const RTPROT_STATIC: u32 = 4;
-pub const RTPROT_GATED: u32 = 8;
-pub const RTPROT_RA: u32 = 9;
-pub const RTPROT_MRT: u32 = 10;
-pub const RTPROT_ZEBRA: u32 = 11;
-pub const RTPROT_BIRD: u32 = 12;
-pub const RTPROT_DNROUTED: u32 = 13;
-pub const RTPROT_XORP: u32 = 14;
-pub const RTPROT_NTK: u32 = 15;
-pub const RTPROT_DHCP: u32 = 16;
-pub const RTPROT_MROUTED: u32 = 17;
-pub const RTPROT_KEEPALIVED: u32 = 18;
-pub const RTPROT_BABEL: u32 = 42;
-pub const RTPROT_OPENR: u32 = 99;
-pub const RTPROT_BGP: u32 = 186;
-pub const RTPROT_ISIS: u32 = 187;
-pub const RTPROT_OSPF: u32 = 188;
-pub const RTPROT_RIP: u32 = 189;
-pub const RTPROT_EIGRP: u32 = 192;
-pub const RTM_F_NOTIFY: u32 = 256;
-pub const RTM_F_CLONED: u32 = 512;
-pub const RTM_F_EQUALIZE: u32 = 1024;
-pub const RTM_F_PREFIX: u32 = 2048;
-pub const RTM_F_LOOKUP_TABLE: u32 = 4096;
-pub const RTM_F_FIB_MATCH: u32 = 8192;
-pub const RTM_F_OFFLOAD: u32 = 16384;
-pub const RTM_F_TRAP: u32 = 32768;
-pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912;
-pub const RTNH_F_DEAD: u32 = 1;
-pub const RTNH_F_PERVASIVE: u32 = 2;
-pub const RTNH_F_ONLINK: u32 = 4;
-pub const RTNH_F_OFFLOAD: u32 = 8;
-pub const RTNH_F_LINKDOWN: u32 = 16;
-pub const RTNH_F_UNRESOLVED: u32 = 32;
-pub const RTNH_F_TRAP: u32 = 64;
-pub const RTNH_COMPARE_MASK: u32 = 89;
-pub const RTNH_ALIGNTO: u32 = 4;
-pub const RTNETLINK_HAVE_PEERINFO: u32 = 1;
-pub const RTAX_FEATURE_ECN: u32 = 1;
-pub const RTAX_FEATURE_SACK: u32 = 2;
-pub const RTAX_FEATURE_TIMESTAMP: u32 = 4;
-pub const RTAX_FEATURE_ALLFRAG: u32 = 8;
-pub const RTAX_FEATURE_MASK: u32 = 15;
-pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295;
-pub const TCA_DUMP_FLAGS_TERSE: u32 = 1;
-pub const RTMGRP_LINK: u32 = 1;
-pub const RTMGRP_NOTIFY: u32 = 2;
-pub const RTMGRP_NEIGH: u32 = 4;
-pub const RTMGRP_TC: u32 = 8;
-pub const RTMGRP_IPV4_IFADDR: u32 = 16;
-pub const RTMGRP_IPV4_MROUTE: u32 = 32;
-pub const RTMGRP_IPV4_ROUTE: u32 = 64;
-pub const RTMGRP_IPV4_RULE: u32 = 128;
-pub const RTMGRP_IPV6_IFADDR: u32 = 256;
-pub const RTMGRP_IPV6_MROUTE: u32 = 512;
-pub const RTMGRP_IPV6_ROUTE: u32 = 1024;
-pub const RTMGRP_IPV6_IFINFO: u32 = 2048;
-pub const RTMGRP_DECnet_IFADDR: u32 = 4096;
-pub const RTMGRP_DECnet_ROUTE: u32 = 16384;
-pub const RTMGRP_IPV6_PREFIX: u32 = 131072;
-pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2;
-pub const RTEXT_FILTER_VF: u32 = 1;
-pub const RTEXT_FILTER_BRVLAN: u32 = 2;
-pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4;
-pub const RTEXT_FILTER_SKIP_STATS: u32 = 8;
-pub const RTEXT_FILTER_MRP: u32 = 16;
-pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32;
-pub const RTEXT_FILTER_CFM_STATUS: u32 = 64;
-pub const RTEXT_FILTER_MST: u32 = 128;
-pub type size_t = crate::ctypes::c_uint;
-pub type ssize_t = crate::ctypes::c_int;
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 32usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_uid_t = __kernel_uid_t;
-pub type __kernel_old_gid_t = __kernel_gid_t;
-pub type __kernel_old_dev_t = crate::ctypes::c_uint;
-pub type __kernel_size_t = crate::ctypes::c_uint;
-pub type __kernel_ssize_t = crate::ctypes::c_int;
-pub type __kernel_ptrdiff_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_nl {
-pub nl_family: __kernel_sa_family_t,
-pub nl_pad: crate::ctypes::c_ushort,
-pub nl_pid: __u32,
-pub nl_groups: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsghdr {
-pub nlmsg_len: __u32,
-pub nlmsg_type: __u16,
-pub nlmsg_flags: __u16,
-pub nlmsg_seq: __u32,
-pub nlmsg_pid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsgerr {
-pub error: crate::ctypes::c_int,
-pub msg: nlmsghdr,
-}
-impl nlmsgerr_attrs {
-pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nlmsgerr_attrs {
-NLMSGERR_ATTR_UNUSED = 0,
-NLMSGERR_ATTR_MSG = 1,
-NLMSGERR_ATTR_OFFS = 2,
-NLMSGERR_ATTR_COOKIE = 3,
-NLMSGERR_ATTR_POLICY = 4,
-NLMSGERR_ATTR_MISS_TYPE = 5,
-NLMSGERR_ATTR_MISS_NEST = 6,
-__NLMSGERR_ATTR_MAX = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_pktinfo {
-pub group: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_req {
-pub nm_block_size: crate::ctypes::c_uint,
-pub nm_block_nr: crate::ctypes::c_uint,
-pub nm_frame_size: crate::ctypes::c_uint,
-pub nm_frame_nr: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_hdr {
-pub nm_status: crate::ctypes::c_uint,
-pub nm_len: crate::ctypes::c_uint,
-pub nm_group: __u32,
-pub nm_pid: __u32,
-pub nm_uid: __u32,
-pub nm_gid: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nl_mmap_status {
-NL_MMAP_STATUS_UNUSED = 0,
-NL_MMAP_STATUS_RESERVED = 1,
-NL_MMAP_STATUS_VALID = 2,
-NL_MMAP_STATUS_COPY = 3,
-NL_MMAP_STATUS_SKIP = 4,
-}
-pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED;
-pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-NETLINK_UNCONNECTED = 0,
-NETLINK_CONNECTED = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlattr {
-pub nla_len: __u16,
-pub nla_type: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nla_bitfield32 {
-pub value: __u32,
-pub selector: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_attribute_type {
-NL_ATTR_TYPE_INVALID = 0,
-NL_ATTR_TYPE_FLAG = 1,
-NL_ATTR_TYPE_U8 = 2,
-NL_ATTR_TYPE_U16 = 3,
-NL_ATTR_TYPE_U32 = 4,
-NL_ATTR_TYPE_U64 = 5,
-NL_ATTR_TYPE_S8 = 6,
-NL_ATTR_TYPE_S16 = 7,
-NL_ATTR_TYPE_S32 = 8,
-NL_ATTR_TYPE_S64 = 9,
-NL_ATTR_TYPE_BINARY = 10,
-NL_ATTR_TYPE_STRING = 11,
-NL_ATTR_TYPE_NUL_STRING = 12,
-NL_ATTR_TYPE_NESTED = 13,
-NL_ATTR_TYPE_NESTED_ARRAY = 14,
-NL_ATTR_TYPE_BITFIELD32 = 15,
-}
-impl netlink_policy_type_attr {
-pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_policy_type_attr {
-NL_POLICY_TYPE_ATTR_UNSPEC = 0,
-NL_POLICY_TYPE_ATTR_TYPE = 1,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5,
-NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6,
-NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7,
-NL_POLICY_TYPE_ATTR_POLICY_IDX = 8,
-NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9,
-NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10,
-NL_POLICY_TYPE_ATTR_PAD = 11,
-NL_POLICY_TYPE_ATTR_MASK = 12,
-__NL_POLICY_TYPE_ATTR_MAX = 13,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats {
-pub rx_packets: __u32,
-pub tx_packets: __u32,
-pub rx_bytes: __u32,
-pub tx_bytes: __u32,
-pub rx_errors: __u32,
-pub tx_errors: __u32,
-pub rx_dropped: __u32,
-pub tx_dropped: __u32,
-pub multicast: __u32,
-pub collisions: __u32,
-pub rx_length_errors: __u32,
-pub rx_over_errors: __u32,
-pub rx_crc_errors: __u32,
-pub rx_frame_errors: __u32,
-pub rx_fifo_errors: __u32,
-pub rx_missed_errors: __u32,
-pub tx_aborted_errors: __u32,
-pub tx_carrier_errors: __u32,
-pub tx_fifo_errors: __u32,
-pub tx_heartbeat_errors: __u32,
-pub tx_window_errors: __u32,
-pub rx_compressed: __u32,
-pub tx_compressed: __u32,
-pub rx_nohandler: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-pub collisions: __u64,
-pub rx_length_errors: __u64,
-pub rx_over_errors: __u64,
-pub rx_crc_errors: __u64,
-pub rx_frame_errors: __u64,
-pub rx_fifo_errors: __u64,
-pub rx_missed_errors: __u64,
-pub tx_aborted_errors: __u64,
-pub tx_carrier_errors: __u64,
-pub tx_fifo_errors: __u64,
-pub tx_heartbeat_errors: __u64,
-pub tx_window_errors: __u64,
-pub rx_compressed: __u64,
-pub tx_compressed: __u64,
-pub rx_nohandler: __u64,
-pub rx_otherhost_dropped: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_hw_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_ifmap {
-pub mem_start: __u64,
-pub mem_end: __u64,
-pub base_addr: __u64,
-pub irq: __u16,
-pub dma: __u8,
-pub port: __u8,
-}
-pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC;
-pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS;
-pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST;
-pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME;
-pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU;
-pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK;
-pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC;
-pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS;
-pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST;
-pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY;
-pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER;
-pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS;
-pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO;
-pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN;
-pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP;
-pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT;
-pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE;
-pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE;
-pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO;
-pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID;
-pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS;
-pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF;
-pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST;
-pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64;
-pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS;
-pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF;
-pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC;
-pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP;
-pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD;
-pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK;
-pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY;
-pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES;
-pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES;
-pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER;
-pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID;
-pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES;
-pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID;
-pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID;
-pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME;
-pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN;
-pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS;
-pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE;
-pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD;
-pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP;
-pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT;
-pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID;
-pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT;
-pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT;
-pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX;
-pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU;
-pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU;
-pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST;
-pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME;
-pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS;
-pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON;
-pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME;
-pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME;
-pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS;
-pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI;
-pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT;
-pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IFLA_UNSPEC = 0,
-IFLA_ADDRESS = 1,
-IFLA_BROADCAST = 2,
-IFLA_IFNAME = 3,
-IFLA_MTU = 4,
-IFLA_LINK = 5,
-IFLA_QDISC = 6,
-IFLA_STATS = 7,
-IFLA_COST = 8,
-IFLA_PRIORITY = 9,
-IFLA_MASTER = 10,
-IFLA_WIRELESS = 11,
-IFLA_PROTINFO = 12,
-IFLA_TXQLEN = 13,
-IFLA_MAP = 14,
-IFLA_WEIGHT = 15,
-IFLA_OPERSTATE = 16,
-IFLA_LINKMODE = 17,
-IFLA_LINKINFO = 18,
-IFLA_NET_NS_PID = 19,
-IFLA_IFALIAS = 20,
-IFLA_NUM_VF = 21,
-IFLA_VFINFO_LIST = 22,
-IFLA_STATS64 = 23,
-IFLA_VF_PORTS = 24,
-IFLA_PORT_SELF = 25,
-IFLA_AF_SPEC = 26,
-IFLA_GROUP = 27,
-IFLA_NET_NS_FD = 28,
-IFLA_EXT_MASK = 29,
-IFLA_PROMISCUITY = 30,
-IFLA_NUM_TX_QUEUES = 31,
-IFLA_NUM_RX_QUEUES = 32,
-IFLA_CARRIER = 33,
-IFLA_PHYS_PORT_ID = 34,
-IFLA_CARRIER_CHANGES = 35,
-IFLA_PHYS_SWITCH_ID = 36,
-IFLA_LINK_NETNSID = 37,
-IFLA_PHYS_PORT_NAME = 38,
-IFLA_PROTO_DOWN = 39,
-IFLA_GSO_MAX_SEGS = 40,
-IFLA_GSO_MAX_SIZE = 41,
-IFLA_PAD = 42,
-IFLA_XDP = 43,
-IFLA_EVENT = 44,
-IFLA_NEW_NETNSID = 45,
-IFLA_IF_NETNSID = 46,
-IFLA_CARRIER_UP_COUNT = 47,
-IFLA_CARRIER_DOWN_COUNT = 48,
-IFLA_NEW_IFINDEX = 49,
-IFLA_MIN_MTU = 50,
-IFLA_MAX_MTU = 51,
-IFLA_PROP_LIST = 52,
-IFLA_ALT_IFNAME = 53,
-IFLA_PERM_ADDRESS = 54,
-IFLA_PROTO_DOWN_REASON = 55,
-IFLA_PARENT_DEV_NAME = 56,
-IFLA_PARENT_DEV_BUS_NAME = 57,
-IFLA_GRO_MAX_SIZE = 58,
-IFLA_TSO_MAX_SIZE = 59,
-IFLA_TSO_MAX_SEGS = 60,
-IFLA_ALLMULTI = 61,
-IFLA_DEVLINK_PORT = 62,
-__IFLA_MAX = 63,
-}
-pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC;
-pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK;
-pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT;
-pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-IFLA_PROTO_DOWN_REASON_UNSPEC = 0,
-IFLA_PROTO_DOWN_REASON_MASK = 1,
-IFLA_PROTO_DOWN_REASON_VALUE = 2,
-__IFLA_PROTO_DOWN_REASON_CNT = 3,
-}
-pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC;
-pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF;
-pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-IFLA_INET_UNSPEC = 0,
-IFLA_INET_CONF = 1,
-__IFLA_INET_MAX = 2,
-}
-pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC;
-pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS;
-pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF;
-pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS;
-pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST;
-pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO;
-pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS;
-pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN;
-pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE;
-pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU;
-pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-IFLA_INET6_UNSPEC = 0,
-IFLA_INET6_FLAGS = 1,
-IFLA_INET6_CONF = 2,
-IFLA_INET6_STATS = 3,
-IFLA_INET6_MCAST = 4,
-IFLA_INET6_CACHEINFO = 5,
-IFLA_INET6_ICMP6STATS = 6,
-IFLA_INET6_TOKEN = 7,
-IFLA_INET6_ADDR_GEN_MODE = 8,
-IFLA_INET6_RA_MTU = 9,
-__IFLA_INET6_MAX = 10,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum in6_addr_gen_mode {
-IN6_ADDR_GEN_MODE_EUI64 = 0,
-IN6_ADDR_GEN_MODE_NONE = 1,
-IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2,
-IN6_ADDR_GEN_MODE_RANDOM = 3,
-}
-pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC;
-pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY;
-pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME;
-pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE;
-pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME;
-pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE;
-pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY;
-pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING;
-pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL;
-pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK;
-pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID;
-pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID;
-pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT;
-pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST;
-pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE;
-pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED;
-pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER;
-pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER;
-pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER;
-pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER;
-pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR;
-pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH;
-pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER;
-pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING;
-pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR;
-pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER;
-pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY;
-pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX;
-pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT;
-pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL;
-pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL;
-pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL;
-pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL;
-pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL;
-pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES;
-pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES;
-pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES;
-pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID;
-pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD;
-pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED;
-pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED;
-pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION;
-pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION;
-pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT;
-pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT;
-pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE;
-pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-IFLA_BR_UNSPEC = 0,
-IFLA_BR_FORWARD_DELAY = 1,
-IFLA_BR_HELLO_TIME = 2,
-IFLA_BR_MAX_AGE = 3,
-IFLA_BR_AGEING_TIME = 4,
-IFLA_BR_STP_STATE = 5,
-IFLA_BR_PRIORITY = 6,
-IFLA_BR_VLAN_FILTERING = 7,
-IFLA_BR_VLAN_PROTOCOL = 8,
-IFLA_BR_GROUP_FWD_MASK = 9,
-IFLA_BR_ROOT_ID = 10,
-IFLA_BR_BRIDGE_ID = 11,
-IFLA_BR_ROOT_PORT = 12,
-IFLA_BR_ROOT_PATH_COST = 13,
-IFLA_BR_TOPOLOGY_CHANGE = 14,
-IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 15,
-IFLA_BR_HELLO_TIMER = 16,
-IFLA_BR_TCN_TIMER = 17,
-IFLA_BR_TOPOLOGY_CHANGE_TIMER = 18,
-IFLA_BR_GC_TIMER = 19,
-IFLA_BR_GROUP_ADDR = 20,
-IFLA_BR_FDB_FLUSH = 21,
-IFLA_BR_MCAST_ROUTER = 22,
-IFLA_BR_MCAST_SNOOPING = 23,
-IFLA_BR_MCAST_QUERY_USE_IFADDR = 24,
-IFLA_BR_MCAST_QUERIER = 25,
-IFLA_BR_MCAST_HASH_ELASTICITY = 26,
-IFLA_BR_MCAST_HASH_MAX = 27,
-IFLA_BR_MCAST_LAST_MEMBER_CNT = 28,
-IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29,
-IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30,
-IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31,
-IFLA_BR_MCAST_QUERIER_INTVL = 32,
-IFLA_BR_MCAST_QUERY_INTVL = 33,
-IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34,
-IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35,
-IFLA_BR_NF_CALL_IPTABLES = 36,
-IFLA_BR_NF_CALL_IP6TABLES = 37,
-IFLA_BR_NF_CALL_ARPTABLES = 38,
-IFLA_BR_VLAN_DEFAULT_PVID = 39,
-IFLA_BR_PAD = 40,
-IFLA_BR_VLAN_STATS_ENABLED = 41,
-IFLA_BR_MCAST_STATS_ENABLED = 42,
-IFLA_BR_MCAST_IGMP_VERSION = 43,
-IFLA_BR_MCAST_MLD_VERSION = 44,
-IFLA_BR_VLAN_STATS_PER_PORT = 45,
-IFLA_BR_MULTI_BOOLOPT = 46,
-IFLA_BR_MCAST_QUERIER_STATE = 47,
-__IFLA_BR_MAX = 48,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_bridge_id {
-pub prio: [__u8; 2usize],
-pub addr: [__u8; 6usize],
-}
-pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC;
-pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-BRIDGE_MODE_UNSPEC = 0,
-BRIDGE_MODE_HAIRPIN = 1,
-}
-pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC;
-pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE;
-pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY;
-pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST;
-pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE;
-pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD;
-pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT;
-pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE;
-pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING;
-pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD;
-pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP;
-pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC;
-pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI;
-pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID;
-pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID;
-pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT;
-pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST;
-pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID;
-pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO;
-pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK;
-pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING;
-pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER;
-pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER;
-pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER;
-pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH;
-pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER;
-pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD;
-pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD;
-pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST;
-pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL;
-pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD;
-pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK;
-pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS;
-pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED;
-pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT;
-pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN;
-pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT;
-pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED;
-pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB;
-pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IFLA_BRPORT_UNSPEC = 0,
-IFLA_BRPORT_STATE = 1,
-IFLA_BRPORT_PRIORITY = 2,
-IFLA_BRPORT_COST = 3,
-IFLA_BRPORT_MODE = 4,
-IFLA_BRPORT_GUARD = 5,
-IFLA_BRPORT_PROTECT = 6,
-IFLA_BRPORT_FAST_LEAVE = 7,
-IFLA_BRPORT_LEARNING = 8,
-IFLA_BRPORT_UNICAST_FLOOD = 9,
-IFLA_BRPORT_PROXYARP = 10,
-IFLA_BRPORT_LEARNING_SYNC = 11,
-IFLA_BRPORT_PROXYARP_WIFI = 12,
-IFLA_BRPORT_ROOT_ID = 13,
-IFLA_BRPORT_BRIDGE_ID = 14,
-IFLA_BRPORT_DESIGNATED_PORT = 15,
-IFLA_BRPORT_DESIGNATED_COST = 16,
-IFLA_BRPORT_ID = 17,
-IFLA_BRPORT_NO = 18,
-IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 19,
-IFLA_BRPORT_CONFIG_PENDING = 20,
-IFLA_BRPORT_MESSAGE_AGE_TIMER = 21,
-IFLA_BRPORT_FORWARD_DELAY_TIMER = 22,
-IFLA_BRPORT_HOLD_TIMER = 23,
-IFLA_BRPORT_FLUSH = 24,
-IFLA_BRPORT_MULTICAST_ROUTER = 25,
-IFLA_BRPORT_PAD = 26,
-IFLA_BRPORT_MCAST_FLOOD = 27,
-IFLA_BRPORT_MCAST_TO_UCAST = 28,
-IFLA_BRPORT_VLAN_TUNNEL = 29,
-IFLA_BRPORT_BCAST_FLOOD = 30,
-IFLA_BRPORT_GROUP_FWD_MASK = 31,
-IFLA_BRPORT_NEIGH_SUPPRESS = 32,
-IFLA_BRPORT_ISOLATED = 33,
-IFLA_BRPORT_BACKUP_PORT = 34,
-IFLA_BRPORT_MRP_RING_OPEN = 35,
-IFLA_BRPORT_MRP_IN_OPEN = 36,
-IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 37,
-IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 38,
-IFLA_BRPORT_LOCKED = 39,
-IFLA_BRPORT_MAB = 40,
-__IFLA_BRPORT_MAX = 41,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_cacheinfo {
-pub max_reasm_len: __u32,
-pub tstamp: __u32,
-pub reachable_time: __u32,
-pub retrans_time: __u32,
-}
-pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC;
-pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND;
-pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA;
-pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS;
-pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND;
-pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA;
-pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IFLA_INFO_UNSPEC = 0,
-IFLA_INFO_KIND = 1,
-IFLA_INFO_DATA = 2,
-IFLA_INFO_XSTATS = 3,
-IFLA_INFO_SLAVE_KIND = 4,
-IFLA_INFO_SLAVE_DATA = 5,
-__IFLA_INFO_MAX = 6,
-}
-pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC;
-pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID;
-pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS;
-pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS;
-pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS;
-pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL;
-pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IFLA_VLAN_UNSPEC = 0,
-IFLA_VLAN_ID = 1,
-IFLA_VLAN_FLAGS = 2,
-IFLA_VLAN_EGRESS_QOS = 3,
-IFLA_VLAN_INGRESS_QOS = 4,
-IFLA_VLAN_PROTOCOL = 5,
-__IFLA_VLAN_MAX = 6,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC;
-pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING;
-pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IFLA_VLAN_QOS_UNSPEC = 0,
-IFLA_VLAN_QOS_MAPPING = 1,
-__IFLA_VLAN_QOS_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_qos_mapping {
-pub from: __u32,
-pub to: __u32,
-}
-pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC;
-pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE;
-pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS;
-pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE;
-pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR;
-pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA;
-pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED;
-pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IFLA_MACVLAN_UNSPEC = 0,
-IFLA_MACVLAN_MODE = 1,
-IFLA_MACVLAN_FLAGS = 2,
-IFLA_MACVLAN_MACADDR_MODE = 3,
-IFLA_MACVLAN_MACADDR = 4,
-IFLA_MACVLAN_MACADDR_DATA = 5,
-IFLA_MACVLAN_MACADDR_COUNT = 6,
-IFLA_MACVLAN_BC_QUEUE_LEN = 7,
-IFLA_MACVLAN_BC_QUEUE_LEN_USED = 8,
-__IFLA_MACVLAN_MAX = 9,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_mode {
-MACVLAN_MODE_PRIVATE = 1,
-MACVLAN_MODE_VEPA = 2,
-MACVLAN_MODE_BRIDGE = 4,
-MACVLAN_MODE_PASSTHRU = 8,
-MACVLAN_MODE_SOURCE = 16,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_macaddr_mode {
-MACVLAN_MACADDR_ADD = 0,
-MACVLAN_MACADDR_DEL = 1,
-MACVLAN_MACADDR_FLUSH = 2,
-MACVLAN_MACADDR_SET = 3,
-}
-pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC;
-pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE;
-pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_13 {
-IFLA_VRF_UNSPEC = 0,
-IFLA_VRF_TABLE = 1,
-__IFLA_VRF_MAX = 2,
-}
-pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC;
-pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE;
-pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_14 {
-IFLA_VRF_PORT_UNSPEC = 0,
-IFLA_VRF_PORT_TABLE = 1,
-__IFLA_VRF_PORT_MAX = 2,
-}
-pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC;
-pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI;
-pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT;
-pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN;
-pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE;
-pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW;
-pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA;
-pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT;
-pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT;
-pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI;
-pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES;
-pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB;
-pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT;
-pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION;
-pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD;
-pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD;
-pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_15 {
-IFLA_MACSEC_UNSPEC = 0,
-IFLA_MACSEC_SCI = 1,
-IFLA_MACSEC_PORT = 2,
-IFLA_MACSEC_ICV_LEN = 3,
-IFLA_MACSEC_CIPHER_SUITE = 4,
-IFLA_MACSEC_WINDOW = 5,
-IFLA_MACSEC_ENCODING_SA = 6,
-IFLA_MACSEC_ENCRYPT = 7,
-IFLA_MACSEC_PROTECT = 8,
-IFLA_MACSEC_INC_SCI = 9,
-IFLA_MACSEC_ES = 10,
-IFLA_MACSEC_SCB = 11,
-IFLA_MACSEC_REPLAY_PROTECT = 12,
-IFLA_MACSEC_VALIDATION = 13,
-IFLA_MACSEC_PAD = 14,
-IFLA_MACSEC_OFFLOAD = 15,
-__IFLA_MACSEC_MAX = 16,
-}
-pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC;
-pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK;
-pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID;
-pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA;
-pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_16 {
-IFLA_XFRM_UNSPEC = 0,
-IFLA_XFRM_LINK = 1,
-IFLA_XFRM_IF_ID = 2,
-IFLA_XFRM_COLLECT_METADATA = 3,
-__IFLA_XFRM_MAX = 4,
-}
-impl macsec_validation_type {
-pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_validation_type {
-MACSEC_VALIDATE_DISABLED = 0,
-MACSEC_VALIDATE_CHECK = 1,
-MACSEC_VALIDATE_STRICT = 2,
-__MACSEC_VALIDATE_END = 3,
-}
-impl macsec_offload {
-pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_offload {
-MACSEC_OFFLOAD_OFF = 0,
-MACSEC_OFFLOAD_PHY = 1,
-MACSEC_OFFLOAD_MAC = 2,
-__MACSEC_OFFLOAD_END = 3,
-}
-pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC;
-pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE;
-pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS;
-pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_17 {
-IFLA_IPVLAN_UNSPEC = 0,
-IFLA_IPVLAN_MODE = 1,
-IFLA_IPVLAN_FLAGS = 2,
-__IFLA_IPVLAN_MAX = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ipvlan_mode {
-IPVLAN_MODE_L2 = 0,
-IPVLAN_MODE_L3 = 1,
-IPVLAN_MODE_L3S = 2,
-IPVLAN_MODE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tunnel_msg {
-pub family: __u8,
-pub flags: __u8,
-pub reserved2: __u16,
-pub ifindex: __u32,
-}
-pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC;
-pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD;
-pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_18 {
-VNIFILTER_ENTRY_STATS_UNSPEC = 0,
-VNIFILTER_ENTRY_STATS_RX_BYTES = 1,
-VNIFILTER_ENTRY_STATS_RX_PKTS = 2,
-VNIFILTER_ENTRY_STATS_RX_DROPS = 3,
-VNIFILTER_ENTRY_STATS_RX_ERRORS = 4,
-VNIFILTER_ENTRY_STATS_TX_BYTES = 5,
-VNIFILTER_ENTRY_STATS_TX_PKTS = 6,
-VNIFILTER_ENTRY_STATS_TX_DROPS = 7,
-VNIFILTER_ENTRY_STATS_TX_ERRORS = 8,
-VNIFILTER_ENTRY_STATS_PAD = 9,
-__VNIFILTER_ENTRY_STATS_MAX = 10,
-}
-pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START;
-pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6;
-pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS;
-pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_19 {
-VXLAN_VNIFILTER_ENTRY_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY_START = 1,
-VXLAN_VNIFILTER_ENTRY_END = 2,
-VXLAN_VNIFILTER_ENTRY_GROUP = 3,
-VXLAN_VNIFILTER_ENTRY_GROUP6 = 4,
-VXLAN_VNIFILTER_ENTRY_STATS = 5,
-__VXLAN_VNIFILTER_ENTRY_MAX = 6,
-}
-pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY;
-pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_20 {
-VXLAN_VNIFILTER_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY = 1,
-__VXLAN_VNIFILTER_MAX = 2,
-}
-pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC;
-pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID;
-pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP;
-pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK;
-pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL;
-pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL;
-pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS;
-pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING;
-pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING;
-pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT;
-pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE;
-pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY;
-pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC;
-pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS;
-pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS;
-pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT;
-pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6;
-pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6;
-pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX;
-pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX;
-pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX;
-pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP;
-pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL;
-pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA;
-pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL;
-pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE;
-pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT;
-pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF;
-pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER;
-pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_21 {
-IFLA_VXLAN_UNSPEC = 0,
-IFLA_VXLAN_ID = 1,
-IFLA_VXLAN_GROUP = 2,
-IFLA_VXLAN_LINK = 3,
-IFLA_VXLAN_LOCAL = 4,
-IFLA_VXLAN_TTL = 5,
-IFLA_VXLAN_TOS = 6,
-IFLA_VXLAN_LEARNING = 7,
-IFLA_VXLAN_AGEING = 8,
-IFLA_VXLAN_LIMIT = 9,
-IFLA_VXLAN_PORT_RANGE = 10,
-IFLA_VXLAN_PROXY = 11,
-IFLA_VXLAN_RSC = 12,
-IFLA_VXLAN_L2MISS = 13,
-IFLA_VXLAN_L3MISS = 14,
-IFLA_VXLAN_PORT = 15,
-IFLA_VXLAN_GROUP6 = 16,
-IFLA_VXLAN_LOCAL6 = 17,
-IFLA_VXLAN_UDP_CSUM = 18,
-IFLA_VXLAN_UDP_ZERO_CSUM6_TX = 19,
-IFLA_VXLAN_UDP_ZERO_CSUM6_RX = 20,
-IFLA_VXLAN_REMCSUM_TX = 21,
-IFLA_VXLAN_REMCSUM_RX = 22,
-IFLA_VXLAN_GBP = 23,
-IFLA_VXLAN_REMCSUM_NOPARTIAL = 24,
-IFLA_VXLAN_COLLECT_METADATA = 25,
-IFLA_VXLAN_LABEL = 26,
-IFLA_VXLAN_GPE = 27,
-IFLA_VXLAN_TTL_INHERIT = 28,
-IFLA_VXLAN_DF = 29,
-IFLA_VXLAN_VNIFILTER = 30,
-__IFLA_VXLAN_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vxlan_port_range {
-pub low: __be16,
-pub high: __be16,
-}
-impl ifla_vxlan_df {
-pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_vxlan_df {
-VXLAN_DF_UNSET = 0,
-VXLAN_DF_SET = 1,
-VXLAN_DF_INHERIT = 2,
-__VXLAN_DF_END = 3,
-}
-pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC;
-pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID;
-pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE;
-pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL;
-pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS;
-pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT;
-pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA;
-pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6;
-pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX;
-pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL;
-pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT;
-pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF;
-pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT;
-pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_22 {
-IFLA_GENEVE_UNSPEC = 0,
-IFLA_GENEVE_ID = 1,
-IFLA_GENEVE_REMOTE = 2,
-IFLA_GENEVE_TTL = 3,
-IFLA_GENEVE_TOS = 4,
-IFLA_GENEVE_PORT = 5,
-IFLA_GENEVE_COLLECT_METADATA = 6,
-IFLA_GENEVE_REMOTE6 = 7,
-IFLA_GENEVE_UDP_CSUM = 8,
-IFLA_GENEVE_UDP_ZERO_CSUM6_TX = 9,
-IFLA_GENEVE_UDP_ZERO_CSUM6_RX = 10,
-IFLA_GENEVE_LABEL = 11,
-IFLA_GENEVE_TTL_INHERIT = 12,
-IFLA_GENEVE_DF = 13,
-IFLA_GENEVE_INNER_PROTO_INHERIT = 14,
-__IFLA_GENEVE_MAX = 15,
-}
-impl ifla_geneve_df {
-pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_geneve_df {
-GENEVE_DF_UNSET = 0,
-GENEVE_DF_SET = 1,
-GENEVE_DF_INHERIT = 2,
-__GENEVE_DF_END = 3,
-}
-pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC;
-pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT;
-pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE;
-pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN;
-pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE;
-pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_23 {
-IFLA_BAREUDP_UNSPEC = 0,
-IFLA_BAREUDP_PORT = 1,
-IFLA_BAREUDP_ETHERTYPE = 2,
-IFLA_BAREUDP_SRCPORT_MIN = 3,
-IFLA_BAREUDP_MULTIPROTO_MODE = 4,
-__IFLA_BAREUDP_MAX = 5,
-}
-pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC;
-pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD;
-pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_24 {
-IFLA_PPP_UNSPEC = 0,
-IFLA_PPP_DEV_FD = 1,
-__IFLA_PPP_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_gtp_role {
-GTP_ROLE_GGSN = 0,
-GTP_ROLE_SGSN = 1,
-}
-pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC;
-pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0;
-pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1;
-pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE;
-pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE;
-pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS;
-pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT;
-pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_25 {
-IFLA_GTP_UNSPEC = 0,
-IFLA_GTP_FD0 = 1,
-IFLA_GTP_FD1 = 2,
-IFLA_GTP_PDP_HASHSIZE = 3,
-IFLA_GTP_ROLE = 4,
-IFLA_GTP_CREATE_SOCKETS = 5,
-IFLA_GTP_RESTART_COUNT = 6,
-__IFLA_GTP_MAX = 7,
-}
-pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC;
-pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE;
-pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE;
-pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON;
-pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY;
-pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY;
-pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER;
-pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL;
-pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET;
-pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE;
-pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS;
-pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY;
-pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT;
-pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC;
-pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY;
-pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP;
-pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF;
-pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE;
-pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS;
-pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL;
-pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE;
-pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE;
-pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT;
-pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO;
-pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO;
-pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY;
-pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM;
-pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB;
-pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY;
-pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE;
-pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX;
-pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET;
-pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_26 {
-IFLA_BOND_UNSPEC = 0,
-IFLA_BOND_MODE = 1,
-IFLA_BOND_ACTIVE_SLAVE = 2,
-IFLA_BOND_MIIMON = 3,
-IFLA_BOND_UPDELAY = 4,
-IFLA_BOND_DOWNDELAY = 5,
-IFLA_BOND_USE_CARRIER = 6,
-IFLA_BOND_ARP_INTERVAL = 7,
-IFLA_BOND_ARP_IP_TARGET = 8,
-IFLA_BOND_ARP_VALIDATE = 9,
-IFLA_BOND_ARP_ALL_TARGETS = 10,
-IFLA_BOND_PRIMARY = 11,
-IFLA_BOND_PRIMARY_RESELECT = 12,
-IFLA_BOND_FAIL_OVER_MAC = 13,
-IFLA_BOND_XMIT_HASH_POLICY = 14,
-IFLA_BOND_RESEND_IGMP = 15,
-IFLA_BOND_NUM_PEER_NOTIF = 16,
-IFLA_BOND_ALL_SLAVES_ACTIVE = 17,
-IFLA_BOND_MIN_LINKS = 18,
-IFLA_BOND_LP_INTERVAL = 19,
-IFLA_BOND_PACKETS_PER_SLAVE = 20,
-IFLA_BOND_AD_LACP_RATE = 21,
-IFLA_BOND_AD_SELECT = 22,
-IFLA_BOND_AD_INFO = 23,
-IFLA_BOND_AD_ACTOR_SYS_PRIO = 24,
-IFLA_BOND_AD_USER_PORT_KEY = 25,
-IFLA_BOND_AD_ACTOR_SYSTEM = 26,
-IFLA_BOND_TLB_DYNAMIC_LB = 27,
-IFLA_BOND_PEER_NOTIF_DELAY = 28,
-IFLA_BOND_AD_LACP_ACTIVE = 29,
-IFLA_BOND_MISSED_MAX = 30,
-IFLA_BOND_NS_IP6_TARGET = 31,
-__IFLA_BOND_MAX = 32,
-}
-pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC;
-pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR;
-pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS;
-pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC;
-pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_27 {
-IFLA_BOND_AD_INFO_UNSPEC = 0,
-IFLA_BOND_AD_INFO_AGGREGATOR = 1,
-IFLA_BOND_AD_INFO_NUM_PORTS = 2,
-IFLA_BOND_AD_INFO_ACTOR_KEY = 3,
-IFLA_BOND_AD_INFO_PARTNER_KEY = 4,
-IFLA_BOND_AD_INFO_PARTNER_MAC = 5,
-__IFLA_BOND_AD_INFO_MAX = 6,
-}
-pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC;
-pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE;
-pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS;
-pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT;
-pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR;
-pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID;
-pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID;
-pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO;
-pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_28 {
-IFLA_BOND_SLAVE_UNSPEC = 0,
-IFLA_BOND_SLAVE_STATE = 1,
-IFLA_BOND_SLAVE_MII_STATUS = 2,
-IFLA_BOND_SLAVE_LINK_FAILURE_COUNT = 3,
-IFLA_BOND_SLAVE_PERM_HWADDR = 4,
-IFLA_BOND_SLAVE_QUEUE_ID = 5,
-IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 6,
-IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 7,
-IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 8,
-IFLA_BOND_SLAVE_PRIO = 9,
-__IFLA_BOND_SLAVE_MAX = 10,
-}
-pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC;
-pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO;
-pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_29 {
-IFLA_VF_INFO_UNSPEC = 0,
-IFLA_VF_INFO = 1,
-__IFLA_VF_INFO_MAX = 2,
-}
-pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC;
-pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC;
-pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN;
-pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE;
-pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK;
-pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE;
-pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE;
-pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN;
-pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS;
-pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST;
-pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID;
-pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID;
-pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST;
-pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST;
-pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_30 {
-IFLA_VF_UNSPEC = 0,
-IFLA_VF_MAC = 1,
-IFLA_VF_VLAN = 2,
-IFLA_VF_TX_RATE = 3,
-IFLA_VF_SPOOFCHK = 4,
-IFLA_VF_LINK_STATE = 5,
-IFLA_VF_RATE = 6,
-IFLA_VF_RSS_QUERY_EN = 7,
-IFLA_VF_STATS = 8,
-IFLA_VF_TRUST = 9,
-IFLA_VF_IB_NODE_GUID = 10,
-IFLA_VF_IB_PORT_GUID = 11,
-IFLA_VF_VLAN_LIST = 12,
-IFLA_VF_BROADCAST = 13,
-__IFLA_VF_MAX = 14,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_mac {
-pub vf: __u32,
-pub mac: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_broadcast {
-pub broadcast: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-}
-pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC;
-pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO;
-pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_31 {
-IFLA_VF_VLAN_INFO_UNSPEC = 0,
-IFLA_VF_VLAN_INFO = 1,
-__IFLA_VF_VLAN_INFO_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan_info {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-pub vlan_proto: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_tx_rate {
-pub vf: __u32,
-pub rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rate {
-pub vf: __u32,
-pub min_tx_rate: __u32,
-pub max_tx_rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_spoofchk {
-pub vf: __u32,
-pub setting: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_guid {
-pub vf: __u32,
-pub guid: __u64,
-}
-pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO;
-pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE;
-pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE;
-pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_32 {
-IFLA_VF_LINK_STATE_AUTO = 0,
-IFLA_VF_LINK_STATE_ENABLE = 1,
-IFLA_VF_LINK_STATE_DISABLE = 2,
-__IFLA_VF_LINK_STATE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_link_state {
-pub vf: __u32,
-pub link_state: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rss_query_en {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS;
-pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS;
-pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES;
-pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES;
-pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST;
-pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST;
-pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD;
-pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED;
-pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED;
-pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_33 {
-IFLA_VF_STATS_RX_PACKETS = 0,
-IFLA_VF_STATS_TX_PACKETS = 1,
-IFLA_VF_STATS_RX_BYTES = 2,
-IFLA_VF_STATS_TX_BYTES = 3,
-IFLA_VF_STATS_BROADCAST = 4,
-IFLA_VF_STATS_MULTICAST = 5,
-IFLA_VF_STATS_PAD = 6,
-IFLA_VF_STATS_RX_DROPPED = 7,
-IFLA_VF_STATS_TX_DROPPED = 8,
-__IFLA_VF_STATS_MAX = 9,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_trust {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC;
-pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT;
-pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_34 {
-IFLA_VF_PORT_UNSPEC = 0,
-IFLA_VF_PORT = 1,
-__IFLA_VF_PORT_MAX = 2,
-}
-pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC;
-pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF;
-pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE;
-pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE;
-pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID;
-pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID;
-pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST;
-pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE;
-pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_35 {
-IFLA_PORT_UNSPEC = 0,
-IFLA_PORT_VF = 1,
-IFLA_PORT_PROFILE = 2,
-IFLA_PORT_VSI_TYPE = 3,
-IFLA_PORT_INSTANCE_UUID = 4,
-IFLA_PORT_HOST_UUID = 5,
-IFLA_PORT_REQUEST = 6,
-IFLA_PORT_RESPONSE = 7,
-__IFLA_PORT_MAX = 8,
-}
-pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE;
-pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR;
-pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE;
-pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_36 {
-PORT_REQUEST_PREASSOCIATE = 0,
-PORT_REQUEST_PREASSOCIATE_RR = 1,
-PORT_REQUEST_ASSOCIATE = 2,
-PORT_REQUEST_DISASSOCIATE = 3,
-}
-pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS;
-pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT;
-pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID;
-pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION;
-pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION;
-pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC;
-pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS;
-pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS;
-pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID;
-pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE;
-pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_37 {
-PORT_VDP_RESPONSE_SUCCESS = 0,
-PORT_VDP_RESPONSE_INVALID_FORMAT = 1,
-PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES = 2,
-PORT_VDP_RESPONSE_UNUSED_VTID = 3,
-PORT_VDP_RESPONSE_VTID_VIOLATION = 4,
-PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION = 5,
-PORT_VDP_RESPONSE_OUT_OF_SYNC = 6,
-PORT_PROFILE_RESPONSE_SUCCESS = 256,
-PORT_PROFILE_RESPONSE_INPROGRESS = 257,
-PORT_PROFILE_RESPONSE_INVALID = 258,
-PORT_PROFILE_RESPONSE_BADSTATE = 259,
-PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260,
-PORT_PROFILE_RESPONSE_ERROR = 261,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_port_vsi {
-pub vsi_mgr_id: __u8,
-pub vsi_type_id: [__u8; 3usize],
-pub vsi_type_version: __u8,
-pub pad: [__u8; 3usize],
-}
-pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC;
-pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY;
-pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE;
-pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST;
-pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_38 {
-IFLA_IPOIB_UNSPEC = 0,
-IFLA_IPOIB_PKEY = 1,
-IFLA_IPOIB_MODE = 2,
-IFLA_IPOIB_UMCAST = 3,
-__IFLA_IPOIB_MAX = 4,
-}
-pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM;
-pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_39 {
-IPOIB_MODE_DATAGRAM = 0,
-IPOIB_MODE_CONNECTED = 1,
-}
-pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR;
-pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP;
-pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_40 {
-HSR_PROTOCOL_HSR = 0,
-HSR_PROTOCOL_PRP = 1,
-HSR_PROTOCOL_MAX = 2,
-}
-pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC;
-pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1;
-pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2;
-pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC;
-pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR;
-pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR;
-pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION;
-pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL;
-pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_41 {
-IFLA_HSR_UNSPEC = 0,
-IFLA_HSR_SLAVE1 = 1,
-IFLA_HSR_SLAVE2 = 2,
-IFLA_HSR_MULTICAST_SPEC = 3,
-IFLA_HSR_SUPERVISION_ADDR = 4,
-IFLA_HSR_SEQ_NR = 5,
-IFLA_HSR_VERSION = 6,
-IFLA_HSR_PROTOCOL = 7,
-__IFLA_HSR_MAX = 8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct if_stats_msg {
-pub family: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub ifindex: __u32,
-pub filter_mask: __u32,
-}
-pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC;
-pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64;
-pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS;
-pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE;
-pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS;
-pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC;
-pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_42 {
-IFLA_STATS_UNSPEC = 0,
-IFLA_STATS_LINK_64 = 1,
-IFLA_STATS_LINK_XSTATS = 2,
-IFLA_STATS_LINK_XSTATS_SLAVE = 3,
-IFLA_STATS_LINK_OFFLOAD_XSTATS = 4,
-IFLA_STATS_AF_SPEC = 5,
-__IFLA_STATS_MAX = 6,
-}
-pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC;
-pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS;
-pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_43 {
-IFLA_STATS_GETSET_UNSPEC = 0,
-IFLA_STATS_GET_FILTERS = 1,
-IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2,
-__IFLA_STATS_GETSET_MAX = 3,
-}
-pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC;
-pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE;
-pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND;
-pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_44 {
-LINK_XSTATS_TYPE_UNSPEC = 0,
-LINK_XSTATS_TYPE_BRIDGE = 1,
-LINK_XSTATS_TYPE_BOND = 2,
-__LINK_XSTATS_TYPE_MAX = 3,
-}
-pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO;
-pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_45 {
-IFLA_OFFLOAD_XSTATS_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_CPU_HIT = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO = 2,
-IFLA_OFFLOAD_XSTATS_L3_STATS = 3,
-__IFLA_OFFLOAD_XSTATS_MAX = 4,
-}
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED;
-pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_46 {
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2,
-__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3,
-}
-pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE;
-pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV;
-pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB;
-pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW;
-pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_47 {
-XDP_ATTACHED_NONE = 0,
-XDP_ATTACHED_DRV = 1,
-XDP_ATTACHED_SKB = 2,
-XDP_ATTACHED_HW = 3,
-XDP_ATTACHED_MULTI = 4,
-}
-pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC;
-pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD;
-pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED;
-pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS;
-pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID;
-pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID;
-pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID;
-pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID;
-pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD;
-pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_48 {
-IFLA_XDP_UNSPEC = 0,
-IFLA_XDP_FD = 1,
-IFLA_XDP_ATTACHED = 2,
-IFLA_XDP_FLAGS = 3,
-IFLA_XDP_PROG_ID = 4,
-IFLA_XDP_DRV_PROG_ID = 5,
-IFLA_XDP_SKB_PROG_ID = 6,
-IFLA_XDP_HW_PROG_ID = 7,
-IFLA_XDP_EXPECTED_FD = 8,
-__IFLA_XDP_MAX = 9,
-}
-pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE;
-pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT;
-pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES;
-pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER;
-pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS;
-pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND;
-pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_49 {
-IFLA_EVENT_NONE = 0,
-IFLA_EVENT_REBOOT = 1,
-IFLA_EVENT_FEATURES = 2,
-IFLA_EVENT_BONDING_FAILOVER = 3,
-IFLA_EVENT_NOTIFY_PEERS = 4,
-IFLA_EVENT_IGMP_RESEND = 5,
-IFLA_EVENT_BONDING_OPTIONS = 6,
-}
-pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC;
-pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER;
-pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP;
-pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE;
-pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI;
-pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR;
-pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST;
-pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE;
-pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES;
-pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES;
-pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_50 {
-IFLA_TUN_UNSPEC = 0,
-IFLA_TUN_OWNER = 1,
-IFLA_TUN_GROUP = 2,
-IFLA_TUN_TYPE = 3,
-IFLA_TUN_PI = 4,
-IFLA_TUN_VNET_HDR = 5,
-IFLA_TUN_PERSIST = 6,
-IFLA_TUN_MULTI_QUEUE = 7,
-IFLA_TUN_NUM_QUEUES = 8,
-IFLA_TUN_NUM_DISABLED_QUEUES = 9,
-__IFLA_TUN_MAX = 10,
-}
-pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC;
-pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID;
-pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS;
-pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_51 {
-IFLA_RMNET_UNSPEC = 0,
-IFLA_RMNET_MUX_ID = 1,
-IFLA_RMNET_FLAGS = 2,
-__IFLA_RMNET_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_rmnet_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC;
-pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET;
-pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_52 {
-IFLA_MCTP_UNSPEC = 0,
-IFLA_MCTP_NET = 1,
-__IFLA_MCTP_MAX = 2,
-}
-pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC;
-pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER;
-pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_53 {
-IFLA_DSA_UNSPEC = 0,
-IFLA_DSA_MASTER = 1,
-__IFLA_DSA_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifaddrmsg {
-pub ifa_family: __u8,
-pub ifa_prefixlen: __u8,
-pub ifa_flags: __u8,
-pub ifa_scope: __u8,
-pub ifa_index: __u32,
-}
-pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC;
-pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS;
-pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL;
-pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL;
-pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST;
-pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST;
-pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO;
-pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST;
-pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS;
-pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY;
-pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID;
-pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO;
-pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_54 {
-IFA_UNSPEC = 0,
-IFA_ADDRESS = 1,
-IFA_LOCAL = 2,
-IFA_LABEL = 3,
-IFA_BROADCAST = 4,
-IFA_ANYCAST = 5,
-IFA_CACHEINFO = 6,
-IFA_MULTICAST = 7,
-IFA_FLAGS = 8,
-IFA_RT_PRIORITY = 9,
-IFA_TARGET_NETNSID = 10,
-IFA_PROTO = 11,
-__IFA_MAX = 12,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifa_cacheinfo {
-pub ifa_prefered: __u32,
-pub ifa_valid: __u32,
-pub cstamp: __u32,
-pub tstamp: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndmsg {
-pub ndm_family: __u8,
-pub ndm_pad1: __u8,
-pub ndm_pad2: __u16,
-pub ndm_ifindex: __s32,
-pub ndm_state: __u16,
-pub ndm_flags: __u8,
-pub ndm_type: __u8,
-}
-pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC;
-pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST;
-pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR;
-pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO;
-pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES;
-pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN;
-pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT;
-pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI;
-pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX;
-pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER;
-pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID;
-pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI;
-pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL;
-pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID;
-pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS;
-pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT;
-pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK;
-pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK;
-pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_55 {
-NDA_UNSPEC = 0,
-NDA_DST = 1,
-NDA_LLADDR = 2,
-NDA_CACHEINFO = 3,
-NDA_PROBES = 4,
-NDA_VLAN = 5,
-NDA_PORT = 6,
-NDA_VNI = 7,
-NDA_IFINDEX = 8,
-NDA_MASTER = 9,
-NDA_LINK_NETNSID = 10,
-NDA_SRC_VNI = 11,
-NDA_PROTOCOL = 12,
-NDA_NH_ID = 13,
-NDA_FDB_EXT_ATTRS = 14,
-NDA_FLAGS_EXT = 15,
-NDA_NDM_STATE_MASK = 16,
-NDA_NDM_FLAGS_MASK = 17,
-__NDA_MAX = 18,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nda_cacheinfo {
-pub ndm_confirmed: __u32,
-pub ndm_used: __u32,
-pub ndm_updated: __u32,
-pub ndm_refcnt: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_stats {
-pub ndts_allocs: __u64,
-pub ndts_destroys: __u64,
-pub ndts_hash_grows: __u64,
-pub ndts_res_failed: __u64,
-pub ndts_lookups: __u64,
-pub ndts_hits: __u64,
-pub ndts_rcv_probes_mcast: __u64,
-pub ndts_rcv_probes_ucast: __u64,
-pub ndts_periodic_gc_runs: __u64,
-pub ndts_forced_gc_runs: __u64,
-pub ndts_table_fulls: __u64,
-}
-pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC;
-pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX;
-pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT;
-pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME;
-pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME;
-pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME;
-pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME;
-pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME;
-pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN;
-pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES;
-pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES;
-pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES;
-pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY;
-pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY;
-pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN;
-pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME;
-pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES;
-pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES;
-pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD;
-pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS;
-pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_56 {
-NDTPA_UNSPEC = 0,
-NDTPA_IFINDEX = 1,
-NDTPA_REFCNT = 2,
-NDTPA_REACHABLE_TIME = 3,
-NDTPA_BASE_REACHABLE_TIME = 4,
-NDTPA_RETRANS_TIME = 5,
-NDTPA_GC_STALETIME = 6,
-NDTPA_DELAY_PROBE_TIME = 7,
-NDTPA_QUEUE_LEN = 8,
-NDTPA_APP_PROBES = 9,
-NDTPA_UCAST_PROBES = 10,
-NDTPA_MCAST_PROBES = 11,
-NDTPA_ANYCAST_DELAY = 12,
-NDTPA_PROXY_DELAY = 13,
-NDTPA_PROXY_QLEN = 14,
-NDTPA_LOCKTIME = 15,
-NDTPA_QUEUE_LENBYTES = 16,
-NDTPA_MCAST_REPROBES = 17,
-NDTPA_PAD = 18,
-NDTPA_INTERVAL_PROBE_TIME_MS = 19,
-__NDTPA_MAX = 20,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndtmsg {
-pub ndtm_family: __u8,
-pub ndtm_pad1: __u8,
-pub ndtm_pad2: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_config {
-pub ndtc_key_len: __u16,
-pub ndtc_entry_size: __u16,
-pub ndtc_entries: __u32,
-pub ndtc_last_flush: __u32,
-pub ndtc_last_rand: __u32,
-pub ndtc_hash_rnd: __u32,
-pub ndtc_hash_mask: __u32,
-pub ndtc_hash_chain_gc: __u32,
-pub ndtc_proxy_qlen: __u32,
-}
-pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC;
-pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME;
-pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1;
-pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2;
-pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3;
-pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG;
-pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS;
-pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS;
-pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL;
-pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD;
-pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_57 {
-NDTA_UNSPEC = 0,
-NDTA_NAME = 1,
-NDTA_THRESH1 = 2,
-NDTA_THRESH2 = 3,
-NDTA_THRESH3 = 4,
-NDTA_CONFIG = 5,
-NDTA_PARMS = 6,
-NDTA_STATS = 7,
-NDTA_GC_INTERVAL = 8,
-NDTA_PAD = 9,
-__NDTA_MAX = 10,
-}
-pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT;
-pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_58 {
-FDB_NOTIFY_BIT = 1,
-FDB_NOTIFY_INACTIVE_BIT = 2,
-}
-pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC;
-pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY;
-pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH;
-pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_59 {
-NFEA_UNSPEC = 0,
-NFEA_ACTIVITY_NOTIFY = 1,
-NFEA_DONT_REFRESH = 2,
-__NFEA_MAX = 3,
-}
-pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK;
-pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK;
-pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK;
-pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR;
-pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR;
-pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR;
-pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE;
-pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE;
-pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE;
-pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH;
-pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH;
-pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH;
-pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE;
-pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE;
-pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE;
-pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC;
-pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC;
-pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC;
-pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS;
-pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS;
-pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS;
-pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER;
-pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER;
-pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER;
-pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION;
-pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION;
-pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION;
-pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX;
-pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST;
-pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST;
-pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL;
-pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL;
-pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL;
-pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT;
-pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL;
-pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL;
-pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL;
-pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB;
-pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB;
-pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF;
-pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF;
-pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF;
-pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB;
-pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB;
-pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB;
-pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID;
-pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID;
-pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID;
-pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS;
-pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS;
-pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS;
-pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT;
-pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN;
-pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN;
-pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN;
-pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP;
-pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP;
-pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP;
-pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP;
-pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP;
-pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP;
-pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN;
-pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN;
-pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN;
-pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET;
-pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET;
-pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET;
-pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL;
-pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL;
-pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL;
-pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_60 {
-RTM_BASE = 16,
-RTM_DELLINK = 17,
-RTM_GETLINK = 18,
-RTM_SETLINK = 19,
-RTM_NEWADDR = 20,
-RTM_DELADDR = 21,
-RTM_GETADDR = 22,
-RTM_NEWROUTE = 24,
-RTM_DELROUTE = 25,
-RTM_GETROUTE = 26,
-RTM_NEWNEIGH = 28,
-RTM_DELNEIGH = 29,
-RTM_GETNEIGH = 30,
-RTM_NEWRULE = 32,
-RTM_DELRULE = 33,
-RTM_GETRULE = 34,
-RTM_NEWQDISC = 36,
-RTM_DELQDISC = 37,
-RTM_GETQDISC = 38,
-RTM_NEWTCLASS = 40,
-RTM_DELTCLASS = 41,
-RTM_GETTCLASS = 42,
-RTM_NEWTFILTER = 44,
-RTM_DELTFILTER = 45,
-RTM_GETTFILTER = 46,
-RTM_NEWACTION = 48,
-RTM_DELACTION = 49,
-RTM_GETACTION = 50,
-RTM_NEWPREFIX = 52,
-RTM_GETMULTICAST = 58,
-RTM_GETANYCAST = 62,
-RTM_NEWNEIGHTBL = 64,
-RTM_GETNEIGHTBL = 66,
-RTM_SETNEIGHTBL = 67,
-RTM_NEWNDUSEROPT = 68,
-RTM_NEWADDRLABEL = 72,
-RTM_DELADDRLABEL = 73,
-RTM_GETADDRLABEL = 74,
-RTM_GETDCB = 78,
-RTM_SETDCB = 79,
-RTM_NEWNETCONF = 80,
-RTM_DELNETCONF = 81,
-RTM_GETNETCONF = 82,
-RTM_NEWMDB = 84,
-RTM_DELMDB = 85,
-RTM_GETMDB = 86,
-RTM_NEWNSID = 88,
-RTM_DELNSID = 89,
-RTM_GETNSID = 90,
-RTM_NEWSTATS = 92,
-RTM_GETSTATS = 94,
-RTM_SETSTATS = 95,
-RTM_NEWCACHEREPORT = 96,
-RTM_NEWCHAIN = 100,
-RTM_DELCHAIN = 101,
-RTM_GETCHAIN = 102,
-RTM_NEWNEXTHOP = 104,
-RTM_DELNEXTHOP = 105,
-RTM_GETNEXTHOP = 106,
-RTM_NEWLINKPROP = 108,
-RTM_DELLINKPROP = 109,
-RTM_GETLINKPROP = 110,
-RTM_NEWVLAN = 112,
-RTM_DELVLAN = 113,
-RTM_GETVLAN = 114,
-RTM_NEWNEXTHOPBUCKET = 116,
-RTM_DELNEXTHOPBUCKET = 117,
-RTM_GETNEXTHOPBUCKET = 118,
-RTM_NEWTUNNEL = 120,
-RTM_DELTUNNEL = 121,
-RTM_GETTUNNEL = 122,
-__RTM_MAX = 123,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtattr {
-pub rta_len: crate::ctypes::c_ushort,
-pub rta_type: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtmsg {
-pub rtm_family: crate::ctypes::c_uchar,
-pub rtm_dst_len: crate::ctypes::c_uchar,
-pub rtm_src_len: crate::ctypes::c_uchar,
-pub rtm_tos: crate::ctypes::c_uchar,
-pub rtm_table: crate::ctypes::c_uchar,
-pub rtm_protocol: crate::ctypes::c_uchar,
-pub rtm_scope: crate::ctypes::c_uchar,
-pub rtm_type: crate::ctypes::c_uchar,
-pub rtm_flags: crate::ctypes::c_uint,
-}
-pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC;
-pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST;
-pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL;
-pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST;
-pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST;
-pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST;
-pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE;
-pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE;
-pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT;
-pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW;
-pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT;
-pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE;
-pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_61 {
-RTN_UNSPEC = 0,
-RTN_UNICAST = 1,
-RTN_LOCAL = 2,
-RTN_BROADCAST = 3,
-RTN_ANYCAST = 4,
-RTN_MULTICAST = 5,
-RTN_BLACKHOLE = 6,
-RTN_UNREACHABLE = 7,
-RTN_PROHIBIT = 8,
-RTN_THROW = 9,
-RTN_NAT = 10,
-RTN_XRESOLVE = 11,
-__RTN_MAX = 12,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_scope_t {
-RT_SCOPE_UNIVERSE = 0,
-RT_SCOPE_SITE = 200,
-RT_SCOPE_LINK = 253,
-RT_SCOPE_HOST = 254,
-RT_SCOPE_NOWHERE = 255,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_class_t {
-RT_TABLE_UNSPEC = 0,
-RT_TABLE_COMPAT = 252,
-RT_TABLE_DEFAULT = 253,
-RT_TABLE_MAIN = 254,
-RT_TABLE_LOCAL = 255,
-RT_TABLE_MAX = 4294967295,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtattr_type_t {
-RTA_UNSPEC = 0,
-RTA_DST = 1,
-RTA_SRC = 2,
-RTA_IIF = 3,
-RTA_OIF = 4,
-RTA_GATEWAY = 5,
-RTA_PRIORITY = 6,
-RTA_PREFSRC = 7,
-RTA_METRICS = 8,
-RTA_MULTIPATH = 9,
-RTA_PROTOINFO = 10,
-RTA_FLOW = 11,
-RTA_CACHEINFO = 12,
-RTA_SESSION = 13,
-RTA_MP_ALGO = 14,
-RTA_TABLE = 15,
-RTA_MARK = 16,
-RTA_MFC_STATS = 17,
-RTA_VIA = 18,
-RTA_NEWDST = 19,
-RTA_PREF = 20,
-RTA_ENCAP_TYPE = 21,
-RTA_ENCAP = 22,
-RTA_EXPIRES = 23,
-RTA_PAD = 24,
-RTA_UID = 25,
-RTA_TTL_PROPAGATE = 26,
-RTA_IP_PROTO = 27,
-RTA_SPORT = 28,
-RTA_DPORT = 29,
-RTA_NH_ID = 30,
-__RTA_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnexthop {
-pub rtnh_len: crate::ctypes::c_ushort,
-pub rtnh_flags: crate::ctypes::c_uchar,
-pub rtnh_hops: crate::ctypes::c_uchar,
-pub rtnh_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rtvia {
-pub rtvia_family: __kernel_sa_family_t,
-pub rtvia_addr: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_cacheinfo {
-pub rta_clntref: __u32,
-pub rta_lastuse: __u32,
-pub rta_expires: __s32,
-pub rta_error: __u32,
-pub rta_used: __u32,
-pub rta_id: __u32,
-pub rta_ts: __u32,
-pub rta_tsage: __u32,
-}
-pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC;
-pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK;
-pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU;
-pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW;
-pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT;
-pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR;
-pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH;
-pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND;
-pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS;
-pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING;
-pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT;
-pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND;
-pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES;
-pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN;
-pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND;
-pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK;
-pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO;
-pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE;
-pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_62 {
-RTAX_UNSPEC = 0,
-RTAX_LOCK = 1,
-RTAX_MTU = 2,
-RTAX_WINDOW = 3,
-RTAX_RTT = 4,
-RTAX_RTTVAR = 5,
-RTAX_SSTHRESH = 6,
-RTAX_CWND = 7,
-RTAX_ADVMSS = 8,
-RTAX_REORDERING = 9,
-RTAX_HOPLIMIT = 10,
-RTAX_INITCWND = 11,
-RTAX_FEATURES = 12,
-RTAX_RTO_MIN = 13,
-RTAX_INITRWND = 14,
-RTAX_QUICKACK = 15,
-RTAX_CC_ALGO = 16,
-RTAX_FASTOPEN_NO_COOKIE = 17,
-__RTAX_MAX = 18,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rta_session {
-pub proto: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub u: rta_session__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union rta_session__bindgen_ty_1 {
-pub ports: rta_session__bindgen_ty_1__bindgen_ty_1,
-pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2,
-pub spi: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_1 {
-pub sport: __u16,
-pub dport: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_2 {
-pub type_: __u8,
-pub code: __u8,
-pub ident: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_mfc_stats {
-pub mfcs_packets: __u64,
-pub mfcs_bytes: __u64,
-pub mfcs_wrong_if: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtgenmsg {
-pub rtgen_family: crate::ctypes::c_uchar,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifinfomsg {
-pub ifi_family: crate::ctypes::c_uchar,
-pub __ifi_pad: crate::ctypes::c_uchar,
-pub ifi_type: crate::ctypes::c_ushort,
-pub ifi_index: crate::ctypes::c_int,
-pub ifi_flags: crate::ctypes::c_uint,
-pub ifi_change: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefixmsg {
-pub prefix_family: crate::ctypes::c_uchar,
-pub prefix_pad1: crate::ctypes::c_uchar,
-pub prefix_pad2: crate::ctypes::c_ushort,
-pub prefix_ifindex: crate::ctypes::c_int,
-pub prefix_type: crate::ctypes::c_uchar,
-pub prefix_len: crate::ctypes::c_uchar,
-pub prefix_flags: crate::ctypes::c_uchar,
-pub prefix_pad3: crate::ctypes::c_uchar,
-}
-pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC;
-pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS;
-pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO;
-pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_63 {
-PREFIX_UNSPEC = 0,
-PREFIX_ADDRESS = 1,
-PREFIX_CACHEINFO = 2,
-__PREFIX_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefix_cacheinfo {
-pub preferred_time: __u32,
-pub valid_time: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcmsg {
-pub tcm_family: crate::ctypes::c_uchar,
-pub tcm__pad1: crate::ctypes::c_uchar,
-pub tcm__pad2: crate::ctypes::c_ushort,
-pub tcm_ifindex: crate::ctypes::c_int,
-pub tcm_handle: __u32,
-pub tcm_parent: __u32,
-pub tcm_info: __u32,
-}
-pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC;
-pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND;
-pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS;
-pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS;
-pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS;
-pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE;
-pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT;
-pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2;
-pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB;
-pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD;
-pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE;
-pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN;
-pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD;
-pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK;
-pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK;
-pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS;
-pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_64 {
-TCA_UNSPEC = 0,
-TCA_KIND = 1,
-TCA_OPTIONS = 2,
-TCA_STATS = 3,
-TCA_XSTATS = 4,
-TCA_RATE = 5,
-TCA_FCNT = 6,
-TCA_STATS2 = 7,
-TCA_STAB = 8,
-TCA_PAD = 9,
-TCA_DUMP_INVISIBLE = 10,
-TCA_CHAIN = 11,
-TCA_HW_OFFLOAD = 12,
-TCA_INGRESS_BLOCK = 13,
-TCA_EGRESS_BLOCK = 14,
-TCA_DUMP_FLAGS = 15,
-__TCA_MAX = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nduseroptmsg {
-pub nduseropt_family: crate::ctypes::c_uchar,
-pub nduseropt_pad1: crate::ctypes::c_uchar,
-pub nduseropt_opts_len: crate::ctypes::c_ushort,
-pub nduseropt_ifindex: crate::ctypes::c_int,
-pub nduseropt_icmp_type: __u8,
-pub nduseropt_icmp_code: __u8,
-pub nduseropt_pad2: crate::ctypes::c_ushort,
-pub nduseropt_pad3: crate::ctypes::c_uint,
-}
-pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC;
-pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR;
-pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_65 {
-NDUSEROPT_UNSPEC = 0,
-NDUSEROPT_SRCADDR = 1,
-__NDUSEROPT_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtnetlink_groups {
-RTNLGRP_NONE = 0,
-RTNLGRP_LINK = 1,
-RTNLGRP_NOTIFY = 2,
-RTNLGRP_NEIGH = 3,
-RTNLGRP_TC = 4,
-RTNLGRP_IPV4_IFADDR = 5,
-RTNLGRP_IPV4_MROUTE = 6,
-RTNLGRP_IPV4_ROUTE = 7,
-RTNLGRP_IPV4_RULE = 8,
-RTNLGRP_IPV6_IFADDR = 9,
-RTNLGRP_IPV6_MROUTE = 10,
-RTNLGRP_IPV6_ROUTE = 11,
-RTNLGRP_IPV6_IFINFO = 12,
-RTNLGRP_DECnet_IFADDR = 13,
-RTNLGRP_NOP2 = 14,
-RTNLGRP_DECnet_ROUTE = 15,
-RTNLGRP_DECnet_RULE = 16,
-RTNLGRP_NOP4 = 17,
-RTNLGRP_IPV6_PREFIX = 18,
-RTNLGRP_IPV6_RULE = 19,
-RTNLGRP_ND_USEROPT = 20,
-RTNLGRP_PHONET_IFADDR = 21,
-RTNLGRP_PHONET_ROUTE = 22,
-RTNLGRP_DCB = 23,
-RTNLGRP_IPV4_NETCONF = 24,
-RTNLGRP_IPV6_NETCONF = 25,
-RTNLGRP_MDB = 26,
-RTNLGRP_MPLS_ROUTE = 27,
-RTNLGRP_NSID = 28,
-RTNLGRP_MPLS_NETCONF = 29,
-RTNLGRP_IPV4_MROUTE_R = 30,
-RTNLGRP_IPV6_MROUTE_R = 31,
-RTNLGRP_NEXTHOP = 32,
-RTNLGRP_BRVLAN = 33,
-RTNLGRP_MCTP_IFADDR = 34,
-RTNLGRP_TUNNEL = 35,
-RTNLGRP_STATS = 36,
-__RTNLGRP_MAX = 37,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcamsg {
-pub tca_family: crate::ctypes::c_uchar,
-pub tca__pad1: crate::ctypes::c_uchar,
-pub tca__pad2: crate::ctypes::c_ushort,
-}
-pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC;
-pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB;
-pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS;
-pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT;
-pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA;
-pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_66 {
-TCA_ROOT_UNSPEC = 0,
-TCA_ROOT_TAB = 1,
-TCA_ROOT_FLAGS = 2,
-TCA_ROOT_COUNT = 3,
-TCA_ROOT_TIME_DELTA = 4,
-__TCA_ROOT_MAX = 5,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/riscv64/errno.rs b/vendor/linux-raw-sys-0.3.2/src/riscv64/errno.rs
deleted file mode 100644
index 8c5620d74..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/riscv64/errno.rs
+++ /dev/null
@@ -1,135 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const EPERM: u32 = 1;
-pub const ENOENT: u32 = 2;
-pub const ESRCH: u32 = 3;
-pub const EINTR: u32 = 4;
-pub const EIO: u32 = 5;
-pub const ENXIO: u32 = 6;
-pub const E2BIG: u32 = 7;
-pub const ENOEXEC: u32 = 8;
-pub const EBADF: u32 = 9;
-pub const ECHILD: u32 = 10;
-pub const EAGAIN: u32 = 11;
-pub const ENOMEM: u32 = 12;
-pub const EACCES: u32 = 13;
-pub const EFAULT: u32 = 14;
-pub const ENOTBLK: u32 = 15;
-pub const EBUSY: u32 = 16;
-pub const EEXIST: u32 = 17;
-pub const EXDEV: u32 = 18;
-pub const ENODEV: u32 = 19;
-pub const ENOTDIR: u32 = 20;
-pub const EISDIR: u32 = 21;
-pub const EINVAL: u32 = 22;
-pub const ENFILE: u32 = 23;
-pub const EMFILE: u32 = 24;
-pub const ENOTTY: u32 = 25;
-pub const ETXTBSY: u32 = 26;
-pub const EFBIG: u32 = 27;
-pub const ENOSPC: u32 = 28;
-pub const ESPIPE: u32 = 29;
-pub const EROFS: u32 = 30;
-pub const EMLINK: u32 = 31;
-pub const EPIPE: u32 = 32;
-pub const EDOM: u32 = 33;
-pub const ERANGE: u32 = 34;
-pub const EDEADLK: u32 = 35;
-pub const ENAMETOOLONG: u32 = 36;
-pub const ENOLCK: u32 = 37;
-pub const ENOSYS: u32 = 38;
-pub const ENOTEMPTY: u32 = 39;
-pub const ELOOP: u32 = 40;
-pub const EWOULDBLOCK: u32 = 11;
-pub const ENOMSG: u32 = 42;
-pub const EIDRM: u32 = 43;
-pub const ECHRNG: u32 = 44;
-pub const EL2NSYNC: u32 = 45;
-pub const EL3HLT: u32 = 46;
-pub const EL3RST: u32 = 47;
-pub const ELNRNG: u32 = 48;
-pub const EUNATCH: u32 = 49;
-pub const ENOCSI: u32 = 50;
-pub const EL2HLT: u32 = 51;
-pub const EBADE: u32 = 52;
-pub const EBADR: u32 = 53;
-pub const EXFULL: u32 = 54;
-pub const ENOANO: u32 = 55;
-pub const EBADRQC: u32 = 56;
-pub const EBADSLT: u32 = 57;
-pub const EDEADLOCK: u32 = 35;
-pub const EBFONT: u32 = 59;
-pub const ENOSTR: u32 = 60;
-pub const ENODATA: u32 = 61;
-pub const ETIME: u32 = 62;
-pub const ENOSR: u32 = 63;
-pub const ENONET: u32 = 64;
-pub const ENOPKG: u32 = 65;
-pub const EREMOTE: u32 = 66;
-pub const ENOLINK: u32 = 67;
-pub const EADV: u32 = 68;
-pub const ESRMNT: u32 = 69;
-pub const ECOMM: u32 = 70;
-pub const EPROTO: u32 = 71;
-pub const EMULTIHOP: u32 = 72;
-pub const EDOTDOT: u32 = 73;
-pub const EBADMSG: u32 = 74;
-pub const EOVERFLOW: u32 = 75;
-pub const ENOTUNIQ: u32 = 76;
-pub const EBADFD: u32 = 77;
-pub const EREMCHG: u32 = 78;
-pub const ELIBACC: u32 = 79;
-pub const ELIBBAD: u32 = 80;
-pub const ELIBSCN: u32 = 81;
-pub const ELIBMAX: u32 = 82;
-pub const ELIBEXEC: u32 = 83;
-pub const EILSEQ: u32 = 84;
-pub const ERESTART: u32 = 85;
-pub const ESTRPIPE: u32 = 86;
-pub const EUSERS: u32 = 87;
-pub const ENOTSOCK: u32 = 88;
-pub const EDESTADDRREQ: u32 = 89;
-pub const EMSGSIZE: u32 = 90;
-pub const EPROTOTYPE: u32 = 91;
-pub const ENOPROTOOPT: u32 = 92;
-pub const EPROTONOSUPPORT: u32 = 93;
-pub const ESOCKTNOSUPPORT: u32 = 94;
-pub const EOPNOTSUPP: u32 = 95;
-pub const EPFNOSUPPORT: u32 = 96;
-pub const EAFNOSUPPORT: u32 = 97;
-pub const EADDRINUSE: u32 = 98;
-pub const EADDRNOTAVAIL: u32 = 99;
-pub const ENETDOWN: u32 = 100;
-pub const ENETUNREACH: u32 = 101;
-pub const ENETRESET: u32 = 102;
-pub const ECONNABORTED: u32 = 103;
-pub const ECONNRESET: u32 = 104;
-pub const ENOBUFS: u32 = 105;
-pub const EISCONN: u32 = 106;
-pub const ENOTCONN: u32 = 107;
-pub const ESHUTDOWN: u32 = 108;
-pub const ETOOMANYREFS: u32 = 109;
-pub const ETIMEDOUT: u32 = 110;
-pub const ECONNREFUSED: u32 = 111;
-pub const EHOSTDOWN: u32 = 112;
-pub const EHOSTUNREACH: u32 = 113;
-pub const EALREADY: u32 = 114;
-pub const EINPROGRESS: u32 = 115;
-pub const ESTALE: u32 = 116;
-pub const EUCLEAN: u32 = 117;
-pub const ENOTNAM: u32 = 118;
-pub const ENAVAIL: u32 = 119;
-pub const EISNAM: u32 = 120;
-pub const EREMOTEIO: u32 = 121;
-pub const EDQUOT: u32 = 122;
-pub const ENOMEDIUM: u32 = 123;
-pub const EMEDIUMTYPE: u32 = 124;
-pub const ECANCELED: u32 = 125;
-pub const ENOKEY: u32 = 126;
-pub const EKEYEXPIRED: u32 = 127;
-pub const EKEYREVOKED: u32 = 128;
-pub const EKEYREJECTED: u32 = 129;
-pub const EOWNERDEAD: u32 = 130;
-pub const ENOTRECOVERABLE: u32 = 131;
-pub const ERFKILL: u32 = 132;
-pub const EHWPOISON: u32 = 133;
diff --git a/vendor/linux-raw-sys-0.3.2/src/riscv64/general.rs b/vendor/linux-raw-sys-0.3.2/src/riscv64/general.rs
deleted file mode 100644
index b7c870cdc..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/riscv64/general.rs
+++ /dev/null
@@ -1,5257 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
-pub struct __BindgenBitfieldUnit<Storage> {
-storage: Storage,
-}
-impl<Storage> __BindgenBitfieldUnit<Storage> {
-#[inline]
-pub const fn new(storage: Storage) -> Self {
-Self { storage }
-}
-}
-impl<Storage> __BindgenBitfieldUnit<Storage>
-where
-Storage: AsRef<[u8]> + AsMut<[u8]>,
-{
-#[inline]
-pub fn get_bit(&self, index: usize) -> bool {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = self.storage.as_ref()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-byte & mask == mask
-}
-#[inline]
-pub fn set_bit(&mut self, index: usize, val: bool) {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = &mut self.storage.as_mut()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-if val {
-*byte |= mask;
-} else {
-*byte &= !mask;
-}
-}
-#[inline]
-pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-let mut val = 0;
-for i in 0..(bit_width as usize) {
-if self.get_bit(i + bit_offset) {
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-val |= 1 << index;
-}
-}
-val
-}
-#[inline]
-pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-for i in 0..(bit_width as usize) {
-let mask = 1 << i;
-let val_bit_is_set = val & mask == mask;
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-self.set_bit(index + bit_offset, val_bit_is_set);
-}
-}
-}
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-#[repr(C)]
-pub struct __BindgenUnionField<T>(::core::marker::PhantomData<T>);
-impl<T> __BindgenUnionField<T> {
-#[inline]
-pub const fn new() -> Self {
-__BindgenUnionField(::core::marker::PhantomData)
-}
-#[inline]
-pub unsafe fn as_ref(&self) -> &T {
-::core::mem::transmute(self)
-}
-#[inline]
-pub unsafe fn as_mut(&mut self) -> &mut T {
-::core::mem::transmute(self)
-}
-}
-impl<T> ::core::default::Default for __BindgenUnionField<T> {
-#[inline]
-fn default() -> Self {
-Self::new()
-}
-}
-impl<T> ::core::clone::Clone for __BindgenUnionField<T> {
-#[inline]
-fn clone(&self) -> Self {
-Self::new()
-}
-}
-impl<T> ::core::marker::Copy for __BindgenUnionField<T> {}
-impl<T> ::core::fmt::Debug for __BindgenUnionField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__BindgenUnionField")
-}
-}
-impl<T> ::core::hash::Hash for __BindgenUnionField<T> {
-fn hash<H: ::core::hash::Hasher>(&self, _state: &mut H) {}
-}
-impl<T> ::core::cmp::PartialEq for __BindgenUnionField<T> {
-fn eq(&self, _other: &__BindgenUnionField<T>) -> bool {
-true
-}
-}
-impl<T> ::core::cmp::Eq for __BindgenUnionField<T> {}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const AT_SYSINFO_EHDR: u32 = 33;
-pub const AT_L1I_CACHESIZE: u32 = 40;
-pub const AT_L1I_CACHEGEOMETRY: u32 = 41;
-pub const AT_L1D_CACHESIZE: u32 = 42;
-pub const AT_L1D_CACHEGEOMETRY: u32 = 43;
-pub const AT_L2_CACHESIZE: u32 = 44;
-pub const AT_L2_CACHEGEOMETRY: u32 = 45;
-pub const AT_L3_CACHESIZE: u32 = 46;
-pub const AT_L3_CACHEGEOMETRY: u32 = 47;
-pub const AT_VECTOR_SIZE_ARCH: u32 = 9;
-pub const AT_NULL: u32 = 0;
-pub const AT_IGNORE: u32 = 1;
-pub const AT_EXECFD: u32 = 2;
-pub const AT_PHDR: u32 = 3;
-pub const AT_PHENT: u32 = 4;
-pub const AT_PHNUM: u32 = 5;
-pub const AT_PAGESZ: u32 = 6;
-pub const AT_BASE: u32 = 7;
-pub const AT_FLAGS: u32 = 8;
-pub const AT_ENTRY: u32 = 9;
-pub const AT_NOTELF: u32 = 10;
-pub const AT_UID: u32 = 11;
-pub const AT_EUID: u32 = 12;
-pub const AT_GID: u32 = 13;
-pub const AT_EGID: u32 = 14;
-pub const AT_PLATFORM: u32 = 15;
-pub const AT_HWCAP: u32 = 16;
-pub const AT_CLKTCK: u32 = 17;
-pub const AT_SECURE: u32 = 23;
-pub const AT_BASE_PLATFORM: u32 = 24;
-pub const AT_RANDOM: u32 = 25;
-pub const AT_HWCAP2: u32 = 26;
-pub const AT_EXECFN: u32 = 31;
-pub const AT_MINSIGSTKSZ: u32 = 51;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S_1: u32 = 1;
-pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798;
-pub const _LINUX_CAPABILITY_U32S_2: u32 = 2;
-pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514;
-pub const _LINUX_CAPABILITY_U32S_3: u32 = 2;
-pub const VFS_CAP_REVISION_MASK: u32 = 4278190080;
-pub const VFS_CAP_REVISION_SHIFT: u32 = 24;
-pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081;
-pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1;
-pub const VFS_CAP_REVISION_1: u32 = 16777216;
-pub const VFS_CAP_U32_1: u32 = 1;
-pub const VFS_CAP_REVISION_2: u32 = 33554432;
-pub const VFS_CAP_U32_2: u32 = 2;
-pub const VFS_CAP_REVISION_3: u32 = 50331648;
-pub const VFS_CAP_U32_3: u32 = 2;
-pub const VFS_CAP_U32: u32 = 2;
-pub const VFS_CAP_REVISION: u32 = 50331648;
-pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S: u32 = 1;
-pub const CAP_CHOWN: u32 = 0;
-pub const CAP_DAC_OVERRIDE: u32 = 1;
-pub const CAP_DAC_READ_SEARCH: u32 = 2;
-pub const CAP_FOWNER: u32 = 3;
-pub const CAP_FSETID: u32 = 4;
-pub const CAP_KILL: u32 = 5;
-pub const CAP_SETGID: u32 = 6;
-pub const CAP_SETUID: u32 = 7;
-pub const CAP_SETPCAP: u32 = 8;
-pub const CAP_LINUX_IMMUTABLE: u32 = 9;
-pub const CAP_NET_BIND_SERVICE: u32 = 10;
-pub const CAP_NET_BROADCAST: u32 = 11;
-pub const CAP_NET_ADMIN: u32 = 12;
-pub const CAP_NET_RAW: u32 = 13;
-pub const CAP_IPC_LOCK: u32 = 14;
-pub const CAP_IPC_OWNER: u32 = 15;
-pub const CAP_SYS_MODULE: u32 = 16;
-pub const CAP_SYS_RAWIO: u32 = 17;
-pub const CAP_SYS_CHROOT: u32 = 18;
-pub const CAP_SYS_PTRACE: u32 = 19;
-pub const CAP_SYS_PACCT: u32 = 20;
-pub const CAP_SYS_ADMIN: u32 = 21;
-pub const CAP_SYS_BOOT: u32 = 22;
-pub const CAP_SYS_NICE: u32 = 23;
-pub const CAP_SYS_RESOURCE: u32 = 24;
-pub const CAP_SYS_TIME: u32 = 25;
-pub const CAP_SYS_TTY_CONFIG: u32 = 26;
-pub const CAP_MKNOD: u32 = 27;
-pub const CAP_LEASE: u32 = 28;
-pub const CAP_AUDIT_WRITE: u32 = 29;
-pub const CAP_AUDIT_CONTROL: u32 = 30;
-pub const CAP_SETFCAP: u32 = 31;
-pub const CAP_MAC_OVERRIDE: u32 = 32;
-pub const CAP_MAC_ADMIN: u32 = 33;
-pub const CAP_SYSLOG: u32 = 34;
-pub const CAP_WAKE_ALARM: u32 = 35;
-pub const CAP_BLOCK_SUSPEND: u32 = 36;
-pub const CAP_AUDIT_READ: u32 = 37;
-pub const CAP_PERFMON: u32 = 38;
-pub const CAP_BPF: u32 = 39;
-pub const CAP_CHECKPOINT_RESTORE: u32 = 40;
-pub const CAP_LAST_CAP: u32 = 40;
-pub const O_ACCMODE: u32 = 3;
-pub const O_RDONLY: u32 = 0;
-pub const O_WRONLY: u32 = 1;
-pub const O_RDWR: u32 = 2;
-pub const O_CREAT: u32 = 64;
-pub const O_EXCL: u32 = 128;
-pub const O_NOCTTY: u32 = 256;
-pub const O_TRUNC: u32 = 512;
-pub const O_APPEND: u32 = 1024;
-pub const O_NONBLOCK: u32 = 2048;
-pub const O_DSYNC: u32 = 4096;
-pub const FASYNC: u32 = 8192;
-pub const O_DIRECT: u32 = 16384;
-pub const O_LARGEFILE: u32 = 32768;
-pub const O_DIRECTORY: u32 = 65536;
-pub const O_NOFOLLOW: u32 = 131072;
-pub const O_NOATIME: u32 = 262144;
-pub const O_CLOEXEC: u32 = 524288;
-pub const __O_SYNC: u32 = 1048576;
-pub const O_SYNC: u32 = 1052672;
-pub const O_PATH: u32 = 2097152;
-pub const __O_TMPFILE: u32 = 4194304;
-pub const O_TMPFILE: u32 = 4259840;
-pub const O_TMPFILE_MASK: u32 = 4259904;
-pub const O_NDELAY: u32 = 2048;
-pub const F_DUPFD: u32 = 0;
-pub const F_GETFD: u32 = 1;
-pub const F_SETFD: u32 = 2;
-pub const F_GETFL: u32 = 3;
-pub const F_SETFL: u32 = 4;
-pub const F_GETLK: u32 = 5;
-pub const F_SETLK: u32 = 6;
-pub const F_SETLKW: u32 = 7;
-pub const F_SETOWN: u32 = 8;
-pub const F_GETOWN: u32 = 9;
-pub const F_SETSIG: u32 = 10;
-pub const F_GETSIG: u32 = 11;
-pub const F_SETOWN_EX: u32 = 15;
-pub const F_GETOWN_EX: u32 = 16;
-pub const F_GETOWNER_UIDS: u32 = 17;
-pub const F_OFD_GETLK: u32 = 36;
-pub const F_OFD_SETLK: u32 = 37;
-pub const F_OFD_SETLKW: u32 = 38;
-pub const F_OWNER_TID: u32 = 0;
-pub const F_OWNER_PID: u32 = 1;
-pub const F_OWNER_PGRP: u32 = 2;
-pub const FD_CLOEXEC: u32 = 1;
-pub const F_RDLCK: u32 = 0;
-pub const F_WRLCK: u32 = 1;
-pub const F_UNLCK: u32 = 2;
-pub const F_EXLCK: u32 = 4;
-pub const F_SHLCK: u32 = 8;
-pub const LOCK_SH: u32 = 1;
-pub const LOCK_EX: u32 = 2;
-pub const LOCK_NB: u32 = 4;
-pub const LOCK_UN: u32 = 8;
-pub const LOCK_MAND: u32 = 32;
-pub const LOCK_READ: u32 = 64;
-pub const LOCK_WRITE: u32 = 128;
-pub const LOCK_RW: u32 = 192;
-pub const F_LINUX_SPECIFIC_BASE: u32 = 1024;
-pub const RESOLVE_NO_XDEV: u32 = 1;
-pub const RESOLVE_NO_MAGICLINKS: u32 = 2;
-pub const RESOLVE_NO_SYMLINKS: u32 = 4;
-pub const RESOLVE_BENEATH: u32 = 8;
-pub const RESOLVE_IN_ROOT: u32 = 16;
-pub const RESOLVE_CACHED: u32 = 32;
-pub const F_SETLEASE: u32 = 1024;
-pub const F_GETLEASE: u32 = 1025;
-pub const F_CANCELLK: u32 = 1029;
-pub const F_DUPFD_CLOEXEC: u32 = 1030;
-pub const F_NOTIFY: u32 = 1026;
-pub const F_SETPIPE_SZ: u32 = 1031;
-pub const F_GETPIPE_SZ: u32 = 1032;
-pub const F_ADD_SEALS: u32 = 1033;
-pub const F_GET_SEALS: u32 = 1034;
-pub const F_SEAL_SEAL: u32 = 1;
-pub const F_SEAL_SHRINK: u32 = 2;
-pub const F_SEAL_GROW: u32 = 4;
-pub const F_SEAL_WRITE: u32 = 8;
-pub const F_SEAL_FUTURE_WRITE: u32 = 16;
-pub const F_GET_RW_HINT: u32 = 1035;
-pub const F_SET_RW_HINT: u32 = 1036;
-pub const F_GET_FILE_RW_HINT: u32 = 1037;
-pub const F_SET_FILE_RW_HINT: u32 = 1038;
-pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const RWH_WRITE_LIFE_NONE: u32 = 1;
-pub const RWH_WRITE_LIFE_SHORT: u32 = 2;
-pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3;
-pub const RWH_WRITE_LIFE_LONG: u32 = 4;
-pub const RWH_WRITE_LIFE_EXTREME: u32 = 5;
-pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const DN_ACCESS: u32 = 1;
-pub const DN_MODIFY: u32 = 2;
-pub const DN_CREATE: u32 = 4;
-pub const DN_DELETE: u32 = 8;
-pub const DN_RENAME: u32 = 16;
-pub const DN_ATTRIB: u32 = 32;
-pub const DN_MULTISHOT: u32 = 2147483648;
-pub const AT_FDCWD: i32 = -100;
-pub const AT_SYMLINK_NOFOLLOW: u32 = 256;
-pub const AT_EACCESS: u32 = 512;
-pub const AT_REMOVEDIR: u32 = 512;
-pub const AT_SYMLINK_FOLLOW: u32 = 1024;
-pub const AT_NO_AUTOMOUNT: u32 = 2048;
-pub const AT_EMPTY_PATH: u32 = 4096;
-pub const AT_STATX_SYNC_TYPE: u32 = 24576;
-pub const AT_STATX_SYNC_AS_STAT: u32 = 0;
-pub const AT_STATX_FORCE_SYNC: u32 = 8192;
-pub const AT_STATX_DONT_SYNC: u32 = 16384;
-pub const AT_RECURSIVE: u32 = 32768;
-pub const EPOLL_CLOEXEC: u32 = 524288;
-pub const EPOLL_CTL_ADD: u32 = 1;
-pub const EPOLL_CTL_DEL: u32 = 2;
-pub const EPOLL_CTL_MOD: u32 = 3;
-pub const POSIX_FADV_NORMAL: u32 = 0;
-pub const POSIX_FADV_RANDOM: u32 = 1;
-pub const POSIX_FADV_SEQUENTIAL: u32 = 2;
-pub const POSIX_FADV_WILLNEED: u32 = 3;
-pub const POSIX_FADV_DONTNEED: u32 = 4;
-pub const POSIX_FADV_NOREUSE: u32 = 5;
-pub const FALLOC_FL_KEEP_SIZE: u32 = 1;
-pub const FALLOC_FL_PUNCH_HOLE: u32 = 2;
-pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4;
-pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8;
-pub const FALLOC_FL_ZERO_RANGE: u32 = 16;
-pub const FALLOC_FL_INSERT_RANGE: u32 = 32;
-pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64;
-pub const NR_OPEN: u32 = 1024;
-pub const NGROUPS_MAX: u32 = 65536;
-pub const ARG_MAX: u32 = 131072;
-pub const LINK_MAX: u32 = 127;
-pub const MAX_CANON: u32 = 255;
-pub const MAX_INPUT: u32 = 255;
-pub const NAME_MAX: u32 = 255;
-pub const PATH_MAX: u32 = 4096;
-pub const PIPE_BUF: u32 = 4096;
-pub const XATTR_NAME_MAX: u32 = 255;
-pub const XATTR_SIZE_MAX: u32 = 65536;
-pub const XATTR_LIST_MAX: u32 = 65536;
-pub const RTSIG_MAX: u32 = 32;
-pub const _IOC_NRBITS: u32 = 8;
-pub const _IOC_TYPEBITS: u32 = 8;
-pub const _IOC_SIZEBITS: u32 = 14;
-pub const _IOC_DIRBITS: u32 = 2;
-pub const _IOC_NRMASK: u32 = 255;
-pub const _IOC_TYPEMASK: u32 = 255;
-pub const _IOC_SIZEMASK: u32 = 16383;
-pub const _IOC_DIRMASK: u32 = 3;
-pub const _IOC_NRSHIFT: u32 = 0;
-pub const _IOC_TYPESHIFT: u32 = 8;
-pub const _IOC_SIZESHIFT: u32 = 16;
-pub const _IOC_DIRSHIFT: u32 = 30;
-pub const _IOC_NONE: u32 = 0;
-pub const _IOC_WRITE: u32 = 1;
-pub const _IOC_READ: u32 = 2;
-pub const IOC_IN: u32 = 1073741824;
-pub const IOC_OUT: u32 = 2147483648;
-pub const IOC_INOUT: u32 = 3221225472;
-pub const IOCSIZE_MASK: u32 = 1073676288;
-pub const IOCSIZE_SHIFT: u32 = 16;
-pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16;
-pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1;
-pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4;
-pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5;
-pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6;
-pub const FSCRYPT_MODE_SM4_XTS: u32 = 7;
-pub const FSCRYPT_MODE_SM4_CTS: u32 = 8;
-pub const FSCRYPT_MODE_ADIANTUM: u32 = 9;
-pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10;
-pub const FSCRYPT_POLICY_V1: u32 = 0;
-pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64;
-pub const FSCRYPT_POLICY_V2: u32 = 2;
-pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16;
-pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1;
-pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1;
-pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3;
-pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1;
-pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FS_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FS_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FS_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FS_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FS_POLICY_FLAGS_VALID: u32 = 7;
-pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0;
-pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1;
-pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2;
-pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3;
-pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4;
-pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5;
-pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6;
-pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9;
-pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FS_MAX_KEY_SIZE: u32 = 64;
-pub const MS_RDONLY: u32 = 1;
-pub const MS_NOSUID: u32 = 2;
-pub const MS_NODEV: u32 = 4;
-pub const MS_NOEXEC: u32 = 8;
-pub const MS_SYNCHRONOUS: u32 = 16;
-pub const MS_REMOUNT: u32 = 32;
-pub const MS_MANDLOCK: u32 = 64;
-pub const MS_DIRSYNC: u32 = 128;
-pub const MS_NOSYMFOLLOW: u32 = 256;
-pub const MS_NOATIME: u32 = 1024;
-pub const MS_NODIRATIME: u32 = 2048;
-pub const MS_BIND: u32 = 4096;
-pub const MS_MOVE: u32 = 8192;
-pub const MS_REC: u32 = 16384;
-pub const MS_VERBOSE: u32 = 32768;
-pub const MS_SILENT: u32 = 32768;
-pub const MS_POSIXACL: u32 = 65536;
-pub const MS_UNBINDABLE: u32 = 131072;
-pub const MS_PRIVATE: u32 = 262144;
-pub const MS_SLAVE: u32 = 524288;
-pub const MS_SHARED: u32 = 1048576;
-pub const MS_RELATIME: u32 = 2097152;
-pub const MS_KERNMOUNT: u32 = 4194304;
-pub const MS_I_VERSION: u32 = 8388608;
-pub const MS_STRICTATIME: u32 = 16777216;
-pub const MS_LAZYTIME: u32 = 33554432;
-pub const MS_SUBMOUNT: u32 = 67108864;
-pub const MS_NOREMOTELOCK: u32 = 134217728;
-pub const MS_NOSEC: u32 = 268435456;
-pub const MS_BORN: u32 = 536870912;
-pub const MS_ACTIVE: u32 = 1073741824;
-pub const MS_NOUSER: u32 = 2147483648;
-pub const MS_RMT_MASK: u32 = 41943121;
-pub const MS_MGC_VAL: u32 = 3236757504;
-pub const MS_MGC_MSK: u32 = 4294901760;
-pub const OPEN_TREE_CLONE: u32 = 1;
-pub const OPEN_TREE_CLOEXEC: u32 = 524288;
-pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1;
-pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2;
-pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4;
-pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16;
-pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32;
-pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64;
-pub const MOVE_MOUNT_SET_GROUP: u32 = 256;
-pub const MOVE_MOUNT__MASK: u32 = 375;
-pub const FSOPEN_CLOEXEC: u32 = 1;
-pub const FSPICK_CLOEXEC: u32 = 1;
-pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2;
-pub const FSPICK_NO_AUTOMOUNT: u32 = 4;
-pub const FSPICK_EMPTY_PATH: u32 = 8;
-pub const FSMOUNT_CLOEXEC: u32 = 1;
-pub const MOUNT_ATTR_RDONLY: u32 = 1;
-pub const MOUNT_ATTR_NOSUID: u32 = 2;
-pub const MOUNT_ATTR_NODEV: u32 = 4;
-pub const MOUNT_ATTR_NOEXEC: u32 = 8;
-pub const MOUNT_ATTR__ATIME: u32 = 112;
-pub const MOUNT_ATTR_RELATIME: u32 = 0;
-pub const MOUNT_ATTR_NOATIME: u32 = 16;
-pub const MOUNT_ATTR_STRICTATIME: u32 = 32;
-pub const MOUNT_ATTR_NODIRATIME: u32 = 128;
-pub const MOUNT_ATTR_IDMAP: u32 = 1048576;
-pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152;
-pub const MOUNT_ATTR_SIZE_VER0: u32 = 32;
-pub const INR_OPEN_CUR: u32 = 1024;
-pub const INR_OPEN_MAX: u32 = 4096;
-pub const BLOCK_SIZE_BITS: u32 = 10;
-pub const BLOCK_SIZE: u32 = 1024;
-pub const SEEK_SET: u32 = 0;
-pub const SEEK_CUR: u32 = 1;
-pub const SEEK_END: u32 = 2;
-pub const SEEK_DATA: u32 = 3;
-pub const SEEK_HOLE: u32 = 4;
-pub const SEEK_MAX: u32 = 4;
-pub const RENAME_NOREPLACE: u32 = 1;
-pub const RENAME_EXCHANGE: u32 = 2;
-pub const RENAME_WHITEOUT: u32 = 4;
-pub const FILE_DEDUPE_RANGE_SAME: u32 = 0;
-pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1;
-pub const NR_FILE: u32 = 8192;
-pub const FS_XFLAG_REALTIME: u32 = 1;
-pub const FS_XFLAG_PREALLOC: u32 = 2;
-pub const FS_XFLAG_IMMUTABLE: u32 = 8;
-pub const FS_XFLAG_APPEND: u32 = 16;
-pub const FS_XFLAG_SYNC: u32 = 32;
-pub const FS_XFLAG_NOATIME: u32 = 64;
-pub const FS_XFLAG_NODUMP: u32 = 128;
-pub const FS_XFLAG_RTINHERIT: u32 = 256;
-pub const FS_XFLAG_PROJINHERIT: u32 = 512;
-pub const FS_XFLAG_NOSYMLINKS: u32 = 1024;
-pub const FS_XFLAG_EXTSIZE: u32 = 2048;
-pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096;
-pub const FS_XFLAG_NODEFRAG: u32 = 8192;
-pub const FS_XFLAG_FILESTREAM: u32 = 16384;
-pub const FS_XFLAG_DAX: u32 = 32768;
-pub const FS_XFLAG_COWEXTSIZE: u32 = 65536;
-pub const FS_XFLAG_HASATTR: u32 = 2147483648;
-pub const BMAP_IOCTL: u32 = 1;
-pub const FSLABEL_MAX: u32 = 256;
-pub const FS_SECRM_FL: u32 = 1;
-pub const FS_UNRM_FL: u32 = 2;
-pub const FS_COMPR_FL: u32 = 4;
-pub const FS_SYNC_FL: u32 = 8;
-pub const FS_IMMUTABLE_FL: u32 = 16;
-pub const FS_APPEND_FL: u32 = 32;
-pub const FS_NODUMP_FL: u32 = 64;
-pub const FS_NOATIME_FL: u32 = 128;
-pub const FS_DIRTY_FL: u32 = 256;
-pub const FS_COMPRBLK_FL: u32 = 512;
-pub const FS_NOCOMP_FL: u32 = 1024;
-pub const FS_ENCRYPT_FL: u32 = 2048;
-pub const FS_BTREE_FL: u32 = 4096;
-pub const FS_INDEX_FL: u32 = 4096;
-pub const FS_IMAGIC_FL: u32 = 8192;
-pub const FS_JOURNAL_DATA_FL: u32 = 16384;
-pub const FS_NOTAIL_FL: u32 = 32768;
-pub const FS_DIRSYNC_FL: u32 = 65536;
-pub const FS_TOPDIR_FL: u32 = 131072;
-pub const FS_HUGE_FILE_FL: u32 = 262144;
-pub const FS_EXTENT_FL: u32 = 524288;
-pub const FS_VERITY_FL: u32 = 1048576;
-pub const FS_EA_INODE_FL: u32 = 2097152;
-pub const FS_EOFBLOCKS_FL: u32 = 4194304;
-pub const FS_NOCOW_FL: u32 = 8388608;
-pub const FS_DAX_FL: u32 = 33554432;
-pub const FS_INLINE_DATA_FL: u32 = 268435456;
-pub const FS_PROJINHERIT_FL: u32 = 536870912;
-pub const FS_CASEFOLD_FL: u32 = 1073741824;
-pub const FS_RESERVED_FL: u32 = 2147483648;
-pub const FS_FL_USER_VISIBLE: u32 = 253951;
-pub const FS_FL_USER_MODIFIABLE: u32 = 229631;
-pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1;
-pub const SYNC_FILE_RANGE_WRITE: u32 = 2;
-pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4;
-pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7;
-pub const FUTEX_WAIT: u32 = 0;
-pub const FUTEX_WAKE: u32 = 1;
-pub const FUTEX_FD: u32 = 2;
-pub const FUTEX_REQUEUE: u32 = 3;
-pub const FUTEX_CMP_REQUEUE: u32 = 4;
-pub const FUTEX_WAKE_OP: u32 = 5;
-pub const FUTEX_LOCK_PI: u32 = 6;
-pub const FUTEX_UNLOCK_PI: u32 = 7;
-pub const FUTEX_TRYLOCK_PI: u32 = 8;
-pub const FUTEX_WAIT_BITSET: u32 = 9;
-pub const FUTEX_WAKE_BITSET: u32 = 10;
-pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11;
-pub const FUTEX_CMP_REQUEUE_PI: u32 = 12;
-pub const FUTEX_LOCK_PI2: u32 = 13;
-pub const FUTEX_PRIVATE_FLAG: u32 = 128;
-pub const FUTEX_CLOCK_REALTIME: u32 = 256;
-pub const FUTEX_CMD_MASK: i32 = -385;
-pub const FUTEX_WAIT_PRIVATE: u32 = 128;
-pub const FUTEX_WAKE_PRIVATE: u32 = 129;
-pub const FUTEX_REQUEUE_PRIVATE: u32 = 131;
-pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132;
-pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133;
-pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134;
-pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141;
-pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135;
-pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136;
-pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137;
-pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138;
-pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139;
-pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140;
-pub const FUTEX_32: u32 = 2;
-pub const FUTEX_WAITV_MAX: u32 = 128;
-pub const FUTEX_WAITERS: u32 = 2147483648;
-pub const FUTEX_OWNER_DIED: u32 = 1073741824;
-pub const FUTEX_TID_MASK: u32 = 1073741823;
-pub const ROBUST_LIST_LIMIT: u32 = 2048;
-pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295;
-pub const FUTEX_OP_SET: u32 = 0;
-pub const FUTEX_OP_ADD: u32 = 1;
-pub const FUTEX_OP_OR: u32 = 2;
-pub const FUTEX_OP_ANDN: u32 = 3;
-pub const FUTEX_OP_XOR: u32 = 4;
-pub const FUTEX_OP_OPARG_SHIFT: u32 = 8;
-pub const FUTEX_OP_CMP_EQ: u32 = 0;
-pub const FUTEX_OP_CMP_NE: u32 = 1;
-pub const FUTEX_OP_CMP_LT: u32 = 2;
-pub const FUTEX_OP_CMP_LE: u32 = 3;
-pub const FUTEX_OP_CMP_GT: u32 = 4;
-pub const FUTEX_OP_CMP_GE: u32 = 5;
-pub const __UAPI_DEF_IF_IFCONF: u32 = 1;
-pub const __UAPI_DEF_IF_IFMAP: u32 = 1;
-pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1;
-pub const __UAPI_DEF_IF_IFREQ: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1;
-pub const __UAPI_DEF_IN_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN_IPPROTO: u32 = 1;
-pub const __UAPI_DEF_IN_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP_MREQ: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1;
-pub const __UAPI_DEF_IN_CLASS: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1;
-pub const __UAPI_DEF_IPV6_MREQ: u32 = 1;
-pub const __UAPI_DEF_IPPROTO_V6: u32 = 1;
-pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1;
-pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1;
-pub const __UAPI_DEF_XATTR: u32 = 1;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const IP_TOS: u32 = 1;
-pub const IP_TTL: u32 = 2;
-pub const IP_HDRINCL: u32 = 3;
-pub const IP_OPTIONS: u32 = 4;
-pub const IP_ROUTER_ALERT: u32 = 5;
-pub const IP_RECVOPTS: u32 = 6;
-pub const IP_RETOPTS: u32 = 7;
-pub const IP_PKTINFO: u32 = 8;
-pub const IP_PKTOPTIONS: u32 = 9;
-pub const IP_MTU_DISCOVER: u32 = 10;
-pub const IP_RECVERR: u32 = 11;
-pub const IP_RECVTTL: u32 = 12;
-pub const IP_RECVTOS: u32 = 13;
-pub const IP_MTU: u32 = 14;
-pub const IP_FREEBIND: u32 = 15;
-pub const IP_IPSEC_POLICY: u32 = 16;
-pub const IP_XFRM_POLICY: u32 = 17;
-pub const IP_PASSSEC: u32 = 18;
-pub const IP_TRANSPARENT: u32 = 19;
-pub const IP_RECVRETOPTS: u32 = 7;
-pub const IP_ORIGDSTADDR: u32 = 20;
-pub const IP_RECVORIGDSTADDR: u32 = 20;
-pub const IP_MINTTL: u32 = 21;
-pub const IP_NODEFRAG: u32 = 22;
-pub const IP_CHECKSUM: u32 = 23;
-pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24;
-pub const IP_RECVFRAGSIZE: u32 = 25;
-pub const IP_RECVERR_RFC4884: u32 = 26;
-pub const IP_PMTUDISC_DONT: u32 = 0;
-pub const IP_PMTUDISC_WANT: u32 = 1;
-pub const IP_PMTUDISC_DO: u32 = 2;
-pub const IP_PMTUDISC_PROBE: u32 = 3;
-pub const IP_PMTUDISC_INTERFACE: u32 = 4;
-pub const IP_PMTUDISC_OMIT: u32 = 5;
-pub const IP_MULTICAST_IF: u32 = 32;
-pub const IP_MULTICAST_TTL: u32 = 33;
-pub const IP_MULTICAST_LOOP: u32 = 34;
-pub const IP_ADD_MEMBERSHIP: u32 = 35;
-pub const IP_DROP_MEMBERSHIP: u32 = 36;
-pub const IP_UNBLOCK_SOURCE: u32 = 37;
-pub const IP_BLOCK_SOURCE: u32 = 38;
-pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39;
-pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40;
-pub const IP_MSFILTER: u32 = 41;
-pub const MCAST_JOIN_GROUP: u32 = 42;
-pub const MCAST_BLOCK_SOURCE: u32 = 43;
-pub const MCAST_UNBLOCK_SOURCE: u32 = 44;
-pub const MCAST_LEAVE_GROUP: u32 = 45;
-pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46;
-pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47;
-pub const MCAST_MSFILTER: u32 = 48;
-pub const IP_MULTICAST_ALL: u32 = 49;
-pub const IP_UNICAST_IF: u32 = 50;
-pub const MCAST_EXCLUDE: u32 = 0;
-pub const MCAST_INCLUDE: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1;
-pub const __SOCK_SIZE__: u32 = 16;
-pub const IN_CLASSA_NET: u32 = 4278190080;
-pub const IN_CLASSA_NSHIFT: u32 = 24;
-pub const IN_CLASSA_HOST: u32 = 16777215;
-pub const IN_CLASSA_MAX: u32 = 128;
-pub const IN_CLASSB_NET: u32 = 4294901760;
-pub const IN_CLASSB_NSHIFT: u32 = 16;
-pub const IN_CLASSB_HOST: u32 = 65535;
-pub const IN_CLASSB_MAX: u32 = 65536;
-pub const IN_CLASSC_NET: u32 = 4294967040;
-pub const IN_CLASSC_NSHIFT: u32 = 8;
-pub const IN_CLASSC_HOST: u32 = 255;
-pub const IN_MULTICAST_NET: u32 = 3758096384;
-pub const IN_CLASSE_NET: u32 = 4294967295;
-pub const IN_CLASSE_NSHIFT: u32 = 0;
-pub const IN_LOOPBACKNET: u32 = 127;
-pub const INADDR_LOOPBACK: u32 = 2130706433;
-pub const INADDR_UNSPEC_GROUP: u32 = 3758096384;
-pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385;
-pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386;
-pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490;
-pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639;
-pub const __LITTLE_ENDIAN: u32 = 1234;
-pub const IN_ACCESS: u32 = 1;
-pub const IN_MODIFY: u32 = 2;
-pub const IN_ATTRIB: u32 = 4;
-pub const IN_CLOSE_WRITE: u32 = 8;
-pub const IN_CLOSE_NOWRITE: u32 = 16;
-pub const IN_OPEN: u32 = 32;
-pub const IN_MOVED_FROM: u32 = 64;
-pub const IN_MOVED_TO: u32 = 128;
-pub const IN_CREATE: u32 = 256;
-pub const IN_DELETE: u32 = 512;
-pub const IN_DELETE_SELF: u32 = 1024;
-pub const IN_MOVE_SELF: u32 = 2048;
-pub const IN_UNMOUNT: u32 = 8192;
-pub const IN_Q_OVERFLOW: u32 = 16384;
-pub const IN_IGNORED: u32 = 32768;
-pub const IN_CLOSE: u32 = 24;
-pub const IN_MOVE: u32 = 192;
-pub const IN_ONLYDIR: u32 = 16777216;
-pub const IN_DONT_FOLLOW: u32 = 33554432;
-pub const IN_EXCL_UNLINK: u32 = 67108864;
-pub const IN_MASK_CREATE: u32 = 268435456;
-pub const IN_MASK_ADD: u32 = 536870912;
-pub const IN_ISDIR: u32 = 1073741824;
-pub const IN_ONESHOT: u32 = 2147483648;
-pub const IN_ALL_EVENTS: u32 = 4095;
-pub const IN_CLOEXEC: u32 = 524288;
-pub const IN_NONBLOCK: u32 = 2048;
-pub const IPTOS_TOS_MASK: u32 = 30;
-pub const IPTOS_LOWDELAY: u32 = 16;
-pub const IPTOS_THROUGHPUT: u32 = 8;
-pub const IPTOS_RELIABILITY: u32 = 4;
-pub const IPTOS_MINCOST: u32 = 2;
-pub const IPTOS_PREC_MASK: u32 = 224;
-pub const IPTOS_PREC_NETCONTROL: u32 = 224;
-pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192;
-pub const IPTOS_PREC_CRITIC_ECP: u32 = 160;
-pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128;
-pub const IPTOS_PREC_FLASH: u32 = 96;
-pub const IPTOS_PREC_IMMEDIATE: u32 = 64;
-pub const IPTOS_PREC_PRIORITY: u32 = 32;
-pub const IPTOS_PREC_ROUTINE: u32 = 0;
-pub const IPOPT_COPY: u32 = 128;
-pub const IPOPT_CLASS_MASK: u32 = 96;
-pub const IPOPT_NUMBER_MASK: u32 = 31;
-pub const IPOPT_CONTROL: u32 = 0;
-pub const IPOPT_RESERVED1: u32 = 32;
-pub const IPOPT_MEASUREMENT: u32 = 64;
-pub const IPOPT_RESERVED2: u32 = 96;
-pub const IPOPT_END: u32 = 0;
-pub const IPOPT_NOOP: u32 = 1;
-pub const IPOPT_SEC: u32 = 130;
-pub const IPOPT_LSRR: u32 = 131;
-pub const IPOPT_TIMESTAMP: u32 = 68;
-pub const IPOPT_CIPSO: u32 = 134;
-pub const IPOPT_RR: u32 = 7;
-pub const IPOPT_SID: u32 = 136;
-pub const IPOPT_SSRR: u32 = 137;
-pub const IPOPT_RA: u32 = 148;
-pub const IPVERSION: u32 = 4;
-pub const MAXTTL: u32 = 255;
-pub const IPDEFTTL: u32 = 64;
-pub const IPOPT_OPTVAL: u32 = 0;
-pub const IPOPT_OLEN: u32 = 1;
-pub const IPOPT_OFFSET: u32 = 2;
-pub const IPOPT_MINOFF: u32 = 4;
-pub const MAX_IPOPTLEN: u32 = 40;
-pub const IPOPT_NOP: u32 = 1;
-pub const IPOPT_EOL: u32 = 0;
-pub const IPOPT_TS: u32 = 68;
-pub const IPOPT_TS_TSONLY: u32 = 0;
-pub const IPOPT_TS_TSANDADDR: u32 = 1;
-pub const IPOPT_TS_PRESPEC: u32 = 3;
-pub const IPV4_BEET_PHMAXLEN: u32 = 8;
-pub const IPV6_FL_A_GET: u32 = 0;
-pub const IPV6_FL_A_PUT: u32 = 1;
-pub const IPV6_FL_A_RENEW: u32 = 2;
-pub const IPV6_FL_F_CREATE: u32 = 1;
-pub const IPV6_FL_F_EXCL: u32 = 2;
-pub const IPV6_FL_F_REFLECT: u32 = 4;
-pub const IPV6_FL_F_REMOTE: u32 = 8;
-pub const IPV6_FL_S_NONE: u32 = 0;
-pub const IPV6_FL_S_EXCL: u32 = 1;
-pub const IPV6_FL_S_PROCESS: u32 = 2;
-pub const IPV6_FL_S_USER: u32 = 3;
-pub const IPV6_FL_S_ANY: u32 = 255;
-pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575;
-pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880;
-pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0;
-pub const IPV6_PRIORITY_FILLER: u32 = 256;
-pub const IPV6_PRIORITY_UNATTENDED: u32 = 512;
-pub const IPV6_PRIORITY_RESERVED1: u32 = 768;
-pub const IPV6_PRIORITY_BULK: u32 = 1024;
-pub const IPV6_PRIORITY_RESERVED2: u32 = 1280;
-pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536;
-pub const IPV6_PRIORITY_CONTROL: u32 = 1792;
-pub const IPV6_PRIORITY_8: u32 = 2048;
-pub const IPV6_PRIORITY_9: u32 = 2304;
-pub const IPV6_PRIORITY_10: u32 = 2560;
-pub const IPV6_PRIORITY_11: u32 = 2816;
-pub const IPV6_PRIORITY_12: u32 = 3072;
-pub const IPV6_PRIORITY_13: u32 = 3328;
-pub const IPV6_PRIORITY_14: u32 = 3584;
-pub const IPV6_PRIORITY_15: u32 = 3840;
-pub const IPPROTO_HOPOPTS: u32 = 0;
-pub const IPPROTO_ROUTING: u32 = 43;
-pub const IPPROTO_FRAGMENT: u32 = 44;
-pub const IPPROTO_ICMPV6: u32 = 58;
-pub const IPPROTO_NONE: u32 = 59;
-pub const IPPROTO_DSTOPTS: u32 = 60;
-pub const IPPROTO_MH: u32 = 135;
-pub const IPV6_TLV_PAD1: u32 = 0;
-pub const IPV6_TLV_PADN: u32 = 1;
-pub const IPV6_TLV_ROUTERALERT: u32 = 5;
-pub const IPV6_TLV_CALIPSO: u32 = 7;
-pub const IPV6_TLV_IOAM: u32 = 49;
-pub const IPV6_TLV_JUMBO: u32 = 194;
-pub const IPV6_TLV_HAO: u32 = 201;
-pub const IPV6_ADDRFORM: u32 = 1;
-pub const IPV6_2292PKTINFO: u32 = 2;
-pub const IPV6_2292HOPOPTS: u32 = 3;
-pub const IPV6_2292DSTOPTS: u32 = 4;
-pub const IPV6_2292RTHDR: u32 = 5;
-pub const IPV6_2292PKTOPTIONS: u32 = 6;
-pub const IPV6_CHECKSUM: u32 = 7;
-pub const IPV6_2292HOPLIMIT: u32 = 8;
-pub const IPV6_NEXTHOP: u32 = 9;
-pub const IPV6_AUTHHDR: u32 = 10;
-pub const IPV6_FLOWINFO: u32 = 11;
-pub const IPV6_UNICAST_HOPS: u32 = 16;
-pub const IPV6_MULTICAST_IF: u32 = 17;
-pub const IPV6_MULTICAST_HOPS: u32 = 18;
-pub const IPV6_MULTICAST_LOOP: u32 = 19;
-pub const IPV6_ADD_MEMBERSHIP: u32 = 20;
-pub const IPV6_DROP_MEMBERSHIP: u32 = 21;
-pub const IPV6_ROUTER_ALERT: u32 = 22;
-pub const IPV6_MTU_DISCOVER: u32 = 23;
-pub const IPV6_MTU: u32 = 24;
-pub const IPV6_RECVERR: u32 = 25;
-pub const IPV6_V6ONLY: u32 = 26;
-pub const IPV6_JOIN_ANYCAST: u32 = 27;
-pub const IPV6_LEAVE_ANYCAST: u32 = 28;
-pub const IPV6_MULTICAST_ALL: u32 = 29;
-pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30;
-pub const IPV6_RECVERR_RFC4884: u32 = 31;
-pub const IPV6_PMTUDISC_DONT: u32 = 0;
-pub const IPV6_PMTUDISC_WANT: u32 = 1;
-pub const IPV6_PMTUDISC_DO: u32 = 2;
-pub const IPV6_PMTUDISC_PROBE: u32 = 3;
-pub const IPV6_PMTUDISC_INTERFACE: u32 = 4;
-pub const IPV6_PMTUDISC_OMIT: u32 = 5;
-pub const IPV6_FLOWLABEL_MGR: u32 = 32;
-pub const IPV6_FLOWINFO_SEND: u32 = 33;
-pub const IPV6_IPSEC_POLICY: u32 = 34;
-pub const IPV6_XFRM_POLICY: u32 = 35;
-pub const IPV6_HDRINCL: u32 = 36;
-pub const IPV6_RECVPKTINFO: u32 = 49;
-pub const IPV6_PKTINFO: u32 = 50;
-pub const IPV6_RECVHOPLIMIT: u32 = 51;
-pub const IPV6_HOPLIMIT: u32 = 52;
-pub const IPV6_RECVHOPOPTS: u32 = 53;
-pub const IPV6_HOPOPTS: u32 = 54;
-pub const IPV6_RTHDRDSTOPTS: u32 = 55;
-pub const IPV6_RECVRTHDR: u32 = 56;
-pub const IPV6_RTHDR: u32 = 57;
-pub const IPV6_RECVDSTOPTS: u32 = 58;
-pub const IPV6_DSTOPTS: u32 = 59;
-pub const IPV6_RECVPATHMTU: u32 = 60;
-pub const IPV6_PATHMTU: u32 = 61;
-pub const IPV6_DONTFRAG: u32 = 62;
-pub const IPV6_RECVTCLASS: u32 = 66;
-pub const IPV6_TCLASS: u32 = 67;
-pub const IPV6_AUTOFLOWLABEL: u32 = 70;
-pub const IPV6_ADDR_PREFERENCES: u32 = 72;
-pub const IPV6_PREFER_SRC_TMP: u32 = 1;
-pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2;
-pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256;
-pub const IPV6_PREFER_SRC_COA: u32 = 4;
-pub const IPV6_PREFER_SRC_HOME: u32 = 1024;
-pub const IPV6_PREFER_SRC_CGA: u32 = 8;
-pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048;
-pub const IPV6_MINHOPCOUNT: u32 = 73;
-pub const IPV6_ORIGDSTADDR: u32 = 74;
-pub const IPV6_RECVORIGDSTADDR: u32 = 74;
-pub const IPV6_TRANSPARENT: u32 = 75;
-pub const IPV6_UNICAST_IF: u32 = 76;
-pub const IPV6_RECVFRAGSIZE: u32 = 77;
-pub const IPV6_FREEBIND: u32 = 78;
-pub const IPV6_MIN_MTU: u32 = 1280;
-pub const IPV6_SRCRT_STRICT: u32 = 1;
-pub const IPV6_SRCRT_TYPE_0: u32 = 0;
-pub const IPV6_SRCRT_TYPE_2: u32 = 2;
-pub const IPV6_SRCRT_TYPE_3: u32 = 3;
-pub const IPV6_SRCRT_TYPE_4: u32 = 4;
-pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0;
-pub const ADFS_SUPER_MAGIC: u32 = 44533;
-pub const AFFS_SUPER_MAGIC: u32 = 44543;
-pub const AFS_SUPER_MAGIC: u32 = 1397113167;
-pub const AUTOFS_SUPER_MAGIC: u32 = 391;
-pub const CEPH_SUPER_MAGIC: u32 = 12805120;
-pub const CODA_SUPER_MAGIC: u32 = 1937076805;
-pub const CRAMFS_MAGIC: u32 = 684539205;
-pub const CRAMFS_MAGIC_WEND: u32 = 1161678120;
-pub const DEBUGFS_MAGIC: u32 = 1684170528;
-pub const SECURITYFS_MAGIC: u32 = 1935894131;
-pub const SELINUX_MAGIC: u32 = 4185718668;
-pub const SMACK_MAGIC: u32 = 1128357203;
-pub const RAMFS_MAGIC: u32 = 2240043254;
-pub const TMPFS_MAGIC: u32 = 16914836;
-pub const HUGETLBFS_MAGIC: u32 = 2508478710;
-pub const SQUASHFS_MAGIC: u32 = 1936814952;
-pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791;
-pub const EFS_SUPER_MAGIC: u32 = 4278867;
-pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530;
-pub const EXT2_SUPER_MAGIC: u32 = 61267;
-pub const EXT3_SUPER_MAGIC: u32 = 61267;
-pub const XENFS_SUPER_MAGIC: u32 = 2881100148;
-pub const EXT4_SUPER_MAGIC: u32 = 61267;
-pub const BTRFS_SUPER_MAGIC: u32 = 2435016766;
-pub const NILFS_SUPER_MAGIC: u32 = 13364;
-pub const F2FS_SUPER_MAGIC: u32 = 4076150800;
-pub const HPFS_SUPER_MAGIC: u32 = 4187351113;
-pub const ISOFS_SUPER_MAGIC: u32 = 38496;
-pub const JFFS2_SUPER_MAGIC: u32 = 29366;
-pub const XFS_SUPER_MAGIC: u32 = 1481003842;
-pub const PSTOREFS_MAGIC: u32 = 1634035564;
-pub const EFIVARFS_MAGIC: u32 = 3730735588;
-pub const HOSTFS_SUPER_MAGIC: u32 = 12648430;
-pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128;
-pub const FUSE_SUPER_MAGIC: u32 = 1702057286;
-pub const MINIX_SUPER_MAGIC: u32 = 4991;
-pub const MINIX_SUPER_MAGIC2: u32 = 5007;
-pub const MINIX2_SUPER_MAGIC: u32 = 9320;
-pub const MINIX2_SUPER_MAGIC2: u32 = 9336;
-pub const MINIX3_SUPER_MAGIC: u32 = 19802;
-pub const MSDOS_SUPER_MAGIC: u32 = 19780;
-pub const EXFAT_SUPER_MAGIC: u32 = 538032816;
-pub const NCP_SUPER_MAGIC: u32 = 22092;
-pub const NFS_SUPER_MAGIC: u32 = 26985;
-pub const OCFS2_SUPER_MAGIC: u32 = 1952539503;
-pub const OPENPROM_SUPER_MAGIC: u32 = 40865;
-pub const QNX4_SUPER_MAGIC: u32 = 47;
-pub const QNX6_SUPER_MAGIC: u32 = 1746473250;
-pub const AFS_FS_MAGIC: u32 = 1799439955;
-pub const REISERFS_SUPER_MAGIC: u32 = 1382369651;
-pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0";
-pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0";
-pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0";
-pub const SMB_SUPER_MAGIC: u32 = 20859;
-pub const CIFS_SUPER_MAGIC: u32 = 4283649346;
-pub const SMB2_SUPER_MAGIC: u32 = 4266872130;
-pub const CGROUP_SUPER_MAGIC: u32 = 2613483;
-pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888;
-pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209;
-pub const STACK_END_MAGIC: u32 = 1470918301;
-pub const TRACEFS_MAGIC: u32 = 1953653091;
-pub const V9FS_MAGIC: u32 = 16914839;
-pub const BDEVFS_MAGIC: u32 = 1650746742;
-pub const DAXFS_MAGIC: u32 = 1684300152;
-pub const BINFMTFS_MAGIC: u32 = 1112100429;
-pub const DEVPTS_SUPER_MAGIC: u32 = 7377;
-pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352;
-pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762;
-pub const PIPEFS_MAGIC: u32 = 1346981957;
-pub const PROC_SUPER_MAGIC: u32 = 40864;
-pub const SOCKFS_MAGIC: u32 = 1397703499;
-pub const SYSFS_MAGIC: u32 = 1650812274;
-pub const USBDEVICE_SUPER_MAGIC: u32 = 40866;
-pub const MTD_INODE_FS_MAGIC: u32 = 288389204;
-pub const ANON_INODE_FS_MAGIC: u32 = 151263540;
-pub const BTRFS_TEST_MAGIC: u32 = 1936880249;
-pub const NSFS_MAGIC: u32 = 1853056627;
-pub const BPF_FS_MAGIC: u32 = 3405662737;
-pub const AAFS_MAGIC: u32 = 1513908720;
-pub const ZONEFS_MAGIC: u32 = 1515144787;
-pub const UDF_SUPER_MAGIC: u32 = 352400198;
-pub const DMA_BUF_MAGIC: u32 = 1145913666;
-pub const DEVMEM_MAGIC: u32 = 1162691661;
-pub const SECRETMEM_MAGIC: u32 = 1397048141;
-pub const PROT_READ: u32 = 1;
-pub const PROT_WRITE: u32 = 2;
-pub const PROT_EXEC: u32 = 4;
-pub const PROT_SEM: u32 = 8;
-pub const PROT_NONE: u32 = 0;
-pub const PROT_GROWSDOWN: u32 = 16777216;
-pub const PROT_GROWSUP: u32 = 33554432;
-pub const MAP_TYPE: u32 = 15;
-pub const MAP_FIXED: u32 = 16;
-pub const MAP_ANONYMOUS: u32 = 32;
-pub const MAP_POPULATE: u32 = 32768;
-pub const MAP_NONBLOCK: u32 = 65536;
-pub const MAP_STACK: u32 = 131072;
-pub const MAP_HUGETLB: u32 = 262144;
-pub const MAP_SYNC: u32 = 524288;
-pub const MAP_FIXED_NOREPLACE: u32 = 1048576;
-pub const MAP_UNINITIALIZED: u32 = 67108864;
-pub const MLOCK_ONFAULT: u32 = 1;
-pub const MS_ASYNC: u32 = 1;
-pub const MS_INVALIDATE: u32 = 2;
-pub const MS_SYNC: u32 = 4;
-pub const MADV_NORMAL: u32 = 0;
-pub const MADV_RANDOM: u32 = 1;
-pub const MADV_SEQUENTIAL: u32 = 2;
-pub const MADV_WILLNEED: u32 = 3;
-pub const MADV_DONTNEED: u32 = 4;
-pub const MADV_FREE: u32 = 8;
-pub const MADV_REMOVE: u32 = 9;
-pub const MADV_DONTFORK: u32 = 10;
-pub const MADV_DOFORK: u32 = 11;
-pub const MADV_HWPOISON: u32 = 100;
-pub const MADV_SOFT_OFFLINE: u32 = 101;
-pub const MADV_MERGEABLE: u32 = 12;
-pub const MADV_UNMERGEABLE: u32 = 13;
-pub const MADV_HUGEPAGE: u32 = 14;
-pub const MADV_NOHUGEPAGE: u32 = 15;
-pub const MADV_DONTDUMP: u32 = 16;
-pub const MADV_DODUMP: u32 = 17;
-pub const MADV_WIPEONFORK: u32 = 18;
-pub const MADV_KEEPONFORK: u32 = 19;
-pub const MADV_COLD: u32 = 20;
-pub const MADV_PAGEOUT: u32 = 21;
-pub const MADV_POPULATE_READ: u32 = 22;
-pub const MADV_POPULATE_WRITE: u32 = 23;
-pub const MADV_DONTNEED_LOCKED: u32 = 24;
-pub const MADV_COLLAPSE: u32 = 25;
-pub const MAP_FILE: u32 = 0;
-pub const PKEY_DISABLE_ACCESS: u32 = 1;
-pub const PKEY_DISABLE_WRITE: u32 = 2;
-pub const PKEY_ACCESS_MASK: u32 = 3;
-pub const MAP_GROWSDOWN: u32 = 256;
-pub const MAP_DENYWRITE: u32 = 2048;
-pub const MAP_EXECUTABLE: u32 = 4096;
-pub const MAP_LOCKED: u32 = 8192;
-pub const MAP_NORESERVE: u32 = 16384;
-pub const MCL_CURRENT: u32 = 1;
-pub const MCL_FUTURE: u32 = 2;
-pub const MCL_ONFAULT: u32 = 4;
-pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26;
-pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63;
-pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096;
-pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824;
-pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416;
-pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280;
-pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144;
-pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872;
-pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736;
-pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600;
-pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192;
-pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056;
-pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920;
-pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784;
-pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376;
-pub const MREMAP_MAYMOVE: u32 = 1;
-pub const MREMAP_FIXED: u32 = 2;
-pub const MREMAP_DONTUNMAP: u32 = 4;
-pub const OVERCOMMIT_GUESS: u32 = 0;
-pub const OVERCOMMIT_ALWAYS: u32 = 1;
-pub const OVERCOMMIT_NEVER: u32 = 2;
-pub const MAP_SHARED: u32 = 1;
-pub const MAP_PRIVATE: u32 = 2;
-pub const MAP_SHARED_VALIDATE: u32 = 3;
-pub const MAP_HUGE_SHIFT: u32 = 26;
-pub const MAP_HUGE_MASK: u32 = 63;
-pub const MAP_HUGE_16KB: u32 = 939524096;
-pub const MAP_HUGE_64KB: u32 = 1073741824;
-pub const MAP_HUGE_512KB: u32 = 1275068416;
-pub const MAP_HUGE_1MB: u32 = 1342177280;
-pub const MAP_HUGE_2MB: u32 = 1409286144;
-pub const MAP_HUGE_8MB: u32 = 1543503872;
-pub const MAP_HUGE_16MB: u32 = 1610612736;
-pub const MAP_HUGE_32MB: u32 = 1677721600;
-pub const MAP_HUGE_256MB: u32 = 1879048192;
-pub const MAP_HUGE_512MB: u32 = 1946157056;
-pub const MAP_HUGE_1GB: u32 = 2013265920;
-pub const MAP_HUGE_2GB: u32 = 2080374784;
-pub const MAP_HUGE_16GB: u32 = 2281701376;
-pub const SIOCGSTAMP_OLD: u32 = 35078;
-pub const SIOCGSTAMPNS_OLD: u32 = 35079;
-pub const SOL_SOCKET: u32 = 1;
-pub const SO_DEBUG: u32 = 1;
-pub const SO_REUSEADDR: u32 = 2;
-pub const SO_TYPE: u32 = 3;
-pub const SO_ERROR: u32 = 4;
-pub const SO_DONTROUTE: u32 = 5;
-pub const SO_BROADCAST: u32 = 6;
-pub const SO_SNDBUF: u32 = 7;
-pub const SO_RCVBUF: u32 = 8;
-pub const SO_SNDBUFFORCE: u32 = 32;
-pub const SO_RCVBUFFORCE: u32 = 33;
-pub const SO_KEEPALIVE: u32 = 9;
-pub const SO_OOBINLINE: u32 = 10;
-pub const SO_NO_CHECK: u32 = 11;
-pub const SO_PRIORITY: u32 = 12;
-pub const SO_LINGER: u32 = 13;
-pub const SO_BSDCOMPAT: u32 = 14;
-pub const SO_REUSEPORT: u32 = 15;
-pub const SO_PASSCRED: u32 = 16;
-pub const SO_PEERCRED: u32 = 17;
-pub const SO_RCVLOWAT: u32 = 18;
-pub const SO_SNDLOWAT: u32 = 19;
-pub const SO_RCVTIMEO_OLD: u32 = 20;
-pub const SO_SNDTIMEO_OLD: u32 = 21;
-pub const SO_SECURITY_AUTHENTICATION: u32 = 22;
-pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23;
-pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24;
-pub const SO_BINDTODEVICE: u32 = 25;
-pub const SO_ATTACH_FILTER: u32 = 26;
-pub const SO_DETACH_FILTER: u32 = 27;
-pub const SO_GET_FILTER: u32 = 26;
-pub const SO_PEERNAME: u32 = 28;
-pub const SO_ACCEPTCONN: u32 = 30;
-pub const SO_PEERSEC: u32 = 31;
-pub const SO_PASSSEC: u32 = 34;
-pub const SO_MARK: u32 = 36;
-pub const SO_PROTOCOL: u32 = 38;
-pub const SO_DOMAIN: u32 = 39;
-pub const SO_RXQ_OVFL: u32 = 40;
-pub const SO_WIFI_STATUS: u32 = 41;
-pub const SCM_WIFI_STATUS: u32 = 41;
-pub const SO_PEEK_OFF: u32 = 42;
-pub const SO_NOFCS: u32 = 43;
-pub const SO_LOCK_FILTER: u32 = 44;
-pub const SO_SELECT_ERR_QUEUE: u32 = 45;
-pub const SO_BUSY_POLL: u32 = 46;
-pub const SO_MAX_PACING_RATE: u32 = 47;
-pub const SO_BPF_EXTENSIONS: u32 = 48;
-pub const SO_INCOMING_CPU: u32 = 49;
-pub const SO_ATTACH_BPF: u32 = 50;
-pub const SO_DETACH_BPF: u32 = 27;
-pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51;
-pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52;
-pub const SO_CNX_ADVICE: u32 = 53;
-pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54;
-pub const SO_MEMINFO: u32 = 55;
-pub const SO_INCOMING_NAPI_ID: u32 = 56;
-pub const SO_COOKIE: u32 = 57;
-pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58;
-pub const SO_PEERGROUPS: u32 = 59;
-pub const SO_ZEROCOPY: u32 = 60;
-pub const SO_TXTIME: u32 = 61;
-pub const SCM_TXTIME: u32 = 61;
-pub const SO_BINDTOIFINDEX: u32 = 62;
-pub const SO_TIMESTAMP_OLD: u32 = 29;
-pub const SO_TIMESTAMPNS_OLD: u32 = 35;
-pub const SO_TIMESTAMPING_OLD: u32 = 37;
-pub const SO_TIMESTAMP_NEW: u32 = 63;
-pub const SO_TIMESTAMPNS_NEW: u32 = 64;
-pub const SO_TIMESTAMPING_NEW: u32 = 65;
-pub const SO_RCVTIMEO_NEW: u32 = 66;
-pub const SO_SNDTIMEO_NEW: u32 = 67;
-pub const SO_DETACH_REUSEPORT_BPF: u32 = 68;
-pub const SO_PREFER_BUSY_POLL: u32 = 69;
-pub const SO_BUSY_POLL_BUDGET: u32 = 70;
-pub const SO_NETNS_COOKIE: u32 = 71;
-pub const SO_BUF_LOCK: u32 = 72;
-pub const SO_RESERVE_MEM: u32 = 73;
-pub const SO_TXREHASH: u32 = 74;
-pub const SO_RCVMARK: u32 = 75;
-pub const SO_TIMESTAMP: u32 = 29;
-pub const SO_TIMESTAMPNS: u32 = 35;
-pub const SO_TIMESTAMPING: u32 = 37;
-pub const SO_RCVTIMEO: u32 = 20;
-pub const SO_SNDTIMEO: u32 = 21;
-pub const SCM_TIMESTAMP: u32 = 29;
-pub const SCM_TIMESTAMPNS: u32 = 35;
-pub const SCM_TIMESTAMPING: u32 = 37;
-pub const SYS_SOCKET: u32 = 1;
-pub const SYS_BIND: u32 = 2;
-pub const SYS_CONNECT: u32 = 3;
-pub const SYS_LISTEN: u32 = 4;
-pub const SYS_ACCEPT: u32 = 5;
-pub const SYS_GETSOCKNAME: u32 = 6;
-pub const SYS_GETPEERNAME: u32 = 7;
-pub const SYS_SOCKETPAIR: u32 = 8;
-pub const SYS_SEND: u32 = 9;
-pub const SYS_RECV: u32 = 10;
-pub const SYS_SENDTO: u32 = 11;
-pub const SYS_RECVFROM: u32 = 12;
-pub const SYS_SHUTDOWN: u32 = 13;
-pub const SYS_SETSOCKOPT: u32 = 14;
-pub const SYS_GETSOCKOPT: u32 = 15;
-pub const SYS_SENDMSG: u32 = 16;
-pub const SYS_RECVMSG: u32 = 17;
-pub const SYS_ACCEPT4: u32 = 18;
-pub const SYS_RECVMMSG: u32 = 19;
-pub const SYS_SENDMMSG: u32 = 20;
-pub const __SO_ACCEPTCON: u32 = 65536;
-pub const POLLIN: u32 = 1;
-pub const POLLPRI: u32 = 2;
-pub const POLLOUT: u32 = 4;
-pub const POLLERR: u32 = 8;
-pub const POLLHUP: u32 = 16;
-pub const POLLNVAL: u32 = 32;
-pub const POLLRDNORM: u32 = 64;
-pub const POLLRDBAND: u32 = 128;
-pub const POLLWRNORM: u32 = 256;
-pub const POLLWRBAND: u32 = 512;
-pub const POLLMSG: u32 = 1024;
-pub const POLLREMOVE: u32 = 4096;
-pub const POLLRDHUP: u32 = 8192;
-pub const PR_SET_PDEATHSIG: u32 = 1;
-pub const PR_GET_PDEATHSIG: u32 = 2;
-pub const PR_GET_DUMPABLE: u32 = 3;
-pub const PR_SET_DUMPABLE: u32 = 4;
-pub const PR_GET_UNALIGN: u32 = 5;
-pub const PR_SET_UNALIGN: u32 = 6;
-pub const PR_UNALIGN_NOPRINT: u32 = 1;
-pub const PR_UNALIGN_SIGBUS: u32 = 2;
-pub const PR_GET_KEEPCAPS: u32 = 7;
-pub const PR_SET_KEEPCAPS: u32 = 8;
-pub const PR_GET_FPEMU: u32 = 9;
-pub const PR_SET_FPEMU: u32 = 10;
-pub const PR_FPEMU_NOPRINT: u32 = 1;
-pub const PR_FPEMU_SIGFPE: u32 = 2;
-pub const PR_GET_FPEXC: u32 = 11;
-pub const PR_SET_FPEXC: u32 = 12;
-pub const PR_FP_EXC_SW_ENABLE: u32 = 128;
-pub const PR_FP_EXC_DIV: u32 = 65536;
-pub const PR_FP_EXC_OVF: u32 = 131072;
-pub const PR_FP_EXC_UND: u32 = 262144;
-pub const PR_FP_EXC_RES: u32 = 524288;
-pub const PR_FP_EXC_INV: u32 = 1048576;
-pub const PR_FP_EXC_DISABLED: u32 = 0;
-pub const PR_FP_EXC_NONRECOV: u32 = 1;
-pub const PR_FP_EXC_ASYNC: u32 = 2;
-pub const PR_FP_EXC_PRECISE: u32 = 3;
-pub const PR_GET_TIMING: u32 = 13;
-pub const PR_SET_TIMING: u32 = 14;
-pub const PR_TIMING_STATISTICAL: u32 = 0;
-pub const PR_TIMING_TIMESTAMP: u32 = 1;
-pub const PR_SET_NAME: u32 = 15;
-pub const PR_GET_NAME: u32 = 16;
-pub const PR_GET_ENDIAN: u32 = 19;
-pub const PR_SET_ENDIAN: u32 = 20;
-pub const PR_ENDIAN_BIG: u32 = 0;
-pub const PR_ENDIAN_LITTLE: u32 = 1;
-pub const PR_ENDIAN_PPC_LITTLE: u32 = 2;
-pub const PR_GET_SECCOMP: u32 = 21;
-pub const PR_SET_SECCOMP: u32 = 22;
-pub const PR_CAPBSET_READ: u32 = 23;
-pub const PR_CAPBSET_DROP: u32 = 24;
-pub const PR_GET_TSC: u32 = 25;
-pub const PR_SET_TSC: u32 = 26;
-pub const PR_TSC_ENABLE: u32 = 1;
-pub const PR_TSC_SIGSEGV: u32 = 2;
-pub const PR_GET_SECUREBITS: u32 = 27;
-pub const PR_SET_SECUREBITS: u32 = 28;
-pub const PR_SET_TIMERSLACK: u32 = 29;
-pub const PR_GET_TIMERSLACK: u32 = 30;
-pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31;
-pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32;
-pub const PR_MCE_KILL: u32 = 33;
-pub const PR_MCE_KILL_CLEAR: u32 = 0;
-pub const PR_MCE_KILL_SET: u32 = 1;
-pub const PR_MCE_KILL_LATE: u32 = 0;
-pub const PR_MCE_KILL_EARLY: u32 = 1;
-pub const PR_MCE_KILL_DEFAULT: u32 = 2;
-pub const PR_MCE_KILL_GET: u32 = 34;
-pub const PR_SET_MM: u32 = 35;
-pub const PR_SET_MM_START_CODE: u32 = 1;
-pub const PR_SET_MM_END_CODE: u32 = 2;
-pub const PR_SET_MM_START_DATA: u32 = 3;
-pub const PR_SET_MM_END_DATA: u32 = 4;
-pub const PR_SET_MM_START_STACK: u32 = 5;
-pub const PR_SET_MM_START_BRK: u32 = 6;
-pub const PR_SET_MM_BRK: u32 = 7;
-pub const PR_SET_MM_ARG_START: u32 = 8;
-pub const PR_SET_MM_ARG_END: u32 = 9;
-pub const PR_SET_MM_ENV_START: u32 = 10;
-pub const PR_SET_MM_ENV_END: u32 = 11;
-pub const PR_SET_MM_AUXV: u32 = 12;
-pub const PR_SET_MM_EXE_FILE: u32 = 13;
-pub const PR_SET_MM_MAP: u32 = 14;
-pub const PR_SET_MM_MAP_SIZE: u32 = 15;
-pub const PR_SET_PTRACER: u32 = 1499557217;
-pub const PR_SET_CHILD_SUBREAPER: u32 = 36;
-pub const PR_GET_CHILD_SUBREAPER: u32 = 37;
-pub const PR_SET_NO_NEW_PRIVS: u32 = 38;
-pub const PR_GET_NO_NEW_PRIVS: u32 = 39;
-pub const PR_GET_TID_ADDRESS: u32 = 40;
-pub const PR_SET_THP_DISABLE: u32 = 41;
-pub const PR_GET_THP_DISABLE: u32 = 42;
-pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43;
-pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44;
-pub const PR_SET_FP_MODE: u32 = 45;
-pub const PR_GET_FP_MODE: u32 = 46;
-pub const PR_FP_MODE_FR: u32 = 1;
-pub const PR_FP_MODE_FRE: u32 = 2;
-pub const PR_CAP_AMBIENT: u32 = 47;
-pub const PR_CAP_AMBIENT_IS_SET: u32 = 1;
-pub const PR_CAP_AMBIENT_RAISE: u32 = 2;
-pub const PR_CAP_AMBIENT_LOWER: u32 = 3;
-pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4;
-pub const PR_SVE_SET_VL: u32 = 50;
-pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SVE_GET_VL: u32 = 51;
-pub const PR_SVE_VL_LEN_MASK: u32 = 65535;
-pub const PR_SVE_VL_INHERIT: u32 = 131072;
-pub const PR_GET_SPECULATION_CTRL: u32 = 52;
-pub const PR_SET_SPECULATION_CTRL: u32 = 53;
-pub const PR_SPEC_STORE_BYPASS: u32 = 0;
-pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1;
-pub const PR_SPEC_L1D_FLUSH: u32 = 2;
-pub const PR_SPEC_NOT_AFFECTED: u32 = 0;
-pub const PR_SPEC_PRCTL: u32 = 1;
-pub const PR_SPEC_ENABLE: u32 = 2;
-pub const PR_SPEC_DISABLE: u32 = 4;
-pub const PR_SPEC_FORCE_DISABLE: u32 = 8;
-pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16;
-pub const PR_PAC_RESET_KEYS: u32 = 54;
-pub const PR_PAC_APIAKEY: u32 = 1;
-pub const PR_PAC_APIBKEY: u32 = 2;
-pub const PR_PAC_APDAKEY: u32 = 4;
-pub const PR_PAC_APDBKEY: u32 = 8;
-pub const PR_PAC_APGAKEY: u32 = 16;
-pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55;
-pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56;
-pub const PR_TAGGED_ADDR_ENABLE: u32 = 1;
-pub const PR_MTE_TCF_NONE: u32 = 0;
-pub const PR_MTE_TCF_SYNC: u32 = 2;
-pub const PR_MTE_TCF_ASYNC: u32 = 4;
-pub const PR_MTE_TCF_MASK: u32 = 6;
-pub const PR_MTE_TAG_SHIFT: u32 = 3;
-pub const PR_MTE_TAG_MASK: u32 = 524280;
-pub const PR_MTE_TCF_SHIFT: u32 = 1;
-pub const PR_SET_IO_FLUSHER: u32 = 57;
-pub const PR_GET_IO_FLUSHER: u32 = 58;
-pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59;
-pub const PR_SYS_DISPATCH_OFF: u32 = 0;
-pub const PR_SYS_DISPATCH_ON: u32 = 1;
-pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0;
-pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1;
-pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60;
-pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61;
-pub const PR_SCHED_CORE: u32 = 62;
-pub const PR_SCHED_CORE_GET: u32 = 0;
-pub const PR_SCHED_CORE_CREATE: u32 = 1;
-pub const PR_SCHED_CORE_SHARE_TO: u32 = 2;
-pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3;
-pub const PR_SCHED_CORE_MAX: u32 = 4;
-pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0;
-pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1;
-pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2;
-pub const PR_SME_SET_VL: u32 = 63;
-pub const PR_SME_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SME_GET_VL: u32 = 64;
-pub const PR_SME_VL_LEN_MASK: u32 = 65535;
-pub const PR_SME_VL_INHERIT: u32 = 131072;
-pub const PR_SET_VMA: u32 = 1398164801;
-pub const PR_SET_VMA_ANON_NAME: u32 = 0;
-pub const GRND_NONBLOCK: u32 = 1;
-pub const GRND_RANDOM: u32 = 2;
-pub const GRND_INSECURE: u32 = 4;
-pub const ITIMER_REAL: u32 = 0;
-pub const ITIMER_VIRTUAL: u32 = 1;
-pub const ITIMER_PROF: u32 = 2;
-pub const CLOCK_REALTIME: u32 = 0;
-pub const CLOCK_MONOTONIC: u32 = 1;
-pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2;
-pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3;
-pub const CLOCK_MONOTONIC_RAW: u32 = 4;
-pub const CLOCK_REALTIME_COARSE: u32 = 5;
-pub const CLOCK_MONOTONIC_COARSE: u32 = 6;
-pub const CLOCK_BOOTTIME: u32 = 7;
-pub const CLOCK_REALTIME_ALARM: u32 = 8;
-pub const CLOCK_BOOTTIME_ALARM: u32 = 9;
-pub const CLOCK_SGI_CYCLE: u32 = 10;
-pub const CLOCK_TAI: u32 = 11;
-pub const MAX_CLOCKS: u32 = 16;
-pub const CLOCKS_MASK: u32 = 1;
-pub const CLOCKS_MONO: u32 = 1;
-pub const TIMER_ABSTIME: u32 = 1;
-pub const RUSAGE_SELF: u32 = 0;
-pub const RUSAGE_CHILDREN: i32 = -1;
-pub const RUSAGE_BOTH: i32 = -2;
-pub const RUSAGE_THREAD: u32 = 1;
-pub const RLIM64_INFINITY: i32 = -1;
-pub const PRIO_MIN: i32 = -20;
-pub const PRIO_MAX: u32 = 20;
-pub const PRIO_PROCESS: u32 = 0;
-pub const PRIO_PGRP: u32 = 1;
-pub const PRIO_USER: u32 = 2;
-pub const _STK_LIM: u32 = 8388608;
-pub const MLOCK_LIMIT: u32 = 8388608;
-pub const RLIMIT_CPU: u32 = 0;
-pub const RLIMIT_FSIZE: u32 = 1;
-pub const RLIMIT_DATA: u32 = 2;
-pub const RLIMIT_STACK: u32 = 3;
-pub const RLIMIT_CORE: u32 = 4;
-pub const RLIMIT_RSS: u32 = 5;
-pub const RLIMIT_NPROC: u32 = 6;
-pub const RLIMIT_NOFILE: u32 = 7;
-pub const RLIMIT_MEMLOCK: u32 = 8;
-pub const RLIMIT_AS: u32 = 9;
-pub const RLIMIT_LOCKS: u32 = 10;
-pub const RLIMIT_SIGPENDING: u32 = 11;
-pub const RLIMIT_MSGQUEUE: u32 = 12;
-pub const RLIMIT_NICE: u32 = 13;
-pub const RLIMIT_RTPRIO: u32 = 14;
-pub const RLIMIT_RTTIME: u32 = 15;
-pub const RLIM_NLIMITS: u32 = 16;
-pub const RLIM_INFINITY: i32 = -1;
-pub const CSIGNAL: u32 = 255;
-pub const CLONE_VM: u32 = 256;
-pub const CLONE_FS: u32 = 512;
-pub const CLONE_FILES: u32 = 1024;
-pub const CLONE_SIGHAND: u32 = 2048;
-pub const CLONE_PIDFD: u32 = 4096;
-pub const CLONE_PTRACE: u32 = 8192;
-pub const CLONE_VFORK: u32 = 16384;
-pub const CLONE_PARENT: u32 = 32768;
-pub const CLONE_THREAD: u32 = 65536;
-pub const CLONE_NEWNS: u32 = 131072;
-pub const CLONE_SYSVSEM: u32 = 262144;
-pub const CLONE_SETTLS: u32 = 524288;
-pub const CLONE_PARENT_SETTID: u32 = 1048576;
-pub const CLONE_CHILD_CLEARTID: u32 = 2097152;
-pub const CLONE_DETACHED: u32 = 4194304;
-pub const CLONE_UNTRACED: u32 = 8388608;
-pub const CLONE_CHILD_SETTID: u32 = 16777216;
-pub const CLONE_NEWCGROUP: u32 = 33554432;
-pub const CLONE_NEWUTS: u32 = 67108864;
-pub const CLONE_NEWIPC: u32 = 134217728;
-pub const CLONE_NEWUSER: u32 = 268435456;
-pub const CLONE_NEWPID: u32 = 536870912;
-pub const CLONE_NEWNET: u32 = 1073741824;
-pub const CLONE_IO: u32 = 2147483648;
-pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296;
-pub const CLONE_INTO_CGROUP: u64 = 8589934592;
-pub const CLONE_NEWTIME: u32 = 128;
-pub const CLONE_ARGS_SIZE_VER0: u32 = 64;
-pub const CLONE_ARGS_SIZE_VER1: u32 = 80;
-pub const CLONE_ARGS_SIZE_VER2: u32 = 88;
-pub const SCHED_NORMAL: u32 = 0;
-pub const SCHED_FIFO: u32 = 1;
-pub const SCHED_RR: u32 = 2;
-pub const SCHED_BATCH: u32 = 3;
-pub const SCHED_IDLE: u32 = 5;
-pub const SCHED_DEADLINE: u32 = 6;
-pub const SCHED_RESET_ON_FORK: u32 = 1073741824;
-pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1;
-pub const SCHED_FLAG_RECLAIM: u32 = 2;
-pub const SCHED_FLAG_DL_OVERRUN: u32 = 4;
-pub const SCHED_FLAG_KEEP_POLICY: u32 = 8;
-pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16;
-pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32;
-pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64;
-pub const SCHED_FLAG_KEEP_ALL: u32 = 24;
-pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96;
-pub const SCHED_FLAG_ALL: u32 = 127;
-pub const _NSIG: u32 = 64;
-pub const SIGHUP: u32 = 1;
-pub const SIGINT: u32 = 2;
-pub const SIGQUIT: u32 = 3;
-pub const SIGILL: u32 = 4;
-pub const SIGTRAP: u32 = 5;
-pub const SIGABRT: u32 = 6;
-pub const SIGIOT: u32 = 6;
-pub const SIGBUS: u32 = 7;
-pub const SIGFPE: u32 = 8;
-pub const SIGKILL: u32 = 9;
-pub const SIGUSR1: u32 = 10;
-pub const SIGSEGV: u32 = 11;
-pub const SIGUSR2: u32 = 12;
-pub const SIGPIPE: u32 = 13;
-pub const SIGALRM: u32 = 14;
-pub const SIGTERM: u32 = 15;
-pub const SIGSTKFLT: u32 = 16;
-pub const SIGCHLD: u32 = 17;
-pub const SIGCONT: u32 = 18;
-pub const SIGSTOP: u32 = 19;
-pub const SIGTSTP: u32 = 20;
-pub const SIGTTIN: u32 = 21;
-pub const SIGTTOU: u32 = 22;
-pub const SIGURG: u32 = 23;
-pub const SIGXCPU: u32 = 24;
-pub const SIGXFSZ: u32 = 25;
-pub const SIGVTALRM: u32 = 26;
-pub const SIGPROF: u32 = 27;
-pub const SIGWINCH: u32 = 28;
-pub const SIGIO: u32 = 29;
-pub const SIGPOLL: u32 = 29;
-pub const SIGPWR: u32 = 30;
-pub const SIGSYS: u32 = 31;
-pub const SIGUNUSED: u32 = 31;
-pub const SIGRTMIN: u32 = 32;
-pub const SIGRTMAX: u32 = 64;
-pub const MINSIGSTKSZ: u32 = 2048;
-pub const SIGSTKSZ: u32 = 8192;
-pub const SA_NOCLDSTOP: u32 = 1;
-pub const SA_NOCLDWAIT: u32 = 2;
-pub const SA_SIGINFO: u32 = 4;
-pub const SA_UNSUPPORTED: u32 = 1024;
-pub const SA_EXPOSE_TAGBITS: u32 = 2048;
-pub const SA_ONSTACK: u32 = 134217728;
-pub const SA_RESTART: u32 = 268435456;
-pub const SA_NODEFER: u32 = 1073741824;
-pub const SA_RESETHAND: u32 = 2147483648;
-pub const SA_NOMASK: u32 = 1073741824;
-pub const SA_ONESHOT: u32 = 2147483648;
-pub const SIG_BLOCK: u32 = 0;
-pub const SIG_UNBLOCK: u32 = 1;
-pub const SIG_SETMASK: u32 = 2;
-pub const SI_MAX_SIZE: u32 = 128;
-pub const SI_USER: u32 = 0;
-pub const SI_KERNEL: u32 = 128;
-pub const SI_QUEUE: i32 = -1;
-pub const SI_TIMER: i32 = -2;
-pub const SI_MESGQ: i32 = -3;
-pub const SI_ASYNCIO: i32 = -4;
-pub const SI_SIGIO: i32 = -5;
-pub const SI_TKILL: i32 = -6;
-pub const SI_DETHREAD: i32 = -7;
-pub const SI_ASYNCNL: i32 = -60;
-pub const ILL_ILLOPC: u32 = 1;
-pub const ILL_ILLOPN: u32 = 2;
-pub const ILL_ILLADR: u32 = 3;
-pub const ILL_ILLTRP: u32 = 4;
-pub const ILL_PRVOPC: u32 = 5;
-pub const ILL_PRVREG: u32 = 6;
-pub const ILL_COPROC: u32 = 7;
-pub const ILL_BADSTK: u32 = 8;
-pub const ILL_BADIADDR: u32 = 9;
-pub const __ILL_BREAK: u32 = 10;
-pub const __ILL_BNDMOD: u32 = 11;
-pub const NSIGILL: u32 = 11;
-pub const FPE_INTDIV: u32 = 1;
-pub const FPE_INTOVF: u32 = 2;
-pub const FPE_FLTDIV: u32 = 3;
-pub const FPE_FLTOVF: u32 = 4;
-pub const FPE_FLTUND: u32 = 5;
-pub const FPE_FLTRES: u32 = 6;
-pub const FPE_FLTINV: u32 = 7;
-pub const FPE_FLTSUB: u32 = 8;
-pub const __FPE_DECOVF: u32 = 9;
-pub const __FPE_DECDIV: u32 = 10;
-pub const __FPE_DECERR: u32 = 11;
-pub const __FPE_INVASC: u32 = 12;
-pub const __FPE_INVDEC: u32 = 13;
-pub const FPE_FLTUNK: u32 = 14;
-pub const FPE_CONDTRAP: u32 = 15;
-pub const NSIGFPE: u32 = 15;
-pub const SEGV_MAPERR: u32 = 1;
-pub const SEGV_ACCERR: u32 = 2;
-pub const SEGV_BNDERR: u32 = 3;
-pub const SEGV_PKUERR: u32 = 4;
-pub const SEGV_ACCADI: u32 = 5;
-pub const SEGV_ADIDERR: u32 = 6;
-pub const SEGV_ADIPERR: u32 = 7;
-pub const SEGV_MTEAERR: u32 = 8;
-pub const SEGV_MTESERR: u32 = 9;
-pub const NSIGSEGV: u32 = 9;
-pub const BUS_ADRALN: u32 = 1;
-pub const BUS_ADRERR: u32 = 2;
-pub const BUS_OBJERR: u32 = 3;
-pub const BUS_MCEERR_AR: u32 = 4;
-pub const BUS_MCEERR_AO: u32 = 5;
-pub const NSIGBUS: u32 = 5;
-pub const TRAP_BRKPT: u32 = 1;
-pub const TRAP_TRACE: u32 = 2;
-pub const TRAP_BRANCH: u32 = 3;
-pub const TRAP_HWBKPT: u32 = 4;
-pub const TRAP_UNK: u32 = 5;
-pub const TRAP_PERF: u32 = 6;
-pub const NSIGTRAP: u32 = 6;
-pub const TRAP_PERF_FLAG_ASYNC: u32 = 1;
-pub const CLD_EXITED: u32 = 1;
-pub const CLD_KILLED: u32 = 2;
-pub const CLD_DUMPED: u32 = 3;
-pub const CLD_TRAPPED: u32 = 4;
-pub const CLD_STOPPED: u32 = 5;
-pub const CLD_CONTINUED: u32 = 6;
-pub const NSIGCHLD: u32 = 6;
-pub const POLL_IN: u32 = 1;
-pub const POLL_OUT: u32 = 2;
-pub const POLL_MSG: u32 = 3;
-pub const POLL_ERR: u32 = 4;
-pub const POLL_PRI: u32 = 5;
-pub const POLL_HUP: u32 = 6;
-pub const NSIGPOLL: u32 = 6;
-pub const SYS_SECCOMP: u32 = 1;
-pub const SYS_USER_DISPATCH: u32 = 2;
-pub const NSIGSYS: u32 = 2;
-pub const EMT_TAGOVF: u32 = 1;
-pub const NSIGEMT: u32 = 1;
-pub const SIGEV_SIGNAL: u32 = 0;
-pub const SIGEV_NONE: u32 = 1;
-pub const SIGEV_THREAD: u32 = 2;
-pub const SIGEV_THREAD_ID: u32 = 4;
-pub const SIGEV_MAX_SIZE: u32 = 64;
-pub const SS_ONSTACK: u32 = 1;
-pub const SS_DISABLE: u32 = 2;
-pub const SS_AUTODISARM: u32 = 2147483648;
-pub const SS_FLAG_BITS: u32 = 2147483648;
-pub const S_IFMT: u32 = 61440;
-pub const S_IFSOCK: u32 = 49152;
-pub const S_IFLNK: u32 = 40960;
-pub const S_IFREG: u32 = 32768;
-pub const S_IFBLK: u32 = 24576;
-pub const S_IFDIR: u32 = 16384;
-pub const S_IFCHR: u32 = 8192;
-pub const S_IFIFO: u32 = 4096;
-pub const S_ISUID: u32 = 2048;
-pub const S_ISGID: u32 = 1024;
-pub const S_ISVTX: u32 = 512;
-pub const S_IRWXU: u32 = 448;
-pub const S_IRUSR: u32 = 256;
-pub const S_IWUSR: u32 = 128;
-pub const S_IXUSR: u32 = 64;
-pub const S_IRWXG: u32 = 56;
-pub const S_IRGRP: u32 = 32;
-pub const S_IWGRP: u32 = 16;
-pub const S_IXGRP: u32 = 8;
-pub const S_IRWXO: u32 = 7;
-pub const S_IROTH: u32 = 4;
-pub const S_IWOTH: u32 = 2;
-pub const S_IXOTH: u32 = 1;
-pub const STATX_TYPE: u32 = 1;
-pub const STATX_MODE: u32 = 2;
-pub const STATX_NLINK: u32 = 4;
-pub const STATX_UID: u32 = 8;
-pub const STATX_GID: u32 = 16;
-pub const STATX_ATIME: u32 = 32;
-pub const STATX_MTIME: u32 = 64;
-pub const STATX_CTIME: u32 = 128;
-pub const STATX_INO: u32 = 256;
-pub const STATX_SIZE: u32 = 512;
-pub const STATX_BLOCKS: u32 = 1024;
-pub const STATX_BASIC_STATS: u32 = 2047;
-pub const STATX_BTIME: u32 = 2048;
-pub const STATX_MNT_ID: u32 = 4096;
-pub const STATX_DIOALIGN: u32 = 8192;
-pub const STATX__RESERVED: u32 = 2147483648;
-pub const STATX_ALL: u32 = 4095;
-pub const STATX_ATTR_COMPRESSED: u32 = 4;
-pub const STATX_ATTR_IMMUTABLE: u32 = 16;
-pub const STATX_ATTR_APPEND: u32 = 32;
-pub const STATX_ATTR_NODUMP: u32 = 64;
-pub const STATX_ATTR_ENCRYPTED: u32 = 2048;
-pub const STATX_ATTR_AUTOMOUNT: u32 = 4096;
-pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192;
-pub const STATX_ATTR_VERITY: u32 = 1048576;
-pub const STATX_ATTR_DAX: u32 = 2097152;
-pub const SI_LOAD_SHIFT: u32 = 16;
-pub const TCP_MSS_DEFAULT: u32 = 536;
-pub const TCP_MSS_DESIRED: u32 = 1220;
-pub const TCP_NODELAY: u32 = 1;
-pub const TCP_MAXSEG: u32 = 2;
-pub const TCP_CORK: u32 = 3;
-pub const TCP_KEEPIDLE: u32 = 4;
-pub const TCP_KEEPINTVL: u32 = 5;
-pub const TCP_KEEPCNT: u32 = 6;
-pub const TCP_SYNCNT: u32 = 7;
-pub const TCP_LINGER2: u32 = 8;
-pub const TCP_DEFER_ACCEPT: u32 = 9;
-pub const TCP_WINDOW_CLAMP: u32 = 10;
-pub const TCP_INFO: u32 = 11;
-pub const TCP_QUICKACK: u32 = 12;
-pub const TCP_CONGESTION: u32 = 13;
-pub const TCP_MD5SIG: u32 = 14;
-pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16;
-pub const TCP_THIN_DUPACK: u32 = 17;
-pub const TCP_USER_TIMEOUT: u32 = 18;
-pub const TCP_REPAIR: u32 = 19;
-pub const TCP_REPAIR_QUEUE: u32 = 20;
-pub const TCP_QUEUE_SEQ: u32 = 21;
-pub const TCP_REPAIR_OPTIONS: u32 = 22;
-pub const TCP_FASTOPEN: u32 = 23;
-pub const TCP_TIMESTAMP: u32 = 24;
-pub const TCP_NOTSENT_LOWAT: u32 = 25;
-pub const TCP_CC_INFO: u32 = 26;
-pub const TCP_SAVE_SYN: u32 = 27;
-pub const TCP_SAVED_SYN: u32 = 28;
-pub const TCP_REPAIR_WINDOW: u32 = 29;
-pub const TCP_FASTOPEN_CONNECT: u32 = 30;
-pub const TCP_ULP: u32 = 31;
-pub const TCP_MD5SIG_EXT: u32 = 32;
-pub const TCP_FASTOPEN_KEY: u32 = 33;
-pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34;
-pub const TCP_ZEROCOPY_RECEIVE: u32 = 35;
-pub const TCP_INQ: u32 = 36;
-pub const TCP_CM_INQ: u32 = 36;
-pub const TCP_TX_DELAY: u32 = 37;
-pub const TCP_REPAIR_ON: u32 = 1;
-pub const TCP_REPAIR_OFF: u32 = 0;
-pub const TCP_REPAIR_OFF_NO_WP: i32 = -1;
-pub const TCPI_OPT_TIMESTAMPS: u32 = 1;
-pub const TCPI_OPT_SACK: u32 = 2;
-pub const TCPI_OPT_WSCALE: u32 = 4;
-pub const TCPI_OPT_ECN: u32 = 8;
-pub const TCPI_OPT_ECN_SEEN: u32 = 16;
-pub const TCPI_OPT_SYN_DATA: u32 = 32;
-pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80;
-pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
-pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
-pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
-pub const IGNBRK: u32 = 1;
-pub const BRKINT: u32 = 2;
-pub const IGNPAR: u32 = 4;
-pub const PARMRK: u32 = 8;
-pub const INPCK: u32 = 16;
-pub const ISTRIP: u32 = 32;
-pub const INLCR: u32 = 64;
-pub const IGNCR: u32 = 128;
-pub const ICRNL: u32 = 256;
-pub const IXANY: u32 = 2048;
-pub const OPOST: u32 = 1;
-pub const OCRNL: u32 = 8;
-pub const ONOCR: u32 = 16;
-pub const ONLRET: u32 = 32;
-pub const OFILL: u32 = 64;
-pub const OFDEL: u32 = 128;
-pub const B0: u32 = 0;
-pub const B50: u32 = 1;
-pub const B75: u32 = 2;
-pub const B110: u32 = 3;
-pub const B134: u32 = 4;
-pub const B150: u32 = 5;
-pub const B200: u32 = 6;
-pub const B300: u32 = 7;
-pub const B600: u32 = 8;
-pub const B1200: u32 = 9;
-pub const B1800: u32 = 10;
-pub const B2400: u32 = 11;
-pub const B4800: u32 = 12;
-pub const B9600: u32 = 13;
-pub const B19200: u32 = 14;
-pub const B38400: u32 = 15;
-pub const EXTA: u32 = 14;
-pub const EXTB: u32 = 15;
-pub const ADDRB: u32 = 536870912;
-pub const CMSPAR: u32 = 1073741824;
-pub const CRTSCTS: u32 = 2147483648;
-pub const IBSHIFT: u32 = 16;
-pub const TCOOFF: u32 = 0;
-pub const TCOON: u32 = 1;
-pub const TCIOFF: u32 = 2;
-pub const TCION: u32 = 3;
-pub const TCIFLUSH: u32 = 0;
-pub const TCOFLUSH: u32 = 1;
-pub const TCIOFLUSH: u32 = 2;
-pub const NCCS: u32 = 19;
-pub const VINTR: u32 = 0;
-pub const VQUIT: u32 = 1;
-pub const VERASE: u32 = 2;
-pub const VKILL: u32 = 3;
-pub const VEOF: u32 = 4;
-pub const VTIME: u32 = 5;
-pub const VMIN: u32 = 6;
-pub const VSWTC: u32 = 7;
-pub const VSTART: u32 = 8;
-pub const VSTOP: u32 = 9;
-pub const VSUSP: u32 = 10;
-pub const VEOL: u32 = 11;
-pub const VREPRINT: u32 = 12;
-pub const VDISCARD: u32 = 13;
-pub const VWERASE: u32 = 14;
-pub const VLNEXT: u32 = 15;
-pub const VEOL2: u32 = 16;
-pub const IUCLC: u32 = 512;
-pub const IXON: u32 = 1024;
-pub const IXOFF: u32 = 4096;
-pub const IMAXBEL: u32 = 8192;
-pub const IUTF8: u32 = 16384;
-pub const OLCUC: u32 = 2;
-pub const ONLCR: u32 = 4;
-pub const NLDLY: u32 = 256;
-pub const NL0: u32 = 0;
-pub const NL1: u32 = 256;
-pub const CRDLY: u32 = 1536;
-pub const CR0: u32 = 0;
-pub const CR1: u32 = 512;
-pub const CR2: u32 = 1024;
-pub const CR3: u32 = 1536;
-pub const TABDLY: u32 = 6144;
-pub const TAB0: u32 = 0;
-pub const TAB1: u32 = 2048;
-pub const TAB2: u32 = 4096;
-pub const TAB3: u32 = 6144;
-pub const XTABS: u32 = 6144;
-pub const BSDLY: u32 = 8192;
-pub const BS0: u32 = 0;
-pub const BS1: u32 = 8192;
-pub const VTDLY: u32 = 16384;
-pub const VT0: u32 = 0;
-pub const VT1: u32 = 16384;
-pub const FFDLY: u32 = 32768;
-pub const FF0: u32 = 0;
-pub const FF1: u32 = 32768;
-pub const CBAUD: u32 = 4111;
-pub const CSIZE: u32 = 48;
-pub const CS5: u32 = 0;
-pub const CS6: u32 = 16;
-pub const CS7: u32 = 32;
-pub const CS8: u32 = 48;
-pub const CSTOPB: u32 = 64;
-pub const CREAD: u32 = 128;
-pub const PARENB: u32 = 256;
-pub const PARODD: u32 = 512;
-pub const HUPCL: u32 = 1024;
-pub const CLOCAL: u32 = 2048;
-pub const CBAUDEX: u32 = 4096;
-pub const BOTHER: u32 = 4096;
-pub const B57600: u32 = 4097;
-pub const B115200: u32 = 4098;
-pub const B230400: u32 = 4099;
-pub const B460800: u32 = 4100;
-pub const B500000: u32 = 4101;
-pub const B576000: u32 = 4102;
-pub const B921600: u32 = 4103;
-pub const B1000000: u32 = 4104;
-pub const B1152000: u32 = 4105;
-pub const B1500000: u32 = 4106;
-pub const B2000000: u32 = 4107;
-pub const B2500000: u32 = 4108;
-pub const B3000000: u32 = 4109;
-pub const B3500000: u32 = 4110;
-pub const B4000000: u32 = 4111;
-pub const CIBAUD: u32 = 269418496;
-pub const ISIG: u32 = 1;
-pub const ICANON: u32 = 2;
-pub const XCASE: u32 = 4;
-pub const ECHO: u32 = 8;
-pub const ECHOE: u32 = 16;
-pub const ECHOK: u32 = 32;
-pub const ECHONL: u32 = 64;
-pub const NOFLSH: u32 = 128;
-pub const TOSTOP: u32 = 256;
-pub const ECHOCTL: u32 = 512;
-pub const ECHOPRT: u32 = 1024;
-pub const ECHOKE: u32 = 2048;
-pub const FLUSHO: u32 = 4096;
-pub const PENDIN: u32 = 16384;
-pub const IEXTEN: u32 = 32768;
-pub const EXTPROC: u32 = 65536;
-pub const TCSANOW: u32 = 0;
-pub const TCSADRAIN: u32 = 1;
-pub const TCSAFLUSH: u32 = 2;
-pub const TIOCPKT_DATA: u32 = 0;
-pub const TIOCPKT_FLUSHREAD: u32 = 1;
-pub const TIOCPKT_FLUSHWRITE: u32 = 2;
-pub const TIOCPKT_STOP: u32 = 4;
-pub const TIOCPKT_START: u32 = 8;
-pub const TIOCPKT_NOSTOP: u32 = 16;
-pub const TIOCPKT_DOSTOP: u32 = 32;
-pub const TIOCPKT_IOCTL: u32 = 64;
-pub const TIOCSER_TEMT: u32 = 1;
-pub const NCC: u32 = 8;
-pub const TIOCM_LE: u32 = 1;
-pub const TIOCM_DTR: u32 = 2;
-pub const TIOCM_RTS: u32 = 4;
-pub const TIOCM_ST: u32 = 8;
-pub const TIOCM_SR: u32 = 16;
-pub const TIOCM_CTS: u32 = 32;
-pub const TIOCM_CAR: u32 = 64;
-pub const TIOCM_RNG: u32 = 128;
-pub const TIOCM_DSR: u32 = 256;
-pub const TIOCM_CD: u32 = 64;
-pub const TIOCM_RI: u32 = 128;
-pub const TIOCM_OUT1: u32 = 8192;
-pub const TIOCM_OUT2: u32 = 16384;
-pub const TIOCM_LOOP: u32 = 32768;
-pub const UIO_FASTIOV: u32 = 8;
-pub const UIO_MAXIOV: u32 = 1024;
-pub const UNIX_PATH_MAX: u32 = 108;
-pub const __NR_io_setup: u32 = 0;
-pub const __NR_io_destroy: u32 = 1;
-pub const __NR_io_submit: u32 = 2;
-pub const __NR_io_cancel: u32 = 3;
-pub const __NR_io_getevents: u32 = 4;
-pub const __NR_setxattr: u32 = 5;
-pub const __NR_lsetxattr: u32 = 6;
-pub const __NR_fsetxattr: u32 = 7;
-pub const __NR_getxattr: u32 = 8;
-pub const __NR_lgetxattr: u32 = 9;
-pub const __NR_fgetxattr: u32 = 10;
-pub const __NR_listxattr: u32 = 11;
-pub const __NR_llistxattr: u32 = 12;
-pub const __NR_flistxattr: u32 = 13;
-pub const __NR_removexattr: u32 = 14;
-pub const __NR_lremovexattr: u32 = 15;
-pub const __NR_fremovexattr: u32 = 16;
-pub const __NR_getcwd: u32 = 17;
-pub const __NR_lookup_dcookie: u32 = 18;
-pub const __NR_eventfd2: u32 = 19;
-pub const __NR_epoll_create1: u32 = 20;
-pub const __NR_epoll_ctl: u32 = 21;
-pub const __NR_epoll_pwait: u32 = 22;
-pub const __NR_dup: u32 = 23;
-pub const __NR_dup3: u32 = 24;
-pub const __NR3264_fcntl: u32 = 25;
-pub const __NR_inotify_init1: u32 = 26;
-pub const __NR_inotify_add_watch: u32 = 27;
-pub const __NR_inotify_rm_watch: u32 = 28;
-pub const __NR_ioctl: u32 = 29;
-pub const __NR_ioprio_set: u32 = 30;
-pub const __NR_ioprio_get: u32 = 31;
-pub const __NR_flock: u32 = 32;
-pub const __NR_mknodat: u32 = 33;
-pub const __NR_mkdirat: u32 = 34;
-pub const __NR_unlinkat: u32 = 35;
-pub const __NR_symlinkat: u32 = 36;
-pub const __NR_linkat: u32 = 37;
-pub const __NR_umount2: u32 = 39;
-pub const __NR_mount: u32 = 40;
-pub const __NR_pivot_root: u32 = 41;
-pub const __NR_nfsservctl: u32 = 42;
-pub const __NR3264_statfs: u32 = 43;
-pub const __NR3264_fstatfs: u32 = 44;
-pub const __NR3264_truncate: u32 = 45;
-pub const __NR3264_ftruncate: u32 = 46;
-pub const __NR_fallocate: u32 = 47;
-pub const __NR_faccessat: u32 = 48;
-pub const __NR_chdir: u32 = 49;
-pub const __NR_fchdir: u32 = 50;
-pub const __NR_chroot: u32 = 51;
-pub const __NR_fchmod: u32 = 52;
-pub const __NR_fchmodat: u32 = 53;
-pub const __NR_fchownat: u32 = 54;
-pub const __NR_fchown: u32 = 55;
-pub const __NR_openat: u32 = 56;
-pub const __NR_close: u32 = 57;
-pub const __NR_vhangup: u32 = 58;
-pub const __NR_pipe2: u32 = 59;
-pub const __NR_quotactl: u32 = 60;
-pub const __NR_getdents64: u32 = 61;
-pub const __NR3264_lseek: u32 = 62;
-pub const __NR_read: u32 = 63;
-pub const __NR_write: u32 = 64;
-pub const __NR_readv: u32 = 65;
-pub const __NR_writev: u32 = 66;
-pub const __NR_pread64: u32 = 67;
-pub const __NR_pwrite64: u32 = 68;
-pub const __NR_preadv: u32 = 69;
-pub const __NR_pwritev: u32 = 70;
-pub const __NR3264_sendfile: u32 = 71;
-pub const __NR_pselect6: u32 = 72;
-pub const __NR_ppoll: u32 = 73;
-pub const __NR_signalfd4: u32 = 74;
-pub const __NR_vmsplice: u32 = 75;
-pub const __NR_splice: u32 = 76;
-pub const __NR_tee: u32 = 77;
-pub const __NR_readlinkat: u32 = 78;
-pub const __NR3264_fstatat: u32 = 79;
-pub const __NR3264_fstat: u32 = 80;
-pub const __NR_sync: u32 = 81;
-pub const __NR_fsync: u32 = 82;
-pub const __NR_fdatasync: u32 = 83;
-pub const __NR_sync_file_range: u32 = 84;
-pub const __NR_timerfd_create: u32 = 85;
-pub const __NR_timerfd_settime: u32 = 86;
-pub const __NR_timerfd_gettime: u32 = 87;
-pub const __NR_utimensat: u32 = 88;
-pub const __NR_acct: u32 = 89;
-pub const __NR_capget: u32 = 90;
-pub const __NR_capset: u32 = 91;
-pub const __NR_personality: u32 = 92;
-pub const __NR_exit: u32 = 93;
-pub const __NR_exit_group: u32 = 94;
-pub const __NR_waitid: u32 = 95;
-pub const __NR_set_tid_address: u32 = 96;
-pub const __NR_unshare: u32 = 97;
-pub const __NR_futex: u32 = 98;
-pub const __NR_set_robust_list: u32 = 99;
-pub const __NR_get_robust_list: u32 = 100;
-pub const __NR_nanosleep: u32 = 101;
-pub const __NR_getitimer: u32 = 102;
-pub const __NR_setitimer: u32 = 103;
-pub const __NR_kexec_load: u32 = 104;
-pub const __NR_init_module: u32 = 105;
-pub const __NR_delete_module: u32 = 106;
-pub const __NR_timer_create: u32 = 107;
-pub const __NR_timer_gettime: u32 = 108;
-pub const __NR_timer_getoverrun: u32 = 109;
-pub const __NR_timer_settime: u32 = 110;
-pub const __NR_timer_delete: u32 = 111;
-pub const __NR_clock_settime: u32 = 112;
-pub const __NR_clock_gettime: u32 = 113;
-pub const __NR_clock_getres: u32 = 114;
-pub const __NR_clock_nanosleep: u32 = 115;
-pub const __NR_syslog: u32 = 116;
-pub const __NR_ptrace: u32 = 117;
-pub const __NR_sched_setparam: u32 = 118;
-pub const __NR_sched_setscheduler: u32 = 119;
-pub const __NR_sched_getscheduler: u32 = 120;
-pub const __NR_sched_getparam: u32 = 121;
-pub const __NR_sched_setaffinity: u32 = 122;
-pub const __NR_sched_getaffinity: u32 = 123;
-pub const __NR_sched_yield: u32 = 124;
-pub const __NR_sched_get_priority_max: u32 = 125;
-pub const __NR_sched_get_priority_min: u32 = 126;
-pub const __NR_sched_rr_get_interval: u32 = 127;
-pub const __NR_restart_syscall: u32 = 128;
-pub const __NR_kill: u32 = 129;
-pub const __NR_tkill: u32 = 130;
-pub const __NR_tgkill: u32 = 131;
-pub const __NR_sigaltstack: u32 = 132;
-pub const __NR_rt_sigsuspend: u32 = 133;
-pub const __NR_rt_sigaction: u32 = 134;
-pub const __NR_rt_sigprocmask: u32 = 135;
-pub const __NR_rt_sigpending: u32 = 136;
-pub const __NR_rt_sigtimedwait: u32 = 137;
-pub const __NR_rt_sigqueueinfo: u32 = 138;
-pub const __NR_rt_sigreturn: u32 = 139;
-pub const __NR_setpriority: u32 = 140;
-pub const __NR_getpriority: u32 = 141;
-pub const __NR_reboot: u32 = 142;
-pub const __NR_setregid: u32 = 143;
-pub const __NR_setgid: u32 = 144;
-pub const __NR_setreuid: u32 = 145;
-pub const __NR_setuid: u32 = 146;
-pub const __NR_setresuid: u32 = 147;
-pub const __NR_getresuid: u32 = 148;
-pub const __NR_setresgid: u32 = 149;
-pub const __NR_getresgid: u32 = 150;
-pub const __NR_setfsuid: u32 = 151;
-pub const __NR_setfsgid: u32 = 152;
-pub const __NR_times: u32 = 153;
-pub const __NR_setpgid: u32 = 154;
-pub const __NR_getpgid: u32 = 155;
-pub const __NR_getsid: u32 = 156;
-pub const __NR_setsid: u32 = 157;
-pub const __NR_getgroups: u32 = 158;
-pub const __NR_setgroups: u32 = 159;
-pub const __NR_uname: u32 = 160;
-pub const __NR_sethostname: u32 = 161;
-pub const __NR_setdomainname: u32 = 162;
-pub const __NR_getrlimit: u32 = 163;
-pub const __NR_setrlimit: u32 = 164;
-pub const __NR_getrusage: u32 = 165;
-pub const __NR_umask: u32 = 166;
-pub const __NR_prctl: u32 = 167;
-pub const __NR_getcpu: u32 = 168;
-pub const __NR_gettimeofday: u32 = 169;
-pub const __NR_settimeofday: u32 = 170;
-pub const __NR_adjtimex: u32 = 171;
-pub const __NR_getpid: u32 = 172;
-pub const __NR_getppid: u32 = 173;
-pub const __NR_getuid: u32 = 174;
-pub const __NR_geteuid: u32 = 175;
-pub const __NR_getgid: u32 = 176;
-pub const __NR_getegid: u32 = 177;
-pub const __NR_gettid: u32 = 178;
-pub const __NR_sysinfo: u32 = 179;
-pub const __NR_mq_open: u32 = 180;
-pub const __NR_mq_unlink: u32 = 181;
-pub const __NR_mq_timedsend: u32 = 182;
-pub const __NR_mq_timedreceive: u32 = 183;
-pub const __NR_mq_notify: u32 = 184;
-pub const __NR_mq_getsetattr: u32 = 185;
-pub const __NR_msgget: u32 = 186;
-pub const __NR_msgctl: u32 = 187;
-pub const __NR_msgrcv: u32 = 188;
-pub const __NR_msgsnd: u32 = 189;
-pub const __NR_semget: u32 = 190;
-pub const __NR_semctl: u32 = 191;
-pub const __NR_semtimedop: u32 = 192;
-pub const __NR_semop: u32 = 193;
-pub const __NR_shmget: u32 = 194;
-pub const __NR_shmctl: u32 = 195;
-pub const __NR_shmat: u32 = 196;
-pub const __NR_shmdt: u32 = 197;
-pub const __NR_socket: u32 = 198;
-pub const __NR_socketpair: u32 = 199;
-pub const __NR_bind: u32 = 200;
-pub const __NR_listen: u32 = 201;
-pub const __NR_accept: u32 = 202;
-pub const __NR_connect: u32 = 203;
-pub const __NR_getsockname: u32 = 204;
-pub const __NR_getpeername: u32 = 205;
-pub const __NR_sendto: u32 = 206;
-pub const __NR_recvfrom: u32 = 207;
-pub const __NR_setsockopt: u32 = 208;
-pub const __NR_getsockopt: u32 = 209;
-pub const __NR_shutdown: u32 = 210;
-pub const __NR_sendmsg: u32 = 211;
-pub const __NR_recvmsg: u32 = 212;
-pub const __NR_readahead: u32 = 213;
-pub const __NR_brk: u32 = 214;
-pub const __NR_munmap: u32 = 215;
-pub const __NR_mremap: u32 = 216;
-pub const __NR_add_key: u32 = 217;
-pub const __NR_request_key: u32 = 218;
-pub const __NR_keyctl: u32 = 219;
-pub const __NR_clone: u32 = 220;
-pub const __NR_execve: u32 = 221;
-pub const __NR3264_mmap: u32 = 222;
-pub const __NR3264_fadvise64: u32 = 223;
-pub const __NR_swapon: u32 = 224;
-pub const __NR_swapoff: u32 = 225;
-pub const __NR_mprotect: u32 = 226;
-pub const __NR_msync: u32 = 227;
-pub const __NR_mlock: u32 = 228;
-pub const __NR_munlock: u32 = 229;
-pub const __NR_mlockall: u32 = 230;
-pub const __NR_munlockall: u32 = 231;
-pub const __NR_mincore: u32 = 232;
-pub const __NR_madvise: u32 = 233;
-pub const __NR_remap_file_pages: u32 = 234;
-pub const __NR_mbind: u32 = 235;
-pub const __NR_get_mempolicy: u32 = 236;
-pub const __NR_set_mempolicy: u32 = 237;
-pub const __NR_migrate_pages: u32 = 238;
-pub const __NR_move_pages: u32 = 239;
-pub const __NR_rt_tgsigqueueinfo: u32 = 240;
-pub const __NR_perf_event_open: u32 = 241;
-pub const __NR_accept4: u32 = 242;
-pub const __NR_recvmmsg: u32 = 243;
-pub const __NR_arch_specific_syscall: u32 = 244;
-pub const __NR_wait4: u32 = 260;
-pub const __NR_prlimit64: u32 = 261;
-pub const __NR_fanotify_init: u32 = 262;
-pub const __NR_fanotify_mark: u32 = 263;
-pub const __NR_name_to_handle_at: u32 = 264;
-pub const __NR_open_by_handle_at: u32 = 265;
-pub const __NR_clock_adjtime: u32 = 266;
-pub const __NR_syncfs: u32 = 267;
-pub const __NR_setns: u32 = 268;
-pub const __NR_sendmmsg: u32 = 269;
-pub const __NR_process_vm_readv: u32 = 270;
-pub const __NR_process_vm_writev: u32 = 271;
-pub const __NR_kcmp: u32 = 272;
-pub const __NR_finit_module: u32 = 273;
-pub const __NR_sched_setattr: u32 = 274;
-pub const __NR_sched_getattr: u32 = 275;
-pub const __NR_renameat2: u32 = 276;
-pub const __NR_seccomp: u32 = 277;
-pub const __NR_getrandom: u32 = 278;
-pub const __NR_memfd_create: u32 = 279;
-pub const __NR_bpf: u32 = 280;
-pub const __NR_execveat: u32 = 281;
-pub const __NR_userfaultfd: u32 = 282;
-pub const __NR_membarrier: u32 = 283;
-pub const __NR_mlock2: u32 = 284;
-pub const __NR_copy_file_range: u32 = 285;
-pub const __NR_preadv2: u32 = 286;
-pub const __NR_pwritev2: u32 = 287;
-pub const __NR_pkey_mprotect: u32 = 288;
-pub const __NR_pkey_alloc: u32 = 289;
-pub const __NR_pkey_free: u32 = 290;
-pub const __NR_statx: u32 = 291;
-pub const __NR_io_pgetevents: u32 = 292;
-pub const __NR_rseq: u32 = 293;
-pub const __NR_kexec_file_load: u32 = 294;
-pub const __NR_pidfd_send_signal: u32 = 424;
-pub const __NR_io_uring_setup: u32 = 425;
-pub const __NR_io_uring_enter: u32 = 426;
-pub const __NR_io_uring_register: u32 = 427;
-pub const __NR_open_tree: u32 = 428;
-pub const __NR_move_mount: u32 = 429;
-pub const __NR_fsopen: u32 = 430;
-pub const __NR_fsconfig: u32 = 431;
-pub const __NR_fsmount: u32 = 432;
-pub const __NR_fspick: u32 = 433;
-pub const __NR_pidfd_open: u32 = 434;
-pub const __NR_clone3: u32 = 435;
-pub const __NR_close_range: u32 = 436;
-pub const __NR_openat2: u32 = 437;
-pub const __NR_pidfd_getfd: u32 = 438;
-pub const __NR_faccessat2: u32 = 439;
-pub const __NR_process_madvise: u32 = 440;
-pub const __NR_epoll_pwait2: u32 = 441;
-pub const __NR_mount_setattr: u32 = 442;
-pub const __NR_quotactl_fd: u32 = 443;
-pub const __NR_landlock_create_ruleset: u32 = 444;
-pub const __NR_landlock_add_rule: u32 = 445;
-pub const __NR_landlock_restrict_self: u32 = 446;
-pub const __NR_memfd_secret: u32 = 447;
-pub const __NR_process_mrelease: u32 = 448;
-pub const __NR_futex_waitv: u32 = 449;
-pub const __NR_set_mempolicy_home_node: u32 = 450;
-pub const __NR_syscalls: u32 = 451;
-pub const __NR_fcntl: u32 = 25;
-pub const __NR_statfs: u32 = 43;
-pub const __NR_fstatfs: u32 = 44;
-pub const __NR_truncate: u32 = 45;
-pub const __NR_ftruncate: u32 = 46;
-pub const __NR_lseek: u32 = 62;
-pub const __NR_sendfile: u32 = 71;
-pub const __NR_newfstatat: u32 = 79;
-pub const __NR_fstat: u32 = 80;
-pub const __NR_mmap: u32 = 222;
-pub const __NR_fadvise64: u32 = 223;
-pub const __NR_riscv_flush_icache: u32 = 259;
-pub const __OLD_UTS_LEN: u32 = 8;
-pub const __NEW_UTS_LEN: u32 = 64;
-pub const WNOHANG: u32 = 1;
-pub const WUNTRACED: u32 = 2;
-pub const WSTOPPED: u32 = 2;
-pub const WEXITED: u32 = 4;
-pub const WCONTINUED: u32 = 8;
-pub const WNOWAIT: u32 = 16777216;
-pub const __WNOTHREAD: u32 = 536870912;
-pub const __WALL: u32 = 1073741824;
-pub const __WCLONE: u32 = 2147483648;
-pub const P_ALL: u32 = 0;
-pub const P_PID: u32 = 1;
-pub const P_PGID: u32 = 2;
-pub const P_PIDFD: u32 = 3;
-pub const XATTR_CREATE: u32 = 1;
-pub const XATTR_REPLACE: u32 = 2;
-pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0";
-pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0";
-pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0";
-pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0";
-pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0";
-pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0";
-pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0";
-pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0";
-pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0";
-pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0";
-pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0";
-pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0";
-pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0";
-pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0";
-pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0";
-pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0";
-pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0";
-pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0";
-pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0";
-pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0";
-pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0";
-pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0";
-pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0";
-pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0";
-pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0";
-pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0";
-pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0";
-pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0";
-pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0";
-pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0";
-pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0";
-pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0";
-pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0";
-pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0";
-pub const MFD_CLOEXEC: u32 = 1;
-pub const MFD_ALLOW_SEALING: u32 = 2;
-pub const MFD_HUGETLB: u32 = 4;
-pub const MFD_HUGE_SHIFT: u32 = 26;
-pub const MFD_HUGE_MASK: u32 = 63;
-pub const MFD_HUGE_64KB: u32 = 1073741824;
-pub const MFD_HUGE_512KB: u32 = 1275068416;
-pub const MFD_HUGE_1MB: u32 = 1342177280;
-pub const MFD_HUGE_2MB: u32 = 1409286144;
-pub const MFD_HUGE_8MB: u32 = 1543503872;
-pub const MFD_HUGE_16MB: u32 = 1610612736;
-pub const MFD_HUGE_32MB: u32 = 1677721600;
-pub const MFD_HUGE_256MB: u32 = 1879048192;
-pub const MFD_HUGE_512MB: u32 = 1946157056;
-pub const MFD_HUGE_1GB: u32 = 2013265920;
-pub const MFD_HUGE_2GB: u32 = 2080374784;
-pub const MFD_HUGE_16GB: u32 = 2281701376;
-pub const TFD_TIMER_ABSTIME: u32 = 1;
-pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2;
-pub const TFD_CLOEXEC: u32 = 524288;
-pub const TFD_NONBLOCK: u32 = 2048;
-pub const USERFAULTFD_IOC: u32 = 170;
-pub const _UFFDIO_REGISTER: u32 = 0;
-pub const _UFFDIO_UNREGISTER: u32 = 1;
-pub const _UFFDIO_WAKE: u32 = 2;
-pub const _UFFDIO_COPY: u32 = 3;
-pub const _UFFDIO_ZEROPAGE: u32 = 4;
-pub const _UFFDIO_WRITEPROTECT: u32 = 6;
-pub const _UFFDIO_CONTINUE: u32 = 7;
-pub const _UFFDIO_API: u32 = 63;
-pub const UFFDIO: u32 = 170;
-pub const UFFD_EVENT_PAGEFAULT: u32 = 18;
-pub const UFFD_EVENT_FORK: u32 = 19;
-pub const UFFD_EVENT_REMAP: u32 = 20;
-pub const UFFD_EVENT_REMOVE: u32 = 21;
-pub const UFFD_EVENT_UNMAP: u32 = 22;
-pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1;
-pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2;
-pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4;
-pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1;
-pub const UFFD_FEATURE_EVENT_FORK: u32 = 2;
-pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4;
-pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8;
-pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16;
-pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32;
-pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64;
-pub const UFFD_FEATURE_SIGBUS: u32 = 128;
-pub const UFFD_FEATURE_THREAD_ID: u32 = 256;
-pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512;
-pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024;
-pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048;
-pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096;
-pub const UFFD_USER_MODE_ONLY: u32 = 1;
-pub const IORING_FILE_INDEX_ALLOC: i32 = -1;
-pub const IORING_SETUP_IOPOLL: u32 = 1;
-pub const IORING_SETUP_SQPOLL: u32 = 2;
-pub const IORING_SETUP_SQ_AFF: u32 = 4;
-pub const IORING_SETUP_CQSIZE: u32 = 8;
-pub const IORING_SETUP_CLAMP: u32 = 16;
-pub const IORING_SETUP_ATTACH_WQ: u32 = 32;
-pub const IORING_SETUP_R_DISABLED: u32 = 64;
-pub const IORING_SETUP_SUBMIT_ALL: u32 = 128;
-pub const IORING_SETUP_COOP_TASKRUN: u32 = 256;
-pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512;
-pub const IORING_SETUP_SQE128: u32 = 1024;
-pub const IORING_SETUP_CQE32: u32 = 2048;
-pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096;
-pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192;
-pub const IORING_URING_CMD_FIXED: u32 = 1;
-pub const IORING_FSYNC_DATASYNC: u32 = 1;
-pub const IORING_TIMEOUT_ABS: u32 = 1;
-pub const IORING_TIMEOUT_UPDATE: u32 = 2;
-pub const IORING_TIMEOUT_BOOTTIME: u32 = 4;
-pub const IORING_TIMEOUT_REALTIME: u32 = 8;
-pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16;
-pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32;
-pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12;
-pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18;
-pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648;
-pub const IORING_POLL_ADD_MULTI: u32 = 1;
-pub const IORING_POLL_UPDATE_EVENTS: u32 = 2;
-pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4;
-pub const IORING_POLL_ADD_LEVEL: u32 = 8;
-pub const IORING_ASYNC_CANCEL_ALL: u32 = 1;
-pub const IORING_ASYNC_CANCEL_FD: u32 = 2;
-pub const IORING_ASYNC_CANCEL_ANY: u32 = 4;
-pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8;
-pub const IORING_RECVSEND_POLL_FIRST: u32 = 1;
-pub const IORING_RECV_MULTISHOT: u32 = 2;
-pub const IORING_RECVSEND_FIXED_BUF: u32 = 4;
-pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8;
-pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648;
-pub const IORING_ACCEPT_MULTISHOT: u32 = 1;
-pub const IORING_MSG_RING_CQE_SKIP: u32 = 1;
-pub const IORING_CQE_F_BUFFER: u32 = 1;
-pub const IORING_CQE_F_MORE: u32 = 2;
-pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4;
-pub const IORING_CQE_F_NOTIF: u32 = 8;
-pub const IORING_OFF_SQ_RING: u32 = 0;
-pub const IORING_OFF_CQ_RING: u32 = 134217728;
-pub const IORING_OFF_SQES: u32 = 268435456;
-pub const IORING_SQ_NEED_WAKEUP: u32 = 1;
-pub const IORING_SQ_CQ_OVERFLOW: u32 = 2;
-pub const IORING_SQ_TASKRUN: u32 = 4;
-pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1;
-pub const IORING_ENTER_GETEVENTS: u32 = 1;
-pub const IORING_ENTER_SQ_WAKEUP: u32 = 2;
-pub const IORING_ENTER_SQ_WAIT: u32 = 4;
-pub const IORING_ENTER_EXT_ARG: u32 = 8;
-pub const IORING_ENTER_REGISTERED_RING: u32 = 16;
-pub const IORING_FEAT_SINGLE_MMAP: u32 = 1;
-pub const IORING_FEAT_NODROP: u32 = 2;
-pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4;
-pub const IORING_FEAT_RW_CUR_POS: u32 = 8;
-pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16;
-pub const IORING_FEAT_FAST_POLL: u32 = 32;
-pub const IORING_FEAT_POLL_32BITS: u32 = 64;
-pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128;
-pub const IORING_FEAT_EXT_ARG: u32 = 256;
-pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512;
-pub const IORING_FEAT_RSRC_TAGS: u32 = 1024;
-pub const IORING_FEAT_CQE_SKIP: u32 = 2048;
-pub const IORING_FEAT_LINKED_FILE: u32 = 4096;
-pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1;
-pub const IORING_REGISTER_FILES_SKIP: i32 = -2;
-pub const IO_URING_OP_SUPPORTED: u32 = 1;
-pub const DT_UNKNOWN: u32 = 0;
-pub const DT_FIFO: u32 = 1;
-pub const DT_CHR: u32 = 2;
-pub const DT_DIR: u32 = 4;
-pub const DT_BLK: u32 = 6;
-pub const DT_REG: u32 = 8;
-pub const DT_LNK: u32 = 10;
-pub const DT_SOCK: u32 = 12;
-pub const SHUT_RD: u32 = 0;
-pub const SHUT_WR: u32 = 1;
-pub const SHUT_RDWR: u32 = 2;
-pub const STAT_HAVE_NSEC: u32 = 1;
-pub const SOCK_STREAM: u32 = 1;
-pub const SOCK_DGRAM: u32 = 2;
-pub const SOCK_RAW: u32 = 3;
-pub const SOCK_RDM: u32 = 4;
-pub const SOCK_SEQPACKET: u32 = 5;
-pub const F_OK: u32 = 0;
-pub const R_OK: u32 = 4;
-pub const W_OK: u32 = 2;
-pub const X_OK: u32 = 1;
-pub const UTIME_NOW: u32 = 1073741823;
-pub const UTIME_OMIT: u32 = 1073741822;
-pub const MSG_DONTWAIT: u32 = 64;
-pub const AF_UNSPEC: u32 = 0;
-pub const AF_UNIX: u32 = 1;
-pub const AF_INET: u32 = 2;
-pub const AF_AX25: u32 = 3;
-pub const AF_IPX: u32 = 4;
-pub const AF_APPLETALK: u32 = 5;
-pub const AF_NETROM: u32 = 6;
-pub const AF_BRIDGE: u32 = 7;
-pub const AF_ATMPVC: u32 = 8;
-pub const AF_X25: u32 = 9;
-pub const AF_INET6: u32 = 10;
-pub const AF_ROSE: u32 = 11;
-pub const AF_DECnet: u32 = 12;
-pub const AF_NETBEUI: u32 = 13;
-pub const AF_SECURITY: u32 = 14;
-pub const AF_KEY: u32 = 15;
-pub const AF_NETLINK: u32 = 16;
-pub const AF_PACKET: u32 = 17;
-pub const AF_ASH: u32 = 18;
-pub const AF_ECONET: u32 = 19;
-pub const AF_ATMSVC: u32 = 20;
-pub const AF_RDS: u32 = 21;
-pub const AF_SNA: u32 = 22;
-pub const AF_IRDA: u32 = 23;
-pub const AF_PPPOX: u32 = 24;
-pub const AF_WANPIPE: u32 = 25;
-pub const AF_LLC: u32 = 26;
-pub const AF_CAN: u32 = 29;
-pub const AF_TIPC: u32 = 30;
-pub const AF_BLUETOOTH: u32 = 31;
-pub const AF_IUCV: u32 = 32;
-pub const AF_RXRPC: u32 = 33;
-pub const AF_ISDN: u32 = 34;
-pub const AF_PHONET: u32 = 35;
-pub const AF_IEEE802154: u32 = 36;
-pub const AF_MAX: u32 = 37;
-pub const MSG_OOB: u32 = 1;
-pub const MSG_PEEK: u32 = 2;
-pub const MSG_DONTROUTE: u32 = 4;
-pub const MSG_CTRUNC: u32 = 8;
-pub const MSG_PROBE: u32 = 16;
-pub const MSG_TRUNC: u32 = 32;
-pub const MSG_EOR: u32 = 128;
-pub const MSG_WAITALL: u32 = 256;
-pub const MSG_FIN: u32 = 512;
-pub const MSG_SYN: u32 = 1024;
-pub const MSG_CONFIRM: u32 = 2048;
-pub const MSG_RST: u32 = 4096;
-pub const MSG_ERRQUEUE: u32 = 8192;
-pub const MSG_NOSIGNAL: u32 = 16384;
-pub const MSG_MORE: u32 = 32768;
-pub const MSG_CMSG_CLOEXEC: u32 = 1073741824;
-pub const STDIN_FILENO: u32 = 0;
-pub const STDOUT_FILENO: u32 = 1;
-pub const STDERR_FILENO: u32 = 2;
-pub const RWF_HIPRI: u32 = 1;
-pub const RWF_DSYNC: u32 = 2;
-pub const RWF_SYNC: u32 = 4;
-pub const RWF_NOWAIT: u32 = 8;
-pub const RWF_APPEND: u32 = 16;
-pub const EFD_SEMAPHORE: u32 = 1;
-pub const EFD_CLOEXEC: u32 = 524288;
-pub const EFD_NONBLOCK: u32 = 2048;
-pub const EPOLLIN: u32 = 1;
-pub const EPOLLPRI: u32 = 2;
-pub const EPOLLOUT: u32 = 4;
-pub const EPOLLERR: u32 = 8;
-pub const EPOLLHUP: u32 = 16;
-pub const EPOLLNVAL: u32 = 32;
-pub const EPOLLRDNORM: u32 = 64;
-pub const EPOLLRDBAND: u32 = 128;
-pub const EPOLLWRNORM: u32 = 256;
-pub const EPOLLWRBAND: u32 = 512;
-pub const EPOLLMSG: u32 = 1024;
-pub const EPOLLRDHUP: u32 = 8192;
-pub const EPOLLEXCLUSIVE: u32 = 268435456;
-pub const EPOLLWAKEUP: u32 = 536870912;
-pub const EPOLLONESHOT: u32 = 1073741824;
-pub const EPOLLET: u32 = 2147483648;
-pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336;
-pub const TFD_CREATE_FLAGS: u32 = 526336;
-pub const TFD_SETTIME_FLAGS: u32 = 1;
-pub const SCM_RIGHTS: u32 = 1;
-pub const SCM_CREDENTIALS: u32 = 2;
-pub const SCM_SECURITY: u32 = 3;
-pub const UFFD_API: u32 = 170;
-pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1;
-pub const UFFDIO_REGISTER_MODE_WP: u32 = 2;
-pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4;
-pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1;
-pub const UFFDIO_COPY_MODE_WP: u32 = 2;
-pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1;
-pub const SPLICE_F_MOVE: u32 = 1;
-pub const SPLICE_F_NONBLOCK: u32 = 2;
-pub const SPLICE_F_MORE: u32 = 4;
-pub const SPLICE_F_GIFT: u32 = 8;
-pub const MNT_FORCE: u32 = 1;
-pub const MNT_DETACH: u32 = 2;
-pub const MNT_EXPIRE: u32 = 4;
-pub const UMOUNT_NOFOLLOW: u32 = 8;
-pub const UMOUNT_UNUSED: u32 = 2147483648;
-pub type size_t = crate::ctypes::c_ulong;
-pub type ssize_t = crate::ctypes::c_long;
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 16usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_uid_t = __kernel_uid_t;
-pub type __kernel_old_gid_t = __kernel_gid_t;
-pub type __kernel_old_dev_t = crate::ctypes::c_uint;
-pub type __kernel_size_t = __kernel_ulong_t;
-pub type __kernel_ssize_t = __kernel_long_t;
-pub type __kernel_ptrdiff_t = __kernel_long_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_header_struct {
-pub version: __u32,
-pub pid: crate::ctypes::c_int,
-}
-pub type cap_user_header_t = *mut __user_cap_header_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_data_struct {
-pub effective: __u32,
-pub permitted: __u32,
-pub inheritable: __u32,
-}
-pub type cap_user_data_t = *mut __user_cap_data_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_cap_data__bindgen_ty_1; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize],
-pub rootid: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct f_owner_ex {
-pub type_: crate::ctypes::c_int,
-pub pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_off_t,
-pub l_len: __kernel_off_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock64 {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_loff_t,
-pub l_len: __kernel_loff_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct open_how {
-pub flags: __u64,
-pub mode: __u64,
-pub resolve: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct epoll_event {
-pub events: __poll_t,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v1 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub master_key_descriptor: [__u8; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_key {
-pub mode: __u32,
-pub raw: [__u8; 64usize],
-pub size: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v2 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub __reserved: [__u8; 4usize],
-pub master_key_identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_policy_ex_arg {
-pub policy_size: __u64,
-pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 {
-pub version: __u8,
-pub v1: fscrypt_policy_v1,
-pub v2: fscrypt_policy_v2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_key_specifier {
-pub type_: __u32,
-pub __reserved: __u32,
-pub u: fscrypt_key_specifier__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_key_specifier__bindgen_ty_1 {
-pub __reserved: [__u8; 32usize],
-pub descriptor: [__u8; 8usize],
-pub identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct fscrypt_provisioning_key_payload {
-pub type_: __u32,
-pub __reserved: __u32,
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-pub struct fscrypt_add_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub raw_size: __u32,
-pub key_id: __u32,
-pub __reserved: [__u32; 8usize],
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_remove_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub removal_status_flags: __u32,
-pub __reserved: [__u32; 5usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_key_status_arg {
-pub key_spec: fscrypt_key_specifier,
-pub __reserved: [__u32; 6usize],
-pub status: __u32,
-pub status_flags: __u32,
-pub user_count: __u32,
-pub __out_reserved: [__u32; 13usize],
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum fsconfig_command {
-FSCONFIG_SET_FLAG = 0,
-FSCONFIG_SET_STRING = 1,
-FSCONFIG_SET_BINARY = 2,
-FSCONFIG_SET_PATH = 3,
-FSCONFIG_SET_PATH_EMPTY = 4,
-FSCONFIG_SET_FD = 5,
-FSCONFIG_CMD_CREATE = 6,
-FSCONFIG_CMD_RECONFIGURE = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mount_attr {
-pub attr_set: __u64,
-pub attr_clr: __u64,
-pub propagation: __u64,
-pub userns_fd: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_clone_range {
-pub src_fd: __s64,
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_offset: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fstrim_range {
-pub start: __u64,
-pub len: __u64,
-pub minlen: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_dedupe_range_info {
-pub dest_fd: __s64,
-pub dest_offset: __u64,
-pub bytes_deduped: __u64,
-pub status: __s32,
-pub reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct file_dedupe_range {
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_count: __u16,
-pub reserved1: __u16,
-pub reserved2: __u32,
-pub info: __IncompleteArrayField<file_dedupe_range_info>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct files_stat_struct {
-pub nr_files: crate::ctypes::c_ulong,
-pub nr_free_files: crate::ctypes::c_ulong,
-pub max_files: crate::ctypes::c_ulong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct inodes_stat_t {
-pub nr_inodes: crate::ctypes::c_long,
-pub nr_unused: crate::ctypes::c_long,
-pub dummy: [crate::ctypes::c_long; 5usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fsxattr {
-pub fsx_xflags: __u32,
-pub fsx_extsize: __u32,
-pub fsx_nextents: __u32,
-pub fsx_projid: __u32,
-pub fsx_cowextsize: __u32,
-pub fsx_pad: [crate::ctypes::c_uchar; 8usize],
-}
-pub type __kernel_rwf_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct futex_waitv {
-pub val: __u64,
-pub uaddr: __u64,
-pub flags: __u32,
-pub __reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list {
-pub next: *mut robust_list,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list_head {
-pub list: robust_list,
-pub futex_offset: crate::ctypes::c_long,
-pub list_op_pending: *mut robust_list,
-}
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP;
-pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP;
-pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP;
-pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP;
-pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP;
-pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP;
-pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP;
-pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP;
-pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP;
-pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP;
-pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP;
-pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6;
-pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP;
-pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE;
-pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP;
-pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH;
-pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP;
-pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH;
-pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP;
-pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM;
-pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP;
-pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP;
-pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP;
-pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE;
-pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS;
-pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET;
-pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW;
-pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP;
-pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-IPPROTO_IP = 0,
-IPPROTO_ICMP = 1,
-IPPROTO_IGMP = 2,
-IPPROTO_IPIP = 4,
-IPPROTO_TCP = 6,
-IPPROTO_EGP = 8,
-IPPROTO_PUP = 12,
-IPPROTO_UDP = 17,
-IPPROTO_IDP = 22,
-IPPROTO_TP = 29,
-IPPROTO_DCCP = 33,
-IPPROTO_IPV6 = 41,
-IPPROTO_RSVP = 46,
-IPPROTO_GRE = 47,
-IPPROTO_ESP = 50,
-IPPROTO_AH = 51,
-IPPROTO_MTP = 92,
-IPPROTO_BEETPH = 94,
-IPPROTO_ENCAP = 98,
-IPPROTO_PIM = 103,
-IPPROTO_COMP = 108,
-IPPROTO_L2TP = 115,
-IPPROTO_SCTP = 132,
-IPPROTO_UDPLITE = 136,
-IPPROTO_MPLS = 137,
-IPPROTO_ETHERNET = 143,
-IPPROTO_RAW = 255,
-IPPROTO_MPTCP = 262,
-IPPROTO_MAX = 263,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_addr {
-pub s_addr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq {
-pub imr_multiaddr: in_addr,
-pub imr_interface: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreqn {
-pub imr_multiaddr: in_addr,
-pub imr_address: in_addr,
-pub imr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq_source {
-pub imr_multiaddr: __be32,
-pub imr_interface: __be32,
-pub imr_sourceaddr: __be32,
-}
-#[repr(C)]
-pub struct ip_msfilter {
-pub imsf_multiaddr: __be32,
-pub imsf_interface: __be32,
-pub imsf_fmode: __u32,
-pub imsf_numsrc: __u32,
-pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct ip_msfilter__bindgen_ty_1 {
-pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>,
-pub __bindgen_anon_1: __BindgenUnionField<ip_msfilter__bindgen_ty_1__bindgen_ty_1>,
-pub bindgen_union_field: u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 {
-pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-pub imsf_slist_flex: __IncompleteArrayField<__be32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_req {
-pub gr_interface: __u32,
-pub gr_group: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_source_req {
-pub gsr_interface: __u32,
-pub gsr_group: __kernel_sockaddr_storage,
-pub gsr_source: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-pub struct group_filter {
-pub __bindgen_anon_1: group_filter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_1>,
-pub __bindgen_anon_2: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_2>,
-pub bindgen_union_field: [u64; 34usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_1 {
-pub gf_interface_aux: __u32,
-pub gf_group_aux: __kernel_sockaddr_storage,
-pub gf_fmode_aux: __u32,
-pub gf_numsrc_aux: __u32,
-pub gf_slist: [__kernel_sockaddr_storage; 1usize],
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_2 {
-pub gf_interface: __u32,
-pub gf_group: __kernel_sockaddr_storage,
-pub gf_fmode: __u32,
-pub gf_numsrc: __u32,
-pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_pktinfo {
-pub ipi_ifindex: crate::ctypes::c_int,
-pub ipi_spec_dst: in_addr,
-pub ipi_addr: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_in {
-pub sin_family: __kernel_sa_family_t,
-pub sin_port: __be16,
-pub sin_addr: in_addr,
-pub __pad: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct inotify_event {
-pub wd: __s32,
-pub mask: __u32,
-pub cookie: __u32,
-pub len: __u32,
-pub name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct iphdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub tos: __u8,
-pub tot_len: __be16,
-pub id: __be16,
-pub frag_off: __be16,
-pub ttl: __u8,
-pub protocol: __u8,
-pub check: __sum16,
-pub __bindgen_anon_1: iphdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union iphdr__bindgen_ty_1 {
-pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-impl iphdr {
-#[inline]
-pub fn ihl(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_ihl(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let ihl: u8 = unsafe { ::core::mem::transmute(ihl) };
-ihl as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_auth_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub reserved: __be16,
-pub spi: __be32,
-pub seq_no: __be32,
-pub auth_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_esp_hdr {
-pub spi: __be32,
-pub seq_no: __be32,
-pub enc_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_comp_hdr {
-pub nexthdr: __u8,
-pub flags: __u8,
-pub cpi: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_beet_phdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub padlen: __u8,
-pub reserved: __u8,
-}
-pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING;
-pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING;
-pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP;
-pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS;
-pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS;
-pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS;
-pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA;
-pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER;
-pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY;
-pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS;
-pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG;
-pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER;
-pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID;
-pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM;
-pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY;
-pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION;
-pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE;
-pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE;
-pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES;
-pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT;
-pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY;
-pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL;
-pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK;
-pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN;
-pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET;
-pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP;
-pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING;
-pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER;
-pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IPV4_DEVCONF_FORWARDING = 1,
-IPV4_DEVCONF_MC_FORWARDING = 2,
-IPV4_DEVCONF_PROXY_ARP = 3,
-IPV4_DEVCONF_ACCEPT_REDIRECTS = 4,
-IPV4_DEVCONF_SECURE_REDIRECTS = 5,
-IPV4_DEVCONF_SEND_REDIRECTS = 6,
-IPV4_DEVCONF_SHARED_MEDIA = 7,
-IPV4_DEVCONF_RP_FILTER = 8,
-IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9,
-IPV4_DEVCONF_BOOTP_RELAY = 10,
-IPV4_DEVCONF_LOG_MARTIANS = 11,
-IPV4_DEVCONF_TAG = 12,
-IPV4_DEVCONF_ARPFILTER = 13,
-IPV4_DEVCONF_MEDIUM_ID = 14,
-IPV4_DEVCONF_NOXFRM = 15,
-IPV4_DEVCONF_NOPOLICY = 16,
-IPV4_DEVCONF_FORCE_IGMP_VERSION = 17,
-IPV4_DEVCONF_ARP_ANNOUNCE = 18,
-IPV4_DEVCONF_ARP_IGNORE = 19,
-IPV4_DEVCONF_PROMOTE_SECONDARIES = 20,
-IPV4_DEVCONF_ARP_ACCEPT = 21,
-IPV4_DEVCONF_ARP_NOTIFY = 22,
-IPV4_DEVCONF_ACCEPT_LOCAL = 23,
-IPV4_DEVCONF_SRC_VMARK = 24,
-IPV4_DEVCONF_PROXY_ARP_PVLAN = 25,
-IPV4_DEVCONF_ROUTE_LOCALNET = 26,
-IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27,
-IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28,
-IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29,
-IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30,
-IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31,
-IPV4_DEVCONF_BC_FORWARDING = 32,
-IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33,
-__IPV4_DEVCONF_MAX = 34,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_addr {
-pub in6_u: in6_addr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union in6_addr__bindgen_ty_1 {
-pub u6_addr8: [__u8; 16usize],
-pub u6_addr16: [__be16; 8usize],
-pub u6_addr32: [__be32; 4usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr_in6 {
-pub sin6_family: crate::ctypes::c_ushort,
-pub sin6_port: __be16,
-pub sin6_flowinfo: __be32,
-pub sin6_addr: in6_addr,
-pub sin6_scope_id: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6_mreq {
-pub ipv6mr_multiaddr: in6_addr,
-pub ipv6mr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_flowlabel_req {
-pub flr_dst: in6_addr,
-pub flr_label: __be32,
-pub flr_action: __u8,
-pub flr_share: __u8,
-pub flr_flags: __u16,
-pub flr_expires: __u16,
-pub flr_linger: __u16,
-pub __flr_pad: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_pktinfo {
-pub ipi6_addr: in6_addr,
-pub ipi6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ip6_mtuinfo {
-pub ip6m_addr: sockaddr_in6,
-pub ip6m_mtu: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_ifreq {
-pub ifr6_addr: in6_addr,
-pub ifr6_prefixlen: __u32,
-pub ifr6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_rt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub type_: __u8,
-pub segments_left: __u8,
-}
-#[repr(C, packed)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_opt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-}
-#[repr(C)]
-pub struct rt0_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: __IncompleteArrayField<in6_addr>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rt2_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: in6_addr,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct ipv6_destopt_hao {
-pub type_: __u8,
-pub length: __u8,
-pub addr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub flow_lbl: [__u8; 3usize],
-pub payload_len: __be16,
-pub nexthdr: __u8,
-pub hop_limit: __u8,
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union ipv6hdr__bindgen_ty_1 {
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-impl ipv6hdr {
-#[inline]
-pub fn priority(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_priority(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let priority: u8 = unsafe { ::core::mem::transmute(priority) };
-priority as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING;
-pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT;
-pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6;
-pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA;
-pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS;
-pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF;
-pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS;
-pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS;
-pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL;
-pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY;
-pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR;
-pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT;
-pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT;
-pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY;
-pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR;
-pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES;
-pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION;
-pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR;
-pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO;
-pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF;
-pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN;
-pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP;
-pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD;
-pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING;
-pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6;
-pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD;
-pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO;
-pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY;
-pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC;
-pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL;
-pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC;
-pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU;
-pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET;
-pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY;
-pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT;
-pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA;
-pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN;
-pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL;
-pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED;
-pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC;
-pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD;
-pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE;
-pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN;
-pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS;
-pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED;
-pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC;
-pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED;
-pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID;
-pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE;
-pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER;
-pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA;
-pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-DEVCONF_FORWARDING = 0,
-DEVCONF_HOPLIMIT = 1,
-DEVCONF_MTU6 = 2,
-DEVCONF_ACCEPT_RA = 3,
-DEVCONF_ACCEPT_REDIRECTS = 4,
-DEVCONF_AUTOCONF = 5,
-DEVCONF_DAD_TRANSMITS = 6,
-DEVCONF_RTR_SOLICITS = 7,
-DEVCONF_RTR_SOLICIT_INTERVAL = 8,
-DEVCONF_RTR_SOLICIT_DELAY = 9,
-DEVCONF_USE_TEMPADDR = 10,
-DEVCONF_TEMP_VALID_LFT = 11,
-DEVCONF_TEMP_PREFERED_LFT = 12,
-DEVCONF_REGEN_MAX_RETRY = 13,
-DEVCONF_MAX_DESYNC_FACTOR = 14,
-DEVCONF_MAX_ADDRESSES = 15,
-DEVCONF_FORCE_MLD_VERSION = 16,
-DEVCONF_ACCEPT_RA_DEFRTR = 17,
-DEVCONF_ACCEPT_RA_PINFO = 18,
-DEVCONF_ACCEPT_RA_RTR_PREF = 19,
-DEVCONF_RTR_PROBE_INTERVAL = 20,
-DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21,
-DEVCONF_PROXY_NDP = 22,
-DEVCONF_OPTIMISTIC_DAD = 23,
-DEVCONF_ACCEPT_SOURCE_ROUTE = 24,
-DEVCONF_MC_FORWARDING = 25,
-DEVCONF_DISABLE_IPV6 = 26,
-DEVCONF_ACCEPT_DAD = 27,
-DEVCONF_FORCE_TLLAO = 28,
-DEVCONF_NDISC_NOTIFY = 29,
-DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30,
-DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31,
-DEVCONF_SUPPRESS_FRAG_NDISC = 32,
-DEVCONF_ACCEPT_RA_FROM_LOCAL = 33,
-DEVCONF_USE_OPTIMISTIC = 34,
-DEVCONF_ACCEPT_RA_MTU = 35,
-DEVCONF_STABLE_SECRET = 36,
-DEVCONF_USE_OIF_ADDRS_ONLY = 37,
-DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38,
-DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39,
-DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40,
-DEVCONF_DROP_UNSOLICITED_NA = 41,
-DEVCONF_KEEP_ADDR_ON_DOWN = 42,
-DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43,
-DEVCONF_SEG6_ENABLED = 44,
-DEVCONF_SEG6_REQUIRE_HMAC = 45,
-DEVCONF_ENHANCED_DAD = 46,
-DEVCONF_ADDR_GEN_MODE = 47,
-DEVCONF_DISABLE_POLICY = 48,
-DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49,
-DEVCONF_NDISC_TCLASS = 50,
-DEVCONF_RPL_SEG_ENABLED = 51,
-DEVCONF_RA_DEFRTR_METRIC = 52,
-DEVCONF_IOAM6_ENABLED = 53,
-DEVCONF_IOAM6_ID = 54,
-DEVCONF_IOAM6_ID_WIDE = 55,
-DEVCONF_NDISC_EVICT_NOCARRIER = 56,
-DEVCONF_ACCEPT_UNTRACKED_NA = 57,
-DEVCONF_MAX = 58,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum socket_state {
-SS_FREE = 0,
-SS_UNCONNECTED = 1,
-SS_CONNECTING = 2,
-SS_CONNECTED = 3,
-SS_DISCONNECTING = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct pollfd {
-pub fd: crate::ctypes::c_int,
-pub events: crate::ctypes::c_short,
-pub revents: crate::ctypes::c_short,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prctl_mm_map {
-pub start_code: __u64,
-pub end_code: __u64,
-pub start_data: __u64,
-pub end_data: __u64,
-pub start_brk: __u64,
-pub brk: __u64,
-pub start_stack: __u64,
-pub arg_start: __u64,
-pub arg_end: __u64,
-pub env_start: __u64,
-pub env_end: __u64,
-pub auxv: *mut __u64,
-pub auxv_size: __u32,
-pub exe_fd: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rand_pool_info {
-pub entropy_count: crate::ctypes::c_int,
-pub buf_size: crate::ctypes::c_int,
-pub buf: __IncompleteArrayField<__u32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_timespec {
-pub tv_sec: __kernel_time64_t,
-pub tv_nsec: crate::ctypes::c_longlong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_itimerspec {
-pub it_interval: __kernel_timespec,
-pub it_value: __kernel_timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timeval {
-pub tv_sec: __kernel_long_t,
-pub tv_usec: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_itimerval {
-pub it_interval: __kernel_old_timeval,
-pub it_value: __kernel_old_timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sock_timeval {
-pub tv_sec: __s64,
-pub tv_usec: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timeval {
-pub tv_sec: __kernel_old_time_t,
-pub tv_usec: __kernel_suseconds_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerspec {
-pub it_interval: timespec,
-pub it_value: timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerval {
-pub it_interval: timeval,
-pub it_value: timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timezone {
-pub tz_minuteswest: crate::ctypes::c_int,
-pub tz_dsttime: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rusage {
-pub ru_utime: __kernel_old_timeval,
-pub ru_stime: __kernel_old_timeval,
-pub ru_maxrss: __kernel_long_t,
-pub ru_ixrss: __kernel_long_t,
-pub ru_idrss: __kernel_long_t,
-pub ru_isrss: __kernel_long_t,
-pub ru_minflt: __kernel_long_t,
-pub ru_majflt: __kernel_long_t,
-pub ru_nswap: __kernel_long_t,
-pub ru_inblock: __kernel_long_t,
-pub ru_oublock: __kernel_long_t,
-pub ru_msgsnd: __kernel_long_t,
-pub ru_msgrcv: __kernel_long_t,
-pub ru_nsignals: __kernel_long_t,
-pub ru_nvcsw: __kernel_long_t,
-pub ru_nivcsw: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit {
-pub rlim_cur: __kernel_ulong_t,
-pub rlim_max: __kernel_ulong_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit64 {
-pub rlim_cur: __u64,
-pub rlim_max: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct clone_args {
-pub flags: __u64,
-pub pidfd: __u64,
-pub child_tid: __u64,
-pub parent_tid: __u64,
-pub exit_signal: __u64,
-pub stack: __u64,
-pub stack_size: __u64,
-pub tls: __u64,
-pub set_tid: __u64,
-pub set_tid_size: __u64,
-pub cgroup: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigset_t {
-pub sig: [crate::ctypes::c_ulong; 1usize],
-}
-pub type old_sigset_t = crate::ctypes::c_ulong;
-pub type __signalfn_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __sighandler_t = __signalfn_t;
-pub type __restorefn_t = ::core::option::Option<unsafe extern "C" fn()>;
-pub type __sigrestore_t = __restorefn_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaction {
-pub sa_handler: __sighandler_t,
-pub sa_flags: crate::ctypes::c_ulong,
-pub sa_mask: sigset_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaltstack {
-pub ss_sp: *mut crate::ctypes::c_void,
-pub ss_flags: crate::ctypes::c_int,
-pub ss_size: __kernel_size_t,
-}
-pub type stack_t = sigaltstack;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigval {
-pub sival_int: crate::ctypes::c_int,
-pub sival_ptr: *mut crate::ctypes::c_void,
-}
-pub type sigval_t = sigval;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields {
-pub _kill: __sifields__bindgen_ty_1,
-pub _timer: __sifields__bindgen_ty_2,
-pub _rt: __sifields__bindgen_ty_3,
-pub _sigchld: __sifields__bindgen_ty_4,
-pub _sigfault: __sifields__bindgen_ty_5,
-pub _sigpoll: __sifields__bindgen_ty_6,
-pub _sigsys: __sifields__bindgen_ty_7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_1 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_2 {
-pub _tid: __kernel_timer_t,
-pub _overrun: crate::ctypes::c_int,
-pub _sigval: sigval_t,
-pub _sys_private: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_3 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _sigval: sigval_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_4 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _status: crate::ctypes::c_int,
-pub _utime: __kernel_clock_t,
-pub _stime: __kernel_clock_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_5 {
-pub _addr: *mut crate::ctypes::c_void,
-pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields__bindgen_ty_5__bindgen_ty_1 {
-pub _trapno: crate::ctypes::c_int,
-pub _addr_lsb: crate::ctypes::c_short,
-pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1,
-pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2,
-pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {
-pub _dummy_bnd: [crate::ctypes::c_char; 8usize],
-pub _lower: *mut crate::ctypes::c_void,
-pub _upper: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 {
-pub _dummy_pkey: [crate::ctypes::c_char; 8usize],
-pub _pkey: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 {
-pub _data: crate::ctypes::c_ulong,
-pub _type: __u32,
-pub _flags: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_6 {
-pub _band: crate::ctypes::c_long,
-pub _fd: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_7 {
-pub _call_addr: *mut crate::ctypes::c_void,
-pub _syscall: crate::ctypes::c_int,
-pub _arch: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union siginfo__bindgen_ty_1 {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1,
-pub _si_pad: [crate::ctypes::c_int; 32usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo__bindgen_ty_1__bindgen_ty_1 {
-pub si_signo: crate::ctypes::c_int,
-pub si_errno: crate::ctypes::c_int,
-pub si_code: crate::ctypes::c_int,
-pub _sifields: __sifields,
-}
-pub type siginfo_t = siginfo;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sigevent {
-pub sigev_value: sigval_t,
-pub sigev_signo: crate::ctypes::c_int,
-pub sigev_notify: crate::ctypes::c_int,
-pub _sigev_un: sigevent__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigevent__bindgen_ty_1 {
-pub _pad: [crate::ctypes::c_int; 12usize],
-pub _tid: crate::ctypes::c_int,
-pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigevent__bindgen_ty_1__bindgen_ty_1 {
-pub _function: ::core::option::Option<unsafe extern "C" fn(arg1: sigval_t)>,
-pub _attribute: *mut crate::ctypes::c_void,
-}
-pub type sigevent_t = sigevent;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx_timestamp {
-pub tv_sec: __s64,
-pub tv_nsec: __u32,
-pub __reserved: __s32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx {
-pub stx_mask: __u32,
-pub stx_blksize: __u32,
-pub stx_attributes: __u64,
-pub stx_nlink: __u32,
-pub stx_uid: __u32,
-pub stx_gid: __u32,
-pub stx_mode: __u16,
-pub __spare0: [__u16; 1usize],
-pub stx_ino: __u64,
-pub stx_size: __u64,
-pub stx_blocks: __u64,
-pub stx_attributes_mask: __u64,
-pub stx_atime: statx_timestamp,
-pub stx_btime: statx_timestamp,
-pub stx_ctime: statx_timestamp,
-pub stx_mtime: statx_timestamp,
-pub stx_rdev_major: __u32,
-pub stx_rdev_minor: __u32,
-pub stx_dev_major: __u32,
-pub stx_dev_minor: __u32,
-pub stx_mnt_id: __u64,
-pub stx_dio_mem_align: __u32,
-pub stx_dio_offset_align: __u32,
-pub __spare3: [__u64; 12usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct sysinfo {
-pub uptime: __kernel_long_t,
-pub loads: [__kernel_ulong_t; 3usize],
-pub totalram: __kernel_ulong_t,
-pub freeram: __kernel_ulong_t,
-pub sharedram: __kernel_ulong_t,
-pub bufferram: __kernel_ulong_t,
-pub totalswap: __kernel_ulong_t,
-pub freeswap: __kernel_ulong_t,
-pub procs: __u16,
-pub pad: __u16,
-pub totalhigh: __kernel_ulong_t,
-pub freehigh: __kernel_ulong_t,
-pub mem_unit: __u32,
-pub _f: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcphdr {
-pub source: __be16,
-pub dest: __be16,
-pub seq: __be32,
-pub ack_seq: __be32,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub window: __be16,
-pub check: __sum16,
-pub urg_ptr: __be16,
-}
-impl tcphdr {
-#[inline]
-pub fn res1(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_res1(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn doff(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_doff(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn fin(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_fin(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn syn(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_syn(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn rst(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_rst(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(10usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn psh(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_psh(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(11usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ack(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ack(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(12usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn urg(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_urg(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(13usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ece(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ece(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(14usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn cwr(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_cwr(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(15usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let res1: u16 = unsafe { ::core::mem::transmute(res1) };
-res1 as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let doff: u16 = unsafe { ::core::mem::transmute(doff) };
-doff as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let fin: u16 = unsafe { ::core::mem::transmute(fin) };
-fin as u64
-});
-__bindgen_bitfield_unit.set(9usize, 1u8, {
-let syn: u16 = unsafe { ::core::mem::transmute(syn) };
-syn as u64
-});
-__bindgen_bitfield_unit.set(10usize, 1u8, {
-let rst: u16 = unsafe { ::core::mem::transmute(rst) };
-rst as u64
-});
-__bindgen_bitfield_unit.set(11usize, 1u8, {
-let psh: u16 = unsafe { ::core::mem::transmute(psh) };
-psh as u64
-});
-__bindgen_bitfield_unit.set(12usize, 1u8, {
-let ack: u16 = unsafe { ::core::mem::transmute(ack) };
-ack as u64
-});
-__bindgen_bitfield_unit.set(13usize, 1u8, {
-let urg: u16 = unsafe { ::core::mem::transmute(urg) };
-urg as u64
-});
-__bindgen_bitfield_unit.set(14usize, 1u8, {
-let ece: u16 = unsafe { ::core::mem::transmute(ece) };
-ece as u64
-});
-__bindgen_bitfield_unit.set(15usize, 1u8, {
-let cwr: u16 = unsafe { ::core::mem::transmute(cwr) };
-cwr as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union tcp_word_hdr {
-pub hdr: tcphdr,
-pub words: [__be32; 5usize],
-}
-pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR;
-pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE;
-pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG;
-pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK;
-pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH;
-pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST;
-pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN;
-pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN;
-pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS;
-pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-TCP_FLAG_CWR = 32768,
-TCP_FLAG_ECE = 16384,
-TCP_FLAG_URG = 8192,
-TCP_FLAG_ACK = 4096,
-TCP_FLAG_PSH = 2048,
-TCP_FLAG_RST = 1024,
-TCP_FLAG_SYN = 512,
-TCP_FLAG_FIN = 256,
-TCP_RESERVED_BITS = 15,
-TCP_DATA_OFFSET = 240,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_opt {
-pub opt_code: __u32,
-pub opt_val: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_window {
-pub snd_wl1: __u32,
-pub snd_wnd: __u32,
-pub max_window: __u32,
-pub rcv_wnd: __u32,
-pub rcv_wup: __u32,
-}
-pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE;
-pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE;
-pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE;
-pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-TCP_NO_QUEUE = 0,
-TCP_RECV_QUEUE = 1,
-TCP_SEND_QUEUE = 2,
-TCP_QUEUES_NR = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_fastopen_client_fail {
-TFO_STATUS_UNSPEC = 0,
-TFO_COOKIE_UNAVAILABLE = 1,
-TFO_DATA_NOT_ACKED = 2,
-TFO_SYN_RETRANSMITTED = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_ca_state {
-TCP_CA_Open = 0,
-TCP_CA_Disorder = 1,
-TCP_CA_CWR = 2,
-TCP_CA_Recovery = 3,
-TCP_CA_Loss = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_info {
-pub tcpi_state: __u8,
-pub tcpi_ca_state: __u8,
-pub tcpi_retransmits: __u8,
-pub tcpi_probes: __u8,
-pub tcpi_backoff: __u8,
-pub tcpi_options: __u8,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub tcpi_rto: __u32,
-pub tcpi_ato: __u32,
-pub tcpi_snd_mss: __u32,
-pub tcpi_rcv_mss: __u32,
-pub tcpi_unacked: __u32,
-pub tcpi_sacked: __u32,
-pub tcpi_lost: __u32,
-pub tcpi_retrans: __u32,
-pub tcpi_fackets: __u32,
-pub tcpi_last_data_sent: __u32,
-pub tcpi_last_ack_sent: __u32,
-pub tcpi_last_data_recv: __u32,
-pub tcpi_last_ack_recv: __u32,
-pub tcpi_pmtu: __u32,
-pub tcpi_rcv_ssthresh: __u32,
-pub tcpi_rtt: __u32,
-pub tcpi_rttvar: __u32,
-pub tcpi_snd_ssthresh: __u32,
-pub tcpi_snd_cwnd: __u32,
-pub tcpi_advmss: __u32,
-pub tcpi_reordering: __u32,
-pub tcpi_rcv_rtt: __u32,
-pub tcpi_rcv_space: __u32,
-pub tcpi_total_retrans: __u32,
-pub tcpi_pacing_rate: __u64,
-pub tcpi_max_pacing_rate: __u64,
-pub tcpi_bytes_acked: __u64,
-pub tcpi_bytes_received: __u64,
-pub tcpi_segs_out: __u32,
-pub tcpi_segs_in: __u32,
-pub tcpi_notsent_bytes: __u32,
-pub tcpi_min_rtt: __u32,
-pub tcpi_data_segs_in: __u32,
-pub tcpi_data_segs_out: __u32,
-pub tcpi_delivery_rate: __u64,
-pub tcpi_busy_time: __u64,
-pub tcpi_rwnd_limited: __u64,
-pub tcpi_sndbuf_limited: __u64,
-pub tcpi_delivered: __u32,
-pub tcpi_delivered_ce: __u32,
-pub tcpi_bytes_sent: __u64,
-pub tcpi_bytes_retrans: __u64,
-pub tcpi_dsack_dups: __u32,
-pub tcpi_reord_seen: __u32,
-pub tcpi_rcv_ooopack: __u32,
-pub tcpi_snd_wnd: __u32,
-pub tcpi_rcv_wnd: __u32,
-pub tcpi_rehash: __u32,
-}
-impl tcp_info {
-#[inline]
-pub fn tcpi_snd_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_snd_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_rcv_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_fastopen_client_fail(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) };
-tcpi_snd_wscale as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) };
-tcpi_rcv_wscale as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) };
-tcpi_delivery_rate_app_limited as u64
-});
-__bindgen_bitfield_unit.set(9usize, 2u8, {
-let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) };
-tcpi_fastopen_client_fail as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD;
-pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY;
-pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED;
-pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED;
-pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT;
-pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS;
-pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE;
-pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE;
-pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND;
-pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING;
-pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT;
-pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS;
-pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT;
-pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE;
-pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE;
-pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH;
-pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED;
-pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE;
-pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT;
-pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS;
-pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS;
-pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN;
-pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT;
-pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH;
-pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT;
-pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
-pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
-pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-TCP_NLA_PAD = 0,
-TCP_NLA_BUSY = 1,
-TCP_NLA_RWND_LIMITED = 2,
-TCP_NLA_SNDBUF_LIMITED = 3,
-TCP_NLA_DATA_SEGS_OUT = 4,
-TCP_NLA_TOTAL_RETRANS = 5,
-TCP_NLA_PACING_RATE = 6,
-TCP_NLA_DELIVERY_RATE = 7,
-TCP_NLA_SND_CWND = 8,
-TCP_NLA_REORDERING = 9,
-TCP_NLA_MIN_RTT = 10,
-TCP_NLA_RECUR_RETRANS = 11,
-TCP_NLA_DELIVERY_RATE_APP_LMT = 12,
-TCP_NLA_SNDQ_SIZE = 13,
-TCP_NLA_CA_STATE = 14,
-TCP_NLA_SND_SSTHRESH = 15,
-TCP_NLA_DELIVERED = 16,
-TCP_NLA_DELIVERED_CE = 17,
-TCP_NLA_BYTES_SENT = 18,
-TCP_NLA_BYTES_RETRANS = 19,
-TCP_NLA_DSACK_DUPS = 20,
-TCP_NLA_REORD_SEEN = 21,
-TCP_NLA_SRTT = 22,
-TCP_NLA_TIMEOUT_REHASH = 23,
-TCP_NLA_BYTES_NOTSENT = 24,
-TCP_NLA_EDT = 25,
-TCP_NLA_TTL = 26,
-TCP_NLA_REHASH = 27,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct tcp_md5sig {
-pub tcpm_addr: __kernel_sockaddr_storage,
-pub tcpm_flags: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_ifindex: crate::ctypes::c_int,
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_diag_md5sig {
-pub tcpm_family: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_addr: [__be32; 4usize],
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_zerocopy_receive {
-pub address: __u64,
-pub length: __u32,
-pub recv_skip_hint: __u32,
-pub inq: __u32,
-pub err: __s32,
-pub copybuf_address: __u64,
-pub copybuf_len: __s32,
-pub flags: __u32,
-pub msg_control: __u64,
-pub msg_controllen: __u64,
-pub msg_flags: __u32,
-pub reserved: __u32,
-}
-pub type cc_t = crate::ctypes::c_uchar;
-pub type speed_t = crate::ctypes::c_uint;
-pub type tcflag_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios2 {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ktermios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct winsize {
-pub ws_row: crate::ctypes::c_ushort,
-pub ws_col: crate::ctypes::c_ushort,
-pub ws_xpixel: crate::ctypes::c_ushort,
-pub ws_ypixel: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termio {
-pub c_iflag: crate::ctypes::c_ushort,
-pub c_oflag: crate::ctypes::c_ushort,
-pub c_cflag: crate::ctypes::c_ushort,
-pub c_lflag: crate::ctypes::c_ushort,
-pub c_line: crate::ctypes::c_uchar,
-pub c_cc: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iovec {
-pub iov_base: *mut crate::ctypes::c_void,
-pub iov_len: __kernel_size_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_un {
-pub sun_family: __kernel_sa_family_t,
-pub sun_path: [crate::ctypes::c_char; 108usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct oldold_utsname {
-pub sysname: [crate::ctypes::c_char; 9usize],
-pub nodename: [crate::ctypes::c_char; 9usize],
-pub release: [crate::ctypes::c_char; 9usize],
-pub version: [crate::ctypes::c_char; 9usize],
-pub machine: [crate::ctypes::c_char; 9usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct old_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct new_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-pub domainname: [crate::ctypes::c_char; 65usize],
-}
-impl membarrier_cmd {
-pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd {
-MEMBARRIER_CMD_QUERY = 0,
-MEMBARRIER_CMD_GLOBAL = 1,
-MEMBARRIER_CMD_GLOBAL_EXPEDITED = 2,
-MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = 4,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED = 8,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = 16,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = 32,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = 64,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = 128,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = 256,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd_flag {
-MEMBARRIER_CMD_FLAG_CPU = 1,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg {
-pub event: __u8,
-pub reserved1: __u8,
-pub reserved2: __u16,
-pub reserved3: __u32,
-pub arg: uffd_msg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1 {
-pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1,
-pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2,
-pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3,
-pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4,
-pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 {
-pub flags: __u64,
-pub address: __u64,
-pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {
-pub ptid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 {
-pub ufd: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 {
-pub from: __u64,
-pub to: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 {
-pub start: __u64,
-pub end: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 {
-pub reserved1: __u64,
-pub reserved2: __u64,
-pub reserved3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_api {
-pub api: __u64,
-pub features: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_range {
-pub start: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_register {
-pub range: uffdio_range,
-pub mode: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_copy {
-pub dst: __u64,
-pub src: __u64,
-pub len: __u64,
-pub mode: __u64,
-pub copy: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_zeropage {
-pub range: uffdio_range,
-pub mode: __u64,
-pub zeropage: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_writeprotect {
-pub range: uffdio_range,
-pub mode: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_continue {
-pub range: uffdio_range,
-pub mode: __u64,
-pub mapped: __s64,
-}
-#[repr(C)]
-pub struct io_uring_sqe {
-pub opcode: __u8,
-pub flags: __u8,
-pub ioprio: __u16,
-pub fd: __s32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1,
-pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2,
-pub len: __u32,
-pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3,
-pub user_data: __u64,
-pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4,
-pub personality: __u16,
-pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5,
-pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_1 {
-pub off: __u64,
-pub addr2: __u64,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 {
-pub cmd_op: __u32,
-pub __pad1: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_2 {
-pub addr: __u64,
-pub splice_off_in: __u64,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_3 {
-pub rw_flags: __kernel_rwf_t,
-pub fsync_flags: __u32,
-pub poll_events: __u16,
-pub poll32_events: __u32,
-pub sync_range_flags: __u32,
-pub msg_flags: __u32,
-pub timeout_flags: __u32,
-pub accept_flags: __u32,
-pub cancel_flags: __u32,
-pub open_flags: __u32,
-pub statx_flags: __u32,
-pub fadvise_advice: __u32,
-pub splice_flags: __u32,
-pub rename_flags: __u32,
-pub unlink_flags: __u32,
-pub hardlink_flags: __u32,
-pub xattr_flags: __u32,
-pub msg_ring_flags: __u32,
-pub uring_cmd_flags: __u32,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_4 {
-pub buf_index: __u16,
-pub buf_group: __u16,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_5 {
-pub splice_fd_in: __s32,
-pub file_index: __u32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 {
-pub addr_len: __u16,
-pub __pad3: [__u16; 1usize],
-}
-#[repr(C)]
-pub struct io_uring_sqe__bindgen_ty_6 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_sqe__bindgen_ty_6__bindgen_ty_1>,
-pub cmd: __BindgenUnionField<[__u8; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 {
-pub addr3: __u64,
-pub __pad2: [__u64; 1usize],
-}
-pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT;
-pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT;
-pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT;
-pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT;
-pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT;
-pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT;
-pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-IOSQE_FIXED_FILE_BIT = 0,
-IOSQE_IO_DRAIN_BIT = 1,
-IOSQE_IO_LINK_BIT = 2,
-IOSQE_IO_HARDLINK_BIT = 3,
-IOSQE_ASYNC_BIT = 4,
-IOSQE_BUFFER_SELECT_BIT = 5,
-IOSQE_CQE_SKIP_SUCCESS_BIT = 6,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum io_uring_op {
-IORING_OP_NOP = 0,
-IORING_OP_READV = 1,
-IORING_OP_WRITEV = 2,
-IORING_OP_FSYNC = 3,
-IORING_OP_READ_FIXED = 4,
-IORING_OP_WRITE_FIXED = 5,
-IORING_OP_POLL_ADD = 6,
-IORING_OP_POLL_REMOVE = 7,
-IORING_OP_SYNC_FILE_RANGE = 8,
-IORING_OP_SENDMSG = 9,
-IORING_OP_RECVMSG = 10,
-IORING_OP_TIMEOUT = 11,
-IORING_OP_TIMEOUT_REMOVE = 12,
-IORING_OP_ACCEPT = 13,
-IORING_OP_ASYNC_CANCEL = 14,
-IORING_OP_LINK_TIMEOUT = 15,
-IORING_OP_CONNECT = 16,
-IORING_OP_FALLOCATE = 17,
-IORING_OP_OPENAT = 18,
-IORING_OP_CLOSE = 19,
-IORING_OP_FILES_UPDATE = 20,
-IORING_OP_STATX = 21,
-IORING_OP_READ = 22,
-IORING_OP_WRITE = 23,
-IORING_OP_FADVISE = 24,
-IORING_OP_MADVISE = 25,
-IORING_OP_SEND = 26,
-IORING_OP_RECV = 27,
-IORING_OP_OPENAT2 = 28,
-IORING_OP_EPOLL_CTL = 29,
-IORING_OP_SPLICE = 30,
-IORING_OP_PROVIDE_BUFFERS = 31,
-IORING_OP_REMOVE_BUFFERS = 32,
-IORING_OP_TEE = 33,
-IORING_OP_SHUTDOWN = 34,
-IORING_OP_RENAMEAT = 35,
-IORING_OP_UNLINKAT = 36,
-IORING_OP_MKDIRAT = 37,
-IORING_OP_SYMLINKAT = 38,
-IORING_OP_LINKAT = 39,
-IORING_OP_MSG_RING = 40,
-IORING_OP_FSETXATTR = 41,
-IORING_OP_SETXATTR = 42,
-IORING_OP_FGETXATTR = 43,
-IORING_OP_GETXATTR = 44,
-IORING_OP_SOCKET = 45,
-IORING_OP_URING_CMD = 46,
-IORING_OP_SEND_ZC = 47,
-IORING_OP_SENDMSG_ZC = 48,
-IORING_OP_LAST = 49,
-}
-pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA;
-pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IORING_MSG_DATA = 0,
-IORING_MSG_SEND_FD = 1,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_cqe {
-pub user_data: __u64,
-pub res: __s32,
-pub flags: __u32,
-pub big_cqe: __IncompleteArrayField<__u64>,
-}
-pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IORING_CQE_BUFFER_SHIFT = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_sqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub flags: __u32,
-pub dropped: __u32,
-pub array: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_cqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub overflow: __u32,
-pub cqes: __u32,
-pub flags: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_params {
-pub sq_entries: __u32,
-pub cq_entries: __u32,
-pub flags: __u32,
-pub sq_thread_cpu: __u32,
-pub sq_thread_idle: __u32,
-pub features: __u32,
-pub wq_fd: __u32,
-pub resv: [__u32; 3usize],
-pub sq_off: io_sqring_offsets,
-pub cq_off: io_cqring_offsets,
-}
-pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS;
-pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS;
-pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES;
-pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES;
-pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD;
-pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD;
-pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE;
-pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC;
-pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE;
-pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY;
-pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY;
-pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS;
-pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS;
-pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2;
-pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2;
-pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2;
-pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE;
-pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF;
-pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF;
-pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS;
-pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS;
-pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS;
-pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING;
-pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING;
-pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL;
-pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE;
-pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IORING_REGISTER_BUFFERS = 0,
-IORING_UNREGISTER_BUFFERS = 1,
-IORING_REGISTER_FILES = 2,
-IORING_UNREGISTER_FILES = 3,
-IORING_REGISTER_EVENTFD = 4,
-IORING_UNREGISTER_EVENTFD = 5,
-IORING_REGISTER_FILES_UPDATE = 6,
-IORING_REGISTER_EVENTFD_ASYNC = 7,
-IORING_REGISTER_PROBE = 8,
-IORING_REGISTER_PERSONALITY = 9,
-IORING_UNREGISTER_PERSONALITY = 10,
-IORING_REGISTER_RESTRICTIONS = 11,
-IORING_REGISTER_ENABLE_RINGS = 12,
-IORING_REGISTER_FILES2 = 13,
-IORING_REGISTER_FILES_UPDATE2 = 14,
-IORING_REGISTER_BUFFERS2 = 15,
-IORING_REGISTER_BUFFERS_UPDATE = 16,
-IORING_REGISTER_IOWQ_AFF = 17,
-IORING_UNREGISTER_IOWQ_AFF = 18,
-IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
-IORING_REGISTER_RING_FDS = 20,
-IORING_UNREGISTER_RING_FDS = 21,
-IORING_REGISTER_PBUF_RING = 22,
-IORING_UNREGISTER_PBUF_RING = 23,
-IORING_REGISTER_SYNC_CANCEL = 24,
-IORING_REGISTER_FILE_ALLOC_RANGE = 25,
-IORING_REGISTER_LAST = 26,
-}
-pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND;
-pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IO_WQ_BOUND = 0,
-IO_WQ_UNBOUND = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_files_update {
-pub offset: __u32,
-pub resv: __u32,
-pub fds: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_register {
-pub nr: __u32,
-pub flags: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub tags: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update2 {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-pub tags: __u64,
-pub nr: __u32,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_slot {
-pub tag: __u64,
-pub resv: [__u64; 3usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_register {
-pub nr_slots: __u32,
-pub resv: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub resv3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_probe_op {
-pub op: __u8,
-pub resv: __u8,
-pub flags: __u16,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_probe {
-pub last_op: __u8,
-pub ops_len: __u8,
-pub resv: __u16,
-pub resv2: [__u32; 3usize],
-pub ops: __IncompleteArrayField<io_uring_probe_op>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct io_uring_restriction {
-pub opcode: __u16,
-pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1,
-pub resv: __u8,
-pub resv2: [__u32; 3usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_restriction__bindgen_ty_1 {
-pub register_op: __u8,
-pub sqe_op: __u8,
-pub sqe_flags: __u8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf {
-pub addr: __u64,
-pub len: __u32,
-pub bid: __u16,
-pub resv: __u16,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring {
-pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1>,
-pub bufs: __BindgenUnionField<[io_uring_buf; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 {
-pub resv1: __u64,
-pub resv2: __u32,
-pub resv3: __u16,
-pub tail: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_reg {
-pub ring_addr: __u64,
-pub ring_entries: __u32,
-pub bgid: __u16,
-pub pad: __u16,
-pub resv: [__u64; 3usize],
-}
-pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP;
-pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP;
-pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED;
-pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED;
-pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IORING_RESTRICTION_REGISTER_OP = 0,
-IORING_RESTRICTION_SQE_OP = 1,
-IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2,
-IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3,
-IORING_RESTRICTION_LAST = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_getevents_arg {
-pub sigmask: __u64,
-pub sigmask_sz: __u32,
-pub pad: __u32,
-pub ts: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sync_cancel_reg {
-pub addr: __u64,
-pub fd: __s32,
-pub flags: __u32,
-pub timeout: __kernel_timespec,
-pub pad: [__u64; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_file_index_range {
-pub off: __u32,
-pub len: __u32,
-pub resv: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_recvmsg_out {
-pub namelen: __u32,
-pub controllen: __u32,
-pub payloadlen: __u32,
-pub flags: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr {
-pub __storage: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct linger {
-pub l_onoff: crate::ctypes::c_int,
-pub l_linger: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct linux_dirent64 {
-pub d_ino: crate::ctypes::c_ulong,
-pub d_off: crate::ctypes::c_long,
-pub d_reclen: __u16,
-pub d_type: __u8,
-pub d_name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-pub type socklen_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct stat {
-pub st_dev: crate::ctypes::c_ulong,
-pub st_ino: crate::ctypes::c_ulong,
-pub st_mode: crate::ctypes::c_uint,
-pub st_nlink: crate::ctypes::c_uint,
-pub st_uid: crate::ctypes::c_uint,
-pub st_gid: crate::ctypes::c_uint,
-pub st_rdev: crate::ctypes::c_ulong,
-pub __pad1: crate::ctypes::c_ulong,
-pub st_size: crate::ctypes::c_long,
-pub st_blksize: crate::ctypes::c_int,
-pub __pad2: crate::ctypes::c_int,
-pub st_blocks: crate::ctypes::c_long,
-pub st_atime: crate::ctypes::c_long,
-pub st_atime_nsec: crate::ctypes::c_ulong,
-pub st_mtime: crate::ctypes::c_long,
-pub st_mtime_nsec: crate::ctypes::c_ulong,
-pub st_ctime: crate::ctypes::c_long,
-pub st_ctime_nsec: crate::ctypes::c_ulong,
-pub __unused4: crate::ctypes::c_uint,
-pub __unused5: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs {
-pub f_type: __kernel_long_t,
-pub f_bsize: __kernel_long_t,
-pub f_blocks: __kernel_long_t,
-pub f_bfree: __kernel_long_t,
-pub f_bavail: __kernel_long_t,
-pub f_files: __kernel_long_t,
-pub f_ffree: __kernel_long_t,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __kernel_long_t,
-pub f_frsize: __kernel_long_t,
-pub f_flags: __kernel_long_t,
-pub f_spare: [__kernel_long_t; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs64 {
-pub f_type: __kernel_long_t,
-pub f_bsize: __kernel_long_t,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __kernel_long_t,
-pub f_frsize: __kernel_long_t,
-pub f_flags: __kernel_long_t,
-pub f_spare: [__kernel_long_t; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct compat_statfs64 {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-pub type __fsword_t = __kernel_long_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct user_desc {
-pub entry_number: crate::ctypes::c_uint,
-pub base_addr: crate::ctypes::c_uint,
-pub limit: crate::ctypes::c_uint,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub __bindgen_padding_0: [u8; 3usize],
-}
-impl user_desc {
-#[inline]
-pub fn seg_32bit(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_32bit(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn contents(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 2u8) as u32) }
-}
-#[inline]
-pub fn set_contents(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(1usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn read_exec_only(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_read_exec_only(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(3usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn limit_in_pages(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_limit_in_pages(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn seg_not_present(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_not_present(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(5usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn useable(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_useable(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(6usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(seg_32bit: crate::ctypes::c_uint, contents: crate::ctypes::c_uint, read_exec_only: crate::ctypes::c_uint, limit_in_pages: crate::ctypes::c_uint, seg_not_present: crate::ctypes::c_uint, useable: crate::ctypes::c_uint) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 1u8, {
-let seg_32bit: u32 = unsafe { ::core::mem::transmute(seg_32bit) };
-seg_32bit as u64
-});
-__bindgen_bitfield_unit.set(1usize, 2u8, {
-let contents: u32 = unsafe { ::core::mem::transmute(contents) };
-contents as u64
-});
-__bindgen_bitfield_unit.set(3usize, 1u8, {
-let read_exec_only: u32 = unsafe { ::core::mem::transmute(read_exec_only) };
-read_exec_only as u64
-});
-__bindgen_bitfield_unit.set(4usize, 1u8, {
-let limit_in_pages: u32 = unsafe { ::core::mem::transmute(limit_in_pages) };
-limit_in_pages as u64
-});
-__bindgen_bitfield_unit.set(5usize, 1u8, {
-let seg_not_present: u32 = unsafe { ::core::mem::transmute(seg_not_present) };
-seg_not_present as u64
-});
-__bindgen_bitfield_unit.set(6usize, 1u8, {
-let useable: u32 = unsafe { ::core::mem::transmute(useable) };
-useable as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct msghdr {
-pub msg_name: *mut crate::ctypes::c_void,
-pub msg_namelen: crate::ctypes::c_int,
-pub msg_iov: *mut iovec,
-pub msg_iovlen: size_t,
-pub msg_control: *mut crate::ctypes::c_void,
-pub msg_controllen: size_t,
-pub msg_flags: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct cmsghdr {
-pub cmsg_len: size_t,
-pub cmsg_level: crate::ctypes::c_int,
-pub cmsg_type: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ucred {
-pub pid: __u32,
-pub uid: __u32,
-pub gid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mmsghdr {
-pub msg_hdr: msghdr,
-pub msg_len: crate::ctypes::c_uint,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/riscv64/ioctl.rs b/vendor/linux-raw-sys-0.3.2/src/riscv64/ioctl.rs
deleted file mode 100644
index 1b6c25e1f..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/riscv64/ioctl.rs
+++ /dev/null
@@ -1,1465 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const FIONREAD: u32 = 21531;
-pub const FIONBIO: u32 = 21537;
-pub const FIOCLEX: u32 = 21585;
-pub const FIONCLEX: u32 = 21584;
-pub const FIOASYNC: u32 = 21586;
-pub const FIOQSIZE: u32 = 21600;
-pub const TCXONC: u32 = 21514;
-pub const TCFLSH: u32 = 21515;
-pub const TIOCSCTTY: u32 = 21518;
-pub const TIOCSPGRP: u32 = 21520;
-pub const TIOCOUTQ: u32 = 21521;
-pub const TIOCSTI: u32 = 21522;
-pub const TIOCSWINSZ: u32 = 21524;
-pub const TIOCMGET: u32 = 21525;
-pub const TIOCMBIS: u32 = 21526;
-pub const TIOCMBIC: u32 = 21527;
-pub const TIOCMSET: u32 = 21528;
-pub const TIOCSSOFTCAR: u32 = 21530;
-pub const TIOCLINUX: u32 = 21532;
-pub const TIOCCONS: u32 = 21533;
-pub const TIOCSSERIAL: u32 = 21535;
-pub const TIOCPKT: u32 = 21536;
-pub const TIOCNOTTY: u32 = 21538;
-pub const TIOCSETD: u32 = 21539;
-pub const TIOCSBRK: u32 = 21543;
-pub const TIOCCBRK: u32 = 21544;
-pub const TIOCSRS485: u32 = 21551;
-pub const TIOCSPTLCK: u32 = 1074025521;
-pub const TIOCSIG: u32 = 1074025526;
-pub const TIOCVHANGUP: u32 = 21559;
-pub const TIOCSERCONFIG: u32 = 21587;
-pub const TIOCSERGWILD: u32 = 21588;
-pub const TIOCSERSWILD: u32 = 21589;
-pub const TIOCSLCKTRMIOS: u32 = 21591;
-pub const TIOCSERGSTRUCT: u32 = 21592;
-pub const TIOCSERGETLSR: u32 = 21593;
-pub const TIOCSERGETMULTI: u32 = 21594;
-pub const TIOCSERSETMULTI: u32 = 21595;
-pub const TIOCMIWAIT: u32 = 21596;
-pub const TCGETS: u32 = 21505;
-pub const TCGETA: u32 = 21509;
-pub const TCSBRK: u32 = 21513;
-pub const TCSBRKP: u32 = 21541;
-pub const TCSETA: u32 = 21510;
-pub const TCSETAF: u32 = 21512;
-pub const TCSETAW: u32 = 21511;
-pub const TIOCEXCL: u32 = 21516;
-pub const TIOCNXCL: u32 = 21517;
-pub const TIOCGDEV: u32 = 2147767346;
-pub const TIOCGEXCL: u32 = 2147767360;
-pub const TIOCGICOUNT: u32 = 21597;
-pub const TIOCGLCKTRMIOS: u32 = 21590;
-pub const TIOCGPGRP: u32 = 21519;
-pub const TIOCGPKT: u32 = 2147767352;
-pub const TIOCGPTLCK: u32 = 2147767353;
-pub const TIOCGPTN: u32 = 2147767344;
-pub const TIOCGPTPEER: u32 = 21569;
-pub const TIOCGRS485: u32 = 21550;
-pub const TIOCGSERIAL: u32 = 21534;
-pub const TIOCGSID: u32 = 21545;
-pub const TIOCGSOFTCAR: u32 = 21529;
-pub const TIOCGWINSZ: u32 = 21523;
-pub const TCGETS2: u32 = 2150388778;
-pub const TCGETX: u32 = 21554;
-pub const TCSETS: u32 = 21506;
-pub const TCSETS2: u32 = 1076646955;
-pub const TCSETSF: u32 = 21508;
-pub const TCSETSF2: u32 = 1076646957;
-pub const TCSETSW: u32 = 21507;
-pub const TCSETSW2: u32 = 1076646956;
-pub const TCSETX: u32 = 21555;
-pub const TCSETXF: u32 = 21556;
-pub const TCSETXW: u32 = 21557;
-pub const TIOCGETD: u32 = 21540;
-pub const MTIOCGET: u32 = 2150657282;
-pub const BLKSSZGET: u32 = 4712;
-pub const BLKPBSZGET: u32 = 4731;
-pub const BLKROSET: u32 = 4701;
-pub const BLKROGET: u32 = 4702;
-pub const BLKRRPART: u32 = 4703;
-pub const BLKGETSIZE: u32 = 4704;
-pub const BLKFLSBUF: u32 = 4705;
-pub const BLKRASET: u32 = 4706;
-pub const BLKRAGET: u32 = 4707;
-pub const BLKFRASET: u32 = 4708;
-pub const BLKFRAGET: u32 = 4709;
-pub const BLKSECTSET: u32 = 4710;
-pub const BLKSECTGET: u32 = 4711;
-pub const BLKPG: u32 = 4713;
-pub const BLKBSZGET: u32 = 2148012656;
-pub const BLKBSZSET: u32 = 1074270833;
-pub const BLKGETSIZE64: u32 = 2148012658;
-pub const BLKTRACESETUP: u32 = 3225948787;
-pub const BLKTRACESTART: u32 = 4724;
-pub const BLKTRACESTOP: u32 = 4725;
-pub const BLKTRACETEARDOWN: u32 = 4726;
-pub const BLKDISCARD: u32 = 4727;
-pub const BLKIOMIN: u32 = 4728;
-pub const BLKIOOPT: u32 = 4729;
-pub const BLKALIGNOFF: u32 = 4730;
-pub const BLKDISCARDZEROES: u32 = 4732;
-pub const BLKSECDISCARD: u32 = 4733;
-pub const BLKROTATIONAL: u32 = 4734;
-pub const BLKZEROOUT: u32 = 4735;
-pub const UFFDIO_REGISTER: u32 = 3223366144;
-pub const UFFDIO_UNREGISTER: u32 = 2148575745;
-pub const UFFDIO_WAKE: u32 = 2148575746;
-pub const UFFDIO_COPY: u32 = 3223890435;
-pub const UFFDIO_ZEROPAGE: u32 = 3223366148;
-pub const UFFDIO_WRITEPROTECT: u32 = 3222841862;
-pub const UFFDIO_API: u32 = 3222841919;
-pub const NS_GET_USERNS: u32 = 46849;
-pub const NS_GET_PARENT: u32 = 46850;
-pub const NS_GET_NSTYPE: u32 = 46851;
-pub const KDGETLED: u32 = 19249;
-pub const KDSETLED: u32 = 19250;
-pub const KDGKBLED: u32 = 19300;
-pub const KDSKBLED: u32 = 19301;
-pub const KDGKBTYPE: u32 = 19251;
-pub const KDADDIO: u32 = 19252;
-pub const KDDELIO: u32 = 19253;
-pub const KDENABIO: u32 = 19254;
-pub const KDDISABIO: u32 = 19255;
-pub const KDSETMODE: u32 = 19258;
-pub const KDGETMODE: u32 = 19259;
-pub const KDMKTONE: u32 = 19248;
-pub const KIOCSOUND: u32 = 19247;
-pub const GIO_CMAP: u32 = 19312;
-pub const PIO_CMAP: u32 = 19313;
-pub const GIO_FONT: u32 = 19296;
-pub const GIO_FONTX: u32 = 19307;
-pub const PIO_FONT: u32 = 19297;
-pub const PIO_FONTX: u32 = 19308;
-pub const PIO_FONTRESET: u32 = 19309;
-pub const GIO_SCRNMAP: u32 = 19264;
-pub const GIO_UNISCRNMAP: u32 = 19305;
-pub const PIO_SCRNMAP: u32 = 19265;
-pub const PIO_UNISCRNMAP: u32 = 19306;
-pub const GIO_UNIMAP: u32 = 19302;
-pub const PIO_UNIMAP: u32 = 19303;
-pub const PIO_UNIMAPCLR: u32 = 19304;
-pub const KDGKBMODE: u32 = 19268;
-pub const KDSKBMODE: u32 = 19269;
-pub const KDGKBMETA: u32 = 19298;
-pub const KDSKBMETA: u32 = 19299;
-pub const KDGKBENT: u32 = 19270;
-pub const KDSKBENT: u32 = 19271;
-pub const KDGKBSENT: u32 = 19272;
-pub const KDSKBSENT: u32 = 19273;
-pub const KDGKBDIACR: u32 = 19274;
-pub const KDGETKEYCODE: u32 = 19276;
-pub const KDSETKEYCODE: u32 = 19277;
-pub const KDSIGACCEPT: u32 = 19278;
-pub const VT_OPENQRY: u32 = 22016;
-pub const VT_GETMODE: u32 = 22017;
-pub const VT_SETMODE: u32 = 22018;
-pub const VT_GETSTATE: u32 = 22019;
-pub const VT_RELDISP: u32 = 22021;
-pub const VT_ACTIVATE: u32 = 22022;
-pub const VT_WAITACTIVE: u32 = 22023;
-pub const VT_DISALLOCATE: u32 = 22024;
-pub const VT_RESIZE: u32 = 22025;
-pub const VT_RESIZEX: u32 = 22026;
-pub const FIOSETOWN: u32 = 35073;
-pub const SIOCSPGRP: u32 = 35074;
-pub const FIOGETOWN: u32 = 35075;
-pub const SIOCGPGRP: u32 = 35076;
-pub const SIOCATMARK: u32 = 35077;
-pub const SIOCGSTAMP: u32 = 35078;
-pub const TIOCINQ: u32 = 21531;
-pub const SIOCADDRT: u32 = 35083;
-pub const SIOCDELRT: u32 = 35084;
-pub const SIOCGIFNAME: u32 = 35088;
-pub const SIOCSIFLINK: u32 = 35089;
-pub const SIOCGIFCONF: u32 = 35090;
-pub const SIOCGIFFLAGS: u32 = 35091;
-pub const SIOCSIFFLAGS: u32 = 35092;
-pub const SIOCGIFADDR: u32 = 35093;
-pub const SIOCSIFADDR: u32 = 35094;
-pub const SIOCGIFDSTADDR: u32 = 35095;
-pub const SIOCSIFDSTADDR: u32 = 35096;
-pub const SIOCGIFBRDADDR: u32 = 35097;
-pub const SIOCSIFBRDADDR: u32 = 35098;
-pub const SIOCGIFNETMASK: u32 = 35099;
-pub const SIOCSIFNETMASK: u32 = 35100;
-pub const SIOCGIFMETRIC: u32 = 35101;
-pub const SIOCSIFMETRIC: u32 = 35102;
-pub const SIOCGIFMEM: u32 = 35103;
-pub const SIOCSIFMEM: u32 = 35104;
-pub const SIOCGIFMTU: u32 = 35105;
-pub const SIOCSIFMTU: u32 = 35106;
-pub const SIOCSIFHWADDR: u32 = 35108;
-pub const SIOCGIFENCAP: u32 = 35109;
-pub const SIOCSIFENCAP: u32 = 35110;
-pub const SIOCGIFHWADDR: u32 = 35111;
-pub const SIOCGIFSLAVE: u32 = 35113;
-pub const SIOCSIFSLAVE: u32 = 35120;
-pub const SIOCADDMULTI: u32 = 35121;
-pub const SIOCDELMULTI: u32 = 35122;
-pub const SIOCDARP: u32 = 35155;
-pub const SIOCGARP: u32 = 35156;
-pub const SIOCSARP: u32 = 35157;
-pub const SIOCDRARP: u32 = 35168;
-pub const SIOCGRARP: u32 = 35169;
-pub const SIOCSRARP: u32 = 35170;
-pub const SIOCGIFMAP: u32 = 35184;
-pub const SIOCSIFMAP: u32 = 35185;
-pub const SIOCRTMSG: u32 = 35085;
-pub const SIOCSIFNAME: u32 = 35107;
-pub const SIOCGIFINDEX: u32 = 35123;
-pub const SIOGIFINDEX: u32 = 35123;
-pub const SIOCSIFPFLAGS: u32 = 35124;
-pub const SIOCGIFPFLAGS: u32 = 35125;
-pub const SIOCDIFADDR: u32 = 35126;
-pub const SIOCSIFHWBROADCAST: u32 = 35127;
-pub const SIOCGIFCOUNT: u32 = 35128;
-pub const SIOCGIFBR: u32 = 35136;
-pub const SIOCSIFBR: u32 = 35137;
-pub const SIOCGIFTXQLEN: u32 = 35138;
-pub const SIOCSIFTXQLEN: u32 = 35139;
-pub const SIOCADDDLCI: u32 = 35200;
-pub const SIOCDELDLCI: u32 = 35201;
-pub const SIOCDEVPRIVATE: u32 = 35312;
-pub const SIOCPROTOPRIVATE: u32 = 35296;
-pub const FIBMAP: u32 = 1;
-pub const FIGETBSZ: u32 = 2;
-pub const FIFREEZE: u32 = 3221510263;
-pub const FITHAW: u32 = 3221510264;
-pub const FITRIM: u32 = 3222820985;
-pub const FICLONE: u32 = 1074041865;
-pub const FICLONERANGE: u32 = 1075876877;
-pub const FIDEDUPERANGE: u32 = 3222836278;
-pub const FS_IOC_GETFLAGS: u32 = 2148034049;
-pub const FS_IOC_SETFLAGS: u32 = 1074292226;
-pub const FS_IOC_GETVERSION: u32 = 2148038145;
-pub const FS_IOC_SETVERSION: u32 = 1074296322;
-pub const FS_IOC_FIEMAP: u32 = 3223348747;
-pub const FS_IOC32_GETFLAGS: u32 = 2147771905;
-pub const FS_IOC32_SETFLAGS: u32 = 1074030082;
-pub const FS_IOC32_GETVERSION: u32 = 2147776001;
-pub const FS_IOC32_SETVERSION: u32 = 1074034178;
-pub const FS_IOC_FSGETXATTR: u32 = 2149341215;
-pub const FS_IOC_FSSETXATTR: u32 = 1075599392;
-pub const FS_IOC_GETFSLABEL: u32 = 2164298801;
-pub const FS_IOC_SETFSLABEL: u32 = 1090556978;
-pub const VIDIOC_SUBDEV_QUERYSTD: u32 = 2148030015;
-pub const AUTOFS_DEV_IOCTL_CLOSEMOUNT: u32 = 3222836085;
-pub const LIRC_SET_SEND_CARRIER: u32 = 1074030867;
-pub const AUTOFS_IOC_PROTOSUBVER: u32 = 2147783527;
-pub const PTP_SYS_OFFSET_PRECISE: u32 = 3225435400;
-pub const FSI_SCOM_WRITE: u32 = 3223352066;
-pub const ATM_GETCIRANGE: u32 = 1074815370;
-pub const DMA_BUF_SET_NAME_B: u32 = 1074291201;
-pub const RIO_CM_EP_GET_LIST_SIZE: u32 = 3221512961;
-pub const TUNSETPERSIST: u32 = 1074025675;
-pub const FS_IOC_GET_ENCRYPTION_POLICY: u32 = 1074554389;
-pub const CEC_RECEIVE: u32 = 3224920326;
-pub const MGSL_IOCGPARAMS: u32 = 2150657281;
-pub const ENI_SETMULT: u32 = 1074815335;
-pub const RIO_GET_EVENT_MASK: u32 = 2147773710;
-pub const LIRC_GET_MAX_TIMEOUT: u32 = 2147772681;
-pub const USBDEVFS_CLAIMINTERFACE: u32 = 2147767567;
-pub const CHIOMOVE: u32 = 1075077889;
-pub const SONYPI_IOCGBATFLAGS: u32 = 2147579399;
-pub const BTRFS_IOC_SYNC: u32 = 37896;
-pub const VIDIOC_TRY_FMT: u32 = 3234879040;
-pub const LIRC_SET_REC_MODE: u32 = 1074030866;
-pub const VIDIOC_DQEVENT: u32 = 2156418649;
-pub const RPMSG_DESTROY_EPT_IOCTL: u32 = 46338;
-pub const UVCIOC_CTRL_MAP: u32 = 3227546912;
-pub const VHOST_SET_BACKEND_FEATURES: u32 = 1074310949;
-pub const VHOST_VSOCK_SET_GUEST_CID: u32 = 1074311008;
-pub const UI_SET_KEYBIT: u32 = 1074025829;
-pub const LIRC_SET_REC_TIMEOUT: u32 = 1074030872;
-pub const FS_IOC_GET_ENCRYPTION_KEY_STATUS: u32 = 3229640218;
-pub const BTRFS_IOC_TREE_SEARCH_V2: u32 = 3228603409;
-pub const VHOST_SET_VRING_BASE: u32 = 1074310930;
-pub const RIO_ENABLE_DOORBELL_RANGE: u32 = 1074294025;
-pub const VIDIOC_TRY_EXT_CTRLS: u32 = 3223344713;
-pub const LIRC_GET_REC_MODE: u32 = 2147772674;
-pub const PPGETTIME: u32 = 2148561045;
-pub const BTRFS_IOC_RM_DEV: u32 = 1342215179;
-pub const ATM_SETBACKEND: u32 = 1073897970;
-pub const FSL_HV_IOCTL_PARTITION_START: u32 = 3222318851;
-pub const FBIO_WAITEVENT: u32 = 18056;
-pub const SWITCHTEC_IOCTL_PORT_TO_PFF: u32 = 3222034245;
-pub const NVME_IOCTL_IO_CMD: u32 = 3225964099;
-pub const IPMICTL_RECEIVE_MSG_TRUNC: u32 = 3224398091;
-pub const FDTWADDLE: u32 = 601;
-pub const NVME_IOCTL_SUBMIT_IO: u32 = 1076907586;
-pub const NILFS_IOCTL_SYNC: u32 = 2148036234;
-pub const VIDIOC_SUBDEV_S_DV_TIMINGS: u32 = 3229898327;
-pub const ASPEED_LPC_CTRL_IOCTL_GET_SIZE: u32 = 3222319616;
-pub const DM_DEV_STATUS: u32 = 3241737479;
-pub const TEE_IOC_CLOSE_SESSION: u32 = 2147787781;
-pub const NS_GETPSTAT: u32 = 3222298977;
-pub const UI_SET_PROPBIT: u32 = 1074025838;
-pub const TUNSETFILTEREBPF: u32 = 2147767521;
-pub const RIO_MPORT_MAINT_COMPTAG_SET: u32 = 1074031874;
-pub const AUTOFS_DEV_IOCTL_VERSION: u32 = 3222836081;
-pub const WDIOC_SETOPTIONS: u32 = 2147768068;
-pub const VHOST_SCSI_SET_ENDPOINT: u32 = 1088991040;
-pub const MGSL_IOCGTXIDLE: u32 = 27907;
-pub const ATM_ADDLECSADDR: u32 = 1074815374;
-pub const FSL_HV_IOCTL_GETPROP: u32 = 3223891719;
-pub const FDGETPRM: u32 = 2149581316;
-pub const HIDIOCAPPLICATION: u32 = 18434;
-pub const ENI_MEMDUMP: u32 = 1074815328;
-pub const PTP_SYS_OFFSET2: u32 = 1128283406;
-pub const VIDIOC_SUBDEV_G_DV_TIMINGS: u32 = 3229898328;
-pub const DMA_BUF_SET_NAME_A: u32 = 1074029057;
-pub const PTP_PIN_GETFUNC: u32 = 3227532550;
-pub const PTP_SYS_OFFSET_EXTENDED: u32 = 3300932873;
-pub const DFL_FPGA_PORT_UINT_SET_IRQ: u32 = 1074312776;
-pub const RTC_EPOCH_READ: u32 = 2148036621;
-pub const VIDIOC_SUBDEV_S_SELECTION: u32 = 3225441854;
-pub const VIDIOC_QUERY_EXT_CTRL: u32 = 3236451943;
-pub const ATM_GETLECSADDR: u32 = 1074815376;
-pub const FSL_HV_IOCTL_PARTITION_STOP: u32 = 3221794564;
-pub const SONET_GETDIAG: u32 = 2147770644;
-pub const ATMMPC_DATA: u32 = 25049;
-pub const IPMICTL_UNREGISTER_FOR_CMD_CHANS: u32 = 2148296989;
-pub const HIDIOCGCOLLECTIONINDEX: u32 = 1075333136;
-pub const RPMSG_CREATE_EPT_IOCTL: u32 = 1076409601;
-pub const GPIOHANDLE_GET_LINE_VALUES_IOCTL: u32 = 3225465864;
-pub const UI_DEV_SETUP: u32 = 1079792899;
-pub const ISST_IF_IO_CMD: u32 = 1074331138;
-pub const RIO_MPORT_MAINT_READ_REMOTE: u32 = 2149084423;
-pub const VIDIOC_OMAP3ISP_HIST_CFG: u32 = 3224393412;
-pub const BLKGETNRZONES: u32 = 2147750533;
-pub const VIDIOC_G_MODULATOR: u32 = 3225703990;
-pub const VBG_IOCTL_WRITE_CORE_DUMP: u32 = 3223082515;
-pub const USBDEVFS_SETINTERFACE: u32 = 2148029700;
-pub const PPPIOCGCHAN: u32 = 2147775543;
-pub const EVIOCGVERSION: u32 = 2147763457;
-pub const VHOST_NET_SET_BACKEND: u32 = 1074310960;
-pub const USBDEVFS_REAPURBNDELAY: u32 = 1074287885;
-pub const RNDZAPENTCNT: u32 = 20996;
-pub const VIDIOC_G_PARM: u32 = 3234616853;
-pub const TUNGETDEVNETNS: u32 = 21731;
-pub const LIRC_SET_MEASURE_CARRIER_MODE: u32 = 1074030877;
-pub const VHOST_SET_VRING_ERR: u32 = 1074310946;
-pub const VDUSE_VQ_SETUP: u32 = 1075872020;
-pub const AUTOFS_IOC_SETTIMEOUT: u32 = 3221787492;
-pub const VIDIOC_S_FREQUENCY: u32 = 1076647481;
-pub const F2FS_IOC_SEC_TRIM_FILE: u32 = 1075377428;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY: u32 = 3225445912;
-pub const WDIOC_GETPRETIMEOUT: u32 = 2147768073;
-pub const USBDEVFS_DROP_PRIVILEGES: u32 = 1074025758;
-pub const BTRFS_IOC_SNAP_CREATE_V2: u32 = 1342215191;
-pub const VHOST_VSOCK_SET_RUNNING: u32 = 1074048865;
-pub const STP_SET_OPTIONS: u32 = 1074275586;
-pub const FBIO_RADEON_GET_MIRROR: u32 = 2148024323;
-pub const IVTVFB_IOC_DMA_FRAME: u32 = 1075336896;
-pub const IPMICTL_SEND_COMMAND: u32 = 2150131981;
-pub const VIDIOC_G_ENC_INDEX: u32 = 2283296332;
-pub const DFL_FPGA_FME_PORT_PR: u32 = 46720;
-pub const CHIOSVOLTAG: u32 = 1076912914;
-pub const ATM_SETESIF: u32 = 1074815373;
-pub const FW_CDEV_IOC_SEND_RESPONSE: u32 = 1075323652;
-pub const PMU_IOC_GET_MODEL: u32 = 2148024835;
-pub const JSIOCGBTNMAP: u32 = 2214619700;
-pub const USBDEVFS_HUB_PORTINFO: u32 = 2155894035;
-pub const VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS: u32 = 3222820363;
-pub const FDCLRPRM: u32 = 577;
-pub const BTRFS_IOC_SCRUB: u32 = 3288372251;
-pub const USBDEVFS_DISCONNECT: u32 = 21782;
-pub const TUNSETVNETBE: u32 = 1074025694;
-pub const ATMTCP_REMOVE: u32 = 24975;
-pub const VHOST_VDPA_GET_CONFIG: u32 = 2148052851;
-pub const PPPIOCGNPMODE: u32 = 3221779532;
-pub const FDGETDRVPRM: u32 = 2155872785;
-pub const TUNSETVNETLE: u32 = 1074025692;
-pub const PHN_SETREG: u32 = 1074294790;
-pub const PPPIOCDETACH: u32 = 1074033724;
-pub const MMTIMER_GETRES: u32 = 2148035841;
-pub const VIDIOC_SUBDEV_ENUMSTD: u32 = 3225966105;
-pub const PPGETFLAGS: u32 = 2147774618;
-pub const VDUSE_DEV_GET_FEATURES: u32 = 2148040977;
-pub const CAPI_MANUFACTURER_CMD: u32 = 3222291232;
-pub const VIDIOC_G_TUNER: u32 = 3226752541;
-pub const DM_TABLE_STATUS: u32 = 3241737484;
-pub const DM_DEV_ARM_POLL: u32 = 3241737488;
-pub const NE_CREATE_VM: u32 = 2148052512;
-pub const MEDIA_IOC_ENUM_LINKS: u32 = 3223878658;
-pub const F2FS_IOC_PRECACHE_EXTENTS: u32 = 62735;
-pub const DFL_FPGA_PORT_DMA_MAP: u32 = 46659;
-pub const MGSL_IOCGXCTRL: u32 = 27926;
-pub const FW_CDEV_IOC_SEND_REQUEST: u32 = 1076372225;
-pub const SONYPI_IOCGBLUE: u32 = 2147579400;
-pub const F2FS_IOC_DECOMPRESS_FILE: u32 = 62743;
-pub const I2OHTML: u32 = 3224398089;
-pub const VFIO_GET_API_VERSION: u32 = 15204;
-pub const IDT77105_GETSTATZ: u32 = 1074815283;
-pub const I2OPARMSET: u32 = 3223873795;
-pub const TEE_IOC_CANCEL: u32 = 2148049924;
-pub const PTP_SYS_OFFSET_PRECISE2: u32 = 3225435409;
-pub const DFL_FPGA_PORT_RESET: u32 = 46656;
-pub const PPPIOCGASYNCMAP: u32 = 2147775576;
-pub const EVIOCGKEYCODE_V2: u32 = 2150122756;
-pub const DM_DEV_SET_GEOMETRY: u32 = 3241737487;
-pub const HIDIOCSUSAGE: u32 = 1075333132;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE: u32 = 1075323664;
-pub const PTP_EXTTS_REQUEST: u32 = 1074806018;
-pub const SWITCHTEC_IOCTL_EVENT_CTL: u32 = 3223869251;
-pub const WDIOC_SETPRETIMEOUT: u32 = 3221509896;
-pub const VHOST_SCSI_CLEAR_ENDPOINT: u32 = 1088991041;
-pub const JSIOCGAXES: u32 = 2147576337;
-pub const HIDIOCSFLAG: u32 = 1074022415;
-pub const PTP_PEROUT_REQUEST2: u32 = 1077427468;
-pub const PPWDATA: u32 = 1073836166;
-pub const PTP_CLOCK_GETCAPS: u32 = 2152742145;
-pub const FDGETMAXERRS: u32 = 2148794894;
-pub const TUNSETQUEUE: u32 = 1074025689;
-pub const PTP_ENABLE_PPS: u32 = 1074019588;
-pub const SIOCSIFATMTCP: u32 = 24960;
-pub const CEC_ADAP_G_LOG_ADDRS: u32 = 2153537795;
-pub const ND_IOCTL_ARS_CAP: u32 = 3223342593;
-pub const NBD_SET_BLKSIZE: u32 = 43777;
-pub const NBD_SET_TIMEOUT: u32 = 43785;
-pub const VHOST_SCSI_GET_ABI_VERSION: u32 = 1074048834;
-pub const RIO_UNMAP_INBOUND: u32 = 1074294034;
-pub const ATM_QUERYLOOP: u32 = 1074815316;
-pub const DFL_FPGA_GET_API_VERSION: u32 = 46592;
-pub const USBDEVFS_WAIT_FOR_RESUME: u32 = 21795;
-pub const FBIO_CURSOR: u32 = 3228059144;
-pub const RNDCLEARPOOL: u32 = 20998;
-pub const VIDIOC_QUERYSTD: u32 = 2148030015;
-pub const DMA_BUF_IOCTL_SYNC: u32 = 1074291200;
-pub const SCIF_RECV: u32 = 3222827783;
-pub const PTP_PIN_GETFUNC2: u32 = 3227532559;
-pub const FW_CDEV_IOC_ALLOCATE: u32 = 3223331586;
-pub const CEC_ADAP_G_CAPS: u32 = 3226231040;
-pub const VIDIOC_G_FBUF: u32 = 2150651402;
-pub const PTP_ENABLE_PPS2: u32 = 1074019597;
-pub const PCITEST_CLEAR_IRQ: u32 = 20496;
-pub const IPMICTL_SET_GETS_EVENTS_CMD: u32 = 2147772688;
-pub const BTRFS_IOC_DEVICES_READY: u32 = 2415957031;
-pub const JSIOCGAXMAP: u32 = 2151705138;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER: u32 = 2148541196;
-pub const FW_CDEV_IOC_SET_ISO_CHANNELS: u32 = 1074799383;
-pub const RTC_WIE_OFF: u32 = 28688;
-pub const PPGETMODE: u32 = 2147774616;
-pub const VIDIOC_DBG_G_REGISTER: u32 = 3224917584;
-pub const PTP_SYS_OFFSET: u32 = 1128283397;
-pub const BTRFS_IOC_SPACE_INFO: u32 = 3222311956;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_SIZE: u32 = 3225441866;
-pub const ND_IOCTL_VENDOR: u32 = 3221769737;
-pub const SCIF_VREADFROM: u32 = 3223876364;
-pub const BTRFS_IOC_TRANS_START: u32 = 37894;
-pub const INOTIFY_IOC_SETNEXTWD: u32 = 1074022656;
-pub const SNAPSHOT_GET_IMAGE_SIZE: u32 = 2148021006;
-pub const TUNDETACHFILTER: u32 = 1074812118;
-pub const ND_IOCTL_CLEAR_ERROR: u32 = 3223342596;
-pub const IOC_PR_CLEAR: u32 = 1074819277;
-pub const SCIF_READFROM: u32 = 3223876362;
-pub const PPPIOCGDEBUG: u32 = 2147775553;
-pub const BLKGETZONESZ: u32 = 2147750532;
-pub const HIDIOCGUSAGES: u32 = 3491514387;
-pub const SONYPI_IOCGTEMP: u32 = 2147579404;
-pub const UI_SET_MSCBIT: u32 = 1074025832;
-pub const APM_IOC_SUSPEND: u32 = 16642;
-pub const BTRFS_IOC_TREE_SEARCH: u32 = 3489698833;
-pub const RTC_PLL_GET: u32 = 2149609489;
-pub const RIO_CM_EP_GET_LIST: u32 = 3221512962;
-pub const USBDEVFS_DISCSIGNAL: u32 = 2148553998;
-pub const LIRC_GET_MIN_TIMEOUT: u32 = 2147772680;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY: u32 = 2174244674;
-pub const DM_TARGET_MSG: u32 = 3241737486;
-pub const SONYPI_IOCGBAT1REM: u32 = 2147644931;
-pub const EVIOCSFF: u32 = 1076905344;
-pub const TUNSETGROUP: u32 = 1074025678;
-pub const EVIOCGKEYCODE: u32 = 2148025604;
-pub const KCOV_REMOTE_ENABLE: u32 = 1075340134;
-pub const ND_IOCTL_GET_CONFIG_SIZE: u32 = 3222031876;
-pub const FDEJECT: u32 = 602;
-pub const TUNSETOFFLOAD: u32 = 1074025680;
-pub const PPPIOCCONNECT: u32 = 1074033722;
-pub const ATM_ADDADDR: u32 = 1074815368;
-pub const VDUSE_DEV_INJECT_CONFIG_IRQ: u32 = 33043;
-pub const AUTOFS_DEV_IOCTL_ASKUMOUNT: u32 = 3222836093;
-pub const VHOST_VDPA_GET_STATUS: u32 = 2147594097;
-pub const CCISS_PASSTHRU: u32 = 3227009547;
-pub const MGSL_IOCCLRMODCOUNT: u32 = 27919;
-pub const TEE_IOC_SUPPL_SEND: u32 = 2148574215;
-pub const ATMARPD_CTRL: u32 = 25057;
-pub const UI_ABS_SETUP: u32 = 1075598596;
-pub const UI_DEV_DESTROY: u32 = 21762;
-pub const BTRFS_IOC_QUOTA_CTL: u32 = 3222311976;
-pub const RTC_AIE_ON: u32 = 28673;
-pub const AUTOFS_IOC_EXPIRE: u32 = 2165085029;
-pub const PPPIOCSDEBUG: u32 = 1074033728;
-pub const GPIO_V2_LINE_SET_VALUES_IOCTL: u32 = 3222320143;
-pub const PPPIOCSMRU: u32 = 1074033746;
-pub const CCISS_DEREGDISK: u32 = 16908;
-pub const UI_DEV_CREATE: u32 = 21761;
-pub const FUSE_DEV_IOC_CLONE: u32 = 2147804416;
-pub const BTRFS_IOC_START_SYNC: u32 = 2148045848;
-pub const NILFS_IOCTL_DELETE_CHECKPOINT: u32 = 1074294401;
-pub const SNAPSHOT_AVAIL_SWAP_SIZE: u32 = 2148021011;
-pub const DM_TABLE_CLEAR: u32 = 3241737482;
-pub const CCISS_GETINTINFO: u32 = 2148024834;
-pub const PPPIOCSASYNCMAP: u32 = 1074033751;
-pub const I2OEVTGET: u32 = 2154326283;
-pub const NVME_IOCTL_RESET: u32 = 20036;
-pub const PPYIELD: u32 = 28813;
-pub const NVME_IOCTL_IO64_CMD: u32 = 3226488392;
-pub const TUNSETCARRIER: u32 = 1074025698;
-pub const DM_DEV_WAIT: u32 = 3241737480;
-pub const RTC_WIE_ON: u32 = 28687;
-pub const MEDIA_IOC_DEVICE_INFO: u32 = 3238034432;
-pub const RIO_CM_CHAN_CREATE: u32 = 3221381891;
-pub const MGSL_IOCSPARAMS: u32 = 1076915456;
-pub const RTC_SET_TIME: u32 = 1076129802;
-pub const VHOST_RESET_OWNER: u32 = 44802;
-pub const IOC_OPAL_PSID_REVERT_TPR: u32 = 1091072232;
-pub const AUTOFS_DEV_IOCTL_OPENMOUNT: u32 = 3222836084;
-pub const UDF_GETEABLOCK: u32 = 2148035649;
-pub const VFIO_IOMMU_MAP_DMA: u32 = 15217;
-pub const VIDIOC_SUBSCRIBE_EVENT: u32 = 1075861082;
-pub const HIDIOCGFLAG: u32 = 2147764238;
-pub const HIDIOCGUCODE: u32 = 3222816781;
-pub const VIDIOC_OMAP3ISP_AF_CFG: u32 = 3226228421;
-pub const DM_REMOVE_ALL: u32 = 3241737473;
-pub const ASPEED_LPC_CTRL_IOCTL_MAP: u32 = 1074835969;
-pub const CCISS_GETFIRMVER: u32 = 2147762696;
-pub const ND_IOCTL_ARS_START: u32 = 3223342594;
-pub const PPPIOCSMRRU: u32 = 1074033723;
-pub const CEC_ADAP_S_LOG_ADDRS: u32 = 3227279620;
-pub const RPROC_GET_SHUTDOWN_ON_RELEASE: u32 = 2147792642;
-pub const DMA_HEAP_IOCTL_ALLOC: u32 = 3222816768;
-pub const PPSETTIME: u32 = 1074819222;
-pub const RTC_ALM_READ: u32 = 2149871624;
-pub const VDUSE_SET_API_VERSION: u32 = 1074299137;
-pub const RIO_MPORT_MAINT_WRITE_REMOTE: u32 = 1075342600;
-pub const VIDIOC_SUBDEV_S_CROP: u32 = 3224917564;
-pub const USBDEVFS_CONNECT: u32 = 21783;
-pub const SYNC_IOC_FILE_INFO: u32 = 3224911364;
-pub const ATMARP_MKIP: u32 = 25058;
-pub const VFIO_IOMMU_SPAPR_TCE_GET_INFO: u32 = 15216;
-pub const CCISS_GETHEARTBEAT: u32 = 2147762694;
-pub const ATM_RSTADDR: u32 = 1074815367;
-pub const NBD_SET_SIZE: u32 = 43778;
-pub const UDF_GETVOLIDENT: u32 = 2148035650;
-pub const GPIO_V2_LINE_GET_VALUES_IOCTL: u32 = 3222320142;
-pub const MGSL_IOCSTXIDLE: u32 = 27906;
-pub const FSL_HV_IOCTL_SETPROP: u32 = 3223891720;
-pub const BTRFS_IOC_GET_DEV_STATS: u32 = 3288896564;
-pub const PPRSTATUS: u32 = 2147577985;
-pub const MGSL_IOCTXENABLE: u32 = 27908;
-pub const UDF_GETEASIZE: u32 = 2147773504;
-pub const NVME_IOCTL_ADMIN64_CMD: u32 = 3226488391;
-pub const VHOST_SET_OWNER: u32 = 44801;
-pub const RIO_ALLOC_DMA: u32 = 3222826259;
-pub const RIO_CM_CHAN_ACCEPT: u32 = 3221775111;
-pub const I2OHRTGET: u32 = 3222825217;
-pub const ATM_SETCIRANGE: u32 = 1074815371;
-pub const HPET_IE_ON: u32 = 26625;
-pub const PERF_EVENT_IOC_ID: u32 = 2148017159;
-pub const TUNSETSNDBUF: u32 = 1074025684;
-pub const PTP_PIN_SETFUNC: u32 = 1080048903;
-pub const PPPIOCDISCONN: u32 = 29753;
-pub const VIDIOC_QUERYCTRL: u32 = 3225703972;
-pub const PPEXCL: u32 = 28815;
-pub const PCITEST_MSI: u32 = 1074024451;
-pub const FDWERRORCLR: u32 = 598;
-pub const AUTOFS_IOC_FAIL: u32 = 37729;
-pub const USBDEVFS_IOCTL: u32 = 3222295826;
-pub const VIDIOC_S_STD: u32 = 1074288152;
-pub const F2FS_IOC_RESIZE_FS: u32 = 1074328848;
-pub const SONET_SETDIAG: u32 = 3221512466;
-pub const BTRFS_IOC_DEFRAG: u32 = 1342215170;
-pub const CCISS_GETDRIVVER: u32 = 2147762697;
-pub const IPMICTL_GET_TIMING_PARMS_CMD: u32 = 2148034839;
-pub const HPET_IRQFREQ: u32 = 1074292742;
-pub const ATM_GETESI: u32 = 1074815365;
-pub const CCISS_GETLUNINFO: u32 = 2148286993;
-pub const AUTOFS_DEV_IOCTL_ISMOUNTPOINT: u32 = 3222836094;
-pub const TEE_IOC_SHM_ALLOC: u32 = 3222316033;
-pub const PERF_EVENT_IOC_SET_BPF: u32 = 1074013192;
-pub const UDMABUF_CREATE_LIST: u32 = 1074296131;
-pub const VHOST_SET_LOG_BASE: u32 = 1074310916;
-pub const ZATM_GETPOOL: u32 = 1074815329;
-pub const BR2684_SETFILT: u32 = 1075601808;
-pub const RNDGETPOOL: u32 = 2148028930;
-pub const PPS_GETPARAMS: u32 = 2148036769;
-pub const IOC_PR_RESERVE: u32 = 1074819273;
-pub const VIDIOC_TRY_DECODER_CMD: u32 = 3225966177;
-pub const RIO_CM_CHAN_CLOSE: u32 = 1073898244;
-pub const VIDIOC_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const IOCTL_MEI_CONNECT_CLIENT_VTAG: u32 = 3222554628;
-pub const PMU_IOC_GET_BACKLIGHT: u32 = 2148024833;
-pub const USBDEVFS_GET_CAPABILITIES: u32 = 2147767578;
-pub const SCIF_WRITETO: u32 = 3223876363;
-pub const UDF_RELOCATE_BLOCKS: u32 = 3221777475;
-pub const FSL_HV_IOCTL_PARTITION_RESTART: u32 = 3221794561;
-pub const CCISS_REGNEWD: u32 = 16910;
-pub const FAT_IOCTL_SET_ATTRIBUTES: u32 = 1074033169;
-pub const VIDIOC_CREATE_BUFS: u32 = 3238024796;
-pub const CAPI_GET_VERSION: u32 = 3222291207;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY: u32 = 2228770626;
-pub const VFIO_EEH_PE_OP: u32 = 15225;
-pub const FW_CDEV_IOC_CREATE_ISO_CONTEXT: u32 = 3223331592;
-pub const F2FS_IOC_RELEASE_COMPRESS_BLOCKS: u32 = 2148070674;
-pub const NBD_SET_SIZE_BLOCKS: u32 = 43783;
-pub const IPMI_BMC_IOCTL_SET_SMS_ATN: u32 = 45312;
-pub const ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG: u32 = 3222319873;
-pub const VIDIOC_S_AUDOUT: u32 = 1077171762;
-pub const VIDIOC_S_FMT: u32 = 3234878981;
-pub const PPPIOCATTACH: u32 = 1074033725;
-pub const VHOST_GET_VRING_BUSYLOOP_TIMEOUT: u32 = 1074310948;
-pub const FS_IOC_MEASURE_VERITY: u32 = 3221513862;
-pub const CCISS_BIG_PASSTHRU: u32 = 3227533842;
-pub const IPMICTL_SET_MY_LUN_CMD: u32 = 2147772691;
-pub const PCITEST_LEGACY_IRQ: u32 = 20482;
-pub const USBDEVFS_SUBMITURB: u32 = 2151175434;
-pub const AUTOFS_IOC_READY: u32 = 37728;
-pub const BTRFS_IOC_SEND: u32 = 1078498342;
-pub const VIDIOC_G_EXT_CTRLS: u32 = 3223344711;
-pub const JSIOCSBTNMAP: u32 = 1140877875;
-pub const PPPIOCSFLAGS: u32 = 1074033753;
-pub const NVRAM_INIT: u32 = 28736;
-pub const RFKILL_IOCTL_NOINPUT: u32 = 20993;
-pub const BTRFS_IOC_BALANCE: u32 = 1342215180;
-pub const FS_IOC_GETFSMAP: u32 = 3233830971;
-pub const IPMICTL_GET_MY_CHANNEL_LUN_CMD: u32 = 2147772699;
-pub const STP_POLICY_ID_GET: u32 = 2148541697;
-pub const PPSETFLAGS: u32 = 1074032795;
-pub const CEC_ADAP_S_PHYS_ADDR: u32 = 1073897730;
-pub const ATMTCP_CREATE: u32 = 24974;
-pub const IPMI_BMC_IOCTL_FORCE_ABORT: u32 = 45314;
-pub const PPPIOCGXASYNCMAP: u32 = 2149610576;
-pub const VHOST_SET_VRING_CALL: u32 = 1074310945;
-pub const LIRC_GET_FEATURES: u32 = 2147772672;
-pub const GSMIOC_DISABLE_NET: u32 = 18179;
-pub const AUTOFS_IOC_CATATONIC: u32 = 37730;
-pub const NBD_DO_IT: u32 = 43779;
-pub const LIRC_SET_REC_CARRIER_RANGE: u32 = 1074030879;
-pub const IPMICTL_GET_MY_CHANNEL_ADDRESS_CMD: u32 = 2147772697;
-pub const EVIOCSCLOCKID: u32 = 1074021792;
-pub const USBDEVFS_FREE_STREAMS: u32 = 2148029725;
-pub const FSI_SCOM_RESET: u32 = 1074033411;
-pub const PMU_IOC_GRAB_BACKLIGHT: u32 = 2148024838;
-pub const VIDIOC_SUBDEV_S_FMT: u32 = 3227014661;
-pub const FDDEFPRM: u32 = 1075839555;
-pub const TEE_IOC_INVOKE: u32 = 2148574211;
-pub const USBDEVFS_BULK: u32 = 3222820098;
-pub const SCIF_VWRITETO: u32 = 3223876365;
-pub const SONYPI_IOCSBRT: u32 = 1073837568;
-pub const BTRFS_IOC_FILE_EXTENT_SAME: u32 = 3222836278;
-pub const RTC_PIE_ON: u32 = 28677;
-pub const BTRFS_IOC_SCAN_DEV: u32 = 1342215172;
-pub const PPPIOCXFERUNIT: u32 = 29774;
-pub const WDIOC_GETTIMEOUT: u32 = 2147768071;
-pub const BTRFS_IOC_SET_RECEIVED_SUBVOL: u32 = 3234370597;
-pub const DFL_FPGA_PORT_ERR_SET_IRQ: u32 = 1074312774;
-pub const FBIO_WAITFORVSYNC: u32 = 1074021920;
-pub const RTC_PIE_OFF: u32 = 28678;
-pub const EVIOCGRAB: u32 = 1074021776;
-pub const PMU_IOC_SET_BACKLIGHT: u32 = 1074283010;
-pub const EVIOCGREP: u32 = 2148025603;
-pub const PERF_EVENT_IOC_MODIFY_ATTRIBUTES: u32 = 1074275339;
-pub const UFFDIO_CONTINUE: u32 = 3223366151;
-pub const VDUSE_GET_API_VERSION: u32 = 2148040960;
-pub const RTC_RD_TIME: u32 = 2149871625;
-pub const FDMSGOFF: u32 = 582;
-pub const IPMICTL_REGISTER_FOR_CMD_CHANS: u32 = 2148296988;
-pub const CAPI_GET_ERRCODE: u32 = 2147631905;
-pub const PCITEST_SET_IRQTYPE: u32 = 1074024456;
-pub const VIDIOC_SUBDEV_S_EDID: u32 = 3223868969;
-pub const MATROXFB_SET_OUTPUT_MODE: u32 = 1074294522;
-pub const RIO_DEV_ADD: u32 = 1075866903;
-pub const VIDIOC_ENUM_FREQ_BANDS: u32 = 3225441893;
-pub const FBIO_RADEON_SET_MIRROR: u32 = 1074282500;
-pub const PCITEST_GET_IRQTYPE: u32 = 20489;
-pub const JSIOCGVERSION: u32 = 2147772929;
-pub const SONYPI_IOCSBLUE: u32 = 1073837577;
-pub const SNAPSHOT_PREF_IMAGE_SIZE: u32 = 13074;
-pub const F2FS_IOC_GET_FEATURES: u32 = 2147808524;
-pub const SCIF_REG: u32 = 3223876360;
-pub const NILFS_IOCTL_CLEAN_SEGMENTS: u32 = 1081634440;
-pub const FW_CDEV_IOC_INITIATE_BUS_RESET: u32 = 1074012933;
-pub const RIO_WAIT_FOR_ASYNC: u32 = 1074294038;
-pub const VHOST_SET_VRING_NUM: u32 = 1074310928;
-pub const AUTOFS_DEV_IOCTL_PROTOVER: u32 = 3222836082;
-pub const RIO_FREE_DMA: u32 = 1074294036;
-pub const MGSL_IOCRXENABLE: u32 = 27909;
-pub const IOCTL_VM_SOCKETS_GET_LOCAL_CID: u32 = 1977;
-pub const IPMICTL_SET_TIMING_PARMS_CMD: u32 = 2148034838;
-pub const PPPIOCGL2TPSTATS: u32 = 2152231990;
-pub const PERF_EVENT_IOC_PERIOD: u32 = 1074275332;
-pub const PTP_PIN_SETFUNC2: u32 = 1080048912;
-pub const CHIOEXCHANGE: u32 = 1075602178;
-pub const NILFS_IOCTL_GET_SUINFO: u32 = 2149084804;
-pub const CEC_DQEVENT: u32 = 3226493191;
-pub const UI_SET_SWBIT: u32 = 1074025837;
-pub const VHOST_VDPA_SET_CONFIG: u32 = 1074311028;
-pub const TUNSETIFF: u32 = 1074025674;
-pub const CHIOPOSITION: u32 = 1074553603;
-pub const IPMICTL_SET_MAINTENANCE_MODE_CMD: u32 = 1074030879;
-pub const BTRFS_IOC_DEFAULT_SUBVOL: u32 = 1074304019;
-pub const RIO_UNMAP_OUTBOUND: u32 = 1076391184;
-pub const CAPI_CLR_FLAGS: u32 = 2147762981;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE: u32 = 1075323663;
-pub const MATROXFB_GET_OUTPUT_CONNECTION: u32 = 2148036344;
-pub const EVIOCSMASK: u32 = 1074808211;
-pub const BTRFS_IOC_FORGET_DEV: u32 = 1342215173;
-pub const CXL_MEM_QUERY_COMMANDS: u32 = 2148060673;
-pub const CEC_S_MODE: u32 = 1074028809;
-pub const MGSL_IOCSIF: u32 = 27914;
-pub const SWITCHTEC_IOCTL_PFF_TO_PORT: u32 = 3222034244;
-pub const PPSETMODE: u32 = 1074032768;
-pub const VFIO_DEVICE_SET_IRQS: u32 = 15214;
-pub const VIDIOC_PREPARE_BUF: u32 = 3227014749;
-pub const CEC_ADAP_G_CONNECTOR_INFO: u32 = 2151964938;
-pub const IOC_OPAL_WRITE_SHADOW_MBR: u32 = 1092645098;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL: u32 = 3225441867;
-pub const UDMABUF_CREATE: u32 = 1075344706;
-pub const SONET_CLRDIAG: u32 = 3221512467;
-pub const PHN_SET_REG: u32 = 1074294785;
-pub const RNDADDTOENTCNT: u32 = 1074024961;
-pub const VBG_IOCTL_CHECK_BALLOON: u32 = 3223344657;
-pub const VIDIOC_OMAP3ISP_STAT_REQ: u32 = 3223869126;
-pub const PPS_FETCH: u32 = 3221778596;
-pub const RTC_AIE_OFF: u32 = 28674;
-pub const VFIO_GROUP_SET_CONTAINER: u32 = 15208;
-pub const FW_CDEV_IOC_RECEIVE_PHY_PACKETS: u32 = 1074275094;
-pub const VFIO_IOMMU_SPAPR_TCE_REMOVE: u32 = 15224;
-pub const VFIO_IOMMU_GET_INFO: u32 = 15216;
-pub const DM_DEV_SUSPEND: u32 = 3241737478;
-pub const F2FS_IOC_GET_COMPRESS_OPTION: u32 = 2147677461;
-pub const FW_CDEV_IOC_STOP_ISO: u32 = 1074012939;
-pub const GPIO_V2_GET_LINEINFO_IOCTL: u32 = 3238048773;
-pub const ATMMPC_CTRL: u32 = 25048;
-pub const PPPIOCSXASYNCMAP: u32 = 1075868751;
-pub const CHIOGSTATUS: u32 = 1074815752;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE: u32 = 3222807309;
-pub const RIO_MPORT_MAINT_PORT_IDX_GET: u32 = 2147773699;
-pub const CAPI_SET_FLAGS: u32 = 2147762980;
-pub const VFIO_GROUP_GET_DEVICE_FD: u32 = 15210;
-pub const VHOST_SET_MEM_TABLE: u32 = 1074310915;
-pub const MATROXFB_SET_OUTPUT_CONNECTION: u32 = 1074294520;
-pub const DFL_FPGA_PORT_GET_REGION_INFO: u32 = 46658;
-pub const VHOST_GET_FEATURES: u32 = 2148052736;
-pub const LIRC_GET_REC_RESOLUTION: u32 = 2147772679;
-pub const PACKET_CTRL_CMD: u32 = 3222820865;
-pub const LIRC_SET_TRANSMITTER_MASK: u32 = 1074030871;
-pub const BTRFS_IOC_ADD_DEV: u32 = 1342215178;
-pub const JSIOCGCORR: u32 = 2149870114;
-pub const VIDIOC_G_FMT: u32 = 3234878980;
-pub const RTC_EPOCH_SET: u32 = 1074294798;
-pub const CAPI_GET_PROFILE: u32 = 3225436937;
-pub const ATM_GETLOOP: u32 = 1074815314;
-pub const SCIF_LISTEN: u32 = 1074033410;
-pub const NBD_CLEAR_QUE: u32 = 43781;
-pub const F2FS_IOC_MOVE_RANGE: u32 = 3223385353;
-pub const LIRC_GET_LENGTH: u32 = 2147772687;
-pub const I8K_SET_FAN: u32 = 3221776775;
-pub const FDSETMAXERRS: u32 = 1075053132;
-pub const VIDIOC_SUBDEV_QUERYCAP: u32 = 2151699968;
-pub const SNAPSHOT_SET_SWAP_AREA: u32 = 1074541325;
-pub const LIRC_GET_REC_TIMEOUT: u32 = 2147772708;
-pub const EVIOCRMFF: u32 = 1074021761;
-pub const GPIO_GET_LINEEVENT_IOCTL: u32 = 3224417284;
-pub const PPRDATA: u32 = 2147577989;
-pub const RIO_MPORT_GET_PROPERTIES: u32 = 2150657284;
-pub const TUNSETVNETHDRSZ: u32 = 1074025688;
-pub const GPIO_GET_LINEINFO_IOCTL: u32 = 3225990146;
-pub const GSMIOC_GETCONF: u32 = 2152482560;
-pub const LIRC_GET_SEND_MODE: u32 = 2147772673;
-pub const PPPIOCSACTIVE: u32 = 1074820166;
-pub const SIOCGSTAMPNS_NEW: u32 = 2148567303;
-pub const IPMICTL_RECEIVE_MSG: u32 = 3224398092;
-pub const LIRC_SET_SEND_DUTY_CYCLE: u32 = 1074030869;
-pub const UI_END_FF_ERASE: u32 = 1074550219;
-pub const SWITCHTEC_IOCTL_FLASH_PART_INFO: u32 = 3222296385;
-pub const FW_CDEV_IOC_SEND_PHY_PACKET: u32 = 3222807317;
-pub const NBD_SET_FLAGS: u32 = 43786;
-pub const VFIO_DEVICE_GET_REGION_INFO: u32 = 15212;
-pub const REISERFS_IOC_UNPACK: u32 = 1074318593;
-pub const FW_CDEV_IOC_REMOVE_DESCRIPTOR: u32 = 1074012935;
-pub const RIO_SET_EVENT_MASK: u32 = 1074031885;
-pub const SNAPSHOT_ALLOC_SWAP_PAGE: u32 = 2148021012;
-pub const VDUSE_VQ_INJECT_IRQ: u32 = 1074037015;
-pub const I2OPASSTHRU: u32 = 2148559116;
-pub const IOC_OPAL_SET_PW: u32 = 1109422304;
-pub const FSI_SCOM_READ: u32 = 3223352065;
-pub const VHOST_VDPA_GET_DEVICE_ID: u32 = 2147790704;
-pub const VIDIOC_QBUF: u32 = 3227014671;
-pub const VIDIOC_S_TUNER: u32 = 1079268894;
-pub const TUNGETVNETHDRSZ: u32 = 2147767511;
-pub const CAPI_NCCI_GETUNIT: u32 = 2147762983;
-pub const DFL_FPGA_PORT_UINT_GET_IRQ_NUM: u32 = 2147792455;
-pub const VIDIOC_OMAP3ISP_STAT_EN: u32 = 3221771975;
-pub const GPIO_V2_LINE_SET_CONFIG_IOCTL: u32 = 3239097357;
-pub const TEE_IOC_VERSION: u32 = 2148312064;
-pub const VIDIOC_LOG_STATUS: u32 = 22086;
-pub const IPMICTL_SEND_COMMAND_SETTIME: u32 = 2150656277;
-pub const VHOST_SET_LOG_FD: u32 = 1074048775;
-pub const SCIF_SEND: u32 = 3222827782;
-pub const VIDIOC_SUBDEV_G_FMT: u32 = 3227014660;
-pub const NS_ADJBUFLEV: u32 = 24931;
-pub const VIDIOC_DBG_S_REGISTER: u32 = 1077433935;
-pub const NILFS_IOCTL_RESIZE: u32 = 1074294411;
-pub const PHN_GETREG: u32 = 3221778437;
-pub const I2OSWDL: u32 = 3224398085;
-pub const VBG_IOCTL_VMMDEV_REQUEST_BIG: u32 = 22019;
-pub const JSIOCGBUTTONS: u32 = 2147576338;
-pub const VFIO_IOMMU_ENABLE: u32 = 15219;
-pub const DM_DEV_RENAME: u32 = 3241737477;
-pub const MEDIA_IOC_SETUP_LINK: u32 = 3224665091;
-pub const VIDIOC_ENUMOUTPUT: u32 = 3225966128;
-pub const STP_POLICY_ID_SET: u32 = 3222283520;
-pub const VHOST_VDPA_SET_CONFIG_CALL: u32 = 1074048887;
-pub const VIDIOC_SUBDEV_G_CROP: u32 = 3224917563;
-pub const VIDIOC_S_CROP: u32 = 1075074620;
-pub const WDIOC_GETTEMP: u32 = 2147768067;
-pub const IOC_OPAL_ADD_USR_TO_LR: u32 = 1092120804;
-pub const UI_SET_LEDBIT: u32 = 1074025833;
-pub const NBD_SET_SOCK: u32 = 43776;
-pub const BTRFS_IOC_SNAP_DESTROY_V2: u32 = 1342215231;
-pub const HIDIOCGCOLLECTIONINFO: u32 = 3222292497;
-pub const I2OSWUL: u32 = 3224398086;
-pub const IOCTL_MEI_NOTIFY_GET: u32 = 2147764227;
-pub const FDFMTTRK: u32 = 1074528840;
-pub const MMTIMER_GETBITS: u32 = 27908;
-pub const VIDIOC_ENUMSTD: u32 = 3225966105;
-pub const VHOST_GET_VRING_BASE: u32 = 3221794578;
-pub const VFIO_DEVICE_IOEVENTFD: u32 = 15220;
-pub const ATMARP_SETENTRY: u32 = 25059;
-pub const CCISS_REVALIDVOLS: u32 = 16906;
-pub const MGSL_IOCLOOPTXDONE: u32 = 27913;
-pub const RTC_VL_READ: u32 = 2147774483;
-pub const ND_IOCTL_ARS_STATUS: u32 = 3224391171;
-pub const RIO_DEV_DEL: u32 = 1075866904;
-pub const VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES: u32 = 3223606797;
-pub const VIDIOC_SUBDEV_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const SONYPI_IOCSFAN: u32 = 1073837579;
-pub const SPIOCSTYPE: u32 = 1074295041;
-pub const IPMICTL_REGISTER_FOR_CMD: u32 = 2147641614;
-pub const I8K_GET_FAN: u32 = 3221776774;
-pub const TUNGETVNETBE: u32 = 2147767519;
-pub const AUTOFS_DEV_IOCTL_FAIL: u32 = 3222836087;
-pub const UI_END_FF_UPLOAD: u32 = 1080579529;
-pub const TOSH_SMM: u32 = 3222828176;
-pub const SONYPI_IOCGBAT2REM: u32 = 2147644933;
-pub const F2FS_IOC_GET_COMPRESS_BLOCKS: u32 = 2148070673;
-pub const PPPIOCSNPMODE: u32 = 1074295883;
-pub const USBDEVFS_CONTROL: u32 = 3222820096;
-pub const HIDIOCGUSAGE: u32 = 3222816779;
-pub const TUNSETTXFILTER: u32 = 1074025681;
-pub const TUNGETVNETLE: u32 = 2147767517;
-pub const VIDIOC_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const BTRFS_IOC_INO_PATHS: u32 = 3224933411;
-pub const MGSL_IOCGXSYNC: u32 = 27924;
-pub const HIDIOCGFIELDINFO: u32 = 3224913930;
-pub const VIDIOC_SUBDEV_G_STD: u32 = 2148029975;
-pub const I2OVALIDATE: u32 = 2147772680;
-pub const VIDIOC_TRY_ENCODER_CMD: u32 = 3223869006;
-pub const NILFS_IOCTL_GET_CPINFO: u32 = 2149084802;
-pub const VIDIOC_G_FREQUENCY: u32 = 3224131128;
-pub const VFAT_IOCTL_READDIR_SHORT: u32 = 2184212994;
-pub const ND_IOCTL_GET_CONFIG_DATA: u32 = 3222031877;
-pub const F2FS_IOC_RESERVE_COMPRESS_BLOCKS: u32 = 2148070675;
-pub const FDGETDRVSTAT: u32 = 2152727058;
-pub const SYNC_IOC_MERGE: u32 = 3224387075;
-pub const VIDIOC_S_DV_TIMINGS: u32 = 3229898327;
-pub const PPPIOCBRIDGECHAN: u32 = 1074033717;
-pub const LIRC_SET_SEND_MODE: u32 = 1074030865;
-pub const RIO_ENABLE_PORTWRITE_RANGE: u32 = 1074818315;
-pub const ATM_GETTYPE: u32 = 1074815364;
-pub const PHN_GETREGS: u32 = 3223875591;
-pub const FDSETEMSGTRESH: u32 = 586;
-pub const NILFS_IOCTL_GET_VINFO: u32 = 3222826630;
-pub const MGSL_IOCWAITEVENT: u32 = 3221515528;
-pub const CAPI_INSTALLED: u32 = 2147631906;
-pub const EVIOCGMASK: u32 = 2148550034;
-pub const BTRFS_IOC_SUBVOL_GETFLAGS: u32 = 2148045849;
-pub const FSL_HV_IOCTL_PARTITION_GET_STATUS: u32 = 3222056706;
-pub const MEDIA_IOC_ENUM_ENTITIES: u32 = 3238034433;
-pub const GSMIOC_GETFIRST: u32 = 2147763972;
-pub const FW_CDEV_IOC_FLUSH_ISO: u32 = 1074012952;
-pub const VIDIOC_DBG_G_CHIP_INFO: u32 = 3234354790;
-pub const F2FS_IOC_RELEASE_VOLATILE_WRITE: u32 = 62724;
-pub const CAPI_GET_SERIAL: u32 = 3221504776;
-pub const FDSETDRVPRM: u32 = 1082131088;
-pub const IOC_OPAL_SAVE: u32 = 1092120796;
-pub const VIDIOC_G_DV_TIMINGS: u32 = 3229898328;
-pub const TUNSETIFINDEX: u32 = 1074025690;
-pub const CCISS_SETINTINFO: u32 = 1074283011;
-pub const CM_IOSDBGLVL: u32 = 1074291706;
-pub const RTC_VL_CLR: u32 = 28692;
-pub const VIDIOC_REQBUFS: u32 = 3222558216;
-pub const USBDEVFS_REAPURBNDELAY32: u32 = 1074025741;
-pub const TEE_IOC_SHM_REGISTER: u32 = 3222840329;
-pub const USBDEVFS_SETCONFIGURATION: u32 = 2147767557;
-pub const CCISS_GETNODENAME: u32 = 2148549124;
-pub const VIDIOC_SUBDEV_S_FRAME_INTERVAL: u32 = 3224393238;
-pub const VIDIOC_ENUM_FRAMESIZES: u32 = 3224131146;
-pub const VFIO_DEVICE_PCI_HOT_RESET: u32 = 15217;
-pub const FW_CDEV_IOC_SEND_BROADCAST_REQUEST: u32 = 1076372242;
-pub const LPSETTIMEOUT_NEW: u32 = 1074791951;
-pub const RIO_CM_MPORT_GET_LIST: u32 = 3221512971;
-pub const FW_CDEV_IOC_QUEUE_ISO: u32 = 3222807305;
-pub const FDRAWCMD: u32 = 600;
-pub const SCIF_UNREG: u32 = 3222303497;
-pub const PPPIOCGIDLE64: u32 = 2148561983;
-pub const USBDEVFS_RELEASEINTERFACE: u32 = 2147767568;
-pub const VIDIOC_CROPCAP: u32 = 3224131130;
-pub const DFL_FPGA_PORT_GET_INFO: u32 = 46657;
-pub const PHN_SET_REGS: u32 = 1074294787;
-pub const ATMLEC_DATA: u32 = 25041;
-pub const PPPOEIOCDFWD: u32 = 45313;
-pub const VIDIOC_S_SELECTION: u32 = 3225441887;
-pub const SNAPSHOT_FREE_SWAP_PAGES: u32 = 13065;
-pub const BTRFS_IOC_LOGICAL_INO: u32 = 3224933412;
-pub const VIDIOC_S_CTRL: u32 = 3221771804;
-pub const ZATM_SETPOOL: u32 = 1074815331;
-pub const MTIOCPOS: u32 = 2148035843;
-pub const PMU_IOC_SLEEP: u32 = 16896;
-pub const AUTOFS_DEV_IOCTL_PROTOSUBVER: u32 = 3222836083;
-pub const VBG_IOCTL_CHANGE_FILTER_MASK: u32 = 3223344652;
-pub const NILFS_IOCTL_GET_SUSTAT: u32 = 2150657669;
-pub const VIDIOC_QUERYCAP: u32 = 2154321408;
-pub const HPET_INFO: u32 = 2149083139;
-pub const VIDIOC_AM437X_CCDC_CFG: u32 = 1074288321;
-pub const DM_LIST_DEVICES: u32 = 3241737474;
-pub const TUNSETOWNER: u32 = 1074025676;
-pub const VBG_IOCTL_CHANGE_GUEST_CAPABILITIES: u32 = 3223344654;
-pub const RNDADDENTROPY: u32 = 1074287107;
-pub const USBDEVFS_RESET: u32 = 21780;
-pub const BTRFS_IOC_SUBVOL_CREATE: u32 = 1342215182;
-pub const USBDEVFS_FORBID_SUSPEND: u32 = 21793;
-pub const FDGETDRVTYP: u32 = 2148532751;
-pub const PPWCONTROL: u32 = 1073836164;
-pub const VIDIOC_ENUM_FRAMEINTERVALS: u32 = 3224655435;
-pub const KCOV_DISABLE: u32 = 25445;
-pub const IOC_OPAL_ACTIVATE_LSP: u32 = 1092120799;
-pub const VHOST_VDPA_GET_IOVA_RANGE: u32 = 2148577144;
-pub const PPPIOCSPASS: u32 = 1074820167;
-pub const RIO_CM_CHAN_CONNECT: u32 = 1074291464;
-pub const I2OSWDEL: u32 = 3224398087;
-pub const FS_IOC_SET_ENCRYPTION_POLICY: u32 = 2148296211;
-pub const IOC_OPAL_MBR_DONE: u32 = 1091596521;
-pub const PPPIOCSMAXCID: u32 = 1074033745;
-pub const PPSETPHASE: u32 = 1074032788;
-pub const VHOST_VDPA_SET_VRING_ENABLE: u32 = 1074311029;
-pub const USBDEVFS_GET_SPEED: u32 = 21791;
-pub const SONET_GETFRAMING: u32 = 2147770646;
-pub const VIDIOC_QUERYBUF: u32 = 3227014665;
-pub const VIDIOC_S_EDID: u32 = 3223868969;
-pub const BTRFS_IOC_QGROUP_ASSIGN: u32 = 1075352617;
-pub const PPS_GETCAP: u32 = 2148036771;
-pub const SNAPSHOT_PLATFORM_SUPPORT: u32 = 13071;
-pub const LIRC_SET_REC_TIMEOUT_REPORTS: u32 = 1074030873;
-pub const SCIF_GET_NODEIDS: u32 = 3222827790;
-pub const NBD_DISCONNECT: u32 = 43784;
-pub const VIDIOC_SUBDEV_G_FRAME_INTERVAL: u32 = 3224393237;
-pub const VFIO_IOMMU_DISABLE: u32 = 15220;
-pub const SNAPSHOT_CREATE_IMAGE: u32 = 1074017041;
-pub const SNAPSHOT_POWER_OFF: u32 = 13072;
-pub const APM_IOC_STANDBY: u32 = 16641;
-pub const PPPIOCGUNIT: u32 = 2147775574;
-pub const AUTOFS_IOC_EXPIRE_MULTI: u32 = 1074041702;
-pub const SCIF_BIND: u32 = 3221779201;
-pub const IOC_WATCH_QUEUE_SET_SIZE: u32 = 22368;
-pub const NILFS_IOCTL_CHANGE_CPMODE: u32 = 1074818688;
-pub const IOC_OPAL_LOCK_UNLOCK: u32 = 1092120797;
-pub const F2FS_IOC_SET_PIN_FILE: u32 = 1074066701;
-pub const PPPIOCGRASYNCMAP: u32 = 2147775573;
-pub const MMTIMER_MMAPAVAIL: u32 = 27910;
-pub const I2OPASSTHRU32: u32 = 2148034828;
-pub const DFL_FPGA_FME_PORT_RELEASE: u32 = 1074050689;
-pub const VIDIOC_SUBDEV_QUERY_DV_TIMINGS: u32 = 2156156515;
-pub const UI_SET_SNDBIT: u32 = 1074025834;
-pub const VIDIOC_G_AUDOUT: u32 = 2150913585;
-pub const RTC_PLL_SET: u32 = 1075867666;
-pub const VIDIOC_ENUMAUDIO: u32 = 3224655425;
-pub const AUTOFS_DEV_IOCTL_TIMEOUT: u32 = 3222836090;
-pub const VBG_IOCTL_DRIVER_VERSION_INFO: u32 = 3224131072;
-pub const VHOST_SCSI_GET_EVENTS_MISSED: u32 = 1074048836;
-pub const VHOST_SET_VRING_ADDR: u32 = 1076408081;
-pub const VDUSE_CREATE_DEV: u32 = 1095794946;
-pub const FDFLUSH: u32 = 587;
-pub const VBG_IOCTL_WAIT_FOR_EVENTS: u32 = 3223344650;
-pub const DFL_FPGA_FME_ERR_SET_IRQ: u32 = 1074312836;
-pub const F2FS_IOC_GET_PIN_FILE: u32 = 2147808526;
-pub const SCIF_CONNECT: u32 = 3221779203;
-pub const BLKREPORTZONE: u32 = 3222278786;
-pub const AUTOFS_IOC_ASKUMOUNT: u32 = 2147783536;
-pub const ATM_ADDPARTY: u32 = 1074815476;
-pub const FDSETPRM: u32 = 1075839554;
-pub const ATM_GETSTATZ: u32 = 1074815313;
-pub const ISST_IF_MSR_COMMAND: u32 = 3221814788;
-pub const BTRFS_IOC_GET_SUBVOL_INFO: u32 = 2180551740;
-pub const VIDIOC_UNSUBSCRIBE_EVENT: u32 = 1075861083;
-pub const SEV_ISSUE_CMD: u32 = 3222295296;
-pub const GPIOHANDLE_SET_LINE_VALUES_IOCTL: u32 = 3225465865;
-pub const PCITEST_COPY: u32 = 1074286598;
-pub const IPMICTL_GET_MY_ADDRESS_CMD: u32 = 2147772690;
-pub const CHIOGPICKER: u32 = 2147771140;
-pub const CAPI_NCCI_OPENCOUNT: u32 = 2147762982;
-pub const CXL_MEM_SEND_COMMAND: u32 = 3224423938;
-pub const PERF_EVENT_IOC_SET_FILTER: u32 = 1074275334;
-pub const IOC_OPAL_REVERT_TPR: u32 = 1091072226;
-pub const CHIOGVPARAMS: u32 = 2154849043;
-pub const PTP_PEROUT_REQUEST: u32 = 1077427459;
-pub const FSI_SCOM_CHECK: u32 = 2147775232;
-pub const RTC_IRQP_READ: u32 = 2148036619;
-pub const RIO_MPORT_MAINT_READ_LOCAL: u32 = 2149084421;
-pub const HIDIOCGRDESCSIZE: u32 = 2147764225;
-pub const UI_GET_VERSION: u32 = 2147767597;
-pub const NILFS_IOCTL_GET_CPSTAT: u32 = 2149084803;
-pub const CCISS_GETBUSTYPES: u32 = 2147762695;
-pub const VFIO_IOMMU_SPAPR_TCE_CREATE: u32 = 15223;
-pub const VIDIOC_EXPBUF: u32 = 3225441808;
-pub const UI_SET_RELBIT: u32 = 1074025830;
-pub const VFIO_SET_IOMMU: u32 = 15206;
-pub const VIDIOC_S_MODULATOR: u32 = 1078220343;
-pub const TUNGETFILTER: u32 = 2148553947;
-pub const MEYEIOC_SYNC: u32 = 3221518019;
-pub const CCISS_SETNODENAME: u32 = 1074807301;
-pub const FBIO_GETCONTROL2: u32 = 2148025993;
-pub const TUNSETDEBUG: u32 = 1074025673;
-pub const DM_DEV_REMOVE: u32 = 3241737476;
-pub const HIDIOCSUSAGES: u32 = 1344030740;
-pub const FS_IOC_ADD_ENCRYPTION_KEY: u32 = 3226494487;
-pub const FBIOGET_VBLANK: u32 = 2149598738;
-pub const ATM_GETSTAT: u32 = 1074815312;
-pub const VIDIOC_G_JPEGCOMP: u32 = 2156680765;
-pub const TUNATTACHFILTER: u32 = 1074812117;
-pub const UI_SET_ABSBIT: u32 = 1074025831;
-pub const DFL_FPGA_PORT_ERR_GET_IRQ_NUM: u32 = 2147792453;
-pub const USBDEVFS_REAPURB32: u32 = 1074025740;
-pub const BTRFS_IOC_TRANS_END: u32 = 37895;
-pub const CAPI_REGISTER: u32 = 1074545409;
-pub const F2FS_IOC_COMPRESS_FILE: u32 = 62744;
-pub const USBDEVFS_DISCARDURB: u32 = 21771;
-pub const HE_GET_REG: u32 = 1074815328;
-pub const ATM_SETLOOP: u32 = 1074815315;
-pub const ATMSIGD_CTRL: u32 = 25072;
-pub const CIOC_KERNEL_VERSION: u32 = 3221775114;
-pub const BTRFS_IOC_CLONE_RANGE: u32 = 1075876877;
-pub const SNAPSHOT_UNFREEZE: u32 = 13058;
-pub const F2FS_IOC_START_VOLATILE_WRITE: u32 = 62723;
-pub const PMU_IOC_HAS_ADB: u32 = 2148024836;
-pub const I2OGETIOPS: u32 = 2149607680;
-pub const VIDIOC_S_FBUF: u32 = 1076909579;
-pub const PPRCONTROL: u32 = 2147577987;
-pub const CHIOSPICKER: u32 = 1074029317;
-pub const VFIO_IOMMU_SPAPR_REGISTER_MEMORY: u32 = 15221;
-pub const TUNGETSNDBUF: u32 = 2147767507;
-pub const GSMIOC_SETCONF: u32 = 1078740737;
-pub const IOC_PR_PREEMPT: u32 = 1075343563;
-pub const KCOV_INIT_TRACE: u32 = 2148033281;
-pub const SONYPI_IOCGBAT1CAP: u32 = 2147644930;
-pub const SWITCHTEC_IOCTL_FLASH_INFO: u32 = 2148554560;
-pub const MTIOCTOP: u32 = 1074294017;
-pub const VHOST_VDPA_SET_STATUS: u32 = 1073852274;
-pub const VHOST_SCSI_SET_EVENTS_MISSED: u32 = 1074048835;
-pub const VFIO_IOMMU_DIRTY_PAGES: u32 = 15221;
-pub const BTRFS_IOC_SCRUB_PROGRESS: u32 = 3288372253;
-pub const PPPIOCGMRU: u32 = 2147775571;
-pub const BTRFS_IOC_DEV_REPLACE: u32 = 3391657013;
-pub const PPPIOCGFLAGS: u32 = 2147775578;
-pub const NILFS_IOCTL_SET_SUINFO: u32 = 1075342989;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER2: u32 = 3222807316;
-pub const ATM_DELLECSADDR: u32 = 1074815375;
-pub const FW_CDEV_IOC_GET_SPEED: u32 = 8977;
-pub const PPPIOCGIDLE32: u32 = 2148037695;
-pub const VFIO_DEVICE_RESET: u32 = 15215;
-pub const GPIO_GET_LINEINFO_UNWATCH_IOCTL: u32 = 3221533708;
-pub const WDIOC_GETSTATUS: u32 = 2147768065;
-pub const BTRFS_IOC_SET_FEATURES: u32 = 1076925497;
-pub const IOCTL_MEI_CONNECT_CLIENT: u32 = 3222292481;
-pub const VIDIOC_OMAP3ISP_AEWB_CFG: u32 = 3223344835;
-pub const PCITEST_READ: u32 = 1074286597;
-pub const VFIO_GROUP_GET_STATUS: u32 = 15207;
-pub const MATROXFB_GET_ALL_OUTPUTS: u32 = 2148036347;
-pub const USBDEVFS_CLEAR_HALT: u32 = 2147767573;
-pub const VIDIOC_DECODER_CMD: u32 = 3225966176;
-pub const VIDIOC_G_AUDIO: u32 = 2150913569;
-pub const CCISS_RESCANDISK: u32 = 16912;
-pub const RIO_DISABLE_PORTWRITE_RANGE: u32 = 1074818316;
-pub const IOC_OPAL_SECURE_ERASE_LR: u32 = 1091596519;
-pub const USBDEVFS_REAPURB: u32 = 1074287884;
-pub const DFL_FPGA_CHECK_EXTENSION: u32 = 46593;
-pub const AUTOFS_IOC_PROTOVER: u32 = 2147783523;
-pub const FSL_HV_IOCTL_MEMCPY: u32 = 3223891717;
-pub const BTRFS_IOC_GET_FEATURES: u32 = 2149094457;
-pub const PCITEST_MSIX: u32 = 1074024455;
-pub const BTRFS_IOC_DEFRAG_RANGE: u32 = 1076925456;
-pub const UI_BEGIN_FF_ERASE: u32 = 3222033866;
-pub const DM_GET_TARGET_VERSION: u32 = 3241737489;
-pub const PPPIOCGIDLE: u32 = 2148561983;
-pub const NVRAM_SETCKS: u32 = 28737;
-pub const WDIOC_GETSUPPORT: u32 = 2150127360;
-pub const GSMIOC_ENABLE_NET: u32 = 1077167874;
-pub const GPIO_GET_CHIPINFO_IOCTL: u32 = 2151986177;
-pub const NE_ADD_VCPU: u32 = 3221532193;
-pub const EVIOCSKEYCODE_V2: u32 = 1076380932;
-pub const PTP_SYS_OFFSET_EXTENDED2: u32 = 3300932882;
-pub const SCIF_FENCE_WAIT: u32 = 3221517072;
-pub const RIO_TRANSFER: u32 = 3222826261;
-pub const FSL_HV_IOCTL_DOORBELL: u32 = 3221794566;
-pub const RIO_MPORT_MAINT_WRITE_LOCAL: u32 = 1075342598;
-pub const I2OEVTREG: u32 = 1074555146;
-pub const I2OPARMGET: u32 = 3223873796;
-pub const EVIOCGID: u32 = 2148025602;
-pub const BTRFS_IOC_QGROUP_CREATE: u32 = 1074828330;
-pub const AUTOFS_DEV_IOCTL_SETPIPEFD: u32 = 3222836088;
-pub const VIDIOC_S_PARM: u32 = 3234616854;
-pub const TUNSETSTEERINGEBPF: u32 = 2147767520;
-pub const ATM_GETNAMES: u32 = 1074815363;
-pub const VIDIOC_QUERYMENU: u32 = 3224131109;
-pub const DFL_FPGA_PORT_DMA_UNMAP: u32 = 46660;
-pub const I2OLCTGET: u32 = 3222825218;
-pub const FS_IOC_GET_ENCRYPTION_PWSALT: u32 = 1074816532;
-pub const NS_SETBUFLEV: u32 = 1074815330;
-pub const BLKCLOSEZONE: u32 = 1074795143;
-pub const SONET_GETFRSENSE: u32 = 2147901719;
-pub const UI_SET_EVBIT: u32 = 1074025828;
-pub const DM_LIST_VERSIONS: u32 = 3241737485;
-pub const HIDIOCGSTRING: u32 = 2164541444;
-pub const PPPIOCATTCHAN: u32 = 1074033720;
-pub const VDUSE_DEV_SET_CONFIG: u32 = 1074299154;
-pub const TUNGETFEATURES: u32 = 2147767503;
-pub const VFIO_GROUP_UNSET_CONTAINER: u32 = 15209;
-pub const IPMICTL_SET_MY_ADDRESS_CMD: u32 = 2147772689;
-pub const CCISS_REGNEWDISK: u32 = 1074020877;
-pub const VIDIOC_QUERY_DV_TIMINGS: u32 = 2156156515;
-pub const PHN_SETREGS: u32 = 1076391944;
-pub const FAT_IOCTL_GET_ATTRIBUTES: u32 = 2147774992;
-pub const FSL_MC_SEND_MC_COMMAND: u32 = 3225440992;
-pub const TUNGETIFF: u32 = 2147767506;
-pub const PTP_CLOCK_GETCAPS2: u32 = 2152742154;
-pub const BTRFS_IOC_RESIZE: u32 = 1342215171;
-pub const VHOST_SET_VRING_ENDIAN: u32 = 1074310931;
-pub const PPS_KC_BIND: u32 = 1074294949;
-pub const F2FS_IOC_WRITE_CHECKPOINT: u32 = 62727;
-pub const UI_SET_FFBIT: u32 = 1074025835;
-pub const IPMICTL_GET_MY_LUN_CMD: u32 = 2147772692;
-pub const CEC_ADAP_G_PHYS_ADDR: u32 = 2147639553;
-pub const CEC_G_MODE: u32 = 2147770632;
-pub const USBDEVFS_RESETEP: u32 = 2147767555;
-pub const MEDIA_REQUEST_IOC_QUEUE: u32 = 31872;
-pub const USBDEVFS_ALLOC_STREAMS: u32 = 2148029724;
-pub const MGSL_IOCSXCTRL: u32 = 27925;
-pub const MEDIA_IOC_G_TOPOLOGY: u32 = 3225975812;
-pub const PPPIOCUNBRIDGECHAN: u32 = 29748;
-pub const F2FS_IOC_COMMIT_ATOMIC_WRITE: u32 = 62722;
-pub const ISST_IF_GET_PLATFORM_INFO: u32 = 2148072960;
-pub const SCIF_FENCE_MARK: u32 = 3222303503;
-pub const USBDEVFS_RELEASE_PORT: u32 = 2147767577;
-pub const VFIO_CHECK_EXTENSION: u32 = 15205;
-pub const BTRFS_IOC_QGROUP_LIMIT: u32 = 2150667307;
-pub const FAT_IOCTL_GET_VOLUME_ID: u32 = 2147774995;
-pub const UI_SET_PHYS: u32 = 1074287980;
-pub const FDWERRORGET: u32 = 2150105623;
-pub const VIDIOC_SUBDEV_G_EDID: u32 = 3223868968;
-pub const MGSL_IOCGSTATS: u32 = 27911;
-pub const RPROC_SET_SHUTDOWN_ON_RELEASE: u32 = 1074050817;
-pub const SIOCGSTAMP_NEW: u32 = 2148567302;
-pub const RTC_WKALM_RD: u32 = 2150133776;
-pub const PHN_GET_REG: u32 = 3221778432;
-pub const DELL_WMI_SMBIOS_CMD: u32 = 3224655616;
-pub const PHN_NOT_OH: u32 = 28676;
-pub const PPGETMODES: u32 = 2147774615;
-pub const CHIOGPARAMS: u32 = 2148819718;
-pub const VFIO_DEVICE_GET_GFX_DMABUF: u32 = 15219;
-pub const VHOST_SET_VRING_BUSYLOOP_TIMEOUT: u32 = 1074310947;
-pub const VIDIOC_SUBDEV_G_SELECTION: u32 = 3225441853;
-pub const BTRFS_IOC_RM_DEV_V2: u32 = 1342215226;
-pub const MGSL_IOCWAITGPIO: u32 = 3222301970;
-pub const PMU_IOC_CAN_SLEEP: u32 = 2148024837;
-pub const KCOV_ENABLE: u32 = 25444;
-pub const BTRFS_IOC_CLONE: u32 = 1074041865;
-pub const F2FS_IOC_DEFRAGMENT: u32 = 3222336776;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE: u32 = 1074012942;
-pub const AGPIOC_ALLOCATE: u32 = 3221766406;
-pub const NE_SET_USER_MEMORY_REGION: u32 = 1075359267;
-pub const MGSL_IOCTXABORT: u32 = 27910;
-pub const MGSL_IOCSGPIO: u32 = 1074818320;
-pub const LIRC_SET_REC_CARRIER: u32 = 1074030868;
-pub const F2FS_IOC_FLUSH_DEVICE: u32 = 1074328842;
-pub const SNAPSHOT_ATOMIC_RESTORE: u32 = 13060;
-pub const RTC_UIE_OFF: u32 = 28676;
-pub const BT_BMC_IOCTL_SMS_ATN: u32 = 45312;
-pub const NVME_IOCTL_ID: u32 = 20032;
-pub const NE_START_ENCLAVE: u32 = 3222318628;
-pub const VIDIOC_STREAMON: u32 = 1074026002;
-pub const FDPOLLDRVSTAT: u32 = 2152727059;
-pub const AUTOFS_DEV_IOCTL_READY: u32 = 3222836086;
-pub const VIDIOC_ENUMAUDOUT: u32 = 3224655426;
-pub const VIDIOC_SUBDEV_S_STD: u32 = 1074288152;
-pub const WDIOC_GETTIMELEFT: u32 = 2147768074;
-pub const ATM_GETLINKRATE: u32 = 1074815361;
-pub const RTC_WKALM_SET: u32 = 1076391951;
-pub const VHOST_GET_BACKEND_FEATURES: u32 = 2148052774;
-pub const ATMARP_ENCAP: u32 = 25061;
-pub const CAPI_GET_FLAGS: u32 = 2147762979;
-pub const IPMICTL_SET_MY_CHANNEL_ADDRESS_CMD: u32 = 2147772696;
-pub const DFL_FPGA_FME_PORT_ASSIGN: u32 = 1074050690;
-pub const NS_GET_OWNER_UID: u32 = 46852;
-pub const VIDIOC_OVERLAY: u32 = 1074025998;
-pub const BTRFS_IOC_WAIT_SYNC: u32 = 1074304022;
-pub const GPIOHANDLE_SET_CONFIG_IOCTL: u32 = 3226776586;
-pub const VHOST_GET_VRING_ENDIAN: u32 = 1074310932;
-pub const ATM_GETADDR: u32 = 1074815366;
-pub const PHN_GET_REGS: u32 = 3221778434;
-pub const AUTOFS_DEV_IOCTL_REQUESTER: u32 = 3222836091;
-pub const AUTOFS_DEV_IOCTL_EXPIRE: u32 = 3222836092;
-pub const SNAPSHOT_S2RAM: u32 = 13067;
-pub const JSIOCSAXMAP: u32 = 1077963313;
-pub const F2FS_IOC_SET_COMPRESS_OPTION: u32 = 1073935638;
-pub const VBG_IOCTL_HGCM_DISCONNECT: u32 = 3223082501;
-pub const SCIF_FENCE_SIGNAL: u32 = 3223876369;
-pub const VFIO_DEVICE_GET_PCI_HOT_RESET_INFO: u32 = 15216;
-pub const VIDIOC_SUBDEV_ENUM_MBUS_CODE: u32 = 3224393218;
-pub const MMTIMER_GETOFFSET: u32 = 27904;
-pub const RIO_CM_CHAN_LISTEN: u32 = 1073898246;
-pub const ATM_SETSC: u32 = 1074029041;
-pub const F2FS_IOC_SHUTDOWN: u32 = 2147768445;
-pub const NVME_IOCTL_RESCAN: u32 = 20038;
-pub const BLKOPENZONE: u32 = 1074795142;
-pub const DM_VERSION: u32 = 3241737472;
-pub const CEC_TRANSMIT: u32 = 3224920325;
-pub const FS_IOC_GET_ENCRYPTION_POLICY_EX: u32 = 3221841430;
-pub const SIOCMKCLIP: u32 = 25056;
-pub const IPMI_BMC_IOCTL_CLEAR_SMS_ATN: u32 = 45313;
-pub const HIDIOCGVERSION: u32 = 2147764225;
-pub const VIDIOC_S_INPUT: u32 = 3221509671;
-pub const VIDIOC_G_CROP: u32 = 3222558267;
-pub const LIRC_SET_WIDEBAND_RECEIVER: u32 = 1074030883;
-pub const EVIOCGEFFECTS: u32 = 2147763588;
-pub const UVCIOC_CTRL_QUERY: u32 = 3222304033;
-pub const IOC_OPAL_GENERIC_TABLE_RW: u32 = 1094217963;
-pub const FS_IOC_READ_VERITY_METADATA: u32 = 3223873159;
-pub const ND_IOCTL_SET_CONFIG_DATA: u32 = 3221769734;
-pub const USBDEVFS_GETDRIVER: u32 = 1090802952;
-pub const IDT77105_GETSTAT: u32 = 1074815282;
-pub const HIDIOCINITREPORT: u32 = 18437;
-pub const VFIO_DEVICE_GET_INFO: u32 = 15211;
-pub const RIO_CM_CHAN_RECEIVE: u32 = 3222299402;
-pub const RNDGETENTCNT: u32 = 2147766784;
-pub const PPPIOCNEWUNIT: u32 = 3221517374;
-pub const BTRFS_IOC_INO_LOOKUP: u32 = 3489698834;
-pub const FDRESET: u32 = 596;
-pub const IOC_PR_REGISTER: u32 = 1075343560;
-pub const HIDIOCSREPORT: u32 = 1074546696;
-pub const TEE_IOC_OPEN_SESSION: u32 = 2148574210;
-pub const TEE_IOC_SUPPL_RECV: u32 = 2148574214;
-pub const BTRFS_IOC_BALANCE_CTL: u32 = 1074041889;
-pub const GPIO_GET_LINEINFO_WATCH_IOCTL: u32 = 3225990155;
-pub const HIDIOCGRAWINFO: u32 = 2148026371;
-pub const PPPIOCSCOMPRESS: u32 = 1074820173;
-pub const USBDEVFS_CONNECTINFO: u32 = 1074287889;
-pub const BLKRESETZONE: u32 = 1074795139;
-pub const CHIOINITELEM: u32 = 25361;
-pub const NILFS_IOCTL_SET_ALLOC_RANGE: u32 = 1074818700;
-pub const AUTOFS_DEV_IOCTL_CATATONIC: u32 = 3222836089;
-pub const RIO_MPORT_MAINT_HDID_SET: u32 = 1073900801;
-pub const PPGETPHASE: u32 = 2147774617;
-pub const USBDEVFS_DISCONNECT_CLAIM: u32 = 2164806939;
-pub const FDMSGON: u32 = 581;
-pub const VIDIOC_G_SLICED_VBI_CAP: u32 = 3228849733;
-pub const BTRFS_IOC_BALANCE_V2: u32 = 3288372256;
-pub const MEDIA_REQUEST_IOC_REINIT: u32 = 31873;
-pub const IOC_OPAL_ERASE_LR: u32 = 1091596518;
-pub const FDFMTBEG: u32 = 583;
-pub const RNDRESEEDCRNG: u32 = 20999;
-pub const ISST_IF_GET_PHY_ID: u32 = 3221814785;
-pub const TUNSETNOCSUM: u32 = 1074025672;
-pub const SONET_GETSTAT: u32 = 2149867792;
-pub const TFD_IOC_SET_TICKS: u32 = 1074287616;
-pub const PPDATADIR: u32 = 1074032784;
-pub const IOC_OPAL_ENABLE_DISABLE_MBR: u32 = 1091596517;
-pub const GPIO_V2_GET_LINE_IOCTL: u32 = 3260068871;
-pub const RIO_CM_CHAN_SEND: u32 = 1074815753;
-pub const PPWCTLONIRQ: u32 = 1073836178;
-pub const SONYPI_IOCGBRT: u32 = 2147579392;
-pub const IOC_PR_RELEASE: u32 = 1074819274;
-pub const PPCLRIRQ: u32 = 2147774611;
-pub const IPMICTL_SET_MY_CHANNEL_LUN_CMD: u32 = 2147772698;
-pub const MGSL_IOCSXSYNC: u32 = 27923;
-pub const HPET_IE_OFF: u32 = 26626;
-pub const IOC_OPAL_ACTIVATE_USR: u32 = 1091596513;
-pub const SONET_SETFRAMING: u32 = 1074028821;
-pub const PERF_EVENT_IOC_PAUSE_OUTPUT: u32 = 1074013193;
-pub const BTRFS_IOC_LOGICAL_INO_V2: u32 = 3224933435;
-pub const VBG_IOCTL_HGCM_CONNECT: u32 = 3231471108;
-pub const BLKFINISHZONE: u32 = 1074795144;
-pub const EVIOCREVOKE: u32 = 1074021777;
-pub const VFIO_DEVICE_FEATURE: u32 = 15221;
-pub const CCISS_GETPCIINFO: u32 = 2148024833;
-pub const ISST_IF_MBOX_COMMAND: u32 = 3221814787;
-pub const SCIF_ACCEPTREQ: u32 = 3222303492;
-pub const PERF_EVENT_IOC_QUERY_BPF: u32 = 3221758986;
-pub const VIDIOC_STREAMOFF: u32 = 1074026003;
-pub const VDUSE_DESTROY_DEV: u32 = 1090552067;
-pub const FDGETFDCSTAT: u32 = 2150105621;
-pub const CM_IOCGATR: u32 = 3221775105;
-pub const VIDIOC_S_PRIORITY: u32 = 1074026052;
-pub const SNAPSHOT_FREEZE: u32 = 13057;
-pub const VIDIOC_ENUMINPUT: u32 = 3226490394;
-pub const ZATM_GETPOOLZ: u32 = 1074815330;
-pub const RIO_DISABLE_DOORBELL_RANGE: u32 = 1074294026;
-pub const GPIO_V2_GET_LINEINFO_WATCH_IOCTL: u32 = 3238048774;
-pub const VIDIOC_G_STD: u32 = 2148029975;
-pub const USBDEVFS_ALLOW_SUSPEND: u32 = 21794;
-pub const SONET_GETSTATZ: u32 = 2149867793;
-pub const SCIF_ACCEPTREG: u32 = 3221779205;
-pub const VIDIOC_ENCODER_CMD: u32 = 3223869005;
-pub const PPPIOCSRASYNCMAP: u32 = 1074033748;
-pub const IOCTL_MEI_NOTIFY_SET: u32 = 1074022402;
-pub const BTRFS_IOC_QUOTA_RESCAN_STATUS: u32 = 2151715885;
-pub const F2FS_IOC_GARBAGE_COLLECT: u32 = 1074066694;
-pub const ATMLEC_CTRL: u32 = 25040;
-pub const MATROXFB_GET_AVAILABLE_OUTPUTS: u32 = 2148036345;
-pub const DM_DEV_CREATE: u32 = 3241737475;
-pub const VHOST_VDPA_GET_VRING_NUM: u32 = 2147659638;
-pub const VIDIOC_G_CTRL: u32 = 3221771803;
-pub const NBD_CLEAR_SOCK: u32 = 43780;
-pub const VFIO_DEVICE_QUERY_GFX_PLANE: u32 = 15218;
-pub const WDIOC_KEEPALIVE: u32 = 2147768069;
-pub const NVME_IOCTL_SUBSYS_RESET: u32 = 20037;
-pub const PTP_EXTTS_REQUEST2: u32 = 1074806027;
-pub const PCITEST_BAR: u32 = 20481;
-pub const MGSL_IOCGGPIO: u32 = 2148560145;
-pub const EVIOCSREP: u32 = 1074283779;
-pub const VFIO_DEVICE_GET_IRQ_INFO: u32 = 15213;
-pub const HPET_DPI: u32 = 26629;
-pub const VDUSE_VQ_SETUP_KICKFD: u32 = 1074299158;
-pub const ND_IOCTL_CALL: u32 = 3225439754;
-pub const HIDIOCGDEVINFO: u32 = 2149337091;
-pub const DM_TABLE_DEPS: u32 = 3241737483;
-pub const BTRFS_IOC_DEV_INFO: u32 = 3489698846;
-pub const VDUSE_IOTLB_GET_FD: u32 = 3223355664;
-pub const FW_CDEV_IOC_GET_INFO: u32 = 3223855872;
-pub const VIDIOC_G_PRIORITY: u32 = 2147767875;
-pub const ATM_NEWBACKENDIF: u32 = 1073897971;
-pub const VIDIOC_S_EXT_CTRLS: u32 = 3223344712;
-pub const VIDIOC_SUBDEV_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const VIDIOC_OMAP3ISP_CCDC_CFG: u32 = 3224917697;
-pub const VIDIOC_S_HW_FREQ_SEEK: u32 = 1076909650;
-pub const DM_TABLE_LOAD: u32 = 3241737481;
-pub const F2FS_IOC_START_ATOMIC_WRITE: u32 = 62721;
-pub const VIDIOC_G_OUTPUT: u32 = 2147767854;
-pub const ATM_DROPPARTY: u32 = 1074029045;
-pub const CHIOGELEM: u32 = 1080845072;
-pub const BTRFS_IOC_GET_SUPPORTED_FEATURES: u32 = 2152240185;
-pub const EVIOCSKEYCODE: u32 = 1074283780;
-pub const NE_GET_IMAGE_LOAD_INFO: u32 = 3222318626;
-pub const TUNSETLINK: u32 = 1074025677;
-pub const FW_CDEV_IOC_ADD_DESCRIPTOR: u32 = 3222807302;
-pub const BTRFS_IOC_SCRUB_CANCEL: u32 = 37916;
-pub const PPS_SETPARAMS: u32 = 1074294946;
-pub const IOC_OPAL_LR_SETUP: u32 = 1093169379;
-pub const FW_CDEV_IOC_DEALLOCATE: u32 = 1074012931;
-pub const WDIOC_SETTIMEOUT: u32 = 3221509894;
-pub const IOC_WATCH_QUEUE_SET_FILTER: u32 = 22369;
-pub const CAPI_GET_MANUFACTURER: u32 = 3221504774;
-pub const VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY: u32 = 15222;
-pub const ASPEED_P2A_CTRL_IOCTL_SET_WINDOW: u32 = 1074836224;
-pub const VIDIOC_G_EDID: u32 = 3223868968;
-pub const F2FS_IOC_GARBAGE_COLLECT_RANGE: u32 = 1075377419;
-pub const RIO_MAP_INBOUND: u32 = 3223874833;
-pub const IOC_OPAL_TAKE_OWNERSHIP: u32 = 1091072222;
-pub const USBDEVFS_CLAIM_PORT: u32 = 2147767576;
-pub const VIDIOC_S_AUDIO: u32 = 1077171746;
-pub const FS_IOC_GET_ENCRYPTION_NONCE: u32 = 2148558363;
-pub const FW_CDEV_IOC_SEND_STREAM_PACKET: u32 = 1076372243;
-pub const BTRFS_IOC_SNAP_DESTROY: u32 = 1342215183;
-pub const SNAPSHOT_FREE: u32 = 13061;
-pub const I8K_GET_SPEED: u32 = 3221776773;
-pub const HIDIOCGREPORT: u32 = 1074546695;
-pub const HPET_EPI: u32 = 26628;
-pub const JSIOCSCORR: u32 = 1076128289;
-pub const IOC_PR_PREEMPT_ABORT: u32 = 1075343564;
-pub const RIO_MAP_OUTBOUND: u32 = 3223874831;
-pub const ATM_SETESI: u32 = 1074815372;
-pub const FW_CDEV_IOC_START_ISO: u32 = 1074799370;
-pub const ATM_DELADDR: u32 = 1074815369;
-pub const PPFCONTROL: u32 = 1073901710;
-pub const SONYPI_IOCGFAN: u32 = 2147579402;
-pub const RTC_IRQP_SET: u32 = 1074294796;
-pub const PCITEST_WRITE: u32 = 1074286596;
-pub const PPCLAIM: u32 = 28811;
-pub const VIDIOC_S_JPEGCOMP: u32 = 1082938942;
-pub const IPMICTL_UNREGISTER_FOR_CMD: u32 = 2147641615;
-pub const VHOST_SET_FEATURES: u32 = 1074310912;
-pub const TOSHIBA_ACPI_SCI: u32 = 3222828177;
-pub const VIDIOC_DQBUF: u32 = 3227014673;
-pub const BTRFS_IOC_BALANCE_PROGRESS: u32 = 2214630434;
-pub const BTRFS_IOC_SUBVOL_SETFLAGS: u32 = 1074304026;
-pub const ATMLEC_MCAST: u32 = 25042;
-pub const MMTIMER_GETFREQ: u32 = 2148035842;
-pub const VIDIOC_G_SELECTION: u32 = 3225441886;
-pub const RTC_ALM_SET: u32 = 1076129799;
-pub const PPPOEIOCSFWD: u32 = 1074311424;
-pub const IPMICTL_GET_MAINTENANCE_MODE_CMD: u32 = 2147772702;
-pub const FS_IOC_ENABLE_VERITY: u32 = 1082156677;
-pub const NILFS_IOCTL_GET_BDESCS: u32 = 3222826631;
-pub const FDFMTEND: u32 = 585;
-pub const DMA_BUF_SET_NAME: u32 = 1074291201;
-pub const UI_BEGIN_FF_UPLOAD: u32 = 3228063176;
-pub const RTC_UIE_ON: u32 = 28675;
-pub const PPRELEASE: u32 = 28812;
-pub const VFIO_IOMMU_UNMAP_DMA: u32 = 15218;
-pub const VIDIOC_OMAP3ISP_PRV_CFG: u32 = 3228587714;
-pub const GPIO_GET_LINEHANDLE_IOCTL: u32 = 3245126659;
-pub const VFAT_IOCTL_READDIR_BOTH: u32 = 2184212993;
-pub const NVME_IOCTL_ADMIN_CMD: u32 = 3225964097;
-pub const VHOST_SET_VRING_KICK: u32 = 1074310944;
-pub const BTRFS_IOC_SUBVOL_CREATE_V2: u32 = 1342215192;
-pub const BTRFS_IOC_SNAP_CREATE: u32 = 1342215169;
-pub const SONYPI_IOCGBAT2CAP: u32 = 2147644932;
-pub const PPNEGOT: u32 = 1074032785;
-pub const NBD_PRINT_DEBUG: u32 = 43782;
-pub const BTRFS_IOC_INO_LOOKUP_USER: u32 = 3489698878;
-pub const BTRFS_IOC_GET_SUBVOL_ROOTREF: u32 = 3489698877;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS: u32 = 3225445913;
-pub const BTRFS_IOC_FS_INFO: u32 = 2214630431;
-pub const VIDIOC_ENUM_FMT: u32 = 3225441794;
-pub const VIDIOC_G_INPUT: u32 = 2147767846;
-pub const VTPM_PROXY_IOC_NEW_DEV: u32 = 3222577408;
-pub const DFL_FPGA_FME_ERR_GET_IRQ_NUM: u32 = 2147792515;
-pub const ND_IOCTL_DIMM_FLAGS: u32 = 3221769731;
-pub const BTRFS_IOC_QUOTA_RESCAN: u32 = 1077974060;
-pub const MMTIMER_GETCOUNTER: u32 = 2148035849;
-pub const MATROXFB_GET_OUTPUT_MODE: u32 = 3221778170;
-pub const BTRFS_IOC_QUOTA_RESCAN_WAIT: u32 = 37934;
-pub const RIO_CM_CHAN_BIND: u32 = 1074291461;
-pub const HIDIOCGRDESC: u32 = 2416199682;
-pub const MGSL_IOCGIF: u32 = 27915;
-pub const VIDIOC_S_OUTPUT: u32 = 3221509679;
-pub const HIDIOCGREPORTINFO: u32 = 3222030345;
-pub const WDIOC_GETBOOTSTATUS: u32 = 2147768066;
-pub const VDUSE_VQ_GET_INFO: u32 = 3224404245;
-pub const ACRN_IOCTL_ASSIGN_PCIDEV: u32 = 1076142677;
-pub const BLKGETDISKSEQ: u32 = 2148012672;
-pub const ACRN_IOCTL_PM_GET_CPU_STATE: u32 = 3221791328;
-pub const ACRN_IOCTL_DESTROY_VM: u32 = 41489;
-pub const ACRN_IOCTL_SET_PTDEV_INTR: u32 = 1075094099;
-pub const ACRN_IOCTL_CREATE_IOREQ_CLIENT: u32 = 41522;
-pub const ACRN_IOCTL_IRQFD: u32 = 1075356273;
-pub const ACRN_IOCTL_CREATE_VM: u32 = 3224412688;
-pub const ACRN_IOCTL_INJECT_MSI: u32 = 1074831907;
-pub const ACRN_IOCTL_ATTACH_IOREQ_CLIENT: u32 = 41523;
-pub const ACRN_IOCTL_RESET_PTDEV_INTR: u32 = 1075094100;
-pub const ACRN_IOCTL_NOTIFY_REQUEST_FINISH: u32 = 1074307633;
-pub const ACRN_IOCTL_SET_IRQLINE: u32 = 1074307621;
-pub const ACRN_IOCTL_START_VM: u32 = 41490;
-pub const ACRN_IOCTL_SET_VCPU_REGS: u32 = 1093181974;
-pub const ACRN_IOCTL_SET_MEMSEG: u32 = 1075880513;
-pub const ACRN_IOCTL_PAUSE_VM: u32 = 41491;
-pub const ACRN_IOCTL_CLEAR_VM_IOREQ: u32 = 41525;
-pub const ACRN_IOCTL_UNSET_MEMSEG: u32 = 1075880514;
-pub const ACRN_IOCTL_IOEVENTFD: u32 = 1075880560;
-pub const ACRN_IOCTL_DEASSIGN_PCIDEV: u32 = 1076142678;
-pub const ACRN_IOCTL_RESET_VM: u32 = 41493;
-pub const ACRN_IOCTL_DESTROY_IOREQ_CLIENT: u32 = 41524;
-pub const ACRN_IOCTL_VM_INTR_MONITOR: u32 = 1074307620;
diff --git a/vendor/linux-raw-sys-0.3.2/src/riscv64/netlink.rs b/vendor/linux-raw-sys-0.3.2/src/riscv64/netlink.rs
deleted file mode 100644
index 8069c2f5c..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/riscv64/netlink.rs
+++ /dev/null
@@ -1,2860 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const NETLINK_ROUTE: u32 = 0;
-pub const NETLINK_UNUSED: u32 = 1;
-pub const NETLINK_USERSOCK: u32 = 2;
-pub const NETLINK_FIREWALL: u32 = 3;
-pub const NETLINK_SOCK_DIAG: u32 = 4;
-pub const NETLINK_NFLOG: u32 = 5;
-pub const NETLINK_XFRM: u32 = 6;
-pub const NETLINK_SELINUX: u32 = 7;
-pub const NETLINK_ISCSI: u32 = 8;
-pub const NETLINK_AUDIT: u32 = 9;
-pub const NETLINK_FIB_LOOKUP: u32 = 10;
-pub const NETLINK_CONNECTOR: u32 = 11;
-pub const NETLINK_NETFILTER: u32 = 12;
-pub const NETLINK_IP6_FW: u32 = 13;
-pub const NETLINK_DNRTMSG: u32 = 14;
-pub const NETLINK_KOBJECT_UEVENT: u32 = 15;
-pub const NETLINK_GENERIC: u32 = 16;
-pub const NETLINK_SCSITRANSPORT: u32 = 18;
-pub const NETLINK_ECRYPTFS: u32 = 19;
-pub const NETLINK_RDMA: u32 = 20;
-pub const NETLINK_CRYPTO: u32 = 21;
-pub const NETLINK_SMC: u32 = 22;
-pub const NETLINK_INET_DIAG: u32 = 4;
-pub const MAX_LINKS: u32 = 32;
-pub const NLM_F_REQUEST: u32 = 1;
-pub const NLM_F_MULTI: u32 = 2;
-pub const NLM_F_ACK: u32 = 4;
-pub const NLM_F_ECHO: u32 = 8;
-pub const NLM_F_DUMP_INTR: u32 = 16;
-pub const NLM_F_DUMP_FILTERED: u32 = 32;
-pub const NLM_F_ROOT: u32 = 256;
-pub const NLM_F_MATCH: u32 = 512;
-pub const NLM_F_ATOMIC: u32 = 1024;
-pub const NLM_F_DUMP: u32 = 768;
-pub const NLM_F_REPLACE: u32 = 256;
-pub const NLM_F_EXCL: u32 = 512;
-pub const NLM_F_CREATE: u32 = 1024;
-pub const NLM_F_APPEND: u32 = 2048;
-pub const NLM_F_NONREC: u32 = 256;
-pub const NLM_F_BULK: u32 = 512;
-pub const NLM_F_CAPPED: u32 = 256;
-pub const NLM_F_ACK_TLVS: u32 = 512;
-pub const NLMSG_ALIGNTO: u32 = 4;
-pub const NLMSG_NOOP: u32 = 1;
-pub const NLMSG_ERROR: u32 = 2;
-pub const NLMSG_DONE: u32 = 3;
-pub const NLMSG_OVERRUN: u32 = 4;
-pub const NLMSG_MIN_TYPE: u32 = 16;
-pub const NETLINK_ADD_MEMBERSHIP: u32 = 1;
-pub const NETLINK_DROP_MEMBERSHIP: u32 = 2;
-pub const NETLINK_PKTINFO: u32 = 3;
-pub const NETLINK_BROADCAST_ERROR: u32 = 4;
-pub const NETLINK_NO_ENOBUFS: u32 = 5;
-pub const NETLINK_RX_RING: u32 = 6;
-pub const NETLINK_TX_RING: u32 = 7;
-pub const NETLINK_LISTEN_ALL_NSID: u32 = 8;
-pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9;
-pub const NETLINK_CAP_ACK: u32 = 10;
-pub const NETLINK_EXT_ACK: u32 = 11;
-pub const NETLINK_GET_STRICT_CHK: u32 = 12;
-pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4;
-pub const NET_MAJOR: u32 = 36;
-pub const NLA_F_NESTED: u32 = 32768;
-pub const NLA_F_NET_BYTEORDER: u32 = 16384;
-pub const NLA_TYPE_MASK: i32 = -49153;
-pub const NLA_ALIGNTO: u32 = 4;
-pub const MACVLAN_FLAG_NOPROMISC: u32 = 1;
-pub const MACVLAN_FLAG_NODST: u32 = 2;
-pub const IPVLAN_F_PRIVATE: u32 = 1;
-pub const IPVLAN_F_VEPA: u32 = 2;
-pub const TUNNEL_MSG_FLAG_STATS: u32 = 1;
-pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1;
-pub const MAX_VLAN_LIST_LEN: u32 = 1;
-pub const PORT_PROFILE_MAX: u32 = 40;
-pub const PORT_UUID_MAX: u32 = 16;
-pub const PORT_SELF_VF: i32 = -1;
-pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1;
-pub const XDP_FLAGS_SKB_MODE: u32 = 2;
-pub const XDP_FLAGS_DRV_MODE: u32 = 4;
-pub const XDP_FLAGS_HW_MODE: u32 = 8;
-pub const XDP_FLAGS_REPLACE: u32 = 16;
-pub const XDP_FLAGS_MODES: u32 = 14;
-pub const XDP_FLAGS_MASK: u32 = 31;
-pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1;
-pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32;
-pub const IFA_F_SECONDARY: u32 = 1;
-pub const IFA_F_TEMPORARY: u32 = 1;
-pub const IFA_F_NODAD: u32 = 2;
-pub const IFA_F_OPTIMISTIC: u32 = 4;
-pub const IFA_F_DADFAILED: u32 = 8;
-pub const IFA_F_HOMEADDRESS: u32 = 16;
-pub const IFA_F_DEPRECATED: u32 = 32;
-pub const IFA_F_TENTATIVE: u32 = 64;
-pub const IFA_F_PERMANENT: u32 = 128;
-pub const IFA_F_MANAGETEMPADDR: u32 = 256;
-pub const IFA_F_NOPREFIXROUTE: u32 = 512;
-pub const IFA_F_MCAUTOJOIN: u32 = 1024;
-pub const IFA_F_STABLE_PRIVACY: u32 = 2048;
-pub const IFAPROT_UNSPEC: u32 = 0;
-pub const IFAPROT_KERNEL_LO: u32 = 1;
-pub const IFAPROT_KERNEL_RA: u32 = 2;
-pub const IFAPROT_KERNEL_LL: u32 = 3;
-pub const NTF_USE: u32 = 1;
-pub const NTF_SELF: u32 = 2;
-pub const NTF_MASTER: u32 = 4;
-pub const NTF_PROXY: u32 = 8;
-pub const NTF_EXT_LEARNED: u32 = 16;
-pub const NTF_OFFLOADED: u32 = 32;
-pub const NTF_STICKY: u32 = 64;
-pub const NTF_ROUTER: u32 = 128;
-pub const NTF_EXT_MANAGED: u32 = 1;
-pub const NTF_EXT_LOCKED: u32 = 2;
-pub const NUD_INCOMPLETE: u32 = 1;
-pub const NUD_REACHABLE: u32 = 2;
-pub const NUD_STALE: u32 = 4;
-pub const NUD_DELAY: u32 = 8;
-pub const NUD_PROBE: u32 = 16;
-pub const NUD_FAILED: u32 = 32;
-pub const NUD_NOARP: u32 = 64;
-pub const NUD_PERMANENT: u32 = 128;
-pub const NUD_NONE: u32 = 0;
-pub const RTNL_FAMILY_IPMR: u32 = 128;
-pub const RTNL_FAMILY_IP6MR: u32 = 129;
-pub const RTNL_FAMILY_MAX: u32 = 129;
-pub const RTA_ALIGNTO: u32 = 4;
-pub const RTPROT_UNSPEC: u32 = 0;
-pub const RTPROT_REDIRECT: u32 = 1;
-pub const RTPROT_KERNEL: u32 = 2;
-pub const RTPROT_BOOT: u32 = 3;
-pub const RTPROT_STATIC: u32 = 4;
-pub const RTPROT_GATED: u32 = 8;
-pub const RTPROT_RA: u32 = 9;
-pub const RTPROT_MRT: u32 = 10;
-pub const RTPROT_ZEBRA: u32 = 11;
-pub const RTPROT_BIRD: u32 = 12;
-pub const RTPROT_DNROUTED: u32 = 13;
-pub const RTPROT_XORP: u32 = 14;
-pub const RTPROT_NTK: u32 = 15;
-pub const RTPROT_DHCP: u32 = 16;
-pub const RTPROT_MROUTED: u32 = 17;
-pub const RTPROT_KEEPALIVED: u32 = 18;
-pub const RTPROT_BABEL: u32 = 42;
-pub const RTPROT_OPENR: u32 = 99;
-pub const RTPROT_BGP: u32 = 186;
-pub const RTPROT_ISIS: u32 = 187;
-pub const RTPROT_OSPF: u32 = 188;
-pub const RTPROT_RIP: u32 = 189;
-pub const RTPROT_EIGRP: u32 = 192;
-pub const RTM_F_NOTIFY: u32 = 256;
-pub const RTM_F_CLONED: u32 = 512;
-pub const RTM_F_EQUALIZE: u32 = 1024;
-pub const RTM_F_PREFIX: u32 = 2048;
-pub const RTM_F_LOOKUP_TABLE: u32 = 4096;
-pub const RTM_F_FIB_MATCH: u32 = 8192;
-pub const RTM_F_OFFLOAD: u32 = 16384;
-pub const RTM_F_TRAP: u32 = 32768;
-pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912;
-pub const RTNH_F_DEAD: u32 = 1;
-pub const RTNH_F_PERVASIVE: u32 = 2;
-pub const RTNH_F_ONLINK: u32 = 4;
-pub const RTNH_F_OFFLOAD: u32 = 8;
-pub const RTNH_F_LINKDOWN: u32 = 16;
-pub const RTNH_F_UNRESOLVED: u32 = 32;
-pub const RTNH_F_TRAP: u32 = 64;
-pub const RTNH_COMPARE_MASK: u32 = 89;
-pub const RTNH_ALIGNTO: u32 = 4;
-pub const RTNETLINK_HAVE_PEERINFO: u32 = 1;
-pub const RTAX_FEATURE_ECN: u32 = 1;
-pub const RTAX_FEATURE_SACK: u32 = 2;
-pub const RTAX_FEATURE_TIMESTAMP: u32 = 4;
-pub const RTAX_FEATURE_ALLFRAG: u32 = 8;
-pub const RTAX_FEATURE_MASK: u32 = 15;
-pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295;
-pub const TCA_DUMP_FLAGS_TERSE: u32 = 1;
-pub const RTMGRP_LINK: u32 = 1;
-pub const RTMGRP_NOTIFY: u32 = 2;
-pub const RTMGRP_NEIGH: u32 = 4;
-pub const RTMGRP_TC: u32 = 8;
-pub const RTMGRP_IPV4_IFADDR: u32 = 16;
-pub const RTMGRP_IPV4_MROUTE: u32 = 32;
-pub const RTMGRP_IPV4_ROUTE: u32 = 64;
-pub const RTMGRP_IPV4_RULE: u32 = 128;
-pub const RTMGRP_IPV6_IFADDR: u32 = 256;
-pub const RTMGRP_IPV6_MROUTE: u32 = 512;
-pub const RTMGRP_IPV6_ROUTE: u32 = 1024;
-pub const RTMGRP_IPV6_IFINFO: u32 = 2048;
-pub const RTMGRP_DECnet_IFADDR: u32 = 4096;
-pub const RTMGRP_DECnet_ROUTE: u32 = 16384;
-pub const RTMGRP_IPV6_PREFIX: u32 = 131072;
-pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2;
-pub const RTEXT_FILTER_VF: u32 = 1;
-pub const RTEXT_FILTER_BRVLAN: u32 = 2;
-pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4;
-pub const RTEXT_FILTER_SKIP_STATS: u32 = 8;
-pub const RTEXT_FILTER_MRP: u32 = 16;
-pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32;
-pub const RTEXT_FILTER_CFM_STATUS: u32 = 64;
-pub const RTEXT_FILTER_MST: u32 = 128;
-pub type size_t = crate::ctypes::c_ulong;
-pub type ssize_t = crate::ctypes::c_long;
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 16usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_uid_t = __kernel_uid_t;
-pub type __kernel_old_gid_t = __kernel_gid_t;
-pub type __kernel_old_dev_t = crate::ctypes::c_uint;
-pub type __kernel_size_t = __kernel_ulong_t;
-pub type __kernel_ssize_t = __kernel_long_t;
-pub type __kernel_ptrdiff_t = __kernel_long_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_nl {
-pub nl_family: __kernel_sa_family_t,
-pub nl_pad: crate::ctypes::c_ushort,
-pub nl_pid: __u32,
-pub nl_groups: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsghdr {
-pub nlmsg_len: __u32,
-pub nlmsg_type: __u16,
-pub nlmsg_flags: __u16,
-pub nlmsg_seq: __u32,
-pub nlmsg_pid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsgerr {
-pub error: crate::ctypes::c_int,
-pub msg: nlmsghdr,
-}
-impl nlmsgerr_attrs {
-pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nlmsgerr_attrs {
-NLMSGERR_ATTR_UNUSED = 0,
-NLMSGERR_ATTR_MSG = 1,
-NLMSGERR_ATTR_OFFS = 2,
-NLMSGERR_ATTR_COOKIE = 3,
-NLMSGERR_ATTR_POLICY = 4,
-NLMSGERR_ATTR_MISS_TYPE = 5,
-NLMSGERR_ATTR_MISS_NEST = 6,
-__NLMSGERR_ATTR_MAX = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_pktinfo {
-pub group: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_req {
-pub nm_block_size: crate::ctypes::c_uint,
-pub nm_block_nr: crate::ctypes::c_uint,
-pub nm_frame_size: crate::ctypes::c_uint,
-pub nm_frame_nr: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_hdr {
-pub nm_status: crate::ctypes::c_uint,
-pub nm_len: crate::ctypes::c_uint,
-pub nm_group: __u32,
-pub nm_pid: __u32,
-pub nm_uid: __u32,
-pub nm_gid: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nl_mmap_status {
-NL_MMAP_STATUS_UNUSED = 0,
-NL_MMAP_STATUS_RESERVED = 1,
-NL_MMAP_STATUS_VALID = 2,
-NL_MMAP_STATUS_COPY = 3,
-NL_MMAP_STATUS_SKIP = 4,
-}
-pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED;
-pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-NETLINK_UNCONNECTED = 0,
-NETLINK_CONNECTED = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlattr {
-pub nla_len: __u16,
-pub nla_type: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nla_bitfield32 {
-pub value: __u32,
-pub selector: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_attribute_type {
-NL_ATTR_TYPE_INVALID = 0,
-NL_ATTR_TYPE_FLAG = 1,
-NL_ATTR_TYPE_U8 = 2,
-NL_ATTR_TYPE_U16 = 3,
-NL_ATTR_TYPE_U32 = 4,
-NL_ATTR_TYPE_U64 = 5,
-NL_ATTR_TYPE_S8 = 6,
-NL_ATTR_TYPE_S16 = 7,
-NL_ATTR_TYPE_S32 = 8,
-NL_ATTR_TYPE_S64 = 9,
-NL_ATTR_TYPE_BINARY = 10,
-NL_ATTR_TYPE_STRING = 11,
-NL_ATTR_TYPE_NUL_STRING = 12,
-NL_ATTR_TYPE_NESTED = 13,
-NL_ATTR_TYPE_NESTED_ARRAY = 14,
-NL_ATTR_TYPE_BITFIELD32 = 15,
-}
-impl netlink_policy_type_attr {
-pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_policy_type_attr {
-NL_POLICY_TYPE_ATTR_UNSPEC = 0,
-NL_POLICY_TYPE_ATTR_TYPE = 1,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5,
-NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6,
-NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7,
-NL_POLICY_TYPE_ATTR_POLICY_IDX = 8,
-NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9,
-NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10,
-NL_POLICY_TYPE_ATTR_PAD = 11,
-NL_POLICY_TYPE_ATTR_MASK = 12,
-__NL_POLICY_TYPE_ATTR_MAX = 13,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats {
-pub rx_packets: __u32,
-pub tx_packets: __u32,
-pub rx_bytes: __u32,
-pub tx_bytes: __u32,
-pub rx_errors: __u32,
-pub tx_errors: __u32,
-pub rx_dropped: __u32,
-pub tx_dropped: __u32,
-pub multicast: __u32,
-pub collisions: __u32,
-pub rx_length_errors: __u32,
-pub rx_over_errors: __u32,
-pub rx_crc_errors: __u32,
-pub rx_frame_errors: __u32,
-pub rx_fifo_errors: __u32,
-pub rx_missed_errors: __u32,
-pub tx_aborted_errors: __u32,
-pub tx_carrier_errors: __u32,
-pub tx_fifo_errors: __u32,
-pub tx_heartbeat_errors: __u32,
-pub tx_window_errors: __u32,
-pub rx_compressed: __u32,
-pub tx_compressed: __u32,
-pub rx_nohandler: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-pub collisions: __u64,
-pub rx_length_errors: __u64,
-pub rx_over_errors: __u64,
-pub rx_crc_errors: __u64,
-pub rx_frame_errors: __u64,
-pub rx_fifo_errors: __u64,
-pub rx_missed_errors: __u64,
-pub tx_aborted_errors: __u64,
-pub tx_carrier_errors: __u64,
-pub tx_fifo_errors: __u64,
-pub tx_heartbeat_errors: __u64,
-pub tx_window_errors: __u64,
-pub rx_compressed: __u64,
-pub tx_compressed: __u64,
-pub rx_nohandler: __u64,
-pub rx_otherhost_dropped: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_hw_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_ifmap {
-pub mem_start: __u64,
-pub mem_end: __u64,
-pub base_addr: __u64,
-pub irq: __u16,
-pub dma: __u8,
-pub port: __u8,
-}
-pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC;
-pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS;
-pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST;
-pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME;
-pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU;
-pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK;
-pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC;
-pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS;
-pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST;
-pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY;
-pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER;
-pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS;
-pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO;
-pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN;
-pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP;
-pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT;
-pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE;
-pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE;
-pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO;
-pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID;
-pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS;
-pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF;
-pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST;
-pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64;
-pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS;
-pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF;
-pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC;
-pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP;
-pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD;
-pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK;
-pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY;
-pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES;
-pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES;
-pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER;
-pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID;
-pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES;
-pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID;
-pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID;
-pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME;
-pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN;
-pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS;
-pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE;
-pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD;
-pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP;
-pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT;
-pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID;
-pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT;
-pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT;
-pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX;
-pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU;
-pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU;
-pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST;
-pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME;
-pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS;
-pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON;
-pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME;
-pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME;
-pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS;
-pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI;
-pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT;
-pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IFLA_UNSPEC = 0,
-IFLA_ADDRESS = 1,
-IFLA_BROADCAST = 2,
-IFLA_IFNAME = 3,
-IFLA_MTU = 4,
-IFLA_LINK = 5,
-IFLA_QDISC = 6,
-IFLA_STATS = 7,
-IFLA_COST = 8,
-IFLA_PRIORITY = 9,
-IFLA_MASTER = 10,
-IFLA_WIRELESS = 11,
-IFLA_PROTINFO = 12,
-IFLA_TXQLEN = 13,
-IFLA_MAP = 14,
-IFLA_WEIGHT = 15,
-IFLA_OPERSTATE = 16,
-IFLA_LINKMODE = 17,
-IFLA_LINKINFO = 18,
-IFLA_NET_NS_PID = 19,
-IFLA_IFALIAS = 20,
-IFLA_NUM_VF = 21,
-IFLA_VFINFO_LIST = 22,
-IFLA_STATS64 = 23,
-IFLA_VF_PORTS = 24,
-IFLA_PORT_SELF = 25,
-IFLA_AF_SPEC = 26,
-IFLA_GROUP = 27,
-IFLA_NET_NS_FD = 28,
-IFLA_EXT_MASK = 29,
-IFLA_PROMISCUITY = 30,
-IFLA_NUM_TX_QUEUES = 31,
-IFLA_NUM_RX_QUEUES = 32,
-IFLA_CARRIER = 33,
-IFLA_PHYS_PORT_ID = 34,
-IFLA_CARRIER_CHANGES = 35,
-IFLA_PHYS_SWITCH_ID = 36,
-IFLA_LINK_NETNSID = 37,
-IFLA_PHYS_PORT_NAME = 38,
-IFLA_PROTO_DOWN = 39,
-IFLA_GSO_MAX_SEGS = 40,
-IFLA_GSO_MAX_SIZE = 41,
-IFLA_PAD = 42,
-IFLA_XDP = 43,
-IFLA_EVENT = 44,
-IFLA_NEW_NETNSID = 45,
-IFLA_IF_NETNSID = 46,
-IFLA_CARRIER_UP_COUNT = 47,
-IFLA_CARRIER_DOWN_COUNT = 48,
-IFLA_NEW_IFINDEX = 49,
-IFLA_MIN_MTU = 50,
-IFLA_MAX_MTU = 51,
-IFLA_PROP_LIST = 52,
-IFLA_ALT_IFNAME = 53,
-IFLA_PERM_ADDRESS = 54,
-IFLA_PROTO_DOWN_REASON = 55,
-IFLA_PARENT_DEV_NAME = 56,
-IFLA_PARENT_DEV_BUS_NAME = 57,
-IFLA_GRO_MAX_SIZE = 58,
-IFLA_TSO_MAX_SIZE = 59,
-IFLA_TSO_MAX_SEGS = 60,
-IFLA_ALLMULTI = 61,
-IFLA_DEVLINK_PORT = 62,
-__IFLA_MAX = 63,
-}
-pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC;
-pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK;
-pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT;
-pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-IFLA_PROTO_DOWN_REASON_UNSPEC = 0,
-IFLA_PROTO_DOWN_REASON_MASK = 1,
-IFLA_PROTO_DOWN_REASON_VALUE = 2,
-__IFLA_PROTO_DOWN_REASON_CNT = 3,
-}
-pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC;
-pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF;
-pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-IFLA_INET_UNSPEC = 0,
-IFLA_INET_CONF = 1,
-__IFLA_INET_MAX = 2,
-}
-pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC;
-pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS;
-pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF;
-pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS;
-pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST;
-pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO;
-pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS;
-pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN;
-pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE;
-pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU;
-pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-IFLA_INET6_UNSPEC = 0,
-IFLA_INET6_FLAGS = 1,
-IFLA_INET6_CONF = 2,
-IFLA_INET6_STATS = 3,
-IFLA_INET6_MCAST = 4,
-IFLA_INET6_CACHEINFO = 5,
-IFLA_INET6_ICMP6STATS = 6,
-IFLA_INET6_TOKEN = 7,
-IFLA_INET6_ADDR_GEN_MODE = 8,
-IFLA_INET6_RA_MTU = 9,
-__IFLA_INET6_MAX = 10,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum in6_addr_gen_mode {
-IN6_ADDR_GEN_MODE_EUI64 = 0,
-IN6_ADDR_GEN_MODE_NONE = 1,
-IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2,
-IN6_ADDR_GEN_MODE_RANDOM = 3,
-}
-pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC;
-pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY;
-pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME;
-pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE;
-pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME;
-pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE;
-pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY;
-pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING;
-pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL;
-pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK;
-pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID;
-pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID;
-pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT;
-pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST;
-pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE;
-pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED;
-pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER;
-pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER;
-pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER;
-pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER;
-pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR;
-pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH;
-pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER;
-pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING;
-pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR;
-pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER;
-pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY;
-pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX;
-pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT;
-pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL;
-pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL;
-pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL;
-pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL;
-pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL;
-pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES;
-pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES;
-pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES;
-pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID;
-pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD;
-pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED;
-pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED;
-pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION;
-pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION;
-pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT;
-pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT;
-pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE;
-pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-IFLA_BR_UNSPEC = 0,
-IFLA_BR_FORWARD_DELAY = 1,
-IFLA_BR_HELLO_TIME = 2,
-IFLA_BR_MAX_AGE = 3,
-IFLA_BR_AGEING_TIME = 4,
-IFLA_BR_STP_STATE = 5,
-IFLA_BR_PRIORITY = 6,
-IFLA_BR_VLAN_FILTERING = 7,
-IFLA_BR_VLAN_PROTOCOL = 8,
-IFLA_BR_GROUP_FWD_MASK = 9,
-IFLA_BR_ROOT_ID = 10,
-IFLA_BR_BRIDGE_ID = 11,
-IFLA_BR_ROOT_PORT = 12,
-IFLA_BR_ROOT_PATH_COST = 13,
-IFLA_BR_TOPOLOGY_CHANGE = 14,
-IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 15,
-IFLA_BR_HELLO_TIMER = 16,
-IFLA_BR_TCN_TIMER = 17,
-IFLA_BR_TOPOLOGY_CHANGE_TIMER = 18,
-IFLA_BR_GC_TIMER = 19,
-IFLA_BR_GROUP_ADDR = 20,
-IFLA_BR_FDB_FLUSH = 21,
-IFLA_BR_MCAST_ROUTER = 22,
-IFLA_BR_MCAST_SNOOPING = 23,
-IFLA_BR_MCAST_QUERY_USE_IFADDR = 24,
-IFLA_BR_MCAST_QUERIER = 25,
-IFLA_BR_MCAST_HASH_ELASTICITY = 26,
-IFLA_BR_MCAST_HASH_MAX = 27,
-IFLA_BR_MCAST_LAST_MEMBER_CNT = 28,
-IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29,
-IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30,
-IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31,
-IFLA_BR_MCAST_QUERIER_INTVL = 32,
-IFLA_BR_MCAST_QUERY_INTVL = 33,
-IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34,
-IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35,
-IFLA_BR_NF_CALL_IPTABLES = 36,
-IFLA_BR_NF_CALL_IP6TABLES = 37,
-IFLA_BR_NF_CALL_ARPTABLES = 38,
-IFLA_BR_VLAN_DEFAULT_PVID = 39,
-IFLA_BR_PAD = 40,
-IFLA_BR_VLAN_STATS_ENABLED = 41,
-IFLA_BR_MCAST_STATS_ENABLED = 42,
-IFLA_BR_MCAST_IGMP_VERSION = 43,
-IFLA_BR_MCAST_MLD_VERSION = 44,
-IFLA_BR_VLAN_STATS_PER_PORT = 45,
-IFLA_BR_MULTI_BOOLOPT = 46,
-IFLA_BR_MCAST_QUERIER_STATE = 47,
-__IFLA_BR_MAX = 48,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_bridge_id {
-pub prio: [__u8; 2usize],
-pub addr: [__u8; 6usize],
-}
-pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC;
-pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-BRIDGE_MODE_UNSPEC = 0,
-BRIDGE_MODE_HAIRPIN = 1,
-}
-pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC;
-pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE;
-pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY;
-pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST;
-pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE;
-pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD;
-pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT;
-pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE;
-pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING;
-pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD;
-pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP;
-pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC;
-pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI;
-pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID;
-pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID;
-pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT;
-pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST;
-pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID;
-pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO;
-pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK;
-pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING;
-pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER;
-pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER;
-pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER;
-pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH;
-pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER;
-pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD;
-pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD;
-pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST;
-pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL;
-pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD;
-pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK;
-pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS;
-pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED;
-pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT;
-pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN;
-pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT;
-pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED;
-pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB;
-pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IFLA_BRPORT_UNSPEC = 0,
-IFLA_BRPORT_STATE = 1,
-IFLA_BRPORT_PRIORITY = 2,
-IFLA_BRPORT_COST = 3,
-IFLA_BRPORT_MODE = 4,
-IFLA_BRPORT_GUARD = 5,
-IFLA_BRPORT_PROTECT = 6,
-IFLA_BRPORT_FAST_LEAVE = 7,
-IFLA_BRPORT_LEARNING = 8,
-IFLA_BRPORT_UNICAST_FLOOD = 9,
-IFLA_BRPORT_PROXYARP = 10,
-IFLA_BRPORT_LEARNING_SYNC = 11,
-IFLA_BRPORT_PROXYARP_WIFI = 12,
-IFLA_BRPORT_ROOT_ID = 13,
-IFLA_BRPORT_BRIDGE_ID = 14,
-IFLA_BRPORT_DESIGNATED_PORT = 15,
-IFLA_BRPORT_DESIGNATED_COST = 16,
-IFLA_BRPORT_ID = 17,
-IFLA_BRPORT_NO = 18,
-IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 19,
-IFLA_BRPORT_CONFIG_PENDING = 20,
-IFLA_BRPORT_MESSAGE_AGE_TIMER = 21,
-IFLA_BRPORT_FORWARD_DELAY_TIMER = 22,
-IFLA_BRPORT_HOLD_TIMER = 23,
-IFLA_BRPORT_FLUSH = 24,
-IFLA_BRPORT_MULTICAST_ROUTER = 25,
-IFLA_BRPORT_PAD = 26,
-IFLA_BRPORT_MCAST_FLOOD = 27,
-IFLA_BRPORT_MCAST_TO_UCAST = 28,
-IFLA_BRPORT_VLAN_TUNNEL = 29,
-IFLA_BRPORT_BCAST_FLOOD = 30,
-IFLA_BRPORT_GROUP_FWD_MASK = 31,
-IFLA_BRPORT_NEIGH_SUPPRESS = 32,
-IFLA_BRPORT_ISOLATED = 33,
-IFLA_BRPORT_BACKUP_PORT = 34,
-IFLA_BRPORT_MRP_RING_OPEN = 35,
-IFLA_BRPORT_MRP_IN_OPEN = 36,
-IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 37,
-IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 38,
-IFLA_BRPORT_LOCKED = 39,
-IFLA_BRPORT_MAB = 40,
-__IFLA_BRPORT_MAX = 41,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_cacheinfo {
-pub max_reasm_len: __u32,
-pub tstamp: __u32,
-pub reachable_time: __u32,
-pub retrans_time: __u32,
-}
-pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC;
-pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND;
-pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA;
-pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS;
-pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND;
-pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA;
-pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IFLA_INFO_UNSPEC = 0,
-IFLA_INFO_KIND = 1,
-IFLA_INFO_DATA = 2,
-IFLA_INFO_XSTATS = 3,
-IFLA_INFO_SLAVE_KIND = 4,
-IFLA_INFO_SLAVE_DATA = 5,
-__IFLA_INFO_MAX = 6,
-}
-pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC;
-pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID;
-pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS;
-pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS;
-pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS;
-pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL;
-pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IFLA_VLAN_UNSPEC = 0,
-IFLA_VLAN_ID = 1,
-IFLA_VLAN_FLAGS = 2,
-IFLA_VLAN_EGRESS_QOS = 3,
-IFLA_VLAN_INGRESS_QOS = 4,
-IFLA_VLAN_PROTOCOL = 5,
-__IFLA_VLAN_MAX = 6,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC;
-pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING;
-pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IFLA_VLAN_QOS_UNSPEC = 0,
-IFLA_VLAN_QOS_MAPPING = 1,
-__IFLA_VLAN_QOS_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_qos_mapping {
-pub from: __u32,
-pub to: __u32,
-}
-pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC;
-pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE;
-pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS;
-pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE;
-pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR;
-pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA;
-pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED;
-pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IFLA_MACVLAN_UNSPEC = 0,
-IFLA_MACVLAN_MODE = 1,
-IFLA_MACVLAN_FLAGS = 2,
-IFLA_MACVLAN_MACADDR_MODE = 3,
-IFLA_MACVLAN_MACADDR = 4,
-IFLA_MACVLAN_MACADDR_DATA = 5,
-IFLA_MACVLAN_MACADDR_COUNT = 6,
-IFLA_MACVLAN_BC_QUEUE_LEN = 7,
-IFLA_MACVLAN_BC_QUEUE_LEN_USED = 8,
-__IFLA_MACVLAN_MAX = 9,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_mode {
-MACVLAN_MODE_PRIVATE = 1,
-MACVLAN_MODE_VEPA = 2,
-MACVLAN_MODE_BRIDGE = 4,
-MACVLAN_MODE_PASSTHRU = 8,
-MACVLAN_MODE_SOURCE = 16,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_macaddr_mode {
-MACVLAN_MACADDR_ADD = 0,
-MACVLAN_MACADDR_DEL = 1,
-MACVLAN_MACADDR_FLUSH = 2,
-MACVLAN_MACADDR_SET = 3,
-}
-pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC;
-pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE;
-pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_13 {
-IFLA_VRF_UNSPEC = 0,
-IFLA_VRF_TABLE = 1,
-__IFLA_VRF_MAX = 2,
-}
-pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC;
-pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE;
-pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_14 {
-IFLA_VRF_PORT_UNSPEC = 0,
-IFLA_VRF_PORT_TABLE = 1,
-__IFLA_VRF_PORT_MAX = 2,
-}
-pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC;
-pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI;
-pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT;
-pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN;
-pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE;
-pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW;
-pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA;
-pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT;
-pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT;
-pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI;
-pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES;
-pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB;
-pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT;
-pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION;
-pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD;
-pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD;
-pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_15 {
-IFLA_MACSEC_UNSPEC = 0,
-IFLA_MACSEC_SCI = 1,
-IFLA_MACSEC_PORT = 2,
-IFLA_MACSEC_ICV_LEN = 3,
-IFLA_MACSEC_CIPHER_SUITE = 4,
-IFLA_MACSEC_WINDOW = 5,
-IFLA_MACSEC_ENCODING_SA = 6,
-IFLA_MACSEC_ENCRYPT = 7,
-IFLA_MACSEC_PROTECT = 8,
-IFLA_MACSEC_INC_SCI = 9,
-IFLA_MACSEC_ES = 10,
-IFLA_MACSEC_SCB = 11,
-IFLA_MACSEC_REPLAY_PROTECT = 12,
-IFLA_MACSEC_VALIDATION = 13,
-IFLA_MACSEC_PAD = 14,
-IFLA_MACSEC_OFFLOAD = 15,
-__IFLA_MACSEC_MAX = 16,
-}
-pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC;
-pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK;
-pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID;
-pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA;
-pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_16 {
-IFLA_XFRM_UNSPEC = 0,
-IFLA_XFRM_LINK = 1,
-IFLA_XFRM_IF_ID = 2,
-IFLA_XFRM_COLLECT_METADATA = 3,
-__IFLA_XFRM_MAX = 4,
-}
-impl macsec_validation_type {
-pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_validation_type {
-MACSEC_VALIDATE_DISABLED = 0,
-MACSEC_VALIDATE_CHECK = 1,
-MACSEC_VALIDATE_STRICT = 2,
-__MACSEC_VALIDATE_END = 3,
-}
-impl macsec_offload {
-pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_offload {
-MACSEC_OFFLOAD_OFF = 0,
-MACSEC_OFFLOAD_PHY = 1,
-MACSEC_OFFLOAD_MAC = 2,
-__MACSEC_OFFLOAD_END = 3,
-}
-pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC;
-pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE;
-pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS;
-pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_17 {
-IFLA_IPVLAN_UNSPEC = 0,
-IFLA_IPVLAN_MODE = 1,
-IFLA_IPVLAN_FLAGS = 2,
-__IFLA_IPVLAN_MAX = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ipvlan_mode {
-IPVLAN_MODE_L2 = 0,
-IPVLAN_MODE_L3 = 1,
-IPVLAN_MODE_L3S = 2,
-IPVLAN_MODE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tunnel_msg {
-pub family: __u8,
-pub flags: __u8,
-pub reserved2: __u16,
-pub ifindex: __u32,
-}
-pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC;
-pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD;
-pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_18 {
-VNIFILTER_ENTRY_STATS_UNSPEC = 0,
-VNIFILTER_ENTRY_STATS_RX_BYTES = 1,
-VNIFILTER_ENTRY_STATS_RX_PKTS = 2,
-VNIFILTER_ENTRY_STATS_RX_DROPS = 3,
-VNIFILTER_ENTRY_STATS_RX_ERRORS = 4,
-VNIFILTER_ENTRY_STATS_TX_BYTES = 5,
-VNIFILTER_ENTRY_STATS_TX_PKTS = 6,
-VNIFILTER_ENTRY_STATS_TX_DROPS = 7,
-VNIFILTER_ENTRY_STATS_TX_ERRORS = 8,
-VNIFILTER_ENTRY_STATS_PAD = 9,
-__VNIFILTER_ENTRY_STATS_MAX = 10,
-}
-pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START;
-pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6;
-pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS;
-pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_19 {
-VXLAN_VNIFILTER_ENTRY_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY_START = 1,
-VXLAN_VNIFILTER_ENTRY_END = 2,
-VXLAN_VNIFILTER_ENTRY_GROUP = 3,
-VXLAN_VNIFILTER_ENTRY_GROUP6 = 4,
-VXLAN_VNIFILTER_ENTRY_STATS = 5,
-__VXLAN_VNIFILTER_ENTRY_MAX = 6,
-}
-pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY;
-pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_20 {
-VXLAN_VNIFILTER_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY = 1,
-__VXLAN_VNIFILTER_MAX = 2,
-}
-pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC;
-pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID;
-pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP;
-pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK;
-pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL;
-pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL;
-pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS;
-pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING;
-pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING;
-pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT;
-pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE;
-pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY;
-pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC;
-pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS;
-pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS;
-pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT;
-pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6;
-pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6;
-pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX;
-pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX;
-pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX;
-pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP;
-pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL;
-pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA;
-pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL;
-pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE;
-pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT;
-pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF;
-pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER;
-pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_21 {
-IFLA_VXLAN_UNSPEC = 0,
-IFLA_VXLAN_ID = 1,
-IFLA_VXLAN_GROUP = 2,
-IFLA_VXLAN_LINK = 3,
-IFLA_VXLAN_LOCAL = 4,
-IFLA_VXLAN_TTL = 5,
-IFLA_VXLAN_TOS = 6,
-IFLA_VXLAN_LEARNING = 7,
-IFLA_VXLAN_AGEING = 8,
-IFLA_VXLAN_LIMIT = 9,
-IFLA_VXLAN_PORT_RANGE = 10,
-IFLA_VXLAN_PROXY = 11,
-IFLA_VXLAN_RSC = 12,
-IFLA_VXLAN_L2MISS = 13,
-IFLA_VXLAN_L3MISS = 14,
-IFLA_VXLAN_PORT = 15,
-IFLA_VXLAN_GROUP6 = 16,
-IFLA_VXLAN_LOCAL6 = 17,
-IFLA_VXLAN_UDP_CSUM = 18,
-IFLA_VXLAN_UDP_ZERO_CSUM6_TX = 19,
-IFLA_VXLAN_UDP_ZERO_CSUM6_RX = 20,
-IFLA_VXLAN_REMCSUM_TX = 21,
-IFLA_VXLAN_REMCSUM_RX = 22,
-IFLA_VXLAN_GBP = 23,
-IFLA_VXLAN_REMCSUM_NOPARTIAL = 24,
-IFLA_VXLAN_COLLECT_METADATA = 25,
-IFLA_VXLAN_LABEL = 26,
-IFLA_VXLAN_GPE = 27,
-IFLA_VXLAN_TTL_INHERIT = 28,
-IFLA_VXLAN_DF = 29,
-IFLA_VXLAN_VNIFILTER = 30,
-__IFLA_VXLAN_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vxlan_port_range {
-pub low: __be16,
-pub high: __be16,
-}
-impl ifla_vxlan_df {
-pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_vxlan_df {
-VXLAN_DF_UNSET = 0,
-VXLAN_DF_SET = 1,
-VXLAN_DF_INHERIT = 2,
-__VXLAN_DF_END = 3,
-}
-pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC;
-pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID;
-pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE;
-pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL;
-pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS;
-pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT;
-pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA;
-pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6;
-pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX;
-pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL;
-pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT;
-pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF;
-pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT;
-pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_22 {
-IFLA_GENEVE_UNSPEC = 0,
-IFLA_GENEVE_ID = 1,
-IFLA_GENEVE_REMOTE = 2,
-IFLA_GENEVE_TTL = 3,
-IFLA_GENEVE_TOS = 4,
-IFLA_GENEVE_PORT = 5,
-IFLA_GENEVE_COLLECT_METADATA = 6,
-IFLA_GENEVE_REMOTE6 = 7,
-IFLA_GENEVE_UDP_CSUM = 8,
-IFLA_GENEVE_UDP_ZERO_CSUM6_TX = 9,
-IFLA_GENEVE_UDP_ZERO_CSUM6_RX = 10,
-IFLA_GENEVE_LABEL = 11,
-IFLA_GENEVE_TTL_INHERIT = 12,
-IFLA_GENEVE_DF = 13,
-IFLA_GENEVE_INNER_PROTO_INHERIT = 14,
-__IFLA_GENEVE_MAX = 15,
-}
-impl ifla_geneve_df {
-pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_geneve_df {
-GENEVE_DF_UNSET = 0,
-GENEVE_DF_SET = 1,
-GENEVE_DF_INHERIT = 2,
-__GENEVE_DF_END = 3,
-}
-pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC;
-pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT;
-pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE;
-pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN;
-pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE;
-pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_23 {
-IFLA_BAREUDP_UNSPEC = 0,
-IFLA_BAREUDP_PORT = 1,
-IFLA_BAREUDP_ETHERTYPE = 2,
-IFLA_BAREUDP_SRCPORT_MIN = 3,
-IFLA_BAREUDP_MULTIPROTO_MODE = 4,
-__IFLA_BAREUDP_MAX = 5,
-}
-pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC;
-pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD;
-pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_24 {
-IFLA_PPP_UNSPEC = 0,
-IFLA_PPP_DEV_FD = 1,
-__IFLA_PPP_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_gtp_role {
-GTP_ROLE_GGSN = 0,
-GTP_ROLE_SGSN = 1,
-}
-pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC;
-pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0;
-pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1;
-pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE;
-pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE;
-pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS;
-pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT;
-pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_25 {
-IFLA_GTP_UNSPEC = 0,
-IFLA_GTP_FD0 = 1,
-IFLA_GTP_FD1 = 2,
-IFLA_GTP_PDP_HASHSIZE = 3,
-IFLA_GTP_ROLE = 4,
-IFLA_GTP_CREATE_SOCKETS = 5,
-IFLA_GTP_RESTART_COUNT = 6,
-__IFLA_GTP_MAX = 7,
-}
-pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC;
-pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE;
-pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE;
-pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON;
-pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY;
-pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY;
-pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER;
-pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL;
-pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET;
-pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE;
-pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS;
-pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY;
-pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT;
-pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC;
-pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY;
-pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP;
-pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF;
-pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE;
-pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS;
-pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL;
-pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE;
-pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE;
-pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT;
-pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO;
-pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO;
-pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY;
-pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM;
-pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB;
-pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY;
-pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE;
-pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX;
-pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET;
-pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_26 {
-IFLA_BOND_UNSPEC = 0,
-IFLA_BOND_MODE = 1,
-IFLA_BOND_ACTIVE_SLAVE = 2,
-IFLA_BOND_MIIMON = 3,
-IFLA_BOND_UPDELAY = 4,
-IFLA_BOND_DOWNDELAY = 5,
-IFLA_BOND_USE_CARRIER = 6,
-IFLA_BOND_ARP_INTERVAL = 7,
-IFLA_BOND_ARP_IP_TARGET = 8,
-IFLA_BOND_ARP_VALIDATE = 9,
-IFLA_BOND_ARP_ALL_TARGETS = 10,
-IFLA_BOND_PRIMARY = 11,
-IFLA_BOND_PRIMARY_RESELECT = 12,
-IFLA_BOND_FAIL_OVER_MAC = 13,
-IFLA_BOND_XMIT_HASH_POLICY = 14,
-IFLA_BOND_RESEND_IGMP = 15,
-IFLA_BOND_NUM_PEER_NOTIF = 16,
-IFLA_BOND_ALL_SLAVES_ACTIVE = 17,
-IFLA_BOND_MIN_LINKS = 18,
-IFLA_BOND_LP_INTERVAL = 19,
-IFLA_BOND_PACKETS_PER_SLAVE = 20,
-IFLA_BOND_AD_LACP_RATE = 21,
-IFLA_BOND_AD_SELECT = 22,
-IFLA_BOND_AD_INFO = 23,
-IFLA_BOND_AD_ACTOR_SYS_PRIO = 24,
-IFLA_BOND_AD_USER_PORT_KEY = 25,
-IFLA_BOND_AD_ACTOR_SYSTEM = 26,
-IFLA_BOND_TLB_DYNAMIC_LB = 27,
-IFLA_BOND_PEER_NOTIF_DELAY = 28,
-IFLA_BOND_AD_LACP_ACTIVE = 29,
-IFLA_BOND_MISSED_MAX = 30,
-IFLA_BOND_NS_IP6_TARGET = 31,
-__IFLA_BOND_MAX = 32,
-}
-pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC;
-pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR;
-pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS;
-pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC;
-pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_27 {
-IFLA_BOND_AD_INFO_UNSPEC = 0,
-IFLA_BOND_AD_INFO_AGGREGATOR = 1,
-IFLA_BOND_AD_INFO_NUM_PORTS = 2,
-IFLA_BOND_AD_INFO_ACTOR_KEY = 3,
-IFLA_BOND_AD_INFO_PARTNER_KEY = 4,
-IFLA_BOND_AD_INFO_PARTNER_MAC = 5,
-__IFLA_BOND_AD_INFO_MAX = 6,
-}
-pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC;
-pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE;
-pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS;
-pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT;
-pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR;
-pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID;
-pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID;
-pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO;
-pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_28 {
-IFLA_BOND_SLAVE_UNSPEC = 0,
-IFLA_BOND_SLAVE_STATE = 1,
-IFLA_BOND_SLAVE_MII_STATUS = 2,
-IFLA_BOND_SLAVE_LINK_FAILURE_COUNT = 3,
-IFLA_BOND_SLAVE_PERM_HWADDR = 4,
-IFLA_BOND_SLAVE_QUEUE_ID = 5,
-IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 6,
-IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 7,
-IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 8,
-IFLA_BOND_SLAVE_PRIO = 9,
-__IFLA_BOND_SLAVE_MAX = 10,
-}
-pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC;
-pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO;
-pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_29 {
-IFLA_VF_INFO_UNSPEC = 0,
-IFLA_VF_INFO = 1,
-__IFLA_VF_INFO_MAX = 2,
-}
-pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC;
-pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC;
-pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN;
-pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE;
-pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK;
-pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE;
-pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE;
-pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN;
-pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS;
-pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST;
-pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID;
-pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID;
-pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST;
-pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST;
-pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_30 {
-IFLA_VF_UNSPEC = 0,
-IFLA_VF_MAC = 1,
-IFLA_VF_VLAN = 2,
-IFLA_VF_TX_RATE = 3,
-IFLA_VF_SPOOFCHK = 4,
-IFLA_VF_LINK_STATE = 5,
-IFLA_VF_RATE = 6,
-IFLA_VF_RSS_QUERY_EN = 7,
-IFLA_VF_STATS = 8,
-IFLA_VF_TRUST = 9,
-IFLA_VF_IB_NODE_GUID = 10,
-IFLA_VF_IB_PORT_GUID = 11,
-IFLA_VF_VLAN_LIST = 12,
-IFLA_VF_BROADCAST = 13,
-__IFLA_VF_MAX = 14,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_mac {
-pub vf: __u32,
-pub mac: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_broadcast {
-pub broadcast: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-}
-pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC;
-pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO;
-pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_31 {
-IFLA_VF_VLAN_INFO_UNSPEC = 0,
-IFLA_VF_VLAN_INFO = 1,
-__IFLA_VF_VLAN_INFO_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan_info {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-pub vlan_proto: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_tx_rate {
-pub vf: __u32,
-pub rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rate {
-pub vf: __u32,
-pub min_tx_rate: __u32,
-pub max_tx_rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_spoofchk {
-pub vf: __u32,
-pub setting: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_guid {
-pub vf: __u32,
-pub guid: __u64,
-}
-pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO;
-pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE;
-pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE;
-pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_32 {
-IFLA_VF_LINK_STATE_AUTO = 0,
-IFLA_VF_LINK_STATE_ENABLE = 1,
-IFLA_VF_LINK_STATE_DISABLE = 2,
-__IFLA_VF_LINK_STATE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_link_state {
-pub vf: __u32,
-pub link_state: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rss_query_en {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS;
-pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS;
-pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES;
-pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES;
-pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST;
-pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST;
-pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD;
-pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED;
-pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED;
-pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_33 {
-IFLA_VF_STATS_RX_PACKETS = 0,
-IFLA_VF_STATS_TX_PACKETS = 1,
-IFLA_VF_STATS_RX_BYTES = 2,
-IFLA_VF_STATS_TX_BYTES = 3,
-IFLA_VF_STATS_BROADCAST = 4,
-IFLA_VF_STATS_MULTICAST = 5,
-IFLA_VF_STATS_PAD = 6,
-IFLA_VF_STATS_RX_DROPPED = 7,
-IFLA_VF_STATS_TX_DROPPED = 8,
-__IFLA_VF_STATS_MAX = 9,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_trust {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC;
-pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT;
-pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_34 {
-IFLA_VF_PORT_UNSPEC = 0,
-IFLA_VF_PORT = 1,
-__IFLA_VF_PORT_MAX = 2,
-}
-pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC;
-pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF;
-pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE;
-pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE;
-pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID;
-pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID;
-pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST;
-pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE;
-pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_35 {
-IFLA_PORT_UNSPEC = 0,
-IFLA_PORT_VF = 1,
-IFLA_PORT_PROFILE = 2,
-IFLA_PORT_VSI_TYPE = 3,
-IFLA_PORT_INSTANCE_UUID = 4,
-IFLA_PORT_HOST_UUID = 5,
-IFLA_PORT_REQUEST = 6,
-IFLA_PORT_RESPONSE = 7,
-__IFLA_PORT_MAX = 8,
-}
-pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE;
-pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR;
-pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE;
-pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_36 {
-PORT_REQUEST_PREASSOCIATE = 0,
-PORT_REQUEST_PREASSOCIATE_RR = 1,
-PORT_REQUEST_ASSOCIATE = 2,
-PORT_REQUEST_DISASSOCIATE = 3,
-}
-pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS;
-pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT;
-pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID;
-pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION;
-pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION;
-pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC;
-pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS;
-pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS;
-pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID;
-pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE;
-pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_37 {
-PORT_VDP_RESPONSE_SUCCESS = 0,
-PORT_VDP_RESPONSE_INVALID_FORMAT = 1,
-PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES = 2,
-PORT_VDP_RESPONSE_UNUSED_VTID = 3,
-PORT_VDP_RESPONSE_VTID_VIOLATION = 4,
-PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION = 5,
-PORT_VDP_RESPONSE_OUT_OF_SYNC = 6,
-PORT_PROFILE_RESPONSE_SUCCESS = 256,
-PORT_PROFILE_RESPONSE_INPROGRESS = 257,
-PORT_PROFILE_RESPONSE_INVALID = 258,
-PORT_PROFILE_RESPONSE_BADSTATE = 259,
-PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260,
-PORT_PROFILE_RESPONSE_ERROR = 261,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_port_vsi {
-pub vsi_mgr_id: __u8,
-pub vsi_type_id: [__u8; 3usize],
-pub vsi_type_version: __u8,
-pub pad: [__u8; 3usize],
-}
-pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC;
-pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY;
-pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE;
-pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST;
-pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_38 {
-IFLA_IPOIB_UNSPEC = 0,
-IFLA_IPOIB_PKEY = 1,
-IFLA_IPOIB_MODE = 2,
-IFLA_IPOIB_UMCAST = 3,
-__IFLA_IPOIB_MAX = 4,
-}
-pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM;
-pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_39 {
-IPOIB_MODE_DATAGRAM = 0,
-IPOIB_MODE_CONNECTED = 1,
-}
-pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR;
-pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP;
-pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_40 {
-HSR_PROTOCOL_HSR = 0,
-HSR_PROTOCOL_PRP = 1,
-HSR_PROTOCOL_MAX = 2,
-}
-pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC;
-pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1;
-pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2;
-pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC;
-pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR;
-pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR;
-pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION;
-pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL;
-pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_41 {
-IFLA_HSR_UNSPEC = 0,
-IFLA_HSR_SLAVE1 = 1,
-IFLA_HSR_SLAVE2 = 2,
-IFLA_HSR_MULTICAST_SPEC = 3,
-IFLA_HSR_SUPERVISION_ADDR = 4,
-IFLA_HSR_SEQ_NR = 5,
-IFLA_HSR_VERSION = 6,
-IFLA_HSR_PROTOCOL = 7,
-__IFLA_HSR_MAX = 8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct if_stats_msg {
-pub family: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub ifindex: __u32,
-pub filter_mask: __u32,
-}
-pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC;
-pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64;
-pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS;
-pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE;
-pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS;
-pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC;
-pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_42 {
-IFLA_STATS_UNSPEC = 0,
-IFLA_STATS_LINK_64 = 1,
-IFLA_STATS_LINK_XSTATS = 2,
-IFLA_STATS_LINK_XSTATS_SLAVE = 3,
-IFLA_STATS_LINK_OFFLOAD_XSTATS = 4,
-IFLA_STATS_AF_SPEC = 5,
-__IFLA_STATS_MAX = 6,
-}
-pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC;
-pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS;
-pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_43 {
-IFLA_STATS_GETSET_UNSPEC = 0,
-IFLA_STATS_GET_FILTERS = 1,
-IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2,
-__IFLA_STATS_GETSET_MAX = 3,
-}
-pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC;
-pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE;
-pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND;
-pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_44 {
-LINK_XSTATS_TYPE_UNSPEC = 0,
-LINK_XSTATS_TYPE_BRIDGE = 1,
-LINK_XSTATS_TYPE_BOND = 2,
-__LINK_XSTATS_TYPE_MAX = 3,
-}
-pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO;
-pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_45 {
-IFLA_OFFLOAD_XSTATS_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_CPU_HIT = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO = 2,
-IFLA_OFFLOAD_XSTATS_L3_STATS = 3,
-__IFLA_OFFLOAD_XSTATS_MAX = 4,
-}
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED;
-pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_46 {
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2,
-__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3,
-}
-pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE;
-pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV;
-pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB;
-pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW;
-pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_47 {
-XDP_ATTACHED_NONE = 0,
-XDP_ATTACHED_DRV = 1,
-XDP_ATTACHED_SKB = 2,
-XDP_ATTACHED_HW = 3,
-XDP_ATTACHED_MULTI = 4,
-}
-pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC;
-pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD;
-pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED;
-pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS;
-pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID;
-pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID;
-pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID;
-pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID;
-pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD;
-pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_48 {
-IFLA_XDP_UNSPEC = 0,
-IFLA_XDP_FD = 1,
-IFLA_XDP_ATTACHED = 2,
-IFLA_XDP_FLAGS = 3,
-IFLA_XDP_PROG_ID = 4,
-IFLA_XDP_DRV_PROG_ID = 5,
-IFLA_XDP_SKB_PROG_ID = 6,
-IFLA_XDP_HW_PROG_ID = 7,
-IFLA_XDP_EXPECTED_FD = 8,
-__IFLA_XDP_MAX = 9,
-}
-pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE;
-pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT;
-pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES;
-pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER;
-pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS;
-pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND;
-pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_49 {
-IFLA_EVENT_NONE = 0,
-IFLA_EVENT_REBOOT = 1,
-IFLA_EVENT_FEATURES = 2,
-IFLA_EVENT_BONDING_FAILOVER = 3,
-IFLA_EVENT_NOTIFY_PEERS = 4,
-IFLA_EVENT_IGMP_RESEND = 5,
-IFLA_EVENT_BONDING_OPTIONS = 6,
-}
-pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC;
-pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER;
-pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP;
-pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE;
-pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI;
-pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR;
-pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST;
-pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE;
-pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES;
-pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES;
-pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_50 {
-IFLA_TUN_UNSPEC = 0,
-IFLA_TUN_OWNER = 1,
-IFLA_TUN_GROUP = 2,
-IFLA_TUN_TYPE = 3,
-IFLA_TUN_PI = 4,
-IFLA_TUN_VNET_HDR = 5,
-IFLA_TUN_PERSIST = 6,
-IFLA_TUN_MULTI_QUEUE = 7,
-IFLA_TUN_NUM_QUEUES = 8,
-IFLA_TUN_NUM_DISABLED_QUEUES = 9,
-__IFLA_TUN_MAX = 10,
-}
-pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC;
-pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID;
-pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS;
-pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_51 {
-IFLA_RMNET_UNSPEC = 0,
-IFLA_RMNET_MUX_ID = 1,
-IFLA_RMNET_FLAGS = 2,
-__IFLA_RMNET_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_rmnet_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC;
-pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET;
-pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_52 {
-IFLA_MCTP_UNSPEC = 0,
-IFLA_MCTP_NET = 1,
-__IFLA_MCTP_MAX = 2,
-}
-pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC;
-pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER;
-pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_53 {
-IFLA_DSA_UNSPEC = 0,
-IFLA_DSA_MASTER = 1,
-__IFLA_DSA_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifaddrmsg {
-pub ifa_family: __u8,
-pub ifa_prefixlen: __u8,
-pub ifa_flags: __u8,
-pub ifa_scope: __u8,
-pub ifa_index: __u32,
-}
-pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC;
-pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS;
-pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL;
-pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL;
-pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST;
-pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST;
-pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO;
-pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST;
-pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS;
-pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY;
-pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID;
-pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO;
-pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_54 {
-IFA_UNSPEC = 0,
-IFA_ADDRESS = 1,
-IFA_LOCAL = 2,
-IFA_LABEL = 3,
-IFA_BROADCAST = 4,
-IFA_ANYCAST = 5,
-IFA_CACHEINFO = 6,
-IFA_MULTICAST = 7,
-IFA_FLAGS = 8,
-IFA_RT_PRIORITY = 9,
-IFA_TARGET_NETNSID = 10,
-IFA_PROTO = 11,
-__IFA_MAX = 12,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifa_cacheinfo {
-pub ifa_prefered: __u32,
-pub ifa_valid: __u32,
-pub cstamp: __u32,
-pub tstamp: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndmsg {
-pub ndm_family: __u8,
-pub ndm_pad1: __u8,
-pub ndm_pad2: __u16,
-pub ndm_ifindex: __s32,
-pub ndm_state: __u16,
-pub ndm_flags: __u8,
-pub ndm_type: __u8,
-}
-pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC;
-pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST;
-pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR;
-pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO;
-pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES;
-pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN;
-pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT;
-pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI;
-pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX;
-pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER;
-pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID;
-pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI;
-pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL;
-pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID;
-pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS;
-pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT;
-pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK;
-pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK;
-pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_55 {
-NDA_UNSPEC = 0,
-NDA_DST = 1,
-NDA_LLADDR = 2,
-NDA_CACHEINFO = 3,
-NDA_PROBES = 4,
-NDA_VLAN = 5,
-NDA_PORT = 6,
-NDA_VNI = 7,
-NDA_IFINDEX = 8,
-NDA_MASTER = 9,
-NDA_LINK_NETNSID = 10,
-NDA_SRC_VNI = 11,
-NDA_PROTOCOL = 12,
-NDA_NH_ID = 13,
-NDA_FDB_EXT_ATTRS = 14,
-NDA_FLAGS_EXT = 15,
-NDA_NDM_STATE_MASK = 16,
-NDA_NDM_FLAGS_MASK = 17,
-__NDA_MAX = 18,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nda_cacheinfo {
-pub ndm_confirmed: __u32,
-pub ndm_used: __u32,
-pub ndm_updated: __u32,
-pub ndm_refcnt: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_stats {
-pub ndts_allocs: __u64,
-pub ndts_destroys: __u64,
-pub ndts_hash_grows: __u64,
-pub ndts_res_failed: __u64,
-pub ndts_lookups: __u64,
-pub ndts_hits: __u64,
-pub ndts_rcv_probes_mcast: __u64,
-pub ndts_rcv_probes_ucast: __u64,
-pub ndts_periodic_gc_runs: __u64,
-pub ndts_forced_gc_runs: __u64,
-pub ndts_table_fulls: __u64,
-}
-pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC;
-pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX;
-pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT;
-pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME;
-pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME;
-pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME;
-pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME;
-pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME;
-pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN;
-pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES;
-pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES;
-pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES;
-pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY;
-pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY;
-pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN;
-pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME;
-pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES;
-pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES;
-pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD;
-pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS;
-pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_56 {
-NDTPA_UNSPEC = 0,
-NDTPA_IFINDEX = 1,
-NDTPA_REFCNT = 2,
-NDTPA_REACHABLE_TIME = 3,
-NDTPA_BASE_REACHABLE_TIME = 4,
-NDTPA_RETRANS_TIME = 5,
-NDTPA_GC_STALETIME = 6,
-NDTPA_DELAY_PROBE_TIME = 7,
-NDTPA_QUEUE_LEN = 8,
-NDTPA_APP_PROBES = 9,
-NDTPA_UCAST_PROBES = 10,
-NDTPA_MCAST_PROBES = 11,
-NDTPA_ANYCAST_DELAY = 12,
-NDTPA_PROXY_DELAY = 13,
-NDTPA_PROXY_QLEN = 14,
-NDTPA_LOCKTIME = 15,
-NDTPA_QUEUE_LENBYTES = 16,
-NDTPA_MCAST_REPROBES = 17,
-NDTPA_PAD = 18,
-NDTPA_INTERVAL_PROBE_TIME_MS = 19,
-__NDTPA_MAX = 20,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndtmsg {
-pub ndtm_family: __u8,
-pub ndtm_pad1: __u8,
-pub ndtm_pad2: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_config {
-pub ndtc_key_len: __u16,
-pub ndtc_entry_size: __u16,
-pub ndtc_entries: __u32,
-pub ndtc_last_flush: __u32,
-pub ndtc_last_rand: __u32,
-pub ndtc_hash_rnd: __u32,
-pub ndtc_hash_mask: __u32,
-pub ndtc_hash_chain_gc: __u32,
-pub ndtc_proxy_qlen: __u32,
-}
-pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC;
-pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME;
-pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1;
-pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2;
-pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3;
-pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG;
-pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS;
-pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS;
-pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL;
-pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD;
-pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_57 {
-NDTA_UNSPEC = 0,
-NDTA_NAME = 1,
-NDTA_THRESH1 = 2,
-NDTA_THRESH2 = 3,
-NDTA_THRESH3 = 4,
-NDTA_CONFIG = 5,
-NDTA_PARMS = 6,
-NDTA_STATS = 7,
-NDTA_GC_INTERVAL = 8,
-NDTA_PAD = 9,
-__NDTA_MAX = 10,
-}
-pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT;
-pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_58 {
-FDB_NOTIFY_BIT = 1,
-FDB_NOTIFY_INACTIVE_BIT = 2,
-}
-pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC;
-pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY;
-pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH;
-pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_59 {
-NFEA_UNSPEC = 0,
-NFEA_ACTIVITY_NOTIFY = 1,
-NFEA_DONT_REFRESH = 2,
-__NFEA_MAX = 3,
-}
-pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK;
-pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK;
-pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK;
-pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR;
-pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR;
-pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR;
-pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE;
-pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE;
-pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE;
-pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH;
-pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH;
-pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH;
-pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE;
-pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE;
-pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE;
-pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC;
-pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC;
-pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC;
-pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS;
-pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS;
-pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS;
-pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER;
-pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER;
-pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER;
-pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION;
-pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION;
-pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION;
-pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX;
-pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST;
-pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST;
-pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL;
-pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL;
-pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL;
-pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT;
-pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL;
-pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL;
-pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL;
-pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB;
-pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB;
-pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF;
-pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF;
-pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF;
-pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB;
-pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB;
-pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB;
-pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID;
-pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID;
-pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID;
-pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS;
-pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS;
-pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS;
-pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT;
-pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN;
-pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN;
-pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN;
-pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP;
-pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP;
-pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP;
-pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP;
-pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP;
-pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP;
-pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN;
-pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN;
-pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN;
-pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET;
-pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET;
-pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET;
-pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL;
-pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL;
-pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL;
-pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_60 {
-RTM_BASE = 16,
-RTM_DELLINK = 17,
-RTM_GETLINK = 18,
-RTM_SETLINK = 19,
-RTM_NEWADDR = 20,
-RTM_DELADDR = 21,
-RTM_GETADDR = 22,
-RTM_NEWROUTE = 24,
-RTM_DELROUTE = 25,
-RTM_GETROUTE = 26,
-RTM_NEWNEIGH = 28,
-RTM_DELNEIGH = 29,
-RTM_GETNEIGH = 30,
-RTM_NEWRULE = 32,
-RTM_DELRULE = 33,
-RTM_GETRULE = 34,
-RTM_NEWQDISC = 36,
-RTM_DELQDISC = 37,
-RTM_GETQDISC = 38,
-RTM_NEWTCLASS = 40,
-RTM_DELTCLASS = 41,
-RTM_GETTCLASS = 42,
-RTM_NEWTFILTER = 44,
-RTM_DELTFILTER = 45,
-RTM_GETTFILTER = 46,
-RTM_NEWACTION = 48,
-RTM_DELACTION = 49,
-RTM_GETACTION = 50,
-RTM_NEWPREFIX = 52,
-RTM_GETMULTICAST = 58,
-RTM_GETANYCAST = 62,
-RTM_NEWNEIGHTBL = 64,
-RTM_GETNEIGHTBL = 66,
-RTM_SETNEIGHTBL = 67,
-RTM_NEWNDUSEROPT = 68,
-RTM_NEWADDRLABEL = 72,
-RTM_DELADDRLABEL = 73,
-RTM_GETADDRLABEL = 74,
-RTM_GETDCB = 78,
-RTM_SETDCB = 79,
-RTM_NEWNETCONF = 80,
-RTM_DELNETCONF = 81,
-RTM_GETNETCONF = 82,
-RTM_NEWMDB = 84,
-RTM_DELMDB = 85,
-RTM_GETMDB = 86,
-RTM_NEWNSID = 88,
-RTM_DELNSID = 89,
-RTM_GETNSID = 90,
-RTM_NEWSTATS = 92,
-RTM_GETSTATS = 94,
-RTM_SETSTATS = 95,
-RTM_NEWCACHEREPORT = 96,
-RTM_NEWCHAIN = 100,
-RTM_DELCHAIN = 101,
-RTM_GETCHAIN = 102,
-RTM_NEWNEXTHOP = 104,
-RTM_DELNEXTHOP = 105,
-RTM_GETNEXTHOP = 106,
-RTM_NEWLINKPROP = 108,
-RTM_DELLINKPROP = 109,
-RTM_GETLINKPROP = 110,
-RTM_NEWVLAN = 112,
-RTM_DELVLAN = 113,
-RTM_GETVLAN = 114,
-RTM_NEWNEXTHOPBUCKET = 116,
-RTM_DELNEXTHOPBUCKET = 117,
-RTM_GETNEXTHOPBUCKET = 118,
-RTM_NEWTUNNEL = 120,
-RTM_DELTUNNEL = 121,
-RTM_GETTUNNEL = 122,
-__RTM_MAX = 123,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtattr {
-pub rta_len: crate::ctypes::c_ushort,
-pub rta_type: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtmsg {
-pub rtm_family: crate::ctypes::c_uchar,
-pub rtm_dst_len: crate::ctypes::c_uchar,
-pub rtm_src_len: crate::ctypes::c_uchar,
-pub rtm_tos: crate::ctypes::c_uchar,
-pub rtm_table: crate::ctypes::c_uchar,
-pub rtm_protocol: crate::ctypes::c_uchar,
-pub rtm_scope: crate::ctypes::c_uchar,
-pub rtm_type: crate::ctypes::c_uchar,
-pub rtm_flags: crate::ctypes::c_uint,
-}
-pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC;
-pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST;
-pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL;
-pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST;
-pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST;
-pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST;
-pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE;
-pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE;
-pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT;
-pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW;
-pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT;
-pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE;
-pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_61 {
-RTN_UNSPEC = 0,
-RTN_UNICAST = 1,
-RTN_LOCAL = 2,
-RTN_BROADCAST = 3,
-RTN_ANYCAST = 4,
-RTN_MULTICAST = 5,
-RTN_BLACKHOLE = 6,
-RTN_UNREACHABLE = 7,
-RTN_PROHIBIT = 8,
-RTN_THROW = 9,
-RTN_NAT = 10,
-RTN_XRESOLVE = 11,
-__RTN_MAX = 12,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_scope_t {
-RT_SCOPE_UNIVERSE = 0,
-RT_SCOPE_SITE = 200,
-RT_SCOPE_LINK = 253,
-RT_SCOPE_HOST = 254,
-RT_SCOPE_NOWHERE = 255,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_class_t {
-RT_TABLE_UNSPEC = 0,
-RT_TABLE_COMPAT = 252,
-RT_TABLE_DEFAULT = 253,
-RT_TABLE_MAIN = 254,
-RT_TABLE_LOCAL = 255,
-RT_TABLE_MAX = 4294967295,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtattr_type_t {
-RTA_UNSPEC = 0,
-RTA_DST = 1,
-RTA_SRC = 2,
-RTA_IIF = 3,
-RTA_OIF = 4,
-RTA_GATEWAY = 5,
-RTA_PRIORITY = 6,
-RTA_PREFSRC = 7,
-RTA_METRICS = 8,
-RTA_MULTIPATH = 9,
-RTA_PROTOINFO = 10,
-RTA_FLOW = 11,
-RTA_CACHEINFO = 12,
-RTA_SESSION = 13,
-RTA_MP_ALGO = 14,
-RTA_TABLE = 15,
-RTA_MARK = 16,
-RTA_MFC_STATS = 17,
-RTA_VIA = 18,
-RTA_NEWDST = 19,
-RTA_PREF = 20,
-RTA_ENCAP_TYPE = 21,
-RTA_ENCAP = 22,
-RTA_EXPIRES = 23,
-RTA_PAD = 24,
-RTA_UID = 25,
-RTA_TTL_PROPAGATE = 26,
-RTA_IP_PROTO = 27,
-RTA_SPORT = 28,
-RTA_DPORT = 29,
-RTA_NH_ID = 30,
-__RTA_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnexthop {
-pub rtnh_len: crate::ctypes::c_ushort,
-pub rtnh_flags: crate::ctypes::c_uchar,
-pub rtnh_hops: crate::ctypes::c_uchar,
-pub rtnh_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rtvia {
-pub rtvia_family: __kernel_sa_family_t,
-pub rtvia_addr: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_cacheinfo {
-pub rta_clntref: __u32,
-pub rta_lastuse: __u32,
-pub rta_expires: __s32,
-pub rta_error: __u32,
-pub rta_used: __u32,
-pub rta_id: __u32,
-pub rta_ts: __u32,
-pub rta_tsage: __u32,
-}
-pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC;
-pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK;
-pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU;
-pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW;
-pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT;
-pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR;
-pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH;
-pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND;
-pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS;
-pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING;
-pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT;
-pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND;
-pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES;
-pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN;
-pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND;
-pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK;
-pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO;
-pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE;
-pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_62 {
-RTAX_UNSPEC = 0,
-RTAX_LOCK = 1,
-RTAX_MTU = 2,
-RTAX_WINDOW = 3,
-RTAX_RTT = 4,
-RTAX_RTTVAR = 5,
-RTAX_SSTHRESH = 6,
-RTAX_CWND = 7,
-RTAX_ADVMSS = 8,
-RTAX_REORDERING = 9,
-RTAX_HOPLIMIT = 10,
-RTAX_INITCWND = 11,
-RTAX_FEATURES = 12,
-RTAX_RTO_MIN = 13,
-RTAX_INITRWND = 14,
-RTAX_QUICKACK = 15,
-RTAX_CC_ALGO = 16,
-RTAX_FASTOPEN_NO_COOKIE = 17,
-__RTAX_MAX = 18,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rta_session {
-pub proto: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub u: rta_session__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union rta_session__bindgen_ty_1 {
-pub ports: rta_session__bindgen_ty_1__bindgen_ty_1,
-pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2,
-pub spi: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_1 {
-pub sport: __u16,
-pub dport: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_2 {
-pub type_: __u8,
-pub code: __u8,
-pub ident: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_mfc_stats {
-pub mfcs_packets: __u64,
-pub mfcs_bytes: __u64,
-pub mfcs_wrong_if: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtgenmsg {
-pub rtgen_family: crate::ctypes::c_uchar,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifinfomsg {
-pub ifi_family: crate::ctypes::c_uchar,
-pub __ifi_pad: crate::ctypes::c_uchar,
-pub ifi_type: crate::ctypes::c_ushort,
-pub ifi_index: crate::ctypes::c_int,
-pub ifi_flags: crate::ctypes::c_uint,
-pub ifi_change: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefixmsg {
-pub prefix_family: crate::ctypes::c_uchar,
-pub prefix_pad1: crate::ctypes::c_uchar,
-pub prefix_pad2: crate::ctypes::c_ushort,
-pub prefix_ifindex: crate::ctypes::c_int,
-pub prefix_type: crate::ctypes::c_uchar,
-pub prefix_len: crate::ctypes::c_uchar,
-pub prefix_flags: crate::ctypes::c_uchar,
-pub prefix_pad3: crate::ctypes::c_uchar,
-}
-pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC;
-pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS;
-pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO;
-pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_63 {
-PREFIX_UNSPEC = 0,
-PREFIX_ADDRESS = 1,
-PREFIX_CACHEINFO = 2,
-__PREFIX_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefix_cacheinfo {
-pub preferred_time: __u32,
-pub valid_time: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcmsg {
-pub tcm_family: crate::ctypes::c_uchar,
-pub tcm__pad1: crate::ctypes::c_uchar,
-pub tcm__pad2: crate::ctypes::c_ushort,
-pub tcm_ifindex: crate::ctypes::c_int,
-pub tcm_handle: __u32,
-pub tcm_parent: __u32,
-pub tcm_info: __u32,
-}
-pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC;
-pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND;
-pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS;
-pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS;
-pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS;
-pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE;
-pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT;
-pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2;
-pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB;
-pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD;
-pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE;
-pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN;
-pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD;
-pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK;
-pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK;
-pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS;
-pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_64 {
-TCA_UNSPEC = 0,
-TCA_KIND = 1,
-TCA_OPTIONS = 2,
-TCA_STATS = 3,
-TCA_XSTATS = 4,
-TCA_RATE = 5,
-TCA_FCNT = 6,
-TCA_STATS2 = 7,
-TCA_STAB = 8,
-TCA_PAD = 9,
-TCA_DUMP_INVISIBLE = 10,
-TCA_CHAIN = 11,
-TCA_HW_OFFLOAD = 12,
-TCA_INGRESS_BLOCK = 13,
-TCA_EGRESS_BLOCK = 14,
-TCA_DUMP_FLAGS = 15,
-__TCA_MAX = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nduseroptmsg {
-pub nduseropt_family: crate::ctypes::c_uchar,
-pub nduseropt_pad1: crate::ctypes::c_uchar,
-pub nduseropt_opts_len: crate::ctypes::c_ushort,
-pub nduseropt_ifindex: crate::ctypes::c_int,
-pub nduseropt_icmp_type: __u8,
-pub nduseropt_icmp_code: __u8,
-pub nduseropt_pad2: crate::ctypes::c_ushort,
-pub nduseropt_pad3: crate::ctypes::c_uint,
-}
-pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC;
-pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR;
-pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_65 {
-NDUSEROPT_UNSPEC = 0,
-NDUSEROPT_SRCADDR = 1,
-__NDUSEROPT_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtnetlink_groups {
-RTNLGRP_NONE = 0,
-RTNLGRP_LINK = 1,
-RTNLGRP_NOTIFY = 2,
-RTNLGRP_NEIGH = 3,
-RTNLGRP_TC = 4,
-RTNLGRP_IPV4_IFADDR = 5,
-RTNLGRP_IPV4_MROUTE = 6,
-RTNLGRP_IPV4_ROUTE = 7,
-RTNLGRP_IPV4_RULE = 8,
-RTNLGRP_IPV6_IFADDR = 9,
-RTNLGRP_IPV6_MROUTE = 10,
-RTNLGRP_IPV6_ROUTE = 11,
-RTNLGRP_IPV6_IFINFO = 12,
-RTNLGRP_DECnet_IFADDR = 13,
-RTNLGRP_NOP2 = 14,
-RTNLGRP_DECnet_ROUTE = 15,
-RTNLGRP_DECnet_RULE = 16,
-RTNLGRP_NOP4 = 17,
-RTNLGRP_IPV6_PREFIX = 18,
-RTNLGRP_IPV6_RULE = 19,
-RTNLGRP_ND_USEROPT = 20,
-RTNLGRP_PHONET_IFADDR = 21,
-RTNLGRP_PHONET_ROUTE = 22,
-RTNLGRP_DCB = 23,
-RTNLGRP_IPV4_NETCONF = 24,
-RTNLGRP_IPV6_NETCONF = 25,
-RTNLGRP_MDB = 26,
-RTNLGRP_MPLS_ROUTE = 27,
-RTNLGRP_NSID = 28,
-RTNLGRP_MPLS_NETCONF = 29,
-RTNLGRP_IPV4_MROUTE_R = 30,
-RTNLGRP_IPV6_MROUTE_R = 31,
-RTNLGRP_NEXTHOP = 32,
-RTNLGRP_BRVLAN = 33,
-RTNLGRP_MCTP_IFADDR = 34,
-RTNLGRP_TUNNEL = 35,
-RTNLGRP_STATS = 36,
-__RTNLGRP_MAX = 37,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcamsg {
-pub tca_family: crate::ctypes::c_uchar,
-pub tca__pad1: crate::ctypes::c_uchar,
-pub tca__pad2: crate::ctypes::c_ushort,
-}
-pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC;
-pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB;
-pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS;
-pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT;
-pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA;
-pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_66 {
-TCA_ROOT_UNSPEC = 0,
-TCA_ROOT_TAB = 1,
-TCA_ROOT_FLAGS = 2,
-TCA_ROOT_COUNT = 3,
-TCA_ROOT_TIME_DELTA = 4,
-__TCA_ROOT_MAX = 5,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/s390x/errno.rs b/vendor/linux-raw-sys-0.3.2/src/s390x/errno.rs
deleted file mode 100644
index 8c5620d74..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/s390x/errno.rs
+++ /dev/null
@@ -1,135 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const EPERM: u32 = 1;
-pub const ENOENT: u32 = 2;
-pub const ESRCH: u32 = 3;
-pub const EINTR: u32 = 4;
-pub const EIO: u32 = 5;
-pub const ENXIO: u32 = 6;
-pub const E2BIG: u32 = 7;
-pub const ENOEXEC: u32 = 8;
-pub const EBADF: u32 = 9;
-pub const ECHILD: u32 = 10;
-pub const EAGAIN: u32 = 11;
-pub const ENOMEM: u32 = 12;
-pub const EACCES: u32 = 13;
-pub const EFAULT: u32 = 14;
-pub const ENOTBLK: u32 = 15;
-pub const EBUSY: u32 = 16;
-pub const EEXIST: u32 = 17;
-pub const EXDEV: u32 = 18;
-pub const ENODEV: u32 = 19;
-pub const ENOTDIR: u32 = 20;
-pub const EISDIR: u32 = 21;
-pub const EINVAL: u32 = 22;
-pub const ENFILE: u32 = 23;
-pub const EMFILE: u32 = 24;
-pub const ENOTTY: u32 = 25;
-pub const ETXTBSY: u32 = 26;
-pub const EFBIG: u32 = 27;
-pub const ENOSPC: u32 = 28;
-pub const ESPIPE: u32 = 29;
-pub const EROFS: u32 = 30;
-pub const EMLINK: u32 = 31;
-pub const EPIPE: u32 = 32;
-pub const EDOM: u32 = 33;
-pub const ERANGE: u32 = 34;
-pub const EDEADLK: u32 = 35;
-pub const ENAMETOOLONG: u32 = 36;
-pub const ENOLCK: u32 = 37;
-pub const ENOSYS: u32 = 38;
-pub const ENOTEMPTY: u32 = 39;
-pub const ELOOP: u32 = 40;
-pub const EWOULDBLOCK: u32 = 11;
-pub const ENOMSG: u32 = 42;
-pub const EIDRM: u32 = 43;
-pub const ECHRNG: u32 = 44;
-pub const EL2NSYNC: u32 = 45;
-pub const EL3HLT: u32 = 46;
-pub const EL3RST: u32 = 47;
-pub const ELNRNG: u32 = 48;
-pub const EUNATCH: u32 = 49;
-pub const ENOCSI: u32 = 50;
-pub const EL2HLT: u32 = 51;
-pub const EBADE: u32 = 52;
-pub const EBADR: u32 = 53;
-pub const EXFULL: u32 = 54;
-pub const ENOANO: u32 = 55;
-pub const EBADRQC: u32 = 56;
-pub const EBADSLT: u32 = 57;
-pub const EDEADLOCK: u32 = 35;
-pub const EBFONT: u32 = 59;
-pub const ENOSTR: u32 = 60;
-pub const ENODATA: u32 = 61;
-pub const ETIME: u32 = 62;
-pub const ENOSR: u32 = 63;
-pub const ENONET: u32 = 64;
-pub const ENOPKG: u32 = 65;
-pub const EREMOTE: u32 = 66;
-pub const ENOLINK: u32 = 67;
-pub const EADV: u32 = 68;
-pub const ESRMNT: u32 = 69;
-pub const ECOMM: u32 = 70;
-pub const EPROTO: u32 = 71;
-pub const EMULTIHOP: u32 = 72;
-pub const EDOTDOT: u32 = 73;
-pub const EBADMSG: u32 = 74;
-pub const EOVERFLOW: u32 = 75;
-pub const ENOTUNIQ: u32 = 76;
-pub const EBADFD: u32 = 77;
-pub const EREMCHG: u32 = 78;
-pub const ELIBACC: u32 = 79;
-pub const ELIBBAD: u32 = 80;
-pub const ELIBSCN: u32 = 81;
-pub const ELIBMAX: u32 = 82;
-pub const ELIBEXEC: u32 = 83;
-pub const EILSEQ: u32 = 84;
-pub const ERESTART: u32 = 85;
-pub const ESTRPIPE: u32 = 86;
-pub const EUSERS: u32 = 87;
-pub const ENOTSOCK: u32 = 88;
-pub const EDESTADDRREQ: u32 = 89;
-pub const EMSGSIZE: u32 = 90;
-pub const EPROTOTYPE: u32 = 91;
-pub const ENOPROTOOPT: u32 = 92;
-pub const EPROTONOSUPPORT: u32 = 93;
-pub const ESOCKTNOSUPPORT: u32 = 94;
-pub const EOPNOTSUPP: u32 = 95;
-pub const EPFNOSUPPORT: u32 = 96;
-pub const EAFNOSUPPORT: u32 = 97;
-pub const EADDRINUSE: u32 = 98;
-pub const EADDRNOTAVAIL: u32 = 99;
-pub const ENETDOWN: u32 = 100;
-pub const ENETUNREACH: u32 = 101;
-pub const ENETRESET: u32 = 102;
-pub const ECONNABORTED: u32 = 103;
-pub const ECONNRESET: u32 = 104;
-pub const ENOBUFS: u32 = 105;
-pub const EISCONN: u32 = 106;
-pub const ENOTCONN: u32 = 107;
-pub const ESHUTDOWN: u32 = 108;
-pub const ETOOMANYREFS: u32 = 109;
-pub const ETIMEDOUT: u32 = 110;
-pub const ECONNREFUSED: u32 = 111;
-pub const EHOSTDOWN: u32 = 112;
-pub const EHOSTUNREACH: u32 = 113;
-pub const EALREADY: u32 = 114;
-pub const EINPROGRESS: u32 = 115;
-pub const ESTALE: u32 = 116;
-pub const EUCLEAN: u32 = 117;
-pub const ENOTNAM: u32 = 118;
-pub const ENAVAIL: u32 = 119;
-pub const EISNAM: u32 = 120;
-pub const EREMOTEIO: u32 = 121;
-pub const EDQUOT: u32 = 122;
-pub const ENOMEDIUM: u32 = 123;
-pub const EMEDIUMTYPE: u32 = 124;
-pub const ECANCELED: u32 = 125;
-pub const ENOKEY: u32 = 126;
-pub const EKEYEXPIRED: u32 = 127;
-pub const EKEYREVOKED: u32 = 128;
-pub const EKEYREJECTED: u32 = 129;
-pub const EOWNERDEAD: u32 = 130;
-pub const ENOTRECOVERABLE: u32 = 131;
-pub const ERFKILL: u32 = 132;
-pub const EHWPOISON: u32 = 133;
diff --git a/vendor/linux-raw-sys-0.3.2/src/s390x/general.rs b/vendor/linux-raw-sys-0.3.2/src/s390x/general.rs
deleted file mode 100644
index bebd7bfb3..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/s390x/general.rs
+++ /dev/null
@@ -1,5297 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
-pub struct __BindgenBitfieldUnit<Storage> {
-storage: Storage,
-}
-impl<Storage> __BindgenBitfieldUnit<Storage> {
-#[inline]
-pub const fn new(storage: Storage) -> Self {
-Self { storage }
-}
-}
-impl<Storage> __BindgenBitfieldUnit<Storage>
-where
-Storage: AsRef<[u8]> + AsMut<[u8]>,
-{
-#[inline]
-pub fn get_bit(&self, index: usize) -> bool {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = self.storage.as_ref()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-byte & mask == mask
-}
-#[inline]
-pub fn set_bit(&mut self, index: usize, val: bool) {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = &mut self.storage.as_mut()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-if val {
-*byte |= mask;
-} else {
-*byte &= !mask;
-}
-}
-#[inline]
-pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-let mut val = 0;
-for i in 0..(bit_width as usize) {
-if self.get_bit(i + bit_offset) {
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-val |= 1 << index;
-}
-}
-val
-}
-#[inline]
-pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-for i in 0..(bit_width as usize) {
-let mask = 1 << i;
-let val_bit_is_set = val & mask == mask;
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-self.set_bit(index + bit_offset, val_bit_is_set);
-}
-}
-}
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-#[repr(C)]
-pub struct __BindgenUnionField<T>(::core::marker::PhantomData<T>);
-impl<T> __BindgenUnionField<T> {
-#[inline]
-pub const fn new() -> Self {
-__BindgenUnionField(::core::marker::PhantomData)
-}
-#[inline]
-pub unsafe fn as_ref(&self) -> &T {
-::core::mem::transmute(self)
-}
-#[inline]
-pub unsafe fn as_mut(&mut self) -> &mut T {
-::core::mem::transmute(self)
-}
-}
-impl<T> ::core::default::Default for __BindgenUnionField<T> {
-#[inline]
-fn default() -> Self {
-Self::new()
-}
-}
-impl<T> ::core::clone::Clone for __BindgenUnionField<T> {
-#[inline]
-fn clone(&self) -> Self {
-Self::new()
-}
-}
-impl<T> ::core::marker::Copy for __BindgenUnionField<T> {}
-impl<T> ::core::fmt::Debug for __BindgenUnionField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__BindgenUnionField")
-}
-}
-impl<T> ::core::hash::Hash for __BindgenUnionField<T> {
-fn hash<H: ::core::hash::Hasher>(&self, _state: &mut H) {}
-}
-impl<T> ::core::cmp::PartialEq for __BindgenUnionField<T> {
-fn eq(&self, _other: &__BindgenUnionField<T>) -> bool {
-true
-}
-}
-impl<T> ::core::cmp::Eq for __BindgenUnionField<T> {}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const AT_SYSINFO_EHDR: u32 = 33;
-pub const AT_VECTOR_SIZE_ARCH: u32 = 1;
-pub const AT_NULL: u32 = 0;
-pub const AT_IGNORE: u32 = 1;
-pub const AT_EXECFD: u32 = 2;
-pub const AT_PHDR: u32 = 3;
-pub const AT_PHENT: u32 = 4;
-pub const AT_PHNUM: u32 = 5;
-pub const AT_PAGESZ: u32 = 6;
-pub const AT_BASE: u32 = 7;
-pub const AT_FLAGS: u32 = 8;
-pub const AT_ENTRY: u32 = 9;
-pub const AT_NOTELF: u32 = 10;
-pub const AT_UID: u32 = 11;
-pub const AT_EUID: u32 = 12;
-pub const AT_GID: u32 = 13;
-pub const AT_EGID: u32 = 14;
-pub const AT_PLATFORM: u32 = 15;
-pub const AT_HWCAP: u32 = 16;
-pub const AT_CLKTCK: u32 = 17;
-pub const AT_SECURE: u32 = 23;
-pub const AT_BASE_PLATFORM: u32 = 24;
-pub const AT_RANDOM: u32 = 25;
-pub const AT_HWCAP2: u32 = 26;
-pub const AT_EXECFN: u32 = 31;
-pub const AT_MINSIGSTKSZ: u32 = 51;
-pub const __BITS_PER_LONG: u32 = 64;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S_1: u32 = 1;
-pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798;
-pub const _LINUX_CAPABILITY_U32S_2: u32 = 2;
-pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514;
-pub const _LINUX_CAPABILITY_U32S_3: u32 = 2;
-pub const VFS_CAP_REVISION_MASK: u32 = 4278190080;
-pub const VFS_CAP_REVISION_SHIFT: u32 = 24;
-pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081;
-pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1;
-pub const VFS_CAP_REVISION_1: u32 = 16777216;
-pub const VFS_CAP_U32_1: u32 = 1;
-pub const VFS_CAP_REVISION_2: u32 = 33554432;
-pub const VFS_CAP_U32_2: u32 = 2;
-pub const VFS_CAP_REVISION_3: u32 = 50331648;
-pub const VFS_CAP_U32_3: u32 = 2;
-pub const VFS_CAP_U32: u32 = 2;
-pub const VFS_CAP_REVISION: u32 = 50331648;
-pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S: u32 = 1;
-pub const CAP_CHOWN: u32 = 0;
-pub const CAP_DAC_OVERRIDE: u32 = 1;
-pub const CAP_DAC_READ_SEARCH: u32 = 2;
-pub const CAP_FOWNER: u32 = 3;
-pub const CAP_FSETID: u32 = 4;
-pub const CAP_KILL: u32 = 5;
-pub const CAP_SETGID: u32 = 6;
-pub const CAP_SETUID: u32 = 7;
-pub const CAP_SETPCAP: u32 = 8;
-pub const CAP_LINUX_IMMUTABLE: u32 = 9;
-pub const CAP_NET_BIND_SERVICE: u32 = 10;
-pub const CAP_NET_BROADCAST: u32 = 11;
-pub const CAP_NET_ADMIN: u32 = 12;
-pub const CAP_NET_RAW: u32 = 13;
-pub const CAP_IPC_LOCK: u32 = 14;
-pub const CAP_IPC_OWNER: u32 = 15;
-pub const CAP_SYS_MODULE: u32 = 16;
-pub const CAP_SYS_RAWIO: u32 = 17;
-pub const CAP_SYS_CHROOT: u32 = 18;
-pub const CAP_SYS_PTRACE: u32 = 19;
-pub const CAP_SYS_PACCT: u32 = 20;
-pub const CAP_SYS_ADMIN: u32 = 21;
-pub const CAP_SYS_BOOT: u32 = 22;
-pub const CAP_SYS_NICE: u32 = 23;
-pub const CAP_SYS_RESOURCE: u32 = 24;
-pub const CAP_SYS_TIME: u32 = 25;
-pub const CAP_SYS_TTY_CONFIG: u32 = 26;
-pub const CAP_MKNOD: u32 = 27;
-pub const CAP_LEASE: u32 = 28;
-pub const CAP_AUDIT_WRITE: u32 = 29;
-pub const CAP_AUDIT_CONTROL: u32 = 30;
-pub const CAP_SETFCAP: u32 = 31;
-pub const CAP_MAC_OVERRIDE: u32 = 32;
-pub const CAP_MAC_ADMIN: u32 = 33;
-pub const CAP_SYSLOG: u32 = 34;
-pub const CAP_WAKE_ALARM: u32 = 35;
-pub const CAP_BLOCK_SUSPEND: u32 = 36;
-pub const CAP_AUDIT_READ: u32 = 37;
-pub const CAP_PERFMON: u32 = 38;
-pub const CAP_BPF: u32 = 39;
-pub const CAP_CHECKPOINT_RESTORE: u32 = 40;
-pub const CAP_LAST_CAP: u32 = 40;
-pub const O_ACCMODE: u32 = 3;
-pub const O_RDONLY: u32 = 0;
-pub const O_WRONLY: u32 = 1;
-pub const O_RDWR: u32 = 2;
-pub const O_CREAT: u32 = 64;
-pub const O_EXCL: u32 = 128;
-pub const O_NOCTTY: u32 = 256;
-pub const O_TRUNC: u32 = 512;
-pub const O_APPEND: u32 = 1024;
-pub const O_NONBLOCK: u32 = 2048;
-pub const O_DSYNC: u32 = 4096;
-pub const FASYNC: u32 = 8192;
-pub const O_DIRECT: u32 = 16384;
-pub const O_LARGEFILE: u32 = 32768;
-pub const O_DIRECTORY: u32 = 65536;
-pub const O_NOFOLLOW: u32 = 131072;
-pub const O_NOATIME: u32 = 262144;
-pub const O_CLOEXEC: u32 = 524288;
-pub const __O_SYNC: u32 = 1048576;
-pub const O_SYNC: u32 = 1052672;
-pub const O_PATH: u32 = 2097152;
-pub const __O_TMPFILE: u32 = 4194304;
-pub const O_TMPFILE: u32 = 4259840;
-pub const O_TMPFILE_MASK: u32 = 4259904;
-pub const O_NDELAY: u32 = 2048;
-pub const F_DUPFD: u32 = 0;
-pub const F_GETFD: u32 = 1;
-pub const F_SETFD: u32 = 2;
-pub const F_GETFL: u32 = 3;
-pub const F_SETFL: u32 = 4;
-pub const F_GETLK: u32 = 5;
-pub const F_SETLK: u32 = 6;
-pub const F_SETLKW: u32 = 7;
-pub const F_SETOWN: u32 = 8;
-pub const F_GETOWN: u32 = 9;
-pub const F_SETSIG: u32 = 10;
-pub const F_GETSIG: u32 = 11;
-pub const F_SETOWN_EX: u32 = 15;
-pub const F_GETOWN_EX: u32 = 16;
-pub const F_GETOWNER_UIDS: u32 = 17;
-pub const F_OFD_GETLK: u32 = 36;
-pub const F_OFD_SETLK: u32 = 37;
-pub const F_OFD_SETLKW: u32 = 38;
-pub const F_OWNER_TID: u32 = 0;
-pub const F_OWNER_PID: u32 = 1;
-pub const F_OWNER_PGRP: u32 = 2;
-pub const FD_CLOEXEC: u32 = 1;
-pub const F_RDLCK: u32 = 0;
-pub const F_WRLCK: u32 = 1;
-pub const F_UNLCK: u32 = 2;
-pub const F_EXLCK: u32 = 4;
-pub const F_SHLCK: u32 = 8;
-pub const LOCK_SH: u32 = 1;
-pub const LOCK_EX: u32 = 2;
-pub const LOCK_NB: u32 = 4;
-pub const LOCK_UN: u32 = 8;
-pub const LOCK_MAND: u32 = 32;
-pub const LOCK_READ: u32 = 64;
-pub const LOCK_WRITE: u32 = 128;
-pub const LOCK_RW: u32 = 192;
-pub const F_LINUX_SPECIFIC_BASE: u32 = 1024;
-pub const RESOLVE_NO_XDEV: u32 = 1;
-pub const RESOLVE_NO_MAGICLINKS: u32 = 2;
-pub const RESOLVE_NO_SYMLINKS: u32 = 4;
-pub const RESOLVE_BENEATH: u32 = 8;
-pub const RESOLVE_IN_ROOT: u32 = 16;
-pub const RESOLVE_CACHED: u32 = 32;
-pub const F_SETLEASE: u32 = 1024;
-pub const F_GETLEASE: u32 = 1025;
-pub const F_CANCELLK: u32 = 1029;
-pub const F_DUPFD_CLOEXEC: u32 = 1030;
-pub const F_NOTIFY: u32 = 1026;
-pub const F_SETPIPE_SZ: u32 = 1031;
-pub const F_GETPIPE_SZ: u32 = 1032;
-pub const F_ADD_SEALS: u32 = 1033;
-pub const F_GET_SEALS: u32 = 1034;
-pub const F_SEAL_SEAL: u32 = 1;
-pub const F_SEAL_SHRINK: u32 = 2;
-pub const F_SEAL_GROW: u32 = 4;
-pub const F_SEAL_WRITE: u32 = 8;
-pub const F_SEAL_FUTURE_WRITE: u32 = 16;
-pub const F_GET_RW_HINT: u32 = 1035;
-pub const F_SET_RW_HINT: u32 = 1036;
-pub const F_GET_FILE_RW_HINT: u32 = 1037;
-pub const F_SET_FILE_RW_HINT: u32 = 1038;
-pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const RWH_WRITE_LIFE_NONE: u32 = 1;
-pub const RWH_WRITE_LIFE_SHORT: u32 = 2;
-pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3;
-pub const RWH_WRITE_LIFE_LONG: u32 = 4;
-pub const RWH_WRITE_LIFE_EXTREME: u32 = 5;
-pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const DN_ACCESS: u32 = 1;
-pub const DN_MODIFY: u32 = 2;
-pub const DN_CREATE: u32 = 4;
-pub const DN_DELETE: u32 = 8;
-pub const DN_RENAME: u32 = 16;
-pub const DN_ATTRIB: u32 = 32;
-pub const DN_MULTISHOT: u32 = 2147483648;
-pub const AT_FDCWD: i32 = -100;
-pub const AT_SYMLINK_NOFOLLOW: u32 = 256;
-pub const AT_EACCESS: u32 = 512;
-pub const AT_REMOVEDIR: u32 = 512;
-pub const AT_SYMLINK_FOLLOW: u32 = 1024;
-pub const AT_NO_AUTOMOUNT: u32 = 2048;
-pub const AT_EMPTY_PATH: u32 = 4096;
-pub const AT_STATX_SYNC_TYPE: u32 = 24576;
-pub const AT_STATX_SYNC_AS_STAT: u32 = 0;
-pub const AT_STATX_FORCE_SYNC: u32 = 8192;
-pub const AT_STATX_DONT_SYNC: u32 = 16384;
-pub const AT_RECURSIVE: u32 = 32768;
-pub const EPOLL_CLOEXEC: u32 = 524288;
-pub const EPOLL_CTL_ADD: u32 = 1;
-pub const EPOLL_CTL_DEL: u32 = 2;
-pub const EPOLL_CTL_MOD: u32 = 3;
-pub const POSIX_FADV_NORMAL: u32 = 0;
-pub const POSIX_FADV_RANDOM: u32 = 1;
-pub const POSIX_FADV_SEQUENTIAL: u32 = 2;
-pub const POSIX_FADV_WILLNEED: u32 = 3;
-pub const POSIX_FADV_DONTNEED: u32 = 6;
-pub const POSIX_FADV_NOREUSE: u32 = 7;
-pub const FALLOC_FL_KEEP_SIZE: u32 = 1;
-pub const FALLOC_FL_PUNCH_HOLE: u32 = 2;
-pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4;
-pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8;
-pub const FALLOC_FL_ZERO_RANGE: u32 = 16;
-pub const FALLOC_FL_INSERT_RANGE: u32 = 32;
-pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64;
-pub const NR_OPEN: u32 = 1024;
-pub const NGROUPS_MAX: u32 = 65536;
-pub const ARG_MAX: u32 = 131072;
-pub const LINK_MAX: u32 = 127;
-pub const MAX_CANON: u32 = 255;
-pub const MAX_INPUT: u32 = 255;
-pub const NAME_MAX: u32 = 255;
-pub const PATH_MAX: u32 = 4096;
-pub const PIPE_BUF: u32 = 4096;
-pub const XATTR_NAME_MAX: u32 = 255;
-pub const XATTR_SIZE_MAX: u32 = 65536;
-pub const XATTR_LIST_MAX: u32 = 65536;
-pub const RTSIG_MAX: u32 = 32;
-pub const _IOC_NRBITS: u32 = 8;
-pub const _IOC_TYPEBITS: u32 = 8;
-pub const _IOC_SIZEBITS: u32 = 14;
-pub const _IOC_DIRBITS: u32 = 2;
-pub const _IOC_NRMASK: u32 = 255;
-pub const _IOC_TYPEMASK: u32 = 255;
-pub const _IOC_SIZEMASK: u32 = 16383;
-pub const _IOC_DIRMASK: u32 = 3;
-pub const _IOC_NRSHIFT: u32 = 0;
-pub const _IOC_TYPESHIFT: u32 = 8;
-pub const _IOC_SIZESHIFT: u32 = 16;
-pub const _IOC_DIRSHIFT: u32 = 30;
-pub const _IOC_NONE: u32 = 0;
-pub const _IOC_WRITE: u32 = 1;
-pub const _IOC_READ: u32 = 2;
-pub const IOC_IN: u32 = 1073741824;
-pub const IOC_OUT: u32 = 2147483648;
-pub const IOC_INOUT: u32 = 3221225472;
-pub const IOCSIZE_MASK: u32 = 1073676288;
-pub const IOCSIZE_SHIFT: u32 = 16;
-pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16;
-pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1;
-pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4;
-pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5;
-pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6;
-pub const FSCRYPT_MODE_SM4_XTS: u32 = 7;
-pub const FSCRYPT_MODE_SM4_CTS: u32 = 8;
-pub const FSCRYPT_MODE_ADIANTUM: u32 = 9;
-pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10;
-pub const FSCRYPT_POLICY_V1: u32 = 0;
-pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64;
-pub const FSCRYPT_POLICY_V2: u32 = 2;
-pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16;
-pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1;
-pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1;
-pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3;
-pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1;
-pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FS_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FS_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FS_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FS_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FS_POLICY_FLAGS_VALID: u32 = 7;
-pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0;
-pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1;
-pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2;
-pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3;
-pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4;
-pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5;
-pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6;
-pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9;
-pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FS_MAX_KEY_SIZE: u32 = 64;
-pub const MS_RDONLY: u32 = 1;
-pub const MS_NOSUID: u32 = 2;
-pub const MS_NODEV: u32 = 4;
-pub const MS_NOEXEC: u32 = 8;
-pub const MS_SYNCHRONOUS: u32 = 16;
-pub const MS_REMOUNT: u32 = 32;
-pub const MS_MANDLOCK: u32 = 64;
-pub const MS_DIRSYNC: u32 = 128;
-pub const MS_NOSYMFOLLOW: u32 = 256;
-pub const MS_NOATIME: u32 = 1024;
-pub const MS_NODIRATIME: u32 = 2048;
-pub const MS_BIND: u32 = 4096;
-pub const MS_MOVE: u32 = 8192;
-pub const MS_REC: u32 = 16384;
-pub const MS_VERBOSE: u32 = 32768;
-pub const MS_SILENT: u32 = 32768;
-pub const MS_POSIXACL: u32 = 65536;
-pub const MS_UNBINDABLE: u32 = 131072;
-pub const MS_PRIVATE: u32 = 262144;
-pub const MS_SLAVE: u32 = 524288;
-pub const MS_SHARED: u32 = 1048576;
-pub const MS_RELATIME: u32 = 2097152;
-pub const MS_KERNMOUNT: u32 = 4194304;
-pub const MS_I_VERSION: u32 = 8388608;
-pub const MS_STRICTATIME: u32 = 16777216;
-pub const MS_LAZYTIME: u32 = 33554432;
-pub const MS_SUBMOUNT: u32 = 67108864;
-pub const MS_NOREMOTELOCK: u32 = 134217728;
-pub const MS_NOSEC: u32 = 268435456;
-pub const MS_BORN: u32 = 536870912;
-pub const MS_ACTIVE: u32 = 1073741824;
-pub const MS_NOUSER: u32 = 2147483648;
-pub const MS_RMT_MASK: u32 = 41943121;
-pub const MS_MGC_VAL: u32 = 3236757504;
-pub const MS_MGC_MSK: u32 = 4294901760;
-pub const OPEN_TREE_CLONE: u32 = 1;
-pub const OPEN_TREE_CLOEXEC: u32 = 524288;
-pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1;
-pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2;
-pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4;
-pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16;
-pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32;
-pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64;
-pub const MOVE_MOUNT_SET_GROUP: u32 = 256;
-pub const MOVE_MOUNT__MASK: u32 = 375;
-pub const FSOPEN_CLOEXEC: u32 = 1;
-pub const FSPICK_CLOEXEC: u32 = 1;
-pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2;
-pub const FSPICK_NO_AUTOMOUNT: u32 = 4;
-pub const FSPICK_EMPTY_PATH: u32 = 8;
-pub const FSMOUNT_CLOEXEC: u32 = 1;
-pub const MOUNT_ATTR_RDONLY: u32 = 1;
-pub const MOUNT_ATTR_NOSUID: u32 = 2;
-pub const MOUNT_ATTR_NODEV: u32 = 4;
-pub const MOUNT_ATTR_NOEXEC: u32 = 8;
-pub const MOUNT_ATTR__ATIME: u32 = 112;
-pub const MOUNT_ATTR_RELATIME: u32 = 0;
-pub const MOUNT_ATTR_NOATIME: u32 = 16;
-pub const MOUNT_ATTR_STRICTATIME: u32 = 32;
-pub const MOUNT_ATTR_NODIRATIME: u32 = 128;
-pub const MOUNT_ATTR_IDMAP: u32 = 1048576;
-pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152;
-pub const MOUNT_ATTR_SIZE_VER0: u32 = 32;
-pub const INR_OPEN_CUR: u32 = 1024;
-pub const INR_OPEN_MAX: u32 = 4096;
-pub const BLOCK_SIZE_BITS: u32 = 10;
-pub const BLOCK_SIZE: u32 = 1024;
-pub const SEEK_SET: u32 = 0;
-pub const SEEK_CUR: u32 = 1;
-pub const SEEK_END: u32 = 2;
-pub const SEEK_DATA: u32 = 3;
-pub const SEEK_HOLE: u32 = 4;
-pub const SEEK_MAX: u32 = 4;
-pub const RENAME_NOREPLACE: u32 = 1;
-pub const RENAME_EXCHANGE: u32 = 2;
-pub const RENAME_WHITEOUT: u32 = 4;
-pub const FILE_DEDUPE_RANGE_SAME: u32 = 0;
-pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1;
-pub const NR_FILE: u32 = 8192;
-pub const FS_XFLAG_REALTIME: u32 = 1;
-pub const FS_XFLAG_PREALLOC: u32 = 2;
-pub const FS_XFLAG_IMMUTABLE: u32 = 8;
-pub const FS_XFLAG_APPEND: u32 = 16;
-pub const FS_XFLAG_SYNC: u32 = 32;
-pub const FS_XFLAG_NOATIME: u32 = 64;
-pub const FS_XFLAG_NODUMP: u32 = 128;
-pub const FS_XFLAG_RTINHERIT: u32 = 256;
-pub const FS_XFLAG_PROJINHERIT: u32 = 512;
-pub const FS_XFLAG_NOSYMLINKS: u32 = 1024;
-pub const FS_XFLAG_EXTSIZE: u32 = 2048;
-pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096;
-pub const FS_XFLAG_NODEFRAG: u32 = 8192;
-pub const FS_XFLAG_FILESTREAM: u32 = 16384;
-pub const FS_XFLAG_DAX: u32 = 32768;
-pub const FS_XFLAG_COWEXTSIZE: u32 = 65536;
-pub const FS_XFLAG_HASATTR: u32 = 2147483648;
-pub const BMAP_IOCTL: u32 = 1;
-pub const FSLABEL_MAX: u32 = 256;
-pub const FS_SECRM_FL: u32 = 1;
-pub const FS_UNRM_FL: u32 = 2;
-pub const FS_COMPR_FL: u32 = 4;
-pub const FS_SYNC_FL: u32 = 8;
-pub const FS_IMMUTABLE_FL: u32 = 16;
-pub const FS_APPEND_FL: u32 = 32;
-pub const FS_NODUMP_FL: u32 = 64;
-pub const FS_NOATIME_FL: u32 = 128;
-pub const FS_DIRTY_FL: u32 = 256;
-pub const FS_COMPRBLK_FL: u32 = 512;
-pub const FS_NOCOMP_FL: u32 = 1024;
-pub const FS_ENCRYPT_FL: u32 = 2048;
-pub const FS_BTREE_FL: u32 = 4096;
-pub const FS_INDEX_FL: u32 = 4096;
-pub const FS_IMAGIC_FL: u32 = 8192;
-pub const FS_JOURNAL_DATA_FL: u32 = 16384;
-pub const FS_NOTAIL_FL: u32 = 32768;
-pub const FS_DIRSYNC_FL: u32 = 65536;
-pub const FS_TOPDIR_FL: u32 = 131072;
-pub const FS_HUGE_FILE_FL: u32 = 262144;
-pub const FS_EXTENT_FL: u32 = 524288;
-pub const FS_VERITY_FL: u32 = 1048576;
-pub const FS_EA_INODE_FL: u32 = 2097152;
-pub const FS_EOFBLOCKS_FL: u32 = 4194304;
-pub const FS_NOCOW_FL: u32 = 8388608;
-pub const FS_DAX_FL: u32 = 33554432;
-pub const FS_INLINE_DATA_FL: u32 = 268435456;
-pub const FS_PROJINHERIT_FL: u32 = 536870912;
-pub const FS_CASEFOLD_FL: u32 = 1073741824;
-pub const FS_RESERVED_FL: u32 = 2147483648;
-pub const FS_FL_USER_VISIBLE: u32 = 253951;
-pub const FS_FL_USER_MODIFIABLE: u32 = 229631;
-pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1;
-pub const SYNC_FILE_RANGE_WRITE: u32 = 2;
-pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4;
-pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7;
-pub const FUTEX_WAIT: u32 = 0;
-pub const FUTEX_WAKE: u32 = 1;
-pub const FUTEX_FD: u32 = 2;
-pub const FUTEX_REQUEUE: u32 = 3;
-pub const FUTEX_CMP_REQUEUE: u32 = 4;
-pub const FUTEX_WAKE_OP: u32 = 5;
-pub const FUTEX_LOCK_PI: u32 = 6;
-pub const FUTEX_UNLOCK_PI: u32 = 7;
-pub const FUTEX_TRYLOCK_PI: u32 = 8;
-pub const FUTEX_WAIT_BITSET: u32 = 9;
-pub const FUTEX_WAKE_BITSET: u32 = 10;
-pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11;
-pub const FUTEX_CMP_REQUEUE_PI: u32 = 12;
-pub const FUTEX_LOCK_PI2: u32 = 13;
-pub const FUTEX_PRIVATE_FLAG: u32 = 128;
-pub const FUTEX_CLOCK_REALTIME: u32 = 256;
-pub const FUTEX_CMD_MASK: i32 = -385;
-pub const FUTEX_WAIT_PRIVATE: u32 = 128;
-pub const FUTEX_WAKE_PRIVATE: u32 = 129;
-pub const FUTEX_REQUEUE_PRIVATE: u32 = 131;
-pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132;
-pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133;
-pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134;
-pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141;
-pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135;
-pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136;
-pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137;
-pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138;
-pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139;
-pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140;
-pub const FUTEX_32: u32 = 2;
-pub const FUTEX_WAITV_MAX: u32 = 128;
-pub const FUTEX_WAITERS: u32 = 2147483648;
-pub const FUTEX_OWNER_DIED: u32 = 1073741824;
-pub const FUTEX_TID_MASK: u32 = 1073741823;
-pub const ROBUST_LIST_LIMIT: u32 = 2048;
-pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295;
-pub const FUTEX_OP_SET: u32 = 0;
-pub const FUTEX_OP_ADD: u32 = 1;
-pub const FUTEX_OP_OR: u32 = 2;
-pub const FUTEX_OP_ANDN: u32 = 3;
-pub const FUTEX_OP_XOR: u32 = 4;
-pub const FUTEX_OP_OPARG_SHIFT: u32 = 8;
-pub const FUTEX_OP_CMP_EQ: u32 = 0;
-pub const FUTEX_OP_CMP_NE: u32 = 1;
-pub const FUTEX_OP_CMP_LT: u32 = 2;
-pub const FUTEX_OP_CMP_LE: u32 = 3;
-pub const FUTEX_OP_CMP_GT: u32 = 4;
-pub const FUTEX_OP_CMP_GE: u32 = 5;
-pub const __UAPI_DEF_IF_IFCONF: u32 = 1;
-pub const __UAPI_DEF_IF_IFMAP: u32 = 1;
-pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1;
-pub const __UAPI_DEF_IF_IFREQ: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1;
-pub const __UAPI_DEF_IN_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN_IPPROTO: u32 = 1;
-pub const __UAPI_DEF_IN_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP_MREQ: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1;
-pub const __UAPI_DEF_IN_CLASS: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1;
-pub const __UAPI_DEF_IPV6_MREQ: u32 = 1;
-pub const __UAPI_DEF_IPPROTO_V6: u32 = 1;
-pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1;
-pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1;
-pub const __UAPI_DEF_XATTR: u32 = 1;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const IP_TOS: u32 = 1;
-pub const IP_TTL: u32 = 2;
-pub const IP_HDRINCL: u32 = 3;
-pub const IP_OPTIONS: u32 = 4;
-pub const IP_ROUTER_ALERT: u32 = 5;
-pub const IP_RECVOPTS: u32 = 6;
-pub const IP_RETOPTS: u32 = 7;
-pub const IP_PKTINFO: u32 = 8;
-pub const IP_PKTOPTIONS: u32 = 9;
-pub const IP_MTU_DISCOVER: u32 = 10;
-pub const IP_RECVERR: u32 = 11;
-pub const IP_RECVTTL: u32 = 12;
-pub const IP_RECVTOS: u32 = 13;
-pub const IP_MTU: u32 = 14;
-pub const IP_FREEBIND: u32 = 15;
-pub const IP_IPSEC_POLICY: u32 = 16;
-pub const IP_XFRM_POLICY: u32 = 17;
-pub const IP_PASSSEC: u32 = 18;
-pub const IP_TRANSPARENT: u32 = 19;
-pub const IP_RECVRETOPTS: u32 = 7;
-pub const IP_ORIGDSTADDR: u32 = 20;
-pub const IP_RECVORIGDSTADDR: u32 = 20;
-pub const IP_MINTTL: u32 = 21;
-pub const IP_NODEFRAG: u32 = 22;
-pub const IP_CHECKSUM: u32 = 23;
-pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24;
-pub const IP_RECVFRAGSIZE: u32 = 25;
-pub const IP_RECVERR_RFC4884: u32 = 26;
-pub const IP_PMTUDISC_DONT: u32 = 0;
-pub const IP_PMTUDISC_WANT: u32 = 1;
-pub const IP_PMTUDISC_DO: u32 = 2;
-pub const IP_PMTUDISC_PROBE: u32 = 3;
-pub const IP_PMTUDISC_INTERFACE: u32 = 4;
-pub const IP_PMTUDISC_OMIT: u32 = 5;
-pub const IP_MULTICAST_IF: u32 = 32;
-pub const IP_MULTICAST_TTL: u32 = 33;
-pub const IP_MULTICAST_LOOP: u32 = 34;
-pub const IP_ADD_MEMBERSHIP: u32 = 35;
-pub const IP_DROP_MEMBERSHIP: u32 = 36;
-pub const IP_UNBLOCK_SOURCE: u32 = 37;
-pub const IP_BLOCK_SOURCE: u32 = 38;
-pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39;
-pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40;
-pub const IP_MSFILTER: u32 = 41;
-pub const MCAST_JOIN_GROUP: u32 = 42;
-pub const MCAST_BLOCK_SOURCE: u32 = 43;
-pub const MCAST_UNBLOCK_SOURCE: u32 = 44;
-pub const MCAST_LEAVE_GROUP: u32 = 45;
-pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46;
-pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47;
-pub const MCAST_MSFILTER: u32 = 48;
-pub const IP_MULTICAST_ALL: u32 = 49;
-pub const IP_UNICAST_IF: u32 = 50;
-pub const MCAST_EXCLUDE: u32 = 0;
-pub const MCAST_INCLUDE: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1;
-pub const __SOCK_SIZE__: u32 = 16;
-pub const IN_CLASSA_NET: u32 = 4278190080;
-pub const IN_CLASSA_NSHIFT: u32 = 24;
-pub const IN_CLASSA_HOST: u32 = 16777215;
-pub const IN_CLASSA_MAX: u32 = 128;
-pub const IN_CLASSB_NET: u32 = 4294901760;
-pub const IN_CLASSB_NSHIFT: u32 = 16;
-pub const IN_CLASSB_HOST: u32 = 65535;
-pub const IN_CLASSB_MAX: u32 = 65536;
-pub const IN_CLASSC_NET: u32 = 4294967040;
-pub const IN_CLASSC_NSHIFT: u32 = 8;
-pub const IN_CLASSC_HOST: u32 = 255;
-pub const IN_MULTICAST_NET: u32 = 3758096384;
-pub const IN_CLASSE_NET: u32 = 4294967295;
-pub const IN_CLASSE_NSHIFT: u32 = 0;
-pub const IN_LOOPBACKNET: u32 = 127;
-pub const INADDR_LOOPBACK: u32 = 2130706433;
-pub const INADDR_UNSPEC_GROUP: u32 = 3758096384;
-pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385;
-pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386;
-pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490;
-pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639;
-pub const __BIG_ENDIAN: u32 = 4321;
-pub const IN_ACCESS: u32 = 1;
-pub const IN_MODIFY: u32 = 2;
-pub const IN_ATTRIB: u32 = 4;
-pub const IN_CLOSE_WRITE: u32 = 8;
-pub const IN_CLOSE_NOWRITE: u32 = 16;
-pub const IN_OPEN: u32 = 32;
-pub const IN_MOVED_FROM: u32 = 64;
-pub const IN_MOVED_TO: u32 = 128;
-pub const IN_CREATE: u32 = 256;
-pub const IN_DELETE: u32 = 512;
-pub const IN_DELETE_SELF: u32 = 1024;
-pub const IN_MOVE_SELF: u32 = 2048;
-pub const IN_UNMOUNT: u32 = 8192;
-pub const IN_Q_OVERFLOW: u32 = 16384;
-pub const IN_IGNORED: u32 = 32768;
-pub const IN_CLOSE: u32 = 24;
-pub const IN_MOVE: u32 = 192;
-pub const IN_ONLYDIR: u32 = 16777216;
-pub const IN_DONT_FOLLOW: u32 = 33554432;
-pub const IN_EXCL_UNLINK: u32 = 67108864;
-pub const IN_MASK_CREATE: u32 = 268435456;
-pub const IN_MASK_ADD: u32 = 536870912;
-pub const IN_ISDIR: u32 = 1073741824;
-pub const IN_ONESHOT: u32 = 2147483648;
-pub const IN_ALL_EVENTS: u32 = 4095;
-pub const IN_CLOEXEC: u32 = 524288;
-pub const IN_NONBLOCK: u32 = 2048;
-pub const IPTOS_TOS_MASK: u32 = 30;
-pub const IPTOS_LOWDELAY: u32 = 16;
-pub const IPTOS_THROUGHPUT: u32 = 8;
-pub const IPTOS_RELIABILITY: u32 = 4;
-pub const IPTOS_MINCOST: u32 = 2;
-pub const IPTOS_PREC_MASK: u32 = 224;
-pub const IPTOS_PREC_NETCONTROL: u32 = 224;
-pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192;
-pub const IPTOS_PREC_CRITIC_ECP: u32 = 160;
-pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128;
-pub const IPTOS_PREC_FLASH: u32 = 96;
-pub const IPTOS_PREC_IMMEDIATE: u32 = 64;
-pub const IPTOS_PREC_PRIORITY: u32 = 32;
-pub const IPTOS_PREC_ROUTINE: u32 = 0;
-pub const IPOPT_COPY: u32 = 128;
-pub const IPOPT_CLASS_MASK: u32 = 96;
-pub const IPOPT_NUMBER_MASK: u32 = 31;
-pub const IPOPT_CONTROL: u32 = 0;
-pub const IPOPT_RESERVED1: u32 = 32;
-pub const IPOPT_MEASUREMENT: u32 = 64;
-pub const IPOPT_RESERVED2: u32 = 96;
-pub const IPOPT_END: u32 = 0;
-pub const IPOPT_NOOP: u32 = 1;
-pub const IPOPT_SEC: u32 = 130;
-pub const IPOPT_LSRR: u32 = 131;
-pub const IPOPT_TIMESTAMP: u32 = 68;
-pub const IPOPT_CIPSO: u32 = 134;
-pub const IPOPT_RR: u32 = 7;
-pub const IPOPT_SID: u32 = 136;
-pub const IPOPT_SSRR: u32 = 137;
-pub const IPOPT_RA: u32 = 148;
-pub const IPVERSION: u32 = 4;
-pub const MAXTTL: u32 = 255;
-pub const IPDEFTTL: u32 = 64;
-pub const IPOPT_OPTVAL: u32 = 0;
-pub const IPOPT_OLEN: u32 = 1;
-pub const IPOPT_OFFSET: u32 = 2;
-pub const IPOPT_MINOFF: u32 = 4;
-pub const MAX_IPOPTLEN: u32 = 40;
-pub const IPOPT_NOP: u32 = 1;
-pub const IPOPT_EOL: u32 = 0;
-pub const IPOPT_TS: u32 = 68;
-pub const IPOPT_TS_TSONLY: u32 = 0;
-pub const IPOPT_TS_TSANDADDR: u32 = 1;
-pub const IPOPT_TS_PRESPEC: u32 = 3;
-pub const IPV4_BEET_PHMAXLEN: u32 = 8;
-pub const IPV6_FL_A_GET: u32 = 0;
-pub const IPV6_FL_A_PUT: u32 = 1;
-pub const IPV6_FL_A_RENEW: u32 = 2;
-pub const IPV6_FL_F_CREATE: u32 = 1;
-pub const IPV6_FL_F_EXCL: u32 = 2;
-pub const IPV6_FL_F_REFLECT: u32 = 4;
-pub const IPV6_FL_F_REMOTE: u32 = 8;
-pub const IPV6_FL_S_NONE: u32 = 0;
-pub const IPV6_FL_S_EXCL: u32 = 1;
-pub const IPV6_FL_S_PROCESS: u32 = 2;
-pub const IPV6_FL_S_USER: u32 = 3;
-pub const IPV6_FL_S_ANY: u32 = 255;
-pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575;
-pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880;
-pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0;
-pub const IPV6_PRIORITY_FILLER: u32 = 256;
-pub const IPV6_PRIORITY_UNATTENDED: u32 = 512;
-pub const IPV6_PRIORITY_RESERVED1: u32 = 768;
-pub const IPV6_PRIORITY_BULK: u32 = 1024;
-pub const IPV6_PRIORITY_RESERVED2: u32 = 1280;
-pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536;
-pub const IPV6_PRIORITY_CONTROL: u32 = 1792;
-pub const IPV6_PRIORITY_8: u32 = 2048;
-pub const IPV6_PRIORITY_9: u32 = 2304;
-pub const IPV6_PRIORITY_10: u32 = 2560;
-pub const IPV6_PRIORITY_11: u32 = 2816;
-pub const IPV6_PRIORITY_12: u32 = 3072;
-pub const IPV6_PRIORITY_13: u32 = 3328;
-pub const IPV6_PRIORITY_14: u32 = 3584;
-pub const IPV6_PRIORITY_15: u32 = 3840;
-pub const IPPROTO_HOPOPTS: u32 = 0;
-pub const IPPROTO_ROUTING: u32 = 43;
-pub const IPPROTO_FRAGMENT: u32 = 44;
-pub const IPPROTO_ICMPV6: u32 = 58;
-pub const IPPROTO_NONE: u32 = 59;
-pub const IPPROTO_DSTOPTS: u32 = 60;
-pub const IPPROTO_MH: u32 = 135;
-pub const IPV6_TLV_PAD1: u32 = 0;
-pub const IPV6_TLV_PADN: u32 = 1;
-pub const IPV6_TLV_ROUTERALERT: u32 = 5;
-pub const IPV6_TLV_CALIPSO: u32 = 7;
-pub const IPV6_TLV_IOAM: u32 = 49;
-pub const IPV6_TLV_JUMBO: u32 = 194;
-pub const IPV6_TLV_HAO: u32 = 201;
-pub const IPV6_ADDRFORM: u32 = 1;
-pub const IPV6_2292PKTINFO: u32 = 2;
-pub const IPV6_2292HOPOPTS: u32 = 3;
-pub const IPV6_2292DSTOPTS: u32 = 4;
-pub const IPV6_2292RTHDR: u32 = 5;
-pub const IPV6_2292PKTOPTIONS: u32 = 6;
-pub const IPV6_CHECKSUM: u32 = 7;
-pub const IPV6_2292HOPLIMIT: u32 = 8;
-pub const IPV6_NEXTHOP: u32 = 9;
-pub const IPV6_AUTHHDR: u32 = 10;
-pub const IPV6_FLOWINFO: u32 = 11;
-pub const IPV6_UNICAST_HOPS: u32 = 16;
-pub const IPV6_MULTICAST_IF: u32 = 17;
-pub const IPV6_MULTICAST_HOPS: u32 = 18;
-pub const IPV6_MULTICAST_LOOP: u32 = 19;
-pub const IPV6_ADD_MEMBERSHIP: u32 = 20;
-pub const IPV6_DROP_MEMBERSHIP: u32 = 21;
-pub const IPV6_ROUTER_ALERT: u32 = 22;
-pub const IPV6_MTU_DISCOVER: u32 = 23;
-pub const IPV6_MTU: u32 = 24;
-pub const IPV6_RECVERR: u32 = 25;
-pub const IPV6_V6ONLY: u32 = 26;
-pub const IPV6_JOIN_ANYCAST: u32 = 27;
-pub const IPV6_LEAVE_ANYCAST: u32 = 28;
-pub const IPV6_MULTICAST_ALL: u32 = 29;
-pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30;
-pub const IPV6_RECVERR_RFC4884: u32 = 31;
-pub const IPV6_PMTUDISC_DONT: u32 = 0;
-pub const IPV6_PMTUDISC_WANT: u32 = 1;
-pub const IPV6_PMTUDISC_DO: u32 = 2;
-pub const IPV6_PMTUDISC_PROBE: u32 = 3;
-pub const IPV6_PMTUDISC_INTERFACE: u32 = 4;
-pub const IPV6_PMTUDISC_OMIT: u32 = 5;
-pub const IPV6_FLOWLABEL_MGR: u32 = 32;
-pub const IPV6_FLOWINFO_SEND: u32 = 33;
-pub const IPV6_IPSEC_POLICY: u32 = 34;
-pub const IPV6_XFRM_POLICY: u32 = 35;
-pub const IPV6_HDRINCL: u32 = 36;
-pub const IPV6_RECVPKTINFO: u32 = 49;
-pub const IPV6_PKTINFO: u32 = 50;
-pub const IPV6_RECVHOPLIMIT: u32 = 51;
-pub const IPV6_HOPLIMIT: u32 = 52;
-pub const IPV6_RECVHOPOPTS: u32 = 53;
-pub const IPV6_HOPOPTS: u32 = 54;
-pub const IPV6_RTHDRDSTOPTS: u32 = 55;
-pub const IPV6_RECVRTHDR: u32 = 56;
-pub const IPV6_RTHDR: u32 = 57;
-pub const IPV6_RECVDSTOPTS: u32 = 58;
-pub const IPV6_DSTOPTS: u32 = 59;
-pub const IPV6_RECVPATHMTU: u32 = 60;
-pub const IPV6_PATHMTU: u32 = 61;
-pub const IPV6_DONTFRAG: u32 = 62;
-pub const IPV6_RECVTCLASS: u32 = 66;
-pub const IPV6_TCLASS: u32 = 67;
-pub const IPV6_AUTOFLOWLABEL: u32 = 70;
-pub const IPV6_ADDR_PREFERENCES: u32 = 72;
-pub const IPV6_PREFER_SRC_TMP: u32 = 1;
-pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2;
-pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256;
-pub const IPV6_PREFER_SRC_COA: u32 = 4;
-pub const IPV6_PREFER_SRC_HOME: u32 = 1024;
-pub const IPV6_PREFER_SRC_CGA: u32 = 8;
-pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048;
-pub const IPV6_MINHOPCOUNT: u32 = 73;
-pub const IPV6_ORIGDSTADDR: u32 = 74;
-pub const IPV6_RECVORIGDSTADDR: u32 = 74;
-pub const IPV6_TRANSPARENT: u32 = 75;
-pub const IPV6_UNICAST_IF: u32 = 76;
-pub const IPV6_RECVFRAGSIZE: u32 = 77;
-pub const IPV6_FREEBIND: u32 = 78;
-pub const IPV6_MIN_MTU: u32 = 1280;
-pub const IPV6_SRCRT_STRICT: u32 = 1;
-pub const IPV6_SRCRT_TYPE_0: u32 = 0;
-pub const IPV6_SRCRT_TYPE_2: u32 = 2;
-pub const IPV6_SRCRT_TYPE_3: u32 = 3;
-pub const IPV6_SRCRT_TYPE_4: u32 = 4;
-pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0;
-pub const ADFS_SUPER_MAGIC: u32 = 44533;
-pub const AFFS_SUPER_MAGIC: u32 = 44543;
-pub const AFS_SUPER_MAGIC: u32 = 1397113167;
-pub const AUTOFS_SUPER_MAGIC: u32 = 391;
-pub const CEPH_SUPER_MAGIC: u32 = 12805120;
-pub const CODA_SUPER_MAGIC: u32 = 1937076805;
-pub const CRAMFS_MAGIC: u32 = 684539205;
-pub const CRAMFS_MAGIC_WEND: u32 = 1161678120;
-pub const DEBUGFS_MAGIC: u32 = 1684170528;
-pub const SECURITYFS_MAGIC: u32 = 1935894131;
-pub const SELINUX_MAGIC: u32 = 4185718668;
-pub const SMACK_MAGIC: u32 = 1128357203;
-pub const RAMFS_MAGIC: u32 = 2240043254;
-pub const TMPFS_MAGIC: u32 = 16914836;
-pub const HUGETLBFS_MAGIC: u32 = 2508478710;
-pub const SQUASHFS_MAGIC: u32 = 1936814952;
-pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791;
-pub const EFS_SUPER_MAGIC: u32 = 4278867;
-pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530;
-pub const EXT2_SUPER_MAGIC: u32 = 61267;
-pub const EXT3_SUPER_MAGIC: u32 = 61267;
-pub const XENFS_SUPER_MAGIC: u32 = 2881100148;
-pub const EXT4_SUPER_MAGIC: u32 = 61267;
-pub const BTRFS_SUPER_MAGIC: u32 = 2435016766;
-pub const NILFS_SUPER_MAGIC: u32 = 13364;
-pub const F2FS_SUPER_MAGIC: u32 = 4076150800;
-pub const HPFS_SUPER_MAGIC: u32 = 4187351113;
-pub const ISOFS_SUPER_MAGIC: u32 = 38496;
-pub const JFFS2_SUPER_MAGIC: u32 = 29366;
-pub const XFS_SUPER_MAGIC: u32 = 1481003842;
-pub const PSTOREFS_MAGIC: u32 = 1634035564;
-pub const EFIVARFS_MAGIC: u32 = 3730735588;
-pub const HOSTFS_SUPER_MAGIC: u32 = 12648430;
-pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128;
-pub const FUSE_SUPER_MAGIC: u32 = 1702057286;
-pub const MINIX_SUPER_MAGIC: u32 = 4991;
-pub const MINIX_SUPER_MAGIC2: u32 = 5007;
-pub const MINIX2_SUPER_MAGIC: u32 = 9320;
-pub const MINIX2_SUPER_MAGIC2: u32 = 9336;
-pub const MINIX3_SUPER_MAGIC: u32 = 19802;
-pub const MSDOS_SUPER_MAGIC: u32 = 19780;
-pub const EXFAT_SUPER_MAGIC: u32 = 538032816;
-pub const NCP_SUPER_MAGIC: u32 = 22092;
-pub const NFS_SUPER_MAGIC: u32 = 26985;
-pub const OCFS2_SUPER_MAGIC: u32 = 1952539503;
-pub const OPENPROM_SUPER_MAGIC: u32 = 40865;
-pub const QNX4_SUPER_MAGIC: u32 = 47;
-pub const QNX6_SUPER_MAGIC: u32 = 1746473250;
-pub const AFS_FS_MAGIC: u32 = 1799439955;
-pub const REISERFS_SUPER_MAGIC: u32 = 1382369651;
-pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0";
-pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0";
-pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0";
-pub const SMB_SUPER_MAGIC: u32 = 20859;
-pub const CIFS_SUPER_MAGIC: u32 = 4283649346;
-pub const SMB2_SUPER_MAGIC: u32 = 4266872130;
-pub const CGROUP_SUPER_MAGIC: u32 = 2613483;
-pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888;
-pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209;
-pub const STACK_END_MAGIC: u32 = 1470918301;
-pub const TRACEFS_MAGIC: u32 = 1953653091;
-pub const V9FS_MAGIC: u32 = 16914839;
-pub const BDEVFS_MAGIC: u32 = 1650746742;
-pub const DAXFS_MAGIC: u32 = 1684300152;
-pub const BINFMTFS_MAGIC: u32 = 1112100429;
-pub const DEVPTS_SUPER_MAGIC: u32 = 7377;
-pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352;
-pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762;
-pub const PIPEFS_MAGIC: u32 = 1346981957;
-pub const PROC_SUPER_MAGIC: u32 = 40864;
-pub const SOCKFS_MAGIC: u32 = 1397703499;
-pub const SYSFS_MAGIC: u32 = 1650812274;
-pub const USBDEVICE_SUPER_MAGIC: u32 = 40866;
-pub const MTD_INODE_FS_MAGIC: u32 = 288389204;
-pub const ANON_INODE_FS_MAGIC: u32 = 151263540;
-pub const BTRFS_TEST_MAGIC: u32 = 1936880249;
-pub const NSFS_MAGIC: u32 = 1853056627;
-pub const BPF_FS_MAGIC: u32 = 3405662737;
-pub const AAFS_MAGIC: u32 = 1513908720;
-pub const ZONEFS_MAGIC: u32 = 1515144787;
-pub const UDF_SUPER_MAGIC: u32 = 352400198;
-pub const DMA_BUF_MAGIC: u32 = 1145913666;
-pub const DEVMEM_MAGIC: u32 = 1162691661;
-pub const SECRETMEM_MAGIC: u32 = 1397048141;
-pub const PROT_READ: u32 = 1;
-pub const PROT_WRITE: u32 = 2;
-pub const PROT_EXEC: u32 = 4;
-pub const PROT_SEM: u32 = 8;
-pub const PROT_NONE: u32 = 0;
-pub const PROT_GROWSDOWN: u32 = 16777216;
-pub const PROT_GROWSUP: u32 = 33554432;
-pub const MAP_TYPE: u32 = 15;
-pub const MAP_FIXED: u32 = 16;
-pub const MAP_ANONYMOUS: u32 = 32;
-pub const MAP_POPULATE: u32 = 32768;
-pub const MAP_NONBLOCK: u32 = 65536;
-pub const MAP_STACK: u32 = 131072;
-pub const MAP_HUGETLB: u32 = 262144;
-pub const MAP_SYNC: u32 = 524288;
-pub const MAP_FIXED_NOREPLACE: u32 = 1048576;
-pub const MAP_UNINITIALIZED: u32 = 67108864;
-pub const MLOCK_ONFAULT: u32 = 1;
-pub const MS_ASYNC: u32 = 1;
-pub const MS_INVALIDATE: u32 = 2;
-pub const MS_SYNC: u32 = 4;
-pub const MADV_NORMAL: u32 = 0;
-pub const MADV_RANDOM: u32 = 1;
-pub const MADV_SEQUENTIAL: u32 = 2;
-pub const MADV_WILLNEED: u32 = 3;
-pub const MADV_DONTNEED: u32 = 4;
-pub const MADV_FREE: u32 = 8;
-pub const MADV_REMOVE: u32 = 9;
-pub const MADV_DONTFORK: u32 = 10;
-pub const MADV_DOFORK: u32 = 11;
-pub const MADV_HWPOISON: u32 = 100;
-pub const MADV_SOFT_OFFLINE: u32 = 101;
-pub const MADV_MERGEABLE: u32 = 12;
-pub const MADV_UNMERGEABLE: u32 = 13;
-pub const MADV_HUGEPAGE: u32 = 14;
-pub const MADV_NOHUGEPAGE: u32 = 15;
-pub const MADV_DONTDUMP: u32 = 16;
-pub const MADV_DODUMP: u32 = 17;
-pub const MADV_WIPEONFORK: u32 = 18;
-pub const MADV_KEEPONFORK: u32 = 19;
-pub const MADV_COLD: u32 = 20;
-pub const MADV_PAGEOUT: u32 = 21;
-pub const MADV_POPULATE_READ: u32 = 22;
-pub const MADV_POPULATE_WRITE: u32 = 23;
-pub const MADV_DONTNEED_LOCKED: u32 = 24;
-pub const MADV_COLLAPSE: u32 = 25;
-pub const MAP_FILE: u32 = 0;
-pub const PKEY_DISABLE_ACCESS: u32 = 1;
-pub const PKEY_DISABLE_WRITE: u32 = 2;
-pub const PKEY_ACCESS_MASK: u32 = 3;
-pub const MAP_GROWSDOWN: u32 = 256;
-pub const MAP_DENYWRITE: u32 = 2048;
-pub const MAP_EXECUTABLE: u32 = 4096;
-pub const MAP_LOCKED: u32 = 8192;
-pub const MAP_NORESERVE: u32 = 16384;
-pub const MCL_CURRENT: u32 = 1;
-pub const MCL_FUTURE: u32 = 2;
-pub const MCL_ONFAULT: u32 = 4;
-pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26;
-pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63;
-pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096;
-pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824;
-pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416;
-pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280;
-pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144;
-pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872;
-pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736;
-pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600;
-pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192;
-pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056;
-pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920;
-pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784;
-pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376;
-pub const MREMAP_MAYMOVE: u32 = 1;
-pub const MREMAP_FIXED: u32 = 2;
-pub const MREMAP_DONTUNMAP: u32 = 4;
-pub const OVERCOMMIT_GUESS: u32 = 0;
-pub const OVERCOMMIT_ALWAYS: u32 = 1;
-pub const OVERCOMMIT_NEVER: u32 = 2;
-pub const MAP_SHARED: u32 = 1;
-pub const MAP_PRIVATE: u32 = 2;
-pub const MAP_SHARED_VALIDATE: u32 = 3;
-pub const MAP_HUGE_SHIFT: u32 = 26;
-pub const MAP_HUGE_MASK: u32 = 63;
-pub const MAP_HUGE_16KB: u32 = 939524096;
-pub const MAP_HUGE_64KB: u32 = 1073741824;
-pub const MAP_HUGE_512KB: u32 = 1275068416;
-pub const MAP_HUGE_1MB: u32 = 1342177280;
-pub const MAP_HUGE_2MB: u32 = 1409286144;
-pub const MAP_HUGE_8MB: u32 = 1543503872;
-pub const MAP_HUGE_16MB: u32 = 1610612736;
-pub const MAP_HUGE_32MB: u32 = 1677721600;
-pub const MAP_HUGE_256MB: u32 = 1879048192;
-pub const MAP_HUGE_512MB: u32 = 1946157056;
-pub const MAP_HUGE_1GB: u32 = 2013265920;
-pub const MAP_HUGE_2GB: u32 = 2080374784;
-pub const MAP_HUGE_16GB: u32 = 2281701376;
-pub const SIOCGSTAMP_OLD: u32 = 35078;
-pub const SIOCGSTAMPNS_OLD: u32 = 35079;
-pub const SOL_SOCKET: u32 = 1;
-pub const SO_DEBUG: u32 = 1;
-pub const SO_REUSEADDR: u32 = 2;
-pub const SO_TYPE: u32 = 3;
-pub const SO_ERROR: u32 = 4;
-pub const SO_DONTROUTE: u32 = 5;
-pub const SO_BROADCAST: u32 = 6;
-pub const SO_SNDBUF: u32 = 7;
-pub const SO_RCVBUF: u32 = 8;
-pub const SO_SNDBUFFORCE: u32 = 32;
-pub const SO_RCVBUFFORCE: u32 = 33;
-pub const SO_KEEPALIVE: u32 = 9;
-pub const SO_OOBINLINE: u32 = 10;
-pub const SO_NO_CHECK: u32 = 11;
-pub const SO_PRIORITY: u32 = 12;
-pub const SO_LINGER: u32 = 13;
-pub const SO_BSDCOMPAT: u32 = 14;
-pub const SO_REUSEPORT: u32 = 15;
-pub const SO_PASSCRED: u32 = 16;
-pub const SO_PEERCRED: u32 = 17;
-pub const SO_RCVLOWAT: u32 = 18;
-pub const SO_SNDLOWAT: u32 = 19;
-pub const SO_RCVTIMEO_OLD: u32 = 20;
-pub const SO_SNDTIMEO_OLD: u32 = 21;
-pub const SO_SECURITY_AUTHENTICATION: u32 = 22;
-pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23;
-pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24;
-pub const SO_BINDTODEVICE: u32 = 25;
-pub const SO_ATTACH_FILTER: u32 = 26;
-pub const SO_DETACH_FILTER: u32 = 27;
-pub const SO_GET_FILTER: u32 = 26;
-pub const SO_PEERNAME: u32 = 28;
-pub const SO_ACCEPTCONN: u32 = 30;
-pub const SO_PEERSEC: u32 = 31;
-pub const SO_PASSSEC: u32 = 34;
-pub const SO_MARK: u32 = 36;
-pub const SO_PROTOCOL: u32 = 38;
-pub const SO_DOMAIN: u32 = 39;
-pub const SO_RXQ_OVFL: u32 = 40;
-pub const SO_WIFI_STATUS: u32 = 41;
-pub const SCM_WIFI_STATUS: u32 = 41;
-pub const SO_PEEK_OFF: u32 = 42;
-pub const SO_NOFCS: u32 = 43;
-pub const SO_LOCK_FILTER: u32 = 44;
-pub const SO_SELECT_ERR_QUEUE: u32 = 45;
-pub const SO_BUSY_POLL: u32 = 46;
-pub const SO_MAX_PACING_RATE: u32 = 47;
-pub const SO_BPF_EXTENSIONS: u32 = 48;
-pub const SO_INCOMING_CPU: u32 = 49;
-pub const SO_ATTACH_BPF: u32 = 50;
-pub const SO_DETACH_BPF: u32 = 27;
-pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51;
-pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52;
-pub const SO_CNX_ADVICE: u32 = 53;
-pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54;
-pub const SO_MEMINFO: u32 = 55;
-pub const SO_INCOMING_NAPI_ID: u32 = 56;
-pub const SO_COOKIE: u32 = 57;
-pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58;
-pub const SO_PEERGROUPS: u32 = 59;
-pub const SO_ZEROCOPY: u32 = 60;
-pub const SO_TXTIME: u32 = 61;
-pub const SCM_TXTIME: u32 = 61;
-pub const SO_BINDTOIFINDEX: u32 = 62;
-pub const SO_TIMESTAMP_OLD: u32 = 29;
-pub const SO_TIMESTAMPNS_OLD: u32 = 35;
-pub const SO_TIMESTAMPING_OLD: u32 = 37;
-pub const SO_TIMESTAMP_NEW: u32 = 63;
-pub const SO_TIMESTAMPNS_NEW: u32 = 64;
-pub const SO_TIMESTAMPING_NEW: u32 = 65;
-pub const SO_RCVTIMEO_NEW: u32 = 66;
-pub const SO_SNDTIMEO_NEW: u32 = 67;
-pub const SO_DETACH_REUSEPORT_BPF: u32 = 68;
-pub const SO_PREFER_BUSY_POLL: u32 = 69;
-pub const SO_BUSY_POLL_BUDGET: u32 = 70;
-pub const SO_NETNS_COOKIE: u32 = 71;
-pub const SO_BUF_LOCK: u32 = 72;
-pub const SO_RESERVE_MEM: u32 = 73;
-pub const SO_TXREHASH: u32 = 74;
-pub const SO_RCVMARK: u32 = 75;
-pub const SO_TIMESTAMP: u32 = 29;
-pub const SO_TIMESTAMPNS: u32 = 35;
-pub const SO_TIMESTAMPING: u32 = 37;
-pub const SO_RCVTIMEO: u32 = 20;
-pub const SO_SNDTIMEO: u32 = 21;
-pub const SCM_TIMESTAMP: u32 = 29;
-pub const SCM_TIMESTAMPNS: u32 = 35;
-pub const SCM_TIMESTAMPING: u32 = 37;
-pub const SYS_SOCKET: u32 = 1;
-pub const SYS_BIND: u32 = 2;
-pub const SYS_CONNECT: u32 = 3;
-pub const SYS_LISTEN: u32 = 4;
-pub const SYS_ACCEPT: u32 = 5;
-pub const SYS_GETSOCKNAME: u32 = 6;
-pub const SYS_GETPEERNAME: u32 = 7;
-pub const SYS_SOCKETPAIR: u32 = 8;
-pub const SYS_SEND: u32 = 9;
-pub const SYS_RECV: u32 = 10;
-pub const SYS_SENDTO: u32 = 11;
-pub const SYS_RECVFROM: u32 = 12;
-pub const SYS_SHUTDOWN: u32 = 13;
-pub const SYS_SETSOCKOPT: u32 = 14;
-pub const SYS_GETSOCKOPT: u32 = 15;
-pub const SYS_SENDMSG: u32 = 16;
-pub const SYS_RECVMSG: u32 = 17;
-pub const SYS_ACCEPT4: u32 = 18;
-pub const SYS_RECVMMSG: u32 = 19;
-pub const SYS_SENDMMSG: u32 = 20;
-pub const __SO_ACCEPTCON: u32 = 65536;
-pub const POLLIN: u32 = 1;
-pub const POLLPRI: u32 = 2;
-pub const POLLOUT: u32 = 4;
-pub const POLLERR: u32 = 8;
-pub const POLLHUP: u32 = 16;
-pub const POLLNVAL: u32 = 32;
-pub const POLLRDNORM: u32 = 64;
-pub const POLLRDBAND: u32 = 128;
-pub const POLLWRNORM: u32 = 256;
-pub const POLLWRBAND: u32 = 512;
-pub const POLLMSG: u32 = 1024;
-pub const POLLREMOVE: u32 = 4096;
-pub const POLLRDHUP: u32 = 8192;
-pub const PR_SET_PDEATHSIG: u32 = 1;
-pub const PR_GET_PDEATHSIG: u32 = 2;
-pub const PR_GET_DUMPABLE: u32 = 3;
-pub const PR_SET_DUMPABLE: u32 = 4;
-pub const PR_GET_UNALIGN: u32 = 5;
-pub const PR_SET_UNALIGN: u32 = 6;
-pub const PR_UNALIGN_NOPRINT: u32 = 1;
-pub const PR_UNALIGN_SIGBUS: u32 = 2;
-pub const PR_GET_KEEPCAPS: u32 = 7;
-pub const PR_SET_KEEPCAPS: u32 = 8;
-pub const PR_GET_FPEMU: u32 = 9;
-pub const PR_SET_FPEMU: u32 = 10;
-pub const PR_FPEMU_NOPRINT: u32 = 1;
-pub const PR_FPEMU_SIGFPE: u32 = 2;
-pub const PR_GET_FPEXC: u32 = 11;
-pub const PR_SET_FPEXC: u32 = 12;
-pub const PR_FP_EXC_SW_ENABLE: u32 = 128;
-pub const PR_FP_EXC_DIV: u32 = 65536;
-pub const PR_FP_EXC_OVF: u32 = 131072;
-pub const PR_FP_EXC_UND: u32 = 262144;
-pub const PR_FP_EXC_RES: u32 = 524288;
-pub const PR_FP_EXC_INV: u32 = 1048576;
-pub const PR_FP_EXC_DISABLED: u32 = 0;
-pub const PR_FP_EXC_NONRECOV: u32 = 1;
-pub const PR_FP_EXC_ASYNC: u32 = 2;
-pub const PR_FP_EXC_PRECISE: u32 = 3;
-pub const PR_GET_TIMING: u32 = 13;
-pub const PR_SET_TIMING: u32 = 14;
-pub const PR_TIMING_STATISTICAL: u32 = 0;
-pub const PR_TIMING_TIMESTAMP: u32 = 1;
-pub const PR_SET_NAME: u32 = 15;
-pub const PR_GET_NAME: u32 = 16;
-pub const PR_GET_ENDIAN: u32 = 19;
-pub const PR_SET_ENDIAN: u32 = 20;
-pub const PR_ENDIAN_BIG: u32 = 0;
-pub const PR_ENDIAN_LITTLE: u32 = 1;
-pub const PR_ENDIAN_PPC_LITTLE: u32 = 2;
-pub const PR_GET_SECCOMP: u32 = 21;
-pub const PR_SET_SECCOMP: u32 = 22;
-pub const PR_CAPBSET_READ: u32 = 23;
-pub const PR_CAPBSET_DROP: u32 = 24;
-pub const PR_GET_TSC: u32 = 25;
-pub const PR_SET_TSC: u32 = 26;
-pub const PR_TSC_ENABLE: u32 = 1;
-pub const PR_TSC_SIGSEGV: u32 = 2;
-pub const PR_GET_SECUREBITS: u32 = 27;
-pub const PR_SET_SECUREBITS: u32 = 28;
-pub const PR_SET_TIMERSLACK: u32 = 29;
-pub const PR_GET_TIMERSLACK: u32 = 30;
-pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31;
-pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32;
-pub const PR_MCE_KILL: u32 = 33;
-pub const PR_MCE_KILL_CLEAR: u32 = 0;
-pub const PR_MCE_KILL_SET: u32 = 1;
-pub const PR_MCE_KILL_LATE: u32 = 0;
-pub const PR_MCE_KILL_EARLY: u32 = 1;
-pub const PR_MCE_KILL_DEFAULT: u32 = 2;
-pub const PR_MCE_KILL_GET: u32 = 34;
-pub const PR_SET_MM: u32 = 35;
-pub const PR_SET_MM_START_CODE: u32 = 1;
-pub const PR_SET_MM_END_CODE: u32 = 2;
-pub const PR_SET_MM_START_DATA: u32 = 3;
-pub const PR_SET_MM_END_DATA: u32 = 4;
-pub const PR_SET_MM_START_STACK: u32 = 5;
-pub const PR_SET_MM_START_BRK: u32 = 6;
-pub const PR_SET_MM_BRK: u32 = 7;
-pub const PR_SET_MM_ARG_START: u32 = 8;
-pub const PR_SET_MM_ARG_END: u32 = 9;
-pub const PR_SET_MM_ENV_START: u32 = 10;
-pub const PR_SET_MM_ENV_END: u32 = 11;
-pub const PR_SET_MM_AUXV: u32 = 12;
-pub const PR_SET_MM_EXE_FILE: u32 = 13;
-pub const PR_SET_MM_MAP: u32 = 14;
-pub const PR_SET_MM_MAP_SIZE: u32 = 15;
-pub const PR_SET_PTRACER: u32 = 1499557217;
-pub const PR_SET_CHILD_SUBREAPER: u32 = 36;
-pub const PR_GET_CHILD_SUBREAPER: u32 = 37;
-pub const PR_SET_NO_NEW_PRIVS: u32 = 38;
-pub const PR_GET_NO_NEW_PRIVS: u32 = 39;
-pub const PR_GET_TID_ADDRESS: u32 = 40;
-pub const PR_SET_THP_DISABLE: u32 = 41;
-pub const PR_GET_THP_DISABLE: u32 = 42;
-pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43;
-pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44;
-pub const PR_SET_FP_MODE: u32 = 45;
-pub const PR_GET_FP_MODE: u32 = 46;
-pub const PR_FP_MODE_FR: u32 = 1;
-pub const PR_FP_MODE_FRE: u32 = 2;
-pub const PR_CAP_AMBIENT: u32 = 47;
-pub const PR_CAP_AMBIENT_IS_SET: u32 = 1;
-pub const PR_CAP_AMBIENT_RAISE: u32 = 2;
-pub const PR_CAP_AMBIENT_LOWER: u32 = 3;
-pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4;
-pub const PR_SVE_SET_VL: u32 = 50;
-pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SVE_GET_VL: u32 = 51;
-pub const PR_SVE_VL_LEN_MASK: u32 = 65535;
-pub const PR_SVE_VL_INHERIT: u32 = 131072;
-pub const PR_GET_SPECULATION_CTRL: u32 = 52;
-pub const PR_SET_SPECULATION_CTRL: u32 = 53;
-pub const PR_SPEC_STORE_BYPASS: u32 = 0;
-pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1;
-pub const PR_SPEC_L1D_FLUSH: u32 = 2;
-pub const PR_SPEC_NOT_AFFECTED: u32 = 0;
-pub const PR_SPEC_PRCTL: u32 = 1;
-pub const PR_SPEC_ENABLE: u32 = 2;
-pub const PR_SPEC_DISABLE: u32 = 4;
-pub const PR_SPEC_FORCE_DISABLE: u32 = 8;
-pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16;
-pub const PR_PAC_RESET_KEYS: u32 = 54;
-pub const PR_PAC_APIAKEY: u32 = 1;
-pub const PR_PAC_APIBKEY: u32 = 2;
-pub const PR_PAC_APDAKEY: u32 = 4;
-pub const PR_PAC_APDBKEY: u32 = 8;
-pub const PR_PAC_APGAKEY: u32 = 16;
-pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55;
-pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56;
-pub const PR_TAGGED_ADDR_ENABLE: u32 = 1;
-pub const PR_MTE_TCF_NONE: u32 = 0;
-pub const PR_MTE_TCF_SYNC: u32 = 2;
-pub const PR_MTE_TCF_ASYNC: u32 = 4;
-pub const PR_MTE_TCF_MASK: u32 = 6;
-pub const PR_MTE_TAG_SHIFT: u32 = 3;
-pub const PR_MTE_TAG_MASK: u32 = 524280;
-pub const PR_MTE_TCF_SHIFT: u32 = 1;
-pub const PR_SET_IO_FLUSHER: u32 = 57;
-pub const PR_GET_IO_FLUSHER: u32 = 58;
-pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59;
-pub const PR_SYS_DISPATCH_OFF: u32 = 0;
-pub const PR_SYS_DISPATCH_ON: u32 = 1;
-pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0;
-pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1;
-pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60;
-pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61;
-pub const PR_SCHED_CORE: u32 = 62;
-pub const PR_SCHED_CORE_GET: u32 = 0;
-pub const PR_SCHED_CORE_CREATE: u32 = 1;
-pub const PR_SCHED_CORE_SHARE_TO: u32 = 2;
-pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3;
-pub const PR_SCHED_CORE_MAX: u32 = 4;
-pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0;
-pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1;
-pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2;
-pub const PR_SME_SET_VL: u32 = 63;
-pub const PR_SME_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SME_GET_VL: u32 = 64;
-pub const PR_SME_VL_LEN_MASK: u32 = 65535;
-pub const PR_SME_VL_INHERIT: u32 = 131072;
-pub const PR_SET_VMA: u32 = 1398164801;
-pub const PR_SET_VMA_ANON_NAME: u32 = 0;
-pub const GRND_NONBLOCK: u32 = 1;
-pub const GRND_RANDOM: u32 = 2;
-pub const GRND_INSECURE: u32 = 4;
-pub const ITIMER_REAL: u32 = 0;
-pub const ITIMER_VIRTUAL: u32 = 1;
-pub const ITIMER_PROF: u32 = 2;
-pub const CLOCK_REALTIME: u32 = 0;
-pub const CLOCK_MONOTONIC: u32 = 1;
-pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2;
-pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3;
-pub const CLOCK_MONOTONIC_RAW: u32 = 4;
-pub const CLOCK_REALTIME_COARSE: u32 = 5;
-pub const CLOCK_MONOTONIC_COARSE: u32 = 6;
-pub const CLOCK_BOOTTIME: u32 = 7;
-pub const CLOCK_REALTIME_ALARM: u32 = 8;
-pub const CLOCK_BOOTTIME_ALARM: u32 = 9;
-pub const CLOCK_SGI_CYCLE: u32 = 10;
-pub const CLOCK_TAI: u32 = 11;
-pub const MAX_CLOCKS: u32 = 16;
-pub const CLOCKS_MASK: u32 = 1;
-pub const CLOCKS_MONO: u32 = 1;
-pub const TIMER_ABSTIME: u32 = 1;
-pub const RUSAGE_SELF: u32 = 0;
-pub const RUSAGE_CHILDREN: i32 = -1;
-pub const RUSAGE_BOTH: i32 = -2;
-pub const RUSAGE_THREAD: u32 = 1;
-pub const RLIM64_INFINITY: i32 = -1;
-pub const PRIO_MIN: i32 = -20;
-pub const PRIO_MAX: u32 = 20;
-pub const PRIO_PROCESS: u32 = 0;
-pub const PRIO_PGRP: u32 = 1;
-pub const PRIO_USER: u32 = 2;
-pub const _STK_LIM: u32 = 8388608;
-pub const MLOCK_LIMIT: u32 = 8388608;
-pub const RLIMIT_CPU: u32 = 0;
-pub const RLIMIT_FSIZE: u32 = 1;
-pub const RLIMIT_DATA: u32 = 2;
-pub const RLIMIT_STACK: u32 = 3;
-pub const RLIMIT_CORE: u32 = 4;
-pub const RLIMIT_RSS: u32 = 5;
-pub const RLIMIT_NPROC: u32 = 6;
-pub const RLIMIT_NOFILE: u32 = 7;
-pub const RLIMIT_MEMLOCK: u32 = 8;
-pub const RLIMIT_AS: u32 = 9;
-pub const RLIMIT_LOCKS: u32 = 10;
-pub const RLIMIT_SIGPENDING: u32 = 11;
-pub const RLIMIT_MSGQUEUE: u32 = 12;
-pub const RLIMIT_NICE: u32 = 13;
-pub const RLIMIT_RTPRIO: u32 = 14;
-pub const RLIMIT_RTTIME: u32 = 15;
-pub const RLIM_NLIMITS: u32 = 16;
-pub const RLIM_INFINITY: i32 = -1;
-pub const CSIGNAL: u32 = 255;
-pub const CLONE_VM: u32 = 256;
-pub const CLONE_FS: u32 = 512;
-pub const CLONE_FILES: u32 = 1024;
-pub const CLONE_SIGHAND: u32 = 2048;
-pub const CLONE_PIDFD: u32 = 4096;
-pub const CLONE_PTRACE: u32 = 8192;
-pub const CLONE_VFORK: u32 = 16384;
-pub const CLONE_PARENT: u32 = 32768;
-pub const CLONE_THREAD: u32 = 65536;
-pub const CLONE_NEWNS: u32 = 131072;
-pub const CLONE_SYSVSEM: u32 = 262144;
-pub const CLONE_SETTLS: u32 = 524288;
-pub const CLONE_PARENT_SETTID: u32 = 1048576;
-pub const CLONE_CHILD_CLEARTID: u32 = 2097152;
-pub const CLONE_DETACHED: u32 = 4194304;
-pub const CLONE_UNTRACED: u32 = 8388608;
-pub const CLONE_CHILD_SETTID: u32 = 16777216;
-pub const CLONE_NEWCGROUP: u32 = 33554432;
-pub const CLONE_NEWUTS: u32 = 67108864;
-pub const CLONE_NEWIPC: u32 = 134217728;
-pub const CLONE_NEWUSER: u32 = 268435456;
-pub const CLONE_NEWPID: u32 = 536870912;
-pub const CLONE_NEWNET: u32 = 1073741824;
-pub const CLONE_IO: u32 = 2147483648;
-pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296;
-pub const CLONE_INTO_CGROUP: u64 = 8589934592;
-pub const CLONE_NEWTIME: u32 = 128;
-pub const CLONE_ARGS_SIZE_VER0: u32 = 64;
-pub const CLONE_ARGS_SIZE_VER1: u32 = 80;
-pub const CLONE_ARGS_SIZE_VER2: u32 = 88;
-pub const SCHED_NORMAL: u32 = 0;
-pub const SCHED_FIFO: u32 = 1;
-pub const SCHED_RR: u32 = 2;
-pub const SCHED_BATCH: u32 = 3;
-pub const SCHED_IDLE: u32 = 5;
-pub const SCHED_DEADLINE: u32 = 6;
-pub const SCHED_RESET_ON_FORK: u32 = 1073741824;
-pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1;
-pub const SCHED_FLAG_RECLAIM: u32 = 2;
-pub const SCHED_FLAG_DL_OVERRUN: u32 = 4;
-pub const SCHED_FLAG_KEEP_POLICY: u32 = 8;
-pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16;
-pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32;
-pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64;
-pub const SCHED_FLAG_KEEP_ALL: u32 = 24;
-pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96;
-pub const SCHED_FLAG_ALL: u32 = 127;
-pub const NSIG: u32 = 32;
-pub const SIGHUP: u32 = 1;
-pub const SIGINT: u32 = 2;
-pub const SIGQUIT: u32 = 3;
-pub const SIGILL: u32 = 4;
-pub const SIGTRAP: u32 = 5;
-pub const SIGABRT: u32 = 6;
-pub const SIGIOT: u32 = 6;
-pub const SIGBUS: u32 = 7;
-pub const SIGFPE: u32 = 8;
-pub const SIGKILL: u32 = 9;
-pub const SIGUSR1: u32 = 10;
-pub const SIGSEGV: u32 = 11;
-pub const SIGUSR2: u32 = 12;
-pub const SIGPIPE: u32 = 13;
-pub const SIGALRM: u32 = 14;
-pub const SIGTERM: u32 = 15;
-pub const SIGSTKFLT: u32 = 16;
-pub const SIGCHLD: u32 = 17;
-pub const SIGCONT: u32 = 18;
-pub const SIGSTOP: u32 = 19;
-pub const SIGTSTP: u32 = 20;
-pub const SIGTTIN: u32 = 21;
-pub const SIGTTOU: u32 = 22;
-pub const SIGURG: u32 = 23;
-pub const SIGXCPU: u32 = 24;
-pub const SIGXFSZ: u32 = 25;
-pub const SIGVTALRM: u32 = 26;
-pub const SIGPROF: u32 = 27;
-pub const SIGWINCH: u32 = 28;
-pub const SIGIO: u32 = 29;
-pub const SIGPOLL: u32 = 29;
-pub const SIGPWR: u32 = 30;
-pub const SIGSYS: u32 = 31;
-pub const SIGUNUSED: u32 = 31;
-pub const SIGRTMIN: u32 = 32;
-pub const SA_RESTORER: u32 = 67108864;
-pub const MINSIGSTKSZ: u32 = 2048;
-pub const SIGSTKSZ: u32 = 8192;
-pub const SA_NOCLDSTOP: u32 = 1;
-pub const SA_NOCLDWAIT: u32 = 2;
-pub const SA_SIGINFO: u32 = 4;
-pub const SA_UNSUPPORTED: u32 = 1024;
-pub const SA_EXPOSE_TAGBITS: u32 = 2048;
-pub const SA_ONSTACK: u32 = 134217728;
-pub const SA_RESTART: u32 = 268435456;
-pub const SA_NODEFER: u32 = 1073741824;
-pub const SA_RESETHAND: u32 = 2147483648;
-pub const SA_NOMASK: u32 = 1073741824;
-pub const SA_ONESHOT: u32 = 2147483648;
-pub const SIG_BLOCK: u32 = 0;
-pub const SIG_UNBLOCK: u32 = 1;
-pub const SIG_SETMASK: u32 = 2;
-pub const SI_MAX_SIZE: u32 = 128;
-pub const SI_USER: u32 = 0;
-pub const SI_KERNEL: u32 = 128;
-pub const SI_QUEUE: i32 = -1;
-pub const SI_TIMER: i32 = -2;
-pub const SI_MESGQ: i32 = -3;
-pub const SI_ASYNCIO: i32 = -4;
-pub const SI_SIGIO: i32 = -5;
-pub const SI_TKILL: i32 = -6;
-pub const SI_DETHREAD: i32 = -7;
-pub const SI_ASYNCNL: i32 = -60;
-pub const ILL_ILLOPC: u32 = 1;
-pub const ILL_ILLOPN: u32 = 2;
-pub const ILL_ILLADR: u32 = 3;
-pub const ILL_ILLTRP: u32 = 4;
-pub const ILL_PRVOPC: u32 = 5;
-pub const ILL_PRVREG: u32 = 6;
-pub const ILL_COPROC: u32 = 7;
-pub const ILL_BADSTK: u32 = 8;
-pub const ILL_BADIADDR: u32 = 9;
-pub const __ILL_BREAK: u32 = 10;
-pub const __ILL_BNDMOD: u32 = 11;
-pub const NSIGILL: u32 = 11;
-pub const FPE_INTDIV: u32 = 1;
-pub const FPE_INTOVF: u32 = 2;
-pub const FPE_FLTDIV: u32 = 3;
-pub const FPE_FLTOVF: u32 = 4;
-pub const FPE_FLTUND: u32 = 5;
-pub const FPE_FLTRES: u32 = 6;
-pub const FPE_FLTINV: u32 = 7;
-pub const FPE_FLTSUB: u32 = 8;
-pub const __FPE_DECOVF: u32 = 9;
-pub const __FPE_DECDIV: u32 = 10;
-pub const __FPE_DECERR: u32 = 11;
-pub const __FPE_INVASC: u32 = 12;
-pub const __FPE_INVDEC: u32 = 13;
-pub const FPE_FLTUNK: u32 = 14;
-pub const FPE_CONDTRAP: u32 = 15;
-pub const NSIGFPE: u32 = 15;
-pub const SEGV_MAPERR: u32 = 1;
-pub const SEGV_ACCERR: u32 = 2;
-pub const SEGV_BNDERR: u32 = 3;
-pub const SEGV_PKUERR: u32 = 4;
-pub const SEGV_ACCADI: u32 = 5;
-pub const SEGV_ADIDERR: u32 = 6;
-pub const SEGV_ADIPERR: u32 = 7;
-pub const SEGV_MTEAERR: u32 = 8;
-pub const SEGV_MTESERR: u32 = 9;
-pub const NSIGSEGV: u32 = 9;
-pub const BUS_ADRALN: u32 = 1;
-pub const BUS_ADRERR: u32 = 2;
-pub const BUS_OBJERR: u32 = 3;
-pub const BUS_MCEERR_AR: u32 = 4;
-pub const BUS_MCEERR_AO: u32 = 5;
-pub const NSIGBUS: u32 = 5;
-pub const TRAP_BRKPT: u32 = 1;
-pub const TRAP_TRACE: u32 = 2;
-pub const TRAP_BRANCH: u32 = 3;
-pub const TRAP_HWBKPT: u32 = 4;
-pub const TRAP_UNK: u32 = 5;
-pub const TRAP_PERF: u32 = 6;
-pub const NSIGTRAP: u32 = 6;
-pub const TRAP_PERF_FLAG_ASYNC: u32 = 1;
-pub const CLD_EXITED: u32 = 1;
-pub const CLD_KILLED: u32 = 2;
-pub const CLD_DUMPED: u32 = 3;
-pub const CLD_TRAPPED: u32 = 4;
-pub const CLD_STOPPED: u32 = 5;
-pub const CLD_CONTINUED: u32 = 6;
-pub const NSIGCHLD: u32 = 6;
-pub const POLL_IN: u32 = 1;
-pub const POLL_OUT: u32 = 2;
-pub const POLL_MSG: u32 = 3;
-pub const POLL_ERR: u32 = 4;
-pub const POLL_PRI: u32 = 5;
-pub const POLL_HUP: u32 = 6;
-pub const NSIGPOLL: u32 = 6;
-pub const SYS_SECCOMP: u32 = 1;
-pub const SYS_USER_DISPATCH: u32 = 2;
-pub const NSIGSYS: u32 = 2;
-pub const EMT_TAGOVF: u32 = 1;
-pub const NSIGEMT: u32 = 1;
-pub const SIGEV_SIGNAL: u32 = 0;
-pub const SIGEV_NONE: u32 = 1;
-pub const SIGEV_THREAD: u32 = 2;
-pub const SIGEV_THREAD_ID: u32 = 4;
-pub const SIGEV_MAX_SIZE: u32 = 64;
-pub const SS_ONSTACK: u32 = 1;
-pub const SS_DISABLE: u32 = 2;
-pub const SS_AUTODISARM: u32 = 2147483648;
-pub const SS_FLAG_BITS: u32 = 2147483648;
-pub const S_IFMT: u32 = 61440;
-pub const S_IFSOCK: u32 = 49152;
-pub const S_IFLNK: u32 = 40960;
-pub const S_IFREG: u32 = 32768;
-pub const S_IFBLK: u32 = 24576;
-pub const S_IFDIR: u32 = 16384;
-pub const S_IFCHR: u32 = 8192;
-pub const S_IFIFO: u32 = 4096;
-pub const S_ISUID: u32 = 2048;
-pub const S_ISGID: u32 = 1024;
-pub const S_ISVTX: u32 = 512;
-pub const S_IRWXU: u32 = 448;
-pub const S_IRUSR: u32 = 256;
-pub const S_IWUSR: u32 = 128;
-pub const S_IXUSR: u32 = 64;
-pub const S_IRWXG: u32 = 56;
-pub const S_IRGRP: u32 = 32;
-pub const S_IWGRP: u32 = 16;
-pub const S_IXGRP: u32 = 8;
-pub const S_IRWXO: u32 = 7;
-pub const S_IROTH: u32 = 4;
-pub const S_IWOTH: u32 = 2;
-pub const S_IXOTH: u32 = 1;
-pub const STATX_TYPE: u32 = 1;
-pub const STATX_MODE: u32 = 2;
-pub const STATX_NLINK: u32 = 4;
-pub const STATX_UID: u32 = 8;
-pub const STATX_GID: u32 = 16;
-pub const STATX_ATIME: u32 = 32;
-pub const STATX_MTIME: u32 = 64;
-pub const STATX_CTIME: u32 = 128;
-pub const STATX_INO: u32 = 256;
-pub const STATX_SIZE: u32 = 512;
-pub const STATX_BLOCKS: u32 = 1024;
-pub const STATX_BASIC_STATS: u32 = 2047;
-pub const STATX_BTIME: u32 = 2048;
-pub const STATX_MNT_ID: u32 = 4096;
-pub const STATX_DIOALIGN: u32 = 8192;
-pub const STATX__RESERVED: u32 = 2147483648;
-pub const STATX_ALL: u32 = 4095;
-pub const STATX_ATTR_COMPRESSED: u32 = 4;
-pub const STATX_ATTR_IMMUTABLE: u32 = 16;
-pub const STATX_ATTR_APPEND: u32 = 32;
-pub const STATX_ATTR_NODUMP: u32 = 64;
-pub const STATX_ATTR_ENCRYPTED: u32 = 2048;
-pub const STATX_ATTR_AUTOMOUNT: u32 = 4096;
-pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192;
-pub const STATX_ATTR_VERITY: u32 = 1048576;
-pub const STATX_ATTR_DAX: u32 = 2097152;
-pub const SI_LOAD_SHIFT: u32 = 16;
-pub const TCP_MSS_DEFAULT: u32 = 536;
-pub const TCP_MSS_DESIRED: u32 = 1220;
-pub const TCP_NODELAY: u32 = 1;
-pub const TCP_MAXSEG: u32 = 2;
-pub const TCP_CORK: u32 = 3;
-pub const TCP_KEEPIDLE: u32 = 4;
-pub const TCP_KEEPINTVL: u32 = 5;
-pub const TCP_KEEPCNT: u32 = 6;
-pub const TCP_SYNCNT: u32 = 7;
-pub const TCP_LINGER2: u32 = 8;
-pub const TCP_DEFER_ACCEPT: u32 = 9;
-pub const TCP_WINDOW_CLAMP: u32 = 10;
-pub const TCP_INFO: u32 = 11;
-pub const TCP_QUICKACK: u32 = 12;
-pub const TCP_CONGESTION: u32 = 13;
-pub const TCP_MD5SIG: u32 = 14;
-pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16;
-pub const TCP_THIN_DUPACK: u32 = 17;
-pub const TCP_USER_TIMEOUT: u32 = 18;
-pub const TCP_REPAIR: u32 = 19;
-pub const TCP_REPAIR_QUEUE: u32 = 20;
-pub const TCP_QUEUE_SEQ: u32 = 21;
-pub const TCP_REPAIR_OPTIONS: u32 = 22;
-pub const TCP_FASTOPEN: u32 = 23;
-pub const TCP_TIMESTAMP: u32 = 24;
-pub const TCP_NOTSENT_LOWAT: u32 = 25;
-pub const TCP_CC_INFO: u32 = 26;
-pub const TCP_SAVE_SYN: u32 = 27;
-pub const TCP_SAVED_SYN: u32 = 28;
-pub const TCP_REPAIR_WINDOW: u32 = 29;
-pub const TCP_FASTOPEN_CONNECT: u32 = 30;
-pub const TCP_ULP: u32 = 31;
-pub const TCP_MD5SIG_EXT: u32 = 32;
-pub const TCP_FASTOPEN_KEY: u32 = 33;
-pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34;
-pub const TCP_ZEROCOPY_RECEIVE: u32 = 35;
-pub const TCP_INQ: u32 = 36;
-pub const TCP_CM_INQ: u32 = 36;
-pub const TCP_TX_DELAY: u32 = 37;
-pub const TCP_REPAIR_ON: u32 = 1;
-pub const TCP_REPAIR_OFF: u32 = 0;
-pub const TCP_REPAIR_OFF_NO_WP: i32 = -1;
-pub const TCPI_OPT_TIMESTAMPS: u32 = 1;
-pub const TCPI_OPT_SACK: u32 = 2;
-pub const TCPI_OPT_WSCALE: u32 = 4;
-pub const TCPI_OPT_ECN: u32 = 8;
-pub const TCPI_OPT_ECN_SEEN: u32 = 16;
-pub const TCPI_OPT_SYN_DATA: u32 = 32;
-pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80;
-pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
-pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
-pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
-pub const IGNBRK: u32 = 1;
-pub const BRKINT: u32 = 2;
-pub const IGNPAR: u32 = 4;
-pub const PARMRK: u32 = 8;
-pub const INPCK: u32 = 16;
-pub const ISTRIP: u32 = 32;
-pub const INLCR: u32 = 64;
-pub const IGNCR: u32 = 128;
-pub const ICRNL: u32 = 256;
-pub const IXANY: u32 = 2048;
-pub const OPOST: u32 = 1;
-pub const OCRNL: u32 = 8;
-pub const ONOCR: u32 = 16;
-pub const ONLRET: u32 = 32;
-pub const OFILL: u32 = 64;
-pub const OFDEL: u32 = 128;
-pub const B0: u32 = 0;
-pub const B50: u32 = 1;
-pub const B75: u32 = 2;
-pub const B110: u32 = 3;
-pub const B134: u32 = 4;
-pub const B150: u32 = 5;
-pub const B200: u32 = 6;
-pub const B300: u32 = 7;
-pub const B600: u32 = 8;
-pub const B1200: u32 = 9;
-pub const B1800: u32 = 10;
-pub const B2400: u32 = 11;
-pub const B4800: u32 = 12;
-pub const B9600: u32 = 13;
-pub const B19200: u32 = 14;
-pub const B38400: u32 = 15;
-pub const EXTA: u32 = 14;
-pub const EXTB: u32 = 15;
-pub const ADDRB: u32 = 536870912;
-pub const CMSPAR: u32 = 1073741824;
-pub const CRTSCTS: u32 = 2147483648;
-pub const IBSHIFT: u32 = 16;
-pub const TCOOFF: u32 = 0;
-pub const TCOON: u32 = 1;
-pub const TCIOFF: u32 = 2;
-pub const TCION: u32 = 3;
-pub const TCIFLUSH: u32 = 0;
-pub const TCOFLUSH: u32 = 1;
-pub const TCIOFLUSH: u32 = 2;
-pub const NCCS: u32 = 19;
-pub const VINTR: u32 = 0;
-pub const VQUIT: u32 = 1;
-pub const VERASE: u32 = 2;
-pub const VKILL: u32 = 3;
-pub const VEOF: u32 = 4;
-pub const VTIME: u32 = 5;
-pub const VMIN: u32 = 6;
-pub const VSWTC: u32 = 7;
-pub const VSTART: u32 = 8;
-pub const VSTOP: u32 = 9;
-pub const VSUSP: u32 = 10;
-pub const VEOL: u32 = 11;
-pub const VREPRINT: u32 = 12;
-pub const VDISCARD: u32 = 13;
-pub const VWERASE: u32 = 14;
-pub const VLNEXT: u32 = 15;
-pub const VEOL2: u32 = 16;
-pub const IUCLC: u32 = 512;
-pub const IXON: u32 = 1024;
-pub const IXOFF: u32 = 4096;
-pub const IMAXBEL: u32 = 8192;
-pub const IUTF8: u32 = 16384;
-pub const OLCUC: u32 = 2;
-pub const ONLCR: u32 = 4;
-pub const NLDLY: u32 = 256;
-pub const NL0: u32 = 0;
-pub const NL1: u32 = 256;
-pub const CRDLY: u32 = 1536;
-pub const CR0: u32 = 0;
-pub const CR1: u32 = 512;
-pub const CR2: u32 = 1024;
-pub const CR3: u32 = 1536;
-pub const TABDLY: u32 = 6144;
-pub const TAB0: u32 = 0;
-pub const TAB1: u32 = 2048;
-pub const TAB2: u32 = 4096;
-pub const TAB3: u32 = 6144;
-pub const XTABS: u32 = 6144;
-pub const BSDLY: u32 = 8192;
-pub const BS0: u32 = 0;
-pub const BS1: u32 = 8192;
-pub const VTDLY: u32 = 16384;
-pub const VT0: u32 = 0;
-pub const VT1: u32 = 16384;
-pub const FFDLY: u32 = 32768;
-pub const FF0: u32 = 0;
-pub const FF1: u32 = 32768;
-pub const CBAUD: u32 = 4111;
-pub const CSIZE: u32 = 48;
-pub const CS5: u32 = 0;
-pub const CS6: u32 = 16;
-pub const CS7: u32 = 32;
-pub const CS8: u32 = 48;
-pub const CSTOPB: u32 = 64;
-pub const CREAD: u32 = 128;
-pub const PARENB: u32 = 256;
-pub const PARODD: u32 = 512;
-pub const HUPCL: u32 = 1024;
-pub const CLOCAL: u32 = 2048;
-pub const CBAUDEX: u32 = 4096;
-pub const BOTHER: u32 = 4096;
-pub const B57600: u32 = 4097;
-pub const B115200: u32 = 4098;
-pub const B230400: u32 = 4099;
-pub const B460800: u32 = 4100;
-pub const B500000: u32 = 4101;
-pub const B576000: u32 = 4102;
-pub const B921600: u32 = 4103;
-pub const B1000000: u32 = 4104;
-pub const B1152000: u32 = 4105;
-pub const B1500000: u32 = 4106;
-pub const B2000000: u32 = 4107;
-pub const B2500000: u32 = 4108;
-pub const B3000000: u32 = 4109;
-pub const B3500000: u32 = 4110;
-pub const B4000000: u32 = 4111;
-pub const CIBAUD: u32 = 269418496;
-pub const ISIG: u32 = 1;
-pub const ICANON: u32 = 2;
-pub const XCASE: u32 = 4;
-pub const ECHO: u32 = 8;
-pub const ECHOE: u32 = 16;
-pub const ECHOK: u32 = 32;
-pub const ECHONL: u32 = 64;
-pub const NOFLSH: u32 = 128;
-pub const TOSTOP: u32 = 256;
-pub const ECHOCTL: u32 = 512;
-pub const ECHOPRT: u32 = 1024;
-pub const ECHOKE: u32 = 2048;
-pub const FLUSHO: u32 = 4096;
-pub const PENDIN: u32 = 16384;
-pub const IEXTEN: u32 = 32768;
-pub const EXTPROC: u32 = 65536;
-pub const TCSANOW: u32 = 0;
-pub const TCSADRAIN: u32 = 1;
-pub const TCSAFLUSH: u32 = 2;
-pub const TIOCPKT_DATA: u32 = 0;
-pub const TIOCPKT_FLUSHREAD: u32 = 1;
-pub const TIOCPKT_FLUSHWRITE: u32 = 2;
-pub const TIOCPKT_STOP: u32 = 4;
-pub const TIOCPKT_START: u32 = 8;
-pub const TIOCPKT_NOSTOP: u32 = 16;
-pub const TIOCPKT_DOSTOP: u32 = 32;
-pub const TIOCPKT_IOCTL: u32 = 64;
-pub const TIOCSER_TEMT: u32 = 1;
-pub const NCC: u32 = 8;
-pub const TIOCM_LE: u32 = 1;
-pub const TIOCM_DTR: u32 = 2;
-pub const TIOCM_RTS: u32 = 4;
-pub const TIOCM_ST: u32 = 8;
-pub const TIOCM_SR: u32 = 16;
-pub const TIOCM_CTS: u32 = 32;
-pub const TIOCM_CAR: u32 = 64;
-pub const TIOCM_RNG: u32 = 128;
-pub const TIOCM_DSR: u32 = 256;
-pub const TIOCM_CD: u32 = 64;
-pub const TIOCM_RI: u32 = 128;
-pub const TIOCM_OUT1: u32 = 8192;
-pub const TIOCM_OUT2: u32 = 16384;
-pub const TIOCM_LOOP: u32 = 32768;
-pub const UIO_FASTIOV: u32 = 8;
-pub const UIO_MAXIOV: u32 = 1024;
-pub const UNIX_PATH_MAX: u32 = 108;
-pub const __NR_exit: u32 = 1;
-pub const __NR_fork: u32 = 2;
-pub const __NR_read: u32 = 3;
-pub const __NR_write: u32 = 4;
-pub const __NR_open: u32 = 5;
-pub const __NR_close: u32 = 6;
-pub const __NR_restart_syscall: u32 = 7;
-pub const __NR_creat: u32 = 8;
-pub const __NR_link: u32 = 9;
-pub const __NR_unlink: u32 = 10;
-pub const __NR_execve: u32 = 11;
-pub const __NR_chdir: u32 = 12;
-pub const __NR_mknod: u32 = 14;
-pub const __NR_chmod: u32 = 15;
-pub const __NR_lseek: u32 = 19;
-pub const __NR_getpid: u32 = 20;
-pub const __NR_mount: u32 = 21;
-pub const __NR_umount: u32 = 22;
-pub const __NR_ptrace: u32 = 26;
-pub const __NR_alarm: u32 = 27;
-pub const __NR_pause: u32 = 29;
-pub const __NR_utime: u32 = 30;
-pub const __NR_access: u32 = 33;
-pub const __NR_nice: u32 = 34;
-pub const __NR_sync: u32 = 36;
-pub const __NR_kill: u32 = 37;
-pub const __NR_rename: u32 = 38;
-pub const __NR_mkdir: u32 = 39;
-pub const __NR_rmdir: u32 = 40;
-pub const __NR_dup: u32 = 41;
-pub const __NR_pipe: u32 = 42;
-pub const __NR_times: u32 = 43;
-pub const __NR_brk: u32 = 45;
-pub const __NR_signal: u32 = 48;
-pub const __NR_acct: u32 = 51;
-pub const __NR_umount2: u32 = 52;
-pub const __NR_ioctl: u32 = 54;
-pub const __NR_fcntl: u32 = 55;
-pub const __NR_setpgid: u32 = 57;
-pub const __NR_umask: u32 = 60;
-pub const __NR_chroot: u32 = 61;
-pub const __NR_ustat: u32 = 62;
-pub const __NR_dup2: u32 = 63;
-pub const __NR_getppid: u32 = 64;
-pub const __NR_getpgrp: u32 = 65;
-pub const __NR_setsid: u32 = 66;
-pub const __NR_sigaction: u32 = 67;
-pub const __NR_sigsuspend: u32 = 72;
-pub const __NR_sigpending: u32 = 73;
-pub const __NR_sethostname: u32 = 74;
-pub const __NR_setrlimit: u32 = 75;
-pub const __NR_getrusage: u32 = 77;
-pub const __NR_gettimeofday: u32 = 78;
-pub const __NR_settimeofday: u32 = 79;
-pub const __NR_symlink: u32 = 83;
-pub const __NR_readlink: u32 = 85;
-pub const __NR_uselib: u32 = 86;
-pub const __NR_swapon: u32 = 87;
-pub const __NR_reboot: u32 = 88;
-pub const __NR_readdir: u32 = 89;
-pub const __NR_mmap: u32 = 90;
-pub const __NR_munmap: u32 = 91;
-pub const __NR_truncate: u32 = 92;
-pub const __NR_ftruncate: u32 = 93;
-pub const __NR_fchmod: u32 = 94;
-pub const __NR_getpriority: u32 = 96;
-pub const __NR_setpriority: u32 = 97;
-pub const __NR_statfs: u32 = 99;
-pub const __NR_fstatfs: u32 = 100;
-pub const __NR_socketcall: u32 = 102;
-pub const __NR_syslog: u32 = 103;
-pub const __NR_setitimer: u32 = 104;
-pub const __NR_getitimer: u32 = 105;
-pub const __NR_stat: u32 = 106;
-pub const __NR_lstat: u32 = 107;
-pub const __NR_fstat: u32 = 108;
-pub const __NR_lookup_dcookie: u32 = 110;
-pub const __NR_vhangup: u32 = 111;
-pub const __NR_idle: u32 = 112;
-pub const __NR_wait4: u32 = 114;
-pub const __NR_swapoff: u32 = 115;
-pub const __NR_sysinfo: u32 = 116;
-pub const __NR_ipc: u32 = 117;
-pub const __NR_fsync: u32 = 118;
-pub const __NR_sigreturn: u32 = 119;
-pub const __NR_clone: u32 = 120;
-pub const __NR_setdomainname: u32 = 121;
-pub const __NR_uname: u32 = 122;
-pub const __NR_adjtimex: u32 = 124;
-pub const __NR_mprotect: u32 = 125;
-pub const __NR_sigprocmask: u32 = 126;
-pub const __NR_create_module: u32 = 127;
-pub const __NR_init_module: u32 = 128;
-pub const __NR_delete_module: u32 = 129;
-pub const __NR_get_kernel_syms: u32 = 130;
-pub const __NR_quotactl: u32 = 131;
-pub const __NR_getpgid: u32 = 132;
-pub const __NR_fchdir: u32 = 133;
-pub const __NR_bdflush: u32 = 134;
-pub const __NR_sysfs: u32 = 135;
-pub const __NR_personality: u32 = 136;
-pub const __NR_afs_syscall: u32 = 137;
-pub const __NR_getdents: u32 = 141;
-pub const __NR_select: u32 = 142;
-pub const __NR_flock: u32 = 143;
-pub const __NR_msync: u32 = 144;
-pub const __NR_readv: u32 = 145;
-pub const __NR_writev: u32 = 146;
-pub const __NR_getsid: u32 = 147;
-pub const __NR_fdatasync: u32 = 148;
-pub const __NR__sysctl: u32 = 149;
-pub const __NR_mlock: u32 = 150;
-pub const __NR_munlock: u32 = 151;
-pub const __NR_mlockall: u32 = 152;
-pub const __NR_munlockall: u32 = 153;
-pub const __NR_sched_setparam: u32 = 154;
-pub const __NR_sched_getparam: u32 = 155;
-pub const __NR_sched_setscheduler: u32 = 156;
-pub const __NR_sched_getscheduler: u32 = 157;
-pub const __NR_sched_yield: u32 = 158;
-pub const __NR_sched_get_priority_max: u32 = 159;
-pub const __NR_sched_get_priority_min: u32 = 160;
-pub const __NR_sched_rr_get_interval: u32 = 161;
-pub const __NR_nanosleep: u32 = 162;
-pub const __NR_mremap: u32 = 163;
-pub const __NR_query_module: u32 = 167;
-pub const __NR_poll: u32 = 168;
-pub const __NR_nfsservctl: u32 = 169;
-pub const __NR_prctl: u32 = 172;
-pub const __NR_rt_sigreturn: u32 = 173;
-pub const __NR_rt_sigaction: u32 = 174;
-pub const __NR_rt_sigprocmask: u32 = 175;
-pub const __NR_rt_sigpending: u32 = 176;
-pub const __NR_rt_sigtimedwait: u32 = 177;
-pub const __NR_rt_sigqueueinfo: u32 = 178;
-pub const __NR_rt_sigsuspend: u32 = 179;
-pub const __NR_pread64: u32 = 180;
-pub const __NR_pwrite64: u32 = 181;
-pub const __NR_getcwd: u32 = 183;
-pub const __NR_capget: u32 = 184;
-pub const __NR_capset: u32 = 185;
-pub const __NR_sigaltstack: u32 = 186;
-pub const __NR_sendfile: u32 = 187;
-pub const __NR_getpmsg: u32 = 188;
-pub const __NR_putpmsg: u32 = 189;
-pub const __NR_vfork: u32 = 190;
-pub const __NR_getrlimit: u32 = 191;
-pub const __NR_lchown: u32 = 198;
-pub const __NR_getuid: u32 = 199;
-pub const __NR_getgid: u32 = 200;
-pub const __NR_geteuid: u32 = 201;
-pub const __NR_getegid: u32 = 202;
-pub const __NR_setreuid: u32 = 203;
-pub const __NR_setregid: u32 = 204;
-pub const __NR_getgroups: u32 = 205;
-pub const __NR_setgroups: u32 = 206;
-pub const __NR_fchown: u32 = 207;
-pub const __NR_setresuid: u32 = 208;
-pub const __NR_getresuid: u32 = 209;
-pub const __NR_setresgid: u32 = 210;
-pub const __NR_getresgid: u32 = 211;
-pub const __NR_chown: u32 = 212;
-pub const __NR_setuid: u32 = 213;
-pub const __NR_setgid: u32 = 214;
-pub const __NR_setfsuid: u32 = 215;
-pub const __NR_setfsgid: u32 = 216;
-pub const __NR_pivot_root: u32 = 217;
-pub const __NR_mincore: u32 = 218;
-pub const __NR_madvise: u32 = 219;
-pub const __NR_getdents64: u32 = 220;
-pub const __NR_readahead: u32 = 222;
-pub const __NR_setxattr: u32 = 224;
-pub const __NR_lsetxattr: u32 = 225;
-pub const __NR_fsetxattr: u32 = 226;
-pub const __NR_getxattr: u32 = 227;
-pub const __NR_lgetxattr: u32 = 228;
-pub const __NR_fgetxattr: u32 = 229;
-pub const __NR_listxattr: u32 = 230;
-pub const __NR_llistxattr: u32 = 231;
-pub const __NR_flistxattr: u32 = 232;
-pub const __NR_removexattr: u32 = 233;
-pub const __NR_lremovexattr: u32 = 234;
-pub const __NR_fremovexattr: u32 = 235;
-pub const __NR_gettid: u32 = 236;
-pub const __NR_tkill: u32 = 237;
-pub const __NR_futex: u32 = 238;
-pub const __NR_sched_setaffinity: u32 = 239;
-pub const __NR_sched_getaffinity: u32 = 240;
-pub const __NR_tgkill: u32 = 241;
-pub const __NR_io_setup: u32 = 243;
-pub const __NR_io_destroy: u32 = 244;
-pub const __NR_io_getevents: u32 = 245;
-pub const __NR_io_submit: u32 = 246;
-pub const __NR_io_cancel: u32 = 247;
-pub const __NR_exit_group: u32 = 248;
-pub const __NR_epoll_create: u32 = 249;
-pub const __NR_epoll_ctl: u32 = 250;
-pub const __NR_epoll_wait: u32 = 251;
-pub const __NR_set_tid_address: u32 = 252;
-pub const __NR_fadvise64: u32 = 253;
-pub const __NR_timer_create: u32 = 254;
-pub const __NR_timer_settime: u32 = 255;
-pub const __NR_timer_gettime: u32 = 256;
-pub const __NR_timer_getoverrun: u32 = 257;
-pub const __NR_timer_delete: u32 = 258;
-pub const __NR_clock_settime: u32 = 259;
-pub const __NR_clock_gettime: u32 = 260;
-pub const __NR_clock_getres: u32 = 261;
-pub const __NR_clock_nanosleep: u32 = 262;
-pub const __NR_statfs64: u32 = 265;
-pub const __NR_fstatfs64: u32 = 266;
-pub const __NR_remap_file_pages: u32 = 267;
-pub const __NR_mbind: u32 = 268;
-pub const __NR_get_mempolicy: u32 = 269;
-pub const __NR_set_mempolicy: u32 = 270;
-pub const __NR_mq_open: u32 = 271;
-pub const __NR_mq_unlink: u32 = 272;
-pub const __NR_mq_timedsend: u32 = 273;
-pub const __NR_mq_timedreceive: u32 = 274;
-pub const __NR_mq_notify: u32 = 275;
-pub const __NR_mq_getsetattr: u32 = 276;
-pub const __NR_kexec_load: u32 = 277;
-pub const __NR_add_key: u32 = 278;
-pub const __NR_request_key: u32 = 279;
-pub const __NR_keyctl: u32 = 280;
-pub const __NR_waitid: u32 = 281;
-pub const __NR_ioprio_set: u32 = 282;
-pub const __NR_ioprio_get: u32 = 283;
-pub const __NR_inotify_init: u32 = 284;
-pub const __NR_inotify_add_watch: u32 = 285;
-pub const __NR_inotify_rm_watch: u32 = 286;
-pub const __NR_migrate_pages: u32 = 287;
-pub const __NR_openat: u32 = 288;
-pub const __NR_mkdirat: u32 = 289;
-pub const __NR_mknodat: u32 = 290;
-pub const __NR_fchownat: u32 = 291;
-pub const __NR_futimesat: u32 = 292;
-pub const __NR_newfstatat: u32 = 293;
-pub const __NR_unlinkat: u32 = 294;
-pub const __NR_renameat: u32 = 295;
-pub const __NR_linkat: u32 = 296;
-pub const __NR_symlinkat: u32 = 297;
-pub const __NR_readlinkat: u32 = 298;
-pub const __NR_fchmodat: u32 = 299;
-pub const __NR_faccessat: u32 = 300;
-pub const __NR_pselect6: u32 = 301;
-pub const __NR_ppoll: u32 = 302;
-pub const __NR_unshare: u32 = 303;
-pub const __NR_set_robust_list: u32 = 304;
-pub const __NR_get_robust_list: u32 = 305;
-pub const __NR_splice: u32 = 306;
-pub const __NR_sync_file_range: u32 = 307;
-pub const __NR_tee: u32 = 308;
-pub const __NR_vmsplice: u32 = 309;
-pub const __NR_move_pages: u32 = 310;
-pub const __NR_getcpu: u32 = 311;
-pub const __NR_epoll_pwait: u32 = 312;
-pub const __NR_utimes: u32 = 313;
-pub const __NR_fallocate: u32 = 314;
-pub const __NR_utimensat: u32 = 315;
-pub const __NR_signalfd: u32 = 316;
-pub const __NR_timerfd: u32 = 317;
-pub const __NR_eventfd: u32 = 318;
-pub const __NR_timerfd_create: u32 = 319;
-pub const __NR_timerfd_settime: u32 = 320;
-pub const __NR_timerfd_gettime: u32 = 321;
-pub const __NR_signalfd4: u32 = 322;
-pub const __NR_eventfd2: u32 = 323;
-pub const __NR_inotify_init1: u32 = 324;
-pub const __NR_pipe2: u32 = 325;
-pub const __NR_dup3: u32 = 326;
-pub const __NR_epoll_create1: u32 = 327;
-pub const __NR_preadv: u32 = 328;
-pub const __NR_pwritev: u32 = 329;
-pub const __NR_rt_tgsigqueueinfo: u32 = 330;
-pub const __NR_perf_event_open: u32 = 331;
-pub const __NR_fanotify_init: u32 = 332;
-pub const __NR_fanotify_mark: u32 = 333;
-pub const __NR_prlimit64: u32 = 334;
-pub const __NR_name_to_handle_at: u32 = 335;
-pub const __NR_open_by_handle_at: u32 = 336;
-pub const __NR_clock_adjtime: u32 = 337;
-pub const __NR_syncfs: u32 = 338;
-pub const __NR_setns: u32 = 339;
-pub const __NR_process_vm_readv: u32 = 340;
-pub const __NR_process_vm_writev: u32 = 341;
-pub const __NR_s390_runtime_instr: u32 = 342;
-pub const __NR_kcmp: u32 = 343;
-pub const __NR_finit_module: u32 = 344;
-pub const __NR_sched_setattr: u32 = 345;
-pub const __NR_sched_getattr: u32 = 346;
-pub const __NR_renameat2: u32 = 347;
-pub const __NR_seccomp: u32 = 348;
-pub const __NR_getrandom: u32 = 349;
-pub const __NR_memfd_create: u32 = 350;
-pub const __NR_bpf: u32 = 351;
-pub const __NR_s390_pci_mmio_write: u32 = 352;
-pub const __NR_s390_pci_mmio_read: u32 = 353;
-pub const __NR_execveat: u32 = 354;
-pub const __NR_userfaultfd: u32 = 355;
-pub const __NR_membarrier: u32 = 356;
-pub const __NR_recvmmsg: u32 = 357;
-pub const __NR_sendmmsg: u32 = 358;
-pub const __NR_socket: u32 = 359;
-pub const __NR_socketpair: u32 = 360;
-pub const __NR_bind: u32 = 361;
-pub const __NR_connect: u32 = 362;
-pub const __NR_listen: u32 = 363;
-pub const __NR_accept4: u32 = 364;
-pub const __NR_getsockopt: u32 = 365;
-pub const __NR_setsockopt: u32 = 366;
-pub const __NR_getsockname: u32 = 367;
-pub const __NR_getpeername: u32 = 368;
-pub const __NR_sendto: u32 = 369;
-pub const __NR_sendmsg: u32 = 370;
-pub const __NR_recvfrom: u32 = 371;
-pub const __NR_recvmsg: u32 = 372;
-pub const __NR_shutdown: u32 = 373;
-pub const __NR_mlock2: u32 = 374;
-pub const __NR_copy_file_range: u32 = 375;
-pub const __NR_preadv2: u32 = 376;
-pub const __NR_pwritev2: u32 = 377;
-pub const __NR_s390_guarded_storage: u32 = 378;
-pub const __NR_statx: u32 = 379;
-pub const __NR_s390_sthyi: u32 = 380;
-pub const __NR_kexec_file_load: u32 = 381;
-pub const __NR_io_pgetevents: u32 = 382;
-pub const __NR_rseq: u32 = 383;
-pub const __NR_pkey_mprotect: u32 = 384;
-pub const __NR_pkey_alloc: u32 = 385;
-pub const __NR_pkey_free: u32 = 386;
-pub const __NR_semtimedop: u32 = 392;
-pub const __NR_semget: u32 = 393;
-pub const __NR_semctl: u32 = 394;
-pub const __NR_shmget: u32 = 395;
-pub const __NR_shmctl: u32 = 396;
-pub const __NR_shmat: u32 = 397;
-pub const __NR_shmdt: u32 = 398;
-pub const __NR_msgget: u32 = 399;
-pub const __NR_msgsnd: u32 = 400;
-pub const __NR_msgrcv: u32 = 401;
-pub const __NR_msgctl: u32 = 402;
-pub const __NR_pidfd_send_signal: u32 = 424;
-pub const __NR_io_uring_setup: u32 = 425;
-pub const __NR_io_uring_enter: u32 = 426;
-pub const __NR_io_uring_register: u32 = 427;
-pub const __NR_open_tree: u32 = 428;
-pub const __NR_move_mount: u32 = 429;
-pub const __NR_fsopen: u32 = 430;
-pub const __NR_fsconfig: u32 = 431;
-pub const __NR_fsmount: u32 = 432;
-pub const __NR_fspick: u32 = 433;
-pub const __NR_pidfd_open: u32 = 434;
-pub const __NR_clone3: u32 = 435;
-pub const __NR_close_range: u32 = 436;
-pub const __NR_openat2: u32 = 437;
-pub const __NR_pidfd_getfd: u32 = 438;
-pub const __NR_faccessat2: u32 = 439;
-pub const __NR_process_madvise: u32 = 440;
-pub const __NR_epoll_pwait2: u32 = 441;
-pub const __NR_mount_setattr: u32 = 442;
-pub const __NR_quotactl_fd: u32 = 443;
-pub const __NR_landlock_create_ruleset: u32 = 444;
-pub const __NR_landlock_add_rule: u32 = 445;
-pub const __NR_landlock_restrict_self: u32 = 446;
-pub const __NR_process_mrelease: u32 = 448;
-pub const __NR_futex_waitv: u32 = 449;
-pub const __NR_set_mempolicy_home_node: u32 = 450;
-pub const __OLD_UTS_LEN: u32 = 8;
-pub const __NEW_UTS_LEN: u32 = 64;
-pub const WNOHANG: u32 = 1;
-pub const WUNTRACED: u32 = 2;
-pub const WSTOPPED: u32 = 2;
-pub const WEXITED: u32 = 4;
-pub const WCONTINUED: u32 = 8;
-pub const WNOWAIT: u32 = 16777216;
-pub const __WNOTHREAD: u32 = 536870912;
-pub const __WALL: u32 = 1073741824;
-pub const __WCLONE: u32 = 2147483648;
-pub const P_ALL: u32 = 0;
-pub const P_PID: u32 = 1;
-pub const P_PGID: u32 = 2;
-pub const P_PIDFD: u32 = 3;
-pub const XATTR_CREATE: u32 = 1;
-pub const XATTR_REPLACE: u32 = 2;
-pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0";
-pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0";
-pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0";
-pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0";
-pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0";
-pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0";
-pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0";
-pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0";
-pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0";
-pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0";
-pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0";
-pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0";
-pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0";
-pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0";
-pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0";
-pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0";
-pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0";
-pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0";
-pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0";
-pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0";
-pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0";
-pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0";
-pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0";
-pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0";
-pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0";
-pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0";
-pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0";
-pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0";
-pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0";
-pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0";
-pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0";
-pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0";
-pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0";
-pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0";
-pub const MFD_CLOEXEC: u32 = 1;
-pub const MFD_ALLOW_SEALING: u32 = 2;
-pub const MFD_HUGETLB: u32 = 4;
-pub const MFD_HUGE_SHIFT: u32 = 26;
-pub const MFD_HUGE_MASK: u32 = 63;
-pub const MFD_HUGE_64KB: u32 = 1073741824;
-pub const MFD_HUGE_512KB: u32 = 1275068416;
-pub const MFD_HUGE_1MB: u32 = 1342177280;
-pub const MFD_HUGE_2MB: u32 = 1409286144;
-pub const MFD_HUGE_8MB: u32 = 1543503872;
-pub const MFD_HUGE_16MB: u32 = 1610612736;
-pub const MFD_HUGE_32MB: u32 = 1677721600;
-pub const MFD_HUGE_256MB: u32 = 1879048192;
-pub const MFD_HUGE_512MB: u32 = 1946157056;
-pub const MFD_HUGE_1GB: u32 = 2013265920;
-pub const MFD_HUGE_2GB: u32 = 2080374784;
-pub const MFD_HUGE_16GB: u32 = 2281701376;
-pub const TFD_TIMER_ABSTIME: u32 = 1;
-pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2;
-pub const TFD_CLOEXEC: u32 = 524288;
-pub const TFD_NONBLOCK: u32 = 2048;
-pub const USERFAULTFD_IOC: u32 = 170;
-pub const _UFFDIO_REGISTER: u32 = 0;
-pub const _UFFDIO_UNREGISTER: u32 = 1;
-pub const _UFFDIO_WAKE: u32 = 2;
-pub const _UFFDIO_COPY: u32 = 3;
-pub const _UFFDIO_ZEROPAGE: u32 = 4;
-pub const _UFFDIO_WRITEPROTECT: u32 = 6;
-pub const _UFFDIO_CONTINUE: u32 = 7;
-pub const _UFFDIO_API: u32 = 63;
-pub const UFFDIO: u32 = 170;
-pub const UFFD_EVENT_PAGEFAULT: u32 = 18;
-pub const UFFD_EVENT_FORK: u32 = 19;
-pub const UFFD_EVENT_REMAP: u32 = 20;
-pub const UFFD_EVENT_REMOVE: u32 = 21;
-pub const UFFD_EVENT_UNMAP: u32 = 22;
-pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1;
-pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2;
-pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4;
-pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1;
-pub const UFFD_FEATURE_EVENT_FORK: u32 = 2;
-pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4;
-pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8;
-pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16;
-pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32;
-pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64;
-pub const UFFD_FEATURE_SIGBUS: u32 = 128;
-pub const UFFD_FEATURE_THREAD_ID: u32 = 256;
-pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512;
-pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024;
-pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048;
-pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096;
-pub const UFFD_USER_MODE_ONLY: u32 = 1;
-pub const IORING_FILE_INDEX_ALLOC: i32 = -1;
-pub const IORING_SETUP_IOPOLL: u32 = 1;
-pub const IORING_SETUP_SQPOLL: u32 = 2;
-pub const IORING_SETUP_SQ_AFF: u32 = 4;
-pub const IORING_SETUP_CQSIZE: u32 = 8;
-pub const IORING_SETUP_CLAMP: u32 = 16;
-pub const IORING_SETUP_ATTACH_WQ: u32 = 32;
-pub const IORING_SETUP_R_DISABLED: u32 = 64;
-pub const IORING_SETUP_SUBMIT_ALL: u32 = 128;
-pub const IORING_SETUP_COOP_TASKRUN: u32 = 256;
-pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512;
-pub const IORING_SETUP_SQE128: u32 = 1024;
-pub const IORING_SETUP_CQE32: u32 = 2048;
-pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096;
-pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192;
-pub const IORING_URING_CMD_FIXED: u32 = 1;
-pub const IORING_FSYNC_DATASYNC: u32 = 1;
-pub const IORING_TIMEOUT_ABS: u32 = 1;
-pub const IORING_TIMEOUT_UPDATE: u32 = 2;
-pub const IORING_TIMEOUT_BOOTTIME: u32 = 4;
-pub const IORING_TIMEOUT_REALTIME: u32 = 8;
-pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16;
-pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32;
-pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12;
-pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18;
-pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648;
-pub const IORING_POLL_ADD_MULTI: u32 = 1;
-pub const IORING_POLL_UPDATE_EVENTS: u32 = 2;
-pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4;
-pub const IORING_POLL_ADD_LEVEL: u32 = 8;
-pub const IORING_ASYNC_CANCEL_ALL: u32 = 1;
-pub const IORING_ASYNC_CANCEL_FD: u32 = 2;
-pub const IORING_ASYNC_CANCEL_ANY: u32 = 4;
-pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8;
-pub const IORING_RECVSEND_POLL_FIRST: u32 = 1;
-pub const IORING_RECV_MULTISHOT: u32 = 2;
-pub const IORING_RECVSEND_FIXED_BUF: u32 = 4;
-pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8;
-pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648;
-pub const IORING_ACCEPT_MULTISHOT: u32 = 1;
-pub const IORING_MSG_RING_CQE_SKIP: u32 = 1;
-pub const IORING_CQE_F_BUFFER: u32 = 1;
-pub const IORING_CQE_F_MORE: u32 = 2;
-pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4;
-pub const IORING_CQE_F_NOTIF: u32 = 8;
-pub const IORING_OFF_SQ_RING: u32 = 0;
-pub const IORING_OFF_CQ_RING: u32 = 134217728;
-pub const IORING_OFF_SQES: u32 = 268435456;
-pub const IORING_SQ_NEED_WAKEUP: u32 = 1;
-pub const IORING_SQ_CQ_OVERFLOW: u32 = 2;
-pub const IORING_SQ_TASKRUN: u32 = 4;
-pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1;
-pub const IORING_ENTER_GETEVENTS: u32 = 1;
-pub const IORING_ENTER_SQ_WAKEUP: u32 = 2;
-pub const IORING_ENTER_SQ_WAIT: u32 = 4;
-pub const IORING_ENTER_EXT_ARG: u32 = 8;
-pub const IORING_ENTER_REGISTERED_RING: u32 = 16;
-pub const IORING_FEAT_SINGLE_MMAP: u32 = 1;
-pub const IORING_FEAT_NODROP: u32 = 2;
-pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4;
-pub const IORING_FEAT_RW_CUR_POS: u32 = 8;
-pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16;
-pub const IORING_FEAT_FAST_POLL: u32 = 32;
-pub const IORING_FEAT_POLL_32BITS: u32 = 64;
-pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128;
-pub const IORING_FEAT_EXT_ARG: u32 = 256;
-pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512;
-pub const IORING_FEAT_RSRC_TAGS: u32 = 1024;
-pub const IORING_FEAT_CQE_SKIP: u32 = 2048;
-pub const IORING_FEAT_LINKED_FILE: u32 = 4096;
-pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1;
-pub const IORING_REGISTER_FILES_SKIP: i32 = -2;
-pub const IO_URING_OP_SUPPORTED: u32 = 1;
-pub const DT_UNKNOWN: u32 = 0;
-pub const DT_FIFO: u32 = 1;
-pub const DT_CHR: u32 = 2;
-pub const DT_DIR: u32 = 4;
-pub const DT_BLK: u32 = 6;
-pub const DT_REG: u32 = 8;
-pub const DT_LNK: u32 = 10;
-pub const DT_SOCK: u32 = 12;
-pub const SHUT_RD: u32 = 0;
-pub const SHUT_WR: u32 = 1;
-pub const SHUT_RDWR: u32 = 2;
-pub const STAT_HAVE_NSEC: u32 = 1;
-pub const SOCK_STREAM: u32 = 1;
-pub const SOCK_DGRAM: u32 = 2;
-pub const SOCK_RAW: u32 = 3;
-pub const SOCK_RDM: u32 = 4;
-pub const SOCK_SEQPACKET: u32 = 5;
-pub const F_OK: u32 = 0;
-pub const R_OK: u32 = 4;
-pub const W_OK: u32 = 2;
-pub const X_OK: u32 = 1;
-pub const UTIME_NOW: u32 = 1073741823;
-pub const UTIME_OMIT: u32 = 1073741822;
-pub const MSG_DONTWAIT: u32 = 64;
-pub const AF_UNSPEC: u32 = 0;
-pub const AF_UNIX: u32 = 1;
-pub const AF_INET: u32 = 2;
-pub const AF_AX25: u32 = 3;
-pub const AF_IPX: u32 = 4;
-pub const AF_APPLETALK: u32 = 5;
-pub const AF_NETROM: u32 = 6;
-pub const AF_BRIDGE: u32 = 7;
-pub const AF_ATMPVC: u32 = 8;
-pub const AF_X25: u32 = 9;
-pub const AF_INET6: u32 = 10;
-pub const AF_ROSE: u32 = 11;
-pub const AF_DECnet: u32 = 12;
-pub const AF_NETBEUI: u32 = 13;
-pub const AF_SECURITY: u32 = 14;
-pub const AF_KEY: u32 = 15;
-pub const AF_NETLINK: u32 = 16;
-pub const AF_PACKET: u32 = 17;
-pub const AF_ASH: u32 = 18;
-pub const AF_ECONET: u32 = 19;
-pub const AF_ATMSVC: u32 = 20;
-pub const AF_RDS: u32 = 21;
-pub const AF_SNA: u32 = 22;
-pub const AF_IRDA: u32 = 23;
-pub const AF_PPPOX: u32 = 24;
-pub const AF_WANPIPE: u32 = 25;
-pub const AF_LLC: u32 = 26;
-pub const AF_CAN: u32 = 29;
-pub const AF_TIPC: u32 = 30;
-pub const AF_BLUETOOTH: u32 = 31;
-pub const AF_IUCV: u32 = 32;
-pub const AF_RXRPC: u32 = 33;
-pub const AF_ISDN: u32 = 34;
-pub const AF_PHONET: u32 = 35;
-pub const AF_IEEE802154: u32 = 36;
-pub const AF_MAX: u32 = 37;
-pub const MSG_OOB: u32 = 1;
-pub const MSG_PEEK: u32 = 2;
-pub const MSG_DONTROUTE: u32 = 4;
-pub const MSG_CTRUNC: u32 = 8;
-pub const MSG_PROBE: u32 = 16;
-pub const MSG_TRUNC: u32 = 32;
-pub const MSG_EOR: u32 = 128;
-pub const MSG_WAITALL: u32 = 256;
-pub const MSG_FIN: u32 = 512;
-pub const MSG_SYN: u32 = 1024;
-pub const MSG_CONFIRM: u32 = 2048;
-pub const MSG_RST: u32 = 4096;
-pub const MSG_ERRQUEUE: u32 = 8192;
-pub const MSG_NOSIGNAL: u32 = 16384;
-pub const MSG_MORE: u32 = 32768;
-pub const MSG_CMSG_CLOEXEC: u32 = 1073741824;
-pub const STDIN_FILENO: u32 = 0;
-pub const STDOUT_FILENO: u32 = 1;
-pub const STDERR_FILENO: u32 = 2;
-pub const RWF_HIPRI: u32 = 1;
-pub const RWF_DSYNC: u32 = 2;
-pub const RWF_SYNC: u32 = 4;
-pub const RWF_NOWAIT: u32 = 8;
-pub const RWF_APPEND: u32 = 16;
-pub const EFD_SEMAPHORE: u32 = 1;
-pub const EFD_CLOEXEC: u32 = 524288;
-pub const EFD_NONBLOCK: u32 = 2048;
-pub const EPOLLIN: u32 = 1;
-pub const EPOLLPRI: u32 = 2;
-pub const EPOLLOUT: u32 = 4;
-pub const EPOLLERR: u32 = 8;
-pub const EPOLLHUP: u32 = 16;
-pub const EPOLLNVAL: u32 = 32;
-pub const EPOLLRDNORM: u32 = 64;
-pub const EPOLLRDBAND: u32 = 128;
-pub const EPOLLWRNORM: u32 = 256;
-pub const EPOLLWRBAND: u32 = 512;
-pub const EPOLLMSG: u32 = 1024;
-pub const EPOLLRDHUP: u32 = 8192;
-pub const EPOLLEXCLUSIVE: u32 = 268435456;
-pub const EPOLLWAKEUP: u32 = 536870912;
-pub const EPOLLONESHOT: u32 = 1073741824;
-pub const EPOLLET: u32 = 2147483648;
-pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336;
-pub const TFD_CREATE_FLAGS: u32 = 526336;
-pub const TFD_SETTIME_FLAGS: u32 = 1;
-pub const SCM_RIGHTS: u32 = 1;
-pub const SCM_CREDENTIALS: u32 = 2;
-pub const SCM_SECURITY: u32 = 3;
-pub const UFFD_API: u32 = 170;
-pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1;
-pub const UFFDIO_REGISTER_MODE_WP: u32 = 2;
-pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4;
-pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1;
-pub const UFFDIO_COPY_MODE_WP: u32 = 2;
-pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1;
-pub const SPLICE_F_MOVE: u32 = 1;
-pub const SPLICE_F_NONBLOCK: u32 = 2;
-pub const SPLICE_F_MORE: u32 = 4;
-pub const SPLICE_F_GIFT: u32 = 8;
-pub const MNT_FORCE: u32 = 1;
-pub const MNT_DETACH: u32 = 2;
-pub const MNT_EXPIRE: u32 = 4;
-pub const UMOUNT_NOFOLLOW: u32 = 8;
-pub const UMOUNT_UNUSED: u32 = 2147483648;
-pub type size_t = crate::ctypes::c_ulong;
-pub type ssize_t = crate::ctypes::c_long;
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-pub type addr_t = crate::ctypes::c_ulong;
-pub type saddr_t = crate::ctypes::c_long;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __vector128 {
-pub u: [__u32; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 16usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_size_t = crate::ctypes::c_ulong;
-pub type __kernel_ssize_t = crate::ctypes::c_long;
-pub type __kernel_old_dev_t = crate::ctypes::c_ushort;
-pub type __kernel_ino_t = crate::ctypes::c_uint;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_ptrdiff_t = crate::ctypes::c_long;
-pub type __kernel_sigset_t = crate::ctypes::c_ulong;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_uid_t = __kernel_uid_t;
-pub type __kernel_old_gid_t = __kernel_gid_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_header_struct {
-pub version: __u32,
-pub pid: crate::ctypes::c_int,
-}
-pub type cap_user_header_t = *mut __user_cap_header_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_data_struct {
-pub effective: __u32,
-pub permitted: __u32,
-pub inheritable: __u32,
-}
-pub type cap_user_data_t = *mut __user_cap_data_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_cap_data__bindgen_ty_1; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize],
-pub rootid: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct f_owner_ex {
-pub type_: crate::ctypes::c_int,
-pub pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_off_t,
-pub l_len: __kernel_off_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock64 {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_loff_t,
-pub l_len: __kernel_loff_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct open_how {
-pub flags: __u64,
-pub mode: __u64,
-pub resolve: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct epoll_event {
-pub events: __poll_t,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v1 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub master_key_descriptor: [__u8; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_key {
-pub mode: __u32,
-pub raw: [__u8; 64usize],
-pub size: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v2 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub __reserved: [__u8; 4usize],
-pub master_key_identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_policy_ex_arg {
-pub policy_size: __u64,
-pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 {
-pub version: __u8,
-pub v1: fscrypt_policy_v1,
-pub v2: fscrypt_policy_v2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_key_specifier {
-pub type_: __u32,
-pub __reserved: __u32,
-pub u: fscrypt_key_specifier__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_key_specifier__bindgen_ty_1 {
-pub __reserved: [__u8; 32usize],
-pub descriptor: [__u8; 8usize],
-pub identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct fscrypt_provisioning_key_payload {
-pub type_: __u32,
-pub __reserved: __u32,
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-pub struct fscrypt_add_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub raw_size: __u32,
-pub key_id: __u32,
-pub __reserved: [__u32; 8usize],
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_remove_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub removal_status_flags: __u32,
-pub __reserved: [__u32; 5usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_key_status_arg {
-pub key_spec: fscrypt_key_specifier,
-pub __reserved: [__u32; 6usize],
-pub status: __u32,
-pub status_flags: __u32,
-pub user_count: __u32,
-pub __out_reserved: [__u32; 13usize],
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum fsconfig_command {
-FSCONFIG_SET_FLAG = 0,
-FSCONFIG_SET_STRING = 1,
-FSCONFIG_SET_BINARY = 2,
-FSCONFIG_SET_PATH = 3,
-FSCONFIG_SET_PATH_EMPTY = 4,
-FSCONFIG_SET_FD = 5,
-FSCONFIG_CMD_CREATE = 6,
-FSCONFIG_CMD_RECONFIGURE = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mount_attr {
-pub attr_set: __u64,
-pub attr_clr: __u64,
-pub propagation: __u64,
-pub userns_fd: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_clone_range {
-pub src_fd: __s64,
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_offset: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fstrim_range {
-pub start: __u64,
-pub len: __u64,
-pub minlen: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_dedupe_range_info {
-pub dest_fd: __s64,
-pub dest_offset: __u64,
-pub bytes_deduped: __u64,
-pub status: __s32,
-pub reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct file_dedupe_range {
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_count: __u16,
-pub reserved1: __u16,
-pub reserved2: __u32,
-pub info: __IncompleteArrayField<file_dedupe_range_info>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct files_stat_struct {
-pub nr_files: crate::ctypes::c_ulong,
-pub nr_free_files: crate::ctypes::c_ulong,
-pub max_files: crate::ctypes::c_ulong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct inodes_stat_t {
-pub nr_inodes: crate::ctypes::c_long,
-pub nr_unused: crate::ctypes::c_long,
-pub dummy: [crate::ctypes::c_long; 5usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fsxattr {
-pub fsx_xflags: __u32,
-pub fsx_extsize: __u32,
-pub fsx_nextents: __u32,
-pub fsx_projid: __u32,
-pub fsx_cowextsize: __u32,
-pub fsx_pad: [crate::ctypes::c_uchar; 8usize],
-}
-pub type __kernel_rwf_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct futex_waitv {
-pub val: __u64,
-pub uaddr: __u64,
-pub flags: __u32,
-pub __reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list {
-pub next: *mut robust_list,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list_head {
-pub list: robust_list,
-pub futex_offset: crate::ctypes::c_long,
-pub list_op_pending: *mut robust_list,
-}
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP;
-pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP;
-pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP;
-pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP;
-pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP;
-pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP;
-pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP;
-pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP;
-pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP;
-pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP;
-pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP;
-pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6;
-pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP;
-pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE;
-pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP;
-pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH;
-pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP;
-pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH;
-pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP;
-pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM;
-pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP;
-pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP;
-pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP;
-pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE;
-pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS;
-pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET;
-pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW;
-pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP;
-pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-IPPROTO_IP = 0,
-IPPROTO_ICMP = 1,
-IPPROTO_IGMP = 2,
-IPPROTO_IPIP = 4,
-IPPROTO_TCP = 6,
-IPPROTO_EGP = 8,
-IPPROTO_PUP = 12,
-IPPROTO_UDP = 17,
-IPPROTO_IDP = 22,
-IPPROTO_TP = 29,
-IPPROTO_DCCP = 33,
-IPPROTO_IPV6 = 41,
-IPPROTO_RSVP = 46,
-IPPROTO_GRE = 47,
-IPPROTO_ESP = 50,
-IPPROTO_AH = 51,
-IPPROTO_MTP = 92,
-IPPROTO_BEETPH = 94,
-IPPROTO_ENCAP = 98,
-IPPROTO_PIM = 103,
-IPPROTO_COMP = 108,
-IPPROTO_L2TP = 115,
-IPPROTO_SCTP = 132,
-IPPROTO_UDPLITE = 136,
-IPPROTO_MPLS = 137,
-IPPROTO_ETHERNET = 143,
-IPPROTO_RAW = 255,
-IPPROTO_MPTCP = 262,
-IPPROTO_MAX = 263,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_addr {
-pub s_addr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq {
-pub imr_multiaddr: in_addr,
-pub imr_interface: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreqn {
-pub imr_multiaddr: in_addr,
-pub imr_address: in_addr,
-pub imr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq_source {
-pub imr_multiaddr: __be32,
-pub imr_interface: __be32,
-pub imr_sourceaddr: __be32,
-}
-#[repr(C)]
-pub struct ip_msfilter {
-pub imsf_multiaddr: __be32,
-pub imsf_interface: __be32,
-pub imsf_fmode: __u32,
-pub imsf_numsrc: __u32,
-pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct ip_msfilter__bindgen_ty_1 {
-pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>,
-pub __bindgen_anon_1: __BindgenUnionField<ip_msfilter__bindgen_ty_1__bindgen_ty_1>,
-pub bindgen_union_field: u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 {
-pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-pub imsf_slist_flex: __IncompleteArrayField<__be32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_req {
-pub gr_interface: __u32,
-pub gr_group: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_source_req {
-pub gsr_interface: __u32,
-pub gsr_group: __kernel_sockaddr_storage,
-pub gsr_source: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-pub struct group_filter {
-pub __bindgen_anon_1: group_filter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_1>,
-pub __bindgen_anon_2: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_2>,
-pub bindgen_union_field: [u64; 34usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_1 {
-pub gf_interface_aux: __u32,
-pub gf_group_aux: __kernel_sockaddr_storage,
-pub gf_fmode_aux: __u32,
-pub gf_numsrc_aux: __u32,
-pub gf_slist: [__kernel_sockaddr_storage; 1usize],
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_2 {
-pub gf_interface: __u32,
-pub gf_group: __kernel_sockaddr_storage,
-pub gf_fmode: __u32,
-pub gf_numsrc: __u32,
-pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_pktinfo {
-pub ipi_ifindex: crate::ctypes::c_int,
-pub ipi_spec_dst: in_addr,
-pub ipi_addr: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_in {
-pub sin_family: __kernel_sa_family_t,
-pub sin_port: __be16,
-pub sin_addr: in_addr,
-pub __pad: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct inotify_event {
-pub wd: __s32,
-pub mask: __u32,
-pub cookie: __u32,
-pub len: __u32,
-pub name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct iphdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub tos: __u8,
-pub tot_len: __be16,
-pub id: __be16,
-pub frag_off: __be16,
-pub ttl: __u8,
-pub protocol: __u8,
-pub check: __sum16,
-pub __bindgen_anon_1: iphdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union iphdr__bindgen_ty_1 {
-pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-impl iphdr {
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn ihl(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_ihl(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(version: __u8, ihl: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let ihl: u8 = unsafe { ::core::mem::transmute(ihl) };
-ihl as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_auth_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub reserved: __be16,
-pub spi: __be32,
-pub seq_no: __be32,
-pub auth_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_esp_hdr {
-pub spi: __be32,
-pub seq_no: __be32,
-pub enc_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_comp_hdr {
-pub nexthdr: __u8,
-pub flags: __u8,
-pub cpi: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_beet_phdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub padlen: __u8,
-pub reserved: __u8,
-}
-pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING;
-pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING;
-pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP;
-pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS;
-pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS;
-pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS;
-pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA;
-pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER;
-pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY;
-pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS;
-pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG;
-pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER;
-pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID;
-pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM;
-pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY;
-pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION;
-pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE;
-pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE;
-pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES;
-pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT;
-pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY;
-pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL;
-pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK;
-pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN;
-pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET;
-pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP;
-pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING;
-pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER;
-pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IPV4_DEVCONF_FORWARDING = 1,
-IPV4_DEVCONF_MC_FORWARDING = 2,
-IPV4_DEVCONF_PROXY_ARP = 3,
-IPV4_DEVCONF_ACCEPT_REDIRECTS = 4,
-IPV4_DEVCONF_SECURE_REDIRECTS = 5,
-IPV4_DEVCONF_SEND_REDIRECTS = 6,
-IPV4_DEVCONF_SHARED_MEDIA = 7,
-IPV4_DEVCONF_RP_FILTER = 8,
-IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9,
-IPV4_DEVCONF_BOOTP_RELAY = 10,
-IPV4_DEVCONF_LOG_MARTIANS = 11,
-IPV4_DEVCONF_TAG = 12,
-IPV4_DEVCONF_ARPFILTER = 13,
-IPV4_DEVCONF_MEDIUM_ID = 14,
-IPV4_DEVCONF_NOXFRM = 15,
-IPV4_DEVCONF_NOPOLICY = 16,
-IPV4_DEVCONF_FORCE_IGMP_VERSION = 17,
-IPV4_DEVCONF_ARP_ANNOUNCE = 18,
-IPV4_DEVCONF_ARP_IGNORE = 19,
-IPV4_DEVCONF_PROMOTE_SECONDARIES = 20,
-IPV4_DEVCONF_ARP_ACCEPT = 21,
-IPV4_DEVCONF_ARP_NOTIFY = 22,
-IPV4_DEVCONF_ACCEPT_LOCAL = 23,
-IPV4_DEVCONF_SRC_VMARK = 24,
-IPV4_DEVCONF_PROXY_ARP_PVLAN = 25,
-IPV4_DEVCONF_ROUTE_LOCALNET = 26,
-IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27,
-IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28,
-IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29,
-IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30,
-IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31,
-IPV4_DEVCONF_BC_FORWARDING = 32,
-IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33,
-__IPV4_DEVCONF_MAX = 34,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_addr {
-pub in6_u: in6_addr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union in6_addr__bindgen_ty_1 {
-pub u6_addr8: [__u8; 16usize],
-pub u6_addr16: [__be16; 8usize],
-pub u6_addr32: [__be32; 4usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr_in6 {
-pub sin6_family: crate::ctypes::c_ushort,
-pub sin6_port: __be16,
-pub sin6_flowinfo: __be32,
-pub sin6_addr: in6_addr,
-pub sin6_scope_id: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6_mreq {
-pub ipv6mr_multiaddr: in6_addr,
-pub ipv6mr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_flowlabel_req {
-pub flr_dst: in6_addr,
-pub flr_label: __be32,
-pub flr_action: __u8,
-pub flr_share: __u8,
-pub flr_flags: __u16,
-pub flr_expires: __u16,
-pub flr_linger: __u16,
-pub __flr_pad: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_pktinfo {
-pub ipi6_addr: in6_addr,
-pub ipi6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ip6_mtuinfo {
-pub ip6m_addr: sockaddr_in6,
-pub ip6m_mtu: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_ifreq {
-pub ifr6_addr: in6_addr,
-pub ifr6_prefixlen: __u32,
-pub ifr6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_rt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub type_: __u8,
-pub segments_left: __u8,
-}
-#[repr(C, packed)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_opt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-}
-#[repr(C)]
-pub struct rt0_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: __IncompleteArrayField<in6_addr>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rt2_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: in6_addr,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct ipv6_destopt_hao {
-pub type_: __u8,
-pub length: __u8,
-pub addr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub flow_lbl: [__u8; 3usize],
-pub payload_len: __be16,
-pub nexthdr: __u8,
-pub hop_limit: __u8,
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union ipv6hdr__bindgen_ty_1 {
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-impl ipv6hdr {
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn priority(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_priority(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(version: __u8, priority: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let priority: u8 = unsafe { ::core::mem::transmute(priority) };
-priority as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING;
-pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT;
-pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6;
-pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA;
-pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS;
-pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF;
-pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS;
-pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS;
-pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL;
-pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY;
-pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR;
-pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT;
-pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT;
-pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY;
-pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR;
-pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES;
-pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION;
-pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR;
-pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO;
-pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF;
-pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN;
-pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP;
-pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD;
-pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING;
-pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6;
-pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD;
-pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO;
-pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY;
-pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC;
-pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL;
-pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC;
-pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU;
-pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET;
-pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY;
-pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT;
-pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA;
-pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN;
-pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL;
-pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED;
-pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC;
-pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD;
-pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE;
-pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN;
-pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS;
-pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED;
-pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC;
-pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED;
-pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID;
-pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE;
-pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER;
-pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA;
-pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-DEVCONF_FORWARDING = 0,
-DEVCONF_HOPLIMIT = 1,
-DEVCONF_MTU6 = 2,
-DEVCONF_ACCEPT_RA = 3,
-DEVCONF_ACCEPT_REDIRECTS = 4,
-DEVCONF_AUTOCONF = 5,
-DEVCONF_DAD_TRANSMITS = 6,
-DEVCONF_RTR_SOLICITS = 7,
-DEVCONF_RTR_SOLICIT_INTERVAL = 8,
-DEVCONF_RTR_SOLICIT_DELAY = 9,
-DEVCONF_USE_TEMPADDR = 10,
-DEVCONF_TEMP_VALID_LFT = 11,
-DEVCONF_TEMP_PREFERED_LFT = 12,
-DEVCONF_REGEN_MAX_RETRY = 13,
-DEVCONF_MAX_DESYNC_FACTOR = 14,
-DEVCONF_MAX_ADDRESSES = 15,
-DEVCONF_FORCE_MLD_VERSION = 16,
-DEVCONF_ACCEPT_RA_DEFRTR = 17,
-DEVCONF_ACCEPT_RA_PINFO = 18,
-DEVCONF_ACCEPT_RA_RTR_PREF = 19,
-DEVCONF_RTR_PROBE_INTERVAL = 20,
-DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21,
-DEVCONF_PROXY_NDP = 22,
-DEVCONF_OPTIMISTIC_DAD = 23,
-DEVCONF_ACCEPT_SOURCE_ROUTE = 24,
-DEVCONF_MC_FORWARDING = 25,
-DEVCONF_DISABLE_IPV6 = 26,
-DEVCONF_ACCEPT_DAD = 27,
-DEVCONF_FORCE_TLLAO = 28,
-DEVCONF_NDISC_NOTIFY = 29,
-DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30,
-DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31,
-DEVCONF_SUPPRESS_FRAG_NDISC = 32,
-DEVCONF_ACCEPT_RA_FROM_LOCAL = 33,
-DEVCONF_USE_OPTIMISTIC = 34,
-DEVCONF_ACCEPT_RA_MTU = 35,
-DEVCONF_STABLE_SECRET = 36,
-DEVCONF_USE_OIF_ADDRS_ONLY = 37,
-DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38,
-DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39,
-DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40,
-DEVCONF_DROP_UNSOLICITED_NA = 41,
-DEVCONF_KEEP_ADDR_ON_DOWN = 42,
-DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43,
-DEVCONF_SEG6_ENABLED = 44,
-DEVCONF_SEG6_REQUIRE_HMAC = 45,
-DEVCONF_ENHANCED_DAD = 46,
-DEVCONF_ADDR_GEN_MODE = 47,
-DEVCONF_DISABLE_POLICY = 48,
-DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49,
-DEVCONF_NDISC_TCLASS = 50,
-DEVCONF_RPL_SEG_ENABLED = 51,
-DEVCONF_RA_DEFRTR_METRIC = 52,
-DEVCONF_IOAM6_ENABLED = 53,
-DEVCONF_IOAM6_ID = 54,
-DEVCONF_IOAM6_ID_WIDE = 55,
-DEVCONF_NDISC_EVICT_NOCARRIER = 56,
-DEVCONF_ACCEPT_UNTRACKED_NA = 57,
-DEVCONF_MAX = 58,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum socket_state {
-SS_FREE = 0,
-SS_UNCONNECTED = 1,
-SS_CONNECTING = 2,
-SS_CONNECTED = 3,
-SS_DISCONNECTING = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct pollfd {
-pub fd: crate::ctypes::c_int,
-pub events: crate::ctypes::c_short,
-pub revents: crate::ctypes::c_short,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prctl_mm_map {
-pub start_code: __u64,
-pub end_code: __u64,
-pub start_data: __u64,
-pub end_data: __u64,
-pub start_brk: __u64,
-pub brk: __u64,
-pub start_stack: __u64,
-pub arg_start: __u64,
-pub arg_end: __u64,
-pub env_start: __u64,
-pub env_end: __u64,
-pub auxv: *mut __u64,
-pub auxv_size: __u32,
-pub exe_fd: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rand_pool_info {
-pub entropy_count: crate::ctypes::c_int,
-pub buf_size: crate::ctypes::c_int,
-pub buf: __IncompleteArrayField<__u32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_timespec {
-pub tv_sec: __kernel_time64_t,
-pub tv_nsec: crate::ctypes::c_longlong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_itimerspec {
-pub it_interval: __kernel_timespec,
-pub it_value: __kernel_timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timeval {
-pub tv_sec: __kernel_long_t,
-pub tv_usec: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_itimerval {
-pub it_interval: __kernel_old_timeval,
-pub it_value: __kernel_old_timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sock_timeval {
-pub tv_sec: __s64,
-pub tv_usec: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timeval {
-pub tv_sec: __kernel_old_time_t,
-pub tv_usec: __kernel_suseconds_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerspec {
-pub it_interval: timespec,
-pub it_value: timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerval {
-pub it_interval: timeval,
-pub it_value: timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timezone {
-pub tz_minuteswest: crate::ctypes::c_int,
-pub tz_dsttime: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rusage {
-pub ru_utime: __kernel_old_timeval,
-pub ru_stime: __kernel_old_timeval,
-pub ru_maxrss: __kernel_long_t,
-pub ru_ixrss: __kernel_long_t,
-pub ru_idrss: __kernel_long_t,
-pub ru_isrss: __kernel_long_t,
-pub ru_minflt: __kernel_long_t,
-pub ru_majflt: __kernel_long_t,
-pub ru_nswap: __kernel_long_t,
-pub ru_inblock: __kernel_long_t,
-pub ru_oublock: __kernel_long_t,
-pub ru_msgsnd: __kernel_long_t,
-pub ru_msgrcv: __kernel_long_t,
-pub ru_nsignals: __kernel_long_t,
-pub ru_nvcsw: __kernel_long_t,
-pub ru_nivcsw: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit {
-pub rlim_cur: __kernel_ulong_t,
-pub rlim_max: __kernel_ulong_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit64 {
-pub rlim_cur: __u64,
-pub rlim_max: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct clone_args {
-pub flags: __u64,
-pub pidfd: __u64,
-pub child_tid: __u64,
-pub parent_tid: __u64,
-pub exit_signal: __u64,
-pub stack: __u64,
-pub stack_size: __u64,
-pub tls: __u64,
-pub set_tid: __u64,
-pub set_tid_size: __u64,
-pub cgroup: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct pt_regs {
-_unused: [u8; 0],
-}
-pub type sigset_t = crate::ctypes::c_ulong;
-pub type __signalfn_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __sighandler_t = __signalfn_t;
-pub type __restorefn_t = ::core::option::Option<unsafe extern "C" fn()>;
-pub type __sigrestore_t = __restorefn_t;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sigaction {
-pub _u: sigaction__bindgen_ty_1,
-pub sa_flags: crate::ctypes::c_ulong,
-pub sa_restorer: ::core::option::Option<unsafe extern "C" fn()>,
-pub sa_mask: sigset_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigaction__bindgen_ty_1 {
-pub _sa_handler: __sighandler_t,
-pub _sa_sigaction: ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int, arg2: *mut siginfo, arg3: *mut crate::ctypes::c_void)>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaltstack {
-pub ss_sp: *mut crate::ctypes::c_void,
-pub ss_flags: crate::ctypes::c_int,
-pub ss_size: __kernel_size_t,
-}
-pub type stack_t = sigaltstack;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigval {
-pub sival_int: crate::ctypes::c_int,
-pub sival_ptr: *mut crate::ctypes::c_void,
-}
-pub type sigval_t = sigval;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields {
-pub _kill: __sifields__bindgen_ty_1,
-pub _timer: __sifields__bindgen_ty_2,
-pub _rt: __sifields__bindgen_ty_3,
-pub _sigchld: __sifields__bindgen_ty_4,
-pub _sigfault: __sifields__bindgen_ty_5,
-pub _sigpoll: __sifields__bindgen_ty_6,
-pub _sigsys: __sifields__bindgen_ty_7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_1 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_2 {
-pub _tid: __kernel_timer_t,
-pub _overrun: crate::ctypes::c_int,
-pub _sigval: sigval_t,
-pub _sys_private: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_3 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _sigval: sigval_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_4 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _status: crate::ctypes::c_int,
-pub _utime: __kernel_clock_t,
-pub _stime: __kernel_clock_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_5 {
-pub _addr: *mut crate::ctypes::c_void,
-pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields__bindgen_ty_5__bindgen_ty_1 {
-pub _trapno: crate::ctypes::c_int,
-pub _addr_lsb: crate::ctypes::c_short,
-pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1,
-pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2,
-pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {
-pub _dummy_bnd: [crate::ctypes::c_char; 8usize],
-pub _lower: *mut crate::ctypes::c_void,
-pub _upper: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 {
-pub _dummy_pkey: [crate::ctypes::c_char; 8usize],
-pub _pkey: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 {
-pub _data: crate::ctypes::c_ulong,
-pub _type: __u32,
-pub _flags: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_6 {
-pub _band: crate::ctypes::c_long,
-pub _fd: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_7 {
-pub _call_addr: *mut crate::ctypes::c_void,
-pub _syscall: crate::ctypes::c_int,
-pub _arch: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union siginfo__bindgen_ty_1 {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1,
-pub _si_pad: [crate::ctypes::c_int; 32usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo__bindgen_ty_1__bindgen_ty_1 {
-pub si_signo: crate::ctypes::c_int,
-pub si_errno: crate::ctypes::c_int,
-pub si_code: crate::ctypes::c_int,
-pub _sifields: __sifields,
-}
-pub type siginfo_t = siginfo;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sigevent {
-pub sigev_value: sigval_t,
-pub sigev_signo: crate::ctypes::c_int,
-pub sigev_notify: crate::ctypes::c_int,
-pub _sigev_un: sigevent__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigevent__bindgen_ty_1 {
-pub _pad: [crate::ctypes::c_int; 12usize],
-pub _tid: crate::ctypes::c_int,
-pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigevent__bindgen_ty_1__bindgen_ty_1 {
-pub _function: ::core::option::Option<unsafe extern "C" fn(arg1: sigval_t)>,
-pub _attribute: *mut crate::ctypes::c_void,
-}
-pub type sigevent_t = sigevent;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx_timestamp {
-pub tv_sec: __s64,
-pub tv_nsec: __u32,
-pub __reserved: __s32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx {
-pub stx_mask: __u32,
-pub stx_blksize: __u32,
-pub stx_attributes: __u64,
-pub stx_nlink: __u32,
-pub stx_uid: __u32,
-pub stx_gid: __u32,
-pub stx_mode: __u16,
-pub __spare0: [__u16; 1usize],
-pub stx_ino: __u64,
-pub stx_size: __u64,
-pub stx_blocks: __u64,
-pub stx_attributes_mask: __u64,
-pub stx_atime: statx_timestamp,
-pub stx_btime: statx_timestamp,
-pub stx_ctime: statx_timestamp,
-pub stx_mtime: statx_timestamp,
-pub stx_rdev_major: __u32,
-pub stx_rdev_minor: __u32,
-pub stx_dev_major: __u32,
-pub stx_dev_minor: __u32,
-pub stx_mnt_id: __u64,
-pub stx_dio_mem_align: __u32,
-pub stx_dio_offset_align: __u32,
-pub __spare3: [__u64; 12usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct sysinfo {
-pub uptime: __kernel_long_t,
-pub loads: [__kernel_ulong_t; 3usize],
-pub totalram: __kernel_ulong_t,
-pub freeram: __kernel_ulong_t,
-pub sharedram: __kernel_ulong_t,
-pub bufferram: __kernel_ulong_t,
-pub totalswap: __kernel_ulong_t,
-pub freeswap: __kernel_ulong_t,
-pub procs: __u16,
-pub pad: __u16,
-pub totalhigh: __kernel_ulong_t,
-pub freehigh: __kernel_ulong_t,
-pub mem_unit: __u32,
-pub _f: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcphdr {
-pub source: __be16,
-pub dest: __be16,
-pub seq: __be32,
-pub ack_seq: __be32,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub window: __be16,
-pub check: __sum16,
-pub urg_ptr: __be16,
-}
-impl tcphdr {
-#[inline]
-pub fn doff(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_doff(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn res1(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_res1(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn cwr(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_cwr(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ece(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ece(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn urg(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_urg(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(10usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ack(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ack(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(11usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn psh(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_psh(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(12usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn rst(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_rst(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(13usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn syn(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_syn(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(14usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn fin(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_fin(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(15usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(doff: __u16, res1: __u16, cwr: __u16, ece: __u16, urg: __u16, ack: __u16, psh: __u16, rst: __u16, syn: __u16, fin: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let doff: u16 = unsafe { ::core::mem::transmute(doff) };
-doff as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let res1: u16 = unsafe { ::core::mem::transmute(res1) };
-res1 as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let cwr: u16 = unsafe { ::core::mem::transmute(cwr) };
-cwr as u64
-});
-__bindgen_bitfield_unit.set(9usize, 1u8, {
-let ece: u16 = unsafe { ::core::mem::transmute(ece) };
-ece as u64
-});
-__bindgen_bitfield_unit.set(10usize, 1u8, {
-let urg: u16 = unsafe { ::core::mem::transmute(urg) };
-urg as u64
-});
-__bindgen_bitfield_unit.set(11usize, 1u8, {
-let ack: u16 = unsafe { ::core::mem::transmute(ack) };
-ack as u64
-});
-__bindgen_bitfield_unit.set(12usize, 1u8, {
-let psh: u16 = unsafe { ::core::mem::transmute(psh) };
-psh as u64
-});
-__bindgen_bitfield_unit.set(13usize, 1u8, {
-let rst: u16 = unsafe { ::core::mem::transmute(rst) };
-rst as u64
-});
-__bindgen_bitfield_unit.set(14usize, 1u8, {
-let syn: u16 = unsafe { ::core::mem::transmute(syn) };
-syn as u64
-});
-__bindgen_bitfield_unit.set(15usize, 1u8, {
-let fin: u16 = unsafe { ::core::mem::transmute(fin) };
-fin as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union tcp_word_hdr {
-pub hdr: tcphdr,
-pub words: [__be32; 5usize],
-}
-pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR;
-pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE;
-pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG;
-pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK;
-pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH;
-pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST;
-pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN;
-pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN;
-pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS;
-pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-TCP_FLAG_CWR = 8388608,
-TCP_FLAG_ECE = 4194304,
-TCP_FLAG_URG = 2097152,
-TCP_FLAG_ACK = 1048576,
-TCP_FLAG_PSH = 524288,
-TCP_FLAG_RST = 262144,
-TCP_FLAG_SYN = 131072,
-TCP_FLAG_FIN = 65536,
-TCP_RESERVED_BITS = 251658240,
-TCP_DATA_OFFSET = 4026531840,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_opt {
-pub opt_code: __u32,
-pub opt_val: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_window {
-pub snd_wl1: __u32,
-pub snd_wnd: __u32,
-pub max_window: __u32,
-pub rcv_wnd: __u32,
-pub rcv_wup: __u32,
-}
-pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE;
-pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE;
-pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE;
-pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-TCP_NO_QUEUE = 0,
-TCP_RECV_QUEUE = 1,
-TCP_SEND_QUEUE = 2,
-TCP_QUEUES_NR = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_fastopen_client_fail {
-TFO_STATUS_UNSPEC = 0,
-TFO_COOKIE_UNAVAILABLE = 1,
-TFO_DATA_NOT_ACKED = 2,
-TFO_SYN_RETRANSMITTED = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_ca_state {
-TCP_CA_Open = 0,
-TCP_CA_Disorder = 1,
-TCP_CA_CWR = 2,
-TCP_CA_Recovery = 3,
-TCP_CA_Loss = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_info {
-pub tcpi_state: __u8,
-pub tcpi_ca_state: __u8,
-pub tcpi_retransmits: __u8,
-pub tcpi_probes: __u8,
-pub tcpi_backoff: __u8,
-pub tcpi_options: __u8,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub tcpi_rto: __u32,
-pub tcpi_ato: __u32,
-pub tcpi_snd_mss: __u32,
-pub tcpi_rcv_mss: __u32,
-pub tcpi_unacked: __u32,
-pub tcpi_sacked: __u32,
-pub tcpi_lost: __u32,
-pub tcpi_retrans: __u32,
-pub tcpi_fackets: __u32,
-pub tcpi_last_data_sent: __u32,
-pub tcpi_last_ack_sent: __u32,
-pub tcpi_last_data_recv: __u32,
-pub tcpi_last_ack_recv: __u32,
-pub tcpi_pmtu: __u32,
-pub tcpi_rcv_ssthresh: __u32,
-pub tcpi_rtt: __u32,
-pub tcpi_rttvar: __u32,
-pub tcpi_snd_ssthresh: __u32,
-pub tcpi_snd_cwnd: __u32,
-pub tcpi_advmss: __u32,
-pub tcpi_reordering: __u32,
-pub tcpi_rcv_rtt: __u32,
-pub tcpi_rcv_space: __u32,
-pub tcpi_total_retrans: __u32,
-pub tcpi_pacing_rate: __u64,
-pub tcpi_max_pacing_rate: __u64,
-pub tcpi_bytes_acked: __u64,
-pub tcpi_bytes_received: __u64,
-pub tcpi_segs_out: __u32,
-pub tcpi_segs_in: __u32,
-pub tcpi_notsent_bytes: __u32,
-pub tcpi_min_rtt: __u32,
-pub tcpi_data_segs_in: __u32,
-pub tcpi_data_segs_out: __u32,
-pub tcpi_delivery_rate: __u64,
-pub tcpi_busy_time: __u64,
-pub tcpi_rwnd_limited: __u64,
-pub tcpi_sndbuf_limited: __u64,
-pub tcpi_delivered: __u32,
-pub tcpi_delivered_ce: __u32,
-pub tcpi_bytes_sent: __u64,
-pub tcpi_bytes_retrans: __u64,
-pub tcpi_dsack_dups: __u32,
-pub tcpi_reord_seen: __u32,
-pub tcpi_rcv_ooopack: __u32,
-pub tcpi_snd_wnd: __u32,
-pub tcpi_rcv_wnd: __u32,
-pub tcpi_rehash: __u32,
-}
-impl tcp_info {
-#[inline]
-pub fn tcpi_snd_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_snd_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_rcv_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_fastopen_client_fail(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) };
-tcpi_snd_wscale as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) };
-tcpi_rcv_wscale as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) };
-tcpi_delivery_rate_app_limited as u64
-});
-__bindgen_bitfield_unit.set(9usize, 2u8, {
-let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) };
-tcpi_fastopen_client_fail as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD;
-pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY;
-pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED;
-pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED;
-pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT;
-pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS;
-pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE;
-pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE;
-pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND;
-pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING;
-pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT;
-pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS;
-pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT;
-pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE;
-pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE;
-pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH;
-pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED;
-pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE;
-pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT;
-pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS;
-pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS;
-pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN;
-pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT;
-pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH;
-pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT;
-pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
-pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
-pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-TCP_NLA_PAD = 0,
-TCP_NLA_BUSY = 1,
-TCP_NLA_RWND_LIMITED = 2,
-TCP_NLA_SNDBUF_LIMITED = 3,
-TCP_NLA_DATA_SEGS_OUT = 4,
-TCP_NLA_TOTAL_RETRANS = 5,
-TCP_NLA_PACING_RATE = 6,
-TCP_NLA_DELIVERY_RATE = 7,
-TCP_NLA_SND_CWND = 8,
-TCP_NLA_REORDERING = 9,
-TCP_NLA_MIN_RTT = 10,
-TCP_NLA_RECUR_RETRANS = 11,
-TCP_NLA_DELIVERY_RATE_APP_LMT = 12,
-TCP_NLA_SNDQ_SIZE = 13,
-TCP_NLA_CA_STATE = 14,
-TCP_NLA_SND_SSTHRESH = 15,
-TCP_NLA_DELIVERED = 16,
-TCP_NLA_DELIVERED_CE = 17,
-TCP_NLA_BYTES_SENT = 18,
-TCP_NLA_BYTES_RETRANS = 19,
-TCP_NLA_DSACK_DUPS = 20,
-TCP_NLA_REORD_SEEN = 21,
-TCP_NLA_SRTT = 22,
-TCP_NLA_TIMEOUT_REHASH = 23,
-TCP_NLA_BYTES_NOTSENT = 24,
-TCP_NLA_EDT = 25,
-TCP_NLA_TTL = 26,
-TCP_NLA_REHASH = 27,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct tcp_md5sig {
-pub tcpm_addr: __kernel_sockaddr_storage,
-pub tcpm_flags: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_ifindex: crate::ctypes::c_int,
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_diag_md5sig {
-pub tcpm_family: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_addr: [__be32; 4usize],
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_zerocopy_receive {
-pub address: __u64,
-pub length: __u32,
-pub recv_skip_hint: __u32,
-pub inq: __u32,
-pub err: __s32,
-pub copybuf_address: __u64,
-pub copybuf_len: __s32,
-pub flags: __u32,
-pub msg_control: __u64,
-pub msg_controllen: __u64,
-pub msg_flags: __u32,
-pub reserved: __u32,
-}
-pub type cc_t = crate::ctypes::c_uchar;
-pub type speed_t = crate::ctypes::c_uint;
-pub type tcflag_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios2 {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ktermios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct winsize {
-pub ws_row: crate::ctypes::c_ushort,
-pub ws_col: crate::ctypes::c_ushort,
-pub ws_xpixel: crate::ctypes::c_ushort,
-pub ws_ypixel: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termio {
-pub c_iflag: crate::ctypes::c_ushort,
-pub c_oflag: crate::ctypes::c_ushort,
-pub c_cflag: crate::ctypes::c_ushort,
-pub c_lflag: crate::ctypes::c_ushort,
-pub c_line: crate::ctypes::c_uchar,
-pub c_cc: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iovec {
-pub iov_base: *mut crate::ctypes::c_void,
-pub iov_len: __kernel_size_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_un {
-pub sun_family: __kernel_sa_family_t,
-pub sun_path: [crate::ctypes::c_char; 108usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct oldold_utsname {
-pub sysname: [crate::ctypes::c_char; 9usize],
-pub nodename: [crate::ctypes::c_char; 9usize],
-pub release: [crate::ctypes::c_char; 9usize],
-pub version: [crate::ctypes::c_char; 9usize],
-pub machine: [crate::ctypes::c_char; 9usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct old_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct new_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-pub domainname: [crate::ctypes::c_char; 65usize],
-}
-impl membarrier_cmd {
-pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd {
-MEMBARRIER_CMD_QUERY = 0,
-MEMBARRIER_CMD_GLOBAL = 1,
-MEMBARRIER_CMD_GLOBAL_EXPEDITED = 2,
-MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = 4,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED = 8,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = 16,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = 32,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = 64,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = 128,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = 256,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd_flag {
-MEMBARRIER_CMD_FLAG_CPU = 1,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg {
-pub event: __u8,
-pub reserved1: __u8,
-pub reserved2: __u16,
-pub reserved3: __u32,
-pub arg: uffd_msg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1 {
-pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1,
-pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2,
-pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3,
-pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4,
-pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 {
-pub flags: __u64,
-pub address: __u64,
-pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {
-pub ptid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 {
-pub ufd: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 {
-pub from: __u64,
-pub to: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 {
-pub start: __u64,
-pub end: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 {
-pub reserved1: __u64,
-pub reserved2: __u64,
-pub reserved3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_api {
-pub api: __u64,
-pub features: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_range {
-pub start: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_register {
-pub range: uffdio_range,
-pub mode: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_copy {
-pub dst: __u64,
-pub src: __u64,
-pub len: __u64,
-pub mode: __u64,
-pub copy: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_zeropage {
-pub range: uffdio_range,
-pub mode: __u64,
-pub zeropage: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_writeprotect {
-pub range: uffdio_range,
-pub mode: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_continue {
-pub range: uffdio_range,
-pub mode: __u64,
-pub mapped: __s64,
-}
-#[repr(C)]
-pub struct io_uring_sqe {
-pub opcode: __u8,
-pub flags: __u8,
-pub ioprio: __u16,
-pub fd: __s32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1,
-pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2,
-pub len: __u32,
-pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3,
-pub user_data: __u64,
-pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4,
-pub personality: __u16,
-pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5,
-pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_1 {
-pub off: __u64,
-pub addr2: __u64,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 {
-pub cmd_op: __u32,
-pub __pad1: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_2 {
-pub addr: __u64,
-pub splice_off_in: __u64,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_3 {
-pub rw_flags: __kernel_rwf_t,
-pub fsync_flags: __u32,
-pub poll_events: __u16,
-pub poll32_events: __u32,
-pub sync_range_flags: __u32,
-pub msg_flags: __u32,
-pub timeout_flags: __u32,
-pub accept_flags: __u32,
-pub cancel_flags: __u32,
-pub open_flags: __u32,
-pub statx_flags: __u32,
-pub fadvise_advice: __u32,
-pub splice_flags: __u32,
-pub rename_flags: __u32,
-pub unlink_flags: __u32,
-pub hardlink_flags: __u32,
-pub xattr_flags: __u32,
-pub msg_ring_flags: __u32,
-pub uring_cmd_flags: __u32,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_4 {
-pub buf_index: __u16,
-pub buf_group: __u16,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_5 {
-pub splice_fd_in: __s32,
-pub file_index: __u32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 {
-pub addr_len: __u16,
-pub __pad3: [__u16; 1usize],
-}
-#[repr(C)]
-pub struct io_uring_sqe__bindgen_ty_6 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_sqe__bindgen_ty_6__bindgen_ty_1>,
-pub cmd: __BindgenUnionField<[__u8; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 {
-pub addr3: __u64,
-pub __pad2: [__u64; 1usize],
-}
-pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT;
-pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT;
-pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT;
-pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT;
-pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT;
-pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT;
-pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-IOSQE_FIXED_FILE_BIT = 0,
-IOSQE_IO_DRAIN_BIT = 1,
-IOSQE_IO_LINK_BIT = 2,
-IOSQE_IO_HARDLINK_BIT = 3,
-IOSQE_ASYNC_BIT = 4,
-IOSQE_BUFFER_SELECT_BIT = 5,
-IOSQE_CQE_SKIP_SUCCESS_BIT = 6,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum io_uring_op {
-IORING_OP_NOP = 0,
-IORING_OP_READV = 1,
-IORING_OP_WRITEV = 2,
-IORING_OP_FSYNC = 3,
-IORING_OP_READ_FIXED = 4,
-IORING_OP_WRITE_FIXED = 5,
-IORING_OP_POLL_ADD = 6,
-IORING_OP_POLL_REMOVE = 7,
-IORING_OP_SYNC_FILE_RANGE = 8,
-IORING_OP_SENDMSG = 9,
-IORING_OP_RECVMSG = 10,
-IORING_OP_TIMEOUT = 11,
-IORING_OP_TIMEOUT_REMOVE = 12,
-IORING_OP_ACCEPT = 13,
-IORING_OP_ASYNC_CANCEL = 14,
-IORING_OP_LINK_TIMEOUT = 15,
-IORING_OP_CONNECT = 16,
-IORING_OP_FALLOCATE = 17,
-IORING_OP_OPENAT = 18,
-IORING_OP_CLOSE = 19,
-IORING_OP_FILES_UPDATE = 20,
-IORING_OP_STATX = 21,
-IORING_OP_READ = 22,
-IORING_OP_WRITE = 23,
-IORING_OP_FADVISE = 24,
-IORING_OP_MADVISE = 25,
-IORING_OP_SEND = 26,
-IORING_OP_RECV = 27,
-IORING_OP_OPENAT2 = 28,
-IORING_OP_EPOLL_CTL = 29,
-IORING_OP_SPLICE = 30,
-IORING_OP_PROVIDE_BUFFERS = 31,
-IORING_OP_REMOVE_BUFFERS = 32,
-IORING_OP_TEE = 33,
-IORING_OP_SHUTDOWN = 34,
-IORING_OP_RENAMEAT = 35,
-IORING_OP_UNLINKAT = 36,
-IORING_OP_MKDIRAT = 37,
-IORING_OP_SYMLINKAT = 38,
-IORING_OP_LINKAT = 39,
-IORING_OP_MSG_RING = 40,
-IORING_OP_FSETXATTR = 41,
-IORING_OP_SETXATTR = 42,
-IORING_OP_FGETXATTR = 43,
-IORING_OP_GETXATTR = 44,
-IORING_OP_SOCKET = 45,
-IORING_OP_URING_CMD = 46,
-IORING_OP_SEND_ZC = 47,
-IORING_OP_SENDMSG_ZC = 48,
-IORING_OP_LAST = 49,
-}
-pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA;
-pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IORING_MSG_DATA = 0,
-IORING_MSG_SEND_FD = 1,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_cqe {
-pub user_data: __u64,
-pub res: __s32,
-pub flags: __u32,
-pub big_cqe: __IncompleteArrayField<__u64>,
-}
-pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IORING_CQE_BUFFER_SHIFT = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_sqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub flags: __u32,
-pub dropped: __u32,
-pub array: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_cqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub overflow: __u32,
-pub cqes: __u32,
-pub flags: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_params {
-pub sq_entries: __u32,
-pub cq_entries: __u32,
-pub flags: __u32,
-pub sq_thread_cpu: __u32,
-pub sq_thread_idle: __u32,
-pub features: __u32,
-pub wq_fd: __u32,
-pub resv: [__u32; 3usize],
-pub sq_off: io_sqring_offsets,
-pub cq_off: io_cqring_offsets,
-}
-pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS;
-pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS;
-pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES;
-pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES;
-pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD;
-pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD;
-pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE;
-pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC;
-pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE;
-pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY;
-pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY;
-pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS;
-pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS;
-pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2;
-pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2;
-pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2;
-pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE;
-pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF;
-pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF;
-pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS;
-pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS;
-pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS;
-pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING;
-pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING;
-pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL;
-pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE;
-pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IORING_REGISTER_BUFFERS = 0,
-IORING_UNREGISTER_BUFFERS = 1,
-IORING_REGISTER_FILES = 2,
-IORING_UNREGISTER_FILES = 3,
-IORING_REGISTER_EVENTFD = 4,
-IORING_UNREGISTER_EVENTFD = 5,
-IORING_REGISTER_FILES_UPDATE = 6,
-IORING_REGISTER_EVENTFD_ASYNC = 7,
-IORING_REGISTER_PROBE = 8,
-IORING_REGISTER_PERSONALITY = 9,
-IORING_UNREGISTER_PERSONALITY = 10,
-IORING_REGISTER_RESTRICTIONS = 11,
-IORING_REGISTER_ENABLE_RINGS = 12,
-IORING_REGISTER_FILES2 = 13,
-IORING_REGISTER_FILES_UPDATE2 = 14,
-IORING_REGISTER_BUFFERS2 = 15,
-IORING_REGISTER_BUFFERS_UPDATE = 16,
-IORING_REGISTER_IOWQ_AFF = 17,
-IORING_UNREGISTER_IOWQ_AFF = 18,
-IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
-IORING_REGISTER_RING_FDS = 20,
-IORING_UNREGISTER_RING_FDS = 21,
-IORING_REGISTER_PBUF_RING = 22,
-IORING_UNREGISTER_PBUF_RING = 23,
-IORING_REGISTER_SYNC_CANCEL = 24,
-IORING_REGISTER_FILE_ALLOC_RANGE = 25,
-IORING_REGISTER_LAST = 26,
-}
-pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND;
-pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IO_WQ_BOUND = 0,
-IO_WQ_UNBOUND = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_files_update {
-pub offset: __u32,
-pub resv: __u32,
-pub fds: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_register {
-pub nr: __u32,
-pub flags: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub tags: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update2 {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-pub tags: __u64,
-pub nr: __u32,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_slot {
-pub tag: __u64,
-pub resv: [__u64; 3usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_register {
-pub nr_slots: __u32,
-pub resv: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub resv3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_probe_op {
-pub op: __u8,
-pub resv: __u8,
-pub flags: __u16,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_probe {
-pub last_op: __u8,
-pub ops_len: __u8,
-pub resv: __u16,
-pub resv2: [__u32; 3usize],
-pub ops: __IncompleteArrayField<io_uring_probe_op>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct io_uring_restriction {
-pub opcode: __u16,
-pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1,
-pub resv: __u8,
-pub resv2: [__u32; 3usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_restriction__bindgen_ty_1 {
-pub register_op: __u8,
-pub sqe_op: __u8,
-pub sqe_flags: __u8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf {
-pub addr: __u64,
-pub len: __u32,
-pub bid: __u16,
-pub resv: __u16,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring {
-pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1>,
-pub bufs: __BindgenUnionField<[io_uring_buf; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 {
-pub resv1: __u64,
-pub resv2: __u32,
-pub resv3: __u16,
-pub tail: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_reg {
-pub ring_addr: __u64,
-pub ring_entries: __u32,
-pub bgid: __u16,
-pub pad: __u16,
-pub resv: [__u64; 3usize],
-}
-pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP;
-pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP;
-pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED;
-pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED;
-pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IORING_RESTRICTION_REGISTER_OP = 0,
-IORING_RESTRICTION_SQE_OP = 1,
-IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2,
-IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3,
-IORING_RESTRICTION_LAST = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_getevents_arg {
-pub sigmask: __u64,
-pub sigmask_sz: __u32,
-pub pad: __u32,
-pub ts: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sync_cancel_reg {
-pub addr: __u64,
-pub fd: __s32,
-pub flags: __u32,
-pub timeout: __kernel_timespec,
-pub pad: [__u64; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_file_index_range {
-pub off: __u32,
-pub len: __u32,
-pub resv: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_recvmsg_out {
-pub namelen: __u32,
-pub controllen: __u32,
-pub payloadlen: __u32,
-pub flags: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr {
-pub __storage: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct linger {
-pub l_onoff: crate::ctypes::c_int,
-pub l_linger: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct linux_dirent64 {
-pub d_ino: crate::ctypes::c_ulong,
-pub d_off: crate::ctypes::c_long,
-pub d_reclen: __u16,
-pub d_type: __u8,
-pub d_name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-pub type socklen_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct stat {
-pub st_dev: crate::ctypes::c_ulong,
-pub st_ino: crate::ctypes::c_ulong,
-pub st_nlink: crate::ctypes::c_ulong,
-pub st_mode: crate::ctypes::c_uint,
-pub st_uid: crate::ctypes::c_uint,
-pub st_gid: crate::ctypes::c_uint,
-pub __pad1: crate::ctypes::c_uint,
-pub st_rdev: crate::ctypes::c_ulong,
-pub st_size: crate::ctypes::c_ulong,
-pub st_atime: crate::ctypes::c_ulong,
-pub st_atime_nsec: crate::ctypes::c_ulong,
-pub st_mtime: crate::ctypes::c_ulong,
-pub st_mtime_nsec: crate::ctypes::c_ulong,
-pub st_ctime: crate::ctypes::c_ulong,
-pub st_ctime_nsec: crate::ctypes::c_ulong,
-pub st_blksize: crate::ctypes::c_ulong,
-pub st_blocks: crate::ctypes::c_long,
-pub __unused: [crate::ctypes::c_ulong; 3usize],
-}
-pub type fsid_t = __kernel_fsid_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs {
-pub f_type: crate::ctypes::c_uint,
-pub f_bsize: crate::ctypes::c_uint,
-pub f_blocks: crate::ctypes::c_ulong,
-pub f_bfree: crate::ctypes::c_ulong,
-pub f_bavail: crate::ctypes::c_ulong,
-pub f_files: crate::ctypes::c_ulong,
-pub f_ffree: crate::ctypes::c_ulong,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: crate::ctypes::c_uint,
-pub f_frsize: crate::ctypes::c_uint,
-pub f_flags: crate::ctypes::c_uint,
-pub f_spare: [crate::ctypes::c_uint; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs64 {
-pub f_type: crate::ctypes::c_uint,
-pub f_bsize: crate::ctypes::c_uint,
-pub f_blocks: crate::ctypes::c_ulonglong,
-pub f_bfree: crate::ctypes::c_ulonglong,
-pub f_bavail: crate::ctypes::c_ulonglong,
-pub f_files: crate::ctypes::c_ulonglong,
-pub f_ffree: crate::ctypes::c_ulonglong,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: crate::ctypes::c_uint,
-pub f_frsize: crate::ctypes::c_uint,
-pub f_flags: crate::ctypes::c_uint,
-pub f_spare: [crate::ctypes::c_uint; 4usize],
-}
-pub type __fsword_t = __u32;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct user_desc {
-pub entry_number: crate::ctypes::c_uint,
-pub base_addr: crate::ctypes::c_uint,
-pub limit: crate::ctypes::c_uint,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub __bindgen_padding_0: [u8; 3usize],
-}
-impl user_desc {
-#[inline]
-pub fn seg_32bit(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_32bit(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn contents(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 2u8) as u32) }
-}
-#[inline]
-pub fn set_contents(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(1usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn read_exec_only(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_read_exec_only(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(3usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn limit_in_pages(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_limit_in_pages(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn seg_not_present(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_not_present(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(5usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn useable(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_useable(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(6usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(seg_32bit: crate::ctypes::c_uint, contents: crate::ctypes::c_uint, read_exec_only: crate::ctypes::c_uint, limit_in_pages: crate::ctypes::c_uint, seg_not_present: crate::ctypes::c_uint, useable: crate::ctypes::c_uint) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 1u8, {
-let seg_32bit: u32 = unsafe { ::core::mem::transmute(seg_32bit) };
-seg_32bit as u64
-});
-__bindgen_bitfield_unit.set(1usize, 2u8, {
-let contents: u32 = unsafe { ::core::mem::transmute(contents) };
-contents as u64
-});
-__bindgen_bitfield_unit.set(3usize, 1u8, {
-let read_exec_only: u32 = unsafe { ::core::mem::transmute(read_exec_only) };
-read_exec_only as u64
-});
-__bindgen_bitfield_unit.set(4usize, 1u8, {
-let limit_in_pages: u32 = unsafe { ::core::mem::transmute(limit_in_pages) };
-limit_in_pages as u64
-});
-__bindgen_bitfield_unit.set(5usize, 1u8, {
-let seg_not_present: u32 = unsafe { ::core::mem::transmute(seg_not_present) };
-seg_not_present as u64
-});
-__bindgen_bitfield_unit.set(6usize, 1u8, {
-let useable: u32 = unsafe { ::core::mem::transmute(useable) };
-useable as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct msghdr {
-pub msg_name: *mut crate::ctypes::c_void,
-pub msg_namelen: crate::ctypes::c_int,
-pub msg_iov: *mut iovec,
-pub msg_iovlen: size_t,
-pub msg_control: *mut crate::ctypes::c_void,
-pub msg_controllen: size_t,
-pub msg_flags: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct cmsghdr {
-pub cmsg_len: size_t,
-pub cmsg_level: crate::ctypes::c_int,
-pub cmsg_type: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ucred {
-pub pid: __u32,
-pub uid: __u32,
-pub gid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mmsghdr {
-pub msg_hdr: msghdr,
-pub msg_len: crate::ctypes::c_uint,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/s390x/ioctl.rs b/vendor/linux-raw-sys-0.3.2/src/s390x/ioctl.rs
deleted file mode 100644
index 9f8ede5a7..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/s390x/ioctl.rs
+++ /dev/null
@@ -1,1570 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const FIONREAD: u32 = 21531;
-pub const FIONBIO: u32 = 21537;
-pub const FIOCLEX: u32 = 21585;
-pub const FIONCLEX: u32 = 21584;
-pub const FIOASYNC: u32 = 21586;
-pub const FIOQSIZE: u32 = 21598;
-pub const TCXONC: u32 = 21514;
-pub const TCFLSH: u32 = 21515;
-pub const TIOCSCTTY: u32 = 21518;
-pub const TIOCSPGRP: u32 = 21520;
-pub const TIOCOUTQ: u32 = 21521;
-pub const TIOCSTI: u32 = 21522;
-pub const TIOCSWINSZ: u32 = 21524;
-pub const TIOCMGET: u32 = 21525;
-pub const TIOCMBIS: u32 = 21526;
-pub const TIOCMBIC: u32 = 21527;
-pub const TIOCMSET: u32 = 21528;
-pub const TIOCSSOFTCAR: u32 = 21530;
-pub const TIOCLINUX: u32 = 21532;
-pub const TIOCCONS: u32 = 21533;
-pub const TIOCSSERIAL: u32 = 21535;
-pub const TIOCPKT: u32 = 21536;
-pub const TIOCNOTTY: u32 = 21538;
-pub const TIOCSETD: u32 = 21539;
-pub const TIOCSBRK: u32 = 21543;
-pub const TIOCCBRK: u32 = 21544;
-pub const TIOCSRS485: u32 = 21551;
-pub const TIOCSPTLCK: u32 = 1074025521;
-pub const TIOCSIG: u32 = 1074025526;
-pub const TIOCVHANGUP: u32 = 21559;
-pub const TIOCSERCONFIG: u32 = 21587;
-pub const TIOCSERGWILD: u32 = 21588;
-pub const TIOCSERSWILD: u32 = 21589;
-pub const TIOCSLCKTRMIOS: u32 = 21591;
-pub const TIOCSERGSTRUCT: u32 = 21592;
-pub const TIOCSERGETLSR: u32 = 21593;
-pub const TIOCSERGETMULTI: u32 = 21594;
-pub const TIOCSERSETMULTI: u32 = 21595;
-pub const TIOCMIWAIT: u32 = 21596;
-pub const TCGETS: u32 = 21505;
-pub const TCGETA: u32 = 21509;
-pub const TCSBRK: u32 = 21513;
-pub const TCSBRKP: u32 = 21541;
-pub const TCSETA: u32 = 21510;
-pub const TCSETAF: u32 = 21512;
-pub const TCSETAW: u32 = 21511;
-pub const TIOCEXCL: u32 = 21516;
-pub const TIOCNXCL: u32 = 21517;
-pub const TIOCGDEV: u32 = 2147767346;
-pub const TIOCGEXCL: u32 = 2147767360;
-pub const TIOCGICOUNT: u32 = 21597;
-pub const TIOCGLCKTRMIOS: u32 = 21590;
-pub const TIOCGPGRP: u32 = 21519;
-pub const TIOCGPKT: u32 = 2147767352;
-pub const TIOCGPTLCK: u32 = 2147767353;
-pub const TIOCGPTN: u32 = 2147767344;
-pub const TIOCGPTPEER: u32 = 21569;
-pub const TIOCGRS485: u32 = 21550;
-pub const TIOCGSERIAL: u32 = 21534;
-pub const TIOCGSID: u32 = 21545;
-pub const TIOCGSOFTCAR: u32 = 21529;
-pub const TIOCGWINSZ: u32 = 21523;
-pub const TCGETS2: u32 = 2150388778;
-pub const TCGETX: u32 = 21554;
-pub const TCSETS: u32 = 21506;
-pub const TCSETS2: u32 = 1076646955;
-pub const TCSETSF: u32 = 21508;
-pub const TCSETSF2: u32 = 1076646957;
-pub const TCSETSW: u32 = 21507;
-pub const TCSETSW2: u32 = 1076646956;
-pub const TCSETX: u32 = 21555;
-pub const TCSETXF: u32 = 21556;
-pub const TCSETXW: u32 = 21557;
-pub const TIOCGETD: u32 = 21540;
-pub const MTIOCGET: u32 = 2150657282;
-pub const BLKSSZGET: u32 = 4712;
-pub const BLKPBSZGET: u32 = 4731;
-pub const BLKROSET: u32 = 4701;
-pub const BLKROGET: u32 = 4702;
-pub const BLKRRPART: u32 = 4703;
-pub const BLKGETSIZE: u32 = 4704;
-pub const BLKFLSBUF: u32 = 4705;
-pub const BLKRASET: u32 = 4706;
-pub const BLKRAGET: u32 = 4707;
-pub const BLKFRASET: u32 = 4708;
-pub const BLKFRAGET: u32 = 4709;
-pub const BLKSECTSET: u32 = 4710;
-pub const BLKSECTGET: u32 = 4711;
-pub const BLKPG: u32 = 4713;
-pub const BLKBSZGET: u32 = 2148012656;
-pub const BLKBSZSET: u32 = 1074270833;
-pub const BLKGETSIZE64: u32 = 2148012658;
-pub const BLKTRACESETUP: u32 = 3225948787;
-pub const BLKTRACESTART: u32 = 4724;
-pub const BLKTRACESTOP: u32 = 4725;
-pub const BLKTRACETEARDOWN: u32 = 4726;
-pub const BLKDISCARD: u32 = 4727;
-pub const BLKIOMIN: u32 = 4728;
-pub const BLKIOOPT: u32 = 4729;
-pub const BLKALIGNOFF: u32 = 4730;
-pub const BLKDISCARDZEROES: u32 = 4732;
-pub const BLKSECDISCARD: u32 = 4733;
-pub const BLKROTATIONAL: u32 = 4734;
-pub const BLKZEROOUT: u32 = 4735;
-pub const UFFDIO_REGISTER: u32 = 3223366144;
-pub const UFFDIO_UNREGISTER: u32 = 2148575745;
-pub const UFFDIO_WAKE: u32 = 2148575746;
-pub const UFFDIO_COPY: u32 = 3223890435;
-pub const UFFDIO_ZEROPAGE: u32 = 3223366148;
-pub const UFFDIO_WRITEPROTECT: u32 = 3222841862;
-pub const UFFDIO_API: u32 = 3222841919;
-pub const NS_GET_USERNS: u32 = 46849;
-pub const NS_GET_PARENT: u32 = 46850;
-pub const NS_GET_NSTYPE: u32 = 46851;
-pub const KDGETLED: u32 = 19249;
-pub const KDSETLED: u32 = 19250;
-pub const KDGKBLED: u32 = 19300;
-pub const KDSKBLED: u32 = 19301;
-pub const KDGKBTYPE: u32 = 19251;
-pub const KDADDIO: u32 = 19252;
-pub const KDDELIO: u32 = 19253;
-pub const KDENABIO: u32 = 19254;
-pub const KDDISABIO: u32 = 19255;
-pub const KDSETMODE: u32 = 19258;
-pub const KDGETMODE: u32 = 19259;
-pub const KDMKTONE: u32 = 19248;
-pub const KIOCSOUND: u32 = 19247;
-pub const GIO_CMAP: u32 = 19312;
-pub const PIO_CMAP: u32 = 19313;
-pub const GIO_FONT: u32 = 19296;
-pub const GIO_FONTX: u32 = 19307;
-pub const PIO_FONT: u32 = 19297;
-pub const PIO_FONTX: u32 = 19308;
-pub const PIO_FONTRESET: u32 = 19309;
-pub const GIO_SCRNMAP: u32 = 19264;
-pub const GIO_UNISCRNMAP: u32 = 19305;
-pub const PIO_SCRNMAP: u32 = 19265;
-pub const PIO_UNISCRNMAP: u32 = 19306;
-pub const GIO_UNIMAP: u32 = 19302;
-pub const PIO_UNIMAP: u32 = 19303;
-pub const PIO_UNIMAPCLR: u32 = 19304;
-pub const KDGKBMODE: u32 = 19268;
-pub const KDSKBMODE: u32 = 19269;
-pub const KDGKBMETA: u32 = 19298;
-pub const KDSKBMETA: u32 = 19299;
-pub const KDGKBENT: u32 = 19270;
-pub const KDSKBENT: u32 = 19271;
-pub const KDGKBSENT: u32 = 19272;
-pub const KDSKBSENT: u32 = 19273;
-pub const KDGKBDIACR: u32 = 19274;
-pub const KDGETKEYCODE: u32 = 19276;
-pub const KDSETKEYCODE: u32 = 19277;
-pub const KDSIGACCEPT: u32 = 19278;
-pub const VT_OPENQRY: u32 = 22016;
-pub const VT_GETMODE: u32 = 22017;
-pub const VT_SETMODE: u32 = 22018;
-pub const VT_GETSTATE: u32 = 22019;
-pub const VT_RELDISP: u32 = 22021;
-pub const VT_ACTIVATE: u32 = 22022;
-pub const VT_WAITACTIVE: u32 = 22023;
-pub const VT_DISALLOCATE: u32 = 22024;
-pub const VT_RESIZE: u32 = 22025;
-pub const VT_RESIZEX: u32 = 22026;
-pub const FIOSETOWN: u32 = 35073;
-pub const SIOCSPGRP: u32 = 35074;
-pub const FIOGETOWN: u32 = 35075;
-pub const SIOCGPGRP: u32 = 35076;
-pub const SIOCATMARK: u32 = 35077;
-pub const SIOCGSTAMP: u32 = 35078;
-pub const TIOCINQ: u32 = 21531;
-pub const SIOCADDRT: u32 = 35083;
-pub const SIOCDELRT: u32 = 35084;
-pub const SIOCGIFNAME: u32 = 35088;
-pub const SIOCSIFLINK: u32 = 35089;
-pub const SIOCGIFCONF: u32 = 35090;
-pub const SIOCGIFFLAGS: u32 = 35091;
-pub const SIOCSIFFLAGS: u32 = 35092;
-pub const SIOCGIFADDR: u32 = 35093;
-pub const SIOCSIFADDR: u32 = 35094;
-pub const SIOCGIFDSTADDR: u32 = 35095;
-pub const SIOCSIFDSTADDR: u32 = 35096;
-pub const SIOCGIFBRDADDR: u32 = 35097;
-pub const SIOCSIFBRDADDR: u32 = 35098;
-pub const SIOCGIFNETMASK: u32 = 35099;
-pub const SIOCSIFNETMASK: u32 = 35100;
-pub const SIOCGIFMETRIC: u32 = 35101;
-pub const SIOCSIFMETRIC: u32 = 35102;
-pub const SIOCGIFMEM: u32 = 35103;
-pub const SIOCSIFMEM: u32 = 35104;
-pub const SIOCGIFMTU: u32 = 35105;
-pub const SIOCSIFMTU: u32 = 35106;
-pub const SIOCSIFHWADDR: u32 = 35108;
-pub const SIOCGIFENCAP: u32 = 35109;
-pub const SIOCSIFENCAP: u32 = 35110;
-pub const SIOCGIFHWADDR: u32 = 35111;
-pub const SIOCGIFSLAVE: u32 = 35113;
-pub const SIOCSIFSLAVE: u32 = 35120;
-pub const SIOCADDMULTI: u32 = 35121;
-pub const SIOCDELMULTI: u32 = 35122;
-pub const SIOCDARP: u32 = 35155;
-pub const SIOCGARP: u32 = 35156;
-pub const SIOCSARP: u32 = 35157;
-pub const SIOCDRARP: u32 = 35168;
-pub const SIOCGRARP: u32 = 35169;
-pub const SIOCSRARP: u32 = 35170;
-pub const SIOCGIFMAP: u32 = 35184;
-pub const SIOCSIFMAP: u32 = 35185;
-pub const SIOCRTMSG: u32 = 35085;
-pub const SIOCSIFNAME: u32 = 35107;
-pub const SIOCGIFINDEX: u32 = 35123;
-pub const SIOGIFINDEX: u32 = 35123;
-pub const SIOCSIFPFLAGS: u32 = 35124;
-pub const SIOCGIFPFLAGS: u32 = 35125;
-pub const SIOCDIFADDR: u32 = 35126;
-pub const SIOCSIFHWBROADCAST: u32 = 35127;
-pub const SIOCGIFCOUNT: u32 = 35128;
-pub const SIOCGIFBR: u32 = 35136;
-pub const SIOCSIFBR: u32 = 35137;
-pub const SIOCGIFTXQLEN: u32 = 35138;
-pub const SIOCSIFTXQLEN: u32 = 35139;
-pub const SIOCADDDLCI: u32 = 35200;
-pub const SIOCDELDLCI: u32 = 35201;
-pub const SIOCDEVPRIVATE: u32 = 35312;
-pub const SIOCPROTOPRIVATE: u32 = 35296;
-pub const FIBMAP: u32 = 1;
-pub const FIGETBSZ: u32 = 2;
-pub const FIFREEZE: u32 = 3221510263;
-pub const FITHAW: u32 = 3221510264;
-pub const FITRIM: u32 = 3222820985;
-pub const FICLONE: u32 = 1074041865;
-pub const FICLONERANGE: u32 = 1075876877;
-pub const FIDEDUPERANGE: u32 = 3222836278;
-pub const FS_IOC_GETFLAGS: u32 = 2148034049;
-pub const FS_IOC_SETFLAGS: u32 = 1074292226;
-pub const FS_IOC_GETVERSION: u32 = 2148038145;
-pub const FS_IOC_SETVERSION: u32 = 1074296322;
-pub const FS_IOC_FIEMAP: u32 = 3223348747;
-pub const FS_IOC32_GETFLAGS: u32 = 2147771905;
-pub const FS_IOC32_SETFLAGS: u32 = 1074030082;
-pub const FS_IOC32_GETVERSION: u32 = 2147776001;
-pub const FS_IOC32_SETVERSION: u32 = 1074034178;
-pub const FS_IOC_FSGETXATTR: u32 = 2149341215;
-pub const FS_IOC_FSSETXATTR: u32 = 1075599392;
-pub const FS_IOC_GETFSLABEL: u32 = 2164298801;
-pub const FS_IOC_SETFSLABEL: u32 = 1090556978;
-pub const VIDIOC_SUBDEV_QUERYSTD: u32 = 2148030015;
-pub const AUTOFS_DEV_IOCTL_CLOSEMOUNT: u32 = 3222836085;
-pub const LIRC_SET_SEND_CARRIER: u32 = 1074030867;
-pub const AUTOFS_IOC_PROTOSUBVER: u32 = 2147783527;
-pub const PTP_SYS_OFFSET_PRECISE: u32 = 3225435400;
-pub const FSI_SCOM_WRITE: u32 = 3223352066;
-pub const ATM_GETCIRANGE: u32 = 1074815370;
-pub const DMA_BUF_SET_NAME_B: u32 = 1074291201;
-pub const RIO_CM_EP_GET_LIST_SIZE: u32 = 3221512961;
-pub const TUNSETPERSIST: u32 = 1074025675;
-pub const FS_IOC_GET_ENCRYPTION_POLICY: u32 = 1074554389;
-pub const CEC_RECEIVE: u32 = 3224920326;
-pub const MGSL_IOCGPARAMS: u32 = 2150657281;
-pub const ENI_SETMULT: u32 = 1074815335;
-pub const RIO_GET_EVENT_MASK: u32 = 2147773710;
-pub const LIRC_GET_MAX_TIMEOUT: u32 = 2147772681;
-pub const KVM_SET_BOOT_CPU_ID: u32 = 44664;
-pub const KVM_SET_MP_STATE: u32 = 1074048665;
-pub const KVM_GET_MP_STATE: u32 = 2147790488;
-pub const KVM_SET_MEMORY_REGION: u32 = 1075359296;
-pub const KVM_GET_API_VERSION: u32 = 44544;
-pub const KVM_S390_GET_SKEYS: u32 = 1077980850;
-pub const KVM_SET_ONE_REG: u32 = 1074835116;
-pub const KVM_IRQ_LINE_STATUS: u32 = 3221794407;
-pub const KVM_SET_USER_MEMORY_REGION: u32 = 1075883590;
-pub const KVM_S390_INTERRUPT: u32 = 1074835092;
-pub const KVM_TPR_ACCESS_REPORTING: u32 = 3223891602;
-pub const KVM_GET_FPU: u32 = 2156441228;
-pub const KVM_ASSIGN_SET_MSIX_ENTRY: u32 = 1074835060;
-pub const KVM_MEMORY_ENCRYPT_REG_REGION: u32 = 2148576955;
-pub const KVM_S390_UCAS_MAP: u32 = 1075359312;
-pub const KVM_ASSIGN_SET_INTX_MASK: u32 = 1077980836;
-pub const KVM_MEMORY_ENCRYPT_OP: u32 = 3221794490;
-pub const KVM_CREATE_PIT2: u32 = 1077980791;
-pub const KVM_S390_VCPU_FAULT: u32 = 1074310738;
-pub const KVM_REGISTER_COALESCED_MMIO: u32 = 1074835047;
-pub const KVM_SET_VAPIC_ADDR: u32 = 1074310803;
-pub const KVM_CREATE_DEVICE: u32 = 3222056672;
-pub const KVM_GET_IRQCHIP: u32 = 3255348834;
-pub const KVM_TRANSLATE: u32 = 3222843013;
-pub const KVM_S390_SET_INITIAL_PSW: u32 = 1074835094;
-pub const KVM_X86_SETUP_MCE: u32 = 1074310812;
-pub const KVM_DEASSIGN_PCI_DEVICE: u32 = 1077980786;
-pub const KVM_XEN_HVM_SET_ATTR: u32 = 1078505161;
-pub const KVM_GET_CLOCK: u32 = 2150674044;
-pub const KVM_SET_FPU: u32 = 1082699405;
-pub const KVM_KVMCLOCK_CTRL: u32 = 44717;
-pub const KVM_PPC_GET_PVINFO: u32 = 1082175137;
-pub const KVM_X86_GET_MCE_CAP_SUPPORTED: u32 = 2148052637;
-pub const KVM_S390_GET_IRQ_STATE: u32 = 1075883702;
-pub const KVM_GET_DEVICE_ATTR: u32 = 1075359458;
-pub const KVM_S390_INITIAL_RESET: u32 = 44695;
-pub const KVM_SET_REGS: u32 = 1082175106;
-pub const KVM_GET_TSC_KHZ: u32 = 44707;
-pub const KVM_CHECK_EXTENSION: u32 = 44547;
-pub const KVM_PPC_RESIZE_HPT_COMMIT: u32 = 2148576942;
-pub const KVM_GET_DIRTY_LOG: u32 = 1074835010;
-pub const KVM_S390_SET_IRQ_STATE: u32 = 1075883701;
-pub const KVM_S390_NORMAL_RESET: u32 = 44739;
-pub const KVM_SET_SIGNAL_MASK: u32 = 1074048651;
-pub const KVM_XEN_VCPU_SET_ATTR: u32 = 1078505163;
-pub const KVM_SET_GSI_ROUTING: u32 = 1074310762;
-pub const KVM_CREATE_VCPU: u32 = 44609;
-pub const KVM_S390_UCAS_UNMAP: u32 = 1075359313;
-pub const KVM_S390_STORE_STATUS: u32 = 1074310805;
-pub const KVM_UNREGISTER_COALESCED_MMIO: u32 = 1074835048;
-pub const KVM_ASSIGN_DEV_IRQ: u32 = 1077980784;
-pub const KVM_S390_PV_COMMAND: u32 = 3223367365;
-pub const KVM_S390_ENABLE_SIE: u32 = 44550;
-pub const KVM_CLEAR_DIRTY_LOG: u32 = 3222843072;
-pub const KVM_GET_ONE_REG: u32 = 1074835115;
-pub const KVM_ARM_SET_DEVICE_ADDR: u32 = 1074835115;
-pub const KVM_DIRTY_TLB: u32 = 1074835114;
-pub const KVM_NMI: u32 = 44698;
-pub const KVM_HYPERV_EVENTFD: u32 = 1075359421;
-pub const KVM_S390_MEM_OP: u32 = 1077980849;
-pub const KVM_PPC_SVM_OFF: u32 = 44723;
-pub const KVM_PPC_RESIZE_HPT_PREPARE: u32 = 2148576941;
-pub const KVM_INTERRUPT: u32 = 1074048646;
-pub const KVM_XEN_HVM_GET_ATTR: u32 = 3225988808;
-pub const KVM_GET_SREGS: u32 = 2160111235;
-pub const KVM_SET_IDENTITY_MAP_ADDR: u32 = 1074310728;
-pub const KVM_GET_REGS: u32 = 2155916929;
-pub const KVM_S390_GET_CMMA_BITS: u32 = 3223367352;
-pub const KVM_CREATE_IRQCHIP: u32 = 44640;
-pub const KVM_ASSIGN_PCI_DEVICE: u32 = 2151722601;
-pub const KVM_SET_NR_MMU_PAGES: u32 = 44612;
-pub const KVM_IOEVENTFD: u32 = 1077980793;
-pub const KVM_RUN: u32 = 44672;
-pub const KVM_S390_SET_SKEYS: u32 = 1077980851;
-pub const KVM_SET_DEVICE_ATTR: u32 = 1075359457;
-pub const KVM_DEASSIGN_DEV_IRQ: u32 = 1077980789;
-pub const KVM_SMI: u32 = 44727;
-pub const KVM_SET_TSS_ADDR: u32 = 44615;
-pub const KVM_GET_NR_MMU_PAGES: u32 = 44613;
-pub const KVM_XEN_VCPU_GET_ATTR: u32 = 3225988810;
-pub const KVM_REINJECT_CONTROL: u32 = 44657;
-pub const KVM_HAS_DEVICE_ATTR: u32 = 1075359459;
-pub const KVM_IRQFD: u32 = 1075883638;
-pub const KVM_S390_SET_CMMA_BITS: u32 = 1075883705;
-pub const KVM_SET_IRQCHIP: u32 = 2181607011;
-pub const KVM_SIGNAL_MSI: u32 = 1075883685;
-pub const KVM_GET_VCPU_MMAP_SIZE: u32 = 44548;
-pub const KVM_CREATE_VM: u32 = 44545;
-pub const KVM_S390_CLEAR_RESET: u32 = 44740;
-pub const KVM_RESET_DIRTY_RINGS: u32 = 44743;
-pub const KVM_ASSIGN_SET_MSIX_NR: u32 = 1074310771;
-pub const KVM_CREATE_PIT: u32 = 44644;
-pub const KVM_SET_GUEST_DEBUG: u32 = 1075359387;
-pub const KVM_GET_REG_LIST: u32 = 3221794480;
-pub const KVM_ARM_VCPU_FINALIZE: u32 = 1074048706;
-pub const KVM_SET_CLOCK: u32 = 1076932219;
-pub const KVM_PPC_ALLOCATE_HTAB: u32 = 3221532327;
-pub const KVM_PPC_GET_SMMU_INFO: u32 = 2186325670;
-pub const KVM_SET_TSC_KHZ: u32 = 44706;
-pub const KVM_S390_IRQ: u32 = 1078505140;
-pub const KVM_ENABLE_CAP: u32 = 1080602275;
-pub const KVM_IRQ_LINE: u32 = 1074310753;
-pub const KVM_SET_SREGS: u32 = 1086369412;
-pub const KVM_MEMORY_ENCRYPT_UNREG_REGION: u32 = 2148576956;
-pub const KVM_GET_STATS_FD: u32 = 44750;
-pub const USBDEVFS_CLAIMINTERFACE: u32 = 2147767567;
-pub const CHIOMOVE: u32 = 1075077889;
-pub const SONYPI_IOCGBATFLAGS: u32 = 2147579399;
-pub const BTRFS_IOC_SYNC: u32 = 37896;
-pub const VIDIOC_TRY_FMT: u32 = 3234879040;
-pub const LIRC_SET_REC_MODE: u32 = 1074030866;
-pub const VIDIOC_DQEVENT: u32 = 2156418649;
-pub const RPMSG_DESTROY_EPT_IOCTL: u32 = 46338;
-pub const UVCIOC_CTRL_MAP: u32 = 3227546912;
-pub const VHOST_SET_BACKEND_FEATURES: u32 = 1074310949;
-pub const VHOST_VSOCK_SET_GUEST_CID: u32 = 1074311008;
-pub const UI_SET_KEYBIT: u32 = 1074025829;
-pub const LIRC_SET_REC_TIMEOUT: u32 = 1074030872;
-pub const FS_IOC_GET_ENCRYPTION_KEY_STATUS: u32 = 3229640218;
-pub const BTRFS_IOC_TREE_SEARCH_V2: u32 = 3228603409;
-pub const VHOST_SET_VRING_BASE: u32 = 1074310930;
-pub const RIO_ENABLE_DOORBELL_RANGE: u32 = 1074294025;
-pub const VIDIOC_TRY_EXT_CTRLS: u32 = 3223344713;
-pub const LIRC_GET_REC_MODE: u32 = 2147772674;
-pub const PPGETTIME: u32 = 2148561045;
-pub const BTRFS_IOC_RM_DEV: u32 = 1342215179;
-pub const ATM_SETBACKEND: u32 = 1073897970;
-pub const FSL_HV_IOCTL_PARTITION_START: u32 = 3222318851;
-pub const FBIO_WAITEVENT: u32 = 18056;
-pub const SWITCHTEC_IOCTL_PORT_TO_PFF: u32 = 3222034245;
-pub const NVME_IOCTL_IO_CMD: u32 = 3225964099;
-pub const IPMICTL_RECEIVE_MSG_TRUNC: u32 = 3224398091;
-pub const FDTWADDLE: u32 = 601;
-pub const NVME_IOCTL_SUBMIT_IO: u32 = 1076907586;
-pub const NILFS_IOCTL_SYNC: u32 = 2148036234;
-pub const VIDIOC_SUBDEV_S_DV_TIMINGS: u32 = 3229898327;
-pub const ASPEED_LPC_CTRL_IOCTL_GET_SIZE: u32 = 3222319616;
-pub const DM_DEV_STATUS: u32 = 3241737479;
-pub const TEE_IOC_CLOSE_SESSION: u32 = 2147787781;
-pub const NS_GETPSTAT: u32 = 3222298977;
-pub const UI_SET_PROPBIT: u32 = 1074025838;
-pub const TUNSETFILTEREBPF: u32 = 2147767521;
-pub const RIO_MPORT_MAINT_COMPTAG_SET: u32 = 1074031874;
-pub const AUTOFS_DEV_IOCTL_VERSION: u32 = 3222836081;
-pub const WDIOC_SETOPTIONS: u32 = 2147768068;
-pub const VHOST_SCSI_SET_ENDPOINT: u32 = 1088991040;
-pub const MGSL_IOCGTXIDLE: u32 = 27907;
-pub const ATM_ADDLECSADDR: u32 = 1074815374;
-pub const FSL_HV_IOCTL_GETPROP: u32 = 3223891719;
-pub const FDGETPRM: u32 = 2149581316;
-pub const HIDIOCAPPLICATION: u32 = 18434;
-pub const ENI_MEMDUMP: u32 = 1074815328;
-pub const PTP_SYS_OFFSET2: u32 = 1128283406;
-pub const VIDIOC_SUBDEV_G_DV_TIMINGS: u32 = 3229898328;
-pub const DMA_BUF_SET_NAME_A: u32 = 1074029057;
-pub const PTP_PIN_GETFUNC: u32 = 3227532550;
-pub const PTP_SYS_OFFSET_EXTENDED: u32 = 3300932873;
-pub const DFL_FPGA_PORT_UINT_SET_IRQ: u32 = 1074312776;
-pub const RTC_EPOCH_READ: u32 = 2148036621;
-pub const VIDIOC_SUBDEV_S_SELECTION: u32 = 3225441854;
-pub const VIDIOC_QUERY_EXT_CTRL: u32 = 3236451943;
-pub const ATM_GETLECSADDR: u32 = 1074815376;
-pub const FSL_HV_IOCTL_PARTITION_STOP: u32 = 3221794564;
-pub const SONET_GETDIAG: u32 = 2147770644;
-pub const ATMMPC_DATA: u32 = 25049;
-pub const IPMICTL_UNREGISTER_FOR_CMD_CHANS: u32 = 2148296989;
-pub const HIDIOCGCOLLECTIONINDEX: u32 = 1075333136;
-pub const RPMSG_CREATE_EPT_IOCTL: u32 = 1076409601;
-pub const GPIOHANDLE_GET_LINE_VALUES_IOCTL: u32 = 3225465864;
-pub const UI_DEV_SETUP: u32 = 1079792899;
-pub const ISST_IF_IO_CMD: u32 = 1074331138;
-pub const RIO_MPORT_MAINT_READ_REMOTE: u32 = 2149084423;
-pub const VIDIOC_OMAP3ISP_HIST_CFG: u32 = 3224393412;
-pub const BLKGETNRZONES: u32 = 2147750533;
-pub const VIDIOC_G_MODULATOR: u32 = 3225703990;
-pub const VBG_IOCTL_WRITE_CORE_DUMP: u32 = 3223082515;
-pub const USBDEVFS_SETINTERFACE: u32 = 2148029700;
-pub const PPPIOCGCHAN: u32 = 2147775543;
-pub const EVIOCGVERSION: u32 = 2147763457;
-pub const VHOST_NET_SET_BACKEND: u32 = 1074310960;
-pub const USBDEVFS_REAPURBNDELAY: u32 = 1074287885;
-pub const RNDZAPENTCNT: u32 = 20996;
-pub const VIDIOC_G_PARM: u32 = 3234616853;
-pub const TUNGETDEVNETNS: u32 = 21731;
-pub const LIRC_SET_MEASURE_CARRIER_MODE: u32 = 1074030877;
-pub const VHOST_SET_VRING_ERR: u32 = 1074310946;
-pub const VDUSE_VQ_SETUP: u32 = 1075872020;
-pub const AUTOFS_IOC_SETTIMEOUT: u32 = 3221787492;
-pub const VIDIOC_S_FREQUENCY: u32 = 1076647481;
-pub const F2FS_IOC_SEC_TRIM_FILE: u32 = 1075377428;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY: u32 = 3225445912;
-pub const WDIOC_GETPRETIMEOUT: u32 = 2147768073;
-pub const USBDEVFS_DROP_PRIVILEGES: u32 = 1074025758;
-pub const BTRFS_IOC_SNAP_CREATE_V2: u32 = 1342215191;
-pub const VHOST_VSOCK_SET_RUNNING: u32 = 1074048865;
-pub const STP_SET_OPTIONS: u32 = 1074275586;
-pub const FBIO_RADEON_GET_MIRROR: u32 = 2148024323;
-pub const IVTVFB_IOC_DMA_FRAME: u32 = 1075336896;
-pub const IPMICTL_SEND_COMMAND: u32 = 2150131981;
-pub const VIDIOC_G_ENC_INDEX: u32 = 2283296332;
-pub const DFL_FPGA_FME_PORT_PR: u32 = 46720;
-pub const CHIOSVOLTAG: u32 = 1076912914;
-pub const ATM_SETESIF: u32 = 1074815373;
-pub const FW_CDEV_IOC_SEND_RESPONSE: u32 = 1075323652;
-pub const PMU_IOC_GET_MODEL: u32 = 2148024835;
-pub const JSIOCGBTNMAP: u32 = 2214619700;
-pub const USBDEVFS_HUB_PORTINFO: u32 = 2155894035;
-pub const VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS: u32 = 3222820363;
-pub const FDCLRPRM: u32 = 577;
-pub const BTRFS_IOC_SCRUB: u32 = 3288372251;
-pub const USBDEVFS_DISCONNECT: u32 = 21782;
-pub const TUNSETVNETBE: u32 = 1074025694;
-pub const ATMTCP_REMOVE: u32 = 24975;
-pub const VHOST_VDPA_GET_CONFIG: u32 = 2148052851;
-pub const PPPIOCGNPMODE: u32 = 3221779532;
-pub const FDGETDRVPRM: u32 = 2155872785;
-pub const TUNSETVNETLE: u32 = 1074025692;
-pub const PHN_SETREG: u32 = 1074294790;
-pub const PPPIOCDETACH: u32 = 1074033724;
-pub const MMTIMER_GETRES: u32 = 2148035841;
-pub const VIDIOC_SUBDEV_ENUMSTD: u32 = 3225966105;
-pub const PPGETFLAGS: u32 = 2147774618;
-pub const VDUSE_DEV_GET_FEATURES: u32 = 2148040977;
-pub const CAPI_MANUFACTURER_CMD: u32 = 3222291232;
-pub const VIDIOC_G_TUNER: u32 = 3226752541;
-pub const DM_TABLE_STATUS: u32 = 3241737484;
-pub const DM_DEV_ARM_POLL: u32 = 3241737488;
-pub const NE_CREATE_VM: u32 = 2148052512;
-pub const MEDIA_IOC_ENUM_LINKS: u32 = 3223878658;
-pub const F2FS_IOC_PRECACHE_EXTENTS: u32 = 62735;
-pub const DFL_FPGA_PORT_DMA_MAP: u32 = 46659;
-pub const MGSL_IOCGXCTRL: u32 = 27926;
-pub const FW_CDEV_IOC_SEND_REQUEST: u32 = 1076372225;
-pub const SONYPI_IOCGBLUE: u32 = 2147579400;
-pub const F2FS_IOC_DECOMPRESS_FILE: u32 = 62743;
-pub const I2OHTML: u32 = 3224398089;
-pub const VFIO_GET_API_VERSION: u32 = 15204;
-pub const IDT77105_GETSTATZ: u32 = 1074815283;
-pub const I2OPARMSET: u32 = 3223873795;
-pub const TEE_IOC_CANCEL: u32 = 2148049924;
-pub const PTP_SYS_OFFSET_PRECISE2: u32 = 3225435409;
-pub const DFL_FPGA_PORT_RESET: u32 = 46656;
-pub const PPPIOCGASYNCMAP: u32 = 2147775576;
-pub const EVIOCGKEYCODE_V2: u32 = 2150122756;
-pub const DM_DEV_SET_GEOMETRY: u32 = 3241737487;
-pub const HIDIOCSUSAGE: u32 = 1075333132;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE: u32 = 1075323664;
-pub const PTP_EXTTS_REQUEST: u32 = 1074806018;
-pub const SWITCHTEC_IOCTL_EVENT_CTL: u32 = 3223869251;
-pub const WDIOC_SETPRETIMEOUT: u32 = 3221509896;
-pub const VHOST_SCSI_CLEAR_ENDPOINT: u32 = 1088991041;
-pub const JSIOCGAXES: u32 = 2147576337;
-pub const HIDIOCSFLAG: u32 = 1074022415;
-pub const PTP_PEROUT_REQUEST2: u32 = 1077427468;
-pub const PPWDATA: u32 = 1073836166;
-pub const PTP_CLOCK_GETCAPS: u32 = 2152742145;
-pub const FDGETMAXERRS: u32 = 2148794894;
-pub const TUNSETQUEUE: u32 = 1074025689;
-pub const PTP_ENABLE_PPS: u32 = 1074019588;
-pub const SIOCSIFATMTCP: u32 = 24960;
-pub const CEC_ADAP_G_LOG_ADDRS: u32 = 2153537795;
-pub const ND_IOCTL_ARS_CAP: u32 = 3223342593;
-pub const NBD_SET_BLKSIZE: u32 = 43777;
-pub const NBD_SET_TIMEOUT: u32 = 43785;
-pub const VHOST_SCSI_GET_ABI_VERSION: u32 = 1074048834;
-pub const RIO_UNMAP_INBOUND: u32 = 1074294034;
-pub const ATM_QUERYLOOP: u32 = 1074815316;
-pub const DFL_FPGA_GET_API_VERSION: u32 = 46592;
-pub const USBDEVFS_WAIT_FOR_RESUME: u32 = 21795;
-pub const FBIO_CURSOR: u32 = 3228059144;
-pub const RNDCLEARPOOL: u32 = 20998;
-pub const VIDIOC_QUERYSTD: u32 = 2148030015;
-pub const DMA_BUF_IOCTL_SYNC: u32 = 1074291200;
-pub const SCIF_RECV: u32 = 3222827783;
-pub const PTP_PIN_GETFUNC2: u32 = 3227532559;
-pub const FW_CDEV_IOC_ALLOCATE: u32 = 3223331586;
-pub const CEC_ADAP_G_CAPS: u32 = 3226231040;
-pub const VIDIOC_G_FBUF: u32 = 2150651402;
-pub const PTP_ENABLE_PPS2: u32 = 1074019597;
-pub const PCITEST_CLEAR_IRQ: u32 = 20496;
-pub const IPMICTL_SET_GETS_EVENTS_CMD: u32 = 2147772688;
-pub const BTRFS_IOC_DEVICES_READY: u32 = 2415957031;
-pub const JSIOCGAXMAP: u32 = 2151705138;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER: u32 = 2148541196;
-pub const FW_CDEV_IOC_SET_ISO_CHANNELS: u32 = 1074799383;
-pub const RTC_WIE_OFF: u32 = 28688;
-pub const PPGETMODE: u32 = 2147774616;
-pub const VIDIOC_DBG_G_REGISTER: u32 = 3224917584;
-pub const PTP_SYS_OFFSET: u32 = 1128283397;
-pub const BTRFS_IOC_SPACE_INFO: u32 = 3222311956;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_SIZE: u32 = 3225441866;
-pub const ND_IOCTL_VENDOR: u32 = 3221769737;
-pub const SCIF_VREADFROM: u32 = 3223876364;
-pub const BTRFS_IOC_TRANS_START: u32 = 37894;
-pub const INOTIFY_IOC_SETNEXTWD: u32 = 1074022656;
-pub const SNAPSHOT_GET_IMAGE_SIZE: u32 = 2148021006;
-pub const TUNDETACHFILTER: u32 = 1074812118;
-pub const ND_IOCTL_CLEAR_ERROR: u32 = 3223342596;
-pub const IOC_PR_CLEAR: u32 = 1074819277;
-pub const SCIF_READFROM: u32 = 3223876362;
-pub const PPPIOCGDEBUG: u32 = 2147775553;
-pub const BLKGETZONESZ: u32 = 2147750532;
-pub const HIDIOCGUSAGES: u32 = 3491514387;
-pub const SONYPI_IOCGTEMP: u32 = 2147579404;
-pub const UI_SET_MSCBIT: u32 = 1074025832;
-pub const APM_IOC_SUSPEND: u32 = 16642;
-pub const BTRFS_IOC_TREE_SEARCH: u32 = 3489698833;
-pub const RTC_PLL_GET: u32 = 2149609489;
-pub const RIO_CM_EP_GET_LIST: u32 = 3221512962;
-pub const USBDEVFS_DISCSIGNAL: u32 = 2148553998;
-pub const LIRC_GET_MIN_TIMEOUT: u32 = 2147772680;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY: u32 = 2174244674;
-pub const DM_TARGET_MSG: u32 = 3241737486;
-pub const SONYPI_IOCGBAT1REM: u32 = 2147644931;
-pub const EVIOCSFF: u32 = 1076905344;
-pub const TUNSETGROUP: u32 = 1074025678;
-pub const EVIOCGKEYCODE: u32 = 2148025604;
-pub const KCOV_REMOTE_ENABLE: u32 = 1075340134;
-pub const ND_IOCTL_GET_CONFIG_SIZE: u32 = 3222031876;
-pub const FDEJECT: u32 = 602;
-pub const TUNSETOFFLOAD: u32 = 1074025680;
-pub const PPPIOCCONNECT: u32 = 1074033722;
-pub const ATM_ADDADDR: u32 = 1074815368;
-pub const VDUSE_DEV_INJECT_CONFIG_IRQ: u32 = 33043;
-pub const AUTOFS_DEV_IOCTL_ASKUMOUNT: u32 = 3222836093;
-pub const VHOST_VDPA_GET_STATUS: u32 = 2147594097;
-pub const CCISS_PASSTHRU: u32 = 3227009547;
-pub const MGSL_IOCCLRMODCOUNT: u32 = 27919;
-pub const TEE_IOC_SUPPL_SEND: u32 = 2148574215;
-pub const ATMARPD_CTRL: u32 = 25057;
-pub const UI_ABS_SETUP: u32 = 1075598596;
-pub const UI_DEV_DESTROY: u32 = 21762;
-pub const BTRFS_IOC_QUOTA_CTL: u32 = 3222311976;
-pub const RTC_AIE_ON: u32 = 28673;
-pub const AUTOFS_IOC_EXPIRE: u32 = 2165085029;
-pub const PPPIOCSDEBUG: u32 = 1074033728;
-pub const GPIO_V2_LINE_SET_VALUES_IOCTL: u32 = 3222320143;
-pub const PPPIOCSMRU: u32 = 1074033746;
-pub const CCISS_DEREGDISK: u32 = 16908;
-pub const UI_DEV_CREATE: u32 = 21761;
-pub const FUSE_DEV_IOC_CLONE: u32 = 2147804416;
-pub const BTRFS_IOC_START_SYNC: u32 = 2148045848;
-pub const NILFS_IOCTL_DELETE_CHECKPOINT: u32 = 1074294401;
-pub const SNAPSHOT_AVAIL_SWAP_SIZE: u32 = 2148021011;
-pub const DM_TABLE_CLEAR: u32 = 3241737482;
-pub const CCISS_GETINTINFO: u32 = 2148024834;
-pub const PPPIOCSASYNCMAP: u32 = 1074033751;
-pub const I2OEVTGET: u32 = 2154326283;
-pub const NVME_IOCTL_RESET: u32 = 20036;
-pub const PPYIELD: u32 = 28813;
-pub const NVME_IOCTL_IO64_CMD: u32 = 3226488392;
-pub const TUNSETCARRIER: u32 = 1074025698;
-pub const DM_DEV_WAIT: u32 = 3241737480;
-pub const RTC_WIE_ON: u32 = 28687;
-pub const MEDIA_IOC_DEVICE_INFO: u32 = 3238034432;
-pub const RIO_CM_CHAN_CREATE: u32 = 3221381891;
-pub const MGSL_IOCSPARAMS: u32 = 1076915456;
-pub const RTC_SET_TIME: u32 = 1076129802;
-pub const VHOST_RESET_OWNER: u32 = 44802;
-pub const IOC_OPAL_PSID_REVERT_TPR: u32 = 1091072232;
-pub const AUTOFS_DEV_IOCTL_OPENMOUNT: u32 = 3222836084;
-pub const UDF_GETEABLOCK: u32 = 2148035649;
-pub const VFIO_IOMMU_MAP_DMA: u32 = 15217;
-pub const VIDIOC_SUBSCRIBE_EVENT: u32 = 1075861082;
-pub const HIDIOCGFLAG: u32 = 2147764238;
-pub const HIDIOCGUCODE: u32 = 3222816781;
-pub const VIDIOC_OMAP3ISP_AF_CFG: u32 = 3226228421;
-pub const DM_REMOVE_ALL: u32 = 3241737473;
-pub const ASPEED_LPC_CTRL_IOCTL_MAP: u32 = 1074835969;
-pub const CCISS_GETFIRMVER: u32 = 2147762696;
-pub const ND_IOCTL_ARS_START: u32 = 3223342594;
-pub const PPPIOCSMRRU: u32 = 1074033723;
-pub const CEC_ADAP_S_LOG_ADDRS: u32 = 3227279620;
-pub const RPROC_GET_SHUTDOWN_ON_RELEASE: u32 = 2147792642;
-pub const DMA_HEAP_IOCTL_ALLOC: u32 = 3222816768;
-pub const PPSETTIME: u32 = 1074819222;
-pub const RTC_ALM_READ: u32 = 2149871624;
-pub const VDUSE_SET_API_VERSION: u32 = 1074299137;
-pub const RIO_MPORT_MAINT_WRITE_REMOTE: u32 = 1075342600;
-pub const VIDIOC_SUBDEV_S_CROP: u32 = 3224917564;
-pub const USBDEVFS_CONNECT: u32 = 21783;
-pub const SYNC_IOC_FILE_INFO: u32 = 3224911364;
-pub const ATMARP_MKIP: u32 = 25058;
-pub const VFIO_IOMMU_SPAPR_TCE_GET_INFO: u32 = 15216;
-pub const CCISS_GETHEARTBEAT: u32 = 2147762694;
-pub const ATM_RSTADDR: u32 = 1074815367;
-pub const NBD_SET_SIZE: u32 = 43778;
-pub const UDF_GETVOLIDENT: u32 = 2148035650;
-pub const GPIO_V2_LINE_GET_VALUES_IOCTL: u32 = 3222320142;
-pub const MGSL_IOCSTXIDLE: u32 = 27906;
-pub const FSL_HV_IOCTL_SETPROP: u32 = 3223891720;
-pub const BTRFS_IOC_GET_DEV_STATS: u32 = 3288896564;
-pub const PPRSTATUS: u32 = 2147577985;
-pub const MGSL_IOCTXENABLE: u32 = 27908;
-pub const UDF_GETEASIZE: u32 = 2147773504;
-pub const NVME_IOCTL_ADMIN64_CMD: u32 = 3226488391;
-pub const VHOST_SET_OWNER: u32 = 44801;
-pub const RIO_ALLOC_DMA: u32 = 3222826259;
-pub const RIO_CM_CHAN_ACCEPT: u32 = 3221775111;
-pub const I2OHRTGET: u32 = 3222825217;
-pub const ATM_SETCIRANGE: u32 = 1074815371;
-pub const HPET_IE_ON: u32 = 26625;
-pub const PERF_EVENT_IOC_ID: u32 = 2148017159;
-pub const TUNSETSNDBUF: u32 = 1074025684;
-pub const PTP_PIN_SETFUNC: u32 = 1080048903;
-pub const PPPIOCDISCONN: u32 = 29753;
-pub const VIDIOC_QUERYCTRL: u32 = 3225703972;
-pub const PPEXCL: u32 = 28815;
-pub const PCITEST_MSI: u32 = 1074024451;
-pub const FDWERRORCLR: u32 = 598;
-pub const AUTOFS_IOC_FAIL: u32 = 37729;
-pub const USBDEVFS_IOCTL: u32 = 3222295826;
-pub const VIDIOC_S_STD: u32 = 1074288152;
-pub const F2FS_IOC_RESIZE_FS: u32 = 1074328848;
-pub const SONET_SETDIAG: u32 = 3221512466;
-pub const BTRFS_IOC_DEFRAG: u32 = 1342215170;
-pub const CCISS_GETDRIVVER: u32 = 2147762697;
-pub const IPMICTL_GET_TIMING_PARMS_CMD: u32 = 2148034839;
-pub const HPET_IRQFREQ: u32 = 1074292742;
-pub const ATM_GETESI: u32 = 1074815365;
-pub const CCISS_GETLUNINFO: u32 = 2148286993;
-pub const AUTOFS_DEV_IOCTL_ISMOUNTPOINT: u32 = 3222836094;
-pub const TEE_IOC_SHM_ALLOC: u32 = 3222316033;
-pub const PERF_EVENT_IOC_SET_BPF: u32 = 1074013192;
-pub const UDMABUF_CREATE_LIST: u32 = 1074296131;
-pub const VHOST_SET_LOG_BASE: u32 = 1074310916;
-pub const ZATM_GETPOOL: u32 = 1074815329;
-pub const BR2684_SETFILT: u32 = 1075601808;
-pub const RNDGETPOOL: u32 = 2148028930;
-pub const PPS_GETPARAMS: u32 = 2148036769;
-pub const IOC_PR_RESERVE: u32 = 1074819273;
-pub const VIDIOC_TRY_DECODER_CMD: u32 = 3225966177;
-pub const RIO_CM_CHAN_CLOSE: u32 = 1073898244;
-pub const VIDIOC_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const IOCTL_MEI_CONNECT_CLIENT_VTAG: u32 = 3222554628;
-pub const PMU_IOC_GET_BACKLIGHT: u32 = 2148024833;
-pub const USBDEVFS_GET_CAPABILITIES: u32 = 2147767578;
-pub const SCIF_WRITETO: u32 = 3223876363;
-pub const UDF_RELOCATE_BLOCKS: u32 = 3221777475;
-pub const FSL_HV_IOCTL_PARTITION_RESTART: u32 = 3221794561;
-pub const CCISS_REGNEWD: u32 = 16910;
-pub const FAT_IOCTL_SET_ATTRIBUTES: u32 = 1074033169;
-pub const VIDIOC_CREATE_BUFS: u32 = 3238024796;
-pub const CAPI_GET_VERSION: u32 = 3222291207;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY: u32 = 2228770626;
-pub const VFIO_EEH_PE_OP: u32 = 15225;
-pub const FW_CDEV_IOC_CREATE_ISO_CONTEXT: u32 = 3223331592;
-pub const F2FS_IOC_RELEASE_COMPRESS_BLOCKS: u32 = 2148070674;
-pub const NBD_SET_SIZE_BLOCKS: u32 = 43783;
-pub const IPMI_BMC_IOCTL_SET_SMS_ATN: u32 = 45312;
-pub const ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG: u32 = 3222319873;
-pub const VIDIOC_S_AUDOUT: u32 = 1077171762;
-pub const VIDIOC_S_FMT: u32 = 3234878981;
-pub const PPPIOCATTACH: u32 = 1074033725;
-pub const VHOST_GET_VRING_BUSYLOOP_TIMEOUT: u32 = 1074310948;
-pub const FS_IOC_MEASURE_VERITY: u32 = 3221513862;
-pub const CCISS_BIG_PASSTHRU: u32 = 3227533842;
-pub const IPMICTL_SET_MY_LUN_CMD: u32 = 2147772691;
-pub const PCITEST_LEGACY_IRQ: u32 = 20482;
-pub const USBDEVFS_SUBMITURB: u32 = 2151175434;
-pub const AUTOFS_IOC_READY: u32 = 37728;
-pub const BTRFS_IOC_SEND: u32 = 1078498342;
-pub const VIDIOC_G_EXT_CTRLS: u32 = 3223344711;
-pub const JSIOCSBTNMAP: u32 = 1140877875;
-pub const PPPIOCSFLAGS: u32 = 1074033753;
-pub const NVRAM_INIT: u32 = 28736;
-pub const RFKILL_IOCTL_NOINPUT: u32 = 20993;
-pub const BTRFS_IOC_BALANCE: u32 = 1342215180;
-pub const FS_IOC_GETFSMAP: u32 = 3233830971;
-pub const IPMICTL_GET_MY_CHANNEL_LUN_CMD: u32 = 2147772699;
-pub const STP_POLICY_ID_GET: u32 = 2148541697;
-pub const PPSETFLAGS: u32 = 1074032795;
-pub const CEC_ADAP_S_PHYS_ADDR: u32 = 1073897730;
-pub const ATMTCP_CREATE: u32 = 24974;
-pub const IPMI_BMC_IOCTL_FORCE_ABORT: u32 = 45314;
-pub const PPPIOCGXASYNCMAP: u32 = 2149610576;
-pub const VHOST_SET_VRING_CALL: u32 = 1074310945;
-pub const LIRC_GET_FEATURES: u32 = 2147772672;
-pub const GSMIOC_DISABLE_NET: u32 = 18179;
-pub const AUTOFS_IOC_CATATONIC: u32 = 37730;
-pub const NBD_DO_IT: u32 = 43779;
-pub const LIRC_SET_REC_CARRIER_RANGE: u32 = 1074030879;
-pub const IPMICTL_GET_MY_CHANNEL_ADDRESS_CMD: u32 = 2147772697;
-pub const EVIOCSCLOCKID: u32 = 1074021792;
-pub const USBDEVFS_FREE_STREAMS: u32 = 2148029725;
-pub const FSI_SCOM_RESET: u32 = 1074033411;
-pub const PMU_IOC_GRAB_BACKLIGHT: u32 = 2148024838;
-pub const VIDIOC_SUBDEV_S_FMT: u32 = 3227014661;
-pub const FDDEFPRM: u32 = 1075839555;
-pub const TEE_IOC_INVOKE: u32 = 2148574211;
-pub const USBDEVFS_BULK: u32 = 3222820098;
-pub const SCIF_VWRITETO: u32 = 3223876365;
-pub const SONYPI_IOCSBRT: u32 = 1073837568;
-pub const BTRFS_IOC_FILE_EXTENT_SAME: u32 = 3222836278;
-pub const RTC_PIE_ON: u32 = 28677;
-pub const BTRFS_IOC_SCAN_DEV: u32 = 1342215172;
-pub const PPPIOCXFERUNIT: u32 = 29774;
-pub const WDIOC_GETTIMEOUT: u32 = 2147768071;
-pub const BTRFS_IOC_SET_RECEIVED_SUBVOL: u32 = 3234370597;
-pub const DFL_FPGA_PORT_ERR_SET_IRQ: u32 = 1074312774;
-pub const FBIO_WAITFORVSYNC: u32 = 1074021920;
-pub const RTC_PIE_OFF: u32 = 28678;
-pub const EVIOCGRAB: u32 = 1074021776;
-pub const PMU_IOC_SET_BACKLIGHT: u32 = 1074283010;
-pub const EVIOCGREP: u32 = 2148025603;
-pub const PERF_EVENT_IOC_MODIFY_ATTRIBUTES: u32 = 1074275339;
-pub const UFFDIO_CONTINUE: u32 = 3223366151;
-pub const VDUSE_GET_API_VERSION: u32 = 2148040960;
-pub const RTC_RD_TIME: u32 = 2149871625;
-pub const FDMSGOFF: u32 = 582;
-pub const IPMICTL_REGISTER_FOR_CMD_CHANS: u32 = 2148296988;
-pub const CAPI_GET_ERRCODE: u32 = 2147631905;
-pub const PCITEST_SET_IRQTYPE: u32 = 1074024456;
-pub const VIDIOC_SUBDEV_S_EDID: u32 = 3223868969;
-pub const MATROXFB_SET_OUTPUT_MODE: u32 = 1074294522;
-pub const RIO_DEV_ADD: u32 = 1075866903;
-pub const VIDIOC_ENUM_FREQ_BANDS: u32 = 3225441893;
-pub const FBIO_RADEON_SET_MIRROR: u32 = 1074282500;
-pub const PCITEST_GET_IRQTYPE: u32 = 20489;
-pub const JSIOCGVERSION: u32 = 2147772929;
-pub const SONYPI_IOCSBLUE: u32 = 1073837577;
-pub const SNAPSHOT_PREF_IMAGE_SIZE: u32 = 13074;
-pub const F2FS_IOC_GET_FEATURES: u32 = 2147808524;
-pub const SCIF_REG: u32 = 3223876360;
-pub const NILFS_IOCTL_CLEAN_SEGMENTS: u32 = 1081634440;
-pub const FW_CDEV_IOC_INITIATE_BUS_RESET: u32 = 1074012933;
-pub const RIO_WAIT_FOR_ASYNC: u32 = 1074294038;
-pub const VHOST_SET_VRING_NUM: u32 = 1074310928;
-pub const AUTOFS_DEV_IOCTL_PROTOVER: u32 = 3222836082;
-pub const RIO_FREE_DMA: u32 = 1074294036;
-pub const MGSL_IOCRXENABLE: u32 = 27909;
-pub const IOCTL_VM_SOCKETS_GET_LOCAL_CID: u32 = 1977;
-pub const IPMICTL_SET_TIMING_PARMS_CMD: u32 = 2148034838;
-pub const PPPIOCGL2TPSTATS: u32 = 2152231990;
-pub const PERF_EVENT_IOC_PERIOD: u32 = 1074275332;
-pub const PTP_PIN_SETFUNC2: u32 = 1080048912;
-pub const CHIOEXCHANGE: u32 = 1075602178;
-pub const NILFS_IOCTL_GET_SUINFO: u32 = 2149084804;
-pub const CEC_DQEVENT: u32 = 3226493191;
-pub const UI_SET_SWBIT: u32 = 1074025837;
-pub const VHOST_VDPA_SET_CONFIG: u32 = 1074311028;
-pub const TUNSETIFF: u32 = 1074025674;
-pub const CHIOPOSITION: u32 = 1074553603;
-pub const IPMICTL_SET_MAINTENANCE_MODE_CMD: u32 = 1074030879;
-pub const BTRFS_IOC_DEFAULT_SUBVOL: u32 = 1074304019;
-pub const RIO_UNMAP_OUTBOUND: u32 = 1076391184;
-pub const CAPI_CLR_FLAGS: u32 = 2147762981;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE: u32 = 1075323663;
-pub const MATROXFB_GET_OUTPUT_CONNECTION: u32 = 2148036344;
-pub const EVIOCSMASK: u32 = 1074808211;
-pub const BTRFS_IOC_FORGET_DEV: u32 = 1342215173;
-pub const CXL_MEM_QUERY_COMMANDS: u32 = 2148060673;
-pub const CEC_S_MODE: u32 = 1074028809;
-pub const MGSL_IOCSIF: u32 = 27914;
-pub const SWITCHTEC_IOCTL_PFF_TO_PORT: u32 = 3222034244;
-pub const PPSETMODE: u32 = 1074032768;
-pub const VFIO_DEVICE_SET_IRQS: u32 = 15214;
-pub const VIDIOC_PREPARE_BUF: u32 = 3227014749;
-pub const CEC_ADAP_G_CONNECTOR_INFO: u32 = 2151964938;
-pub const IOC_OPAL_WRITE_SHADOW_MBR: u32 = 1092645098;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL: u32 = 3225441867;
-pub const UDMABUF_CREATE: u32 = 1075344706;
-pub const SONET_CLRDIAG: u32 = 3221512467;
-pub const PHN_SET_REG: u32 = 1074294785;
-pub const RNDADDTOENTCNT: u32 = 1074024961;
-pub const VBG_IOCTL_CHECK_BALLOON: u32 = 3223344657;
-pub const VIDIOC_OMAP3ISP_STAT_REQ: u32 = 3223869126;
-pub const PPS_FETCH: u32 = 3221778596;
-pub const RTC_AIE_OFF: u32 = 28674;
-pub const VFIO_GROUP_SET_CONTAINER: u32 = 15208;
-pub const FW_CDEV_IOC_RECEIVE_PHY_PACKETS: u32 = 1074275094;
-pub const VFIO_IOMMU_SPAPR_TCE_REMOVE: u32 = 15224;
-pub const VFIO_IOMMU_GET_INFO: u32 = 15216;
-pub const DM_DEV_SUSPEND: u32 = 3241737478;
-pub const F2FS_IOC_GET_COMPRESS_OPTION: u32 = 2147677461;
-pub const FW_CDEV_IOC_STOP_ISO: u32 = 1074012939;
-pub const GPIO_V2_GET_LINEINFO_IOCTL: u32 = 3238048773;
-pub const ATMMPC_CTRL: u32 = 25048;
-pub const PPPIOCSXASYNCMAP: u32 = 1075868751;
-pub const CHIOGSTATUS: u32 = 1074815752;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE: u32 = 3222807309;
-pub const RIO_MPORT_MAINT_PORT_IDX_GET: u32 = 2147773699;
-pub const CAPI_SET_FLAGS: u32 = 2147762980;
-pub const VFIO_GROUP_GET_DEVICE_FD: u32 = 15210;
-pub const VHOST_SET_MEM_TABLE: u32 = 1074310915;
-pub const MATROXFB_SET_OUTPUT_CONNECTION: u32 = 1074294520;
-pub const DFL_FPGA_PORT_GET_REGION_INFO: u32 = 46658;
-pub const VHOST_GET_FEATURES: u32 = 2148052736;
-pub const LIRC_GET_REC_RESOLUTION: u32 = 2147772679;
-pub const PACKET_CTRL_CMD: u32 = 3222820865;
-pub const LIRC_SET_TRANSMITTER_MASK: u32 = 1074030871;
-pub const BTRFS_IOC_ADD_DEV: u32 = 1342215178;
-pub const JSIOCGCORR: u32 = 2149870114;
-pub const VIDIOC_G_FMT: u32 = 3234878980;
-pub const RTC_EPOCH_SET: u32 = 1074294798;
-pub const CAPI_GET_PROFILE: u32 = 3225436937;
-pub const ATM_GETLOOP: u32 = 1074815314;
-pub const SCIF_LISTEN: u32 = 1074033410;
-pub const NBD_CLEAR_QUE: u32 = 43781;
-pub const F2FS_IOC_MOVE_RANGE: u32 = 3223385353;
-pub const LIRC_GET_LENGTH: u32 = 2147772687;
-pub const I8K_SET_FAN: u32 = 3221776775;
-pub const FDSETMAXERRS: u32 = 1075053132;
-pub const VIDIOC_SUBDEV_QUERYCAP: u32 = 2151699968;
-pub const SNAPSHOT_SET_SWAP_AREA: u32 = 1074541325;
-pub const LIRC_GET_REC_TIMEOUT: u32 = 2147772708;
-pub const EVIOCRMFF: u32 = 1074021761;
-pub const GPIO_GET_LINEEVENT_IOCTL: u32 = 3224417284;
-pub const PPRDATA: u32 = 2147577989;
-pub const RIO_MPORT_GET_PROPERTIES: u32 = 2150657284;
-pub const TUNSETVNETHDRSZ: u32 = 1074025688;
-pub const GPIO_GET_LINEINFO_IOCTL: u32 = 3225990146;
-pub const GSMIOC_GETCONF: u32 = 2152482560;
-pub const LIRC_GET_SEND_MODE: u32 = 2147772673;
-pub const PPPIOCSACTIVE: u32 = 1074820166;
-pub const SIOCGSTAMPNS_NEW: u32 = 2148567303;
-pub const IPMICTL_RECEIVE_MSG: u32 = 3224398092;
-pub const LIRC_SET_SEND_DUTY_CYCLE: u32 = 1074030869;
-pub const UI_END_FF_ERASE: u32 = 1074550219;
-pub const SWITCHTEC_IOCTL_FLASH_PART_INFO: u32 = 3222296385;
-pub const FW_CDEV_IOC_SEND_PHY_PACKET: u32 = 3222807317;
-pub const NBD_SET_FLAGS: u32 = 43786;
-pub const VFIO_DEVICE_GET_REGION_INFO: u32 = 15212;
-pub const REISERFS_IOC_UNPACK: u32 = 1074318593;
-pub const FW_CDEV_IOC_REMOVE_DESCRIPTOR: u32 = 1074012935;
-pub const RIO_SET_EVENT_MASK: u32 = 1074031885;
-pub const SNAPSHOT_ALLOC_SWAP_PAGE: u32 = 2148021012;
-pub const VDUSE_VQ_INJECT_IRQ: u32 = 1074037015;
-pub const I2OPASSTHRU: u32 = 2148559116;
-pub const IOC_OPAL_SET_PW: u32 = 1109422304;
-pub const FSI_SCOM_READ: u32 = 3223352065;
-pub const VHOST_VDPA_GET_DEVICE_ID: u32 = 2147790704;
-pub const VIDIOC_QBUF: u32 = 3227014671;
-pub const VIDIOC_S_TUNER: u32 = 1079268894;
-pub const TUNGETVNETHDRSZ: u32 = 2147767511;
-pub const CAPI_NCCI_GETUNIT: u32 = 2147762983;
-pub const DFL_FPGA_PORT_UINT_GET_IRQ_NUM: u32 = 2147792455;
-pub const VIDIOC_OMAP3ISP_STAT_EN: u32 = 3221771975;
-pub const GPIO_V2_LINE_SET_CONFIG_IOCTL: u32 = 3239097357;
-pub const TEE_IOC_VERSION: u32 = 2148312064;
-pub const VIDIOC_LOG_STATUS: u32 = 22086;
-pub const IPMICTL_SEND_COMMAND_SETTIME: u32 = 2150656277;
-pub const VHOST_SET_LOG_FD: u32 = 1074048775;
-pub const SCIF_SEND: u32 = 3222827782;
-pub const VIDIOC_SUBDEV_G_FMT: u32 = 3227014660;
-pub const NS_ADJBUFLEV: u32 = 24931;
-pub const VIDIOC_DBG_S_REGISTER: u32 = 1077433935;
-pub const NILFS_IOCTL_RESIZE: u32 = 1074294411;
-pub const PHN_GETREG: u32 = 3221778437;
-pub const I2OSWDL: u32 = 3224398085;
-pub const VBG_IOCTL_VMMDEV_REQUEST_BIG: u32 = 22019;
-pub const JSIOCGBUTTONS: u32 = 2147576338;
-pub const VFIO_IOMMU_ENABLE: u32 = 15219;
-pub const DM_DEV_RENAME: u32 = 3241737477;
-pub const MEDIA_IOC_SETUP_LINK: u32 = 3224665091;
-pub const VIDIOC_ENUMOUTPUT: u32 = 3225966128;
-pub const STP_POLICY_ID_SET: u32 = 3222283520;
-pub const VHOST_VDPA_SET_CONFIG_CALL: u32 = 1074048887;
-pub const VIDIOC_SUBDEV_G_CROP: u32 = 3224917563;
-pub const VIDIOC_S_CROP: u32 = 1075074620;
-pub const WDIOC_GETTEMP: u32 = 2147768067;
-pub const IOC_OPAL_ADD_USR_TO_LR: u32 = 1092120804;
-pub const UI_SET_LEDBIT: u32 = 1074025833;
-pub const NBD_SET_SOCK: u32 = 43776;
-pub const BTRFS_IOC_SNAP_DESTROY_V2: u32 = 1342215231;
-pub const HIDIOCGCOLLECTIONINFO: u32 = 3222292497;
-pub const I2OSWUL: u32 = 3224398086;
-pub const IOCTL_MEI_NOTIFY_GET: u32 = 2147764227;
-pub const FDFMTTRK: u32 = 1074528840;
-pub const MMTIMER_GETBITS: u32 = 27908;
-pub const VIDIOC_ENUMSTD: u32 = 3225966105;
-pub const VHOST_GET_VRING_BASE: u32 = 3221794578;
-pub const VFIO_DEVICE_IOEVENTFD: u32 = 15220;
-pub const ATMARP_SETENTRY: u32 = 25059;
-pub const CCISS_REVALIDVOLS: u32 = 16906;
-pub const MGSL_IOCLOOPTXDONE: u32 = 27913;
-pub const RTC_VL_READ: u32 = 2147774483;
-pub const ND_IOCTL_ARS_STATUS: u32 = 3224391171;
-pub const RIO_DEV_DEL: u32 = 1075866904;
-pub const VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES: u32 = 3223606797;
-pub const VIDIOC_SUBDEV_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const SONYPI_IOCSFAN: u32 = 1073837579;
-pub const SPIOCSTYPE: u32 = 1074295041;
-pub const IPMICTL_REGISTER_FOR_CMD: u32 = 2147641614;
-pub const I8K_GET_FAN: u32 = 3221776774;
-pub const TUNGETVNETBE: u32 = 2147767519;
-pub const AUTOFS_DEV_IOCTL_FAIL: u32 = 3222836087;
-pub const UI_END_FF_UPLOAD: u32 = 1080579529;
-pub const TOSH_SMM: u32 = 3222828176;
-pub const SONYPI_IOCGBAT2REM: u32 = 2147644933;
-pub const F2FS_IOC_GET_COMPRESS_BLOCKS: u32 = 2148070673;
-pub const PPPIOCSNPMODE: u32 = 1074295883;
-pub const USBDEVFS_CONTROL: u32 = 3222820096;
-pub const HIDIOCGUSAGE: u32 = 3222816779;
-pub const TUNSETTXFILTER: u32 = 1074025681;
-pub const TUNGETVNETLE: u32 = 2147767517;
-pub const VIDIOC_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const BTRFS_IOC_INO_PATHS: u32 = 3224933411;
-pub const MGSL_IOCGXSYNC: u32 = 27924;
-pub const HIDIOCGFIELDINFO: u32 = 3224913930;
-pub const VIDIOC_SUBDEV_G_STD: u32 = 2148029975;
-pub const I2OVALIDATE: u32 = 2147772680;
-pub const VIDIOC_TRY_ENCODER_CMD: u32 = 3223869006;
-pub const NILFS_IOCTL_GET_CPINFO: u32 = 2149084802;
-pub const VIDIOC_G_FREQUENCY: u32 = 3224131128;
-pub const VFAT_IOCTL_READDIR_SHORT: u32 = 2184212994;
-pub const ND_IOCTL_GET_CONFIG_DATA: u32 = 3222031877;
-pub const F2FS_IOC_RESERVE_COMPRESS_BLOCKS: u32 = 2148070675;
-pub const FDGETDRVSTAT: u32 = 2152727058;
-pub const SYNC_IOC_MERGE: u32 = 3224387075;
-pub const VIDIOC_S_DV_TIMINGS: u32 = 3229898327;
-pub const PPPIOCBRIDGECHAN: u32 = 1074033717;
-pub const LIRC_SET_SEND_MODE: u32 = 1074030865;
-pub const RIO_ENABLE_PORTWRITE_RANGE: u32 = 1074818315;
-pub const ATM_GETTYPE: u32 = 1074815364;
-pub const PHN_GETREGS: u32 = 3223875591;
-pub const FDSETEMSGTRESH: u32 = 586;
-pub const NILFS_IOCTL_GET_VINFO: u32 = 3222826630;
-pub const MGSL_IOCWAITEVENT: u32 = 3221515528;
-pub const CAPI_INSTALLED: u32 = 2147631906;
-pub const EVIOCGMASK: u32 = 2148550034;
-pub const BTRFS_IOC_SUBVOL_GETFLAGS: u32 = 2148045849;
-pub const FSL_HV_IOCTL_PARTITION_GET_STATUS: u32 = 3222056706;
-pub const MEDIA_IOC_ENUM_ENTITIES: u32 = 3238034433;
-pub const GSMIOC_GETFIRST: u32 = 2147763972;
-pub const FW_CDEV_IOC_FLUSH_ISO: u32 = 1074012952;
-pub const VIDIOC_DBG_G_CHIP_INFO: u32 = 3234354790;
-pub const F2FS_IOC_RELEASE_VOLATILE_WRITE: u32 = 62724;
-pub const CAPI_GET_SERIAL: u32 = 3221504776;
-pub const FDSETDRVPRM: u32 = 1082131088;
-pub const IOC_OPAL_SAVE: u32 = 1092120796;
-pub const VIDIOC_G_DV_TIMINGS: u32 = 3229898328;
-pub const TUNSETIFINDEX: u32 = 1074025690;
-pub const CCISS_SETINTINFO: u32 = 1074283011;
-pub const CM_IOSDBGLVL: u32 = 1074291706;
-pub const RTC_VL_CLR: u32 = 28692;
-pub const VIDIOC_REQBUFS: u32 = 3222558216;
-pub const USBDEVFS_REAPURBNDELAY32: u32 = 1074025741;
-pub const TEE_IOC_SHM_REGISTER: u32 = 3222840329;
-pub const USBDEVFS_SETCONFIGURATION: u32 = 2147767557;
-pub const CCISS_GETNODENAME: u32 = 2148549124;
-pub const VIDIOC_SUBDEV_S_FRAME_INTERVAL: u32 = 3224393238;
-pub const VIDIOC_ENUM_FRAMESIZES: u32 = 3224131146;
-pub const VFIO_DEVICE_PCI_HOT_RESET: u32 = 15217;
-pub const FW_CDEV_IOC_SEND_BROADCAST_REQUEST: u32 = 1076372242;
-pub const LPSETTIMEOUT_NEW: u32 = 1074791951;
-pub const RIO_CM_MPORT_GET_LIST: u32 = 3221512971;
-pub const FW_CDEV_IOC_QUEUE_ISO: u32 = 3222807305;
-pub const FDRAWCMD: u32 = 600;
-pub const SCIF_UNREG: u32 = 3222303497;
-pub const PPPIOCGIDLE64: u32 = 2148561983;
-pub const USBDEVFS_RELEASEINTERFACE: u32 = 2147767568;
-pub const VIDIOC_CROPCAP: u32 = 3224131130;
-pub const DFL_FPGA_PORT_GET_INFO: u32 = 46657;
-pub const PHN_SET_REGS: u32 = 1074294787;
-pub const ATMLEC_DATA: u32 = 25041;
-pub const PPPOEIOCDFWD: u32 = 45313;
-pub const VIDIOC_S_SELECTION: u32 = 3225441887;
-pub const SNAPSHOT_FREE_SWAP_PAGES: u32 = 13065;
-pub const BTRFS_IOC_LOGICAL_INO: u32 = 3224933412;
-pub const VIDIOC_S_CTRL: u32 = 3221771804;
-pub const ZATM_SETPOOL: u32 = 1074815331;
-pub const MTIOCPOS: u32 = 2148035843;
-pub const PMU_IOC_SLEEP: u32 = 16896;
-pub const AUTOFS_DEV_IOCTL_PROTOSUBVER: u32 = 3222836083;
-pub const VBG_IOCTL_CHANGE_FILTER_MASK: u32 = 3223344652;
-pub const NILFS_IOCTL_GET_SUSTAT: u32 = 2150657669;
-pub const VIDIOC_QUERYCAP: u32 = 2154321408;
-pub const HPET_INFO: u32 = 2149083139;
-pub const VIDIOC_AM437X_CCDC_CFG: u32 = 1074288321;
-pub const DM_LIST_DEVICES: u32 = 3241737474;
-pub const TUNSETOWNER: u32 = 1074025676;
-pub const VBG_IOCTL_CHANGE_GUEST_CAPABILITIES: u32 = 3223344654;
-pub const RNDADDENTROPY: u32 = 1074287107;
-pub const USBDEVFS_RESET: u32 = 21780;
-pub const BTRFS_IOC_SUBVOL_CREATE: u32 = 1342215182;
-pub const USBDEVFS_FORBID_SUSPEND: u32 = 21793;
-pub const FDGETDRVTYP: u32 = 2148532751;
-pub const PPWCONTROL: u32 = 1073836164;
-pub const VIDIOC_ENUM_FRAMEINTERVALS: u32 = 3224655435;
-pub const KCOV_DISABLE: u32 = 25445;
-pub const IOC_OPAL_ACTIVATE_LSP: u32 = 1092120799;
-pub const VHOST_VDPA_GET_IOVA_RANGE: u32 = 2148577144;
-pub const PPPIOCSPASS: u32 = 1074820167;
-pub const RIO_CM_CHAN_CONNECT: u32 = 1074291464;
-pub const I2OSWDEL: u32 = 3224398087;
-pub const FS_IOC_SET_ENCRYPTION_POLICY: u32 = 2148296211;
-pub const IOC_OPAL_MBR_DONE: u32 = 1091596521;
-pub const PPPIOCSMAXCID: u32 = 1074033745;
-pub const PPSETPHASE: u32 = 1074032788;
-pub const VHOST_VDPA_SET_VRING_ENABLE: u32 = 1074311029;
-pub const USBDEVFS_GET_SPEED: u32 = 21791;
-pub const SONET_GETFRAMING: u32 = 2147770646;
-pub const VIDIOC_QUERYBUF: u32 = 3227014665;
-pub const VIDIOC_S_EDID: u32 = 3223868969;
-pub const BTRFS_IOC_QGROUP_ASSIGN: u32 = 1075352617;
-pub const PPS_GETCAP: u32 = 2148036771;
-pub const SNAPSHOT_PLATFORM_SUPPORT: u32 = 13071;
-pub const LIRC_SET_REC_TIMEOUT_REPORTS: u32 = 1074030873;
-pub const SCIF_GET_NODEIDS: u32 = 3222827790;
-pub const NBD_DISCONNECT: u32 = 43784;
-pub const VIDIOC_SUBDEV_G_FRAME_INTERVAL: u32 = 3224393237;
-pub const VFIO_IOMMU_DISABLE: u32 = 15220;
-pub const SNAPSHOT_CREATE_IMAGE: u32 = 1074017041;
-pub const SNAPSHOT_POWER_OFF: u32 = 13072;
-pub const APM_IOC_STANDBY: u32 = 16641;
-pub const PPPIOCGUNIT: u32 = 2147775574;
-pub const AUTOFS_IOC_EXPIRE_MULTI: u32 = 1074041702;
-pub const SCIF_BIND: u32 = 3221779201;
-pub const IOC_WATCH_QUEUE_SET_SIZE: u32 = 22368;
-pub const NILFS_IOCTL_CHANGE_CPMODE: u32 = 1074818688;
-pub const IOC_OPAL_LOCK_UNLOCK: u32 = 1092120797;
-pub const F2FS_IOC_SET_PIN_FILE: u32 = 1074066701;
-pub const PPPIOCGRASYNCMAP: u32 = 2147775573;
-pub const MMTIMER_MMAPAVAIL: u32 = 27910;
-pub const I2OPASSTHRU32: u32 = 2148034828;
-pub const DFL_FPGA_FME_PORT_RELEASE: u32 = 1074050689;
-pub const VIDIOC_SUBDEV_QUERY_DV_TIMINGS: u32 = 2156156515;
-pub const UI_SET_SNDBIT: u32 = 1074025834;
-pub const VIDIOC_G_AUDOUT: u32 = 2150913585;
-pub const RTC_PLL_SET: u32 = 1075867666;
-pub const VIDIOC_ENUMAUDIO: u32 = 3224655425;
-pub const AUTOFS_DEV_IOCTL_TIMEOUT: u32 = 3222836090;
-pub const VBG_IOCTL_DRIVER_VERSION_INFO: u32 = 3224131072;
-pub const VHOST_SCSI_GET_EVENTS_MISSED: u32 = 1074048836;
-pub const VHOST_SET_VRING_ADDR: u32 = 1076408081;
-pub const VDUSE_CREATE_DEV: u32 = 1095794946;
-pub const FDFLUSH: u32 = 587;
-pub const VBG_IOCTL_WAIT_FOR_EVENTS: u32 = 3223344650;
-pub const DFL_FPGA_FME_ERR_SET_IRQ: u32 = 1074312836;
-pub const F2FS_IOC_GET_PIN_FILE: u32 = 2147808526;
-pub const SCIF_CONNECT: u32 = 3221779203;
-pub const BLKREPORTZONE: u32 = 3222278786;
-pub const AUTOFS_IOC_ASKUMOUNT: u32 = 2147783536;
-pub const ATM_ADDPARTY: u32 = 1074815476;
-pub const FDSETPRM: u32 = 1075839554;
-pub const ATM_GETSTATZ: u32 = 1074815313;
-pub const ISST_IF_MSR_COMMAND: u32 = 3221814788;
-pub const BTRFS_IOC_GET_SUBVOL_INFO: u32 = 2180551740;
-pub const VIDIOC_UNSUBSCRIBE_EVENT: u32 = 1075861083;
-pub const SEV_ISSUE_CMD: u32 = 3222295296;
-pub const GPIOHANDLE_SET_LINE_VALUES_IOCTL: u32 = 3225465865;
-pub const PCITEST_COPY: u32 = 1074286598;
-pub const IPMICTL_GET_MY_ADDRESS_CMD: u32 = 2147772690;
-pub const CHIOGPICKER: u32 = 2147771140;
-pub const CAPI_NCCI_OPENCOUNT: u32 = 2147762982;
-pub const CXL_MEM_SEND_COMMAND: u32 = 3224423938;
-pub const PERF_EVENT_IOC_SET_FILTER: u32 = 1074275334;
-pub const IOC_OPAL_REVERT_TPR: u32 = 1091072226;
-pub const CHIOGVPARAMS: u32 = 2154849043;
-pub const PTP_PEROUT_REQUEST: u32 = 1077427459;
-pub const FSI_SCOM_CHECK: u32 = 2147775232;
-pub const RTC_IRQP_READ: u32 = 2148036619;
-pub const RIO_MPORT_MAINT_READ_LOCAL: u32 = 2149084421;
-pub const HIDIOCGRDESCSIZE: u32 = 2147764225;
-pub const UI_GET_VERSION: u32 = 2147767597;
-pub const NILFS_IOCTL_GET_CPSTAT: u32 = 2149084803;
-pub const CCISS_GETBUSTYPES: u32 = 2147762695;
-pub const VFIO_IOMMU_SPAPR_TCE_CREATE: u32 = 15223;
-pub const VIDIOC_EXPBUF: u32 = 3225441808;
-pub const UI_SET_RELBIT: u32 = 1074025830;
-pub const VFIO_SET_IOMMU: u32 = 15206;
-pub const VIDIOC_S_MODULATOR: u32 = 1078220343;
-pub const TUNGETFILTER: u32 = 2148553947;
-pub const MEYEIOC_SYNC: u32 = 3221518019;
-pub const CCISS_SETNODENAME: u32 = 1074807301;
-pub const FBIO_GETCONTROL2: u32 = 2148025993;
-pub const TUNSETDEBUG: u32 = 1074025673;
-pub const DM_DEV_REMOVE: u32 = 3241737476;
-pub const HIDIOCSUSAGES: u32 = 1344030740;
-pub const FS_IOC_ADD_ENCRYPTION_KEY: u32 = 3226494487;
-pub const FBIOGET_VBLANK: u32 = 2149598738;
-pub const ATM_GETSTAT: u32 = 1074815312;
-pub const VIDIOC_G_JPEGCOMP: u32 = 2156680765;
-pub const TUNATTACHFILTER: u32 = 1074812117;
-pub const UI_SET_ABSBIT: u32 = 1074025831;
-pub const DFL_FPGA_PORT_ERR_GET_IRQ_NUM: u32 = 2147792453;
-pub const USBDEVFS_REAPURB32: u32 = 1074025740;
-pub const BTRFS_IOC_TRANS_END: u32 = 37895;
-pub const CAPI_REGISTER: u32 = 1074545409;
-pub const F2FS_IOC_COMPRESS_FILE: u32 = 62744;
-pub const USBDEVFS_DISCARDURB: u32 = 21771;
-pub const HE_GET_REG: u32 = 1074815328;
-pub const ATM_SETLOOP: u32 = 1074815315;
-pub const ATMSIGD_CTRL: u32 = 25072;
-pub const CIOC_KERNEL_VERSION: u32 = 3221775114;
-pub const BTRFS_IOC_CLONE_RANGE: u32 = 1075876877;
-pub const SNAPSHOT_UNFREEZE: u32 = 13058;
-pub const F2FS_IOC_START_VOLATILE_WRITE: u32 = 62723;
-pub const PMU_IOC_HAS_ADB: u32 = 2148024836;
-pub const I2OGETIOPS: u32 = 2149607680;
-pub const VIDIOC_S_FBUF: u32 = 1076909579;
-pub const PPRCONTROL: u32 = 2147577987;
-pub const CHIOSPICKER: u32 = 1074029317;
-pub const VFIO_IOMMU_SPAPR_REGISTER_MEMORY: u32 = 15221;
-pub const TUNGETSNDBUF: u32 = 2147767507;
-pub const GSMIOC_SETCONF: u32 = 1078740737;
-pub const IOC_PR_PREEMPT: u32 = 1075343563;
-pub const KCOV_INIT_TRACE: u32 = 2148033281;
-pub const SONYPI_IOCGBAT1CAP: u32 = 2147644930;
-pub const SWITCHTEC_IOCTL_FLASH_INFO: u32 = 2148554560;
-pub const MTIOCTOP: u32 = 1074294017;
-pub const VHOST_VDPA_SET_STATUS: u32 = 1073852274;
-pub const VHOST_SCSI_SET_EVENTS_MISSED: u32 = 1074048835;
-pub const VFIO_IOMMU_DIRTY_PAGES: u32 = 15221;
-pub const BTRFS_IOC_SCRUB_PROGRESS: u32 = 3288372253;
-pub const PPPIOCGMRU: u32 = 2147775571;
-pub const BTRFS_IOC_DEV_REPLACE: u32 = 3391657013;
-pub const PPPIOCGFLAGS: u32 = 2147775578;
-pub const NILFS_IOCTL_SET_SUINFO: u32 = 1075342989;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER2: u32 = 3222807316;
-pub const ATM_DELLECSADDR: u32 = 1074815375;
-pub const FW_CDEV_IOC_GET_SPEED: u32 = 8977;
-pub const PPPIOCGIDLE32: u32 = 2148037695;
-pub const VFIO_DEVICE_RESET: u32 = 15215;
-pub const GPIO_GET_LINEINFO_UNWATCH_IOCTL: u32 = 3221533708;
-pub const WDIOC_GETSTATUS: u32 = 2147768065;
-pub const BTRFS_IOC_SET_FEATURES: u32 = 1076925497;
-pub const IOCTL_MEI_CONNECT_CLIENT: u32 = 3222292481;
-pub const VIDIOC_OMAP3ISP_AEWB_CFG: u32 = 3223344835;
-pub const PCITEST_READ: u32 = 1074286597;
-pub const VFIO_GROUP_GET_STATUS: u32 = 15207;
-pub const MATROXFB_GET_ALL_OUTPUTS: u32 = 2148036347;
-pub const USBDEVFS_CLEAR_HALT: u32 = 2147767573;
-pub const VIDIOC_DECODER_CMD: u32 = 3225966176;
-pub const VIDIOC_G_AUDIO: u32 = 2150913569;
-pub const CCISS_RESCANDISK: u32 = 16912;
-pub const RIO_DISABLE_PORTWRITE_RANGE: u32 = 1074818316;
-pub const IOC_OPAL_SECURE_ERASE_LR: u32 = 1091596519;
-pub const USBDEVFS_REAPURB: u32 = 1074287884;
-pub const DFL_FPGA_CHECK_EXTENSION: u32 = 46593;
-pub const AUTOFS_IOC_PROTOVER: u32 = 2147783523;
-pub const FSL_HV_IOCTL_MEMCPY: u32 = 3223891717;
-pub const BTRFS_IOC_GET_FEATURES: u32 = 2149094457;
-pub const PCITEST_MSIX: u32 = 1074024455;
-pub const BTRFS_IOC_DEFRAG_RANGE: u32 = 1076925456;
-pub const UI_BEGIN_FF_ERASE: u32 = 3222033866;
-pub const DM_GET_TARGET_VERSION: u32 = 3241737489;
-pub const PPPIOCGIDLE: u32 = 2148561983;
-pub const NVRAM_SETCKS: u32 = 28737;
-pub const WDIOC_GETSUPPORT: u32 = 2150127360;
-pub const GSMIOC_ENABLE_NET: u32 = 1077167874;
-pub const GPIO_GET_CHIPINFO_IOCTL: u32 = 2151986177;
-pub const NE_ADD_VCPU: u32 = 3221532193;
-pub const EVIOCSKEYCODE_V2: u32 = 1076380932;
-pub const PTP_SYS_OFFSET_EXTENDED2: u32 = 3300932882;
-pub const SCIF_FENCE_WAIT: u32 = 3221517072;
-pub const RIO_TRANSFER: u32 = 3222826261;
-pub const FSL_HV_IOCTL_DOORBELL: u32 = 3221794566;
-pub const RIO_MPORT_MAINT_WRITE_LOCAL: u32 = 1075342598;
-pub const I2OEVTREG: u32 = 1074555146;
-pub const I2OPARMGET: u32 = 3223873796;
-pub const EVIOCGID: u32 = 2148025602;
-pub const BTRFS_IOC_QGROUP_CREATE: u32 = 1074828330;
-pub const AUTOFS_DEV_IOCTL_SETPIPEFD: u32 = 3222836088;
-pub const VIDIOC_S_PARM: u32 = 3234616854;
-pub const TUNSETSTEERINGEBPF: u32 = 2147767520;
-pub const ATM_GETNAMES: u32 = 1074815363;
-pub const VIDIOC_QUERYMENU: u32 = 3224131109;
-pub const DFL_FPGA_PORT_DMA_UNMAP: u32 = 46660;
-pub const I2OLCTGET: u32 = 3222825218;
-pub const FS_IOC_GET_ENCRYPTION_PWSALT: u32 = 1074816532;
-pub const NS_SETBUFLEV: u32 = 1074815330;
-pub const BLKCLOSEZONE: u32 = 1074795143;
-pub const SONET_GETFRSENSE: u32 = 2147901719;
-pub const UI_SET_EVBIT: u32 = 1074025828;
-pub const DM_LIST_VERSIONS: u32 = 3241737485;
-pub const HIDIOCGSTRING: u32 = 2164541444;
-pub const PPPIOCATTCHAN: u32 = 1074033720;
-pub const VDUSE_DEV_SET_CONFIG: u32 = 1074299154;
-pub const TUNGETFEATURES: u32 = 2147767503;
-pub const VFIO_GROUP_UNSET_CONTAINER: u32 = 15209;
-pub const IPMICTL_SET_MY_ADDRESS_CMD: u32 = 2147772689;
-pub const CCISS_REGNEWDISK: u32 = 1074020877;
-pub const VIDIOC_QUERY_DV_TIMINGS: u32 = 2156156515;
-pub const PHN_SETREGS: u32 = 1076391944;
-pub const FAT_IOCTL_GET_ATTRIBUTES: u32 = 2147774992;
-pub const FSL_MC_SEND_MC_COMMAND: u32 = 3225440992;
-pub const TUNGETIFF: u32 = 2147767506;
-pub const PTP_CLOCK_GETCAPS2: u32 = 2152742154;
-pub const BTRFS_IOC_RESIZE: u32 = 1342215171;
-pub const VHOST_SET_VRING_ENDIAN: u32 = 1074310931;
-pub const PPS_KC_BIND: u32 = 1074294949;
-pub const F2FS_IOC_WRITE_CHECKPOINT: u32 = 62727;
-pub const UI_SET_FFBIT: u32 = 1074025835;
-pub const IPMICTL_GET_MY_LUN_CMD: u32 = 2147772692;
-pub const CEC_ADAP_G_PHYS_ADDR: u32 = 2147639553;
-pub const CEC_G_MODE: u32 = 2147770632;
-pub const USBDEVFS_RESETEP: u32 = 2147767555;
-pub const MEDIA_REQUEST_IOC_QUEUE: u32 = 31872;
-pub const USBDEVFS_ALLOC_STREAMS: u32 = 2148029724;
-pub const MGSL_IOCSXCTRL: u32 = 27925;
-pub const MEDIA_IOC_G_TOPOLOGY: u32 = 3225975812;
-pub const PPPIOCUNBRIDGECHAN: u32 = 29748;
-pub const F2FS_IOC_COMMIT_ATOMIC_WRITE: u32 = 62722;
-pub const ISST_IF_GET_PLATFORM_INFO: u32 = 2148072960;
-pub const SCIF_FENCE_MARK: u32 = 3222303503;
-pub const USBDEVFS_RELEASE_PORT: u32 = 2147767577;
-pub const VFIO_CHECK_EXTENSION: u32 = 15205;
-pub const BTRFS_IOC_QGROUP_LIMIT: u32 = 2150667307;
-pub const FAT_IOCTL_GET_VOLUME_ID: u32 = 2147774995;
-pub const UI_SET_PHYS: u32 = 1074287980;
-pub const FDWERRORGET: u32 = 2150105623;
-pub const VIDIOC_SUBDEV_G_EDID: u32 = 3223868968;
-pub const MGSL_IOCGSTATS: u32 = 27911;
-pub const RPROC_SET_SHUTDOWN_ON_RELEASE: u32 = 1074050817;
-pub const SIOCGSTAMP_NEW: u32 = 2148567302;
-pub const RTC_WKALM_RD: u32 = 2150133776;
-pub const PHN_GET_REG: u32 = 3221778432;
-pub const DELL_WMI_SMBIOS_CMD: u32 = 3224655616;
-pub const PHN_NOT_OH: u32 = 28676;
-pub const PPGETMODES: u32 = 2147774615;
-pub const CHIOGPARAMS: u32 = 2148819718;
-pub const VFIO_DEVICE_GET_GFX_DMABUF: u32 = 15219;
-pub const VHOST_SET_VRING_BUSYLOOP_TIMEOUT: u32 = 1074310947;
-pub const VIDIOC_SUBDEV_G_SELECTION: u32 = 3225441853;
-pub const BTRFS_IOC_RM_DEV_V2: u32 = 1342215226;
-pub const MGSL_IOCWAITGPIO: u32 = 3222301970;
-pub const PMU_IOC_CAN_SLEEP: u32 = 2148024837;
-pub const KCOV_ENABLE: u32 = 25444;
-pub const BTRFS_IOC_CLONE: u32 = 1074041865;
-pub const F2FS_IOC_DEFRAGMENT: u32 = 3222336776;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE: u32 = 1074012942;
-pub const AGPIOC_ALLOCATE: u32 = 3221766406;
-pub const NE_SET_USER_MEMORY_REGION: u32 = 1075359267;
-pub const MGSL_IOCTXABORT: u32 = 27910;
-pub const MGSL_IOCSGPIO: u32 = 1074818320;
-pub const LIRC_SET_REC_CARRIER: u32 = 1074030868;
-pub const F2FS_IOC_FLUSH_DEVICE: u32 = 1074328842;
-pub const SNAPSHOT_ATOMIC_RESTORE: u32 = 13060;
-pub const RTC_UIE_OFF: u32 = 28676;
-pub const BT_BMC_IOCTL_SMS_ATN: u32 = 45312;
-pub const NVME_IOCTL_ID: u32 = 20032;
-pub const NE_START_ENCLAVE: u32 = 3222318628;
-pub const VIDIOC_STREAMON: u32 = 1074026002;
-pub const FDPOLLDRVSTAT: u32 = 2152727059;
-pub const AUTOFS_DEV_IOCTL_READY: u32 = 3222836086;
-pub const VIDIOC_ENUMAUDOUT: u32 = 3224655426;
-pub const VIDIOC_SUBDEV_S_STD: u32 = 1074288152;
-pub const WDIOC_GETTIMELEFT: u32 = 2147768074;
-pub const ATM_GETLINKRATE: u32 = 1074815361;
-pub const RTC_WKALM_SET: u32 = 1076391951;
-pub const VHOST_GET_BACKEND_FEATURES: u32 = 2148052774;
-pub const ATMARP_ENCAP: u32 = 25061;
-pub const CAPI_GET_FLAGS: u32 = 2147762979;
-pub const IPMICTL_SET_MY_CHANNEL_ADDRESS_CMD: u32 = 2147772696;
-pub const DFL_FPGA_FME_PORT_ASSIGN: u32 = 1074050690;
-pub const NS_GET_OWNER_UID: u32 = 46852;
-pub const VIDIOC_OVERLAY: u32 = 1074025998;
-pub const BTRFS_IOC_WAIT_SYNC: u32 = 1074304022;
-pub const GPIOHANDLE_SET_CONFIG_IOCTL: u32 = 3226776586;
-pub const VHOST_GET_VRING_ENDIAN: u32 = 1074310932;
-pub const ATM_GETADDR: u32 = 1074815366;
-pub const PHN_GET_REGS: u32 = 3221778434;
-pub const AUTOFS_DEV_IOCTL_REQUESTER: u32 = 3222836091;
-pub const AUTOFS_DEV_IOCTL_EXPIRE: u32 = 3222836092;
-pub const SNAPSHOT_S2RAM: u32 = 13067;
-pub const JSIOCSAXMAP: u32 = 1077963313;
-pub const F2FS_IOC_SET_COMPRESS_OPTION: u32 = 1073935638;
-pub const VBG_IOCTL_HGCM_DISCONNECT: u32 = 3223082501;
-pub const SCIF_FENCE_SIGNAL: u32 = 3223876369;
-pub const VFIO_DEVICE_GET_PCI_HOT_RESET_INFO: u32 = 15216;
-pub const VIDIOC_SUBDEV_ENUM_MBUS_CODE: u32 = 3224393218;
-pub const MMTIMER_GETOFFSET: u32 = 27904;
-pub const RIO_CM_CHAN_LISTEN: u32 = 1073898246;
-pub const ATM_SETSC: u32 = 1074029041;
-pub const F2FS_IOC_SHUTDOWN: u32 = 2147768445;
-pub const NVME_IOCTL_RESCAN: u32 = 20038;
-pub const BLKOPENZONE: u32 = 1074795142;
-pub const DM_VERSION: u32 = 3241737472;
-pub const CEC_TRANSMIT: u32 = 3224920325;
-pub const FS_IOC_GET_ENCRYPTION_POLICY_EX: u32 = 3221841430;
-pub const SIOCMKCLIP: u32 = 25056;
-pub const IPMI_BMC_IOCTL_CLEAR_SMS_ATN: u32 = 45313;
-pub const HIDIOCGVERSION: u32 = 2147764225;
-pub const VIDIOC_S_INPUT: u32 = 3221509671;
-pub const VIDIOC_G_CROP: u32 = 3222558267;
-pub const LIRC_SET_WIDEBAND_RECEIVER: u32 = 1074030883;
-pub const EVIOCGEFFECTS: u32 = 2147763588;
-pub const UVCIOC_CTRL_QUERY: u32 = 3222304033;
-pub const IOC_OPAL_GENERIC_TABLE_RW: u32 = 1094217963;
-pub const FS_IOC_READ_VERITY_METADATA: u32 = 3223873159;
-pub const ND_IOCTL_SET_CONFIG_DATA: u32 = 3221769734;
-pub const USBDEVFS_GETDRIVER: u32 = 1090802952;
-pub const IDT77105_GETSTAT: u32 = 1074815282;
-pub const HIDIOCINITREPORT: u32 = 18437;
-pub const VFIO_DEVICE_GET_INFO: u32 = 15211;
-pub const RIO_CM_CHAN_RECEIVE: u32 = 3222299402;
-pub const RNDGETENTCNT: u32 = 2147766784;
-pub const PPPIOCNEWUNIT: u32 = 3221517374;
-pub const BTRFS_IOC_INO_LOOKUP: u32 = 3489698834;
-pub const FDRESET: u32 = 596;
-pub const IOC_PR_REGISTER: u32 = 1075343560;
-pub const HIDIOCSREPORT: u32 = 1074546696;
-pub const TEE_IOC_OPEN_SESSION: u32 = 2148574210;
-pub const TEE_IOC_SUPPL_RECV: u32 = 2148574214;
-pub const BTRFS_IOC_BALANCE_CTL: u32 = 1074041889;
-pub const GPIO_GET_LINEINFO_WATCH_IOCTL: u32 = 3225990155;
-pub const HIDIOCGRAWINFO: u32 = 2148026371;
-pub const PPPIOCSCOMPRESS: u32 = 1074820173;
-pub const USBDEVFS_CONNECTINFO: u32 = 1074287889;
-pub const BLKRESETZONE: u32 = 1074795139;
-pub const CHIOINITELEM: u32 = 25361;
-pub const NILFS_IOCTL_SET_ALLOC_RANGE: u32 = 1074818700;
-pub const AUTOFS_DEV_IOCTL_CATATONIC: u32 = 3222836089;
-pub const RIO_MPORT_MAINT_HDID_SET: u32 = 1073900801;
-pub const PPGETPHASE: u32 = 2147774617;
-pub const USBDEVFS_DISCONNECT_CLAIM: u32 = 2164806939;
-pub const FDMSGON: u32 = 581;
-pub const VIDIOC_G_SLICED_VBI_CAP: u32 = 3228849733;
-pub const BTRFS_IOC_BALANCE_V2: u32 = 3288372256;
-pub const MEDIA_REQUEST_IOC_REINIT: u32 = 31873;
-pub const IOC_OPAL_ERASE_LR: u32 = 1091596518;
-pub const FDFMTBEG: u32 = 583;
-pub const RNDRESEEDCRNG: u32 = 20999;
-pub const ISST_IF_GET_PHY_ID: u32 = 3221814785;
-pub const TUNSETNOCSUM: u32 = 1074025672;
-pub const SONET_GETSTAT: u32 = 2149867792;
-pub const TFD_IOC_SET_TICKS: u32 = 1074287616;
-pub const PPDATADIR: u32 = 1074032784;
-pub const IOC_OPAL_ENABLE_DISABLE_MBR: u32 = 1091596517;
-pub const GPIO_V2_GET_LINE_IOCTL: u32 = 3260068871;
-pub const RIO_CM_CHAN_SEND: u32 = 1074815753;
-pub const PPWCTLONIRQ: u32 = 1073836178;
-pub const SONYPI_IOCGBRT: u32 = 2147579392;
-pub const IOC_PR_RELEASE: u32 = 1074819274;
-pub const PPCLRIRQ: u32 = 2147774611;
-pub const IPMICTL_SET_MY_CHANNEL_LUN_CMD: u32 = 2147772698;
-pub const MGSL_IOCSXSYNC: u32 = 27923;
-pub const HPET_IE_OFF: u32 = 26626;
-pub const IOC_OPAL_ACTIVATE_USR: u32 = 1091596513;
-pub const SONET_SETFRAMING: u32 = 1074028821;
-pub const PERF_EVENT_IOC_PAUSE_OUTPUT: u32 = 1074013193;
-pub const BTRFS_IOC_LOGICAL_INO_V2: u32 = 3224933435;
-pub const VBG_IOCTL_HGCM_CONNECT: u32 = 3231471108;
-pub const BLKFINISHZONE: u32 = 1074795144;
-pub const EVIOCREVOKE: u32 = 1074021777;
-pub const VFIO_DEVICE_FEATURE: u32 = 15221;
-pub const CCISS_GETPCIINFO: u32 = 2148024833;
-pub const ISST_IF_MBOX_COMMAND: u32 = 3221814787;
-pub const SCIF_ACCEPTREQ: u32 = 3222303492;
-pub const PERF_EVENT_IOC_QUERY_BPF: u32 = 3221758986;
-pub const VIDIOC_STREAMOFF: u32 = 1074026003;
-pub const VDUSE_DESTROY_DEV: u32 = 1090552067;
-pub const FDGETFDCSTAT: u32 = 2150105621;
-pub const CM_IOCGATR: u32 = 3221775105;
-pub const VIDIOC_S_PRIORITY: u32 = 1074026052;
-pub const SNAPSHOT_FREEZE: u32 = 13057;
-pub const VIDIOC_ENUMINPUT: u32 = 3226490394;
-pub const ZATM_GETPOOLZ: u32 = 1074815330;
-pub const RIO_DISABLE_DOORBELL_RANGE: u32 = 1074294026;
-pub const GPIO_V2_GET_LINEINFO_WATCH_IOCTL: u32 = 3238048774;
-pub const VIDIOC_G_STD: u32 = 2148029975;
-pub const USBDEVFS_ALLOW_SUSPEND: u32 = 21794;
-pub const SONET_GETSTATZ: u32 = 2149867793;
-pub const SCIF_ACCEPTREG: u32 = 3221779205;
-pub const VIDIOC_ENCODER_CMD: u32 = 3223869005;
-pub const PPPIOCSRASYNCMAP: u32 = 1074033748;
-pub const IOCTL_MEI_NOTIFY_SET: u32 = 1074022402;
-pub const BTRFS_IOC_QUOTA_RESCAN_STATUS: u32 = 2151715885;
-pub const F2FS_IOC_GARBAGE_COLLECT: u32 = 1074066694;
-pub const ATMLEC_CTRL: u32 = 25040;
-pub const MATROXFB_GET_AVAILABLE_OUTPUTS: u32 = 2148036345;
-pub const DM_DEV_CREATE: u32 = 3241737475;
-pub const VHOST_VDPA_GET_VRING_NUM: u32 = 2147659638;
-pub const VIDIOC_G_CTRL: u32 = 3221771803;
-pub const NBD_CLEAR_SOCK: u32 = 43780;
-pub const VFIO_DEVICE_QUERY_GFX_PLANE: u32 = 15218;
-pub const WDIOC_KEEPALIVE: u32 = 2147768069;
-pub const NVME_IOCTL_SUBSYS_RESET: u32 = 20037;
-pub const PTP_EXTTS_REQUEST2: u32 = 1074806027;
-pub const PCITEST_BAR: u32 = 20481;
-pub const MGSL_IOCGGPIO: u32 = 2148560145;
-pub const EVIOCSREP: u32 = 1074283779;
-pub const VFIO_DEVICE_GET_IRQ_INFO: u32 = 15213;
-pub const HPET_DPI: u32 = 26629;
-pub const VDUSE_VQ_SETUP_KICKFD: u32 = 1074299158;
-pub const ND_IOCTL_CALL: u32 = 3225439754;
-pub const HIDIOCGDEVINFO: u32 = 2149337091;
-pub const DM_TABLE_DEPS: u32 = 3241737483;
-pub const BTRFS_IOC_DEV_INFO: u32 = 3489698846;
-pub const VDUSE_IOTLB_GET_FD: u32 = 3223355664;
-pub const FW_CDEV_IOC_GET_INFO: u32 = 3223855872;
-pub const VIDIOC_G_PRIORITY: u32 = 2147767875;
-pub const ATM_NEWBACKENDIF: u32 = 1073897971;
-pub const VIDIOC_S_EXT_CTRLS: u32 = 3223344712;
-pub const VIDIOC_SUBDEV_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const VIDIOC_OMAP3ISP_CCDC_CFG: u32 = 3224917697;
-pub const VIDIOC_S_HW_FREQ_SEEK: u32 = 1076909650;
-pub const DM_TABLE_LOAD: u32 = 3241737481;
-pub const F2FS_IOC_START_ATOMIC_WRITE: u32 = 62721;
-pub const VIDIOC_G_OUTPUT: u32 = 2147767854;
-pub const ATM_DROPPARTY: u32 = 1074029045;
-pub const CHIOGELEM: u32 = 1080845072;
-pub const BTRFS_IOC_GET_SUPPORTED_FEATURES: u32 = 2152240185;
-pub const EVIOCSKEYCODE: u32 = 1074283780;
-pub const NE_GET_IMAGE_LOAD_INFO: u32 = 3222318626;
-pub const TUNSETLINK: u32 = 1074025677;
-pub const FW_CDEV_IOC_ADD_DESCRIPTOR: u32 = 3222807302;
-pub const BTRFS_IOC_SCRUB_CANCEL: u32 = 37916;
-pub const PPS_SETPARAMS: u32 = 1074294946;
-pub const IOC_OPAL_LR_SETUP: u32 = 1093169379;
-pub const FW_CDEV_IOC_DEALLOCATE: u32 = 1074012931;
-pub const WDIOC_SETTIMEOUT: u32 = 3221509894;
-pub const IOC_WATCH_QUEUE_SET_FILTER: u32 = 22369;
-pub const CAPI_GET_MANUFACTURER: u32 = 3221504774;
-pub const VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY: u32 = 15222;
-pub const ASPEED_P2A_CTRL_IOCTL_SET_WINDOW: u32 = 1074836224;
-pub const VIDIOC_G_EDID: u32 = 3223868968;
-pub const F2FS_IOC_GARBAGE_COLLECT_RANGE: u32 = 1075377419;
-pub const RIO_MAP_INBOUND: u32 = 3223874833;
-pub const IOC_OPAL_TAKE_OWNERSHIP: u32 = 1091072222;
-pub const USBDEVFS_CLAIM_PORT: u32 = 2147767576;
-pub const VIDIOC_S_AUDIO: u32 = 1077171746;
-pub const FS_IOC_GET_ENCRYPTION_NONCE: u32 = 2148558363;
-pub const FW_CDEV_IOC_SEND_STREAM_PACKET: u32 = 1076372243;
-pub const BTRFS_IOC_SNAP_DESTROY: u32 = 1342215183;
-pub const SNAPSHOT_FREE: u32 = 13061;
-pub const I8K_GET_SPEED: u32 = 3221776773;
-pub const HIDIOCGREPORT: u32 = 1074546695;
-pub const HPET_EPI: u32 = 26628;
-pub const JSIOCSCORR: u32 = 1076128289;
-pub const IOC_PR_PREEMPT_ABORT: u32 = 1075343564;
-pub const RIO_MAP_OUTBOUND: u32 = 3223874831;
-pub const ATM_SETESI: u32 = 1074815372;
-pub const FW_CDEV_IOC_START_ISO: u32 = 1074799370;
-pub const ATM_DELADDR: u32 = 1074815369;
-pub const PPFCONTROL: u32 = 1073901710;
-pub const SONYPI_IOCGFAN: u32 = 2147579402;
-pub const RTC_IRQP_SET: u32 = 1074294796;
-pub const PCITEST_WRITE: u32 = 1074286596;
-pub const PPCLAIM: u32 = 28811;
-pub const VIDIOC_S_JPEGCOMP: u32 = 1082938942;
-pub const IPMICTL_UNREGISTER_FOR_CMD: u32 = 2147641615;
-pub const VHOST_SET_FEATURES: u32 = 1074310912;
-pub const TOSHIBA_ACPI_SCI: u32 = 3222828177;
-pub const VIDIOC_DQBUF: u32 = 3227014673;
-pub const BTRFS_IOC_BALANCE_PROGRESS: u32 = 2214630434;
-pub const BTRFS_IOC_SUBVOL_SETFLAGS: u32 = 1074304026;
-pub const ATMLEC_MCAST: u32 = 25042;
-pub const MMTIMER_GETFREQ: u32 = 2148035842;
-pub const VIDIOC_G_SELECTION: u32 = 3225441886;
-pub const RTC_ALM_SET: u32 = 1076129799;
-pub const PPPOEIOCSFWD: u32 = 1074311424;
-pub const IPMICTL_GET_MAINTENANCE_MODE_CMD: u32 = 2147772702;
-pub const FS_IOC_ENABLE_VERITY: u32 = 1082156677;
-pub const NILFS_IOCTL_GET_BDESCS: u32 = 3222826631;
-pub const FDFMTEND: u32 = 585;
-pub const DMA_BUF_SET_NAME: u32 = 1074291201;
-pub const UI_BEGIN_FF_UPLOAD: u32 = 3228063176;
-pub const RTC_UIE_ON: u32 = 28675;
-pub const PPRELEASE: u32 = 28812;
-pub const VFIO_IOMMU_UNMAP_DMA: u32 = 15218;
-pub const VIDIOC_OMAP3ISP_PRV_CFG: u32 = 3228587714;
-pub const GPIO_GET_LINEHANDLE_IOCTL: u32 = 3245126659;
-pub const VFAT_IOCTL_READDIR_BOTH: u32 = 2184212993;
-pub const NVME_IOCTL_ADMIN_CMD: u32 = 3225964097;
-pub const VHOST_SET_VRING_KICK: u32 = 1074310944;
-pub const BTRFS_IOC_SUBVOL_CREATE_V2: u32 = 1342215192;
-pub const BTRFS_IOC_SNAP_CREATE: u32 = 1342215169;
-pub const SONYPI_IOCGBAT2CAP: u32 = 2147644932;
-pub const PPNEGOT: u32 = 1074032785;
-pub const NBD_PRINT_DEBUG: u32 = 43782;
-pub const BTRFS_IOC_INO_LOOKUP_USER: u32 = 3489698878;
-pub const BTRFS_IOC_GET_SUBVOL_ROOTREF: u32 = 3489698877;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS: u32 = 3225445913;
-pub const BTRFS_IOC_FS_INFO: u32 = 2214630431;
-pub const VIDIOC_ENUM_FMT: u32 = 3225441794;
-pub const VIDIOC_G_INPUT: u32 = 2147767846;
-pub const VTPM_PROXY_IOC_NEW_DEV: u32 = 3222577408;
-pub const DFL_FPGA_FME_ERR_GET_IRQ_NUM: u32 = 2147792515;
-pub const ND_IOCTL_DIMM_FLAGS: u32 = 3221769731;
-pub const BTRFS_IOC_QUOTA_RESCAN: u32 = 1077974060;
-pub const MMTIMER_GETCOUNTER: u32 = 2148035849;
-pub const MATROXFB_GET_OUTPUT_MODE: u32 = 3221778170;
-pub const BTRFS_IOC_QUOTA_RESCAN_WAIT: u32 = 37934;
-pub const RIO_CM_CHAN_BIND: u32 = 1074291461;
-pub const HIDIOCGRDESC: u32 = 2416199682;
-pub const MGSL_IOCGIF: u32 = 27915;
-pub const VIDIOC_S_OUTPUT: u32 = 3221509679;
-pub const HIDIOCGREPORTINFO: u32 = 3222030345;
-pub const WDIOC_GETBOOTSTATUS: u32 = 2147768066;
-pub const VDUSE_VQ_GET_INFO: u32 = 3224404245;
-pub const ACRN_IOCTL_ASSIGN_PCIDEV: u32 = 1076142677;
-pub const BLKGETDISKSEQ: u32 = 2148012672;
-pub const ACRN_IOCTL_PM_GET_CPU_STATE: u32 = 3221791328;
-pub const ACRN_IOCTL_DESTROY_VM: u32 = 41489;
-pub const ACRN_IOCTL_SET_PTDEV_INTR: u32 = 1075094099;
-pub const ACRN_IOCTL_CREATE_IOREQ_CLIENT: u32 = 41522;
-pub const ACRN_IOCTL_IRQFD: u32 = 1075356273;
-pub const ACRN_IOCTL_CREATE_VM: u32 = 3224412688;
-pub const ACRN_IOCTL_INJECT_MSI: u32 = 1074831907;
-pub const ACRN_IOCTL_ATTACH_IOREQ_CLIENT: u32 = 41523;
-pub const ACRN_IOCTL_RESET_PTDEV_INTR: u32 = 1075094100;
-pub const ACRN_IOCTL_NOTIFY_REQUEST_FINISH: u32 = 1074307633;
-pub const ACRN_IOCTL_SET_IRQLINE: u32 = 1074307621;
-pub const ACRN_IOCTL_START_VM: u32 = 41490;
-pub const ACRN_IOCTL_SET_VCPU_REGS: u32 = 1093181974;
-pub const ACRN_IOCTL_SET_MEMSEG: u32 = 1075880513;
-pub const ACRN_IOCTL_PAUSE_VM: u32 = 41491;
-pub const ACRN_IOCTL_CLEAR_VM_IOREQ: u32 = 41525;
-pub const ACRN_IOCTL_UNSET_MEMSEG: u32 = 1075880514;
-pub const ACRN_IOCTL_IOEVENTFD: u32 = 1075880560;
-pub const ACRN_IOCTL_DEASSIGN_PCIDEV: u32 = 1076142678;
-pub const ACRN_IOCTL_RESET_VM: u32 = 41493;
-pub const ACRN_IOCTL_DESTROY_IOREQ_CLIENT: u32 = 41524;
-pub const ACRN_IOCTL_VM_INTR_MONITOR: u32 = 1074307620;
diff --git a/vendor/linux-raw-sys-0.3.2/src/s390x/netlink.rs b/vendor/linux-raw-sys-0.3.2/src/s390x/netlink.rs
deleted file mode 100644
index 00957dd81..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/s390x/netlink.rs
+++ /dev/null
@@ -1,2869 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const __BITS_PER_LONG: u32 = 64;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const NETLINK_ROUTE: u32 = 0;
-pub const NETLINK_UNUSED: u32 = 1;
-pub const NETLINK_USERSOCK: u32 = 2;
-pub const NETLINK_FIREWALL: u32 = 3;
-pub const NETLINK_SOCK_DIAG: u32 = 4;
-pub const NETLINK_NFLOG: u32 = 5;
-pub const NETLINK_XFRM: u32 = 6;
-pub const NETLINK_SELINUX: u32 = 7;
-pub const NETLINK_ISCSI: u32 = 8;
-pub const NETLINK_AUDIT: u32 = 9;
-pub const NETLINK_FIB_LOOKUP: u32 = 10;
-pub const NETLINK_CONNECTOR: u32 = 11;
-pub const NETLINK_NETFILTER: u32 = 12;
-pub const NETLINK_IP6_FW: u32 = 13;
-pub const NETLINK_DNRTMSG: u32 = 14;
-pub const NETLINK_KOBJECT_UEVENT: u32 = 15;
-pub const NETLINK_GENERIC: u32 = 16;
-pub const NETLINK_SCSITRANSPORT: u32 = 18;
-pub const NETLINK_ECRYPTFS: u32 = 19;
-pub const NETLINK_RDMA: u32 = 20;
-pub const NETLINK_CRYPTO: u32 = 21;
-pub const NETLINK_SMC: u32 = 22;
-pub const NETLINK_INET_DIAG: u32 = 4;
-pub const MAX_LINKS: u32 = 32;
-pub const NLM_F_REQUEST: u32 = 1;
-pub const NLM_F_MULTI: u32 = 2;
-pub const NLM_F_ACK: u32 = 4;
-pub const NLM_F_ECHO: u32 = 8;
-pub const NLM_F_DUMP_INTR: u32 = 16;
-pub const NLM_F_DUMP_FILTERED: u32 = 32;
-pub const NLM_F_ROOT: u32 = 256;
-pub const NLM_F_MATCH: u32 = 512;
-pub const NLM_F_ATOMIC: u32 = 1024;
-pub const NLM_F_DUMP: u32 = 768;
-pub const NLM_F_REPLACE: u32 = 256;
-pub const NLM_F_EXCL: u32 = 512;
-pub const NLM_F_CREATE: u32 = 1024;
-pub const NLM_F_APPEND: u32 = 2048;
-pub const NLM_F_NONREC: u32 = 256;
-pub const NLM_F_BULK: u32 = 512;
-pub const NLM_F_CAPPED: u32 = 256;
-pub const NLM_F_ACK_TLVS: u32 = 512;
-pub const NLMSG_ALIGNTO: u32 = 4;
-pub const NLMSG_NOOP: u32 = 1;
-pub const NLMSG_ERROR: u32 = 2;
-pub const NLMSG_DONE: u32 = 3;
-pub const NLMSG_OVERRUN: u32 = 4;
-pub const NLMSG_MIN_TYPE: u32 = 16;
-pub const NETLINK_ADD_MEMBERSHIP: u32 = 1;
-pub const NETLINK_DROP_MEMBERSHIP: u32 = 2;
-pub const NETLINK_PKTINFO: u32 = 3;
-pub const NETLINK_BROADCAST_ERROR: u32 = 4;
-pub const NETLINK_NO_ENOBUFS: u32 = 5;
-pub const NETLINK_RX_RING: u32 = 6;
-pub const NETLINK_TX_RING: u32 = 7;
-pub const NETLINK_LISTEN_ALL_NSID: u32 = 8;
-pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9;
-pub const NETLINK_CAP_ACK: u32 = 10;
-pub const NETLINK_EXT_ACK: u32 = 11;
-pub const NETLINK_GET_STRICT_CHK: u32 = 12;
-pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4;
-pub const NET_MAJOR: u32 = 36;
-pub const NLA_F_NESTED: u32 = 32768;
-pub const NLA_F_NET_BYTEORDER: u32 = 16384;
-pub const NLA_TYPE_MASK: i32 = -49153;
-pub const NLA_ALIGNTO: u32 = 4;
-pub const MACVLAN_FLAG_NOPROMISC: u32 = 1;
-pub const MACVLAN_FLAG_NODST: u32 = 2;
-pub const IPVLAN_F_PRIVATE: u32 = 1;
-pub const IPVLAN_F_VEPA: u32 = 2;
-pub const TUNNEL_MSG_FLAG_STATS: u32 = 1;
-pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1;
-pub const MAX_VLAN_LIST_LEN: u32 = 1;
-pub const PORT_PROFILE_MAX: u32 = 40;
-pub const PORT_UUID_MAX: u32 = 16;
-pub const PORT_SELF_VF: i32 = -1;
-pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1;
-pub const XDP_FLAGS_SKB_MODE: u32 = 2;
-pub const XDP_FLAGS_DRV_MODE: u32 = 4;
-pub const XDP_FLAGS_HW_MODE: u32 = 8;
-pub const XDP_FLAGS_REPLACE: u32 = 16;
-pub const XDP_FLAGS_MODES: u32 = 14;
-pub const XDP_FLAGS_MASK: u32 = 31;
-pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1;
-pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32;
-pub const IFA_F_SECONDARY: u32 = 1;
-pub const IFA_F_TEMPORARY: u32 = 1;
-pub const IFA_F_NODAD: u32 = 2;
-pub const IFA_F_OPTIMISTIC: u32 = 4;
-pub const IFA_F_DADFAILED: u32 = 8;
-pub const IFA_F_HOMEADDRESS: u32 = 16;
-pub const IFA_F_DEPRECATED: u32 = 32;
-pub const IFA_F_TENTATIVE: u32 = 64;
-pub const IFA_F_PERMANENT: u32 = 128;
-pub const IFA_F_MANAGETEMPADDR: u32 = 256;
-pub const IFA_F_NOPREFIXROUTE: u32 = 512;
-pub const IFA_F_MCAUTOJOIN: u32 = 1024;
-pub const IFA_F_STABLE_PRIVACY: u32 = 2048;
-pub const IFAPROT_UNSPEC: u32 = 0;
-pub const IFAPROT_KERNEL_LO: u32 = 1;
-pub const IFAPROT_KERNEL_RA: u32 = 2;
-pub const IFAPROT_KERNEL_LL: u32 = 3;
-pub const NTF_USE: u32 = 1;
-pub const NTF_SELF: u32 = 2;
-pub const NTF_MASTER: u32 = 4;
-pub const NTF_PROXY: u32 = 8;
-pub const NTF_EXT_LEARNED: u32 = 16;
-pub const NTF_OFFLOADED: u32 = 32;
-pub const NTF_STICKY: u32 = 64;
-pub const NTF_ROUTER: u32 = 128;
-pub const NTF_EXT_MANAGED: u32 = 1;
-pub const NTF_EXT_LOCKED: u32 = 2;
-pub const NUD_INCOMPLETE: u32 = 1;
-pub const NUD_REACHABLE: u32 = 2;
-pub const NUD_STALE: u32 = 4;
-pub const NUD_DELAY: u32 = 8;
-pub const NUD_PROBE: u32 = 16;
-pub const NUD_FAILED: u32 = 32;
-pub const NUD_NOARP: u32 = 64;
-pub const NUD_PERMANENT: u32 = 128;
-pub const NUD_NONE: u32 = 0;
-pub const RTNL_FAMILY_IPMR: u32 = 128;
-pub const RTNL_FAMILY_IP6MR: u32 = 129;
-pub const RTNL_FAMILY_MAX: u32 = 129;
-pub const RTA_ALIGNTO: u32 = 4;
-pub const RTPROT_UNSPEC: u32 = 0;
-pub const RTPROT_REDIRECT: u32 = 1;
-pub const RTPROT_KERNEL: u32 = 2;
-pub const RTPROT_BOOT: u32 = 3;
-pub const RTPROT_STATIC: u32 = 4;
-pub const RTPROT_GATED: u32 = 8;
-pub const RTPROT_RA: u32 = 9;
-pub const RTPROT_MRT: u32 = 10;
-pub const RTPROT_ZEBRA: u32 = 11;
-pub const RTPROT_BIRD: u32 = 12;
-pub const RTPROT_DNROUTED: u32 = 13;
-pub const RTPROT_XORP: u32 = 14;
-pub const RTPROT_NTK: u32 = 15;
-pub const RTPROT_DHCP: u32 = 16;
-pub const RTPROT_MROUTED: u32 = 17;
-pub const RTPROT_KEEPALIVED: u32 = 18;
-pub const RTPROT_BABEL: u32 = 42;
-pub const RTPROT_OPENR: u32 = 99;
-pub const RTPROT_BGP: u32 = 186;
-pub const RTPROT_ISIS: u32 = 187;
-pub const RTPROT_OSPF: u32 = 188;
-pub const RTPROT_RIP: u32 = 189;
-pub const RTPROT_EIGRP: u32 = 192;
-pub const RTM_F_NOTIFY: u32 = 256;
-pub const RTM_F_CLONED: u32 = 512;
-pub const RTM_F_EQUALIZE: u32 = 1024;
-pub const RTM_F_PREFIX: u32 = 2048;
-pub const RTM_F_LOOKUP_TABLE: u32 = 4096;
-pub const RTM_F_FIB_MATCH: u32 = 8192;
-pub const RTM_F_OFFLOAD: u32 = 16384;
-pub const RTM_F_TRAP: u32 = 32768;
-pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912;
-pub const RTNH_F_DEAD: u32 = 1;
-pub const RTNH_F_PERVASIVE: u32 = 2;
-pub const RTNH_F_ONLINK: u32 = 4;
-pub const RTNH_F_OFFLOAD: u32 = 8;
-pub const RTNH_F_LINKDOWN: u32 = 16;
-pub const RTNH_F_UNRESOLVED: u32 = 32;
-pub const RTNH_F_TRAP: u32 = 64;
-pub const RTNH_COMPARE_MASK: u32 = 89;
-pub const RTNH_ALIGNTO: u32 = 4;
-pub const RTNETLINK_HAVE_PEERINFO: u32 = 1;
-pub const RTAX_FEATURE_ECN: u32 = 1;
-pub const RTAX_FEATURE_SACK: u32 = 2;
-pub const RTAX_FEATURE_TIMESTAMP: u32 = 4;
-pub const RTAX_FEATURE_ALLFRAG: u32 = 8;
-pub const RTAX_FEATURE_MASK: u32 = 15;
-pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295;
-pub const TCA_DUMP_FLAGS_TERSE: u32 = 1;
-pub const RTMGRP_LINK: u32 = 1;
-pub const RTMGRP_NOTIFY: u32 = 2;
-pub const RTMGRP_NEIGH: u32 = 4;
-pub const RTMGRP_TC: u32 = 8;
-pub const RTMGRP_IPV4_IFADDR: u32 = 16;
-pub const RTMGRP_IPV4_MROUTE: u32 = 32;
-pub const RTMGRP_IPV4_ROUTE: u32 = 64;
-pub const RTMGRP_IPV4_RULE: u32 = 128;
-pub const RTMGRP_IPV6_IFADDR: u32 = 256;
-pub const RTMGRP_IPV6_MROUTE: u32 = 512;
-pub const RTMGRP_IPV6_ROUTE: u32 = 1024;
-pub const RTMGRP_IPV6_IFINFO: u32 = 2048;
-pub const RTMGRP_DECnet_IFADDR: u32 = 4096;
-pub const RTMGRP_DECnet_ROUTE: u32 = 16384;
-pub const RTMGRP_IPV6_PREFIX: u32 = 131072;
-pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2;
-pub const RTEXT_FILTER_VF: u32 = 1;
-pub const RTEXT_FILTER_BRVLAN: u32 = 2;
-pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4;
-pub const RTEXT_FILTER_SKIP_STATS: u32 = 8;
-pub const RTEXT_FILTER_MRP: u32 = 16;
-pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32;
-pub const RTEXT_FILTER_CFM_STATUS: u32 = 64;
-pub const RTEXT_FILTER_MST: u32 = 128;
-pub type size_t = crate::ctypes::c_ulong;
-pub type ssize_t = crate::ctypes::c_long;
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-pub type addr_t = crate::ctypes::c_ulong;
-pub type saddr_t = crate::ctypes::c_long;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __vector128 {
-pub u: [__u32; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 16usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_size_t = crate::ctypes::c_ulong;
-pub type __kernel_ssize_t = crate::ctypes::c_long;
-pub type __kernel_old_dev_t = crate::ctypes::c_ushort;
-pub type __kernel_ino_t = crate::ctypes::c_uint;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_ptrdiff_t = crate::ctypes::c_long;
-pub type __kernel_sigset_t = crate::ctypes::c_ulong;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_uid_t = __kernel_uid_t;
-pub type __kernel_old_gid_t = __kernel_gid_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_nl {
-pub nl_family: __kernel_sa_family_t,
-pub nl_pad: crate::ctypes::c_ushort,
-pub nl_pid: __u32,
-pub nl_groups: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsghdr {
-pub nlmsg_len: __u32,
-pub nlmsg_type: __u16,
-pub nlmsg_flags: __u16,
-pub nlmsg_seq: __u32,
-pub nlmsg_pid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsgerr {
-pub error: crate::ctypes::c_int,
-pub msg: nlmsghdr,
-}
-impl nlmsgerr_attrs {
-pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nlmsgerr_attrs {
-NLMSGERR_ATTR_UNUSED = 0,
-NLMSGERR_ATTR_MSG = 1,
-NLMSGERR_ATTR_OFFS = 2,
-NLMSGERR_ATTR_COOKIE = 3,
-NLMSGERR_ATTR_POLICY = 4,
-NLMSGERR_ATTR_MISS_TYPE = 5,
-NLMSGERR_ATTR_MISS_NEST = 6,
-__NLMSGERR_ATTR_MAX = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_pktinfo {
-pub group: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_req {
-pub nm_block_size: crate::ctypes::c_uint,
-pub nm_block_nr: crate::ctypes::c_uint,
-pub nm_frame_size: crate::ctypes::c_uint,
-pub nm_frame_nr: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_hdr {
-pub nm_status: crate::ctypes::c_uint,
-pub nm_len: crate::ctypes::c_uint,
-pub nm_group: __u32,
-pub nm_pid: __u32,
-pub nm_uid: __u32,
-pub nm_gid: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nl_mmap_status {
-NL_MMAP_STATUS_UNUSED = 0,
-NL_MMAP_STATUS_RESERVED = 1,
-NL_MMAP_STATUS_VALID = 2,
-NL_MMAP_STATUS_COPY = 3,
-NL_MMAP_STATUS_SKIP = 4,
-}
-pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED;
-pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-NETLINK_UNCONNECTED = 0,
-NETLINK_CONNECTED = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlattr {
-pub nla_len: __u16,
-pub nla_type: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nla_bitfield32 {
-pub value: __u32,
-pub selector: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_attribute_type {
-NL_ATTR_TYPE_INVALID = 0,
-NL_ATTR_TYPE_FLAG = 1,
-NL_ATTR_TYPE_U8 = 2,
-NL_ATTR_TYPE_U16 = 3,
-NL_ATTR_TYPE_U32 = 4,
-NL_ATTR_TYPE_U64 = 5,
-NL_ATTR_TYPE_S8 = 6,
-NL_ATTR_TYPE_S16 = 7,
-NL_ATTR_TYPE_S32 = 8,
-NL_ATTR_TYPE_S64 = 9,
-NL_ATTR_TYPE_BINARY = 10,
-NL_ATTR_TYPE_STRING = 11,
-NL_ATTR_TYPE_NUL_STRING = 12,
-NL_ATTR_TYPE_NESTED = 13,
-NL_ATTR_TYPE_NESTED_ARRAY = 14,
-NL_ATTR_TYPE_BITFIELD32 = 15,
-}
-impl netlink_policy_type_attr {
-pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_policy_type_attr {
-NL_POLICY_TYPE_ATTR_UNSPEC = 0,
-NL_POLICY_TYPE_ATTR_TYPE = 1,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5,
-NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6,
-NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7,
-NL_POLICY_TYPE_ATTR_POLICY_IDX = 8,
-NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9,
-NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10,
-NL_POLICY_TYPE_ATTR_PAD = 11,
-NL_POLICY_TYPE_ATTR_MASK = 12,
-__NL_POLICY_TYPE_ATTR_MAX = 13,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats {
-pub rx_packets: __u32,
-pub tx_packets: __u32,
-pub rx_bytes: __u32,
-pub tx_bytes: __u32,
-pub rx_errors: __u32,
-pub tx_errors: __u32,
-pub rx_dropped: __u32,
-pub tx_dropped: __u32,
-pub multicast: __u32,
-pub collisions: __u32,
-pub rx_length_errors: __u32,
-pub rx_over_errors: __u32,
-pub rx_crc_errors: __u32,
-pub rx_frame_errors: __u32,
-pub rx_fifo_errors: __u32,
-pub rx_missed_errors: __u32,
-pub tx_aborted_errors: __u32,
-pub tx_carrier_errors: __u32,
-pub tx_fifo_errors: __u32,
-pub tx_heartbeat_errors: __u32,
-pub tx_window_errors: __u32,
-pub rx_compressed: __u32,
-pub tx_compressed: __u32,
-pub rx_nohandler: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-pub collisions: __u64,
-pub rx_length_errors: __u64,
-pub rx_over_errors: __u64,
-pub rx_crc_errors: __u64,
-pub rx_frame_errors: __u64,
-pub rx_fifo_errors: __u64,
-pub rx_missed_errors: __u64,
-pub tx_aborted_errors: __u64,
-pub tx_carrier_errors: __u64,
-pub tx_fifo_errors: __u64,
-pub tx_heartbeat_errors: __u64,
-pub tx_window_errors: __u64,
-pub rx_compressed: __u64,
-pub tx_compressed: __u64,
-pub rx_nohandler: __u64,
-pub rx_otherhost_dropped: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_hw_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_ifmap {
-pub mem_start: __u64,
-pub mem_end: __u64,
-pub base_addr: __u64,
-pub irq: __u16,
-pub dma: __u8,
-pub port: __u8,
-}
-pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC;
-pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS;
-pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST;
-pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME;
-pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU;
-pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK;
-pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC;
-pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS;
-pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST;
-pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY;
-pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER;
-pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS;
-pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO;
-pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN;
-pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP;
-pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT;
-pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE;
-pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE;
-pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO;
-pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID;
-pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS;
-pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF;
-pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST;
-pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64;
-pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS;
-pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF;
-pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC;
-pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP;
-pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD;
-pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK;
-pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY;
-pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES;
-pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES;
-pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER;
-pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID;
-pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES;
-pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID;
-pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID;
-pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME;
-pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN;
-pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS;
-pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE;
-pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD;
-pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP;
-pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT;
-pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID;
-pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT;
-pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT;
-pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX;
-pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU;
-pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU;
-pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST;
-pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME;
-pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS;
-pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON;
-pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME;
-pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME;
-pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS;
-pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI;
-pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT;
-pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IFLA_UNSPEC = 0,
-IFLA_ADDRESS = 1,
-IFLA_BROADCAST = 2,
-IFLA_IFNAME = 3,
-IFLA_MTU = 4,
-IFLA_LINK = 5,
-IFLA_QDISC = 6,
-IFLA_STATS = 7,
-IFLA_COST = 8,
-IFLA_PRIORITY = 9,
-IFLA_MASTER = 10,
-IFLA_WIRELESS = 11,
-IFLA_PROTINFO = 12,
-IFLA_TXQLEN = 13,
-IFLA_MAP = 14,
-IFLA_WEIGHT = 15,
-IFLA_OPERSTATE = 16,
-IFLA_LINKMODE = 17,
-IFLA_LINKINFO = 18,
-IFLA_NET_NS_PID = 19,
-IFLA_IFALIAS = 20,
-IFLA_NUM_VF = 21,
-IFLA_VFINFO_LIST = 22,
-IFLA_STATS64 = 23,
-IFLA_VF_PORTS = 24,
-IFLA_PORT_SELF = 25,
-IFLA_AF_SPEC = 26,
-IFLA_GROUP = 27,
-IFLA_NET_NS_FD = 28,
-IFLA_EXT_MASK = 29,
-IFLA_PROMISCUITY = 30,
-IFLA_NUM_TX_QUEUES = 31,
-IFLA_NUM_RX_QUEUES = 32,
-IFLA_CARRIER = 33,
-IFLA_PHYS_PORT_ID = 34,
-IFLA_CARRIER_CHANGES = 35,
-IFLA_PHYS_SWITCH_ID = 36,
-IFLA_LINK_NETNSID = 37,
-IFLA_PHYS_PORT_NAME = 38,
-IFLA_PROTO_DOWN = 39,
-IFLA_GSO_MAX_SEGS = 40,
-IFLA_GSO_MAX_SIZE = 41,
-IFLA_PAD = 42,
-IFLA_XDP = 43,
-IFLA_EVENT = 44,
-IFLA_NEW_NETNSID = 45,
-IFLA_IF_NETNSID = 46,
-IFLA_CARRIER_UP_COUNT = 47,
-IFLA_CARRIER_DOWN_COUNT = 48,
-IFLA_NEW_IFINDEX = 49,
-IFLA_MIN_MTU = 50,
-IFLA_MAX_MTU = 51,
-IFLA_PROP_LIST = 52,
-IFLA_ALT_IFNAME = 53,
-IFLA_PERM_ADDRESS = 54,
-IFLA_PROTO_DOWN_REASON = 55,
-IFLA_PARENT_DEV_NAME = 56,
-IFLA_PARENT_DEV_BUS_NAME = 57,
-IFLA_GRO_MAX_SIZE = 58,
-IFLA_TSO_MAX_SIZE = 59,
-IFLA_TSO_MAX_SEGS = 60,
-IFLA_ALLMULTI = 61,
-IFLA_DEVLINK_PORT = 62,
-__IFLA_MAX = 63,
-}
-pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC;
-pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK;
-pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT;
-pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-IFLA_PROTO_DOWN_REASON_UNSPEC = 0,
-IFLA_PROTO_DOWN_REASON_MASK = 1,
-IFLA_PROTO_DOWN_REASON_VALUE = 2,
-__IFLA_PROTO_DOWN_REASON_CNT = 3,
-}
-pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC;
-pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF;
-pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-IFLA_INET_UNSPEC = 0,
-IFLA_INET_CONF = 1,
-__IFLA_INET_MAX = 2,
-}
-pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC;
-pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS;
-pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF;
-pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS;
-pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST;
-pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO;
-pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS;
-pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN;
-pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE;
-pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU;
-pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-IFLA_INET6_UNSPEC = 0,
-IFLA_INET6_FLAGS = 1,
-IFLA_INET6_CONF = 2,
-IFLA_INET6_STATS = 3,
-IFLA_INET6_MCAST = 4,
-IFLA_INET6_CACHEINFO = 5,
-IFLA_INET6_ICMP6STATS = 6,
-IFLA_INET6_TOKEN = 7,
-IFLA_INET6_ADDR_GEN_MODE = 8,
-IFLA_INET6_RA_MTU = 9,
-__IFLA_INET6_MAX = 10,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum in6_addr_gen_mode {
-IN6_ADDR_GEN_MODE_EUI64 = 0,
-IN6_ADDR_GEN_MODE_NONE = 1,
-IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2,
-IN6_ADDR_GEN_MODE_RANDOM = 3,
-}
-pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC;
-pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY;
-pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME;
-pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE;
-pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME;
-pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE;
-pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY;
-pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING;
-pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL;
-pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK;
-pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID;
-pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID;
-pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT;
-pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST;
-pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE;
-pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED;
-pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER;
-pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER;
-pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER;
-pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER;
-pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR;
-pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH;
-pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER;
-pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING;
-pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR;
-pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER;
-pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY;
-pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX;
-pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT;
-pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL;
-pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL;
-pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL;
-pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL;
-pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL;
-pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES;
-pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES;
-pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES;
-pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID;
-pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD;
-pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED;
-pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED;
-pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION;
-pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION;
-pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT;
-pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT;
-pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE;
-pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-IFLA_BR_UNSPEC = 0,
-IFLA_BR_FORWARD_DELAY = 1,
-IFLA_BR_HELLO_TIME = 2,
-IFLA_BR_MAX_AGE = 3,
-IFLA_BR_AGEING_TIME = 4,
-IFLA_BR_STP_STATE = 5,
-IFLA_BR_PRIORITY = 6,
-IFLA_BR_VLAN_FILTERING = 7,
-IFLA_BR_VLAN_PROTOCOL = 8,
-IFLA_BR_GROUP_FWD_MASK = 9,
-IFLA_BR_ROOT_ID = 10,
-IFLA_BR_BRIDGE_ID = 11,
-IFLA_BR_ROOT_PORT = 12,
-IFLA_BR_ROOT_PATH_COST = 13,
-IFLA_BR_TOPOLOGY_CHANGE = 14,
-IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 15,
-IFLA_BR_HELLO_TIMER = 16,
-IFLA_BR_TCN_TIMER = 17,
-IFLA_BR_TOPOLOGY_CHANGE_TIMER = 18,
-IFLA_BR_GC_TIMER = 19,
-IFLA_BR_GROUP_ADDR = 20,
-IFLA_BR_FDB_FLUSH = 21,
-IFLA_BR_MCAST_ROUTER = 22,
-IFLA_BR_MCAST_SNOOPING = 23,
-IFLA_BR_MCAST_QUERY_USE_IFADDR = 24,
-IFLA_BR_MCAST_QUERIER = 25,
-IFLA_BR_MCAST_HASH_ELASTICITY = 26,
-IFLA_BR_MCAST_HASH_MAX = 27,
-IFLA_BR_MCAST_LAST_MEMBER_CNT = 28,
-IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29,
-IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30,
-IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31,
-IFLA_BR_MCAST_QUERIER_INTVL = 32,
-IFLA_BR_MCAST_QUERY_INTVL = 33,
-IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34,
-IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35,
-IFLA_BR_NF_CALL_IPTABLES = 36,
-IFLA_BR_NF_CALL_IP6TABLES = 37,
-IFLA_BR_NF_CALL_ARPTABLES = 38,
-IFLA_BR_VLAN_DEFAULT_PVID = 39,
-IFLA_BR_PAD = 40,
-IFLA_BR_VLAN_STATS_ENABLED = 41,
-IFLA_BR_MCAST_STATS_ENABLED = 42,
-IFLA_BR_MCAST_IGMP_VERSION = 43,
-IFLA_BR_MCAST_MLD_VERSION = 44,
-IFLA_BR_VLAN_STATS_PER_PORT = 45,
-IFLA_BR_MULTI_BOOLOPT = 46,
-IFLA_BR_MCAST_QUERIER_STATE = 47,
-__IFLA_BR_MAX = 48,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_bridge_id {
-pub prio: [__u8; 2usize],
-pub addr: [__u8; 6usize],
-}
-pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC;
-pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-BRIDGE_MODE_UNSPEC = 0,
-BRIDGE_MODE_HAIRPIN = 1,
-}
-pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC;
-pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE;
-pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY;
-pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST;
-pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE;
-pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD;
-pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT;
-pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE;
-pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING;
-pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD;
-pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP;
-pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC;
-pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI;
-pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID;
-pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID;
-pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT;
-pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST;
-pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID;
-pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO;
-pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK;
-pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING;
-pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER;
-pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER;
-pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER;
-pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH;
-pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER;
-pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD;
-pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD;
-pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST;
-pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL;
-pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD;
-pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK;
-pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS;
-pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED;
-pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT;
-pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN;
-pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT;
-pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED;
-pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB;
-pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IFLA_BRPORT_UNSPEC = 0,
-IFLA_BRPORT_STATE = 1,
-IFLA_BRPORT_PRIORITY = 2,
-IFLA_BRPORT_COST = 3,
-IFLA_BRPORT_MODE = 4,
-IFLA_BRPORT_GUARD = 5,
-IFLA_BRPORT_PROTECT = 6,
-IFLA_BRPORT_FAST_LEAVE = 7,
-IFLA_BRPORT_LEARNING = 8,
-IFLA_BRPORT_UNICAST_FLOOD = 9,
-IFLA_BRPORT_PROXYARP = 10,
-IFLA_BRPORT_LEARNING_SYNC = 11,
-IFLA_BRPORT_PROXYARP_WIFI = 12,
-IFLA_BRPORT_ROOT_ID = 13,
-IFLA_BRPORT_BRIDGE_ID = 14,
-IFLA_BRPORT_DESIGNATED_PORT = 15,
-IFLA_BRPORT_DESIGNATED_COST = 16,
-IFLA_BRPORT_ID = 17,
-IFLA_BRPORT_NO = 18,
-IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 19,
-IFLA_BRPORT_CONFIG_PENDING = 20,
-IFLA_BRPORT_MESSAGE_AGE_TIMER = 21,
-IFLA_BRPORT_FORWARD_DELAY_TIMER = 22,
-IFLA_BRPORT_HOLD_TIMER = 23,
-IFLA_BRPORT_FLUSH = 24,
-IFLA_BRPORT_MULTICAST_ROUTER = 25,
-IFLA_BRPORT_PAD = 26,
-IFLA_BRPORT_MCAST_FLOOD = 27,
-IFLA_BRPORT_MCAST_TO_UCAST = 28,
-IFLA_BRPORT_VLAN_TUNNEL = 29,
-IFLA_BRPORT_BCAST_FLOOD = 30,
-IFLA_BRPORT_GROUP_FWD_MASK = 31,
-IFLA_BRPORT_NEIGH_SUPPRESS = 32,
-IFLA_BRPORT_ISOLATED = 33,
-IFLA_BRPORT_BACKUP_PORT = 34,
-IFLA_BRPORT_MRP_RING_OPEN = 35,
-IFLA_BRPORT_MRP_IN_OPEN = 36,
-IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 37,
-IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 38,
-IFLA_BRPORT_LOCKED = 39,
-IFLA_BRPORT_MAB = 40,
-__IFLA_BRPORT_MAX = 41,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_cacheinfo {
-pub max_reasm_len: __u32,
-pub tstamp: __u32,
-pub reachable_time: __u32,
-pub retrans_time: __u32,
-}
-pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC;
-pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND;
-pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA;
-pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS;
-pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND;
-pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA;
-pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IFLA_INFO_UNSPEC = 0,
-IFLA_INFO_KIND = 1,
-IFLA_INFO_DATA = 2,
-IFLA_INFO_XSTATS = 3,
-IFLA_INFO_SLAVE_KIND = 4,
-IFLA_INFO_SLAVE_DATA = 5,
-__IFLA_INFO_MAX = 6,
-}
-pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC;
-pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID;
-pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS;
-pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS;
-pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS;
-pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL;
-pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IFLA_VLAN_UNSPEC = 0,
-IFLA_VLAN_ID = 1,
-IFLA_VLAN_FLAGS = 2,
-IFLA_VLAN_EGRESS_QOS = 3,
-IFLA_VLAN_INGRESS_QOS = 4,
-IFLA_VLAN_PROTOCOL = 5,
-__IFLA_VLAN_MAX = 6,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC;
-pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING;
-pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IFLA_VLAN_QOS_UNSPEC = 0,
-IFLA_VLAN_QOS_MAPPING = 1,
-__IFLA_VLAN_QOS_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_qos_mapping {
-pub from: __u32,
-pub to: __u32,
-}
-pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC;
-pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE;
-pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS;
-pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE;
-pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR;
-pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA;
-pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED;
-pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IFLA_MACVLAN_UNSPEC = 0,
-IFLA_MACVLAN_MODE = 1,
-IFLA_MACVLAN_FLAGS = 2,
-IFLA_MACVLAN_MACADDR_MODE = 3,
-IFLA_MACVLAN_MACADDR = 4,
-IFLA_MACVLAN_MACADDR_DATA = 5,
-IFLA_MACVLAN_MACADDR_COUNT = 6,
-IFLA_MACVLAN_BC_QUEUE_LEN = 7,
-IFLA_MACVLAN_BC_QUEUE_LEN_USED = 8,
-__IFLA_MACVLAN_MAX = 9,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_mode {
-MACVLAN_MODE_PRIVATE = 1,
-MACVLAN_MODE_VEPA = 2,
-MACVLAN_MODE_BRIDGE = 4,
-MACVLAN_MODE_PASSTHRU = 8,
-MACVLAN_MODE_SOURCE = 16,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_macaddr_mode {
-MACVLAN_MACADDR_ADD = 0,
-MACVLAN_MACADDR_DEL = 1,
-MACVLAN_MACADDR_FLUSH = 2,
-MACVLAN_MACADDR_SET = 3,
-}
-pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC;
-pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE;
-pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_13 {
-IFLA_VRF_UNSPEC = 0,
-IFLA_VRF_TABLE = 1,
-__IFLA_VRF_MAX = 2,
-}
-pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC;
-pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE;
-pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_14 {
-IFLA_VRF_PORT_UNSPEC = 0,
-IFLA_VRF_PORT_TABLE = 1,
-__IFLA_VRF_PORT_MAX = 2,
-}
-pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC;
-pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI;
-pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT;
-pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN;
-pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE;
-pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW;
-pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA;
-pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT;
-pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT;
-pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI;
-pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES;
-pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB;
-pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT;
-pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION;
-pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD;
-pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD;
-pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_15 {
-IFLA_MACSEC_UNSPEC = 0,
-IFLA_MACSEC_SCI = 1,
-IFLA_MACSEC_PORT = 2,
-IFLA_MACSEC_ICV_LEN = 3,
-IFLA_MACSEC_CIPHER_SUITE = 4,
-IFLA_MACSEC_WINDOW = 5,
-IFLA_MACSEC_ENCODING_SA = 6,
-IFLA_MACSEC_ENCRYPT = 7,
-IFLA_MACSEC_PROTECT = 8,
-IFLA_MACSEC_INC_SCI = 9,
-IFLA_MACSEC_ES = 10,
-IFLA_MACSEC_SCB = 11,
-IFLA_MACSEC_REPLAY_PROTECT = 12,
-IFLA_MACSEC_VALIDATION = 13,
-IFLA_MACSEC_PAD = 14,
-IFLA_MACSEC_OFFLOAD = 15,
-__IFLA_MACSEC_MAX = 16,
-}
-pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC;
-pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK;
-pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID;
-pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA;
-pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_16 {
-IFLA_XFRM_UNSPEC = 0,
-IFLA_XFRM_LINK = 1,
-IFLA_XFRM_IF_ID = 2,
-IFLA_XFRM_COLLECT_METADATA = 3,
-__IFLA_XFRM_MAX = 4,
-}
-impl macsec_validation_type {
-pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_validation_type {
-MACSEC_VALIDATE_DISABLED = 0,
-MACSEC_VALIDATE_CHECK = 1,
-MACSEC_VALIDATE_STRICT = 2,
-__MACSEC_VALIDATE_END = 3,
-}
-impl macsec_offload {
-pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_offload {
-MACSEC_OFFLOAD_OFF = 0,
-MACSEC_OFFLOAD_PHY = 1,
-MACSEC_OFFLOAD_MAC = 2,
-__MACSEC_OFFLOAD_END = 3,
-}
-pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC;
-pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE;
-pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS;
-pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_17 {
-IFLA_IPVLAN_UNSPEC = 0,
-IFLA_IPVLAN_MODE = 1,
-IFLA_IPVLAN_FLAGS = 2,
-__IFLA_IPVLAN_MAX = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ipvlan_mode {
-IPVLAN_MODE_L2 = 0,
-IPVLAN_MODE_L3 = 1,
-IPVLAN_MODE_L3S = 2,
-IPVLAN_MODE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tunnel_msg {
-pub family: __u8,
-pub flags: __u8,
-pub reserved2: __u16,
-pub ifindex: __u32,
-}
-pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC;
-pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD;
-pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_18 {
-VNIFILTER_ENTRY_STATS_UNSPEC = 0,
-VNIFILTER_ENTRY_STATS_RX_BYTES = 1,
-VNIFILTER_ENTRY_STATS_RX_PKTS = 2,
-VNIFILTER_ENTRY_STATS_RX_DROPS = 3,
-VNIFILTER_ENTRY_STATS_RX_ERRORS = 4,
-VNIFILTER_ENTRY_STATS_TX_BYTES = 5,
-VNIFILTER_ENTRY_STATS_TX_PKTS = 6,
-VNIFILTER_ENTRY_STATS_TX_DROPS = 7,
-VNIFILTER_ENTRY_STATS_TX_ERRORS = 8,
-VNIFILTER_ENTRY_STATS_PAD = 9,
-__VNIFILTER_ENTRY_STATS_MAX = 10,
-}
-pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START;
-pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6;
-pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS;
-pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_19 {
-VXLAN_VNIFILTER_ENTRY_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY_START = 1,
-VXLAN_VNIFILTER_ENTRY_END = 2,
-VXLAN_VNIFILTER_ENTRY_GROUP = 3,
-VXLAN_VNIFILTER_ENTRY_GROUP6 = 4,
-VXLAN_VNIFILTER_ENTRY_STATS = 5,
-__VXLAN_VNIFILTER_ENTRY_MAX = 6,
-}
-pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY;
-pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_20 {
-VXLAN_VNIFILTER_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY = 1,
-__VXLAN_VNIFILTER_MAX = 2,
-}
-pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC;
-pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID;
-pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP;
-pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK;
-pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL;
-pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL;
-pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS;
-pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING;
-pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING;
-pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT;
-pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE;
-pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY;
-pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC;
-pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS;
-pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS;
-pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT;
-pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6;
-pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6;
-pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX;
-pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX;
-pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX;
-pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP;
-pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL;
-pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA;
-pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL;
-pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE;
-pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT;
-pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF;
-pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER;
-pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_21 {
-IFLA_VXLAN_UNSPEC = 0,
-IFLA_VXLAN_ID = 1,
-IFLA_VXLAN_GROUP = 2,
-IFLA_VXLAN_LINK = 3,
-IFLA_VXLAN_LOCAL = 4,
-IFLA_VXLAN_TTL = 5,
-IFLA_VXLAN_TOS = 6,
-IFLA_VXLAN_LEARNING = 7,
-IFLA_VXLAN_AGEING = 8,
-IFLA_VXLAN_LIMIT = 9,
-IFLA_VXLAN_PORT_RANGE = 10,
-IFLA_VXLAN_PROXY = 11,
-IFLA_VXLAN_RSC = 12,
-IFLA_VXLAN_L2MISS = 13,
-IFLA_VXLAN_L3MISS = 14,
-IFLA_VXLAN_PORT = 15,
-IFLA_VXLAN_GROUP6 = 16,
-IFLA_VXLAN_LOCAL6 = 17,
-IFLA_VXLAN_UDP_CSUM = 18,
-IFLA_VXLAN_UDP_ZERO_CSUM6_TX = 19,
-IFLA_VXLAN_UDP_ZERO_CSUM6_RX = 20,
-IFLA_VXLAN_REMCSUM_TX = 21,
-IFLA_VXLAN_REMCSUM_RX = 22,
-IFLA_VXLAN_GBP = 23,
-IFLA_VXLAN_REMCSUM_NOPARTIAL = 24,
-IFLA_VXLAN_COLLECT_METADATA = 25,
-IFLA_VXLAN_LABEL = 26,
-IFLA_VXLAN_GPE = 27,
-IFLA_VXLAN_TTL_INHERIT = 28,
-IFLA_VXLAN_DF = 29,
-IFLA_VXLAN_VNIFILTER = 30,
-__IFLA_VXLAN_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vxlan_port_range {
-pub low: __be16,
-pub high: __be16,
-}
-impl ifla_vxlan_df {
-pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_vxlan_df {
-VXLAN_DF_UNSET = 0,
-VXLAN_DF_SET = 1,
-VXLAN_DF_INHERIT = 2,
-__VXLAN_DF_END = 3,
-}
-pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC;
-pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID;
-pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE;
-pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL;
-pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS;
-pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT;
-pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA;
-pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6;
-pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX;
-pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL;
-pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT;
-pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF;
-pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT;
-pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_22 {
-IFLA_GENEVE_UNSPEC = 0,
-IFLA_GENEVE_ID = 1,
-IFLA_GENEVE_REMOTE = 2,
-IFLA_GENEVE_TTL = 3,
-IFLA_GENEVE_TOS = 4,
-IFLA_GENEVE_PORT = 5,
-IFLA_GENEVE_COLLECT_METADATA = 6,
-IFLA_GENEVE_REMOTE6 = 7,
-IFLA_GENEVE_UDP_CSUM = 8,
-IFLA_GENEVE_UDP_ZERO_CSUM6_TX = 9,
-IFLA_GENEVE_UDP_ZERO_CSUM6_RX = 10,
-IFLA_GENEVE_LABEL = 11,
-IFLA_GENEVE_TTL_INHERIT = 12,
-IFLA_GENEVE_DF = 13,
-IFLA_GENEVE_INNER_PROTO_INHERIT = 14,
-__IFLA_GENEVE_MAX = 15,
-}
-impl ifla_geneve_df {
-pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_geneve_df {
-GENEVE_DF_UNSET = 0,
-GENEVE_DF_SET = 1,
-GENEVE_DF_INHERIT = 2,
-__GENEVE_DF_END = 3,
-}
-pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC;
-pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT;
-pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE;
-pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN;
-pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE;
-pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_23 {
-IFLA_BAREUDP_UNSPEC = 0,
-IFLA_BAREUDP_PORT = 1,
-IFLA_BAREUDP_ETHERTYPE = 2,
-IFLA_BAREUDP_SRCPORT_MIN = 3,
-IFLA_BAREUDP_MULTIPROTO_MODE = 4,
-__IFLA_BAREUDP_MAX = 5,
-}
-pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC;
-pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD;
-pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_24 {
-IFLA_PPP_UNSPEC = 0,
-IFLA_PPP_DEV_FD = 1,
-__IFLA_PPP_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_gtp_role {
-GTP_ROLE_GGSN = 0,
-GTP_ROLE_SGSN = 1,
-}
-pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC;
-pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0;
-pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1;
-pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE;
-pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE;
-pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS;
-pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT;
-pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_25 {
-IFLA_GTP_UNSPEC = 0,
-IFLA_GTP_FD0 = 1,
-IFLA_GTP_FD1 = 2,
-IFLA_GTP_PDP_HASHSIZE = 3,
-IFLA_GTP_ROLE = 4,
-IFLA_GTP_CREATE_SOCKETS = 5,
-IFLA_GTP_RESTART_COUNT = 6,
-__IFLA_GTP_MAX = 7,
-}
-pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC;
-pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE;
-pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE;
-pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON;
-pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY;
-pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY;
-pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER;
-pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL;
-pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET;
-pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE;
-pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS;
-pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY;
-pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT;
-pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC;
-pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY;
-pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP;
-pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF;
-pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE;
-pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS;
-pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL;
-pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE;
-pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE;
-pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT;
-pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO;
-pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO;
-pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY;
-pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM;
-pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB;
-pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY;
-pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE;
-pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX;
-pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET;
-pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_26 {
-IFLA_BOND_UNSPEC = 0,
-IFLA_BOND_MODE = 1,
-IFLA_BOND_ACTIVE_SLAVE = 2,
-IFLA_BOND_MIIMON = 3,
-IFLA_BOND_UPDELAY = 4,
-IFLA_BOND_DOWNDELAY = 5,
-IFLA_BOND_USE_CARRIER = 6,
-IFLA_BOND_ARP_INTERVAL = 7,
-IFLA_BOND_ARP_IP_TARGET = 8,
-IFLA_BOND_ARP_VALIDATE = 9,
-IFLA_BOND_ARP_ALL_TARGETS = 10,
-IFLA_BOND_PRIMARY = 11,
-IFLA_BOND_PRIMARY_RESELECT = 12,
-IFLA_BOND_FAIL_OVER_MAC = 13,
-IFLA_BOND_XMIT_HASH_POLICY = 14,
-IFLA_BOND_RESEND_IGMP = 15,
-IFLA_BOND_NUM_PEER_NOTIF = 16,
-IFLA_BOND_ALL_SLAVES_ACTIVE = 17,
-IFLA_BOND_MIN_LINKS = 18,
-IFLA_BOND_LP_INTERVAL = 19,
-IFLA_BOND_PACKETS_PER_SLAVE = 20,
-IFLA_BOND_AD_LACP_RATE = 21,
-IFLA_BOND_AD_SELECT = 22,
-IFLA_BOND_AD_INFO = 23,
-IFLA_BOND_AD_ACTOR_SYS_PRIO = 24,
-IFLA_BOND_AD_USER_PORT_KEY = 25,
-IFLA_BOND_AD_ACTOR_SYSTEM = 26,
-IFLA_BOND_TLB_DYNAMIC_LB = 27,
-IFLA_BOND_PEER_NOTIF_DELAY = 28,
-IFLA_BOND_AD_LACP_ACTIVE = 29,
-IFLA_BOND_MISSED_MAX = 30,
-IFLA_BOND_NS_IP6_TARGET = 31,
-__IFLA_BOND_MAX = 32,
-}
-pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC;
-pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR;
-pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS;
-pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC;
-pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_27 {
-IFLA_BOND_AD_INFO_UNSPEC = 0,
-IFLA_BOND_AD_INFO_AGGREGATOR = 1,
-IFLA_BOND_AD_INFO_NUM_PORTS = 2,
-IFLA_BOND_AD_INFO_ACTOR_KEY = 3,
-IFLA_BOND_AD_INFO_PARTNER_KEY = 4,
-IFLA_BOND_AD_INFO_PARTNER_MAC = 5,
-__IFLA_BOND_AD_INFO_MAX = 6,
-}
-pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC;
-pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE;
-pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS;
-pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT;
-pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR;
-pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID;
-pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID;
-pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO;
-pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_28 {
-IFLA_BOND_SLAVE_UNSPEC = 0,
-IFLA_BOND_SLAVE_STATE = 1,
-IFLA_BOND_SLAVE_MII_STATUS = 2,
-IFLA_BOND_SLAVE_LINK_FAILURE_COUNT = 3,
-IFLA_BOND_SLAVE_PERM_HWADDR = 4,
-IFLA_BOND_SLAVE_QUEUE_ID = 5,
-IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 6,
-IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 7,
-IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 8,
-IFLA_BOND_SLAVE_PRIO = 9,
-__IFLA_BOND_SLAVE_MAX = 10,
-}
-pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC;
-pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO;
-pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_29 {
-IFLA_VF_INFO_UNSPEC = 0,
-IFLA_VF_INFO = 1,
-__IFLA_VF_INFO_MAX = 2,
-}
-pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC;
-pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC;
-pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN;
-pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE;
-pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK;
-pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE;
-pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE;
-pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN;
-pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS;
-pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST;
-pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID;
-pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID;
-pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST;
-pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST;
-pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_30 {
-IFLA_VF_UNSPEC = 0,
-IFLA_VF_MAC = 1,
-IFLA_VF_VLAN = 2,
-IFLA_VF_TX_RATE = 3,
-IFLA_VF_SPOOFCHK = 4,
-IFLA_VF_LINK_STATE = 5,
-IFLA_VF_RATE = 6,
-IFLA_VF_RSS_QUERY_EN = 7,
-IFLA_VF_STATS = 8,
-IFLA_VF_TRUST = 9,
-IFLA_VF_IB_NODE_GUID = 10,
-IFLA_VF_IB_PORT_GUID = 11,
-IFLA_VF_VLAN_LIST = 12,
-IFLA_VF_BROADCAST = 13,
-__IFLA_VF_MAX = 14,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_mac {
-pub vf: __u32,
-pub mac: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_broadcast {
-pub broadcast: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-}
-pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC;
-pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO;
-pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_31 {
-IFLA_VF_VLAN_INFO_UNSPEC = 0,
-IFLA_VF_VLAN_INFO = 1,
-__IFLA_VF_VLAN_INFO_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan_info {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-pub vlan_proto: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_tx_rate {
-pub vf: __u32,
-pub rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rate {
-pub vf: __u32,
-pub min_tx_rate: __u32,
-pub max_tx_rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_spoofchk {
-pub vf: __u32,
-pub setting: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_guid {
-pub vf: __u32,
-pub guid: __u64,
-}
-pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO;
-pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE;
-pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE;
-pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_32 {
-IFLA_VF_LINK_STATE_AUTO = 0,
-IFLA_VF_LINK_STATE_ENABLE = 1,
-IFLA_VF_LINK_STATE_DISABLE = 2,
-__IFLA_VF_LINK_STATE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_link_state {
-pub vf: __u32,
-pub link_state: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rss_query_en {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS;
-pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS;
-pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES;
-pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES;
-pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST;
-pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST;
-pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD;
-pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED;
-pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED;
-pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_33 {
-IFLA_VF_STATS_RX_PACKETS = 0,
-IFLA_VF_STATS_TX_PACKETS = 1,
-IFLA_VF_STATS_RX_BYTES = 2,
-IFLA_VF_STATS_TX_BYTES = 3,
-IFLA_VF_STATS_BROADCAST = 4,
-IFLA_VF_STATS_MULTICAST = 5,
-IFLA_VF_STATS_PAD = 6,
-IFLA_VF_STATS_RX_DROPPED = 7,
-IFLA_VF_STATS_TX_DROPPED = 8,
-__IFLA_VF_STATS_MAX = 9,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_trust {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC;
-pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT;
-pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_34 {
-IFLA_VF_PORT_UNSPEC = 0,
-IFLA_VF_PORT = 1,
-__IFLA_VF_PORT_MAX = 2,
-}
-pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC;
-pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF;
-pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE;
-pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE;
-pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID;
-pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID;
-pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST;
-pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE;
-pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_35 {
-IFLA_PORT_UNSPEC = 0,
-IFLA_PORT_VF = 1,
-IFLA_PORT_PROFILE = 2,
-IFLA_PORT_VSI_TYPE = 3,
-IFLA_PORT_INSTANCE_UUID = 4,
-IFLA_PORT_HOST_UUID = 5,
-IFLA_PORT_REQUEST = 6,
-IFLA_PORT_RESPONSE = 7,
-__IFLA_PORT_MAX = 8,
-}
-pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE;
-pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR;
-pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE;
-pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_36 {
-PORT_REQUEST_PREASSOCIATE = 0,
-PORT_REQUEST_PREASSOCIATE_RR = 1,
-PORT_REQUEST_ASSOCIATE = 2,
-PORT_REQUEST_DISASSOCIATE = 3,
-}
-pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS;
-pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT;
-pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID;
-pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION;
-pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION;
-pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC;
-pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS;
-pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS;
-pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID;
-pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE;
-pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_37 {
-PORT_VDP_RESPONSE_SUCCESS = 0,
-PORT_VDP_RESPONSE_INVALID_FORMAT = 1,
-PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES = 2,
-PORT_VDP_RESPONSE_UNUSED_VTID = 3,
-PORT_VDP_RESPONSE_VTID_VIOLATION = 4,
-PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION = 5,
-PORT_VDP_RESPONSE_OUT_OF_SYNC = 6,
-PORT_PROFILE_RESPONSE_SUCCESS = 256,
-PORT_PROFILE_RESPONSE_INPROGRESS = 257,
-PORT_PROFILE_RESPONSE_INVALID = 258,
-PORT_PROFILE_RESPONSE_BADSTATE = 259,
-PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260,
-PORT_PROFILE_RESPONSE_ERROR = 261,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_port_vsi {
-pub vsi_mgr_id: __u8,
-pub vsi_type_id: [__u8; 3usize],
-pub vsi_type_version: __u8,
-pub pad: [__u8; 3usize],
-}
-pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC;
-pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY;
-pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE;
-pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST;
-pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_38 {
-IFLA_IPOIB_UNSPEC = 0,
-IFLA_IPOIB_PKEY = 1,
-IFLA_IPOIB_MODE = 2,
-IFLA_IPOIB_UMCAST = 3,
-__IFLA_IPOIB_MAX = 4,
-}
-pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM;
-pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_39 {
-IPOIB_MODE_DATAGRAM = 0,
-IPOIB_MODE_CONNECTED = 1,
-}
-pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR;
-pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP;
-pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_40 {
-HSR_PROTOCOL_HSR = 0,
-HSR_PROTOCOL_PRP = 1,
-HSR_PROTOCOL_MAX = 2,
-}
-pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC;
-pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1;
-pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2;
-pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC;
-pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR;
-pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR;
-pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION;
-pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL;
-pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_41 {
-IFLA_HSR_UNSPEC = 0,
-IFLA_HSR_SLAVE1 = 1,
-IFLA_HSR_SLAVE2 = 2,
-IFLA_HSR_MULTICAST_SPEC = 3,
-IFLA_HSR_SUPERVISION_ADDR = 4,
-IFLA_HSR_SEQ_NR = 5,
-IFLA_HSR_VERSION = 6,
-IFLA_HSR_PROTOCOL = 7,
-__IFLA_HSR_MAX = 8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct if_stats_msg {
-pub family: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub ifindex: __u32,
-pub filter_mask: __u32,
-}
-pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC;
-pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64;
-pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS;
-pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE;
-pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS;
-pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC;
-pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_42 {
-IFLA_STATS_UNSPEC = 0,
-IFLA_STATS_LINK_64 = 1,
-IFLA_STATS_LINK_XSTATS = 2,
-IFLA_STATS_LINK_XSTATS_SLAVE = 3,
-IFLA_STATS_LINK_OFFLOAD_XSTATS = 4,
-IFLA_STATS_AF_SPEC = 5,
-__IFLA_STATS_MAX = 6,
-}
-pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC;
-pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS;
-pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_43 {
-IFLA_STATS_GETSET_UNSPEC = 0,
-IFLA_STATS_GET_FILTERS = 1,
-IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2,
-__IFLA_STATS_GETSET_MAX = 3,
-}
-pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC;
-pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE;
-pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND;
-pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_44 {
-LINK_XSTATS_TYPE_UNSPEC = 0,
-LINK_XSTATS_TYPE_BRIDGE = 1,
-LINK_XSTATS_TYPE_BOND = 2,
-__LINK_XSTATS_TYPE_MAX = 3,
-}
-pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO;
-pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_45 {
-IFLA_OFFLOAD_XSTATS_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_CPU_HIT = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO = 2,
-IFLA_OFFLOAD_XSTATS_L3_STATS = 3,
-__IFLA_OFFLOAD_XSTATS_MAX = 4,
-}
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED;
-pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_46 {
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2,
-__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3,
-}
-pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE;
-pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV;
-pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB;
-pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW;
-pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_47 {
-XDP_ATTACHED_NONE = 0,
-XDP_ATTACHED_DRV = 1,
-XDP_ATTACHED_SKB = 2,
-XDP_ATTACHED_HW = 3,
-XDP_ATTACHED_MULTI = 4,
-}
-pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC;
-pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD;
-pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED;
-pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS;
-pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID;
-pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID;
-pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID;
-pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID;
-pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD;
-pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_48 {
-IFLA_XDP_UNSPEC = 0,
-IFLA_XDP_FD = 1,
-IFLA_XDP_ATTACHED = 2,
-IFLA_XDP_FLAGS = 3,
-IFLA_XDP_PROG_ID = 4,
-IFLA_XDP_DRV_PROG_ID = 5,
-IFLA_XDP_SKB_PROG_ID = 6,
-IFLA_XDP_HW_PROG_ID = 7,
-IFLA_XDP_EXPECTED_FD = 8,
-__IFLA_XDP_MAX = 9,
-}
-pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE;
-pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT;
-pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES;
-pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER;
-pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS;
-pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND;
-pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_49 {
-IFLA_EVENT_NONE = 0,
-IFLA_EVENT_REBOOT = 1,
-IFLA_EVENT_FEATURES = 2,
-IFLA_EVENT_BONDING_FAILOVER = 3,
-IFLA_EVENT_NOTIFY_PEERS = 4,
-IFLA_EVENT_IGMP_RESEND = 5,
-IFLA_EVENT_BONDING_OPTIONS = 6,
-}
-pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC;
-pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER;
-pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP;
-pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE;
-pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI;
-pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR;
-pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST;
-pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE;
-pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES;
-pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES;
-pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_50 {
-IFLA_TUN_UNSPEC = 0,
-IFLA_TUN_OWNER = 1,
-IFLA_TUN_GROUP = 2,
-IFLA_TUN_TYPE = 3,
-IFLA_TUN_PI = 4,
-IFLA_TUN_VNET_HDR = 5,
-IFLA_TUN_PERSIST = 6,
-IFLA_TUN_MULTI_QUEUE = 7,
-IFLA_TUN_NUM_QUEUES = 8,
-IFLA_TUN_NUM_DISABLED_QUEUES = 9,
-__IFLA_TUN_MAX = 10,
-}
-pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC;
-pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID;
-pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS;
-pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_51 {
-IFLA_RMNET_UNSPEC = 0,
-IFLA_RMNET_MUX_ID = 1,
-IFLA_RMNET_FLAGS = 2,
-__IFLA_RMNET_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_rmnet_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC;
-pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET;
-pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_52 {
-IFLA_MCTP_UNSPEC = 0,
-IFLA_MCTP_NET = 1,
-__IFLA_MCTP_MAX = 2,
-}
-pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC;
-pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER;
-pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_53 {
-IFLA_DSA_UNSPEC = 0,
-IFLA_DSA_MASTER = 1,
-__IFLA_DSA_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifaddrmsg {
-pub ifa_family: __u8,
-pub ifa_prefixlen: __u8,
-pub ifa_flags: __u8,
-pub ifa_scope: __u8,
-pub ifa_index: __u32,
-}
-pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC;
-pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS;
-pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL;
-pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL;
-pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST;
-pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST;
-pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO;
-pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST;
-pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS;
-pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY;
-pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID;
-pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO;
-pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_54 {
-IFA_UNSPEC = 0,
-IFA_ADDRESS = 1,
-IFA_LOCAL = 2,
-IFA_LABEL = 3,
-IFA_BROADCAST = 4,
-IFA_ANYCAST = 5,
-IFA_CACHEINFO = 6,
-IFA_MULTICAST = 7,
-IFA_FLAGS = 8,
-IFA_RT_PRIORITY = 9,
-IFA_TARGET_NETNSID = 10,
-IFA_PROTO = 11,
-__IFA_MAX = 12,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifa_cacheinfo {
-pub ifa_prefered: __u32,
-pub ifa_valid: __u32,
-pub cstamp: __u32,
-pub tstamp: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndmsg {
-pub ndm_family: __u8,
-pub ndm_pad1: __u8,
-pub ndm_pad2: __u16,
-pub ndm_ifindex: __s32,
-pub ndm_state: __u16,
-pub ndm_flags: __u8,
-pub ndm_type: __u8,
-}
-pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC;
-pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST;
-pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR;
-pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO;
-pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES;
-pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN;
-pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT;
-pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI;
-pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX;
-pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER;
-pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID;
-pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI;
-pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL;
-pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID;
-pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS;
-pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT;
-pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK;
-pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK;
-pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_55 {
-NDA_UNSPEC = 0,
-NDA_DST = 1,
-NDA_LLADDR = 2,
-NDA_CACHEINFO = 3,
-NDA_PROBES = 4,
-NDA_VLAN = 5,
-NDA_PORT = 6,
-NDA_VNI = 7,
-NDA_IFINDEX = 8,
-NDA_MASTER = 9,
-NDA_LINK_NETNSID = 10,
-NDA_SRC_VNI = 11,
-NDA_PROTOCOL = 12,
-NDA_NH_ID = 13,
-NDA_FDB_EXT_ATTRS = 14,
-NDA_FLAGS_EXT = 15,
-NDA_NDM_STATE_MASK = 16,
-NDA_NDM_FLAGS_MASK = 17,
-__NDA_MAX = 18,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nda_cacheinfo {
-pub ndm_confirmed: __u32,
-pub ndm_used: __u32,
-pub ndm_updated: __u32,
-pub ndm_refcnt: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_stats {
-pub ndts_allocs: __u64,
-pub ndts_destroys: __u64,
-pub ndts_hash_grows: __u64,
-pub ndts_res_failed: __u64,
-pub ndts_lookups: __u64,
-pub ndts_hits: __u64,
-pub ndts_rcv_probes_mcast: __u64,
-pub ndts_rcv_probes_ucast: __u64,
-pub ndts_periodic_gc_runs: __u64,
-pub ndts_forced_gc_runs: __u64,
-pub ndts_table_fulls: __u64,
-}
-pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC;
-pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX;
-pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT;
-pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME;
-pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME;
-pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME;
-pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME;
-pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME;
-pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN;
-pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES;
-pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES;
-pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES;
-pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY;
-pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY;
-pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN;
-pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME;
-pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES;
-pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES;
-pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD;
-pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS;
-pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_56 {
-NDTPA_UNSPEC = 0,
-NDTPA_IFINDEX = 1,
-NDTPA_REFCNT = 2,
-NDTPA_REACHABLE_TIME = 3,
-NDTPA_BASE_REACHABLE_TIME = 4,
-NDTPA_RETRANS_TIME = 5,
-NDTPA_GC_STALETIME = 6,
-NDTPA_DELAY_PROBE_TIME = 7,
-NDTPA_QUEUE_LEN = 8,
-NDTPA_APP_PROBES = 9,
-NDTPA_UCAST_PROBES = 10,
-NDTPA_MCAST_PROBES = 11,
-NDTPA_ANYCAST_DELAY = 12,
-NDTPA_PROXY_DELAY = 13,
-NDTPA_PROXY_QLEN = 14,
-NDTPA_LOCKTIME = 15,
-NDTPA_QUEUE_LENBYTES = 16,
-NDTPA_MCAST_REPROBES = 17,
-NDTPA_PAD = 18,
-NDTPA_INTERVAL_PROBE_TIME_MS = 19,
-__NDTPA_MAX = 20,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndtmsg {
-pub ndtm_family: __u8,
-pub ndtm_pad1: __u8,
-pub ndtm_pad2: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_config {
-pub ndtc_key_len: __u16,
-pub ndtc_entry_size: __u16,
-pub ndtc_entries: __u32,
-pub ndtc_last_flush: __u32,
-pub ndtc_last_rand: __u32,
-pub ndtc_hash_rnd: __u32,
-pub ndtc_hash_mask: __u32,
-pub ndtc_hash_chain_gc: __u32,
-pub ndtc_proxy_qlen: __u32,
-}
-pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC;
-pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME;
-pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1;
-pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2;
-pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3;
-pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG;
-pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS;
-pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS;
-pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL;
-pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD;
-pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_57 {
-NDTA_UNSPEC = 0,
-NDTA_NAME = 1,
-NDTA_THRESH1 = 2,
-NDTA_THRESH2 = 3,
-NDTA_THRESH3 = 4,
-NDTA_CONFIG = 5,
-NDTA_PARMS = 6,
-NDTA_STATS = 7,
-NDTA_GC_INTERVAL = 8,
-NDTA_PAD = 9,
-__NDTA_MAX = 10,
-}
-pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT;
-pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_58 {
-FDB_NOTIFY_BIT = 1,
-FDB_NOTIFY_INACTIVE_BIT = 2,
-}
-pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC;
-pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY;
-pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH;
-pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_59 {
-NFEA_UNSPEC = 0,
-NFEA_ACTIVITY_NOTIFY = 1,
-NFEA_DONT_REFRESH = 2,
-__NFEA_MAX = 3,
-}
-pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK;
-pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK;
-pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK;
-pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR;
-pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR;
-pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR;
-pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE;
-pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE;
-pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE;
-pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH;
-pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH;
-pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH;
-pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE;
-pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE;
-pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE;
-pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC;
-pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC;
-pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC;
-pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS;
-pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS;
-pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS;
-pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER;
-pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER;
-pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER;
-pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION;
-pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION;
-pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION;
-pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX;
-pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST;
-pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST;
-pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL;
-pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL;
-pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL;
-pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT;
-pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL;
-pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL;
-pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL;
-pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB;
-pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB;
-pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF;
-pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF;
-pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF;
-pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB;
-pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB;
-pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB;
-pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID;
-pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID;
-pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID;
-pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS;
-pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS;
-pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS;
-pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT;
-pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN;
-pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN;
-pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN;
-pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP;
-pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP;
-pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP;
-pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP;
-pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP;
-pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP;
-pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN;
-pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN;
-pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN;
-pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET;
-pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET;
-pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET;
-pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL;
-pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL;
-pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL;
-pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_60 {
-RTM_BASE = 16,
-RTM_DELLINK = 17,
-RTM_GETLINK = 18,
-RTM_SETLINK = 19,
-RTM_NEWADDR = 20,
-RTM_DELADDR = 21,
-RTM_GETADDR = 22,
-RTM_NEWROUTE = 24,
-RTM_DELROUTE = 25,
-RTM_GETROUTE = 26,
-RTM_NEWNEIGH = 28,
-RTM_DELNEIGH = 29,
-RTM_GETNEIGH = 30,
-RTM_NEWRULE = 32,
-RTM_DELRULE = 33,
-RTM_GETRULE = 34,
-RTM_NEWQDISC = 36,
-RTM_DELQDISC = 37,
-RTM_GETQDISC = 38,
-RTM_NEWTCLASS = 40,
-RTM_DELTCLASS = 41,
-RTM_GETTCLASS = 42,
-RTM_NEWTFILTER = 44,
-RTM_DELTFILTER = 45,
-RTM_GETTFILTER = 46,
-RTM_NEWACTION = 48,
-RTM_DELACTION = 49,
-RTM_GETACTION = 50,
-RTM_NEWPREFIX = 52,
-RTM_GETMULTICAST = 58,
-RTM_GETANYCAST = 62,
-RTM_NEWNEIGHTBL = 64,
-RTM_GETNEIGHTBL = 66,
-RTM_SETNEIGHTBL = 67,
-RTM_NEWNDUSEROPT = 68,
-RTM_NEWADDRLABEL = 72,
-RTM_DELADDRLABEL = 73,
-RTM_GETADDRLABEL = 74,
-RTM_GETDCB = 78,
-RTM_SETDCB = 79,
-RTM_NEWNETCONF = 80,
-RTM_DELNETCONF = 81,
-RTM_GETNETCONF = 82,
-RTM_NEWMDB = 84,
-RTM_DELMDB = 85,
-RTM_GETMDB = 86,
-RTM_NEWNSID = 88,
-RTM_DELNSID = 89,
-RTM_GETNSID = 90,
-RTM_NEWSTATS = 92,
-RTM_GETSTATS = 94,
-RTM_SETSTATS = 95,
-RTM_NEWCACHEREPORT = 96,
-RTM_NEWCHAIN = 100,
-RTM_DELCHAIN = 101,
-RTM_GETCHAIN = 102,
-RTM_NEWNEXTHOP = 104,
-RTM_DELNEXTHOP = 105,
-RTM_GETNEXTHOP = 106,
-RTM_NEWLINKPROP = 108,
-RTM_DELLINKPROP = 109,
-RTM_GETLINKPROP = 110,
-RTM_NEWVLAN = 112,
-RTM_DELVLAN = 113,
-RTM_GETVLAN = 114,
-RTM_NEWNEXTHOPBUCKET = 116,
-RTM_DELNEXTHOPBUCKET = 117,
-RTM_GETNEXTHOPBUCKET = 118,
-RTM_NEWTUNNEL = 120,
-RTM_DELTUNNEL = 121,
-RTM_GETTUNNEL = 122,
-__RTM_MAX = 123,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtattr {
-pub rta_len: crate::ctypes::c_ushort,
-pub rta_type: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtmsg {
-pub rtm_family: crate::ctypes::c_uchar,
-pub rtm_dst_len: crate::ctypes::c_uchar,
-pub rtm_src_len: crate::ctypes::c_uchar,
-pub rtm_tos: crate::ctypes::c_uchar,
-pub rtm_table: crate::ctypes::c_uchar,
-pub rtm_protocol: crate::ctypes::c_uchar,
-pub rtm_scope: crate::ctypes::c_uchar,
-pub rtm_type: crate::ctypes::c_uchar,
-pub rtm_flags: crate::ctypes::c_uint,
-}
-pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC;
-pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST;
-pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL;
-pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST;
-pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST;
-pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST;
-pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE;
-pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE;
-pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT;
-pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW;
-pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT;
-pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE;
-pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_61 {
-RTN_UNSPEC = 0,
-RTN_UNICAST = 1,
-RTN_LOCAL = 2,
-RTN_BROADCAST = 3,
-RTN_ANYCAST = 4,
-RTN_MULTICAST = 5,
-RTN_BLACKHOLE = 6,
-RTN_UNREACHABLE = 7,
-RTN_PROHIBIT = 8,
-RTN_THROW = 9,
-RTN_NAT = 10,
-RTN_XRESOLVE = 11,
-__RTN_MAX = 12,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_scope_t {
-RT_SCOPE_UNIVERSE = 0,
-RT_SCOPE_SITE = 200,
-RT_SCOPE_LINK = 253,
-RT_SCOPE_HOST = 254,
-RT_SCOPE_NOWHERE = 255,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_class_t {
-RT_TABLE_UNSPEC = 0,
-RT_TABLE_COMPAT = 252,
-RT_TABLE_DEFAULT = 253,
-RT_TABLE_MAIN = 254,
-RT_TABLE_LOCAL = 255,
-RT_TABLE_MAX = 4294967295,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtattr_type_t {
-RTA_UNSPEC = 0,
-RTA_DST = 1,
-RTA_SRC = 2,
-RTA_IIF = 3,
-RTA_OIF = 4,
-RTA_GATEWAY = 5,
-RTA_PRIORITY = 6,
-RTA_PREFSRC = 7,
-RTA_METRICS = 8,
-RTA_MULTIPATH = 9,
-RTA_PROTOINFO = 10,
-RTA_FLOW = 11,
-RTA_CACHEINFO = 12,
-RTA_SESSION = 13,
-RTA_MP_ALGO = 14,
-RTA_TABLE = 15,
-RTA_MARK = 16,
-RTA_MFC_STATS = 17,
-RTA_VIA = 18,
-RTA_NEWDST = 19,
-RTA_PREF = 20,
-RTA_ENCAP_TYPE = 21,
-RTA_ENCAP = 22,
-RTA_EXPIRES = 23,
-RTA_PAD = 24,
-RTA_UID = 25,
-RTA_TTL_PROPAGATE = 26,
-RTA_IP_PROTO = 27,
-RTA_SPORT = 28,
-RTA_DPORT = 29,
-RTA_NH_ID = 30,
-__RTA_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnexthop {
-pub rtnh_len: crate::ctypes::c_ushort,
-pub rtnh_flags: crate::ctypes::c_uchar,
-pub rtnh_hops: crate::ctypes::c_uchar,
-pub rtnh_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rtvia {
-pub rtvia_family: __kernel_sa_family_t,
-pub rtvia_addr: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_cacheinfo {
-pub rta_clntref: __u32,
-pub rta_lastuse: __u32,
-pub rta_expires: __s32,
-pub rta_error: __u32,
-pub rta_used: __u32,
-pub rta_id: __u32,
-pub rta_ts: __u32,
-pub rta_tsage: __u32,
-}
-pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC;
-pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK;
-pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU;
-pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW;
-pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT;
-pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR;
-pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH;
-pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND;
-pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS;
-pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING;
-pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT;
-pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND;
-pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES;
-pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN;
-pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND;
-pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK;
-pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO;
-pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE;
-pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_62 {
-RTAX_UNSPEC = 0,
-RTAX_LOCK = 1,
-RTAX_MTU = 2,
-RTAX_WINDOW = 3,
-RTAX_RTT = 4,
-RTAX_RTTVAR = 5,
-RTAX_SSTHRESH = 6,
-RTAX_CWND = 7,
-RTAX_ADVMSS = 8,
-RTAX_REORDERING = 9,
-RTAX_HOPLIMIT = 10,
-RTAX_INITCWND = 11,
-RTAX_FEATURES = 12,
-RTAX_RTO_MIN = 13,
-RTAX_INITRWND = 14,
-RTAX_QUICKACK = 15,
-RTAX_CC_ALGO = 16,
-RTAX_FASTOPEN_NO_COOKIE = 17,
-__RTAX_MAX = 18,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rta_session {
-pub proto: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub u: rta_session__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union rta_session__bindgen_ty_1 {
-pub ports: rta_session__bindgen_ty_1__bindgen_ty_1,
-pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2,
-pub spi: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_1 {
-pub sport: __u16,
-pub dport: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_2 {
-pub type_: __u8,
-pub code: __u8,
-pub ident: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_mfc_stats {
-pub mfcs_packets: __u64,
-pub mfcs_bytes: __u64,
-pub mfcs_wrong_if: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtgenmsg {
-pub rtgen_family: crate::ctypes::c_uchar,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifinfomsg {
-pub ifi_family: crate::ctypes::c_uchar,
-pub __ifi_pad: crate::ctypes::c_uchar,
-pub ifi_type: crate::ctypes::c_ushort,
-pub ifi_index: crate::ctypes::c_int,
-pub ifi_flags: crate::ctypes::c_uint,
-pub ifi_change: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefixmsg {
-pub prefix_family: crate::ctypes::c_uchar,
-pub prefix_pad1: crate::ctypes::c_uchar,
-pub prefix_pad2: crate::ctypes::c_ushort,
-pub prefix_ifindex: crate::ctypes::c_int,
-pub prefix_type: crate::ctypes::c_uchar,
-pub prefix_len: crate::ctypes::c_uchar,
-pub prefix_flags: crate::ctypes::c_uchar,
-pub prefix_pad3: crate::ctypes::c_uchar,
-}
-pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC;
-pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS;
-pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO;
-pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_63 {
-PREFIX_UNSPEC = 0,
-PREFIX_ADDRESS = 1,
-PREFIX_CACHEINFO = 2,
-__PREFIX_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefix_cacheinfo {
-pub preferred_time: __u32,
-pub valid_time: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcmsg {
-pub tcm_family: crate::ctypes::c_uchar,
-pub tcm__pad1: crate::ctypes::c_uchar,
-pub tcm__pad2: crate::ctypes::c_ushort,
-pub tcm_ifindex: crate::ctypes::c_int,
-pub tcm_handle: __u32,
-pub tcm_parent: __u32,
-pub tcm_info: __u32,
-}
-pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC;
-pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND;
-pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS;
-pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS;
-pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS;
-pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE;
-pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT;
-pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2;
-pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB;
-pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD;
-pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE;
-pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN;
-pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD;
-pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK;
-pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK;
-pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS;
-pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_64 {
-TCA_UNSPEC = 0,
-TCA_KIND = 1,
-TCA_OPTIONS = 2,
-TCA_STATS = 3,
-TCA_XSTATS = 4,
-TCA_RATE = 5,
-TCA_FCNT = 6,
-TCA_STATS2 = 7,
-TCA_STAB = 8,
-TCA_PAD = 9,
-TCA_DUMP_INVISIBLE = 10,
-TCA_CHAIN = 11,
-TCA_HW_OFFLOAD = 12,
-TCA_INGRESS_BLOCK = 13,
-TCA_EGRESS_BLOCK = 14,
-TCA_DUMP_FLAGS = 15,
-__TCA_MAX = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nduseroptmsg {
-pub nduseropt_family: crate::ctypes::c_uchar,
-pub nduseropt_pad1: crate::ctypes::c_uchar,
-pub nduseropt_opts_len: crate::ctypes::c_ushort,
-pub nduseropt_ifindex: crate::ctypes::c_int,
-pub nduseropt_icmp_type: __u8,
-pub nduseropt_icmp_code: __u8,
-pub nduseropt_pad2: crate::ctypes::c_ushort,
-pub nduseropt_pad3: crate::ctypes::c_uint,
-}
-pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC;
-pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR;
-pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_65 {
-NDUSEROPT_UNSPEC = 0,
-NDUSEROPT_SRCADDR = 1,
-__NDUSEROPT_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtnetlink_groups {
-RTNLGRP_NONE = 0,
-RTNLGRP_LINK = 1,
-RTNLGRP_NOTIFY = 2,
-RTNLGRP_NEIGH = 3,
-RTNLGRP_TC = 4,
-RTNLGRP_IPV4_IFADDR = 5,
-RTNLGRP_IPV4_MROUTE = 6,
-RTNLGRP_IPV4_ROUTE = 7,
-RTNLGRP_IPV4_RULE = 8,
-RTNLGRP_IPV6_IFADDR = 9,
-RTNLGRP_IPV6_MROUTE = 10,
-RTNLGRP_IPV6_ROUTE = 11,
-RTNLGRP_IPV6_IFINFO = 12,
-RTNLGRP_DECnet_IFADDR = 13,
-RTNLGRP_NOP2 = 14,
-RTNLGRP_DECnet_ROUTE = 15,
-RTNLGRP_DECnet_RULE = 16,
-RTNLGRP_NOP4 = 17,
-RTNLGRP_IPV6_PREFIX = 18,
-RTNLGRP_IPV6_RULE = 19,
-RTNLGRP_ND_USEROPT = 20,
-RTNLGRP_PHONET_IFADDR = 21,
-RTNLGRP_PHONET_ROUTE = 22,
-RTNLGRP_DCB = 23,
-RTNLGRP_IPV4_NETCONF = 24,
-RTNLGRP_IPV6_NETCONF = 25,
-RTNLGRP_MDB = 26,
-RTNLGRP_MPLS_ROUTE = 27,
-RTNLGRP_NSID = 28,
-RTNLGRP_MPLS_NETCONF = 29,
-RTNLGRP_IPV4_MROUTE_R = 30,
-RTNLGRP_IPV6_MROUTE_R = 31,
-RTNLGRP_NEXTHOP = 32,
-RTNLGRP_BRVLAN = 33,
-RTNLGRP_MCTP_IFADDR = 34,
-RTNLGRP_TUNNEL = 35,
-RTNLGRP_STATS = 36,
-__RTNLGRP_MAX = 37,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcamsg {
-pub tca_family: crate::ctypes::c_uchar,
-pub tca__pad1: crate::ctypes::c_uchar,
-pub tca__pad2: crate::ctypes::c_ushort,
-}
-pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC;
-pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB;
-pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS;
-pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT;
-pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA;
-pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_66 {
-TCA_ROOT_UNSPEC = 0,
-TCA_ROOT_TAB = 1,
-TCA_ROOT_FLAGS = 2,
-TCA_ROOT_COUNT = 3,
-TCA_ROOT_TIME_DELTA = 4,
-__TCA_ROOT_MAX = 5,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/sparc/errno.rs b/vendor/linux-raw-sys-0.3.2/src/sparc/errno.rs
deleted file mode 100644
index 225b914df..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/sparc/errno.rs
+++ /dev/null
@@ -1,137 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const EPERM: u32 = 1;
-pub const ENOENT: u32 = 2;
-pub const ESRCH: u32 = 3;
-pub const EINTR: u32 = 4;
-pub const EIO: u32 = 5;
-pub const ENXIO: u32 = 6;
-pub const E2BIG: u32 = 7;
-pub const ENOEXEC: u32 = 8;
-pub const EBADF: u32 = 9;
-pub const ECHILD: u32 = 10;
-pub const EAGAIN: u32 = 11;
-pub const ENOMEM: u32 = 12;
-pub const EACCES: u32 = 13;
-pub const EFAULT: u32 = 14;
-pub const ENOTBLK: u32 = 15;
-pub const EBUSY: u32 = 16;
-pub const EEXIST: u32 = 17;
-pub const EXDEV: u32 = 18;
-pub const ENODEV: u32 = 19;
-pub const ENOTDIR: u32 = 20;
-pub const EISDIR: u32 = 21;
-pub const EINVAL: u32 = 22;
-pub const ENFILE: u32 = 23;
-pub const EMFILE: u32 = 24;
-pub const ENOTTY: u32 = 25;
-pub const ETXTBSY: u32 = 26;
-pub const EFBIG: u32 = 27;
-pub const ENOSPC: u32 = 28;
-pub const ESPIPE: u32 = 29;
-pub const EROFS: u32 = 30;
-pub const EMLINK: u32 = 31;
-pub const EPIPE: u32 = 32;
-pub const EDOM: u32 = 33;
-pub const ERANGE: u32 = 34;
-pub const EWOULDBLOCK: u32 = 11;
-pub const EINPROGRESS: u32 = 36;
-pub const EALREADY: u32 = 37;
-pub const ENOTSOCK: u32 = 38;
-pub const EDESTADDRREQ: u32 = 39;
-pub const EMSGSIZE: u32 = 40;
-pub const EPROTOTYPE: u32 = 41;
-pub const ENOPROTOOPT: u32 = 42;
-pub const EPROTONOSUPPORT: u32 = 43;
-pub const ESOCKTNOSUPPORT: u32 = 44;
-pub const EOPNOTSUPP: u32 = 45;
-pub const EPFNOSUPPORT: u32 = 46;
-pub const EAFNOSUPPORT: u32 = 47;
-pub const EADDRINUSE: u32 = 48;
-pub const EADDRNOTAVAIL: u32 = 49;
-pub const ENETDOWN: u32 = 50;
-pub const ENETUNREACH: u32 = 51;
-pub const ENETRESET: u32 = 52;
-pub const ECONNABORTED: u32 = 53;
-pub const ECONNRESET: u32 = 54;
-pub const ENOBUFS: u32 = 55;
-pub const EISCONN: u32 = 56;
-pub const ENOTCONN: u32 = 57;
-pub const ESHUTDOWN: u32 = 58;
-pub const ETOOMANYREFS: u32 = 59;
-pub const ETIMEDOUT: u32 = 60;
-pub const ECONNREFUSED: u32 = 61;
-pub const ELOOP: u32 = 62;
-pub const ENAMETOOLONG: u32 = 63;
-pub const EHOSTDOWN: u32 = 64;
-pub const EHOSTUNREACH: u32 = 65;
-pub const ENOTEMPTY: u32 = 66;
-pub const EPROCLIM: u32 = 67;
-pub const EUSERS: u32 = 68;
-pub const EDQUOT: u32 = 69;
-pub const ESTALE: u32 = 70;
-pub const EREMOTE: u32 = 71;
-pub const ENOSTR: u32 = 72;
-pub const ETIME: u32 = 73;
-pub const ENOSR: u32 = 74;
-pub const ENOMSG: u32 = 75;
-pub const EBADMSG: u32 = 76;
-pub const EIDRM: u32 = 77;
-pub const EDEADLK: u32 = 78;
-pub const ENOLCK: u32 = 79;
-pub const ENONET: u32 = 80;
-pub const ERREMOTE: u32 = 81;
-pub const ENOLINK: u32 = 82;
-pub const EADV: u32 = 83;
-pub const ESRMNT: u32 = 84;
-pub const ECOMM: u32 = 85;
-pub const EPROTO: u32 = 86;
-pub const EMULTIHOP: u32 = 87;
-pub const EDOTDOT: u32 = 88;
-pub const EREMCHG: u32 = 89;
-pub const ENOSYS: u32 = 90;
-pub const ESTRPIPE: u32 = 91;
-pub const EOVERFLOW: u32 = 92;
-pub const EBADFD: u32 = 93;
-pub const ECHRNG: u32 = 94;
-pub const EL2NSYNC: u32 = 95;
-pub const EL3HLT: u32 = 96;
-pub const EL3RST: u32 = 97;
-pub const ELNRNG: u32 = 98;
-pub const EUNATCH: u32 = 99;
-pub const ENOCSI: u32 = 100;
-pub const EL2HLT: u32 = 101;
-pub const EBADE: u32 = 102;
-pub const EBADR: u32 = 103;
-pub const EXFULL: u32 = 104;
-pub const ENOANO: u32 = 105;
-pub const EBADRQC: u32 = 106;
-pub const EBADSLT: u32 = 107;
-pub const EDEADLOCK: u32 = 108;
-pub const EBFONT: u32 = 109;
-pub const ELIBEXEC: u32 = 110;
-pub const ENODATA: u32 = 111;
-pub const ELIBBAD: u32 = 112;
-pub const ENOPKG: u32 = 113;
-pub const ELIBACC: u32 = 114;
-pub const ENOTUNIQ: u32 = 115;
-pub const ERESTART: u32 = 116;
-pub const EUCLEAN: u32 = 117;
-pub const ENOTNAM: u32 = 118;
-pub const ENAVAIL: u32 = 119;
-pub const EISNAM: u32 = 120;
-pub const EREMOTEIO: u32 = 121;
-pub const EILSEQ: u32 = 122;
-pub const ELIBMAX: u32 = 123;
-pub const ELIBSCN: u32 = 124;
-pub const ENOMEDIUM: u32 = 125;
-pub const EMEDIUMTYPE: u32 = 126;
-pub const ECANCELED: u32 = 127;
-pub const ENOKEY: u32 = 128;
-pub const EKEYEXPIRED: u32 = 129;
-pub const EKEYREVOKED: u32 = 130;
-pub const EKEYREJECTED: u32 = 131;
-pub const EOWNERDEAD: u32 = 132;
-pub const ENOTRECOVERABLE: u32 = 133;
-pub const ERFKILL: u32 = 134;
-pub const EHWPOISON: u32 = 135;
diff --git a/vendor/linux-raw-sys-0.3.2/src/sparc/general.rs b/vendor/linux-raw-sys-0.3.2/src/sparc/general.rs
deleted file mode 100644
index ca52d891e..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/sparc/general.rs
+++ /dev/null
@@ -1,5642 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
-pub struct __BindgenBitfieldUnit<Storage> {
-storage: Storage,
-}
-impl<Storage> __BindgenBitfieldUnit<Storage> {
-#[inline]
-pub const fn new(storage: Storage) -> Self {
-Self { storage }
-}
-}
-impl<Storage> __BindgenBitfieldUnit<Storage>
-where
-Storage: AsRef<[u8]> + AsMut<[u8]>,
-{
-#[inline]
-pub fn get_bit(&self, index: usize) -> bool {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = self.storage.as_ref()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-byte & mask == mask
-}
-#[inline]
-pub fn set_bit(&mut self, index: usize, val: bool) {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = &mut self.storage.as_mut()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-if val {
-*byte |= mask;
-} else {
-*byte &= !mask;
-}
-}
-#[inline]
-pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-let mut val = 0;
-for i in 0..(bit_width as usize) {
-if self.get_bit(i + bit_offset) {
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-val |= 1 << index;
-}
-}
-val
-}
-#[inline]
-pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-for i in 0..(bit_width as usize) {
-let mask = 1 << i;
-let val_bit_is_set = val & mask == mask;
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-self.set_bit(index + bit_offset, val_bit_is_set);
-}
-}
-}
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-#[repr(C)]
-pub struct __BindgenUnionField<T>(::core::marker::PhantomData<T>);
-impl<T> __BindgenUnionField<T> {
-#[inline]
-pub const fn new() -> Self {
-__BindgenUnionField(::core::marker::PhantomData)
-}
-#[inline]
-pub unsafe fn as_ref(&self) -> &T {
-::core::mem::transmute(self)
-}
-#[inline]
-pub unsafe fn as_mut(&mut self) -> &mut T {
-::core::mem::transmute(self)
-}
-}
-impl<T> ::core::default::Default for __BindgenUnionField<T> {
-#[inline]
-fn default() -> Self {
-Self::new()
-}
-}
-impl<T> ::core::clone::Clone for __BindgenUnionField<T> {
-#[inline]
-fn clone(&self) -> Self {
-Self::new()
-}
-}
-impl<T> ::core::marker::Copy for __BindgenUnionField<T> {}
-impl<T> ::core::fmt::Debug for __BindgenUnionField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__BindgenUnionField")
-}
-}
-impl<T> ::core::hash::Hash for __BindgenUnionField<T> {
-fn hash<H: ::core::hash::Hasher>(&self, _state: &mut H) {}
-}
-impl<T> ::core::cmp::PartialEq for __BindgenUnionField<T> {
-fn eq(&self, _other: &__BindgenUnionField<T>) -> bool {
-true
-}
-}
-impl<T> ::core::cmp::Eq for __BindgenUnionField<T> {}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const AT_SYSINFO_EHDR: u32 = 33;
-pub const AT_ADI_BLKSZ: u32 = 48;
-pub const AT_ADI_NBITS: u32 = 49;
-pub const AT_ADI_UEONADI: u32 = 50;
-pub const AT_VECTOR_SIZE_ARCH: u32 = 4;
-pub const AT_NULL: u32 = 0;
-pub const AT_IGNORE: u32 = 1;
-pub const AT_EXECFD: u32 = 2;
-pub const AT_PHDR: u32 = 3;
-pub const AT_PHENT: u32 = 4;
-pub const AT_PHNUM: u32 = 5;
-pub const AT_PAGESZ: u32 = 6;
-pub const AT_BASE: u32 = 7;
-pub const AT_FLAGS: u32 = 8;
-pub const AT_ENTRY: u32 = 9;
-pub const AT_NOTELF: u32 = 10;
-pub const AT_UID: u32 = 11;
-pub const AT_EUID: u32 = 12;
-pub const AT_GID: u32 = 13;
-pub const AT_EGID: u32 = 14;
-pub const AT_PLATFORM: u32 = 15;
-pub const AT_HWCAP: u32 = 16;
-pub const AT_CLKTCK: u32 = 17;
-pub const AT_SECURE: u32 = 23;
-pub const AT_BASE_PLATFORM: u32 = 24;
-pub const AT_RANDOM: u32 = 25;
-pub const AT_HWCAP2: u32 = 26;
-pub const AT_EXECFN: u32 = 31;
-pub const AT_MINSIGSTKSZ: u32 = 51;
-pub const __BITS_PER_LONG: u32 = 32;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S_1: u32 = 1;
-pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798;
-pub const _LINUX_CAPABILITY_U32S_2: u32 = 2;
-pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514;
-pub const _LINUX_CAPABILITY_U32S_3: u32 = 2;
-pub const VFS_CAP_REVISION_MASK: u32 = 4278190080;
-pub const VFS_CAP_REVISION_SHIFT: u32 = 24;
-pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081;
-pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1;
-pub const VFS_CAP_REVISION_1: u32 = 16777216;
-pub const VFS_CAP_U32_1: u32 = 1;
-pub const VFS_CAP_REVISION_2: u32 = 33554432;
-pub const VFS_CAP_U32_2: u32 = 2;
-pub const VFS_CAP_REVISION_3: u32 = 50331648;
-pub const VFS_CAP_U32_3: u32 = 2;
-pub const VFS_CAP_U32: u32 = 2;
-pub const VFS_CAP_REVISION: u32 = 50331648;
-pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S: u32 = 1;
-pub const CAP_CHOWN: u32 = 0;
-pub const CAP_DAC_OVERRIDE: u32 = 1;
-pub const CAP_DAC_READ_SEARCH: u32 = 2;
-pub const CAP_FOWNER: u32 = 3;
-pub const CAP_FSETID: u32 = 4;
-pub const CAP_KILL: u32 = 5;
-pub const CAP_SETGID: u32 = 6;
-pub const CAP_SETUID: u32 = 7;
-pub const CAP_SETPCAP: u32 = 8;
-pub const CAP_LINUX_IMMUTABLE: u32 = 9;
-pub const CAP_NET_BIND_SERVICE: u32 = 10;
-pub const CAP_NET_BROADCAST: u32 = 11;
-pub const CAP_NET_ADMIN: u32 = 12;
-pub const CAP_NET_RAW: u32 = 13;
-pub const CAP_IPC_LOCK: u32 = 14;
-pub const CAP_IPC_OWNER: u32 = 15;
-pub const CAP_SYS_MODULE: u32 = 16;
-pub const CAP_SYS_RAWIO: u32 = 17;
-pub const CAP_SYS_CHROOT: u32 = 18;
-pub const CAP_SYS_PTRACE: u32 = 19;
-pub const CAP_SYS_PACCT: u32 = 20;
-pub const CAP_SYS_ADMIN: u32 = 21;
-pub const CAP_SYS_BOOT: u32 = 22;
-pub const CAP_SYS_NICE: u32 = 23;
-pub const CAP_SYS_RESOURCE: u32 = 24;
-pub const CAP_SYS_TIME: u32 = 25;
-pub const CAP_SYS_TTY_CONFIG: u32 = 26;
-pub const CAP_MKNOD: u32 = 27;
-pub const CAP_LEASE: u32 = 28;
-pub const CAP_AUDIT_WRITE: u32 = 29;
-pub const CAP_AUDIT_CONTROL: u32 = 30;
-pub const CAP_SETFCAP: u32 = 31;
-pub const CAP_MAC_OVERRIDE: u32 = 32;
-pub const CAP_MAC_ADMIN: u32 = 33;
-pub const CAP_SYSLOG: u32 = 34;
-pub const CAP_WAKE_ALARM: u32 = 35;
-pub const CAP_BLOCK_SUSPEND: u32 = 36;
-pub const CAP_AUDIT_READ: u32 = 37;
-pub const CAP_PERFMON: u32 = 38;
-pub const CAP_BPF: u32 = 39;
-pub const CAP_CHECKPOINT_RESTORE: u32 = 40;
-pub const CAP_LAST_CAP: u32 = 40;
-pub const O_APPEND: u32 = 8;
-pub const FASYNC: u32 = 64;
-pub const O_CREAT: u32 = 512;
-pub const O_TRUNC: u32 = 1024;
-pub const O_EXCL: u32 = 2048;
-pub const O_DSYNC: u32 = 8192;
-pub const O_NONBLOCK: u32 = 16384;
-pub const O_NDELAY: u32 = 16388;
-pub const O_NOCTTY: u32 = 32768;
-pub const O_LARGEFILE: u32 = 262144;
-pub const O_DIRECT: u32 = 1048576;
-pub const O_NOATIME: u32 = 2097152;
-pub const O_CLOEXEC: u32 = 4194304;
-pub const __O_SYNC: u32 = 8388608;
-pub const O_SYNC: u32 = 8396800;
-pub const O_PATH: u32 = 16777216;
-pub const __O_TMPFILE: u32 = 33554432;
-pub const F_GETOWN: u32 = 5;
-pub const F_SETOWN: u32 = 6;
-pub const F_GETLK: u32 = 7;
-pub const F_SETLK: u32 = 8;
-pub const F_SETLKW: u32 = 9;
-pub const F_RDLCK: u32 = 1;
-pub const F_WRLCK: u32 = 2;
-pub const F_UNLCK: u32 = 3;
-pub const O_ACCMODE: u32 = 3;
-pub const O_RDONLY: u32 = 0;
-pub const O_WRONLY: u32 = 1;
-pub const O_RDWR: u32 = 2;
-pub const O_DIRECTORY: u32 = 65536;
-pub const O_NOFOLLOW: u32 = 131072;
-pub const O_TMPFILE: u32 = 33619968;
-pub const O_TMPFILE_MASK: u32 = 33620480;
-pub const F_DUPFD: u32 = 0;
-pub const F_GETFD: u32 = 1;
-pub const F_SETFD: u32 = 2;
-pub const F_GETFL: u32 = 3;
-pub const F_SETFL: u32 = 4;
-pub const F_SETSIG: u32 = 10;
-pub const F_GETSIG: u32 = 11;
-pub const F_GETLK64: u32 = 12;
-pub const F_SETLK64: u32 = 13;
-pub const F_SETLKW64: u32 = 14;
-pub const F_SETOWN_EX: u32 = 15;
-pub const F_GETOWN_EX: u32 = 16;
-pub const F_GETOWNER_UIDS: u32 = 17;
-pub const F_OFD_GETLK: u32 = 36;
-pub const F_OFD_SETLK: u32 = 37;
-pub const F_OFD_SETLKW: u32 = 38;
-pub const F_OWNER_TID: u32 = 0;
-pub const F_OWNER_PID: u32 = 1;
-pub const F_OWNER_PGRP: u32 = 2;
-pub const FD_CLOEXEC: u32 = 1;
-pub const F_EXLCK: u32 = 4;
-pub const F_SHLCK: u32 = 8;
-pub const LOCK_SH: u32 = 1;
-pub const LOCK_EX: u32 = 2;
-pub const LOCK_NB: u32 = 4;
-pub const LOCK_UN: u32 = 8;
-pub const LOCK_MAND: u32 = 32;
-pub const LOCK_READ: u32 = 64;
-pub const LOCK_WRITE: u32 = 128;
-pub const LOCK_RW: u32 = 192;
-pub const F_LINUX_SPECIFIC_BASE: u32 = 1024;
-pub const RESOLVE_NO_XDEV: u32 = 1;
-pub const RESOLVE_NO_MAGICLINKS: u32 = 2;
-pub const RESOLVE_NO_SYMLINKS: u32 = 4;
-pub const RESOLVE_BENEATH: u32 = 8;
-pub const RESOLVE_IN_ROOT: u32 = 16;
-pub const RESOLVE_CACHED: u32 = 32;
-pub const F_SETLEASE: u32 = 1024;
-pub const F_GETLEASE: u32 = 1025;
-pub const F_CANCELLK: u32 = 1029;
-pub const F_DUPFD_CLOEXEC: u32 = 1030;
-pub const F_NOTIFY: u32 = 1026;
-pub const F_SETPIPE_SZ: u32 = 1031;
-pub const F_GETPIPE_SZ: u32 = 1032;
-pub const F_ADD_SEALS: u32 = 1033;
-pub const F_GET_SEALS: u32 = 1034;
-pub const F_SEAL_SEAL: u32 = 1;
-pub const F_SEAL_SHRINK: u32 = 2;
-pub const F_SEAL_GROW: u32 = 4;
-pub const F_SEAL_WRITE: u32 = 8;
-pub const F_SEAL_FUTURE_WRITE: u32 = 16;
-pub const F_GET_RW_HINT: u32 = 1035;
-pub const F_SET_RW_HINT: u32 = 1036;
-pub const F_GET_FILE_RW_HINT: u32 = 1037;
-pub const F_SET_FILE_RW_HINT: u32 = 1038;
-pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const RWH_WRITE_LIFE_NONE: u32 = 1;
-pub const RWH_WRITE_LIFE_SHORT: u32 = 2;
-pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3;
-pub const RWH_WRITE_LIFE_LONG: u32 = 4;
-pub const RWH_WRITE_LIFE_EXTREME: u32 = 5;
-pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const DN_ACCESS: u32 = 1;
-pub const DN_MODIFY: u32 = 2;
-pub const DN_CREATE: u32 = 4;
-pub const DN_DELETE: u32 = 8;
-pub const DN_RENAME: u32 = 16;
-pub const DN_ATTRIB: u32 = 32;
-pub const DN_MULTISHOT: u32 = 2147483648;
-pub const AT_FDCWD: i32 = -100;
-pub const AT_SYMLINK_NOFOLLOW: u32 = 256;
-pub const AT_EACCESS: u32 = 512;
-pub const AT_REMOVEDIR: u32 = 512;
-pub const AT_SYMLINK_FOLLOW: u32 = 1024;
-pub const AT_NO_AUTOMOUNT: u32 = 2048;
-pub const AT_EMPTY_PATH: u32 = 4096;
-pub const AT_STATX_SYNC_TYPE: u32 = 24576;
-pub const AT_STATX_SYNC_AS_STAT: u32 = 0;
-pub const AT_STATX_FORCE_SYNC: u32 = 8192;
-pub const AT_STATX_DONT_SYNC: u32 = 16384;
-pub const AT_RECURSIVE: u32 = 32768;
-pub const EPOLL_CLOEXEC: u32 = 4194304;
-pub const EPOLL_CTL_ADD: u32 = 1;
-pub const EPOLL_CTL_DEL: u32 = 2;
-pub const EPOLL_CTL_MOD: u32 = 3;
-pub const POSIX_FADV_NORMAL: u32 = 0;
-pub const POSIX_FADV_RANDOM: u32 = 1;
-pub const POSIX_FADV_SEQUENTIAL: u32 = 2;
-pub const POSIX_FADV_WILLNEED: u32 = 3;
-pub const POSIX_FADV_DONTNEED: u32 = 4;
-pub const POSIX_FADV_NOREUSE: u32 = 5;
-pub const FALLOC_FL_KEEP_SIZE: u32 = 1;
-pub const FALLOC_FL_PUNCH_HOLE: u32 = 2;
-pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4;
-pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8;
-pub const FALLOC_FL_ZERO_RANGE: u32 = 16;
-pub const FALLOC_FL_INSERT_RANGE: u32 = 32;
-pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64;
-pub const NR_OPEN: u32 = 1024;
-pub const NGROUPS_MAX: u32 = 65536;
-pub const ARG_MAX: u32 = 131072;
-pub const LINK_MAX: u32 = 127;
-pub const MAX_CANON: u32 = 255;
-pub const MAX_INPUT: u32 = 255;
-pub const NAME_MAX: u32 = 255;
-pub const PATH_MAX: u32 = 4096;
-pub const PIPE_BUF: u32 = 4096;
-pub const XATTR_NAME_MAX: u32 = 255;
-pub const XATTR_SIZE_MAX: u32 = 65536;
-pub const XATTR_LIST_MAX: u32 = 65536;
-pub const RTSIG_MAX: u32 = 32;
-pub const _IOC_NRBITS: u32 = 8;
-pub const _IOC_TYPEBITS: u32 = 8;
-pub const _IOC_SIZEBITS: u32 = 13;
-pub const _IOC_DIRBITS: u32 = 3;
-pub const _IOC_NRMASK: u32 = 255;
-pub const _IOC_TYPEMASK: u32 = 255;
-pub const _IOC_SIZEMASK: u32 = 8191;
-pub const _IOC_XSIZEMASK: u32 = 16383;
-pub const _IOC_DIRMASK: u32 = 7;
-pub const _IOC_NRSHIFT: u32 = 0;
-pub const _IOC_TYPESHIFT: u32 = 8;
-pub const _IOC_SIZESHIFT: u32 = 16;
-pub const _IOC_DIRSHIFT: u32 = 29;
-pub const _IOC_NONE: u32 = 1;
-pub const _IOC_READ: u32 = 2;
-pub const _IOC_WRITE: u32 = 4;
-pub const IOC_IN: u32 = 2147483648;
-pub const IOC_OUT: u32 = 1073741824;
-pub const IOC_INOUT: u32 = 3221225472;
-pub const IOCSIZE_MASK: u32 = 1073676288;
-pub const IOCSIZE_SHIFT: u32 = 16;
-pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16;
-pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1;
-pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4;
-pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5;
-pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6;
-pub const FSCRYPT_MODE_SM4_XTS: u32 = 7;
-pub const FSCRYPT_MODE_SM4_CTS: u32 = 8;
-pub const FSCRYPT_MODE_ADIANTUM: u32 = 9;
-pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10;
-pub const FSCRYPT_POLICY_V1: u32 = 0;
-pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64;
-pub const FSCRYPT_POLICY_V2: u32 = 2;
-pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16;
-pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1;
-pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1;
-pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3;
-pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1;
-pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FS_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FS_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FS_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FS_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FS_POLICY_FLAGS_VALID: u32 = 7;
-pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0;
-pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1;
-pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2;
-pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3;
-pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4;
-pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5;
-pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6;
-pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9;
-pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FS_MAX_KEY_SIZE: u32 = 64;
-pub const MS_RDONLY: u32 = 1;
-pub const MS_NOSUID: u32 = 2;
-pub const MS_NODEV: u32 = 4;
-pub const MS_NOEXEC: u32 = 8;
-pub const MS_SYNCHRONOUS: u32 = 16;
-pub const MS_REMOUNT: u32 = 32;
-pub const MS_MANDLOCK: u32 = 64;
-pub const MS_DIRSYNC: u32 = 128;
-pub const MS_NOSYMFOLLOW: u32 = 256;
-pub const MS_NOATIME: u32 = 1024;
-pub const MS_NODIRATIME: u32 = 2048;
-pub const MS_BIND: u32 = 4096;
-pub const MS_MOVE: u32 = 8192;
-pub const MS_REC: u32 = 16384;
-pub const MS_VERBOSE: u32 = 32768;
-pub const MS_SILENT: u32 = 32768;
-pub const MS_POSIXACL: u32 = 65536;
-pub const MS_UNBINDABLE: u32 = 131072;
-pub const MS_PRIVATE: u32 = 262144;
-pub const MS_SLAVE: u32 = 524288;
-pub const MS_SHARED: u32 = 1048576;
-pub const MS_RELATIME: u32 = 2097152;
-pub const MS_KERNMOUNT: u32 = 4194304;
-pub const MS_I_VERSION: u32 = 8388608;
-pub const MS_STRICTATIME: u32 = 16777216;
-pub const MS_LAZYTIME: u32 = 33554432;
-pub const MS_SUBMOUNT: u32 = 67108864;
-pub const MS_NOREMOTELOCK: u32 = 134217728;
-pub const MS_NOSEC: u32 = 268435456;
-pub const MS_BORN: u32 = 536870912;
-pub const MS_ACTIVE: u32 = 1073741824;
-pub const MS_NOUSER: u32 = 2147483648;
-pub const MS_RMT_MASK: u32 = 41943121;
-pub const MS_MGC_VAL: u32 = 3236757504;
-pub const MS_MGC_MSK: u32 = 4294901760;
-pub const OPEN_TREE_CLONE: u32 = 1;
-pub const OPEN_TREE_CLOEXEC: u32 = 4194304;
-pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1;
-pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2;
-pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4;
-pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16;
-pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32;
-pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64;
-pub const MOVE_MOUNT_SET_GROUP: u32 = 256;
-pub const MOVE_MOUNT__MASK: u32 = 375;
-pub const FSOPEN_CLOEXEC: u32 = 1;
-pub const FSPICK_CLOEXEC: u32 = 1;
-pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2;
-pub const FSPICK_NO_AUTOMOUNT: u32 = 4;
-pub const FSPICK_EMPTY_PATH: u32 = 8;
-pub const FSMOUNT_CLOEXEC: u32 = 1;
-pub const MOUNT_ATTR_RDONLY: u32 = 1;
-pub const MOUNT_ATTR_NOSUID: u32 = 2;
-pub const MOUNT_ATTR_NODEV: u32 = 4;
-pub const MOUNT_ATTR_NOEXEC: u32 = 8;
-pub const MOUNT_ATTR__ATIME: u32 = 112;
-pub const MOUNT_ATTR_RELATIME: u32 = 0;
-pub const MOUNT_ATTR_NOATIME: u32 = 16;
-pub const MOUNT_ATTR_STRICTATIME: u32 = 32;
-pub const MOUNT_ATTR_NODIRATIME: u32 = 128;
-pub const MOUNT_ATTR_IDMAP: u32 = 1048576;
-pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152;
-pub const MOUNT_ATTR_SIZE_VER0: u32 = 32;
-pub const INR_OPEN_CUR: u32 = 1024;
-pub const INR_OPEN_MAX: u32 = 4096;
-pub const BLOCK_SIZE_BITS: u32 = 10;
-pub const BLOCK_SIZE: u32 = 1024;
-pub const SEEK_SET: u32 = 0;
-pub const SEEK_CUR: u32 = 1;
-pub const SEEK_END: u32 = 2;
-pub const SEEK_DATA: u32 = 3;
-pub const SEEK_HOLE: u32 = 4;
-pub const SEEK_MAX: u32 = 4;
-pub const RENAME_NOREPLACE: u32 = 1;
-pub const RENAME_EXCHANGE: u32 = 2;
-pub const RENAME_WHITEOUT: u32 = 4;
-pub const FILE_DEDUPE_RANGE_SAME: u32 = 0;
-pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1;
-pub const NR_FILE: u32 = 8192;
-pub const FS_XFLAG_REALTIME: u32 = 1;
-pub const FS_XFLAG_PREALLOC: u32 = 2;
-pub const FS_XFLAG_IMMUTABLE: u32 = 8;
-pub const FS_XFLAG_APPEND: u32 = 16;
-pub const FS_XFLAG_SYNC: u32 = 32;
-pub const FS_XFLAG_NOATIME: u32 = 64;
-pub const FS_XFLAG_NODUMP: u32 = 128;
-pub const FS_XFLAG_RTINHERIT: u32 = 256;
-pub const FS_XFLAG_PROJINHERIT: u32 = 512;
-pub const FS_XFLAG_NOSYMLINKS: u32 = 1024;
-pub const FS_XFLAG_EXTSIZE: u32 = 2048;
-pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096;
-pub const FS_XFLAG_NODEFRAG: u32 = 8192;
-pub const FS_XFLAG_FILESTREAM: u32 = 16384;
-pub const FS_XFLAG_DAX: u32 = 32768;
-pub const FS_XFLAG_COWEXTSIZE: u32 = 65536;
-pub const FS_XFLAG_HASATTR: u32 = 2147483648;
-pub const BMAP_IOCTL: u32 = 1;
-pub const FSLABEL_MAX: u32 = 256;
-pub const FS_SECRM_FL: u32 = 1;
-pub const FS_UNRM_FL: u32 = 2;
-pub const FS_COMPR_FL: u32 = 4;
-pub const FS_SYNC_FL: u32 = 8;
-pub const FS_IMMUTABLE_FL: u32 = 16;
-pub const FS_APPEND_FL: u32 = 32;
-pub const FS_NODUMP_FL: u32 = 64;
-pub const FS_NOATIME_FL: u32 = 128;
-pub const FS_DIRTY_FL: u32 = 256;
-pub const FS_COMPRBLK_FL: u32 = 512;
-pub const FS_NOCOMP_FL: u32 = 1024;
-pub const FS_ENCRYPT_FL: u32 = 2048;
-pub const FS_BTREE_FL: u32 = 4096;
-pub const FS_INDEX_FL: u32 = 4096;
-pub const FS_IMAGIC_FL: u32 = 8192;
-pub const FS_JOURNAL_DATA_FL: u32 = 16384;
-pub const FS_NOTAIL_FL: u32 = 32768;
-pub const FS_DIRSYNC_FL: u32 = 65536;
-pub const FS_TOPDIR_FL: u32 = 131072;
-pub const FS_HUGE_FILE_FL: u32 = 262144;
-pub const FS_EXTENT_FL: u32 = 524288;
-pub const FS_VERITY_FL: u32 = 1048576;
-pub const FS_EA_INODE_FL: u32 = 2097152;
-pub const FS_EOFBLOCKS_FL: u32 = 4194304;
-pub const FS_NOCOW_FL: u32 = 8388608;
-pub const FS_DAX_FL: u32 = 33554432;
-pub const FS_INLINE_DATA_FL: u32 = 268435456;
-pub const FS_PROJINHERIT_FL: u32 = 536870912;
-pub const FS_CASEFOLD_FL: u32 = 1073741824;
-pub const FS_RESERVED_FL: u32 = 2147483648;
-pub const FS_FL_USER_VISIBLE: u32 = 253951;
-pub const FS_FL_USER_MODIFIABLE: u32 = 229631;
-pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1;
-pub const SYNC_FILE_RANGE_WRITE: u32 = 2;
-pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4;
-pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7;
-pub const FUTEX_WAIT: u32 = 0;
-pub const FUTEX_WAKE: u32 = 1;
-pub const FUTEX_FD: u32 = 2;
-pub const FUTEX_REQUEUE: u32 = 3;
-pub const FUTEX_CMP_REQUEUE: u32 = 4;
-pub const FUTEX_WAKE_OP: u32 = 5;
-pub const FUTEX_LOCK_PI: u32 = 6;
-pub const FUTEX_UNLOCK_PI: u32 = 7;
-pub const FUTEX_TRYLOCK_PI: u32 = 8;
-pub const FUTEX_WAIT_BITSET: u32 = 9;
-pub const FUTEX_WAKE_BITSET: u32 = 10;
-pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11;
-pub const FUTEX_CMP_REQUEUE_PI: u32 = 12;
-pub const FUTEX_LOCK_PI2: u32 = 13;
-pub const FUTEX_PRIVATE_FLAG: u32 = 128;
-pub const FUTEX_CLOCK_REALTIME: u32 = 256;
-pub const FUTEX_CMD_MASK: i32 = -385;
-pub const FUTEX_WAIT_PRIVATE: u32 = 128;
-pub const FUTEX_WAKE_PRIVATE: u32 = 129;
-pub const FUTEX_REQUEUE_PRIVATE: u32 = 131;
-pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132;
-pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133;
-pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134;
-pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141;
-pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135;
-pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136;
-pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137;
-pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138;
-pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139;
-pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140;
-pub const FUTEX_32: u32 = 2;
-pub const FUTEX_WAITV_MAX: u32 = 128;
-pub const FUTEX_WAITERS: u32 = 2147483648;
-pub const FUTEX_OWNER_DIED: u32 = 1073741824;
-pub const FUTEX_TID_MASK: u32 = 1073741823;
-pub const ROBUST_LIST_LIMIT: u32 = 2048;
-pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295;
-pub const FUTEX_OP_SET: u32 = 0;
-pub const FUTEX_OP_ADD: u32 = 1;
-pub const FUTEX_OP_OR: u32 = 2;
-pub const FUTEX_OP_ANDN: u32 = 3;
-pub const FUTEX_OP_XOR: u32 = 4;
-pub const FUTEX_OP_OPARG_SHIFT: u32 = 8;
-pub const FUTEX_OP_CMP_EQ: u32 = 0;
-pub const FUTEX_OP_CMP_NE: u32 = 1;
-pub const FUTEX_OP_CMP_LT: u32 = 2;
-pub const FUTEX_OP_CMP_LE: u32 = 3;
-pub const FUTEX_OP_CMP_GT: u32 = 4;
-pub const FUTEX_OP_CMP_GE: u32 = 5;
-pub const __UAPI_DEF_IF_IFCONF: u32 = 1;
-pub const __UAPI_DEF_IF_IFMAP: u32 = 1;
-pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1;
-pub const __UAPI_DEF_IF_IFREQ: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1;
-pub const __UAPI_DEF_IN_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN_IPPROTO: u32 = 1;
-pub const __UAPI_DEF_IN_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP_MREQ: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1;
-pub const __UAPI_DEF_IN_CLASS: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1;
-pub const __UAPI_DEF_IPV6_MREQ: u32 = 1;
-pub const __UAPI_DEF_IPPROTO_V6: u32 = 1;
-pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1;
-pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1;
-pub const __UAPI_DEF_XATTR: u32 = 1;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const IP_TOS: u32 = 1;
-pub const IP_TTL: u32 = 2;
-pub const IP_HDRINCL: u32 = 3;
-pub const IP_OPTIONS: u32 = 4;
-pub const IP_ROUTER_ALERT: u32 = 5;
-pub const IP_RECVOPTS: u32 = 6;
-pub const IP_RETOPTS: u32 = 7;
-pub const IP_PKTINFO: u32 = 8;
-pub const IP_PKTOPTIONS: u32 = 9;
-pub const IP_MTU_DISCOVER: u32 = 10;
-pub const IP_RECVERR: u32 = 11;
-pub const IP_RECVTTL: u32 = 12;
-pub const IP_RECVTOS: u32 = 13;
-pub const IP_MTU: u32 = 14;
-pub const IP_FREEBIND: u32 = 15;
-pub const IP_IPSEC_POLICY: u32 = 16;
-pub const IP_XFRM_POLICY: u32 = 17;
-pub const IP_PASSSEC: u32 = 18;
-pub const IP_TRANSPARENT: u32 = 19;
-pub const IP_RECVRETOPTS: u32 = 7;
-pub const IP_ORIGDSTADDR: u32 = 20;
-pub const IP_RECVORIGDSTADDR: u32 = 20;
-pub const IP_MINTTL: u32 = 21;
-pub const IP_NODEFRAG: u32 = 22;
-pub const IP_CHECKSUM: u32 = 23;
-pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24;
-pub const IP_RECVFRAGSIZE: u32 = 25;
-pub const IP_RECVERR_RFC4884: u32 = 26;
-pub const IP_PMTUDISC_DONT: u32 = 0;
-pub const IP_PMTUDISC_WANT: u32 = 1;
-pub const IP_PMTUDISC_DO: u32 = 2;
-pub const IP_PMTUDISC_PROBE: u32 = 3;
-pub const IP_PMTUDISC_INTERFACE: u32 = 4;
-pub const IP_PMTUDISC_OMIT: u32 = 5;
-pub const IP_MULTICAST_IF: u32 = 32;
-pub const IP_MULTICAST_TTL: u32 = 33;
-pub const IP_MULTICAST_LOOP: u32 = 34;
-pub const IP_ADD_MEMBERSHIP: u32 = 35;
-pub const IP_DROP_MEMBERSHIP: u32 = 36;
-pub const IP_UNBLOCK_SOURCE: u32 = 37;
-pub const IP_BLOCK_SOURCE: u32 = 38;
-pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39;
-pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40;
-pub const IP_MSFILTER: u32 = 41;
-pub const MCAST_JOIN_GROUP: u32 = 42;
-pub const MCAST_BLOCK_SOURCE: u32 = 43;
-pub const MCAST_UNBLOCK_SOURCE: u32 = 44;
-pub const MCAST_LEAVE_GROUP: u32 = 45;
-pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46;
-pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47;
-pub const MCAST_MSFILTER: u32 = 48;
-pub const IP_MULTICAST_ALL: u32 = 49;
-pub const IP_UNICAST_IF: u32 = 50;
-pub const MCAST_EXCLUDE: u32 = 0;
-pub const MCAST_INCLUDE: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1;
-pub const __SOCK_SIZE__: u32 = 16;
-pub const IN_CLASSA_NET: u32 = 4278190080;
-pub const IN_CLASSA_NSHIFT: u32 = 24;
-pub const IN_CLASSA_HOST: u32 = 16777215;
-pub const IN_CLASSA_MAX: u32 = 128;
-pub const IN_CLASSB_NET: u32 = 4294901760;
-pub const IN_CLASSB_NSHIFT: u32 = 16;
-pub const IN_CLASSB_HOST: u32 = 65535;
-pub const IN_CLASSB_MAX: u32 = 65536;
-pub const IN_CLASSC_NET: u32 = 4294967040;
-pub const IN_CLASSC_NSHIFT: u32 = 8;
-pub const IN_CLASSC_HOST: u32 = 255;
-pub const IN_MULTICAST_NET: u32 = 3758096384;
-pub const IN_CLASSE_NET: u32 = 4294967295;
-pub const IN_CLASSE_NSHIFT: u32 = 0;
-pub const IN_LOOPBACKNET: u32 = 127;
-pub const INADDR_LOOPBACK: u32 = 2130706433;
-pub const INADDR_UNSPEC_GROUP: u32 = 3758096384;
-pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385;
-pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386;
-pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490;
-pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639;
-pub const __BIG_ENDIAN: u32 = 4321;
-pub const ASI_NULL1: u32 = 0;
-pub const ASI_NULL2: u32 = 1;
-pub const ASI_CONTROL: u32 = 2;
-pub const ASI_SEGMAP: u32 = 3;
-pub const ASI_PTE: u32 = 4;
-pub const ASI_HWFLUSHSEG: u32 = 5;
-pub const ASI_HWFLUSHPAGE: u32 = 6;
-pub const ASI_REGMAP: u32 = 6;
-pub const ASI_HWFLUSHCONTEXT: u32 = 7;
-pub const ASI_USERTXT: u32 = 8;
-pub const ASI_KERNELTXT: u32 = 9;
-pub const ASI_USERDATA: u32 = 10;
-pub const ASI_KERNELDATA: u32 = 11;
-pub const ASI_FLUSHSEG: u32 = 12;
-pub const ASI_FLUSHPG: u32 = 13;
-pub const ASI_FLUSHCTX: u32 = 14;
-pub const ASI_M_RES00: u32 = 0;
-pub const ASI_M_UNA01: u32 = 1;
-pub const ASI_M_MXCC: u32 = 2;
-pub const ASI_M_FLUSH_PROBE: u32 = 3;
-pub const ASI_M_MMUREGS: u32 = 4;
-pub const ASI_M_TLBDIAG: u32 = 5;
-pub const ASI_M_DIAGS: u32 = 6;
-pub const ASI_M_IODIAG: u32 = 7;
-pub const ASI_M_USERTXT: u32 = 8;
-pub const ASI_M_KERNELTXT: u32 = 9;
-pub const ASI_M_USERDATA: u32 = 10;
-pub const ASI_M_KERNELDATA: u32 = 11;
-pub const ASI_M_TXTC_TAG: u32 = 12;
-pub const ASI_M_TXTC_DATA: u32 = 13;
-pub const ASI_M_DATAC_TAG: u32 = 14;
-pub const ASI_M_DATAC_DATA: u32 = 15;
-pub const ASI_M_FLUSH_PAGE: u32 = 16;
-pub const ASI_M_FLUSH_SEG: u32 = 17;
-pub const ASI_M_FLUSH_REGION: u32 = 18;
-pub const ASI_M_FLUSH_CTX: u32 = 19;
-pub const ASI_M_FLUSH_USER: u32 = 20;
-pub const ASI_M_BCOPY: u32 = 23;
-pub const ASI_M_IFLUSH_PAGE: u32 = 24;
-pub const ASI_M_IFLUSH_SEG: u32 = 25;
-pub const ASI_M_IFLUSH_REGION: u32 = 26;
-pub const ASI_M_IFLUSH_CTX: u32 = 27;
-pub const ASI_M_IFLUSH_USER: u32 = 28;
-pub const ASI_M_BFILL: u32 = 31;
-pub const ASI_M_BYPASS: u32 = 32;
-pub const ASI_M_FBMEM: u32 = 41;
-pub const ASI_M_VMEUS: u32 = 42;
-pub const ASI_M_VMEPS: u32 = 43;
-pub const ASI_M_VMEUT: u32 = 44;
-pub const ASI_M_VMEPT: u32 = 45;
-pub const ASI_M_SBUS: u32 = 46;
-pub const ASI_M_CTL: u32 = 47;
-pub const ASI_M_FLUSH_IWHOLE: u32 = 49;
-pub const ASI_M_IC_FLCLEAR: u32 = 54;
-pub const ASI_M_DC_FLCLEAR: u32 = 55;
-pub const ASI_M_DCDR: u32 = 57;
-pub const ASI_M_VIKING_TMP1: u32 = 64;
-pub const ASI_M_ACTION: u32 = 76;
-pub const ASI_LEON_NOCACHE: u32 = 1;
-pub const ASI_LEON_DCACHE_MISS: u32 = 1;
-pub const ASI_LEON_CACHEREGS: u32 = 2;
-pub const ASI_LEON_IFLUSH: u32 = 16;
-pub const ASI_LEON_DFLUSH: u32 = 17;
-pub const ASI_LEON_MMUFLUSH: u32 = 24;
-pub const ASI_LEON_MMUREGS: u32 = 25;
-pub const ASI_LEON_BYPASS: u32 = 28;
-pub const ASI_LEON_FLUSH_PAGE: u32 = 16;
-pub const ASI_N: u32 = 4;
-pub const ASI_NL: u32 = 12;
-pub const ASI_AIUP: u32 = 16;
-pub const ASI_AIUS: u32 = 17;
-pub const ASI_AIUPL: u32 = 24;
-pub const ASI_AIUSL: u32 = 25;
-pub const ASI_P: u32 = 128;
-pub const ASI_S: u32 = 129;
-pub const ASI_PNF: u32 = 130;
-pub const ASI_SNF: u32 = 131;
-pub const ASI_PL: u32 = 136;
-pub const ASI_SL: u32 = 137;
-pub const ASI_PNFL: u32 = 138;
-pub const ASI_SNFL: u32 = 139;
-pub const ASI_MCD_PRIV_PRIMARY: u32 = 2;
-pub const ASI_MCD_REAL: u32 = 5;
-pub const ASI_PHYS_USE_EC: u32 = 20;
-pub const ASI_PHYS_BYPASS_EC_E: u32 = 21;
-pub const ASI_BLK_AIUP_4V: u32 = 22;
-pub const ASI_BLK_AIUS_4V: u32 = 23;
-pub const ASI_PHYS_USE_EC_L: u32 = 28;
-pub const ASI_PHYS_BYPASS_EC_E_L: u32 = 29;
-pub const ASI_BLK_AIUP_L_4V: u32 = 30;
-pub const ASI_BLK_AIUS_L_4V: u32 = 31;
-pub const ASI_SCRATCHPAD: u32 = 32;
-pub const ASI_MMU: u32 = 33;
-pub const ASI_BLK_INIT_QUAD_LDD_AIUS: u32 = 35;
-pub const ASI_NUCLEUS_QUAD_LDD: u32 = 36;
-pub const ASI_QUEUE: u32 = 37;
-pub const ASI_QUAD_LDD_PHYS_4V: u32 = 38;
-pub const ASI_NUCLEUS_QUAD_LDD_L: u32 = 44;
-pub const ASI_QUAD_LDD_PHYS_L_4V: u32 = 46;
-pub const ASI_PCACHE_DATA_STATUS: u32 = 48;
-pub const ASI_PCACHE_DATA: u32 = 49;
-pub const ASI_PCACHE_TAG: u32 = 50;
-pub const ASI_PCACHE_SNOOP_TAG: u32 = 51;
-pub const ASI_QUAD_LDD_PHYS: u32 = 52;
-pub const ASI_WCACHE_VALID_BITS: u32 = 56;
-pub const ASI_WCACHE_DATA: u32 = 57;
-pub const ASI_WCACHE_TAG: u32 = 58;
-pub const ASI_WCACHE_SNOOP_TAG: u32 = 59;
-pub const ASI_QUAD_LDD_PHYS_L: u32 = 60;
-pub const ASI_SRAM_FAST_INIT: u32 = 64;
-pub const ASI_CORE_AVAILABLE: u32 = 65;
-pub const ASI_CORE_ENABLE_STAT: u32 = 65;
-pub const ASI_CORE_ENABLE: u32 = 65;
-pub const ASI_XIR_STEERING: u32 = 65;
-pub const ASI_CORE_RUNNING_RW: u32 = 65;
-pub const ASI_CORE_RUNNING_W1S: u32 = 65;
-pub const ASI_CORE_RUNNING_W1C: u32 = 65;
-pub const ASI_CORE_RUNNING_STAT: u32 = 65;
-pub const ASI_CMT_ERROR_STEERING: u32 = 65;
-pub const ASI_DCACHE_INVALIDATE: u32 = 66;
-pub const ASI_DCACHE_UTAG: u32 = 67;
-pub const ASI_DCACHE_SNOOP_TAG: u32 = 68;
-pub const ASI_LSU_CONTROL: u32 = 69;
-pub const ASI_DCU_CONTROL_REG: u32 = 69;
-pub const ASI_DCACHE_DATA: u32 = 70;
-pub const ASI_DCACHE_TAG: u32 = 71;
-pub const ASI_INTR_DISPATCH_STAT: u32 = 72;
-pub const ASI_INTR_RECEIVE: u32 = 73;
-pub const ASI_UPA_CONFIG: u32 = 74;
-pub const ASI_JBUS_CONFIG: u32 = 74;
-pub const ASI_SAFARI_CONFIG: u32 = 74;
-pub const ASI_SAFARI_ADDRESS: u32 = 74;
-pub const ASI_ESTATE_ERROR_EN: u32 = 75;
-pub const ASI_AFSR: u32 = 76;
-pub const ASI_AFAR: u32 = 77;
-pub const ASI_EC_TAG_DATA: u32 = 78;
-pub const ASI_IMMU: u32 = 80;
-pub const ASI_IMMU_TSB_8KB_PTR: u32 = 81;
-pub const ASI_IMMU_TSB_64KB_PTR: u32 = 82;
-pub const ASI_ITLB_DATA_IN: u32 = 84;
-pub const ASI_ITLB_DATA_ACCESS: u32 = 85;
-pub const ASI_ITLB_TAG_READ: u32 = 86;
-pub const ASI_IMMU_DEMAP: u32 = 87;
-pub const ASI_DMMU: u32 = 88;
-pub const ASI_DMMU_TSB_8KB_PTR: u32 = 89;
-pub const ASI_DMMU_TSB_64KB_PTR: u32 = 90;
-pub const ASI_DMMU_TSB_DIRECT_PTR: u32 = 91;
-pub const ASI_DTLB_DATA_IN: u32 = 92;
-pub const ASI_DTLB_DATA_ACCESS: u32 = 93;
-pub const ASI_DTLB_TAG_READ: u32 = 94;
-pub const ASI_DMMU_DEMAP: u32 = 95;
-pub const ASI_IIU_INST_TRAP: u32 = 96;
-pub const ASI_INTR_ID: u32 = 99;
-pub const ASI_CORE_ID: u32 = 99;
-pub const ASI_CESR_ID: u32 = 99;
-pub const ASI_IC_INSTR: u32 = 102;
-pub const ASI_IC_TAG: u32 = 103;
-pub const ASI_IC_STAG: u32 = 104;
-pub const ASI_IC_PRE_DECODE: u32 = 110;
-pub const ASI_IC_NEXT_FIELD: u32 = 111;
-pub const ASI_BRPRED_ARRAY: u32 = 111;
-pub const ASI_BLK_AIUP: u32 = 112;
-pub const ASI_BLK_AIUS: u32 = 113;
-pub const ASI_MCU_CTRL_REG: u32 = 114;
-pub const ASI_EC_DATA: u32 = 116;
-pub const ASI_EC_CTRL: u32 = 117;
-pub const ASI_EC_W: u32 = 118;
-pub const ASI_UDB_ERROR_W: u32 = 119;
-pub const ASI_UDB_CONTROL_W: u32 = 119;
-pub const ASI_INTR_W: u32 = 119;
-pub const ASI_INTR_DATAN_W: u32 = 119;
-pub const ASI_INTR_DISPATCH_W: u32 = 119;
-pub const ASI_BLK_AIUPL: u32 = 120;
-pub const ASI_BLK_AIUSL: u32 = 121;
-pub const ASI_EC_R: u32 = 126;
-pub const ASI_UDBH_ERROR_R: u32 = 127;
-pub const ASI_UDBL_ERROR_R: u32 = 127;
-pub const ASI_UDBH_CONTROL_R: u32 = 127;
-pub const ASI_UDBL_CONTROL_R: u32 = 127;
-pub const ASI_INTR_R: u32 = 127;
-pub const ASI_INTR_DATAN_R: u32 = 127;
-pub const ASI_MCD_PRIMARY: u32 = 144;
-pub const ASI_MCD_ST_BLKINIT_PRIMARY: u32 = 146;
-pub const ASI_PIC: u32 = 176;
-pub const ASI_PST8_P: u32 = 192;
-pub const ASI_PST8_S: u32 = 193;
-pub const ASI_PST16_P: u32 = 194;
-pub const ASI_PST16_S: u32 = 195;
-pub const ASI_PST32_P: u32 = 196;
-pub const ASI_PST32_S: u32 = 197;
-pub const ASI_PST8_PL: u32 = 200;
-pub const ASI_PST8_SL: u32 = 201;
-pub const ASI_PST16_PL: u32 = 202;
-pub const ASI_PST16_SL: u32 = 203;
-pub const ASI_PST32_PL: u32 = 204;
-pub const ASI_PST32_SL: u32 = 205;
-pub const ASI_FL8_P: u32 = 208;
-pub const ASI_FL8_S: u32 = 209;
-pub const ASI_FL16_P: u32 = 210;
-pub const ASI_FL16_S: u32 = 211;
-pub const ASI_FL8_PL: u32 = 216;
-pub const ASI_FL8_SL: u32 = 217;
-pub const ASI_FL16_PL: u32 = 218;
-pub const ASI_FL16_SL: u32 = 219;
-pub const ASI_BLK_COMMIT_P: u32 = 224;
-pub const ASI_BLK_COMMIT_S: u32 = 225;
-pub const ASI_BLK_INIT_QUAD_LDD_P: u32 = 226;
-pub const ASI_BLK_INIT_QUAD_LDD_S: u32 = 227;
-pub const ASI_BLK_P: u32 = 240;
-pub const ASI_BLK_S: u32 = 241;
-pub const ASI_ST_BLKINIT_MRU_P: u32 = 242;
-pub const ASI_ST_BLKINIT_MRU_S: u32 = 243;
-pub const ASI_BLK_PL: u32 = 248;
-pub const ASI_BLK_SL: u32 = 249;
-pub const ASI_ST_BLKINIT_MRU_PL: u32 = 250;
-pub const ASI_ST_BLKINIT_MRU_SL: u32 = 251;
-pub const IN_ACCESS: u32 = 1;
-pub const IN_MODIFY: u32 = 2;
-pub const IN_ATTRIB: u32 = 4;
-pub const IN_CLOSE_WRITE: u32 = 8;
-pub const IN_CLOSE_NOWRITE: u32 = 16;
-pub const IN_OPEN: u32 = 32;
-pub const IN_MOVED_FROM: u32 = 64;
-pub const IN_MOVED_TO: u32 = 128;
-pub const IN_CREATE: u32 = 256;
-pub const IN_DELETE: u32 = 512;
-pub const IN_DELETE_SELF: u32 = 1024;
-pub const IN_MOVE_SELF: u32 = 2048;
-pub const IN_UNMOUNT: u32 = 8192;
-pub const IN_Q_OVERFLOW: u32 = 16384;
-pub const IN_IGNORED: u32 = 32768;
-pub const IN_CLOSE: u32 = 24;
-pub const IN_MOVE: u32 = 192;
-pub const IN_ONLYDIR: u32 = 16777216;
-pub const IN_DONT_FOLLOW: u32 = 33554432;
-pub const IN_EXCL_UNLINK: u32 = 67108864;
-pub const IN_MASK_CREATE: u32 = 268435456;
-pub const IN_MASK_ADD: u32 = 536870912;
-pub const IN_ISDIR: u32 = 1073741824;
-pub const IN_ONESHOT: u32 = 2147483648;
-pub const IN_ALL_EVENTS: u32 = 4095;
-pub const IN_CLOEXEC: u32 = 4194304;
-pub const IN_NONBLOCK: u32 = 16384;
-pub const IPTOS_TOS_MASK: u32 = 30;
-pub const IPTOS_LOWDELAY: u32 = 16;
-pub const IPTOS_THROUGHPUT: u32 = 8;
-pub const IPTOS_RELIABILITY: u32 = 4;
-pub const IPTOS_MINCOST: u32 = 2;
-pub const IPTOS_PREC_MASK: u32 = 224;
-pub const IPTOS_PREC_NETCONTROL: u32 = 224;
-pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192;
-pub const IPTOS_PREC_CRITIC_ECP: u32 = 160;
-pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128;
-pub const IPTOS_PREC_FLASH: u32 = 96;
-pub const IPTOS_PREC_IMMEDIATE: u32 = 64;
-pub const IPTOS_PREC_PRIORITY: u32 = 32;
-pub const IPTOS_PREC_ROUTINE: u32 = 0;
-pub const IPOPT_COPY: u32 = 128;
-pub const IPOPT_CLASS_MASK: u32 = 96;
-pub const IPOPT_NUMBER_MASK: u32 = 31;
-pub const IPOPT_CONTROL: u32 = 0;
-pub const IPOPT_RESERVED1: u32 = 32;
-pub const IPOPT_MEASUREMENT: u32 = 64;
-pub const IPOPT_RESERVED2: u32 = 96;
-pub const IPOPT_END: u32 = 0;
-pub const IPOPT_NOOP: u32 = 1;
-pub const IPOPT_SEC: u32 = 130;
-pub const IPOPT_LSRR: u32 = 131;
-pub const IPOPT_TIMESTAMP: u32 = 68;
-pub const IPOPT_CIPSO: u32 = 134;
-pub const IPOPT_RR: u32 = 7;
-pub const IPOPT_SID: u32 = 136;
-pub const IPOPT_SSRR: u32 = 137;
-pub const IPOPT_RA: u32 = 148;
-pub const IPVERSION: u32 = 4;
-pub const MAXTTL: u32 = 255;
-pub const IPDEFTTL: u32 = 64;
-pub const IPOPT_OPTVAL: u32 = 0;
-pub const IPOPT_OLEN: u32 = 1;
-pub const IPOPT_OFFSET: u32 = 2;
-pub const IPOPT_MINOFF: u32 = 4;
-pub const MAX_IPOPTLEN: u32 = 40;
-pub const IPOPT_NOP: u32 = 1;
-pub const IPOPT_EOL: u32 = 0;
-pub const IPOPT_TS: u32 = 68;
-pub const IPOPT_TS_TSONLY: u32 = 0;
-pub const IPOPT_TS_TSANDADDR: u32 = 1;
-pub const IPOPT_TS_PRESPEC: u32 = 3;
-pub const IPV4_BEET_PHMAXLEN: u32 = 8;
-pub const IPV6_FL_A_GET: u32 = 0;
-pub const IPV6_FL_A_PUT: u32 = 1;
-pub const IPV6_FL_A_RENEW: u32 = 2;
-pub const IPV6_FL_F_CREATE: u32 = 1;
-pub const IPV6_FL_F_EXCL: u32 = 2;
-pub const IPV6_FL_F_REFLECT: u32 = 4;
-pub const IPV6_FL_F_REMOTE: u32 = 8;
-pub const IPV6_FL_S_NONE: u32 = 0;
-pub const IPV6_FL_S_EXCL: u32 = 1;
-pub const IPV6_FL_S_PROCESS: u32 = 2;
-pub const IPV6_FL_S_USER: u32 = 3;
-pub const IPV6_FL_S_ANY: u32 = 255;
-pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575;
-pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880;
-pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0;
-pub const IPV6_PRIORITY_FILLER: u32 = 256;
-pub const IPV6_PRIORITY_UNATTENDED: u32 = 512;
-pub const IPV6_PRIORITY_RESERVED1: u32 = 768;
-pub const IPV6_PRIORITY_BULK: u32 = 1024;
-pub const IPV6_PRIORITY_RESERVED2: u32 = 1280;
-pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536;
-pub const IPV6_PRIORITY_CONTROL: u32 = 1792;
-pub const IPV6_PRIORITY_8: u32 = 2048;
-pub const IPV6_PRIORITY_9: u32 = 2304;
-pub const IPV6_PRIORITY_10: u32 = 2560;
-pub const IPV6_PRIORITY_11: u32 = 2816;
-pub const IPV6_PRIORITY_12: u32 = 3072;
-pub const IPV6_PRIORITY_13: u32 = 3328;
-pub const IPV6_PRIORITY_14: u32 = 3584;
-pub const IPV6_PRIORITY_15: u32 = 3840;
-pub const IPPROTO_HOPOPTS: u32 = 0;
-pub const IPPROTO_ROUTING: u32 = 43;
-pub const IPPROTO_FRAGMENT: u32 = 44;
-pub const IPPROTO_ICMPV6: u32 = 58;
-pub const IPPROTO_NONE: u32 = 59;
-pub const IPPROTO_DSTOPTS: u32 = 60;
-pub const IPPROTO_MH: u32 = 135;
-pub const IPV6_TLV_PAD1: u32 = 0;
-pub const IPV6_TLV_PADN: u32 = 1;
-pub const IPV6_TLV_ROUTERALERT: u32 = 5;
-pub const IPV6_TLV_CALIPSO: u32 = 7;
-pub const IPV6_TLV_IOAM: u32 = 49;
-pub const IPV6_TLV_JUMBO: u32 = 194;
-pub const IPV6_TLV_HAO: u32 = 201;
-pub const IPV6_ADDRFORM: u32 = 1;
-pub const IPV6_2292PKTINFO: u32 = 2;
-pub const IPV6_2292HOPOPTS: u32 = 3;
-pub const IPV6_2292DSTOPTS: u32 = 4;
-pub const IPV6_2292RTHDR: u32 = 5;
-pub const IPV6_2292PKTOPTIONS: u32 = 6;
-pub const IPV6_CHECKSUM: u32 = 7;
-pub const IPV6_2292HOPLIMIT: u32 = 8;
-pub const IPV6_NEXTHOP: u32 = 9;
-pub const IPV6_AUTHHDR: u32 = 10;
-pub const IPV6_FLOWINFO: u32 = 11;
-pub const IPV6_UNICAST_HOPS: u32 = 16;
-pub const IPV6_MULTICAST_IF: u32 = 17;
-pub const IPV6_MULTICAST_HOPS: u32 = 18;
-pub const IPV6_MULTICAST_LOOP: u32 = 19;
-pub const IPV6_ADD_MEMBERSHIP: u32 = 20;
-pub const IPV6_DROP_MEMBERSHIP: u32 = 21;
-pub const IPV6_ROUTER_ALERT: u32 = 22;
-pub const IPV6_MTU_DISCOVER: u32 = 23;
-pub const IPV6_MTU: u32 = 24;
-pub const IPV6_RECVERR: u32 = 25;
-pub const IPV6_V6ONLY: u32 = 26;
-pub const IPV6_JOIN_ANYCAST: u32 = 27;
-pub const IPV6_LEAVE_ANYCAST: u32 = 28;
-pub const IPV6_MULTICAST_ALL: u32 = 29;
-pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30;
-pub const IPV6_RECVERR_RFC4884: u32 = 31;
-pub const IPV6_PMTUDISC_DONT: u32 = 0;
-pub const IPV6_PMTUDISC_WANT: u32 = 1;
-pub const IPV6_PMTUDISC_DO: u32 = 2;
-pub const IPV6_PMTUDISC_PROBE: u32 = 3;
-pub const IPV6_PMTUDISC_INTERFACE: u32 = 4;
-pub const IPV6_PMTUDISC_OMIT: u32 = 5;
-pub const IPV6_FLOWLABEL_MGR: u32 = 32;
-pub const IPV6_FLOWINFO_SEND: u32 = 33;
-pub const IPV6_IPSEC_POLICY: u32 = 34;
-pub const IPV6_XFRM_POLICY: u32 = 35;
-pub const IPV6_HDRINCL: u32 = 36;
-pub const IPV6_RECVPKTINFO: u32 = 49;
-pub const IPV6_PKTINFO: u32 = 50;
-pub const IPV6_RECVHOPLIMIT: u32 = 51;
-pub const IPV6_HOPLIMIT: u32 = 52;
-pub const IPV6_RECVHOPOPTS: u32 = 53;
-pub const IPV6_HOPOPTS: u32 = 54;
-pub const IPV6_RTHDRDSTOPTS: u32 = 55;
-pub const IPV6_RECVRTHDR: u32 = 56;
-pub const IPV6_RTHDR: u32 = 57;
-pub const IPV6_RECVDSTOPTS: u32 = 58;
-pub const IPV6_DSTOPTS: u32 = 59;
-pub const IPV6_RECVPATHMTU: u32 = 60;
-pub const IPV6_PATHMTU: u32 = 61;
-pub const IPV6_DONTFRAG: u32 = 62;
-pub const IPV6_RECVTCLASS: u32 = 66;
-pub const IPV6_TCLASS: u32 = 67;
-pub const IPV6_AUTOFLOWLABEL: u32 = 70;
-pub const IPV6_ADDR_PREFERENCES: u32 = 72;
-pub const IPV6_PREFER_SRC_TMP: u32 = 1;
-pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2;
-pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256;
-pub const IPV6_PREFER_SRC_COA: u32 = 4;
-pub const IPV6_PREFER_SRC_HOME: u32 = 1024;
-pub const IPV6_PREFER_SRC_CGA: u32 = 8;
-pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048;
-pub const IPV6_MINHOPCOUNT: u32 = 73;
-pub const IPV6_ORIGDSTADDR: u32 = 74;
-pub const IPV6_RECVORIGDSTADDR: u32 = 74;
-pub const IPV6_TRANSPARENT: u32 = 75;
-pub const IPV6_UNICAST_IF: u32 = 76;
-pub const IPV6_RECVFRAGSIZE: u32 = 77;
-pub const IPV6_FREEBIND: u32 = 78;
-pub const IPV6_MIN_MTU: u32 = 1280;
-pub const IPV6_SRCRT_STRICT: u32 = 1;
-pub const IPV6_SRCRT_TYPE_0: u32 = 0;
-pub const IPV6_SRCRT_TYPE_2: u32 = 2;
-pub const IPV6_SRCRT_TYPE_3: u32 = 3;
-pub const IPV6_SRCRT_TYPE_4: u32 = 4;
-pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0;
-pub const ADFS_SUPER_MAGIC: u32 = 44533;
-pub const AFFS_SUPER_MAGIC: u32 = 44543;
-pub const AFS_SUPER_MAGIC: u32 = 1397113167;
-pub const AUTOFS_SUPER_MAGIC: u32 = 391;
-pub const CEPH_SUPER_MAGIC: u32 = 12805120;
-pub const CODA_SUPER_MAGIC: u32 = 1937076805;
-pub const CRAMFS_MAGIC: u32 = 684539205;
-pub const CRAMFS_MAGIC_WEND: u32 = 1161678120;
-pub const DEBUGFS_MAGIC: u32 = 1684170528;
-pub const SECURITYFS_MAGIC: u32 = 1935894131;
-pub const SELINUX_MAGIC: u32 = 4185718668;
-pub const SMACK_MAGIC: u32 = 1128357203;
-pub const RAMFS_MAGIC: u32 = 2240043254;
-pub const TMPFS_MAGIC: u32 = 16914836;
-pub const HUGETLBFS_MAGIC: u32 = 2508478710;
-pub const SQUASHFS_MAGIC: u32 = 1936814952;
-pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791;
-pub const EFS_SUPER_MAGIC: u32 = 4278867;
-pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530;
-pub const EXT2_SUPER_MAGIC: u32 = 61267;
-pub const EXT3_SUPER_MAGIC: u32 = 61267;
-pub const XENFS_SUPER_MAGIC: u32 = 2881100148;
-pub const EXT4_SUPER_MAGIC: u32 = 61267;
-pub const BTRFS_SUPER_MAGIC: u32 = 2435016766;
-pub const NILFS_SUPER_MAGIC: u32 = 13364;
-pub const F2FS_SUPER_MAGIC: u32 = 4076150800;
-pub const HPFS_SUPER_MAGIC: u32 = 4187351113;
-pub const ISOFS_SUPER_MAGIC: u32 = 38496;
-pub const JFFS2_SUPER_MAGIC: u32 = 29366;
-pub const XFS_SUPER_MAGIC: u32 = 1481003842;
-pub const PSTOREFS_MAGIC: u32 = 1634035564;
-pub const EFIVARFS_MAGIC: u32 = 3730735588;
-pub const HOSTFS_SUPER_MAGIC: u32 = 12648430;
-pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128;
-pub const FUSE_SUPER_MAGIC: u32 = 1702057286;
-pub const MINIX_SUPER_MAGIC: u32 = 4991;
-pub const MINIX_SUPER_MAGIC2: u32 = 5007;
-pub const MINIX2_SUPER_MAGIC: u32 = 9320;
-pub const MINIX2_SUPER_MAGIC2: u32 = 9336;
-pub const MINIX3_SUPER_MAGIC: u32 = 19802;
-pub const MSDOS_SUPER_MAGIC: u32 = 19780;
-pub const EXFAT_SUPER_MAGIC: u32 = 538032816;
-pub const NCP_SUPER_MAGIC: u32 = 22092;
-pub const NFS_SUPER_MAGIC: u32 = 26985;
-pub const OCFS2_SUPER_MAGIC: u32 = 1952539503;
-pub const OPENPROM_SUPER_MAGIC: u32 = 40865;
-pub const QNX4_SUPER_MAGIC: u32 = 47;
-pub const QNX6_SUPER_MAGIC: u32 = 1746473250;
-pub const AFS_FS_MAGIC: u32 = 1799439955;
-pub const REISERFS_SUPER_MAGIC: u32 = 1382369651;
-pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0";
-pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0";
-pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0";
-pub const SMB_SUPER_MAGIC: u32 = 20859;
-pub const CIFS_SUPER_MAGIC: u32 = 4283649346;
-pub const SMB2_SUPER_MAGIC: u32 = 4266872130;
-pub const CGROUP_SUPER_MAGIC: u32 = 2613483;
-pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888;
-pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209;
-pub const STACK_END_MAGIC: u32 = 1470918301;
-pub const TRACEFS_MAGIC: u32 = 1953653091;
-pub const V9FS_MAGIC: u32 = 16914839;
-pub const BDEVFS_MAGIC: u32 = 1650746742;
-pub const DAXFS_MAGIC: u32 = 1684300152;
-pub const BINFMTFS_MAGIC: u32 = 1112100429;
-pub const DEVPTS_SUPER_MAGIC: u32 = 7377;
-pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352;
-pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762;
-pub const PIPEFS_MAGIC: u32 = 1346981957;
-pub const PROC_SUPER_MAGIC: u32 = 40864;
-pub const SOCKFS_MAGIC: u32 = 1397703499;
-pub const SYSFS_MAGIC: u32 = 1650812274;
-pub const USBDEVICE_SUPER_MAGIC: u32 = 40866;
-pub const MTD_INODE_FS_MAGIC: u32 = 288389204;
-pub const ANON_INODE_FS_MAGIC: u32 = 151263540;
-pub const BTRFS_TEST_MAGIC: u32 = 1936880249;
-pub const NSFS_MAGIC: u32 = 1853056627;
-pub const BPF_FS_MAGIC: u32 = 3405662737;
-pub const AAFS_MAGIC: u32 = 1513908720;
-pub const ZONEFS_MAGIC: u32 = 1515144787;
-pub const UDF_SUPER_MAGIC: u32 = 352400198;
-pub const DMA_BUF_MAGIC: u32 = 1145913666;
-pub const DEVMEM_MAGIC: u32 = 1162691661;
-pub const SECRETMEM_MAGIC: u32 = 1397048141;
-pub const PROT_READ: u32 = 1;
-pub const PROT_WRITE: u32 = 2;
-pub const PROT_EXEC: u32 = 4;
-pub const PROT_SEM: u32 = 8;
-pub const PROT_NONE: u32 = 0;
-pub const PROT_GROWSDOWN: u32 = 16777216;
-pub const PROT_GROWSUP: u32 = 33554432;
-pub const MAP_TYPE: u32 = 15;
-pub const MAP_FIXED: u32 = 16;
-pub const MAP_ANONYMOUS: u32 = 32;
-pub const MAP_POPULATE: u32 = 32768;
-pub const MAP_NONBLOCK: u32 = 65536;
-pub const MAP_STACK: u32 = 131072;
-pub const MAP_HUGETLB: u32 = 262144;
-pub const MAP_SYNC: u32 = 524288;
-pub const MAP_FIXED_NOREPLACE: u32 = 1048576;
-pub const MAP_UNINITIALIZED: u32 = 67108864;
-pub const MLOCK_ONFAULT: u32 = 1;
-pub const MS_ASYNC: u32 = 1;
-pub const MS_INVALIDATE: u32 = 2;
-pub const MS_SYNC: u32 = 4;
-pub const MADV_NORMAL: u32 = 0;
-pub const MADV_RANDOM: u32 = 1;
-pub const MADV_SEQUENTIAL: u32 = 2;
-pub const MADV_WILLNEED: u32 = 3;
-pub const MADV_DONTNEED: u32 = 4;
-pub const MADV_FREE: u32 = 8;
-pub const MADV_REMOVE: u32 = 9;
-pub const MADV_DONTFORK: u32 = 10;
-pub const MADV_DOFORK: u32 = 11;
-pub const MADV_HWPOISON: u32 = 100;
-pub const MADV_SOFT_OFFLINE: u32 = 101;
-pub const MADV_MERGEABLE: u32 = 12;
-pub const MADV_UNMERGEABLE: u32 = 13;
-pub const MADV_HUGEPAGE: u32 = 14;
-pub const MADV_NOHUGEPAGE: u32 = 15;
-pub const MADV_DONTDUMP: u32 = 16;
-pub const MADV_DODUMP: u32 = 17;
-pub const MADV_WIPEONFORK: u32 = 18;
-pub const MADV_KEEPONFORK: u32 = 19;
-pub const MADV_COLD: u32 = 20;
-pub const MADV_PAGEOUT: u32 = 21;
-pub const MADV_POPULATE_READ: u32 = 22;
-pub const MADV_POPULATE_WRITE: u32 = 23;
-pub const MADV_DONTNEED_LOCKED: u32 = 24;
-pub const MADV_COLLAPSE: u32 = 25;
-pub const MAP_FILE: u32 = 0;
-pub const PKEY_DISABLE_ACCESS: u32 = 1;
-pub const PKEY_DISABLE_WRITE: u32 = 2;
-pub const PKEY_ACCESS_MASK: u32 = 3;
-pub const PROT_ADI: u32 = 16;
-pub const MAP_RENAME: u32 = 32;
-pub const MAP_NORESERVE: u32 = 64;
-pub const MAP_INHERIT: u32 = 128;
-pub const MAP_LOCKED: u32 = 256;
-pub const _MAP_NEW: u32 = 2147483648;
-pub const MAP_GROWSDOWN: u32 = 512;
-pub const MAP_DENYWRITE: u32 = 2048;
-pub const MAP_EXECUTABLE: u32 = 4096;
-pub const MCL_CURRENT: u32 = 8192;
-pub const MCL_FUTURE: u32 = 16384;
-pub const MCL_ONFAULT: u32 = 32768;
-pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26;
-pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63;
-pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096;
-pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824;
-pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416;
-pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280;
-pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144;
-pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872;
-pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736;
-pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600;
-pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192;
-pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056;
-pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920;
-pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784;
-pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376;
-pub const MREMAP_MAYMOVE: u32 = 1;
-pub const MREMAP_FIXED: u32 = 2;
-pub const MREMAP_DONTUNMAP: u32 = 4;
-pub const OVERCOMMIT_GUESS: u32 = 0;
-pub const OVERCOMMIT_ALWAYS: u32 = 1;
-pub const OVERCOMMIT_NEVER: u32 = 2;
-pub const MAP_SHARED: u32 = 1;
-pub const MAP_PRIVATE: u32 = 2;
-pub const MAP_SHARED_VALIDATE: u32 = 3;
-pub const MAP_HUGE_SHIFT: u32 = 26;
-pub const MAP_HUGE_MASK: u32 = 63;
-pub const MAP_HUGE_16KB: u32 = 939524096;
-pub const MAP_HUGE_64KB: u32 = 1073741824;
-pub const MAP_HUGE_512KB: u32 = 1275068416;
-pub const MAP_HUGE_1MB: u32 = 1342177280;
-pub const MAP_HUGE_2MB: u32 = 1409286144;
-pub const MAP_HUGE_8MB: u32 = 1543503872;
-pub const MAP_HUGE_16MB: u32 = 1610612736;
-pub const MAP_HUGE_32MB: u32 = 1677721600;
-pub const MAP_HUGE_256MB: u32 = 1879048192;
-pub const MAP_HUGE_512MB: u32 = 1946157056;
-pub const MAP_HUGE_1GB: u32 = 2013265920;
-pub const MAP_HUGE_2GB: u32 = 2080374784;
-pub const MAP_HUGE_16GB: u32 = 2281701376;
-pub const SIOCGSTAMP_OLD: u32 = 35078;
-pub const SIOCGSTAMPNS_OLD: u32 = 35079;
-pub const SOL_SOCKET: u32 = 65535;
-pub const SO_DEBUG: u32 = 1;
-pub const SO_PASSCRED: u32 = 2;
-pub const SO_REUSEADDR: u32 = 4;
-pub const SO_KEEPALIVE: u32 = 8;
-pub const SO_DONTROUTE: u32 = 16;
-pub const SO_BROADCAST: u32 = 32;
-pub const SO_PEERCRED: u32 = 64;
-pub const SO_LINGER: u32 = 128;
-pub const SO_OOBINLINE: u32 = 256;
-pub const SO_REUSEPORT: u32 = 512;
-pub const SO_BSDCOMPAT: u32 = 1024;
-pub const SO_RCVLOWAT: u32 = 2048;
-pub const SO_SNDLOWAT: u32 = 4096;
-pub const SO_RCVTIMEO_OLD: u32 = 8192;
-pub const SO_SNDTIMEO_OLD: u32 = 16384;
-pub const SO_ACCEPTCONN: u32 = 32768;
-pub const SO_SNDBUF: u32 = 4097;
-pub const SO_RCVBUF: u32 = 4098;
-pub const SO_SNDBUFFORCE: u32 = 4106;
-pub const SO_RCVBUFFORCE: u32 = 4107;
-pub const SO_ERROR: u32 = 4103;
-pub const SO_TYPE: u32 = 4104;
-pub const SO_PROTOCOL: u32 = 4136;
-pub const SO_DOMAIN: u32 = 4137;
-pub const SO_NO_CHECK: u32 = 11;
-pub const SO_PRIORITY: u32 = 12;
-pub const SO_BINDTODEVICE: u32 = 13;
-pub const SO_ATTACH_FILTER: u32 = 26;
-pub const SO_DETACH_FILTER: u32 = 27;
-pub const SO_GET_FILTER: u32 = 26;
-pub const SO_PEERNAME: u32 = 28;
-pub const SO_PEERSEC: u32 = 30;
-pub const SO_PASSSEC: u32 = 31;
-pub const SO_MARK: u32 = 34;
-pub const SO_RXQ_OVFL: u32 = 36;
-pub const SO_WIFI_STATUS: u32 = 37;
-pub const SCM_WIFI_STATUS: u32 = 37;
-pub const SO_PEEK_OFF: u32 = 38;
-pub const SO_NOFCS: u32 = 39;
-pub const SO_LOCK_FILTER: u32 = 40;
-pub const SO_SELECT_ERR_QUEUE: u32 = 41;
-pub const SO_BUSY_POLL: u32 = 48;
-pub const SO_MAX_PACING_RATE: u32 = 49;
-pub const SO_BPF_EXTENSIONS: u32 = 50;
-pub const SO_INCOMING_CPU: u32 = 51;
-pub const SO_ATTACH_BPF: u32 = 52;
-pub const SO_DETACH_BPF: u32 = 27;
-pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 53;
-pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 54;
-pub const SO_CNX_ADVICE: u32 = 55;
-pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 56;
-pub const SO_MEMINFO: u32 = 57;
-pub const SO_INCOMING_NAPI_ID: u32 = 58;
-pub const SO_COOKIE: u32 = 59;
-pub const SCM_TIMESTAMPING_PKTINFO: u32 = 60;
-pub const SO_PEERGROUPS: u32 = 61;
-pub const SO_ZEROCOPY: u32 = 62;
-pub const SO_TXTIME: u32 = 63;
-pub const SCM_TXTIME: u32 = 63;
-pub const SO_BINDTOIFINDEX: u32 = 65;
-pub const SO_SECURITY_AUTHENTICATION: u32 = 20481;
-pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 20482;
-pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 20484;
-pub const SO_TIMESTAMP_OLD: u32 = 29;
-pub const SO_TIMESTAMPNS_OLD: u32 = 33;
-pub const SO_TIMESTAMPING_OLD: u32 = 35;
-pub const SO_TIMESTAMP_NEW: u32 = 70;
-pub const SO_TIMESTAMPNS_NEW: u32 = 66;
-pub const SO_TIMESTAMPING_NEW: u32 = 67;
-pub const SO_RCVTIMEO_NEW: u32 = 68;
-pub const SO_SNDTIMEO_NEW: u32 = 69;
-pub const SO_DETACH_REUSEPORT_BPF: u32 = 71;
-pub const SO_PREFER_BUSY_POLL: u32 = 72;
-pub const SO_BUSY_POLL_BUDGET: u32 = 73;
-pub const SO_NETNS_COOKIE: u32 = 80;
-pub const SO_BUF_LOCK: u32 = 81;
-pub const SO_RESERVE_MEM: u32 = 82;
-pub const SO_TXREHASH: u32 = 83;
-pub const SO_RCVMARK: u32 = 84;
-pub const SYS_SOCKET: u32 = 1;
-pub const SYS_BIND: u32 = 2;
-pub const SYS_CONNECT: u32 = 3;
-pub const SYS_LISTEN: u32 = 4;
-pub const SYS_ACCEPT: u32 = 5;
-pub const SYS_GETSOCKNAME: u32 = 6;
-pub const SYS_GETPEERNAME: u32 = 7;
-pub const SYS_SOCKETPAIR: u32 = 8;
-pub const SYS_SEND: u32 = 9;
-pub const SYS_RECV: u32 = 10;
-pub const SYS_SENDTO: u32 = 11;
-pub const SYS_RECVFROM: u32 = 12;
-pub const SYS_SHUTDOWN: u32 = 13;
-pub const SYS_SETSOCKOPT: u32 = 14;
-pub const SYS_GETSOCKOPT: u32 = 15;
-pub const SYS_SENDMSG: u32 = 16;
-pub const SYS_RECVMSG: u32 = 17;
-pub const SYS_ACCEPT4: u32 = 18;
-pub const SYS_RECVMMSG: u32 = 19;
-pub const SYS_SENDMMSG: u32 = 20;
-pub const __SO_ACCEPTCON: u32 = 65536;
-pub const POLLWRBAND: u32 = 256;
-pub const POLLMSG: u32 = 512;
-pub const POLLREMOVE: u32 = 1024;
-pub const POLLRDHUP: u32 = 2048;
-pub const POLLIN: u32 = 1;
-pub const POLLPRI: u32 = 2;
-pub const POLLOUT: u32 = 4;
-pub const POLLERR: u32 = 8;
-pub const POLLHUP: u32 = 16;
-pub const POLLNVAL: u32 = 32;
-pub const POLLRDNORM: u32 = 64;
-pub const POLLRDBAND: u32 = 128;
-pub const PR_SET_PDEATHSIG: u32 = 1;
-pub const PR_GET_PDEATHSIG: u32 = 2;
-pub const PR_GET_DUMPABLE: u32 = 3;
-pub const PR_SET_DUMPABLE: u32 = 4;
-pub const PR_GET_UNALIGN: u32 = 5;
-pub const PR_SET_UNALIGN: u32 = 6;
-pub const PR_UNALIGN_NOPRINT: u32 = 1;
-pub const PR_UNALIGN_SIGBUS: u32 = 2;
-pub const PR_GET_KEEPCAPS: u32 = 7;
-pub const PR_SET_KEEPCAPS: u32 = 8;
-pub const PR_GET_FPEMU: u32 = 9;
-pub const PR_SET_FPEMU: u32 = 10;
-pub const PR_FPEMU_NOPRINT: u32 = 1;
-pub const PR_FPEMU_SIGFPE: u32 = 2;
-pub const PR_GET_FPEXC: u32 = 11;
-pub const PR_SET_FPEXC: u32 = 12;
-pub const PR_FP_EXC_SW_ENABLE: u32 = 128;
-pub const PR_FP_EXC_DIV: u32 = 65536;
-pub const PR_FP_EXC_OVF: u32 = 131072;
-pub const PR_FP_EXC_UND: u32 = 262144;
-pub const PR_FP_EXC_RES: u32 = 524288;
-pub const PR_FP_EXC_INV: u32 = 1048576;
-pub const PR_FP_EXC_DISABLED: u32 = 0;
-pub const PR_FP_EXC_NONRECOV: u32 = 1;
-pub const PR_FP_EXC_ASYNC: u32 = 2;
-pub const PR_FP_EXC_PRECISE: u32 = 3;
-pub const PR_GET_TIMING: u32 = 13;
-pub const PR_SET_TIMING: u32 = 14;
-pub const PR_TIMING_STATISTICAL: u32 = 0;
-pub const PR_TIMING_TIMESTAMP: u32 = 1;
-pub const PR_SET_NAME: u32 = 15;
-pub const PR_GET_NAME: u32 = 16;
-pub const PR_GET_ENDIAN: u32 = 19;
-pub const PR_SET_ENDIAN: u32 = 20;
-pub const PR_ENDIAN_BIG: u32 = 0;
-pub const PR_ENDIAN_LITTLE: u32 = 1;
-pub const PR_ENDIAN_PPC_LITTLE: u32 = 2;
-pub const PR_GET_SECCOMP: u32 = 21;
-pub const PR_SET_SECCOMP: u32 = 22;
-pub const PR_CAPBSET_READ: u32 = 23;
-pub const PR_CAPBSET_DROP: u32 = 24;
-pub const PR_GET_TSC: u32 = 25;
-pub const PR_SET_TSC: u32 = 26;
-pub const PR_TSC_ENABLE: u32 = 1;
-pub const PR_TSC_SIGSEGV: u32 = 2;
-pub const PR_GET_SECUREBITS: u32 = 27;
-pub const PR_SET_SECUREBITS: u32 = 28;
-pub const PR_SET_TIMERSLACK: u32 = 29;
-pub const PR_GET_TIMERSLACK: u32 = 30;
-pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31;
-pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32;
-pub const PR_MCE_KILL: u32 = 33;
-pub const PR_MCE_KILL_CLEAR: u32 = 0;
-pub const PR_MCE_KILL_SET: u32 = 1;
-pub const PR_MCE_KILL_LATE: u32 = 0;
-pub const PR_MCE_KILL_EARLY: u32 = 1;
-pub const PR_MCE_KILL_DEFAULT: u32 = 2;
-pub const PR_MCE_KILL_GET: u32 = 34;
-pub const PR_SET_MM: u32 = 35;
-pub const PR_SET_MM_START_CODE: u32 = 1;
-pub const PR_SET_MM_END_CODE: u32 = 2;
-pub const PR_SET_MM_START_DATA: u32 = 3;
-pub const PR_SET_MM_END_DATA: u32 = 4;
-pub const PR_SET_MM_START_STACK: u32 = 5;
-pub const PR_SET_MM_START_BRK: u32 = 6;
-pub const PR_SET_MM_BRK: u32 = 7;
-pub const PR_SET_MM_ARG_START: u32 = 8;
-pub const PR_SET_MM_ARG_END: u32 = 9;
-pub const PR_SET_MM_ENV_START: u32 = 10;
-pub const PR_SET_MM_ENV_END: u32 = 11;
-pub const PR_SET_MM_AUXV: u32 = 12;
-pub const PR_SET_MM_EXE_FILE: u32 = 13;
-pub const PR_SET_MM_MAP: u32 = 14;
-pub const PR_SET_MM_MAP_SIZE: u32 = 15;
-pub const PR_SET_PTRACER: u32 = 1499557217;
-pub const PR_SET_CHILD_SUBREAPER: u32 = 36;
-pub const PR_GET_CHILD_SUBREAPER: u32 = 37;
-pub const PR_SET_NO_NEW_PRIVS: u32 = 38;
-pub const PR_GET_NO_NEW_PRIVS: u32 = 39;
-pub const PR_GET_TID_ADDRESS: u32 = 40;
-pub const PR_SET_THP_DISABLE: u32 = 41;
-pub const PR_GET_THP_DISABLE: u32 = 42;
-pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43;
-pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44;
-pub const PR_SET_FP_MODE: u32 = 45;
-pub const PR_GET_FP_MODE: u32 = 46;
-pub const PR_FP_MODE_FR: u32 = 1;
-pub const PR_FP_MODE_FRE: u32 = 2;
-pub const PR_CAP_AMBIENT: u32 = 47;
-pub const PR_CAP_AMBIENT_IS_SET: u32 = 1;
-pub const PR_CAP_AMBIENT_RAISE: u32 = 2;
-pub const PR_CAP_AMBIENT_LOWER: u32 = 3;
-pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4;
-pub const PR_SVE_SET_VL: u32 = 50;
-pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SVE_GET_VL: u32 = 51;
-pub const PR_SVE_VL_LEN_MASK: u32 = 65535;
-pub const PR_SVE_VL_INHERIT: u32 = 131072;
-pub const PR_GET_SPECULATION_CTRL: u32 = 52;
-pub const PR_SET_SPECULATION_CTRL: u32 = 53;
-pub const PR_SPEC_STORE_BYPASS: u32 = 0;
-pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1;
-pub const PR_SPEC_L1D_FLUSH: u32 = 2;
-pub const PR_SPEC_NOT_AFFECTED: u32 = 0;
-pub const PR_SPEC_PRCTL: u32 = 1;
-pub const PR_SPEC_ENABLE: u32 = 2;
-pub const PR_SPEC_DISABLE: u32 = 4;
-pub const PR_SPEC_FORCE_DISABLE: u32 = 8;
-pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16;
-pub const PR_PAC_RESET_KEYS: u32 = 54;
-pub const PR_PAC_APIAKEY: u32 = 1;
-pub const PR_PAC_APIBKEY: u32 = 2;
-pub const PR_PAC_APDAKEY: u32 = 4;
-pub const PR_PAC_APDBKEY: u32 = 8;
-pub const PR_PAC_APGAKEY: u32 = 16;
-pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55;
-pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56;
-pub const PR_TAGGED_ADDR_ENABLE: u32 = 1;
-pub const PR_MTE_TCF_NONE: u32 = 0;
-pub const PR_MTE_TCF_SYNC: u32 = 2;
-pub const PR_MTE_TCF_ASYNC: u32 = 4;
-pub const PR_MTE_TCF_MASK: u32 = 6;
-pub const PR_MTE_TAG_SHIFT: u32 = 3;
-pub const PR_MTE_TAG_MASK: u32 = 524280;
-pub const PR_MTE_TCF_SHIFT: u32 = 1;
-pub const PR_SET_IO_FLUSHER: u32 = 57;
-pub const PR_GET_IO_FLUSHER: u32 = 58;
-pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59;
-pub const PR_SYS_DISPATCH_OFF: u32 = 0;
-pub const PR_SYS_DISPATCH_ON: u32 = 1;
-pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0;
-pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1;
-pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60;
-pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61;
-pub const PR_SCHED_CORE: u32 = 62;
-pub const PR_SCHED_CORE_GET: u32 = 0;
-pub const PR_SCHED_CORE_CREATE: u32 = 1;
-pub const PR_SCHED_CORE_SHARE_TO: u32 = 2;
-pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3;
-pub const PR_SCHED_CORE_MAX: u32 = 4;
-pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0;
-pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1;
-pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2;
-pub const PR_SME_SET_VL: u32 = 63;
-pub const PR_SME_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SME_GET_VL: u32 = 64;
-pub const PR_SME_VL_LEN_MASK: u32 = 65535;
-pub const PR_SME_VL_INHERIT: u32 = 131072;
-pub const PR_SET_VMA: u32 = 1398164801;
-pub const PR_SET_VMA_ANON_NAME: u32 = 0;
-pub const GRND_NONBLOCK: u32 = 1;
-pub const GRND_RANDOM: u32 = 2;
-pub const GRND_INSECURE: u32 = 4;
-pub const ITIMER_REAL: u32 = 0;
-pub const ITIMER_VIRTUAL: u32 = 1;
-pub const ITIMER_PROF: u32 = 2;
-pub const CLOCK_REALTIME: u32 = 0;
-pub const CLOCK_MONOTONIC: u32 = 1;
-pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2;
-pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3;
-pub const CLOCK_MONOTONIC_RAW: u32 = 4;
-pub const CLOCK_REALTIME_COARSE: u32 = 5;
-pub const CLOCK_MONOTONIC_COARSE: u32 = 6;
-pub const CLOCK_BOOTTIME: u32 = 7;
-pub const CLOCK_REALTIME_ALARM: u32 = 8;
-pub const CLOCK_BOOTTIME_ALARM: u32 = 9;
-pub const CLOCK_SGI_CYCLE: u32 = 10;
-pub const CLOCK_TAI: u32 = 11;
-pub const MAX_CLOCKS: u32 = 16;
-pub const CLOCKS_MASK: u32 = 1;
-pub const CLOCKS_MONO: u32 = 1;
-pub const TIMER_ABSTIME: u32 = 1;
-pub const RUSAGE_SELF: u32 = 0;
-pub const RUSAGE_CHILDREN: i32 = -1;
-pub const RUSAGE_BOTH: i32 = -2;
-pub const RUSAGE_THREAD: u32 = 1;
-pub const RLIM64_INFINITY: i32 = -1;
-pub const PRIO_MIN: i32 = -20;
-pub const PRIO_MAX: u32 = 20;
-pub const PRIO_PROCESS: u32 = 0;
-pub const PRIO_PGRP: u32 = 1;
-pub const PRIO_USER: u32 = 2;
-pub const _STK_LIM: u32 = 8388608;
-pub const MLOCK_LIMIT: u32 = 8388608;
-pub const RLIMIT_NOFILE: u32 = 6;
-pub const RLIMIT_NPROC: u32 = 7;
-pub const RLIM_INFINITY: u32 = 2147483647;
-pub const RLIMIT_CPU: u32 = 0;
-pub const RLIMIT_FSIZE: u32 = 1;
-pub const RLIMIT_DATA: u32 = 2;
-pub const RLIMIT_STACK: u32 = 3;
-pub const RLIMIT_CORE: u32 = 4;
-pub const RLIMIT_RSS: u32 = 5;
-pub const RLIMIT_MEMLOCK: u32 = 8;
-pub const RLIMIT_AS: u32 = 9;
-pub const RLIMIT_LOCKS: u32 = 10;
-pub const RLIMIT_SIGPENDING: u32 = 11;
-pub const RLIMIT_MSGQUEUE: u32 = 12;
-pub const RLIMIT_NICE: u32 = 13;
-pub const RLIMIT_RTPRIO: u32 = 14;
-pub const RLIMIT_RTTIME: u32 = 15;
-pub const RLIM_NLIMITS: u32 = 16;
-pub const CSIGNAL: u32 = 255;
-pub const CLONE_VM: u32 = 256;
-pub const CLONE_FS: u32 = 512;
-pub const CLONE_FILES: u32 = 1024;
-pub const CLONE_SIGHAND: u32 = 2048;
-pub const CLONE_PIDFD: u32 = 4096;
-pub const CLONE_PTRACE: u32 = 8192;
-pub const CLONE_VFORK: u32 = 16384;
-pub const CLONE_PARENT: u32 = 32768;
-pub const CLONE_THREAD: u32 = 65536;
-pub const CLONE_NEWNS: u32 = 131072;
-pub const CLONE_SYSVSEM: u32 = 262144;
-pub const CLONE_SETTLS: u32 = 524288;
-pub const CLONE_PARENT_SETTID: u32 = 1048576;
-pub const CLONE_CHILD_CLEARTID: u32 = 2097152;
-pub const CLONE_DETACHED: u32 = 4194304;
-pub const CLONE_UNTRACED: u32 = 8388608;
-pub const CLONE_CHILD_SETTID: u32 = 16777216;
-pub const CLONE_NEWCGROUP: u32 = 33554432;
-pub const CLONE_NEWUTS: u32 = 67108864;
-pub const CLONE_NEWIPC: u32 = 134217728;
-pub const CLONE_NEWUSER: u32 = 268435456;
-pub const CLONE_NEWPID: u32 = 536870912;
-pub const CLONE_NEWNET: u32 = 1073741824;
-pub const CLONE_IO: u32 = 2147483648;
-pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296;
-pub const CLONE_INTO_CGROUP: u64 = 8589934592;
-pub const CLONE_NEWTIME: u32 = 128;
-pub const CLONE_ARGS_SIZE_VER0: u32 = 64;
-pub const CLONE_ARGS_SIZE_VER1: u32 = 80;
-pub const CLONE_ARGS_SIZE_VER2: u32 = 88;
-pub const SCHED_NORMAL: u32 = 0;
-pub const SCHED_FIFO: u32 = 1;
-pub const SCHED_RR: u32 = 2;
-pub const SCHED_BATCH: u32 = 3;
-pub const SCHED_IDLE: u32 = 5;
-pub const SCHED_DEADLINE: u32 = 6;
-pub const SCHED_RESET_ON_FORK: u32 = 1073741824;
-pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1;
-pub const SCHED_FLAG_RECLAIM: u32 = 2;
-pub const SCHED_FLAG_DL_OVERRUN: u32 = 4;
-pub const SCHED_FLAG_KEEP_POLICY: u32 = 8;
-pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16;
-pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32;
-pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64;
-pub const SCHED_FLAG_KEEP_ALL: u32 = 24;
-pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96;
-pub const SCHED_FLAG_ALL: u32 = 127;
-pub const SIGHUP: u32 = 1;
-pub const SIGINT: u32 = 2;
-pub const SIGQUIT: u32 = 3;
-pub const SIGILL: u32 = 4;
-pub const SUBSIG_STACK: u32 = 0;
-pub const SUBSIG_ILLINST: u32 = 2;
-pub const SUBSIG_PRIVINST: u32 = 3;
-pub const SIGTRAP: u32 = 5;
-pub const SIGABRT: u32 = 6;
-pub const SIGIOT: u32 = 6;
-pub const SIGEMT: u32 = 7;
-pub const SUBSIG_TAG: u32 = 10;
-pub const SIGFPE: u32 = 8;
-pub const SUBSIG_FPDISABLED: u32 = 1024;
-pub const SUBSIG_FPERROR: u32 = 1028;
-pub const SUBSIG_FPINTOVFL: u32 = 1;
-pub const SUBSIG_FPSTSIG: u32 = 2;
-pub const SUBSIG_IDIVZERO: u32 = 20;
-pub const SUBSIG_FPINEXACT: u32 = 196;
-pub const SUBSIG_FPDIVZERO: u32 = 200;
-pub const SUBSIG_FPUNFLOW: u32 = 204;
-pub const SUBSIG_FPOPERROR: u32 = 208;
-pub const SUBSIG_FPOVFLOW: u32 = 212;
-pub const SIGKILL: u32 = 9;
-pub const SIGBUS: u32 = 10;
-pub const SUBSIG_BUSTIMEOUT: u32 = 1;
-pub const SUBSIG_ALIGNMENT: u32 = 2;
-pub const SUBSIG_MISCERROR: u32 = 5;
-pub const SIGSEGV: u32 = 11;
-pub const SUBSIG_NOMAPPING: u32 = 3;
-pub const SUBSIG_PROTECTION: u32 = 4;
-pub const SUBSIG_SEGERROR: u32 = 5;
-pub const SIGSYS: u32 = 12;
-pub const SIGPIPE: u32 = 13;
-pub const SIGALRM: u32 = 14;
-pub const SIGTERM: u32 = 15;
-pub const SIGURG: u32 = 16;
-pub const SIGSTOP: u32 = 17;
-pub const SIGTSTP: u32 = 18;
-pub const SIGCONT: u32 = 19;
-pub const SIGCHLD: u32 = 20;
-pub const SIGTTIN: u32 = 21;
-pub const SIGTTOU: u32 = 22;
-pub const SIGIO: u32 = 23;
-pub const SIGPOLL: u32 = 23;
-pub const SIGXCPU: u32 = 24;
-pub const SIGXFSZ: u32 = 25;
-pub const SIGVTALRM: u32 = 26;
-pub const SIGPROF: u32 = 27;
-pub const SIGWINCH: u32 = 28;
-pub const SIGLOST: u32 = 29;
-pub const SIGPWR: u32 = 29;
-pub const SIGUSR1: u32 = 30;
-pub const SIGUSR2: u32 = 31;
-pub const __OLD_NSIG: u32 = 32;
-pub const __NEW_NSIG: u32 = 64;
-pub const _NSIG_BPW: u32 = 32;
-pub const _NSIG_WORDS: u32 = 2;
-pub const SIGRTMIN: u32 = 32;
-pub const SIGRTMAX: u32 = 64;
-pub const _NSIG: u32 = 32;
-pub const NSIG: u32 = 32;
-pub const _SV_SSTACK: u32 = 1;
-pub const _SV_INTR: u32 = 2;
-pub const _SV_RESET: u32 = 4;
-pub const _SV_IGNCHILD: u32 = 8;
-pub const SA_NOCLDSTOP: u32 = 8;
-pub const SA_STACK: u32 = 1;
-pub const SA_ONSTACK: u32 = 1;
-pub const SA_RESTART: u32 = 2;
-pub const SA_RESETHAND: u32 = 4;
-pub const SA_NODEFER: u32 = 32;
-pub const SA_NOCLDWAIT: u32 = 256;
-pub const SA_SIGINFO: u32 = 512;
-pub const SIG_BLOCK: u32 = 1;
-pub const SIG_UNBLOCK: u32 = 2;
-pub const SIG_SETMASK: u32 = 4;
-pub const MINSIGSTKSZ: u32 = 4096;
-pub const SIGSTKSZ: u32 = 16384;
-pub const SA_UNSUPPORTED: u32 = 1024;
-pub const SA_EXPOSE_TAGBITS: u32 = 2048;
-pub const SA_NOMASK: u32 = 32;
-pub const SA_ONESHOT: u32 = 4;
-pub const SI_MAX_SIZE: u32 = 128;
-pub const SI_USER: u32 = 0;
-pub const SI_KERNEL: u32 = 128;
-pub const SI_QUEUE: i32 = -1;
-pub const SI_TIMER: i32 = -2;
-pub const SI_MESGQ: i32 = -3;
-pub const SI_ASYNCIO: i32 = -4;
-pub const SI_SIGIO: i32 = -5;
-pub const SI_TKILL: i32 = -6;
-pub const SI_DETHREAD: i32 = -7;
-pub const SI_ASYNCNL: i32 = -60;
-pub const ILL_ILLOPC: u32 = 1;
-pub const ILL_ILLOPN: u32 = 2;
-pub const ILL_ILLADR: u32 = 3;
-pub const ILL_ILLTRP: u32 = 4;
-pub const ILL_PRVOPC: u32 = 5;
-pub const ILL_PRVREG: u32 = 6;
-pub const ILL_COPROC: u32 = 7;
-pub const ILL_BADSTK: u32 = 8;
-pub const ILL_BADIADDR: u32 = 9;
-pub const __ILL_BREAK: u32 = 10;
-pub const __ILL_BNDMOD: u32 = 11;
-pub const NSIGILL: u32 = 11;
-pub const FPE_INTDIV: u32 = 1;
-pub const FPE_INTOVF: u32 = 2;
-pub const FPE_FLTDIV: u32 = 3;
-pub const FPE_FLTOVF: u32 = 4;
-pub const FPE_FLTUND: u32 = 5;
-pub const FPE_FLTRES: u32 = 6;
-pub const FPE_FLTINV: u32 = 7;
-pub const FPE_FLTSUB: u32 = 8;
-pub const __FPE_DECOVF: u32 = 9;
-pub const __FPE_DECDIV: u32 = 10;
-pub const __FPE_DECERR: u32 = 11;
-pub const __FPE_INVASC: u32 = 12;
-pub const __FPE_INVDEC: u32 = 13;
-pub const FPE_FLTUNK: u32 = 14;
-pub const FPE_CONDTRAP: u32 = 15;
-pub const NSIGFPE: u32 = 15;
-pub const SEGV_MAPERR: u32 = 1;
-pub const SEGV_ACCERR: u32 = 2;
-pub const SEGV_BNDERR: u32 = 3;
-pub const SEGV_PKUERR: u32 = 4;
-pub const SEGV_ACCADI: u32 = 5;
-pub const SEGV_ADIDERR: u32 = 6;
-pub const SEGV_ADIPERR: u32 = 7;
-pub const SEGV_MTEAERR: u32 = 8;
-pub const SEGV_MTESERR: u32 = 9;
-pub const NSIGSEGV: u32 = 9;
-pub const BUS_ADRALN: u32 = 1;
-pub const BUS_ADRERR: u32 = 2;
-pub const BUS_OBJERR: u32 = 3;
-pub const BUS_MCEERR_AR: u32 = 4;
-pub const BUS_MCEERR_AO: u32 = 5;
-pub const NSIGBUS: u32 = 5;
-pub const TRAP_BRKPT: u32 = 1;
-pub const TRAP_TRACE: u32 = 2;
-pub const TRAP_BRANCH: u32 = 3;
-pub const TRAP_HWBKPT: u32 = 4;
-pub const TRAP_UNK: u32 = 5;
-pub const TRAP_PERF: u32 = 6;
-pub const NSIGTRAP: u32 = 6;
-pub const TRAP_PERF_FLAG_ASYNC: u32 = 1;
-pub const CLD_EXITED: u32 = 1;
-pub const CLD_KILLED: u32 = 2;
-pub const CLD_DUMPED: u32 = 3;
-pub const CLD_TRAPPED: u32 = 4;
-pub const CLD_STOPPED: u32 = 5;
-pub const CLD_CONTINUED: u32 = 6;
-pub const NSIGCHLD: u32 = 6;
-pub const POLL_IN: u32 = 1;
-pub const POLL_OUT: u32 = 2;
-pub const POLL_MSG: u32 = 3;
-pub const POLL_ERR: u32 = 4;
-pub const POLL_PRI: u32 = 5;
-pub const POLL_HUP: u32 = 6;
-pub const NSIGPOLL: u32 = 6;
-pub const SYS_SECCOMP: u32 = 1;
-pub const SYS_USER_DISPATCH: u32 = 2;
-pub const NSIGSYS: u32 = 2;
-pub const EMT_TAGOVF: u32 = 1;
-pub const NSIGEMT: u32 = 1;
-pub const SIGEV_SIGNAL: u32 = 0;
-pub const SIGEV_NONE: u32 = 1;
-pub const SIGEV_THREAD: u32 = 2;
-pub const SIGEV_THREAD_ID: u32 = 4;
-pub const SIGEV_MAX_SIZE: u32 = 64;
-pub const SI_NOINFO: u32 = 32767;
-pub const SS_ONSTACK: u32 = 1;
-pub const SS_DISABLE: u32 = 2;
-pub const SS_AUTODISARM: u32 = 2147483648;
-pub const SS_FLAG_BITS: u32 = 2147483648;
-pub const S_IFMT: u32 = 61440;
-pub const S_IFSOCK: u32 = 49152;
-pub const S_IFLNK: u32 = 40960;
-pub const S_IFREG: u32 = 32768;
-pub const S_IFBLK: u32 = 24576;
-pub const S_IFDIR: u32 = 16384;
-pub const S_IFCHR: u32 = 8192;
-pub const S_IFIFO: u32 = 4096;
-pub const S_ISUID: u32 = 2048;
-pub const S_ISGID: u32 = 1024;
-pub const S_ISVTX: u32 = 512;
-pub const S_IRWXU: u32 = 448;
-pub const S_IRUSR: u32 = 256;
-pub const S_IWUSR: u32 = 128;
-pub const S_IXUSR: u32 = 64;
-pub const S_IRWXG: u32 = 56;
-pub const S_IRGRP: u32 = 32;
-pub const S_IWGRP: u32 = 16;
-pub const S_IXGRP: u32 = 8;
-pub const S_IRWXO: u32 = 7;
-pub const S_IROTH: u32 = 4;
-pub const S_IWOTH: u32 = 2;
-pub const S_IXOTH: u32 = 1;
-pub const STATX_TYPE: u32 = 1;
-pub const STATX_MODE: u32 = 2;
-pub const STATX_NLINK: u32 = 4;
-pub const STATX_UID: u32 = 8;
-pub const STATX_GID: u32 = 16;
-pub const STATX_ATIME: u32 = 32;
-pub const STATX_MTIME: u32 = 64;
-pub const STATX_CTIME: u32 = 128;
-pub const STATX_INO: u32 = 256;
-pub const STATX_SIZE: u32 = 512;
-pub const STATX_BLOCKS: u32 = 1024;
-pub const STATX_BASIC_STATS: u32 = 2047;
-pub const STATX_BTIME: u32 = 2048;
-pub const STATX_MNT_ID: u32 = 4096;
-pub const STATX_DIOALIGN: u32 = 8192;
-pub const STATX__RESERVED: u32 = 2147483648;
-pub const STATX_ALL: u32 = 4095;
-pub const STATX_ATTR_COMPRESSED: u32 = 4;
-pub const STATX_ATTR_IMMUTABLE: u32 = 16;
-pub const STATX_ATTR_APPEND: u32 = 32;
-pub const STATX_ATTR_NODUMP: u32 = 64;
-pub const STATX_ATTR_ENCRYPTED: u32 = 2048;
-pub const STATX_ATTR_AUTOMOUNT: u32 = 4096;
-pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192;
-pub const STATX_ATTR_VERITY: u32 = 1048576;
-pub const STATX_ATTR_DAX: u32 = 2097152;
-pub const SI_LOAD_SHIFT: u32 = 16;
-pub const TCP_MSS_DEFAULT: u32 = 536;
-pub const TCP_MSS_DESIRED: u32 = 1220;
-pub const TCP_NODELAY: u32 = 1;
-pub const TCP_MAXSEG: u32 = 2;
-pub const TCP_CORK: u32 = 3;
-pub const TCP_KEEPIDLE: u32 = 4;
-pub const TCP_KEEPINTVL: u32 = 5;
-pub const TCP_KEEPCNT: u32 = 6;
-pub const TCP_SYNCNT: u32 = 7;
-pub const TCP_LINGER2: u32 = 8;
-pub const TCP_DEFER_ACCEPT: u32 = 9;
-pub const TCP_WINDOW_CLAMP: u32 = 10;
-pub const TCP_INFO: u32 = 11;
-pub const TCP_QUICKACK: u32 = 12;
-pub const TCP_CONGESTION: u32 = 13;
-pub const TCP_MD5SIG: u32 = 14;
-pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16;
-pub const TCP_THIN_DUPACK: u32 = 17;
-pub const TCP_USER_TIMEOUT: u32 = 18;
-pub const TCP_REPAIR: u32 = 19;
-pub const TCP_REPAIR_QUEUE: u32 = 20;
-pub const TCP_QUEUE_SEQ: u32 = 21;
-pub const TCP_REPAIR_OPTIONS: u32 = 22;
-pub const TCP_FASTOPEN: u32 = 23;
-pub const TCP_TIMESTAMP: u32 = 24;
-pub const TCP_NOTSENT_LOWAT: u32 = 25;
-pub const TCP_CC_INFO: u32 = 26;
-pub const TCP_SAVE_SYN: u32 = 27;
-pub const TCP_SAVED_SYN: u32 = 28;
-pub const TCP_REPAIR_WINDOW: u32 = 29;
-pub const TCP_FASTOPEN_CONNECT: u32 = 30;
-pub const TCP_ULP: u32 = 31;
-pub const TCP_MD5SIG_EXT: u32 = 32;
-pub const TCP_FASTOPEN_KEY: u32 = 33;
-pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34;
-pub const TCP_ZEROCOPY_RECEIVE: u32 = 35;
-pub const TCP_INQ: u32 = 36;
-pub const TCP_CM_INQ: u32 = 36;
-pub const TCP_TX_DELAY: u32 = 37;
-pub const TCP_REPAIR_ON: u32 = 1;
-pub const TCP_REPAIR_OFF: u32 = 0;
-pub const TCP_REPAIR_OFF_NO_WP: i32 = -1;
-pub const TCPI_OPT_TIMESTAMPS: u32 = 1;
-pub const TCPI_OPT_SACK: u32 = 2;
-pub const TCPI_OPT_WSCALE: u32 = 4;
-pub const TCPI_OPT_ECN: u32 = 8;
-pub const TCPI_OPT_ECN_SEEN: u32 = 16;
-pub const TCPI_OPT_SYN_DATA: u32 = 32;
-pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80;
-pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
-pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
-pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
-pub const TIOCPKT_DATA: u32 = 0;
-pub const TIOCPKT_FLUSHREAD: u32 = 1;
-pub const TIOCPKT_FLUSHWRITE: u32 = 2;
-pub const TIOCPKT_STOP: u32 = 4;
-pub const TIOCPKT_START: u32 = 8;
-pub const TIOCPKT_NOSTOP: u32 = 16;
-pub const TIOCPKT_DOSTOP: u32 = 32;
-pub const TIOCPKT_IOCTL: u32 = 64;
-pub const IGNBRK: u32 = 1;
-pub const BRKINT: u32 = 2;
-pub const IGNPAR: u32 = 4;
-pub const PARMRK: u32 = 8;
-pub const INPCK: u32 = 16;
-pub const ISTRIP: u32 = 32;
-pub const INLCR: u32 = 64;
-pub const IGNCR: u32 = 128;
-pub const ICRNL: u32 = 256;
-pub const IXANY: u32 = 2048;
-pub const OPOST: u32 = 1;
-pub const OCRNL: u32 = 8;
-pub const ONOCR: u32 = 16;
-pub const ONLRET: u32 = 32;
-pub const OFILL: u32 = 64;
-pub const OFDEL: u32 = 128;
-pub const B0: u32 = 0;
-pub const B50: u32 = 1;
-pub const B75: u32 = 2;
-pub const B110: u32 = 3;
-pub const B134: u32 = 4;
-pub const B150: u32 = 5;
-pub const B200: u32 = 6;
-pub const B300: u32 = 7;
-pub const B600: u32 = 8;
-pub const B1200: u32 = 9;
-pub const B1800: u32 = 10;
-pub const B2400: u32 = 11;
-pub const B4800: u32 = 12;
-pub const B9600: u32 = 13;
-pub const B19200: u32 = 14;
-pub const B38400: u32 = 15;
-pub const EXTA: u32 = 14;
-pub const EXTB: u32 = 15;
-pub const ADDRB: u32 = 536870912;
-pub const CMSPAR: u32 = 1073741824;
-pub const CRTSCTS: u32 = 2147483648;
-pub const IBSHIFT: u32 = 16;
-pub const TCOOFF: u32 = 0;
-pub const TCOON: u32 = 1;
-pub const TCIOFF: u32 = 2;
-pub const TCION: u32 = 3;
-pub const TCIFLUSH: u32 = 0;
-pub const TCOFLUSH: u32 = 1;
-pub const TCIOFLUSH: u32 = 2;
-pub const NCC: u32 = 8;
-pub const NCCS: u32 = 17;
-pub const VINTR: u32 = 0;
-pub const VQUIT: u32 = 1;
-pub const VERASE: u32 = 2;
-pub const VKILL: u32 = 3;
-pub const VEOF: u32 = 4;
-pub const VEOL: u32 = 5;
-pub const VEOL2: u32 = 6;
-pub const VSWTC: u32 = 7;
-pub const VSTART: u32 = 8;
-pub const VSTOP: u32 = 9;
-pub const VSUSP: u32 = 10;
-pub const VDSUSP: u32 = 11;
-pub const VREPRINT: u32 = 12;
-pub const VDISCARD: u32 = 13;
-pub const VWERASE: u32 = 14;
-pub const VLNEXT: u32 = 15;
-pub const VMIN: u32 = 4;
-pub const VTIME: u32 = 5;
-pub const IUCLC: u32 = 512;
-pub const IXON: u32 = 1024;
-pub const IXOFF: u32 = 4096;
-pub const IMAXBEL: u32 = 8192;
-pub const IUTF8: u32 = 16384;
-pub const OLCUC: u32 = 2;
-pub const ONLCR: u32 = 4;
-pub const NLDLY: u32 = 256;
-pub const NL0: u32 = 0;
-pub const NL1: u32 = 256;
-pub const CRDLY: u32 = 1536;
-pub const CR0: u32 = 0;
-pub const CR1: u32 = 512;
-pub const CR2: u32 = 1024;
-pub const CR3: u32 = 1536;
-pub const TABDLY: u32 = 6144;
-pub const TAB0: u32 = 0;
-pub const TAB1: u32 = 2048;
-pub const TAB2: u32 = 4096;
-pub const TAB3: u32 = 6144;
-pub const XTABS: u32 = 6144;
-pub const BSDLY: u32 = 8192;
-pub const BS0: u32 = 0;
-pub const BS1: u32 = 8192;
-pub const VTDLY: u32 = 16384;
-pub const VT0: u32 = 0;
-pub const VT1: u32 = 16384;
-pub const FFDLY: u32 = 32768;
-pub const FF0: u32 = 0;
-pub const FF1: u32 = 32768;
-pub const PAGEOUT: u32 = 65536;
-pub const WRAP: u32 = 131072;
-pub const CBAUD: u32 = 4111;
-pub const CSIZE: u32 = 48;
-pub const CS5: u32 = 0;
-pub const CS6: u32 = 16;
-pub const CS7: u32 = 32;
-pub const CS8: u32 = 48;
-pub const CSTOPB: u32 = 64;
-pub const CREAD: u32 = 128;
-pub const PARENB: u32 = 256;
-pub const PARODD: u32 = 512;
-pub const HUPCL: u32 = 1024;
-pub const CLOCAL: u32 = 2048;
-pub const CBAUDEX: u32 = 4096;
-pub const BOTHER: u32 = 4096;
-pub const B57600: u32 = 4097;
-pub const B115200: u32 = 4098;
-pub const B230400: u32 = 4099;
-pub const B460800: u32 = 4100;
-pub const B76800: u32 = 4101;
-pub const B153600: u32 = 4102;
-pub const B307200: u32 = 4103;
-pub const B614400: u32 = 4104;
-pub const B921600: u32 = 4105;
-pub const B500000: u32 = 4106;
-pub const B576000: u32 = 4107;
-pub const B1000000: u32 = 4108;
-pub const B1152000: u32 = 4109;
-pub const B1500000: u32 = 4110;
-pub const B2000000: u32 = 4111;
-pub const CIBAUD: u32 = 269418496;
-pub const ISIG: u32 = 1;
-pub const ICANON: u32 = 2;
-pub const XCASE: u32 = 4;
-pub const ECHO: u32 = 8;
-pub const ECHOE: u32 = 16;
-pub const ECHOK: u32 = 32;
-pub const ECHONL: u32 = 64;
-pub const NOFLSH: u32 = 128;
-pub const TOSTOP: u32 = 256;
-pub const ECHOCTL: u32 = 512;
-pub const ECHOPRT: u32 = 1024;
-pub const ECHOKE: u32 = 2048;
-pub const DEFECHO: u32 = 4096;
-pub const FLUSHO: u32 = 8192;
-pub const PENDIN: u32 = 16384;
-pub const IEXTEN: u32 = 32768;
-pub const EXTPROC: u32 = 65536;
-pub const TIOCM_LE: u32 = 1;
-pub const TIOCM_DTR: u32 = 2;
-pub const TIOCM_RTS: u32 = 4;
-pub const TIOCM_ST: u32 = 8;
-pub const TIOCM_SR: u32 = 16;
-pub const TIOCM_CTS: u32 = 32;
-pub const TIOCM_CAR: u32 = 64;
-pub const TIOCM_RNG: u32 = 128;
-pub const TIOCM_DSR: u32 = 256;
-pub const TIOCM_CD: u32 = 64;
-pub const TIOCM_RI: u32 = 128;
-pub const TIOCM_OUT1: u32 = 8192;
-pub const TIOCM_OUT2: u32 = 16384;
-pub const TIOCM_LOOP: u32 = 32768;
-pub const TIOCSER_TEMT: u32 = 1;
-pub const TCSANOW: u32 = 0;
-pub const TCSADRAIN: u32 = 1;
-pub const TCSAFLUSH: u32 = 2;
-pub const UIO_FASTIOV: u32 = 8;
-pub const UIO_MAXIOV: u32 = 1024;
-pub const UNIX_PATH_MAX: u32 = 108;
-pub const __NR_restart_syscall: u32 = 0;
-pub const __NR_exit: u32 = 1;
-pub const __NR_fork: u32 = 2;
-pub const __NR_read: u32 = 3;
-pub const __NR_write: u32 = 4;
-pub const __NR_open: u32 = 5;
-pub const __NR_close: u32 = 6;
-pub const __NR_wait4: u32 = 7;
-pub const __NR_creat: u32 = 8;
-pub const __NR_link: u32 = 9;
-pub const __NR_unlink: u32 = 10;
-pub const __NR_execv: u32 = 11;
-pub const __NR_chdir: u32 = 12;
-pub const __NR_chown: u32 = 13;
-pub const __NR_mknod: u32 = 14;
-pub const __NR_chmod: u32 = 15;
-pub const __NR_lchown: u32 = 16;
-pub const __NR_brk: u32 = 17;
-pub const __NR_perfctr: u32 = 18;
-pub const __NR_lseek: u32 = 19;
-pub const __NR_getpid: u32 = 20;
-pub const __NR_capget: u32 = 21;
-pub const __NR_capset: u32 = 22;
-pub const __NR_setuid: u32 = 23;
-pub const __NR_getuid: u32 = 24;
-pub const __NR_vmsplice: u32 = 25;
-pub const __NR_ptrace: u32 = 26;
-pub const __NR_alarm: u32 = 27;
-pub const __NR_sigaltstack: u32 = 28;
-pub const __NR_pause: u32 = 29;
-pub const __NR_utime: u32 = 30;
-pub const __NR_lchown32: u32 = 31;
-pub const __NR_fchown32: u32 = 32;
-pub const __NR_access: u32 = 33;
-pub const __NR_nice: u32 = 34;
-pub const __NR_chown32: u32 = 35;
-pub const __NR_sync: u32 = 36;
-pub const __NR_kill: u32 = 37;
-pub const __NR_stat: u32 = 38;
-pub const __NR_sendfile: u32 = 39;
-pub const __NR_lstat: u32 = 40;
-pub const __NR_dup: u32 = 41;
-pub const __NR_pipe: u32 = 42;
-pub const __NR_times: u32 = 43;
-pub const __NR_getuid32: u32 = 44;
-pub const __NR_umount2: u32 = 45;
-pub const __NR_setgid: u32 = 46;
-pub const __NR_getgid: u32 = 47;
-pub const __NR_signal: u32 = 48;
-pub const __NR_geteuid: u32 = 49;
-pub const __NR_getegid: u32 = 50;
-pub const __NR_acct: u32 = 51;
-pub const __NR_getgid32: u32 = 53;
-pub const __NR_ioctl: u32 = 54;
-pub const __NR_reboot: u32 = 55;
-pub const __NR_mmap2: u32 = 56;
-pub const __NR_symlink: u32 = 57;
-pub const __NR_readlink: u32 = 58;
-pub const __NR_execve: u32 = 59;
-pub const __NR_umask: u32 = 60;
-pub const __NR_chroot: u32 = 61;
-pub const __NR_fstat: u32 = 62;
-pub const __NR_fstat64: u32 = 63;
-pub const __NR_getpagesize: u32 = 64;
-pub const __NR_msync: u32 = 65;
-pub const __NR_vfork: u32 = 66;
-pub const __NR_pread64: u32 = 67;
-pub const __NR_pwrite64: u32 = 68;
-pub const __NR_geteuid32: u32 = 69;
-pub const __NR_getegid32: u32 = 70;
-pub const __NR_mmap: u32 = 71;
-pub const __NR_setreuid32: u32 = 72;
-pub const __NR_munmap: u32 = 73;
-pub const __NR_mprotect: u32 = 74;
-pub const __NR_madvise: u32 = 75;
-pub const __NR_vhangup: u32 = 76;
-pub const __NR_truncate64: u32 = 77;
-pub const __NR_mincore: u32 = 78;
-pub const __NR_getgroups: u32 = 79;
-pub const __NR_setgroups: u32 = 80;
-pub const __NR_getpgrp: u32 = 81;
-pub const __NR_setgroups32: u32 = 82;
-pub const __NR_setitimer: u32 = 83;
-pub const __NR_ftruncate64: u32 = 84;
-pub const __NR_swapon: u32 = 85;
-pub const __NR_getitimer: u32 = 86;
-pub const __NR_setuid32: u32 = 87;
-pub const __NR_sethostname: u32 = 88;
-pub const __NR_setgid32: u32 = 89;
-pub const __NR_dup2: u32 = 90;
-pub const __NR_setfsuid32: u32 = 91;
-pub const __NR_fcntl: u32 = 92;
-pub const __NR_select: u32 = 93;
-pub const __NR_setfsgid32: u32 = 94;
-pub const __NR_fsync: u32 = 95;
-pub const __NR_setpriority: u32 = 96;
-pub const __NR_socket: u32 = 97;
-pub const __NR_connect: u32 = 98;
-pub const __NR_accept: u32 = 99;
-pub const __NR_getpriority: u32 = 100;
-pub const __NR_rt_sigreturn: u32 = 101;
-pub const __NR_rt_sigaction: u32 = 102;
-pub const __NR_rt_sigprocmask: u32 = 103;
-pub const __NR_rt_sigpending: u32 = 104;
-pub const __NR_rt_sigtimedwait: u32 = 105;
-pub const __NR_rt_sigqueueinfo: u32 = 106;
-pub const __NR_rt_sigsuspend: u32 = 107;
-pub const __NR_setresuid32: u32 = 108;
-pub const __NR_getresuid32: u32 = 109;
-pub const __NR_setresgid32: u32 = 110;
-pub const __NR_getresgid32: u32 = 111;
-pub const __NR_setregid32: u32 = 112;
-pub const __NR_recvmsg: u32 = 113;
-pub const __NR_sendmsg: u32 = 114;
-pub const __NR_getgroups32: u32 = 115;
-pub const __NR_gettimeofday: u32 = 116;
-pub const __NR_getrusage: u32 = 117;
-pub const __NR_getsockopt: u32 = 118;
-pub const __NR_getcwd: u32 = 119;
-pub const __NR_readv: u32 = 120;
-pub const __NR_writev: u32 = 121;
-pub const __NR_settimeofday: u32 = 122;
-pub const __NR_fchown: u32 = 123;
-pub const __NR_fchmod: u32 = 124;
-pub const __NR_recvfrom: u32 = 125;
-pub const __NR_setreuid: u32 = 126;
-pub const __NR_setregid: u32 = 127;
-pub const __NR_rename: u32 = 128;
-pub const __NR_truncate: u32 = 129;
-pub const __NR_ftruncate: u32 = 130;
-pub const __NR_flock: u32 = 131;
-pub const __NR_lstat64: u32 = 132;
-pub const __NR_sendto: u32 = 133;
-pub const __NR_shutdown: u32 = 134;
-pub const __NR_socketpair: u32 = 135;
-pub const __NR_mkdir: u32 = 136;
-pub const __NR_rmdir: u32 = 137;
-pub const __NR_utimes: u32 = 138;
-pub const __NR_stat64: u32 = 139;
-pub const __NR_sendfile64: u32 = 140;
-pub const __NR_getpeername: u32 = 141;
-pub const __NR_futex: u32 = 142;
-pub const __NR_gettid: u32 = 143;
-pub const __NR_getrlimit: u32 = 144;
-pub const __NR_setrlimit: u32 = 145;
-pub const __NR_pivot_root: u32 = 146;
-pub const __NR_prctl: u32 = 147;
-pub const __NR_pciconfig_read: u32 = 148;
-pub const __NR_pciconfig_write: u32 = 149;
-pub const __NR_getsockname: u32 = 150;
-pub const __NR_inotify_init: u32 = 151;
-pub const __NR_inotify_add_watch: u32 = 152;
-pub const __NR_poll: u32 = 153;
-pub const __NR_getdents64: u32 = 154;
-pub const __NR_fcntl64: u32 = 155;
-pub const __NR_inotify_rm_watch: u32 = 156;
-pub const __NR_statfs: u32 = 157;
-pub const __NR_fstatfs: u32 = 158;
-pub const __NR_umount: u32 = 159;
-pub const __NR_sched_set_affinity: u32 = 160;
-pub const __NR_sched_get_affinity: u32 = 161;
-pub const __NR_getdomainname: u32 = 162;
-pub const __NR_setdomainname: u32 = 163;
-pub const __NR_quotactl: u32 = 165;
-pub const __NR_set_tid_address: u32 = 166;
-pub const __NR_mount: u32 = 167;
-pub const __NR_ustat: u32 = 168;
-pub const __NR_setxattr: u32 = 169;
-pub const __NR_lsetxattr: u32 = 170;
-pub const __NR_fsetxattr: u32 = 171;
-pub const __NR_getxattr: u32 = 172;
-pub const __NR_lgetxattr: u32 = 173;
-pub const __NR_getdents: u32 = 174;
-pub const __NR_setsid: u32 = 175;
-pub const __NR_fchdir: u32 = 176;
-pub const __NR_fgetxattr: u32 = 177;
-pub const __NR_listxattr: u32 = 178;
-pub const __NR_llistxattr: u32 = 179;
-pub const __NR_flistxattr: u32 = 180;
-pub const __NR_removexattr: u32 = 181;
-pub const __NR_lremovexattr: u32 = 182;
-pub const __NR_sigpending: u32 = 183;
-pub const __NR_query_module: u32 = 184;
-pub const __NR_setpgid: u32 = 185;
-pub const __NR_fremovexattr: u32 = 186;
-pub const __NR_tkill: u32 = 187;
-pub const __NR_exit_group: u32 = 188;
-pub const __NR_uname: u32 = 189;
-pub const __NR_init_module: u32 = 190;
-pub const __NR_personality: u32 = 191;
-pub const __NR_remap_file_pages: u32 = 192;
-pub const __NR_epoll_create: u32 = 193;
-pub const __NR_epoll_ctl: u32 = 194;
-pub const __NR_epoll_wait: u32 = 195;
-pub const __NR_ioprio_set: u32 = 196;
-pub const __NR_getppid: u32 = 197;
-pub const __NR_sigaction: u32 = 198;
-pub const __NR_sgetmask: u32 = 199;
-pub const __NR_ssetmask: u32 = 200;
-pub const __NR_sigsuspend: u32 = 201;
-pub const __NR_oldlstat: u32 = 202;
-pub const __NR_uselib: u32 = 203;
-pub const __NR_readdir: u32 = 204;
-pub const __NR_readahead: u32 = 205;
-pub const __NR_socketcall: u32 = 206;
-pub const __NR_syslog: u32 = 207;
-pub const __NR_lookup_dcookie: u32 = 208;
-pub const __NR_fadvise64: u32 = 209;
-pub const __NR_fadvise64_64: u32 = 210;
-pub const __NR_tgkill: u32 = 211;
-pub const __NR_waitpid: u32 = 212;
-pub const __NR_swapoff: u32 = 213;
-pub const __NR_sysinfo: u32 = 214;
-pub const __NR_ipc: u32 = 215;
-pub const __NR_sigreturn: u32 = 216;
-pub const __NR_clone: u32 = 217;
-pub const __NR_ioprio_get: u32 = 218;
-pub const __NR_adjtimex: u32 = 219;
-pub const __NR_sigprocmask: u32 = 220;
-pub const __NR_create_module: u32 = 221;
-pub const __NR_delete_module: u32 = 222;
-pub const __NR_get_kernel_syms: u32 = 223;
-pub const __NR_getpgid: u32 = 224;
-pub const __NR_bdflush: u32 = 225;
-pub const __NR_sysfs: u32 = 226;
-pub const __NR_afs_syscall: u32 = 227;
-pub const __NR_setfsuid: u32 = 228;
-pub const __NR_setfsgid: u32 = 229;
-pub const __NR__newselect: u32 = 230;
-pub const __NR_time: u32 = 231;
-pub const __NR_splice: u32 = 232;
-pub const __NR_stime: u32 = 233;
-pub const __NR_statfs64: u32 = 234;
-pub const __NR_fstatfs64: u32 = 235;
-pub const __NR__llseek: u32 = 236;
-pub const __NR_mlock: u32 = 237;
-pub const __NR_munlock: u32 = 238;
-pub const __NR_mlockall: u32 = 239;
-pub const __NR_munlockall: u32 = 240;
-pub const __NR_sched_setparam: u32 = 241;
-pub const __NR_sched_getparam: u32 = 242;
-pub const __NR_sched_setscheduler: u32 = 243;
-pub const __NR_sched_getscheduler: u32 = 244;
-pub const __NR_sched_yield: u32 = 245;
-pub const __NR_sched_get_priority_max: u32 = 246;
-pub const __NR_sched_get_priority_min: u32 = 247;
-pub const __NR_sched_rr_get_interval: u32 = 248;
-pub const __NR_nanosleep: u32 = 249;
-pub const __NR_mremap: u32 = 250;
-pub const __NR__sysctl: u32 = 251;
-pub const __NR_getsid: u32 = 252;
-pub const __NR_fdatasync: u32 = 253;
-pub const __NR_nfsservctl: u32 = 254;
-pub const __NR_sync_file_range: u32 = 255;
-pub const __NR_clock_settime: u32 = 256;
-pub const __NR_clock_gettime: u32 = 257;
-pub const __NR_clock_getres: u32 = 258;
-pub const __NR_clock_nanosleep: u32 = 259;
-pub const __NR_sched_getaffinity: u32 = 260;
-pub const __NR_sched_setaffinity: u32 = 261;
-pub const __NR_timer_settime: u32 = 262;
-pub const __NR_timer_gettime: u32 = 263;
-pub const __NR_timer_getoverrun: u32 = 264;
-pub const __NR_timer_delete: u32 = 265;
-pub const __NR_timer_create: u32 = 266;
-pub const __NR_vserver: u32 = 267;
-pub const __NR_io_setup: u32 = 268;
-pub const __NR_io_destroy: u32 = 269;
-pub const __NR_io_submit: u32 = 270;
-pub const __NR_io_cancel: u32 = 271;
-pub const __NR_io_getevents: u32 = 272;
-pub const __NR_mq_open: u32 = 273;
-pub const __NR_mq_unlink: u32 = 274;
-pub const __NR_mq_timedsend: u32 = 275;
-pub const __NR_mq_timedreceive: u32 = 276;
-pub const __NR_mq_notify: u32 = 277;
-pub const __NR_mq_getsetattr: u32 = 278;
-pub const __NR_waitid: u32 = 279;
-pub const __NR_tee: u32 = 280;
-pub const __NR_add_key: u32 = 281;
-pub const __NR_request_key: u32 = 282;
-pub const __NR_keyctl: u32 = 283;
-pub const __NR_openat: u32 = 284;
-pub const __NR_mkdirat: u32 = 285;
-pub const __NR_mknodat: u32 = 286;
-pub const __NR_fchownat: u32 = 287;
-pub const __NR_futimesat: u32 = 288;
-pub const __NR_fstatat64: u32 = 289;
-pub const __NR_unlinkat: u32 = 290;
-pub const __NR_renameat: u32 = 291;
-pub const __NR_linkat: u32 = 292;
-pub const __NR_symlinkat: u32 = 293;
-pub const __NR_readlinkat: u32 = 294;
-pub const __NR_fchmodat: u32 = 295;
-pub const __NR_faccessat: u32 = 296;
-pub const __NR_pselect6: u32 = 297;
-pub const __NR_ppoll: u32 = 298;
-pub const __NR_unshare: u32 = 299;
-pub const __NR_set_robust_list: u32 = 300;
-pub const __NR_get_robust_list: u32 = 301;
-pub const __NR_migrate_pages: u32 = 302;
-pub const __NR_mbind: u32 = 303;
-pub const __NR_get_mempolicy: u32 = 304;
-pub const __NR_set_mempolicy: u32 = 305;
-pub const __NR_kexec_load: u32 = 306;
-pub const __NR_move_pages: u32 = 307;
-pub const __NR_getcpu: u32 = 308;
-pub const __NR_epoll_pwait: u32 = 309;
-pub const __NR_utimensat: u32 = 310;
-pub const __NR_signalfd: u32 = 311;
-pub const __NR_timerfd_create: u32 = 312;
-pub const __NR_eventfd: u32 = 313;
-pub const __NR_fallocate: u32 = 314;
-pub const __NR_timerfd_settime: u32 = 315;
-pub const __NR_timerfd_gettime: u32 = 316;
-pub const __NR_signalfd4: u32 = 317;
-pub const __NR_eventfd2: u32 = 318;
-pub const __NR_epoll_create1: u32 = 319;
-pub const __NR_dup3: u32 = 320;
-pub const __NR_pipe2: u32 = 321;
-pub const __NR_inotify_init1: u32 = 322;
-pub const __NR_accept4: u32 = 323;
-pub const __NR_preadv: u32 = 324;
-pub const __NR_pwritev: u32 = 325;
-pub const __NR_rt_tgsigqueueinfo: u32 = 326;
-pub const __NR_perf_event_open: u32 = 327;
-pub const __NR_recvmmsg: u32 = 328;
-pub const __NR_fanotify_init: u32 = 329;
-pub const __NR_fanotify_mark: u32 = 330;
-pub const __NR_prlimit64: u32 = 331;
-pub const __NR_name_to_handle_at: u32 = 332;
-pub const __NR_open_by_handle_at: u32 = 333;
-pub const __NR_clock_adjtime: u32 = 334;
-pub const __NR_syncfs: u32 = 335;
-pub const __NR_sendmmsg: u32 = 336;
-pub const __NR_setns: u32 = 337;
-pub const __NR_process_vm_readv: u32 = 338;
-pub const __NR_process_vm_writev: u32 = 339;
-pub const __NR_kern_features: u32 = 340;
-pub const __NR_kcmp: u32 = 341;
-pub const __NR_finit_module: u32 = 342;
-pub const __NR_sched_setattr: u32 = 343;
-pub const __NR_sched_getattr: u32 = 344;
-pub const __NR_renameat2: u32 = 345;
-pub const __NR_seccomp: u32 = 346;
-pub const __NR_getrandom: u32 = 347;
-pub const __NR_memfd_create: u32 = 348;
-pub const __NR_bpf: u32 = 349;
-pub const __NR_execveat: u32 = 350;
-pub const __NR_membarrier: u32 = 351;
-pub const __NR_userfaultfd: u32 = 352;
-pub const __NR_bind: u32 = 353;
-pub const __NR_listen: u32 = 354;
-pub const __NR_setsockopt: u32 = 355;
-pub const __NR_mlock2: u32 = 356;
-pub const __NR_copy_file_range: u32 = 357;
-pub const __NR_preadv2: u32 = 358;
-pub const __NR_pwritev2: u32 = 359;
-pub const __NR_statx: u32 = 360;
-pub const __NR_io_pgetevents: u32 = 361;
-pub const __NR_pkey_mprotect: u32 = 362;
-pub const __NR_pkey_alloc: u32 = 363;
-pub const __NR_pkey_free: u32 = 364;
-pub const __NR_rseq: u32 = 365;
-pub const __NR_semget: u32 = 393;
-pub const __NR_semctl: u32 = 394;
-pub const __NR_shmget: u32 = 395;
-pub const __NR_shmctl: u32 = 396;
-pub const __NR_shmat: u32 = 397;
-pub const __NR_shmdt: u32 = 398;
-pub const __NR_msgget: u32 = 399;
-pub const __NR_msgsnd: u32 = 400;
-pub const __NR_msgrcv: u32 = 401;
-pub const __NR_msgctl: u32 = 402;
-pub const __NR_clock_gettime64: u32 = 403;
-pub const __NR_clock_settime64: u32 = 404;
-pub const __NR_clock_adjtime64: u32 = 405;
-pub const __NR_clock_getres_time64: u32 = 406;
-pub const __NR_clock_nanosleep_time64: u32 = 407;
-pub const __NR_timer_gettime64: u32 = 408;
-pub const __NR_timer_settime64: u32 = 409;
-pub const __NR_timerfd_gettime64: u32 = 410;
-pub const __NR_timerfd_settime64: u32 = 411;
-pub const __NR_utimensat_time64: u32 = 412;
-pub const __NR_pselect6_time64: u32 = 413;
-pub const __NR_ppoll_time64: u32 = 414;
-pub const __NR_io_pgetevents_time64: u32 = 416;
-pub const __NR_recvmmsg_time64: u32 = 417;
-pub const __NR_mq_timedsend_time64: u32 = 418;
-pub const __NR_mq_timedreceive_time64: u32 = 419;
-pub const __NR_semtimedop_time64: u32 = 420;
-pub const __NR_rt_sigtimedwait_time64: u32 = 421;
-pub const __NR_futex_time64: u32 = 422;
-pub const __NR_sched_rr_get_interval_time64: u32 = 423;
-pub const __NR_pidfd_send_signal: u32 = 424;
-pub const __NR_io_uring_setup: u32 = 425;
-pub const __NR_io_uring_enter: u32 = 426;
-pub const __NR_io_uring_register: u32 = 427;
-pub const __NR_open_tree: u32 = 428;
-pub const __NR_move_mount: u32 = 429;
-pub const __NR_fsopen: u32 = 430;
-pub const __NR_fsconfig: u32 = 431;
-pub const __NR_fsmount: u32 = 432;
-pub const __NR_fspick: u32 = 433;
-pub const __NR_pidfd_open: u32 = 434;
-pub const __NR_close_range: u32 = 436;
-pub const __NR_openat2: u32 = 437;
-pub const __NR_pidfd_getfd: u32 = 438;
-pub const __NR_faccessat2: u32 = 439;
-pub const __NR_process_madvise: u32 = 440;
-pub const __NR_epoll_pwait2: u32 = 441;
-pub const __NR_mount_setattr: u32 = 442;
-pub const __NR_quotactl_fd: u32 = 443;
-pub const __NR_landlock_create_ruleset: u32 = 444;
-pub const __NR_landlock_add_rule: u32 = 445;
-pub const __NR_landlock_restrict_self: u32 = 446;
-pub const __NR_process_mrelease: u32 = 448;
-pub const __NR_futex_waitv: u32 = 449;
-pub const __NR_set_mempolicy_home_node: u32 = 450;
-pub const KERN_FEATURE_MIXED_MODE_STACK: u32 = 1;
-pub const __OLD_UTS_LEN: u32 = 8;
-pub const __NEW_UTS_LEN: u32 = 64;
-pub const WNOHANG: u32 = 1;
-pub const WUNTRACED: u32 = 2;
-pub const WSTOPPED: u32 = 2;
-pub const WEXITED: u32 = 4;
-pub const WCONTINUED: u32 = 8;
-pub const WNOWAIT: u32 = 16777216;
-pub const __WNOTHREAD: u32 = 536870912;
-pub const __WALL: u32 = 1073741824;
-pub const __WCLONE: u32 = 2147483648;
-pub const P_ALL: u32 = 0;
-pub const P_PID: u32 = 1;
-pub const P_PGID: u32 = 2;
-pub const P_PIDFD: u32 = 3;
-pub const XATTR_CREATE: u32 = 1;
-pub const XATTR_REPLACE: u32 = 2;
-pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0";
-pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0";
-pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0";
-pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0";
-pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0";
-pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0";
-pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0";
-pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0";
-pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0";
-pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0";
-pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0";
-pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0";
-pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0";
-pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0";
-pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0";
-pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0";
-pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0";
-pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0";
-pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0";
-pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0";
-pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0";
-pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0";
-pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0";
-pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0";
-pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0";
-pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0";
-pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0";
-pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0";
-pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0";
-pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0";
-pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0";
-pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0";
-pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0";
-pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0";
-pub const MFD_CLOEXEC: u32 = 1;
-pub const MFD_ALLOW_SEALING: u32 = 2;
-pub const MFD_HUGETLB: u32 = 4;
-pub const MFD_HUGE_SHIFT: u32 = 26;
-pub const MFD_HUGE_MASK: u32 = 63;
-pub const MFD_HUGE_64KB: u32 = 1073741824;
-pub const MFD_HUGE_512KB: u32 = 1275068416;
-pub const MFD_HUGE_1MB: u32 = 1342177280;
-pub const MFD_HUGE_2MB: u32 = 1409286144;
-pub const MFD_HUGE_8MB: u32 = 1543503872;
-pub const MFD_HUGE_16MB: u32 = 1610612736;
-pub const MFD_HUGE_32MB: u32 = 1677721600;
-pub const MFD_HUGE_256MB: u32 = 1879048192;
-pub const MFD_HUGE_512MB: u32 = 1946157056;
-pub const MFD_HUGE_1GB: u32 = 2013265920;
-pub const MFD_HUGE_2GB: u32 = 2080374784;
-pub const MFD_HUGE_16GB: u32 = 2281701376;
-pub const TFD_TIMER_ABSTIME: u32 = 1;
-pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2;
-pub const TFD_CLOEXEC: u32 = 4194304;
-pub const TFD_NONBLOCK: u32 = 16384;
-pub const USERFAULTFD_IOC: u32 = 170;
-pub const _UFFDIO_REGISTER: u32 = 0;
-pub const _UFFDIO_UNREGISTER: u32 = 1;
-pub const _UFFDIO_WAKE: u32 = 2;
-pub const _UFFDIO_COPY: u32 = 3;
-pub const _UFFDIO_ZEROPAGE: u32 = 4;
-pub const _UFFDIO_WRITEPROTECT: u32 = 6;
-pub const _UFFDIO_CONTINUE: u32 = 7;
-pub const _UFFDIO_API: u32 = 63;
-pub const UFFDIO: u32 = 170;
-pub const UFFD_EVENT_PAGEFAULT: u32 = 18;
-pub const UFFD_EVENT_FORK: u32 = 19;
-pub const UFFD_EVENT_REMAP: u32 = 20;
-pub const UFFD_EVENT_REMOVE: u32 = 21;
-pub const UFFD_EVENT_UNMAP: u32 = 22;
-pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1;
-pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2;
-pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4;
-pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1;
-pub const UFFD_FEATURE_EVENT_FORK: u32 = 2;
-pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4;
-pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8;
-pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16;
-pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32;
-pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64;
-pub const UFFD_FEATURE_SIGBUS: u32 = 128;
-pub const UFFD_FEATURE_THREAD_ID: u32 = 256;
-pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512;
-pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024;
-pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048;
-pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096;
-pub const UFFD_USER_MODE_ONLY: u32 = 1;
-pub const IORING_FILE_INDEX_ALLOC: i32 = -1;
-pub const IORING_SETUP_IOPOLL: u32 = 1;
-pub const IORING_SETUP_SQPOLL: u32 = 2;
-pub const IORING_SETUP_SQ_AFF: u32 = 4;
-pub const IORING_SETUP_CQSIZE: u32 = 8;
-pub const IORING_SETUP_CLAMP: u32 = 16;
-pub const IORING_SETUP_ATTACH_WQ: u32 = 32;
-pub const IORING_SETUP_R_DISABLED: u32 = 64;
-pub const IORING_SETUP_SUBMIT_ALL: u32 = 128;
-pub const IORING_SETUP_COOP_TASKRUN: u32 = 256;
-pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512;
-pub const IORING_SETUP_SQE128: u32 = 1024;
-pub const IORING_SETUP_CQE32: u32 = 2048;
-pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096;
-pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192;
-pub const IORING_URING_CMD_FIXED: u32 = 1;
-pub const IORING_FSYNC_DATASYNC: u32 = 1;
-pub const IORING_TIMEOUT_ABS: u32 = 1;
-pub const IORING_TIMEOUT_UPDATE: u32 = 2;
-pub const IORING_TIMEOUT_BOOTTIME: u32 = 4;
-pub const IORING_TIMEOUT_REALTIME: u32 = 8;
-pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16;
-pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32;
-pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12;
-pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18;
-pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648;
-pub const IORING_POLL_ADD_MULTI: u32 = 1;
-pub const IORING_POLL_UPDATE_EVENTS: u32 = 2;
-pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4;
-pub const IORING_POLL_ADD_LEVEL: u32 = 8;
-pub const IORING_ASYNC_CANCEL_ALL: u32 = 1;
-pub const IORING_ASYNC_CANCEL_FD: u32 = 2;
-pub const IORING_ASYNC_CANCEL_ANY: u32 = 4;
-pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8;
-pub const IORING_RECVSEND_POLL_FIRST: u32 = 1;
-pub const IORING_RECV_MULTISHOT: u32 = 2;
-pub const IORING_RECVSEND_FIXED_BUF: u32 = 4;
-pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8;
-pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648;
-pub const IORING_ACCEPT_MULTISHOT: u32 = 1;
-pub const IORING_MSG_RING_CQE_SKIP: u32 = 1;
-pub const IORING_CQE_F_BUFFER: u32 = 1;
-pub const IORING_CQE_F_MORE: u32 = 2;
-pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4;
-pub const IORING_CQE_F_NOTIF: u32 = 8;
-pub const IORING_OFF_SQ_RING: u32 = 0;
-pub const IORING_OFF_CQ_RING: u32 = 134217728;
-pub const IORING_OFF_SQES: u32 = 268435456;
-pub const IORING_SQ_NEED_WAKEUP: u32 = 1;
-pub const IORING_SQ_CQ_OVERFLOW: u32 = 2;
-pub const IORING_SQ_TASKRUN: u32 = 4;
-pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1;
-pub const IORING_ENTER_GETEVENTS: u32 = 1;
-pub const IORING_ENTER_SQ_WAKEUP: u32 = 2;
-pub const IORING_ENTER_SQ_WAIT: u32 = 4;
-pub const IORING_ENTER_EXT_ARG: u32 = 8;
-pub const IORING_ENTER_REGISTERED_RING: u32 = 16;
-pub const IORING_FEAT_SINGLE_MMAP: u32 = 1;
-pub const IORING_FEAT_NODROP: u32 = 2;
-pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4;
-pub const IORING_FEAT_RW_CUR_POS: u32 = 8;
-pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16;
-pub const IORING_FEAT_FAST_POLL: u32 = 32;
-pub const IORING_FEAT_POLL_32BITS: u32 = 64;
-pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128;
-pub const IORING_FEAT_EXT_ARG: u32 = 256;
-pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512;
-pub const IORING_FEAT_RSRC_TAGS: u32 = 1024;
-pub const IORING_FEAT_CQE_SKIP: u32 = 2048;
-pub const IORING_FEAT_LINKED_FILE: u32 = 4096;
-pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1;
-pub const IORING_REGISTER_FILES_SKIP: i32 = -2;
-pub const IO_URING_OP_SUPPORTED: u32 = 1;
-pub const DT_UNKNOWN: u32 = 0;
-pub const DT_FIFO: u32 = 1;
-pub const DT_CHR: u32 = 2;
-pub const DT_DIR: u32 = 4;
-pub const DT_BLK: u32 = 6;
-pub const DT_REG: u32 = 8;
-pub const DT_LNK: u32 = 10;
-pub const DT_SOCK: u32 = 12;
-pub const SHUT_RD: u32 = 0;
-pub const SHUT_WR: u32 = 1;
-pub const SHUT_RDWR: u32 = 2;
-pub const STAT_HAVE_NSEC: u32 = 1;
-pub const SOCK_STREAM: u32 = 1;
-pub const SOCK_DGRAM: u32 = 2;
-pub const SOCK_RAW: u32 = 3;
-pub const SOCK_RDM: u32 = 4;
-pub const SOCK_SEQPACKET: u32 = 5;
-pub const F_OK: u32 = 0;
-pub const R_OK: u32 = 4;
-pub const W_OK: u32 = 2;
-pub const X_OK: u32 = 1;
-pub const UTIME_NOW: u32 = 1073741823;
-pub const UTIME_OMIT: u32 = 1073741822;
-pub const MSG_DONTWAIT: u32 = 64;
-pub const AF_UNSPEC: u32 = 0;
-pub const AF_UNIX: u32 = 1;
-pub const AF_INET: u32 = 2;
-pub const AF_AX25: u32 = 3;
-pub const AF_IPX: u32 = 4;
-pub const AF_APPLETALK: u32 = 5;
-pub const AF_NETROM: u32 = 6;
-pub const AF_BRIDGE: u32 = 7;
-pub const AF_ATMPVC: u32 = 8;
-pub const AF_X25: u32 = 9;
-pub const AF_INET6: u32 = 10;
-pub const AF_ROSE: u32 = 11;
-pub const AF_DECnet: u32 = 12;
-pub const AF_NETBEUI: u32 = 13;
-pub const AF_SECURITY: u32 = 14;
-pub const AF_KEY: u32 = 15;
-pub const AF_NETLINK: u32 = 16;
-pub const AF_PACKET: u32 = 17;
-pub const AF_ASH: u32 = 18;
-pub const AF_ECONET: u32 = 19;
-pub const AF_ATMSVC: u32 = 20;
-pub const AF_RDS: u32 = 21;
-pub const AF_SNA: u32 = 22;
-pub const AF_IRDA: u32 = 23;
-pub const AF_PPPOX: u32 = 24;
-pub const AF_WANPIPE: u32 = 25;
-pub const AF_LLC: u32 = 26;
-pub const AF_CAN: u32 = 29;
-pub const AF_TIPC: u32 = 30;
-pub const AF_BLUETOOTH: u32 = 31;
-pub const AF_IUCV: u32 = 32;
-pub const AF_RXRPC: u32 = 33;
-pub const AF_ISDN: u32 = 34;
-pub const AF_PHONET: u32 = 35;
-pub const AF_IEEE802154: u32 = 36;
-pub const AF_MAX: u32 = 37;
-pub const MSG_OOB: u32 = 1;
-pub const MSG_PEEK: u32 = 2;
-pub const MSG_DONTROUTE: u32 = 4;
-pub const MSG_CTRUNC: u32 = 8;
-pub const MSG_PROBE: u32 = 16;
-pub const MSG_TRUNC: u32 = 32;
-pub const MSG_EOR: u32 = 128;
-pub const MSG_WAITALL: u32 = 256;
-pub const MSG_FIN: u32 = 512;
-pub const MSG_SYN: u32 = 1024;
-pub const MSG_CONFIRM: u32 = 2048;
-pub const MSG_RST: u32 = 4096;
-pub const MSG_ERRQUEUE: u32 = 8192;
-pub const MSG_NOSIGNAL: u32 = 16384;
-pub const MSG_MORE: u32 = 32768;
-pub const MSG_CMSG_CLOEXEC: u32 = 1073741824;
-pub const STDIN_FILENO: u32 = 0;
-pub const STDOUT_FILENO: u32 = 1;
-pub const STDERR_FILENO: u32 = 2;
-pub const RWF_HIPRI: u32 = 1;
-pub const RWF_DSYNC: u32 = 2;
-pub const RWF_SYNC: u32 = 4;
-pub const RWF_NOWAIT: u32 = 8;
-pub const RWF_APPEND: u32 = 16;
-pub const EFD_SEMAPHORE: u32 = 1;
-pub const EFD_CLOEXEC: u32 = 4194304;
-pub const EFD_NONBLOCK: u32 = 16384;
-pub const EPOLLIN: u32 = 1;
-pub const EPOLLPRI: u32 = 2;
-pub const EPOLLOUT: u32 = 4;
-pub const EPOLLERR: u32 = 8;
-pub const EPOLLHUP: u32 = 16;
-pub const EPOLLNVAL: u32 = 32;
-pub const EPOLLRDNORM: u32 = 64;
-pub const EPOLLRDBAND: u32 = 128;
-pub const EPOLLWRNORM: u32 = 256;
-pub const EPOLLWRBAND: u32 = 512;
-pub const EPOLLMSG: u32 = 1024;
-pub const EPOLLRDHUP: u32 = 8192;
-pub const EPOLLEXCLUSIVE: u32 = 268435456;
-pub const EPOLLWAKEUP: u32 = 536870912;
-pub const EPOLLONESHOT: u32 = 1073741824;
-pub const EPOLLET: u32 = 2147483648;
-pub const TFD_SHARED_FCNTL_FLAGS: u32 = 4210688;
-pub const TFD_CREATE_FLAGS: u32 = 4210688;
-pub const TFD_SETTIME_FLAGS: u32 = 1;
-pub const SCM_RIGHTS: u32 = 1;
-pub const SCM_CREDENTIALS: u32 = 2;
-pub const SCM_SECURITY: u32 = 3;
-pub const UFFD_API: u32 = 170;
-pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1;
-pub const UFFDIO_REGISTER_MODE_WP: u32 = 2;
-pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4;
-pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1;
-pub const UFFDIO_COPY_MODE_WP: u32 = 2;
-pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1;
-pub const SPLICE_F_MOVE: u32 = 1;
-pub const SPLICE_F_NONBLOCK: u32 = 2;
-pub const SPLICE_F_MORE: u32 = 4;
-pub const SPLICE_F_GIFT: u32 = 8;
-pub const MNT_FORCE: u32 = 1;
-pub const MNT_DETACH: u32 = 2;
-pub const MNT_EXPIRE: u32 = 4;
-pub const UMOUNT_NOFOLLOW: u32 = 8;
-pub const UMOUNT_UNUSED: u32 = 2147483648;
-pub type size_t = crate::ctypes::c_uint;
-pub type ssize_t = crate::ctypes::c_int;
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 32usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_size_t = crate::ctypes::c_uint;
-pub type __kernel_ssize_t = crate::ctypes::c_int;
-pub type __kernel_ptrdiff_t = crate::ctypes::c_long;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort;
-pub type __kernel_uid_t = crate::ctypes::c_ushort;
-pub type __kernel_gid_t = crate::ctypes::c_ushort;
-pub type __kernel_mode_t = crate::ctypes::c_ushort;
-pub type __kernel_daddr_t = crate::ctypes::c_long;
-pub type __kernel_old_dev_t = crate::ctypes::c_ushort;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_uid_t = __kernel_uid_t;
-pub type __kernel_old_gid_t = __kernel_gid_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_header_struct {
-pub version: __u32,
-pub pid: crate::ctypes::c_int,
-}
-pub type cap_user_header_t = *mut __user_cap_header_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_data_struct {
-pub effective: __u32,
-pub permitted: __u32,
-pub inheritable: __u32,
-}
-pub type cap_user_data_t = *mut __user_cap_data_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_cap_data__bindgen_ty_1; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize],
-pub rootid: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct f_owner_ex {
-pub type_: crate::ctypes::c_int,
-pub pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_off_t,
-pub l_len: __kernel_off_t,
-pub l_pid: __kernel_pid_t,
-pub __unused: crate::ctypes::c_short,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock64 {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_loff_t,
-pub l_len: __kernel_loff_t,
-pub l_pid: __kernel_pid_t,
-pub __unused: crate::ctypes::c_short,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct open_how {
-pub flags: __u64,
-pub mode: __u64,
-pub resolve: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct epoll_event {
-pub events: __poll_t,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v1 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub master_key_descriptor: [__u8; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_key {
-pub mode: __u32,
-pub raw: [__u8; 64usize],
-pub size: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v2 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub __reserved: [__u8; 4usize],
-pub master_key_identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_policy_ex_arg {
-pub policy_size: __u64,
-pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 {
-pub version: __u8,
-pub v1: fscrypt_policy_v1,
-pub v2: fscrypt_policy_v2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_key_specifier {
-pub type_: __u32,
-pub __reserved: __u32,
-pub u: fscrypt_key_specifier__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_key_specifier__bindgen_ty_1 {
-pub __reserved: [__u8; 32usize],
-pub descriptor: [__u8; 8usize],
-pub identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct fscrypt_provisioning_key_payload {
-pub type_: __u32,
-pub __reserved: __u32,
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-pub struct fscrypt_add_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub raw_size: __u32,
-pub key_id: __u32,
-pub __reserved: [__u32; 8usize],
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_remove_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub removal_status_flags: __u32,
-pub __reserved: [__u32; 5usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_key_status_arg {
-pub key_spec: fscrypt_key_specifier,
-pub __reserved: [__u32; 6usize],
-pub status: __u32,
-pub status_flags: __u32,
-pub user_count: __u32,
-pub __out_reserved: [__u32; 13usize],
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum fsconfig_command {
-FSCONFIG_SET_FLAG = 0,
-FSCONFIG_SET_STRING = 1,
-FSCONFIG_SET_BINARY = 2,
-FSCONFIG_SET_PATH = 3,
-FSCONFIG_SET_PATH_EMPTY = 4,
-FSCONFIG_SET_FD = 5,
-FSCONFIG_CMD_CREATE = 6,
-FSCONFIG_CMD_RECONFIGURE = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mount_attr {
-pub attr_set: __u64,
-pub attr_clr: __u64,
-pub propagation: __u64,
-pub userns_fd: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_clone_range {
-pub src_fd: __s64,
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_offset: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fstrim_range {
-pub start: __u64,
-pub len: __u64,
-pub minlen: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_dedupe_range_info {
-pub dest_fd: __s64,
-pub dest_offset: __u64,
-pub bytes_deduped: __u64,
-pub status: __s32,
-pub reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct file_dedupe_range {
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_count: __u16,
-pub reserved1: __u16,
-pub reserved2: __u32,
-pub info: __IncompleteArrayField<file_dedupe_range_info>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct files_stat_struct {
-pub nr_files: crate::ctypes::c_ulong,
-pub nr_free_files: crate::ctypes::c_ulong,
-pub max_files: crate::ctypes::c_ulong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct inodes_stat_t {
-pub nr_inodes: crate::ctypes::c_long,
-pub nr_unused: crate::ctypes::c_long,
-pub dummy: [crate::ctypes::c_long; 5usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fsxattr {
-pub fsx_xflags: __u32,
-pub fsx_extsize: __u32,
-pub fsx_nextents: __u32,
-pub fsx_projid: __u32,
-pub fsx_cowextsize: __u32,
-pub fsx_pad: [crate::ctypes::c_uchar; 8usize],
-}
-pub type __kernel_rwf_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct futex_waitv {
-pub val: __u64,
-pub uaddr: __u64,
-pub flags: __u32,
-pub __reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list {
-pub next: *mut robust_list,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list_head {
-pub list: robust_list,
-pub futex_offset: crate::ctypes::c_long,
-pub list_op_pending: *mut robust_list,
-}
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP;
-pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP;
-pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP;
-pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP;
-pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP;
-pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP;
-pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP;
-pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP;
-pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP;
-pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP;
-pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP;
-pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6;
-pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP;
-pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE;
-pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP;
-pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH;
-pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP;
-pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH;
-pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP;
-pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM;
-pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP;
-pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP;
-pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP;
-pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE;
-pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS;
-pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET;
-pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW;
-pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP;
-pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-IPPROTO_IP = 0,
-IPPROTO_ICMP = 1,
-IPPROTO_IGMP = 2,
-IPPROTO_IPIP = 4,
-IPPROTO_TCP = 6,
-IPPROTO_EGP = 8,
-IPPROTO_PUP = 12,
-IPPROTO_UDP = 17,
-IPPROTO_IDP = 22,
-IPPROTO_TP = 29,
-IPPROTO_DCCP = 33,
-IPPROTO_IPV6 = 41,
-IPPROTO_RSVP = 46,
-IPPROTO_GRE = 47,
-IPPROTO_ESP = 50,
-IPPROTO_AH = 51,
-IPPROTO_MTP = 92,
-IPPROTO_BEETPH = 94,
-IPPROTO_ENCAP = 98,
-IPPROTO_PIM = 103,
-IPPROTO_COMP = 108,
-IPPROTO_L2TP = 115,
-IPPROTO_SCTP = 132,
-IPPROTO_UDPLITE = 136,
-IPPROTO_MPLS = 137,
-IPPROTO_ETHERNET = 143,
-IPPROTO_RAW = 255,
-IPPROTO_MPTCP = 262,
-IPPROTO_MAX = 263,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_addr {
-pub s_addr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq {
-pub imr_multiaddr: in_addr,
-pub imr_interface: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreqn {
-pub imr_multiaddr: in_addr,
-pub imr_address: in_addr,
-pub imr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq_source {
-pub imr_multiaddr: __be32,
-pub imr_interface: __be32,
-pub imr_sourceaddr: __be32,
-}
-#[repr(C)]
-pub struct ip_msfilter {
-pub imsf_multiaddr: __be32,
-pub imsf_interface: __be32,
-pub imsf_fmode: __u32,
-pub imsf_numsrc: __u32,
-pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct ip_msfilter__bindgen_ty_1 {
-pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>,
-pub __bindgen_anon_1: __BindgenUnionField<ip_msfilter__bindgen_ty_1__bindgen_ty_1>,
-pub bindgen_union_field: u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 {
-pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-pub imsf_slist_flex: __IncompleteArrayField<__be32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_req {
-pub gr_interface: __u32,
-pub gr_group: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_source_req {
-pub gsr_interface: __u32,
-pub gsr_group: __kernel_sockaddr_storage,
-pub gsr_source: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-pub struct group_filter {
-pub __bindgen_anon_1: group_filter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_1>,
-pub __bindgen_anon_2: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_2>,
-pub bindgen_union_field: [u32; 67usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_1 {
-pub gf_interface_aux: __u32,
-pub gf_group_aux: __kernel_sockaddr_storage,
-pub gf_fmode_aux: __u32,
-pub gf_numsrc_aux: __u32,
-pub gf_slist: [__kernel_sockaddr_storage; 1usize],
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_2 {
-pub gf_interface: __u32,
-pub gf_group: __kernel_sockaddr_storage,
-pub gf_fmode: __u32,
-pub gf_numsrc: __u32,
-pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_pktinfo {
-pub ipi_ifindex: crate::ctypes::c_int,
-pub ipi_spec_dst: in_addr,
-pub ipi_addr: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_in {
-pub sin_family: __kernel_sa_family_t,
-pub sin_port: __be16,
-pub sin_addr: in_addr,
-pub __pad: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct inotify_event {
-pub wd: __s32,
-pub mask: __u32,
-pub cookie: __u32,
-pub len: __u32,
-pub name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct iphdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub tos: __u8,
-pub tot_len: __be16,
-pub id: __be16,
-pub frag_off: __be16,
-pub ttl: __u8,
-pub protocol: __u8,
-pub check: __sum16,
-pub __bindgen_anon_1: iphdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union iphdr__bindgen_ty_1 {
-pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-impl iphdr {
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn ihl(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_ihl(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(version: __u8, ihl: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let ihl: u8 = unsafe { ::core::mem::transmute(ihl) };
-ihl as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_auth_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub reserved: __be16,
-pub spi: __be32,
-pub seq_no: __be32,
-pub auth_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_esp_hdr {
-pub spi: __be32,
-pub seq_no: __be32,
-pub enc_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_comp_hdr {
-pub nexthdr: __u8,
-pub flags: __u8,
-pub cpi: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_beet_phdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub padlen: __u8,
-pub reserved: __u8,
-}
-pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING;
-pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING;
-pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP;
-pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS;
-pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS;
-pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS;
-pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA;
-pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER;
-pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY;
-pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS;
-pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG;
-pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER;
-pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID;
-pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM;
-pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY;
-pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION;
-pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE;
-pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE;
-pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES;
-pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT;
-pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY;
-pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL;
-pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK;
-pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN;
-pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET;
-pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP;
-pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING;
-pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER;
-pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IPV4_DEVCONF_FORWARDING = 1,
-IPV4_DEVCONF_MC_FORWARDING = 2,
-IPV4_DEVCONF_PROXY_ARP = 3,
-IPV4_DEVCONF_ACCEPT_REDIRECTS = 4,
-IPV4_DEVCONF_SECURE_REDIRECTS = 5,
-IPV4_DEVCONF_SEND_REDIRECTS = 6,
-IPV4_DEVCONF_SHARED_MEDIA = 7,
-IPV4_DEVCONF_RP_FILTER = 8,
-IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9,
-IPV4_DEVCONF_BOOTP_RELAY = 10,
-IPV4_DEVCONF_LOG_MARTIANS = 11,
-IPV4_DEVCONF_TAG = 12,
-IPV4_DEVCONF_ARPFILTER = 13,
-IPV4_DEVCONF_MEDIUM_ID = 14,
-IPV4_DEVCONF_NOXFRM = 15,
-IPV4_DEVCONF_NOPOLICY = 16,
-IPV4_DEVCONF_FORCE_IGMP_VERSION = 17,
-IPV4_DEVCONF_ARP_ANNOUNCE = 18,
-IPV4_DEVCONF_ARP_IGNORE = 19,
-IPV4_DEVCONF_PROMOTE_SECONDARIES = 20,
-IPV4_DEVCONF_ARP_ACCEPT = 21,
-IPV4_DEVCONF_ARP_NOTIFY = 22,
-IPV4_DEVCONF_ACCEPT_LOCAL = 23,
-IPV4_DEVCONF_SRC_VMARK = 24,
-IPV4_DEVCONF_PROXY_ARP_PVLAN = 25,
-IPV4_DEVCONF_ROUTE_LOCALNET = 26,
-IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27,
-IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28,
-IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29,
-IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30,
-IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31,
-IPV4_DEVCONF_BC_FORWARDING = 32,
-IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33,
-__IPV4_DEVCONF_MAX = 34,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_addr {
-pub in6_u: in6_addr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union in6_addr__bindgen_ty_1 {
-pub u6_addr8: [__u8; 16usize],
-pub u6_addr16: [__be16; 8usize],
-pub u6_addr32: [__be32; 4usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr_in6 {
-pub sin6_family: crate::ctypes::c_ushort,
-pub sin6_port: __be16,
-pub sin6_flowinfo: __be32,
-pub sin6_addr: in6_addr,
-pub sin6_scope_id: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6_mreq {
-pub ipv6mr_multiaddr: in6_addr,
-pub ipv6mr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_flowlabel_req {
-pub flr_dst: in6_addr,
-pub flr_label: __be32,
-pub flr_action: __u8,
-pub flr_share: __u8,
-pub flr_flags: __u16,
-pub flr_expires: __u16,
-pub flr_linger: __u16,
-pub __flr_pad: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_pktinfo {
-pub ipi6_addr: in6_addr,
-pub ipi6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ip6_mtuinfo {
-pub ip6m_addr: sockaddr_in6,
-pub ip6m_mtu: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_ifreq {
-pub ifr6_addr: in6_addr,
-pub ifr6_prefixlen: __u32,
-pub ifr6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_rt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub type_: __u8,
-pub segments_left: __u8,
-}
-#[repr(C, packed)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_opt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-}
-#[repr(C)]
-pub struct rt0_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: __IncompleteArrayField<in6_addr>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rt2_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: in6_addr,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct ipv6_destopt_hao {
-pub type_: __u8,
-pub length: __u8,
-pub addr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub flow_lbl: [__u8; 3usize],
-pub payload_len: __be16,
-pub nexthdr: __u8,
-pub hop_limit: __u8,
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union ipv6hdr__bindgen_ty_1 {
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-impl ipv6hdr {
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn priority(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_priority(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(version: __u8, priority: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let priority: u8 = unsafe { ::core::mem::transmute(priority) };
-priority as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING;
-pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT;
-pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6;
-pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA;
-pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS;
-pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF;
-pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS;
-pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS;
-pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL;
-pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY;
-pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR;
-pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT;
-pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT;
-pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY;
-pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR;
-pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES;
-pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION;
-pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR;
-pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO;
-pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF;
-pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN;
-pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP;
-pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD;
-pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING;
-pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6;
-pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD;
-pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO;
-pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY;
-pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC;
-pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL;
-pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC;
-pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU;
-pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET;
-pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY;
-pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT;
-pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA;
-pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN;
-pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL;
-pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED;
-pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC;
-pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD;
-pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE;
-pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN;
-pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS;
-pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED;
-pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC;
-pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED;
-pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID;
-pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE;
-pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER;
-pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA;
-pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-DEVCONF_FORWARDING = 0,
-DEVCONF_HOPLIMIT = 1,
-DEVCONF_MTU6 = 2,
-DEVCONF_ACCEPT_RA = 3,
-DEVCONF_ACCEPT_REDIRECTS = 4,
-DEVCONF_AUTOCONF = 5,
-DEVCONF_DAD_TRANSMITS = 6,
-DEVCONF_RTR_SOLICITS = 7,
-DEVCONF_RTR_SOLICIT_INTERVAL = 8,
-DEVCONF_RTR_SOLICIT_DELAY = 9,
-DEVCONF_USE_TEMPADDR = 10,
-DEVCONF_TEMP_VALID_LFT = 11,
-DEVCONF_TEMP_PREFERED_LFT = 12,
-DEVCONF_REGEN_MAX_RETRY = 13,
-DEVCONF_MAX_DESYNC_FACTOR = 14,
-DEVCONF_MAX_ADDRESSES = 15,
-DEVCONF_FORCE_MLD_VERSION = 16,
-DEVCONF_ACCEPT_RA_DEFRTR = 17,
-DEVCONF_ACCEPT_RA_PINFO = 18,
-DEVCONF_ACCEPT_RA_RTR_PREF = 19,
-DEVCONF_RTR_PROBE_INTERVAL = 20,
-DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21,
-DEVCONF_PROXY_NDP = 22,
-DEVCONF_OPTIMISTIC_DAD = 23,
-DEVCONF_ACCEPT_SOURCE_ROUTE = 24,
-DEVCONF_MC_FORWARDING = 25,
-DEVCONF_DISABLE_IPV6 = 26,
-DEVCONF_ACCEPT_DAD = 27,
-DEVCONF_FORCE_TLLAO = 28,
-DEVCONF_NDISC_NOTIFY = 29,
-DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30,
-DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31,
-DEVCONF_SUPPRESS_FRAG_NDISC = 32,
-DEVCONF_ACCEPT_RA_FROM_LOCAL = 33,
-DEVCONF_USE_OPTIMISTIC = 34,
-DEVCONF_ACCEPT_RA_MTU = 35,
-DEVCONF_STABLE_SECRET = 36,
-DEVCONF_USE_OIF_ADDRS_ONLY = 37,
-DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38,
-DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39,
-DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40,
-DEVCONF_DROP_UNSOLICITED_NA = 41,
-DEVCONF_KEEP_ADDR_ON_DOWN = 42,
-DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43,
-DEVCONF_SEG6_ENABLED = 44,
-DEVCONF_SEG6_REQUIRE_HMAC = 45,
-DEVCONF_ENHANCED_DAD = 46,
-DEVCONF_ADDR_GEN_MODE = 47,
-DEVCONF_DISABLE_POLICY = 48,
-DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49,
-DEVCONF_NDISC_TCLASS = 50,
-DEVCONF_RPL_SEG_ENABLED = 51,
-DEVCONF_RA_DEFRTR_METRIC = 52,
-DEVCONF_IOAM6_ENABLED = 53,
-DEVCONF_IOAM6_ID = 54,
-DEVCONF_IOAM6_ID_WIDE = 55,
-DEVCONF_NDISC_EVICT_NOCARRIER = 56,
-DEVCONF_ACCEPT_UNTRACKED_NA = 57,
-DEVCONF_MAX = 58,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum socket_state {
-SS_FREE = 0,
-SS_UNCONNECTED = 1,
-SS_CONNECTING = 2,
-SS_CONNECTED = 3,
-SS_DISCONNECTING = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct pollfd {
-pub fd: crate::ctypes::c_int,
-pub events: crate::ctypes::c_short,
-pub revents: crate::ctypes::c_short,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prctl_mm_map {
-pub start_code: __u64,
-pub end_code: __u64,
-pub start_data: __u64,
-pub end_data: __u64,
-pub start_brk: __u64,
-pub brk: __u64,
-pub start_stack: __u64,
-pub arg_start: __u64,
-pub arg_end: __u64,
-pub env_start: __u64,
-pub env_end: __u64,
-pub auxv: *mut __u64,
-pub auxv_size: __u32,
-pub exe_fd: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rand_pool_info {
-pub entropy_count: crate::ctypes::c_int,
-pub buf_size: crate::ctypes::c_int,
-pub buf: __IncompleteArrayField<__u32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_timespec {
-pub tv_sec: __kernel_time64_t,
-pub tv_nsec: crate::ctypes::c_longlong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_itimerspec {
-pub it_interval: __kernel_timespec,
-pub it_value: __kernel_timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timeval {
-pub tv_sec: __kernel_long_t,
-pub tv_usec: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_itimerval {
-pub it_interval: __kernel_old_timeval,
-pub it_value: __kernel_old_timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sock_timeval {
-pub tv_sec: __s64,
-pub tv_usec: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timeval {
-pub tv_sec: __kernel_old_time_t,
-pub tv_usec: __kernel_suseconds_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerspec {
-pub it_interval: timespec,
-pub it_value: timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerval {
-pub it_interval: timeval,
-pub it_value: timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timezone {
-pub tz_minuteswest: crate::ctypes::c_int,
-pub tz_dsttime: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rusage {
-pub ru_utime: __kernel_old_timeval,
-pub ru_stime: __kernel_old_timeval,
-pub ru_maxrss: __kernel_long_t,
-pub ru_ixrss: __kernel_long_t,
-pub ru_idrss: __kernel_long_t,
-pub ru_isrss: __kernel_long_t,
-pub ru_minflt: __kernel_long_t,
-pub ru_majflt: __kernel_long_t,
-pub ru_nswap: __kernel_long_t,
-pub ru_inblock: __kernel_long_t,
-pub ru_oublock: __kernel_long_t,
-pub ru_msgsnd: __kernel_long_t,
-pub ru_msgrcv: __kernel_long_t,
-pub ru_nsignals: __kernel_long_t,
-pub ru_nvcsw: __kernel_long_t,
-pub ru_nivcsw: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit {
-pub rlim_cur: __kernel_ulong_t,
-pub rlim_max: __kernel_ulong_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit64 {
-pub rlim_cur: __u64,
-pub rlim_max: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct clone_args {
-pub flags: __u64,
-pub pidfd: __u64,
-pub child_tid: __u64,
-pub parent_tid: __u64,
-pub exit_signal: __u64,
-pub stack: __u64,
-pub stack_size: __u64,
-pub tls: __u64,
-pub set_tid: __u64,
-pub set_tid_size: __u64,
-pub cgroup: __u64,
-}
-pub type sigset_t = crate::ctypes::c_ulong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __new_sigset_t {
-pub sig: [crate::ctypes::c_ulong; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigstack {
-pub the_stack: *mut crate::ctypes::c_char,
-pub cur_status: crate::ctypes::c_int,
-}
-pub type __signalfn_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __sighandler_t = __signalfn_t;
-pub type __restorefn_t = ::core::option::Option<unsafe extern "C" fn()>;
-pub type __sigrestore_t = __restorefn_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __new_sigaction {
-pub sa_handler: __sighandler_t,
-pub sa_flags: crate::ctypes::c_ulong,
-pub sa_restorer: __sigrestore_t,
-pub sa_mask: __new_sigset_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaction {
-pub sa_handler: __sighandler_t,
-pub sa_mask: sigset_t,
-pub sa_flags: crate::ctypes::c_ulong,
-pub sa_restorer: ::core::option::Option<unsafe extern "C" fn()>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaltstack {
-pub ss_sp: *mut crate::ctypes::c_void,
-pub ss_flags: crate::ctypes::c_int,
-pub ss_size: __kernel_size_t,
-}
-pub type stack_t = sigaltstack;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigval {
-pub sival_int: crate::ctypes::c_int,
-pub sival_ptr: *mut crate::ctypes::c_void,
-}
-pub type sigval_t = sigval;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields {
-pub _kill: __sifields__bindgen_ty_1,
-pub _timer: __sifields__bindgen_ty_2,
-pub _rt: __sifields__bindgen_ty_3,
-pub _sigchld: __sifields__bindgen_ty_4,
-pub _sigfault: __sifields__bindgen_ty_5,
-pub _sigpoll: __sifields__bindgen_ty_6,
-pub _sigsys: __sifields__bindgen_ty_7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_1 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_2 {
-pub _tid: __kernel_timer_t,
-pub _overrun: crate::ctypes::c_int,
-pub _sigval: sigval_t,
-pub _sys_private: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_3 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _sigval: sigval_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_4 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _status: crate::ctypes::c_int,
-pub _utime: __kernel_clock_t,
-pub _stime: __kernel_clock_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_5 {
-pub _addr: *mut crate::ctypes::c_void,
-pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields__bindgen_ty_5__bindgen_ty_1 {
-pub _trapno: crate::ctypes::c_int,
-pub _addr_lsb: crate::ctypes::c_short,
-pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1,
-pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2,
-pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {
-pub _dummy_bnd: [crate::ctypes::c_char; 4usize],
-pub _lower: *mut crate::ctypes::c_void,
-pub _upper: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 {
-pub _dummy_pkey: [crate::ctypes::c_char; 4usize],
-pub _pkey: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 {
-pub _data: crate::ctypes::c_ulong,
-pub _type: __u32,
-pub _flags: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_6 {
-pub _band: crate::ctypes::c_long,
-pub _fd: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_7 {
-pub _call_addr: *mut crate::ctypes::c_void,
-pub _syscall: crate::ctypes::c_int,
-pub _arch: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union siginfo__bindgen_ty_1 {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1,
-pub _si_pad: [crate::ctypes::c_int; 32usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo__bindgen_ty_1__bindgen_ty_1 {
-pub si_signo: crate::ctypes::c_int,
-pub si_errno: crate::ctypes::c_int,
-pub si_code: crate::ctypes::c_int,
-pub _sifields: __sifields,
-}
-pub type siginfo_t = siginfo;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sigevent {
-pub sigev_value: sigval_t,
-pub sigev_signo: crate::ctypes::c_int,
-pub sigev_notify: crate::ctypes::c_int,
-pub _sigev_un: sigevent__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigevent__bindgen_ty_1 {
-pub _pad: [crate::ctypes::c_int; 13usize],
-pub _tid: crate::ctypes::c_int,
-pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigevent__bindgen_ty_1__bindgen_ty_1 {
-pub _function: ::core::option::Option<unsafe extern "C" fn(arg1: sigval_t)>,
-pub _attribute: *mut crate::ctypes::c_void,
-}
-pub type sigevent_t = sigevent;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx_timestamp {
-pub tv_sec: __s64,
-pub tv_nsec: __u32,
-pub __reserved: __s32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx {
-pub stx_mask: __u32,
-pub stx_blksize: __u32,
-pub stx_attributes: __u64,
-pub stx_nlink: __u32,
-pub stx_uid: __u32,
-pub stx_gid: __u32,
-pub stx_mode: __u16,
-pub __spare0: [__u16; 1usize],
-pub stx_ino: __u64,
-pub stx_size: __u64,
-pub stx_blocks: __u64,
-pub stx_attributes_mask: __u64,
-pub stx_atime: statx_timestamp,
-pub stx_btime: statx_timestamp,
-pub stx_ctime: statx_timestamp,
-pub stx_mtime: statx_timestamp,
-pub stx_rdev_major: __u32,
-pub stx_rdev_minor: __u32,
-pub stx_dev_major: __u32,
-pub stx_dev_minor: __u32,
-pub stx_mnt_id: __u64,
-pub stx_dio_mem_align: __u32,
-pub stx_dio_offset_align: __u32,
-pub __spare3: [__u64; 12usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sysinfo {
-pub uptime: __kernel_long_t,
-pub loads: [__kernel_ulong_t; 3usize],
-pub totalram: __kernel_ulong_t,
-pub freeram: __kernel_ulong_t,
-pub sharedram: __kernel_ulong_t,
-pub bufferram: __kernel_ulong_t,
-pub totalswap: __kernel_ulong_t,
-pub freeswap: __kernel_ulong_t,
-pub procs: __u16,
-pub pad: __u16,
-pub totalhigh: __kernel_ulong_t,
-pub freehigh: __kernel_ulong_t,
-pub mem_unit: __u32,
-pub _f: [crate::ctypes::c_char; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcphdr {
-pub source: __be16,
-pub dest: __be16,
-pub seq: __be32,
-pub ack_seq: __be32,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub window: __be16,
-pub check: __sum16,
-pub urg_ptr: __be16,
-}
-impl tcphdr {
-#[inline]
-pub fn doff(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_doff(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn res1(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_res1(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn cwr(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_cwr(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ece(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ece(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn urg(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_urg(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(10usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ack(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ack(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(11usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn psh(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_psh(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(12usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn rst(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_rst(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(13usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn syn(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_syn(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(14usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn fin(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_fin(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(15usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(doff: __u16, res1: __u16, cwr: __u16, ece: __u16, urg: __u16, ack: __u16, psh: __u16, rst: __u16, syn: __u16, fin: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let doff: u16 = unsafe { ::core::mem::transmute(doff) };
-doff as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let res1: u16 = unsafe { ::core::mem::transmute(res1) };
-res1 as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let cwr: u16 = unsafe { ::core::mem::transmute(cwr) };
-cwr as u64
-});
-__bindgen_bitfield_unit.set(9usize, 1u8, {
-let ece: u16 = unsafe { ::core::mem::transmute(ece) };
-ece as u64
-});
-__bindgen_bitfield_unit.set(10usize, 1u8, {
-let urg: u16 = unsafe { ::core::mem::transmute(urg) };
-urg as u64
-});
-__bindgen_bitfield_unit.set(11usize, 1u8, {
-let ack: u16 = unsafe { ::core::mem::transmute(ack) };
-ack as u64
-});
-__bindgen_bitfield_unit.set(12usize, 1u8, {
-let psh: u16 = unsafe { ::core::mem::transmute(psh) };
-psh as u64
-});
-__bindgen_bitfield_unit.set(13usize, 1u8, {
-let rst: u16 = unsafe { ::core::mem::transmute(rst) };
-rst as u64
-});
-__bindgen_bitfield_unit.set(14usize, 1u8, {
-let syn: u16 = unsafe { ::core::mem::transmute(syn) };
-syn as u64
-});
-__bindgen_bitfield_unit.set(15usize, 1u8, {
-let fin: u16 = unsafe { ::core::mem::transmute(fin) };
-fin as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union tcp_word_hdr {
-pub hdr: tcphdr,
-pub words: [__be32; 5usize],
-}
-pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR;
-pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE;
-pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG;
-pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK;
-pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH;
-pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST;
-pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN;
-pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN;
-pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS;
-pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-TCP_FLAG_CWR = 8388608,
-TCP_FLAG_ECE = 4194304,
-TCP_FLAG_URG = 2097152,
-TCP_FLAG_ACK = 1048576,
-TCP_FLAG_PSH = 524288,
-TCP_FLAG_RST = 262144,
-TCP_FLAG_SYN = 131072,
-TCP_FLAG_FIN = 65536,
-TCP_RESERVED_BITS = 251658240,
-TCP_DATA_OFFSET = 4026531840,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_opt {
-pub opt_code: __u32,
-pub opt_val: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_window {
-pub snd_wl1: __u32,
-pub snd_wnd: __u32,
-pub max_window: __u32,
-pub rcv_wnd: __u32,
-pub rcv_wup: __u32,
-}
-pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE;
-pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE;
-pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE;
-pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-TCP_NO_QUEUE = 0,
-TCP_RECV_QUEUE = 1,
-TCP_SEND_QUEUE = 2,
-TCP_QUEUES_NR = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_fastopen_client_fail {
-TFO_STATUS_UNSPEC = 0,
-TFO_COOKIE_UNAVAILABLE = 1,
-TFO_DATA_NOT_ACKED = 2,
-TFO_SYN_RETRANSMITTED = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_ca_state {
-TCP_CA_Open = 0,
-TCP_CA_Disorder = 1,
-TCP_CA_CWR = 2,
-TCP_CA_Recovery = 3,
-TCP_CA_Loss = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_info {
-pub tcpi_state: __u8,
-pub tcpi_ca_state: __u8,
-pub tcpi_retransmits: __u8,
-pub tcpi_probes: __u8,
-pub tcpi_backoff: __u8,
-pub tcpi_options: __u8,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub tcpi_rto: __u32,
-pub tcpi_ato: __u32,
-pub tcpi_snd_mss: __u32,
-pub tcpi_rcv_mss: __u32,
-pub tcpi_unacked: __u32,
-pub tcpi_sacked: __u32,
-pub tcpi_lost: __u32,
-pub tcpi_retrans: __u32,
-pub tcpi_fackets: __u32,
-pub tcpi_last_data_sent: __u32,
-pub tcpi_last_ack_sent: __u32,
-pub tcpi_last_data_recv: __u32,
-pub tcpi_last_ack_recv: __u32,
-pub tcpi_pmtu: __u32,
-pub tcpi_rcv_ssthresh: __u32,
-pub tcpi_rtt: __u32,
-pub tcpi_rttvar: __u32,
-pub tcpi_snd_ssthresh: __u32,
-pub tcpi_snd_cwnd: __u32,
-pub tcpi_advmss: __u32,
-pub tcpi_reordering: __u32,
-pub tcpi_rcv_rtt: __u32,
-pub tcpi_rcv_space: __u32,
-pub tcpi_total_retrans: __u32,
-pub tcpi_pacing_rate: __u64,
-pub tcpi_max_pacing_rate: __u64,
-pub tcpi_bytes_acked: __u64,
-pub tcpi_bytes_received: __u64,
-pub tcpi_segs_out: __u32,
-pub tcpi_segs_in: __u32,
-pub tcpi_notsent_bytes: __u32,
-pub tcpi_min_rtt: __u32,
-pub tcpi_data_segs_in: __u32,
-pub tcpi_data_segs_out: __u32,
-pub tcpi_delivery_rate: __u64,
-pub tcpi_busy_time: __u64,
-pub tcpi_rwnd_limited: __u64,
-pub tcpi_sndbuf_limited: __u64,
-pub tcpi_delivered: __u32,
-pub tcpi_delivered_ce: __u32,
-pub tcpi_bytes_sent: __u64,
-pub tcpi_bytes_retrans: __u64,
-pub tcpi_dsack_dups: __u32,
-pub tcpi_reord_seen: __u32,
-pub tcpi_rcv_ooopack: __u32,
-pub tcpi_snd_wnd: __u32,
-pub tcpi_rcv_wnd: __u32,
-pub tcpi_rehash: __u32,
-}
-impl tcp_info {
-#[inline]
-pub fn tcpi_snd_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_snd_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_rcv_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_fastopen_client_fail(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) };
-tcpi_snd_wscale as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) };
-tcpi_rcv_wscale as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) };
-tcpi_delivery_rate_app_limited as u64
-});
-__bindgen_bitfield_unit.set(9usize, 2u8, {
-let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) };
-tcpi_fastopen_client_fail as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD;
-pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY;
-pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED;
-pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED;
-pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT;
-pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS;
-pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE;
-pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE;
-pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND;
-pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING;
-pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT;
-pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS;
-pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT;
-pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE;
-pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE;
-pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH;
-pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED;
-pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE;
-pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT;
-pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS;
-pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS;
-pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN;
-pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT;
-pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH;
-pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT;
-pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
-pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
-pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-TCP_NLA_PAD = 0,
-TCP_NLA_BUSY = 1,
-TCP_NLA_RWND_LIMITED = 2,
-TCP_NLA_SNDBUF_LIMITED = 3,
-TCP_NLA_DATA_SEGS_OUT = 4,
-TCP_NLA_TOTAL_RETRANS = 5,
-TCP_NLA_PACING_RATE = 6,
-TCP_NLA_DELIVERY_RATE = 7,
-TCP_NLA_SND_CWND = 8,
-TCP_NLA_REORDERING = 9,
-TCP_NLA_MIN_RTT = 10,
-TCP_NLA_RECUR_RETRANS = 11,
-TCP_NLA_DELIVERY_RATE_APP_LMT = 12,
-TCP_NLA_SNDQ_SIZE = 13,
-TCP_NLA_CA_STATE = 14,
-TCP_NLA_SND_SSTHRESH = 15,
-TCP_NLA_DELIVERED = 16,
-TCP_NLA_DELIVERED_CE = 17,
-TCP_NLA_BYTES_SENT = 18,
-TCP_NLA_BYTES_RETRANS = 19,
-TCP_NLA_DSACK_DUPS = 20,
-TCP_NLA_REORD_SEEN = 21,
-TCP_NLA_SRTT = 22,
-TCP_NLA_TIMEOUT_REHASH = 23,
-TCP_NLA_BYTES_NOTSENT = 24,
-TCP_NLA_EDT = 25,
-TCP_NLA_TTL = 26,
-TCP_NLA_REHASH = 27,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct tcp_md5sig {
-pub tcpm_addr: __kernel_sockaddr_storage,
-pub tcpm_flags: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_ifindex: crate::ctypes::c_int,
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_diag_md5sig {
-pub tcpm_family: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_addr: [__be32; 4usize],
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_zerocopy_receive {
-pub address: __u64,
-pub length: __u32,
-pub recv_skip_hint: __u32,
-pub inq: __u32,
-pub err: __s32,
-pub copybuf_address: __u64,
-pub copybuf_len: __s32,
-pub flags: __u32,
-pub msg_control: __u64,
-pub msg_controllen: __u64,
-pub msg_flags: __u32,
-pub reserved: __u32,
-}
-pub type cc_t = crate::ctypes::c_uchar;
-pub type speed_t = crate::ctypes::c_uint;
-pub type tcflag_t = crate::ctypes::c_ulong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termio {
-pub c_iflag: crate::ctypes::c_ushort,
-pub c_oflag: crate::ctypes::c_ushort,
-pub c_cflag: crate::ctypes::c_ushort,
-pub c_lflag: crate::ctypes::c_ushort,
-pub c_line: crate::ctypes::c_uchar,
-pub c_cc: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 17usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios2 {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ktermios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct winsize {
-pub ws_row: crate::ctypes::c_ushort,
-pub ws_col: crate::ctypes::c_ushort,
-pub ws_xpixel: crate::ctypes::c_ushort,
-pub ws_ypixel: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iovec {
-pub iov_base: *mut crate::ctypes::c_void,
-pub iov_len: __kernel_size_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_un {
-pub sun_family: __kernel_sa_family_t,
-pub sun_path: [crate::ctypes::c_char; 108usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct oldold_utsname {
-pub sysname: [crate::ctypes::c_char; 9usize],
-pub nodename: [crate::ctypes::c_char; 9usize],
-pub release: [crate::ctypes::c_char; 9usize],
-pub version: [crate::ctypes::c_char; 9usize],
-pub machine: [crate::ctypes::c_char; 9usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct old_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct new_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-pub domainname: [crate::ctypes::c_char; 65usize],
-}
-impl membarrier_cmd {
-pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd {
-MEMBARRIER_CMD_QUERY = 0,
-MEMBARRIER_CMD_GLOBAL = 1,
-MEMBARRIER_CMD_GLOBAL_EXPEDITED = 2,
-MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = 4,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED = 8,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = 16,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = 32,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = 64,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = 128,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = 256,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd_flag {
-MEMBARRIER_CMD_FLAG_CPU = 1,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg {
-pub event: __u8,
-pub reserved1: __u8,
-pub reserved2: __u16,
-pub reserved3: __u32,
-pub arg: uffd_msg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1 {
-pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1,
-pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2,
-pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3,
-pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4,
-pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 {
-pub flags: __u64,
-pub address: __u64,
-pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {
-pub ptid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 {
-pub ufd: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 {
-pub from: __u64,
-pub to: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 {
-pub start: __u64,
-pub end: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 {
-pub reserved1: __u64,
-pub reserved2: __u64,
-pub reserved3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_api {
-pub api: __u64,
-pub features: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_range {
-pub start: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_register {
-pub range: uffdio_range,
-pub mode: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_copy {
-pub dst: __u64,
-pub src: __u64,
-pub len: __u64,
-pub mode: __u64,
-pub copy: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_zeropage {
-pub range: uffdio_range,
-pub mode: __u64,
-pub zeropage: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_writeprotect {
-pub range: uffdio_range,
-pub mode: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_continue {
-pub range: uffdio_range,
-pub mode: __u64,
-pub mapped: __s64,
-}
-#[repr(C)]
-pub struct io_uring_sqe {
-pub opcode: __u8,
-pub flags: __u8,
-pub ioprio: __u16,
-pub fd: __s32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1,
-pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2,
-pub len: __u32,
-pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3,
-pub user_data: __u64,
-pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4,
-pub personality: __u16,
-pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5,
-pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_1 {
-pub off: __u64,
-pub addr2: __u64,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 {
-pub cmd_op: __u32,
-pub __pad1: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_2 {
-pub addr: __u64,
-pub splice_off_in: __u64,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_3 {
-pub rw_flags: __kernel_rwf_t,
-pub fsync_flags: __u32,
-pub poll_events: __u16,
-pub poll32_events: __u32,
-pub sync_range_flags: __u32,
-pub msg_flags: __u32,
-pub timeout_flags: __u32,
-pub accept_flags: __u32,
-pub cancel_flags: __u32,
-pub open_flags: __u32,
-pub statx_flags: __u32,
-pub fadvise_advice: __u32,
-pub splice_flags: __u32,
-pub rename_flags: __u32,
-pub unlink_flags: __u32,
-pub hardlink_flags: __u32,
-pub xattr_flags: __u32,
-pub msg_ring_flags: __u32,
-pub uring_cmd_flags: __u32,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_4 {
-pub buf_index: __u16,
-pub buf_group: __u16,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_5 {
-pub splice_fd_in: __s32,
-pub file_index: __u32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 {
-pub addr_len: __u16,
-pub __pad3: [__u16; 1usize],
-}
-#[repr(C)]
-pub struct io_uring_sqe__bindgen_ty_6 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_sqe__bindgen_ty_6__bindgen_ty_1>,
-pub cmd: __BindgenUnionField<[__u8; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 {
-pub addr3: __u64,
-pub __pad2: [__u64; 1usize],
-}
-pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT;
-pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT;
-pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT;
-pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT;
-pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT;
-pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT;
-pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-IOSQE_FIXED_FILE_BIT = 0,
-IOSQE_IO_DRAIN_BIT = 1,
-IOSQE_IO_LINK_BIT = 2,
-IOSQE_IO_HARDLINK_BIT = 3,
-IOSQE_ASYNC_BIT = 4,
-IOSQE_BUFFER_SELECT_BIT = 5,
-IOSQE_CQE_SKIP_SUCCESS_BIT = 6,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum io_uring_op {
-IORING_OP_NOP = 0,
-IORING_OP_READV = 1,
-IORING_OP_WRITEV = 2,
-IORING_OP_FSYNC = 3,
-IORING_OP_READ_FIXED = 4,
-IORING_OP_WRITE_FIXED = 5,
-IORING_OP_POLL_ADD = 6,
-IORING_OP_POLL_REMOVE = 7,
-IORING_OP_SYNC_FILE_RANGE = 8,
-IORING_OP_SENDMSG = 9,
-IORING_OP_RECVMSG = 10,
-IORING_OP_TIMEOUT = 11,
-IORING_OP_TIMEOUT_REMOVE = 12,
-IORING_OP_ACCEPT = 13,
-IORING_OP_ASYNC_CANCEL = 14,
-IORING_OP_LINK_TIMEOUT = 15,
-IORING_OP_CONNECT = 16,
-IORING_OP_FALLOCATE = 17,
-IORING_OP_OPENAT = 18,
-IORING_OP_CLOSE = 19,
-IORING_OP_FILES_UPDATE = 20,
-IORING_OP_STATX = 21,
-IORING_OP_READ = 22,
-IORING_OP_WRITE = 23,
-IORING_OP_FADVISE = 24,
-IORING_OP_MADVISE = 25,
-IORING_OP_SEND = 26,
-IORING_OP_RECV = 27,
-IORING_OP_OPENAT2 = 28,
-IORING_OP_EPOLL_CTL = 29,
-IORING_OP_SPLICE = 30,
-IORING_OP_PROVIDE_BUFFERS = 31,
-IORING_OP_REMOVE_BUFFERS = 32,
-IORING_OP_TEE = 33,
-IORING_OP_SHUTDOWN = 34,
-IORING_OP_RENAMEAT = 35,
-IORING_OP_UNLINKAT = 36,
-IORING_OP_MKDIRAT = 37,
-IORING_OP_SYMLINKAT = 38,
-IORING_OP_LINKAT = 39,
-IORING_OP_MSG_RING = 40,
-IORING_OP_FSETXATTR = 41,
-IORING_OP_SETXATTR = 42,
-IORING_OP_FGETXATTR = 43,
-IORING_OP_GETXATTR = 44,
-IORING_OP_SOCKET = 45,
-IORING_OP_URING_CMD = 46,
-IORING_OP_SEND_ZC = 47,
-IORING_OP_SENDMSG_ZC = 48,
-IORING_OP_LAST = 49,
-}
-pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA;
-pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IORING_MSG_DATA = 0,
-IORING_MSG_SEND_FD = 1,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_cqe {
-pub user_data: __u64,
-pub res: __s32,
-pub flags: __u32,
-pub big_cqe: __IncompleteArrayField<__u64>,
-}
-pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IORING_CQE_BUFFER_SHIFT = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_sqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub flags: __u32,
-pub dropped: __u32,
-pub array: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_cqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub overflow: __u32,
-pub cqes: __u32,
-pub flags: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_params {
-pub sq_entries: __u32,
-pub cq_entries: __u32,
-pub flags: __u32,
-pub sq_thread_cpu: __u32,
-pub sq_thread_idle: __u32,
-pub features: __u32,
-pub wq_fd: __u32,
-pub resv: [__u32; 3usize],
-pub sq_off: io_sqring_offsets,
-pub cq_off: io_cqring_offsets,
-}
-pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS;
-pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS;
-pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES;
-pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES;
-pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD;
-pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD;
-pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE;
-pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC;
-pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE;
-pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY;
-pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY;
-pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS;
-pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS;
-pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2;
-pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2;
-pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2;
-pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE;
-pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF;
-pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF;
-pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS;
-pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS;
-pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS;
-pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING;
-pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING;
-pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL;
-pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE;
-pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IORING_REGISTER_BUFFERS = 0,
-IORING_UNREGISTER_BUFFERS = 1,
-IORING_REGISTER_FILES = 2,
-IORING_UNREGISTER_FILES = 3,
-IORING_REGISTER_EVENTFD = 4,
-IORING_UNREGISTER_EVENTFD = 5,
-IORING_REGISTER_FILES_UPDATE = 6,
-IORING_REGISTER_EVENTFD_ASYNC = 7,
-IORING_REGISTER_PROBE = 8,
-IORING_REGISTER_PERSONALITY = 9,
-IORING_UNREGISTER_PERSONALITY = 10,
-IORING_REGISTER_RESTRICTIONS = 11,
-IORING_REGISTER_ENABLE_RINGS = 12,
-IORING_REGISTER_FILES2 = 13,
-IORING_REGISTER_FILES_UPDATE2 = 14,
-IORING_REGISTER_BUFFERS2 = 15,
-IORING_REGISTER_BUFFERS_UPDATE = 16,
-IORING_REGISTER_IOWQ_AFF = 17,
-IORING_UNREGISTER_IOWQ_AFF = 18,
-IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
-IORING_REGISTER_RING_FDS = 20,
-IORING_UNREGISTER_RING_FDS = 21,
-IORING_REGISTER_PBUF_RING = 22,
-IORING_UNREGISTER_PBUF_RING = 23,
-IORING_REGISTER_SYNC_CANCEL = 24,
-IORING_REGISTER_FILE_ALLOC_RANGE = 25,
-IORING_REGISTER_LAST = 26,
-}
-pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND;
-pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IO_WQ_BOUND = 0,
-IO_WQ_UNBOUND = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_files_update {
-pub offset: __u32,
-pub resv: __u32,
-pub fds: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_register {
-pub nr: __u32,
-pub flags: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub tags: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update2 {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-pub tags: __u64,
-pub nr: __u32,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_slot {
-pub tag: __u64,
-pub resv: [__u64; 3usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_register {
-pub nr_slots: __u32,
-pub resv: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub resv3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_probe_op {
-pub op: __u8,
-pub resv: __u8,
-pub flags: __u16,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_probe {
-pub last_op: __u8,
-pub ops_len: __u8,
-pub resv: __u16,
-pub resv2: [__u32; 3usize],
-pub ops: __IncompleteArrayField<io_uring_probe_op>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct io_uring_restriction {
-pub opcode: __u16,
-pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1,
-pub resv: __u8,
-pub resv2: [__u32; 3usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_restriction__bindgen_ty_1 {
-pub register_op: __u8,
-pub sqe_op: __u8,
-pub sqe_flags: __u8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf {
-pub addr: __u64,
-pub len: __u32,
-pub bid: __u16,
-pub resv: __u16,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring {
-pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1>,
-pub bufs: __BindgenUnionField<[io_uring_buf; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 {
-pub resv1: __u64,
-pub resv2: __u32,
-pub resv3: __u16,
-pub tail: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_reg {
-pub ring_addr: __u64,
-pub ring_entries: __u32,
-pub bgid: __u16,
-pub pad: __u16,
-pub resv: [__u64; 3usize],
-}
-pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP;
-pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP;
-pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED;
-pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED;
-pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IORING_RESTRICTION_REGISTER_OP = 0,
-IORING_RESTRICTION_SQE_OP = 1,
-IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2,
-IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3,
-IORING_RESTRICTION_LAST = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_getevents_arg {
-pub sigmask: __u64,
-pub sigmask_sz: __u32,
-pub pad: __u32,
-pub ts: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sync_cancel_reg {
-pub addr: __u64,
-pub fd: __s32,
-pub flags: __u32,
-pub timeout: __kernel_timespec,
-pub pad: [__u64; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_file_index_range {
-pub off: __u32,
-pub len: __u32,
-pub resv: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_recvmsg_out {
-pub namelen: __u32,
-pub controllen: __u32,
-pub payloadlen: __u32,
-pub flags: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr {
-pub __storage: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct linger {
-pub l_onoff: crate::ctypes::c_int,
-pub l_linger: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct linux_dirent64 {
-pub d_ino: crate::ctypes::c_ulonglong,
-pub d_off: crate::ctypes::c_longlong,
-pub d_reclen: __u16,
-pub d_type: __u8,
-pub d_name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-pub type socklen_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct stat {
-pub st_dev: crate::ctypes::c_ushort,
-pub st_ino: __kernel_ino_t,
-pub st_mode: __kernel_mode_t,
-pub st_nlink: crate::ctypes::c_short,
-pub st_uid: crate::ctypes::c_ushort,
-pub st_gid: crate::ctypes::c_ushort,
-pub st_rdev: crate::ctypes::c_ushort,
-pub st_size: crate::ctypes::c_long,
-pub st_atime: crate::ctypes::c_long,
-pub st_atime_nsec: crate::ctypes::c_ulong,
-pub st_mtime: crate::ctypes::c_long,
-pub st_mtime_nsec: crate::ctypes::c_ulong,
-pub st_ctime: crate::ctypes::c_long,
-pub st_ctime_nsec: crate::ctypes::c_ulong,
-pub st_blksize: crate::ctypes::c_long,
-pub st_blocks: crate::ctypes::c_long,
-pub __unused4: [crate::ctypes::c_ulong; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct stat64 {
-pub st_dev: crate::ctypes::c_ulonglong,
-pub st_ino: crate::ctypes::c_ulonglong,
-pub st_mode: crate::ctypes::c_uint,
-pub st_nlink: crate::ctypes::c_uint,
-pub st_uid: crate::ctypes::c_uint,
-pub st_gid: crate::ctypes::c_uint,
-pub st_rdev: crate::ctypes::c_ulonglong,
-pub __pad3: [crate::ctypes::c_uchar; 8usize],
-pub st_size: crate::ctypes::c_longlong,
-pub st_blksize: crate::ctypes::c_uint,
-pub __pad4: [crate::ctypes::c_uchar; 8usize],
-pub st_blocks: crate::ctypes::c_uint,
-pub st_atime: crate::ctypes::c_uint,
-pub st_atime_nsec: crate::ctypes::c_uint,
-pub st_mtime: crate::ctypes::c_uint,
-pub st_mtime_nsec: crate::ctypes::c_uint,
-pub st_ctime: crate::ctypes::c_uint,
-pub st_ctime_nsec: crate::ctypes::c_uint,
-pub __unused4: crate::ctypes::c_uint,
-pub __unused5: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u32,
-pub f_bfree: __u32,
-pub f_bavail: __u32,
-pub f_files: __u32,
-pub f_ffree: __u32,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs64 {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct compat_statfs64 {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-pub type __fsword_t = __u32;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct user_desc {
-pub entry_number: crate::ctypes::c_uint,
-pub base_addr: crate::ctypes::c_uint,
-pub limit: crate::ctypes::c_uint,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub __bindgen_padding_0: [u8; 3usize],
-}
-impl user_desc {
-#[inline]
-pub fn seg_32bit(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_32bit(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn contents(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 2u8) as u32) }
-}
-#[inline]
-pub fn set_contents(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(1usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn read_exec_only(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_read_exec_only(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(3usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn limit_in_pages(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_limit_in_pages(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn seg_not_present(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_not_present(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(5usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn useable(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_useable(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(6usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(seg_32bit: crate::ctypes::c_uint, contents: crate::ctypes::c_uint, read_exec_only: crate::ctypes::c_uint, limit_in_pages: crate::ctypes::c_uint, seg_not_present: crate::ctypes::c_uint, useable: crate::ctypes::c_uint) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 1u8, {
-let seg_32bit: u32 = unsafe { ::core::mem::transmute(seg_32bit) };
-seg_32bit as u64
-});
-__bindgen_bitfield_unit.set(1usize, 2u8, {
-let contents: u32 = unsafe { ::core::mem::transmute(contents) };
-contents as u64
-});
-__bindgen_bitfield_unit.set(3usize, 1u8, {
-let read_exec_only: u32 = unsafe { ::core::mem::transmute(read_exec_only) };
-read_exec_only as u64
-});
-__bindgen_bitfield_unit.set(4usize, 1u8, {
-let limit_in_pages: u32 = unsafe { ::core::mem::transmute(limit_in_pages) };
-limit_in_pages as u64
-});
-__bindgen_bitfield_unit.set(5usize, 1u8, {
-let seg_not_present: u32 = unsafe { ::core::mem::transmute(seg_not_present) };
-seg_not_present as u64
-});
-__bindgen_bitfield_unit.set(6usize, 1u8, {
-let useable: u32 = unsafe { ::core::mem::transmute(useable) };
-useable as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct msghdr {
-pub msg_name: *mut crate::ctypes::c_void,
-pub msg_namelen: crate::ctypes::c_int,
-pub msg_iov: *mut iovec,
-pub msg_iovlen: size_t,
-pub msg_control: *mut crate::ctypes::c_void,
-pub msg_controllen: size_t,
-pub msg_flags: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct cmsghdr {
-pub cmsg_len: size_t,
-pub cmsg_level: crate::ctypes::c_int,
-pub cmsg_type: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ucred {
-pub pid: __u32,
-pub uid: __u32,
-pub gid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mmsghdr {
-pub msg_hdr: msghdr,
-pub msg_len: crate::ctypes::c_uint,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/sparc/ioctl.rs b/vendor/linux-raw-sys-0.3.2/src/sparc/ioctl.rs
deleted file mode 100644
index 43852a466..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/sparc/ioctl.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-
diff --git a/vendor/linux-raw-sys-0.3.2/src/sparc/netlink.rs b/vendor/linux-raw-sys-0.3.2/src/sparc/netlink.rs
deleted file mode 100644
index 382c9e58a..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/sparc/netlink.rs
+++ /dev/null
@@ -1,2861 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const __BITS_PER_LONG: u32 = 32;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const NETLINK_ROUTE: u32 = 0;
-pub const NETLINK_UNUSED: u32 = 1;
-pub const NETLINK_USERSOCK: u32 = 2;
-pub const NETLINK_FIREWALL: u32 = 3;
-pub const NETLINK_SOCK_DIAG: u32 = 4;
-pub const NETLINK_NFLOG: u32 = 5;
-pub const NETLINK_XFRM: u32 = 6;
-pub const NETLINK_SELINUX: u32 = 7;
-pub const NETLINK_ISCSI: u32 = 8;
-pub const NETLINK_AUDIT: u32 = 9;
-pub const NETLINK_FIB_LOOKUP: u32 = 10;
-pub const NETLINK_CONNECTOR: u32 = 11;
-pub const NETLINK_NETFILTER: u32 = 12;
-pub const NETLINK_IP6_FW: u32 = 13;
-pub const NETLINK_DNRTMSG: u32 = 14;
-pub const NETLINK_KOBJECT_UEVENT: u32 = 15;
-pub const NETLINK_GENERIC: u32 = 16;
-pub const NETLINK_SCSITRANSPORT: u32 = 18;
-pub const NETLINK_ECRYPTFS: u32 = 19;
-pub const NETLINK_RDMA: u32 = 20;
-pub const NETLINK_CRYPTO: u32 = 21;
-pub const NETLINK_SMC: u32 = 22;
-pub const NETLINK_INET_DIAG: u32 = 4;
-pub const MAX_LINKS: u32 = 32;
-pub const NLM_F_REQUEST: u32 = 1;
-pub const NLM_F_MULTI: u32 = 2;
-pub const NLM_F_ACK: u32 = 4;
-pub const NLM_F_ECHO: u32 = 8;
-pub const NLM_F_DUMP_INTR: u32 = 16;
-pub const NLM_F_DUMP_FILTERED: u32 = 32;
-pub const NLM_F_ROOT: u32 = 256;
-pub const NLM_F_MATCH: u32 = 512;
-pub const NLM_F_ATOMIC: u32 = 1024;
-pub const NLM_F_DUMP: u32 = 768;
-pub const NLM_F_REPLACE: u32 = 256;
-pub const NLM_F_EXCL: u32 = 512;
-pub const NLM_F_CREATE: u32 = 1024;
-pub const NLM_F_APPEND: u32 = 2048;
-pub const NLM_F_NONREC: u32 = 256;
-pub const NLM_F_BULK: u32 = 512;
-pub const NLM_F_CAPPED: u32 = 256;
-pub const NLM_F_ACK_TLVS: u32 = 512;
-pub const NLMSG_ALIGNTO: u32 = 4;
-pub const NLMSG_NOOP: u32 = 1;
-pub const NLMSG_ERROR: u32 = 2;
-pub const NLMSG_DONE: u32 = 3;
-pub const NLMSG_OVERRUN: u32 = 4;
-pub const NLMSG_MIN_TYPE: u32 = 16;
-pub const NETLINK_ADD_MEMBERSHIP: u32 = 1;
-pub const NETLINK_DROP_MEMBERSHIP: u32 = 2;
-pub const NETLINK_PKTINFO: u32 = 3;
-pub const NETLINK_BROADCAST_ERROR: u32 = 4;
-pub const NETLINK_NO_ENOBUFS: u32 = 5;
-pub const NETLINK_RX_RING: u32 = 6;
-pub const NETLINK_TX_RING: u32 = 7;
-pub const NETLINK_LISTEN_ALL_NSID: u32 = 8;
-pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9;
-pub const NETLINK_CAP_ACK: u32 = 10;
-pub const NETLINK_EXT_ACK: u32 = 11;
-pub const NETLINK_GET_STRICT_CHK: u32 = 12;
-pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4;
-pub const NET_MAJOR: u32 = 36;
-pub const NLA_F_NESTED: u32 = 32768;
-pub const NLA_F_NET_BYTEORDER: u32 = 16384;
-pub const NLA_TYPE_MASK: i32 = -49153;
-pub const NLA_ALIGNTO: u32 = 4;
-pub const MACVLAN_FLAG_NOPROMISC: u32 = 1;
-pub const MACVLAN_FLAG_NODST: u32 = 2;
-pub const IPVLAN_F_PRIVATE: u32 = 1;
-pub const IPVLAN_F_VEPA: u32 = 2;
-pub const TUNNEL_MSG_FLAG_STATS: u32 = 1;
-pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1;
-pub const MAX_VLAN_LIST_LEN: u32 = 1;
-pub const PORT_PROFILE_MAX: u32 = 40;
-pub const PORT_UUID_MAX: u32 = 16;
-pub const PORT_SELF_VF: i32 = -1;
-pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1;
-pub const XDP_FLAGS_SKB_MODE: u32 = 2;
-pub const XDP_FLAGS_DRV_MODE: u32 = 4;
-pub const XDP_FLAGS_HW_MODE: u32 = 8;
-pub const XDP_FLAGS_REPLACE: u32 = 16;
-pub const XDP_FLAGS_MODES: u32 = 14;
-pub const XDP_FLAGS_MASK: u32 = 31;
-pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1;
-pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32;
-pub const IFA_F_SECONDARY: u32 = 1;
-pub const IFA_F_TEMPORARY: u32 = 1;
-pub const IFA_F_NODAD: u32 = 2;
-pub const IFA_F_OPTIMISTIC: u32 = 4;
-pub const IFA_F_DADFAILED: u32 = 8;
-pub const IFA_F_HOMEADDRESS: u32 = 16;
-pub const IFA_F_DEPRECATED: u32 = 32;
-pub const IFA_F_TENTATIVE: u32 = 64;
-pub const IFA_F_PERMANENT: u32 = 128;
-pub const IFA_F_MANAGETEMPADDR: u32 = 256;
-pub const IFA_F_NOPREFIXROUTE: u32 = 512;
-pub const IFA_F_MCAUTOJOIN: u32 = 1024;
-pub const IFA_F_STABLE_PRIVACY: u32 = 2048;
-pub const IFAPROT_UNSPEC: u32 = 0;
-pub const IFAPROT_KERNEL_LO: u32 = 1;
-pub const IFAPROT_KERNEL_RA: u32 = 2;
-pub const IFAPROT_KERNEL_LL: u32 = 3;
-pub const NTF_USE: u32 = 1;
-pub const NTF_SELF: u32 = 2;
-pub const NTF_MASTER: u32 = 4;
-pub const NTF_PROXY: u32 = 8;
-pub const NTF_EXT_LEARNED: u32 = 16;
-pub const NTF_OFFLOADED: u32 = 32;
-pub const NTF_STICKY: u32 = 64;
-pub const NTF_ROUTER: u32 = 128;
-pub const NTF_EXT_MANAGED: u32 = 1;
-pub const NTF_EXT_LOCKED: u32 = 2;
-pub const NUD_INCOMPLETE: u32 = 1;
-pub const NUD_REACHABLE: u32 = 2;
-pub const NUD_STALE: u32 = 4;
-pub const NUD_DELAY: u32 = 8;
-pub const NUD_PROBE: u32 = 16;
-pub const NUD_FAILED: u32 = 32;
-pub const NUD_NOARP: u32 = 64;
-pub const NUD_PERMANENT: u32 = 128;
-pub const NUD_NONE: u32 = 0;
-pub const RTNL_FAMILY_IPMR: u32 = 128;
-pub const RTNL_FAMILY_IP6MR: u32 = 129;
-pub const RTNL_FAMILY_MAX: u32 = 129;
-pub const RTA_ALIGNTO: u32 = 4;
-pub const RTPROT_UNSPEC: u32 = 0;
-pub const RTPROT_REDIRECT: u32 = 1;
-pub const RTPROT_KERNEL: u32 = 2;
-pub const RTPROT_BOOT: u32 = 3;
-pub const RTPROT_STATIC: u32 = 4;
-pub const RTPROT_GATED: u32 = 8;
-pub const RTPROT_RA: u32 = 9;
-pub const RTPROT_MRT: u32 = 10;
-pub const RTPROT_ZEBRA: u32 = 11;
-pub const RTPROT_BIRD: u32 = 12;
-pub const RTPROT_DNROUTED: u32 = 13;
-pub const RTPROT_XORP: u32 = 14;
-pub const RTPROT_NTK: u32 = 15;
-pub const RTPROT_DHCP: u32 = 16;
-pub const RTPROT_MROUTED: u32 = 17;
-pub const RTPROT_KEEPALIVED: u32 = 18;
-pub const RTPROT_BABEL: u32 = 42;
-pub const RTPROT_OPENR: u32 = 99;
-pub const RTPROT_BGP: u32 = 186;
-pub const RTPROT_ISIS: u32 = 187;
-pub const RTPROT_OSPF: u32 = 188;
-pub const RTPROT_RIP: u32 = 189;
-pub const RTPROT_EIGRP: u32 = 192;
-pub const RTM_F_NOTIFY: u32 = 256;
-pub const RTM_F_CLONED: u32 = 512;
-pub const RTM_F_EQUALIZE: u32 = 1024;
-pub const RTM_F_PREFIX: u32 = 2048;
-pub const RTM_F_LOOKUP_TABLE: u32 = 4096;
-pub const RTM_F_FIB_MATCH: u32 = 8192;
-pub const RTM_F_OFFLOAD: u32 = 16384;
-pub const RTM_F_TRAP: u32 = 32768;
-pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912;
-pub const RTNH_F_DEAD: u32 = 1;
-pub const RTNH_F_PERVASIVE: u32 = 2;
-pub const RTNH_F_ONLINK: u32 = 4;
-pub const RTNH_F_OFFLOAD: u32 = 8;
-pub const RTNH_F_LINKDOWN: u32 = 16;
-pub const RTNH_F_UNRESOLVED: u32 = 32;
-pub const RTNH_F_TRAP: u32 = 64;
-pub const RTNH_COMPARE_MASK: u32 = 89;
-pub const RTNH_ALIGNTO: u32 = 4;
-pub const RTNETLINK_HAVE_PEERINFO: u32 = 1;
-pub const RTAX_FEATURE_ECN: u32 = 1;
-pub const RTAX_FEATURE_SACK: u32 = 2;
-pub const RTAX_FEATURE_TIMESTAMP: u32 = 4;
-pub const RTAX_FEATURE_ALLFRAG: u32 = 8;
-pub const RTAX_FEATURE_MASK: u32 = 15;
-pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295;
-pub const TCA_DUMP_FLAGS_TERSE: u32 = 1;
-pub const RTMGRP_LINK: u32 = 1;
-pub const RTMGRP_NOTIFY: u32 = 2;
-pub const RTMGRP_NEIGH: u32 = 4;
-pub const RTMGRP_TC: u32 = 8;
-pub const RTMGRP_IPV4_IFADDR: u32 = 16;
-pub const RTMGRP_IPV4_MROUTE: u32 = 32;
-pub const RTMGRP_IPV4_ROUTE: u32 = 64;
-pub const RTMGRP_IPV4_RULE: u32 = 128;
-pub const RTMGRP_IPV6_IFADDR: u32 = 256;
-pub const RTMGRP_IPV6_MROUTE: u32 = 512;
-pub const RTMGRP_IPV6_ROUTE: u32 = 1024;
-pub const RTMGRP_IPV6_IFINFO: u32 = 2048;
-pub const RTMGRP_DECnet_IFADDR: u32 = 4096;
-pub const RTMGRP_DECnet_ROUTE: u32 = 16384;
-pub const RTMGRP_IPV6_PREFIX: u32 = 131072;
-pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2;
-pub const RTEXT_FILTER_VF: u32 = 1;
-pub const RTEXT_FILTER_BRVLAN: u32 = 2;
-pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4;
-pub const RTEXT_FILTER_SKIP_STATS: u32 = 8;
-pub const RTEXT_FILTER_MRP: u32 = 16;
-pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32;
-pub const RTEXT_FILTER_CFM_STATUS: u32 = 64;
-pub const RTEXT_FILTER_MST: u32 = 128;
-pub type size_t = crate::ctypes::c_uint;
-pub type ssize_t = crate::ctypes::c_int;
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 32usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_size_t = crate::ctypes::c_uint;
-pub type __kernel_ssize_t = crate::ctypes::c_int;
-pub type __kernel_ptrdiff_t = crate::ctypes::c_long;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort;
-pub type __kernel_uid_t = crate::ctypes::c_ushort;
-pub type __kernel_gid_t = crate::ctypes::c_ushort;
-pub type __kernel_mode_t = crate::ctypes::c_ushort;
-pub type __kernel_daddr_t = crate::ctypes::c_long;
-pub type __kernel_old_dev_t = crate::ctypes::c_ushort;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_uid_t = __kernel_uid_t;
-pub type __kernel_old_gid_t = __kernel_gid_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_nl {
-pub nl_family: __kernel_sa_family_t,
-pub nl_pad: crate::ctypes::c_ushort,
-pub nl_pid: __u32,
-pub nl_groups: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsghdr {
-pub nlmsg_len: __u32,
-pub nlmsg_type: __u16,
-pub nlmsg_flags: __u16,
-pub nlmsg_seq: __u32,
-pub nlmsg_pid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsgerr {
-pub error: crate::ctypes::c_int,
-pub msg: nlmsghdr,
-}
-impl nlmsgerr_attrs {
-pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nlmsgerr_attrs {
-NLMSGERR_ATTR_UNUSED = 0,
-NLMSGERR_ATTR_MSG = 1,
-NLMSGERR_ATTR_OFFS = 2,
-NLMSGERR_ATTR_COOKIE = 3,
-NLMSGERR_ATTR_POLICY = 4,
-NLMSGERR_ATTR_MISS_TYPE = 5,
-NLMSGERR_ATTR_MISS_NEST = 6,
-__NLMSGERR_ATTR_MAX = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_pktinfo {
-pub group: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_req {
-pub nm_block_size: crate::ctypes::c_uint,
-pub nm_block_nr: crate::ctypes::c_uint,
-pub nm_frame_size: crate::ctypes::c_uint,
-pub nm_frame_nr: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_hdr {
-pub nm_status: crate::ctypes::c_uint,
-pub nm_len: crate::ctypes::c_uint,
-pub nm_group: __u32,
-pub nm_pid: __u32,
-pub nm_uid: __u32,
-pub nm_gid: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nl_mmap_status {
-NL_MMAP_STATUS_UNUSED = 0,
-NL_MMAP_STATUS_RESERVED = 1,
-NL_MMAP_STATUS_VALID = 2,
-NL_MMAP_STATUS_COPY = 3,
-NL_MMAP_STATUS_SKIP = 4,
-}
-pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED;
-pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-NETLINK_UNCONNECTED = 0,
-NETLINK_CONNECTED = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlattr {
-pub nla_len: __u16,
-pub nla_type: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nla_bitfield32 {
-pub value: __u32,
-pub selector: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_attribute_type {
-NL_ATTR_TYPE_INVALID = 0,
-NL_ATTR_TYPE_FLAG = 1,
-NL_ATTR_TYPE_U8 = 2,
-NL_ATTR_TYPE_U16 = 3,
-NL_ATTR_TYPE_U32 = 4,
-NL_ATTR_TYPE_U64 = 5,
-NL_ATTR_TYPE_S8 = 6,
-NL_ATTR_TYPE_S16 = 7,
-NL_ATTR_TYPE_S32 = 8,
-NL_ATTR_TYPE_S64 = 9,
-NL_ATTR_TYPE_BINARY = 10,
-NL_ATTR_TYPE_STRING = 11,
-NL_ATTR_TYPE_NUL_STRING = 12,
-NL_ATTR_TYPE_NESTED = 13,
-NL_ATTR_TYPE_NESTED_ARRAY = 14,
-NL_ATTR_TYPE_BITFIELD32 = 15,
-}
-impl netlink_policy_type_attr {
-pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_policy_type_attr {
-NL_POLICY_TYPE_ATTR_UNSPEC = 0,
-NL_POLICY_TYPE_ATTR_TYPE = 1,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5,
-NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6,
-NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7,
-NL_POLICY_TYPE_ATTR_POLICY_IDX = 8,
-NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9,
-NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10,
-NL_POLICY_TYPE_ATTR_PAD = 11,
-NL_POLICY_TYPE_ATTR_MASK = 12,
-__NL_POLICY_TYPE_ATTR_MAX = 13,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats {
-pub rx_packets: __u32,
-pub tx_packets: __u32,
-pub rx_bytes: __u32,
-pub tx_bytes: __u32,
-pub rx_errors: __u32,
-pub tx_errors: __u32,
-pub rx_dropped: __u32,
-pub tx_dropped: __u32,
-pub multicast: __u32,
-pub collisions: __u32,
-pub rx_length_errors: __u32,
-pub rx_over_errors: __u32,
-pub rx_crc_errors: __u32,
-pub rx_frame_errors: __u32,
-pub rx_fifo_errors: __u32,
-pub rx_missed_errors: __u32,
-pub tx_aborted_errors: __u32,
-pub tx_carrier_errors: __u32,
-pub tx_fifo_errors: __u32,
-pub tx_heartbeat_errors: __u32,
-pub tx_window_errors: __u32,
-pub rx_compressed: __u32,
-pub tx_compressed: __u32,
-pub rx_nohandler: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-pub collisions: __u64,
-pub rx_length_errors: __u64,
-pub rx_over_errors: __u64,
-pub rx_crc_errors: __u64,
-pub rx_frame_errors: __u64,
-pub rx_fifo_errors: __u64,
-pub rx_missed_errors: __u64,
-pub tx_aborted_errors: __u64,
-pub tx_carrier_errors: __u64,
-pub tx_fifo_errors: __u64,
-pub tx_heartbeat_errors: __u64,
-pub tx_window_errors: __u64,
-pub rx_compressed: __u64,
-pub tx_compressed: __u64,
-pub rx_nohandler: __u64,
-pub rx_otherhost_dropped: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_hw_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_ifmap {
-pub mem_start: __u64,
-pub mem_end: __u64,
-pub base_addr: __u64,
-pub irq: __u16,
-pub dma: __u8,
-pub port: __u8,
-}
-pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC;
-pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS;
-pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST;
-pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME;
-pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU;
-pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK;
-pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC;
-pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS;
-pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST;
-pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY;
-pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER;
-pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS;
-pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO;
-pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN;
-pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP;
-pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT;
-pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE;
-pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE;
-pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO;
-pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID;
-pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS;
-pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF;
-pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST;
-pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64;
-pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS;
-pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF;
-pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC;
-pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP;
-pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD;
-pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK;
-pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY;
-pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES;
-pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES;
-pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER;
-pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID;
-pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES;
-pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID;
-pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID;
-pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME;
-pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN;
-pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS;
-pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE;
-pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD;
-pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP;
-pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT;
-pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID;
-pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT;
-pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT;
-pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX;
-pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU;
-pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU;
-pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST;
-pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME;
-pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS;
-pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON;
-pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME;
-pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME;
-pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS;
-pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI;
-pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT;
-pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IFLA_UNSPEC = 0,
-IFLA_ADDRESS = 1,
-IFLA_BROADCAST = 2,
-IFLA_IFNAME = 3,
-IFLA_MTU = 4,
-IFLA_LINK = 5,
-IFLA_QDISC = 6,
-IFLA_STATS = 7,
-IFLA_COST = 8,
-IFLA_PRIORITY = 9,
-IFLA_MASTER = 10,
-IFLA_WIRELESS = 11,
-IFLA_PROTINFO = 12,
-IFLA_TXQLEN = 13,
-IFLA_MAP = 14,
-IFLA_WEIGHT = 15,
-IFLA_OPERSTATE = 16,
-IFLA_LINKMODE = 17,
-IFLA_LINKINFO = 18,
-IFLA_NET_NS_PID = 19,
-IFLA_IFALIAS = 20,
-IFLA_NUM_VF = 21,
-IFLA_VFINFO_LIST = 22,
-IFLA_STATS64 = 23,
-IFLA_VF_PORTS = 24,
-IFLA_PORT_SELF = 25,
-IFLA_AF_SPEC = 26,
-IFLA_GROUP = 27,
-IFLA_NET_NS_FD = 28,
-IFLA_EXT_MASK = 29,
-IFLA_PROMISCUITY = 30,
-IFLA_NUM_TX_QUEUES = 31,
-IFLA_NUM_RX_QUEUES = 32,
-IFLA_CARRIER = 33,
-IFLA_PHYS_PORT_ID = 34,
-IFLA_CARRIER_CHANGES = 35,
-IFLA_PHYS_SWITCH_ID = 36,
-IFLA_LINK_NETNSID = 37,
-IFLA_PHYS_PORT_NAME = 38,
-IFLA_PROTO_DOWN = 39,
-IFLA_GSO_MAX_SEGS = 40,
-IFLA_GSO_MAX_SIZE = 41,
-IFLA_PAD = 42,
-IFLA_XDP = 43,
-IFLA_EVENT = 44,
-IFLA_NEW_NETNSID = 45,
-IFLA_IF_NETNSID = 46,
-IFLA_CARRIER_UP_COUNT = 47,
-IFLA_CARRIER_DOWN_COUNT = 48,
-IFLA_NEW_IFINDEX = 49,
-IFLA_MIN_MTU = 50,
-IFLA_MAX_MTU = 51,
-IFLA_PROP_LIST = 52,
-IFLA_ALT_IFNAME = 53,
-IFLA_PERM_ADDRESS = 54,
-IFLA_PROTO_DOWN_REASON = 55,
-IFLA_PARENT_DEV_NAME = 56,
-IFLA_PARENT_DEV_BUS_NAME = 57,
-IFLA_GRO_MAX_SIZE = 58,
-IFLA_TSO_MAX_SIZE = 59,
-IFLA_TSO_MAX_SEGS = 60,
-IFLA_ALLMULTI = 61,
-IFLA_DEVLINK_PORT = 62,
-__IFLA_MAX = 63,
-}
-pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC;
-pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK;
-pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT;
-pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-IFLA_PROTO_DOWN_REASON_UNSPEC = 0,
-IFLA_PROTO_DOWN_REASON_MASK = 1,
-IFLA_PROTO_DOWN_REASON_VALUE = 2,
-__IFLA_PROTO_DOWN_REASON_CNT = 3,
-}
-pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC;
-pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF;
-pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-IFLA_INET_UNSPEC = 0,
-IFLA_INET_CONF = 1,
-__IFLA_INET_MAX = 2,
-}
-pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC;
-pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS;
-pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF;
-pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS;
-pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST;
-pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO;
-pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS;
-pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN;
-pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE;
-pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU;
-pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-IFLA_INET6_UNSPEC = 0,
-IFLA_INET6_FLAGS = 1,
-IFLA_INET6_CONF = 2,
-IFLA_INET6_STATS = 3,
-IFLA_INET6_MCAST = 4,
-IFLA_INET6_CACHEINFO = 5,
-IFLA_INET6_ICMP6STATS = 6,
-IFLA_INET6_TOKEN = 7,
-IFLA_INET6_ADDR_GEN_MODE = 8,
-IFLA_INET6_RA_MTU = 9,
-__IFLA_INET6_MAX = 10,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum in6_addr_gen_mode {
-IN6_ADDR_GEN_MODE_EUI64 = 0,
-IN6_ADDR_GEN_MODE_NONE = 1,
-IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2,
-IN6_ADDR_GEN_MODE_RANDOM = 3,
-}
-pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC;
-pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY;
-pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME;
-pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE;
-pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME;
-pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE;
-pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY;
-pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING;
-pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL;
-pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK;
-pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID;
-pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID;
-pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT;
-pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST;
-pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE;
-pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED;
-pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER;
-pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER;
-pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER;
-pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER;
-pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR;
-pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH;
-pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER;
-pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING;
-pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR;
-pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER;
-pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY;
-pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX;
-pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT;
-pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL;
-pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL;
-pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL;
-pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL;
-pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL;
-pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES;
-pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES;
-pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES;
-pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID;
-pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD;
-pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED;
-pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED;
-pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION;
-pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION;
-pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT;
-pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT;
-pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE;
-pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-IFLA_BR_UNSPEC = 0,
-IFLA_BR_FORWARD_DELAY = 1,
-IFLA_BR_HELLO_TIME = 2,
-IFLA_BR_MAX_AGE = 3,
-IFLA_BR_AGEING_TIME = 4,
-IFLA_BR_STP_STATE = 5,
-IFLA_BR_PRIORITY = 6,
-IFLA_BR_VLAN_FILTERING = 7,
-IFLA_BR_VLAN_PROTOCOL = 8,
-IFLA_BR_GROUP_FWD_MASK = 9,
-IFLA_BR_ROOT_ID = 10,
-IFLA_BR_BRIDGE_ID = 11,
-IFLA_BR_ROOT_PORT = 12,
-IFLA_BR_ROOT_PATH_COST = 13,
-IFLA_BR_TOPOLOGY_CHANGE = 14,
-IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 15,
-IFLA_BR_HELLO_TIMER = 16,
-IFLA_BR_TCN_TIMER = 17,
-IFLA_BR_TOPOLOGY_CHANGE_TIMER = 18,
-IFLA_BR_GC_TIMER = 19,
-IFLA_BR_GROUP_ADDR = 20,
-IFLA_BR_FDB_FLUSH = 21,
-IFLA_BR_MCAST_ROUTER = 22,
-IFLA_BR_MCAST_SNOOPING = 23,
-IFLA_BR_MCAST_QUERY_USE_IFADDR = 24,
-IFLA_BR_MCAST_QUERIER = 25,
-IFLA_BR_MCAST_HASH_ELASTICITY = 26,
-IFLA_BR_MCAST_HASH_MAX = 27,
-IFLA_BR_MCAST_LAST_MEMBER_CNT = 28,
-IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29,
-IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30,
-IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31,
-IFLA_BR_MCAST_QUERIER_INTVL = 32,
-IFLA_BR_MCAST_QUERY_INTVL = 33,
-IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34,
-IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35,
-IFLA_BR_NF_CALL_IPTABLES = 36,
-IFLA_BR_NF_CALL_IP6TABLES = 37,
-IFLA_BR_NF_CALL_ARPTABLES = 38,
-IFLA_BR_VLAN_DEFAULT_PVID = 39,
-IFLA_BR_PAD = 40,
-IFLA_BR_VLAN_STATS_ENABLED = 41,
-IFLA_BR_MCAST_STATS_ENABLED = 42,
-IFLA_BR_MCAST_IGMP_VERSION = 43,
-IFLA_BR_MCAST_MLD_VERSION = 44,
-IFLA_BR_VLAN_STATS_PER_PORT = 45,
-IFLA_BR_MULTI_BOOLOPT = 46,
-IFLA_BR_MCAST_QUERIER_STATE = 47,
-__IFLA_BR_MAX = 48,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_bridge_id {
-pub prio: [__u8; 2usize],
-pub addr: [__u8; 6usize],
-}
-pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC;
-pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-BRIDGE_MODE_UNSPEC = 0,
-BRIDGE_MODE_HAIRPIN = 1,
-}
-pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC;
-pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE;
-pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY;
-pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST;
-pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE;
-pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD;
-pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT;
-pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE;
-pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING;
-pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD;
-pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP;
-pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC;
-pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI;
-pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID;
-pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID;
-pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT;
-pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST;
-pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID;
-pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO;
-pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK;
-pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING;
-pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER;
-pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER;
-pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER;
-pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH;
-pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER;
-pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD;
-pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD;
-pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST;
-pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL;
-pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD;
-pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK;
-pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS;
-pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED;
-pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT;
-pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN;
-pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT;
-pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED;
-pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB;
-pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IFLA_BRPORT_UNSPEC = 0,
-IFLA_BRPORT_STATE = 1,
-IFLA_BRPORT_PRIORITY = 2,
-IFLA_BRPORT_COST = 3,
-IFLA_BRPORT_MODE = 4,
-IFLA_BRPORT_GUARD = 5,
-IFLA_BRPORT_PROTECT = 6,
-IFLA_BRPORT_FAST_LEAVE = 7,
-IFLA_BRPORT_LEARNING = 8,
-IFLA_BRPORT_UNICAST_FLOOD = 9,
-IFLA_BRPORT_PROXYARP = 10,
-IFLA_BRPORT_LEARNING_SYNC = 11,
-IFLA_BRPORT_PROXYARP_WIFI = 12,
-IFLA_BRPORT_ROOT_ID = 13,
-IFLA_BRPORT_BRIDGE_ID = 14,
-IFLA_BRPORT_DESIGNATED_PORT = 15,
-IFLA_BRPORT_DESIGNATED_COST = 16,
-IFLA_BRPORT_ID = 17,
-IFLA_BRPORT_NO = 18,
-IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 19,
-IFLA_BRPORT_CONFIG_PENDING = 20,
-IFLA_BRPORT_MESSAGE_AGE_TIMER = 21,
-IFLA_BRPORT_FORWARD_DELAY_TIMER = 22,
-IFLA_BRPORT_HOLD_TIMER = 23,
-IFLA_BRPORT_FLUSH = 24,
-IFLA_BRPORT_MULTICAST_ROUTER = 25,
-IFLA_BRPORT_PAD = 26,
-IFLA_BRPORT_MCAST_FLOOD = 27,
-IFLA_BRPORT_MCAST_TO_UCAST = 28,
-IFLA_BRPORT_VLAN_TUNNEL = 29,
-IFLA_BRPORT_BCAST_FLOOD = 30,
-IFLA_BRPORT_GROUP_FWD_MASK = 31,
-IFLA_BRPORT_NEIGH_SUPPRESS = 32,
-IFLA_BRPORT_ISOLATED = 33,
-IFLA_BRPORT_BACKUP_PORT = 34,
-IFLA_BRPORT_MRP_RING_OPEN = 35,
-IFLA_BRPORT_MRP_IN_OPEN = 36,
-IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 37,
-IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 38,
-IFLA_BRPORT_LOCKED = 39,
-IFLA_BRPORT_MAB = 40,
-__IFLA_BRPORT_MAX = 41,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_cacheinfo {
-pub max_reasm_len: __u32,
-pub tstamp: __u32,
-pub reachable_time: __u32,
-pub retrans_time: __u32,
-}
-pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC;
-pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND;
-pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA;
-pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS;
-pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND;
-pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA;
-pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IFLA_INFO_UNSPEC = 0,
-IFLA_INFO_KIND = 1,
-IFLA_INFO_DATA = 2,
-IFLA_INFO_XSTATS = 3,
-IFLA_INFO_SLAVE_KIND = 4,
-IFLA_INFO_SLAVE_DATA = 5,
-__IFLA_INFO_MAX = 6,
-}
-pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC;
-pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID;
-pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS;
-pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS;
-pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS;
-pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL;
-pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IFLA_VLAN_UNSPEC = 0,
-IFLA_VLAN_ID = 1,
-IFLA_VLAN_FLAGS = 2,
-IFLA_VLAN_EGRESS_QOS = 3,
-IFLA_VLAN_INGRESS_QOS = 4,
-IFLA_VLAN_PROTOCOL = 5,
-__IFLA_VLAN_MAX = 6,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC;
-pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING;
-pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IFLA_VLAN_QOS_UNSPEC = 0,
-IFLA_VLAN_QOS_MAPPING = 1,
-__IFLA_VLAN_QOS_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_qos_mapping {
-pub from: __u32,
-pub to: __u32,
-}
-pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC;
-pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE;
-pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS;
-pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE;
-pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR;
-pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA;
-pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED;
-pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IFLA_MACVLAN_UNSPEC = 0,
-IFLA_MACVLAN_MODE = 1,
-IFLA_MACVLAN_FLAGS = 2,
-IFLA_MACVLAN_MACADDR_MODE = 3,
-IFLA_MACVLAN_MACADDR = 4,
-IFLA_MACVLAN_MACADDR_DATA = 5,
-IFLA_MACVLAN_MACADDR_COUNT = 6,
-IFLA_MACVLAN_BC_QUEUE_LEN = 7,
-IFLA_MACVLAN_BC_QUEUE_LEN_USED = 8,
-__IFLA_MACVLAN_MAX = 9,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_mode {
-MACVLAN_MODE_PRIVATE = 1,
-MACVLAN_MODE_VEPA = 2,
-MACVLAN_MODE_BRIDGE = 4,
-MACVLAN_MODE_PASSTHRU = 8,
-MACVLAN_MODE_SOURCE = 16,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_macaddr_mode {
-MACVLAN_MACADDR_ADD = 0,
-MACVLAN_MACADDR_DEL = 1,
-MACVLAN_MACADDR_FLUSH = 2,
-MACVLAN_MACADDR_SET = 3,
-}
-pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC;
-pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE;
-pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_13 {
-IFLA_VRF_UNSPEC = 0,
-IFLA_VRF_TABLE = 1,
-__IFLA_VRF_MAX = 2,
-}
-pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC;
-pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE;
-pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_14 {
-IFLA_VRF_PORT_UNSPEC = 0,
-IFLA_VRF_PORT_TABLE = 1,
-__IFLA_VRF_PORT_MAX = 2,
-}
-pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC;
-pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI;
-pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT;
-pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN;
-pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE;
-pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW;
-pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA;
-pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT;
-pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT;
-pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI;
-pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES;
-pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB;
-pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT;
-pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION;
-pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD;
-pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD;
-pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_15 {
-IFLA_MACSEC_UNSPEC = 0,
-IFLA_MACSEC_SCI = 1,
-IFLA_MACSEC_PORT = 2,
-IFLA_MACSEC_ICV_LEN = 3,
-IFLA_MACSEC_CIPHER_SUITE = 4,
-IFLA_MACSEC_WINDOW = 5,
-IFLA_MACSEC_ENCODING_SA = 6,
-IFLA_MACSEC_ENCRYPT = 7,
-IFLA_MACSEC_PROTECT = 8,
-IFLA_MACSEC_INC_SCI = 9,
-IFLA_MACSEC_ES = 10,
-IFLA_MACSEC_SCB = 11,
-IFLA_MACSEC_REPLAY_PROTECT = 12,
-IFLA_MACSEC_VALIDATION = 13,
-IFLA_MACSEC_PAD = 14,
-IFLA_MACSEC_OFFLOAD = 15,
-__IFLA_MACSEC_MAX = 16,
-}
-pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC;
-pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK;
-pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID;
-pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA;
-pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_16 {
-IFLA_XFRM_UNSPEC = 0,
-IFLA_XFRM_LINK = 1,
-IFLA_XFRM_IF_ID = 2,
-IFLA_XFRM_COLLECT_METADATA = 3,
-__IFLA_XFRM_MAX = 4,
-}
-impl macsec_validation_type {
-pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_validation_type {
-MACSEC_VALIDATE_DISABLED = 0,
-MACSEC_VALIDATE_CHECK = 1,
-MACSEC_VALIDATE_STRICT = 2,
-__MACSEC_VALIDATE_END = 3,
-}
-impl macsec_offload {
-pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_offload {
-MACSEC_OFFLOAD_OFF = 0,
-MACSEC_OFFLOAD_PHY = 1,
-MACSEC_OFFLOAD_MAC = 2,
-__MACSEC_OFFLOAD_END = 3,
-}
-pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC;
-pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE;
-pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS;
-pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_17 {
-IFLA_IPVLAN_UNSPEC = 0,
-IFLA_IPVLAN_MODE = 1,
-IFLA_IPVLAN_FLAGS = 2,
-__IFLA_IPVLAN_MAX = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ipvlan_mode {
-IPVLAN_MODE_L2 = 0,
-IPVLAN_MODE_L3 = 1,
-IPVLAN_MODE_L3S = 2,
-IPVLAN_MODE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tunnel_msg {
-pub family: __u8,
-pub flags: __u8,
-pub reserved2: __u16,
-pub ifindex: __u32,
-}
-pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC;
-pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD;
-pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_18 {
-VNIFILTER_ENTRY_STATS_UNSPEC = 0,
-VNIFILTER_ENTRY_STATS_RX_BYTES = 1,
-VNIFILTER_ENTRY_STATS_RX_PKTS = 2,
-VNIFILTER_ENTRY_STATS_RX_DROPS = 3,
-VNIFILTER_ENTRY_STATS_RX_ERRORS = 4,
-VNIFILTER_ENTRY_STATS_TX_BYTES = 5,
-VNIFILTER_ENTRY_STATS_TX_PKTS = 6,
-VNIFILTER_ENTRY_STATS_TX_DROPS = 7,
-VNIFILTER_ENTRY_STATS_TX_ERRORS = 8,
-VNIFILTER_ENTRY_STATS_PAD = 9,
-__VNIFILTER_ENTRY_STATS_MAX = 10,
-}
-pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START;
-pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6;
-pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS;
-pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_19 {
-VXLAN_VNIFILTER_ENTRY_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY_START = 1,
-VXLAN_VNIFILTER_ENTRY_END = 2,
-VXLAN_VNIFILTER_ENTRY_GROUP = 3,
-VXLAN_VNIFILTER_ENTRY_GROUP6 = 4,
-VXLAN_VNIFILTER_ENTRY_STATS = 5,
-__VXLAN_VNIFILTER_ENTRY_MAX = 6,
-}
-pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY;
-pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_20 {
-VXLAN_VNIFILTER_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY = 1,
-__VXLAN_VNIFILTER_MAX = 2,
-}
-pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC;
-pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID;
-pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP;
-pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK;
-pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL;
-pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL;
-pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS;
-pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING;
-pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING;
-pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT;
-pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE;
-pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY;
-pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC;
-pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS;
-pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS;
-pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT;
-pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6;
-pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6;
-pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX;
-pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX;
-pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX;
-pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP;
-pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL;
-pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA;
-pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL;
-pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE;
-pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT;
-pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF;
-pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER;
-pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_21 {
-IFLA_VXLAN_UNSPEC = 0,
-IFLA_VXLAN_ID = 1,
-IFLA_VXLAN_GROUP = 2,
-IFLA_VXLAN_LINK = 3,
-IFLA_VXLAN_LOCAL = 4,
-IFLA_VXLAN_TTL = 5,
-IFLA_VXLAN_TOS = 6,
-IFLA_VXLAN_LEARNING = 7,
-IFLA_VXLAN_AGEING = 8,
-IFLA_VXLAN_LIMIT = 9,
-IFLA_VXLAN_PORT_RANGE = 10,
-IFLA_VXLAN_PROXY = 11,
-IFLA_VXLAN_RSC = 12,
-IFLA_VXLAN_L2MISS = 13,
-IFLA_VXLAN_L3MISS = 14,
-IFLA_VXLAN_PORT = 15,
-IFLA_VXLAN_GROUP6 = 16,
-IFLA_VXLAN_LOCAL6 = 17,
-IFLA_VXLAN_UDP_CSUM = 18,
-IFLA_VXLAN_UDP_ZERO_CSUM6_TX = 19,
-IFLA_VXLAN_UDP_ZERO_CSUM6_RX = 20,
-IFLA_VXLAN_REMCSUM_TX = 21,
-IFLA_VXLAN_REMCSUM_RX = 22,
-IFLA_VXLAN_GBP = 23,
-IFLA_VXLAN_REMCSUM_NOPARTIAL = 24,
-IFLA_VXLAN_COLLECT_METADATA = 25,
-IFLA_VXLAN_LABEL = 26,
-IFLA_VXLAN_GPE = 27,
-IFLA_VXLAN_TTL_INHERIT = 28,
-IFLA_VXLAN_DF = 29,
-IFLA_VXLAN_VNIFILTER = 30,
-__IFLA_VXLAN_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vxlan_port_range {
-pub low: __be16,
-pub high: __be16,
-}
-impl ifla_vxlan_df {
-pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_vxlan_df {
-VXLAN_DF_UNSET = 0,
-VXLAN_DF_SET = 1,
-VXLAN_DF_INHERIT = 2,
-__VXLAN_DF_END = 3,
-}
-pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC;
-pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID;
-pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE;
-pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL;
-pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS;
-pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT;
-pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA;
-pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6;
-pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX;
-pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL;
-pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT;
-pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF;
-pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT;
-pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_22 {
-IFLA_GENEVE_UNSPEC = 0,
-IFLA_GENEVE_ID = 1,
-IFLA_GENEVE_REMOTE = 2,
-IFLA_GENEVE_TTL = 3,
-IFLA_GENEVE_TOS = 4,
-IFLA_GENEVE_PORT = 5,
-IFLA_GENEVE_COLLECT_METADATA = 6,
-IFLA_GENEVE_REMOTE6 = 7,
-IFLA_GENEVE_UDP_CSUM = 8,
-IFLA_GENEVE_UDP_ZERO_CSUM6_TX = 9,
-IFLA_GENEVE_UDP_ZERO_CSUM6_RX = 10,
-IFLA_GENEVE_LABEL = 11,
-IFLA_GENEVE_TTL_INHERIT = 12,
-IFLA_GENEVE_DF = 13,
-IFLA_GENEVE_INNER_PROTO_INHERIT = 14,
-__IFLA_GENEVE_MAX = 15,
-}
-impl ifla_geneve_df {
-pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_geneve_df {
-GENEVE_DF_UNSET = 0,
-GENEVE_DF_SET = 1,
-GENEVE_DF_INHERIT = 2,
-__GENEVE_DF_END = 3,
-}
-pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC;
-pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT;
-pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE;
-pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN;
-pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE;
-pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_23 {
-IFLA_BAREUDP_UNSPEC = 0,
-IFLA_BAREUDP_PORT = 1,
-IFLA_BAREUDP_ETHERTYPE = 2,
-IFLA_BAREUDP_SRCPORT_MIN = 3,
-IFLA_BAREUDP_MULTIPROTO_MODE = 4,
-__IFLA_BAREUDP_MAX = 5,
-}
-pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC;
-pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD;
-pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_24 {
-IFLA_PPP_UNSPEC = 0,
-IFLA_PPP_DEV_FD = 1,
-__IFLA_PPP_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_gtp_role {
-GTP_ROLE_GGSN = 0,
-GTP_ROLE_SGSN = 1,
-}
-pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC;
-pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0;
-pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1;
-pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE;
-pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE;
-pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS;
-pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT;
-pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_25 {
-IFLA_GTP_UNSPEC = 0,
-IFLA_GTP_FD0 = 1,
-IFLA_GTP_FD1 = 2,
-IFLA_GTP_PDP_HASHSIZE = 3,
-IFLA_GTP_ROLE = 4,
-IFLA_GTP_CREATE_SOCKETS = 5,
-IFLA_GTP_RESTART_COUNT = 6,
-__IFLA_GTP_MAX = 7,
-}
-pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC;
-pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE;
-pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE;
-pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON;
-pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY;
-pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY;
-pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER;
-pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL;
-pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET;
-pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE;
-pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS;
-pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY;
-pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT;
-pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC;
-pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY;
-pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP;
-pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF;
-pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE;
-pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS;
-pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL;
-pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE;
-pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE;
-pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT;
-pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO;
-pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO;
-pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY;
-pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM;
-pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB;
-pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY;
-pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE;
-pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX;
-pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET;
-pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_26 {
-IFLA_BOND_UNSPEC = 0,
-IFLA_BOND_MODE = 1,
-IFLA_BOND_ACTIVE_SLAVE = 2,
-IFLA_BOND_MIIMON = 3,
-IFLA_BOND_UPDELAY = 4,
-IFLA_BOND_DOWNDELAY = 5,
-IFLA_BOND_USE_CARRIER = 6,
-IFLA_BOND_ARP_INTERVAL = 7,
-IFLA_BOND_ARP_IP_TARGET = 8,
-IFLA_BOND_ARP_VALIDATE = 9,
-IFLA_BOND_ARP_ALL_TARGETS = 10,
-IFLA_BOND_PRIMARY = 11,
-IFLA_BOND_PRIMARY_RESELECT = 12,
-IFLA_BOND_FAIL_OVER_MAC = 13,
-IFLA_BOND_XMIT_HASH_POLICY = 14,
-IFLA_BOND_RESEND_IGMP = 15,
-IFLA_BOND_NUM_PEER_NOTIF = 16,
-IFLA_BOND_ALL_SLAVES_ACTIVE = 17,
-IFLA_BOND_MIN_LINKS = 18,
-IFLA_BOND_LP_INTERVAL = 19,
-IFLA_BOND_PACKETS_PER_SLAVE = 20,
-IFLA_BOND_AD_LACP_RATE = 21,
-IFLA_BOND_AD_SELECT = 22,
-IFLA_BOND_AD_INFO = 23,
-IFLA_BOND_AD_ACTOR_SYS_PRIO = 24,
-IFLA_BOND_AD_USER_PORT_KEY = 25,
-IFLA_BOND_AD_ACTOR_SYSTEM = 26,
-IFLA_BOND_TLB_DYNAMIC_LB = 27,
-IFLA_BOND_PEER_NOTIF_DELAY = 28,
-IFLA_BOND_AD_LACP_ACTIVE = 29,
-IFLA_BOND_MISSED_MAX = 30,
-IFLA_BOND_NS_IP6_TARGET = 31,
-__IFLA_BOND_MAX = 32,
-}
-pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC;
-pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR;
-pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS;
-pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC;
-pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_27 {
-IFLA_BOND_AD_INFO_UNSPEC = 0,
-IFLA_BOND_AD_INFO_AGGREGATOR = 1,
-IFLA_BOND_AD_INFO_NUM_PORTS = 2,
-IFLA_BOND_AD_INFO_ACTOR_KEY = 3,
-IFLA_BOND_AD_INFO_PARTNER_KEY = 4,
-IFLA_BOND_AD_INFO_PARTNER_MAC = 5,
-__IFLA_BOND_AD_INFO_MAX = 6,
-}
-pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC;
-pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE;
-pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS;
-pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT;
-pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR;
-pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID;
-pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID;
-pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO;
-pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_28 {
-IFLA_BOND_SLAVE_UNSPEC = 0,
-IFLA_BOND_SLAVE_STATE = 1,
-IFLA_BOND_SLAVE_MII_STATUS = 2,
-IFLA_BOND_SLAVE_LINK_FAILURE_COUNT = 3,
-IFLA_BOND_SLAVE_PERM_HWADDR = 4,
-IFLA_BOND_SLAVE_QUEUE_ID = 5,
-IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 6,
-IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 7,
-IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 8,
-IFLA_BOND_SLAVE_PRIO = 9,
-__IFLA_BOND_SLAVE_MAX = 10,
-}
-pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC;
-pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO;
-pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_29 {
-IFLA_VF_INFO_UNSPEC = 0,
-IFLA_VF_INFO = 1,
-__IFLA_VF_INFO_MAX = 2,
-}
-pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC;
-pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC;
-pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN;
-pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE;
-pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK;
-pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE;
-pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE;
-pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN;
-pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS;
-pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST;
-pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID;
-pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID;
-pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST;
-pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST;
-pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_30 {
-IFLA_VF_UNSPEC = 0,
-IFLA_VF_MAC = 1,
-IFLA_VF_VLAN = 2,
-IFLA_VF_TX_RATE = 3,
-IFLA_VF_SPOOFCHK = 4,
-IFLA_VF_LINK_STATE = 5,
-IFLA_VF_RATE = 6,
-IFLA_VF_RSS_QUERY_EN = 7,
-IFLA_VF_STATS = 8,
-IFLA_VF_TRUST = 9,
-IFLA_VF_IB_NODE_GUID = 10,
-IFLA_VF_IB_PORT_GUID = 11,
-IFLA_VF_VLAN_LIST = 12,
-IFLA_VF_BROADCAST = 13,
-__IFLA_VF_MAX = 14,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_mac {
-pub vf: __u32,
-pub mac: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_broadcast {
-pub broadcast: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-}
-pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC;
-pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO;
-pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_31 {
-IFLA_VF_VLAN_INFO_UNSPEC = 0,
-IFLA_VF_VLAN_INFO = 1,
-__IFLA_VF_VLAN_INFO_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan_info {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-pub vlan_proto: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_tx_rate {
-pub vf: __u32,
-pub rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rate {
-pub vf: __u32,
-pub min_tx_rate: __u32,
-pub max_tx_rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_spoofchk {
-pub vf: __u32,
-pub setting: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_guid {
-pub vf: __u32,
-pub guid: __u64,
-}
-pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO;
-pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE;
-pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE;
-pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_32 {
-IFLA_VF_LINK_STATE_AUTO = 0,
-IFLA_VF_LINK_STATE_ENABLE = 1,
-IFLA_VF_LINK_STATE_DISABLE = 2,
-__IFLA_VF_LINK_STATE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_link_state {
-pub vf: __u32,
-pub link_state: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rss_query_en {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS;
-pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS;
-pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES;
-pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES;
-pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST;
-pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST;
-pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD;
-pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED;
-pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED;
-pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_33 {
-IFLA_VF_STATS_RX_PACKETS = 0,
-IFLA_VF_STATS_TX_PACKETS = 1,
-IFLA_VF_STATS_RX_BYTES = 2,
-IFLA_VF_STATS_TX_BYTES = 3,
-IFLA_VF_STATS_BROADCAST = 4,
-IFLA_VF_STATS_MULTICAST = 5,
-IFLA_VF_STATS_PAD = 6,
-IFLA_VF_STATS_RX_DROPPED = 7,
-IFLA_VF_STATS_TX_DROPPED = 8,
-__IFLA_VF_STATS_MAX = 9,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_trust {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC;
-pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT;
-pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_34 {
-IFLA_VF_PORT_UNSPEC = 0,
-IFLA_VF_PORT = 1,
-__IFLA_VF_PORT_MAX = 2,
-}
-pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC;
-pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF;
-pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE;
-pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE;
-pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID;
-pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID;
-pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST;
-pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE;
-pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_35 {
-IFLA_PORT_UNSPEC = 0,
-IFLA_PORT_VF = 1,
-IFLA_PORT_PROFILE = 2,
-IFLA_PORT_VSI_TYPE = 3,
-IFLA_PORT_INSTANCE_UUID = 4,
-IFLA_PORT_HOST_UUID = 5,
-IFLA_PORT_REQUEST = 6,
-IFLA_PORT_RESPONSE = 7,
-__IFLA_PORT_MAX = 8,
-}
-pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE;
-pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR;
-pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE;
-pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_36 {
-PORT_REQUEST_PREASSOCIATE = 0,
-PORT_REQUEST_PREASSOCIATE_RR = 1,
-PORT_REQUEST_ASSOCIATE = 2,
-PORT_REQUEST_DISASSOCIATE = 3,
-}
-pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS;
-pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT;
-pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID;
-pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION;
-pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION;
-pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC;
-pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS;
-pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS;
-pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID;
-pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE;
-pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_37 {
-PORT_VDP_RESPONSE_SUCCESS = 0,
-PORT_VDP_RESPONSE_INVALID_FORMAT = 1,
-PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES = 2,
-PORT_VDP_RESPONSE_UNUSED_VTID = 3,
-PORT_VDP_RESPONSE_VTID_VIOLATION = 4,
-PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION = 5,
-PORT_VDP_RESPONSE_OUT_OF_SYNC = 6,
-PORT_PROFILE_RESPONSE_SUCCESS = 256,
-PORT_PROFILE_RESPONSE_INPROGRESS = 257,
-PORT_PROFILE_RESPONSE_INVALID = 258,
-PORT_PROFILE_RESPONSE_BADSTATE = 259,
-PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260,
-PORT_PROFILE_RESPONSE_ERROR = 261,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_port_vsi {
-pub vsi_mgr_id: __u8,
-pub vsi_type_id: [__u8; 3usize],
-pub vsi_type_version: __u8,
-pub pad: [__u8; 3usize],
-}
-pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC;
-pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY;
-pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE;
-pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST;
-pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_38 {
-IFLA_IPOIB_UNSPEC = 0,
-IFLA_IPOIB_PKEY = 1,
-IFLA_IPOIB_MODE = 2,
-IFLA_IPOIB_UMCAST = 3,
-__IFLA_IPOIB_MAX = 4,
-}
-pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM;
-pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_39 {
-IPOIB_MODE_DATAGRAM = 0,
-IPOIB_MODE_CONNECTED = 1,
-}
-pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR;
-pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP;
-pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_40 {
-HSR_PROTOCOL_HSR = 0,
-HSR_PROTOCOL_PRP = 1,
-HSR_PROTOCOL_MAX = 2,
-}
-pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC;
-pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1;
-pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2;
-pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC;
-pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR;
-pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR;
-pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION;
-pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL;
-pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_41 {
-IFLA_HSR_UNSPEC = 0,
-IFLA_HSR_SLAVE1 = 1,
-IFLA_HSR_SLAVE2 = 2,
-IFLA_HSR_MULTICAST_SPEC = 3,
-IFLA_HSR_SUPERVISION_ADDR = 4,
-IFLA_HSR_SEQ_NR = 5,
-IFLA_HSR_VERSION = 6,
-IFLA_HSR_PROTOCOL = 7,
-__IFLA_HSR_MAX = 8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct if_stats_msg {
-pub family: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub ifindex: __u32,
-pub filter_mask: __u32,
-}
-pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC;
-pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64;
-pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS;
-pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE;
-pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS;
-pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC;
-pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_42 {
-IFLA_STATS_UNSPEC = 0,
-IFLA_STATS_LINK_64 = 1,
-IFLA_STATS_LINK_XSTATS = 2,
-IFLA_STATS_LINK_XSTATS_SLAVE = 3,
-IFLA_STATS_LINK_OFFLOAD_XSTATS = 4,
-IFLA_STATS_AF_SPEC = 5,
-__IFLA_STATS_MAX = 6,
-}
-pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC;
-pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS;
-pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_43 {
-IFLA_STATS_GETSET_UNSPEC = 0,
-IFLA_STATS_GET_FILTERS = 1,
-IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2,
-__IFLA_STATS_GETSET_MAX = 3,
-}
-pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC;
-pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE;
-pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND;
-pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_44 {
-LINK_XSTATS_TYPE_UNSPEC = 0,
-LINK_XSTATS_TYPE_BRIDGE = 1,
-LINK_XSTATS_TYPE_BOND = 2,
-__LINK_XSTATS_TYPE_MAX = 3,
-}
-pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO;
-pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_45 {
-IFLA_OFFLOAD_XSTATS_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_CPU_HIT = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO = 2,
-IFLA_OFFLOAD_XSTATS_L3_STATS = 3,
-__IFLA_OFFLOAD_XSTATS_MAX = 4,
-}
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED;
-pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_46 {
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2,
-__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3,
-}
-pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE;
-pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV;
-pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB;
-pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW;
-pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_47 {
-XDP_ATTACHED_NONE = 0,
-XDP_ATTACHED_DRV = 1,
-XDP_ATTACHED_SKB = 2,
-XDP_ATTACHED_HW = 3,
-XDP_ATTACHED_MULTI = 4,
-}
-pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC;
-pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD;
-pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED;
-pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS;
-pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID;
-pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID;
-pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID;
-pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID;
-pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD;
-pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_48 {
-IFLA_XDP_UNSPEC = 0,
-IFLA_XDP_FD = 1,
-IFLA_XDP_ATTACHED = 2,
-IFLA_XDP_FLAGS = 3,
-IFLA_XDP_PROG_ID = 4,
-IFLA_XDP_DRV_PROG_ID = 5,
-IFLA_XDP_SKB_PROG_ID = 6,
-IFLA_XDP_HW_PROG_ID = 7,
-IFLA_XDP_EXPECTED_FD = 8,
-__IFLA_XDP_MAX = 9,
-}
-pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE;
-pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT;
-pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES;
-pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER;
-pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS;
-pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND;
-pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_49 {
-IFLA_EVENT_NONE = 0,
-IFLA_EVENT_REBOOT = 1,
-IFLA_EVENT_FEATURES = 2,
-IFLA_EVENT_BONDING_FAILOVER = 3,
-IFLA_EVENT_NOTIFY_PEERS = 4,
-IFLA_EVENT_IGMP_RESEND = 5,
-IFLA_EVENT_BONDING_OPTIONS = 6,
-}
-pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC;
-pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER;
-pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP;
-pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE;
-pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI;
-pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR;
-pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST;
-pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE;
-pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES;
-pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES;
-pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_50 {
-IFLA_TUN_UNSPEC = 0,
-IFLA_TUN_OWNER = 1,
-IFLA_TUN_GROUP = 2,
-IFLA_TUN_TYPE = 3,
-IFLA_TUN_PI = 4,
-IFLA_TUN_VNET_HDR = 5,
-IFLA_TUN_PERSIST = 6,
-IFLA_TUN_MULTI_QUEUE = 7,
-IFLA_TUN_NUM_QUEUES = 8,
-IFLA_TUN_NUM_DISABLED_QUEUES = 9,
-__IFLA_TUN_MAX = 10,
-}
-pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC;
-pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID;
-pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS;
-pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_51 {
-IFLA_RMNET_UNSPEC = 0,
-IFLA_RMNET_MUX_ID = 1,
-IFLA_RMNET_FLAGS = 2,
-__IFLA_RMNET_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_rmnet_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC;
-pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET;
-pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_52 {
-IFLA_MCTP_UNSPEC = 0,
-IFLA_MCTP_NET = 1,
-__IFLA_MCTP_MAX = 2,
-}
-pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC;
-pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER;
-pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_53 {
-IFLA_DSA_UNSPEC = 0,
-IFLA_DSA_MASTER = 1,
-__IFLA_DSA_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifaddrmsg {
-pub ifa_family: __u8,
-pub ifa_prefixlen: __u8,
-pub ifa_flags: __u8,
-pub ifa_scope: __u8,
-pub ifa_index: __u32,
-}
-pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC;
-pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS;
-pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL;
-pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL;
-pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST;
-pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST;
-pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO;
-pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST;
-pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS;
-pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY;
-pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID;
-pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO;
-pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_54 {
-IFA_UNSPEC = 0,
-IFA_ADDRESS = 1,
-IFA_LOCAL = 2,
-IFA_LABEL = 3,
-IFA_BROADCAST = 4,
-IFA_ANYCAST = 5,
-IFA_CACHEINFO = 6,
-IFA_MULTICAST = 7,
-IFA_FLAGS = 8,
-IFA_RT_PRIORITY = 9,
-IFA_TARGET_NETNSID = 10,
-IFA_PROTO = 11,
-__IFA_MAX = 12,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifa_cacheinfo {
-pub ifa_prefered: __u32,
-pub ifa_valid: __u32,
-pub cstamp: __u32,
-pub tstamp: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndmsg {
-pub ndm_family: __u8,
-pub ndm_pad1: __u8,
-pub ndm_pad2: __u16,
-pub ndm_ifindex: __s32,
-pub ndm_state: __u16,
-pub ndm_flags: __u8,
-pub ndm_type: __u8,
-}
-pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC;
-pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST;
-pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR;
-pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO;
-pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES;
-pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN;
-pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT;
-pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI;
-pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX;
-pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER;
-pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID;
-pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI;
-pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL;
-pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID;
-pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS;
-pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT;
-pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK;
-pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK;
-pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_55 {
-NDA_UNSPEC = 0,
-NDA_DST = 1,
-NDA_LLADDR = 2,
-NDA_CACHEINFO = 3,
-NDA_PROBES = 4,
-NDA_VLAN = 5,
-NDA_PORT = 6,
-NDA_VNI = 7,
-NDA_IFINDEX = 8,
-NDA_MASTER = 9,
-NDA_LINK_NETNSID = 10,
-NDA_SRC_VNI = 11,
-NDA_PROTOCOL = 12,
-NDA_NH_ID = 13,
-NDA_FDB_EXT_ATTRS = 14,
-NDA_FLAGS_EXT = 15,
-NDA_NDM_STATE_MASK = 16,
-NDA_NDM_FLAGS_MASK = 17,
-__NDA_MAX = 18,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nda_cacheinfo {
-pub ndm_confirmed: __u32,
-pub ndm_used: __u32,
-pub ndm_updated: __u32,
-pub ndm_refcnt: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_stats {
-pub ndts_allocs: __u64,
-pub ndts_destroys: __u64,
-pub ndts_hash_grows: __u64,
-pub ndts_res_failed: __u64,
-pub ndts_lookups: __u64,
-pub ndts_hits: __u64,
-pub ndts_rcv_probes_mcast: __u64,
-pub ndts_rcv_probes_ucast: __u64,
-pub ndts_periodic_gc_runs: __u64,
-pub ndts_forced_gc_runs: __u64,
-pub ndts_table_fulls: __u64,
-}
-pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC;
-pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX;
-pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT;
-pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME;
-pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME;
-pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME;
-pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME;
-pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME;
-pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN;
-pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES;
-pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES;
-pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES;
-pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY;
-pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY;
-pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN;
-pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME;
-pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES;
-pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES;
-pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD;
-pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS;
-pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_56 {
-NDTPA_UNSPEC = 0,
-NDTPA_IFINDEX = 1,
-NDTPA_REFCNT = 2,
-NDTPA_REACHABLE_TIME = 3,
-NDTPA_BASE_REACHABLE_TIME = 4,
-NDTPA_RETRANS_TIME = 5,
-NDTPA_GC_STALETIME = 6,
-NDTPA_DELAY_PROBE_TIME = 7,
-NDTPA_QUEUE_LEN = 8,
-NDTPA_APP_PROBES = 9,
-NDTPA_UCAST_PROBES = 10,
-NDTPA_MCAST_PROBES = 11,
-NDTPA_ANYCAST_DELAY = 12,
-NDTPA_PROXY_DELAY = 13,
-NDTPA_PROXY_QLEN = 14,
-NDTPA_LOCKTIME = 15,
-NDTPA_QUEUE_LENBYTES = 16,
-NDTPA_MCAST_REPROBES = 17,
-NDTPA_PAD = 18,
-NDTPA_INTERVAL_PROBE_TIME_MS = 19,
-__NDTPA_MAX = 20,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndtmsg {
-pub ndtm_family: __u8,
-pub ndtm_pad1: __u8,
-pub ndtm_pad2: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_config {
-pub ndtc_key_len: __u16,
-pub ndtc_entry_size: __u16,
-pub ndtc_entries: __u32,
-pub ndtc_last_flush: __u32,
-pub ndtc_last_rand: __u32,
-pub ndtc_hash_rnd: __u32,
-pub ndtc_hash_mask: __u32,
-pub ndtc_hash_chain_gc: __u32,
-pub ndtc_proxy_qlen: __u32,
-}
-pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC;
-pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME;
-pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1;
-pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2;
-pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3;
-pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG;
-pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS;
-pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS;
-pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL;
-pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD;
-pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_57 {
-NDTA_UNSPEC = 0,
-NDTA_NAME = 1,
-NDTA_THRESH1 = 2,
-NDTA_THRESH2 = 3,
-NDTA_THRESH3 = 4,
-NDTA_CONFIG = 5,
-NDTA_PARMS = 6,
-NDTA_STATS = 7,
-NDTA_GC_INTERVAL = 8,
-NDTA_PAD = 9,
-__NDTA_MAX = 10,
-}
-pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT;
-pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_58 {
-FDB_NOTIFY_BIT = 1,
-FDB_NOTIFY_INACTIVE_BIT = 2,
-}
-pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC;
-pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY;
-pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH;
-pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_59 {
-NFEA_UNSPEC = 0,
-NFEA_ACTIVITY_NOTIFY = 1,
-NFEA_DONT_REFRESH = 2,
-__NFEA_MAX = 3,
-}
-pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK;
-pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK;
-pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK;
-pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR;
-pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR;
-pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR;
-pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE;
-pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE;
-pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE;
-pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH;
-pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH;
-pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH;
-pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE;
-pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE;
-pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE;
-pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC;
-pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC;
-pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC;
-pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS;
-pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS;
-pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS;
-pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER;
-pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER;
-pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER;
-pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION;
-pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION;
-pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION;
-pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX;
-pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST;
-pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST;
-pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL;
-pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL;
-pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL;
-pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT;
-pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL;
-pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL;
-pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL;
-pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB;
-pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB;
-pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF;
-pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF;
-pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF;
-pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB;
-pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB;
-pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB;
-pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID;
-pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID;
-pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID;
-pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS;
-pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS;
-pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS;
-pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT;
-pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN;
-pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN;
-pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN;
-pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP;
-pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP;
-pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP;
-pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP;
-pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP;
-pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP;
-pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN;
-pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN;
-pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN;
-pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET;
-pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET;
-pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET;
-pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL;
-pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL;
-pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL;
-pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_60 {
-RTM_BASE = 16,
-RTM_DELLINK = 17,
-RTM_GETLINK = 18,
-RTM_SETLINK = 19,
-RTM_NEWADDR = 20,
-RTM_DELADDR = 21,
-RTM_GETADDR = 22,
-RTM_NEWROUTE = 24,
-RTM_DELROUTE = 25,
-RTM_GETROUTE = 26,
-RTM_NEWNEIGH = 28,
-RTM_DELNEIGH = 29,
-RTM_GETNEIGH = 30,
-RTM_NEWRULE = 32,
-RTM_DELRULE = 33,
-RTM_GETRULE = 34,
-RTM_NEWQDISC = 36,
-RTM_DELQDISC = 37,
-RTM_GETQDISC = 38,
-RTM_NEWTCLASS = 40,
-RTM_DELTCLASS = 41,
-RTM_GETTCLASS = 42,
-RTM_NEWTFILTER = 44,
-RTM_DELTFILTER = 45,
-RTM_GETTFILTER = 46,
-RTM_NEWACTION = 48,
-RTM_DELACTION = 49,
-RTM_GETACTION = 50,
-RTM_NEWPREFIX = 52,
-RTM_GETMULTICAST = 58,
-RTM_GETANYCAST = 62,
-RTM_NEWNEIGHTBL = 64,
-RTM_GETNEIGHTBL = 66,
-RTM_SETNEIGHTBL = 67,
-RTM_NEWNDUSEROPT = 68,
-RTM_NEWADDRLABEL = 72,
-RTM_DELADDRLABEL = 73,
-RTM_GETADDRLABEL = 74,
-RTM_GETDCB = 78,
-RTM_SETDCB = 79,
-RTM_NEWNETCONF = 80,
-RTM_DELNETCONF = 81,
-RTM_GETNETCONF = 82,
-RTM_NEWMDB = 84,
-RTM_DELMDB = 85,
-RTM_GETMDB = 86,
-RTM_NEWNSID = 88,
-RTM_DELNSID = 89,
-RTM_GETNSID = 90,
-RTM_NEWSTATS = 92,
-RTM_GETSTATS = 94,
-RTM_SETSTATS = 95,
-RTM_NEWCACHEREPORT = 96,
-RTM_NEWCHAIN = 100,
-RTM_DELCHAIN = 101,
-RTM_GETCHAIN = 102,
-RTM_NEWNEXTHOP = 104,
-RTM_DELNEXTHOP = 105,
-RTM_GETNEXTHOP = 106,
-RTM_NEWLINKPROP = 108,
-RTM_DELLINKPROP = 109,
-RTM_GETLINKPROP = 110,
-RTM_NEWVLAN = 112,
-RTM_DELVLAN = 113,
-RTM_GETVLAN = 114,
-RTM_NEWNEXTHOPBUCKET = 116,
-RTM_DELNEXTHOPBUCKET = 117,
-RTM_GETNEXTHOPBUCKET = 118,
-RTM_NEWTUNNEL = 120,
-RTM_DELTUNNEL = 121,
-RTM_GETTUNNEL = 122,
-__RTM_MAX = 123,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtattr {
-pub rta_len: crate::ctypes::c_ushort,
-pub rta_type: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtmsg {
-pub rtm_family: crate::ctypes::c_uchar,
-pub rtm_dst_len: crate::ctypes::c_uchar,
-pub rtm_src_len: crate::ctypes::c_uchar,
-pub rtm_tos: crate::ctypes::c_uchar,
-pub rtm_table: crate::ctypes::c_uchar,
-pub rtm_protocol: crate::ctypes::c_uchar,
-pub rtm_scope: crate::ctypes::c_uchar,
-pub rtm_type: crate::ctypes::c_uchar,
-pub rtm_flags: crate::ctypes::c_uint,
-}
-pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC;
-pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST;
-pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL;
-pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST;
-pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST;
-pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST;
-pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE;
-pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE;
-pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT;
-pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW;
-pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT;
-pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE;
-pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_61 {
-RTN_UNSPEC = 0,
-RTN_UNICAST = 1,
-RTN_LOCAL = 2,
-RTN_BROADCAST = 3,
-RTN_ANYCAST = 4,
-RTN_MULTICAST = 5,
-RTN_BLACKHOLE = 6,
-RTN_UNREACHABLE = 7,
-RTN_PROHIBIT = 8,
-RTN_THROW = 9,
-RTN_NAT = 10,
-RTN_XRESOLVE = 11,
-__RTN_MAX = 12,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_scope_t {
-RT_SCOPE_UNIVERSE = 0,
-RT_SCOPE_SITE = 200,
-RT_SCOPE_LINK = 253,
-RT_SCOPE_HOST = 254,
-RT_SCOPE_NOWHERE = 255,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_class_t {
-RT_TABLE_UNSPEC = 0,
-RT_TABLE_COMPAT = 252,
-RT_TABLE_DEFAULT = 253,
-RT_TABLE_MAIN = 254,
-RT_TABLE_LOCAL = 255,
-RT_TABLE_MAX = 4294967295,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtattr_type_t {
-RTA_UNSPEC = 0,
-RTA_DST = 1,
-RTA_SRC = 2,
-RTA_IIF = 3,
-RTA_OIF = 4,
-RTA_GATEWAY = 5,
-RTA_PRIORITY = 6,
-RTA_PREFSRC = 7,
-RTA_METRICS = 8,
-RTA_MULTIPATH = 9,
-RTA_PROTOINFO = 10,
-RTA_FLOW = 11,
-RTA_CACHEINFO = 12,
-RTA_SESSION = 13,
-RTA_MP_ALGO = 14,
-RTA_TABLE = 15,
-RTA_MARK = 16,
-RTA_MFC_STATS = 17,
-RTA_VIA = 18,
-RTA_NEWDST = 19,
-RTA_PREF = 20,
-RTA_ENCAP_TYPE = 21,
-RTA_ENCAP = 22,
-RTA_EXPIRES = 23,
-RTA_PAD = 24,
-RTA_UID = 25,
-RTA_TTL_PROPAGATE = 26,
-RTA_IP_PROTO = 27,
-RTA_SPORT = 28,
-RTA_DPORT = 29,
-RTA_NH_ID = 30,
-__RTA_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnexthop {
-pub rtnh_len: crate::ctypes::c_ushort,
-pub rtnh_flags: crate::ctypes::c_uchar,
-pub rtnh_hops: crate::ctypes::c_uchar,
-pub rtnh_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rtvia {
-pub rtvia_family: __kernel_sa_family_t,
-pub rtvia_addr: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_cacheinfo {
-pub rta_clntref: __u32,
-pub rta_lastuse: __u32,
-pub rta_expires: __s32,
-pub rta_error: __u32,
-pub rta_used: __u32,
-pub rta_id: __u32,
-pub rta_ts: __u32,
-pub rta_tsage: __u32,
-}
-pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC;
-pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK;
-pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU;
-pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW;
-pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT;
-pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR;
-pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH;
-pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND;
-pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS;
-pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING;
-pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT;
-pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND;
-pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES;
-pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN;
-pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND;
-pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK;
-pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO;
-pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE;
-pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_62 {
-RTAX_UNSPEC = 0,
-RTAX_LOCK = 1,
-RTAX_MTU = 2,
-RTAX_WINDOW = 3,
-RTAX_RTT = 4,
-RTAX_RTTVAR = 5,
-RTAX_SSTHRESH = 6,
-RTAX_CWND = 7,
-RTAX_ADVMSS = 8,
-RTAX_REORDERING = 9,
-RTAX_HOPLIMIT = 10,
-RTAX_INITCWND = 11,
-RTAX_FEATURES = 12,
-RTAX_RTO_MIN = 13,
-RTAX_INITRWND = 14,
-RTAX_QUICKACK = 15,
-RTAX_CC_ALGO = 16,
-RTAX_FASTOPEN_NO_COOKIE = 17,
-__RTAX_MAX = 18,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rta_session {
-pub proto: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub u: rta_session__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union rta_session__bindgen_ty_1 {
-pub ports: rta_session__bindgen_ty_1__bindgen_ty_1,
-pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2,
-pub spi: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_1 {
-pub sport: __u16,
-pub dport: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_2 {
-pub type_: __u8,
-pub code: __u8,
-pub ident: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_mfc_stats {
-pub mfcs_packets: __u64,
-pub mfcs_bytes: __u64,
-pub mfcs_wrong_if: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtgenmsg {
-pub rtgen_family: crate::ctypes::c_uchar,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifinfomsg {
-pub ifi_family: crate::ctypes::c_uchar,
-pub __ifi_pad: crate::ctypes::c_uchar,
-pub ifi_type: crate::ctypes::c_ushort,
-pub ifi_index: crate::ctypes::c_int,
-pub ifi_flags: crate::ctypes::c_uint,
-pub ifi_change: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefixmsg {
-pub prefix_family: crate::ctypes::c_uchar,
-pub prefix_pad1: crate::ctypes::c_uchar,
-pub prefix_pad2: crate::ctypes::c_ushort,
-pub prefix_ifindex: crate::ctypes::c_int,
-pub prefix_type: crate::ctypes::c_uchar,
-pub prefix_len: crate::ctypes::c_uchar,
-pub prefix_flags: crate::ctypes::c_uchar,
-pub prefix_pad3: crate::ctypes::c_uchar,
-}
-pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC;
-pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS;
-pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO;
-pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_63 {
-PREFIX_UNSPEC = 0,
-PREFIX_ADDRESS = 1,
-PREFIX_CACHEINFO = 2,
-__PREFIX_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefix_cacheinfo {
-pub preferred_time: __u32,
-pub valid_time: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcmsg {
-pub tcm_family: crate::ctypes::c_uchar,
-pub tcm__pad1: crate::ctypes::c_uchar,
-pub tcm__pad2: crate::ctypes::c_ushort,
-pub tcm_ifindex: crate::ctypes::c_int,
-pub tcm_handle: __u32,
-pub tcm_parent: __u32,
-pub tcm_info: __u32,
-}
-pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC;
-pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND;
-pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS;
-pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS;
-pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS;
-pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE;
-pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT;
-pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2;
-pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB;
-pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD;
-pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE;
-pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN;
-pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD;
-pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK;
-pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK;
-pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS;
-pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_64 {
-TCA_UNSPEC = 0,
-TCA_KIND = 1,
-TCA_OPTIONS = 2,
-TCA_STATS = 3,
-TCA_XSTATS = 4,
-TCA_RATE = 5,
-TCA_FCNT = 6,
-TCA_STATS2 = 7,
-TCA_STAB = 8,
-TCA_PAD = 9,
-TCA_DUMP_INVISIBLE = 10,
-TCA_CHAIN = 11,
-TCA_HW_OFFLOAD = 12,
-TCA_INGRESS_BLOCK = 13,
-TCA_EGRESS_BLOCK = 14,
-TCA_DUMP_FLAGS = 15,
-__TCA_MAX = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nduseroptmsg {
-pub nduseropt_family: crate::ctypes::c_uchar,
-pub nduseropt_pad1: crate::ctypes::c_uchar,
-pub nduseropt_opts_len: crate::ctypes::c_ushort,
-pub nduseropt_ifindex: crate::ctypes::c_int,
-pub nduseropt_icmp_type: __u8,
-pub nduseropt_icmp_code: __u8,
-pub nduseropt_pad2: crate::ctypes::c_ushort,
-pub nduseropt_pad3: crate::ctypes::c_uint,
-}
-pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC;
-pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR;
-pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_65 {
-NDUSEROPT_UNSPEC = 0,
-NDUSEROPT_SRCADDR = 1,
-__NDUSEROPT_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtnetlink_groups {
-RTNLGRP_NONE = 0,
-RTNLGRP_LINK = 1,
-RTNLGRP_NOTIFY = 2,
-RTNLGRP_NEIGH = 3,
-RTNLGRP_TC = 4,
-RTNLGRP_IPV4_IFADDR = 5,
-RTNLGRP_IPV4_MROUTE = 6,
-RTNLGRP_IPV4_ROUTE = 7,
-RTNLGRP_IPV4_RULE = 8,
-RTNLGRP_IPV6_IFADDR = 9,
-RTNLGRP_IPV6_MROUTE = 10,
-RTNLGRP_IPV6_ROUTE = 11,
-RTNLGRP_IPV6_IFINFO = 12,
-RTNLGRP_DECnet_IFADDR = 13,
-RTNLGRP_NOP2 = 14,
-RTNLGRP_DECnet_ROUTE = 15,
-RTNLGRP_DECnet_RULE = 16,
-RTNLGRP_NOP4 = 17,
-RTNLGRP_IPV6_PREFIX = 18,
-RTNLGRP_IPV6_RULE = 19,
-RTNLGRP_ND_USEROPT = 20,
-RTNLGRP_PHONET_IFADDR = 21,
-RTNLGRP_PHONET_ROUTE = 22,
-RTNLGRP_DCB = 23,
-RTNLGRP_IPV4_NETCONF = 24,
-RTNLGRP_IPV6_NETCONF = 25,
-RTNLGRP_MDB = 26,
-RTNLGRP_MPLS_ROUTE = 27,
-RTNLGRP_NSID = 28,
-RTNLGRP_MPLS_NETCONF = 29,
-RTNLGRP_IPV4_MROUTE_R = 30,
-RTNLGRP_IPV6_MROUTE_R = 31,
-RTNLGRP_NEXTHOP = 32,
-RTNLGRP_BRVLAN = 33,
-RTNLGRP_MCTP_IFADDR = 34,
-RTNLGRP_TUNNEL = 35,
-RTNLGRP_STATS = 36,
-__RTNLGRP_MAX = 37,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcamsg {
-pub tca_family: crate::ctypes::c_uchar,
-pub tca__pad1: crate::ctypes::c_uchar,
-pub tca__pad2: crate::ctypes::c_ushort,
-}
-pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC;
-pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB;
-pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS;
-pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT;
-pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA;
-pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_66 {
-TCA_ROOT_UNSPEC = 0,
-TCA_ROOT_TAB = 1,
-TCA_ROOT_FLAGS = 2,
-TCA_ROOT_COUNT = 3,
-TCA_ROOT_TIME_DELTA = 4,
-__TCA_ROOT_MAX = 5,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/sparc64/errno.rs b/vendor/linux-raw-sys-0.3.2/src/sparc64/errno.rs
deleted file mode 100644
index 225b914df..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/sparc64/errno.rs
+++ /dev/null
@@ -1,137 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const EPERM: u32 = 1;
-pub const ENOENT: u32 = 2;
-pub const ESRCH: u32 = 3;
-pub const EINTR: u32 = 4;
-pub const EIO: u32 = 5;
-pub const ENXIO: u32 = 6;
-pub const E2BIG: u32 = 7;
-pub const ENOEXEC: u32 = 8;
-pub const EBADF: u32 = 9;
-pub const ECHILD: u32 = 10;
-pub const EAGAIN: u32 = 11;
-pub const ENOMEM: u32 = 12;
-pub const EACCES: u32 = 13;
-pub const EFAULT: u32 = 14;
-pub const ENOTBLK: u32 = 15;
-pub const EBUSY: u32 = 16;
-pub const EEXIST: u32 = 17;
-pub const EXDEV: u32 = 18;
-pub const ENODEV: u32 = 19;
-pub const ENOTDIR: u32 = 20;
-pub const EISDIR: u32 = 21;
-pub const EINVAL: u32 = 22;
-pub const ENFILE: u32 = 23;
-pub const EMFILE: u32 = 24;
-pub const ENOTTY: u32 = 25;
-pub const ETXTBSY: u32 = 26;
-pub const EFBIG: u32 = 27;
-pub const ENOSPC: u32 = 28;
-pub const ESPIPE: u32 = 29;
-pub const EROFS: u32 = 30;
-pub const EMLINK: u32 = 31;
-pub const EPIPE: u32 = 32;
-pub const EDOM: u32 = 33;
-pub const ERANGE: u32 = 34;
-pub const EWOULDBLOCK: u32 = 11;
-pub const EINPROGRESS: u32 = 36;
-pub const EALREADY: u32 = 37;
-pub const ENOTSOCK: u32 = 38;
-pub const EDESTADDRREQ: u32 = 39;
-pub const EMSGSIZE: u32 = 40;
-pub const EPROTOTYPE: u32 = 41;
-pub const ENOPROTOOPT: u32 = 42;
-pub const EPROTONOSUPPORT: u32 = 43;
-pub const ESOCKTNOSUPPORT: u32 = 44;
-pub const EOPNOTSUPP: u32 = 45;
-pub const EPFNOSUPPORT: u32 = 46;
-pub const EAFNOSUPPORT: u32 = 47;
-pub const EADDRINUSE: u32 = 48;
-pub const EADDRNOTAVAIL: u32 = 49;
-pub const ENETDOWN: u32 = 50;
-pub const ENETUNREACH: u32 = 51;
-pub const ENETRESET: u32 = 52;
-pub const ECONNABORTED: u32 = 53;
-pub const ECONNRESET: u32 = 54;
-pub const ENOBUFS: u32 = 55;
-pub const EISCONN: u32 = 56;
-pub const ENOTCONN: u32 = 57;
-pub const ESHUTDOWN: u32 = 58;
-pub const ETOOMANYREFS: u32 = 59;
-pub const ETIMEDOUT: u32 = 60;
-pub const ECONNREFUSED: u32 = 61;
-pub const ELOOP: u32 = 62;
-pub const ENAMETOOLONG: u32 = 63;
-pub const EHOSTDOWN: u32 = 64;
-pub const EHOSTUNREACH: u32 = 65;
-pub const ENOTEMPTY: u32 = 66;
-pub const EPROCLIM: u32 = 67;
-pub const EUSERS: u32 = 68;
-pub const EDQUOT: u32 = 69;
-pub const ESTALE: u32 = 70;
-pub const EREMOTE: u32 = 71;
-pub const ENOSTR: u32 = 72;
-pub const ETIME: u32 = 73;
-pub const ENOSR: u32 = 74;
-pub const ENOMSG: u32 = 75;
-pub const EBADMSG: u32 = 76;
-pub const EIDRM: u32 = 77;
-pub const EDEADLK: u32 = 78;
-pub const ENOLCK: u32 = 79;
-pub const ENONET: u32 = 80;
-pub const ERREMOTE: u32 = 81;
-pub const ENOLINK: u32 = 82;
-pub const EADV: u32 = 83;
-pub const ESRMNT: u32 = 84;
-pub const ECOMM: u32 = 85;
-pub const EPROTO: u32 = 86;
-pub const EMULTIHOP: u32 = 87;
-pub const EDOTDOT: u32 = 88;
-pub const EREMCHG: u32 = 89;
-pub const ENOSYS: u32 = 90;
-pub const ESTRPIPE: u32 = 91;
-pub const EOVERFLOW: u32 = 92;
-pub const EBADFD: u32 = 93;
-pub const ECHRNG: u32 = 94;
-pub const EL2NSYNC: u32 = 95;
-pub const EL3HLT: u32 = 96;
-pub const EL3RST: u32 = 97;
-pub const ELNRNG: u32 = 98;
-pub const EUNATCH: u32 = 99;
-pub const ENOCSI: u32 = 100;
-pub const EL2HLT: u32 = 101;
-pub const EBADE: u32 = 102;
-pub const EBADR: u32 = 103;
-pub const EXFULL: u32 = 104;
-pub const ENOANO: u32 = 105;
-pub const EBADRQC: u32 = 106;
-pub const EBADSLT: u32 = 107;
-pub const EDEADLOCK: u32 = 108;
-pub const EBFONT: u32 = 109;
-pub const ELIBEXEC: u32 = 110;
-pub const ENODATA: u32 = 111;
-pub const ELIBBAD: u32 = 112;
-pub const ENOPKG: u32 = 113;
-pub const ELIBACC: u32 = 114;
-pub const ENOTUNIQ: u32 = 115;
-pub const ERESTART: u32 = 116;
-pub const EUCLEAN: u32 = 117;
-pub const ENOTNAM: u32 = 118;
-pub const ENAVAIL: u32 = 119;
-pub const EISNAM: u32 = 120;
-pub const EREMOTEIO: u32 = 121;
-pub const EILSEQ: u32 = 122;
-pub const ELIBMAX: u32 = 123;
-pub const ELIBSCN: u32 = 124;
-pub const ENOMEDIUM: u32 = 125;
-pub const EMEDIUMTYPE: u32 = 126;
-pub const ECANCELED: u32 = 127;
-pub const ENOKEY: u32 = 128;
-pub const EKEYEXPIRED: u32 = 129;
-pub const EKEYREVOKED: u32 = 130;
-pub const EKEYREJECTED: u32 = 131;
-pub const EOWNERDEAD: u32 = 132;
-pub const ENOTRECOVERABLE: u32 = 133;
-pub const ERFKILL: u32 = 134;
-pub const EHWPOISON: u32 = 135;
diff --git a/vendor/linux-raw-sys-0.3.2/src/sparc64/general.rs b/vendor/linux-raw-sys-0.3.2/src/sparc64/general.rs
deleted file mode 100644
index 6a077e484..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/sparc64/general.rs
+++ /dev/null
@@ -1,5604 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
-pub struct __BindgenBitfieldUnit<Storage> {
-storage: Storage,
-}
-impl<Storage> __BindgenBitfieldUnit<Storage> {
-#[inline]
-pub const fn new(storage: Storage) -> Self {
-Self { storage }
-}
-}
-impl<Storage> __BindgenBitfieldUnit<Storage>
-where
-Storage: AsRef<[u8]> + AsMut<[u8]>,
-{
-#[inline]
-pub fn get_bit(&self, index: usize) -> bool {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = self.storage.as_ref()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-byte & mask == mask
-}
-#[inline]
-pub fn set_bit(&mut self, index: usize, val: bool) {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = &mut self.storage.as_mut()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-if val {
-*byte |= mask;
-} else {
-*byte &= !mask;
-}
-}
-#[inline]
-pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-let mut val = 0;
-for i in 0..(bit_width as usize) {
-if self.get_bit(i + bit_offset) {
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-val |= 1 << index;
-}
-}
-val
-}
-#[inline]
-pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-for i in 0..(bit_width as usize) {
-let mask = 1 << i;
-let val_bit_is_set = val & mask == mask;
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-self.set_bit(index + bit_offset, val_bit_is_set);
-}
-}
-}
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-#[repr(C)]
-pub struct __BindgenUnionField<T>(::core::marker::PhantomData<T>);
-impl<T> __BindgenUnionField<T> {
-#[inline]
-pub const fn new() -> Self {
-__BindgenUnionField(::core::marker::PhantomData)
-}
-#[inline]
-pub unsafe fn as_ref(&self) -> &T {
-::core::mem::transmute(self)
-}
-#[inline]
-pub unsafe fn as_mut(&mut self) -> &mut T {
-::core::mem::transmute(self)
-}
-}
-impl<T> ::core::default::Default for __BindgenUnionField<T> {
-#[inline]
-fn default() -> Self {
-Self::new()
-}
-}
-impl<T> ::core::clone::Clone for __BindgenUnionField<T> {
-#[inline]
-fn clone(&self) -> Self {
-Self::new()
-}
-}
-impl<T> ::core::marker::Copy for __BindgenUnionField<T> {}
-impl<T> ::core::fmt::Debug for __BindgenUnionField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__BindgenUnionField")
-}
-}
-impl<T> ::core::hash::Hash for __BindgenUnionField<T> {
-fn hash<H: ::core::hash::Hasher>(&self, _state: &mut H) {}
-}
-impl<T> ::core::cmp::PartialEq for __BindgenUnionField<T> {
-fn eq(&self, _other: &__BindgenUnionField<T>) -> bool {
-true
-}
-}
-impl<T> ::core::cmp::Eq for __BindgenUnionField<T> {}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const AT_SYSINFO_EHDR: u32 = 33;
-pub const AT_ADI_BLKSZ: u32 = 48;
-pub const AT_ADI_NBITS: u32 = 49;
-pub const AT_ADI_UEONADI: u32 = 50;
-pub const AT_VECTOR_SIZE_ARCH: u32 = 4;
-pub const AT_NULL: u32 = 0;
-pub const AT_IGNORE: u32 = 1;
-pub const AT_EXECFD: u32 = 2;
-pub const AT_PHDR: u32 = 3;
-pub const AT_PHENT: u32 = 4;
-pub const AT_PHNUM: u32 = 5;
-pub const AT_PAGESZ: u32 = 6;
-pub const AT_BASE: u32 = 7;
-pub const AT_FLAGS: u32 = 8;
-pub const AT_ENTRY: u32 = 9;
-pub const AT_NOTELF: u32 = 10;
-pub const AT_UID: u32 = 11;
-pub const AT_EUID: u32 = 12;
-pub const AT_GID: u32 = 13;
-pub const AT_EGID: u32 = 14;
-pub const AT_PLATFORM: u32 = 15;
-pub const AT_HWCAP: u32 = 16;
-pub const AT_CLKTCK: u32 = 17;
-pub const AT_SECURE: u32 = 23;
-pub const AT_BASE_PLATFORM: u32 = 24;
-pub const AT_RANDOM: u32 = 25;
-pub const AT_HWCAP2: u32 = 26;
-pub const AT_EXECFN: u32 = 31;
-pub const AT_MINSIGSTKSZ: u32 = 51;
-pub const __BITS_PER_LONG: u32 = 64;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S_1: u32 = 1;
-pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798;
-pub const _LINUX_CAPABILITY_U32S_2: u32 = 2;
-pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514;
-pub const _LINUX_CAPABILITY_U32S_3: u32 = 2;
-pub const VFS_CAP_REVISION_MASK: u32 = 4278190080;
-pub const VFS_CAP_REVISION_SHIFT: u32 = 24;
-pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081;
-pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1;
-pub const VFS_CAP_REVISION_1: u32 = 16777216;
-pub const VFS_CAP_U32_1: u32 = 1;
-pub const VFS_CAP_REVISION_2: u32 = 33554432;
-pub const VFS_CAP_U32_2: u32 = 2;
-pub const VFS_CAP_REVISION_3: u32 = 50331648;
-pub const VFS_CAP_U32_3: u32 = 2;
-pub const VFS_CAP_U32: u32 = 2;
-pub const VFS_CAP_REVISION: u32 = 50331648;
-pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S: u32 = 1;
-pub const CAP_CHOWN: u32 = 0;
-pub const CAP_DAC_OVERRIDE: u32 = 1;
-pub const CAP_DAC_READ_SEARCH: u32 = 2;
-pub const CAP_FOWNER: u32 = 3;
-pub const CAP_FSETID: u32 = 4;
-pub const CAP_KILL: u32 = 5;
-pub const CAP_SETGID: u32 = 6;
-pub const CAP_SETUID: u32 = 7;
-pub const CAP_SETPCAP: u32 = 8;
-pub const CAP_LINUX_IMMUTABLE: u32 = 9;
-pub const CAP_NET_BIND_SERVICE: u32 = 10;
-pub const CAP_NET_BROADCAST: u32 = 11;
-pub const CAP_NET_ADMIN: u32 = 12;
-pub const CAP_NET_RAW: u32 = 13;
-pub const CAP_IPC_LOCK: u32 = 14;
-pub const CAP_IPC_OWNER: u32 = 15;
-pub const CAP_SYS_MODULE: u32 = 16;
-pub const CAP_SYS_RAWIO: u32 = 17;
-pub const CAP_SYS_CHROOT: u32 = 18;
-pub const CAP_SYS_PTRACE: u32 = 19;
-pub const CAP_SYS_PACCT: u32 = 20;
-pub const CAP_SYS_ADMIN: u32 = 21;
-pub const CAP_SYS_BOOT: u32 = 22;
-pub const CAP_SYS_NICE: u32 = 23;
-pub const CAP_SYS_RESOURCE: u32 = 24;
-pub const CAP_SYS_TIME: u32 = 25;
-pub const CAP_SYS_TTY_CONFIG: u32 = 26;
-pub const CAP_MKNOD: u32 = 27;
-pub const CAP_LEASE: u32 = 28;
-pub const CAP_AUDIT_WRITE: u32 = 29;
-pub const CAP_AUDIT_CONTROL: u32 = 30;
-pub const CAP_SETFCAP: u32 = 31;
-pub const CAP_MAC_OVERRIDE: u32 = 32;
-pub const CAP_MAC_ADMIN: u32 = 33;
-pub const CAP_SYSLOG: u32 = 34;
-pub const CAP_WAKE_ALARM: u32 = 35;
-pub const CAP_BLOCK_SUSPEND: u32 = 36;
-pub const CAP_AUDIT_READ: u32 = 37;
-pub const CAP_PERFMON: u32 = 38;
-pub const CAP_BPF: u32 = 39;
-pub const CAP_CHECKPOINT_RESTORE: u32 = 40;
-pub const CAP_LAST_CAP: u32 = 40;
-pub const O_APPEND: u32 = 8;
-pub const FASYNC: u32 = 64;
-pub const O_CREAT: u32 = 512;
-pub const O_TRUNC: u32 = 1024;
-pub const O_EXCL: u32 = 2048;
-pub const O_DSYNC: u32 = 8192;
-pub const O_NONBLOCK: u32 = 16384;
-pub const O_NDELAY: u32 = 4;
-pub const O_NOCTTY: u32 = 32768;
-pub const O_LARGEFILE: u32 = 262144;
-pub const O_DIRECT: u32 = 1048576;
-pub const O_NOATIME: u32 = 2097152;
-pub const O_CLOEXEC: u32 = 4194304;
-pub const __O_SYNC: u32 = 8388608;
-pub const O_SYNC: u32 = 8396800;
-pub const O_PATH: u32 = 16777216;
-pub const __O_TMPFILE: u32 = 33554432;
-pub const F_GETOWN: u32 = 5;
-pub const F_SETOWN: u32 = 6;
-pub const F_GETLK: u32 = 7;
-pub const F_SETLK: u32 = 8;
-pub const F_SETLKW: u32 = 9;
-pub const F_RDLCK: u32 = 1;
-pub const F_WRLCK: u32 = 2;
-pub const F_UNLCK: u32 = 3;
-pub const O_ACCMODE: u32 = 3;
-pub const O_RDONLY: u32 = 0;
-pub const O_WRONLY: u32 = 1;
-pub const O_RDWR: u32 = 2;
-pub const O_DIRECTORY: u32 = 65536;
-pub const O_NOFOLLOW: u32 = 131072;
-pub const O_TMPFILE: u32 = 33619968;
-pub const O_TMPFILE_MASK: u32 = 33620480;
-pub const F_DUPFD: u32 = 0;
-pub const F_GETFD: u32 = 1;
-pub const F_SETFD: u32 = 2;
-pub const F_GETFL: u32 = 3;
-pub const F_SETFL: u32 = 4;
-pub const F_SETSIG: u32 = 10;
-pub const F_GETSIG: u32 = 11;
-pub const F_SETOWN_EX: u32 = 15;
-pub const F_GETOWN_EX: u32 = 16;
-pub const F_GETOWNER_UIDS: u32 = 17;
-pub const F_OFD_GETLK: u32 = 36;
-pub const F_OFD_SETLK: u32 = 37;
-pub const F_OFD_SETLKW: u32 = 38;
-pub const F_OWNER_TID: u32 = 0;
-pub const F_OWNER_PID: u32 = 1;
-pub const F_OWNER_PGRP: u32 = 2;
-pub const FD_CLOEXEC: u32 = 1;
-pub const F_EXLCK: u32 = 4;
-pub const F_SHLCK: u32 = 8;
-pub const LOCK_SH: u32 = 1;
-pub const LOCK_EX: u32 = 2;
-pub const LOCK_NB: u32 = 4;
-pub const LOCK_UN: u32 = 8;
-pub const LOCK_MAND: u32 = 32;
-pub const LOCK_READ: u32 = 64;
-pub const LOCK_WRITE: u32 = 128;
-pub const LOCK_RW: u32 = 192;
-pub const F_LINUX_SPECIFIC_BASE: u32 = 1024;
-pub const RESOLVE_NO_XDEV: u32 = 1;
-pub const RESOLVE_NO_MAGICLINKS: u32 = 2;
-pub const RESOLVE_NO_SYMLINKS: u32 = 4;
-pub const RESOLVE_BENEATH: u32 = 8;
-pub const RESOLVE_IN_ROOT: u32 = 16;
-pub const RESOLVE_CACHED: u32 = 32;
-pub const F_SETLEASE: u32 = 1024;
-pub const F_GETLEASE: u32 = 1025;
-pub const F_CANCELLK: u32 = 1029;
-pub const F_DUPFD_CLOEXEC: u32 = 1030;
-pub const F_NOTIFY: u32 = 1026;
-pub const F_SETPIPE_SZ: u32 = 1031;
-pub const F_GETPIPE_SZ: u32 = 1032;
-pub const F_ADD_SEALS: u32 = 1033;
-pub const F_GET_SEALS: u32 = 1034;
-pub const F_SEAL_SEAL: u32 = 1;
-pub const F_SEAL_SHRINK: u32 = 2;
-pub const F_SEAL_GROW: u32 = 4;
-pub const F_SEAL_WRITE: u32 = 8;
-pub const F_SEAL_FUTURE_WRITE: u32 = 16;
-pub const F_GET_RW_HINT: u32 = 1035;
-pub const F_SET_RW_HINT: u32 = 1036;
-pub const F_GET_FILE_RW_HINT: u32 = 1037;
-pub const F_SET_FILE_RW_HINT: u32 = 1038;
-pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const RWH_WRITE_LIFE_NONE: u32 = 1;
-pub const RWH_WRITE_LIFE_SHORT: u32 = 2;
-pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3;
-pub const RWH_WRITE_LIFE_LONG: u32 = 4;
-pub const RWH_WRITE_LIFE_EXTREME: u32 = 5;
-pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const DN_ACCESS: u32 = 1;
-pub const DN_MODIFY: u32 = 2;
-pub const DN_CREATE: u32 = 4;
-pub const DN_DELETE: u32 = 8;
-pub const DN_RENAME: u32 = 16;
-pub const DN_ATTRIB: u32 = 32;
-pub const DN_MULTISHOT: u32 = 2147483648;
-pub const AT_FDCWD: i32 = -100;
-pub const AT_SYMLINK_NOFOLLOW: u32 = 256;
-pub const AT_EACCESS: u32 = 512;
-pub const AT_REMOVEDIR: u32 = 512;
-pub const AT_SYMLINK_FOLLOW: u32 = 1024;
-pub const AT_NO_AUTOMOUNT: u32 = 2048;
-pub const AT_EMPTY_PATH: u32 = 4096;
-pub const AT_STATX_SYNC_TYPE: u32 = 24576;
-pub const AT_STATX_SYNC_AS_STAT: u32 = 0;
-pub const AT_STATX_FORCE_SYNC: u32 = 8192;
-pub const AT_STATX_DONT_SYNC: u32 = 16384;
-pub const AT_RECURSIVE: u32 = 32768;
-pub const EPOLL_CLOEXEC: u32 = 4194304;
-pub const EPOLL_CTL_ADD: u32 = 1;
-pub const EPOLL_CTL_DEL: u32 = 2;
-pub const EPOLL_CTL_MOD: u32 = 3;
-pub const POSIX_FADV_NORMAL: u32 = 0;
-pub const POSIX_FADV_RANDOM: u32 = 1;
-pub const POSIX_FADV_SEQUENTIAL: u32 = 2;
-pub const POSIX_FADV_WILLNEED: u32 = 3;
-pub const POSIX_FADV_DONTNEED: u32 = 4;
-pub const POSIX_FADV_NOREUSE: u32 = 5;
-pub const FALLOC_FL_KEEP_SIZE: u32 = 1;
-pub const FALLOC_FL_PUNCH_HOLE: u32 = 2;
-pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4;
-pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8;
-pub const FALLOC_FL_ZERO_RANGE: u32 = 16;
-pub const FALLOC_FL_INSERT_RANGE: u32 = 32;
-pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64;
-pub const NR_OPEN: u32 = 1024;
-pub const NGROUPS_MAX: u32 = 65536;
-pub const ARG_MAX: u32 = 131072;
-pub const LINK_MAX: u32 = 127;
-pub const MAX_CANON: u32 = 255;
-pub const MAX_INPUT: u32 = 255;
-pub const NAME_MAX: u32 = 255;
-pub const PATH_MAX: u32 = 4096;
-pub const PIPE_BUF: u32 = 4096;
-pub const XATTR_NAME_MAX: u32 = 255;
-pub const XATTR_SIZE_MAX: u32 = 65536;
-pub const XATTR_LIST_MAX: u32 = 65536;
-pub const RTSIG_MAX: u32 = 32;
-pub const _IOC_NRBITS: u32 = 8;
-pub const _IOC_TYPEBITS: u32 = 8;
-pub const _IOC_SIZEBITS: u32 = 13;
-pub const _IOC_DIRBITS: u32 = 3;
-pub const _IOC_NRMASK: u32 = 255;
-pub const _IOC_TYPEMASK: u32 = 255;
-pub const _IOC_SIZEMASK: u32 = 8191;
-pub const _IOC_XSIZEMASK: u32 = 16383;
-pub const _IOC_DIRMASK: u32 = 7;
-pub const _IOC_NRSHIFT: u32 = 0;
-pub const _IOC_TYPESHIFT: u32 = 8;
-pub const _IOC_SIZESHIFT: u32 = 16;
-pub const _IOC_DIRSHIFT: u32 = 29;
-pub const _IOC_NONE: u32 = 1;
-pub const _IOC_READ: u32 = 2;
-pub const _IOC_WRITE: u32 = 4;
-pub const IOC_IN: u32 = 2147483648;
-pub const IOC_OUT: u32 = 1073741824;
-pub const IOC_INOUT: u32 = 3221225472;
-pub const IOCSIZE_MASK: u32 = 1073676288;
-pub const IOCSIZE_SHIFT: u32 = 16;
-pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16;
-pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1;
-pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4;
-pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5;
-pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6;
-pub const FSCRYPT_MODE_SM4_XTS: u32 = 7;
-pub const FSCRYPT_MODE_SM4_CTS: u32 = 8;
-pub const FSCRYPT_MODE_ADIANTUM: u32 = 9;
-pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10;
-pub const FSCRYPT_POLICY_V1: u32 = 0;
-pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64;
-pub const FSCRYPT_POLICY_V2: u32 = 2;
-pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16;
-pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1;
-pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1;
-pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3;
-pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1;
-pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FS_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FS_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FS_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FS_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FS_POLICY_FLAGS_VALID: u32 = 7;
-pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0;
-pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1;
-pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2;
-pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3;
-pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4;
-pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5;
-pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6;
-pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9;
-pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FS_MAX_KEY_SIZE: u32 = 64;
-pub const MS_RDONLY: u32 = 1;
-pub const MS_NOSUID: u32 = 2;
-pub const MS_NODEV: u32 = 4;
-pub const MS_NOEXEC: u32 = 8;
-pub const MS_SYNCHRONOUS: u32 = 16;
-pub const MS_REMOUNT: u32 = 32;
-pub const MS_MANDLOCK: u32 = 64;
-pub const MS_DIRSYNC: u32 = 128;
-pub const MS_NOSYMFOLLOW: u32 = 256;
-pub const MS_NOATIME: u32 = 1024;
-pub const MS_NODIRATIME: u32 = 2048;
-pub const MS_BIND: u32 = 4096;
-pub const MS_MOVE: u32 = 8192;
-pub const MS_REC: u32 = 16384;
-pub const MS_VERBOSE: u32 = 32768;
-pub const MS_SILENT: u32 = 32768;
-pub const MS_POSIXACL: u32 = 65536;
-pub const MS_UNBINDABLE: u32 = 131072;
-pub const MS_PRIVATE: u32 = 262144;
-pub const MS_SLAVE: u32 = 524288;
-pub const MS_SHARED: u32 = 1048576;
-pub const MS_RELATIME: u32 = 2097152;
-pub const MS_KERNMOUNT: u32 = 4194304;
-pub const MS_I_VERSION: u32 = 8388608;
-pub const MS_STRICTATIME: u32 = 16777216;
-pub const MS_LAZYTIME: u32 = 33554432;
-pub const MS_SUBMOUNT: u32 = 67108864;
-pub const MS_NOREMOTELOCK: u32 = 134217728;
-pub const MS_NOSEC: u32 = 268435456;
-pub const MS_BORN: u32 = 536870912;
-pub const MS_ACTIVE: u32 = 1073741824;
-pub const MS_NOUSER: u32 = 2147483648;
-pub const MS_RMT_MASK: u32 = 41943121;
-pub const MS_MGC_VAL: u32 = 3236757504;
-pub const MS_MGC_MSK: u32 = 4294901760;
-pub const OPEN_TREE_CLONE: u32 = 1;
-pub const OPEN_TREE_CLOEXEC: u32 = 4194304;
-pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1;
-pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2;
-pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4;
-pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16;
-pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32;
-pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64;
-pub const MOVE_MOUNT_SET_GROUP: u32 = 256;
-pub const MOVE_MOUNT__MASK: u32 = 375;
-pub const FSOPEN_CLOEXEC: u32 = 1;
-pub const FSPICK_CLOEXEC: u32 = 1;
-pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2;
-pub const FSPICK_NO_AUTOMOUNT: u32 = 4;
-pub const FSPICK_EMPTY_PATH: u32 = 8;
-pub const FSMOUNT_CLOEXEC: u32 = 1;
-pub const MOUNT_ATTR_RDONLY: u32 = 1;
-pub const MOUNT_ATTR_NOSUID: u32 = 2;
-pub const MOUNT_ATTR_NODEV: u32 = 4;
-pub const MOUNT_ATTR_NOEXEC: u32 = 8;
-pub const MOUNT_ATTR__ATIME: u32 = 112;
-pub const MOUNT_ATTR_RELATIME: u32 = 0;
-pub const MOUNT_ATTR_NOATIME: u32 = 16;
-pub const MOUNT_ATTR_STRICTATIME: u32 = 32;
-pub const MOUNT_ATTR_NODIRATIME: u32 = 128;
-pub const MOUNT_ATTR_IDMAP: u32 = 1048576;
-pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152;
-pub const MOUNT_ATTR_SIZE_VER0: u32 = 32;
-pub const INR_OPEN_CUR: u32 = 1024;
-pub const INR_OPEN_MAX: u32 = 4096;
-pub const BLOCK_SIZE_BITS: u32 = 10;
-pub const BLOCK_SIZE: u32 = 1024;
-pub const SEEK_SET: u32 = 0;
-pub const SEEK_CUR: u32 = 1;
-pub const SEEK_END: u32 = 2;
-pub const SEEK_DATA: u32 = 3;
-pub const SEEK_HOLE: u32 = 4;
-pub const SEEK_MAX: u32 = 4;
-pub const RENAME_NOREPLACE: u32 = 1;
-pub const RENAME_EXCHANGE: u32 = 2;
-pub const RENAME_WHITEOUT: u32 = 4;
-pub const FILE_DEDUPE_RANGE_SAME: u32 = 0;
-pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1;
-pub const NR_FILE: u32 = 8192;
-pub const FS_XFLAG_REALTIME: u32 = 1;
-pub const FS_XFLAG_PREALLOC: u32 = 2;
-pub const FS_XFLAG_IMMUTABLE: u32 = 8;
-pub const FS_XFLAG_APPEND: u32 = 16;
-pub const FS_XFLAG_SYNC: u32 = 32;
-pub const FS_XFLAG_NOATIME: u32 = 64;
-pub const FS_XFLAG_NODUMP: u32 = 128;
-pub const FS_XFLAG_RTINHERIT: u32 = 256;
-pub const FS_XFLAG_PROJINHERIT: u32 = 512;
-pub const FS_XFLAG_NOSYMLINKS: u32 = 1024;
-pub const FS_XFLAG_EXTSIZE: u32 = 2048;
-pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096;
-pub const FS_XFLAG_NODEFRAG: u32 = 8192;
-pub const FS_XFLAG_FILESTREAM: u32 = 16384;
-pub const FS_XFLAG_DAX: u32 = 32768;
-pub const FS_XFLAG_COWEXTSIZE: u32 = 65536;
-pub const FS_XFLAG_HASATTR: u32 = 2147483648;
-pub const BMAP_IOCTL: u32 = 1;
-pub const FSLABEL_MAX: u32 = 256;
-pub const FS_SECRM_FL: u32 = 1;
-pub const FS_UNRM_FL: u32 = 2;
-pub const FS_COMPR_FL: u32 = 4;
-pub const FS_SYNC_FL: u32 = 8;
-pub const FS_IMMUTABLE_FL: u32 = 16;
-pub const FS_APPEND_FL: u32 = 32;
-pub const FS_NODUMP_FL: u32 = 64;
-pub const FS_NOATIME_FL: u32 = 128;
-pub const FS_DIRTY_FL: u32 = 256;
-pub const FS_COMPRBLK_FL: u32 = 512;
-pub const FS_NOCOMP_FL: u32 = 1024;
-pub const FS_ENCRYPT_FL: u32 = 2048;
-pub const FS_BTREE_FL: u32 = 4096;
-pub const FS_INDEX_FL: u32 = 4096;
-pub const FS_IMAGIC_FL: u32 = 8192;
-pub const FS_JOURNAL_DATA_FL: u32 = 16384;
-pub const FS_NOTAIL_FL: u32 = 32768;
-pub const FS_DIRSYNC_FL: u32 = 65536;
-pub const FS_TOPDIR_FL: u32 = 131072;
-pub const FS_HUGE_FILE_FL: u32 = 262144;
-pub const FS_EXTENT_FL: u32 = 524288;
-pub const FS_VERITY_FL: u32 = 1048576;
-pub const FS_EA_INODE_FL: u32 = 2097152;
-pub const FS_EOFBLOCKS_FL: u32 = 4194304;
-pub const FS_NOCOW_FL: u32 = 8388608;
-pub const FS_DAX_FL: u32 = 33554432;
-pub const FS_INLINE_DATA_FL: u32 = 268435456;
-pub const FS_PROJINHERIT_FL: u32 = 536870912;
-pub const FS_CASEFOLD_FL: u32 = 1073741824;
-pub const FS_RESERVED_FL: u32 = 2147483648;
-pub const FS_FL_USER_VISIBLE: u32 = 253951;
-pub const FS_FL_USER_MODIFIABLE: u32 = 229631;
-pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1;
-pub const SYNC_FILE_RANGE_WRITE: u32 = 2;
-pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4;
-pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7;
-pub const FUTEX_WAIT: u32 = 0;
-pub const FUTEX_WAKE: u32 = 1;
-pub const FUTEX_FD: u32 = 2;
-pub const FUTEX_REQUEUE: u32 = 3;
-pub const FUTEX_CMP_REQUEUE: u32 = 4;
-pub const FUTEX_WAKE_OP: u32 = 5;
-pub const FUTEX_LOCK_PI: u32 = 6;
-pub const FUTEX_UNLOCK_PI: u32 = 7;
-pub const FUTEX_TRYLOCK_PI: u32 = 8;
-pub const FUTEX_WAIT_BITSET: u32 = 9;
-pub const FUTEX_WAKE_BITSET: u32 = 10;
-pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11;
-pub const FUTEX_CMP_REQUEUE_PI: u32 = 12;
-pub const FUTEX_LOCK_PI2: u32 = 13;
-pub const FUTEX_PRIVATE_FLAG: u32 = 128;
-pub const FUTEX_CLOCK_REALTIME: u32 = 256;
-pub const FUTEX_CMD_MASK: i32 = -385;
-pub const FUTEX_WAIT_PRIVATE: u32 = 128;
-pub const FUTEX_WAKE_PRIVATE: u32 = 129;
-pub const FUTEX_REQUEUE_PRIVATE: u32 = 131;
-pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132;
-pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133;
-pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134;
-pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141;
-pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135;
-pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136;
-pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137;
-pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138;
-pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139;
-pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140;
-pub const FUTEX_32: u32 = 2;
-pub const FUTEX_WAITV_MAX: u32 = 128;
-pub const FUTEX_WAITERS: u32 = 2147483648;
-pub const FUTEX_OWNER_DIED: u32 = 1073741824;
-pub const FUTEX_TID_MASK: u32 = 1073741823;
-pub const ROBUST_LIST_LIMIT: u32 = 2048;
-pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295;
-pub const FUTEX_OP_SET: u32 = 0;
-pub const FUTEX_OP_ADD: u32 = 1;
-pub const FUTEX_OP_OR: u32 = 2;
-pub const FUTEX_OP_ANDN: u32 = 3;
-pub const FUTEX_OP_XOR: u32 = 4;
-pub const FUTEX_OP_OPARG_SHIFT: u32 = 8;
-pub const FUTEX_OP_CMP_EQ: u32 = 0;
-pub const FUTEX_OP_CMP_NE: u32 = 1;
-pub const FUTEX_OP_CMP_LT: u32 = 2;
-pub const FUTEX_OP_CMP_LE: u32 = 3;
-pub const FUTEX_OP_CMP_GT: u32 = 4;
-pub const FUTEX_OP_CMP_GE: u32 = 5;
-pub const __UAPI_DEF_IF_IFCONF: u32 = 1;
-pub const __UAPI_DEF_IF_IFMAP: u32 = 1;
-pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1;
-pub const __UAPI_DEF_IF_IFREQ: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1;
-pub const __UAPI_DEF_IN_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN_IPPROTO: u32 = 1;
-pub const __UAPI_DEF_IN_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP_MREQ: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1;
-pub const __UAPI_DEF_IN_CLASS: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1;
-pub const __UAPI_DEF_IPV6_MREQ: u32 = 1;
-pub const __UAPI_DEF_IPPROTO_V6: u32 = 1;
-pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1;
-pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1;
-pub const __UAPI_DEF_XATTR: u32 = 1;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const IP_TOS: u32 = 1;
-pub const IP_TTL: u32 = 2;
-pub const IP_HDRINCL: u32 = 3;
-pub const IP_OPTIONS: u32 = 4;
-pub const IP_ROUTER_ALERT: u32 = 5;
-pub const IP_RECVOPTS: u32 = 6;
-pub const IP_RETOPTS: u32 = 7;
-pub const IP_PKTINFO: u32 = 8;
-pub const IP_PKTOPTIONS: u32 = 9;
-pub const IP_MTU_DISCOVER: u32 = 10;
-pub const IP_RECVERR: u32 = 11;
-pub const IP_RECVTTL: u32 = 12;
-pub const IP_RECVTOS: u32 = 13;
-pub const IP_MTU: u32 = 14;
-pub const IP_FREEBIND: u32 = 15;
-pub const IP_IPSEC_POLICY: u32 = 16;
-pub const IP_XFRM_POLICY: u32 = 17;
-pub const IP_PASSSEC: u32 = 18;
-pub const IP_TRANSPARENT: u32 = 19;
-pub const IP_RECVRETOPTS: u32 = 7;
-pub const IP_ORIGDSTADDR: u32 = 20;
-pub const IP_RECVORIGDSTADDR: u32 = 20;
-pub const IP_MINTTL: u32 = 21;
-pub const IP_NODEFRAG: u32 = 22;
-pub const IP_CHECKSUM: u32 = 23;
-pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24;
-pub const IP_RECVFRAGSIZE: u32 = 25;
-pub const IP_RECVERR_RFC4884: u32 = 26;
-pub const IP_PMTUDISC_DONT: u32 = 0;
-pub const IP_PMTUDISC_WANT: u32 = 1;
-pub const IP_PMTUDISC_DO: u32 = 2;
-pub const IP_PMTUDISC_PROBE: u32 = 3;
-pub const IP_PMTUDISC_INTERFACE: u32 = 4;
-pub const IP_PMTUDISC_OMIT: u32 = 5;
-pub const IP_MULTICAST_IF: u32 = 32;
-pub const IP_MULTICAST_TTL: u32 = 33;
-pub const IP_MULTICAST_LOOP: u32 = 34;
-pub const IP_ADD_MEMBERSHIP: u32 = 35;
-pub const IP_DROP_MEMBERSHIP: u32 = 36;
-pub const IP_UNBLOCK_SOURCE: u32 = 37;
-pub const IP_BLOCK_SOURCE: u32 = 38;
-pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39;
-pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40;
-pub const IP_MSFILTER: u32 = 41;
-pub const MCAST_JOIN_GROUP: u32 = 42;
-pub const MCAST_BLOCK_SOURCE: u32 = 43;
-pub const MCAST_UNBLOCK_SOURCE: u32 = 44;
-pub const MCAST_LEAVE_GROUP: u32 = 45;
-pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46;
-pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47;
-pub const MCAST_MSFILTER: u32 = 48;
-pub const IP_MULTICAST_ALL: u32 = 49;
-pub const IP_UNICAST_IF: u32 = 50;
-pub const MCAST_EXCLUDE: u32 = 0;
-pub const MCAST_INCLUDE: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1;
-pub const __SOCK_SIZE__: u32 = 16;
-pub const IN_CLASSA_NET: u32 = 4278190080;
-pub const IN_CLASSA_NSHIFT: u32 = 24;
-pub const IN_CLASSA_HOST: u32 = 16777215;
-pub const IN_CLASSA_MAX: u32 = 128;
-pub const IN_CLASSB_NET: u32 = 4294901760;
-pub const IN_CLASSB_NSHIFT: u32 = 16;
-pub const IN_CLASSB_HOST: u32 = 65535;
-pub const IN_CLASSB_MAX: u32 = 65536;
-pub const IN_CLASSC_NET: u32 = 4294967040;
-pub const IN_CLASSC_NSHIFT: u32 = 8;
-pub const IN_CLASSC_HOST: u32 = 255;
-pub const IN_MULTICAST_NET: u32 = 3758096384;
-pub const IN_CLASSE_NET: u32 = 4294967295;
-pub const IN_CLASSE_NSHIFT: u32 = 0;
-pub const IN_LOOPBACKNET: u32 = 127;
-pub const INADDR_LOOPBACK: u32 = 2130706433;
-pub const INADDR_UNSPEC_GROUP: u32 = 3758096384;
-pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385;
-pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386;
-pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490;
-pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639;
-pub const __BIG_ENDIAN: u32 = 4321;
-pub const ASI_NULL1: u32 = 0;
-pub const ASI_NULL2: u32 = 1;
-pub const ASI_CONTROL: u32 = 2;
-pub const ASI_SEGMAP: u32 = 3;
-pub const ASI_PTE: u32 = 4;
-pub const ASI_HWFLUSHSEG: u32 = 5;
-pub const ASI_HWFLUSHPAGE: u32 = 6;
-pub const ASI_REGMAP: u32 = 6;
-pub const ASI_HWFLUSHCONTEXT: u32 = 7;
-pub const ASI_USERTXT: u32 = 8;
-pub const ASI_KERNELTXT: u32 = 9;
-pub const ASI_USERDATA: u32 = 10;
-pub const ASI_KERNELDATA: u32 = 11;
-pub const ASI_FLUSHSEG: u32 = 12;
-pub const ASI_FLUSHPG: u32 = 13;
-pub const ASI_FLUSHCTX: u32 = 14;
-pub const ASI_M_RES00: u32 = 0;
-pub const ASI_M_UNA01: u32 = 1;
-pub const ASI_M_MXCC: u32 = 2;
-pub const ASI_M_FLUSH_PROBE: u32 = 3;
-pub const ASI_M_MMUREGS: u32 = 4;
-pub const ASI_M_TLBDIAG: u32 = 5;
-pub const ASI_M_DIAGS: u32 = 6;
-pub const ASI_M_IODIAG: u32 = 7;
-pub const ASI_M_USERTXT: u32 = 8;
-pub const ASI_M_KERNELTXT: u32 = 9;
-pub const ASI_M_USERDATA: u32 = 10;
-pub const ASI_M_KERNELDATA: u32 = 11;
-pub const ASI_M_TXTC_TAG: u32 = 12;
-pub const ASI_M_TXTC_DATA: u32 = 13;
-pub const ASI_M_DATAC_TAG: u32 = 14;
-pub const ASI_M_DATAC_DATA: u32 = 15;
-pub const ASI_M_FLUSH_PAGE: u32 = 16;
-pub const ASI_M_FLUSH_SEG: u32 = 17;
-pub const ASI_M_FLUSH_REGION: u32 = 18;
-pub const ASI_M_FLUSH_CTX: u32 = 19;
-pub const ASI_M_FLUSH_USER: u32 = 20;
-pub const ASI_M_BCOPY: u32 = 23;
-pub const ASI_M_IFLUSH_PAGE: u32 = 24;
-pub const ASI_M_IFLUSH_SEG: u32 = 25;
-pub const ASI_M_IFLUSH_REGION: u32 = 26;
-pub const ASI_M_IFLUSH_CTX: u32 = 27;
-pub const ASI_M_IFLUSH_USER: u32 = 28;
-pub const ASI_M_BFILL: u32 = 31;
-pub const ASI_M_BYPASS: u32 = 32;
-pub const ASI_M_FBMEM: u32 = 41;
-pub const ASI_M_VMEUS: u32 = 42;
-pub const ASI_M_VMEPS: u32 = 43;
-pub const ASI_M_VMEUT: u32 = 44;
-pub const ASI_M_VMEPT: u32 = 45;
-pub const ASI_M_SBUS: u32 = 46;
-pub const ASI_M_CTL: u32 = 47;
-pub const ASI_M_FLUSH_IWHOLE: u32 = 49;
-pub const ASI_M_IC_FLCLEAR: u32 = 54;
-pub const ASI_M_DC_FLCLEAR: u32 = 55;
-pub const ASI_M_DCDR: u32 = 57;
-pub const ASI_M_VIKING_TMP1: u32 = 64;
-pub const ASI_M_ACTION: u32 = 76;
-pub const ASI_LEON_NOCACHE: u32 = 1;
-pub const ASI_LEON_DCACHE_MISS: u32 = 1;
-pub const ASI_LEON_CACHEREGS: u32 = 2;
-pub const ASI_LEON_IFLUSH: u32 = 16;
-pub const ASI_LEON_DFLUSH: u32 = 17;
-pub const ASI_LEON_MMUFLUSH: u32 = 24;
-pub const ASI_LEON_MMUREGS: u32 = 25;
-pub const ASI_LEON_BYPASS: u32 = 28;
-pub const ASI_LEON_FLUSH_PAGE: u32 = 16;
-pub const ASI_N: u32 = 4;
-pub const ASI_NL: u32 = 12;
-pub const ASI_AIUP: u32 = 16;
-pub const ASI_AIUS: u32 = 17;
-pub const ASI_AIUPL: u32 = 24;
-pub const ASI_AIUSL: u32 = 25;
-pub const ASI_P: u32 = 128;
-pub const ASI_S: u32 = 129;
-pub const ASI_PNF: u32 = 130;
-pub const ASI_SNF: u32 = 131;
-pub const ASI_PL: u32 = 136;
-pub const ASI_SL: u32 = 137;
-pub const ASI_PNFL: u32 = 138;
-pub const ASI_SNFL: u32 = 139;
-pub const ASI_MCD_PRIV_PRIMARY: u32 = 2;
-pub const ASI_MCD_REAL: u32 = 5;
-pub const ASI_PHYS_USE_EC: u32 = 20;
-pub const ASI_PHYS_BYPASS_EC_E: u32 = 21;
-pub const ASI_BLK_AIUP_4V: u32 = 22;
-pub const ASI_BLK_AIUS_4V: u32 = 23;
-pub const ASI_PHYS_USE_EC_L: u32 = 28;
-pub const ASI_PHYS_BYPASS_EC_E_L: u32 = 29;
-pub const ASI_BLK_AIUP_L_4V: u32 = 30;
-pub const ASI_BLK_AIUS_L_4V: u32 = 31;
-pub const ASI_SCRATCHPAD: u32 = 32;
-pub const ASI_MMU: u32 = 33;
-pub const ASI_BLK_INIT_QUAD_LDD_AIUS: u32 = 35;
-pub const ASI_NUCLEUS_QUAD_LDD: u32 = 36;
-pub const ASI_QUEUE: u32 = 37;
-pub const ASI_QUAD_LDD_PHYS_4V: u32 = 38;
-pub const ASI_NUCLEUS_QUAD_LDD_L: u32 = 44;
-pub const ASI_QUAD_LDD_PHYS_L_4V: u32 = 46;
-pub const ASI_PCACHE_DATA_STATUS: u32 = 48;
-pub const ASI_PCACHE_DATA: u32 = 49;
-pub const ASI_PCACHE_TAG: u32 = 50;
-pub const ASI_PCACHE_SNOOP_TAG: u32 = 51;
-pub const ASI_QUAD_LDD_PHYS: u32 = 52;
-pub const ASI_WCACHE_VALID_BITS: u32 = 56;
-pub const ASI_WCACHE_DATA: u32 = 57;
-pub const ASI_WCACHE_TAG: u32 = 58;
-pub const ASI_WCACHE_SNOOP_TAG: u32 = 59;
-pub const ASI_QUAD_LDD_PHYS_L: u32 = 60;
-pub const ASI_SRAM_FAST_INIT: u32 = 64;
-pub const ASI_CORE_AVAILABLE: u32 = 65;
-pub const ASI_CORE_ENABLE_STAT: u32 = 65;
-pub const ASI_CORE_ENABLE: u32 = 65;
-pub const ASI_XIR_STEERING: u32 = 65;
-pub const ASI_CORE_RUNNING_RW: u32 = 65;
-pub const ASI_CORE_RUNNING_W1S: u32 = 65;
-pub const ASI_CORE_RUNNING_W1C: u32 = 65;
-pub const ASI_CORE_RUNNING_STAT: u32 = 65;
-pub const ASI_CMT_ERROR_STEERING: u32 = 65;
-pub const ASI_DCACHE_INVALIDATE: u32 = 66;
-pub const ASI_DCACHE_UTAG: u32 = 67;
-pub const ASI_DCACHE_SNOOP_TAG: u32 = 68;
-pub const ASI_LSU_CONTROL: u32 = 69;
-pub const ASI_DCU_CONTROL_REG: u32 = 69;
-pub const ASI_DCACHE_DATA: u32 = 70;
-pub const ASI_DCACHE_TAG: u32 = 71;
-pub const ASI_INTR_DISPATCH_STAT: u32 = 72;
-pub const ASI_INTR_RECEIVE: u32 = 73;
-pub const ASI_UPA_CONFIG: u32 = 74;
-pub const ASI_JBUS_CONFIG: u32 = 74;
-pub const ASI_SAFARI_CONFIG: u32 = 74;
-pub const ASI_SAFARI_ADDRESS: u32 = 74;
-pub const ASI_ESTATE_ERROR_EN: u32 = 75;
-pub const ASI_AFSR: u32 = 76;
-pub const ASI_AFAR: u32 = 77;
-pub const ASI_EC_TAG_DATA: u32 = 78;
-pub const ASI_IMMU: u32 = 80;
-pub const ASI_IMMU_TSB_8KB_PTR: u32 = 81;
-pub const ASI_IMMU_TSB_64KB_PTR: u32 = 82;
-pub const ASI_ITLB_DATA_IN: u32 = 84;
-pub const ASI_ITLB_DATA_ACCESS: u32 = 85;
-pub const ASI_ITLB_TAG_READ: u32 = 86;
-pub const ASI_IMMU_DEMAP: u32 = 87;
-pub const ASI_DMMU: u32 = 88;
-pub const ASI_DMMU_TSB_8KB_PTR: u32 = 89;
-pub const ASI_DMMU_TSB_64KB_PTR: u32 = 90;
-pub const ASI_DMMU_TSB_DIRECT_PTR: u32 = 91;
-pub const ASI_DTLB_DATA_IN: u32 = 92;
-pub const ASI_DTLB_DATA_ACCESS: u32 = 93;
-pub const ASI_DTLB_TAG_READ: u32 = 94;
-pub const ASI_DMMU_DEMAP: u32 = 95;
-pub const ASI_IIU_INST_TRAP: u32 = 96;
-pub const ASI_INTR_ID: u32 = 99;
-pub const ASI_CORE_ID: u32 = 99;
-pub const ASI_CESR_ID: u32 = 99;
-pub const ASI_IC_INSTR: u32 = 102;
-pub const ASI_IC_TAG: u32 = 103;
-pub const ASI_IC_STAG: u32 = 104;
-pub const ASI_IC_PRE_DECODE: u32 = 110;
-pub const ASI_IC_NEXT_FIELD: u32 = 111;
-pub const ASI_BRPRED_ARRAY: u32 = 111;
-pub const ASI_BLK_AIUP: u32 = 112;
-pub const ASI_BLK_AIUS: u32 = 113;
-pub const ASI_MCU_CTRL_REG: u32 = 114;
-pub const ASI_EC_DATA: u32 = 116;
-pub const ASI_EC_CTRL: u32 = 117;
-pub const ASI_EC_W: u32 = 118;
-pub const ASI_UDB_ERROR_W: u32 = 119;
-pub const ASI_UDB_CONTROL_W: u32 = 119;
-pub const ASI_INTR_W: u32 = 119;
-pub const ASI_INTR_DATAN_W: u32 = 119;
-pub const ASI_INTR_DISPATCH_W: u32 = 119;
-pub const ASI_BLK_AIUPL: u32 = 120;
-pub const ASI_BLK_AIUSL: u32 = 121;
-pub const ASI_EC_R: u32 = 126;
-pub const ASI_UDBH_ERROR_R: u32 = 127;
-pub const ASI_UDBL_ERROR_R: u32 = 127;
-pub const ASI_UDBH_CONTROL_R: u32 = 127;
-pub const ASI_UDBL_CONTROL_R: u32 = 127;
-pub const ASI_INTR_R: u32 = 127;
-pub const ASI_INTR_DATAN_R: u32 = 127;
-pub const ASI_MCD_PRIMARY: u32 = 144;
-pub const ASI_MCD_ST_BLKINIT_PRIMARY: u32 = 146;
-pub const ASI_PIC: u32 = 176;
-pub const ASI_PST8_P: u32 = 192;
-pub const ASI_PST8_S: u32 = 193;
-pub const ASI_PST16_P: u32 = 194;
-pub const ASI_PST16_S: u32 = 195;
-pub const ASI_PST32_P: u32 = 196;
-pub const ASI_PST32_S: u32 = 197;
-pub const ASI_PST8_PL: u32 = 200;
-pub const ASI_PST8_SL: u32 = 201;
-pub const ASI_PST16_PL: u32 = 202;
-pub const ASI_PST16_SL: u32 = 203;
-pub const ASI_PST32_PL: u32 = 204;
-pub const ASI_PST32_SL: u32 = 205;
-pub const ASI_FL8_P: u32 = 208;
-pub const ASI_FL8_S: u32 = 209;
-pub const ASI_FL16_P: u32 = 210;
-pub const ASI_FL16_S: u32 = 211;
-pub const ASI_FL8_PL: u32 = 216;
-pub const ASI_FL8_SL: u32 = 217;
-pub const ASI_FL16_PL: u32 = 218;
-pub const ASI_FL16_SL: u32 = 219;
-pub const ASI_BLK_COMMIT_P: u32 = 224;
-pub const ASI_BLK_COMMIT_S: u32 = 225;
-pub const ASI_BLK_INIT_QUAD_LDD_P: u32 = 226;
-pub const ASI_BLK_INIT_QUAD_LDD_S: u32 = 227;
-pub const ASI_BLK_P: u32 = 240;
-pub const ASI_BLK_S: u32 = 241;
-pub const ASI_ST_BLKINIT_MRU_P: u32 = 242;
-pub const ASI_ST_BLKINIT_MRU_S: u32 = 243;
-pub const ASI_BLK_PL: u32 = 248;
-pub const ASI_BLK_SL: u32 = 249;
-pub const ASI_ST_BLKINIT_MRU_PL: u32 = 250;
-pub const ASI_ST_BLKINIT_MRU_SL: u32 = 251;
-pub const IN_ACCESS: u32 = 1;
-pub const IN_MODIFY: u32 = 2;
-pub const IN_ATTRIB: u32 = 4;
-pub const IN_CLOSE_WRITE: u32 = 8;
-pub const IN_CLOSE_NOWRITE: u32 = 16;
-pub const IN_OPEN: u32 = 32;
-pub const IN_MOVED_FROM: u32 = 64;
-pub const IN_MOVED_TO: u32 = 128;
-pub const IN_CREATE: u32 = 256;
-pub const IN_DELETE: u32 = 512;
-pub const IN_DELETE_SELF: u32 = 1024;
-pub const IN_MOVE_SELF: u32 = 2048;
-pub const IN_UNMOUNT: u32 = 8192;
-pub const IN_Q_OVERFLOW: u32 = 16384;
-pub const IN_IGNORED: u32 = 32768;
-pub const IN_CLOSE: u32 = 24;
-pub const IN_MOVE: u32 = 192;
-pub const IN_ONLYDIR: u32 = 16777216;
-pub const IN_DONT_FOLLOW: u32 = 33554432;
-pub const IN_EXCL_UNLINK: u32 = 67108864;
-pub const IN_MASK_CREATE: u32 = 268435456;
-pub const IN_MASK_ADD: u32 = 536870912;
-pub const IN_ISDIR: u32 = 1073741824;
-pub const IN_ONESHOT: u32 = 2147483648;
-pub const IN_ALL_EVENTS: u32 = 4095;
-pub const IN_CLOEXEC: u32 = 4194304;
-pub const IN_NONBLOCK: u32 = 16384;
-pub const IPTOS_TOS_MASK: u32 = 30;
-pub const IPTOS_LOWDELAY: u32 = 16;
-pub const IPTOS_THROUGHPUT: u32 = 8;
-pub const IPTOS_RELIABILITY: u32 = 4;
-pub const IPTOS_MINCOST: u32 = 2;
-pub const IPTOS_PREC_MASK: u32 = 224;
-pub const IPTOS_PREC_NETCONTROL: u32 = 224;
-pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192;
-pub const IPTOS_PREC_CRITIC_ECP: u32 = 160;
-pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128;
-pub const IPTOS_PREC_FLASH: u32 = 96;
-pub const IPTOS_PREC_IMMEDIATE: u32 = 64;
-pub const IPTOS_PREC_PRIORITY: u32 = 32;
-pub const IPTOS_PREC_ROUTINE: u32 = 0;
-pub const IPOPT_COPY: u32 = 128;
-pub const IPOPT_CLASS_MASK: u32 = 96;
-pub const IPOPT_NUMBER_MASK: u32 = 31;
-pub const IPOPT_CONTROL: u32 = 0;
-pub const IPOPT_RESERVED1: u32 = 32;
-pub const IPOPT_MEASUREMENT: u32 = 64;
-pub const IPOPT_RESERVED2: u32 = 96;
-pub const IPOPT_END: u32 = 0;
-pub const IPOPT_NOOP: u32 = 1;
-pub const IPOPT_SEC: u32 = 130;
-pub const IPOPT_LSRR: u32 = 131;
-pub const IPOPT_TIMESTAMP: u32 = 68;
-pub const IPOPT_CIPSO: u32 = 134;
-pub const IPOPT_RR: u32 = 7;
-pub const IPOPT_SID: u32 = 136;
-pub const IPOPT_SSRR: u32 = 137;
-pub const IPOPT_RA: u32 = 148;
-pub const IPVERSION: u32 = 4;
-pub const MAXTTL: u32 = 255;
-pub const IPDEFTTL: u32 = 64;
-pub const IPOPT_OPTVAL: u32 = 0;
-pub const IPOPT_OLEN: u32 = 1;
-pub const IPOPT_OFFSET: u32 = 2;
-pub const IPOPT_MINOFF: u32 = 4;
-pub const MAX_IPOPTLEN: u32 = 40;
-pub const IPOPT_NOP: u32 = 1;
-pub const IPOPT_EOL: u32 = 0;
-pub const IPOPT_TS: u32 = 68;
-pub const IPOPT_TS_TSONLY: u32 = 0;
-pub const IPOPT_TS_TSANDADDR: u32 = 1;
-pub const IPOPT_TS_PRESPEC: u32 = 3;
-pub const IPV4_BEET_PHMAXLEN: u32 = 8;
-pub const IPV6_FL_A_GET: u32 = 0;
-pub const IPV6_FL_A_PUT: u32 = 1;
-pub const IPV6_FL_A_RENEW: u32 = 2;
-pub const IPV6_FL_F_CREATE: u32 = 1;
-pub const IPV6_FL_F_EXCL: u32 = 2;
-pub const IPV6_FL_F_REFLECT: u32 = 4;
-pub const IPV6_FL_F_REMOTE: u32 = 8;
-pub const IPV6_FL_S_NONE: u32 = 0;
-pub const IPV6_FL_S_EXCL: u32 = 1;
-pub const IPV6_FL_S_PROCESS: u32 = 2;
-pub const IPV6_FL_S_USER: u32 = 3;
-pub const IPV6_FL_S_ANY: u32 = 255;
-pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575;
-pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880;
-pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0;
-pub const IPV6_PRIORITY_FILLER: u32 = 256;
-pub const IPV6_PRIORITY_UNATTENDED: u32 = 512;
-pub const IPV6_PRIORITY_RESERVED1: u32 = 768;
-pub const IPV6_PRIORITY_BULK: u32 = 1024;
-pub const IPV6_PRIORITY_RESERVED2: u32 = 1280;
-pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536;
-pub const IPV6_PRIORITY_CONTROL: u32 = 1792;
-pub const IPV6_PRIORITY_8: u32 = 2048;
-pub const IPV6_PRIORITY_9: u32 = 2304;
-pub const IPV6_PRIORITY_10: u32 = 2560;
-pub const IPV6_PRIORITY_11: u32 = 2816;
-pub const IPV6_PRIORITY_12: u32 = 3072;
-pub const IPV6_PRIORITY_13: u32 = 3328;
-pub const IPV6_PRIORITY_14: u32 = 3584;
-pub const IPV6_PRIORITY_15: u32 = 3840;
-pub const IPPROTO_HOPOPTS: u32 = 0;
-pub const IPPROTO_ROUTING: u32 = 43;
-pub const IPPROTO_FRAGMENT: u32 = 44;
-pub const IPPROTO_ICMPV6: u32 = 58;
-pub const IPPROTO_NONE: u32 = 59;
-pub const IPPROTO_DSTOPTS: u32 = 60;
-pub const IPPROTO_MH: u32 = 135;
-pub const IPV6_TLV_PAD1: u32 = 0;
-pub const IPV6_TLV_PADN: u32 = 1;
-pub const IPV6_TLV_ROUTERALERT: u32 = 5;
-pub const IPV6_TLV_CALIPSO: u32 = 7;
-pub const IPV6_TLV_IOAM: u32 = 49;
-pub const IPV6_TLV_JUMBO: u32 = 194;
-pub const IPV6_TLV_HAO: u32 = 201;
-pub const IPV6_ADDRFORM: u32 = 1;
-pub const IPV6_2292PKTINFO: u32 = 2;
-pub const IPV6_2292HOPOPTS: u32 = 3;
-pub const IPV6_2292DSTOPTS: u32 = 4;
-pub const IPV6_2292RTHDR: u32 = 5;
-pub const IPV6_2292PKTOPTIONS: u32 = 6;
-pub const IPV6_CHECKSUM: u32 = 7;
-pub const IPV6_2292HOPLIMIT: u32 = 8;
-pub const IPV6_NEXTHOP: u32 = 9;
-pub const IPV6_AUTHHDR: u32 = 10;
-pub const IPV6_FLOWINFO: u32 = 11;
-pub const IPV6_UNICAST_HOPS: u32 = 16;
-pub const IPV6_MULTICAST_IF: u32 = 17;
-pub const IPV6_MULTICAST_HOPS: u32 = 18;
-pub const IPV6_MULTICAST_LOOP: u32 = 19;
-pub const IPV6_ADD_MEMBERSHIP: u32 = 20;
-pub const IPV6_DROP_MEMBERSHIP: u32 = 21;
-pub const IPV6_ROUTER_ALERT: u32 = 22;
-pub const IPV6_MTU_DISCOVER: u32 = 23;
-pub const IPV6_MTU: u32 = 24;
-pub const IPV6_RECVERR: u32 = 25;
-pub const IPV6_V6ONLY: u32 = 26;
-pub const IPV6_JOIN_ANYCAST: u32 = 27;
-pub const IPV6_LEAVE_ANYCAST: u32 = 28;
-pub const IPV6_MULTICAST_ALL: u32 = 29;
-pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30;
-pub const IPV6_RECVERR_RFC4884: u32 = 31;
-pub const IPV6_PMTUDISC_DONT: u32 = 0;
-pub const IPV6_PMTUDISC_WANT: u32 = 1;
-pub const IPV6_PMTUDISC_DO: u32 = 2;
-pub const IPV6_PMTUDISC_PROBE: u32 = 3;
-pub const IPV6_PMTUDISC_INTERFACE: u32 = 4;
-pub const IPV6_PMTUDISC_OMIT: u32 = 5;
-pub const IPV6_FLOWLABEL_MGR: u32 = 32;
-pub const IPV6_FLOWINFO_SEND: u32 = 33;
-pub const IPV6_IPSEC_POLICY: u32 = 34;
-pub const IPV6_XFRM_POLICY: u32 = 35;
-pub const IPV6_HDRINCL: u32 = 36;
-pub const IPV6_RECVPKTINFO: u32 = 49;
-pub const IPV6_PKTINFO: u32 = 50;
-pub const IPV6_RECVHOPLIMIT: u32 = 51;
-pub const IPV6_HOPLIMIT: u32 = 52;
-pub const IPV6_RECVHOPOPTS: u32 = 53;
-pub const IPV6_HOPOPTS: u32 = 54;
-pub const IPV6_RTHDRDSTOPTS: u32 = 55;
-pub const IPV6_RECVRTHDR: u32 = 56;
-pub const IPV6_RTHDR: u32 = 57;
-pub const IPV6_RECVDSTOPTS: u32 = 58;
-pub const IPV6_DSTOPTS: u32 = 59;
-pub const IPV6_RECVPATHMTU: u32 = 60;
-pub const IPV6_PATHMTU: u32 = 61;
-pub const IPV6_DONTFRAG: u32 = 62;
-pub const IPV6_RECVTCLASS: u32 = 66;
-pub const IPV6_TCLASS: u32 = 67;
-pub const IPV6_AUTOFLOWLABEL: u32 = 70;
-pub const IPV6_ADDR_PREFERENCES: u32 = 72;
-pub const IPV6_PREFER_SRC_TMP: u32 = 1;
-pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2;
-pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256;
-pub const IPV6_PREFER_SRC_COA: u32 = 4;
-pub const IPV6_PREFER_SRC_HOME: u32 = 1024;
-pub const IPV6_PREFER_SRC_CGA: u32 = 8;
-pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048;
-pub const IPV6_MINHOPCOUNT: u32 = 73;
-pub const IPV6_ORIGDSTADDR: u32 = 74;
-pub const IPV6_RECVORIGDSTADDR: u32 = 74;
-pub const IPV6_TRANSPARENT: u32 = 75;
-pub const IPV6_UNICAST_IF: u32 = 76;
-pub const IPV6_RECVFRAGSIZE: u32 = 77;
-pub const IPV6_FREEBIND: u32 = 78;
-pub const IPV6_MIN_MTU: u32 = 1280;
-pub const IPV6_SRCRT_STRICT: u32 = 1;
-pub const IPV6_SRCRT_TYPE_0: u32 = 0;
-pub const IPV6_SRCRT_TYPE_2: u32 = 2;
-pub const IPV6_SRCRT_TYPE_3: u32 = 3;
-pub const IPV6_SRCRT_TYPE_4: u32 = 4;
-pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0;
-pub const ADFS_SUPER_MAGIC: u32 = 44533;
-pub const AFFS_SUPER_MAGIC: u32 = 44543;
-pub const AFS_SUPER_MAGIC: u32 = 1397113167;
-pub const AUTOFS_SUPER_MAGIC: u32 = 391;
-pub const CEPH_SUPER_MAGIC: u32 = 12805120;
-pub const CODA_SUPER_MAGIC: u32 = 1937076805;
-pub const CRAMFS_MAGIC: u32 = 684539205;
-pub const CRAMFS_MAGIC_WEND: u32 = 1161678120;
-pub const DEBUGFS_MAGIC: u32 = 1684170528;
-pub const SECURITYFS_MAGIC: u32 = 1935894131;
-pub const SELINUX_MAGIC: u32 = 4185718668;
-pub const SMACK_MAGIC: u32 = 1128357203;
-pub const RAMFS_MAGIC: u32 = 2240043254;
-pub const TMPFS_MAGIC: u32 = 16914836;
-pub const HUGETLBFS_MAGIC: u32 = 2508478710;
-pub const SQUASHFS_MAGIC: u32 = 1936814952;
-pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791;
-pub const EFS_SUPER_MAGIC: u32 = 4278867;
-pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530;
-pub const EXT2_SUPER_MAGIC: u32 = 61267;
-pub const EXT3_SUPER_MAGIC: u32 = 61267;
-pub const XENFS_SUPER_MAGIC: u32 = 2881100148;
-pub const EXT4_SUPER_MAGIC: u32 = 61267;
-pub const BTRFS_SUPER_MAGIC: u32 = 2435016766;
-pub const NILFS_SUPER_MAGIC: u32 = 13364;
-pub const F2FS_SUPER_MAGIC: u32 = 4076150800;
-pub const HPFS_SUPER_MAGIC: u32 = 4187351113;
-pub const ISOFS_SUPER_MAGIC: u32 = 38496;
-pub const JFFS2_SUPER_MAGIC: u32 = 29366;
-pub const XFS_SUPER_MAGIC: u32 = 1481003842;
-pub const PSTOREFS_MAGIC: u32 = 1634035564;
-pub const EFIVARFS_MAGIC: u32 = 3730735588;
-pub const HOSTFS_SUPER_MAGIC: u32 = 12648430;
-pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128;
-pub const FUSE_SUPER_MAGIC: u32 = 1702057286;
-pub const MINIX_SUPER_MAGIC: u32 = 4991;
-pub const MINIX_SUPER_MAGIC2: u32 = 5007;
-pub const MINIX2_SUPER_MAGIC: u32 = 9320;
-pub const MINIX2_SUPER_MAGIC2: u32 = 9336;
-pub const MINIX3_SUPER_MAGIC: u32 = 19802;
-pub const MSDOS_SUPER_MAGIC: u32 = 19780;
-pub const EXFAT_SUPER_MAGIC: u32 = 538032816;
-pub const NCP_SUPER_MAGIC: u32 = 22092;
-pub const NFS_SUPER_MAGIC: u32 = 26985;
-pub const OCFS2_SUPER_MAGIC: u32 = 1952539503;
-pub const OPENPROM_SUPER_MAGIC: u32 = 40865;
-pub const QNX4_SUPER_MAGIC: u32 = 47;
-pub const QNX6_SUPER_MAGIC: u32 = 1746473250;
-pub const AFS_FS_MAGIC: u32 = 1799439955;
-pub const REISERFS_SUPER_MAGIC: u32 = 1382369651;
-pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0";
-pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0";
-pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0";
-pub const SMB_SUPER_MAGIC: u32 = 20859;
-pub const CIFS_SUPER_MAGIC: u32 = 4283649346;
-pub const SMB2_SUPER_MAGIC: u32 = 4266872130;
-pub const CGROUP_SUPER_MAGIC: u32 = 2613483;
-pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888;
-pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209;
-pub const STACK_END_MAGIC: u32 = 1470918301;
-pub const TRACEFS_MAGIC: u32 = 1953653091;
-pub const V9FS_MAGIC: u32 = 16914839;
-pub const BDEVFS_MAGIC: u32 = 1650746742;
-pub const DAXFS_MAGIC: u32 = 1684300152;
-pub const BINFMTFS_MAGIC: u32 = 1112100429;
-pub const DEVPTS_SUPER_MAGIC: u32 = 7377;
-pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352;
-pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762;
-pub const PIPEFS_MAGIC: u32 = 1346981957;
-pub const PROC_SUPER_MAGIC: u32 = 40864;
-pub const SOCKFS_MAGIC: u32 = 1397703499;
-pub const SYSFS_MAGIC: u32 = 1650812274;
-pub const USBDEVICE_SUPER_MAGIC: u32 = 40866;
-pub const MTD_INODE_FS_MAGIC: u32 = 288389204;
-pub const ANON_INODE_FS_MAGIC: u32 = 151263540;
-pub const BTRFS_TEST_MAGIC: u32 = 1936880249;
-pub const NSFS_MAGIC: u32 = 1853056627;
-pub const BPF_FS_MAGIC: u32 = 3405662737;
-pub const AAFS_MAGIC: u32 = 1513908720;
-pub const ZONEFS_MAGIC: u32 = 1515144787;
-pub const UDF_SUPER_MAGIC: u32 = 352400198;
-pub const DMA_BUF_MAGIC: u32 = 1145913666;
-pub const DEVMEM_MAGIC: u32 = 1162691661;
-pub const SECRETMEM_MAGIC: u32 = 1397048141;
-pub const PROT_READ: u32 = 1;
-pub const PROT_WRITE: u32 = 2;
-pub const PROT_EXEC: u32 = 4;
-pub const PROT_SEM: u32 = 8;
-pub const PROT_NONE: u32 = 0;
-pub const PROT_GROWSDOWN: u32 = 16777216;
-pub const PROT_GROWSUP: u32 = 33554432;
-pub const MAP_TYPE: u32 = 15;
-pub const MAP_FIXED: u32 = 16;
-pub const MAP_ANONYMOUS: u32 = 32;
-pub const MAP_POPULATE: u32 = 32768;
-pub const MAP_NONBLOCK: u32 = 65536;
-pub const MAP_STACK: u32 = 131072;
-pub const MAP_HUGETLB: u32 = 262144;
-pub const MAP_SYNC: u32 = 524288;
-pub const MAP_FIXED_NOREPLACE: u32 = 1048576;
-pub const MAP_UNINITIALIZED: u32 = 67108864;
-pub const MLOCK_ONFAULT: u32 = 1;
-pub const MS_ASYNC: u32 = 1;
-pub const MS_INVALIDATE: u32 = 2;
-pub const MS_SYNC: u32 = 4;
-pub const MADV_NORMAL: u32 = 0;
-pub const MADV_RANDOM: u32 = 1;
-pub const MADV_SEQUENTIAL: u32 = 2;
-pub const MADV_WILLNEED: u32 = 3;
-pub const MADV_DONTNEED: u32 = 4;
-pub const MADV_FREE: u32 = 8;
-pub const MADV_REMOVE: u32 = 9;
-pub const MADV_DONTFORK: u32 = 10;
-pub const MADV_DOFORK: u32 = 11;
-pub const MADV_HWPOISON: u32 = 100;
-pub const MADV_SOFT_OFFLINE: u32 = 101;
-pub const MADV_MERGEABLE: u32 = 12;
-pub const MADV_UNMERGEABLE: u32 = 13;
-pub const MADV_HUGEPAGE: u32 = 14;
-pub const MADV_NOHUGEPAGE: u32 = 15;
-pub const MADV_DONTDUMP: u32 = 16;
-pub const MADV_DODUMP: u32 = 17;
-pub const MADV_WIPEONFORK: u32 = 18;
-pub const MADV_KEEPONFORK: u32 = 19;
-pub const MADV_COLD: u32 = 20;
-pub const MADV_PAGEOUT: u32 = 21;
-pub const MADV_POPULATE_READ: u32 = 22;
-pub const MADV_POPULATE_WRITE: u32 = 23;
-pub const MADV_DONTNEED_LOCKED: u32 = 24;
-pub const MADV_COLLAPSE: u32 = 25;
-pub const MAP_FILE: u32 = 0;
-pub const PKEY_DISABLE_ACCESS: u32 = 1;
-pub const PKEY_DISABLE_WRITE: u32 = 2;
-pub const PKEY_ACCESS_MASK: u32 = 3;
-pub const PROT_ADI: u32 = 16;
-pub const MAP_RENAME: u32 = 32;
-pub const MAP_NORESERVE: u32 = 64;
-pub const MAP_INHERIT: u32 = 128;
-pub const MAP_LOCKED: u32 = 256;
-pub const _MAP_NEW: u32 = 2147483648;
-pub const MAP_GROWSDOWN: u32 = 512;
-pub const MAP_DENYWRITE: u32 = 2048;
-pub const MAP_EXECUTABLE: u32 = 4096;
-pub const MCL_CURRENT: u32 = 8192;
-pub const MCL_FUTURE: u32 = 16384;
-pub const MCL_ONFAULT: u32 = 32768;
-pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26;
-pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63;
-pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096;
-pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824;
-pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416;
-pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280;
-pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144;
-pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872;
-pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736;
-pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600;
-pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192;
-pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056;
-pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920;
-pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784;
-pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376;
-pub const MREMAP_MAYMOVE: u32 = 1;
-pub const MREMAP_FIXED: u32 = 2;
-pub const MREMAP_DONTUNMAP: u32 = 4;
-pub const OVERCOMMIT_GUESS: u32 = 0;
-pub const OVERCOMMIT_ALWAYS: u32 = 1;
-pub const OVERCOMMIT_NEVER: u32 = 2;
-pub const MAP_SHARED: u32 = 1;
-pub const MAP_PRIVATE: u32 = 2;
-pub const MAP_SHARED_VALIDATE: u32 = 3;
-pub const MAP_HUGE_SHIFT: u32 = 26;
-pub const MAP_HUGE_MASK: u32 = 63;
-pub const MAP_HUGE_16KB: u32 = 939524096;
-pub const MAP_HUGE_64KB: u32 = 1073741824;
-pub const MAP_HUGE_512KB: u32 = 1275068416;
-pub const MAP_HUGE_1MB: u32 = 1342177280;
-pub const MAP_HUGE_2MB: u32 = 1409286144;
-pub const MAP_HUGE_8MB: u32 = 1543503872;
-pub const MAP_HUGE_16MB: u32 = 1610612736;
-pub const MAP_HUGE_32MB: u32 = 1677721600;
-pub const MAP_HUGE_256MB: u32 = 1879048192;
-pub const MAP_HUGE_512MB: u32 = 1946157056;
-pub const MAP_HUGE_1GB: u32 = 2013265920;
-pub const MAP_HUGE_2GB: u32 = 2080374784;
-pub const MAP_HUGE_16GB: u32 = 2281701376;
-pub const SIOCGSTAMP_OLD: u32 = 35078;
-pub const SIOCGSTAMPNS_OLD: u32 = 35079;
-pub const SOL_SOCKET: u32 = 65535;
-pub const SO_DEBUG: u32 = 1;
-pub const SO_PASSCRED: u32 = 2;
-pub const SO_REUSEADDR: u32 = 4;
-pub const SO_KEEPALIVE: u32 = 8;
-pub const SO_DONTROUTE: u32 = 16;
-pub const SO_BROADCAST: u32 = 32;
-pub const SO_PEERCRED: u32 = 64;
-pub const SO_LINGER: u32 = 128;
-pub const SO_OOBINLINE: u32 = 256;
-pub const SO_REUSEPORT: u32 = 512;
-pub const SO_BSDCOMPAT: u32 = 1024;
-pub const SO_RCVLOWAT: u32 = 2048;
-pub const SO_SNDLOWAT: u32 = 4096;
-pub const SO_RCVTIMEO_OLD: u32 = 8192;
-pub const SO_SNDTIMEO_OLD: u32 = 16384;
-pub const SO_ACCEPTCONN: u32 = 32768;
-pub const SO_SNDBUF: u32 = 4097;
-pub const SO_RCVBUF: u32 = 4098;
-pub const SO_SNDBUFFORCE: u32 = 4106;
-pub const SO_RCVBUFFORCE: u32 = 4107;
-pub const SO_ERROR: u32 = 4103;
-pub const SO_TYPE: u32 = 4104;
-pub const SO_PROTOCOL: u32 = 4136;
-pub const SO_DOMAIN: u32 = 4137;
-pub const SO_NO_CHECK: u32 = 11;
-pub const SO_PRIORITY: u32 = 12;
-pub const SO_BINDTODEVICE: u32 = 13;
-pub const SO_ATTACH_FILTER: u32 = 26;
-pub const SO_DETACH_FILTER: u32 = 27;
-pub const SO_GET_FILTER: u32 = 26;
-pub const SO_PEERNAME: u32 = 28;
-pub const SO_PEERSEC: u32 = 30;
-pub const SO_PASSSEC: u32 = 31;
-pub const SO_MARK: u32 = 34;
-pub const SO_RXQ_OVFL: u32 = 36;
-pub const SO_WIFI_STATUS: u32 = 37;
-pub const SCM_WIFI_STATUS: u32 = 37;
-pub const SO_PEEK_OFF: u32 = 38;
-pub const SO_NOFCS: u32 = 39;
-pub const SO_LOCK_FILTER: u32 = 40;
-pub const SO_SELECT_ERR_QUEUE: u32 = 41;
-pub const SO_BUSY_POLL: u32 = 48;
-pub const SO_MAX_PACING_RATE: u32 = 49;
-pub const SO_BPF_EXTENSIONS: u32 = 50;
-pub const SO_INCOMING_CPU: u32 = 51;
-pub const SO_ATTACH_BPF: u32 = 52;
-pub const SO_DETACH_BPF: u32 = 27;
-pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 53;
-pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 54;
-pub const SO_CNX_ADVICE: u32 = 55;
-pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 56;
-pub const SO_MEMINFO: u32 = 57;
-pub const SO_INCOMING_NAPI_ID: u32 = 58;
-pub const SO_COOKIE: u32 = 59;
-pub const SCM_TIMESTAMPING_PKTINFO: u32 = 60;
-pub const SO_PEERGROUPS: u32 = 61;
-pub const SO_ZEROCOPY: u32 = 62;
-pub const SO_TXTIME: u32 = 63;
-pub const SCM_TXTIME: u32 = 63;
-pub const SO_BINDTOIFINDEX: u32 = 65;
-pub const SO_SECURITY_AUTHENTICATION: u32 = 20481;
-pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 20482;
-pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 20484;
-pub const SO_TIMESTAMP_OLD: u32 = 29;
-pub const SO_TIMESTAMPNS_OLD: u32 = 33;
-pub const SO_TIMESTAMPING_OLD: u32 = 35;
-pub const SO_TIMESTAMP_NEW: u32 = 70;
-pub const SO_TIMESTAMPNS_NEW: u32 = 66;
-pub const SO_TIMESTAMPING_NEW: u32 = 67;
-pub const SO_RCVTIMEO_NEW: u32 = 68;
-pub const SO_SNDTIMEO_NEW: u32 = 69;
-pub const SO_DETACH_REUSEPORT_BPF: u32 = 71;
-pub const SO_PREFER_BUSY_POLL: u32 = 72;
-pub const SO_BUSY_POLL_BUDGET: u32 = 73;
-pub const SO_NETNS_COOKIE: u32 = 80;
-pub const SO_BUF_LOCK: u32 = 81;
-pub const SO_RESERVE_MEM: u32 = 82;
-pub const SO_TXREHASH: u32 = 83;
-pub const SO_RCVMARK: u32 = 84;
-pub const SO_TIMESTAMP: u32 = 29;
-pub const SO_TIMESTAMPNS: u32 = 33;
-pub const SO_TIMESTAMPING: u32 = 35;
-pub const SO_RCVTIMEO: u32 = 8192;
-pub const SO_SNDTIMEO: u32 = 16384;
-pub const SCM_TIMESTAMP: u32 = 29;
-pub const SCM_TIMESTAMPNS: u32 = 33;
-pub const SCM_TIMESTAMPING: u32 = 35;
-pub const SYS_SOCKET: u32 = 1;
-pub const SYS_BIND: u32 = 2;
-pub const SYS_CONNECT: u32 = 3;
-pub const SYS_LISTEN: u32 = 4;
-pub const SYS_ACCEPT: u32 = 5;
-pub const SYS_GETSOCKNAME: u32 = 6;
-pub const SYS_GETPEERNAME: u32 = 7;
-pub const SYS_SOCKETPAIR: u32 = 8;
-pub const SYS_SEND: u32 = 9;
-pub const SYS_RECV: u32 = 10;
-pub const SYS_SENDTO: u32 = 11;
-pub const SYS_RECVFROM: u32 = 12;
-pub const SYS_SHUTDOWN: u32 = 13;
-pub const SYS_SETSOCKOPT: u32 = 14;
-pub const SYS_GETSOCKOPT: u32 = 15;
-pub const SYS_SENDMSG: u32 = 16;
-pub const SYS_RECVMSG: u32 = 17;
-pub const SYS_ACCEPT4: u32 = 18;
-pub const SYS_RECVMMSG: u32 = 19;
-pub const SYS_SENDMMSG: u32 = 20;
-pub const __SO_ACCEPTCON: u32 = 65536;
-pub const POLLWRBAND: u32 = 256;
-pub const POLLMSG: u32 = 512;
-pub const POLLREMOVE: u32 = 1024;
-pub const POLLRDHUP: u32 = 2048;
-pub const POLLIN: u32 = 1;
-pub const POLLPRI: u32 = 2;
-pub const POLLOUT: u32 = 4;
-pub const POLLERR: u32 = 8;
-pub const POLLHUP: u32 = 16;
-pub const POLLNVAL: u32 = 32;
-pub const POLLRDNORM: u32 = 64;
-pub const POLLRDBAND: u32 = 128;
-pub const PR_SET_PDEATHSIG: u32 = 1;
-pub const PR_GET_PDEATHSIG: u32 = 2;
-pub const PR_GET_DUMPABLE: u32 = 3;
-pub const PR_SET_DUMPABLE: u32 = 4;
-pub const PR_GET_UNALIGN: u32 = 5;
-pub const PR_SET_UNALIGN: u32 = 6;
-pub const PR_UNALIGN_NOPRINT: u32 = 1;
-pub const PR_UNALIGN_SIGBUS: u32 = 2;
-pub const PR_GET_KEEPCAPS: u32 = 7;
-pub const PR_SET_KEEPCAPS: u32 = 8;
-pub const PR_GET_FPEMU: u32 = 9;
-pub const PR_SET_FPEMU: u32 = 10;
-pub const PR_FPEMU_NOPRINT: u32 = 1;
-pub const PR_FPEMU_SIGFPE: u32 = 2;
-pub const PR_GET_FPEXC: u32 = 11;
-pub const PR_SET_FPEXC: u32 = 12;
-pub const PR_FP_EXC_SW_ENABLE: u32 = 128;
-pub const PR_FP_EXC_DIV: u32 = 65536;
-pub const PR_FP_EXC_OVF: u32 = 131072;
-pub const PR_FP_EXC_UND: u32 = 262144;
-pub const PR_FP_EXC_RES: u32 = 524288;
-pub const PR_FP_EXC_INV: u32 = 1048576;
-pub const PR_FP_EXC_DISABLED: u32 = 0;
-pub const PR_FP_EXC_NONRECOV: u32 = 1;
-pub const PR_FP_EXC_ASYNC: u32 = 2;
-pub const PR_FP_EXC_PRECISE: u32 = 3;
-pub const PR_GET_TIMING: u32 = 13;
-pub const PR_SET_TIMING: u32 = 14;
-pub const PR_TIMING_STATISTICAL: u32 = 0;
-pub const PR_TIMING_TIMESTAMP: u32 = 1;
-pub const PR_SET_NAME: u32 = 15;
-pub const PR_GET_NAME: u32 = 16;
-pub const PR_GET_ENDIAN: u32 = 19;
-pub const PR_SET_ENDIAN: u32 = 20;
-pub const PR_ENDIAN_BIG: u32 = 0;
-pub const PR_ENDIAN_LITTLE: u32 = 1;
-pub const PR_ENDIAN_PPC_LITTLE: u32 = 2;
-pub const PR_GET_SECCOMP: u32 = 21;
-pub const PR_SET_SECCOMP: u32 = 22;
-pub const PR_CAPBSET_READ: u32 = 23;
-pub const PR_CAPBSET_DROP: u32 = 24;
-pub const PR_GET_TSC: u32 = 25;
-pub const PR_SET_TSC: u32 = 26;
-pub const PR_TSC_ENABLE: u32 = 1;
-pub const PR_TSC_SIGSEGV: u32 = 2;
-pub const PR_GET_SECUREBITS: u32 = 27;
-pub const PR_SET_SECUREBITS: u32 = 28;
-pub const PR_SET_TIMERSLACK: u32 = 29;
-pub const PR_GET_TIMERSLACK: u32 = 30;
-pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31;
-pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32;
-pub const PR_MCE_KILL: u32 = 33;
-pub const PR_MCE_KILL_CLEAR: u32 = 0;
-pub const PR_MCE_KILL_SET: u32 = 1;
-pub const PR_MCE_KILL_LATE: u32 = 0;
-pub const PR_MCE_KILL_EARLY: u32 = 1;
-pub const PR_MCE_KILL_DEFAULT: u32 = 2;
-pub const PR_MCE_KILL_GET: u32 = 34;
-pub const PR_SET_MM: u32 = 35;
-pub const PR_SET_MM_START_CODE: u32 = 1;
-pub const PR_SET_MM_END_CODE: u32 = 2;
-pub const PR_SET_MM_START_DATA: u32 = 3;
-pub const PR_SET_MM_END_DATA: u32 = 4;
-pub const PR_SET_MM_START_STACK: u32 = 5;
-pub const PR_SET_MM_START_BRK: u32 = 6;
-pub const PR_SET_MM_BRK: u32 = 7;
-pub const PR_SET_MM_ARG_START: u32 = 8;
-pub const PR_SET_MM_ARG_END: u32 = 9;
-pub const PR_SET_MM_ENV_START: u32 = 10;
-pub const PR_SET_MM_ENV_END: u32 = 11;
-pub const PR_SET_MM_AUXV: u32 = 12;
-pub const PR_SET_MM_EXE_FILE: u32 = 13;
-pub const PR_SET_MM_MAP: u32 = 14;
-pub const PR_SET_MM_MAP_SIZE: u32 = 15;
-pub const PR_SET_PTRACER: u32 = 1499557217;
-pub const PR_SET_CHILD_SUBREAPER: u32 = 36;
-pub const PR_GET_CHILD_SUBREAPER: u32 = 37;
-pub const PR_SET_NO_NEW_PRIVS: u32 = 38;
-pub const PR_GET_NO_NEW_PRIVS: u32 = 39;
-pub const PR_GET_TID_ADDRESS: u32 = 40;
-pub const PR_SET_THP_DISABLE: u32 = 41;
-pub const PR_GET_THP_DISABLE: u32 = 42;
-pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43;
-pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44;
-pub const PR_SET_FP_MODE: u32 = 45;
-pub const PR_GET_FP_MODE: u32 = 46;
-pub const PR_FP_MODE_FR: u32 = 1;
-pub const PR_FP_MODE_FRE: u32 = 2;
-pub const PR_CAP_AMBIENT: u32 = 47;
-pub const PR_CAP_AMBIENT_IS_SET: u32 = 1;
-pub const PR_CAP_AMBIENT_RAISE: u32 = 2;
-pub const PR_CAP_AMBIENT_LOWER: u32 = 3;
-pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4;
-pub const PR_SVE_SET_VL: u32 = 50;
-pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SVE_GET_VL: u32 = 51;
-pub const PR_SVE_VL_LEN_MASK: u32 = 65535;
-pub const PR_SVE_VL_INHERIT: u32 = 131072;
-pub const PR_GET_SPECULATION_CTRL: u32 = 52;
-pub const PR_SET_SPECULATION_CTRL: u32 = 53;
-pub const PR_SPEC_STORE_BYPASS: u32 = 0;
-pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1;
-pub const PR_SPEC_L1D_FLUSH: u32 = 2;
-pub const PR_SPEC_NOT_AFFECTED: u32 = 0;
-pub const PR_SPEC_PRCTL: u32 = 1;
-pub const PR_SPEC_ENABLE: u32 = 2;
-pub const PR_SPEC_DISABLE: u32 = 4;
-pub const PR_SPEC_FORCE_DISABLE: u32 = 8;
-pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16;
-pub const PR_PAC_RESET_KEYS: u32 = 54;
-pub const PR_PAC_APIAKEY: u32 = 1;
-pub const PR_PAC_APIBKEY: u32 = 2;
-pub const PR_PAC_APDAKEY: u32 = 4;
-pub const PR_PAC_APDBKEY: u32 = 8;
-pub const PR_PAC_APGAKEY: u32 = 16;
-pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55;
-pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56;
-pub const PR_TAGGED_ADDR_ENABLE: u32 = 1;
-pub const PR_MTE_TCF_NONE: u32 = 0;
-pub const PR_MTE_TCF_SYNC: u32 = 2;
-pub const PR_MTE_TCF_ASYNC: u32 = 4;
-pub const PR_MTE_TCF_MASK: u32 = 6;
-pub const PR_MTE_TAG_SHIFT: u32 = 3;
-pub const PR_MTE_TAG_MASK: u32 = 524280;
-pub const PR_MTE_TCF_SHIFT: u32 = 1;
-pub const PR_SET_IO_FLUSHER: u32 = 57;
-pub const PR_GET_IO_FLUSHER: u32 = 58;
-pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59;
-pub const PR_SYS_DISPATCH_OFF: u32 = 0;
-pub const PR_SYS_DISPATCH_ON: u32 = 1;
-pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0;
-pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1;
-pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60;
-pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61;
-pub const PR_SCHED_CORE: u32 = 62;
-pub const PR_SCHED_CORE_GET: u32 = 0;
-pub const PR_SCHED_CORE_CREATE: u32 = 1;
-pub const PR_SCHED_CORE_SHARE_TO: u32 = 2;
-pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3;
-pub const PR_SCHED_CORE_MAX: u32 = 4;
-pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0;
-pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1;
-pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2;
-pub const PR_SME_SET_VL: u32 = 63;
-pub const PR_SME_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SME_GET_VL: u32 = 64;
-pub const PR_SME_VL_LEN_MASK: u32 = 65535;
-pub const PR_SME_VL_INHERIT: u32 = 131072;
-pub const PR_SET_VMA: u32 = 1398164801;
-pub const PR_SET_VMA_ANON_NAME: u32 = 0;
-pub const GRND_NONBLOCK: u32 = 1;
-pub const GRND_RANDOM: u32 = 2;
-pub const GRND_INSECURE: u32 = 4;
-pub const ITIMER_REAL: u32 = 0;
-pub const ITIMER_VIRTUAL: u32 = 1;
-pub const ITIMER_PROF: u32 = 2;
-pub const CLOCK_REALTIME: u32 = 0;
-pub const CLOCK_MONOTONIC: u32 = 1;
-pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2;
-pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3;
-pub const CLOCK_MONOTONIC_RAW: u32 = 4;
-pub const CLOCK_REALTIME_COARSE: u32 = 5;
-pub const CLOCK_MONOTONIC_COARSE: u32 = 6;
-pub const CLOCK_BOOTTIME: u32 = 7;
-pub const CLOCK_REALTIME_ALARM: u32 = 8;
-pub const CLOCK_BOOTTIME_ALARM: u32 = 9;
-pub const CLOCK_SGI_CYCLE: u32 = 10;
-pub const CLOCK_TAI: u32 = 11;
-pub const MAX_CLOCKS: u32 = 16;
-pub const CLOCKS_MASK: u32 = 1;
-pub const CLOCKS_MONO: u32 = 1;
-pub const TIMER_ABSTIME: u32 = 1;
-pub const RUSAGE_SELF: u32 = 0;
-pub const RUSAGE_CHILDREN: i32 = -1;
-pub const RUSAGE_BOTH: i32 = -2;
-pub const RUSAGE_THREAD: u32 = 1;
-pub const RLIM64_INFINITY: i32 = -1;
-pub const PRIO_MIN: i32 = -20;
-pub const PRIO_MAX: u32 = 20;
-pub const PRIO_PROCESS: u32 = 0;
-pub const PRIO_PGRP: u32 = 1;
-pub const PRIO_USER: u32 = 2;
-pub const _STK_LIM: u32 = 8388608;
-pub const MLOCK_LIMIT: u32 = 8388608;
-pub const RLIMIT_NOFILE: u32 = 6;
-pub const RLIMIT_NPROC: u32 = 7;
-pub const RLIMIT_CPU: u32 = 0;
-pub const RLIMIT_FSIZE: u32 = 1;
-pub const RLIMIT_DATA: u32 = 2;
-pub const RLIMIT_STACK: u32 = 3;
-pub const RLIMIT_CORE: u32 = 4;
-pub const RLIMIT_RSS: u32 = 5;
-pub const RLIMIT_MEMLOCK: u32 = 8;
-pub const RLIMIT_AS: u32 = 9;
-pub const RLIMIT_LOCKS: u32 = 10;
-pub const RLIMIT_SIGPENDING: u32 = 11;
-pub const RLIMIT_MSGQUEUE: u32 = 12;
-pub const RLIMIT_NICE: u32 = 13;
-pub const RLIMIT_RTPRIO: u32 = 14;
-pub const RLIMIT_RTTIME: u32 = 15;
-pub const RLIM_NLIMITS: u32 = 16;
-pub const RLIM_INFINITY: i32 = -1;
-pub const CSIGNAL: u32 = 255;
-pub const CLONE_VM: u32 = 256;
-pub const CLONE_FS: u32 = 512;
-pub const CLONE_FILES: u32 = 1024;
-pub const CLONE_SIGHAND: u32 = 2048;
-pub const CLONE_PIDFD: u32 = 4096;
-pub const CLONE_PTRACE: u32 = 8192;
-pub const CLONE_VFORK: u32 = 16384;
-pub const CLONE_PARENT: u32 = 32768;
-pub const CLONE_THREAD: u32 = 65536;
-pub const CLONE_NEWNS: u32 = 131072;
-pub const CLONE_SYSVSEM: u32 = 262144;
-pub const CLONE_SETTLS: u32 = 524288;
-pub const CLONE_PARENT_SETTID: u32 = 1048576;
-pub const CLONE_CHILD_CLEARTID: u32 = 2097152;
-pub const CLONE_DETACHED: u32 = 4194304;
-pub const CLONE_UNTRACED: u32 = 8388608;
-pub const CLONE_CHILD_SETTID: u32 = 16777216;
-pub const CLONE_NEWCGROUP: u32 = 33554432;
-pub const CLONE_NEWUTS: u32 = 67108864;
-pub const CLONE_NEWIPC: u32 = 134217728;
-pub const CLONE_NEWUSER: u32 = 268435456;
-pub const CLONE_NEWPID: u32 = 536870912;
-pub const CLONE_NEWNET: u32 = 1073741824;
-pub const CLONE_IO: u32 = 2147483648;
-pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296;
-pub const CLONE_INTO_CGROUP: u64 = 8589934592;
-pub const CLONE_NEWTIME: u32 = 128;
-pub const CLONE_ARGS_SIZE_VER0: u32 = 64;
-pub const CLONE_ARGS_SIZE_VER1: u32 = 80;
-pub const CLONE_ARGS_SIZE_VER2: u32 = 88;
-pub const SCHED_NORMAL: u32 = 0;
-pub const SCHED_FIFO: u32 = 1;
-pub const SCHED_RR: u32 = 2;
-pub const SCHED_BATCH: u32 = 3;
-pub const SCHED_IDLE: u32 = 5;
-pub const SCHED_DEADLINE: u32 = 6;
-pub const SCHED_RESET_ON_FORK: u32 = 1073741824;
-pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1;
-pub const SCHED_FLAG_RECLAIM: u32 = 2;
-pub const SCHED_FLAG_DL_OVERRUN: u32 = 4;
-pub const SCHED_FLAG_KEEP_POLICY: u32 = 8;
-pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16;
-pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32;
-pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64;
-pub const SCHED_FLAG_KEEP_ALL: u32 = 24;
-pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96;
-pub const SCHED_FLAG_ALL: u32 = 127;
-pub const SIGHUP: u32 = 1;
-pub const SIGINT: u32 = 2;
-pub const SIGQUIT: u32 = 3;
-pub const SIGILL: u32 = 4;
-pub const SUBSIG_STACK: u32 = 0;
-pub const SUBSIG_ILLINST: u32 = 2;
-pub const SUBSIG_PRIVINST: u32 = 3;
-pub const SIGTRAP: u32 = 5;
-pub const SIGABRT: u32 = 6;
-pub const SIGIOT: u32 = 6;
-pub const SIGEMT: u32 = 7;
-pub const SUBSIG_TAG: u32 = 10;
-pub const SIGFPE: u32 = 8;
-pub const SUBSIG_FPDISABLED: u32 = 1024;
-pub const SUBSIG_FPERROR: u32 = 1028;
-pub const SUBSIG_FPINTOVFL: u32 = 1;
-pub const SUBSIG_FPSTSIG: u32 = 2;
-pub const SUBSIG_IDIVZERO: u32 = 20;
-pub const SUBSIG_FPINEXACT: u32 = 196;
-pub const SUBSIG_FPDIVZERO: u32 = 200;
-pub const SUBSIG_FPUNFLOW: u32 = 204;
-pub const SUBSIG_FPOPERROR: u32 = 208;
-pub const SUBSIG_FPOVFLOW: u32 = 212;
-pub const SIGKILL: u32 = 9;
-pub const SIGBUS: u32 = 10;
-pub const SUBSIG_BUSTIMEOUT: u32 = 1;
-pub const SUBSIG_ALIGNMENT: u32 = 2;
-pub const SUBSIG_MISCERROR: u32 = 5;
-pub const SIGSEGV: u32 = 11;
-pub const SUBSIG_NOMAPPING: u32 = 3;
-pub const SUBSIG_PROTECTION: u32 = 4;
-pub const SUBSIG_SEGERROR: u32 = 5;
-pub const SIGSYS: u32 = 12;
-pub const SIGPIPE: u32 = 13;
-pub const SIGALRM: u32 = 14;
-pub const SIGTERM: u32 = 15;
-pub const SIGURG: u32 = 16;
-pub const SIGSTOP: u32 = 17;
-pub const SIGTSTP: u32 = 18;
-pub const SIGCONT: u32 = 19;
-pub const SIGCHLD: u32 = 20;
-pub const SIGTTIN: u32 = 21;
-pub const SIGTTOU: u32 = 22;
-pub const SIGIO: u32 = 23;
-pub const SIGPOLL: u32 = 23;
-pub const SIGXCPU: u32 = 24;
-pub const SIGXFSZ: u32 = 25;
-pub const SIGVTALRM: u32 = 26;
-pub const SIGPROF: u32 = 27;
-pub const SIGWINCH: u32 = 28;
-pub const SIGLOST: u32 = 29;
-pub const SIGPWR: u32 = 29;
-pub const SIGUSR1: u32 = 30;
-pub const SIGUSR2: u32 = 31;
-pub const __OLD_NSIG: u32 = 32;
-pub const __NEW_NSIG: u32 = 64;
-pub const _NSIG_BPW: u32 = 64;
-pub const _NSIG_WORDS: u32 = 1;
-pub const SIGRTMIN: u32 = 32;
-pub const SIGRTMAX: u32 = 64;
-pub const _NSIG: u32 = 32;
-pub const NSIG: u32 = 32;
-pub const _SV_SSTACK: u32 = 1;
-pub const _SV_INTR: u32 = 2;
-pub const _SV_RESET: u32 = 4;
-pub const _SV_IGNCHILD: u32 = 8;
-pub const SA_NOCLDSTOP: u32 = 8;
-pub const SA_STACK: u32 = 1;
-pub const SA_ONSTACK: u32 = 1;
-pub const SA_RESTART: u32 = 2;
-pub const SA_RESETHAND: u32 = 4;
-pub const SA_NODEFER: u32 = 32;
-pub const SA_NOCLDWAIT: u32 = 256;
-pub const SA_SIGINFO: u32 = 512;
-pub const SIG_BLOCK: u32 = 1;
-pub const SIG_UNBLOCK: u32 = 2;
-pub const SIG_SETMASK: u32 = 4;
-pub const MINSIGSTKSZ: u32 = 4096;
-pub const SIGSTKSZ: u32 = 16384;
-pub const SA_UNSUPPORTED: u32 = 1024;
-pub const SA_EXPOSE_TAGBITS: u32 = 2048;
-pub const SA_NOMASK: u32 = 32;
-pub const SA_ONESHOT: u32 = 4;
-pub const SI_MAX_SIZE: u32 = 128;
-pub const SI_USER: u32 = 0;
-pub const SI_KERNEL: u32 = 128;
-pub const SI_QUEUE: i32 = -1;
-pub const SI_TIMER: i32 = -2;
-pub const SI_MESGQ: i32 = -3;
-pub const SI_ASYNCIO: i32 = -4;
-pub const SI_SIGIO: i32 = -5;
-pub const SI_TKILL: i32 = -6;
-pub const SI_DETHREAD: i32 = -7;
-pub const SI_ASYNCNL: i32 = -60;
-pub const ILL_ILLOPC: u32 = 1;
-pub const ILL_ILLOPN: u32 = 2;
-pub const ILL_ILLADR: u32 = 3;
-pub const ILL_ILLTRP: u32 = 4;
-pub const ILL_PRVOPC: u32 = 5;
-pub const ILL_PRVREG: u32 = 6;
-pub const ILL_COPROC: u32 = 7;
-pub const ILL_BADSTK: u32 = 8;
-pub const ILL_BADIADDR: u32 = 9;
-pub const __ILL_BREAK: u32 = 10;
-pub const __ILL_BNDMOD: u32 = 11;
-pub const NSIGILL: u32 = 11;
-pub const FPE_INTDIV: u32 = 1;
-pub const FPE_INTOVF: u32 = 2;
-pub const FPE_FLTDIV: u32 = 3;
-pub const FPE_FLTOVF: u32 = 4;
-pub const FPE_FLTUND: u32 = 5;
-pub const FPE_FLTRES: u32 = 6;
-pub const FPE_FLTINV: u32 = 7;
-pub const FPE_FLTSUB: u32 = 8;
-pub const __FPE_DECOVF: u32 = 9;
-pub const __FPE_DECDIV: u32 = 10;
-pub const __FPE_DECERR: u32 = 11;
-pub const __FPE_INVASC: u32 = 12;
-pub const __FPE_INVDEC: u32 = 13;
-pub const FPE_FLTUNK: u32 = 14;
-pub const FPE_CONDTRAP: u32 = 15;
-pub const NSIGFPE: u32 = 15;
-pub const SEGV_MAPERR: u32 = 1;
-pub const SEGV_ACCERR: u32 = 2;
-pub const SEGV_BNDERR: u32 = 3;
-pub const SEGV_PKUERR: u32 = 4;
-pub const SEGV_ACCADI: u32 = 5;
-pub const SEGV_ADIDERR: u32 = 6;
-pub const SEGV_ADIPERR: u32 = 7;
-pub const SEGV_MTEAERR: u32 = 8;
-pub const SEGV_MTESERR: u32 = 9;
-pub const NSIGSEGV: u32 = 9;
-pub const BUS_ADRALN: u32 = 1;
-pub const BUS_ADRERR: u32 = 2;
-pub const BUS_OBJERR: u32 = 3;
-pub const BUS_MCEERR_AR: u32 = 4;
-pub const BUS_MCEERR_AO: u32 = 5;
-pub const NSIGBUS: u32 = 5;
-pub const TRAP_BRKPT: u32 = 1;
-pub const TRAP_TRACE: u32 = 2;
-pub const TRAP_BRANCH: u32 = 3;
-pub const TRAP_HWBKPT: u32 = 4;
-pub const TRAP_UNK: u32 = 5;
-pub const TRAP_PERF: u32 = 6;
-pub const NSIGTRAP: u32 = 6;
-pub const TRAP_PERF_FLAG_ASYNC: u32 = 1;
-pub const CLD_EXITED: u32 = 1;
-pub const CLD_KILLED: u32 = 2;
-pub const CLD_DUMPED: u32 = 3;
-pub const CLD_TRAPPED: u32 = 4;
-pub const CLD_STOPPED: u32 = 5;
-pub const CLD_CONTINUED: u32 = 6;
-pub const NSIGCHLD: u32 = 6;
-pub const POLL_IN: u32 = 1;
-pub const POLL_OUT: u32 = 2;
-pub const POLL_MSG: u32 = 3;
-pub const POLL_ERR: u32 = 4;
-pub const POLL_PRI: u32 = 5;
-pub const POLL_HUP: u32 = 6;
-pub const NSIGPOLL: u32 = 6;
-pub const SYS_SECCOMP: u32 = 1;
-pub const SYS_USER_DISPATCH: u32 = 2;
-pub const NSIGSYS: u32 = 2;
-pub const EMT_TAGOVF: u32 = 1;
-pub const NSIGEMT: u32 = 1;
-pub const SIGEV_SIGNAL: u32 = 0;
-pub const SIGEV_NONE: u32 = 1;
-pub const SIGEV_THREAD: u32 = 2;
-pub const SIGEV_THREAD_ID: u32 = 4;
-pub const SIGEV_MAX_SIZE: u32 = 64;
-pub const SI_NOINFO: u32 = 32767;
-pub const SS_ONSTACK: u32 = 1;
-pub const SS_DISABLE: u32 = 2;
-pub const SS_AUTODISARM: u32 = 2147483648;
-pub const SS_FLAG_BITS: u32 = 2147483648;
-pub const S_IFMT: u32 = 61440;
-pub const S_IFSOCK: u32 = 49152;
-pub const S_IFLNK: u32 = 40960;
-pub const S_IFREG: u32 = 32768;
-pub const S_IFBLK: u32 = 24576;
-pub const S_IFDIR: u32 = 16384;
-pub const S_IFCHR: u32 = 8192;
-pub const S_IFIFO: u32 = 4096;
-pub const S_ISUID: u32 = 2048;
-pub const S_ISGID: u32 = 1024;
-pub const S_ISVTX: u32 = 512;
-pub const S_IRWXU: u32 = 448;
-pub const S_IRUSR: u32 = 256;
-pub const S_IWUSR: u32 = 128;
-pub const S_IXUSR: u32 = 64;
-pub const S_IRWXG: u32 = 56;
-pub const S_IRGRP: u32 = 32;
-pub const S_IWGRP: u32 = 16;
-pub const S_IXGRP: u32 = 8;
-pub const S_IRWXO: u32 = 7;
-pub const S_IROTH: u32 = 4;
-pub const S_IWOTH: u32 = 2;
-pub const S_IXOTH: u32 = 1;
-pub const STATX_TYPE: u32 = 1;
-pub const STATX_MODE: u32 = 2;
-pub const STATX_NLINK: u32 = 4;
-pub const STATX_UID: u32 = 8;
-pub const STATX_GID: u32 = 16;
-pub const STATX_ATIME: u32 = 32;
-pub const STATX_MTIME: u32 = 64;
-pub const STATX_CTIME: u32 = 128;
-pub const STATX_INO: u32 = 256;
-pub const STATX_SIZE: u32 = 512;
-pub const STATX_BLOCKS: u32 = 1024;
-pub const STATX_BASIC_STATS: u32 = 2047;
-pub const STATX_BTIME: u32 = 2048;
-pub const STATX_MNT_ID: u32 = 4096;
-pub const STATX_DIOALIGN: u32 = 8192;
-pub const STATX__RESERVED: u32 = 2147483648;
-pub const STATX_ALL: u32 = 4095;
-pub const STATX_ATTR_COMPRESSED: u32 = 4;
-pub const STATX_ATTR_IMMUTABLE: u32 = 16;
-pub const STATX_ATTR_APPEND: u32 = 32;
-pub const STATX_ATTR_NODUMP: u32 = 64;
-pub const STATX_ATTR_ENCRYPTED: u32 = 2048;
-pub const STATX_ATTR_AUTOMOUNT: u32 = 4096;
-pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192;
-pub const STATX_ATTR_VERITY: u32 = 1048576;
-pub const STATX_ATTR_DAX: u32 = 2097152;
-pub const SI_LOAD_SHIFT: u32 = 16;
-pub const TCP_MSS_DEFAULT: u32 = 536;
-pub const TCP_MSS_DESIRED: u32 = 1220;
-pub const TCP_NODELAY: u32 = 1;
-pub const TCP_MAXSEG: u32 = 2;
-pub const TCP_CORK: u32 = 3;
-pub const TCP_KEEPIDLE: u32 = 4;
-pub const TCP_KEEPINTVL: u32 = 5;
-pub const TCP_KEEPCNT: u32 = 6;
-pub const TCP_SYNCNT: u32 = 7;
-pub const TCP_LINGER2: u32 = 8;
-pub const TCP_DEFER_ACCEPT: u32 = 9;
-pub const TCP_WINDOW_CLAMP: u32 = 10;
-pub const TCP_INFO: u32 = 11;
-pub const TCP_QUICKACK: u32 = 12;
-pub const TCP_CONGESTION: u32 = 13;
-pub const TCP_MD5SIG: u32 = 14;
-pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16;
-pub const TCP_THIN_DUPACK: u32 = 17;
-pub const TCP_USER_TIMEOUT: u32 = 18;
-pub const TCP_REPAIR: u32 = 19;
-pub const TCP_REPAIR_QUEUE: u32 = 20;
-pub const TCP_QUEUE_SEQ: u32 = 21;
-pub const TCP_REPAIR_OPTIONS: u32 = 22;
-pub const TCP_FASTOPEN: u32 = 23;
-pub const TCP_TIMESTAMP: u32 = 24;
-pub const TCP_NOTSENT_LOWAT: u32 = 25;
-pub const TCP_CC_INFO: u32 = 26;
-pub const TCP_SAVE_SYN: u32 = 27;
-pub const TCP_SAVED_SYN: u32 = 28;
-pub const TCP_REPAIR_WINDOW: u32 = 29;
-pub const TCP_FASTOPEN_CONNECT: u32 = 30;
-pub const TCP_ULP: u32 = 31;
-pub const TCP_MD5SIG_EXT: u32 = 32;
-pub const TCP_FASTOPEN_KEY: u32 = 33;
-pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34;
-pub const TCP_ZEROCOPY_RECEIVE: u32 = 35;
-pub const TCP_INQ: u32 = 36;
-pub const TCP_CM_INQ: u32 = 36;
-pub const TCP_TX_DELAY: u32 = 37;
-pub const TCP_REPAIR_ON: u32 = 1;
-pub const TCP_REPAIR_OFF: u32 = 0;
-pub const TCP_REPAIR_OFF_NO_WP: i32 = -1;
-pub const TCPI_OPT_TIMESTAMPS: u32 = 1;
-pub const TCPI_OPT_SACK: u32 = 2;
-pub const TCPI_OPT_WSCALE: u32 = 4;
-pub const TCPI_OPT_ECN: u32 = 8;
-pub const TCPI_OPT_ECN_SEEN: u32 = 16;
-pub const TCPI_OPT_SYN_DATA: u32 = 32;
-pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80;
-pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
-pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
-pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
-pub const TIOCPKT_DATA: u32 = 0;
-pub const TIOCPKT_FLUSHREAD: u32 = 1;
-pub const TIOCPKT_FLUSHWRITE: u32 = 2;
-pub const TIOCPKT_STOP: u32 = 4;
-pub const TIOCPKT_START: u32 = 8;
-pub const TIOCPKT_NOSTOP: u32 = 16;
-pub const TIOCPKT_DOSTOP: u32 = 32;
-pub const TIOCPKT_IOCTL: u32 = 64;
-pub const IGNBRK: u32 = 1;
-pub const BRKINT: u32 = 2;
-pub const IGNPAR: u32 = 4;
-pub const PARMRK: u32 = 8;
-pub const INPCK: u32 = 16;
-pub const ISTRIP: u32 = 32;
-pub const INLCR: u32 = 64;
-pub const IGNCR: u32 = 128;
-pub const ICRNL: u32 = 256;
-pub const IXANY: u32 = 2048;
-pub const OPOST: u32 = 1;
-pub const OCRNL: u32 = 8;
-pub const ONOCR: u32 = 16;
-pub const ONLRET: u32 = 32;
-pub const OFILL: u32 = 64;
-pub const OFDEL: u32 = 128;
-pub const B0: u32 = 0;
-pub const B50: u32 = 1;
-pub const B75: u32 = 2;
-pub const B110: u32 = 3;
-pub const B134: u32 = 4;
-pub const B150: u32 = 5;
-pub const B200: u32 = 6;
-pub const B300: u32 = 7;
-pub const B600: u32 = 8;
-pub const B1200: u32 = 9;
-pub const B1800: u32 = 10;
-pub const B2400: u32 = 11;
-pub const B4800: u32 = 12;
-pub const B9600: u32 = 13;
-pub const B19200: u32 = 14;
-pub const B38400: u32 = 15;
-pub const EXTA: u32 = 14;
-pub const EXTB: u32 = 15;
-pub const ADDRB: u32 = 536870912;
-pub const CMSPAR: u32 = 1073741824;
-pub const CRTSCTS: u32 = 2147483648;
-pub const IBSHIFT: u32 = 16;
-pub const TCOOFF: u32 = 0;
-pub const TCOON: u32 = 1;
-pub const TCIOFF: u32 = 2;
-pub const TCION: u32 = 3;
-pub const TCIFLUSH: u32 = 0;
-pub const TCOFLUSH: u32 = 1;
-pub const TCIOFLUSH: u32 = 2;
-pub const NCC: u32 = 8;
-pub const NCCS: u32 = 17;
-pub const VINTR: u32 = 0;
-pub const VQUIT: u32 = 1;
-pub const VERASE: u32 = 2;
-pub const VKILL: u32 = 3;
-pub const VEOF: u32 = 4;
-pub const VEOL: u32 = 5;
-pub const VEOL2: u32 = 6;
-pub const VSWTC: u32 = 7;
-pub const VSTART: u32 = 8;
-pub const VSTOP: u32 = 9;
-pub const VSUSP: u32 = 10;
-pub const VDSUSP: u32 = 11;
-pub const VREPRINT: u32 = 12;
-pub const VDISCARD: u32 = 13;
-pub const VWERASE: u32 = 14;
-pub const VLNEXT: u32 = 15;
-pub const VMIN: u32 = 4;
-pub const VTIME: u32 = 5;
-pub const IUCLC: u32 = 512;
-pub const IXON: u32 = 1024;
-pub const IXOFF: u32 = 4096;
-pub const IMAXBEL: u32 = 8192;
-pub const IUTF8: u32 = 16384;
-pub const OLCUC: u32 = 2;
-pub const ONLCR: u32 = 4;
-pub const NLDLY: u32 = 256;
-pub const NL0: u32 = 0;
-pub const NL1: u32 = 256;
-pub const CRDLY: u32 = 1536;
-pub const CR0: u32 = 0;
-pub const CR1: u32 = 512;
-pub const CR2: u32 = 1024;
-pub const CR3: u32 = 1536;
-pub const TABDLY: u32 = 6144;
-pub const TAB0: u32 = 0;
-pub const TAB1: u32 = 2048;
-pub const TAB2: u32 = 4096;
-pub const TAB3: u32 = 6144;
-pub const XTABS: u32 = 6144;
-pub const BSDLY: u32 = 8192;
-pub const BS0: u32 = 0;
-pub const BS1: u32 = 8192;
-pub const VTDLY: u32 = 16384;
-pub const VT0: u32 = 0;
-pub const VT1: u32 = 16384;
-pub const FFDLY: u32 = 32768;
-pub const FF0: u32 = 0;
-pub const FF1: u32 = 32768;
-pub const PAGEOUT: u32 = 65536;
-pub const WRAP: u32 = 131072;
-pub const CBAUD: u32 = 4111;
-pub const CSIZE: u32 = 48;
-pub const CS5: u32 = 0;
-pub const CS6: u32 = 16;
-pub const CS7: u32 = 32;
-pub const CS8: u32 = 48;
-pub const CSTOPB: u32 = 64;
-pub const CREAD: u32 = 128;
-pub const PARENB: u32 = 256;
-pub const PARODD: u32 = 512;
-pub const HUPCL: u32 = 1024;
-pub const CLOCAL: u32 = 2048;
-pub const CBAUDEX: u32 = 4096;
-pub const BOTHER: u32 = 4096;
-pub const B57600: u32 = 4097;
-pub const B115200: u32 = 4098;
-pub const B230400: u32 = 4099;
-pub const B460800: u32 = 4100;
-pub const B76800: u32 = 4101;
-pub const B153600: u32 = 4102;
-pub const B307200: u32 = 4103;
-pub const B614400: u32 = 4104;
-pub const B921600: u32 = 4105;
-pub const B500000: u32 = 4106;
-pub const B576000: u32 = 4107;
-pub const B1000000: u32 = 4108;
-pub const B1152000: u32 = 4109;
-pub const B1500000: u32 = 4110;
-pub const B2000000: u32 = 4111;
-pub const CIBAUD: u32 = 269418496;
-pub const ISIG: u32 = 1;
-pub const ICANON: u32 = 2;
-pub const XCASE: u32 = 4;
-pub const ECHO: u32 = 8;
-pub const ECHOE: u32 = 16;
-pub const ECHOK: u32 = 32;
-pub const ECHONL: u32 = 64;
-pub const NOFLSH: u32 = 128;
-pub const TOSTOP: u32 = 256;
-pub const ECHOCTL: u32 = 512;
-pub const ECHOPRT: u32 = 1024;
-pub const ECHOKE: u32 = 2048;
-pub const DEFECHO: u32 = 4096;
-pub const FLUSHO: u32 = 8192;
-pub const PENDIN: u32 = 16384;
-pub const IEXTEN: u32 = 32768;
-pub const EXTPROC: u32 = 65536;
-pub const TIOCM_LE: u32 = 1;
-pub const TIOCM_DTR: u32 = 2;
-pub const TIOCM_RTS: u32 = 4;
-pub const TIOCM_ST: u32 = 8;
-pub const TIOCM_SR: u32 = 16;
-pub const TIOCM_CTS: u32 = 32;
-pub const TIOCM_CAR: u32 = 64;
-pub const TIOCM_RNG: u32 = 128;
-pub const TIOCM_DSR: u32 = 256;
-pub const TIOCM_CD: u32 = 64;
-pub const TIOCM_RI: u32 = 128;
-pub const TIOCM_OUT1: u32 = 8192;
-pub const TIOCM_OUT2: u32 = 16384;
-pub const TIOCM_LOOP: u32 = 32768;
-pub const TIOCSER_TEMT: u32 = 1;
-pub const TCSANOW: u32 = 0;
-pub const TCSADRAIN: u32 = 1;
-pub const TCSAFLUSH: u32 = 2;
-pub const UIO_FASTIOV: u32 = 8;
-pub const UIO_MAXIOV: u32 = 1024;
-pub const UNIX_PATH_MAX: u32 = 108;
-pub const __NR_restart_syscall: u32 = 0;
-pub const __NR_exit: u32 = 1;
-pub const __NR_fork: u32 = 2;
-pub const __NR_read: u32 = 3;
-pub const __NR_write: u32 = 4;
-pub const __NR_open: u32 = 5;
-pub const __NR_close: u32 = 6;
-pub const __NR_wait4: u32 = 7;
-pub const __NR_creat: u32 = 8;
-pub const __NR_link: u32 = 9;
-pub const __NR_unlink: u32 = 10;
-pub const __NR_execv: u32 = 11;
-pub const __NR_chdir: u32 = 12;
-pub const __NR_chown: u32 = 13;
-pub const __NR_mknod: u32 = 14;
-pub const __NR_chmod: u32 = 15;
-pub const __NR_lchown: u32 = 16;
-pub const __NR_brk: u32 = 17;
-pub const __NR_perfctr: u32 = 18;
-pub const __NR_lseek: u32 = 19;
-pub const __NR_getpid: u32 = 20;
-pub const __NR_capget: u32 = 21;
-pub const __NR_capset: u32 = 22;
-pub const __NR_setuid: u32 = 23;
-pub const __NR_getuid: u32 = 24;
-pub const __NR_vmsplice: u32 = 25;
-pub const __NR_ptrace: u32 = 26;
-pub const __NR_alarm: u32 = 27;
-pub const __NR_sigaltstack: u32 = 28;
-pub const __NR_pause: u32 = 29;
-pub const __NR_utime: u32 = 30;
-pub const __NR_access: u32 = 33;
-pub const __NR_nice: u32 = 34;
-pub const __NR_sync: u32 = 36;
-pub const __NR_kill: u32 = 37;
-pub const __NR_stat: u32 = 38;
-pub const __NR_sendfile: u32 = 39;
-pub const __NR_lstat: u32 = 40;
-pub const __NR_dup: u32 = 41;
-pub const __NR_pipe: u32 = 42;
-pub const __NR_times: u32 = 43;
-pub const __NR_umount2: u32 = 45;
-pub const __NR_setgid: u32 = 46;
-pub const __NR_getgid: u32 = 47;
-pub const __NR_signal: u32 = 48;
-pub const __NR_geteuid: u32 = 49;
-pub const __NR_getegid: u32 = 50;
-pub const __NR_acct: u32 = 51;
-pub const __NR_memory_ordering: u32 = 52;
-pub const __NR_ioctl: u32 = 54;
-pub const __NR_reboot: u32 = 55;
-pub const __NR_symlink: u32 = 57;
-pub const __NR_readlink: u32 = 58;
-pub const __NR_execve: u32 = 59;
-pub const __NR_umask: u32 = 60;
-pub const __NR_chroot: u32 = 61;
-pub const __NR_fstat: u32 = 62;
-pub const __NR_fstat64: u32 = 63;
-pub const __NR_getpagesize: u32 = 64;
-pub const __NR_msync: u32 = 65;
-pub const __NR_vfork: u32 = 66;
-pub const __NR_pread64: u32 = 67;
-pub const __NR_pwrite64: u32 = 68;
-pub const __NR_mmap: u32 = 71;
-pub const __NR_munmap: u32 = 73;
-pub const __NR_mprotect: u32 = 74;
-pub const __NR_madvise: u32 = 75;
-pub const __NR_vhangup: u32 = 76;
-pub const __NR_mincore: u32 = 78;
-pub const __NR_getgroups: u32 = 79;
-pub const __NR_setgroups: u32 = 80;
-pub const __NR_getpgrp: u32 = 81;
-pub const __NR_setitimer: u32 = 83;
-pub const __NR_swapon: u32 = 85;
-pub const __NR_getitimer: u32 = 86;
-pub const __NR_sethostname: u32 = 88;
-pub const __NR_dup2: u32 = 90;
-pub const __NR_fcntl: u32 = 92;
-pub const __NR_select: u32 = 93;
-pub const __NR_fsync: u32 = 95;
-pub const __NR_setpriority: u32 = 96;
-pub const __NR_socket: u32 = 97;
-pub const __NR_connect: u32 = 98;
-pub const __NR_accept: u32 = 99;
-pub const __NR_getpriority: u32 = 100;
-pub const __NR_rt_sigreturn: u32 = 101;
-pub const __NR_rt_sigaction: u32 = 102;
-pub const __NR_rt_sigprocmask: u32 = 103;
-pub const __NR_rt_sigpending: u32 = 104;
-pub const __NR_rt_sigtimedwait: u32 = 105;
-pub const __NR_rt_sigqueueinfo: u32 = 106;
-pub const __NR_rt_sigsuspend: u32 = 107;
-pub const __NR_setresuid: u32 = 108;
-pub const __NR_getresuid: u32 = 109;
-pub const __NR_setresgid: u32 = 110;
-pub const __NR_getresgid: u32 = 111;
-pub const __NR_recvmsg: u32 = 113;
-pub const __NR_sendmsg: u32 = 114;
-pub const __NR_gettimeofday: u32 = 116;
-pub const __NR_getrusage: u32 = 117;
-pub const __NR_getsockopt: u32 = 118;
-pub const __NR_getcwd: u32 = 119;
-pub const __NR_readv: u32 = 120;
-pub const __NR_writev: u32 = 121;
-pub const __NR_settimeofday: u32 = 122;
-pub const __NR_fchown: u32 = 123;
-pub const __NR_fchmod: u32 = 124;
-pub const __NR_recvfrom: u32 = 125;
-pub const __NR_setreuid: u32 = 126;
-pub const __NR_setregid: u32 = 127;
-pub const __NR_rename: u32 = 128;
-pub const __NR_truncate: u32 = 129;
-pub const __NR_ftruncate: u32 = 130;
-pub const __NR_flock: u32 = 131;
-pub const __NR_lstat64: u32 = 132;
-pub const __NR_sendto: u32 = 133;
-pub const __NR_shutdown: u32 = 134;
-pub const __NR_socketpair: u32 = 135;
-pub const __NR_mkdir: u32 = 136;
-pub const __NR_rmdir: u32 = 137;
-pub const __NR_utimes: u32 = 138;
-pub const __NR_stat64: u32 = 139;
-pub const __NR_sendfile64: u32 = 140;
-pub const __NR_getpeername: u32 = 141;
-pub const __NR_futex: u32 = 142;
-pub const __NR_gettid: u32 = 143;
-pub const __NR_getrlimit: u32 = 144;
-pub const __NR_setrlimit: u32 = 145;
-pub const __NR_pivot_root: u32 = 146;
-pub const __NR_prctl: u32 = 147;
-pub const __NR_pciconfig_read: u32 = 148;
-pub const __NR_pciconfig_write: u32 = 149;
-pub const __NR_getsockname: u32 = 150;
-pub const __NR_inotify_init: u32 = 151;
-pub const __NR_inotify_add_watch: u32 = 152;
-pub const __NR_poll: u32 = 153;
-pub const __NR_getdents64: u32 = 154;
-pub const __NR_inotify_rm_watch: u32 = 156;
-pub const __NR_statfs: u32 = 157;
-pub const __NR_fstatfs: u32 = 158;
-pub const __NR_umount: u32 = 159;
-pub const __NR_sched_set_affinity: u32 = 160;
-pub const __NR_sched_get_affinity: u32 = 161;
-pub const __NR_getdomainname: u32 = 162;
-pub const __NR_setdomainname: u32 = 163;
-pub const __NR_utrap_install: u32 = 164;
-pub const __NR_quotactl: u32 = 165;
-pub const __NR_set_tid_address: u32 = 166;
-pub const __NR_mount: u32 = 167;
-pub const __NR_ustat: u32 = 168;
-pub const __NR_setxattr: u32 = 169;
-pub const __NR_lsetxattr: u32 = 170;
-pub const __NR_fsetxattr: u32 = 171;
-pub const __NR_getxattr: u32 = 172;
-pub const __NR_lgetxattr: u32 = 173;
-pub const __NR_getdents: u32 = 174;
-pub const __NR_setsid: u32 = 175;
-pub const __NR_fchdir: u32 = 176;
-pub const __NR_fgetxattr: u32 = 177;
-pub const __NR_listxattr: u32 = 178;
-pub const __NR_llistxattr: u32 = 179;
-pub const __NR_flistxattr: u32 = 180;
-pub const __NR_removexattr: u32 = 181;
-pub const __NR_lremovexattr: u32 = 182;
-pub const __NR_sigpending: u32 = 183;
-pub const __NR_query_module: u32 = 184;
-pub const __NR_setpgid: u32 = 185;
-pub const __NR_fremovexattr: u32 = 186;
-pub const __NR_tkill: u32 = 187;
-pub const __NR_exit_group: u32 = 188;
-pub const __NR_uname: u32 = 189;
-pub const __NR_init_module: u32 = 190;
-pub const __NR_personality: u32 = 191;
-pub const __NR_remap_file_pages: u32 = 192;
-pub const __NR_epoll_create: u32 = 193;
-pub const __NR_epoll_ctl: u32 = 194;
-pub const __NR_epoll_wait: u32 = 195;
-pub const __NR_ioprio_set: u32 = 196;
-pub const __NR_getppid: u32 = 197;
-pub const __NR_sigaction: u32 = 198;
-pub const __NR_sgetmask: u32 = 199;
-pub const __NR_ssetmask: u32 = 200;
-pub const __NR_sigsuspend: u32 = 201;
-pub const __NR_oldlstat: u32 = 202;
-pub const __NR_uselib: u32 = 203;
-pub const __NR_readdir: u32 = 204;
-pub const __NR_readahead: u32 = 205;
-pub const __NR_socketcall: u32 = 206;
-pub const __NR_syslog: u32 = 207;
-pub const __NR_lookup_dcookie: u32 = 208;
-pub const __NR_fadvise64: u32 = 209;
-pub const __NR_fadvise64_64: u32 = 210;
-pub const __NR_tgkill: u32 = 211;
-pub const __NR_waitpid: u32 = 212;
-pub const __NR_swapoff: u32 = 213;
-pub const __NR_sysinfo: u32 = 214;
-pub const __NR_ipc: u32 = 215;
-pub const __NR_sigreturn: u32 = 216;
-pub const __NR_clone: u32 = 217;
-pub const __NR_ioprio_get: u32 = 218;
-pub const __NR_adjtimex: u32 = 219;
-pub const __NR_sigprocmask: u32 = 220;
-pub const __NR_create_module: u32 = 221;
-pub const __NR_delete_module: u32 = 222;
-pub const __NR_get_kernel_syms: u32 = 223;
-pub const __NR_getpgid: u32 = 224;
-pub const __NR_bdflush: u32 = 225;
-pub const __NR_sysfs: u32 = 226;
-pub const __NR_afs_syscall: u32 = 227;
-pub const __NR_setfsuid: u32 = 228;
-pub const __NR_setfsgid: u32 = 229;
-pub const __NR__newselect: u32 = 230;
-pub const __NR_splice: u32 = 232;
-pub const __NR_stime: u32 = 233;
-pub const __NR_statfs64: u32 = 234;
-pub const __NR_fstatfs64: u32 = 235;
-pub const __NR__llseek: u32 = 236;
-pub const __NR_mlock: u32 = 237;
-pub const __NR_munlock: u32 = 238;
-pub const __NR_mlockall: u32 = 239;
-pub const __NR_munlockall: u32 = 240;
-pub const __NR_sched_setparam: u32 = 241;
-pub const __NR_sched_getparam: u32 = 242;
-pub const __NR_sched_setscheduler: u32 = 243;
-pub const __NR_sched_getscheduler: u32 = 244;
-pub const __NR_sched_yield: u32 = 245;
-pub const __NR_sched_get_priority_max: u32 = 246;
-pub const __NR_sched_get_priority_min: u32 = 247;
-pub const __NR_sched_rr_get_interval: u32 = 248;
-pub const __NR_nanosleep: u32 = 249;
-pub const __NR_mremap: u32 = 250;
-pub const __NR__sysctl: u32 = 251;
-pub const __NR_getsid: u32 = 252;
-pub const __NR_fdatasync: u32 = 253;
-pub const __NR_nfsservctl: u32 = 254;
-pub const __NR_sync_file_range: u32 = 255;
-pub const __NR_clock_settime: u32 = 256;
-pub const __NR_clock_gettime: u32 = 257;
-pub const __NR_clock_getres: u32 = 258;
-pub const __NR_clock_nanosleep: u32 = 259;
-pub const __NR_sched_getaffinity: u32 = 260;
-pub const __NR_sched_setaffinity: u32 = 261;
-pub const __NR_timer_settime: u32 = 262;
-pub const __NR_timer_gettime: u32 = 263;
-pub const __NR_timer_getoverrun: u32 = 264;
-pub const __NR_timer_delete: u32 = 265;
-pub const __NR_timer_create: u32 = 266;
-pub const __NR_vserver: u32 = 267;
-pub const __NR_io_setup: u32 = 268;
-pub const __NR_io_destroy: u32 = 269;
-pub const __NR_io_submit: u32 = 270;
-pub const __NR_io_cancel: u32 = 271;
-pub const __NR_io_getevents: u32 = 272;
-pub const __NR_mq_open: u32 = 273;
-pub const __NR_mq_unlink: u32 = 274;
-pub const __NR_mq_timedsend: u32 = 275;
-pub const __NR_mq_timedreceive: u32 = 276;
-pub const __NR_mq_notify: u32 = 277;
-pub const __NR_mq_getsetattr: u32 = 278;
-pub const __NR_waitid: u32 = 279;
-pub const __NR_tee: u32 = 280;
-pub const __NR_add_key: u32 = 281;
-pub const __NR_request_key: u32 = 282;
-pub const __NR_keyctl: u32 = 283;
-pub const __NR_openat: u32 = 284;
-pub const __NR_mkdirat: u32 = 285;
-pub const __NR_mknodat: u32 = 286;
-pub const __NR_fchownat: u32 = 287;
-pub const __NR_futimesat: u32 = 288;
-pub const __NR_fstatat64: u32 = 289;
-pub const __NR_unlinkat: u32 = 290;
-pub const __NR_renameat: u32 = 291;
-pub const __NR_linkat: u32 = 292;
-pub const __NR_symlinkat: u32 = 293;
-pub const __NR_readlinkat: u32 = 294;
-pub const __NR_fchmodat: u32 = 295;
-pub const __NR_faccessat: u32 = 296;
-pub const __NR_pselect6: u32 = 297;
-pub const __NR_ppoll: u32 = 298;
-pub const __NR_unshare: u32 = 299;
-pub const __NR_set_robust_list: u32 = 300;
-pub const __NR_get_robust_list: u32 = 301;
-pub const __NR_migrate_pages: u32 = 302;
-pub const __NR_mbind: u32 = 303;
-pub const __NR_get_mempolicy: u32 = 304;
-pub const __NR_set_mempolicy: u32 = 305;
-pub const __NR_kexec_load: u32 = 306;
-pub const __NR_move_pages: u32 = 307;
-pub const __NR_getcpu: u32 = 308;
-pub const __NR_epoll_pwait: u32 = 309;
-pub const __NR_utimensat: u32 = 310;
-pub const __NR_signalfd: u32 = 311;
-pub const __NR_timerfd_create: u32 = 312;
-pub const __NR_eventfd: u32 = 313;
-pub const __NR_fallocate: u32 = 314;
-pub const __NR_timerfd_settime: u32 = 315;
-pub const __NR_timerfd_gettime: u32 = 316;
-pub const __NR_signalfd4: u32 = 317;
-pub const __NR_eventfd2: u32 = 318;
-pub const __NR_epoll_create1: u32 = 319;
-pub const __NR_dup3: u32 = 320;
-pub const __NR_pipe2: u32 = 321;
-pub const __NR_inotify_init1: u32 = 322;
-pub const __NR_accept4: u32 = 323;
-pub const __NR_preadv: u32 = 324;
-pub const __NR_pwritev: u32 = 325;
-pub const __NR_rt_tgsigqueueinfo: u32 = 326;
-pub const __NR_perf_event_open: u32 = 327;
-pub const __NR_recvmmsg: u32 = 328;
-pub const __NR_fanotify_init: u32 = 329;
-pub const __NR_fanotify_mark: u32 = 330;
-pub const __NR_prlimit64: u32 = 331;
-pub const __NR_name_to_handle_at: u32 = 332;
-pub const __NR_open_by_handle_at: u32 = 333;
-pub const __NR_clock_adjtime: u32 = 334;
-pub const __NR_syncfs: u32 = 335;
-pub const __NR_sendmmsg: u32 = 336;
-pub const __NR_setns: u32 = 337;
-pub const __NR_process_vm_readv: u32 = 338;
-pub const __NR_process_vm_writev: u32 = 339;
-pub const __NR_kern_features: u32 = 340;
-pub const __NR_kcmp: u32 = 341;
-pub const __NR_finit_module: u32 = 342;
-pub const __NR_sched_setattr: u32 = 343;
-pub const __NR_sched_getattr: u32 = 344;
-pub const __NR_renameat2: u32 = 345;
-pub const __NR_seccomp: u32 = 346;
-pub const __NR_getrandom: u32 = 347;
-pub const __NR_memfd_create: u32 = 348;
-pub const __NR_bpf: u32 = 349;
-pub const __NR_execveat: u32 = 350;
-pub const __NR_membarrier: u32 = 351;
-pub const __NR_userfaultfd: u32 = 352;
-pub const __NR_bind: u32 = 353;
-pub const __NR_listen: u32 = 354;
-pub const __NR_setsockopt: u32 = 355;
-pub const __NR_mlock2: u32 = 356;
-pub const __NR_copy_file_range: u32 = 357;
-pub const __NR_preadv2: u32 = 358;
-pub const __NR_pwritev2: u32 = 359;
-pub const __NR_statx: u32 = 360;
-pub const __NR_io_pgetevents: u32 = 361;
-pub const __NR_pkey_mprotect: u32 = 362;
-pub const __NR_pkey_alloc: u32 = 363;
-pub const __NR_pkey_free: u32 = 364;
-pub const __NR_rseq: u32 = 365;
-pub const __NR_semtimedop: u32 = 392;
-pub const __NR_semget: u32 = 393;
-pub const __NR_semctl: u32 = 394;
-pub const __NR_shmget: u32 = 395;
-pub const __NR_shmctl: u32 = 396;
-pub const __NR_shmat: u32 = 397;
-pub const __NR_shmdt: u32 = 398;
-pub const __NR_msgget: u32 = 399;
-pub const __NR_msgsnd: u32 = 400;
-pub const __NR_msgrcv: u32 = 401;
-pub const __NR_msgctl: u32 = 402;
-pub const __NR_pidfd_send_signal: u32 = 424;
-pub const __NR_io_uring_setup: u32 = 425;
-pub const __NR_io_uring_enter: u32 = 426;
-pub const __NR_io_uring_register: u32 = 427;
-pub const __NR_open_tree: u32 = 428;
-pub const __NR_move_mount: u32 = 429;
-pub const __NR_fsopen: u32 = 430;
-pub const __NR_fsconfig: u32 = 431;
-pub const __NR_fsmount: u32 = 432;
-pub const __NR_fspick: u32 = 433;
-pub const __NR_pidfd_open: u32 = 434;
-pub const __NR_close_range: u32 = 436;
-pub const __NR_openat2: u32 = 437;
-pub const __NR_pidfd_getfd: u32 = 438;
-pub const __NR_faccessat2: u32 = 439;
-pub const __NR_process_madvise: u32 = 440;
-pub const __NR_epoll_pwait2: u32 = 441;
-pub const __NR_mount_setattr: u32 = 442;
-pub const __NR_quotactl_fd: u32 = 443;
-pub const __NR_landlock_create_ruleset: u32 = 444;
-pub const __NR_landlock_add_rule: u32 = 445;
-pub const __NR_landlock_restrict_self: u32 = 446;
-pub const __NR_process_mrelease: u32 = 448;
-pub const __NR_futex_waitv: u32 = 449;
-pub const __NR_set_mempolicy_home_node: u32 = 450;
-pub const KERN_FEATURE_MIXED_MODE_STACK: u32 = 1;
-pub const __OLD_UTS_LEN: u32 = 8;
-pub const __NEW_UTS_LEN: u32 = 64;
-pub const WNOHANG: u32 = 1;
-pub const WUNTRACED: u32 = 2;
-pub const WSTOPPED: u32 = 2;
-pub const WEXITED: u32 = 4;
-pub const WCONTINUED: u32 = 8;
-pub const WNOWAIT: u32 = 16777216;
-pub const __WNOTHREAD: u32 = 536870912;
-pub const __WALL: u32 = 1073741824;
-pub const __WCLONE: u32 = 2147483648;
-pub const P_ALL: u32 = 0;
-pub const P_PID: u32 = 1;
-pub const P_PGID: u32 = 2;
-pub const P_PIDFD: u32 = 3;
-pub const XATTR_CREATE: u32 = 1;
-pub const XATTR_REPLACE: u32 = 2;
-pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0";
-pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0";
-pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0";
-pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0";
-pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0";
-pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0";
-pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0";
-pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0";
-pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0";
-pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0";
-pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0";
-pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0";
-pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0";
-pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0";
-pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0";
-pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0";
-pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0";
-pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0";
-pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0";
-pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0";
-pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0";
-pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0";
-pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0";
-pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0";
-pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0";
-pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0";
-pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0";
-pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0";
-pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0";
-pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0";
-pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0";
-pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0";
-pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0";
-pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0";
-pub const MFD_CLOEXEC: u32 = 1;
-pub const MFD_ALLOW_SEALING: u32 = 2;
-pub const MFD_HUGETLB: u32 = 4;
-pub const MFD_HUGE_SHIFT: u32 = 26;
-pub const MFD_HUGE_MASK: u32 = 63;
-pub const MFD_HUGE_64KB: u32 = 1073741824;
-pub const MFD_HUGE_512KB: u32 = 1275068416;
-pub const MFD_HUGE_1MB: u32 = 1342177280;
-pub const MFD_HUGE_2MB: u32 = 1409286144;
-pub const MFD_HUGE_8MB: u32 = 1543503872;
-pub const MFD_HUGE_16MB: u32 = 1610612736;
-pub const MFD_HUGE_32MB: u32 = 1677721600;
-pub const MFD_HUGE_256MB: u32 = 1879048192;
-pub const MFD_HUGE_512MB: u32 = 1946157056;
-pub const MFD_HUGE_1GB: u32 = 2013265920;
-pub const MFD_HUGE_2GB: u32 = 2080374784;
-pub const MFD_HUGE_16GB: u32 = 2281701376;
-pub const TFD_TIMER_ABSTIME: u32 = 1;
-pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2;
-pub const TFD_CLOEXEC: u32 = 4194304;
-pub const TFD_NONBLOCK: u32 = 16384;
-pub const USERFAULTFD_IOC: u32 = 170;
-pub const _UFFDIO_REGISTER: u32 = 0;
-pub const _UFFDIO_UNREGISTER: u32 = 1;
-pub const _UFFDIO_WAKE: u32 = 2;
-pub const _UFFDIO_COPY: u32 = 3;
-pub const _UFFDIO_ZEROPAGE: u32 = 4;
-pub const _UFFDIO_WRITEPROTECT: u32 = 6;
-pub const _UFFDIO_CONTINUE: u32 = 7;
-pub const _UFFDIO_API: u32 = 63;
-pub const UFFDIO: u32 = 170;
-pub const UFFD_EVENT_PAGEFAULT: u32 = 18;
-pub const UFFD_EVENT_FORK: u32 = 19;
-pub const UFFD_EVENT_REMAP: u32 = 20;
-pub const UFFD_EVENT_REMOVE: u32 = 21;
-pub const UFFD_EVENT_UNMAP: u32 = 22;
-pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1;
-pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2;
-pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4;
-pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1;
-pub const UFFD_FEATURE_EVENT_FORK: u32 = 2;
-pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4;
-pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8;
-pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16;
-pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32;
-pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64;
-pub const UFFD_FEATURE_SIGBUS: u32 = 128;
-pub const UFFD_FEATURE_THREAD_ID: u32 = 256;
-pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512;
-pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024;
-pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048;
-pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096;
-pub const UFFD_USER_MODE_ONLY: u32 = 1;
-pub const IORING_FILE_INDEX_ALLOC: i32 = -1;
-pub const IORING_SETUP_IOPOLL: u32 = 1;
-pub const IORING_SETUP_SQPOLL: u32 = 2;
-pub const IORING_SETUP_SQ_AFF: u32 = 4;
-pub const IORING_SETUP_CQSIZE: u32 = 8;
-pub const IORING_SETUP_CLAMP: u32 = 16;
-pub const IORING_SETUP_ATTACH_WQ: u32 = 32;
-pub const IORING_SETUP_R_DISABLED: u32 = 64;
-pub const IORING_SETUP_SUBMIT_ALL: u32 = 128;
-pub const IORING_SETUP_COOP_TASKRUN: u32 = 256;
-pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512;
-pub const IORING_SETUP_SQE128: u32 = 1024;
-pub const IORING_SETUP_CQE32: u32 = 2048;
-pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096;
-pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192;
-pub const IORING_URING_CMD_FIXED: u32 = 1;
-pub const IORING_FSYNC_DATASYNC: u32 = 1;
-pub const IORING_TIMEOUT_ABS: u32 = 1;
-pub const IORING_TIMEOUT_UPDATE: u32 = 2;
-pub const IORING_TIMEOUT_BOOTTIME: u32 = 4;
-pub const IORING_TIMEOUT_REALTIME: u32 = 8;
-pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16;
-pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32;
-pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12;
-pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18;
-pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648;
-pub const IORING_POLL_ADD_MULTI: u32 = 1;
-pub const IORING_POLL_UPDATE_EVENTS: u32 = 2;
-pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4;
-pub const IORING_POLL_ADD_LEVEL: u32 = 8;
-pub const IORING_ASYNC_CANCEL_ALL: u32 = 1;
-pub const IORING_ASYNC_CANCEL_FD: u32 = 2;
-pub const IORING_ASYNC_CANCEL_ANY: u32 = 4;
-pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8;
-pub const IORING_RECVSEND_POLL_FIRST: u32 = 1;
-pub const IORING_RECV_MULTISHOT: u32 = 2;
-pub const IORING_RECVSEND_FIXED_BUF: u32 = 4;
-pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8;
-pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648;
-pub const IORING_ACCEPT_MULTISHOT: u32 = 1;
-pub const IORING_MSG_RING_CQE_SKIP: u32 = 1;
-pub const IORING_CQE_F_BUFFER: u32 = 1;
-pub const IORING_CQE_F_MORE: u32 = 2;
-pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4;
-pub const IORING_CQE_F_NOTIF: u32 = 8;
-pub const IORING_OFF_SQ_RING: u32 = 0;
-pub const IORING_OFF_CQ_RING: u32 = 134217728;
-pub const IORING_OFF_SQES: u32 = 268435456;
-pub const IORING_SQ_NEED_WAKEUP: u32 = 1;
-pub const IORING_SQ_CQ_OVERFLOW: u32 = 2;
-pub const IORING_SQ_TASKRUN: u32 = 4;
-pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1;
-pub const IORING_ENTER_GETEVENTS: u32 = 1;
-pub const IORING_ENTER_SQ_WAKEUP: u32 = 2;
-pub const IORING_ENTER_SQ_WAIT: u32 = 4;
-pub const IORING_ENTER_EXT_ARG: u32 = 8;
-pub const IORING_ENTER_REGISTERED_RING: u32 = 16;
-pub const IORING_FEAT_SINGLE_MMAP: u32 = 1;
-pub const IORING_FEAT_NODROP: u32 = 2;
-pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4;
-pub const IORING_FEAT_RW_CUR_POS: u32 = 8;
-pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16;
-pub const IORING_FEAT_FAST_POLL: u32 = 32;
-pub const IORING_FEAT_POLL_32BITS: u32 = 64;
-pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128;
-pub const IORING_FEAT_EXT_ARG: u32 = 256;
-pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512;
-pub const IORING_FEAT_RSRC_TAGS: u32 = 1024;
-pub const IORING_FEAT_CQE_SKIP: u32 = 2048;
-pub const IORING_FEAT_LINKED_FILE: u32 = 4096;
-pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1;
-pub const IORING_REGISTER_FILES_SKIP: i32 = -2;
-pub const IO_URING_OP_SUPPORTED: u32 = 1;
-pub const DT_UNKNOWN: u32 = 0;
-pub const DT_FIFO: u32 = 1;
-pub const DT_CHR: u32 = 2;
-pub const DT_DIR: u32 = 4;
-pub const DT_BLK: u32 = 6;
-pub const DT_REG: u32 = 8;
-pub const DT_LNK: u32 = 10;
-pub const DT_SOCK: u32 = 12;
-pub const SHUT_RD: u32 = 0;
-pub const SHUT_WR: u32 = 1;
-pub const SHUT_RDWR: u32 = 2;
-pub const SOCK_STREAM: u32 = 1;
-pub const SOCK_DGRAM: u32 = 2;
-pub const SOCK_RAW: u32 = 3;
-pub const SOCK_RDM: u32 = 4;
-pub const SOCK_SEQPACKET: u32 = 5;
-pub const F_OK: u32 = 0;
-pub const R_OK: u32 = 4;
-pub const W_OK: u32 = 2;
-pub const X_OK: u32 = 1;
-pub const UTIME_NOW: u32 = 1073741823;
-pub const UTIME_OMIT: u32 = 1073741822;
-pub const MSG_DONTWAIT: u32 = 64;
-pub const AF_UNSPEC: u32 = 0;
-pub const AF_UNIX: u32 = 1;
-pub const AF_INET: u32 = 2;
-pub const AF_AX25: u32 = 3;
-pub const AF_IPX: u32 = 4;
-pub const AF_APPLETALK: u32 = 5;
-pub const AF_NETROM: u32 = 6;
-pub const AF_BRIDGE: u32 = 7;
-pub const AF_ATMPVC: u32 = 8;
-pub const AF_X25: u32 = 9;
-pub const AF_INET6: u32 = 10;
-pub const AF_ROSE: u32 = 11;
-pub const AF_DECnet: u32 = 12;
-pub const AF_NETBEUI: u32 = 13;
-pub const AF_SECURITY: u32 = 14;
-pub const AF_KEY: u32 = 15;
-pub const AF_NETLINK: u32 = 16;
-pub const AF_PACKET: u32 = 17;
-pub const AF_ASH: u32 = 18;
-pub const AF_ECONET: u32 = 19;
-pub const AF_ATMSVC: u32 = 20;
-pub const AF_RDS: u32 = 21;
-pub const AF_SNA: u32 = 22;
-pub const AF_IRDA: u32 = 23;
-pub const AF_PPPOX: u32 = 24;
-pub const AF_WANPIPE: u32 = 25;
-pub const AF_LLC: u32 = 26;
-pub const AF_CAN: u32 = 29;
-pub const AF_TIPC: u32 = 30;
-pub const AF_BLUETOOTH: u32 = 31;
-pub const AF_IUCV: u32 = 32;
-pub const AF_RXRPC: u32 = 33;
-pub const AF_ISDN: u32 = 34;
-pub const AF_PHONET: u32 = 35;
-pub const AF_IEEE802154: u32 = 36;
-pub const AF_MAX: u32 = 37;
-pub const MSG_OOB: u32 = 1;
-pub const MSG_PEEK: u32 = 2;
-pub const MSG_DONTROUTE: u32 = 4;
-pub const MSG_CTRUNC: u32 = 8;
-pub const MSG_PROBE: u32 = 16;
-pub const MSG_TRUNC: u32 = 32;
-pub const MSG_EOR: u32 = 128;
-pub const MSG_WAITALL: u32 = 256;
-pub const MSG_FIN: u32 = 512;
-pub const MSG_SYN: u32 = 1024;
-pub const MSG_CONFIRM: u32 = 2048;
-pub const MSG_RST: u32 = 4096;
-pub const MSG_ERRQUEUE: u32 = 8192;
-pub const MSG_NOSIGNAL: u32 = 16384;
-pub const MSG_MORE: u32 = 32768;
-pub const MSG_CMSG_CLOEXEC: u32 = 1073741824;
-pub const STDIN_FILENO: u32 = 0;
-pub const STDOUT_FILENO: u32 = 1;
-pub const STDERR_FILENO: u32 = 2;
-pub const RWF_HIPRI: u32 = 1;
-pub const RWF_DSYNC: u32 = 2;
-pub const RWF_SYNC: u32 = 4;
-pub const RWF_NOWAIT: u32 = 8;
-pub const RWF_APPEND: u32 = 16;
-pub const EFD_SEMAPHORE: u32 = 1;
-pub const EFD_CLOEXEC: u32 = 4194304;
-pub const EFD_NONBLOCK: u32 = 16384;
-pub const EPOLLIN: u32 = 1;
-pub const EPOLLPRI: u32 = 2;
-pub const EPOLLOUT: u32 = 4;
-pub const EPOLLERR: u32 = 8;
-pub const EPOLLHUP: u32 = 16;
-pub const EPOLLNVAL: u32 = 32;
-pub const EPOLLRDNORM: u32 = 64;
-pub const EPOLLRDBAND: u32 = 128;
-pub const EPOLLWRNORM: u32 = 256;
-pub const EPOLLWRBAND: u32 = 512;
-pub const EPOLLMSG: u32 = 1024;
-pub const EPOLLRDHUP: u32 = 8192;
-pub const EPOLLEXCLUSIVE: u32 = 268435456;
-pub const EPOLLWAKEUP: u32 = 536870912;
-pub const EPOLLONESHOT: u32 = 1073741824;
-pub const EPOLLET: u32 = 2147483648;
-pub const TFD_SHARED_FCNTL_FLAGS: u32 = 4210688;
-pub const TFD_CREATE_FLAGS: u32 = 4210688;
-pub const TFD_SETTIME_FLAGS: u32 = 1;
-pub const SCM_RIGHTS: u32 = 1;
-pub const SCM_CREDENTIALS: u32 = 2;
-pub const SCM_SECURITY: u32 = 3;
-pub const UFFD_API: u32 = 170;
-pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1;
-pub const UFFDIO_REGISTER_MODE_WP: u32 = 2;
-pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4;
-pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1;
-pub const UFFDIO_COPY_MODE_WP: u32 = 2;
-pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1;
-pub const SPLICE_F_MOVE: u32 = 1;
-pub const SPLICE_F_NONBLOCK: u32 = 2;
-pub const SPLICE_F_MORE: u32 = 4;
-pub const SPLICE_F_GIFT: u32 = 8;
-pub const MNT_FORCE: u32 = 1;
-pub const MNT_DETACH: u32 = 2;
-pub const MNT_EXPIRE: u32 = 4;
-pub const UMOUNT_NOFOLLOW: u32 = 8;
-pub const UMOUNT_UNUSED: u32 = 2147483648;
-pub type size_t = crate::ctypes::c_ulong;
-pub type ssize_t = crate::ctypes::c_long;
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 16usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_old_uid_t = crate::ctypes::c_ushort;
-pub type __kernel_old_gid_t = crate::ctypes::c_ushort;
-pub type __kernel_suseconds_t = crate::ctypes::c_int;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timeval {
-pub tv_sec: __kernel_long_t,
-pub tv_usec: __kernel_suseconds_t,
-}
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_dev_t = crate::ctypes::c_uint;
-pub type __kernel_size_t = __kernel_ulong_t;
-pub type __kernel_ssize_t = __kernel_long_t;
-pub type __kernel_ptrdiff_t = __kernel_long_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_header_struct {
-pub version: __u32,
-pub pid: crate::ctypes::c_int,
-}
-pub type cap_user_header_t = *mut __user_cap_header_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_data_struct {
-pub effective: __u32,
-pub permitted: __u32,
-pub inheritable: __u32,
-}
-pub type cap_user_data_t = *mut __user_cap_data_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_cap_data__bindgen_ty_1; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize],
-pub rootid: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct f_owner_ex {
-pub type_: crate::ctypes::c_int,
-pub pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_off_t,
-pub l_len: __kernel_off_t,
-pub l_pid: __kernel_pid_t,
-pub __unused: crate::ctypes::c_short,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock64 {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_loff_t,
-pub l_len: __kernel_loff_t,
-pub l_pid: __kernel_pid_t,
-pub __unused: crate::ctypes::c_short,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct open_how {
-pub flags: __u64,
-pub mode: __u64,
-pub resolve: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct epoll_event {
-pub events: __poll_t,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v1 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub master_key_descriptor: [__u8; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_key {
-pub mode: __u32,
-pub raw: [__u8; 64usize],
-pub size: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v2 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub __reserved: [__u8; 4usize],
-pub master_key_identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_policy_ex_arg {
-pub policy_size: __u64,
-pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 {
-pub version: __u8,
-pub v1: fscrypt_policy_v1,
-pub v2: fscrypt_policy_v2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_key_specifier {
-pub type_: __u32,
-pub __reserved: __u32,
-pub u: fscrypt_key_specifier__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_key_specifier__bindgen_ty_1 {
-pub __reserved: [__u8; 32usize],
-pub descriptor: [__u8; 8usize],
-pub identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct fscrypt_provisioning_key_payload {
-pub type_: __u32,
-pub __reserved: __u32,
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-pub struct fscrypt_add_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub raw_size: __u32,
-pub key_id: __u32,
-pub __reserved: [__u32; 8usize],
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_remove_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub removal_status_flags: __u32,
-pub __reserved: [__u32; 5usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_key_status_arg {
-pub key_spec: fscrypt_key_specifier,
-pub __reserved: [__u32; 6usize],
-pub status: __u32,
-pub status_flags: __u32,
-pub user_count: __u32,
-pub __out_reserved: [__u32; 13usize],
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum fsconfig_command {
-FSCONFIG_SET_FLAG = 0,
-FSCONFIG_SET_STRING = 1,
-FSCONFIG_SET_BINARY = 2,
-FSCONFIG_SET_PATH = 3,
-FSCONFIG_SET_PATH_EMPTY = 4,
-FSCONFIG_SET_FD = 5,
-FSCONFIG_CMD_CREATE = 6,
-FSCONFIG_CMD_RECONFIGURE = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mount_attr {
-pub attr_set: __u64,
-pub attr_clr: __u64,
-pub propagation: __u64,
-pub userns_fd: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_clone_range {
-pub src_fd: __s64,
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_offset: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fstrim_range {
-pub start: __u64,
-pub len: __u64,
-pub minlen: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_dedupe_range_info {
-pub dest_fd: __s64,
-pub dest_offset: __u64,
-pub bytes_deduped: __u64,
-pub status: __s32,
-pub reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct file_dedupe_range {
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_count: __u16,
-pub reserved1: __u16,
-pub reserved2: __u32,
-pub info: __IncompleteArrayField<file_dedupe_range_info>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct files_stat_struct {
-pub nr_files: crate::ctypes::c_ulong,
-pub nr_free_files: crate::ctypes::c_ulong,
-pub max_files: crate::ctypes::c_ulong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct inodes_stat_t {
-pub nr_inodes: crate::ctypes::c_long,
-pub nr_unused: crate::ctypes::c_long,
-pub dummy: [crate::ctypes::c_long; 5usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fsxattr {
-pub fsx_xflags: __u32,
-pub fsx_extsize: __u32,
-pub fsx_nextents: __u32,
-pub fsx_projid: __u32,
-pub fsx_cowextsize: __u32,
-pub fsx_pad: [crate::ctypes::c_uchar; 8usize],
-}
-pub type __kernel_rwf_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct futex_waitv {
-pub val: __u64,
-pub uaddr: __u64,
-pub flags: __u32,
-pub __reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list {
-pub next: *mut robust_list,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list_head {
-pub list: robust_list,
-pub futex_offset: crate::ctypes::c_long,
-pub list_op_pending: *mut robust_list,
-}
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP;
-pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP;
-pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP;
-pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP;
-pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP;
-pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP;
-pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP;
-pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP;
-pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP;
-pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP;
-pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP;
-pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6;
-pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP;
-pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE;
-pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP;
-pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH;
-pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP;
-pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH;
-pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP;
-pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM;
-pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP;
-pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP;
-pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP;
-pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE;
-pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS;
-pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET;
-pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW;
-pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP;
-pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-IPPROTO_IP = 0,
-IPPROTO_ICMP = 1,
-IPPROTO_IGMP = 2,
-IPPROTO_IPIP = 4,
-IPPROTO_TCP = 6,
-IPPROTO_EGP = 8,
-IPPROTO_PUP = 12,
-IPPROTO_UDP = 17,
-IPPROTO_IDP = 22,
-IPPROTO_TP = 29,
-IPPROTO_DCCP = 33,
-IPPROTO_IPV6 = 41,
-IPPROTO_RSVP = 46,
-IPPROTO_GRE = 47,
-IPPROTO_ESP = 50,
-IPPROTO_AH = 51,
-IPPROTO_MTP = 92,
-IPPROTO_BEETPH = 94,
-IPPROTO_ENCAP = 98,
-IPPROTO_PIM = 103,
-IPPROTO_COMP = 108,
-IPPROTO_L2TP = 115,
-IPPROTO_SCTP = 132,
-IPPROTO_UDPLITE = 136,
-IPPROTO_MPLS = 137,
-IPPROTO_ETHERNET = 143,
-IPPROTO_RAW = 255,
-IPPROTO_MPTCP = 262,
-IPPROTO_MAX = 263,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_addr {
-pub s_addr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq {
-pub imr_multiaddr: in_addr,
-pub imr_interface: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreqn {
-pub imr_multiaddr: in_addr,
-pub imr_address: in_addr,
-pub imr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq_source {
-pub imr_multiaddr: __be32,
-pub imr_interface: __be32,
-pub imr_sourceaddr: __be32,
-}
-#[repr(C)]
-pub struct ip_msfilter {
-pub imsf_multiaddr: __be32,
-pub imsf_interface: __be32,
-pub imsf_fmode: __u32,
-pub imsf_numsrc: __u32,
-pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct ip_msfilter__bindgen_ty_1 {
-pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>,
-pub __bindgen_anon_1: __BindgenUnionField<ip_msfilter__bindgen_ty_1__bindgen_ty_1>,
-pub bindgen_union_field: u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 {
-pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-pub imsf_slist_flex: __IncompleteArrayField<__be32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_req {
-pub gr_interface: __u32,
-pub gr_group: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_source_req {
-pub gsr_interface: __u32,
-pub gsr_group: __kernel_sockaddr_storage,
-pub gsr_source: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-pub struct group_filter {
-pub __bindgen_anon_1: group_filter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_1>,
-pub __bindgen_anon_2: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_2>,
-pub bindgen_union_field: [u64; 34usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_1 {
-pub gf_interface_aux: __u32,
-pub gf_group_aux: __kernel_sockaddr_storage,
-pub gf_fmode_aux: __u32,
-pub gf_numsrc_aux: __u32,
-pub gf_slist: [__kernel_sockaddr_storage; 1usize],
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_2 {
-pub gf_interface: __u32,
-pub gf_group: __kernel_sockaddr_storage,
-pub gf_fmode: __u32,
-pub gf_numsrc: __u32,
-pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_pktinfo {
-pub ipi_ifindex: crate::ctypes::c_int,
-pub ipi_spec_dst: in_addr,
-pub ipi_addr: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_in {
-pub sin_family: __kernel_sa_family_t,
-pub sin_port: __be16,
-pub sin_addr: in_addr,
-pub __pad: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct inotify_event {
-pub wd: __s32,
-pub mask: __u32,
-pub cookie: __u32,
-pub len: __u32,
-pub name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct iphdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub tos: __u8,
-pub tot_len: __be16,
-pub id: __be16,
-pub frag_off: __be16,
-pub ttl: __u8,
-pub protocol: __u8,
-pub check: __sum16,
-pub __bindgen_anon_1: iphdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union iphdr__bindgen_ty_1 {
-pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-impl iphdr {
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn ihl(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_ihl(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(version: __u8, ihl: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let ihl: u8 = unsafe { ::core::mem::transmute(ihl) };
-ihl as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_auth_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub reserved: __be16,
-pub spi: __be32,
-pub seq_no: __be32,
-pub auth_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_esp_hdr {
-pub spi: __be32,
-pub seq_no: __be32,
-pub enc_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_comp_hdr {
-pub nexthdr: __u8,
-pub flags: __u8,
-pub cpi: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_beet_phdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub padlen: __u8,
-pub reserved: __u8,
-}
-pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING;
-pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING;
-pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP;
-pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS;
-pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS;
-pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS;
-pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA;
-pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER;
-pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY;
-pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS;
-pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG;
-pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER;
-pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID;
-pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM;
-pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY;
-pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION;
-pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE;
-pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE;
-pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES;
-pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT;
-pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY;
-pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL;
-pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK;
-pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN;
-pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET;
-pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP;
-pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING;
-pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER;
-pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IPV4_DEVCONF_FORWARDING = 1,
-IPV4_DEVCONF_MC_FORWARDING = 2,
-IPV4_DEVCONF_PROXY_ARP = 3,
-IPV4_DEVCONF_ACCEPT_REDIRECTS = 4,
-IPV4_DEVCONF_SECURE_REDIRECTS = 5,
-IPV4_DEVCONF_SEND_REDIRECTS = 6,
-IPV4_DEVCONF_SHARED_MEDIA = 7,
-IPV4_DEVCONF_RP_FILTER = 8,
-IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9,
-IPV4_DEVCONF_BOOTP_RELAY = 10,
-IPV4_DEVCONF_LOG_MARTIANS = 11,
-IPV4_DEVCONF_TAG = 12,
-IPV4_DEVCONF_ARPFILTER = 13,
-IPV4_DEVCONF_MEDIUM_ID = 14,
-IPV4_DEVCONF_NOXFRM = 15,
-IPV4_DEVCONF_NOPOLICY = 16,
-IPV4_DEVCONF_FORCE_IGMP_VERSION = 17,
-IPV4_DEVCONF_ARP_ANNOUNCE = 18,
-IPV4_DEVCONF_ARP_IGNORE = 19,
-IPV4_DEVCONF_PROMOTE_SECONDARIES = 20,
-IPV4_DEVCONF_ARP_ACCEPT = 21,
-IPV4_DEVCONF_ARP_NOTIFY = 22,
-IPV4_DEVCONF_ACCEPT_LOCAL = 23,
-IPV4_DEVCONF_SRC_VMARK = 24,
-IPV4_DEVCONF_PROXY_ARP_PVLAN = 25,
-IPV4_DEVCONF_ROUTE_LOCALNET = 26,
-IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27,
-IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28,
-IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29,
-IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30,
-IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31,
-IPV4_DEVCONF_BC_FORWARDING = 32,
-IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33,
-__IPV4_DEVCONF_MAX = 34,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_addr {
-pub in6_u: in6_addr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union in6_addr__bindgen_ty_1 {
-pub u6_addr8: [__u8; 16usize],
-pub u6_addr16: [__be16; 8usize],
-pub u6_addr32: [__be32; 4usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr_in6 {
-pub sin6_family: crate::ctypes::c_ushort,
-pub sin6_port: __be16,
-pub sin6_flowinfo: __be32,
-pub sin6_addr: in6_addr,
-pub sin6_scope_id: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6_mreq {
-pub ipv6mr_multiaddr: in6_addr,
-pub ipv6mr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_flowlabel_req {
-pub flr_dst: in6_addr,
-pub flr_label: __be32,
-pub flr_action: __u8,
-pub flr_share: __u8,
-pub flr_flags: __u16,
-pub flr_expires: __u16,
-pub flr_linger: __u16,
-pub __flr_pad: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_pktinfo {
-pub ipi6_addr: in6_addr,
-pub ipi6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ip6_mtuinfo {
-pub ip6m_addr: sockaddr_in6,
-pub ip6m_mtu: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_ifreq {
-pub ifr6_addr: in6_addr,
-pub ifr6_prefixlen: __u32,
-pub ifr6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_rt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub type_: __u8,
-pub segments_left: __u8,
-}
-#[repr(C, packed)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_opt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-}
-#[repr(C)]
-pub struct rt0_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: __IncompleteArrayField<in6_addr>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rt2_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: in6_addr,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct ipv6_destopt_hao {
-pub type_: __u8,
-pub length: __u8,
-pub addr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub flow_lbl: [__u8; 3usize],
-pub payload_len: __be16,
-pub nexthdr: __u8,
-pub hop_limit: __u8,
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union ipv6hdr__bindgen_ty_1 {
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-impl ipv6hdr {
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn priority(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_priority(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(version: __u8, priority: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let priority: u8 = unsafe { ::core::mem::transmute(priority) };
-priority as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING;
-pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT;
-pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6;
-pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA;
-pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS;
-pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF;
-pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS;
-pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS;
-pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL;
-pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY;
-pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR;
-pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT;
-pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT;
-pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY;
-pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR;
-pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES;
-pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION;
-pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR;
-pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO;
-pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF;
-pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN;
-pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP;
-pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD;
-pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING;
-pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6;
-pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD;
-pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO;
-pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY;
-pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC;
-pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL;
-pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC;
-pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU;
-pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET;
-pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY;
-pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT;
-pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA;
-pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN;
-pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL;
-pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED;
-pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC;
-pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD;
-pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE;
-pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN;
-pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS;
-pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED;
-pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC;
-pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED;
-pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID;
-pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE;
-pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER;
-pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA;
-pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-DEVCONF_FORWARDING = 0,
-DEVCONF_HOPLIMIT = 1,
-DEVCONF_MTU6 = 2,
-DEVCONF_ACCEPT_RA = 3,
-DEVCONF_ACCEPT_REDIRECTS = 4,
-DEVCONF_AUTOCONF = 5,
-DEVCONF_DAD_TRANSMITS = 6,
-DEVCONF_RTR_SOLICITS = 7,
-DEVCONF_RTR_SOLICIT_INTERVAL = 8,
-DEVCONF_RTR_SOLICIT_DELAY = 9,
-DEVCONF_USE_TEMPADDR = 10,
-DEVCONF_TEMP_VALID_LFT = 11,
-DEVCONF_TEMP_PREFERED_LFT = 12,
-DEVCONF_REGEN_MAX_RETRY = 13,
-DEVCONF_MAX_DESYNC_FACTOR = 14,
-DEVCONF_MAX_ADDRESSES = 15,
-DEVCONF_FORCE_MLD_VERSION = 16,
-DEVCONF_ACCEPT_RA_DEFRTR = 17,
-DEVCONF_ACCEPT_RA_PINFO = 18,
-DEVCONF_ACCEPT_RA_RTR_PREF = 19,
-DEVCONF_RTR_PROBE_INTERVAL = 20,
-DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21,
-DEVCONF_PROXY_NDP = 22,
-DEVCONF_OPTIMISTIC_DAD = 23,
-DEVCONF_ACCEPT_SOURCE_ROUTE = 24,
-DEVCONF_MC_FORWARDING = 25,
-DEVCONF_DISABLE_IPV6 = 26,
-DEVCONF_ACCEPT_DAD = 27,
-DEVCONF_FORCE_TLLAO = 28,
-DEVCONF_NDISC_NOTIFY = 29,
-DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30,
-DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31,
-DEVCONF_SUPPRESS_FRAG_NDISC = 32,
-DEVCONF_ACCEPT_RA_FROM_LOCAL = 33,
-DEVCONF_USE_OPTIMISTIC = 34,
-DEVCONF_ACCEPT_RA_MTU = 35,
-DEVCONF_STABLE_SECRET = 36,
-DEVCONF_USE_OIF_ADDRS_ONLY = 37,
-DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38,
-DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39,
-DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40,
-DEVCONF_DROP_UNSOLICITED_NA = 41,
-DEVCONF_KEEP_ADDR_ON_DOWN = 42,
-DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43,
-DEVCONF_SEG6_ENABLED = 44,
-DEVCONF_SEG6_REQUIRE_HMAC = 45,
-DEVCONF_ENHANCED_DAD = 46,
-DEVCONF_ADDR_GEN_MODE = 47,
-DEVCONF_DISABLE_POLICY = 48,
-DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49,
-DEVCONF_NDISC_TCLASS = 50,
-DEVCONF_RPL_SEG_ENABLED = 51,
-DEVCONF_RA_DEFRTR_METRIC = 52,
-DEVCONF_IOAM6_ENABLED = 53,
-DEVCONF_IOAM6_ID = 54,
-DEVCONF_IOAM6_ID_WIDE = 55,
-DEVCONF_NDISC_EVICT_NOCARRIER = 56,
-DEVCONF_ACCEPT_UNTRACKED_NA = 57,
-DEVCONF_MAX = 58,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum socket_state {
-SS_FREE = 0,
-SS_UNCONNECTED = 1,
-SS_CONNECTING = 2,
-SS_CONNECTED = 3,
-SS_DISCONNECTING = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct pollfd {
-pub fd: crate::ctypes::c_int,
-pub events: crate::ctypes::c_short,
-pub revents: crate::ctypes::c_short,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prctl_mm_map {
-pub start_code: __u64,
-pub end_code: __u64,
-pub start_data: __u64,
-pub end_data: __u64,
-pub start_brk: __u64,
-pub brk: __u64,
-pub start_stack: __u64,
-pub arg_start: __u64,
-pub arg_end: __u64,
-pub env_start: __u64,
-pub env_end: __u64,
-pub auxv: *mut __u64,
-pub auxv_size: __u32,
-pub exe_fd: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rand_pool_info {
-pub entropy_count: crate::ctypes::c_int,
-pub buf_size: crate::ctypes::c_int,
-pub buf: __IncompleteArrayField<__u32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_timespec {
-pub tv_sec: __kernel_time64_t,
-pub tv_nsec: crate::ctypes::c_longlong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_itimerspec {
-pub it_interval: __kernel_timespec,
-pub it_value: __kernel_timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_itimerval {
-pub it_interval: __kernel_old_timeval,
-pub it_value: __kernel_old_timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sock_timeval {
-pub tv_sec: __s64,
-pub tv_usec: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timeval {
-pub tv_sec: __kernel_old_time_t,
-pub tv_usec: __kernel_suseconds_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerspec {
-pub it_interval: timespec,
-pub it_value: timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerval {
-pub it_interval: timeval,
-pub it_value: timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timezone {
-pub tz_minuteswest: crate::ctypes::c_int,
-pub tz_dsttime: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rusage {
-pub ru_utime: __kernel_old_timeval,
-pub ru_stime: __kernel_old_timeval,
-pub ru_maxrss: __kernel_long_t,
-pub ru_ixrss: __kernel_long_t,
-pub ru_idrss: __kernel_long_t,
-pub ru_isrss: __kernel_long_t,
-pub ru_minflt: __kernel_long_t,
-pub ru_majflt: __kernel_long_t,
-pub ru_nswap: __kernel_long_t,
-pub ru_inblock: __kernel_long_t,
-pub ru_oublock: __kernel_long_t,
-pub ru_msgsnd: __kernel_long_t,
-pub ru_msgrcv: __kernel_long_t,
-pub ru_nsignals: __kernel_long_t,
-pub ru_nvcsw: __kernel_long_t,
-pub ru_nivcsw: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit {
-pub rlim_cur: __kernel_ulong_t,
-pub rlim_max: __kernel_ulong_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit64 {
-pub rlim_cur: __u64,
-pub rlim_max: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct clone_args {
-pub flags: __u64,
-pub pidfd: __u64,
-pub child_tid: __u64,
-pub parent_tid: __u64,
-pub exit_signal: __u64,
-pub stack: __u64,
-pub stack_size: __u64,
-pub tls: __u64,
-pub set_tid: __u64,
-pub set_tid_size: __u64,
-pub cgroup: __u64,
-}
-pub type sigset_t = crate::ctypes::c_ulong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __new_sigset_t {
-pub sig: [crate::ctypes::c_ulong; 1usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigstack {
-pub the_stack: *mut crate::ctypes::c_char,
-pub cur_status: crate::ctypes::c_int,
-}
-pub type __signalfn_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __sighandler_t = __signalfn_t;
-pub type __restorefn_t = ::core::option::Option<unsafe extern "C" fn()>;
-pub type __sigrestore_t = __restorefn_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __new_sigaction {
-pub sa_handler: __sighandler_t,
-pub sa_flags: crate::ctypes::c_ulong,
-pub sa_restorer: __sigrestore_t,
-pub sa_mask: __new_sigset_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaction {
-pub sa_handler: __sighandler_t,
-pub sa_mask: sigset_t,
-pub sa_flags: crate::ctypes::c_ulong,
-pub sa_restorer: ::core::option::Option<unsafe extern "C" fn()>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaltstack {
-pub ss_sp: *mut crate::ctypes::c_void,
-pub ss_flags: crate::ctypes::c_int,
-pub ss_size: __kernel_size_t,
-}
-pub type stack_t = sigaltstack;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigval {
-pub sival_int: crate::ctypes::c_int,
-pub sival_ptr: *mut crate::ctypes::c_void,
-}
-pub type sigval_t = sigval;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields {
-pub _kill: __sifields__bindgen_ty_1,
-pub _timer: __sifields__bindgen_ty_2,
-pub _rt: __sifields__bindgen_ty_3,
-pub _sigchld: __sifields__bindgen_ty_4,
-pub _sigfault: __sifields__bindgen_ty_5,
-pub _sigpoll: __sifields__bindgen_ty_6,
-pub _sigsys: __sifields__bindgen_ty_7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_1 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_2 {
-pub _tid: __kernel_timer_t,
-pub _overrun: crate::ctypes::c_int,
-pub _sigval: sigval_t,
-pub _sys_private: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_3 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _sigval: sigval_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_4 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _status: crate::ctypes::c_int,
-pub _utime: __kernel_clock_t,
-pub _stime: __kernel_clock_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_5 {
-pub _addr: *mut crate::ctypes::c_void,
-pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields__bindgen_ty_5__bindgen_ty_1 {
-pub _trapno: crate::ctypes::c_int,
-pub _addr_lsb: crate::ctypes::c_short,
-pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1,
-pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2,
-pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {
-pub _dummy_bnd: [crate::ctypes::c_char; 8usize],
-pub _lower: *mut crate::ctypes::c_void,
-pub _upper: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 {
-pub _dummy_pkey: [crate::ctypes::c_char; 8usize],
-pub _pkey: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 {
-pub _data: crate::ctypes::c_ulong,
-pub _type: __u32,
-pub _flags: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_6 {
-pub _band: crate::ctypes::c_int,
-pub _fd: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_7 {
-pub _call_addr: *mut crate::ctypes::c_void,
-pub _syscall: crate::ctypes::c_int,
-pub _arch: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union siginfo__bindgen_ty_1 {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1,
-pub _si_pad: [crate::ctypes::c_int; 32usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo__bindgen_ty_1__bindgen_ty_1 {
-pub si_signo: crate::ctypes::c_int,
-pub si_errno: crate::ctypes::c_int,
-pub si_code: crate::ctypes::c_int,
-pub _sifields: __sifields,
-}
-pub type siginfo_t = siginfo;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sigevent {
-pub sigev_value: sigval_t,
-pub sigev_signo: crate::ctypes::c_int,
-pub sigev_notify: crate::ctypes::c_int,
-pub _sigev_un: sigevent__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigevent__bindgen_ty_1 {
-pub _pad: [crate::ctypes::c_int; 12usize],
-pub _tid: crate::ctypes::c_int,
-pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigevent__bindgen_ty_1__bindgen_ty_1 {
-pub _function: ::core::option::Option<unsafe extern "C" fn(arg1: sigval_t)>,
-pub _attribute: *mut crate::ctypes::c_void,
-}
-pub type sigevent_t = sigevent;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx_timestamp {
-pub tv_sec: __s64,
-pub tv_nsec: __u32,
-pub __reserved: __s32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx {
-pub stx_mask: __u32,
-pub stx_blksize: __u32,
-pub stx_attributes: __u64,
-pub stx_nlink: __u32,
-pub stx_uid: __u32,
-pub stx_gid: __u32,
-pub stx_mode: __u16,
-pub __spare0: [__u16; 1usize],
-pub stx_ino: __u64,
-pub stx_size: __u64,
-pub stx_blocks: __u64,
-pub stx_attributes_mask: __u64,
-pub stx_atime: statx_timestamp,
-pub stx_btime: statx_timestamp,
-pub stx_ctime: statx_timestamp,
-pub stx_mtime: statx_timestamp,
-pub stx_rdev_major: __u32,
-pub stx_rdev_minor: __u32,
-pub stx_dev_major: __u32,
-pub stx_dev_minor: __u32,
-pub stx_mnt_id: __u64,
-pub stx_dio_mem_align: __u32,
-pub stx_dio_offset_align: __u32,
-pub __spare3: [__u64; 12usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct sysinfo {
-pub uptime: __kernel_long_t,
-pub loads: [__kernel_ulong_t; 3usize],
-pub totalram: __kernel_ulong_t,
-pub freeram: __kernel_ulong_t,
-pub sharedram: __kernel_ulong_t,
-pub bufferram: __kernel_ulong_t,
-pub totalswap: __kernel_ulong_t,
-pub freeswap: __kernel_ulong_t,
-pub procs: __u16,
-pub pad: __u16,
-pub totalhigh: __kernel_ulong_t,
-pub freehigh: __kernel_ulong_t,
-pub mem_unit: __u32,
-pub _f: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcphdr {
-pub source: __be16,
-pub dest: __be16,
-pub seq: __be32,
-pub ack_seq: __be32,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub window: __be16,
-pub check: __sum16,
-pub urg_ptr: __be16,
-}
-impl tcphdr {
-#[inline]
-pub fn doff(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_doff(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn res1(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_res1(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn cwr(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_cwr(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ece(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ece(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn urg(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_urg(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(10usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ack(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ack(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(11usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn psh(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_psh(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(12usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn rst(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_rst(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(13usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn syn(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_syn(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(14usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn fin(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_fin(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(15usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(doff: __u16, res1: __u16, cwr: __u16, ece: __u16, urg: __u16, ack: __u16, psh: __u16, rst: __u16, syn: __u16, fin: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let doff: u16 = unsafe { ::core::mem::transmute(doff) };
-doff as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let res1: u16 = unsafe { ::core::mem::transmute(res1) };
-res1 as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let cwr: u16 = unsafe { ::core::mem::transmute(cwr) };
-cwr as u64
-});
-__bindgen_bitfield_unit.set(9usize, 1u8, {
-let ece: u16 = unsafe { ::core::mem::transmute(ece) };
-ece as u64
-});
-__bindgen_bitfield_unit.set(10usize, 1u8, {
-let urg: u16 = unsafe { ::core::mem::transmute(urg) };
-urg as u64
-});
-__bindgen_bitfield_unit.set(11usize, 1u8, {
-let ack: u16 = unsafe { ::core::mem::transmute(ack) };
-ack as u64
-});
-__bindgen_bitfield_unit.set(12usize, 1u8, {
-let psh: u16 = unsafe { ::core::mem::transmute(psh) };
-psh as u64
-});
-__bindgen_bitfield_unit.set(13usize, 1u8, {
-let rst: u16 = unsafe { ::core::mem::transmute(rst) };
-rst as u64
-});
-__bindgen_bitfield_unit.set(14usize, 1u8, {
-let syn: u16 = unsafe { ::core::mem::transmute(syn) };
-syn as u64
-});
-__bindgen_bitfield_unit.set(15usize, 1u8, {
-let fin: u16 = unsafe { ::core::mem::transmute(fin) };
-fin as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union tcp_word_hdr {
-pub hdr: tcphdr,
-pub words: [__be32; 5usize],
-}
-pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR;
-pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE;
-pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG;
-pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK;
-pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH;
-pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST;
-pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN;
-pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN;
-pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS;
-pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-TCP_FLAG_CWR = 8388608,
-TCP_FLAG_ECE = 4194304,
-TCP_FLAG_URG = 2097152,
-TCP_FLAG_ACK = 1048576,
-TCP_FLAG_PSH = 524288,
-TCP_FLAG_RST = 262144,
-TCP_FLAG_SYN = 131072,
-TCP_FLAG_FIN = 65536,
-TCP_RESERVED_BITS = 251658240,
-TCP_DATA_OFFSET = 4026531840,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_opt {
-pub opt_code: __u32,
-pub opt_val: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_window {
-pub snd_wl1: __u32,
-pub snd_wnd: __u32,
-pub max_window: __u32,
-pub rcv_wnd: __u32,
-pub rcv_wup: __u32,
-}
-pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE;
-pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE;
-pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE;
-pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-TCP_NO_QUEUE = 0,
-TCP_RECV_QUEUE = 1,
-TCP_SEND_QUEUE = 2,
-TCP_QUEUES_NR = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_fastopen_client_fail {
-TFO_STATUS_UNSPEC = 0,
-TFO_COOKIE_UNAVAILABLE = 1,
-TFO_DATA_NOT_ACKED = 2,
-TFO_SYN_RETRANSMITTED = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_ca_state {
-TCP_CA_Open = 0,
-TCP_CA_Disorder = 1,
-TCP_CA_CWR = 2,
-TCP_CA_Recovery = 3,
-TCP_CA_Loss = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_info {
-pub tcpi_state: __u8,
-pub tcpi_ca_state: __u8,
-pub tcpi_retransmits: __u8,
-pub tcpi_probes: __u8,
-pub tcpi_backoff: __u8,
-pub tcpi_options: __u8,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub tcpi_rto: __u32,
-pub tcpi_ato: __u32,
-pub tcpi_snd_mss: __u32,
-pub tcpi_rcv_mss: __u32,
-pub tcpi_unacked: __u32,
-pub tcpi_sacked: __u32,
-pub tcpi_lost: __u32,
-pub tcpi_retrans: __u32,
-pub tcpi_fackets: __u32,
-pub tcpi_last_data_sent: __u32,
-pub tcpi_last_ack_sent: __u32,
-pub tcpi_last_data_recv: __u32,
-pub tcpi_last_ack_recv: __u32,
-pub tcpi_pmtu: __u32,
-pub tcpi_rcv_ssthresh: __u32,
-pub tcpi_rtt: __u32,
-pub tcpi_rttvar: __u32,
-pub tcpi_snd_ssthresh: __u32,
-pub tcpi_snd_cwnd: __u32,
-pub tcpi_advmss: __u32,
-pub tcpi_reordering: __u32,
-pub tcpi_rcv_rtt: __u32,
-pub tcpi_rcv_space: __u32,
-pub tcpi_total_retrans: __u32,
-pub tcpi_pacing_rate: __u64,
-pub tcpi_max_pacing_rate: __u64,
-pub tcpi_bytes_acked: __u64,
-pub tcpi_bytes_received: __u64,
-pub tcpi_segs_out: __u32,
-pub tcpi_segs_in: __u32,
-pub tcpi_notsent_bytes: __u32,
-pub tcpi_min_rtt: __u32,
-pub tcpi_data_segs_in: __u32,
-pub tcpi_data_segs_out: __u32,
-pub tcpi_delivery_rate: __u64,
-pub tcpi_busy_time: __u64,
-pub tcpi_rwnd_limited: __u64,
-pub tcpi_sndbuf_limited: __u64,
-pub tcpi_delivered: __u32,
-pub tcpi_delivered_ce: __u32,
-pub tcpi_bytes_sent: __u64,
-pub tcpi_bytes_retrans: __u64,
-pub tcpi_dsack_dups: __u32,
-pub tcpi_reord_seen: __u32,
-pub tcpi_rcv_ooopack: __u32,
-pub tcpi_snd_wnd: __u32,
-pub tcpi_rcv_wnd: __u32,
-pub tcpi_rehash: __u32,
-}
-impl tcp_info {
-#[inline]
-pub fn tcpi_snd_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_snd_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_rcv_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_fastopen_client_fail(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) };
-tcpi_snd_wscale as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) };
-tcpi_rcv_wscale as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) };
-tcpi_delivery_rate_app_limited as u64
-});
-__bindgen_bitfield_unit.set(9usize, 2u8, {
-let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) };
-tcpi_fastopen_client_fail as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD;
-pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY;
-pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED;
-pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED;
-pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT;
-pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS;
-pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE;
-pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE;
-pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND;
-pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING;
-pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT;
-pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS;
-pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT;
-pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE;
-pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE;
-pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH;
-pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED;
-pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE;
-pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT;
-pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS;
-pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS;
-pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN;
-pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT;
-pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH;
-pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT;
-pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
-pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
-pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-TCP_NLA_PAD = 0,
-TCP_NLA_BUSY = 1,
-TCP_NLA_RWND_LIMITED = 2,
-TCP_NLA_SNDBUF_LIMITED = 3,
-TCP_NLA_DATA_SEGS_OUT = 4,
-TCP_NLA_TOTAL_RETRANS = 5,
-TCP_NLA_PACING_RATE = 6,
-TCP_NLA_DELIVERY_RATE = 7,
-TCP_NLA_SND_CWND = 8,
-TCP_NLA_REORDERING = 9,
-TCP_NLA_MIN_RTT = 10,
-TCP_NLA_RECUR_RETRANS = 11,
-TCP_NLA_DELIVERY_RATE_APP_LMT = 12,
-TCP_NLA_SNDQ_SIZE = 13,
-TCP_NLA_CA_STATE = 14,
-TCP_NLA_SND_SSTHRESH = 15,
-TCP_NLA_DELIVERED = 16,
-TCP_NLA_DELIVERED_CE = 17,
-TCP_NLA_BYTES_SENT = 18,
-TCP_NLA_BYTES_RETRANS = 19,
-TCP_NLA_DSACK_DUPS = 20,
-TCP_NLA_REORD_SEEN = 21,
-TCP_NLA_SRTT = 22,
-TCP_NLA_TIMEOUT_REHASH = 23,
-TCP_NLA_BYTES_NOTSENT = 24,
-TCP_NLA_EDT = 25,
-TCP_NLA_TTL = 26,
-TCP_NLA_REHASH = 27,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct tcp_md5sig {
-pub tcpm_addr: __kernel_sockaddr_storage,
-pub tcpm_flags: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_ifindex: crate::ctypes::c_int,
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_diag_md5sig {
-pub tcpm_family: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_addr: [__be32; 4usize],
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_zerocopy_receive {
-pub address: __u64,
-pub length: __u32,
-pub recv_skip_hint: __u32,
-pub inq: __u32,
-pub err: __s32,
-pub copybuf_address: __u64,
-pub copybuf_len: __s32,
-pub flags: __u32,
-pub msg_control: __u64,
-pub msg_controllen: __u64,
-pub msg_flags: __u32,
-pub reserved: __u32,
-}
-pub type cc_t = crate::ctypes::c_uchar;
-pub type speed_t = crate::ctypes::c_uint;
-pub type tcflag_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termio {
-pub c_iflag: crate::ctypes::c_ushort,
-pub c_oflag: crate::ctypes::c_ushort,
-pub c_cflag: crate::ctypes::c_ushort,
-pub c_lflag: crate::ctypes::c_ushort,
-pub c_line: crate::ctypes::c_uchar,
-pub c_cc: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 17usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios2 {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ktermios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct winsize {
-pub ws_row: crate::ctypes::c_ushort,
-pub ws_col: crate::ctypes::c_ushort,
-pub ws_xpixel: crate::ctypes::c_ushort,
-pub ws_ypixel: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iovec {
-pub iov_base: *mut crate::ctypes::c_void,
-pub iov_len: __kernel_size_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_un {
-pub sun_family: __kernel_sa_family_t,
-pub sun_path: [crate::ctypes::c_char; 108usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct oldold_utsname {
-pub sysname: [crate::ctypes::c_char; 9usize],
-pub nodename: [crate::ctypes::c_char; 9usize],
-pub release: [crate::ctypes::c_char; 9usize],
-pub version: [crate::ctypes::c_char; 9usize],
-pub machine: [crate::ctypes::c_char; 9usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct old_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct new_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-pub domainname: [crate::ctypes::c_char; 65usize],
-}
-impl membarrier_cmd {
-pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd {
-MEMBARRIER_CMD_QUERY = 0,
-MEMBARRIER_CMD_GLOBAL = 1,
-MEMBARRIER_CMD_GLOBAL_EXPEDITED = 2,
-MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = 4,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED = 8,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = 16,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = 32,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = 64,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = 128,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = 256,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd_flag {
-MEMBARRIER_CMD_FLAG_CPU = 1,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg {
-pub event: __u8,
-pub reserved1: __u8,
-pub reserved2: __u16,
-pub reserved3: __u32,
-pub arg: uffd_msg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1 {
-pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1,
-pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2,
-pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3,
-pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4,
-pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 {
-pub flags: __u64,
-pub address: __u64,
-pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {
-pub ptid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 {
-pub ufd: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 {
-pub from: __u64,
-pub to: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 {
-pub start: __u64,
-pub end: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 {
-pub reserved1: __u64,
-pub reserved2: __u64,
-pub reserved3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_api {
-pub api: __u64,
-pub features: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_range {
-pub start: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_register {
-pub range: uffdio_range,
-pub mode: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_copy {
-pub dst: __u64,
-pub src: __u64,
-pub len: __u64,
-pub mode: __u64,
-pub copy: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_zeropage {
-pub range: uffdio_range,
-pub mode: __u64,
-pub zeropage: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_writeprotect {
-pub range: uffdio_range,
-pub mode: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_continue {
-pub range: uffdio_range,
-pub mode: __u64,
-pub mapped: __s64,
-}
-#[repr(C)]
-pub struct io_uring_sqe {
-pub opcode: __u8,
-pub flags: __u8,
-pub ioprio: __u16,
-pub fd: __s32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1,
-pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2,
-pub len: __u32,
-pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3,
-pub user_data: __u64,
-pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4,
-pub personality: __u16,
-pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5,
-pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_1 {
-pub off: __u64,
-pub addr2: __u64,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 {
-pub cmd_op: __u32,
-pub __pad1: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_2 {
-pub addr: __u64,
-pub splice_off_in: __u64,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_3 {
-pub rw_flags: __kernel_rwf_t,
-pub fsync_flags: __u32,
-pub poll_events: __u16,
-pub poll32_events: __u32,
-pub sync_range_flags: __u32,
-pub msg_flags: __u32,
-pub timeout_flags: __u32,
-pub accept_flags: __u32,
-pub cancel_flags: __u32,
-pub open_flags: __u32,
-pub statx_flags: __u32,
-pub fadvise_advice: __u32,
-pub splice_flags: __u32,
-pub rename_flags: __u32,
-pub unlink_flags: __u32,
-pub hardlink_flags: __u32,
-pub xattr_flags: __u32,
-pub msg_ring_flags: __u32,
-pub uring_cmd_flags: __u32,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_4 {
-pub buf_index: __u16,
-pub buf_group: __u16,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_5 {
-pub splice_fd_in: __s32,
-pub file_index: __u32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 {
-pub addr_len: __u16,
-pub __pad3: [__u16; 1usize],
-}
-#[repr(C)]
-pub struct io_uring_sqe__bindgen_ty_6 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_sqe__bindgen_ty_6__bindgen_ty_1>,
-pub cmd: __BindgenUnionField<[__u8; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 {
-pub addr3: __u64,
-pub __pad2: [__u64; 1usize],
-}
-pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT;
-pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT;
-pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT;
-pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT;
-pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT;
-pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT;
-pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-IOSQE_FIXED_FILE_BIT = 0,
-IOSQE_IO_DRAIN_BIT = 1,
-IOSQE_IO_LINK_BIT = 2,
-IOSQE_IO_HARDLINK_BIT = 3,
-IOSQE_ASYNC_BIT = 4,
-IOSQE_BUFFER_SELECT_BIT = 5,
-IOSQE_CQE_SKIP_SUCCESS_BIT = 6,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum io_uring_op {
-IORING_OP_NOP = 0,
-IORING_OP_READV = 1,
-IORING_OP_WRITEV = 2,
-IORING_OP_FSYNC = 3,
-IORING_OP_READ_FIXED = 4,
-IORING_OP_WRITE_FIXED = 5,
-IORING_OP_POLL_ADD = 6,
-IORING_OP_POLL_REMOVE = 7,
-IORING_OP_SYNC_FILE_RANGE = 8,
-IORING_OP_SENDMSG = 9,
-IORING_OP_RECVMSG = 10,
-IORING_OP_TIMEOUT = 11,
-IORING_OP_TIMEOUT_REMOVE = 12,
-IORING_OP_ACCEPT = 13,
-IORING_OP_ASYNC_CANCEL = 14,
-IORING_OP_LINK_TIMEOUT = 15,
-IORING_OP_CONNECT = 16,
-IORING_OP_FALLOCATE = 17,
-IORING_OP_OPENAT = 18,
-IORING_OP_CLOSE = 19,
-IORING_OP_FILES_UPDATE = 20,
-IORING_OP_STATX = 21,
-IORING_OP_READ = 22,
-IORING_OP_WRITE = 23,
-IORING_OP_FADVISE = 24,
-IORING_OP_MADVISE = 25,
-IORING_OP_SEND = 26,
-IORING_OP_RECV = 27,
-IORING_OP_OPENAT2 = 28,
-IORING_OP_EPOLL_CTL = 29,
-IORING_OP_SPLICE = 30,
-IORING_OP_PROVIDE_BUFFERS = 31,
-IORING_OP_REMOVE_BUFFERS = 32,
-IORING_OP_TEE = 33,
-IORING_OP_SHUTDOWN = 34,
-IORING_OP_RENAMEAT = 35,
-IORING_OP_UNLINKAT = 36,
-IORING_OP_MKDIRAT = 37,
-IORING_OP_SYMLINKAT = 38,
-IORING_OP_LINKAT = 39,
-IORING_OP_MSG_RING = 40,
-IORING_OP_FSETXATTR = 41,
-IORING_OP_SETXATTR = 42,
-IORING_OP_FGETXATTR = 43,
-IORING_OP_GETXATTR = 44,
-IORING_OP_SOCKET = 45,
-IORING_OP_URING_CMD = 46,
-IORING_OP_SEND_ZC = 47,
-IORING_OP_SENDMSG_ZC = 48,
-IORING_OP_LAST = 49,
-}
-pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA;
-pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IORING_MSG_DATA = 0,
-IORING_MSG_SEND_FD = 1,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_cqe {
-pub user_data: __u64,
-pub res: __s32,
-pub flags: __u32,
-pub big_cqe: __IncompleteArrayField<__u64>,
-}
-pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IORING_CQE_BUFFER_SHIFT = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_sqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub flags: __u32,
-pub dropped: __u32,
-pub array: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_cqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub overflow: __u32,
-pub cqes: __u32,
-pub flags: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_params {
-pub sq_entries: __u32,
-pub cq_entries: __u32,
-pub flags: __u32,
-pub sq_thread_cpu: __u32,
-pub sq_thread_idle: __u32,
-pub features: __u32,
-pub wq_fd: __u32,
-pub resv: [__u32; 3usize],
-pub sq_off: io_sqring_offsets,
-pub cq_off: io_cqring_offsets,
-}
-pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS;
-pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS;
-pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES;
-pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES;
-pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD;
-pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD;
-pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE;
-pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC;
-pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE;
-pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY;
-pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY;
-pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS;
-pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS;
-pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2;
-pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2;
-pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2;
-pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE;
-pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF;
-pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF;
-pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS;
-pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS;
-pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS;
-pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING;
-pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING;
-pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL;
-pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE;
-pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IORING_REGISTER_BUFFERS = 0,
-IORING_UNREGISTER_BUFFERS = 1,
-IORING_REGISTER_FILES = 2,
-IORING_UNREGISTER_FILES = 3,
-IORING_REGISTER_EVENTFD = 4,
-IORING_UNREGISTER_EVENTFD = 5,
-IORING_REGISTER_FILES_UPDATE = 6,
-IORING_REGISTER_EVENTFD_ASYNC = 7,
-IORING_REGISTER_PROBE = 8,
-IORING_REGISTER_PERSONALITY = 9,
-IORING_UNREGISTER_PERSONALITY = 10,
-IORING_REGISTER_RESTRICTIONS = 11,
-IORING_REGISTER_ENABLE_RINGS = 12,
-IORING_REGISTER_FILES2 = 13,
-IORING_REGISTER_FILES_UPDATE2 = 14,
-IORING_REGISTER_BUFFERS2 = 15,
-IORING_REGISTER_BUFFERS_UPDATE = 16,
-IORING_REGISTER_IOWQ_AFF = 17,
-IORING_UNREGISTER_IOWQ_AFF = 18,
-IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
-IORING_REGISTER_RING_FDS = 20,
-IORING_UNREGISTER_RING_FDS = 21,
-IORING_REGISTER_PBUF_RING = 22,
-IORING_UNREGISTER_PBUF_RING = 23,
-IORING_REGISTER_SYNC_CANCEL = 24,
-IORING_REGISTER_FILE_ALLOC_RANGE = 25,
-IORING_REGISTER_LAST = 26,
-}
-pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND;
-pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IO_WQ_BOUND = 0,
-IO_WQ_UNBOUND = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_files_update {
-pub offset: __u32,
-pub resv: __u32,
-pub fds: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_register {
-pub nr: __u32,
-pub flags: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub tags: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update2 {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-pub tags: __u64,
-pub nr: __u32,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_slot {
-pub tag: __u64,
-pub resv: [__u64; 3usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_register {
-pub nr_slots: __u32,
-pub resv: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub resv3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_probe_op {
-pub op: __u8,
-pub resv: __u8,
-pub flags: __u16,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_probe {
-pub last_op: __u8,
-pub ops_len: __u8,
-pub resv: __u16,
-pub resv2: [__u32; 3usize],
-pub ops: __IncompleteArrayField<io_uring_probe_op>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct io_uring_restriction {
-pub opcode: __u16,
-pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1,
-pub resv: __u8,
-pub resv2: [__u32; 3usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_restriction__bindgen_ty_1 {
-pub register_op: __u8,
-pub sqe_op: __u8,
-pub sqe_flags: __u8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf {
-pub addr: __u64,
-pub len: __u32,
-pub bid: __u16,
-pub resv: __u16,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring {
-pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1>,
-pub bufs: __BindgenUnionField<[io_uring_buf; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 {
-pub resv1: __u64,
-pub resv2: __u32,
-pub resv3: __u16,
-pub tail: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_reg {
-pub ring_addr: __u64,
-pub ring_entries: __u32,
-pub bgid: __u16,
-pub pad: __u16,
-pub resv: [__u64; 3usize],
-}
-pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP;
-pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP;
-pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED;
-pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED;
-pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IORING_RESTRICTION_REGISTER_OP = 0,
-IORING_RESTRICTION_SQE_OP = 1,
-IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2,
-IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3,
-IORING_RESTRICTION_LAST = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_getevents_arg {
-pub sigmask: __u64,
-pub sigmask_sz: __u32,
-pub pad: __u32,
-pub ts: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sync_cancel_reg {
-pub addr: __u64,
-pub fd: __s32,
-pub flags: __u32,
-pub timeout: __kernel_timespec,
-pub pad: [__u64; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_file_index_range {
-pub off: __u32,
-pub len: __u32,
-pub resv: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_recvmsg_out {
-pub namelen: __u32,
-pub controllen: __u32,
-pub payloadlen: __u32,
-pub flags: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr {
-pub __storage: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct linger {
-pub l_onoff: crate::ctypes::c_int,
-pub l_linger: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct linux_dirent64 {
-pub d_ino: crate::ctypes::c_ulong,
-pub d_off: crate::ctypes::c_long,
-pub d_reclen: __u16,
-pub d_type: __u8,
-pub d_name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-pub type socklen_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct stat {
-pub st_dev: crate::ctypes::c_uint,
-pub st_ino: __kernel_ino_t,
-pub st_mode: __kernel_mode_t,
-pub st_nlink: crate::ctypes::c_short,
-pub st_uid: __kernel_uid32_t,
-pub st_gid: __kernel_gid32_t,
-pub st_rdev: crate::ctypes::c_uint,
-pub st_size: crate::ctypes::c_long,
-pub st_atime: crate::ctypes::c_long,
-pub st_mtime: crate::ctypes::c_long,
-pub st_ctime: crate::ctypes::c_long,
-pub st_blksize: crate::ctypes::c_long,
-pub st_blocks: crate::ctypes::c_long,
-pub __unused4: [crate::ctypes::c_ulong; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct stat64 {
-pub st_dev: crate::ctypes::c_ulong,
-pub st_ino: crate::ctypes::c_ulong,
-pub st_nlink: crate::ctypes::c_ulong,
-pub st_mode: crate::ctypes::c_uint,
-pub st_uid: crate::ctypes::c_uint,
-pub st_gid: crate::ctypes::c_uint,
-pub __pad0: crate::ctypes::c_uint,
-pub st_rdev: crate::ctypes::c_ulong,
-pub st_size: crate::ctypes::c_long,
-pub st_blksize: crate::ctypes::c_long,
-pub st_blocks: crate::ctypes::c_long,
-pub st_atime: crate::ctypes::c_ulong,
-pub st_atime_nsec: crate::ctypes::c_ulong,
-pub st_mtime: crate::ctypes::c_ulong,
-pub st_mtime_nsec: crate::ctypes::c_ulong,
-pub st_ctime: crate::ctypes::c_ulong,
-pub st_ctime_nsec: crate::ctypes::c_ulong,
-pub __unused: [crate::ctypes::c_long; 3usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs {
-pub f_type: __kernel_long_t,
-pub f_bsize: __kernel_long_t,
-pub f_blocks: __kernel_long_t,
-pub f_bfree: __kernel_long_t,
-pub f_bavail: __kernel_long_t,
-pub f_files: __kernel_long_t,
-pub f_ffree: __kernel_long_t,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __kernel_long_t,
-pub f_frsize: __kernel_long_t,
-pub f_flags: __kernel_long_t,
-pub f_spare: [__kernel_long_t; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs64 {
-pub f_type: __kernel_long_t,
-pub f_bsize: __kernel_long_t,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __kernel_long_t,
-pub f_frsize: __kernel_long_t,
-pub f_flags: __kernel_long_t,
-pub f_spare: [__kernel_long_t; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct compat_statfs64 {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-pub type __fsword_t = __kernel_long_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct user_desc {
-pub entry_number: crate::ctypes::c_uint,
-pub base_addr: crate::ctypes::c_uint,
-pub limit: crate::ctypes::c_uint,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub __bindgen_padding_0: [u8; 3usize],
-}
-impl user_desc {
-#[inline]
-pub fn seg_32bit(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_32bit(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn contents(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 2u8) as u32) }
-}
-#[inline]
-pub fn set_contents(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(1usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn read_exec_only(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_read_exec_only(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(3usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn limit_in_pages(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_limit_in_pages(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn seg_not_present(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_not_present(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(5usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn useable(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_useable(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(6usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(seg_32bit: crate::ctypes::c_uint, contents: crate::ctypes::c_uint, read_exec_only: crate::ctypes::c_uint, limit_in_pages: crate::ctypes::c_uint, seg_not_present: crate::ctypes::c_uint, useable: crate::ctypes::c_uint) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 1u8, {
-let seg_32bit: u32 = unsafe { ::core::mem::transmute(seg_32bit) };
-seg_32bit as u64
-});
-__bindgen_bitfield_unit.set(1usize, 2u8, {
-let contents: u32 = unsafe { ::core::mem::transmute(contents) };
-contents as u64
-});
-__bindgen_bitfield_unit.set(3usize, 1u8, {
-let read_exec_only: u32 = unsafe { ::core::mem::transmute(read_exec_only) };
-read_exec_only as u64
-});
-__bindgen_bitfield_unit.set(4usize, 1u8, {
-let limit_in_pages: u32 = unsafe { ::core::mem::transmute(limit_in_pages) };
-limit_in_pages as u64
-});
-__bindgen_bitfield_unit.set(5usize, 1u8, {
-let seg_not_present: u32 = unsafe { ::core::mem::transmute(seg_not_present) };
-seg_not_present as u64
-});
-__bindgen_bitfield_unit.set(6usize, 1u8, {
-let useable: u32 = unsafe { ::core::mem::transmute(useable) };
-useable as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct msghdr {
-pub msg_name: *mut crate::ctypes::c_void,
-pub msg_namelen: crate::ctypes::c_int,
-pub msg_iov: *mut iovec,
-pub msg_iovlen: size_t,
-pub msg_control: *mut crate::ctypes::c_void,
-pub msg_controllen: size_t,
-pub msg_flags: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct cmsghdr {
-pub cmsg_len: size_t,
-pub cmsg_level: crate::ctypes::c_int,
-pub cmsg_type: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ucred {
-pub pid: __u32,
-pub uid: __u32,
-pub gid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mmsghdr {
-pub msg_hdr: msghdr,
-pub msg_len: crate::ctypes::c_uint,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/sparc64/ioctl.rs b/vendor/linux-raw-sys-0.3.2/src/sparc64/ioctl.rs
deleted file mode 100644
index 43852a466..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/sparc64/ioctl.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-
diff --git a/vendor/linux-raw-sys-0.3.2/src/sparc64/netlink.rs b/vendor/linux-raw-sys-0.3.2/src/sparc64/netlink.rs
deleted file mode 100644
index bd1f7efaa..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/sparc64/netlink.rs
+++ /dev/null
@@ -1,2867 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const __BITS_PER_LONG: u32 = 64;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const NETLINK_ROUTE: u32 = 0;
-pub const NETLINK_UNUSED: u32 = 1;
-pub const NETLINK_USERSOCK: u32 = 2;
-pub const NETLINK_FIREWALL: u32 = 3;
-pub const NETLINK_SOCK_DIAG: u32 = 4;
-pub const NETLINK_NFLOG: u32 = 5;
-pub const NETLINK_XFRM: u32 = 6;
-pub const NETLINK_SELINUX: u32 = 7;
-pub const NETLINK_ISCSI: u32 = 8;
-pub const NETLINK_AUDIT: u32 = 9;
-pub const NETLINK_FIB_LOOKUP: u32 = 10;
-pub const NETLINK_CONNECTOR: u32 = 11;
-pub const NETLINK_NETFILTER: u32 = 12;
-pub const NETLINK_IP6_FW: u32 = 13;
-pub const NETLINK_DNRTMSG: u32 = 14;
-pub const NETLINK_KOBJECT_UEVENT: u32 = 15;
-pub const NETLINK_GENERIC: u32 = 16;
-pub const NETLINK_SCSITRANSPORT: u32 = 18;
-pub const NETLINK_ECRYPTFS: u32 = 19;
-pub const NETLINK_RDMA: u32 = 20;
-pub const NETLINK_CRYPTO: u32 = 21;
-pub const NETLINK_SMC: u32 = 22;
-pub const NETLINK_INET_DIAG: u32 = 4;
-pub const MAX_LINKS: u32 = 32;
-pub const NLM_F_REQUEST: u32 = 1;
-pub const NLM_F_MULTI: u32 = 2;
-pub const NLM_F_ACK: u32 = 4;
-pub const NLM_F_ECHO: u32 = 8;
-pub const NLM_F_DUMP_INTR: u32 = 16;
-pub const NLM_F_DUMP_FILTERED: u32 = 32;
-pub const NLM_F_ROOT: u32 = 256;
-pub const NLM_F_MATCH: u32 = 512;
-pub const NLM_F_ATOMIC: u32 = 1024;
-pub const NLM_F_DUMP: u32 = 768;
-pub const NLM_F_REPLACE: u32 = 256;
-pub const NLM_F_EXCL: u32 = 512;
-pub const NLM_F_CREATE: u32 = 1024;
-pub const NLM_F_APPEND: u32 = 2048;
-pub const NLM_F_NONREC: u32 = 256;
-pub const NLM_F_BULK: u32 = 512;
-pub const NLM_F_CAPPED: u32 = 256;
-pub const NLM_F_ACK_TLVS: u32 = 512;
-pub const NLMSG_ALIGNTO: u32 = 4;
-pub const NLMSG_NOOP: u32 = 1;
-pub const NLMSG_ERROR: u32 = 2;
-pub const NLMSG_DONE: u32 = 3;
-pub const NLMSG_OVERRUN: u32 = 4;
-pub const NLMSG_MIN_TYPE: u32 = 16;
-pub const NETLINK_ADD_MEMBERSHIP: u32 = 1;
-pub const NETLINK_DROP_MEMBERSHIP: u32 = 2;
-pub const NETLINK_PKTINFO: u32 = 3;
-pub const NETLINK_BROADCAST_ERROR: u32 = 4;
-pub const NETLINK_NO_ENOBUFS: u32 = 5;
-pub const NETLINK_RX_RING: u32 = 6;
-pub const NETLINK_TX_RING: u32 = 7;
-pub const NETLINK_LISTEN_ALL_NSID: u32 = 8;
-pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9;
-pub const NETLINK_CAP_ACK: u32 = 10;
-pub const NETLINK_EXT_ACK: u32 = 11;
-pub const NETLINK_GET_STRICT_CHK: u32 = 12;
-pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4;
-pub const NET_MAJOR: u32 = 36;
-pub const NLA_F_NESTED: u32 = 32768;
-pub const NLA_F_NET_BYTEORDER: u32 = 16384;
-pub const NLA_TYPE_MASK: i32 = -49153;
-pub const NLA_ALIGNTO: u32 = 4;
-pub const MACVLAN_FLAG_NOPROMISC: u32 = 1;
-pub const MACVLAN_FLAG_NODST: u32 = 2;
-pub const IPVLAN_F_PRIVATE: u32 = 1;
-pub const IPVLAN_F_VEPA: u32 = 2;
-pub const TUNNEL_MSG_FLAG_STATS: u32 = 1;
-pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1;
-pub const MAX_VLAN_LIST_LEN: u32 = 1;
-pub const PORT_PROFILE_MAX: u32 = 40;
-pub const PORT_UUID_MAX: u32 = 16;
-pub const PORT_SELF_VF: i32 = -1;
-pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1;
-pub const XDP_FLAGS_SKB_MODE: u32 = 2;
-pub const XDP_FLAGS_DRV_MODE: u32 = 4;
-pub const XDP_FLAGS_HW_MODE: u32 = 8;
-pub const XDP_FLAGS_REPLACE: u32 = 16;
-pub const XDP_FLAGS_MODES: u32 = 14;
-pub const XDP_FLAGS_MASK: u32 = 31;
-pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1;
-pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32;
-pub const IFA_F_SECONDARY: u32 = 1;
-pub const IFA_F_TEMPORARY: u32 = 1;
-pub const IFA_F_NODAD: u32 = 2;
-pub const IFA_F_OPTIMISTIC: u32 = 4;
-pub const IFA_F_DADFAILED: u32 = 8;
-pub const IFA_F_HOMEADDRESS: u32 = 16;
-pub const IFA_F_DEPRECATED: u32 = 32;
-pub const IFA_F_TENTATIVE: u32 = 64;
-pub const IFA_F_PERMANENT: u32 = 128;
-pub const IFA_F_MANAGETEMPADDR: u32 = 256;
-pub const IFA_F_NOPREFIXROUTE: u32 = 512;
-pub const IFA_F_MCAUTOJOIN: u32 = 1024;
-pub const IFA_F_STABLE_PRIVACY: u32 = 2048;
-pub const IFAPROT_UNSPEC: u32 = 0;
-pub const IFAPROT_KERNEL_LO: u32 = 1;
-pub const IFAPROT_KERNEL_RA: u32 = 2;
-pub const IFAPROT_KERNEL_LL: u32 = 3;
-pub const NTF_USE: u32 = 1;
-pub const NTF_SELF: u32 = 2;
-pub const NTF_MASTER: u32 = 4;
-pub const NTF_PROXY: u32 = 8;
-pub const NTF_EXT_LEARNED: u32 = 16;
-pub const NTF_OFFLOADED: u32 = 32;
-pub const NTF_STICKY: u32 = 64;
-pub const NTF_ROUTER: u32 = 128;
-pub const NTF_EXT_MANAGED: u32 = 1;
-pub const NTF_EXT_LOCKED: u32 = 2;
-pub const NUD_INCOMPLETE: u32 = 1;
-pub const NUD_REACHABLE: u32 = 2;
-pub const NUD_STALE: u32 = 4;
-pub const NUD_DELAY: u32 = 8;
-pub const NUD_PROBE: u32 = 16;
-pub const NUD_FAILED: u32 = 32;
-pub const NUD_NOARP: u32 = 64;
-pub const NUD_PERMANENT: u32 = 128;
-pub const NUD_NONE: u32 = 0;
-pub const RTNL_FAMILY_IPMR: u32 = 128;
-pub const RTNL_FAMILY_IP6MR: u32 = 129;
-pub const RTNL_FAMILY_MAX: u32 = 129;
-pub const RTA_ALIGNTO: u32 = 4;
-pub const RTPROT_UNSPEC: u32 = 0;
-pub const RTPROT_REDIRECT: u32 = 1;
-pub const RTPROT_KERNEL: u32 = 2;
-pub const RTPROT_BOOT: u32 = 3;
-pub const RTPROT_STATIC: u32 = 4;
-pub const RTPROT_GATED: u32 = 8;
-pub const RTPROT_RA: u32 = 9;
-pub const RTPROT_MRT: u32 = 10;
-pub const RTPROT_ZEBRA: u32 = 11;
-pub const RTPROT_BIRD: u32 = 12;
-pub const RTPROT_DNROUTED: u32 = 13;
-pub const RTPROT_XORP: u32 = 14;
-pub const RTPROT_NTK: u32 = 15;
-pub const RTPROT_DHCP: u32 = 16;
-pub const RTPROT_MROUTED: u32 = 17;
-pub const RTPROT_KEEPALIVED: u32 = 18;
-pub const RTPROT_BABEL: u32 = 42;
-pub const RTPROT_OPENR: u32 = 99;
-pub const RTPROT_BGP: u32 = 186;
-pub const RTPROT_ISIS: u32 = 187;
-pub const RTPROT_OSPF: u32 = 188;
-pub const RTPROT_RIP: u32 = 189;
-pub const RTPROT_EIGRP: u32 = 192;
-pub const RTM_F_NOTIFY: u32 = 256;
-pub const RTM_F_CLONED: u32 = 512;
-pub const RTM_F_EQUALIZE: u32 = 1024;
-pub const RTM_F_PREFIX: u32 = 2048;
-pub const RTM_F_LOOKUP_TABLE: u32 = 4096;
-pub const RTM_F_FIB_MATCH: u32 = 8192;
-pub const RTM_F_OFFLOAD: u32 = 16384;
-pub const RTM_F_TRAP: u32 = 32768;
-pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912;
-pub const RTNH_F_DEAD: u32 = 1;
-pub const RTNH_F_PERVASIVE: u32 = 2;
-pub const RTNH_F_ONLINK: u32 = 4;
-pub const RTNH_F_OFFLOAD: u32 = 8;
-pub const RTNH_F_LINKDOWN: u32 = 16;
-pub const RTNH_F_UNRESOLVED: u32 = 32;
-pub const RTNH_F_TRAP: u32 = 64;
-pub const RTNH_COMPARE_MASK: u32 = 89;
-pub const RTNH_ALIGNTO: u32 = 4;
-pub const RTNETLINK_HAVE_PEERINFO: u32 = 1;
-pub const RTAX_FEATURE_ECN: u32 = 1;
-pub const RTAX_FEATURE_SACK: u32 = 2;
-pub const RTAX_FEATURE_TIMESTAMP: u32 = 4;
-pub const RTAX_FEATURE_ALLFRAG: u32 = 8;
-pub const RTAX_FEATURE_MASK: u32 = 15;
-pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295;
-pub const TCA_DUMP_FLAGS_TERSE: u32 = 1;
-pub const RTMGRP_LINK: u32 = 1;
-pub const RTMGRP_NOTIFY: u32 = 2;
-pub const RTMGRP_NEIGH: u32 = 4;
-pub const RTMGRP_TC: u32 = 8;
-pub const RTMGRP_IPV4_IFADDR: u32 = 16;
-pub const RTMGRP_IPV4_MROUTE: u32 = 32;
-pub const RTMGRP_IPV4_ROUTE: u32 = 64;
-pub const RTMGRP_IPV4_RULE: u32 = 128;
-pub const RTMGRP_IPV6_IFADDR: u32 = 256;
-pub const RTMGRP_IPV6_MROUTE: u32 = 512;
-pub const RTMGRP_IPV6_ROUTE: u32 = 1024;
-pub const RTMGRP_IPV6_IFINFO: u32 = 2048;
-pub const RTMGRP_DECnet_IFADDR: u32 = 4096;
-pub const RTMGRP_DECnet_ROUTE: u32 = 16384;
-pub const RTMGRP_IPV6_PREFIX: u32 = 131072;
-pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2;
-pub const RTEXT_FILTER_VF: u32 = 1;
-pub const RTEXT_FILTER_BRVLAN: u32 = 2;
-pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4;
-pub const RTEXT_FILTER_SKIP_STATS: u32 = 8;
-pub const RTEXT_FILTER_MRP: u32 = 16;
-pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32;
-pub const RTEXT_FILTER_CFM_STATUS: u32 = 64;
-pub const RTEXT_FILTER_MST: u32 = 128;
-pub type size_t = crate::ctypes::c_ulong;
-pub type ssize_t = crate::ctypes::c_long;
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 16usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_old_uid_t = crate::ctypes::c_ushort;
-pub type __kernel_old_gid_t = crate::ctypes::c_ushort;
-pub type __kernel_suseconds_t = crate::ctypes::c_int;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timeval {
-pub tv_sec: __kernel_long_t,
-pub tv_usec: __kernel_suseconds_t,
-}
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_dev_t = crate::ctypes::c_uint;
-pub type __kernel_size_t = __kernel_ulong_t;
-pub type __kernel_ssize_t = __kernel_long_t;
-pub type __kernel_ptrdiff_t = __kernel_long_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_nl {
-pub nl_family: __kernel_sa_family_t,
-pub nl_pad: crate::ctypes::c_ushort,
-pub nl_pid: __u32,
-pub nl_groups: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsghdr {
-pub nlmsg_len: __u32,
-pub nlmsg_type: __u16,
-pub nlmsg_flags: __u16,
-pub nlmsg_seq: __u32,
-pub nlmsg_pid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsgerr {
-pub error: crate::ctypes::c_int,
-pub msg: nlmsghdr,
-}
-impl nlmsgerr_attrs {
-pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nlmsgerr_attrs {
-NLMSGERR_ATTR_UNUSED = 0,
-NLMSGERR_ATTR_MSG = 1,
-NLMSGERR_ATTR_OFFS = 2,
-NLMSGERR_ATTR_COOKIE = 3,
-NLMSGERR_ATTR_POLICY = 4,
-NLMSGERR_ATTR_MISS_TYPE = 5,
-NLMSGERR_ATTR_MISS_NEST = 6,
-__NLMSGERR_ATTR_MAX = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_pktinfo {
-pub group: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_req {
-pub nm_block_size: crate::ctypes::c_uint,
-pub nm_block_nr: crate::ctypes::c_uint,
-pub nm_frame_size: crate::ctypes::c_uint,
-pub nm_frame_nr: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_hdr {
-pub nm_status: crate::ctypes::c_uint,
-pub nm_len: crate::ctypes::c_uint,
-pub nm_group: __u32,
-pub nm_pid: __u32,
-pub nm_uid: __u32,
-pub nm_gid: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nl_mmap_status {
-NL_MMAP_STATUS_UNUSED = 0,
-NL_MMAP_STATUS_RESERVED = 1,
-NL_MMAP_STATUS_VALID = 2,
-NL_MMAP_STATUS_COPY = 3,
-NL_MMAP_STATUS_SKIP = 4,
-}
-pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED;
-pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-NETLINK_UNCONNECTED = 0,
-NETLINK_CONNECTED = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlattr {
-pub nla_len: __u16,
-pub nla_type: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nla_bitfield32 {
-pub value: __u32,
-pub selector: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_attribute_type {
-NL_ATTR_TYPE_INVALID = 0,
-NL_ATTR_TYPE_FLAG = 1,
-NL_ATTR_TYPE_U8 = 2,
-NL_ATTR_TYPE_U16 = 3,
-NL_ATTR_TYPE_U32 = 4,
-NL_ATTR_TYPE_U64 = 5,
-NL_ATTR_TYPE_S8 = 6,
-NL_ATTR_TYPE_S16 = 7,
-NL_ATTR_TYPE_S32 = 8,
-NL_ATTR_TYPE_S64 = 9,
-NL_ATTR_TYPE_BINARY = 10,
-NL_ATTR_TYPE_STRING = 11,
-NL_ATTR_TYPE_NUL_STRING = 12,
-NL_ATTR_TYPE_NESTED = 13,
-NL_ATTR_TYPE_NESTED_ARRAY = 14,
-NL_ATTR_TYPE_BITFIELD32 = 15,
-}
-impl netlink_policy_type_attr {
-pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_policy_type_attr {
-NL_POLICY_TYPE_ATTR_UNSPEC = 0,
-NL_POLICY_TYPE_ATTR_TYPE = 1,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5,
-NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6,
-NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7,
-NL_POLICY_TYPE_ATTR_POLICY_IDX = 8,
-NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9,
-NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10,
-NL_POLICY_TYPE_ATTR_PAD = 11,
-NL_POLICY_TYPE_ATTR_MASK = 12,
-__NL_POLICY_TYPE_ATTR_MAX = 13,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats {
-pub rx_packets: __u32,
-pub tx_packets: __u32,
-pub rx_bytes: __u32,
-pub tx_bytes: __u32,
-pub rx_errors: __u32,
-pub tx_errors: __u32,
-pub rx_dropped: __u32,
-pub tx_dropped: __u32,
-pub multicast: __u32,
-pub collisions: __u32,
-pub rx_length_errors: __u32,
-pub rx_over_errors: __u32,
-pub rx_crc_errors: __u32,
-pub rx_frame_errors: __u32,
-pub rx_fifo_errors: __u32,
-pub rx_missed_errors: __u32,
-pub tx_aborted_errors: __u32,
-pub tx_carrier_errors: __u32,
-pub tx_fifo_errors: __u32,
-pub tx_heartbeat_errors: __u32,
-pub tx_window_errors: __u32,
-pub rx_compressed: __u32,
-pub tx_compressed: __u32,
-pub rx_nohandler: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-pub collisions: __u64,
-pub rx_length_errors: __u64,
-pub rx_over_errors: __u64,
-pub rx_crc_errors: __u64,
-pub rx_frame_errors: __u64,
-pub rx_fifo_errors: __u64,
-pub rx_missed_errors: __u64,
-pub tx_aborted_errors: __u64,
-pub tx_carrier_errors: __u64,
-pub tx_fifo_errors: __u64,
-pub tx_heartbeat_errors: __u64,
-pub tx_window_errors: __u64,
-pub rx_compressed: __u64,
-pub tx_compressed: __u64,
-pub rx_nohandler: __u64,
-pub rx_otherhost_dropped: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_hw_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_ifmap {
-pub mem_start: __u64,
-pub mem_end: __u64,
-pub base_addr: __u64,
-pub irq: __u16,
-pub dma: __u8,
-pub port: __u8,
-}
-pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC;
-pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS;
-pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST;
-pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME;
-pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU;
-pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK;
-pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC;
-pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS;
-pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST;
-pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY;
-pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER;
-pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS;
-pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO;
-pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN;
-pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP;
-pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT;
-pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE;
-pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE;
-pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO;
-pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID;
-pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS;
-pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF;
-pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST;
-pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64;
-pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS;
-pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF;
-pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC;
-pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP;
-pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD;
-pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK;
-pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY;
-pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES;
-pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES;
-pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER;
-pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID;
-pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES;
-pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID;
-pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID;
-pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME;
-pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN;
-pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS;
-pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE;
-pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD;
-pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP;
-pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT;
-pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID;
-pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT;
-pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT;
-pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX;
-pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU;
-pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU;
-pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST;
-pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME;
-pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS;
-pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON;
-pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME;
-pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME;
-pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS;
-pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI;
-pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT;
-pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IFLA_UNSPEC = 0,
-IFLA_ADDRESS = 1,
-IFLA_BROADCAST = 2,
-IFLA_IFNAME = 3,
-IFLA_MTU = 4,
-IFLA_LINK = 5,
-IFLA_QDISC = 6,
-IFLA_STATS = 7,
-IFLA_COST = 8,
-IFLA_PRIORITY = 9,
-IFLA_MASTER = 10,
-IFLA_WIRELESS = 11,
-IFLA_PROTINFO = 12,
-IFLA_TXQLEN = 13,
-IFLA_MAP = 14,
-IFLA_WEIGHT = 15,
-IFLA_OPERSTATE = 16,
-IFLA_LINKMODE = 17,
-IFLA_LINKINFO = 18,
-IFLA_NET_NS_PID = 19,
-IFLA_IFALIAS = 20,
-IFLA_NUM_VF = 21,
-IFLA_VFINFO_LIST = 22,
-IFLA_STATS64 = 23,
-IFLA_VF_PORTS = 24,
-IFLA_PORT_SELF = 25,
-IFLA_AF_SPEC = 26,
-IFLA_GROUP = 27,
-IFLA_NET_NS_FD = 28,
-IFLA_EXT_MASK = 29,
-IFLA_PROMISCUITY = 30,
-IFLA_NUM_TX_QUEUES = 31,
-IFLA_NUM_RX_QUEUES = 32,
-IFLA_CARRIER = 33,
-IFLA_PHYS_PORT_ID = 34,
-IFLA_CARRIER_CHANGES = 35,
-IFLA_PHYS_SWITCH_ID = 36,
-IFLA_LINK_NETNSID = 37,
-IFLA_PHYS_PORT_NAME = 38,
-IFLA_PROTO_DOWN = 39,
-IFLA_GSO_MAX_SEGS = 40,
-IFLA_GSO_MAX_SIZE = 41,
-IFLA_PAD = 42,
-IFLA_XDP = 43,
-IFLA_EVENT = 44,
-IFLA_NEW_NETNSID = 45,
-IFLA_IF_NETNSID = 46,
-IFLA_CARRIER_UP_COUNT = 47,
-IFLA_CARRIER_DOWN_COUNT = 48,
-IFLA_NEW_IFINDEX = 49,
-IFLA_MIN_MTU = 50,
-IFLA_MAX_MTU = 51,
-IFLA_PROP_LIST = 52,
-IFLA_ALT_IFNAME = 53,
-IFLA_PERM_ADDRESS = 54,
-IFLA_PROTO_DOWN_REASON = 55,
-IFLA_PARENT_DEV_NAME = 56,
-IFLA_PARENT_DEV_BUS_NAME = 57,
-IFLA_GRO_MAX_SIZE = 58,
-IFLA_TSO_MAX_SIZE = 59,
-IFLA_TSO_MAX_SEGS = 60,
-IFLA_ALLMULTI = 61,
-IFLA_DEVLINK_PORT = 62,
-__IFLA_MAX = 63,
-}
-pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC;
-pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK;
-pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT;
-pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-IFLA_PROTO_DOWN_REASON_UNSPEC = 0,
-IFLA_PROTO_DOWN_REASON_MASK = 1,
-IFLA_PROTO_DOWN_REASON_VALUE = 2,
-__IFLA_PROTO_DOWN_REASON_CNT = 3,
-}
-pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC;
-pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF;
-pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-IFLA_INET_UNSPEC = 0,
-IFLA_INET_CONF = 1,
-__IFLA_INET_MAX = 2,
-}
-pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC;
-pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS;
-pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF;
-pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS;
-pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST;
-pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO;
-pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS;
-pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN;
-pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE;
-pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU;
-pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-IFLA_INET6_UNSPEC = 0,
-IFLA_INET6_FLAGS = 1,
-IFLA_INET6_CONF = 2,
-IFLA_INET6_STATS = 3,
-IFLA_INET6_MCAST = 4,
-IFLA_INET6_CACHEINFO = 5,
-IFLA_INET6_ICMP6STATS = 6,
-IFLA_INET6_TOKEN = 7,
-IFLA_INET6_ADDR_GEN_MODE = 8,
-IFLA_INET6_RA_MTU = 9,
-__IFLA_INET6_MAX = 10,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum in6_addr_gen_mode {
-IN6_ADDR_GEN_MODE_EUI64 = 0,
-IN6_ADDR_GEN_MODE_NONE = 1,
-IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2,
-IN6_ADDR_GEN_MODE_RANDOM = 3,
-}
-pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC;
-pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY;
-pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME;
-pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE;
-pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME;
-pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE;
-pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY;
-pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING;
-pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL;
-pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK;
-pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID;
-pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID;
-pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT;
-pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST;
-pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE;
-pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED;
-pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER;
-pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER;
-pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER;
-pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER;
-pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR;
-pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH;
-pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER;
-pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING;
-pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR;
-pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER;
-pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY;
-pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX;
-pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT;
-pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL;
-pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL;
-pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL;
-pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL;
-pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL;
-pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES;
-pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES;
-pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES;
-pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID;
-pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD;
-pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED;
-pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED;
-pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION;
-pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION;
-pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT;
-pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT;
-pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE;
-pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-IFLA_BR_UNSPEC = 0,
-IFLA_BR_FORWARD_DELAY = 1,
-IFLA_BR_HELLO_TIME = 2,
-IFLA_BR_MAX_AGE = 3,
-IFLA_BR_AGEING_TIME = 4,
-IFLA_BR_STP_STATE = 5,
-IFLA_BR_PRIORITY = 6,
-IFLA_BR_VLAN_FILTERING = 7,
-IFLA_BR_VLAN_PROTOCOL = 8,
-IFLA_BR_GROUP_FWD_MASK = 9,
-IFLA_BR_ROOT_ID = 10,
-IFLA_BR_BRIDGE_ID = 11,
-IFLA_BR_ROOT_PORT = 12,
-IFLA_BR_ROOT_PATH_COST = 13,
-IFLA_BR_TOPOLOGY_CHANGE = 14,
-IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 15,
-IFLA_BR_HELLO_TIMER = 16,
-IFLA_BR_TCN_TIMER = 17,
-IFLA_BR_TOPOLOGY_CHANGE_TIMER = 18,
-IFLA_BR_GC_TIMER = 19,
-IFLA_BR_GROUP_ADDR = 20,
-IFLA_BR_FDB_FLUSH = 21,
-IFLA_BR_MCAST_ROUTER = 22,
-IFLA_BR_MCAST_SNOOPING = 23,
-IFLA_BR_MCAST_QUERY_USE_IFADDR = 24,
-IFLA_BR_MCAST_QUERIER = 25,
-IFLA_BR_MCAST_HASH_ELASTICITY = 26,
-IFLA_BR_MCAST_HASH_MAX = 27,
-IFLA_BR_MCAST_LAST_MEMBER_CNT = 28,
-IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29,
-IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30,
-IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31,
-IFLA_BR_MCAST_QUERIER_INTVL = 32,
-IFLA_BR_MCAST_QUERY_INTVL = 33,
-IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34,
-IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35,
-IFLA_BR_NF_CALL_IPTABLES = 36,
-IFLA_BR_NF_CALL_IP6TABLES = 37,
-IFLA_BR_NF_CALL_ARPTABLES = 38,
-IFLA_BR_VLAN_DEFAULT_PVID = 39,
-IFLA_BR_PAD = 40,
-IFLA_BR_VLAN_STATS_ENABLED = 41,
-IFLA_BR_MCAST_STATS_ENABLED = 42,
-IFLA_BR_MCAST_IGMP_VERSION = 43,
-IFLA_BR_MCAST_MLD_VERSION = 44,
-IFLA_BR_VLAN_STATS_PER_PORT = 45,
-IFLA_BR_MULTI_BOOLOPT = 46,
-IFLA_BR_MCAST_QUERIER_STATE = 47,
-__IFLA_BR_MAX = 48,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_bridge_id {
-pub prio: [__u8; 2usize],
-pub addr: [__u8; 6usize],
-}
-pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC;
-pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-BRIDGE_MODE_UNSPEC = 0,
-BRIDGE_MODE_HAIRPIN = 1,
-}
-pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC;
-pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE;
-pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY;
-pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST;
-pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE;
-pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD;
-pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT;
-pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE;
-pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING;
-pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD;
-pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP;
-pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC;
-pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI;
-pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID;
-pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID;
-pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT;
-pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST;
-pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID;
-pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO;
-pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK;
-pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING;
-pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER;
-pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER;
-pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER;
-pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH;
-pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER;
-pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD;
-pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD;
-pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST;
-pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL;
-pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD;
-pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK;
-pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS;
-pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED;
-pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT;
-pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN;
-pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT;
-pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED;
-pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB;
-pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IFLA_BRPORT_UNSPEC = 0,
-IFLA_BRPORT_STATE = 1,
-IFLA_BRPORT_PRIORITY = 2,
-IFLA_BRPORT_COST = 3,
-IFLA_BRPORT_MODE = 4,
-IFLA_BRPORT_GUARD = 5,
-IFLA_BRPORT_PROTECT = 6,
-IFLA_BRPORT_FAST_LEAVE = 7,
-IFLA_BRPORT_LEARNING = 8,
-IFLA_BRPORT_UNICAST_FLOOD = 9,
-IFLA_BRPORT_PROXYARP = 10,
-IFLA_BRPORT_LEARNING_SYNC = 11,
-IFLA_BRPORT_PROXYARP_WIFI = 12,
-IFLA_BRPORT_ROOT_ID = 13,
-IFLA_BRPORT_BRIDGE_ID = 14,
-IFLA_BRPORT_DESIGNATED_PORT = 15,
-IFLA_BRPORT_DESIGNATED_COST = 16,
-IFLA_BRPORT_ID = 17,
-IFLA_BRPORT_NO = 18,
-IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 19,
-IFLA_BRPORT_CONFIG_PENDING = 20,
-IFLA_BRPORT_MESSAGE_AGE_TIMER = 21,
-IFLA_BRPORT_FORWARD_DELAY_TIMER = 22,
-IFLA_BRPORT_HOLD_TIMER = 23,
-IFLA_BRPORT_FLUSH = 24,
-IFLA_BRPORT_MULTICAST_ROUTER = 25,
-IFLA_BRPORT_PAD = 26,
-IFLA_BRPORT_MCAST_FLOOD = 27,
-IFLA_BRPORT_MCAST_TO_UCAST = 28,
-IFLA_BRPORT_VLAN_TUNNEL = 29,
-IFLA_BRPORT_BCAST_FLOOD = 30,
-IFLA_BRPORT_GROUP_FWD_MASK = 31,
-IFLA_BRPORT_NEIGH_SUPPRESS = 32,
-IFLA_BRPORT_ISOLATED = 33,
-IFLA_BRPORT_BACKUP_PORT = 34,
-IFLA_BRPORT_MRP_RING_OPEN = 35,
-IFLA_BRPORT_MRP_IN_OPEN = 36,
-IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 37,
-IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 38,
-IFLA_BRPORT_LOCKED = 39,
-IFLA_BRPORT_MAB = 40,
-__IFLA_BRPORT_MAX = 41,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_cacheinfo {
-pub max_reasm_len: __u32,
-pub tstamp: __u32,
-pub reachable_time: __u32,
-pub retrans_time: __u32,
-}
-pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC;
-pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND;
-pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA;
-pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS;
-pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND;
-pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA;
-pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IFLA_INFO_UNSPEC = 0,
-IFLA_INFO_KIND = 1,
-IFLA_INFO_DATA = 2,
-IFLA_INFO_XSTATS = 3,
-IFLA_INFO_SLAVE_KIND = 4,
-IFLA_INFO_SLAVE_DATA = 5,
-__IFLA_INFO_MAX = 6,
-}
-pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC;
-pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID;
-pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS;
-pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS;
-pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS;
-pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL;
-pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IFLA_VLAN_UNSPEC = 0,
-IFLA_VLAN_ID = 1,
-IFLA_VLAN_FLAGS = 2,
-IFLA_VLAN_EGRESS_QOS = 3,
-IFLA_VLAN_INGRESS_QOS = 4,
-IFLA_VLAN_PROTOCOL = 5,
-__IFLA_VLAN_MAX = 6,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC;
-pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING;
-pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IFLA_VLAN_QOS_UNSPEC = 0,
-IFLA_VLAN_QOS_MAPPING = 1,
-__IFLA_VLAN_QOS_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_qos_mapping {
-pub from: __u32,
-pub to: __u32,
-}
-pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC;
-pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE;
-pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS;
-pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE;
-pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR;
-pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA;
-pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED;
-pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IFLA_MACVLAN_UNSPEC = 0,
-IFLA_MACVLAN_MODE = 1,
-IFLA_MACVLAN_FLAGS = 2,
-IFLA_MACVLAN_MACADDR_MODE = 3,
-IFLA_MACVLAN_MACADDR = 4,
-IFLA_MACVLAN_MACADDR_DATA = 5,
-IFLA_MACVLAN_MACADDR_COUNT = 6,
-IFLA_MACVLAN_BC_QUEUE_LEN = 7,
-IFLA_MACVLAN_BC_QUEUE_LEN_USED = 8,
-__IFLA_MACVLAN_MAX = 9,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_mode {
-MACVLAN_MODE_PRIVATE = 1,
-MACVLAN_MODE_VEPA = 2,
-MACVLAN_MODE_BRIDGE = 4,
-MACVLAN_MODE_PASSTHRU = 8,
-MACVLAN_MODE_SOURCE = 16,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_macaddr_mode {
-MACVLAN_MACADDR_ADD = 0,
-MACVLAN_MACADDR_DEL = 1,
-MACVLAN_MACADDR_FLUSH = 2,
-MACVLAN_MACADDR_SET = 3,
-}
-pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC;
-pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE;
-pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_13 {
-IFLA_VRF_UNSPEC = 0,
-IFLA_VRF_TABLE = 1,
-__IFLA_VRF_MAX = 2,
-}
-pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC;
-pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE;
-pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_14 {
-IFLA_VRF_PORT_UNSPEC = 0,
-IFLA_VRF_PORT_TABLE = 1,
-__IFLA_VRF_PORT_MAX = 2,
-}
-pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC;
-pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI;
-pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT;
-pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN;
-pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE;
-pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW;
-pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA;
-pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT;
-pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT;
-pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI;
-pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES;
-pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB;
-pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT;
-pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION;
-pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD;
-pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD;
-pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_15 {
-IFLA_MACSEC_UNSPEC = 0,
-IFLA_MACSEC_SCI = 1,
-IFLA_MACSEC_PORT = 2,
-IFLA_MACSEC_ICV_LEN = 3,
-IFLA_MACSEC_CIPHER_SUITE = 4,
-IFLA_MACSEC_WINDOW = 5,
-IFLA_MACSEC_ENCODING_SA = 6,
-IFLA_MACSEC_ENCRYPT = 7,
-IFLA_MACSEC_PROTECT = 8,
-IFLA_MACSEC_INC_SCI = 9,
-IFLA_MACSEC_ES = 10,
-IFLA_MACSEC_SCB = 11,
-IFLA_MACSEC_REPLAY_PROTECT = 12,
-IFLA_MACSEC_VALIDATION = 13,
-IFLA_MACSEC_PAD = 14,
-IFLA_MACSEC_OFFLOAD = 15,
-__IFLA_MACSEC_MAX = 16,
-}
-pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC;
-pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK;
-pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID;
-pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA;
-pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_16 {
-IFLA_XFRM_UNSPEC = 0,
-IFLA_XFRM_LINK = 1,
-IFLA_XFRM_IF_ID = 2,
-IFLA_XFRM_COLLECT_METADATA = 3,
-__IFLA_XFRM_MAX = 4,
-}
-impl macsec_validation_type {
-pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_validation_type {
-MACSEC_VALIDATE_DISABLED = 0,
-MACSEC_VALIDATE_CHECK = 1,
-MACSEC_VALIDATE_STRICT = 2,
-__MACSEC_VALIDATE_END = 3,
-}
-impl macsec_offload {
-pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_offload {
-MACSEC_OFFLOAD_OFF = 0,
-MACSEC_OFFLOAD_PHY = 1,
-MACSEC_OFFLOAD_MAC = 2,
-__MACSEC_OFFLOAD_END = 3,
-}
-pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC;
-pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE;
-pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS;
-pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_17 {
-IFLA_IPVLAN_UNSPEC = 0,
-IFLA_IPVLAN_MODE = 1,
-IFLA_IPVLAN_FLAGS = 2,
-__IFLA_IPVLAN_MAX = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ipvlan_mode {
-IPVLAN_MODE_L2 = 0,
-IPVLAN_MODE_L3 = 1,
-IPVLAN_MODE_L3S = 2,
-IPVLAN_MODE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tunnel_msg {
-pub family: __u8,
-pub flags: __u8,
-pub reserved2: __u16,
-pub ifindex: __u32,
-}
-pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC;
-pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD;
-pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_18 {
-VNIFILTER_ENTRY_STATS_UNSPEC = 0,
-VNIFILTER_ENTRY_STATS_RX_BYTES = 1,
-VNIFILTER_ENTRY_STATS_RX_PKTS = 2,
-VNIFILTER_ENTRY_STATS_RX_DROPS = 3,
-VNIFILTER_ENTRY_STATS_RX_ERRORS = 4,
-VNIFILTER_ENTRY_STATS_TX_BYTES = 5,
-VNIFILTER_ENTRY_STATS_TX_PKTS = 6,
-VNIFILTER_ENTRY_STATS_TX_DROPS = 7,
-VNIFILTER_ENTRY_STATS_TX_ERRORS = 8,
-VNIFILTER_ENTRY_STATS_PAD = 9,
-__VNIFILTER_ENTRY_STATS_MAX = 10,
-}
-pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START;
-pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6;
-pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS;
-pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_19 {
-VXLAN_VNIFILTER_ENTRY_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY_START = 1,
-VXLAN_VNIFILTER_ENTRY_END = 2,
-VXLAN_VNIFILTER_ENTRY_GROUP = 3,
-VXLAN_VNIFILTER_ENTRY_GROUP6 = 4,
-VXLAN_VNIFILTER_ENTRY_STATS = 5,
-__VXLAN_VNIFILTER_ENTRY_MAX = 6,
-}
-pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY;
-pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_20 {
-VXLAN_VNIFILTER_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY = 1,
-__VXLAN_VNIFILTER_MAX = 2,
-}
-pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC;
-pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID;
-pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP;
-pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK;
-pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL;
-pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL;
-pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS;
-pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING;
-pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING;
-pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT;
-pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE;
-pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY;
-pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC;
-pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS;
-pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS;
-pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT;
-pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6;
-pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6;
-pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX;
-pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX;
-pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX;
-pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP;
-pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL;
-pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA;
-pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL;
-pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE;
-pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT;
-pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF;
-pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER;
-pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_21 {
-IFLA_VXLAN_UNSPEC = 0,
-IFLA_VXLAN_ID = 1,
-IFLA_VXLAN_GROUP = 2,
-IFLA_VXLAN_LINK = 3,
-IFLA_VXLAN_LOCAL = 4,
-IFLA_VXLAN_TTL = 5,
-IFLA_VXLAN_TOS = 6,
-IFLA_VXLAN_LEARNING = 7,
-IFLA_VXLAN_AGEING = 8,
-IFLA_VXLAN_LIMIT = 9,
-IFLA_VXLAN_PORT_RANGE = 10,
-IFLA_VXLAN_PROXY = 11,
-IFLA_VXLAN_RSC = 12,
-IFLA_VXLAN_L2MISS = 13,
-IFLA_VXLAN_L3MISS = 14,
-IFLA_VXLAN_PORT = 15,
-IFLA_VXLAN_GROUP6 = 16,
-IFLA_VXLAN_LOCAL6 = 17,
-IFLA_VXLAN_UDP_CSUM = 18,
-IFLA_VXLAN_UDP_ZERO_CSUM6_TX = 19,
-IFLA_VXLAN_UDP_ZERO_CSUM6_RX = 20,
-IFLA_VXLAN_REMCSUM_TX = 21,
-IFLA_VXLAN_REMCSUM_RX = 22,
-IFLA_VXLAN_GBP = 23,
-IFLA_VXLAN_REMCSUM_NOPARTIAL = 24,
-IFLA_VXLAN_COLLECT_METADATA = 25,
-IFLA_VXLAN_LABEL = 26,
-IFLA_VXLAN_GPE = 27,
-IFLA_VXLAN_TTL_INHERIT = 28,
-IFLA_VXLAN_DF = 29,
-IFLA_VXLAN_VNIFILTER = 30,
-__IFLA_VXLAN_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vxlan_port_range {
-pub low: __be16,
-pub high: __be16,
-}
-impl ifla_vxlan_df {
-pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_vxlan_df {
-VXLAN_DF_UNSET = 0,
-VXLAN_DF_SET = 1,
-VXLAN_DF_INHERIT = 2,
-__VXLAN_DF_END = 3,
-}
-pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC;
-pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID;
-pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE;
-pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL;
-pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS;
-pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT;
-pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA;
-pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6;
-pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX;
-pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL;
-pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT;
-pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF;
-pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT;
-pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_22 {
-IFLA_GENEVE_UNSPEC = 0,
-IFLA_GENEVE_ID = 1,
-IFLA_GENEVE_REMOTE = 2,
-IFLA_GENEVE_TTL = 3,
-IFLA_GENEVE_TOS = 4,
-IFLA_GENEVE_PORT = 5,
-IFLA_GENEVE_COLLECT_METADATA = 6,
-IFLA_GENEVE_REMOTE6 = 7,
-IFLA_GENEVE_UDP_CSUM = 8,
-IFLA_GENEVE_UDP_ZERO_CSUM6_TX = 9,
-IFLA_GENEVE_UDP_ZERO_CSUM6_RX = 10,
-IFLA_GENEVE_LABEL = 11,
-IFLA_GENEVE_TTL_INHERIT = 12,
-IFLA_GENEVE_DF = 13,
-IFLA_GENEVE_INNER_PROTO_INHERIT = 14,
-__IFLA_GENEVE_MAX = 15,
-}
-impl ifla_geneve_df {
-pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_geneve_df {
-GENEVE_DF_UNSET = 0,
-GENEVE_DF_SET = 1,
-GENEVE_DF_INHERIT = 2,
-__GENEVE_DF_END = 3,
-}
-pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC;
-pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT;
-pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE;
-pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN;
-pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE;
-pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_23 {
-IFLA_BAREUDP_UNSPEC = 0,
-IFLA_BAREUDP_PORT = 1,
-IFLA_BAREUDP_ETHERTYPE = 2,
-IFLA_BAREUDP_SRCPORT_MIN = 3,
-IFLA_BAREUDP_MULTIPROTO_MODE = 4,
-__IFLA_BAREUDP_MAX = 5,
-}
-pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC;
-pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD;
-pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_24 {
-IFLA_PPP_UNSPEC = 0,
-IFLA_PPP_DEV_FD = 1,
-__IFLA_PPP_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_gtp_role {
-GTP_ROLE_GGSN = 0,
-GTP_ROLE_SGSN = 1,
-}
-pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC;
-pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0;
-pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1;
-pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE;
-pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE;
-pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS;
-pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT;
-pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_25 {
-IFLA_GTP_UNSPEC = 0,
-IFLA_GTP_FD0 = 1,
-IFLA_GTP_FD1 = 2,
-IFLA_GTP_PDP_HASHSIZE = 3,
-IFLA_GTP_ROLE = 4,
-IFLA_GTP_CREATE_SOCKETS = 5,
-IFLA_GTP_RESTART_COUNT = 6,
-__IFLA_GTP_MAX = 7,
-}
-pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC;
-pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE;
-pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE;
-pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON;
-pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY;
-pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY;
-pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER;
-pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL;
-pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET;
-pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE;
-pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS;
-pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY;
-pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT;
-pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC;
-pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY;
-pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP;
-pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF;
-pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE;
-pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS;
-pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL;
-pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE;
-pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE;
-pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT;
-pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO;
-pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO;
-pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY;
-pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM;
-pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB;
-pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY;
-pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE;
-pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX;
-pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET;
-pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_26 {
-IFLA_BOND_UNSPEC = 0,
-IFLA_BOND_MODE = 1,
-IFLA_BOND_ACTIVE_SLAVE = 2,
-IFLA_BOND_MIIMON = 3,
-IFLA_BOND_UPDELAY = 4,
-IFLA_BOND_DOWNDELAY = 5,
-IFLA_BOND_USE_CARRIER = 6,
-IFLA_BOND_ARP_INTERVAL = 7,
-IFLA_BOND_ARP_IP_TARGET = 8,
-IFLA_BOND_ARP_VALIDATE = 9,
-IFLA_BOND_ARP_ALL_TARGETS = 10,
-IFLA_BOND_PRIMARY = 11,
-IFLA_BOND_PRIMARY_RESELECT = 12,
-IFLA_BOND_FAIL_OVER_MAC = 13,
-IFLA_BOND_XMIT_HASH_POLICY = 14,
-IFLA_BOND_RESEND_IGMP = 15,
-IFLA_BOND_NUM_PEER_NOTIF = 16,
-IFLA_BOND_ALL_SLAVES_ACTIVE = 17,
-IFLA_BOND_MIN_LINKS = 18,
-IFLA_BOND_LP_INTERVAL = 19,
-IFLA_BOND_PACKETS_PER_SLAVE = 20,
-IFLA_BOND_AD_LACP_RATE = 21,
-IFLA_BOND_AD_SELECT = 22,
-IFLA_BOND_AD_INFO = 23,
-IFLA_BOND_AD_ACTOR_SYS_PRIO = 24,
-IFLA_BOND_AD_USER_PORT_KEY = 25,
-IFLA_BOND_AD_ACTOR_SYSTEM = 26,
-IFLA_BOND_TLB_DYNAMIC_LB = 27,
-IFLA_BOND_PEER_NOTIF_DELAY = 28,
-IFLA_BOND_AD_LACP_ACTIVE = 29,
-IFLA_BOND_MISSED_MAX = 30,
-IFLA_BOND_NS_IP6_TARGET = 31,
-__IFLA_BOND_MAX = 32,
-}
-pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC;
-pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR;
-pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS;
-pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC;
-pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_27 {
-IFLA_BOND_AD_INFO_UNSPEC = 0,
-IFLA_BOND_AD_INFO_AGGREGATOR = 1,
-IFLA_BOND_AD_INFO_NUM_PORTS = 2,
-IFLA_BOND_AD_INFO_ACTOR_KEY = 3,
-IFLA_BOND_AD_INFO_PARTNER_KEY = 4,
-IFLA_BOND_AD_INFO_PARTNER_MAC = 5,
-__IFLA_BOND_AD_INFO_MAX = 6,
-}
-pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC;
-pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE;
-pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS;
-pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT;
-pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR;
-pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID;
-pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID;
-pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO;
-pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_28 {
-IFLA_BOND_SLAVE_UNSPEC = 0,
-IFLA_BOND_SLAVE_STATE = 1,
-IFLA_BOND_SLAVE_MII_STATUS = 2,
-IFLA_BOND_SLAVE_LINK_FAILURE_COUNT = 3,
-IFLA_BOND_SLAVE_PERM_HWADDR = 4,
-IFLA_BOND_SLAVE_QUEUE_ID = 5,
-IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 6,
-IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 7,
-IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 8,
-IFLA_BOND_SLAVE_PRIO = 9,
-__IFLA_BOND_SLAVE_MAX = 10,
-}
-pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC;
-pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO;
-pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_29 {
-IFLA_VF_INFO_UNSPEC = 0,
-IFLA_VF_INFO = 1,
-__IFLA_VF_INFO_MAX = 2,
-}
-pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC;
-pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC;
-pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN;
-pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE;
-pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK;
-pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE;
-pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE;
-pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN;
-pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS;
-pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST;
-pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID;
-pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID;
-pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST;
-pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST;
-pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_30 {
-IFLA_VF_UNSPEC = 0,
-IFLA_VF_MAC = 1,
-IFLA_VF_VLAN = 2,
-IFLA_VF_TX_RATE = 3,
-IFLA_VF_SPOOFCHK = 4,
-IFLA_VF_LINK_STATE = 5,
-IFLA_VF_RATE = 6,
-IFLA_VF_RSS_QUERY_EN = 7,
-IFLA_VF_STATS = 8,
-IFLA_VF_TRUST = 9,
-IFLA_VF_IB_NODE_GUID = 10,
-IFLA_VF_IB_PORT_GUID = 11,
-IFLA_VF_VLAN_LIST = 12,
-IFLA_VF_BROADCAST = 13,
-__IFLA_VF_MAX = 14,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_mac {
-pub vf: __u32,
-pub mac: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_broadcast {
-pub broadcast: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-}
-pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC;
-pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO;
-pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_31 {
-IFLA_VF_VLAN_INFO_UNSPEC = 0,
-IFLA_VF_VLAN_INFO = 1,
-__IFLA_VF_VLAN_INFO_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan_info {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-pub vlan_proto: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_tx_rate {
-pub vf: __u32,
-pub rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rate {
-pub vf: __u32,
-pub min_tx_rate: __u32,
-pub max_tx_rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_spoofchk {
-pub vf: __u32,
-pub setting: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_guid {
-pub vf: __u32,
-pub guid: __u64,
-}
-pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO;
-pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE;
-pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE;
-pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_32 {
-IFLA_VF_LINK_STATE_AUTO = 0,
-IFLA_VF_LINK_STATE_ENABLE = 1,
-IFLA_VF_LINK_STATE_DISABLE = 2,
-__IFLA_VF_LINK_STATE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_link_state {
-pub vf: __u32,
-pub link_state: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rss_query_en {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS;
-pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS;
-pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES;
-pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES;
-pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST;
-pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST;
-pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD;
-pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED;
-pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED;
-pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_33 {
-IFLA_VF_STATS_RX_PACKETS = 0,
-IFLA_VF_STATS_TX_PACKETS = 1,
-IFLA_VF_STATS_RX_BYTES = 2,
-IFLA_VF_STATS_TX_BYTES = 3,
-IFLA_VF_STATS_BROADCAST = 4,
-IFLA_VF_STATS_MULTICAST = 5,
-IFLA_VF_STATS_PAD = 6,
-IFLA_VF_STATS_RX_DROPPED = 7,
-IFLA_VF_STATS_TX_DROPPED = 8,
-__IFLA_VF_STATS_MAX = 9,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_trust {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC;
-pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT;
-pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_34 {
-IFLA_VF_PORT_UNSPEC = 0,
-IFLA_VF_PORT = 1,
-__IFLA_VF_PORT_MAX = 2,
-}
-pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC;
-pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF;
-pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE;
-pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE;
-pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID;
-pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID;
-pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST;
-pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE;
-pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_35 {
-IFLA_PORT_UNSPEC = 0,
-IFLA_PORT_VF = 1,
-IFLA_PORT_PROFILE = 2,
-IFLA_PORT_VSI_TYPE = 3,
-IFLA_PORT_INSTANCE_UUID = 4,
-IFLA_PORT_HOST_UUID = 5,
-IFLA_PORT_REQUEST = 6,
-IFLA_PORT_RESPONSE = 7,
-__IFLA_PORT_MAX = 8,
-}
-pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE;
-pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR;
-pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE;
-pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_36 {
-PORT_REQUEST_PREASSOCIATE = 0,
-PORT_REQUEST_PREASSOCIATE_RR = 1,
-PORT_REQUEST_ASSOCIATE = 2,
-PORT_REQUEST_DISASSOCIATE = 3,
-}
-pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS;
-pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT;
-pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID;
-pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION;
-pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION;
-pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC;
-pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS;
-pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS;
-pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID;
-pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE;
-pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_37 {
-PORT_VDP_RESPONSE_SUCCESS = 0,
-PORT_VDP_RESPONSE_INVALID_FORMAT = 1,
-PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES = 2,
-PORT_VDP_RESPONSE_UNUSED_VTID = 3,
-PORT_VDP_RESPONSE_VTID_VIOLATION = 4,
-PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION = 5,
-PORT_VDP_RESPONSE_OUT_OF_SYNC = 6,
-PORT_PROFILE_RESPONSE_SUCCESS = 256,
-PORT_PROFILE_RESPONSE_INPROGRESS = 257,
-PORT_PROFILE_RESPONSE_INVALID = 258,
-PORT_PROFILE_RESPONSE_BADSTATE = 259,
-PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260,
-PORT_PROFILE_RESPONSE_ERROR = 261,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_port_vsi {
-pub vsi_mgr_id: __u8,
-pub vsi_type_id: [__u8; 3usize],
-pub vsi_type_version: __u8,
-pub pad: [__u8; 3usize],
-}
-pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC;
-pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY;
-pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE;
-pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST;
-pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_38 {
-IFLA_IPOIB_UNSPEC = 0,
-IFLA_IPOIB_PKEY = 1,
-IFLA_IPOIB_MODE = 2,
-IFLA_IPOIB_UMCAST = 3,
-__IFLA_IPOIB_MAX = 4,
-}
-pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM;
-pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_39 {
-IPOIB_MODE_DATAGRAM = 0,
-IPOIB_MODE_CONNECTED = 1,
-}
-pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR;
-pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP;
-pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_40 {
-HSR_PROTOCOL_HSR = 0,
-HSR_PROTOCOL_PRP = 1,
-HSR_PROTOCOL_MAX = 2,
-}
-pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC;
-pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1;
-pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2;
-pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC;
-pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR;
-pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR;
-pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION;
-pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL;
-pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_41 {
-IFLA_HSR_UNSPEC = 0,
-IFLA_HSR_SLAVE1 = 1,
-IFLA_HSR_SLAVE2 = 2,
-IFLA_HSR_MULTICAST_SPEC = 3,
-IFLA_HSR_SUPERVISION_ADDR = 4,
-IFLA_HSR_SEQ_NR = 5,
-IFLA_HSR_VERSION = 6,
-IFLA_HSR_PROTOCOL = 7,
-__IFLA_HSR_MAX = 8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct if_stats_msg {
-pub family: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub ifindex: __u32,
-pub filter_mask: __u32,
-}
-pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC;
-pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64;
-pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS;
-pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE;
-pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS;
-pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC;
-pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_42 {
-IFLA_STATS_UNSPEC = 0,
-IFLA_STATS_LINK_64 = 1,
-IFLA_STATS_LINK_XSTATS = 2,
-IFLA_STATS_LINK_XSTATS_SLAVE = 3,
-IFLA_STATS_LINK_OFFLOAD_XSTATS = 4,
-IFLA_STATS_AF_SPEC = 5,
-__IFLA_STATS_MAX = 6,
-}
-pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC;
-pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS;
-pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_43 {
-IFLA_STATS_GETSET_UNSPEC = 0,
-IFLA_STATS_GET_FILTERS = 1,
-IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2,
-__IFLA_STATS_GETSET_MAX = 3,
-}
-pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC;
-pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE;
-pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND;
-pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_44 {
-LINK_XSTATS_TYPE_UNSPEC = 0,
-LINK_XSTATS_TYPE_BRIDGE = 1,
-LINK_XSTATS_TYPE_BOND = 2,
-__LINK_XSTATS_TYPE_MAX = 3,
-}
-pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO;
-pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_45 {
-IFLA_OFFLOAD_XSTATS_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_CPU_HIT = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO = 2,
-IFLA_OFFLOAD_XSTATS_L3_STATS = 3,
-__IFLA_OFFLOAD_XSTATS_MAX = 4,
-}
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED;
-pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_46 {
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2,
-__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3,
-}
-pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE;
-pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV;
-pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB;
-pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW;
-pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_47 {
-XDP_ATTACHED_NONE = 0,
-XDP_ATTACHED_DRV = 1,
-XDP_ATTACHED_SKB = 2,
-XDP_ATTACHED_HW = 3,
-XDP_ATTACHED_MULTI = 4,
-}
-pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC;
-pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD;
-pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED;
-pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS;
-pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID;
-pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID;
-pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID;
-pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID;
-pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD;
-pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_48 {
-IFLA_XDP_UNSPEC = 0,
-IFLA_XDP_FD = 1,
-IFLA_XDP_ATTACHED = 2,
-IFLA_XDP_FLAGS = 3,
-IFLA_XDP_PROG_ID = 4,
-IFLA_XDP_DRV_PROG_ID = 5,
-IFLA_XDP_SKB_PROG_ID = 6,
-IFLA_XDP_HW_PROG_ID = 7,
-IFLA_XDP_EXPECTED_FD = 8,
-__IFLA_XDP_MAX = 9,
-}
-pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE;
-pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT;
-pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES;
-pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER;
-pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS;
-pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND;
-pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_49 {
-IFLA_EVENT_NONE = 0,
-IFLA_EVENT_REBOOT = 1,
-IFLA_EVENT_FEATURES = 2,
-IFLA_EVENT_BONDING_FAILOVER = 3,
-IFLA_EVENT_NOTIFY_PEERS = 4,
-IFLA_EVENT_IGMP_RESEND = 5,
-IFLA_EVENT_BONDING_OPTIONS = 6,
-}
-pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC;
-pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER;
-pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP;
-pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE;
-pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI;
-pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR;
-pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST;
-pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE;
-pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES;
-pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES;
-pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_50 {
-IFLA_TUN_UNSPEC = 0,
-IFLA_TUN_OWNER = 1,
-IFLA_TUN_GROUP = 2,
-IFLA_TUN_TYPE = 3,
-IFLA_TUN_PI = 4,
-IFLA_TUN_VNET_HDR = 5,
-IFLA_TUN_PERSIST = 6,
-IFLA_TUN_MULTI_QUEUE = 7,
-IFLA_TUN_NUM_QUEUES = 8,
-IFLA_TUN_NUM_DISABLED_QUEUES = 9,
-__IFLA_TUN_MAX = 10,
-}
-pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC;
-pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID;
-pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS;
-pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_51 {
-IFLA_RMNET_UNSPEC = 0,
-IFLA_RMNET_MUX_ID = 1,
-IFLA_RMNET_FLAGS = 2,
-__IFLA_RMNET_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_rmnet_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC;
-pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET;
-pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_52 {
-IFLA_MCTP_UNSPEC = 0,
-IFLA_MCTP_NET = 1,
-__IFLA_MCTP_MAX = 2,
-}
-pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC;
-pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER;
-pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_53 {
-IFLA_DSA_UNSPEC = 0,
-IFLA_DSA_MASTER = 1,
-__IFLA_DSA_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifaddrmsg {
-pub ifa_family: __u8,
-pub ifa_prefixlen: __u8,
-pub ifa_flags: __u8,
-pub ifa_scope: __u8,
-pub ifa_index: __u32,
-}
-pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC;
-pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS;
-pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL;
-pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL;
-pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST;
-pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST;
-pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO;
-pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST;
-pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS;
-pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY;
-pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID;
-pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO;
-pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_54 {
-IFA_UNSPEC = 0,
-IFA_ADDRESS = 1,
-IFA_LOCAL = 2,
-IFA_LABEL = 3,
-IFA_BROADCAST = 4,
-IFA_ANYCAST = 5,
-IFA_CACHEINFO = 6,
-IFA_MULTICAST = 7,
-IFA_FLAGS = 8,
-IFA_RT_PRIORITY = 9,
-IFA_TARGET_NETNSID = 10,
-IFA_PROTO = 11,
-__IFA_MAX = 12,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifa_cacheinfo {
-pub ifa_prefered: __u32,
-pub ifa_valid: __u32,
-pub cstamp: __u32,
-pub tstamp: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndmsg {
-pub ndm_family: __u8,
-pub ndm_pad1: __u8,
-pub ndm_pad2: __u16,
-pub ndm_ifindex: __s32,
-pub ndm_state: __u16,
-pub ndm_flags: __u8,
-pub ndm_type: __u8,
-}
-pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC;
-pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST;
-pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR;
-pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO;
-pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES;
-pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN;
-pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT;
-pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI;
-pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX;
-pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER;
-pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID;
-pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI;
-pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL;
-pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID;
-pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS;
-pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT;
-pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK;
-pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK;
-pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_55 {
-NDA_UNSPEC = 0,
-NDA_DST = 1,
-NDA_LLADDR = 2,
-NDA_CACHEINFO = 3,
-NDA_PROBES = 4,
-NDA_VLAN = 5,
-NDA_PORT = 6,
-NDA_VNI = 7,
-NDA_IFINDEX = 8,
-NDA_MASTER = 9,
-NDA_LINK_NETNSID = 10,
-NDA_SRC_VNI = 11,
-NDA_PROTOCOL = 12,
-NDA_NH_ID = 13,
-NDA_FDB_EXT_ATTRS = 14,
-NDA_FLAGS_EXT = 15,
-NDA_NDM_STATE_MASK = 16,
-NDA_NDM_FLAGS_MASK = 17,
-__NDA_MAX = 18,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nda_cacheinfo {
-pub ndm_confirmed: __u32,
-pub ndm_used: __u32,
-pub ndm_updated: __u32,
-pub ndm_refcnt: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_stats {
-pub ndts_allocs: __u64,
-pub ndts_destroys: __u64,
-pub ndts_hash_grows: __u64,
-pub ndts_res_failed: __u64,
-pub ndts_lookups: __u64,
-pub ndts_hits: __u64,
-pub ndts_rcv_probes_mcast: __u64,
-pub ndts_rcv_probes_ucast: __u64,
-pub ndts_periodic_gc_runs: __u64,
-pub ndts_forced_gc_runs: __u64,
-pub ndts_table_fulls: __u64,
-}
-pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC;
-pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX;
-pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT;
-pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME;
-pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME;
-pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME;
-pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME;
-pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME;
-pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN;
-pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES;
-pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES;
-pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES;
-pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY;
-pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY;
-pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN;
-pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME;
-pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES;
-pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES;
-pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD;
-pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS;
-pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_56 {
-NDTPA_UNSPEC = 0,
-NDTPA_IFINDEX = 1,
-NDTPA_REFCNT = 2,
-NDTPA_REACHABLE_TIME = 3,
-NDTPA_BASE_REACHABLE_TIME = 4,
-NDTPA_RETRANS_TIME = 5,
-NDTPA_GC_STALETIME = 6,
-NDTPA_DELAY_PROBE_TIME = 7,
-NDTPA_QUEUE_LEN = 8,
-NDTPA_APP_PROBES = 9,
-NDTPA_UCAST_PROBES = 10,
-NDTPA_MCAST_PROBES = 11,
-NDTPA_ANYCAST_DELAY = 12,
-NDTPA_PROXY_DELAY = 13,
-NDTPA_PROXY_QLEN = 14,
-NDTPA_LOCKTIME = 15,
-NDTPA_QUEUE_LENBYTES = 16,
-NDTPA_MCAST_REPROBES = 17,
-NDTPA_PAD = 18,
-NDTPA_INTERVAL_PROBE_TIME_MS = 19,
-__NDTPA_MAX = 20,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndtmsg {
-pub ndtm_family: __u8,
-pub ndtm_pad1: __u8,
-pub ndtm_pad2: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_config {
-pub ndtc_key_len: __u16,
-pub ndtc_entry_size: __u16,
-pub ndtc_entries: __u32,
-pub ndtc_last_flush: __u32,
-pub ndtc_last_rand: __u32,
-pub ndtc_hash_rnd: __u32,
-pub ndtc_hash_mask: __u32,
-pub ndtc_hash_chain_gc: __u32,
-pub ndtc_proxy_qlen: __u32,
-}
-pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC;
-pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME;
-pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1;
-pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2;
-pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3;
-pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG;
-pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS;
-pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS;
-pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL;
-pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD;
-pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_57 {
-NDTA_UNSPEC = 0,
-NDTA_NAME = 1,
-NDTA_THRESH1 = 2,
-NDTA_THRESH2 = 3,
-NDTA_THRESH3 = 4,
-NDTA_CONFIG = 5,
-NDTA_PARMS = 6,
-NDTA_STATS = 7,
-NDTA_GC_INTERVAL = 8,
-NDTA_PAD = 9,
-__NDTA_MAX = 10,
-}
-pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT;
-pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_58 {
-FDB_NOTIFY_BIT = 1,
-FDB_NOTIFY_INACTIVE_BIT = 2,
-}
-pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC;
-pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY;
-pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH;
-pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_59 {
-NFEA_UNSPEC = 0,
-NFEA_ACTIVITY_NOTIFY = 1,
-NFEA_DONT_REFRESH = 2,
-__NFEA_MAX = 3,
-}
-pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK;
-pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK;
-pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK;
-pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR;
-pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR;
-pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR;
-pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE;
-pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE;
-pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE;
-pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH;
-pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH;
-pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH;
-pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE;
-pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE;
-pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE;
-pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC;
-pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC;
-pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC;
-pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS;
-pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS;
-pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS;
-pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER;
-pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER;
-pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER;
-pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION;
-pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION;
-pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION;
-pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX;
-pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST;
-pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST;
-pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL;
-pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL;
-pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL;
-pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT;
-pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL;
-pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL;
-pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL;
-pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB;
-pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB;
-pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF;
-pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF;
-pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF;
-pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB;
-pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB;
-pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB;
-pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID;
-pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID;
-pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID;
-pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS;
-pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS;
-pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS;
-pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT;
-pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN;
-pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN;
-pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN;
-pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP;
-pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP;
-pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP;
-pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP;
-pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP;
-pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP;
-pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN;
-pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN;
-pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN;
-pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET;
-pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET;
-pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET;
-pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL;
-pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL;
-pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL;
-pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_60 {
-RTM_BASE = 16,
-RTM_DELLINK = 17,
-RTM_GETLINK = 18,
-RTM_SETLINK = 19,
-RTM_NEWADDR = 20,
-RTM_DELADDR = 21,
-RTM_GETADDR = 22,
-RTM_NEWROUTE = 24,
-RTM_DELROUTE = 25,
-RTM_GETROUTE = 26,
-RTM_NEWNEIGH = 28,
-RTM_DELNEIGH = 29,
-RTM_GETNEIGH = 30,
-RTM_NEWRULE = 32,
-RTM_DELRULE = 33,
-RTM_GETRULE = 34,
-RTM_NEWQDISC = 36,
-RTM_DELQDISC = 37,
-RTM_GETQDISC = 38,
-RTM_NEWTCLASS = 40,
-RTM_DELTCLASS = 41,
-RTM_GETTCLASS = 42,
-RTM_NEWTFILTER = 44,
-RTM_DELTFILTER = 45,
-RTM_GETTFILTER = 46,
-RTM_NEWACTION = 48,
-RTM_DELACTION = 49,
-RTM_GETACTION = 50,
-RTM_NEWPREFIX = 52,
-RTM_GETMULTICAST = 58,
-RTM_GETANYCAST = 62,
-RTM_NEWNEIGHTBL = 64,
-RTM_GETNEIGHTBL = 66,
-RTM_SETNEIGHTBL = 67,
-RTM_NEWNDUSEROPT = 68,
-RTM_NEWADDRLABEL = 72,
-RTM_DELADDRLABEL = 73,
-RTM_GETADDRLABEL = 74,
-RTM_GETDCB = 78,
-RTM_SETDCB = 79,
-RTM_NEWNETCONF = 80,
-RTM_DELNETCONF = 81,
-RTM_GETNETCONF = 82,
-RTM_NEWMDB = 84,
-RTM_DELMDB = 85,
-RTM_GETMDB = 86,
-RTM_NEWNSID = 88,
-RTM_DELNSID = 89,
-RTM_GETNSID = 90,
-RTM_NEWSTATS = 92,
-RTM_GETSTATS = 94,
-RTM_SETSTATS = 95,
-RTM_NEWCACHEREPORT = 96,
-RTM_NEWCHAIN = 100,
-RTM_DELCHAIN = 101,
-RTM_GETCHAIN = 102,
-RTM_NEWNEXTHOP = 104,
-RTM_DELNEXTHOP = 105,
-RTM_GETNEXTHOP = 106,
-RTM_NEWLINKPROP = 108,
-RTM_DELLINKPROP = 109,
-RTM_GETLINKPROP = 110,
-RTM_NEWVLAN = 112,
-RTM_DELVLAN = 113,
-RTM_GETVLAN = 114,
-RTM_NEWNEXTHOPBUCKET = 116,
-RTM_DELNEXTHOPBUCKET = 117,
-RTM_GETNEXTHOPBUCKET = 118,
-RTM_NEWTUNNEL = 120,
-RTM_DELTUNNEL = 121,
-RTM_GETTUNNEL = 122,
-__RTM_MAX = 123,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtattr {
-pub rta_len: crate::ctypes::c_ushort,
-pub rta_type: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtmsg {
-pub rtm_family: crate::ctypes::c_uchar,
-pub rtm_dst_len: crate::ctypes::c_uchar,
-pub rtm_src_len: crate::ctypes::c_uchar,
-pub rtm_tos: crate::ctypes::c_uchar,
-pub rtm_table: crate::ctypes::c_uchar,
-pub rtm_protocol: crate::ctypes::c_uchar,
-pub rtm_scope: crate::ctypes::c_uchar,
-pub rtm_type: crate::ctypes::c_uchar,
-pub rtm_flags: crate::ctypes::c_uint,
-}
-pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC;
-pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST;
-pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL;
-pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST;
-pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST;
-pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST;
-pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE;
-pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE;
-pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT;
-pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW;
-pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT;
-pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE;
-pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_61 {
-RTN_UNSPEC = 0,
-RTN_UNICAST = 1,
-RTN_LOCAL = 2,
-RTN_BROADCAST = 3,
-RTN_ANYCAST = 4,
-RTN_MULTICAST = 5,
-RTN_BLACKHOLE = 6,
-RTN_UNREACHABLE = 7,
-RTN_PROHIBIT = 8,
-RTN_THROW = 9,
-RTN_NAT = 10,
-RTN_XRESOLVE = 11,
-__RTN_MAX = 12,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_scope_t {
-RT_SCOPE_UNIVERSE = 0,
-RT_SCOPE_SITE = 200,
-RT_SCOPE_LINK = 253,
-RT_SCOPE_HOST = 254,
-RT_SCOPE_NOWHERE = 255,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_class_t {
-RT_TABLE_UNSPEC = 0,
-RT_TABLE_COMPAT = 252,
-RT_TABLE_DEFAULT = 253,
-RT_TABLE_MAIN = 254,
-RT_TABLE_LOCAL = 255,
-RT_TABLE_MAX = 4294967295,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtattr_type_t {
-RTA_UNSPEC = 0,
-RTA_DST = 1,
-RTA_SRC = 2,
-RTA_IIF = 3,
-RTA_OIF = 4,
-RTA_GATEWAY = 5,
-RTA_PRIORITY = 6,
-RTA_PREFSRC = 7,
-RTA_METRICS = 8,
-RTA_MULTIPATH = 9,
-RTA_PROTOINFO = 10,
-RTA_FLOW = 11,
-RTA_CACHEINFO = 12,
-RTA_SESSION = 13,
-RTA_MP_ALGO = 14,
-RTA_TABLE = 15,
-RTA_MARK = 16,
-RTA_MFC_STATS = 17,
-RTA_VIA = 18,
-RTA_NEWDST = 19,
-RTA_PREF = 20,
-RTA_ENCAP_TYPE = 21,
-RTA_ENCAP = 22,
-RTA_EXPIRES = 23,
-RTA_PAD = 24,
-RTA_UID = 25,
-RTA_TTL_PROPAGATE = 26,
-RTA_IP_PROTO = 27,
-RTA_SPORT = 28,
-RTA_DPORT = 29,
-RTA_NH_ID = 30,
-__RTA_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnexthop {
-pub rtnh_len: crate::ctypes::c_ushort,
-pub rtnh_flags: crate::ctypes::c_uchar,
-pub rtnh_hops: crate::ctypes::c_uchar,
-pub rtnh_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rtvia {
-pub rtvia_family: __kernel_sa_family_t,
-pub rtvia_addr: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_cacheinfo {
-pub rta_clntref: __u32,
-pub rta_lastuse: __u32,
-pub rta_expires: __s32,
-pub rta_error: __u32,
-pub rta_used: __u32,
-pub rta_id: __u32,
-pub rta_ts: __u32,
-pub rta_tsage: __u32,
-}
-pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC;
-pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK;
-pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU;
-pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW;
-pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT;
-pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR;
-pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH;
-pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND;
-pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS;
-pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING;
-pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT;
-pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND;
-pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES;
-pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN;
-pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND;
-pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK;
-pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO;
-pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE;
-pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_62 {
-RTAX_UNSPEC = 0,
-RTAX_LOCK = 1,
-RTAX_MTU = 2,
-RTAX_WINDOW = 3,
-RTAX_RTT = 4,
-RTAX_RTTVAR = 5,
-RTAX_SSTHRESH = 6,
-RTAX_CWND = 7,
-RTAX_ADVMSS = 8,
-RTAX_REORDERING = 9,
-RTAX_HOPLIMIT = 10,
-RTAX_INITCWND = 11,
-RTAX_FEATURES = 12,
-RTAX_RTO_MIN = 13,
-RTAX_INITRWND = 14,
-RTAX_QUICKACK = 15,
-RTAX_CC_ALGO = 16,
-RTAX_FASTOPEN_NO_COOKIE = 17,
-__RTAX_MAX = 18,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rta_session {
-pub proto: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub u: rta_session__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union rta_session__bindgen_ty_1 {
-pub ports: rta_session__bindgen_ty_1__bindgen_ty_1,
-pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2,
-pub spi: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_1 {
-pub sport: __u16,
-pub dport: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_2 {
-pub type_: __u8,
-pub code: __u8,
-pub ident: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_mfc_stats {
-pub mfcs_packets: __u64,
-pub mfcs_bytes: __u64,
-pub mfcs_wrong_if: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtgenmsg {
-pub rtgen_family: crate::ctypes::c_uchar,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifinfomsg {
-pub ifi_family: crate::ctypes::c_uchar,
-pub __ifi_pad: crate::ctypes::c_uchar,
-pub ifi_type: crate::ctypes::c_ushort,
-pub ifi_index: crate::ctypes::c_int,
-pub ifi_flags: crate::ctypes::c_uint,
-pub ifi_change: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefixmsg {
-pub prefix_family: crate::ctypes::c_uchar,
-pub prefix_pad1: crate::ctypes::c_uchar,
-pub prefix_pad2: crate::ctypes::c_ushort,
-pub prefix_ifindex: crate::ctypes::c_int,
-pub prefix_type: crate::ctypes::c_uchar,
-pub prefix_len: crate::ctypes::c_uchar,
-pub prefix_flags: crate::ctypes::c_uchar,
-pub prefix_pad3: crate::ctypes::c_uchar,
-}
-pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC;
-pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS;
-pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO;
-pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_63 {
-PREFIX_UNSPEC = 0,
-PREFIX_ADDRESS = 1,
-PREFIX_CACHEINFO = 2,
-__PREFIX_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefix_cacheinfo {
-pub preferred_time: __u32,
-pub valid_time: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcmsg {
-pub tcm_family: crate::ctypes::c_uchar,
-pub tcm__pad1: crate::ctypes::c_uchar,
-pub tcm__pad2: crate::ctypes::c_ushort,
-pub tcm_ifindex: crate::ctypes::c_int,
-pub tcm_handle: __u32,
-pub tcm_parent: __u32,
-pub tcm_info: __u32,
-}
-pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC;
-pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND;
-pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS;
-pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS;
-pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS;
-pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE;
-pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT;
-pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2;
-pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB;
-pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD;
-pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE;
-pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN;
-pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD;
-pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK;
-pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK;
-pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS;
-pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_64 {
-TCA_UNSPEC = 0,
-TCA_KIND = 1,
-TCA_OPTIONS = 2,
-TCA_STATS = 3,
-TCA_XSTATS = 4,
-TCA_RATE = 5,
-TCA_FCNT = 6,
-TCA_STATS2 = 7,
-TCA_STAB = 8,
-TCA_PAD = 9,
-TCA_DUMP_INVISIBLE = 10,
-TCA_CHAIN = 11,
-TCA_HW_OFFLOAD = 12,
-TCA_INGRESS_BLOCK = 13,
-TCA_EGRESS_BLOCK = 14,
-TCA_DUMP_FLAGS = 15,
-__TCA_MAX = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nduseroptmsg {
-pub nduseropt_family: crate::ctypes::c_uchar,
-pub nduseropt_pad1: crate::ctypes::c_uchar,
-pub nduseropt_opts_len: crate::ctypes::c_ushort,
-pub nduseropt_ifindex: crate::ctypes::c_int,
-pub nduseropt_icmp_type: __u8,
-pub nduseropt_icmp_code: __u8,
-pub nduseropt_pad2: crate::ctypes::c_ushort,
-pub nduseropt_pad3: crate::ctypes::c_uint,
-}
-pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC;
-pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR;
-pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_65 {
-NDUSEROPT_UNSPEC = 0,
-NDUSEROPT_SRCADDR = 1,
-__NDUSEROPT_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtnetlink_groups {
-RTNLGRP_NONE = 0,
-RTNLGRP_LINK = 1,
-RTNLGRP_NOTIFY = 2,
-RTNLGRP_NEIGH = 3,
-RTNLGRP_TC = 4,
-RTNLGRP_IPV4_IFADDR = 5,
-RTNLGRP_IPV4_MROUTE = 6,
-RTNLGRP_IPV4_ROUTE = 7,
-RTNLGRP_IPV4_RULE = 8,
-RTNLGRP_IPV6_IFADDR = 9,
-RTNLGRP_IPV6_MROUTE = 10,
-RTNLGRP_IPV6_ROUTE = 11,
-RTNLGRP_IPV6_IFINFO = 12,
-RTNLGRP_DECnet_IFADDR = 13,
-RTNLGRP_NOP2 = 14,
-RTNLGRP_DECnet_ROUTE = 15,
-RTNLGRP_DECnet_RULE = 16,
-RTNLGRP_NOP4 = 17,
-RTNLGRP_IPV6_PREFIX = 18,
-RTNLGRP_IPV6_RULE = 19,
-RTNLGRP_ND_USEROPT = 20,
-RTNLGRP_PHONET_IFADDR = 21,
-RTNLGRP_PHONET_ROUTE = 22,
-RTNLGRP_DCB = 23,
-RTNLGRP_IPV4_NETCONF = 24,
-RTNLGRP_IPV6_NETCONF = 25,
-RTNLGRP_MDB = 26,
-RTNLGRP_MPLS_ROUTE = 27,
-RTNLGRP_NSID = 28,
-RTNLGRP_MPLS_NETCONF = 29,
-RTNLGRP_IPV4_MROUTE_R = 30,
-RTNLGRP_IPV6_MROUTE_R = 31,
-RTNLGRP_NEXTHOP = 32,
-RTNLGRP_BRVLAN = 33,
-RTNLGRP_MCTP_IFADDR = 34,
-RTNLGRP_TUNNEL = 35,
-RTNLGRP_STATS = 36,
-__RTNLGRP_MAX = 37,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcamsg {
-pub tca_family: crate::ctypes::c_uchar,
-pub tca__pad1: crate::ctypes::c_uchar,
-pub tca__pad2: crate::ctypes::c_ushort,
-}
-pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC;
-pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB;
-pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS;
-pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT;
-pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA;
-pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_66 {
-TCA_ROOT_UNSPEC = 0,
-TCA_ROOT_TAB = 1,
-TCA_ROOT_FLAGS = 2,
-TCA_ROOT_COUNT = 3,
-TCA_ROOT_TIME_DELTA = 4,
-__TCA_ROOT_MAX = 5,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/x32/errno.rs b/vendor/linux-raw-sys-0.3.2/src/x32/errno.rs
deleted file mode 100644
index 8c5620d74..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/x32/errno.rs
+++ /dev/null
@@ -1,135 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const EPERM: u32 = 1;
-pub const ENOENT: u32 = 2;
-pub const ESRCH: u32 = 3;
-pub const EINTR: u32 = 4;
-pub const EIO: u32 = 5;
-pub const ENXIO: u32 = 6;
-pub const E2BIG: u32 = 7;
-pub const ENOEXEC: u32 = 8;
-pub const EBADF: u32 = 9;
-pub const ECHILD: u32 = 10;
-pub const EAGAIN: u32 = 11;
-pub const ENOMEM: u32 = 12;
-pub const EACCES: u32 = 13;
-pub const EFAULT: u32 = 14;
-pub const ENOTBLK: u32 = 15;
-pub const EBUSY: u32 = 16;
-pub const EEXIST: u32 = 17;
-pub const EXDEV: u32 = 18;
-pub const ENODEV: u32 = 19;
-pub const ENOTDIR: u32 = 20;
-pub const EISDIR: u32 = 21;
-pub const EINVAL: u32 = 22;
-pub const ENFILE: u32 = 23;
-pub const EMFILE: u32 = 24;
-pub const ENOTTY: u32 = 25;
-pub const ETXTBSY: u32 = 26;
-pub const EFBIG: u32 = 27;
-pub const ENOSPC: u32 = 28;
-pub const ESPIPE: u32 = 29;
-pub const EROFS: u32 = 30;
-pub const EMLINK: u32 = 31;
-pub const EPIPE: u32 = 32;
-pub const EDOM: u32 = 33;
-pub const ERANGE: u32 = 34;
-pub const EDEADLK: u32 = 35;
-pub const ENAMETOOLONG: u32 = 36;
-pub const ENOLCK: u32 = 37;
-pub const ENOSYS: u32 = 38;
-pub const ENOTEMPTY: u32 = 39;
-pub const ELOOP: u32 = 40;
-pub const EWOULDBLOCK: u32 = 11;
-pub const ENOMSG: u32 = 42;
-pub const EIDRM: u32 = 43;
-pub const ECHRNG: u32 = 44;
-pub const EL2NSYNC: u32 = 45;
-pub const EL3HLT: u32 = 46;
-pub const EL3RST: u32 = 47;
-pub const ELNRNG: u32 = 48;
-pub const EUNATCH: u32 = 49;
-pub const ENOCSI: u32 = 50;
-pub const EL2HLT: u32 = 51;
-pub const EBADE: u32 = 52;
-pub const EBADR: u32 = 53;
-pub const EXFULL: u32 = 54;
-pub const ENOANO: u32 = 55;
-pub const EBADRQC: u32 = 56;
-pub const EBADSLT: u32 = 57;
-pub const EDEADLOCK: u32 = 35;
-pub const EBFONT: u32 = 59;
-pub const ENOSTR: u32 = 60;
-pub const ENODATA: u32 = 61;
-pub const ETIME: u32 = 62;
-pub const ENOSR: u32 = 63;
-pub const ENONET: u32 = 64;
-pub const ENOPKG: u32 = 65;
-pub const EREMOTE: u32 = 66;
-pub const ENOLINK: u32 = 67;
-pub const EADV: u32 = 68;
-pub const ESRMNT: u32 = 69;
-pub const ECOMM: u32 = 70;
-pub const EPROTO: u32 = 71;
-pub const EMULTIHOP: u32 = 72;
-pub const EDOTDOT: u32 = 73;
-pub const EBADMSG: u32 = 74;
-pub const EOVERFLOW: u32 = 75;
-pub const ENOTUNIQ: u32 = 76;
-pub const EBADFD: u32 = 77;
-pub const EREMCHG: u32 = 78;
-pub const ELIBACC: u32 = 79;
-pub const ELIBBAD: u32 = 80;
-pub const ELIBSCN: u32 = 81;
-pub const ELIBMAX: u32 = 82;
-pub const ELIBEXEC: u32 = 83;
-pub const EILSEQ: u32 = 84;
-pub const ERESTART: u32 = 85;
-pub const ESTRPIPE: u32 = 86;
-pub const EUSERS: u32 = 87;
-pub const ENOTSOCK: u32 = 88;
-pub const EDESTADDRREQ: u32 = 89;
-pub const EMSGSIZE: u32 = 90;
-pub const EPROTOTYPE: u32 = 91;
-pub const ENOPROTOOPT: u32 = 92;
-pub const EPROTONOSUPPORT: u32 = 93;
-pub const ESOCKTNOSUPPORT: u32 = 94;
-pub const EOPNOTSUPP: u32 = 95;
-pub const EPFNOSUPPORT: u32 = 96;
-pub const EAFNOSUPPORT: u32 = 97;
-pub const EADDRINUSE: u32 = 98;
-pub const EADDRNOTAVAIL: u32 = 99;
-pub const ENETDOWN: u32 = 100;
-pub const ENETUNREACH: u32 = 101;
-pub const ENETRESET: u32 = 102;
-pub const ECONNABORTED: u32 = 103;
-pub const ECONNRESET: u32 = 104;
-pub const ENOBUFS: u32 = 105;
-pub const EISCONN: u32 = 106;
-pub const ENOTCONN: u32 = 107;
-pub const ESHUTDOWN: u32 = 108;
-pub const ETOOMANYREFS: u32 = 109;
-pub const ETIMEDOUT: u32 = 110;
-pub const ECONNREFUSED: u32 = 111;
-pub const EHOSTDOWN: u32 = 112;
-pub const EHOSTUNREACH: u32 = 113;
-pub const EALREADY: u32 = 114;
-pub const EINPROGRESS: u32 = 115;
-pub const ESTALE: u32 = 116;
-pub const EUCLEAN: u32 = 117;
-pub const ENOTNAM: u32 = 118;
-pub const ENAVAIL: u32 = 119;
-pub const EISNAM: u32 = 120;
-pub const EREMOTEIO: u32 = 121;
-pub const EDQUOT: u32 = 122;
-pub const ENOMEDIUM: u32 = 123;
-pub const EMEDIUMTYPE: u32 = 124;
-pub const ECANCELED: u32 = 125;
-pub const ENOKEY: u32 = 126;
-pub const EKEYEXPIRED: u32 = 127;
-pub const EKEYREVOKED: u32 = 128;
-pub const EKEYREJECTED: u32 = 129;
-pub const EOWNERDEAD: u32 = 130;
-pub const ENOTRECOVERABLE: u32 = 131;
-pub const ERFKILL: u32 = 132;
-pub const EHWPOISON: u32 = 133;
diff --git a/vendor/linux-raw-sys-0.3.2/src/x32/general.rs b/vendor/linux-raw-sys-0.3.2/src/x32/general.rs
deleted file mode 100644
index 95fc4556b..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/x32/general.rs
+++ /dev/null
@@ -1,5314 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
-pub struct __BindgenBitfieldUnit<Storage> {
-storage: Storage,
-}
-impl<Storage> __BindgenBitfieldUnit<Storage> {
-#[inline]
-pub const fn new(storage: Storage) -> Self {
-Self { storage }
-}
-}
-impl<Storage> __BindgenBitfieldUnit<Storage>
-where
-Storage: AsRef<[u8]> + AsMut<[u8]>,
-{
-#[inline]
-pub fn get_bit(&self, index: usize) -> bool {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = self.storage.as_ref()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-byte & mask == mask
-}
-#[inline]
-pub fn set_bit(&mut self, index: usize, val: bool) {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = &mut self.storage.as_mut()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-if val {
-*byte |= mask;
-} else {
-*byte &= !mask;
-}
-}
-#[inline]
-pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-let mut val = 0;
-for i in 0..(bit_width as usize) {
-if self.get_bit(i + bit_offset) {
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-val |= 1 << index;
-}
-}
-val
-}
-#[inline]
-pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-for i in 0..(bit_width as usize) {
-let mask = 1 << i;
-let val_bit_is_set = val & mask == mask;
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-self.set_bit(index + bit_offset, val_bit_is_set);
-}
-}
-}
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-#[repr(C)]
-pub struct __BindgenUnionField<T>(::core::marker::PhantomData<T>);
-impl<T> __BindgenUnionField<T> {
-#[inline]
-pub const fn new() -> Self {
-__BindgenUnionField(::core::marker::PhantomData)
-}
-#[inline]
-pub unsafe fn as_ref(&self) -> &T {
-::core::mem::transmute(self)
-}
-#[inline]
-pub unsafe fn as_mut(&mut self) -> &mut T {
-::core::mem::transmute(self)
-}
-}
-impl<T> ::core::default::Default for __BindgenUnionField<T> {
-#[inline]
-fn default() -> Self {
-Self::new()
-}
-}
-impl<T> ::core::clone::Clone for __BindgenUnionField<T> {
-#[inline]
-fn clone(&self) -> Self {
-Self::new()
-}
-}
-impl<T> ::core::marker::Copy for __BindgenUnionField<T> {}
-impl<T> ::core::fmt::Debug for __BindgenUnionField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__BindgenUnionField")
-}
-}
-impl<T> ::core::hash::Hash for __BindgenUnionField<T> {
-fn hash<H: ::core::hash::Hasher>(&self, _state: &mut H) {}
-}
-impl<T> ::core::cmp::PartialEq for __BindgenUnionField<T> {
-fn eq(&self, _other: &__BindgenUnionField<T>) -> bool {
-true
-}
-}
-impl<T> ::core::cmp::Eq for __BindgenUnionField<T> {}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const AT_SYSINFO_EHDR: u32 = 33;
-pub const AT_VECTOR_SIZE_ARCH: u32 = 3;
-pub const AT_NULL: u32 = 0;
-pub const AT_IGNORE: u32 = 1;
-pub const AT_EXECFD: u32 = 2;
-pub const AT_PHDR: u32 = 3;
-pub const AT_PHENT: u32 = 4;
-pub const AT_PHNUM: u32 = 5;
-pub const AT_PAGESZ: u32 = 6;
-pub const AT_BASE: u32 = 7;
-pub const AT_FLAGS: u32 = 8;
-pub const AT_ENTRY: u32 = 9;
-pub const AT_NOTELF: u32 = 10;
-pub const AT_UID: u32 = 11;
-pub const AT_EUID: u32 = 12;
-pub const AT_GID: u32 = 13;
-pub const AT_EGID: u32 = 14;
-pub const AT_PLATFORM: u32 = 15;
-pub const AT_HWCAP: u32 = 16;
-pub const AT_CLKTCK: u32 = 17;
-pub const AT_SECURE: u32 = 23;
-pub const AT_BASE_PLATFORM: u32 = 24;
-pub const AT_RANDOM: u32 = 25;
-pub const AT_HWCAP2: u32 = 26;
-pub const AT_EXECFN: u32 = 31;
-pub const AT_MINSIGSTKSZ: u32 = 51;
-pub const __BITS_PER_LONG: u32 = 32;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S_1: u32 = 1;
-pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798;
-pub const _LINUX_CAPABILITY_U32S_2: u32 = 2;
-pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514;
-pub const _LINUX_CAPABILITY_U32S_3: u32 = 2;
-pub const VFS_CAP_REVISION_MASK: u32 = 4278190080;
-pub const VFS_CAP_REVISION_SHIFT: u32 = 24;
-pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081;
-pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1;
-pub const VFS_CAP_REVISION_1: u32 = 16777216;
-pub const VFS_CAP_U32_1: u32 = 1;
-pub const VFS_CAP_REVISION_2: u32 = 33554432;
-pub const VFS_CAP_U32_2: u32 = 2;
-pub const VFS_CAP_REVISION_3: u32 = 50331648;
-pub const VFS_CAP_U32_3: u32 = 2;
-pub const VFS_CAP_U32: u32 = 2;
-pub const VFS_CAP_REVISION: u32 = 50331648;
-pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S: u32 = 1;
-pub const CAP_CHOWN: u32 = 0;
-pub const CAP_DAC_OVERRIDE: u32 = 1;
-pub const CAP_DAC_READ_SEARCH: u32 = 2;
-pub const CAP_FOWNER: u32 = 3;
-pub const CAP_FSETID: u32 = 4;
-pub const CAP_KILL: u32 = 5;
-pub const CAP_SETGID: u32 = 6;
-pub const CAP_SETUID: u32 = 7;
-pub const CAP_SETPCAP: u32 = 8;
-pub const CAP_LINUX_IMMUTABLE: u32 = 9;
-pub const CAP_NET_BIND_SERVICE: u32 = 10;
-pub const CAP_NET_BROADCAST: u32 = 11;
-pub const CAP_NET_ADMIN: u32 = 12;
-pub const CAP_NET_RAW: u32 = 13;
-pub const CAP_IPC_LOCK: u32 = 14;
-pub const CAP_IPC_OWNER: u32 = 15;
-pub const CAP_SYS_MODULE: u32 = 16;
-pub const CAP_SYS_RAWIO: u32 = 17;
-pub const CAP_SYS_CHROOT: u32 = 18;
-pub const CAP_SYS_PTRACE: u32 = 19;
-pub const CAP_SYS_PACCT: u32 = 20;
-pub const CAP_SYS_ADMIN: u32 = 21;
-pub const CAP_SYS_BOOT: u32 = 22;
-pub const CAP_SYS_NICE: u32 = 23;
-pub const CAP_SYS_RESOURCE: u32 = 24;
-pub const CAP_SYS_TIME: u32 = 25;
-pub const CAP_SYS_TTY_CONFIG: u32 = 26;
-pub const CAP_MKNOD: u32 = 27;
-pub const CAP_LEASE: u32 = 28;
-pub const CAP_AUDIT_WRITE: u32 = 29;
-pub const CAP_AUDIT_CONTROL: u32 = 30;
-pub const CAP_SETFCAP: u32 = 31;
-pub const CAP_MAC_OVERRIDE: u32 = 32;
-pub const CAP_MAC_ADMIN: u32 = 33;
-pub const CAP_SYSLOG: u32 = 34;
-pub const CAP_WAKE_ALARM: u32 = 35;
-pub const CAP_BLOCK_SUSPEND: u32 = 36;
-pub const CAP_AUDIT_READ: u32 = 37;
-pub const CAP_PERFMON: u32 = 38;
-pub const CAP_BPF: u32 = 39;
-pub const CAP_CHECKPOINT_RESTORE: u32 = 40;
-pub const CAP_LAST_CAP: u32 = 40;
-pub const O_ACCMODE: u32 = 3;
-pub const O_RDONLY: u32 = 0;
-pub const O_WRONLY: u32 = 1;
-pub const O_RDWR: u32 = 2;
-pub const O_CREAT: u32 = 64;
-pub const O_EXCL: u32 = 128;
-pub const O_NOCTTY: u32 = 256;
-pub const O_TRUNC: u32 = 512;
-pub const O_APPEND: u32 = 1024;
-pub const O_NONBLOCK: u32 = 2048;
-pub const O_DSYNC: u32 = 4096;
-pub const FASYNC: u32 = 8192;
-pub const O_DIRECT: u32 = 16384;
-pub const O_LARGEFILE: u32 = 32768;
-pub const O_DIRECTORY: u32 = 65536;
-pub const O_NOFOLLOW: u32 = 131072;
-pub const O_NOATIME: u32 = 262144;
-pub const O_CLOEXEC: u32 = 524288;
-pub const __O_SYNC: u32 = 1048576;
-pub const O_SYNC: u32 = 1052672;
-pub const O_PATH: u32 = 2097152;
-pub const __O_TMPFILE: u32 = 4194304;
-pub const O_TMPFILE: u32 = 4259840;
-pub const O_TMPFILE_MASK: u32 = 4259904;
-pub const O_NDELAY: u32 = 2048;
-pub const F_DUPFD: u32 = 0;
-pub const F_GETFD: u32 = 1;
-pub const F_SETFD: u32 = 2;
-pub const F_GETFL: u32 = 3;
-pub const F_SETFL: u32 = 4;
-pub const F_GETLK: u32 = 5;
-pub const F_SETLK: u32 = 6;
-pub const F_SETLKW: u32 = 7;
-pub const F_SETOWN: u32 = 8;
-pub const F_GETOWN: u32 = 9;
-pub const F_SETSIG: u32 = 10;
-pub const F_GETSIG: u32 = 11;
-pub const F_GETLK64: u32 = 12;
-pub const F_SETLK64: u32 = 13;
-pub const F_SETLKW64: u32 = 14;
-pub const F_SETOWN_EX: u32 = 15;
-pub const F_GETOWN_EX: u32 = 16;
-pub const F_GETOWNER_UIDS: u32 = 17;
-pub const F_OFD_GETLK: u32 = 36;
-pub const F_OFD_SETLK: u32 = 37;
-pub const F_OFD_SETLKW: u32 = 38;
-pub const F_OWNER_TID: u32 = 0;
-pub const F_OWNER_PID: u32 = 1;
-pub const F_OWNER_PGRP: u32 = 2;
-pub const FD_CLOEXEC: u32 = 1;
-pub const F_RDLCK: u32 = 0;
-pub const F_WRLCK: u32 = 1;
-pub const F_UNLCK: u32 = 2;
-pub const F_EXLCK: u32 = 4;
-pub const F_SHLCK: u32 = 8;
-pub const LOCK_SH: u32 = 1;
-pub const LOCK_EX: u32 = 2;
-pub const LOCK_NB: u32 = 4;
-pub const LOCK_UN: u32 = 8;
-pub const LOCK_MAND: u32 = 32;
-pub const LOCK_READ: u32 = 64;
-pub const LOCK_WRITE: u32 = 128;
-pub const LOCK_RW: u32 = 192;
-pub const F_LINUX_SPECIFIC_BASE: u32 = 1024;
-pub const RESOLVE_NO_XDEV: u32 = 1;
-pub const RESOLVE_NO_MAGICLINKS: u32 = 2;
-pub const RESOLVE_NO_SYMLINKS: u32 = 4;
-pub const RESOLVE_BENEATH: u32 = 8;
-pub const RESOLVE_IN_ROOT: u32 = 16;
-pub const RESOLVE_CACHED: u32 = 32;
-pub const F_SETLEASE: u32 = 1024;
-pub const F_GETLEASE: u32 = 1025;
-pub const F_CANCELLK: u32 = 1029;
-pub const F_DUPFD_CLOEXEC: u32 = 1030;
-pub const F_NOTIFY: u32 = 1026;
-pub const F_SETPIPE_SZ: u32 = 1031;
-pub const F_GETPIPE_SZ: u32 = 1032;
-pub const F_ADD_SEALS: u32 = 1033;
-pub const F_GET_SEALS: u32 = 1034;
-pub const F_SEAL_SEAL: u32 = 1;
-pub const F_SEAL_SHRINK: u32 = 2;
-pub const F_SEAL_GROW: u32 = 4;
-pub const F_SEAL_WRITE: u32 = 8;
-pub const F_SEAL_FUTURE_WRITE: u32 = 16;
-pub const F_GET_RW_HINT: u32 = 1035;
-pub const F_SET_RW_HINT: u32 = 1036;
-pub const F_GET_FILE_RW_HINT: u32 = 1037;
-pub const F_SET_FILE_RW_HINT: u32 = 1038;
-pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const RWH_WRITE_LIFE_NONE: u32 = 1;
-pub const RWH_WRITE_LIFE_SHORT: u32 = 2;
-pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3;
-pub const RWH_WRITE_LIFE_LONG: u32 = 4;
-pub const RWH_WRITE_LIFE_EXTREME: u32 = 5;
-pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const DN_ACCESS: u32 = 1;
-pub const DN_MODIFY: u32 = 2;
-pub const DN_CREATE: u32 = 4;
-pub const DN_DELETE: u32 = 8;
-pub const DN_RENAME: u32 = 16;
-pub const DN_ATTRIB: u32 = 32;
-pub const DN_MULTISHOT: u32 = 2147483648;
-pub const AT_FDCWD: i32 = -100;
-pub const AT_SYMLINK_NOFOLLOW: u32 = 256;
-pub const AT_EACCESS: u32 = 512;
-pub const AT_REMOVEDIR: u32 = 512;
-pub const AT_SYMLINK_FOLLOW: u32 = 1024;
-pub const AT_NO_AUTOMOUNT: u32 = 2048;
-pub const AT_EMPTY_PATH: u32 = 4096;
-pub const AT_STATX_SYNC_TYPE: u32 = 24576;
-pub const AT_STATX_SYNC_AS_STAT: u32 = 0;
-pub const AT_STATX_FORCE_SYNC: u32 = 8192;
-pub const AT_STATX_DONT_SYNC: u32 = 16384;
-pub const AT_RECURSIVE: u32 = 32768;
-pub const EPOLL_CLOEXEC: u32 = 524288;
-pub const EPOLL_CTL_ADD: u32 = 1;
-pub const EPOLL_CTL_DEL: u32 = 2;
-pub const EPOLL_CTL_MOD: u32 = 3;
-pub const POSIX_FADV_NORMAL: u32 = 0;
-pub const POSIX_FADV_RANDOM: u32 = 1;
-pub const POSIX_FADV_SEQUENTIAL: u32 = 2;
-pub const POSIX_FADV_WILLNEED: u32 = 3;
-pub const POSIX_FADV_DONTNEED: u32 = 4;
-pub const POSIX_FADV_NOREUSE: u32 = 5;
-pub const FALLOC_FL_KEEP_SIZE: u32 = 1;
-pub const FALLOC_FL_PUNCH_HOLE: u32 = 2;
-pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4;
-pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8;
-pub const FALLOC_FL_ZERO_RANGE: u32 = 16;
-pub const FALLOC_FL_INSERT_RANGE: u32 = 32;
-pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64;
-pub const NR_OPEN: u32 = 1024;
-pub const NGROUPS_MAX: u32 = 65536;
-pub const ARG_MAX: u32 = 131072;
-pub const LINK_MAX: u32 = 127;
-pub const MAX_CANON: u32 = 255;
-pub const MAX_INPUT: u32 = 255;
-pub const NAME_MAX: u32 = 255;
-pub const PATH_MAX: u32 = 4096;
-pub const PIPE_BUF: u32 = 4096;
-pub const XATTR_NAME_MAX: u32 = 255;
-pub const XATTR_SIZE_MAX: u32 = 65536;
-pub const XATTR_LIST_MAX: u32 = 65536;
-pub const RTSIG_MAX: u32 = 32;
-pub const _IOC_NRBITS: u32 = 8;
-pub const _IOC_TYPEBITS: u32 = 8;
-pub const _IOC_SIZEBITS: u32 = 14;
-pub const _IOC_DIRBITS: u32 = 2;
-pub const _IOC_NRMASK: u32 = 255;
-pub const _IOC_TYPEMASK: u32 = 255;
-pub const _IOC_SIZEMASK: u32 = 16383;
-pub const _IOC_DIRMASK: u32 = 3;
-pub const _IOC_NRSHIFT: u32 = 0;
-pub const _IOC_TYPESHIFT: u32 = 8;
-pub const _IOC_SIZESHIFT: u32 = 16;
-pub const _IOC_DIRSHIFT: u32 = 30;
-pub const _IOC_NONE: u32 = 0;
-pub const _IOC_WRITE: u32 = 1;
-pub const _IOC_READ: u32 = 2;
-pub const IOC_IN: u32 = 1073741824;
-pub const IOC_OUT: u32 = 2147483648;
-pub const IOC_INOUT: u32 = 3221225472;
-pub const IOCSIZE_MASK: u32 = 1073676288;
-pub const IOCSIZE_SHIFT: u32 = 16;
-pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16;
-pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1;
-pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4;
-pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5;
-pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6;
-pub const FSCRYPT_MODE_SM4_XTS: u32 = 7;
-pub const FSCRYPT_MODE_SM4_CTS: u32 = 8;
-pub const FSCRYPT_MODE_ADIANTUM: u32 = 9;
-pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10;
-pub const FSCRYPT_POLICY_V1: u32 = 0;
-pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64;
-pub const FSCRYPT_POLICY_V2: u32 = 2;
-pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16;
-pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1;
-pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1;
-pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3;
-pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1;
-pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FS_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FS_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FS_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FS_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FS_POLICY_FLAGS_VALID: u32 = 7;
-pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0;
-pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1;
-pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2;
-pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3;
-pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4;
-pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5;
-pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6;
-pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9;
-pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FS_MAX_KEY_SIZE: u32 = 64;
-pub const MS_RDONLY: u32 = 1;
-pub const MS_NOSUID: u32 = 2;
-pub const MS_NODEV: u32 = 4;
-pub const MS_NOEXEC: u32 = 8;
-pub const MS_SYNCHRONOUS: u32 = 16;
-pub const MS_REMOUNT: u32 = 32;
-pub const MS_MANDLOCK: u32 = 64;
-pub const MS_DIRSYNC: u32 = 128;
-pub const MS_NOSYMFOLLOW: u32 = 256;
-pub const MS_NOATIME: u32 = 1024;
-pub const MS_NODIRATIME: u32 = 2048;
-pub const MS_BIND: u32 = 4096;
-pub const MS_MOVE: u32 = 8192;
-pub const MS_REC: u32 = 16384;
-pub const MS_VERBOSE: u32 = 32768;
-pub const MS_SILENT: u32 = 32768;
-pub const MS_POSIXACL: u32 = 65536;
-pub const MS_UNBINDABLE: u32 = 131072;
-pub const MS_PRIVATE: u32 = 262144;
-pub const MS_SLAVE: u32 = 524288;
-pub const MS_SHARED: u32 = 1048576;
-pub const MS_RELATIME: u32 = 2097152;
-pub const MS_KERNMOUNT: u32 = 4194304;
-pub const MS_I_VERSION: u32 = 8388608;
-pub const MS_STRICTATIME: u32 = 16777216;
-pub const MS_LAZYTIME: u32 = 33554432;
-pub const MS_SUBMOUNT: u32 = 67108864;
-pub const MS_NOREMOTELOCK: u32 = 134217728;
-pub const MS_NOSEC: u32 = 268435456;
-pub const MS_BORN: u32 = 536870912;
-pub const MS_ACTIVE: u32 = 1073741824;
-pub const MS_NOUSER: u32 = 2147483648;
-pub const MS_RMT_MASK: u32 = 41943121;
-pub const MS_MGC_VAL: u32 = 3236757504;
-pub const MS_MGC_MSK: u32 = 4294901760;
-pub const OPEN_TREE_CLONE: u32 = 1;
-pub const OPEN_TREE_CLOEXEC: u32 = 524288;
-pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1;
-pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2;
-pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4;
-pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16;
-pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32;
-pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64;
-pub const MOVE_MOUNT_SET_GROUP: u32 = 256;
-pub const MOVE_MOUNT__MASK: u32 = 375;
-pub const FSOPEN_CLOEXEC: u32 = 1;
-pub const FSPICK_CLOEXEC: u32 = 1;
-pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2;
-pub const FSPICK_NO_AUTOMOUNT: u32 = 4;
-pub const FSPICK_EMPTY_PATH: u32 = 8;
-pub const FSMOUNT_CLOEXEC: u32 = 1;
-pub const MOUNT_ATTR_RDONLY: u32 = 1;
-pub const MOUNT_ATTR_NOSUID: u32 = 2;
-pub const MOUNT_ATTR_NODEV: u32 = 4;
-pub const MOUNT_ATTR_NOEXEC: u32 = 8;
-pub const MOUNT_ATTR__ATIME: u32 = 112;
-pub const MOUNT_ATTR_RELATIME: u32 = 0;
-pub const MOUNT_ATTR_NOATIME: u32 = 16;
-pub const MOUNT_ATTR_STRICTATIME: u32 = 32;
-pub const MOUNT_ATTR_NODIRATIME: u32 = 128;
-pub const MOUNT_ATTR_IDMAP: u32 = 1048576;
-pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152;
-pub const MOUNT_ATTR_SIZE_VER0: u32 = 32;
-pub const INR_OPEN_CUR: u32 = 1024;
-pub const INR_OPEN_MAX: u32 = 4096;
-pub const BLOCK_SIZE_BITS: u32 = 10;
-pub const BLOCK_SIZE: u32 = 1024;
-pub const SEEK_SET: u32 = 0;
-pub const SEEK_CUR: u32 = 1;
-pub const SEEK_END: u32 = 2;
-pub const SEEK_DATA: u32 = 3;
-pub const SEEK_HOLE: u32 = 4;
-pub const SEEK_MAX: u32 = 4;
-pub const RENAME_NOREPLACE: u32 = 1;
-pub const RENAME_EXCHANGE: u32 = 2;
-pub const RENAME_WHITEOUT: u32 = 4;
-pub const FILE_DEDUPE_RANGE_SAME: u32 = 0;
-pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1;
-pub const NR_FILE: u32 = 8192;
-pub const FS_XFLAG_REALTIME: u32 = 1;
-pub const FS_XFLAG_PREALLOC: u32 = 2;
-pub const FS_XFLAG_IMMUTABLE: u32 = 8;
-pub const FS_XFLAG_APPEND: u32 = 16;
-pub const FS_XFLAG_SYNC: u32 = 32;
-pub const FS_XFLAG_NOATIME: u32 = 64;
-pub const FS_XFLAG_NODUMP: u32 = 128;
-pub const FS_XFLAG_RTINHERIT: u32 = 256;
-pub const FS_XFLAG_PROJINHERIT: u32 = 512;
-pub const FS_XFLAG_NOSYMLINKS: u32 = 1024;
-pub const FS_XFLAG_EXTSIZE: u32 = 2048;
-pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096;
-pub const FS_XFLAG_NODEFRAG: u32 = 8192;
-pub const FS_XFLAG_FILESTREAM: u32 = 16384;
-pub const FS_XFLAG_DAX: u32 = 32768;
-pub const FS_XFLAG_COWEXTSIZE: u32 = 65536;
-pub const FS_XFLAG_HASATTR: u32 = 2147483648;
-pub const BMAP_IOCTL: u32 = 1;
-pub const FSLABEL_MAX: u32 = 256;
-pub const FS_SECRM_FL: u32 = 1;
-pub const FS_UNRM_FL: u32 = 2;
-pub const FS_COMPR_FL: u32 = 4;
-pub const FS_SYNC_FL: u32 = 8;
-pub const FS_IMMUTABLE_FL: u32 = 16;
-pub const FS_APPEND_FL: u32 = 32;
-pub const FS_NODUMP_FL: u32 = 64;
-pub const FS_NOATIME_FL: u32 = 128;
-pub const FS_DIRTY_FL: u32 = 256;
-pub const FS_COMPRBLK_FL: u32 = 512;
-pub const FS_NOCOMP_FL: u32 = 1024;
-pub const FS_ENCRYPT_FL: u32 = 2048;
-pub const FS_BTREE_FL: u32 = 4096;
-pub const FS_INDEX_FL: u32 = 4096;
-pub const FS_IMAGIC_FL: u32 = 8192;
-pub const FS_JOURNAL_DATA_FL: u32 = 16384;
-pub const FS_NOTAIL_FL: u32 = 32768;
-pub const FS_DIRSYNC_FL: u32 = 65536;
-pub const FS_TOPDIR_FL: u32 = 131072;
-pub const FS_HUGE_FILE_FL: u32 = 262144;
-pub const FS_EXTENT_FL: u32 = 524288;
-pub const FS_VERITY_FL: u32 = 1048576;
-pub const FS_EA_INODE_FL: u32 = 2097152;
-pub const FS_EOFBLOCKS_FL: u32 = 4194304;
-pub const FS_NOCOW_FL: u32 = 8388608;
-pub const FS_DAX_FL: u32 = 33554432;
-pub const FS_INLINE_DATA_FL: u32 = 268435456;
-pub const FS_PROJINHERIT_FL: u32 = 536870912;
-pub const FS_CASEFOLD_FL: u32 = 1073741824;
-pub const FS_RESERVED_FL: u32 = 2147483648;
-pub const FS_FL_USER_VISIBLE: u32 = 253951;
-pub const FS_FL_USER_MODIFIABLE: u32 = 229631;
-pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1;
-pub const SYNC_FILE_RANGE_WRITE: u32 = 2;
-pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4;
-pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7;
-pub const FUTEX_WAIT: u32 = 0;
-pub const FUTEX_WAKE: u32 = 1;
-pub const FUTEX_FD: u32 = 2;
-pub const FUTEX_REQUEUE: u32 = 3;
-pub const FUTEX_CMP_REQUEUE: u32 = 4;
-pub const FUTEX_WAKE_OP: u32 = 5;
-pub const FUTEX_LOCK_PI: u32 = 6;
-pub const FUTEX_UNLOCK_PI: u32 = 7;
-pub const FUTEX_TRYLOCK_PI: u32 = 8;
-pub const FUTEX_WAIT_BITSET: u32 = 9;
-pub const FUTEX_WAKE_BITSET: u32 = 10;
-pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11;
-pub const FUTEX_CMP_REQUEUE_PI: u32 = 12;
-pub const FUTEX_LOCK_PI2: u32 = 13;
-pub const FUTEX_PRIVATE_FLAG: u32 = 128;
-pub const FUTEX_CLOCK_REALTIME: u32 = 256;
-pub const FUTEX_CMD_MASK: i32 = -385;
-pub const FUTEX_WAIT_PRIVATE: u32 = 128;
-pub const FUTEX_WAKE_PRIVATE: u32 = 129;
-pub const FUTEX_REQUEUE_PRIVATE: u32 = 131;
-pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132;
-pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133;
-pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134;
-pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141;
-pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135;
-pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136;
-pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137;
-pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138;
-pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139;
-pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140;
-pub const FUTEX_32: u32 = 2;
-pub const FUTEX_WAITV_MAX: u32 = 128;
-pub const FUTEX_WAITERS: u32 = 2147483648;
-pub const FUTEX_OWNER_DIED: u32 = 1073741824;
-pub const FUTEX_TID_MASK: u32 = 1073741823;
-pub const ROBUST_LIST_LIMIT: u32 = 2048;
-pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295;
-pub const FUTEX_OP_SET: u32 = 0;
-pub const FUTEX_OP_ADD: u32 = 1;
-pub const FUTEX_OP_OR: u32 = 2;
-pub const FUTEX_OP_ANDN: u32 = 3;
-pub const FUTEX_OP_XOR: u32 = 4;
-pub const FUTEX_OP_OPARG_SHIFT: u32 = 8;
-pub const FUTEX_OP_CMP_EQ: u32 = 0;
-pub const FUTEX_OP_CMP_NE: u32 = 1;
-pub const FUTEX_OP_CMP_LT: u32 = 2;
-pub const FUTEX_OP_CMP_LE: u32 = 3;
-pub const FUTEX_OP_CMP_GT: u32 = 4;
-pub const FUTEX_OP_CMP_GE: u32 = 5;
-pub const __UAPI_DEF_IF_IFCONF: u32 = 1;
-pub const __UAPI_DEF_IF_IFMAP: u32 = 1;
-pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1;
-pub const __UAPI_DEF_IF_IFREQ: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1;
-pub const __UAPI_DEF_IN_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN_IPPROTO: u32 = 1;
-pub const __UAPI_DEF_IN_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP_MREQ: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1;
-pub const __UAPI_DEF_IN_CLASS: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1;
-pub const __UAPI_DEF_IPV6_MREQ: u32 = 1;
-pub const __UAPI_DEF_IPPROTO_V6: u32 = 1;
-pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1;
-pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1;
-pub const __UAPI_DEF_XATTR: u32 = 1;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const IP_TOS: u32 = 1;
-pub const IP_TTL: u32 = 2;
-pub const IP_HDRINCL: u32 = 3;
-pub const IP_OPTIONS: u32 = 4;
-pub const IP_ROUTER_ALERT: u32 = 5;
-pub const IP_RECVOPTS: u32 = 6;
-pub const IP_RETOPTS: u32 = 7;
-pub const IP_PKTINFO: u32 = 8;
-pub const IP_PKTOPTIONS: u32 = 9;
-pub const IP_MTU_DISCOVER: u32 = 10;
-pub const IP_RECVERR: u32 = 11;
-pub const IP_RECVTTL: u32 = 12;
-pub const IP_RECVTOS: u32 = 13;
-pub const IP_MTU: u32 = 14;
-pub const IP_FREEBIND: u32 = 15;
-pub const IP_IPSEC_POLICY: u32 = 16;
-pub const IP_XFRM_POLICY: u32 = 17;
-pub const IP_PASSSEC: u32 = 18;
-pub const IP_TRANSPARENT: u32 = 19;
-pub const IP_RECVRETOPTS: u32 = 7;
-pub const IP_ORIGDSTADDR: u32 = 20;
-pub const IP_RECVORIGDSTADDR: u32 = 20;
-pub const IP_MINTTL: u32 = 21;
-pub const IP_NODEFRAG: u32 = 22;
-pub const IP_CHECKSUM: u32 = 23;
-pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24;
-pub const IP_RECVFRAGSIZE: u32 = 25;
-pub const IP_RECVERR_RFC4884: u32 = 26;
-pub const IP_PMTUDISC_DONT: u32 = 0;
-pub const IP_PMTUDISC_WANT: u32 = 1;
-pub const IP_PMTUDISC_DO: u32 = 2;
-pub const IP_PMTUDISC_PROBE: u32 = 3;
-pub const IP_PMTUDISC_INTERFACE: u32 = 4;
-pub const IP_PMTUDISC_OMIT: u32 = 5;
-pub const IP_MULTICAST_IF: u32 = 32;
-pub const IP_MULTICAST_TTL: u32 = 33;
-pub const IP_MULTICAST_LOOP: u32 = 34;
-pub const IP_ADD_MEMBERSHIP: u32 = 35;
-pub const IP_DROP_MEMBERSHIP: u32 = 36;
-pub const IP_UNBLOCK_SOURCE: u32 = 37;
-pub const IP_BLOCK_SOURCE: u32 = 38;
-pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39;
-pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40;
-pub const IP_MSFILTER: u32 = 41;
-pub const MCAST_JOIN_GROUP: u32 = 42;
-pub const MCAST_BLOCK_SOURCE: u32 = 43;
-pub const MCAST_UNBLOCK_SOURCE: u32 = 44;
-pub const MCAST_LEAVE_GROUP: u32 = 45;
-pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46;
-pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47;
-pub const MCAST_MSFILTER: u32 = 48;
-pub const IP_MULTICAST_ALL: u32 = 49;
-pub const IP_UNICAST_IF: u32 = 50;
-pub const MCAST_EXCLUDE: u32 = 0;
-pub const MCAST_INCLUDE: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1;
-pub const __SOCK_SIZE__: u32 = 16;
-pub const IN_CLASSA_NET: u32 = 4278190080;
-pub const IN_CLASSA_NSHIFT: u32 = 24;
-pub const IN_CLASSA_HOST: u32 = 16777215;
-pub const IN_CLASSA_MAX: u32 = 128;
-pub const IN_CLASSB_NET: u32 = 4294901760;
-pub const IN_CLASSB_NSHIFT: u32 = 16;
-pub const IN_CLASSB_HOST: u32 = 65535;
-pub const IN_CLASSB_MAX: u32 = 65536;
-pub const IN_CLASSC_NET: u32 = 4294967040;
-pub const IN_CLASSC_NSHIFT: u32 = 8;
-pub const IN_CLASSC_HOST: u32 = 255;
-pub const IN_MULTICAST_NET: u32 = 3758096384;
-pub const IN_CLASSE_NET: u32 = 4294967295;
-pub const IN_CLASSE_NSHIFT: u32 = 0;
-pub const IN_LOOPBACKNET: u32 = 127;
-pub const INADDR_LOOPBACK: u32 = 2130706433;
-pub const INADDR_UNSPEC_GROUP: u32 = 3758096384;
-pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385;
-pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386;
-pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490;
-pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639;
-pub const __LITTLE_ENDIAN: u32 = 1234;
-pub const IN_ACCESS: u32 = 1;
-pub const IN_MODIFY: u32 = 2;
-pub const IN_ATTRIB: u32 = 4;
-pub const IN_CLOSE_WRITE: u32 = 8;
-pub const IN_CLOSE_NOWRITE: u32 = 16;
-pub const IN_OPEN: u32 = 32;
-pub const IN_MOVED_FROM: u32 = 64;
-pub const IN_MOVED_TO: u32 = 128;
-pub const IN_CREATE: u32 = 256;
-pub const IN_DELETE: u32 = 512;
-pub const IN_DELETE_SELF: u32 = 1024;
-pub const IN_MOVE_SELF: u32 = 2048;
-pub const IN_UNMOUNT: u32 = 8192;
-pub const IN_Q_OVERFLOW: u32 = 16384;
-pub const IN_IGNORED: u32 = 32768;
-pub const IN_CLOSE: u32 = 24;
-pub const IN_MOVE: u32 = 192;
-pub const IN_ONLYDIR: u32 = 16777216;
-pub const IN_DONT_FOLLOW: u32 = 33554432;
-pub const IN_EXCL_UNLINK: u32 = 67108864;
-pub const IN_MASK_CREATE: u32 = 268435456;
-pub const IN_MASK_ADD: u32 = 536870912;
-pub const IN_ISDIR: u32 = 1073741824;
-pub const IN_ONESHOT: u32 = 2147483648;
-pub const IN_ALL_EVENTS: u32 = 4095;
-pub const IN_CLOEXEC: u32 = 524288;
-pub const IN_NONBLOCK: u32 = 2048;
-pub const IPTOS_TOS_MASK: u32 = 30;
-pub const IPTOS_LOWDELAY: u32 = 16;
-pub const IPTOS_THROUGHPUT: u32 = 8;
-pub const IPTOS_RELIABILITY: u32 = 4;
-pub const IPTOS_MINCOST: u32 = 2;
-pub const IPTOS_PREC_MASK: u32 = 224;
-pub const IPTOS_PREC_NETCONTROL: u32 = 224;
-pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192;
-pub const IPTOS_PREC_CRITIC_ECP: u32 = 160;
-pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128;
-pub const IPTOS_PREC_FLASH: u32 = 96;
-pub const IPTOS_PREC_IMMEDIATE: u32 = 64;
-pub const IPTOS_PREC_PRIORITY: u32 = 32;
-pub const IPTOS_PREC_ROUTINE: u32 = 0;
-pub const IPOPT_COPY: u32 = 128;
-pub const IPOPT_CLASS_MASK: u32 = 96;
-pub const IPOPT_NUMBER_MASK: u32 = 31;
-pub const IPOPT_CONTROL: u32 = 0;
-pub const IPOPT_RESERVED1: u32 = 32;
-pub const IPOPT_MEASUREMENT: u32 = 64;
-pub const IPOPT_RESERVED2: u32 = 96;
-pub const IPOPT_END: u32 = 0;
-pub const IPOPT_NOOP: u32 = 1;
-pub const IPOPT_SEC: u32 = 130;
-pub const IPOPT_LSRR: u32 = 131;
-pub const IPOPT_TIMESTAMP: u32 = 68;
-pub const IPOPT_CIPSO: u32 = 134;
-pub const IPOPT_RR: u32 = 7;
-pub const IPOPT_SID: u32 = 136;
-pub const IPOPT_SSRR: u32 = 137;
-pub const IPOPT_RA: u32 = 148;
-pub const IPVERSION: u32 = 4;
-pub const MAXTTL: u32 = 255;
-pub const IPDEFTTL: u32 = 64;
-pub const IPOPT_OPTVAL: u32 = 0;
-pub const IPOPT_OLEN: u32 = 1;
-pub const IPOPT_OFFSET: u32 = 2;
-pub const IPOPT_MINOFF: u32 = 4;
-pub const MAX_IPOPTLEN: u32 = 40;
-pub const IPOPT_NOP: u32 = 1;
-pub const IPOPT_EOL: u32 = 0;
-pub const IPOPT_TS: u32 = 68;
-pub const IPOPT_TS_TSONLY: u32 = 0;
-pub const IPOPT_TS_TSANDADDR: u32 = 1;
-pub const IPOPT_TS_PRESPEC: u32 = 3;
-pub const IPV4_BEET_PHMAXLEN: u32 = 8;
-pub const IPV6_FL_A_GET: u32 = 0;
-pub const IPV6_FL_A_PUT: u32 = 1;
-pub const IPV6_FL_A_RENEW: u32 = 2;
-pub const IPV6_FL_F_CREATE: u32 = 1;
-pub const IPV6_FL_F_EXCL: u32 = 2;
-pub const IPV6_FL_F_REFLECT: u32 = 4;
-pub const IPV6_FL_F_REMOTE: u32 = 8;
-pub const IPV6_FL_S_NONE: u32 = 0;
-pub const IPV6_FL_S_EXCL: u32 = 1;
-pub const IPV6_FL_S_PROCESS: u32 = 2;
-pub const IPV6_FL_S_USER: u32 = 3;
-pub const IPV6_FL_S_ANY: u32 = 255;
-pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575;
-pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880;
-pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0;
-pub const IPV6_PRIORITY_FILLER: u32 = 256;
-pub const IPV6_PRIORITY_UNATTENDED: u32 = 512;
-pub const IPV6_PRIORITY_RESERVED1: u32 = 768;
-pub const IPV6_PRIORITY_BULK: u32 = 1024;
-pub const IPV6_PRIORITY_RESERVED2: u32 = 1280;
-pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536;
-pub const IPV6_PRIORITY_CONTROL: u32 = 1792;
-pub const IPV6_PRIORITY_8: u32 = 2048;
-pub const IPV6_PRIORITY_9: u32 = 2304;
-pub const IPV6_PRIORITY_10: u32 = 2560;
-pub const IPV6_PRIORITY_11: u32 = 2816;
-pub const IPV6_PRIORITY_12: u32 = 3072;
-pub const IPV6_PRIORITY_13: u32 = 3328;
-pub const IPV6_PRIORITY_14: u32 = 3584;
-pub const IPV6_PRIORITY_15: u32 = 3840;
-pub const IPPROTO_HOPOPTS: u32 = 0;
-pub const IPPROTO_ROUTING: u32 = 43;
-pub const IPPROTO_FRAGMENT: u32 = 44;
-pub const IPPROTO_ICMPV6: u32 = 58;
-pub const IPPROTO_NONE: u32 = 59;
-pub const IPPROTO_DSTOPTS: u32 = 60;
-pub const IPPROTO_MH: u32 = 135;
-pub const IPV6_TLV_PAD1: u32 = 0;
-pub const IPV6_TLV_PADN: u32 = 1;
-pub const IPV6_TLV_ROUTERALERT: u32 = 5;
-pub const IPV6_TLV_CALIPSO: u32 = 7;
-pub const IPV6_TLV_IOAM: u32 = 49;
-pub const IPV6_TLV_JUMBO: u32 = 194;
-pub const IPV6_TLV_HAO: u32 = 201;
-pub const IPV6_ADDRFORM: u32 = 1;
-pub const IPV6_2292PKTINFO: u32 = 2;
-pub const IPV6_2292HOPOPTS: u32 = 3;
-pub const IPV6_2292DSTOPTS: u32 = 4;
-pub const IPV6_2292RTHDR: u32 = 5;
-pub const IPV6_2292PKTOPTIONS: u32 = 6;
-pub const IPV6_CHECKSUM: u32 = 7;
-pub const IPV6_2292HOPLIMIT: u32 = 8;
-pub const IPV6_NEXTHOP: u32 = 9;
-pub const IPV6_AUTHHDR: u32 = 10;
-pub const IPV6_FLOWINFO: u32 = 11;
-pub const IPV6_UNICAST_HOPS: u32 = 16;
-pub const IPV6_MULTICAST_IF: u32 = 17;
-pub const IPV6_MULTICAST_HOPS: u32 = 18;
-pub const IPV6_MULTICAST_LOOP: u32 = 19;
-pub const IPV6_ADD_MEMBERSHIP: u32 = 20;
-pub const IPV6_DROP_MEMBERSHIP: u32 = 21;
-pub const IPV6_ROUTER_ALERT: u32 = 22;
-pub const IPV6_MTU_DISCOVER: u32 = 23;
-pub const IPV6_MTU: u32 = 24;
-pub const IPV6_RECVERR: u32 = 25;
-pub const IPV6_V6ONLY: u32 = 26;
-pub const IPV6_JOIN_ANYCAST: u32 = 27;
-pub const IPV6_LEAVE_ANYCAST: u32 = 28;
-pub const IPV6_MULTICAST_ALL: u32 = 29;
-pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30;
-pub const IPV6_RECVERR_RFC4884: u32 = 31;
-pub const IPV6_PMTUDISC_DONT: u32 = 0;
-pub const IPV6_PMTUDISC_WANT: u32 = 1;
-pub const IPV6_PMTUDISC_DO: u32 = 2;
-pub const IPV6_PMTUDISC_PROBE: u32 = 3;
-pub const IPV6_PMTUDISC_INTERFACE: u32 = 4;
-pub const IPV6_PMTUDISC_OMIT: u32 = 5;
-pub const IPV6_FLOWLABEL_MGR: u32 = 32;
-pub const IPV6_FLOWINFO_SEND: u32 = 33;
-pub const IPV6_IPSEC_POLICY: u32 = 34;
-pub const IPV6_XFRM_POLICY: u32 = 35;
-pub const IPV6_HDRINCL: u32 = 36;
-pub const IPV6_RECVPKTINFO: u32 = 49;
-pub const IPV6_PKTINFO: u32 = 50;
-pub const IPV6_RECVHOPLIMIT: u32 = 51;
-pub const IPV6_HOPLIMIT: u32 = 52;
-pub const IPV6_RECVHOPOPTS: u32 = 53;
-pub const IPV6_HOPOPTS: u32 = 54;
-pub const IPV6_RTHDRDSTOPTS: u32 = 55;
-pub const IPV6_RECVRTHDR: u32 = 56;
-pub const IPV6_RTHDR: u32 = 57;
-pub const IPV6_RECVDSTOPTS: u32 = 58;
-pub const IPV6_DSTOPTS: u32 = 59;
-pub const IPV6_RECVPATHMTU: u32 = 60;
-pub const IPV6_PATHMTU: u32 = 61;
-pub const IPV6_DONTFRAG: u32 = 62;
-pub const IPV6_RECVTCLASS: u32 = 66;
-pub const IPV6_TCLASS: u32 = 67;
-pub const IPV6_AUTOFLOWLABEL: u32 = 70;
-pub const IPV6_ADDR_PREFERENCES: u32 = 72;
-pub const IPV6_PREFER_SRC_TMP: u32 = 1;
-pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2;
-pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256;
-pub const IPV6_PREFER_SRC_COA: u32 = 4;
-pub const IPV6_PREFER_SRC_HOME: u32 = 1024;
-pub const IPV6_PREFER_SRC_CGA: u32 = 8;
-pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048;
-pub const IPV6_MINHOPCOUNT: u32 = 73;
-pub const IPV6_ORIGDSTADDR: u32 = 74;
-pub const IPV6_RECVORIGDSTADDR: u32 = 74;
-pub const IPV6_TRANSPARENT: u32 = 75;
-pub const IPV6_UNICAST_IF: u32 = 76;
-pub const IPV6_RECVFRAGSIZE: u32 = 77;
-pub const IPV6_FREEBIND: u32 = 78;
-pub const IPV6_MIN_MTU: u32 = 1280;
-pub const IPV6_SRCRT_STRICT: u32 = 1;
-pub const IPV6_SRCRT_TYPE_0: u32 = 0;
-pub const IPV6_SRCRT_TYPE_2: u32 = 2;
-pub const IPV6_SRCRT_TYPE_3: u32 = 3;
-pub const IPV6_SRCRT_TYPE_4: u32 = 4;
-pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0;
-pub const ADFS_SUPER_MAGIC: u32 = 44533;
-pub const AFFS_SUPER_MAGIC: u32 = 44543;
-pub const AFS_SUPER_MAGIC: u32 = 1397113167;
-pub const AUTOFS_SUPER_MAGIC: u32 = 391;
-pub const CEPH_SUPER_MAGIC: u32 = 12805120;
-pub const CODA_SUPER_MAGIC: u32 = 1937076805;
-pub const CRAMFS_MAGIC: u32 = 684539205;
-pub const CRAMFS_MAGIC_WEND: u32 = 1161678120;
-pub const DEBUGFS_MAGIC: u32 = 1684170528;
-pub const SECURITYFS_MAGIC: u32 = 1935894131;
-pub const SELINUX_MAGIC: u32 = 4185718668;
-pub const SMACK_MAGIC: u32 = 1128357203;
-pub const RAMFS_MAGIC: u32 = 2240043254;
-pub const TMPFS_MAGIC: u32 = 16914836;
-pub const HUGETLBFS_MAGIC: u32 = 2508478710;
-pub const SQUASHFS_MAGIC: u32 = 1936814952;
-pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791;
-pub const EFS_SUPER_MAGIC: u32 = 4278867;
-pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530;
-pub const EXT2_SUPER_MAGIC: u32 = 61267;
-pub const EXT3_SUPER_MAGIC: u32 = 61267;
-pub const XENFS_SUPER_MAGIC: u32 = 2881100148;
-pub const EXT4_SUPER_MAGIC: u32 = 61267;
-pub const BTRFS_SUPER_MAGIC: u32 = 2435016766;
-pub const NILFS_SUPER_MAGIC: u32 = 13364;
-pub const F2FS_SUPER_MAGIC: u32 = 4076150800;
-pub const HPFS_SUPER_MAGIC: u32 = 4187351113;
-pub const ISOFS_SUPER_MAGIC: u32 = 38496;
-pub const JFFS2_SUPER_MAGIC: u32 = 29366;
-pub const XFS_SUPER_MAGIC: u32 = 1481003842;
-pub const PSTOREFS_MAGIC: u32 = 1634035564;
-pub const EFIVARFS_MAGIC: u32 = 3730735588;
-pub const HOSTFS_SUPER_MAGIC: u32 = 12648430;
-pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128;
-pub const FUSE_SUPER_MAGIC: u32 = 1702057286;
-pub const MINIX_SUPER_MAGIC: u32 = 4991;
-pub const MINIX_SUPER_MAGIC2: u32 = 5007;
-pub const MINIX2_SUPER_MAGIC: u32 = 9320;
-pub const MINIX2_SUPER_MAGIC2: u32 = 9336;
-pub const MINIX3_SUPER_MAGIC: u32 = 19802;
-pub const MSDOS_SUPER_MAGIC: u32 = 19780;
-pub const EXFAT_SUPER_MAGIC: u32 = 538032816;
-pub const NCP_SUPER_MAGIC: u32 = 22092;
-pub const NFS_SUPER_MAGIC: u32 = 26985;
-pub const OCFS2_SUPER_MAGIC: u32 = 1952539503;
-pub const OPENPROM_SUPER_MAGIC: u32 = 40865;
-pub const QNX4_SUPER_MAGIC: u32 = 47;
-pub const QNX6_SUPER_MAGIC: u32 = 1746473250;
-pub const AFS_FS_MAGIC: u32 = 1799439955;
-pub const REISERFS_SUPER_MAGIC: u32 = 1382369651;
-pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0";
-pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0";
-pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0";
-pub const SMB_SUPER_MAGIC: u32 = 20859;
-pub const CIFS_SUPER_MAGIC: u32 = 4283649346;
-pub const SMB2_SUPER_MAGIC: u32 = 4266872130;
-pub const CGROUP_SUPER_MAGIC: u32 = 2613483;
-pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888;
-pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209;
-pub const STACK_END_MAGIC: u32 = 1470918301;
-pub const TRACEFS_MAGIC: u32 = 1953653091;
-pub const V9FS_MAGIC: u32 = 16914839;
-pub const BDEVFS_MAGIC: u32 = 1650746742;
-pub const DAXFS_MAGIC: u32 = 1684300152;
-pub const BINFMTFS_MAGIC: u32 = 1112100429;
-pub const DEVPTS_SUPER_MAGIC: u32 = 7377;
-pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352;
-pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762;
-pub const PIPEFS_MAGIC: u32 = 1346981957;
-pub const PROC_SUPER_MAGIC: u32 = 40864;
-pub const SOCKFS_MAGIC: u32 = 1397703499;
-pub const SYSFS_MAGIC: u32 = 1650812274;
-pub const USBDEVICE_SUPER_MAGIC: u32 = 40866;
-pub const MTD_INODE_FS_MAGIC: u32 = 288389204;
-pub const ANON_INODE_FS_MAGIC: u32 = 151263540;
-pub const BTRFS_TEST_MAGIC: u32 = 1936880249;
-pub const NSFS_MAGIC: u32 = 1853056627;
-pub const BPF_FS_MAGIC: u32 = 3405662737;
-pub const AAFS_MAGIC: u32 = 1513908720;
-pub const ZONEFS_MAGIC: u32 = 1515144787;
-pub const UDF_SUPER_MAGIC: u32 = 352400198;
-pub const DMA_BUF_MAGIC: u32 = 1145913666;
-pub const DEVMEM_MAGIC: u32 = 1162691661;
-pub const SECRETMEM_MAGIC: u32 = 1397048141;
-pub const MAP_32BIT: u32 = 64;
-pub const PROT_READ: u32 = 1;
-pub const PROT_WRITE: u32 = 2;
-pub const PROT_EXEC: u32 = 4;
-pub const PROT_SEM: u32 = 8;
-pub const PROT_NONE: u32 = 0;
-pub const PROT_GROWSDOWN: u32 = 16777216;
-pub const PROT_GROWSUP: u32 = 33554432;
-pub const MAP_TYPE: u32 = 15;
-pub const MAP_FIXED: u32 = 16;
-pub const MAP_ANONYMOUS: u32 = 32;
-pub const MAP_POPULATE: u32 = 32768;
-pub const MAP_NONBLOCK: u32 = 65536;
-pub const MAP_STACK: u32 = 131072;
-pub const MAP_HUGETLB: u32 = 262144;
-pub const MAP_SYNC: u32 = 524288;
-pub const MAP_FIXED_NOREPLACE: u32 = 1048576;
-pub const MAP_UNINITIALIZED: u32 = 67108864;
-pub const MLOCK_ONFAULT: u32 = 1;
-pub const MS_ASYNC: u32 = 1;
-pub const MS_INVALIDATE: u32 = 2;
-pub const MS_SYNC: u32 = 4;
-pub const MADV_NORMAL: u32 = 0;
-pub const MADV_RANDOM: u32 = 1;
-pub const MADV_SEQUENTIAL: u32 = 2;
-pub const MADV_WILLNEED: u32 = 3;
-pub const MADV_DONTNEED: u32 = 4;
-pub const MADV_FREE: u32 = 8;
-pub const MADV_REMOVE: u32 = 9;
-pub const MADV_DONTFORK: u32 = 10;
-pub const MADV_DOFORK: u32 = 11;
-pub const MADV_HWPOISON: u32 = 100;
-pub const MADV_SOFT_OFFLINE: u32 = 101;
-pub const MADV_MERGEABLE: u32 = 12;
-pub const MADV_UNMERGEABLE: u32 = 13;
-pub const MADV_HUGEPAGE: u32 = 14;
-pub const MADV_NOHUGEPAGE: u32 = 15;
-pub const MADV_DONTDUMP: u32 = 16;
-pub const MADV_DODUMP: u32 = 17;
-pub const MADV_WIPEONFORK: u32 = 18;
-pub const MADV_KEEPONFORK: u32 = 19;
-pub const MADV_COLD: u32 = 20;
-pub const MADV_PAGEOUT: u32 = 21;
-pub const MADV_POPULATE_READ: u32 = 22;
-pub const MADV_POPULATE_WRITE: u32 = 23;
-pub const MADV_DONTNEED_LOCKED: u32 = 24;
-pub const MADV_COLLAPSE: u32 = 25;
-pub const MAP_FILE: u32 = 0;
-pub const PKEY_DISABLE_ACCESS: u32 = 1;
-pub const PKEY_DISABLE_WRITE: u32 = 2;
-pub const PKEY_ACCESS_MASK: u32 = 3;
-pub const MAP_GROWSDOWN: u32 = 256;
-pub const MAP_DENYWRITE: u32 = 2048;
-pub const MAP_EXECUTABLE: u32 = 4096;
-pub const MAP_LOCKED: u32 = 8192;
-pub const MAP_NORESERVE: u32 = 16384;
-pub const MCL_CURRENT: u32 = 1;
-pub const MCL_FUTURE: u32 = 2;
-pub const MCL_ONFAULT: u32 = 4;
-pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26;
-pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63;
-pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096;
-pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824;
-pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416;
-pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280;
-pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144;
-pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872;
-pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736;
-pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600;
-pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192;
-pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056;
-pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920;
-pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784;
-pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376;
-pub const MREMAP_MAYMOVE: u32 = 1;
-pub const MREMAP_FIXED: u32 = 2;
-pub const MREMAP_DONTUNMAP: u32 = 4;
-pub const OVERCOMMIT_GUESS: u32 = 0;
-pub const OVERCOMMIT_ALWAYS: u32 = 1;
-pub const OVERCOMMIT_NEVER: u32 = 2;
-pub const MAP_SHARED: u32 = 1;
-pub const MAP_PRIVATE: u32 = 2;
-pub const MAP_SHARED_VALIDATE: u32 = 3;
-pub const MAP_HUGE_SHIFT: u32 = 26;
-pub const MAP_HUGE_MASK: u32 = 63;
-pub const MAP_HUGE_16KB: u32 = 939524096;
-pub const MAP_HUGE_64KB: u32 = 1073741824;
-pub const MAP_HUGE_512KB: u32 = 1275068416;
-pub const MAP_HUGE_1MB: u32 = 1342177280;
-pub const MAP_HUGE_2MB: u32 = 1409286144;
-pub const MAP_HUGE_8MB: u32 = 1543503872;
-pub const MAP_HUGE_16MB: u32 = 1610612736;
-pub const MAP_HUGE_32MB: u32 = 1677721600;
-pub const MAP_HUGE_256MB: u32 = 1879048192;
-pub const MAP_HUGE_512MB: u32 = 1946157056;
-pub const MAP_HUGE_1GB: u32 = 2013265920;
-pub const MAP_HUGE_2GB: u32 = 2080374784;
-pub const MAP_HUGE_16GB: u32 = 2281701376;
-pub const SIOCGSTAMP_OLD: u32 = 35078;
-pub const SIOCGSTAMPNS_OLD: u32 = 35079;
-pub const SOL_SOCKET: u32 = 1;
-pub const SO_DEBUG: u32 = 1;
-pub const SO_REUSEADDR: u32 = 2;
-pub const SO_TYPE: u32 = 3;
-pub const SO_ERROR: u32 = 4;
-pub const SO_DONTROUTE: u32 = 5;
-pub const SO_BROADCAST: u32 = 6;
-pub const SO_SNDBUF: u32 = 7;
-pub const SO_RCVBUF: u32 = 8;
-pub const SO_SNDBUFFORCE: u32 = 32;
-pub const SO_RCVBUFFORCE: u32 = 33;
-pub const SO_KEEPALIVE: u32 = 9;
-pub const SO_OOBINLINE: u32 = 10;
-pub const SO_NO_CHECK: u32 = 11;
-pub const SO_PRIORITY: u32 = 12;
-pub const SO_LINGER: u32 = 13;
-pub const SO_BSDCOMPAT: u32 = 14;
-pub const SO_REUSEPORT: u32 = 15;
-pub const SO_PASSCRED: u32 = 16;
-pub const SO_PEERCRED: u32 = 17;
-pub const SO_RCVLOWAT: u32 = 18;
-pub const SO_SNDLOWAT: u32 = 19;
-pub const SO_RCVTIMEO_OLD: u32 = 20;
-pub const SO_SNDTIMEO_OLD: u32 = 21;
-pub const SO_SECURITY_AUTHENTICATION: u32 = 22;
-pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23;
-pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24;
-pub const SO_BINDTODEVICE: u32 = 25;
-pub const SO_ATTACH_FILTER: u32 = 26;
-pub const SO_DETACH_FILTER: u32 = 27;
-pub const SO_GET_FILTER: u32 = 26;
-pub const SO_PEERNAME: u32 = 28;
-pub const SO_ACCEPTCONN: u32 = 30;
-pub const SO_PEERSEC: u32 = 31;
-pub const SO_PASSSEC: u32 = 34;
-pub const SO_MARK: u32 = 36;
-pub const SO_PROTOCOL: u32 = 38;
-pub const SO_DOMAIN: u32 = 39;
-pub const SO_RXQ_OVFL: u32 = 40;
-pub const SO_WIFI_STATUS: u32 = 41;
-pub const SCM_WIFI_STATUS: u32 = 41;
-pub const SO_PEEK_OFF: u32 = 42;
-pub const SO_NOFCS: u32 = 43;
-pub const SO_LOCK_FILTER: u32 = 44;
-pub const SO_SELECT_ERR_QUEUE: u32 = 45;
-pub const SO_BUSY_POLL: u32 = 46;
-pub const SO_MAX_PACING_RATE: u32 = 47;
-pub const SO_BPF_EXTENSIONS: u32 = 48;
-pub const SO_INCOMING_CPU: u32 = 49;
-pub const SO_ATTACH_BPF: u32 = 50;
-pub const SO_DETACH_BPF: u32 = 27;
-pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51;
-pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52;
-pub const SO_CNX_ADVICE: u32 = 53;
-pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54;
-pub const SO_MEMINFO: u32 = 55;
-pub const SO_INCOMING_NAPI_ID: u32 = 56;
-pub const SO_COOKIE: u32 = 57;
-pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58;
-pub const SO_PEERGROUPS: u32 = 59;
-pub const SO_ZEROCOPY: u32 = 60;
-pub const SO_TXTIME: u32 = 61;
-pub const SCM_TXTIME: u32 = 61;
-pub const SO_BINDTOIFINDEX: u32 = 62;
-pub const SO_TIMESTAMP_OLD: u32 = 29;
-pub const SO_TIMESTAMPNS_OLD: u32 = 35;
-pub const SO_TIMESTAMPING_OLD: u32 = 37;
-pub const SO_TIMESTAMP_NEW: u32 = 63;
-pub const SO_TIMESTAMPNS_NEW: u32 = 64;
-pub const SO_TIMESTAMPING_NEW: u32 = 65;
-pub const SO_RCVTIMEO_NEW: u32 = 66;
-pub const SO_SNDTIMEO_NEW: u32 = 67;
-pub const SO_DETACH_REUSEPORT_BPF: u32 = 68;
-pub const SO_PREFER_BUSY_POLL: u32 = 69;
-pub const SO_BUSY_POLL_BUDGET: u32 = 70;
-pub const SO_NETNS_COOKIE: u32 = 71;
-pub const SO_BUF_LOCK: u32 = 72;
-pub const SO_RESERVE_MEM: u32 = 73;
-pub const SO_TXREHASH: u32 = 74;
-pub const SO_RCVMARK: u32 = 75;
-pub const SO_TIMESTAMP: u32 = 29;
-pub const SO_TIMESTAMPNS: u32 = 35;
-pub const SO_TIMESTAMPING: u32 = 37;
-pub const SO_RCVTIMEO: u32 = 20;
-pub const SO_SNDTIMEO: u32 = 21;
-pub const SCM_TIMESTAMP: u32 = 29;
-pub const SCM_TIMESTAMPNS: u32 = 35;
-pub const SCM_TIMESTAMPING: u32 = 37;
-pub const SYS_SOCKET: u32 = 1;
-pub const SYS_BIND: u32 = 2;
-pub const SYS_CONNECT: u32 = 3;
-pub const SYS_LISTEN: u32 = 4;
-pub const SYS_ACCEPT: u32 = 5;
-pub const SYS_GETSOCKNAME: u32 = 6;
-pub const SYS_GETPEERNAME: u32 = 7;
-pub const SYS_SOCKETPAIR: u32 = 8;
-pub const SYS_SEND: u32 = 9;
-pub const SYS_RECV: u32 = 10;
-pub const SYS_SENDTO: u32 = 11;
-pub const SYS_RECVFROM: u32 = 12;
-pub const SYS_SHUTDOWN: u32 = 13;
-pub const SYS_SETSOCKOPT: u32 = 14;
-pub const SYS_GETSOCKOPT: u32 = 15;
-pub const SYS_SENDMSG: u32 = 16;
-pub const SYS_RECVMSG: u32 = 17;
-pub const SYS_ACCEPT4: u32 = 18;
-pub const SYS_RECVMMSG: u32 = 19;
-pub const SYS_SENDMMSG: u32 = 20;
-pub const __SO_ACCEPTCON: u32 = 65536;
-pub const POLLIN: u32 = 1;
-pub const POLLPRI: u32 = 2;
-pub const POLLOUT: u32 = 4;
-pub const POLLERR: u32 = 8;
-pub const POLLHUP: u32 = 16;
-pub const POLLNVAL: u32 = 32;
-pub const POLLRDNORM: u32 = 64;
-pub const POLLRDBAND: u32 = 128;
-pub const POLLWRNORM: u32 = 256;
-pub const POLLWRBAND: u32 = 512;
-pub const POLLMSG: u32 = 1024;
-pub const POLLREMOVE: u32 = 4096;
-pub const POLLRDHUP: u32 = 8192;
-pub const PR_SET_PDEATHSIG: u32 = 1;
-pub const PR_GET_PDEATHSIG: u32 = 2;
-pub const PR_GET_DUMPABLE: u32 = 3;
-pub const PR_SET_DUMPABLE: u32 = 4;
-pub const PR_GET_UNALIGN: u32 = 5;
-pub const PR_SET_UNALIGN: u32 = 6;
-pub const PR_UNALIGN_NOPRINT: u32 = 1;
-pub const PR_UNALIGN_SIGBUS: u32 = 2;
-pub const PR_GET_KEEPCAPS: u32 = 7;
-pub const PR_SET_KEEPCAPS: u32 = 8;
-pub const PR_GET_FPEMU: u32 = 9;
-pub const PR_SET_FPEMU: u32 = 10;
-pub const PR_FPEMU_NOPRINT: u32 = 1;
-pub const PR_FPEMU_SIGFPE: u32 = 2;
-pub const PR_GET_FPEXC: u32 = 11;
-pub const PR_SET_FPEXC: u32 = 12;
-pub const PR_FP_EXC_SW_ENABLE: u32 = 128;
-pub const PR_FP_EXC_DIV: u32 = 65536;
-pub const PR_FP_EXC_OVF: u32 = 131072;
-pub const PR_FP_EXC_UND: u32 = 262144;
-pub const PR_FP_EXC_RES: u32 = 524288;
-pub const PR_FP_EXC_INV: u32 = 1048576;
-pub const PR_FP_EXC_DISABLED: u32 = 0;
-pub const PR_FP_EXC_NONRECOV: u32 = 1;
-pub const PR_FP_EXC_ASYNC: u32 = 2;
-pub const PR_FP_EXC_PRECISE: u32 = 3;
-pub const PR_GET_TIMING: u32 = 13;
-pub const PR_SET_TIMING: u32 = 14;
-pub const PR_TIMING_STATISTICAL: u32 = 0;
-pub const PR_TIMING_TIMESTAMP: u32 = 1;
-pub const PR_SET_NAME: u32 = 15;
-pub const PR_GET_NAME: u32 = 16;
-pub const PR_GET_ENDIAN: u32 = 19;
-pub const PR_SET_ENDIAN: u32 = 20;
-pub const PR_ENDIAN_BIG: u32 = 0;
-pub const PR_ENDIAN_LITTLE: u32 = 1;
-pub const PR_ENDIAN_PPC_LITTLE: u32 = 2;
-pub const PR_GET_SECCOMP: u32 = 21;
-pub const PR_SET_SECCOMP: u32 = 22;
-pub const PR_CAPBSET_READ: u32 = 23;
-pub const PR_CAPBSET_DROP: u32 = 24;
-pub const PR_GET_TSC: u32 = 25;
-pub const PR_SET_TSC: u32 = 26;
-pub const PR_TSC_ENABLE: u32 = 1;
-pub const PR_TSC_SIGSEGV: u32 = 2;
-pub const PR_GET_SECUREBITS: u32 = 27;
-pub const PR_SET_SECUREBITS: u32 = 28;
-pub const PR_SET_TIMERSLACK: u32 = 29;
-pub const PR_GET_TIMERSLACK: u32 = 30;
-pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31;
-pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32;
-pub const PR_MCE_KILL: u32 = 33;
-pub const PR_MCE_KILL_CLEAR: u32 = 0;
-pub const PR_MCE_KILL_SET: u32 = 1;
-pub const PR_MCE_KILL_LATE: u32 = 0;
-pub const PR_MCE_KILL_EARLY: u32 = 1;
-pub const PR_MCE_KILL_DEFAULT: u32 = 2;
-pub const PR_MCE_KILL_GET: u32 = 34;
-pub const PR_SET_MM: u32 = 35;
-pub const PR_SET_MM_START_CODE: u32 = 1;
-pub const PR_SET_MM_END_CODE: u32 = 2;
-pub const PR_SET_MM_START_DATA: u32 = 3;
-pub const PR_SET_MM_END_DATA: u32 = 4;
-pub const PR_SET_MM_START_STACK: u32 = 5;
-pub const PR_SET_MM_START_BRK: u32 = 6;
-pub const PR_SET_MM_BRK: u32 = 7;
-pub const PR_SET_MM_ARG_START: u32 = 8;
-pub const PR_SET_MM_ARG_END: u32 = 9;
-pub const PR_SET_MM_ENV_START: u32 = 10;
-pub const PR_SET_MM_ENV_END: u32 = 11;
-pub const PR_SET_MM_AUXV: u32 = 12;
-pub const PR_SET_MM_EXE_FILE: u32 = 13;
-pub const PR_SET_MM_MAP: u32 = 14;
-pub const PR_SET_MM_MAP_SIZE: u32 = 15;
-pub const PR_SET_PTRACER: u32 = 1499557217;
-pub const PR_SET_CHILD_SUBREAPER: u32 = 36;
-pub const PR_GET_CHILD_SUBREAPER: u32 = 37;
-pub const PR_SET_NO_NEW_PRIVS: u32 = 38;
-pub const PR_GET_NO_NEW_PRIVS: u32 = 39;
-pub const PR_GET_TID_ADDRESS: u32 = 40;
-pub const PR_SET_THP_DISABLE: u32 = 41;
-pub const PR_GET_THP_DISABLE: u32 = 42;
-pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43;
-pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44;
-pub const PR_SET_FP_MODE: u32 = 45;
-pub const PR_GET_FP_MODE: u32 = 46;
-pub const PR_FP_MODE_FR: u32 = 1;
-pub const PR_FP_MODE_FRE: u32 = 2;
-pub const PR_CAP_AMBIENT: u32 = 47;
-pub const PR_CAP_AMBIENT_IS_SET: u32 = 1;
-pub const PR_CAP_AMBIENT_RAISE: u32 = 2;
-pub const PR_CAP_AMBIENT_LOWER: u32 = 3;
-pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4;
-pub const PR_SVE_SET_VL: u32 = 50;
-pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SVE_GET_VL: u32 = 51;
-pub const PR_SVE_VL_LEN_MASK: u32 = 65535;
-pub const PR_SVE_VL_INHERIT: u32 = 131072;
-pub const PR_GET_SPECULATION_CTRL: u32 = 52;
-pub const PR_SET_SPECULATION_CTRL: u32 = 53;
-pub const PR_SPEC_STORE_BYPASS: u32 = 0;
-pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1;
-pub const PR_SPEC_L1D_FLUSH: u32 = 2;
-pub const PR_SPEC_NOT_AFFECTED: u32 = 0;
-pub const PR_SPEC_PRCTL: u32 = 1;
-pub const PR_SPEC_ENABLE: u32 = 2;
-pub const PR_SPEC_DISABLE: u32 = 4;
-pub const PR_SPEC_FORCE_DISABLE: u32 = 8;
-pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16;
-pub const PR_PAC_RESET_KEYS: u32 = 54;
-pub const PR_PAC_APIAKEY: u32 = 1;
-pub const PR_PAC_APIBKEY: u32 = 2;
-pub const PR_PAC_APDAKEY: u32 = 4;
-pub const PR_PAC_APDBKEY: u32 = 8;
-pub const PR_PAC_APGAKEY: u32 = 16;
-pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55;
-pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56;
-pub const PR_TAGGED_ADDR_ENABLE: u32 = 1;
-pub const PR_MTE_TCF_NONE: u32 = 0;
-pub const PR_MTE_TCF_SYNC: u32 = 2;
-pub const PR_MTE_TCF_ASYNC: u32 = 4;
-pub const PR_MTE_TCF_MASK: u32 = 6;
-pub const PR_MTE_TAG_SHIFT: u32 = 3;
-pub const PR_MTE_TAG_MASK: u32 = 524280;
-pub const PR_MTE_TCF_SHIFT: u32 = 1;
-pub const PR_SET_IO_FLUSHER: u32 = 57;
-pub const PR_GET_IO_FLUSHER: u32 = 58;
-pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59;
-pub const PR_SYS_DISPATCH_OFF: u32 = 0;
-pub const PR_SYS_DISPATCH_ON: u32 = 1;
-pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0;
-pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1;
-pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60;
-pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61;
-pub const PR_SCHED_CORE: u32 = 62;
-pub const PR_SCHED_CORE_GET: u32 = 0;
-pub const PR_SCHED_CORE_CREATE: u32 = 1;
-pub const PR_SCHED_CORE_SHARE_TO: u32 = 2;
-pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3;
-pub const PR_SCHED_CORE_MAX: u32 = 4;
-pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0;
-pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1;
-pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2;
-pub const PR_SME_SET_VL: u32 = 63;
-pub const PR_SME_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SME_GET_VL: u32 = 64;
-pub const PR_SME_VL_LEN_MASK: u32 = 65535;
-pub const PR_SME_VL_INHERIT: u32 = 131072;
-pub const PR_SET_VMA: u32 = 1398164801;
-pub const PR_SET_VMA_ANON_NAME: u32 = 0;
-pub const GRND_NONBLOCK: u32 = 1;
-pub const GRND_RANDOM: u32 = 2;
-pub const GRND_INSECURE: u32 = 4;
-pub const ITIMER_REAL: u32 = 0;
-pub const ITIMER_VIRTUAL: u32 = 1;
-pub const ITIMER_PROF: u32 = 2;
-pub const CLOCK_REALTIME: u32 = 0;
-pub const CLOCK_MONOTONIC: u32 = 1;
-pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2;
-pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3;
-pub const CLOCK_MONOTONIC_RAW: u32 = 4;
-pub const CLOCK_REALTIME_COARSE: u32 = 5;
-pub const CLOCK_MONOTONIC_COARSE: u32 = 6;
-pub const CLOCK_BOOTTIME: u32 = 7;
-pub const CLOCK_REALTIME_ALARM: u32 = 8;
-pub const CLOCK_BOOTTIME_ALARM: u32 = 9;
-pub const CLOCK_SGI_CYCLE: u32 = 10;
-pub const CLOCK_TAI: u32 = 11;
-pub const MAX_CLOCKS: u32 = 16;
-pub const CLOCKS_MASK: u32 = 1;
-pub const CLOCKS_MONO: u32 = 1;
-pub const TIMER_ABSTIME: u32 = 1;
-pub const RUSAGE_SELF: u32 = 0;
-pub const RUSAGE_CHILDREN: i32 = -1;
-pub const RUSAGE_BOTH: i32 = -2;
-pub const RUSAGE_THREAD: u32 = 1;
-pub const RLIM64_INFINITY: i32 = -1;
-pub const PRIO_MIN: i32 = -20;
-pub const PRIO_MAX: u32 = 20;
-pub const PRIO_PROCESS: u32 = 0;
-pub const PRIO_PGRP: u32 = 1;
-pub const PRIO_USER: u32 = 2;
-pub const _STK_LIM: u32 = 8388608;
-pub const MLOCK_LIMIT: u32 = 8388608;
-pub const RLIMIT_CPU: u32 = 0;
-pub const RLIMIT_FSIZE: u32 = 1;
-pub const RLIMIT_DATA: u32 = 2;
-pub const RLIMIT_STACK: u32 = 3;
-pub const RLIMIT_CORE: u32 = 4;
-pub const RLIMIT_RSS: u32 = 5;
-pub const RLIMIT_NPROC: u32 = 6;
-pub const RLIMIT_NOFILE: u32 = 7;
-pub const RLIMIT_MEMLOCK: u32 = 8;
-pub const RLIMIT_AS: u32 = 9;
-pub const RLIMIT_LOCKS: u32 = 10;
-pub const RLIMIT_SIGPENDING: u32 = 11;
-pub const RLIMIT_MSGQUEUE: u32 = 12;
-pub const RLIMIT_NICE: u32 = 13;
-pub const RLIMIT_RTPRIO: u32 = 14;
-pub const RLIMIT_RTTIME: u32 = 15;
-pub const RLIM_NLIMITS: u32 = 16;
-pub const RLIM_INFINITY: i32 = -1;
-pub const CSIGNAL: u32 = 255;
-pub const CLONE_VM: u32 = 256;
-pub const CLONE_FS: u32 = 512;
-pub const CLONE_FILES: u32 = 1024;
-pub const CLONE_SIGHAND: u32 = 2048;
-pub const CLONE_PIDFD: u32 = 4096;
-pub const CLONE_PTRACE: u32 = 8192;
-pub const CLONE_VFORK: u32 = 16384;
-pub const CLONE_PARENT: u32 = 32768;
-pub const CLONE_THREAD: u32 = 65536;
-pub const CLONE_NEWNS: u32 = 131072;
-pub const CLONE_SYSVSEM: u32 = 262144;
-pub const CLONE_SETTLS: u32 = 524288;
-pub const CLONE_PARENT_SETTID: u32 = 1048576;
-pub const CLONE_CHILD_CLEARTID: u32 = 2097152;
-pub const CLONE_DETACHED: u32 = 4194304;
-pub const CLONE_UNTRACED: u32 = 8388608;
-pub const CLONE_CHILD_SETTID: u32 = 16777216;
-pub const CLONE_NEWCGROUP: u32 = 33554432;
-pub const CLONE_NEWUTS: u32 = 67108864;
-pub const CLONE_NEWIPC: u32 = 134217728;
-pub const CLONE_NEWUSER: u32 = 268435456;
-pub const CLONE_NEWPID: u32 = 536870912;
-pub const CLONE_NEWNET: u32 = 1073741824;
-pub const CLONE_IO: u32 = 2147483648;
-pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296;
-pub const CLONE_INTO_CGROUP: u64 = 8589934592;
-pub const CLONE_NEWTIME: u32 = 128;
-pub const CLONE_ARGS_SIZE_VER0: u32 = 64;
-pub const CLONE_ARGS_SIZE_VER1: u32 = 80;
-pub const CLONE_ARGS_SIZE_VER2: u32 = 88;
-pub const SCHED_NORMAL: u32 = 0;
-pub const SCHED_FIFO: u32 = 1;
-pub const SCHED_RR: u32 = 2;
-pub const SCHED_BATCH: u32 = 3;
-pub const SCHED_IDLE: u32 = 5;
-pub const SCHED_DEADLINE: u32 = 6;
-pub const SCHED_RESET_ON_FORK: u32 = 1073741824;
-pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1;
-pub const SCHED_FLAG_RECLAIM: u32 = 2;
-pub const SCHED_FLAG_DL_OVERRUN: u32 = 4;
-pub const SCHED_FLAG_KEEP_POLICY: u32 = 8;
-pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16;
-pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32;
-pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64;
-pub const SCHED_FLAG_KEEP_ALL: u32 = 24;
-pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96;
-pub const SCHED_FLAG_ALL: u32 = 127;
-pub const NSIG: u32 = 32;
-pub const SIGHUP: u32 = 1;
-pub const SIGINT: u32 = 2;
-pub const SIGQUIT: u32 = 3;
-pub const SIGILL: u32 = 4;
-pub const SIGTRAP: u32 = 5;
-pub const SIGABRT: u32 = 6;
-pub const SIGIOT: u32 = 6;
-pub const SIGBUS: u32 = 7;
-pub const SIGFPE: u32 = 8;
-pub const SIGKILL: u32 = 9;
-pub const SIGUSR1: u32 = 10;
-pub const SIGSEGV: u32 = 11;
-pub const SIGUSR2: u32 = 12;
-pub const SIGPIPE: u32 = 13;
-pub const SIGALRM: u32 = 14;
-pub const SIGTERM: u32 = 15;
-pub const SIGSTKFLT: u32 = 16;
-pub const SIGCHLD: u32 = 17;
-pub const SIGCONT: u32 = 18;
-pub const SIGSTOP: u32 = 19;
-pub const SIGTSTP: u32 = 20;
-pub const SIGTTIN: u32 = 21;
-pub const SIGTTOU: u32 = 22;
-pub const SIGURG: u32 = 23;
-pub const SIGXCPU: u32 = 24;
-pub const SIGXFSZ: u32 = 25;
-pub const SIGVTALRM: u32 = 26;
-pub const SIGPROF: u32 = 27;
-pub const SIGWINCH: u32 = 28;
-pub const SIGIO: u32 = 29;
-pub const SIGPOLL: u32 = 29;
-pub const SIGPWR: u32 = 30;
-pub const SIGSYS: u32 = 31;
-pub const SIGUNUSED: u32 = 31;
-pub const SIGRTMIN: u32 = 32;
-pub const SA_RESTORER: u32 = 67108864;
-pub const MINSIGSTKSZ: u32 = 2048;
-pub const SIGSTKSZ: u32 = 8192;
-pub const SA_NOCLDSTOP: u32 = 1;
-pub const SA_NOCLDWAIT: u32 = 2;
-pub const SA_SIGINFO: u32 = 4;
-pub const SA_UNSUPPORTED: u32 = 1024;
-pub const SA_EXPOSE_TAGBITS: u32 = 2048;
-pub const SA_ONSTACK: u32 = 134217728;
-pub const SA_RESTART: u32 = 268435456;
-pub const SA_NODEFER: u32 = 1073741824;
-pub const SA_RESETHAND: u32 = 2147483648;
-pub const SA_NOMASK: u32 = 1073741824;
-pub const SA_ONESHOT: u32 = 2147483648;
-pub const SIG_BLOCK: u32 = 0;
-pub const SIG_UNBLOCK: u32 = 1;
-pub const SIG_SETMASK: u32 = 2;
-pub const SI_MAX_SIZE: u32 = 128;
-pub const SI_USER: u32 = 0;
-pub const SI_KERNEL: u32 = 128;
-pub const SI_QUEUE: i32 = -1;
-pub const SI_TIMER: i32 = -2;
-pub const SI_MESGQ: i32 = -3;
-pub const SI_ASYNCIO: i32 = -4;
-pub const SI_SIGIO: i32 = -5;
-pub const SI_TKILL: i32 = -6;
-pub const SI_DETHREAD: i32 = -7;
-pub const SI_ASYNCNL: i32 = -60;
-pub const ILL_ILLOPC: u32 = 1;
-pub const ILL_ILLOPN: u32 = 2;
-pub const ILL_ILLADR: u32 = 3;
-pub const ILL_ILLTRP: u32 = 4;
-pub const ILL_PRVOPC: u32 = 5;
-pub const ILL_PRVREG: u32 = 6;
-pub const ILL_COPROC: u32 = 7;
-pub const ILL_BADSTK: u32 = 8;
-pub const ILL_BADIADDR: u32 = 9;
-pub const __ILL_BREAK: u32 = 10;
-pub const __ILL_BNDMOD: u32 = 11;
-pub const NSIGILL: u32 = 11;
-pub const FPE_INTDIV: u32 = 1;
-pub const FPE_INTOVF: u32 = 2;
-pub const FPE_FLTDIV: u32 = 3;
-pub const FPE_FLTOVF: u32 = 4;
-pub const FPE_FLTUND: u32 = 5;
-pub const FPE_FLTRES: u32 = 6;
-pub const FPE_FLTINV: u32 = 7;
-pub const FPE_FLTSUB: u32 = 8;
-pub const __FPE_DECOVF: u32 = 9;
-pub const __FPE_DECDIV: u32 = 10;
-pub const __FPE_DECERR: u32 = 11;
-pub const __FPE_INVASC: u32 = 12;
-pub const __FPE_INVDEC: u32 = 13;
-pub const FPE_FLTUNK: u32 = 14;
-pub const FPE_CONDTRAP: u32 = 15;
-pub const NSIGFPE: u32 = 15;
-pub const SEGV_MAPERR: u32 = 1;
-pub const SEGV_ACCERR: u32 = 2;
-pub const SEGV_BNDERR: u32 = 3;
-pub const SEGV_PKUERR: u32 = 4;
-pub const SEGV_ACCADI: u32 = 5;
-pub const SEGV_ADIDERR: u32 = 6;
-pub const SEGV_ADIPERR: u32 = 7;
-pub const SEGV_MTEAERR: u32 = 8;
-pub const SEGV_MTESERR: u32 = 9;
-pub const NSIGSEGV: u32 = 9;
-pub const BUS_ADRALN: u32 = 1;
-pub const BUS_ADRERR: u32 = 2;
-pub const BUS_OBJERR: u32 = 3;
-pub const BUS_MCEERR_AR: u32 = 4;
-pub const BUS_MCEERR_AO: u32 = 5;
-pub const NSIGBUS: u32 = 5;
-pub const TRAP_BRKPT: u32 = 1;
-pub const TRAP_TRACE: u32 = 2;
-pub const TRAP_BRANCH: u32 = 3;
-pub const TRAP_HWBKPT: u32 = 4;
-pub const TRAP_UNK: u32 = 5;
-pub const TRAP_PERF: u32 = 6;
-pub const NSIGTRAP: u32 = 6;
-pub const TRAP_PERF_FLAG_ASYNC: u32 = 1;
-pub const CLD_EXITED: u32 = 1;
-pub const CLD_KILLED: u32 = 2;
-pub const CLD_DUMPED: u32 = 3;
-pub const CLD_TRAPPED: u32 = 4;
-pub const CLD_STOPPED: u32 = 5;
-pub const CLD_CONTINUED: u32 = 6;
-pub const NSIGCHLD: u32 = 6;
-pub const POLL_IN: u32 = 1;
-pub const POLL_OUT: u32 = 2;
-pub const POLL_MSG: u32 = 3;
-pub const POLL_ERR: u32 = 4;
-pub const POLL_PRI: u32 = 5;
-pub const POLL_HUP: u32 = 6;
-pub const NSIGPOLL: u32 = 6;
-pub const SYS_SECCOMP: u32 = 1;
-pub const SYS_USER_DISPATCH: u32 = 2;
-pub const NSIGSYS: u32 = 2;
-pub const EMT_TAGOVF: u32 = 1;
-pub const NSIGEMT: u32 = 1;
-pub const SIGEV_SIGNAL: u32 = 0;
-pub const SIGEV_NONE: u32 = 1;
-pub const SIGEV_THREAD: u32 = 2;
-pub const SIGEV_THREAD_ID: u32 = 4;
-pub const SIGEV_MAX_SIZE: u32 = 64;
-pub const SS_ONSTACK: u32 = 1;
-pub const SS_DISABLE: u32 = 2;
-pub const SS_AUTODISARM: u32 = 2147483648;
-pub const SS_FLAG_BITS: u32 = 2147483648;
-pub const S_IFMT: u32 = 61440;
-pub const S_IFSOCK: u32 = 49152;
-pub const S_IFLNK: u32 = 40960;
-pub const S_IFREG: u32 = 32768;
-pub const S_IFBLK: u32 = 24576;
-pub const S_IFDIR: u32 = 16384;
-pub const S_IFCHR: u32 = 8192;
-pub const S_IFIFO: u32 = 4096;
-pub const S_ISUID: u32 = 2048;
-pub const S_ISGID: u32 = 1024;
-pub const S_ISVTX: u32 = 512;
-pub const S_IRWXU: u32 = 448;
-pub const S_IRUSR: u32 = 256;
-pub const S_IWUSR: u32 = 128;
-pub const S_IXUSR: u32 = 64;
-pub const S_IRWXG: u32 = 56;
-pub const S_IRGRP: u32 = 32;
-pub const S_IWGRP: u32 = 16;
-pub const S_IXGRP: u32 = 8;
-pub const S_IRWXO: u32 = 7;
-pub const S_IROTH: u32 = 4;
-pub const S_IWOTH: u32 = 2;
-pub const S_IXOTH: u32 = 1;
-pub const STATX_TYPE: u32 = 1;
-pub const STATX_MODE: u32 = 2;
-pub const STATX_NLINK: u32 = 4;
-pub const STATX_UID: u32 = 8;
-pub const STATX_GID: u32 = 16;
-pub const STATX_ATIME: u32 = 32;
-pub const STATX_MTIME: u32 = 64;
-pub const STATX_CTIME: u32 = 128;
-pub const STATX_INO: u32 = 256;
-pub const STATX_SIZE: u32 = 512;
-pub const STATX_BLOCKS: u32 = 1024;
-pub const STATX_BASIC_STATS: u32 = 2047;
-pub const STATX_BTIME: u32 = 2048;
-pub const STATX_MNT_ID: u32 = 4096;
-pub const STATX_DIOALIGN: u32 = 8192;
-pub const STATX__RESERVED: u32 = 2147483648;
-pub const STATX_ALL: u32 = 4095;
-pub const STATX_ATTR_COMPRESSED: u32 = 4;
-pub const STATX_ATTR_IMMUTABLE: u32 = 16;
-pub const STATX_ATTR_APPEND: u32 = 32;
-pub const STATX_ATTR_NODUMP: u32 = 64;
-pub const STATX_ATTR_ENCRYPTED: u32 = 2048;
-pub const STATX_ATTR_AUTOMOUNT: u32 = 4096;
-pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192;
-pub const STATX_ATTR_VERITY: u32 = 1048576;
-pub const STATX_ATTR_DAX: u32 = 2097152;
-pub const SI_LOAD_SHIFT: u32 = 16;
-pub const TCP_MSS_DEFAULT: u32 = 536;
-pub const TCP_MSS_DESIRED: u32 = 1220;
-pub const TCP_NODELAY: u32 = 1;
-pub const TCP_MAXSEG: u32 = 2;
-pub const TCP_CORK: u32 = 3;
-pub const TCP_KEEPIDLE: u32 = 4;
-pub const TCP_KEEPINTVL: u32 = 5;
-pub const TCP_KEEPCNT: u32 = 6;
-pub const TCP_SYNCNT: u32 = 7;
-pub const TCP_LINGER2: u32 = 8;
-pub const TCP_DEFER_ACCEPT: u32 = 9;
-pub const TCP_WINDOW_CLAMP: u32 = 10;
-pub const TCP_INFO: u32 = 11;
-pub const TCP_QUICKACK: u32 = 12;
-pub const TCP_CONGESTION: u32 = 13;
-pub const TCP_MD5SIG: u32 = 14;
-pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16;
-pub const TCP_THIN_DUPACK: u32 = 17;
-pub const TCP_USER_TIMEOUT: u32 = 18;
-pub const TCP_REPAIR: u32 = 19;
-pub const TCP_REPAIR_QUEUE: u32 = 20;
-pub const TCP_QUEUE_SEQ: u32 = 21;
-pub const TCP_REPAIR_OPTIONS: u32 = 22;
-pub const TCP_FASTOPEN: u32 = 23;
-pub const TCP_TIMESTAMP: u32 = 24;
-pub const TCP_NOTSENT_LOWAT: u32 = 25;
-pub const TCP_CC_INFO: u32 = 26;
-pub const TCP_SAVE_SYN: u32 = 27;
-pub const TCP_SAVED_SYN: u32 = 28;
-pub const TCP_REPAIR_WINDOW: u32 = 29;
-pub const TCP_FASTOPEN_CONNECT: u32 = 30;
-pub const TCP_ULP: u32 = 31;
-pub const TCP_MD5SIG_EXT: u32 = 32;
-pub const TCP_FASTOPEN_KEY: u32 = 33;
-pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34;
-pub const TCP_ZEROCOPY_RECEIVE: u32 = 35;
-pub const TCP_INQ: u32 = 36;
-pub const TCP_CM_INQ: u32 = 36;
-pub const TCP_TX_DELAY: u32 = 37;
-pub const TCP_REPAIR_ON: u32 = 1;
-pub const TCP_REPAIR_OFF: u32 = 0;
-pub const TCP_REPAIR_OFF_NO_WP: i32 = -1;
-pub const TCPI_OPT_TIMESTAMPS: u32 = 1;
-pub const TCPI_OPT_SACK: u32 = 2;
-pub const TCPI_OPT_WSCALE: u32 = 4;
-pub const TCPI_OPT_ECN: u32 = 8;
-pub const TCPI_OPT_ECN_SEEN: u32 = 16;
-pub const TCPI_OPT_SYN_DATA: u32 = 32;
-pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80;
-pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
-pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
-pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
-pub const IGNBRK: u32 = 1;
-pub const BRKINT: u32 = 2;
-pub const IGNPAR: u32 = 4;
-pub const PARMRK: u32 = 8;
-pub const INPCK: u32 = 16;
-pub const ISTRIP: u32 = 32;
-pub const INLCR: u32 = 64;
-pub const IGNCR: u32 = 128;
-pub const ICRNL: u32 = 256;
-pub const IXANY: u32 = 2048;
-pub const OPOST: u32 = 1;
-pub const OCRNL: u32 = 8;
-pub const ONOCR: u32 = 16;
-pub const ONLRET: u32 = 32;
-pub const OFILL: u32 = 64;
-pub const OFDEL: u32 = 128;
-pub const B0: u32 = 0;
-pub const B50: u32 = 1;
-pub const B75: u32 = 2;
-pub const B110: u32 = 3;
-pub const B134: u32 = 4;
-pub const B150: u32 = 5;
-pub const B200: u32 = 6;
-pub const B300: u32 = 7;
-pub const B600: u32 = 8;
-pub const B1200: u32 = 9;
-pub const B1800: u32 = 10;
-pub const B2400: u32 = 11;
-pub const B4800: u32 = 12;
-pub const B9600: u32 = 13;
-pub const B19200: u32 = 14;
-pub const B38400: u32 = 15;
-pub const EXTA: u32 = 14;
-pub const EXTB: u32 = 15;
-pub const ADDRB: u32 = 536870912;
-pub const CMSPAR: u32 = 1073741824;
-pub const CRTSCTS: u32 = 2147483648;
-pub const IBSHIFT: u32 = 16;
-pub const TCOOFF: u32 = 0;
-pub const TCOON: u32 = 1;
-pub const TCIOFF: u32 = 2;
-pub const TCION: u32 = 3;
-pub const TCIFLUSH: u32 = 0;
-pub const TCOFLUSH: u32 = 1;
-pub const TCIOFLUSH: u32 = 2;
-pub const NCCS: u32 = 19;
-pub const VINTR: u32 = 0;
-pub const VQUIT: u32 = 1;
-pub const VERASE: u32 = 2;
-pub const VKILL: u32 = 3;
-pub const VEOF: u32 = 4;
-pub const VTIME: u32 = 5;
-pub const VMIN: u32 = 6;
-pub const VSWTC: u32 = 7;
-pub const VSTART: u32 = 8;
-pub const VSTOP: u32 = 9;
-pub const VSUSP: u32 = 10;
-pub const VEOL: u32 = 11;
-pub const VREPRINT: u32 = 12;
-pub const VDISCARD: u32 = 13;
-pub const VWERASE: u32 = 14;
-pub const VLNEXT: u32 = 15;
-pub const VEOL2: u32 = 16;
-pub const IUCLC: u32 = 512;
-pub const IXON: u32 = 1024;
-pub const IXOFF: u32 = 4096;
-pub const IMAXBEL: u32 = 8192;
-pub const IUTF8: u32 = 16384;
-pub const OLCUC: u32 = 2;
-pub const ONLCR: u32 = 4;
-pub const NLDLY: u32 = 256;
-pub const NL0: u32 = 0;
-pub const NL1: u32 = 256;
-pub const CRDLY: u32 = 1536;
-pub const CR0: u32 = 0;
-pub const CR1: u32 = 512;
-pub const CR2: u32 = 1024;
-pub const CR3: u32 = 1536;
-pub const TABDLY: u32 = 6144;
-pub const TAB0: u32 = 0;
-pub const TAB1: u32 = 2048;
-pub const TAB2: u32 = 4096;
-pub const TAB3: u32 = 6144;
-pub const XTABS: u32 = 6144;
-pub const BSDLY: u32 = 8192;
-pub const BS0: u32 = 0;
-pub const BS1: u32 = 8192;
-pub const VTDLY: u32 = 16384;
-pub const VT0: u32 = 0;
-pub const VT1: u32 = 16384;
-pub const FFDLY: u32 = 32768;
-pub const FF0: u32 = 0;
-pub const FF1: u32 = 32768;
-pub const CBAUD: u32 = 4111;
-pub const CSIZE: u32 = 48;
-pub const CS5: u32 = 0;
-pub const CS6: u32 = 16;
-pub const CS7: u32 = 32;
-pub const CS8: u32 = 48;
-pub const CSTOPB: u32 = 64;
-pub const CREAD: u32 = 128;
-pub const PARENB: u32 = 256;
-pub const PARODD: u32 = 512;
-pub const HUPCL: u32 = 1024;
-pub const CLOCAL: u32 = 2048;
-pub const CBAUDEX: u32 = 4096;
-pub const BOTHER: u32 = 4096;
-pub const B57600: u32 = 4097;
-pub const B115200: u32 = 4098;
-pub const B230400: u32 = 4099;
-pub const B460800: u32 = 4100;
-pub const B500000: u32 = 4101;
-pub const B576000: u32 = 4102;
-pub const B921600: u32 = 4103;
-pub const B1000000: u32 = 4104;
-pub const B1152000: u32 = 4105;
-pub const B1500000: u32 = 4106;
-pub const B2000000: u32 = 4107;
-pub const B2500000: u32 = 4108;
-pub const B3000000: u32 = 4109;
-pub const B3500000: u32 = 4110;
-pub const B4000000: u32 = 4111;
-pub const CIBAUD: u32 = 269418496;
-pub const ISIG: u32 = 1;
-pub const ICANON: u32 = 2;
-pub const XCASE: u32 = 4;
-pub const ECHO: u32 = 8;
-pub const ECHOE: u32 = 16;
-pub const ECHOK: u32 = 32;
-pub const ECHONL: u32 = 64;
-pub const NOFLSH: u32 = 128;
-pub const TOSTOP: u32 = 256;
-pub const ECHOCTL: u32 = 512;
-pub const ECHOPRT: u32 = 1024;
-pub const ECHOKE: u32 = 2048;
-pub const FLUSHO: u32 = 4096;
-pub const PENDIN: u32 = 16384;
-pub const IEXTEN: u32 = 32768;
-pub const EXTPROC: u32 = 65536;
-pub const TCSANOW: u32 = 0;
-pub const TCSADRAIN: u32 = 1;
-pub const TCSAFLUSH: u32 = 2;
-pub const TIOCPKT_DATA: u32 = 0;
-pub const TIOCPKT_FLUSHREAD: u32 = 1;
-pub const TIOCPKT_FLUSHWRITE: u32 = 2;
-pub const TIOCPKT_STOP: u32 = 4;
-pub const TIOCPKT_START: u32 = 8;
-pub const TIOCPKT_NOSTOP: u32 = 16;
-pub const TIOCPKT_DOSTOP: u32 = 32;
-pub const TIOCPKT_IOCTL: u32 = 64;
-pub const TIOCSER_TEMT: u32 = 1;
-pub const NCC: u32 = 8;
-pub const TIOCM_LE: u32 = 1;
-pub const TIOCM_DTR: u32 = 2;
-pub const TIOCM_RTS: u32 = 4;
-pub const TIOCM_ST: u32 = 8;
-pub const TIOCM_SR: u32 = 16;
-pub const TIOCM_CTS: u32 = 32;
-pub const TIOCM_CAR: u32 = 64;
-pub const TIOCM_RNG: u32 = 128;
-pub const TIOCM_DSR: u32 = 256;
-pub const TIOCM_CD: u32 = 64;
-pub const TIOCM_RI: u32 = 128;
-pub const TIOCM_OUT1: u32 = 8192;
-pub const TIOCM_OUT2: u32 = 16384;
-pub const TIOCM_LOOP: u32 = 32768;
-pub const UIO_FASTIOV: u32 = 8;
-pub const UIO_MAXIOV: u32 = 1024;
-pub const UNIX_PATH_MAX: u32 = 108;
-pub const __X32_SYSCALL_BIT: u32 = 1073741824;
-pub const __NR_read: u32 = 1073741824;
-pub const __NR_write: u32 = 1073741825;
-pub const __NR_open: u32 = 1073741826;
-pub const __NR_close: u32 = 1073741827;
-pub const __NR_stat: u32 = 1073741828;
-pub const __NR_fstat: u32 = 1073741829;
-pub const __NR_lstat: u32 = 1073741830;
-pub const __NR_poll: u32 = 1073741831;
-pub const __NR_lseek: u32 = 1073741832;
-pub const __NR_mmap: u32 = 1073741833;
-pub const __NR_mprotect: u32 = 1073741834;
-pub const __NR_munmap: u32 = 1073741835;
-pub const __NR_brk: u32 = 1073741836;
-pub const __NR_rt_sigprocmask: u32 = 1073741838;
-pub const __NR_pread64: u32 = 1073741841;
-pub const __NR_pwrite64: u32 = 1073741842;
-pub const __NR_access: u32 = 1073741845;
-pub const __NR_pipe: u32 = 1073741846;
-pub const __NR_select: u32 = 1073741847;
-pub const __NR_sched_yield: u32 = 1073741848;
-pub const __NR_mremap: u32 = 1073741849;
-pub const __NR_msync: u32 = 1073741850;
-pub const __NR_mincore: u32 = 1073741851;
-pub const __NR_madvise: u32 = 1073741852;
-pub const __NR_shmget: u32 = 1073741853;
-pub const __NR_shmat: u32 = 1073741854;
-pub const __NR_shmctl: u32 = 1073741855;
-pub const __NR_dup: u32 = 1073741856;
-pub const __NR_dup2: u32 = 1073741857;
-pub const __NR_pause: u32 = 1073741858;
-pub const __NR_nanosleep: u32 = 1073741859;
-pub const __NR_getitimer: u32 = 1073741860;
-pub const __NR_alarm: u32 = 1073741861;
-pub const __NR_setitimer: u32 = 1073741862;
-pub const __NR_getpid: u32 = 1073741863;
-pub const __NR_sendfile: u32 = 1073741864;
-pub const __NR_socket: u32 = 1073741865;
-pub const __NR_connect: u32 = 1073741866;
-pub const __NR_accept: u32 = 1073741867;
-pub const __NR_sendto: u32 = 1073741868;
-pub const __NR_shutdown: u32 = 1073741872;
-pub const __NR_bind: u32 = 1073741873;
-pub const __NR_listen: u32 = 1073741874;
-pub const __NR_getsockname: u32 = 1073741875;
-pub const __NR_getpeername: u32 = 1073741876;
-pub const __NR_socketpair: u32 = 1073741877;
-pub const __NR_clone: u32 = 1073741880;
-pub const __NR_fork: u32 = 1073741881;
-pub const __NR_vfork: u32 = 1073741882;
-pub const __NR_exit: u32 = 1073741884;
-pub const __NR_wait4: u32 = 1073741885;
-pub const __NR_kill: u32 = 1073741886;
-pub const __NR_uname: u32 = 1073741887;
-pub const __NR_semget: u32 = 1073741888;
-pub const __NR_semop: u32 = 1073741889;
-pub const __NR_semctl: u32 = 1073741890;
-pub const __NR_shmdt: u32 = 1073741891;
-pub const __NR_msgget: u32 = 1073741892;
-pub const __NR_msgsnd: u32 = 1073741893;
-pub const __NR_msgrcv: u32 = 1073741894;
-pub const __NR_msgctl: u32 = 1073741895;
-pub const __NR_fcntl: u32 = 1073741896;
-pub const __NR_flock: u32 = 1073741897;
-pub const __NR_fsync: u32 = 1073741898;
-pub const __NR_fdatasync: u32 = 1073741899;
-pub const __NR_truncate: u32 = 1073741900;
-pub const __NR_ftruncate: u32 = 1073741901;
-pub const __NR_getdents: u32 = 1073741902;
-pub const __NR_getcwd: u32 = 1073741903;
-pub const __NR_chdir: u32 = 1073741904;
-pub const __NR_fchdir: u32 = 1073741905;
-pub const __NR_rename: u32 = 1073741906;
-pub const __NR_mkdir: u32 = 1073741907;
-pub const __NR_rmdir: u32 = 1073741908;
-pub const __NR_creat: u32 = 1073741909;
-pub const __NR_link: u32 = 1073741910;
-pub const __NR_unlink: u32 = 1073741911;
-pub const __NR_symlink: u32 = 1073741912;
-pub const __NR_readlink: u32 = 1073741913;
-pub const __NR_chmod: u32 = 1073741914;
-pub const __NR_fchmod: u32 = 1073741915;
-pub const __NR_chown: u32 = 1073741916;
-pub const __NR_fchown: u32 = 1073741917;
-pub const __NR_lchown: u32 = 1073741918;
-pub const __NR_umask: u32 = 1073741919;
-pub const __NR_gettimeofday: u32 = 1073741920;
-pub const __NR_getrlimit: u32 = 1073741921;
-pub const __NR_getrusage: u32 = 1073741922;
-pub const __NR_sysinfo: u32 = 1073741923;
-pub const __NR_times: u32 = 1073741924;
-pub const __NR_getuid: u32 = 1073741926;
-pub const __NR_syslog: u32 = 1073741927;
-pub const __NR_getgid: u32 = 1073741928;
-pub const __NR_setuid: u32 = 1073741929;
-pub const __NR_setgid: u32 = 1073741930;
-pub const __NR_geteuid: u32 = 1073741931;
-pub const __NR_getegid: u32 = 1073741932;
-pub const __NR_setpgid: u32 = 1073741933;
-pub const __NR_getppid: u32 = 1073741934;
-pub const __NR_getpgrp: u32 = 1073741935;
-pub const __NR_setsid: u32 = 1073741936;
-pub const __NR_setreuid: u32 = 1073741937;
-pub const __NR_setregid: u32 = 1073741938;
-pub const __NR_getgroups: u32 = 1073741939;
-pub const __NR_setgroups: u32 = 1073741940;
-pub const __NR_setresuid: u32 = 1073741941;
-pub const __NR_getresuid: u32 = 1073741942;
-pub const __NR_setresgid: u32 = 1073741943;
-pub const __NR_getresgid: u32 = 1073741944;
-pub const __NR_getpgid: u32 = 1073741945;
-pub const __NR_setfsuid: u32 = 1073741946;
-pub const __NR_setfsgid: u32 = 1073741947;
-pub const __NR_getsid: u32 = 1073741948;
-pub const __NR_capget: u32 = 1073741949;
-pub const __NR_capset: u32 = 1073741950;
-pub const __NR_rt_sigsuspend: u32 = 1073741954;
-pub const __NR_utime: u32 = 1073741956;
-pub const __NR_mknod: u32 = 1073741957;
-pub const __NR_personality: u32 = 1073741959;
-pub const __NR_ustat: u32 = 1073741960;
-pub const __NR_statfs: u32 = 1073741961;
-pub const __NR_fstatfs: u32 = 1073741962;
-pub const __NR_sysfs: u32 = 1073741963;
-pub const __NR_getpriority: u32 = 1073741964;
-pub const __NR_setpriority: u32 = 1073741965;
-pub const __NR_sched_setparam: u32 = 1073741966;
-pub const __NR_sched_getparam: u32 = 1073741967;
-pub const __NR_sched_setscheduler: u32 = 1073741968;
-pub const __NR_sched_getscheduler: u32 = 1073741969;
-pub const __NR_sched_get_priority_max: u32 = 1073741970;
-pub const __NR_sched_get_priority_min: u32 = 1073741971;
-pub const __NR_sched_rr_get_interval: u32 = 1073741972;
-pub const __NR_mlock: u32 = 1073741973;
-pub const __NR_munlock: u32 = 1073741974;
-pub const __NR_mlockall: u32 = 1073741975;
-pub const __NR_munlockall: u32 = 1073741976;
-pub const __NR_vhangup: u32 = 1073741977;
-pub const __NR_modify_ldt: u32 = 1073741978;
-pub const __NR_pivot_root: u32 = 1073741979;
-pub const __NR_prctl: u32 = 1073741981;
-pub const __NR_arch_prctl: u32 = 1073741982;
-pub const __NR_adjtimex: u32 = 1073741983;
-pub const __NR_setrlimit: u32 = 1073741984;
-pub const __NR_chroot: u32 = 1073741985;
-pub const __NR_sync: u32 = 1073741986;
-pub const __NR_acct: u32 = 1073741987;
-pub const __NR_settimeofday: u32 = 1073741988;
-pub const __NR_mount: u32 = 1073741989;
-pub const __NR_umount2: u32 = 1073741990;
-pub const __NR_swapon: u32 = 1073741991;
-pub const __NR_swapoff: u32 = 1073741992;
-pub const __NR_reboot: u32 = 1073741993;
-pub const __NR_sethostname: u32 = 1073741994;
-pub const __NR_setdomainname: u32 = 1073741995;
-pub const __NR_iopl: u32 = 1073741996;
-pub const __NR_ioperm: u32 = 1073741997;
-pub const __NR_init_module: u32 = 1073741999;
-pub const __NR_delete_module: u32 = 1073742000;
-pub const __NR_quotactl: u32 = 1073742003;
-pub const __NR_getpmsg: u32 = 1073742005;
-pub const __NR_putpmsg: u32 = 1073742006;
-pub const __NR_afs_syscall: u32 = 1073742007;
-pub const __NR_tuxcall: u32 = 1073742008;
-pub const __NR_security: u32 = 1073742009;
-pub const __NR_gettid: u32 = 1073742010;
-pub const __NR_readahead: u32 = 1073742011;
-pub const __NR_setxattr: u32 = 1073742012;
-pub const __NR_lsetxattr: u32 = 1073742013;
-pub const __NR_fsetxattr: u32 = 1073742014;
-pub const __NR_getxattr: u32 = 1073742015;
-pub const __NR_lgetxattr: u32 = 1073742016;
-pub const __NR_fgetxattr: u32 = 1073742017;
-pub const __NR_listxattr: u32 = 1073742018;
-pub const __NR_llistxattr: u32 = 1073742019;
-pub const __NR_flistxattr: u32 = 1073742020;
-pub const __NR_removexattr: u32 = 1073742021;
-pub const __NR_lremovexattr: u32 = 1073742022;
-pub const __NR_fremovexattr: u32 = 1073742023;
-pub const __NR_tkill: u32 = 1073742024;
-pub const __NR_time: u32 = 1073742025;
-pub const __NR_futex: u32 = 1073742026;
-pub const __NR_sched_setaffinity: u32 = 1073742027;
-pub const __NR_sched_getaffinity: u32 = 1073742028;
-pub const __NR_io_destroy: u32 = 1073742031;
-pub const __NR_io_getevents: u32 = 1073742032;
-pub const __NR_io_cancel: u32 = 1073742034;
-pub const __NR_lookup_dcookie: u32 = 1073742036;
-pub const __NR_epoll_create: u32 = 1073742037;
-pub const __NR_remap_file_pages: u32 = 1073742040;
-pub const __NR_getdents64: u32 = 1073742041;
-pub const __NR_set_tid_address: u32 = 1073742042;
-pub const __NR_restart_syscall: u32 = 1073742043;
-pub const __NR_semtimedop: u32 = 1073742044;
-pub const __NR_fadvise64: u32 = 1073742045;
-pub const __NR_timer_settime: u32 = 1073742047;
-pub const __NR_timer_gettime: u32 = 1073742048;
-pub const __NR_timer_getoverrun: u32 = 1073742049;
-pub const __NR_timer_delete: u32 = 1073742050;
-pub const __NR_clock_settime: u32 = 1073742051;
-pub const __NR_clock_gettime: u32 = 1073742052;
-pub const __NR_clock_getres: u32 = 1073742053;
-pub const __NR_clock_nanosleep: u32 = 1073742054;
-pub const __NR_exit_group: u32 = 1073742055;
-pub const __NR_epoll_wait: u32 = 1073742056;
-pub const __NR_epoll_ctl: u32 = 1073742057;
-pub const __NR_tgkill: u32 = 1073742058;
-pub const __NR_utimes: u32 = 1073742059;
-pub const __NR_mbind: u32 = 1073742061;
-pub const __NR_set_mempolicy: u32 = 1073742062;
-pub const __NR_get_mempolicy: u32 = 1073742063;
-pub const __NR_mq_open: u32 = 1073742064;
-pub const __NR_mq_unlink: u32 = 1073742065;
-pub const __NR_mq_timedsend: u32 = 1073742066;
-pub const __NR_mq_timedreceive: u32 = 1073742067;
-pub const __NR_mq_getsetattr: u32 = 1073742069;
-pub const __NR_add_key: u32 = 1073742072;
-pub const __NR_request_key: u32 = 1073742073;
-pub const __NR_keyctl: u32 = 1073742074;
-pub const __NR_ioprio_set: u32 = 1073742075;
-pub const __NR_ioprio_get: u32 = 1073742076;
-pub const __NR_inotify_init: u32 = 1073742077;
-pub const __NR_inotify_add_watch: u32 = 1073742078;
-pub const __NR_inotify_rm_watch: u32 = 1073742079;
-pub const __NR_migrate_pages: u32 = 1073742080;
-pub const __NR_openat: u32 = 1073742081;
-pub const __NR_mkdirat: u32 = 1073742082;
-pub const __NR_mknodat: u32 = 1073742083;
-pub const __NR_fchownat: u32 = 1073742084;
-pub const __NR_futimesat: u32 = 1073742085;
-pub const __NR_newfstatat: u32 = 1073742086;
-pub const __NR_unlinkat: u32 = 1073742087;
-pub const __NR_renameat: u32 = 1073742088;
-pub const __NR_linkat: u32 = 1073742089;
-pub const __NR_symlinkat: u32 = 1073742090;
-pub const __NR_readlinkat: u32 = 1073742091;
-pub const __NR_fchmodat: u32 = 1073742092;
-pub const __NR_faccessat: u32 = 1073742093;
-pub const __NR_pselect6: u32 = 1073742094;
-pub const __NR_ppoll: u32 = 1073742095;
-pub const __NR_unshare: u32 = 1073742096;
-pub const __NR_splice: u32 = 1073742099;
-pub const __NR_tee: u32 = 1073742100;
-pub const __NR_sync_file_range: u32 = 1073742101;
-pub const __NR_utimensat: u32 = 1073742104;
-pub const __NR_epoll_pwait: u32 = 1073742105;
-pub const __NR_signalfd: u32 = 1073742106;
-pub const __NR_timerfd_create: u32 = 1073742107;
-pub const __NR_eventfd: u32 = 1073742108;
-pub const __NR_fallocate: u32 = 1073742109;
-pub const __NR_timerfd_settime: u32 = 1073742110;
-pub const __NR_timerfd_gettime: u32 = 1073742111;
-pub const __NR_accept4: u32 = 1073742112;
-pub const __NR_signalfd4: u32 = 1073742113;
-pub const __NR_eventfd2: u32 = 1073742114;
-pub const __NR_epoll_create1: u32 = 1073742115;
-pub const __NR_dup3: u32 = 1073742116;
-pub const __NR_pipe2: u32 = 1073742117;
-pub const __NR_inotify_init1: u32 = 1073742118;
-pub const __NR_perf_event_open: u32 = 1073742122;
-pub const __NR_fanotify_init: u32 = 1073742124;
-pub const __NR_fanotify_mark: u32 = 1073742125;
-pub const __NR_prlimit64: u32 = 1073742126;
-pub const __NR_name_to_handle_at: u32 = 1073742127;
-pub const __NR_open_by_handle_at: u32 = 1073742128;
-pub const __NR_clock_adjtime: u32 = 1073742129;
-pub const __NR_syncfs: u32 = 1073742130;
-pub const __NR_setns: u32 = 1073742132;
-pub const __NR_getcpu: u32 = 1073742133;
-pub const __NR_kcmp: u32 = 1073742136;
-pub const __NR_finit_module: u32 = 1073742137;
-pub const __NR_sched_setattr: u32 = 1073742138;
-pub const __NR_sched_getattr: u32 = 1073742139;
-pub const __NR_renameat2: u32 = 1073742140;
-pub const __NR_seccomp: u32 = 1073742141;
-pub const __NR_getrandom: u32 = 1073742142;
-pub const __NR_memfd_create: u32 = 1073742143;
-pub const __NR_kexec_file_load: u32 = 1073742144;
-pub const __NR_bpf: u32 = 1073742145;
-pub const __NR_userfaultfd: u32 = 1073742147;
-pub const __NR_membarrier: u32 = 1073742148;
-pub const __NR_mlock2: u32 = 1073742149;
-pub const __NR_copy_file_range: u32 = 1073742150;
-pub const __NR_pkey_mprotect: u32 = 1073742153;
-pub const __NR_pkey_alloc: u32 = 1073742154;
-pub const __NR_pkey_free: u32 = 1073742155;
-pub const __NR_statx: u32 = 1073742156;
-pub const __NR_io_pgetevents: u32 = 1073742157;
-pub const __NR_rseq: u32 = 1073742158;
-pub const __NR_pidfd_send_signal: u32 = 1073742248;
-pub const __NR_io_uring_setup: u32 = 1073742249;
-pub const __NR_io_uring_enter: u32 = 1073742250;
-pub const __NR_io_uring_register: u32 = 1073742251;
-pub const __NR_open_tree: u32 = 1073742252;
-pub const __NR_move_mount: u32 = 1073742253;
-pub const __NR_fsopen: u32 = 1073742254;
-pub const __NR_fsconfig: u32 = 1073742255;
-pub const __NR_fsmount: u32 = 1073742256;
-pub const __NR_fspick: u32 = 1073742257;
-pub const __NR_pidfd_open: u32 = 1073742258;
-pub const __NR_clone3: u32 = 1073742259;
-pub const __NR_close_range: u32 = 1073742260;
-pub const __NR_openat2: u32 = 1073742261;
-pub const __NR_pidfd_getfd: u32 = 1073742262;
-pub const __NR_faccessat2: u32 = 1073742263;
-pub const __NR_process_madvise: u32 = 1073742264;
-pub const __NR_epoll_pwait2: u32 = 1073742265;
-pub const __NR_mount_setattr: u32 = 1073742266;
-pub const __NR_quotactl_fd: u32 = 1073742267;
-pub const __NR_landlock_create_ruleset: u32 = 1073742268;
-pub const __NR_landlock_add_rule: u32 = 1073742269;
-pub const __NR_landlock_restrict_self: u32 = 1073742270;
-pub const __NR_memfd_secret: u32 = 1073742271;
-pub const __NR_process_mrelease: u32 = 1073742272;
-pub const __NR_futex_waitv: u32 = 1073742273;
-pub const __NR_set_mempolicy_home_node: u32 = 1073742274;
-pub const __NR_rt_sigaction: u32 = 1073742336;
-pub const __NR_rt_sigreturn: u32 = 1073742337;
-pub const __NR_ioctl: u32 = 1073742338;
-pub const __NR_readv: u32 = 1073742339;
-pub const __NR_writev: u32 = 1073742340;
-pub const __NR_recvfrom: u32 = 1073742341;
-pub const __NR_sendmsg: u32 = 1073742342;
-pub const __NR_recvmsg: u32 = 1073742343;
-pub const __NR_execve: u32 = 1073742344;
-pub const __NR_ptrace: u32 = 1073742345;
-pub const __NR_rt_sigpending: u32 = 1073742346;
-pub const __NR_rt_sigtimedwait: u32 = 1073742347;
-pub const __NR_rt_sigqueueinfo: u32 = 1073742348;
-pub const __NR_sigaltstack: u32 = 1073742349;
-pub const __NR_timer_create: u32 = 1073742350;
-pub const __NR_mq_notify: u32 = 1073742351;
-pub const __NR_kexec_load: u32 = 1073742352;
-pub const __NR_waitid: u32 = 1073742353;
-pub const __NR_set_robust_list: u32 = 1073742354;
-pub const __NR_get_robust_list: u32 = 1073742355;
-pub const __NR_vmsplice: u32 = 1073742356;
-pub const __NR_move_pages: u32 = 1073742357;
-pub const __NR_preadv: u32 = 1073742358;
-pub const __NR_pwritev: u32 = 1073742359;
-pub const __NR_rt_tgsigqueueinfo: u32 = 1073742360;
-pub const __NR_recvmmsg: u32 = 1073742361;
-pub const __NR_sendmmsg: u32 = 1073742362;
-pub const __NR_process_vm_readv: u32 = 1073742363;
-pub const __NR_process_vm_writev: u32 = 1073742364;
-pub const __NR_setsockopt: u32 = 1073742365;
-pub const __NR_getsockopt: u32 = 1073742366;
-pub const __NR_io_setup: u32 = 1073742367;
-pub const __NR_io_submit: u32 = 1073742368;
-pub const __NR_execveat: u32 = 1073742369;
-pub const __NR_preadv2: u32 = 1073742370;
-pub const __NR_pwritev2: u32 = 1073742371;
-pub const __OLD_UTS_LEN: u32 = 8;
-pub const __NEW_UTS_LEN: u32 = 64;
-pub const WNOHANG: u32 = 1;
-pub const WUNTRACED: u32 = 2;
-pub const WSTOPPED: u32 = 2;
-pub const WEXITED: u32 = 4;
-pub const WCONTINUED: u32 = 8;
-pub const WNOWAIT: u32 = 16777216;
-pub const __WNOTHREAD: u32 = 536870912;
-pub const __WALL: u32 = 1073741824;
-pub const __WCLONE: u32 = 2147483648;
-pub const P_ALL: u32 = 0;
-pub const P_PID: u32 = 1;
-pub const P_PGID: u32 = 2;
-pub const P_PIDFD: u32 = 3;
-pub const XATTR_CREATE: u32 = 1;
-pub const XATTR_REPLACE: u32 = 2;
-pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0";
-pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0";
-pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0";
-pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0";
-pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0";
-pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0";
-pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0";
-pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0";
-pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0";
-pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0";
-pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0";
-pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0";
-pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0";
-pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0";
-pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0";
-pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0";
-pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0";
-pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0";
-pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0";
-pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0";
-pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0";
-pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0";
-pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0";
-pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0";
-pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0";
-pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0";
-pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0";
-pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0";
-pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0";
-pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0";
-pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0";
-pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0";
-pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0";
-pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0";
-pub const MFD_CLOEXEC: u32 = 1;
-pub const MFD_ALLOW_SEALING: u32 = 2;
-pub const MFD_HUGETLB: u32 = 4;
-pub const MFD_HUGE_SHIFT: u32 = 26;
-pub const MFD_HUGE_MASK: u32 = 63;
-pub const MFD_HUGE_64KB: u32 = 1073741824;
-pub const MFD_HUGE_512KB: u32 = 1275068416;
-pub const MFD_HUGE_1MB: u32 = 1342177280;
-pub const MFD_HUGE_2MB: u32 = 1409286144;
-pub const MFD_HUGE_8MB: u32 = 1543503872;
-pub const MFD_HUGE_16MB: u32 = 1610612736;
-pub const MFD_HUGE_32MB: u32 = 1677721600;
-pub const MFD_HUGE_256MB: u32 = 1879048192;
-pub const MFD_HUGE_512MB: u32 = 1946157056;
-pub const MFD_HUGE_1GB: u32 = 2013265920;
-pub const MFD_HUGE_2GB: u32 = 2080374784;
-pub const MFD_HUGE_16GB: u32 = 2281701376;
-pub const TFD_TIMER_ABSTIME: u32 = 1;
-pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2;
-pub const TFD_CLOEXEC: u32 = 524288;
-pub const TFD_NONBLOCK: u32 = 2048;
-pub const USERFAULTFD_IOC: u32 = 170;
-pub const _UFFDIO_REGISTER: u32 = 0;
-pub const _UFFDIO_UNREGISTER: u32 = 1;
-pub const _UFFDIO_WAKE: u32 = 2;
-pub const _UFFDIO_COPY: u32 = 3;
-pub const _UFFDIO_ZEROPAGE: u32 = 4;
-pub const _UFFDIO_WRITEPROTECT: u32 = 6;
-pub const _UFFDIO_CONTINUE: u32 = 7;
-pub const _UFFDIO_API: u32 = 63;
-pub const UFFDIO: u32 = 170;
-pub const UFFD_EVENT_PAGEFAULT: u32 = 18;
-pub const UFFD_EVENT_FORK: u32 = 19;
-pub const UFFD_EVENT_REMAP: u32 = 20;
-pub const UFFD_EVENT_REMOVE: u32 = 21;
-pub const UFFD_EVENT_UNMAP: u32 = 22;
-pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1;
-pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2;
-pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4;
-pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1;
-pub const UFFD_FEATURE_EVENT_FORK: u32 = 2;
-pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4;
-pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8;
-pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16;
-pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32;
-pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64;
-pub const UFFD_FEATURE_SIGBUS: u32 = 128;
-pub const UFFD_FEATURE_THREAD_ID: u32 = 256;
-pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512;
-pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024;
-pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048;
-pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096;
-pub const UFFD_USER_MODE_ONLY: u32 = 1;
-pub const IORING_FILE_INDEX_ALLOC: i32 = -1;
-pub const IORING_SETUP_IOPOLL: u32 = 1;
-pub const IORING_SETUP_SQPOLL: u32 = 2;
-pub const IORING_SETUP_SQ_AFF: u32 = 4;
-pub const IORING_SETUP_CQSIZE: u32 = 8;
-pub const IORING_SETUP_CLAMP: u32 = 16;
-pub const IORING_SETUP_ATTACH_WQ: u32 = 32;
-pub const IORING_SETUP_R_DISABLED: u32 = 64;
-pub const IORING_SETUP_SUBMIT_ALL: u32 = 128;
-pub const IORING_SETUP_COOP_TASKRUN: u32 = 256;
-pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512;
-pub const IORING_SETUP_SQE128: u32 = 1024;
-pub const IORING_SETUP_CQE32: u32 = 2048;
-pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096;
-pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192;
-pub const IORING_URING_CMD_FIXED: u32 = 1;
-pub const IORING_FSYNC_DATASYNC: u32 = 1;
-pub const IORING_TIMEOUT_ABS: u32 = 1;
-pub const IORING_TIMEOUT_UPDATE: u32 = 2;
-pub const IORING_TIMEOUT_BOOTTIME: u32 = 4;
-pub const IORING_TIMEOUT_REALTIME: u32 = 8;
-pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16;
-pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32;
-pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12;
-pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18;
-pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648;
-pub const IORING_POLL_ADD_MULTI: u32 = 1;
-pub const IORING_POLL_UPDATE_EVENTS: u32 = 2;
-pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4;
-pub const IORING_POLL_ADD_LEVEL: u32 = 8;
-pub const IORING_ASYNC_CANCEL_ALL: u32 = 1;
-pub const IORING_ASYNC_CANCEL_FD: u32 = 2;
-pub const IORING_ASYNC_CANCEL_ANY: u32 = 4;
-pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8;
-pub const IORING_RECVSEND_POLL_FIRST: u32 = 1;
-pub const IORING_RECV_MULTISHOT: u32 = 2;
-pub const IORING_RECVSEND_FIXED_BUF: u32 = 4;
-pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8;
-pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648;
-pub const IORING_ACCEPT_MULTISHOT: u32 = 1;
-pub const IORING_MSG_RING_CQE_SKIP: u32 = 1;
-pub const IORING_CQE_F_BUFFER: u32 = 1;
-pub const IORING_CQE_F_MORE: u32 = 2;
-pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4;
-pub const IORING_CQE_F_NOTIF: u32 = 8;
-pub const IORING_OFF_SQ_RING: u32 = 0;
-pub const IORING_OFF_CQ_RING: u32 = 134217728;
-pub const IORING_OFF_SQES: u32 = 268435456;
-pub const IORING_SQ_NEED_WAKEUP: u32 = 1;
-pub const IORING_SQ_CQ_OVERFLOW: u32 = 2;
-pub const IORING_SQ_TASKRUN: u32 = 4;
-pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1;
-pub const IORING_ENTER_GETEVENTS: u32 = 1;
-pub const IORING_ENTER_SQ_WAKEUP: u32 = 2;
-pub const IORING_ENTER_SQ_WAIT: u32 = 4;
-pub const IORING_ENTER_EXT_ARG: u32 = 8;
-pub const IORING_ENTER_REGISTERED_RING: u32 = 16;
-pub const IORING_FEAT_SINGLE_MMAP: u32 = 1;
-pub const IORING_FEAT_NODROP: u32 = 2;
-pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4;
-pub const IORING_FEAT_RW_CUR_POS: u32 = 8;
-pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16;
-pub const IORING_FEAT_FAST_POLL: u32 = 32;
-pub const IORING_FEAT_POLL_32BITS: u32 = 64;
-pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128;
-pub const IORING_FEAT_EXT_ARG: u32 = 256;
-pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512;
-pub const IORING_FEAT_RSRC_TAGS: u32 = 1024;
-pub const IORING_FEAT_CQE_SKIP: u32 = 2048;
-pub const IORING_FEAT_LINKED_FILE: u32 = 4096;
-pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1;
-pub const IORING_REGISTER_FILES_SKIP: i32 = -2;
-pub const IO_URING_OP_SUPPORTED: u32 = 1;
-pub const DT_UNKNOWN: u32 = 0;
-pub const DT_FIFO: u32 = 1;
-pub const DT_CHR: u32 = 2;
-pub const DT_DIR: u32 = 4;
-pub const DT_BLK: u32 = 6;
-pub const DT_REG: u32 = 8;
-pub const DT_LNK: u32 = 10;
-pub const DT_SOCK: u32 = 12;
-pub const SHUT_RD: u32 = 0;
-pub const SHUT_WR: u32 = 1;
-pub const SHUT_RDWR: u32 = 2;
-pub const STAT_HAVE_NSEC: u32 = 1;
-pub const SOCK_STREAM: u32 = 1;
-pub const SOCK_DGRAM: u32 = 2;
-pub const SOCK_RAW: u32 = 3;
-pub const SOCK_RDM: u32 = 4;
-pub const SOCK_SEQPACKET: u32 = 5;
-pub const F_OK: u32 = 0;
-pub const R_OK: u32 = 4;
-pub const W_OK: u32 = 2;
-pub const X_OK: u32 = 1;
-pub const UTIME_NOW: u32 = 1073741823;
-pub const UTIME_OMIT: u32 = 1073741822;
-pub const MSG_DONTWAIT: u32 = 64;
-pub const AF_UNSPEC: u32 = 0;
-pub const AF_UNIX: u32 = 1;
-pub const AF_INET: u32 = 2;
-pub const AF_AX25: u32 = 3;
-pub const AF_IPX: u32 = 4;
-pub const AF_APPLETALK: u32 = 5;
-pub const AF_NETROM: u32 = 6;
-pub const AF_BRIDGE: u32 = 7;
-pub const AF_ATMPVC: u32 = 8;
-pub const AF_X25: u32 = 9;
-pub const AF_INET6: u32 = 10;
-pub const AF_ROSE: u32 = 11;
-pub const AF_DECnet: u32 = 12;
-pub const AF_NETBEUI: u32 = 13;
-pub const AF_SECURITY: u32 = 14;
-pub const AF_KEY: u32 = 15;
-pub const AF_NETLINK: u32 = 16;
-pub const AF_PACKET: u32 = 17;
-pub const AF_ASH: u32 = 18;
-pub const AF_ECONET: u32 = 19;
-pub const AF_ATMSVC: u32 = 20;
-pub const AF_RDS: u32 = 21;
-pub const AF_SNA: u32 = 22;
-pub const AF_IRDA: u32 = 23;
-pub const AF_PPPOX: u32 = 24;
-pub const AF_WANPIPE: u32 = 25;
-pub const AF_LLC: u32 = 26;
-pub const AF_CAN: u32 = 29;
-pub const AF_TIPC: u32 = 30;
-pub const AF_BLUETOOTH: u32 = 31;
-pub const AF_IUCV: u32 = 32;
-pub const AF_RXRPC: u32 = 33;
-pub const AF_ISDN: u32 = 34;
-pub const AF_PHONET: u32 = 35;
-pub const AF_IEEE802154: u32 = 36;
-pub const AF_MAX: u32 = 37;
-pub const MSG_OOB: u32 = 1;
-pub const MSG_PEEK: u32 = 2;
-pub const MSG_DONTROUTE: u32 = 4;
-pub const MSG_CTRUNC: u32 = 8;
-pub const MSG_PROBE: u32 = 16;
-pub const MSG_TRUNC: u32 = 32;
-pub const MSG_EOR: u32 = 128;
-pub const MSG_WAITALL: u32 = 256;
-pub const MSG_FIN: u32 = 512;
-pub const MSG_SYN: u32 = 1024;
-pub const MSG_CONFIRM: u32 = 2048;
-pub const MSG_RST: u32 = 4096;
-pub const MSG_ERRQUEUE: u32 = 8192;
-pub const MSG_NOSIGNAL: u32 = 16384;
-pub const MSG_MORE: u32 = 32768;
-pub const MSG_CMSG_CLOEXEC: u32 = 1073741824;
-pub const STDIN_FILENO: u32 = 0;
-pub const STDOUT_FILENO: u32 = 1;
-pub const STDERR_FILENO: u32 = 2;
-pub const RWF_HIPRI: u32 = 1;
-pub const RWF_DSYNC: u32 = 2;
-pub const RWF_SYNC: u32 = 4;
-pub const RWF_NOWAIT: u32 = 8;
-pub const RWF_APPEND: u32 = 16;
-pub const EFD_SEMAPHORE: u32 = 1;
-pub const EFD_CLOEXEC: u32 = 524288;
-pub const EFD_NONBLOCK: u32 = 2048;
-pub const EPOLLIN: u32 = 1;
-pub const EPOLLPRI: u32 = 2;
-pub const EPOLLOUT: u32 = 4;
-pub const EPOLLERR: u32 = 8;
-pub const EPOLLHUP: u32 = 16;
-pub const EPOLLNVAL: u32 = 32;
-pub const EPOLLRDNORM: u32 = 64;
-pub const EPOLLRDBAND: u32 = 128;
-pub const EPOLLWRNORM: u32 = 256;
-pub const EPOLLWRBAND: u32 = 512;
-pub const EPOLLMSG: u32 = 1024;
-pub const EPOLLRDHUP: u32 = 8192;
-pub const EPOLLEXCLUSIVE: u32 = 268435456;
-pub const EPOLLWAKEUP: u32 = 536870912;
-pub const EPOLLONESHOT: u32 = 1073741824;
-pub const EPOLLET: u32 = 2147483648;
-pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336;
-pub const TFD_CREATE_FLAGS: u32 = 526336;
-pub const TFD_SETTIME_FLAGS: u32 = 1;
-pub const ARCH_SET_FS: u32 = 4098;
-pub const SCM_RIGHTS: u32 = 1;
-pub const SCM_CREDENTIALS: u32 = 2;
-pub const SCM_SECURITY: u32 = 3;
-pub const UFFD_API: u32 = 170;
-pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1;
-pub const UFFDIO_REGISTER_MODE_WP: u32 = 2;
-pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4;
-pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1;
-pub const UFFDIO_COPY_MODE_WP: u32 = 2;
-pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1;
-pub const SPLICE_F_MOVE: u32 = 1;
-pub const SPLICE_F_NONBLOCK: u32 = 2;
-pub const SPLICE_F_MORE: u32 = 4;
-pub const SPLICE_F_GIFT: u32 = 8;
-pub const MNT_FORCE: u32 = 1;
-pub const MNT_DETACH: u32 = 2;
-pub const MNT_EXPIRE: u32 = 4;
-pub const UMOUNT_NOFOLLOW: u32 = 8;
-pub const UMOUNT_UNUSED: u32 = 2147483648;
-pub type size_t = crate::ctypes::c_uint;
-pub type ssize_t = crate::ctypes::c_int;
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 32usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_long_t = crate::ctypes::c_longlong;
-pub type __kernel_ulong_t = crate::ctypes::c_ulonglong;
-pub type __kernel_old_uid_t = crate::ctypes::c_ushort;
-pub type __kernel_old_gid_t = crate::ctypes::c_ushort;
-pub type __kernel_old_dev_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_size_t = crate::ctypes::c_uint;
-pub type __kernel_ssize_t = crate::ctypes::c_int;
-pub type __kernel_ptrdiff_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_header_struct {
-pub version: __u32,
-pub pid: crate::ctypes::c_int,
-}
-pub type cap_user_header_t = *mut __user_cap_header_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_data_struct {
-pub effective: __u32,
-pub permitted: __u32,
-pub inheritable: __u32,
-}
-pub type cap_user_data_t = *mut __user_cap_data_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_cap_data__bindgen_ty_1; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize],
-pub rootid: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct f_owner_ex {
-pub type_: crate::ctypes::c_int,
-pub pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_off_t,
-pub l_len: __kernel_off_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock64 {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_loff_t,
-pub l_len: __kernel_loff_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct open_how {
-pub flags: __u64,
-pub mode: __u64,
-pub resolve: __u64,
-}
-#[repr(C, packed)]
-#[derive(Debug, Copy, Clone)]
-pub struct epoll_event {
-pub events: __poll_t,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v1 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub master_key_descriptor: [__u8; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_key {
-pub mode: __u32,
-pub raw: [__u8; 64usize],
-pub size: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v2 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub __reserved: [__u8; 4usize],
-pub master_key_identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_policy_ex_arg {
-pub policy_size: __u64,
-pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 {
-pub version: __u8,
-pub v1: fscrypt_policy_v1,
-pub v2: fscrypt_policy_v2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_key_specifier {
-pub type_: __u32,
-pub __reserved: __u32,
-pub u: fscrypt_key_specifier__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_key_specifier__bindgen_ty_1 {
-pub __reserved: [__u8; 32usize],
-pub descriptor: [__u8; 8usize],
-pub identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct fscrypt_provisioning_key_payload {
-pub type_: __u32,
-pub __reserved: __u32,
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-pub struct fscrypt_add_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub raw_size: __u32,
-pub key_id: __u32,
-pub __reserved: [__u32; 8usize],
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_remove_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub removal_status_flags: __u32,
-pub __reserved: [__u32; 5usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_key_status_arg {
-pub key_spec: fscrypt_key_specifier,
-pub __reserved: [__u32; 6usize],
-pub status: __u32,
-pub status_flags: __u32,
-pub user_count: __u32,
-pub __out_reserved: [__u32; 13usize],
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum fsconfig_command {
-FSCONFIG_SET_FLAG = 0,
-FSCONFIG_SET_STRING = 1,
-FSCONFIG_SET_BINARY = 2,
-FSCONFIG_SET_PATH = 3,
-FSCONFIG_SET_PATH_EMPTY = 4,
-FSCONFIG_SET_FD = 5,
-FSCONFIG_CMD_CREATE = 6,
-FSCONFIG_CMD_RECONFIGURE = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mount_attr {
-pub attr_set: __u64,
-pub attr_clr: __u64,
-pub propagation: __u64,
-pub userns_fd: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_clone_range {
-pub src_fd: __s64,
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_offset: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fstrim_range {
-pub start: __u64,
-pub len: __u64,
-pub minlen: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_dedupe_range_info {
-pub dest_fd: __s64,
-pub dest_offset: __u64,
-pub bytes_deduped: __u64,
-pub status: __s32,
-pub reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct file_dedupe_range {
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_count: __u16,
-pub reserved1: __u16,
-pub reserved2: __u32,
-pub info: __IncompleteArrayField<file_dedupe_range_info>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct files_stat_struct {
-pub nr_files: crate::ctypes::c_ulong,
-pub nr_free_files: crate::ctypes::c_ulong,
-pub max_files: crate::ctypes::c_ulong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct inodes_stat_t {
-pub nr_inodes: crate::ctypes::c_long,
-pub nr_unused: crate::ctypes::c_long,
-pub dummy: [crate::ctypes::c_long; 5usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fsxattr {
-pub fsx_xflags: __u32,
-pub fsx_extsize: __u32,
-pub fsx_nextents: __u32,
-pub fsx_projid: __u32,
-pub fsx_cowextsize: __u32,
-pub fsx_pad: [crate::ctypes::c_uchar; 8usize],
-}
-pub type __kernel_rwf_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct futex_waitv {
-pub val: __u64,
-pub uaddr: __u64,
-pub flags: __u32,
-pub __reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list {
-pub next: *mut robust_list,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list_head {
-pub list: robust_list,
-pub futex_offset: crate::ctypes::c_long,
-pub list_op_pending: *mut robust_list,
-}
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP;
-pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP;
-pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP;
-pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP;
-pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP;
-pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP;
-pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP;
-pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP;
-pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP;
-pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP;
-pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP;
-pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6;
-pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP;
-pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE;
-pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP;
-pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH;
-pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP;
-pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH;
-pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP;
-pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM;
-pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP;
-pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP;
-pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP;
-pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE;
-pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS;
-pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET;
-pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW;
-pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP;
-pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-IPPROTO_IP = 0,
-IPPROTO_ICMP = 1,
-IPPROTO_IGMP = 2,
-IPPROTO_IPIP = 4,
-IPPROTO_TCP = 6,
-IPPROTO_EGP = 8,
-IPPROTO_PUP = 12,
-IPPROTO_UDP = 17,
-IPPROTO_IDP = 22,
-IPPROTO_TP = 29,
-IPPROTO_DCCP = 33,
-IPPROTO_IPV6 = 41,
-IPPROTO_RSVP = 46,
-IPPROTO_GRE = 47,
-IPPROTO_ESP = 50,
-IPPROTO_AH = 51,
-IPPROTO_MTP = 92,
-IPPROTO_BEETPH = 94,
-IPPROTO_ENCAP = 98,
-IPPROTO_PIM = 103,
-IPPROTO_COMP = 108,
-IPPROTO_L2TP = 115,
-IPPROTO_SCTP = 132,
-IPPROTO_UDPLITE = 136,
-IPPROTO_MPLS = 137,
-IPPROTO_ETHERNET = 143,
-IPPROTO_RAW = 255,
-IPPROTO_MPTCP = 262,
-IPPROTO_MAX = 263,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_addr {
-pub s_addr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq {
-pub imr_multiaddr: in_addr,
-pub imr_interface: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreqn {
-pub imr_multiaddr: in_addr,
-pub imr_address: in_addr,
-pub imr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq_source {
-pub imr_multiaddr: __be32,
-pub imr_interface: __be32,
-pub imr_sourceaddr: __be32,
-}
-#[repr(C)]
-pub struct ip_msfilter {
-pub imsf_multiaddr: __be32,
-pub imsf_interface: __be32,
-pub imsf_fmode: __u32,
-pub imsf_numsrc: __u32,
-pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct ip_msfilter__bindgen_ty_1 {
-pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>,
-pub __bindgen_anon_1: __BindgenUnionField<ip_msfilter__bindgen_ty_1__bindgen_ty_1>,
-pub bindgen_union_field: u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 {
-pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-pub imsf_slist_flex: __IncompleteArrayField<__be32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_req {
-pub gr_interface: __u32,
-pub gr_group: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_source_req {
-pub gsr_interface: __u32,
-pub gsr_group: __kernel_sockaddr_storage,
-pub gsr_source: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-pub struct group_filter {
-pub __bindgen_anon_1: group_filter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_1>,
-pub __bindgen_anon_2: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_2>,
-pub bindgen_union_field: [u32; 67usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_1 {
-pub gf_interface_aux: __u32,
-pub gf_group_aux: __kernel_sockaddr_storage,
-pub gf_fmode_aux: __u32,
-pub gf_numsrc_aux: __u32,
-pub gf_slist: [__kernel_sockaddr_storage; 1usize],
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_2 {
-pub gf_interface: __u32,
-pub gf_group: __kernel_sockaddr_storage,
-pub gf_fmode: __u32,
-pub gf_numsrc: __u32,
-pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_pktinfo {
-pub ipi_ifindex: crate::ctypes::c_int,
-pub ipi_spec_dst: in_addr,
-pub ipi_addr: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_in {
-pub sin_family: __kernel_sa_family_t,
-pub sin_port: __be16,
-pub sin_addr: in_addr,
-pub __pad: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct inotify_event {
-pub wd: __s32,
-pub mask: __u32,
-pub cookie: __u32,
-pub len: __u32,
-pub name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct iphdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub tos: __u8,
-pub tot_len: __be16,
-pub id: __be16,
-pub frag_off: __be16,
-pub ttl: __u8,
-pub protocol: __u8,
-pub check: __sum16,
-pub __bindgen_anon_1: iphdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union iphdr__bindgen_ty_1 {
-pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-impl iphdr {
-#[inline]
-pub fn ihl(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_ihl(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let ihl: u8 = unsafe { ::core::mem::transmute(ihl) };
-ihl as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_auth_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub reserved: __be16,
-pub spi: __be32,
-pub seq_no: __be32,
-pub auth_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_esp_hdr {
-pub spi: __be32,
-pub seq_no: __be32,
-pub enc_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_comp_hdr {
-pub nexthdr: __u8,
-pub flags: __u8,
-pub cpi: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_beet_phdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub padlen: __u8,
-pub reserved: __u8,
-}
-pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING;
-pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING;
-pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP;
-pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS;
-pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS;
-pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS;
-pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA;
-pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER;
-pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY;
-pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS;
-pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG;
-pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER;
-pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID;
-pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM;
-pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY;
-pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION;
-pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE;
-pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE;
-pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES;
-pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT;
-pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY;
-pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL;
-pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK;
-pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN;
-pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET;
-pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP;
-pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING;
-pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER;
-pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IPV4_DEVCONF_FORWARDING = 1,
-IPV4_DEVCONF_MC_FORWARDING = 2,
-IPV4_DEVCONF_PROXY_ARP = 3,
-IPV4_DEVCONF_ACCEPT_REDIRECTS = 4,
-IPV4_DEVCONF_SECURE_REDIRECTS = 5,
-IPV4_DEVCONF_SEND_REDIRECTS = 6,
-IPV4_DEVCONF_SHARED_MEDIA = 7,
-IPV4_DEVCONF_RP_FILTER = 8,
-IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9,
-IPV4_DEVCONF_BOOTP_RELAY = 10,
-IPV4_DEVCONF_LOG_MARTIANS = 11,
-IPV4_DEVCONF_TAG = 12,
-IPV4_DEVCONF_ARPFILTER = 13,
-IPV4_DEVCONF_MEDIUM_ID = 14,
-IPV4_DEVCONF_NOXFRM = 15,
-IPV4_DEVCONF_NOPOLICY = 16,
-IPV4_DEVCONF_FORCE_IGMP_VERSION = 17,
-IPV4_DEVCONF_ARP_ANNOUNCE = 18,
-IPV4_DEVCONF_ARP_IGNORE = 19,
-IPV4_DEVCONF_PROMOTE_SECONDARIES = 20,
-IPV4_DEVCONF_ARP_ACCEPT = 21,
-IPV4_DEVCONF_ARP_NOTIFY = 22,
-IPV4_DEVCONF_ACCEPT_LOCAL = 23,
-IPV4_DEVCONF_SRC_VMARK = 24,
-IPV4_DEVCONF_PROXY_ARP_PVLAN = 25,
-IPV4_DEVCONF_ROUTE_LOCALNET = 26,
-IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27,
-IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28,
-IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29,
-IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30,
-IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31,
-IPV4_DEVCONF_BC_FORWARDING = 32,
-IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33,
-__IPV4_DEVCONF_MAX = 34,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_addr {
-pub in6_u: in6_addr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union in6_addr__bindgen_ty_1 {
-pub u6_addr8: [__u8; 16usize],
-pub u6_addr16: [__be16; 8usize],
-pub u6_addr32: [__be32; 4usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr_in6 {
-pub sin6_family: crate::ctypes::c_ushort,
-pub sin6_port: __be16,
-pub sin6_flowinfo: __be32,
-pub sin6_addr: in6_addr,
-pub sin6_scope_id: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6_mreq {
-pub ipv6mr_multiaddr: in6_addr,
-pub ipv6mr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_flowlabel_req {
-pub flr_dst: in6_addr,
-pub flr_label: __be32,
-pub flr_action: __u8,
-pub flr_share: __u8,
-pub flr_flags: __u16,
-pub flr_expires: __u16,
-pub flr_linger: __u16,
-pub __flr_pad: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_pktinfo {
-pub ipi6_addr: in6_addr,
-pub ipi6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ip6_mtuinfo {
-pub ip6m_addr: sockaddr_in6,
-pub ip6m_mtu: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_ifreq {
-pub ifr6_addr: in6_addr,
-pub ifr6_prefixlen: __u32,
-pub ifr6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_rt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub type_: __u8,
-pub segments_left: __u8,
-}
-#[repr(C, packed)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_opt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-}
-#[repr(C)]
-pub struct rt0_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: __IncompleteArrayField<in6_addr>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rt2_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: in6_addr,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct ipv6_destopt_hao {
-pub type_: __u8,
-pub length: __u8,
-pub addr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub flow_lbl: [__u8; 3usize],
-pub payload_len: __be16,
-pub nexthdr: __u8,
-pub hop_limit: __u8,
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union ipv6hdr__bindgen_ty_1 {
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-impl ipv6hdr {
-#[inline]
-pub fn priority(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_priority(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let priority: u8 = unsafe { ::core::mem::transmute(priority) };
-priority as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING;
-pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT;
-pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6;
-pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA;
-pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS;
-pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF;
-pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS;
-pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS;
-pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL;
-pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY;
-pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR;
-pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT;
-pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT;
-pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY;
-pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR;
-pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES;
-pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION;
-pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR;
-pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO;
-pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF;
-pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN;
-pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP;
-pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD;
-pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING;
-pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6;
-pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD;
-pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO;
-pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY;
-pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC;
-pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL;
-pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC;
-pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU;
-pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET;
-pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY;
-pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT;
-pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA;
-pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN;
-pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL;
-pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED;
-pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC;
-pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD;
-pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE;
-pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN;
-pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS;
-pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED;
-pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC;
-pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED;
-pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID;
-pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE;
-pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER;
-pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA;
-pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-DEVCONF_FORWARDING = 0,
-DEVCONF_HOPLIMIT = 1,
-DEVCONF_MTU6 = 2,
-DEVCONF_ACCEPT_RA = 3,
-DEVCONF_ACCEPT_REDIRECTS = 4,
-DEVCONF_AUTOCONF = 5,
-DEVCONF_DAD_TRANSMITS = 6,
-DEVCONF_RTR_SOLICITS = 7,
-DEVCONF_RTR_SOLICIT_INTERVAL = 8,
-DEVCONF_RTR_SOLICIT_DELAY = 9,
-DEVCONF_USE_TEMPADDR = 10,
-DEVCONF_TEMP_VALID_LFT = 11,
-DEVCONF_TEMP_PREFERED_LFT = 12,
-DEVCONF_REGEN_MAX_RETRY = 13,
-DEVCONF_MAX_DESYNC_FACTOR = 14,
-DEVCONF_MAX_ADDRESSES = 15,
-DEVCONF_FORCE_MLD_VERSION = 16,
-DEVCONF_ACCEPT_RA_DEFRTR = 17,
-DEVCONF_ACCEPT_RA_PINFO = 18,
-DEVCONF_ACCEPT_RA_RTR_PREF = 19,
-DEVCONF_RTR_PROBE_INTERVAL = 20,
-DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21,
-DEVCONF_PROXY_NDP = 22,
-DEVCONF_OPTIMISTIC_DAD = 23,
-DEVCONF_ACCEPT_SOURCE_ROUTE = 24,
-DEVCONF_MC_FORWARDING = 25,
-DEVCONF_DISABLE_IPV6 = 26,
-DEVCONF_ACCEPT_DAD = 27,
-DEVCONF_FORCE_TLLAO = 28,
-DEVCONF_NDISC_NOTIFY = 29,
-DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30,
-DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31,
-DEVCONF_SUPPRESS_FRAG_NDISC = 32,
-DEVCONF_ACCEPT_RA_FROM_LOCAL = 33,
-DEVCONF_USE_OPTIMISTIC = 34,
-DEVCONF_ACCEPT_RA_MTU = 35,
-DEVCONF_STABLE_SECRET = 36,
-DEVCONF_USE_OIF_ADDRS_ONLY = 37,
-DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38,
-DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39,
-DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40,
-DEVCONF_DROP_UNSOLICITED_NA = 41,
-DEVCONF_KEEP_ADDR_ON_DOWN = 42,
-DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43,
-DEVCONF_SEG6_ENABLED = 44,
-DEVCONF_SEG6_REQUIRE_HMAC = 45,
-DEVCONF_ENHANCED_DAD = 46,
-DEVCONF_ADDR_GEN_MODE = 47,
-DEVCONF_DISABLE_POLICY = 48,
-DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49,
-DEVCONF_NDISC_TCLASS = 50,
-DEVCONF_RPL_SEG_ENABLED = 51,
-DEVCONF_RA_DEFRTR_METRIC = 52,
-DEVCONF_IOAM6_ENABLED = 53,
-DEVCONF_IOAM6_ID = 54,
-DEVCONF_IOAM6_ID_WIDE = 55,
-DEVCONF_NDISC_EVICT_NOCARRIER = 56,
-DEVCONF_ACCEPT_UNTRACKED_NA = 57,
-DEVCONF_MAX = 58,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum socket_state {
-SS_FREE = 0,
-SS_UNCONNECTED = 1,
-SS_CONNECTING = 2,
-SS_CONNECTED = 3,
-SS_DISCONNECTING = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct pollfd {
-pub fd: crate::ctypes::c_int,
-pub events: crate::ctypes::c_short,
-pub revents: crate::ctypes::c_short,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prctl_mm_map {
-pub start_code: __u64,
-pub end_code: __u64,
-pub start_data: __u64,
-pub end_data: __u64,
-pub start_brk: __u64,
-pub brk: __u64,
-pub start_stack: __u64,
-pub arg_start: __u64,
-pub arg_end: __u64,
-pub env_start: __u64,
-pub env_end: __u64,
-pub auxv: *mut __u64,
-pub auxv_size: __u32,
-pub exe_fd: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rand_pool_info {
-pub entropy_count: crate::ctypes::c_int,
-pub buf_size: crate::ctypes::c_int,
-pub buf: __IncompleteArrayField<__u32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_timespec {
-pub tv_sec: __kernel_time64_t,
-pub tv_nsec: crate::ctypes::c_longlong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_itimerspec {
-pub it_interval: __kernel_timespec,
-pub it_value: __kernel_timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timeval {
-pub tv_sec: __kernel_long_t,
-pub tv_usec: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_itimerval {
-pub it_interval: __kernel_old_timeval,
-pub it_value: __kernel_old_timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sock_timeval {
-pub tv_sec: __s64,
-pub tv_usec: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timeval {
-pub tv_sec: __kernel_old_time_t,
-pub tv_usec: __kernel_suseconds_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerspec {
-pub it_interval: timespec,
-pub it_value: timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerval {
-pub it_interval: timeval,
-pub it_value: timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timezone {
-pub tz_minuteswest: crate::ctypes::c_int,
-pub tz_dsttime: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rusage {
-pub ru_utime: __kernel_old_timeval,
-pub ru_stime: __kernel_old_timeval,
-pub ru_maxrss: __kernel_long_t,
-pub ru_ixrss: __kernel_long_t,
-pub ru_idrss: __kernel_long_t,
-pub ru_isrss: __kernel_long_t,
-pub ru_minflt: __kernel_long_t,
-pub ru_majflt: __kernel_long_t,
-pub ru_nswap: __kernel_long_t,
-pub ru_inblock: __kernel_long_t,
-pub ru_oublock: __kernel_long_t,
-pub ru_msgsnd: __kernel_long_t,
-pub ru_msgrcv: __kernel_long_t,
-pub ru_nsignals: __kernel_long_t,
-pub ru_nvcsw: __kernel_long_t,
-pub ru_nivcsw: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit {
-pub rlim_cur: __kernel_ulong_t,
-pub rlim_max: __kernel_ulong_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit64 {
-pub rlim_cur: __u64,
-pub rlim_max: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct clone_args {
-pub flags: __u64,
-pub pidfd: __u64,
-pub child_tid: __u64,
-pub parent_tid: __u64,
-pub exit_signal: __u64,
-pub stack: __u64,
-pub stack_size: __u64,
-pub tls: __u64,
-pub set_tid: __u64,
-pub set_tid_size: __u64,
-pub cgroup: __u64,
-}
-pub type sigset_t = crate::ctypes::c_ulong;
-pub type __signalfn_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __sighandler_t = __signalfn_t;
-pub type __restorefn_t = ::core::option::Option<unsafe extern "C" fn()>;
-pub type __sigrestore_t = __restorefn_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaction {
-pub sa_handler: __sighandler_t,
-pub sa_flags: crate::ctypes::c_ulong,
-pub sa_restorer: __sigrestore_t,
-pub sa_mask: sigset_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaltstack {
-pub ss_sp: *mut crate::ctypes::c_void,
-pub ss_flags: crate::ctypes::c_int,
-pub ss_size: __kernel_size_t,
-}
-pub type stack_t = sigaltstack;
-pub type __kernel_si_clock_t = crate::ctypes::c_longlong;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigval {
-pub sival_int: crate::ctypes::c_int,
-pub sival_ptr: *mut crate::ctypes::c_void,
-}
-pub type sigval_t = sigval;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields {
-pub _kill: __sifields__bindgen_ty_1,
-pub _timer: __sifields__bindgen_ty_2,
-pub _rt: __sifields__bindgen_ty_3,
-pub _sigchld: __sifields__bindgen_ty_4,
-pub _sigfault: __sifields__bindgen_ty_5,
-pub _sigpoll: __sifields__bindgen_ty_6,
-pub _sigsys: __sifields__bindgen_ty_7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_1 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_2 {
-pub _tid: __kernel_timer_t,
-pub _overrun: crate::ctypes::c_int,
-pub _sigval: sigval_t,
-pub _sys_private: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_3 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _sigval: sigval_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_4 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _status: crate::ctypes::c_int,
-pub _utime: __kernel_si_clock_t,
-pub _stime: __kernel_si_clock_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_5 {
-pub _addr: *mut crate::ctypes::c_void,
-pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields__bindgen_ty_5__bindgen_ty_1 {
-pub _trapno: crate::ctypes::c_int,
-pub _addr_lsb: crate::ctypes::c_short,
-pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1,
-pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2,
-pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {
-pub _dummy_bnd: [crate::ctypes::c_char; 4usize],
-pub _lower: *mut crate::ctypes::c_void,
-pub _upper: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 {
-pub _dummy_pkey: [crate::ctypes::c_char; 4usize],
-pub _pkey: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 {
-pub _data: crate::ctypes::c_ulong,
-pub _type: __u32,
-pub _flags: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_6 {
-pub _band: crate::ctypes::c_long,
-pub _fd: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_7 {
-pub _call_addr: *mut crate::ctypes::c_void,
-pub _syscall: crate::ctypes::c_int,
-pub _arch: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[repr(align(8))]
-#[derive(Copy, Clone)]
-pub struct siginfo {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union siginfo__bindgen_ty_1 {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1,
-pub _si_pad: [crate::ctypes::c_int; 32usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo__bindgen_ty_1__bindgen_ty_1 {
-pub si_signo: crate::ctypes::c_int,
-pub si_errno: crate::ctypes::c_int,
-pub si_code: crate::ctypes::c_int,
-pub _sifields: __sifields,
-}
-pub type siginfo_t = siginfo;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sigevent {
-pub sigev_value: sigval_t,
-pub sigev_signo: crate::ctypes::c_int,
-pub sigev_notify: crate::ctypes::c_int,
-pub _sigev_un: sigevent__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigevent__bindgen_ty_1 {
-pub _pad: [crate::ctypes::c_int; 13usize],
-pub _tid: crate::ctypes::c_int,
-pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigevent__bindgen_ty_1__bindgen_ty_1 {
-pub _function: ::core::option::Option<unsafe extern "C" fn(arg1: sigval_t)>,
-pub _attribute: *mut crate::ctypes::c_void,
-}
-pub type sigevent_t = sigevent;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx_timestamp {
-pub tv_sec: __s64,
-pub tv_nsec: __u32,
-pub __reserved: __s32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx {
-pub stx_mask: __u32,
-pub stx_blksize: __u32,
-pub stx_attributes: __u64,
-pub stx_nlink: __u32,
-pub stx_uid: __u32,
-pub stx_gid: __u32,
-pub stx_mode: __u16,
-pub __spare0: [__u16; 1usize],
-pub stx_ino: __u64,
-pub stx_size: __u64,
-pub stx_blocks: __u64,
-pub stx_attributes_mask: __u64,
-pub stx_atime: statx_timestamp,
-pub stx_btime: statx_timestamp,
-pub stx_ctime: statx_timestamp,
-pub stx_mtime: statx_timestamp,
-pub stx_rdev_major: __u32,
-pub stx_rdev_minor: __u32,
-pub stx_dev_major: __u32,
-pub stx_dev_minor: __u32,
-pub stx_mnt_id: __u64,
-pub stx_dio_mem_align: __u32,
-pub stx_dio_offset_align: __u32,
-pub __spare3: [__u64; 12usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct sysinfo {
-pub uptime: __kernel_long_t,
-pub loads: [__kernel_ulong_t; 3usize],
-pub totalram: __kernel_ulong_t,
-pub freeram: __kernel_ulong_t,
-pub sharedram: __kernel_ulong_t,
-pub bufferram: __kernel_ulong_t,
-pub totalswap: __kernel_ulong_t,
-pub freeswap: __kernel_ulong_t,
-pub procs: __u16,
-pub pad: __u16,
-pub totalhigh: __kernel_ulong_t,
-pub freehigh: __kernel_ulong_t,
-pub mem_unit: __u32,
-pub _f: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcphdr {
-pub source: __be16,
-pub dest: __be16,
-pub seq: __be32,
-pub ack_seq: __be32,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub window: __be16,
-pub check: __sum16,
-pub urg_ptr: __be16,
-}
-impl tcphdr {
-#[inline]
-pub fn res1(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_res1(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn doff(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_doff(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn fin(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_fin(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn syn(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_syn(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn rst(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_rst(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(10usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn psh(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_psh(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(11usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ack(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ack(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(12usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn urg(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_urg(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(13usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ece(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ece(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(14usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn cwr(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_cwr(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(15usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let res1: u16 = unsafe { ::core::mem::transmute(res1) };
-res1 as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let doff: u16 = unsafe { ::core::mem::transmute(doff) };
-doff as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let fin: u16 = unsafe { ::core::mem::transmute(fin) };
-fin as u64
-});
-__bindgen_bitfield_unit.set(9usize, 1u8, {
-let syn: u16 = unsafe { ::core::mem::transmute(syn) };
-syn as u64
-});
-__bindgen_bitfield_unit.set(10usize, 1u8, {
-let rst: u16 = unsafe { ::core::mem::transmute(rst) };
-rst as u64
-});
-__bindgen_bitfield_unit.set(11usize, 1u8, {
-let psh: u16 = unsafe { ::core::mem::transmute(psh) };
-psh as u64
-});
-__bindgen_bitfield_unit.set(12usize, 1u8, {
-let ack: u16 = unsafe { ::core::mem::transmute(ack) };
-ack as u64
-});
-__bindgen_bitfield_unit.set(13usize, 1u8, {
-let urg: u16 = unsafe { ::core::mem::transmute(urg) };
-urg as u64
-});
-__bindgen_bitfield_unit.set(14usize, 1u8, {
-let ece: u16 = unsafe { ::core::mem::transmute(ece) };
-ece as u64
-});
-__bindgen_bitfield_unit.set(15usize, 1u8, {
-let cwr: u16 = unsafe { ::core::mem::transmute(cwr) };
-cwr as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union tcp_word_hdr {
-pub hdr: tcphdr,
-pub words: [__be32; 5usize],
-}
-pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR;
-pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE;
-pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG;
-pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK;
-pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH;
-pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST;
-pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN;
-pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN;
-pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS;
-pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-TCP_FLAG_CWR = 32768,
-TCP_FLAG_ECE = 16384,
-TCP_FLAG_URG = 8192,
-TCP_FLAG_ACK = 4096,
-TCP_FLAG_PSH = 2048,
-TCP_FLAG_RST = 1024,
-TCP_FLAG_SYN = 512,
-TCP_FLAG_FIN = 256,
-TCP_RESERVED_BITS = 15,
-TCP_DATA_OFFSET = 240,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_opt {
-pub opt_code: __u32,
-pub opt_val: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_window {
-pub snd_wl1: __u32,
-pub snd_wnd: __u32,
-pub max_window: __u32,
-pub rcv_wnd: __u32,
-pub rcv_wup: __u32,
-}
-pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE;
-pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE;
-pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE;
-pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-TCP_NO_QUEUE = 0,
-TCP_RECV_QUEUE = 1,
-TCP_SEND_QUEUE = 2,
-TCP_QUEUES_NR = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_fastopen_client_fail {
-TFO_STATUS_UNSPEC = 0,
-TFO_COOKIE_UNAVAILABLE = 1,
-TFO_DATA_NOT_ACKED = 2,
-TFO_SYN_RETRANSMITTED = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_ca_state {
-TCP_CA_Open = 0,
-TCP_CA_Disorder = 1,
-TCP_CA_CWR = 2,
-TCP_CA_Recovery = 3,
-TCP_CA_Loss = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_info {
-pub tcpi_state: __u8,
-pub tcpi_ca_state: __u8,
-pub tcpi_retransmits: __u8,
-pub tcpi_probes: __u8,
-pub tcpi_backoff: __u8,
-pub tcpi_options: __u8,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub tcpi_rto: __u32,
-pub tcpi_ato: __u32,
-pub tcpi_snd_mss: __u32,
-pub tcpi_rcv_mss: __u32,
-pub tcpi_unacked: __u32,
-pub tcpi_sacked: __u32,
-pub tcpi_lost: __u32,
-pub tcpi_retrans: __u32,
-pub tcpi_fackets: __u32,
-pub tcpi_last_data_sent: __u32,
-pub tcpi_last_ack_sent: __u32,
-pub tcpi_last_data_recv: __u32,
-pub tcpi_last_ack_recv: __u32,
-pub tcpi_pmtu: __u32,
-pub tcpi_rcv_ssthresh: __u32,
-pub tcpi_rtt: __u32,
-pub tcpi_rttvar: __u32,
-pub tcpi_snd_ssthresh: __u32,
-pub tcpi_snd_cwnd: __u32,
-pub tcpi_advmss: __u32,
-pub tcpi_reordering: __u32,
-pub tcpi_rcv_rtt: __u32,
-pub tcpi_rcv_space: __u32,
-pub tcpi_total_retrans: __u32,
-pub tcpi_pacing_rate: __u64,
-pub tcpi_max_pacing_rate: __u64,
-pub tcpi_bytes_acked: __u64,
-pub tcpi_bytes_received: __u64,
-pub tcpi_segs_out: __u32,
-pub tcpi_segs_in: __u32,
-pub tcpi_notsent_bytes: __u32,
-pub tcpi_min_rtt: __u32,
-pub tcpi_data_segs_in: __u32,
-pub tcpi_data_segs_out: __u32,
-pub tcpi_delivery_rate: __u64,
-pub tcpi_busy_time: __u64,
-pub tcpi_rwnd_limited: __u64,
-pub tcpi_sndbuf_limited: __u64,
-pub tcpi_delivered: __u32,
-pub tcpi_delivered_ce: __u32,
-pub tcpi_bytes_sent: __u64,
-pub tcpi_bytes_retrans: __u64,
-pub tcpi_dsack_dups: __u32,
-pub tcpi_reord_seen: __u32,
-pub tcpi_rcv_ooopack: __u32,
-pub tcpi_snd_wnd: __u32,
-pub tcpi_rcv_wnd: __u32,
-pub tcpi_rehash: __u32,
-}
-impl tcp_info {
-#[inline]
-pub fn tcpi_snd_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_snd_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_rcv_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_fastopen_client_fail(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) };
-tcpi_snd_wscale as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) };
-tcpi_rcv_wscale as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) };
-tcpi_delivery_rate_app_limited as u64
-});
-__bindgen_bitfield_unit.set(9usize, 2u8, {
-let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) };
-tcpi_fastopen_client_fail as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD;
-pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY;
-pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED;
-pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED;
-pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT;
-pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS;
-pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE;
-pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE;
-pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND;
-pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING;
-pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT;
-pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS;
-pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT;
-pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE;
-pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE;
-pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH;
-pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED;
-pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE;
-pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT;
-pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS;
-pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS;
-pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN;
-pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT;
-pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH;
-pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT;
-pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
-pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
-pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-TCP_NLA_PAD = 0,
-TCP_NLA_BUSY = 1,
-TCP_NLA_RWND_LIMITED = 2,
-TCP_NLA_SNDBUF_LIMITED = 3,
-TCP_NLA_DATA_SEGS_OUT = 4,
-TCP_NLA_TOTAL_RETRANS = 5,
-TCP_NLA_PACING_RATE = 6,
-TCP_NLA_DELIVERY_RATE = 7,
-TCP_NLA_SND_CWND = 8,
-TCP_NLA_REORDERING = 9,
-TCP_NLA_MIN_RTT = 10,
-TCP_NLA_RECUR_RETRANS = 11,
-TCP_NLA_DELIVERY_RATE_APP_LMT = 12,
-TCP_NLA_SNDQ_SIZE = 13,
-TCP_NLA_CA_STATE = 14,
-TCP_NLA_SND_SSTHRESH = 15,
-TCP_NLA_DELIVERED = 16,
-TCP_NLA_DELIVERED_CE = 17,
-TCP_NLA_BYTES_SENT = 18,
-TCP_NLA_BYTES_RETRANS = 19,
-TCP_NLA_DSACK_DUPS = 20,
-TCP_NLA_REORD_SEEN = 21,
-TCP_NLA_SRTT = 22,
-TCP_NLA_TIMEOUT_REHASH = 23,
-TCP_NLA_BYTES_NOTSENT = 24,
-TCP_NLA_EDT = 25,
-TCP_NLA_TTL = 26,
-TCP_NLA_REHASH = 27,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct tcp_md5sig {
-pub tcpm_addr: __kernel_sockaddr_storage,
-pub tcpm_flags: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_ifindex: crate::ctypes::c_int,
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_diag_md5sig {
-pub tcpm_family: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_addr: [__be32; 4usize],
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_zerocopy_receive {
-pub address: __u64,
-pub length: __u32,
-pub recv_skip_hint: __u32,
-pub inq: __u32,
-pub err: __s32,
-pub copybuf_address: __u64,
-pub copybuf_len: __s32,
-pub flags: __u32,
-pub msg_control: __u64,
-pub msg_controllen: __u64,
-pub msg_flags: __u32,
-pub reserved: __u32,
-}
-pub type cc_t = crate::ctypes::c_uchar;
-pub type speed_t = crate::ctypes::c_uint;
-pub type tcflag_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios2 {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ktermios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct winsize {
-pub ws_row: crate::ctypes::c_ushort,
-pub ws_col: crate::ctypes::c_ushort,
-pub ws_xpixel: crate::ctypes::c_ushort,
-pub ws_ypixel: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termio {
-pub c_iflag: crate::ctypes::c_ushort,
-pub c_oflag: crate::ctypes::c_ushort,
-pub c_cflag: crate::ctypes::c_ushort,
-pub c_lflag: crate::ctypes::c_ushort,
-pub c_line: crate::ctypes::c_uchar,
-pub c_cc: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iovec {
-pub iov_base: *mut crate::ctypes::c_void,
-pub iov_len: __kernel_size_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_un {
-pub sun_family: __kernel_sa_family_t,
-pub sun_path: [crate::ctypes::c_char; 108usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct oldold_utsname {
-pub sysname: [crate::ctypes::c_char; 9usize],
-pub nodename: [crate::ctypes::c_char; 9usize],
-pub release: [crate::ctypes::c_char; 9usize],
-pub version: [crate::ctypes::c_char; 9usize],
-pub machine: [crate::ctypes::c_char; 9usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct old_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct new_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-pub domainname: [crate::ctypes::c_char; 65usize],
-}
-impl membarrier_cmd {
-pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd {
-MEMBARRIER_CMD_QUERY = 0,
-MEMBARRIER_CMD_GLOBAL = 1,
-MEMBARRIER_CMD_GLOBAL_EXPEDITED = 2,
-MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = 4,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED = 8,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = 16,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = 32,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = 64,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = 128,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = 256,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd_flag {
-MEMBARRIER_CMD_FLAG_CPU = 1,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg {
-pub event: __u8,
-pub reserved1: __u8,
-pub reserved2: __u16,
-pub reserved3: __u32,
-pub arg: uffd_msg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1 {
-pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1,
-pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2,
-pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3,
-pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4,
-pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 {
-pub flags: __u64,
-pub address: __u64,
-pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {
-pub ptid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 {
-pub ufd: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 {
-pub from: __u64,
-pub to: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 {
-pub start: __u64,
-pub end: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 {
-pub reserved1: __u64,
-pub reserved2: __u64,
-pub reserved3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_api {
-pub api: __u64,
-pub features: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_range {
-pub start: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_register {
-pub range: uffdio_range,
-pub mode: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_copy {
-pub dst: __u64,
-pub src: __u64,
-pub len: __u64,
-pub mode: __u64,
-pub copy: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_zeropage {
-pub range: uffdio_range,
-pub mode: __u64,
-pub zeropage: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_writeprotect {
-pub range: uffdio_range,
-pub mode: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_continue {
-pub range: uffdio_range,
-pub mode: __u64,
-pub mapped: __s64,
-}
-#[repr(C)]
-pub struct io_uring_sqe {
-pub opcode: __u8,
-pub flags: __u8,
-pub ioprio: __u16,
-pub fd: __s32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1,
-pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2,
-pub len: __u32,
-pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3,
-pub user_data: __u64,
-pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4,
-pub personality: __u16,
-pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5,
-pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_1 {
-pub off: __u64,
-pub addr2: __u64,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 {
-pub cmd_op: __u32,
-pub __pad1: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_2 {
-pub addr: __u64,
-pub splice_off_in: __u64,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_3 {
-pub rw_flags: __kernel_rwf_t,
-pub fsync_flags: __u32,
-pub poll_events: __u16,
-pub poll32_events: __u32,
-pub sync_range_flags: __u32,
-pub msg_flags: __u32,
-pub timeout_flags: __u32,
-pub accept_flags: __u32,
-pub cancel_flags: __u32,
-pub open_flags: __u32,
-pub statx_flags: __u32,
-pub fadvise_advice: __u32,
-pub splice_flags: __u32,
-pub rename_flags: __u32,
-pub unlink_flags: __u32,
-pub hardlink_flags: __u32,
-pub xattr_flags: __u32,
-pub msg_ring_flags: __u32,
-pub uring_cmd_flags: __u32,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_4 {
-pub buf_index: __u16,
-pub buf_group: __u16,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_5 {
-pub splice_fd_in: __s32,
-pub file_index: __u32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 {
-pub addr_len: __u16,
-pub __pad3: [__u16; 1usize],
-}
-#[repr(C)]
-pub struct io_uring_sqe__bindgen_ty_6 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_sqe__bindgen_ty_6__bindgen_ty_1>,
-pub cmd: __BindgenUnionField<[__u8; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 {
-pub addr3: __u64,
-pub __pad2: [__u64; 1usize],
-}
-pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT;
-pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT;
-pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT;
-pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT;
-pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT;
-pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT;
-pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-IOSQE_FIXED_FILE_BIT = 0,
-IOSQE_IO_DRAIN_BIT = 1,
-IOSQE_IO_LINK_BIT = 2,
-IOSQE_IO_HARDLINK_BIT = 3,
-IOSQE_ASYNC_BIT = 4,
-IOSQE_BUFFER_SELECT_BIT = 5,
-IOSQE_CQE_SKIP_SUCCESS_BIT = 6,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum io_uring_op {
-IORING_OP_NOP = 0,
-IORING_OP_READV = 1,
-IORING_OP_WRITEV = 2,
-IORING_OP_FSYNC = 3,
-IORING_OP_READ_FIXED = 4,
-IORING_OP_WRITE_FIXED = 5,
-IORING_OP_POLL_ADD = 6,
-IORING_OP_POLL_REMOVE = 7,
-IORING_OP_SYNC_FILE_RANGE = 8,
-IORING_OP_SENDMSG = 9,
-IORING_OP_RECVMSG = 10,
-IORING_OP_TIMEOUT = 11,
-IORING_OP_TIMEOUT_REMOVE = 12,
-IORING_OP_ACCEPT = 13,
-IORING_OP_ASYNC_CANCEL = 14,
-IORING_OP_LINK_TIMEOUT = 15,
-IORING_OP_CONNECT = 16,
-IORING_OP_FALLOCATE = 17,
-IORING_OP_OPENAT = 18,
-IORING_OP_CLOSE = 19,
-IORING_OP_FILES_UPDATE = 20,
-IORING_OP_STATX = 21,
-IORING_OP_READ = 22,
-IORING_OP_WRITE = 23,
-IORING_OP_FADVISE = 24,
-IORING_OP_MADVISE = 25,
-IORING_OP_SEND = 26,
-IORING_OP_RECV = 27,
-IORING_OP_OPENAT2 = 28,
-IORING_OP_EPOLL_CTL = 29,
-IORING_OP_SPLICE = 30,
-IORING_OP_PROVIDE_BUFFERS = 31,
-IORING_OP_REMOVE_BUFFERS = 32,
-IORING_OP_TEE = 33,
-IORING_OP_SHUTDOWN = 34,
-IORING_OP_RENAMEAT = 35,
-IORING_OP_UNLINKAT = 36,
-IORING_OP_MKDIRAT = 37,
-IORING_OP_SYMLINKAT = 38,
-IORING_OP_LINKAT = 39,
-IORING_OP_MSG_RING = 40,
-IORING_OP_FSETXATTR = 41,
-IORING_OP_SETXATTR = 42,
-IORING_OP_FGETXATTR = 43,
-IORING_OP_GETXATTR = 44,
-IORING_OP_SOCKET = 45,
-IORING_OP_URING_CMD = 46,
-IORING_OP_SEND_ZC = 47,
-IORING_OP_SENDMSG_ZC = 48,
-IORING_OP_LAST = 49,
-}
-pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA;
-pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IORING_MSG_DATA = 0,
-IORING_MSG_SEND_FD = 1,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_cqe {
-pub user_data: __u64,
-pub res: __s32,
-pub flags: __u32,
-pub big_cqe: __IncompleteArrayField<__u64>,
-}
-pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IORING_CQE_BUFFER_SHIFT = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_sqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub flags: __u32,
-pub dropped: __u32,
-pub array: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_cqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub overflow: __u32,
-pub cqes: __u32,
-pub flags: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_params {
-pub sq_entries: __u32,
-pub cq_entries: __u32,
-pub flags: __u32,
-pub sq_thread_cpu: __u32,
-pub sq_thread_idle: __u32,
-pub features: __u32,
-pub wq_fd: __u32,
-pub resv: [__u32; 3usize],
-pub sq_off: io_sqring_offsets,
-pub cq_off: io_cqring_offsets,
-}
-pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS;
-pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS;
-pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES;
-pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES;
-pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD;
-pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD;
-pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE;
-pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC;
-pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE;
-pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY;
-pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY;
-pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS;
-pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS;
-pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2;
-pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2;
-pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2;
-pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE;
-pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF;
-pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF;
-pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS;
-pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS;
-pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS;
-pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING;
-pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING;
-pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL;
-pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE;
-pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IORING_REGISTER_BUFFERS = 0,
-IORING_UNREGISTER_BUFFERS = 1,
-IORING_REGISTER_FILES = 2,
-IORING_UNREGISTER_FILES = 3,
-IORING_REGISTER_EVENTFD = 4,
-IORING_UNREGISTER_EVENTFD = 5,
-IORING_REGISTER_FILES_UPDATE = 6,
-IORING_REGISTER_EVENTFD_ASYNC = 7,
-IORING_REGISTER_PROBE = 8,
-IORING_REGISTER_PERSONALITY = 9,
-IORING_UNREGISTER_PERSONALITY = 10,
-IORING_REGISTER_RESTRICTIONS = 11,
-IORING_REGISTER_ENABLE_RINGS = 12,
-IORING_REGISTER_FILES2 = 13,
-IORING_REGISTER_FILES_UPDATE2 = 14,
-IORING_REGISTER_BUFFERS2 = 15,
-IORING_REGISTER_BUFFERS_UPDATE = 16,
-IORING_REGISTER_IOWQ_AFF = 17,
-IORING_UNREGISTER_IOWQ_AFF = 18,
-IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
-IORING_REGISTER_RING_FDS = 20,
-IORING_UNREGISTER_RING_FDS = 21,
-IORING_REGISTER_PBUF_RING = 22,
-IORING_UNREGISTER_PBUF_RING = 23,
-IORING_REGISTER_SYNC_CANCEL = 24,
-IORING_REGISTER_FILE_ALLOC_RANGE = 25,
-IORING_REGISTER_LAST = 26,
-}
-pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND;
-pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IO_WQ_BOUND = 0,
-IO_WQ_UNBOUND = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_files_update {
-pub offset: __u32,
-pub resv: __u32,
-pub fds: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_register {
-pub nr: __u32,
-pub flags: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub tags: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update2 {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-pub tags: __u64,
-pub nr: __u32,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_slot {
-pub tag: __u64,
-pub resv: [__u64; 3usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_register {
-pub nr_slots: __u32,
-pub resv: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub resv3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_probe_op {
-pub op: __u8,
-pub resv: __u8,
-pub flags: __u16,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_probe {
-pub last_op: __u8,
-pub ops_len: __u8,
-pub resv: __u16,
-pub resv2: [__u32; 3usize],
-pub ops: __IncompleteArrayField<io_uring_probe_op>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct io_uring_restriction {
-pub opcode: __u16,
-pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1,
-pub resv: __u8,
-pub resv2: [__u32; 3usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_restriction__bindgen_ty_1 {
-pub register_op: __u8,
-pub sqe_op: __u8,
-pub sqe_flags: __u8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf {
-pub addr: __u64,
-pub len: __u32,
-pub bid: __u16,
-pub resv: __u16,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring {
-pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1>,
-pub bufs: __BindgenUnionField<[io_uring_buf; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 {
-pub resv1: __u64,
-pub resv2: __u32,
-pub resv3: __u16,
-pub tail: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_reg {
-pub ring_addr: __u64,
-pub ring_entries: __u32,
-pub bgid: __u16,
-pub pad: __u16,
-pub resv: [__u64; 3usize],
-}
-pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP;
-pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP;
-pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED;
-pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED;
-pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IORING_RESTRICTION_REGISTER_OP = 0,
-IORING_RESTRICTION_SQE_OP = 1,
-IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2,
-IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3,
-IORING_RESTRICTION_LAST = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_getevents_arg {
-pub sigmask: __u64,
-pub sigmask_sz: __u32,
-pub pad: __u32,
-pub ts: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sync_cancel_reg {
-pub addr: __u64,
-pub fd: __s32,
-pub flags: __u32,
-pub timeout: __kernel_timespec,
-pub pad: [__u64; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_file_index_range {
-pub off: __u32,
-pub len: __u32,
-pub resv: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_recvmsg_out {
-pub namelen: __u32,
-pub controllen: __u32,
-pub payloadlen: __u32,
-pub flags: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr {
-pub __storage: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct linger {
-pub l_onoff: crate::ctypes::c_int,
-pub l_linger: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct linux_dirent64 {
-pub d_ino: crate::ctypes::c_ulonglong,
-pub d_off: crate::ctypes::c_longlong,
-pub d_reclen: __u16,
-pub d_type: __u8,
-pub d_name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-pub type socklen_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct stat {
-pub st_dev: __kernel_ulong_t,
-pub st_ino: __kernel_ulong_t,
-pub st_nlink: __kernel_ulong_t,
-pub st_mode: crate::ctypes::c_uint,
-pub st_uid: crate::ctypes::c_uint,
-pub st_gid: crate::ctypes::c_uint,
-pub __pad0: crate::ctypes::c_uint,
-pub st_rdev: __kernel_ulong_t,
-pub st_size: __kernel_long_t,
-pub st_blksize: __kernel_long_t,
-pub st_blocks: __kernel_long_t,
-pub st_atime: __kernel_ulong_t,
-pub st_atime_nsec: __kernel_ulong_t,
-pub st_mtime: __kernel_ulong_t,
-pub st_mtime_nsec: __kernel_ulong_t,
-pub st_ctime: __kernel_ulong_t,
-pub st_ctime_nsec: __kernel_ulong_t,
-pub __unused: [__kernel_long_t; 3usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __old_kernel_stat {
-pub st_dev: crate::ctypes::c_ushort,
-pub st_ino: crate::ctypes::c_ushort,
-pub st_mode: crate::ctypes::c_ushort,
-pub st_nlink: crate::ctypes::c_ushort,
-pub st_uid: crate::ctypes::c_ushort,
-pub st_gid: crate::ctypes::c_ushort,
-pub st_rdev: crate::ctypes::c_ushort,
-pub st_size: crate::ctypes::c_uint,
-pub st_atime: crate::ctypes::c_uint,
-pub st_mtime: crate::ctypes::c_uint,
-pub st_ctime: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u32,
-pub f_bfree: __u32,
-pub f_bavail: __u32,
-pub f_files: __u32,
-pub f_ffree: __u32,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs64 {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-#[repr(C, packed(4))]
-#[derive(Debug, Copy, Clone)]
-pub struct compat_statfs64 {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-pub type __fsword_t = __u32;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct user_desc {
-pub entry_number: crate::ctypes::c_uint,
-pub base_addr: crate::ctypes::c_uint,
-pub limit: crate::ctypes::c_uint,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub __bindgen_padding_0: [u8; 3usize],
-}
-impl user_desc {
-#[inline]
-pub fn seg_32bit(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_32bit(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn contents(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 2u8) as u32) }
-}
-#[inline]
-pub fn set_contents(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(1usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn read_exec_only(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_read_exec_only(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(3usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn limit_in_pages(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_limit_in_pages(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn seg_not_present(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_not_present(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(5usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn useable(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_useable(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(6usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn lm(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_lm(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(7usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(seg_32bit: crate::ctypes::c_uint, contents: crate::ctypes::c_uint, read_exec_only: crate::ctypes::c_uint, limit_in_pages: crate::ctypes::c_uint, seg_not_present: crate::ctypes::c_uint, useable: crate::ctypes::c_uint, lm: crate::ctypes::c_uint) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 1u8, {
-let seg_32bit: u32 = unsafe { ::core::mem::transmute(seg_32bit) };
-seg_32bit as u64
-});
-__bindgen_bitfield_unit.set(1usize, 2u8, {
-let contents: u32 = unsafe { ::core::mem::transmute(contents) };
-contents as u64
-});
-__bindgen_bitfield_unit.set(3usize, 1u8, {
-let read_exec_only: u32 = unsafe { ::core::mem::transmute(read_exec_only) };
-read_exec_only as u64
-});
-__bindgen_bitfield_unit.set(4usize, 1u8, {
-let limit_in_pages: u32 = unsafe { ::core::mem::transmute(limit_in_pages) };
-limit_in_pages as u64
-});
-__bindgen_bitfield_unit.set(5usize, 1u8, {
-let seg_not_present: u32 = unsafe { ::core::mem::transmute(seg_not_present) };
-seg_not_present as u64
-});
-__bindgen_bitfield_unit.set(6usize, 1u8, {
-let useable: u32 = unsafe { ::core::mem::transmute(useable) };
-useable as u64
-});
-__bindgen_bitfield_unit.set(7usize, 1u8, {
-let lm: u32 = unsafe { ::core::mem::transmute(lm) };
-lm as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct msghdr {
-pub msg_name: *mut crate::ctypes::c_void,
-pub msg_namelen: crate::ctypes::c_int,
-pub msg_iov: *mut iovec,
-pub msg_iovlen: size_t,
-pub msg_control: *mut crate::ctypes::c_void,
-pub msg_controllen: size_t,
-pub msg_flags: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct cmsghdr {
-pub cmsg_len: size_t,
-pub cmsg_level: crate::ctypes::c_int,
-pub cmsg_type: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ucred {
-pub pid: __u32,
-pub uid: __u32,
-pub gid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mmsghdr {
-pub msg_hdr: msghdr,
-pub msg_len: crate::ctypes::c_uint,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/x32/ioctl.rs b/vendor/linux-raw-sys-0.3.2/src/x32/ioctl.rs
deleted file mode 100644
index feadb5db4..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/x32/ioctl.rs
+++ /dev/null
@@ -1,1570 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const FIONREAD: u32 = 21531;
-pub const FIONBIO: u32 = 21537;
-pub const FIOCLEX: u32 = 21585;
-pub const FIONCLEX: u32 = 21584;
-pub const FIOASYNC: u32 = 21586;
-pub const FIOQSIZE: u32 = 21600;
-pub const TCXONC: u32 = 21514;
-pub const TCFLSH: u32 = 21515;
-pub const TIOCSCTTY: u32 = 21518;
-pub const TIOCSPGRP: u32 = 21520;
-pub const TIOCOUTQ: u32 = 21521;
-pub const TIOCSTI: u32 = 21522;
-pub const TIOCSWINSZ: u32 = 21524;
-pub const TIOCMGET: u32 = 21525;
-pub const TIOCMBIS: u32 = 21526;
-pub const TIOCMBIC: u32 = 21527;
-pub const TIOCMSET: u32 = 21528;
-pub const TIOCSSOFTCAR: u32 = 21530;
-pub const TIOCLINUX: u32 = 21532;
-pub const TIOCCONS: u32 = 21533;
-pub const TIOCSSERIAL: u32 = 21535;
-pub const TIOCPKT: u32 = 21536;
-pub const TIOCNOTTY: u32 = 21538;
-pub const TIOCSETD: u32 = 21539;
-pub const TIOCSBRK: u32 = 21543;
-pub const TIOCCBRK: u32 = 21544;
-pub const TIOCSRS485: u32 = 21551;
-pub const TIOCSPTLCK: u32 = 1074025521;
-pub const TIOCSIG: u32 = 1074025526;
-pub const TIOCVHANGUP: u32 = 21559;
-pub const TIOCSERCONFIG: u32 = 21587;
-pub const TIOCSERGWILD: u32 = 21588;
-pub const TIOCSERSWILD: u32 = 21589;
-pub const TIOCSLCKTRMIOS: u32 = 21591;
-pub const TIOCSERGSTRUCT: u32 = 21592;
-pub const TIOCSERGETLSR: u32 = 21593;
-pub const TIOCSERGETMULTI: u32 = 21594;
-pub const TIOCSERSETMULTI: u32 = 21595;
-pub const TIOCMIWAIT: u32 = 21596;
-pub const TCGETS: u32 = 21505;
-pub const TCGETA: u32 = 21509;
-pub const TCSBRK: u32 = 21513;
-pub const TCSBRKP: u32 = 21541;
-pub const TCSETA: u32 = 21510;
-pub const TCSETAF: u32 = 21512;
-pub const TCSETAW: u32 = 21511;
-pub const TIOCEXCL: u32 = 21516;
-pub const TIOCNXCL: u32 = 21517;
-pub const TIOCGDEV: u32 = 2147767346;
-pub const TIOCGEXCL: u32 = 2147767360;
-pub const TIOCGICOUNT: u32 = 21597;
-pub const TIOCGLCKTRMIOS: u32 = 21590;
-pub const TIOCGPGRP: u32 = 21519;
-pub const TIOCGPKT: u32 = 2147767352;
-pub const TIOCGPTLCK: u32 = 2147767353;
-pub const TIOCGPTN: u32 = 2147767344;
-pub const TIOCGPTPEER: u32 = 21569;
-pub const TIOCGRS485: u32 = 21550;
-pub const TIOCGSERIAL: u32 = 21534;
-pub const TIOCGSID: u32 = 21545;
-pub const TIOCGSOFTCAR: u32 = 21529;
-pub const TIOCGWINSZ: u32 = 21523;
-pub const TCGETS2: u32 = 2150388778;
-pub const TCGETX: u32 = 21554;
-pub const TCSETS: u32 = 21506;
-pub const TCSETS2: u32 = 1076646955;
-pub const TCSETSF: u32 = 21508;
-pub const TCSETSF2: u32 = 1076646957;
-pub const TCSETSW: u32 = 21507;
-pub const TCSETSW2: u32 = 1076646956;
-pub const TCSETX: u32 = 21555;
-pub const TCSETXF: u32 = 21556;
-pub const TCSETXW: u32 = 21557;
-pub const TIOCGETD: u32 = 21540;
-pub const MTIOCGET: u32 = 2150657282;
-pub const BLKSSZGET: u32 = 4712;
-pub const BLKPBSZGET: u32 = 4731;
-pub const BLKROSET: u32 = 4701;
-pub const BLKROGET: u32 = 4702;
-pub const BLKRRPART: u32 = 4703;
-pub const BLKGETSIZE: u32 = 4704;
-pub const BLKFLSBUF: u32 = 4705;
-pub const BLKRASET: u32 = 4706;
-pub const BLKRAGET: u32 = 4707;
-pub const BLKFRASET: u32 = 4708;
-pub const BLKFRAGET: u32 = 4709;
-pub const BLKSECTSET: u32 = 4710;
-pub const BLKSECTGET: u32 = 4711;
-pub const BLKPG: u32 = 4713;
-pub const BLKBSZGET: u32 = 2148012656;
-pub const BLKBSZSET: u32 = 1074270833;
-pub const BLKGETSIZE64: u32 = 2148012658;
-pub const BLKTRACESETUP: u32 = 3225948787;
-pub const BLKTRACESTART: u32 = 4724;
-pub const BLKTRACESTOP: u32 = 4725;
-pub const BLKTRACETEARDOWN: u32 = 4726;
-pub const BLKDISCARD: u32 = 4727;
-pub const BLKIOMIN: u32 = 4728;
-pub const BLKIOOPT: u32 = 4729;
-pub const BLKALIGNOFF: u32 = 4730;
-pub const BLKDISCARDZEROES: u32 = 4732;
-pub const BLKSECDISCARD: u32 = 4733;
-pub const BLKROTATIONAL: u32 = 4734;
-pub const BLKZEROOUT: u32 = 4735;
-pub const UFFDIO_REGISTER: u32 = 3223366144;
-pub const UFFDIO_UNREGISTER: u32 = 2148575745;
-pub const UFFDIO_WAKE: u32 = 2148575746;
-pub const UFFDIO_COPY: u32 = 3223890435;
-pub const UFFDIO_ZEROPAGE: u32 = 3223366148;
-pub const UFFDIO_WRITEPROTECT: u32 = 3222841862;
-pub const UFFDIO_API: u32 = 3222841919;
-pub const NS_GET_USERNS: u32 = 46849;
-pub const NS_GET_PARENT: u32 = 46850;
-pub const NS_GET_NSTYPE: u32 = 46851;
-pub const KDGETLED: u32 = 19249;
-pub const KDSETLED: u32 = 19250;
-pub const KDGKBLED: u32 = 19300;
-pub const KDSKBLED: u32 = 19301;
-pub const KDGKBTYPE: u32 = 19251;
-pub const KDADDIO: u32 = 19252;
-pub const KDDELIO: u32 = 19253;
-pub const KDENABIO: u32 = 19254;
-pub const KDDISABIO: u32 = 19255;
-pub const KDSETMODE: u32 = 19258;
-pub const KDGETMODE: u32 = 19259;
-pub const KDMKTONE: u32 = 19248;
-pub const KIOCSOUND: u32 = 19247;
-pub const GIO_CMAP: u32 = 19312;
-pub const PIO_CMAP: u32 = 19313;
-pub const GIO_FONT: u32 = 19296;
-pub const GIO_FONTX: u32 = 19307;
-pub const PIO_FONT: u32 = 19297;
-pub const PIO_FONTX: u32 = 19308;
-pub const PIO_FONTRESET: u32 = 19309;
-pub const GIO_SCRNMAP: u32 = 19264;
-pub const GIO_UNISCRNMAP: u32 = 19305;
-pub const PIO_SCRNMAP: u32 = 19265;
-pub const PIO_UNISCRNMAP: u32 = 19306;
-pub const GIO_UNIMAP: u32 = 19302;
-pub const PIO_UNIMAP: u32 = 19303;
-pub const PIO_UNIMAPCLR: u32 = 19304;
-pub const KDGKBMODE: u32 = 19268;
-pub const KDSKBMODE: u32 = 19269;
-pub const KDGKBMETA: u32 = 19298;
-pub const KDSKBMETA: u32 = 19299;
-pub const KDGKBENT: u32 = 19270;
-pub const KDSKBENT: u32 = 19271;
-pub const KDGKBSENT: u32 = 19272;
-pub const KDSKBSENT: u32 = 19273;
-pub const KDGKBDIACR: u32 = 19274;
-pub const KDGETKEYCODE: u32 = 19276;
-pub const KDSETKEYCODE: u32 = 19277;
-pub const KDSIGACCEPT: u32 = 19278;
-pub const VT_OPENQRY: u32 = 22016;
-pub const VT_GETMODE: u32 = 22017;
-pub const VT_SETMODE: u32 = 22018;
-pub const VT_GETSTATE: u32 = 22019;
-pub const VT_RELDISP: u32 = 22021;
-pub const VT_ACTIVATE: u32 = 22022;
-pub const VT_WAITACTIVE: u32 = 22023;
-pub const VT_DISALLOCATE: u32 = 22024;
-pub const VT_RESIZE: u32 = 22025;
-pub const VT_RESIZEX: u32 = 22026;
-pub const FIOSETOWN: u32 = 35073;
-pub const SIOCSPGRP: u32 = 35074;
-pub const FIOGETOWN: u32 = 35075;
-pub const SIOCGPGRP: u32 = 35076;
-pub const SIOCATMARK: u32 = 35077;
-pub const SIOCGSTAMP: u32 = 35078;
-pub const TIOCINQ: u32 = 21531;
-pub const SIOCADDRT: u32 = 35083;
-pub const SIOCDELRT: u32 = 35084;
-pub const SIOCGIFNAME: u32 = 35088;
-pub const SIOCSIFLINK: u32 = 35089;
-pub const SIOCGIFCONF: u32 = 35090;
-pub const SIOCGIFFLAGS: u32 = 35091;
-pub const SIOCSIFFLAGS: u32 = 35092;
-pub const SIOCGIFADDR: u32 = 35093;
-pub const SIOCSIFADDR: u32 = 35094;
-pub const SIOCGIFDSTADDR: u32 = 35095;
-pub const SIOCSIFDSTADDR: u32 = 35096;
-pub const SIOCGIFBRDADDR: u32 = 35097;
-pub const SIOCSIFBRDADDR: u32 = 35098;
-pub const SIOCGIFNETMASK: u32 = 35099;
-pub const SIOCSIFNETMASK: u32 = 35100;
-pub const SIOCGIFMETRIC: u32 = 35101;
-pub const SIOCSIFMETRIC: u32 = 35102;
-pub const SIOCGIFMEM: u32 = 35103;
-pub const SIOCSIFMEM: u32 = 35104;
-pub const SIOCGIFMTU: u32 = 35105;
-pub const SIOCSIFMTU: u32 = 35106;
-pub const SIOCSIFHWADDR: u32 = 35108;
-pub const SIOCGIFENCAP: u32 = 35109;
-pub const SIOCSIFENCAP: u32 = 35110;
-pub const SIOCGIFHWADDR: u32 = 35111;
-pub const SIOCGIFSLAVE: u32 = 35113;
-pub const SIOCSIFSLAVE: u32 = 35120;
-pub const SIOCADDMULTI: u32 = 35121;
-pub const SIOCDELMULTI: u32 = 35122;
-pub const SIOCDARP: u32 = 35155;
-pub const SIOCGARP: u32 = 35156;
-pub const SIOCSARP: u32 = 35157;
-pub const SIOCDRARP: u32 = 35168;
-pub const SIOCGRARP: u32 = 35169;
-pub const SIOCSRARP: u32 = 35170;
-pub const SIOCGIFMAP: u32 = 35184;
-pub const SIOCSIFMAP: u32 = 35185;
-pub const SIOCRTMSG: u32 = 35085;
-pub const SIOCSIFNAME: u32 = 35107;
-pub const SIOCGIFINDEX: u32 = 35123;
-pub const SIOGIFINDEX: u32 = 35123;
-pub const SIOCSIFPFLAGS: u32 = 35124;
-pub const SIOCGIFPFLAGS: u32 = 35125;
-pub const SIOCDIFADDR: u32 = 35126;
-pub const SIOCSIFHWBROADCAST: u32 = 35127;
-pub const SIOCGIFCOUNT: u32 = 35128;
-pub const SIOCGIFBR: u32 = 35136;
-pub const SIOCSIFBR: u32 = 35137;
-pub const SIOCGIFTXQLEN: u32 = 35138;
-pub const SIOCSIFTXQLEN: u32 = 35139;
-pub const SIOCADDDLCI: u32 = 35200;
-pub const SIOCDELDLCI: u32 = 35201;
-pub const SIOCDEVPRIVATE: u32 = 35312;
-pub const SIOCPROTOPRIVATE: u32 = 35296;
-pub const FIBMAP: u32 = 1;
-pub const FIGETBSZ: u32 = 2;
-pub const FIFREEZE: u32 = 3221510263;
-pub const FITHAW: u32 = 3221510264;
-pub const FITRIM: u32 = 3222820985;
-pub const FICLONE: u32 = 1074041865;
-pub const FICLONERANGE: u32 = 1075876877;
-pub const FIDEDUPERANGE: u32 = 3222836278;
-pub const FS_IOC_GETFLAGS: u32 = 2148034049;
-pub const FS_IOC_SETFLAGS: u32 = 1074292226;
-pub const FS_IOC_GETVERSION: u32 = 2148038145;
-pub const FS_IOC_SETVERSION: u32 = 1074296322;
-pub const FS_IOC_FIEMAP: u32 = 3223348747;
-pub const FS_IOC32_GETFLAGS: u32 = 2147771905;
-pub const FS_IOC32_SETFLAGS: u32 = 1074030082;
-pub const FS_IOC32_GETVERSION: u32 = 2147776001;
-pub const FS_IOC32_SETVERSION: u32 = 1074034178;
-pub const FS_IOC_FSGETXATTR: u32 = 2149341215;
-pub const FS_IOC_FSSETXATTR: u32 = 1075599392;
-pub const FS_IOC_GETFSLABEL: u32 = 2164298801;
-pub const FS_IOC_SETFSLABEL: u32 = 1090556978;
-pub const VIDIOC_SUBDEV_QUERYSTD: u32 = 2148030015;
-pub const AUTOFS_DEV_IOCTL_CLOSEMOUNT: u32 = 3222836085;
-pub const LIRC_SET_SEND_CARRIER: u32 = 1074030867;
-pub const AUTOFS_IOC_PROTOSUBVER: u32 = 2147783527;
-pub const PTP_SYS_OFFSET_PRECISE: u32 = 3225435400;
-pub const FSI_SCOM_WRITE: u32 = 3223352066;
-pub const ATM_GETCIRANGE: u32 = 1074815370;
-pub const DMA_BUF_SET_NAME_B: u32 = 1074291201;
-pub const RIO_CM_EP_GET_LIST_SIZE: u32 = 3221512961;
-pub const TUNSETPERSIST: u32 = 1074025675;
-pub const FS_IOC_GET_ENCRYPTION_POLICY: u32 = 1074554389;
-pub const CEC_RECEIVE: u32 = 3224920326;
-pub const MGSL_IOCGPARAMS: u32 = 2150657281;
-pub const ENI_SETMULT: u32 = 1074815335;
-pub const RIO_GET_EVENT_MASK: u32 = 2147773710;
-pub const LIRC_GET_MAX_TIMEOUT: u32 = 2147772681;
-pub const KVM_SET_BOOT_CPU_ID: u32 = 44664;
-pub const KVM_SET_MP_STATE: u32 = 1074048665;
-pub const KVM_GET_MP_STATE: u32 = 2147790488;
-pub const KVM_SET_MEMORY_REGION: u32 = 1075359296;
-pub const KVM_GET_API_VERSION: u32 = 44544;
-pub const KVM_S390_GET_SKEYS: u32 = 1077980850;
-pub const KVM_SET_ONE_REG: u32 = 1074835116;
-pub const KVM_IRQ_LINE_STATUS: u32 = 3221794407;
-pub const KVM_SET_USER_MEMORY_REGION: u32 = 1075883590;
-pub const KVM_S390_INTERRUPT: u32 = 1074835092;
-pub const KVM_TPR_ACCESS_REPORTING: u32 = 3223891602;
-pub const KVM_GET_FPU: u32 = 2174791308;
-pub const KVM_ASSIGN_SET_MSIX_ENTRY: u32 = 1074835060;
-pub const KVM_MEMORY_ENCRYPT_REG_REGION: u32 = 2148576955;
-pub const KVM_S390_UCAS_MAP: u32 = 1075359312;
-pub const KVM_ASSIGN_SET_INTX_MASK: u32 = 1077980836;
-pub const KVM_MEMORY_ENCRYPT_OP: u32 = 3221794490;
-pub const KVM_CREATE_PIT2: u32 = 1077980791;
-pub const KVM_S390_VCPU_FAULT: u32 = 1074310738;
-pub const KVM_REGISTER_COALESCED_MMIO: u32 = 1074835047;
-pub const KVM_SET_VAPIC_ADDR: u32 = 1074310803;
-pub const KVM_CREATE_DEVICE: u32 = 3222056672;
-pub const KVM_GET_IRQCHIP: u32 = 3255348834;
-pub const KVM_TRANSLATE: u32 = 3222843013;
-pub const KVM_S390_SET_INITIAL_PSW: u32 = 1074835094;
-pub const KVM_X86_SETUP_MCE: u32 = 1074310812;
-pub const KVM_DEASSIGN_PCI_DEVICE: u32 = 1077980786;
-pub const KVM_XEN_HVM_SET_ATTR: u32 = 1078505161;
-pub const KVM_GET_CLOCK: u32 = 2150674044;
-pub const KVM_SET_FPU: u32 = 1101049485;
-pub const KVM_KVMCLOCK_CTRL: u32 = 44717;
-pub const KVM_PPC_GET_PVINFO: u32 = 1082175137;
-pub const KVM_X86_GET_MCE_CAP_SUPPORTED: u32 = 2148052637;
-pub const KVM_S390_GET_IRQ_STATE: u32 = 1075883702;
-pub const KVM_GET_DEVICE_ATTR: u32 = 1075359458;
-pub const KVM_S390_INITIAL_RESET: u32 = 44695;
-pub const KVM_SET_REGS: u32 = 1083223682;
-pub const KVM_GET_TSC_KHZ: u32 = 44707;
-pub const KVM_CHECK_EXTENSION: u32 = 44547;
-pub const KVM_PPC_RESIZE_HPT_COMMIT: u32 = 2148576942;
-pub const KVM_GET_DIRTY_LOG: u32 = 1074835010;
-pub const KVM_S390_SET_IRQ_STATE: u32 = 1075883701;
-pub const KVM_S390_NORMAL_RESET: u32 = 44739;
-pub const KVM_SET_SIGNAL_MASK: u32 = 1074048651;
-pub const KVM_XEN_VCPU_SET_ATTR: u32 = 1078505163;
-pub const KVM_SET_GSI_ROUTING: u32 = 1074310762;
-pub const KVM_CREATE_VCPU: u32 = 44609;
-pub const KVM_S390_UCAS_UNMAP: u32 = 1075359313;
-pub const KVM_S390_STORE_STATUS: u32 = 1074310805;
-pub const KVM_UNREGISTER_COALESCED_MMIO: u32 = 1074835048;
-pub const KVM_ASSIGN_DEV_IRQ: u32 = 1077980784;
-pub const KVM_S390_PV_COMMAND: u32 = 3223367365;
-pub const KVM_S390_ENABLE_SIE: u32 = 44550;
-pub const KVM_CLEAR_DIRTY_LOG: u32 = 3222843072;
-pub const KVM_GET_ONE_REG: u32 = 1074835115;
-pub const KVM_ARM_SET_DEVICE_ADDR: u32 = 1074835115;
-pub const KVM_DIRTY_TLB: u32 = 1074835114;
-pub const KVM_NMI: u32 = 44698;
-pub const KVM_HYPERV_EVENTFD: u32 = 1075359421;
-pub const KVM_S390_MEM_OP: u32 = 1077980849;
-pub const KVM_PPC_SVM_OFF: u32 = 44723;
-pub const KVM_PPC_RESIZE_HPT_PREPARE: u32 = 2148576941;
-pub const KVM_INTERRUPT: u32 = 1074048646;
-pub const KVM_XEN_HVM_GET_ATTR: u32 = 3225988808;
-pub const KVM_GET_SREGS: u32 = 2167975555;
-pub const KVM_SET_IDENTITY_MAP_ADDR: u32 = 1074310728;
-pub const KVM_GET_REGS: u32 = 2156965505;
-pub const KVM_S390_GET_CMMA_BITS: u32 = 3223367352;
-pub const KVM_CREATE_IRQCHIP: u32 = 44640;
-pub const KVM_ASSIGN_PCI_DEVICE: u32 = 2151722601;
-pub const KVM_SET_NR_MMU_PAGES: u32 = 44612;
-pub const KVM_IOEVENTFD: u32 = 1077980793;
-pub const KVM_RUN: u32 = 44672;
-pub const KVM_S390_SET_SKEYS: u32 = 1077980851;
-pub const KVM_SET_DEVICE_ATTR: u32 = 1075359457;
-pub const KVM_DEASSIGN_DEV_IRQ: u32 = 1077980789;
-pub const KVM_SMI: u32 = 44727;
-pub const KVM_SET_TSS_ADDR: u32 = 44615;
-pub const KVM_GET_NR_MMU_PAGES: u32 = 44613;
-pub const KVM_XEN_VCPU_GET_ATTR: u32 = 3225988810;
-pub const KVM_REINJECT_CONTROL: u32 = 44657;
-pub const KVM_HAS_DEVICE_ATTR: u32 = 1075359459;
-pub const KVM_IRQFD: u32 = 1075883638;
-pub const KVM_S390_SET_CMMA_BITS: u32 = 1075883705;
-pub const KVM_SET_IRQCHIP: u32 = 2181607011;
-pub const KVM_SIGNAL_MSI: u32 = 1075883685;
-pub const KVM_GET_VCPU_MMAP_SIZE: u32 = 44548;
-pub const KVM_CREATE_VM: u32 = 44545;
-pub const KVM_S390_CLEAR_RESET: u32 = 44740;
-pub const KVM_RESET_DIRTY_RINGS: u32 = 44743;
-pub const KVM_ASSIGN_SET_MSIX_NR: u32 = 1074310771;
-pub const KVM_CREATE_PIT: u32 = 44644;
-pub const KVM_SET_GUEST_DEBUG: u32 = 1078505115;
-pub const KVM_GET_REG_LIST: u32 = 3221794480;
-pub const KVM_ARM_VCPU_FINALIZE: u32 = 1074048706;
-pub const KVM_SET_CLOCK: u32 = 1076932219;
-pub const KVM_PPC_ALLOCATE_HTAB: u32 = 3221532327;
-pub const KVM_PPC_GET_SMMU_INFO: u32 = 2186325670;
-pub const KVM_SET_TSC_KHZ: u32 = 44706;
-pub const KVM_S390_IRQ: u32 = 1078505140;
-pub const KVM_ENABLE_CAP: u32 = 1080602275;
-pub const KVM_IRQ_LINE: u32 = 1074310753;
-pub const KVM_SET_SREGS: u32 = 1094233732;
-pub const KVM_MEMORY_ENCRYPT_UNREG_REGION: u32 = 2148576956;
-pub const KVM_GET_STATS_FD: u32 = 44750;
-pub const USBDEVFS_CLAIMINTERFACE: u32 = 2147767567;
-pub const CHIOMOVE: u32 = 1075077889;
-pub const SONYPI_IOCGBATFLAGS: u32 = 2147579399;
-pub const BTRFS_IOC_SYNC: u32 = 37896;
-pub const VIDIOC_TRY_FMT: u32 = 3234879040;
-pub const LIRC_SET_REC_MODE: u32 = 1074030866;
-pub const VIDIOC_DQEVENT: u32 = 2156418649;
-pub const RPMSG_DESTROY_EPT_IOCTL: u32 = 46338;
-pub const UVCIOC_CTRL_MAP: u32 = 3227546912;
-pub const VHOST_SET_BACKEND_FEATURES: u32 = 1074310949;
-pub const VHOST_VSOCK_SET_GUEST_CID: u32 = 1074311008;
-pub const UI_SET_KEYBIT: u32 = 1074025829;
-pub const LIRC_SET_REC_TIMEOUT: u32 = 1074030872;
-pub const FS_IOC_GET_ENCRYPTION_KEY_STATUS: u32 = 3229640218;
-pub const BTRFS_IOC_TREE_SEARCH_V2: u32 = 3228603409;
-pub const VHOST_SET_VRING_BASE: u32 = 1074310930;
-pub const RIO_ENABLE_DOORBELL_RANGE: u32 = 1074294025;
-pub const VIDIOC_TRY_EXT_CTRLS: u32 = 3223344713;
-pub const LIRC_GET_REC_MODE: u32 = 2147772674;
-pub const PPGETTIME: u32 = 2148561045;
-pub const BTRFS_IOC_RM_DEV: u32 = 1342215179;
-pub const ATM_SETBACKEND: u32 = 1073897970;
-pub const FSL_HV_IOCTL_PARTITION_START: u32 = 3222318851;
-pub const FBIO_WAITEVENT: u32 = 18056;
-pub const SWITCHTEC_IOCTL_PORT_TO_PFF: u32 = 3222034245;
-pub const NVME_IOCTL_IO_CMD: u32 = 3225964099;
-pub const IPMICTL_RECEIVE_MSG_TRUNC: u32 = 3224398091;
-pub const FDTWADDLE: u32 = 601;
-pub const NVME_IOCTL_SUBMIT_IO: u32 = 1076907586;
-pub const NILFS_IOCTL_SYNC: u32 = 2148036234;
-pub const VIDIOC_SUBDEV_S_DV_TIMINGS: u32 = 3229898327;
-pub const ASPEED_LPC_CTRL_IOCTL_GET_SIZE: u32 = 3222319616;
-pub const DM_DEV_STATUS: u32 = 3241737479;
-pub const TEE_IOC_CLOSE_SESSION: u32 = 2147787781;
-pub const NS_GETPSTAT: u32 = 3222298977;
-pub const UI_SET_PROPBIT: u32 = 1074025838;
-pub const TUNSETFILTEREBPF: u32 = 2147767521;
-pub const RIO_MPORT_MAINT_COMPTAG_SET: u32 = 1074031874;
-pub const AUTOFS_DEV_IOCTL_VERSION: u32 = 3222836081;
-pub const WDIOC_SETOPTIONS: u32 = 2147768068;
-pub const VHOST_SCSI_SET_ENDPOINT: u32 = 1088991040;
-pub const MGSL_IOCGTXIDLE: u32 = 27907;
-pub const ATM_ADDLECSADDR: u32 = 1074815374;
-pub const FSL_HV_IOCTL_GETPROP: u32 = 3223891719;
-pub const FDGETPRM: u32 = 2149581316;
-pub const HIDIOCAPPLICATION: u32 = 18434;
-pub const ENI_MEMDUMP: u32 = 1074815328;
-pub const PTP_SYS_OFFSET2: u32 = 1128283406;
-pub const VIDIOC_SUBDEV_G_DV_TIMINGS: u32 = 3229898328;
-pub const DMA_BUF_SET_NAME_A: u32 = 1074029057;
-pub const PTP_PIN_GETFUNC: u32 = 3227532550;
-pub const PTP_SYS_OFFSET_EXTENDED: u32 = 3300932873;
-pub const DFL_FPGA_PORT_UINT_SET_IRQ: u32 = 1074312776;
-pub const RTC_EPOCH_READ: u32 = 2148036621;
-pub const VIDIOC_SUBDEV_S_SELECTION: u32 = 3225441854;
-pub const VIDIOC_QUERY_EXT_CTRL: u32 = 3236451943;
-pub const ATM_GETLECSADDR: u32 = 1074815376;
-pub const FSL_HV_IOCTL_PARTITION_STOP: u32 = 3221794564;
-pub const SONET_GETDIAG: u32 = 2147770644;
-pub const ATMMPC_DATA: u32 = 25049;
-pub const IPMICTL_UNREGISTER_FOR_CMD_CHANS: u32 = 2148296989;
-pub const HIDIOCGCOLLECTIONINDEX: u32 = 1075333136;
-pub const RPMSG_CREATE_EPT_IOCTL: u32 = 1076409601;
-pub const GPIOHANDLE_GET_LINE_VALUES_IOCTL: u32 = 3225465864;
-pub const UI_DEV_SETUP: u32 = 1079792899;
-pub const ISST_IF_IO_CMD: u32 = 1074331138;
-pub const RIO_MPORT_MAINT_READ_REMOTE: u32 = 2149084423;
-pub const VIDIOC_OMAP3ISP_HIST_CFG: u32 = 3224393412;
-pub const BLKGETNRZONES: u32 = 2147750533;
-pub const VIDIOC_G_MODULATOR: u32 = 3225703990;
-pub const VBG_IOCTL_WRITE_CORE_DUMP: u32 = 3223082515;
-pub const USBDEVFS_SETINTERFACE: u32 = 2148029700;
-pub const PPPIOCGCHAN: u32 = 2147775543;
-pub const EVIOCGVERSION: u32 = 2147763457;
-pub const VHOST_NET_SET_BACKEND: u32 = 1074310960;
-pub const USBDEVFS_REAPURBNDELAY: u32 = 1074287885;
-pub const RNDZAPENTCNT: u32 = 20996;
-pub const VIDIOC_G_PARM: u32 = 3234616853;
-pub const TUNGETDEVNETNS: u32 = 21731;
-pub const LIRC_SET_MEASURE_CARRIER_MODE: u32 = 1074030877;
-pub const VHOST_SET_VRING_ERR: u32 = 1074310946;
-pub const VDUSE_VQ_SETUP: u32 = 1075872020;
-pub const AUTOFS_IOC_SETTIMEOUT: u32 = 3221787492;
-pub const VIDIOC_S_FREQUENCY: u32 = 1076647481;
-pub const F2FS_IOC_SEC_TRIM_FILE: u32 = 1075377428;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY: u32 = 3225445912;
-pub const WDIOC_GETPRETIMEOUT: u32 = 2147768073;
-pub const USBDEVFS_DROP_PRIVILEGES: u32 = 1074025758;
-pub const BTRFS_IOC_SNAP_CREATE_V2: u32 = 1342215191;
-pub const VHOST_VSOCK_SET_RUNNING: u32 = 1074048865;
-pub const STP_SET_OPTIONS: u32 = 1074275586;
-pub const FBIO_RADEON_GET_MIRROR: u32 = 2148024323;
-pub const IVTVFB_IOC_DMA_FRAME: u32 = 1075336896;
-pub const IPMICTL_SEND_COMMAND: u32 = 2150131981;
-pub const VIDIOC_G_ENC_INDEX: u32 = 2283296332;
-pub const DFL_FPGA_FME_PORT_PR: u32 = 46720;
-pub const CHIOSVOLTAG: u32 = 1076912914;
-pub const ATM_SETESIF: u32 = 1074815373;
-pub const FW_CDEV_IOC_SEND_RESPONSE: u32 = 1075323652;
-pub const PMU_IOC_GET_MODEL: u32 = 2148024835;
-pub const JSIOCGBTNMAP: u32 = 2214619700;
-pub const USBDEVFS_HUB_PORTINFO: u32 = 2155894035;
-pub const VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS: u32 = 3222820363;
-pub const FDCLRPRM: u32 = 577;
-pub const BTRFS_IOC_SCRUB: u32 = 3288372251;
-pub const USBDEVFS_DISCONNECT: u32 = 21782;
-pub const TUNSETVNETBE: u32 = 1074025694;
-pub const ATMTCP_REMOVE: u32 = 24975;
-pub const VHOST_VDPA_GET_CONFIG: u32 = 2148052851;
-pub const PPPIOCGNPMODE: u32 = 3221779532;
-pub const FDGETDRVPRM: u32 = 2155872785;
-pub const TUNSETVNETLE: u32 = 1074025692;
-pub const PHN_SETREG: u32 = 1074294790;
-pub const PPPIOCDETACH: u32 = 1074033724;
-pub const MMTIMER_GETRES: u32 = 2148035841;
-pub const VIDIOC_SUBDEV_ENUMSTD: u32 = 3225966105;
-pub const PPGETFLAGS: u32 = 2147774618;
-pub const VDUSE_DEV_GET_FEATURES: u32 = 2148040977;
-pub const CAPI_MANUFACTURER_CMD: u32 = 3222291232;
-pub const VIDIOC_G_TUNER: u32 = 3226752541;
-pub const DM_TABLE_STATUS: u32 = 3241737484;
-pub const DM_DEV_ARM_POLL: u32 = 3241737488;
-pub const NE_CREATE_VM: u32 = 2148052512;
-pub const MEDIA_IOC_ENUM_LINKS: u32 = 3223878658;
-pub const F2FS_IOC_PRECACHE_EXTENTS: u32 = 62735;
-pub const DFL_FPGA_PORT_DMA_MAP: u32 = 46659;
-pub const MGSL_IOCGXCTRL: u32 = 27926;
-pub const FW_CDEV_IOC_SEND_REQUEST: u32 = 1076372225;
-pub const SONYPI_IOCGBLUE: u32 = 2147579400;
-pub const F2FS_IOC_DECOMPRESS_FILE: u32 = 62743;
-pub const I2OHTML: u32 = 3224398089;
-pub const VFIO_GET_API_VERSION: u32 = 15204;
-pub const IDT77105_GETSTATZ: u32 = 1074815283;
-pub const I2OPARMSET: u32 = 3223873795;
-pub const TEE_IOC_CANCEL: u32 = 2148049924;
-pub const PTP_SYS_OFFSET_PRECISE2: u32 = 3225435409;
-pub const DFL_FPGA_PORT_RESET: u32 = 46656;
-pub const PPPIOCGASYNCMAP: u32 = 2147775576;
-pub const EVIOCGKEYCODE_V2: u32 = 2150122756;
-pub const DM_DEV_SET_GEOMETRY: u32 = 3241737487;
-pub const HIDIOCSUSAGE: u32 = 1075333132;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE: u32 = 1075323664;
-pub const PTP_EXTTS_REQUEST: u32 = 1074806018;
-pub const SWITCHTEC_IOCTL_EVENT_CTL: u32 = 3223869251;
-pub const WDIOC_SETPRETIMEOUT: u32 = 3221509896;
-pub const VHOST_SCSI_CLEAR_ENDPOINT: u32 = 1088991041;
-pub const JSIOCGAXES: u32 = 2147576337;
-pub const HIDIOCSFLAG: u32 = 1074022415;
-pub const PTP_PEROUT_REQUEST2: u32 = 1077427468;
-pub const PPWDATA: u32 = 1073836166;
-pub const PTP_CLOCK_GETCAPS: u32 = 2152742145;
-pub const FDGETMAXERRS: u32 = 2148794894;
-pub const TUNSETQUEUE: u32 = 1074025689;
-pub const PTP_ENABLE_PPS: u32 = 1074019588;
-pub const SIOCSIFATMTCP: u32 = 24960;
-pub const CEC_ADAP_G_LOG_ADDRS: u32 = 2153537795;
-pub const ND_IOCTL_ARS_CAP: u32 = 3223342593;
-pub const NBD_SET_BLKSIZE: u32 = 43777;
-pub const NBD_SET_TIMEOUT: u32 = 43785;
-pub const VHOST_SCSI_GET_ABI_VERSION: u32 = 1074048834;
-pub const RIO_UNMAP_INBOUND: u32 = 1074294034;
-pub const ATM_QUERYLOOP: u32 = 1074815316;
-pub const DFL_FPGA_GET_API_VERSION: u32 = 46592;
-pub const USBDEVFS_WAIT_FOR_RESUME: u32 = 21795;
-pub const FBIO_CURSOR: u32 = 3228059144;
-pub const RNDCLEARPOOL: u32 = 20998;
-pub const VIDIOC_QUERYSTD: u32 = 2148030015;
-pub const DMA_BUF_IOCTL_SYNC: u32 = 1074291200;
-pub const SCIF_RECV: u32 = 3222827783;
-pub const PTP_PIN_GETFUNC2: u32 = 3227532559;
-pub const FW_CDEV_IOC_ALLOCATE: u32 = 3223331586;
-pub const CEC_ADAP_G_CAPS: u32 = 3226231040;
-pub const VIDIOC_G_FBUF: u32 = 2150651402;
-pub const PTP_ENABLE_PPS2: u32 = 1074019597;
-pub const PCITEST_CLEAR_IRQ: u32 = 20496;
-pub const IPMICTL_SET_GETS_EVENTS_CMD: u32 = 2147772688;
-pub const BTRFS_IOC_DEVICES_READY: u32 = 2415957031;
-pub const JSIOCGAXMAP: u32 = 2151705138;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER: u32 = 2148541196;
-pub const FW_CDEV_IOC_SET_ISO_CHANNELS: u32 = 1074799383;
-pub const RTC_WIE_OFF: u32 = 28688;
-pub const PPGETMODE: u32 = 2147774616;
-pub const VIDIOC_DBG_G_REGISTER: u32 = 3224917584;
-pub const PTP_SYS_OFFSET: u32 = 1128283397;
-pub const BTRFS_IOC_SPACE_INFO: u32 = 3222311956;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_SIZE: u32 = 3225441866;
-pub const ND_IOCTL_VENDOR: u32 = 3221769737;
-pub const SCIF_VREADFROM: u32 = 3223876364;
-pub const BTRFS_IOC_TRANS_START: u32 = 37894;
-pub const INOTIFY_IOC_SETNEXTWD: u32 = 1074022656;
-pub const SNAPSHOT_GET_IMAGE_SIZE: u32 = 2148021006;
-pub const TUNDETACHFILTER: u32 = 1074812118;
-pub const ND_IOCTL_CLEAR_ERROR: u32 = 3223342596;
-pub const IOC_PR_CLEAR: u32 = 1074819277;
-pub const SCIF_READFROM: u32 = 3223876362;
-pub const PPPIOCGDEBUG: u32 = 2147775553;
-pub const BLKGETZONESZ: u32 = 2147750532;
-pub const HIDIOCGUSAGES: u32 = 3491514387;
-pub const SONYPI_IOCGTEMP: u32 = 2147579404;
-pub const UI_SET_MSCBIT: u32 = 1074025832;
-pub const APM_IOC_SUSPEND: u32 = 16642;
-pub const BTRFS_IOC_TREE_SEARCH: u32 = 3489698833;
-pub const RTC_PLL_GET: u32 = 2149609489;
-pub const RIO_CM_EP_GET_LIST: u32 = 3221512962;
-pub const USBDEVFS_DISCSIGNAL: u32 = 2148553998;
-pub const LIRC_GET_MIN_TIMEOUT: u32 = 2147772680;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY: u32 = 2174244674;
-pub const DM_TARGET_MSG: u32 = 3241737486;
-pub const SONYPI_IOCGBAT1REM: u32 = 2147644931;
-pub const EVIOCSFF: u32 = 1076905344;
-pub const TUNSETGROUP: u32 = 1074025678;
-pub const EVIOCGKEYCODE: u32 = 2148025604;
-pub const KCOV_REMOTE_ENABLE: u32 = 1075340134;
-pub const ND_IOCTL_GET_CONFIG_SIZE: u32 = 3222031876;
-pub const FDEJECT: u32 = 602;
-pub const TUNSETOFFLOAD: u32 = 1074025680;
-pub const PPPIOCCONNECT: u32 = 1074033722;
-pub const ATM_ADDADDR: u32 = 1074815368;
-pub const VDUSE_DEV_INJECT_CONFIG_IRQ: u32 = 33043;
-pub const AUTOFS_DEV_IOCTL_ASKUMOUNT: u32 = 3222836093;
-pub const VHOST_VDPA_GET_STATUS: u32 = 2147594097;
-pub const CCISS_PASSTHRU: u32 = 3227009547;
-pub const MGSL_IOCCLRMODCOUNT: u32 = 27919;
-pub const TEE_IOC_SUPPL_SEND: u32 = 2148574215;
-pub const ATMARPD_CTRL: u32 = 25057;
-pub const UI_ABS_SETUP: u32 = 1075598596;
-pub const UI_DEV_DESTROY: u32 = 21762;
-pub const BTRFS_IOC_QUOTA_CTL: u32 = 3222311976;
-pub const RTC_AIE_ON: u32 = 28673;
-pub const AUTOFS_IOC_EXPIRE: u32 = 2165085029;
-pub const PPPIOCSDEBUG: u32 = 1074033728;
-pub const GPIO_V2_LINE_SET_VALUES_IOCTL: u32 = 3222320143;
-pub const PPPIOCSMRU: u32 = 1074033746;
-pub const CCISS_DEREGDISK: u32 = 16908;
-pub const UI_DEV_CREATE: u32 = 21761;
-pub const FUSE_DEV_IOC_CLONE: u32 = 2147804416;
-pub const BTRFS_IOC_START_SYNC: u32 = 2148045848;
-pub const NILFS_IOCTL_DELETE_CHECKPOINT: u32 = 1074294401;
-pub const SNAPSHOT_AVAIL_SWAP_SIZE: u32 = 2148021011;
-pub const DM_TABLE_CLEAR: u32 = 3241737482;
-pub const CCISS_GETINTINFO: u32 = 2148024834;
-pub const PPPIOCSASYNCMAP: u32 = 1074033751;
-pub const I2OEVTGET: u32 = 2154326283;
-pub const NVME_IOCTL_RESET: u32 = 20036;
-pub const PPYIELD: u32 = 28813;
-pub const NVME_IOCTL_IO64_CMD: u32 = 3226488392;
-pub const TUNSETCARRIER: u32 = 1074025698;
-pub const DM_DEV_WAIT: u32 = 3241737480;
-pub const RTC_WIE_ON: u32 = 28687;
-pub const MEDIA_IOC_DEVICE_INFO: u32 = 3238034432;
-pub const RIO_CM_CHAN_CREATE: u32 = 3221381891;
-pub const MGSL_IOCSPARAMS: u32 = 1076915456;
-pub const RTC_SET_TIME: u32 = 1076129802;
-pub const VHOST_RESET_OWNER: u32 = 44802;
-pub const IOC_OPAL_PSID_REVERT_TPR: u32 = 1091072232;
-pub const AUTOFS_DEV_IOCTL_OPENMOUNT: u32 = 3222836084;
-pub const UDF_GETEABLOCK: u32 = 2148035649;
-pub const VFIO_IOMMU_MAP_DMA: u32 = 15217;
-pub const VIDIOC_SUBSCRIBE_EVENT: u32 = 1075861082;
-pub const HIDIOCGFLAG: u32 = 2147764238;
-pub const HIDIOCGUCODE: u32 = 3222816781;
-pub const VIDIOC_OMAP3ISP_AF_CFG: u32 = 3226228421;
-pub const DM_REMOVE_ALL: u32 = 3241737473;
-pub const ASPEED_LPC_CTRL_IOCTL_MAP: u32 = 1074835969;
-pub const CCISS_GETFIRMVER: u32 = 2147762696;
-pub const ND_IOCTL_ARS_START: u32 = 3223342594;
-pub const PPPIOCSMRRU: u32 = 1074033723;
-pub const CEC_ADAP_S_LOG_ADDRS: u32 = 3227279620;
-pub const RPROC_GET_SHUTDOWN_ON_RELEASE: u32 = 2147792642;
-pub const DMA_HEAP_IOCTL_ALLOC: u32 = 3222816768;
-pub const PPSETTIME: u32 = 1074819222;
-pub const RTC_ALM_READ: u32 = 2149871624;
-pub const VDUSE_SET_API_VERSION: u32 = 1074299137;
-pub const RIO_MPORT_MAINT_WRITE_REMOTE: u32 = 1075342600;
-pub const VIDIOC_SUBDEV_S_CROP: u32 = 3224917564;
-pub const USBDEVFS_CONNECT: u32 = 21783;
-pub const SYNC_IOC_FILE_INFO: u32 = 3224911364;
-pub const ATMARP_MKIP: u32 = 25058;
-pub const VFIO_IOMMU_SPAPR_TCE_GET_INFO: u32 = 15216;
-pub const CCISS_GETHEARTBEAT: u32 = 2147762694;
-pub const ATM_RSTADDR: u32 = 1074815367;
-pub const NBD_SET_SIZE: u32 = 43778;
-pub const UDF_GETVOLIDENT: u32 = 2148035650;
-pub const GPIO_V2_LINE_GET_VALUES_IOCTL: u32 = 3222320142;
-pub const MGSL_IOCSTXIDLE: u32 = 27906;
-pub const FSL_HV_IOCTL_SETPROP: u32 = 3223891720;
-pub const BTRFS_IOC_GET_DEV_STATS: u32 = 3288896564;
-pub const PPRSTATUS: u32 = 2147577985;
-pub const MGSL_IOCTXENABLE: u32 = 27908;
-pub const UDF_GETEASIZE: u32 = 2147773504;
-pub const NVME_IOCTL_ADMIN64_CMD: u32 = 3226488391;
-pub const VHOST_SET_OWNER: u32 = 44801;
-pub const RIO_ALLOC_DMA: u32 = 3222826259;
-pub const RIO_CM_CHAN_ACCEPT: u32 = 3221775111;
-pub const I2OHRTGET: u32 = 3222825217;
-pub const ATM_SETCIRANGE: u32 = 1074815371;
-pub const HPET_IE_ON: u32 = 26625;
-pub const PERF_EVENT_IOC_ID: u32 = 2148017159;
-pub const TUNSETSNDBUF: u32 = 1074025684;
-pub const PTP_PIN_SETFUNC: u32 = 1080048903;
-pub const PPPIOCDISCONN: u32 = 29753;
-pub const VIDIOC_QUERYCTRL: u32 = 3225703972;
-pub const PPEXCL: u32 = 28815;
-pub const PCITEST_MSI: u32 = 1074024451;
-pub const FDWERRORCLR: u32 = 598;
-pub const AUTOFS_IOC_FAIL: u32 = 37729;
-pub const USBDEVFS_IOCTL: u32 = 3222295826;
-pub const VIDIOC_S_STD: u32 = 1074288152;
-pub const F2FS_IOC_RESIZE_FS: u32 = 1074328848;
-pub const SONET_SETDIAG: u32 = 3221512466;
-pub const BTRFS_IOC_DEFRAG: u32 = 1342215170;
-pub const CCISS_GETDRIVVER: u32 = 2147762697;
-pub const IPMICTL_GET_TIMING_PARMS_CMD: u32 = 2148034839;
-pub const HPET_IRQFREQ: u32 = 1074292742;
-pub const ATM_GETESI: u32 = 1074815365;
-pub const CCISS_GETLUNINFO: u32 = 2148286993;
-pub const AUTOFS_DEV_IOCTL_ISMOUNTPOINT: u32 = 3222836094;
-pub const TEE_IOC_SHM_ALLOC: u32 = 3222316033;
-pub const PERF_EVENT_IOC_SET_BPF: u32 = 1074013192;
-pub const UDMABUF_CREATE_LIST: u32 = 1074296131;
-pub const VHOST_SET_LOG_BASE: u32 = 1074310916;
-pub const ZATM_GETPOOL: u32 = 1074815329;
-pub const BR2684_SETFILT: u32 = 1075601808;
-pub const RNDGETPOOL: u32 = 2148028930;
-pub const PPS_GETPARAMS: u32 = 2148036769;
-pub const IOC_PR_RESERVE: u32 = 1074819273;
-pub const VIDIOC_TRY_DECODER_CMD: u32 = 3225966177;
-pub const RIO_CM_CHAN_CLOSE: u32 = 1073898244;
-pub const VIDIOC_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const IOCTL_MEI_CONNECT_CLIENT_VTAG: u32 = 3222554628;
-pub const PMU_IOC_GET_BACKLIGHT: u32 = 2148024833;
-pub const USBDEVFS_GET_CAPABILITIES: u32 = 2147767578;
-pub const SCIF_WRITETO: u32 = 3223876363;
-pub const UDF_RELOCATE_BLOCKS: u32 = 3221777475;
-pub const FSL_HV_IOCTL_PARTITION_RESTART: u32 = 3221794561;
-pub const CCISS_REGNEWD: u32 = 16910;
-pub const FAT_IOCTL_SET_ATTRIBUTES: u32 = 1074033169;
-pub const VIDIOC_CREATE_BUFS: u32 = 3238024796;
-pub const CAPI_GET_VERSION: u32 = 3222291207;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY: u32 = 2228770626;
-pub const VFIO_EEH_PE_OP: u32 = 15225;
-pub const FW_CDEV_IOC_CREATE_ISO_CONTEXT: u32 = 3223331592;
-pub const F2FS_IOC_RELEASE_COMPRESS_BLOCKS: u32 = 2148070674;
-pub const NBD_SET_SIZE_BLOCKS: u32 = 43783;
-pub const IPMI_BMC_IOCTL_SET_SMS_ATN: u32 = 45312;
-pub const ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG: u32 = 3222319873;
-pub const VIDIOC_S_AUDOUT: u32 = 1077171762;
-pub const VIDIOC_S_FMT: u32 = 3234878981;
-pub const PPPIOCATTACH: u32 = 1074033725;
-pub const VHOST_GET_VRING_BUSYLOOP_TIMEOUT: u32 = 1074310948;
-pub const FS_IOC_MEASURE_VERITY: u32 = 3221513862;
-pub const CCISS_BIG_PASSTHRU: u32 = 3227533842;
-pub const IPMICTL_SET_MY_LUN_CMD: u32 = 2147772691;
-pub const PCITEST_LEGACY_IRQ: u32 = 20482;
-pub const USBDEVFS_SUBMITURB: u32 = 2151175434;
-pub const AUTOFS_IOC_READY: u32 = 37728;
-pub const BTRFS_IOC_SEND: u32 = 1078498342;
-pub const VIDIOC_G_EXT_CTRLS: u32 = 3223344711;
-pub const JSIOCSBTNMAP: u32 = 1140877875;
-pub const PPPIOCSFLAGS: u32 = 1074033753;
-pub const NVRAM_INIT: u32 = 28736;
-pub const RFKILL_IOCTL_NOINPUT: u32 = 20993;
-pub const BTRFS_IOC_BALANCE: u32 = 1342215180;
-pub const FS_IOC_GETFSMAP: u32 = 3233830971;
-pub const IPMICTL_GET_MY_CHANNEL_LUN_CMD: u32 = 2147772699;
-pub const STP_POLICY_ID_GET: u32 = 2148541697;
-pub const PPSETFLAGS: u32 = 1074032795;
-pub const CEC_ADAP_S_PHYS_ADDR: u32 = 1073897730;
-pub const ATMTCP_CREATE: u32 = 24974;
-pub const IPMI_BMC_IOCTL_FORCE_ABORT: u32 = 45314;
-pub const PPPIOCGXASYNCMAP: u32 = 2149610576;
-pub const VHOST_SET_VRING_CALL: u32 = 1074310945;
-pub const LIRC_GET_FEATURES: u32 = 2147772672;
-pub const GSMIOC_DISABLE_NET: u32 = 18179;
-pub const AUTOFS_IOC_CATATONIC: u32 = 37730;
-pub const NBD_DO_IT: u32 = 43779;
-pub const LIRC_SET_REC_CARRIER_RANGE: u32 = 1074030879;
-pub const IPMICTL_GET_MY_CHANNEL_ADDRESS_CMD: u32 = 2147772697;
-pub const EVIOCSCLOCKID: u32 = 1074021792;
-pub const USBDEVFS_FREE_STREAMS: u32 = 2148029725;
-pub const FSI_SCOM_RESET: u32 = 1074033411;
-pub const PMU_IOC_GRAB_BACKLIGHT: u32 = 2148024838;
-pub const VIDIOC_SUBDEV_S_FMT: u32 = 3227014661;
-pub const FDDEFPRM: u32 = 1075839555;
-pub const TEE_IOC_INVOKE: u32 = 2148574211;
-pub const USBDEVFS_BULK: u32 = 3222820098;
-pub const SCIF_VWRITETO: u32 = 3223876365;
-pub const SONYPI_IOCSBRT: u32 = 1073837568;
-pub const BTRFS_IOC_FILE_EXTENT_SAME: u32 = 3222836278;
-pub const RTC_PIE_ON: u32 = 28677;
-pub const BTRFS_IOC_SCAN_DEV: u32 = 1342215172;
-pub const PPPIOCXFERUNIT: u32 = 29774;
-pub const WDIOC_GETTIMEOUT: u32 = 2147768071;
-pub const BTRFS_IOC_SET_RECEIVED_SUBVOL: u32 = 3234370597;
-pub const DFL_FPGA_PORT_ERR_SET_IRQ: u32 = 1074312774;
-pub const FBIO_WAITFORVSYNC: u32 = 1074021920;
-pub const RTC_PIE_OFF: u32 = 28678;
-pub const EVIOCGRAB: u32 = 1074021776;
-pub const PMU_IOC_SET_BACKLIGHT: u32 = 1074283010;
-pub const EVIOCGREP: u32 = 2148025603;
-pub const PERF_EVENT_IOC_MODIFY_ATTRIBUTES: u32 = 1074275339;
-pub const UFFDIO_CONTINUE: u32 = 3223366151;
-pub const VDUSE_GET_API_VERSION: u32 = 2148040960;
-pub const RTC_RD_TIME: u32 = 2149871625;
-pub const FDMSGOFF: u32 = 582;
-pub const IPMICTL_REGISTER_FOR_CMD_CHANS: u32 = 2148296988;
-pub const CAPI_GET_ERRCODE: u32 = 2147631905;
-pub const PCITEST_SET_IRQTYPE: u32 = 1074024456;
-pub const VIDIOC_SUBDEV_S_EDID: u32 = 3223868969;
-pub const MATROXFB_SET_OUTPUT_MODE: u32 = 1074294522;
-pub const RIO_DEV_ADD: u32 = 1075866903;
-pub const VIDIOC_ENUM_FREQ_BANDS: u32 = 3225441893;
-pub const FBIO_RADEON_SET_MIRROR: u32 = 1074282500;
-pub const PCITEST_GET_IRQTYPE: u32 = 20489;
-pub const JSIOCGVERSION: u32 = 2147772929;
-pub const SONYPI_IOCSBLUE: u32 = 1073837577;
-pub const SNAPSHOT_PREF_IMAGE_SIZE: u32 = 13074;
-pub const F2FS_IOC_GET_FEATURES: u32 = 2147808524;
-pub const SCIF_REG: u32 = 3223876360;
-pub const NILFS_IOCTL_CLEAN_SEGMENTS: u32 = 1081634440;
-pub const FW_CDEV_IOC_INITIATE_BUS_RESET: u32 = 1074012933;
-pub const RIO_WAIT_FOR_ASYNC: u32 = 1074294038;
-pub const VHOST_SET_VRING_NUM: u32 = 1074310928;
-pub const AUTOFS_DEV_IOCTL_PROTOVER: u32 = 3222836082;
-pub const RIO_FREE_DMA: u32 = 1074294036;
-pub const MGSL_IOCRXENABLE: u32 = 27909;
-pub const IOCTL_VM_SOCKETS_GET_LOCAL_CID: u32 = 1977;
-pub const IPMICTL_SET_TIMING_PARMS_CMD: u32 = 2148034838;
-pub const PPPIOCGL2TPSTATS: u32 = 2152231990;
-pub const PERF_EVENT_IOC_PERIOD: u32 = 1074275332;
-pub const PTP_PIN_SETFUNC2: u32 = 1080048912;
-pub const CHIOEXCHANGE: u32 = 1075602178;
-pub const NILFS_IOCTL_GET_SUINFO: u32 = 2149084804;
-pub const CEC_DQEVENT: u32 = 3226493191;
-pub const UI_SET_SWBIT: u32 = 1074025837;
-pub const VHOST_VDPA_SET_CONFIG: u32 = 1074311028;
-pub const TUNSETIFF: u32 = 1074025674;
-pub const CHIOPOSITION: u32 = 1074553603;
-pub const IPMICTL_SET_MAINTENANCE_MODE_CMD: u32 = 1074030879;
-pub const BTRFS_IOC_DEFAULT_SUBVOL: u32 = 1074304019;
-pub const RIO_UNMAP_OUTBOUND: u32 = 1076391184;
-pub const CAPI_CLR_FLAGS: u32 = 2147762981;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE: u32 = 1075323663;
-pub const MATROXFB_GET_OUTPUT_CONNECTION: u32 = 2148036344;
-pub const EVIOCSMASK: u32 = 1074808211;
-pub const BTRFS_IOC_FORGET_DEV: u32 = 1342215173;
-pub const CXL_MEM_QUERY_COMMANDS: u32 = 2148060673;
-pub const CEC_S_MODE: u32 = 1074028809;
-pub const MGSL_IOCSIF: u32 = 27914;
-pub const SWITCHTEC_IOCTL_PFF_TO_PORT: u32 = 3222034244;
-pub const PPSETMODE: u32 = 1074032768;
-pub const VFIO_DEVICE_SET_IRQS: u32 = 15214;
-pub const VIDIOC_PREPARE_BUF: u32 = 3227014749;
-pub const CEC_ADAP_G_CONNECTOR_INFO: u32 = 2151964938;
-pub const IOC_OPAL_WRITE_SHADOW_MBR: u32 = 1092645098;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL: u32 = 3225441867;
-pub const UDMABUF_CREATE: u32 = 1075344706;
-pub const SONET_CLRDIAG: u32 = 3221512467;
-pub const PHN_SET_REG: u32 = 1074294785;
-pub const RNDADDTOENTCNT: u32 = 1074024961;
-pub const VBG_IOCTL_CHECK_BALLOON: u32 = 3223344657;
-pub const VIDIOC_OMAP3ISP_STAT_REQ: u32 = 3223869126;
-pub const PPS_FETCH: u32 = 3221778596;
-pub const RTC_AIE_OFF: u32 = 28674;
-pub const VFIO_GROUP_SET_CONTAINER: u32 = 15208;
-pub const FW_CDEV_IOC_RECEIVE_PHY_PACKETS: u32 = 1074275094;
-pub const VFIO_IOMMU_SPAPR_TCE_REMOVE: u32 = 15224;
-pub const VFIO_IOMMU_GET_INFO: u32 = 15216;
-pub const DM_DEV_SUSPEND: u32 = 3241737478;
-pub const F2FS_IOC_GET_COMPRESS_OPTION: u32 = 2147677461;
-pub const FW_CDEV_IOC_STOP_ISO: u32 = 1074012939;
-pub const GPIO_V2_GET_LINEINFO_IOCTL: u32 = 3238048773;
-pub const ATMMPC_CTRL: u32 = 25048;
-pub const PPPIOCSXASYNCMAP: u32 = 1075868751;
-pub const CHIOGSTATUS: u32 = 1074815752;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE: u32 = 3222807309;
-pub const RIO_MPORT_MAINT_PORT_IDX_GET: u32 = 2147773699;
-pub const CAPI_SET_FLAGS: u32 = 2147762980;
-pub const VFIO_GROUP_GET_DEVICE_FD: u32 = 15210;
-pub const VHOST_SET_MEM_TABLE: u32 = 1074310915;
-pub const MATROXFB_SET_OUTPUT_CONNECTION: u32 = 1074294520;
-pub const DFL_FPGA_PORT_GET_REGION_INFO: u32 = 46658;
-pub const VHOST_GET_FEATURES: u32 = 2148052736;
-pub const LIRC_GET_REC_RESOLUTION: u32 = 2147772679;
-pub const PACKET_CTRL_CMD: u32 = 3222820865;
-pub const LIRC_SET_TRANSMITTER_MASK: u32 = 1074030871;
-pub const BTRFS_IOC_ADD_DEV: u32 = 1342215178;
-pub const JSIOCGCORR: u32 = 2149870114;
-pub const VIDIOC_G_FMT: u32 = 3234878980;
-pub const RTC_EPOCH_SET: u32 = 1074294798;
-pub const CAPI_GET_PROFILE: u32 = 3225436937;
-pub const ATM_GETLOOP: u32 = 1074815314;
-pub const SCIF_LISTEN: u32 = 1074033410;
-pub const NBD_CLEAR_QUE: u32 = 43781;
-pub const F2FS_IOC_MOVE_RANGE: u32 = 3223385353;
-pub const LIRC_GET_LENGTH: u32 = 2147772687;
-pub const I8K_SET_FAN: u32 = 3221776775;
-pub const FDSETMAXERRS: u32 = 1075053132;
-pub const VIDIOC_SUBDEV_QUERYCAP: u32 = 2151699968;
-pub const SNAPSHOT_SET_SWAP_AREA: u32 = 1074541325;
-pub const LIRC_GET_REC_TIMEOUT: u32 = 2147772708;
-pub const EVIOCRMFF: u32 = 1074021761;
-pub const GPIO_GET_LINEEVENT_IOCTL: u32 = 3224417284;
-pub const PPRDATA: u32 = 2147577989;
-pub const RIO_MPORT_GET_PROPERTIES: u32 = 2150657284;
-pub const TUNSETVNETHDRSZ: u32 = 1074025688;
-pub const GPIO_GET_LINEINFO_IOCTL: u32 = 3225990146;
-pub const GSMIOC_GETCONF: u32 = 2152482560;
-pub const LIRC_GET_SEND_MODE: u32 = 2147772673;
-pub const PPPIOCSACTIVE: u32 = 1074820166;
-pub const SIOCGSTAMPNS_NEW: u32 = 2148567303;
-pub const IPMICTL_RECEIVE_MSG: u32 = 3224398092;
-pub const LIRC_SET_SEND_DUTY_CYCLE: u32 = 1074030869;
-pub const UI_END_FF_ERASE: u32 = 1074550219;
-pub const SWITCHTEC_IOCTL_FLASH_PART_INFO: u32 = 3222296385;
-pub const FW_CDEV_IOC_SEND_PHY_PACKET: u32 = 3222807317;
-pub const NBD_SET_FLAGS: u32 = 43786;
-pub const VFIO_DEVICE_GET_REGION_INFO: u32 = 15212;
-pub const REISERFS_IOC_UNPACK: u32 = 1074318593;
-pub const FW_CDEV_IOC_REMOVE_DESCRIPTOR: u32 = 1074012935;
-pub const RIO_SET_EVENT_MASK: u32 = 1074031885;
-pub const SNAPSHOT_ALLOC_SWAP_PAGE: u32 = 2148021012;
-pub const VDUSE_VQ_INJECT_IRQ: u32 = 1074037015;
-pub const I2OPASSTHRU: u32 = 2148559116;
-pub const IOC_OPAL_SET_PW: u32 = 1109422304;
-pub const FSI_SCOM_READ: u32 = 3223352065;
-pub const VHOST_VDPA_GET_DEVICE_ID: u32 = 2147790704;
-pub const VIDIOC_QBUF: u32 = 3227014671;
-pub const VIDIOC_S_TUNER: u32 = 1079268894;
-pub const TUNGETVNETHDRSZ: u32 = 2147767511;
-pub const CAPI_NCCI_GETUNIT: u32 = 2147762983;
-pub const DFL_FPGA_PORT_UINT_GET_IRQ_NUM: u32 = 2147792455;
-pub const VIDIOC_OMAP3ISP_STAT_EN: u32 = 3221771975;
-pub const GPIO_V2_LINE_SET_CONFIG_IOCTL: u32 = 3239097357;
-pub const TEE_IOC_VERSION: u32 = 2148312064;
-pub const VIDIOC_LOG_STATUS: u32 = 22086;
-pub const IPMICTL_SEND_COMMAND_SETTIME: u32 = 2150656277;
-pub const VHOST_SET_LOG_FD: u32 = 1074048775;
-pub const SCIF_SEND: u32 = 3222827782;
-pub const VIDIOC_SUBDEV_G_FMT: u32 = 3227014660;
-pub const NS_ADJBUFLEV: u32 = 24931;
-pub const VIDIOC_DBG_S_REGISTER: u32 = 1077433935;
-pub const NILFS_IOCTL_RESIZE: u32 = 1074294411;
-pub const PHN_GETREG: u32 = 3221778437;
-pub const I2OSWDL: u32 = 3224398085;
-pub const VBG_IOCTL_VMMDEV_REQUEST_BIG: u32 = 22019;
-pub const JSIOCGBUTTONS: u32 = 2147576338;
-pub const VFIO_IOMMU_ENABLE: u32 = 15219;
-pub const DM_DEV_RENAME: u32 = 3241737477;
-pub const MEDIA_IOC_SETUP_LINK: u32 = 3224665091;
-pub const VIDIOC_ENUMOUTPUT: u32 = 3225966128;
-pub const STP_POLICY_ID_SET: u32 = 3222283520;
-pub const VHOST_VDPA_SET_CONFIG_CALL: u32 = 1074048887;
-pub const VIDIOC_SUBDEV_G_CROP: u32 = 3224917563;
-pub const VIDIOC_S_CROP: u32 = 1075074620;
-pub const WDIOC_GETTEMP: u32 = 2147768067;
-pub const IOC_OPAL_ADD_USR_TO_LR: u32 = 1092120804;
-pub const UI_SET_LEDBIT: u32 = 1074025833;
-pub const NBD_SET_SOCK: u32 = 43776;
-pub const BTRFS_IOC_SNAP_DESTROY_V2: u32 = 1342215231;
-pub const HIDIOCGCOLLECTIONINFO: u32 = 3222292497;
-pub const I2OSWUL: u32 = 3224398086;
-pub const IOCTL_MEI_NOTIFY_GET: u32 = 2147764227;
-pub const FDFMTTRK: u32 = 1074528840;
-pub const MMTIMER_GETBITS: u32 = 27908;
-pub const VIDIOC_ENUMSTD: u32 = 3225966105;
-pub const VHOST_GET_VRING_BASE: u32 = 3221794578;
-pub const VFIO_DEVICE_IOEVENTFD: u32 = 15220;
-pub const ATMARP_SETENTRY: u32 = 25059;
-pub const CCISS_REVALIDVOLS: u32 = 16906;
-pub const MGSL_IOCLOOPTXDONE: u32 = 27913;
-pub const RTC_VL_READ: u32 = 2147774483;
-pub const ND_IOCTL_ARS_STATUS: u32 = 3224391171;
-pub const RIO_DEV_DEL: u32 = 1075866904;
-pub const VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES: u32 = 3223606797;
-pub const VIDIOC_SUBDEV_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const SONYPI_IOCSFAN: u32 = 1073837579;
-pub const SPIOCSTYPE: u32 = 1074295041;
-pub const IPMICTL_REGISTER_FOR_CMD: u32 = 2147641614;
-pub const I8K_GET_FAN: u32 = 3221776774;
-pub const TUNGETVNETBE: u32 = 2147767519;
-pub const AUTOFS_DEV_IOCTL_FAIL: u32 = 3222836087;
-pub const UI_END_FF_UPLOAD: u32 = 1080579529;
-pub const TOSH_SMM: u32 = 3222828176;
-pub const SONYPI_IOCGBAT2REM: u32 = 2147644933;
-pub const F2FS_IOC_GET_COMPRESS_BLOCKS: u32 = 2148070673;
-pub const PPPIOCSNPMODE: u32 = 1074295883;
-pub const USBDEVFS_CONTROL: u32 = 3222820096;
-pub const HIDIOCGUSAGE: u32 = 3222816779;
-pub const TUNSETTXFILTER: u32 = 1074025681;
-pub const TUNGETVNETLE: u32 = 2147767517;
-pub const VIDIOC_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const BTRFS_IOC_INO_PATHS: u32 = 3224933411;
-pub const MGSL_IOCGXSYNC: u32 = 27924;
-pub const HIDIOCGFIELDINFO: u32 = 3224913930;
-pub const VIDIOC_SUBDEV_G_STD: u32 = 2148029975;
-pub const I2OVALIDATE: u32 = 2147772680;
-pub const VIDIOC_TRY_ENCODER_CMD: u32 = 3223869006;
-pub const NILFS_IOCTL_GET_CPINFO: u32 = 2149084802;
-pub const VIDIOC_G_FREQUENCY: u32 = 3224131128;
-pub const VFAT_IOCTL_READDIR_SHORT: u32 = 2184212994;
-pub const ND_IOCTL_GET_CONFIG_DATA: u32 = 3222031877;
-pub const F2FS_IOC_RESERVE_COMPRESS_BLOCKS: u32 = 2148070675;
-pub const FDGETDRVSTAT: u32 = 2152727058;
-pub const SYNC_IOC_MERGE: u32 = 3224387075;
-pub const VIDIOC_S_DV_TIMINGS: u32 = 3229898327;
-pub const PPPIOCBRIDGECHAN: u32 = 1074033717;
-pub const LIRC_SET_SEND_MODE: u32 = 1074030865;
-pub const RIO_ENABLE_PORTWRITE_RANGE: u32 = 1074818315;
-pub const ATM_GETTYPE: u32 = 1074815364;
-pub const PHN_GETREGS: u32 = 3223875591;
-pub const FDSETEMSGTRESH: u32 = 586;
-pub const NILFS_IOCTL_GET_VINFO: u32 = 3222826630;
-pub const MGSL_IOCWAITEVENT: u32 = 3221515528;
-pub const CAPI_INSTALLED: u32 = 2147631906;
-pub const EVIOCGMASK: u32 = 2148550034;
-pub const BTRFS_IOC_SUBVOL_GETFLAGS: u32 = 2148045849;
-pub const FSL_HV_IOCTL_PARTITION_GET_STATUS: u32 = 3222056706;
-pub const MEDIA_IOC_ENUM_ENTITIES: u32 = 3238034433;
-pub const GSMIOC_GETFIRST: u32 = 2147763972;
-pub const FW_CDEV_IOC_FLUSH_ISO: u32 = 1074012952;
-pub const VIDIOC_DBG_G_CHIP_INFO: u32 = 3234354790;
-pub const F2FS_IOC_RELEASE_VOLATILE_WRITE: u32 = 62724;
-pub const CAPI_GET_SERIAL: u32 = 3221504776;
-pub const FDSETDRVPRM: u32 = 1082131088;
-pub const IOC_OPAL_SAVE: u32 = 1092120796;
-pub const VIDIOC_G_DV_TIMINGS: u32 = 3229898328;
-pub const TUNSETIFINDEX: u32 = 1074025690;
-pub const CCISS_SETINTINFO: u32 = 1074283011;
-pub const CM_IOSDBGLVL: u32 = 1074291706;
-pub const RTC_VL_CLR: u32 = 28692;
-pub const VIDIOC_REQBUFS: u32 = 3222558216;
-pub const USBDEVFS_REAPURBNDELAY32: u32 = 1074025741;
-pub const TEE_IOC_SHM_REGISTER: u32 = 3222840329;
-pub const USBDEVFS_SETCONFIGURATION: u32 = 2147767557;
-pub const CCISS_GETNODENAME: u32 = 2148549124;
-pub const VIDIOC_SUBDEV_S_FRAME_INTERVAL: u32 = 3224393238;
-pub const VIDIOC_ENUM_FRAMESIZES: u32 = 3224131146;
-pub const VFIO_DEVICE_PCI_HOT_RESET: u32 = 15217;
-pub const FW_CDEV_IOC_SEND_BROADCAST_REQUEST: u32 = 1076372242;
-pub const LPSETTIMEOUT_NEW: u32 = 1074791951;
-pub const RIO_CM_MPORT_GET_LIST: u32 = 3221512971;
-pub const FW_CDEV_IOC_QUEUE_ISO: u32 = 3222807305;
-pub const FDRAWCMD: u32 = 600;
-pub const SCIF_UNREG: u32 = 3222303497;
-pub const PPPIOCGIDLE64: u32 = 2148561983;
-pub const USBDEVFS_RELEASEINTERFACE: u32 = 2147767568;
-pub const VIDIOC_CROPCAP: u32 = 3224131130;
-pub const DFL_FPGA_PORT_GET_INFO: u32 = 46657;
-pub const PHN_SET_REGS: u32 = 1074294787;
-pub const ATMLEC_DATA: u32 = 25041;
-pub const PPPOEIOCDFWD: u32 = 45313;
-pub const VIDIOC_S_SELECTION: u32 = 3225441887;
-pub const SNAPSHOT_FREE_SWAP_PAGES: u32 = 13065;
-pub const BTRFS_IOC_LOGICAL_INO: u32 = 3224933412;
-pub const VIDIOC_S_CTRL: u32 = 3221771804;
-pub const ZATM_SETPOOL: u32 = 1074815331;
-pub const MTIOCPOS: u32 = 2148035843;
-pub const PMU_IOC_SLEEP: u32 = 16896;
-pub const AUTOFS_DEV_IOCTL_PROTOSUBVER: u32 = 3222836083;
-pub const VBG_IOCTL_CHANGE_FILTER_MASK: u32 = 3223344652;
-pub const NILFS_IOCTL_GET_SUSTAT: u32 = 2150657669;
-pub const VIDIOC_QUERYCAP: u32 = 2154321408;
-pub const HPET_INFO: u32 = 2149083139;
-pub const VIDIOC_AM437X_CCDC_CFG: u32 = 1074288321;
-pub const DM_LIST_DEVICES: u32 = 3241737474;
-pub const TUNSETOWNER: u32 = 1074025676;
-pub const VBG_IOCTL_CHANGE_GUEST_CAPABILITIES: u32 = 3223344654;
-pub const RNDADDENTROPY: u32 = 1074287107;
-pub const USBDEVFS_RESET: u32 = 21780;
-pub const BTRFS_IOC_SUBVOL_CREATE: u32 = 1342215182;
-pub const USBDEVFS_FORBID_SUSPEND: u32 = 21793;
-pub const FDGETDRVTYP: u32 = 2148532751;
-pub const PPWCONTROL: u32 = 1073836164;
-pub const VIDIOC_ENUM_FRAMEINTERVALS: u32 = 3224655435;
-pub const KCOV_DISABLE: u32 = 25445;
-pub const IOC_OPAL_ACTIVATE_LSP: u32 = 1092120799;
-pub const VHOST_VDPA_GET_IOVA_RANGE: u32 = 2148577144;
-pub const PPPIOCSPASS: u32 = 1074820167;
-pub const RIO_CM_CHAN_CONNECT: u32 = 1074291464;
-pub const I2OSWDEL: u32 = 3224398087;
-pub const FS_IOC_SET_ENCRYPTION_POLICY: u32 = 2148296211;
-pub const IOC_OPAL_MBR_DONE: u32 = 1091596521;
-pub const PPPIOCSMAXCID: u32 = 1074033745;
-pub const PPSETPHASE: u32 = 1074032788;
-pub const VHOST_VDPA_SET_VRING_ENABLE: u32 = 1074311029;
-pub const USBDEVFS_GET_SPEED: u32 = 21791;
-pub const SONET_GETFRAMING: u32 = 2147770646;
-pub const VIDIOC_QUERYBUF: u32 = 3227014665;
-pub const VIDIOC_S_EDID: u32 = 3223868969;
-pub const BTRFS_IOC_QGROUP_ASSIGN: u32 = 1075352617;
-pub const PPS_GETCAP: u32 = 2148036771;
-pub const SNAPSHOT_PLATFORM_SUPPORT: u32 = 13071;
-pub const LIRC_SET_REC_TIMEOUT_REPORTS: u32 = 1074030873;
-pub const SCIF_GET_NODEIDS: u32 = 3222827790;
-pub const NBD_DISCONNECT: u32 = 43784;
-pub const VIDIOC_SUBDEV_G_FRAME_INTERVAL: u32 = 3224393237;
-pub const VFIO_IOMMU_DISABLE: u32 = 15220;
-pub const SNAPSHOT_CREATE_IMAGE: u32 = 1074017041;
-pub const SNAPSHOT_POWER_OFF: u32 = 13072;
-pub const APM_IOC_STANDBY: u32 = 16641;
-pub const PPPIOCGUNIT: u32 = 2147775574;
-pub const AUTOFS_IOC_EXPIRE_MULTI: u32 = 1074041702;
-pub const SCIF_BIND: u32 = 3221779201;
-pub const IOC_WATCH_QUEUE_SET_SIZE: u32 = 22368;
-pub const NILFS_IOCTL_CHANGE_CPMODE: u32 = 1074818688;
-pub const IOC_OPAL_LOCK_UNLOCK: u32 = 1092120797;
-pub const F2FS_IOC_SET_PIN_FILE: u32 = 1074066701;
-pub const PPPIOCGRASYNCMAP: u32 = 2147775573;
-pub const MMTIMER_MMAPAVAIL: u32 = 27910;
-pub const I2OPASSTHRU32: u32 = 2148034828;
-pub const DFL_FPGA_FME_PORT_RELEASE: u32 = 1074050689;
-pub const VIDIOC_SUBDEV_QUERY_DV_TIMINGS: u32 = 2156156515;
-pub const UI_SET_SNDBIT: u32 = 1074025834;
-pub const VIDIOC_G_AUDOUT: u32 = 2150913585;
-pub const RTC_PLL_SET: u32 = 1075867666;
-pub const VIDIOC_ENUMAUDIO: u32 = 3224655425;
-pub const AUTOFS_DEV_IOCTL_TIMEOUT: u32 = 3222836090;
-pub const VBG_IOCTL_DRIVER_VERSION_INFO: u32 = 3224131072;
-pub const VHOST_SCSI_GET_EVENTS_MISSED: u32 = 1074048836;
-pub const VHOST_SET_VRING_ADDR: u32 = 1076408081;
-pub const VDUSE_CREATE_DEV: u32 = 1095794946;
-pub const FDFLUSH: u32 = 587;
-pub const VBG_IOCTL_WAIT_FOR_EVENTS: u32 = 3223344650;
-pub const DFL_FPGA_FME_ERR_SET_IRQ: u32 = 1074312836;
-pub const F2FS_IOC_GET_PIN_FILE: u32 = 2147808526;
-pub const SCIF_CONNECT: u32 = 3221779203;
-pub const BLKREPORTZONE: u32 = 3222278786;
-pub const AUTOFS_IOC_ASKUMOUNT: u32 = 2147783536;
-pub const ATM_ADDPARTY: u32 = 1074815476;
-pub const FDSETPRM: u32 = 1075839554;
-pub const ATM_GETSTATZ: u32 = 1074815313;
-pub const ISST_IF_MSR_COMMAND: u32 = 3221814788;
-pub const BTRFS_IOC_GET_SUBVOL_INFO: u32 = 2180551740;
-pub const VIDIOC_UNSUBSCRIBE_EVENT: u32 = 1075861083;
-pub const SEV_ISSUE_CMD: u32 = 3222295296;
-pub const GPIOHANDLE_SET_LINE_VALUES_IOCTL: u32 = 3225465865;
-pub const PCITEST_COPY: u32 = 1074286598;
-pub const IPMICTL_GET_MY_ADDRESS_CMD: u32 = 2147772690;
-pub const CHIOGPICKER: u32 = 2147771140;
-pub const CAPI_NCCI_OPENCOUNT: u32 = 2147762982;
-pub const CXL_MEM_SEND_COMMAND: u32 = 3224423938;
-pub const PERF_EVENT_IOC_SET_FILTER: u32 = 1074275334;
-pub const IOC_OPAL_REVERT_TPR: u32 = 1091072226;
-pub const CHIOGVPARAMS: u32 = 2154849043;
-pub const PTP_PEROUT_REQUEST: u32 = 1077427459;
-pub const FSI_SCOM_CHECK: u32 = 2147775232;
-pub const RTC_IRQP_READ: u32 = 2148036619;
-pub const RIO_MPORT_MAINT_READ_LOCAL: u32 = 2149084421;
-pub const HIDIOCGRDESCSIZE: u32 = 2147764225;
-pub const UI_GET_VERSION: u32 = 2147767597;
-pub const NILFS_IOCTL_GET_CPSTAT: u32 = 2149084803;
-pub const CCISS_GETBUSTYPES: u32 = 2147762695;
-pub const VFIO_IOMMU_SPAPR_TCE_CREATE: u32 = 15223;
-pub const VIDIOC_EXPBUF: u32 = 3225441808;
-pub const UI_SET_RELBIT: u32 = 1074025830;
-pub const VFIO_SET_IOMMU: u32 = 15206;
-pub const VIDIOC_S_MODULATOR: u32 = 1078220343;
-pub const TUNGETFILTER: u32 = 2148553947;
-pub const MEYEIOC_SYNC: u32 = 3221518019;
-pub const CCISS_SETNODENAME: u32 = 1074807301;
-pub const FBIO_GETCONTROL2: u32 = 2148025993;
-pub const TUNSETDEBUG: u32 = 1074025673;
-pub const DM_DEV_REMOVE: u32 = 3241737476;
-pub const HIDIOCSUSAGES: u32 = 1344030740;
-pub const FS_IOC_ADD_ENCRYPTION_KEY: u32 = 3226494487;
-pub const FBIOGET_VBLANK: u32 = 2149598738;
-pub const ATM_GETSTAT: u32 = 1074815312;
-pub const VIDIOC_G_JPEGCOMP: u32 = 2156680765;
-pub const TUNATTACHFILTER: u32 = 1074812117;
-pub const UI_SET_ABSBIT: u32 = 1074025831;
-pub const DFL_FPGA_PORT_ERR_GET_IRQ_NUM: u32 = 2147792453;
-pub const USBDEVFS_REAPURB32: u32 = 1074025740;
-pub const BTRFS_IOC_TRANS_END: u32 = 37895;
-pub const CAPI_REGISTER: u32 = 1074545409;
-pub const F2FS_IOC_COMPRESS_FILE: u32 = 62744;
-pub const USBDEVFS_DISCARDURB: u32 = 21771;
-pub const HE_GET_REG: u32 = 1074815328;
-pub const ATM_SETLOOP: u32 = 1074815315;
-pub const ATMSIGD_CTRL: u32 = 25072;
-pub const CIOC_KERNEL_VERSION: u32 = 3221775114;
-pub const BTRFS_IOC_CLONE_RANGE: u32 = 1075876877;
-pub const SNAPSHOT_UNFREEZE: u32 = 13058;
-pub const F2FS_IOC_START_VOLATILE_WRITE: u32 = 62723;
-pub const PMU_IOC_HAS_ADB: u32 = 2148024836;
-pub const I2OGETIOPS: u32 = 2149607680;
-pub const VIDIOC_S_FBUF: u32 = 1076909579;
-pub const PPRCONTROL: u32 = 2147577987;
-pub const CHIOSPICKER: u32 = 1074029317;
-pub const VFIO_IOMMU_SPAPR_REGISTER_MEMORY: u32 = 15221;
-pub const TUNGETSNDBUF: u32 = 2147767507;
-pub const GSMIOC_SETCONF: u32 = 1078740737;
-pub const IOC_PR_PREEMPT: u32 = 1075343563;
-pub const KCOV_INIT_TRACE: u32 = 2148033281;
-pub const SONYPI_IOCGBAT1CAP: u32 = 2147644930;
-pub const SWITCHTEC_IOCTL_FLASH_INFO: u32 = 2148554560;
-pub const MTIOCTOP: u32 = 1074294017;
-pub const VHOST_VDPA_SET_STATUS: u32 = 1073852274;
-pub const VHOST_SCSI_SET_EVENTS_MISSED: u32 = 1074048835;
-pub const VFIO_IOMMU_DIRTY_PAGES: u32 = 15221;
-pub const BTRFS_IOC_SCRUB_PROGRESS: u32 = 3288372253;
-pub const PPPIOCGMRU: u32 = 2147775571;
-pub const BTRFS_IOC_DEV_REPLACE: u32 = 3391657013;
-pub const PPPIOCGFLAGS: u32 = 2147775578;
-pub const NILFS_IOCTL_SET_SUINFO: u32 = 1075342989;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER2: u32 = 3222807316;
-pub const ATM_DELLECSADDR: u32 = 1074815375;
-pub const FW_CDEV_IOC_GET_SPEED: u32 = 8977;
-pub const PPPIOCGIDLE32: u32 = 2148037695;
-pub const VFIO_DEVICE_RESET: u32 = 15215;
-pub const GPIO_GET_LINEINFO_UNWATCH_IOCTL: u32 = 3221533708;
-pub const WDIOC_GETSTATUS: u32 = 2147768065;
-pub const BTRFS_IOC_SET_FEATURES: u32 = 1076925497;
-pub const IOCTL_MEI_CONNECT_CLIENT: u32 = 3222292481;
-pub const VIDIOC_OMAP3ISP_AEWB_CFG: u32 = 3223344835;
-pub const PCITEST_READ: u32 = 1074286597;
-pub const VFIO_GROUP_GET_STATUS: u32 = 15207;
-pub const MATROXFB_GET_ALL_OUTPUTS: u32 = 2148036347;
-pub const USBDEVFS_CLEAR_HALT: u32 = 2147767573;
-pub const VIDIOC_DECODER_CMD: u32 = 3225966176;
-pub const VIDIOC_G_AUDIO: u32 = 2150913569;
-pub const CCISS_RESCANDISK: u32 = 16912;
-pub const RIO_DISABLE_PORTWRITE_RANGE: u32 = 1074818316;
-pub const IOC_OPAL_SECURE_ERASE_LR: u32 = 1091596519;
-pub const USBDEVFS_REAPURB: u32 = 1074287884;
-pub const DFL_FPGA_CHECK_EXTENSION: u32 = 46593;
-pub const AUTOFS_IOC_PROTOVER: u32 = 2147783523;
-pub const FSL_HV_IOCTL_MEMCPY: u32 = 3223891717;
-pub const BTRFS_IOC_GET_FEATURES: u32 = 2149094457;
-pub const PCITEST_MSIX: u32 = 1074024455;
-pub const BTRFS_IOC_DEFRAG_RANGE: u32 = 1076925456;
-pub const UI_BEGIN_FF_ERASE: u32 = 3222033866;
-pub const DM_GET_TARGET_VERSION: u32 = 3241737489;
-pub const PPPIOCGIDLE: u32 = 2148561983;
-pub const NVRAM_SETCKS: u32 = 28737;
-pub const WDIOC_GETSUPPORT: u32 = 2150127360;
-pub const GSMIOC_ENABLE_NET: u32 = 1077167874;
-pub const GPIO_GET_CHIPINFO_IOCTL: u32 = 2151986177;
-pub const NE_ADD_VCPU: u32 = 3221532193;
-pub const EVIOCSKEYCODE_V2: u32 = 1076380932;
-pub const PTP_SYS_OFFSET_EXTENDED2: u32 = 3300932882;
-pub const SCIF_FENCE_WAIT: u32 = 3221517072;
-pub const RIO_TRANSFER: u32 = 3222826261;
-pub const FSL_HV_IOCTL_DOORBELL: u32 = 3221794566;
-pub const RIO_MPORT_MAINT_WRITE_LOCAL: u32 = 1075342598;
-pub const I2OEVTREG: u32 = 1074555146;
-pub const I2OPARMGET: u32 = 3223873796;
-pub const EVIOCGID: u32 = 2148025602;
-pub const BTRFS_IOC_QGROUP_CREATE: u32 = 1074828330;
-pub const AUTOFS_DEV_IOCTL_SETPIPEFD: u32 = 3222836088;
-pub const VIDIOC_S_PARM: u32 = 3234616854;
-pub const TUNSETSTEERINGEBPF: u32 = 2147767520;
-pub const ATM_GETNAMES: u32 = 1074815363;
-pub const VIDIOC_QUERYMENU: u32 = 3224131109;
-pub const DFL_FPGA_PORT_DMA_UNMAP: u32 = 46660;
-pub const I2OLCTGET: u32 = 3222825218;
-pub const FS_IOC_GET_ENCRYPTION_PWSALT: u32 = 1074816532;
-pub const NS_SETBUFLEV: u32 = 1074815330;
-pub const BLKCLOSEZONE: u32 = 1074795143;
-pub const SONET_GETFRSENSE: u32 = 2147901719;
-pub const UI_SET_EVBIT: u32 = 1074025828;
-pub const DM_LIST_VERSIONS: u32 = 3241737485;
-pub const HIDIOCGSTRING: u32 = 2164541444;
-pub const PPPIOCATTCHAN: u32 = 1074033720;
-pub const VDUSE_DEV_SET_CONFIG: u32 = 1074299154;
-pub const TUNGETFEATURES: u32 = 2147767503;
-pub const VFIO_GROUP_UNSET_CONTAINER: u32 = 15209;
-pub const IPMICTL_SET_MY_ADDRESS_CMD: u32 = 2147772689;
-pub const CCISS_REGNEWDISK: u32 = 1074020877;
-pub const VIDIOC_QUERY_DV_TIMINGS: u32 = 2156156515;
-pub const PHN_SETREGS: u32 = 1076391944;
-pub const FAT_IOCTL_GET_ATTRIBUTES: u32 = 2147774992;
-pub const FSL_MC_SEND_MC_COMMAND: u32 = 3225440992;
-pub const TUNGETIFF: u32 = 2147767506;
-pub const PTP_CLOCK_GETCAPS2: u32 = 2152742154;
-pub const BTRFS_IOC_RESIZE: u32 = 1342215171;
-pub const VHOST_SET_VRING_ENDIAN: u32 = 1074310931;
-pub const PPS_KC_BIND: u32 = 1074294949;
-pub const F2FS_IOC_WRITE_CHECKPOINT: u32 = 62727;
-pub const UI_SET_FFBIT: u32 = 1074025835;
-pub const IPMICTL_GET_MY_LUN_CMD: u32 = 2147772692;
-pub const CEC_ADAP_G_PHYS_ADDR: u32 = 2147639553;
-pub const CEC_G_MODE: u32 = 2147770632;
-pub const USBDEVFS_RESETEP: u32 = 2147767555;
-pub const MEDIA_REQUEST_IOC_QUEUE: u32 = 31872;
-pub const USBDEVFS_ALLOC_STREAMS: u32 = 2148029724;
-pub const MGSL_IOCSXCTRL: u32 = 27925;
-pub const MEDIA_IOC_G_TOPOLOGY: u32 = 3225975812;
-pub const PPPIOCUNBRIDGECHAN: u32 = 29748;
-pub const F2FS_IOC_COMMIT_ATOMIC_WRITE: u32 = 62722;
-pub const ISST_IF_GET_PLATFORM_INFO: u32 = 2148072960;
-pub const SCIF_FENCE_MARK: u32 = 3222303503;
-pub const USBDEVFS_RELEASE_PORT: u32 = 2147767577;
-pub const VFIO_CHECK_EXTENSION: u32 = 15205;
-pub const BTRFS_IOC_QGROUP_LIMIT: u32 = 2150667307;
-pub const FAT_IOCTL_GET_VOLUME_ID: u32 = 2147774995;
-pub const UI_SET_PHYS: u32 = 1074287980;
-pub const FDWERRORGET: u32 = 2150105623;
-pub const VIDIOC_SUBDEV_G_EDID: u32 = 3223868968;
-pub const MGSL_IOCGSTATS: u32 = 27911;
-pub const RPROC_SET_SHUTDOWN_ON_RELEASE: u32 = 1074050817;
-pub const SIOCGSTAMP_NEW: u32 = 2148567302;
-pub const RTC_WKALM_RD: u32 = 2150133776;
-pub const PHN_GET_REG: u32 = 3221778432;
-pub const DELL_WMI_SMBIOS_CMD: u32 = 3224655616;
-pub const PHN_NOT_OH: u32 = 28676;
-pub const PPGETMODES: u32 = 2147774615;
-pub const CHIOGPARAMS: u32 = 2148819718;
-pub const VFIO_DEVICE_GET_GFX_DMABUF: u32 = 15219;
-pub const VHOST_SET_VRING_BUSYLOOP_TIMEOUT: u32 = 1074310947;
-pub const VIDIOC_SUBDEV_G_SELECTION: u32 = 3225441853;
-pub const BTRFS_IOC_RM_DEV_V2: u32 = 1342215226;
-pub const MGSL_IOCWAITGPIO: u32 = 3222301970;
-pub const PMU_IOC_CAN_SLEEP: u32 = 2148024837;
-pub const KCOV_ENABLE: u32 = 25444;
-pub const BTRFS_IOC_CLONE: u32 = 1074041865;
-pub const F2FS_IOC_DEFRAGMENT: u32 = 3222336776;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE: u32 = 1074012942;
-pub const AGPIOC_ALLOCATE: u32 = 3221766406;
-pub const NE_SET_USER_MEMORY_REGION: u32 = 1075359267;
-pub const MGSL_IOCTXABORT: u32 = 27910;
-pub const MGSL_IOCSGPIO: u32 = 1074818320;
-pub const LIRC_SET_REC_CARRIER: u32 = 1074030868;
-pub const F2FS_IOC_FLUSH_DEVICE: u32 = 1074328842;
-pub const SNAPSHOT_ATOMIC_RESTORE: u32 = 13060;
-pub const RTC_UIE_OFF: u32 = 28676;
-pub const BT_BMC_IOCTL_SMS_ATN: u32 = 45312;
-pub const NVME_IOCTL_ID: u32 = 20032;
-pub const NE_START_ENCLAVE: u32 = 3222318628;
-pub const VIDIOC_STREAMON: u32 = 1074026002;
-pub const FDPOLLDRVSTAT: u32 = 2152727059;
-pub const AUTOFS_DEV_IOCTL_READY: u32 = 3222836086;
-pub const VIDIOC_ENUMAUDOUT: u32 = 3224655426;
-pub const VIDIOC_SUBDEV_S_STD: u32 = 1074288152;
-pub const WDIOC_GETTIMELEFT: u32 = 2147768074;
-pub const ATM_GETLINKRATE: u32 = 1074815361;
-pub const RTC_WKALM_SET: u32 = 1076391951;
-pub const VHOST_GET_BACKEND_FEATURES: u32 = 2148052774;
-pub const ATMARP_ENCAP: u32 = 25061;
-pub const CAPI_GET_FLAGS: u32 = 2147762979;
-pub const IPMICTL_SET_MY_CHANNEL_ADDRESS_CMD: u32 = 2147772696;
-pub const DFL_FPGA_FME_PORT_ASSIGN: u32 = 1074050690;
-pub const NS_GET_OWNER_UID: u32 = 46852;
-pub const VIDIOC_OVERLAY: u32 = 1074025998;
-pub const BTRFS_IOC_WAIT_SYNC: u32 = 1074304022;
-pub const GPIOHANDLE_SET_CONFIG_IOCTL: u32 = 3226776586;
-pub const VHOST_GET_VRING_ENDIAN: u32 = 1074310932;
-pub const ATM_GETADDR: u32 = 1074815366;
-pub const PHN_GET_REGS: u32 = 3221778434;
-pub const AUTOFS_DEV_IOCTL_REQUESTER: u32 = 3222836091;
-pub const AUTOFS_DEV_IOCTL_EXPIRE: u32 = 3222836092;
-pub const SNAPSHOT_S2RAM: u32 = 13067;
-pub const JSIOCSAXMAP: u32 = 1077963313;
-pub const F2FS_IOC_SET_COMPRESS_OPTION: u32 = 1073935638;
-pub const VBG_IOCTL_HGCM_DISCONNECT: u32 = 3223082501;
-pub const SCIF_FENCE_SIGNAL: u32 = 3223876369;
-pub const VFIO_DEVICE_GET_PCI_HOT_RESET_INFO: u32 = 15216;
-pub const VIDIOC_SUBDEV_ENUM_MBUS_CODE: u32 = 3224393218;
-pub const MMTIMER_GETOFFSET: u32 = 27904;
-pub const RIO_CM_CHAN_LISTEN: u32 = 1073898246;
-pub const ATM_SETSC: u32 = 1074029041;
-pub const F2FS_IOC_SHUTDOWN: u32 = 2147768445;
-pub const NVME_IOCTL_RESCAN: u32 = 20038;
-pub const BLKOPENZONE: u32 = 1074795142;
-pub const DM_VERSION: u32 = 3241737472;
-pub const CEC_TRANSMIT: u32 = 3224920325;
-pub const FS_IOC_GET_ENCRYPTION_POLICY_EX: u32 = 3221841430;
-pub const SIOCMKCLIP: u32 = 25056;
-pub const IPMI_BMC_IOCTL_CLEAR_SMS_ATN: u32 = 45313;
-pub const HIDIOCGVERSION: u32 = 2147764225;
-pub const VIDIOC_S_INPUT: u32 = 3221509671;
-pub const VIDIOC_G_CROP: u32 = 3222558267;
-pub const LIRC_SET_WIDEBAND_RECEIVER: u32 = 1074030883;
-pub const EVIOCGEFFECTS: u32 = 2147763588;
-pub const UVCIOC_CTRL_QUERY: u32 = 3222304033;
-pub const IOC_OPAL_GENERIC_TABLE_RW: u32 = 1094217963;
-pub const FS_IOC_READ_VERITY_METADATA: u32 = 3223873159;
-pub const ND_IOCTL_SET_CONFIG_DATA: u32 = 3221769734;
-pub const USBDEVFS_GETDRIVER: u32 = 1090802952;
-pub const IDT77105_GETSTAT: u32 = 1074815282;
-pub const HIDIOCINITREPORT: u32 = 18437;
-pub const VFIO_DEVICE_GET_INFO: u32 = 15211;
-pub const RIO_CM_CHAN_RECEIVE: u32 = 3222299402;
-pub const RNDGETENTCNT: u32 = 2147766784;
-pub const PPPIOCNEWUNIT: u32 = 3221517374;
-pub const BTRFS_IOC_INO_LOOKUP: u32 = 3489698834;
-pub const FDRESET: u32 = 596;
-pub const IOC_PR_REGISTER: u32 = 1075343560;
-pub const HIDIOCSREPORT: u32 = 1074546696;
-pub const TEE_IOC_OPEN_SESSION: u32 = 2148574210;
-pub const TEE_IOC_SUPPL_RECV: u32 = 2148574214;
-pub const BTRFS_IOC_BALANCE_CTL: u32 = 1074041889;
-pub const GPIO_GET_LINEINFO_WATCH_IOCTL: u32 = 3225990155;
-pub const HIDIOCGRAWINFO: u32 = 2148026371;
-pub const PPPIOCSCOMPRESS: u32 = 1074820173;
-pub const USBDEVFS_CONNECTINFO: u32 = 1074287889;
-pub const BLKRESETZONE: u32 = 1074795139;
-pub const CHIOINITELEM: u32 = 25361;
-pub const NILFS_IOCTL_SET_ALLOC_RANGE: u32 = 1074818700;
-pub const AUTOFS_DEV_IOCTL_CATATONIC: u32 = 3222836089;
-pub const RIO_MPORT_MAINT_HDID_SET: u32 = 1073900801;
-pub const PPGETPHASE: u32 = 2147774617;
-pub const USBDEVFS_DISCONNECT_CLAIM: u32 = 2164806939;
-pub const FDMSGON: u32 = 581;
-pub const VIDIOC_G_SLICED_VBI_CAP: u32 = 3228849733;
-pub const BTRFS_IOC_BALANCE_V2: u32 = 3288372256;
-pub const MEDIA_REQUEST_IOC_REINIT: u32 = 31873;
-pub const IOC_OPAL_ERASE_LR: u32 = 1091596518;
-pub const FDFMTBEG: u32 = 583;
-pub const RNDRESEEDCRNG: u32 = 20999;
-pub const ISST_IF_GET_PHY_ID: u32 = 3221814785;
-pub const TUNSETNOCSUM: u32 = 1074025672;
-pub const SONET_GETSTAT: u32 = 2149867792;
-pub const TFD_IOC_SET_TICKS: u32 = 1074287616;
-pub const PPDATADIR: u32 = 1074032784;
-pub const IOC_OPAL_ENABLE_DISABLE_MBR: u32 = 1091596517;
-pub const GPIO_V2_GET_LINE_IOCTL: u32 = 3260068871;
-pub const RIO_CM_CHAN_SEND: u32 = 1074815753;
-pub const PPWCTLONIRQ: u32 = 1073836178;
-pub const SONYPI_IOCGBRT: u32 = 2147579392;
-pub const IOC_PR_RELEASE: u32 = 1074819274;
-pub const PPCLRIRQ: u32 = 2147774611;
-pub const IPMICTL_SET_MY_CHANNEL_LUN_CMD: u32 = 2147772698;
-pub const MGSL_IOCSXSYNC: u32 = 27923;
-pub const HPET_IE_OFF: u32 = 26626;
-pub const IOC_OPAL_ACTIVATE_USR: u32 = 1091596513;
-pub const SONET_SETFRAMING: u32 = 1074028821;
-pub const PERF_EVENT_IOC_PAUSE_OUTPUT: u32 = 1074013193;
-pub const BTRFS_IOC_LOGICAL_INO_V2: u32 = 3224933435;
-pub const VBG_IOCTL_HGCM_CONNECT: u32 = 3231471108;
-pub const BLKFINISHZONE: u32 = 1074795144;
-pub const EVIOCREVOKE: u32 = 1074021777;
-pub const VFIO_DEVICE_FEATURE: u32 = 15221;
-pub const CCISS_GETPCIINFO: u32 = 2148024833;
-pub const ISST_IF_MBOX_COMMAND: u32 = 3221814787;
-pub const SCIF_ACCEPTREQ: u32 = 3222303492;
-pub const PERF_EVENT_IOC_QUERY_BPF: u32 = 3221758986;
-pub const VIDIOC_STREAMOFF: u32 = 1074026003;
-pub const VDUSE_DESTROY_DEV: u32 = 1090552067;
-pub const FDGETFDCSTAT: u32 = 2150105621;
-pub const CM_IOCGATR: u32 = 3221775105;
-pub const VIDIOC_S_PRIORITY: u32 = 1074026052;
-pub const SNAPSHOT_FREEZE: u32 = 13057;
-pub const VIDIOC_ENUMINPUT: u32 = 3226490394;
-pub const ZATM_GETPOOLZ: u32 = 1074815330;
-pub const RIO_DISABLE_DOORBELL_RANGE: u32 = 1074294026;
-pub const GPIO_V2_GET_LINEINFO_WATCH_IOCTL: u32 = 3238048774;
-pub const VIDIOC_G_STD: u32 = 2148029975;
-pub const USBDEVFS_ALLOW_SUSPEND: u32 = 21794;
-pub const SONET_GETSTATZ: u32 = 2149867793;
-pub const SCIF_ACCEPTREG: u32 = 3221779205;
-pub const VIDIOC_ENCODER_CMD: u32 = 3223869005;
-pub const PPPIOCSRASYNCMAP: u32 = 1074033748;
-pub const IOCTL_MEI_NOTIFY_SET: u32 = 1074022402;
-pub const BTRFS_IOC_QUOTA_RESCAN_STATUS: u32 = 2151715885;
-pub const F2FS_IOC_GARBAGE_COLLECT: u32 = 1074066694;
-pub const ATMLEC_CTRL: u32 = 25040;
-pub const MATROXFB_GET_AVAILABLE_OUTPUTS: u32 = 2148036345;
-pub const DM_DEV_CREATE: u32 = 3241737475;
-pub const VHOST_VDPA_GET_VRING_NUM: u32 = 2147659638;
-pub const VIDIOC_G_CTRL: u32 = 3221771803;
-pub const NBD_CLEAR_SOCK: u32 = 43780;
-pub const VFIO_DEVICE_QUERY_GFX_PLANE: u32 = 15218;
-pub const WDIOC_KEEPALIVE: u32 = 2147768069;
-pub const NVME_IOCTL_SUBSYS_RESET: u32 = 20037;
-pub const PTP_EXTTS_REQUEST2: u32 = 1074806027;
-pub const PCITEST_BAR: u32 = 20481;
-pub const MGSL_IOCGGPIO: u32 = 2148560145;
-pub const EVIOCSREP: u32 = 1074283779;
-pub const VFIO_DEVICE_GET_IRQ_INFO: u32 = 15213;
-pub const HPET_DPI: u32 = 26629;
-pub const VDUSE_VQ_SETUP_KICKFD: u32 = 1074299158;
-pub const ND_IOCTL_CALL: u32 = 3225439754;
-pub const HIDIOCGDEVINFO: u32 = 2149337091;
-pub const DM_TABLE_DEPS: u32 = 3241737483;
-pub const BTRFS_IOC_DEV_INFO: u32 = 3489698846;
-pub const VDUSE_IOTLB_GET_FD: u32 = 3223355664;
-pub const FW_CDEV_IOC_GET_INFO: u32 = 3223855872;
-pub const VIDIOC_G_PRIORITY: u32 = 2147767875;
-pub const ATM_NEWBACKENDIF: u32 = 1073897971;
-pub const VIDIOC_S_EXT_CTRLS: u32 = 3223344712;
-pub const VIDIOC_SUBDEV_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const VIDIOC_OMAP3ISP_CCDC_CFG: u32 = 3224917697;
-pub const VIDIOC_S_HW_FREQ_SEEK: u32 = 1076909650;
-pub const DM_TABLE_LOAD: u32 = 3241737481;
-pub const F2FS_IOC_START_ATOMIC_WRITE: u32 = 62721;
-pub const VIDIOC_G_OUTPUT: u32 = 2147767854;
-pub const ATM_DROPPARTY: u32 = 1074029045;
-pub const CHIOGELEM: u32 = 1080845072;
-pub const BTRFS_IOC_GET_SUPPORTED_FEATURES: u32 = 2152240185;
-pub const EVIOCSKEYCODE: u32 = 1074283780;
-pub const NE_GET_IMAGE_LOAD_INFO: u32 = 3222318626;
-pub const TUNSETLINK: u32 = 1074025677;
-pub const FW_CDEV_IOC_ADD_DESCRIPTOR: u32 = 3222807302;
-pub const BTRFS_IOC_SCRUB_CANCEL: u32 = 37916;
-pub const PPS_SETPARAMS: u32 = 1074294946;
-pub const IOC_OPAL_LR_SETUP: u32 = 1093169379;
-pub const FW_CDEV_IOC_DEALLOCATE: u32 = 1074012931;
-pub const WDIOC_SETTIMEOUT: u32 = 3221509894;
-pub const IOC_WATCH_QUEUE_SET_FILTER: u32 = 22369;
-pub const CAPI_GET_MANUFACTURER: u32 = 3221504774;
-pub const VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY: u32 = 15222;
-pub const ASPEED_P2A_CTRL_IOCTL_SET_WINDOW: u32 = 1074836224;
-pub const VIDIOC_G_EDID: u32 = 3223868968;
-pub const F2FS_IOC_GARBAGE_COLLECT_RANGE: u32 = 1075377419;
-pub const RIO_MAP_INBOUND: u32 = 3223874833;
-pub const IOC_OPAL_TAKE_OWNERSHIP: u32 = 1091072222;
-pub const USBDEVFS_CLAIM_PORT: u32 = 2147767576;
-pub const VIDIOC_S_AUDIO: u32 = 1077171746;
-pub const FS_IOC_GET_ENCRYPTION_NONCE: u32 = 2148558363;
-pub const FW_CDEV_IOC_SEND_STREAM_PACKET: u32 = 1076372243;
-pub const BTRFS_IOC_SNAP_DESTROY: u32 = 1342215183;
-pub const SNAPSHOT_FREE: u32 = 13061;
-pub const I8K_GET_SPEED: u32 = 3221776773;
-pub const HIDIOCGREPORT: u32 = 1074546695;
-pub const HPET_EPI: u32 = 26628;
-pub const JSIOCSCORR: u32 = 1076128289;
-pub const IOC_PR_PREEMPT_ABORT: u32 = 1075343564;
-pub const RIO_MAP_OUTBOUND: u32 = 3223874831;
-pub const ATM_SETESI: u32 = 1074815372;
-pub const FW_CDEV_IOC_START_ISO: u32 = 1074799370;
-pub const ATM_DELADDR: u32 = 1074815369;
-pub const PPFCONTROL: u32 = 1073901710;
-pub const SONYPI_IOCGFAN: u32 = 2147579402;
-pub const RTC_IRQP_SET: u32 = 1074294796;
-pub const PCITEST_WRITE: u32 = 1074286596;
-pub const PPCLAIM: u32 = 28811;
-pub const VIDIOC_S_JPEGCOMP: u32 = 1082938942;
-pub const IPMICTL_UNREGISTER_FOR_CMD: u32 = 2147641615;
-pub const VHOST_SET_FEATURES: u32 = 1074310912;
-pub const TOSHIBA_ACPI_SCI: u32 = 3222828177;
-pub const VIDIOC_DQBUF: u32 = 3227014673;
-pub const BTRFS_IOC_BALANCE_PROGRESS: u32 = 2214630434;
-pub const BTRFS_IOC_SUBVOL_SETFLAGS: u32 = 1074304026;
-pub const ATMLEC_MCAST: u32 = 25042;
-pub const MMTIMER_GETFREQ: u32 = 2148035842;
-pub const VIDIOC_G_SELECTION: u32 = 3225441886;
-pub const RTC_ALM_SET: u32 = 1076129799;
-pub const PPPOEIOCSFWD: u32 = 1074311424;
-pub const IPMICTL_GET_MAINTENANCE_MODE_CMD: u32 = 2147772702;
-pub const FS_IOC_ENABLE_VERITY: u32 = 1082156677;
-pub const NILFS_IOCTL_GET_BDESCS: u32 = 3222826631;
-pub const FDFMTEND: u32 = 585;
-pub const DMA_BUF_SET_NAME: u32 = 1074291201;
-pub const UI_BEGIN_FF_UPLOAD: u32 = 3228063176;
-pub const RTC_UIE_ON: u32 = 28675;
-pub const PPRELEASE: u32 = 28812;
-pub const VFIO_IOMMU_UNMAP_DMA: u32 = 15218;
-pub const VIDIOC_OMAP3ISP_PRV_CFG: u32 = 3228587714;
-pub const GPIO_GET_LINEHANDLE_IOCTL: u32 = 3245126659;
-pub const VFAT_IOCTL_READDIR_BOTH: u32 = 2184212993;
-pub const NVME_IOCTL_ADMIN_CMD: u32 = 3225964097;
-pub const VHOST_SET_VRING_KICK: u32 = 1074310944;
-pub const BTRFS_IOC_SUBVOL_CREATE_V2: u32 = 1342215192;
-pub const BTRFS_IOC_SNAP_CREATE: u32 = 1342215169;
-pub const SONYPI_IOCGBAT2CAP: u32 = 2147644932;
-pub const PPNEGOT: u32 = 1074032785;
-pub const NBD_PRINT_DEBUG: u32 = 43782;
-pub const BTRFS_IOC_INO_LOOKUP_USER: u32 = 3489698878;
-pub const BTRFS_IOC_GET_SUBVOL_ROOTREF: u32 = 3489698877;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS: u32 = 3225445913;
-pub const BTRFS_IOC_FS_INFO: u32 = 2214630431;
-pub const VIDIOC_ENUM_FMT: u32 = 3225441794;
-pub const VIDIOC_G_INPUT: u32 = 2147767846;
-pub const VTPM_PROXY_IOC_NEW_DEV: u32 = 3222577408;
-pub const DFL_FPGA_FME_ERR_GET_IRQ_NUM: u32 = 2147792515;
-pub const ND_IOCTL_DIMM_FLAGS: u32 = 3221769731;
-pub const BTRFS_IOC_QUOTA_RESCAN: u32 = 1077974060;
-pub const MMTIMER_GETCOUNTER: u32 = 2148035849;
-pub const MATROXFB_GET_OUTPUT_MODE: u32 = 3221778170;
-pub const BTRFS_IOC_QUOTA_RESCAN_WAIT: u32 = 37934;
-pub const RIO_CM_CHAN_BIND: u32 = 1074291461;
-pub const HIDIOCGRDESC: u32 = 2416199682;
-pub const MGSL_IOCGIF: u32 = 27915;
-pub const VIDIOC_S_OUTPUT: u32 = 3221509679;
-pub const HIDIOCGREPORTINFO: u32 = 3222030345;
-pub const WDIOC_GETBOOTSTATUS: u32 = 2147768066;
-pub const VDUSE_VQ_GET_INFO: u32 = 3224404245;
-pub const ACRN_IOCTL_ASSIGN_PCIDEV: u32 = 1076142677;
-pub const BLKGETDISKSEQ: u32 = 2148012672;
-pub const ACRN_IOCTL_PM_GET_CPU_STATE: u32 = 3221791328;
-pub const ACRN_IOCTL_DESTROY_VM: u32 = 41489;
-pub const ACRN_IOCTL_SET_PTDEV_INTR: u32 = 1075094099;
-pub const ACRN_IOCTL_CREATE_IOREQ_CLIENT: u32 = 41522;
-pub const ACRN_IOCTL_IRQFD: u32 = 1075356273;
-pub const ACRN_IOCTL_CREATE_VM: u32 = 3224412688;
-pub const ACRN_IOCTL_INJECT_MSI: u32 = 1074831907;
-pub const ACRN_IOCTL_ATTACH_IOREQ_CLIENT: u32 = 41523;
-pub const ACRN_IOCTL_RESET_PTDEV_INTR: u32 = 1075094100;
-pub const ACRN_IOCTL_NOTIFY_REQUEST_FINISH: u32 = 1074307633;
-pub const ACRN_IOCTL_SET_IRQLINE: u32 = 1074307621;
-pub const ACRN_IOCTL_START_VM: u32 = 41490;
-pub const ACRN_IOCTL_SET_VCPU_REGS: u32 = 1093181974;
-pub const ACRN_IOCTL_SET_MEMSEG: u32 = 1075880513;
-pub const ACRN_IOCTL_PAUSE_VM: u32 = 41491;
-pub const ACRN_IOCTL_CLEAR_VM_IOREQ: u32 = 41525;
-pub const ACRN_IOCTL_UNSET_MEMSEG: u32 = 1075880514;
-pub const ACRN_IOCTL_IOEVENTFD: u32 = 1075880560;
-pub const ACRN_IOCTL_DEASSIGN_PCIDEV: u32 = 1076142678;
-pub const ACRN_IOCTL_RESET_VM: u32 = 41493;
-pub const ACRN_IOCTL_DESTROY_IOREQ_CLIENT: u32 = 41524;
-pub const ACRN_IOCTL_VM_INTR_MONITOR: u32 = 1074307620;
diff --git a/vendor/linux-raw-sys-0.3.2/src/x32/netlink.rs b/vendor/linux-raw-sys-0.3.2/src/x32/netlink.rs
deleted file mode 100644
index c7a78aa1c..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/x32/netlink.rs
+++ /dev/null
@@ -1,2861 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const __BITS_PER_LONG: u32 = 32;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const NETLINK_ROUTE: u32 = 0;
-pub const NETLINK_UNUSED: u32 = 1;
-pub const NETLINK_USERSOCK: u32 = 2;
-pub const NETLINK_FIREWALL: u32 = 3;
-pub const NETLINK_SOCK_DIAG: u32 = 4;
-pub const NETLINK_NFLOG: u32 = 5;
-pub const NETLINK_XFRM: u32 = 6;
-pub const NETLINK_SELINUX: u32 = 7;
-pub const NETLINK_ISCSI: u32 = 8;
-pub const NETLINK_AUDIT: u32 = 9;
-pub const NETLINK_FIB_LOOKUP: u32 = 10;
-pub const NETLINK_CONNECTOR: u32 = 11;
-pub const NETLINK_NETFILTER: u32 = 12;
-pub const NETLINK_IP6_FW: u32 = 13;
-pub const NETLINK_DNRTMSG: u32 = 14;
-pub const NETLINK_KOBJECT_UEVENT: u32 = 15;
-pub const NETLINK_GENERIC: u32 = 16;
-pub const NETLINK_SCSITRANSPORT: u32 = 18;
-pub const NETLINK_ECRYPTFS: u32 = 19;
-pub const NETLINK_RDMA: u32 = 20;
-pub const NETLINK_CRYPTO: u32 = 21;
-pub const NETLINK_SMC: u32 = 22;
-pub const NETLINK_INET_DIAG: u32 = 4;
-pub const MAX_LINKS: u32 = 32;
-pub const NLM_F_REQUEST: u32 = 1;
-pub const NLM_F_MULTI: u32 = 2;
-pub const NLM_F_ACK: u32 = 4;
-pub const NLM_F_ECHO: u32 = 8;
-pub const NLM_F_DUMP_INTR: u32 = 16;
-pub const NLM_F_DUMP_FILTERED: u32 = 32;
-pub const NLM_F_ROOT: u32 = 256;
-pub const NLM_F_MATCH: u32 = 512;
-pub const NLM_F_ATOMIC: u32 = 1024;
-pub const NLM_F_DUMP: u32 = 768;
-pub const NLM_F_REPLACE: u32 = 256;
-pub const NLM_F_EXCL: u32 = 512;
-pub const NLM_F_CREATE: u32 = 1024;
-pub const NLM_F_APPEND: u32 = 2048;
-pub const NLM_F_NONREC: u32 = 256;
-pub const NLM_F_BULK: u32 = 512;
-pub const NLM_F_CAPPED: u32 = 256;
-pub const NLM_F_ACK_TLVS: u32 = 512;
-pub const NLMSG_ALIGNTO: u32 = 4;
-pub const NLMSG_NOOP: u32 = 1;
-pub const NLMSG_ERROR: u32 = 2;
-pub const NLMSG_DONE: u32 = 3;
-pub const NLMSG_OVERRUN: u32 = 4;
-pub const NLMSG_MIN_TYPE: u32 = 16;
-pub const NETLINK_ADD_MEMBERSHIP: u32 = 1;
-pub const NETLINK_DROP_MEMBERSHIP: u32 = 2;
-pub const NETLINK_PKTINFO: u32 = 3;
-pub const NETLINK_BROADCAST_ERROR: u32 = 4;
-pub const NETLINK_NO_ENOBUFS: u32 = 5;
-pub const NETLINK_RX_RING: u32 = 6;
-pub const NETLINK_TX_RING: u32 = 7;
-pub const NETLINK_LISTEN_ALL_NSID: u32 = 8;
-pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9;
-pub const NETLINK_CAP_ACK: u32 = 10;
-pub const NETLINK_EXT_ACK: u32 = 11;
-pub const NETLINK_GET_STRICT_CHK: u32 = 12;
-pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4;
-pub const NET_MAJOR: u32 = 36;
-pub const NLA_F_NESTED: u32 = 32768;
-pub const NLA_F_NET_BYTEORDER: u32 = 16384;
-pub const NLA_TYPE_MASK: i32 = -49153;
-pub const NLA_ALIGNTO: u32 = 4;
-pub const MACVLAN_FLAG_NOPROMISC: u32 = 1;
-pub const MACVLAN_FLAG_NODST: u32 = 2;
-pub const IPVLAN_F_PRIVATE: u32 = 1;
-pub const IPVLAN_F_VEPA: u32 = 2;
-pub const TUNNEL_MSG_FLAG_STATS: u32 = 1;
-pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1;
-pub const MAX_VLAN_LIST_LEN: u32 = 1;
-pub const PORT_PROFILE_MAX: u32 = 40;
-pub const PORT_UUID_MAX: u32 = 16;
-pub const PORT_SELF_VF: i32 = -1;
-pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1;
-pub const XDP_FLAGS_SKB_MODE: u32 = 2;
-pub const XDP_FLAGS_DRV_MODE: u32 = 4;
-pub const XDP_FLAGS_HW_MODE: u32 = 8;
-pub const XDP_FLAGS_REPLACE: u32 = 16;
-pub const XDP_FLAGS_MODES: u32 = 14;
-pub const XDP_FLAGS_MASK: u32 = 31;
-pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1;
-pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32;
-pub const IFA_F_SECONDARY: u32 = 1;
-pub const IFA_F_TEMPORARY: u32 = 1;
-pub const IFA_F_NODAD: u32 = 2;
-pub const IFA_F_OPTIMISTIC: u32 = 4;
-pub const IFA_F_DADFAILED: u32 = 8;
-pub const IFA_F_HOMEADDRESS: u32 = 16;
-pub const IFA_F_DEPRECATED: u32 = 32;
-pub const IFA_F_TENTATIVE: u32 = 64;
-pub const IFA_F_PERMANENT: u32 = 128;
-pub const IFA_F_MANAGETEMPADDR: u32 = 256;
-pub const IFA_F_NOPREFIXROUTE: u32 = 512;
-pub const IFA_F_MCAUTOJOIN: u32 = 1024;
-pub const IFA_F_STABLE_PRIVACY: u32 = 2048;
-pub const IFAPROT_UNSPEC: u32 = 0;
-pub const IFAPROT_KERNEL_LO: u32 = 1;
-pub const IFAPROT_KERNEL_RA: u32 = 2;
-pub const IFAPROT_KERNEL_LL: u32 = 3;
-pub const NTF_USE: u32 = 1;
-pub const NTF_SELF: u32 = 2;
-pub const NTF_MASTER: u32 = 4;
-pub const NTF_PROXY: u32 = 8;
-pub const NTF_EXT_LEARNED: u32 = 16;
-pub const NTF_OFFLOADED: u32 = 32;
-pub const NTF_STICKY: u32 = 64;
-pub const NTF_ROUTER: u32 = 128;
-pub const NTF_EXT_MANAGED: u32 = 1;
-pub const NTF_EXT_LOCKED: u32 = 2;
-pub const NUD_INCOMPLETE: u32 = 1;
-pub const NUD_REACHABLE: u32 = 2;
-pub const NUD_STALE: u32 = 4;
-pub const NUD_DELAY: u32 = 8;
-pub const NUD_PROBE: u32 = 16;
-pub const NUD_FAILED: u32 = 32;
-pub const NUD_NOARP: u32 = 64;
-pub const NUD_PERMANENT: u32 = 128;
-pub const NUD_NONE: u32 = 0;
-pub const RTNL_FAMILY_IPMR: u32 = 128;
-pub const RTNL_FAMILY_IP6MR: u32 = 129;
-pub const RTNL_FAMILY_MAX: u32 = 129;
-pub const RTA_ALIGNTO: u32 = 4;
-pub const RTPROT_UNSPEC: u32 = 0;
-pub const RTPROT_REDIRECT: u32 = 1;
-pub const RTPROT_KERNEL: u32 = 2;
-pub const RTPROT_BOOT: u32 = 3;
-pub const RTPROT_STATIC: u32 = 4;
-pub const RTPROT_GATED: u32 = 8;
-pub const RTPROT_RA: u32 = 9;
-pub const RTPROT_MRT: u32 = 10;
-pub const RTPROT_ZEBRA: u32 = 11;
-pub const RTPROT_BIRD: u32 = 12;
-pub const RTPROT_DNROUTED: u32 = 13;
-pub const RTPROT_XORP: u32 = 14;
-pub const RTPROT_NTK: u32 = 15;
-pub const RTPROT_DHCP: u32 = 16;
-pub const RTPROT_MROUTED: u32 = 17;
-pub const RTPROT_KEEPALIVED: u32 = 18;
-pub const RTPROT_BABEL: u32 = 42;
-pub const RTPROT_OPENR: u32 = 99;
-pub const RTPROT_BGP: u32 = 186;
-pub const RTPROT_ISIS: u32 = 187;
-pub const RTPROT_OSPF: u32 = 188;
-pub const RTPROT_RIP: u32 = 189;
-pub const RTPROT_EIGRP: u32 = 192;
-pub const RTM_F_NOTIFY: u32 = 256;
-pub const RTM_F_CLONED: u32 = 512;
-pub const RTM_F_EQUALIZE: u32 = 1024;
-pub const RTM_F_PREFIX: u32 = 2048;
-pub const RTM_F_LOOKUP_TABLE: u32 = 4096;
-pub const RTM_F_FIB_MATCH: u32 = 8192;
-pub const RTM_F_OFFLOAD: u32 = 16384;
-pub const RTM_F_TRAP: u32 = 32768;
-pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912;
-pub const RTNH_F_DEAD: u32 = 1;
-pub const RTNH_F_PERVASIVE: u32 = 2;
-pub const RTNH_F_ONLINK: u32 = 4;
-pub const RTNH_F_OFFLOAD: u32 = 8;
-pub const RTNH_F_LINKDOWN: u32 = 16;
-pub const RTNH_F_UNRESOLVED: u32 = 32;
-pub const RTNH_F_TRAP: u32 = 64;
-pub const RTNH_COMPARE_MASK: u32 = 89;
-pub const RTNH_ALIGNTO: u32 = 4;
-pub const RTNETLINK_HAVE_PEERINFO: u32 = 1;
-pub const RTAX_FEATURE_ECN: u32 = 1;
-pub const RTAX_FEATURE_SACK: u32 = 2;
-pub const RTAX_FEATURE_TIMESTAMP: u32 = 4;
-pub const RTAX_FEATURE_ALLFRAG: u32 = 8;
-pub const RTAX_FEATURE_MASK: u32 = 15;
-pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295;
-pub const TCA_DUMP_FLAGS_TERSE: u32 = 1;
-pub const RTMGRP_LINK: u32 = 1;
-pub const RTMGRP_NOTIFY: u32 = 2;
-pub const RTMGRP_NEIGH: u32 = 4;
-pub const RTMGRP_TC: u32 = 8;
-pub const RTMGRP_IPV4_IFADDR: u32 = 16;
-pub const RTMGRP_IPV4_MROUTE: u32 = 32;
-pub const RTMGRP_IPV4_ROUTE: u32 = 64;
-pub const RTMGRP_IPV4_RULE: u32 = 128;
-pub const RTMGRP_IPV6_IFADDR: u32 = 256;
-pub const RTMGRP_IPV6_MROUTE: u32 = 512;
-pub const RTMGRP_IPV6_ROUTE: u32 = 1024;
-pub const RTMGRP_IPV6_IFINFO: u32 = 2048;
-pub const RTMGRP_DECnet_IFADDR: u32 = 4096;
-pub const RTMGRP_DECnet_ROUTE: u32 = 16384;
-pub const RTMGRP_IPV6_PREFIX: u32 = 131072;
-pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2;
-pub const RTEXT_FILTER_VF: u32 = 1;
-pub const RTEXT_FILTER_BRVLAN: u32 = 2;
-pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4;
-pub const RTEXT_FILTER_SKIP_STATS: u32 = 8;
-pub const RTEXT_FILTER_MRP: u32 = 16;
-pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32;
-pub const RTEXT_FILTER_CFM_STATUS: u32 = 64;
-pub const RTEXT_FILTER_MST: u32 = 128;
-pub type size_t = crate::ctypes::c_uint;
-pub type ssize_t = crate::ctypes::c_int;
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 32usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_long_t = crate::ctypes::c_longlong;
-pub type __kernel_ulong_t = crate::ctypes::c_ulonglong;
-pub type __kernel_old_uid_t = crate::ctypes::c_ushort;
-pub type __kernel_old_gid_t = crate::ctypes::c_ushort;
-pub type __kernel_old_dev_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_size_t = crate::ctypes::c_uint;
-pub type __kernel_ssize_t = crate::ctypes::c_int;
-pub type __kernel_ptrdiff_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_nl {
-pub nl_family: __kernel_sa_family_t,
-pub nl_pad: crate::ctypes::c_ushort,
-pub nl_pid: __u32,
-pub nl_groups: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsghdr {
-pub nlmsg_len: __u32,
-pub nlmsg_type: __u16,
-pub nlmsg_flags: __u16,
-pub nlmsg_seq: __u32,
-pub nlmsg_pid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsgerr {
-pub error: crate::ctypes::c_int,
-pub msg: nlmsghdr,
-}
-impl nlmsgerr_attrs {
-pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nlmsgerr_attrs {
-NLMSGERR_ATTR_UNUSED = 0,
-NLMSGERR_ATTR_MSG = 1,
-NLMSGERR_ATTR_OFFS = 2,
-NLMSGERR_ATTR_COOKIE = 3,
-NLMSGERR_ATTR_POLICY = 4,
-NLMSGERR_ATTR_MISS_TYPE = 5,
-NLMSGERR_ATTR_MISS_NEST = 6,
-__NLMSGERR_ATTR_MAX = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_pktinfo {
-pub group: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_req {
-pub nm_block_size: crate::ctypes::c_uint,
-pub nm_block_nr: crate::ctypes::c_uint,
-pub nm_frame_size: crate::ctypes::c_uint,
-pub nm_frame_nr: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_hdr {
-pub nm_status: crate::ctypes::c_uint,
-pub nm_len: crate::ctypes::c_uint,
-pub nm_group: __u32,
-pub nm_pid: __u32,
-pub nm_uid: __u32,
-pub nm_gid: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nl_mmap_status {
-NL_MMAP_STATUS_UNUSED = 0,
-NL_MMAP_STATUS_RESERVED = 1,
-NL_MMAP_STATUS_VALID = 2,
-NL_MMAP_STATUS_COPY = 3,
-NL_MMAP_STATUS_SKIP = 4,
-}
-pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED;
-pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-NETLINK_UNCONNECTED = 0,
-NETLINK_CONNECTED = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlattr {
-pub nla_len: __u16,
-pub nla_type: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nla_bitfield32 {
-pub value: __u32,
-pub selector: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_attribute_type {
-NL_ATTR_TYPE_INVALID = 0,
-NL_ATTR_TYPE_FLAG = 1,
-NL_ATTR_TYPE_U8 = 2,
-NL_ATTR_TYPE_U16 = 3,
-NL_ATTR_TYPE_U32 = 4,
-NL_ATTR_TYPE_U64 = 5,
-NL_ATTR_TYPE_S8 = 6,
-NL_ATTR_TYPE_S16 = 7,
-NL_ATTR_TYPE_S32 = 8,
-NL_ATTR_TYPE_S64 = 9,
-NL_ATTR_TYPE_BINARY = 10,
-NL_ATTR_TYPE_STRING = 11,
-NL_ATTR_TYPE_NUL_STRING = 12,
-NL_ATTR_TYPE_NESTED = 13,
-NL_ATTR_TYPE_NESTED_ARRAY = 14,
-NL_ATTR_TYPE_BITFIELD32 = 15,
-}
-impl netlink_policy_type_attr {
-pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_policy_type_attr {
-NL_POLICY_TYPE_ATTR_UNSPEC = 0,
-NL_POLICY_TYPE_ATTR_TYPE = 1,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5,
-NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6,
-NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7,
-NL_POLICY_TYPE_ATTR_POLICY_IDX = 8,
-NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9,
-NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10,
-NL_POLICY_TYPE_ATTR_PAD = 11,
-NL_POLICY_TYPE_ATTR_MASK = 12,
-__NL_POLICY_TYPE_ATTR_MAX = 13,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats {
-pub rx_packets: __u32,
-pub tx_packets: __u32,
-pub rx_bytes: __u32,
-pub tx_bytes: __u32,
-pub rx_errors: __u32,
-pub tx_errors: __u32,
-pub rx_dropped: __u32,
-pub tx_dropped: __u32,
-pub multicast: __u32,
-pub collisions: __u32,
-pub rx_length_errors: __u32,
-pub rx_over_errors: __u32,
-pub rx_crc_errors: __u32,
-pub rx_frame_errors: __u32,
-pub rx_fifo_errors: __u32,
-pub rx_missed_errors: __u32,
-pub tx_aborted_errors: __u32,
-pub tx_carrier_errors: __u32,
-pub tx_fifo_errors: __u32,
-pub tx_heartbeat_errors: __u32,
-pub tx_window_errors: __u32,
-pub rx_compressed: __u32,
-pub tx_compressed: __u32,
-pub rx_nohandler: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-pub collisions: __u64,
-pub rx_length_errors: __u64,
-pub rx_over_errors: __u64,
-pub rx_crc_errors: __u64,
-pub rx_frame_errors: __u64,
-pub rx_fifo_errors: __u64,
-pub rx_missed_errors: __u64,
-pub tx_aborted_errors: __u64,
-pub tx_carrier_errors: __u64,
-pub tx_fifo_errors: __u64,
-pub tx_heartbeat_errors: __u64,
-pub tx_window_errors: __u64,
-pub rx_compressed: __u64,
-pub tx_compressed: __u64,
-pub rx_nohandler: __u64,
-pub rx_otherhost_dropped: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_hw_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_ifmap {
-pub mem_start: __u64,
-pub mem_end: __u64,
-pub base_addr: __u64,
-pub irq: __u16,
-pub dma: __u8,
-pub port: __u8,
-}
-pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC;
-pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS;
-pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST;
-pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME;
-pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU;
-pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK;
-pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC;
-pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS;
-pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST;
-pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY;
-pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER;
-pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS;
-pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO;
-pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN;
-pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP;
-pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT;
-pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE;
-pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE;
-pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO;
-pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID;
-pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS;
-pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF;
-pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST;
-pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64;
-pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS;
-pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF;
-pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC;
-pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP;
-pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD;
-pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK;
-pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY;
-pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES;
-pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES;
-pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER;
-pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID;
-pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES;
-pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID;
-pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID;
-pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME;
-pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN;
-pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS;
-pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE;
-pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD;
-pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP;
-pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT;
-pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID;
-pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT;
-pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT;
-pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX;
-pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU;
-pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU;
-pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST;
-pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME;
-pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS;
-pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON;
-pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME;
-pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME;
-pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS;
-pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI;
-pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT;
-pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IFLA_UNSPEC = 0,
-IFLA_ADDRESS = 1,
-IFLA_BROADCAST = 2,
-IFLA_IFNAME = 3,
-IFLA_MTU = 4,
-IFLA_LINK = 5,
-IFLA_QDISC = 6,
-IFLA_STATS = 7,
-IFLA_COST = 8,
-IFLA_PRIORITY = 9,
-IFLA_MASTER = 10,
-IFLA_WIRELESS = 11,
-IFLA_PROTINFO = 12,
-IFLA_TXQLEN = 13,
-IFLA_MAP = 14,
-IFLA_WEIGHT = 15,
-IFLA_OPERSTATE = 16,
-IFLA_LINKMODE = 17,
-IFLA_LINKINFO = 18,
-IFLA_NET_NS_PID = 19,
-IFLA_IFALIAS = 20,
-IFLA_NUM_VF = 21,
-IFLA_VFINFO_LIST = 22,
-IFLA_STATS64 = 23,
-IFLA_VF_PORTS = 24,
-IFLA_PORT_SELF = 25,
-IFLA_AF_SPEC = 26,
-IFLA_GROUP = 27,
-IFLA_NET_NS_FD = 28,
-IFLA_EXT_MASK = 29,
-IFLA_PROMISCUITY = 30,
-IFLA_NUM_TX_QUEUES = 31,
-IFLA_NUM_RX_QUEUES = 32,
-IFLA_CARRIER = 33,
-IFLA_PHYS_PORT_ID = 34,
-IFLA_CARRIER_CHANGES = 35,
-IFLA_PHYS_SWITCH_ID = 36,
-IFLA_LINK_NETNSID = 37,
-IFLA_PHYS_PORT_NAME = 38,
-IFLA_PROTO_DOWN = 39,
-IFLA_GSO_MAX_SEGS = 40,
-IFLA_GSO_MAX_SIZE = 41,
-IFLA_PAD = 42,
-IFLA_XDP = 43,
-IFLA_EVENT = 44,
-IFLA_NEW_NETNSID = 45,
-IFLA_IF_NETNSID = 46,
-IFLA_CARRIER_UP_COUNT = 47,
-IFLA_CARRIER_DOWN_COUNT = 48,
-IFLA_NEW_IFINDEX = 49,
-IFLA_MIN_MTU = 50,
-IFLA_MAX_MTU = 51,
-IFLA_PROP_LIST = 52,
-IFLA_ALT_IFNAME = 53,
-IFLA_PERM_ADDRESS = 54,
-IFLA_PROTO_DOWN_REASON = 55,
-IFLA_PARENT_DEV_NAME = 56,
-IFLA_PARENT_DEV_BUS_NAME = 57,
-IFLA_GRO_MAX_SIZE = 58,
-IFLA_TSO_MAX_SIZE = 59,
-IFLA_TSO_MAX_SEGS = 60,
-IFLA_ALLMULTI = 61,
-IFLA_DEVLINK_PORT = 62,
-__IFLA_MAX = 63,
-}
-pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC;
-pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK;
-pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT;
-pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-IFLA_PROTO_DOWN_REASON_UNSPEC = 0,
-IFLA_PROTO_DOWN_REASON_MASK = 1,
-IFLA_PROTO_DOWN_REASON_VALUE = 2,
-__IFLA_PROTO_DOWN_REASON_CNT = 3,
-}
-pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC;
-pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF;
-pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-IFLA_INET_UNSPEC = 0,
-IFLA_INET_CONF = 1,
-__IFLA_INET_MAX = 2,
-}
-pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC;
-pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS;
-pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF;
-pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS;
-pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST;
-pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO;
-pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS;
-pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN;
-pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE;
-pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU;
-pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-IFLA_INET6_UNSPEC = 0,
-IFLA_INET6_FLAGS = 1,
-IFLA_INET6_CONF = 2,
-IFLA_INET6_STATS = 3,
-IFLA_INET6_MCAST = 4,
-IFLA_INET6_CACHEINFO = 5,
-IFLA_INET6_ICMP6STATS = 6,
-IFLA_INET6_TOKEN = 7,
-IFLA_INET6_ADDR_GEN_MODE = 8,
-IFLA_INET6_RA_MTU = 9,
-__IFLA_INET6_MAX = 10,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum in6_addr_gen_mode {
-IN6_ADDR_GEN_MODE_EUI64 = 0,
-IN6_ADDR_GEN_MODE_NONE = 1,
-IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2,
-IN6_ADDR_GEN_MODE_RANDOM = 3,
-}
-pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC;
-pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY;
-pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME;
-pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE;
-pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME;
-pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE;
-pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY;
-pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING;
-pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL;
-pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK;
-pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID;
-pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID;
-pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT;
-pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST;
-pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE;
-pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED;
-pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER;
-pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER;
-pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER;
-pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER;
-pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR;
-pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH;
-pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER;
-pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING;
-pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR;
-pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER;
-pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY;
-pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX;
-pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT;
-pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL;
-pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL;
-pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL;
-pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL;
-pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL;
-pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES;
-pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES;
-pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES;
-pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID;
-pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD;
-pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED;
-pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED;
-pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION;
-pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION;
-pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT;
-pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT;
-pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE;
-pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-IFLA_BR_UNSPEC = 0,
-IFLA_BR_FORWARD_DELAY = 1,
-IFLA_BR_HELLO_TIME = 2,
-IFLA_BR_MAX_AGE = 3,
-IFLA_BR_AGEING_TIME = 4,
-IFLA_BR_STP_STATE = 5,
-IFLA_BR_PRIORITY = 6,
-IFLA_BR_VLAN_FILTERING = 7,
-IFLA_BR_VLAN_PROTOCOL = 8,
-IFLA_BR_GROUP_FWD_MASK = 9,
-IFLA_BR_ROOT_ID = 10,
-IFLA_BR_BRIDGE_ID = 11,
-IFLA_BR_ROOT_PORT = 12,
-IFLA_BR_ROOT_PATH_COST = 13,
-IFLA_BR_TOPOLOGY_CHANGE = 14,
-IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 15,
-IFLA_BR_HELLO_TIMER = 16,
-IFLA_BR_TCN_TIMER = 17,
-IFLA_BR_TOPOLOGY_CHANGE_TIMER = 18,
-IFLA_BR_GC_TIMER = 19,
-IFLA_BR_GROUP_ADDR = 20,
-IFLA_BR_FDB_FLUSH = 21,
-IFLA_BR_MCAST_ROUTER = 22,
-IFLA_BR_MCAST_SNOOPING = 23,
-IFLA_BR_MCAST_QUERY_USE_IFADDR = 24,
-IFLA_BR_MCAST_QUERIER = 25,
-IFLA_BR_MCAST_HASH_ELASTICITY = 26,
-IFLA_BR_MCAST_HASH_MAX = 27,
-IFLA_BR_MCAST_LAST_MEMBER_CNT = 28,
-IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29,
-IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30,
-IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31,
-IFLA_BR_MCAST_QUERIER_INTVL = 32,
-IFLA_BR_MCAST_QUERY_INTVL = 33,
-IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34,
-IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35,
-IFLA_BR_NF_CALL_IPTABLES = 36,
-IFLA_BR_NF_CALL_IP6TABLES = 37,
-IFLA_BR_NF_CALL_ARPTABLES = 38,
-IFLA_BR_VLAN_DEFAULT_PVID = 39,
-IFLA_BR_PAD = 40,
-IFLA_BR_VLAN_STATS_ENABLED = 41,
-IFLA_BR_MCAST_STATS_ENABLED = 42,
-IFLA_BR_MCAST_IGMP_VERSION = 43,
-IFLA_BR_MCAST_MLD_VERSION = 44,
-IFLA_BR_VLAN_STATS_PER_PORT = 45,
-IFLA_BR_MULTI_BOOLOPT = 46,
-IFLA_BR_MCAST_QUERIER_STATE = 47,
-__IFLA_BR_MAX = 48,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_bridge_id {
-pub prio: [__u8; 2usize],
-pub addr: [__u8; 6usize],
-}
-pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC;
-pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-BRIDGE_MODE_UNSPEC = 0,
-BRIDGE_MODE_HAIRPIN = 1,
-}
-pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC;
-pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE;
-pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY;
-pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST;
-pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE;
-pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD;
-pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT;
-pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE;
-pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING;
-pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD;
-pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP;
-pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC;
-pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI;
-pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID;
-pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID;
-pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT;
-pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST;
-pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID;
-pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO;
-pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK;
-pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING;
-pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER;
-pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER;
-pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER;
-pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH;
-pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER;
-pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD;
-pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD;
-pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST;
-pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL;
-pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD;
-pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK;
-pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS;
-pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED;
-pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT;
-pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN;
-pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT;
-pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED;
-pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB;
-pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IFLA_BRPORT_UNSPEC = 0,
-IFLA_BRPORT_STATE = 1,
-IFLA_BRPORT_PRIORITY = 2,
-IFLA_BRPORT_COST = 3,
-IFLA_BRPORT_MODE = 4,
-IFLA_BRPORT_GUARD = 5,
-IFLA_BRPORT_PROTECT = 6,
-IFLA_BRPORT_FAST_LEAVE = 7,
-IFLA_BRPORT_LEARNING = 8,
-IFLA_BRPORT_UNICAST_FLOOD = 9,
-IFLA_BRPORT_PROXYARP = 10,
-IFLA_BRPORT_LEARNING_SYNC = 11,
-IFLA_BRPORT_PROXYARP_WIFI = 12,
-IFLA_BRPORT_ROOT_ID = 13,
-IFLA_BRPORT_BRIDGE_ID = 14,
-IFLA_BRPORT_DESIGNATED_PORT = 15,
-IFLA_BRPORT_DESIGNATED_COST = 16,
-IFLA_BRPORT_ID = 17,
-IFLA_BRPORT_NO = 18,
-IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 19,
-IFLA_BRPORT_CONFIG_PENDING = 20,
-IFLA_BRPORT_MESSAGE_AGE_TIMER = 21,
-IFLA_BRPORT_FORWARD_DELAY_TIMER = 22,
-IFLA_BRPORT_HOLD_TIMER = 23,
-IFLA_BRPORT_FLUSH = 24,
-IFLA_BRPORT_MULTICAST_ROUTER = 25,
-IFLA_BRPORT_PAD = 26,
-IFLA_BRPORT_MCAST_FLOOD = 27,
-IFLA_BRPORT_MCAST_TO_UCAST = 28,
-IFLA_BRPORT_VLAN_TUNNEL = 29,
-IFLA_BRPORT_BCAST_FLOOD = 30,
-IFLA_BRPORT_GROUP_FWD_MASK = 31,
-IFLA_BRPORT_NEIGH_SUPPRESS = 32,
-IFLA_BRPORT_ISOLATED = 33,
-IFLA_BRPORT_BACKUP_PORT = 34,
-IFLA_BRPORT_MRP_RING_OPEN = 35,
-IFLA_BRPORT_MRP_IN_OPEN = 36,
-IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 37,
-IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 38,
-IFLA_BRPORT_LOCKED = 39,
-IFLA_BRPORT_MAB = 40,
-__IFLA_BRPORT_MAX = 41,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_cacheinfo {
-pub max_reasm_len: __u32,
-pub tstamp: __u32,
-pub reachable_time: __u32,
-pub retrans_time: __u32,
-}
-pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC;
-pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND;
-pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA;
-pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS;
-pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND;
-pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA;
-pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IFLA_INFO_UNSPEC = 0,
-IFLA_INFO_KIND = 1,
-IFLA_INFO_DATA = 2,
-IFLA_INFO_XSTATS = 3,
-IFLA_INFO_SLAVE_KIND = 4,
-IFLA_INFO_SLAVE_DATA = 5,
-__IFLA_INFO_MAX = 6,
-}
-pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC;
-pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID;
-pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS;
-pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS;
-pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS;
-pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL;
-pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IFLA_VLAN_UNSPEC = 0,
-IFLA_VLAN_ID = 1,
-IFLA_VLAN_FLAGS = 2,
-IFLA_VLAN_EGRESS_QOS = 3,
-IFLA_VLAN_INGRESS_QOS = 4,
-IFLA_VLAN_PROTOCOL = 5,
-__IFLA_VLAN_MAX = 6,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC;
-pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING;
-pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IFLA_VLAN_QOS_UNSPEC = 0,
-IFLA_VLAN_QOS_MAPPING = 1,
-__IFLA_VLAN_QOS_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_qos_mapping {
-pub from: __u32,
-pub to: __u32,
-}
-pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC;
-pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE;
-pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS;
-pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE;
-pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR;
-pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA;
-pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED;
-pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IFLA_MACVLAN_UNSPEC = 0,
-IFLA_MACVLAN_MODE = 1,
-IFLA_MACVLAN_FLAGS = 2,
-IFLA_MACVLAN_MACADDR_MODE = 3,
-IFLA_MACVLAN_MACADDR = 4,
-IFLA_MACVLAN_MACADDR_DATA = 5,
-IFLA_MACVLAN_MACADDR_COUNT = 6,
-IFLA_MACVLAN_BC_QUEUE_LEN = 7,
-IFLA_MACVLAN_BC_QUEUE_LEN_USED = 8,
-__IFLA_MACVLAN_MAX = 9,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_mode {
-MACVLAN_MODE_PRIVATE = 1,
-MACVLAN_MODE_VEPA = 2,
-MACVLAN_MODE_BRIDGE = 4,
-MACVLAN_MODE_PASSTHRU = 8,
-MACVLAN_MODE_SOURCE = 16,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_macaddr_mode {
-MACVLAN_MACADDR_ADD = 0,
-MACVLAN_MACADDR_DEL = 1,
-MACVLAN_MACADDR_FLUSH = 2,
-MACVLAN_MACADDR_SET = 3,
-}
-pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC;
-pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE;
-pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_13 {
-IFLA_VRF_UNSPEC = 0,
-IFLA_VRF_TABLE = 1,
-__IFLA_VRF_MAX = 2,
-}
-pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC;
-pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE;
-pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_14 {
-IFLA_VRF_PORT_UNSPEC = 0,
-IFLA_VRF_PORT_TABLE = 1,
-__IFLA_VRF_PORT_MAX = 2,
-}
-pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC;
-pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI;
-pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT;
-pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN;
-pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE;
-pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW;
-pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA;
-pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT;
-pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT;
-pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI;
-pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES;
-pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB;
-pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT;
-pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION;
-pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD;
-pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD;
-pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_15 {
-IFLA_MACSEC_UNSPEC = 0,
-IFLA_MACSEC_SCI = 1,
-IFLA_MACSEC_PORT = 2,
-IFLA_MACSEC_ICV_LEN = 3,
-IFLA_MACSEC_CIPHER_SUITE = 4,
-IFLA_MACSEC_WINDOW = 5,
-IFLA_MACSEC_ENCODING_SA = 6,
-IFLA_MACSEC_ENCRYPT = 7,
-IFLA_MACSEC_PROTECT = 8,
-IFLA_MACSEC_INC_SCI = 9,
-IFLA_MACSEC_ES = 10,
-IFLA_MACSEC_SCB = 11,
-IFLA_MACSEC_REPLAY_PROTECT = 12,
-IFLA_MACSEC_VALIDATION = 13,
-IFLA_MACSEC_PAD = 14,
-IFLA_MACSEC_OFFLOAD = 15,
-__IFLA_MACSEC_MAX = 16,
-}
-pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC;
-pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK;
-pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID;
-pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA;
-pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_16 {
-IFLA_XFRM_UNSPEC = 0,
-IFLA_XFRM_LINK = 1,
-IFLA_XFRM_IF_ID = 2,
-IFLA_XFRM_COLLECT_METADATA = 3,
-__IFLA_XFRM_MAX = 4,
-}
-impl macsec_validation_type {
-pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_validation_type {
-MACSEC_VALIDATE_DISABLED = 0,
-MACSEC_VALIDATE_CHECK = 1,
-MACSEC_VALIDATE_STRICT = 2,
-__MACSEC_VALIDATE_END = 3,
-}
-impl macsec_offload {
-pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_offload {
-MACSEC_OFFLOAD_OFF = 0,
-MACSEC_OFFLOAD_PHY = 1,
-MACSEC_OFFLOAD_MAC = 2,
-__MACSEC_OFFLOAD_END = 3,
-}
-pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC;
-pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE;
-pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS;
-pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_17 {
-IFLA_IPVLAN_UNSPEC = 0,
-IFLA_IPVLAN_MODE = 1,
-IFLA_IPVLAN_FLAGS = 2,
-__IFLA_IPVLAN_MAX = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ipvlan_mode {
-IPVLAN_MODE_L2 = 0,
-IPVLAN_MODE_L3 = 1,
-IPVLAN_MODE_L3S = 2,
-IPVLAN_MODE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tunnel_msg {
-pub family: __u8,
-pub flags: __u8,
-pub reserved2: __u16,
-pub ifindex: __u32,
-}
-pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC;
-pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD;
-pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_18 {
-VNIFILTER_ENTRY_STATS_UNSPEC = 0,
-VNIFILTER_ENTRY_STATS_RX_BYTES = 1,
-VNIFILTER_ENTRY_STATS_RX_PKTS = 2,
-VNIFILTER_ENTRY_STATS_RX_DROPS = 3,
-VNIFILTER_ENTRY_STATS_RX_ERRORS = 4,
-VNIFILTER_ENTRY_STATS_TX_BYTES = 5,
-VNIFILTER_ENTRY_STATS_TX_PKTS = 6,
-VNIFILTER_ENTRY_STATS_TX_DROPS = 7,
-VNIFILTER_ENTRY_STATS_TX_ERRORS = 8,
-VNIFILTER_ENTRY_STATS_PAD = 9,
-__VNIFILTER_ENTRY_STATS_MAX = 10,
-}
-pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START;
-pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6;
-pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS;
-pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_19 {
-VXLAN_VNIFILTER_ENTRY_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY_START = 1,
-VXLAN_VNIFILTER_ENTRY_END = 2,
-VXLAN_VNIFILTER_ENTRY_GROUP = 3,
-VXLAN_VNIFILTER_ENTRY_GROUP6 = 4,
-VXLAN_VNIFILTER_ENTRY_STATS = 5,
-__VXLAN_VNIFILTER_ENTRY_MAX = 6,
-}
-pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY;
-pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_20 {
-VXLAN_VNIFILTER_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY = 1,
-__VXLAN_VNIFILTER_MAX = 2,
-}
-pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC;
-pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID;
-pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP;
-pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK;
-pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL;
-pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL;
-pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS;
-pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING;
-pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING;
-pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT;
-pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE;
-pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY;
-pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC;
-pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS;
-pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS;
-pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT;
-pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6;
-pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6;
-pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX;
-pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX;
-pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX;
-pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP;
-pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL;
-pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA;
-pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL;
-pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE;
-pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT;
-pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF;
-pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER;
-pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_21 {
-IFLA_VXLAN_UNSPEC = 0,
-IFLA_VXLAN_ID = 1,
-IFLA_VXLAN_GROUP = 2,
-IFLA_VXLAN_LINK = 3,
-IFLA_VXLAN_LOCAL = 4,
-IFLA_VXLAN_TTL = 5,
-IFLA_VXLAN_TOS = 6,
-IFLA_VXLAN_LEARNING = 7,
-IFLA_VXLAN_AGEING = 8,
-IFLA_VXLAN_LIMIT = 9,
-IFLA_VXLAN_PORT_RANGE = 10,
-IFLA_VXLAN_PROXY = 11,
-IFLA_VXLAN_RSC = 12,
-IFLA_VXLAN_L2MISS = 13,
-IFLA_VXLAN_L3MISS = 14,
-IFLA_VXLAN_PORT = 15,
-IFLA_VXLAN_GROUP6 = 16,
-IFLA_VXLAN_LOCAL6 = 17,
-IFLA_VXLAN_UDP_CSUM = 18,
-IFLA_VXLAN_UDP_ZERO_CSUM6_TX = 19,
-IFLA_VXLAN_UDP_ZERO_CSUM6_RX = 20,
-IFLA_VXLAN_REMCSUM_TX = 21,
-IFLA_VXLAN_REMCSUM_RX = 22,
-IFLA_VXLAN_GBP = 23,
-IFLA_VXLAN_REMCSUM_NOPARTIAL = 24,
-IFLA_VXLAN_COLLECT_METADATA = 25,
-IFLA_VXLAN_LABEL = 26,
-IFLA_VXLAN_GPE = 27,
-IFLA_VXLAN_TTL_INHERIT = 28,
-IFLA_VXLAN_DF = 29,
-IFLA_VXLAN_VNIFILTER = 30,
-__IFLA_VXLAN_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vxlan_port_range {
-pub low: __be16,
-pub high: __be16,
-}
-impl ifla_vxlan_df {
-pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_vxlan_df {
-VXLAN_DF_UNSET = 0,
-VXLAN_DF_SET = 1,
-VXLAN_DF_INHERIT = 2,
-__VXLAN_DF_END = 3,
-}
-pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC;
-pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID;
-pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE;
-pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL;
-pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS;
-pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT;
-pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA;
-pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6;
-pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX;
-pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL;
-pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT;
-pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF;
-pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT;
-pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_22 {
-IFLA_GENEVE_UNSPEC = 0,
-IFLA_GENEVE_ID = 1,
-IFLA_GENEVE_REMOTE = 2,
-IFLA_GENEVE_TTL = 3,
-IFLA_GENEVE_TOS = 4,
-IFLA_GENEVE_PORT = 5,
-IFLA_GENEVE_COLLECT_METADATA = 6,
-IFLA_GENEVE_REMOTE6 = 7,
-IFLA_GENEVE_UDP_CSUM = 8,
-IFLA_GENEVE_UDP_ZERO_CSUM6_TX = 9,
-IFLA_GENEVE_UDP_ZERO_CSUM6_RX = 10,
-IFLA_GENEVE_LABEL = 11,
-IFLA_GENEVE_TTL_INHERIT = 12,
-IFLA_GENEVE_DF = 13,
-IFLA_GENEVE_INNER_PROTO_INHERIT = 14,
-__IFLA_GENEVE_MAX = 15,
-}
-impl ifla_geneve_df {
-pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_geneve_df {
-GENEVE_DF_UNSET = 0,
-GENEVE_DF_SET = 1,
-GENEVE_DF_INHERIT = 2,
-__GENEVE_DF_END = 3,
-}
-pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC;
-pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT;
-pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE;
-pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN;
-pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE;
-pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_23 {
-IFLA_BAREUDP_UNSPEC = 0,
-IFLA_BAREUDP_PORT = 1,
-IFLA_BAREUDP_ETHERTYPE = 2,
-IFLA_BAREUDP_SRCPORT_MIN = 3,
-IFLA_BAREUDP_MULTIPROTO_MODE = 4,
-__IFLA_BAREUDP_MAX = 5,
-}
-pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC;
-pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD;
-pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_24 {
-IFLA_PPP_UNSPEC = 0,
-IFLA_PPP_DEV_FD = 1,
-__IFLA_PPP_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_gtp_role {
-GTP_ROLE_GGSN = 0,
-GTP_ROLE_SGSN = 1,
-}
-pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC;
-pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0;
-pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1;
-pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE;
-pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE;
-pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS;
-pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT;
-pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_25 {
-IFLA_GTP_UNSPEC = 0,
-IFLA_GTP_FD0 = 1,
-IFLA_GTP_FD1 = 2,
-IFLA_GTP_PDP_HASHSIZE = 3,
-IFLA_GTP_ROLE = 4,
-IFLA_GTP_CREATE_SOCKETS = 5,
-IFLA_GTP_RESTART_COUNT = 6,
-__IFLA_GTP_MAX = 7,
-}
-pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC;
-pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE;
-pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE;
-pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON;
-pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY;
-pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY;
-pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER;
-pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL;
-pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET;
-pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE;
-pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS;
-pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY;
-pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT;
-pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC;
-pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY;
-pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP;
-pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF;
-pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE;
-pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS;
-pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL;
-pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE;
-pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE;
-pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT;
-pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO;
-pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO;
-pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY;
-pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM;
-pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB;
-pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY;
-pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE;
-pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX;
-pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET;
-pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_26 {
-IFLA_BOND_UNSPEC = 0,
-IFLA_BOND_MODE = 1,
-IFLA_BOND_ACTIVE_SLAVE = 2,
-IFLA_BOND_MIIMON = 3,
-IFLA_BOND_UPDELAY = 4,
-IFLA_BOND_DOWNDELAY = 5,
-IFLA_BOND_USE_CARRIER = 6,
-IFLA_BOND_ARP_INTERVAL = 7,
-IFLA_BOND_ARP_IP_TARGET = 8,
-IFLA_BOND_ARP_VALIDATE = 9,
-IFLA_BOND_ARP_ALL_TARGETS = 10,
-IFLA_BOND_PRIMARY = 11,
-IFLA_BOND_PRIMARY_RESELECT = 12,
-IFLA_BOND_FAIL_OVER_MAC = 13,
-IFLA_BOND_XMIT_HASH_POLICY = 14,
-IFLA_BOND_RESEND_IGMP = 15,
-IFLA_BOND_NUM_PEER_NOTIF = 16,
-IFLA_BOND_ALL_SLAVES_ACTIVE = 17,
-IFLA_BOND_MIN_LINKS = 18,
-IFLA_BOND_LP_INTERVAL = 19,
-IFLA_BOND_PACKETS_PER_SLAVE = 20,
-IFLA_BOND_AD_LACP_RATE = 21,
-IFLA_BOND_AD_SELECT = 22,
-IFLA_BOND_AD_INFO = 23,
-IFLA_BOND_AD_ACTOR_SYS_PRIO = 24,
-IFLA_BOND_AD_USER_PORT_KEY = 25,
-IFLA_BOND_AD_ACTOR_SYSTEM = 26,
-IFLA_BOND_TLB_DYNAMIC_LB = 27,
-IFLA_BOND_PEER_NOTIF_DELAY = 28,
-IFLA_BOND_AD_LACP_ACTIVE = 29,
-IFLA_BOND_MISSED_MAX = 30,
-IFLA_BOND_NS_IP6_TARGET = 31,
-__IFLA_BOND_MAX = 32,
-}
-pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC;
-pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR;
-pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS;
-pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC;
-pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_27 {
-IFLA_BOND_AD_INFO_UNSPEC = 0,
-IFLA_BOND_AD_INFO_AGGREGATOR = 1,
-IFLA_BOND_AD_INFO_NUM_PORTS = 2,
-IFLA_BOND_AD_INFO_ACTOR_KEY = 3,
-IFLA_BOND_AD_INFO_PARTNER_KEY = 4,
-IFLA_BOND_AD_INFO_PARTNER_MAC = 5,
-__IFLA_BOND_AD_INFO_MAX = 6,
-}
-pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC;
-pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE;
-pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS;
-pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT;
-pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR;
-pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID;
-pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID;
-pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO;
-pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_28 {
-IFLA_BOND_SLAVE_UNSPEC = 0,
-IFLA_BOND_SLAVE_STATE = 1,
-IFLA_BOND_SLAVE_MII_STATUS = 2,
-IFLA_BOND_SLAVE_LINK_FAILURE_COUNT = 3,
-IFLA_BOND_SLAVE_PERM_HWADDR = 4,
-IFLA_BOND_SLAVE_QUEUE_ID = 5,
-IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 6,
-IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 7,
-IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 8,
-IFLA_BOND_SLAVE_PRIO = 9,
-__IFLA_BOND_SLAVE_MAX = 10,
-}
-pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC;
-pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO;
-pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_29 {
-IFLA_VF_INFO_UNSPEC = 0,
-IFLA_VF_INFO = 1,
-__IFLA_VF_INFO_MAX = 2,
-}
-pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC;
-pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC;
-pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN;
-pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE;
-pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK;
-pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE;
-pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE;
-pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN;
-pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS;
-pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST;
-pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID;
-pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID;
-pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST;
-pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST;
-pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_30 {
-IFLA_VF_UNSPEC = 0,
-IFLA_VF_MAC = 1,
-IFLA_VF_VLAN = 2,
-IFLA_VF_TX_RATE = 3,
-IFLA_VF_SPOOFCHK = 4,
-IFLA_VF_LINK_STATE = 5,
-IFLA_VF_RATE = 6,
-IFLA_VF_RSS_QUERY_EN = 7,
-IFLA_VF_STATS = 8,
-IFLA_VF_TRUST = 9,
-IFLA_VF_IB_NODE_GUID = 10,
-IFLA_VF_IB_PORT_GUID = 11,
-IFLA_VF_VLAN_LIST = 12,
-IFLA_VF_BROADCAST = 13,
-__IFLA_VF_MAX = 14,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_mac {
-pub vf: __u32,
-pub mac: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_broadcast {
-pub broadcast: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-}
-pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC;
-pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO;
-pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_31 {
-IFLA_VF_VLAN_INFO_UNSPEC = 0,
-IFLA_VF_VLAN_INFO = 1,
-__IFLA_VF_VLAN_INFO_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan_info {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-pub vlan_proto: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_tx_rate {
-pub vf: __u32,
-pub rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rate {
-pub vf: __u32,
-pub min_tx_rate: __u32,
-pub max_tx_rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_spoofchk {
-pub vf: __u32,
-pub setting: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_guid {
-pub vf: __u32,
-pub guid: __u64,
-}
-pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO;
-pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE;
-pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE;
-pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_32 {
-IFLA_VF_LINK_STATE_AUTO = 0,
-IFLA_VF_LINK_STATE_ENABLE = 1,
-IFLA_VF_LINK_STATE_DISABLE = 2,
-__IFLA_VF_LINK_STATE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_link_state {
-pub vf: __u32,
-pub link_state: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rss_query_en {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS;
-pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS;
-pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES;
-pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES;
-pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST;
-pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST;
-pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD;
-pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED;
-pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED;
-pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_33 {
-IFLA_VF_STATS_RX_PACKETS = 0,
-IFLA_VF_STATS_TX_PACKETS = 1,
-IFLA_VF_STATS_RX_BYTES = 2,
-IFLA_VF_STATS_TX_BYTES = 3,
-IFLA_VF_STATS_BROADCAST = 4,
-IFLA_VF_STATS_MULTICAST = 5,
-IFLA_VF_STATS_PAD = 6,
-IFLA_VF_STATS_RX_DROPPED = 7,
-IFLA_VF_STATS_TX_DROPPED = 8,
-__IFLA_VF_STATS_MAX = 9,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_trust {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC;
-pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT;
-pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_34 {
-IFLA_VF_PORT_UNSPEC = 0,
-IFLA_VF_PORT = 1,
-__IFLA_VF_PORT_MAX = 2,
-}
-pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC;
-pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF;
-pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE;
-pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE;
-pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID;
-pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID;
-pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST;
-pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE;
-pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_35 {
-IFLA_PORT_UNSPEC = 0,
-IFLA_PORT_VF = 1,
-IFLA_PORT_PROFILE = 2,
-IFLA_PORT_VSI_TYPE = 3,
-IFLA_PORT_INSTANCE_UUID = 4,
-IFLA_PORT_HOST_UUID = 5,
-IFLA_PORT_REQUEST = 6,
-IFLA_PORT_RESPONSE = 7,
-__IFLA_PORT_MAX = 8,
-}
-pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE;
-pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR;
-pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE;
-pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_36 {
-PORT_REQUEST_PREASSOCIATE = 0,
-PORT_REQUEST_PREASSOCIATE_RR = 1,
-PORT_REQUEST_ASSOCIATE = 2,
-PORT_REQUEST_DISASSOCIATE = 3,
-}
-pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS;
-pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT;
-pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID;
-pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION;
-pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION;
-pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC;
-pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS;
-pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS;
-pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID;
-pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE;
-pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_37 {
-PORT_VDP_RESPONSE_SUCCESS = 0,
-PORT_VDP_RESPONSE_INVALID_FORMAT = 1,
-PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES = 2,
-PORT_VDP_RESPONSE_UNUSED_VTID = 3,
-PORT_VDP_RESPONSE_VTID_VIOLATION = 4,
-PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION = 5,
-PORT_VDP_RESPONSE_OUT_OF_SYNC = 6,
-PORT_PROFILE_RESPONSE_SUCCESS = 256,
-PORT_PROFILE_RESPONSE_INPROGRESS = 257,
-PORT_PROFILE_RESPONSE_INVALID = 258,
-PORT_PROFILE_RESPONSE_BADSTATE = 259,
-PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260,
-PORT_PROFILE_RESPONSE_ERROR = 261,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_port_vsi {
-pub vsi_mgr_id: __u8,
-pub vsi_type_id: [__u8; 3usize],
-pub vsi_type_version: __u8,
-pub pad: [__u8; 3usize],
-}
-pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC;
-pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY;
-pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE;
-pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST;
-pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_38 {
-IFLA_IPOIB_UNSPEC = 0,
-IFLA_IPOIB_PKEY = 1,
-IFLA_IPOIB_MODE = 2,
-IFLA_IPOIB_UMCAST = 3,
-__IFLA_IPOIB_MAX = 4,
-}
-pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM;
-pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_39 {
-IPOIB_MODE_DATAGRAM = 0,
-IPOIB_MODE_CONNECTED = 1,
-}
-pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR;
-pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP;
-pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_40 {
-HSR_PROTOCOL_HSR = 0,
-HSR_PROTOCOL_PRP = 1,
-HSR_PROTOCOL_MAX = 2,
-}
-pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC;
-pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1;
-pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2;
-pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC;
-pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR;
-pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR;
-pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION;
-pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL;
-pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_41 {
-IFLA_HSR_UNSPEC = 0,
-IFLA_HSR_SLAVE1 = 1,
-IFLA_HSR_SLAVE2 = 2,
-IFLA_HSR_MULTICAST_SPEC = 3,
-IFLA_HSR_SUPERVISION_ADDR = 4,
-IFLA_HSR_SEQ_NR = 5,
-IFLA_HSR_VERSION = 6,
-IFLA_HSR_PROTOCOL = 7,
-__IFLA_HSR_MAX = 8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct if_stats_msg {
-pub family: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub ifindex: __u32,
-pub filter_mask: __u32,
-}
-pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC;
-pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64;
-pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS;
-pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE;
-pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS;
-pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC;
-pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_42 {
-IFLA_STATS_UNSPEC = 0,
-IFLA_STATS_LINK_64 = 1,
-IFLA_STATS_LINK_XSTATS = 2,
-IFLA_STATS_LINK_XSTATS_SLAVE = 3,
-IFLA_STATS_LINK_OFFLOAD_XSTATS = 4,
-IFLA_STATS_AF_SPEC = 5,
-__IFLA_STATS_MAX = 6,
-}
-pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC;
-pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS;
-pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_43 {
-IFLA_STATS_GETSET_UNSPEC = 0,
-IFLA_STATS_GET_FILTERS = 1,
-IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2,
-__IFLA_STATS_GETSET_MAX = 3,
-}
-pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC;
-pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE;
-pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND;
-pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_44 {
-LINK_XSTATS_TYPE_UNSPEC = 0,
-LINK_XSTATS_TYPE_BRIDGE = 1,
-LINK_XSTATS_TYPE_BOND = 2,
-__LINK_XSTATS_TYPE_MAX = 3,
-}
-pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO;
-pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_45 {
-IFLA_OFFLOAD_XSTATS_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_CPU_HIT = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO = 2,
-IFLA_OFFLOAD_XSTATS_L3_STATS = 3,
-__IFLA_OFFLOAD_XSTATS_MAX = 4,
-}
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED;
-pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_46 {
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2,
-__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3,
-}
-pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE;
-pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV;
-pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB;
-pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW;
-pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_47 {
-XDP_ATTACHED_NONE = 0,
-XDP_ATTACHED_DRV = 1,
-XDP_ATTACHED_SKB = 2,
-XDP_ATTACHED_HW = 3,
-XDP_ATTACHED_MULTI = 4,
-}
-pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC;
-pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD;
-pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED;
-pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS;
-pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID;
-pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID;
-pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID;
-pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID;
-pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD;
-pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_48 {
-IFLA_XDP_UNSPEC = 0,
-IFLA_XDP_FD = 1,
-IFLA_XDP_ATTACHED = 2,
-IFLA_XDP_FLAGS = 3,
-IFLA_XDP_PROG_ID = 4,
-IFLA_XDP_DRV_PROG_ID = 5,
-IFLA_XDP_SKB_PROG_ID = 6,
-IFLA_XDP_HW_PROG_ID = 7,
-IFLA_XDP_EXPECTED_FD = 8,
-__IFLA_XDP_MAX = 9,
-}
-pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE;
-pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT;
-pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES;
-pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER;
-pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS;
-pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND;
-pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_49 {
-IFLA_EVENT_NONE = 0,
-IFLA_EVENT_REBOOT = 1,
-IFLA_EVENT_FEATURES = 2,
-IFLA_EVENT_BONDING_FAILOVER = 3,
-IFLA_EVENT_NOTIFY_PEERS = 4,
-IFLA_EVENT_IGMP_RESEND = 5,
-IFLA_EVENT_BONDING_OPTIONS = 6,
-}
-pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC;
-pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER;
-pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP;
-pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE;
-pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI;
-pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR;
-pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST;
-pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE;
-pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES;
-pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES;
-pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_50 {
-IFLA_TUN_UNSPEC = 0,
-IFLA_TUN_OWNER = 1,
-IFLA_TUN_GROUP = 2,
-IFLA_TUN_TYPE = 3,
-IFLA_TUN_PI = 4,
-IFLA_TUN_VNET_HDR = 5,
-IFLA_TUN_PERSIST = 6,
-IFLA_TUN_MULTI_QUEUE = 7,
-IFLA_TUN_NUM_QUEUES = 8,
-IFLA_TUN_NUM_DISABLED_QUEUES = 9,
-__IFLA_TUN_MAX = 10,
-}
-pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC;
-pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID;
-pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS;
-pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_51 {
-IFLA_RMNET_UNSPEC = 0,
-IFLA_RMNET_MUX_ID = 1,
-IFLA_RMNET_FLAGS = 2,
-__IFLA_RMNET_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_rmnet_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC;
-pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET;
-pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_52 {
-IFLA_MCTP_UNSPEC = 0,
-IFLA_MCTP_NET = 1,
-__IFLA_MCTP_MAX = 2,
-}
-pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC;
-pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER;
-pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_53 {
-IFLA_DSA_UNSPEC = 0,
-IFLA_DSA_MASTER = 1,
-__IFLA_DSA_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifaddrmsg {
-pub ifa_family: __u8,
-pub ifa_prefixlen: __u8,
-pub ifa_flags: __u8,
-pub ifa_scope: __u8,
-pub ifa_index: __u32,
-}
-pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC;
-pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS;
-pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL;
-pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL;
-pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST;
-pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST;
-pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO;
-pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST;
-pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS;
-pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY;
-pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID;
-pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO;
-pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_54 {
-IFA_UNSPEC = 0,
-IFA_ADDRESS = 1,
-IFA_LOCAL = 2,
-IFA_LABEL = 3,
-IFA_BROADCAST = 4,
-IFA_ANYCAST = 5,
-IFA_CACHEINFO = 6,
-IFA_MULTICAST = 7,
-IFA_FLAGS = 8,
-IFA_RT_PRIORITY = 9,
-IFA_TARGET_NETNSID = 10,
-IFA_PROTO = 11,
-__IFA_MAX = 12,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifa_cacheinfo {
-pub ifa_prefered: __u32,
-pub ifa_valid: __u32,
-pub cstamp: __u32,
-pub tstamp: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndmsg {
-pub ndm_family: __u8,
-pub ndm_pad1: __u8,
-pub ndm_pad2: __u16,
-pub ndm_ifindex: __s32,
-pub ndm_state: __u16,
-pub ndm_flags: __u8,
-pub ndm_type: __u8,
-}
-pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC;
-pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST;
-pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR;
-pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO;
-pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES;
-pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN;
-pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT;
-pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI;
-pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX;
-pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER;
-pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID;
-pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI;
-pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL;
-pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID;
-pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS;
-pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT;
-pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK;
-pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK;
-pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_55 {
-NDA_UNSPEC = 0,
-NDA_DST = 1,
-NDA_LLADDR = 2,
-NDA_CACHEINFO = 3,
-NDA_PROBES = 4,
-NDA_VLAN = 5,
-NDA_PORT = 6,
-NDA_VNI = 7,
-NDA_IFINDEX = 8,
-NDA_MASTER = 9,
-NDA_LINK_NETNSID = 10,
-NDA_SRC_VNI = 11,
-NDA_PROTOCOL = 12,
-NDA_NH_ID = 13,
-NDA_FDB_EXT_ATTRS = 14,
-NDA_FLAGS_EXT = 15,
-NDA_NDM_STATE_MASK = 16,
-NDA_NDM_FLAGS_MASK = 17,
-__NDA_MAX = 18,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nda_cacheinfo {
-pub ndm_confirmed: __u32,
-pub ndm_used: __u32,
-pub ndm_updated: __u32,
-pub ndm_refcnt: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_stats {
-pub ndts_allocs: __u64,
-pub ndts_destroys: __u64,
-pub ndts_hash_grows: __u64,
-pub ndts_res_failed: __u64,
-pub ndts_lookups: __u64,
-pub ndts_hits: __u64,
-pub ndts_rcv_probes_mcast: __u64,
-pub ndts_rcv_probes_ucast: __u64,
-pub ndts_periodic_gc_runs: __u64,
-pub ndts_forced_gc_runs: __u64,
-pub ndts_table_fulls: __u64,
-}
-pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC;
-pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX;
-pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT;
-pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME;
-pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME;
-pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME;
-pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME;
-pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME;
-pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN;
-pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES;
-pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES;
-pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES;
-pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY;
-pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY;
-pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN;
-pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME;
-pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES;
-pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES;
-pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD;
-pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS;
-pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_56 {
-NDTPA_UNSPEC = 0,
-NDTPA_IFINDEX = 1,
-NDTPA_REFCNT = 2,
-NDTPA_REACHABLE_TIME = 3,
-NDTPA_BASE_REACHABLE_TIME = 4,
-NDTPA_RETRANS_TIME = 5,
-NDTPA_GC_STALETIME = 6,
-NDTPA_DELAY_PROBE_TIME = 7,
-NDTPA_QUEUE_LEN = 8,
-NDTPA_APP_PROBES = 9,
-NDTPA_UCAST_PROBES = 10,
-NDTPA_MCAST_PROBES = 11,
-NDTPA_ANYCAST_DELAY = 12,
-NDTPA_PROXY_DELAY = 13,
-NDTPA_PROXY_QLEN = 14,
-NDTPA_LOCKTIME = 15,
-NDTPA_QUEUE_LENBYTES = 16,
-NDTPA_MCAST_REPROBES = 17,
-NDTPA_PAD = 18,
-NDTPA_INTERVAL_PROBE_TIME_MS = 19,
-__NDTPA_MAX = 20,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndtmsg {
-pub ndtm_family: __u8,
-pub ndtm_pad1: __u8,
-pub ndtm_pad2: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_config {
-pub ndtc_key_len: __u16,
-pub ndtc_entry_size: __u16,
-pub ndtc_entries: __u32,
-pub ndtc_last_flush: __u32,
-pub ndtc_last_rand: __u32,
-pub ndtc_hash_rnd: __u32,
-pub ndtc_hash_mask: __u32,
-pub ndtc_hash_chain_gc: __u32,
-pub ndtc_proxy_qlen: __u32,
-}
-pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC;
-pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME;
-pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1;
-pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2;
-pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3;
-pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG;
-pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS;
-pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS;
-pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL;
-pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD;
-pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_57 {
-NDTA_UNSPEC = 0,
-NDTA_NAME = 1,
-NDTA_THRESH1 = 2,
-NDTA_THRESH2 = 3,
-NDTA_THRESH3 = 4,
-NDTA_CONFIG = 5,
-NDTA_PARMS = 6,
-NDTA_STATS = 7,
-NDTA_GC_INTERVAL = 8,
-NDTA_PAD = 9,
-__NDTA_MAX = 10,
-}
-pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT;
-pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_58 {
-FDB_NOTIFY_BIT = 1,
-FDB_NOTIFY_INACTIVE_BIT = 2,
-}
-pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC;
-pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY;
-pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH;
-pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_59 {
-NFEA_UNSPEC = 0,
-NFEA_ACTIVITY_NOTIFY = 1,
-NFEA_DONT_REFRESH = 2,
-__NFEA_MAX = 3,
-}
-pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK;
-pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK;
-pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK;
-pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR;
-pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR;
-pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR;
-pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE;
-pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE;
-pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE;
-pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH;
-pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH;
-pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH;
-pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE;
-pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE;
-pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE;
-pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC;
-pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC;
-pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC;
-pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS;
-pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS;
-pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS;
-pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER;
-pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER;
-pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER;
-pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION;
-pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION;
-pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION;
-pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX;
-pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST;
-pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST;
-pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL;
-pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL;
-pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL;
-pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT;
-pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL;
-pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL;
-pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL;
-pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB;
-pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB;
-pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF;
-pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF;
-pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF;
-pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB;
-pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB;
-pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB;
-pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID;
-pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID;
-pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID;
-pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS;
-pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS;
-pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS;
-pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT;
-pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN;
-pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN;
-pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN;
-pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP;
-pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP;
-pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP;
-pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP;
-pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP;
-pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP;
-pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN;
-pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN;
-pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN;
-pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET;
-pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET;
-pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET;
-pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL;
-pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL;
-pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL;
-pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_60 {
-RTM_BASE = 16,
-RTM_DELLINK = 17,
-RTM_GETLINK = 18,
-RTM_SETLINK = 19,
-RTM_NEWADDR = 20,
-RTM_DELADDR = 21,
-RTM_GETADDR = 22,
-RTM_NEWROUTE = 24,
-RTM_DELROUTE = 25,
-RTM_GETROUTE = 26,
-RTM_NEWNEIGH = 28,
-RTM_DELNEIGH = 29,
-RTM_GETNEIGH = 30,
-RTM_NEWRULE = 32,
-RTM_DELRULE = 33,
-RTM_GETRULE = 34,
-RTM_NEWQDISC = 36,
-RTM_DELQDISC = 37,
-RTM_GETQDISC = 38,
-RTM_NEWTCLASS = 40,
-RTM_DELTCLASS = 41,
-RTM_GETTCLASS = 42,
-RTM_NEWTFILTER = 44,
-RTM_DELTFILTER = 45,
-RTM_GETTFILTER = 46,
-RTM_NEWACTION = 48,
-RTM_DELACTION = 49,
-RTM_GETACTION = 50,
-RTM_NEWPREFIX = 52,
-RTM_GETMULTICAST = 58,
-RTM_GETANYCAST = 62,
-RTM_NEWNEIGHTBL = 64,
-RTM_GETNEIGHTBL = 66,
-RTM_SETNEIGHTBL = 67,
-RTM_NEWNDUSEROPT = 68,
-RTM_NEWADDRLABEL = 72,
-RTM_DELADDRLABEL = 73,
-RTM_GETADDRLABEL = 74,
-RTM_GETDCB = 78,
-RTM_SETDCB = 79,
-RTM_NEWNETCONF = 80,
-RTM_DELNETCONF = 81,
-RTM_GETNETCONF = 82,
-RTM_NEWMDB = 84,
-RTM_DELMDB = 85,
-RTM_GETMDB = 86,
-RTM_NEWNSID = 88,
-RTM_DELNSID = 89,
-RTM_GETNSID = 90,
-RTM_NEWSTATS = 92,
-RTM_GETSTATS = 94,
-RTM_SETSTATS = 95,
-RTM_NEWCACHEREPORT = 96,
-RTM_NEWCHAIN = 100,
-RTM_DELCHAIN = 101,
-RTM_GETCHAIN = 102,
-RTM_NEWNEXTHOP = 104,
-RTM_DELNEXTHOP = 105,
-RTM_GETNEXTHOP = 106,
-RTM_NEWLINKPROP = 108,
-RTM_DELLINKPROP = 109,
-RTM_GETLINKPROP = 110,
-RTM_NEWVLAN = 112,
-RTM_DELVLAN = 113,
-RTM_GETVLAN = 114,
-RTM_NEWNEXTHOPBUCKET = 116,
-RTM_DELNEXTHOPBUCKET = 117,
-RTM_GETNEXTHOPBUCKET = 118,
-RTM_NEWTUNNEL = 120,
-RTM_DELTUNNEL = 121,
-RTM_GETTUNNEL = 122,
-__RTM_MAX = 123,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtattr {
-pub rta_len: crate::ctypes::c_ushort,
-pub rta_type: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtmsg {
-pub rtm_family: crate::ctypes::c_uchar,
-pub rtm_dst_len: crate::ctypes::c_uchar,
-pub rtm_src_len: crate::ctypes::c_uchar,
-pub rtm_tos: crate::ctypes::c_uchar,
-pub rtm_table: crate::ctypes::c_uchar,
-pub rtm_protocol: crate::ctypes::c_uchar,
-pub rtm_scope: crate::ctypes::c_uchar,
-pub rtm_type: crate::ctypes::c_uchar,
-pub rtm_flags: crate::ctypes::c_uint,
-}
-pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC;
-pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST;
-pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL;
-pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST;
-pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST;
-pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST;
-pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE;
-pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE;
-pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT;
-pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW;
-pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT;
-pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE;
-pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_61 {
-RTN_UNSPEC = 0,
-RTN_UNICAST = 1,
-RTN_LOCAL = 2,
-RTN_BROADCAST = 3,
-RTN_ANYCAST = 4,
-RTN_MULTICAST = 5,
-RTN_BLACKHOLE = 6,
-RTN_UNREACHABLE = 7,
-RTN_PROHIBIT = 8,
-RTN_THROW = 9,
-RTN_NAT = 10,
-RTN_XRESOLVE = 11,
-__RTN_MAX = 12,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_scope_t {
-RT_SCOPE_UNIVERSE = 0,
-RT_SCOPE_SITE = 200,
-RT_SCOPE_LINK = 253,
-RT_SCOPE_HOST = 254,
-RT_SCOPE_NOWHERE = 255,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_class_t {
-RT_TABLE_UNSPEC = 0,
-RT_TABLE_COMPAT = 252,
-RT_TABLE_DEFAULT = 253,
-RT_TABLE_MAIN = 254,
-RT_TABLE_LOCAL = 255,
-RT_TABLE_MAX = 4294967295,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtattr_type_t {
-RTA_UNSPEC = 0,
-RTA_DST = 1,
-RTA_SRC = 2,
-RTA_IIF = 3,
-RTA_OIF = 4,
-RTA_GATEWAY = 5,
-RTA_PRIORITY = 6,
-RTA_PREFSRC = 7,
-RTA_METRICS = 8,
-RTA_MULTIPATH = 9,
-RTA_PROTOINFO = 10,
-RTA_FLOW = 11,
-RTA_CACHEINFO = 12,
-RTA_SESSION = 13,
-RTA_MP_ALGO = 14,
-RTA_TABLE = 15,
-RTA_MARK = 16,
-RTA_MFC_STATS = 17,
-RTA_VIA = 18,
-RTA_NEWDST = 19,
-RTA_PREF = 20,
-RTA_ENCAP_TYPE = 21,
-RTA_ENCAP = 22,
-RTA_EXPIRES = 23,
-RTA_PAD = 24,
-RTA_UID = 25,
-RTA_TTL_PROPAGATE = 26,
-RTA_IP_PROTO = 27,
-RTA_SPORT = 28,
-RTA_DPORT = 29,
-RTA_NH_ID = 30,
-__RTA_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnexthop {
-pub rtnh_len: crate::ctypes::c_ushort,
-pub rtnh_flags: crate::ctypes::c_uchar,
-pub rtnh_hops: crate::ctypes::c_uchar,
-pub rtnh_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rtvia {
-pub rtvia_family: __kernel_sa_family_t,
-pub rtvia_addr: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_cacheinfo {
-pub rta_clntref: __u32,
-pub rta_lastuse: __u32,
-pub rta_expires: __s32,
-pub rta_error: __u32,
-pub rta_used: __u32,
-pub rta_id: __u32,
-pub rta_ts: __u32,
-pub rta_tsage: __u32,
-}
-pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC;
-pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK;
-pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU;
-pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW;
-pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT;
-pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR;
-pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH;
-pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND;
-pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS;
-pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING;
-pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT;
-pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND;
-pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES;
-pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN;
-pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND;
-pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK;
-pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO;
-pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE;
-pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_62 {
-RTAX_UNSPEC = 0,
-RTAX_LOCK = 1,
-RTAX_MTU = 2,
-RTAX_WINDOW = 3,
-RTAX_RTT = 4,
-RTAX_RTTVAR = 5,
-RTAX_SSTHRESH = 6,
-RTAX_CWND = 7,
-RTAX_ADVMSS = 8,
-RTAX_REORDERING = 9,
-RTAX_HOPLIMIT = 10,
-RTAX_INITCWND = 11,
-RTAX_FEATURES = 12,
-RTAX_RTO_MIN = 13,
-RTAX_INITRWND = 14,
-RTAX_QUICKACK = 15,
-RTAX_CC_ALGO = 16,
-RTAX_FASTOPEN_NO_COOKIE = 17,
-__RTAX_MAX = 18,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rta_session {
-pub proto: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub u: rta_session__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union rta_session__bindgen_ty_1 {
-pub ports: rta_session__bindgen_ty_1__bindgen_ty_1,
-pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2,
-pub spi: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_1 {
-pub sport: __u16,
-pub dport: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_2 {
-pub type_: __u8,
-pub code: __u8,
-pub ident: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_mfc_stats {
-pub mfcs_packets: __u64,
-pub mfcs_bytes: __u64,
-pub mfcs_wrong_if: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtgenmsg {
-pub rtgen_family: crate::ctypes::c_uchar,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifinfomsg {
-pub ifi_family: crate::ctypes::c_uchar,
-pub __ifi_pad: crate::ctypes::c_uchar,
-pub ifi_type: crate::ctypes::c_ushort,
-pub ifi_index: crate::ctypes::c_int,
-pub ifi_flags: crate::ctypes::c_uint,
-pub ifi_change: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefixmsg {
-pub prefix_family: crate::ctypes::c_uchar,
-pub prefix_pad1: crate::ctypes::c_uchar,
-pub prefix_pad2: crate::ctypes::c_ushort,
-pub prefix_ifindex: crate::ctypes::c_int,
-pub prefix_type: crate::ctypes::c_uchar,
-pub prefix_len: crate::ctypes::c_uchar,
-pub prefix_flags: crate::ctypes::c_uchar,
-pub prefix_pad3: crate::ctypes::c_uchar,
-}
-pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC;
-pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS;
-pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO;
-pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_63 {
-PREFIX_UNSPEC = 0,
-PREFIX_ADDRESS = 1,
-PREFIX_CACHEINFO = 2,
-__PREFIX_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefix_cacheinfo {
-pub preferred_time: __u32,
-pub valid_time: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcmsg {
-pub tcm_family: crate::ctypes::c_uchar,
-pub tcm__pad1: crate::ctypes::c_uchar,
-pub tcm__pad2: crate::ctypes::c_ushort,
-pub tcm_ifindex: crate::ctypes::c_int,
-pub tcm_handle: __u32,
-pub tcm_parent: __u32,
-pub tcm_info: __u32,
-}
-pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC;
-pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND;
-pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS;
-pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS;
-pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS;
-pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE;
-pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT;
-pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2;
-pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB;
-pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD;
-pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE;
-pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN;
-pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD;
-pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK;
-pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK;
-pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS;
-pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_64 {
-TCA_UNSPEC = 0,
-TCA_KIND = 1,
-TCA_OPTIONS = 2,
-TCA_STATS = 3,
-TCA_XSTATS = 4,
-TCA_RATE = 5,
-TCA_FCNT = 6,
-TCA_STATS2 = 7,
-TCA_STAB = 8,
-TCA_PAD = 9,
-TCA_DUMP_INVISIBLE = 10,
-TCA_CHAIN = 11,
-TCA_HW_OFFLOAD = 12,
-TCA_INGRESS_BLOCK = 13,
-TCA_EGRESS_BLOCK = 14,
-TCA_DUMP_FLAGS = 15,
-__TCA_MAX = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nduseroptmsg {
-pub nduseropt_family: crate::ctypes::c_uchar,
-pub nduseropt_pad1: crate::ctypes::c_uchar,
-pub nduseropt_opts_len: crate::ctypes::c_ushort,
-pub nduseropt_ifindex: crate::ctypes::c_int,
-pub nduseropt_icmp_type: __u8,
-pub nduseropt_icmp_code: __u8,
-pub nduseropt_pad2: crate::ctypes::c_ushort,
-pub nduseropt_pad3: crate::ctypes::c_uint,
-}
-pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC;
-pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR;
-pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_65 {
-NDUSEROPT_UNSPEC = 0,
-NDUSEROPT_SRCADDR = 1,
-__NDUSEROPT_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtnetlink_groups {
-RTNLGRP_NONE = 0,
-RTNLGRP_LINK = 1,
-RTNLGRP_NOTIFY = 2,
-RTNLGRP_NEIGH = 3,
-RTNLGRP_TC = 4,
-RTNLGRP_IPV4_IFADDR = 5,
-RTNLGRP_IPV4_MROUTE = 6,
-RTNLGRP_IPV4_ROUTE = 7,
-RTNLGRP_IPV4_RULE = 8,
-RTNLGRP_IPV6_IFADDR = 9,
-RTNLGRP_IPV6_MROUTE = 10,
-RTNLGRP_IPV6_ROUTE = 11,
-RTNLGRP_IPV6_IFINFO = 12,
-RTNLGRP_DECnet_IFADDR = 13,
-RTNLGRP_NOP2 = 14,
-RTNLGRP_DECnet_ROUTE = 15,
-RTNLGRP_DECnet_RULE = 16,
-RTNLGRP_NOP4 = 17,
-RTNLGRP_IPV6_PREFIX = 18,
-RTNLGRP_IPV6_RULE = 19,
-RTNLGRP_ND_USEROPT = 20,
-RTNLGRP_PHONET_IFADDR = 21,
-RTNLGRP_PHONET_ROUTE = 22,
-RTNLGRP_DCB = 23,
-RTNLGRP_IPV4_NETCONF = 24,
-RTNLGRP_IPV6_NETCONF = 25,
-RTNLGRP_MDB = 26,
-RTNLGRP_MPLS_ROUTE = 27,
-RTNLGRP_NSID = 28,
-RTNLGRP_MPLS_NETCONF = 29,
-RTNLGRP_IPV4_MROUTE_R = 30,
-RTNLGRP_IPV6_MROUTE_R = 31,
-RTNLGRP_NEXTHOP = 32,
-RTNLGRP_BRVLAN = 33,
-RTNLGRP_MCTP_IFADDR = 34,
-RTNLGRP_TUNNEL = 35,
-RTNLGRP_STATS = 36,
-__RTNLGRP_MAX = 37,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcamsg {
-pub tca_family: crate::ctypes::c_uchar,
-pub tca__pad1: crate::ctypes::c_uchar,
-pub tca__pad2: crate::ctypes::c_ushort,
-}
-pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC;
-pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB;
-pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS;
-pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT;
-pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA;
-pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_66 {
-TCA_ROOT_UNSPEC = 0,
-TCA_ROOT_TAB = 1,
-TCA_ROOT_FLAGS = 2,
-TCA_ROOT_COUNT = 3,
-TCA_ROOT_TIME_DELTA = 4,
-__TCA_ROOT_MAX = 5,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/x86/errno.rs b/vendor/linux-raw-sys-0.3.2/src/x86/errno.rs
deleted file mode 100644
index 8c5620d74..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/x86/errno.rs
+++ /dev/null
@@ -1,135 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const EPERM: u32 = 1;
-pub const ENOENT: u32 = 2;
-pub const ESRCH: u32 = 3;
-pub const EINTR: u32 = 4;
-pub const EIO: u32 = 5;
-pub const ENXIO: u32 = 6;
-pub const E2BIG: u32 = 7;
-pub const ENOEXEC: u32 = 8;
-pub const EBADF: u32 = 9;
-pub const ECHILD: u32 = 10;
-pub const EAGAIN: u32 = 11;
-pub const ENOMEM: u32 = 12;
-pub const EACCES: u32 = 13;
-pub const EFAULT: u32 = 14;
-pub const ENOTBLK: u32 = 15;
-pub const EBUSY: u32 = 16;
-pub const EEXIST: u32 = 17;
-pub const EXDEV: u32 = 18;
-pub const ENODEV: u32 = 19;
-pub const ENOTDIR: u32 = 20;
-pub const EISDIR: u32 = 21;
-pub const EINVAL: u32 = 22;
-pub const ENFILE: u32 = 23;
-pub const EMFILE: u32 = 24;
-pub const ENOTTY: u32 = 25;
-pub const ETXTBSY: u32 = 26;
-pub const EFBIG: u32 = 27;
-pub const ENOSPC: u32 = 28;
-pub const ESPIPE: u32 = 29;
-pub const EROFS: u32 = 30;
-pub const EMLINK: u32 = 31;
-pub const EPIPE: u32 = 32;
-pub const EDOM: u32 = 33;
-pub const ERANGE: u32 = 34;
-pub const EDEADLK: u32 = 35;
-pub const ENAMETOOLONG: u32 = 36;
-pub const ENOLCK: u32 = 37;
-pub const ENOSYS: u32 = 38;
-pub const ENOTEMPTY: u32 = 39;
-pub const ELOOP: u32 = 40;
-pub const EWOULDBLOCK: u32 = 11;
-pub const ENOMSG: u32 = 42;
-pub const EIDRM: u32 = 43;
-pub const ECHRNG: u32 = 44;
-pub const EL2NSYNC: u32 = 45;
-pub const EL3HLT: u32 = 46;
-pub const EL3RST: u32 = 47;
-pub const ELNRNG: u32 = 48;
-pub const EUNATCH: u32 = 49;
-pub const ENOCSI: u32 = 50;
-pub const EL2HLT: u32 = 51;
-pub const EBADE: u32 = 52;
-pub const EBADR: u32 = 53;
-pub const EXFULL: u32 = 54;
-pub const ENOANO: u32 = 55;
-pub const EBADRQC: u32 = 56;
-pub const EBADSLT: u32 = 57;
-pub const EDEADLOCK: u32 = 35;
-pub const EBFONT: u32 = 59;
-pub const ENOSTR: u32 = 60;
-pub const ENODATA: u32 = 61;
-pub const ETIME: u32 = 62;
-pub const ENOSR: u32 = 63;
-pub const ENONET: u32 = 64;
-pub const ENOPKG: u32 = 65;
-pub const EREMOTE: u32 = 66;
-pub const ENOLINK: u32 = 67;
-pub const EADV: u32 = 68;
-pub const ESRMNT: u32 = 69;
-pub const ECOMM: u32 = 70;
-pub const EPROTO: u32 = 71;
-pub const EMULTIHOP: u32 = 72;
-pub const EDOTDOT: u32 = 73;
-pub const EBADMSG: u32 = 74;
-pub const EOVERFLOW: u32 = 75;
-pub const ENOTUNIQ: u32 = 76;
-pub const EBADFD: u32 = 77;
-pub const EREMCHG: u32 = 78;
-pub const ELIBACC: u32 = 79;
-pub const ELIBBAD: u32 = 80;
-pub const ELIBSCN: u32 = 81;
-pub const ELIBMAX: u32 = 82;
-pub const ELIBEXEC: u32 = 83;
-pub const EILSEQ: u32 = 84;
-pub const ERESTART: u32 = 85;
-pub const ESTRPIPE: u32 = 86;
-pub const EUSERS: u32 = 87;
-pub const ENOTSOCK: u32 = 88;
-pub const EDESTADDRREQ: u32 = 89;
-pub const EMSGSIZE: u32 = 90;
-pub const EPROTOTYPE: u32 = 91;
-pub const ENOPROTOOPT: u32 = 92;
-pub const EPROTONOSUPPORT: u32 = 93;
-pub const ESOCKTNOSUPPORT: u32 = 94;
-pub const EOPNOTSUPP: u32 = 95;
-pub const EPFNOSUPPORT: u32 = 96;
-pub const EAFNOSUPPORT: u32 = 97;
-pub const EADDRINUSE: u32 = 98;
-pub const EADDRNOTAVAIL: u32 = 99;
-pub const ENETDOWN: u32 = 100;
-pub const ENETUNREACH: u32 = 101;
-pub const ENETRESET: u32 = 102;
-pub const ECONNABORTED: u32 = 103;
-pub const ECONNRESET: u32 = 104;
-pub const ENOBUFS: u32 = 105;
-pub const EISCONN: u32 = 106;
-pub const ENOTCONN: u32 = 107;
-pub const ESHUTDOWN: u32 = 108;
-pub const ETOOMANYREFS: u32 = 109;
-pub const ETIMEDOUT: u32 = 110;
-pub const ECONNREFUSED: u32 = 111;
-pub const EHOSTDOWN: u32 = 112;
-pub const EHOSTUNREACH: u32 = 113;
-pub const EALREADY: u32 = 114;
-pub const EINPROGRESS: u32 = 115;
-pub const ESTALE: u32 = 116;
-pub const EUCLEAN: u32 = 117;
-pub const ENOTNAM: u32 = 118;
-pub const ENAVAIL: u32 = 119;
-pub const EISNAM: u32 = 120;
-pub const EREMOTEIO: u32 = 121;
-pub const EDQUOT: u32 = 122;
-pub const ENOMEDIUM: u32 = 123;
-pub const EMEDIUMTYPE: u32 = 124;
-pub const ECANCELED: u32 = 125;
-pub const ENOKEY: u32 = 126;
-pub const EKEYEXPIRED: u32 = 127;
-pub const EKEYREVOKED: u32 = 128;
-pub const EKEYREJECTED: u32 = 129;
-pub const EOWNERDEAD: u32 = 130;
-pub const ENOTRECOVERABLE: u32 = 131;
-pub const ERFKILL: u32 = 132;
-pub const EHWPOISON: u32 = 133;
diff --git a/vendor/linux-raw-sys-0.3.2/src/x86/general.rs b/vendor/linux-raw-sys-0.3.2/src/x86/general.rs
deleted file mode 100644
index c06171819..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/x86/general.rs
+++ /dev/null
@@ -1,5414 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
-pub struct __BindgenBitfieldUnit<Storage> {
-storage: Storage,
-}
-impl<Storage> __BindgenBitfieldUnit<Storage> {
-#[inline]
-pub const fn new(storage: Storage) -> Self {
-Self { storage }
-}
-}
-impl<Storage> __BindgenBitfieldUnit<Storage>
-where
-Storage: AsRef<[u8]> + AsMut<[u8]>,
-{
-#[inline]
-pub fn get_bit(&self, index: usize) -> bool {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = self.storage.as_ref()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-byte & mask == mask
-}
-#[inline]
-pub fn set_bit(&mut self, index: usize, val: bool) {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = &mut self.storage.as_mut()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-if val {
-*byte |= mask;
-} else {
-*byte &= !mask;
-}
-}
-#[inline]
-pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-let mut val = 0;
-for i in 0..(bit_width as usize) {
-if self.get_bit(i + bit_offset) {
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-val |= 1 << index;
-}
-}
-val
-}
-#[inline]
-pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-for i in 0..(bit_width as usize) {
-let mask = 1 << i;
-let val_bit_is_set = val & mask == mask;
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-self.set_bit(index + bit_offset, val_bit_is_set);
-}
-}
-}
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-#[repr(C)]
-pub struct __BindgenUnionField<T>(::core::marker::PhantomData<T>);
-impl<T> __BindgenUnionField<T> {
-#[inline]
-pub const fn new() -> Self {
-__BindgenUnionField(::core::marker::PhantomData)
-}
-#[inline]
-pub unsafe fn as_ref(&self) -> &T {
-::core::mem::transmute(self)
-}
-#[inline]
-pub unsafe fn as_mut(&mut self) -> &mut T {
-::core::mem::transmute(self)
-}
-}
-impl<T> ::core::default::Default for __BindgenUnionField<T> {
-#[inline]
-fn default() -> Self {
-Self::new()
-}
-}
-impl<T> ::core::clone::Clone for __BindgenUnionField<T> {
-#[inline]
-fn clone(&self) -> Self {
-Self::new()
-}
-}
-impl<T> ::core::marker::Copy for __BindgenUnionField<T> {}
-impl<T> ::core::fmt::Debug for __BindgenUnionField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__BindgenUnionField")
-}
-}
-impl<T> ::core::hash::Hash for __BindgenUnionField<T> {
-fn hash<H: ::core::hash::Hasher>(&self, _state: &mut H) {}
-}
-impl<T> ::core::cmp::PartialEq for __BindgenUnionField<T> {
-fn eq(&self, _other: &__BindgenUnionField<T>) -> bool {
-true
-}
-}
-impl<T> ::core::cmp::Eq for __BindgenUnionField<T> {}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const AT_SYSINFO: u32 = 32;
-pub const AT_SYSINFO_EHDR: u32 = 33;
-pub const AT_VECTOR_SIZE_ARCH: u32 = 3;
-pub const AT_NULL: u32 = 0;
-pub const AT_IGNORE: u32 = 1;
-pub const AT_EXECFD: u32 = 2;
-pub const AT_PHDR: u32 = 3;
-pub const AT_PHENT: u32 = 4;
-pub const AT_PHNUM: u32 = 5;
-pub const AT_PAGESZ: u32 = 6;
-pub const AT_BASE: u32 = 7;
-pub const AT_FLAGS: u32 = 8;
-pub const AT_ENTRY: u32 = 9;
-pub const AT_NOTELF: u32 = 10;
-pub const AT_UID: u32 = 11;
-pub const AT_EUID: u32 = 12;
-pub const AT_GID: u32 = 13;
-pub const AT_EGID: u32 = 14;
-pub const AT_PLATFORM: u32 = 15;
-pub const AT_HWCAP: u32 = 16;
-pub const AT_CLKTCK: u32 = 17;
-pub const AT_SECURE: u32 = 23;
-pub const AT_BASE_PLATFORM: u32 = 24;
-pub const AT_RANDOM: u32 = 25;
-pub const AT_HWCAP2: u32 = 26;
-pub const AT_EXECFN: u32 = 31;
-pub const AT_MINSIGSTKSZ: u32 = 51;
-pub const __BITS_PER_LONG: u32 = 32;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S_1: u32 = 1;
-pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798;
-pub const _LINUX_CAPABILITY_U32S_2: u32 = 2;
-pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514;
-pub const _LINUX_CAPABILITY_U32S_3: u32 = 2;
-pub const VFS_CAP_REVISION_MASK: u32 = 4278190080;
-pub const VFS_CAP_REVISION_SHIFT: u32 = 24;
-pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081;
-pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1;
-pub const VFS_CAP_REVISION_1: u32 = 16777216;
-pub const VFS_CAP_U32_1: u32 = 1;
-pub const VFS_CAP_REVISION_2: u32 = 33554432;
-pub const VFS_CAP_U32_2: u32 = 2;
-pub const VFS_CAP_REVISION_3: u32 = 50331648;
-pub const VFS_CAP_U32_3: u32 = 2;
-pub const VFS_CAP_U32: u32 = 2;
-pub const VFS_CAP_REVISION: u32 = 50331648;
-pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S: u32 = 1;
-pub const CAP_CHOWN: u32 = 0;
-pub const CAP_DAC_OVERRIDE: u32 = 1;
-pub const CAP_DAC_READ_SEARCH: u32 = 2;
-pub const CAP_FOWNER: u32 = 3;
-pub const CAP_FSETID: u32 = 4;
-pub const CAP_KILL: u32 = 5;
-pub const CAP_SETGID: u32 = 6;
-pub const CAP_SETUID: u32 = 7;
-pub const CAP_SETPCAP: u32 = 8;
-pub const CAP_LINUX_IMMUTABLE: u32 = 9;
-pub const CAP_NET_BIND_SERVICE: u32 = 10;
-pub const CAP_NET_BROADCAST: u32 = 11;
-pub const CAP_NET_ADMIN: u32 = 12;
-pub const CAP_NET_RAW: u32 = 13;
-pub const CAP_IPC_LOCK: u32 = 14;
-pub const CAP_IPC_OWNER: u32 = 15;
-pub const CAP_SYS_MODULE: u32 = 16;
-pub const CAP_SYS_RAWIO: u32 = 17;
-pub const CAP_SYS_CHROOT: u32 = 18;
-pub const CAP_SYS_PTRACE: u32 = 19;
-pub const CAP_SYS_PACCT: u32 = 20;
-pub const CAP_SYS_ADMIN: u32 = 21;
-pub const CAP_SYS_BOOT: u32 = 22;
-pub const CAP_SYS_NICE: u32 = 23;
-pub const CAP_SYS_RESOURCE: u32 = 24;
-pub const CAP_SYS_TIME: u32 = 25;
-pub const CAP_SYS_TTY_CONFIG: u32 = 26;
-pub const CAP_MKNOD: u32 = 27;
-pub const CAP_LEASE: u32 = 28;
-pub const CAP_AUDIT_WRITE: u32 = 29;
-pub const CAP_AUDIT_CONTROL: u32 = 30;
-pub const CAP_SETFCAP: u32 = 31;
-pub const CAP_MAC_OVERRIDE: u32 = 32;
-pub const CAP_MAC_ADMIN: u32 = 33;
-pub const CAP_SYSLOG: u32 = 34;
-pub const CAP_WAKE_ALARM: u32 = 35;
-pub const CAP_BLOCK_SUSPEND: u32 = 36;
-pub const CAP_AUDIT_READ: u32 = 37;
-pub const CAP_PERFMON: u32 = 38;
-pub const CAP_BPF: u32 = 39;
-pub const CAP_CHECKPOINT_RESTORE: u32 = 40;
-pub const CAP_LAST_CAP: u32 = 40;
-pub const O_ACCMODE: u32 = 3;
-pub const O_RDONLY: u32 = 0;
-pub const O_WRONLY: u32 = 1;
-pub const O_RDWR: u32 = 2;
-pub const O_CREAT: u32 = 64;
-pub const O_EXCL: u32 = 128;
-pub const O_NOCTTY: u32 = 256;
-pub const O_TRUNC: u32 = 512;
-pub const O_APPEND: u32 = 1024;
-pub const O_NONBLOCK: u32 = 2048;
-pub const O_DSYNC: u32 = 4096;
-pub const FASYNC: u32 = 8192;
-pub const O_DIRECT: u32 = 16384;
-pub const O_LARGEFILE: u32 = 32768;
-pub const O_DIRECTORY: u32 = 65536;
-pub const O_NOFOLLOW: u32 = 131072;
-pub const O_NOATIME: u32 = 262144;
-pub const O_CLOEXEC: u32 = 524288;
-pub const __O_SYNC: u32 = 1048576;
-pub const O_SYNC: u32 = 1052672;
-pub const O_PATH: u32 = 2097152;
-pub const __O_TMPFILE: u32 = 4194304;
-pub const O_TMPFILE: u32 = 4259840;
-pub const O_TMPFILE_MASK: u32 = 4259904;
-pub const O_NDELAY: u32 = 2048;
-pub const F_DUPFD: u32 = 0;
-pub const F_GETFD: u32 = 1;
-pub const F_SETFD: u32 = 2;
-pub const F_GETFL: u32 = 3;
-pub const F_SETFL: u32 = 4;
-pub const F_GETLK: u32 = 5;
-pub const F_SETLK: u32 = 6;
-pub const F_SETLKW: u32 = 7;
-pub const F_SETOWN: u32 = 8;
-pub const F_GETOWN: u32 = 9;
-pub const F_SETSIG: u32 = 10;
-pub const F_GETSIG: u32 = 11;
-pub const F_GETLK64: u32 = 12;
-pub const F_SETLK64: u32 = 13;
-pub const F_SETLKW64: u32 = 14;
-pub const F_SETOWN_EX: u32 = 15;
-pub const F_GETOWN_EX: u32 = 16;
-pub const F_GETOWNER_UIDS: u32 = 17;
-pub const F_OFD_GETLK: u32 = 36;
-pub const F_OFD_SETLK: u32 = 37;
-pub const F_OFD_SETLKW: u32 = 38;
-pub const F_OWNER_TID: u32 = 0;
-pub const F_OWNER_PID: u32 = 1;
-pub const F_OWNER_PGRP: u32 = 2;
-pub const FD_CLOEXEC: u32 = 1;
-pub const F_RDLCK: u32 = 0;
-pub const F_WRLCK: u32 = 1;
-pub const F_UNLCK: u32 = 2;
-pub const F_EXLCK: u32 = 4;
-pub const F_SHLCK: u32 = 8;
-pub const LOCK_SH: u32 = 1;
-pub const LOCK_EX: u32 = 2;
-pub const LOCK_NB: u32 = 4;
-pub const LOCK_UN: u32 = 8;
-pub const LOCK_MAND: u32 = 32;
-pub const LOCK_READ: u32 = 64;
-pub const LOCK_WRITE: u32 = 128;
-pub const LOCK_RW: u32 = 192;
-pub const F_LINUX_SPECIFIC_BASE: u32 = 1024;
-pub const RESOLVE_NO_XDEV: u32 = 1;
-pub const RESOLVE_NO_MAGICLINKS: u32 = 2;
-pub const RESOLVE_NO_SYMLINKS: u32 = 4;
-pub const RESOLVE_BENEATH: u32 = 8;
-pub const RESOLVE_IN_ROOT: u32 = 16;
-pub const RESOLVE_CACHED: u32 = 32;
-pub const F_SETLEASE: u32 = 1024;
-pub const F_GETLEASE: u32 = 1025;
-pub const F_CANCELLK: u32 = 1029;
-pub const F_DUPFD_CLOEXEC: u32 = 1030;
-pub const F_NOTIFY: u32 = 1026;
-pub const F_SETPIPE_SZ: u32 = 1031;
-pub const F_GETPIPE_SZ: u32 = 1032;
-pub const F_ADD_SEALS: u32 = 1033;
-pub const F_GET_SEALS: u32 = 1034;
-pub const F_SEAL_SEAL: u32 = 1;
-pub const F_SEAL_SHRINK: u32 = 2;
-pub const F_SEAL_GROW: u32 = 4;
-pub const F_SEAL_WRITE: u32 = 8;
-pub const F_SEAL_FUTURE_WRITE: u32 = 16;
-pub const F_GET_RW_HINT: u32 = 1035;
-pub const F_SET_RW_HINT: u32 = 1036;
-pub const F_GET_FILE_RW_HINT: u32 = 1037;
-pub const F_SET_FILE_RW_HINT: u32 = 1038;
-pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const RWH_WRITE_LIFE_NONE: u32 = 1;
-pub const RWH_WRITE_LIFE_SHORT: u32 = 2;
-pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3;
-pub const RWH_WRITE_LIFE_LONG: u32 = 4;
-pub const RWH_WRITE_LIFE_EXTREME: u32 = 5;
-pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const DN_ACCESS: u32 = 1;
-pub const DN_MODIFY: u32 = 2;
-pub const DN_CREATE: u32 = 4;
-pub const DN_DELETE: u32 = 8;
-pub const DN_RENAME: u32 = 16;
-pub const DN_ATTRIB: u32 = 32;
-pub const DN_MULTISHOT: u32 = 2147483648;
-pub const AT_FDCWD: i32 = -100;
-pub const AT_SYMLINK_NOFOLLOW: u32 = 256;
-pub const AT_EACCESS: u32 = 512;
-pub const AT_REMOVEDIR: u32 = 512;
-pub const AT_SYMLINK_FOLLOW: u32 = 1024;
-pub const AT_NO_AUTOMOUNT: u32 = 2048;
-pub const AT_EMPTY_PATH: u32 = 4096;
-pub const AT_STATX_SYNC_TYPE: u32 = 24576;
-pub const AT_STATX_SYNC_AS_STAT: u32 = 0;
-pub const AT_STATX_FORCE_SYNC: u32 = 8192;
-pub const AT_STATX_DONT_SYNC: u32 = 16384;
-pub const AT_RECURSIVE: u32 = 32768;
-pub const EPOLL_CLOEXEC: u32 = 524288;
-pub const EPOLL_CTL_ADD: u32 = 1;
-pub const EPOLL_CTL_DEL: u32 = 2;
-pub const EPOLL_CTL_MOD: u32 = 3;
-pub const POSIX_FADV_NORMAL: u32 = 0;
-pub const POSIX_FADV_RANDOM: u32 = 1;
-pub const POSIX_FADV_SEQUENTIAL: u32 = 2;
-pub const POSIX_FADV_WILLNEED: u32 = 3;
-pub const POSIX_FADV_DONTNEED: u32 = 4;
-pub const POSIX_FADV_NOREUSE: u32 = 5;
-pub const FALLOC_FL_KEEP_SIZE: u32 = 1;
-pub const FALLOC_FL_PUNCH_HOLE: u32 = 2;
-pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4;
-pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8;
-pub const FALLOC_FL_ZERO_RANGE: u32 = 16;
-pub const FALLOC_FL_INSERT_RANGE: u32 = 32;
-pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64;
-pub const NR_OPEN: u32 = 1024;
-pub const NGROUPS_MAX: u32 = 65536;
-pub const ARG_MAX: u32 = 131072;
-pub const LINK_MAX: u32 = 127;
-pub const MAX_CANON: u32 = 255;
-pub const MAX_INPUT: u32 = 255;
-pub const NAME_MAX: u32 = 255;
-pub const PATH_MAX: u32 = 4096;
-pub const PIPE_BUF: u32 = 4096;
-pub const XATTR_NAME_MAX: u32 = 255;
-pub const XATTR_SIZE_MAX: u32 = 65536;
-pub const XATTR_LIST_MAX: u32 = 65536;
-pub const RTSIG_MAX: u32 = 32;
-pub const _IOC_NRBITS: u32 = 8;
-pub const _IOC_TYPEBITS: u32 = 8;
-pub const _IOC_SIZEBITS: u32 = 14;
-pub const _IOC_DIRBITS: u32 = 2;
-pub const _IOC_NRMASK: u32 = 255;
-pub const _IOC_TYPEMASK: u32 = 255;
-pub const _IOC_SIZEMASK: u32 = 16383;
-pub const _IOC_DIRMASK: u32 = 3;
-pub const _IOC_NRSHIFT: u32 = 0;
-pub const _IOC_TYPESHIFT: u32 = 8;
-pub const _IOC_SIZESHIFT: u32 = 16;
-pub const _IOC_DIRSHIFT: u32 = 30;
-pub const _IOC_NONE: u32 = 0;
-pub const _IOC_WRITE: u32 = 1;
-pub const _IOC_READ: u32 = 2;
-pub const IOC_IN: u32 = 1073741824;
-pub const IOC_OUT: u32 = 2147483648;
-pub const IOC_INOUT: u32 = 3221225472;
-pub const IOCSIZE_MASK: u32 = 1073676288;
-pub const IOCSIZE_SHIFT: u32 = 16;
-pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16;
-pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1;
-pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4;
-pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5;
-pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6;
-pub const FSCRYPT_MODE_SM4_XTS: u32 = 7;
-pub const FSCRYPT_MODE_SM4_CTS: u32 = 8;
-pub const FSCRYPT_MODE_ADIANTUM: u32 = 9;
-pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10;
-pub const FSCRYPT_POLICY_V1: u32 = 0;
-pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64;
-pub const FSCRYPT_POLICY_V2: u32 = 2;
-pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16;
-pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1;
-pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1;
-pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3;
-pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1;
-pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FS_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FS_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FS_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FS_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FS_POLICY_FLAGS_VALID: u32 = 7;
-pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0;
-pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1;
-pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2;
-pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3;
-pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4;
-pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5;
-pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6;
-pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9;
-pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FS_MAX_KEY_SIZE: u32 = 64;
-pub const MS_RDONLY: u32 = 1;
-pub const MS_NOSUID: u32 = 2;
-pub const MS_NODEV: u32 = 4;
-pub const MS_NOEXEC: u32 = 8;
-pub const MS_SYNCHRONOUS: u32 = 16;
-pub const MS_REMOUNT: u32 = 32;
-pub const MS_MANDLOCK: u32 = 64;
-pub const MS_DIRSYNC: u32 = 128;
-pub const MS_NOSYMFOLLOW: u32 = 256;
-pub const MS_NOATIME: u32 = 1024;
-pub const MS_NODIRATIME: u32 = 2048;
-pub const MS_BIND: u32 = 4096;
-pub const MS_MOVE: u32 = 8192;
-pub const MS_REC: u32 = 16384;
-pub const MS_VERBOSE: u32 = 32768;
-pub const MS_SILENT: u32 = 32768;
-pub const MS_POSIXACL: u32 = 65536;
-pub const MS_UNBINDABLE: u32 = 131072;
-pub const MS_PRIVATE: u32 = 262144;
-pub const MS_SLAVE: u32 = 524288;
-pub const MS_SHARED: u32 = 1048576;
-pub const MS_RELATIME: u32 = 2097152;
-pub const MS_KERNMOUNT: u32 = 4194304;
-pub const MS_I_VERSION: u32 = 8388608;
-pub const MS_STRICTATIME: u32 = 16777216;
-pub const MS_LAZYTIME: u32 = 33554432;
-pub const MS_SUBMOUNT: u32 = 67108864;
-pub const MS_NOREMOTELOCK: u32 = 134217728;
-pub const MS_NOSEC: u32 = 268435456;
-pub const MS_BORN: u32 = 536870912;
-pub const MS_ACTIVE: u32 = 1073741824;
-pub const MS_NOUSER: u32 = 2147483648;
-pub const MS_RMT_MASK: u32 = 41943121;
-pub const MS_MGC_VAL: u32 = 3236757504;
-pub const MS_MGC_MSK: u32 = 4294901760;
-pub const OPEN_TREE_CLONE: u32 = 1;
-pub const OPEN_TREE_CLOEXEC: u32 = 524288;
-pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1;
-pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2;
-pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4;
-pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16;
-pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32;
-pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64;
-pub const MOVE_MOUNT_SET_GROUP: u32 = 256;
-pub const MOVE_MOUNT__MASK: u32 = 375;
-pub const FSOPEN_CLOEXEC: u32 = 1;
-pub const FSPICK_CLOEXEC: u32 = 1;
-pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2;
-pub const FSPICK_NO_AUTOMOUNT: u32 = 4;
-pub const FSPICK_EMPTY_PATH: u32 = 8;
-pub const FSMOUNT_CLOEXEC: u32 = 1;
-pub const MOUNT_ATTR_RDONLY: u32 = 1;
-pub const MOUNT_ATTR_NOSUID: u32 = 2;
-pub const MOUNT_ATTR_NODEV: u32 = 4;
-pub const MOUNT_ATTR_NOEXEC: u32 = 8;
-pub const MOUNT_ATTR__ATIME: u32 = 112;
-pub const MOUNT_ATTR_RELATIME: u32 = 0;
-pub const MOUNT_ATTR_NOATIME: u32 = 16;
-pub const MOUNT_ATTR_STRICTATIME: u32 = 32;
-pub const MOUNT_ATTR_NODIRATIME: u32 = 128;
-pub const MOUNT_ATTR_IDMAP: u32 = 1048576;
-pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152;
-pub const MOUNT_ATTR_SIZE_VER0: u32 = 32;
-pub const INR_OPEN_CUR: u32 = 1024;
-pub const INR_OPEN_MAX: u32 = 4096;
-pub const BLOCK_SIZE_BITS: u32 = 10;
-pub const BLOCK_SIZE: u32 = 1024;
-pub const SEEK_SET: u32 = 0;
-pub const SEEK_CUR: u32 = 1;
-pub const SEEK_END: u32 = 2;
-pub const SEEK_DATA: u32 = 3;
-pub const SEEK_HOLE: u32 = 4;
-pub const SEEK_MAX: u32 = 4;
-pub const RENAME_NOREPLACE: u32 = 1;
-pub const RENAME_EXCHANGE: u32 = 2;
-pub const RENAME_WHITEOUT: u32 = 4;
-pub const FILE_DEDUPE_RANGE_SAME: u32 = 0;
-pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1;
-pub const NR_FILE: u32 = 8192;
-pub const FS_XFLAG_REALTIME: u32 = 1;
-pub const FS_XFLAG_PREALLOC: u32 = 2;
-pub const FS_XFLAG_IMMUTABLE: u32 = 8;
-pub const FS_XFLAG_APPEND: u32 = 16;
-pub const FS_XFLAG_SYNC: u32 = 32;
-pub const FS_XFLAG_NOATIME: u32 = 64;
-pub const FS_XFLAG_NODUMP: u32 = 128;
-pub const FS_XFLAG_RTINHERIT: u32 = 256;
-pub const FS_XFLAG_PROJINHERIT: u32 = 512;
-pub const FS_XFLAG_NOSYMLINKS: u32 = 1024;
-pub const FS_XFLAG_EXTSIZE: u32 = 2048;
-pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096;
-pub const FS_XFLAG_NODEFRAG: u32 = 8192;
-pub const FS_XFLAG_FILESTREAM: u32 = 16384;
-pub const FS_XFLAG_DAX: u32 = 32768;
-pub const FS_XFLAG_COWEXTSIZE: u32 = 65536;
-pub const FS_XFLAG_HASATTR: u32 = 2147483648;
-pub const BMAP_IOCTL: u32 = 1;
-pub const FSLABEL_MAX: u32 = 256;
-pub const FS_SECRM_FL: u32 = 1;
-pub const FS_UNRM_FL: u32 = 2;
-pub const FS_COMPR_FL: u32 = 4;
-pub const FS_SYNC_FL: u32 = 8;
-pub const FS_IMMUTABLE_FL: u32 = 16;
-pub const FS_APPEND_FL: u32 = 32;
-pub const FS_NODUMP_FL: u32 = 64;
-pub const FS_NOATIME_FL: u32 = 128;
-pub const FS_DIRTY_FL: u32 = 256;
-pub const FS_COMPRBLK_FL: u32 = 512;
-pub const FS_NOCOMP_FL: u32 = 1024;
-pub const FS_ENCRYPT_FL: u32 = 2048;
-pub const FS_BTREE_FL: u32 = 4096;
-pub const FS_INDEX_FL: u32 = 4096;
-pub const FS_IMAGIC_FL: u32 = 8192;
-pub const FS_JOURNAL_DATA_FL: u32 = 16384;
-pub const FS_NOTAIL_FL: u32 = 32768;
-pub const FS_DIRSYNC_FL: u32 = 65536;
-pub const FS_TOPDIR_FL: u32 = 131072;
-pub const FS_HUGE_FILE_FL: u32 = 262144;
-pub const FS_EXTENT_FL: u32 = 524288;
-pub const FS_VERITY_FL: u32 = 1048576;
-pub const FS_EA_INODE_FL: u32 = 2097152;
-pub const FS_EOFBLOCKS_FL: u32 = 4194304;
-pub const FS_NOCOW_FL: u32 = 8388608;
-pub const FS_DAX_FL: u32 = 33554432;
-pub const FS_INLINE_DATA_FL: u32 = 268435456;
-pub const FS_PROJINHERIT_FL: u32 = 536870912;
-pub const FS_CASEFOLD_FL: u32 = 1073741824;
-pub const FS_RESERVED_FL: u32 = 2147483648;
-pub const FS_FL_USER_VISIBLE: u32 = 253951;
-pub const FS_FL_USER_MODIFIABLE: u32 = 229631;
-pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1;
-pub const SYNC_FILE_RANGE_WRITE: u32 = 2;
-pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4;
-pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7;
-pub const FUTEX_WAIT: u32 = 0;
-pub const FUTEX_WAKE: u32 = 1;
-pub const FUTEX_FD: u32 = 2;
-pub const FUTEX_REQUEUE: u32 = 3;
-pub const FUTEX_CMP_REQUEUE: u32 = 4;
-pub const FUTEX_WAKE_OP: u32 = 5;
-pub const FUTEX_LOCK_PI: u32 = 6;
-pub const FUTEX_UNLOCK_PI: u32 = 7;
-pub const FUTEX_TRYLOCK_PI: u32 = 8;
-pub const FUTEX_WAIT_BITSET: u32 = 9;
-pub const FUTEX_WAKE_BITSET: u32 = 10;
-pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11;
-pub const FUTEX_CMP_REQUEUE_PI: u32 = 12;
-pub const FUTEX_LOCK_PI2: u32 = 13;
-pub const FUTEX_PRIVATE_FLAG: u32 = 128;
-pub const FUTEX_CLOCK_REALTIME: u32 = 256;
-pub const FUTEX_CMD_MASK: i32 = -385;
-pub const FUTEX_WAIT_PRIVATE: u32 = 128;
-pub const FUTEX_WAKE_PRIVATE: u32 = 129;
-pub const FUTEX_REQUEUE_PRIVATE: u32 = 131;
-pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132;
-pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133;
-pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134;
-pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141;
-pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135;
-pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136;
-pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137;
-pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138;
-pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139;
-pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140;
-pub const FUTEX_32: u32 = 2;
-pub const FUTEX_WAITV_MAX: u32 = 128;
-pub const FUTEX_WAITERS: u32 = 2147483648;
-pub const FUTEX_OWNER_DIED: u32 = 1073741824;
-pub const FUTEX_TID_MASK: u32 = 1073741823;
-pub const ROBUST_LIST_LIMIT: u32 = 2048;
-pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295;
-pub const FUTEX_OP_SET: u32 = 0;
-pub const FUTEX_OP_ADD: u32 = 1;
-pub const FUTEX_OP_OR: u32 = 2;
-pub const FUTEX_OP_ANDN: u32 = 3;
-pub const FUTEX_OP_XOR: u32 = 4;
-pub const FUTEX_OP_OPARG_SHIFT: u32 = 8;
-pub const FUTEX_OP_CMP_EQ: u32 = 0;
-pub const FUTEX_OP_CMP_NE: u32 = 1;
-pub const FUTEX_OP_CMP_LT: u32 = 2;
-pub const FUTEX_OP_CMP_LE: u32 = 3;
-pub const FUTEX_OP_CMP_GT: u32 = 4;
-pub const FUTEX_OP_CMP_GE: u32 = 5;
-pub const __UAPI_DEF_IF_IFCONF: u32 = 1;
-pub const __UAPI_DEF_IF_IFMAP: u32 = 1;
-pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1;
-pub const __UAPI_DEF_IF_IFREQ: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1;
-pub const __UAPI_DEF_IN_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN_IPPROTO: u32 = 1;
-pub const __UAPI_DEF_IN_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP_MREQ: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1;
-pub const __UAPI_DEF_IN_CLASS: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1;
-pub const __UAPI_DEF_IPV6_MREQ: u32 = 1;
-pub const __UAPI_DEF_IPPROTO_V6: u32 = 1;
-pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1;
-pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1;
-pub const __UAPI_DEF_XATTR: u32 = 1;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const IP_TOS: u32 = 1;
-pub const IP_TTL: u32 = 2;
-pub const IP_HDRINCL: u32 = 3;
-pub const IP_OPTIONS: u32 = 4;
-pub const IP_ROUTER_ALERT: u32 = 5;
-pub const IP_RECVOPTS: u32 = 6;
-pub const IP_RETOPTS: u32 = 7;
-pub const IP_PKTINFO: u32 = 8;
-pub const IP_PKTOPTIONS: u32 = 9;
-pub const IP_MTU_DISCOVER: u32 = 10;
-pub const IP_RECVERR: u32 = 11;
-pub const IP_RECVTTL: u32 = 12;
-pub const IP_RECVTOS: u32 = 13;
-pub const IP_MTU: u32 = 14;
-pub const IP_FREEBIND: u32 = 15;
-pub const IP_IPSEC_POLICY: u32 = 16;
-pub const IP_XFRM_POLICY: u32 = 17;
-pub const IP_PASSSEC: u32 = 18;
-pub const IP_TRANSPARENT: u32 = 19;
-pub const IP_RECVRETOPTS: u32 = 7;
-pub const IP_ORIGDSTADDR: u32 = 20;
-pub const IP_RECVORIGDSTADDR: u32 = 20;
-pub const IP_MINTTL: u32 = 21;
-pub const IP_NODEFRAG: u32 = 22;
-pub const IP_CHECKSUM: u32 = 23;
-pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24;
-pub const IP_RECVFRAGSIZE: u32 = 25;
-pub const IP_RECVERR_RFC4884: u32 = 26;
-pub const IP_PMTUDISC_DONT: u32 = 0;
-pub const IP_PMTUDISC_WANT: u32 = 1;
-pub const IP_PMTUDISC_DO: u32 = 2;
-pub const IP_PMTUDISC_PROBE: u32 = 3;
-pub const IP_PMTUDISC_INTERFACE: u32 = 4;
-pub const IP_PMTUDISC_OMIT: u32 = 5;
-pub const IP_MULTICAST_IF: u32 = 32;
-pub const IP_MULTICAST_TTL: u32 = 33;
-pub const IP_MULTICAST_LOOP: u32 = 34;
-pub const IP_ADD_MEMBERSHIP: u32 = 35;
-pub const IP_DROP_MEMBERSHIP: u32 = 36;
-pub const IP_UNBLOCK_SOURCE: u32 = 37;
-pub const IP_BLOCK_SOURCE: u32 = 38;
-pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39;
-pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40;
-pub const IP_MSFILTER: u32 = 41;
-pub const MCAST_JOIN_GROUP: u32 = 42;
-pub const MCAST_BLOCK_SOURCE: u32 = 43;
-pub const MCAST_UNBLOCK_SOURCE: u32 = 44;
-pub const MCAST_LEAVE_GROUP: u32 = 45;
-pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46;
-pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47;
-pub const MCAST_MSFILTER: u32 = 48;
-pub const IP_MULTICAST_ALL: u32 = 49;
-pub const IP_UNICAST_IF: u32 = 50;
-pub const MCAST_EXCLUDE: u32 = 0;
-pub const MCAST_INCLUDE: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1;
-pub const __SOCK_SIZE__: u32 = 16;
-pub const IN_CLASSA_NET: u32 = 4278190080;
-pub const IN_CLASSA_NSHIFT: u32 = 24;
-pub const IN_CLASSA_HOST: u32 = 16777215;
-pub const IN_CLASSA_MAX: u32 = 128;
-pub const IN_CLASSB_NET: u32 = 4294901760;
-pub const IN_CLASSB_NSHIFT: u32 = 16;
-pub const IN_CLASSB_HOST: u32 = 65535;
-pub const IN_CLASSB_MAX: u32 = 65536;
-pub const IN_CLASSC_NET: u32 = 4294967040;
-pub const IN_CLASSC_NSHIFT: u32 = 8;
-pub const IN_CLASSC_HOST: u32 = 255;
-pub const IN_MULTICAST_NET: u32 = 3758096384;
-pub const IN_CLASSE_NET: u32 = 4294967295;
-pub const IN_CLASSE_NSHIFT: u32 = 0;
-pub const IN_LOOPBACKNET: u32 = 127;
-pub const INADDR_LOOPBACK: u32 = 2130706433;
-pub const INADDR_UNSPEC_GROUP: u32 = 3758096384;
-pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385;
-pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386;
-pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490;
-pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639;
-pub const __LITTLE_ENDIAN: u32 = 1234;
-pub const IN_ACCESS: u32 = 1;
-pub const IN_MODIFY: u32 = 2;
-pub const IN_ATTRIB: u32 = 4;
-pub const IN_CLOSE_WRITE: u32 = 8;
-pub const IN_CLOSE_NOWRITE: u32 = 16;
-pub const IN_OPEN: u32 = 32;
-pub const IN_MOVED_FROM: u32 = 64;
-pub const IN_MOVED_TO: u32 = 128;
-pub const IN_CREATE: u32 = 256;
-pub const IN_DELETE: u32 = 512;
-pub const IN_DELETE_SELF: u32 = 1024;
-pub const IN_MOVE_SELF: u32 = 2048;
-pub const IN_UNMOUNT: u32 = 8192;
-pub const IN_Q_OVERFLOW: u32 = 16384;
-pub const IN_IGNORED: u32 = 32768;
-pub const IN_CLOSE: u32 = 24;
-pub const IN_MOVE: u32 = 192;
-pub const IN_ONLYDIR: u32 = 16777216;
-pub const IN_DONT_FOLLOW: u32 = 33554432;
-pub const IN_EXCL_UNLINK: u32 = 67108864;
-pub const IN_MASK_CREATE: u32 = 268435456;
-pub const IN_MASK_ADD: u32 = 536870912;
-pub const IN_ISDIR: u32 = 1073741824;
-pub const IN_ONESHOT: u32 = 2147483648;
-pub const IN_ALL_EVENTS: u32 = 4095;
-pub const IN_CLOEXEC: u32 = 524288;
-pub const IN_NONBLOCK: u32 = 2048;
-pub const IPTOS_TOS_MASK: u32 = 30;
-pub const IPTOS_LOWDELAY: u32 = 16;
-pub const IPTOS_THROUGHPUT: u32 = 8;
-pub const IPTOS_RELIABILITY: u32 = 4;
-pub const IPTOS_MINCOST: u32 = 2;
-pub const IPTOS_PREC_MASK: u32 = 224;
-pub const IPTOS_PREC_NETCONTROL: u32 = 224;
-pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192;
-pub const IPTOS_PREC_CRITIC_ECP: u32 = 160;
-pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128;
-pub const IPTOS_PREC_FLASH: u32 = 96;
-pub const IPTOS_PREC_IMMEDIATE: u32 = 64;
-pub const IPTOS_PREC_PRIORITY: u32 = 32;
-pub const IPTOS_PREC_ROUTINE: u32 = 0;
-pub const IPOPT_COPY: u32 = 128;
-pub const IPOPT_CLASS_MASK: u32 = 96;
-pub const IPOPT_NUMBER_MASK: u32 = 31;
-pub const IPOPT_CONTROL: u32 = 0;
-pub const IPOPT_RESERVED1: u32 = 32;
-pub const IPOPT_MEASUREMENT: u32 = 64;
-pub const IPOPT_RESERVED2: u32 = 96;
-pub const IPOPT_END: u32 = 0;
-pub const IPOPT_NOOP: u32 = 1;
-pub const IPOPT_SEC: u32 = 130;
-pub const IPOPT_LSRR: u32 = 131;
-pub const IPOPT_TIMESTAMP: u32 = 68;
-pub const IPOPT_CIPSO: u32 = 134;
-pub const IPOPT_RR: u32 = 7;
-pub const IPOPT_SID: u32 = 136;
-pub const IPOPT_SSRR: u32 = 137;
-pub const IPOPT_RA: u32 = 148;
-pub const IPVERSION: u32 = 4;
-pub const MAXTTL: u32 = 255;
-pub const IPDEFTTL: u32 = 64;
-pub const IPOPT_OPTVAL: u32 = 0;
-pub const IPOPT_OLEN: u32 = 1;
-pub const IPOPT_OFFSET: u32 = 2;
-pub const IPOPT_MINOFF: u32 = 4;
-pub const MAX_IPOPTLEN: u32 = 40;
-pub const IPOPT_NOP: u32 = 1;
-pub const IPOPT_EOL: u32 = 0;
-pub const IPOPT_TS: u32 = 68;
-pub const IPOPT_TS_TSONLY: u32 = 0;
-pub const IPOPT_TS_TSANDADDR: u32 = 1;
-pub const IPOPT_TS_PRESPEC: u32 = 3;
-pub const IPV4_BEET_PHMAXLEN: u32 = 8;
-pub const IPV6_FL_A_GET: u32 = 0;
-pub const IPV6_FL_A_PUT: u32 = 1;
-pub const IPV6_FL_A_RENEW: u32 = 2;
-pub const IPV6_FL_F_CREATE: u32 = 1;
-pub const IPV6_FL_F_EXCL: u32 = 2;
-pub const IPV6_FL_F_REFLECT: u32 = 4;
-pub const IPV6_FL_F_REMOTE: u32 = 8;
-pub const IPV6_FL_S_NONE: u32 = 0;
-pub const IPV6_FL_S_EXCL: u32 = 1;
-pub const IPV6_FL_S_PROCESS: u32 = 2;
-pub const IPV6_FL_S_USER: u32 = 3;
-pub const IPV6_FL_S_ANY: u32 = 255;
-pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575;
-pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880;
-pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0;
-pub const IPV6_PRIORITY_FILLER: u32 = 256;
-pub const IPV6_PRIORITY_UNATTENDED: u32 = 512;
-pub const IPV6_PRIORITY_RESERVED1: u32 = 768;
-pub const IPV6_PRIORITY_BULK: u32 = 1024;
-pub const IPV6_PRIORITY_RESERVED2: u32 = 1280;
-pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536;
-pub const IPV6_PRIORITY_CONTROL: u32 = 1792;
-pub const IPV6_PRIORITY_8: u32 = 2048;
-pub const IPV6_PRIORITY_9: u32 = 2304;
-pub const IPV6_PRIORITY_10: u32 = 2560;
-pub const IPV6_PRIORITY_11: u32 = 2816;
-pub const IPV6_PRIORITY_12: u32 = 3072;
-pub const IPV6_PRIORITY_13: u32 = 3328;
-pub const IPV6_PRIORITY_14: u32 = 3584;
-pub const IPV6_PRIORITY_15: u32 = 3840;
-pub const IPPROTO_HOPOPTS: u32 = 0;
-pub const IPPROTO_ROUTING: u32 = 43;
-pub const IPPROTO_FRAGMENT: u32 = 44;
-pub const IPPROTO_ICMPV6: u32 = 58;
-pub const IPPROTO_NONE: u32 = 59;
-pub const IPPROTO_DSTOPTS: u32 = 60;
-pub const IPPROTO_MH: u32 = 135;
-pub const IPV6_TLV_PAD1: u32 = 0;
-pub const IPV6_TLV_PADN: u32 = 1;
-pub const IPV6_TLV_ROUTERALERT: u32 = 5;
-pub const IPV6_TLV_CALIPSO: u32 = 7;
-pub const IPV6_TLV_IOAM: u32 = 49;
-pub const IPV6_TLV_JUMBO: u32 = 194;
-pub const IPV6_TLV_HAO: u32 = 201;
-pub const IPV6_ADDRFORM: u32 = 1;
-pub const IPV6_2292PKTINFO: u32 = 2;
-pub const IPV6_2292HOPOPTS: u32 = 3;
-pub const IPV6_2292DSTOPTS: u32 = 4;
-pub const IPV6_2292RTHDR: u32 = 5;
-pub const IPV6_2292PKTOPTIONS: u32 = 6;
-pub const IPV6_CHECKSUM: u32 = 7;
-pub const IPV6_2292HOPLIMIT: u32 = 8;
-pub const IPV6_NEXTHOP: u32 = 9;
-pub const IPV6_AUTHHDR: u32 = 10;
-pub const IPV6_FLOWINFO: u32 = 11;
-pub const IPV6_UNICAST_HOPS: u32 = 16;
-pub const IPV6_MULTICAST_IF: u32 = 17;
-pub const IPV6_MULTICAST_HOPS: u32 = 18;
-pub const IPV6_MULTICAST_LOOP: u32 = 19;
-pub const IPV6_ADD_MEMBERSHIP: u32 = 20;
-pub const IPV6_DROP_MEMBERSHIP: u32 = 21;
-pub const IPV6_ROUTER_ALERT: u32 = 22;
-pub const IPV6_MTU_DISCOVER: u32 = 23;
-pub const IPV6_MTU: u32 = 24;
-pub const IPV6_RECVERR: u32 = 25;
-pub const IPV6_V6ONLY: u32 = 26;
-pub const IPV6_JOIN_ANYCAST: u32 = 27;
-pub const IPV6_LEAVE_ANYCAST: u32 = 28;
-pub const IPV6_MULTICAST_ALL: u32 = 29;
-pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30;
-pub const IPV6_RECVERR_RFC4884: u32 = 31;
-pub const IPV6_PMTUDISC_DONT: u32 = 0;
-pub const IPV6_PMTUDISC_WANT: u32 = 1;
-pub const IPV6_PMTUDISC_DO: u32 = 2;
-pub const IPV6_PMTUDISC_PROBE: u32 = 3;
-pub const IPV6_PMTUDISC_INTERFACE: u32 = 4;
-pub const IPV6_PMTUDISC_OMIT: u32 = 5;
-pub const IPV6_FLOWLABEL_MGR: u32 = 32;
-pub const IPV6_FLOWINFO_SEND: u32 = 33;
-pub const IPV6_IPSEC_POLICY: u32 = 34;
-pub const IPV6_XFRM_POLICY: u32 = 35;
-pub const IPV6_HDRINCL: u32 = 36;
-pub const IPV6_RECVPKTINFO: u32 = 49;
-pub const IPV6_PKTINFO: u32 = 50;
-pub const IPV6_RECVHOPLIMIT: u32 = 51;
-pub const IPV6_HOPLIMIT: u32 = 52;
-pub const IPV6_RECVHOPOPTS: u32 = 53;
-pub const IPV6_HOPOPTS: u32 = 54;
-pub const IPV6_RTHDRDSTOPTS: u32 = 55;
-pub const IPV6_RECVRTHDR: u32 = 56;
-pub const IPV6_RTHDR: u32 = 57;
-pub const IPV6_RECVDSTOPTS: u32 = 58;
-pub const IPV6_DSTOPTS: u32 = 59;
-pub const IPV6_RECVPATHMTU: u32 = 60;
-pub const IPV6_PATHMTU: u32 = 61;
-pub const IPV6_DONTFRAG: u32 = 62;
-pub const IPV6_RECVTCLASS: u32 = 66;
-pub const IPV6_TCLASS: u32 = 67;
-pub const IPV6_AUTOFLOWLABEL: u32 = 70;
-pub const IPV6_ADDR_PREFERENCES: u32 = 72;
-pub const IPV6_PREFER_SRC_TMP: u32 = 1;
-pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2;
-pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256;
-pub const IPV6_PREFER_SRC_COA: u32 = 4;
-pub const IPV6_PREFER_SRC_HOME: u32 = 1024;
-pub const IPV6_PREFER_SRC_CGA: u32 = 8;
-pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048;
-pub const IPV6_MINHOPCOUNT: u32 = 73;
-pub const IPV6_ORIGDSTADDR: u32 = 74;
-pub const IPV6_RECVORIGDSTADDR: u32 = 74;
-pub const IPV6_TRANSPARENT: u32 = 75;
-pub const IPV6_UNICAST_IF: u32 = 76;
-pub const IPV6_RECVFRAGSIZE: u32 = 77;
-pub const IPV6_FREEBIND: u32 = 78;
-pub const IPV6_MIN_MTU: u32 = 1280;
-pub const IPV6_SRCRT_STRICT: u32 = 1;
-pub const IPV6_SRCRT_TYPE_0: u32 = 0;
-pub const IPV6_SRCRT_TYPE_2: u32 = 2;
-pub const IPV6_SRCRT_TYPE_3: u32 = 3;
-pub const IPV6_SRCRT_TYPE_4: u32 = 4;
-pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0;
-pub const ADFS_SUPER_MAGIC: u32 = 44533;
-pub const AFFS_SUPER_MAGIC: u32 = 44543;
-pub const AFS_SUPER_MAGIC: u32 = 1397113167;
-pub const AUTOFS_SUPER_MAGIC: u32 = 391;
-pub const CEPH_SUPER_MAGIC: u32 = 12805120;
-pub const CODA_SUPER_MAGIC: u32 = 1937076805;
-pub const CRAMFS_MAGIC: u32 = 684539205;
-pub const CRAMFS_MAGIC_WEND: u32 = 1161678120;
-pub const DEBUGFS_MAGIC: u32 = 1684170528;
-pub const SECURITYFS_MAGIC: u32 = 1935894131;
-pub const SELINUX_MAGIC: u32 = 4185718668;
-pub const SMACK_MAGIC: u32 = 1128357203;
-pub const RAMFS_MAGIC: u32 = 2240043254;
-pub const TMPFS_MAGIC: u32 = 16914836;
-pub const HUGETLBFS_MAGIC: u32 = 2508478710;
-pub const SQUASHFS_MAGIC: u32 = 1936814952;
-pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791;
-pub const EFS_SUPER_MAGIC: u32 = 4278867;
-pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530;
-pub const EXT2_SUPER_MAGIC: u32 = 61267;
-pub const EXT3_SUPER_MAGIC: u32 = 61267;
-pub const XENFS_SUPER_MAGIC: u32 = 2881100148;
-pub const EXT4_SUPER_MAGIC: u32 = 61267;
-pub const BTRFS_SUPER_MAGIC: u32 = 2435016766;
-pub const NILFS_SUPER_MAGIC: u32 = 13364;
-pub const F2FS_SUPER_MAGIC: u32 = 4076150800;
-pub const HPFS_SUPER_MAGIC: u32 = 4187351113;
-pub const ISOFS_SUPER_MAGIC: u32 = 38496;
-pub const JFFS2_SUPER_MAGIC: u32 = 29366;
-pub const XFS_SUPER_MAGIC: u32 = 1481003842;
-pub const PSTOREFS_MAGIC: u32 = 1634035564;
-pub const EFIVARFS_MAGIC: u32 = 3730735588;
-pub const HOSTFS_SUPER_MAGIC: u32 = 12648430;
-pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128;
-pub const FUSE_SUPER_MAGIC: u32 = 1702057286;
-pub const MINIX_SUPER_MAGIC: u32 = 4991;
-pub const MINIX_SUPER_MAGIC2: u32 = 5007;
-pub const MINIX2_SUPER_MAGIC: u32 = 9320;
-pub const MINIX2_SUPER_MAGIC2: u32 = 9336;
-pub const MINIX3_SUPER_MAGIC: u32 = 19802;
-pub const MSDOS_SUPER_MAGIC: u32 = 19780;
-pub const EXFAT_SUPER_MAGIC: u32 = 538032816;
-pub const NCP_SUPER_MAGIC: u32 = 22092;
-pub const NFS_SUPER_MAGIC: u32 = 26985;
-pub const OCFS2_SUPER_MAGIC: u32 = 1952539503;
-pub const OPENPROM_SUPER_MAGIC: u32 = 40865;
-pub const QNX4_SUPER_MAGIC: u32 = 47;
-pub const QNX6_SUPER_MAGIC: u32 = 1746473250;
-pub const AFS_FS_MAGIC: u32 = 1799439955;
-pub const REISERFS_SUPER_MAGIC: u32 = 1382369651;
-pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0";
-pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0";
-pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0";
-pub const SMB_SUPER_MAGIC: u32 = 20859;
-pub const CIFS_SUPER_MAGIC: u32 = 4283649346;
-pub const SMB2_SUPER_MAGIC: u32 = 4266872130;
-pub const CGROUP_SUPER_MAGIC: u32 = 2613483;
-pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888;
-pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209;
-pub const STACK_END_MAGIC: u32 = 1470918301;
-pub const TRACEFS_MAGIC: u32 = 1953653091;
-pub const V9FS_MAGIC: u32 = 16914839;
-pub const BDEVFS_MAGIC: u32 = 1650746742;
-pub const DAXFS_MAGIC: u32 = 1684300152;
-pub const BINFMTFS_MAGIC: u32 = 1112100429;
-pub const DEVPTS_SUPER_MAGIC: u32 = 7377;
-pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352;
-pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762;
-pub const PIPEFS_MAGIC: u32 = 1346981957;
-pub const PROC_SUPER_MAGIC: u32 = 40864;
-pub const SOCKFS_MAGIC: u32 = 1397703499;
-pub const SYSFS_MAGIC: u32 = 1650812274;
-pub const USBDEVICE_SUPER_MAGIC: u32 = 40866;
-pub const MTD_INODE_FS_MAGIC: u32 = 288389204;
-pub const ANON_INODE_FS_MAGIC: u32 = 151263540;
-pub const BTRFS_TEST_MAGIC: u32 = 1936880249;
-pub const NSFS_MAGIC: u32 = 1853056627;
-pub const BPF_FS_MAGIC: u32 = 3405662737;
-pub const AAFS_MAGIC: u32 = 1513908720;
-pub const ZONEFS_MAGIC: u32 = 1515144787;
-pub const UDF_SUPER_MAGIC: u32 = 352400198;
-pub const DMA_BUF_MAGIC: u32 = 1145913666;
-pub const DEVMEM_MAGIC: u32 = 1162691661;
-pub const SECRETMEM_MAGIC: u32 = 1397048141;
-pub const MAP_32BIT: u32 = 64;
-pub const PROT_READ: u32 = 1;
-pub const PROT_WRITE: u32 = 2;
-pub const PROT_EXEC: u32 = 4;
-pub const PROT_SEM: u32 = 8;
-pub const PROT_NONE: u32 = 0;
-pub const PROT_GROWSDOWN: u32 = 16777216;
-pub const PROT_GROWSUP: u32 = 33554432;
-pub const MAP_TYPE: u32 = 15;
-pub const MAP_FIXED: u32 = 16;
-pub const MAP_ANONYMOUS: u32 = 32;
-pub const MAP_POPULATE: u32 = 32768;
-pub const MAP_NONBLOCK: u32 = 65536;
-pub const MAP_STACK: u32 = 131072;
-pub const MAP_HUGETLB: u32 = 262144;
-pub const MAP_SYNC: u32 = 524288;
-pub const MAP_FIXED_NOREPLACE: u32 = 1048576;
-pub const MAP_UNINITIALIZED: u32 = 67108864;
-pub const MLOCK_ONFAULT: u32 = 1;
-pub const MS_ASYNC: u32 = 1;
-pub const MS_INVALIDATE: u32 = 2;
-pub const MS_SYNC: u32 = 4;
-pub const MADV_NORMAL: u32 = 0;
-pub const MADV_RANDOM: u32 = 1;
-pub const MADV_SEQUENTIAL: u32 = 2;
-pub const MADV_WILLNEED: u32 = 3;
-pub const MADV_DONTNEED: u32 = 4;
-pub const MADV_FREE: u32 = 8;
-pub const MADV_REMOVE: u32 = 9;
-pub const MADV_DONTFORK: u32 = 10;
-pub const MADV_DOFORK: u32 = 11;
-pub const MADV_HWPOISON: u32 = 100;
-pub const MADV_SOFT_OFFLINE: u32 = 101;
-pub const MADV_MERGEABLE: u32 = 12;
-pub const MADV_UNMERGEABLE: u32 = 13;
-pub const MADV_HUGEPAGE: u32 = 14;
-pub const MADV_NOHUGEPAGE: u32 = 15;
-pub const MADV_DONTDUMP: u32 = 16;
-pub const MADV_DODUMP: u32 = 17;
-pub const MADV_WIPEONFORK: u32 = 18;
-pub const MADV_KEEPONFORK: u32 = 19;
-pub const MADV_COLD: u32 = 20;
-pub const MADV_PAGEOUT: u32 = 21;
-pub const MADV_POPULATE_READ: u32 = 22;
-pub const MADV_POPULATE_WRITE: u32 = 23;
-pub const MADV_DONTNEED_LOCKED: u32 = 24;
-pub const MADV_COLLAPSE: u32 = 25;
-pub const MAP_FILE: u32 = 0;
-pub const PKEY_DISABLE_ACCESS: u32 = 1;
-pub const PKEY_DISABLE_WRITE: u32 = 2;
-pub const PKEY_ACCESS_MASK: u32 = 3;
-pub const MAP_GROWSDOWN: u32 = 256;
-pub const MAP_DENYWRITE: u32 = 2048;
-pub const MAP_EXECUTABLE: u32 = 4096;
-pub const MAP_LOCKED: u32 = 8192;
-pub const MAP_NORESERVE: u32 = 16384;
-pub const MCL_CURRENT: u32 = 1;
-pub const MCL_FUTURE: u32 = 2;
-pub const MCL_ONFAULT: u32 = 4;
-pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26;
-pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63;
-pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096;
-pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824;
-pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416;
-pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280;
-pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144;
-pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872;
-pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736;
-pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600;
-pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192;
-pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056;
-pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920;
-pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784;
-pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376;
-pub const MREMAP_MAYMOVE: u32 = 1;
-pub const MREMAP_FIXED: u32 = 2;
-pub const MREMAP_DONTUNMAP: u32 = 4;
-pub const OVERCOMMIT_GUESS: u32 = 0;
-pub const OVERCOMMIT_ALWAYS: u32 = 1;
-pub const OVERCOMMIT_NEVER: u32 = 2;
-pub const MAP_SHARED: u32 = 1;
-pub const MAP_PRIVATE: u32 = 2;
-pub const MAP_SHARED_VALIDATE: u32 = 3;
-pub const MAP_HUGE_SHIFT: u32 = 26;
-pub const MAP_HUGE_MASK: u32 = 63;
-pub const MAP_HUGE_16KB: u32 = 939524096;
-pub const MAP_HUGE_64KB: u32 = 1073741824;
-pub const MAP_HUGE_512KB: u32 = 1275068416;
-pub const MAP_HUGE_1MB: u32 = 1342177280;
-pub const MAP_HUGE_2MB: u32 = 1409286144;
-pub const MAP_HUGE_8MB: u32 = 1543503872;
-pub const MAP_HUGE_16MB: u32 = 1610612736;
-pub const MAP_HUGE_32MB: u32 = 1677721600;
-pub const MAP_HUGE_256MB: u32 = 1879048192;
-pub const MAP_HUGE_512MB: u32 = 1946157056;
-pub const MAP_HUGE_1GB: u32 = 2013265920;
-pub const MAP_HUGE_2GB: u32 = 2080374784;
-pub const MAP_HUGE_16GB: u32 = 2281701376;
-pub const SIOCGSTAMP_OLD: u32 = 35078;
-pub const SIOCGSTAMPNS_OLD: u32 = 35079;
-pub const SOL_SOCKET: u32 = 1;
-pub const SO_DEBUG: u32 = 1;
-pub const SO_REUSEADDR: u32 = 2;
-pub const SO_TYPE: u32 = 3;
-pub const SO_ERROR: u32 = 4;
-pub const SO_DONTROUTE: u32 = 5;
-pub const SO_BROADCAST: u32 = 6;
-pub const SO_SNDBUF: u32 = 7;
-pub const SO_RCVBUF: u32 = 8;
-pub const SO_SNDBUFFORCE: u32 = 32;
-pub const SO_RCVBUFFORCE: u32 = 33;
-pub const SO_KEEPALIVE: u32 = 9;
-pub const SO_OOBINLINE: u32 = 10;
-pub const SO_NO_CHECK: u32 = 11;
-pub const SO_PRIORITY: u32 = 12;
-pub const SO_LINGER: u32 = 13;
-pub const SO_BSDCOMPAT: u32 = 14;
-pub const SO_REUSEPORT: u32 = 15;
-pub const SO_PASSCRED: u32 = 16;
-pub const SO_PEERCRED: u32 = 17;
-pub const SO_RCVLOWAT: u32 = 18;
-pub const SO_SNDLOWAT: u32 = 19;
-pub const SO_RCVTIMEO_OLD: u32 = 20;
-pub const SO_SNDTIMEO_OLD: u32 = 21;
-pub const SO_SECURITY_AUTHENTICATION: u32 = 22;
-pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23;
-pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24;
-pub const SO_BINDTODEVICE: u32 = 25;
-pub const SO_ATTACH_FILTER: u32 = 26;
-pub const SO_DETACH_FILTER: u32 = 27;
-pub const SO_GET_FILTER: u32 = 26;
-pub const SO_PEERNAME: u32 = 28;
-pub const SO_ACCEPTCONN: u32 = 30;
-pub const SO_PEERSEC: u32 = 31;
-pub const SO_PASSSEC: u32 = 34;
-pub const SO_MARK: u32 = 36;
-pub const SO_PROTOCOL: u32 = 38;
-pub const SO_DOMAIN: u32 = 39;
-pub const SO_RXQ_OVFL: u32 = 40;
-pub const SO_WIFI_STATUS: u32 = 41;
-pub const SCM_WIFI_STATUS: u32 = 41;
-pub const SO_PEEK_OFF: u32 = 42;
-pub const SO_NOFCS: u32 = 43;
-pub const SO_LOCK_FILTER: u32 = 44;
-pub const SO_SELECT_ERR_QUEUE: u32 = 45;
-pub const SO_BUSY_POLL: u32 = 46;
-pub const SO_MAX_PACING_RATE: u32 = 47;
-pub const SO_BPF_EXTENSIONS: u32 = 48;
-pub const SO_INCOMING_CPU: u32 = 49;
-pub const SO_ATTACH_BPF: u32 = 50;
-pub const SO_DETACH_BPF: u32 = 27;
-pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51;
-pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52;
-pub const SO_CNX_ADVICE: u32 = 53;
-pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54;
-pub const SO_MEMINFO: u32 = 55;
-pub const SO_INCOMING_NAPI_ID: u32 = 56;
-pub const SO_COOKIE: u32 = 57;
-pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58;
-pub const SO_PEERGROUPS: u32 = 59;
-pub const SO_ZEROCOPY: u32 = 60;
-pub const SO_TXTIME: u32 = 61;
-pub const SCM_TXTIME: u32 = 61;
-pub const SO_BINDTOIFINDEX: u32 = 62;
-pub const SO_TIMESTAMP_OLD: u32 = 29;
-pub const SO_TIMESTAMPNS_OLD: u32 = 35;
-pub const SO_TIMESTAMPING_OLD: u32 = 37;
-pub const SO_TIMESTAMP_NEW: u32 = 63;
-pub const SO_TIMESTAMPNS_NEW: u32 = 64;
-pub const SO_TIMESTAMPING_NEW: u32 = 65;
-pub const SO_RCVTIMEO_NEW: u32 = 66;
-pub const SO_SNDTIMEO_NEW: u32 = 67;
-pub const SO_DETACH_REUSEPORT_BPF: u32 = 68;
-pub const SO_PREFER_BUSY_POLL: u32 = 69;
-pub const SO_BUSY_POLL_BUDGET: u32 = 70;
-pub const SO_NETNS_COOKIE: u32 = 71;
-pub const SO_BUF_LOCK: u32 = 72;
-pub const SO_RESERVE_MEM: u32 = 73;
-pub const SO_TXREHASH: u32 = 74;
-pub const SO_RCVMARK: u32 = 75;
-pub const SYS_SOCKET: u32 = 1;
-pub const SYS_BIND: u32 = 2;
-pub const SYS_CONNECT: u32 = 3;
-pub const SYS_LISTEN: u32 = 4;
-pub const SYS_ACCEPT: u32 = 5;
-pub const SYS_GETSOCKNAME: u32 = 6;
-pub const SYS_GETPEERNAME: u32 = 7;
-pub const SYS_SOCKETPAIR: u32 = 8;
-pub const SYS_SEND: u32 = 9;
-pub const SYS_RECV: u32 = 10;
-pub const SYS_SENDTO: u32 = 11;
-pub const SYS_RECVFROM: u32 = 12;
-pub const SYS_SHUTDOWN: u32 = 13;
-pub const SYS_SETSOCKOPT: u32 = 14;
-pub const SYS_GETSOCKOPT: u32 = 15;
-pub const SYS_SENDMSG: u32 = 16;
-pub const SYS_RECVMSG: u32 = 17;
-pub const SYS_ACCEPT4: u32 = 18;
-pub const SYS_RECVMMSG: u32 = 19;
-pub const SYS_SENDMMSG: u32 = 20;
-pub const __SO_ACCEPTCON: u32 = 65536;
-pub const POLLIN: u32 = 1;
-pub const POLLPRI: u32 = 2;
-pub const POLLOUT: u32 = 4;
-pub const POLLERR: u32 = 8;
-pub const POLLHUP: u32 = 16;
-pub const POLLNVAL: u32 = 32;
-pub const POLLRDNORM: u32 = 64;
-pub const POLLRDBAND: u32 = 128;
-pub const POLLWRNORM: u32 = 256;
-pub const POLLWRBAND: u32 = 512;
-pub const POLLMSG: u32 = 1024;
-pub const POLLREMOVE: u32 = 4096;
-pub const POLLRDHUP: u32 = 8192;
-pub const PR_SET_PDEATHSIG: u32 = 1;
-pub const PR_GET_PDEATHSIG: u32 = 2;
-pub const PR_GET_DUMPABLE: u32 = 3;
-pub const PR_SET_DUMPABLE: u32 = 4;
-pub const PR_GET_UNALIGN: u32 = 5;
-pub const PR_SET_UNALIGN: u32 = 6;
-pub const PR_UNALIGN_NOPRINT: u32 = 1;
-pub const PR_UNALIGN_SIGBUS: u32 = 2;
-pub const PR_GET_KEEPCAPS: u32 = 7;
-pub const PR_SET_KEEPCAPS: u32 = 8;
-pub const PR_GET_FPEMU: u32 = 9;
-pub const PR_SET_FPEMU: u32 = 10;
-pub const PR_FPEMU_NOPRINT: u32 = 1;
-pub const PR_FPEMU_SIGFPE: u32 = 2;
-pub const PR_GET_FPEXC: u32 = 11;
-pub const PR_SET_FPEXC: u32 = 12;
-pub const PR_FP_EXC_SW_ENABLE: u32 = 128;
-pub const PR_FP_EXC_DIV: u32 = 65536;
-pub const PR_FP_EXC_OVF: u32 = 131072;
-pub const PR_FP_EXC_UND: u32 = 262144;
-pub const PR_FP_EXC_RES: u32 = 524288;
-pub const PR_FP_EXC_INV: u32 = 1048576;
-pub const PR_FP_EXC_DISABLED: u32 = 0;
-pub const PR_FP_EXC_NONRECOV: u32 = 1;
-pub const PR_FP_EXC_ASYNC: u32 = 2;
-pub const PR_FP_EXC_PRECISE: u32 = 3;
-pub const PR_GET_TIMING: u32 = 13;
-pub const PR_SET_TIMING: u32 = 14;
-pub const PR_TIMING_STATISTICAL: u32 = 0;
-pub const PR_TIMING_TIMESTAMP: u32 = 1;
-pub const PR_SET_NAME: u32 = 15;
-pub const PR_GET_NAME: u32 = 16;
-pub const PR_GET_ENDIAN: u32 = 19;
-pub const PR_SET_ENDIAN: u32 = 20;
-pub const PR_ENDIAN_BIG: u32 = 0;
-pub const PR_ENDIAN_LITTLE: u32 = 1;
-pub const PR_ENDIAN_PPC_LITTLE: u32 = 2;
-pub const PR_GET_SECCOMP: u32 = 21;
-pub const PR_SET_SECCOMP: u32 = 22;
-pub const PR_CAPBSET_READ: u32 = 23;
-pub const PR_CAPBSET_DROP: u32 = 24;
-pub const PR_GET_TSC: u32 = 25;
-pub const PR_SET_TSC: u32 = 26;
-pub const PR_TSC_ENABLE: u32 = 1;
-pub const PR_TSC_SIGSEGV: u32 = 2;
-pub const PR_GET_SECUREBITS: u32 = 27;
-pub const PR_SET_SECUREBITS: u32 = 28;
-pub const PR_SET_TIMERSLACK: u32 = 29;
-pub const PR_GET_TIMERSLACK: u32 = 30;
-pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31;
-pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32;
-pub const PR_MCE_KILL: u32 = 33;
-pub const PR_MCE_KILL_CLEAR: u32 = 0;
-pub const PR_MCE_KILL_SET: u32 = 1;
-pub const PR_MCE_KILL_LATE: u32 = 0;
-pub const PR_MCE_KILL_EARLY: u32 = 1;
-pub const PR_MCE_KILL_DEFAULT: u32 = 2;
-pub const PR_MCE_KILL_GET: u32 = 34;
-pub const PR_SET_MM: u32 = 35;
-pub const PR_SET_MM_START_CODE: u32 = 1;
-pub const PR_SET_MM_END_CODE: u32 = 2;
-pub const PR_SET_MM_START_DATA: u32 = 3;
-pub const PR_SET_MM_END_DATA: u32 = 4;
-pub const PR_SET_MM_START_STACK: u32 = 5;
-pub const PR_SET_MM_START_BRK: u32 = 6;
-pub const PR_SET_MM_BRK: u32 = 7;
-pub const PR_SET_MM_ARG_START: u32 = 8;
-pub const PR_SET_MM_ARG_END: u32 = 9;
-pub const PR_SET_MM_ENV_START: u32 = 10;
-pub const PR_SET_MM_ENV_END: u32 = 11;
-pub const PR_SET_MM_AUXV: u32 = 12;
-pub const PR_SET_MM_EXE_FILE: u32 = 13;
-pub const PR_SET_MM_MAP: u32 = 14;
-pub const PR_SET_MM_MAP_SIZE: u32 = 15;
-pub const PR_SET_PTRACER: u32 = 1499557217;
-pub const PR_SET_CHILD_SUBREAPER: u32 = 36;
-pub const PR_GET_CHILD_SUBREAPER: u32 = 37;
-pub const PR_SET_NO_NEW_PRIVS: u32 = 38;
-pub const PR_GET_NO_NEW_PRIVS: u32 = 39;
-pub const PR_GET_TID_ADDRESS: u32 = 40;
-pub const PR_SET_THP_DISABLE: u32 = 41;
-pub const PR_GET_THP_DISABLE: u32 = 42;
-pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43;
-pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44;
-pub const PR_SET_FP_MODE: u32 = 45;
-pub const PR_GET_FP_MODE: u32 = 46;
-pub const PR_FP_MODE_FR: u32 = 1;
-pub const PR_FP_MODE_FRE: u32 = 2;
-pub const PR_CAP_AMBIENT: u32 = 47;
-pub const PR_CAP_AMBIENT_IS_SET: u32 = 1;
-pub const PR_CAP_AMBIENT_RAISE: u32 = 2;
-pub const PR_CAP_AMBIENT_LOWER: u32 = 3;
-pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4;
-pub const PR_SVE_SET_VL: u32 = 50;
-pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SVE_GET_VL: u32 = 51;
-pub const PR_SVE_VL_LEN_MASK: u32 = 65535;
-pub const PR_SVE_VL_INHERIT: u32 = 131072;
-pub const PR_GET_SPECULATION_CTRL: u32 = 52;
-pub const PR_SET_SPECULATION_CTRL: u32 = 53;
-pub const PR_SPEC_STORE_BYPASS: u32 = 0;
-pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1;
-pub const PR_SPEC_L1D_FLUSH: u32 = 2;
-pub const PR_SPEC_NOT_AFFECTED: u32 = 0;
-pub const PR_SPEC_PRCTL: u32 = 1;
-pub const PR_SPEC_ENABLE: u32 = 2;
-pub const PR_SPEC_DISABLE: u32 = 4;
-pub const PR_SPEC_FORCE_DISABLE: u32 = 8;
-pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16;
-pub const PR_PAC_RESET_KEYS: u32 = 54;
-pub const PR_PAC_APIAKEY: u32 = 1;
-pub const PR_PAC_APIBKEY: u32 = 2;
-pub const PR_PAC_APDAKEY: u32 = 4;
-pub const PR_PAC_APDBKEY: u32 = 8;
-pub const PR_PAC_APGAKEY: u32 = 16;
-pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55;
-pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56;
-pub const PR_TAGGED_ADDR_ENABLE: u32 = 1;
-pub const PR_MTE_TCF_NONE: u32 = 0;
-pub const PR_MTE_TCF_SYNC: u32 = 2;
-pub const PR_MTE_TCF_ASYNC: u32 = 4;
-pub const PR_MTE_TCF_MASK: u32 = 6;
-pub const PR_MTE_TAG_SHIFT: u32 = 3;
-pub const PR_MTE_TAG_MASK: u32 = 524280;
-pub const PR_MTE_TCF_SHIFT: u32 = 1;
-pub const PR_SET_IO_FLUSHER: u32 = 57;
-pub const PR_GET_IO_FLUSHER: u32 = 58;
-pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59;
-pub const PR_SYS_DISPATCH_OFF: u32 = 0;
-pub const PR_SYS_DISPATCH_ON: u32 = 1;
-pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0;
-pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1;
-pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60;
-pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61;
-pub const PR_SCHED_CORE: u32 = 62;
-pub const PR_SCHED_CORE_GET: u32 = 0;
-pub const PR_SCHED_CORE_CREATE: u32 = 1;
-pub const PR_SCHED_CORE_SHARE_TO: u32 = 2;
-pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3;
-pub const PR_SCHED_CORE_MAX: u32 = 4;
-pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0;
-pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1;
-pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2;
-pub const PR_SME_SET_VL: u32 = 63;
-pub const PR_SME_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SME_GET_VL: u32 = 64;
-pub const PR_SME_VL_LEN_MASK: u32 = 65535;
-pub const PR_SME_VL_INHERIT: u32 = 131072;
-pub const PR_SET_VMA: u32 = 1398164801;
-pub const PR_SET_VMA_ANON_NAME: u32 = 0;
-pub const GRND_NONBLOCK: u32 = 1;
-pub const GRND_RANDOM: u32 = 2;
-pub const GRND_INSECURE: u32 = 4;
-pub const ITIMER_REAL: u32 = 0;
-pub const ITIMER_VIRTUAL: u32 = 1;
-pub const ITIMER_PROF: u32 = 2;
-pub const CLOCK_REALTIME: u32 = 0;
-pub const CLOCK_MONOTONIC: u32 = 1;
-pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2;
-pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3;
-pub const CLOCK_MONOTONIC_RAW: u32 = 4;
-pub const CLOCK_REALTIME_COARSE: u32 = 5;
-pub const CLOCK_MONOTONIC_COARSE: u32 = 6;
-pub const CLOCK_BOOTTIME: u32 = 7;
-pub const CLOCK_REALTIME_ALARM: u32 = 8;
-pub const CLOCK_BOOTTIME_ALARM: u32 = 9;
-pub const CLOCK_SGI_CYCLE: u32 = 10;
-pub const CLOCK_TAI: u32 = 11;
-pub const MAX_CLOCKS: u32 = 16;
-pub const CLOCKS_MASK: u32 = 1;
-pub const CLOCKS_MONO: u32 = 1;
-pub const TIMER_ABSTIME: u32 = 1;
-pub const RUSAGE_SELF: u32 = 0;
-pub const RUSAGE_CHILDREN: i32 = -1;
-pub const RUSAGE_BOTH: i32 = -2;
-pub const RUSAGE_THREAD: u32 = 1;
-pub const RLIM64_INFINITY: i32 = -1;
-pub const PRIO_MIN: i32 = -20;
-pub const PRIO_MAX: u32 = 20;
-pub const PRIO_PROCESS: u32 = 0;
-pub const PRIO_PGRP: u32 = 1;
-pub const PRIO_USER: u32 = 2;
-pub const _STK_LIM: u32 = 8388608;
-pub const MLOCK_LIMIT: u32 = 8388608;
-pub const RLIMIT_CPU: u32 = 0;
-pub const RLIMIT_FSIZE: u32 = 1;
-pub const RLIMIT_DATA: u32 = 2;
-pub const RLIMIT_STACK: u32 = 3;
-pub const RLIMIT_CORE: u32 = 4;
-pub const RLIMIT_RSS: u32 = 5;
-pub const RLIMIT_NPROC: u32 = 6;
-pub const RLIMIT_NOFILE: u32 = 7;
-pub const RLIMIT_MEMLOCK: u32 = 8;
-pub const RLIMIT_AS: u32 = 9;
-pub const RLIMIT_LOCKS: u32 = 10;
-pub const RLIMIT_SIGPENDING: u32 = 11;
-pub const RLIMIT_MSGQUEUE: u32 = 12;
-pub const RLIMIT_NICE: u32 = 13;
-pub const RLIMIT_RTPRIO: u32 = 14;
-pub const RLIMIT_RTTIME: u32 = 15;
-pub const RLIM_NLIMITS: u32 = 16;
-pub const RLIM_INFINITY: i32 = -1;
-pub const CSIGNAL: u32 = 255;
-pub const CLONE_VM: u32 = 256;
-pub const CLONE_FS: u32 = 512;
-pub const CLONE_FILES: u32 = 1024;
-pub const CLONE_SIGHAND: u32 = 2048;
-pub const CLONE_PIDFD: u32 = 4096;
-pub const CLONE_PTRACE: u32 = 8192;
-pub const CLONE_VFORK: u32 = 16384;
-pub const CLONE_PARENT: u32 = 32768;
-pub const CLONE_THREAD: u32 = 65536;
-pub const CLONE_NEWNS: u32 = 131072;
-pub const CLONE_SYSVSEM: u32 = 262144;
-pub const CLONE_SETTLS: u32 = 524288;
-pub const CLONE_PARENT_SETTID: u32 = 1048576;
-pub const CLONE_CHILD_CLEARTID: u32 = 2097152;
-pub const CLONE_DETACHED: u32 = 4194304;
-pub const CLONE_UNTRACED: u32 = 8388608;
-pub const CLONE_CHILD_SETTID: u32 = 16777216;
-pub const CLONE_NEWCGROUP: u32 = 33554432;
-pub const CLONE_NEWUTS: u32 = 67108864;
-pub const CLONE_NEWIPC: u32 = 134217728;
-pub const CLONE_NEWUSER: u32 = 268435456;
-pub const CLONE_NEWPID: u32 = 536870912;
-pub const CLONE_NEWNET: u32 = 1073741824;
-pub const CLONE_IO: u32 = 2147483648;
-pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296;
-pub const CLONE_INTO_CGROUP: u64 = 8589934592;
-pub const CLONE_NEWTIME: u32 = 128;
-pub const CLONE_ARGS_SIZE_VER0: u32 = 64;
-pub const CLONE_ARGS_SIZE_VER1: u32 = 80;
-pub const CLONE_ARGS_SIZE_VER2: u32 = 88;
-pub const SCHED_NORMAL: u32 = 0;
-pub const SCHED_FIFO: u32 = 1;
-pub const SCHED_RR: u32 = 2;
-pub const SCHED_BATCH: u32 = 3;
-pub const SCHED_IDLE: u32 = 5;
-pub const SCHED_DEADLINE: u32 = 6;
-pub const SCHED_RESET_ON_FORK: u32 = 1073741824;
-pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1;
-pub const SCHED_FLAG_RECLAIM: u32 = 2;
-pub const SCHED_FLAG_DL_OVERRUN: u32 = 4;
-pub const SCHED_FLAG_KEEP_POLICY: u32 = 8;
-pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16;
-pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32;
-pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64;
-pub const SCHED_FLAG_KEEP_ALL: u32 = 24;
-pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96;
-pub const SCHED_FLAG_ALL: u32 = 127;
-pub const NSIG: u32 = 32;
-pub const SIGHUP: u32 = 1;
-pub const SIGINT: u32 = 2;
-pub const SIGQUIT: u32 = 3;
-pub const SIGILL: u32 = 4;
-pub const SIGTRAP: u32 = 5;
-pub const SIGABRT: u32 = 6;
-pub const SIGIOT: u32 = 6;
-pub const SIGBUS: u32 = 7;
-pub const SIGFPE: u32 = 8;
-pub const SIGKILL: u32 = 9;
-pub const SIGUSR1: u32 = 10;
-pub const SIGSEGV: u32 = 11;
-pub const SIGUSR2: u32 = 12;
-pub const SIGPIPE: u32 = 13;
-pub const SIGALRM: u32 = 14;
-pub const SIGTERM: u32 = 15;
-pub const SIGSTKFLT: u32 = 16;
-pub const SIGCHLD: u32 = 17;
-pub const SIGCONT: u32 = 18;
-pub const SIGSTOP: u32 = 19;
-pub const SIGTSTP: u32 = 20;
-pub const SIGTTIN: u32 = 21;
-pub const SIGTTOU: u32 = 22;
-pub const SIGURG: u32 = 23;
-pub const SIGXCPU: u32 = 24;
-pub const SIGXFSZ: u32 = 25;
-pub const SIGVTALRM: u32 = 26;
-pub const SIGPROF: u32 = 27;
-pub const SIGWINCH: u32 = 28;
-pub const SIGIO: u32 = 29;
-pub const SIGPOLL: u32 = 29;
-pub const SIGPWR: u32 = 30;
-pub const SIGSYS: u32 = 31;
-pub const SIGUNUSED: u32 = 31;
-pub const SIGRTMIN: u32 = 32;
-pub const SA_RESTORER: u32 = 67108864;
-pub const MINSIGSTKSZ: u32 = 2048;
-pub const SIGSTKSZ: u32 = 8192;
-pub const SA_NOCLDSTOP: u32 = 1;
-pub const SA_NOCLDWAIT: u32 = 2;
-pub const SA_SIGINFO: u32 = 4;
-pub const SA_UNSUPPORTED: u32 = 1024;
-pub const SA_EXPOSE_TAGBITS: u32 = 2048;
-pub const SA_ONSTACK: u32 = 134217728;
-pub const SA_RESTART: u32 = 268435456;
-pub const SA_NODEFER: u32 = 1073741824;
-pub const SA_RESETHAND: u32 = 2147483648;
-pub const SA_NOMASK: u32 = 1073741824;
-pub const SA_ONESHOT: u32 = 2147483648;
-pub const SIG_BLOCK: u32 = 0;
-pub const SIG_UNBLOCK: u32 = 1;
-pub const SIG_SETMASK: u32 = 2;
-pub const SI_MAX_SIZE: u32 = 128;
-pub const SI_USER: u32 = 0;
-pub const SI_KERNEL: u32 = 128;
-pub const SI_QUEUE: i32 = -1;
-pub const SI_TIMER: i32 = -2;
-pub const SI_MESGQ: i32 = -3;
-pub const SI_ASYNCIO: i32 = -4;
-pub const SI_SIGIO: i32 = -5;
-pub const SI_TKILL: i32 = -6;
-pub const SI_DETHREAD: i32 = -7;
-pub const SI_ASYNCNL: i32 = -60;
-pub const ILL_ILLOPC: u32 = 1;
-pub const ILL_ILLOPN: u32 = 2;
-pub const ILL_ILLADR: u32 = 3;
-pub const ILL_ILLTRP: u32 = 4;
-pub const ILL_PRVOPC: u32 = 5;
-pub const ILL_PRVREG: u32 = 6;
-pub const ILL_COPROC: u32 = 7;
-pub const ILL_BADSTK: u32 = 8;
-pub const ILL_BADIADDR: u32 = 9;
-pub const __ILL_BREAK: u32 = 10;
-pub const __ILL_BNDMOD: u32 = 11;
-pub const NSIGILL: u32 = 11;
-pub const FPE_INTDIV: u32 = 1;
-pub const FPE_INTOVF: u32 = 2;
-pub const FPE_FLTDIV: u32 = 3;
-pub const FPE_FLTOVF: u32 = 4;
-pub const FPE_FLTUND: u32 = 5;
-pub const FPE_FLTRES: u32 = 6;
-pub const FPE_FLTINV: u32 = 7;
-pub const FPE_FLTSUB: u32 = 8;
-pub const __FPE_DECOVF: u32 = 9;
-pub const __FPE_DECDIV: u32 = 10;
-pub const __FPE_DECERR: u32 = 11;
-pub const __FPE_INVASC: u32 = 12;
-pub const __FPE_INVDEC: u32 = 13;
-pub const FPE_FLTUNK: u32 = 14;
-pub const FPE_CONDTRAP: u32 = 15;
-pub const NSIGFPE: u32 = 15;
-pub const SEGV_MAPERR: u32 = 1;
-pub const SEGV_ACCERR: u32 = 2;
-pub const SEGV_BNDERR: u32 = 3;
-pub const SEGV_PKUERR: u32 = 4;
-pub const SEGV_ACCADI: u32 = 5;
-pub const SEGV_ADIDERR: u32 = 6;
-pub const SEGV_ADIPERR: u32 = 7;
-pub const SEGV_MTEAERR: u32 = 8;
-pub const SEGV_MTESERR: u32 = 9;
-pub const NSIGSEGV: u32 = 9;
-pub const BUS_ADRALN: u32 = 1;
-pub const BUS_ADRERR: u32 = 2;
-pub const BUS_OBJERR: u32 = 3;
-pub const BUS_MCEERR_AR: u32 = 4;
-pub const BUS_MCEERR_AO: u32 = 5;
-pub const NSIGBUS: u32 = 5;
-pub const TRAP_BRKPT: u32 = 1;
-pub const TRAP_TRACE: u32 = 2;
-pub const TRAP_BRANCH: u32 = 3;
-pub const TRAP_HWBKPT: u32 = 4;
-pub const TRAP_UNK: u32 = 5;
-pub const TRAP_PERF: u32 = 6;
-pub const NSIGTRAP: u32 = 6;
-pub const TRAP_PERF_FLAG_ASYNC: u32 = 1;
-pub const CLD_EXITED: u32 = 1;
-pub const CLD_KILLED: u32 = 2;
-pub const CLD_DUMPED: u32 = 3;
-pub const CLD_TRAPPED: u32 = 4;
-pub const CLD_STOPPED: u32 = 5;
-pub const CLD_CONTINUED: u32 = 6;
-pub const NSIGCHLD: u32 = 6;
-pub const POLL_IN: u32 = 1;
-pub const POLL_OUT: u32 = 2;
-pub const POLL_MSG: u32 = 3;
-pub const POLL_ERR: u32 = 4;
-pub const POLL_PRI: u32 = 5;
-pub const POLL_HUP: u32 = 6;
-pub const NSIGPOLL: u32 = 6;
-pub const SYS_SECCOMP: u32 = 1;
-pub const SYS_USER_DISPATCH: u32 = 2;
-pub const NSIGSYS: u32 = 2;
-pub const EMT_TAGOVF: u32 = 1;
-pub const NSIGEMT: u32 = 1;
-pub const SIGEV_SIGNAL: u32 = 0;
-pub const SIGEV_NONE: u32 = 1;
-pub const SIGEV_THREAD: u32 = 2;
-pub const SIGEV_THREAD_ID: u32 = 4;
-pub const SIGEV_MAX_SIZE: u32 = 64;
-pub const SS_ONSTACK: u32 = 1;
-pub const SS_DISABLE: u32 = 2;
-pub const SS_AUTODISARM: u32 = 2147483648;
-pub const SS_FLAG_BITS: u32 = 2147483648;
-pub const S_IFMT: u32 = 61440;
-pub const S_IFSOCK: u32 = 49152;
-pub const S_IFLNK: u32 = 40960;
-pub const S_IFREG: u32 = 32768;
-pub const S_IFBLK: u32 = 24576;
-pub const S_IFDIR: u32 = 16384;
-pub const S_IFCHR: u32 = 8192;
-pub const S_IFIFO: u32 = 4096;
-pub const S_ISUID: u32 = 2048;
-pub const S_ISGID: u32 = 1024;
-pub const S_ISVTX: u32 = 512;
-pub const S_IRWXU: u32 = 448;
-pub const S_IRUSR: u32 = 256;
-pub const S_IWUSR: u32 = 128;
-pub const S_IXUSR: u32 = 64;
-pub const S_IRWXG: u32 = 56;
-pub const S_IRGRP: u32 = 32;
-pub const S_IWGRP: u32 = 16;
-pub const S_IXGRP: u32 = 8;
-pub const S_IRWXO: u32 = 7;
-pub const S_IROTH: u32 = 4;
-pub const S_IWOTH: u32 = 2;
-pub const S_IXOTH: u32 = 1;
-pub const STATX_TYPE: u32 = 1;
-pub const STATX_MODE: u32 = 2;
-pub const STATX_NLINK: u32 = 4;
-pub const STATX_UID: u32 = 8;
-pub const STATX_GID: u32 = 16;
-pub const STATX_ATIME: u32 = 32;
-pub const STATX_MTIME: u32 = 64;
-pub const STATX_CTIME: u32 = 128;
-pub const STATX_INO: u32 = 256;
-pub const STATX_SIZE: u32 = 512;
-pub const STATX_BLOCKS: u32 = 1024;
-pub const STATX_BASIC_STATS: u32 = 2047;
-pub const STATX_BTIME: u32 = 2048;
-pub const STATX_MNT_ID: u32 = 4096;
-pub const STATX_DIOALIGN: u32 = 8192;
-pub const STATX__RESERVED: u32 = 2147483648;
-pub const STATX_ALL: u32 = 4095;
-pub const STATX_ATTR_COMPRESSED: u32 = 4;
-pub const STATX_ATTR_IMMUTABLE: u32 = 16;
-pub const STATX_ATTR_APPEND: u32 = 32;
-pub const STATX_ATTR_NODUMP: u32 = 64;
-pub const STATX_ATTR_ENCRYPTED: u32 = 2048;
-pub const STATX_ATTR_AUTOMOUNT: u32 = 4096;
-pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192;
-pub const STATX_ATTR_VERITY: u32 = 1048576;
-pub const STATX_ATTR_DAX: u32 = 2097152;
-pub const SI_LOAD_SHIFT: u32 = 16;
-pub const TCP_MSS_DEFAULT: u32 = 536;
-pub const TCP_MSS_DESIRED: u32 = 1220;
-pub const TCP_NODELAY: u32 = 1;
-pub const TCP_MAXSEG: u32 = 2;
-pub const TCP_CORK: u32 = 3;
-pub const TCP_KEEPIDLE: u32 = 4;
-pub const TCP_KEEPINTVL: u32 = 5;
-pub const TCP_KEEPCNT: u32 = 6;
-pub const TCP_SYNCNT: u32 = 7;
-pub const TCP_LINGER2: u32 = 8;
-pub const TCP_DEFER_ACCEPT: u32 = 9;
-pub const TCP_WINDOW_CLAMP: u32 = 10;
-pub const TCP_INFO: u32 = 11;
-pub const TCP_QUICKACK: u32 = 12;
-pub const TCP_CONGESTION: u32 = 13;
-pub const TCP_MD5SIG: u32 = 14;
-pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16;
-pub const TCP_THIN_DUPACK: u32 = 17;
-pub const TCP_USER_TIMEOUT: u32 = 18;
-pub const TCP_REPAIR: u32 = 19;
-pub const TCP_REPAIR_QUEUE: u32 = 20;
-pub const TCP_QUEUE_SEQ: u32 = 21;
-pub const TCP_REPAIR_OPTIONS: u32 = 22;
-pub const TCP_FASTOPEN: u32 = 23;
-pub const TCP_TIMESTAMP: u32 = 24;
-pub const TCP_NOTSENT_LOWAT: u32 = 25;
-pub const TCP_CC_INFO: u32 = 26;
-pub const TCP_SAVE_SYN: u32 = 27;
-pub const TCP_SAVED_SYN: u32 = 28;
-pub const TCP_REPAIR_WINDOW: u32 = 29;
-pub const TCP_FASTOPEN_CONNECT: u32 = 30;
-pub const TCP_ULP: u32 = 31;
-pub const TCP_MD5SIG_EXT: u32 = 32;
-pub const TCP_FASTOPEN_KEY: u32 = 33;
-pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34;
-pub const TCP_ZEROCOPY_RECEIVE: u32 = 35;
-pub const TCP_INQ: u32 = 36;
-pub const TCP_CM_INQ: u32 = 36;
-pub const TCP_TX_DELAY: u32 = 37;
-pub const TCP_REPAIR_ON: u32 = 1;
-pub const TCP_REPAIR_OFF: u32 = 0;
-pub const TCP_REPAIR_OFF_NO_WP: i32 = -1;
-pub const TCPI_OPT_TIMESTAMPS: u32 = 1;
-pub const TCPI_OPT_SACK: u32 = 2;
-pub const TCPI_OPT_WSCALE: u32 = 4;
-pub const TCPI_OPT_ECN: u32 = 8;
-pub const TCPI_OPT_ECN_SEEN: u32 = 16;
-pub const TCPI_OPT_SYN_DATA: u32 = 32;
-pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80;
-pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
-pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
-pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
-pub const IGNBRK: u32 = 1;
-pub const BRKINT: u32 = 2;
-pub const IGNPAR: u32 = 4;
-pub const PARMRK: u32 = 8;
-pub const INPCK: u32 = 16;
-pub const ISTRIP: u32 = 32;
-pub const INLCR: u32 = 64;
-pub const IGNCR: u32 = 128;
-pub const ICRNL: u32 = 256;
-pub const IXANY: u32 = 2048;
-pub const OPOST: u32 = 1;
-pub const OCRNL: u32 = 8;
-pub const ONOCR: u32 = 16;
-pub const ONLRET: u32 = 32;
-pub const OFILL: u32 = 64;
-pub const OFDEL: u32 = 128;
-pub const B0: u32 = 0;
-pub const B50: u32 = 1;
-pub const B75: u32 = 2;
-pub const B110: u32 = 3;
-pub const B134: u32 = 4;
-pub const B150: u32 = 5;
-pub const B200: u32 = 6;
-pub const B300: u32 = 7;
-pub const B600: u32 = 8;
-pub const B1200: u32 = 9;
-pub const B1800: u32 = 10;
-pub const B2400: u32 = 11;
-pub const B4800: u32 = 12;
-pub const B9600: u32 = 13;
-pub const B19200: u32 = 14;
-pub const B38400: u32 = 15;
-pub const EXTA: u32 = 14;
-pub const EXTB: u32 = 15;
-pub const ADDRB: u32 = 536870912;
-pub const CMSPAR: u32 = 1073741824;
-pub const CRTSCTS: u32 = 2147483648;
-pub const IBSHIFT: u32 = 16;
-pub const TCOOFF: u32 = 0;
-pub const TCOON: u32 = 1;
-pub const TCIOFF: u32 = 2;
-pub const TCION: u32 = 3;
-pub const TCIFLUSH: u32 = 0;
-pub const TCOFLUSH: u32 = 1;
-pub const TCIOFLUSH: u32 = 2;
-pub const NCCS: u32 = 19;
-pub const VINTR: u32 = 0;
-pub const VQUIT: u32 = 1;
-pub const VERASE: u32 = 2;
-pub const VKILL: u32 = 3;
-pub const VEOF: u32 = 4;
-pub const VTIME: u32 = 5;
-pub const VMIN: u32 = 6;
-pub const VSWTC: u32 = 7;
-pub const VSTART: u32 = 8;
-pub const VSTOP: u32 = 9;
-pub const VSUSP: u32 = 10;
-pub const VEOL: u32 = 11;
-pub const VREPRINT: u32 = 12;
-pub const VDISCARD: u32 = 13;
-pub const VWERASE: u32 = 14;
-pub const VLNEXT: u32 = 15;
-pub const VEOL2: u32 = 16;
-pub const IUCLC: u32 = 512;
-pub const IXON: u32 = 1024;
-pub const IXOFF: u32 = 4096;
-pub const IMAXBEL: u32 = 8192;
-pub const IUTF8: u32 = 16384;
-pub const OLCUC: u32 = 2;
-pub const ONLCR: u32 = 4;
-pub const NLDLY: u32 = 256;
-pub const NL0: u32 = 0;
-pub const NL1: u32 = 256;
-pub const CRDLY: u32 = 1536;
-pub const CR0: u32 = 0;
-pub const CR1: u32 = 512;
-pub const CR2: u32 = 1024;
-pub const CR3: u32 = 1536;
-pub const TABDLY: u32 = 6144;
-pub const TAB0: u32 = 0;
-pub const TAB1: u32 = 2048;
-pub const TAB2: u32 = 4096;
-pub const TAB3: u32 = 6144;
-pub const XTABS: u32 = 6144;
-pub const BSDLY: u32 = 8192;
-pub const BS0: u32 = 0;
-pub const BS1: u32 = 8192;
-pub const VTDLY: u32 = 16384;
-pub const VT0: u32 = 0;
-pub const VT1: u32 = 16384;
-pub const FFDLY: u32 = 32768;
-pub const FF0: u32 = 0;
-pub const FF1: u32 = 32768;
-pub const CBAUD: u32 = 4111;
-pub const CSIZE: u32 = 48;
-pub const CS5: u32 = 0;
-pub const CS6: u32 = 16;
-pub const CS7: u32 = 32;
-pub const CS8: u32 = 48;
-pub const CSTOPB: u32 = 64;
-pub const CREAD: u32 = 128;
-pub const PARENB: u32 = 256;
-pub const PARODD: u32 = 512;
-pub const HUPCL: u32 = 1024;
-pub const CLOCAL: u32 = 2048;
-pub const CBAUDEX: u32 = 4096;
-pub const BOTHER: u32 = 4096;
-pub const B57600: u32 = 4097;
-pub const B115200: u32 = 4098;
-pub const B230400: u32 = 4099;
-pub const B460800: u32 = 4100;
-pub const B500000: u32 = 4101;
-pub const B576000: u32 = 4102;
-pub const B921600: u32 = 4103;
-pub const B1000000: u32 = 4104;
-pub const B1152000: u32 = 4105;
-pub const B1500000: u32 = 4106;
-pub const B2000000: u32 = 4107;
-pub const B2500000: u32 = 4108;
-pub const B3000000: u32 = 4109;
-pub const B3500000: u32 = 4110;
-pub const B4000000: u32 = 4111;
-pub const CIBAUD: u32 = 269418496;
-pub const ISIG: u32 = 1;
-pub const ICANON: u32 = 2;
-pub const XCASE: u32 = 4;
-pub const ECHO: u32 = 8;
-pub const ECHOE: u32 = 16;
-pub const ECHOK: u32 = 32;
-pub const ECHONL: u32 = 64;
-pub const NOFLSH: u32 = 128;
-pub const TOSTOP: u32 = 256;
-pub const ECHOCTL: u32 = 512;
-pub const ECHOPRT: u32 = 1024;
-pub const ECHOKE: u32 = 2048;
-pub const FLUSHO: u32 = 4096;
-pub const PENDIN: u32 = 16384;
-pub const IEXTEN: u32 = 32768;
-pub const EXTPROC: u32 = 65536;
-pub const TCSANOW: u32 = 0;
-pub const TCSADRAIN: u32 = 1;
-pub const TCSAFLUSH: u32 = 2;
-pub const TIOCPKT_DATA: u32 = 0;
-pub const TIOCPKT_FLUSHREAD: u32 = 1;
-pub const TIOCPKT_FLUSHWRITE: u32 = 2;
-pub const TIOCPKT_STOP: u32 = 4;
-pub const TIOCPKT_START: u32 = 8;
-pub const TIOCPKT_NOSTOP: u32 = 16;
-pub const TIOCPKT_DOSTOP: u32 = 32;
-pub const TIOCPKT_IOCTL: u32 = 64;
-pub const TIOCSER_TEMT: u32 = 1;
-pub const NCC: u32 = 8;
-pub const TIOCM_LE: u32 = 1;
-pub const TIOCM_DTR: u32 = 2;
-pub const TIOCM_RTS: u32 = 4;
-pub const TIOCM_ST: u32 = 8;
-pub const TIOCM_SR: u32 = 16;
-pub const TIOCM_CTS: u32 = 32;
-pub const TIOCM_CAR: u32 = 64;
-pub const TIOCM_RNG: u32 = 128;
-pub const TIOCM_DSR: u32 = 256;
-pub const TIOCM_CD: u32 = 64;
-pub const TIOCM_RI: u32 = 128;
-pub const TIOCM_OUT1: u32 = 8192;
-pub const TIOCM_OUT2: u32 = 16384;
-pub const TIOCM_LOOP: u32 = 32768;
-pub const UIO_FASTIOV: u32 = 8;
-pub const UIO_MAXIOV: u32 = 1024;
-pub const UNIX_PATH_MAX: u32 = 108;
-pub const __X32_SYSCALL_BIT: u32 = 1073741824;
-pub const __NR_restart_syscall: u32 = 0;
-pub const __NR_exit: u32 = 1;
-pub const __NR_fork: u32 = 2;
-pub const __NR_read: u32 = 3;
-pub const __NR_write: u32 = 4;
-pub const __NR_open: u32 = 5;
-pub const __NR_close: u32 = 6;
-pub const __NR_waitpid: u32 = 7;
-pub const __NR_creat: u32 = 8;
-pub const __NR_link: u32 = 9;
-pub const __NR_unlink: u32 = 10;
-pub const __NR_execve: u32 = 11;
-pub const __NR_chdir: u32 = 12;
-pub const __NR_time: u32 = 13;
-pub const __NR_mknod: u32 = 14;
-pub const __NR_chmod: u32 = 15;
-pub const __NR_lchown: u32 = 16;
-pub const __NR_break: u32 = 17;
-pub const __NR_oldstat: u32 = 18;
-pub const __NR_lseek: u32 = 19;
-pub const __NR_getpid: u32 = 20;
-pub const __NR_mount: u32 = 21;
-pub const __NR_umount: u32 = 22;
-pub const __NR_setuid: u32 = 23;
-pub const __NR_getuid: u32 = 24;
-pub const __NR_stime: u32 = 25;
-pub const __NR_ptrace: u32 = 26;
-pub const __NR_alarm: u32 = 27;
-pub const __NR_oldfstat: u32 = 28;
-pub const __NR_pause: u32 = 29;
-pub const __NR_utime: u32 = 30;
-pub const __NR_stty: u32 = 31;
-pub const __NR_gtty: u32 = 32;
-pub const __NR_access: u32 = 33;
-pub const __NR_nice: u32 = 34;
-pub const __NR_ftime: u32 = 35;
-pub const __NR_sync: u32 = 36;
-pub const __NR_kill: u32 = 37;
-pub const __NR_rename: u32 = 38;
-pub const __NR_mkdir: u32 = 39;
-pub const __NR_rmdir: u32 = 40;
-pub const __NR_dup: u32 = 41;
-pub const __NR_pipe: u32 = 42;
-pub const __NR_times: u32 = 43;
-pub const __NR_prof: u32 = 44;
-pub const __NR_brk: u32 = 45;
-pub const __NR_setgid: u32 = 46;
-pub const __NR_getgid: u32 = 47;
-pub const __NR_signal: u32 = 48;
-pub const __NR_geteuid: u32 = 49;
-pub const __NR_getegid: u32 = 50;
-pub const __NR_acct: u32 = 51;
-pub const __NR_umount2: u32 = 52;
-pub const __NR_lock: u32 = 53;
-pub const __NR_ioctl: u32 = 54;
-pub const __NR_fcntl: u32 = 55;
-pub const __NR_mpx: u32 = 56;
-pub const __NR_setpgid: u32 = 57;
-pub const __NR_ulimit: u32 = 58;
-pub const __NR_oldolduname: u32 = 59;
-pub const __NR_umask: u32 = 60;
-pub const __NR_chroot: u32 = 61;
-pub const __NR_ustat: u32 = 62;
-pub const __NR_dup2: u32 = 63;
-pub const __NR_getppid: u32 = 64;
-pub const __NR_getpgrp: u32 = 65;
-pub const __NR_setsid: u32 = 66;
-pub const __NR_sigaction: u32 = 67;
-pub const __NR_sgetmask: u32 = 68;
-pub const __NR_ssetmask: u32 = 69;
-pub const __NR_setreuid: u32 = 70;
-pub const __NR_setregid: u32 = 71;
-pub const __NR_sigsuspend: u32 = 72;
-pub const __NR_sigpending: u32 = 73;
-pub const __NR_sethostname: u32 = 74;
-pub const __NR_setrlimit: u32 = 75;
-pub const __NR_getrlimit: u32 = 76;
-pub const __NR_getrusage: u32 = 77;
-pub const __NR_gettimeofday: u32 = 78;
-pub const __NR_settimeofday: u32 = 79;
-pub const __NR_getgroups: u32 = 80;
-pub const __NR_setgroups: u32 = 81;
-pub const __NR_select: u32 = 82;
-pub const __NR_symlink: u32 = 83;
-pub const __NR_oldlstat: u32 = 84;
-pub const __NR_readlink: u32 = 85;
-pub const __NR_uselib: u32 = 86;
-pub const __NR_swapon: u32 = 87;
-pub const __NR_reboot: u32 = 88;
-pub const __NR_readdir: u32 = 89;
-pub const __NR_mmap: u32 = 90;
-pub const __NR_munmap: u32 = 91;
-pub const __NR_truncate: u32 = 92;
-pub const __NR_ftruncate: u32 = 93;
-pub const __NR_fchmod: u32 = 94;
-pub const __NR_fchown: u32 = 95;
-pub const __NR_getpriority: u32 = 96;
-pub const __NR_setpriority: u32 = 97;
-pub const __NR_profil: u32 = 98;
-pub const __NR_statfs: u32 = 99;
-pub const __NR_fstatfs: u32 = 100;
-pub const __NR_ioperm: u32 = 101;
-pub const __NR_socketcall: u32 = 102;
-pub const __NR_syslog: u32 = 103;
-pub const __NR_setitimer: u32 = 104;
-pub const __NR_getitimer: u32 = 105;
-pub const __NR_stat: u32 = 106;
-pub const __NR_lstat: u32 = 107;
-pub const __NR_fstat: u32 = 108;
-pub const __NR_olduname: u32 = 109;
-pub const __NR_iopl: u32 = 110;
-pub const __NR_vhangup: u32 = 111;
-pub const __NR_idle: u32 = 112;
-pub const __NR_vm86old: u32 = 113;
-pub const __NR_wait4: u32 = 114;
-pub const __NR_swapoff: u32 = 115;
-pub const __NR_sysinfo: u32 = 116;
-pub const __NR_ipc: u32 = 117;
-pub const __NR_fsync: u32 = 118;
-pub const __NR_sigreturn: u32 = 119;
-pub const __NR_clone: u32 = 120;
-pub const __NR_setdomainname: u32 = 121;
-pub const __NR_uname: u32 = 122;
-pub const __NR_modify_ldt: u32 = 123;
-pub const __NR_adjtimex: u32 = 124;
-pub const __NR_mprotect: u32 = 125;
-pub const __NR_sigprocmask: u32 = 126;
-pub const __NR_create_module: u32 = 127;
-pub const __NR_init_module: u32 = 128;
-pub const __NR_delete_module: u32 = 129;
-pub const __NR_get_kernel_syms: u32 = 130;
-pub const __NR_quotactl: u32 = 131;
-pub const __NR_getpgid: u32 = 132;
-pub const __NR_fchdir: u32 = 133;
-pub const __NR_bdflush: u32 = 134;
-pub const __NR_sysfs: u32 = 135;
-pub const __NR_personality: u32 = 136;
-pub const __NR_afs_syscall: u32 = 137;
-pub const __NR_setfsuid: u32 = 138;
-pub const __NR_setfsgid: u32 = 139;
-pub const __NR__llseek: u32 = 140;
-pub const __NR_getdents: u32 = 141;
-pub const __NR__newselect: u32 = 142;
-pub const __NR_flock: u32 = 143;
-pub const __NR_msync: u32 = 144;
-pub const __NR_readv: u32 = 145;
-pub const __NR_writev: u32 = 146;
-pub const __NR_getsid: u32 = 147;
-pub const __NR_fdatasync: u32 = 148;
-pub const __NR__sysctl: u32 = 149;
-pub const __NR_mlock: u32 = 150;
-pub const __NR_munlock: u32 = 151;
-pub const __NR_mlockall: u32 = 152;
-pub const __NR_munlockall: u32 = 153;
-pub const __NR_sched_setparam: u32 = 154;
-pub const __NR_sched_getparam: u32 = 155;
-pub const __NR_sched_setscheduler: u32 = 156;
-pub const __NR_sched_getscheduler: u32 = 157;
-pub const __NR_sched_yield: u32 = 158;
-pub const __NR_sched_get_priority_max: u32 = 159;
-pub const __NR_sched_get_priority_min: u32 = 160;
-pub const __NR_sched_rr_get_interval: u32 = 161;
-pub const __NR_nanosleep: u32 = 162;
-pub const __NR_mremap: u32 = 163;
-pub const __NR_setresuid: u32 = 164;
-pub const __NR_getresuid: u32 = 165;
-pub const __NR_vm86: u32 = 166;
-pub const __NR_query_module: u32 = 167;
-pub const __NR_poll: u32 = 168;
-pub const __NR_nfsservctl: u32 = 169;
-pub const __NR_setresgid: u32 = 170;
-pub const __NR_getresgid: u32 = 171;
-pub const __NR_prctl: u32 = 172;
-pub const __NR_rt_sigreturn: u32 = 173;
-pub const __NR_rt_sigaction: u32 = 174;
-pub const __NR_rt_sigprocmask: u32 = 175;
-pub const __NR_rt_sigpending: u32 = 176;
-pub const __NR_rt_sigtimedwait: u32 = 177;
-pub const __NR_rt_sigqueueinfo: u32 = 178;
-pub const __NR_rt_sigsuspend: u32 = 179;
-pub const __NR_pread64: u32 = 180;
-pub const __NR_pwrite64: u32 = 181;
-pub const __NR_chown: u32 = 182;
-pub const __NR_getcwd: u32 = 183;
-pub const __NR_capget: u32 = 184;
-pub const __NR_capset: u32 = 185;
-pub const __NR_sigaltstack: u32 = 186;
-pub const __NR_sendfile: u32 = 187;
-pub const __NR_getpmsg: u32 = 188;
-pub const __NR_putpmsg: u32 = 189;
-pub const __NR_vfork: u32 = 190;
-pub const __NR_ugetrlimit: u32 = 191;
-pub const __NR_mmap2: u32 = 192;
-pub const __NR_truncate64: u32 = 193;
-pub const __NR_ftruncate64: u32 = 194;
-pub const __NR_stat64: u32 = 195;
-pub const __NR_lstat64: u32 = 196;
-pub const __NR_fstat64: u32 = 197;
-pub const __NR_lchown32: u32 = 198;
-pub const __NR_getuid32: u32 = 199;
-pub const __NR_getgid32: u32 = 200;
-pub const __NR_geteuid32: u32 = 201;
-pub const __NR_getegid32: u32 = 202;
-pub const __NR_setreuid32: u32 = 203;
-pub const __NR_setregid32: u32 = 204;
-pub const __NR_getgroups32: u32 = 205;
-pub const __NR_setgroups32: u32 = 206;
-pub const __NR_fchown32: u32 = 207;
-pub const __NR_setresuid32: u32 = 208;
-pub const __NR_getresuid32: u32 = 209;
-pub const __NR_setresgid32: u32 = 210;
-pub const __NR_getresgid32: u32 = 211;
-pub const __NR_chown32: u32 = 212;
-pub const __NR_setuid32: u32 = 213;
-pub const __NR_setgid32: u32 = 214;
-pub const __NR_setfsuid32: u32 = 215;
-pub const __NR_setfsgid32: u32 = 216;
-pub const __NR_pivot_root: u32 = 217;
-pub const __NR_mincore: u32 = 218;
-pub const __NR_madvise: u32 = 219;
-pub const __NR_getdents64: u32 = 220;
-pub const __NR_fcntl64: u32 = 221;
-pub const __NR_gettid: u32 = 224;
-pub const __NR_readahead: u32 = 225;
-pub const __NR_setxattr: u32 = 226;
-pub const __NR_lsetxattr: u32 = 227;
-pub const __NR_fsetxattr: u32 = 228;
-pub const __NR_getxattr: u32 = 229;
-pub const __NR_lgetxattr: u32 = 230;
-pub const __NR_fgetxattr: u32 = 231;
-pub const __NR_listxattr: u32 = 232;
-pub const __NR_llistxattr: u32 = 233;
-pub const __NR_flistxattr: u32 = 234;
-pub const __NR_removexattr: u32 = 235;
-pub const __NR_lremovexattr: u32 = 236;
-pub const __NR_fremovexattr: u32 = 237;
-pub const __NR_tkill: u32 = 238;
-pub const __NR_sendfile64: u32 = 239;
-pub const __NR_futex: u32 = 240;
-pub const __NR_sched_setaffinity: u32 = 241;
-pub const __NR_sched_getaffinity: u32 = 242;
-pub const __NR_set_thread_area: u32 = 243;
-pub const __NR_get_thread_area: u32 = 244;
-pub const __NR_io_setup: u32 = 245;
-pub const __NR_io_destroy: u32 = 246;
-pub const __NR_io_getevents: u32 = 247;
-pub const __NR_io_submit: u32 = 248;
-pub const __NR_io_cancel: u32 = 249;
-pub const __NR_fadvise64: u32 = 250;
-pub const __NR_exit_group: u32 = 252;
-pub const __NR_lookup_dcookie: u32 = 253;
-pub const __NR_epoll_create: u32 = 254;
-pub const __NR_epoll_ctl: u32 = 255;
-pub const __NR_epoll_wait: u32 = 256;
-pub const __NR_remap_file_pages: u32 = 257;
-pub const __NR_set_tid_address: u32 = 258;
-pub const __NR_timer_create: u32 = 259;
-pub const __NR_timer_settime: u32 = 260;
-pub const __NR_timer_gettime: u32 = 261;
-pub const __NR_timer_getoverrun: u32 = 262;
-pub const __NR_timer_delete: u32 = 263;
-pub const __NR_clock_settime: u32 = 264;
-pub const __NR_clock_gettime: u32 = 265;
-pub const __NR_clock_getres: u32 = 266;
-pub const __NR_clock_nanosleep: u32 = 267;
-pub const __NR_statfs64: u32 = 268;
-pub const __NR_fstatfs64: u32 = 269;
-pub const __NR_tgkill: u32 = 270;
-pub const __NR_utimes: u32 = 271;
-pub const __NR_fadvise64_64: u32 = 272;
-pub const __NR_vserver: u32 = 273;
-pub const __NR_mbind: u32 = 274;
-pub const __NR_get_mempolicy: u32 = 275;
-pub const __NR_set_mempolicy: u32 = 276;
-pub const __NR_mq_open: u32 = 277;
-pub const __NR_mq_unlink: u32 = 278;
-pub const __NR_mq_timedsend: u32 = 279;
-pub const __NR_mq_timedreceive: u32 = 280;
-pub const __NR_mq_notify: u32 = 281;
-pub const __NR_mq_getsetattr: u32 = 282;
-pub const __NR_kexec_load: u32 = 283;
-pub const __NR_waitid: u32 = 284;
-pub const __NR_add_key: u32 = 286;
-pub const __NR_request_key: u32 = 287;
-pub const __NR_keyctl: u32 = 288;
-pub const __NR_ioprio_set: u32 = 289;
-pub const __NR_ioprio_get: u32 = 290;
-pub const __NR_inotify_init: u32 = 291;
-pub const __NR_inotify_add_watch: u32 = 292;
-pub const __NR_inotify_rm_watch: u32 = 293;
-pub const __NR_migrate_pages: u32 = 294;
-pub const __NR_openat: u32 = 295;
-pub const __NR_mkdirat: u32 = 296;
-pub const __NR_mknodat: u32 = 297;
-pub const __NR_fchownat: u32 = 298;
-pub const __NR_futimesat: u32 = 299;
-pub const __NR_fstatat64: u32 = 300;
-pub const __NR_unlinkat: u32 = 301;
-pub const __NR_renameat: u32 = 302;
-pub const __NR_linkat: u32 = 303;
-pub const __NR_symlinkat: u32 = 304;
-pub const __NR_readlinkat: u32 = 305;
-pub const __NR_fchmodat: u32 = 306;
-pub const __NR_faccessat: u32 = 307;
-pub const __NR_pselect6: u32 = 308;
-pub const __NR_ppoll: u32 = 309;
-pub const __NR_unshare: u32 = 310;
-pub const __NR_set_robust_list: u32 = 311;
-pub const __NR_get_robust_list: u32 = 312;
-pub const __NR_splice: u32 = 313;
-pub const __NR_sync_file_range: u32 = 314;
-pub const __NR_tee: u32 = 315;
-pub const __NR_vmsplice: u32 = 316;
-pub const __NR_move_pages: u32 = 317;
-pub const __NR_getcpu: u32 = 318;
-pub const __NR_epoll_pwait: u32 = 319;
-pub const __NR_utimensat: u32 = 320;
-pub const __NR_signalfd: u32 = 321;
-pub const __NR_timerfd_create: u32 = 322;
-pub const __NR_eventfd: u32 = 323;
-pub const __NR_fallocate: u32 = 324;
-pub const __NR_timerfd_settime: u32 = 325;
-pub const __NR_timerfd_gettime: u32 = 326;
-pub const __NR_signalfd4: u32 = 327;
-pub const __NR_eventfd2: u32 = 328;
-pub const __NR_epoll_create1: u32 = 329;
-pub const __NR_dup3: u32 = 330;
-pub const __NR_pipe2: u32 = 331;
-pub const __NR_inotify_init1: u32 = 332;
-pub const __NR_preadv: u32 = 333;
-pub const __NR_pwritev: u32 = 334;
-pub const __NR_rt_tgsigqueueinfo: u32 = 335;
-pub const __NR_perf_event_open: u32 = 336;
-pub const __NR_recvmmsg: u32 = 337;
-pub const __NR_fanotify_init: u32 = 338;
-pub const __NR_fanotify_mark: u32 = 339;
-pub const __NR_prlimit64: u32 = 340;
-pub const __NR_name_to_handle_at: u32 = 341;
-pub const __NR_open_by_handle_at: u32 = 342;
-pub const __NR_clock_adjtime: u32 = 343;
-pub const __NR_syncfs: u32 = 344;
-pub const __NR_sendmmsg: u32 = 345;
-pub const __NR_setns: u32 = 346;
-pub const __NR_process_vm_readv: u32 = 347;
-pub const __NR_process_vm_writev: u32 = 348;
-pub const __NR_kcmp: u32 = 349;
-pub const __NR_finit_module: u32 = 350;
-pub const __NR_sched_setattr: u32 = 351;
-pub const __NR_sched_getattr: u32 = 352;
-pub const __NR_renameat2: u32 = 353;
-pub const __NR_seccomp: u32 = 354;
-pub const __NR_getrandom: u32 = 355;
-pub const __NR_memfd_create: u32 = 356;
-pub const __NR_bpf: u32 = 357;
-pub const __NR_execveat: u32 = 358;
-pub const __NR_socket: u32 = 359;
-pub const __NR_socketpair: u32 = 360;
-pub const __NR_bind: u32 = 361;
-pub const __NR_connect: u32 = 362;
-pub const __NR_listen: u32 = 363;
-pub const __NR_accept4: u32 = 364;
-pub const __NR_getsockopt: u32 = 365;
-pub const __NR_setsockopt: u32 = 366;
-pub const __NR_getsockname: u32 = 367;
-pub const __NR_getpeername: u32 = 368;
-pub const __NR_sendto: u32 = 369;
-pub const __NR_sendmsg: u32 = 370;
-pub const __NR_recvfrom: u32 = 371;
-pub const __NR_recvmsg: u32 = 372;
-pub const __NR_shutdown: u32 = 373;
-pub const __NR_userfaultfd: u32 = 374;
-pub const __NR_membarrier: u32 = 375;
-pub const __NR_mlock2: u32 = 376;
-pub const __NR_copy_file_range: u32 = 377;
-pub const __NR_preadv2: u32 = 378;
-pub const __NR_pwritev2: u32 = 379;
-pub const __NR_pkey_mprotect: u32 = 380;
-pub const __NR_pkey_alloc: u32 = 381;
-pub const __NR_pkey_free: u32 = 382;
-pub const __NR_statx: u32 = 383;
-pub const __NR_arch_prctl: u32 = 384;
-pub const __NR_io_pgetevents: u32 = 385;
-pub const __NR_rseq: u32 = 386;
-pub const __NR_semget: u32 = 393;
-pub const __NR_semctl: u32 = 394;
-pub const __NR_shmget: u32 = 395;
-pub const __NR_shmctl: u32 = 396;
-pub const __NR_shmat: u32 = 397;
-pub const __NR_shmdt: u32 = 398;
-pub const __NR_msgget: u32 = 399;
-pub const __NR_msgsnd: u32 = 400;
-pub const __NR_msgrcv: u32 = 401;
-pub const __NR_msgctl: u32 = 402;
-pub const __NR_clock_gettime64: u32 = 403;
-pub const __NR_clock_settime64: u32 = 404;
-pub const __NR_clock_adjtime64: u32 = 405;
-pub const __NR_clock_getres_time64: u32 = 406;
-pub const __NR_clock_nanosleep_time64: u32 = 407;
-pub const __NR_timer_gettime64: u32 = 408;
-pub const __NR_timer_settime64: u32 = 409;
-pub const __NR_timerfd_gettime64: u32 = 410;
-pub const __NR_timerfd_settime64: u32 = 411;
-pub const __NR_utimensat_time64: u32 = 412;
-pub const __NR_pselect6_time64: u32 = 413;
-pub const __NR_ppoll_time64: u32 = 414;
-pub const __NR_io_pgetevents_time64: u32 = 416;
-pub const __NR_recvmmsg_time64: u32 = 417;
-pub const __NR_mq_timedsend_time64: u32 = 418;
-pub const __NR_mq_timedreceive_time64: u32 = 419;
-pub const __NR_semtimedop_time64: u32 = 420;
-pub const __NR_rt_sigtimedwait_time64: u32 = 421;
-pub const __NR_futex_time64: u32 = 422;
-pub const __NR_sched_rr_get_interval_time64: u32 = 423;
-pub const __NR_pidfd_send_signal: u32 = 424;
-pub const __NR_io_uring_setup: u32 = 425;
-pub const __NR_io_uring_enter: u32 = 426;
-pub const __NR_io_uring_register: u32 = 427;
-pub const __NR_open_tree: u32 = 428;
-pub const __NR_move_mount: u32 = 429;
-pub const __NR_fsopen: u32 = 430;
-pub const __NR_fsconfig: u32 = 431;
-pub const __NR_fsmount: u32 = 432;
-pub const __NR_fspick: u32 = 433;
-pub const __NR_pidfd_open: u32 = 434;
-pub const __NR_clone3: u32 = 435;
-pub const __NR_close_range: u32 = 436;
-pub const __NR_openat2: u32 = 437;
-pub const __NR_pidfd_getfd: u32 = 438;
-pub const __NR_faccessat2: u32 = 439;
-pub const __NR_process_madvise: u32 = 440;
-pub const __NR_epoll_pwait2: u32 = 441;
-pub const __NR_mount_setattr: u32 = 442;
-pub const __NR_quotactl_fd: u32 = 443;
-pub const __NR_landlock_create_ruleset: u32 = 444;
-pub const __NR_landlock_add_rule: u32 = 445;
-pub const __NR_landlock_restrict_self: u32 = 446;
-pub const __NR_memfd_secret: u32 = 447;
-pub const __NR_process_mrelease: u32 = 448;
-pub const __NR_futex_waitv: u32 = 449;
-pub const __NR_set_mempolicy_home_node: u32 = 450;
-pub const __OLD_UTS_LEN: u32 = 8;
-pub const __NEW_UTS_LEN: u32 = 64;
-pub const WNOHANG: u32 = 1;
-pub const WUNTRACED: u32 = 2;
-pub const WSTOPPED: u32 = 2;
-pub const WEXITED: u32 = 4;
-pub const WCONTINUED: u32 = 8;
-pub const WNOWAIT: u32 = 16777216;
-pub const __WNOTHREAD: u32 = 536870912;
-pub const __WALL: u32 = 1073741824;
-pub const __WCLONE: u32 = 2147483648;
-pub const P_ALL: u32 = 0;
-pub const P_PID: u32 = 1;
-pub const P_PGID: u32 = 2;
-pub const P_PIDFD: u32 = 3;
-pub const XATTR_CREATE: u32 = 1;
-pub const XATTR_REPLACE: u32 = 2;
-pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0";
-pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0";
-pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0";
-pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0";
-pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0";
-pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0";
-pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0";
-pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0";
-pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0";
-pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0";
-pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0";
-pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0";
-pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0";
-pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0";
-pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0";
-pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0";
-pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0";
-pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0";
-pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0";
-pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0";
-pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0";
-pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0";
-pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0";
-pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0";
-pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0";
-pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0";
-pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0";
-pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0";
-pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0";
-pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0";
-pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0";
-pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0";
-pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0";
-pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0";
-pub const MFD_CLOEXEC: u32 = 1;
-pub const MFD_ALLOW_SEALING: u32 = 2;
-pub const MFD_HUGETLB: u32 = 4;
-pub const MFD_HUGE_SHIFT: u32 = 26;
-pub const MFD_HUGE_MASK: u32 = 63;
-pub const MFD_HUGE_64KB: u32 = 1073741824;
-pub const MFD_HUGE_512KB: u32 = 1275068416;
-pub const MFD_HUGE_1MB: u32 = 1342177280;
-pub const MFD_HUGE_2MB: u32 = 1409286144;
-pub const MFD_HUGE_8MB: u32 = 1543503872;
-pub const MFD_HUGE_16MB: u32 = 1610612736;
-pub const MFD_HUGE_32MB: u32 = 1677721600;
-pub const MFD_HUGE_256MB: u32 = 1879048192;
-pub const MFD_HUGE_512MB: u32 = 1946157056;
-pub const MFD_HUGE_1GB: u32 = 2013265920;
-pub const MFD_HUGE_2GB: u32 = 2080374784;
-pub const MFD_HUGE_16GB: u32 = 2281701376;
-pub const TFD_TIMER_ABSTIME: u32 = 1;
-pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2;
-pub const TFD_CLOEXEC: u32 = 524288;
-pub const TFD_NONBLOCK: u32 = 2048;
-pub const USERFAULTFD_IOC: u32 = 170;
-pub const _UFFDIO_REGISTER: u32 = 0;
-pub const _UFFDIO_UNREGISTER: u32 = 1;
-pub const _UFFDIO_WAKE: u32 = 2;
-pub const _UFFDIO_COPY: u32 = 3;
-pub const _UFFDIO_ZEROPAGE: u32 = 4;
-pub const _UFFDIO_WRITEPROTECT: u32 = 6;
-pub const _UFFDIO_CONTINUE: u32 = 7;
-pub const _UFFDIO_API: u32 = 63;
-pub const UFFDIO: u32 = 170;
-pub const UFFD_EVENT_PAGEFAULT: u32 = 18;
-pub const UFFD_EVENT_FORK: u32 = 19;
-pub const UFFD_EVENT_REMAP: u32 = 20;
-pub const UFFD_EVENT_REMOVE: u32 = 21;
-pub const UFFD_EVENT_UNMAP: u32 = 22;
-pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1;
-pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2;
-pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4;
-pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1;
-pub const UFFD_FEATURE_EVENT_FORK: u32 = 2;
-pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4;
-pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8;
-pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16;
-pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32;
-pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64;
-pub const UFFD_FEATURE_SIGBUS: u32 = 128;
-pub const UFFD_FEATURE_THREAD_ID: u32 = 256;
-pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512;
-pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024;
-pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048;
-pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096;
-pub const UFFD_USER_MODE_ONLY: u32 = 1;
-pub const IORING_FILE_INDEX_ALLOC: i32 = -1;
-pub const IORING_SETUP_IOPOLL: u32 = 1;
-pub const IORING_SETUP_SQPOLL: u32 = 2;
-pub const IORING_SETUP_SQ_AFF: u32 = 4;
-pub const IORING_SETUP_CQSIZE: u32 = 8;
-pub const IORING_SETUP_CLAMP: u32 = 16;
-pub const IORING_SETUP_ATTACH_WQ: u32 = 32;
-pub const IORING_SETUP_R_DISABLED: u32 = 64;
-pub const IORING_SETUP_SUBMIT_ALL: u32 = 128;
-pub const IORING_SETUP_COOP_TASKRUN: u32 = 256;
-pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512;
-pub const IORING_SETUP_SQE128: u32 = 1024;
-pub const IORING_SETUP_CQE32: u32 = 2048;
-pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096;
-pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192;
-pub const IORING_URING_CMD_FIXED: u32 = 1;
-pub const IORING_FSYNC_DATASYNC: u32 = 1;
-pub const IORING_TIMEOUT_ABS: u32 = 1;
-pub const IORING_TIMEOUT_UPDATE: u32 = 2;
-pub const IORING_TIMEOUT_BOOTTIME: u32 = 4;
-pub const IORING_TIMEOUT_REALTIME: u32 = 8;
-pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16;
-pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32;
-pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12;
-pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18;
-pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648;
-pub const IORING_POLL_ADD_MULTI: u32 = 1;
-pub const IORING_POLL_UPDATE_EVENTS: u32 = 2;
-pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4;
-pub const IORING_POLL_ADD_LEVEL: u32 = 8;
-pub const IORING_ASYNC_CANCEL_ALL: u32 = 1;
-pub const IORING_ASYNC_CANCEL_FD: u32 = 2;
-pub const IORING_ASYNC_CANCEL_ANY: u32 = 4;
-pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8;
-pub const IORING_RECVSEND_POLL_FIRST: u32 = 1;
-pub const IORING_RECV_MULTISHOT: u32 = 2;
-pub const IORING_RECVSEND_FIXED_BUF: u32 = 4;
-pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8;
-pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648;
-pub const IORING_ACCEPT_MULTISHOT: u32 = 1;
-pub const IORING_MSG_RING_CQE_SKIP: u32 = 1;
-pub const IORING_CQE_F_BUFFER: u32 = 1;
-pub const IORING_CQE_F_MORE: u32 = 2;
-pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4;
-pub const IORING_CQE_F_NOTIF: u32 = 8;
-pub const IORING_OFF_SQ_RING: u32 = 0;
-pub const IORING_OFF_CQ_RING: u32 = 134217728;
-pub const IORING_OFF_SQES: u32 = 268435456;
-pub const IORING_SQ_NEED_WAKEUP: u32 = 1;
-pub const IORING_SQ_CQ_OVERFLOW: u32 = 2;
-pub const IORING_SQ_TASKRUN: u32 = 4;
-pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1;
-pub const IORING_ENTER_GETEVENTS: u32 = 1;
-pub const IORING_ENTER_SQ_WAKEUP: u32 = 2;
-pub const IORING_ENTER_SQ_WAIT: u32 = 4;
-pub const IORING_ENTER_EXT_ARG: u32 = 8;
-pub const IORING_ENTER_REGISTERED_RING: u32 = 16;
-pub const IORING_FEAT_SINGLE_MMAP: u32 = 1;
-pub const IORING_FEAT_NODROP: u32 = 2;
-pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4;
-pub const IORING_FEAT_RW_CUR_POS: u32 = 8;
-pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16;
-pub const IORING_FEAT_FAST_POLL: u32 = 32;
-pub const IORING_FEAT_POLL_32BITS: u32 = 64;
-pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128;
-pub const IORING_FEAT_EXT_ARG: u32 = 256;
-pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512;
-pub const IORING_FEAT_RSRC_TAGS: u32 = 1024;
-pub const IORING_FEAT_CQE_SKIP: u32 = 2048;
-pub const IORING_FEAT_LINKED_FILE: u32 = 4096;
-pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1;
-pub const IORING_REGISTER_FILES_SKIP: i32 = -2;
-pub const IO_URING_OP_SUPPORTED: u32 = 1;
-pub const DT_UNKNOWN: u32 = 0;
-pub const DT_FIFO: u32 = 1;
-pub const DT_CHR: u32 = 2;
-pub const DT_DIR: u32 = 4;
-pub const DT_BLK: u32 = 6;
-pub const DT_REG: u32 = 8;
-pub const DT_LNK: u32 = 10;
-pub const DT_SOCK: u32 = 12;
-pub const SHUT_RD: u32 = 0;
-pub const SHUT_WR: u32 = 1;
-pub const SHUT_RDWR: u32 = 2;
-pub const STAT_HAVE_NSEC: u32 = 1;
-pub const STAT64_HAS_BROKEN_ST_INO: u32 = 1;
-pub const SOCK_STREAM: u32 = 1;
-pub const SOCK_DGRAM: u32 = 2;
-pub const SOCK_RAW: u32 = 3;
-pub const SOCK_RDM: u32 = 4;
-pub const SOCK_SEQPACKET: u32 = 5;
-pub const F_OK: u32 = 0;
-pub const R_OK: u32 = 4;
-pub const W_OK: u32 = 2;
-pub const X_OK: u32 = 1;
-pub const UTIME_NOW: u32 = 1073741823;
-pub const UTIME_OMIT: u32 = 1073741822;
-pub const MSG_DONTWAIT: u32 = 64;
-pub const AF_UNSPEC: u32 = 0;
-pub const AF_UNIX: u32 = 1;
-pub const AF_INET: u32 = 2;
-pub const AF_AX25: u32 = 3;
-pub const AF_IPX: u32 = 4;
-pub const AF_APPLETALK: u32 = 5;
-pub const AF_NETROM: u32 = 6;
-pub const AF_BRIDGE: u32 = 7;
-pub const AF_ATMPVC: u32 = 8;
-pub const AF_X25: u32 = 9;
-pub const AF_INET6: u32 = 10;
-pub const AF_ROSE: u32 = 11;
-pub const AF_DECnet: u32 = 12;
-pub const AF_NETBEUI: u32 = 13;
-pub const AF_SECURITY: u32 = 14;
-pub const AF_KEY: u32 = 15;
-pub const AF_NETLINK: u32 = 16;
-pub const AF_PACKET: u32 = 17;
-pub const AF_ASH: u32 = 18;
-pub const AF_ECONET: u32 = 19;
-pub const AF_ATMSVC: u32 = 20;
-pub const AF_RDS: u32 = 21;
-pub const AF_SNA: u32 = 22;
-pub const AF_IRDA: u32 = 23;
-pub const AF_PPPOX: u32 = 24;
-pub const AF_WANPIPE: u32 = 25;
-pub const AF_LLC: u32 = 26;
-pub const AF_CAN: u32 = 29;
-pub const AF_TIPC: u32 = 30;
-pub const AF_BLUETOOTH: u32 = 31;
-pub const AF_IUCV: u32 = 32;
-pub const AF_RXRPC: u32 = 33;
-pub const AF_ISDN: u32 = 34;
-pub const AF_PHONET: u32 = 35;
-pub const AF_IEEE802154: u32 = 36;
-pub const AF_MAX: u32 = 37;
-pub const MSG_OOB: u32 = 1;
-pub const MSG_PEEK: u32 = 2;
-pub const MSG_DONTROUTE: u32 = 4;
-pub const MSG_CTRUNC: u32 = 8;
-pub const MSG_PROBE: u32 = 16;
-pub const MSG_TRUNC: u32 = 32;
-pub const MSG_EOR: u32 = 128;
-pub const MSG_WAITALL: u32 = 256;
-pub const MSG_FIN: u32 = 512;
-pub const MSG_SYN: u32 = 1024;
-pub const MSG_CONFIRM: u32 = 2048;
-pub const MSG_RST: u32 = 4096;
-pub const MSG_ERRQUEUE: u32 = 8192;
-pub const MSG_NOSIGNAL: u32 = 16384;
-pub const MSG_MORE: u32 = 32768;
-pub const MSG_CMSG_CLOEXEC: u32 = 1073741824;
-pub const STDIN_FILENO: u32 = 0;
-pub const STDOUT_FILENO: u32 = 1;
-pub const STDERR_FILENO: u32 = 2;
-pub const RWF_HIPRI: u32 = 1;
-pub const RWF_DSYNC: u32 = 2;
-pub const RWF_SYNC: u32 = 4;
-pub const RWF_NOWAIT: u32 = 8;
-pub const RWF_APPEND: u32 = 16;
-pub const EFD_SEMAPHORE: u32 = 1;
-pub const EFD_CLOEXEC: u32 = 524288;
-pub const EFD_NONBLOCK: u32 = 2048;
-pub const EPOLLIN: u32 = 1;
-pub const EPOLLPRI: u32 = 2;
-pub const EPOLLOUT: u32 = 4;
-pub const EPOLLERR: u32 = 8;
-pub const EPOLLHUP: u32 = 16;
-pub const EPOLLNVAL: u32 = 32;
-pub const EPOLLRDNORM: u32 = 64;
-pub const EPOLLRDBAND: u32 = 128;
-pub const EPOLLWRNORM: u32 = 256;
-pub const EPOLLWRBAND: u32 = 512;
-pub const EPOLLMSG: u32 = 1024;
-pub const EPOLLRDHUP: u32 = 8192;
-pub const EPOLLEXCLUSIVE: u32 = 268435456;
-pub const EPOLLWAKEUP: u32 = 536870912;
-pub const EPOLLONESHOT: u32 = 1073741824;
-pub const EPOLLET: u32 = 2147483648;
-pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336;
-pub const TFD_CREATE_FLAGS: u32 = 526336;
-pub const TFD_SETTIME_FLAGS: u32 = 1;
-pub const ARCH_SET_FS: u32 = 4098;
-pub const SCM_RIGHTS: u32 = 1;
-pub const SCM_CREDENTIALS: u32 = 2;
-pub const SCM_SECURITY: u32 = 3;
-pub const UFFD_API: u32 = 170;
-pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1;
-pub const UFFDIO_REGISTER_MODE_WP: u32 = 2;
-pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4;
-pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1;
-pub const UFFDIO_COPY_MODE_WP: u32 = 2;
-pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1;
-pub const SPLICE_F_MOVE: u32 = 1;
-pub const SPLICE_F_NONBLOCK: u32 = 2;
-pub const SPLICE_F_MORE: u32 = 4;
-pub const SPLICE_F_GIFT: u32 = 8;
-pub const MNT_FORCE: u32 = 1;
-pub const MNT_DETACH: u32 = 2;
-pub const MNT_EXPIRE: u32 = 4;
-pub const UMOUNT_NOFOLLOW: u32 = 8;
-pub const UMOUNT_UNUSED: u32 = 2147483648;
-pub type size_t = crate::ctypes::c_uint;
-pub type ssize_t = crate::ctypes::c_int;
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 32usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_mode_t = crate::ctypes::c_ushort;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort;
-pub type __kernel_uid_t = crate::ctypes::c_ushort;
-pub type __kernel_gid_t = crate::ctypes::c_ushort;
-pub type __kernel_old_dev_t = crate::ctypes::c_ushort;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_uid_t = __kernel_uid_t;
-pub type __kernel_old_gid_t = __kernel_gid_t;
-pub type __kernel_size_t = crate::ctypes::c_uint;
-pub type __kernel_ssize_t = crate::ctypes::c_int;
-pub type __kernel_ptrdiff_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_header_struct {
-pub version: __u32,
-pub pid: crate::ctypes::c_int,
-}
-pub type cap_user_header_t = *mut __user_cap_header_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_data_struct {
-pub effective: __u32,
-pub permitted: __u32,
-pub inheritable: __u32,
-}
-pub type cap_user_data_t = *mut __user_cap_data_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_cap_data__bindgen_ty_1; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize],
-pub rootid: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct f_owner_ex {
-pub type_: crate::ctypes::c_int,
-pub pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_off_t,
-pub l_len: __kernel_off_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock64 {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_loff_t,
-pub l_len: __kernel_loff_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct open_how {
-pub flags: __u64,
-pub mode: __u64,
-pub resolve: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct epoll_event {
-pub events: __poll_t,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v1 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub master_key_descriptor: [__u8; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_key {
-pub mode: __u32,
-pub raw: [__u8; 64usize],
-pub size: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v2 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub __reserved: [__u8; 4usize],
-pub master_key_identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_policy_ex_arg {
-pub policy_size: __u64,
-pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 {
-pub version: __u8,
-pub v1: fscrypt_policy_v1,
-pub v2: fscrypt_policy_v2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_key_specifier {
-pub type_: __u32,
-pub __reserved: __u32,
-pub u: fscrypt_key_specifier__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_key_specifier__bindgen_ty_1 {
-pub __reserved: [__u8; 32usize],
-pub descriptor: [__u8; 8usize],
-pub identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct fscrypt_provisioning_key_payload {
-pub type_: __u32,
-pub __reserved: __u32,
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-pub struct fscrypt_add_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub raw_size: __u32,
-pub key_id: __u32,
-pub __reserved: [__u32; 8usize],
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_remove_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub removal_status_flags: __u32,
-pub __reserved: [__u32; 5usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_key_status_arg {
-pub key_spec: fscrypt_key_specifier,
-pub __reserved: [__u32; 6usize],
-pub status: __u32,
-pub status_flags: __u32,
-pub user_count: __u32,
-pub __out_reserved: [__u32; 13usize],
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum fsconfig_command {
-FSCONFIG_SET_FLAG = 0,
-FSCONFIG_SET_STRING = 1,
-FSCONFIG_SET_BINARY = 2,
-FSCONFIG_SET_PATH = 3,
-FSCONFIG_SET_PATH_EMPTY = 4,
-FSCONFIG_SET_FD = 5,
-FSCONFIG_CMD_CREATE = 6,
-FSCONFIG_CMD_RECONFIGURE = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mount_attr {
-pub attr_set: __u64,
-pub attr_clr: __u64,
-pub propagation: __u64,
-pub userns_fd: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_clone_range {
-pub src_fd: __s64,
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_offset: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fstrim_range {
-pub start: __u64,
-pub len: __u64,
-pub minlen: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_dedupe_range_info {
-pub dest_fd: __s64,
-pub dest_offset: __u64,
-pub bytes_deduped: __u64,
-pub status: __s32,
-pub reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct file_dedupe_range {
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_count: __u16,
-pub reserved1: __u16,
-pub reserved2: __u32,
-pub info: __IncompleteArrayField<file_dedupe_range_info>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct files_stat_struct {
-pub nr_files: crate::ctypes::c_ulong,
-pub nr_free_files: crate::ctypes::c_ulong,
-pub max_files: crate::ctypes::c_ulong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct inodes_stat_t {
-pub nr_inodes: crate::ctypes::c_long,
-pub nr_unused: crate::ctypes::c_long,
-pub dummy: [crate::ctypes::c_long; 5usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fsxattr {
-pub fsx_xflags: __u32,
-pub fsx_extsize: __u32,
-pub fsx_nextents: __u32,
-pub fsx_projid: __u32,
-pub fsx_cowextsize: __u32,
-pub fsx_pad: [crate::ctypes::c_uchar; 8usize],
-}
-pub type __kernel_rwf_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct futex_waitv {
-pub val: __u64,
-pub uaddr: __u64,
-pub flags: __u32,
-pub __reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list {
-pub next: *mut robust_list,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list_head {
-pub list: robust_list,
-pub futex_offset: crate::ctypes::c_long,
-pub list_op_pending: *mut robust_list,
-}
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP;
-pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP;
-pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP;
-pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP;
-pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP;
-pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP;
-pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP;
-pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP;
-pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP;
-pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP;
-pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP;
-pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6;
-pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP;
-pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE;
-pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP;
-pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH;
-pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP;
-pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH;
-pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP;
-pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM;
-pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP;
-pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP;
-pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP;
-pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE;
-pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS;
-pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET;
-pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW;
-pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP;
-pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-IPPROTO_IP = 0,
-IPPROTO_ICMP = 1,
-IPPROTO_IGMP = 2,
-IPPROTO_IPIP = 4,
-IPPROTO_TCP = 6,
-IPPROTO_EGP = 8,
-IPPROTO_PUP = 12,
-IPPROTO_UDP = 17,
-IPPROTO_IDP = 22,
-IPPROTO_TP = 29,
-IPPROTO_DCCP = 33,
-IPPROTO_IPV6 = 41,
-IPPROTO_RSVP = 46,
-IPPROTO_GRE = 47,
-IPPROTO_ESP = 50,
-IPPROTO_AH = 51,
-IPPROTO_MTP = 92,
-IPPROTO_BEETPH = 94,
-IPPROTO_ENCAP = 98,
-IPPROTO_PIM = 103,
-IPPROTO_COMP = 108,
-IPPROTO_L2TP = 115,
-IPPROTO_SCTP = 132,
-IPPROTO_UDPLITE = 136,
-IPPROTO_MPLS = 137,
-IPPROTO_ETHERNET = 143,
-IPPROTO_RAW = 255,
-IPPROTO_MPTCP = 262,
-IPPROTO_MAX = 263,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_addr {
-pub s_addr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq {
-pub imr_multiaddr: in_addr,
-pub imr_interface: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreqn {
-pub imr_multiaddr: in_addr,
-pub imr_address: in_addr,
-pub imr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq_source {
-pub imr_multiaddr: __be32,
-pub imr_interface: __be32,
-pub imr_sourceaddr: __be32,
-}
-#[repr(C)]
-pub struct ip_msfilter {
-pub imsf_multiaddr: __be32,
-pub imsf_interface: __be32,
-pub imsf_fmode: __u32,
-pub imsf_numsrc: __u32,
-pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct ip_msfilter__bindgen_ty_1 {
-pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>,
-pub __bindgen_anon_1: __BindgenUnionField<ip_msfilter__bindgen_ty_1__bindgen_ty_1>,
-pub bindgen_union_field: u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 {
-pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-pub imsf_slist_flex: __IncompleteArrayField<__be32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_req {
-pub gr_interface: __u32,
-pub gr_group: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_source_req {
-pub gsr_interface: __u32,
-pub gsr_group: __kernel_sockaddr_storage,
-pub gsr_source: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-pub struct group_filter {
-pub __bindgen_anon_1: group_filter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_1>,
-pub __bindgen_anon_2: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_2>,
-pub bindgen_union_field: [u32; 67usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_1 {
-pub gf_interface_aux: __u32,
-pub gf_group_aux: __kernel_sockaddr_storage,
-pub gf_fmode_aux: __u32,
-pub gf_numsrc_aux: __u32,
-pub gf_slist: [__kernel_sockaddr_storage; 1usize],
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_2 {
-pub gf_interface: __u32,
-pub gf_group: __kernel_sockaddr_storage,
-pub gf_fmode: __u32,
-pub gf_numsrc: __u32,
-pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_pktinfo {
-pub ipi_ifindex: crate::ctypes::c_int,
-pub ipi_spec_dst: in_addr,
-pub ipi_addr: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_in {
-pub sin_family: __kernel_sa_family_t,
-pub sin_port: __be16,
-pub sin_addr: in_addr,
-pub __pad: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct inotify_event {
-pub wd: __s32,
-pub mask: __u32,
-pub cookie: __u32,
-pub len: __u32,
-pub name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct iphdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub tos: __u8,
-pub tot_len: __be16,
-pub id: __be16,
-pub frag_off: __be16,
-pub ttl: __u8,
-pub protocol: __u8,
-pub check: __sum16,
-pub __bindgen_anon_1: iphdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union iphdr__bindgen_ty_1 {
-pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-impl iphdr {
-#[inline]
-pub fn ihl(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_ihl(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let ihl: u8 = unsafe { ::core::mem::transmute(ihl) };
-ihl as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_auth_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub reserved: __be16,
-pub spi: __be32,
-pub seq_no: __be32,
-pub auth_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_esp_hdr {
-pub spi: __be32,
-pub seq_no: __be32,
-pub enc_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_comp_hdr {
-pub nexthdr: __u8,
-pub flags: __u8,
-pub cpi: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_beet_phdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub padlen: __u8,
-pub reserved: __u8,
-}
-pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING;
-pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING;
-pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP;
-pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS;
-pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS;
-pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS;
-pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA;
-pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER;
-pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY;
-pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS;
-pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG;
-pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER;
-pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID;
-pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM;
-pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY;
-pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION;
-pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE;
-pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE;
-pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES;
-pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT;
-pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY;
-pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL;
-pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK;
-pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN;
-pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET;
-pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP;
-pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING;
-pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER;
-pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IPV4_DEVCONF_FORWARDING = 1,
-IPV4_DEVCONF_MC_FORWARDING = 2,
-IPV4_DEVCONF_PROXY_ARP = 3,
-IPV4_DEVCONF_ACCEPT_REDIRECTS = 4,
-IPV4_DEVCONF_SECURE_REDIRECTS = 5,
-IPV4_DEVCONF_SEND_REDIRECTS = 6,
-IPV4_DEVCONF_SHARED_MEDIA = 7,
-IPV4_DEVCONF_RP_FILTER = 8,
-IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9,
-IPV4_DEVCONF_BOOTP_RELAY = 10,
-IPV4_DEVCONF_LOG_MARTIANS = 11,
-IPV4_DEVCONF_TAG = 12,
-IPV4_DEVCONF_ARPFILTER = 13,
-IPV4_DEVCONF_MEDIUM_ID = 14,
-IPV4_DEVCONF_NOXFRM = 15,
-IPV4_DEVCONF_NOPOLICY = 16,
-IPV4_DEVCONF_FORCE_IGMP_VERSION = 17,
-IPV4_DEVCONF_ARP_ANNOUNCE = 18,
-IPV4_DEVCONF_ARP_IGNORE = 19,
-IPV4_DEVCONF_PROMOTE_SECONDARIES = 20,
-IPV4_DEVCONF_ARP_ACCEPT = 21,
-IPV4_DEVCONF_ARP_NOTIFY = 22,
-IPV4_DEVCONF_ACCEPT_LOCAL = 23,
-IPV4_DEVCONF_SRC_VMARK = 24,
-IPV4_DEVCONF_PROXY_ARP_PVLAN = 25,
-IPV4_DEVCONF_ROUTE_LOCALNET = 26,
-IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27,
-IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28,
-IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29,
-IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30,
-IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31,
-IPV4_DEVCONF_BC_FORWARDING = 32,
-IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33,
-__IPV4_DEVCONF_MAX = 34,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_addr {
-pub in6_u: in6_addr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union in6_addr__bindgen_ty_1 {
-pub u6_addr8: [__u8; 16usize],
-pub u6_addr16: [__be16; 8usize],
-pub u6_addr32: [__be32; 4usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr_in6 {
-pub sin6_family: crate::ctypes::c_ushort,
-pub sin6_port: __be16,
-pub sin6_flowinfo: __be32,
-pub sin6_addr: in6_addr,
-pub sin6_scope_id: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6_mreq {
-pub ipv6mr_multiaddr: in6_addr,
-pub ipv6mr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_flowlabel_req {
-pub flr_dst: in6_addr,
-pub flr_label: __be32,
-pub flr_action: __u8,
-pub flr_share: __u8,
-pub flr_flags: __u16,
-pub flr_expires: __u16,
-pub flr_linger: __u16,
-pub __flr_pad: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_pktinfo {
-pub ipi6_addr: in6_addr,
-pub ipi6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ip6_mtuinfo {
-pub ip6m_addr: sockaddr_in6,
-pub ip6m_mtu: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_ifreq {
-pub ifr6_addr: in6_addr,
-pub ifr6_prefixlen: __u32,
-pub ifr6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_rt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub type_: __u8,
-pub segments_left: __u8,
-}
-#[repr(C, packed)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_opt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-}
-#[repr(C)]
-pub struct rt0_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: __IncompleteArrayField<in6_addr>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rt2_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: in6_addr,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct ipv6_destopt_hao {
-pub type_: __u8,
-pub length: __u8,
-pub addr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub flow_lbl: [__u8; 3usize],
-pub payload_len: __be16,
-pub nexthdr: __u8,
-pub hop_limit: __u8,
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union ipv6hdr__bindgen_ty_1 {
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-impl ipv6hdr {
-#[inline]
-pub fn priority(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_priority(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let priority: u8 = unsafe { ::core::mem::transmute(priority) };
-priority as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING;
-pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT;
-pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6;
-pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA;
-pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS;
-pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF;
-pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS;
-pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS;
-pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL;
-pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY;
-pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR;
-pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT;
-pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT;
-pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY;
-pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR;
-pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES;
-pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION;
-pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR;
-pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO;
-pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF;
-pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN;
-pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP;
-pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD;
-pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING;
-pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6;
-pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD;
-pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO;
-pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY;
-pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC;
-pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL;
-pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC;
-pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU;
-pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET;
-pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY;
-pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT;
-pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA;
-pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN;
-pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL;
-pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED;
-pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC;
-pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD;
-pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE;
-pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN;
-pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS;
-pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED;
-pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC;
-pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED;
-pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID;
-pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE;
-pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER;
-pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA;
-pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-DEVCONF_FORWARDING = 0,
-DEVCONF_HOPLIMIT = 1,
-DEVCONF_MTU6 = 2,
-DEVCONF_ACCEPT_RA = 3,
-DEVCONF_ACCEPT_REDIRECTS = 4,
-DEVCONF_AUTOCONF = 5,
-DEVCONF_DAD_TRANSMITS = 6,
-DEVCONF_RTR_SOLICITS = 7,
-DEVCONF_RTR_SOLICIT_INTERVAL = 8,
-DEVCONF_RTR_SOLICIT_DELAY = 9,
-DEVCONF_USE_TEMPADDR = 10,
-DEVCONF_TEMP_VALID_LFT = 11,
-DEVCONF_TEMP_PREFERED_LFT = 12,
-DEVCONF_REGEN_MAX_RETRY = 13,
-DEVCONF_MAX_DESYNC_FACTOR = 14,
-DEVCONF_MAX_ADDRESSES = 15,
-DEVCONF_FORCE_MLD_VERSION = 16,
-DEVCONF_ACCEPT_RA_DEFRTR = 17,
-DEVCONF_ACCEPT_RA_PINFO = 18,
-DEVCONF_ACCEPT_RA_RTR_PREF = 19,
-DEVCONF_RTR_PROBE_INTERVAL = 20,
-DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21,
-DEVCONF_PROXY_NDP = 22,
-DEVCONF_OPTIMISTIC_DAD = 23,
-DEVCONF_ACCEPT_SOURCE_ROUTE = 24,
-DEVCONF_MC_FORWARDING = 25,
-DEVCONF_DISABLE_IPV6 = 26,
-DEVCONF_ACCEPT_DAD = 27,
-DEVCONF_FORCE_TLLAO = 28,
-DEVCONF_NDISC_NOTIFY = 29,
-DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30,
-DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31,
-DEVCONF_SUPPRESS_FRAG_NDISC = 32,
-DEVCONF_ACCEPT_RA_FROM_LOCAL = 33,
-DEVCONF_USE_OPTIMISTIC = 34,
-DEVCONF_ACCEPT_RA_MTU = 35,
-DEVCONF_STABLE_SECRET = 36,
-DEVCONF_USE_OIF_ADDRS_ONLY = 37,
-DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38,
-DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39,
-DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40,
-DEVCONF_DROP_UNSOLICITED_NA = 41,
-DEVCONF_KEEP_ADDR_ON_DOWN = 42,
-DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43,
-DEVCONF_SEG6_ENABLED = 44,
-DEVCONF_SEG6_REQUIRE_HMAC = 45,
-DEVCONF_ENHANCED_DAD = 46,
-DEVCONF_ADDR_GEN_MODE = 47,
-DEVCONF_DISABLE_POLICY = 48,
-DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49,
-DEVCONF_NDISC_TCLASS = 50,
-DEVCONF_RPL_SEG_ENABLED = 51,
-DEVCONF_RA_DEFRTR_METRIC = 52,
-DEVCONF_IOAM6_ENABLED = 53,
-DEVCONF_IOAM6_ID = 54,
-DEVCONF_IOAM6_ID_WIDE = 55,
-DEVCONF_NDISC_EVICT_NOCARRIER = 56,
-DEVCONF_ACCEPT_UNTRACKED_NA = 57,
-DEVCONF_MAX = 58,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum socket_state {
-SS_FREE = 0,
-SS_UNCONNECTED = 1,
-SS_CONNECTING = 2,
-SS_CONNECTED = 3,
-SS_DISCONNECTING = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct pollfd {
-pub fd: crate::ctypes::c_int,
-pub events: crate::ctypes::c_short,
-pub revents: crate::ctypes::c_short,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prctl_mm_map {
-pub start_code: __u64,
-pub end_code: __u64,
-pub start_data: __u64,
-pub end_data: __u64,
-pub start_brk: __u64,
-pub brk: __u64,
-pub start_stack: __u64,
-pub arg_start: __u64,
-pub arg_end: __u64,
-pub env_start: __u64,
-pub env_end: __u64,
-pub auxv: *mut __u64,
-pub auxv_size: __u32,
-pub exe_fd: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rand_pool_info {
-pub entropy_count: crate::ctypes::c_int,
-pub buf_size: crate::ctypes::c_int,
-pub buf: __IncompleteArrayField<__u32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_timespec {
-pub tv_sec: __kernel_time64_t,
-pub tv_nsec: crate::ctypes::c_longlong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_itimerspec {
-pub it_interval: __kernel_timespec,
-pub it_value: __kernel_timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timeval {
-pub tv_sec: __kernel_long_t,
-pub tv_usec: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_itimerval {
-pub it_interval: __kernel_old_timeval,
-pub it_value: __kernel_old_timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sock_timeval {
-pub tv_sec: __s64,
-pub tv_usec: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timeval {
-pub tv_sec: __kernel_old_time_t,
-pub tv_usec: __kernel_suseconds_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerspec {
-pub it_interval: timespec,
-pub it_value: timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerval {
-pub it_interval: timeval,
-pub it_value: timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timezone {
-pub tz_minuteswest: crate::ctypes::c_int,
-pub tz_dsttime: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rusage {
-pub ru_utime: __kernel_old_timeval,
-pub ru_stime: __kernel_old_timeval,
-pub ru_maxrss: __kernel_long_t,
-pub ru_ixrss: __kernel_long_t,
-pub ru_idrss: __kernel_long_t,
-pub ru_isrss: __kernel_long_t,
-pub ru_minflt: __kernel_long_t,
-pub ru_majflt: __kernel_long_t,
-pub ru_nswap: __kernel_long_t,
-pub ru_inblock: __kernel_long_t,
-pub ru_oublock: __kernel_long_t,
-pub ru_msgsnd: __kernel_long_t,
-pub ru_msgrcv: __kernel_long_t,
-pub ru_nsignals: __kernel_long_t,
-pub ru_nvcsw: __kernel_long_t,
-pub ru_nivcsw: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit {
-pub rlim_cur: __kernel_ulong_t,
-pub rlim_max: __kernel_ulong_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit64 {
-pub rlim_cur: __u64,
-pub rlim_max: __u64,
-}
-#[repr(C)]
-#[repr(align(8))]
-#[derive(Debug, Copy, Clone)]
-pub struct clone_args {
-pub flags: __u64,
-pub pidfd: __u64,
-pub child_tid: __u64,
-pub parent_tid: __u64,
-pub exit_signal: __u64,
-pub stack: __u64,
-pub stack_size: __u64,
-pub tls: __u64,
-pub set_tid: __u64,
-pub set_tid_size: __u64,
-pub cgroup: __u64,
-}
-pub type sigset_t = crate::ctypes::c_ulong;
-pub type __signalfn_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __sighandler_t = __signalfn_t;
-pub type __restorefn_t = ::core::option::Option<unsafe extern "C" fn()>;
-pub type __sigrestore_t = __restorefn_t;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sigaction {
-pub _u: sigaction__bindgen_ty_1,
-pub sa_mask: sigset_t,
-pub sa_flags: crate::ctypes::c_ulong,
-pub sa_restorer: ::core::option::Option<unsafe extern "C" fn()>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigaction__bindgen_ty_1 {
-pub _sa_handler: __sighandler_t,
-pub _sa_sigaction: ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int, arg2: *mut siginfo, arg3: *mut crate::ctypes::c_void)>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaltstack {
-pub ss_sp: *mut crate::ctypes::c_void,
-pub ss_flags: crate::ctypes::c_int,
-pub ss_size: __kernel_size_t,
-}
-pub type stack_t = sigaltstack;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigval {
-pub sival_int: crate::ctypes::c_int,
-pub sival_ptr: *mut crate::ctypes::c_void,
-}
-pub type sigval_t = sigval;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields {
-pub _kill: __sifields__bindgen_ty_1,
-pub _timer: __sifields__bindgen_ty_2,
-pub _rt: __sifields__bindgen_ty_3,
-pub _sigchld: __sifields__bindgen_ty_4,
-pub _sigfault: __sifields__bindgen_ty_5,
-pub _sigpoll: __sifields__bindgen_ty_6,
-pub _sigsys: __sifields__bindgen_ty_7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_1 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_2 {
-pub _tid: __kernel_timer_t,
-pub _overrun: crate::ctypes::c_int,
-pub _sigval: sigval_t,
-pub _sys_private: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_3 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _sigval: sigval_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_4 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _status: crate::ctypes::c_int,
-pub _utime: __kernel_clock_t,
-pub _stime: __kernel_clock_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_5 {
-pub _addr: *mut crate::ctypes::c_void,
-pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields__bindgen_ty_5__bindgen_ty_1 {
-pub _trapno: crate::ctypes::c_int,
-pub _addr_lsb: crate::ctypes::c_short,
-pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1,
-pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2,
-pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {
-pub _dummy_bnd: [crate::ctypes::c_char; 4usize],
-pub _lower: *mut crate::ctypes::c_void,
-pub _upper: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 {
-pub _dummy_pkey: [crate::ctypes::c_char; 4usize],
-pub _pkey: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 {
-pub _data: crate::ctypes::c_ulong,
-pub _type: __u32,
-pub _flags: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_6 {
-pub _band: crate::ctypes::c_long,
-pub _fd: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_7 {
-pub _call_addr: *mut crate::ctypes::c_void,
-pub _syscall: crate::ctypes::c_int,
-pub _arch: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union siginfo__bindgen_ty_1 {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1,
-pub _si_pad: [crate::ctypes::c_int; 32usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo__bindgen_ty_1__bindgen_ty_1 {
-pub si_signo: crate::ctypes::c_int,
-pub si_errno: crate::ctypes::c_int,
-pub si_code: crate::ctypes::c_int,
-pub _sifields: __sifields,
-}
-pub type siginfo_t = siginfo;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sigevent {
-pub sigev_value: sigval_t,
-pub sigev_signo: crate::ctypes::c_int,
-pub sigev_notify: crate::ctypes::c_int,
-pub _sigev_un: sigevent__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigevent__bindgen_ty_1 {
-pub _pad: [crate::ctypes::c_int; 13usize],
-pub _tid: crate::ctypes::c_int,
-pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigevent__bindgen_ty_1__bindgen_ty_1 {
-pub _function: ::core::option::Option<unsafe extern "C" fn(arg1: sigval_t)>,
-pub _attribute: *mut crate::ctypes::c_void,
-}
-pub type sigevent_t = sigevent;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx_timestamp {
-pub tv_sec: __s64,
-pub tv_nsec: __u32,
-pub __reserved: __s32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx {
-pub stx_mask: __u32,
-pub stx_blksize: __u32,
-pub stx_attributes: __u64,
-pub stx_nlink: __u32,
-pub stx_uid: __u32,
-pub stx_gid: __u32,
-pub stx_mode: __u16,
-pub __spare0: [__u16; 1usize],
-pub stx_ino: __u64,
-pub stx_size: __u64,
-pub stx_blocks: __u64,
-pub stx_attributes_mask: __u64,
-pub stx_atime: statx_timestamp,
-pub stx_btime: statx_timestamp,
-pub stx_ctime: statx_timestamp,
-pub stx_mtime: statx_timestamp,
-pub stx_rdev_major: __u32,
-pub stx_rdev_minor: __u32,
-pub stx_dev_major: __u32,
-pub stx_dev_minor: __u32,
-pub stx_mnt_id: __u64,
-pub stx_dio_mem_align: __u32,
-pub stx_dio_offset_align: __u32,
-pub __spare3: [__u64; 12usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sysinfo {
-pub uptime: __kernel_long_t,
-pub loads: [__kernel_ulong_t; 3usize],
-pub totalram: __kernel_ulong_t,
-pub freeram: __kernel_ulong_t,
-pub sharedram: __kernel_ulong_t,
-pub bufferram: __kernel_ulong_t,
-pub totalswap: __kernel_ulong_t,
-pub freeswap: __kernel_ulong_t,
-pub procs: __u16,
-pub pad: __u16,
-pub totalhigh: __kernel_ulong_t,
-pub freehigh: __kernel_ulong_t,
-pub mem_unit: __u32,
-pub _f: [crate::ctypes::c_char; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcphdr {
-pub source: __be16,
-pub dest: __be16,
-pub seq: __be32,
-pub ack_seq: __be32,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub window: __be16,
-pub check: __sum16,
-pub urg_ptr: __be16,
-}
-impl tcphdr {
-#[inline]
-pub fn res1(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_res1(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn doff(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_doff(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn fin(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_fin(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn syn(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_syn(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn rst(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_rst(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(10usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn psh(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_psh(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(11usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ack(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ack(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(12usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn urg(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_urg(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(13usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ece(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ece(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(14usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn cwr(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_cwr(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(15usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let res1: u16 = unsafe { ::core::mem::transmute(res1) };
-res1 as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let doff: u16 = unsafe { ::core::mem::transmute(doff) };
-doff as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let fin: u16 = unsafe { ::core::mem::transmute(fin) };
-fin as u64
-});
-__bindgen_bitfield_unit.set(9usize, 1u8, {
-let syn: u16 = unsafe { ::core::mem::transmute(syn) };
-syn as u64
-});
-__bindgen_bitfield_unit.set(10usize, 1u8, {
-let rst: u16 = unsafe { ::core::mem::transmute(rst) };
-rst as u64
-});
-__bindgen_bitfield_unit.set(11usize, 1u8, {
-let psh: u16 = unsafe { ::core::mem::transmute(psh) };
-psh as u64
-});
-__bindgen_bitfield_unit.set(12usize, 1u8, {
-let ack: u16 = unsafe { ::core::mem::transmute(ack) };
-ack as u64
-});
-__bindgen_bitfield_unit.set(13usize, 1u8, {
-let urg: u16 = unsafe { ::core::mem::transmute(urg) };
-urg as u64
-});
-__bindgen_bitfield_unit.set(14usize, 1u8, {
-let ece: u16 = unsafe { ::core::mem::transmute(ece) };
-ece as u64
-});
-__bindgen_bitfield_unit.set(15usize, 1u8, {
-let cwr: u16 = unsafe { ::core::mem::transmute(cwr) };
-cwr as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union tcp_word_hdr {
-pub hdr: tcphdr,
-pub words: [__be32; 5usize],
-}
-pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR;
-pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE;
-pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG;
-pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK;
-pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH;
-pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST;
-pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN;
-pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN;
-pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS;
-pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-TCP_FLAG_CWR = 32768,
-TCP_FLAG_ECE = 16384,
-TCP_FLAG_URG = 8192,
-TCP_FLAG_ACK = 4096,
-TCP_FLAG_PSH = 2048,
-TCP_FLAG_RST = 1024,
-TCP_FLAG_SYN = 512,
-TCP_FLAG_FIN = 256,
-TCP_RESERVED_BITS = 15,
-TCP_DATA_OFFSET = 240,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_opt {
-pub opt_code: __u32,
-pub opt_val: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_window {
-pub snd_wl1: __u32,
-pub snd_wnd: __u32,
-pub max_window: __u32,
-pub rcv_wnd: __u32,
-pub rcv_wup: __u32,
-}
-pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE;
-pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE;
-pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE;
-pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-TCP_NO_QUEUE = 0,
-TCP_RECV_QUEUE = 1,
-TCP_SEND_QUEUE = 2,
-TCP_QUEUES_NR = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_fastopen_client_fail {
-TFO_STATUS_UNSPEC = 0,
-TFO_COOKIE_UNAVAILABLE = 1,
-TFO_DATA_NOT_ACKED = 2,
-TFO_SYN_RETRANSMITTED = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_ca_state {
-TCP_CA_Open = 0,
-TCP_CA_Disorder = 1,
-TCP_CA_CWR = 2,
-TCP_CA_Recovery = 3,
-TCP_CA_Loss = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_info {
-pub tcpi_state: __u8,
-pub tcpi_ca_state: __u8,
-pub tcpi_retransmits: __u8,
-pub tcpi_probes: __u8,
-pub tcpi_backoff: __u8,
-pub tcpi_options: __u8,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub tcpi_rto: __u32,
-pub tcpi_ato: __u32,
-pub tcpi_snd_mss: __u32,
-pub tcpi_rcv_mss: __u32,
-pub tcpi_unacked: __u32,
-pub tcpi_sacked: __u32,
-pub tcpi_lost: __u32,
-pub tcpi_retrans: __u32,
-pub tcpi_fackets: __u32,
-pub tcpi_last_data_sent: __u32,
-pub tcpi_last_ack_sent: __u32,
-pub tcpi_last_data_recv: __u32,
-pub tcpi_last_ack_recv: __u32,
-pub tcpi_pmtu: __u32,
-pub tcpi_rcv_ssthresh: __u32,
-pub tcpi_rtt: __u32,
-pub tcpi_rttvar: __u32,
-pub tcpi_snd_ssthresh: __u32,
-pub tcpi_snd_cwnd: __u32,
-pub tcpi_advmss: __u32,
-pub tcpi_reordering: __u32,
-pub tcpi_rcv_rtt: __u32,
-pub tcpi_rcv_space: __u32,
-pub tcpi_total_retrans: __u32,
-pub tcpi_pacing_rate: __u64,
-pub tcpi_max_pacing_rate: __u64,
-pub tcpi_bytes_acked: __u64,
-pub tcpi_bytes_received: __u64,
-pub tcpi_segs_out: __u32,
-pub tcpi_segs_in: __u32,
-pub tcpi_notsent_bytes: __u32,
-pub tcpi_min_rtt: __u32,
-pub tcpi_data_segs_in: __u32,
-pub tcpi_data_segs_out: __u32,
-pub tcpi_delivery_rate: __u64,
-pub tcpi_busy_time: __u64,
-pub tcpi_rwnd_limited: __u64,
-pub tcpi_sndbuf_limited: __u64,
-pub tcpi_delivered: __u32,
-pub tcpi_delivered_ce: __u32,
-pub tcpi_bytes_sent: __u64,
-pub tcpi_bytes_retrans: __u64,
-pub tcpi_dsack_dups: __u32,
-pub tcpi_reord_seen: __u32,
-pub tcpi_rcv_ooopack: __u32,
-pub tcpi_snd_wnd: __u32,
-pub tcpi_rcv_wnd: __u32,
-pub tcpi_rehash: __u32,
-}
-impl tcp_info {
-#[inline]
-pub fn tcpi_snd_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_snd_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_rcv_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_fastopen_client_fail(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) };
-tcpi_snd_wscale as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) };
-tcpi_rcv_wscale as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) };
-tcpi_delivery_rate_app_limited as u64
-});
-__bindgen_bitfield_unit.set(9usize, 2u8, {
-let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) };
-tcpi_fastopen_client_fail as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD;
-pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY;
-pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED;
-pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED;
-pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT;
-pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS;
-pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE;
-pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE;
-pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND;
-pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING;
-pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT;
-pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS;
-pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT;
-pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE;
-pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE;
-pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH;
-pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED;
-pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE;
-pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT;
-pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS;
-pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS;
-pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN;
-pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT;
-pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH;
-pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT;
-pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
-pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
-pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-TCP_NLA_PAD = 0,
-TCP_NLA_BUSY = 1,
-TCP_NLA_RWND_LIMITED = 2,
-TCP_NLA_SNDBUF_LIMITED = 3,
-TCP_NLA_DATA_SEGS_OUT = 4,
-TCP_NLA_TOTAL_RETRANS = 5,
-TCP_NLA_PACING_RATE = 6,
-TCP_NLA_DELIVERY_RATE = 7,
-TCP_NLA_SND_CWND = 8,
-TCP_NLA_REORDERING = 9,
-TCP_NLA_MIN_RTT = 10,
-TCP_NLA_RECUR_RETRANS = 11,
-TCP_NLA_DELIVERY_RATE_APP_LMT = 12,
-TCP_NLA_SNDQ_SIZE = 13,
-TCP_NLA_CA_STATE = 14,
-TCP_NLA_SND_SSTHRESH = 15,
-TCP_NLA_DELIVERED = 16,
-TCP_NLA_DELIVERED_CE = 17,
-TCP_NLA_BYTES_SENT = 18,
-TCP_NLA_BYTES_RETRANS = 19,
-TCP_NLA_DSACK_DUPS = 20,
-TCP_NLA_REORD_SEEN = 21,
-TCP_NLA_SRTT = 22,
-TCP_NLA_TIMEOUT_REHASH = 23,
-TCP_NLA_BYTES_NOTSENT = 24,
-TCP_NLA_EDT = 25,
-TCP_NLA_TTL = 26,
-TCP_NLA_REHASH = 27,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct tcp_md5sig {
-pub tcpm_addr: __kernel_sockaddr_storage,
-pub tcpm_flags: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_ifindex: crate::ctypes::c_int,
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_diag_md5sig {
-pub tcpm_family: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_addr: [__be32; 4usize],
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_zerocopy_receive {
-pub address: __u64,
-pub length: __u32,
-pub recv_skip_hint: __u32,
-pub inq: __u32,
-pub err: __s32,
-pub copybuf_address: __u64,
-pub copybuf_len: __s32,
-pub flags: __u32,
-pub msg_control: __u64,
-pub msg_controllen: __u64,
-pub msg_flags: __u32,
-pub reserved: __u32,
-}
-pub type cc_t = crate::ctypes::c_uchar;
-pub type speed_t = crate::ctypes::c_uint;
-pub type tcflag_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios2 {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ktermios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct winsize {
-pub ws_row: crate::ctypes::c_ushort,
-pub ws_col: crate::ctypes::c_ushort,
-pub ws_xpixel: crate::ctypes::c_ushort,
-pub ws_ypixel: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termio {
-pub c_iflag: crate::ctypes::c_ushort,
-pub c_oflag: crate::ctypes::c_ushort,
-pub c_cflag: crate::ctypes::c_ushort,
-pub c_lflag: crate::ctypes::c_ushort,
-pub c_line: crate::ctypes::c_uchar,
-pub c_cc: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iovec {
-pub iov_base: *mut crate::ctypes::c_void,
-pub iov_len: __kernel_size_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_un {
-pub sun_family: __kernel_sa_family_t,
-pub sun_path: [crate::ctypes::c_char; 108usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct oldold_utsname {
-pub sysname: [crate::ctypes::c_char; 9usize],
-pub nodename: [crate::ctypes::c_char; 9usize],
-pub release: [crate::ctypes::c_char; 9usize],
-pub version: [crate::ctypes::c_char; 9usize],
-pub machine: [crate::ctypes::c_char; 9usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct old_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct new_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-pub domainname: [crate::ctypes::c_char; 65usize],
-}
-impl membarrier_cmd {
-pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd {
-MEMBARRIER_CMD_QUERY = 0,
-MEMBARRIER_CMD_GLOBAL = 1,
-MEMBARRIER_CMD_GLOBAL_EXPEDITED = 2,
-MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = 4,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED = 8,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = 16,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = 32,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = 64,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = 128,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = 256,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd_flag {
-MEMBARRIER_CMD_FLAG_CPU = 1,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg {
-pub event: __u8,
-pub reserved1: __u8,
-pub reserved2: __u16,
-pub reserved3: __u32,
-pub arg: uffd_msg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1 {
-pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1,
-pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2,
-pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3,
-pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4,
-pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 {
-pub flags: __u64,
-pub address: __u64,
-pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {
-pub ptid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 {
-pub ufd: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 {
-pub from: __u64,
-pub to: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 {
-pub start: __u64,
-pub end: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 {
-pub reserved1: __u64,
-pub reserved2: __u64,
-pub reserved3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_api {
-pub api: __u64,
-pub features: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_range {
-pub start: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_register {
-pub range: uffdio_range,
-pub mode: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_copy {
-pub dst: __u64,
-pub src: __u64,
-pub len: __u64,
-pub mode: __u64,
-pub copy: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_zeropage {
-pub range: uffdio_range,
-pub mode: __u64,
-pub zeropage: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_writeprotect {
-pub range: uffdio_range,
-pub mode: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_continue {
-pub range: uffdio_range,
-pub mode: __u64,
-pub mapped: __s64,
-}
-#[repr(C)]
-pub struct io_uring_sqe {
-pub opcode: __u8,
-pub flags: __u8,
-pub ioprio: __u16,
-pub fd: __s32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1,
-pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2,
-pub len: __u32,
-pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3,
-pub user_data: __u64,
-pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4,
-pub personality: __u16,
-pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5,
-pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_1 {
-pub off: __u64,
-pub addr2: __u64,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 {
-pub cmd_op: __u32,
-pub __pad1: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_2 {
-pub addr: __u64,
-pub splice_off_in: __u64,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_3 {
-pub rw_flags: __kernel_rwf_t,
-pub fsync_flags: __u32,
-pub poll_events: __u16,
-pub poll32_events: __u32,
-pub sync_range_flags: __u32,
-pub msg_flags: __u32,
-pub timeout_flags: __u32,
-pub accept_flags: __u32,
-pub cancel_flags: __u32,
-pub open_flags: __u32,
-pub statx_flags: __u32,
-pub fadvise_advice: __u32,
-pub splice_flags: __u32,
-pub rename_flags: __u32,
-pub unlink_flags: __u32,
-pub hardlink_flags: __u32,
-pub xattr_flags: __u32,
-pub msg_ring_flags: __u32,
-pub uring_cmd_flags: __u32,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_4 {
-pub buf_index: __u16,
-pub buf_group: __u16,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_5 {
-pub splice_fd_in: __s32,
-pub file_index: __u32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 {
-pub addr_len: __u16,
-pub __pad3: [__u16; 1usize],
-}
-#[repr(C)]
-pub struct io_uring_sqe__bindgen_ty_6 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_sqe__bindgen_ty_6__bindgen_ty_1>,
-pub cmd: __BindgenUnionField<[__u8; 0usize]>,
-pub bindgen_union_field: [u32; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 {
-pub addr3: __u64,
-pub __pad2: [__u64; 1usize],
-}
-pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT;
-pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT;
-pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT;
-pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT;
-pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT;
-pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT;
-pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-IOSQE_FIXED_FILE_BIT = 0,
-IOSQE_IO_DRAIN_BIT = 1,
-IOSQE_IO_LINK_BIT = 2,
-IOSQE_IO_HARDLINK_BIT = 3,
-IOSQE_ASYNC_BIT = 4,
-IOSQE_BUFFER_SELECT_BIT = 5,
-IOSQE_CQE_SKIP_SUCCESS_BIT = 6,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum io_uring_op {
-IORING_OP_NOP = 0,
-IORING_OP_READV = 1,
-IORING_OP_WRITEV = 2,
-IORING_OP_FSYNC = 3,
-IORING_OP_READ_FIXED = 4,
-IORING_OP_WRITE_FIXED = 5,
-IORING_OP_POLL_ADD = 6,
-IORING_OP_POLL_REMOVE = 7,
-IORING_OP_SYNC_FILE_RANGE = 8,
-IORING_OP_SENDMSG = 9,
-IORING_OP_RECVMSG = 10,
-IORING_OP_TIMEOUT = 11,
-IORING_OP_TIMEOUT_REMOVE = 12,
-IORING_OP_ACCEPT = 13,
-IORING_OP_ASYNC_CANCEL = 14,
-IORING_OP_LINK_TIMEOUT = 15,
-IORING_OP_CONNECT = 16,
-IORING_OP_FALLOCATE = 17,
-IORING_OP_OPENAT = 18,
-IORING_OP_CLOSE = 19,
-IORING_OP_FILES_UPDATE = 20,
-IORING_OP_STATX = 21,
-IORING_OP_READ = 22,
-IORING_OP_WRITE = 23,
-IORING_OP_FADVISE = 24,
-IORING_OP_MADVISE = 25,
-IORING_OP_SEND = 26,
-IORING_OP_RECV = 27,
-IORING_OP_OPENAT2 = 28,
-IORING_OP_EPOLL_CTL = 29,
-IORING_OP_SPLICE = 30,
-IORING_OP_PROVIDE_BUFFERS = 31,
-IORING_OP_REMOVE_BUFFERS = 32,
-IORING_OP_TEE = 33,
-IORING_OP_SHUTDOWN = 34,
-IORING_OP_RENAMEAT = 35,
-IORING_OP_UNLINKAT = 36,
-IORING_OP_MKDIRAT = 37,
-IORING_OP_SYMLINKAT = 38,
-IORING_OP_LINKAT = 39,
-IORING_OP_MSG_RING = 40,
-IORING_OP_FSETXATTR = 41,
-IORING_OP_SETXATTR = 42,
-IORING_OP_FGETXATTR = 43,
-IORING_OP_GETXATTR = 44,
-IORING_OP_SOCKET = 45,
-IORING_OP_URING_CMD = 46,
-IORING_OP_SEND_ZC = 47,
-IORING_OP_SENDMSG_ZC = 48,
-IORING_OP_LAST = 49,
-}
-pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA;
-pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IORING_MSG_DATA = 0,
-IORING_MSG_SEND_FD = 1,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_cqe {
-pub user_data: __u64,
-pub res: __s32,
-pub flags: __u32,
-pub big_cqe: __IncompleteArrayField<__u64>,
-}
-pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IORING_CQE_BUFFER_SHIFT = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_sqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub flags: __u32,
-pub dropped: __u32,
-pub array: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_cqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub overflow: __u32,
-pub cqes: __u32,
-pub flags: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_params {
-pub sq_entries: __u32,
-pub cq_entries: __u32,
-pub flags: __u32,
-pub sq_thread_cpu: __u32,
-pub sq_thread_idle: __u32,
-pub features: __u32,
-pub wq_fd: __u32,
-pub resv: [__u32; 3usize],
-pub sq_off: io_sqring_offsets,
-pub cq_off: io_cqring_offsets,
-}
-pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS;
-pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS;
-pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES;
-pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES;
-pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD;
-pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD;
-pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE;
-pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC;
-pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE;
-pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY;
-pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY;
-pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS;
-pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS;
-pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2;
-pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2;
-pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2;
-pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE;
-pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF;
-pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF;
-pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS;
-pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS;
-pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS;
-pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING;
-pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING;
-pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL;
-pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE;
-pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IORING_REGISTER_BUFFERS = 0,
-IORING_UNREGISTER_BUFFERS = 1,
-IORING_REGISTER_FILES = 2,
-IORING_UNREGISTER_FILES = 3,
-IORING_REGISTER_EVENTFD = 4,
-IORING_UNREGISTER_EVENTFD = 5,
-IORING_REGISTER_FILES_UPDATE = 6,
-IORING_REGISTER_EVENTFD_ASYNC = 7,
-IORING_REGISTER_PROBE = 8,
-IORING_REGISTER_PERSONALITY = 9,
-IORING_UNREGISTER_PERSONALITY = 10,
-IORING_REGISTER_RESTRICTIONS = 11,
-IORING_REGISTER_ENABLE_RINGS = 12,
-IORING_REGISTER_FILES2 = 13,
-IORING_REGISTER_FILES_UPDATE2 = 14,
-IORING_REGISTER_BUFFERS2 = 15,
-IORING_REGISTER_BUFFERS_UPDATE = 16,
-IORING_REGISTER_IOWQ_AFF = 17,
-IORING_UNREGISTER_IOWQ_AFF = 18,
-IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
-IORING_REGISTER_RING_FDS = 20,
-IORING_UNREGISTER_RING_FDS = 21,
-IORING_REGISTER_PBUF_RING = 22,
-IORING_UNREGISTER_PBUF_RING = 23,
-IORING_REGISTER_SYNC_CANCEL = 24,
-IORING_REGISTER_FILE_ALLOC_RANGE = 25,
-IORING_REGISTER_LAST = 26,
-}
-pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND;
-pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IO_WQ_BOUND = 0,
-IO_WQ_UNBOUND = 1,
-}
-#[repr(C)]
-#[repr(align(8))]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_files_update {
-pub offset: __u32,
-pub resv: __u32,
-pub fds: __u64,
-}
-#[repr(C)]
-#[repr(align(8))]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_register {
-pub nr: __u32,
-pub flags: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub tags: __u64,
-}
-#[repr(C)]
-#[repr(align(8))]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-}
-#[repr(C)]
-#[repr(align(8))]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update2 {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-pub tags: __u64,
-pub nr: __u32,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_slot {
-pub tag: __u64,
-pub resv: [__u64; 3usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_register {
-pub nr_slots: __u32,
-pub resv: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub resv3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_probe_op {
-pub op: __u8,
-pub resv: __u8,
-pub flags: __u16,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_probe {
-pub last_op: __u8,
-pub ops_len: __u8,
-pub resv: __u16,
-pub resv2: [__u32; 3usize],
-pub ops: __IncompleteArrayField<io_uring_probe_op>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct io_uring_restriction {
-pub opcode: __u16,
-pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1,
-pub resv: __u8,
-pub resv2: [__u32; 3usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_restriction__bindgen_ty_1 {
-pub register_op: __u8,
-pub sqe_op: __u8,
-pub sqe_flags: __u8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf {
-pub addr: __u64,
-pub len: __u32,
-pub bid: __u16,
-pub resv: __u16,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring {
-pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1>,
-pub bufs: __BindgenUnionField<[io_uring_buf; 0usize]>,
-pub bindgen_union_field: [u32; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 {
-pub resv1: __u64,
-pub resv2: __u32,
-pub resv3: __u16,
-pub tail: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_reg {
-pub ring_addr: __u64,
-pub ring_entries: __u32,
-pub bgid: __u16,
-pub pad: __u16,
-pub resv: [__u64; 3usize],
-}
-pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP;
-pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP;
-pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED;
-pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED;
-pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IORING_RESTRICTION_REGISTER_OP = 0,
-IORING_RESTRICTION_SQE_OP = 1,
-IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2,
-IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3,
-IORING_RESTRICTION_LAST = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_getevents_arg {
-pub sigmask: __u64,
-pub sigmask_sz: __u32,
-pub pad: __u32,
-pub ts: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sync_cancel_reg {
-pub addr: __u64,
-pub fd: __s32,
-pub flags: __u32,
-pub timeout: __kernel_timespec,
-pub pad: [__u64; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_file_index_range {
-pub off: __u32,
-pub len: __u32,
-pub resv: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_recvmsg_out {
-pub namelen: __u32,
-pub controllen: __u32,
-pub payloadlen: __u32,
-pub flags: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr {
-pub __storage: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct linger {
-pub l_onoff: crate::ctypes::c_int,
-pub l_linger: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct linux_dirent64 {
-pub d_ino: crate::ctypes::c_ulonglong,
-pub d_off: crate::ctypes::c_longlong,
-pub d_reclen: __u16,
-pub d_type: __u8,
-pub d_name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-pub type socklen_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct stat {
-pub st_dev: crate::ctypes::c_ulong,
-pub st_ino: crate::ctypes::c_ulong,
-pub st_mode: crate::ctypes::c_ushort,
-pub st_nlink: crate::ctypes::c_ushort,
-pub st_uid: crate::ctypes::c_ushort,
-pub st_gid: crate::ctypes::c_ushort,
-pub st_rdev: crate::ctypes::c_ulong,
-pub st_size: crate::ctypes::c_ulong,
-pub st_blksize: crate::ctypes::c_ulong,
-pub st_blocks: crate::ctypes::c_ulong,
-pub st_atime: crate::ctypes::c_ulong,
-pub st_atime_nsec: crate::ctypes::c_ulong,
-pub st_mtime: crate::ctypes::c_ulong,
-pub st_mtime_nsec: crate::ctypes::c_ulong,
-pub st_ctime: crate::ctypes::c_ulong,
-pub st_ctime_nsec: crate::ctypes::c_ulong,
-pub __unused4: crate::ctypes::c_ulong,
-pub __unused5: crate::ctypes::c_ulong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct stat64 {
-pub st_dev: crate::ctypes::c_ulonglong,
-pub __pad0: [crate::ctypes::c_uchar; 4usize],
-pub __st_ino: crate::ctypes::c_ulong,
-pub st_mode: crate::ctypes::c_uint,
-pub st_nlink: crate::ctypes::c_uint,
-pub st_uid: crate::ctypes::c_ulong,
-pub st_gid: crate::ctypes::c_ulong,
-pub st_rdev: crate::ctypes::c_ulonglong,
-pub __pad3: [crate::ctypes::c_uchar; 4usize],
-pub st_size: crate::ctypes::c_longlong,
-pub st_blksize: crate::ctypes::c_ulong,
-pub st_blocks: crate::ctypes::c_ulonglong,
-pub st_atime: crate::ctypes::c_ulong,
-pub st_atime_nsec: crate::ctypes::c_ulong,
-pub st_mtime: crate::ctypes::c_ulong,
-pub st_mtime_nsec: crate::ctypes::c_uint,
-pub st_ctime: crate::ctypes::c_ulong,
-pub st_ctime_nsec: crate::ctypes::c_ulong,
-pub st_ino: crate::ctypes::c_ulonglong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __old_kernel_stat {
-pub st_dev: crate::ctypes::c_ushort,
-pub st_ino: crate::ctypes::c_ushort,
-pub st_mode: crate::ctypes::c_ushort,
-pub st_nlink: crate::ctypes::c_ushort,
-pub st_uid: crate::ctypes::c_ushort,
-pub st_gid: crate::ctypes::c_ushort,
-pub st_rdev: crate::ctypes::c_ushort,
-pub st_size: crate::ctypes::c_ulong,
-pub st_atime: crate::ctypes::c_ulong,
-pub st_mtime: crate::ctypes::c_ulong,
-pub st_ctime: crate::ctypes::c_ulong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u32,
-pub f_bfree: __u32,
-pub f_bavail: __u32,
-pub f_files: __u32,
-pub f_ffree: __u32,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs64 {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-#[repr(C, packed(4))]
-#[derive(Debug, Copy, Clone)]
-pub struct compat_statfs64 {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-pub type __fsword_t = __u32;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct user_desc {
-pub entry_number: crate::ctypes::c_uint,
-pub base_addr: crate::ctypes::c_uint,
-pub limit: crate::ctypes::c_uint,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub __bindgen_padding_0: [u8; 3usize],
-}
-impl user_desc {
-#[inline]
-pub fn seg_32bit(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_32bit(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn contents(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 2u8) as u32) }
-}
-#[inline]
-pub fn set_contents(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(1usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn read_exec_only(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_read_exec_only(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(3usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn limit_in_pages(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_limit_in_pages(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn seg_not_present(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_not_present(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(5usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn useable(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_useable(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(6usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(seg_32bit: crate::ctypes::c_uint, contents: crate::ctypes::c_uint, read_exec_only: crate::ctypes::c_uint, limit_in_pages: crate::ctypes::c_uint, seg_not_present: crate::ctypes::c_uint, useable: crate::ctypes::c_uint) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 1u8, {
-let seg_32bit: u32 = unsafe { ::core::mem::transmute(seg_32bit) };
-seg_32bit as u64
-});
-__bindgen_bitfield_unit.set(1usize, 2u8, {
-let contents: u32 = unsafe { ::core::mem::transmute(contents) };
-contents as u64
-});
-__bindgen_bitfield_unit.set(3usize, 1u8, {
-let read_exec_only: u32 = unsafe { ::core::mem::transmute(read_exec_only) };
-read_exec_only as u64
-});
-__bindgen_bitfield_unit.set(4usize, 1u8, {
-let limit_in_pages: u32 = unsafe { ::core::mem::transmute(limit_in_pages) };
-limit_in_pages as u64
-});
-__bindgen_bitfield_unit.set(5usize, 1u8, {
-let seg_not_present: u32 = unsafe { ::core::mem::transmute(seg_not_present) };
-seg_not_present as u64
-});
-__bindgen_bitfield_unit.set(6usize, 1u8, {
-let useable: u32 = unsafe { ::core::mem::transmute(useable) };
-useable as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct msghdr {
-pub msg_name: *mut crate::ctypes::c_void,
-pub msg_namelen: crate::ctypes::c_int,
-pub msg_iov: *mut iovec,
-pub msg_iovlen: size_t,
-pub msg_control: *mut crate::ctypes::c_void,
-pub msg_controllen: size_t,
-pub msg_flags: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct cmsghdr {
-pub cmsg_len: size_t,
-pub cmsg_level: crate::ctypes::c_int,
-pub cmsg_type: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ucred {
-pub pid: __u32,
-pub uid: __u32,
-pub gid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mmsghdr {
-pub msg_hdr: msghdr,
-pub msg_len: crate::ctypes::c_uint,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/x86/ioctl.rs b/vendor/linux-raw-sys-0.3.2/src/x86/ioctl.rs
deleted file mode 100644
index b9ba3df79..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/x86/ioctl.rs
+++ /dev/null
@@ -1,1570 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const FIONREAD: u32 = 21531;
-pub const FIONBIO: u32 = 21537;
-pub const FIOCLEX: u32 = 21585;
-pub const FIONCLEX: u32 = 21584;
-pub const FIOASYNC: u32 = 21586;
-pub const FIOQSIZE: u32 = 21600;
-pub const TCXONC: u32 = 21514;
-pub const TCFLSH: u32 = 21515;
-pub const TIOCSCTTY: u32 = 21518;
-pub const TIOCSPGRP: u32 = 21520;
-pub const TIOCOUTQ: u32 = 21521;
-pub const TIOCSTI: u32 = 21522;
-pub const TIOCSWINSZ: u32 = 21524;
-pub const TIOCMGET: u32 = 21525;
-pub const TIOCMBIS: u32 = 21526;
-pub const TIOCMBIC: u32 = 21527;
-pub const TIOCMSET: u32 = 21528;
-pub const TIOCSSOFTCAR: u32 = 21530;
-pub const TIOCLINUX: u32 = 21532;
-pub const TIOCCONS: u32 = 21533;
-pub const TIOCSSERIAL: u32 = 21535;
-pub const TIOCPKT: u32 = 21536;
-pub const TIOCNOTTY: u32 = 21538;
-pub const TIOCSETD: u32 = 21539;
-pub const TIOCSBRK: u32 = 21543;
-pub const TIOCCBRK: u32 = 21544;
-pub const TIOCSRS485: u32 = 21551;
-pub const TIOCSPTLCK: u32 = 1074025521;
-pub const TIOCSIG: u32 = 1074025526;
-pub const TIOCVHANGUP: u32 = 21559;
-pub const TIOCSERCONFIG: u32 = 21587;
-pub const TIOCSERGWILD: u32 = 21588;
-pub const TIOCSERSWILD: u32 = 21589;
-pub const TIOCSLCKTRMIOS: u32 = 21591;
-pub const TIOCSERGSTRUCT: u32 = 21592;
-pub const TIOCSERGETLSR: u32 = 21593;
-pub const TIOCSERGETMULTI: u32 = 21594;
-pub const TIOCSERSETMULTI: u32 = 21595;
-pub const TIOCMIWAIT: u32 = 21596;
-pub const TCGETS: u32 = 21505;
-pub const TCGETA: u32 = 21509;
-pub const TCSBRK: u32 = 21513;
-pub const TCSBRKP: u32 = 21541;
-pub const TCSETA: u32 = 21510;
-pub const TCSETAF: u32 = 21512;
-pub const TCSETAW: u32 = 21511;
-pub const TIOCEXCL: u32 = 21516;
-pub const TIOCNXCL: u32 = 21517;
-pub const TIOCGDEV: u32 = 2147767346;
-pub const TIOCGEXCL: u32 = 2147767360;
-pub const TIOCGICOUNT: u32 = 21597;
-pub const TIOCGLCKTRMIOS: u32 = 21590;
-pub const TIOCGPGRP: u32 = 21519;
-pub const TIOCGPKT: u32 = 2147767352;
-pub const TIOCGPTLCK: u32 = 2147767353;
-pub const TIOCGPTN: u32 = 2147767344;
-pub const TIOCGPTPEER: u32 = 21569;
-pub const TIOCGRS485: u32 = 21550;
-pub const TIOCGSERIAL: u32 = 21534;
-pub const TIOCGSID: u32 = 21545;
-pub const TIOCGSOFTCAR: u32 = 21529;
-pub const TIOCGWINSZ: u32 = 21523;
-pub const TCGETS2: u32 = 2150388778;
-pub const TCGETX: u32 = 21554;
-pub const TCSETS: u32 = 21506;
-pub const TCSETS2: u32 = 1076646955;
-pub const TCSETSF: u32 = 21508;
-pub const TCSETSF2: u32 = 1076646957;
-pub const TCSETSW: u32 = 21507;
-pub const TCSETSW2: u32 = 1076646956;
-pub const TCSETX: u32 = 21555;
-pub const TCSETXF: u32 = 21556;
-pub const TCSETXW: u32 = 21557;
-pub const TIOCGETD: u32 = 21540;
-pub const MTIOCGET: u32 = 2149346562;
-pub const BLKSSZGET: u32 = 4712;
-pub const BLKPBSZGET: u32 = 4731;
-pub const BLKROSET: u32 = 4701;
-pub const BLKROGET: u32 = 4702;
-pub const BLKRRPART: u32 = 4703;
-pub const BLKGETSIZE: u32 = 4704;
-pub const BLKFLSBUF: u32 = 4705;
-pub const BLKRASET: u32 = 4706;
-pub const BLKRAGET: u32 = 4707;
-pub const BLKFRASET: u32 = 4708;
-pub const BLKFRAGET: u32 = 4709;
-pub const BLKSECTSET: u32 = 4710;
-pub const BLKSECTGET: u32 = 4711;
-pub const BLKPG: u32 = 4713;
-pub const BLKBSZGET: u32 = 2147750512;
-pub const BLKBSZSET: u32 = 1074008689;
-pub const BLKGETSIZE64: u32 = 2147750514;
-pub const BLKTRACESETUP: u32 = 3225424499;
-pub const BLKTRACESTART: u32 = 4724;
-pub const BLKTRACESTOP: u32 = 4725;
-pub const BLKTRACETEARDOWN: u32 = 4726;
-pub const BLKDISCARD: u32 = 4727;
-pub const BLKIOMIN: u32 = 4728;
-pub const BLKIOOPT: u32 = 4729;
-pub const BLKALIGNOFF: u32 = 4730;
-pub const BLKDISCARDZEROES: u32 = 4732;
-pub const BLKSECDISCARD: u32 = 4733;
-pub const BLKROTATIONAL: u32 = 4734;
-pub const BLKZEROOUT: u32 = 4735;
-pub const UFFDIO_REGISTER: u32 = 3223366144;
-pub const UFFDIO_UNREGISTER: u32 = 2148575745;
-pub const UFFDIO_WAKE: u32 = 2148575746;
-pub const UFFDIO_COPY: u32 = 3223890435;
-pub const UFFDIO_ZEROPAGE: u32 = 3223366148;
-pub const UFFDIO_WRITEPROTECT: u32 = 3222841862;
-pub const UFFDIO_API: u32 = 3222841919;
-pub const NS_GET_USERNS: u32 = 46849;
-pub const NS_GET_PARENT: u32 = 46850;
-pub const NS_GET_NSTYPE: u32 = 46851;
-pub const KDGETLED: u32 = 19249;
-pub const KDSETLED: u32 = 19250;
-pub const KDGKBLED: u32 = 19300;
-pub const KDSKBLED: u32 = 19301;
-pub const KDGKBTYPE: u32 = 19251;
-pub const KDADDIO: u32 = 19252;
-pub const KDDELIO: u32 = 19253;
-pub const KDENABIO: u32 = 19254;
-pub const KDDISABIO: u32 = 19255;
-pub const KDSETMODE: u32 = 19258;
-pub const KDGETMODE: u32 = 19259;
-pub const KDMKTONE: u32 = 19248;
-pub const KIOCSOUND: u32 = 19247;
-pub const GIO_CMAP: u32 = 19312;
-pub const PIO_CMAP: u32 = 19313;
-pub const GIO_FONT: u32 = 19296;
-pub const GIO_FONTX: u32 = 19307;
-pub const PIO_FONT: u32 = 19297;
-pub const PIO_FONTX: u32 = 19308;
-pub const PIO_FONTRESET: u32 = 19309;
-pub const GIO_SCRNMAP: u32 = 19264;
-pub const GIO_UNISCRNMAP: u32 = 19305;
-pub const PIO_SCRNMAP: u32 = 19265;
-pub const PIO_UNISCRNMAP: u32 = 19306;
-pub const GIO_UNIMAP: u32 = 19302;
-pub const PIO_UNIMAP: u32 = 19303;
-pub const PIO_UNIMAPCLR: u32 = 19304;
-pub const KDGKBMODE: u32 = 19268;
-pub const KDSKBMODE: u32 = 19269;
-pub const KDGKBMETA: u32 = 19298;
-pub const KDSKBMETA: u32 = 19299;
-pub const KDGKBENT: u32 = 19270;
-pub const KDSKBENT: u32 = 19271;
-pub const KDGKBSENT: u32 = 19272;
-pub const KDSKBSENT: u32 = 19273;
-pub const KDGKBDIACR: u32 = 19274;
-pub const KDGETKEYCODE: u32 = 19276;
-pub const KDSETKEYCODE: u32 = 19277;
-pub const KDSIGACCEPT: u32 = 19278;
-pub const VT_OPENQRY: u32 = 22016;
-pub const VT_GETMODE: u32 = 22017;
-pub const VT_SETMODE: u32 = 22018;
-pub const VT_GETSTATE: u32 = 22019;
-pub const VT_RELDISP: u32 = 22021;
-pub const VT_ACTIVATE: u32 = 22022;
-pub const VT_WAITACTIVE: u32 = 22023;
-pub const VT_DISALLOCATE: u32 = 22024;
-pub const VT_RESIZE: u32 = 22025;
-pub const VT_RESIZEX: u32 = 22026;
-pub const FIOSETOWN: u32 = 35073;
-pub const SIOCSPGRP: u32 = 35074;
-pub const FIOGETOWN: u32 = 35075;
-pub const SIOCGPGRP: u32 = 35076;
-pub const SIOCATMARK: u32 = 35077;
-pub const SIOCGSTAMP: u32 = 35078;
-pub const TIOCINQ: u32 = 21531;
-pub const SIOCADDRT: u32 = 35083;
-pub const SIOCDELRT: u32 = 35084;
-pub const SIOCGIFNAME: u32 = 35088;
-pub const SIOCSIFLINK: u32 = 35089;
-pub const SIOCGIFCONF: u32 = 35090;
-pub const SIOCGIFFLAGS: u32 = 35091;
-pub const SIOCSIFFLAGS: u32 = 35092;
-pub const SIOCGIFADDR: u32 = 35093;
-pub const SIOCSIFADDR: u32 = 35094;
-pub const SIOCGIFDSTADDR: u32 = 35095;
-pub const SIOCSIFDSTADDR: u32 = 35096;
-pub const SIOCGIFBRDADDR: u32 = 35097;
-pub const SIOCSIFBRDADDR: u32 = 35098;
-pub const SIOCGIFNETMASK: u32 = 35099;
-pub const SIOCSIFNETMASK: u32 = 35100;
-pub const SIOCGIFMETRIC: u32 = 35101;
-pub const SIOCSIFMETRIC: u32 = 35102;
-pub const SIOCGIFMEM: u32 = 35103;
-pub const SIOCSIFMEM: u32 = 35104;
-pub const SIOCGIFMTU: u32 = 35105;
-pub const SIOCSIFMTU: u32 = 35106;
-pub const SIOCSIFHWADDR: u32 = 35108;
-pub const SIOCGIFENCAP: u32 = 35109;
-pub const SIOCSIFENCAP: u32 = 35110;
-pub const SIOCGIFHWADDR: u32 = 35111;
-pub const SIOCGIFSLAVE: u32 = 35113;
-pub const SIOCSIFSLAVE: u32 = 35120;
-pub const SIOCADDMULTI: u32 = 35121;
-pub const SIOCDELMULTI: u32 = 35122;
-pub const SIOCDARP: u32 = 35155;
-pub const SIOCGARP: u32 = 35156;
-pub const SIOCSARP: u32 = 35157;
-pub const SIOCDRARP: u32 = 35168;
-pub const SIOCGRARP: u32 = 35169;
-pub const SIOCSRARP: u32 = 35170;
-pub const SIOCGIFMAP: u32 = 35184;
-pub const SIOCSIFMAP: u32 = 35185;
-pub const SIOCRTMSG: u32 = 35085;
-pub const SIOCSIFNAME: u32 = 35107;
-pub const SIOCGIFINDEX: u32 = 35123;
-pub const SIOGIFINDEX: u32 = 35123;
-pub const SIOCSIFPFLAGS: u32 = 35124;
-pub const SIOCGIFPFLAGS: u32 = 35125;
-pub const SIOCDIFADDR: u32 = 35126;
-pub const SIOCSIFHWBROADCAST: u32 = 35127;
-pub const SIOCGIFCOUNT: u32 = 35128;
-pub const SIOCGIFBR: u32 = 35136;
-pub const SIOCSIFBR: u32 = 35137;
-pub const SIOCGIFTXQLEN: u32 = 35138;
-pub const SIOCSIFTXQLEN: u32 = 35139;
-pub const SIOCADDDLCI: u32 = 35200;
-pub const SIOCDELDLCI: u32 = 35201;
-pub const SIOCDEVPRIVATE: u32 = 35312;
-pub const SIOCPROTOPRIVATE: u32 = 35296;
-pub const FIBMAP: u32 = 1;
-pub const FIGETBSZ: u32 = 2;
-pub const FIFREEZE: u32 = 3221510263;
-pub const FITHAW: u32 = 3221510264;
-pub const FITRIM: u32 = 3222820985;
-pub const FICLONE: u32 = 1074041865;
-pub const FICLONERANGE: u32 = 1075876877;
-pub const FIDEDUPERANGE: u32 = 3222836278;
-pub const FS_IOC_GETFLAGS: u32 = 2147771905;
-pub const FS_IOC_SETFLAGS: u32 = 1074030082;
-pub const FS_IOC_GETVERSION: u32 = 2147776001;
-pub const FS_IOC_SETVERSION: u32 = 1074034178;
-pub const FS_IOC_FIEMAP: u32 = 3223348747;
-pub const FS_IOC32_GETFLAGS: u32 = 2147771905;
-pub const FS_IOC32_SETFLAGS: u32 = 1074030082;
-pub const FS_IOC32_GETVERSION: u32 = 2147776001;
-pub const FS_IOC32_SETVERSION: u32 = 1074034178;
-pub const FS_IOC_FSGETXATTR: u32 = 2149341215;
-pub const FS_IOC_FSSETXATTR: u32 = 1075599392;
-pub const FS_IOC_GETFSLABEL: u32 = 2164298801;
-pub const FS_IOC_SETFSLABEL: u32 = 1090556978;
-pub const VIDIOC_SUBDEV_QUERYSTD: u32 = 2148030015;
-pub const AUTOFS_DEV_IOCTL_CLOSEMOUNT: u32 = 3222836085;
-pub const LIRC_SET_SEND_CARRIER: u32 = 1074030867;
-pub const AUTOFS_IOC_PROTOSUBVER: u32 = 2147783527;
-pub const PTP_SYS_OFFSET_PRECISE: u32 = 3225435400;
-pub const FSI_SCOM_WRITE: u32 = 3223352066;
-pub const ATM_GETCIRANGE: u32 = 1074553226;
-pub const DMA_BUF_SET_NAME_B: u32 = 1074291201;
-pub const RIO_CM_EP_GET_LIST_SIZE: u32 = 3221512961;
-pub const TUNSETPERSIST: u32 = 1074025675;
-pub const FS_IOC_GET_ENCRYPTION_POLICY: u32 = 1074554389;
-pub const CEC_RECEIVE: u32 = 3224920326;
-pub const MGSL_IOCGPARAMS: u32 = 2149608705;
-pub const ENI_SETMULT: u32 = 1074553191;
-pub const RIO_GET_EVENT_MASK: u32 = 2147773710;
-pub const LIRC_GET_MAX_TIMEOUT: u32 = 2147772681;
-pub const KVM_SET_BOOT_CPU_ID: u32 = 44664;
-pub const KVM_SET_MP_STATE: u32 = 1074048665;
-pub const KVM_GET_MP_STATE: u32 = 2147790488;
-pub const KVM_SET_MEMORY_REGION: u32 = 1075359296;
-pub const KVM_GET_API_VERSION: u32 = 44544;
-pub const KVM_S390_GET_SKEYS: u32 = 1077980850;
-pub const KVM_SET_ONE_REG: u32 = 1074835116;
-pub const KVM_IRQ_LINE_STATUS: u32 = 3221794407;
-pub const KVM_SET_USER_MEMORY_REGION: u32 = 1075883590;
-pub const KVM_S390_INTERRUPT: u32 = 1074835092;
-pub const KVM_TPR_ACCESS_REPORTING: u32 = 3223891602;
-pub const KVM_GET_FPU: u32 = 2174791308;
-pub const KVM_ASSIGN_SET_MSIX_ENTRY: u32 = 1074835060;
-pub const KVM_MEMORY_ENCRYPT_REG_REGION: u32 = 2148576955;
-pub const KVM_S390_UCAS_MAP: u32 = 1075359312;
-pub const KVM_ASSIGN_SET_INTX_MASK: u32 = 1077980836;
-pub const KVM_MEMORY_ENCRYPT_OP: u32 = 3221532346;
-pub const KVM_CREATE_PIT2: u32 = 1077980791;
-pub const KVM_S390_VCPU_FAULT: u32 = 1074048594;
-pub const KVM_REGISTER_COALESCED_MMIO: u32 = 1074835047;
-pub const KVM_SET_VAPIC_ADDR: u32 = 1074310803;
-pub const KVM_CREATE_DEVICE: u32 = 3222056672;
-pub const KVM_GET_IRQCHIP: u32 = 3255348834;
-pub const KVM_TRANSLATE: u32 = 3222843013;
-pub const KVM_S390_SET_INITIAL_PSW: u32 = 1074835094;
-pub const KVM_X86_SETUP_MCE: u32 = 1074310812;
-pub const KVM_DEASSIGN_PCI_DEVICE: u32 = 1077980786;
-pub const KVM_XEN_HVM_SET_ATTR: u32 = 1078505161;
-pub const KVM_GET_CLOCK: u32 = 2150674044;
-pub const KVM_SET_FPU: u32 = 1101049485;
-pub const KVM_KVMCLOCK_CTRL: u32 = 44717;
-pub const KVM_PPC_GET_PVINFO: u32 = 1082175137;
-pub const KVM_X86_GET_MCE_CAP_SUPPORTED: u32 = 2148052637;
-pub const KVM_S390_GET_IRQ_STATE: u32 = 1075883702;
-pub const KVM_GET_DEVICE_ATTR: u32 = 1075359458;
-pub const KVM_S390_INITIAL_RESET: u32 = 44695;
-pub const KVM_SET_REGS: u32 = 1083223682;
-pub const KVM_GET_TSC_KHZ: u32 = 44707;
-pub const KVM_CHECK_EXTENSION: u32 = 44547;
-pub const KVM_PPC_RESIZE_HPT_COMMIT: u32 = 2148576942;
-pub const KVM_GET_DIRTY_LOG: u32 = 1074835010;
-pub const KVM_S390_SET_IRQ_STATE: u32 = 1075883701;
-pub const KVM_S390_NORMAL_RESET: u32 = 44739;
-pub const KVM_SET_SIGNAL_MASK: u32 = 1074048651;
-pub const KVM_XEN_VCPU_SET_ATTR: u32 = 1078505163;
-pub const KVM_SET_GSI_ROUTING: u32 = 1074310762;
-pub const KVM_CREATE_VCPU: u32 = 44609;
-pub const KVM_S390_UCAS_UNMAP: u32 = 1075359313;
-pub const KVM_S390_STORE_STATUS: u32 = 1074048661;
-pub const KVM_UNREGISTER_COALESCED_MMIO: u32 = 1074835048;
-pub const KVM_ASSIGN_DEV_IRQ: u32 = 1077980784;
-pub const KVM_S390_PV_COMMAND: u32 = 3223367365;
-pub const KVM_S390_ENABLE_SIE: u32 = 44550;
-pub const KVM_CLEAR_DIRTY_LOG: u32 = 3222843072;
-pub const KVM_GET_ONE_REG: u32 = 1074835115;
-pub const KVM_ARM_SET_DEVICE_ADDR: u32 = 1074835115;
-pub const KVM_DIRTY_TLB: u32 = 1074572970;
-pub const KVM_NMI: u32 = 44698;
-pub const KVM_HYPERV_EVENTFD: u32 = 1075359421;
-pub const KVM_S390_MEM_OP: u32 = 1077980849;
-pub const KVM_PPC_SVM_OFF: u32 = 44723;
-pub const KVM_PPC_RESIZE_HPT_PREPARE: u32 = 2148576941;
-pub const KVM_INTERRUPT: u32 = 1074048646;
-pub const KVM_XEN_HVM_GET_ATTR: u32 = 3225988808;
-pub const KVM_GET_SREGS: u32 = 2167975555;
-pub const KVM_SET_IDENTITY_MAP_ADDR: u32 = 1074310728;
-pub const KVM_GET_REGS: u32 = 2156965505;
-pub const KVM_S390_GET_CMMA_BITS: u32 = 3223367352;
-pub const KVM_CREATE_IRQCHIP: u32 = 44640;
-pub const KVM_ASSIGN_PCI_DEVICE: u32 = 2151722601;
-pub const KVM_SET_NR_MMU_PAGES: u32 = 44612;
-pub const KVM_IOEVENTFD: u32 = 1077980793;
-pub const KVM_RUN: u32 = 44672;
-pub const KVM_S390_SET_SKEYS: u32 = 1077980851;
-pub const KVM_SET_DEVICE_ATTR: u32 = 1075359457;
-pub const KVM_DEASSIGN_DEV_IRQ: u32 = 1077980789;
-pub const KVM_SMI: u32 = 44727;
-pub const KVM_SET_TSS_ADDR: u32 = 44615;
-pub const KVM_GET_NR_MMU_PAGES: u32 = 44613;
-pub const KVM_XEN_VCPU_GET_ATTR: u32 = 3225988810;
-pub const KVM_REINJECT_CONTROL: u32 = 44657;
-pub const KVM_HAS_DEVICE_ATTR: u32 = 1075359459;
-pub const KVM_IRQFD: u32 = 1075883638;
-pub const KVM_S390_SET_CMMA_BITS: u32 = 1075883705;
-pub const KVM_SET_IRQCHIP: u32 = 2181607011;
-pub const KVM_SIGNAL_MSI: u32 = 1075883685;
-pub const KVM_GET_VCPU_MMAP_SIZE: u32 = 44548;
-pub const KVM_CREATE_VM: u32 = 44545;
-pub const KVM_S390_CLEAR_RESET: u32 = 44740;
-pub const KVM_RESET_DIRTY_RINGS: u32 = 44743;
-pub const KVM_ASSIGN_SET_MSIX_NR: u32 = 1074310771;
-pub const KVM_CREATE_PIT: u32 = 44644;
-pub const KVM_SET_GUEST_DEBUG: u32 = 1078505115;
-pub const KVM_GET_REG_LIST: u32 = 3221794480;
-pub const KVM_ARM_VCPU_FINALIZE: u32 = 1074048706;
-pub const KVM_SET_CLOCK: u32 = 1076932219;
-pub const KVM_PPC_ALLOCATE_HTAB: u32 = 3221532327;
-pub const KVM_PPC_GET_SMMU_INFO: u32 = 2186325670;
-pub const KVM_SET_TSC_KHZ: u32 = 44706;
-pub const KVM_S390_IRQ: u32 = 1078505140;
-pub const KVM_ENABLE_CAP: u32 = 1080602275;
-pub const KVM_IRQ_LINE: u32 = 1074310753;
-pub const KVM_SET_SREGS: u32 = 1094233732;
-pub const KVM_MEMORY_ENCRYPT_UNREG_REGION: u32 = 2148576956;
-pub const KVM_GET_STATS_FD: u32 = 44750;
-pub const USBDEVFS_CLAIMINTERFACE: u32 = 2147767567;
-pub const CHIOMOVE: u32 = 1075077889;
-pub const SONYPI_IOCGBATFLAGS: u32 = 2147579399;
-pub const BTRFS_IOC_SYNC: u32 = 37896;
-pub const VIDIOC_TRY_FMT: u32 = 3234616896;
-pub const LIRC_SET_REC_MODE: u32 = 1074030866;
-pub const VIDIOC_DQEVENT: u32 = 2155370073;
-pub const RPMSG_DESTROY_EPT_IOCTL: u32 = 46338;
-pub const UVCIOC_CTRL_MAP: u32 = 3227022624;
-pub const VHOST_SET_BACKEND_FEATURES: u32 = 1074310949;
-pub const VHOST_VSOCK_SET_GUEST_CID: u32 = 1074311008;
-pub const UI_SET_KEYBIT: u32 = 1074025829;
-pub const LIRC_SET_REC_TIMEOUT: u32 = 1074030872;
-pub const FS_IOC_GET_ENCRYPTION_KEY_STATUS: u32 = 3229640218;
-pub const BTRFS_IOC_TREE_SEARCH_V2: u32 = 3228603409;
-pub const VHOST_SET_VRING_BASE: u32 = 1074310930;
-pub const RIO_ENABLE_DOORBELL_RANGE: u32 = 1074294025;
-pub const VIDIOC_TRY_EXT_CTRLS: u32 = 3222820425;
-pub const LIRC_GET_REC_MODE: u32 = 2147772674;
-pub const PPGETTIME: u32 = 2148036757;
-pub const BTRFS_IOC_RM_DEV: u32 = 1342215179;
-pub const ATM_SETBACKEND: u32 = 1073897970;
-pub const FSL_HV_IOCTL_PARTITION_START: u32 = 3222318851;
-pub const FBIO_WAITEVENT: u32 = 18056;
-pub const SWITCHTEC_IOCTL_PORT_TO_PFF: u32 = 3222034245;
-pub const NVME_IOCTL_IO_CMD: u32 = 3225964099;
-pub const IPMICTL_RECEIVE_MSG_TRUNC: u32 = 3222825227;
-pub const FDTWADDLE: u32 = 601;
-pub const NVME_IOCTL_SUBMIT_IO: u32 = 1076645442;
-pub const NILFS_IOCTL_SYNC: u32 = 2148036234;
-pub const VIDIOC_SUBDEV_S_DV_TIMINGS: u32 = 3229898327;
-pub const ASPEED_LPC_CTRL_IOCTL_GET_SIZE: u32 = 3222319616;
-pub const DM_DEV_STATUS: u32 = 3241737479;
-pub const TEE_IOC_CLOSE_SESSION: u32 = 2147787781;
-pub const NS_GETPSTAT: u32 = 3222036833;
-pub const UI_SET_PROPBIT: u32 = 1074025838;
-pub const TUNSETFILTEREBPF: u32 = 2147767521;
-pub const RIO_MPORT_MAINT_COMPTAG_SET: u32 = 1074031874;
-pub const AUTOFS_DEV_IOCTL_VERSION: u32 = 3222836081;
-pub const WDIOC_SETOPTIONS: u32 = 2147768068;
-pub const VHOST_SCSI_SET_ENDPOINT: u32 = 1088991040;
-pub const MGSL_IOCGTXIDLE: u32 = 27907;
-pub const ATM_ADDLECSADDR: u32 = 1074553230;
-pub const FSL_HV_IOCTL_GETPROP: u32 = 3223891719;
-pub const FDGETPRM: u32 = 2149319172;
-pub const HIDIOCAPPLICATION: u32 = 18434;
-pub const ENI_MEMDUMP: u32 = 1074553184;
-pub const PTP_SYS_OFFSET2: u32 = 1128283406;
-pub const VIDIOC_SUBDEV_G_DV_TIMINGS: u32 = 3229898328;
-pub const DMA_BUF_SET_NAME_A: u32 = 1074029057;
-pub const PTP_PIN_GETFUNC: u32 = 3227532550;
-pub const PTP_SYS_OFFSET_EXTENDED: u32 = 3300932873;
-pub const DFL_FPGA_PORT_UINT_SET_IRQ: u32 = 1074312776;
-pub const RTC_EPOCH_READ: u32 = 2147774477;
-pub const VIDIOC_SUBDEV_S_SELECTION: u32 = 3225441854;
-pub const VIDIOC_QUERY_EXT_CTRL: u32 = 3236451943;
-pub const ATM_GETLECSADDR: u32 = 1074553232;
-pub const FSL_HV_IOCTL_PARTITION_STOP: u32 = 3221794564;
-pub const SONET_GETDIAG: u32 = 2147770644;
-pub const ATMMPC_DATA: u32 = 25049;
-pub const IPMICTL_UNREGISTER_FOR_CMD_CHANS: u32 = 2148296989;
-pub const HIDIOCGCOLLECTIONINDEX: u32 = 1075333136;
-pub const RPMSG_CREATE_EPT_IOCTL: u32 = 1076409601;
-pub const GPIOHANDLE_GET_LINE_VALUES_IOCTL: u32 = 3225465864;
-pub const UI_DEV_SETUP: u32 = 1079792899;
-pub const ISST_IF_IO_CMD: u32 = 1074068994;
-pub const RIO_MPORT_MAINT_READ_REMOTE: u32 = 2149084423;
-pub const VIDIOC_OMAP3ISP_HIST_CFG: u32 = 3224393412;
-pub const BLKGETNRZONES: u32 = 2147750533;
-pub const VIDIOC_G_MODULATOR: u32 = 3225703990;
-pub const VBG_IOCTL_WRITE_CORE_DUMP: u32 = 3223082515;
-pub const USBDEVFS_SETINTERFACE: u32 = 2148029700;
-pub const PPPIOCGCHAN: u32 = 2147775543;
-pub const EVIOCGVERSION: u32 = 2147763457;
-pub const VHOST_NET_SET_BACKEND: u32 = 1074310960;
-pub const USBDEVFS_REAPURBNDELAY: u32 = 1074025741;
-pub const RNDZAPENTCNT: u32 = 20996;
-pub const VIDIOC_G_PARM: u32 = 3234616853;
-pub const TUNGETDEVNETNS: u32 = 21731;
-pub const LIRC_SET_MEASURE_CARRIER_MODE: u32 = 1074030877;
-pub const VHOST_SET_VRING_ERR: u32 = 1074310946;
-pub const VDUSE_VQ_SETUP: u32 = 1075872020;
-pub const AUTOFS_IOC_SETTIMEOUT: u32 = 3221525348;
-pub const VIDIOC_S_FREQUENCY: u32 = 1076647481;
-pub const F2FS_IOC_SEC_TRIM_FILE: u32 = 1075377428;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY: u32 = 3225445912;
-pub const WDIOC_GETPRETIMEOUT: u32 = 2147768073;
-pub const USBDEVFS_DROP_PRIVILEGES: u32 = 1074025758;
-pub const BTRFS_IOC_SNAP_CREATE_V2: u32 = 1342215191;
-pub const VHOST_VSOCK_SET_RUNNING: u32 = 1074048865;
-pub const STP_SET_OPTIONS: u32 = 1074275586;
-pub const FBIO_RADEON_GET_MIRROR: u32 = 2147762179;
-pub const IVTVFB_IOC_DMA_FRAME: u32 = 1074550464;
-pub const IPMICTL_SEND_COMMAND: u32 = 2148821261;
-pub const VIDIOC_G_ENC_INDEX: u32 = 2283296332;
-pub const DFL_FPGA_FME_PORT_PR: u32 = 46720;
-pub const CHIOSVOLTAG: u32 = 1076912914;
-pub const ATM_SETESIF: u32 = 1074553229;
-pub const FW_CDEV_IOC_SEND_RESPONSE: u32 = 1075061508;
-pub const PMU_IOC_GET_MODEL: u32 = 2147762691;
-pub const JSIOCGBTNMAP: u32 = 2214619700;
-pub const USBDEVFS_HUB_PORTINFO: u32 = 2155894035;
-pub const VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS: u32 = 3222820363;
-pub const FDCLRPRM: u32 = 577;
-pub const BTRFS_IOC_SCRUB: u32 = 3288372251;
-pub const USBDEVFS_DISCONNECT: u32 = 21782;
-pub const TUNSETVNETBE: u32 = 1074025694;
-pub const ATMTCP_REMOVE: u32 = 24975;
-pub const VHOST_VDPA_GET_CONFIG: u32 = 2148052851;
-pub const PPPIOCGNPMODE: u32 = 3221779532;
-pub const FDGETDRVPRM: u32 = 2153251345;
-pub const TUNSETVNETLE: u32 = 1074025692;
-pub const PHN_SETREG: u32 = 1074294790;
-pub const PPPIOCDETACH: u32 = 1074033724;
-pub const MMTIMER_GETRES: u32 = 2147773697;
-pub const VIDIOC_SUBDEV_ENUMSTD: u32 = 3225441817;
-pub const PPGETFLAGS: u32 = 2147774618;
-pub const VDUSE_DEV_GET_FEATURES: u32 = 2148040977;
-pub const CAPI_MANUFACTURER_CMD: u32 = 3221766944;
-pub const VIDIOC_G_TUNER: u32 = 3226752541;
-pub const DM_TABLE_STATUS: u32 = 3241737484;
-pub const DM_DEV_ARM_POLL: u32 = 3241737488;
-pub const NE_CREATE_VM: u32 = 2148052512;
-pub const MEDIA_IOC_ENUM_LINKS: u32 = 3223092226;
-pub const F2FS_IOC_PRECACHE_EXTENTS: u32 = 62735;
-pub const DFL_FPGA_PORT_DMA_MAP: u32 = 46659;
-pub const MGSL_IOCGXCTRL: u32 = 27926;
-pub const FW_CDEV_IOC_SEND_REQUEST: u32 = 1076110081;
-pub const SONYPI_IOCGBLUE: u32 = 2147579400;
-pub const F2FS_IOC_DECOMPRESS_FILE: u32 = 62743;
-pub const I2OHTML: u32 = 3223087369;
-pub const VFIO_GET_API_VERSION: u32 = 15204;
-pub const IDT77105_GETSTATZ: u32 = 1074553139;
-pub const I2OPARMSET: u32 = 3222825219;
-pub const TEE_IOC_CANCEL: u32 = 2148049924;
-pub const PTP_SYS_OFFSET_PRECISE2: u32 = 3225435409;
-pub const DFL_FPGA_PORT_RESET: u32 = 46656;
-pub const PPPIOCGASYNCMAP: u32 = 2147775576;
-pub const EVIOCGKEYCODE_V2: u32 = 2150122756;
-pub const DM_DEV_SET_GEOMETRY: u32 = 3241737487;
-pub const HIDIOCSUSAGE: u32 = 1075333132;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE: u32 = 1075323664;
-pub const PTP_EXTTS_REQUEST: u32 = 1074806018;
-pub const SWITCHTEC_IOCTL_EVENT_CTL: u32 = 3223869251;
-pub const WDIOC_SETPRETIMEOUT: u32 = 3221509896;
-pub const VHOST_SCSI_CLEAR_ENDPOINT: u32 = 1088991041;
-pub const JSIOCGAXES: u32 = 2147576337;
-pub const HIDIOCSFLAG: u32 = 1074022415;
-pub const PTP_PEROUT_REQUEST2: u32 = 1077427468;
-pub const PPWDATA: u32 = 1073836166;
-pub const PTP_CLOCK_GETCAPS: u32 = 2152742145;
-pub const FDGETMAXERRS: u32 = 2148794894;
-pub const TUNSETQUEUE: u32 = 1074025689;
-pub const PTP_ENABLE_PPS: u32 = 1074019588;
-pub const SIOCSIFATMTCP: u32 = 24960;
-pub const CEC_ADAP_G_LOG_ADDRS: u32 = 2153537795;
-pub const ND_IOCTL_ARS_CAP: u32 = 3223342593;
-pub const NBD_SET_BLKSIZE: u32 = 43777;
-pub const NBD_SET_TIMEOUT: u32 = 43785;
-pub const VHOST_SCSI_GET_ABI_VERSION: u32 = 1074048834;
-pub const RIO_UNMAP_INBOUND: u32 = 1074294034;
-pub const ATM_QUERYLOOP: u32 = 1074553172;
-pub const DFL_FPGA_GET_API_VERSION: u32 = 46592;
-pub const USBDEVFS_WAIT_FOR_RESUME: u32 = 21795;
-pub const FBIO_CURSOR: u32 = 3225961992;
-pub const RNDCLEARPOOL: u32 = 20998;
-pub const VIDIOC_QUERYSTD: u32 = 2148030015;
-pub const DMA_BUF_IOCTL_SYNC: u32 = 1074291200;
-pub const SCIF_RECV: u32 = 3222565639;
-pub const PTP_PIN_GETFUNC2: u32 = 3227532559;
-pub const FW_CDEV_IOC_ALLOCATE: u32 = 3223331586;
-pub const CEC_ADAP_G_CAPS: u32 = 3226231040;
-pub const VIDIOC_G_FBUF: u32 = 2150389258;
-pub const PTP_ENABLE_PPS2: u32 = 1074019597;
-pub const PCITEST_CLEAR_IRQ: u32 = 20496;
-pub const IPMICTL_SET_GETS_EVENTS_CMD: u32 = 2147772688;
-pub const BTRFS_IOC_DEVICES_READY: u32 = 2415957031;
-pub const JSIOCGAXMAP: u32 = 2151705138;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER: u32 = 2148279052;
-pub const FW_CDEV_IOC_SET_ISO_CHANNELS: u32 = 1074537239;
-pub const RTC_WIE_OFF: u32 = 28688;
-pub const PPGETMODE: u32 = 2147774616;
-pub const VIDIOC_DBG_G_REGISTER: u32 = 3224917584;
-pub const PTP_SYS_OFFSET: u32 = 1128283397;
-pub const BTRFS_IOC_SPACE_INFO: u32 = 3222311956;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_SIZE: u32 = 3225441866;
-pub const ND_IOCTL_VENDOR: u32 = 3221769737;
-pub const SCIF_VREADFROM: u32 = 3223614220;
-pub const BTRFS_IOC_TRANS_START: u32 = 37894;
-pub const INOTIFY_IOC_SETNEXTWD: u32 = 1074022656;
-pub const SNAPSHOT_GET_IMAGE_SIZE: u32 = 2148021006;
-pub const TUNDETACHFILTER: u32 = 1074287830;
-pub const ND_IOCTL_CLEAR_ERROR: u32 = 3223342596;
-pub const IOC_PR_CLEAR: u32 = 1074819277;
-pub const SCIF_READFROM: u32 = 3223614218;
-pub const PPPIOCGDEBUG: u32 = 2147775553;
-pub const BLKGETZONESZ: u32 = 2147750532;
-pub const HIDIOCGUSAGES: u32 = 3491514387;
-pub const SONYPI_IOCGTEMP: u32 = 2147579404;
-pub const UI_SET_MSCBIT: u32 = 1074025832;
-pub const APM_IOC_SUSPEND: u32 = 16642;
-pub const BTRFS_IOC_TREE_SEARCH: u32 = 3489698833;
-pub const RTC_PLL_GET: u32 = 2149347345;
-pub const RIO_CM_EP_GET_LIST: u32 = 3221512962;
-pub const USBDEVFS_DISCSIGNAL: u32 = 2148029710;
-pub const LIRC_GET_MIN_TIMEOUT: u32 = 2147772680;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY: u32 = 2174244674;
-pub const DM_TARGET_MSG: u32 = 3241737486;
-pub const SONYPI_IOCGBAT1REM: u32 = 2147644931;
-pub const EVIOCSFF: u32 = 1076643200;
-pub const TUNSETGROUP: u32 = 1074025678;
-pub const EVIOCGKEYCODE: u32 = 2148025604;
-pub const KCOV_REMOTE_ENABLE: u32 = 1075340134;
-pub const ND_IOCTL_GET_CONFIG_SIZE: u32 = 3222031876;
-pub const FDEJECT: u32 = 602;
-pub const TUNSETOFFLOAD: u32 = 1074025680;
-pub const PPPIOCCONNECT: u32 = 1074033722;
-pub const ATM_ADDADDR: u32 = 1074553224;
-pub const VDUSE_DEV_INJECT_CONFIG_IRQ: u32 = 33043;
-pub const AUTOFS_DEV_IOCTL_ASKUMOUNT: u32 = 3222836093;
-pub const VHOST_VDPA_GET_STATUS: u32 = 2147594097;
-pub const CCISS_PASSTHRU: u32 = 3226747403;
-pub const MGSL_IOCCLRMODCOUNT: u32 = 27919;
-pub const TEE_IOC_SUPPL_SEND: u32 = 2148574215;
-pub const ATMARPD_CTRL: u32 = 25057;
-pub const UI_ABS_SETUP: u32 = 1075598596;
-pub const UI_DEV_DESTROY: u32 = 21762;
-pub const BTRFS_IOC_QUOTA_CTL: u32 = 3222311976;
-pub const RTC_AIE_ON: u32 = 28673;
-pub const AUTOFS_IOC_EXPIRE: u32 = 2165085029;
-pub const PPPIOCSDEBUG: u32 = 1074033728;
-pub const GPIO_V2_LINE_SET_VALUES_IOCTL: u32 = 3222320143;
-pub const PPPIOCSMRU: u32 = 1074033746;
-pub const CCISS_DEREGDISK: u32 = 16908;
-pub const UI_DEV_CREATE: u32 = 21761;
-pub const FUSE_DEV_IOC_CLONE: u32 = 2147804416;
-pub const BTRFS_IOC_START_SYNC: u32 = 2148045848;
-pub const NILFS_IOCTL_DELETE_CHECKPOINT: u32 = 1074294401;
-pub const SNAPSHOT_AVAIL_SWAP_SIZE: u32 = 2148021011;
-pub const DM_TABLE_CLEAR: u32 = 3241737482;
-pub const CCISS_GETINTINFO: u32 = 2148024834;
-pub const PPPIOCSASYNCMAP: u32 = 1074033751;
-pub const I2OEVTGET: u32 = 2154326283;
-pub const NVME_IOCTL_RESET: u32 = 20036;
-pub const PPYIELD: u32 = 28813;
-pub const NVME_IOCTL_IO64_CMD: u32 = 3226488392;
-pub const TUNSETCARRIER: u32 = 1074025698;
-pub const DM_DEV_WAIT: u32 = 3241737480;
-pub const RTC_WIE_ON: u32 = 28687;
-pub const MEDIA_IOC_DEVICE_INFO: u32 = 3238034432;
-pub const RIO_CM_CHAN_CREATE: u32 = 3221381891;
-pub const MGSL_IOCSPARAMS: u32 = 1075866880;
-pub const RTC_SET_TIME: u32 = 1076129802;
-pub const VHOST_RESET_OWNER: u32 = 44802;
-pub const IOC_OPAL_PSID_REVERT_TPR: u32 = 1091072232;
-pub const AUTOFS_DEV_IOCTL_OPENMOUNT: u32 = 3222836084;
-pub const UDF_GETEABLOCK: u32 = 2147773505;
-pub const VFIO_IOMMU_MAP_DMA: u32 = 15217;
-pub const VIDIOC_SUBSCRIBE_EVENT: u32 = 1075861082;
-pub const HIDIOCGFLAG: u32 = 2147764238;
-pub const HIDIOCGUCODE: u32 = 3222816781;
-pub const VIDIOC_OMAP3ISP_AF_CFG: u32 = 3226228421;
-pub const DM_REMOVE_ALL: u32 = 3241737473;
-pub const ASPEED_LPC_CTRL_IOCTL_MAP: u32 = 1074835969;
-pub const CCISS_GETFIRMVER: u32 = 2147762696;
-pub const ND_IOCTL_ARS_START: u32 = 3223342594;
-pub const PPPIOCSMRRU: u32 = 1074033723;
-pub const CEC_ADAP_S_LOG_ADDRS: u32 = 3227279620;
-pub const RPROC_GET_SHUTDOWN_ON_RELEASE: u32 = 2147792642;
-pub const DMA_HEAP_IOCTL_ALLOC: u32 = 3222816768;
-pub const PPSETTIME: u32 = 1074294934;
-pub const RTC_ALM_READ: u32 = 2149871624;
-pub const VDUSE_SET_API_VERSION: u32 = 1074299137;
-pub const RIO_MPORT_MAINT_WRITE_REMOTE: u32 = 1075342600;
-pub const VIDIOC_SUBDEV_S_CROP: u32 = 3224917564;
-pub const USBDEVFS_CONNECT: u32 = 21783;
-pub const SYNC_IOC_FILE_INFO: u32 = 3224911364;
-pub const ATMARP_MKIP: u32 = 25058;
-pub const VFIO_IOMMU_SPAPR_TCE_GET_INFO: u32 = 15216;
-pub const CCISS_GETHEARTBEAT: u32 = 2147762694;
-pub const ATM_RSTADDR: u32 = 1074553223;
-pub const NBD_SET_SIZE: u32 = 43778;
-pub const UDF_GETVOLIDENT: u32 = 2147773506;
-pub const GPIO_V2_LINE_GET_VALUES_IOCTL: u32 = 3222320142;
-pub const MGSL_IOCSTXIDLE: u32 = 27906;
-pub const FSL_HV_IOCTL_SETPROP: u32 = 3223891720;
-pub const BTRFS_IOC_GET_DEV_STATS: u32 = 3288896564;
-pub const PPRSTATUS: u32 = 2147577985;
-pub const MGSL_IOCTXENABLE: u32 = 27908;
-pub const UDF_GETEASIZE: u32 = 2147773504;
-pub const NVME_IOCTL_ADMIN64_CMD: u32 = 3226488391;
-pub const VHOST_SET_OWNER: u32 = 44801;
-pub const RIO_ALLOC_DMA: u32 = 3222826259;
-pub const RIO_CM_CHAN_ACCEPT: u32 = 3221775111;
-pub const I2OHRTGET: u32 = 3222038785;
-pub const ATM_SETCIRANGE: u32 = 1074553227;
-pub const HPET_IE_ON: u32 = 26625;
-pub const PERF_EVENT_IOC_ID: u32 = 2147755015;
-pub const TUNSETSNDBUF: u32 = 1074025684;
-pub const PTP_PIN_SETFUNC: u32 = 1080048903;
-pub const PPPIOCDISCONN: u32 = 29753;
-pub const VIDIOC_QUERYCTRL: u32 = 3225703972;
-pub const PPEXCL: u32 = 28815;
-pub const PCITEST_MSI: u32 = 1074024451;
-pub const FDWERRORCLR: u32 = 598;
-pub const AUTOFS_IOC_FAIL: u32 = 37729;
-pub const USBDEVFS_IOCTL: u32 = 3222033682;
-pub const VIDIOC_S_STD: u32 = 1074288152;
-pub const F2FS_IOC_RESIZE_FS: u32 = 1074328848;
-pub const SONET_SETDIAG: u32 = 3221512466;
-pub const BTRFS_IOC_DEFRAG: u32 = 1342215170;
-pub const CCISS_GETDRIVVER: u32 = 2147762697;
-pub const IPMICTL_GET_TIMING_PARMS_CMD: u32 = 2148034839;
-pub const HPET_IRQFREQ: u32 = 1074030598;
-pub const ATM_GETESI: u32 = 1074553221;
-pub const CCISS_GETLUNINFO: u32 = 2148286993;
-pub const AUTOFS_DEV_IOCTL_ISMOUNTPOINT: u32 = 3222836094;
-pub const TEE_IOC_SHM_ALLOC: u32 = 3222316033;
-pub const PERF_EVENT_IOC_SET_BPF: u32 = 1074013192;
-pub const UDMABUF_CREATE_LIST: u32 = 1074296131;
-pub const VHOST_SET_LOG_BASE: u32 = 1074310916;
-pub const ZATM_GETPOOL: u32 = 1074553185;
-pub const BR2684_SETFILT: u32 = 1075601808;
-pub const RNDGETPOOL: u32 = 2148028930;
-pub const PPS_GETPARAMS: u32 = 2147774625;
-pub const IOC_PR_RESERVE: u32 = 1074819273;
-pub const VIDIOC_TRY_DECODER_CMD: u32 = 3225966177;
-pub const RIO_CM_CHAN_CLOSE: u32 = 1073898244;
-pub const VIDIOC_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const IOCTL_MEI_CONNECT_CLIENT_VTAG: u32 = 3222554628;
-pub const PMU_IOC_GET_BACKLIGHT: u32 = 2147762689;
-pub const USBDEVFS_GET_CAPABILITIES: u32 = 2147767578;
-pub const SCIF_WRITETO: u32 = 3223614219;
-pub const UDF_RELOCATE_BLOCKS: u32 = 3221515331;
-pub const FSL_HV_IOCTL_PARTITION_RESTART: u32 = 3221794561;
-pub const CCISS_REGNEWD: u32 = 16910;
-pub const FAT_IOCTL_SET_ATTRIBUTES: u32 = 1074033169;
-pub const VIDIOC_CREATE_BUFS: u32 = 3237500508;
-pub const CAPI_GET_VERSION: u32 = 3222291207;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY: u32 = 2228508482;
-pub const VFIO_EEH_PE_OP: u32 = 15225;
-pub const FW_CDEV_IOC_CREATE_ISO_CONTEXT: u32 = 3223069448;
-pub const F2FS_IOC_RELEASE_COMPRESS_BLOCKS: u32 = 2148070674;
-pub const NBD_SET_SIZE_BLOCKS: u32 = 43783;
-pub const IPMI_BMC_IOCTL_SET_SMS_ATN: u32 = 45312;
-pub const ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG: u32 = 3222319873;
-pub const VIDIOC_S_AUDOUT: u32 = 1077171762;
-pub const VIDIOC_S_FMT: u32 = 3234616837;
-pub const PPPIOCATTACH: u32 = 1074033725;
-pub const VHOST_GET_VRING_BUSYLOOP_TIMEOUT: u32 = 1074310948;
-pub const FS_IOC_MEASURE_VERITY: u32 = 3221513862;
-pub const CCISS_BIG_PASSTHRU: u32 = 3227009554;
-pub const IPMICTL_SET_MY_LUN_CMD: u32 = 2147772691;
-pub const PCITEST_LEGACY_IRQ: u32 = 20482;
-pub const USBDEVFS_SUBMITURB: u32 = 2150389002;
-pub const AUTOFS_IOC_READY: u32 = 37728;
-pub const BTRFS_IOC_SEND: u32 = 1078236198;
-pub const VIDIOC_G_EXT_CTRLS: u32 = 3222820423;
-pub const JSIOCSBTNMAP: u32 = 1140877875;
-pub const PPPIOCSFLAGS: u32 = 1074033753;
-pub const NVRAM_INIT: u32 = 28736;
-pub const RFKILL_IOCTL_NOINPUT: u32 = 20993;
-pub const BTRFS_IOC_BALANCE: u32 = 1342215180;
-pub const FS_IOC_GETFSMAP: u32 = 3233830971;
-pub const IPMICTL_GET_MY_CHANNEL_LUN_CMD: u32 = 2147772699;
-pub const STP_POLICY_ID_GET: u32 = 2148541697;
-pub const PPSETFLAGS: u32 = 1074032795;
-pub const CEC_ADAP_S_PHYS_ADDR: u32 = 1073897730;
-pub const ATMTCP_CREATE: u32 = 24974;
-pub const IPMI_BMC_IOCTL_FORCE_ABORT: u32 = 45314;
-pub const PPPIOCGXASYNCMAP: u32 = 2149610576;
-pub const VHOST_SET_VRING_CALL: u32 = 1074310945;
-pub const LIRC_GET_FEATURES: u32 = 2147772672;
-pub const GSMIOC_DISABLE_NET: u32 = 18179;
-pub const AUTOFS_IOC_CATATONIC: u32 = 37730;
-pub const NBD_DO_IT: u32 = 43779;
-pub const LIRC_SET_REC_CARRIER_RANGE: u32 = 1074030879;
-pub const IPMICTL_GET_MY_CHANNEL_ADDRESS_CMD: u32 = 2147772697;
-pub const EVIOCSCLOCKID: u32 = 1074021792;
-pub const USBDEVFS_FREE_STREAMS: u32 = 2148029725;
-pub const FSI_SCOM_RESET: u32 = 1074033411;
-pub const PMU_IOC_GRAB_BACKLIGHT: u32 = 2147762694;
-pub const VIDIOC_SUBDEV_S_FMT: u32 = 3227014661;
-pub const FDDEFPRM: u32 = 1075577411;
-pub const TEE_IOC_INVOKE: u32 = 2148574211;
-pub const USBDEVFS_BULK: u32 = 3222295810;
-pub const SCIF_VWRITETO: u32 = 3223614221;
-pub const SONYPI_IOCSBRT: u32 = 1073837568;
-pub const BTRFS_IOC_FILE_EXTENT_SAME: u32 = 3222836278;
-pub const RTC_PIE_ON: u32 = 28677;
-pub const BTRFS_IOC_SCAN_DEV: u32 = 1342215172;
-pub const PPPIOCXFERUNIT: u32 = 29774;
-pub const WDIOC_GETTIMEOUT: u32 = 2147768071;
-pub const BTRFS_IOC_SET_RECEIVED_SUBVOL: u32 = 3233846309;
-pub const DFL_FPGA_PORT_ERR_SET_IRQ: u32 = 1074312774;
-pub const FBIO_WAITFORVSYNC: u32 = 1074021920;
-pub const RTC_PIE_OFF: u32 = 28678;
-pub const EVIOCGRAB: u32 = 1074021776;
-pub const PMU_IOC_SET_BACKLIGHT: u32 = 1074020866;
-pub const EVIOCGREP: u32 = 2148025603;
-pub const PERF_EVENT_IOC_MODIFY_ATTRIBUTES: u32 = 1074013195;
-pub const UFFDIO_CONTINUE: u32 = 3223366151;
-pub const VDUSE_GET_API_VERSION: u32 = 2148040960;
-pub const RTC_RD_TIME: u32 = 2149871625;
-pub const FDMSGOFF: u32 = 582;
-pub const IPMICTL_REGISTER_FOR_CMD_CHANS: u32 = 2148296988;
-pub const CAPI_GET_ERRCODE: u32 = 2147631905;
-pub const PCITEST_SET_IRQTYPE: u32 = 1074024456;
-pub const VIDIOC_SUBDEV_S_EDID: u32 = 3223606825;
-pub const MATROXFB_SET_OUTPUT_MODE: u32 = 1074032378;
-pub const RIO_DEV_ADD: u32 = 1075866903;
-pub const VIDIOC_ENUM_FREQ_BANDS: u32 = 3225441893;
-pub const FBIO_RADEON_SET_MIRROR: u32 = 1074020356;
-pub const PCITEST_GET_IRQTYPE: u32 = 20489;
-pub const JSIOCGVERSION: u32 = 2147772929;
-pub const SONYPI_IOCSBLUE: u32 = 1073837577;
-pub const SNAPSHOT_PREF_IMAGE_SIZE: u32 = 13074;
-pub const F2FS_IOC_GET_FEATURES: u32 = 2147808524;
-pub const SCIF_REG: u32 = 3223876360;
-pub const NILFS_IOCTL_CLEAN_SEGMENTS: u32 = 1081634440;
-pub const FW_CDEV_IOC_INITIATE_BUS_RESET: u32 = 1074012933;
-pub const RIO_WAIT_FOR_ASYNC: u32 = 1074294038;
-pub const VHOST_SET_VRING_NUM: u32 = 1074310928;
-pub const AUTOFS_DEV_IOCTL_PROTOVER: u32 = 3222836082;
-pub const RIO_FREE_DMA: u32 = 1074294036;
-pub const MGSL_IOCRXENABLE: u32 = 27909;
-pub const IOCTL_VM_SOCKETS_GET_LOCAL_CID: u32 = 1977;
-pub const IPMICTL_SET_TIMING_PARMS_CMD: u32 = 2148034838;
-pub const PPPIOCGL2TPSTATS: u32 = 2152231990;
-pub const PERF_EVENT_IOC_PERIOD: u32 = 1074275332;
-pub const PTP_PIN_SETFUNC2: u32 = 1080048912;
-pub const CHIOEXCHANGE: u32 = 1075602178;
-pub const NILFS_IOCTL_GET_SUINFO: u32 = 2149084804;
-pub const CEC_DQEVENT: u32 = 3226493191;
-pub const UI_SET_SWBIT: u32 = 1074025837;
-pub const VHOST_VDPA_SET_CONFIG: u32 = 1074311028;
-pub const TUNSETIFF: u32 = 1074025674;
-pub const CHIOPOSITION: u32 = 1074553603;
-pub const IPMICTL_SET_MAINTENANCE_MODE_CMD: u32 = 1074030879;
-pub const BTRFS_IOC_DEFAULT_SUBVOL: u32 = 1074304019;
-pub const RIO_UNMAP_OUTBOUND: u32 = 1076391184;
-pub const CAPI_CLR_FLAGS: u32 = 2147762981;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE: u32 = 1075323663;
-pub const MATROXFB_GET_OUTPUT_CONNECTION: u32 = 2147774200;
-pub const EVIOCSMASK: u32 = 1074808211;
-pub const BTRFS_IOC_FORGET_DEV: u32 = 1342215173;
-pub const CXL_MEM_QUERY_COMMANDS: u32 = 2148060673;
-pub const CEC_S_MODE: u32 = 1074028809;
-pub const MGSL_IOCSIF: u32 = 27914;
-pub const SWITCHTEC_IOCTL_PFF_TO_PORT: u32 = 3222034244;
-pub const PPSETMODE: u32 = 1074032768;
-pub const VFIO_DEVICE_SET_IRQS: u32 = 15214;
-pub const VIDIOC_PREPARE_BUF: u32 = 3225704029;
-pub const CEC_ADAP_G_CONNECTOR_INFO: u32 = 2151964938;
-pub const IOC_OPAL_WRITE_SHADOW_MBR: u32 = 1092645098;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL: u32 = 3225441867;
-pub const UDMABUF_CREATE: u32 = 1075344706;
-pub const SONET_CLRDIAG: u32 = 3221512467;
-pub const PHN_SET_REG: u32 = 1074032641;
-pub const RNDADDTOENTCNT: u32 = 1074024961;
-pub const VBG_IOCTL_CHECK_BALLOON: u32 = 3223344657;
-pub const VIDIOC_OMAP3ISP_STAT_REQ: u32 = 3222820550;
-pub const PPS_FETCH: u32 = 3221516452;
-pub const RTC_AIE_OFF: u32 = 28674;
-pub const VFIO_GROUP_SET_CONTAINER: u32 = 15208;
-pub const FW_CDEV_IOC_RECEIVE_PHY_PACKETS: u32 = 1074275094;
-pub const VFIO_IOMMU_SPAPR_TCE_REMOVE: u32 = 15224;
-pub const VFIO_IOMMU_GET_INFO: u32 = 15216;
-pub const DM_DEV_SUSPEND: u32 = 3241737478;
-pub const F2FS_IOC_GET_COMPRESS_OPTION: u32 = 2147677461;
-pub const FW_CDEV_IOC_STOP_ISO: u32 = 1074012939;
-pub const GPIO_V2_GET_LINEINFO_IOCTL: u32 = 3238048773;
-pub const ATMMPC_CTRL: u32 = 25048;
-pub const PPPIOCSXASYNCMAP: u32 = 1075868751;
-pub const CHIOGSTATUS: u32 = 1074291464;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE: u32 = 3222807309;
-pub const RIO_MPORT_MAINT_PORT_IDX_GET: u32 = 2147773699;
-pub const CAPI_SET_FLAGS: u32 = 2147762980;
-pub const VFIO_GROUP_GET_DEVICE_FD: u32 = 15210;
-pub const VHOST_SET_MEM_TABLE: u32 = 1074310915;
-pub const MATROXFB_SET_OUTPUT_CONNECTION: u32 = 1074032376;
-pub const DFL_FPGA_PORT_GET_REGION_INFO: u32 = 46658;
-pub const VHOST_GET_FEATURES: u32 = 2148052736;
-pub const LIRC_GET_REC_RESOLUTION: u32 = 2147772679;
-pub const PACKET_CTRL_CMD: u32 = 3222820865;
-pub const LIRC_SET_TRANSMITTER_MASK: u32 = 1074030871;
-pub const BTRFS_IOC_ADD_DEV: u32 = 1342215178;
-pub const JSIOCGCORR: u32 = 2149870114;
-pub const VIDIOC_G_FMT: u32 = 3234616836;
-pub const RTC_EPOCH_SET: u32 = 1074032654;
-pub const CAPI_GET_PROFILE: u32 = 3225436937;
-pub const ATM_GETLOOP: u32 = 1074553170;
-pub const SCIF_LISTEN: u32 = 1074033410;
-pub const NBD_CLEAR_QUE: u32 = 43781;
-pub const F2FS_IOC_MOVE_RANGE: u32 = 3223123209;
-pub const LIRC_GET_LENGTH: u32 = 2147772687;
-pub const I8K_SET_FAN: u32 = 3221514631;
-pub const FDSETMAXERRS: u32 = 1075053132;
-pub const VIDIOC_SUBDEV_QUERYCAP: u32 = 2151699968;
-pub const SNAPSHOT_SET_SWAP_AREA: u32 = 1074541325;
-pub const LIRC_GET_REC_TIMEOUT: u32 = 2147772708;
-pub const EVIOCRMFF: u32 = 1074021761;
-pub const GPIO_GET_LINEEVENT_IOCTL: u32 = 3224417284;
-pub const PPRDATA: u32 = 2147577989;
-pub const RIO_MPORT_GET_PROPERTIES: u32 = 2150657284;
-pub const TUNSETVNETHDRSZ: u32 = 1074025688;
-pub const GPIO_GET_LINEINFO_IOCTL: u32 = 3225990146;
-pub const GSMIOC_GETCONF: u32 = 2152482560;
-pub const LIRC_GET_SEND_MODE: u32 = 2147772673;
-pub const PPPIOCSACTIVE: u32 = 1074295878;
-pub const SIOCGSTAMPNS_NEW: u32 = 2148567303;
-pub const IPMICTL_RECEIVE_MSG: u32 = 3222825228;
-pub const LIRC_SET_SEND_DUTY_CYCLE: u32 = 1074030869;
-pub const UI_END_FF_ERASE: u32 = 1074550219;
-pub const SWITCHTEC_IOCTL_FLASH_PART_INFO: u32 = 3222296385;
-pub const FW_CDEV_IOC_SEND_PHY_PACKET: u32 = 3222545173;
-pub const NBD_SET_FLAGS: u32 = 43786;
-pub const VFIO_DEVICE_GET_REGION_INFO: u32 = 15212;
-pub const REISERFS_IOC_UNPACK: u32 = 1074056449;
-pub const FW_CDEV_IOC_REMOVE_DESCRIPTOR: u32 = 1074012935;
-pub const RIO_SET_EVENT_MASK: u32 = 1074031885;
-pub const SNAPSHOT_ALLOC_SWAP_PAGE: u32 = 2148021012;
-pub const VDUSE_VQ_INJECT_IRQ: u32 = 1074037015;
-pub const I2OPASSTHRU: u32 = 2148034828;
-pub const IOC_OPAL_SET_PW: u32 = 1109422304;
-pub const FSI_SCOM_READ: u32 = 3223352065;
-pub const VHOST_VDPA_GET_DEVICE_ID: u32 = 2147790704;
-pub const VIDIOC_QBUF: u32 = 3225703951;
-pub const VIDIOC_S_TUNER: u32 = 1079268894;
-pub const TUNGETVNETHDRSZ: u32 = 2147767511;
-pub const CAPI_NCCI_GETUNIT: u32 = 2147762983;
-pub const DFL_FPGA_PORT_UINT_GET_IRQ_NUM: u32 = 2147792455;
-pub const VIDIOC_OMAP3ISP_STAT_EN: u32 = 3221509831;
-pub const GPIO_V2_LINE_SET_CONFIG_IOCTL: u32 = 3239097357;
-pub const TEE_IOC_VERSION: u32 = 2148312064;
-pub const VIDIOC_LOG_STATUS: u32 = 22086;
-pub const IPMICTL_SEND_COMMAND_SETTIME: u32 = 2149345557;
-pub const VHOST_SET_LOG_FD: u32 = 1074048775;
-pub const SCIF_SEND: u32 = 3222565638;
-pub const VIDIOC_SUBDEV_G_FMT: u32 = 3227014660;
-pub const NS_ADJBUFLEV: u32 = 24931;
-pub const VIDIOC_DBG_S_REGISTER: u32 = 1077433935;
-pub const NILFS_IOCTL_RESIZE: u32 = 1074294411;
-pub const PHN_GETREG: u32 = 3221778437;
-pub const I2OSWDL: u32 = 3223087365;
-pub const VBG_IOCTL_VMMDEV_REQUEST_BIG: u32 = 22019;
-pub const JSIOCGBUTTONS: u32 = 2147576338;
-pub const VFIO_IOMMU_ENABLE: u32 = 15219;
-pub const DM_DEV_RENAME: u32 = 3241737477;
-pub const MEDIA_IOC_SETUP_LINK: u32 = 3224665091;
-pub const VIDIOC_ENUMOUTPUT: u32 = 3225966128;
-pub const STP_POLICY_ID_SET: u32 = 3222283520;
-pub const VHOST_VDPA_SET_CONFIG_CALL: u32 = 1074048887;
-pub const VIDIOC_SUBDEV_G_CROP: u32 = 3224917563;
-pub const VIDIOC_S_CROP: u32 = 1075074620;
-pub const WDIOC_GETTEMP: u32 = 2147768067;
-pub const IOC_OPAL_ADD_USR_TO_LR: u32 = 1092120804;
-pub const UI_SET_LEDBIT: u32 = 1074025833;
-pub const NBD_SET_SOCK: u32 = 43776;
-pub const BTRFS_IOC_SNAP_DESTROY_V2: u32 = 1342215231;
-pub const HIDIOCGCOLLECTIONINFO: u32 = 3222292497;
-pub const I2OSWUL: u32 = 3223087366;
-pub const IOCTL_MEI_NOTIFY_GET: u32 = 2147764227;
-pub const FDFMTTRK: u32 = 1074528840;
-pub const MMTIMER_GETBITS: u32 = 27908;
-pub const VIDIOC_ENUMSTD: u32 = 3225441817;
-pub const VHOST_GET_VRING_BASE: u32 = 3221794578;
-pub const VFIO_DEVICE_IOEVENTFD: u32 = 15220;
-pub const ATMARP_SETENTRY: u32 = 25059;
-pub const CCISS_REVALIDVOLS: u32 = 16906;
-pub const MGSL_IOCLOOPTXDONE: u32 = 27913;
-pub const RTC_VL_READ: u32 = 2147774483;
-pub const ND_IOCTL_ARS_STATUS: u32 = 3224391171;
-pub const RIO_DEV_DEL: u32 = 1075866904;
-pub const VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES: u32 = 3223606797;
-pub const VIDIOC_SUBDEV_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const SONYPI_IOCSFAN: u32 = 1073837579;
-pub const SPIOCSTYPE: u32 = 1074032897;
-pub const IPMICTL_REGISTER_FOR_CMD: u32 = 2147641614;
-pub const I8K_GET_FAN: u32 = 3221514630;
-pub const TUNGETVNETBE: u32 = 2147767519;
-pub const AUTOFS_DEV_IOCTL_FAIL: u32 = 3222836087;
-pub const UI_END_FF_UPLOAD: u32 = 1080055241;
-pub const TOSH_SMM: u32 = 3222828176;
-pub const SONYPI_IOCGBAT2REM: u32 = 2147644933;
-pub const F2FS_IOC_GET_COMPRESS_BLOCKS: u32 = 2148070673;
-pub const PPPIOCSNPMODE: u32 = 1074295883;
-pub const USBDEVFS_CONTROL: u32 = 3222295808;
-pub const HIDIOCGUSAGE: u32 = 3222816779;
-pub const TUNSETTXFILTER: u32 = 1074025681;
-pub const TUNGETVNETLE: u32 = 2147767517;
-pub const VIDIOC_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const BTRFS_IOC_INO_PATHS: u32 = 3224933411;
-pub const MGSL_IOCGXSYNC: u32 = 27924;
-pub const HIDIOCGFIELDINFO: u32 = 3224913930;
-pub const VIDIOC_SUBDEV_G_STD: u32 = 2148029975;
-pub const I2OVALIDATE: u32 = 2147772680;
-pub const VIDIOC_TRY_ENCODER_CMD: u32 = 3223869006;
-pub const NILFS_IOCTL_GET_CPINFO: u32 = 2149084802;
-pub const VIDIOC_G_FREQUENCY: u32 = 3224131128;
-pub const VFAT_IOCTL_READDIR_SHORT: u32 = 2182640130;
-pub const ND_IOCTL_GET_CONFIG_DATA: u32 = 3222031877;
-pub const F2FS_IOC_RESERVE_COMPRESS_BLOCKS: u32 = 2148070675;
-pub const FDGETDRVSTAT: u32 = 2150892050;
-pub const SYNC_IOC_MERGE: u32 = 3224387075;
-pub const VIDIOC_S_DV_TIMINGS: u32 = 3229898327;
-pub const PPPIOCBRIDGECHAN: u32 = 1074033717;
-pub const LIRC_SET_SEND_MODE: u32 = 1074030865;
-pub const RIO_ENABLE_PORTWRITE_RANGE: u32 = 1074818315;
-pub const ATM_GETTYPE: u32 = 1074553220;
-pub const PHN_GETREGS: u32 = 3223875591;
-pub const FDSETEMSGTRESH: u32 = 586;
-pub const NILFS_IOCTL_GET_VINFO: u32 = 3222826630;
-pub const MGSL_IOCWAITEVENT: u32 = 3221515528;
-pub const CAPI_INSTALLED: u32 = 2147631906;
-pub const EVIOCGMASK: u32 = 2148550034;
-pub const BTRFS_IOC_SUBVOL_GETFLAGS: u32 = 2148045849;
-pub const FSL_HV_IOCTL_PARTITION_GET_STATUS: u32 = 3222056706;
-pub const MEDIA_IOC_ENUM_ENTITIES: u32 = 3238034433;
-pub const GSMIOC_GETFIRST: u32 = 2147763972;
-pub const FW_CDEV_IOC_FLUSH_ISO: u32 = 1074012952;
-pub const VIDIOC_DBG_G_CHIP_INFO: u32 = 3234354790;
-pub const F2FS_IOC_RELEASE_VOLATILE_WRITE: u32 = 62724;
-pub const CAPI_GET_SERIAL: u32 = 3221504776;
-pub const FDSETDRVPRM: u32 = 1079509648;
-pub const IOC_OPAL_SAVE: u32 = 1092120796;
-pub const VIDIOC_G_DV_TIMINGS: u32 = 3229898328;
-pub const TUNSETIFINDEX: u32 = 1074025690;
-pub const CCISS_SETINTINFO: u32 = 1074283011;
-pub const CM_IOSDBGLVL: u32 = 1074029562;
-pub const RTC_VL_CLR: u32 = 28692;
-pub const VIDIOC_REQBUFS: u32 = 3222558216;
-pub const USBDEVFS_REAPURBNDELAY32: u32 = 1074025741;
-pub const TEE_IOC_SHM_REGISTER: u32 = 3222840329;
-pub const USBDEVFS_SETCONFIGURATION: u32 = 2147767557;
-pub const CCISS_GETNODENAME: u32 = 2148549124;
-pub const VIDIOC_SUBDEV_S_FRAME_INTERVAL: u32 = 3224393238;
-pub const VIDIOC_ENUM_FRAMESIZES: u32 = 3224131146;
-pub const VFIO_DEVICE_PCI_HOT_RESET: u32 = 15217;
-pub const FW_CDEV_IOC_SEND_BROADCAST_REQUEST: u32 = 1076110098;
-pub const LPSETTIMEOUT_NEW: u32 = 1074791951;
-pub const RIO_CM_MPORT_GET_LIST: u32 = 3221512971;
-pub const FW_CDEV_IOC_QUEUE_ISO: u32 = 3222807305;
-pub const FDRAWCMD: u32 = 600;
-pub const SCIF_UNREG: u32 = 3222303497;
-pub const PPPIOCGIDLE64: u32 = 2148561983;
-pub const USBDEVFS_RELEASEINTERFACE: u32 = 2147767568;
-pub const VIDIOC_CROPCAP: u32 = 3224131130;
-pub const DFL_FPGA_PORT_GET_INFO: u32 = 46657;
-pub const PHN_SET_REGS: u32 = 1074032643;
-pub const ATMLEC_DATA: u32 = 25041;
-pub const PPPOEIOCDFWD: u32 = 45313;
-pub const VIDIOC_S_SELECTION: u32 = 3225441887;
-pub const SNAPSHOT_FREE_SWAP_PAGES: u32 = 13065;
-pub const BTRFS_IOC_LOGICAL_INO: u32 = 3224933412;
-pub const VIDIOC_S_CTRL: u32 = 3221771804;
-pub const ZATM_SETPOOL: u32 = 1074553187;
-pub const MTIOCPOS: u32 = 2147773699;
-pub const PMU_IOC_SLEEP: u32 = 16896;
-pub const AUTOFS_DEV_IOCTL_PROTOSUBVER: u32 = 3222836083;
-pub const VBG_IOCTL_CHANGE_FILTER_MASK: u32 = 3223344652;
-pub const NILFS_IOCTL_GET_SUSTAT: u32 = 2150657669;
-pub const VIDIOC_QUERYCAP: u32 = 2154321408;
-pub const HPET_INFO: u32 = 2148296707;
-pub const VIDIOC_AM437X_CCDC_CFG: u32 = 1074026177;
-pub const DM_LIST_DEVICES: u32 = 3241737474;
-pub const TUNSETOWNER: u32 = 1074025676;
-pub const VBG_IOCTL_CHANGE_GUEST_CAPABILITIES: u32 = 3223344654;
-pub const RNDADDENTROPY: u32 = 1074287107;
-pub const USBDEVFS_RESET: u32 = 21780;
-pub const BTRFS_IOC_SUBVOL_CREATE: u32 = 1342215182;
-pub const USBDEVFS_FORBID_SUSPEND: u32 = 21793;
-pub const FDGETDRVTYP: u32 = 2148532751;
-pub const PPWCONTROL: u32 = 1073836164;
-pub const VIDIOC_ENUM_FRAMEINTERVALS: u32 = 3224655435;
-pub const KCOV_DISABLE: u32 = 25445;
-pub const IOC_OPAL_ACTIVATE_LSP: u32 = 1092120799;
-pub const VHOST_VDPA_GET_IOVA_RANGE: u32 = 2148577144;
-pub const PPPIOCSPASS: u32 = 1074295879;
-pub const RIO_CM_CHAN_CONNECT: u32 = 1074291464;
-pub const I2OSWDEL: u32 = 3223087367;
-pub const FS_IOC_SET_ENCRYPTION_POLICY: u32 = 2148296211;
-pub const IOC_OPAL_MBR_DONE: u32 = 1091596521;
-pub const PPPIOCSMAXCID: u32 = 1074033745;
-pub const PPSETPHASE: u32 = 1074032788;
-pub const VHOST_VDPA_SET_VRING_ENABLE: u32 = 1074311029;
-pub const USBDEVFS_GET_SPEED: u32 = 21791;
-pub const SONET_GETFRAMING: u32 = 2147770646;
-pub const VIDIOC_QUERYBUF: u32 = 3225703945;
-pub const VIDIOC_S_EDID: u32 = 3223606825;
-pub const BTRFS_IOC_QGROUP_ASSIGN: u32 = 1075352617;
-pub const PPS_GETCAP: u32 = 2147774627;
-pub const SNAPSHOT_PLATFORM_SUPPORT: u32 = 13071;
-pub const LIRC_SET_REC_TIMEOUT_REPORTS: u32 = 1074030873;
-pub const SCIF_GET_NODEIDS: u32 = 3222565646;
-pub const NBD_DISCONNECT: u32 = 43784;
-pub const VIDIOC_SUBDEV_G_FRAME_INTERVAL: u32 = 3224393237;
-pub const VFIO_IOMMU_DISABLE: u32 = 15220;
-pub const SNAPSHOT_CREATE_IMAGE: u32 = 1074017041;
-pub const SNAPSHOT_POWER_OFF: u32 = 13072;
-pub const APM_IOC_STANDBY: u32 = 16641;
-pub const PPPIOCGUNIT: u32 = 2147775574;
-pub const AUTOFS_IOC_EXPIRE_MULTI: u32 = 1074041702;
-pub const SCIF_BIND: u32 = 3221779201;
-pub const IOC_WATCH_QUEUE_SET_SIZE: u32 = 22368;
-pub const NILFS_IOCTL_CHANGE_CPMODE: u32 = 1074818688;
-pub const IOC_OPAL_LOCK_UNLOCK: u32 = 1092120797;
-pub const F2FS_IOC_SET_PIN_FILE: u32 = 1074066701;
-pub const PPPIOCGRASYNCMAP: u32 = 2147775573;
-pub const MMTIMER_MMAPAVAIL: u32 = 27910;
-pub const I2OPASSTHRU32: u32 = 2148034828;
-pub const DFL_FPGA_FME_PORT_RELEASE: u32 = 1074050689;
-pub const VIDIOC_SUBDEV_QUERY_DV_TIMINGS: u32 = 2156156515;
-pub const UI_SET_SNDBIT: u32 = 1074025834;
-pub const VIDIOC_G_AUDOUT: u32 = 2150913585;
-pub const RTC_PLL_SET: u32 = 1075605522;
-pub const VIDIOC_ENUMAUDIO: u32 = 3224655425;
-pub const AUTOFS_DEV_IOCTL_TIMEOUT: u32 = 3222836090;
-pub const VBG_IOCTL_DRIVER_VERSION_INFO: u32 = 3224131072;
-pub const VHOST_SCSI_GET_EVENTS_MISSED: u32 = 1074048836;
-pub const VHOST_SET_VRING_ADDR: u32 = 1076408081;
-pub const VDUSE_CREATE_DEV: u32 = 1095794946;
-pub const FDFLUSH: u32 = 587;
-pub const VBG_IOCTL_WAIT_FOR_EVENTS: u32 = 3223344650;
-pub const DFL_FPGA_FME_ERR_SET_IRQ: u32 = 1074312836;
-pub const F2FS_IOC_GET_PIN_FILE: u32 = 2147808526;
-pub const SCIF_CONNECT: u32 = 3221779203;
-pub const BLKREPORTZONE: u32 = 3222278786;
-pub const AUTOFS_IOC_ASKUMOUNT: u32 = 2147783536;
-pub const ATM_ADDPARTY: u32 = 1074291188;
-pub const FDSETPRM: u32 = 1075577410;
-pub const ATM_GETSTATZ: u32 = 1074553169;
-pub const ISST_IF_MSR_COMMAND: u32 = 3221552644;
-pub const BTRFS_IOC_GET_SUBVOL_INFO: u32 = 2179503164;
-pub const VIDIOC_UNSUBSCRIBE_EVENT: u32 = 1075861083;
-pub const SEV_ISSUE_CMD: u32 = 3222295296;
-pub const GPIOHANDLE_SET_LINE_VALUES_IOCTL: u32 = 3225465865;
-pub const PCITEST_COPY: u32 = 1074024454;
-pub const IPMICTL_GET_MY_ADDRESS_CMD: u32 = 2147772690;
-pub const CHIOGPICKER: u32 = 2147771140;
-pub const CAPI_NCCI_OPENCOUNT: u32 = 2147762982;
-pub const CXL_MEM_SEND_COMMAND: u32 = 3224423938;
-pub const PERF_EVENT_IOC_SET_FILTER: u32 = 1074013190;
-pub const IOC_OPAL_REVERT_TPR: u32 = 1091072226;
-pub const CHIOGVPARAMS: u32 = 2154849043;
-pub const PTP_PEROUT_REQUEST: u32 = 1077427459;
-pub const FSI_SCOM_CHECK: u32 = 2147775232;
-pub const RTC_IRQP_READ: u32 = 2147774475;
-pub const RIO_MPORT_MAINT_READ_LOCAL: u32 = 2149084421;
-pub const HIDIOCGRDESCSIZE: u32 = 2147764225;
-pub const UI_GET_VERSION: u32 = 2147767597;
-pub const NILFS_IOCTL_GET_CPSTAT: u32 = 2149084803;
-pub const CCISS_GETBUSTYPES: u32 = 2147762695;
-pub const VFIO_IOMMU_SPAPR_TCE_CREATE: u32 = 15223;
-pub const VIDIOC_EXPBUF: u32 = 3225441808;
-pub const UI_SET_RELBIT: u32 = 1074025830;
-pub const VFIO_SET_IOMMU: u32 = 15206;
-pub const VIDIOC_S_MODULATOR: u32 = 1078220343;
-pub const TUNGETFILTER: u32 = 2148029659;
-pub const MEYEIOC_SYNC: u32 = 3221518019;
-pub const CCISS_SETNODENAME: u32 = 1074807301;
-pub const FBIO_GETCONTROL2: u32 = 2147763849;
-pub const TUNSETDEBUG: u32 = 1074025673;
-pub const DM_DEV_REMOVE: u32 = 3241737476;
-pub const HIDIOCSUSAGES: u32 = 1344030740;
-pub const FS_IOC_ADD_ENCRYPTION_KEY: u32 = 3226494487;
-pub const FBIOGET_VBLANK: u32 = 2149598738;
-pub const ATM_GETSTAT: u32 = 1074553168;
-pub const VIDIOC_G_JPEGCOMP: u32 = 2156680765;
-pub const TUNATTACHFILTER: u32 = 1074287829;
-pub const UI_SET_ABSBIT: u32 = 1074025831;
-pub const DFL_FPGA_PORT_ERR_GET_IRQ_NUM: u32 = 2147792453;
-pub const USBDEVFS_REAPURB32: u32 = 1074025740;
-pub const BTRFS_IOC_TRANS_END: u32 = 37895;
-pub const CAPI_REGISTER: u32 = 1074545409;
-pub const F2FS_IOC_COMPRESS_FILE: u32 = 62744;
-pub const USBDEVFS_DISCARDURB: u32 = 21771;
-pub const HE_GET_REG: u32 = 1074553184;
-pub const ATM_SETLOOP: u32 = 1074553171;
-pub const ATMSIGD_CTRL: u32 = 25072;
-pub const CIOC_KERNEL_VERSION: u32 = 3221512970;
-pub const BTRFS_IOC_CLONE_RANGE: u32 = 1075876877;
-pub const SNAPSHOT_UNFREEZE: u32 = 13058;
-pub const F2FS_IOC_START_VOLATILE_WRITE: u32 = 62723;
-pub const PMU_IOC_HAS_ADB: u32 = 2147762692;
-pub const I2OGETIOPS: u32 = 2149607680;
-pub const VIDIOC_S_FBUF: u32 = 1076647435;
-pub const PPRCONTROL: u32 = 2147577987;
-pub const CHIOSPICKER: u32 = 1074029317;
-pub const VFIO_IOMMU_SPAPR_REGISTER_MEMORY: u32 = 15221;
-pub const TUNGETSNDBUF: u32 = 2147767507;
-pub const GSMIOC_SETCONF: u32 = 1078740737;
-pub const IOC_PR_PREEMPT: u32 = 1075343563;
-pub const KCOV_INIT_TRACE: u32 = 2147771137;
-pub const SONYPI_IOCGBAT1CAP: u32 = 2147644930;
-pub const SWITCHTEC_IOCTL_FLASH_INFO: u32 = 2148554560;
-pub const MTIOCTOP: u32 = 1074294017;
-pub const VHOST_VDPA_SET_STATUS: u32 = 1073852274;
-pub const VHOST_SCSI_SET_EVENTS_MISSED: u32 = 1074048835;
-pub const VFIO_IOMMU_DIRTY_PAGES: u32 = 15221;
-pub const BTRFS_IOC_SCRUB_PROGRESS: u32 = 3288372253;
-pub const PPPIOCGMRU: u32 = 2147775571;
-pub const BTRFS_IOC_DEV_REPLACE: u32 = 3391394869;
-pub const PPPIOCGFLAGS: u32 = 2147775578;
-pub const NILFS_IOCTL_SET_SUINFO: u32 = 1075342989;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER2: u32 = 3222545172;
-pub const ATM_DELLECSADDR: u32 = 1074553231;
-pub const FW_CDEV_IOC_GET_SPEED: u32 = 8977;
-pub const PPPIOCGIDLE32: u32 = 2148037695;
-pub const VFIO_DEVICE_RESET: u32 = 15215;
-pub const GPIO_GET_LINEINFO_UNWATCH_IOCTL: u32 = 3221533708;
-pub const WDIOC_GETSTATUS: u32 = 2147768065;
-pub const BTRFS_IOC_SET_FEATURES: u32 = 1076925497;
-pub const IOCTL_MEI_CONNECT_CLIENT: u32 = 3222292481;
-pub const VIDIOC_OMAP3ISP_AEWB_CFG: u32 = 3223344835;
-pub const PCITEST_READ: u32 = 1074024453;
-pub const VFIO_GROUP_GET_STATUS: u32 = 15207;
-pub const MATROXFB_GET_ALL_OUTPUTS: u32 = 2147774203;
-pub const USBDEVFS_CLEAR_HALT: u32 = 2147767573;
-pub const VIDIOC_DECODER_CMD: u32 = 3225966176;
-pub const VIDIOC_G_AUDIO: u32 = 2150913569;
-pub const CCISS_RESCANDISK: u32 = 16912;
-pub const RIO_DISABLE_PORTWRITE_RANGE: u32 = 1074818316;
-pub const IOC_OPAL_SECURE_ERASE_LR: u32 = 1091596519;
-pub const USBDEVFS_REAPURB: u32 = 1074025740;
-pub const DFL_FPGA_CHECK_EXTENSION: u32 = 46593;
-pub const AUTOFS_IOC_PROTOVER: u32 = 2147783523;
-pub const FSL_HV_IOCTL_MEMCPY: u32 = 3223891717;
-pub const BTRFS_IOC_GET_FEATURES: u32 = 2149094457;
-pub const PCITEST_MSIX: u32 = 1074024455;
-pub const BTRFS_IOC_DEFRAG_RANGE: u32 = 1076925456;
-pub const UI_BEGIN_FF_ERASE: u32 = 3222033866;
-pub const DM_GET_TARGET_VERSION: u32 = 3241737489;
-pub const PPPIOCGIDLE: u32 = 2148037695;
-pub const NVRAM_SETCKS: u32 = 28737;
-pub const WDIOC_GETSUPPORT: u32 = 2150127360;
-pub const GSMIOC_ENABLE_NET: u32 = 1077167874;
-pub const GPIO_GET_CHIPINFO_IOCTL: u32 = 2151986177;
-pub const NE_ADD_VCPU: u32 = 3221532193;
-pub const EVIOCSKEYCODE_V2: u32 = 1076380932;
-pub const PTP_SYS_OFFSET_EXTENDED2: u32 = 3300932882;
-pub const SCIF_FENCE_WAIT: u32 = 3221517072;
-pub const RIO_TRANSFER: u32 = 3222826261;
-pub const FSL_HV_IOCTL_DOORBELL: u32 = 3221794566;
-pub const RIO_MPORT_MAINT_WRITE_LOCAL: u32 = 1075342598;
-pub const I2OEVTREG: u32 = 1074555146;
-pub const I2OPARMGET: u32 = 3222825220;
-pub const EVIOCGID: u32 = 2148025602;
-pub const BTRFS_IOC_QGROUP_CREATE: u32 = 1074828330;
-pub const AUTOFS_DEV_IOCTL_SETPIPEFD: u32 = 3222836088;
-pub const VIDIOC_S_PARM: u32 = 3234616854;
-pub const TUNSETSTEERINGEBPF: u32 = 2147767520;
-pub const ATM_GETNAMES: u32 = 1074291075;
-pub const VIDIOC_QUERYMENU: u32 = 3224131109;
-pub const DFL_FPGA_PORT_DMA_UNMAP: u32 = 46660;
-pub const I2OLCTGET: u32 = 3222038786;
-pub const FS_IOC_GET_ENCRYPTION_PWSALT: u32 = 1074816532;
-pub const NS_SETBUFLEV: u32 = 1074553186;
-pub const BLKCLOSEZONE: u32 = 1074795143;
-pub const SONET_GETFRSENSE: u32 = 2147901719;
-pub const UI_SET_EVBIT: u32 = 1074025828;
-pub const DM_LIST_VERSIONS: u32 = 3241737485;
-pub const HIDIOCGSTRING: u32 = 2164541444;
-pub const PPPIOCATTCHAN: u32 = 1074033720;
-pub const VDUSE_DEV_SET_CONFIG: u32 = 1074299154;
-pub const TUNGETFEATURES: u32 = 2147767503;
-pub const VFIO_GROUP_UNSET_CONTAINER: u32 = 15209;
-pub const IPMICTL_SET_MY_ADDRESS_CMD: u32 = 2147772689;
-pub const CCISS_REGNEWDISK: u32 = 1074020877;
-pub const VIDIOC_QUERY_DV_TIMINGS: u32 = 2156156515;
-pub const PHN_SETREGS: u32 = 1076391944;
-pub const FAT_IOCTL_GET_ATTRIBUTES: u32 = 2147774992;
-pub const FSL_MC_SEND_MC_COMMAND: u32 = 3225440992;
-pub const TUNGETIFF: u32 = 2147767506;
-pub const PTP_CLOCK_GETCAPS2: u32 = 2152742154;
-pub const BTRFS_IOC_RESIZE: u32 = 1342215171;
-pub const VHOST_SET_VRING_ENDIAN: u32 = 1074310931;
-pub const PPS_KC_BIND: u32 = 1074032805;
-pub const F2FS_IOC_WRITE_CHECKPOINT: u32 = 62727;
-pub const UI_SET_FFBIT: u32 = 1074025835;
-pub const IPMICTL_GET_MY_LUN_CMD: u32 = 2147772692;
-pub const CEC_ADAP_G_PHYS_ADDR: u32 = 2147639553;
-pub const CEC_G_MODE: u32 = 2147770632;
-pub const USBDEVFS_RESETEP: u32 = 2147767555;
-pub const MEDIA_REQUEST_IOC_QUEUE: u32 = 31872;
-pub const USBDEVFS_ALLOC_STREAMS: u32 = 2148029724;
-pub const MGSL_IOCSXCTRL: u32 = 27925;
-pub const MEDIA_IOC_G_TOPOLOGY: u32 = 3225975812;
-pub const PPPIOCUNBRIDGECHAN: u32 = 29748;
-pub const F2FS_IOC_COMMIT_ATOMIC_WRITE: u32 = 62722;
-pub const ISST_IF_GET_PLATFORM_INFO: u32 = 2147810816;
-pub const SCIF_FENCE_MARK: u32 = 3222041359;
-pub const USBDEVFS_RELEASE_PORT: u32 = 2147767577;
-pub const VFIO_CHECK_EXTENSION: u32 = 15205;
-pub const BTRFS_IOC_QGROUP_LIMIT: u32 = 2150667307;
-pub const FAT_IOCTL_GET_VOLUME_ID: u32 = 2147774995;
-pub const UI_SET_PHYS: u32 = 1074025836;
-pub const FDWERRORGET: u32 = 2149057047;
-pub const VIDIOC_SUBDEV_G_EDID: u32 = 3223606824;
-pub const MGSL_IOCGSTATS: u32 = 27911;
-pub const RPROC_SET_SHUTDOWN_ON_RELEASE: u32 = 1074050817;
-pub const SIOCGSTAMP_NEW: u32 = 2148567302;
-pub const RTC_WKALM_RD: u32 = 2150133776;
-pub const PHN_GET_REG: u32 = 3221516288;
-pub const DELL_WMI_SMBIOS_CMD: u32 = 3224655616;
-pub const PHN_NOT_OH: u32 = 28676;
-pub const PPGETMODES: u32 = 2147774615;
-pub const CHIOGPARAMS: u32 = 2148819718;
-pub const VFIO_DEVICE_GET_GFX_DMABUF: u32 = 15219;
-pub const VHOST_SET_VRING_BUSYLOOP_TIMEOUT: u32 = 1074310947;
-pub const VIDIOC_SUBDEV_G_SELECTION: u32 = 3225441853;
-pub const BTRFS_IOC_RM_DEV_V2: u32 = 1342215226;
-pub const MGSL_IOCWAITGPIO: u32 = 3222301970;
-pub const PMU_IOC_CAN_SLEEP: u32 = 2147762693;
-pub const KCOV_ENABLE: u32 = 25444;
-pub const BTRFS_IOC_CLONE: u32 = 1074041865;
-pub const F2FS_IOC_DEFRAGMENT: u32 = 3222336776;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE: u32 = 1074012942;
-pub const AGPIOC_ALLOCATE: u32 = 3221504262;
-pub const NE_SET_USER_MEMORY_REGION: u32 = 1075359267;
-pub const MGSL_IOCTXABORT: u32 = 27910;
-pub const MGSL_IOCSGPIO: u32 = 1074818320;
-pub const LIRC_SET_REC_CARRIER: u32 = 1074030868;
-pub const F2FS_IOC_FLUSH_DEVICE: u32 = 1074328842;
-pub const SNAPSHOT_ATOMIC_RESTORE: u32 = 13060;
-pub const RTC_UIE_OFF: u32 = 28676;
-pub const BT_BMC_IOCTL_SMS_ATN: u32 = 45312;
-pub const NVME_IOCTL_ID: u32 = 20032;
-pub const NE_START_ENCLAVE: u32 = 3222318628;
-pub const VIDIOC_STREAMON: u32 = 1074026002;
-pub const FDPOLLDRVSTAT: u32 = 2150892051;
-pub const AUTOFS_DEV_IOCTL_READY: u32 = 3222836086;
-pub const VIDIOC_ENUMAUDOUT: u32 = 3224655426;
-pub const VIDIOC_SUBDEV_S_STD: u32 = 1074288152;
-pub const WDIOC_GETTIMELEFT: u32 = 2147768074;
-pub const ATM_GETLINKRATE: u32 = 1074553217;
-pub const RTC_WKALM_SET: u32 = 1076391951;
-pub const VHOST_GET_BACKEND_FEATURES: u32 = 2148052774;
-pub const ATMARP_ENCAP: u32 = 25061;
-pub const CAPI_GET_FLAGS: u32 = 2147762979;
-pub const IPMICTL_SET_MY_CHANNEL_ADDRESS_CMD: u32 = 2147772696;
-pub const DFL_FPGA_FME_PORT_ASSIGN: u32 = 1074050690;
-pub const NS_GET_OWNER_UID: u32 = 46852;
-pub const VIDIOC_OVERLAY: u32 = 1074025998;
-pub const BTRFS_IOC_WAIT_SYNC: u32 = 1074304022;
-pub const GPIOHANDLE_SET_CONFIG_IOCTL: u32 = 3226776586;
-pub const VHOST_GET_VRING_ENDIAN: u32 = 1074310932;
-pub const ATM_GETADDR: u32 = 1074553222;
-pub const PHN_GET_REGS: u32 = 3221516290;
-pub const AUTOFS_DEV_IOCTL_REQUESTER: u32 = 3222836091;
-pub const AUTOFS_DEV_IOCTL_EXPIRE: u32 = 3222836092;
-pub const SNAPSHOT_S2RAM: u32 = 13067;
-pub const JSIOCSAXMAP: u32 = 1077963313;
-pub const F2FS_IOC_SET_COMPRESS_OPTION: u32 = 1073935638;
-pub const VBG_IOCTL_HGCM_DISCONNECT: u32 = 3223082501;
-pub const SCIF_FENCE_SIGNAL: u32 = 3223614225;
-pub const VFIO_DEVICE_GET_PCI_HOT_RESET_INFO: u32 = 15216;
-pub const VIDIOC_SUBDEV_ENUM_MBUS_CODE: u32 = 3224393218;
-pub const MMTIMER_GETOFFSET: u32 = 27904;
-pub const RIO_CM_CHAN_LISTEN: u32 = 1073898246;
-pub const ATM_SETSC: u32 = 1074029041;
-pub const F2FS_IOC_SHUTDOWN: u32 = 2147768445;
-pub const NVME_IOCTL_RESCAN: u32 = 20038;
-pub const BLKOPENZONE: u32 = 1074795142;
-pub const DM_VERSION: u32 = 3241737472;
-pub const CEC_TRANSMIT: u32 = 3224920325;
-pub const FS_IOC_GET_ENCRYPTION_POLICY_EX: u32 = 3221841430;
-pub const SIOCMKCLIP: u32 = 25056;
-pub const IPMI_BMC_IOCTL_CLEAR_SMS_ATN: u32 = 45313;
-pub const HIDIOCGVERSION: u32 = 2147764225;
-pub const VIDIOC_S_INPUT: u32 = 3221509671;
-pub const VIDIOC_G_CROP: u32 = 3222558267;
-pub const LIRC_SET_WIDEBAND_RECEIVER: u32 = 1074030883;
-pub const EVIOCGEFFECTS: u32 = 2147763588;
-pub const UVCIOC_CTRL_QUERY: u32 = 3222041889;
-pub const IOC_OPAL_GENERIC_TABLE_RW: u32 = 1094217963;
-pub const FS_IOC_READ_VERITY_METADATA: u32 = 3223873159;
-pub const ND_IOCTL_SET_CONFIG_DATA: u32 = 3221769734;
-pub const USBDEVFS_GETDRIVER: u32 = 1090802952;
-pub const IDT77105_GETSTAT: u32 = 1074553138;
-pub const HIDIOCINITREPORT: u32 = 18437;
-pub const VFIO_DEVICE_GET_INFO: u32 = 15211;
-pub const RIO_CM_CHAN_RECEIVE: u32 = 3222299402;
-pub const RNDGETENTCNT: u32 = 2147766784;
-pub const PPPIOCNEWUNIT: u32 = 3221517374;
-pub const BTRFS_IOC_INO_LOOKUP: u32 = 3489698834;
-pub const FDRESET: u32 = 596;
-pub const IOC_PR_REGISTER: u32 = 1075343560;
-pub const HIDIOCSREPORT: u32 = 1074546696;
-pub const TEE_IOC_OPEN_SESSION: u32 = 2148574210;
-pub const TEE_IOC_SUPPL_RECV: u32 = 2148574214;
-pub const BTRFS_IOC_BALANCE_CTL: u32 = 1074041889;
-pub const GPIO_GET_LINEINFO_WATCH_IOCTL: u32 = 3225990155;
-pub const HIDIOCGRAWINFO: u32 = 2148026371;
-pub const PPPIOCSCOMPRESS: u32 = 1074558029;
-pub const USBDEVFS_CONNECTINFO: u32 = 1074287889;
-pub const BLKRESETZONE: u32 = 1074795139;
-pub const CHIOINITELEM: u32 = 25361;
-pub const NILFS_IOCTL_SET_ALLOC_RANGE: u32 = 1074818700;
-pub const AUTOFS_DEV_IOCTL_CATATONIC: u32 = 3222836089;
-pub const RIO_MPORT_MAINT_HDID_SET: u32 = 1073900801;
-pub const PPGETPHASE: u32 = 2147774617;
-pub const USBDEVFS_DISCONNECT_CLAIM: u32 = 2164806939;
-pub const FDMSGON: u32 = 581;
-pub const VIDIOC_G_SLICED_VBI_CAP: u32 = 3228849733;
-pub const BTRFS_IOC_BALANCE_V2: u32 = 3288372256;
-pub const MEDIA_REQUEST_IOC_REINIT: u32 = 31873;
-pub const IOC_OPAL_ERASE_LR: u32 = 1091596518;
-pub const FDFMTBEG: u32 = 583;
-pub const RNDRESEEDCRNG: u32 = 20999;
-pub const ISST_IF_GET_PHY_ID: u32 = 3221552641;
-pub const TUNSETNOCSUM: u32 = 1074025672;
-pub const SONET_GETSTAT: u32 = 2149867792;
-pub const TFD_IOC_SET_TICKS: u32 = 1074287616;
-pub const PPDATADIR: u32 = 1074032784;
-pub const IOC_OPAL_ENABLE_DISABLE_MBR: u32 = 1091596517;
-pub const GPIO_V2_GET_LINE_IOCTL: u32 = 3260068871;
-pub const RIO_CM_CHAN_SEND: u32 = 1074815753;
-pub const PPWCTLONIRQ: u32 = 1073836178;
-pub const SONYPI_IOCGBRT: u32 = 2147579392;
-pub const IOC_PR_RELEASE: u32 = 1074819274;
-pub const PPCLRIRQ: u32 = 2147774611;
-pub const IPMICTL_SET_MY_CHANNEL_LUN_CMD: u32 = 2147772698;
-pub const MGSL_IOCSXSYNC: u32 = 27923;
-pub const HPET_IE_OFF: u32 = 26626;
-pub const IOC_OPAL_ACTIVATE_USR: u32 = 1091596513;
-pub const SONET_SETFRAMING: u32 = 1074028821;
-pub const PERF_EVENT_IOC_PAUSE_OUTPUT: u32 = 1074013193;
-pub const BTRFS_IOC_LOGICAL_INO_V2: u32 = 3224933435;
-pub const VBG_IOCTL_HGCM_CONNECT: u32 = 3231471108;
-pub const BLKFINISHZONE: u32 = 1074795144;
-pub const EVIOCREVOKE: u32 = 1074021777;
-pub const VFIO_DEVICE_FEATURE: u32 = 15221;
-pub const CCISS_GETPCIINFO: u32 = 2148024833;
-pub const ISST_IF_MBOX_COMMAND: u32 = 3221552643;
-pub const SCIF_ACCEPTREQ: u32 = 3222303492;
-pub const PERF_EVENT_IOC_QUERY_BPF: u32 = 3221496842;
-pub const VIDIOC_STREAMOFF: u32 = 1074026003;
-pub const VDUSE_DESTROY_DEV: u32 = 1090552067;
-pub const FDGETFDCSTAT: u32 = 2149581333;
-pub const CM_IOCGATR: u32 = 3221512961;
-pub const VIDIOC_S_PRIORITY: u32 = 1074026052;
-pub const SNAPSHOT_FREEZE: u32 = 13057;
-pub const VIDIOC_ENUMINPUT: u32 = 3226228250;
-pub const ZATM_GETPOOLZ: u32 = 1074553186;
-pub const RIO_DISABLE_DOORBELL_RANGE: u32 = 1074294026;
-pub const GPIO_V2_GET_LINEINFO_WATCH_IOCTL: u32 = 3238048774;
-pub const VIDIOC_G_STD: u32 = 2148029975;
-pub const USBDEVFS_ALLOW_SUSPEND: u32 = 21794;
-pub const SONET_GETSTATZ: u32 = 2149867793;
-pub const SCIF_ACCEPTREG: u32 = 3221779205;
-pub const VIDIOC_ENCODER_CMD: u32 = 3223869005;
-pub const PPPIOCSRASYNCMAP: u32 = 1074033748;
-pub const IOCTL_MEI_NOTIFY_SET: u32 = 1074022402;
-pub const BTRFS_IOC_QUOTA_RESCAN_STATUS: u32 = 2151715885;
-pub const F2FS_IOC_GARBAGE_COLLECT: u32 = 1074066694;
-pub const ATMLEC_CTRL: u32 = 25040;
-pub const MATROXFB_GET_AVAILABLE_OUTPUTS: u32 = 2147774201;
-pub const DM_DEV_CREATE: u32 = 3241737475;
-pub const VHOST_VDPA_GET_VRING_NUM: u32 = 2147659638;
-pub const VIDIOC_G_CTRL: u32 = 3221771803;
-pub const NBD_CLEAR_SOCK: u32 = 43780;
-pub const VFIO_DEVICE_QUERY_GFX_PLANE: u32 = 15218;
-pub const WDIOC_KEEPALIVE: u32 = 2147768069;
-pub const NVME_IOCTL_SUBSYS_RESET: u32 = 20037;
-pub const PTP_EXTTS_REQUEST2: u32 = 1074806027;
-pub const PCITEST_BAR: u32 = 20481;
-pub const MGSL_IOCGGPIO: u32 = 2148560145;
-pub const EVIOCSREP: u32 = 1074283779;
-pub const VFIO_DEVICE_GET_IRQ_INFO: u32 = 15213;
-pub const HPET_DPI: u32 = 26629;
-pub const VDUSE_VQ_SETUP_KICKFD: u32 = 1074299158;
-pub const ND_IOCTL_CALL: u32 = 3225439754;
-pub const HIDIOCGDEVINFO: u32 = 2149337091;
-pub const DM_TABLE_DEPS: u32 = 3241737483;
-pub const BTRFS_IOC_DEV_INFO: u32 = 3489698846;
-pub const VDUSE_IOTLB_GET_FD: u32 = 3223093520;
-pub const FW_CDEV_IOC_GET_INFO: u32 = 3223593728;
-pub const VIDIOC_G_PRIORITY: u32 = 2147767875;
-pub const ATM_NEWBACKENDIF: u32 = 1073897971;
-pub const VIDIOC_S_EXT_CTRLS: u32 = 3222820424;
-pub const VIDIOC_SUBDEV_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const VIDIOC_OMAP3ISP_CCDC_CFG: u32 = 3223344833;
-pub const VIDIOC_S_HW_FREQ_SEEK: u32 = 1076909650;
-pub const DM_TABLE_LOAD: u32 = 3241737481;
-pub const F2FS_IOC_START_ATOMIC_WRITE: u32 = 62721;
-pub const VIDIOC_G_OUTPUT: u32 = 2147767854;
-pub const ATM_DROPPARTY: u32 = 1074029045;
-pub const CHIOGELEM: u32 = 1080845072;
-pub const BTRFS_IOC_GET_SUPPORTED_FEATURES: u32 = 2152240185;
-pub const EVIOCSKEYCODE: u32 = 1074283780;
-pub const NE_GET_IMAGE_LOAD_INFO: u32 = 3222318626;
-pub const TUNSETLINK: u32 = 1074025677;
-pub const FW_CDEV_IOC_ADD_DESCRIPTOR: u32 = 3222807302;
-pub const BTRFS_IOC_SCRUB_CANCEL: u32 = 37916;
-pub const PPS_SETPARAMS: u32 = 1074032802;
-pub const IOC_OPAL_LR_SETUP: u32 = 1093169379;
-pub const FW_CDEV_IOC_DEALLOCATE: u32 = 1074012931;
-pub const WDIOC_SETTIMEOUT: u32 = 3221509894;
-pub const IOC_WATCH_QUEUE_SET_FILTER: u32 = 22369;
-pub const CAPI_GET_MANUFACTURER: u32 = 3221504774;
-pub const VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY: u32 = 15222;
-pub const ASPEED_P2A_CTRL_IOCTL_SET_WINDOW: u32 = 1074836224;
-pub const VIDIOC_G_EDID: u32 = 3223606824;
-pub const F2FS_IOC_GARBAGE_COLLECT_RANGE: u32 = 1075115275;
-pub const RIO_MAP_INBOUND: u32 = 3223874833;
-pub const IOC_OPAL_TAKE_OWNERSHIP: u32 = 1091072222;
-pub const USBDEVFS_CLAIM_PORT: u32 = 2147767576;
-pub const VIDIOC_S_AUDIO: u32 = 1077171746;
-pub const FS_IOC_GET_ENCRYPTION_NONCE: u32 = 2148558363;
-pub const FW_CDEV_IOC_SEND_STREAM_PACKET: u32 = 1076372243;
-pub const BTRFS_IOC_SNAP_DESTROY: u32 = 1342215183;
-pub const SNAPSHOT_FREE: u32 = 13061;
-pub const I8K_GET_SPEED: u32 = 3221514629;
-pub const HIDIOCGREPORT: u32 = 1074546695;
-pub const HPET_EPI: u32 = 26628;
-pub const JSIOCSCORR: u32 = 1076128289;
-pub const IOC_PR_PREEMPT_ABORT: u32 = 1075343564;
-pub const RIO_MAP_OUTBOUND: u32 = 3223874831;
-pub const ATM_SETESI: u32 = 1074553228;
-pub const FW_CDEV_IOC_START_ISO: u32 = 1074799370;
-pub const ATM_DELADDR: u32 = 1074553225;
-pub const PPFCONTROL: u32 = 1073901710;
-pub const SONYPI_IOCGFAN: u32 = 2147579402;
-pub const RTC_IRQP_SET: u32 = 1074032652;
-pub const PCITEST_WRITE: u32 = 1074024452;
-pub const PPCLAIM: u32 = 28811;
-pub const VIDIOC_S_JPEGCOMP: u32 = 1082938942;
-pub const IPMICTL_UNREGISTER_FOR_CMD: u32 = 2147641615;
-pub const VHOST_SET_FEATURES: u32 = 1074310912;
-pub const TOSHIBA_ACPI_SCI: u32 = 3222828177;
-pub const VIDIOC_DQBUF: u32 = 3225703953;
-pub const BTRFS_IOC_BALANCE_PROGRESS: u32 = 2214630434;
-pub const BTRFS_IOC_SUBVOL_SETFLAGS: u32 = 1074304026;
-pub const ATMLEC_MCAST: u32 = 25042;
-pub const MMTIMER_GETFREQ: u32 = 2147773698;
-pub const VIDIOC_G_SELECTION: u32 = 3225441886;
-pub const RTC_ALM_SET: u32 = 1076129799;
-pub const PPPOEIOCSFWD: u32 = 1074049280;
-pub const IPMICTL_GET_MAINTENANCE_MODE_CMD: u32 = 2147772702;
-pub const FS_IOC_ENABLE_VERITY: u32 = 1082156677;
-pub const NILFS_IOCTL_GET_BDESCS: u32 = 3222826631;
-pub const FDFMTEND: u32 = 585;
-pub const DMA_BUF_SET_NAME: u32 = 1074029057;
-pub const UI_BEGIN_FF_UPLOAD: u32 = 3227538888;
-pub const RTC_UIE_ON: u32 = 28675;
-pub const PPRELEASE: u32 = 28812;
-pub const VFIO_IOMMU_UNMAP_DMA: u32 = 15218;
-pub const VIDIOC_OMAP3ISP_PRV_CFG: u32 = 3225179842;
-pub const GPIO_GET_LINEHANDLE_IOCTL: u32 = 3245126659;
-pub const VFAT_IOCTL_READDIR_BOTH: u32 = 2182640129;
-pub const NVME_IOCTL_ADMIN_CMD: u32 = 3225964097;
-pub const VHOST_SET_VRING_KICK: u32 = 1074310944;
-pub const BTRFS_IOC_SUBVOL_CREATE_V2: u32 = 1342215192;
-pub const BTRFS_IOC_SNAP_CREATE: u32 = 1342215169;
-pub const SONYPI_IOCGBAT2CAP: u32 = 2147644932;
-pub const PPNEGOT: u32 = 1074032785;
-pub const NBD_PRINT_DEBUG: u32 = 43782;
-pub const BTRFS_IOC_INO_LOOKUP_USER: u32 = 3489698878;
-pub const BTRFS_IOC_GET_SUBVOL_ROOTREF: u32 = 3489698877;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS: u32 = 3225445913;
-pub const BTRFS_IOC_FS_INFO: u32 = 2214630431;
-pub const VIDIOC_ENUM_FMT: u32 = 3225441794;
-pub const VIDIOC_G_INPUT: u32 = 2147767846;
-pub const VTPM_PROXY_IOC_NEW_DEV: u32 = 3222577408;
-pub const DFL_FPGA_FME_ERR_GET_IRQ_NUM: u32 = 2147792515;
-pub const ND_IOCTL_DIMM_FLAGS: u32 = 3221769731;
-pub const BTRFS_IOC_QUOTA_RESCAN: u32 = 1077974060;
-pub const MMTIMER_GETCOUNTER: u32 = 2147773705;
-pub const MATROXFB_GET_OUTPUT_MODE: u32 = 3221516026;
-pub const BTRFS_IOC_QUOTA_RESCAN_WAIT: u32 = 37934;
-pub const RIO_CM_CHAN_BIND: u32 = 1074291461;
-pub const HIDIOCGRDESC: u32 = 2416199682;
-pub const MGSL_IOCGIF: u32 = 27915;
-pub const VIDIOC_S_OUTPUT: u32 = 3221509679;
-pub const HIDIOCGREPORTINFO: u32 = 3222030345;
-pub const WDIOC_GETBOOTSTATUS: u32 = 2147768066;
-pub const VDUSE_VQ_GET_INFO: u32 = 3224142101;
-pub const ACRN_IOCTL_ASSIGN_PCIDEV: u32 = 1076142677;
-pub const BLKGETDISKSEQ: u32 = 2148012672;
-pub const ACRN_IOCTL_PM_GET_CPU_STATE: u32 = 3221791328;
-pub const ACRN_IOCTL_DESTROY_VM: u32 = 41489;
-pub const ACRN_IOCTL_SET_PTDEV_INTR: u32 = 1075094099;
-pub const ACRN_IOCTL_CREATE_IOREQ_CLIENT: u32 = 41522;
-pub const ACRN_IOCTL_IRQFD: u32 = 1075356273;
-pub const ACRN_IOCTL_CREATE_VM: u32 = 3224412688;
-pub const ACRN_IOCTL_INJECT_MSI: u32 = 1074831907;
-pub const ACRN_IOCTL_ATTACH_IOREQ_CLIENT: u32 = 41523;
-pub const ACRN_IOCTL_RESET_PTDEV_INTR: u32 = 1075094100;
-pub const ACRN_IOCTL_NOTIFY_REQUEST_FINISH: u32 = 1074307633;
-pub const ACRN_IOCTL_SET_IRQLINE: u32 = 1074307621;
-pub const ACRN_IOCTL_START_VM: u32 = 41490;
-pub const ACRN_IOCTL_SET_VCPU_REGS: u32 = 1092919830;
-pub const ACRN_IOCTL_SET_MEMSEG: u32 = 1075880513;
-pub const ACRN_IOCTL_PAUSE_VM: u32 = 41491;
-pub const ACRN_IOCTL_CLEAR_VM_IOREQ: u32 = 41525;
-pub const ACRN_IOCTL_UNSET_MEMSEG: u32 = 1075880514;
-pub const ACRN_IOCTL_IOEVENTFD: u32 = 1075880560;
-pub const ACRN_IOCTL_DEASSIGN_PCIDEV: u32 = 1076142678;
-pub const ACRN_IOCTL_RESET_VM: u32 = 41493;
-pub const ACRN_IOCTL_DESTROY_IOREQ_CLIENT: u32 = 41524;
-pub const ACRN_IOCTL_VM_INTR_MONITOR: u32 = 1074045476;
diff --git a/vendor/linux-raw-sys-0.3.2/src/x86/netlink.rs b/vendor/linux-raw-sys-0.3.2/src/x86/netlink.rs
deleted file mode 100644
index 019805303..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/x86/netlink.rs
+++ /dev/null
@@ -1,2861 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const __BITS_PER_LONG: u32 = 32;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const NETLINK_ROUTE: u32 = 0;
-pub const NETLINK_UNUSED: u32 = 1;
-pub const NETLINK_USERSOCK: u32 = 2;
-pub const NETLINK_FIREWALL: u32 = 3;
-pub const NETLINK_SOCK_DIAG: u32 = 4;
-pub const NETLINK_NFLOG: u32 = 5;
-pub const NETLINK_XFRM: u32 = 6;
-pub const NETLINK_SELINUX: u32 = 7;
-pub const NETLINK_ISCSI: u32 = 8;
-pub const NETLINK_AUDIT: u32 = 9;
-pub const NETLINK_FIB_LOOKUP: u32 = 10;
-pub const NETLINK_CONNECTOR: u32 = 11;
-pub const NETLINK_NETFILTER: u32 = 12;
-pub const NETLINK_IP6_FW: u32 = 13;
-pub const NETLINK_DNRTMSG: u32 = 14;
-pub const NETLINK_KOBJECT_UEVENT: u32 = 15;
-pub const NETLINK_GENERIC: u32 = 16;
-pub const NETLINK_SCSITRANSPORT: u32 = 18;
-pub const NETLINK_ECRYPTFS: u32 = 19;
-pub const NETLINK_RDMA: u32 = 20;
-pub const NETLINK_CRYPTO: u32 = 21;
-pub const NETLINK_SMC: u32 = 22;
-pub const NETLINK_INET_DIAG: u32 = 4;
-pub const MAX_LINKS: u32 = 32;
-pub const NLM_F_REQUEST: u32 = 1;
-pub const NLM_F_MULTI: u32 = 2;
-pub const NLM_F_ACK: u32 = 4;
-pub const NLM_F_ECHO: u32 = 8;
-pub const NLM_F_DUMP_INTR: u32 = 16;
-pub const NLM_F_DUMP_FILTERED: u32 = 32;
-pub const NLM_F_ROOT: u32 = 256;
-pub const NLM_F_MATCH: u32 = 512;
-pub const NLM_F_ATOMIC: u32 = 1024;
-pub const NLM_F_DUMP: u32 = 768;
-pub const NLM_F_REPLACE: u32 = 256;
-pub const NLM_F_EXCL: u32 = 512;
-pub const NLM_F_CREATE: u32 = 1024;
-pub const NLM_F_APPEND: u32 = 2048;
-pub const NLM_F_NONREC: u32 = 256;
-pub const NLM_F_BULK: u32 = 512;
-pub const NLM_F_CAPPED: u32 = 256;
-pub const NLM_F_ACK_TLVS: u32 = 512;
-pub const NLMSG_ALIGNTO: u32 = 4;
-pub const NLMSG_NOOP: u32 = 1;
-pub const NLMSG_ERROR: u32 = 2;
-pub const NLMSG_DONE: u32 = 3;
-pub const NLMSG_OVERRUN: u32 = 4;
-pub const NLMSG_MIN_TYPE: u32 = 16;
-pub const NETLINK_ADD_MEMBERSHIP: u32 = 1;
-pub const NETLINK_DROP_MEMBERSHIP: u32 = 2;
-pub const NETLINK_PKTINFO: u32 = 3;
-pub const NETLINK_BROADCAST_ERROR: u32 = 4;
-pub const NETLINK_NO_ENOBUFS: u32 = 5;
-pub const NETLINK_RX_RING: u32 = 6;
-pub const NETLINK_TX_RING: u32 = 7;
-pub const NETLINK_LISTEN_ALL_NSID: u32 = 8;
-pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9;
-pub const NETLINK_CAP_ACK: u32 = 10;
-pub const NETLINK_EXT_ACK: u32 = 11;
-pub const NETLINK_GET_STRICT_CHK: u32 = 12;
-pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4;
-pub const NET_MAJOR: u32 = 36;
-pub const NLA_F_NESTED: u32 = 32768;
-pub const NLA_F_NET_BYTEORDER: u32 = 16384;
-pub const NLA_TYPE_MASK: i32 = -49153;
-pub const NLA_ALIGNTO: u32 = 4;
-pub const MACVLAN_FLAG_NOPROMISC: u32 = 1;
-pub const MACVLAN_FLAG_NODST: u32 = 2;
-pub const IPVLAN_F_PRIVATE: u32 = 1;
-pub const IPVLAN_F_VEPA: u32 = 2;
-pub const TUNNEL_MSG_FLAG_STATS: u32 = 1;
-pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1;
-pub const MAX_VLAN_LIST_LEN: u32 = 1;
-pub const PORT_PROFILE_MAX: u32 = 40;
-pub const PORT_UUID_MAX: u32 = 16;
-pub const PORT_SELF_VF: i32 = -1;
-pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1;
-pub const XDP_FLAGS_SKB_MODE: u32 = 2;
-pub const XDP_FLAGS_DRV_MODE: u32 = 4;
-pub const XDP_FLAGS_HW_MODE: u32 = 8;
-pub const XDP_FLAGS_REPLACE: u32 = 16;
-pub const XDP_FLAGS_MODES: u32 = 14;
-pub const XDP_FLAGS_MASK: u32 = 31;
-pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1;
-pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32;
-pub const IFA_F_SECONDARY: u32 = 1;
-pub const IFA_F_TEMPORARY: u32 = 1;
-pub const IFA_F_NODAD: u32 = 2;
-pub const IFA_F_OPTIMISTIC: u32 = 4;
-pub const IFA_F_DADFAILED: u32 = 8;
-pub const IFA_F_HOMEADDRESS: u32 = 16;
-pub const IFA_F_DEPRECATED: u32 = 32;
-pub const IFA_F_TENTATIVE: u32 = 64;
-pub const IFA_F_PERMANENT: u32 = 128;
-pub const IFA_F_MANAGETEMPADDR: u32 = 256;
-pub const IFA_F_NOPREFIXROUTE: u32 = 512;
-pub const IFA_F_MCAUTOJOIN: u32 = 1024;
-pub const IFA_F_STABLE_PRIVACY: u32 = 2048;
-pub const IFAPROT_UNSPEC: u32 = 0;
-pub const IFAPROT_KERNEL_LO: u32 = 1;
-pub const IFAPROT_KERNEL_RA: u32 = 2;
-pub const IFAPROT_KERNEL_LL: u32 = 3;
-pub const NTF_USE: u32 = 1;
-pub const NTF_SELF: u32 = 2;
-pub const NTF_MASTER: u32 = 4;
-pub const NTF_PROXY: u32 = 8;
-pub const NTF_EXT_LEARNED: u32 = 16;
-pub const NTF_OFFLOADED: u32 = 32;
-pub const NTF_STICKY: u32 = 64;
-pub const NTF_ROUTER: u32 = 128;
-pub const NTF_EXT_MANAGED: u32 = 1;
-pub const NTF_EXT_LOCKED: u32 = 2;
-pub const NUD_INCOMPLETE: u32 = 1;
-pub const NUD_REACHABLE: u32 = 2;
-pub const NUD_STALE: u32 = 4;
-pub const NUD_DELAY: u32 = 8;
-pub const NUD_PROBE: u32 = 16;
-pub const NUD_FAILED: u32 = 32;
-pub const NUD_NOARP: u32 = 64;
-pub const NUD_PERMANENT: u32 = 128;
-pub const NUD_NONE: u32 = 0;
-pub const RTNL_FAMILY_IPMR: u32 = 128;
-pub const RTNL_FAMILY_IP6MR: u32 = 129;
-pub const RTNL_FAMILY_MAX: u32 = 129;
-pub const RTA_ALIGNTO: u32 = 4;
-pub const RTPROT_UNSPEC: u32 = 0;
-pub const RTPROT_REDIRECT: u32 = 1;
-pub const RTPROT_KERNEL: u32 = 2;
-pub const RTPROT_BOOT: u32 = 3;
-pub const RTPROT_STATIC: u32 = 4;
-pub const RTPROT_GATED: u32 = 8;
-pub const RTPROT_RA: u32 = 9;
-pub const RTPROT_MRT: u32 = 10;
-pub const RTPROT_ZEBRA: u32 = 11;
-pub const RTPROT_BIRD: u32 = 12;
-pub const RTPROT_DNROUTED: u32 = 13;
-pub const RTPROT_XORP: u32 = 14;
-pub const RTPROT_NTK: u32 = 15;
-pub const RTPROT_DHCP: u32 = 16;
-pub const RTPROT_MROUTED: u32 = 17;
-pub const RTPROT_KEEPALIVED: u32 = 18;
-pub const RTPROT_BABEL: u32 = 42;
-pub const RTPROT_OPENR: u32 = 99;
-pub const RTPROT_BGP: u32 = 186;
-pub const RTPROT_ISIS: u32 = 187;
-pub const RTPROT_OSPF: u32 = 188;
-pub const RTPROT_RIP: u32 = 189;
-pub const RTPROT_EIGRP: u32 = 192;
-pub const RTM_F_NOTIFY: u32 = 256;
-pub const RTM_F_CLONED: u32 = 512;
-pub const RTM_F_EQUALIZE: u32 = 1024;
-pub const RTM_F_PREFIX: u32 = 2048;
-pub const RTM_F_LOOKUP_TABLE: u32 = 4096;
-pub const RTM_F_FIB_MATCH: u32 = 8192;
-pub const RTM_F_OFFLOAD: u32 = 16384;
-pub const RTM_F_TRAP: u32 = 32768;
-pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912;
-pub const RTNH_F_DEAD: u32 = 1;
-pub const RTNH_F_PERVASIVE: u32 = 2;
-pub const RTNH_F_ONLINK: u32 = 4;
-pub const RTNH_F_OFFLOAD: u32 = 8;
-pub const RTNH_F_LINKDOWN: u32 = 16;
-pub const RTNH_F_UNRESOLVED: u32 = 32;
-pub const RTNH_F_TRAP: u32 = 64;
-pub const RTNH_COMPARE_MASK: u32 = 89;
-pub const RTNH_ALIGNTO: u32 = 4;
-pub const RTNETLINK_HAVE_PEERINFO: u32 = 1;
-pub const RTAX_FEATURE_ECN: u32 = 1;
-pub const RTAX_FEATURE_SACK: u32 = 2;
-pub const RTAX_FEATURE_TIMESTAMP: u32 = 4;
-pub const RTAX_FEATURE_ALLFRAG: u32 = 8;
-pub const RTAX_FEATURE_MASK: u32 = 15;
-pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295;
-pub const TCA_DUMP_FLAGS_TERSE: u32 = 1;
-pub const RTMGRP_LINK: u32 = 1;
-pub const RTMGRP_NOTIFY: u32 = 2;
-pub const RTMGRP_NEIGH: u32 = 4;
-pub const RTMGRP_TC: u32 = 8;
-pub const RTMGRP_IPV4_IFADDR: u32 = 16;
-pub const RTMGRP_IPV4_MROUTE: u32 = 32;
-pub const RTMGRP_IPV4_ROUTE: u32 = 64;
-pub const RTMGRP_IPV4_RULE: u32 = 128;
-pub const RTMGRP_IPV6_IFADDR: u32 = 256;
-pub const RTMGRP_IPV6_MROUTE: u32 = 512;
-pub const RTMGRP_IPV6_ROUTE: u32 = 1024;
-pub const RTMGRP_IPV6_IFINFO: u32 = 2048;
-pub const RTMGRP_DECnet_IFADDR: u32 = 4096;
-pub const RTMGRP_DECnet_ROUTE: u32 = 16384;
-pub const RTMGRP_IPV6_PREFIX: u32 = 131072;
-pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2;
-pub const RTEXT_FILTER_VF: u32 = 1;
-pub const RTEXT_FILTER_BRVLAN: u32 = 2;
-pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4;
-pub const RTEXT_FILTER_SKIP_STATS: u32 = 8;
-pub const RTEXT_FILTER_MRP: u32 = 16;
-pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32;
-pub const RTEXT_FILTER_CFM_STATUS: u32 = 64;
-pub const RTEXT_FILTER_MST: u32 = 128;
-pub type size_t = crate::ctypes::c_uint;
-pub type ssize_t = crate::ctypes::c_int;
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 32usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_mode_t = crate::ctypes::c_ushort;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_ushort;
-pub type __kernel_uid_t = crate::ctypes::c_ushort;
-pub type __kernel_gid_t = crate::ctypes::c_ushort;
-pub type __kernel_old_dev_t = crate::ctypes::c_ushort;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_old_uid_t = __kernel_uid_t;
-pub type __kernel_old_gid_t = __kernel_gid_t;
-pub type __kernel_size_t = crate::ctypes::c_uint;
-pub type __kernel_ssize_t = crate::ctypes::c_int;
-pub type __kernel_ptrdiff_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_nl {
-pub nl_family: __kernel_sa_family_t,
-pub nl_pad: crate::ctypes::c_ushort,
-pub nl_pid: __u32,
-pub nl_groups: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsghdr {
-pub nlmsg_len: __u32,
-pub nlmsg_type: __u16,
-pub nlmsg_flags: __u16,
-pub nlmsg_seq: __u32,
-pub nlmsg_pid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsgerr {
-pub error: crate::ctypes::c_int,
-pub msg: nlmsghdr,
-}
-impl nlmsgerr_attrs {
-pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nlmsgerr_attrs {
-NLMSGERR_ATTR_UNUSED = 0,
-NLMSGERR_ATTR_MSG = 1,
-NLMSGERR_ATTR_OFFS = 2,
-NLMSGERR_ATTR_COOKIE = 3,
-NLMSGERR_ATTR_POLICY = 4,
-NLMSGERR_ATTR_MISS_TYPE = 5,
-NLMSGERR_ATTR_MISS_NEST = 6,
-__NLMSGERR_ATTR_MAX = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_pktinfo {
-pub group: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_req {
-pub nm_block_size: crate::ctypes::c_uint,
-pub nm_block_nr: crate::ctypes::c_uint,
-pub nm_frame_size: crate::ctypes::c_uint,
-pub nm_frame_nr: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_hdr {
-pub nm_status: crate::ctypes::c_uint,
-pub nm_len: crate::ctypes::c_uint,
-pub nm_group: __u32,
-pub nm_pid: __u32,
-pub nm_uid: __u32,
-pub nm_gid: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nl_mmap_status {
-NL_MMAP_STATUS_UNUSED = 0,
-NL_MMAP_STATUS_RESERVED = 1,
-NL_MMAP_STATUS_VALID = 2,
-NL_MMAP_STATUS_COPY = 3,
-NL_MMAP_STATUS_SKIP = 4,
-}
-pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED;
-pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-NETLINK_UNCONNECTED = 0,
-NETLINK_CONNECTED = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlattr {
-pub nla_len: __u16,
-pub nla_type: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nla_bitfield32 {
-pub value: __u32,
-pub selector: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_attribute_type {
-NL_ATTR_TYPE_INVALID = 0,
-NL_ATTR_TYPE_FLAG = 1,
-NL_ATTR_TYPE_U8 = 2,
-NL_ATTR_TYPE_U16 = 3,
-NL_ATTR_TYPE_U32 = 4,
-NL_ATTR_TYPE_U64 = 5,
-NL_ATTR_TYPE_S8 = 6,
-NL_ATTR_TYPE_S16 = 7,
-NL_ATTR_TYPE_S32 = 8,
-NL_ATTR_TYPE_S64 = 9,
-NL_ATTR_TYPE_BINARY = 10,
-NL_ATTR_TYPE_STRING = 11,
-NL_ATTR_TYPE_NUL_STRING = 12,
-NL_ATTR_TYPE_NESTED = 13,
-NL_ATTR_TYPE_NESTED_ARRAY = 14,
-NL_ATTR_TYPE_BITFIELD32 = 15,
-}
-impl netlink_policy_type_attr {
-pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_policy_type_attr {
-NL_POLICY_TYPE_ATTR_UNSPEC = 0,
-NL_POLICY_TYPE_ATTR_TYPE = 1,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5,
-NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6,
-NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7,
-NL_POLICY_TYPE_ATTR_POLICY_IDX = 8,
-NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9,
-NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10,
-NL_POLICY_TYPE_ATTR_PAD = 11,
-NL_POLICY_TYPE_ATTR_MASK = 12,
-__NL_POLICY_TYPE_ATTR_MAX = 13,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats {
-pub rx_packets: __u32,
-pub tx_packets: __u32,
-pub rx_bytes: __u32,
-pub tx_bytes: __u32,
-pub rx_errors: __u32,
-pub tx_errors: __u32,
-pub rx_dropped: __u32,
-pub tx_dropped: __u32,
-pub multicast: __u32,
-pub collisions: __u32,
-pub rx_length_errors: __u32,
-pub rx_over_errors: __u32,
-pub rx_crc_errors: __u32,
-pub rx_frame_errors: __u32,
-pub rx_fifo_errors: __u32,
-pub rx_missed_errors: __u32,
-pub tx_aborted_errors: __u32,
-pub tx_carrier_errors: __u32,
-pub tx_fifo_errors: __u32,
-pub tx_heartbeat_errors: __u32,
-pub tx_window_errors: __u32,
-pub rx_compressed: __u32,
-pub tx_compressed: __u32,
-pub rx_nohandler: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-pub collisions: __u64,
-pub rx_length_errors: __u64,
-pub rx_over_errors: __u64,
-pub rx_crc_errors: __u64,
-pub rx_frame_errors: __u64,
-pub rx_fifo_errors: __u64,
-pub rx_missed_errors: __u64,
-pub tx_aborted_errors: __u64,
-pub tx_carrier_errors: __u64,
-pub tx_fifo_errors: __u64,
-pub tx_heartbeat_errors: __u64,
-pub tx_window_errors: __u64,
-pub rx_compressed: __u64,
-pub tx_compressed: __u64,
-pub rx_nohandler: __u64,
-pub rx_otherhost_dropped: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_hw_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_ifmap {
-pub mem_start: __u64,
-pub mem_end: __u64,
-pub base_addr: __u64,
-pub irq: __u16,
-pub dma: __u8,
-pub port: __u8,
-}
-pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC;
-pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS;
-pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST;
-pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME;
-pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU;
-pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK;
-pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC;
-pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS;
-pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST;
-pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY;
-pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER;
-pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS;
-pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO;
-pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN;
-pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP;
-pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT;
-pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE;
-pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE;
-pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO;
-pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID;
-pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS;
-pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF;
-pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST;
-pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64;
-pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS;
-pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF;
-pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC;
-pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP;
-pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD;
-pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK;
-pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY;
-pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES;
-pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES;
-pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER;
-pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID;
-pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES;
-pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID;
-pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID;
-pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME;
-pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN;
-pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS;
-pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE;
-pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD;
-pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP;
-pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT;
-pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID;
-pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT;
-pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT;
-pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX;
-pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU;
-pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU;
-pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST;
-pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME;
-pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS;
-pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON;
-pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME;
-pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME;
-pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS;
-pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI;
-pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT;
-pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IFLA_UNSPEC = 0,
-IFLA_ADDRESS = 1,
-IFLA_BROADCAST = 2,
-IFLA_IFNAME = 3,
-IFLA_MTU = 4,
-IFLA_LINK = 5,
-IFLA_QDISC = 6,
-IFLA_STATS = 7,
-IFLA_COST = 8,
-IFLA_PRIORITY = 9,
-IFLA_MASTER = 10,
-IFLA_WIRELESS = 11,
-IFLA_PROTINFO = 12,
-IFLA_TXQLEN = 13,
-IFLA_MAP = 14,
-IFLA_WEIGHT = 15,
-IFLA_OPERSTATE = 16,
-IFLA_LINKMODE = 17,
-IFLA_LINKINFO = 18,
-IFLA_NET_NS_PID = 19,
-IFLA_IFALIAS = 20,
-IFLA_NUM_VF = 21,
-IFLA_VFINFO_LIST = 22,
-IFLA_STATS64 = 23,
-IFLA_VF_PORTS = 24,
-IFLA_PORT_SELF = 25,
-IFLA_AF_SPEC = 26,
-IFLA_GROUP = 27,
-IFLA_NET_NS_FD = 28,
-IFLA_EXT_MASK = 29,
-IFLA_PROMISCUITY = 30,
-IFLA_NUM_TX_QUEUES = 31,
-IFLA_NUM_RX_QUEUES = 32,
-IFLA_CARRIER = 33,
-IFLA_PHYS_PORT_ID = 34,
-IFLA_CARRIER_CHANGES = 35,
-IFLA_PHYS_SWITCH_ID = 36,
-IFLA_LINK_NETNSID = 37,
-IFLA_PHYS_PORT_NAME = 38,
-IFLA_PROTO_DOWN = 39,
-IFLA_GSO_MAX_SEGS = 40,
-IFLA_GSO_MAX_SIZE = 41,
-IFLA_PAD = 42,
-IFLA_XDP = 43,
-IFLA_EVENT = 44,
-IFLA_NEW_NETNSID = 45,
-IFLA_IF_NETNSID = 46,
-IFLA_CARRIER_UP_COUNT = 47,
-IFLA_CARRIER_DOWN_COUNT = 48,
-IFLA_NEW_IFINDEX = 49,
-IFLA_MIN_MTU = 50,
-IFLA_MAX_MTU = 51,
-IFLA_PROP_LIST = 52,
-IFLA_ALT_IFNAME = 53,
-IFLA_PERM_ADDRESS = 54,
-IFLA_PROTO_DOWN_REASON = 55,
-IFLA_PARENT_DEV_NAME = 56,
-IFLA_PARENT_DEV_BUS_NAME = 57,
-IFLA_GRO_MAX_SIZE = 58,
-IFLA_TSO_MAX_SIZE = 59,
-IFLA_TSO_MAX_SEGS = 60,
-IFLA_ALLMULTI = 61,
-IFLA_DEVLINK_PORT = 62,
-__IFLA_MAX = 63,
-}
-pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC;
-pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK;
-pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT;
-pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-IFLA_PROTO_DOWN_REASON_UNSPEC = 0,
-IFLA_PROTO_DOWN_REASON_MASK = 1,
-IFLA_PROTO_DOWN_REASON_VALUE = 2,
-__IFLA_PROTO_DOWN_REASON_CNT = 3,
-}
-pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC;
-pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF;
-pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-IFLA_INET_UNSPEC = 0,
-IFLA_INET_CONF = 1,
-__IFLA_INET_MAX = 2,
-}
-pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC;
-pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS;
-pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF;
-pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS;
-pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST;
-pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO;
-pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS;
-pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN;
-pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE;
-pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU;
-pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-IFLA_INET6_UNSPEC = 0,
-IFLA_INET6_FLAGS = 1,
-IFLA_INET6_CONF = 2,
-IFLA_INET6_STATS = 3,
-IFLA_INET6_MCAST = 4,
-IFLA_INET6_CACHEINFO = 5,
-IFLA_INET6_ICMP6STATS = 6,
-IFLA_INET6_TOKEN = 7,
-IFLA_INET6_ADDR_GEN_MODE = 8,
-IFLA_INET6_RA_MTU = 9,
-__IFLA_INET6_MAX = 10,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum in6_addr_gen_mode {
-IN6_ADDR_GEN_MODE_EUI64 = 0,
-IN6_ADDR_GEN_MODE_NONE = 1,
-IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2,
-IN6_ADDR_GEN_MODE_RANDOM = 3,
-}
-pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC;
-pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY;
-pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME;
-pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE;
-pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME;
-pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE;
-pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY;
-pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING;
-pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL;
-pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK;
-pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID;
-pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID;
-pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT;
-pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST;
-pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE;
-pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED;
-pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER;
-pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER;
-pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER;
-pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER;
-pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR;
-pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH;
-pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER;
-pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING;
-pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR;
-pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER;
-pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY;
-pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX;
-pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT;
-pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL;
-pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL;
-pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL;
-pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL;
-pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL;
-pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES;
-pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES;
-pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES;
-pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID;
-pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD;
-pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED;
-pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED;
-pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION;
-pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION;
-pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT;
-pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT;
-pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE;
-pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-IFLA_BR_UNSPEC = 0,
-IFLA_BR_FORWARD_DELAY = 1,
-IFLA_BR_HELLO_TIME = 2,
-IFLA_BR_MAX_AGE = 3,
-IFLA_BR_AGEING_TIME = 4,
-IFLA_BR_STP_STATE = 5,
-IFLA_BR_PRIORITY = 6,
-IFLA_BR_VLAN_FILTERING = 7,
-IFLA_BR_VLAN_PROTOCOL = 8,
-IFLA_BR_GROUP_FWD_MASK = 9,
-IFLA_BR_ROOT_ID = 10,
-IFLA_BR_BRIDGE_ID = 11,
-IFLA_BR_ROOT_PORT = 12,
-IFLA_BR_ROOT_PATH_COST = 13,
-IFLA_BR_TOPOLOGY_CHANGE = 14,
-IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 15,
-IFLA_BR_HELLO_TIMER = 16,
-IFLA_BR_TCN_TIMER = 17,
-IFLA_BR_TOPOLOGY_CHANGE_TIMER = 18,
-IFLA_BR_GC_TIMER = 19,
-IFLA_BR_GROUP_ADDR = 20,
-IFLA_BR_FDB_FLUSH = 21,
-IFLA_BR_MCAST_ROUTER = 22,
-IFLA_BR_MCAST_SNOOPING = 23,
-IFLA_BR_MCAST_QUERY_USE_IFADDR = 24,
-IFLA_BR_MCAST_QUERIER = 25,
-IFLA_BR_MCAST_HASH_ELASTICITY = 26,
-IFLA_BR_MCAST_HASH_MAX = 27,
-IFLA_BR_MCAST_LAST_MEMBER_CNT = 28,
-IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29,
-IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30,
-IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31,
-IFLA_BR_MCAST_QUERIER_INTVL = 32,
-IFLA_BR_MCAST_QUERY_INTVL = 33,
-IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34,
-IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35,
-IFLA_BR_NF_CALL_IPTABLES = 36,
-IFLA_BR_NF_CALL_IP6TABLES = 37,
-IFLA_BR_NF_CALL_ARPTABLES = 38,
-IFLA_BR_VLAN_DEFAULT_PVID = 39,
-IFLA_BR_PAD = 40,
-IFLA_BR_VLAN_STATS_ENABLED = 41,
-IFLA_BR_MCAST_STATS_ENABLED = 42,
-IFLA_BR_MCAST_IGMP_VERSION = 43,
-IFLA_BR_MCAST_MLD_VERSION = 44,
-IFLA_BR_VLAN_STATS_PER_PORT = 45,
-IFLA_BR_MULTI_BOOLOPT = 46,
-IFLA_BR_MCAST_QUERIER_STATE = 47,
-__IFLA_BR_MAX = 48,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_bridge_id {
-pub prio: [__u8; 2usize],
-pub addr: [__u8; 6usize],
-}
-pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC;
-pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-BRIDGE_MODE_UNSPEC = 0,
-BRIDGE_MODE_HAIRPIN = 1,
-}
-pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC;
-pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE;
-pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY;
-pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST;
-pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE;
-pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD;
-pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT;
-pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE;
-pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING;
-pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD;
-pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP;
-pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC;
-pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI;
-pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID;
-pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID;
-pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT;
-pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST;
-pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID;
-pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO;
-pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK;
-pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING;
-pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER;
-pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER;
-pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER;
-pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH;
-pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER;
-pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD;
-pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD;
-pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST;
-pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL;
-pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD;
-pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK;
-pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS;
-pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED;
-pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT;
-pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN;
-pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT;
-pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED;
-pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB;
-pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IFLA_BRPORT_UNSPEC = 0,
-IFLA_BRPORT_STATE = 1,
-IFLA_BRPORT_PRIORITY = 2,
-IFLA_BRPORT_COST = 3,
-IFLA_BRPORT_MODE = 4,
-IFLA_BRPORT_GUARD = 5,
-IFLA_BRPORT_PROTECT = 6,
-IFLA_BRPORT_FAST_LEAVE = 7,
-IFLA_BRPORT_LEARNING = 8,
-IFLA_BRPORT_UNICAST_FLOOD = 9,
-IFLA_BRPORT_PROXYARP = 10,
-IFLA_BRPORT_LEARNING_SYNC = 11,
-IFLA_BRPORT_PROXYARP_WIFI = 12,
-IFLA_BRPORT_ROOT_ID = 13,
-IFLA_BRPORT_BRIDGE_ID = 14,
-IFLA_BRPORT_DESIGNATED_PORT = 15,
-IFLA_BRPORT_DESIGNATED_COST = 16,
-IFLA_BRPORT_ID = 17,
-IFLA_BRPORT_NO = 18,
-IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 19,
-IFLA_BRPORT_CONFIG_PENDING = 20,
-IFLA_BRPORT_MESSAGE_AGE_TIMER = 21,
-IFLA_BRPORT_FORWARD_DELAY_TIMER = 22,
-IFLA_BRPORT_HOLD_TIMER = 23,
-IFLA_BRPORT_FLUSH = 24,
-IFLA_BRPORT_MULTICAST_ROUTER = 25,
-IFLA_BRPORT_PAD = 26,
-IFLA_BRPORT_MCAST_FLOOD = 27,
-IFLA_BRPORT_MCAST_TO_UCAST = 28,
-IFLA_BRPORT_VLAN_TUNNEL = 29,
-IFLA_BRPORT_BCAST_FLOOD = 30,
-IFLA_BRPORT_GROUP_FWD_MASK = 31,
-IFLA_BRPORT_NEIGH_SUPPRESS = 32,
-IFLA_BRPORT_ISOLATED = 33,
-IFLA_BRPORT_BACKUP_PORT = 34,
-IFLA_BRPORT_MRP_RING_OPEN = 35,
-IFLA_BRPORT_MRP_IN_OPEN = 36,
-IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 37,
-IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 38,
-IFLA_BRPORT_LOCKED = 39,
-IFLA_BRPORT_MAB = 40,
-__IFLA_BRPORT_MAX = 41,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_cacheinfo {
-pub max_reasm_len: __u32,
-pub tstamp: __u32,
-pub reachable_time: __u32,
-pub retrans_time: __u32,
-}
-pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC;
-pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND;
-pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA;
-pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS;
-pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND;
-pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA;
-pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IFLA_INFO_UNSPEC = 0,
-IFLA_INFO_KIND = 1,
-IFLA_INFO_DATA = 2,
-IFLA_INFO_XSTATS = 3,
-IFLA_INFO_SLAVE_KIND = 4,
-IFLA_INFO_SLAVE_DATA = 5,
-__IFLA_INFO_MAX = 6,
-}
-pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC;
-pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID;
-pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS;
-pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS;
-pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS;
-pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL;
-pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IFLA_VLAN_UNSPEC = 0,
-IFLA_VLAN_ID = 1,
-IFLA_VLAN_FLAGS = 2,
-IFLA_VLAN_EGRESS_QOS = 3,
-IFLA_VLAN_INGRESS_QOS = 4,
-IFLA_VLAN_PROTOCOL = 5,
-__IFLA_VLAN_MAX = 6,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC;
-pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING;
-pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IFLA_VLAN_QOS_UNSPEC = 0,
-IFLA_VLAN_QOS_MAPPING = 1,
-__IFLA_VLAN_QOS_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_qos_mapping {
-pub from: __u32,
-pub to: __u32,
-}
-pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC;
-pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE;
-pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS;
-pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE;
-pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR;
-pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA;
-pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED;
-pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IFLA_MACVLAN_UNSPEC = 0,
-IFLA_MACVLAN_MODE = 1,
-IFLA_MACVLAN_FLAGS = 2,
-IFLA_MACVLAN_MACADDR_MODE = 3,
-IFLA_MACVLAN_MACADDR = 4,
-IFLA_MACVLAN_MACADDR_DATA = 5,
-IFLA_MACVLAN_MACADDR_COUNT = 6,
-IFLA_MACVLAN_BC_QUEUE_LEN = 7,
-IFLA_MACVLAN_BC_QUEUE_LEN_USED = 8,
-__IFLA_MACVLAN_MAX = 9,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_mode {
-MACVLAN_MODE_PRIVATE = 1,
-MACVLAN_MODE_VEPA = 2,
-MACVLAN_MODE_BRIDGE = 4,
-MACVLAN_MODE_PASSTHRU = 8,
-MACVLAN_MODE_SOURCE = 16,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_macaddr_mode {
-MACVLAN_MACADDR_ADD = 0,
-MACVLAN_MACADDR_DEL = 1,
-MACVLAN_MACADDR_FLUSH = 2,
-MACVLAN_MACADDR_SET = 3,
-}
-pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC;
-pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE;
-pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_13 {
-IFLA_VRF_UNSPEC = 0,
-IFLA_VRF_TABLE = 1,
-__IFLA_VRF_MAX = 2,
-}
-pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC;
-pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE;
-pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_14 {
-IFLA_VRF_PORT_UNSPEC = 0,
-IFLA_VRF_PORT_TABLE = 1,
-__IFLA_VRF_PORT_MAX = 2,
-}
-pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC;
-pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI;
-pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT;
-pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN;
-pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE;
-pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW;
-pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA;
-pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT;
-pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT;
-pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI;
-pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES;
-pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB;
-pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT;
-pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION;
-pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD;
-pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD;
-pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_15 {
-IFLA_MACSEC_UNSPEC = 0,
-IFLA_MACSEC_SCI = 1,
-IFLA_MACSEC_PORT = 2,
-IFLA_MACSEC_ICV_LEN = 3,
-IFLA_MACSEC_CIPHER_SUITE = 4,
-IFLA_MACSEC_WINDOW = 5,
-IFLA_MACSEC_ENCODING_SA = 6,
-IFLA_MACSEC_ENCRYPT = 7,
-IFLA_MACSEC_PROTECT = 8,
-IFLA_MACSEC_INC_SCI = 9,
-IFLA_MACSEC_ES = 10,
-IFLA_MACSEC_SCB = 11,
-IFLA_MACSEC_REPLAY_PROTECT = 12,
-IFLA_MACSEC_VALIDATION = 13,
-IFLA_MACSEC_PAD = 14,
-IFLA_MACSEC_OFFLOAD = 15,
-__IFLA_MACSEC_MAX = 16,
-}
-pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC;
-pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK;
-pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID;
-pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA;
-pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_16 {
-IFLA_XFRM_UNSPEC = 0,
-IFLA_XFRM_LINK = 1,
-IFLA_XFRM_IF_ID = 2,
-IFLA_XFRM_COLLECT_METADATA = 3,
-__IFLA_XFRM_MAX = 4,
-}
-impl macsec_validation_type {
-pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_validation_type {
-MACSEC_VALIDATE_DISABLED = 0,
-MACSEC_VALIDATE_CHECK = 1,
-MACSEC_VALIDATE_STRICT = 2,
-__MACSEC_VALIDATE_END = 3,
-}
-impl macsec_offload {
-pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_offload {
-MACSEC_OFFLOAD_OFF = 0,
-MACSEC_OFFLOAD_PHY = 1,
-MACSEC_OFFLOAD_MAC = 2,
-__MACSEC_OFFLOAD_END = 3,
-}
-pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC;
-pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE;
-pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS;
-pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_17 {
-IFLA_IPVLAN_UNSPEC = 0,
-IFLA_IPVLAN_MODE = 1,
-IFLA_IPVLAN_FLAGS = 2,
-__IFLA_IPVLAN_MAX = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ipvlan_mode {
-IPVLAN_MODE_L2 = 0,
-IPVLAN_MODE_L3 = 1,
-IPVLAN_MODE_L3S = 2,
-IPVLAN_MODE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tunnel_msg {
-pub family: __u8,
-pub flags: __u8,
-pub reserved2: __u16,
-pub ifindex: __u32,
-}
-pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC;
-pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD;
-pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_18 {
-VNIFILTER_ENTRY_STATS_UNSPEC = 0,
-VNIFILTER_ENTRY_STATS_RX_BYTES = 1,
-VNIFILTER_ENTRY_STATS_RX_PKTS = 2,
-VNIFILTER_ENTRY_STATS_RX_DROPS = 3,
-VNIFILTER_ENTRY_STATS_RX_ERRORS = 4,
-VNIFILTER_ENTRY_STATS_TX_BYTES = 5,
-VNIFILTER_ENTRY_STATS_TX_PKTS = 6,
-VNIFILTER_ENTRY_STATS_TX_DROPS = 7,
-VNIFILTER_ENTRY_STATS_TX_ERRORS = 8,
-VNIFILTER_ENTRY_STATS_PAD = 9,
-__VNIFILTER_ENTRY_STATS_MAX = 10,
-}
-pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START;
-pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6;
-pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS;
-pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_19 {
-VXLAN_VNIFILTER_ENTRY_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY_START = 1,
-VXLAN_VNIFILTER_ENTRY_END = 2,
-VXLAN_VNIFILTER_ENTRY_GROUP = 3,
-VXLAN_VNIFILTER_ENTRY_GROUP6 = 4,
-VXLAN_VNIFILTER_ENTRY_STATS = 5,
-__VXLAN_VNIFILTER_ENTRY_MAX = 6,
-}
-pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY;
-pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_20 {
-VXLAN_VNIFILTER_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY = 1,
-__VXLAN_VNIFILTER_MAX = 2,
-}
-pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC;
-pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID;
-pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP;
-pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK;
-pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL;
-pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL;
-pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS;
-pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING;
-pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING;
-pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT;
-pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE;
-pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY;
-pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC;
-pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS;
-pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS;
-pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT;
-pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6;
-pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6;
-pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX;
-pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX;
-pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX;
-pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP;
-pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL;
-pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA;
-pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL;
-pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE;
-pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT;
-pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF;
-pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER;
-pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_21 {
-IFLA_VXLAN_UNSPEC = 0,
-IFLA_VXLAN_ID = 1,
-IFLA_VXLAN_GROUP = 2,
-IFLA_VXLAN_LINK = 3,
-IFLA_VXLAN_LOCAL = 4,
-IFLA_VXLAN_TTL = 5,
-IFLA_VXLAN_TOS = 6,
-IFLA_VXLAN_LEARNING = 7,
-IFLA_VXLAN_AGEING = 8,
-IFLA_VXLAN_LIMIT = 9,
-IFLA_VXLAN_PORT_RANGE = 10,
-IFLA_VXLAN_PROXY = 11,
-IFLA_VXLAN_RSC = 12,
-IFLA_VXLAN_L2MISS = 13,
-IFLA_VXLAN_L3MISS = 14,
-IFLA_VXLAN_PORT = 15,
-IFLA_VXLAN_GROUP6 = 16,
-IFLA_VXLAN_LOCAL6 = 17,
-IFLA_VXLAN_UDP_CSUM = 18,
-IFLA_VXLAN_UDP_ZERO_CSUM6_TX = 19,
-IFLA_VXLAN_UDP_ZERO_CSUM6_RX = 20,
-IFLA_VXLAN_REMCSUM_TX = 21,
-IFLA_VXLAN_REMCSUM_RX = 22,
-IFLA_VXLAN_GBP = 23,
-IFLA_VXLAN_REMCSUM_NOPARTIAL = 24,
-IFLA_VXLAN_COLLECT_METADATA = 25,
-IFLA_VXLAN_LABEL = 26,
-IFLA_VXLAN_GPE = 27,
-IFLA_VXLAN_TTL_INHERIT = 28,
-IFLA_VXLAN_DF = 29,
-IFLA_VXLAN_VNIFILTER = 30,
-__IFLA_VXLAN_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vxlan_port_range {
-pub low: __be16,
-pub high: __be16,
-}
-impl ifla_vxlan_df {
-pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_vxlan_df {
-VXLAN_DF_UNSET = 0,
-VXLAN_DF_SET = 1,
-VXLAN_DF_INHERIT = 2,
-__VXLAN_DF_END = 3,
-}
-pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC;
-pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID;
-pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE;
-pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL;
-pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS;
-pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT;
-pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA;
-pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6;
-pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX;
-pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL;
-pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT;
-pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF;
-pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT;
-pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_22 {
-IFLA_GENEVE_UNSPEC = 0,
-IFLA_GENEVE_ID = 1,
-IFLA_GENEVE_REMOTE = 2,
-IFLA_GENEVE_TTL = 3,
-IFLA_GENEVE_TOS = 4,
-IFLA_GENEVE_PORT = 5,
-IFLA_GENEVE_COLLECT_METADATA = 6,
-IFLA_GENEVE_REMOTE6 = 7,
-IFLA_GENEVE_UDP_CSUM = 8,
-IFLA_GENEVE_UDP_ZERO_CSUM6_TX = 9,
-IFLA_GENEVE_UDP_ZERO_CSUM6_RX = 10,
-IFLA_GENEVE_LABEL = 11,
-IFLA_GENEVE_TTL_INHERIT = 12,
-IFLA_GENEVE_DF = 13,
-IFLA_GENEVE_INNER_PROTO_INHERIT = 14,
-__IFLA_GENEVE_MAX = 15,
-}
-impl ifla_geneve_df {
-pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_geneve_df {
-GENEVE_DF_UNSET = 0,
-GENEVE_DF_SET = 1,
-GENEVE_DF_INHERIT = 2,
-__GENEVE_DF_END = 3,
-}
-pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC;
-pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT;
-pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE;
-pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN;
-pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE;
-pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_23 {
-IFLA_BAREUDP_UNSPEC = 0,
-IFLA_BAREUDP_PORT = 1,
-IFLA_BAREUDP_ETHERTYPE = 2,
-IFLA_BAREUDP_SRCPORT_MIN = 3,
-IFLA_BAREUDP_MULTIPROTO_MODE = 4,
-__IFLA_BAREUDP_MAX = 5,
-}
-pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC;
-pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD;
-pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_24 {
-IFLA_PPP_UNSPEC = 0,
-IFLA_PPP_DEV_FD = 1,
-__IFLA_PPP_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_gtp_role {
-GTP_ROLE_GGSN = 0,
-GTP_ROLE_SGSN = 1,
-}
-pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC;
-pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0;
-pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1;
-pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE;
-pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE;
-pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS;
-pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT;
-pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_25 {
-IFLA_GTP_UNSPEC = 0,
-IFLA_GTP_FD0 = 1,
-IFLA_GTP_FD1 = 2,
-IFLA_GTP_PDP_HASHSIZE = 3,
-IFLA_GTP_ROLE = 4,
-IFLA_GTP_CREATE_SOCKETS = 5,
-IFLA_GTP_RESTART_COUNT = 6,
-__IFLA_GTP_MAX = 7,
-}
-pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC;
-pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE;
-pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE;
-pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON;
-pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY;
-pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY;
-pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER;
-pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL;
-pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET;
-pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE;
-pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS;
-pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY;
-pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT;
-pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC;
-pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY;
-pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP;
-pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF;
-pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE;
-pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS;
-pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL;
-pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE;
-pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE;
-pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT;
-pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO;
-pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO;
-pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY;
-pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM;
-pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB;
-pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY;
-pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE;
-pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX;
-pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET;
-pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_26 {
-IFLA_BOND_UNSPEC = 0,
-IFLA_BOND_MODE = 1,
-IFLA_BOND_ACTIVE_SLAVE = 2,
-IFLA_BOND_MIIMON = 3,
-IFLA_BOND_UPDELAY = 4,
-IFLA_BOND_DOWNDELAY = 5,
-IFLA_BOND_USE_CARRIER = 6,
-IFLA_BOND_ARP_INTERVAL = 7,
-IFLA_BOND_ARP_IP_TARGET = 8,
-IFLA_BOND_ARP_VALIDATE = 9,
-IFLA_BOND_ARP_ALL_TARGETS = 10,
-IFLA_BOND_PRIMARY = 11,
-IFLA_BOND_PRIMARY_RESELECT = 12,
-IFLA_BOND_FAIL_OVER_MAC = 13,
-IFLA_BOND_XMIT_HASH_POLICY = 14,
-IFLA_BOND_RESEND_IGMP = 15,
-IFLA_BOND_NUM_PEER_NOTIF = 16,
-IFLA_BOND_ALL_SLAVES_ACTIVE = 17,
-IFLA_BOND_MIN_LINKS = 18,
-IFLA_BOND_LP_INTERVAL = 19,
-IFLA_BOND_PACKETS_PER_SLAVE = 20,
-IFLA_BOND_AD_LACP_RATE = 21,
-IFLA_BOND_AD_SELECT = 22,
-IFLA_BOND_AD_INFO = 23,
-IFLA_BOND_AD_ACTOR_SYS_PRIO = 24,
-IFLA_BOND_AD_USER_PORT_KEY = 25,
-IFLA_BOND_AD_ACTOR_SYSTEM = 26,
-IFLA_BOND_TLB_DYNAMIC_LB = 27,
-IFLA_BOND_PEER_NOTIF_DELAY = 28,
-IFLA_BOND_AD_LACP_ACTIVE = 29,
-IFLA_BOND_MISSED_MAX = 30,
-IFLA_BOND_NS_IP6_TARGET = 31,
-__IFLA_BOND_MAX = 32,
-}
-pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC;
-pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR;
-pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS;
-pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC;
-pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_27 {
-IFLA_BOND_AD_INFO_UNSPEC = 0,
-IFLA_BOND_AD_INFO_AGGREGATOR = 1,
-IFLA_BOND_AD_INFO_NUM_PORTS = 2,
-IFLA_BOND_AD_INFO_ACTOR_KEY = 3,
-IFLA_BOND_AD_INFO_PARTNER_KEY = 4,
-IFLA_BOND_AD_INFO_PARTNER_MAC = 5,
-__IFLA_BOND_AD_INFO_MAX = 6,
-}
-pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC;
-pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE;
-pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS;
-pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT;
-pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR;
-pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID;
-pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID;
-pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO;
-pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_28 {
-IFLA_BOND_SLAVE_UNSPEC = 0,
-IFLA_BOND_SLAVE_STATE = 1,
-IFLA_BOND_SLAVE_MII_STATUS = 2,
-IFLA_BOND_SLAVE_LINK_FAILURE_COUNT = 3,
-IFLA_BOND_SLAVE_PERM_HWADDR = 4,
-IFLA_BOND_SLAVE_QUEUE_ID = 5,
-IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 6,
-IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 7,
-IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 8,
-IFLA_BOND_SLAVE_PRIO = 9,
-__IFLA_BOND_SLAVE_MAX = 10,
-}
-pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC;
-pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO;
-pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_29 {
-IFLA_VF_INFO_UNSPEC = 0,
-IFLA_VF_INFO = 1,
-__IFLA_VF_INFO_MAX = 2,
-}
-pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC;
-pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC;
-pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN;
-pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE;
-pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK;
-pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE;
-pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE;
-pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN;
-pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS;
-pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST;
-pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID;
-pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID;
-pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST;
-pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST;
-pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_30 {
-IFLA_VF_UNSPEC = 0,
-IFLA_VF_MAC = 1,
-IFLA_VF_VLAN = 2,
-IFLA_VF_TX_RATE = 3,
-IFLA_VF_SPOOFCHK = 4,
-IFLA_VF_LINK_STATE = 5,
-IFLA_VF_RATE = 6,
-IFLA_VF_RSS_QUERY_EN = 7,
-IFLA_VF_STATS = 8,
-IFLA_VF_TRUST = 9,
-IFLA_VF_IB_NODE_GUID = 10,
-IFLA_VF_IB_PORT_GUID = 11,
-IFLA_VF_VLAN_LIST = 12,
-IFLA_VF_BROADCAST = 13,
-__IFLA_VF_MAX = 14,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_mac {
-pub vf: __u32,
-pub mac: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_broadcast {
-pub broadcast: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-}
-pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC;
-pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO;
-pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_31 {
-IFLA_VF_VLAN_INFO_UNSPEC = 0,
-IFLA_VF_VLAN_INFO = 1,
-__IFLA_VF_VLAN_INFO_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan_info {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-pub vlan_proto: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_tx_rate {
-pub vf: __u32,
-pub rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rate {
-pub vf: __u32,
-pub min_tx_rate: __u32,
-pub max_tx_rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_spoofchk {
-pub vf: __u32,
-pub setting: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_guid {
-pub vf: __u32,
-pub guid: __u64,
-}
-pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO;
-pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE;
-pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE;
-pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_32 {
-IFLA_VF_LINK_STATE_AUTO = 0,
-IFLA_VF_LINK_STATE_ENABLE = 1,
-IFLA_VF_LINK_STATE_DISABLE = 2,
-__IFLA_VF_LINK_STATE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_link_state {
-pub vf: __u32,
-pub link_state: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rss_query_en {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS;
-pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS;
-pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES;
-pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES;
-pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST;
-pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST;
-pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD;
-pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED;
-pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED;
-pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_33 {
-IFLA_VF_STATS_RX_PACKETS = 0,
-IFLA_VF_STATS_TX_PACKETS = 1,
-IFLA_VF_STATS_RX_BYTES = 2,
-IFLA_VF_STATS_TX_BYTES = 3,
-IFLA_VF_STATS_BROADCAST = 4,
-IFLA_VF_STATS_MULTICAST = 5,
-IFLA_VF_STATS_PAD = 6,
-IFLA_VF_STATS_RX_DROPPED = 7,
-IFLA_VF_STATS_TX_DROPPED = 8,
-__IFLA_VF_STATS_MAX = 9,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_trust {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC;
-pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT;
-pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_34 {
-IFLA_VF_PORT_UNSPEC = 0,
-IFLA_VF_PORT = 1,
-__IFLA_VF_PORT_MAX = 2,
-}
-pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC;
-pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF;
-pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE;
-pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE;
-pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID;
-pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID;
-pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST;
-pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE;
-pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_35 {
-IFLA_PORT_UNSPEC = 0,
-IFLA_PORT_VF = 1,
-IFLA_PORT_PROFILE = 2,
-IFLA_PORT_VSI_TYPE = 3,
-IFLA_PORT_INSTANCE_UUID = 4,
-IFLA_PORT_HOST_UUID = 5,
-IFLA_PORT_REQUEST = 6,
-IFLA_PORT_RESPONSE = 7,
-__IFLA_PORT_MAX = 8,
-}
-pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE;
-pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR;
-pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE;
-pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_36 {
-PORT_REQUEST_PREASSOCIATE = 0,
-PORT_REQUEST_PREASSOCIATE_RR = 1,
-PORT_REQUEST_ASSOCIATE = 2,
-PORT_REQUEST_DISASSOCIATE = 3,
-}
-pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS;
-pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT;
-pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID;
-pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION;
-pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION;
-pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC;
-pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS;
-pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS;
-pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID;
-pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE;
-pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_37 {
-PORT_VDP_RESPONSE_SUCCESS = 0,
-PORT_VDP_RESPONSE_INVALID_FORMAT = 1,
-PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES = 2,
-PORT_VDP_RESPONSE_UNUSED_VTID = 3,
-PORT_VDP_RESPONSE_VTID_VIOLATION = 4,
-PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION = 5,
-PORT_VDP_RESPONSE_OUT_OF_SYNC = 6,
-PORT_PROFILE_RESPONSE_SUCCESS = 256,
-PORT_PROFILE_RESPONSE_INPROGRESS = 257,
-PORT_PROFILE_RESPONSE_INVALID = 258,
-PORT_PROFILE_RESPONSE_BADSTATE = 259,
-PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260,
-PORT_PROFILE_RESPONSE_ERROR = 261,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_port_vsi {
-pub vsi_mgr_id: __u8,
-pub vsi_type_id: [__u8; 3usize],
-pub vsi_type_version: __u8,
-pub pad: [__u8; 3usize],
-}
-pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC;
-pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY;
-pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE;
-pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST;
-pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_38 {
-IFLA_IPOIB_UNSPEC = 0,
-IFLA_IPOIB_PKEY = 1,
-IFLA_IPOIB_MODE = 2,
-IFLA_IPOIB_UMCAST = 3,
-__IFLA_IPOIB_MAX = 4,
-}
-pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM;
-pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_39 {
-IPOIB_MODE_DATAGRAM = 0,
-IPOIB_MODE_CONNECTED = 1,
-}
-pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR;
-pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP;
-pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_40 {
-HSR_PROTOCOL_HSR = 0,
-HSR_PROTOCOL_PRP = 1,
-HSR_PROTOCOL_MAX = 2,
-}
-pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC;
-pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1;
-pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2;
-pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC;
-pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR;
-pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR;
-pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION;
-pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL;
-pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_41 {
-IFLA_HSR_UNSPEC = 0,
-IFLA_HSR_SLAVE1 = 1,
-IFLA_HSR_SLAVE2 = 2,
-IFLA_HSR_MULTICAST_SPEC = 3,
-IFLA_HSR_SUPERVISION_ADDR = 4,
-IFLA_HSR_SEQ_NR = 5,
-IFLA_HSR_VERSION = 6,
-IFLA_HSR_PROTOCOL = 7,
-__IFLA_HSR_MAX = 8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct if_stats_msg {
-pub family: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub ifindex: __u32,
-pub filter_mask: __u32,
-}
-pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC;
-pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64;
-pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS;
-pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE;
-pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS;
-pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC;
-pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_42 {
-IFLA_STATS_UNSPEC = 0,
-IFLA_STATS_LINK_64 = 1,
-IFLA_STATS_LINK_XSTATS = 2,
-IFLA_STATS_LINK_XSTATS_SLAVE = 3,
-IFLA_STATS_LINK_OFFLOAD_XSTATS = 4,
-IFLA_STATS_AF_SPEC = 5,
-__IFLA_STATS_MAX = 6,
-}
-pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC;
-pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS;
-pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_43 {
-IFLA_STATS_GETSET_UNSPEC = 0,
-IFLA_STATS_GET_FILTERS = 1,
-IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2,
-__IFLA_STATS_GETSET_MAX = 3,
-}
-pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC;
-pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE;
-pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND;
-pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_44 {
-LINK_XSTATS_TYPE_UNSPEC = 0,
-LINK_XSTATS_TYPE_BRIDGE = 1,
-LINK_XSTATS_TYPE_BOND = 2,
-__LINK_XSTATS_TYPE_MAX = 3,
-}
-pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO;
-pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_45 {
-IFLA_OFFLOAD_XSTATS_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_CPU_HIT = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO = 2,
-IFLA_OFFLOAD_XSTATS_L3_STATS = 3,
-__IFLA_OFFLOAD_XSTATS_MAX = 4,
-}
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED;
-pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_46 {
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2,
-__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3,
-}
-pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE;
-pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV;
-pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB;
-pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW;
-pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_47 {
-XDP_ATTACHED_NONE = 0,
-XDP_ATTACHED_DRV = 1,
-XDP_ATTACHED_SKB = 2,
-XDP_ATTACHED_HW = 3,
-XDP_ATTACHED_MULTI = 4,
-}
-pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC;
-pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD;
-pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED;
-pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS;
-pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID;
-pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID;
-pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID;
-pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID;
-pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD;
-pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_48 {
-IFLA_XDP_UNSPEC = 0,
-IFLA_XDP_FD = 1,
-IFLA_XDP_ATTACHED = 2,
-IFLA_XDP_FLAGS = 3,
-IFLA_XDP_PROG_ID = 4,
-IFLA_XDP_DRV_PROG_ID = 5,
-IFLA_XDP_SKB_PROG_ID = 6,
-IFLA_XDP_HW_PROG_ID = 7,
-IFLA_XDP_EXPECTED_FD = 8,
-__IFLA_XDP_MAX = 9,
-}
-pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE;
-pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT;
-pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES;
-pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER;
-pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS;
-pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND;
-pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_49 {
-IFLA_EVENT_NONE = 0,
-IFLA_EVENT_REBOOT = 1,
-IFLA_EVENT_FEATURES = 2,
-IFLA_EVENT_BONDING_FAILOVER = 3,
-IFLA_EVENT_NOTIFY_PEERS = 4,
-IFLA_EVENT_IGMP_RESEND = 5,
-IFLA_EVENT_BONDING_OPTIONS = 6,
-}
-pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC;
-pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER;
-pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP;
-pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE;
-pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI;
-pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR;
-pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST;
-pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE;
-pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES;
-pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES;
-pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_50 {
-IFLA_TUN_UNSPEC = 0,
-IFLA_TUN_OWNER = 1,
-IFLA_TUN_GROUP = 2,
-IFLA_TUN_TYPE = 3,
-IFLA_TUN_PI = 4,
-IFLA_TUN_VNET_HDR = 5,
-IFLA_TUN_PERSIST = 6,
-IFLA_TUN_MULTI_QUEUE = 7,
-IFLA_TUN_NUM_QUEUES = 8,
-IFLA_TUN_NUM_DISABLED_QUEUES = 9,
-__IFLA_TUN_MAX = 10,
-}
-pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC;
-pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID;
-pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS;
-pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_51 {
-IFLA_RMNET_UNSPEC = 0,
-IFLA_RMNET_MUX_ID = 1,
-IFLA_RMNET_FLAGS = 2,
-__IFLA_RMNET_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_rmnet_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC;
-pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET;
-pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_52 {
-IFLA_MCTP_UNSPEC = 0,
-IFLA_MCTP_NET = 1,
-__IFLA_MCTP_MAX = 2,
-}
-pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC;
-pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER;
-pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_53 {
-IFLA_DSA_UNSPEC = 0,
-IFLA_DSA_MASTER = 1,
-__IFLA_DSA_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifaddrmsg {
-pub ifa_family: __u8,
-pub ifa_prefixlen: __u8,
-pub ifa_flags: __u8,
-pub ifa_scope: __u8,
-pub ifa_index: __u32,
-}
-pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC;
-pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS;
-pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL;
-pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL;
-pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST;
-pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST;
-pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO;
-pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST;
-pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS;
-pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY;
-pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID;
-pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO;
-pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_54 {
-IFA_UNSPEC = 0,
-IFA_ADDRESS = 1,
-IFA_LOCAL = 2,
-IFA_LABEL = 3,
-IFA_BROADCAST = 4,
-IFA_ANYCAST = 5,
-IFA_CACHEINFO = 6,
-IFA_MULTICAST = 7,
-IFA_FLAGS = 8,
-IFA_RT_PRIORITY = 9,
-IFA_TARGET_NETNSID = 10,
-IFA_PROTO = 11,
-__IFA_MAX = 12,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifa_cacheinfo {
-pub ifa_prefered: __u32,
-pub ifa_valid: __u32,
-pub cstamp: __u32,
-pub tstamp: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndmsg {
-pub ndm_family: __u8,
-pub ndm_pad1: __u8,
-pub ndm_pad2: __u16,
-pub ndm_ifindex: __s32,
-pub ndm_state: __u16,
-pub ndm_flags: __u8,
-pub ndm_type: __u8,
-}
-pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC;
-pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST;
-pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR;
-pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO;
-pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES;
-pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN;
-pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT;
-pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI;
-pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX;
-pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER;
-pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID;
-pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI;
-pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL;
-pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID;
-pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS;
-pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT;
-pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK;
-pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK;
-pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_55 {
-NDA_UNSPEC = 0,
-NDA_DST = 1,
-NDA_LLADDR = 2,
-NDA_CACHEINFO = 3,
-NDA_PROBES = 4,
-NDA_VLAN = 5,
-NDA_PORT = 6,
-NDA_VNI = 7,
-NDA_IFINDEX = 8,
-NDA_MASTER = 9,
-NDA_LINK_NETNSID = 10,
-NDA_SRC_VNI = 11,
-NDA_PROTOCOL = 12,
-NDA_NH_ID = 13,
-NDA_FDB_EXT_ATTRS = 14,
-NDA_FLAGS_EXT = 15,
-NDA_NDM_STATE_MASK = 16,
-NDA_NDM_FLAGS_MASK = 17,
-__NDA_MAX = 18,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nda_cacheinfo {
-pub ndm_confirmed: __u32,
-pub ndm_used: __u32,
-pub ndm_updated: __u32,
-pub ndm_refcnt: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_stats {
-pub ndts_allocs: __u64,
-pub ndts_destroys: __u64,
-pub ndts_hash_grows: __u64,
-pub ndts_res_failed: __u64,
-pub ndts_lookups: __u64,
-pub ndts_hits: __u64,
-pub ndts_rcv_probes_mcast: __u64,
-pub ndts_rcv_probes_ucast: __u64,
-pub ndts_periodic_gc_runs: __u64,
-pub ndts_forced_gc_runs: __u64,
-pub ndts_table_fulls: __u64,
-}
-pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC;
-pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX;
-pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT;
-pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME;
-pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME;
-pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME;
-pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME;
-pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME;
-pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN;
-pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES;
-pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES;
-pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES;
-pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY;
-pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY;
-pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN;
-pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME;
-pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES;
-pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES;
-pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD;
-pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS;
-pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_56 {
-NDTPA_UNSPEC = 0,
-NDTPA_IFINDEX = 1,
-NDTPA_REFCNT = 2,
-NDTPA_REACHABLE_TIME = 3,
-NDTPA_BASE_REACHABLE_TIME = 4,
-NDTPA_RETRANS_TIME = 5,
-NDTPA_GC_STALETIME = 6,
-NDTPA_DELAY_PROBE_TIME = 7,
-NDTPA_QUEUE_LEN = 8,
-NDTPA_APP_PROBES = 9,
-NDTPA_UCAST_PROBES = 10,
-NDTPA_MCAST_PROBES = 11,
-NDTPA_ANYCAST_DELAY = 12,
-NDTPA_PROXY_DELAY = 13,
-NDTPA_PROXY_QLEN = 14,
-NDTPA_LOCKTIME = 15,
-NDTPA_QUEUE_LENBYTES = 16,
-NDTPA_MCAST_REPROBES = 17,
-NDTPA_PAD = 18,
-NDTPA_INTERVAL_PROBE_TIME_MS = 19,
-__NDTPA_MAX = 20,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndtmsg {
-pub ndtm_family: __u8,
-pub ndtm_pad1: __u8,
-pub ndtm_pad2: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_config {
-pub ndtc_key_len: __u16,
-pub ndtc_entry_size: __u16,
-pub ndtc_entries: __u32,
-pub ndtc_last_flush: __u32,
-pub ndtc_last_rand: __u32,
-pub ndtc_hash_rnd: __u32,
-pub ndtc_hash_mask: __u32,
-pub ndtc_hash_chain_gc: __u32,
-pub ndtc_proxy_qlen: __u32,
-}
-pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC;
-pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME;
-pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1;
-pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2;
-pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3;
-pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG;
-pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS;
-pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS;
-pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL;
-pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD;
-pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_57 {
-NDTA_UNSPEC = 0,
-NDTA_NAME = 1,
-NDTA_THRESH1 = 2,
-NDTA_THRESH2 = 3,
-NDTA_THRESH3 = 4,
-NDTA_CONFIG = 5,
-NDTA_PARMS = 6,
-NDTA_STATS = 7,
-NDTA_GC_INTERVAL = 8,
-NDTA_PAD = 9,
-__NDTA_MAX = 10,
-}
-pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT;
-pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_58 {
-FDB_NOTIFY_BIT = 1,
-FDB_NOTIFY_INACTIVE_BIT = 2,
-}
-pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC;
-pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY;
-pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH;
-pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_59 {
-NFEA_UNSPEC = 0,
-NFEA_ACTIVITY_NOTIFY = 1,
-NFEA_DONT_REFRESH = 2,
-__NFEA_MAX = 3,
-}
-pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK;
-pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK;
-pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK;
-pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR;
-pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR;
-pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR;
-pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE;
-pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE;
-pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE;
-pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH;
-pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH;
-pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH;
-pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE;
-pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE;
-pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE;
-pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC;
-pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC;
-pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC;
-pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS;
-pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS;
-pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS;
-pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER;
-pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER;
-pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER;
-pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION;
-pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION;
-pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION;
-pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX;
-pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST;
-pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST;
-pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL;
-pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL;
-pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL;
-pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT;
-pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL;
-pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL;
-pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL;
-pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB;
-pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB;
-pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF;
-pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF;
-pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF;
-pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB;
-pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB;
-pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB;
-pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID;
-pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID;
-pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID;
-pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS;
-pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS;
-pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS;
-pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT;
-pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN;
-pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN;
-pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN;
-pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP;
-pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP;
-pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP;
-pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP;
-pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP;
-pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP;
-pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN;
-pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN;
-pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN;
-pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET;
-pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET;
-pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET;
-pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL;
-pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL;
-pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL;
-pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_60 {
-RTM_BASE = 16,
-RTM_DELLINK = 17,
-RTM_GETLINK = 18,
-RTM_SETLINK = 19,
-RTM_NEWADDR = 20,
-RTM_DELADDR = 21,
-RTM_GETADDR = 22,
-RTM_NEWROUTE = 24,
-RTM_DELROUTE = 25,
-RTM_GETROUTE = 26,
-RTM_NEWNEIGH = 28,
-RTM_DELNEIGH = 29,
-RTM_GETNEIGH = 30,
-RTM_NEWRULE = 32,
-RTM_DELRULE = 33,
-RTM_GETRULE = 34,
-RTM_NEWQDISC = 36,
-RTM_DELQDISC = 37,
-RTM_GETQDISC = 38,
-RTM_NEWTCLASS = 40,
-RTM_DELTCLASS = 41,
-RTM_GETTCLASS = 42,
-RTM_NEWTFILTER = 44,
-RTM_DELTFILTER = 45,
-RTM_GETTFILTER = 46,
-RTM_NEWACTION = 48,
-RTM_DELACTION = 49,
-RTM_GETACTION = 50,
-RTM_NEWPREFIX = 52,
-RTM_GETMULTICAST = 58,
-RTM_GETANYCAST = 62,
-RTM_NEWNEIGHTBL = 64,
-RTM_GETNEIGHTBL = 66,
-RTM_SETNEIGHTBL = 67,
-RTM_NEWNDUSEROPT = 68,
-RTM_NEWADDRLABEL = 72,
-RTM_DELADDRLABEL = 73,
-RTM_GETADDRLABEL = 74,
-RTM_GETDCB = 78,
-RTM_SETDCB = 79,
-RTM_NEWNETCONF = 80,
-RTM_DELNETCONF = 81,
-RTM_GETNETCONF = 82,
-RTM_NEWMDB = 84,
-RTM_DELMDB = 85,
-RTM_GETMDB = 86,
-RTM_NEWNSID = 88,
-RTM_DELNSID = 89,
-RTM_GETNSID = 90,
-RTM_NEWSTATS = 92,
-RTM_GETSTATS = 94,
-RTM_SETSTATS = 95,
-RTM_NEWCACHEREPORT = 96,
-RTM_NEWCHAIN = 100,
-RTM_DELCHAIN = 101,
-RTM_GETCHAIN = 102,
-RTM_NEWNEXTHOP = 104,
-RTM_DELNEXTHOP = 105,
-RTM_GETNEXTHOP = 106,
-RTM_NEWLINKPROP = 108,
-RTM_DELLINKPROP = 109,
-RTM_GETLINKPROP = 110,
-RTM_NEWVLAN = 112,
-RTM_DELVLAN = 113,
-RTM_GETVLAN = 114,
-RTM_NEWNEXTHOPBUCKET = 116,
-RTM_DELNEXTHOPBUCKET = 117,
-RTM_GETNEXTHOPBUCKET = 118,
-RTM_NEWTUNNEL = 120,
-RTM_DELTUNNEL = 121,
-RTM_GETTUNNEL = 122,
-__RTM_MAX = 123,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtattr {
-pub rta_len: crate::ctypes::c_ushort,
-pub rta_type: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtmsg {
-pub rtm_family: crate::ctypes::c_uchar,
-pub rtm_dst_len: crate::ctypes::c_uchar,
-pub rtm_src_len: crate::ctypes::c_uchar,
-pub rtm_tos: crate::ctypes::c_uchar,
-pub rtm_table: crate::ctypes::c_uchar,
-pub rtm_protocol: crate::ctypes::c_uchar,
-pub rtm_scope: crate::ctypes::c_uchar,
-pub rtm_type: crate::ctypes::c_uchar,
-pub rtm_flags: crate::ctypes::c_uint,
-}
-pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC;
-pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST;
-pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL;
-pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST;
-pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST;
-pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST;
-pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE;
-pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE;
-pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT;
-pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW;
-pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT;
-pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE;
-pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_61 {
-RTN_UNSPEC = 0,
-RTN_UNICAST = 1,
-RTN_LOCAL = 2,
-RTN_BROADCAST = 3,
-RTN_ANYCAST = 4,
-RTN_MULTICAST = 5,
-RTN_BLACKHOLE = 6,
-RTN_UNREACHABLE = 7,
-RTN_PROHIBIT = 8,
-RTN_THROW = 9,
-RTN_NAT = 10,
-RTN_XRESOLVE = 11,
-__RTN_MAX = 12,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_scope_t {
-RT_SCOPE_UNIVERSE = 0,
-RT_SCOPE_SITE = 200,
-RT_SCOPE_LINK = 253,
-RT_SCOPE_HOST = 254,
-RT_SCOPE_NOWHERE = 255,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_class_t {
-RT_TABLE_UNSPEC = 0,
-RT_TABLE_COMPAT = 252,
-RT_TABLE_DEFAULT = 253,
-RT_TABLE_MAIN = 254,
-RT_TABLE_LOCAL = 255,
-RT_TABLE_MAX = 4294967295,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtattr_type_t {
-RTA_UNSPEC = 0,
-RTA_DST = 1,
-RTA_SRC = 2,
-RTA_IIF = 3,
-RTA_OIF = 4,
-RTA_GATEWAY = 5,
-RTA_PRIORITY = 6,
-RTA_PREFSRC = 7,
-RTA_METRICS = 8,
-RTA_MULTIPATH = 9,
-RTA_PROTOINFO = 10,
-RTA_FLOW = 11,
-RTA_CACHEINFO = 12,
-RTA_SESSION = 13,
-RTA_MP_ALGO = 14,
-RTA_TABLE = 15,
-RTA_MARK = 16,
-RTA_MFC_STATS = 17,
-RTA_VIA = 18,
-RTA_NEWDST = 19,
-RTA_PREF = 20,
-RTA_ENCAP_TYPE = 21,
-RTA_ENCAP = 22,
-RTA_EXPIRES = 23,
-RTA_PAD = 24,
-RTA_UID = 25,
-RTA_TTL_PROPAGATE = 26,
-RTA_IP_PROTO = 27,
-RTA_SPORT = 28,
-RTA_DPORT = 29,
-RTA_NH_ID = 30,
-__RTA_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnexthop {
-pub rtnh_len: crate::ctypes::c_ushort,
-pub rtnh_flags: crate::ctypes::c_uchar,
-pub rtnh_hops: crate::ctypes::c_uchar,
-pub rtnh_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rtvia {
-pub rtvia_family: __kernel_sa_family_t,
-pub rtvia_addr: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_cacheinfo {
-pub rta_clntref: __u32,
-pub rta_lastuse: __u32,
-pub rta_expires: __s32,
-pub rta_error: __u32,
-pub rta_used: __u32,
-pub rta_id: __u32,
-pub rta_ts: __u32,
-pub rta_tsage: __u32,
-}
-pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC;
-pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK;
-pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU;
-pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW;
-pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT;
-pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR;
-pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH;
-pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND;
-pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS;
-pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING;
-pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT;
-pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND;
-pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES;
-pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN;
-pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND;
-pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK;
-pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO;
-pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE;
-pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_62 {
-RTAX_UNSPEC = 0,
-RTAX_LOCK = 1,
-RTAX_MTU = 2,
-RTAX_WINDOW = 3,
-RTAX_RTT = 4,
-RTAX_RTTVAR = 5,
-RTAX_SSTHRESH = 6,
-RTAX_CWND = 7,
-RTAX_ADVMSS = 8,
-RTAX_REORDERING = 9,
-RTAX_HOPLIMIT = 10,
-RTAX_INITCWND = 11,
-RTAX_FEATURES = 12,
-RTAX_RTO_MIN = 13,
-RTAX_INITRWND = 14,
-RTAX_QUICKACK = 15,
-RTAX_CC_ALGO = 16,
-RTAX_FASTOPEN_NO_COOKIE = 17,
-__RTAX_MAX = 18,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rta_session {
-pub proto: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub u: rta_session__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union rta_session__bindgen_ty_1 {
-pub ports: rta_session__bindgen_ty_1__bindgen_ty_1,
-pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2,
-pub spi: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_1 {
-pub sport: __u16,
-pub dport: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_2 {
-pub type_: __u8,
-pub code: __u8,
-pub ident: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_mfc_stats {
-pub mfcs_packets: __u64,
-pub mfcs_bytes: __u64,
-pub mfcs_wrong_if: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtgenmsg {
-pub rtgen_family: crate::ctypes::c_uchar,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifinfomsg {
-pub ifi_family: crate::ctypes::c_uchar,
-pub __ifi_pad: crate::ctypes::c_uchar,
-pub ifi_type: crate::ctypes::c_ushort,
-pub ifi_index: crate::ctypes::c_int,
-pub ifi_flags: crate::ctypes::c_uint,
-pub ifi_change: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefixmsg {
-pub prefix_family: crate::ctypes::c_uchar,
-pub prefix_pad1: crate::ctypes::c_uchar,
-pub prefix_pad2: crate::ctypes::c_ushort,
-pub prefix_ifindex: crate::ctypes::c_int,
-pub prefix_type: crate::ctypes::c_uchar,
-pub prefix_len: crate::ctypes::c_uchar,
-pub prefix_flags: crate::ctypes::c_uchar,
-pub prefix_pad3: crate::ctypes::c_uchar,
-}
-pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC;
-pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS;
-pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO;
-pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_63 {
-PREFIX_UNSPEC = 0,
-PREFIX_ADDRESS = 1,
-PREFIX_CACHEINFO = 2,
-__PREFIX_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefix_cacheinfo {
-pub preferred_time: __u32,
-pub valid_time: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcmsg {
-pub tcm_family: crate::ctypes::c_uchar,
-pub tcm__pad1: crate::ctypes::c_uchar,
-pub tcm__pad2: crate::ctypes::c_ushort,
-pub tcm_ifindex: crate::ctypes::c_int,
-pub tcm_handle: __u32,
-pub tcm_parent: __u32,
-pub tcm_info: __u32,
-}
-pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC;
-pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND;
-pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS;
-pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS;
-pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS;
-pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE;
-pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT;
-pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2;
-pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB;
-pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD;
-pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE;
-pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN;
-pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD;
-pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK;
-pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK;
-pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS;
-pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_64 {
-TCA_UNSPEC = 0,
-TCA_KIND = 1,
-TCA_OPTIONS = 2,
-TCA_STATS = 3,
-TCA_XSTATS = 4,
-TCA_RATE = 5,
-TCA_FCNT = 6,
-TCA_STATS2 = 7,
-TCA_STAB = 8,
-TCA_PAD = 9,
-TCA_DUMP_INVISIBLE = 10,
-TCA_CHAIN = 11,
-TCA_HW_OFFLOAD = 12,
-TCA_INGRESS_BLOCK = 13,
-TCA_EGRESS_BLOCK = 14,
-TCA_DUMP_FLAGS = 15,
-__TCA_MAX = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nduseroptmsg {
-pub nduseropt_family: crate::ctypes::c_uchar,
-pub nduseropt_pad1: crate::ctypes::c_uchar,
-pub nduseropt_opts_len: crate::ctypes::c_ushort,
-pub nduseropt_ifindex: crate::ctypes::c_int,
-pub nduseropt_icmp_type: __u8,
-pub nduseropt_icmp_code: __u8,
-pub nduseropt_pad2: crate::ctypes::c_ushort,
-pub nduseropt_pad3: crate::ctypes::c_uint,
-}
-pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC;
-pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR;
-pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_65 {
-NDUSEROPT_UNSPEC = 0,
-NDUSEROPT_SRCADDR = 1,
-__NDUSEROPT_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtnetlink_groups {
-RTNLGRP_NONE = 0,
-RTNLGRP_LINK = 1,
-RTNLGRP_NOTIFY = 2,
-RTNLGRP_NEIGH = 3,
-RTNLGRP_TC = 4,
-RTNLGRP_IPV4_IFADDR = 5,
-RTNLGRP_IPV4_MROUTE = 6,
-RTNLGRP_IPV4_ROUTE = 7,
-RTNLGRP_IPV4_RULE = 8,
-RTNLGRP_IPV6_IFADDR = 9,
-RTNLGRP_IPV6_MROUTE = 10,
-RTNLGRP_IPV6_ROUTE = 11,
-RTNLGRP_IPV6_IFINFO = 12,
-RTNLGRP_DECnet_IFADDR = 13,
-RTNLGRP_NOP2 = 14,
-RTNLGRP_DECnet_ROUTE = 15,
-RTNLGRP_DECnet_RULE = 16,
-RTNLGRP_NOP4 = 17,
-RTNLGRP_IPV6_PREFIX = 18,
-RTNLGRP_IPV6_RULE = 19,
-RTNLGRP_ND_USEROPT = 20,
-RTNLGRP_PHONET_IFADDR = 21,
-RTNLGRP_PHONET_ROUTE = 22,
-RTNLGRP_DCB = 23,
-RTNLGRP_IPV4_NETCONF = 24,
-RTNLGRP_IPV6_NETCONF = 25,
-RTNLGRP_MDB = 26,
-RTNLGRP_MPLS_ROUTE = 27,
-RTNLGRP_NSID = 28,
-RTNLGRP_MPLS_NETCONF = 29,
-RTNLGRP_IPV4_MROUTE_R = 30,
-RTNLGRP_IPV6_MROUTE_R = 31,
-RTNLGRP_NEXTHOP = 32,
-RTNLGRP_BRVLAN = 33,
-RTNLGRP_MCTP_IFADDR = 34,
-RTNLGRP_TUNNEL = 35,
-RTNLGRP_STATS = 36,
-__RTNLGRP_MAX = 37,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcamsg {
-pub tca_family: crate::ctypes::c_uchar,
-pub tca__pad1: crate::ctypes::c_uchar,
-pub tca__pad2: crate::ctypes::c_ushort,
-}
-pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC;
-pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB;
-pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS;
-pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT;
-pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA;
-pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_66 {
-TCA_ROOT_UNSPEC = 0,
-TCA_ROOT_TAB = 1,
-TCA_ROOT_FLAGS = 2,
-TCA_ROOT_COUNT = 3,
-TCA_ROOT_TIME_DELTA = 4,
-__TCA_ROOT_MAX = 5,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/x86_64/errno.rs b/vendor/linux-raw-sys-0.3.2/src/x86_64/errno.rs
deleted file mode 100644
index 8c5620d74..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/x86_64/errno.rs
+++ /dev/null
@@ -1,135 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const EPERM: u32 = 1;
-pub const ENOENT: u32 = 2;
-pub const ESRCH: u32 = 3;
-pub const EINTR: u32 = 4;
-pub const EIO: u32 = 5;
-pub const ENXIO: u32 = 6;
-pub const E2BIG: u32 = 7;
-pub const ENOEXEC: u32 = 8;
-pub const EBADF: u32 = 9;
-pub const ECHILD: u32 = 10;
-pub const EAGAIN: u32 = 11;
-pub const ENOMEM: u32 = 12;
-pub const EACCES: u32 = 13;
-pub const EFAULT: u32 = 14;
-pub const ENOTBLK: u32 = 15;
-pub const EBUSY: u32 = 16;
-pub const EEXIST: u32 = 17;
-pub const EXDEV: u32 = 18;
-pub const ENODEV: u32 = 19;
-pub const ENOTDIR: u32 = 20;
-pub const EISDIR: u32 = 21;
-pub const EINVAL: u32 = 22;
-pub const ENFILE: u32 = 23;
-pub const EMFILE: u32 = 24;
-pub const ENOTTY: u32 = 25;
-pub const ETXTBSY: u32 = 26;
-pub const EFBIG: u32 = 27;
-pub const ENOSPC: u32 = 28;
-pub const ESPIPE: u32 = 29;
-pub const EROFS: u32 = 30;
-pub const EMLINK: u32 = 31;
-pub const EPIPE: u32 = 32;
-pub const EDOM: u32 = 33;
-pub const ERANGE: u32 = 34;
-pub const EDEADLK: u32 = 35;
-pub const ENAMETOOLONG: u32 = 36;
-pub const ENOLCK: u32 = 37;
-pub const ENOSYS: u32 = 38;
-pub const ENOTEMPTY: u32 = 39;
-pub const ELOOP: u32 = 40;
-pub const EWOULDBLOCK: u32 = 11;
-pub const ENOMSG: u32 = 42;
-pub const EIDRM: u32 = 43;
-pub const ECHRNG: u32 = 44;
-pub const EL2NSYNC: u32 = 45;
-pub const EL3HLT: u32 = 46;
-pub const EL3RST: u32 = 47;
-pub const ELNRNG: u32 = 48;
-pub const EUNATCH: u32 = 49;
-pub const ENOCSI: u32 = 50;
-pub const EL2HLT: u32 = 51;
-pub const EBADE: u32 = 52;
-pub const EBADR: u32 = 53;
-pub const EXFULL: u32 = 54;
-pub const ENOANO: u32 = 55;
-pub const EBADRQC: u32 = 56;
-pub const EBADSLT: u32 = 57;
-pub const EDEADLOCK: u32 = 35;
-pub const EBFONT: u32 = 59;
-pub const ENOSTR: u32 = 60;
-pub const ENODATA: u32 = 61;
-pub const ETIME: u32 = 62;
-pub const ENOSR: u32 = 63;
-pub const ENONET: u32 = 64;
-pub const ENOPKG: u32 = 65;
-pub const EREMOTE: u32 = 66;
-pub const ENOLINK: u32 = 67;
-pub const EADV: u32 = 68;
-pub const ESRMNT: u32 = 69;
-pub const ECOMM: u32 = 70;
-pub const EPROTO: u32 = 71;
-pub const EMULTIHOP: u32 = 72;
-pub const EDOTDOT: u32 = 73;
-pub const EBADMSG: u32 = 74;
-pub const EOVERFLOW: u32 = 75;
-pub const ENOTUNIQ: u32 = 76;
-pub const EBADFD: u32 = 77;
-pub const EREMCHG: u32 = 78;
-pub const ELIBACC: u32 = 79;
-pub const ELIBBAD: u32 = 80;
-pub const ELIBSCN: u32 = 81;
-pub const ELIBMAX: u32 = 82;
-pub const ELIBEXEC: u32 = 83;
-pub const EILSEQ: u32 = 84;
-pub const ERESTART: u32 = 85;
-pub const ESTRPIPE: u32 = 86;
-pub const EUSERS: u32 = 87;
-pub const ENOTSOCK: u32 = 88;
-pub const EDESTADDRREQ: u32 = 89;
-pub const EMSGSIZE: u32 = 90;
-pub const EPROTOTYPE: u32 = 91;
-pub const ENOPROTOOPT: u32 = 92;
-pub const EPROTONOSUPPORT: u32 = 93;
-pub const ESOCKTNOSUPPORT: u32 = 94;
-pub const EOPNOTSUPP: u32 = 95;
-pub const EPFNOSUPPORT: u32 = 96;
-pub const EAFNOSUPPORT: u32 = 97;
-pub const EADDRINUSE: u32 = 98;
-pub const EADDRNOTAVAIL: u32 = 99;
-pub const ENETDOWN: u32 = 100;
-pub const ENETUNREACH: u32 = 101;
-pub const ENETRESET: u32 = 102;
-pub const ECONNABORTED: u32 = 103;
-pub const ECONNRESET: u32 = 104;
-pub const ENOBUFS: u32 = 105;
-pub const EISCONN: u32 = 106;
-pub const ENOTCONN: u32 = 107;
-pub const ESHUTDOWN: u32 = 108;
-pub const ETOOMANYREFS: u32 = 109;
-pub const ETIMEDOUT: u32 = 110;
-pub const ECONNREFUSED: u32 = 111;
-pub const EHOSTDOWN: u32 = 112;
-pub const EHOSTUNREACH: u32 = 113;
-pub const EALREADY: u32 = 114;
-pub const EINPROGRESS: u32 = 115;
-pub const ESTALE: u32 = 116;
-pub const EUCLEAN: u32 = 117;
-pub const ENOTNAM: u32 = 118;
-pub const ENAVAIL: u32 = 119;
-pub const EISNAM: u32 = 120;
-pub const EREMOTEIO: u32 = 121;
-pub const EDQUOT: u32 = 122;
-pub const ENOMEDIUM: u32 = 123;
-pub const EMEDIUMTYPE: u32 = 124;
-pub const ECANCELED: u32 = 125;
-pub const ENOKEY: u32 = 126;
-pub const EKEYEXPIRED: u32 = 127;
-pub const EKEYREVOKED: u32 = 128;
-pub const EKEYREJECTED: u32 = 129;
-pub const EOWNERDEAD: u32 = 130;
-pub const ENOTRECOVERABLE: u32 = 131;
-pub const ERFKILL: u32 = 132;
-pub const EHWPOISON: u32 = 133;
diff --git a/vendor/linux-raw-sys-0.3.2/src/x86_64/general.rs b/vendor/linux-raw-sys-0.3.2/src/x86_64/general.rs
deleted file mode 100644
index 10eefa066..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/x86_64/general.rs
+++ /dev/null
@@ -1,5320 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
-pub struct __BindgenBitfieldUnit<Storage> {
-storage: Storage,
-}
-impl<Storage> __BindgenBitfieldUnit<Storage> {
-#[inline]
-pub const fn new(storage: Storage) -> Self {
-Self { storage }
-}
-}
-impl<Storage> __BindgenBitfieldUnit<Storage>
-where
-Storage: AsRef<[u8]> + AsMut<[u8]>,
-{
-#[inline]
-pub fn get_bit(&self, index: usize) -> bool {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = self.storage.as_ref()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-byte & mask == mask
-}
-#[inline]
-pub fn set_bit(&mut self, index: usize, val: bool) {
-debug_assert!(index / 8 < self.storage.as_ref().len());
-let byte_index = index / 8;
-let byte = &mut self.storage.as_mut()[byte_index];
-let bit_index = if cfg!(target_endian = "big") { 7 - (index % 8) } else { index % 8 };
-let mask = 1 << bit_index;
-if val {
-*byte |= mask;
-} else {
-*byte &= !mask;
-}
-}
-#[inline]
-pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-let mut val = 0;
-for i in 0..(bit_width as usize) {
-if self.get_bit(i + bit_offset) {
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-val |= 1 << index;
-}
-}
-val
-}
-#[inline]
-pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
-debug_assert!(bit_width <= 64);
-debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
-debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
-for i in 0..(bit_width as usize) {
-let mask = 1 << i;
-let val_bit_is_set = val & mask == mask;
-let index = if cfg!(target_endian = "big") { bit_width as usize - 1 - i } else { i };
-self.set_bit(index + bit_offset, val_bit_is_set);
-}
-}
-}
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-#[repr(C)]
-pub struct __BindgenUnionField<T>(::core::marker::PhantomData<T>);
-impl<T> __BindgenUnionField<T> {
-#[inline]
-pub const fn new() -> Self {
-__BindgenUnionField(::core::marker::PhantomData)
-}
-#[inline]
-pub unsafe fn as_ref(&self) -> &T {
-::core::mem::transmute(self)
-}
-#[inline]
-pub unsafe fn as_mut(&mut self) -> &mut T {
-::core::mem::transmute(self)
-}
-}
-impl<T> ::core::default::Default for __BindgenUnionField<T> {
-#[inline]
-fn default() -> Self {
-Self::new()
-}
-}
-impl<T> ::core::clone::Clone for __BindgenUnionField<T> {
-#[inline]
-fn clone(&self) -> Self {
-Self::new()
-}
-}
-impl<T> ::core::marker::Copy for __BindgenUnionField<T> {}
-impl<T> ::core::fmt::Debug for __BindgenUnionField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__BindgenUnionField")
-}
-}
-impl<T> ::core::hash::Hash for __BindgenUnionField<T> {
-fn hash<H: ::core::hash::Hasher>(&self, _state: &mut H) {}
-}
-impl<T> ::core::cmp::PartialEq for __BindgenUnionField<T> {
-fn eq(&self, _other: &__BindgenUnionField<T>) -> bool {
-true
-}
-}
-impl<T> ::core::cmp::Eq for __BindgenUnionField<T> {}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const AT_SYSINFO_EHDR: u32 = 33;
-pub const AT_VECTOR_SIZE_ARCH: u32 = 3;
-pub const AT_NULL: u32 = 0;
-pub const AT_IGNORE: u32 = 1;
-pub const AT_EXECFD: u32 = 2;
-pub const AT_PHDR: u32 = 3;
-pub const AT_PHENT: u32 = 4;
-pub const AT_PHNUM: u32 = 5;
-pub const AT_PAGESZ: u32 = 6;
-pub const AT_BASE: u32 = 7;
-pub const AT_FLAGS: u32 = 8;
-pub const AT_ENTRY: u32 = 9;
-pub const AT_NOTELF: u32 = 10;
-pub const AT_UID: u32 = 11;
-pub const AT_EUID: u32 = 12;
-pub const AT_GID: u32 = 13;
-pub const AT_EGID: u32 = 14;
-pub const AT_PLATFORM: u32 = 15;
-pub const AT_HWCAP: u32 = 16;
-pub const AT_CLKTCK: u32 = 17;
-pub const AT_SECURE: u32 = 23;
-pub const AT_BASE_PLATFORM: u32 = 24;
-pub const AT_RANDOM: u32 = 25;
-pub const AT_HWCAP2: u32 = 26;
-pub const AT_EXECFN: u32 = 31;
-pub const AT_MINSIGSTKSZ: u32 = 51;
-pub const __BITS_PER_LONG: u32 = 64;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const _LINUX_CAPABILITY_VERSION_1: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S_1: u32 = 1;
-pub const _LINUX_CAPABILITY_VERSION_2: u32 = 537333798;
-pub const _LINUX_CAPABILITY_U32S_2: u32 = 2;
-pub const _LINUX_CAPABILITY_VERSION_3: u32 = 537396514;
-pub const _LINUX_CAPABILITY_U32S_3: u32 = 2;
-pub const VFS_CAP_REVISION_MASK: u32 = 4278190080;
-pub const VFS_CAP_REVISION_SHIFT: u32 = 24;
-pub const VFS_CAP_FLAGS_MASK: i64 = -4278190081;
-pub const VFS_CAP_FLAGS_EFFECTIVE: u32 = 1;
-pub const VFS_CAP_REVISION_1: u32 = 16777216;
-pub const VFS_CAP_U32_1: u32 = 1;
-pub const VFS_CAP_REVISION_2: u32 = 33554432;
-pub const VFS_CAP_U32_2: u32 = 2;
-pub const VFS_CAP_REVISION_3: u32 = 50331648;
-pub const VFS_CAP_U32_3: u32 = 2;
-pub const VFS_CAP_U32: u32 = 2;
-pub const VFS_CAP_REVISION: u32 = 50331648;
-pub const _LINUX_CAPABILITY_VERSION: u32 = 429392688;
-pub const _LINUX_CAPABILITY_U32S: u32 = 1;
-pub const CAP_CHOWN: u32 = 0;
-pub const CAP_DAC_OVERRIDE: u32 = 1;
-pub const CAP_DAC_READ_SEARCH: u32 = 2;
-pub const CAP_FOWNER: u32 = 3;
-pub const CAP_FSETID: u32 = 4;
-pub const CAP_KILL: u32 = 5;
-pub const CAP_SETGID: u32 = 6;
-pub const CAP_SETUID: u32 = 7;
-pub const CAP_SETPCAP: u32 = 8;
-pub const CAP_LINUX_IMMUTABLE: u32 = 9;
-pub const CAP_NET_BIND_SERVICE: u32 = 10;
-pub const CAP_NET_BROADCAST: u32 = 11;
-pub const CAP_NET_ADMIN: u32 = 12;
-pub const CAP_NET_RAW: u32 = 13;
-pub const CAP_IPC_LOCK: u32 = 14;
-pub const CAP_IPC_OWNER: u32 = 15;
-pub const CAP_SYS_MODULE: u32 = 16;
-pub const CAP_SYS_RAWIO: u32 = 17;
-pub const CAP_SYS_CHROOT: u32 = 18;
-pub const CAP_SYS_PTRACE: u32 = 19;
-pub const CAP_SYS_PACCT: u32 = 20;
-pub const CAP_SYS_ADMIN: u32 = 21;
-pub const CAP_SYS_BOOT: u32 = 22;
-pub const CAP_SYS_NICE: u32 = 23;
-pub const CAP_SYS_RESOURCE: u32 = 24;
-pub const CAP_SYS_TIME: u32 = 25;
-pub const CAP_SYS_TTY_CONFIG: u32 = 26;
-pub const CAP_MKNOD: u32 = 27;
-pub const CAP_LEASE: u32 = 28;
-pub const CAP_AUDIT_WRITE: u32 = 29;
-pub const CAP_AUDIT_CONTROL: u32 = 30;
-pub const CAP_SETFCAP: u32 = 31;
-pub const CAP_MAC_OVERRIDE: u32 = 32;
-pub const CAP_MAC_ADMIN: u32 = 33;
-pub const CAP_SYSLOG: u32 = 34;
-pub const CAP_WAKE_ALARM: u32 = 35;
-pub const CAP_BLOCK_SUSPEND: u32 = 36;
-pub const CAP_AUDIT_READ: u32 = 37;
-pub const CAP_PERFMON: u32 = 38;
-pub const CAP_BPF: u32 = 39;
-pub const CAP_CHECKPOINT_RESTORE: u32 = 40;
-pub const CAP_LAST_CAP: u32 = 40;
-pub const O_ACCMODE: u32 = 3;
-pub const O_RDONLY: u32 = 0;
-pub const O_WRONLY: u32 = 1;
-pub const O_RDWR: u32 = 2;
-pub const O_CREAT: u32 = 64;
-pub const O_EXCL: u32 = 128;
-pub const O_NOCTTY: u32 = 256;
-pub const O_TRUNC: u32 = 512;
-pub const O_APPEND: u32 = 1024;
-pub const O_NONBLOCK: u32 = 2048;
-pub const O_DSYNC: u32 = 4096;
-pub const FASYNC: u32 = 8192;
-pub const O_DIRECT: u32 = 16384;
-pub const O_LARGEFILE: u32 = 32768;
-pub const O_DIRECTORY: u32 = 65536;
-pub const O_NOFOLLOW: u32 = 131072;
-pub const O_NOATIME: u32 = 262144;
-pub const O_CLOEXEC: u32 = 524288;
-pub const __O_SYNC: u32 = 1048576;
-pub const O_SYNC: u32 = 1052672;
-pub const O_PATH: u32 = 2097152;
-pub const __O_TMPFILE: u32 = 4194304;
-pub const O_TMPFILE: u32 = 4259840;
-pub const O_TMPFILE_MASK: u32 = 4259904;
-pub const O_NDELAY: u32 = 2048;
-pub const F_DUPFD: u32 = 0;
-pub const F_GETFD: u32 = 1;
-pub const F_SETFD: u32 = 2;
-pub const F_GETFL: u32 = 3;
-pub const F_SETFL: u32 = 4;
-pub const F_GETLK: u32 = 5;
-pub const F_SETLK: u32 = 6;
-pub const F_SETLKW: u32 = 7;
-pub const F_SETOWN: u32 = 8;
-pub const F_GETOWN: u32 = 9;
-pub const F_SETSIG: u32 = 10;
-pub const F_GETSIG: u32 = 11;
-pub const F_SETOWN_EX: u32 = 15;
-pub const F_GETOWN_EX: u32 = 16;
-pub const F_GETOWNER_UIDS: u32 = 17;
-pub const F_OFD_GETLK: u32 = 36;
-pub const F_OFD_SETLK: u32 = 37;
-pub const F_OFD_SETLKW: u32 = 38;
-pub const F_OWNER_TID: u32 = 0;
-pub const F_OWNER_PID: u32 = 1;
-pub const F_OWNER_PGRP: u32 = 2;
-pub const FD_CLOEXEC: u32 = 1;
-pub const F_RDLCK: u32 = 0;
-pub const F_WRLCK: u32 = 1;
-pub const F_UNLCK: u32 = 2;
-pub const F_EXLCK: u32 = 4;
-pub const F_SHLCK: u32 = 8;
-pub const LOCK_SH: u32 = 1;
-pub const LOCK_EX: u32 = 2;
-pub const LOCK_NB: u32 = 4;
-pub const LOCK_UN: u32 = 8;
-pub const LOCK_MAND: u32 = 32;
-pub const LOCK_READ: u32 = 64;
-pub const LOCK_WRITE: u32 = 128;
-pub const LOCK_RW: u32 = 192;
-pub const F_LINUX_SPECIFIC_BASE: u32 = 1024;
-pub const RESOLVE_NO_XDEV: u32 = 1;
-pub const RESOLVE_NO_MAGICLINKS: u32 = 2;
-pub const RESOLVE_NO_SYMLINKS: u32 = 4;
-pub const RESOLVE_BENEATH: u32 = 8;
-pub const RESOLVE_IN_ROOT: u32 = 16;
-pub const RESOLVE_CACHED: u32 = 32;
-pub const F_SETLEASE: u32 = 1024;
-pub const F_GETLEASE: u32 = 1025;
-pub const F_CANCELLK: u32 = 1029;
-pub const F_DUPFD_CLOEXEC: u32 = 1030;
-pub const F_NOTIFY: u32 = 1026;
-pub const F_SETPIPE_SZ: u32 = 1031;
-pub const F_GETPIPE_SZ: u32 = 1032;
-pub const F_ADD_SEALS: u32 = 1033;
-pub const F_GET_SEALS: u32 = 1034;
-pub const F_SEAL_SEAL: u32 = 1;
-pub const F_SEAL_SHRINK: u32 = 2;
-pub const F_SEAL_GROW: u32 = 4;
-pub const F_SEAL_WRITE: u32 = 8;
-pub const F_SEAL_FUTURE_WRITE: u32 = 16;
-pub const F_GET_RW_HINT: u32 = 1035;
-pub const F_SET_RW_HINT: u32 = 1036;
-pub const F_GET_FILE_RW_HINT: u32 = 1037;
-pub const F_SET_FILE_RW_HINT: u32 = 1038;
-pub const RWH_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const RWH_WRITE_LIFE_NONE: u32 = 1;
-pub const RWH_WRITE_LIFE_SHORT: u32 = 2;
-pub const RWH_WRITE_LIFE_MEDIUM: u32 = 3;
-pub const RWH_WRITE_LIFE_LONG: u32 = 4;
-pub const RWH_WRITE_LIFE_EXTREME: u32 = 5;
-pub const RWF_WRITE_LIFE_NOT_SET: u32 = 0;
-pub const DN_ACCESS: u32 = 1;
-pub const DN_MODIFY: u32 = 2;
-pub const DN_CREATE: u32 = 4;
-pub const DN_DELETE: u32 = 8;
-pub const DN_RENAME: u32 = 16;
-pub const DN_ATTRIB: u32 = 32;
-pub const DN_MULTISHOT: u32 = 2147483648;
-pub const AT_FDCWD: i32 = -100;
-pub const AT_SYMLINK_NOFOLLOW: u32 = 256;
-pub const AT_EACCESS: u32 = 512;
-pub const AT_REMOVEDIR: u32 = 512;
-pub const AT_SYMLINK_FOLLOW: u32 = 1024;
-pub const AT_NO_AUTOMOUNT: u32 = 2048;
-pub const AT_EMPTY_PATH: u32 = 4096;
-pub const AT_STATX_SYNC_TYPE: u32 = 24576;
-pub const AT_STATX_SYNC_AS_STAT: u32 = 0;
-pub const AT_STATX_FORCE_SYNC: u32 = 8192;
-pub const AT_STATX_DONT_SYNC: u32 = 16384;
-pub const AT_RECURSIVE: u32 = 32768;
-pub const EPOLL_CLOEXEC: u32 = 524288;
-pub const EPOLL_CTL_ADD: u32 = 1;
-pub const EPOLL_CTL_DEL: u32 = 2;
-pub const EPOLL_CTL_MOD: u32 = 3;
-pub const POSIX_FADV_NORMAL: u32 = 0;
-pub const POSIX_FADV_RANDOM: u32 = 1;
-pub const POSIX_FADV_SEQUENTIAL: u32 = 2;
-pub const POSIX_FADV_WILLNEED: u32 = 3;
-pub const POSIX_FADV_DONTNEED: u32 = 4;
-pub const POSIX_FADV_NOREUSE: u32 = 5;
-pub const FALLOC_FL_KEEP_SIZE: u32 = 1;
-pub const FALLOC_FL_PUNCH_HOLE: u32 = 2;
-pub const FALLOC_FL_NO_HIDE_STALE: u32 = 4;
-pub const FALLOC_FL_COLLAPSE_RANGE: u32 = 8;
-pub const FALLOC_FL_ZERO_RANGE: u32 = 16;
-pub const FALLOC_FL_INSERT_RANGE: u32 = 32;
-pub const FALLOC_FL_UNSHARE_RANGE: u32 = 64;
-pub const NR_OPEN: u32 = 1024;
-pub const NGROUPS_MAX: u32 = 65536;
-pub const ARG_MAX: u32 = 131072;
-pub const LINK_MAX: u32 = 127;
-pub const MAX_CANON: u32 = 255;
-pub const MAX_INPUT: u32 = 255;
-pub const NAME_MAX: u32 = 255;
-pub const PATH_MAX: u32 = 4096;
-pub const PIPE_BUF: u32 = 4096;
-pub const XATTR_NAME_MAX: u32 = 255;
-pub const XATTR_SIZE_MAX: u32 = 65536;
-pub const XATTR_LIST_MAX: u32 = 65536;
-pub const RTSIG_MAX: u32 = 32;
-pub const _IOC_NRBITS: u32 = 8;
-pub const _IOC_TYPEBITS: u32 = 8;
-pub const _IOC_SIZEBITS: u32 = 14;
-pub const _IOC_DIRBITS: u32 = 2;
-pub const _IOC_NRMASK: u32 = 255;
-pub const _IOC_TYPEMASK: u32 = 255;
-pub const _IOC_SIZEMASK: u32 = 16383;
-pub const _IOC_DIRMASK: u32 = 3;
-pub const _IOC_NRSHIFT: u32 = 0;
-pub const _IOC_TYPESHIFT: u32 = 8;
-pub const _IOC_SIZESHIFT: u32 = 16;
-pub const _IOC_DIRSHIFT: u32 = 30;
-pub const _IOC_NONE: u32 = 0;
-pub const _IOC_WRITE: u32 = 1;
-pub const _IOC_READ: u32 = 2;
-pub const IOC_IN: u32 = 1073741824;
-pub const IOC_OUT: u32 = 2147483648;
-pub const IOC_INOUT: u32 = 3221225472;
-pub const IOCSIZE_MASK: u32 = 1073676288;
-pub const IOCSIZE_SHIFT: u32 = 16;
-pub const FSCRYPT_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FSCRYPT_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FSCRYPT_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FSCRYPT_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FSCRYPT_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FSCRYPT_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64: u32 = 8;
-pub const FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32: u32 = 16;
-pub const FSCRYPT_MODE_AES_256_XTS: u32 = 1;
-pub const FSCRYPT_MODE_AES_256_CTS: u32 = 4;
-pub const FSCRYPT_MODE_AES_128_CBC: u32 = 5;
-pub const FSCRYPT_MODE_AES_128_CTS: u32 = 6;
-pub const FSCRYPT_MODE_SM4_XTS: u32 = 7;
-pub const FSCRYPT_MODE_SM4_CTS: u32 = 8;
-pub const FSCRYPT_MODE_ADIANTUM: u32 = 9;
-pub const FSCRYPT_MODE_AES_256_HCTR2: u32 = 10;
-pub const FSCRYPT_POLICY_V1: u32 = 0;
-pub const FSCRYPT_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FSCRYPT_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FSCRYPT_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FSCRYPT_MAX_KEY_SIZE: u32 = 64;
-pub const FSCRYPT_POLICY_V2: u32 = 2;
-pub const FSCRYPT_KEY_IDENTIFIER_SIZE: u32 = 16;
-pub const FSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR: u32 = 1;
-pub const FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER: u32 = 2;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY: u32 = 1;
-pub const FSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_ABSENT: u32 = 1;
-pub const FSCRYPT_KEY_STATUS_PRESENT: u32 = 2;
-pub const FSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED: u32 = 3;
-pub const FSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF: u32 = 1;
-pub const FS_KEY_DESCRIPTOR_SIZE: u32 = 8;
-pub const FS_POLICY_FLAGS_PAD_4: u32 = 0;
-pub const FS_POLICY_FLAGS_PAD_8: u32 = 1;
-pub const FS_POLICY_FLAGS_PAD_16: u32 = 2;
-pub const FS_POLICY_FLAGS_PAD_32: u32 = 3;
-pub const FS_POLICY_FLAGS_PAD_MASK: u32 = 3;
-pub const FS_POLICY_FLAG_DIRECT_KEY: u32 = 4;
-pub const FS_POLICY_FLAGS_VALID: u32 = 7;
-pub const FS_ENCRYPTION_MODE_INVALID: u32 = 0;
-pub const FS_ENCRYPTION_MODE_AES_256_XTS: u32 = 1;
-pub const FS_ENCRYPTION_MODE_AES_256_GCM: u32 = 2;
-pub const FS_ENCRYPTION_MODE_AES_256_CBC: u32 = 3;
-pub const FS_ENCRYPTION_MODE_AES_256_CTS: u32 = 4;
-pub const FS_ENCRYPTION_MODE_AES_128_CBC: u32 = 5;
-pub const FS_ENCRYPTION_MODE_AES_128_CTS: u32 = 6;
-pub const FS_ENCRYPTION_MODE_ADIANTUM: u32 = 9;
-pub const FS_KEY_DESC_PREFIX: &[u8; 9usize] = b"fscrypt:\0";
-pub const FS_KEY_DESC_PREFIX_SIZE: u32 = 8;
-pub const FS_MAX_KEY_SIZE: u32 = 64;
-pub const MS_RDONLY: u32 = 1;
-pub const MS_NOSUID: u32 = 2;
-pub const MS_NODEV: u32 = 4;
-pub const MS_NOEXEC: u32 = 8;
-pub const MS_SYNCHRONOUS: u32 = 16;
-pub const MS_REMOUNT: u32 = 32;
-pub const MS_MANDLOCK: u32 = 64;
-pub const MS_DIRSYNC: u32 = 128;
-pub const MS_NOSYMFOLLOW: u32 = 256;
-pub const MS_NOATIME: u32 = 1024;
-pub const MS_NODIRATIME: u32 = 2048;
-pub const MS_BIND: u32 = 4096;
-pub const MS_MOVE: u32 = 8192;
-pub const MS_REC: u32 = 16384;
-pub const MS_VERBOSE: u32 = 32768;
-pub const MS_SILENT: u32 = 32768;
-pub const MS_POSIXACL: u32 = 65536;
-pub const MS_UNBINDABLE: u32 = 131072;
-pub const MS_PRIVATE: u32 = 262144;
-pub const MS_SLAVE: u32 = 524288;
-pub const MS_SHARED: u32 = 1048576;
-pub const MS_RELATIME: u32 = 2097152;
-pub const MS_KERNMOUNT: u32 = 4194304;
-pub const MS_I_VERSION: u32 = 8388608;
-pub const MS_STRICTATIME: u32 = 16777216;
-pub const MS_LAZYTIME: u32 = 33554432;
-pub const MS_SUBMOUNT: u32 = 67108864;
-pub const MS_NOREMOTELOCK: u32 = 134217728;
-pub const MS_NOSEC: u32 = 268435456;
-pub const MS_BORN: u32 = 536870912;
-pub const MS_ACTIVE: u32 = 1073741824;
-pub const MS_NOUSER: u32 = 2147483648;
-pub const MS_RMT_MASK: u32 = 41943121;
-pub const MS_MGC_VAL: u32 = 3236757504;
-pub const MS_MGC_MSK: u32 = 4294901760;
-pub const OPEN_TREE_CLONE: u32 = 1;
-pub const OPEN_TREE_CLOEXEC: u32 = 524288;
-pub const MOVE_MOUNT_F_SYMLINKS: u32 = 1;
-pub const MOVE_MOUNT_F_AUTOMOUNTS: u32 = 2;
-pub const MOVE_MOUNT_F_EMPTY_PATH: u32 = 4;
-pub const MOVE_MOUNT_T_SYMLINKS: u32 = 16;
-pub const MOVE_MOUNT_T_AUTOMOUNTS: u32 = 32;
-pub const MOVE_MOUNT_T_EMPTY_PATH: u32 = 64;
-pub const MOVE_MOUNT_SET_GROUP: u32 = 256;
-pub const MOVE_MOUNT__MASK: u32 = 375;
-pub const FSOPEN_CLOEXEC: u32 = 1;
-pub const FSPICK_CLOEXEC: u32 = 1;
-pub const FSPICK_SYMLINK_NOFOLLOW: u32 = 2;
-pub const FSPICK_NO_AUTOMOUNT: u32 = 4;
-pub const FSPICK_EMPTY_PATH: u32 = 8;
-pub const FSMOUNT_CLOEXEC: u32 = 1;
-pub const MOUNT_ATTR_RDONLY: u32 = 1;
-pub const MOUNT_ATTR_NOSUID: u32 = 2;
-pub const MOUNT_ATTR_NODEV: u32 = 4;
-pub const MOUNT_ATTR_NOEXEC: u32 = 8;
-pub const MOUNT_ATTR__ATIME: u32 = 112;
-pub const MOUNT_ATTR_RELATIME: u32 = 0;
-pub const MOUNT_ATTR_NOATIME: u32 = 16;
-pub const MOUNT_ATTR_STRICTATIME: u32 = 32;
-pub const MOUNT_ATTR_NODIRATIME: u32 = 128;
-pub const MOUNT_ATTR_IDMAP: u32 = 1048576;
-pub const MOUNT_ATTR_NOSYMFOLLOW: u32 = 2097152;
-pub const MOUNT_ATTR_SIZE_VER0: u32 = 32;
-pub const INR_OPEN_CUR: u32 = 1024;
-pub const INR_OPEN_MAX: u32 = 4096;
-pub const BLOCK_SIZE_BITS: u32 = 10;
-pub const BLOCK_SIZE: u32 = 1024;
-pub const SEEK_SET: u32 = 0;
-pub const SEEK_CUR: u32 = 1;
-pub const SEEK_END: u32 = 2;
-pub const SEEK_DATA: u32 = 3;
-pub const SEEK_HOLE: u32 = 4;
-pub const SEEK_MAX: u32 = 4;
-pub const RENAME_NOREPLACE: u32 = 1;
-pub const RENAME_EXCHANGE: u32 = 2;
-pub const RENAME_WHITEOUT: u32 = 4;
-pub const FILE_DEDUPE_RANGE_SAME: u32 = 0;
-pub const FILE_DEDUPE_RANGE_DIFFERS: u32 = 1;
-pub const NR_FILE: u32 = 8192;
-pub const FS_XFLAG_REALTIME: u32 = 1;
-pub const FS_XFLAG_PREALLOC: u32 = 2;
-pub const FS_XFLAG_IMMUTABLE: u32 = 8;
-pub const FS_XFLAG_APPEND: u32 = 16;
-pub const FS_XFLAG_SYNC: u32 = 32;
-pub const FS_XFLAG_NOATIME: u32 = 64;
-pub const FS_XFLAG_NODUMP: u32 = 128;
-pub const FS_XFLAG_RTINHERIT: u32 = 256;
-pub const FS_XFLAG_PROJINHERIT: u32 = 512;
-pub const FS_XFLAG_NOSYMLINKS: u32 = 1024;
-pub const FS_XFLAG_EXTSIZE: u32 = 2048;
-pub const FS_XFLAG_EXTSZINHERIT: u32 = 4096;
-pub const FS_XFLAG_NODEFRAG: u32 = 8192;
-pub const FS_XFLAG_FILESTREAM: u32 = 16384;
-pub const FS_XFLAG_DAX: u32 = 32768;
-pub const FS_XFLAG_COWEXTSIZE: u32 = 65536;
-pub const FS_XFLAG_HASATTR: u32 = 2147483648;
-pub const BMAP_IOCTL: u32 = 1;
-pub const FSLABEL_MAX: u32 = 256;
-pub const FS_SECRM_FL: u32 = 1;
-pub const FS_UNRM_FL: u32 = 2;
-pub const FS_COMPR_FL: u32 = 4;
-pub const FS_SYNC_FL: u32 = 8;
-pub const FS_IMMUTABLE_FL: u32 = 16;
-pub const FS_APPEND_FL: u32 = 32;
-pub const FS_NODUMP_FL: u32 = 64;
-pub const FS_NOATIME_FL: u32 = 128;
-pub const FS_DIRTY_FL: u32 = 256;
-pub const FS_COMPRBLK_FL: u32 = 512;
-pub const FS_NOCOMP_FL: u32 = 1024;
-pub const FS_ENCRYPT_FL: u32 = 2048;
-pub const FS_BTREE_FL: u32 = 4096;
-pub const FS_INDEX_FL: u32 = 4096;
-pub const FS_IMAGIC_FL: u32 = 8192;
-pub const FS_JOURNAL_DATA_FL: u32 = 16384;
-pub const FS_NOTAIL_FL: u32 = 32768;
-pub const FS_DIRSYNC_FL: u32 = 65536;
-pub const FS_TOPDIR_FL: u32 = 131072;
-pub const FS_HUGE_FILE_FL: u32 = 262144;
-pub const FS_EXTENT_FL: u32 = 524288;
-pub const FS_VERITY_FL: u32 = 1048576;
-pub const FS_EA_INODE_FL: u32 = 2097152;
-pub const FS_EOFBLOCKS_FL: u32 = 4194304;
-pub const FS_NOCOW_FL: u32 = 8388608;
-pub const FS_DAX_FL: u32 = 33554432;
-pub const FS_INLINE_DATA_FL: u32 = 268435456;
-pub const FS_PROJINHERIT_FL: u32 = 536870912;
-pub const FS_CASEFOLD_FL: u32 = 1073741824;
-pub const FS_RESERVED_FL: u32 = 2147483648;
-pub const FS_FL_USER_VISIBLE: u32 = 253951;
-pub const FS_FL_USER_MODIFIABLE: u32 = 229631;
-pub const SYNC_FILE_RANGE_WAIT_BEFORE: u32 = 1;
-pub const SYNC_FILE_RANGE_WRITE: u32 = 2;
-pub const SYNC_FILE_RANGE_WAIT_AFTER: u32 = 4;
-pub const SYNC_FILE_RANGE_WRITE_AND_WAIT: u32 = 7;
-pub const FUTEX_WAIT: u32 = 0;
-pub const FUTEX_WAKE: u32 = 1;
-pub const FUTEX_FD: u32 = 2;
-pub const FUTEX_REQUEUE: u32 = 3;
-pub const FUTEX_CMP_REQUEUE: u32 = 4;
-pub const FUTEX_WAKE_OP: u32 = 5;
-pub const FUTEX_LOCK_PI: u32 = 6;
-pub const FUTEX_UNLOCK_PI: u32 = 7;
-pub const FUTEX_TRYLOCK_PI: u32 = 8;
-pub const FUTEX_WAIT_BITSET: u32 = 9;
-pub const FUTEX_WAKE_BITSET: u32 = 10;
-pub const FUTEX_WAIT_REQUEUE_PI: u32 = 11;
-pub const FUTEX_CMP_REQUEUE_PI: u32 = 12;
-pub const FUTEX_LOCK_PI2: u32 = 13;
-pub const FUTEX_PRIVATE_FLAG: u32 = 128;
-pub const FUTEX_CLOCK_REALTIME: u32 = 256;
-pub const FUTEX_CMD_MASK: i32 = -385;
-pub const FUTEX_WAIT_PRIVATE: u32 = 128;
-pub const FUTEX_WAKE_PRIVATE: u32 = 129;
-pub const FUTEX_REQUEUE_PRIVATE: u32 = 131;
-pub const FUTEX_CMP_REQUEUE_PRIVATE: u32 = 132;
-pub const FUTEX_WAKE_OP_PRIVATE: u32 = 133;
-pub const FUTEX_LOCK_PI_PRIVATE: u32 = 134;
-pub const FUTEX_LOCK_PI2_PRIVATE: u32 = 141;
-pub const FUTEX_UNLOCK_PI_PRIVATE: u32 = 135;
-pub const FUTEX_TRYLOCK_PI_PRIVATE: u32 = 136;
-pub const FUTEX_WAIT_BITSET_PRIVATE: u32 = 137;
-pub const FUTEX_WAKE_BITSET_PRIVATE: u32 = 138;
-pub const FUTEX_WAIT_REQUEUE_PI_PRIVATE: u32 = 139;
-pub const FUTEX_CMP_REQUEUE_PI_PRIVATE: u32 = 140;
-pub const FUTEX_32: u32 = 2;
-pub const FUTEX_WAITV_MAX: u32 = 128;
-pub const FUTEX_WAITERS: u32 = 2147483648;
-pub const FUTEX_OWNER_DIED: u32 = 1073741824;
-pub const FUTEX_TID_MASK: u32 = 1073741823;
-pub const ROBUST_LIST_LIMIT: u32 = 2048;
-pub const FUTEX_BITSET_MATCH_ANY: u32 = 4294967295;
-pub const FUTEX_OP_SET: u32 = 0;
-pub const FUTEX_OP_ADD: u32 = 1;
-pub const FUTEX_OP_OR: u32 = 2;
-pub const FUTEX_OP_ANDN: u32 = 3;
-pub const FUTEX_OP_XOR: u32 = 4;
-pub const FUTEX_OP_OPARG_SHIFT: u32 = 8;
-pub const FUTEX_OP_CMP_EQ: u32 = 0;
-pub const FUTEX_OP_CMP_NE: u32 = 1;
-pub const FUTEX_OP_CMP_LT: u32 = 2;
-pub const FUTEX_OP_CMP_LE: u32 = 3;
-pub const FUTEX_OP_CMP_GT: u32 = 4;
-pub const FUTEX_OP_CMP_GE: u32 = 5;
-pub const __UAPI_DEF_IF_IFCONF: u32 = 1;
-pub const __UAPI_DEF_IF_IFMAP: u32 = 1;
-pub const __UAPI_DEF_IF_IFNAMSIZ: u32 = 1;
-pub const __UAPI_DEF_IF_IFREQ: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS: u32 = 1;
-pub const __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO: u32 = 1;
-pub const __UAPI_DEF_IN_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN_IPPROTO: u32 = 1;
-pub const __UAPI_DEF_IN_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP_MREQ: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN: u32 = 1;
-pub const __UAPI_DEF_IN_CLASS: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR: u32 = 1;
-pub const __UAPI_DEF_IN6_ADDR_ALT: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IN6: u32 = 1;
-pub const __UAPI_DEF_IPV6_MREQ: u32 = 1;
-pub const __UAPI_DEF_IPPROTO_V6: u32 = 1;
-pub const __UAPI_DEF_IPV6_OPTIONS: u32 = 1;
-pub const __UAPI_DEF_IN6_PKTINFO: u32 = 1;
-pub const __UAPI_DEF_IP6_MTUINFO: u32 = 1;
-pub const __UAPI_DEF_SOCKADDR_IPX: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_INTERFACE_DEFINITION: u32 = 1;
-pub const __UAPI_DEF_IPX_CONFIG_DATA: u32 = 1;
-pub const __UAPI_DEF_IPX_ROUTE_DEF: u32 = 1;
-pub const __UAPI_DEF_XATTR: u32 = 1;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const IP_TOS: u32 = 1;
-pub const IP_TTL: u32 = 2;
-pub const IP_HDRINCL: u32 = 3;
-pub const IP_OPTIONS: u32 = 4;
-pub const IP_ROUTER_ALERT: u32 = 5;
-pub const IP_RECVOPTS: u32 = 6;
-pub const IP_RETOPTS: u32 = 7;
-pub const IP_PKTINFO: u32 = 8;
-pub const IP_PKTOPTIONS: u32 = 9;
-pub const IP_MTU_DISCOVER: u32 = 10;
-pub const IP_RECVERR: u32 = 11;
-pub const IP_RECVTTL: u32 = 12;
-pub const IP_RECVTOS: u32 = 13;
-pub const IP_MTU: u32 = 14;
-pub const IP_FREEBIND: u32 = 15;
-pub const IP_IPSEC_POLICY: u32 = 16;
-pub const IP_XFRM_POLICY: u32 = 17;
-pub const IP_PASSSEC: u32 = 18;
-pub const IP_TRANSPARENT: u32 = 19;
-pub const IP_RECVRETOPTS: u32 = 7;
-pub const IP_ORIGDSTADDR: u32 = 20;
-pub const IP_RECVORIGDSTADDR: u32 = 20;
-pub const IP_MINTTL: u32 = 21;
-pub const IP_NODEFRAG: u32 = 22;
-pub const IP_CHECKSUM: u32 = 23;
-pub const IP_BIND_ADDRESS_NO_PORT: u32 = 24;
-pub const IP_RECVFRAGSIZE: u32 = 25;
-pub const IP_RECVERR_RFC4884: u32 = 26;
-pub const IP_PMTUDISC_DONT: u32 = 0;
-pub const IP_PMTUDISC_WANT: u32 = 1;
-pub const IP_PMTUDISC_DO: u32 = 2;
-pub const IP_PMTUDISC_PROBE: u32 = 3;
-pub const IP_PMTUDISC_INTERFACE: u32 = 4;
-pub const IP_PMTUDISC_OMIT: u32 = 5;
-pub const IP_MULTICAST_IF: u32 = 32;
-pub const IP_MULTICAST_TTL: u32 = 33;
-pub const IP_MULTICAST_LOOP: u32 = 34;
-pub const IP_ADD_MEMBERSHIP: u32 = 35;
-pub const IP_DROP_MEMBERSHIP: u32 = 36;
-pub const IP_UNBLOCK_SOURCE: u32 = 37;
-pub const IP_BLOCK_SOURCE: u32 = 38;
-pub const IP_ADD_SOURCE_MEMBERSHIP: u32 = 39;
-pub const IP_DROP_SOURCE_MEMBERSHIP: u32 = 40;
-pub const IP_MSFILTER: u32 = 41;
-pub const MCAST_JOIN_GROUP: u32 = 42;
-pub const MCAST_BLOCK_SOURCE: u32 = 43;
-pub const MCAST_UNBLOCK_SOURCE: u32 = 44;
-pub const MCAST_LEAVE_GROUP: u32 = 45;
-pub const MCAST_JOIN_SOURCE_GROUP: u32 = 46;
-pub const MCAST_LEAVE_SOURCE_GROUP: u32 = 47;
-pub const MCAST_MSFILTER: u32 = 48;
-pub const IP_MULTICAST_ALL: u32 = 49;
-pub const IP_UNICAST_IF: u32 = 50;
-pub const MCAST_EXCLUDE: u32 = 0;
-pub const MCAST_INCLUDE: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_TTL: u32 = 1;
-pub const IP_DEFAULT_MULTICAST_LOOP: u32 = 1;
-pub const __SOCK_SIZE__: u32 = 16;
-pub const IN_CLASSA_NET: u32 = 4278190080;
-pub const IN_CLASSA_NSHIFT: u32 = 24;
-pub const IN_CLASSA_HOST: u32 = 16777215;
-pub const IN_CLASSA_MAX: u32 = 128;
-pub const IN_CLASSB_NET: u32 = 4294901760;
-pub const IN_CLASSB_NSHIFT: u32 = 16;
-pub const IN_CLASSB_HOST: u32 = 65535;
-pub const IN_CLASSB_MAX: u32 = 65536;
-pub const IN_CLASSC_NET: u32 = 4294967040;
-pub const IN_CLASSC_NSHIFT: u32 = 8;
-pub const IN_CLASSC_HOST: u32 = 255;
-pub const IN_MULTICAST_NET: u32 = 3758096384;
-pub const IN_CLASSE_NET: u32 = 4294967295;
-pub const IN_CLASSE_NSHIFT: u32 = 0;
-pub const IN_LOOPBACKNET: u32 = 127;
-pub const INADDR_LOOPBACK: u32 = 2130706433;
-pub const INADDR_UNSPEC_GROUP: u32 = 3758096384;
-pub const INADDR_ALLHOSTS_GROUP: u32 = 3758096385;
-pub const INADDR_ALLRTRS_GROUP: u32 = 3758096386;
-pub const INADDR_ALLSNOOPERS_GROUP: u32 = 3758096490;
-pub const INADDR_MAX_LOCAL_GROUP: u32 = 3758096639;
-pub const __LITTLE_ENDIAN: u32 = 1234;
-pub const IN_ACCESS: u32 = 1;
-pub const IN_MODIFY: u32 = 2;
-pub const IN_ATTRIB: u32 = 4;
-pub const IN_CLOSE_WRITE: u32 = 8;
-pub const IN_CLOSE_NOWRITE: u32 = 16;
-pub const IN_OPEN: u32 = 32;
-pub const IN_MOVED_FROM: u32 = 64;
-pub const IN_MOVED_TO: u32 = 128;
-pub const IN_CREATE: u32 = 256;
-pub const IN_DELETE: u32 = 512;
-pub const IN_DELETE_SELF: u32 = 1024;
-pub const IN_MOVE_SELF: u32 = 2048;
-pub const IN_UNMOUNT: u32 = 8192;
-pub const IN_Q_OVERFLOW: u32 = 16384;
-pub const IN_IGNORED: u32 = 32768;
-pub const IN_CLOSE: u32 = 24;
-pub const IN_MOVE: u32 = 192;
-pub const IN_ONLYDIR: u32 = 16777216;
-pub const IN_DONT_FOLLOW: u32 = 33554432;
-pub const IN_EXCL_UNLINK: u32 = 67108864;
-pub const IN_MASK_CREATE: u32 = 268435456;
-pub const IN_MASK_ADD: u32 = 536870912;
-pub const IN_ISDIR: u32 = 1073741824;
-pub const IN_ONESHOT: u32 = 2147483648;
-pub const IN_ALL_EVENTS: u32 = 4095;
-pub const IN_CLOEXEC: u32 = 524288;
-pub const IN_NONBLOCK: u32 = 2048;
-pub const IPTOS_TOS_MASK: u32 = 30;
-pub const IPTOS_LOWDELAY: u32 = 16;
-pub const IPTOS_THROUGHPUT: u32 = 8;
-pub const IPTOS_RELIABILITY: u32 = 4;
-pub const IPTOS_MINCOST: u32 = 2;
-pub const IPTOS_PREC_MASK: u32 = 224;
-pub const IPTOS_PREC_NETCONTROL: u32 = 224;
-pub const IPTOS_PREC_INTERNETCONTROL: u32 = 192;
-pub const IPTOS_PREC_CRITIC_ECP: u32 = 160;
-pub const IPTOS_PREC_FLASHOVERRIDE: u32 = 128;
-pub const IPTOS_PREC_FLASH: u32 = 96;
-pub const IPTOS_PREC_IMMEDIATE: u32 = 64;
-pub const IPTOS_PREC_PRIORITY: u32 = 32;
-pub const IPTOS_PREC_ROUTINE: u32 = 0;
-pub const IPOPT_COPY: u32 = 128;
-pub const IPOPT_CLASS_MASK: u32 = 96;
-pub const IPOPT_NUMBER_MASK: u32 = 31;
-pub const IPOPT_CONTROL: u32 = 0;
-pub const IPOPT_RESERVED1: u32 = 32;
-pub const IPOPT_MEASUREMENT: u32 = 64;
-pub const IPOPT_RESERVED2: u32 = 96;
-pub const IPOPT_END: u32 = 0;
-pub const IPOPT_NOOP: u32 = 1;
-pub const IPOPT_SEC: u32 = 130;
-pub const IPOPT_LSRR: u32 = 131;
-pub const IPOPT_TIMESTAMP: u32 = 68;
-pub const IPOPT_CIPSO: u32 = 134;
-pub const IPOPT_RR: u32 = 7;
-pub const IPOPT_SID: u32 = 136;
-pub const IPOPT_SSRR: u32 = 137;
-pub const IPOPT_RA: u32 = 148;
-pub const IPVERSION: u32 = 4;
-pub const MAXTTL: u32 = 255;
-pub const IPDEFTTL: u32 = 64;
-pub const IPOPT_OPTVAL: u32 = 0;
-pub const IPOPT_OLEN: u32 = 1;
-pub const IPOPT_OFFSET: u32 = 2;
-pub const IPOPT_MINOFF: u32 = 4;
-pub const MAX_IPOPTLEN: u32 = 40;
-pub const IPOPT_NOP: u32 = 1;
-pub const IPOPT_EOL: u32 = 0;
-pub const IPOPT_TS: u32 = 68;
-pub const IPOPT_TS_TSONLY: u32 = 0;
-pub const IPOPT_TS_TSANDADDR: u32 = 1;
-pub const IPOPT_TS_PRESPEC: u32 = 3;
-pub const IPV4_BEET_PHMAXLEN: u32 = 8;
-pub const IPV6_FL_A_GET: u32 = 0;
-pub const IPV6_FL_A_PUT: u32 = 1;
-pub const IPV6_FL_A_RENEW: u32 = 2;
-pub const IPV6_FL_F_CREATE: u32 = 1;
-pub const IPV6_FL_F_EXCL: u32 = 2;
-pub const IPV6_FL_F_REFLECT: u32 = 4;
-pub const IPV6_FL_F_REMOTE: u32 = 8;
-pub const IPV6_FL_S_NONE: u32 = 0;
-pub const IPV6_FL_S_EXCL: u32 = 1;
-pub const IPV6_FL_S_PROCESS: u32 = 2;
-pub const IPV6_FL_S_USER: u32 = 3;
-pub const IPV6_FL_S_ANY: u32 = 255;
-pub const IPV6_FLOWINFO_FLOWLABEL: u32 = 1048575;
-pub const IPV6_FLOWINFO_PRIORITY: u32 = 267386880;
-pub const IPV6_PRIORITY_UNCHARACTERIZED: u32 = 0;
-pub const IPV6_PRIORITY_FILLER: u32 = 256;
-pub const IPV6_PRIORITY_UNATTENDED: u32 = 512;
-pub const IPV6_PRIORITY_RESERVED1: u32 = 768;
-pub const IPV6_PRIORITY_BULK: u32 = 1024;
-pub const IPV6_PRIORITY_RESERVED2: u32 = 1280;
-pub const IPV6_PRIORITY_INTERACTIVE: u32 = 1536;
-pub const IPV6_PRIORITY_CONTROL: u32 = 1792;
-pub const IPV6_PRIORITY_8: u32 = 2048;
-pub const IPV6_PRIORITY_9: u32 = 2304;
-pub const IPV6_PRIORITY_10: u32 = 2560;
-pub const IPV6_PRIORITY_11: u32 = 2816;
-pub const IPV6_PRIORITY_12: u32 = 3072;
-pub const IPV6_PRIORITY_13: u32 = 3328;
-pub const IPV6_PRIORITY_14: u32 = 3584;
-pub const IPV6_PRIORITY_15: u32 = 3840;
-pub const IPPROTO_HOPOPTS: u32 = 0;
-pub const IPPROTO_ROUTING: u32 = 43;
-pub const IPPROTO_FRAGMENT: u32 = 44;
-pub const IPPROTO_ICMPV6: u32 = 58;
-pub const IPPROTO_NONE: u32 = 59;
-pub const IPPROTO_DSTOPTS: u32 = 60;
-pub const IPPROTO_MH: u32 = 135;
-pub const IPV6_TLV_PAD1: u32 = 0;
-pub const IPV6_TLV_PADN: u32 = 1;
-pub const IPV6_TLV_ROUTERALERT: u32 = 5;
-pub const IPV6_TLV_CALIPSO: u32 = 7;
-pub const IPV6_TLV_IOAM: u32 = 49;
-pub const IPV6_TLV_JUMBO: u32 = 194;
-pub const IPV6_TLV_HAO: u32 = 201;
-pub const IPV6_ADDRFORM: u32 = 1;
-pub const IPV6_2292PKTINFO: u32 = 2;
-pub const IPV6_2292HOPOPTS: u32 = 3;
-pub const IPV6_2292DSTOPTS: u32 = 4;
-pub const IPV6_2292RTHDR: u32 = 5;
-pub const IPV6_2292PKTOPTIONS: u32 = 6;
-pub const IPV6_CHECKSUM: u32 = 7;
-pub const IPV6_2292HOPLIMIT: u32 = 8;
-pub const IPV6_NEXTHOP: u32 = 9;
-pub const IPV6_AUTHHDR: u32 = 10;
-pub const IPV6_FLOWINFO: u32 = 11;
-pub const IPV6_UNICAST_HOPS: u32 = 16;
-pub const IPV6_MULTICAST_IF: u32 = 17;
-pub const IPV6_MULTICAST_HOPS: u32 = 18;
-pub const IPV6_MULTICAST_LOOP: u32 = 19;
-pub const IPV6_ADD_MEMBERSHIP: u32 = 20;
-pub const IPV6_DROP_MEMBERSHIP: u32 = 21;
-pub const IPV6_ROUTER_ALERT: u32 = 22;
-pub const IPV6_MTU_DISCOVER: u32 = 23;
-pub const IPV6_MTU: u32 = 24;
-pub const IPV6_RECVERR: u32 = 25;
-pub const IPV6_V6ONLY: u32 = 26;
-pub const IPV6_JOIN_ANYCAST: u32 = 27;
-pub const IPV6_LEAVE_ANYCAST: u32 = 28;
-pub const IPV6_MULTICAST_ALL: u32 = 29;
-pub const IPV6_ROUTER_ALERT_ISOLATE: u32 = 30;
-pub const IPV6_RECVERR_RFC4884: u32 = 31;
-pub const IPV6_PMTUDISC_DONT: u32 = 0;
-pub const IPV6_PMTUDISC_WANT: u32 = 1;
-pub const IPV6_PMTUDISC_DO: u32 = 2;
-pub const IPV6_PMTUDISC_PROBE: u32 = 3;
-pub const IPV6_PMTUDISC_INTERFACE: u32 = 4;
-pub const IPV6_PMTUDISC_OMIT: u32 = 5;
-pub const IPV6_FLOWLABEL_MGR: u32 = 32;
-pub const IPV6_FLOWINFO_SEND: u32 = 33;
-pub const IPV6_IPSEC_POLICY: u32 = 34;
-pub const IPV6_XFRM_POLICY: u32 = 35;
-pub const IPV6_HDRINCL: u32 = 36;
-pub const IPV6_RECVPKTINFO: u32 = 49;
-pub const IPV6_PKTINFO: u32 = 50;
-pub const IPV6_RECVHOPLIMIT: u32 = 51;
-pub const IPV6_HOPLIMIT: u32 = 52;
-pub const IPV6_RECVHOPOPTS: u32 = 53;
-pub const IPV6_HOPOPTS: u32 = 54;
-pub const IPV6_RTHDRDSTOPTS: u32 = 55;
-pub const IPV6_RECVRTHDR: u32 = 56;
-pub const IPV6_RTHDR: u32 = 57;
-pub const IPV6_RECVDSTOPTS: u32 = 58;
-pub const IPV6_DSTOPTS: u32 = 59;
-pub const IPV6_RECVPATHMTU: u32 = 60;
-pub const IPV6_PATHMTU: u32 = 61;
-pub const IPV6_DONTFRAG: u32 = 62;
-pub const IPV6_RECVTCLASS: u32 = 66;
-pub const IPV6_TCLASS: u32 = 67;
-pub const IPV6_AUTOFLOWLABEL: u32 = 70;
-pub const IPV6_ADDR_PREFERENCES: u32 = 72;
-pub const IPV6_PREFER_SRC_TMP: u32 = 1;
-pub const IPV6_PREFER_SRC_PUBLIC: u32 = 2;
-pub const IPV6_PREFER_SRC_PUBTMP_DEFAULT: u32 = 256;
-pub const IPV6_PREFER_SRC_COA: u32 = 4;
-pub const IPV6_PREFER_SRC_HOME: u32 = 1024;
-pub const IPV6_PREFER_SRC_CGA: u32 = 8;
-pub const IPV6_PREFER_SRC_NONCGA: u32 = 2048;
-pub const IPV6_MINHOPCOUNT: u32 = 73;
-pub const IPV6_ORIGDSTADDR: u32 = 74;
-pub const IPV6_RECVORIGDSTADDR: u32 = 74;
-pub const IPV6_TRANSPARENT: u32 = 75;
-pub const IPV6_UNICAST_IF: u32 = 76;
-pub const IPV6_RECVFRAGSIZE: u32 = 77;
-pub const IPV6_FREEBIND: u32 = 78;
-pub const IPV6_MIN_MTU: u32 = 1280;
-pub const IPV6_SRCRT_STRICT: u32 = 1;
-pub const IPV6_SRCRT_TYPE_0: u32 = 0;
-pub const IPV6_SRCRT_TYPE_2: u32 = 2;
-pub const IPV6_SRCRT_TYPE_3: u32 = 3;
-pub const IPV6_SRCRT_TYPE_4: u32 = 4;
-pub const IPV6_OPT_ROUTERALERT_MLD: u32 = 0;
-pub const ADFS_SUPER_MAGIC: u32 = 44533;
-pub const AFFS_SUPER_MAGIC: u32 = 44543;
-pub const AFS_SUPER_MAGIC: u32 = 1397113167;
-pub const AUTOFS_SUPER_MAGIC: u32 = 391;
-pub const CEPH_SUPER_MAGIC: u32 = 12805120;
-pub const CODA_SUPER_MAGIC: u32 = 1937076805;
-pub const CRAMFS_MAGIC: u32 = 684539205;
-pub const CRAMFS_MAGIC_WEND: u32 = 1161678120;
-pub const DEBUGFS_MAGIC: u32 = 1684170528;
-pub const SECURITYFS_MAGIC: u32 = 1935894131;
-pub const SELINUX_MAGIC: u32 = 4185718668;
-pub const SMACK_MAGIC: u32 = 1128357203;
-pub const RAMFS_MAGIC: u32 = 2240043254;
-pub const TMPFS_MAGIC: u32 = 16914836;
-pub const HUGETLBFS_MAGIC: u32 = 2508478710;
-pub const SQUASHFS_MAGIC: u32 = 1936814952;
-pub const ECRYPTFS_SUPER_MAGIC: u32 = 61791;
-pub const EFS_SUPER_MAGIC: u32 = 4278867;
-pub const EROFS_SUPER_MAGIC_V1: u32 = 3774210530;
-pub const EXT2_SUPER_MAGIC: u32 = 61267;
-pub const EXT3_SUPER_MAGIC: u32 = 61267;
-pub const XENFS_SUPER_MAGIC: u32 = 2881100148;
-pub const EXT4_SUPER_MAGIC: u32 = 61267;
-pub const BTRFS_SUPER_MAGIC: u32 = 2435016766;
-pub const NILFS_SUPER_MAGIC: u32 = 13364;
-pub const F2FS_SUPER_MAGIC: u32 = 4076150800;
-pub const HPFS_SUPER_MAGIC: u32 = 4187351113;
-pub const ISOFS_SUPER_MAGIC: u32 = 38496;
-pub const JFFS2_SUPER_MAGIC: u32 = 29366;
-pub const XFS_SUPER_MAGIC: u32 = 1481003842;
-pub const PSTOREFS_MAGIC: u32 = 1634035564;
-pub const EFIVARFS_MAGIC: u32 = 3730735588;
-pub const HOSTFS_SUPER_MAGIC: u32 = 12648430;
-pub const OVERLAYFS_SUPER_MAGIC: u32 = 2035054128;
-pub const FUSE_SUPER_MAGIC: u32 = 1702057286;
-pub const MINIX_SUPER_MAGIC: u32 = 4991;
-pub const MINIX_SUPER_MAGIC2: u32 = 5007;
-pub const MINIX2_SUPER_MAGIC: u32 = 9320;
-pub const MINIX2_SUPER_MAGIC2: u32 = 9336;
-pub const MINIX3_SUPER_MAGIC: u32 = 19802;
-pub const MSDOS_SUPER_MAGIC: u32 = 19780;
-pub const EXFAT_SUPER_MAGIC: u32 = 538032816;
-pub const NCP_SUPER_MAGIC: u32 = 22092;
-pub const NFS_SUPER_MAGIC: u32 = 26985;
-pub const OCFS2_SUPER_MAGIC: u32 = 1952539503;
-pub const OPENPROM_SUPER_MAGIC: u32 = 40865;
-pub const QNX4_SUPER_MAGIC: u32 = 47;
-pub const QNX6_SUPER_MAGIC: u32 = 1746473250;
-pub const AFS_FS_MAGIC: u32 = 1799439955;
-pub const REISERFS_SUPER_MAGIC: u32 = 1382369651;
-pub const REISERFS_SUPER_MAGIC_STRING: &[u8; 9usize] = b"ReIsErFs\0";
-pub const REISER2FS_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr2Fs\0";
-pub const REISER2FS_JR_SUPER_MAGIC_STRING: &[u8; 10usize] = b"ReIsEr3Fs\0";
-pub const SMB_SUPER_MAGIC: u32 = 20859;
-pub const CIFS_SUPER_MAGIC: u32 = 4283649346;
-pub const SMB2_SUPER_MAGIC: u32 = 4266872130;
-pub const CGROUP_SUPER_MAGIC: u32 = 2613483;
-pub const CGROUP2_SUPER_MAGIC: u32 = 1667723888;
-pub const RDTGROUP_SUPER_MAGIC: u32 = 124082209;
-pub const STACK_END_MAGIC: u32 = 1470918301;
-pub const TRACEFS_MAGIC: u32 = 1953653091;
-pub const V9FS_MAGIC: u32 = 16914839;
-pub const BDEVFS_MAGIC: u32 = 1650746742;
-pub const DAXFS_MAGIC: u32 = 1684300152;
-pub const BINFMTFS_MAGIC: u32 = 1112100429;
-pub const DEVPTS_SUPER_MAGIC: u32 = 7377;
-pub const BINDERFS_SUPER_MAGIC: u32 = 1819242352;
-pub const FUTEXFS_SUPER_MAGIC: u32 = 195894762;
-pub const PIPEFS_MAGIC: u32 = 1346981957;
-pub const PROC_SUPER_MAGIC: u32 = 40864;
-pub const SOCKFS_MAGIC: u32 = 1397703499;
-pub const SYSFS_MAGIC: u32 = 1650812274;
-pub const USBDEVICE_SUPER_MAGIC: u32 = 40866;
-pub const MTD_INODE_FS_MAGIC: u32 = 288389204;
-pub const ANON_INODE_FS_MAGIC: u32 = 151263540;
-pub const BTRFS_TEST_MAGIC: u32 = 1936880249;
-pub const NSFS_MAGIC: u32 = 1853056627;
-pub const BPF_FS_MAGIC: u32 = 3405662737;
-pub const AAFS_MAGIC: u32 = 1513908720;
-pub const ZONEFS_MAGIC: u32 = 1515144787;
-pub const UDF_SUPER_MAGIC: u32 = 352400198;
-pub const DMA_BUF_MAGIC: u32 = 1145913666;
-pub const DEVMEM_MAGIC: u32 = 1162691661;
-pub const SECRETMEM_MAGIC: u32 = 1397048141;
-pub const MAP_32BIT: u32 = 64;
-pub const PROT_READ: u32 = 1;
-pub const PROT_WRITE: u32 = 2;
-pub const PROT_EXEC: u32 = 4;
-pub const PROT_SEM: u32 = 8;
-pub const PROT_NONE: u32 = 0;
-pub const PROT_GROWSDOWN: u32 = 16777216;
-pub const PROT_GROWSUP: u32 = 33554432;
-pub const MAP_TYPE: u32 = 15;
-pub const MAP_FIXED: u32 = 16;
-pub const MAP_ANONYMOUS: u32 = 32;
-pub const MAP_POPULATE: u32 = 32768;
-pub const MAP_NONBLOCK: u32 = 65536;
-pub const MAP_STACK: u32 = 131072;
-pub const MAP_HUGETLB: u32 = 262144;
-pub const MAP_SYNC: u32 = 524288;
-pub const MAP_FIXED_NOREPLACE: u32 = 1048576;
-pub const MAP_UNINITIALIZED: u32 = 67108864;
-pub const MLOCK_ONFAULT: u32 = 1;
-pub const MS_ASYNC: u32 = 1;
-pub const MS_INVALIDATE: u32 = 2;
-pub const MS_SYNC: u32 = 4;
-pub const MADV_NORMAL: u32 = 0;
-pub const MADV_RANDOM: u32 = 1;
-pub const MADV_SEQUENTIAL: u32 = 2;
-pub const MADV_WILLNEED: u32 = 3;
-pub const MADV_DONTNEED: u32 = 4;
-pub const MADV_FREE: u32 = 8;
-pub const MADV_REMOVE: u32 = 9;
-pub const MADV_DONTFORK: u32 = 10;
-pub const MADV_DOFORK: u32 = 11;
-pub const MADV_HWPOISON: u32 = 100;
-pub const MADV_SOFT_OFFLINE: u32 = 101;
-pub const MADV_MERGEABLE: u32 = 12;
-pub const MADV_UNMERGEABLE: u32 = 13;
-pub const MADV_HUGEPAGE: u32 = 14;
-pub const MADV_NOHUGEPAGE: u32 = 15;
-pub const MADV_DONTDUMP: u32 = 16;
-pub const MADV_DODUMP: u32 = 17;
-pub const MADV_WIPEONFORK: u32 = 18;
-pub const MADV_KEEPONFORK: u32 = 19;
-pub const MADV_COLD: u32 = 20;
-pub const MADV_PAGEOUT: u32 = 21;
-pub const MADV_POPULATE_READ: u32 = 22;
-pub const MADV_POPULATE_WRITE: u32 = 23;
-pub const MADV_DONTNEED_LOCKED: u32 = 24;
-pub const MADV_COLLAPSE: u32 = 25;
-pub const MAP_FILE: u32 = 0;
-pub const PKEY_DISABLE_ACCESS: u32 = 1;
-pub const PKEY_DISABLE_WRITE: u32 = 2;
-pub const PKEY_ACCESS_MASK: u32 = 3;
-pub const MAP_GROWSDOWN: u32 = 256;
-pub const MAP_DENYWRITE: u32 = 2048;
-pub const MAP_EXECUTABLE: u32 = 4096;
-pub const MAP_LOCKED: u32 = 8192;
-pub const MAP_NORESERVE: u32 = 16384;
-pub const MCL_CURRENT: u32 = 1;
-pub const MCL_FUTURE: u32 = 2;
-pub const MCL_ONFAULT: u32 = 4;
-pub const HUGETLB_FLAG_ENCODE_SHIFT: u32 = 26;
-pub const HUGETLB_FLAG_ENCODE_MASK: u32 = 63;
-pub const HUGETLB_FLAG_ENCODE_16KB: u32 = 939524096;
-pub const HUGETLB_FLAG_ENCODE_64KB: u32 = 1073741824;
-pub const HUGETLB_FLAG_ENCODE_512KB: u32 = 1275068416;
-pub const HUGETLB_FLAG_ENCODE_1MB: u32 = 1342177280;
-pub const HUGETLB_FLAG_ENCODE_2MB: u32 = 1409286144;
-pub const HUGETLB_FLAG_ENCODE_8MB: u32 = 1543503872;
-pub const HUGETLB_FLAG_ENCODE_16MB: u32 = 1610612736;
-pub const HUGETLB_FLAG_ENCODE_32MB: u32 = 1677721600;
-pub const HUGETLB_FLAG_ENCODE_256MB: u32 = 1879048192;
-pub const HUGETLB_FLAG_ENCODE_512MB: u32 = 1946157056;
-pub const HUGETLB_FLAG_ENCODE_1GB: u32 = 2013265920;
-pub const HUGETLB_FLAG_ENCODE_2GB: u32 = 2080374784;
-pub const HUGETLB_FLAG_ENCODE_16GB: u32 = 2281701376;
-pub const MREMAP_MAYMOVE: u32 = 1;
-pub const MREMAP_FIXED: u32 = 2;
-pub const MREMAP_DONTUNMAP: u32 = 4;
-pub const OVERCOMMIT_GUESS: u32 = 0;
-pub const OVERCOMMIT_ALWAYS: u32 = 1;
-pub const OVERCOMMIT_NEVER: u32 = 2;
-pub const MAP_SHARED: u32 = 1;
-pub const MAP_PRIVATE: u32 = 2;
-pub const MAP_SHARED_VALIDATE: u32 = 3;
-pub const MAP_HUGE_SHIFT: u32 = 26;
-pub const MAP_HUGE_MASK: u32 = 63;
-pub const MAP_HUGE_16KB: u32 = 939524096;
-pub const MAP_HUGE_64KB: u32 = 1073741824;
-pub const MAP_HUGE_512KB: u32 = 1275068416;
-pub const MAP_HUGE_1MB: u32 = 1342177280;
-pub const MAP_HUGE_2MB: u32 = 1409286144;
-pub const MAP_HUGE_8MB: u32 = 1543503872;
-pub const MAP_HUGE_16MB: u32 = 1610612736;
-pub const MAP_HUGE_32MB: u32 = 1677721600;
-pub const MAP_HUGE_256MB: u32 = 1879048192;
-pub const MAP_HUGE_512MB: u32 = 1946157056;
-pub const MAP_HUGE_1GB: u32 = 2013265920;
-pub const MAP_HUGE_2GB: u32 = 2080374784;
-pub const MAP_HUGE_16GB: u32 = 2281701376;
-pub const SIOCGSTAMP_OLD: u32 = 35078;
-pub const SIOCGSTAMPNS_OLD: u32 = 35079;
-pub const SOL_SOCKET: u32 = 1;
-pub const SO_DEBUG: u32 = 1;
-pub const SO_REUSEADDR: u32 = 2;
-pub const SO_TYPE: u32 = 3;
-pub const SO_ERROR: u32 = 4;
-pub const SO_DONTROUTE: u32 = 5;
-pub const SO_BROADCAST: u32 = 6;
-pub const SO_SNDBUF: u32 = 7;
-pub const SO_RCVBUF: u32 = 8;
-pub const SO_SNDBUFFORCE: u32 = 32;
-pub const SO_RCVBUFFORCE: u32 = 33;
-pub const SO_KEEPALIVE: u32 = 9;
-pub const SO_OOBINLINE: u32 = 10;
-pub const SO_NO_CHECK: u32 = 11;
-pub const SO_PRIORITY: u32 = 12;
-pub const SO_LINGER: u32 = 13;
-pub const SO_BSDCOMPAT: u32 = 14;
-pub const SO_REUSEPORT: u32 = 15;
-pub const SO_PASSCRED: u32 = 16;
-pub const SO_PEERCRED: u32 = 17;
-pub const SO_RCVLOWAT: u32 = 18;
-pub const SO_SNDLOWAT: u32 = 19;
-pub const SO_RCVTIMEO_OLD: u32 = 20;
-pub const SO_SNDTIMEO_OLD: u32 = 21;
-pub const SO_SECURITY_AUTHENTICATION: u32 = 22;
-pub const SO_SECURITY_ENCRYPTION_TRANSPORT: u32 = 23;
-pub const SO_SECURITY_ENCRYPTION_NETWORK: u32 = 24;
-pub const SO_BINDTODEVICE: u32 = 25;
-pub const SO_ATTACH_FILTER: u32 = 26;
-pub const SO_DETACH_FILTER: u32 = 27;
-pub const SO_GET_FILTER: u32 = 26;
-pub const SO_PEERNAME: u32 = 28;
-pub const SO_ACCEPTCONN: u32 = 30;
-pub const SO_PEERSEC: u32 = 31;
-pub const SO_PASSSEC: u32 = 34;
-pub const SO_MARK: u32 = 36;
-pub const SO_PROTOCOL: u32 = 38;
-pub const SO_DOMAIN: u32 = 39;
-pub const SO_RXQ_OVFL: u32 = 40;
-pub const SO_WIFI_STATUS: u32 = 41;
-pub const SCM_WIFI_STATUS: u32 = 41;
-pub const SO_PEEK_OFF: u32 = 42;
-pub const SO_NOFCS: u32 = 43;
-pub const SO_LOCK_FILTER: u32 = 44;
-pub const SO_SELECT_ERR_QUEUE: u32 = 45;
-pub const SO_BUSY_POLL: u32 = 46;
-pub const SO_MAX_PACING_RATE: u32 = 47;
-pub const SO_BPF_EXTENSIONS: u32 = 48;
-pub const SO_INCOMING_CPU: u32 = 49;
-pub const SO_ATTACH_BPF: u32 = 50;
-pub const SO_DETACH_BPF: u32 = 27;
-pub const SO_ATTACH_REUSEPORT_CBPF: u32 = 51;
-pub const SO_ATTACH_REUSEPORT_EBPF: u32 = 52;
-pub const SO_CNX_ADVICE: u32 = 53;
-pub const SCM_TIMESTAMPING_OPT_STATS: u32 = 54;
-pub const SO_MEMINFO: u32 = 55;
-pub const SO_INCOMING_NAPI_ID: u32 = 56;
-pub const SO_COOKIE: u32 = 57;
-pub const SCM_TIMESTAMPING_PKTINFO: u32 = 58;
-pub const SO_PEERGROUPS: u32 = 59;
-pub const SO_ZEROCOPY: u32 = 60;
-pub const SO_TXTIME: u32 = 61;
-pub const SCM_TXTIME: u32 = 61;
-pub const SO_BINDTOIFINDEX: u32 = 62;
-pub const SO_TIMESTAMP_OLD: u32 = 29;
-pub const SO_TIMESTAMPNS_OLD: u32 = 35;
-pub const SO_TIMESTAMPING_OLD: u32 = 37;
-pub const SO_TIMESTAMP_NEW: u32 = 63;
-pub const SO_TIMESTAMPNS_NEW: u32 = 64;
-pub const SO_TIMESTAMPING_NEW: u32 = 65;
-pub const SO_RCVTIMEO_NEW: u32 = 66;
-pub const SO_SNDTIMEO_NEW: u32 = 67;
-pub const SO_DETACH_REUSEPORT_BPF: u32 = 68;
-pub const SO_PREFER_BUSY_POLL: u32 = 69;
-pub const SO_BUSY_POLL_BUDGET: u32 = 70;
-pub const SO_NETNS_COOKIE: u32 = 71;
-pub const SO_BUF_LOCK: u32 = 72;
-pub const SO_RESERVE_MEM: u32 = 73;
-pub const SO_TXREHASH: u32 = 74;
-pub const SO_RCVMARK: u32 = 75;
-pub const SO_TIMESTAMP: u32 = 29;
-pub const SO_TIMESTAMPNS: u32 = 35;
-pub const SO_TIMESTAMPING: u32 = 37;
-pub const SO_RCVTIMEO: u32 = 20;
-pub const SO_SNDTIMEO: u32 = 21;
-pub const SCM_TIMESTAMP: u32 = 29;
-pub const SCM_TIMESTAMPNS: u32 = 35;
-pub const SCM_TIMESTAMPING: u32 = 37;
-pub const SYS_SOCKET: u32 = 1;
-pub const SYS_BIND: u32 = 2;
-pub const SYS_CONNECT: u32 = 3;
-pub const SYS_LISTEN: u32 = 4;
-pub const SYS_ACCEPT: u32 = 5;
-pub const SYS_GETSOCKNAME: u32 = 6;
-pub const SYS_GETPEERNAME: u32 = 7;
-pub const SYS_SOCKETPAIR: u32 = 8;
-pub const SYS_SEND: u32 = 9;
-pub const SYS_RECV: u32 = 10;
-pub const SYS_SENDTO: u32 = 11;
-pub const SYS_RECVFROM: u32 = 12;
-pub const SYS_SHUTDOWN: u32 = 13;
-pub const SYS_SETSOCKOPT: u32 = 14;
-pub const SYS_GETSOCKOPT: u32 = 15;
-pub const SYS_SENDMSG: u32 = 16;
-pub const SYS_RECVMSG: u32 = 17;
-pub const SYS_ACCEPT4: u32 = 18;
-pub const SYS_RECVMMSG: u32 = 19;
-pub const SYS_SENDMMSG: u32 = 20;
-pub const __SO_ACCEPTCON: u32 = 65536;
-pub const POLLIN: u32 = 1;
-pub const POLLPRI: u32 = 2;
-pub const POLLOUT: u32 = 4;
-pub const POLLERR: u32 = 8;
-pub const POLLHUP: u32 = 16;
-pub const POLLNVAL: u32 = 32;
-pub const POLLRDNORM: u32 = 64;
-pub const POLLRDBAND: u32 = 128;
-pub const POLLWRNORM: u32 = 256;
-pub const POLLWRBAND: u32 = 512;
-pub const POLLMSG: u32 = 1024;
-pub const POLLREMOVE: u32 = 4096;
-pub const POLLRDHUP: u32 = 8192;
-pub const PR_SET_PDEATHSIG: u32 = 1;
-pub const PR_GET_PDEATHSIG: u32 = 2;
-pub const PR_GET_DUMPABLE: u32 = 3;
-pub const PR_SET_DUMPABLE: u32 = 4;
-pub const PR_GET_UNALIGN: u32 = 5;
-pub const PR_SET_UNALIGN: u32 = 6;
-pub const PR_UNALIGN_NOPRINT: u32 = 1;
-pub const PR_UNALIGN_SIGBUS: u32 = 2;
-pub const PR_GET_KEEPCAPS: u32 = 7;
-pub const PR_SET_KEEPCAPS: u32 = 8;
-pub const PR_GET_FPEMU: u32 = 9;
-pub const PR_SET_FPEMU: u32 = 10;
-pub const PR_FPEMU_NOPRINT: u32 = 1;
-pub const PR_FPEMU_SIGFPE: u32 = 2;
-pub const PR_GET_FPEXC: u32 = 11;
-pub const PR_SET_FPEXC: u32 = 12;
-pub const PR_FP_EXC_SW_ENABLE: u32 = 128;
-pub const PR_FP_EXC_DIV: u32 = 65536;
-pub const PR_FP_EXC_OVF: u32 = 131072;
-pub const PR_FP_EXC_UND: u32 = 262144;
-pub const PR_FP_EXC_RES: u32 = 524288;
-pub const PR_FP_EXC_INV: u32 = 1048576;
-pub const PR_FP_EXC_DISABLED: u32 = 0;
-pub const PR_FP_EXC_NONRECOV: u32 = 1;
-pub const PR_FP_EXC_ASYNC: u32 = 2;
-pub const PR_FP_EXC_PRECISE: u32 = 3;
-pub const PR_GET_TIMING: u32 = 13;
-pub const PR_SET_TIMING: u32 = 14;
-pub const PR_TIMING_STATISTICAL: u32 = 0;
-pub const PR_TIMING_TIMESTAMP: u32 = 1;
-pub const PR_SET_NAME: u32 = 15;
-pub const PR_GET_NAME: u32 = 16;
-pub const PR_GET_ENDIAN: u32 = 19;
-pub const PR_SET_ENDIAN: u32 = 20;
-pub const PR_ENDIAN_BIG: u32 = 0;
-pub const PR_ENDIAN_LITTLE: u32 = 1;
-pub const PR_ENDIAN_PPC_LITTLE: u32 = 2;
-pub const PR_GET_SECCOMP: u32 = 21;
-pub const PR_SET_SECCOMP: u32 = 22;
-pub const PR_CAPBSET_READ: u32 = 23;
-pub const PR_CAPBSET_DROP: u32 = 24;
-pub const PR_GET_TSC: u32 = 25;
-pub const PR_SET_TSC: u32 = 26;
-pub const PR_TSC_ENABLE: u32 = 1;
-pub const PR_TSC_SIGSEGV: u32 = 2;
-pub const PR_GET_SECUREBITS: u32 = 27;
-pub const PR_SET_SECUREBITS: u32 = 28;
-pub const PR_SET_TIMERSLACK: u32 = 29;
-pub const PR_GET_TIMERSLACK: u32 = 30;
-pub const PR_TASK_PERF_EVENTS_DISABLE: u32 = 31;
-pub const PR_TASK_PERF_EVENTS_ENABLE: u32 = 32;
-pub const PR_MCE_KILL: u32 = 33;
-pub const PR_MCE_KILL_CLEAR: u32 = 0;
-pub const PR_MCE_KILL_SET: u32 = 1;
-pub const PR_MCE_KILL_LATE: u32 = 0;
-pub const PR_MCE_KILL_EARLY: u32 = 1;
-pub const PR_MCE_KILL_DEFAULT: u32 = 2;
-pub const PR_MCE_KILL_GET: u32 = 34;
-pub const PR_SET_MM: u32 = 35;
-pub const PR_SET_MM_START_CODE: u32 = 1;
-pub const PR_SET_MM_END_CODE: u32 = 2;
-pub const PR_SET_MM_START_DATA: u32 = 3;
-pub const PR_SET_MM_END_DATA: u32 = 4;
-pub const PR_SET_MM_START_STACK: u32 = 5;
-pub const PR_SET_MM_START_BRK: u32 = 6;
-pub const PR_SET_MM_BRK: u32 = 7;
-pub const PR_SET_MM_ARG_START: u32 = 8;
-pub const PR_SET_MM_ARG_END: u32 = 9;
-pub const PR_SET_MM_ENV_START: u32 = 10;
-pub const PR_SET_MM_ENV_END: u32 = 11;
-pub const PR_SET_MM_AUXV: u32 = 12;
-pub const PR_SET_MM_EXE_FILE: u32 = 13;
-pub const PR_SET_MM_MAP: u32 = 14;
-pub const PR_SET_MM_MAP_SIZE: u32 = 15;
-pub const PR_SET_PTRACER: u32 = 1499557217;
-pub const PR_SET_CHILD_SUBREAPER: u32 = 36;
-pub const PR_GET_CHILD_SUBREAPER: u32 = 37;
-pub const PR_SET_NO_NEW_PRIVS: u32 = 38;
-pub const PR_GET_NO_NEW_PRIVS: u32 = 39;
-pub const PR_GET_TID_ADDRESS: u32 = 40;
-pub const PR_SET_THP_DISABLE: u32 = 41;
-pub const PR_GET_THP_DISABLE: u32 = 42;
-pub const PR_MPX_ENABLE_MANAGEMENT: u32 = 43;
-pub const PR_MPX_DISABLE_MANAGEMENT: u32 = 44;
-pub const PR_SET_FP_MODE: u32 = 45;
-pub const PR_GET_FP_MODE: u32 = 46;
-pub const PR_FP_MODE_FR: u32 = 1;
-pub const PR_FP_MODE_FRE: u32 = 2;
-pub const PR_CAP_AMBIENT: u32 = 47;
-pub const PR_CAP_AMBIENT_IS_SET: u32 = 1;
-pub const PR_CAP_AMBIENT_RAISE: u32 = 2;
-pub const PR_CAP_AMBIENT_LOWER: u32 = 3;
-pub const PR_CAP_AMBIENT_CLEAR_ALL: u32 = 4;
-pub const PR_SVE_SET_VL: u32 = 50;
-pub const PR_SVE_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SVE_GET_VL: u32 = 51;
-pub const PR_SVE_VL_LEN_MASK: u32 = 65535;
-pub const PR_SVE_VL_INHERIT: u32 = 131072;
-pub const PR_GET_SPECULATION_CTRL: u32 = 52;
-pub const PR_SET_SPECULATION_CTRL: u32 = 53;
-pub const PR_SPEC_STORE_BYPASS: u32 = 0;
-pub const PR_SPEC_INDIRECT_BRANCH: u32 = 1;
-pub const PR_SPEC_L1D_FLUSH: u32 = 2;
-pub const PR_SPEC_NOT_AFFECTED: u32 = 0;
-pub const PR_SPEC_PRCTL: u32 = 1;
-pub const PR_SPEC_ENABLE: u32 = 2;
-pub const PR_SPEC_DISABLE: u32 = 4;
-pub const PR_SPEC_FORCE_DISABLE: u32 = 8;
-pub const PR_SPEC_DISABLE_NOEXEC: u32 = 16;
-pub const PR_PAC_RESET_KEYS: u32 = 54;
-pub const PR_PAC_APIAKEY: u32 = 1;
-pub const PR_PAC_APIBKEY: u32 = 2;
-pub const PR_PAC_APDAKEY: u32 = 4;
-pub const PR_PAC_APDBKEY: u32 = 8;
-pub const PR_PAC_APGAKEY: u32 = 16;
-pub const PR_SET_TAGGED_ADDR_CTRL: u32 = 55;
-pub const PR_GET_TAGGED_ADDR_CTRL: u32 = 56;
-pub const PR_TAGGED_ADDR_ENABLE: u32 = 1;
-pub const PR_MTE_TCF_NONE: u32 = 0;
-pub const PR_MTE_TCF_SYNC: u32 = 2;
-pub const PR_MTE_TCF_ASYNC: u32 = 4;
-pub const PR_MTE_TCF_MASK: u32 = 6;
-pub const PR_MTE_TAG_SHIFT: u32 = 3;
-pub const PR_MTE_TAG_MASK: u32 = 524280;
-pub const PR_MTE_TCF_SHIFT: u32 = 1;
-pub const PR_SET_IO_FLUSHER: u32 = 57;
-pub const PR_GET_IO_FLUSHER: u32 = 58;
-pub const PR_SET_SYSCALL_USER_DISPATCH: u32 = 59;
-pub const PR_SYS_DISPATCH_OFF: u32 = 0;
-pub const PR_SYS_DISPATCH_ON: u32 = 1;
-pub const SYSCALL_DISPATCH_FILTER_ALLOW: u32 = 0;
-pub const SYSCALL_DISPATCH_FILTER_BLOCK: u32 = 1;
-pub const PR_PAC_SET_ENABLED_KEYS: u32 = 60;
-pub const PR_PAC_GET_ENABLED_KEYS: u32 = 61;
-pub const PR_SCHED_CORE: u32 = 62;
-pub const PR_SCHED_CORE_GET: u32 = 0;
-pub const PR_SCHED_CORE_CREATE: u32 = 1;
-pub const PR_SCHED_CORE_SHARE_TO: u32 = 2;
-pub const PR_SCHED_CORE_SHARE_FROM: u32 = 3;
-pub const PR_SCHED_CORE_MAX: u32 = 4;
-pub const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0;
-pub const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1;
-pub const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2;
-pub const PR_SME_SET_VL: u32 = 63;
-pub const PR_SME_SET_VL_ONEXEC: u32 = 262144;
-pub const PR_SME_GET_VL: u32 = 64;
-pub const PR_SME_VL_LEN_MASK: u32 = 65535;
-pub const PR_SME_VL_INHERIT: u32 = 131072;
-pub const PR_SET_VMA: u32 = 1398164801;
-pub const PR_SET_VMA_ANON_NAME: u32 = 0;
-pub const GRND_NONBLOCK: u32 = 1;
-pub const GRND_RANDOM: u32 = 2;
-pub const GRND_INSECURE: u32 = 4;
-pub const ITIMER_REAL: u32 = 0;
-pub const ITIMER_VIRTUAL: u32 = 1;
-pub const ITIMER_PROF: u32 = 2;
-pub const CLOCK_REALTIME: u32 = 0;
-pub const CLOCK_MONOTONIC: u32 = 1;
-pub const CLOCK_PROCESS_CPUTIME_ID: u32 = 2;
-pub const CLOCK_THREAD_CPUTIME_ID: u32 = 3;
-pub const CLOCK_MONOTONIC_RAW: u32 = 4;
-pub const CLOCK_REALTIME_COARSE: u32 = 5;
-pub const CLOCK_MONOTONIC_COARSE: u32 = 6;
-pub const CLOCK_BOOTTIME: u32 = 7;
-pub const CLOCK_REALTIME_ALARM: u32 = 8;
-pub const CLOCK_BOOTTIME_ALARM: u32 = 9;
-pub const CLOCK_SGI_CYCLE: u32 = 10;
-pub const CLOCK_TAI: u32 = 11;
-pub const MAX_CLOCKS: u32 = 16;
-pub const CLOCKS_MASK: u32 = 1;
-pub const CLOCKS_MONO: u32 = 1;
-pub const TIMER_ABSTIME: u32 = 1;
-pub const RUSAGE_SELF: u32 = 0;
-pub const RUSAGE_CHILDREN: i32 = -1;
-pub const RUSAGE_BOTH: i32 = -2;
-pub const RUSAGE_THREAD: u32 = 1;
-pub const RLIM64_INFINITY: i32 = -1;
-pub const PRIO_MIN: i32 = -20;
-pub const PRIO_MAX: u32 = 20;
-pub const PRIO_PROCESS: u32 = 0;
-pub const PRIO_PGRP: u32 = 1;
-pub const PRIO_USER: u32 = 2;
-pub const _STK_LIM: u32 = 8388608;
-pub const MLOCK_LIMIT: u32 = 8388608;
-pub const RLIMIT_CPU: u32 = 0;
-pub const RLIMIT_FSIZE: u32 = 1;
-pub const RLIMIT_DATA: u32 = 2;
-pub const RLIMIT_STACK: u32 = 3;
-pub const RLIMIT_CORE: u32 = 4;
-pub const RLIMIT_RSS: u32 = 5;
-pub const RLIMIT_NPROC: u32 = 6;
-pub const RLIMIT_NOFILE: u32 = 7;
-pub const RLIMIT_MEMLOCK: u32 = 8;
-pub const RLIMIT_AS: u32 = 9;
-pub const RLIMIT_LOCKS: u32 = 10;
-pub const RLIMIT_SIGPENDING: u32 = 11;
-pub const RLIMIT_MSGQUEUE: u32 = 12;
-pub const RLIMIT_NICE: u32 = 13;
-pub const RLIMIT_RTPRIO: u32 = 14;
-pub const RLIMIT_RTTIME: u32 = 15;
-pub const RLIM_NLIMITS: u32 = 16;
-pub const RLIM_INFINITY: i32 = -1;
-pub const CSIGNAL: u32 = 255;
-pub const CLONE_VM: u32 = 256;
-pub const CLONE_FS: u32 = 512;
-pub const CLONE_FILES: u32 = 1024;
-pub const CLONE_SIGHAND: u32 = 2048;
-pub const CLONE_PIDFD: u32 = 4096;
-pub const CLONE_PTRACE: u32 = 8192;
-pub const CLONE_VFORK: u32 = 16384;
-pub const CLONE_PARENT: u32 = 32768;
-pub const CLONE_THREAD: u32 = 65536;
-pub const CLONE_NEWNS: u32 = 131072;
-pub const CLONE_SYSVSEM: u32 = 262144;
-pub const CLONE_SETTLS: u32 = 524288;
-pub const CLONE_PARENT_SETTID: u32 = 1048576;
-pub const CLONE_CHILD_CLEARTID: u32 = 2097152;
-pub const CLONE_DETACHED: u32 = 4194304;
-pub const CLONE_UNTRACED: u32 = 8388608;
-pub const CLONE_CHILD_SETTID: u32 = 16777216;
-pub const CLONE_NEWCGROUP: u32 = 33554432;
-pub const CLONE_NEWUTS: u32 = 67108864;
-pub const CLONE_NEWIPC: u32 = 134217728;
-pub const CLONE_NEWUSER: u32 = 268435456;
-pub const CLONE_NEWPID: u32 = 536870912;
-pub const CLONE_NEWNET: u32 = 1073741824;
-pub const CLONE_IO: u32 = 2147483648;
-pub const CLONE_CLEAR_SIGHAND: u64 = 4294967296;
-pub const CLONE_INTO_CGROUP: u64 = 8589934592;
-pub const CLONE_NEWTIME: u32 = 128;
-pub const CLONE_ARGS_SIZE_VER0: u32 = 64;
-pub const CLONE_ARGS_SIZE_VER1: u32 = 80;
-pub const CLONE_ARGS_SIZE_VER2: u32 = 88;
-pub const SCHED_NORMAL: u32 = 0;
-pub const SCHED_FIFO: u32 = 1;
-pub const SCHED_RR: u32 = 2;
-pub const SCHED_BATCH: u32 = 3;
-pub const SCHED_IDLE: u32 = 5;
-pub const SCHED_DEADLINE: u32 = 6;
-pub const SCHED_RESET_ON_FORK: u32 = 1073741824;
-pub const SCHED_FLAG_RESET_ON_FORK: u32 = 1;
-pub const SCHED_FLAG_RECLAIM: u32 = 2;
-pub const SCHED_FLAG_DL_OVERRUN: u32 = 4;
-pub const SCHED_FLAG_KEEP_POLICY: u32 = 8;
-pub const SCHED_FLAG_KEEP_PARAMS: u32 = 16;
-pub const SCHED_FLAG_UTIL_CLAMP_MIN: u32 = 32;
-pub const SCHED_FLAG_UTIL_CLAMP_MAX: u32 = 64;
-pub const SCHED_FLAG_KEEP_ALL: u32 = 24;
-pub const SCHED_FLAG_UTIL_CLAMP: u32 = 96;
-pub const SCHED_FLAG_ALL: u32 = 127;
-pub const NSIG: u32 = 32;
-pub const SIGHUP: u32 = 1;
-pub const SIGINT: u32 = 2;
-pub const SIGQUIT: u32 = 3;
-pub const SIGILL: u32 = 4;
-pub const SIGTRAP: u32 = 5;
-pub const SIGABRT: u32 = 6;
-pub const SIGIOT: u32 = 6;
-pub const SIGBUS: u32 = 7;
-pub const SIGFPE: u32 = 8;
-pub const SIGKILL: u32 = 9;
-pub const SIGUSR1: u32 = 10;
-pub const SIGSEGV: u32 = 11;
-pub const SIGUSR2: u32 = 12;
-pub const SIGPIPE: u32 = 13;
-pub const SIGALRM: u32 = 14;
-pub const SIGTERM: u32 = 15;
-pub const SIGSTKFLT: u32 = 16;
-pub const SIGCHLD: u32 = 17;
-pub const SIGCONT: u32 = 18;
-pub const SIGSTOP: u32 = 19;
-pub const SIGTSTP: u32 = 20;
-pub const SIGTTIN: u32 = 21;
-pub const SIGTTOU: u32 = 22;
-pub const SIGURG: u32 = 23;
-pub const SIGXCPU: u32 = 24;
-pub const SIGXFSZ: u32 = 25;
-pub const SIGVTALRM: u32 = 26;
-pub const SIGPROF: u32 = 27;
-pub const SIGWINCH: u32 = 28;
-pub const SIGIO: u32 = 29;
-pub const SIGPOLL: u32 = 29;
-pub const SIGPWR: u32 = 30;
-pub const SIGSYS: u32 = 31;
-pub const SIGUNUSED: u32 = 31;
-pub const SIGRTMIN: u32 = 32;
-pub const SA_RESTORER: u32 = 67108864;
-pub const MINSIGSTKSZ: u32 = 2048;
-pub const SIGSTKSZ: u32 = 8192;
-pub const SA_NOCLDSTOP: u32 = 1;
-pub const SA_NOCLDWAIT: u32 = 2;
-pub const SA_SIGINFO: u32 = 4;
-pub const SA_UNSUPPORTED: u32 = 1024;
-pub const SA_EXPOSE_TAGBITS: u32 = 2048;
-pub const SA_ONSTACK: u32 = 134217728;
-pub const SA_RESTART: u32 = 268435456;
-pub const SA_NODEFER: u32 = 1073741824;
-pub const SA_RESETHAND: u32 = 2147483648;
-pub const SA_NOMASK: u32 = 1073741824;
-pub const SA_ONESHOT: u32 = 2147483648;
-pub const SIG_BLOCK: u32 = 0;
-pub const SIG_UNBLOCK: u32 = 1;
-pub const SIG_SETMASK: u32 = 2;
-pub const SI_MAX_SIZE: u32 = 128;
-pub const SI_USER: u32 = 0;
-pub const SI_KERNEL: u32 = 128;
-pub const SI_QUEUE: i32 = -1;
-pub const SI_TIMER: i32 = -2;
-pub const SI_MESGQ: i32 = -3;
-pub const SI_ASYNCIO: i32 = -4;
-pub const SI_SIGIO: i32 = -5;
-pub const SI_TKILL: i32 = -6;
-pub const SI_DETHREAD: i32 = -7;
-pub const SI_ASYNCNL: i32 = -60;
-pub const ILL_ILLOPC: u32 = 1;
-pub const ILL_ILLOPN: u32 = 2;
-pub const ILL_ILLADR: u32 = 3;
-pub const ILL_ILLTRP: u32 = 4;
-pub const ILL_PRVOPC: u32 = 5;
-pub const ILL_PRVREG: u32 = 6;
-pub const ILL_COPROC: u32 = 7;
-pub const ILL_BADSTK: u32 = 8;
-pub const ILL_BADIADDR: u32 = 9;
-pub const __ILL_BREAK: u32 = 10;
-pub const __ILL_BNDMOD: u32 = 11;
-pub const NSIGILL: u32 = 11;
-pub const FPE_INTDIV: u32 = 1;
-pub const FPE_INTOVF: u32 = 2;
-pub const FPE_FLTDIV: u32 = 3;
-pub const FPE_FLTOVF: u32 = 4;
-pub const FPE_FLTUND: u32 = 5;
-pub const FPE_FLTRES: u32 = 6;
-pub const FPE_FLTINV: u32 = 7;
-pub const FPE_FLTSUB: u32 = 8;
-pub const __FPE_DECOVF: u32 = 9;
-pub const __FPE_DECDIV: u32 = 10;
-pub const __FPE_DECERR: u32 = 11;
-pub const __FPE_INVASC: u32 = 12;
-pub const __FPE_INVDEC: u32 = 13;
-pub const FPE_FLTUNK: u32 = 14;
-pub const FPE_CONDTRAP: u32 = 15;
-pub const NSIGFPE: u32 = 15;
-pub const SEGV_MAPERR: u32 = 1;
-pub const SEGV_ACCERR: u32 = 2;
-pub const SEGV_BNDERR: u32 = 3;
-pub const SEGV_PKUERR: u32 = 4;
-pub const SEGV_ACCADI: u32 = 5;
-pub const SEGV_ADIDERR: u32 = 6;
-pub const SEGV_ADIPERR: u32 = 7;
-pub const SEGV_MTEAERR: u32 = 8;
-pub const SEGV_MTESERR: u32 = 9;
-pub const NSIGSEGV: u32 = 9;
-pub const BUS_ADRALN: u32 = 1;
-pub const BUS_ADRERR: u32 = 2;
-pub const BUS_OBJERR: u32 = 3;
-pub const BUS_MCEERR_AR: u32 = 4;
-pub const BUS_MCEERR_AO: u32 = 5;
-pub const NSIGBUS: u32 = 5;
-pub const TRAP_BRKPT: u32 = 1;
-pub const TRAP_TRACE: u32 = 2;
-pub const TRAP_BRANCH: u32 = 3;
-pub const TRAP_HWBKPT: u32 = 4;
-pub const TRAP_UNK: u32 = 5;
-pub const TRAP_PERF: u32 = 6;
-pub const NSIGTRAP: u32 = 6;
-pub const TRAP_PERF_FLAG_ASYNC: u32 = 1;
-pub const CLD_EXITED: u32 = 1;
-pub const CLD_KILLED: u32 = 2;
-pub const CLD_DUMPED: u32 = 3;
-pub const CLD_TRAPPED: u32 = 4;
-pub const CLD_STOPPED: u32 = 5;
-pub const CLD_CONTINUED: u32 = 6;
-pub const NSIGCHLD: u32 = 6;
-pub const POLL_IN: u32 = 1;
-pub const POLL_OUT: u32 = 2;
-pub const POLL_MSG: u32 = 3;
-pub const POLL_ERR: u32 = 4;
-pub const POLL_PRI: u32 = 5;
-pub const POLL_HUP: u32 = 6;
-pub const NSIGPOLL: u32 = 6;
-pub const SYS_SECCOMP: u32 = 1;
-pub const SYS_USER_DISPATCH: u32 = 2;
-pub const NSIGSYS: u32 = 2;
-pub const EMT_TAGOVF: u32 = 1;
-pub const NSIGEMT: u32 = 1;
-pub const SIGEV_SIGNAL: u32 = 0;
-pub const SIGEV_NONE: u32 = 1;
-pub const SIGEV_THREAD: u32 = 2;
-pub const SIGEV_THREAD_ID: u32 = 4;
-pub const SIGEV_MAX_SIZE: u32 = 64;
-pub const SS_ONSTACK: u32 = 1;
-pub const SS_DISABLE: u32 = 2;
-pub const SS_AUTODISARM: u32 = 2147483648;
-pub const SS_FLAG_BITS: u32 = 2147483648;
-pub const S_IFMT: u32 = 61440;
-pub const S_IFSOCK: u32 = 49152;
-pub const S_IFLNK: u32 = 40960;
-pub const S_IFREG: u32 = 32768;
-pub const S_IFBLK: u32 = 24576;
-pub const S_IFDIR: u32 = 16384;
-pub const S_IFCHR: u32 = 8192;
-pub const S_IFIFO: u32 = 4096;
-pub const S_ISUID: u32 = 2048;
-pub const S_ISGID: u32 = 1024;
-pub const S_ISVTX: u32 = 512;
-pub const S_IRWXU: u32 = 448;
-pub const S_IRUSR: u32 = 256;
-pub const S_IWUSR: u32 = 128;
-pub const S_IXUSR: u32 = 64;
-pub const S_IRWXG: u32 = 56;
-pub const S_IRGRP: u32 = 32;
-pub const S_IWGRP: u32 = 16;
-pub const S_IXGRP: u32 = 8;
-pub const S_IRWXO: u32 = 7;
-pub const S_IROTH: u32 = 4;
-pub const S_IWOTH: u32 = 2;
-pub const S_IXOTH: u32 = 1;
-pub const STATX_TYPE: u32 = 1;
-pub const STATX_MODE: u32 = 2;
-pub const STATX_NLINK: u32 = 4;
-pub const STATX_UID: u32 = 8;
-pub const STATX_GID: u32 = 16;
-pub const STATX_ATIME: u32 = 32;
-pub const STATX_MTIME: u32 = 64;
-pub const STATX_CTIME: u32 = 128;
-pub const STATX_INO: u32 = 256;
-pub const STATX_SIZE: u32 = 512;
-pub const STATX_BLOCKS: u32 = 1024;
-pub const STATX_BASIC_STATS: u32 = 2047;
-pub const STATX_BTIME: u32 = 2048;
-pub const STATX_MNT_ID: u32 = 4096;
-pub const STATX_DIOALIGN: u32 = 8192;
-pub const STATX__RESERVED: u32 = 2147483648;
-pub const STATX_ALL: u32 = 4095;
-pub const STATX_ATTR_COMPRESSED: u32 = 4;
-pub const STATX_ATTR_IMMUTABLE: u32 = 16;
-pub const STATX_ATTR_APPEND: u32 = 32;
-pub const STATX_ATTR_NODUMP: u32 = 64;
-pub const STATX_ATTR_ENCRYPTED: u32 = 2048;
-pub const STATX_ATTR_AUTOMOUNT: u32 = 4096;
-pub const STATX_ATTR_MOUNT_ROOT: u32 = 8192;
-pub const STATX_ATTR_VERITY: u32 = 1048576;
-pub const STATX_ATTR_DAX: u32 = 2097152;
-pub const SI_LOAD_SHIFT: u32 = 16;
-pub const TCP_MSS_DEFAULT: u32 = 536;
-pub const TCP_MSS_DESIRED: u32 = 1220;
-pub const TCP_NODELAY: u32 = 1;
-pub const TCP_MAXSEG: u32 = 2;
-pub const TCP_CORK: u32 = 3;
-pub const TCP_KEEPIDLE: u32 = 4;
-pub const TCP_KEEPINTVL: u32 = 5;
-pub const TCP_KEEPCNT: u32 = 6;
-pub const TCP_SYNCNT: u32 = 7;
-pub const TCP_LINGER2: u32 = 8;
-pub const TCP_DEFER_ACCEPT: u32 = 9;
-pub const TCP_WINDOW_CLAMP: u32 = 10;
-pub const TCP_INFO: u32 = 11;
-pub const TCP_QUICKACK: u32 = 12;
-pub const TCP_CONGESTION: u32 = 13;
-pub const TCP_MD5SIG: u32 = 14;
-pub const TCP_THIN_LINEAR_TIMEOUTS: u32 = 16;
-pub const TCP_THIN_DUPACK: u32 = 17;
-pub const TCP_USER_TIMEOUT: u32 = 18;
-pub const TCP_REPAIR: u32 = 19;
-pub const TCP_REPAIR_QUEUE: u32 = 20;
-pub const TCP_QUEUE_SEQ: u32 = 21;
-pub const TCP_REPAIR_OPTIONS: u32 = 22;
-pub const TCP_FASTOPEN: u32 = 23;
-pub const TCP_TIMESTAMP: u32 = 24;
-pub const TCP_NOTSENT_LOWAT: u32 = 25;
-pub const TCP_CC_INFO: u32 = 26;
-pub const TCP_SAVE_SYN: u32 = 27;
-pub const TCP_SAVED_SYN: u32 = 28;
-pub const TCP_REPAIR_WINDOW: u32 = 29;
-pub const TCP_FASTOPEN_CONNECT: u32 = 30;
-pub const TCP_ULP: u32 = 31;
-pub const TCP_MD5SIG_EXT: u32 = 32;
-pub const TCP_FASTOPEN_KEY: u32 = 33;
-pub const TCP_FASTOPEN_NO_COOKIE: u32 = 34;
-pub const TCP_ZEROCOPY_RECEIVE: u32 = 35;
-pub const TCP_INQ: u32 = 36;
-pub const TCP_CM_INQ: u32 = 36;
-pub const TCP_TX_DELAY: u32 = 37;
-pub const TCP_REPAIR_ON: u32 = 1;
-pub const TCP_REPAIR_OFF: u32 = 0;
-pub const TCP_REPAIR_OFF_NO_WP: i32 = -1;
-pub const TCPI_OPT_TIMESTAMPS: u32 = 1;
-pub const TCPI_OPT_SACK: u32 = 2;
-pub const TCPI_OPT_WSCALE: u32 = 4;
-pub const TCPI_OPT_ECN: u32 = 8;
-pub const TCPI_OPT_ECN_SEEN: u32 = 16;
-pub const TCPI_OPT_SYN_DATA: u32 = 32;
-pub const TCP_MD5SIG_MAXKEYLEN: u32 = 80;
-pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
-pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
-pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
-pub const IGNBRK: u32 = 1;
-pub const BRKINT: u32 = 2;
-pub const IGNPAR: u32 = 4;
-pub const PARMRK: u32 = 8;
-pub const INPCK: u32 = 16;
-pub const ISTRIP: u32 = 32;
-pub const INLCR: u32 = 64;
-pub const IGNCR: u32 = 128;
-pub const ICRNL: u32 = 256;
-pub const IXANY: u32 = 2048;
-pub const OPOST: u32 = 1;
-pub const OCRNL: u32 = 8;
-pub const ONOCR: u32 = 16;
-pub const ONLRET: u32 = 32;
-pub const OFILL: u32 = 64;
-pub const OFDEL: u32 = 128;
-pub const B0: u32 = 0;
-pub const B50: u32 = 1;
-pub const B75: u32 = 2;
-pub const B110: u32 = 3;
-pub const B134: u32 = 4;
-pub const B150: u32 = 5;
-pub const B200: u32 = 6;
-pub const B300: u32 = 7;
-pub const B600: u32 = 8;
-pub const B1200: u32 = 9;
-pub const B1800: u32 = 10;
-pub const B2400: u32 = 11;
-pub const B4800: u32 = 12;
-pub const B9600: u32 = 13;
-pub const B19200: u32 = 14;
-pub const B38400: u32 = 15;
-pub const EXTA: u32 = 14;
-pub const EXTB: u32 = 15;
-pub const ADDRB: u32 = 536870912;
-pub const CMSPAR: u32 = 1073741824;
-pub const CRTSCTS: u32 = 2147483648;
-pub const IBSHIFT: u32 = 16;
-pub const TCOOFF: u32 = 0;
-pub const TCOON: u32 = 1;
-pub const TCIOFF: u32 = 2;
-pub const TCION: u32 = 3;
-pub const TCIFLUSH: u32 = 0;
-pub const TCOFLUSH: u32 = 1;
-pub const TCIOFLUSH: u32 = 2;
-pub const NCCS: u32 = 19;
-pub const VINTR: u32 = 0;
-pub const VQUIT: u32 = 1;
-pub const VERASE: u32 = 2;
-pub const VKILL: u32 = 3;
-pub const VEOF: u32 = 4;
-pub const VTIME: u32 = 5;
-pub const VMIN: u32 = 6;
-pub const VSWTC: u32 = 7;
-pub const VSTART: u32 = 8;
-pub const VSTOP: u32 = 9;
-pub const VSUSP: u32 = 10;
-pub const VEOL: u32 = 11;
-pub const VREPRINT: u32 = 12;
-pub const VDISCARD: u32 = 13;
-pub const VWERASE: u32 = 14;
-pub const VLNEXT: u32 = 15;
-pub const VEOL2: u32 = 16;
-pub const IUCLC: u32 = 512;
-pub const IXON: u32 = 1024;
-pub const IXOFF: u32 = 4096;
-pub const IMAXBEL: u32 = 8192;
-pub const IUTF8: u32 = 16384;
-pub const OLCUC: u32 = 2;
-pub const ONLCR: u32 = 4;
-pub const NLDLY: u32 = 256;
-pub const NL0: u32 = 0;
-pub const NL1: u32 = 256;
-pub const CRDLY: u32 = 1536;
-pub const CR0: u32 = 0;
-pub const CR1: u32 = 512;
-pub const CR2: u32 = 1024;
-pub const CR3: u32 = 1536;
-pub const TABDLY: u32 = 6144;
-pub const TAB0: u32 = 0;
-pub const TAB1: u32 = 2048;
-pub const TAB2: u32 = 4096;
-pub const TAB3: u32 = 6144;
-pub const XTABS: u32 = 6144;
-pub const BSDLY: u32 = 8192;
-pub const BS0: u32 = 0;
-pub const BS1: u32 = 8192;
-pub const VTDLY: u32 = 16384;
-pub const VT0: u32 = 0;
-pub const VT1: u32 = 16384;
-pub const FFDLY: u32 = 32768;
-pub const FF0: u32 = 0;
-pub const FF1: u32 = 32768;
-pub const CBAUD: u32 = 4111;
-pub const CSIZE: u32 = 48;
-pub const CS5: u32 = 0;
-pub const CS6: u32 = 16;
-pub const CS7: u32 = 32;
-pub const CS8: u32 = 48;
-pub const CSTOPB: u32 = 64;
-pub const CREAD: u32 = 128;
-pub const PARENB: u32 = 256;
-pub const PARODD: u32 = 512;
-pub const HUPCL: u32 = 1024;
-pub const CLOCAL: u32 = 2048;
-pub const CBAUDEX: u32 = 4096;
-pub const BOTHER: u32 = 4096;
-pub const B57600: u32 = 4097;
-pub const B115200: u32 = 4098;
-pub const B230400: u32 = 4099;
-pub const B460800: u32 = 4100;
-pub const B500000: u32 = 4101;
-pub const B576000: u32 = 4102;
-pub const B921600: u32 = 4103;
-pub const B1000000: u32 = 4104;
-pub const B1152000: u32 = 4105;
-pub const B1500000: u32 = 4106;
-pub const B2000000: u32 = 4107;
-pub const B2500000: u32 = 4108;
-pub const B3000000: u32 = 4109;
-pub const B3500000: u32 = 4110;
-pub const B4000000: u32 = 4111;
-pub const CIBAUD: u32 = 269418496;
-pub const ISIG: u32 = 1;
-pub const ICANON: u32 = 2;
-pub const XCASE: u32 = 4;
-pub const ECHO: u32 = 8;
-pub const ECHOE: u32 = 16;
-pub const ECHOK: u32 = 32;
-pub const ECHONL: u32 = 64;
-pub const NOFLSH: u32 = 128;
-pub const TOSTOP: u32 = 256;
-pub const ECHOCTL: u32 = 512;
-pub const ECHOPRT: u32 = 1024;
-pub const ECHOKE: u32 = 2048;
-pub const FLUSHO: u32 = 4096;
-pub const PENDIN: u32 = 16384;
-pub const IEXTEN: u32 = 32768;
-pub const EXTPROC: u32 = 65536;
-pub const TCSANOW: u32 = 0;
-pub const TCSADRAIN: u32 = 1;
-pub const TCSAFLUSH: u32 = 2;
-pub const TIOCPKT_DATA: u32 = 0;
-pub const TIOCPKT_FLUSHREAD: u32 = 1;
-pub const TIOCPKT_FLUSHWRITE: u32 = 2;
-pub const TIOCPKT_STOP: u32 = 4;
-pub const TIOCPKT_START: u32 = 8;
-pub const TIOCPKT_NOSTOP: u32 = 16;
-pub const TIOCPKT_DOSTOP: u32 = 32;
-pub const TIOCPKT_IOCTL: u32 = 64;
-pub const TIOCSER_TEMT: u32 = 1;
-pub const NCC: u32 = 8;
-pub const TIOCM_LE: u32 = 1;
-pub const TIOCM_DTR: u32 = 2;
-pub const TIOCM_RTS: u32 = 4;
-pub const TIOCM_ST: u32 = 8;
-pub const TIOCM_SR: u32 = 16;
-pub const TIOCM_CTS: u32 = 32;
-pub const TIOCM_CAR: u32 = 64;
-pub const TIOCM_RNG: u32 = 128;
-pub const TIOCM_DSR: u32 = 256;
-pub const TIOCM_CD: u32 = 64;
-pub const TIOCM_RI: u32 = 128;
-pub const TIOCM_OUT1: u32 = 8192;
-pub const TIOCM_OUT2: u32 = 16384;
-pub const TIOCM_LOOP: u32 = 32768;
-pub const UIO_FASTIOV: u32 = 8;
-pub const UIO_MAXIOV: u32 = 1024;
-pub const UNIX_PATH_MAX: u32 = 108;
-pub const __X32_SYSCALL_BIT: u32 = 1073741824;
-pub const __NR_read: u32 = 0;
-pub const __NR_write: u32 = 1;
-pub const __NR_open: u32 = 2;
-pub const __NR_close: u32 = 3;
-pub const __NR_stat: u32 = 4;
-pub const __NR_fstat: u32 = 5;
-pub const __NR_lstat: u32 = 6;
-pub const __NR_poll: u32 = 7;
-pub const __NR_lseek: u32 = 8;
-pub const __NR_mmap: u32 = 9;
-pub const __NR_mprotect: u32 = 10;
-pub const __NR_munmap: u32 = 11;
-pub const __NR_brk: u32 = 12;
-pub const __NR_rt_sigaction: u32 = 13;
-pub const __NR_rt_sigprocmask: u32 = 14;
-pub const __NR_rt_sigreturn: u32 = 15;
-pub const __NR_ioctl: u32 = 16;
-pub const __NR_pread64: u32 = 17;
-pub const __NR_pwrite64: u32 = 18;
-pub const __NR_readv: u32 = 19;
-pub const __NR_writev: u32 = 20;
-pub const __NR_access: u32 = 21;
-pub const __NR_pipe: u32 = 22;
-pub const __NR_select: u32 = 23;
-pub const __NR_sched_yield: u32 = 24;
-pub const __NR_mremap: u32 = 25;
-pub const __NR_msync: u32 = 26;
-pub const __NR_mincore: u32 = 27;
-pub const __NR_madvise: u32 = 28;
-pub const __NR_shmget: u32 = 29;
-pub const __NR_shmat: u32 = 30;
-pub const __NR_shmctl: u32 = 31;
-pub const __NR_dup: u32 = 32;
-pub const __NR_dup2: u32 = 33;
-pub const __NR_pause: u32 = 34;
-pub const __NR_nanosleep: u32 = 35;
-pub const __NR_getitimer: u32 = 36;
-pub const __NR_alarm: u32 = 37;
-pub const __NR_setitimer: u32 = 38;
-pub const __NR_getpid: u32 = 39;
-pub const __NR_sendfile: u32 = 40;
-pub const __NR_socket: u32 = 41;
-pub const __NR_connect: u32 = 42;
-pub const __NR_accept: u32 = 43;
-pub const __NR_sendto: u32 = 44;
-pub const __NR_recvfrom: u32 = 45;
-pub const __NR_sendmsg: u32 = 46;
-pub const __NR_recvmsg: u32 = 47;
-pub const __NR_shutdown: u32 = 48;
-pub const __NR_bind: u32 = 49;
-pub const __NR_listen: u32 = 50;
-pub const __NR_getsockname: u32 = 51;
-pub const __NR_getpeername: u32 = 52;
-pub const __NR_socketpair: u32 = 53;
-pub const __NR_setsockopt: u32 = 54;
-pub const __NR_getsockopt: u32 = 55;
-pub const __NR_clone: u32 = 56;
-pub const __NR_fork: u32 = 57;
-pub const __NR_vfork: u32 = 58;
-pub const __NR_execve: u32 = 59;
-pub const __NR_exit: u32 = 60;
-pub const __NR_wait4: u32 = 61;
-pub const __NR_kill: u32 = 62;
-pub const __NR_uname: u32 = 63;
-pub const __NR_semget: u32 = 64;
-pub const __NR_semop: u32 = 65;
-pub const __NR_semctl: u32 = 66;
-pub const __NR_shmdt: u32 = 67;
-pub const __NR_msgget: u32 = 68;
-pub const __NR_msgsnd: u32 = 69;
-pub const __NR_msgrcv: u32 = 70;
-pub const __NR_msgctl: u32 = 71;
-pub const __NR_fcntl: u32 = 72;
-pub const __NR_flock: u32 = 73;
-pub const __NR_fsync: u32 = 74;
-pub const __NR_fdatasync: u32 = 75;
-pub const __NR_truncate: u32 = 76;
-pub const __NR_ftruncate: u32 = 77;
-pub const __NR_getdents: u32 = 78;
-pub const __NR_getcwd: u32 = 79;
-pub const __NR_chdir: u32 = 80;
-pub const __NR_fchdir: u32 = 81;
-pub const __NR_rename: u32 = 82;
-pub const __NR_mkdir: u32 = 83;
-pub const __NR_rmdir: u32 = 84;
-pub const __NR_creat: u32 = 85;
-pub const __NR_link: u32 = 86;
-pub const __NR_unlink: u32 = 87;
-pub const __NR_symlink: u32 = 88;
-pub const __NR_readlink: u32 = 89;
-pub const __NR_chmod: u32 = 90;
-pub const __NR_fchmod: u32 = 91;
-pub const __NR_chown: u32 = 92;
-pub const __NR_fchown: u32 = 93;
-pub const __NR_lchown: u32 = 94;
-pub const __NR_umask: u32 = 95;
-pub const __NR_gettimeofday: u32 = 96;
-pub const __NR_getrlimit: u32 = 97;
-pub const __NR_getrusage: u32 = 98;
-pub const __NR_sysinfo: u32 = 99;
-pub const __NR_times: u32 = 100;
-pub const __NR_ptrace: u32 = 101;
-pub const __NR_getuid: u32 = 102;
-pub const __NR_syslog: u32 = 103;
-pub const __NR_getgid: u32 = 104;
-pub const __NR_setuid: u32 = 105;
-pub const __NR_setgid: u32 = 106;
-pub const __NR_geteuid: u32 = 107;
-pub const __NR_getegid: u32 = 108;
-pub const __NR_setpgid: u32 = 109;
-pub const __NR_getppid: u32 = 110;
-pub const __NR_getpgrp: u32 = 111;
-pub const __NR_setsid: u32 = 112;
-pub const __NR_setreuid: u32 = 113;
-pub const __NR_setregid: u32 = 114;
-pub const __NR_getgroups: u32 = 115;
-pub const __NR_setgroups: u32 = 116;
-pub const __NR_setresuid: u32 = 117;
-pub const __NR_getresuid: u32 = 118;
-pub const __NR_setresgid: u32 = 119;
-pub const __NR_getresgid: u32 = 120;
-pub const __NR_getpgid: u32 = 121;
-pub const __NR_setfsuid: u32 = 122;
-pub const __NR_setfsgid: u32 = 123;
-pub const __NR_getsid: u32 = 124;
-pub const __NR_capget: u32 = 125;
-pub const __NR_capset: u32 = 126;
-pub const __NR_rt_sigpending: u32 = 127;
-pub const __NR_rt_sigtimedwait: u32 = 128;
-pub const __NR_rt_sigqueueinfo: u32 = 129;
-pub const __NR_rt_sigsuspend: u32 = 130;
-pub const __NR_sigaltstack: u32 = 131;
-pub const __NR_utime: u32 = 132;
-pub const __NR_mknod: u32 = 133;
-pub const __NR_uselib: u32 = 134;
-pub const __NR_personality: u32 = 135;
-pub const __NR_ustat: u32 = 136;
-pub const __NR_statfs: u32 = 137;
-pub const __NR_fstatfs: u32 = 138;
-pub const __NR_sysfs: u32 = 139;
-pub const __NR_getpriority: u32 = 140;
-pub const __NR_setpriority: u32 = 141;
-pub const __NR_sched_setparam: u32 = 142;
-pub const __NR_sched_getparam: u32 = 143;
-pub const __NR_sched_setscheduler: u32 = 144;
-pub const __NR_sched_getscheduler: u32 = 145;
-pub const __NR_sched_get_priority_max: u32 = 146;
-pub const __NR_sched_get_priority_min: u32 = 147;
-pub const __NR_sched_rr_get_interval: u32 = 148;
-pub const __NR_mlock: u32 = 149;
-pub const __NR_munlock: u32 = 150;
-pub const __NR_mlockall: u32 = 151;
-pub const __NR_munlockall: u32 = 152;
-pub const __NR_vhangup: u32 = 153;
-pub const __NR_modify_ldt: u32 = 154;
-pub const __NR_pivot_root: u32 = 155;
-pub const __NR__sysctl: u32 = 156;
-pub const __NR_prctl: u32 = 157;
-pub const __NR_arch_prctl: u32 = 158;
-pub const __NR_adjtimex: u32 = 159;
-pub const __NR_setrlimit: u32 = 160;
-pub const __NR_chroot: u32 = 161;
-pub const __NR_sync: u32 = 162;
-pub const __NR_acct: u32 = 163;
-pub const __NR_settimeofday: u32 = 164;
-pub const __NR_mount: u32 = 165;
-pub const __NR_umount2: u32 = 166;
-pub const __NR_swapon: u32 = 167;
-pub const __NR_swapoff: u32 = 168;
-pub const __NR_reboot: u32 = 169;
-pub const __NR_sethostname: u32 = 170;
-pub const __NR_setdomainname: u32 = 171;
-pub const __NR_iopl: u32 = 172;
-pub const __NR_ioperm: u32 = 173;
-pub const __NR_create_module: u32 = 174;
-pub const __NR_init_module: u32 = 175;
-pub const __NR_delete_module: u32 = 176;
-pub const __NR_get_kernel_syms: u32 = 177;
-pub const __NR_query_module: u32 = 178;
-pub const __NR_quotactl: u32 = 179;
-pub const __NR_nfsservctl: u32 = 180;
-pub const __NR_getpmsg: u32 = 181;
-pub const __NR_putpmsg: u32 = 182;
-pub const __NR_afs_syscall: u32 = 183;
-pub const __NR_tuxcall: u32 = 184;
-pub const __NR_security: u32 = 185;
-pub const __NR_gettid: u32 = 186;
-pub const __NR_readahead: u32 = 187;
-pub const __NR_setxattr: u32 = 188;
-pub const __NR_lsetxattr: u32 = 189;
-pub const __NR_fsetxattr: u32 = 190;
-pub const __NR_getxattr: u32 = 191;
-pub const __NR_lgetxattr: u32 = 192;
-pub const __NR_fgetxattr: u32 = 193;
-pub const __NR_listxattr: u32 = 194;
-pub const __NR_llistxattr: u32 = 195;
-pub const __NR_flistxattr: u32 = 196;
-pub const __NR_removexattr: u32 = 197;
-pub const __NR_lremovexattr: u32 = 198;
-pub const __NR_fremovexattr: u32 = 199;
-pub const __NR_tkill: u32 = 200;
-pub const __NR_time: u32 = 201;
-pub const __NR_futex: u32 = 202;
-pub const __NR_sched_setaffinity: u32 = 203;
-pub const __NR_sched_getaffinity: u32 = 204;
-pub const __NR_set_thread_area: u32 = 205;
-pub const __NR_io_setup: u32 = 206;
-pub const __NR_io_destroy: u32 = 207;
-pub const __NR_io_getevents: u32 = 208;
-pub const __NR_io_submit: u32 = 209;
-pub const __NR_io_cancel: u32 = 210;
-pub const __NR_get_thread_area: u32 = 211;
-pub const __NR_lookup_dcookie: u32 = 212;
-pub const __NR_epoll_create: u32 = 213;
-pub const __NR_epoll_ctl_old: u32 = 214;
-pub const __NR_epoll_wait_old: u32 = 215;
-pub const __NR_remap_file_pages: u32 = 216;
-pub const __NR_getdents64: u32 = 217;
-pub const __NR_set_tid_address: u32 = 218;
-pub const __NR_restart_syscall: u32 = 219;
-pub const __NR_semtimedop: u32 = 220;
-pub const __NR_fadvise64: u32 = 221;
-pub const __NR_timer_create: u32 = 222;
-pub const __NR_timer_settime: u32 = 223;
-pub const __NR_timer_gettime: u32 = 224;
-pub const __NR_timer_getoverrun: u32 = 225;
-pub const __NR_timer_delete: u32 = 226;
-pub const __NR_clock_settime: u32 = 227;
-pub const __NR_clock_gettime: u32 = 228;
-pub const __NR_clock_getres: u32 = 229;
-pub const __NR_clock_nanosleep: u32 = 230;
-pub const __NR_exit_group: u32 = 231;
-pub const __NR_epoll_wait: u32 = 232;
-pub const __NR_epoll_ctl: u32 = 233;
-pub const __NR_tgkill: u32 = 234;
-pub const __NR_utimes: u32 = 235;
-pub const __NR_vserver: u32 = 236;
-pub const __NR_mbind: u32 = 237;
-pub const __NR_set_mempolicy: u32 = 238;
-pub const __NR_get_mempolicy: u32 = 239;
-pub const __NR_mq_open: u32 = 240;
-pub const __NR_mq_unlink: u32 = 241;
-pub const __NR_mq_timedsend: u32 = 242;
-pub const __NR_mq_timedreceive: u32 = 243;
-pub const __NR_mq_notify: u32 = 244;
-pub const __NR_mq_getsetattr: u32 = 245;
-pub const __NR_kexec_load: u32 = 246;
-pub const __NR_waitid: u32 = 247;
-pub const __NR_add_key: u32 = 248;
-pub const __NR_request_key: u32 = 249;
-pub const __NR_keyctl: u32 = 250;
-pub const __NR_ioprio_set: u32 = 251;
-pub const __NR_ioprio_get: u32 = 252;
-pub const __NR_inotify_init: u32 = 253;
-pub const __NR_inotify_add_watch: u32 = 254;
-pub const __NR_inotify_rm_watch: u32 = 255;
-pub const __NR_migrate_pages: u32 = 256;
-pub const __NR_openat: u32 = 257;
-pub const __NR_mkdirat: u32 = 258;
-pub const __NR_mknodat: u32 = 259;
-pub const __NR_fchownat: u32 = 260;
-pub const __NR_futimesat: u32 = 261;
-pub const __NR_newfstatat: u32 = 262;
-pub const __NR_unlinkat: u32 = 263;
-pub const __NR_renameat: u32 = 264;
-pub const __NR_linkat: u32 = 265;
-pub const __NR_symlinkat: u32 = 266;
-pub const __NR_readlinkat: u32 = 267;
-pub const __NR_fchmodat: u32 = 268;
-pub const __NR_faccessat: u32 = 269;
-pub const __NR_pselect6: u32 = 270;
-pub const __NR_ppoll: u32 = 271;
-pub const __NR_unshare: u32 = 272;
-pub const __NR_set_robust_list: u32 = 273;
-pub const __NR_get_robust_list: u32 = 274;
-pub const __NR_splice: u32 = 275;
-pub const __NR_tee: u32 = 276;
-pub const __NR_sync_file_range: u32 = 277;
-pub const __NR_vmsplice: u32 = 278;
-pub const __NR_move_pages: u32 = 279;
-pub const __NR_utimensat: u32 = 280;
-pub const __NR_epoll_pwait: u32 = 281;
-pub const __NR_signalfd: u32 = 282;
-pub const __NR_timerfd_create: u32 = 283;
-pub const __NR_eventfd: u32 = 284;
-pub const __NR_fallocate: u32 = 285;
-pub const __NR_timerfd_settime: u32 = 286;
-pub const __NR_timerfd_gettime: u32 = 287;
-pub const __NR_accept4: u32 = 288;
-pub const __NR_signalfd4: u32 = 289;
-pub const __NR_eventfd2: u32 = 290;
-pub const __NR_epoll_create1: u32 = 291;
-pub const __NR_dup3: u32 = 292;
-pub const __NR_pipe2: u32 = 293;
-pub const __NR_inotify_init1: u32 = 294;
-pub const __NR_preadv: u32 = 295;
-pub const __NR_pwritev: u32 = 296;
-pub const __NR_rt_tgsigqueueinfo: u32 = 297;
-pub const __NR_perf_event_open: u32 = 298;
-pub const __NR_recvmmsg: u32 = 299;
-pub const __NR_fanotify_init: u32 = 300;
-pub const __NR_fanotify_mark: u32 = 301;
-pub const __NR_prlimit64: u32 = 302;
-pub const __NR_name_to_handle_at: u32 = 303;
-pub const __NR_open_by_handle_at: u32 = 304;
-pub const __NR_clock_adjtime: u32 = 305;
-pub const __NR_syncfs: u32 = 306;
-pub const __NR_sendmmsg: u32 = 307;
-pub const __NR_setns: u32 = 308;
-pub const __NR_getcpu: u32 = 309;
-pub const __NR_process_vm_readv: u32 = 310;
-pub const __NR_process_vm_writev: u32 = 311;
-pub const __NR_kcmp: u32 = 312;
-pub const __NR_finit_module: u32 = 313;
-pub const __NR_sched_setattr: u32 = 314;
-pub const __NR_sched_getattr: u32 = 315;
-pub const __NR_renameat2: u32 = 316;
-pub const __NR_seccomp: u32 = 317;
-pub const __NR_getrandom: u32 = 318;
-pub const __NR_memfd_create: u32 = 319;
-pub const __NR_kexec_file_load: u32 = 320;
-pub const __NR_bpf: u32 = 321;
-pub const __NR_execveat: u32 = 322;
-pub const __NR_userfaultfd: u32 = 323;
-pub const __NR_membarrier: u32 = 324;
-pub const __NR_mlock2: u32 = 325;
-pub const __NR_copy_file_range: u32 = 326;
-pub const __NR_preadv2: u32 = 327;
-pub const __NR_pwritev2: u32 = 328;
-pub const __NR_pkey_mprotect: u32 = 329;
-pub const __NR_pkey_alloc: u32 = 330;
-pub const __NR_pkey_free: u32 = 331;
-pub const __NR_statx: u32 = 332;
-pub const __NR_io_pgetevents: u32 = 333;
-pub const __NR_rseq: u32 = 334;
-pub const __NR_pidfd_send_signal: u32 = 424;
-pub const __NR_io_uring_setup: u32 = 425;
-pub const __NR_io_uring_enter: u32 = 426;
-pub const __NR_io_uring_register: u32 = 427;
-pub const __NR_open_tree: u32 = 428;
-pub const __NR_move_mount: u32 = 429;
-pub const __NR_fsopen: u32 = 430;
-pub const __NR_fsconfig: u32 = 431;
-pub const __NR_fsmount: u32 = 432;
-pub const __NR_fspick: u32 = 433;
-pub const __NR_pidfd_open: u32 = 434;
-pub const __NR_clone3: u32 = 435;
-pub const __NR_close_range: u32 = 436;
-pub const __NR_openat2: u32 = 437;
-pub const __NR_pidfd_getfd: u32 = 438;
-pub const __NR_faccessat2: u32 = 439;
-pub const __NR_process_madvise: u32 = 440;
-pub const __NR_epoll_pwait2: u32 = 441;
-pub const __NR_mount_setattr: u32 = 442;
-pub const __NR_quotactl_fd: u32 = 443;
-pub const __NR_landlock_create_ruleset: u32 = 444;
-pub const __NR_landlock_add_rule: u32 = 445;
-pub const __NR_landlock_restrict_self: u32 = 446;
-pub const __NR_memfd_secret: u32 = 447;
-pub const __NR_process_mrelease: u32 = 448;
-pub const __NR_futex_waitv: u32 = 449;
-pub const __NR_set_mempolicy_home_node: u32 = 450;
-pub const __OLD_UTS_LEN: u32 = 8;
-pub const __NEW_UTS_LEN: u32 = 64;
-pub const WNOHANG: u32 = 1;
-pub const WUNTRACED: u32 = 2;
-pub const WSTOPPED: u32 = 2;
-pub const WEXITED: u32 = 4;
-pub const WCONTINUED: u32 = 8;
-pub const WNOWAIT: u32 = 16777216;
-pub const __WNOTHREAD: u32 = 536870912;
-pub const __WALL: u32 = 1073741824;
-pub const __WCLONE: u32 = 2147483648;
-pub const P_ALL: u32 = 0;
-pub const P_PID: u32 = 1;
-pub const P_PGID: u32 = 2;
-pub const P_PIDFD: u32 = 3;
-pub const XATTR_CREATE: u32 = 1;
-pub const XATTR_REPLACE: u32 = 2;
-pub const XATTR_OS2_PREFIX: &[u8; 5usize] = b"os2.\0";
-pub const XATTR_MAC_OSX_PREFIX: &[u8; 5usize] = b"osx.\0";
-pub const XATTR_BTRFS_PREFIX: &[u8; 7usize] = b"btrfs.\0";
-pub const XATTR_HURD_PREFIX: &[u8; 5usize] = b"gnu.\0";
-pub const XATTR_SECURITY_PREFIX: &[u8; 10usize] = b"security.\0";
-pub const XATTR_SYSTEM_PREFIX: &[u8; 8usize] = b"system.\0";
-pub const XATTR_TRUSTED_PREFIX: &[u8; 9usize] = b"trusted.\0";
-pub const XATTR_USER_PREFIX: &[u8; 6usize] = b"user.\0";
-pub const XATTR_EVM_SUFFIX: &[u8; 4usize] = b"evm\0";
-pub const XATTR_NAME_EVM: &[u8; 13usize] = b"security.evm\0";
-pub const XATTR_IMA_SUFFIX: &[u8; 4usize] = b"ima\0";
-pub const XATTR_NAME_IMA: &[u8; 13usize] = b"security.ima\0";
-pub const XATTR_SELINUX_SUFFIX: &[u8; 8usize] = b"selinux\0";
-pub const XATTR_NAME_SELINUX: &[u8; 17usize] = b"security.selinux\0";
-pub const XATTR_SMACK_SUFFIX: &[u8; 8usize] = b"SMACK64\0";
-pub const XATTR_SMACK_IPIN: &[u8; 12usize] = b"SMACK64IPIN\0";
-pub const XATTR_SMACK_IPOUT: &[u8; 13usize] = b"SMACK64IPOUT\0";
-pub const XATTR_SMACK_EXEC: &[u8; 12usize] = b"SMACK64EXEC\0";
-pub const XATTR_SMACK_TRANSMUTE: &[u8; 17usize] = b"SMACK64TRANSMUTE\0";
-pub const XATTR_SMACK_MMAP: &[u8; 12usize] = b"SMACK64MMAP\0";
-pub const XATTR_NAME_SMACK: &[u8; 17usize] = b"security.SMACK64\0";
-pub const XATTR_NAME_SMACKIPIN: &[u8; 21usize] = b"security.SMACK64IPIN\0";
-pub const XATTR_NAME_SMACKIPOUT: &[u8; 22usize] = b"security.SMACK64IPOUT\0";
-pub const XATTR_NAME_SMACKEXEC: &[u8; 21usize] = b"security.SMACK64EXEC\0";
-pub const XATTR_NAME_SMACKTRANSMUTE: &[u8; 26usize] = b"security.SMACK64TRANSMUTE\0";
-pub const XATTR_NAME_SMACKMMAP: &[u8; 21usize] = b"security.SMACK64MMAP\0";
-pub const XATTR_APPARMOR_SUFFIX: &[u8; 9usize] = b"apparmor\0";
-pub const XATTR_NAME_APPARMOR: &[u8; 18usize] = b"security.apparmor\0";
-pub const XATTR_CAPS_SUFFIX: &[u8; 11usize] = b"capability\0";
-pub const XATTR_NAME_CAPS: &[u8; 20usize] = b"security.capability\0";
-pub const XATTR_POSIX_ACL_ACCESS: &[u8; 17usize] = b"posix_acl_access\0";
-pub const XATTR_NAME_POSIX_ACL_ACCESS: &[u8; 24usize] = b"system.posix_acl_access\0";
-pub const XATTR_POSIX_ACL_DEFAULT: &[u8; 18usize] = b"posix_acl_default\0";
-pub const XATTR_NAME_POSIX_ACL_DEFAULT: &[u8; 25usize] = b"system.posix_acl_default\0";
-pub const MFD_CLOEXEC: u32 = 1;
-pub const MFD_ALLOW_SEALING: u32 = 2;
-pub const MFD_HUGETLB: u32 = 4;
-pub const MFD_HUGE_SHIFT: u32 = 26;
-pub const MFD_HUGE_MASK: u32 = 63;
-pub const MFD_HUGE_64KB: u32 = 1073741824;
-pub const MFD_HUGE_512KB: u32 = 1275068416;
-pub const MFD_HUGE_1MB: u32 = 1342177280;
-pub const MFD_HUGE_2MB: u32 = 1409286144;
-pub const MFD_HUGE_8MB: u32 = 1543503872;
-pub const MFD_HUGE_16MB: u32 = 1610612736;
-pub const MFD_HUGE_32MB: u32 = 1677721600;
-pub const MFD_HUGE_256MB: u32 = 1879048192;
-pub const MFD_HUGE_512MB: u32 = 1946157056;
-pub const MFD_HUGE_1GB: u32 = 2013265920;
-pub const MFD_HUGE_2GB: u32 = 2080374784;
-pub const MFD_HUGE_16GB: u32 = 2281701376;
-pub const TFD_TIMER_ABSTIME: u32 = 1;
-pub const TFD_TIMER_CANCEL_ON_SET: u32 = 2;
-pub const TFD_CLOEXEC: u32 = 524288;
-pub const TFD_NONBLOCK: u32 = 2048;
-pub const USERFAULTFD_IOC: u32 = 170;
-pub const _UFFDIO_REGISTER: u32 = 0;
-pub const _UFFDIO_UNREGISTER: u32 = 1;
-pub const _UFFDIO_WAKE: u32 = 2;
-pub const _UFFDIO_COPY: u32 = 3;
-pub const _UFFDIO_ZEROPAGE: u32 = 4;
-pub const _UFFDIO_WRITEPROTECT: u32 = 6;
-pub const _UFFDIO_CONTINUE: u32 = 7;
-pub const _UFFDIO_API: u32 = 63;
-pub const UFFDIO: u32 = 170;
-pub const UFFD_EVENT_PAGEFAULT: u32 = 18;
-pub const UFFD_EVENT_FORK: u32 = 19;
-pub const UFFD_EVENT_REMAP: u32 = 20;
-pub const UFFD_EVENT_REMOVE: u32 = 21;
-pub const UFFD_EVENT_UNMAP: u32 = 22;
-pub const UFFD_PAGEFAULT_FLAG_WRITE: u32 = 1;
-pub const UFFD_PAGEFAULT_FLAG_WP: u32 = 2;
-pub const UFFD_PAGEFAULT_FLAG_MINOR: u32 = 4;
-pub const UFFD_FEATURE_PAGEFAULT_FLAG_WP: u32 = 1;
-pub const UFFD_FEATURE_EVENT_FORK: u32 = 2;
-pub const UFFD_FEATURE_EVENT_REMAP: u32 = 4;
-pub const UFFD_FEATURE_EVENT_REMOVE: u32 = 8;
-pub const UFFD_FEATURE_MISSING_HUGETLBFS: u32 = 16;
-pub const UFFD_FEATURE_MISSING_SHMEM: u32 = 32;
-pub const UFFD_FEATURE_EVENT_UNMAP: u32 = 64;
-pub const UFFD_FEATURE_SIGBUS: u32 = 128;
-pub const UFFD_FEATURE_THREAD_ID: u32 = 256;
-pub const UFFD_FEATURE_MINOR_HUGETLBFS: u32 = 512;
-pub const UFFD_FEATURE_MINOR_SHMEM: u32 = 1024;
-pub const UFFD_FEATURE_EXACT_ADDRESS: u32 = 2048;
-pub const UFFD_FEATURE_WP_HUGETLBFS_SHMEM: u32 = 4096;
-pub const UFFD_USER_MODE_ONLY: u32 = 1;
-pub const IORING_FILE_INDEX_ALLOC: i32 = -1;
-pub const IORING_SETUP_IOPOLL: u32 = 1;
-pub const IORING_SETUP_SQPOLL: u32 = 2;
-pub const IORING_SETUP_SQ_AFF: u32 = 4;
-pub const IORING_SETUP_CQSIZE: u32 = 8;
-pub const IORING_SETUP_CLAMP: u32 = 16;
-pub const IORING_SETUP_ATTACH_WQ: u32 = 32;
-pub const IORING_SETUP_R_DISABLED: u32 = 64;
-pub const IORING_SETUP_SUBMIT_ALL: u32 = 128;
-pub const IORING_SETUP_COOP_TASKRUN: u32 = 256;
-pub const IORING_SETUP_TASKRUN_FLAG: u32 = 512;
-pub const IORING_SETUP_SQE128: u32 = 1024;
-pub const IORING_SETUP_CQE32: u32 = 2048;
-pub const IORING_SETUP_SINGLE_ISSUER: u32 = 4096;
-pub const IORING_SETUP_DEFER_TASKRUN: u32 = 8192;
-pub const IORING_URING_CMD_FIXED: u32 = 1;
-pub const IORING_FSYNC_DATASYNC: u32 = 1;
-pub const IORING_TIMEOUT_ABS: u32 = 1;
-pub const IORING_TIMEOUT_UPDATE: u32 = 2;
-pub const IORING_TIMEOUT_BOOTTIME: u32 = 4;
-pub const IORING_TIMEOUT_REALTIME: u32 = 8;
-pub const IORING_LINK_TIMEOUT_UPDATE: u32 = 16;
-pub const IORING_TIMEOUT_ETIME_SUCCESS: u32 = 32;
-pub const IORING_TIMEOUT_CLOCK_MASK: u32 = 12;
-pub const IORING_TIMEOUT_UPDATE_MASK: u32 = 18;
-pub const SPLICE_F_FD_IN_FIXED: u32 = 2147483648;
-pub const IORING_POLL_ADD_MULTI: u32 = 1;
-pub const IORING_POLL_UPDATE_EVENTS: u32 = 2;
-pub const IORING_POLL_UPDATE_USER_DATA: u32 = 4;
-pub const IORING_POLL_ADD_LEVEL: u32 = 8;
-pub const IORING_ASYNC_CANCEL_ALL: u32 = 1;
-pub const IORING_ASYNC_CANCEL_FD: u32 = 2;
-pub const IORING_ASYNC_CANCEL_ANY: u32 = 4;
-pub const IORING_ASYNC_CANCEL_FD_FIXED: u32 = 8;
-pub const IORING_RECVSEND_POLL_FIRST: u32 = 1;
-pub const IORING_RECV_MULTISHOT: u32 = 2;
-pub const IORING_RECVSEND_FIXED_BUF: u32 = 4;
-pub const IORING_SEND_ZC_REPORT_USAGE: u32 = 8;
-pub const IORING_NOTIF_USAGE_ZC_COPIED: u32 = 2147483648;
-pub const IORING_ACCEPT_MULTISHOT: u32 = 1;
-pub const IORING_MSG_RING_CQE_SKIP: u32 = 1;
-pub const IORING_CQE_F_BUFFER: u32 = 1;
-pub const IORING_CQE_F_MORE: u32 = 2;
-pub const IORING_CQE_F_SOCK_NONEMPTY: u32 = 4;
-pub const IORING_CQE_F_NOTIF: u32 = 8;
-pub const IORING_OFF_SQ_RING: u32 = 0;
-pub const IORING_OFF_CQ_RING: u32 = 134217728;
-pub const IORING_OFF_SQES: u32 = 268435456;
-pub const IORING_SQ_NEED_WAKEUP: u32 = 1;
-pub const IORING_SQ_CQ_OVERFLOW: u32 = 2;
-pub const IORING_SQ_TASKRUN: u32 = 4;
-pub const IORING_CQ_EVENTFD_DISABLED: u32 = 1;
-pub const IORING_ENTER_GETEVENTS: u32 = 1;
-pub const IORING_ENTER_SQ_WAKEUP: u32 = 2;
-pub const IORING_ENTER_SQ_WAIT: u32 = 4;
-pub const IORING_ENTER_EXT_ARG: u32 = 8;
-pub const IORING_ENTER_REGISTERED_RING: u32 = 16;
-pub const IORING_FEAT_SINGLE_MMAP: u32 = 1;
-pub const IORING_FEAT_NODROP: u32 = 2;
-pub const IORING_FEAT_SUBMIT_STABLE: u32 = 4;
-pub const IORING_FEAT_RW_CUR_POS: u32 = 8;
-pub const IORING_FEAT_CUR_PERSONALITY: u32 = 16;
-pub const IORING_FEAT_FAST_POLL: u32 = 32;
-pub const IORING_FEAT_POLL_32BITS: u32 = 64;
-pub const IORING_FEAT_SQPOLL_NONFIXED: u32 = 128;
-pub const IORING_FEAT_EXT_ARG: u32 = 256;
-pub const IORING_FEAT_NATIVE_WORKERS: u32 = 512;
-pub const IORING_FEAT_RSRC_TAGS: u32 = 1024;
-pub const IORING_FEAT_CQE_SKIP: u32 = 2048;
-pub const IORING_FEAT_LINKED_FILE: u32 = 4096;
-pub const IORING_RSRC_REGISTER_SPARSE: u32 = 1;
-pub const IORING_REGISTER_FILES_SKIP: i32 = -2;
-pub const IO_URING_OP_SUPPORTED: u32 = 1;
-pub const DT_UNKNOWN: u32 = 0;
-pub const DT_FIFO: u32 = 1;
-pub const DT_CHR: u32 = 2;
-pub const DT_DIR: u32 = 4;
-pub const DT_BLK: u32 = 6;
-pub const DT_REG: u32 = 8;
-pub const DT_LNK: u32 = 10;
-pub const DT_SOCK: u32 = 12;
-pub const SHUT_RD: u32 = 0;
-pub const SHUT_WR: u32 = 1;
-pub const SHUT_RDWR: u32 = 2;
-pub const STAT_HAVE_NSEC: u32 = 1;
-pub const SOCK_STREAM: u32 = 1;
-pub const SOCK_DGRAM: u32 = 2;
-pub const SOCK_RAW: u32 = 3;
-pub const SOCK_RDM: u32 = 4;
-pub const SOCK_SEQPACKET: u32 = 5;
-pub const F_OK: u32 = 0;
-pub const R_OK: u32 = 4;
-pub const W_OK: u32 = 2;
-pub const X_OK: u32 = 1;
-pub const UTIME_NOW: u32 = 1073741823;
-pub const UTIME_OMIT: u32 = 1073741822;
-pub const MSG_DONTWAIT: u32 = 64;
-pub const AF_UNSPEC: u32 = 0;
-pub const AF_UNIX: u32 = 1;
-pub const AF_INET: u32 = 2;
-pub const AF_AX25: u32 = 3;
-pub const AF_IPX: u32 = 4;
-pub const AF_APPLETALK: u32 = 5;
-pub const AF_NETROM: u32 = 6;
-pub const AF_BRIDGE: u32 = 7;
-pub const AF_ATMPVC: u32 = 8;
-pub const AF_X25: u32 = 9;
-pub const AF_INET6: u32 = 10;
-pub const AF_ROSE: u32 = 11;
-pub const AF_DECnet: u32 = 12;
-pub const AF_NETBEUI: u32 = 13;
-pub const AF_SECURITY: u32 = 14;
-pub const AF_KEY: u32 = 15;
-pub const AF_NETLINK: u32 = 16;
-pub const AF_PACKET: u32 = 17;
-pub const AF_ASH: u32 = 18;
-pub const AF_ECONET: u32 = 19;
-pub const AF_ATMSVC: u32 = 20;
-pub const AF_RDS: u32 = 21;
-pub const AF_SNA: u32 = 22;
-pub const AF_IRDA: u32 = 23;
-pub const AF_PPPOX: u32 = 24;
-pub const AF_WANPIPE: u32 = 25;
-pub const AF_LLC: u32 = 26;
-pub const AF_CAN: u32 = 29;
-pub const AF_TIPC: u32 = 30;
-pub const AF_BLUETOOTH: u32 = 31;
-pub const AF_IUCV: u32 = 32;
-pub const AF_RXRPC: u32 = 33;
-pub const AF_ISDN: u32 = 34;
-pub const AF_PHONET: u32 = 35;
-pub const AF_IEEE802154: u32 = 36;
-pub const AF_MAX: u32 = 37;
-pub const MSG_OOB: u32 = 1;
-pub const MSG_PEEK: u32 = 2;
-pub const MSG_DONTROUTE: u32 = 4;
-pub const MSG_CTRUNC: u32 = 8;
-pub const MSG_PROBE: u32 = 16;
-pub const MSG_TRUNC: u32 = 32;
-pub const MSG_EOR: u32 = 128;
-pub const MSG_WAITALL: u32 = 256;
-pub const MSG_FIN: u32 = 512;
-pub const MSG_SYN: u32 = 1024;
-pub const MSG_CONFIRM: u32 = 2048;
-pub const MSG_RST: u32 = 4096;
-pub const MSG_ERRQUEUE: u32 = 8192;
-pub const MSG_NOSIGNAL: u32 = 16384;
-pub const MSG_MORE: u32 = 32768;
-pub const MSG_CMSG_CLOEXEC: u32 = 1073741824;
-pub const STDIN_FILENO: u32 = 0;
-pub const STDOUT_FILENO: u32 = 1;
-pub const STDERR_FILENO: u32 = 2;
-pub const RWF_HIPRI: u32 = 1;
-pub const RWF_DSYNC: u32 = 2;
-pub const RWF_SYNC: u32 = 4;
-pub const RWF_NOWAIT: u32 = 8;
-pub const RWF_APPEND: u32 = 16;
-pub const EFD_SEMAPHORE: u32 = 1;
-pub const EFD_CLOEXEC: u32 = 524288;
-pub const EFD_NONBLOCK: u32 = 2048;
-pub const EPOLLIN: u32 = 1;
-pub const EPOLLPRI: u32 = 2;
-pub const EPOLLOUT: u32 = 4;
-pub const EPOLLERR: u32 = 8;
-pub const EPOLLHUP: u32 = 16;
-pub const EPOLLNVAL: u32 = 32;
-pub const EPOLLRDNORM: u32 = 64;
-pub const EPOLLRDBAND: u32 = 128;
-pub const EPOLLWRNORM: u32 = 256;
-pub const EPOLLWRBAND: u32 = 512;
-pub const EPOLLMSG: u32 = 1024;
-pub const EPOLLRDHUP: u32 = 8192;
-pub const EPOLLEXCLUSIVE: u32 = 268435456;
-pub const EPOLLWAKEUP: u32 = 536870912;
-pub const EPOLLONESHOT: u32 = 1073741824;
-pub const EPOLLET: u32 = 2147483648;
-pub const TFD_SHARED_FCNTL_FLAGS: u32 = 526336;
-pub const TFD_CREATE_FLAGS: u32 = 526336;
-pub const TFD_SETTIME_FLAGS: u32 = 1;
-pub const ARCH_SET_FS: u32 = 4098;
-pub const SCM_RIGHTS: u32 = 1;
-pub const SCM_CREDENTIALS: u32 = 2;
-pub const SCM_SECURITY: u32 = 3;
-pub const UFFD_API: u32 = 170;
-pub const UFFDIO_REGISTER_MODE_MISSING: u32 = 1;
-pub const UFFDIO_REGISTER_MODE_WP: u32 = 2;
-pub const UFFDIO_REGISTER_MODE_MINOR: u32 = 4;
-pub const UFFDIO_COPY_MODE_DONTWAKE: u32 = 1;
-pub const UFFDIO_COPY_MODE_WP: u32 = 2;
-pub const UFFDIO_ZEROPAGE_MODE_DONTWAKE: u32 = 1;
-pub const SPLICE_F_MOVE: u32 = 1;
-pub const SPLICE_F_NONBLOCK: u32 = 2;
-pub const SPLICE_F_MORE: u32 = 4;
-pub const SPLICE_F_GIFT: u32 = 8;
-pub const MNT_FORCE: u32 = 1;
-pub const MNT_DETACH: u32 = 2;
-pub const MNT_EXPIRE: u32 = 4;
-pub const UMOUNT_NOFOLLOW: u32 = 8;
-pub const UMOUNT_UNUSED: u32 = 2147483648;
-pub type size_t = crate::ctypes::c_ulong;
-pub type ssize_t = crate::ctypes::c_long;
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 16usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_old_uid_t = crate::ctypes::c_ushort;
-pub type __kernel_old_gid_t = crate::ctypes::c_ushort;
-pub type __kernel_old_dev_t = crate::ctypes::c_ulong;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_size_t = __kernel_ulong_t;
-pub type __kernel_ssize_t = __kernel_long_t;
-pub type __kernel_ptrdiff_t = __kernel_long_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_header_struct {
-pub version: __u32,
-pub pid: crate::ctypes::c_int,
-}
-pub type cap_user_header_t = *mut __user_cap_header_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __user_cap_data_struct {
-pub effective: __u32,
-pub permitted: __u32,
-pub inheritable: __u32,
-}
-pub type cap_user_data_t = *mut __user_cap_data_struct;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_cap_data__bindgen_ty_1; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data {
-pub magic_etc: __le32,
-pub data: [vfs_ns_cap_data__bindgen_ty_1; 2usize],
-pub rootid: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct vfs_ns_cap_data__bindgen_ty_1 {
-pub permitted: __le32,
-pub inheritable: __le32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct f_owner_ex {
-pub type_: crate::ctypes::c_int,
-pub pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_off_t,
-pub l_len: __kernel_off_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct flock64 {
-pub l_type: crate::ctypes::c_short,
-pub l_whence: crate::ctypes::c_short,
-pub l_start: __kernel_loff_t,
-pub l_len: __kernel_loff_t,
-pub l_pid: __kernel_pid_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct open_how {
-pub flags: __u64,
-pub mode: __u64,
-pub resolve: __u64,
-}
-#[repr(C, packed)]
-#[derive(Debug, Copy, Clone)]
-pub struct epoll_event {
-pub events: __poll_t,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v1 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub master_key_descriptor: [__u8; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_key {
-pub mode: __u32,
-pub raw: [__u8; 64usize],
-pub size: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fscrypt_policy_v2 {
-pub version: __u8,
-pub contents_encryption_mode: __u8,
-pub filenames_encryption_mode: __u8,
-pub flags: __u8,
-pub __reserved: [__u8; 4usize],
-pub master_key_identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_policy_ex_arg {
-pub policy_size: __u64,
-pub policy: fscrypt_get_policy_ex_arg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_get_policy_ex_arg__bindgen_ty_1 {
-pub version: __u8,
-pub v1: fscrypt_policy_v1,
-pub v2: fscrypt_policy_v2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_key_specifier {
-pub type_: __u32,
-pub __reserved: __u32,
-pub u: fscrypt_key_specifier__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union fscrypt_key_specifier__bindgen_ty_1 {
-pub __reserved: [__u8; 32usize],
-pub descriptor: [__u8; 8usize],
-pub identifier: [__u8; 16usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct fscrypt_provisioning_key_payload {
-pub type_: __u32,
-pub __reserved: __u32,
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-pub struct fscrypt_add_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub raw_size: __u32,
-pub key_id: __u32,
-pub __reserved: [__u32; 8usize],
-pub raw: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_remove_key_arg {
-pub key_spec: fscrypt_key_specifier,
-pub removal_status_flags: __u32,
-pub __reserved: [__u32; 5usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct fscrypt_get_key_status_arg {
-pub key_spec: fscrypt_key_specifier,
-pub __reserved: [__u32; 6usize],
-pub status: __u32,
-pub status_flags: __u32,
-pub user_count: __u32,
-pub __out_reserved: [__u32; 13usize],
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum fsconfig_command {
-FSCONFIG_SET_FLAG = 0,
-FSCONFIG_SET_STRING = 1,
-FSCONFIG_SET_BINARY = 2,
-FSCONFIG_SET_PATH = 3,
-FSCONFIG_SET_PATH_EMPTY = 4,
-FSCONFIG_SET_FD = 5,
-FSCONFIG_CMD_CREATE = 6,
-FSCONFIG_CMD_RECONFIGURE = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mount_attr {
-pub attr_set: __u64,
-pub attr_clr: __u64,
-pub propagation: __u64,
-pub userns_fd: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_clone_range {
-pub src_fd: __s64,
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_offset: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fstrim_range {
-pub start: __u64,
-pub len: __u64,
-pub minlen: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct file_dedupe_range_info {
-pub dest_fd: __s64,
-pub dest_offset: __u64,
-pub bytes_deduped: __u64,
-pub status: __s32,
-pub reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct file_dedupe_range {
-pub src_offset: __u64,
-pub src_length: __u64,
-pub dest_count: __u16,
-pub reserved1: __u16,
-pub reserved2: __u32,
-pub info: __IncompleteArrayField<file_dedupe_range_info>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct files_stat_struct {
-pub nr_files: crate::ctypes::c_ulong,
-pub nr_free_files: crate::ctypes::c_ulong,
-pub max_files: crate::ctypes::c_ulong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct inodes_stat_t {
-pub nr_inodes: crate::ctypes::c_long,
-pub nr_unused: crate::ctypes::c_long,
-pub dummy: [crate::ctypes::c_long; 5usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct fsxattr {
-pub fsx_xflags: __u32,
-pub fsx_extsize: __u32,
-pub fsx_nextents: __u32,
-pub fsx_projid: __u32,
-pub fsx_cowextsize: __u32,
-pub fsx_pad: [crate::ctypes::c_uchar; 8usize],
-}
-pub type __kernel_rwf_t = crate::ctypes::c_int;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct futex_waitv {
-pub val: __u64,
-pub uaddr: __u64,
-pub flags: __u32,
-pub __reserved: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list {
-pub next: *mut robust_list,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct robust_list_head {
-pub list: robust_list,
-pub futex_offset: crate::ctypes::c_long,
-pub list_op_pending: *mut robust_list,
-}
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub const IPPROTO_IP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IP;
-pub const IPPROTO_ICMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ICMP;
-pub const IPPROTO_IGMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IGMP;
-pub const IPPROTO_IPIP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPIP;
-pub const IPPROTO_TCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TCP;
-pub const IPPROTO_EGP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_EGP;
-pub const IPPROTO_PUP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PUP;
-pub const IPPROTO_UDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDP;
-pub const IPPROTO_IDP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IDP;
-pub const IPPROTO_TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_TP;
-pub const IPPROTO_DCCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_DCCP;
-pub const IPPROTO_IPV6: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_IPV6;
-pub const IPPROTO_RSVP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RSVP;
-pub const IPPROTO_GRE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_GRE;
-pub const IPPROTO_ESP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ESP;
-pub const IPPROTO_AH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_AH;
-pub const IPPROTO_MTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MTP;
-pub const IPPROTO_BEETPH: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_BEETPH;
-pub const IPPROTO_ENCAP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ENCAP;
-pub const IPPROTO_PIM: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_PIM;
-pub const IPPROTO_COMP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_COMP;
-pub const IPPROTO_L2TP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_L2TP;
-pub const IPPROTO_SCTP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_SCTP;
-pub const IPPROTO_UDPLITE: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_UDPLITE;
-pub const IPPROTO_MPLS: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPLS;
-pub const IPPROTO_ETHERNET: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_ETHERNET;
-pub const IPPROTO_RAW: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_RAW;
-pub const IPPROTO_MPTCP: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MPTCP;
-pub const IPPROTO_MAX: _bindgen_ty_1 = _bindgen_ty_1::IPPROTO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-IPPROTO_IP = 0,
-IPPROTO_ICMP = 1,
-IPPROTO_IGMP = 2,
-IPPROTO_IPIP = 4,
-IPPROTO_TCP = 6,
-IPPROTO_EGP = 8,
-IPPROTO_PUP = 12,
-IPPROTO_UDP = 17,
-IPPROTO_IDP = 22,
-IPPROTO_TP = 29,
-IPPROTO_DCCP = 33,
-IPPROTO_IPV6 = 41,
-IPPROTO_RSVP = 46,
-IPPROTO_GRE = 47,
-IPPROTO_ESP = 50,
-IPPROTO_AH = 51,
-IPPROTO_MTP = 92,
-IPPROTO_BEETPH = 94,
-IPPROTO_ENCAP = 98,
-IPPROTO_PIM = 103,
-IPPROTO_COMP = 108,
-IPPROTO_L2TP = 115,
-IPPROTO_SCTP = 132,
-IPPROTO_UDPLITE = 136,
-IPPROTO_MPLS = 137,
-IPPROTO_ETHERNET = 143,
-IPPROTO_RAW = 255,
-IPPROTO_MPTCP = 262,
-IPPROTO_MAX = 263,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_addr {
-pub s_addr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq {
-pub imr_multiaddr: in_addr,
-pub imr_interface: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreqn {
-pub imr_multiaddr: in_addr,
-pub imr_address: in_addr,
-pub imr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_mreq_source {
-pub imr_multiaddr: __be32,
-pub imr_interface: __be32,
-pub imr_sourceaddr: __be32,
-}
-#[repr(C)]
-pub struct ip_msfilter {
-pub imsf_multiaddr: __be32,
-pub imsf_interface: __be32,
-pub imsf_fmode: __u32,
-pub imsf_numsrc: __u32,
-pub __bindgen_anon_1: ip_msfilter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct ip_msfilter__bindgen_ty_1 {
-pub imsf_slist: __BindgenUnionField<[__be32; 1usize]>,
-pub __bindgen_anon_1: __BindgenUnionField<ip_msfilter__bindgen_ty_1__bindgen_ty_1>,
-pub bindgen_union_field: u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1 {
-pub __empty_imsf_slist_flex: ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-pub imsf_slist_flex: __IncompleteArrayField<__be32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_msfilter__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_req {
-pub gr_interface: __u32,
-pub gr_group: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_source_req {
-pub gsr_interface: __u32,
-pub gsr_group: __kernel_sockaddr_storage,
-pub gsr_source: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-pub struct group_filter {
-pub __bindgen_anon_1: group_filter__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_1>,
-pub __bindgen_anon_2: __BindgenUnionField<group_filter__bindgen_ty_1__bindgen_ty_2>,
-pub bindgen_union_field: [u64; 34usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_1 {
-pub gf_interface_aux: __u32,
-pub gf_group_aux: __kernel_sockaddr_storage,
-pub gf_fmode_aux: __u32,
-pub gf_numsrc_aux: __u32,
-pub gf_slist: [__kernel_sockaddr_storage; 1usize],
-}
-#[repr(C)]
-pub struct group_filter__bindgen_ty_1__bindgen_ty_2 {
-pub gf_interface: __u32,
-pub gf_group: __kernel_sockaddr_storage,
-pub gf_fmode: __u32,
-pub gf_numsrc: __u32,
-pub gf_slist_flex: __IncompleteArrayField<__kernel_sockaddr_storage>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct in_pktinfo {
-pub ipi_ifindex: crate::ctypes::c_int,
-pub ipi_spec_dst: in_addr,
-pub ipi_addr: in_addr,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_in {
-pub sin_family: __kernel_sa_family_t,
-pub sin_port: __be16,
-pub sin_addr: in_addr,
-pub __pad: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct inotify_event {
-pub wd: __s32,
-pub mask: __u32,
-pub cookie: __u32,
-pub len: __u32,
-pub name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct iphdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub tos: __u8,
-pub tot_len: __be16,
-pub id: __be16,
-pub frag_off: __be16,
-pub ttl: __u8,
-pub protocol: __u8,
-pub check: __sum16,
-pub __bindgen_anon_1: iphdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union iphdr__bindgen_ty_1 {
-pub __bindgen_anon_1: iphdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: iphdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iphdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: __be32,
-pub daddr: __be32,
-}
-impl iphdr {
-#[inline]
-pub fn ihl(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_ihl(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(ihl: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let ihl: u8 = unsafe { ::core::mem::transmute(ihl) };
-ihl as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_auth_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub reserved: __be16,
-pub spi: __be32,
-pub seq_no: __be32,
-pub auth_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct ip_esp_hdr {
-pub spi: __be32,
-pub seq_no: __be32,
-pub enc_data: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_comp_hdr {
-pub nexthdr: __u8,
-pub flags: __u8,
-pub cpi: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ip_beet_phdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub padlen: __u8,
-pub reserved: __u8,
-}
-pub const IPV4_DEVCONF_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORWARDING;
-pub const IPV4_DEVCONF_MC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MC_FORWARDING;
-pub const IPV4_DEVCONF_PROXY_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP;
-pub const IPV4_DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_REDIRECTS;
-pub const IPV4_DEVCONF_SECURE_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SECURE_REDIRECTS;
-pub const IPV4_DEVCONF_SEND_REDIRECTS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SEND_REDIRECTS;
-pub const IPV4_DEVCONF_SHARED_MEDIA: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SHARED_MEDIA;
-pub const IPV4_DEVCONF_RP_FILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_RP_FILTER;
-pub const IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const IPV4_DEVCONF_BOOTP_RELAY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BOOTP_RELAY;
-pub const IPV4_DEVCONF_LOG_MARTIANS: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_LOG_MARTIANS;
-pub const IPV4_DEVCONF_TAG: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_TAG;
-pub const IPV4_DEVCONF_ARPFILTER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARPFILTER;
-pub const IPV4_DEVCONF_MEDIUM_ID: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_MEDIUM_ID;
-pub const IPV4_DEVCONF_NOXFRM: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOXFRM;
-pub const IPV4_DEVCONF_NOPOLICY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_NOPOLICY;
-pub const IPV4_DEVCONF_FORCE_IGMP_VERSION: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_FORCE_IGMP_VERSION;
-pub const IPV4_DEVCONF_ARP_ANNOUNCE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ANNOUNCE;
-pub const IPV4_DEVCONF_ARP_IGNORE: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_IGNORE;
-pub const IPV4_DEVCONF_PROMOTE_SECONDARIES: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROMOTE_SECONDARIES;
-pub const IPV4_DEVCONF_ARP_ACCEPT: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_ACCEPT;
-pub const IPV4_DEVCONF_ARP_NOTIFY: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_NOTIFY;
-pub const IPV4_DEVCONF_ACCEPT_LOCAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ACCEPT_LOCAL;
-pub const IPV4_DEVCONF_SRC_VMARK: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_SRC_VMARK;
-pub const IPV4_DEVCONF_PROXY_ARP_PVLAN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_PROXY_ARP_PVLAN;
-pub const IPV4_DEVCONF_ROUTE_LOCALNET: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ROUTE_LOCALNET;
-pub const IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL;
-pub const IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const IPV4_DEVCONF_DROP_GRATUITOUS_ARP: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_DROP_GRATUITOUS_ARP;
-pub const IPV4_DEVCONF_BC_FORWARDING: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_BC_FORWARDING;
-pub const IPV4_DEVCONF_ARP_EVICT_NOCARRIER: _bindgen_ty_2 = _bindgen_ty_2::IPV4_DEVCONF_ARP_EVICT_NOCARRIER;
-pub const __IPV4_DEVCONF_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IPV4_DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IPV4_DEVCONF_FORWARDING = 1,
-IPV4_DEVCONF_MC_FORWARDING = 2,
-IPV4_DEVCONF_PROXY_ARP = 3,
-IPV4_DEVCONF_ACCEPT_REDIRECTS = 4,
-IPV4_DEVCONF_SECURE_REDIRECTS = 5,
-IPV4_DEVCONF_SEND_REDIRECTS = 6,
-IPV4_DEVCONF_SHARED_MEDIA = 7,
-IPV4_DEVCONF_RP_FILTER = 8,
-IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE = 9,
-IPV4_DEVCONF_BOOTP_RELAY = 10,
-IPV4_DEVCONF_LOG_MARTIANS = 11,
-IPV4_DEVCONF_TAG = 12,
-IPV4_DEVCONF_ARPFILTER = 13,
-IPV4_DEVCONF_MEDIUM_ID = 14,
-IPV4_DEVCONF_NOXFRM = 15,
-IPV4_DEVCONF_NOPOLICY = 16,
-IPV4_DEVCONF_FORCE_IGMP_VERSION = 17,
-IPV4_DEVCONF_ARP_ANNOUNCE = 18,
-IPV4_DEVCONF_ARP_IGNORE = 19,
-IPV4_DEVCONF_PROMOTE_SECONDARIES = 20,
-IPV4_DEVCONF_ARP_ACCEPT = 21,
-IPV4_DEVCONF_ARP_NOTIFY = 22,
-IPV4_DEVCONF_ACCEPT_LOCAL = 23,
-IPV4_DEVCONF_SRC_VMARK = 24,
-IPV4_DEVCONF_PROXY_ARP_PVLAN = 25,
-IPV4_DEVCONF_ROUTE_LOCALNET = 26,
-IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL = 27,
-IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL = 28,
-IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 29,
-IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 30,
-IPV4_DEVCONF_DROP_GRATUITOUS_ARP = 31,
-IPV4_DEVCONF_BC_FORWARDING = 32,
-IPV4_DEVCONF_ARP_EVICT_NOCARRIER = 33,
-__IPV4_DEVCONF_MAX = 34,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_addr {
-pub in6_u: in6_addr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union in6_addr__bindgen_ty_1 {
-pub u6_addr8: [__u8; 16usize],
-pub u6_addr16: [__be16; 8usize],
-pub u6_addr32: [__be32; 4usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr_in6 {
-pub sin6_family: crate::ctypes::c_ushort,
-pub sin6_port: __be16,
-pub sin6_flowinfo: __be32,
-pub sin6_addr: in6_addr,
-pub sin6_scope_id: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6_mreq {
-pub ipv6mr_multiaddr: in6_addr,
-pub ipv6mr_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_flowlabel_req {
-pub flr_dst: in6_addr,
-pub flr_label: __be32,
-pub flr_action: __u8,
-pub flr_share: __u8,
-pub flr_flags: __u16,
-pub flr_expires: __u16,
-pub flr_linger: __u16,
-pub __flr_pad: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_pktinfo {
-pub ipi6_addr: in6_addr,
-pub ipi6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ip6_mtuinfo {
-pub ip6m_addr: sockaddr_in6,
-pub ip6m_mtu: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct in6_ifreq {
-pub ifr6_addr: in6_addr,
-pub ifr6_prefixlen: __u32,
-pub ifr6_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_rt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-pub type_: __u8,
-pub segments_left: __u8,
-}
-#[repr(C, packed)]
-#[derive(Debug, Copy, Clone)]
-pub struct ipv6_opt_hdr {
-pub nexthdr: __u8,
-pub hdrlen: __u8,
-}
-#[repr(C)]
-pub struct rt0_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: __IncompleteArrayField<in6_addr>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rt2_hdr {
-pub rt_hdr: ipv6_rt_hdr,
-pub reserved: __u32,
-pub addr: in6_addr,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct ipv6_destopt_hao {
-pub type_: __u8,
-pub length: __u8,
-pub addr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr {
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub flow_lbl: [__u8; 3usize],
-pub payload_len: __be16,
-pub nexthdr: __u8,
-pub hop_limit: __u8,
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union ipv6hdr__bindgen_ty_1 {
-pub __bindgen_anon_1: ipv6hdr__bindgen_ty_1__bindgen_ty_1,
-pub addrs: ipv6hdr__bindgen_ty_1__bindgen_ty_2,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_1 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct ipv6hdr__bindgen_ty_1__bindgen_ty_2 {
-pub saddr: in6_addr,
-pub daddr: in6_addr,
-}
-impl ipv6hdr {
-#[inline]
-pub fn priority(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_priority(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn version(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_version(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(priority: __u8, version: __u8) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let priority: u8 = unsafe { ::core::mem::transmute(priority) };
-priority as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let version: u8 = unsafe { ::core::mem::transmute(version) };
-version as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const DEVCONF_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORWARDING;
-pub const DEVCONF_HOPLIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_HOPLIMIT;
-pub const DEVCONF_MTU6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MTU6;
-pub const DEVCONF_ACCEPT_RA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA;
-pub const DEVCONF_ACCEPT_REDIRECTS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_REDIRECTS;
-pub const DEVCONF_AUTOCONF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_AUTOCONF;
-pub const DEVCONF_DAD_TRANSMITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DAD_TRANSMITS;
-pub const DEVCONF_RTR_SOLICITS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICITS;
-pub const DEVCONF_RTR_SOLICIT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_INTERVAL;
-pub const DEVCONF_RTR_SOLICIT_DELAY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_DELAY;
-pub const DEVCONF_USE_TEMPADDR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_TEMPADDR;
-pub const DEVCONF_TEMP_VALID_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_VALID_LFT;
-pub const DEVCONF_TEMP_PREFERED_LFT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_TEMP_PREFERED_LFT;
-pub const DEVCONF_REGEN_MAX_RETRY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_REGEN_MAX_RETRY;
-pub const DEVCONF_MAX_DESYNC_FACTOR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_DESYNC_FACTOR;
-pub const DEVCONF_MAX_ADDRESSES: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX_ADDRESSES;
-pub const DEVCONF_FORCE_MLD_VERSION: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_MLD_VERSION;
-pub const DEVCONF_ACCEPT_RA_DEFRTR: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_DEFRTR;
-pub const DEVCONF_ACCEPT_RA_PINFO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_PINFO;
-pub const DEVCONF_ACCEPT_RA_RTR_PREF: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RTR_PREF;
-pub const DEVCONF_RTR_PROBE_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_PROBE_INTERVAL;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN;
-pub const DEVCONF_PROXY_NDP: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_PROXY_NDP;
-pub const DEVCONF_OPTIMISTIC_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_OPTIMISTIC_DAD;
-pub const DEVCONF_ACCEPT_SOURCE_ROUTE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_SOURCE_ROUTE;
-pub const DEVCONF_MC_FORWARDING: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MC_FORWARDING;
-pub const DEVCONF_DISABLE_IPV6: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_IPV6;
-pub const DEVCONF_ACCEPT_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_DAD;
-pub const DEVCONF_FORCE_TLLAO: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_FORCE_TLLAO;
-pub const DEVCONF_NDISC_NOTIFY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_NOTIFY;
-pub const DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL;
-pub const DEVCONF_SUPPRESS_FRAG_NDISC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SUPPRESS_FRAG_NDISC;
-pub const DEVCONF_ACCEPT_RA_FROM_LOCAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_FROM_LOCAL;
-pub const DEVCONF_USE_OPTIMISTIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OPTIMISTIC;
-pub const DEVCONF_ACCEPT_RA_MTU: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MTU;
-pub const DEVCONF_STABLE_SECRET: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_STABLE_SECRET;
-pub const DEVCONF_USE_OIF_ADDRS_ONLY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_USE_OIF_ADDRS_ONLY;
-pub const DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT;
-pub const DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN;
-pub const DEVCONF_DROP_UNICAST_IN_L2_MULTICAST: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNICAST_IN_L2_MULTICAST;
-pub const DEVCONF_DROP_UNSOLICITED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DROP_UNSOLICITED_NA;
-pub const DEVCONF_KEEP_ADDR_ON_DOWN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_KEEP_ADDR_ON_DOWN;
-pub const DEVCONF_RTR_SOLICIT_MAX_INTERVAL: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RTR_SOLICIT_MAX_INTERVAL;
-pub const DEVCONF_SEG6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_ENABLED;
-pub const DEVCONF_SEG6_REQUIRE_HMAC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_SEG6_REQUIRE_HMAC;
-pub const DEVCONF_ENHANCED_DAD: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ENHANCED_DAD;
-pub const DEVCONF_ADDR_GEN_MODE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ADDR_GEN_MODE;
-pub const DEVCONF_DISABLE_POLICY: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_DISABLE_POLICY;
-pub const DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN;
-pub const DEVCONF_NDISC_TCLASS: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_TCLASS;
-pub const DEVCONF_RPL_SEG_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RPL_SEG_ENABLED;
-pub const DEVCONF_RA_DEFRTR_METRIC: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_RA_DEFRTR_METRIC;
-pub const DEVCONF_IOAM6_ENABLED: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ENABLED;
-pub const DEVCONF_IOAM6_ID: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID;
-pub const DEVCONF_IOAM6_ID_WIDE: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_IOAM6_ID_WIDE;
-pub const DEVCONF_NDISC_EVICT_NOCARRIER: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_NDISC_EVICT_NOCARRIER;
-pub const DEVCONF_ACCEPT_UNTRACKED_NA: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_ACCEPT_UNTRACKED_NA;
-pub const DEVCONF_MAX: _bindgen_ty_3 = _bindgen_ty_3::DEVCONF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-DEVCONF_FORWARDING = 0,
-DEVCONF_HOPLIMIT = 1,
-DEVCONF_MTU6 = 2,
-DEVCONF_ACCEPT_RA = 3,
-DEVCONF_ACCEPT_REDIRECTS = 4,
-DEVCONF_AUTOCONF = 5,
-DEVCONF_DAD_TRANSMITS = 6,
-DEVCONF_RTR_SOLICITS = 7,
-DEVCONF_RTR_SOLICIT_INTERVAL = 8,
-DEVCONF_RTR_SOLICIT_DELAY = 9,
-DEVCONF_USE_TEMPADDR = 10,
-DEVCONF_TEMP_VALID_LFT = 11,
-DEVCONF_TEMP_PREFERED_LFT = 12,
-DEVCONF_REGEN_MAX_RETRY = 13,
-DEVCONF_MAX_DESYNC_FACTOR = 14,
-DEVCONF_MAX_ADDRESSES = 15,
-DEVCONF_FORCE_MLD_VERSION = 16,
-DEVCONF_ACCEPT_RA_DEFRTR = 17,
-DEVCONF_ACCEPT_RA_PINFO = 18,
-DEVCONF_ACCEPT_RA_RTR_PREF = 19,
-DEVCONF_RTR_PROBE_INTERVAL = 20,
-DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN = 21,
-DEVCONF_PROXY_NDP = 22,
-DEVCONF_OPTIMISTIC_DAD = 23,
-DEVCONF_ACCEPT_SOURCE_ROUTE = 24,
-DEVCONF_MC_FORWARDING = 25,
-DEVCONF_DISABLE_IPV6 = 26,
-DEVCONF_ACCEPT_DAD = 27,
-DEVCONF_FORCE_TLLAO = 28,
-DEVCONF_NDISC_NOTIFY = 29,
-DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL = 30,
-DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL = 31,
-DEVCONF_SUPPRESS_FRAG_NDISC = 32,
-DEVCONF_ACCEPT_RA_FROM_LOCAL = 33,
-DEVCONF_USE_OPTIMISTIC = 34,
-DEVCONF_ACCEPT_RA_MTU = 35,
-DEVCONF_STABLE_SECRET = 36,
-DEVCONF_USE_OIF_ADDRS_ONLY = 37,
-DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT = 38,
-DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN = 39,
-DEVCONF_DROP_UNICAST_IN_L2_MULTICAST = 40,
-DEVCONF_DROP_UNSOLICITED_NA = 41,
-DEVCONF_KEEP_ADDR_ON_DOWN = 42,
-DEVCONF_RTR_SOLICIT_MAX_INTERVAL = 43,
-DEVCONF_SEG6_ENABLED = 44,
-DEVCONF_SEG6_REQUIRE_HMAC = 45,
-DEVCONF_ENHANCED_DAD = 46,
-DEVCONF_ADDR_GEN_MODE = 47,
-DEVCONF_DISABLE_POLICY = 48,
-DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN = 49,
-DEVCONF_NDISC_TCLASS = 50,
-DEVCONF_RPL_SEG_ENABLED = 51,
-DEVCONF_RA_DEFRTR_METRIC = 52,
-DEVCONF_IOAM6_ENABLED = 53,
-DEVCONF_IOAM6_ID = 54,
-DEVCONF_IOAM6_ID_WIDE = 55,
-DEVCONF_NDISC_EVICT_NOCARRIER = 56,
-DEVCONF_ACCEPT_UNTRACKED_NA = 57,
-DEVCONF_MAX = 58,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum socket_state {
-SS_FREE = 0,
-SS_UNCONNECTED = 1,
-SS_CONNECTING = 2,
-SS_CONNECTED = 3,
-SS_DISCONNECTING = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct pollfd {
-pub fd: crate::ctypes::c_int,
-pub events: crate::ctypes::c_short,
-pub revents: crate::ctypes::c_short,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prctl_mm_map {
-pub start_code: __u64,
-pub end_code: __u64,
-pub start_data: __u64,
-pub end_data: __u64,
-pub start_brk: __u64,
-pub brk: __u64,
-pub start_stack: __u64,
-pub arg_start: __u64,
-pub arg_end: __u64,
-pub env_start: __u64,
-pub env_end: __u64,
-pub auxv: *mut __u64,
-pub auxv_size: __u32,
-pub exe_fd: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rand_pool_info {
-pub entropy_count: crate::ctypes::c_int,
-pub buf_size: crate::ctypes::c_int,
-pub buf: __IncompleteArrayField<__u32>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_timespec {
-pub tv_sec: __kernel_time64_t,
-pub tv_nsec: crate::ctypes::c_longlong,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_itimerspec {
-pub it_interval: __kernel_timespec,
-pub it_value: __kernel_timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timeval {
-pub tv_sec: __kernel_long_t,
-pub tv_usec: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_old_itimerval {
-pub it_interval: __kernel_old_timeval,
-pub it_value: __kernel_old_timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sock_timeval {
-pub tv_sec: __s64,
-pub tv_usec: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timespec {
-pub tv_sec: __kernel_old_time_t,
-pub tv_nsec: crate::ctypes::c_long,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timeval {
-pub tv_sec: __kernel_old_time_t,
-pub tv_usec: __kernel_suseconds_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerspec {
-pub it_interval: timespec,
-pub it_value: timespec,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct itimerval {
-pub it_interval: timeval,
-pub it_value: timeval,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct timezone {
-pub tz_minuteswest: crate::ctypes::c_int,
-pub tz_dsttime: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rusage {
-pub ru_utime: __kernel_old_timeval,
-pub ru_stime: __kernel_old_timeval,
-pub ru_maxrss: __kernel_long_t,
-pub ru_ixrss: __kernel_long_t,
-pub ru_idrss: __kernel_long_t,
-pub ru_isrss: __kernel_long_t,
-pub ru_minflt: __kernel_long_t,
-pub ru_majflt: __kernel_long_t,
-pub ru_nswap: __kernel_long_t,
-pub ru_inblock: __kernel_long_t,
-pub ru_oublock: __kernel_long_t,
-pub ru_msgsnd: __kernel_long_t,
-pub ru_msgrcv: __kernel_long_t,
-pub ru_nsignals: __kernel_long_t,
-pub ru_nvcsw: __kernel_long_t,
-pub ru_nivcsw: __kernel_long_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit {
-pub rlim_cur: __kernel_ulong_t,
-pub rlim_max: __kernel_ulong_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rlimit64 {
-pub rlim_cur: __u64,
-pub rlim_max: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct clone_args {
-pub flags: __u64,
-pub pidfd: __u64,
-pub child_tid: __u64,
-pub parent_tid: __u64,
-pub exit_signal: __u64,
-pub stack: __u64,
-pub stack_size: __u64,
-pub tls: __u64,
-pub set_tid: __u64,
-pub set_tid_size: __u64,
-pub cgroup: __u64,
-}
-pub type sigset_t = crate::ctypes::c_ulong;
-pub type __signalfn_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __sighandler_t = __signalfn_t;
-pub type __restorefn_t = ::core::option::Option<unsafe extern "C" fn()>;
-pub type __sigrestore_t = __restorefn_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaction {
-pub sa_handler: __sighandler_t,
-pub sa_flags: crate::ctypes::c_ulong,
-pub sa_restorer: __sigrestore_t,
-pub sa_mask: sigset_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigaltstack {
-pub ss_sp: *mut crate::ctypes::c_void,
-pub ss_flags: crate::ctypes::c_int,
-pub ss_size: __kernel_size_t,
-}
-pub type stack_t = sigaltstack;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigval {
-pub sival_int: crate::ctypes::c_int,
-pub sival_ptr: *mut crate::ctypes::c_void,
-}
-pub type sigval_t = sigval;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields {
-pub _kill: __sifields__bindgen_ty_1,
-pub _timer: __sifields__bindgen_ty_2,
-pub _rt: __sifields__bindgen_ty_3,
-pub _sigchld: __sifields__bindgen_ty_4,
-pub _sigfault: __sifields__bindgen_ty_5,
-pub _sigpoll: __sifields__bindgen_ty_6,
-pub _sigsys: __sifields__bindgen_ty_7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_1 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_2 {
-pub _tid: __kernel_timer_t,
-pub _overrun: crate::ctypes::c_int,
-pub _sigval: sigval_t,
-pub _sys_private: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_3 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _sigval: sigval_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_4 {
-pub _pid: __kernel_pid_t,
-pub _uid: __kernel_uid32_t,
-pub _status: crate::ctypes::c_int,
-pub _utime: __kernel_clock_t,
-pub _stime: __kernel_clock_t,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __sifields__bindgen_ty_5 {
-pub _addr: *mut crate::ctypes::c_void,
-pub __bindgen_anon_1: __sifields__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __sifields__bindgen_ty_5__bindgen_ty_1 {
-pub _trapno: crate::ctypes::c_int,
-pub _addr_lsb: crate::ctypes::c_short,
-pub _addr_bnd: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1,
-pub _addr_pkey: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2,
-pub _perf: __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {
-pub _dummy_bnd: [crate::ctypes::c_char; 8usize],
-pub _lower: *mut crate::ctypes::c_void,
-pub _upper: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_2 {
-pub _dummy_pkey: [crate::ctypes::c_char; 8usize],
-pub _pkey: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_5__bindgen_ty_1__bindgen_ty_3 {
-pub _data: crate::ctypes::c_ulong,
-pub _type: __u32,
-pub _flags: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_6 {
-pub _band: crate::ctypes::c_long,
-pub _fd: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __sifields__bindgen_ty_7 {
-pub _call_addr: *mut crate::ctypes::c_void,
-pub _syscall: crate::ctypes::c_int,
-pub _arch: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union siginfo__bindgen_ty_1 {
-pub __bindgen_anon_1: siginfo__bindgen_ty_1__bindgen_ty_1,
-pub _si_pad: [crate::ctypes::c_int; 32usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct siginfo__bindgen_ty_1__bindgen_ty_1 {
-pub si_signo: crate::ctypes::c_int,
-pub si_errno: crate::ctypes::c_int,
-pub si_code: crate::ctypes::c_int,
-pub _sifields: __sifields,
-}
-pub type siginfo_t = siginfo;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sigevent {
-pub sigev_value: sigval_t,
-pub sigev_signo: crate::ctypes::c_int,
-pub sigev_notify: crate::ctypes::c_int,
-pub _sigev_un: sigevent__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union sigevent__bindgen_ty_1 {
-pub _pad: [crate::ctypes::c_int; 12usize],
-pub _tid: crate::ctypes::c_int,
-pub _sigev_thread: sigevent__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sigevent__bindgen_ty_1__bindgen_ty_1 {
-pub _function: ::core::option::Option<unsafe extern "C" fn(arg1: sigval_t)>,
-pub _attribute: *mut crate::ctypes::c_void,
-}
-pub type sigevent_t = sigevent;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx_timestamp {
-pub tv_sec: __s64,
-pub tv_nsec: __u32,
-pub __reserved: __s32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statx {
-pub stx_mask: __u32,
-pub stx_blksize: __u32,
-pub stx_attributes: __u64,
-pub stx_nlink: __u32,
-pub stx_uid: __u32,
-pub stx_gid: __u32,
-pub stx_mode: __u16,
-pub __spare0: [__u16; 1usize],
-pub stx_ino: __u64,
-pub stx_size: __u64,
-pub stx_blocks: __u64,
-pub stx_attributes_mask: __u64,
-pub stx_atime: statx_timestamp,
-pub stx_btime: statx_timestamp,
-pub stx_ctime: statx_timestamp,
-pub stx_mtime: statx_timestamp,
-pub stx_rdev_major: __u32,
-pub stx_rdev_minor: __u32,
-pub stx_dev_major: __u32,
-pub stx_dev_minor: __u32,
-pub stx_mnt_id: __u64,
-pub stx_dio_mem_align: __u32,
-pub stx_dio_offset_align: __u32,
-pub __spare3: [__u64; 12usize],
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct sysinfo {
-pub uptime: __kernel_long_t,
-pub loads: [__kernel_ulong_t; 3usize],
-pub totalram: __kernel_ulong_t,
-pub freeram: __kernel_ulong_t,
-pub sharedram: __kernel_ulong_t,
-pub bufferram: __kernel_ulong_t,
-pub totalswap: __kernel_ulong_t,
-pub freeswap: __kernel_ulong_t,
-pub procs: __u16,
-pub pad: __u16,
-pub totalhigh: __kernel_ulong_t,
-pub freehigh: __kernel_ulong_t,
-pub mem_unit: __u32,
-pub _f: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcphdr {
-pub source: __be16,
-pub dest: __be16,
-pub seq: __be32,
-pub ack_seq: __be32,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub window: __be16,
-pub check: __sum16,
-pub urg_ptr: __be16,
-}
-impl tcphdr {
-#[inline]
-pub fn res1(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_res1(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn doff(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u16) }
-}
-#[inline]
-pub fn set_doff(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn fin(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_fin(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn syn(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_syn(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn rst(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(10usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_rst(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(10usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn psh(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(11usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_psh(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(11usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ack(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(12usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ack(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(12usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn urg(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(13usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_urg(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(13usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn ece(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(14usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_ece(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(14usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn cwr(&self) -> __u16 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(15usize, 1u8) as u16) }
-}
-#[inline]
-pub fn set_cwr(&mut self, val: __u16) {
-unsafe {
-let val: u16 = ::core::mem::transmute(val);
-self._bitfield_1.set(15usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(res1: __u16, doff: __u16, fin: __u16, syn: __u16, rst: __u16, psh: __u16, ack: __u16, urg: __u16, ece: __u16, cwr: __u16) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let res1: u16 = unsafe { ::core::mem::transmute(res1) };
-res1 as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let doff: u16 = unsafe { ::core::mem::transmute(doff) };
-doff as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let fin: u16 = unsafe { ::core::mem::transmute(fin) };
-fin as u64
-});
-__bindgen_bitfield_unit.set(9usize, 1u8, {
-let syn: u16 = unsafe { ::core::mem::transmute(syn) };
-syn as u64
-});
-__bindgen_bitfield_unit.set(10usize, 1u8, {
-let rst: u16 = unsafe { ::core::mem::transmute(rst) };
-rst as u64
-});
-__bindgen_bitfield_unit.set(11usize, 1u8, {
-let psh: u16 = unsafe { ::core::mem::transmute(psh) };
-psh as u64
-});
-__bindgen_bitfield_unit.set(12usize, 1u8, {
-let ack: u16 = unsafe { ::core::mem::transmute(ack) };
-ack as u64
-});
-__bindgen_bitfield_unit.set(13usize, 1u8, {
-let urg: u16 = unsafe { ::core::mem::transmute(urg) };
-urg as u64
-});
-__bindgen_bitfield_unit.set(14usize, 1u8, {
-let ece: u16 = unsafe { ::core::mem::transmute(ece) };
-ece as u64
-});
-__bindgen_bitfield_unit.set(15usize, 1u8, {
-let cwr: u16 = unsafe { ::core::mem::transmute(cwr) };
-cwr as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union tcp_word_hdr {
-pub hdr: tcphdr,
-pub words: [__be32; 5usize],
-}
-pub const TCP_FLAG_CWR: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_CWR;
-pub const TCP_FLAG_ECE: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ECE;
-pub const TCP_FLAG_URG: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_URG;
-pub const TCP_FLAG_ACK: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_ACK;
-pub const TCP_FLAG_PSH: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_PSH;
-pub const TCP_FLAG_RST: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_RST;
-pub const TCP_FLAG_SYN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_SYN;
-pub const TCP_FLAG_FIN: _bindgen_ty_4 = _bindgen_ty_4::TCP_FLAG_FIN;
-pub const TCP_RESERVED_BITS: _bindgen_ty_4 = _bindgen_ty_4::TCP_RESERVED_BITS;
-pub const TCP_DATA_OFFSET: _bindgen_ty_4 = _bindgen_ty_4::TCP_DATA_OFFSET;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-TCP_FLAG_CWR = 32768,
-TCP_FLAG_ECE = 16384,
-TCP_FLAG_URG = 8192,
-TCP_FLAG_ACK = 4096,
-TCP_FLAG_PSH = 2048,
-TCP_FLAG_RST = 1024,
-TCP_FLAG_SYN = 512,
-TCP_FLAG_FIN = 256,
-TCP_RESERVED_BITS = 15,
-TCP_DATA_OFFSET = 240,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_opt {
-pub opt_code: __u32,
-pub opt_val: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_repair_window {
-pub snd_wl1: __u32,
-pub snd_wnd: __u32,
-pub max_window: __u32,
-pub rcv_wnd: __u32,
-pub rcv_wup: __u32,
-}
-pub const TCP_NO_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_NO_QUEUE;
-pub const TCP_RECV_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_RECV_QUEUE;
-pub const TCP_SEND_QUEUE: _bindgen_ty_5 = _bindgen_ty_5::TCP_SEND_QUEUE;
-pub const TCP_QUEUES_NR: _bindgen_ty_5 = _bindgen_ty_5::TCP_QUEUES_NR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-TCP_NO_QUEUE = 0,
-TCP_RECV_QUEUE = 1,
-TCP_SEND_QUEUE = 2,
-TCP_QUEUES_NR = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_fastopen_client_fail {
-TFO_STATUS_UNSPEC = 0,
-TFO_COOKIE_UNAVAILABLE = 1,
-TFO_DATA_NOT_ACKED = 2,
-TFO_SYN_RETRANSMITTED = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum tcp_ca_state {
-TCP_CA_Open = 0,
-TCP_CA_Disorder = 1,
-TCP_CA_CWR = 2,
-TCP_CA_Recovery = 3,
-TCP_CA_Loss = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_info {
-pub tcpi_state: __u8,
-pub tcpi_ca_state: __u8,
-pub tcpi_retransmits: __u8,
-pub tcpi_probes: __u8,
-pub tcpi_backoff: __u8,
-pub tcpi_options: __u8,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize]>,
-pub tcpi_rto: __u32,
-pub tcpi_ato: __u32,
-pub tcpi_snd_mss: __u32,
-pub tcpi_rcv_mss: __u32,
-pub tcpi_unacked: __u32,
-pub tcpi_sacked: __u32,
-pub tcpi_lost: __u32,
-pub tcpi_retrans: __u32,
-pub tcpi_fackets: __u32,
-pub tcpi_last_data_sent: __u32,
-pub tcpi_last_ack_sent: __u32,
-pub tcpi_last_data_recv: __u32,
-pub tcpi_last_ack_recv: __u32,
-pub tcpi_pmtu: __u32,
-pub tcpi_rcv_ssthresh: __u32,
-pub tcpi_rtt: __u32,
-pub tcpi_rttvar: __u32,
-pub tcpi_snd_ssthresh: __u32,
-pub tcpi_snd_cwnd: __u32,
-pub tcpi_advmss: __u32,
-pub tcpi_reordering: __u32,
-pub tcpi_rcv_rtt: __u32,
-pub tcpi_rcv_space: __u32,
-pub tcpi_total_retrans: __u32,
-pub tcpi_pacing_rate: __u64,
-pub tcpi_max_pacing_rate: __u64,
-pub tcpi_bytes_acked: __u64,
-pub tcpi_bytes_received: __u64,
-pub tcpi_segs_out: __u32,
-pub tcpi_segs_in: __u32,
-pub tcpi_notsent_bytes: __u32,
-pub tcpi_min_rtt: __u32,
-pub tcpi_data_segs_in: __u32,
-pub tcpi_data_segs_out: __u32,
-pub tcpi_delivery_rate: __u64,
-pub tcpi_busy_time: __u64,
-pub tcpi_rwnd_limited: __u64,
-pub tcpi_sndbuf_limited: __u64,
-pub tcpi_delivered: __u32,
-pub tcpi_delivered_ce: __u32,
-pub tcpi_bytes_sent: __u64,
-pub tcpi_bytes_retrans: __u64,
-pub tcpi_dsack_dups: __u32,
-pub tcpi_reord_seen: __u32,
-pub tcpi_rcv_ooopack: __u32,
-pub tcpi_snd_wnd: __u32,
-pub tcpi_rcv_wnd: __u32,
-pub tcpi_rehash: __u32,
-}
-impl tcp_info {
-#[inline]
-pub fn tcpi_snd_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_snd_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_rcv_wscale(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 4u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_rcv_wscale(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 4u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_delivery_rate_app_limited(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_delivery_rate_app_limited(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(8usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn tcpi_fastopen_client_fail(&self) -> __u8 {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(9usize, 2u8) as u8) }
-}
-#[inline]
-pub fn set_tcpi_fastopen_client_fail(&mut self, val: __u8) {
-unsafe {
-let val: u8 = ::core::mem::transmute(val);
-self._bitfield_1.set(9usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(tcpi_snd_wscale: __u8, tcpi_rcv_wscale: __u8, tcpi_delivery_rate_app_limited: __u8, tcpi_fastopen_client_fail: __u8) -> __BindgenBitfieldUnit<[u8; 2usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 4u8, {
-let tcpi_snd_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_snd_wscale) };
-tcpi_snd_wscale as u64
-});
-__bindgen_bitfield_unit.set(4usize, 4u8, {
-let tcpi_rcv_wscale: u8 = unsafe { ::core::mem::transmute(tcpi_rcv_wscale) };
-tcpi_rcv_wscale as u64
-});
-__bindgen_bitfield_unit.set(8usize, 1u8, {
-let tcpi_delivery_rate_app_limited: u8 = unsafe { ::core::mem::transmute(tcpi_delivery_rate_app_limited) };
-tcpi_delivery_rate_app_limited as u64
-});
-__bindgen_bitfield_unit.set(9usize, 2u8, {
-let tcpi_fastopen_client_fail: u8 = unsafe { ::core::mem::transmute(tcpi_fastopen_client_fail) };
-tcpi_fastopen_client_fail as u64
-});
-__bindgen_bitfield_unit
-}
-}
-pub const TCP_NLA_PAD: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PAD;
-pub const TCP_NLA_BUSY: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BUSY;
-pub const TCP_NLA_RWND_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RWND_LIMITED;
-pub const TCP_NLA_SNDBUF_LIMITED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDBUF_LIMITED;
-pub const TCP_NLA_DATA_SEGS_OUT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DATA_SEGS_OUT;
-pub const TCP_NLA_TOTAL_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TOTAL_RETRANS;
-pub const TCP_NLA_PACING_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_PACING_RATE;
-pub const TCP_NLA_DELIVERY_RATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE;
-pub const TCP_NLA_SND_CWND: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_CWND;
-pub const TCP_NLA_REORDERING: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORDERING;
-pub const TCP_NLA_MIN_RTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_MIN_RTT;
-pub const TCP_NLA_RECUR_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_RECUR_RETRANS;
-pub const TCP_NLA_DELIVERY_RATE_APP_LMT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERY_RATE_APP_LMT;
-pub const TCP_NLA_SNDQ_SIZE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SNDQ_SIZE;
-pub const TCP_NLA_CA_STATE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_CA_STATE;
-pub const TCP_NLA_SND_SSTHRESH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SND_SSTHRESH;
-pub const TCP_NLA_DELIVERED: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED;
-pub const TCP_NLA_DELIVERED_CE: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DELIVERED_CE;
-pub const TCP_NLA_BYTES_SENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_SENT;
-pub const TCP_NLA_BYTES_RETRANS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_RETRANS;
-pub const TCP_NLA_DSACK_DUPS: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_DSACK_DUPS;
-pub const TCP_NLA_REORD_SEEN: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REORD_SEEN;
-pub const TCP_NLA_SRTT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_SRTT;
-pub const TCP_NLA_TIMEOUT_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TIMEOUT_REHASH;
-pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NOTSENT;
-pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
-pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
-pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-TCP_NLA_PAD = 0,
-TCP_NLA_BUSY = 1,
-TCP_NLA_RWND_LIMITED = 2,
-TCP_NLA_SNDBUF_LIMITED = 3,
-TCP_NLA_DATA_SEGS_OUT = 4,
-TCP_NLA_TOTAL_RETRANS = 5,
-TCP_NLA_PACING_RATE = 6,
-TCP_NLA_DELIVERY_RATE = 7,
-TCP_NLA_SND_CWND = 8,
-TCP_NLA_REORDERING = 9,
-TCP_NLA_MIN_RTT = 10,
-TCP_NLA_RECUR_RETRANS = 11,
-TCP_NLA_DELIVERY_RATE_APP_LMT = 12,
-TCP_NLA_SNDQ_SIZE = 13,
-TCP_NLA_CA_STATE = 14,
-TCP_NLA_SND_SSTHRESH = 15,
-TCP_NLA_DELIVERED = 16,
-TCP_NLA_DELIVERED_CE = 17,
-TCP_NLA_BYTES_SENT = 18,
-TCP_NLA_BYTES_RETRANS = 19,
-TCP_NLA_DSACK_DUPS = 20,
-TCP_NLA_REORD_SEEN = 21,
-TCP_NLA_SRTT = 22,
-TCP_NLA_TIMEOUT_REHASH = 23,
-TCP_NLA_BYTES_NOTSENT = 24,
-TCP_NLA_EDT = 25,
-TCP_NLA_TTL = 26,
-TCP_NLA_REHASH = 27,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct tcp_md5sig {
-pub tcpm_addr: __kernel_sockaddr_storage,
-pub tcpm_flags: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_ifindex: crate::ctypes::c_int,
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_diag_md5sig {
-pub tcpm_family: __u8,
-pub tcpm_prefixlen: __u8,
-pub tcpm_keylen: __u16,
-pub tcpm_addr: [__be32; 4usize],
-pub tcpm_key: [__u8; 80usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcp_zerocopy_receive {
-pub address: __u64,
-pub length: __u32,
-pub recv_skip_hint: __u32,
-pub inq: __u32,
-pub err: __s32,
-pub copybuf_address: __u64,
-pub copybuf_len: __s32,
-pub flags: __u32,
-pub msg_control: __u64,
-pub msg_controllen: __u64,
-pub msg_flags: __u32,
-pub reserved: __u32,
-}
-pub type cc_t = crate::ctypes::c_uchar;
-pub type speed_t = crate::ctypes::c_uint;
-pub type tcflag_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termios2 {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ktermios {
-pub c_iflag: tcflag_t,
-pub c_oflag: tcflag_t,
-pub c_cflag: tcflag_t,
-pub c_lflag: tcflag_t,
-pub c_line: cc_t,
-pub c_cc: [cc_t; 19usize],
-pub c_ispeed: speed_t,
-pub c_ospeed: speed_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct winsize {
-pub ws_row: crate::ctypes::c_ushort,
-pub ws_col: crate::ctypes::c_ushort,
-pub ws_xpixel: crate::ctypes::c_ushort,
-pub ws_ypixel: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct termio {
-pub c_iflag: crate::ctypes::c_ushort,
-pub c_oflag: crate::ctypes::c_ushort,
-pub c_cflag: crate::ctypes::c_ushort,
-pub c_lflag: crate::ctypes::c_ushort,
-pub c_line: crate::ctypes::c_uchar,
-pub c_cc: [crate::ctypes::c_uchar; 8usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iovec {
-pub iov_base: *mut crate::ctypes::c_void,
-pub iov_len: __kernel_size_t,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_un {
-pub sun_family: __kernel_sa_family_t,
-pub sun_path: [crate::ctypes::c_char; 108usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct oldold_utsname {
-pub sysname: [crate::ctypes::c_char; 9usize],
-pub nodename: [crate::ctypes::c_char; 9usize],
-pub release: [crate::ctypes::c_char; 9usize],
-pub version: [crate::ctypes::c_char; 9usize],
-pub machine: [crate::ctypes::c_char; 9usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct old_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct new_utsname {
-pub sysname: [crate::ctypes::c_char; 65usize],
-pub nodename: [crate::ctypes::c_char; 65usize],
-pub release: [crate::ctypes::c_char; 65usize],
-pub version: [crate::ctypes::c_char; 65usize],
-pub machine: [crate::ctypes::c_char; 65usize],
-pub domainname: [crate::ctypes::c_char; 65usize],
-}
-impl membarrier_cmd {
-pub const MEMBARRIER_CMD_SHARED: membarrier_cmd = membarrier_cmd::MEMBARRIER_CMD_GLOBAL;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd {
-MEMBARRIER_CMD_QUERY = 0,
-MEMBARRIER_CMD_GLOBAL = 1,
-MEMBARRIER_CMD_GLOBAL_EXPEDITED = 2,
-MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = 4,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED = 8,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = 16,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = 32,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = 64,
-MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ = 128,
-MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ = 256,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum membarrier_cmd_flag {
-MEMBARRIER_CMD_FLAG_CPU = 1,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg {
-pub event: __u8,
-pub reserved1: __u8,
-pub reserved2: __u16,
-pub reserved3: __u32,
-pub arg: uffd_msg__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1 {
-pub pagefault: uffd_msg__bindgen_ty_1__bindgen_ty_1,
-pub fork: uffd_msg__bindgen_ty_1__bindgen_ty_2,
-pub remap: uffd_msg__bindgen_ty_1__bindgen_ty_3,
-pub remove: uffd_msg__bindgen_ty_1__bindgen_ty_4,
-pub reserved: uffd_msg__bindgen_ty_1__bindgen_ty_5,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_1 {
-pub flags: __u64,
-pub address: __u64,
-pub feat: uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union uffd_msg__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {
-pub ptid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_2 {
-pub ufd: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_3 {
-pub from: __u64,
-pub to: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_4 {
-pub start: __u64,
-pub end: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffd_msg__bindgen_ty_1__bindgen_ty_5 {
-pub reserved1: __u64,
-pub reserved2: __u64,
-pub reserved3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_api {
-pub api: __u64,
-pub features: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_range {
-pub start: __u64,
-pub len: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_register {
-pub range: uffdio_range,
-pub mode: __u64,
-pub ioctls: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_copy {
-pub dst: __u64,
-pub src: __u64,
-pub len: __u64,
-pub mode: __u64,
-pub copy: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_zeropage {
-pub range: uffdio_range,
-pub mode: __u64,
-pub zeropage: __s64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_writeprotect {
-pub range: uffdio_range,
-pub mode: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct uffdio_continue {
-pub range: uffdio_range,
-pub mode: __u64,
-pub mapped: __s64,
-}
-#[repr(C)]
-pub struct io_uring_sqe {
-pub opcode: __u8,
-pub flags: __u8,
-pub ioprio: __u16,
-pub fd: __s32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1,
-pub __bindgen_anon_2: io_uring_sqe__bindgen_ty_2,
-pub len: __u32,
-pub __bindgen_anon_3: io_uring_sqe__bindgen_ty_3,
-pub user_data: __u64,
-pub __bindgen_anon_4: io_uring_sqe__bindgen_ty_4,
-pub personality: __u16,
-pub __bindgen_anon_5: io_uring_sqe__bindgen_ty_5,
-pub __bindgen_anon_6: io_uring_sqe__bindgen_ty_6,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_1 {
-pub off: __u64,
-pub addr2: __u64,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_1__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_1__bindgen_ty_1 {
-pub cmd_op: __u32,
-pub __pad1: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_2 {
-pub addr: __u64,
-pub splice_off_in: __u64,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_3 {
-pub rw_flags: __kernel_rwf_t,
-pub fsync_flags: __u32,
-pub poll_events: __u16,
-pub poll32_events: __u32,
-pub sync_range_flags: __u32,
-pub msg_flags: __u32,
-pub timeout_flags: __u32,
-pub accept_flags: __u32,
-pub cancel_flags: __u32,
-pub open_flags: __u32,
-pub statx_flags: __u32,
-pub fadvise_advice: __u32,
-pub splice_flags: __u32,
-pub rename_flags: __u32,
-pub unlink_flags: __u32,
-pub hardlink_flags: __u32,
-pub xattr_flags: __u32,
-pub msg_ring_flags: __u32,
-pub uring_cmd_flags: __u32,
-}
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_4 {
-pub buf_index: __u16,
-pub buf_group: __u16,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_sqe__bindgen_ty_5 {
-pub splice_fd_in: __s32,
-pub file_index: __u32,
-pub __bindgen_anon_1: io_uring_sqe__bindgen_ty_5__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_5__bindgen_ty_1 {
-pub addr_len: __u16,
-pub __pad3: [__u16; 1usize],
-}
-#[repr(C)]
-pub struct io_uring_sqe__bindgen_ty_6 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_sqe__bindgen_ty_6__bindgen_ty_1>,
-pub cmd: __BindgenUnionField<[__u8; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sqe__bindgen_ty_6__bindgen_ty_1 {
-pub addr3: __u64,
-pub __pad2: [__u64; 1usize],
-}
-pub const IOSQE_FIXED_FILE_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_FIXED_FILE_BIT;
-pub const IOSQE_IO_DRAIN_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_DRAIN_BIT;
-pub const IOSQE_IO_LINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_LINK_BIT;
-pub const IOSQE_IO_HARDLINK_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_IO_HARDLINK_BIT;
-pub const IOSQE_ASYNC_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_ASYNC_BIT;
-pub const IOSQE_BUFFER_SELECT_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_BUFFER_SELECT_BIT;
-pub const IOSQE_CQE_SKIP_SUCCESS_BIT: _bindgen_ty_7 = _bindgen_ty_7::IOSQE_CQE_SKIP_SUCCESS_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-IOSQE_FIXED_FILE_BIT = 0,
-IOSQE_IO_DRAIN_BIT = 1,
-IOSQE_IO_LINK_BIT = 2,
-IOSQE_IO_HARDLINK_BIT = 3,
-IOSQE_ASYNC_BIT = 4,
-IOSQE_BUFFER_SELECT_BIT = 5,
-IOSQE_CQE_SKIP_SUCCESS_BIT = 6,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum io_uring_op {
-IORING_OP_NOP = 0,
-IORING_OP_READV = 1,
-IORING_OP_WRITEV = 2,
-IORING_OP_FSYNC = 3,
-IORING_OP_READ_FIXED = 4,
-IORING_OP_WRITE_FIXED = 5,
-IORING_OP_POLL_ADD = 6,
-IORING_OP_POLL_REMOVE = 7,
-IORING_OP_SYNC_FILE_RANGE = 8,
-IORING_OP_SENDMSG = 9,
-IORING_OP_RECVMSG = 10,
-IORING_OP_TIMEOUT = 11,
-IORING_OP_TIMEOUT_REMOVE = 12,
-IORING_OP_ACCEPT = 13,
-IORING_OP_ASYNC_CANCEL = 14,
-IORING_OP_LINK_TIMEOUT = 15,
-IORING_OP_CONNECT = 16,
-IORING_OP_FALLOCATE = 17,
-IORING_OP_OPENAT = 18,
-IORING_OP_CLOSE = 19,
-IORING_OP_FILES_UPDATE = 20,
-IORING_OP_STATX = 21,
-IORING_OP_READ = 22,
-IORING_OP_WRITE = 23,
-IORING_OP_FADVISE = 24,
-IORING_OP_MADVISE = 25,
-IORING_OP_SEND = 26,
-IORING_OP_RECV = 27,
-IORING_OP_OPENAT2 = 28,
-IORING_OP_EPOLL_CTL = 29,
-IORING_OP_SPLICE = 30,
-IORING_OP_PROVIDE_BUFFERS = 31,
-IORING_OP_REMOVE_BUFFERS = 32,
-IORING_OP_TEE = 33,
-IORING_OP_SHUTDOWN = 34,
-IORING_OP_RENAMEAT = 35,
-IORING_OP_UNLINKAT = 36,
-IORING_OP_MKDIRAT = 37,
-IORING_OP_SYMLINKAT = 38,
-IORING_OP_LINKAT = 39,
-IORING_OP_MSG_RING = 40,
-IORING_OP_FSETXATTR = 41,
-IORING_OP_SETXATTR = 42,
-IORING_OP_FGETXATTR = 43,
-IORING_OP_GETXATTR = 44,
-IORING_OP_SOCKET = 45,
-IORING_OP_URING_CMD = 46,
-IORING_OP_SEND_ZC = 47,
-IORING_OP_SENDMSG_ZC = 48,
-IORING_OP_LAST = 49,
-}
-pub const IORING_MSG_DATA: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_DATA;
-pub const IORING_MSG_SEND_FD: _bindgen_ty_8 = _bindgen_ty_8::IORING_MSG_SEND_FD;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IORING_MSG_DATA = 0,
-IORING_MSG_SEND_FD = 1,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_cqe {
-pub user_data: __u64,
-pub res: __s32,
-pub flags: __u32,
-pub big_cqe: __IncompleteArrayField<__u64>,
-}
-pub const IORING_CQE_BUFFER_SHIFT: _bindgen_ty_9 = _bindgen_ty_9::IORING_CQE_BUFFER_SHIFT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IORING_CQE_BUFFER_SHIFT = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_sqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub flags: __u32,
-pub dropped: __u32,
-pub array: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_cqring_offsets {
-pub head: __u32,
-pub tail: __u32,
-pub ring_mask: __u32,
-pub ring_entries: __u32,
-pub overflow: __u32,
-pub cqes: __u32,
-pub flags: __u32,
-pub resv1: __u32,
-pub resv2: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_params {
-pub sq_entries: __u32,
-pub cq_entries: __u32,
-pub flags: __u32,
-pub sq_thread_cpu: __u32,
-pub sq_thread_idle: __u32,
-pub features: __u32,
-pub wq_fd: __u32,
-pub resv: [__u32; 3usize],
-pub sq_off: io_sqring_offsets,
-pub cq_off: io_cqring_offsets,
-}
-pub const IORING_REGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS;
-pub const IORING_UNREGISTER_BUFFERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_BUFFERS;
-pub const IORING_REGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES;
-pub const IORING_UNREGISTER_FILES: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_FILES;
-pub const IORING_REGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD;
-pub const IORING_UNREGISTER_EVENTFD: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_EVENTFD;
-pub const IORING_REGISTER_FILES_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE;
-pub const IORING_REGISTER_EVENTFD_ASYNC: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_EVENTFD_ASYNC;
-pub const IORING_REGISTER_PROBE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PROBE;
-pub const IORING_REGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PERSONALITY;
-pub const IORING_UNREGISTER_PERSONALITY: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PERSONALITY;
-pub const IORING_REGISTER_RESTRICTIONS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RESTRICTIONS;
-pub const IORING_REGISTER_ENABLE_RINGS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_ENABLE_RINGS;
-pub const IORING_REGISTER_FILES2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES2;
-pub const IORING_REGISTER_FILES_UPDATE2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILES_UPDATE2;
-pub const IORING_REGISTER_BUFFERS2: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS2;
-pub const IORING_REGISTER_BUFFERS_UPDATE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_BUFFERS_UPDATE;
-pub const IORING_REGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_AFF;
-pub const IORING_UNREGISTER_IOWQ_AFF: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_IOWQ_AFF;
-pub const IORING_REGISTER_IOWQ_MAX_WORKERS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_IOWQ_MAX_WORKERS;
-pub const IORING_REGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_RING_FDS;
-pub const IORING_UNREGISTER_RING_FDS: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_RING_FDS;
-pub const IORING_REGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_PBUF_RING;
-pub const IORING_UNREGISTER_PBUF_RING: _bindgen_ty_10 = _bindgen_ty_10::IORING_UNREGISTER_PBUF_RING;
-pub const IORING_REGISTER_SYNC_CANCEL: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_SYNC_CANCEL;
-pub const IORING_REGISTER_FILE_ALLOC_RANGE: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_FILE_ALLOC_RANGE;
-pub const IORING_REGISTER_LAST: _bindgen_ty_10 = _bindgen_ty_10::IORING_REGISTER_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IORING_REGISTER_BUFFERS = 0,
-IORING_UNREGISTER_BUFFERS = 1,
-IORING_REGISTER_FILES = 2,
-IORING_UNREGISTER_FILES = 3,
-IORING_REGISTER_EVENTFD = 4,
-IORING_UNREGISTER_EVENTFD = 5,
-IORING_REGISTER_FILES_UPDATE = 6,
-IORING_REGISTER_EVENTFD_ASYNC = 7,
-IORING_REGISTER_PROBE = 8,
-IORING_REGISTER_PERSONALITY = 9,
-IORING_UNREGISTER_PERSONALITY = 10,
-IORING_REGISTER_RESTRICTIONS = 11,
-IORING_REGISTER_ENABLE_RINGS = 12,
-IORING_REGISTER_FILES2 = 13,
-IORING_REGISTER_FILES_UPDATE2 = 14,
-IORING_REGISTER_BUFFERS2 = 15,
-IORING_REGISTER_BUFFERS_UPDATE = 16,
-IORING_REGISTER_IOWQ_AFF = 17,
-IORING_UNREGISTER_IOWQ_AFF = 18,
-IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
-IORING_REGISTER_RING_FDS = 20,
-IORING_UNREGISTER_RING_FDS = 21,
-IORING_REGISTER_PBUF_RING = 22,
-IORING_UNREGISTER_PBUF_RING = 23,
-IORING_REGISTER_SYNC_CANCEL = 24,
-IORING_REGISTER_FILE_ALLOC_RANGE = 25,
-IORING_REGISTER_LAST = 26,
-}
-pub const IO_WQ_BOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_BOUND;
-pub const IO_WQ_UNBOUND: _bindgen_ty_11 = _bindgen_ty_11::IO_WQ_UNBOUND;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IO_WQ_BOUND = 0,
-IO_WQ_UNBOUND = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_files_update {
-pub offset: __u32,
-pub resv: __u32,
-pub fds: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_register {
-pub nr: __u32,
-pub flags: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub tags: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_rsrc_update2 {
-pub offset: __u32,
-pub resv: __u32,
-pub data: __u64,
-pub tags: __u64,
-pub nr: __u32,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_slot {
-pub tag: __u64,
-pub resv: [__u64; 3usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_notification_register {
-pub nr_slots: __u32,
-pub resv: __u32,
-pub resv2: __u64,
-pub data: __u64,
-pub resv3: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_probe_op {
-pub op: __u8,
-pub resv: __u8,
-pub flags: __u16,
-pub resv2: __u32,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct io_uring_probe {
-pub last_op: __u8,
-pub ops_len: __u8,
-pub resv: __u16,
-pub resv2: [__u32; 3usize],
-pub ops: __IncompleteArrayField<io_uring_probe_op>,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct io_uring_restriction {
-pub opcode: __u16,
-pub __bindgen_anon_1: io_uring_restriction__bindgen_ty_1,
-pub resv: __u8,
-pub resv2: [__u32; 3usize],
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_restriction__bindgen_ty_1 {
-pub register_op: __u8,
-pub sqe_op: __u8,
-pub sqe_flags: __u8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf {
-pub addr: __u64,
-pub len: __u32,
-pub bid: __u16,
-pub resv: __u16,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring {
-pub __bindgen_anon_1: io_uring_buf_ring__bindgen_ty_1,
-}
-#[repr(C)]
-pub struct io_uring_buf_ring__bindgen_ty_1 {
-pub __bindgen_anon_1: __BindgenUnionField<io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1>,
-pub bufs: __BindgenUnionField<[io_uring_buf; 0usize]>,
-pub bindgen_union_field: [u64; 2usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_ring__bindgen_ty_1__bindgen_ty_1 {
-pub resv1: __u64,
-pub resv2: __u32,
-pub resv3: __u16,
-pub tail: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_buf_reg {
-pub ring_addr: __u64,
-pub ring_entries: __u32,
-pub bgid: __u16,
-pub pad: __u16,
-pub resv: [__u64; 3usize],
-}
-pub const IORING_RESTRICTION_REGISTER_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_REGISTER_OP;
-pub const IORING_RESTRICTION_SQE_OP: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_OP;
-pub const IORING_RESTRICTION_SQE_FLAGS_ALLOWED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_ALLOWED;
-pub const IORING_RESTRICTION_SQE_FLAGS_REQUIRED: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_SQE_FLAGS_REQUIRED;
-pub const IORING_RESTRICTION_LAST: _bindgen_ty_12 = _bindgen_ty_12::IORING_RESTRICTION_LAST;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IORING_RESTRICTION_REGISTER_OP = 0,
-IORING_RESTRICTION_SQE_OP = 1,
-IORING_RESTRICTION_SQE_FLAGS_ALLOWED = 2,
-IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3,
-IORING_RESTRICTION_LAST = 4,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_getevents_arg {
-pub sigmask: __u64,
-pub sigmask_sz: __u32,
-pub pad: __u32,
-pub ts: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_sync_cancel_reg {
-pub addr: __u64,
-pub fd: __s32,
-pub flags: __u32,
-pub timeout: __kernel_timespec,
-pub pad: [__u64; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_file_index_range {
-pub off: __u32,
-pub len: __u32,
-pub resv: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct io_uring_recvmsg_out {
-pub namelen: __u32,
-pub controllen: __u32,
-pub payloadlen: __u32,
-pub flags: __u32,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct sockaddr {
-pub __storage: __kernel_sockaddr_storage,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct linger {
-pub l_onoff: crate::ctypes::c_int,
-pub l_linger: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct linux_dirent64 {
-pub d_ino: crate::ctypes::c_ulong,
-pub d_off: crate::ctypes::c_long,
-pub d_reclen: __u16,
-pub d_type: __u8,
-pub d_name: __IncompleteArrayField<crate::ctypes::c_char>,
-}
-pub type socklen_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct stat {
-pub st_dev: __kernel_ulong_t,
-pub st_ino: __kernel_ulong_t,
-pub st_nlink: __kernel_ulong_t,
-pub st_mode: crate::ctypes::c_uint,
-pub st_uid: crate::ctypes::c_uint,
-pub st_gid: crate::ctypes::c_uint,
-pub __pad0: crate::ctypes::c_uint,
-pub st_rdev: __kernel_ulong_t,
-pub st_size: __kernel_long_t,
-pub st_blksize: __kernel_long_t,
-pub st_blocks: __kernel_long_t,
-pub st_atime: __kernel_ulong_t,
-pub st_atime_nsec: __kernel_ulong_t,
-pub st_mtime: __kernel_ulong_t,
-pub st_mtime_nsec: __kernel_ulong_t,
-pub st_ctime: __kernel_ulong_t,
-pub st_ctime_nsec: __kernel_ulong_t,
-pub __unused: [__kernel_long_t; 3usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __old_kernel_stat {
-pub st_dev: crate::ctypes::c_ushort,
-pub st_ino: crate::ctypes::c_ushort,
-pub st_mode: crate::ctypes::c_ushort,
-pub st_nlink: crate::ctypes::c_ushort,
-pub st_uid: crate::ctypes::c_ushort,
-pub st_gid: crate::ctypes::c_ushort,
-pub st_rdev: crate::ctypes::c_ushort,
-pub st_size: crate::ctypes::c_uint,
-pub st_atime: crate::ctypes::c_uint,
-pub st_mtime: crate::ctypes::c_uint,
-pub st_ctime: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs {
-pub f_type: __kernel_long_t,
-pub f_bsize: __kernel_long_t,
-pub f_blocks: __kernel_long_t,
-pub f_bfree: __kernel_long_t,
-pub f_bavail: __kernel_long_t,
-pub f_files: __kernel_long_t,
-pub f_ffree: __kernel_long_t,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __kernel_long_t,
-pub f_frsize: __kernel_long_t,
-pub f_flags: __kernel_long_t,
-pub f_spare: [__kernel_long_t; 4usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct statfs64 {
-pub f_type: __kernel_long_t,
-pub f_bsize: __kernel_long_t,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __kernel_long_t,
-pub f_frsize: __kernel_long_t,
-pub f_flags: __kernel_long_t,
-pub f_spare: [__kernel_long_t; 4usize],
-}
-#[repr(C, packed(4))]
-#[derive(Debug, Copy, Clone)]
-pub struct compat_statfs64 {
-pub f_type: __u32,
-pub f_bsize: __u32,
-pub f_blocks: __u64,
-pub f_bfree: __u64,
-pub f_bavail: __u64,
-pub f_files: __u64,
-pub f_ffree: __u64,
-pub f_fsid: __kernel_fsid_t,
-pub f_namelen: __u32,
-pub f_frsize: __u32,
-pub f_flags: __u32,
-pub f_spare: [__u32; 4usize],
-}
-pub type __fsword_t = __kernel_long_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct user_desc {
-pub entry_number: crate::ctypes::c_uint,
-pub base_addr: crate::ctypes::c_uint,
-pub limit: crate::ctypes::c_uint,
-pub _bitfield_align_1: [u8; 0],
-pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
-pub __bindgen_padding_0: [u8; 3usize],
-}
-impl user_desc {
-#[inline]
-pub fn seg_32bit(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_32bit(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(0usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn contents(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(1usize, 2u8) as u32) }
-}
-#[inline]
-pub fn set_contents(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(1usize, 2u8, val as u64)
-}
-}
-#[inline]
-pub fn read_exec_only(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_read_exec_only(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(3usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn limit_in_pages(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_limit_in_pages(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(4usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn seg_not_present(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_seg_not_present(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(5usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn useable(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_useable(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(6usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn lm(&self) -> crate::ctypes::c_uint {
-unsafe { ::core::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u32) }
-}
-#[inline]
-pub fn set_lm(&mut self, val: crate::ctypes::c_uint) {
-unsafe {
-let val: u32 = ::core::mem::transmute(val);
-self._bitfield_1.set(7usize, 1u8, val as u64)
-}
-}
-#[inline]
-pub fn new_bitfield_1(seg_32bit: crate::ctypes::c_uint, contents: crate::ctypes::c_uint, read_exec_only: crate::ctypes::c_uint, limit_in_pages: crate::ctypes::c_uint, seg_not_present: crate::ctypes::c_uint, useable: crate::ctypes::c_uint, lm: crate::ctypes::c_uint) -> __BindgenBitfieldUnit<[u8; 1usize]> {
-let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
-__bindgen_bitfield_unit.set(0usize, 1u8, {
-let seg_32bit: u32 = unsafe { ::core::mem::transmute(seg_32bit) };
-seg_32bit as u64
-});
-__bindgen_bitfield_unit.set(1usize, 2u8, {
-let contents: u32 = unsafe { ::core::mem::transmute(contents) };
-contents as u64
-});
-__bindgen_bitfield_unit.set(3usize, 1u8, {
-let read_exec_only: u32 = unsafe { ::core::mem::transmute(read_exec_only) };
-read_exec_only as u64
-});
-__bindgen_bitfield_unit.set(4usize, 1u8, {
-let limit_in_pages: u32 = unsafe { ::core::mem::transmute(limit_in_pages) };
-limit_in_pages as u64
-});
-__bindgen_bitfield_unit.set(5usize, 1u8, {
-let seg_not_present: u32 = unsafe { ::core::mem::transmute(seg_not_present) };
-seg_not_present as u64
-});
-__bindgen_bitfield_unit.set(6usize, 1u8, {
-let useable: u32 = unsafe { ::core::mem::transmute(useable) };
-useable as u64
-});
-__bindgen_bitfield_unit.set(7usize, 1u8, {
-let lm: u32 = unsafe { ::core::mem::transmute(lm) };
-lm as u64
-});
-__bindgen_bitfield_unit
-}
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct msghdr {
-pub msg_name: *mut crate::ctypes::c_void,
-pub msg_namelen: crate::ctypes::c_int,
-pub msg_iov: *mut iovec,
-pub msg_iovlen: size_t,
-pub msg_control: *mut crate::ctypes::c_void,
-pub msg_controllen: size_t,
-pub msg_flags: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct cmsghdr {
-pub cmsg_len: size_t,
-pub cmsg_level: crate::ctypes::c_int,
-pub cmsg_type: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ucred {
-pub pid: __u32,
-pub uid: __u32,
-pub gid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct mmsghdr {
-pub msg_hdr: msghdr,
-pub msg_len: crate::ctypes::c_uint,
-}
diff --git a/vendor/linux-raw-sys-0.3.2/src/x86_64/ioctl.rs b/vendor/linux-raw-sys-0.3.2/src/x86_64/ioctl.rs
deleted file mode 100644
index feadb5db4..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/x86_64/ioctl.rs
+++ /dev/null
@@ -1,1570 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-pub const FIONREAD: u32 = 21531;
-pub const FIONBIO: u32 = 21537;
-pub const FIOCLEX: u32 = 21585;
-pub const FIONCLEX: u32 = 21584;
-pub const FIOASYNC: u32 = 21586;
-pub const FIOQSIZE: u32 = 21600;
-pub const TCXONC: u32 = 21514;
-pub const TCFLSH: u32 = 21515;
-pub const TIOCSCTTY: u32 = 21518;
-pub const TIOCSPGRP: u32 = 21520;
-pub const TIOCOUTQ: u32 = 21521;
-pub const TIOCSTI: u32 = 21522;
-pub const TIOCSWINSZ: u32 = 21524;
-pub const TIOCMGET: u32 = 21525;
-pub const TIOCMBIS: u32 = 21526;
-pub const TIOCMBIC: u32 = 21527;
-pub const TIOCMSET: u32 = 21528;
-pub const TIOCSSOFTCAR: u32 = 21530;
-pub const TIOCLINUX: u32 = 21532;
-pub const TIOCCONS: u32 = 21533;
-pub const TIOCSSERIAL: u32 = 21535;
-pub const TIOCPKT: u32 = 21536;
-pub const TIOCNOTTY: u32 = 21538;
-pub const TIOCSETD: u32 = 21539;
-pub const TIOCSBRK: u32 = 21543;
-pub const TIOCCBRK: u32 = 21544;
-pub const TIOCSRS485: u32 = 21551;
-pub const TIOCSPTLCK: u32 = 1074025521;
-pub const TIOCSIG: u32 = 1074025526;
-pub const TIOCVHANGUP: u32 = 21559;
-pub const TIOCSERCONFIG: u32 = 21587;
-pub const TIOCSERGWILD: u32 = 21588;
-pub const TIOCSERSWILD: u32 = 21589;
-pub const TIOCSLCKTRMIOS: u32 = 21591;
-pub const TIOCSERGSTRUCT: u32 = 21592;
-pub const TIOCSERGETLSR: u32 = 21593;
-pub const TIOCSERGETMULTI: u32 = 21594;
-pub const TIOCSERSETMULTI: u32 = 21595;
-pub const TIOCMIWAIT: u32 = 21596;
-pub const TCGETS: u32 = 21505;
-pub const TCGETA: u32 = 21509;
-pub const TCSBRK: u32 = 21513;
-pub const TCSBRKP: u32 = 21541;
-pub const TCSETA: u32 = 21510;
-pub const TCSETAF: u32 = 21512;
-pub const TCSETAW: u32 = 21511;
-pub const TIOCEXCL: u32 = 21516;
-pub const TIOCNXCL: u32 = 21517;
-pub const TIOCGDEV: u32 = 2147767346;
-pub const TIOCGEXCL: u32 = 2147767360;
-pub const TIOCGICOUNT: u32 = 21597;
-pub const TIOCGLCKTRMIOS: u32 = 21590;
-pub const TIOCGPGRP: u32 = 21519;
-pub const TIOCGPKT: u32 = 2147767352;
-pub const TIOCGPTLCK: u32 = 2147767353;
-pub const TIOCGPTN: u32 = 2147767344;
-pub const TIOCGPTPEER: u32 = 21569;
-pub const TIOCGRS485: u32 = 21550;
-pub const TIOCGSERIAL: u32 = 21534;
-pub const TIOCGSID: u32 = 21545;
-pub const TIOCGSOFTCAR: u32 = 21529;
-pub const TIOCGWINSZ: u32 = 21523;
-pub const TCGETS2: u32 = 2150388778;
-pub const TCGETX: u32 = 21554;
-pub const TCSETS: u32 = 21506;
-pub const TCSETS2: u32 = 1076646955;
-pub const TCSETSF: u32 = 21508;
-pub const TCSETSF2: u32 = 1076646957;
-pub const TCSETSW: u32 = 21507;
-pub const TCSETSW2: u32 = 1076646956;
-pub const TCSETX: u32 = 21555;
-pub const TCSETXF: u32 = 21556;
-pub const TCSETXW: u32 = 21557;
-pub const TIOCGETD: u32 = 21540;
-pub const MTIOCGET: u32 = 2150657282;
-pub const BLKSSZGET: u32 = 4712;
-pub const BLKPBSZGET: u32 = 4731;
-pub const BLKROSET: u32 = 4701;
-pub const BLKROGET: u32 = 4702;
-pub const BLKRRPART: u32 = 4703;
-pub const BLKGETSIZE: u32 = 4704;
-pub const BLKFLSBUF: u32 = 4705;
-pub const BLKRASET: u32 = 4706;
-pub const BLKRAGET: u32 = 4707;
-pub const BLKFRASET: u32 = 4708;
-pub const BLKFRAGET: u32 = 4709;
-pub const BLKSECTSET: u32 = 4710;
-pub const BLKSECTGET: u32 = 4711;
-pub const BLKPG: u32 = 4713;
-pub const BLKBSZGET: u32 = 2148012656;
-pub const BLKBSZSET: u32 = 1074270833;
-pub const BLKGETSIZE64: u32 = 2148012658;
-pub const BLKTRACESETUP: u32 = 3225948787;
-pub const BLKTRACESTART: u32 = 4724;
-pub const BLKTRACESTOP: u32 = 4725;
-pub const BLKTRACETEARDOWN: u32 = 4726;
-pub const BLKDISCARD: u32 = 4727;
-pub const BLKIOMIN: u32 = 4728;
-pub const BLKIOOPT: u32 = 4729;
-pub const BLKALIGNOFF: u32 = 4730;
-pub const BLKDISCARDZEROES: u32 = 4732;
-pub const BLKSECDISCARD: u32 = 4733;
-pub const BLKROTATIONAL: u32 = 4734;
-pub const BLKZEROOUT: u32 = 4735;
-pub const UFFDIO_REGISTER: u32 = 3223366144;
-pub const UFFDIO_UNREGISTER: u32 = 2148575745;
-pub const UFFDIO_WAKE: u32 = 2148575746;
-pub const UFFDIO_COPY: u32 = 3223890435;
-pub const UFFDIO_ZEROPAGE: u32 = 3223366148;
-pub const UFFDIO_WRITEPROTECT: u32 = 3222841862;
-pub const UFFDIO_API: u32 = 3222841919;
-pub const NS_GET_USERNS: u32 = 46849;
-pub const NS_GET_PARENT: u32 = 46850;
-pub const NS_GET_NSTYPE: u32 = 46851;
-pub const KDGETLED: u32 = 19249;
-pub const KDSETLED: u32 = 19250;
-pub const KDGKBLED: u32 = 19300;
-pub const KDSKBLED: u32 = 19301;
-pub const KDGKBTYPE: u32 = 19251;
-pub const KDADDIO: u32 = 19252;
-pub const KDDELIO: u32 = 19253;
-pub const KDENABIO: u32 = 19254;
-pub const KDDISABIO: u32 = 19255;
-pub const KDSETMODE: u32 = 19258;
-pub const KDGETMODE: u32 = 19259;
-pub const KDMKTONE: u32 = 19248;
-pub const KIOCSOUND: u32 = 19247;
-pub const GIO_CMAP: u32 = 19312;
-pub const PIO_CMAP: u32 = 19313;
-pub const GIO_FONT: u32 = 19296;
-pub const GIO_FONTX: u32 = 19307;
-pub const PIO_FONT: u32 = 19297;
-pub const PIO_FONTX: u32 = 19308;
-pub const PIO_FONTRESET: u32 = 19309;
-pub const GIO_SCRNMAP: u32 = 19264;
-pub const GIO_UNISCRNMAP: u32 = 19305;
-pub const PIO_SCRNMAP: u32 = 19265;
-pub const PIO_UNISCRNMAP: u32 = 19306;
-pub const GIO_UNIMAP: u32 = 19302;
-pub const PIO_UNIMAP: u32 = 19303;
-pub const PIO_UNIMAPCLR: u32 = 19304;
-pub const KDGKBMODE: u32 = 19268;
-pub const KDSKBMODE: u32 = 19269;
-pub const KDGKBMETA: u32 = 19298;
-pub const KDSKBMETA: u32 = 19299;
-pub const KDGKBENT: u32 = 19270;
-pub const KDSKBENT: u32 = 19271;
-pub const KDGKBSENT: u32 = 19272;
-pub const KDSKBSENT: u32 = 19273;
-pub const KDGKBDIACR: u32 = 19274;
-pub const KDGETKEYCODE: u32 = 19276;
-pub const KDSETKEYCODE: u32 = 19277;
-pub const KDSIGACCEPT: u32 = 19278;
-pub const VT_OPENQRY: u32 = 22016;
-pub const VT_GETMODE: u32 = 22017;
-pub const VT_SETMODE: u32 = 22018;
-pub const VT_GETSTATE: u32 = 22019;
-pub const VT_RELDISP: u32 = 22021;
-pub const VT_ACTIVATE: u32 = 22022;
-pub const VT_WAITACTIVE: u32 = 22023;
-pub const VT_DISALLOCATE: u32 = 22024;
-pub const VT_RESIZE: u32 = 22025;
-pub const VT_RESIZEX: u32 = 22026;
-pub const FIOSETOWN: u32 = 35073;
-pub const SIOCSPGRP: u32 = 35074;
-pub const FIOGETOWN: u32 = 35075;
-pub const SIOCGPGRP: u32 = 35076;
-pub const SIOCATMARK: u32 = 35077;
-pub const SIOCGSTAMP: u32 = 35078;
-pub const TIOCINQ: u32 = 21531;
-pub const SIOCADDRT: u32 = 35083;
-pub const SIOCDELRT: u32 = 35084;
-pub const SIOCGIFNAME: u32 = 35088;
-pub const SIOCSIFLINK: u32 = 35089;
-pub const SIOCGIFCONF: u32 = 35090;
-pub const SIOCGIFFLAGS: u32 = 35091;
-pub const SIOCSIFFLAGS: u32 = 35092;
-pub const SIOCGIFADDR: u32 = 35093;
-pub const SIOCSIFADDR: u32 = 35094;
-pub const SIOCGIFDSTADDR: u32 = 35095;
-pub const SIOCSIFDSTADDR: u32 = 35096;
-pub const SIOCGIFBRDADDR: u32 = 35097;
-pub const SIOCSIFBRDADDR: u32 = 35098;
-pub const SIOCGIFNETMASK: u32 = 35099;
-pub const SIOCSIFNETMASK: u32 = 35100;
-pub const SIOCGIFMETRIC: u32 = 35101;
-pub const SIOCSIFMETRIC: u32 = 35102;
-pub const SIOCGIFMEM: u32 = 35103;
-pub const SIOCSIFMEM: u32 = 35104;
-pub const SIOCGIFMTU: u32 = 35105;
-pub const SIOCSIFMTU: u32 = 35106;
-pub const SIOCSIFHWADDR: u32 = 35108;
-pub const SIOCGIFENCAP: u32 = 35109;
-pub const SIOCSIFENCAP: u32 = 35110;
-pub const SIOCGIFHWADDR: u32 = 35111;
-pub const SIOCGIFSLAVE: u32 = 35113;
-pub const SIOCSIFSLAVE: u32 = 35120;
-pub const SIOCADDMULTI: u32 = 35121;
-pub const SIOCDELMULTI: u32 = 35122;
-pub const SIOCDARP: u32 = 35155;
-pub const SIOCGARP: u32 = 35156;
-pub const SIOCSARP: u32 = 35157;
-pub const SIOCDRARP: u32 = 35168;
-pub const SIOCGRARP: u32 = 35169;
-pub const SIOCSRARP: u32 = 35170;
-pub const SIOCGIFMAP: u32 = 35184;
-pub const SIOCSIFMAP: u32 = 35185;
-pub const SIOCRTMSG: u32 = 35085;
-pub const SIOCSIFNAME: u32 = 35107;
-pub const SIOCGIFINDEX: u32 = 35123;
-pub const SIOGIFINDEX: u32 = 35123;
-pub const SIOCSIFPFLAGS: u32 = 35124;
-pub const SIOCGIFPFLAGS: u32 = 35125;
-pub const SIOCDIFADDR: u32 = 35126;
-pub const SIOCSIFHWBROADCAST: u32 = 35127;
-pub const SIOCGIFCOUNT: u32 = 35128;
-pub const SIOCGIFBR: u32 = 35136;
-pub const SIOCSIFBR: u32 = 35137;
-pub const SIOCGIFTXQLEN: u32 = 35138;
-pub const SIOCSIFTXQLEN: u32 = 35139;
-pub const SIOCADDDLCI: u32 = 35200;
-pub const SIOCDELDLCI: u32 = 35201;
-pub const SIOCDEVPRIVATE: u32 = 35312;
-pub const SIOCPROTOPRIVATE: u32 = 35296;
-pub const FIBMAP: u32 = 1;
-pub const FIGETBSZ: u32 = 2;
-pub const FIFREEZE: u32 = 3221510263;
-pub const FITHAW: u32 = 3221510264;
-pub const FITRIM: u32 = 3222820985;
-pub const FICLONE: u32 = 1074041865;
-pub const FICLONERANGE: u32 = 1075876877;
-pub const FIDEDUPERANGE: u32 = 3222836278;
-pub const FS_IOC_GETFLAGS: u32 = 2148034049;
-pub const FS_IOC_SETFLAGS: u32 = 1074292226;
-pub const FS_IOC_GETVERSION: u32 = 2148038145;
-pub const FS_IOC_SETVERSION: u32 = 1074296322;
-pub const FS_IOC_FIEMAP: u32 = 3223348747;
-pub const FS_IOC32_GETFLAGS: u32 = 2147771905;
-pub const FS_IOC32_SETFLAGS: u32 = 1074030082;
-pub const FS_IOC32_GETVERSION: u32 = 2147776001;
-pub const FS_IOC32_SETVERSION: u32 = 1074034178;
-pub const FS_IOC_FSGETXATTR: u32 = 2149341215;
-pub const FS_IOC_FSSETXATTR: u32 = 1075599392;
-pub const FS_IOC_GETFSLABEL: u32 = 2164298801;
-pub const FS_IOC_SETFSLABEL: u32 = 1090556978;
-pub const VIDIOC_SUBDEV_QUERYSTD: u32 = 2148030015;
-pub const AUTOFS_DEV_IOCTL_CLOSEMOUNT: u32 = 3222836085;
-pub const LIRC_SET_SEND_CARRIER: u32 = 1074030867;
-pub const AUTOFS_IOC_PROTOSUBVER: u32 = 2147783527;
-pub const PTP_SYS_OFFSET_PRECISE: u32 = 3225435400;
-pub const FSI_SCOM_WRITE: u32 = 3223352066;
-pub const ATM_GETCIRANGE: u32 = 1074815370;
-pub const DMA_BUF_SET_NAME_B: u32 = 1074291201;
-pub const RIO_CM_EP_GET_LIST_SIZE: u32 = 3221512961;
-pub const TUNSETPERSIST: u32 = 1074025675;
-pub const FS_IOC_GET_ENCRYPTION_POLICY: u32 = 1074554389;
-pub const CEC_RECEIVE: u32 = 3224920326;
-pub const MGSL_IOCGPARAMS: u32 = 2150657281;
-pub const ENI_SETMULT: u32 = 1074815335;
-pub const RIO_GET_EVENT_MASK: u32 = 2147773710;
-pub const LIRC_GET_MAX_TIMEOUT: u32 = 2147772681;
-pub const KVM_SET_BOOT_CPU_ID: u32 = 44664;
-pub const KVM_SET_MP_STATE: u32 = 1074048665;
-pub const KVM_GET_MP_STATE: u32 = 2147790488;
-pub const KVM_SET_MEMORY_REGION: u32 = 1075359296;
-pub const KVM_GET_API_VERSION: u32 = 44544;
-pub const KVM_S390_GET_SKEYS: u32 = 1077980850;
-pub const KVM_SET_ONE_REG: u32 = 1074835116;
-pub const KVM_IRQ_LINE_STATUS: u32 = 3221794407;
-pub const KVM_SET_USER_MEMORY_REGION: u32 = 1075883590;
-pub const KVM_S390_INTERRUPT: u32 = 1074835092;
-pub const KVM_TPR_ACCESS_REPORTING: u32 = 3223891602;
-pub const KVM_GET_FPU: u32 = 2174791308;
-pub const KVM_ASSIGN_SET_MSIX_ENTRY: u32 = 1074835060;
-pub const KVM_MEMORY_ENCRYPT_REG_REGION: u32 = 2148576955;
-pub const KVM_S390_UCAS_MAP: u32 = 1075359312;
-pub const KVM_ASSIGN_SET_INTX_MASK: u32 = 1077980836;
-pub const KVM_MEMORY_ENCRYPT_OP: u32 = 3221794490;
-pub const KVM_CREATE_PIT2: u32 = 1077980791;
-pub const KVM_S390_VCPU_FAULT: u32 = 1074310738;
-pub const KVM_REGISTER_COALESCED_MMIO: u32 = 1074835047;
-pub const KVM_SET_VAPIC_ADDR: u32 = 1074310803;
-pub const KVM_CREATE_DEVICE: u32 = 3222056672;
-pub const KVM_GET_IRQCHIP: u32 = 3255348834;
-pub const KVM_TRANSLATE: u32 = 3222843013;
-pub const KVM_S390_SET_INITIAL_PSW: u32 = 1074835094;
-pub const KVM_X86_SETUP_MCE: u32 = 1074310812;
-pub const KVM_DEASSIGN_PCI_DEVICE: u32 = 1077980786;
-pub const KVM_XEN_HVM_SET_ATTR: u32 = 1078505161;
-pub const KVM_GET_CLOCK: u32 = 2150674044;
-pub const KVM_SET_FPU: u32 = 1101049485;
-pub const KVM_KVMCLOCK_CTRL: u32 = 44717;
-pub const KVM_PPC_GET_PVINFO: u32 = 1082175137;
-pub const KVM_X86_GET_MCE_CAP_SUPPORTED: u32 = 2148052637;
-pub const KVM_S390_GET_IRQ_STATE: u32 = 1075883702;
-pub const KVM_GET_DEVICE_ATTR: u32 = 1075359458;
-pub const KVM_S390_INITIAL_RESET: u32 = 44695;
-pub const KVM_SET_REGS: u32 = 1083223682;
-pub const KVM_GET_TSC_KHZ: u32 = 44707;
-pub const KVM_CHECK_EXTENSION: u32 = 44547;
-pub const KVM_PPC_RESIZE_HPT_COMMIT: u32 = 2148576942;
-pub const KVM_GET_DIRTY_LOG: u32 = 1074835010;
-pub const KVM_S390_SET_IRQ_STATE: u32 = 1075883701;
-pub const KVM_S390_NORMAL_RESET: u32 = 44739;
-pub const KVM_SET_SIGNAL_MASK: u32 = 1074048651;
-pub const KVM_XEN_VCPU_SET_ATTR: u32 = 1078505163;
-pub const KVM_SET_GSI_ROUTING: u32 = 1074310762;
-pub const KVM_CREATE_VCPU: u32 = 44609;
-pub const KVM_S390_UCAS_UNMAP: u32 = 1075359313;
-pub const KVM_S390_STORE_STATUS: u32 = 1074310805;
-pub const KVM_UNREGISTER_COALESCED_MMIO: u32 = 1074835048;
-pub const KVM_ASSIGN_DEV_IRQ: u32 = 1077980784;
-pub const KVM_S390_PV_COMMAND: u32 = 3223367365;
-pub const KVM_S390_ENABLE_SIE: u32 = 44550;
-pub const KVM_CLEAR_DIRTY_LOG: u32 = 3222843072;
-pub const KVM_GET_ONE_REG: u32 = 1074835115;
-pub const KVM_ARM_SET_DEVICE_ADDR: u32 = 1074835115;
-pub const KVM_DIRTY_TLB: u32 = 1074835114;
-pub const KVM_NMI: u32 = 44698;
-pub const KVM_HYPERV_EVENTFD: u32 = 1075359421;
-pub const KVM_S390_MEM_OP: u32 = 1077980849;
-pub const KVM_PPC_SVM_OFF: u32 = 44723;
-pub const KVM_PPC_RESIZE_HPT_PREPARE: u32 = 2148576941;
-pub const KVM_INTERRUPT: u32 = 1074048646;
-pub const KVM_XEN_HVM_GET_ATTR: u32 = 3225988808;
-pub const KVM_GET_SREGS: u32 = 2167975555;
-pub const KVM_SET_IDENTITY_MAP_ADDR: u32 = 1074310728;
-pub const KVM_GET_REGS: u32 = 2156965505;
-pub const KVM_S390_GET_CMMA_BITS: u32 = 3223367352;
-pub const KVM_CREATE_IRQCHIP: u32 = 44640;
-pub const KVM_ASSIGN_PCI_DEVICE: u32 = 2151722601;
-pub const KVM_SET_NR_MMU_PAGES: u32 = 44612;
-pub const KVM_IOEVENTFD: u32 = 1077980793;
-pub const KVM_RUN: u32 = 44672;
-pub const KVM_S390_SET_SKEYS: u32 = 1077980851;
-pub const KVM_SET_DEVICE_ATTR: u32 = 1075359457;
-pub const KVM_DEASSIGN_DEV_IRQ: u32 = 1077980789;
-pub const KVM_SMI: u32 = 44727;
-pub const KVM_SET_TSS_ADDR: u32 = 44615;
-pub const KVM_GET_NR_MMU_PAGES: u32 = 44613;
-pub const KVM_XEN_VCPU_GET_ATTR: u32 = 3225988810;
-pub const KVM_REINJECT_CONTROL: u32 = 44657;
-pub const KVM_HAS_DEVICE_ATTR: u32 = 1075359459;
-pub const KVM_IRQFD: u32 = 1075883638;
-pub const KVM_S390_SET_CMMA_BITS: u32 = 1075883705;
-pub const KVM_SET_IRQCHIP: u32 = 2181607011;
-pub const KVM_SIGNAL_MSI: u32 = 1075883685;
-pub const KVM_GET_VCPU_MMAP_SIZE: u32 = 44548;
-pub const KVM_CREATE_VM: u32 = 44545;
-pub const KVM_S390_CLEAR_RESET: u32 = 44740;
-pub const KVM_RESET_DIRTY_RINGS: u32 = 44743;
-pub const KVM_ASSIGN_SET_MSIX_NR: u32 = 1074310771;
-pub const KVM_CREATE_PIT: u32 = 44644;
-pub const KVM_SET_GUEST_DEBUG: u32 = 1078505115;
-pub const KVM_GET_REG_LIST: u32 = 3221794480;
-pub const KVM_ARM_VCPU_FINALIZE: u32 = 1074048706;
-pub const KVM_SET_CLOCK: u32 = 1076932219;
-pub const KVM_PPC_ALLOCATE_HTAB: u32 = 3221532327;
-pub const KVM_PPC_GET_SMMU_INFO: u32 = 2186325670;
-pub const KVM_SET_TSC_KHZ: u32 = 44706;
-pub const KVM_S390_IRQ: u32 = 1078505140;
-pub const KVM_ENABLE_CAP: u32 = 1080602275;
-pub const KVM_IRQ_LINE: u32 = 1074310753;
-pub const KVM_SET_SREGS: u32 = 1094233732;
-pub const KVM_MEMORY_ENCRYPT_UNREG_REGION: u32 = 2148576956;
-pub const KVM_GET_STATS_FD: u32 = 44750;
-pub const USBDEVFS_CLAIMINTERFACE: u32 = 2147767567;
-pub const CHIOMOVE: u32 = 1075077889;
-pub const SONYPI_IOCGBATFLAGS: u32 = 2147579399;
-pub const BTRFS_IOC_SYNC: u32 = 37896;
-pub const VIDIOC_TRY_FMT: u32 = 3234879040;
-pub const LIRC_SET_REC_MODE: u32 = 1074030866;
-pub const VIDIOC_DQEVENT: u32 = 2156418649;
-pub const RPMSG_DESTROY_EPT_IOCTL: u32 = 46338;
-pub const UVCIOC_CTRL_MAP: u32 = 3227546912;
-pub const VHOST_SET_BACKEND_FEATURES: u32 = 1074310949;
-pub const VHOST_VSOCK_SET_GUEST_CID: u32 = 1074311008;
-pub const UI_SET_KEYBIT: u32 = 1074025829;
-pub const LIRC_SET_REC_TIMEOUT: u32 = 1074030872;
-pub const FS_IOC_GET_ENCRYPTION_KEY_STATUS: u32 = 3229640218;
-pub const BTRFS_IOC_TREE_SEARCH_V2: u32 = 3228603409;
-pub const VHOST_SET_VRING_BASE: u32 = 1074310930;
-pub const RIO_ENABLE_DOORBELL_RANGE: u32 = 1074294025;
-pub const VIDIOC_TRY_EXT_CTRLS: u32 = 3223344713;
-pub const LIRC_GET_REC_MODE: u32 = 2147772674;
-pub const PPGETTIME: u32 = 2148561045;
-pub const BTRFS_IOC_RM_DEV: u32 = 1342215179;
-pub const ATM_SETBACKEND: u32 = 1073897970;
-pub const FSL_HV_IOCTL_PARTITION_START: u32 = 3222318851;
-pub const FBIO_WAITEVENT: u32 = 18056;
-pub const SWITCHTEC_IOCTL_PORT_TO_PFF: u32 = 3222034245;
-pub const NVME_IOCTL_IO_CMD: u32 = 3225964099;
-pub const IPMICTL_RECEIVE_MSG_TRUNC: u32 = 3224398091;
-pub const FDTWADDLE: u32 = 601;
-pub const NVME_IOCTL_SUBMIT_IO: u32 = 1076907586;
-pub const NILFS_IOCTL_SYNC: u32 = 2148036234;
-pub const VIDIOC_SUBDEV_S_DV_TIMINGS: u32 = 3229898327;
-pub const ASPEED_LPC_CTRL_IOCTL_GET_SIZE: u32 = 3222319616;
-pub const DM_DEV_STATUS: u32 = 3241737479;
-pub const TEE_IOC_CLOSE_SESSION: u32 = 2147787781;
-pub const NS_GETPSTAT: u32 = 3222298977;
-pub const UI_SET_PROPBIT: u32 = 1074025838;
-pub const TUNSETFILTEREBPF: u32 = 2147767521;
-pub const RIO_MPORT_MAINT_COMPTAG_SET: u32 = 1074031874;
-pub const AUTOFS_DEV_IOCTL_VERSION: u32 = 3222836081;
-pub const WDIOC_SETOPTIONS: u32 = 2147768068;
-pub const VHOST_SCSI_SET_ENDPOINT: u32 = 1088991040;
-pub const MGSL_IOCGTXIDLE: u32 = 27907;
-pub const ATM_ADDLECSADDR: u32 = 1074815374;
-pub const FSL_HV_IOCTL_GETPROP: u32 = 3223891719;
-pub const FDGETPRM: u32 = 2149581316;
-pub const HIDIOCAPPLICATION: u32 = 18434;
-pub const ENI_MEMDUMP: u32 = 1074815328;
-pub const PTP_SYS_OFFSET2: u32 = 1128283406;
-pub const VIDIOC_SUBDEV_G_DV_TIMINGS: u32 = 3229898328;
-pub const DMA_BUF_SET_NAME_A: u32 = 1074029057;
-pub const PTP_PIN_GETFUNC: u32 = 3227532550;
-pub const PTP_SYS_OFFSET_EXTENDED: u32 = 3300932873;
-pub const DFL_FPGA_PORT_UINT_SET_IRQ: u32 = 1074312776;
-pub const RTC_EPOCH_READ: u32 = 2148036621;
-pub const VIDIOC_SUBDEV_S_SELECTION: u32 = 3225441854;
-pub const VIDIOC_QUERY_EXT_CTRL: u32 = 3236451943;
-pub const ATM_GETLECSADDR: u32 = 1074815376;
-pub const FSL_HV_IOCTL_PARTITION_STOP: u32 = 3221794564;
-pub const SONET_GETDIAG: u32 = 2147770644;
-pub const ATMMPC_DATA: u32 = 25049;
-pub const IPMICTL_UNREGISTER_FOR_CMD_CHANS: u32 = 2148296989;
-pub const HIDIOCGCOLLECTIONINDEX: u32 = 1075333136;
-pub const RPMSG_CREATE_EPT_IOCTL: u32 = 1076409601;
-pub const GPIOHANDLE_GET_LINE_VALUES_IOCTL: u32 = 3225465864;
-pub const UI_DEV_SETUP: u32 = 1079792899;
-pub const ISST_IF_IO_CMD: u32 = 1074331138;
-pub const RIO_MPORT_MAINT_READ_REMOTE: u32 = 2149084423;
-pub const VIDIOC_OMAP3ISP_HIST_CFG: u32 = 3224393412;
-pub const BLKGETNRZONES: u32 = 2147750533;
-pub const VIDIOC_G_MODULATOR: u32 = 3225703990;
-pub const VBG_IOCTL_WRITE_CORE_DUMP: u32 = 3223082515;
-pub const USBDEVFS_SETINTERFACE: u32 = 2148029700;
-pub const PPPIOCGCHAN: u32 = 2147775543;
-pub const EVIOCGVERSION: u32 = 2147763457;
-pub const VHOST_NET_SET_BACKEND: u32 = 1074310960;
-pub const USBDEVFS_REAPURBNDELAY: u32 = 1074287885;
-pub const RNDZAPENTCNT: u32 = 20996;
-pub const VIDIOC_G_PARM: u32 = 3234616853;
-pub const TUNGETDEVNETNS: u32 = 21731;
-pub const LIRC_SET_MEASURE_CARRIER_MODE: u32 = 1074030877;
-pub const VHOST_SET_VRING_ERR: u32 = 1074310946;
-pub const VDUSE_VQ_SETUP: u32 = 1075872020;
-pub const AUTOFS_IOC_SETTIMEOUT: u32 = 3221787492;
-pub const VIDIOC_S_FREQUENCY: u32 = 1076647481;
-pub const F2FS_IOC_SEC_TRIM_FILE: u32 = 1075377428;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY: u32 = 3225445912;
-pub const WDIOC_GETPRETIMEOUT: u32 = 2147768073;
-pub const USBDEVFS_DROP_PRIVILEGES: u32 = 1074025758;
-pub const BTRFS_IOC_SNAP_CREATE_V2: u32 = 1342215191;
-pub const VHOST_VSOCK_SET_RUNNING: u32 = 1074048865;
-pub const STP_SET_OPTIONS: u32 = 1074275586;
-pub const FBIO_RADEON_GET_MIRROR: u32 = 2148024323;
-pub const IVTVFB_IOC_DMA_FRAME: u32 = 1075336896;
-pub const IPMICTL_SEND_COMMAND: u32 = 2150131981;
-pub const VIDIOC_G_ENC_INDEX: u32 = 2283296332;
-pub const DFL_FPGA_FME_PORT_PR: u32 = 46720;
-pub const CHIOSVOLTAG: u32 = 1076912914;
-pub const ATM_SETESIF: u32 = 1074815373;
-pub const FW_CDEV_IOC_SEND_RESPONSE: u32 = 1075323652;
-pub const PMU_IOC_GET_MODEL: u32 = 2148024835;
-pub const JSIOCGBTNMAP: u32 = 2214619700;
-pub const USBDEVFS_HUB_PORTINFO: u32 = 2155894035;
-pub const VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS: u32 = 3222820363;
-pub const FDCLRPRM: u32 = 577;
-pub const BTRFS_IOC_SCRUB: u32 = 3288372251;
-pub const USBDEVFS_DISCONNECT: u32 = 21782;
-pub const TUNSETVNETBE: u32 = 1074025694;
-pub const ATMTCP_REMOVE: u32 = 24975;
-pub const VHOST_VDPA_GET_CONFIG: u32 = 2148052851;
-pub const PPPIOCGNPMODE: u32 = 3221779532;
-pub const FDGETDRVPRM: u32 = 2155872785;
-pub const TUNSETVNETLE: u32 = 1074025692;
-pub const PHN_SETREG: u32 = 1074294790;
-pub const PPPIOCDETACH: u32 = 1074033724;
-pub const MMTIMER_GETRES: u32 = 2148035841;
-pub const VIDIOC_SUBDEV_ENUMSTD: u32 = 3225966105;
-pub const PPGETFLAGS: u32 = 2147774618;
-pub const VDUSE_DEV_GET_FEATURES: u32 = 2148040977;
-pub const CAPI_MANUFACTURER_CMD: u32 = 3222291232;
-pub const VIDIOC_G_TUNER: u32 = 3226752541;
-pub const DM_TABLE_STATUS: u32 = 3241737484;
-pub const DM_DEV_ARM_POLL: u32 = 3241737488;
-pub const NE_CREATE_VM: u32 = 2148052512;
-pub const MEDIA_IOC_ENUM_LINKS: u32 = 3223878658;
-pub const F2FS_IOC_PRECACHE_EXTENTS: u32 = 62735;
-pub const DFL_FPGA_PORT_DMA_MAP: u32 = 46659;
-pub const MGSL_IOCGXCTRL: u32 = 27926;
-pub const FW_CDEV_IOC_SEND_REQUEST: u32 = 1076372225;
-pub const SONYPI_IOCGBLUE: u32 = 2147579400;
-pub const F2FS_IOC_DECOMPRESS_FILE: u32 = 62743;
-pub const I2OHTML: u32 = 3224398089;
-pub const VFIO_GET_API_VERSION: u32 = 15204;
-pub const IDT77105_GETSTATZ: u32 = 1074815283;
-pub const I2OPARMSET: u32 = 3223873795;
-pub const TEE_IOC_CANCEL: u32 = 2148049924;
-pub const PTP_SYS_OFFSET_PRECISE2: u32 = 3225435409;
-pub const DFL_FPGA_PORT_RESET: u32 = 46656;
-pub const PPPIOCGASYNCMAP: u32 = 2147775576;
-pub const EVIOCGKEYCODE_V2: u32 = 2150122756;
-pub const DM_DEV_SET_GEOMETRY: u32 = 3241737487;
-pub const HIDIOCSUSAGE: u32 = 1075333132;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE: u32 = 1075323664;
-pub const PTP_EXTTS_REQUEST: u32 = 1074806018;
-pub const SWITCHTEC_IOCTL_EVENT_CTL: u32 = 3223869251;
-pub const WDIOC_SETPRETIMEOUT: u32 = 3221509896;
-pub const VHOST_SCSI_CLEAR_ENDPOINT: u32 = 1088991041;
-pub const JSIOCGAXES: u32 = 2147576337;
-pub const HIDIOCSFLAG: u32 = 1074022415;
-pub const PTP_PEROUT_REQUEST2: u32 = 1077427468;
-pub const PPWDATA: u32 = 1073836166;
-pub const PTP_CLOCK_GETCAPS: u32 = 2152742145;
-pub const FDGETMAXERRS: u32 = 2148794894;
-pub const TUNSETQUEUE: u32 = 1074025689;
-pub const PTP_ENABLE_PPS: u32 = 1074019588;
-pub const SIOCSIFATMTCP: u32 = 24960;
-pub const CEC_ADAP_G_LOG_ADDRS: u32 = 2153537795;
-pub const ND_IOCTL_ARS_CAP: u32 = 3223342593;
-pub const NBD_SET_BLKSIZE: u32 = 43777;
-pub const NBD_SET_TIMEOUT: u32 = 43785;
-pub const VHOST_SCSI_GET_ABI_VERSION: u32 = 1074048834;
-pub const RIO_UNMAP_INBOUND: u32 = 1074294034;
-pub const ATM_QUERYLOOP: u32 = 1074815316;
-pub const DFL_FPGA_GET_API_VERSION: u32 = 46592;
-pub const USBDEVFS_WAIT_FOR_RESUME: u32 = 21795;
-pub const FBIO_CURSOR: u32 = 3228059144;
-pub const RNDCLEARPOOL: u32 = 20998;
-pub const VIDIOC_QUERYSTD: u32 = 2148030015;
-pub const DMA_BUF_IOCTL_SYNC: u32 = 1074291200;
-pub const SCIF_RECV: u32 = 3222827783;
-pub const PTP_PIN_GETFUNC2: u32 = 3227532559;
-pub const FW_CDEV_IOC_ALLOCATE: u32 = 3223331586;
-pub const CEC_ADAP_G_CAPS: u32 = 3226231040;
-pub const VIDIOC_G_FBUF: u32 = 2150651402;
-pub const PTP_ENABLE_PPS2: u32 = 1074019597;
-pub const PCITEST_CLEAR_IRQ: u32 = 20496;
-pub const IPMICTL_SET_GETS_EVENTS_CMD: u32 = 2147772688;
-pub const BTRFS_IOC_DEVICES_READY: u32 = 2415957031;
-pub const JSIOCGAXMAP: u32 = 2151705138;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER: u32 = 2148541196;
-pub const FW_CDEV_IOC_SET_ISO_CHANNELS: u32 = 1074799383;
-pub const RTC_WIE_OFF: u32 = 28688;
-pub const PPGETMODE: u32 = 2147774616;
-pub const VIDIOC_DBG_G_REGISTER: u32 = 3224917584;
-pub const PTP_SYS_OFFSET: u32 = 1128283397;
-pub const BTRFS_IOC_SPACE_INFO: u32 = 3222311956;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_SIZE: u32 = 3225441866;
-pub const ND_IOCTL_VENDOR: u32 = 3221769737;
-pub const SCIF_VREADFROM: u32 = 3223876364;
-pub const BTRFS_IOC_TRANS_START: u32 = 37894;
-pub const INOTIFY_IOC_SETNEXTWD: u32 = 1074022656;
-pub const SNAPSHOT_GET_IMAGE_SIZE: u32 = 2148021006;
-pub const TUNDETACHFILTER: u32 = 1074812118;
-pub const ND_IOCTL_CLEAR_ERROR: u32 = 3223342596;
-pub const IOC_PR_CLEAR: u32 = 1074819277;
-pub const SCIF_READFROM: u32 = 3223876362;
-pub const PPPIOCGDEBUG: u32 = 2147775553;
-pub const BLKGETZONESZ: u32 = 2147750532;
-pub const HIDIOCGUSAGES: u32 = 3491514387;
-pub const SONYPI_IOCGTEMP: u32 = 2147579404;
-pub const UI_SET_MSCBIT: u32 = 1074025832;
-pub const APM_IOC_SUSPEND: u32 = 16642;
-pub const BTRFS_IOC_TREE_SEARCH: u32 = 3489698833;
-pub const RTC_PLL_GET: u32 = 2149609489;
-pub const RIO_CM_EP_GET_LIST: u32 = 3221512962;
-pub const USBDEVFS_DISCSIGNAL: u32 = 2148553998;
-pub const LIRC_GET_MIN_TIMEOUT: u32 = 2147772680;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY: u32 = 2174244674;
-pub const DM_TARGET_MSG: u32 = 3241737486;
-pub const SONYPI_IOCGBAT1REM: u32 = 2147644931;
-pub const EVIOCSFF: u32 = 1076905344;
-pub const TUNSETGROUP: u32 = 1074025678;
-pub const EVIOCGKEYCODE: u32 = 2148025604;
-pub const KCOV_REMOTE_ENABLE: u32 = 1075340134;
-pub const ND_IOCTL_GET_CONFIG_SIZE: u32 = 3222031876;
-pub const FDEJECT: u32 = 602;
-pub const TUNSETOFFLOAD: u32 = 1074025680;
-pub const PPPIOCCONNECT: u32 = 1074033722;
-pub const ATM_ADDADDR: u32 = 1074815368;
-pub const VDUSE_DEV_INJECT_CONFIG_IRQ: u32 = 33043;
-pub const AUTOFS_DEV_IOCTL_ASKUMOUNT: u32 = 3222836093;
-pub const VHOST_VDPA_GET_STATUS: u32 = 2147594097;
-pub const CCISS_PASSTHRU: u32 = 3227009547;
-pub const MGSL_IOCCLRMODCOUNT: u32 = 27919;
-pub const TEE_IOC_SUPPL_SEND: u32 = 2148574215;
-pub const ATMARPD_CTRL: u32 = 25057;
-pub const UI_ABS_SETUP: u32 = 1075598596;
-pub const UI_DEV_DESTROY: u32 = 21762;
-pub const BTRFS_IOC_QUOTA_CTL: u32 = 3222311976;
-pub const RTC_AIE_ON: u32 = 28673;
-pub const AUTOFS_IOC_EXPIRE: u32 = 2165085029;
-pub const PPPIOCSDEBUG: u32 = 1074033728;
-pub const GPIO_V2_LINE_SET_VALUES_IOCTL: u32 = 3222320143;
-pub const PPPIOCSMRU: u32 = 1074033746;
-pub const CCISS_DEREGDISK: u32 = 16908;
-pub const UI_DEV_CREATE: u32 = 21761;
-pub const FUSE_DEV_IOC_CLONE: u32 = 2147804416;
-pub const BTRFS_IOC_START_SYNC: u32 = 2148045848;
-pub const NILFS_IOCTL_DELETE_CHECKPOINT: u32 = 1074294401;
-pub const SNAPSHOT_AVAIL_SWAP_SIZE: u32 = 2148021011;
-pub const DM_TABLE_CLEAR: u32 = 3241737482;
-pub const CCISS_GETINTINFO: u32 = 2148024834;
-pub const PPPIOCSASYNCMAP: u32 = 1074033751;
-pub const I2OEVTGET: u32 = 2154326283;
-pub const NVME_IOCTL_RESET: u32 = 20036;
-pub const PPYIELD: u32 = 28813;
-pub const NVME_IOCTL_IO64_CMD: u32 = 3226488392;
-pub const TUNSETCARRIER: u32 = 1074025698;
-pub const DM_DEV_WAIT: u32 = 3241737480;
-pub const RTC_WIE_ON: u32 = 28687;
-pub const MEDIA_IOC_DEVICE_INFO: u32 = 3238034432;
-pub const RIO_CM_CHAN_CREATE: u32 = 3221381891;
-pub const MGSL_IOCSPARAMS: u32 = 1076915456;
-pub const RTC_SET_TIME: u32 = 1076129802;
-pub const VHOST_RESET_OWNER: u32 = 44802;
-pub const IOC_OPAL_PSID_REVERT_TPR: u32 = 1091072232;
-pub const AUTOFS_DEV_IOCTL_OPENMOUNT: u32 = 3222836084;
-pub const UDF_GETEABLOCK: u32 = 2148035649;
-pub const VFIO_IOMMU_MAP_DMA: u32 = 15217;
-pub const VIDIOC_SUBSCRIBE_EVENT: u32 = 1075861082;
-pub const HIDIOCGFLAG: u32 = 2147764238;
-pub const HIDIOCGUCODE: u32 = 3222816781;
-pub const VIDIOC_OMAP3ISP_AF_CFG: u32 = 3226228421;
-pub const DM_REMOVE_ALL: u32 = 3241737473;
-pub const ASPEED_LPC_CTRL_IOCTL_MAP: u32 = 1074835969;
-pub const CCISS_GETFIRMVER: u32 = 2147762696;
-pub const ND_IOCTL_ARS_START: u32 = 3223342594;
-pub const PPPIOCSMRRU: u32 = 1074033723;
-pub const CEC_ADAP_S_LOG_ADDRS: u32 = 3227279620;
-pub const RPROC_GET_SHUTDOWN_ON_RELEASE: u32 = 2147792642;
-pub const DMA_HEAP_IOCTL_ALLOC: u32 = 3222816768;
-pub const PPSETTIME: u32 = 1074819222;
-pub const RTC_ALM_READ: u32 = 2149871624;
-pub const VDUSE_SET_API_VERSION: u32 = 1074299137;
-pub const RIO_MPORT_MAINT_WRITE_REMOTE: u32 = 1075342600;
-pub const VIDIOC_SUBDEV_S_CROP: u32 = 3224917564;
-pub const USBDEVFS_CONNECT: u32 = 21783;
-pub const SYNC_IOC_FILE_INFO: u32 = 3224911364;
-pub const ATMARP_MKIP: u32 = 25058;
-pub const VFIO_IOMMU_SPAPR_TCE_GET_INFO: u32 = 15216;
-pub const CCISS_GETHEARTBEAT: u32 = 2147762694;
-pub const ATM_RSTADDR: u32 = 1074815367;
-pub const NBD_SET_SIZE: u32 = 43778;
-pub const UDF_GETVOLIDENT: u32 = 2148035650;
-pub const GPIO_V2_LINE_GET_VALUES_IOCTL: u32 = 3222320142;
-pub const MGSL_IOCSTXIDLE: u32 = 27906;
-pub const FSL_HV_IOCTL_SETPROP: u32 = 3223891720;
-pub const BTRFS_IOC_GET_DEV_STATS: u32 = 3288896564;
-pub const PPRSTATUS: u32 = 2147577985;
-pub const MGSL_IOCTXENABLE: u32 = 27908;
-pub const UDF_GETEASIZE: u32 = 2147773504;
-pub const NVME_IOCTL_ADMIN64_CMD: u32 = 3226488391;
-pub const VHOST_SET_OWNER: u32 = 44801;
-pub const RIO_ALLOC_DMA: u32 = 3222826259;
-pub const RIO_CM_CHAN_ACCEPT: u32 = 3221775111;
-pub const I2OHRTGET: u32 = 3222825217;
-pub const ATM_SETCIRANGE: u32 = 1074815371;
-pub const HPET_IE_ON: u32 = 26625;
-pub const PERF_EVENT_IOC_ID: u32 = 2148017159;
-pub const TUNSETSNDBUF: u32 = 1074025684;
-pub const PTP_PIN_SETFUNC: u32 = 1080048903;
-pub const PPPIOCDISCONN: u32 = 29753;
-pub const VIDIOC_QUERYCTRL: u32 = 3225703972;
-pub const PPEXCL: u32 = 28815;
-pub const PCITEST_MSI: u32 = 1074024451;
-pub const FDWERRORCLR: u32 = 598;
-pub const AUTOFS_IOC_FAIL: u32 = 37729;
-pub const USBDEVFS_IOCTL: u32 = 3222295826;
-pub const VIDIOC_S_STD: u32 = 1074288152;
-pub const F2FS_IOC_RESIZE_FS: u32 = 1074328848;
-pub const SONET_SETDIAG: u32 = 3221512466;
-pub const BTRFS_IOC_DEFRAG: u32 = 1342215170;
-pub const CCISS_GETDRIVVER: u32 = 2147762697;
-pub const IPMICTL_GET_TIMING_PARMS_CMD: u32 = 2148034839;
-pub const HPET_IRQFREQ: u32 = 1074292742;
-pub const ATM_GETESI: u32 = 1074815365;
-pub const CCISS_GETLUNINFO: u32 = 2148286993;
-pub const AUTOFS_DEV_IOCTL_ISMOUNTPOINT: u32 = 3222836094;
-pub const TEE_IOC_SHM_ALLOC: u32 = 3222316033;
-pub const PERF_EVENT_IOC_SET_BPF: u32 = 1074013192;
-pub const UDMABUF_CREATE_LIST: u32 = 1074296131;
-pub const VHOST_SET_LOG_BASE: u32 = 1074310916;
-pub const ZATM_GETPOOL: u32 = 1074815329;
-pub const BR2684_SETFILT: u32 = 1075601808;
-pub const RNDGETPOOL: u32 = 2148028930;
-pub const PPS_GETPARAMS: u32 = 2148036769;
-pub const IOC_PR_RESERVE: u32 = 1074819273;
-pub const VIDIOC_TRY_DECODER_CMD: u32 = 3225966177;
-pub const RIO_CM_CHAN_CLOSE: u32 = 1073898244;
-pub const VIDIOC_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const IOCTL_MEI_CONNECT_CLIENT_VTAG: u32 = 3222554628;
-pub const PMU_IOC_GET_BACKLIGHT: u32 = 2148024833;
-pub const USBDEVFS_GET_CAPABILITIES: u32 = 2147767578;
-pub const SCIF_WRITETO: u32 = 3223876363;
-pub const UDF_RELOCATE_BLOCKS: u32 = 3221777475;
-pub const FSL_HV_IOCTL_PARTITION_RESTART: u32 = 3221794561;
-pub const CCISS_REGNEWD: u32 = 16910;
-pub const FAT_IOCTL_SET_ATTRIBUTES: u32 = 1074033169;
-pub const VIDIOC_CREATE_BUFS: u32 = 3238024796;
-pub const CAPI_GET_VERSION: u32 = 3222291207;
-pub const SWITCHTEC_IOCTL_EVENT_SUMMARY: u32 = 2228770626;
-pub const VFIO_EEH_PE_OP: u32 = 15225;
-pub const FW_CDEV_IOC_CREATE_ISO_CONTEXT: u32 = 3223331592;
-pub const F2FS_IOC_RELEASE_COMPRESS_BLOCKS: u32 = 2148070674;
-pub const NBD_SET_SIZE_BLOCKS: u32 = 43783;
-pub const IPMI_BMC_IOCTL_SET_SMS_ATN: u32 = 45312;
-pub const ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG: u32 = 3222319873;
-pub const VIDIOC_S_AUDOUT: u32 = 1077171762;
-pub const VIDIOC_S_FMT: u32 = 3234878981;
-pub const PPPIOCATTACH: u32 = 1074033725;
-pub const VHOST_GET_VRING_BUSYLOOP_TIMEOUT: u32 = 1074310948;
-pub const FS_IOC_MEASURE_VERITY: u32 = 3221513862;
-pub const CCISS_BIG_PASSTHRU: u32 = 3227533842;
-pub const IPMICTL_SET_MY_LUN_CMD: u32 = 2147772691;
-pub const PCITEST_LEGACY_IRQ: u32 = 20482;
-pub const USBDEVFS_SUBMITURB: u32 = 2151175434;
-pub const AUTOFS_IOC_READY: u32 = 37728;
-pub const BTRFS_IOC_SEND: u32 = 1078498342;
-pub const VIDIOC_G_EXT_CTRLS: u32 = 3223344711;
-pub const JSIOCSBTNMAP: u32 = 1140877875;
-pub const PPPIOCSFLAGS: u32 = 1074033753;
-pub const NVRAM_INIT: u32 = 28736;
-pub const RFKILL_IOCTL_NOINPUT: u32 = 20993;
-pub const BTRFS_IOC_BALANCE: u32 = 1342215180;
-pub const FS_IOC_GETFSMAP: u32 = 3233830971;
-pub const IPMICTL_GET_MY_CHANNEL_LUN_CMD: u32 = 2147772699;
-pub const STP_POLICY_ID_GET: u32 = 2148541697;
-pub const PPSETFLAGS: u32 = 1074032795;
-pub const CEC_ADAP_S_PHYS_ADDR: u32 = 1073897730;
-pub const ATMTCP_CREATE: u32 = 24974;
-pub const IPMI_BMC_IOCTL_FORCE_ABORT: u32 = 45314;
-pub const PPPIOCGXASYNCMAP: u32 = 2149610576;
-pub const VHOST_SET_VRING_CALL: u32 = 1074310945;
-pub const LIRC_GET_FEATURES: u32 = 2147772672;
-pub const GSMIOC_DISABLE_NET: u32 = 18179;
-pub const AUTOFS_IOC_CATATONIC: u32 = 37730;
-pub const NBD_DO_IT: u32 = 43779;
-pub const LIRC_SET_REC_CARRIER_RANGE: u32 = 1074030879;
-pub const IPMICTL_GET_MY_CHANNEL_ADDRESS_CMD: u32 = 2147772697;
-pub const EVIOCSCLOCKID: u32 = 1074021792;
-pub const USBDEVFS_FREE_STREAMS: u32 = 2148029725;
-pub const FSI_SCOM_RESET: u32 = 1074033411;
-pub const PMU_IOC_GRAB_BACKLIGHT: u32 = 2148024838;
-pub const VIDIOC_SUBDEV_S_FMT: u32 = 3227014661;
-pub const FDDEFPRM: u32 = 1075839555;
-pub const TEE_IOC_INVOKE: u32 = 2148574211;
-pub const USBDEVFS_BULK: u32 = 3222820098;
-pub const SCIF_VWRITETO: u32 = 3223876365;
-pub const SONYPI_IOCSBRT: u32 = 1073837568;
-pub const BTRFS_IOC_FILE_EXTENT_SAME: u32 = 3222836278;
-pub const RTC_PIE_ON: u32 = 28677;
-pub const BTRFS_IOC_SCAN_DEV: u32 = 1342215172;
-pub const PPPIOCXFERUNIT: u32 = 29774;
-pub const WDIOC_GETTIMEOUT: u32 = 2147768071;
-pub const BTRFS_IOC_SET_RECEIVED_SUBVOL: u32 = 3234370597;
-pub const DFL_FPGA_PORT_ERR_SET_IRQ: u32 = 1074312774;
-pub const FBIO_WAITFORVSYNC: u32 = 1074021920;
-pub const RTC_PIE_OFF: u32 = 28678;
-pub const EVIOCGRAB: u32 = 1074021776;
-pub const PMU_IOC_SET_BACKLIGHT: u32 = 1074283010;
-pub const EVIOCGREP: u32 = 2148025603;
-pub const PERF_EVENT_IOC_MODIFY_ATTRIBUTES: u32 = 1074275339;
-pub const UFFDIO_CONTINUE: u32 = 3223366151;
-pub const VDUSE_GET_API_VERSION: u32 = 2148040960;
-pub const RTC_RD_TIME: u32 = 2149871625;
-pub const FDMSGOFF: u32 = 582;
-pub const IPMICTL_REGISTER_FOR_CMD_CHANS: u32 = 2148296988;
-pub const CAPI_GET_ERRCODE: u32 = 2147631905;
-pub const PCITEST_SET_IRQTYPE: u32 = 1074024456;
-pub const VIDIOC_SUBDEV_S_EDID: u32 = 3223868969;
-pub const MATROXFB_SET_OUTPUT_MODE: u32 = 1074294522;
-pub const RIO_DEV_ADD: u32 = 1075866903;
-pub const VIDIOC_ENUM_FREQ_BANDS: u32 = 3225441893;
-pub const FBIO_RADEON_SET_MIRROR: u32 = 1074282500;
-pub const PCITEST_GET_IRQTYPE: u32 = 20489;
-pub const JSIOCGVERSION: u32 = 2147772929;
-pub const SONYPI_IOCSBLUE: u32 = 1073837577;
-pub const SNAPSHOT_PREF_IMAGE_SIZE: u32 = 13074;
-pub const F2FS_IOC_GET_FEATURES: u32 = 2147808524;
-pub const SCIF_REG: u32 = 3223876360;
-pub const NILFS_IOCTL_CLEAN_SEGMENTS: u32 = 1081634440;
-pub const FW_CDEV_IOC_INITIATE_BUS_RESET: u32 = 1074012933;
-pub const RIO_WAIT_FOR_ASYNC: u32 = 1074294038;
-pub const VHOST_SET_VRING_NUM: u32 = 1074310928;
-pub const AUTOFS_DEV_IOCTL_PROTOVER: u32 = 3222836082;
-pub const RIO_FREE_DMA: u32 = 1074294036;
-pub const MGSL_IOCRXENABLE: u32 = 27909;
-pub const IOCTL_VM_SOCKETS_GET_LOCAL_CID: u32 = 1977;
-pub const IPMICTL_SET_TIMING_PARMS_CMD: u32 = 2148034838;
-pub const PPPIOCGL2TPSTATS: u32 = 2152231990;
-pub const PERF_EVENT_IOC_PERIOD: u32 = 1074275332;
-pub const PTP_PIN_SETFUNC2: u32 = 1080048912;
-pub const CHIOEXCHANGE: u32 = 1075602178;
-pub const NILFS_IOCTL_GET_SUINFO: u32 = 2149084804;
-pub const CEC_DQEVENT: u32 = 3226493191;
-pub const UI_SET_SWBIT: u32 = 1074025837;
-pub const VHOST_VDPA_SET_CONFIG: u32 = 1074311028;
-pub const TUNSETIFF: u32 = 1074025674;
-pub const CHIOPOSITION: u32 = 1074553603;
-pub const IPMICTL_SET_MAINTENANCE_MODE_CMD: u32 = 1074030879;
-pub const BTRFS_IOC_DEFAULT_SUBVOL: u32 = 1074304019;
-pub const RIO_UNMAP_OUTBOUND: u32 = 1076391184;
-pub const CAPI_CLR_FLAGS: u32 = 2147762981;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE: u32 = 1075323663;
-pub const MATROXFB_GET_OUTPUT_CONNECTION: u32 = 2148036344;
-pub const EVIOCSMASK: u32 = 1074808211;
-pub const BTRFS_IOC_FORGET_DEV: u32 = 1342215173;
-pub const CXL_MEM_QUERY_COMMANDS: u32 = 2148060673;
-pub const CEC_S_MODE: u32 = 1074028809;
-pub const MGSL_IOCSIF: u32 = 27914;
-pub const SWITCHTEC_IOCTL_PFF_TO_PORT: u32 = 3222034244;
-pub const PPSETMODE: u32 = 1074032768;
-pub const VFIO_DEVICE_SET_IRQS: u32 = 15214;
-pub const VIDIOC_PREPARE_BUF: u32 = 3227014749;
-pub const CEC_ADAP_G_CONNECTOR_INFO: u32 = 2151964938;
-pub const IOC_OPAL_WRITE_SHADOW_MBR: u32 = 1092645098;
-pub const VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL: u32 = 3225441867;
-pub const UDMABUF_CREATE: u32 = 1075344706;
-pub const SONET_CLRDIAG: u32 = 3221512467;
-pub const PHN_SET_REG: u32 = 1074294785;
-pub const RNDADDTOENTCNT: u32 = 1074024961;
-pub const VBG_IOCTL_CHECK_BALLOON: u32 = 3223344657;
-pub const VIDIOC_OMAP3ISP_STAT_REQ: u32 = 3223869126;
-pub const PPS_FETCH: u32 = 3221778596;
-pub const RTC_AIE_OFF: u32 = 28674;
-pub const VFIO_GROUP_SET_CONTAINER: u32 = 15208;
-pub const FW_CDEV_IOC_RECEIVE_PHY_PACKETS: u32 = 1074275094;
-pub const VFIO_IOMMU_SPAPR_TCE_REMOVE: u32 = 15224;
-pub const VFIO_IOMMU_GET_INFO: u32 = 15216;
-pub const DM_DEV_SUSPEND: u32 = 3241737478;
-pub const F2FS_IOC_GET_COMPRESS_OPTION: u32 = 2147677461;
-pub const FW_CDEV_IOC_STOP_ISO: u32 = 1074012939;
-pub const GPIO_V2_GET_LINEINFO_IOCTL: u32 = 3238048773;
-pub const ATMMPC_CTRL: u32 = 25048;
-pub const PPPIOCSXASYNCMAP: u32 = 1075868751;
-pub const CHIOGSTATUS: u32 = 1074815752;
-pub const FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE: u32 = 3222807309;
-pub const RIO_MPORT_MAINT_PORT_IDX_GET: u32 = 2147773699;
-pub const CAPI_SET_FLAGS: u32 = 2147762980;
-pub const VFIO_GROUP_GET_DEVICE_FD: u32 = 15210;
-pub const VHOST_SET_MEM_TABLE: u32 = 1074310915;
-pub const MATROXFB_SET_OUTPUT_CONNECTION: u32 = 1074294520;
-pub const DFL_FPGA_PORT_GET_REGION_INFO: u32 = 46658;
-pub const VHOST_GET_FEATURES: u32 = 2148052736;
-pub const LIRC_GET_REC_RESOLUTION: u32 = 2147772679;
-pub const PACKET_CTRL_CMD: u32 = 3222820865;
-pub const LIRC_SET_TRANSMITTER_MASK: u32 = 1074030871;
-pub const BTRFS_IOC_ADD_DEV: u32 = 1342215178;
-pub const JSIOCGCORR: u32 = 2149870114;
-pub const VIDIOC_G_FMT: u32 = 3234878980;
-pub const RTC_EPOCH_SET: u32 = 1074294798;
-pub const CAPI_GET_PROFILE: u32 = 3225436937;
-pub const ATM_GETLOOP: u32 = 1074815314;
-pub const SCIF_LISTEN: u32 = 1074033410;
-pub const NBD_CLEAR_QUE: u32 = 43781;
-pub const F2FS_IOC_MOVE_RANGE: u32 = 3223385353;
-pub const LIRC_GET_LENGTH: u32 = 2147772687;
-pub const I8K_SET_FAN: u32 = 3221776775;
-pub const FDSETMAXERRS: u32 = 1075053132;
-pub const VIDIOC_SUBDEV_QUERYCAP: u32 = 2151699968;
-pub const SNAPSHOT_SET_SWAP_AREA: u32 = 1074541325;
-pub const LIRC_GET_REC_TIMEOUT: u32 = 2147772708;
-pub const EVIOCRMFF: u32 = 1074021761;
-pub const GPIO_GET_LINEEVENT_IOCTL: u32 = 3224417284;
-pub const PPRDATA: u32 = 2147577989;
-pub const RIO_MPORT_GET_PROPERTIES: u32 = 2150657284;
-pub const TUNSETVNETHDRSZ: u32 = 1074025688;
-pub const GPIO_GET_LINEINFO_IOCTL: u32 = 3225990146;
-pub const GSMIOC_GETCONF: u32 = 2152482560;
-pub const LIRC_GET_SEND_MODE: u32 = 2147772673;
-pub const PPPIOCSACTIVE: u32 = 1074820166;
-pub const SIOCGSTAMPNS_NEW: u32 = 2148567303;
-pub const IPMICTL_RECEIVE_MSG: u32 = 3224398092;
-pub const LIRC_SET_SEND_DUTY_CYCLE: u32 = 1074030869;
-pub const UI_END_FF_ERASE: u32 = 1074550219;
-pub const SWITCHTEC_IOCTL_FLASH_PART_INFO: u32 = 3222296385;
-pub const FW_CDEV_IOC_SEND_PHY_PACKET: u32 = 3222807317;
-pub const NBD_SET_FLAGS: u32 = 43786;
-pub const VFIO_DEVICE_GET_REGION_INFO: u32 = 15212;
-pub const REISERFS_IOC_UNPACK: u32 = 1074318593;
-pub const FW_CDEV_IOC_REMOVE_DESCRIPTOR: u32 = 1074012935;
-pub const RIO_SET_EVENT_MASK: u32 = 1074031885;
-pub const SNAPSHOT_ALLOC_SWAP_PAGE: u32 = 2148021012;
-pub const VDUSE_VQ_INJECT_IRQ: u32 = 1074037015;
-pub const I2OPASSTHRU: u32 = 2148559116;
-pub const IOC_OPAL_SET_PW: u32 = 1109422304;
-pub const FSI_SCOM_READ: u32 = 3223352065;
-pub const VHOST_VDPA_GET_DEVICE_ID: u32 = 2147790704;
-pub const VIDIOC_QBUF: u32 = 3227014671;
-pub const VIDIOC_S_TUNER: u32 = 1079268894;
-pub const TUNGETVNETHDRSZ: u32 = 2147767511;
-pub const CAPI_NCCI_GETUNIT: u32 = 2147762983;
-pub const DFL_FPGA_PORT_UINT_GET_IRQ_NUM: u32 = 2147792455;
-pub const VIDIOC_OMAP3ISP_STAT_EN: u32 = 3221771975;
-pub const GPIO_V2_LINE_SET_CONFIG_IOCTL: u32 = 3239097357;
-pub const TEE_IOC_VERSION: u32 = 2148312064;
-pub const VIDIOC_LOG_STATUS: u32 = 22086;
-pub const IPMICTL_SEND_COMMAND_SETTIME: u32 = 2150656277;
-pub const VHOST_SET_LOG_FD: u32 = 1074048775;
-pub const SCIF_SEND: u32 = 3222827782;
-pub const VIDIOC_SUBDEV_G_FMT: u32 = 3227014660;
-pub const NS_ADJBUFLEV: u32 = 24931;
-pub const VIDIOC_DBG_S_REGISTER: u32 = 1077433935;
-pub const NILFS_IOCTL_RESIZE: u32 = 1074294411;
-pub const PHN_GETREG: u32 = 3221778437;
-pub const I2OSWDL: u32 = 3224398085;
-pub const VBG_IOCTL_VMMDEV_REQUEST_BIG: u32 = 22019;
-pub const JSIOCGBUTTONS: u32 = 2147576338;
-pub const VFIO_IOMMU_ENABLE: u32 = 15219;
-pub const DM_DEV_RENAME: u32 = 3241737477;
-pub const MEDIA_IOC_SETUP_LINK: u32 = 3224665091;
-pub const VIDIOC_ENUMOUTPUT: u32 = 3225966128;
-pub const STP_POLICY_ID_SET: u32 = 3222283520;
-pub const VHOST_VDPA_SET_CONFIG_CALL: u32 = 1074048887;
-pub const VIDIOC_SUBDEV_G_CROP: u32 = 3224917563;
-pub const VIDIOC_S_CROP: u32 = 1075074620;
-pub const WDIOC_GETTEMP: u32 = 2147768067;
-pub const IOC_OPAL_ADD_USR_TO_LR: u32 = 1092120804;
-pub const UI_SET_LEDBIT: u32 = 1074025833;
-pub const NBD_SET_SOCK: u32 = 43776;
-pub const BTRFS_IOC_SNAP_DESTROY_V2: u32 = 1342215231;
-pub const HIDIOCGCOLLECTIONINFO: u32 = 3222292497;
-pub const I2OSWUL: u32 = 3224398086;
-pub const IOCTL_MEI_NOTIFY_GET: u32 = 2147764227;
-pub const FDFMTTRK: u32 = 1074528840;
-pub const MMTIMER_GETBITS: u32 = 27908;
-pub const VIDIOC_ENUMSTD: u32 = 3225966105;
-pub const VHOST_GET_VRING_BASE: u32 = 3221794578;
-pub const VFIO_DEVICE_IOEVENTFD: u32 = 15220;
-pub const ATMARP_SETENTRY: u32 = 25059;
-pub const CCISS_REVALIDVOLS: u32 = 16906;
-pub const MGSL_IOCLOOPTXDONE: u32 = 27913;
-pub const RTC_VL_READ: u32 = 2147774483;
-pub const ND_IOCTL_ARS_STATUS: u32 = 3224391171;
-pub const RIO_DEV_DEL: u32 = 1075866904;
-pub const VBG_IOCTL_ACQUIRE_GUEST_CAPABILITIES: u32 = 3223606797;
-pub const VIDIOC_SUBDEV_DV_TIMINGS_CAP: u32 = 3230684772;
-pub const SONYPI_IOCSFAN: u32 = 1073837579;
-pub const SPIOCSTYPE: u32 = 1074295041;
-pub const IPMICTL_REGISTER_FOR_CMD: u32 = 2147641614;
-pub const I8K_GET_FAN: u32 = 3221776774;
-pub const TUNGETVNETBE: u32 = 2147767519;
-pub const AUTOFS_DEV_IOCTL_FAIL: u32 = 3222836087;
-pub const UI_END_FF_UPLOAD: u32 = 1080579529;
-pub const TOSH_SMM: u32 = 3222828176;
-pub const SONYPI_IOCGBAT2REM: u32 = 2147644933;
-pub const F2FS_IOC_GET_COMPRESS_BLOCKS: u32 = 2148070673;
-pub const PPPIOCSNPMODE: u32 = 1074295883;
-pub const USBDEVFS_CONTROL: u32 = 3222820096;
-pub const HIDIOCGUSAGE: u32 = 3222816779;
-pub const TUNSETTXFILTER: u32 = 1074025681;
-pub const TUNGETVNETLE: u32 = 2147767517;
-pub const VIDIOC_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const BTRFS_IOC_INO_PATHS: u32 = 3224933411;
-pub const MGSL_IOCGXSYNC: u32 = 27924;
-pub const HIDIOCGFIELDINFO: u32 = 3224913930;
-pub const VIDIOC_SUBDEV_G_STD: u32 = 2148029975;
-pub const I2OVALIDATE: u32 = 2147772680;
-pub const VIDIOC_TRY_ENCODER_CMD: u32 = 3223869006;
-pub const NILFS_IOCTL_GET_CPINFO: u32 = 2149084802;
-pub const VIDIOC_G_FREQUENCY: u32 = 3224131128;
-pub const VFAT_IOCTL_READDIR_SHORT: u32 = 2184212994;
-pub const ND_IOCTL_GET_CONFIG_DATA: u32 = 3222031877;
-pub const F2FS_IOC_RESERVE_COMPRESS_BLOCKS: u32 = 2148070675;
-pub const FDGETDRVSTAT: u32 = 2152727058;
-pub const SYNC_IOC_MERGE: u32 = 3224387075;
-pub const VIDIOC_S_DV_TIMINGS: u32 = 3229898327;
-pub const PPPIOCBRIDGECHAN: u32 = 1074033717;
-pub const LIRC_SET_SEND_MODE: u32 = 1074030865;
-pub const RIO_ENABLE_PORTWRITE_RANGE: u32 = 1074818315;
-pub const ATM_GETTYPE: u32 = 1074815364;
-pub const PHN_GETREGS: u32 = 3223875591;
-pub const FDSETEMSGTRESH: u32 = 586;
-pub const NILFS_IOCTL_GET_VINFO: u32 = 3222826630;
-pub const MGSL_IOCWAITEVENT: u32 = 3221515528;
-pub const CAPI_INSTALLED: u32 = 2147631906;
-pub const EVIOCGMASK: u32 = 2148550034;
-pub const BTRFS_IOC_SUBVOL_GETFLAGS: u32 = 2148045849;
-pub const FSL_HV_IOCTL_PARTITION_GET_STATUS: u32 = 3222056706;
-pub const MEDIA_IOC_ENUM_ENTITIES: u32 = 3238034433;
-pub const GSMIOC_GETFIRST: u32 = 2147763972;
-pub const FW_CDEV_IOC_FLUSH_ISO: u32 = 1074012952;
-pub const VIDIOC_DBG_G_CHIP_INFO: u32 = 3234354790;
-pub const F2FS_IOC_RELEASE_VOLATILE_WRITE: u32 = 62724;
-pub const CAPI_GET_SERIAL: u32 = 3221504776;
-pub const FDSETDRVPRM: u32 = 1082131088;
-pub const IOC_OPAL_SAVE: u32 = 1092120796;
-pub const VIDIOC_G_DV_TIMINGS: u32 = 3229898328;
-pub const TUNSETIFINDEX: u32 = 1074025690;
-pub const CCISS_SETINTINFO: u32 = 1074283011;
-pub const CM_IOSDBGLVL: u32 = 1074291706;
-pub const RTC_VL_CLR: u32 = 28692;
-pub const VIDIOC_REQBUFS: u32 = 3222558216;
-pub const USBDEVFS_REAPURBNDELAY32: u32 = 1074025741;
-pub const TEE_IOC_SHM_REGISTER: u32 = 3222840329;
-pub const USBDEVFS_SETCONFIGURATION: u32 = 2147767557;
-pub const CCISS_GETNODENAME: u32 = 2148549124;
-pub const VIDIOC_SUBDEV_S_FRAME_INTERVAL: u32 = 3224393238;
-pub const VIDIOC_ENUM_FRAMESIZES: u32 = 3224131146;
-pub const VFIO_DEVICE_PCI_HOT_RESET: u32 = 15217;
-pub const FW_CDEV_IOC_SEND_BROADCAST_REQUEST: u32 = 1076372242;
-pub const LPSETTIMEOUT_NEW: u32 = 1074791951;
-pub const RIO_CM_MPORT_GET_LIST: u32 = 3221512971;
-pub const FW_CDEV_IOC_QUEUE_ISO: u32 = 3222807305;
-pub const FDRAWCMD: u32 = 600;
-pub const SCIF_UNREG: u32 = 3222303497;
-pub const PPPIOCGIDLE64: u32 = 2148561983;
-pub const USBDEVFS_RELEASEINTERFACE: u32 = 2147767568;
-pub const VIDIOC_CROPCAP: u32 = 3224131130;
-pub const DFL_FPGA_PORT_GET_INFO: u32 = 46657;
-pub const PHN_SET_REGS: u32 = 1074294787;
-pub const ATMLEC_DATA: u32 = 25041;
-pub const PPPOEIOCDFWD: u32 = 45313;
-pub const VIDIOC_S_SELECTION: u32 = 3225441887;
-pub const SNAPSHOT_FREE_SWAP_PAGES: u32 = 13065;
-pub const BTRFS_IOC_LOGICAL_INO: u32 = 3224933412;
-pub const VIDIOC_S_CTRL: u32 = 3221771804;
-pub const ZATM_SETPOOL: u32 = 1074815331;
-pub const MTIOCPOS: u32 = 2148035843;
-pub const PMU_IOC_SLEEP: u32 = 16896;
-pub const AUTOFS_DEV_IOCTL_PROTOSUBVER: u32 = 3222836083;
-pub const VBG_IOCTL_CHANGE_FILTER_MASK: u32 = 3223344652;
-pub const NILFS_IOCTL_GET_SUSTAT: u32 = 2150657669;
-pub const VIDIOC_QUERYCAP: u32 = 2154321408;
-pub const HPET_INFO: u32 = 2149083139;
-pub const VIDIOC_AM437X_CCDC_CFG: u32 = 1074288321;
-pub const DM_LIST_DEVICES: u32 = 3241737474;
-pub const TUNSETOWNER: u32 = 1074025676;
-pub const VBG_IOCTL_CHANGE_GUEST_CAPABILITIES: u32 = 3223344654;
-pub const RNDADDENTROPY: u32 = 1074287107;
-pub const USBDEVFS_RESET: u32 = 21780;
-pub const BTRFS_IOC_SUBVOL_CREATE: u32 = 1342215182;
-pub const USBDEVFS_FORBID_SUSPEND: u32 = 21793;
-pub const FDGETDRVTYP: u32 = 2148532751;
-pub const PPWCONTROL: u32 = 1073836164;
-pub const VIDIOC_ENUM_FRAMEINTERVALS: u32 = 3224655435;
-pub const KCOV_DISABLE: u32 = 25445;
-pub const IOC_OPAL_ACTIVATE_LSP: u32 = 1092120799;
-pub const VHOST_VDPA_GET_IOVA_RANGE: u32 = 2148577144;
-pub const PPPIOCSPASS: u32 = 1074820167;
-pub const RIO_CM_CHAN_CONNECT: u32 = 1074291464;
-pub const I2OSWDEL: u32 = 3224398087;
-pub const FS_IOC_SET_ENCRYPTION_POLICY: u32 = 2148296211;
-pub const IOC_OPAL_MBR_DONE: u32 = 1091596521;
-pub const PPPIOCSMAXCID: u32 = 1074033745;
-pub const PPSETPHASE: u32 = 1074032788;
-pub const VHOST_VDPA_SET_VRING_ENABLE: u32 = 1074311029;
-pub const USBDEVFS_GET_SPEED: u32 = 21791;
-pub const SONET_GETFRAMING: u32 = 2147770646;
-pub const VIDIOC_QUERYBUF: u32 = 3227014665;
-pub const VIDIOC_S_EDID: u32 = 3223868969;
-pub const BTRFS_IOC_QGROUP_ASSIGN: u32 = 1075352617;
-pub const PPS_GETCAP: u32 = 2148036771;
-pub const SNAPSHOT_PLATFORM_SUPPORT: u32 = 13071;
-pub const LIRC_SET_REC_TIMEOUT_REPORTS: u32 = 1074030873;
-pub const SCIF_GET_NODEIDS: u32 = 3222827790;
-pub const NBD_DISCONNECT: u32 = 43784;
-pub const VIDIOC_SUBDEV_G_FRAME_INTERVAL: u32 = 3224393237;
-pub const VFIO_IOMMU_DISABLE: u32 = 15220;
-pub const SNAPSHOT_CREATE_IMAGE: u32 = 1074017041;
-pub const SNAPSHOT_POWER_OFF: u32 = 13072;
-pub const APM_IOC_STANDBY: u32 = 16641;
-pub const PPPIOCGUNIT: u32 = 2147775574;
-pub const AUTOFS_IOC_EXPIRE_MULTI: u32 = 1074041702;
-pub const SCIF_BIND: u32 = 3221779201;
-pub const IOC_WATCH_QUEUE_SET_SIZE: u32 = 22368;
-pub const NILFS_IOCTL_CHANGE_CPMODE: u32 = 1074818688;
-pub const IOC_OPAL_LOCK_UNLOCK: u32 = 1092120797;
-pub const F2FS_IOC_SET_PIN_FILE: u32 = 1074066701;
-pub const PPPIOCGRASYNCMAP: u32 = 2147775573;
-pub const MMTIMER_MMAPAVAIL: u32 = 27910;
-pub const I2OPASSTHRU32: u32 = 2148034828;
-pub const DFL_FPGA_FME_PORT_RELEASE: u32 = 1074050689;
-pub const VIDIOC_SUBDEV_QUERY_DV_TIMINGS: u32 = 2156156515;
-pub const UI_SET_SNDBIT: u32 = 1074025834;
-pub const VIDIOC_G_AUDOUT: u32 = 2150913585;
-pub const RTC_PLL_SET: u32 = 1075867666;
-pub const VIDIOC_ENUMAUDIO: u32 = 3224655425;
-pub const AUTOFS_DEV_IOCTL_TIMEOUT: u32 = 3222836090;
-pub const VBG_IOCTL_DRIVER_VERSION_INFO: u32 = 3224131072;
-pub const VHOST_SCSI_GET_EVENTS_MISSED: u32 = 1074048836;
-pub const VHOST_SET_VRING_ADDR: u32 = 1076408081;
-pub const VDUSE_CREATE_DEV: u32 = 1095794946;
-pub const FDFLUSH: u32 = 587;
-pub const VBG_IOCTL_WAIT_FOR_EVENTS: u32 = 3223344650;
-pub const DFL_FPGA_FME_ERR_SET_IRQ: u32 = 1074312836;
-pub const F2FS_IOC_GET_PIN_FILE: u32 = 2147808526;
-pub const SCIF_CONNECT: u32 = 3221779203;
-pub const BLKREPORTZONE: u32 = 3222278786;
-pub const AUTOFS_IOC_ASKUMOUNT: u32 = 2147783536;
-pub const ATM_ADDPARTY: u32 = 1074815476;
-pub const FDSETPRM: u32 = 1075839554;
-pub const ATM_GETSTATZ: u32 = 1074815313;
-pub const ISST_IF_MSR_COMMAND: u32 = 3221814788;
-pub const BTRFS_IOC_GET_SUBVOL_INFO: u32 = 2180551740;
-pub const VIDIOC_UNSUBSCRIBE_EVENT: u32 = 1075861083;
-pub const SEV_ISSUE_CMD: u32 = 3222295296;
-pub const GPIOHANDLE_SET_LINE_VALUES_IOCTL: u32 = 3225465865;
-pub const PCITEST_COPY: u32 = 1074286598;
-pub const IPMICTL_GET_MY_ADDRESS_CMD: u32 = 2147772690;
-pub const CHIOGPICKER: u32 = 2147771140;
-pub const CAPI_NCCI_OPENCOUNT: u32 = 2147762982;
-pub const CXL_MEM_SEND_COMMAND: u32 = 3224423938;
-pub const PERF_EVENT_IOC_SET_FILTER: u32 = 1074275334;
-pub const IOC_OPAL_REVERT_TPR: u32 = 1091072226;
-pub const CHIOGVPARAMS: u32 = 2154849043;
-pub const PTP_PEROUT_REQUEST: u32 = 1077427459;
-pub const FSI_SCOM_CHECK: u32 = 2147775232;
-pub const RTC_IRQP_READ: u32 = 2148036619;
-pub const RIO_MPORT_MAINT_READ_LOCAL: u32 = 2149084421;
-pub const HIDIOCGRDESCSIZE: u32 = 2147764225;
-pub const UI_GET_VERSION: u32 = 2147767597;
-pub const NILFS_IOCTL_GET_CPSTAT: u32 = 2149084803;
-pub const CCISS_GETBUSTYPES: u32 = 2147762695;
-pub const VFIO_IOMMU_SPAPR_TCE_CREATE: u32 = 15223;
-pub const VIDIOC_EXPBUF: u32 = 3225441808;
-pub const UI_SET_RELBIT: u32 = 1074025830;
-pub const VFIO_SET_IOMMU: u32 = 15206;
-pub const VIDIOC_S_MODULATOR: u32 = 1078220343;
-pub const TUNGETFILTER: u32 = 2148553947;
-pub const MEYEIOC_SYNC: u32 = 3221518019;
-pub const CCISS_SETNODENAME: u32 = 1074807301;
-pub const FBIO_GETCONTROL2: u32 = 2148025993;
-pub const TUNSETDEBUG: u32 = 1074025673;
-pub const DM_DEV_REMOVE: u32 = 3241737476;
-pub const HIDIOCSUSAGES: u32 = 1344030740;
-pub const FS_IOC_ADD_ENCRYPTION_KEY: u32 = 3226494487;
-pub const FBIOGET_VBLANK: u32 = 2149598738;
-pub const ATM_GETSTAT: u32 = 1074815312;
-pub const VIDIOC_G_JPEGCOMP: u32 = 2156680765;
-pub const TUNATTACHFILTER: u32 = 1074812117;
-pub const UI_SET_ABSBIT: u32 = 1074025831;
-pub const DFL_FPGA_PORT_ERR_GET_IRQ_NUM: u32 = 2147792453;
-pub const USBDEVFS_REAPURB32: u32 = 1074025740;
-pub const BTRFS_IOC_TRANS_END: u32 = 37895;
-pub const CAPI_REGISTER: u32 = 1074545409;
-pub const F2FS_IOC_COMPRESS_FILE: u32 = 62744;
-pub const USBDEVFS_DISCARDURB: u32 = 21771;
-pub const HE_GET_REG: u32 = 1074815328;
-pub const ATM_SETLOOP: u32 = 1074815315;
-pub const ATMSIGD_CTRL: u32 = 25072;
-pub const CIOC_KERNEL_VERSION: u32 = 3221775114;
-pub const BTRFS_IOC_CLONE_RANGE: u32 = 1075876877;
-pub const SNAPSHOT_UNFREEZE: u32 = 13058;
-pub const F2FS_IOC_START_VOLATILE_WRITE: u32 = 62723;
-pub const PMU_IOC_HAS_ADB: u32 = 2148024836;
-pub const I2OGETIOPS: u32 = 2149607680;
-pub const VIDIOC_S_FBUF: u32 = 1076909579;
-pub const PPRCONTROL: u32 = 2147577987;
-pub const CHIOSPICKER: u32 = 1074029317;
-pub const VFIO_IOMMU_SPAPR_REGISTER_MEMORY: u32 = 15221;
-pub const TUNGETSNDBUF: u32 = 2147767507;
-pub const GSMIOC_SETCONF: u32 = 1078740737;
-pub const IOC_PR_PREEMPT: u32 = 1075343563;
-pub const KCOV_INIT_TRACE: u32 = 2148033281;
-pub const SONYPI_IOCGBAT1CAP: u32 = 2147644930;
-pub const SWITCHTEC_IOCTL_FLASH_INFO: u32 = 2148554560;
-pub const MTIOCTOP: u32 = 1074294017;
-pub const VHOST_VDPA_SET_STATUS: u32 = 1073852274;
-pub const VHOST_SCSI_SET_EVENTS_MISSED: u32 = 1074048835;
-pub const VFIO_IOMMU_DIRTY_PAGES: u32 = 15221;
-pub const BTRFS_IOC_SCRUB_PROGRESS: u32 = 3288372253;
-pub const PPPIOCGMRU: u32 = 2147775571;
-pub const BTRFS_IOC_DEV_REPLACE: u32 = 3391657013;
-pub const PPPIOCGFLAGS: u32 = 2147775578;
-pub const NILFS_IOCTL_SET_SUINFO: u32 = 1075342989;
-pub const FW_CDEV_IOC_GET_CYCLE_TIMER2: u32 = 3222807316;
-pub const ATM_DELLECSADDR: u32 = 1074815375;
-pub const FW_CDEV_IOC_GET_SPEED: u32 = 8977;
-pub const PPPIOCGIDLE32: u32 = 2148037695;
-pub const VFIO_DEVICE_RESET: u32 = 15215;
-pub const GPIO_GET_LINEINFO_UNWATCH_IOCTL: u32 = 3221533708;
-pub const WDIOC_GETSTATUS: u32 = 2147768065;
-pub const BTRFS_IOC_SET_FEATURES: u32 = 1076925497;
-pub const IOCTL_MEI_CONNECT_CLIENT: u32 = 3222292481;
-pub const VIDIOC_OMAP3ISP_AEWB_CFG: u32 = 3223344835;
-pub const PCITEST_READ: u32 = 1074286597;
-pub const VFIO_GROUP_GET_STATUS: u32 = 15207;
-pub const MATROXFB_GET_ALL_OUTPUTS: u32 = 2148036347;
-pub const USBDEVFS_CLEAR_HALT: u32 = 2147767573;
-pub const VIDIOC_DECODER_CMD: u32 = 3225966176;
-pub const VIDIOC_G_AUDIO: u32 = 2150913569;
-pub const CCISS_RESCANDISK: u32 = 16912;
-pub const RIO_DISABLE_PORTWRITE_RANGE: u32 = 1074818316;
-pub const IOC_OPAL_SECURE_ERASE_LR: u32 = 1091596519;
-pub const USBDEVFS_REAPURB: u32 = 1074287884;
-pub const DFL_FPGA_CHECK_EXTENSION: u32 = 46593;
-pub const AUTOFS_IOC_PROTOVER: u32 = 2147783523;
-pub const FSL_HV_IOCTL_MEMCPY: u32 = 3223891717;
-pub const BTRFS_IOC_GET_FEATURES: u32 = 2149094457;
-pub const PCITEST_MSIX: u32 = 1074024455;
-pub const BTRFS_IOC_DEFRAG_RANGE: u32 = 1076925456;
-pub const UI_BEGIN_FF_ERASE: u32 = 3222033866;
-pub const DM_GET_TARGET_VERSION: u32 = 3241737489;
-pub const PPPIOCGIDLE: u32 = 2148561983;
-pub const NVRAM_SETCKS: u32 = 28737;
-pub const WDIOC_GETSUPPORT: u32 = 2150127360;
-pub const GSMIOC_ENABLE_NET: u32 = 1077167874;
-pub const GPIO_GET_CHIPINFO_IOCTL: u32 = 2151986177;
-pub const NE_ADD_VCPU: u32 = 3221532193;
-pub const EVIOCSKEYCODE_V2: u32 = 1076380932;
-pub const PTP_SYS_OFFSET_EXTENDED2: u32 = 3300932882;
-pub const SCIF_FENCE_WAIT: u32 = 3221517072;
-pub const RIO_TRANSFER: u32 = 3222826261;
-pub const FSL_HV_IOCTL_DOORBELL: u32 = 3221794566;
-pub const RIO_MPORT_MAINT_WRITE_LOCAL: u32 = 1075342598;
-pub const I2OEVTREG: u32 = 1074555146;
-pub const I2OPARMGET: u32 = 3223873796;
-pub const EVIOCGID: u32 = 2148025602;
-pub const BTRFS_IOC_QGROUP_CREATE: u32 = 1074828330;
-pub const AUTOFS_DEV_IOCTL_SETPIPEFD: u32 = 3222836088;
-pub const VIDIOC_S_PARM: u32 = 3234616854;
-pub const TUNSETSTEERINGEBPF: u32 = 2147767520;
-pub const ATM_GETNAMES: u32 = 1074815363;
-pub const VIDIOC_QUERYMENU: u32 = 3224131109;
-pub const DFL_FPGA_PORT_DMA_UNMAP: u32 = 46660;
-pub const I2OLCTGET: u32 = 3222825218;
-pub const FS_IOC_GET_ENCRYPTION_PWSALT: u32 = 1074816532;
-pub const NS_SETBUFLEV: u32 = 1074815330;
-pub const BLKCLOSEZONE: u32 = 1074795143;
-pub const SONET_GETFRSENSE: u32 = 2147901719;
-pub const UI_SET_EVBIT: u32 = 1074025828;
-pub const DM_LIST_VERSIONS: u32 = 3241737485;
-pub const HIDIOCGSTRING: u32 = 2164541444;
-pub const PPPIOCATTCHAN: u32 = 1074033720;
-pub const VDUSE_DEV_SET_CONFIG: u32 = 1074299154;
-pub const TUNGETFEATURES: u32 = 2147767503;
-pub const VFIO_GROUP_UNSET_CONTAINER: u32 = 15209;
-pub const IPMICTL_SET_MY_ADDRESS_CMD: u32 = 2147772689;
-pub const CCISS_REGNEWDISK: u32 = 1074020877;
-pub const VIDIOC_QUERY_DV_TIMINGS: u32 = 2156156515;
-pub const PHN_SETREGS: u32 = 1076391944;
-pub const FAT_IOCTL_GET_ATTRIBUTES: u32 = 2147774992;
-pub const FSL_MC_SEND_MC_COMMAND: u32 = 3225440992;
-pub const TUNGETIFF: u32 = 2147767506;
-pub const PTP_CLOCK_GETCAPS2: u32 = 2152742154;
-pub const BTRFS_IOC_RESIZE: u32 = 1342215171;
-pub const VHOST_SET_VRING_ENDIAN: u32 = 1074310931;
-pub const PPS_KC_BIND: u32 = 1074294949;
-pub const F2FS_IOC_WRITE_CHECKPOINT: u32 = 62727;
-pub const UI_SET_FFBIT: u32 = 1074025835;
-pub const IPMICTL_GET_MY_LUN_CMD: u32 = 2147772692;
-pub const CEC_ADAP_G_PHYS_ADDR: u32 = 2147639553;
-pub const CEC_G_MODE: u32 = 2147770632;
-pub const USBDEVFS_RESETEP: u32 = 2147767555;
-pub const MEDIA_REQUEST_IOC_QUEUE: u32 = 31872;
-pub const USBDEVFS_ALLOC_STREAMS: u32 = 2148029724;
-pub const MGSL_IOCSXCTRL: u32 = 27925;
-pub const MEDIA_IOC_G_TOPOLOGY: u32 = 3225975812;
-pub const PPPIOCUNBRIDGECHAN: u32 = 29748;
-pub const F2FS_IOC_COMMIT_ATOMIC_WRITE: u32 = 62722;
-pub const ISST_IF_GET_PLATFORM_INFO: u32 = 2148072960;
-pub const SCIF_FENCE_MARK: u32 = 3222303503;
-pub const USBDEVFS_RELEASE_PORT: u32 = 2147767577;
-pub const VFIO_CHECK_EXTENSION: u32 = 15205;
-pub const BTRFS_IOC_QGROUP_LIMIT: u32 = 2150667307;
-pub const FAT_IOCTL_GET_VOLUME_ID: u32 = 2147774995;
-pub const UI_SET_PHYS: u32 = 1074287980;
-pub const FDWERRORGET: u32 = 2150105623;
-pub const VIDIOC_SUBDEV_G_EDID: u32 = 3223868968;
-pub const MGSL_IOCGSTATS: u32 = 27911;
-pub const RPROC_SET_SHUTDOWN_ON_RELEASE: u32 = 1074050817;
-pub const SIOCGSTAMP_NEW: u32 = 2148567302;
-pub const RTC_WKALM_RD: u32 = 2150133776;
-pub const PHN_GET_REG: u32 = 3221778432;
-pub const DELL_WMI_SMBIOS_CMD: u32 = 3224655616;
-pub const PHN_NOT_OH: u32 = 28676;
-pub const PPGETMODES: u32 = 2147774615;
-pub const CHIOGPARAMS: u32 = 2148819718;
-pub const VFIO_DEVICE_GET_GFX_DMABUF: u32 = 15219;
-pub const VHOST_SET_VRING_BUSYLOOP_TIMEOUT: u32 = 1074310947;
-pub const VIDIOC_SUBDEV_G_SELECTION: u32 = 3225441853;
-pub const BTRFS_IOC_RM_DEV_V2: u32 = 1342215226;
-pub const MGSL_IOCWAITGPIO: u32 = 3222301970;
-pub const PMU_IOC_CAN_SLEEP: u32 = 2148024837;
-pub const KCOV_ENABLE: u32 = 25444;
-pub const BTRFS_IOC_CLONE: u32 = 1074041865;
-pub const F2FS_IOC_DEFRAGMENT: u32 = 3222336776;
-pub const FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE: u32 = 1074012942;
-pub const AGPIOC_ALLOCATE: u32 = 3221766406;
-pub const NE_SET_USER_MEMORY_REGION: u32 = 1075359267;
-pub const MGSL_IOCTXABORT: u32 = 27910;
-pub const MGSL_IOCSGPIO: u32 = 1074818320;
-pub const LIRC_SET_REC_CARRIER: u32 = 1074030868;
-pub const F2FS_IOC_FLUSH_DEVICE: u32 = 1074328842;
-pub const SNAPSHOT_ATOMIC_RESTORE: u32 = 13060;
-pub const RTC_UIE_OFF: u32 = 28676;
-pub const BT_BMC_IOCTL_SMS_ATN: u32 = 45312;
-pub const NVME_IOCTL_ID: u32 = 20032;
-pub const NE_START_ENCLAVE: u32 = 3222318628;
-pub const VIDIOC_STREAMON: u32 = 1074026002;
-pub const FDPOLLDRVSTAT: u32 = 2152727059;
-pub const AUTOFS_DEV_IOCTL_READY: u32 = 3222836086;
-pub const VIDIOC_ENUMAUDOUT: u32 = 3224655426;
-pub const VIDIOC_SUBDEV_S_STD: u32 = 1074288152;
-pub const WDIOC_GETTIMELEFT: u32 = 2147768074;
-pub const ATM_GETLINKRATE: u32 = 1074815361;
-pub const RTC_WKALM_SET: u32 = 1076391951;
-pub const VHOST_GET_BACKEND_FEATURES: u32 = 2148052774;
-pub const ATMARP_ENCAP: u32 = 25061;
-pub const CAPI_GET_FLAGS: u32 = 2147762979;
-pub const IPMICTL_SET_MY_CHANNEL_ADDRESS_CMD: u32 = 2147772696;
-pub const DFL_FPGA_FME_PORT_ASSIGN: u32 = 1074050690;
-pub const NS_GET_OWNER_UID: u32 = 46852;
-pub const VIDIOC_OVERLAY: u32 = 1074025998;
-pub const BTRFS_IOC_WAIT_SYNC: u32 = 1074304022;
-pub const GPIOHANDLE_SET_CONFIG_IOCTL: u32 = 3226776586;
-pub const VHOST_GET_VRING_ENDIAN: u32 = 1074310932;
-pub const ATM_GETADDR: u32 = 1074815366;
-pub const PHN_GET_REGS: u32 = 3221778434;
-pub const AUTOFS_DEV_IOCTL_REQUESTER: u32 = 3222836091;
-pub const AUTOFS_DEV_IOCTL_EXPIRE: u32 = 3222836092;
-pub const SNAPSHOT_S2RAM: u32 = 13067;
-pub const JSIOCSAXMAP: u32 = 1077963313;
-pub const F2FS_IOC_SET_COMPRESS_OPTION: u32 = 1073935638;
-pub const VBG_IOCTL_HGCM_DISCONNECT: u32 = 3223082501;
-pub const SCIF_FENCE_SIGNAL: u32 = 3223876369;
-pub const VFIO_DEVICE_GET_PCI_HOT_RESET_INFO: u32 = 15216;
-pub const VIDIOC_SUBDEV_ENUM_MBUS_CODE: u32 = 3224393218;
-pub const MMTIMER_GETOFFSET: u32 = 27904;
-pub const RIO_CM_CHAN_LISTEN: u32 = 1073898246;
-pub const ATM_SETSC: u32 = 1074029041;
-pub const F2FS_IOC_SHUTDOWN: u32 = 2147768445;
-pub const NVME_IOCTL_RESCAN: u32 = 20038;
-pub const BLKOPENZONE: u32 = 1074795142;
-pub const DM_VERSION: u32 = 3241737472;
-pub const CEC_TRANSMIT: u32 = 3224920325;
-pub const FS_IOC_GET_ENCRYPTION_POLICY_EX: u32 = 3221841430;
-pub const SIOCMKCLIP: u32 = 25056;
-pub const IPMI_BMC_IOCTL_CLEAR_SMS_ATN: u32 = 45313;
-pub const HIDIOCGVERSION: u32 = 2147764225;
-pub const VIDIOC_S_INPUT: u32 = 3221509671;
-pub const VIDIOC_G_CROP: u32 = 3222558267;
-pub const LIRC_SET_WIDEBAND_RECEIVER: u32 = 1074030883;
-pub const EVIOCGEFFECTS: u32 = 2147763588;
-pub const UVCIOC_CTRL_QUERY: u32 = 3222304033;
-pub const IOC_OPAL_GENERIC_TABLE_RW: u32 = 1094217963;
-pub const FS_IOC_READ_VERITY_METADATA: u32 = 3223873159;
-pub const ND_IOCTL_SET_CONFIG_DATA: u32 = 3221769734;
-pub const USBDEVFS_GETDRIVER: u32 = 1090802952;
-pub const IDT77105_GETSTAT: u32 = 1074815282;
-pub const HIDIOCINITREPORT: u32 = 18437;
-pub const VFIO_DEVICE_GET_INFO: u32 = 15211;
-pub const RIO_CM_CHAN_RECEIVE: u32 = 3222299402;
-pub const RNDGETENTCNT: u32 = 2147766784;
-pub const PPPIOCNEWUNIT: u32 = 3221517374;
-pub const BTRFS_IOC_INO_LOOKUP: u32 = 3489698834;
-pub const FDRESET: u32 = 596;
-pub const IOC_PR_REGISTER: u32 = 1075343560;
-pub const HIDIOCSREPORT: u32 = 1074546696;
-pub const TEE_IOC_OPEN_SESSION: u32 = 2148574210;
-pub const TEE_IOC_SUPPL_RECV: u32 = 2148574214;
-pub const BTRFS_IOC_BALANCE_CTL: u32 = 1074041889;
-pub const GPIO_GET_LINEINFO_WATCH_IOCTL: u32 = 3225990155;
-pub const HIDIOCGRAWINFO: u32 = 2148026371;
-pub const PPPIOCSCOMPRESS: u32 = 1074820173;
-pub const USBDEVFS_CONNECTINFO: u32 = 1074287889;
-pub const BLKRESETZONE: u32 = 1074795139;
-pub const CHIOINITELEM: u32 = 25361;
-pub const NILFS_IOCTL_SET_ALLOC_RANGE: u32 = 1074818700;
-pub const AUTOFS_DEV_IOCTL_CATATONIC: u32 = 3222836089;
-pub const RIO_MPORT_MAINT_HDID_SET: u32 = 1073900801;
-pub const PPGETPHASE: u32 = 2147774617;
-pub const USBDEVFS_DISCONNECT_CLAIM: u32 = 2164806939;
-pub const FDMSGON: u32 = 581;
-pub const VIDIOC_G_SLICED_VBI_CAP: u32 = 3228849733;
-pub const BTRFS_IOC_BALANCE_V2: u32 = 3288372256;
-pub const MEDIA_REQUEST_IOC_REINIT: u32 = 31873;
-pub const IOC_OPAL_ERASE_LR: u32 = 1091596518;
-pub const FDFMTBEG: u32 = 583;
-pub const RNDRESEEDCRNG: u32 = 20999;
-pub const ISST_IF_GET_PHY_ID: u32 = 3221814785;
-pub const TUNSETNOCSUM: u32 = 1074025672;
-pub const SONET_GETSTAT: u32 = 2149867792;
-pub const TFD_IOC_SET_TICKS: u32 = 1074287616;
-pub const PPDATADIR: u32 = 1074032784;
-pub const IOC_OPAL_ENABLE_DISABLE_MBR: u32 = 1091596517;
-pub const GPIO_V2_GET_LINE_IOCTL: u32 = 3260068871;
-pub const RIO_CM_CHAN_SEND: u32 = 1074815753;
-pub const PPWCTLONIRQ: u32 = 1073836178;
-pub const SONYPI_IOCGBRT: u32 = 2147579392;
-pub const IOC_PR_RELEASE: u32 = 1074819274;
-pub const PPCLRIRQ: u32 = 2147774611;
-pub const IPMICTL_SET_MY_CHANNEL_LUN_CMD: u32 = 2147772698;
-pub const MGSL_IOCSXSYNC: u32 = 27923;
-pub const HPET_IE_OFF: u32 = 26626;
-pub const IOC_OPAL_ACTIVATE_USR: u32 = 1091596513;
-pub const SONET_SETFRAMING: u32 = 1074028821;
-pub const PERF_EVENT_IOC_PAUSE_OUTPUT: u32 = 1074013193;
-pub const BTRFS_IOC_LOGICAL_INO_V2: u32 = 3224933435;
-pub const VBG_IOCTL_HGCM_CONNECT: u32 = 3231471108;
-pub const BLKFINISHZONE: u32 = 1074795144;
-pub const EVIOCREVOKE: u32 = 1074021777;
-pub const VFIO_DEVICE_FEATURE: u32 = 15221;
-pub const CCISS_GETPCIINFO: u32 = 2148024833;
-pub const ISST_IF_MBOX_COMMAND: u32 = 3221814787;
-pub const SCIF_ACCEPTREQ: u32 = 3222303492;
-pub const PERF_EVENT_IOC_QUERY_BPF: u32 = 3221758986;
-pub const VIDIOC_STREAMOFF: u32 = 1074026003;
-pub const VDUSE_DESTROY_DEV: u32 = 1090552067;
-pub const FDGETFDCSTAT: u32 = 2150105621;
-pub const CM_IOCGATR: u32 = 3221775105;
-pub const VIDIOC_S_PRIORITY: u32 = 1074026052;
-pub const SNAPSHOT_FREEZE: u32 = 13057;
-pub const VIDIOC_ENUMINPUT: u32 = 3226490394;
-pub const ZATM_GETPOOLZ: u32 = 1074815330;
-pub const RIO_DISABLE_DOORBELL_RANGE: u32 = 1074294026;
-pub const GPIO_V2_GET_LINEINFO_WATCH_IOCTL: u32 = 3238048774;
-pub const VIDIOC_G_STD: u32 = 2148029975;
-pub const USBDEVFS_ALLOW_SUSPEND: u32 = 21794;
-pub const SONET_GETSTATZ: u32 = 2149867793;
-pub const SCIF_ACCEPTREG: u32 = 3221779205;
-pub const VIDIOC_ENCODER_CMD: u32 = 3223869005;
-pub const PPPIOCSRASYNCMAP: u32 = 1074033748;
-pub const IOCTL_MEI_NOTIFY_SET: u32 = 1074022402;
-pub const BTRFS_IOC_QUOTA_RESCAN_STATUS: u32 = 2151715885;
-pub const F2FS_IOC_GARBAGE_COLLECT: u32 = 1074066694;
-pub const ATMLEC_CTRL: u32 = 25040;
-pub const MATROXFB_GET_AVAILABLE_OUTPUTS: u32 = 2148036345;
-pub const DM_DEV_CREATE: u32 = 3241737475;
-pub const VHOST_VDPA_GET_VRING_NUM: u32 = 2147659638;
-pub const VIDIOC_G_CTRL: u32 = 3221771803;
-pub const NBD_CLEAR_SOCK: u32 = 43780;
-pub const VFIO_DEVICE_QUERY_GFX_PLANE: u32 = 15218;
-pub const WDIOC_KEEPALIVE: u32 = 2147768069;
-pub const NVME_IOCTL_SUBSYS_RESET: u32 = 20037;
-pub const PTP_EXTTS_REQUEST2: u32 = 1074806027;
-pub const PCITEST_BAR: u32 = 20481;
-pub const MGSL_IOCGGPIO: u32 = 2148560145;
-pub const EVIOCSREP: u32 = 1074283779;
-pub const VFIO_DEVICE_GET_IRQ_INFO: u32 = 15213;
-pub const HPET_DPI: u32 = 26629;
-pub const VDUSE_VQ_SETUP_KICKFD: u32 = 1074299158;
-pub const ND_IOCTL_CALL: u32 = 3225439754;
-pub const HIDIOCGDEVINFO: u32 = 2149337091;
-pub const DM_TABLE_DEPS: u32 = 3241737483;
-pub const BTRFS_IOC_DEV_INFO: u32 = 3489698846;
-pub const VDUSE_IOTLB_GET_FD: u32 = 3223355664;
-pub const FW_CDEV_IOC_GET_INFO: u32 = 3223855872;
-pub const VIDIOC_G_PRIORITY: u32 = 2147767875;
-pub const ATM_NEWBACKENDIF: u32 = 1073897971;
-pub const VIDIOC_S_EXT_CTRLS: u32 = 3223344712;
-pub const VIDIOC_SUBDEV_ENUM_DV_TIMINGS: u32 = 3230946914;
-pub const VIDIOC_OMAP3ISP_CCDC_CFG: u32 = 3224917697;
-pub const VIDIOC_S_HW_FREQ_SEEK: u32 = 1076909650;
-pub const DM_TABLE_LOAD: u32 = 3241737481;
-pub const F2FS_IOC_START_ATOMIC_WRITE: u32 = 62721;
-pub const VIDIOC_G_OUTPUT: u32 = 2147767854;
-pub const ATM_DROPPARTY: u32 = 1074029045;
-pub const CHIOGELEM: u32 = 1080845072;
-pub const BTRFS_IOC_GET_SUPPORTED_FEATURES: u32 = 2152240185;
-pub const EVIOCSKEYCODE: u32 = 1074283780;
-pub const NE_GET_IMAGE_LOAD_INFO: u32 = 3222318626;
-pub const TUNSETLINK: u32 = 1074025677;
-pub const FW_CDEV_IOC_ADD_DESCRIPTOR: u32 = 3222807302;
-pub const BTRFS_IOC_SCRUB_CANCEL: u32 = 37916;
-pub const PPS_SETPARAMS: u32 = 1074294946;
-pub const IOC_OPAL_LR_SETUP: u32 = 1093169379;
-pub const FW_CDEV_IOC_DEALLOCATE: u32 = 1074012931;
-pub const WDIOC_SETTIMEOUT: u32 = 3221509894;
-pub const IOC_WATCH_QUEUE_SET_FILTER: u32 = 22369;
-pub const CAPI_GET_MANUFACTURER: u32 = 3221504774;
-pub const VFIO_IOMMU_SPAPR_UNREGISTER_MEMORY: u32 = 15222;
-pub const ASPEED_P2A_CTRL_IOCTL_SET_WINDOW: u32 = 1074836224;
-pub const VIDIOC_G_EDID: u32 = 3223868968;
-pub const F2FS_IOC_GARBAGE_COLLECT_RANGE: u32 = 1075377419;
-pub const RIO_MAP_INBOUND: u32 = 3223874833;
-pub const IOC_OPAL_TAKE_OWNERSHIP: u32 = 1091072222;
-pub const USBDEVFS_CLAIM_PORT: u32 = 2147767576;
-pub const VIDIOC_S_AUDIO: u32 = 1077171746;
-pub const FS_IOC_GET_ENCRYPTION_NONCE: u32 = 2148558363;
-pub const FW_CDEV_IOC_SEND_STREAM_PACKET: u32 = 1076372243;
-pub const BTRFS_IOC_SNAP_DESTROY: u32 = 1342215183;
-pub const SNAPSHOT_FREE: u32 = 13061;
-pub const I8K_GET_SPEED: u32 = 3221776773;
-pub const HIDIOCGREPORT: u32 = 1074546695;
-pub const HPET_EPI: u32 = 26628;
-pub const JSIOCSCORR: u32 = 1076128289;
-pub const IOC_PR_PREEMPT_ABORT: u32 = 1075343564;
-pub const RIO_MAP_OUTBOUND: u32 = 3223874831;
-pub const ATM_SETESI: u32 = 1074815372;
-pub const FW_CDEV_IOC_START_ISO: u32 = 1074799370;
-pub const ATM_DELADDR: u32 = 1074815369;
-pub const PPFCONTROL: u32 = 1073901710;
-pub const SONYPI_IOCGFAN: u32 = 2147579402;
-pub const RTC_IRQP_SET: u32 = 1074294796;
-pub const PCITEST_WRITE: u32 = 1074286596;
-pub const PPCLAIM: u32 = 28811;
-pub const VIDIOC_S_JPEGCOMP: u32 = 1082938942;
-pub const IPMICTL_UNREGISTER_FOR_CMD: u32 = 2147641615;
-pub const VHOST_SET_FEATURES: u32 = 1074310912;
-pub const TOSHIBA_ACPI_SCI: u32 = 3222828177;
-pub const VIDIOC_DQBUF: u32 = 3227014673;
-pub const BTRFS_IOC_BALANCE_PROGRESS: u32 = 2214630434;
-pub const BTRFS_IOC_SUBVOL_SETFLAGS: u32 = 1074304026;
-pub const ATMLEC_MCAST: u32 = 25042;
-pub const MMTIMER_GETFREQ: u32 = 2148035842;
-pub const VIDIOC_G_SELECTION: u32 = 3225441886;
-pub const RTC_ALM_SET: u32 = 1076129799;
-pub const PPPOEIOCSFWD: u32 = 1074311424;
-pub const IPMICTL_GET_MAINTENANCE_MODE_CMD: u32 = 2147772702;
-pub const FS_IOC_ENABLE_VERITY: u32 = 1082156677;
-pub const NILFS_IOCTL_GET_BDESCS: u32 = 3222826631;
-pub const FDFMTEND: u32 = 585;
-pub const DMA_BUF_SET_NAME: u32 = 1074291201;
-pub const UI_BEGIN_FF_UPLOAD: u32 = 3228063176;
-pub const RTC_UIE_ON: u32 = 28675;
-pub const PPRELEASE: u32 = 28812;
-pub const VFIO_IOMMU_UNMAP_DMA: u32 = 15218;
-pub const VIDIOC_OMAP3ISP_PRV_CFG: u32 = 3228587714;
-pub const GPIO_GET_LINEHANDLE_IOCTL: u32 = 3245126659;
-pub const VFAT_IOCTL_READDIR_BOTH: u32 = 2184212993;
-pub const NVME_IOCTL_ADMIN_CMD: u32 = 3225964097;
-pub const VHOST_SET_VRING_KICK: u32 = 1074310944;
-pub const BTRFS_IOC_SUBVOL_CREATE_V2: u32 = 1342215192;
-pub const BTRFS_IOC_SNAP_CREATE: u32 = 1342215169;
-pub const SONYPI_IOCGBAT2CAP: u32 = 2147644932;
-pub const PPNEGOT: u32 = 1074032785;
-pub const NBD_PRINT_DEBUG: u32 = 43782;
-pub const BTRFS_IOC_INO_LOOKUP_USER: u32 = 3489698878;
-pub const BTRFS_IOC_GET_SUBVOL_ROOTREF: u32 = 3489698877;
-pub const FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS: u32 = 3225445913;
-pub const BTRFS_IOC_FS_INFO: u32 = 2214630431;
-pub const VIDIOC_ENUM_FMT: u32 = 3225441794;
-pub const VIDIOC_G_INPUT: u32 = 2147767846;
-pub const VTPM_PROXY_IOC_NEW_DEV: u32 = 3222577408;
-pub const DFL_FPGA_FME_ERR_GET_IRQ_NUM: u32 = 2147792515;
-pub const ND_IOCTL_DIMM_FLAGS: u32 = 3221769731;
-pub const BTRFS_IOC_QUOTA_RESCAN: u32 = 1077974060;
-pub const MMTIMER_GETCOUNTER: u32 = 2148035849;
-pub const MATROXFB_GET_OUTPUT_MODE: u32 = 3221778170;
-pub const BTRFS_IOC_QUOTA_RESCAN_WAIT: u32 = 37934;
-pub const RIO_CM_CHAN_BIND: u32 = 1074291461;
-pub const HIDIOCGRDESC: u32 = 2416199682;
-pub const MGSL_IOCGIF: u32 = 27915;
-pub const VIDIOC_S_OUTPUT: u32 = 3221509679;
-pub const HIDIOCGREPORTINFO: u32 = 3222030345;
-pub const WDIOC_GETBOOTSTATUS: u32 = 2147768066;
-pub const VDUSE_VQ_GET_INFO: u32 = 3224404245;
-pub const ACRN_IOCTL_ASSIGN_PCIDEV: u32 = 1076142677;
-pub const BLKGETDISKSEQ: u32 = 2148012672;
-pub const ACRN_IOCTL_PM_GET_CPU_STATE: u32 = 3221791328;
-pub const ACRN_IOCTL_DESTROY_VM: u32 = 41489;
-pub const ACRN_IOCTL_SET_PTDEV_INTR: u32 = 1075094099;
-pub const ACRN_IOCTL_CREATE_IOREQ_CLIENT: u32 = 41522;
-pub const ACRN_IOCTL_IRQFD: u32 = 1075356273;
-pub const ACRN_IOCTL_CREATE_VM: u32 = 3224412688;
-pub const ACRN_IOCTL_INJECT_MSI: u32 = 1074831907;
-pub const ACRN_IOCTL_ATTACH_IOREQ_CLIENT: u32 = 41523;
-pub const ACRN_IOCTL_RESET_PTDEV_INTR: u32 = 1075094100;
-pub const ACRN_IOCTL_NOTIFY_REQUEST_FINISH: u32 = 1074307633;
-pub const ACRN_IOCTL_SET_IRQLINE: u32 = 1074307621;
-pub const ACRN_IOCTL_START_VM: u32 = 41490;
-pub const ACRN_IOCTL_SET_VCPU_REGS: u32 = 1093181974;
-pub const ACRN_IOCTL_SET_MEMSEG: u32 = 1075880513;
-pub const ACRN_IOCTL_PAUSE_VM: u32 = 41491;
-pub const ACRN_IOCTL_CLEAR_VM_IOREQ: u32 = 41525;
-pub const ACRN_IOCTL_UNSET_MEMSEG: u32 = 1075880514;
-pub const ACRN_IOCTL_IOEVENTFD: u32 = 1075880560;
-pub const ACRN_IOCTL_DEASSIGN_PCIDEV: u32 = 1076142678;
-pub const ACRN_IOCTL_RESET_VM: u32 = 41493;
-pub const ACRN_IOCTL_DESTROY_IOREQ_CLIENT: u32 = 41524;
-pub const ACRN_IOCTL_VM_INTR_MONITOR: u32 = 1074307620;
diff --git a/vendor/linux-raw-sys-0.3.2/src/x86_64/netlink.rs b/vendor/linux-raw-sys-0.3.2/src/x86_64/netlink.rs
deleted file mode 100644
index 6adbdc149..000000000
--- a/vendor/linux-raw-sys-0.3.2/src/x86_64/netlink.rs
+++ /dev/null
@@ -1,2861 +0,0 @@
-/* automatically generated by rust-bindgen 0.59.2 */
-
-#[repr(C)]
-#[derive(Default)]
-pub struct __IncompleteArrayField<T>(::core::marker::PhantomData<T>, [T; 0]);
-impl<T> __IncompleteArrayField<T> {
-#[inline]
-pub const fn new() -> Self {
-__IncompleteArrayField(::core::marker::PhantomData, [])
-}
-#[inline]
-pub fn as_ptr(&self) -> *const T {
-self as *const _ as *const T
-}
-#[inline]
-pub fn as_mut_ptr(&mut self) -> *mut T {
-self as *mut _ as *mut T
-}
-#[inline]
-pub unsafe fn as_slice(&self, len: usize) -> &[T] {
-::core::slice::from_raw_parts(self.as_ptr(), len)
-}
-#[inline]
-pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
-::core::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
-}
-}
-impl<T> ::core::fmt::Debug for __IncompleteArrayField<T> {
-fn fmt(&self, fmt: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
-fmt.write_str("__IncompleteArrayField")
-}
-}
-pub const LINUX_VERSION_CODE: u32 = 393728;
-pub const LINUX_VERSION_MAJOR: u32 = 6;
-pub const LINUX_VERSION_PATCHLEVEL: u32 = 2;
-pub const LINUX_VERSION_SUBLEVEL: u32 = 0;
-pub const _K_SS_MAXSIZE: u32 = 128;
-pub const SOCK_SNDBUF_LOCK: u32 = 1;
-pub const SOCK_RCVBUF_LOCK: u32 = 2;
-pub const SOCK_BUF_LOCK_MASK: u32 = 3;
-pub const SOCK_TXREHASH_DEFAULT: u32 = 255;
-pub const SOCK_TXREHASH_DISABLED: u32 = 0;
-pub const SOCK_TXREHASH_ENABLED: u32 = 1;
-pub const __BITS_PER_LONG: u32 = 64;
-pub const __FD_SETSIZE: u32 = 1024;
-pub const NETLINK_ROUTE: u32 = 0;
-pub const NETLINK_UNUSED: u32 = 1;
-pub const NETLINK_USERSOCK: u32 = 2;
-pub const NETLINK_FIREWALL: u32 = 3;
-pub const NETLINK_SOCK_DIAG: u32 = 4;
-pub const NETLINK_NFLOG: u32 = 5;
-pub const NETLINK_XFRM: u32 = 6;
-pub const NETLINK_SELINUX: u32 = 7;
-pub const NETLINK_ISCSI: u32 = 8;
-pub const NETLINK_AUDIT: u32 = 9;
-pub const NETLINK_FIB_LOOKUP: u32 = 10;
-pub const NETLINK_CONNECTOR: u32 = 11;
-pub const NETLINK_NETFILTER: u32 = 12;
-pub const NETLINK_IP6_FW: u32 = 13;
-pub const NETLINK_DNRTMSG: u32 = 14;
-pub const NETLINK_KOBJECT_UEVENT: u32 = 15;
-pub const NETLINK_GENERIC: u32 = 16;
-pub const NETLINK_SCSITRANSPORT: u32 = 18;
-pub const NETLINK_ECRYPTFS: u32 = 19;
-pub const NETLINK_RDMA: u32 = 20;
-pub const NETLINK_CRYPTO: u32 = 21;
-pub const NETLINK_SMC: u32 = 22;
-pub const NETLINK_INET_DIAG: u32 = 4;
-pub const MAX_LINKS: u32 = 32;
-pub const NLM_F_REQUEST: u32 = 1;
-pub const NLM_F_MULTI: u32 = 2;
-pub const NLM_F_ACK: u32 = 4;
-pub const NLM_F_ECHO: u32 = 8;
-pub const NLM_F_DUMP_INTR: u32 = 16;
-pub const NLM_F_DUMP_FILTERED: u32 = 32;
-pub const NLM_F_ROOT: u32 = 256;
-pub const NLM_F_MATCH: u32 = 512;
-pub const NLM_F_ATOMIC: u32 = 1024;
-pub const NLM_F_DUMP: u32 = 768;
-pub const NLM_F_REPLACE: u32 = 256;
-pub const NLM_F_EXCL: u32 = 512;
-pub const NLM_F_CREATE: u32 = 1024;
-pub const NLM_F_APPEND: u32 = 2048;
-pub const NLM_F_NONREC: u32 = 256;
-pub const NLM_F_BULK: u32 = 512;
-pub const NLM_F_CAPPED: u32 = 256;
-pub const NLM_F_ACK_TLVS: u32 = 512;
-pub const NLMSG_ALIGNTO: u32 = 4;
-pub const NLMSG_NOOP: u32 = 1;
-pub const NLMSG_ERROR: u32 = 2;
-pub const NLMSG_DONE: u32 = 3;
-pub const NLMSG_OVERRUN: u32 = 4;
-pub const NLMSG_MIN_TYPE: u32 = 16;
-pub const NETLINK_ADD_MEMBERSHIP: u32 = 1;
-pub const NETLINK_DROP_MEMBERSHIP: u32 = 2;
-pub const NETLINK_PKTINFO: u32 = 3;
-pub const NETLINK_BROADCAST_ERROR: u32 = 4;
-pub const NETLINK_NO_ENOBUFS: u32 = 5;
-pub const NETLINK_RX_RING: u32 = 6;
-pub const NETLINK_TX_RING: u32 = 7;
-pub const NETLINK_LISTEN_ALL_NSID: u32 = 8;
-pub const NETLINK_LIST_MEMBERSHIPS: u32 = 9;
-pub const NETLINK_CAP_ACK: u32 = 10;
-pub const NETLINK_EXT_ACK: u32 = 11;
-pub const NETLINK_GET_STRICT_CHK: u32 = 12;
-pub const NL_MMAP_MSG_ALIGNMENT: u32 = 4;
-pub const NET_MAJOR: u32 = 36;
-pub const NLA_F_NESTED: u32 = 32768;
-pub const NLA_F_NET_BYTEORDER: u32 = 16384;
-pub const NLA_TYPE_MASK: i32 = -49153;
-pub const NLA_ALIGNTO: u32 = 4;
-pub const MACVLAN_FLAG_NOPROMISC: u32 = 1;
-pub const MACVLAN_FLAG_NODST: u32 = 2;
-pub const IPVLAN_F_PRIVATE: u32 = 1;
-pub const IPVLAN_F_VEPA: u32 = 2;
-pub const TUNNEL_MSG_FLAG_STATS: u32 = 1;
-pub const TUNNEL_MSG_VALID_USER_FLAGS: u32 = 1;
-pub const MAX_VLAN_LIST_LEN: u32 = 1;
-pub const PORT_PROFILE_MAX: u32 = 40;
-pub const PORT_UUID_MAX: u32 = 16;
-pub const PORT_SELF_VF: i32 = -1;
-pub const XDP_FLAGS_UPDATE_IF_NOEXIST: u32 = 1;
-pub const XDP_FLAGS_SKB_MODE: u32 = 2;
-pub const XDP_FLAGS_DRV_MODE: u32 = 4;
-pub const XDP_FLAGS_HW_MODE: u32 = 8;
-pub const XDP_FLAGS_REPLACE: u32 = 16;
-pub const XDP_FLAGS_MODES: u32 = 14;
-pub const XDP_FLAGS_MASK: u32 = 31;
-pub const RMNET_FLAGS_INGRESS_DEAGGREGATION: u32 = 1;
-pub const RMNET_FLAGS_INGRESS_MAP_COMMANDS: u32 = 2;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV4: u32 = 4;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV4: u32 = 8;
-pub const RMNET_FLAGS_INGRESS_MAP_CKSUMV5: u32 = 16;
-pub const RMNET_FLAGS_EGRESS_MAP_CKSUMV5: u32 = 32;
-pub const IFA_F_SECONDARY: u32 = 1;
-pub const IFA_F_TEMPORARY: u32 = 1;
-pub const IFA_F_NODAD: u32 = 2;
-pub const IFA_F_OPTIMISTIC: u32 = 4;
-pub const IFA_F_DADFAILED: u32 = 8;
-pub const IFA_F_HOMEADDRESS: u32 = 16;
-pub const IFA_F_DEPRECATED: u32 = 32;
-pub const IFA_F_TENTATIVE: u32 = 64;
-pub const IFA_F_PERMANENT: u32 = 128;
-pub const IFA_F_MANAGETEMPADDR: u32 = 256;
-pub const IFA_F_NOPREFIXROUTE: u32 = 512;
-pub const IFA_F_MCAUTOJOIN: u32 = 1024;
-pub const IFA_F_STABLE_PRIVACY: u32 = 2048;
-pub const IFAPROT_UNSPEC: u32 = 0;
-pub const IFAPROT_KERNEL_LO: u32 = 1;
-pub const IFAPROT_KERNEL_RA: u32 = 2;
-pub const IFAPROT_KERNEL_LL: u32 = 3;
-pub const NTF_USE: u32 = 1;
-pub const NTF_SELF: u32 = 2;
-pub const NTF_MASTER: u32 = 4;
-pub const NTF_PROXY: u32 = 8;
-pub const NTF_EXT_LEARNED: u32 = 16;
-pub const NTF_OFFLOADED: u32 = 32;
-pub const NTF_STICKY: u32 = 64;
-pub const NTF_ROUTER: u32 = 128;
-pub const NTF_EXT_MANAGED: u32 = 1;
-pub const NTF_EXT_LOCKED: u32 = 2;
-pub const NUD_INCOMPLETE: u32 = 1;
-pub const NUD_REACHABLE: u32 = 2;
-pub const NUD_STALE: u32 = 4;
-pub const NUD_DELAY: u32 = 8;
-pub const NUD_PROBE: u32 = 16;
-pub const NUD_FAILED: u32 = 32;
-pub const NUD_NOARP: u32 = 64;
-pub const NUD_PERMANENT: u32 = 128;
-pub const NUD_NONE: u32 = 0;
-pub const RTNL_FAMILY_IPMR: u32 = 128;
-pub const RTNL_FAMILY_IP6MR: u32 = 129;
-pub const RTNL_FAMILY_MAX: u32 = 129;
-pub const RTA_ALIGNTO: u32 = 4;
-pub const RTPROT_UNSPEC: u32 = 0;
-pub const RTPROT_REDIRECT: u32 = 1;
-pub const RTPROT_KERNEL: u32 = 2;
-pub const RTPROT_BOOT: u32 = 3;
-pub const RTPROT_STATIC: u32 = 4;
-pub const RTPROT_GATED: u32 = 8;
-pub const RTPROT_RA: u32 = 9;
-pub const RTPROT_MRT: u32 = 10;
-pub const RTPROT_ZEBRA: u32 = 11;
-pub const RTPROT_BIRD: u32 = 12;
-pub const RTPROT_DNROUTED: u32 = 13;
-pub const RTPROT_XORP: u32 = 14;
-pub const RTPROT_NTK: u32 = 15;
-pub const RTPROT_DHCP: u32 = 16;
-pub const RTPROT_MROUTED: u32 = 17;
-pub const RTPROT_KEEPALIVED: u32 = 18;
-pub const RTPROT_BABEL: u32 = 42;
-pub const RTPROT_OPENR: u32 = 99;
-pub const RTPROT_BGP: u32 = 186;
-pub const RTPROT_ISIS: u32 = 187;
-pub const RTPROT_OSPF: u32 = 188;
-pub const RTPROT_RIP: u32 = 189;
-pub const RTPROT_EIGRP: u32 = 192;
-pub const RTM_F_NOTIFY: u32 = 256;
-pub const RTM_F_CLONED: u32 = 512;
-pub const RTM_F_EQUALIZE: u32 = 1024;
-pub const RTM_F_PREFIX: u32 = 2048;
-pub const RTM_F_LOOKUP_TABLE: u32 = 4096;
-pub const RTM_F_FIB_MATCH: u32 = 8192;
-pub const RTM_F_OFFLOAD: u32 = 16384;
-pub const RTM_F_TRAP: u32 = 32768;
-pub const RTM_F_OFFLOAD_FAILED: u32 = 536870912;
-pub const RTNH_F_DEAD: u32 = 1;
-pub const RTNH_F_PERVASIVE: u32 = 2;
-pub const RTNH_F_ONLINK: u32 = 4;
-pub const RTNH_F_OFFLOAD: u32 = 8;
-pub const RTNH_F_LINKDOWN: u32 = 16;
-pub const RTNH_F_UNRESOLVED: u32 = 32;
-pub const RTNH_F_TRAP: u32 = 64;
-pub const RTNH_COMPARE_MASK: u32 = 89;
-pub const RTNH_ALIGNTO: u32 = 4;
-pub const RTNETLINK_HAVE_PEERINFO: u32 = 1;
-pub const RTAX_FEATURE_ECN: u32 = 1;
-pub const RTAX_FEATURE_SACK: u32 = 2;
-pub const RTAX_FEATURE_TIMESTAMP: u32 = 4;
-pub const RTAX_FEATURE_ALLFRAG: u32 = 8;
-pub const RTAX_FEATURE_MASK: u32 = 15;
-pub const TCM_IFINDEX_MAGIC_BLOCK: u32 = 4294967295;
-pub const TCA_DUMP_FLAGS_TERSE: u32 = 1;
-pub const RTMGRP_LINK: u32 = 1;
-pub const RTMGRP_NOTIFY: u32 = 2;
-pub const RTMGRP_NEIGH: u32 = 4;
-pub const RTMGRP_TC: u32 = 8;
-pub const RTMGRP_IPV4_IFADDR: u32 = 16;
-pub const RTMGRP_IPV4_MROUTE: u32 = 32;
-pub const RTMGRP_IPV4_ROUTE: u32 = 64;
-pub const RTMGRP_IPV4_RULE: u32 = 128;
-pub const RTMGRP_IPV6_IFADDR: u32 = 256;
-pub const RTMGRP_IPV6_MROUTE: u32 = 512;
-pub const RTMGRP_IPV6_ROUTE: u32 = 1024;
-pub const RTMGRP_IPV6_IFINFO: u32 = 2048;
-pub const RTMGRP_DECnet_IFADDR: u32 = 4096;
-pub const RTMGRP_DECnet_ROUTE: u32 = 16384;
-pub const RTMGRP_IPV6_PREFIX: u32 = 131072;
-pub const TCA_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_LARGE_DUMP_ON: u32 = 1;
-pub const TCA_ACT_FLAG_TERSE_DUMP: u32 = 2;
-pub const RTEXT_FILTER_VF: u32 = 1;
-pub const RTEXT_FILTER_BRVLAN: u32 = 2;
-pub const RTEXT_FILTER_BRVLAN_COMPRESSED: u32 = 4;
-pub const RTEXT_FILTER_SKIP_STATS: u32 = 8;
-pub const RTEXT_FILTER_MRP: u32 = 16;
-pub const RTEXT_FILTER_CFM_CONFIG: u32 = 32;
-pub const RTEXT_FILTER_CFM_STATUS: u32 = 64;
-pub const RTEXT_FILTER_MST: u32 = 128;
-pub type size_t = crate::ctypes::c_ulong;
-pub type ssize_t = crate::ctypes::c_long;
-pub type __kernel_sa_family_t = crate::ctypes::c_ushort;
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct __kernel_sockaddr_storage {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union __kernel_sockaddr_storage__bindgen_ty_1 {
-pub __bindgen_anon_1: __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1,
-pub __align: *mut crate::ctypes::c_void,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
-pub ss_family: __kernel_sa_family_t,
-pub __data: [crate::ctypes::c_char; 126usize],
-}
-pub type __s8 = crate::ctypes::c_schar;
-pub type __u8 = crate::ctypes::c_uchar;
-pub type __s16 = crate::ctypes::c_short;
-pub type __u16 = crate::ctypes::c_ushort;
-pub type __s32 = crate::ctypes::c_int;
-pub type __u32 = crate::ctypes::c_uint;
-pub type __s64 = crate::ctypes::c_longlong;
-pub type __u64 = crate::ctypes::c_ulonglong;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fd_set {
-pub fds_bits: [crate::ctypes::c_ulong; 16usize],
-}
-pub type __kernel_sighandler_t = ::core::option::Option<unsafe extern "C" fn(arg1: crate::ctypes::c_int)>;
-pub type __kernel_key_t = crate::ctypes::c_int;
-pub type __kernel_mqd_t = crate::ctypes::c_int;
-pub type __kernel_old_uid_t = crate::ctypes::c_ushort;
-pub type __kernel_old_gid_t = crate::ctypes::c_ushort;
-pub type __kernel_old_dev_t = crate::ctypes::c_ulong;
-pub type __kernel_long_t = crate::ctypes::c_long;
-pub type __kernel_ulong_t = crate::ctypes::c_ulong;
-pub type __kernel_ino_t = __kernel_ulong_t;
-pub type __kernel_mode_t = crate::ctypes::c_uint;
-pub type __kernel_pid_t = crate::ctypes::c_int;
-pub type __kernel_ipc_pid_t = crate::ctypes::c_int;
-pub type __kernel_uid_t = crate::ctypes::c_uint;
-pub type __kernel_gid_t = crate::ctypes::c_uint;
-pub type __kernel_suseconds_t = __kernel_long_t;
-pub type __kernel_daddr_t = crate::ctypes::c_int;
-pub type __kernel_uid32_t = crate::ctypes::c_uint;
-pub type __kernel_gid32_t = crate::ctypes::c_uint;
-pub type __kernel_size_t = __kernel_ulong_t;
-pub type __kernel_ssize_t = __kernel_long_t;
-pub type __kernel_ptrdiff_t = __kernel_long_t;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct __kernel_fsid_t {
-pub val: [crate::ctypes::c_int; 2usize],
-}
-pub type __kernel_off_t = __kernel_long_t;
-pub type __kernel_loff_t = crate::ctypes::c_longlong;
-pub type __kernel_old_time_t = __kernel_long_t;
-pub type __kernel_time_t = __kernel_long_t;
-pub type __kernel_time64_t = crate::ctypes::c_longlong;
-pub type __kernel_clock_t = __kernel_long_t;
-pub type __kernel_timer_t = crate::ctypes::c_int;
-pub type __kernel_clockid_t = crate::ctypes::c_int;
-pub type __kernel_caddr_t = *mut crate::ctypes::c_char;
-pub type __kernel_uid16_t = crate::ctypes::c_ushort;
-pub type __kernel_gid16_t = crate::ctypes::c_ushort;
-pub type __le16 = __u16;
-pub type __be16 = __u16;
-pub type __le32 = __u32;
-pub type __be32 = __u32;
-pub type __le64 = __u64;
-pub type __be64 = __u64;
-pub type __sum16 = __u16;
-pub type __wsum = __u32;
-pub type __poll_t = crate::ctypes::c_uint;
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct sockaddr_nl {
-pub nl_family: __kernel_sa_family_t,
-pub nl_pad: crate::ctypes::c_ushort,
-pub nl_pid: __u32,
-pub nl_groups: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsghdr {
-pub nlmsg_len: __u32,
-pub nlmsg_type: __u16,
-pub nlmsg_flags: __u16,
-pub nlmsg_seq: __u32,
-pub nlmsg_pid: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlmsgerr {
-pub error: crate::ctypes::c_int,
-pub msg: nlmsghdr,
-}
-impl nlmsgerr_attrs {
-pub const NLMSGERR_ATTR_MAX: nlmsgerr_attrs = nlmsgerr_attrs::NLMSGERR_ATTR_MISS_NEST;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nlmsgerr_attrs {
-NLMSGERR_ATTR_UNUSED = 0,
-NLMSGERR_ATTR_MSG = 1,
-NLMSGERR_ATTR_OFFS = 2,
-NLMSGERR_ATTR_COOKIE = 3,
-NLMSGERR_ATTR_POLICY = 4,
-NLMSGERR_ATTR_MISS_TYPE = 5,
-NLMSGERR_ATTR_MISS_NEST = 6,
-__NLMSGERR_ATTR_MAX = 7,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_pktinfo {
-pub group: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_req {
-pub nm_block_size: crate::ctypes::c_uint,
-pub nm_block_nr: crate::ctypes::c_uint,
-pub nm_frame_size: crate::ctypes::c_uint,
-pub nm_frame_nr: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nl_mmap_hdr {
-pub nm_status: crate::ctypes::c_uint,
-pub nm_len: crate::ctypes::c_uint,
-pub nm_group: __u32,
-pub nm_pid: __u32,
-pub nm_uid: __u32,
-pub nm_gid: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum nl_mmap_status {
-NL_MMAP_STATUS_UNUSED = 0,
-NL_MMAP_STATUS_RESERVED = 1,
-NL_MMAP_STATUS_VALID = 2,
-NL_MMAP_STATUS_COPY = 3,
-NL_MMAP_STATUS_SKIP = 4,
-}
-pub const NETLINK_UNCONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_UNCONNECTED;
-pub const NETLINK_CONNECTED: _bindgen_ty_1 = _bindgen_ty_1::NETLINK_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_1 {
-NETLINK_UNCONNECTED = 0,
-NETLINK_CONNECTED = 1,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nlattr {
-pub nla_len: __u16,
-pub nla_type: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nla_bitfield32 {
-pub value: __u32,
-pub selector: __u32,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_attribute_type {
-NL_ATTR_TYPE_INVALID = 0,
-NL_ATTR_TYPE_FLAG = 1,
-NL_ATTR_TYPE_U8 = 2,
-NL_ATTR_TYPE_U16 = 3,
-NL_ATTR_TYPE_U32 = 4,
-NL_ATTR_TYPE_U64 = 5,
-NL_ATTR_TYPE_S8 = 6,
-NL_ATTR_TYPE_S16 = 7,
-NL_ATTR_TYPE_S32 = 8,
-NL_ATTR_TYPE_S64 = 9,
-NL_ATTR_TYPE_BINARY = 10,
-NL_ATTR_TYPE_STRING = 11,
-NL_ATTR_TYPE_NUL_STRING = 12,
-NL_ATTR_TYPE_NESTED = 13,
-NL_ATTR_TYPE_NESTED_ARRAY = 14,
-NL_ATTR_TYPE_BITFIELD32 = 15,
-}
-impl netlink_policy_type_attr {
-pub const NL_POLICY_TYPE_ATTR_MAX: netlink_policy_type_attr = netlink_policy_type_attr::NL_POLICY_TYPE_ATTR_MASK;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum netlink_policy_type_attr {
-NL_POLICY_TYPE_ATTR_UNSPEC = 0,
-NL_POLICY_TYPE_ATTR_TYPE = 1,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_S = 2,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_S = 3,
-NL_POLICY_TYPE_ATTR_MIN_VALUE_U = 4,
-NL_POLICY_TYPE_ATTR_MAX_VALUE_U = 5,
-NL_POLICY_TYPE_ATTR_MIN_LENGTH = 6,
-NL_POLICY_TYPE_ATTR_MAX_LENGTH = 7,
-NL_POLICY_TYPE_ATTR_POLICY_IDX = 8,
-NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE = 9,
-NL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 10,
-NL_POLICY_TYPE_ATTR_PAD = 11,
-NL_POLICY_TYPE_ATTR_MASK = 12,
-__NL_POLICY_TYPE_ATTR_MAX = 13,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats {
-pub rx_packets: __u32,
-pub tx_packets: __u32,
-pub rx_bytes: __u32,
-pub tx_bytes: __u32,
-pub rx_errors: __u32,
-pub tx_errors: __u32,
-pub rx_dropped: __u32,
-pub tx_dropped: __u32,
-pub multicast: __u32,
-pub collisions: __u32,
-pub rx_length_errors: __u32,
-pub rx_over_errors: __u32,
-pub rx_crc_errors: __u32,
-pub rx_frame_errors: __u32,
-pub rx_fifo_errors: __u32,
-pub rx_missed_errors: __u32,
-pub tx_aborted_errors: __u32,
-pub tx_carrier_errors: __u32,
-pub tx_fifo_errors: __u32,
-pub tx_heartbeat_errors: __u32,
-pub tx_window_errors: __u32,
-pub rx_compressed: __u32,
-pub tx_compressed: __u32,
-pub rx_nohandler: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-pub collisions: __u64,
-pub rx_length_errors: __u64,
-pub rx_over_errors: __u64,
-pub rx_crc_errors: __u64,
-pub rx_frame_errors: __u64,
-pub rx_fifo_errors: __u64,
-pub rx_missed_errors: __u64,
-pub tx_aborted_errors: __u64,
-pub tx_carrier_errors: __u64,
-pub tx_fifo_errors: __u64,
-pub tx_heartbeat_errors: __u64,
-pub tx_window_errors: __u64,
-pub rx_compressed: __u64,
-pub tx_compressed: __u64,
-pub rx_nohandler: __u64,
-pub rx_otherhost_dropped: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_hw_stats64 {
-pub rx_packets: __u64,
-pub tx_packets: __u64,
-pub rx_bytes: __u64,
-pub tx_bytes: __u64,
-pub rx_errors: __u64,
-pub tx_errors: __u64,
-pub rx_dropped: __u64,
-pub tx_dropped: __u64,
-pub multicast: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnl_link_ifmap {
-pub mem_start: __u64,
-pub mem_end: __u64,
-pub base_addr: __u64,
-pub irq: __u16,
-pub dma: __u8,
-pub port: __u8,
-}
-pub const IFLA_UNSPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_UNSPEC;
-pub const IFLA_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ADDRESS;
-pub const IFLA_BROADCAST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_BROADCAST;
-pub const IFLA_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFNAME;
-pub const IFLA_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MTU;
-pub const IFLA_LINK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK;
-pub const IFLA_QDISC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_QDISC;
-pub const IFLA_STATS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS;
-pub const IFLA_COST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_COST;
-pub const IFLA_PRIORITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PRIORITY;
-pub const IFLA_MASTER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MASTER;
-pub const IFLA_WIRELESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WIRELESS;
-pub const IFLA_PROTINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTINFO;
-pub const IFLA_TXQLEN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TXQLEN;
-pub const IFLA_MAP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAP;
-pub const IFLA_WEIGHT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_WEIGHT;
-pub const IFLA_OPERSTATE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_OPERSTATE;
-pub const IFLA_LINKMODE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKMODE;
-pub const IFLA_LINKINFO: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINKINFO;
-pub const IFLA_NET_NS_PID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_PID;
-pub const IFLA_IFALIAS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IFALIAS;
-pub const IFLA_NUM_VF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_VF;
-pub const IFLA_VFINFO_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VFINFO_LIST;
-pub const IFLA_STATS64: _bindgen_ty_2 = _bindgen_ty_2::IFLA_STATS64;
-pub const IFLA_VF_PORTS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_VF_PORTS;
-pub const IFLA_PORT_SELF: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PORT_SELF;
-pub const IFLA_AF_SPEC: _bindgen_ty_2 = _bindgen_ty_2::IFLA_AF_SPEC;
-pub const IFLA_GROUP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GROUP;
-pub const IFLA_NET_NS_FD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NET_NS_FD;
-pub const IFLA_EXT_MASK: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EXT_MASK;
-pub const IFLA_PROMISCUITY: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROMISCUITY;
-pub const IFLA_NUM_TX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_TX_QUEUES;
-pub const IFLA_NUM_RX_QUEUES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NUM_RX_QUEUES;
-pub const IFLA_CARRIER: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER;
-pub const IFLA_PHYS_PORT_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_ID;
-pub const IFLA_CARRIER_CHANGES: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_CHANGES;
-pub const IFLA_PHYS_SWITCH_ID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_SWITCH_ID;
-pub const IFLA_LINK_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_LINK_NETNSID;
-pub const IFLA_PHYS_PORT_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PHYS_PORT_NAME;
-pub const IFLA_PROTO_DOWN: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN;
-pub const IFLA_GSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SEGS;
-pub const IFLA_GSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GSO_MAX_SIZE;
-pub const IFLA_PAD: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PAD;
-pub const IFLA_XDP: _bindgen_ty_2 = _bindgen_ty_2::IFLA_XDP;
-pub const IFLA_EVENT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_EVENT;
-pub const IFLA_NEW_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_NETNSID;
-pub const IFLA_IF_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_TARGET_NETNSID: _bindgen_ty_2 = _bindgen_ty_2::IFLA_IF_NETNSID;
-pub const IFLA_CARRIER_UP_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_UP_COUNT;
-pub const IFLA_CARRIER_DOWN_COUNT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_CARRIER_DOWN_COUNT;
-pub const IFLA_NEW_IFINDEX: _bindgen_ty_2 = _bindgen_ty_2::IFLA_NEW_IFINDEX;
-pub const IFLA_MIN_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MIN_MTU;
-pub const IFLA_MAX_MTU: _bindgen_ty_2 = _bindgen_ty_2::IFLA_MAX_MTU;
-pub const IFLA_PROP_LIST: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROP_LIST;
-pub const IFLA_ALT_IFNAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALT_IFNAME;
-pub const IFLA_PERM_ADDRESS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PERM_ADDRESS;
-pub const IFLA_PROTO_DOWN_REASON: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PROTO_DOWN_REASON;
-pub const IFLA_PARENT_DEV_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_NAME;
-pub const IFLA_PARENT_DEV_BUS_NAME: _bindgen_ty_2 = _bindgen_ty_2::IFLA_PARENT_DEV_BUS_NAME;
-pub const IFLA_GRO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_GRO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SIZE: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SIZE;
-pub const IFLA_TSO_MAX_SEGS: _bindgen_ty_2 = _bindgen_ty_2::IFLA_TSO_MAX_SEGS;
-pub const IFLA_ALLMULTI: _bindgen_ty_2 = _bindgen_ty_2::IFLA_ALLMULTI;
-pub const IFLA_DEVLINK_PORT: _bindgen_ty_2 = _bindgen_ty_2::IFLA_DEVLINK_PORT;
-pub const __IFLA_MAX: _bindgen_ty_2 = _bindgen_ty_2::__IFLA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_2 {
-IFLA_UNSPEC = 0,
-IFLA_ADDRESS = 1,
-IFLA_BROADCAST = 2,
-IFLA_IFNAME = 3,
-IFLA_MTU = 4,
-IFLA_LINK = 5,
-IFLA_QDISC = 6,
-IFLA_STATS = 7,
-IFLA_COST = 8,
-IFLA_PRIORITY = 9,
-IFLA_MASTER = 10,
-IFLA_WIRELESS = 11,
-IFLA_PROTINFO = 12,
-IFLA_TXQLEN = 13,
-IFLA_MAP = 14,
-IFLA_WEIGHT = 15,
-IFLA_OPERSTATE = 16,
-IFLA_LINKMODE = 17,
-IFLA_LINKINFO = 18,
-IFLA_NET_NS_PID = 19,
-IFLA_IFALIAS = 20,
-IFLA_NUM_VF = 21,
-IFLA_VFINFO_LIST = 22,
-IFLA_STATS64 = 23,
-IFLA_VF_PORTS = 24,
-IFLA_PORT_SELF = 25,
-IFLA_AF_SPEC = 26,
-IFLA_GROUP = 27,
-IFLA_NET_NS_FD = 28,
-IFLA_EXT_MASK = 29,
-IFLA_PROMISCUITY = 30,
-IFLA_NUM_TX_QUEUES = 31,
-IFLA_NUM_RX_QUEUES = 32,
-IFLA_CARRIER = 33,
-IFLA_PHYS_PORT_ID = 34,
-IFLA_CARRIER_CHANGES = 35,
-IFLA_PHYS_SWITCH_ID = 36,
-IFLA_LINK_NETNSID = 37,
-IFLA_PHYS_PORT_NAME = 38,
-IFLA_PROTO_DOWN = 39,
-IFLA_GSO_MAX_SEGS = 40,
-IFLA_GSO_MAX_SIZE = 41,
-IFLA_PAD = 42,
-IFLA_XDP = 43,
-IFLA_EVENT = 44,
-IFLA_NEW_NETNSID = 45,
-IFLA_IF_NETNSID = 46,
-IFLA_CARRIER_UP_COUNT = 47,
-IFLA_CARRIER_DOWN_COUNT = 48,
-IFLA_NEW_IFINDEX = 49,
-IFLA_MIN_MTU = 50,
-IFLA_MAX_MTU = 51,
-IFLA_PROP_LIST = 52,
-IFLA_ALT_IFNAME = 53,
-IFLA_PERM_ADDRESS = 54,
-IFLA_PROTO_DOWN_REASON = 55,
-IFLA_PARENT_DEV_NAME = 56,
-IFLA_PARENT_DEV_BUS_NAME = 57,
-IFLA_GRO_MAX_SIZE = 58,
-IFLA_TSO_MAX_SIZE = 59,
-IFLA_TSO_MAX_SEGS = 60,
-IFLA_ALLMULTI = 61,
-IFLA_DEVLINK_PORT = 62,
-__IFLA_MAX = 63,
-}
-pub const IFLA_PROTO_DOWN_REASON_UNSPEC: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_UNSPEC;
-pub const IFLA_PROTO_DOWN_REASON_MASK: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_MASK;
-pub const IFLA_PROTO_DOWN_REASON_VALUE: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-pub const __IFLA_PROTO_DOWN_REASON_CNT: _bindgen_ty_3 = _bindgen_ty_3::__IFLA_PROTO_DOWN_REASON_CNT;
-pub const IFLA_PROTO_DOWN_REASON_MAX: _bindgen_ty_3 = _bindgen_ty_3::IFLA_PROTO_DOWN_REASON_VALUE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_3 {
-IFLA_PROTO_DOWN_REASON_UNSPEC = 0,
-IFLA_PROTO_DOWN_REASON_MASK = 1,
-IFLA_PROTO_DOWN_REASON_VALUE = 2,
-__IFLA_PROTO_DOWN_REASON_CNT = 3,
-}
-pub const IFLA_INET_UNSPEC: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_UNSPEC;
-pub const IFLA_INET_CONF: _bindgen_ty_4 = _bindgen_ty_4::IFLA_INET_CONF;
-pub const __IFLA_INET_MAX: _bindgen_ty_4 = _bindgen_ty_4::__IFLA_INET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_4 {
-IFLA_INET_UNSPEC = 0,
-IFLA_INET_CONF = 1,
-__IFLA_INET_MAX = 2,
-}
-pub const IFLA_INET6_UNSPEC: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_UNSPEC;
-pub const IFLA_INET6_FLAGS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_FLAGS;
-pub const IFLA_INET6_CONF: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CONF;
-pub const IFLA_INET6_STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_STATS;
-pub const IFLA_INET6_MCAST: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_MCAST;
-pub const IFLA_INET6_CACHEINFO: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_CACHEINFO;
-pub const IFLA_INET6_ICMP6STATS: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ICMP6STATS;
-pub const IFLA_INET6_TOKEN: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_TOKEN;
-pub const IFLA_INET6_ADDR_GEN_MODE: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_ADDR_GEN_MODE;
-pub const IFLA_INET6_RA_MTU: _bindgen_ty_5 = _bindgen_ty_5::IFLA_INET6_RA_MTU;
-pub const __IFLA_INET6_MAX: _bindgen_ty_5 = _bindgen_ty_5::__IFLA_INET6_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_5 {
-IFLA_INET6_UNSPEC = 0,
-IFLA_INET6_FLAGS = 1,
-IFLA_INET6_CONF = 2,
-IFLA_INET6_STATS = 3,
-IFLA_INET6_MCAST = 4,
-IFLA_INET6_CACHEINFO = 5,
-IFLA_INET6_ICMP6STATS = 6,
-IFLA_INET6_TOKEN = 7,
-IFLA_INET6_ADDR_GEN_MODE = 8,
-IFLA_INET6_RA_MTU = 9,
-__IFLA_INET6_MAX = 10,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum in6_addr_gen_mode {
-IN6_ADDR_GEN_MODE_EUI64 = 0,
-IN6_ADDR_GEN_MODE_NONE = 1,
-IN6_ADDR_GEN_MODE_STABLE_PRIVACY = 2,
-IN6_ADDR_GEN_MODE_RANDOM = 3,
-}
-pub const IFLA_BR_UNSPEC: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_UNSPEC;
-pub const IFLA_BR_FORWARD_DELAY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FORWARD_DELAY;
-pub const IFLA_BR_HELLO_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIME;
-pub const IFLA_BR_MAX_AGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MAX_AGE;
-pub const IFLA_BR_AGEING_TIME: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_AGEING_TIME;
-pub const IFLA_BR_STP_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_STP_STATE;
-pub const IFLA_BR_PRIORITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PRIORITY;
-pub const IFLA_BR_VLAN_FILTERING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_FILTERING;
-pub const IFLA_BR_VLAN_PROTOCOL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_PROTOCOL;
-pub const IFLA_BR_GROUP_FWD_MASK: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_FWD_MASK;
-pub const IFLA_BR_ROOT_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_ID;
-pub const IFLA_BR_BRIDGE_ID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_BRIDGE_ID;
-pub const IFLA_BR_ROOT_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PORT;
-pub const IFLA_BR_ROOT_PATH_COST: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_ROOT_PATH_COST;
-pub const IFLA_BR_TOPOLOGY_CHANGE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE;
-pub const IFLA_BR_TOPOLOGY_CHANGE_DETECTED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_DETECTED;
-pub const IFLA_BR_HELLO_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_HELLO_TIMER;
-pub const IFLA_BR_TCN_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TCN_TIMER;
-pub const IFLA_BR_TOPOLOGY_CHANGE_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_TOPOLOGY_CHANGE_TIMER;
-pub const IFLA_BR_GC_TIMER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GC_TIMER;
-pub const IFLA_BR_GROUP_ADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_GROUP_ADDR;
-pub const IFLA_BR_FDB_FLUSH: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_FDB_FLUSH;
-pub const IFLA_BR_MCAST_ROUTER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_ROUTER;
-pub const IFLA_BR_MCAST_SNOOPING: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_SNOOPING;
-pub const IFLA_BR_MCAST_QUERY_USE_IFADDR: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_USE_IFADDR;
-pub const IFLA_BR_MCAST_QUERIER: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER;
-pub const IFLA_BR_MCAST_HASH_ELASTICITY: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_ELASTICITY;
-pub const IFLA_BR_MCAST_HASH_MAX: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_HASH_MAX;
-pub const IFLA_BR_MCAST_LAST_MEMBER_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_CNT;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_CNT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_CNT;
-pub const IFLA_BR_MCAST_LAST_MEMBER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_LAST_MEMBER_INTVL;
-pub const IFLA_BR_MCAST_MEMBERSHIP_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MEMBERSHIP_INTVL;
-pub const IFLA_BR_MCAST_QUERIER_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_INTVL;
-pub const IFLA_BR_MCAST_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_INTVL;
-pub const IFLA_BR_MCAST_QUERY_RESPONSE_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERY_RESPONSE_INTVL;
-pub const IFLA_BR_MCAST_STARTUP_QUERY_INTVL: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STARTUP_QUERY_INTVL;
-pub const IFLA_BR_NF_CALL_IPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IPTABLES;
-pub const IFLA_BR_NF_CALL_IP6TABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_IP6TABLES;
-pub const IFLA_BR_NF_CALL_ARPTABLES: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_NF_CALL_ARPTABLES;
-pub const IFLA_BR_VLAN_DEFAULT_PVID: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_DEFAULT_PVID;
-pub const IFLA_BR_PAD: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_PAD;
-pub const IFLA_BR_VLAN_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_ENABLED;
-pub const IFLA_BR_MCAST_STATS_ENABLED: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_STATS_ENABLED;
-pub const IFLA_BR_MCAST_IGMP_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_IGMP_VERSION;
-pub const IFLA_BR_MCAST_MLD_VERSION: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_MLD_VERSION;
-pub const IFLA_BR_VLAN_STATS_PER_PORT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_VLAN_STATS_PER_PORT;
-pub const IFLA_BR_MULTI_BOOLOPT: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MULTI_BOOLOPT;
-pub const IFLA_BR_MCAST_QUERIER_STATE: _bindgen_ty_6 = _bindgen_ty_6::IFLA_BR_MCAST_QUERIER_STATE;
-pub const __IFLA_BR_MAX: _bindgen_ty_6 = _bindgen_ty_6::__IFLA_BR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_6 {
-IFLA_BR_UNSPEC = 0,
-IFLA_BR_FORWARD_DELAY = 1,
-IFLA_BR_HELLO_TIME = 2,
-IFLA_BR_MAX_AGE = 3,
-IFLA_BR_AGEING_TIME = 4,
-IFLA_BR_STP_STATE = 5,
-IFLA_BR_PRIORITY = 6,
-IFLA_BR_VLAN_FILTERING = 7,
-IFLA_BR_VLAN_PROTOCOL = 8,
-IFLA_BR_GROUP_FWD_MASK = 9,
-IFLA_BR_ROOT_ID = 10,
-IFLA_BR_BRIDGE_ID = 11,
-IFLA_BR_ROOT_PORT = 12,
-IFLA_BR_ROOT_PATH_COST = 13,
-IFLA_BR_TOPOLOGY_CHANGE = 14,
-IFLA_BR_TOPOLOGY_CHANGE_DETECTED = 15,
-IFLA_BR_HELLO_TIMER = 16,
-IFLA_BR_TCN_TIMER = 17,
-IFLA_BR_TOPOLOGY_CHANGE_TIMER = 18,
-IFLA_BR_GC_TIMER = 19,
-IFLA_BR_GROUP_ADDR = 20,
-IFLA_BR_FDB_FLUSH = 21,
-IFLA_BR_MCAST_ROUTER = 22,
-IFLA_BR_MCAST_SNOOPING = 23,
-IFLA_BR_MCAST_QUERY_USE_IFADDR = 24,
-IFLA_BR_MCAST_QUERIER = 25,
-IFLA_BR_MCAST_HASH_ELASTICITY = 26,
-IFLA_BR_MCAST_HASH_MAX = 27,
-IFLA_BR_MCAST_LAST_MEMBER_CNT = 28,
-IFLA_BR_MCAST_STARTUP_QUERY_CNT = 29,
-IFLA_BR_MCAST_LAST_MEMBER_INTVL = 30,
-IFLA_BR_MCAST_MEMBERSHIP_INTVL = 31,
-IFLA_BR_MCAST_QUERIER_INTVL = 32,
-IFLA_BR_MCAST_QUERY_INTVL = 33,
-IFLA_BR_MCAST_QUERY_RESPONSE_INTVL = 34,
-IFLA_BR_MCAST_STARTUP_QUERY_INTVL = 35,
-IFLA_BR_NF_CALL_IPTABLES = 36,
-IFLA_BR_NF_CALL_IP6TABLES = 37,
-IFLA_BR_NF_CALL_ARPTABLES = 38,
-IFLA_BR_VLAN_DEFAULT_PVID = 39,
-IFLA_BR_PAD = 40,
-IFLA_BR_VLAN_STATS_ENABLED = 41,
-IFLA_BR_MCAST_STATS_ENABLED = 42,
-IFLA_BR_MCAST_IGMP_VERSION = 43,
-IFLA_BR_MCAST_MLD_VERSION = 44,
-IFLA_BR_VLAN_STATS_PER_PORT = 45,
-IFLA_BR_MULTI_BOOLOPT = 46,
-IFLA_BR_MCAST_QUERIER_STATE = 47,
-__IFLA_BR_MAX = 48,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_bridge_id {
-pub prio: [__u8; 2usize],
-pub addr: [__u8; 6usize],
-}
-pub const BRIDGE_MODE_UNSPEC: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_UNSPEC;
-pub const BRIDGE_MODE_HAIRPIN: _bindgen_ty_7 = _bindgen_ty_7::BRIDGE_MODE_HAIRPIN;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_7 {
-BRIDGE_MODE_UNSPEC = 0,
-BRIDGE_MODE_HAIRPIN = 1,
-}
-pub const IFLA_BRPORT_UNSPEC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNSPEC;
-pub const IFLA_BRPORT_STATE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_STATE;
-pub const IFLA_BRPORT_PRIORITY: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PRIORITY;
-pub const IFLA_BRPORT_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_COST;
-pub const IFLA_BRPORT_MODE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MODE;
-pub const IFLA_BRPORT_GUARD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GUARD;
-pub const IFLA_BRPORT_PROTECT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROTECT;
-pub const IFLA_BRPORT_FAST_LEAVE: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FAST_LEAVE;
-pub const IFLA_BRPORT_LEARNING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING;
-pub const IFLA_BRPORT_UNICAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_UNICAST_FLOOD;
-pub const IFLA_BRPORT_PROXYARP: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP;
-pub const IFLA_BRPORT_LEARNING_SYNC: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LEARNING_SYNC;
-pub const IFLA_BRPORT_PROXYARP_WIFI: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PROXYARP_WIFI;
-pub const IFLA_BRPORT_ROOT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ROOT_ID;
-pub const IFLA_BRPORT_BRIDGE_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BRIDGE_ID;
-pub const IFLA_BRPORT_DESIGNATED_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_PORT;
-pub const IFLA_BRPORT_DESIGNATED_COST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_DESIGNATED_COST;
-pub const IFLA_BRPORT_ID: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ID;
-pub const IFLA_BRPORT_NO: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NO;
-pub const IFLA_BRPORT_TOPOLOGY_CHANGE_ACK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_TOPOLOGY_CHANGE_ACK;
-pub const IFLA_BRPORT_CONFIG_PENDING: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_CONFIG_PENDING;
-pub const IFLA_BRPORT_MESSAGE_AGE_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MESSAGE_AGE_TIMER;
-pub const IFLA_BRPORT_FORWARD_DELAY_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FORWARD_DELAY_TIMER;
-pub const IFLA_BRPORT_HOLD_TIMER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_HOLD_TIMER;
-pub const IFLA_BRPORT_FLUSH: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_FLUSH;
-pub const IFLA_BRPORT_MULTICAST_ROUTER: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MULTICAST_ROUTER;
-pub const IFLA_BRPORT_PAD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_PAD;
-pub const IFLA_BRPORT_MCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_FLOOD;
-pub const IFLA_BRPORT_MCAST_TO_UCAST: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_TO_UCAST;
-pub const IFLA_BRPORT_VLAN_TUNNEL: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_VLAN_TUNNEL;
-pub const IFLA_BRPORT_BCAST_FLOOD: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BCAST_FLOOD;
-pub const IFLA_BRPORT_GROUP_FWD_MASK: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_GROUP_FWD_MASK;
-pub const IFLA_BRPORT_NEIGH_SUPPRESS: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_NEIGH_SUPPRESS;
-pub const IFLA_BRPORT_ISOLATED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_ISOLATED;
-pub const IFLA_BRPORT_BACKUP_PORT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_BACKUP_PORT;
-pub const IFLA_BRPORT_MRP_RING_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_RING_OPEN;
-pub const IFLA_BRPORT_MRP_IN_OPEN: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MRP_IN_OPEN;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT;
-pub const IFLA_BRPORT_MCAST_EHT_HOSTS_CNT: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MCAST_EHT_HOSTS_CNT;
-pub const IFLA_BRPORT_LOCKED: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_LOCKED;
-pub const IFLA_BRPORT_MAB: _bindgen_ty_8 = _bindgen_ty_8::IFLA_BRPORT_MAB;
-pub const __IFLA_BRPORT_MAX: _bindgen_ty_8 = _bindgen_ty_8::__IFLA_BRPORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_8 {
-IFLA_BRPORT_UNSPEC = 0,
-IFLA_BRPORT_STATE = 1,
-IFLA_BRPORT_PRIORITY = 2,
-IFLA_BRPORT_COST = 3,
-IFLA_BRPORT_MODE = 4,
-IFLA_BRPORT_GUARD = 5,
-IFLA_BRPORT_PROTECT = 6,
-IFLA_BRPORT_FAST_LEAVE = 7,
-IFLA_BRPORT_LEARNING = 8,
-IFLA_BRPORT_UNICAST_FLOOD = 9,
-IFLA_BRPORT_PROXYARP = 10,
-IFLA_BRPORT_LEARNING_SYNC = 11,
-IFLA_BRPORT_PROXYARP_WIFI = 12,
-IFLA_BRPORT_ROOT_ID = 13,
-IFLA_BRPORT_BRIDGE_ID = 14,
-IFLA_BRPORT_DESIGNATED_PORT = 15,
-IFLA_BRPORT_DESIGNATED_COST = 16,
-IFLA_BRPORT_ID = 17,
-IFLA_BRPORT_NO = 18,
-IFLA_BRPORT_TOPOLOGY_CHANGE_ACK = 19,
-IFLA_BRPORT_CONFIG_PENDING = 20,
-IFLA_BRPORT_MESSAGE_AGE_TIMER = 21,
-IFLA_BRPORT_FORWARD_DELAY_TIMER = 22,
-IFLA_BRPORT_HOLD_TIMER = 23,
-IFLA_BRPORT_FLUSH = 24,
-IFLA_BRPORT_MULTICAST_ROUTER = 25,
-IFLA_BRPORT_PAD = 26,
-IFLA_BRPORT_MCAST_FLOOD = 27,
-IFLA_BRPORT_MCAST_TO_UCAST = 28,
-IFLA_BRPORT_VLAN_TUNNEL = 29,
-IFLA_BRPORT_BCAST_FLOOD = 30,
-IFLA_BRPORT_GROUP_FWD_MASK = 31,
-IFLA_BRPORT_NEIGH_SUPPRESS = 32,
-IFLA_BRPORT_ISOLATED = 33,
-IFLA_BRPORT_BACKUP_PORT = 34,
-IFLA_BRPORT_MRP_RING_OPEN = 35,
-IFLA_BRPORT_MRP_IN_OPEN = 36,
-IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT = 37,
-IFLA_BRPORT_MCAST_EHT_HOSTS_CNT = 38,
-IFLA_BRPORT_LOCKED = 39,
-IFLA_BRPORT_MAB = 40,
-__IFLA_BRPORT_MAX = 41,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_cacheinfo {
-pub max_reasm_len: __u32,
-pub tstamp: __u32,
-pub reachable_time: __u32,
-pub retrans_time: __u32,
-}
-pub const IFLA_INFO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_UNSPEC;
-pub const IFLA_INFO_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_KIND;
-pub const IFLA_INFO_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_DATA;
-pub const IFLA_INFO_XSTATS: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_XSTATS;
-pub const IFLA_INFO_SLAVE_KIND: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_KIND;
-pub const IFLA_INFO_SLAVE_DATA: _bindgen_ty_9 = _bindgen_ty_9::IFLA_INFO_SLAVE_DATA;
-pub const __IFLA_INFO_MAX: _bindgen_ty_9 = _bindgen_ty_9::__IFLA_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_9 {
-IFLA_INFO_UNSPEC = 0,
-IFLA_INFO_KIND = 1,
-IFLA_INFO_DATA = 2,
-IFLA_INFO_XSTATS = 3,
-IFLA_INFO_SLAVE_KIND = 4,
-IFLA_INFO_SLAVE_DATA = 5,
-__IFLA_INFO_MAX = 6,
-}
-pub const IFLA_VLAN_UNSPEC: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_UNSPEC;
-pub const IFLA_VLAN_ID: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_ID;
-pub const IFLA_VLAN_FLAGS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_FLAGS;
-pub const IFLA_VLAN_EGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_EGRESS_QOS;
-pub const IFLA_VLAN_INGRESS_QOS: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_INGRESS_QOS;
-pub const IFLA_VLAN_PROTOCOL: _bindgen_ty_10 = _bindgen_ty_10::IFLA_VLAN_PROTOCOL;
-pub const __IFLA_VLAN_MAX: _bindgen_ty_10 = _bindgen_ty_10::__IFLA_VLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_10 {
-IFLA_VLAN_UNSPEC = 0,
-IFLA_VLAN_ID = 1,
-IFLA_VLAN_FLAGS = 2,
-IFLA_VLAN_EGRESS_QOS = 3,
-IFLA_VLAN_INGRESS_QOS = 4,
-IFLA_VLAN_PROTOCOL = 5,
-__IFLA_VLAN_MAX = 6,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_VLAN_QOS_UNSPEC: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_UNSPEC;
-pub const IFLA_VLAN_QOS_MAPPING: _bindgen_ty_11 = _bindgen_ty_11::IFLA_VLAN_QOS_MAPPING;
-pub const __IFLA_VLAN_QOS_MAX: _bindgen_ty_11 = _bindgen_ty_11::__IFLA_VLAN_QOS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_11 {
-IFLA_VLAN_QOS_UNSPEC = 0,
-IFLA_VLAN_QOS_MAPPING = 1,
-__IFLA_VLAN_QOS_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vlan_qos_mapping {
-pub from: __u32,
-pub to: __u32,
-}
-pub const IFLA_MACVLAN_UNSPEC: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_UNSPEC;
-pub const IFLA_MACVLAN_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MODE;
-pub const IFLA_MACVLAN_FLAGS: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_FLAGS;
-pub const IFLA_MACVLAN_MACADDR_MODE: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_MODE;
-pub const IFLA_MACVLAN_MACADDR: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR;
-pub const IFLA_MACVLAN_MACADDR_DATA: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_DATA;
-pub const IFLA_MACVLAN_MACADDR_COUNT: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_MACADDR_COUNT;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN;
-pub const IFLA_MACVLAN_BC_QUEUE_LEN_USED: _bindgen_ty_12 = _bindgen_ty_12::IFLA_MACVLAN_BC_QUEUE_LEN_USED;
-pub const __IFLA_MACVLAN_MAX: _bindgen_ty_12 = _bindgen_ty_12::__IFLA_MACVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_12 {
-IFLA_MACVLAN_UNSPEC = 0,
-IFLA_MACVLAN_MODE = 1,
-IFLA_MACVLAN_FLAGS = 2,
-IFLA_MACVLAN_MACADDR_MODE = 3,
-IFLA_MACVLAN_MACADDR = 4,
-IFLA_MACVLAN_MACADDR_DATA = 5,
-IFLA_MACVLAN_MACADDR_COUNT = 6,
-IFLA_MACVLAN_BC_QUEUE_LEN = 7,
-IFLA_MACVLAN_BC_QUEUE_LEN_USED = 8,
-__IFLA_MACVLAN_MAX = 9,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_mode {
-MACVLAN_MODE_PRIVATE = 1,
-MACVLAN_MODE_VEPA = 2,
-MACVLAN_MODE_BRIDGE = 4,
-MACVLAN_MODE_PASSTHRU = 8,
-MACVLAN_MODE_SOURCE = 16,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macvlan_macaddr_mode {
-MACVLAN_MACADDR_ADD = 0,
-MACVLAN_MACADDR_DEL = 1,
-MACVLAN_MACADDR_FLUSH = 2,
-MACVLAN_MACADDR_SET = 3,
-}
-pub const IFLA_VRF_UNSPEC: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_UNSPEC;
-pub const IFLA_VRF_TABLE: _bindgen_ty_13 = _bindgen_ty_13::IFLA_VRF_TABLE;
-pub const __IFLA_VRF_MAX: _bindgen_ty_13 = _bindgen_ty_13::__IFLA_VRF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_13 {
-IFLA_VRF_UNSPEC = 0,
-IFLA_VRF_TABLE = 1,
-__IFLA_VRF_MAX = 2,
-}
-pub const IFLA_VRF_PORT_UNSPEC: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_UNSPEC;
-pub const IFLA_VRF_PORT_TABLE: _bindgen_ty_14 = _bindgen_ty_14::IFLA_VRF_PORT_TABLE;
-pub const __IFLA_VRF_PORT_MAX: _bindgen_ty_14 = _bindgen_ty_14::__IFLA_VRF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_14 {
-IFLA_VRF_PORT_UNSPEC = 0,
-IFLA_VRF_PORT_TABLE = 1,
-__IFLA_VRF_PORT_MAX = 2,
-}
-pub const IFLA_MACSEC_UNSPEC: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_UNSPEC;
-pub const IFLA_MACSEC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCI;
-pub const IFLA_MACSEC_PORT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PORT;
-pub const IFLA_MACSEC_ICV_LEN: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ICV_LEN;
-pub const IFLA_MACSEC_CIPHER_SUITE: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_CIPHER_SUITE;
-pub const IFLA_MACSEC_WINDOW: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_WINDOW;
-pub const IFLA_MACSEC_ENCODING_SA: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCODING_SA;
-pub const IFLA_MACSEC_ENCRYPT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ENCRYPT;
-pub const IFLA_MACSEC_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PROTECT;
-pub const IFLA_MACSEC_INC_SCI: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_INC_SCI;
-pub const IFLA_MACSEC_ES: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_ES;
-pub const IFLA_MACSEC_SCB: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_SCB;
-pub const IFLA_MACSEC_REPLAY_PROTECT: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_REPLAY_PROTECT;
-pub const IFLA_MACSEC_VALIDATION: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_VALIDATION;
-pub const IFLA_MACSEC_PAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_PAD;
-pub const IFLA_MACSEC_OFFLOAD: _bindgen_ty_15 = _bindgen_ty_15::IFLA_MACSEC_OFFLOAD;
-pub const __IFLA_MACSEC_MAX: _bindgen_ty_15 = _bindgen_ty_15::__IFLA_MACSEC_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_15 {
-IFLA_MACSEC_UNSPEC = 0,
-IFLA_MACSEC_SCI = 1,
-IFLA_MACSEC_PORT = 2,
-IFLA_MACSEC_ICV_LEN = 3,
-IFLA_MACSEC_CIPHER_SUITE = 4,
-IFLA_MACSEC_WINDOW = 5,
-IFLA_MACSEC_ENCODING_SA = 6,
-IFLA_MACSEC_ENCRYPT = 7,
-IFLA_MACSEC_PROTECT = 8,
-IFLA_MACSEC_INC_SCI = 9,
-IFLA_MACSEC_ES = 10,
-IFLA_MACSEC_SCB = 11,
-IFLA_MACSEC_REPLAY_PROTECT = 12,
-IFLA_MACSEC_VALIDATION = 13,
-IFLA_MACSEC_PAD = 14,
-IFLA_MACSEC_OFFLOAD = 15,
-__IFLA_MACSEC_MAX = 16,
-}
-pub const IFLA_XFRM_UNSPEC: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_UNSPEC;
-pub const IFLA_XFRM_LINK: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_LINK;
-pub const IFLA_XFRM_IF_ID: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_IF_ID;
-pub const IFLA_XFRM_COLLECT_METADATA: _bindgen_ty_16 = _bindgen_ty_16::IFLA_XFRM_COLLECT_METADATA;
-pub const __IFLA_XFRM_MAX: _bindgen_ty_16 = _bindgen_ty_16::__IFLA_XFRM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_16 {
-IFLA_XFRM_UNSPEC = 0,
-IFLA_XFRM_LINK = 1,
-IFLA_XFRM_IF_ID = 2,
-IFLA_XFRM_COLLECT_METADATA = 3,
-__IFLA_XFRM_MAX = 4,
-}
-impl macsec_validation_type {
-pub const MACSEC_VALIDATE_MAX: macsec_validation_type = macsec_validation_type::MACSEC_VALIDATE_STRICT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_validation_type {
-MACSEC_VALIDATE_DISABLED = 0,
-MACSEC_VALIDATE_CHECK = 1,
-MACSEC_VALIDATE_STRICT = 2,
-__MACSEC_VALIDATE_END = 3,
-}
-impl macsec_offload {
-pub const MACSEC_OFFLOAD_MAX: macsec_offload = macsec_offload::MACSEC_OFFLOAD_MAC;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum macsec_offload {
-MACSEC_OFFLOAD_OFF = 0,
-MACSEC_OFFLOAD_PHY = 1,
-MACSEC_OFFLOAD_MAC = 2,
-__MACSEC_OFFLOAD_END = 3,
-}
-pub const IFLA_IPVLAN_UNSPEC: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_UNSPEC;
-pub const IFLA_IPVLAN_MODE: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_MODE;
-pub const IFLA_IPVLAN_FLAGS: _bindgen_ty_17 = _bindgen_ty_17::IFLA_IPVLAN_FLAGS;
-pub const __IFLA_IPVLAN_MAX: _bindgen_ty_17 = _bindgen_ty_17::__IFLA_IPVLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_17 {
-IFLA_IPVLAN_UNSPEC = 0,
-IFLA_IPVLAN_MODE = 1,
-IFLA_IPVLAN_FLAGS = 2,
-__IFLA_IPVLAN_MAX = 3,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ipvlan_mode {
-IPVLAN_MODE_L2 = 0,
-IPVLAN_MODE_L3 = 1,
-IPVLAN_MODE_L3S = 2,
-IPVLAN_MODE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tunnel_msg {
-pub family: __u8,
-pub flags: __u8,
-pub reserved2: __u16,
-pub ifindex: __u32,
-}
-pub const VNIFILTER_ENTRY_STATS_UNSPEC: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_UNSPEC;
-pub const VNIFILTER_ENTRY_STATS_RX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_RX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_RX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_RX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_RX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_TX_BYTES: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_BYTES;
-pub const VNIFILTER_ENTRY_STATS_TX_PKTS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_PKTS;
-pub const VNIFILTER_ENTRY_STATS_TX_DROPS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_DROPS;
-pub const VNIFILTER_ENTRY_STATS_TX_ERRORS: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_TX_ERRORS;
-pub const VNIFILTER_ENTRY_STATS_PAD: _bindgen_ty_18 = _bindgen_ty_18::VNIFILTER_ENTRY_STATS_PAD;
-pub const __VNIFILTER_ENTRY_STATS_MAX: _bindgen_ty_18 = _bindgen_ty_18::__VNIFILTER_ENTRY_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_18 {
-VNIFILTER_ENTRY_STATS_UNSPEC = 0,
-VNIFILTER_ENTRY_STATS_RX_BYTES = 1,
-VNIFILTER_ENTRY_STATS_RX_PKTS = 2,
-VNIFILTER_ENTRY_STATS_RX_DROPS = 3,
-VNIFILTER_ENTRY_STATS_RX_ERRORS = 4,
-VNIFILTER_ENTRY_STATS_TX_BYTES = 5,
-VNIFILTER_ENTRY_STATS_TX_PKTS = 6,
-VNIFILTER_ENTRY_STATS_TX_DROPS = 7,
-VNIFILTER_ENTRY_STATS_TX_ERRORS = 8,
-VNIFILTER_ENTRY_STATS_PAD = 9,
-__VNIFILTER_ENTRY_STATS_MAX = 10,
-}
-pub const VXLAN_VNIFILTER_ENTRY_UNSPEC: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY_START: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_START;
-pub const VXLAN_VNIFILTER_ENTRY_END: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_END;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP;
-pub const VXLAN_VNIFILTER_ENTRY_GROUP6: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_GROUP6;
-pub const VXLAN_VNIFILTER_ENTRY_STATS: _bindgen_ty_19 = _bindgen_ty_19::VXLAN_VNIFILTER_ENTRY_STATS;
-pub const __VXLAN_VNIFILTER_ENTRY_MAX: _bindgen_ty_19 = _bindgen_ty_19::__VXLAN_VNIFILTER_ENTRY_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_19 {
-VXLAN_VNIFILTER_ENTRY_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY_START = 1,
-VXLAN_VNIFILTER_ENTRY_END = 2,
-VXLAN_VNIFILTER_ENTRY_GROUP = 3,
-VXLAN_VNIFILTER_ENTRY_GROUP6 = 4,
-VXLAN_VNIFILTER_ENTRY_STATS = 5,
-__VXLAN_VNIFILTER_ENTRY_MAX = 6,
-}
-pub const VXLAN_VNIFILTER_UNSPEC: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_UNSPEC;
-pub const VXLAN_VNIFILTER_ENTRY: _bindgen_ty_20 = _bindgen_ty_20::VXLAN_VNIFILTER_ENTRY;
-pub const __VXLAN_VNIFILTER_MAX: _bindgen_ty_20 = _bindgen_ty_20::__VXLAN_VNIFILTER_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_20 {
-VXLAN_VNIFILTER_UNSPEC = 0,
-VXLAN_VNIFILTER_ENTRY = 1,
-__VXLAN_VNIFILTER_MAX = 2,
-}
-pub const IFLA_VXLAN_UNSPEC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UNSPEC;
-pub const IFLA_VXLAN_ID: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_ID;
-pub const IFLA_VXLAN_GROUP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP;
-pub const IFLA_VXLAN_LINK: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LINK;
-pub const IFLA_VXLAN_LOCAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL;
-pub const IFLA_VXLAN_TTL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL;
-pub const IFLA_VXLAN_TOS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TOS;
-pub const IFLA_VXLAN_LEARNING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LEARNING;
-pub const IFLA_VXLAN_AGEING: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_AGEING;
-pub const IFLA_VXLAN_LIMIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LIMIT;
-pub const IFLA_VXLAN_PORT_RANGE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT_RANGE;
-pub const IFLA_VXLAN_PROXY: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PROXY;
-pub const IFLA_VXLAN_RSC: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_RSC;
-pub const IFLA_VXLAN_L2MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L2MISS;
-pub const IFLA_VXLAN_L3MISS: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_L3MISS;
-pub const IFLA_VXLAN_PORT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_PORT;
-pub const IFLA_VXLAN_GROUP6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GROUP6;
-pub const IFLA_VXLAN_LOCAL6: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LOCAL6;
-pub const IFLA_VXLAN_UDP_CSUM: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_CSUM;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_TX;
-pub const IFLA_VXLAN_UDP_ZERO_CSUM6_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_UDP_ZERO_CSUM6_RX;
-pub const IFLA_VXLAN_REMCSUM_TX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_TX;
-pub const IFLA_VXLAN_REMCSUM_RX: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_RX;
-pub const IFLA_VXLAN_GBP: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GBP;
-pub const IFLA_VXLAN_REMCSUM_NOPARTIAL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_REMCSUM_NOPARTIAL;
-pub const IFLA_VXLAN_COLLECT_METADATA: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_COLLECT_METADATA;
-pub const IFLA_VXLAN_LABEL: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_LABEL;
-pub const IFLA_VXLAN_GPE: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_GPE;
-pub const IFLA_VXLAN_TTL_INHERIT: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_TTL_INHERIT;
-pub const IFLA_VXLAN_DF: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_DF;
-pub const IFLA_VXLAN_VNIFILTER: _bindgen_ty_21 = _bindgen_ty_21::IFLA_VXLAN_VNIFILTER;
-pub const __IFLA_VXLAN_MAX: _bindgen_ty_21 = _bindgen_ty_21::__IFLA_VXLAN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_21 {
-IFLA_VXLAN_UNSPEC = 0,
-IFLA_VXLAN_ID = 1,
-IFLA_VXLAN_GROUP = 2,
-IFLA_VXLAN_LINK = 3,
-IFLA_VXLAN_LOCAL = 4,
-IFLA_VXLAN_TTL = 5,
-IFLA_VXLAN_TOS = 6,
-IFLA_VXLAN_LEARNING = 7,
-IFLA_VXLAN_AGEING = 8,
-IFLA_VXLAN_LIMIT = 9,
-IFLA_VXLAN_PORT_RANGE = 10,
-IFLA_VXLAN_PROXY = 11,
-IFLA_VXLAN_RSC = 12,
-IFLA_VXLAN_L2MISS = 13,
-IFLA_VXLAN_L3MISS = 14,
-IFLA_VXLAN_PORT = 15,
-IFLA_VXLAN_GROUP6 = 16,
-IFLA_VXLAN_LOCAL6 = 17,
-IFLA_VXLAN_UDP_CSUM = 18,
-IFLA_VXLAN_UDP_ZERO_CSUM6_TX = 19,
-IFLA_VXLAN_UDP_ZERO_CSUM6_RX = 20,
-IFLA_VXLAN_REMCSUM_TX = 21,
-IFLA_VXLAN_REMCSUM_RX = 22,
-IFLA_VXLAN_GBP = 23,
-IFLA_VXLAN_REMCSUM_NOPARTIAL = 24,
-IFLA_VXLAN_COLLECT_METADATA = 25,
-IFLA_VXLAN_LABEL = 26,
-IFLA_VXLAN_GPE = 27,
-IFLA_VXLAN_TTL_INHERIT = 28,
-IFLA_VXLAN_DF = 29,
-IFLA_VXLAN_VNIFILTER = 30,
-__IFLA_VXLAN_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vxlan_port_range {
-pub low: __be16,
-pub high: __be16,
-}
-impl ifla_vxlan_df {
-pub const VXLAN_DF_MAX: ifla_vxlan_df = ifla_vxlan_df::VXLAN_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_vxlan_df {
-VXLAN_DF_UNSET = 0,
-VXLAN_DF_SET = 1,
-VXLAN_DF_INHERIT = 2,
-__VXLAN_DF_END = 3,
-}
-pub const IFLA_GENEVE_UNSPEC: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UNSPEC;
-pub const IFLA_GENEVE_ID: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_ID;
-pub const IFLA_GENEVE_REMOTE: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE;
-pub const IFLA_GENEVE_TTL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL;
-pub const IFLA_GENEVE_TOS: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TOS;
-pub const IFLA_GENEVE_PORT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_PORT;
-pub const IFLA_GENEVE_COLLECT_METADATA: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_COLLECT_METADATA;
-pub const IFLA_GENEVE_REMOTE6: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_REMOTE6;
-pub const IFLA_GENEVE_UDP_CSUM: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_CSUM;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_TX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_TX;
-pub const IFLA_GENEVE_UDP_ZERO_CSUM6_RX: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_UDP_ZERO_CSUM6_RX;
-pub const IFLA_GENEVE_LABEL: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_LABEL;
-pub const IFLA_GENEVE_TTL_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_TTL_INHERIT;
-pub const IFLA_GENEVE_DF: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_DF;
-pub const IFLA_GENEVE_INNER_PROTO_INHERIT: _bindgen_ty_22 = _bindgen_ty_22::IFLA_GENEVE_INNER_PROTO_INHERIT;
-pub const __IFLA_GENEVE_MAX: _bindgen_ty_22 = _bindgen_ty_22::__IFLA_GENEVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_22 {
-IFLA_GENEVE_UNSPEC = 0,
-IFLA_GENEVE_ID = 1,
-IFLA_GENEVE_REMOTE = 2,
-IFLA_GENEVE_TTL = 3,
-IFLA_GENEVE_TOS = 4,
-IFLA_GENEVE_PORT = 5,
-IFLA_GENEVE_COLLECT_METADATA = 6,
-IFLA_GENEVE_REMOTE6 = 7,
-IFLA_GENEVE_UDP_CSUM = 8,
-IFLA_GENEVE_UDP_ZERO_CSUM6_TX = 9,
-IFLA_GENEVE_UDP_ZERO_CSUM6_RX = 10,
-IFLA_GENEVE_LABEL = 11,
-IFLA_GENEVE_TTL_INHERIT = 12,
-IFLA_GENEVE_DF = 13,
-IFLA_GENEVE_INNER_PROTO_INHERIT = 14,
-__IFLA_GENEVE_MAX = 15,
-}
-impl ifla_geneve_df {
-pub const GENEVE_DF_MAX: ifla_geneve_df = ifla_geneve_df::GENEVE_DF_INHERIT;
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_geneve_df {
-GENEVE_DF_UNSET = 0,
-GENEVE_DF_SET = 1,
-GENEVE_DF_INHERIT = 2,
-__GENEVE_DF_END = 3,
-}
-pub const IFLA_BAREUDP_UNSPEC: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_UNSPEC;
-pub const IFLA_BAREUDP_PORT: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_PORT;
-pub const IFLA_BAREUDP_ETHERTYPE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_ETHERTYPE;
-pub const IFLA_BAREUDP_SRCPORT_MIN: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_SRCPORT_MIN;
-pub const IFLA_BAREUDP_MULTIPROTO_MODE: _bindgen_ty_23 = _bindgen_ty_23::IFLA_BAREUDP_MULTIPROTO_MODE;
-pub const __IFLA_BAREUDP_MAX: _bindgen_ty_23 = _bindgen_ty_23::__IFLA_BAREUDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_23 {
-IFLA_BAREUDP_UNSPEC = 0,
-IFLA_BAREUDP_PORT = 1,
-IFLA_BAREUDP_ETHERTYPE = 2,
-IFLA_BAREUDP_SRCPORT_MIN = 3,
-IFLA_BAREUDP_MULTIPROTO_MODE = 4,
-__IFLA_BAREUDP_MAX = 5,
-}
-pub const IFLA_PPP_UNSPEC: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_UNSPEC;
-pub const IFLA_PPP_DEV_FD: _bindgen_ty_24 = _bindgen_ty_24::IFLA_PPP_DEV_FD;
-pub const __IFLA_PPP_MAX: _bindgen_ty_24 = _bindgen_ty_24::__IFLA_PPP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_24 {
-IFLA_PPP_UNSPEC = 0,
-IFLA_PPP_DEV_FD = 1,
-__IFLA_PPP_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum ifla_gtp_role {
-GTP_ROLE_GGSN = 0,
-GTP_ROLE_SGSN = 1,
-}
-pub const IFLA_GTP_UNSPEC: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_UNSPEC;
-pub const IFLA_GTP_FD0: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD0;
-pub const IFLA_GTP_FD1: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_FD1;
-pub const IFLA_GTP_PDP_HASHSIZE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_PDP_HASHSIZE;
-pub const IFLA_GTP_ROLE: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_ROLE;
-pub const IFLA_GTP_CREATE_SOCKETS: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_CREATE_SOCKETS;
-pub const IFLA_GTP_RESTART_COUNT: _bindgen_ty_25 = _bindgen_ty_25::IFLA_GTP_RESTART_COUNT;
-pub const __IFLA_GTP_MAX: _bindgen_ty_25 = _bindgen_ty_25::__IFLA_GTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_25 {
-IFLA_GTP_UNSPEC = 0,
-IFLA_GTP_FD0 = 1,
-IFLA_GTP_FD1 = 2,
-IFLA_GTP_PDP_HASHSIZE = 3,
-IFLA_GTP_ROLE = 4,
-IFLA_GTP_CREATE_SOCKETS = 5,
-IFLA_GTP_RESTART_COUNT = 6,
-__IFLA_GTP_MAX = 7,
-}
-pub const IFLA_BOND_UNSPEC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UNSPEC;
-pub const IFLA_BOND_MODE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MODE;
-pub const IFLA_BOND_ACTIVE_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ACTIVE_SLAVE;
-pub const IFLA_BOND_MIIMON: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIIMON;
-pub const IFLA_BOND_UPDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_UPDELAY;
-pub const IFLA_BOND_DOWNDELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_DOWNDELAY;
-pub const IFLA_BOND_USE_CARRIER: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_USE_CARRIER;
-pub const IFLA_BOND_ARP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_INTERVAL;
-pub const IFLA_BOND_ARP_IP_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_IP_TARGET;
-pub const IFLA_BOND_ARP_VALIDATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_VALIDATE;
-pub const IFLA_BOND_ARP_ALL_TARGETS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ARP_ALL_TARGETS;
-pub const IFLA_BOND_PRIMARY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY;
-pub const IFLA_BOND_PRIMARY_RESELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PRIMARY_RESELECT;
-pub const IFLA_BOND_FAIL_OVER_MAC: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_FAIL_OVER_MAC;
-pub const IFLA_BOND_XMIT_HASH_POLICY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_XMIT_HASH_POLICY;
-pub const IFLA_BOND_RESEND_IGMP: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_RESEND_IGMP;
-pub const IFLA_BOND_NUM_PEER_NOTIF: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NUM_PEER_NOTIF;
-pub const IFLA_BOND_ALL_SLAVES_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_ALL_SLAVES_ACTIVE;
-pub const IFLA_BOND_MIN_LINKS: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MIN_LINKS;
-pub const IFLA_BOND_LP_INTERVAL: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_LP_INTERVAL;
-pub const IFLA_BOND_PACKETS_PER_SLAVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PACKETS_PER_SLAVE;
-pub const IFLA_BOND_AD_LACP_RATE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_RATE;
-pub const IFLA_BOND_AD_SELECT: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_SELECT;
-pub const IFLA_BOND_AD_INFO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_INFO;
-pub const IFLA_BOND_AD_ACTOR_SYS_PRIO: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYS_PRIO;
-pub const IFLA_BOND_AD_USER_PORT_KEY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_USER_PORT_KEY;
-pub const IFLA_BOND_AD_ACTOR_SYSTEM: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_ACTOR_SYSTEM;
-pub const IFLA_BOND_TLB_DYNAMIC_LB: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_TLB_DYNAMIC_LB;
-pub const IFLA_BOND_PEER_NOTIF_DELAY: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_PEER_NOTIF_DELAY;
-pub const IFLA_BOND_AD_LACP_ACTIVE: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_AD_LACP_ACTIVE;
-pub const IFLA_BOND_MISSED_MAX: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_MISSED_MAX;
-pub const IFLA_BOND_NS_IP6_TARGET: _bindgen_ty_26 = _bindgen_ty_26::IFLA_BOND_NS_IP6_TARGET;
-pub const __IFLA_BOND_MAX: _bindgen_ty_26 = _bindgen_ty_26::__IFLA_BOND_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_26 {
-IFLA_BOND_UNSPEC = 0,
-IFLA_BOND_MODE = 1,
-IFLA_BOND_ACTIVE_SLAVE = 2,
-IFLA_BOND_MIIMON = 3,
-IFLA_BOND_UPDELAY = 4,
-IFLA_BOND_DOWNDELAY = 5,
-IFLA_BOND_USE_CARRIER = 6,
-IFLA_BOND_ARP_INTERVAL = 7,
-IFLA_BOND_ARP_IP_TARGET = 8,
-IFLA_BOND_ARP_VALIDATE = 9,
-IFLA_BOND_ARP_ALL_TARGETS = 10,
-IFLA_BOND_PRIMARY = 11,
-IFLA_BOND_PRIMARY_RESELECT = 12,
-IFLA_BOND_FAIL_OVER_MAC = 13,
-IFLA_BOND_XMIT_HASH_POLICY = 14,
-IFLA_BOND_RESEND_IGMP = 15,
-IFLA_BOND_NUM_PEER_NOTIF = 16,
-IFLA_BOND_ALL_SLAVES_ACTIVE = 17,
-IFLA_BOND_MIN_LINKS = 18,
-IFLA_BOND_LP_INTERVAL = 19,
-IFLA_BOND_PACKETS_PER_SLAVE = 20,
-IFLA_BOND_AD_LACP_RATE = 21,
-IFLA_BOND_AD_SELECT = 22,
-IFLA_BOND_AD_INFO = 23,
-IFLA_BOND_AD_ACTOR_SYS_PRIO = 24,
-IFLA_BOND_AD_USER_PORT_KEY = 25,
-IFLA_BOND_AD_ACTOR_SYSTEM = 26,
-IFLA_BOND_TLB_DYNAMIC_LB = 27,
-IFLA_BOND_PEER_NOTIF_DELAY = 28,
-IFLA_BOND_AD_LACP_ACTIVE = 29,
-IFLA_BOND_MISSED_MAX = 30,
-IFLA_BOND_NS_IP6_TARGET = 31,
-__IFLA_BOND_MAX = 32,
-}
-pub const IFLA_BOND_AD_INFO_UNSPEC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_UNSPEC;
-pub const IFLA_BOND_AD_INFO_AGGREGATOR: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_AGGREGATOR;
-pub const IFLA_BOND_AD_INFO_NUM_PORTS: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_NUM_PORTS;
-pub const IFLA_BOND_AD_INFO_ACTOR_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_ACTOR_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_KEY: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_KEY;
-pub const IFLA_BOND_AD_INFO_PARTNER_MAC: _bindgen_ty_27 = _bindgen_ty_27::IFLA_BOND_AD_INFO_PARTNER_MAC;
-pub const __IFLA_BOND_AD_INFO_MAX: _bindgen_ty_27 = _bindgen_ty_27::__IFLA_BOND_AD_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_27 {
-IFLA_BOND_AD_INFO_UNSPEC = 0,
-IFLA_BOND_AD_INFO_AGGREGATOR = 1,
-IFLA_BOND_AD_INFO_NUM_PORTS = 2,
-IFLA_BOND_AD_INFO_ACTOR_KEY = 3,
-IFLA_BOND_AD_INFO_PARTNER_KEY = 4,
-IFLA_BOND_AD_INFO_PARTNER_MAC = 5,
-__IFLA_BOND_AD_INFO_MAX = 6,
-}
-pub const IFLA_BOND_SLAVE_UNSPEC: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_UNSPEC;
-pub const IFLA_BOND_SLAVE_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_STATE;
-pub const IFLA_BOND_SLAVE_MII_STATUS: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_MII_STATUS;
-pub const IFLA_BOND_SLAVE_LINK_FAILURE_COUNT: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_LINK_FAILURE_COUNT;
-pub const IFLA_BOND_SLAVE_PERM_HWADDR: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PERM_HWADDR;
-pub const IFLA_BOND_SLAVE_QUEUE_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_QUEUE_ID;
-pub const IFLA_BOND_SLAVE_AD_AGGREGATOR_ID: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_AGGREGATOR_ID;
-pub const IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE;
-pub const IFLA_BOND_SLAVE_PRIO: _bindgen_ty_28 = _bindgen_ty_28::IFLA_BOND_SLAVE_PRIO;
-pub const __IFLA_BOND_SLAVE_MAX: _bindgen_ty_28 = _bindgen_ty_28::__IFLA_BOND_SLAVE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_28 {
-IFLA_BOND_SLAVE_UNSPEC = 0,
-IFLA_BOND_SLAVE_STATE = 1,
-IFLA_BOND_SLAVE_MII_STATUS = 2,
-IFLA_BOND_SLAVE_LINK_FAILURE_COUNT = 3,
-IFLA_BOND_SLAVE_PERM_HWADDR = 4,
-IFLA_BOND_SLAVE_QUEUE_ID = 5,
-IFLA_BOND_SLAVE_AD_AGGREGATOR_ID = 6,
-IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE = 7,
-IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 8,
-IFLA_BOND_SLAVE_PRIO = 9,
-__IFLA_BOND_SLAVE_MAX = 10,
-}
-pub const IFLA_VF_INFO_UNSPEC: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO_UNSPEC;
-pub const IFLA_VF_INFO: _bindgen_ty_29 = _bindgen_ty_29::IFLA_VF_INFO;
-pub const __IFLA_VF_INFO_MAX: _bindgen_ty_29 = _bindgen_ty_29::__IFLA_VF_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_29 {
-IFLA_VF_INFO_UNSPEC = 0,
-IFLA_VF_INFO = 1,
-__IFLA_VF_INFO_MAX = 2,
-}
-pub const IFLA_VF_UNSPEC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_UNSPEC;
-pub const IFLA_VF_MAC: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_MAC;
-pub const IFLA_VF_VLAN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN;
-pub const IFLA_VF_TX_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TX_RATE;
-pub const IFLA_VF_SPOOFCHK: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_SPOOFCHK;
-pub const IFLA_VF_LINK_STATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_LINK_STATE;
-pub const IFLA_VF_RATE: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RATE;
-pub const IFLA_VF_RSS_QUERY_EN: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_RSS_QUERY_EN;
-pub const IFLA_VF_STATS: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_STATS;
-pub const IFLA_VF_TRUST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_TRUST;
-pub const IFLA_VF_IB_NODE_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_NODE_GUID;
-pub const IFLA_VF_IB_PORT_GUID: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_IB_PORT_GUID;
-pub const IFLA_VF_VLAN_LIST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_VLAN_LIST;
-pub const IFLA_VF_BROADCAST: _bindgen_ty_30 = _bindgen_ty_30::IFLA_VF_BROADCAST;
-pub const __IFLA_VF_MAX: _bindgen_ty_30 = _bindgen_ty_30::__IFLA_VF_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_30 {
-IFLA_VF_UNSPEC = 0,
-IFLA_VF_MAC = 1,
-IFLA_VF_VLAN = 2,
-IFLA_VF_TX_RATE = 3,
-IFLA_VF_SPOOFCHK = 4,
-IFLA_VF_LINK_STATE = 5,
-IFLA_VF_RATE = 6,
-IFLA_VF_RSS_QUERY_EN = 7,
-IFLA_VF_STATS = 8,
-IFLA_VF_TRUST = 9,
-IFLA_VF_IB_NODE_GUID = 10,
-IFLA_VF_IB_PORT_GUID = 11,
-IFLA_VF_VLAN_LIST = 12,
-IFLA_VF_BROADCAST = 13,
-__IFLA_VF_MAX = 14,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_mac {
-pub vf: __u32,
-pub mac: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_broadcast {
-pub broadcast: [__u8; 32usize],
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-}
-pub const IFLA_VF_VLAN_INFO_UNSPEC: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO_UNSPEC;
-pub const IFLA_VF_VLAN_INFO: _bindgen_ty_31 = _bindgen_ty_31::IFLA_VF_VLAN_INFO;
-pub const __IFLA_VF_VLAN_INFO_MAX: _bindgen_ty_31 = _bindgen_ty_31::__IFLA_VF_VLAN_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_31 {
-IFLA_VF_VLAN_INFO_UNSPEC = 0,
-IFLA_VF_VLAN_INFO = 1,
-__IFLA_VF_VLAN_INFO_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_vlan_info {
-pub vf: __u32,
-pub vlan: __u32,
-pub qos: __u32,
-pub vlan_proto: __be16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_tx_rate {
-pub vf: __u32,
-pub rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rate {
-pub vf: __u32,
-pub min_tx_rate: __u32,
-pub max_tx_rate: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_spoofchk {
-pub vf: __u32,
-pub setting: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_guid {
-pub vf: __u32,
-pub guid: __u64,
-}
-pub const IFLA_VF_LINK_STATE_AUTO: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_AUTO;
-pub const IFLA_VF_LINK_STATE_ENABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_ENABLE;
-pub const IFLA_VF_LINK_STATE_DISABLE: _bindgen_ty_32 = _bindgen_ty_32::IFLA_VF_LINK_STATE_DISABLE;
-pub const __IFLA_VF_LINK_STATE_MAX: _bindgen_ty_32 = _bindgen_ty_32::__IFLA_VF_LINK_STATE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_32 {
-IFLA_VF_LINK_STATE_AUTO = 0,
-IFLA_VF_LINK_STATE_ENABLE = 1,
-IFLA_VF_LINK_STATE_DISABLE = 2,
-__IFLA_VF_LINK_STATE_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_link_state {
-pub vf: __u32,
-pub link_state: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_rss_query_en {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_STATS_RX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_PACKETS;
-pub const IFLA_VF_STATS_TX_PACKETS: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_PACKETS;
-pub const IFLA_VF_STATS_RX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_BYTES;
-pub const IFLA_VF_STATS_TX_BYTES: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_BYTES;
-pub const IFLA_VF_STATS_BROADCAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_BROADCAST;
-pub const IFLA_VF_STATS_MULTICAST: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_MULTICAST;
-pub const IFLA_VF_STATS_PAD: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_PAD;
-pub const IFLA_VF_STATS_RX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_RX_DROPPED;
-pub const IFLA_VF_STATS_TX_DROPPED: _bindgen_ty_33 = _bindgen_ty_33::IFLA_VF_STATS_TX_DROPPED;
-pub const __IFLA_VF_STATS_MAX: _bindgen_ty_33 = _bindgen_ty_33::__IFLA_VF_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_33 {
-IFLA_VF_STATS_RX_PACKETS = 0,
-IFLA_VF_STATS_TX_PACKETS = 1,
-IFLA_VF_STATS_RX_BYTES = 2,
-IFLA_VF_STATS_TX_BYTES = 3,
-IFLA_VF_STATS_BROADCAST = 4,
-IFLA_VF_STATS_MULTICAST = 5,
-IFLA_VF_STATS_PAD = 6,
-IFLA_VF_STATS_RX_DROPPED = 7,
-IFLA_VF_STATS_TX_DROPPED = 8,
-__IFLA_VF_STATS_MAX = 9,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_vf_trust {
-pub vf: __u32,
-pub setting: __u32,
-}
-pub const IFLA_VF_PORT_UNSPEC: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT_UNSPEC;
-pub const IFLA_VF_PORT: _bindgen_ty_34 = _bindgen_ty_34::IFLA_VF_PORT;
-pub const __IFLA_VF_PORT_MAX: _bindgen_ty_34 = _bindgen_ty_34::__IFLA_VF_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_34 {
-IFLA_VF_PORT_UNSPEC = 0,
-IFLA_VF_PORT = 1,
-__IFLA_VF_PORT_MAX = 2,
-}
-pub const IFLA_PORT_UNSPEC: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_UNSPEC;
-pub const IFLA_PORT_VF: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VF;
-pub const IFLA_PORT_PROFILE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_PROFILE;
-pub const IFLA_PORT_VSI_TYPE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_VSI_TYPE;
-pub const IFLA_PORT_INSTANCE_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_INSTANCE_UUID;
-pub const IFLA_PORT_HOST_UUID: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_HOST_UUID;
-pub const IFLA_PORT_REQUEST: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_REQUEST;
-pub const IFLA_PORT_RESPONSE: _bindgen_ty_35 = _bindgen_ty_35::IFLA_PORT_RESPONSE;
-pub const __IFLA_PORT_MAX: _bindgen_ty_35 = _bindgen_ty_35::__IFLA_PORT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_35 {
-IFLA_PORT_UNSPEC = 0,
-IFLA_PORT_VF = 1,
-IFLA_PORT_PROFILE = 2,
-IFLA_PORT_VSI_TYPE = 3,
-IFLA_PORT_INSTANCE_UUID = 4,
-IFLA_PORT_HOST_UUID = 5,
-IFLA_PORT_REQUEST = 6,
-IFLA_PORT_RESPONSE = 7,
-__IFLA_PORT_MAX = 8,
-}
-pub const PORT_REQUEST_PREASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE;
-pub const PORT_REQUEST_PREASSOCIATE_RR: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_PREASSOCIATE_RR;
-pub const PORT_REQUEST_ASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_ASSOCIATE;
-pub const PORT_REQUEST_DISASSOCIATE: _bindgen_ty_36 = _bindgen_ty_36::PORT_REQUEST_DISASSOCIATE;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_36 {
-PORT_REQUEST_PREASSOCIATE = 0,
-PORT_REQUEST_PREASSOCIATE_RR = 1,
-PORT_REQUEST_ASSOCIATE = 2,
-PORT_REQUEST_DISASSOCIATE = 3,
-}
-pub const PORT_VDP_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_SUCCESS;
-pub const PORT_VDP_RESPONSE_INVALID_FORMAT: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INVALID_FORMAT;
-pub const PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_VDP_RESPONSE_UNUSED_VTID: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_UNUSED_VTID;
-pub const PORT_VDP_RESPONSE_VTID_VIOLATION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VIOLATION;
-pub const PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION;
-pub const PORT_VDP_RESPONSE_OUT_OF_SYNC: _bindgen_ty_37 = _bindgen_ty_37::PORT_VDP_RESPONSE_OUT_OF_SYNC;
-pub const PORT_PROFILE_RESPONSE_SUCCESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_SUCCESS;
-pub const PORT_PROFILE_RESPONSE_INPROGRESS: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INPROGRESS;
-pub const PORT_PROFILE_RESPONSE_INVALID: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INVALID;
-pub const PORT_PROFILE_RESPONSE_BADSTATE: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_BADSTATE;
-pub const PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES;
-pub const PORT_PROFILE_RESPONSE_ERROR: _bindgen_ty_37 = _bindgen_ty_37::PORT_PROFILE_RESPONSE_ERROR;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_37 {
-PORT_VDP_RESPONSE_SUCCESS = 0,
-PORT_VDP_RESPONSE_INVALID_FORMAT = 1,
-PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES = 2,
-PORT_VDP_RESPONSE_UNUSED_VTID = 3,
-PORT_VDP_RESPONSE_VTID_VIOLATION = 4,
-PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION = 5,
-PORT_VDP_RESPONSE_OUT_OF_SYNC = 6,
-PORT_PROFILE_RESPONSE_SUCCESS = 256,
-PORT_PROFILE_RESPONSE_INPROGRESS = 257,
-PORT_PROFILE_RESPONSE_INVALID = 258,
-PORT_PROFILE_RESPONSE_BADSTATE = 259,
-PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES = 260,
-PORT_PROFILE_RESPONSE_ERROR = 261,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_port_vsi {
-pub vsi_mgr_id: __u8,
-pub vsi_type_id: [__u8; 3usize],
-pub vsi_type_version: __u8,
-pub pad: [__u8; 3usize],
-}
-pub const IFLA_IPOIB_UNSPEC: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UNSPEC;
-pub const IFLA_IPOIB_PKEY: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_PKEY;
-pub const IFLA_IPOIB_MODE: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_MODE;
-pub const IFLA_IPOIB_UMCAST: _bindgen_ty_38 = _bindgen_ty_38::IFLA_IPOIB_UMCAST;
-pub const __IFLA_IPOIB_MAX: _bindgen_ty_38 = _bindgen_ty_38::__IFLA_IPOIB_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_38 {
-IFLA_IPOIB_UNSPEC = 0,
-IFLA_IPOIB_PKEY = 1,
-IFLA_IPOIB_MODE = 2,
-IFLA_IPOIB_UMCAST = 3,
-__IFLA_IPOIB_MAX = 4,
-}
-pub const IPOIB_MODE_DATAGRAM: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_DATAGRAM;
-pub const IPOIB_MODE_CONNECTED: _bindgen_ty_39 = _bindgen_ty_39::IPOIB_MODE_CONNECTED;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_39 {
-IPOIB_MODE_DATAGRAM = 0,
-IPOIB_MODE_CONNECTED = 1,
-}
-pub const HSR_PROTOCOL_HSR: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_HSR;
-pub const HSR_PROTOCOL_PRP: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_PRP;
-pub const HSR_PROTOCOL_MAX: _bindgen_ty_40 = _bindgen_ty_40::HSR_PROTOCOL_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_40 {
-HSR_PROTOCOL_HSR = 0,
-HSR_PROTOCOL_PRP = 1,
-HSR_PROTOCOL_MAX = 2,
-}
-pub const IFLA_HSR_UNSPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_UNSPEC;
-pub const IFLA_HSR_SLAVE1: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE1;
-pub const IFLA_HSR_SLAVE2: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SLAVE2;
-pub const IFLA_HSR_MULTICAST_SPEC: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_MULTICAST_SPEC;
-pub const IFLA_HSR_SUPERVISION_ADDR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SUPERVISION_ADDR;
-pub const IFLA_HSR_SEQ_NR: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_SEQ_NR;
-pub const IFLA_HSR_VERSION: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_VERSION;
-pub const IFLA_HSR_PROTOCOL: _bindgen_ty_41 = _bindgen_ty_41::IFLA_HSR_PROTOCOL;
-pub const __IFLA_HSR_MAX: _bindgen_ty_41 = _bindgen_ty_41::__IFLA_HSR_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_41 {
-IFLA_HSR_UNSPEC = 0,
-IFLA_HSR_SLAVE1 = 1,
-IFLA_HSR_SLAVE2 = 2,
-IFLA_HSR_MULTICAST_SPEC = 3,
-IFLA_HSR_SUPERVISION_ADDR = 4,
-IFLA_HSR_SEQ_NR = 5,
-IFLA_HSR_VERSION = 6,
-IFLA_HSR_PROTOCOL = 7,
-__IFLA_HSR_MAX = 8,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct if_stats_msg {
-pub family: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub ifindex: __u32,
-pub filter_mask: __u32,
-}
-pub const IFLA_STATS_UNSPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_UNSPEC;
-pub const IFLA_STATS_LINK_64: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_64;
-pub const IFLA_STATS_LINK_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS;
-pub const IFLA_STATS_LINK_XSTATS_SLAVE: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_XSTATS_SLAVE;
-pub const IFLA_STATS_LINK_OFFLOAD_XSTATS: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_LINK_OFFLOAD_XSTATS;
-pub const IFLA_STATS_AF_SPEC: _bindgen_ty_42 = _bindgen_ty_42::IFLA_STATS_AF_SPEC;
-pub const __IFLA_STATS_MAX: _bindgen_ty_42 = _bindgen_ty_42::__IFLA_STATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_42 {
-IFLA_STATS_UNSPEC = 0,
-IFLA_STATS_LINK_64 = 1,
-IFLA_STATS_LINK_XSTATS = 2,
-IFLA_STATS_LINK_XSTATS_SLAVE = 3,
-IFLA_STATS_LINK_OFFLOAD_XSTATS = 4,
-IFLA_STATS_AF_SPEC = 5,
-__IFLA_STATS_MAX = 6,
-}
-pub const IFLA_STATS_GETSET_UNSPEC: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GETSET_UNSPEC;
-pub const IFLA_STATS_GET_FILTERS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_GET_FILTERS;
-pub const IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_43 = _bindgen_ty_43::IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_STATS_GETSET_MAX: _bindgen_ty_43 = _bindgen_ty_43::__IFLA_STATS_GETSET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_43 {
-IFLA_STATS_GETSET_UNSPEC = 0,
-IFLA_STATS_GET_FILTERS = 1,
-IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS = 2,
-__IFLA_STATS_GETSET_MAX = 3,
-}
-pub const LINK_XSTATS_TYPE_UNSPEC: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_UNSPEC;
-pub const LINK_XSTATS_TYPE_BRIDGE: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BRIDGE;
-pub const LINK_XSTATS_TYPE_BOND: _bindgen_ty_44 = _bindgen_ty_44::LINK_XSTATS_TYPE_BOND;
-pub const __LINK_XSTATS_TYPE_MAX: _bindgen_ty_44 = _bindgen_ty_44::__LINK_XSTATS_TYPE_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_44 {
-LINK_XSTATS_TYPE_UNSPEC = 0,
-LINK_XSTATS_TYPE_BRIDGE = 1,
-LINK_XSTATS_TYPE_BOND = 2,
-__LINK_XSTATS_TYPE_MAX = 3,
-}
-pub const IFLA_OFFLOAD_XSTATS_UNSPEC: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_CPU_HIT: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_CPU_HIT;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_HW_S_INFO;
-pub const IFLA_OFFLOAD_XSTATS_L3_STATS: _bindgen_ty_45 = _bindgen_ty_45::IFLA_OFFLOAD_XSTATS_L3_STATS;
-pub const __IFLA_OFFLOAD_XSTATS_MAX: _bindgen_ty_45 = _bindgen_ty_45::__IFLA_OFFLOAD_XSTATS_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_45 {
-IFLA_OFFLOAD_XSTATS_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_CPU_HIT = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO = 2,
-IFLA_OFFLOAD_XSTATS_L3_STATS = 3,
-__IFLA_OFFLOAD_XSTATS_MAX = 4,
-}
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST;
-pub const IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED: _bindgen_ty_46 = _bindgen_ty_46::IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED;
-pub const __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX: _bindgen_ty_46 = _bindgen_ty_46::__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_46 {
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC = 0,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST = 1,
-IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED = 2,
-__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX = 3,
-}
-pub const XDP_ATTACHED_NONE: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_NONE;
-pub const XDP_ATTACHED_DRV: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_DRV;
-pub const XDP_ATTACHED_SKB: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_SKB;
-pub const XDP_ATTACHED_HW: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_HW;
-pub const XDP_ATTACHED_MULTI: _bindgen_ty_47 = _bindgen_ty_47::XDP_ATTACHED_MULTI;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_47 {
-XDP_ATTACHED_NONE = 0,
-XDP_ATTACHED_DRV = 1,
-XDP_ATTACHED_SKB = 2,
-XDP_ATTACHED_HW = 3,
-XDP_ATTACHED_MULTI = 4,
-}
-pub const IFLA_XDP_UNSPEC: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_UNSPEC;
-pub const IFLA_XDP_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FD;
-pub const IFLA_XDP_ATTACHED: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_ATTACHED;
-pub const IFLA_XDP_FLAGS: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_FLAGS;
-pub const IFLA_XDP_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_PROG_ID;
-pub const IFLA_XDP_DRV_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_DRV_PROG_ID;
-pub const IFLA_XDP_SKB_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_SKB_PROG_ID;
-pub const IFLA_XDP_HW_PROG_ID: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_HW_PROG_ID;
-pub const IFLA_XDP_EXPECTED_FD: _bindgen_ty_48 = _bindgen_ty_48::IFLA_XDP_EXPECTED_FD;
-pub const __IFLA_XDP_MAX: _bindgen_ty_48 = _bindgen_ty_48::__IFLA_XDP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_48 {
-IFLA_XDP_UNSPEC = 0,
-IFLA_XDP_FD = 1,
-IFLA_XDP_ATTACHED = 2,
-IFLA_XDP_FLAGS = 3,
-IFLA_XDP_PROG_ID = 4,
-IFLA_XDP_DRV_PROG_ID = 5,
-IFLA_XDP_SKB_PROG_ID = 6,
-IFLA_XDP_HW_PROG_ID = 7,
-IFLA_XDP_EXPECTED_FD = 8,
-__IFLA_XDP_MAX = 9,
-}
-pub const IFLA_EVENT_NONE: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NONE;
-pub const IFLA_EVENT_REBOOT: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_REBOOT;
-pub const IFLA_EVENT_FEATURES: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_FEATURES;
-pub const IFLA_EVENT_BONDING_FAILOVER: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_FAILOVER;
-pub const IFLA_EVENT_NOTIFY_PEERS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_NOTIFY_PEERS;
-pub const IFLA_EVENT_IGMP_RESEND: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_IGMP_RESEND;
-pub const IFLA_EVENT_BONDING_OPTIONS: _bindgen_ty_49 = _bindgen_ty_49::IFLA_EVENT_BONDING_OPTIONS;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_49 {
-IFLA_EVENT_NONE = 0,
-IFLA_EVENT_REBOOT = 1,
-IFLA_EVENT_FEATURES = 2,
-IFLA_EVENT_BONDING_FAILOVER = 3,
-IFLA_EVENT_NOTIFY_PEERS = 4,
-IFLA_EVENT_IGMP_RESEND = 5,
-IFLA_EVENT_BONDING_OPTIONS = 6,
-}
-pub const IFLA_TUN_UNSPEC: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_UNSPEC;
-pub const IFLA_TUN_OWNER: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_OWNER;
-pub const IFLA_TUN_GROUP: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_GROUP;
-pub const IFLA_TUN_TYPE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_TYPE;
-pub const IFLA_TUN_PI: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PI;
-pub const IFLA_TUN_VNET_HDR: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_VNET_HDR;
-pub const IFLA_TUN_PERSIST: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_PERSIST;
-pub const IFLA_TUN_MULTI_QUEUE: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_MULTI_QUEUE;
-pub const IFLA_TUN_NUM_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_QUEUES;
-pub const IFLA_TUN_NUM_DISABLED_QUEUES: _bindgen_ty_50 = _bindgen_ty_50::IFLA_TUN_NUM_DISABLED_QUEUES;
-pub const __IFLA_TUN_MAX: _bindgen_ty_50 = _bindgen_ty_50::__IFLA_TUN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_50 {
-IFLA_TUN_UNSPEC = 0,
-IFLA_TUN_OWNER = 1,
-IFLA_TUN_GROUP = 2,
-IFLA_TUN_TYPE = 3,
-IFLA_TUN_PI = 4,
-IFLA_TUN_VNET_HDR = 5,
-IFLA_TUN_PERSIST = 6,
-IFLA_TUN_MULTI_QUEUE = 7,
-IFLA_TUN_NUM_QUEUES = 8,
-IFLA_TUN_NUM_DISABLED_QUEUES = 9,
-__IFLA_TUN_MAX = 10,
-}
-pub const IFLA_RMNET_UNSPEC: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_UNSPEC;
-pub const IFLA_RMNET_MUX_ID: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_MUX_ID;
-pub const IFLA_RMNET_FLAGS: _bindgen_ty_51 = _bindgen_ty_51::IFLA_RMNET_FLAGS;
-pub const __IFLA_RMNET_MAX: _bindgen_ty_51 = _bindgen_ty_51::__IFLA_RMNET_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_51 {
-IFLA_RMNET_UNSPEC = 0,
-IFLA_RMNET_MUX_ID = 1,
-IFLA_RMNET_FLAGS = 2,
-__IFLA_RMNET_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifla_rmnet_flags {
-pub flags: __u32,
-pub mask: __u32,
-}
-pub const IFLA_MCTP_UNSPEC: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_UNSPEC;
-pub const IFLA_MCTP_NET: _bindgen_ty_52 = _bindgen_ty_52::IFLA_MCTP_NET;
-pub const __IFLA_MCTP_MAX: _bindgen_ty_52 = _bindgen_ty_52::__IFLA_MCTP_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_52 {
-IFLA_MCTP_UNSPEC = 0,
-IFLA_MCTP_NET = 1,
-__IFLA_MCTP_MAX = 2,
-}
-pub const IFLA_DSA_UNSPEC: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_UNSPEC;
-pub const IFLA_DSA_MASTER: _bindgen_ty_53 = _bindgen_ty_53::IFLA_DSA_MASTER;
-pub const __IFLA_DSA_MAX: _bindgen_ty_53 = _bindgen_ty_53::__IFLA_DSA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_53 {
-IFLA_DSA_UNSPEC = 0,
-IFLA_DSA_MASTER = 1,
-__IFLA_DSA_MAX = 2,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifaddrmsg {
-pub ifa_family: __u8,
-pub ifa_prefixlen: __u8,
-pub ifa_flags: __u8,
-pub ifa_scope: __u8,
-pub ifa_index: __u32,
-}
-pub const IFA_UNSPEC: _bindgen_ty_54 = _bindgen_ty_54::IFA_UNSPEC;
-pub const IFA_ADDRESS: _bindgen_ty_54 = _bindgen_ty_54::IFA_ADDRESS;
-pub const IFA_LOCAL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LOCAL;
-pub const IFA_LABEL: _bindgen_ty_54 = _bindgen_ty_54::IFA_LABEL;
-pub const IFA_BROADCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_BROADCAST;
-pub const IFA_ANYCAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_ANYCAST;
-pub const IFA_CACHEINFO: _bindgen_ty_54 = _bindgen_ty_54::IFA_CACHEINFO;
-pub const IFA_MULTICAST: _bindgen_ty_54 = _bindgen_ty_54::IFA_MULTICAST;
-pub const IFA_FLAGS: _bindgen_ty_54 = _bindgen_ty_54::IFA_FLAGS;
-pub const IFA_RT_PRIORITY: _bindgen_ty_54 = _bindgen_ty_54::IFA_RT_PRIORITY;
-pub const IFA_TARGET_NETNSID: _bindgen_ty_54 = _bindgen_ty_54::IFA_TARGET_NETNSID;
-pub const IFA_PROTO: _bindgen_ty_54 = _bindgen_ty_54::IFA_PROTO;
-pub const __IFA_MAX: _bindgen_ty_54 = _bindgen_ty_54::__IFA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_54 {
-IFA_UNSPEC = 0,
-IFA_ADDRESS = 1,
-IFA_LOCAL = 2,
-IFA_LABEL = 3,
-IFA_BROADCAST = 4,
-IFA_ANYCAST = 5,
-IFA_CACHEINFO = 6,
-IFA_MULTICAST = 7,
-IFA_FLAGS = 8,
-IFA_RT_PRIORITY = 9,
-IFA_TARGET_NETNSID = 10,
-IFA_PROTO = 11,
-__IFA_MAX = 12,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifa_cacheinfo {
-pub ifa_prefered: __u32,
-pub ifa_valid: __u32,
-pub cstamp: __u32,
-pub tstamp: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndmsg {
-pub ndm_family: __u8,
-pub ndm_pad1: __u8,
-pub ndm_pad2: __u16,
-pub ndm_ifindex: __s32,
-pub ndm_state: __u16,
-pub ndm_flags: __u8,
-pub ndm_type: __u8,
-}
-pub const NDA_UNSPEC: _bindgen_ty_55 = _bindgen_ty_55::NDA_UNSPEC;
-pub const NDA_DST: _bindgen_ty_55 = _bindgen_ty_55::NDA_DST;
-pub const NDA_LLADDR: _bindgen_ty_55 = _bindgen_ty_55::NDA_LLADDR;
-pub const NDA_CACHEINFO: _bindgen_ty_55 = _bindgen_ty_55::NDA_CACHEINFO;
-pub const NDA_PROBES: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROBES;
-pub const NDA_VLAN: _bindgen_ty_55 = _bindgen_ty_55::NDA_VLAN;
-pub const NDA_PORT: _bindgen_ty_55 = _bindgen_ty_55::NDA_PORT;
-pub const NDA_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_VNI;
-pub const NDA_IFINDEX: _bindgen_ty_55 = _bindgen_ty_55::NDA_IFINDEX;
-pub const NDA_MASTER: _bindgen_ty_55 = _bindgen_ty_55::NDA_MASTER;
-pub const NDA_LINK_NETNSID: _bindgen_ty_55 = _bindgen_ty_55::NDA_LINK_NETNSID;
-pub const NDA_SRC_VNI: _bindgen_ty_55 = _bindgen_ty_55::NDA_SRC_VNI;
-pub const NDA_PROTOCOL: _bindgen_ty_55 = _bindgen_ty_55::NDA_PROTOCOL;
-pub const NDA_NH_ID: _bindgen_ty_55 = _bindgen_ty_55::NDA_NH_ID;
-pub const NDA_FDB_EXT_ATTRS: _bindgen_ty_55 = _bindgen_ty_55::NDA_FDB_EXT_ATTRS;
-pub const NDA_FLAGS_EXT: _bindgen_ty_55 = _bindgen_ty_55::NDA_FLAGS_EXT;
-pub const NDA_NDM_STATE_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_STATE_MASK;
-pub const NDA_NDM_FLAGS_MASK: _bindgen_ty_55 = _bindgen_ty_55::NDA_NDM_FLAGS_MASK;
-pub const __NDA_MAX: _bindgen_ty_55 = _bindgen_ty_55::__NDA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_55 {
-NDA_UNSPEC = 0,
-NDA_DST = 1,
-NDA_LLADDR = 2,
-NDA_CACHEINFO = 3,
-NDA_PROBES = 4,
-NDA_VLAN = 5,
-NDA_PORT = 6,
-NDA_VNI = 7,
-NDA_IFINDEX = 8,
-NDA_MASTER = 9,
-NDA_LINK_NETNSID = 10,
-NDA_SRC_VNI = 11,
-NDA_PROTOCOL = 12,
-NDA_NH_ID = 13,
-NDA_FDB_EXT_ATTRS = 14,
-NDA_FLAGS_EXT = 15,
-NDA_NDM_STATE_MASK = 16,
-NDA_NDM_FLAGS_MASK = 17,
-__NDA_MAX = 18,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nda_cacheinfo {
-pub ndm_confirmed: __u32,
-pub ndm_used: __u32,
-pub ndm_updated: __u32,
-pub ndm_refcnt: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_stats {
-pub ndts_allocs: __u64,
-pub ndts_destroys: __u64,
-pub ndts_hash_grows: __u64,
-pub ndts_res_failed: __u64,
-pub ndts_lookups: __u64,
-pub ndts_hits: __u64,
-pub ndts_rcv_probes_mcast: __u64,
-pub ndts_rcv_probes_ucast: __u64,
-pub ndts_periodic_gc_runs: __u64,
-pub ndts_forced_gc_runs: __u64,
-pub ndts_table_fulls: __u64,
-}
-pub const NDTPA_UNSPEC: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UNSPEC;
-pub const NDTPA_IFINDEX: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_IFINDEX;
-pub const NDTPA_REFCNT: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REFCNT;
-pub const NDTPA_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_REACHABLE_TIME;
-pub const NDTPA_BASE_REACHABLE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_BASE_REACHABLE_TIME;
-pub const NDTPA_RETRANS_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_RETRANS_TIME;
-pub const NDTPA_GC_STALETIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_GC_STALETIME;
-pub const NDTPA_DELAY_PROBE_TIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_DELAY_PROBE_TIME;
-pub const NDTPA_QUEUE_LEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LEN;
-pub const NDTPA_APP_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_APP_PROBES;
-pub const NDTPA_UCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_UCAST_PROBES;
-pub const NDTPA_MCAST_PROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_PROBES;
-pub const NDTPA_ANYCAST_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_ANYCAST_DELAY;
-pub const NDTPA_PROXY_DELAY: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_DELAY;
-pub const NDTPA_PROXY_QLEN: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PROXY_QLEN;
-pub const NDTPA_LOCKTIME: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_LOCKTIME;
-pub const NDTPA_QUEUE_LENBYTES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_QUEUE_LENBYTES;
-pub const NDTPA_MCAST_REPROBES: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_MCAST_REPROBES;
-pub const NDTPA_PAD: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_PAD;
-pub const NDTPA_INTERVAL_PROBE_TIME_MS: _bindgen_ty_56 = _bindgen_ty_56::NDTPA_INTERVAL_PROBE_TIME_MS;
-pub const __NDTPA_MAX: _bindgen_ty_56 = _bindgen_ty_56::__NDTPA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_56 {
-NDTPA_UNSPEC = 0,
-NDTPA_IFINDEX = 1,
-NDTPA_REFCNT = 2,
-NDTPA_REACHABLE_TIME = 3,
-NDTPA_BASE_REACHABLE_TIME = 4,
-NDTPA_RETRANS_TIME = 5,
-NDTPA_GC_STALETIME = 6,
-NDTPA_DELAY_PROBE_TIME = 7,
-NDTPA_QUEUE_LEN = 8,
-NDTPA_APP_PROBES = 9,
-NDTPA_UCAST_PROBES = 10,
-NDTPA_MCAST_PROBES = 11,
-NDTPA_ANYCAST_DELAY = 12,
-NDTPA_PROXY_DELAY = 13,
-NDTPA_PROXY_QLEN = 14,
-NDTPA_LOCKTIME = 15,
-NDTPA_QUEUE_LENBYTES = 16,
-NDTPA_MCAST_REPROBES = 17,
-NDTPA_PAD = 18,
-NDTPA_INTERVAL_PROBE_TIME_MS = 19,
-__NDTPA_MAX = 20,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndtmsg {
-pub ndtm_family: __u8,
-pub ndtm_pad1: __u8,
-pub ndtm_pad2: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ndt_config {
-pub ndtc_key_len: __u16,
-pub ndtc_entry_size: __u16,
-pub ndtc_entries: __u32,
-pub ndtc_last_flush: __u32,
-pub ndtc_last_rand: __u32,
-pub ndtc_hash_rnd: __u32,
-pub ndtc_hash_mask: __u32,
-pub ndtc_hash_chain_gc: __u32,
-pub ndtc_proxy_qlen: __u32,
-}
-pub const NDTA_UNSPEC: _bindgen_ty_57 = _bindgen_ty_57::NDTA_UNSPEC;
-pub const NDTA_NAME: _bindgen_ty_57 = _bindgen_ty_57::NDTA_NAME;
-pub const NDTA_THRESH1: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH1;
-pub const NDTA_THRESH2: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH2;
-pub const NDTA_THRESH3: _bindgen_ty_57 = _bindgen_ty_57::NDTA_THRESH3;
-pub const NDTA_CONFIG: _bindgen_ty_57 = _bindgen_ty_57::NDTA_CONFIG;
-pub const NDTA_PARMS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PARMS;
-pub const NDTA_STATS: _bindgen_ty_57 = _bindgen_ty_57::NDTA_STATS;
-pub const NDTA_GC_INTERVAL: _bindgen_ty_57 = _bindgen_ty_57::NDTA_GC_INTERVAL;
-pub const NDTA_PAD: _bindgen_ty_57 = _bindgen_ty_57::NDTA_PAD;
-pub const __NDTA_MAX: _bindgen_ty_57 = _bindgen_ty_57::__NDTA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_57 {
-NDTA_UNSPEC = 0,
-NDTA_NAME = 1,
-NDTA_THRESH1 = 2,
-NDTA_THRESH2 = 3,
-NDTA_THRESH3 = 4,
-NDTA_CONFIG = 5,
-NDTA_PARMS = 6,
-NDTA_STATS = 7,
-NDTA_GC_INTERVAL = 8,
-NDTA_PAD = 9,
-__NDTA_MAX = 10,
-}
-pub const FDB_NOTIFY_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_BIT;
-pub const FDB_NOTIFY_INACTIVE_BIT: _bindgen_ty_58 = _bindgen_ty_58::FDB_NOTIFY_INACTIVE_BIT;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_58 {
-FDB_NOTIFY_BIT = 1,
-FDB_NOTIFY_INACTIVE_BIT = 2,
-}
-pub const NFEA_UNSPEC: _bindgen_ty_59 = _bindgen_ty_59::NFEA_UNSPEC;
-pub const NFEA_ACTIVITY_NOTIFY: _bindgen_ty_59 = _bindgen_ty_59::NFEA_ACTIVITY_NOTIFY;
-pub const NFEA_DONT_REFRESH: _bindgen_ty_59 = _bindgen_ty_59::NFEA_DONT_REFRESH;
-pub const __NFEA_MAX: _bindgen_ty_59 = _bindgen_ty_59::__NFEA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_59 {
-NFEA_UNSPEC = 0,
-NFEA_ACTIVITY_NOTIFY = 1,
-NFEA_DONT_REFRESH = 2,
-__NFEA_MAX = 3,
-}
-pub const RTM_BASE: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_NEWLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_BASE;
-pub const RTM_DELLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINK;
-pub const RTM_GETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINK;
-pub const RTM_SETLINK: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETLINK;
-pub const RTM_NEWADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDR;
-pub const RTM_DELADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDR;
-pub const RTM_GETADDR: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDR;
-pub const RTM_NEWROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWROUTE;
-pub const RTM_DELROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELROUTE;
-pub const RTM_GETROUTE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETROUTE;
-pub const RTM_NEWNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGH;
-pub const RTM_DELNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEIGH;
-pub const RTM_GETNEIGH: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGH;
-pub const RTM_NEWRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWRULE;
-pub const RTM_DELRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELRULE;
-pub const RTM_GETRULE: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETRULE;
-pub const RTM_NEWQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWQDISC;
-pub const RTM_DELQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELQDISC;
-pub const RTM_GETQDISC: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETQDISC;
-pub const RTM_NEWTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTCLASS;
-pub const RTM_DELTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTCLASS;
-pub const RTM_GETTCLASS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTCLASS;
-pub const RTM_NEWTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTFILTER;
-pub const RTM_DELTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTFILTER;
-pub const RTM_GETTFILTER: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTFILTER;
-pub const RTM_NEWACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWACTION;
-pub const RTM_DELACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELACTION;
-pub const RTM_GETACTION: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETACTION;
-pub const RTM_NEWPREFIX: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWPREFIX;
-pub const RTM_GETMULTICAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMULTICAST;
-pub const RTM_GETANYCAST: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETANYCAST;
-pub const RTM_NEWNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEIGHTBL;
-pub const RTM_GETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEIGHTBL;
-pub const RTM_SETNEIGHTBL: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETNEIGHTBL;
-pub const RTM_NEWNDUSEROPT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNDUSEROPT;
-pub const RTM_NEWADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWADDRLABEL;
-pub const RTM_DELADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELADDRLABEL;
-pub const RTM_GETADDRLABEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETADDRLABEL;
-pub const RTM_GETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETDCB;
-pub const RTM_SETDCB: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETDCB;
-pub const RTM_NEWNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNETCONF;
-pub const RTM_DELNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNETCONF;
-pub const RTM_GETNETCONF: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNETCONF;
-pub const RTM_NEWMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWMDB;
-pub const RTM_DELMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELMDB;
-pub const RTM_GETMDB: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETMDB;
-pub const RTM_NEWNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNSID;
-pub const RTM_DELNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNSID;
-pub const RTM_GETNSID: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNSID;
-pub const RTM_NEWSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWSTATS;
-pub const RTM_GETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETSTATS;
-pub const RTM_SETSTATS: _bindgen_ty_60 = _bindgen_ty_60::RTM_SETSTATS;
-pub const RTM_NEWCACHEREPORT: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCACHEREPORT;
-pub const RTM_NEWCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWCHAIN;
-pub const RTM_DELCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELCHAIN;
-pub const RTM_GETCHAIN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETCHAIN;
-pub const RTM_NEWNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOP;
-pub const RTM_DELNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOP;
-pub const RTM_GETNEXTHOP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOP;
-pub const RTM_NEWLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWLINKPROP;
-pub const RTM_DELLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELLINKPROP;
-pub const RTM_GETLINKPROP: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETLINKPROP;
-pub const RTM_NEWVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWVLAN;
-pub const RTM_DELVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELVLAN;
-pub const RTM_GETVLAN: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETVLAN;
-pub const RTM_NEWNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWNEXTHOPBUCKET;
-pub const RTM_DELNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELNEXTHOPBUCKET;
-pub const RTM_GETNEXTHOPBUCKET: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETNEXTHOPBUCKET;
-pub const RTM_NEWTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_NEWTUNNEL;
-pub const RTM_DELTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_DELTUNNEL;
-pub const RTM_GETTUNNEL: _bindgen_ty_60 = _bindgen_ty_60::RTM_GETTUNNEL;
-pub const __RTM_MAX: _bindgen_ty_60 = _bindgen_ty_60::__RTM_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_60 {
-RTM_BASE = 16,
-RTM_DELLINK = 17,
-RTM_GETLINK = 18,
-RTM_SETLINK = 19,
-RTM_NEWADDR = 20,
-RTM_DELADDR = 21,
-RTM_GETADDR = 22,
-RTM_NEWROUTE = 24,
-RTM_DELROUTE = 25,
-RTM_GETROUTE = 26,
-RTM_NEWNEIGH = 28,
-RTM_DELNEIGH = 29,
-RTM_GETNEIGH = 30,
-RTM_NEWRULE = 32,
-RTM_DELRULE = 33,
-RTM_GETRULE = 34,
-RTM_NEWQDISC = 36,
-RTM_DELQDISC = 37,
-RTM_GETQDISC = 38,
-RTM_NEWTCLASS = 40,
-RTM_DELTCLASS = 41,
-RTM_GETTCLASS = 42,
-RTM_NEWTFILTER = 44,
-RTM_DELTFILTER = 45,
-RTM_GETTFILTER = 46,
-RTM_NEWACTION = 48,
-RTM_DELACTION = 49,
-RTM_GETACTION = 50,
-RTM_NEWPREFIX = 52,
-RTM_GETMULTICAST = 58,
-RTM_GETANYCAST = 62,
-RTM_NEWNEIGHTBL = 64,
-RTM_GETNEIGHTBL = 66,
-RTM_SETNEIGHTBL = 67,
-RTM_NEWNDUSEROPT = 68,
-RTM_NEWADDRLABEL = 72,
-RTM_DELADDRLABEL = 73,
-RTM_GETADDRLABEL = 74,
-RTM_GETDCB = 78,
-RTM_SETDCB = 79,
-RTM_NEWNETCONF = 80,
-RTM_DELNETCONF = 81,
-RTM_GETNETCONF = 82,
-RTM_NEWMDB = 84,
-RTM_DELMDB = 85,
-RTM_GETMDB = 86,
-RTM_NEWNSID = 88,
-RTM_DELNSID = 89,
-RTM_GETNSID = 90,
-RTM_NEWSTATS = 92,
-RTM_GETSTATS = 94,
-RTM_SETSTATS = 95,
-RTM_NEWCACHEREPORT = 96,
-RTM_NEWCHAIN = 100,
-RTM_DELCHAIN = 101,
-RTM_GETCHAIN = 102,
-RTM_NEWNEXTHOP = 104,
-RTM_DELNEXTHOP = 105,
-RTM_GETNEXTHOP = 106,
-RTM_NEWLINKPROP = 108,
-RTM_DELLINKPROP = 109,
-RTM_GETLINKPROP = 110,
-RTM_NEWVLAN = 112,
-RTM_DELVLAN = 113,
-RTM_GETVLAN = 114,
-RTM_NEWNEXTHOPBUCKET = 116,
-RTM_DELNEXTHOPBUCKET = 117,
-RTM_GETNEXTHOPBUCKET = 118,
-RTM_NEWTUNNEL = 120,
-RTM_DELTUNNEL = 121,
-RTM_GETTUNNEL = 122,
-__RTM_MAX = 123,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtattr {
-pub rta_len: crate::ctypes::c_ushort,
-pub rta_type: crate::ctypes::c_ushort,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtmsg {
-pub rtm_family: crate::ctypes::c_uchar,
-pub rtm_dst_len: crate::ctypes::c_uchar,
-pub rtm_src_len: crate::ctypes::c_uchar,
-pub rtm_tos: crate::ctypes::c_uchar,
-pub rtm_table: crate::ctypes::c_uchar,
-pub rtm_protocol: crate::ctypes::c_uchar,
-pub rtm_scope: crate::ctypes::c_uchar,
-pub rtm_type: crate::ctypes::c_uchar,
-pub rtm_flags: crate::ctypes::c_uint,
-}
-pub const RTN_UNSPEC: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNSPEC;
-pub const RTN_UNICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNICAST;
-pub const RTN_LOCAL: _bindgen_ty_61 = _bindgen_ty_61::RTN_LOCAL;
-pub const RTN_BROADCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_BROADCAST;
-pub const RTN_ANYCAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_ANYCAST;
-pub const RTN_MULTICAST: _bindgen_ty_61 = _bindgen_ty_61::RTN_MULTICAST;
-pub const RTN_BLACKHOLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_BLACKHOLE;
-pub const RTN_UNREACHABLE: _bindgen_ty_61 = _bindgen_ty_61::RTN_UNREACHABLE;
-pub const RTN_PROHIBIT: _bindgen_ty_61 = _bindgen_ty_61::RTN_PROHIBIT;
-pub const RTN_THROW: _bindgen_ty_61 = _bindgen_ty_61::RTN_THROW;
-pub const RTN_NAT: _bindgen_ty_61 = _bindgen_ty_61::RTN_NAT;
-pub const RTN_XRESOLVE: _bindgen_ty_61 = _bindgen_ty_61::RTN_XRESOLVE;
-pub const __RTN_MAX: _bindgen_ty_61 = _bindgen_ty_61::__RTN_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_61 {
-RTN_UNSPEC = 0,
-RTN_UNICAST = 1,
-RTN_LOCAL = 2,
-RTN_BROADCAST = 3,
-RTN_ANYCAST = 4,
-RTN_MULTICAST = 5,
-RTN_BLACKHOLE = 6,
-RTN_UNREACHABLE = 7,
-RTN_PROHIBIT = 8,
-RTN_THROW = 9,
-RTN_NAT = 10,
-RTN_XRESOLVE = 11,
-__RTN_MAX = 12,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_scope_t {
-RT_SCOPE_UNIVERSE = 0,
-RT_SCOPE_SITE = 200,
-RT_SCOPE_LINK = 253,
-RT_SCOPE_HOST = 254,
-RT_SCOPE_NOWHERE = 255,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rt_class_t {
-RT_TABLE_UNSPEC = 0,
-RT_TABLE_COMPAT = 252,
-RT_TABLE_DEFAULT = 253,
-RT_TABLE_MAIN = 254,
-RT_TABLE_LOCAL = 255,
-RT_TABLE_MAX = 4294967295,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtattr_type_t {
-RTA_UNSPEC = 0,
-RTA_DST = 1,
-RTA_SRC = 2,
-RTA_IIF = 3,
-RTA_OIF = 4,
-RTA_GATEWAY = 5,
-RTA_PRIORITY = 6,
-RTA_PREFSRC = 7,
-RTA_METRICS = 8,
-RTA_MULTIPATH = 9,
-RTA_PROTOINFO = 10,
-RTA_FLOW = 11,
-RTA_CACHEINFO = 12,
-RTA_SESSION = 13,
-RTA_MP_ALGO = 14,
-RTA_TABLE = 15,
-RTA_MARK = 16,
-RTA_MFC_STATS = 17,
-RTA_VIA = 18,
-RTA_NEWDST = 19,
-RTA_PREF = 20,
-RTA_ENCAP_TYPE = 21,
-RTA_ENCAP = 22,
-RTA_EXPIRES = 23,
-RTA_PAD = 24,
-RTA_UID = 25,
-RTA_TTL_PROPAGATE = 26,
-RTA_IP_PROTO = 27,
-RTA_SPORT = 28,
-RTA_DPORT = 29,
-RTA_NH_ID = 30,
-__RTA_MAX = 31,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtnexthop {
-pub rtnh_len: crate::ctypes::c_ushort,
-pub rtnh_flags: crate::ctypes::c_uchar,
-pub rtnh_hops: crate::ctypes::c_uchar,
-pub rtnh_ifindex: crate::ctypes::c_int,
-}
-#[repr(C)]
-#[derive(Debug)]
-pub struct rtvia {
-pub rtvia_family: __kernel_sa_family_t,
-pub rtvia_addr: __IncompleteArrayField<__u8>,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_cacheinfo {
-pub rta_clntref: __u32,
-pub rta_lastuse: __u32,
-pub rta_expires: __s32,
-pub rta_error: __u32,
-pub rta_used: __u32,
-pub rta_id: __u32,
-pub rta_ts: __u32,
-pub rta_tsage: __u32,
-}
-pub const RTAX_UNSPEC: _bindgen_ty_62 = _bindgen_ty_62::RTAX_UNSPEC;
-pub const RTAX_LOCK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_LOCK;
-pub const RTAX_MTU: _bindgen_ty_62 = _bindgen_ty_62::RTAX_MTU;
-pub const RTAX_WINDOW: _bindgen_ty_62 = _bindgen_ty_62::RTAX_WINDOW;
-pub const RTAX_RTT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTT;
-pub const RTAX_RTTVAR: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTTVAR;
-pub const RTAX_SSTHRESH: _bindgen_ty_62 = _bindgen_ty_62::RTAX_SSTHRESH;
-pub const RTAX_CWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CWND;
-pub const RTAX_ADVMSS: _bindgen_ty_62 = _bindgen_ty_62::RTAX_ADVMSS;
-pub const RTAX_REORDERING: _bindgen_ty_62 = _bindgen_ty_62::RTAX_REORDERING;
-pub const RTAX_HOPLIMIT: _bindgen_ty_62 = _bindgen_ty_62::RTAX_HOPLIMIT;
-pub const RTAX_INITCWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITCWND;
-pub const RTAX_FEATURES: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FEATURES;
-pub const RTAX_RTO_MIN: _bindgen_ty_62 = _bindgen_ty_62::RTAX_RTO_MIN;
-pub const RTAX_INITRWND: _bindgen_ty_62 = _bindgen_ty_62::RTAX_INITRWND;
-pub const RTAX_QUICKACK: _bindgen_ty_62 = _bindgen_ty_62::RTAX_QUICKACK;
-pub const RTAX_CC_ALGO: _bindgen_ty_62 = _bindgen_ty_62::RTAX_CC_ALGO;
-pub const RTAX_FASTOPEN_NO_COOKIE: _bindgen_ty_62 = _bindgen_ty_62::RTAX_FASTOPEN_NO_COOKIE;
-pub const __RTAX_MAX: _bindgen_ty_62 = _bindgen_ty_62::__RTAX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_62 {
-RTAX_UNSPEC = 0,
-RTAX_LOCK = 1,
-RTAX_MTU = 2,
-RTAX_WINDOW = 3,
-RTAX_RTT = 4,
-RTAX_RTTVAR = 5,
-RTAX_SSTHRESH = 6,
-RTAX_CWND = 7,
-RTAX_ADVMSS = 8,
-RTAX_REORDERING = 9,
-RTAX_HOPLIMIT = 10,
-RTAX_INITCWND = 11,
-RTAX_FEATURES = 12,
-RTAX_RTO_MIN = 13,
-RTAX_INITRWND = 14,
-RTAX_QUICKACK = 15,
-RTAX_CC_ALGO = 16,
-RTAX_FASTOPEN_NO_COOKIE = 17,
-__RTAX_MAX = 18,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct rta_session {
-pub proto: __u8,
-pub pad1: __u8,
-pub pad2: __u16,
-pub u: rta_session__bindgen_ty_1,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union rta_session__bindgen_ty_1 {
-pub ports: rta_session__bindgen_ty_1__bindgen_ty_1,
-pub icmpt: rta_session__bindgen_ty_1__bindgen_ty_2,
-pub spi: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_1 {
-pub sport: __u16,
-pub dport: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_session__bindgen_ty_1__bindgen_ty_2 {
-pub type_: __u8,
-pub code: __u8,
-pub ident: __u16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rta_mfc_stats {
-pub mfcs_packets: __u64,
-pub mfcs_bytes: __u64,
-pub mfcs_wrong_if: __u64,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct rtgenmsg {
-pub rtgen_family: crate::ctypes::c_uchar,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct ifinfomsg {
-pub ifi_family: crate::ctypes::c_uchar,
-pub __ifi_pad: crate::ctypes::c_uchar,
-pub ifi_type: crate::ctypes::c_ushort,
-pub ifi_index: crate::ctypes::c_int,
-pub ifi_flags: crate::ctypes::c_uint,
-pub ifi_change: crate::ctypes::c_uint,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefixmsg {
-pub prefix_family: crate::ctypes::c_uchar,
-pub prefix_pad1: crate::ctypes::c_uchar,
-pub prefix_pad2: crate::ctypes::c_ushort,
-pub prefix_ifindex: crate::ctypes::c_int,
-pub prefix_type: crate::ctypes::c_uchar,
-pub prefix_len: crate::ctypes::c_uchar,
-pub prefix_flags: crate::ctypes::c_uchar,
-pub prefix_pad3: crate::ctypes::c_uchar,
-}
-pub const PREFIX_UNSPEC: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_UNSPEC;
-pub const PREFIX_ADDRESS: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_ADDRESS;
-pub const PREFIX_CACHEINFO: _bindgen_ty_63 = _bindgen_ty_63::PREFIX_CACHEINFO;
-pub const __PREFIX_MAX: _bindgen_ty_63 = _bindgen_ty_63::__PREFIX_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_63 {
-PREFIX_UNSPEC = 0,
-PREFIX_ADDRESS = 1,
-PREFIX_CACHEINFO = 2,
-__PREFIX_MAX = 3,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct prefix_cacheinfo {
-pub preferred_time: __u32,
-pub valid_time: __u32,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcmsg {
-pub tcm_family: crate::ctypes::c_uchar,
-pub tcm__pad1: crate::ctypes::c_uchar,
-pub tcm__pad2: crate::ctypes::c_ushort,
-pub tcm_ifindex: crate::ctypes::c_int,
-pub tcm_handle: __u32,
-pub tcm_parent: __u32,
-pub tcm_info: __u32,
-}
-pub const TCA_UNSPEC: _bindgen_ty_64 = _bindgen_ty_64::TCA_UNSPEC;
-pub const TCA_KIND: _bindgen_ty_64 = _bindgen_ty_64::TCA_KIND;
-pub const TCA_OPTIONS: _bindgen_ty_64 = _bindgen_ty_64::TCA_OPTIONS;
-pub const TCA_STATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS;
-pub const TCA_XSTATS: _bindgen_ty_64 = _bindgen_ty_64::TCA_XSTATS;
-pub const TCA_RATE: _bindgen_ty_64 = _bindgen_ty_64::TCA_RATE;
-pub const TCA_FCNT: _bindgen_ty_64 = _bindgen_ty_64::TCA_FCNT;
-pub const TCA_STATS2: _bindgen_ty_64 = _bindgen_ty_64::TCA_STATS2;
-pub const TCA_STAB: _bindgen_ty_64 = _bindgen_ty_64::TCA_STAB;
-pub const TCA_PAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_PAD;
-pub const TCA_DUMP_INVISIBLE: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_INVISIBLE;
-pub const TCA_CHAIN: _bindgen_ty_64 = _bindgen_ty_64::TCA_CHAIN;
-pub const TCA_HW_OFFLOAD: _bindgen_ty_64 = _bindgen_ty_64::TCA_HW_OFFLOAD;
-pub const TCA_INGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_INGRESS_BLOCK;
-pub const TCA_EGRESS_BLOCK: _bindgen_ty_64 = _bindgen_ty_64::TCA_EGRESS_BLOCK;
-pub const TCA_DUMP_FLAGS: _bindgen_ty_64 = _bindgen_ty_64::TCA_DUMP_FLAGS;
-pub const __TCA_MAX: _bindgen_ty_64 = _bindgen_ty_64::__TCA_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_64 {
-TCA_UNSPEC = 0,
-TCA_KIND = 1,
-TCA_OPTIONS = 2,
-TCA_STATS = 3,
-TCA_XSTATS = 4,
-TCA_RATE = 5,
-TCA_FCNT = 6,
-TCA_STATS2 = 7,
-TCA_STAB = 8,
-TCA_PAD = 9,
-TCA_DUMP_INVISIBLE = 10,
-TCA_CHAIN = 11,
-TCA_HW_OFFLOAD = 12,
-TCA_INGRESS_BLOCK = 13,
-TCA_EGRESS_BLOCK = 14,
-TCA_DUMP_FLAGS = 15,
-__TCA_MAX = 16,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct nduseroptmsg {
-pub nduseropt_family: crate::ctypes::c_uchar,
-pub nduseropt_pad1: crate::ctypes::c_uchar,
-pub nduseropt_opts_len: crate::ctypes::c_ushort,
-pub nduseropt_ifindex: crate::ctypes::c_int,
-pub nduseropt_icmp_type: __u8,
-pub nduseropt_icmp_code: __u8,
-pub nduseropt_pad2: crate::ctypes::c_ushort,
-pub nduseropt_pad3: crate::ctypes::c_uint,
-}
-pub const NDUSEROPT_UNSPEC: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_UNSPEC;
-pub const NDUSEROPT_SRCADDR: _bindgen_ty_65 = _bindgen_ty_65::NDUSEROPT_SRCADDR;
-pub const __NDUSEROPT_MAX: _bindgen_ty_65 = _bindgen_ty_65::__NDUSEROPT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_65 {
-NDUSEROPT_UNSPEC = 0,
-NDUSEROPT_SRCADDR = 1,
-__NDUSEROPT_MAX = 2,
-}
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum rtnetlink_groups {
-RTNLGRP_NONE = 0,
-RTNLGRP_LINK = 1,
-RTNLGRP_NOTIFY = 2,
-RTNLGRP_NEIGH = 3,
-RTNLGRP_TC = 4,
-RTNLGRP_IPV4_IFADDR = 5,
-RTNLGRP_IPV4_MROUTE = 6,
-RTNLGRP_IPV4_ROUTE = 7,
-RTNLGRP_IPV4_RULE = 8,
-RTNLGRP_IPV6_IFADDR = 9,
-RTNLGRP_IPV6_MROUTE = 10,
-RTNLGRP_IPV6_ROUTE = 11,
-RTNLGRP_IPV6_IFINFO = 12,
-RTNLGRP_DECnet_IFADDR = 13,
-RTNLGRP_NOP2 = 14,
-RTNLGRP_DECnet_ROUTE = 15,
-RTNLGRP_DECnet_RULE = 16,
-RTNLGRP_NOP4 = 17,
-RTNLGRP_IPV6_PREFIX = 18,
-RTNLGRP_IPV6_RULE = 19,
-RTNLGRP_ND_USEROPT = 20,
-RTNLGRP_PHONET_IFADDR = 21,
-RTNLGRP_PHONET_ROUTE = 22,
-RTNLGRP_DCB = 23,
-RTNLGRP_IPV4_NETCONF = 24,
-RTNLGRP_IPV6_NETCONF = 25,
-RTNLGRP_MDB = 26,
-RTNLGRP_MPLS_ROUTE = 27,
-RTNLGRP_NSID = 28,
-RTNLGRP_MPLS_NETCONF = 29,
-RTNLGRP_IPV4_MROUTE_R = 30,
-RTNLGRP_IPV6_MROUTE_R = 31,
-RTNLGRP_NEXTHOP = 32,
-RTNLGRP_BRVLAN = 33,
-RTNLGRP_MCTP_IFADDR = 34,
-RTNLGRP_TUNNEL = 35,
-RTNLGRP_STATS = 36,
-__RTNLGRP_MAX = 37,
-}
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct tcamsg {
-pub tca_family: crate::ctypes::c_uchar,
-pub tca__pad1: crate::ctypes::c_uchar,
-pub tca__pad2: crate::ctypes::c_ushort,
-}
-pub const TCA_ROOT_UNSPEC: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_UNSPEC;
-pub const TCA_ROOT_TAB: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TAB;
-pub const TCA_ROOT_FLAGS: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_FLAGS;
-pub const TCA_ROOT_COUNT: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_COUNT;
-pub const TCA_ROOT_TIME_DELTA: _bindgen_ty_66 = _bindgen_ty_66::TCA_ROOT_TIME_DELTA;
-pub const __TCA_ROOT_MAX: _bindgen_ty_66 = _bindgen_ty_66::__TCA_ROOT_MAX;
-#[repr(u32)]
-#[non_exhaustive]
-#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-pub enum _bindgen_ty_66 {
-TCA_ROOT_UNSPEC = 0,
-TCA_ROOT_TAB = 1,
-TCA_ROOT_FLAGS = 2,
-TCA_ROOT_COUNT = 3,
-TCA_ROOT_TIME_DELTA = 4,
-__TCA_ROOT_MAX = 5,
-}
diff --git a/vendor/linux-raw-sys/.cargo-checksum.json b/vendor/linux-raw-sys/.cargo-checksum.json
index e5b1b7a43..5aa789af5 100644
--- a/vendor/linux-raw-sys/.cargo-checksum.json
+++ b/vendor/linux-raw-sys/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CODE_OF_CONDUCT.md":"ccd9e538ce44713a2486cc8e4c01b8c8b846d1ccff15de728d8d6fa9a7f846cd","COPYRIGHT":"3290ae0fbc9ddb77d2239121d710f0bb9d31b3b4744e6d97fe01e652b4c1870b","Cargo.toml":"53b55bc02bcd7f75bd0be76f9440ffb888294cd35e9287f644188a82252c6ce0","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-Apache-2.0_WITH_LLVM-exception":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","ORG_CODE_OF_CONDUCT.md":"a62b69bf86e605ee1bcbb2f0a12ba79e4cebb6983a7b6491949750aecc4f2178","README.md":"3d4ae2ec9429adfd329b4506f7ca6faa84dca30d1c3b416f8f4e6f57bdb3aa96","src/aarch64/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/aarch64/general.rs":"a5be5de0f98244a28265c46588c324ba3f8dee51717e6222a1241b10a9ac593d","src/aarch64/if_ether.rs":"f558bfec1f5e80235db79f507e4afd3120647a5caddf17a87b7ad5540e5c1462","src/aarch64/io_uring.rs":"9ce4c9005b5b99e041b9d58be6866367605e4bee1e30a7096235cb234ed73e1b","src/aarch64/ioctl.rs":"f83af7f7cab6611c9f316b2289998d3276d844ac8f96111bc65f6c3340c3301a","src/aarch64/net.rs":"b88bcacd7cd153d417cb3adb176bbc441dda1e90880e53d89404439adf47ab88","src/aarch64/netlink.rs":"f6642310b8bd37b5775ba1a52cfe638beddd7c880f8dfacab62c3180255fb75f","src/aarch64/prctl.rs":"a80e2f89aa978210d980538e1d9c5b922bb073d118ee51b1f14c1f397c7cd576","src/aarch64/system.rs":"851a95c0d1b76782970a28c373a313954eea0db35f6ebce562e6047095f587c4","src/arm/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/arm/general.rs":"eb33bd0c5835ecf0a33e582e8460f056ef79d9a2fca06c7607568ed0605d1391","src/arm/if_ether.rs":"3873beb1f57bdcc52da345608c5deda5937d7b92b114b414ce6161784173b925","src/arm/io_uring.rs":"5e2e254d5853ed30568e17fab184f8cc458607465d19dcee6c87ca1b565d6d2d","src/arm/ioctl.rs":"54cb9bdc5fe4ee7cff30e087bb0d04f1d811b55be7604bb056387f859120935a","src/arm/net.rs":"3192a24c15f0f4e4d856678fd05e82d7ae3585921f6243e907c539d603873896","src/arm/netlink.rs":"2f98b8c0349c2d3d538164e4d06c28fa1fb9308f7691aa097526ce2fb3ac176f","src/arm/prctl.rs":"5477c74fec958d9f9d2028f58e95657840ead28445956e53fe0894e45922f8a5","src/arm/system.rs":"9aca94a4a553e09e6d2d43741fb8c120c05a193822e850951dc469bbd89cc703","src/csky/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/csky/general.rs":"dce0451c2876b8ab010026d5f100298c2024b8706dcb459d4799ee2fdbd9200a","src/csky/if_ether.rs":"aac7a069000195b9b18c6d25b2d7c338efb1062347a84e31cda7c93de374b3c6","src/csky/io_uring.rs":"bb7541d82f627cb681ea11f4e5c4162b0d0616ca08fcc6d31bcf22ef813f754d","src/csky/ioctl.rs":"77f30e67f9a4748bc31184454a0ff45fd821c3536cd98dc2411def8eeb59a268","src/csky/net.rs":"6df28547fc867f3e66dab6561e494573a416add67c1968ec2371c43d8e28da86","src/csky/netlink.rs":"9fc99e88df0efc15d39b397c9d653c32b4729e31a2434e730435fbdfcb362da4","src/csky/prctl.rs":"8df2f33387d5b4865d9417f796cc4d43b3cf549cfa41d7ce7d41dd367ed8b6c9","src/csky/system.rs":"a2913685b359e60bbfae413b89a6fd37ea38fa448f980ffadef42d227b33ada5","src/elf.rs":"d78049c38c52dfca608fcf9790613df786a03a18a80e7eb8c7acf4cb19e9a8a9","src/lib.rs":"f3399ba35206764ac4e2d755cfc7e0c580464b8fcc76968f6c4b9f64523a1d02","src/loongarch64/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/loongarch64/general.rs":"95fbc2507feb167109ce386f939e72b8c5f5a16c18f8ab0389a74516c3ca288e","src/loongarch64/if_ether.rs":"a7b0918afc9dbf8e79490f83a809e4bd563af20ab2b3432d58b763ff31418daf","src/loongarch64/io_uring.rs":"ef851913c86bc2d629048e781edc76b59c63e659f8bd4bcd7fa7ff982186ed6d","src/loongarch64/ioctl.rs":"6f631e0ac37f2c2398168683a1523d1559b85369ffe4cdcc284ffe7455672c18","src/loongarch64/net.rs":"50ef111f314db8683e0f2f845f930e7e2209b97a17aa3e9fa774832ee9ef0599","src/loongarch64/netlink.rs":"789357343b94276e6f8fc8f3a32f06f3d3efd464c7850b2568dc609a49d1f305","src/loongarch64/prctl.rs":"624e4d3b8f3b4f1d6dcb1540c124ed03ce47f0580aa3425c0baed431dcd267ea","src/loongarch64/system.rs":"4cfcd4c28481b9ff5fc0330d5c713d637d3615c0184830d3a4391882eaed68f5","src/mips/errno.rs":"9ab1ed2bf371a27401745c2a6f9692f7e66dfd481d032cb40a354826d394ea8e","src/mips/general.rs":"ff31df33aa8a2ff9c1fdca63224130d2503bc3a1ff75bd86c16562069df4e9dd","src/mips/if_ether.rs":"1ecdc654cb3eda633bb7192829b1001a0a5ae5a126110b4208bbee5b41f87f5e","src/mips/io_uring.rs":"c69479bb1f862febe78e0989745c202146aaef7e8ceaa0d7bf291af584748992","src/mips/ioctl.rs":"f7464d2cd0548ab4735a1ca8deba47f13ea0946a9bf86adfec1a77feb3a0f475","src/mips/net.rs":"89b8cc80411dadd23843b037ceb06cef47af1e57244d974a805c3914d7ffa4aa","src/mips/netlink.rs":"5045dece259abaa5b5974500a20a9325e4cd6eb87c344dd7448056dff469994f","src/mips/prctl.rs":"cd59615adf6f561ef6c542df59cf25f75877693ca1c4c489f5e460eb7e798d4d","src/mips/system.rs":"acbc69a1fe7299860f8bd142bc2ff5595a410e1528994139062fc680d1a87e71","src/mips32r6/errno.rs":"9ab1ed2bf371a27401745c2a6f9692f7e66dfd481d032cb40a354826d394ea8e","src/mips32r6/general.rs":"ff31df33aa8a2ff9c1fdca63224130d2503bc3a1ff75bd86c16562069df4e9dd","src/mips32r6/if_ether.rs":"1ecdc654cb3eda633bb7192829b1001a0a5ae5a126110b4208bbee5b41f87f5e","src/mips32r6/io_uring.rs":"c69479bb1f862febe78e0989745c202146aaef7e8ceaa0d7bf291af584748992","src/mips32r6/ioctl.rs":"f7464d2cd0548ab4735a1ca8deba47f13ea0946a9bf86adfec1a77feb3a0f475","src/mips32r6/net.rs":"89b8cc80411dadd23843b037ceb06cef47af1e57244d974a805c3914d7ffa4aa","src/mips32r6/netlink.rs":"5045dece259abaa5b5974500a20a9325e4cd6eb87c344dd7448056dff469994f","src/mips32r6/prctl.rs":"cd59615adf6f561ef6c542df59cf25f75877693ca1c4c489f5e460eb7e798d4d","src/mips32r6/system.rs":"acbc69a1fe7299860f8bd142bc2ff5595a410e1528994139062fc680d1a87e71","src/mips64/errno.rs":"9ab1ed2bf371a27401745c2a6f9692f7e66dfd481d032cb40a354826d394ea8e","src/mips64/general.rs":"c7eaf11b39338a76aa1647a2ca90fbb8657e9811558aa831ad979da56e5a6a60","src/mips64/if_ether.rs":"6d24518acba5bc8fa2a775d039ed9594de8349d6028621134626ccaa8ea18bcd","src/mips64/io_uring.rs":"18bd5d96c53aff44f4a37a71f16fa12c11b7c934b395bf841e47d98283146a50","src/mips64/ioctl.rs":"39f3276ec6f36ba78f5635bd418310b21bc228902d4da889fa01094c26f9b57d","src/mips64/net.rs":"f979c44d7d0bd12847664a2864b2c38bfd8f5b90826e9e31d5c6e64ba6365859","src/mips64/netlink.rs":"18f139573337be18fb9bd56de4d0bd8af5c80828cdf68ef68751c18dcb39c761","src/mips64/prctl.rs":"a8d9ae240ce582d7b66e13937b99df73c7247ce9f69bfdd12109903d7c6dfb0e","src/mips64/system.rs":"95805c533a8eb8f53c28f138e6a2d12064681cc9db55d3042ee748c655a5d7cd","src/mips64r6/errno.rs":"9ab1ed2bf371a27401745c2a6f9692f7e66dfd481d032cb40a354826d394ea8e","src/mips64r6/general.rs":"c7eaf11b39338a76aa1647a2ca90fbb8657e9811558aa831ad979da56e5a6a60","src/mips64r6/if_ether.rs":"6d24518acba5bc8fa2a775d039ed9594de8349d6028621134626ccaa8ea18bcd","src/mips64r6/io_uring.rs":"18bd5d96c53aff44f4a37a71f16fa12c11b7c934b395bf841e47d98283146a50","src/mips64r6/ioctl.rs":"39f3276ec6f36ba78f5635bd418310b21bc228902d4da889fa01094c26f9b57d","src/mips64r6/net.rs":"f979c44d7d0bd12847664a2864b2c38bfd8f5b90826e9e31d5c6e64ba6365859","src/mips64r6/netlink.rs":"18f139573337be18fb9bd56de4d0bd8af5c80828cdf68ef68751c18dcb39c761","src/mips64r6/prctl.rs":"a8d9ae240ce582d7b66e13937b99df73c7247ce9f69bfdd12109903d7c6dfb0e","src/mips64r6/system.rs":"95805c533a8eb8f53c28f138e6a2d12064681cc9db55d3042ee748c655a5d7cd","src/powerpc/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/powerpc/general.rs":"f88e1b68f45f544c80b639d0aa8b9dba1ab79f4a0c47f3f65ece335cf36df8c7","src/powerpc/if_ether.rs":"56ab5fbf8c9d0dd0654412fabdca6759cbb421a876e5cebe2fec10e25728b55c","src/powerpc/io_uring.rs":"38ead79180c96e8af69929dacbc36e8cfbccec96875c61f094e531e6860639db","src/powerpc/ioctl.rs":"513a1dda33b2cd6c57212263c1bf0d8d443e54af6efe75e938fd700c1ca2b630","src/powerpc/net.rs":"86d206a03f980402d580fd872c26c2156acf6ea64cde4cc9379201a36bd3330a","src/powerpc/netlink.rs":"4f10870fbd23de17efd4cba6d5a40ba85564effc5d0b71f9d7f928a42cb77b20","src/powerpc/prctl.rs":"f236987bc8ae993ab2b0e88b2eacbae51eee4da170ac075552070a76c717d803","src/powerpc/system.rs":"3e01e5e145adb87263f04c9e053faac0c0758689fd32917d2c7c2eec1d89f9e6","src/powerpc64/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/powerpc64/general.rs":"87d30f8909dc64b9fa914139db7f0aad8544015b197f2113807a7baa31b1eacf","src/powerpc64/if_ether.rs":"15e12d56b1367cb5c9d8fd1b9995acf1429a923bf603698bd732efe1acc30cd6","src/powerpc64/io_uring.rs":"50018e504d78c584beaec3b1a6d477d30d566d25cb1a40b0a2adfb23d726674f","src/powerpc64/ioctl.rs":"513a1dda33b2cd6c57212263c1bf0d8d443e54af6efe75e938fd700c1ca2b630","src/powerpc64/net.rs":"70622d7df4f2c89941eee6b629e77b09c3b69d7b4b5ad40b1425843a470ab8cd","src/powerpc64/netlink.rs":"352a06995f7de6e4fc1c2ff54c1eccb93a3d833a923e834ec75c6a4d30ea5051","src/powerpc64/prctl.rs":"1fcccc5b6dac472a30b7701b5c9e436c238410077cfe158d600b51d55bcc074a","src/powerpc64/system.rs":"500116b7613a504ebad028cec1ba37323310e29864d885ae62191ccb1f86d333","src/riscv32/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/riscv32/general.rs":"7bd0740d489d74f2e4af6cf17ff4c5a0201bb8b1e074c0ef51c2af2a54a46243","src/riscv32/if_ether.rs":"aac7a069000195b9b18c6d25b2d7c338efb1062347a84e31cda7c93de374b3c6","src/riscv32/io_uring.rs":"5c67dde8fdb3641407d4ebd744171606b82596176343fe6766afd3220eda2ab1","src/riscv32/ioctl.rs":"b2a4c7d649b18a4d2a1142400de687d48c195dcf8a86b58ac261413c33809d7b","src/riscv32/net.rs":"6df28547fc867f3e66dab6561e494573a416add67c1968ec2371c43d8e28da86","src/riscv32/netlink.rs":"9fc99e88df0efc15d39b397c9d653c32b4729e31a2434e730435fbdfcb362da4","src/riscv32/prctl.rs":"8df2f33387d5b4865d9417f796cc4d43b3cf549cfa41d7ce7d41dd367ed8b6c9","src/riscv32/system.rs":"a2913685b359e60bbfae413b89a6fd37ea38fa448f980ffadef42d227b33ada5","src/riscv64/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/riscv64/general.rs":"bb8edd39188ced7f8e3f404c7559af11e1d80c8f18126e83ce03272d89e8ef0d","src/riscv64/if_ether.rs":"a7b0918afc9dbf8e79490f83a809e4bd563af20ab2b3432d58b763ff31418daf","src/riscv64/io_uring.rs":"ef851913c86bc2d629048e781edc76b59c63e659f8bd4bcd7fa7ff982186ed6d","src/riscv64/ioctl.rs":"6f631e0ac37f2c2398168683a1523d1559b85369ffe4cdcc284ffe7455672c18","src/riscv64/net.rs":"50ef111f314db8683e0f2f845f930e7e2209b97a17aa3e9fa774832ee9ef0599","src/riscv64/netlink.rs":"789357343b94276e6f8fc8f3a32f06f3d3efd464c7850b2568dc609a49d1f305","src/riscv64/prctl.rs":"624e4d3b8f3b4f1d6dcb1540c124ed03ce47f0580aa3425c0baed431dcd267ea","src/riscv64/system.rs":"4cfcd4c28481b9ff5fc0330d5c713d637d3615c0184830d3a4391882eaed68f5","src/s390x/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/s390x/general.rs":"f7fb19059aca9182d4cc97a807fbe1727b4082791e316c63365d115803948d18","src/s390x/if_ether.rs":"2a6b2132be1aebe126eb64ea230a82c2ab18433ece37226c9dacd81392ad6ca2","src/s390x/io_uring.rs":"57790b4ce46a4a2a87a329ff935033dfb430117bcc2154fa066c5d681f115319","src/s390x/ioctl.rs":"f806407c91520bc994c7cd638576686710700a4cfa30c8ca3f81d55ce1d6ecdd","src/s390x/net.rs":"28abfbe5beca5dff444ed226f90ea9e37e2f7bb5c12e564c1efb59600322d773","src/s390x/netlink.rs":"c3c11102a55d15dfb534d748c8bc8ece58c9d56170b6afe07d1f2cc783fd6372","src/s390x/prctl.rs":"6fe9f5349f9a694b391f309f208235c1d4669430d3f051ef64467576e91df7a1","src/s390x/system.rs":"f68e8afbd02bc87a8fec2cae4e367f296873f2c1a651032da4ccc4f1c0ed4670","src/sparc/errno.rs":"b3c5e1a6c8378d613c6ef3dd44e2199ea7455da65e83d6bb19582a79de880f80","src/sparc/general.rs":"13c5b4e0c6f9f2cfb9c062de637f88ff0b9114aaf940278cd7b4161b3d52c0c4","src/sparc/if_ether.rs":"c574c6d1ea11a8bb213b18928fe2d342c897d8ff04458991a5192eb401fbbc57","src/sparc/io_uring.rs":"d813aabc93f383c8522773ed431209627d810c78bcdb4dae931a702aae55e09f","src/sparc/ioctl.rs":"b2a4c7d649b18a4d2a1142400de687d48c195dcf8a86b58ac261413c33809d7b","src/sparc/net.rs":"aee68381686374b66f05b33d2b8235530af957831121c17c4583caef2e515855","src/sparc/netlink.rs":"0f176c24de7b2b19ac16dd95625947b8047d48bc7b871e12a3acd31f8e97c6f5","src/sparc/prctl.rs":"5f5686fe04d8cc5e746d789340331095044f244c123ecf1468dcb089bbb931cd","src/sparc/system.rs":"6f1f8ce9978693845621880031ac4805f00027315a691cfe1d466703c7a96e8d","src/sparc64/errno.rs":"b3c5e1a6c8378d613c6ef3dd44e2199ea7455da65e83d6bb19582a79de880f80","src/sparc64/general.rs":"a026441b0dbfc2dd3138bd7fc15c99a0843b13ff194a610dbe97498d068ef769","src/sparc64/if_ether.rs":"e51661cb54922c3c01853617a61b3d141768adf5b94162c4aefb326d31ef55f5","src/sparc64/io_uring.rs":"688f4678c259eb940aa0216c0183843d436b918d214e13bed56a38ddb55132db","src/sparc64/ioctl.rs":"b2a4c7d649b18a4d2a1142400de687d48c195dcf8a86b58ac261413c33809d7b","src/sparc64/net.rs":"a9ee3df43212c6f5016fd59b8fcf28b8b49016b4e143e2de97b7b60093f326d5","src/sparc64/netlink.rs":"7cec2a77af7ec17cad96d63027fd4a9164f0e6503f2e6cc2a99e79aa1bba3147","src/sparc64/prctl.rs":"ff897312b99274ce4eefecccc9797e34accc69efce1299712ab631e9542cb8ca","src/sparc64/system.rs":"becb2e706ed6df77860a2a3884b28181dca606db22fcd604a8a1803f937e8baf","src/x32/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/x32/general.rs":"ab1327fc01e9529abded9429e6720ec84b441744b68898f1a1cf8ce48d7de85d","src/x32/if_ether.rs":"859047581be4a3ae923b88516e86230a4f9a447a5203285dd8bcc539038c5c4f","src/x32/io_uring.rs":"40834d29cf819e43a23f9a2e075e2ea0c001be817f7200aa059c24eae6d29123","src/x32/ioctl.rs":"085227ec906237903b5e8b2e90b80fd078ddb4f9e44bbd6c9bee54ea7d5d6b1a","src/x32/net.rs":"c3133d3ac4cafff36bf8e0e374a788bd6aae6b36d0cd28be0cc1ee140529962a","src/x32/netlink.rs":"f74042f6cf0eabccfa6b8008a89ee7ab347fb7eaa89499757a786b13b2403982","src/x32/prctl.rs":"2d1eb6873dc5b72a8252f12e695d98a045e01026f730302a6515f53a394bba7c","src/x32/system.rs":"69c125aea6b21f2c4981f3386602283a691524671fef1da7d67de3b67fffdc42","src/x86/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/x86/general.rs":"8f48e3f5136a3aadf0282674937c4748dabc59dbb3cce4b9f2f73f8d2d25d52f","src/x86/if_ether.rs":"3873beb1f57bdcc52da345608c5deda5937d7b92b114b414ce6161784173b925","src/x86/io_uring.rs":"3f60400dfc11a5eafa5a54466f7f9ca74a63219feda2278c388529bf40c0a6a3","src/x86/ioctl.rs":"8dd0afaa7c3017c3866e579705699be75acc1a095694232b2903a12b3c07a770","src/x86/net.rs":"3192a24c15f0f4e4d856678fd05e82d7ae3585921f6243e907c539d603873896","src/x86/netlink.rs":"2f98b8c0349c2d3d538164e4d06c28fa1fb9308f7691aa097526ce2fb3ac176f","src/x86/prctl.rs":"5477c74fec958d9f9d2028f58e95657840ead28445956e53fe0894e45922f8a5","src/x86/system.rs":"9aca94a4a553e09e6d2d43741fb8c120c05a193822e850951dc469bbd89cc703","src/x86_64/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/x86_64/general.rs":"24f147e5800b36d49645997571cffab9d6e562c4b317000278f743dc41e3ef71","src/x86_64/if_ether.rs":"feb5362d90fbd5113b6f1f22fcc77a7b3bb7c8f5081be7eacb2e270d2f24a293","src/x86_64/io_uring.rs":"6c008c59b6905b7872b788e30d546efa3b5bb03a0fe17e33b90bfc8beec23f29","src/x86_64/ioctl.rs":"085227ec906237903b5e8b2e90b80fd078ddb4f9e44bbd6c9bee54ea7d5d6b1a","src/x86_64/net.rs":"d0f08df0ce735b8c75b6a7f466b97a199330395ccc04e8a8d5899f8426a9e798","src/x86_64/netlink.rs":"d47b8b117007b1c29db325dad68ed1b92562b98f90916b1b192f57a935a98038","src/x86_64/prctl.rs":"6d0f63fff8d76cc2f4678f38e40a68d072d7da4094d5217ce92872370bb4df9b","src/x86_64/system.rs":"6a415f104e7dd34829b36c19ad89e0cfcfbc69a846c87f81e202411386d46966"},"package":"1a9bad9f94746442c783ca431b22403b519cd7fbeed0533fdd6328b2f2212128"} \ No newline at end of file
+{"files":{"CODE_OF_CONDUCT.md":"ccd9e538ce44713a2486cc8e4c01b8c8b846d1ccff15de728d8d6fa9a7f846cd","COPYRIGHT":"3290ae0fbc9ddb77d2239121d710f0bb9d31b3b4744e6d97fe01e652b4c1870b","Cargo.toml":"0d02ea4bc018631a52900423cb7466bc905571bd1d767769739bde626360c123","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-Apache-2.0_WITH_LLVM-exception":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","ORG_CODE_OF_CONDUCT.md":"a62b69bf86e605ee1bcbb2f0a12ba79e4cebb6983a7b6491949750aecc4f2178","README.md":"3d4ae2ec9429adfd329b4506f7ca6faa84dca30d1c3b416f8f4e6f57bdb3aa96","src/aarch64/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/aarch64/general.rs":"0cc1ed00b1ef7efb16a7109138acdf679d591325458938cee150b221af063822","src/aarch64/if_ether.rs":"f558bfec1f5e80235db79f507e4afd3120647a5caddf17a87b7ad5540e5c1462","src/aarch64/io_uring.rs":"9ce4c9005b5b99e041b9d58be6866367605e4bee1e30a7096235cb234ed73e1b","src/aarch64/ioctl.rs":"f83af7f7cab6611c9f316b2289998d3276d844ac8f96111bc65f6c3340c3301a","src/aarch64/net.rs":"9c5fe44f91072b08899a6304cb22a51545034adde444740b67b8b310f3906a30","src/aarch64/netlink.rs":"f6642310b8bd37b5775ba1a52cfe638beddd7c880f8dfacab62c3180255fb75f","src/aarch64/prctl.rs":"a80e2f89aa978210d980538e1d9c5b922bb073d118ee51b1f14c1f397c7cd576","src/aarch64/system.rs":"851a95c0d1b76782970a28c373a313954eea0db35f6ebce562e6047095f587c4","src/arm/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/arm/general.rs":"bdbb40ba5630044c9555fe38a3640638f3ff7f437d94f82428e2bedad32e180f","src/arm/if_ether.rs":"3873beb1f57bdcc52da345608c5deda5937d7b92b114b414ce6161784173b925","src/arm/io_uring.rs":"5e2e254d5853ed30568e17fab184f8cc458607465d19dcee6c87ca1b565d6d2d","src/arm/ioctl.rs":"54cb9bdc5fe4ee7cff30e087bb0d04f1d811b55be7604bb056387f859120935a","src/arm/net.rs":"c79f443ab6585f81a71eff3350700ece82098264206eb79f78714153d6e43529","src/arm/netlink.rs":"2f98b8c0349c2d3d538164e4d06c28fa1fb9308f7691aa097526ce2fb3ac176f","src/arm/prctl.rs":"5477c74fec958d9f9d2028f58e95657840ead28445956e53fe0894e45922f8a5","src/arm/system.rs":"9aca94a4a553e09e6d2d43741fb8c120c05a193822e850951dc469bbd89cc703","src/csky/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/csky/general.rs":"94aba82d2a76a9ca272b4766f8d2f5f14e10bc2166e03d695a5b8b5d207e6755","src/csky/if_ether.rs":"aac7a069000195b9b18c6d25b2d7c338efb1062347a84e31cda7c93de374b3c6","src/csky/io_uring.rs":"bb7541d82f627cb681ea11f4e5c4162b0d0616ca08fcc6d31bcf22ef813f754d","src/csky/ioctl.rs":"77f30e67f9a4748bc31184454a0ff45fd821c3536cd98dc2411def8eeb59a268","src/csky/net.rs":"2796ca3744e82cecd816b4d1b1fba0bcb389fbc4603e0af7b6cdc562c666b512","src/csky/netlink.rs":"9fc99e88df0efc15d39b397c9d653c32b4729e31a2434e730435fbdfcb362da4","src/csky/prctl.rs":"8df2f33387d5b4865d9417f796cc4d43b3cf549cfa41d7ce7d41dd367ed8b6c9","src/csky/system.rs":"a2913685b359e60bbfae413b89a6fd37ea38fa448f980ffadef42d227b33ada5","src/elf.rs":"441bcf378b5603f957e053369d18d95c1efe981665846c220bca82123c04843a","src/lib.rs":"f3399ba35206764ac4e2d755cfc7e0c580464b8fcc76968f6c4b9f64523a1d02","src/loongarch64/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/loongarch64/general.rs":"fadd5884c6ad645300540dd30150984857819a986772fca4eba1e1fc0c3f4f1e","src/loongarch64/if_ether.rs":"a7b0918afc9dbf8e79490f83a809e4bd563af20ab2b3432d58b763ff31418daf","src/loongarch64/io_uring.rs":"ef851913c86bc2d629048e781edc76b59c63e659f8bd4bcd7fa7ff982186ed6d","src/loongarch64/ioctl.rs":"6f631e0ac37f2c2398168683a1523d1559b85369ffe4cdcc284ffe7455672c18","src/loongarch64/net.rs":"21add3f1bfa5898d9a5ef91342f6cd94ad4585df6525b9a4cf6cdf743345a9c7","src/loongarch64/netlink.rs":"789357343b94276e6f8fc8f3a32f06f3d3efd464c7850b2568dc609a49d1f305","src/loongarch64/prctl.rs":"624e4d3b8f3b4f1d6dcb1540c124ed03ce47f0580aa3425c0baed431dcd267ea","src/loongarch64/system.rs":"4cfcd4c28481b9ff5fc0330d5c713d637d3615c0184830d3a4391882eaed68f5","src/mips/errno.rs":"9ab1ed2bf371a27401745c2a6f9692f7e66dfd481d032cb40a354826d394ea8e","src/mips/general.rs":"1c16f4e0a015eaf27e9a30f4b74ec824220798f47c535d3aaf322ad799c054ab","src/mips/if_ether.rs":"1ecdc654cb3eda633bb7192829b1001a0a5ae5a126110b4208bbee5b41f87f5e","src/mips/io_uring.rs":"c69479bb1f862febe78e0989745c202146aaef7e8ceaa0d7bf291af584748992","src/mips/ioctl.rs":"f7464d2cd0548ab4735a1ca8deba47f13ea0946a9bf86adfec1a77feb3a0f475","src/mips/net.rs":"843204e91d8d6c34ddf4d29e1e822980b3e058ff7fc55ecc5f2b0fdf4a72825d","src/mips/netlink.rs":"5045dece259abaa5b5974500a20a9325e4cd6eb87c344dd7448056dff469994f","src/mips/prctl.rs":"cd59615adf6f561ef6c542df59cf25f75877693ca1c4c489f5e460eb7e798d4d","src/mips/system.rs":"acbc69a1fe7299860f8bd142bc2ff5595a410e1528994139062fc680d1a87e71","src/mips32r6/errno.rs":"9ab1ed2bf371a27401745c2a6f9692f7e66dfd481d032cb40a354826d394ea8e","src/mips32r6/general.rs":"1c16f4e0a015eaf27e9a30f4b74ec824220798f47c535d3aaf322ad799c054ab","src/mips32r6/if_ether.rs":"1ecdc654cb3eda633bb7192829b1001a0a5ae5a126110b4208bbee5b41f87f5e","src/mips32r6/io_uring.rs":"c69479bb1f862febe78e0989745c202146aaef7e8ceaa0d7bf291af584748992","src/mips32r6/ioctl.rs":"f7464d2cd0548ab4735a1ca8deba47f13ea0946a9bf86adfec1a77feb3a0f475","src/mips32r6/net.rs":"843204e91d8d6c34ddf4d29e1e822980b3e058ff7fc55ecc5f2b0fdf4a72825d","src/mips32r6/netlink.rs":"5045dece259abaa5b5974500a20a9325e4cd6eb87c344dd7448056dff469994f","src/mips32r6/prctl.rs":"cd59615adf6f561ef6c542df59cf25f75877693ca1c4c489f5e460eb7e798d4d","src/mips32r6/system.rs":"acbc69a1fe7299860f8bd142bc2ff5595a410e1528994139062fc680d1a87e71","src/mips64/errno.rs":"9ab1ed2bf371a27401745c2a6f9692f7e66dfd481d032cb40a354826d394ea8e","src/mips64/general.rs":"700b52614c604ce58aa8a5bb1ebd46221c0106ec2d8d6600d681d1594a89118a","src/mips64/if_ether.rs":"6d24518acba5bc8fa2a775d039ed9594de8349d6028621134626ccaa8ea18bcd","src/mips64/io_uring.rs":"18bd5d96c53aff44f4a37a71f16fa12c11b7c934b395bf841e47d98283146a50","src/mips64/ioctl.rs":"39f3276ec6f36ba78f5635bd418310b21bc228902d4da889fa01094c26f9b57d","src/mips64/net.rs":"e641379a7004ded90413b084504468148ecdbea4f753cbca83a4d22698cd7bab","src/mips64/netlink.rs":"18f139573337be18fb9bd56de4d0bd8af5c80828cdf68ef68751c18dcb39c761","src/mips64/prctl.rs":"a8d9ae240ce582d7b66e13937b99df73c7247ce9f69bfdd12109903d7c6dfb0e","src/mips64/system.rs":"95805c533a8eb8f53c28f138e6a2d12064681cc9db55d3042ee748c655a5d7cd","src/mips64r6/errno.rs":"9ab1ed2bf371a27401745c2a6f9692f7e66dfd481d032cb40a354826d394ea8e","src/mips64r6/general.rs":"700b52614c604ce58aa8a5bb1ebd46221c0106ec2d8d6600d681d1594a89118a","src/mips64r6/if_ether.rs":"6d24518acba5bc8fa2a775d039ed9594de8349d6028621134626ccaa8ea18bcd","src/mips64r6/io_uring.rs":"18bd5d96c53aff44f4a37a71f16fa12c11b7c934b395bf841e47d98283146a50","src/mips64r6/ioctl.rs":"39f3276ec6f36ba78f5635bd418310b21bc228902d4da889fa01094c26f9b57d","src/mips64r6/net.rs":"e641379a7004ded90413b084504468148ecdbea4f753cbca83a4d22698cd7bab","src/mips64r6/netlink.rs":"18f139573337be18fb9bd56de4d0bd8af5c80828cdf68ef68751c18dcb39c761","src/mips64r6/prctl.rs":"a8d9ae240ce582d7b66e13937b99df73c7247ce9f69bfdd12109903d7c6dfb0e","src/mips64r6/system.rs":"95805c533a8eb8f53c28f138e6a2d12064681cc9db55d3042ee748c655a5d7cd","src/powerpc/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/powerpc/general.rs":"7940ad742585d501f4742af51c6310ecf651863a8aaa0305193e9c8ee07aca90","src/powerpc/if_ether.rs":"56ab5fbf8c9d0dd0654412fabdca6759cbb421a876e5cebe2fec10e25728b55c","src/powerpc/io_uring.rs":"38ead79180c96e8af69929dacbc36e8cfbccec96875c61f094e531e6860639db","src/powerpc/ioctl.rs":"513a1dda33b2cd6c57212263c1bf0d8d443e54af6efe75e938fd700c1ca2b630","src/powerpc/net.rs":"b0228b15161fb750596d6e7e8e612381d9cf2acfed208715b93e8bb4b3340dc7","src/powerpc/netlink.rs":"4f10870fbd23de17efd4cba6d5a40ba85564effc5d0b71f9d7f928a42cb77b20","src/powerpc/prctl.rs":"f236987bc8ae993ab2b0e88b2eacbae51eee4da170ac075552070a76c717d803","src/powerpc/system.rs":"3e01e5e145adb87263f04c9e053faac0c0758689fd32917d2c7c2eec1d89f9e6","src/powerpc64/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/powerpc64/general.rs":"7862eb3dfac845331b624b3322bdeb3441bb86e914719e125dd5dc7b3860db43","src/powerpc64/if_ether.rs":"15e12d56b1367cb5c9d8fd1b9995acf1429a923bf603698bd732efe1acc30cd6","src/powerpc64/io_uring.rs":"50018e504d78c584beaec3b1a6d477d30d566d25cb1a40b0a2adfb23d726674f","src/powerpc64/ioctl.rs":"513a1dda33b2cd6c57212263c1bf0d8d443e54af6efe75e938fd700c1ca2b630","src/powerpc64/net.rs":"0a1468b8a270470a619e492fd6c50c59ea9eeaccd1c7827a0a0d55a0ae981cd4","src/powerpc64/netlink.rs":"352a06995f7de6e4fc1c2ff54c1eccb93a3d833a923e834ec75c6a4d30ea5051","src/powerpc64/prctl.rs":"1fcccc5b6dac472a30b7701b5c9e436c238410077cfe158d600b51d55bcc074a","src/powerpc64/system.rs":"500116b7613a504ebad028cec1ba37323310e29864d885ae62191ccb1f86d333","src/riscv32/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/riscv32/general.rs":"16ffe747a8f75ac6594dc7afddef4fbb89735da50af9f19f152fd2f04b509463","src/riscv32/if_ether.rs":"aac7a069000195b9b18c6d25b2d7c338efb1062347a84e31cda7c93de374b3c6","src/riscv32/io_uring.rs":"5c67dde8fdb3641407d4ebd744171606b82596176343fe6766afd3220eda2ab1","src/riscv32/ioctl.rs":"b2a4c7d649b18a4d2a1142400de687d48c195dcf8a86b58ac261413c33809d7b","src/riscv32/net.rs":"2796ca3744e82cecd816b4d1b1fba0bcb389fbc4603e0af7b6cdc562c666b512","src/riscv32/netlink.rs":"9fc99e88df0efc15d39b397c9d653c32b4729e31a2434e730435fbdfcb362da4","src/riscv32/prctl.rs":"8df2f33387d5b4865d9417f796cc4d43b3cf549cfa41d7ce7d41dd367ed8b6c9","src/riscv32/system.rs":"a2913685b359e60bbfae413b89a6fd37ea38fa448f980ffadef42d227b33ada5","src/riscv64/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/riscv64/general.rs":"8ec4907ac81b62e21451731a468e5f4fe7a37a46d80c56b33e0969d2d059d442","src/riscv64/if_ether.rs":"a7b0918afc9dbf8e79490f83a809e4bd563af20ab2b3432d58b763ff31418daf","src/riscv64/io_uring.rs":"ef851913c86bc2d629048e781edc76b59c63e659f8bd4bcd7fa7ff982186ed6d","src/riscv64/ioctl.rs":"6f631e0ac37f2c2398168683a1523d1559b85369ffe4cdcc284ffe7455672c18","src/riscv64/net.rs":"21add3f1bfa5898d9a5ef91342f6cd94ad4585df6525b9a4cf6cdf743345a9c7","src/riscv64/netlink.rs":"789357343b94276e6f8fc8f3a32f06f3d3efd464c7850b2568dc609a49d1f305","src/riscv64/prctl.rs":"624e4d3b8f3b4f1d6dcb1540c124ed03ce47f0580aa3425c0baed431dcd267ea","src/riscv64/system.rs":"4cfcd4c28481b9ff5fc0330d5c713d637d3615c0184830d3a4391882eaed68f5","src/s390x/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/s390x/general.rs":"687f6e3d4502d31aaec08a41335b6a368f0949049875d939065a66df86e06b8a","src/s390x/if_ether.rs":"2a6b2132be1aebe126eb64ea230a82c2ab18433ece37226c9dacd81392ad6ca2","src/s390x/io_uring.rs":"57790b4ce46a4a2a87a329ff935033dfb430117bcc2154fa066c5d681f115319","src/s390x/ioctl.rs":"f806407c91520bc994c7cd638576686710700a4cfa30c8ca3f81d55ce1d6ecdd","src/s390x/net.rs":"3f89cf2040475eb446daa3f54b5cd016ca8d2d3966f02efb3f0f2f425ccc7adb","src/s390x/netlink.rs":"c3c11102a55d15dfb534d748c8bc8ece58c9d56170b6afe07d1f2cc783fd6372","src/s390x/prctl.rs":"6fe9f5349f9a694b391f309f208235c1d4669430d3f051ef64467576e91df7a1","src/s390x/system.rs":"f68e8afbd02bc87a8fec2cae4e367f296873f2c1a651032da4ccc4f1c0ed4670","src/sparc/errno.rs":"b3c5e1a6c8378d613c6ef3dd44e2199ea7455da65e83d6bb19582a79de880f80","src/sparc/general.rs":"a38a371e8ceeecc4384999b4cc8ee6d65a35a20542c96c62e04c24b2b2953858","src/sparc/if_ether.rs":"c574c6d1ea11a8bb213b18928fe2d342c897d8ff04458991a5192eb401fbbc57","src/sparc/io_uring.rs":"d813aabc93f383c8522773ed431209627d810c78bcdb4dae931a702aae55e09f","src/sparc/ioctl.rs":"b2a4c7d649b18a4d2a1142400de687d48c195dcf8a86b58ac261413c33809d7b","src/sparc/net.rs":"00115a0deec75249c34bf61c76d4a95181be21ac3a1b5200875186d5ea501dac","src/sparc/netlink.rs":"0f176c24de7b2b19ac16dd95625947b8047d48bc7b871e12a3acd31f8e97c6f5","src/sparc/prctl.rs":"5f5686fe04d8cc5e746d789340331095044f244c123ecf1468dcb089bbb931cd","src/sparc/system.rs":"6f1f8ce9978693845621880031ac4805f00027315a691cfe1d466703c7a96e8d","src/sparc64/errno.rs":"b3c5e1a6c8378d613c6ef3dd44e2199ea7455da65e83d6bb19582a79de880f80","src/sparc64/general.rs":"d4138f0e663833811365fdc2e1008525df0f21044b5e31ab80d97d63fcb9f45f","src/sparc64/if_ether.rs":"e51661cb54922c3c01853617a61b3d141768adf5b94162c4aefb326d31ef55f5","src/sparc64/io_uring.rs":"688f4678c259eb940aa0216c0183843d436b918d214e13bed56a38ddb55132db","src/sparc64/ioctl.rs":"b2a4c7d649b18a4d2a1142400de687d48c195dcf8a86b58ac261413c33809d7b","src/sparc64/net.rs":"e1b51c9efe4a00b645100f2b4aa6f2349a50627521fa020370b1bf8ab0b3a575","src/sparc64/netlink.rs":"7cec2a77af7ec17cad96d63027fd4a9164f0e6503f2e6cc2a99e79aa1bba3147","src/sparc64/prctl.rs":"ff897312b99274ce4eefecccc9797e34accc69efce1299712ab631e9542cb8ca","src/sparc64/system.rs":"becb2e706ed6df77860a2a3884b28181dca606db22fcd604a8a1803f937e8baf","src/x32/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/x32/general.rs":"c2aeaf3096d559a86d3f72e0ec4a91245edfce35e85c51b50d13e115ec357974","src/x32/if_ether.rs":"859047581be4a3ae923b88516e86230a4f9a447a5203285dd8bcc539038c5c4f","src/x32/io_uring.rs":"40834d29cf819e43a23f9a2e075e2ea0c001be817f7200aa059c24eae6d29123","src/x32/ioctl.rs":"085227ec906237903b5e8b2e90b80fd078ddb4f9e44bbd6c9bee54ea7d5d6b1a","src/x32/net.rs":"e2d77e5bbae1fb298e48382204db55e4e49de2039369e3b2b77097029006c9d1","src/x32/netlink.rs":"f74042f6cf0eabccfa6b8008a89ee7ab347fb7eaa89499757a786b13b2403982","src/x32/prctl.rs":"2d1eb6873dc5b72a8252f12e695d98a045e01026f730302a6515f53a394bba7c","src/x32/system.rs":"69c125aea6b21f2c4981f3386602283a691524671fef1da7d67de3b67fffdc42","src/x86/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/x86/general.rs":"a9b002ea136dabb9fd1c489c999cd1bfeca62490202aab095221fc70c2b6e30e","src/x86/if_ether.rs":"3873beb1f57bdcc52da345608c5deda5937d7b92b114b414ce6161784173b925","src/x86/io_uring.rs":"3f60400dfc11a5eafa5a54466f7f9ca74a63219feda2278c388529bf40c0a6a3","src/x86/ioctl.rs":"8dd0afaa7c3017c3866e579705699be75acc1a095694232b2903a12b3c07a770","src/x86/net.rs":"c79f443ab6585f81a71eff3350700ece82098264206eb79f78714153d6e43529","src/x86/netlink.rs":"2f98b8c0349c2d3d538164e4d06c28fa1fb9308f7691aa097526ce2fb3ac176f","src/x86/prctl.rs":"5477c74fec958d9f9d2028f58e95657840ead28445956e53fe0894e45922f8a5","src/x86/system.rs":"9aca94a4a553e09e6d2d43741fb8c120c05a193822e850951dc469bbd89cc703","src/x86_64/errno.rs":"db283e5ea7fb63e0f57acb241e6471a951b4218660c01ca37b80be9a53629b92","src/x86_64/general.rs":"f0c763abb8d7e7bd594c674d2774b272844829ecee4e3ed42932004616a2380e","src/x86_64/if_ether.rs":"feb5362d90fbd5113b6f1f22fcc77a7b3bb7c8f5081be7eacb2e270d2f24a293","src/x86_64/io_uring.rs":"6c008c59b6905b7872b788e30d546efa3b5bb03a0fe17e33b90bfc8beec23f29","src/x86_64/ioctl.rs":"085227ec906237903b5e8b2e90b80fd078ddb4f9e44bbd6c9bee54ea7d5d6b1a","src/x86_64/net.rs":"0f81db11e3497486f0d2022a8302716816d2442bf7ffd25fa88a25a9bdc1ca83","src/x86_64/netlink.rs":"d47b8b117007b1c29db325dad68ed1b92562b98f90916b1b192f57a935a98038","src/x86_64/prctl.rs":"6d0f63fff8d76cc2f4678f38e40a68d072d7da4094d5217ce92872370bb4df9b","src/x86_64/system.rs":"6a415f104e7dd34829b36c19ad89e0cfcfbc69a846c87f81e202411386d46966"},"package":"da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f"} \ No newline at end of file
diff --git a/vendor/linux-raw-sys/Cargo.toml b/vendor/linux-raw-sys/Cargo.toml
index 55baa0be1..f9f8e707d 100644
--- a/vendor/linux-raw-sys/Cargo.toml
+++ b/vendor/linux-raw-sys/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.63"
name = "linux-raw-sys"
-version = "0.4.7"
+version = "0.4.10"
authors = ["Dan Gohman <dev@sunfishcode.online>"]
exclude = [
"/gen",
@@ -36,6 +36,11 @@ features = [
"default",
"ioctl",
"netlink",
+ "io_uring",
+ "if_ether",
+ "net",
+ "prctl",
+ "elf",
]
targets = [
"x86_64-unknown-linux-gnu",
diff --git a/vendor/linux-raw-sys/src/aarch64/general.rs b/vendor/linux-raw-sys/src/aarch64/general.rs
index 812c1bab9..7dc18427d 100644
--- a/vendor/linux-raw-sys/src/aarch64/general.rs
+++ b/vendor/linux-raw-sys/src/aarch64/general.rs
@@ -1570,6 +1570,19 @@ pub const POLLRDHUP: u32 = 8192;
pub const GRND_NONBLOCK: u32 = 1;
pub const GRND_RANDOM: u32 = 2;
pub const GRND_INSECURE: u32 = 4;
+pub const LINUX_REBOOT_MAGIC1: u32 = 4276215469;
+pub const LINUX_REBOOT_MAGIC2: u32 = 672274793;
+pub const LINUX_REBOOT_MAGIC2A: u32 = 85072278;
+pub const LINUX_REBOOT_MAGIC2B: u32 = 369367448;
+pub const LINUX_REBOOT_MAGIC2C: u32 = 537993216;
+pub const LINUX_REBOOT_CMD_RESTART: u32 = 19088743;
+pub const LINUX_REBOOT_CMD_HALT: u32 = 3454992675;
+pub const LINUX_REBOOT_CMD_CAD_ON: u32 = 2309737967;
+pub const LINUX_REBOOT_CMD_CAD_OFF: u32 = 0;
+pub const LINUX_REBOOT_CMD_POWER_OFF: u32 = 1126301404;
+pub const LINUX_REBOOT_CMD_RESTART2: u32 = 2712847316;
+pub const LINUX_REBOOT_CMD_SW_SUSPEND: u32 = 3489725666;
+pub const LINUX_REBOOT_CMD_KEXEC: u32 = 1163412803;
pub const ITIMER_REAL: u32 = 0;
pub const ITIMER_VIRTUAL: u32 = 1;
pub const ITIMER_PROF: u32 = 2;
diff --git a/vendor/linux-raw-sys/src/aarch64/net.rs b/vendor/linux-raw-sys/src/aarch64/net.rs
index 4675e03e4..97e44faa3 100644
--- a/vendor/linux-raw-sys/src/aarch64/net.rs
+++ b/vendor/linux-raw-sys/src/aarch64/net.rs
@@ -476,6 +476,255 @@ pub __storage: __kernel_sockaddr_storage,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct sync_serial_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct te1_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+pub slot_map: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct raw_hdlc_proto {
+pub encoding: crate::ctypes::c_ushort,
+pub parity: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto {
+pub t391: crate::ctypes::c_uint,
+pub t392: crate::ctypes::c_uint,
+pub n391: crate::ctypes::c_uint,
+pub n392: crate::ctypes::c_uint,
+pub n393: crate::ctypes::c_uint,
+pub lmi: crate::ctypes::c_ushort,
+pub dce: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc {
+pub dlci: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc_info {
+pub dlci: crate::ctypes::c_uint,
+pub master: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct cisco_proto {
+pub interval: crate::ctypes::c_uint,
+pub timeout: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct x25_hdlc_proto {
+pub dce: crate::ctypes::c_ushort,
+pub modulo: crate::ctypes::c_uint,
+pub window: crate::ctypes::c_uint,
+pub t1: crate::ctypes::c_uint,
+pub t2: crate::ctypes::c_uint,
+pub n2: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ifmap {
+pub mem_start: crate::ctypes::c_ulong,
+pub mem_end: crate::ctypes::c_ulong,
+pub base_addr: crate::ctypes::c_ushort,
+pub irq: crate::ctypes::c_uchar,
+pub dma: crate::ctypes::c_uchar,
+pub port: crate::ctypes::c_uchar,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct if_settings {
+pub type_: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub ifs_ifsu: if_settings__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifreq {
+pub ifr_ifrn: ifreq__bindgen_ty_1,
+pub ifr_ifru: ifreq__bindgen_ty_2,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifconf {
+pub ifc_len: crate::ctypes::c_int,
+pub ifc_ifcu: ifconf__bindgen_ty_1,
+}
+#[repr(C)]
+pub struct xt_entry_match {
+pub u: xt_entry_match__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_1 {
+pub match_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_2 {
+pub match_size: __u16,
+pub match_: *mut xt_match,
+}
+#[repr(C)]
+pub struct xt_entry_target {
+pub u: xt_entry_target__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_1 {
+pub target_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_2 {
+pub target_size: __u16,
+pub target: *mut xt_target,
+}
+#[repr(C)]
+pub struct xt_standard_target {
+pub target: xt_entry_target,
+pub verdict: crate::ctypes::c_int,
+}
+#[repr(C)]
+pub struct xt_error_target {
+pub target: xt_entry_target,
+pub errorname: [crate::ctypes::c_char; 30usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_get_revision {
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _xt_align {
+pub u8_: __u8,
+pub u16_: __u16,
+pub u32_: __u32,
+pub u64_: __u64,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_counters {
+pub pcnt: __u64,
+pub bcnt: __u64,
+}
+#[repr(C)]
+#[derive(Debug)]
+pub struct xt_counters_info {
+pub name: [crate::ctypes::c_char; 32usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: __IncompleteArrayField<xt_counters>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_tcp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub option: __u8,
+pub flg_mask: __u8,
+pub flg_cmp: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_udp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ip6t_ip6 {
+pub src: in6_addr,
+pub dst: in6_addr,
+pub smsk: in6_addr,
+pub dmsk: in6_addr,
+pub iniface: [crate::ctypes::c_char; 16usize],
+pub outiface: [crate::ctypes::c_char; 16usize],
+pub iniface_mask: [crate::ctypes::c_uchar; 16usize],
+pub outiface_mask: [crate::ctypes::c_uchar; 16usize],
+pub proto: __u16,
+pub tos: __u8,
+pub flags: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+pub struct ip6t_entry {
+pub ipv6: ip6t_ip6,
+pub nfcache: crate::ctypes::c_uint,
+pub target_offset: __u16,
+pub next_offset: __u16,
+pub comefrom: crate::ctypes::c_uint,
+pub counters: xt_counters,
+pub elems: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+pub struct ip6t_standard {
+pub entry: ip6t_entry,
+pub target: xt_standard_target,
+}
+#[repr(C)]
+pub struct ip6t_error {
+pub entry: ip6t_entry,
+pub target: xt_error_target,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_icmp {
+pub type_: __u8,
+pub code: [__u8; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_getinfo {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+}
+#[repr(C)]
+pub struct ip6t_replace {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: *mut xt_counters,
+pub entries: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+pub struct ip6t_get_entries {
+pub name: [crate::ctypes::c_char; 32usize],
+pub size: crate::ctypes::c_uint,
+pub entrytable: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct linger {
pub l_onoff: crate::ctypes::c_int,
pub l_linger: crate::ctypes::c_int,
@@ -513,6 +762,16 @@ pub msg_len: crate::ctypes::c_uint,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct xt_match {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_target {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct iovec {
pub _address: u8,
}
@@ -935,6 +1194,135 @@ pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
pub const UNIX_PATH_MAX: u32 = 108;
+pub const IFNAMSIZ: u32 = 16;
+pub const IFALIASZ: u32 = 256;
+pub const ALTIFNAMSIZ: u32 = 128;
+pub const GENERIC_HDLC_VERSION: u32 = 4;
+pub const CLOCK_DEFAULT: u32 = 0;
+pub const CLOCK_EXT: u32 = 1;
+pub const CLOCK_INT: u32 = 2;
+pub const CLOCK_TXINT: u32 = 3;
+pub const CLOCK_TXFROMRX: u32 = 4;
+pub const ENCODING_DEFAULT: u32 = 0;
+pub const ENCODING_NRZ: u32 = 1;
+pub const ENCODING_NRZI: u32 = 2;
+pub const ENCODING_FM_MARK: u32 = 3;
+pub const ENCODING_FM_SPACE: u32 = 4;
+pub const ENCODING_MANCHESTER: u32 = 5;
+pub const PARITY_DEFAULT: u32 = 0;
+pub const PARITY_NONE: u32 = 1;
+pub const PARITY_CRC16_PR0: u32 = 2;
+pub const PARITY_CRC16_PR1: u32 = 3;
+pub const PARITY_CRC16_PR0_CCITT: u32 = 4;
+pub const PARITY_CRC16_PR1_CCITT: u32 = 5;
+pub const PARITY_CRC32_PR0_CCITT: u32 = 6;
+pub const PARITY_CRC32_PR1_CCITT: u32 = 7;
+pub const LMI_DEFAULT: u32 = 0;
+pub const LMI_NONE: u32 = 1;
+pub const LMI_ANSI: u32 = 2;
+pub const LMI_CCITT: u32 = 3;
+pub const LMI_CISCO: u32 = 4;
+pub const IF_GET_IFACE: u32 = 1;
+pub const IF_GET_PROTO: u32 = 2;
+pub const IF_IFACE_V35: u32 = 4096;
+pub const IF_IFACE_V24: u32 = 4097;
+pub const IF_IFACE_X21: u32 = 4098;
+pub const IF_IFACE_T1: u32 = 4099;
+pub const IF_IFACE_E1: u32 = 4100;
+pub const IF_IFACE_SYNC_SERIAL: u32 = 4101;
+pub const IF_IFACE_X21D: u32 = 4102;
+pub const IF_PROTO_HDLC: u32 = 8192;
+pub const IF_PROTO_PPP: u32 = 8193;
+pub const IF_PROTO_CISCO: u32 = 8194;
+pub const IF_PROTO_FR: u32 = 8195;
+pub const IF_PROTO_FR_ADD_PVC: u32 = 8196;
+pub const IF_PROTO_FR_DEL_PVC: u32 = 8197;
+pub const IF_PROTO_X25: u32 = 8198;
+pub const IF_PROTO_HDLC_ETH: u32 = 8199;
+pub const IF_PROTO_FR_ADD_ETH_PVC: u32 = 8200;
+pub const IF_PROTO_FR_DEL_ETH_PVC: u32 = 8201;
+pub const IF_PROTO_FR_PVC: u32 = 8202;
+pub const IF_PROTO_FR_ETH_PVC: u32 = 8203;
+pub const IF_PROTO_RAW: u32 = 8204;
+pub const IFHWADDRLEN: u32 = 6;
+pub const NF_DROP: u32 = 0;
+pub const NF_ACCEPT: u32 = 1;
+pub const NF_STOLEN: u32 = 2;
+pub const NF_QUEUE: u32 = 3;
+pub const NF_REPEAT: u32 = 4;
+pub const NF_STOP: u32 = 5;
+pub const NF_MAX_VERDICT: u32 = 5;
+pub const NF_VERDICT_MASK: u32 = 255;
+pub const NF_VERDICT_FLAG_QUEUE_BYPASS: u32 = 32768;
+pub const NF_VERDICT_QMASK: u32 = 4294901760;
+pub const NF_VERDICT_QBITS: u32 = 16;
+pub const NF_VERDICT_BITS: u32 = 16;
+pub const NF_IP6_PRE_ROUTING: u32 = 0;
+pub const NF_IP6_LOCAL_IN: u32 = 1;
+pub const NF_IP6_FORWARD: u32 = 2;
+pub const NF_IP6_LOCAL_OUT: u32 = 3;
+pub const NF_IP6_POST_ROUTING: u32 = 4;
+pub const NF_IP6_NUMHOOKS: u32 = 5;
+pub const XT_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const XT_EXTENSION_MAXNAMELEN: u32 = 29;
+pub const XT_TABLE_MAXNAMELEN: u32 = 32;
+pub const XT_CONTINUE: u32 = 4294967295;
+pub const XT_RETURN: i32 = -5;
+pub const XT_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const XT_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const XT_INV_PROTO: u32 = 64;
+pub const IP6T_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const IP6T_TABLE_MAXNAMELEN: u32 = 32;
+pub const IP6T_CONTINUE: u32 = 4294967295;
+pub const IP6T_RETURN: i32 = -5;
+pub const XT_TCP_INV_SRCPT: u32 = 1;
+pub const XT_TCP_INV_DSTPT: u32 = 2;
+pub const XT_TCP_INV_FLAGS: u32 = 4;
+pub const XT_TCP_INV_OPTION: u32 = 8;
+pub const XT_TCP_INV_MASK: u32 = 15;
+pub const XT_UDP_INV_SRCPT: u32 = 1;
+pub const XT_UDP_INV_DSTPT: u32 = 2;
+pub const XT_UDP_INV_MASK: u32 = 3;
+pub const IP6T_TCP_INV_SRCPT: u32 = 1;
+pub const IP6T_TCP_INV_DSTPT: u32 = 2;
+pub const IP6T_TCP_INV_FLAGS: u32 = 4;
+pub const IP6T_TCP_INV_OPTION: u32 = 8;
+pub const IP6T_TCP_INV_MASK: u32 = 15;
+pub const IP6T_UDP_INV_SRCPT: u32 = 1;
+pub const IP6T_UDP_INV_DSTPT: u32 = 2;
+pub const IP6T_UDP_INV_MASK: u32 = 3;
+pub const IP6T_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const IP6T_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const IP6T_F_PROTO: u32 = 1;
+pub const IP6T_F_TOS: u32 = 2;
+pub const IP6T_F_GOTO: u32 = 4;
+pub const IP6T_F_MASK: u32 = 7;
+pub const IP6T_INV_VIA_IN: u32 = 1;
+pub const IP6T_INV_VIA_OUT: u32 = 2;
+pub const IP6T_INV_TOS: u32 = 4;
+pub const IP6T_INV_SRCIP: u32 = 8;
+pub const IP6T_INV_DSTIP: u32 = 16;
+pub const IP6T_INV_FRAG: u32 = 32;
+pub const IP6T_INV_PROTO: u32 = 64;
+pub const IP6T_INV_MASK: u32 = 127;
+pub const IP6T_BASE_CTL: u32 = 64;
+pub const IP6T_SO_SET_REPLACE: u32 = 64;
+pub const IP6T_SO_SET_ADD_COUNTERS: u32 = 65;
+pub const IP6T_SO_SET_MAX: u32 = 65;
+pub const IP6T_SO_GET_INFO: u32 = 64;
+pub const IP6T_SO_GET_ENTRIES: u32 = 65;
+pub const IP6T_SO_GET_REVISION_MATCH: u32 = 68;
+pub const IP6T_SO_GET_REVISION_TARGET: u32 = 69;
+pub const IP6T_SO_GET_MAX: u32 = 69;
+pub const IP6T_SO_ORIGINAL_DST: u32 = 80;
+pub const IP6T_ICMP_INV: u32 = 1;
+pub const NF_IP_PRE_ROUTING: u32 = 0;
+pub const NF_IP_LOCAL_IN: u32 = 1;
+pub const NF_IP_FORWARD: u32 = 2;
+pub const NF_IP_LOCAL_OUT: u32 = 3;
+pub const NF_IP_POST_ROUTING: u32 = 4;
+pub const NF_IP_NUMHOOKS: u32 = 5;
+pub const SO_ORIGINAL_DST: u32 = 80;
pub const SHUT_RD: u32 = 0;
pub const SHUT_WR: u32 = 1;
pub const SHUT_RDWR: u32 = 2;
@@ -1163,6 +1551,25 @@ pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NO
pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
+pub const IF_OPER_UNKNOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UNKNOWN;
+pub const IF_OPER_NOTPRESENT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_NOTPRESENT;
+pub const IF_OPER_DOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DOWN;
+pub const IF_OPER_LOWERLAYERDOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_LOWERLAYERDOWN;
+pub const IF_OPER_TESTING: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_TESTING;
+pub const IF_OPER_DORMANT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DORMANT;
+pub const IF_OPER_UP: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UP;
+pub const IF_LINK_MODE_DEFAULT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DEFAULT;
+pub const IF_LINK_MODE_DORMANT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DORMANT;
+pub const IF_LINK_MODE_TESTING: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_TESTING;
+pub const NFPROTO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_UNSPEC;
+pub const NFPROTO_INET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_INET;
+pub const NFPROTO_IPV4: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV4;
+pub const NFPROTO_ARP: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_ARP;
+pub const NFPROTO_NETDEV: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NETDEV;
+pub const NFPROTO_BRIDGE: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_BRIDGE;
+pub const NFPROTO_IPV6: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV6;
+pub const NFPROTO_DECNET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_DECNET;
+pub const NFPROTO_NUMPROTO: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NUMPROTO;
#[repr(u32)]
#[non_exhaustive]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -1386,6 +1793,121 @@ TCP_NLA_EDT = 25,
TCP_NLA_TTL = 26,
TCP_NLA_REHASH = 27,
}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum net_device_flags {
+IFF_UP = 1,
+IFF_BROADCAST = 2,
+IFF_DEBUG = 4,
+IFF_LOOPBACK = 8,
+IFF_POINTOPOINT = 16,
+IFF_NOTRAILERS = 32,
+IFF_RUNNING = 64,
+IFF_NOARP = 128,
+IFF_PROMISC = 256,
+IFF_ALLMULTI = 512,
+IFF_MASTER = 1024,
+IFF_SLAVE = 2048,
+IFF_MULTICAST = 4096,
+IFF_PORTSEL = 8192,
+IFF_AUTOMEDIA = 16384,
+IFF_DYNAMIC = 32768,
+IFF_LOWER_UP = 65536,
+IFF_DORMANT = 131072,
+IFF_ECHO = 262144,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_7 {
+IF_OPER_UNKNOWN = 0,
+IF_OPER_NOTPRESENT = 1,
+IF_OPER_DOWN = 2,
+IF_OPER_LOWERLAYERDOWN = 3,
+IF_OPER_TESTING = 4,
+IF_OPER_DORMANT = 5,
+IF_OPER_UP = 6,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_8 {
+IF_LINK_MODE_DEFAULT = 0,
+IF_LINK_MODE_DORMANT = 1,
+IF_LINK_MODE_TESTING = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_inet_hooks {
+NF_INET_PRE_ROUTING = 0,
+NF_INET_LOCAL_IN = 1,
+NF_INET_FORWARD = 2,
+NF_INET_LOCAL_OUT = 3,
+NF_INET_POST_ROUTING = 4,
+NF_INET_NUMHOOKS = 5,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_dev_hooks {
+NF_NETDEV_INGRESS = 0,
+NF_NETDEV_EGRESS = 1,
+NF_NETDEV_NUMHOOKS = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_9 {
+NFPROTO_UNSPEC = 0,
+NFPROTO_INET = 1,
+NFPROTO_IPV4 = 2,
+NFPROTO_ARP = 3,
+NFPROTO_NETDEV = 5,
+NFPROTO_BRIDGE = 7,
+NFPROTO_IPV6 = 10,
+NFPROTO_DECNET = 12,
+NFPROTO_NUMPROTO = 13,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip6_hook_priorities {
+NF_IP6_PRI_FIRST = -2147483648,
+NF_IP6_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP6_PRI_RAW = -300,
+NF_IP6_PRI_SELINUX_FIRST = -225,
+NF_IP6_PRI_CONNTRACK = -200,
+NF_IP6_PRI_MANGLE = -150,
+NF_IP6_PRI_NAT_DST = -100,
+NF_IP6_PRI_FILTER = 0,
+NF_IP6_PRI_SECURITY = 50,
+NF_IP6_PRI_NAT_SRC = 100,
+NF_IP6_PRI_SELINUX_LAST = 225,
+NF_IP6_PRI_CONNTRACK_HELPER = 300,
+NF_IP6_PRI_LAST = 2147483647,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip_hook_priorities {
+NF_IP_PRI_FIRST = -2147483648,
+NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP_PRI_RAW = -300,
+NF_IP_PRI_SELINUX_FIRST = -225,
+NF_IP_PRI_CONNTRACK = -200,
+NF_IP_PRI_MANGLE = -150,
+NF_IP_PRI_NAT_DST = -100,
+NF_IP_PRI_FILTER = 0,
+NF_IP_PRI_SECURITY = 50,
+NF_IP_PRI_NAT_SRC = 100,
+NF_IP_PRI_SELINUX_LAST = 225,
+NF_IP_PRI_CONNTRACK_HELPER = 300,
+NF_IP_PRI_CONNTRACK_CONFIRM = 2147483647,
+}
#[repr(C)]
#[derive(Copy, Clone)]
pub union __kernel_sockaddr_storage__bindgen_ty_1 {
@@ -1417,6 +1939,69 @@ pub union tcp_word_hdr {
pub hdr: tcphdr,
pub words: [__be32; 5usize],
}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union if_settings__bindgen_ty_1 {
+pub raw_hdlc: *mut raw_hdlc_proto,
+pub cisco: *mut cisco_proto,
+pub fr: *mut fr_proto,
+pub fr_pvc: *mut fr_proto_pvc,
+pub fr_pvc_info: *mut fr_proto_pvc_info,
+pub x25: *mut x25_hdlc_proto,
+pub sync: *mut sync_serial_settings,
+pub te1: *mut te1_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_1 {
+pub ifrn_name: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_2 {
+pub ifru_addr: sockaddr,
+pub ifru_dstaddr: sockaddr,
+pub ifru_broadaddr: sockaddr,
+pub ifru_netmask: sockaddr,
+pub ifru_hwaddr: sockaddr,
+pub ifru_flags: crate::ctypes::c_short,
+pub ifru_ivalue: crate::ctypes::c_int,
+pub ifru_mtu: crate::ctypes::c_int,
+pub ifru_map: ifmap,
+pub ifru_slave: [crate::ctypes::c_char; 16usize],
+pub ifru_newname: [crate::ctypes::c_char; 16usize],
+pub ifru_data: *mut crate::ctypes::c_void,
+pub ifru_settings: if_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifconf__bindgen_ty_1 {
+pub ifcu_buf: *mut crate::ctypes::c_char,
+pub ifcu_req: *mut ifreq,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union nf_inet_addr {
+pub all: [__u32; 4usize],
+pub ip: __be32,
+pub ip6: [__be32; 4usize],
+pub in_: in_addr,
+pub in6: in6_addr,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_match__bindgen_ty_1 {
+pub user: xt_entry_match__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_match__bindgen_ty_1__bindgen_ty_2,
+pub match_size: __u16,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_target__bindgen_ty_1 {
+pub user: xt_entry_target__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_target__bindgen_ty_1__bindgen_ty_2,
+pub target_size: __u16,
+}
impl<Storage> __BindgenBitfieldUnit<Storage> {
#[inline]
pub const fn new(storage: Storage) -> Self {
@@ -1842,3 +2427,9 @@ tcpi_fastopen_client_fail as u64
__bindgen_bitfield_unit
}
}
+impl nf_inet_hooks {
+pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
+}
+impl nf_ip_hook_priorities {
+pub const NF_IP_PRI_LAST: nf_ip_hook_priorities = nf_ip_hook_priorities::NF_IP_PRI_CONNTRACK_CONFIRM;
+}
diff --git a/vendor/linux-raw-sys/src/arm/general.rs b/vendor/linux-raw-sys/src/arm/general.rs
index 3d282a09a..11cc8a0b8 100644
--- a/vendor/linux-raw-sys/src/arm/general.rs
+++ b/vendor/linux-raw-sys/src/arm/general.rs
@@ -1601,6 +1601,19 @@ pub const POLLRDHUP: u32 = 8192;
pub const GRND_NONBLOCK: u32 = 1;
pub const GRND_RANDOM: u32 = 2;
pub const GRND_INSECURE: u32 = 4;
+pub const LINUX_REBOOT_MAGIC1: u32 = 4276215469;
+pub const LINUX_REBOOT_MAGIC2: u32 = 672274793;
+pub const LINUX_REBOOT_MAGIC2A: u32 = 85072278;
+pub const LINUX_REBOOT_MAGIC2B: u32 = 369367448;
+pub const LINUX_REBOOT_MAGIC2C: u32 = 537993216;
+pub const LINUX_REBOOT_CMD_RESTART: u32 = 19088743;
+pub const LINUX_REBOOT_CMD_HALT: u32 = 3454992675;
+pub const LINUX_REBOOT_CMD_CAD_ON: u32 = 2309737967;
+pub const LINUX_REBOOT_CMD_CAD_OFF: u32 = 0;
+pub const LINUX_REBOOT_CMD_POWER_OFF: u32 = 1126301404;
+pub const LINUX_REBOOT_CMD_RESTART2: u32 = 2712847316;
+pub const LINUX_REBOOT_CMD_SW_SUSPEND: u32 = 3489725666;
+pub const LINUX_REBOOT_CMD_KEXEC: u32 = 1163412803;
pub const ITIMER_REAL: u32 = 0;
pub const ITIMER_VIRTUAL: u32 = 1;
pub const ITIMER_PROF: u32 = 2;
diff --git a/vendor/linux-raw-sys/src/arm/net.rs b/vendor/linux-raw-sys/src/arm/net.rs
index 86228098f..77c92c318 100644
--- a/vendor/linux-raw-sys/src/arm/net.rs
+++ b/vendor/linux-raw-sys/src/arm/net.rs
@@ -476,6 +476,255 @@ pub __storage: __kernel_sockaddr_storage,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct sync_serial_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct te1_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+pub slot_map: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct raw_hdlc_proto {
+pub encoding: crate::ctypes::c_ushort,
+pub parity: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto {
+pub t391: crate::ctypes::c_uint,
+pub t392: crate::ctypes::c_uint,
+pub n391: crate::ctypes::c_uint,
+pub n392: crate::ctypes::c_uint,
+pub n393: crate::ctypes::c_uint,
+pub lmi: crate::ctypes::c_ushort,
+pub dce: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc {
+pub dlci: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc_info {
+pub dlci: crate::ctypes::c_uint,
+pub master: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct cisco_proto {
+pub interval: crate::ctypes::c_uint,
+pub timeout: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct x25_hdlc_proto {
+pub dce: crate::ctypes::c_ushort,
+pub modulo: crate::ctypes::c_uint,
+pub window: crate::ctypes::c_uint,
+pub t1: crate::ctypes::c_uint,
+pub t2: crate::ctypes::c_uint,
+pub n2: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ifmap {
+pub mem_start: crate::ctypes::c_ulong,
+pub mem_end: crate::ctypes::c_ulong,
+pub base_addr: crate::ctypes::c_ushort,
+pub irq: crate::ctypes::c_uchar,
+pub dma: crate::ctypes::c_uchar,
+pub port: crate::ctypes::c_uchar,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct if_settings {
+pub type_: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub ifs_ifsu: if_settings__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifreq {
+pub ifr_ifrn: ifreq__bindgen_ty_1,
+pub ifr_ifru: ifreq__bindgen_ty_2,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifconf {
+pub ifc_len: crate::ctypes::c_int,
+pub ifc_ifcu: ifconf__bindgen_ty_1,
+}
+#[repr(C)]
+pub struct xt_entry_match {
+pub u: xt_entry_match__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_1 {
+pub match_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_2 {
+pub match_size: __u16,
+pub match_: *mut xt_match,
+}
+#[repr(C)]
+pub struct xt_entry_target {
+pub u: xt_entry_target__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_1 {
+pub target_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_2 {
+pub target_size: __u16,
+pub target: *mut xt_target,
+}
+#[repr(C)]
+pub struct xt_standard_target {
+pub target: xt_entry_target,
+pub verdict: crate::ctypes::c_int,
+}
+#[repr(C)]
+pub struct xt_error_target {
+pub target: xt_entry_target,
+pub errorname: [crate::ctypes::c_char; 30usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_get_revision {
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _xt_align {
+pub u8_: __u8,
+pub u16_: __u16,
+pub u32_: __u32,
+pub u64_: __u64,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_counters {
+pub pcnt: __u64,
+pub bcnt: __u64,
+}
+#[repr(C)]
+#[derive(Debug)]
+pub struct xt_counters_info {
+pub name: [crate::ctypes::c_char; 32usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: __IncompleteArrayField<xt_counters>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_tcp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub option: __u8,
+pub flg_mask: __u8,
+pub flg_cmp: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_udp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ip6t_ip6 {
+pub src: in6_addr,
+pub dst: in6_addr,
+pub smsk: in6_addr,
+pub dmsk: in6_addr,
+pub iniface: [crate::ctypes::c_char; 16usize],
+pub outiface: [crate::ctypes::c_char; 16usize],
+pub iniface_mask: [crate::ctypes::c_uchar; 16usize],
+pub outiface_mask: [crate::ctypes::c_uchar; 16usize],
+pub proto: __u16,
+pub tos: __u8,
+pub flags: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+pub struct ip6t_entry {
+pub ipv6: ip6t_ip6,
+pub nfcache: crate::ctypes::c_uint,
+pub target_offset: __u16,
+pub next_offset: __u16,
+pub comefrom: crate::ctypes::c_uint,
+pub counters: xt_counters,
+pub elems: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+pub struct ip6t_standard {
+pub entry: ip6t_entry,
+pub target: xt_standard_target,
+}
+#[repr(C)]
+pub struct ip6t_error {
+pub entry: ip6t_entry,
+pub target: xt_error_target,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_icmp {
+pub type_: __u8,
+pub code: [__u8; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_getinfo {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+}
+#[repr(C)]
+pub struct ip6t_replace {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: *mut xt_counters,
+pub entries: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+pub struct ip6t_get_entries {
+pub name: [crate::ctypes::c_char; 32usize],
+pub size: crate::ctypes::c_uint,
+pub entrytable: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct linger {
pub l_onoff: crate::ctypes::c_int,
pub l_linger: crate::ctypes::c_int,
@@ -513,6 +762,16 @@ pub msg_len: crate::ctypes::c_uint,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct xt_match {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_target {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct iovec {
pub _address: u8,
}
@@ -927,6 +1186,135 @@ pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
pub const UNIX_PATH_MAX: u32 = 108;
+pub const IFNAMSIZ: u32 = 16;
+pub const IFALIASZ: u32 = 256;
+pub const ALTIFNAMSIZ: u32 = 128;
+pub const GENERIC_HDLC_VERSION: u32 = 4;
+pub const CLOCK_DEFAULT: u32 = 0;
+pub const CLOCK_EXT: u32 = 1;
+pub const CLOCK_INT: u32 = 2;
+pub const CLOCK_TXINT: u32 = 3;
+pub const CLOCK_TXFROMRX: u32 = 4;
+pub const ENCODING_DEFAULT: u32 = 0;
+pub const ENCODING_NRZ: u32 = 1;
+pub const ENCODING_NRZI: u32 = 2;
+pub const ENCODING_FM_MARK: u32 = 3;
+pub const ENCODING_FM_SPACE: u32 = 4;
+pub const ENCODING_MANCHESTER: u32 = 5;
+pub const PARITY_DEFAULT: u32 = 0;
+pub const PARITY_NONE: u32 = 1;
+pub const PARITY_CRC16_PR0: u32 = 2;
+pub const PARITY_CRC16_PR1: u32 = 3;
+pub const PARITY_CRC16_PR0_CCITT: u32 = 4;
+pub const PARITY_CRC16_PR1_CCITT: u32 = 5;
+pub const PARITY_CRC32_PR0_CCITT: u32 = 6;
+pub const PARITY_CRC32_PR1_CCITT: u32 = 7;
+pub const LMI_DEFAULT: u32 = 0;
+pub const LMI_NONE: u32 = 1;
+pub const LMI_ANSI: u32 = 2;
+pub const LMI_CCITT: u32 = 3;
+pub const LMI_CISCO: u32 = 4;
+pub const IF_GET_IFACE: u32 = 1;
+pub const IF_GET_PROTO: u32 = 2;
+pub const IF_IFACE_V35: u32 = 4096;
+pub const IF_IFACE_V24: u32 = 4097;
+pub const IF_IFACE_X21: u32 = 4098;
+pub const IF_IFACE_T1: u32 = 4099;
+pub const IF_IFACE_E1: u32 = 4100;
+pub const IF_IFACE_SYNC_SERIAL: u32 = 4101;
+pub const IF_IFACE_X21D: u32 = 4102;
+pub const IF_PROTO_HDLC: u32 = 8192;
+pub const IF_PROTO_PPP: u32 = 8193;
+pub const IF_PROTO_CISCO: u32 = 8194;
+pub const IF_PROTO_FR: u32 = 8195;
+pub const IF_PROTO_FR_ADD_PVC: u32 = 8196;
+pub const IF_PROTO_FR_DEL_PVC: u32 = 8197;
+pub const IF_PROTO_X25: u32 = 8198;
+pub const IF_PROTO_HDLC_ETH: u32 = 8199;
+pub const IF_PROTO_FR_ADD_ETH_PVC: u32 = 8200;
+pub const IF_PROTO_FR_DEL_ETH_PVC: u32 = 8201;
+pub const IF_PROTO_FR_PVC: u32 = 8202;
+pub const IF_PROTO_FR_ETH_PVC: u32 = 8203;
+pub const IF_PROTO_RAW: u32 = 8204;
+pub const IFHWADDRLEN: u32 = 6;
+pub const NF_DROP: u32 = 0;
+pub const NF_ACCEPT: u32 = 1;
+pub const NF_STOLEN: u32 = 2;
+pub const NF_QUEUE: u32 = 3;
+pub const NF_REPEAT: u32 = 4;
+pub const NF_STOP: u32 = 5;
+pub const NF_MAX_VERDICT: u32 = 5;
+pub const NF_VERDICT_MASK: u32 = 255;
+pub const NF_VERDICT_FLAG_QUEUE_BYPASS: u32 = 32768;
+pub const NF_VERDICT_QMASK: u32 = 4294901760;
+pub const NF_VERDICT_QBITS: u32 = 16;
+pub const NF_VERDICT_BITS: u32 = 16;
+pub const NF_IP6_PRE_ROUTING: u32 = 0;
+pub const NF_IP6_LOCAL_IN: u32 = 1;
+pub const NF_IP6_FORWARD: u32 = 2;
+pub const NF_IP6_LOCAL_OUT: u32 = 3;
+pub const NF_IP6_POST_ROUTING: u32 = 4;
+pub const NF_IP6_NUMHOOKS: u32 = 5;
+pub const XT_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const XT_EXTENSION_MAXNAMELEN: u32 = 29;
+pub const XT_TABLE_MAXNAMELEN: u32 = 32;
+pub const XT_CONTINUE: u32 = 4294967295;
+pub const XT_RETURN: i32 = -5;
+pub const XT_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const XT_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const XT_INV_PROTO: u32 = 64;
+pub const IP6T_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const IP6T_TABLE_MAXNAMELEN: u32 = 32;
+pub const IP6T_CONTINUE: u32 = 4294967295;
+pub const IP6T_RETURN: i32 = -5;
+pub const XT_TCP_INV_SRCPT: u32 = 1;
+pub const XT_TCP_INV_DSTPT: u32 = 2;
+pub const XT_TCP_INV_FLAGS: u32 = 4;
+pub const XT_TCP_INV_OPTION: u32 = 8;
+pub const XT_TCP_INV_MASK: u32 = 15;
+pub const XT_UDP_INV_SRCPT: u32 = 1;
+pub const XT_UDP_INV_DSTPT: u32 = 2;
+pub const XT_UDP_INV_MASK: u32 = 3;
+pub const IP6T_TCP_INV_SRCPT: u32 = 1;
+pub const IP6T_TCP_INV_DSTPT: u32 = 2;
+pub const IP6T_TCP_INV_FLAGS: u32 = 4;
+pub const IP6T_TCP_INV_OPTION: u32 = 8;
+pub const IP6T_TCP_INV_MASK: u32 = 15;
+pub const IP6T_UDP_INV_SRCPT: u32 = 1;
+pub const IP6T_UDP_INV_DSTPT: u32 = 2;
+pub const IP6T_UDP_INV_MASK: u32 = 3;
+pub const IP6T_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const IP6T_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const IP6T_F_PROTO: u32 = 1;
+pub const IP6T_F_TOS: u32 = 2;
+pub const IP6T_F_GOTO: u32 = 4;
+pub const IP6T_F_MASK: u32 = 7;
+pub const IP6T_INV_VIA_IN: u32 = 1;
+pub const IP6T_INV_VIA_OUT: u32 = 2;
+pub const IP6T_INV_TOS: u32 = 4;
+pub const IP6T_INV_SRCIP: u32 = 8;
+pub const IP6T_INV_DSTIP: u32 = 16;
+pub const IP6T_INV_FRAG: u32 = 32;
+pub const IP6T_INV_PROTO: u32 = 64;
+pub const IP6T_INV_MASK: u32 = 127;
+pub const IP6T_BASE_CTL: u32 = 64;
+pub const IP6T_SO_SET_REPLACE: u32 = 64;
+pub const IP6T_SO_SET_ADD_COUNTERS: u32 = 65;
+pub const IP6T_SO_SET_MAX: u32 = 65;
+pub const IP6T_SO_GET_INFO: u32 = 64;
+pub const IP6T_SO_GET_ENTRIES: u32 = 65;
+pub const IP6T_SO_GET_REVISION_MATCH: u32 = 68;
+pub const IP6T_SO_GET_REVISION_TARGET: u32 = 69;
+pub const IP6T_SO_GET_MAX: u32 = 69;
+pub const IP6T_SO_ORIGINAL_DST: u32 = 80;
+pub const IP6T_ICMP_INV: u32 = 1;
+pub const NF_IP_PRE_ROUTING: u32 = 0;
+pub const NF_IP_LOCAL_IN: u32 = 1;
+pub const NF_IP_FORWARD: u32 = 2;
+pub const NF_IP_LOCAL_OUT: u32 = 3;
+pub const NF_IP_POST_ROUTING: u32 = 4;
+pub const NF_IP_NUMHOOKS: u32 = 5;
+pub const SO_ORIGINAL_DST: u32 = 80;
pub const SHUT_RD: u32 = 0;
pub const SHUT_WR: u32 = 1;
pub const SHUT_RDWR: u32 = 2;
@@ -1155,6 +1543,25 @@ pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NO
pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
+pub const IF_OPER_UNKNOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UNKNOWN;
+pub const IF_OPER_NOTPRESENT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_NOTPRESENT;
+pub const IF_OPER_DOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DOWN;
+pub const IF_OPER_LOWERLAYERDOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_LOWERLAYERDOWN;
+pub const IF_OPER_TESTING: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_TESTING;
+pub const IF_OPER_DORMANT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DORMANT;
+pub const IF_OPER_UP: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UP;
+pub const IF_LINK_MODE_DEFAULT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DEFAULT;
+pub const IF_LINK_MODE_DORMANT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DORMANT;
+pub const IF_LINK_MODE_TESTING: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_TESTING;
+pub const NFPROTO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_UNSPEC;
+pub const NFPROTO_INET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_INET;
+pub const NFPROTO_IPV4: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV4;
+pub const NFPROTO_ARP: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_ARP;
+pub const NFPROTO_NETDEV: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NETDEV;
+pub const NFPROTO_BRIDGE: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_BRIDGE;
+pub const NFPROTO_IPV6: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV6;
+pub const NFPROTO_DECNET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_DECNET;
+pub const NFPROTO_NUMPROTO: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NUMPROTO;
#[repr(u32)]
#[non_exhaustive]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -1378,6 +1785,121 @@ TCP_NLA_EDT = 25,
TCP_NLA_TTL = 26,
TCP_NLA_REHASH = 27,
}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum net_device_flags {
+IFF_UP = 1,
+IFF_BROADCAST = 2,
+IFF_DEBUG = 4,
+IFF_LOOPBACK = 8,
+IFF_POINTOPOINT = 16,
+IFF_NOTRAILERS = 32,
+IFF_RUNNING = 64,
+IFF_NOARP = 128,
+IFF_PROMISC = 256,
+IFF_ALLMULTI = 512,
+IFF_MASTER = 1024,
+IFF_SLAVE = 2048,
+IFF_MULTICAST = 4096,
+IFF_PORTSEL = 8192,
+IFF_AUTOMEDIA = 16384,
+IFF_DYNAMIC = 32768,
+IFF_LOWER_UP = 65536,
+IFF_DORMANT = 131072,
+IFF_ECHO = 262144,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_7 {
+IF_OPER_UNKNOWN = 0,
+IF_OPER_NOTPRESENT = 1,
+IF_OPER_DOWN = 2,
+IF_OPER_LOWERLAYERDOWN = 3,
+IF_OPER_TESTING = 4,
+IF_OPER_DORMANT = 5,
+IF_OPER_UP = 6,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_8 {
+IF_LINK_MODE_DEFAULT = 0,
+IF_LINK_MODE_DORMANT = 1,
+IF_LINK_MODE_TESTING = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_inet_hooks {
+NF_INET_PRE_ROUTING = 0,
+NF_INET_LOCAL_IN = 1,
+NF_INET_FORWARD = 2,
+NF_INET_LOCAL_OUT = 3,
+NF_INET_POST_ROUTING = 4,
+NF_INET_NUMHOOKS = 5,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_dev_hooks {
+NF_NETDEV_INGRESS = 0,
+NF_NETDEV_EGRESS = 1,
+NF_NETDEV_NUMHOOKS = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_9 {
+NFPROTO_UNSPEC = 0,
+NFPROTO_INET = 1,
+NFPROTO_IPV4 = 2,
+NFPROTO_ARP = 3,
+NFPROTO_NETDEV = 5,
+NFPROTO_BRIDGE = 7,
+NFPROTO_IPV6 = 10,
+NFPROTO_DECNET = 12,
+NFPROTO_NUMPROTO = 13,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip6_hook_priorities {
+NF_IP6_PRI_FIRST = -2147483648,
+NF_IP6_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP6_PRI_RAW = -300,
+NF_IP6_PRI_SELINUX_FIRST = -225,
+NF_IP6_PRI_CONNTRACK = -200,
+NF_IP6_PRI_MANGLE = -150,
+NF_IP6_PRI_NAT_DST = -100,
+NF_IP6_PRI_FILTER = 0,
+NF_IP6_PRI_SECURITY = 50,
+NF_IP6_PRI_NAT_SRC = 100,
+NF_IP6_PRI_SELINUX_LAST = 225,
+NF_IP6_PRI_CONNTRACK_HELPER = 300,
+NF_IP6_PRI_LAST = 2147483647,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip_hook_priorities {
+NF_IP_PRI_FIRST = -2147483648,
+NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP_PRI_RAW = -300,
+NF_IP_PRI_SELINUX_FIRST = -225,
+NF_IP_PRI_CONNTRACK = -200,
+NF_IP_PRI_MANGLE = -150,
+NF_IP_PRI_NAT_DST = -100,
+NF_IP_PRI_FILTER = 0,
+NF_IP_PRI_SECURITY = 50,
+NF_IP_PRI_NAT_SRC = 100,
+NF_IP_PRI_SELINUX_LAST = 225,
+NF_IP_PRI_CONNTRACK_HELPER = 300,
+NF_IP_PRI_CONNTRACK_CONFIRM = 2147483647,
+}
#[repr(C)]
#[derive(Copy, Clone)]
pub union __kernel_sockaddr_storage__bindgen_ty_1 {
@@ -1409,6 +1931,69 @@ pub union tcp_word_hdr {
pub hdr: tcphdr,
pub words: [__be32; 5usize],
}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union if_settings__bindgen_ty_1 {
+pub raw_hdlc: *mut raw_hdlc_proto,
+pub cisco: *mut cisco_proto,
+pub fr: *mut fr_proto,
+pub fr_pvc: *mut fr_proto_pvc,
+pub fr_pvc_info: *mut fr_proto_pvc_info,
+pub x25: *mut x25_hdlc_proto,
+pub sync: *mut sync_serial_settings,
+pub te1: *mut te1_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_1 {
+pub ifrn_name: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_2 {
+pub ifru_addr: sockaddr,
+pub ifru_dstaddr: sockaddr,
+pub ifru_broadaddr: sockaddr,
+pub ifru_netmask: sockaddr,
+pub ifru_hwaddr: sockaddr,
+pub ifru_flags: crate::ctypes::c_short,
+pub ifru_ivalue: crate::ctypes::c_int,
+pub ifru_mtu: crate::ctypes::c_int,
+pub ifru_map: ifmap,
+pub ifru_slave: [crate::ctypes::c_char; 16usize],
+pub ifru_newname: [crate::ctypes::c_char; 16usize],
+pub ifru_data: *mut crate::ctypes::c_void,
+pub ifru_settings: if_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifconf__bindgen_ty_1 {
+pub ifcu_buf: *mut crate::ctypes::c_char,
+pub ifcu_req: *mut ifreq,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union nf_inet_addr {
+pub all: [__u32; 4usize],
+pub ip: __be32,
+pub ip6: [__be32; 4usize],
+pub in_: in_addr,
+pub in6: in6_addr,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_match__bindgen_ty_1 {
+pub user: xt_entry_match__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_match__bindgen_ty_1__bindgen_ty_2,
+pub match_size: __u16,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_target__bindgen_ty_1 {
+pub user: xt_entry_target__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_target__bindgen_ty_1__bindgen_ty_2,
+pub target_size: __u16,
+}
impl<Storage> __BindgenBitfieldUnit<Storage> {
#[inline]
pub const fn new(storage: Storage) -> Self {
@@ -1834,3 +2419,9 @@ tcpi_fastopen_client_fail as u64
__bindgen_bitfield_unit
}
}
+impl nf_inet_hooks {
+pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
+}
+impl nf_ip_hook_priorities {
+pub const NF_IP_PRI_LAST: nf_ip_hook_priorities = nf_ip_hook_priorities::NF_IP_PRI_CONNTRACK_CONFIRM;
+}
diff --git a/vendor/linux-raw-sys/src/csky/general.rs b/vendor/linux-raw-sys/src/csky/general.rs
index 6a562ce7e..17c33af6c 100644
--- a/vendor/linux-raw-sys/src/csky/general.rs
+++ b/vendor/linux-raw-sys/src/csky/general.rs
@@ -1592,6 +1592,19 @@ pub const POLLRDHUP: u32 = 8192;
pub const GRND_NONBLOCK: u32 = 1;
pub const GRND_RANDOM: u32 = 2;
pub const GRND_INSECURE: u32 = 4;
+pub const LINUX_REBOOT_MAGIC1: u32 = 4276215469;
+pub const LINUX_REBOOT_MAGIC2: u32 = 672274793;
+pub const LINUX_REBOOT_MAGIC2A: u32 = 85072278;
+pub const LINUX_REBOOT_MAGIC2B: u32 = 369367448;
+pub const LINUX_REBOOT_MAGIC2C: u32 = 537993216;
+pub const LINUX_REBOOT_CMD_RESTART: u32 = 19088743;
+pub const LINUX_REBOOT_CMD_HALT: u32 = 3454992675;
+pub const LINUX_REBOOT_CMD_CAD_ON: u32 = 2309737967;
+pub const LINUX_REBOOT_CMD_CAD_OFF: u32 = 0;
+pub const LINUX_REBOOT_CMD_POWER_OFF: u32 = 1126301404;
+pub const LINUX_REBOOT_CMD_RESTART2: u32 = 2712847316;
+pub const LINUX_REBOOT_CMD_SW_SUSPEND: u32 = 3489725666;
+pub const LINUX_REBOOT_CMD_KEXEC: u32 = 1163412803;
pub const ITIMER_REAL: u32 = 0;
pub const ITIMER_VIRTUAL: u32 = 1;
pub const ITIMER_PROF: u32 = 2;
diff --git a/vendor/linux-raw-sys/src/csky/net.rs b/vendor/linux-raw-sys/src/csky/net.rs
index cfadfa5a2..247e63f0a 100644
--- a/vendor/linux-raw-sys/src/csky/net.rs
+++ b/vendor/linux-raw-sys/src/csky/net.rs
@@ -476,6 +476,255 @@ pub __storage: __kernel_sockaddr_storage,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct sync_serial_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct te1_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+pub slot_map: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct raw_hdlc_proto {
+pub encoding: crate::ctypes::c_ushort,
+pub parity: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto {
+pub t391: crate::ctypes::c_uint,
+pub t392: crate::ctypes::c_uint,
+pub n391: crate::ctypes::c_uint,
+pub n392: crate::ctypes::c_uint,
+pub n393: crate::ctypes::c_uint,
+pub lmi: crate::ctypes::c_ushort,
+pub dce: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc {
+pub dlci: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc_info {
+pub dlci: crate::ctypes::c_uint,
+pub master: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct cisco_proto {
+pub interval: crate::ctypes::c_uint,
+pub timeout: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct x25_hdlc_proto {
+pub dce: crate::ctypes::c_ushort,
+pub modulo: crate::ctypes::c_uint,
+pub window: crate::ctypes::c_uint,
+pub t1: crate::ctypes::c_uint,
+pub t2: crate::ctypes::c_uint,
+pub n2: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ifmap {
+pub mem_start: crate::ctypes::c_ulong,
+pub mem_end: crate::ctypes::c_ulong,
+pub base_addr: crate::ctypes::c_ushort,
+pub irq: crate::ctypes::c_uchar,
+pub dma: crate::ctypes::c_uchar,
+pub port: crate::ctypes::c_uchar,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct if_settings {
+pub type_: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub ifs_ifsu: if_settings__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifreq {
+pub ifr_ifrn: ifreq__bindgen_ty_1,
+pub ifr_ifru: ifreq__bindgen_ty_2,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifconf {
+pub ifc_len: crate::ctypes::c_int,
+pub ifc_ifcu: ifconf__bindgen_ty_1,
+}
+#[repr(C)]
+pub struct xt_entry_match {
+pub u: xt_entry_match__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_1 {
+pub match_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_2 {
+pub match_size: __u16,
+pub match_: *mut xt_match,
+}
+#[repr(C)]
+pub struct xt_entry_target {
+pub u: xt_entry_target__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_1 {
+pub target_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_2 {
+pub target_size: __u16,
+pub target: *mut xt_target,
+}
+#[repr(C)]
+pub struct xt_standard_target {
+pub target: xt_entry_target,
+pub verdict: crate::ctypes::c_int,
+}
+#[repr(C)]
+pub struct xt_error_target {
+pub target: xt_entry_target,
+pub errorname: [crate::ctypes::c_char; 30usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_get_revision {
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _xt_align {
+pub u8_: __u8,
+pub u16_: __u16,
+pub u32_: __u32,
+pub u64_: __u64,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_counters {
+pub pcnt: __u64,
+pub bcnt: __u64,
+}
+#[repr(C)]
+#[derive(Debug)]
+pub struct xt_counters_info {
+pub name: [crate::ctypes::c_char; 32usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: __IncompleteArrayField<xt_counters>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_tcp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub option: __u8,
+pub flg_mask: __u8,
+pub flg_cmp: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_udp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ip6t_ip6 {
+pub src: in6_addr,
+pub dst: in6_addr,
+pub smsk: in6_addr,
+pub dmsk: in6_addr,
+pub iniface: [crate::ctypes::c_char; 16usize],
+pub outiface: [crate::ctypes::c_char; 16usize],
+pub iniface_mask: [crate::ctypes::c_uchar; 16usize],
+pub outiface_mask: [crate::ctypes::c_uchar; 16usize],
+pub proto: __u16,
+pub tos: __u8,
+pub flags: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+pub struct ip6t_entry {
+pub ipv6: ip6t_ip6,
+pub nfcache: crate::ctypes::c_uint,
+pub target_offset: __u16,
+pub next_offset: __u16,
+pub comefrom: crate::ctypes::c_uint,
+pub counters: xt_counters,
+pub elems: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+pub struct ip6t_standard {
+pub entry: ip6t_entry,
+pub target: xt_standard_target,
+}
+#[repr(C)]
+pub struct ip6t_error {
+pub entry: ip6t_entry,
+pub target: xt_error_target,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_icmp {
+pub type_: __u8,
+pub code: [__u8; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_getinfo {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+}
+#[repr(C)]
+pub struct ip6t_replace {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: *mut xt_counters,
+pub entries: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+pub struct ip6t_get_entries {
+pub name: [crate::ctypes::c_char; 32usize],
+pub size: crate::ctypes::c_uint,
+pub entrytable: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct linger {
pub l_onoff: crate::ctypes::c_int,
pub l_linger: crate::ctypes::c_int,
@@ -513,6 +762,16 @@ pub msg_len: crate::ctypes::c_uint,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct xt_match {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_target {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct iovec {
pub _address: u8,
}
@@ -927,6 +1186,135 @@ pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
pub const UNIX_PATH_MAX: u32 = 108;
+pub const IFNAMSIZ: u32 = 16;
+pub const IFALIASZ: u32 = 256;
+pub const ALTIFNAMSIZ: u32 = 128;
+pub const GENERIC_HDLC_VERSION: u32 = 4;
+pub const CLOCK_DEFAULT: u32 = 0;
+pub const CLOCK_EXT: u32 = 1;
+pub const CLOCK_INT: u32 = 2;
+pub const CLOCK_TXINT: u32 = 3;
+pub const CLOCK_TXFROMRX: u32 = 4;
+pub const ENCODING_DEFAULT: u32 = 0;
+pub const ENCODING_NRZ: u32 = 1;
+pub const ENCODING_NRZI: u32 = 2;
+pub const ENCODING_FM_MARK: u32 = 3;
+pub const ENCODING_FM_SPACE: u32 = 4;
+pub const ENCODING_MANCHESTER: u32 = 5;
+pub const PARITY_DEFAULT: u32 = 0;
+pub const PARITY_NONE: u32 = 1;
+pub const PARITY_CRC16_PR0: u32 = 2;
+pub const PARITY_CRC16_PR1: u32 = 3;
+pub const PARITY_CRC16_PR0_CCITT: u32 = 4;
+pub const PARITY_CRC16_PR1_CCITT: u32 = 5;
+pub const PARITY_CRC32_PR0_CCITT: u32 = 6;
+pub const PARITY_CRC32_PR1_CCITT: u32 = 7;
+pub const LMI_DEFAULT: u32 = 0;
+pub const LMI_NONE: u32 = 1;
+pub const LMI_ANSI: u32 = 2;
+pub const LMI_CCITT: u32 = 3;
+pub const LMI_CISCO: u32 = 4;
+pub const IF_GET_IFACE: u32 = 1;
+pub const IF_GET_PROTO: u32 = 2;
+pub const IF_IFACE_V35: u32 = 4096;
+pub const IF_IFACE_V24: u32 = 4097;
+pub const IF_IFACE_X21: u32 = 4098;
+pub const IF_IFACE_T1: u32 = 4099;
+pub const IF_IFACE_E1: u32 = 4100;
+pub const IF_IFACE_SYNC_SERIAL: u32 = 4101;
+pub const IF_IFACE_X21D: u32 = 4102;
+pub const IF_PROTO_HDLC: u32 = 8192;
+pub const IF_PROTO_PPP: u32 = 8193;
+pub const IF_PROTO_CISCO: u32 = 8194;
+pub const IF_PROTO_FR: u32 = 8195;
+pub const IF_PROTO_FR_ADD_PVC: u32 = 8196;
+pub const IF_PROTO_FR_DEL_PVC: u32 = 8197;
+pub const IF_PROTO_X25: u32 = 8198;
+pub const IF_PROTO_HDLC_ETH: u32 = 8199;
+pub const IF_PROTO_FR_ADD_ETH_PVC: u32 = 8200;
+pub const IF_PROTO_FR_DEL_ETH_PVC: u32 = 8201;
+pub const IF_PROTO_FR_PVC: u32 = 8202;
+pub const IF_PROTO_FR_ETH_PVC: u32 = 8203;
+pub const IF_PROTO_RAW: u32 = 8204;
+pub const IFHWADDRLEN: u32 = 6;
+pub const NF_DROP: u32 = 0;
+pub const NF_ACCEPT: u32 = 1;
+pub const NF_STOLEN: u32 = 2;
+pub const NF_QUEUE: u32 = 3;
+pub const NF_REPEAT: u32 = 4;
+pub const NF_STOP: u32 = 5;
+pub const NF_MAX_VERDICT: u32 = 5;
+pub const NF_VERDICT_MASK: u32 = 255;
+pub const NF_VERDICT_FLAG_QUEUE_BYPASS: u32 = 32768;
+pub const NF_VERDICT_QMASK: u32 = 4294901760;
+pub const NF_VERDICT_QBITS: u32 = 16;
+pub const NF_VERDICT_BITS: u32 = 16;
+pub const NF_IP6_PRE_ROUTING: u32 = 0;
+pub const NF_IP6_LOCAL_IN: u32 = 1;
+pub const NF_IP6_FORWARD: u32 = 2;
+pub const NF_IP6_LOCAL_OUT: u32 = 3;
+pub const NF_IP6_POST_ROUTING: u32 = 4;
+pub const NF_IP6_NUMHOOKS: u32 = 5;
+pub const XT_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const XT_EXTENSION_MAXNAMELEN: u32 = 29;
+pub const XT_TABLE_MAXNAMELEN: u32 = 32;
+pub const XT_CONTINUE: u32 = 4294967295;
+pub const XT_RETURN: i32 = -5;
+pub const XT_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const XT_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const XT_INV_PROTO: u32 = 64;
+pub const IP6T_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const IP6T_TABLE_MAXNAMELEN: u32 = 32;
+pub const IP6T_CONTINUE: u32 = 4294967295;
+pub const IP6T_RETURN: i32 = -5;
+pub const XT_TCP_INV_SRCPT: u32 = 1;
+pub const XT_TCP_INV_DSTPT: u32 = 2;
+pub const XT_TCP_INV_FLAGS: u32 = 4;
+pub const XT_TCP_INV_OPTION: u32 = 8;
+pub const XT_TCP_INV_MASK: u32 = 15;
+pub const XT_UDP_INV_SRCPT: u32 = 1;
+pub const XT_UDP_INV_DSTPT: u32 = 2;
+pub const XT_UDP_INV_MASK: u32 = 3;
+pub const IP6T_TCP_INV_SRCPT: u32 = 1;
+pub const IP6T_TCP_INV_DSTPT: u32 = 2;
+pub const IP6T_TCP_INV_FLAGS: u32 = 4;
+pub const IP6T_TCP_INV_OPTION: u32 = 8;
+pub const IP6T_TCP_INV_MASK: u32 = 15;
+pub const IP6T_UDP_INV_SRCPT: u32 = 1;
+pub const IP6T_UDP_INV_DSTPT: u32 = 2;
+pub const IP6T_UDP_INV_MASK: u32 = 3;
+pub const IP6T_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const IP6T_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const IP6T_F_PROTO: u32 = 1;
+pub const IP6T_F_TOS: u32 = 2;
+pub const IP6T_F_GOTO: u32 = 4;
+pub const IP6T_F_MASK: u32 = 7;
+pub const IP6T_INV_VIA_IN: u32 = 1;
+pub const IP6T_INV_VIA_OUT: u32 = 2;
+pub const IP6T_INV_TOS: u32 = 4;
+pub const IP6T_INV_SRCIP: u32 = 8;
+pub const IP6T_INV_DSTIP: u32 = 16;
+pub const IP6T_INV_FRAG: u32 = 32;
+pub const IP6T_INV_PROTO: u32 = 64;
+pub const IP6T_INV_MASK: u32 = 127;
+pub const IP6T_BASE_CTL: u32 = 64;
+pub const IP6T_SO_SET_REPLACE: u32 = 64;
+pub const IP6T_SO_SET_ADD_COUNTERS: u32 = 65;
+pub const IP6T_SO_SET_MAX: u32 = 65;
+pub const IP6T_SO_GET_INFO: u32 = 64;
+pub const IP6T_SO_GET_ENTRIES: u32 = 65;
+pub const IP6T_SO_GET_REVISION_MATCH: u32 = 68;
+pub const IP6T_SO_GET_REVISION_TARGET: u32 = 69;
+pub const IP6T_SO_GET_MAX: u32 = 69;
+pub const IP6T_SO_ORIGINAL_DST: u32 = 80;
+pub const IP6T_ICMP_INV: u32 = 1;
+pub const NF_IP_PRE_ROUTING: u32 = 0;
+pub const NF_IP_LOCAL_IN: u32 = 1;
+pub const NF_IP_FORWARD: u32 = 2;
+pub const NF_IP_LOCAL_OUT: u32 = 3;
+pub const NF_IP_POST_ROUTING: u32 = 4;
+pub const NF_IP_NUMHOOKS: u32 = 5;
+pub const SO_ORIGINAL_DST: u32 = 80;
pub const SHUT_RD: u32 = 0;
pub const SHUT_WR: u32 = 1;
pub const SHUT_RDWR: u32 = 2;
@@ -1155,6 +1543,25 @@ pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NO
pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
+pub const IF_OPER_UNKNOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UNKNOWN;
+pub const IF_OPER_NOTPRESENT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_NOTPRESENT;
+pub const IF_OPER_DOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DOWN;
+pub const IF_OPER_LOWERLAYERDOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_LOWERLAYERDOWN;
+pub const IF_OPER_TESTING: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_TESTING;
+pub const IF_OPER_DORMANT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DORMANT;
+pub const IF_OPER_UP: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UP;
+pub const IF_LINK_MODE_DEFAULT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DEFAULT;
+pub const IF_LINK_MODE_DORMANT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DORMANT;
+pub const IF_LINK_MODE_TESTING: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_TESTING;
+pub const NFPROTO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_UNSPEC;
+pub const NFPROTO_INET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_INET;
+pub const NFPROTO_IPV4: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV4;
+pub const NFPROTO_ARP: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_ARP;
+pub const NFPROTO_NETDEV: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NETDEV;
+pub const NFPROTO_BRIDGE: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_BRIDGE;
+pub const NFPROTO_IPV6: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV6;
+pub const NFPROTO_DECNET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_DECNET;
+pub const NFPROTO_NUMPROTO: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NUMPROTO;
#[repr(u32)]
#[non_exhaustive]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -1378,6 +1785,121 @@ TCP_NLA_EDT = 25,
TCP_NLA_TTL = 26,
TCP_NLA_REHASH = 27,
}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum net_device_flags {
+IFF_UP = 1,
+IFF_BROADCAST = 2,
+IFF_DEBUG = 4,
+IFF_LOOPBACK = 8,
+IFF_POINTOPOINT = 16,
+IFF_NOTRAILERS = 32,
+IFF_RUNNING = 64,
+IFF_NOARP = 128,
+IFF_PROMISC = 256,
+IFF_ALLMULTI = 512,
+IFF_MASTER = 1024,
+IFF_SLAVE = 2048,
+IFF_MULTICAST = 4096,
+IFF_PORTSEL = 8192,
+IFF_AUTOMEDIA = 16384,
+IFF_DYNAMIC = 32768,
+IFF_LOWER_UP = 65536,
+IFF_DORMANT = 131072,
+IFF_ECHO = 262144,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_7 {
+IF_OPER_UNKNOWN = 0,
+IF_OPER_NOTPRESENT = 1,
+IF_OPER_DOWN = 2,
+IF_OPER_LOWERLAYERDOWN = 3,
+IF_OPER_TESTING = 4,
+IF_OPER_DORMANT = 5,
+IF_OPER_UP = 6,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_8 {
+IF_LINK_MODE_DEFAULT = 0,
+IF_LINK_MODE_DORMANT = 1,
+IF_LINK_MODE_TESTING = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_inet_hooks {
+NF_INET_PRE_ROUTING = 0,
+NF_INET_LOCAL_IN = 1,
+NF_INET_FORWARD = 2,
+NF_INET_LOCAL_OUT = 3,
+NF_INET_POST_ROUTING = 4,
+NF_INET_NUMHOOKS = 5,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_dev_hooks {
+NF_NETDEV_INGRESS = 0,
+NF_NETDEV_EGRESS = 1,
+NF_NETDEV_NUMHOOKS = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_9 {
+NFPROTO_UNSPEC = 0,
+NFPROTO_INET = 1,
+NFPROTO_IPV4 = 2,
+NFPROTO_ARP = 3,
+NFPROTO_NETDEV = 5,
+NFPROTO_BRIDGE = 7,
+NFPROTO_IPV6 = 10,
+NFPROTO_DECNET = 12,
+NFPROTO_NUMPROTO = 13,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip6_hook_priorities {
+NF_IP6_PRI_FIRST = -2147483648,
+NF_IP6_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP6_PRI_RAW = -300,
+NF_IP6_PRI_SELINUX_FIRST = -225,
+NF_IP6_PRI_CONNTRACK = -200,
+NF_IP6_PRI_MANGLE = -150,
+NF_IP6_PRI_NAT_DST = -100,
+NF_IP6_PRI_FILTER = 0,
+NF_IP6_PRI_SECURITY = 50,
+NF_IP6_PRI_NAT_SRC = 100,
+NF_IP6_PRI_SELINUX_LAST = 225,
+NF_IP6_PRI_CONNTRACK_HELPER = 300,
+NF_IP6_PRI_LAST = 2147483647,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip_hook_priorities {
+NF_IP_PRI_FIRST = -2147483648,
+NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP_PRI_RAW = -300,
+NF_IP_PRI_SELINUX_FIRST = -225,
+NF_IP_PRI_CONNTRACK = -200,
+NF_IP_PRI_MANGLE = -150,
+NF_IP_PRI_NAT_DST = -100,
+NF_IP_PRI_FILTER = 0,
+NF_IP_PRI_SECURITY = 50,
+NF_IP_PRI_NAT_SRC = 100,
+NF_IP_PRI_SELINUX_LAST = 225,
+NF_IP_PRI_CONNTRACK_HELPER = 300,
+NF_IP_PRI_CONNTRACK_CONFIRM = 2147483647,
+}
#[repr(C)]
#[derive(Copy, Clone)]
pub union __kernel_sockaddr_storage__bindgen_ty_1 {
@@ -1409,6 +1931,69 @@ pub union tcp_word_hdr {
pub hdr: tcphdr,
pub words: [__be32; 5usize],
}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union if_settings__bindgen_ty_1 {
+pub raw_hdlc: *mut raw_hdlc_proto,
+pub cisco: *mut cisco_proto,
+pub fr: *mut fr_proto,
+pub fr_pvc: *mut fr_proto_pvc,
+pub fr_pvc_info: *mut fr_proto_pvc_info,
+pub x25: *mut x25_hdlc_proto,
+pub sync: *mut sync_serial_settings,
+pub te1: *mut te1_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_1 {
+pub ifrn_name: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_2 {
+pub ifru_addr: sockaddr,
+pub ifru_dstaddr: sockaddr,
+pub ifru_broadaddr: sockaddr,
+pub ifru_netmask: sockaddr,
+pub ifru_hwaddr: sockaddr,
+pub ifru_flags: crate::ctypes::c_short,
+pub ifru_ivalue: crate::ctypes::c_int,
+pub ifru_mtu: crate::ctypes::c_int,
+pub ifru_map: ifmap,
+pub ifru_slave: [crate::ctypes::c_char; 16usize],
+pub ifru_newname: [crate::ctypes::c_char; 16usize],
+pub ifru_data: *mut crate::ctypes::c_void,
+pub ifru_settings: if_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifconf__bindgen_ty_1 {
+pub ifcu_buf: *mut crate::ctypes::c_char,
+pub ifcu_req: *mut ifreq,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union nf_inet_addr {
+pub all: [__u32; 4usize],
+pub ip: __be32,
+pub ip6: [__be32; 4usize],
+pub in_: in_addr,
+pub in6: in6_addr,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_match__bindgen_ty_1 {
+pub user: xt_entry_match__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_match__bindgen_ty_1__bindgen_ty_2,
+pub match_size: __u16,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_target__bindgen_ty_1 {
+pub user: xt_entry_target__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_target__bindgen_ty_1__bindgen_ty_2,
+pub target_size: __u16,
+}
impl<Storage> __BindgenBitfieldUnit<Storage> {
#[inline]
pub const fn new(storage: Storage) -> Self {
@@ -1834,3 +2419,9 @@ tcpi_fastopen_client_fail as u64
__bindgen_bitfield_unit
}
}
+impl nf_inet_hooks {
+pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
+}
+impl nf_ip_hook_priorities {
+pub const NF_IP_PRI_LAST: nf_ip_hook_priorities = nf_ip_hook_priorities::NF_IP_PRI_CONNTRACK_CONFIRM;
+}
diff --git a/vendor/linux-raw-sys/src/elf.rs b/vendor/linux-raw-sys/src/elf.rs
index 0141329f6..d4a641067 100644
--- a/vendor/linux-raw-sys/src/elf.rs
+++ b/vendor/linux-raw-sys/src/elf.rs
@@ -42,6 +42,9 @@ pub const DT_SYMTAB: usize = 6;
pub const DT_RELA: usize = 7;
pub const DT_RELASZ: usize = 8;
pub const DT_RELAENT: usize = 9;
+pub const DT_REL: usize = 17;
+pub const DT_RELSZ: usize = 18;
+pub const DT_RELENT: usize = 19;
pub const DT_SYMENT: usize = 11;
pub const DT_VERSYM: usize = 0x6fff_fff0;
pub const DT_VERDEF: usize = 0x6fff_fffc;
@@ -233,6 +236,34 @@ impl Elf_Rela {
}
}
+#[cfg(target_pointer_width = "32")]
+#[repr(C)]
+pub struct Elf_Rel {
+ pub r_offset: usize,
+ pub r_info: u32,
+}
+
+#[cfg(target_pointer_width = "64")]
+#[repr(C)]
+pub struct Elf_Rel {
+ pub r_offset: usize,
+ pub r_info: u64,
+}
+
+impl Elf_Rel {
+ #[inline]
+ pub fn type_(&self) -> u32 {
+ #[cfg(target_pointer_width = "32")]
+ {
+ self.r_info & 0xff
+ }
+ #[cfg(target_pointer_width = "64")]
+ {
+ (self.r_info & 0xffff_ffff) as u32
+ }
+ }
+}
+
#[cfg(target_arch = "x86_64")]
pub const R_RELATIVE: u32 = 8; // `R_X86_64_RELATIVE`
#[cfg(target_arch = "x86")]
diff --git a/vendor/linux-raw-sys/src/loongarch64/general.rs b/vendor/linux-raw-sys/src/loongarch64/general.rs
index 893a49235..686d05bb5 100644
--- a/vendor/linux-raw-sys/src/loongarch64/general.rs
+++ b/vendor/linux-raw-sys/src/loongarch64/general.rs
@@ -1566,6 +1566,19 @@ pub const POLLRDHUP: u32 = 8192;
pub const GRND_NONBLOCK: u32 = 1;
pub const GRND_RANDOM: u32 = 2;
pub const GRND_INSECURE: u32 = 4;
+pub const LINUX_REBOOT_MAGIC1: u32 = 4276215469;
+pub const LINUX_REBOOT_MAGIC2: u32 = 672274793;
+pub const LINUX_REBOOT_MAGIC2A: u32 = 85072278;
+pub const LINUX_REBOOT_MAGIC2B: u32 = 369367448;
+pub const LINUX_REBOOT_MAGIC2C: u32 = 537993216;
+pub const LINUX_REBOOT_CMD_RESTART: u32 = 19088743;
+pub const LINUX_REBOOT_CMD_HALT: u32 = 3454992675;
+pub const LINUX_REBOOT_CMD_CAD_ON: u32 = 2309737967;
+pub const LINUX_REBOOT_CMD_CAD_OFF: u32 = 0;
+pub const LINUX_REBOOT_CMD_POWER_OFF: u32 = 1126301404;
+pub const LINUX_REBOOT_CMD_RESTART2: u32 = 2712847316;
+pub const LINUX_REBOOT_CMD_SW_SUSPEND: u32 = 3489725666;
+pub const LINUX_REBOOT_CMD_KEXEC: u32 = 1163412803;
pub const ITIMER_REAL: u32 = 0;
pub const ITIMER_VIRTUAL: u32 = 1;
pub const ITIMER_PROF: u32 = 2;
diff --git a/vendor/linux-raw-sys/src/loongarch64/net.rs b/vendor/linux-raw-sys/src/loongarch64/net.rs
index 77630ebf2..2e3eeacad 100644
--- a/vendor/linux-raw-sys/src/loongarch64/net.rs
+++ b/vendor/linux-raw-sys/src/loongarch64/net.rs
@@ -476,6 +476,255 @@ pub __storage: __kernel_sockaddr_storage,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct sync_serial_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct te1_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+pub slot_map: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct raw_hdlc_proto {
+pub encoding: crate::ctypes::c_ushort,
+pub parity: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto {
+pub t391: crate::ctypes::c_uint,
+pub t392: crate::ctypes::c_uint,
+pub n391: crate::ctypes::c_uint,
+pub n392: crate::ctypes::c_uint,
+pub n393: crate::ctypes::c_uint,
+pub lmi: crate::ctypes::c_ushort,
+pub dce: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc {
+pub dlci: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc_info {
+pub dlci: crate::ctypes::c_uint,
+pub master: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct cisco_proto {
+pub interval: crate::ctypes::c_uint,
+pub timeout: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct x25_hdlc_proto {
+pub dce: crate::ctypes::c_ushort,
+pub modulo: crate::ctypes::c_uint,
+pub window: crate::ctypes::c_uint,
+pub t1: crate::ctypes::c_uint,
+pub t2: crate::ctypes::c_uint,
+pub n2: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ifmap {
+pub mem_start: crate::ctypes::c_ulong,
+pub mem_end: crate::ctypes::c_ulong,
+pub base_addr: crate::ctypes::c_ushort,
+pub irq: crate::ctypes::c_uchar,
+pub dma: crate::ctypes::c_uchar,
+pub port: crate::ctypes::c_uchar,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct if_settings {
+pub type_: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub ifs_ifsu: if_settings__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifreq {
+pub ifr_ifrn: ifreq__bindgen_ty_1,
+pub ifr_ifru: ifreq__bindgen_ty_2,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifconf {
+pub ifc_len: crate::ctypes::c_int,
+pub ifc_ifcu: ifconf__bindgen_ty_1,
+}
+#[repr(C)]
+pub struct xt_entry_match {
+pub u: xt_entry_match__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_1 {
+pub match_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_2 {
+pub match_size: __u16,
+pub match_: *mut xt_match,
+}
+#[repr(C)]
+pub struct xt_entry_target {
+pub u: xt_entry_target__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_1 {
+pub target_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_2 {
+pub target_size: __u16,
+pub target: *mut xt_target,
+}
+#[repr(C)]
+pub struct xt_standard_target {
+pub target: xt_entry_target,
+pub verdict: crate::ctypes::c_int,
+}
+#[repr(C)]
+pub struct xt_error_target {
+pub target: xt_entry_target,
+pub errorname: [crate::ctypes::c_char; 30usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_get_revision {
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _xt_align {
+pub u8_: __u8,
+pub u16_: __u16,
+pub u32_: __u32,
+pub u64_: __u64,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_counters {
+pub pcnt: __u64,
+pub bcnt: __u64,
+}
+#[repr(C)]
+#[derive(Debug)]
+pub struct xt_counters_info {
+pub name: [crate::ctypes::c_char; 32usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: __IncompleteArrayField<xt_counters>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_tcp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub option: __u8,
+pub flg_mask: __u8,
+pub flg_cmp: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_udp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ip6t_ip6 {
+pub src: in6_addr,
+pub dst: in6_addr,
+pub smsk: in6_addr,
+pub dmsk: in6_addr,
+pub iniface: [crate::ctypes::c_char; 16usize],
+pub outiface: [crate::ctypes::c_char; 16usize],
+pub iniface_mask: [crate::ctypes::c_uchar; 16usize],
+pub outiface_mask: [crate::ctypes::c_uchar; 16usize],
+pub proto: __u16,
+pub tos: __u8,
+pub flags: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+pub struct ip6t_entry {
+pub ipv6: ip6t_ip6,
+pub nfcache: crate::ctypes::c_uint,
+pub target_offset: __u16,
+pub next_offset: __u16,
+pub comefrom: crate::ctypes::c_uint,
+pub counters: xt_counters,
+pub elems: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+pub struct ip6t_standard {
+pub entry: ip6t_entry,
+pub target: xt_standard_target,
+}
+#[repr(C)]
+pub struct ip6t_error {
+pub entry: ip6t_entry,
+pub target: xt_error_target,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_icmp {
+pub type_: __u8,
+pub code: [__u8; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_getinfo {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+}
+#[repr(C)]
+pub struct ip6t_replace {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: *mut xt_counters,
+pub entries: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+pub struct ip6t_get_entries {
+pub name: [crate::ctypes::c_char; 32usize],
+pub size: crate::ctypes::c_uint,
+pub entrytable: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct linger {
pub l_onoff: crate::ctypes::c_int,
pub l_linger: crate::ctypes::c_int,
@@ -513,6 +762,16 @@ pub msg_len: crate::ctypes::c_uint,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct xt_match {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_target {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct iovec {
pub _address: u8,
}
@@ -935,6 +1194,135 @@ pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
pub const UNIX_PATH_MAX: u32 = 108;
+pub const IFNAMSIZ: u32 = 16;
+pub const IFALIASZ: u32 = 256;
+pub const ALTIFNAMSIZ: u32 = 128;
+pub const GENERIC_HDLC_VERSION: u32 = 4;
+pub const CLOCK_DEFAULT: u32 = 0;
+pub const CLOCK_EXT: u32 = 1;
+pub const CLOCK_INT: u32 = 2;
+pub const CLOCK_TXINT: u32 = 3;
+pub const CLOCK_TXFROMRX: u32 = 4;
+pub const ENCODING_DEFAULT: u32 = 0;
+pub const ENCODING_NRZ: u32 = 1;
+pub const ENCODING_NRZI: u32 = 2;
+pub const ENCODING_FM_MARK: u32 = 3;
+pub const ENCODING_FM_SPACE: u32 = 4;
+pub const ENCODING_MANCHESTER: u32 = 5;
+pub const PARITY_DEFAULT: u32 = 0;
+pub const PARITY_NONE: u32 = 1;
+pub const PARITY_CRC16_PR0: u32 = 2;
+pub const PARITY_CRC16_PR1: u32 = 3;
+pub const PARITY_CRC16_PR0_CCITT: u32 = 4;
+pub const PARITY_CRC16_PR1_CCITT: u32 = 5;
+pub const PARITY_CRC32_PR0_CCITT: u32 = 6;
+pub const PARITY_CRC32_PR1_CCITT: u32 = 7;
+pub const LMI_DEFAULT: u32 = 0;
+pub const LMI_NONE: u32 = 1;
+pub const LMI_ANSI: u32 = 2;
+pub const LMI_CCITT: u32 = 3;
+pub const LMI_CISCO: u32 = 4;
+pub const IF_GET_IFACE: u32 = 1;
+pub const IF_GET_PROTO: u32 = 2;
+pub const IF_IFACE_V35: u32 = 4096;
+pub const IF_IFACE_V24: u32 = 4097;
+pub const IF_IFACE_X21: u32 = 4098;
+pub const IF_IFACE_T1: u32 = 4099;
+pub const IF_IFACE_E1: u32 = 4100;
+pub const IF_IFACE_SYNC_SERIAL: u32 = 4101;
+pub const IF_IFACE_X21D: u32 = 4102;
+pub const IF_PROTO_HDLC: u32 = 8192;
+pub const IF_PROTO_PPP: u32 = 8193;
+pub const IF_PROTO_CISCO: u32 = 8194;
+pub const IF_PROTO_FR: u32 = 8195;
+pub const IF_PROTO_FR_ADD_PVC: u32 = 8196;
+pub const IF_PROTO_FR_DEL_PVC: u32 = 8197;
+pub const IF_PROTO_X25: u32 = 8198;
+pub const IF_PROTO_HDLC_ETH: u32 = 8199;
+pub const IF_PROTO_FR_ADD_ETH_PVC: u32 = 8200;
+pub const IF_PROTO_FR_DEL_ETH_PVC: u32 = 8201;
+pub const IF_PROTO_FR_PVC: u32 = 8202;
+pub const IF_PROTO_FR_ETH_PVC: u32 = 8203;
+pub const IF_PROTO_RAW: u32 = 8204;
+pub const IFHWADDRLEN: u32 = 6;
+pub const NF_DROP: u32 = 0;
+pub const NF_ACCEPT: u32 = 1;
+pub const NF_STOLEN: u32 = 2;
+pub const NF_QUEUE: u32 = 3;
+pub const NF_REPEAT: u32 = 4;
+pub const NF_STOP: u32 = 5;
+pub const NF_MAX_VERDICT: u32 = 5;
+pub const NF_VERDICT_MASK: u32 = 255;
+pub const NF_VERDICT_FLAG_QUEUE_BYPASS: u32 = 32768;
+pub const NF_VERDICT_QMASK: u32 = 4294901760;
+pub const NF_VERDICT_QBITS: u32 = 16;
+pub const NF_VERDICT_BITS: u32 = 16;
+pub const NF_IP6_PRE_ROUTING: u32 = 0;
+pub const NF_IP6_LOCAL_IN: u32 = 1;
+pub const NF_IP6_FORWARD: u32 = 2;
+pub const NF_IP6_LOCAL_OUT: u32 = 3;
+pub const NF_IP6_POST_ROUTING: u32 = 4;
+pub const NF_IP6_NUMHOOKS: u32 = 5;
+pub const XT_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const XT_EXTENSION_MAXNAMELEN: u32 = 29;
+pub const XT_TABLE_MAXNAMELEN: u32 = 32;
+pub const XT_CONTINUE: u32 = 4294967295;
+pub const XT_RETURN: i32 = -5;
+pub const XT_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const XT_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const XT_INV_PROTO: u32 = 64;
+pub const IP6T_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const IP6T_TABLE_MAXNAMELEN: u32 = 32;
+pub const IP6T_CONTINUE: u32 = 4294967295;
+pub const IP6T_RETURN: i32 = -5;
+pub const XT_TCP_INV_SRCPT: u32 = 1;
+pub const XT_TCP_INV_DSTPT: u32 = 2;
+pub const XT_TCP_INV_FLAGS: u32 = 4;
+pub const XT_TCP_INV_OPTION: u32 = 8;
+pub const XT_TCP_INV_MASK: u32 = 15;
+pub const XT_UDP_INV_SRCPT: u32 = 1;
+pub const XT_UDP_INV_DSTPT: u32 = 2;
+pub const XT_UDP_INV_MASK: u32 = 3;
+pub const IP6T_TCP_INV_SRCPT: u32 = 1;
+pub const IP6T_TCP_INV_DSTPT: u32 = 2;
+pub const IP6T_TCP_INV_FLAGS: u32 = 4;
+pub const IP6T_TCP_INV_OPTION: u32 = 8;
+pub const IP6T_TCP_INV_MASK: u32 = 15;
+pub const IP6T_UDP_INV_SRCPT: u32 = 1;
+pub const IP6T_UDP_INV_DSTPT: u32 = 2;
+pub const IP6T_UDP_INV_MASK: u32 = 3;
+pub const IP6T_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const IP6T_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const IP6T_F_PROTO: u32 = 1;
+pub const IP6T_F_TOS: u32 = 2;
+pub const IP6T_F_GOTO: u32 = 4;
+pub const IP6T_F_MASK: u32 = 7;
+pub const IP6T_INV_VIA_IN: u32 = 1;
+pub const IP6T_INV_VIA_OUT: u32 = 2;
+pub const IP6T_INV_TOS: u32 = 4;
+pub const IP6T_INV_SRCIP: u32 = 8;
+pub const IP6T_INV_DSTIP: u32 = 16;
+pub const IP6T_INV_FRAG: u32 = 32;
+pub const IP6T_INV_PROTO: u32 = 64;
+pub const IP6T_INV_MASK: u32 = 127;
+pub const IP6T_BASE_CTL: u32 = 64;
+pub const IP6T_SO_SET_REPLACE: u32 = 64;
+pub const IP6T_SO_SET_ADD_COUNTERS: u32 = 65;
+pub const IP6T_SO_SET_MAX: u32 = 65;
+pub const IP6T_SO_GET_INFO: u32 = 64;
+pub const IP6T_SO_GET_ENTRIES: u32 = 65;
+pub const IP6T_SO_GET_REVISION_MATCH: u32 = 68;
+pub const IP6T_SO_GET_REVISION_TARGET: u32 = 69;
+pub const IP6T_SO_GET_MAX: u32 = 69;
+pub const IP6T_SO_ORIGINAL_DST: u32 = 80;
+pub const IP6T_ICMP_INV: u32 = 1;
+pub const NF_IP_PRE_ROUTING: u32 = 0;
+pub const NF_IP_LOCAL_IN: u32 = 1;
+pub const NF_IP_FORWARD: u32 = 2;
+pub const NF_IP_LOCAL_OUT: u32 = 3;
+pub const NF_IP_POST_ROUTING: u32 = 4;
+pub const NF_IP_NUMHOOKS: u32 = 5;
+pub const SO_ORIGINAL_DST: u32 = 80;
pub const SHUT_RD: u32 = 0;
pub const SHUT_WR: u32 = 1;
pub const SHUT_RDWR: u32 = 2;
@@ -1163,6 +1551,25 @@ pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NO
pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
+pub const IF_OPER_UNKNOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UNKNOWN;
+pub const IF_OPER_NOTPRESENT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_NOTPRESENT;
+pub const IF_OPER_DOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DOWN;
+pub const IF_OPER_LOWERLAYERDOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_LOWERLAYERDOWN;
+pub const IF_OPER_TESTING: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_TESTING;
+pub const IF_OPER_DORMANT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DORMANT;
+pub const IF_OPER_UP: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UP;
+pub const IF_LINK_MODE_DEFAULT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DEFAULT;
+pub const IF_LINK_MODE_DORMANT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DORMANT;
+pub const IF_LINK_MODE_TESTING: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_TESTING;
+pub const NFPROTO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_UNSPEC;
+pub const NFPROTO_INET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_INET;
+pub const NFPROTO_IPV4: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV4;
+pub const NFPROTO_ARP: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_ARP;
+pub const NFPROTO_NETDEV: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NETDEV;
+pub const NFPROTO_BRIDGE: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_BRIDGE;
+pub const NFPROTO_IPV6: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV6;
+pub const NFPROTO_DECNET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_DECNET;
+pub const NFPROTO_NUMPROTO: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NUMPROTO;
#[repr(u32)]
#[non_exhaustive]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -1386,6 +1793,121 @@ TCP_NLA_EDT = 25,
TCP_NLA_TTL = 26,
TCP_NLA_REHASH = 27,
}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum net_device_flags {
+IFF_UP = 1,
+IFF_BROADCAST = 2,
+IFF_DEBUG = 4,
+IFF_LOOPBACK = 8,
+IFF_POINTOPOINT = 16,
+IFF_NOTRAILERS = 32,
+IFF_RUNNING = 64,
+IFF_NOARP = 128,
+IFF_PROMISC = 256,
+IFF_ALLMULTI = 512,
+IFF_MASTER = 1024,
+IFF_SLAVE = 2048,
+IFF_MULTICAST = 4096,
+IFF_PORTSEL = 8192,
+IFF_AUTOMEDIA = 16384,
+IFF_DYNAMIC = 32768,
+IFF_LOWER_UP = 65536,
+IFF_DORMANT = 131072,
+IFF_ECHO = 262144,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_7 {
+IF_OPER_UNKNOWN = 0,
+IF_OPER_NOTPRESENT = 1,
+IF_OPER_DOWN = 2,
+IF_OPER_LOWERLAYERDOWN = 3,
+IF_OPER_TESTING = 4,
+IF_OPER_DORMANT = 5,
+IF_OPER_UP = 6,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_8 {
+IF_LINK_MODE_DEFAULT = 0,
+IF_LINK_MODE_DORMANT = 1,
+IF_LINK_MODE_TESTING = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_inet_hooks {
+NF_INET_PRE_ROUTING = 0,
+NF_INET_LOCAL_IN = 1,
+NF_INET_FORWARD = 2,
+NF_INET_LOCAL_OUT = 3,
+NF_INET_POST_ROUTING = 4,
+NF_INET_NUMHOOKS = 5,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_dev_hooks {
+NF_NETDEV_INGRESS = 0,
+NF_NETDEV_EGRESS = 1,
+NF_NETDEV_NUMHOOKS = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_9 {
+NFPROTO_UNSPEC = 0,
+NFPROTO_INET = 1,
+NFPROTO_IPV4 = 2,
+NFPROTO_ARP = 3,
+NFPROTO_NETDEV = 5,
+NFPROTO_BRIDGE = 7,
+NFPROTO_IPV6 = 10,
+NFPROTO_DECNET = 12,
+NFPROTO_NUMPROTO = 13,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip6_hook_priorities {
+NF_IP6_PRI_FIRST = -2147483648,
+NF_IP6_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP6_PRI_RAW = -300,
+NF_IP6_PRI_SELINUX_FIRST = -225,
+NF_IP6_PRI_CONNTRACK = -200,
+NF_IP6_PRI_MANGLE = -150,
+NF_IP6_PRI_NAT_DST = -100,
+NF_IP6_PRI_FILTER = 0,
+NF_IP6_PRI_SECURITY = 50,
+NF_IP6_PRI_NAT_SRC = 100,
+NF_IP6_PRI_SELINUX_LAST = 225,
+NF_IP6_PRI_CONNTRACK_HELPER = 300,
+NF_IP6_PRI_LAST = 2147483647,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip_hook_priorities {
+NF_IP_PRI_FIRST = -2147483648,
+NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP_PRI_RAW = -300,
+NF_IP_PRI_SELINUX_FIRST = -225,
+NF_IP_PRI_CONNTRACK = -200,
+NF_IP_PRI_MANGLE = -150,
+NF_IP_PRI_NAT_DST = -100,
+NF_IP_PRI_FILTER = 0,
+NF_IP_PRI_SECURITY = 50,
+NF_IP_PRI_NAT_SRC = 100,
+NF_IP_PRI_SELINUX_LAST = 225,
+NF_IP_PRI_CONNTRACK_HELPER = 300,
+NF_IP_PRI_CONNTRACK_CONFIRM = 2147483647,
+}
#[repr(C)]
#[derive(Copy, Clone)]
pub union __kernel_sockaddr_storage__bindgen_ty_1 {
@@ -1417,6 +1939,69 @@ pub union tcp_word_hdr {
pub hdr: tcphdr,
pub words: [__be32; 5usize],
}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union if_settings__bindgen_ty_1 {
+pub raw_hdlc: *mut raw_hdlc_proto,
+pub cisco: *mut cisco_proto,
+pub fr: *mut fr_proto,
+pub fr_pvc: *mut fr_proto_pvc,
+pub fr_pvc_info: *mut fr_proto_pvc_info,
+pub x25: *mut x25_hdlc_proto,
+pub sync: *mut sync_serial_settings,
+pub te1: *mut te1_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_1 {
+pub ifrn_name: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_2 {
+pub ifru_addr: sockaddr,
+pub ifru_dstaddr: sockaddr,
+pub ifru_broadaddr: sockaddr,
+pub ifru_netmask: sockaddr,
+pub ifru_hwaddr: sockaddr,
+pub ifru_flags: crate::ctypes::c_short,
+pub ifru_ivalue: crate::ctypes::c_int,
+pub ifru_mtu: crate::ctypes::c_int,
+pub ifru_map: ifmap,
+pub ifru_slave: [crate::ctypes::c_char; 16usize],
+pub ifru_newname: [crate::ctypes::c_char; 16usize],
+pub ifru_data: *mut crate::ctypes::c_void,
+pub ifru_settings: if_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifconf__bindgen_ty_1 {
+pub ifcu_buf: *mut crate::ctypes::c_char,
+pub ifcu_req: *mut ifreq,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union nf_inet_addr {
+pub all: [__u32; 4usize],
+pub ip: __be32,
+pub ip6: [__be32; 4usize],
+pub in_: in_addr,
+pub in6: in6_addr,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_match__bindgen_ty_1 {
+pub user: xt_entry_match__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_match__bindgen_ty_1__bindgen_ty_2,
+pub match_size: __u16,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_target__bindgen_ty_1 {
+pub user: xt_entry_target__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_target__bindgen_ty_1__bindgen_ty_2,
+pub target_size: __u16,
+}
impl<Storage> __BindgenBitfieldUnit<Storage> {
#[inline]
pub const fn new(storage: Storage) -> Self {
@@ -1842,3 +2427,9 @@ tcpi_fastopen_client_fail as u64
__bindgen_bitfield_unit
}
}
+impl nf_inet_hooks {
+pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
+}
+impl nf_ip_hook_priorities {
+pub const NF_IP_PRI_LAST: nf_ip_hook_priorities = nf_ip_hook_priorities::NF_IP_PRI_CONNTRACK_CONFIRM;
+}
diff --git a/vendor/linux-raw-sys/src/mips/general.rs b/vendor/linux-raw-sys/src/mips/general.rs
index 275eb6536..3ddd66131 100644
--- a/vendor/linux-raw-sys/src/mips/general.rs
+++ b/vendor/linux-raw-sys/src/mips/general.rs
@@ -1619,6 +1619,19 @@ pub const POLLRDHUP: u32 = 8192;
pub const GRND_NONBLOCK: u32 = 1;
pub const GRND_RANDOM: u32 = 2;
pub const GRND_INSECURE: u32 = 4;
+pub const LINUX_REBOOT_MAGIC1: u32 = 4276215469;
+pub const LINUX_REBOOT_MAGIC2: u32 = 672274793;
+pub const LINUX_REBOOT_MAGIC2A: u32 = 85072278;
+pub const LINUX_REBOOT_MAGIC2B: u32 = 369367448;
+pub const LINUX_REBOOT_MAGIC2C: u32 = 537993216;
+pub const LINUX_REBOOT_CMD_RESTART: u32 = 19088743;
+pub const LINUX_REBOOT_CMD_HALT: u32 = 3454992675;
+pub const LINUX_REBOOT_CMD_CAD_ON: u32 = 2309737967;
+pub const LINUX_REBOOT_CMD_CAD_OFF: u32 = 0;
+pub const LINUX_REBOOT_CMD_POWER_OFF: u32 = 1126301404;
+pub const LINUX_REBOOT_CMD_RESTART2: u32 = 2712847316;
+pub const LINUX_REBOOT_CMD_SW_SUSPEND: u32 = 3489725666;
+pub const LINUX_REBOOT_CMD_KEXEC: u32 = 1163412803;
pub const ITIMER_REAL: u32 = 0;
pub const ITIMER_VIRTUAL: u32 = 1;
pub const ITIMER_PROF: u32 = 2;
diff --git a/vendor/linux-raw-sys/src/mips/net.rs b/vendor/linux-raw-sys/src/mips/net.rs
index a0386f4bb..ff3114315 100644
--- a/vendor/linux-raw-sys/src/mips/net.rs
+++ b/vendor/linux-raw-sys/src/mips/net.rs
@@ -476,6 +476,255 @@ pub __storage: __kernel_sockaddr_storage,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct sync_serial_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct te1_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+pub slot_map: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct raw_hdlc_proto {
+pub encoding: crate::ctypes::c_ushort,
+pub parity: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto {
+pub t391: crate::ctypes::c_uint,
+pub t392: crate::ctypes::c_uint,
+pub n391: crate::ctypes::c_uint,
+pub n392: crate::ctypes::c_uint,
+pub n393: crate::ctypes::c_uint,
+pub lmi: crate::ctypes::c_ushort,
+pub dce: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc {
+pub dlci: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc_info {
+pub dlci: crate::ctypes::c_uint,
+pub master: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct cisco_proto {
+pub interval: crate::ctypes::c_uint,
+pub timeout: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct x25_hdlc_proto {
+pub dce: crate::ctypes::c_ushort,
+pub modulo: crate::ctypes::c_uint,
+pub window: crate::ctypes::c_uint,
+pub t1: crate::ctypes::c_uint,
+pub t2: crate::ctypes::c_uint,
+pub n2: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ifmap {
+pub mem_start: crate::ctypes::c_ulong,
+pub mem_end: crate::ctypes::c_ulong,
+pub base_addr: crate::ctypes::c_ushort,
+pub irq: crate::ctypes::c_uchar,
+pub dma: crate::ctypes::c_uchar,
+pub port: crate::ctypes::c_uchar,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct if_settings {
+pub type_: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub ifs_ifsu: if_settings__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifreq {
+pub ifr_ifrn: ifreq__bindgen_ty_1,
+pub ifr_ifru: ifreq__bindgen_ty_2,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifconf {
+pub ifc_len: crate::ctypes::c_int,
+pub ifc_ifcu: ifconf__bindgen_ty_1,
+}
+#[repr(C)]
+pub struct xt_entry_match {
+pub u: xt_entry_match__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_1 {
+pub match_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_2 {
+pub match_size: __u16,
+pub match_: *mut xt_match,
+}
+#[repr(C)]
+pub struct xt_entry_target {
+pub u: xt_entry_target__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_1 {
+pub target_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_2 {
+pub target_size: __u16,
+pub target: *mut xt_target,
+}
+#[repr(C)]
+pub struct xt_standard_target {
+pub target: xt_entry_target,
+pub verdict: crate::ctypes::c_int,
+}
+#[repr(C)]
+pub struct xt_error_target {
+pub target: xt_entry_target,
+pub errorname: [crate::ctypes::c_char; 30usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_get_revision {
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _xt_align {
+pub u8_: __u8,
+pub u16_: __u16,
+pub u32_: __u32,
+pub u64_: __u64,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_counters {
+pub pcnt: __u64,
+pub bcnt: __u64,
+}
+#[repr(C)]
+#[derive(Debug)]
+pub struct xt_counters_info {
+pub name: [crate::ctypes::c_char; 32usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: __IncompleteArrayField<xt_counters>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_tcp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub option: __u8,
+pub flg_mask: __u8,
+pub flg_cmp: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_udp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ip6t_ip6 {
+pub src: in6_addr,
+pub dst: in6_addr,
+pub smsk: in6_addr,
+pub dmsk: in6_addr,
+pub iniface: [crate::ctypes::c_char; 16usize],
+pub outiface: [crate::ctypes::c_char; 16usize],
+pub iniface_mask: [crate::ctypes::c_uchar; 16usize],
+pub outiface_mask: [crate::ctypes::c_uchar; 16usize],
+pub proto: __u16,
+pub tos: __u8,
+pub flags: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+pub struct ip6t_entry {
+pub ipv6: ip6t_ip6,
+pub nfcache: crate::ctypes::c_uint,
+pub target_offset: __u16,
+pub next_offset: __u16,
+pub comefrom: crate::ctypes::c_uint,
+pub counters: xt_counters,
+pub elems: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+pub struct ip6t_standard {
+pub entry: ip6t_entry,
+pub target: xt_standard_target,
+}
+#[repr(C)]
+pub struct ip6t_error {
+pub entry: ip6t_entry,
+pub target: xt_error_target,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_icmp {
+pub type_: __u8,
+pub code: [__u8; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_getinfo {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+}
+#[repr(C)]
+pub struct ip6t_replace {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: *mut xt_counters,
+pub entries: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+pub struct ip6t_get_entries {
+pub name: [crate::ctypes::c_char; 32usize],
+pub size: crate::ctypes::c_uint,
+pub entrytable: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct linger {
pub l_onoff: crate::ctypes::c_int,
pub l_linger: crate::ctypes::c_int,
@@ -513,6 +762,16 @@ pub msg_len: crate::ctypes::c_uint,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct xt_match {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_target {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct iovec {
pub _address: u8,
}
@@ -958,6 +1217,135 @@ pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
pub const UNIX_PATH_MAX: u32 = 108;
+pub const IFNAMSIZ: u32 = 16;
+pub const IFALIASZ: u32 = 256;
+pub const ALTIFNAMSIZ: u32 = 128;
+pub const GENERIC_HDLC_VERSION: u32 = 4;
+pub const CLOCK_DEFAULT: u32 = 0;
+pub const CLOCK_EXT: u32 = 1;
+pub const CLOCK_INT: u32 = 2;
+pub const CLOCK_TXINT: u32 = 3;
+pub const CLOCK_TXFROMRX: u32 = 4;
+pub const ENCODING_DEFAULT: u32 = 0;
+pub const ENCODING_NRZ: u32 = 1;
+pub const ENCODING_NRZI: u32 = 2;
+pub const ENCODING_FM_MARK: u32 = 3;
+pub const ENCODING_FM_SPACE: u32 = 4;
+pub const ENCODING_MANCHESTER: u32 = 5;
+pub const PARITY_DEFAULT: u32 = 0;
+pub const PARITY_NONE: u32 = 1;
+pub const PARITY_CRC16_PR0: u32 = 2;
+pub const PARITY_CRC16_PR1: u32 = 3;
+pub const PARITY_CRC16_PR0_CCITT: u32 = 4;
+pub const PARITY_CRC16_PR1_CCITT: u32 = 5;
+pub const PARITY_CRC32_PR0_CCITT: u32 = 6;
+pub const PARITY_CRC32_PR1_CCITT: u32 = 7;
+pub const LMI_DEFAULT: u32 = 0;
+pub const LMI_NONE: u32 = 1;
+pub const LMI_ANSI: u32 = 2;
+pub const LMI_CCITT: u32 = 3;
+pub const LMI_CISCO: u32 = 4;
+pub const IF_GET_IFACE: u32 = 1;
+pub const IF_GET_PROTO: u32 = 2;
+pub const IF_IFACE_V35: u32 = 4096;
+pub const IF_IFACE_V24: u32 = 4097;
+pub const IF_IFACE_X21: u32 = 4098;
+pub const IF_IFACE_T1: u32 = 4099;
+pub const IF_IFACE_E1: u32 = 4100;
+pub const IF_IFACE_SYNC_SERIAL: u32 = 4101;
+pub const IF_IFACE_X21D: u32 = 4102;
+pub const IF_PROTO_HDLC: u32 = 8192;
+pub const IF_PROTO_PPP: u32 = 8193;
+pub const IF_PROTO_CISCO: u32 = 8194;
+pub const IF_PROTO_FR: u32 = 8195;
+pub const IF_PROTO_FR_ADD_PVC: u32 = 8196;
+pub const IF_PROTO_FR_DEL_PVC: u32 = 8197;
+pub const IF_PROTO_X25: u32 = 8198;
+pub const IF_PROTO_HDLC_ETH: u32 = 8199;
+pub const IF_PROTO_FR_ADD_ETH_PVC: u32 = 8200;
+pub const IF_PROTO_FR_DEL_ETH_PVC: u32 = 8201;
+pub const IF_PROTO_FR_PVC: u32 = 8202;
+pub const IF_PROTO_FR_ETH_PVC: u32 = 8203;
+pub const IF_PROTO_RAW: u32 = 8204;
+pub const IFHWADDRLEN: u32 = 6;
+pub const NF_DROP: u32 = 0;
+pub const NF_ACCEPT: u32 = 1;
+pub const NF_STOLEN: u32 = 2;
+pub const NF_QUEUE: u32 = 3;
+pub const NF_REPEAT: u32 = 4;
+pub const NF_STOP: u32 = 5;
+pub const NF_MAX_VERDICT: u32 = 5;
+pub const NF_VERDICT_MASK: u32 = 255;
+pub const NF_VERDICT_FLAG_QUEUE_BYPASS: u32 = 32768;
+pub const NF_VERDICT_QMASK: u32 = 4294901760;
+pub const NF_VERDICT_QBITS: u32 = 16;
+pub const NF_VERDICT_BITS: u32 = 16;
+pub const NF_IP6_PRE_ROUTING: u32 = 0;
+pub const NF_IP6_LOCAL_IN: u32 = 1;
+pub const NF_IP6_FORWARD: u32 = 2;
+pub const NF_IP6_LOCAL_OUT: u32 = 3;
+pub const NF_IP6_POST_ROUTING: u32 = 4;
+pub const NF_IP6_NUMHOOKS: u32 = 5;
+pub const XT_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const XT_EXTENSION_MAXNAMELEN: u32 = 29;
+pub const XT_TABLE_MAXNAMELEN: u32 = 32;
+pub const XT_CONTINUE: u32 = 4294967295;
+pub const XT_RETURN: i32 = -5;
+pub const XT_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const XT_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const XT_INV_PROTO: u32 = 64;
+pub const IP6T_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const IP6T_TABLE_MAXNAMELEN: u32 = 32;
+pub const IP6T_CONTINUE: u32 = 4294967295;
+pub const IP6T_RETURN: i32 = -5;
+pub const XT_TCP_INV_SRCPT: u32 = 1;
+pub const XT_TCP_INV_DSTPT: u32 = 2;
+pub const XT_TCP_INV_FLAGS: u32 = 4;
+pub const XT_TCP_INV_OPTION: u32 = 8;
+pub const XT_TCP_INV_MASK: u32 = 15;
+pub const XT_UDP_INV_SRCPT: u32 = 1;
+pub const XT_UDP_INV_DSTPT: u32 = 2;
+pub const XT_UDP_INV_MASK: u32 = 3;
+pub const IP6T_TCP_INV_SRCPT: u32 = 1;
+pub const IP6T_TCP_INV_DSTPT: u32 = 2;
+pub const IP6T_TCP_INV_FLAGS: u32 = 4;
+pub const IP6T_TCP_INV_OPTION: u32 = 8;
+pub const IP6T_TCP_INV_MASK: u32 = 15;
+pub const IP6T_UDP_INV_SRCPT: u32 = 1;
+pub const IP6T_UDP_INV_DSTPT: u32 = 2;
+pub const IP6T_UDP_INV_MASK: u32 = 3;
+pub const IP6T_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const IP6T_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const IP6T_F_PROTO: u32 = 1;
+pub const IP6T_F_TOS: u32 = 2;
+pub const IP6T_F_GOTO: u32 = 4;
+pub const IP6T_F_MASK: u32 = 7;
+pub const IP6T_INV_VIA_IN: u32 = 1;
+pub const IP6T_INV_VIA_OUT: u32 = 2;
+pub const IP6T_INV_TOS: u32 = 4;
+pub const IP6T_INV_SRCIP: u32 = 8;
+pub const IP6T_INV_DSTIP: u32 = 16;
+pub const IP6T_INV_FRAG: u32 = 32;
+pub const IP6T_INV_PROTO: u32 = 64;
+pub const IP6T_INV_MASK: u32 = 127;
+pub const IP6T_BASE_CTL: u32 = 64;
+pub const IP6T_SO_SET_REPLACE: u32 = 64;
+pub const IP6T_SO_SET_ADD_COUNTERS: u32 = 65;
+pub const IP6T_SO_SET_MAX: u32 = 65;
+pub const IP6T_SO_GET_INFO: u32 = 64;
+pub const IP6T_SO_GET_ENTRIES: u32 = 65;
+pub const IP6T_SO_GET_REVISION_MATCH: u32 = 68;
+pub const IP6T_SO_GET_REVISION_TARGET: u32 = 69;
+pub const IP6T_SO_GET_MAX: u32 = 69;
+pub const IP6T_SO_ORIGINAL_DST: u32 = 80;
+pub const IP6T_ICMP_INV: u32 = 1;
+pub const NF_IP_PRE_ROUTING: u32 = 0;
+pub const NF_IP_LOCAL_IN: u32 = 1;
+pub const NF_IP_FORWARD: u32 = 2;
+pub const NF_IP_LOCAL_OUT: u32 = 3;
+pub const NF_IP_POST_ROUTING: u32 = 4;
+pub const NF_IP_NUMHOOKS: u32 = 5;
+pub const SO_ORIGINAL_DST: u32 = 80;
pub const SHUT_RD: u32 = 0;
pub const SHUT_WR: u32 = 1;
pub const SHUT_RDWR: u32 = 2;
@@ -1186,6 +1574,25 @@ pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NO
pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
+pub const IF_OPER_UNKNOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UNKNOWN;
+pub const IF_OPER_NOTPRESENT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_NOTPRESENT;
+pub const IF_OPER_DOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DOWN;
+pub const IF_OPER_LOWERLAYERDOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_LOWERLAYERDOWN;
+pub const IF_OPER_TESTING: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_TESTING;
+pub const IF_OPER_DORMANT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DORMANT;
+pub const IF_OPER_UP: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UP;
+pub const IF_LINK_MODE_DEFAULT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DEFAULT;
+pub const IF_LINK_MODE_DORMANT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DORMANT;
+pub const IF_LINK_MODE_TESTING: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_TESTING;
+pub const NFPROTO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_UNSPEC;
+pub const NFPROTO_INET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_INET;
+pub const NFPROTO_IPV4: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV4;
+pub const NFPROTO_ARP: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_ARP;
+pub const NFPROTO_NETDEV: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NETDEV;
+pub const NFPROTO_BRIDGE: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_BRIDGE;
+pub const NFPROTO_IPV6: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV6;
+pub const NFPROTO_DECNET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_DECNET;
+pub const NFPROTO_NUMPROTO: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NUMPROTO;
#[repr(u32)]
#[non_exhaustive]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -1409,6 +1816,121 @@ TCP_NLA_EDT = 25,
TCP_NLA_TTL = 26,
TCP_NLA_REHASH = 27,
}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum net_device_flags {
+IFF_UP = 1,
+IFF_BROADCAST = 2,
+IFF_DEBUG = 4,
+IFF_LOOPBACK = 8,
+IFF_POINTOPOINT = 16,
+IFF_NOTRAILERS = 32,
+IFF_RUNNING = 64,
+IFF_NOARP = 128,
+IFF_PROMISC = 256,
+IFF_ALLMULTI = 512,
+IFF_MASTER = 1024,
+IFF_SLAVE = 2048,
+IFF_MULTICAST = 4096,
+IFF_PORTSEL = 8192,
+IFF_AUTOMEDIA = 16384,
+IFF_DYNAMIC = 32768,
+IFF_LOWER_UP = 65536,
+IFF_DORMANT = 131072,
+IFF_ECHO = 262144,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_7 {
+IF_OPER_UNKNOWN = 0,
+IF_OPER_NOTPRESENT = 1,
+IF_OPER_DOWN = 2,
+IF_OPER_LOWERLAYERDOWN = 3,
+IF_OPER_TESTING = 4,
+IF_OPER_DORMANT = 5,
+IF_OPER_UP = 6,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_8 {
+IF_LINK_MODE_DEFAULT = 0,
+IF_LINK_MODE_DORMANT = 1,
+IF_LINK_MODE_TESTING = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_inet_hooks {
+NF_INET_PRE_ROUTING = 0,
+NF_INET_LOCAL_IN = 1,
+NF_INET_FORWARD = 2,
+NF_INET_LOCAL_OUT = 3,
+NF_INET_POST_ROUTING = 4,
+NF_INET_NUMHOOKS = 5,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_dev_hooks {
+NF_NETDEV_INGRESS = 0,
+NF_NETDEV_EGRESS = 1,
+NF_NETDEV_NUMHOOKS = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_9 {
+NFPROTO_UNSPEC = 0,
+NFPROTO_INET = 1,
+NFPROTO_IPV4 = 2,
+NFPROTO_ARP = 3,
+NFPROTO_NETDEV = 5,
+NFPROTO_BRIDGE = 7,
+NFPROTO_IPV6 = 10,
+NFPROTO_DECNET = 12,
+NFPROTO_NUMPROTO = 13,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip6_hook_priorities {
+NF_IP6_PRI_FIRST = -2147483648,
+NF_IP6_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP6_PRI_RAW = -300,
+NF_IP6_PRI_SELINUX_FIRST = -225,
+NF_IP6_PRI_CONNTRACK = -200,
+NF_IP6_PRI_MANGLE = -150,
+NF_IP6_PRI_NAT_DST = -100,
+NF_IP6_PRI_FILTER = 0,
+NF_IP6_PRI_SECURITY = 50,
+NF_IP6_PRI_NAT_SRC = 100,
+NF_IP6_PRI_SELINUX_LAST = 225,
+NF_IP6_PRI_CONNTRACK_HELPER = 300,
+NF_IP6_PRI_LAST = 2147483647,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip_hook_priorities {
+NF_IP_PRI_FIRST = -2147483648,
+NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP_PRI_RAW = -300,
+NF_IP_PRI_SELINUX_FIRST = -225,
+NF_IP_PRI_CONNTRACK = -200,
+NF_IP_PRI_MANGLE = -150,
+NF_IP_PRI_NAT_DST = -100,
+NF_IP_PRI_FILTER = 0,
+NF_IP_PRI_SECURITY = 50,
+NF_IP_PRI_NAT_SRC = 100,
+NF_IP_PRI_SELINUX_LAST = 225,
+NF_IP_PRI_CONNTRACK_HELPER = 300,
+NF_IP_PRI_CONNTRACK_CONFIRM = 2147483647,
+}
#[repr(C)]
#[derive(Copy, Clone)]
pub union __kernel_sockaddr_storage__bindgen_ty_1 {
@@ -1440,6 +1962,69 @@ pub union tcp_word_hdr {
pub hdr: tcphdr,
pub words: [__be32; 5usize],
}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union if_settings__bindgen_ty_1 {
+pub raw_hdlc: *mut raw_hdlc_proto,
+pub cisco: *mut cisco_proto,
+pub fr: *mut fr_proto,
+pub fr_pvc: *mut fr_proto_pvc,
+pub fr_pvc_info: *mut fr_proto_pvc_info,
+pub x25: *mut x25_hdlc_proto,
+pub sync: *mut sync_serial_settings,
+pub te1: *mut te1_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_1 {
+pub ifrn_name: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_2 {
+pub ifru_addr: sockaddr,
+pub ifru_dstaddr: sockaddr,
+pub ifru_broadaddr: sockaddr,
+pub ifru_netmask: sockaddr,
+pub ifru_hwaddr: sockaddr,
+pub ifru_flags: crate::ctypes::c_short,
+pub ifru_ivalue: crate::ctypes::c_int,
+pub ifru_mtu: crate::ctypes::c_int,
+pub ifru_map: ifmap,
+pub ifru_slave: [crate::ctypes::c_char; 16usize],
+pub ifru_newname: [crate::ctypes::c_char; 16usize],
+pub ifru_data: *mut crate::ctypes::c_void,
+pub ifru_settings: if_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifconf__bindgen_ty_1 {
+pub ifcu_buf: *mut crate::ctypes::c_char,
+pub ifcu_req: *mut ifreq,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union nf_inet_addr {
+pub all: [__u32; 4usize],
+pub ip: __be32,
+pub ip6: [__be32; 4usize],
+pub in_: in_addr,
+pub in6: in6_addr,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_match__bindgen_ty_1 {
+pub user: xt_entry_match__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_match__bindgen_ty_1__bindgen_ty_2,
+pub match_size: __u16,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_target__bindgen_ty_1 {
+pub user: xt_entry_target__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_target__bindgen_ty_1__bindgen_ty_2,
+pub target_size: __u16,
+}
impl<Storage> __BindgenBitfieldUnit<Storage> {
#[inline]
pub const fn new(storage: Storage) -> Self {
@@ -1865,3 +2450,9 @@ tcpi_fastopen_client_fail as u64
__bindgen_bitfield_unit
}
}
+impl nf_inet_hooks {
+pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
+}
+impl nf_ip_hook_priorities {
+pub const NF_IP_PRI_LAST: nf_ip_hook_priorities = nf_ip_hook_priorities::NF_IP_PRI_CONNTRACK_CONFIRM;
+}
diff --git a/vendor/linux-raw-sys/src/mips32r6/general.rs b/vendor/linux-raw-sys/src/mips32r6/general.rs
index 275eb6536..3ddd66131 100644
--- a/vendor/linux-raw-sys/src/mips32r6/general.rs
+++ b/vendor/linux-raw-sys/src/mips32r6/general.rs
@@ -1619,6 +1619,19 @@ pub const POLLRDHUP: u32 = 8192;
pub const GRND_NONBLOCK: u32 = 1;
pub const GRND_RANDOM: u32 = 2;
pub const GRND_INSECURE: u32 = 4;
+pub const LINUX_REBOOT_MAGIC1: u32 = 4276215469;
+pub const LINUX_REBOOT_MAGIC2: u32 = 672274793;
+pub const LINUX_REBOOT_MAGIC2A: u32 = 85072278;
+pub const LINUX_REBOOT_MAGIC2B: u32 = 369367448;
+pub const LINUX_REBOOT_MAGIC2C: u32 = 537993216;
+pub const LINUX_REBOOT_CMD_RESTART: u32 = 19088743;
+pub const LINUX_REBOOT_CMD_HALT: u32 = 3454992675;
+pub const LINUX_REBOOT_CMD_CAD_ON: u32 = 2309737967;
+pub const LINUX_REBOOT_CMD_CAD_OFF: u32 = 0;
+pub const LINUX_REBOOT_CMD_POWER_OFF: u32 = 1126301404;
+pub const LINUX_REBOOT_CMD_RESTART2: u32 = 2712847316;
+pub const LINUX_REBOOT_CMD_SW_SUSPEND: u32 = 3489725666;
+pub const LINUX_REBOOT_CMD_KEXEC: u32 = 1163412803;
pub const ITIMER_REAL: u32 = 0;
pub const ITIMER_VIRTUAL: u32 = 1;
pub const ITIMER_PROF: u32 = 2;
diff --git a/vendor/linux-raw-sys/src/mips32r6/net.rs b/vendor/linux-raw-sys/src/mips32r6/net.rs
index a0386f4bb..ff3114315 100644
--- a/vendor/linux-raw-sys/src/mips32r6/net.rs
+++ b/vendor/linux-raw-sys/src/mips32r6/net.rs
@@ -476,6 +476,255 @@ pub __storage: __kernel_sockaddr_storage,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct sync_serial_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct te1_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+pub slot_map: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct raw_hdlc_proto {
+pub encoding: crate::ctypes::c_ushort,
+pub parity: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto {
+pub t391: crate::ctypes::c_uint,
+pub t392: crate::ctypes::c_uint,
+pub n391: crate::ctypes::c_uint,
+pub n392: crate::ctypes::c_uint,
+pub n393: crate::ctypes::c_uint,
+pub lmi: crate::ctypes::c_ushort,
+pub dce: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc {
+pub dlci: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc_info {
+pub dlci: crate::ctypes::c_uint,
+pub master: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct cisco_proto {
+pub interval: crate::ctypes::c_uint,
+pub timeout: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct x25_hdlc_proto {
+pub dce: crate::ctypes::c_ushort,
+pub modulo: crate::ctypes::c_uint,
+pub window: crate::ctypes::c_uint,
+pub t1: crate::ctypes::c_uint,
+pub t2: crate::ctypes::c_uint,
+pub n2: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ifmap {
+pub mem_start: crate::ctypes::c_ulong,
+pub mem_end: crate::ctypes::c_ulong,
+pub base_addr: crate::ctypes::c_ushort,
+pub irq: crate::ctypes::c_uchar,
+pub dma: crate::ctypes::c_uchar,
+pub port: crate::ctypes::c_uchar,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct if_settings {
+pub type_: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub ifs_ifsu: if_settings__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifreq {
+pub ifr_ifrn: ifreq__bindgen_ty_1,
+pub ifr_ifru: ifreq__bindgen_ty_2,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifconf {
+pub ifc_len: crate::ctypes::c_int,
+pub ifc_ifcu: ifconf__bindgen_ty_1,
+}
+#[repr(C)]
+pub struct xt_entry_match {
+pub u: xt_entry_match__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_1 {
+pub match_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_2 {
+pub match_size: __u16,
+pub match_: *mut xt_match,
+}
+#[repr(C)]
+pub struct xt_entry_target {
+pub u: xt_entry_target__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_1 {
+pub target_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_2 {
+pub target_size: __u16,
+pub target: *mut xt_target,
+}
+#[repr(C)]
+pub struct xt_standard_target {
+pub target: xt_entry_target,
+pub verdict: crate::ctypes::c_int,
+}
+#[repr(C)]
+pub struct xt_error_target {
+pub target: xt_entry_target,
+pub errorname: [crate::ctypes::c_char; 30usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_get_revision {
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _xt_align {
+pub u8_: __u8,
+pub u16_: __u16,
+pub u32_: __u32,
+pub u64_: __u64,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_counters {
+pub pcnt: __u64,
+pub bcnt: __u64,
+}
+#[repr(C)]
+#[derive(Debug)]
+pub struct xt_counters_info {
+pub name: [crate::ctypes::c_char; 32usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: __IncompleteArrayField<xt_counters>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_tcp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub option: __u8,
+pub flg_mask: __u8,
+pub flg_cmp: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_udp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ip6t_ip6 {
+pub src: in6_addr,
+pub dst: in6_addr,
+pub smsk: in6_addr,
+pub dmsk: in6_addr,
+pub iniface: [crate::ctypes::c_char; 16usize],
+pub outiface: [crate::ctypes::c_char; 16usize],
+pub iniface_mask: [crate::ctypes::c_uchar; 16usize],
+pub outiface_mask: [crate::ctypes::c_uchar; 16usize],
+pub proto: __u16,
+pub tos: __u8,
+pub flags: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+pub struct ip6t_entry {
+pub ipv6: ip6t_ip6,
+pub nfcache: crate::ctypes::c_uint,
+pub target_offset: __u16,
+pub next_offset: __u16,
+pub comefrom: crate::ctypes::c_uint,
+pub counters: xt_counters,
+pub elems: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+pub struct ip6t_standard {
+pub entry: ip6t_entry,
+pub target: xt_standard_target,
+}
+#[repr(C)]
+pub struct ip6t_error {
+pub entry: ip6t_entry,
+pub target: xt_error_target,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_icmp {
+pub type_: __u8,
+pub code: [__u8; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_getinfo {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+}
+#[repr(C)]
+pub struct ip6t_replace {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: *mut xt_counters,
+pub entries: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+pub struct ip6t_get_entries {
+pub name: [crate::ctypes::c_char; 32usize],
+pub size: crate::ctypes::c_uint,
+pub entrytable: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct linger {
pub l_onoff: crate::ctypes::c_int,
pub l_linger: crate::ctypes::c_int,
@@ -513,6 +762,16 @@ pub msg_len: crate::ctypes::c_uint,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct xt_match {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_target {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct iovec {
pub _address: u8,
}
@@ -958,6 +1217,135 @@ pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
pub const UNIX_PATH_MAX: u32 = 108;
+pub const IFNAMSIZ: u32 = 16;
+pub const IFALIASZ: u32 = 256;
+pub const ALTIFNAMSIZ: u32 = 128;
+pub const GENERIC_HDLC_VERSION: u32 = 4;
+pub const CLOCK_DEFAULT: u32 = 0;
+pub const CLOCK_EXT: u32 = 1;
+pub const CLOCK_INT: u32 = 2;
+pub const CLOCK_TXINT: u32 = 3;
+pub const CLOCK_TXFROMRX: u32 = 4;
+pub const ENCODING_DEFAULT: u32 = 0;
+pub const ENCODING_NRZ: u32 = 1;
+pub const ENCODING_NRZI: u32 = 2;
+pub const ENCODING_FM_MARK: u32 = 3;
+pub const ENCODING_FM_SPACE: u32 = 4;
+pub const ENCODING_MANCHESTER: u32 = 5;
+pub const PARITY_DEFAULT: u32 = 0;
+pub const PARITY_NONE: u32 = 1;
+pub const PARITY_CRC16_PR0: u32 = 2;
+pub const PARITY_CRC16_PR1: u32 = 3;
+pub const PARITY_CRC16_PR0_CCITT: u32 = 4;
+pub const PARITY_CRC16_PR1_CCITT: u32 = 5;
+pub const PARITY_CRC32_PR0_CCITT: u32 = 6;
+pub const PARITY_CRC32_PR1_CCITT: u32 = 7;
+pub const LMI_DEFAULT: u32 = 0;
+pub const LMI_NONE: u32 = 1;
+pub const LMI_ANSI: u32 = 2;
+pub const LMI_CCITT: u32 = 3;
+pub const LMI_CISCO: u32 = 4;
+pub const IF_GET_IFACE: u32 = 1;
+pub const IF_GET_PROTO: u32 = 2;
+pub const IF_IFACE_V35: u32 = 4096;
+pub const IF_IFACE_V24: u32 = 4097;
+pub const IF_IFACE_X21: u32 = 4098;
+pub const IF_IFACE_T1: u32 = 4099;
+pub const IF_IFACE_E1: u32 = 4100;
+pub const IF_IFACE_SYNC_SERIAL: u32 = 4101;
+pub const IF_IFACE_X21D: u32 = 4102;
+pub const IF_PROTO_HDLC: u32 = 8192;
+pub const IF_PROTO_PPP: u32 = 8193;
+pub const IF_PROTO_CISCO: u32 = 8194;
+pub const IF_PROTO_FR: u32 = 8195;
+pub const IF_PROTO_FR_ADD_PVC: u32 = 8196;
+pub const IF_PROTO_FR_DEL_PVC: u32 = 8197;
+pub const IF_PROTO_X25: u32 = 8198;
+pub const IF_PROTO_HDLC_ETH: u32 = 8199;
+pub const IF_PROTO_FR_ADD_ETH_PVC: u32 = 8200;
+pub const IF_PROTO_FR_DEL_ETH_PVC: u32 = 8201;
+pub const IF_PROTO_FR_PVC: u32 = 8202;
+pub const IF_PROTO_FR_ETH_PVC: u32 = 8203;
+pub const IF_PROTO_RAW: u32 = 8204;
+pub const IFHWADDRLEN: u32 = 6;
+pub const NF_DROP: u32 = 0;
+pub const NF_ACCEPT: u32 = 1;
+pub const NF_STOLEN: u32 = 2;
+pub const NF_QUEUE: u32 = 3;
+pub const NF_REPEAT: u32 = 4;
+pub const NF_STOP: u32 = 5;
+pub const NF_MAX_VERDICT: u32 = 5;
+pub const NF_VERDICT_MASK: u32 = 255;
+pub const NF_VERDICT_FLAG_QUEUE_BYPASS: u32 = 32768;
+pub const NF_VERDICT_QMASK: u32 = 4294901760;
+pub const NF_VERDICT_QBITS: u32 = 16;
+pub const NF_VERDICT_BITS: u32 = 16;
+pub const NF_IP6_PRE_ROUTING: u32 = 0;
+pub const NF_IP6_LOCAL_IN: u32 = 1;
+pub const NF_IP6_FORWARD: u32 = 2;
+pub const NF_IP6_LOCAL_OUT: u32 = 3;
+pub const NF_IP6_POST_ROUTING: u32 = 4;
+pub const NF_IP6_NUMHOOKS: u32 = 5;
+pub const XT_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const XT_EXTENSION_MAXNAMELEN: u32 = 29;
+pub const XT_TABLE_MAXNAMELEN: u32 = 32;
+pub const XT_CONTINUE: u32 = 4294967295;
+pub const XT_RETURN: i32 = -5;
+pub const XT_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const XT_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const XT_INV_PROTO: u32 = 64;
+pub const IP6T_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const IP6T_TABLE_MAXNAMELEN: u32 = 32;
+pub const IP6T_CONTINUE: u32 = 4294967295;
+pub const IP6T_RETURN: i32 = -5;
+pub const XT_TCP_INV_SRCPT: u32 = 1;
+pub const XT_TCP_INV_DSTPT: u32 = 2;
+pub const XT_TCP_INV_FLAGS: u32 = 4;
+pub const XT_TCP_INV_OPTION: u32 = 8;
+pub const XT_TCP_INV_MASK: u32 = 15;
+pub const XT_UDP_INV_SRCPT: u32 = 1;
+pub const XT_UDP_INV_DSTPT: u32 = 2;
+pub const XT_UDP_INV_MASK: u32 = 3;
+pub const IP6T_TCP_INV_SRCPT: u32 = 1;
+pub const IP6T_TCP_INV_DSTPT: u32 = 2;
+pub const IP6T_TCP_INV_FLAGS: u32 = 4;
+pub const IP6T_TCP_INV_OPTION: u32 = 8;
+pub const IP6T_TCP_INV_MASK: u32 = 15;
+pub const IP6T_UDP_INV_SRCPT: u32 = 1;
+pub const IP6T_UDP_INV_DSTPT: u32 = 2;
+pub const IP6T_UDP_INV_MASK: u32 = 3;
+pub const IP6T_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const IP6T_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const IP6T_F_PROTO: u32 = 1;
+pub const IP6T_F_TOS: u32 = 2;
+pub const IP6T_F_GOTO: u32 = 4;
+pub const IP6T_F_MASK: u32 = 7;
+pub const IP6T_INV_VIA_IN: u32 = 1;
+pub const IP6T_INV_VIA_OUT: u32 = 2;
+pub const IP6T_INV_TOS: u32 = 4;
+pub const IP6T_INV_SRCIP: u32 = 8;
+pub const IP6T_INV_DSTIP: u32 = 16;
+pub const IP6T_INV_FRAG: u32 = 32;
+pub const IP6T_INV_PROTO: u32 = 64;
+pub const IP6T_INV_MASK: u32 = 127;
+pub const IP6T_BASE_CTL: u32 = 64;
+pub const IP6T_SO_SET_REPLACE: u32 = 64;
+pub const IP6T_SO_SET_ADD_COUNTERS: u32 = 65;
+pub const IP6T_SO_SET_MAX: u32 = 65;
+pub const IP6T_SO_GET_INFO: u32 = 64;
+pub const IP6T_SO_GET_ENTRIES: u32 = 65;
+pub const IP6T_SO_GET_REVISION_MATCH: u32 = 68;
+pub const IP6T_SO_GET_REVISION_TARGET: u32 = 69;
+pub const IP6T_SO_GET_MAX: u32 = 69;
+pub const IP6T_SO_ORIGINAL_DST: u32 = 80;
+pub const IP6T_ICMP_INV: u32 = 1;
+pub const NF_IP_PRE_ROUTING: u32 = 0;
+pub const NF_IP_LOCAL_IN: u32 = 1;
+pub const NF_IP_FORWARD: u32 = 2;
+pub const NF_IP_LOCAL_OUT: u32 = 3;
+pub const NF_IP_POST_ROUTING: u32 = 4;
+pub const NF_IP_NUMHOOKS: u32 = 5;
+pub const SO_ORIGINAL_DST: u32 = 80;
pub const SHUT_RD: u32 = 0;
pub const SHUT_WR: u32 = 1;
pub const SHUT_RDWR: u32 = 2;
@@ -1186,6 +1574,25 @@ pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NO
pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
+pub const IF_OPER_UNKNOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UNKNOWN;
+pub const IF_OPER_NOTPRESENT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_NOTPRESENT;
+pub const IF_OPER_DOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DOWN;
+pub const IF_OPER_LOWERLAYERDOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_LOWERLAYERDOWN;
+pub const IF_OPER_TESTING: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_TESTING;
+pub const IF_OPER_DORMANT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DORMANT;
+pub const IF_OPER_UP: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UP;
+pub const IF_LINK_MODE_DEFAULT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DEFAULT;
+pub const IF_LINK_MODE_DORMANT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DORMANT;
+pub const IF_LINK_MODE_TESTING: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_TESTING;
+pub const NFPROTO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_UNSPEC;
+pub const NFPROTO_INET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_INET;
+pub const NFPROTO_IPV4: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV4;
+pub const NFPROTO_ARP: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_ARP;
+pub const NFPROTO_NETDEV: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NETDEV;
+pub const NFPROTO_BRIDGE: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_BRIDGE;
+pub const NFPROTO_IPV6: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV6;
+pub const NFPROTO_DECNET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_DECNET;
+pub const NFPROTO_NUMPROTO: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NUMPROTO;
#[repr(u32)]
#[non_exhaustive]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -1409,6 +1816,121 @@ TCP_NLA_EDT = 25,
TCP_NLA_TTL = 26,
TCP_NLA_REHASH = 27,
}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum net_device_flags {
+IFF_UP = 1,
+IFF_BROADCAST = 2,
+IFF_DEBUG = 4,
+IFF_LOOPBACK = 8,
+IFF_POINTOPOINT = 16,
+IFF_NOTRAILERS = 32,
+IFF_RUNNING = 64,
+IFF_NOARP = 128,
+IFF_PROMISC = 256,
+IFF_ALLMULTI = 512,
+IFF_MASTER = 1024,
+IFF_SLAVE = 2048,
+IFF_MULTICAST = 4096,
+IFF_PORTSEL = 8192,
+IFF_AUTOMEDIA = 16384,
+IFF_DYNAMIC = 32768,
+IFF_LOWER_UP = 65536,
+IFF_DORMANT = 131072,
+IFF_ECHO = 262144,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_7 {
+IF_OPER_UNKNOWN = 0,
+IF_OPER_NOTPRESENT = 1,
+IF_OPER_DOWN = 2,
+IF_OPER_LOWERLAYERDOWN = 3,
+IF_OPER_TESTING = 4,
+IF_OPER_DORMANT = 5,
+IF_OPER_UP = 6,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_8 {
+IF_LINK_MODE_DEFAULT = 0,
+IF_LINK_MODE_DORMANT = 1,
+IF_LINK_MODE_TESTING = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_inet_hooks {
+NF_INET_PRE_ROUTING = 0,
+NF_INET_LOCAL_IN = 1,
+NF_INET_FORWARD = 2,
+NF_INET_LOCAL_OUT = 3,
+NF_INET_POST_ROUTING = 4,
+NF_INET_NUMHOOKS = 5,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_dev_hooks {
+NF_NETDEV_INGRESS = 0,
+NF_NETDEV_EGRESS = 1,
+NF_NETDEV_NUMHOOKS = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_9 {
+NFPROTO_UNSPEC = 0,
+NFPROTO_INET = 1,
+NFPROTO_IPV4 = 2,
+NFPROTO_ARP = 3,
+NFPROTO_NETDEV = 5,
+NFPROTO_BRIDGE = 7,
+NFPROTO_IPV6 = 10,
+NFPROTO_DECNET = 12,
+NFPROTO_NUMPROTO = 13,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip6_hook_priorities {
+NF_IP6_PRI_FIRST = -2147483648,
+NF_IP6_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP6_PRI_RAW = -300,
+NF_IP6_PRI_SELINUX_FIRST = -225,
+NF_IP6_PRI_CONNTRACK = -200,
+NF_IP6_PRI_MANGLE = -150,
+NF_IP6_PRI_NAT_DST = -100,
+NF_IP6_PRI_FILTER = 0,
+NF_IP6_PRI_SECURITY = 50,
+NF_IP6_PRI_NAT_SRC = 100,
+NF_IP6_PRI_SELINUX_LAST = 225,
+NF_IP6_PRI_CONNTRACK_HELPER = 300,
+NF_IP6_PRI_LAST = 2147483647,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip_hook_priorities {
+NF_IP_PRI_FIRST = -2147483648,
+NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP_PRI_RAW = -300,
+NF_IP_PRI_SELINUX_FIRST = -225,
+NF_IP_PRI_CONNTRACK = -200,
+NF_IP_PRI_MANGLE = -150,
+NF_IP_PRI_NAT_DST = -100,
+NF_IP_PRI_FILTER = 0,
+NF_IP_PRI_SECURITY = 50,
+NF_IP_PRI_NAT_SRC = 100,
+NF_IP_PRI_SELINUX_LAST = 225,
+NF_IP_PRI_CONNTRACK_HELPER = 300,
+NF_IP_PRI_CONNTRACK_CONFIRM = 2147483647,
+}
#[repr(C)]
#[derive(Copy, Clone)]
pub union __kernel_sockaddr_storage__bindgen_ty_1 {
@@ -1440,6 +1962,69 @@ pub union tcp_word_hdr {
pub hdr: tcphdr,
pub words: [__be32; 5usize],
}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union if_settings__bindgen_ty_1 {
+pub raw_hdlc: *mut raw_hdlc_proto,
+pub cisco: *mut cisco_proto,
+pub fr: *mut fr_proto,
+pub fr_pvc: *mut fr_proto_pvc,
+pub fr_pvc_info: *mut fr_proto_pvc_info,
+pub x25: *mut x25_hdlc_proto,
+pub sync: *mut sync_serial_settings,
+pub te1: *mut te1_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_1 {
+pub ifrn_name: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_2 {
+pub ifru_addr: sockaddr,
+pub ifru_dstaddr: sockaddr,
+pub ifru_broadaddr: sockaddr,
+pub ifru_netmask: sockaddr,
+pub ifru_hwaddr: sockaddr,
+pub ifru_flags: crate::ctypes::c_short,
+pub ifru_ivalue: crate::ctypes::c_int,
+pub ifru_mtu: crate::ctypes::c_int,
+pub ifru_map: ifmap,
+pub ifru_slave: [crate::ctypes::c_char; 16usize],
+pub ifru_newname: [crate::ctypes::c_char; 16usize],
+pub ifru_data: *mut crate::ctypes::c_void,
+pub ifru_settings: if_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifconf__bindgen_ty_1 {
+pub ifcu_buf: *mut crate::ctypes::c_char,
+pub ifcu_req: *mut ifreq,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union nf_inet_addr {
+pub all: [__u32; 4usize],
+pub ip: __be32,
+pub ip6: [__be32; 4usize],
+pub in_: in_addr,
+pub in6: in6_addr,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_match__bindgen_ty_1 {
+pub user: xt_entry_match__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_match__bindgen_ty_1__bindgen_ty_2,
+pub match_size: __u16,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_target__bindgen_ty_1 {
+pub user: xt_entry_target__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_target__bindgen_ty_1__bindgen_ty_2,
+pub target_size: __u16,
+}
impl<Storage> __BindgenBitfieldUnit<Storage> {
#[inline]
pub const fn new(storage: Storage) -> Self {
@@ -1865,3 +2450,9 @@ tcpi_fastopen_client_fail as u64
__bindgen_bitfield_unit
}
}
+impl nf_inet_hooks {
+pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
+}
+impl nf_ip_hook_priorities {
+pub const NF_IP_PRI_LAST: nf_ip_hook_priorities = nf_ip_hook_priorities::NF_IP_PRI_CONNTRACK_CONFIRM;
+}
diff --git a/vendor/linux-raw-sys/src/mips64/general.rs b/vendor/linux-raw-sys/src/mips64/general.rs
index 112de05ea..e6bca15bc 100644
--- a/vendor/linux-raw-sys/src/mips64/general.rs
+++ b/vendor/linux-raw-sys/src/mips64/general.rs
@@ -1606,6 +1606,19 @@ pub const POLLRDHUP: u32 = 8192;
pub const GRND_NONBLOCK: u32 = 1;
pub const GRND_RANDOM: u32 = 2;
pub const GRND_INSECURE: u32 = 4;
+pub const LINUX_REBOOT_MAGIC1: u32 = 4276215469;
+pub const LINUX_REBOOT_MAGIC2: u32 = 672274793;
+pub const LINUX_REBOOT_MAGIC2A: u32 = 85072278;
+pub const LINUX_REBOOT_MAGIC2B: u32 = 369367448;
+pub const LINUX_REBOOT_MAGIC2C: u32 = 537993216;
+pub const LINUX_REBOOT_CMD_RESTART: u32 = 19088743;
+pub const LINUX_REBOOT_CMD_HALT: u32 = 3454992675;
+pub const LINUX_REBOOT_CMD_CAD_ON: u32 = 2309737967;
+pub const LINUX_REBOOT_CMD_CAD_OFF: u32 = 0;
+pub const LINUX_REBOOT_CMD_POWER_OFF: u32 = 1126301404;
+pub const LINUX_REBOOT_CMD_RESTART2: u32 = 2712847316;
+pub const LINUX_REBOOT_CMD_SW_SUSPEND: u32 = 3489725666;
+pub const LINUX_REBOOT_CMD_KEXEC: u32 = 1163412803;
pub const ITIMER_REAL: u32 = 0;
pub const ITIMER_VIRTUAL: u32 = 1;
pub const ITIMER_PROF: u32 = 2;
diff --git a/vendor/linux-raw-sys/src/mips64/net.rs b/vendor/linux-raw-sys/src/mips64/net.rs
index de332d8aa..4a424f60e 100644
--- a/vendor/linux-raw-sys/src/mips64/net.rs
+++ b/vendor/linux-raw-sys/src/mips64/net.rs
@@ -476,6 +476,255 @@ pub __storage: __kernel_sockaddr_storage,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct sync_serial_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct te1_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+pub slot_map: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct raw_hdlc_proto {
+pub encoding: crate::ctypes::c_ushort,
+pub parity: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto {
+pub t391: crate::ctypes::c_uint,
+pub t392: crate::ctypes::c_uint,
+pub n391: crate::ctypes::c_uint,
+pub n392: crate::ctypes::c_uint,
+pub n393: crate::ctypes::c_uint,
+pub lmi: crate::ctypes::c_ushort,
+pub dce: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc {
+pub dlci: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc_info {
+pub dlci: crate::ctypes::c_uint,
+pub master: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct cisco_proto {
+pub interval: crate::ctypes::c_uint,
+pub timeout: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct x25_hdlc_proto {
+pub dce: crate::ctypes::c_ushort,
+pub modulo: crate::ctypes::c_uint,
+pub window: crate::ctypes::c_uint,
+pub t1: crate::ctypes::c_uint,
+pub t2: crate::ctypes::c_uint,
+pub n2: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ifmap {
+pub mem_start: crate::ctypes::c_ulong,
+pub mem_end: crate::ctypes::c_ulong,
+pub base_addr: crate::ctypes::c_ushort,
+pub irq: crate::ctypes::c_uchar,
+pub dma: crate::ctypes::c_uchar,
+pub port: crate::ctypes::c_uchar,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct if_settings {
+pub type_: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub ifs_ifsu: if_settings__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifreq {
+pub ifr_ifrn: ifreq__bindgen_ty_1,
+pub ifr_ifru: ifreq__bindgen_ty_2,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifconf {
+pub ifc_len: crate::ctypes::c_int,
+pub ifc_ifcu: ifconf__bindgen_ty_1,
+}
+#[repr(C)]
+pub struct xt_entry_match {
+pub u: xt_entry_match__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_1 {
+pub match_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_2 {
+pub match_size: __u16,
+pub match_: *mut xt_match,
+}
+#[repr(C)]
+pub struct xt_entry_target {
+pub u: xt_entry_target__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_1 {
+pub target_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_2 {
+pub target_size: __u16,
+pub target: *mut xt_target,
+}
+#[repr(C)]
+pub struct xt_standard_target {
+pub target: xt_entry_target,
+pub verdict: crate::ctypes::c_int,
+}
+#[repr(C)]
+pub struct xt_error_target {
+pub target: xt_entry_target,
+pub errorname: [crate::ctypes::c_char; 30usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_get_revision {
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _xt_align {
+pub u8_: __u8,
+pub u16_: __u16,
+pub u32_: __u32,
+pub u64_: __u64,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_counters {
+pub pcnt: __u64,
+pub bcnt: __u64,
+}
+#[repr(C)]
+#[derive(Debug)]
+pub struct xt_counters_info {
+pub name: [crate::ctypes::c_char; 32usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: __IncompleteArrayField<xt_counters>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_tcp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub option: __u8,
+pub flg_mask: __u8,
+pub flg_cmp: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_udp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ip6t_ip6 {
+pub src: in6_addr,
+pub dst: in6_addr,
+pub smsk: in6_addr,
+pub dmsk: in6_addr,
+pub iniface: [crate::ctypes::c_char; 16usize],
+pub outiface: [crate::ctypes::c_char; 16usize],
+pub iniface_mask: [crate::ctypes::c_uchar; 16usize],
+pub outiface_mask: [crate::ctypes::c_uchar; 16usize],
+pub proto: __u16,
+pub tos: __u8,
+pub flags: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+pub struct ip6t_entry {
+pub ipv6: ip6t_ip6,
+pub nfcache: crate::ctypes::c_uint,
+pub target_offset: __u16,
+pub next_offset: __u16,
+pub comefrom: crate::ctypes::c_uint,
+pub counters: xt_counters,
+pub elems: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+pub struct ip6t_standard {
+pub entry: ip6t_entry,
+pub target: xt_standard_target,
+}
+#[repr(C)]
+pub struct ip6t_error {
+pub entry: ip6t_entry,
+pub target: xt_error_target,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_icmp {
+pub type_: __u8,
+pub code: [__u8; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_getinfo {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+}
+#[repr(C)]
+pub struct ip6t_replace {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: *mut xt_counters,
+pub entries: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+pub struct ip6t_get_entries {
+pub name: [crate::ctypes::c_char; 32usize],
+pub size: crate::ctypes::c_uint,
+pub entrytable: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct linger {
pub l_onoff: crate::ctypes::c_int,
pub l_linger: crate::ctypes::c_int,
@@ -513,6 +762,16 @@ pub msg_len: crate::ctypes::c_uint,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct xt_match {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_target {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct iovec {
pub _address: u8,
}
@@ -966,6 +1225,135 @@ pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
pub const UNIX_PATH_MAX: u32 = 108;
+pub const IFNAMSIZ: u32 = 16;
+pub const IFALIASZ: u32 = 256;
+pub const ALTIFNAMSIZ: u32 = 128;
+pub const GENERIC_HDLC_VERSION: u32 = 4;
+pub const CLOCK_DEFAULT: u32 = 0;
+pub const CLOCK_EXT: u32 = 1;
+pub const CLOCK_INT: u32 = 2;
+pub const CLOCK_TXINT: u32 = 3;
+pub const CLOCK_TXFROMRX: u32 = 4;
+pub const ENCODING_DEFAULT: u32 = 0;
+pub const ENCODING_NRZ: u32 = 1;
+pub const ENCODING_NRZI: u32 = 2;
+pub const ENCODING_FM_MARK: u32 = 3;
+pub const ENCODING_FM_SPACE: u32 = 4;
+pub const ENCODING_MANCHESTER: u32 = 5;
+pub const PARITY_DEFAULT: u32 = 0;
+pub const PARITY_NONE: u32 = 1;
+pub const PARITY_CRC16_PR0: u32 = 2;
+pub const PARITY_CRC16_PR1: u32 = 3;
+pub const PARITY_CRC16_PR0_CCITT: u32 = 4;
+pub const PARITY_CRC16_PR1_CCITT: u32 = 5;
+pub const PARITY_CRC32_PR0_CCITT: u32 = 6;
+pub const PARITY_CRC32_PR1_CCITT: u32 = 7;
+pub const LMI_DEFAULT: u32 = 0;
+pub const LMI_NONE: u32 = 1;
+pub const LMI_ANSI: u32 = 2;
+pub const LMI_CCITT: u32 = 3;
+pub const LMI_CISCO: u32 = 4;
+pub const IF_GET_IFACE: u32 = 1;
+pub const IF_GET_PROTO: u32 = 2;
+pub const IF_IFACE_V35: u32 = 4096;
+pub const IF_IFACE_V24: u32 = 4097;
+pub const IF_IFACE_X21: u32 = 4098;
+pub const IF_IFACE_T1: u32 = 4099;
+pub const IF_IFACE_E1: u32 = 4100;
+pub const IF_IFACE_SYNC_SERIAL: u32 = 4101;
+pub const IF_IFACE_X21D: u32 = 4102;
+pub const IF_PROTO_HDLC: u32 = 8192;
+pub const IF_PROTO_PPP: u32 = 8193;
+pub const IF_PROTO_CISCO: u32 = 8194;
+pub const IF_PROTO_FR: u32 = 8195;
+pub const IF_PROTO_FR_ADD_PVC: u32 = 8196;
+pub const IF_PROTO_FR_DEL_PVC: u32 = 8197;
+pub const IF_PROTO_X25: u32 = 8198;
+pub const IF_PROTO_HDLC_ETH: u32 = 8199;
+pub const IF_PROTO_FR_ADD_ETH_PVC: u32 = 8200;
+pub const IF_PROTO_FR_DEL_ETH_PVC: u32 = 8201;
+pub const IF_PROTO_FR_PVC: u32 = 8202;
+pub const IF_PROTO_FR_ETH_PVC: u32 = 8203;
+pub const IF_PROTO_RAW: u32 = 8204;
+pub const IFHWADDRLEN: u32 = 6;
+pub const NF_DROP: u32 = 0;
+pub const NF_ACCEPT: u32 = 1;
+pub const NF_STOLEN: u32 = 2;
+pub const NF_QUEUE: u32 = 3;
+pub const NF_REPEAT: u32 = 4;
+pub const NF_STOP: u32 = 5;
+pub const NF_MAX_VERDICT: u32 = 5;
+pub const NF_VERDICT_MASK: u32 = 255;
+pub const NF_VERDICT_FLAG_QUEUE_BYPASS: u32 = 32768;
+pub const NF_VERDICT_QMASK: u32 = 4294901760;
+pub const NF_VERDICT_QBITS: u32 = 16;
+pub const NF_VERDICT_BITS: u32 = 16;
+pub const NF_IP6_PRE_ROUTING: u32 = 0;
+pub const NF_IP6_LOCAL_IN: u32 = 1;
+pub const NF_IP6_FORWARD: u32 = 2;
+pub const NF_IP6_LOCAL_OUT: u32 = 3;
+pub const NF_IP6_POST_ROUTING: u32 = 4;
+pub const NF_IP6_NUMHOOKS: u32 = 5;
+pub const XT_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const XT_EXTENSION_MAXNAMELEN: u32 = 29;
+pub const XT_TABLE_MAXNAMELEN: u32 = 32;
+pub const XT_CONTINUE: u32 = 4294967295;
+pub const XT_RETURN: i32 = -5;
+pub const XT_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const XT_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const XT_INV_PROTO: u32 = 64;
+pub const IP6T_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const IP6T_TABLE_MAXNAMELEN: u32 = 32;
+pub const IP6T_CONTINUE: u32 = 4294967295;
+pub const IP6T_RETURN: i32 = -5;
+pub const XT_TCP_INV_SRCPT: u32 = 1;
+pub const XT_TCP_INV_DSTPT: u32 = 2;
+pub const XT_TCP_INV_FLAGS: u32 = 4;
+pub const XT_TCP_INV_OPTION: u32 = 8;
+pub const XT_TCP_INV_MASK: u32 = 15;
+pub const XT_UDP_INV_SRCPT: u32 = 1;
+pub const XT_UDP_INV_DSTPT: u32 = 2;
+pub const XT_UDP_INV_MASK: u32 = 3;
+pub const IP6T_TCP_INV_SRCPT: u32 = 1;
+pub const IP6T_TCP_INV_DSTPT: u32 = 2;
+pub const IP6T_TCP_INV_FLAGS: u32 = 4;
+pub const IP6T_TCP_INV_OPTION: u32 = 8;
+pub const IP6T_TCP_INV_MASK: u32 = 15;
+pub const IP6T_UDP_INV_SRCPT: u32 = 1;
+pub const IP6T_UDP_INV_DSTPT: u32 = 2;
+pub const IP6T_UDP_INV_MASK: u32 = 3;
+pub const IP6T_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const IP6T_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const IP6T_F_PROTO: u32 = 1;
+pub const IP6T_F_TOS: u32 = 2;
+pub const IP6T_F_GOTO: u32 = 4;
+pub const IP6T_F_MASK: u32 = 7;
+pub const IP6T_INV_VIA_IN: u32 = 1;
+pub const IP6T_INV_VIA_OUT: u32 = 2;
+pub const IP6T_INV_TOS: u32 = 4;
+pub const IP6T_INV_SRCIP: u32 = 8;
+pub const IP6T_INV_DSTIP: u32 = 16;
+pub const IP6T_INV_FRAG: u32 = 32;
+pub const IP6T_INV_PROTO: u32 = 64;
+pub const IP6T_INV_MASK: u32 = 127;
+pub const IP6T_BASE_CTL: u32 = 64;
+pub const IP6T_SO_SET_REPLACE: u32 = 64;
+pub const IP6T_SO_SET_ADD_COUNTERS: u32 = 65;
+pub const IP6T_SO_SET_MAX: u32 = 65;
+pub const IP6T_SO_GET_INFO: u32 = 64;
+pub const IP6T_SO_GET_ENTRIES: u32 = 65;
+pub const IP6T_SO_GET_REVISION_MATCH: u32 = 68;
+pub const IP6T_SO_GET_REVISION_TARGET: u32 = 69;
+pub const IP6T_SO_GET_MAX: u32 = 69;
+pub const IP6T_SO_ORIGINAL_DST: u32 = 80;
+pub const IP6T_ICMP_INV: u32 = 1;
+pub const NF_IP_PRE_ROUTING: u32 = 0;
+pub const NF_IP_LOCAL_IN: u32 = 1;
+pub const NF_IP_FORWARD: u32 = 2;
+pub const NF_IP_LOCAL_OUT: u32 = 3;
+pub const NF_IP_POST_ROUTING: u32 = 4;
+pub const NF_IP_NUMHOOKS: u32 = 5;
+pub const SO_ORIGINAL_DST: u32 = 80;
pub const SHUT_RD: u32 = 0;
pub const SHUT_WR: u32 = 1;
pub const SHUT_RDWR: u32 = 2;
@@ -1194,6 +1582,25 @@ pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NO
pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
+pub const IF_OPER_UNKNOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UNKNOWN;
+pub const IF_OPER_NOTPRESENT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_NOTPRESENT;
+pub const IF_OPER_DOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DOWN;
+pub const IF_OPER_LOWERLAYERDOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_LOWERLAYERDOWN;
+pub const IF_OPER_TESTING: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_TESTING;
+pub const IF_OPER_DORMANT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DORMANT;
+pub const IF_OPER_UP: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UP;
+pub const IF_LINK_MODE_DEFAULT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DEFAULT;
+pub const IF_LINK_MODE_DORMANT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DORMANT;
+pub const IF_LINK_MODE_TESTING: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_TESTING;
+pub const NFPROTO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_UNSPEC;
+pub const NFPROTO_INET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_INET;
+pub const NFPROTO_IPV4: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV4;
+pub const NFPROTO_ARP: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_ARP;
+pub const NFPROTO_NETDEV: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NETDEV;
+pub const NFPROTO_BRIDGE: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_BRIDGE;
+pub const NFPROTO_IPV6: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV6;
+pub const NFPROTO_DECNET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_DECNET;
+pub const NFPROTO_NUMPROTO: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NUMPROTO;
#[repr(u32)]
#[non_exhaustive]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -1417,6 +1824,121 @@ TCP_NLA_EDT = 25,
TCP_NLA_TTL = 26,
TCP_NLA_REHASH = 27,
}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum net_device_flags {
+IFF_UP = 1,
+IFF_BROADCAST = 2,
+IFF_DEBUG = 4,
+IFF_LOOPBACK = 8,
+IFF_POINTOPOINT = 16,
+IFF_NOTRAILERS = 32,
+IFF_RUNNING = 64,
+IFF_NOARP = 128,
+IFF_PROMISC = 256,
+IFF_ALLMULTI = 512,
+IFF_MASTER = 1024,
+IFF_SLAVE = 2048,
+IFF_MULTICAST = 4096,
+IFF_PORTSEL = 8192,
+IFF_AUTOMEDIA = 16384,
+IFF_DYNAMIC = 32768,
+IFF_LOWER_UP = 65536,
+IFF_DORMANT = 131072,
+IFF_ECHO = 262144,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_7 {
+IF_OPER_UNKNOWN = 0,
+IF_OPER_NOTPRESENT = 1,
+IF_OPER_DOWN = 2,
+IF_OPER_LOWERLAYERDOWN = 3,
+IF_OPER_TESTING = 4,
+IF_OPER_DORMANT = 5,
+IF_OPER_UP = 6,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_8 {
+IF_LINK_MODE_DEFAULT = 0,
+IF_LINK_MODE_DORMANT = 1,
+IF_LINK_MODE_TESTING = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_inet_hooks {
+NF_INET_PRE_ROUTING = 0,
+NF_INET_LOCAL_IN = 1,
+NF_INET_FORWARD = 2,
+NF_INET_LOCAL_OUT = 3,
+NF_INET_POST_ROUTING = 4,
+NF_INET_NUMHOOKS = 5,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_dev_hooks {
+NF_NETDEV_INGRESS = 0,
+NF_NETDEV_EGRESS = 1,
+NF_NETDEV_NUMHOOKS = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_9 {
+NFPROTO_UNSPEC = 0,
+NFPROTO_INET = 1,
+NFPROTO_IPV4 = 2,
+NFPROTO_ARP = 3,
+NFPROTO_NETDEV = 5,
+NFPROTO_BRIDGE = 7,
+NFPROTO_IPV6 = 10,
+NFPROTO_DECNET = 12,
+NFPROTO_NUMPROTO = 13,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip6_hook_priorities {
+NF_IP6_PRI_FIRST = -2147483648,
+NF_IP6_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP6_PRI_RAW = -300,
+NF_IP6_PRI_SELINUX_FIRST = -225,
+NF_IP6_PRI_CONNTRACK = -200,
+NF_IP6_PRI_MANGLE = -150,
+NF_IP6_PRI_NAT_DST = -100,
+NF_IP6_PRI_FILTER = 0,
+NF_IP6_PRI_SECURITY = 50,
+NF_IP6_PRI_NAT_SRC = 100,
+NF_IP6_PRI_SELINUX_LAST = 225,
+NF_IP6_PRI_CONNTRACK_HELPER = 300,
+NF_IP6_PRI_LAST = 2147483647,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip_hook_priorities {
+NF_IP_PRI_FIRST = -2147483648,
+NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP_PRI_RAW = -300,
+NF_IP_PRI_SELINUX_FIRST = -225,
+NF_IP_PRI_CONNTRACK = -200,
+NF_IP_PRI_MANGLE = -150,
+NF_IP_PRI_NAT_DST = -100,
+NF_IP_PRI_FILTER = 0,
+NF_IP_PRI_SECURITY = 50,
+NF_IP_PRI_NAT_SRC = 100,
+NF_IP_PRI_SELINUX_LAST = 225,
+NF_IP_PRI_CONNTRACK_HELPER = 300,
+NF_IP_PRI_CONNTRACK_CONFIRM = 2147483647,
+}
#[repr(C)]
#[derive(Copy, Clone)]
pub union __kernel_sockaddr_storage__bindgen_ty_1 {
@@ -1448,6 +1970,69 @@ pub union tcp_word_hdr {
pub hdr: tcphdr,
pub words: [__be32; 5usize],
}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union if_settings__bindgen_ty_1 {
+pub raw_hdlc: *mut raw_hdlc_proto,
+pub cisco: *mut cisco_proto,
+pub fr: *mut fr_proto,
+pub fr_pvc: *mut fr_proto_pvc,
+pub fr_pvc_info: *mut fr_proto_pvc_info,
+pub x25: *mut x25_hdlc_proto,
+pub sync: *mut sync_serial_settings,
+pub te1: *mut te1_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_1 {
+pub ifrn_name: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_2 {
+pub ifru_addr: sockaddr,
+pub ifru_dstaddr: sockaddr,
+pub ifru_broadaddr: sockaddr,
+pub ifru_netmask: sockaddr,
+pub ifru_hwaddr: sockaddr,
+pub ifru_flags: crate::ctypes::c_short,
+pub ifru_ivalue: crate::ctypes::c_int,
+pub ifru_mtu: crate::ctypes::c_int,
+pub ifru_map: ifmap,
+pub ifru_slave: [crate::ctypes::c_char; 16usize],
+pub ifru_newname: [crate::ctypes::c_char; 16usize],
+pub ifru_data: *mut crate::ctypes::c_void,
+pub ifru_settings: if_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifconf__bindgen_ty_1 {
+pub ifcu_buf: *mut crate::ctypes::c_char,
+pub ifcu_req: *mut ifreq,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union nf_inet_addr {
+pub all: [__u32; 4usize],
+pub ip: __be32,
+pub ip6: [__be32; 4usize],
+pub in_: in_addr,
+pub in6: in6_addr,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_match__bindgen_ty_1 {
+pub user: xt_entry_match__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_match__bindgen_ty_1__bindgen_ty_2,
+pub match_size: __u16,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_target__bindgen_ty_1 {
+pub user: xt_entry_target__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_target__bindgen_ty_1__bindgen_ty_2,
+pub target_size: __u16,
+}
impl<Storage> __BindgenBitfieldUnit<Storage> {
#[inline]
pub const fn new(storage: Storage) -> Self {
@@ -1873,3 +2458,9 @@ tcpi_fastopen_client_fail as u64
__bindgen_bitfield_unit
}
}
+impl nf_inet_hooks {
+pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
+}
+impl nf_ip_hook_priorities {
+pub const NF_IP_PRI_LAST: nf_ip_hook_priorities = nf_ip_hook_priorities::NF_IP_PRI_CONNTRACK_CONFIRM;
+}
diff --git a/vendor/linux-raw-sys/src/mips64r6/general.rs b/vendor/linux-raw-sys/src/mips64r6/general.rs
index 112de05ea..e6bca15bc 100644
--- a/vendor/linux-raw-sys/src/mips64r6/general.rs
+++ b/vendor/linux-raw-sys/src/mips64r6/general.rs
@@ -1606,6 +1606,19 @@ pub const POLLRDHUP: u32 = 8192;
pub const GRND_NONBLOCK: u32 = 1;
pub const GRND_RANDOM: u32 = 2;
pub const GRND_INSECURE: u32 = 4;
+pub const LINUX_REBOOT_MAGIC1: u32 = 4276215469;
+pub const LINUX_REBOOT_MAGIC2: u32 = 672274793;
+pub const LINUX_REBOOT_MAGIC2A: u32 = 85072278;
+pub const LINUX_REBOOT_MAGIC2B: u32 = 369367448;
+pub const LINUX_REBOOT_MAGIC2C: u32 = 537993216;
+pub const LINUX_REBOOT_CMD_RESTART: u32 = 19088743;
+pub const LINUX_REBOOT_CMD_HALT: u32 = 3454992675;
+pub const LINUX_REBOOT_CMD_CAD_ON: u32 = 2309737967;
+pub const LINUX_REBOOT_CMD_CAD_OFF: u32 = 0;
+pub const LINUX_REBOOT_CMD_POWER_OFF: u32 = 1126301404;
+pub const LINUX_REBOOT_CMD_RESTART2: u32 = 2712847316;
+pub const LINUX_REBOOT_CMD_SW_SUSPEND: u32 = 3489725666;
+pub const LINUX_REBOOT_CMD_KEXEC: u32 = 1163412803;
pub const ITIMER_REAL: u32 = 0;
pub const ITIMER_VIRTUAL: u32 = 1;
pub const ITIMER_PROF: u32 = 2;
diff --git a/vendor/linux-raw-sys/src/mips64r6/net.rs b/vendor/linux-raw-sys/src/mips64r6/net.rs
index de332d8aa..4a424f60e 100644
--- a/vendor/linux-raw-sys/src/mips64r6/net.rs
+++ b/vendor/linux-raw-sys/src/mips64r6/net.rs
@@ -476,6 +476,255 @@ pub __storage: __kernel_sockaddr_storage,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct sync_serial_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct te1_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+pub slot_map: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct raw_hdlc_proto {
+pub encoding: crate::ctypes::c_ushort,
+pub parity: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto {
+pub t391: crate::ctypes::c_uint,
+pub t392: crate::ctypes::c_uint,
+pub n391: crate::ctypes::c_uint,
+pub n392: crate::ctypes::c_uint,
+pub n393: crate::ctypes::c_uint,
+pub lmi: crate::ctypes::c_ushort,
+pub dce: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc {
+pub dlci: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc_info {
+pub dlci: crate::ctypes::c_uint,
+pub master: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct cisco_proto {
+pub interval: crate::ctypes::c_uint,
+pub timeout: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct x25_hdlc_proto {
+pub dce: crate::ctypes::c_ushort,
+pub modulo: crate::ctypes::c_uint,
+pub window: crate::ctypes::c_uint,
+pub t1: crate::ctypes::c_uint,
+pub t2: crate::ctypes::c_uint,
+pub n2: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ifmap {
+pub mem_start: crate::ctypes::c_ulong,
+pub mem_end: crate::ctypes::c_ulong,
+pub base_addr: crate::ctypes::c_ushort,
+pub irq: crate::ctypes::c_uchar,
+pub dma: crate::ctypes::c_uchar,
+pub port: crate::ctypes::c_uchar,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct if_settings {
+pub type_: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub ifs_ifsu: if_settings__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifreq {
+pub ifr_ifrn: ifreq__bindgen_ty_1,
+pub ifr_ifru: ifreq__bindgen_ty_2,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifconf {
+pub ifc_len: crate::ctypes::c_int,
+pub ifc_ifcu: ifconf__bindgen_ty_1,
+}
+#[repr(C)]
+pub struct xt_entry_match {
+pub u: xt_entry_match__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_1 {
+pub match_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_2 {
+pub match_size: __u16,
+pub match_: *mut xt_match,
+}
+#[repr(C)]
+pub struct xt_entry_target {
+pub u: xt_entry_target__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_1 {
+pub target_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_2 {
+pub target_size: __u16,
+pub target: *mut xt_target,
+}
+#[repr(C)]
+pub struct xt_standard_target {
+pub target: xt_entry_target,
+pub verdict: crate::ctypes::c_int,
+}
+#[repr(C)]
+pub struct xt_error_target {
+pub target: xt_entry_target,
+pub errorname: [crate::ctypes::c_char; 30usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_get_revision {
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _xt_align {
+pub u8_: __u8,
+pub u16_: __u16,
+pub u32_: __u32,
+pub u64_: __u64,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_counters {
+pub pcnt: __u64,
+pub bcnt: __u64,
+}
+#[repr(C)]
+#[derive(Debug)]
+pub struct xt_counters_info {
+pub name: [crate::ctypes::c_char; 32usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: __IncompleteArrayField<xt_counters>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_tcp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub option: __u8,
+pub flg_mask: __u8,
+pub flg_cmp: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_udp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ip6t_ip6 {
+pub src: in6_addr,
+pub dst: in6_addr,
+pub smsk: in6_addr,
+pub dmsk: in6_addr,
+pub iniface: [crate::ctypes::c_char; 16usize],
+pub outiface: [crate::ctypes::c_char; 16usize],
+pub iniface_mask: [crate::ctypes::c_uchar; 16usize],
+pub outiface_mask: [crate::ctypes::c_uchar; 16usize],
+pub proto: __u16,
+pub tos: __u8,
+pub flags: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+pub struct ip6t_entry {
+pub ipv6: ip6t_ip6,
+pub nfcache: crate::ctypes::c_uint,
+pub target_offset: __u16,
+pub next_offset: __u16,
+pub comefrom: crate::ctypes::c_uint,
+pub counters: xt_counters,
+pub elems: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+pub struct ip6t_standard {
+pub entry: ip6t_entry,
+pub target: xt_standard_target,
+}
+#[repr(C)]
+pub struct ip6t_error {
+pub entry: ip6t_entry,
+pub target: xt_error_target,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_icmp {
+pub type_: __u8,
+pub code: [__u8; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_getinfo {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+}
+#[repr(C)]
+pub struct ip6t_replace {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: *mut xt_counters,
+pub entries: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+pub struct ip6t_get_entries {
+pub name: [crate::ctypes::c_char; 32usize],
+pub size: crate::ctypes::c_uint,
+pub entrytable: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct linger {
pub l_onoff: crate::ctypes::c_int,
pub l_linger: crate::ctypes::c_int,
@@ -513,6 +762,16 @@ pub msg_len: crate::ctypes::c_uint,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct xt_match {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_target {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct iovec {
pub _address: u8,
}
@@ -966,6 +1225,135 @@ pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
pub const UNIX_PATH_MAX: u32 = 108;
+pub const IFNAMSIZ: u32 = 16;
+pub const IFALIASZ: u32 = 256;
+pub const ALTIFNAMSIZ: u32 = 128;
+pub const GENERIC_HDLC_VERSION: u32 = 4;
+pub const CLOCK_DEFAULT: u32 = 0;
+pub const CLOCK_EXT: u32 = 1;
+pub const CLOCK_INT: u32 = 2;
+pub const CLOCK_TXINT: u32 = 3;
+pub const CLOCK_TXFROMRX: u32 = 4;
+pub const ENCODING_DEFAULT: u32 = 0;
+pub const ENCODING_NRZ: u32 = 1;
+pub const ENCODING_NRZI: u32 = 2;
+pub const ENCODING_FM_MARK: u32 = 3;
+pub const ENCODING_FM_SPACE: u32 = 4;
+pub const ENCODING_MANCHESTER: u32 = 5;
+pub const PARITY_DEFAULT: u32 = 0;
+pub const PARITY_NONE: u32 = 1;
+pub const PARITY_CRC16_PR0: u32 = 2;
+pub const PARITY_CRC16_PR1: u32 = 3;
+pub const PARITY_CRC16_PR0_CCITT: u32 = 4;
+pub const PARITY_CRC16_PR1_CCITT: u32 = 5;
+pub const PARITY_CRC32_PR0_CCITT: u32 = 6;
+pub const PARITY_CRC32_PR1_CCITT: u32 = 7;
+pub const LMI_DEFAULT: u32 = 0;
+pub const LMI_NONE: u32 = 1;
+pub const LMI_ANSI: u32 = 2;
+pub const LMI_CCITT: u32 = 3;
+pub const LMI_CISCO: u32 = 4;
+pub const IF_GET_IFACE: u32 = 1;
+pub const IF_GET_PROTO: u32 = 2;
+pub const IF_IFACE_V35: u32 = 4096;
+pub const IF_IFACE_V24: u32 = 4097;
+pub const IF_IFACE_X21: u32 = 4098;
+pub const IF_IFACE_T1: u32 = 4099;
+pub const IF_IFACE_E1: u32 = 4100;
+pub const IF_IFACE_SYNC_SERIAL: u32 = 4101;
+pub const IF_IFACE_X21D: u32 = 4102;
+pub const IF_PROTO_HDLC: u32 = 8192;
+pub const IF_PROTO_PPP: u32 = 8193;
+pub const IF_PROTO_CISCO: u32 = 8194;
+pub const IF_PROTO_FR: u32 = 8195;
+pub const IF_PROTO_FR_ADD_PVC: u32 = 8196;
+pub const IF_PROTO_FR_DEL_PVC: u32 = 8197;
+pub const IF_PROTO_X25: u32 = 8198;
+pub const IF_PROTO_HDLC_ETH: u32 = 8199;
+pub const IF_PROTO_FR_ADD_ETH_PVC: u32 = 8200;
+pub const IF_PROTO_FR_DEL_ETH_PVC: u32 = 8201;
+pub const IF_PROTO_FR_PVC: u32 = 8202;
+pub const IF_PROTO_FR_ETH_PVC: u32 = 8203;
+pub const IF_PROTO_RAW: u32 = 8204;
+pub const IFHWADDRLEN: u32 = 6;
+pub const NF_DROP: u32 = 0;
+pub const NF_ACCEPT: u32 = 1;
+pub const NF_STOLEN: u32 = 2;
+pub const NF_QUEUE: u32 = 3;
+pub const NF_REPEAT: u32 = 4;
+pub const NF_STOP: u32 = 5;
+pub const NF_MAX_VERDICT: u32 = 5;
+pub const NF_VERDICT_MASK: u32 = 255;
+pub const NF_VERDICT_FLAG_QUEUE_BYPASS: u32 = 32768;
+pub const NF_VERDICT_QMASK: u32 = 4294901760;
+pub const NF_VERDICT_QBITS: u32 = 16;
+pub const NF_VERDICT_BITS: u32 = 16;
+pub const NF_IP6_PRE_ROUTING: u32 = 0;
+pub const NF_IP6_LOCAL_IN: u32 = 1;
+pub const NF_IP6_FORWARD: u32 = 2;
+pub const NF_IP6_LOCAL_OUT: u32 = 3;
+pub const NF_IP6_POST_ROUTING: u32 = 4;
+pub const NF_IP6_NUMHOOKS: u32 = 5;
+pub const XT_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const XT_EXTENSION_MAXNAMELEN: u32 = 29;
+pub const XT_TABLE_MAXNAMELEN: u32 = 32;
+pub const XT_CONTINUE: u32 = 4294967295;
+pub const XT_RETURN: i32 = -5;
+pub const XT_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const XT_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const XT_INV_PROTO: u32 = 64;
+pub const IP6T_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const IP6T_TABLE_MAXNAMELEN: u32 = 32;
+pub const IP6T_CONTINUE: u32 = 4294967295;
+pub const IP6T_RETURN: i32 = -5;
+pub const XT_TCP_INV_SRCPT: u32 = 1;
+pub const XT_TCP_INV_DSTPT: u32 = 2;
+pub const XT_TCP_INV_FLAGS: u32 = 4;
+pub const XT_TCP_INV_OPTION: u32 = 8;
+pub const XT_TCP_INV_MASK: u32 = 15;
+pub const XT_UDP_INV_SRCPT: u32 = 1;
+pub const XT_UDP_INV_DSTPT: u32 = 2;
+pub const XT_UDP_INV_MASK: u32 = 3;
+pub const IP6T_TCP_INV_SRCPT: u32 = 1;
+pub const IP6T_TCP_INV_DSTPT: u32 = 2;
+pub const IP6T_TCP_INV_FLAGS: u32 = 4;
+pub const IP6T_TCP_INV_OPTION: u32 = 8;
+pub const IP6T_TCP_INV_MASK: u32 = 15;
+pub const IP6T_UDP_INV_SRCPT: u32 = 1;
+pub const IP6T_UDP_INV_DSTPT: u32 = 2;
+pub const IP6T_UDP_INV_MASK: u32 = 3;
+pub const IP6T_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const IP6T_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const IP6T_F_PROTO: u32 = 1;
+pub const IP6T_F_TOS: u32 = 2;
+pub const IP6T_F_GOTO: u32 = 4;
+pub const IP6T_F_MASK: u32 = 7;
+pub const IP6T_INV_VIA_IN: u32 = 1;
+pub const IP6T_INV_VIA_OUT: u32 = 2;
+pub const IP6T_INV_TOS: u32 = 4;
+pub const IP6T_INV_SRCIP: u32 = 8;
+pub const IP6T_INV_DSTIP: u32 = 16;
+pub const IP6T_INV_FRAG: u32 = 32;
+pub const IP6T_INV_PROTO: u32 = 64;
+pub const IP6T_INV_MASK: u32 = 127;
+pub const IP6T_BASE_CTL: u32 = 64;
+pub const IP6T_SO_SET_REPLACE: u32 = 64;
+pub const IP6T_SO_SET_ADD_COUNTERS: u32 = 65;
+pub const IP6T_SO_SET_MAX: u32 = 65;
+pub const IP6T_SO_GET_INFO: u32 = 64;
+pub const IP6T_SO_GET_ENTRIES: u32 = 65;
+pub const IP6T_SO_GET_REVISION_MATCH: u32 = 68;
+pub const IP6T_SO_GET_REVISION_TARGET: u32 = 69;
+pub const IP6T_SO_GET_MAX: u32 = 69;
+pub const IP6T_SO_ORIGINAL_DST: u32 = 80;
+pub const IP6T_ICMP_INV: u32 = 1;
+pub const NF_IP_PRE_ROUTING: u32 = 0;
+pub const NF_IP_LOCAL_IN: u32 = 1;
+pub const NF_IP_FORWARD: u32 = 2;
+pub const NF_IP_LOCAL_OUT: u32 = 3;
+pub const NF_IP_POST_ROUTING: u32 = 4;
+pub const NF_IP_NUMHOOKS: u32 = 5;
+pub const SO_ORIGINAL_DST: u32 = 80;
pub const SHUT_RD: u32 = 0;
pub const SHUT_WR: u32 = 1;
pub const SHUT_RDWR: u32 = 2;
@@ -1194,6 +1582,25 @@ pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NO
pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
+pub const IF_OPER_UNKNOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UNKNOWN;
+pub const IF_OPER_NOTPRESENT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_NOTPRESENT;
+pub const IF_OPER_DOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DOWN;
+pub const IF_OPER_LOWERLAYERDOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_LOWERLAYERDOWN;
+pub const IF_OPER_TESTING: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_TESTING;
+pub const IF_OPER_DORMANT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DORMANT;
+pub const IF_OPER_UP: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UP;
+pub const IF_LINK_MODE_DEFAULT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DEFAULT;
+pub const IF_LINK_MODE_DORMANT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DORMANT;
+pub const IF_LINK_MODE_TESTING: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_TESTING;
+pub const NFPROTO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_UNSPEC;
+pub const NFPROTO_INET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_INET;
+pub const NFPROTO_IPV4: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV4;
+pub const NFPROTO_ARP: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_ARP;
+pub const NFPROTO_NETDEV: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NETDEV;
+pub const NFPROTO_BRIDGE: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_BRIDGE;
+pub const NFPROTO_IPV6: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV6;
+pub const NFPROTO_DECNET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_DECNET;
+pub const NFPROTO_NUMPROTO: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NUMPROTO;
#[repr(u32)]
#[non_exhaustive]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -1417,6 +1824,121 @@ TCP_NLA_EDT = 25,
TCP_NLA_TTL = 26,
TCP_NLA_REHASH = 27,
}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum net_device_flags {
+IFF_UP = 1,
+IFF_BROADCAST = 2,
+IFF_DEBUG = 4,
+IFF_LOOPBACK = 8,
+IFF_POINTOPOINT = 16,
+IFF_NOTRAILERS = 32,
+IFF_RUNNING = 64,
+IFF_NOARP = 128,
+IFF_PROMISC = 256,
+IFF_ALLMULTI = 512,
+IFF_MASTER = 1024,
+IFF_SLAVE = 2048,
+IFF_MULTICAST = 4096,
+IFF_PORTSEL = 8192,
+IFF_AUTOMEDIA = 16384,
+IFF_DYNAMIC = 32768,
+IFF_LOWER_UP = 65536,
+IFF_DORMANT = 131072,
+IFF_ECHO = 262144,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_7 {
+IF_OPER_UNKNOWN = 0,
+IF_OPER_NOTPRESENT = 1,
+IF_OPER_DOWN = 2,
+IF_OPER_LOWERLAYERDOWN = 3,
+IF_OPER_TESTING = 4,
+IF_OPER_DORMANT = 5,
+IF_OPER_UP = 6,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_8 {
+IF_LINK_MODE_DEFAULT = 0,
+IF_LINK_MODE_DORMANT = 1,
+IF_LINK_MODE_TESTING = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_inet_hooks {
+NF_INET_PRE_ROUTING = 0,
+NF_INET_LOCAL_IN = 1,
+NF_INET_FORWARD = 2,
+NF_INET_LOCAL_OUT = 3,
+NF_INET_POST_ROUTING = 4,
+NF_INET_NUMHOOKS = 5,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_dev_hooks {
+NF_NETDEV_INGRESS = 0,
+NF_NETDEV_EGRESS = 1,
+NF_NETDEV_NUMHOOKS = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_9 {
+NFPROTO_UNSPEC = 0,
+NFPROTO_INET = 1,
+NFPROTO_IPV4 = 2,
+NFPROTO_ARP = 3,
+NFPROTO_NETDEV = 5,
+NFPROTO_BRIDGE = 7,
+NFPROTO_IPV6 = 10,
+NFPROTO_DECNET = 12,
+NFPROTO_NUMPROTO = 13,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip6_hook_priorities {
+NF_IP6_PRI_FIRST = -2147483648,
+NF_IP6_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP6_PRI_RAW = -300,
+NF_IP6_PRI_SELINUX_FIRST = -225,
+NF_IP6_PRI_CONNTRACK = -200,
+NF_IP6_PRI_MANGLE = -150,
+NF_IP6_PRI_NAT_DST = -100,
+NF_IP6_PRI_FILTER = 0,
+NF_IP6_PRI_SECURITY = 50,
+NF_IP6_PRI_NAT_SRC = 100,
+NF_IP6_PRI_SELINUX_LAST = 225,
+NF_IP6_PRI_CONNTRACK_HELPER = 300,
+NF_IP6_PRI_LAST = 2147483647,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip_hook_priorities {
+NF_IP_PRI_FIRST = -2147483648,
+NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP_PRI_RAW = -300,
+NF_IP_PRI_SELINUX_FIRST = -225,
+NF_IP_PRI_CONNTRACK = -200,
+NF_IP_PRI_MANGLE = -150,
+NF_IP_PRI_NAT_DST = -100,
+NF_IP_PRI_FILTER = 0,
+NF_IP_PRI_SECURITY = 50,
+NF_IP_PRI_NAT_SRC = 100,
+NF_IP_PRI_SELINUX_LAST = 225,
+NF_IP_PRI_CONNTRACK_HELPER = 300,
+NF_IP_PRI_CONNTRACK_CONFIRM = 2147483647,
+}
#[repr(C)]
#[derive(Copy, Clone)]
pub union __kernel_sockaddr_storage__bindgen_ty_1 {
@@ -1448,6 +1970,69 @@ pub union tcp_word_hdr {
pub hdr: tcphdr,
pub words: [__be32; 5usize],
}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union if_settings__bindgen_ty_1 {
+pub raw_hdlc: *mut raw_hdlc_proto,
+pub cisco: *mut cisco_proto,
+pub fr: *mut fr_proto,
+pub fr_pvc: *mut fr_proto_pvc,
+pub fr_pvc_info: *mut fr_proto_pvc_info,
+pub x25: *mut x25_hdlc_proto,
+pub sync: *mut sync_serial_settings,
+pub te1: *mut te1_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_1 {
+pub ifrn_name: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_2 {
+pub ifru_addr: sockaddr,
+pub ifru_dstaddr: sockaddr,
+pub ifru_broadaddr: sockaddr,
+pub ifru_netmask: sockaddr,
+pub ifru_hwaddr: sockaddr,
+pub ifru_flags: crate::ctypes::c_short,
+pub ifru_ivalue: crate::ctypes::c_int,
+pub ifru_mtu: crate::ctypes::c_int,
+pub ifru_map: ifmap,
+pub ifru_slave: [crate::ctypes::c_char; 16usize],
+pub ifru_newname: [crate::ctypes::c_char; 16usize],
+pub ifru_data: *mut crate::ctypes::c_void,
+pub ifru_settings: if_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifconf__bindgen_ty_1 {
+pub ifcu_buf: *mut crate::ctypes::c_char,
+pub ifcu_req: *mut ifreq,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union nf_inet_addr {
+pub all: [__u32; 4usize],
+pub ip: __be32,
+pub ip6: [__be32; 4usize],
+pub in_: in_addr,
+pub in6: in6_addr,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_match__bindgen_ty_1 {
+pub user: xt_entry_match__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_match__bindgen_ty_1__bindgen_ty_2,
+pub match_size: __u16,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_target__bindgen_ty_1 {
+pub user: xt_entry_target__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_target__bindgen_ty_1__bindgen_ty_2,
+pub target_size: __u16,
+}
impl<Storage> __BindgenBitfieldUnit<Storage> {
#[inline]
pub const fn new(storage: Storage) -> Self {
@@ -1873,3 +2458,9 @@ tcpi_fastopen_client_fail as u64
__bindgen_bitfield_unit
}
}
+impl nf_inet_hooks {
+pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
+}
+impl nf_ip_hook_priorities {
+pub const NF_IP_PRI_LAST: nf_ip_hook_priorities = nf_ip_hook_priorities::NF_IP_PRI_CONNTRACK_CONFIRM;
+}
diff --git a/vendor/linux-raw-sys/src/powerpc/general.rs b/vendor/linux-raw-sys/src/powerpc/general.rs
index 2d6db3c3f..b9be68493 100644
--- a/vendor/linux-raw-sys/src/powerpc/general.rs
+++ b/vendor/linux-raw-sys/src/powerpc/general.rs
@@ -1662,6 +1662,19 @@ pub const POLLRDHUP: u32 = 8192;
pub const GRND_NONBLOCK: u32 = 1;
pub const GRND_RANDOM: u32 = 2;
pub const GRND_INSECURE: u32 = 4;
+pub const LINUX_REBOOT_MAGIC1: u32 = 4276215469;
+pub const LINUX_REBOOT_MAGIC2: u32 = 672274793;
+pub const LINUX_REBOOT_MAGIC2A: u32 = 85072278;
+pub const LINUX_REBOOT_MAGIC2B: u32 = 369367448;
+pub const LINUX_REBOOT_MAGIC2C: u32 = 537993216;
+pub const LINUX_REBOOT_CMD_RESTART: u32 = 19088743;
+pub const LINUX_REBOOT_CMD_HALT: u32 = 3454992675;
+pub const LINUX_REBOOT_CMD_CAD_ON: u32 = 2309737967;
+pub const LINUX_REBOOT_CMD_CAD_OFF: u32 = 0;
+pub const LINUX_REBOOT_CMD_POWER_OFF: u32 = 1126301404;
+pub const LINUX_REBOOT_CMD_RESTART2: u32 = 2712847316;
+pub const LINUX_REBOOT_CMD_SW_SUSPEND: u32 = 3489725666;
+pub const LINUX_REBOOT_CMD_KEXEC: u32 = 1163412803;
pub const ITIMER_REAL: u32 = 0;
pub const ITIMER_VIRTUAL: u32 = 1;
pub const ITIMER_PROF: u32 = 2;
diff --git a/vendor/linux-raw-sys/src/powerpc/net.rs b/vendor/linux-raw-sys/src/powerpc/net.rs
index 1040cd951..311400647 100644
--- a/vendor/linux-raw-sys/src/powerpc/net.rs
+++ b/vendor/linux-raw-sys/src/powerpc/net.rs
@@ -482,6 +482,255 @@ pub __storage: __kernel_sockaddr_storage,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct sync_serial_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct te1_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+pub slot_map: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct raw_hdlc_proto {
+pub encoding: crate::ctypes::c_ushort,
+pub parity: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto {
+pub t391: crate::ctypes::c_uint,
+pub t392: crate::ctypes::c_uint,
+pub n391: crate::ctypes::c_uint,
+pub n392: crate::ctypes::c_uint,
+pub n393: crate::ctypes::c_uint,
+pub lmi: crate::ctypes::c_ushort,
+pub dce: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc {
+pub dlci: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc_info {
+pub dlci: crate::ctypes::c_uint,
+pub master: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct cisco_proto {
+pub interval: crate::ctypes::c_uint,
+pub timeout: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct x25_hdlc_proto {
+pub dce: crate::ctypes::c_ushort,
+pub modulo: crate::ctypes::c_uint,
+pub window: crate::ctypes::c_uint,
+pub t1: crate::ctypes::c_uint,
+pub t2: crate::ctypes::c_uint,
+pub n2: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ifmap {
+pub mem_start: crate::ctypes::c_ulong,
+pub mem_end: crate::ctypes::c_ulong,
+pub base_addr: crate::ctypes::c_ushort,
+pub irq: crate::ctypes::c_uchar,
+pub dma: crate::ctypes::c_uchar,
+pub port: crate::ctypes::c_uchar,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct if_settings {
+pub type_: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub ifs_ifsu: if_settings__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifreq {
+pub ifr_ifrn: ifreq__bindgen_ty_1,
+pub ifr_ifru: ifreq__bindgen_ty_2,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifconf {
+pub ifc_len: crate::ctypes::c_int,
+pub ifc_ifcu: ifconf__bindgen_ty_1,
+}
+#[repr(C)]
+pub struct xt_entry_match {
+pub u: xt_entry_match__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_1 {
+pub match_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_2 {
+pub match_size: __u16,
+pub match_: *mut xt_match,
+}
+#[repr(C)]
+pub struct xt_entry_target {
+pub u: xt_entry_target__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_1 {
+pub target_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_2 {
+pub target_size: __u16,
+pub target: *mut xt_target,
+}
+#[repr(C)]
+pub struct xt_standard_target {
+pub target: xt_entry_target,
+pub verdict: crate::ctypes::c_int,
+}
+#[repr(C)]
+pub struct xt_error_target {
+pub target: xt_entry_target,
+pub errorname: [crate::ctypes::c_char; 30usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_get_revision {
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _xt_align {
+pub u8_: __u8,
+pub u16_: __u16,
+pub u32_: __u32,
+pub u64_: __u64,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_counters {
+pub pcnt: __u64,
+pub bcnt: __u64,
+}
+#[repr(C)]
+#[derive(Debug)]
+pub struct xt_counters_info {
+pub name: [crate::ctypes::c_char; 32usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: __IncompleteArrayField<xt_counters>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_tcp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub option: __u8,
+pub flg_mask: __u8,
+pub flg_cmp: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_udp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ip6t_ip6 {
+pub src: in6_addr,
+pub dst: in6_addr,
+pub smsk: in6_addr,
+pub dmsk: in6_addr,
+pub iniface: [crate::ctypes::c_char; 16usize],
+pub outiface: [crate::ctypes::c_char; 16usize],
+pub iniface_mask: [crate::ctypes::c_uchar; 16usize],
+pub outiface_mask: [crate::ctypes::c_uchar; 16usize],
+pub proto: __u16,
+pub tos: __u8,
+pub flags: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+pub struct ip6t_entry {
+pub ipv6: ip6t_ip6,
+pub nfcache: crate::ctypes::c_uint,
+pub target_offset: __u16,
+pub next_offset: __u16,
+pub comefrom: crate::ctypes::c_uint,
+pub counters: xt_counters,
+pub elems: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+pub struct ip6t_standard {
+pub entry: ip6t_entry,
+pub target: xt_standard_target,
+}
+#[repr(C)]
+pub struct ip6t_error {
+pub entry: ip6t_entry,
+pub target: xt_error_target,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_icmp {
+pub type_: __u8,
+pub code: [__u8; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_getinfo {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+}
+#[repr(C)]
+pub struct ip6t_replace {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: *mut xt_counters,
+pub entries: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+pub struct ip6t_get_entries {
+pub name: [crate::ctypes::c_char; 32usize],
+pub size: crate::ctypes::c_uint,
+pub entrytable: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct linger {
pub l_onoff: crate::ctypes::c_int,
pub l_linger: crate::ctypes::c_int,
@@ -519,6 +768,16 @@ pub msg_len: crate::ctypes::c_uint,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct xt_match {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_target {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct iovec {
pub _address: u8,
}
@@ -933,6 +1192,135 @@ pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
pub const UNIX_PATH_MAX: u32 = 108;
+pub const IFNAMSIZ: u32 = 16;
+pub const IFALIASZ: u32 = 256;
+pub const ALTIFNAMSIZ: u32 = 128;
+pub const GENERIC_HDLC_VERSION: u32 = 4;
+pub const CLOCK_DEFAULT: u32 = 0;
+pub const CLOCK_EXT: u32 = 1;
+pub const CLOCK_INT: u32 = 2;
+pub const CLOCK_TXINT: u32 = 3;
+pub const CLOCK_TXFROMRX: u32 = 4;
+pub const ENCODING_DEFAULT: u32 = 0;
+pub const ENCODING_NRZ: u32 = 1;
+pub const ENCODING_NRZI: u32 = 2;
+pub const ENCODING_FM_MARK: u32 = 3;
+pub const ENCODING_FM_SPACE: u32 = 4;
+pub const ENCODING_MANCHESTER: u32 = 5;
+pub const PARITY_DEFAULT: u32 = 0;
+pub const PARITY_NONE: u32 = 1;
+pub const PARITY_CRC16_PR0: u32 = 2;
+pub const PARITY_CRC16_PR1: u32 = 3;
+pub const PARITY_CRC16_PR0_CCITT: u32 = 4;
+pub const PARITY_CRC16_PR1_CCITT: u32 = 5;
+pub const PARITY_CRC32_PR0_CCITT: u32 = 6;
+pub const PARITY_CRC32_PR1_CCITT: u32 = 7;
+pub const LMI_DEFAULT: u32 = 0;
+pub const LMI_NONE: u32 = 1;
+pub const LMI_ANSI: u32 = 2;
+pub const LMI_CCITT: u32 = 3;
+pub const LMI_CISCO: u32 = 4;
+pub const IF_GET_IFACE: u32 = 1;
+pub const IF_GET_PROTO: u32 = 2;
+pub const IF_IFACE_V35: u32 = 4096;
+pub const IF_IFACE_V24: u32 = 4097;
+pub const IF_IFACE_X21: u32 = 4098;
+pub const IF_IFACE_T1: u32 = 4099;
+pub const IF_IFACE_E1: u32 = 4100;
+pub const IF_IFACE_SYNC_SERIAL: u32 = 4101;
+pub const IF_IFACE_X21D: u32 = 4102;
+pub const IF_PROTO_HDLC: u32 = 8192;
+pub const IF_PROTO_PPP: u32 = 8193;
+pub const IF_PROTO_CISCO: u32 = 8194;
+pub const IF_PROTO_FR: u32 = 8195;
+pub const IF_PROTO_FR_ADD_PVC: u32 = 8196;
+pub const IF_PROTO_FR_DEL_PVC: u32 = 8197;
+pub const IF_PROTO_X25: u32 = 8198;
+pub const IF_PROTO_HDLC_ETH: u32 = 8199;
+pub const IF_PROTO_FR_ADD_ETH_PVC: u32 = 8200;
+pub const IF_PROTO_FR_DEL_ETH_PVC: u32 = 8201;
+pub const IF_PROTO_FR_PVC: u32 = 8202;
+pub const IF_PROTO_FR_ETH_PVC: u32 = 8203;
+pub const IF_PROTO_RAW: u32 = 8204;
+pub const IFHWADDRLEN: u32 = 6;
+pub const NF_DROP: u32 = 0;
+pub const NF_ACCEPT: u32 = 1;
+pub const NF_STOLEN: u32 = 2;
+pub const NF_QUEUE: u32 = 3;
+pub const NF_REPEAT: u32 = 4;
+pub const NF_STOP: u32 = 5;
+pub const NF_MAX_VERDICT: u32 = 5;
+pub const NF_VERDICT_MASK: u32 = 255;
+pub const NF_VERDICT_FLAG_QUEUE_BYPASS: u32 = 32768;
+pub const NF_VERDICT_QMASK: u32 = 4294901760;
+pub const NF_VERDICT_QBITS: u32 = 16;
+pub const NF_VERDICT_BITS: u32 = 16;
+pub const NF_IP6_PRE_ROUTING: u32 = 0;
+pub const NF_IP6_LOCAL_IN: u32 = 1;
+pub const NF_IP6_FORWARD: u32 = 2;
+pub const NF_IP6_LOCAL_OUT: u32 = 3;
+pub const NF_IP6_POST_ROUTING: u32 = 4;
+pub const NF_IP6_NUMHOOKS: u32 = 5;
+pub const XT_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const XT_EXTENSION_MAXNAMELEN: u32 = 29;
+pub const XT_TABLE_MAXNAMELEN: u32 = 32;
+pub const XT_CONTINUE: u32 = 4294967295;
+pub const XT_RETURN: i32 = -5;
+pub const XT_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const XT_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const XT_INV_PROTO: u32 = 64;
+pub const IP6T_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const IP6T_TABLE_MAXNAMELEN: u32 = 32;
+pub const IP6T_CONTINUE: u32 = 4294967295;
+pub const IP6T_RETURN: i32 = -5;
+pub const XT_TCP_INV_SRCPT: u32 = 1;
+pub const XT_TCP_INV_DSTPT: u32 = 2;
+pub const XT_TCP_INV_FLAGS: u32 = 4;
+pub const XT_TCP_INV_OPTION: u32 = 8;
+pub const XT_TCP_INV_MASK: u32 = 15;
+pub const XT_UDP_INV_SRCPT: u32 = 1;
+pub const XT_UDP_INV_DSTPT: u32 = 2;
+pub const XT_UDP_INV_MASK: u32 = 3;
+pub const IP6T_TCP_INV_SRCPT: u32 = 1;
+pub const IP6T_TCP_INV_DSTPT: u32 = 2;
+pub const IP6T_TCP_INV_FLAGS: u32 = 4;
+pub const IP6T_TCP_INV_OPTION: u32 = 8;
+pub const IP6T_TCP_INV_MASK: u32 = 15;
+pub const IP6T_UDP_INV_SRCPT: u32 = 1;
+pub const IP6T_UDP_INV_DSTPT: u32 = 2;
+pub const IP6T_UDP_INV_MASK: u32 = 3;
+pub const IP6T_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const IP6T_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const IP6T_F_PROTO: u32 = 1;
+pub const IP6T_F_TOS: u32 = 2;
+pub const IP6T_F_GOTO: u32 = 4;
+pub const IP6T_F_MASK: u32 = 7;
+pub const IP6T_INV_VIA_IN: u32 = 1;
+pub const IP6T_INV_VIA_OUT: u32 = 2;
+pub const IP6T_INV_TOS: u32 = 4;
+pub const IP6T_INV_SRCIP: u32 = 8;
+pub const IP6T_INV_DSTIP: u32 = 16;
+pub const IP6T_INV_FRAG: u32 = 32;
+pub const IP6T_INV_PROTO: u32 = 64;
+pub const IP6T_INV_MASK: u32 = 127;
+pub const IP6T_BASE_CTL: u32 = 64;
+pub const IP6T_SO_SET_REPLACE: u32 = 64;
+pub const IP6T_SO_SET_ADD_COUNTERS: u32 = 65;
+pub const IP6T_SO_SET_MAX: u32 = 65;
+pub const IP6T_SO_GET_INFO: u32 = 64;
+pub const IP6T_SO_GET_ENTRIES: u32 = 65;
+pub const IP6T_SO_GET_REVISION_MATCH: u32 = 68;
+pub const IP6T_SO_GET_REVISION_TARGET: u32 = 69;
+pub const IP6T_SO_GET_MAX: u32 = 69;
+pub const IP6T_SO_ORIGINAL_DST: u32 = 80;
+pub const IP6T_ICMP_INV: u32 = 1;
+pub const NF_IP_PRE_ROUTING: u32 = 0;
+pub const NF_IP_LOCAL_IN: u32 = 1;
+pub const NF_IP_FORWARD: u32 = 2;
+pub const NF_IP_LOCAL_OUT: u32 = 3;
+pub const NF_IP_POST_ROUTING: u32 = 4;
+pub const NF_IP_NUMHOOKS: u32 = 5;
+pub const SO_ORIGINAL_DST: u32 = 80;
pub const SHUT_RD: u32 = 0;
pub const SHUT_WR: u32 = 1;
pub const SHUT_RDWR: u32 = 2;
@@ -1161,6 +1549,25 @@ pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NO
pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
+pub const IF_OPER_UNKNOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UNKNOWN;
+pub const IF_OPER_NOTPRESENT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_NOTPRESENT;
+pub const IF_OPER_DOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DOWN;
+pub const IF_OPER_LOWERLAYERDOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_LOWERLAYERDOWN;
+pub const IF_OPER_TESTING: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_TESTING;
+pub const IF_OPER_DORMANT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DORMANT;
+pub const IF_OPER_UP: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UP;
+pub const IF_LINK_MODE_DEFAULT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DEFAULT;
+pub const IF_LINK_MODE_DORMANT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DORMANT;
+pub const IF_LINK_MODE_TESTING: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_TESTING;
+pub const NFPROTO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_UNSPEC;
+pub const NFPROTO_INET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_INET;
+pub const NFPROTO_IPV4: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV4;
+pub const NFPROTO_ARP: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_ARP;
+pub const NFPROTO_NETDEV: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NETDEV;
+pub const NFPROTO_BRIDGE: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_BRIDGE;
+pub const NFPROTO_IPV6: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV6;
+pub const NFPROTO_DECNET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_DECNET;
+pub const NFPROTO_NUMPROTO: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NUMPROTO;
#[repr(u32)]
#[non_exhaustive]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -1384,6 +1791,121 @@ TCP_NLA_EDT = 25,
TCP_NLA_TTL = 26,
TCP_NLA_REHASH = 27,
}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum net_device_flags {
+IFF_UP = 1,
+IFF_BROADCAST = 2,
+IFF_DEBUG = 4,
+IFF_LOOPBACK = 8,
+IFF_POINTOPOINT = 16,
+IFF_NOTRAILERS = 32,
+IFF_RUNNING = 64,
+IFF_NOARP = 128,
+IFF_PROMISC = 256,
+IFF_ALLMULTI = 512,
+IFF_MASTER = 1024,
+IFF_SLAVE = 2048,
+IFF_MULTICAST = 4096,
+IFF_PORTSEL = 8192,
+IFF_AUTOMEDIA = 16384,
+IFF_DYNAMIC = 32768,
+IFF_LOWER_UP = 65536,
+IFF_DORMANT = 131072,
+IFF_ECHO = 262144,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_7 {
+IF_OPER_UNKNOWN = 0,
+IF_OPER_NOTPRESENT = 1,
+IF_OPER_DOWN = 2,
+IF_OPER_LOWERLAYERDOWN = 3,
+IF_OPER_TESTING = 4,
+IF_OPER_DORMANT = 5,
+IF_OPER_UP = 6,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_8 {
+IF_LINK_MODE_DEFAULT = 0,
+IF_LINK_MODE_DORMANT = 1,
+IF_LINK_MODE_TESTING = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_inet_hooks {
+NF_INET_PRE_ROUTING = 0,
+NF_INET_LOCAL_IN = 1,
+NF_INET_FORWARD = 2,
+NF_INET_LOCAL_OUT = 3,
+NF_INET_POST_ROUTING = 4,
+NF_INET_NUMHOOKS = 5,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_dev_hooks {
+NF_NETDEV_INGRESS = 0,
+NF_NETDEV_EGRESS = 1,
+NF_NETDEV_NUMHOOKS = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_9 {
+NFPROTO_UNSPEC = 0,
+NFPROTO_INET = 1,
+NFPROTO_IPV4 = 2,
+NFPROTO_ARP = 3,
+NFPROTO_NETDEV = 5,
+NFPROTO_BRIDGE = 7,
+NFPROTO_IPV6 = 10,
+NFPROTO_DECNET = 12,
+NFPROTO_NUMPROTO = 13,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip6_hook_priorities {
+NF_IP6_PRI_FIRST = -2147483648,
+NF_IP6_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP6_PRI_RAW = -300,
+NF_IP6_PRI_SELINUX_FIRST = -225,
+NF_IP6_PRI_CONNTRACK = -200,
+NF_IP6_PRI_MANGLE = -150,
+NF_IP6_PRI_NAT_DST = -100,
+NF_IP6_PRI_FILTER = 0,
+NF_IP6_PRI_SECURITY = 50,
+NF_IP6_PRI_NAT_SRC = 100,
+NF_IP6_PRI_SELINUX_LAST = 225,
+NF_IP6_PRI_CONNTRACK_HELPER = 300,
+NF_IP6_PRI_LAST = 2147483647,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip_hook_priorities {
+NF_IP_PRI_FIRST = -2147483648,
+NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP_PRI_RAW = -300,
+NF_IP_PRI_SELINUX_FIRST = -225,
+NF_IP_PRI_CONNTRACK = -200,
+NF_IP_PRI_MANGLE = -150,
+NF_IP_PRI_NAT_DST = -100,
+NF_IP_PRI_FILTER = 0,
+NF_IP_PRI_SECURITY = 50,
+NF_IP_PRI_NAT_SRC = 100,
+NF_IP_PRI_SELINUX_LAST = 225,
+NF_IP_PRI_CONNTRACK_HELPER = 300,
+NF_IP_PRI_CONNTRACK_CONFIRM = 2147483647,
+}
#[repr(C)]
#[derive(Copy, Clone)]
pub union __kernel_sockaddr_storage__bindgen_ty_1 {
@@ -1415,6 +1937,69 @@ pub union tcp_word_hdr {
pub hdr: tcphdr,
pub words: [__be32; 5usize],
}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union if_settings__bindgen_ty_1 {
+pub raw_hdlc: *mut raw_hdlc_proto,
+pub cisco: *mut cisco_proto,
+pub fr: *mut fr_proto,
+pub fr_pvc: *mut fr_proto_pvc,
+pub fr_pvc_info: *mut fr_proto_pvc_info,
+pub x25: *mut x25_hdlc_proto,
+pub sync: *mut sync_serial_settings,
+pub te1: *mut te1_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_1 {
+pub ifrn_name: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_2 {
+pub ifru_addr: sockaddr,
+pub ifru_dstaddr: sockaddr,
+pub ifru_broadaddr: sockaddr,
+pub ifru_netmask: sockaddr,
+pub ifru_hwaddr: sockaddr,
+pub ifru_flags: crate::ctypes::c_short,
+pub ifru_ivalue: crate::ctypes::c_int,
+pub ifru_mtu: crate::ctypes::c_int,
+pub ifru_map: ifmap,
+pub ifru_slave: [crate::ctypes::c_char; 16usize],
+pub ifru_newname: [crate::ctypes::c_char; 16usize],
+pub ifru_data: *mut crate::ctypes::c_void,
+pub ifru_settings: if_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifconf__bindgen_ty_1 {
+pub ifcu_buf: *mut crate::ctypes::c_char,
+pub ifcu_req: *mut ifreq,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union nf_inet_addr {
+pub all: [__u32; 4usize],
+pub ip: __be32,
+pub ip6: [__be32; 4usize],
+pub in_: in_addr,
+pub in6: in6_addr,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_match__bindgen_ty_1 {
+pub user: xt_entry_match__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_match__bindgen_ty_1__bindgen_ty_2,
+pub match_size: __u16,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_target__bindgen_ty_1 {
+pub user: xt_entry_target__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_target__bindgen_ty_1__bindgen_ty_2,
+pub target_size: __u16,
+}
impl<Storage> __BindgenBitfieldUnit<Storage> {
#[inline]
pub const fn new(storage: Storage) -> Self {
@@ -1840,3 +2425,9 @@ tcpi_fastopen_client_fail as u64
__bindgen_bitfield_unit
}
}
+impl nf_inet_hooks {
+pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
+}
+impl nf_ip_hook_priorities {
+pub const NF_IP_PRI_LAST: nf_ip_hook_priorities = nf_ip_hook_priorities::NF_IP_PRI_CONNTRACK_CONFIRM;
+}
diff --git a/vendor/linux-raw-sys/src/powerpc64/general.rs b/vendor/linux-raw-sys/src/powerpc64/general.rs
index 6a08a1998..5be30ce0a 100644
--- a/vendor/linux-raw-sys/src/powerpc64/general.rs
+++ b/vendor/linux-raw-sys/src/powerpc64/general.rs
@@ -1639,6 +1639,19 @@ pub const POLLRDHUP: u32 = 8192;
pub const GRND_NONBLOCK: u32 = 1;
pub const GRND_RANDOM: u32 = 2;
pub const GRND_INSECURE: u32 = 4;
+pub const LINUX_REBOOT_MAGIC1: u32 = 4276215469;
+pub const LINUX_REBOOT_MAGIC2: u32 = 672274793;
+pub const LINUX_REBOOT_MAGIC2A: u32 = 85072278;
+pub const LINUX_REBOOT_MAGIC2B: u32 = 369367448;
+pub const LINUX_REBOOT_MAGIC2C: u32 = 537993216;
+pub const LINUX_REBOOT_CMD_RESTART: u32 = 19088743;
+pub const LINUX_REBOOT_CMD_HALT: u32 = 3454992675;
+pub const LINUX_REBOOT_CMD_CAD_ON: u32 = 2309737967;
+pub const LINUX_REBOOT_CMD_CAD_OFF: u32 = 0;
+pub const LINUX_REBOOT_CMD_POWER_OFF: u32 = 1126301404;
+pub const LINUX_REBOOT_CMD_RESTART2: u32 = 2712847316;
+pub const LINUX_REBOOT_CMD_SW_SUSPEND: u32 = 3489725666;
+pub const LINUX_REBOOT_CMD_KEXEC: u32 = 1163412803;
pub const ITIMER_REAL: u32 = 0;
pub const ITIMER_VIRTUAL: u32 = 1;
pub const ITIMER_PROF: u32 = 2;
diff --git a/vendor/linux-raw-sys/src/powerpc64/net.rs b/vendor/linux-raw-sys/src/powerpc64/net.rs
index 996837473..63cb530ae 100644
--- a/vendor/linux-raw-sys/src/powerpc64/net.rs
+++ b/vendor/linux-raw-sys/src/powerpc64/net.rs
@@ -482,6 +482,255 @@ pub __storage: __kernel_sockaddr_storage,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct sync_serial_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct te1_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+pub slot_map: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct raw_hdlc_proto {
+pub encoding: crate::ctypes::c_ushort,
+pub parity: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto {
+pub t391: crate::ctypes::c_uint,
+pub t392: crate::ctypes::c_uint,
+pub n391: crate::ctypes::c_uint,
+pub n392: crate::ctypes::c_uint,
+pub n393: crate::ctypes::c_uint,
+pub lmi: crate::ctypes::c_ushort,
+pub dce: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc {
+pub dlci: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc_info {
+pub dlci: crate::ctypes::c_uint,
+pub master: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct cisco_proto {
+pub interval: crate::ctypes::c_uint,
+pub timeout: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct x25_hdlc_proto {
+pub dce: crate::ctypes::c_ushort,
+pub modulo: crate::ctypes::c_uint,
+pub window: crate::ctypes::c_uint,
+pub t1: crate::ctypes::c_uint,
+pub t2: crate::ctypes::c_uint,
+pub n2: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ifmap {
+pub mem_start: crate::ctypes::c_ulong,
+pub mem_end: crate::ctypes::c_ulong,
+pub base_addr: crate::ctypes::c_ushort,
+pub irq: crate::ctypes::c_uchar,
+pub dma: crate::ctypes::c_uchar,
+pub port: crate::ctypes::c_uchar,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct if_settings {
+pub type_: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub ifs_ifsu: if_settings__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifreq {
+pub ifr_ifrn: ifreq__bindgen_ty_1,
+pub ifr_ifru: ifreq__bindgen_ty_2,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifconf {
+pub ifc_len: crate::ctypes::c_int,
+pub ifc_ifcu: ifconf__bindgen_ty_1,
+}
+#[repr(C)]
+pub struct xt_entry_match {
+pub u: xt_entry_match__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_1 {
+pub match_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_2 {
+pub match_size: __u16,
+pub match_: *mut xt_match,
+}
+#[repr(C)]
+pub struct xt_entry_target {
+pub u: xt_entry_target__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_1 {
+pub target_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_2 {
+pub target_size: __u16,
+pub target: *mut xt_target,
+}
+#[repr(C)]
+pub struct xt_standard_target {
+pub target: xt_entry_target,
+pub verdict: crate::ctypes::c_int,
+}
+#[repr(C)]
+pub struct xt_error_target {
+pub target: xt_entry_target,
+pub errorname: [crate::ctypes::c_char; 30usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_get_revision {
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _xt_align {
+pub u8_: __u8,
+pub u16_: __u16,
+pub u32_: __u32,
+pub u64_: __u64,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_counters {
+pub pcnt: __u64,
+pub bcnt: __u64,
+}
+#[repr(C)]
+#[derive(Debug)]
+pub struct xt_counters_info {
+pub name: [crate::ctypes::c_char; 32usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: __IncompleteArrayField<xt_counters>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_tcp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub option: __u8,
+pub flg_mask: __u8,
+pub flg_cmp: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_udp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ip6t_ip6 {
+pub src: in6_addr,
+pub dst: in6_addr,
+pub smsk: in6_addr,
+pub dmsk: in6_addr,
+pub iniface: [crate::ctypes::c_char; 16usize],
+pub outiface: [crate::ctypes::c_char; 16usize],
+pub iniface_mask: [crate::ctypes::c_uchar; 16usize],
+pub outiface_mask: [crate::ctypes::c_uchar; 16usize],
+pub proto: __u16,
+pub tos: __u8,
+pub flags: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+pub struct ip6t_entry {
+pub ipv6: ip6t_ip6,
+pub nfcache: crate::ctypes::c_uint,
+pub target_offset: __u16,
+pub next_offset: __u16,
+pub comefrom: crate::ctypes::c_uint,
+pub counters: xt_counters,
+pub elems: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+pub struct ip6t_standard {
+pub entry: ip6t_entry,
+pub target: xt_standard_target,
+}
+#[repr(C)]
+pub struct ip6t_error {
+pub entry: ip6t_entry,
+pub target: xt_error_target,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_icmp {
+pub type_: __u8,
+pub code: [__u8; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_getinfo {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+}
+#[repr(C)]
+pub struct ip6t_replace {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: *mut xt_counters,
+pub entries: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+pub struct ip6t_get_entries {
+pub name: [crate::ctypes::c_char; 32usize],
+pub size: crate::ctypes::c_uint,
+pub entrytable: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct linger {
pub l_onoff: crate::ctypes::c_int,
pub l_linger: crate::ctypes::c_int,
@@ -519,6 +768,16 @@ pub msg_len: crate::ctypes::c_uint,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct xt_match {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_target {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct iovec {
pub _address: u8,
}
@@ -941,6 +1200,135 @@ pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
pub const UNIX_PATH_MAX: u32 = 108;
+pub const IFNAMSIZ: u32 = 16;
+pub const IFALIASZ: u32 = 256;
+pub const ALTIFNAMSIZ: u32 = 128;
+pub const GENERIC_HDLC_VERSION: u32 = 4;
+pub const CLOCK_DEFAULT: u32 = 0;
+pub const CLOCK_EXT: u32 = 1;
+pub const CLOCK_INT: u32 = 2;
+pub const CLOCK_TXINT: u32 = 3;
+pub const CLOCK_TXFROMRX: u32 = 4;
+pub const ENCODING_DEFAULT: u32 = 0;
+pub const ENCODING_NRZ: u32 = 1;
+pub const ENCODING_NRZI: u32 = 2;
+pub const ENCODING_FM_MARK: u32 = 3;
+pub const ENCODING_FM_SPACE: u32 = 4;
+pub const ENCODING_MANCHESTER: u32 = 5;
+pub const PARITY_DEFAULT: u32 = 0;
+pub const PARITY_NONE: u32 = 1;
+pub const PARITY_CRC16_PR0: u32 = 2;
+pub const PARITY_CRC16_PR1: u32 = 3;
+pub const PARITY_CRC16_PR0_CCITT: u32 = 4;
+pub const PARITY_CRC16_PR1_CCITT: u32 = 5;
+pub const PARITY_CRC32_PR0_CCITT: u32 = 6;
+pub const PARITY_CRC32_PR1_CCITT: u32 = 7;
+pub const LMI_DEFAULT: u32 = 0;
+pub const LMI_NONE: u32 = 1;
+pub const LMI_ANSI: u32 = 2;
+pub const LMI_CCITT: u32 = 3;
+pub const LMI_CISCO: u32 = 4;
+pub const IF_GET_IFACE: u32 = 1;
+pub const IF_GET_PROTO: u32 = 2;
+pub const IF_IFACE_V35: u32 = 4096;
+pub const IF_IFACE_V24: u32 = 4097;
+pub const IF_IFACE_X21: u32 = 4098;
+pub const IF_IFACE_T1: u32 = 4099;
+pub const IF_IFACE_E1: u32 = 4100;
+pub const IF_IFACE_SYNC_SERIAL: u32 = 4101;
+pub const IF_IFACE_X21D: u32 = 4102;
+pub const IF_PROTO_HDLC: u32 = 8192;
+pub const IF_PROTO_PPP: u32 = 8193;
+pub const IF_PROTO_CISCO: u32 = 8194;
+pub const IF_PROTO_FR: u32 = 8195;
+pub const IF_PROTO_FR_ADD_PVC: u32 = 8196;
+pub const IF_PROTO_FR_DEL_PVC: u32 = 8197;
+pub const IF_PROTO_X25: u32 = 8198;
+pub const IF_PROTO_HDLC_ETH: u32 = 8199;
+pub const IF_PROTO_FR_ADD_ETH_PVC: u32 = 8200;
+pub const IF_PROTO_FR_DEL_ETH_PVC: u32 = 8201;
+pub const IF_PROTO_FR_PVC: u32 = 8202;
+pub const IF_PROTO_FR_ETH_PVC: u32 = 8203;
+pub const IF_PROTO_RAW: u32 = 8204;
+pub const IFHWADDRLEN: u32 = 6;
+pub const NF_DROP: u32 = 0;
+pub const NF_ACCEPT: u32 = 1;
+pub const NF_STOLEN: u32 = 2;
+pub const NF_QUEUE: u32 = 3;
+pub const NF_REPEAT: u32 = 4;
+pub const NF_STOP: u32 = 5;
+pub const NF_MAX_VERDICT: u32 = 5;
+pub const NF_VERDICT_MASK: u32 = 255;
+pub const NF_VERDICT_FLAG_QUEUE_BYPASS: u32 = 32768;
+pub const NF_VERDICT_QMASK: u32 = 4294901760;
+pub const NF_VERDICT_QBITS: u32 = 16;
+pub const NF_VERDICT_BITS: u32 = 16;
+pub const NF_IP6_PRE_ROUTING: u32 = 0;
+pub const NF_IP6_LOCAL_IN: u32 = 1;
+pub const NF_IP6_FORWARD: u32 = 2;
+pub const NF_IP6_LOCAL_OUT: u32 = 3;
+pub const NF_IP6_POST_ROUTING: u32 = 4;
+pub const NF_IP6_NUMHOOKS: u32 = 5;
+pub const XT_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const XT_EXTENSION_MAXNAMELEN: u32 = 29;
+pub const XT_TABLE_MAXNAMELEN: u32 = 32;
+pub const XT_CONTINUE: u32 = 4294967295;
+pub const XT_RETURN: i32 = -5;
+pub const XT_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const XT_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const XT_INV_PROTO: u32 = 64;
+pub const IP6T_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const IP6T_TABLE_MAXNAMELEN: u32 = 32;
+pub const IP6T_CONTINUE: u32 = 4294967295;
+pub const IP6T_RETURN: i32 = -5;
+pub const XT_TCP_INV_SRCPT: u32 = 1;
+pub const XT_TCP_INV_DSTPT: u32 = 2;
+pub const XT_TCP_INV_FLAGS: u32 = 4;
+pub const XT_TCP_INV_OPTION: u32 = 8;
+pub const XT_TCP_INV_MASK: u32 = 15;
+pub const XT_UDP_INV_SRCPT: u32 = 1;
+pub const XT_UDP_INV_DSTPT: u32 = 2;
+pub const XT_UDP_INV_MASK: u32 = 3;
+pub const IP6T_TCP_INV_SRCPT: u32 = 1;
+pub const IP6T_TCP_INV_DSTPT: u32 = 2;
+pub const IP6T_TCP_INV_FLAGS: u32 = 4;
+pub const IP6T_TCP_INV_OPTION: u32 = 8;
+pub const IP6T_TCP_INV_MASK: u32 = 15;
+pub const IP6T_UDP_INV_SRCPT: u32 = 1;
+pub const IP6T_UDP_INV_DSTPT: u32 = 2;
+pub const IP6T_UDP_INV_MASK: u32 = 3;
+pub const IP6T_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const IP6T_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const IP6T_F_PROTO: u32 = 1;
+pub const IP6T_F_TOS: u32 = 2;
+pub const IP6T_F_GOTO: u32 = 4;
+pub const IP6T_F_MASK: u32 = 7;
+pub const IP6T_INV_VIA_IN: u32 = 1;
+pub const IP6T_INV_VIA_OUT: u32 = 2;
+pub const IP6T_INV_TOS: u32 = 4;
+pub const IP6T_INV_SRCIP: u32 = 8;
+pub const IP6T_INV_DSTIP: u32 = 16;
+pub const IP6T_INV_FRAG: u32 = 32;
+pub const IP6T_INV_PROTO: u32 = 64;
+pub const IP6T_INV_MASK: u32 = 127;
+pub const IP6T_BASE_CTL: u32 = 64;
+pub const IP6T_SO_SET_REPLACE: u32 = 64;
+pub const IP6T_SO_SET_ADD_COUNTERS: u32 = 65;
+pub const IP6T_SO_SET_MAX: u32 = 65;
+pub const IP6T_SO_GET_INFO: u32 = 64;
+pub const IP6T_SO_GET_ENTRIES: u32 = 65;
+pub const IP6T_SO_GET_REVISION_MATCH: u32 = 68;
+pub const IP6T_SO_GET_REVISION_TARGET: u32 = 69;
+pub const IP6T_SO_GET_MAX: u32 = 69;
+pub const IP6T_SO_ORIGINAL_DST: u32 = 80;
+pub const IP6T_ICMP_INV: u32 = 1;
+pub const NF_IP_PRE_ROUTING: u32 = 0;
+pub const NF_IP_LOCAL_IN: u32 = 1;
+pub const NF_IP_FORWARD: u32 = 2;
+pub const NF_IP_LOCAL_OUT: u32 = 3;
+pub const NF_IP_POST_ROUTING: u32 = 4;
+pub const NF_IP_NUMHOOKS: u32 = 5;
+pub const SO_ORIGINAL_DST: u32 = 80;
pub const SHUT_RD: u32 = 0;
pub const SHUT_WR: u32 = 1;
pub const SHUT_RDWR: u32 = 2;
@@ -1169,6 +1557,25 @@ pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NO
pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
+pub const IF_OPER_UNKNOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UNKNOWN;
+pub const IF_OPER_NOTPRESENT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_NOTPRESENT;
+pub const IF_OPER_DOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DOWN;
+pub const IF_OPER_LOWERLAYERDOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_LOWERLAYERDOWN;
+pub const IF_OPER_TESTING: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_TESTING;
+pub const IF_OPER_DORMANT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DORMANT;
+pub const IF_OPER_UP: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UP;
+pub const IF_LINK_MODE_DEFAULT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DEFAULT;
+pub const IF_LINK_MODE_DORMANT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DORMANT;
+pub const IF_LINK_MODE_TESTING: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_TESTING;
+pub const NFPROTO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_UNSPEC;
+pub const NFPROTO_INET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_INET;
+pub const NFPROTO_IPV4: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV4;
+pub const NFPROTO_ARP: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_ARP;
+pub const NFPROTO_NETDEV: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NETDEV;
+pub const NFPROTO_BRIDGE: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_BRIDGE;
+pub const NFPROTO_IPV6: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV6;
+pub const NFPROTO_DECNET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_DECNET;
+pub const NFPROTO_NUMPROTO: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NUMPROTO;
#[repr(u32)]
#[non_exhaustive]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -1392,6 +1799,121 @@ TCP_NLA_EDT = 25,
TCP_NLA_TTL = 26,
TCP_NLA_REHASH = 27,
}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum net_device_flags {
+IFF_UP = 1,
+IFF_BROADCAST = 2,
+IFF_DEBUG = 4,
+IFF_LOOPBACK = 8,
+IFF_POINTOPOINT = 16,
+IFF_NOTRAILERS = 32,
+IFF_RUNNING = 64,
+IFF_NOARP = 128,
+IFF_PROMISC = 256,
+IFF_ALLMULTI = 512,
+IFF_MASTER = 1024,
+IFF_SLAVE = 2048,
+IFF_MULTICAST = 4096,
+IFF_PORTSEL = 8192,
+IFF_AUTOMEDIA = 16384,
+IFF_DYNAMIC = 32768,
+IFF_LOWER_UP = 65536,
+IFF_DORMANT = 131072,
+IFF_ECHO = 262144,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_7 {
+IF_OPER_UNKNOWN = 0,
+IF_OPER_NOTPRESENT = 1,
+IF_OPER_DOWN = 2,
+IF_OPER_LOWERLAYERDOWN = 3,
+IF_OPER_TESTING = 4,
+IF_OPER_DORMANT = 5,
+IF_OPER_UP = 6,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_8 {
+IF_LINK_MODE_DEFAULT = 0,
+IF_LINK_MODE_DORMANT = 1,
+IF_LINK_MODE_TESTING = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_inet_hooks {
+NF_INET_PRE_ROUTING = 0,
+NF_INET_LOCAL_IN = 1,
+NF_INET_FORWARD = 2,
+NF_INET_LOCAL_OUT = 3,
+NF_INET_POST_ROUTING = 4,
+NF_INET_NUMHOOKS = 5,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_dev_hooks {
+NF_NETDEV_INGRESS = 0,
+NF_NETDEV_EGRESS = 1,
+NF_NETDEV_NUMHOOKS = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_9 {
+NFPROTO_UNSPEC = 0,
+NFPROTO_INET = 1,
+NFPROTO_IPV4 = 2,
+NFPROTO_ARP = 3,
+NFPROTO_NETDEV = 5,
+NFPROTO_BRIDGE = 7,
+NFPROTO_IPV6 = 10,
+NFPROTO_DECNET = 12,
+NFPROTO_NUMPROTO = 13,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip6_hook_priorities {
+NF_IP6_PRI_FIRST = -2147483648,
+NF_IP6_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP6_PRI_RAW = -300,
+NF_IP6_PRI_SELINUX_FIRST = -225,
+NF_IP6_PRI_CONNTRACK = -200,
+NF_IP6_PRI_MANGLE = -150,
+NF_IP6_PRI_NAT_DST = -100,
+NF_IP6_PRI_FILTER = 0,
+NF_IP6_PRI_SECURITY = 50,
+NF_IP6_PRI_NAT_SRC = 100,
+NF_IP6_PRI_SELINUX_LAST = 225,
+NF_IP6_PRI_CONNTRACK_HELPER = 300,
+NF_IP6_PRI_LAST = 2147483647,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip_hook_priorities {
+NF_IP_PRI_FIRST = -2147483648,
+NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP_PRI_RAW = -300,
+NF_IP_PRI_SELINUX_FIRST = -225,
+NF_IP_PRI_CONNTRACK = -200,
+NF_IP_PRI_MANGLE = -150,
+NF_IP_PRI_NAT_DST = -100,
+NF_IP_PRI_FILTER = 0,
+NF_IP_PRI_SECURITY = 50,
+NF_IP_PRI_NAT_SRC = 100,
+NF_IP_PRI_SELINUX_LAST = 225,
+NF_IP_PRI_CONNTRACK_HELPER = 300,
+NF_IP_PRI_CONNTRACK_CONFIRM = 2147483647,
+}
#[repr(C)]
#[derive(Copy, Clone)]
pub union __kernel_sockaddr_storage__bindgen_ty_1 {
@@ -1423,6 +1945,69 @@ pub union tcp_word_hdr {
pub hdr: tcphdr,
pub words: [__be32; 5usize],
}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union if_settings__bindgen_ty_1 {
+pub raw_hdlc: *mut raw_hdlc_proto,
+pub cisco: *mut cisco_proto,
+pub fr: *mut fr_proto,
+pub fr_pvc: *mut fr_proto_pvc,
+pub fr_pvc_info: *mut fr_proto_pvc_info,
+pub x25: *mut x25_hdlc_proto,
+pub sync: *mut sync_serial_settings,
+pub te1: *mut te1_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_1 {
+pub ifrn_name: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_2 {
+pub ifru_addr: sockaddr,
+pub ifru_dstaddr: sockaddr,
+pub ifru_broadaddr: sockaddr,
+pub ifru_netmask: sockaddr,
+pub ifru_hwaddr: sockaddr,
+pub ifru_flags: crate::ctypes::c_short,
+pub ifru_ivalue: crate::ctypes::c_int,
+pub ifru_mtu: crate::ctypes::c_int,
+pub ifru_map: ifmap,
+pub ifru_slave: [crate::ctypes::c_char; 16usize],
+pub ifru_newname: [crate::ctypes::c_char; 16usize],
+pub ifru_data: *mut crate::ctypes::c_void,
+pub ifru_settings: if_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifconf__bindgen_ty_1 {
+pub ifcu_buf: *mut crate::ctypes::c_char,
+pub ifcu_req: *mut ifreq,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union nf_inet_addr {
+pub all: [__u32; 4usize],
+pub ip: __be32,
+pub ip6: [__be32; 4usize],
+pub in_: in_addr,
+pub in6: in6_addr,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_match__bindgen_ty_1 {
+pub user: xt_entry_match__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_match__bindgen_ty_1__bindgen_ty_2,
+pub match_size: __u16,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_target__bindgen_ty_1 {
+pub user: xt_entry_target__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_target__bindgen_ty_1__bindgen_ty_2,
+pub target_size: __u16,
+}
impl<Storage> __BindgenBitfieldUnit<Storage> {
#[inline]
pub const fn new(storage: Storage) -> Self {
@@ -1848,3 +2433,9 @@ tcpi_fastopen_client_fail as u64
__bindgen_bitfield_unit
}
}
+impl nf_inet_hooks {
+pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
+}
+impl nf_ip_hook_priorities {
+pub const NF_IP_PRI_LAST: nf_ip_hook_priorities = nf_ip_hook_priorities::NF_IP_PRI_CONNTRACK_CONFIRM;
+}
diff --git a/vendor/linux-raw-sys/src/riscv32/general.rs b/vendor/linux-raw-sys/src/riscv32/general.rs
index 3fad459d2..2384ac2ea 100644
--- a/vendor/linux-raw-sys/src/riscv32/general.rs
+++ b/vendor/linux-raw-sys/src/riscv32/general.rs
@@ -1601,6 +1601,19 @@ pub const POLLRDHUP: u32 = 8192;
pub const GRND_NONBLOCK: u32 = 1;
pub const GRND_RANDOM: u32 = 2;
pub const GRND_INSECURE: u32 = 4;
+pub const LINUX_REBOOT_MAGIC1: u32 = 4276215469;
+pub const LINUX_REBOOT_MAGIC2: u32 = 672274793;
+pub const LINUX_REBOOT_MAGIC2A: u32 = 85072278;
+pub const LINUX_REBOOT_MAGIC2B: u32 = 369367448;
+pub const LINUX_REBOOT_MAGIC2C: u32 = 537993216;
+pub const LINUX_REBOOT_CMD_RESTART: u32 = 19088743;
+pub const LINUX_REBOOT_CMD_HALT: u32 = 3454992675;
+pub const LINUX_REBOOT_CMD_CAD_ON: u32 = 2309737967;
+pub const LINUX_REBOOT_CMD_CAD_OFF: u32 = 0;
+pub const LINUX_REBOOT_CMD_POWER_OFF: u32 = 1126301404;
+pub const LINUX_REBOOT_CMD_RESTART2: u32 = 2712847316;
+pub const LINUX_REBOOT_CMD_SW_SUSPEND: u32 = 3489725666;
+pub const LINUX_REBOOT_CMD_KEXEC: u32 = 1163412803;
pub const ITIMER_REAL: u32 = 0;
pub const ITIMER_VIRTUAL: u32 = 1;
pub const ITIMER_PROF: u32 = 2;
diff --git a/vendor/linux-raw-sys/src/riscv32/net.rs b/vendor/linux-raw-sys/src/riscv32/net.rs
index cfadfa5a2..247e63f0a 100644
--- a/vendor/linux-raw-sys/src/riscv32/net.rs
+++ b/vendor/linux-raw-sys/src/riscv32/net.rs
@@ -476,6 +476,255 @@ pub __storage: __kernel_sockaddr_storage,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct sync_serial_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct te1_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+pub slot_map: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct raw_hdlc_proto {
+pub encoding: crate::ctypes::c_ushort,
+pub parity: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto {
+pub t391: crate::ctypes::c_uint,
+pub t392: crate::ctypes::c_uint,
+pub n391: crate::ctypes::c_uint,
+pub n392: crate::ctypes::c_uint,
+pub n393: crate::ctypes::c_uint,
+pub lmi: crate::ctypes::c_ushort,
+pub dce: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc {
+pub dlci: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc_info {
+pub dlci: crate::ctypes::c_uint,
+pub master: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct cisco_proto {
+pub interval: crate::ctypes::c_uint,
+pub timeout: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct x25_hdlc_proto {
+pub dce: crate::ctypes::c_ushort,
+pub modulo: crate::ctypes::c_uint,
+pub window: crate::ctypes::c_uint,
+pub t1: crate::ctypes::c_uint,
+pub t2: crate::ctypes::c_uint,
+pub n2: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ifmap {
+pub mem_start: crate::ctypes::c_ulong,
+pub mem_end: crate::ctypes::c_ulong,
+pub base_addr: crate::ctypes::c_ushort,
+pub irq: crate::ctypes::c_uchar,
+pub dma: crate::ctypes::c_uchar,
+pub port: crate::ctypes::c_uchar,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct if_settings {
+pub type_: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub ifs_ifsu: if_settings__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifreq {
+pub ifr_ifrn: ifreq__bindgen_ty_1,
+pub ifr_ifru: ifreq__bindgen_ty_2,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifconf {
+pub ifc_len: crate::ctypes::c_int,
+pub ifc_ifcu: ifconf__bindgen_ty_1,
+}
+#[repr(C)]
+pub struct xt_entry_match {
+pub u: xt_entry_match__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_1 {
+pub match_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_2 {
+pub match_size: __u16,
+pub match_: *mut xt_match,
+}
+#[repr(C)]
+pub struct xt_entry_target {
+pub u: xt_entry_target__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_1 {
+pub target_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_2 {
+pub target_size: __u16,
+pub target: *mut xt_target,
+}
+#[repr(C)]
+pub struct xt_standard_target {
+pub target: xt_entry_target,
+pub verdict: crate::ctypes::c_int,
+}
+#[repr(C)]
+pub struct xt_error_target {
+pub target: xt_entry_target,
+pub errorname: [crate::ctypes::c_char; 30usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_get_revision {
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _xt_align {
+pub u8_: __u8,
+pub u16_: __u16,
+pub u32_: __u32,
+pub u64_: __u64,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_counters {
+pub pcnt: __u64,
+pub bcnt: __u64,
+}
+#[repr(C)]
+#[derive(Debug)]
+pub struct xt_counters_info {
+pub name: [crate::ctypes::c_char; 32usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: __IncompleteArrayField<xt_counters>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_tcp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub option: __u8,
+pub flg_mask: __u8,
+pub flg_cmp: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_udp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ip6t_ip6 {
+pub src: in6_addr,
+pub dst: in6_addr,
+pub smsk: in6_addr,
+pub dmsk: in6_addr,
+pub iniface: [crate::ctypes::c_char; 16usize],
+pub outiface: [crate::ctypes::c_char; 16usize],
+pub iniface_mask: [crate::ctypes::c_uchar; 16usize],
+pub outiface_mask: [crate::ctypes::c_uchar; 16usize],
+pub proto: __u16,
+pub tos: __u8,
+pub flags: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+pub struct ip6t_entry {
+pub ipv6: ip6t_ip6,
+pub nfcache: crate::ctypes::c_uint,
+pub target_offset: __u16,
+pub next_offset: __u16,
+pub comefrom: crate::ctypes::c_uint,
+pub counters: xt_counters,
+pub elems: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+pub struct ip6t_standard {
+pub entry: ip6t_entry,
+pub target: xt_standard_target,
+}
+#[repr(C)]
+pub struct ip6t_error {
+pub entry: ip6t_entry,
+pub target: xt_error_target,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_icmp {
+pub type_: __u8,
+pub code: [__u8; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_getinfo {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+}
+#[repr(C)]
+pub struct ip6t_replace {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: *mut xt_counters,
+pub entries: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+pub struct ip6t_get_entries {
+pub name: [crate::ctypes::c_char; 32usize],
+pub size: crate::ctypes::c_uint,
+pub entrytable: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct linger {
pub l_onoff: crate::ctypes::c_int,
pub l_linger: crate::ctypes::c_int,
@@ -513,6 +762,16 @@ pub msg_len: crate::ctypes::c_uint,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct xt_match {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_target {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct iovec {
pub _address: u8,
}
@@ -927,6 +1186,135 @@ pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
pub const UNIX_PATH_MAX: u32 = 108;
+pub const IFNAMSIZ: u32 = 16;
+pub const IFALIASZ: u32 = 256;
+pub const ALTIFNAMSIZ: u32 = 128;
+pub const GENERIC_HDLC_VERSION: u32 = 4;
+pub const CLOCK_DEFAULT: u32 = 0;
+pub const CLOCK_EXT: u32 = 1;
+pub const CLOCK_INT: u32 = 2;
+pub const CLOCK_TXINT: u32 = 3;
+pub const CLOCK_TXFROMRX: u32 = 4;
+pub const ENCODING_DEFAULT: u32 = 0;
+pub const ENCODING_NRZ: u32 = 1;
+pub const ENCODING_NRZI: u32 = 2;
+pub const ENCODING_FM_MARK: u32 = 3;
+pub const ENCODING_FM_SPACE: u32 = 4;
+pub const ENCODING_MANCHESTER: u32 = 5;
+pub const PARITY_DEFAULT: u32 = 0;
+pub const PARITY_NONE: u32 = 1;
+pub const PARITY_CRC16_PR0: u32 = 2;
+pub const PARITY_CRC16_PR1: u32 = 3;
+pub const PARITY_CRC16_PR0_CCITT: u32 = 4;
+pub const PARITY_CRC16_PR1_CCITT: u32 = 5;
+pub const PARITY_CRC32_PR0_CCITT: u32 = 6;
+pub const PARITY_CRC32_PR1_CCITT: u32 = 7;
+pub const LMI_DEFAULT: u32 = 0;
+pub const LMI_NONE: u32 = 1;
+pub const LMI_ANSI: u32 = 2;
+pub const LMI_CCITT: u32 = 3;
+pub const LMI_CISCO: u32 = 4;
+pub const IF_GET_IFACE: u32 = 1;
+pub const IF_GET_PROTO: u32 = 2;
+pub const IF_IFACE_V35: u32 = 4096;
+pub const IF_IFACE_V24: u32 = 4097;
+pub const IF_IFACE_X21: u32 = 4098;
+pub const IF_IFACE_T1: u32 = 4099;
+pub const IF_IFACE_E1: u32 = 4100;
+pub const IF_IFACE_SYNC_SERIAL: u32 = 4101;
+pub const IF_IFACE_X21D: u32 = 4102;
+pub const IF_PROTO_HDLC: u32 = 8192;
+pub const IF_PROTO_PPP: u32 = 8193;
+pub const IF_PROTO_CISCO: u32 = 8194;
+pub const IF_PROTO_FR: u32 = 8195;
+pub const IF_PROTO_FR_ADD_PVC: u32 = 8196;
+pub const IF_PROTO_FR_DEL_PVC: u32 = 8197;
+pub const IF_PROTO_X25: u32 = 8198;
+pub const IF_PROTO_HDLC_ETH: u32 = 8199;
+pub const IF_PROTO_FR_ADD_ETH_PVC: u32 = 8200;
+pub const IF_PROTO_FR_DEL_ETH_PVC: u32 = 8201;
+pub const IF_PROTO_FR_PVC: u32 = 8202;
+pub const IF_PROTO_FR_ETH_PVC: u32 = 8203;
+pub const IF_PROTO_RAW: u32 = 8204;
+pub const IFHWADDRLEN: u32 = 6;
+pub const NF_DROP: u32 = 0;
+pub const NF_ACCEPT: u32 = 1;
+pub const NF_STOLEN: u32 = 2;
+pub const NF_QUEUE: u32 = 3;
+pub const NF_REPEAT: u32 = 4;
+pub const NF_STOP: u32 = 5;
+pub const NF_MAX_VERDICT: u32 = 5;
+pub const NF_VERDICT_MASK: u32 = 255;
+pub const NF_VERDICT_FLAG_QUEUE_BYPASS: u32 = 32768;
+pub const NF_VERDICT_QMASK: u32 = 4294901760;
+pub const NF_VERDICT_QBITS: u32 = 16;
+pub const NF_VERDICT_BITS: u32 = 16;
+pub const NF_IP6_PRE_ROUTING: u32 = 0;
+pub const NF_IP6_LOCAL_IN: u32 = 1;
+pub const NF_IP6_FORWARD: u32 = 2;
+pub const NF_IP6_LOCAL_OUT: u32 = 3;
+pub const NF_IP6_POST_ROUTING: u32 = 4;
+pub const NF_IP6_NUMHOOKS: u32 = 5;
+pub const XT_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const XT_EXTENSION_MAXNAMELEN: u32 = 29;
+pub const XT_TABLE_MAXNAMELEN: u32 = 32;
+pub const XT_CONTINUE: u32 = 4294967295;
+pub const XT_RETURN: i32 = -5;
+pub const XT_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const XT_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const XT_INV_PROTO: u32 = 64;
+pub const IP6T_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const IP6T_TABLE_MAXNAMELEN: u32 = 32;
+pub const IP6T_CONTINUE: u32 = 4294967295;
+pub const IP6T_RETURN: i32 = -5;
+pub const XT_TCP_INV_SRCPT: u32 = 1;
+pub const XT_TCP_INV_DSTPT: u32 = 2;
+pub const XT_TCP_INV_FLAGS: u32 = 4;
+pub const XT_TCP_INV_OPTION: u32 = 8;
+pub const XT_TCP_INV_MASK: u32 = 15;
+pub const XT_UDP_INV_SRCPT: u32 = 1;
+pub const XT_UDP_INV_DSTPT: u32 = 2;
+pub const XT_UDP_INV_MASK: u32 = 3;
+pub const IP6T_TCP_INV_SRCPT: u32 = 1;
+pub const IP6T_TCP_INV_DSTPT: u32 = 2;
+pub const IP6T_TCP_INV_FLAGS: u32 = 4;
+pub const IP6T_TCP_INV_OPTION: u32 = 8;
+pub const IP6T_TCP_INV_MASK: u32 = 15;
+pub const IP6T_UDP_INV_SRCPT: u32 = 1;
+pub const IP6T_UDP_INV_DSTPT: u32 = 2;
+pub const IP6T_UDP_INV_MASK: u32 = 3;
+pub const IP6T_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const IP6T_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const IP6T_F_PROTO: u32 = 1;
+pub const IP6T_F_TOS: u32 = 2;
+pub const IP6T_F_GOTO: u32 = 4;
+pub const IP6T_F_MASK: u32 = 7;
+pub const IP6T_INV_VIA_IN: u32 = 1;
+pub const IP6T_INV_VIA_OUT: u32 = 2;
+pub const IP6T_INV_TOS: u32 = 4;
+pub const IP6T_INV_SRCIP: u32 = 8;
+pub const IP6T_INV_DSTIP: u32 = 16;
+pub const IP6T_INV_FRAG: u32 = 32;
+pub const IP6T_INV_PROTO: u32 = 64;
+pub const IP6T_INV_MASK: u32 = 127;
+pub const IP6T_BASE_CTL: u32 = 64;
+pub const IP6T_SO_SET_REPLACE: u32 = 64;
+pub const IP6T_SO_SET_ADD_COUNTERS: u32 = 65;
+pub const IP6T_SO_SET_MAX: u32 = 65;
+pub const IP6T_SO_GET_INFO: u32 = 64;
+pub const IP6T_SO_GET_ENTRIES: u32 = 65;
+pub const IP6T_SO_GET_REVISION_MATCH: u32 = 68;
+pub const IP6T_SO_GET_REVISION_TARGET: u32 = 69;
+pub const IP6T_SO_GET_MAX: u32 = 69;
+pub const IP6T_SO_ORIGINAL_DST: u32 = 80;
+pub const IP6T_ICMP_INV: u32 = 1;
+pub const NF_IP_PRE_ROUTING: u32 = 0;
+pub const NF_IP_LOCAL_IN: u32 = 1;
+pub const NF_IP_FORWARD: u32 = 2;
+pub const NF_IP_LOCAL_OUT: u32 = 3;
+pub const NF_IP_POST_ROUTING: u32 = 4;
+pub const NF_IP_NUMHOOKS: u32 = 5;
+pub const SO_ORIGINAL_DST: u32 = 80;
pub const SHUT_RD: u32 = 0;
pub const SHUT_WR: u32 = 1;
pub const SHUT_RDWR: u32 = 2;
@@ -1155,6 +1543,25 @@ pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NO
pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
+pub const IF_OPER_UNKNOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UNKNOWN;
+pub const IF_OPER_NOTPRESENT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_NOTPRESENT;
+pub const IF_OPER_DOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DOWN;
+pub const IF_OPER_LOWERLAYERDOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_LOWERLAYERDOWN;
+pub const IF_OPER_TESTING: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_TESTING;
+pub const IF_OPER_DORMANT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DORMANT;
+pub const IF_OPER_UP: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UP;
+pub const IF_LINK_MODE_DEFAULT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DEFAULT;
+pub const IF_LINK_MODE_DORMANT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DORMANT;
+pub const IF_LINK_MODE_TESTING: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_TESTING;
+pub const NFPROTO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_UNSPEC;
+pub const NFPROTO_INET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_INET;
+pub const NFPROTO_IPV4: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV4;
+pub const NFPROTO_ARP: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_ARP;
+pub const NFPROTO_NETDEV: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NETDEV;
+pub const NFPROTO_BRIDGE: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_BRIDGE;
+pub const NFPROTO_IPV6: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV6;
+pub const NFPROTO_DECNET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_DECNET;
+pub const NFPROTO_NUMPROTO: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NUMPROTO;
#[repr(u32)]
#[non_exhaustive]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -1378,6 +1785,121 @@ TCP_NLA_EDT = 25,
TCP_NLA_TTL = 26,
TCP_NLA_REHASH = 27,
}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum net_device_flags {
+IFF_UP = 1,
+IFF_BROADCAST = 2,
+IFF_DEBUG = 4,
+IFF_LOOPBACK = 8,
+IFF_POINTOPOINT = 16,
+IFF_NOTRAILERS = 32,
+IFF_RUNNING = 64,
+IFF_NOARP = 128,
+IFF_PROMISC = 256,
+IFF_ALLMULTI = 512,
+IFF_MASTER = 1024,
+IFF_SLAVE = 2048,
+IFF_MULTICAST = 4096,
+IFF_PORTSEL = 8192,
+IFF_AUTOMEDIA = 16384,
+IFF_DYNAMIC = 32768,
+IFF_LOWER_UP = 65536,
+IFF_DORMANT = 131072,
+IFF_ECHO = 262144,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_7 {
+IF_OPER_UNKNOWN = 0,
+IF_OPER_NOTPRESENT = 1,
+IF_OPER_DOWN = 2,
+IF_OPER_LOWERLAYERDOWN = 3,
+IF_OPER_TESTING = 4,
+IF_OPER_DORMANT = 5,
+IF_OPER_UP = 6,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_8 {
+IF_LINK_MODE_DEFAULT = 0,
+IF_LINK_MODE_DORMANT = 1,
+IF_LINK_MODE_TESTING = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_inet_hooks {
+NF_INET_PRE_ROUTING = 0,
+NF_INET_LOCAL_IN = 1,
+NF_INET_FORWARD = 2,
+NF_INET_LOCAL_OUT = 3,
+NF_INET_POST_ROUTING = 4,
+NF_INET_NUMHOOKS = 5,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_dev_hooks {
+NF_NETDEV_INGRESS = 0,
+NF_NETDEV_EGRESS = 1,
+NF_NETDEV_NUMHOOKS = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_9 {
+NFPROTO_UNSPEC = 0,
+NFPROTO_INET = 1,
+NFPROTO_IPV4 = 2,
+NFPROTO_ARP = 3,
+NFPROTO_NETDEV = 5,
+NFPROTO_BRIDGE = 7,
+NFPROTO_IPV6 = 10,
+NFPROTO_DECNET = 12,
+NFPROTO_NUMPROTO = 13,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip6_hook_priorities {
+NF_IP6_PRI_FIRST = -2147483648,
+NF_IP6_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP6_PRI_RAW = -300,
+NF_IP6_PRI_SELINUX_FIRST = -225,
+NF_IP6_PRI_CONNTRACK = -200,
+NF_IP6_PRI_MANGLE = -150,
+NF_IP6_PRI_NAT_DST = -100,
+NF_IP6_PRI_FILTER = 0,
+NF_IP6_PRI_SECURITY = 50,
+NF_IP6_PRI_NAT_SRC = 100,
+NF_IP6_PRI_SELINUX_LAST = 225,
+NF_IP6_PRI_CONNTRACK_HELPER = 300,
+NF_IP6_PRI_LAST = 2147483647,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip_hook_priorities {
+NF_IP_PRI_FIRST = -2147483648,
+NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP_PRI_RAW = -300,
+NF_IP_PRI_SELINUX_FIRST = -225,
+NF_IP_PRI_CONNTRACK = -200,
+NF_IP_PRI_MANGLE = -150,
+NF_IP_PRI_NAT_DST = -100,
+NF_IP_PRI_FILTER = 0,
+NF_IP_PRI_SECURITY = 50,
+NF_IP_PRI_NAT_SRC = 100,
+NF_IP_PRI_SELINUX_LAST = 225,
+NF_IP_PRI_CONNTRACK_HELPER = 300,
+NF_IP_PRI_CONNTRACK_CONFIRM = 2147483647,
+}
#[repr(C)]
#[derive(Copy, Clone)]
pub union __kernel_sockaddr_storage__bindgen_ty_1 {
@@ -1409,6 +1931,69 @@ pub union tcp_word_hdr {
pub hdr: tcphdr,
pub words: [__be32; 5usize],
}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union if_settings__bindgen_ty_1 {
+pub raw_hdlc: *mut raw_hdlc_proto,
+pub cisco: *mut cisco_proto,
+pub fr: *mut fr_proto,
+pub fr_pvc: *mut fr_proto_pvc,
+pub fr_pvc_info: *mut fr_proto_pvc_info,
+pub x25: *mut x25_hdlc_proto,
+pub sync: *mut sync_serial_settings,
+pub te1: *mut te1_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_1 {
+pub ifrn_name: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_2 {
+pub ifru_addr: sockaddr,
+pub ifru_dstaddr: sockaddr,
+pub ifru_broadaddr: sockaddr,
+pub ifru_netmask: sockaddr,
+pub ifru_hwaddr: sockaddr,
+pub ifru_flags: crate::ctypes::c_short,
+pub ifru_ivalue: crate::ctypes::c_int,
+pub ifru_mtu: crate::ctypes::c_int,
+pub ifru_map: ifmap,
+pub ifru_slave: [crate::ctypes::c_char; 16usize],
+pub ifru_newname: [crate::ctypes::c_char; 16usize],
+pub ifru_data: *mut crate::ctypes::c_void,
+pub ifru_settings: if_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifconf__bindgen_ty_1 {
+pub ifcu_buf: *mut crate::ctypes::c_char,
+pub ifcu_req: *mut ifreq,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union nf_inet_addr {
+pub all: [__u32; 4usize],
+pub ip: __be32,
+pub ip6: [__be32; 4usize],
+pub in_: in_addr,
+pub in6: in6_addr,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_match__bindgen_ty_1 {
+pub user: xt_entry_match__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_match__bindgen_ty_1__bindgen_ty_2,
+pub match_size: __u16,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_target__bindgen_ty_1 {
+pub user: xt_entry_target__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_target__bindgen_ty_1__bindgen_ty_2,
+pub target_size: __u16,
+}
impl<Storage> __BindgenBitfieldUnit<Storage> {
#[inline]
pub const fn new(storage: Storage) -> Self {
@@ -1834,3 +2419,9 @@ tcpi_fastopen_client_fail as u64
__bindgen_bitfield_unit
}
}
+impl nf_inet_hooks {
+pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
+}
+impl nf_ip_hook_priorities {
+pub const NF_IP_PRI_LAST: nf_ip_hook_priorities = nf_ip_hook_priorities::NF_IP_PRI_CONNTRACK_CONFIRM;
+}
diff --git a/vendor/linux-raw-sys/src/riscv64/general.rs b/vendor/linux-raw-sys/src/riscv64/general.rs
index 787596720..ca01dc802 100644
--- a/vendor/linux-raw-sys/src/riscv64/general.rs
+++ b/vendor/linux-raw-sys/src/riscv64/general.rs
@@ -1574,6 +1574,19 @@ pub const POLLRDHUP: u32 = 8192;
pub const GRND_NONBLOCK: u32 = 1;
pub const GRND_RANDOM: u32 = 2;
pub const GRND_INSECURE: u32 = 4;
+pub const LINUX_REBOOT_MAGIC1: u32 = 4276215469;
+pub const LINUX_REBOOT_MAGIC2: u32 = 672274793;
+pub const LINUX_REBOOT_MAGIC2A: u32 = 85072278;
+pub const LINUX_REBOOT_MAGIC2B: u32 = 369367448;
+pub const LINUX_REBOOT_MAGIC2C: u32 = 537993216;
+pub const LINUX_REBOOT_CMD_RESTART: u32 = 19088743;
+pub const LINUX_REBOOT_CMD_HALT: u32 = 3454992675;
+pub const LINUX_REBOOT_CMD_CAD_ON: u32 = 2309737967;
+pub const LINUX_REBOOT_CMD_CAD_OFF: u32 = 0;
+pub const LINUX_REBOOT_CMD_POWER_OFF: u32 = 1126301404;
+pub const LINUX_REBOOT_CMD_RESTART2: u32 = 2712847316;
+pub const LINUX_REBOOT_CMD_SW_SUSPEND: u32 = 3489725666;
+pub const LINUX_REBOOT_CMD_KEXEC: u32 = 1163412803;
pub const ITIMER_REAL: u32 = 0;
pub const ITIMER_VIRTUAL: u32 = 1;
pub const ITIMER_PROF: u32 = 2;
diff --git a/vendor/linux-raw-sys/src/riscv64/net.rs b/vendor/linux-raw-sys/src/riscv64/net.rs
index 77630ebf2..2e3eeacad 100644
--- a/vendor/linux-raw-sys/src/riscv64/net.rs
+++ b/vendor/linux-raw-sys/src/riscv64/net.rs
@@ -476,6 +476,255 @@ pub __storage: __kernel_sockaddr_storage,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct sync_serial_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct te1_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+pub slot_map: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct raw_hdlc_proto {
+pub encoding: crate::ctypes::c_ushort,
+pub parity: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto {
+pub t391: crate::ctypes::c_uint,
+pub t392: crate::ctypes::c_uint,
+pub n391: crate::ctypes::c_uint,
+pub n392: crate::ctypes::c_uint,
+pub n393: crate::ctypes::c_uint,
+pub lmi: crate::ctypes::c_ushort,
+pub dce: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc {
+pub dlci: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc_info {
+pub dlci: crate::ctypes::c_uint,
+pub master: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct cisco_proto {
+pub interval: crate::ctypes::c_uint,
+pub timeout: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct x25_hdlc_proto {
+pub dce: crate::ctypes::c_ushort,
+pub modulo: crate::ctypes::c_uint,
+pub window: crate::ctypes::c_uint,
+pub t1: crate::ctypes::c_uint,
+pub t2: crate::ctypes::c_uint,
+pub n2: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ifmap {
+pub mem_start: crate::ctypes::c_ulong,
+pub mem_end: crate::ctypes::c_ulong,
+pub base_addr: crate::ctypes::c_ushort,
+pub irq: crate::ctypes::c_uchar,
+pub dma: crate::ctypes::c_uchar,
+pub port: crate::ctypes::c_uchar,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct if_settings {
+pub type_: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub ifs_ifsu: if_settings__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifreq {
+pub ifr_ifrn: ifreq__bindgen_ty_1,
+pub ifr_ifru: ifreq__bindgen_ty_2,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifconf {
+pub ifc_len: crate::ctypes::c_int,
+pub ifc_ifcu: ifconf__bindgen_ty_1,
+}
+#[repr(C)]
+pub struct xt_entry_match {
+pub u: xt_entry_match__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_1 {
+pub match_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_2 {
+pub match_size: __u16,
+pub match_: *mut xt_match,
+}
+#[repr(C)]
+pub struct xt_entry_target {
+pub u: xt_entry_target__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_1 {
+pub target_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_2 {
+pub target_size: __u16,
+pub target: *mut xt_target,
+}
+#[repr(C)]
+pub struct xt_standard_target {
+pub target: xt_entry_target,
+pub verdict: crate::ctypes::c_int,
+}
+#[repr(C)]
+pub struct xt_error_target {
+pub target: xt_entry_target,
+pub errorname: [crate::ctypes::c_char; 30usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_get_revision {
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _xt_align {
+pub u8_: __u8,
+pub u16_: __u16,
+pub u32_: __u32,
+pub u64_: __u64,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_counters {
+pub pcnt: __u64,
+pub bcnt: __u64,
+}
+#[repr(C)]
+#[derive(Debug)]
+pub struct xt_counters_info {
+pub name: [crate::ctypes::c_char; 32usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: __IncompleteArrayField<xt_counters>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_tcp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub option: __u8,
+pub flg_mask: __u8,
+pub flg_cmp: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_udp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ip6t_ip6 {
+pub src: in6_addr,
+pub dst: in6_addr,
+pub smsk: in6_addr,
+pub dmsk: in6_addr,
+pub iniface: [crate::ctypes::c_char; 16usize],
+pub outiface: [crate::ctypes::c_char; 16usize],
+pub iniface_mask: [crate::ctypes::c_uchar; 16usize],
+pub outiface_mask: [crate::ctypes::c_uchar; 16usize],
+pub proto: __u16,
+pub tos: __u8,
+pub flags: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+pub struct ip6t_entry {
+pub ipv6: ip6t_ip6,
+pub nfcache: crate::ctypes::c_uint,
+pub target_offset: __u16,
+pub next_offset: __u16,
+pub comefrom: crate::ctypes::c_uint,
+pub counters: xt_counters,
+pub elems: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+pub struct ip6t_standard {
+pub entry: ip6t_entry,
+pub target: xt_standard_target,
+}
+#[repr(C)]
+pub struct ip6t_error {
+pub entry: ip6t_entry,
+pub target: xt_error_target,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_icmp {
+pub type_: __u8,
+pub code: [__u8; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_getinfo {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+}
+#[repr(C)]
+pub struct ip6t_replace {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: *mut xt_counters,
+pub entries: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+pub struct ip6t_get_entries {
+pub name: [crate::ctypes::c_char; 32usize],
+pub size: crate::ctypes::c_uint,
+pub entrytable: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct linger {
pub l_onoff: crate::ctypes::c_int,
pub l_linger: crate::ctypes::c_int,
@@ -513,6 +762,16 @@ pub msg_len: crate::ctypes::c_uint,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct xt_match {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_target {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct iovec {
pub _address: u8,
}
@@ -935,6 +1194,135 @@ pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
pub const UNIX_PATH_MAX: u32 = 108;
+pub const IFNAMSIZ: u32 = 16;
+pub const IFALIASZ: u32 = 256;
+pub const ALTIFNAMSIZ: u32 = 128;
+pub const GENERIC_HDLC_VERSION: u32 = 4;
+pub const CLOCK_DEFAULT: u32 = 0;
+pub const CLOCK_EXT: u32 = 1;
+pub const CLOCK_INT: u32 = 2;
+pub const CLOCK_TXINT: u32 = 3;
+pub const CLOCK_TXFROMRX: u32 = 4;
+pub const ENCODING_DEFAULT: u32 = 0;
+pub const ENCODING_NRZ: u32 = 1;
+pub const ENCODING_NRZI: u32 = 2;
+pub const ENCODING_FM_MARK: u32 = 3;
+pub const ENCODING_FM_SPACE: u32 = 4;
+pub const ENCODING_MANCHESTER: u32 = 5;
+pub const PARITY_DEFAULT: u32 = 0;
+pub const PARITY_NONE: u32 = 1;
+pub const PARITY_CRC16_PR0: u32 = 2;
+pub const PARITY_CRC16_PR1: u32 = 3;
+pub const PARITY_CRC16_PR0_CCITT: u32 = 4;
+pub const PARITY_CRC16_PR1_CCITT: u32 = 5;
+pub const PARITY_CRC32_PR0_CCITT: u32 = 6;
+pub const PARITY_CRC32_PR1_CCITT: u32 = 7;
+pub const LMI_DEFAULT: u32 = 0;
+pub const LMI_NONE: u32 = 1;
+pub const LMI_ANSI: u32 = 2;
+pub const LMI_CCITT: u32 = 3;
+pub const LMI_CISCO: u32 = 4;
+pub const IF_GET_IFACE: u32 = 1;
+pub const IF_GET_PROTO: u32 = 2;
+pub const IF_IFACE_V35: u32 = 4096;
+pub const IF_IFACE_V24: u32 = 4097;
+pub const IF_IFACE_X21: u32 = 4098;
+pub const IF_IFACE_T1: u32 = 4099;
+pub const IF_IFACE_E1: u32 = 4100;
+pub const IF_IFACE_SYNC_SERIAL: u32 = 4101;
+pub const IF_IFACE_X21D: u32 = 4102;
+pub const IF_PROTO_HDLC: u32 = 8192;
+pub const IF_PROTO_PPP: u32 = 8193;
+pub const IF_PROTO_CISCO: u32 = 8194;
+pub const IF_PROTO_FR: u32 = 8195;
+pub const IF_PROTO_FR_ADD_PVC: u32 = 8196;
+pub const IF_PROTO_FR_DEL_PVC: u32 = 8197;
+pub const IF_PROTO_X25: u32 = 8198;
+pub const IF_PROTO_HDLC_ETH: u32 = 8199;
+pub const IF_PROTO_FR_ADD_ETH_PVC: u32 = 8200;
+pub const IF_PROTO_FR_DEL_ETH_PVC: u32 = 8201;
+pub const IF_PROTO_FR_PVC: u32 = 8202;
+pub const IF_PROTO_FR_ETH_PVC: u32 = 8203;
+pub const IF_PROTO_RAW: u32 = 8204;
+pub const IFHWADDRLEN: u32 = 6;
+pub const NF_DROP: u32 = 0;
+pub const NF_ACCEPT: u32 = 1;
+pub const NF_STOLEN: u32 = 2;
+pub const NF_QUEUE: u32 = 3;
+pub const NF_REPEAT: u32 = 4;
+pub const NF_STOP: u32 = 5;
+pub const NF_MAX_VERDICT: u32 = 5;
+pub const NF_VERDICT_MASK: u32 = 255;
+pub const NF_VERDICT_FLAG_QUEUE_BYPASS: u32 = 32768;
+pub const NF_VERDICT_QMASK: u32 = 4294901760;
+pub const NF_VERDICT_QBITS: u32 = 16;
+pub const NF_VERDICT_BITS: u32 = 16;
+pub const NF_IP6_PRE_ROUTING: u32 = 0;
+pub const NF_IP6_LOCAL_IN: u32 = 1;
+pub const NF_IP6_FORWARD: u32 = 2;
+pub const NF_IP6_LOCAL_OUT: u32 = 3;
+pub const NF_IP6_POST_ROUTING: u32 = 4;
+pub const NF_IP6_NUMHOOKS: u32 = 5;
+pub const XT_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const XT_EXTENSION_MAXNAMELEN: u32 = 29;
+pub const XT_TABLE_MAXNAMELEN: u32 = 32;
+pub const XT_CONTINUE: u32 = 4294967295;
+pub const XT_RETURN: i32 = -5;
+pub const XT_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const XT_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const XT_INV_PROTO: u32 = 64;
+pub const IP6T_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const IP6T_TABLE_MAXNAMELEN: u32 = 32;
+pub const IP6T_CONTINUE: u32 = 4294967295;
+pub const IP6T_RETURN: i32 = -5;
+pub const XT_TCP_INV_SRCPT: u32 = 1;
+pub const XT_TCP_INV_DSTPT: u32 = 2;
+pub const XT_TCP_INV_FLAGS: u32 = 4;
+pub const XT_TCP_INV_OPTION: u32 = 8;
+pub const XT_TCP_INV_MASK: u32 = 15;
+pub const XT_UDP_INV_SRCPT: u32 = 1;
+pub const XT_UDP_INV_DSTPT: u32 = 2;
+pub const XT_UDP_INV_MASK: u32 = 3;
+pub const IP6T_TCP_INV_SRCPT: u32 = 1;
+pub const IP6T_TCP_INV_DSTPT: u32 = 2;
+pub const IP6T_TCP_INV_FLAGS: u32 = 4;
+pub const IP6T_TCP_INV_OPTION: u32 = 8;
+pub const IP6T_TCP_INV_MASK: u32 = 15;
+pub const IP6T_UDP_INV_SRCPT: u32 = 1;
+pub const IP6T_UDP_INV_DSTPT: u32 = 2;
+pub const IP6T_UDP_INV_MASK: u32 = 3;
+pub const IP6T_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const IP6T_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const IP6T_F_PROTO: u32 = 1;
+pub const IP6T_F_TOS: u32 = 2;
+pub const IP6T_F_GOTO: u32 = 4;
+pub const IP6T_F_MASK: u32 = 7;
+pub const IP6T_INV_VIA_IN: u32 = 1;
+pub const IP6T_INV_VIA_OUT: u32 = 2;
+pub const IP6T_INV_TOS: u32 = 4;
+pub const IP6T_INV_SRCIP: u32 = 8;
+pub const IP6T_INV_DSTIP: u32 = 16;
+pub const IP6T_INV_FRAG: u32 = 32;
+pub const IP6T_INV_PROTO: u32 = 64;
+pub const IP6T_INV_MASK: u32 = 127;
+pub const IP6T_BASE_CTL: u32 = 64;
+pub const IP6T_SO_SET_REPLACE: u32 = 64;
+pub const IP6T_SO_SET_ADD_COUNTERS: u32 = 65;
+pub const IP6T_SO_SET_MAX: u32 = 65;
+pub const IP6T_SO_GET_INFO: u32 = 64;
+pub const IP6T_SO_GET_ENTRIES: u32 = 65;
+pub const IP6T_SO_GET_REVISION_MATCH: u32 = 68;
+pub const IP6T_SO_GET_REVISION_TARGET: u32 = 69;
+pub const IP6T_SO_GET_MAX: u32 = 69;
+pub const IP6T_SO_ORIGINAL_DST: u32 = 80;
+pub const IP6T_ICMP_INV: u32 = 1;
+pub const NF_IP_PRE_ROUTING: u32 = 0;
+pub const NF_IP_LOCAL_IN: u32 = 1;
+pub const NF_IP_FORWARD: u32 = 2;
+pub const NF_IP_LOCAL_OUT: u32 = 3;
+pub const NF_IP_POST_ROUTING: u32 = 4;
+pub const NF_IP_NUMHOOKS: u32 = 5;
+pub const SO_ORIGINAL_DST: u32 = 80;
pub const SHUT_RD: u32 = 0;
pub const SHUT_WR: u32 = 1;
pub const SHUT_RDWR: u32 = 2;
@@ -1163,6 +1551,25 @@ pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NO
pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
+pub const IF_OPER_UNKNOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UNKNOWN;
+pub const IF_OPER_NOTPRESENT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_NOTPRESENT;
+pub const IF_OPER_DOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DOWN;
+pub const IF_OPER_LOWERLAYERDOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_LOWERLAYERDOWN;
+pub const IF_OPER_TESTING: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_TESTING;
+pub const IF_OPER_DORMANT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DORMANT;
+pub const IF_OPER_UP: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UP;
+pub const IF_LINK_MODE_DEFAULT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DEFAULT;
+pub const IF_LINK_MODE_DORMANT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DORMANT;
+pub const IF_LINK_MODE_TESTING: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_TESTING;
+pub const NFPROTO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_UNSPEC;
+pub const NFPROTO_INET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_INET;
+pub const NFPROTO_IPV4: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV4;
+pub const NFPROTO_ARP: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_ARP;
+pub const NFPROTO_NETDEV: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NETDEV;
+pub const NFPROTO_BRIDGE: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_BRIDGE;
+pub const NFPROTO_IPV6: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV6;
+pub const NFPROTO_DECNET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_DECNET;
+pub const NFPROTO_NUMPROTO: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NUMPROTO;
#[repr(u32)]
#[non_exhaustive]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -1386,6 +1793,121 @@ TCP_NLA_EDT = 25,
TCP_NLA_TTL = 26,
TCP_NLA_REHASH = 27,
}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum net_device_flags {
+IFF_UP = 1,
+IFF_BROADCAST = 2,
+IFF_DEBUG = 4,
+IFF_LOOPBACK = 8,
+IFF_POINTOPOINT = 16,
+IFF_NOTRAILERS = 32,
+IFF_RUNNING = 64,
+IFF_NOARP = 128,
+IFF_PROMISC = 256,
+IFF_ALLMULTI = 512,
+IFF_MASTER = 1024,
+IFF_SLAVE = 2048,
+IFF_MULTICAST = 4096,
+IFF_PORTSEL = 8192,
+IFF_AUTOMEDIA = 16384,
+IFF_DYNAMIC = 32768,
+IFF_LOWER_UP = 65536,
+IFF_DORMANT = 131072,
+IFF_ECHO = 262144,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_7 {
+IF_OPER_UNKNOWN = 0,
+IF_OPER_NOTPRESENT = 1,
+IF_OPER_DOWN = 2,
+IF_OPER_LOWERLAYERDOWN = 3,
+IF_OPER_TESTING = 4,
+IF_OPER_DORMANT = 5,
+IF_OPER_UP = 6,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_8 {
+IF_LINK_MODE_DEFAULT = 0,
+IF_LINK_MODE_DORMANT = 1,
+IF_LINK_MODE_TESTING = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_inet_hooks {
+NF_INET_PRE_ROUTING = 0,
+NF_INET_LOCAL_IN = 1,
+NF_INET_FORWARD = 2,
+NF_INET_LOCAL_OUT = 3,
+NF_INET_POST_ROUTING = 4,
+NF_INET_NUMHOOKS = 5,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_dev_hooks {
+NF_NETDEV_INGRESS = 0,
+NF_NETDEV_EGRESS = 1,
+NF_NETDEV_NUMHOOKS = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_9 {
+NFPROTO_UNSPEC = 0,
+NFPROTO_INET = 1,
+NFPROTO_IPV4 = 2,
+NFPROTO_ARP = 3,
+NFPROTO_NETDEV = 5,
+NFPROTO_BRIDGE = 7,
+NFPROTO_IPV6 = 10,
+NFPROTO_DECNET = 12,
+NFPROTO_NUMPROTO = 13,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip6_hook_priorities {
+NF_IP6_PRI_FIRST = -2147483648,
+NF_IP6_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP6_PRI_RAW = -300,
+NF_IP6_PRI_SELINUX_FIRST = -225,
+NF_IP6_PRI_CONNTRACK = -200,
+NF_IP6_PRI_MANGLE = -150,
+NF_IP6_PRI_NAT_DST = -100,
+NF_IP6_PRI_FILTER = 0,
+NF_IP6_PRI_SECURITY = 50,
+NF_IP6_PRI_NAT_SRC = 100,
+NF_IP6_PRI_SELINUX_LAST = 225,
+NF_IP6_PRI_CONNTRACK_HELPER = 300,
+NF_IP6_PRI_LAST = 2147483647,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip_hook_priorities {
+NF_IP_PRI_FIRST = -2147483648,
+NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP_PRI_RAW = -300,
+NF_IP_PRI_SELINUX_FIRST = -225,
+NF_IP_PRI_CONNTRACK = -200,
+NF_IP_PRI_MANGLE = -150,
+NF_IP_PRI_NAT_DST = -100,
+NF_IP_PRI_FILTER = 0,
+NF_IP_PRI_SECURITY = 50,
+NF_IP_PRI_NAT_SRC = 100,
+NF_IP_PRI_SELINUX_LAST = 225,
+NF_IP_PRI_CONNTRACK_HELPER = 300,
+NF_IP_PRI_CONNTRACK_CONFIRM = 2147483647,
+}
#[repr(C)]
#[derive(Copy, Clone)]
pub union __kernel_sockaddr_storage__bindgen_ty_1 {
@@ -1417,6 +1939,69 @@ pub union tcp_word_hdr {
pub hdr: tcphdr,
pub words: [__be32; 5usize],
}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union if_settings__bindgen_ty_1 {
+pub raw_hdlc: *mut raw_hdlc_proto,
+pub cisco: *mut cisco_proto,
+pub fr: *mut fr_proto,
+pub fr_pvc: *mut fr_proto_pvc,
+pub fr_pvc_info: *mut fr_proto_pvc_info,
+pub x25: *mut x25_hdlc_proto,
+pub sync: *mut sync_serial_settings,
+pub te1: *mut te1_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_1 {
+pub ifrn_name: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_2 {
+pub ifru_addr: sockaddr,
+pub ifru_dstaddr: sockaddr,
+pub ifru_broadaddr: sockaddr,
+pub ifru_netmask: sockaddr,
+pub ifru_hwaddr: sockaddr,
+pub ifru_flags: crate::ctypes::c_short,
+pub ifru_ivalue: crate::ctypes::c_int,
+pub ifru_mtu: crate::ctypes::c_int,
+pub ifru_map: ifmap,
+pub ifru_slave: [crate::ctypes::c_char; 16usize],
+pub ifru_newname: [crate::ctypes::c_char; 16usize],
+pub ifru_data: *mut crate::ctypes::c_void,
+pub ifru_settings: if_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifconf__bindgen_ty_1 {
+pub ifcu_buf: *mut crate::ctypes::c_char,
+pub ifcu_req: *mut ifreq,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union nf_inet_addr {
+pub all: [__u32; 4usize],
+pub ip: __be32,
+pub ip6: [__be32; 4usize],
+pub in_: in_addr,
+pub in6: in6_addr,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_match__bindgen_ty_1 {
+pub user: xt_entry_match__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_match__bindgen_ty_1__bindgen_ty_2,
+pub match_size: __u16,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_target__bindgen_ty_1 {
+pub user: xt_entry_target__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_target__bindgen_ty_1__bindgen_ty_2,
+pub target_size: __u16,
+}
impl<Storage> __BindgenBitfieldUnit<Storage> {
#[inline]
pub const fn new(storage: Storage) -> Self {
@@ -1842,3 +2427,9 @@ tcpi_fastopen_client_fail as u64
__bindgen_bitfield_unit
}
}
+impl nf_inet_hooks {
+pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
+}
+impl nf_ip_hook_priorities {
+pub const NF_IP_PRI_LAST: nf_ip_hook_priorities = nf_ip_hook_priorities::NF_IP_PRI_CONNTRACK_CONFIRM;
+}
diff --git a/vendor/linux-raw-sys/src/s390x/general.rs b/vendor/linux-raw-sys/src/s390x/general.rs
index c36ca8fd2..b24f79221 100644
--- a/vendor/linux-raw-sys/src/s390x/general.rs
+++ b/vendor/linux-raw-sys/src/s390x/general.rs
@@ -1565,6 +1565,19 @@ pub const POLLRDHUP: u32 = 8192;
pub const GRND_NONBLOCK: u32 = 1;
pub const GRND_RANDOM: u32 = 2;
pub const GRND_INSECURE: u32 = 4;
+pub const LINUX_REBOOT_MAGIC1: u32 = 4276215469;
+pub const LINUX_REBOOT_MAGIC2: u32 = 672274793;
+pub const LINUX_REBOOT_MAGIC2A: u32 = 85072278;
+pub const LINUX_REBOOT_MAGIC2B: u32 = 369367448;
+pub const LINUX_REBOOT_MAGIC2C: u32 = 537993216;
+pub const LINUX_REBOOT_CMD_RESTART: u32 = 19088743;
+pub const LINUX_REBOOT_CMD_HALT: u32 = 3454992675;
+pub const LINUX_REBOOT_CMD_CAD_ON: u32 = 2309737967;
+pub const LINUX_REBOOT_CMD_CAD_OFF: u32 = 0;
+pub const LINUX_REBOOT_CMD_POWER_OFF: u32 = 1126301404;
+pub const LINUX_REBOOT_CMD_RESTART2: u32 = 2712847316;
+pub const LINUX_REBOOT_CMD_SW_SUSPEND: u32 = 3489725666;
+pub const LINUX_REBOOT_CMD_KEXEC: u32 = 1163412803;
pub const ITIMER_REAL: u32 = 0;
pub const ITIMER_VIRTUAL: u32 = 1;
pub const ITIMER_PROF: u32 = 2;
diff --git a/vendor/linux-raw-sys/src/s390x/net.rs b/vendor/linux-raw-sys/src/s390x/net.rs
index 035c9d0c3..ec6427f79 100644
--- a/vendor/linux-raw-sys/src/s390x/net.rs
+++ b/vendor/linux-raw-sys/src/s390x/net.rs
@@ -490,6 +490,255 @@ pub __storage: __kernel_sockaddr_storage,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct sync_serial_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct te1_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+pub slot_map: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct raw_hdlc_proto {
+pub encoding: crate::ctypes::c_ushort,
+pub parity: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto {
+pub t391: crate::ctypes::c_uint,
+pub t392: crate::ctypes::c_uint,
+pub n391: crate::ctypes::c_uint,
+pub n392: crate::ctypes::c_uint,
+pub n393: crate::ctypes::c_uint,
+pub lmi: crate::ctypes::c_ushort,
+pub dce: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc {
+pub dlci: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc_info {
+pub dlci: crate::ctypes::c_uint,
+pub master: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct cisco_proto {
+pub interval: crate::ctypes::c_uint,
+pub timeout: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct x25_hdlc_proto {
+pub dce: crate::ctypes::c_ushort,
+pub modulo: crate::ctypes::c_uint,
+pub window: crate::ctypes::c_uint,
+pub t1: crate::ctypes::c_uint,
+pub t2: crate::ctypes::c_uint,
+pub n2: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ifmap {
+pub mem_start: crate::ctypes::c_ulong,
+pub mem_end: crate::ctypes::c_ulong,
+pub base_addr: crate::ctypes::c_ushort,
+pub irq: crate::ctypes::c_uchar,
+pub dma: crate::ctypes::c_uchar,
+pub port: crate::ctypes::c_uchar,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct if_settings {
+pub type_: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub ifs_ifsu: if_settings__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifreq {
+pub ifr_ifrn: ifreq__bindgen_ty_1,
+pub ifr_ifru: ifreq__bindgen_ty_2,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifconf {
+pub ifc_len: crate::ctypes::c_int,
+pub ifc_ifcu: ifconf__bindgen_ty_1,
+}
+#[repr(C)]
+pub struct xt_entry_match {
+pub u: xt_entry_match__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_1 {
+pub match_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_2 {
+pub match_size: __u16,
+pub match_: *mut xt_match,
+}
+#[repr(C)]
+pub struct xt_entry_target {
+pub u: xt_entry_target__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_1 {
+pub target_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_2 {
+pub target_size: __u16,
+pub target: *mut xt_target,
+}
+#[repr(C)]
+pub struct xt_standard_target {
+pub target: xt_entry_target,
+pub verdict: crate::ctypes::c_int,
+}
+#[repr(C)]
+pub struct xt_error_target {
+pub target: xt_entry_target,
+pub errorname: [crate::ctypes::c_char; 30usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_get_revision {
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _xt_align {
+pub u8_: __u8,
+pub u16_: __u16,
+pub u32_: __u32,
+pub u64_: __u64,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_counters {
+pub pcnt: __u64,
+pub bcnt: __u64,
+}
+#[repr(C)]
+#[derive(Debug)]
+pub struct xt_counters_info {
+pub name: [crate::ctypes::c_char; 32usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: __IncompleteArrayField<xt_counters>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_tcp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub option: __u8,
+pub flg_mask: __u8,
+pub flg_cmp: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_udp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ip6t_ip6 {
+pub src: in6_addr,
+pub dst: in6_addr,
+pub smsk: in6_addr,
+pub dmsk: in6_addr,
+pub iniface: [crate::ctypes::c_char; 16usize],
+pub outiface: [crate::ctypes::c_char; 16usize],
+pub iniface_mask: [crate::ctypes::c_uchar; 16usize],
+pub outiface_mask: [crate::ctypes::c_uchar; 16usize],
+pub proto: __u16,
+pub tos: __u8,
+pub flags: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+pub struct ip6t_entry {
+pub ipv6: ip6t_ip6,
+pub nfcache: crate::ctypes::c_uint,
+pub target_offset: __u16,
+pub next_offset: __u16,
+pub comefrom: crate::ctypes::c_uint,
+pub counters: xt_counters,
+pub elems: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+pub struct ip6t_standard {
+pub entry: ip6t_entry,
+pub target: xt_standard_target,
+}
+#[repr(C)]
+pub struct ip6t_error {
+pub entry: ip6t_entry,
+pub target: xt_error_target,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_icmp {
+pub type_: __u8,
+pub code: [__u8; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_getinfo {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+}
+#[repr(C)]
+pub struct ip6t_replace {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: *mut xt_counters,
+pub entries: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+pub struct ip6t_get_entries {
+pub name: [crate::ctypes::c_char; 32usize],
+pub size: crate::ctypes::c_uint,
+pub entrytable: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct linger {
pub l_onoff: crate::ctypes::c_int,
pub l_linger: crate::ctypes::c_int,
@@ -527,6 +776,16 @@ pub msg_len: crate::ctypes::c_uint,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct xt_match {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_target {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct iovec {
pub _address: u8,
}
@@ -949,6 +1208,135 @@ pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
pub const UNIX_PATH_MAX: u32 = 108;
+pub const IFNAMSIZ: u32 = 16;
+pub const IFALIASZ: u32 = 256;
+pub const ALTIFNAMSIZ: u32 = 128;
+pub const GENERIC_HDLC_VERSION: u32 = 4;
+pub const CLOCK_DEFAULT: u32 = 0;
+pub const CLOCK_EXT: u32 = 1;
+pub const CLOCK_INT: u32 = 2;
+pub const CLOCK_TXINT: u32 = 3;
+pub const CLOCK_TXFROMRX: u32 = 4;
+pub const ENCODING_DEFAULT: u32 = 0;
+pub const ENCODING_NRZ: u32 = 1;
+pub const ENCODING_NRZI: u32 = 2;
+pub const ENCODING_FM_MARK: u32 = 3;
+pub const ENCODING_FM_SPACE: u32 = 4;
+pub const ENCODING_MANCHESTER: u32 = 5;
+pub const PARITY_DEFAULT: u32 = 0;
+pub const PARITY_NONE: u32 = 1;
+pub const PARITY_CRC16_PR0: u32 = 2;
+pub const PARITY_CRC16_PR1: u32 = 3;
+pub const PARITY_CRC16_PR0_CCITT: u32 = 4;
+pub const PARITY_CRC16_PR1_CCITT: u32 = 5;
+pub const PARITY_CRC32_PR0_CCITT: u32 = 6;
+pub const PARITY_CRC32_PR1_CCITT: u32 = 7;
+pub const LMI_DEFAULT: u32 = 0;
+pub const LMI_NONE: u32 = 1;
+pub const LMI_ANSI: u32 = 2;
+pub const LMI_CCITT: u32 = 3;
+pub const LMI_CISCO: u32 = 4;
+pub const IF_GET_IFACE: u32 = 1;
+pub const IF_GET_PROTO: u32 = 2;
+pub const IF_IFACE_V35: u32 = 4096;
+pub const IF_IFACE_V24: u32 = 4097;
+pub const IF_IFACE_X21: u32 = 4098;
+pub const IF_IFACE_T1: u32 = 4099;
+pub const IF_IFACE_E1: u32 = 4100;
+pub const IF_IFACE_SYNC_SERIAL: u32 = 4101;
+pub const IF_IFACE_X21D: u32 = 4102;
+pub const IF_PROTO_HDLC: u32 = 8192;
+pub const IF_PROTO_PPP: u32 = 8193;
+pub const IF_PROTO_CISCO: u32 = 8194;
+pub const IF_PROTO_FR: u32 = 8195;
+pub const IF_PROTO_FR_ADD_PVC: u32 = 8196;
+pub const IF_PROTO_FR_DEL_PVC: u32 = 8197;
+pub const IF_PROTO_X25: u32 = 8198;
+pub const IF_PROTO_HDLC_ETH: u32 = 8199;
+pub const IF_PROTO_FR_ADD_ETH_PVC: u32 = 8200;
+pub const IF_PROTO_FR_DEL_ETH_PVC: u32 = 8201;
+pub const IF_PROTO_FR_PVC: u32 = 8202;
+pub const IF_PROTO_FR_ETH_PVC: u32 = 8203;
+pub const IF_PROTO_RAW: u32 = 8204;
+pub const IFHWADDRLEN: u32 = 6;
+pub const NF_DROP: u32 = 0;
+pub const NF_ACCEPT: u32 = 1;
+pub const NF_STOLEN: u32 = 2;
+pub const NF_QUEUE: u32 = 3;
+pub const NF_REPEAT: u32 = 4;
+pub const NF_STOP: u32 = 5;
+pub const NF_MAX_VERDICT: u32 = 5;
+pub const NF_VERDICT_MASK: u32 = 255;
+pub const NF_VERDICT_FLAG_QUEUE_BYPASS: u32 = 32768;
+pub const NF_VERDICT_QMASK: u32 = 4294901760;
+pub const NF_VERDICT_QBITS: u32 = 16;
+pub const NF_VERDICT_BITS: u32 = 16;
+pub const NF_IP6_PRE_ROUTING: u32 = 0;
+pub const NF_IP6_LOCAL_IN: u32 = 1;
+pub const NF_IP6_FORWARD: u32 = 2;
+pub const NF_IP6_LOCAL_OUT: u32 = 3;
+pub const NF_IP6_POST_ROUTING: u32 = 4;
+pub const NF_IP6_NUMHOOKS: u32 = 5;
+pub const XT_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const XT_EXTENSION_MAXNAMELEN: u32 = 29;
+pub const XT_TABLE_MAXNAMELEN: u32 = 32;
+pub const XT_CONTINUE: u32 = 4294967295;
+pub const XT_RETURN: i32 = -5;
+pub const XT_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const XT_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const XT_INV_PROTO: u32 = 64;
+pub const IP6T_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const IP6T_TABLE_MAXNAMELEN: u32 = 32;
+pub const IP6T_CONTINUE: u32 = 4294967295;
+pub const IP6T_RETURN: i32 = -5;
+pub const XT_TCP_INV_SRCPT: u32 = 1;
+pub const XT_TCP_INV_DSTPT: u32 = 2;
+pub const XT_TCP_INV_FLAGS: u32 = 4;
+pub const XT_TCP_INV_OPTION: u32 = 8;
+pub const XT_TCP_INV_MASK: u32 = 15;
+pub const XT_UDP_INV_SRCPT: u32 = 1;
+pub const XT_UDP_INV_DSTPT: u32 = 2;
+pub const XT_UDP_INV_MASK: u32 = 3;
+pub const IP6T_TCP_INV_SRCPT: u32 = 1;
+pub const IP6T_TCP_INV_DSTPT: u32 = 2;
+pub const IP6T_TCP_INV_FLAGS: u32 = 4;
+pub const IP6T_TCP_INV_OPTION: u32 = 8;
+pub const IP6T_TCP_INV_MASK: u32 = 15;
+pub const IP6T_UDP_INV_SRCPT: u32 = 1;
+pub const IP6T_UDP_INV_DSTPT: u32 = 2;
+pub const IP6T_UDP_INV_MASK: u32 = 3;
+pub const IP6T_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const IP6T_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const IP6T_F_PROTO: u32 = 1;
+pub const IP6T_F_TOS: u32 = 2;
+pub const IP6T_F_GOTO: u32 = 4;
+pub const IP6T_F_MASK: u32 = 7;
+pub const IP6T_INV_VIA_IN: u32 = 1;
+pub const IP6T_INV_VIA_OUT: u32 = 2;
+pub const IP6T_INV_TOS: u32 = 4;
+pub const IP6T_INV_SRCIP: u32 = 8;
+pub const IP6T_INV_DSTIP: u32 = 16;
+pub const IP6T_INV_FRAG: u32 = 32;
+pub const IP6T_INV_PROTO: u32 = 64;
+pub const IP6T_INV_MASK: u32 = 127;
+pub const IP6T_BASE_CTL: u32 = 64;
+pub const IP6T_SO_SET_REPLACE: u32 = 64;
+pub const IP6T_SO_SET_ADD_COUNTERS: u32 = 65;
+pub const IP6T_SO_SET_MAX: u32 = 65;
+pub const IP6T_SO_GET_INFO: u32 = 64;
+pub const IP6T_SO_GET_ENTRIES: u32 = 65;
+pub const IP6T_SO_GET_REVISION_MATCH: u32 = 68;
+pub const IP6T_SO_GET_REVISION_TARGET: u32 = 69;
+pub const IP6T_SO_GET_MAX: u32 = 69;
+pub const IP6T_SO_ORIGINAL_DST: u32 = 80;
+pub const IP6T_ICMP_INV: u32 = 1;
+pub const NF_IP_PRE_ROUTING: u32 = 0;
+pub const NF_IP_LOCAL_IN: u32 = 1;
+pub const NF_IP_FORWARD: u32 = 2;
+pub const NF_IP_LOCAL_OUT: u32 = 3;
+pub const NF_IP_POST_ROUTING: u32 = 4;
+pub const NF_IP_NUMHOOKS: u32 = 5;
+pub const SO_ORIGINAL_DST: u32 = 80;
pub const SHUT_RD: u32 = 0;
pub const SHUT_WR: u32 = 1;
pub const SHUT_RDWR: u32 = 2;
@@ -1177,6 +1565,25 @@ pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NO
pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
+pub const IF_OPER_UNKNOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UNKNOWN;
+pub const IF_OPER_NOTPRESENT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_NOTPRESENT;
+pub const IF_OPER_DOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DOWN;
+pub const IF_OPER_LOWERLAYERDOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_LOWERLAYERDOWN;
+pub const IF_OPER_TESTING: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_TESTING;
+pub const IF_OPER_DORMANT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DORMANT;
+pub const IF_OPER_UP: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UP;
+pub const IF_LINK_MODE_DEFAULT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DEFAULT;
+pub const IF_LINK_MODE_DORMANT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DORMANT;
+pub const IF_LINK_MODE_TESTING: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_TESTING;
+pub const NFPROTO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_UNSPEC;
+pub const NFPROTO_INET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_INET;
+pub const NFPROTO_IPV4: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV4;
+pub const NFPROTO_ARP: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_ARP;
+pub const NFPROTO_NETDEV: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NETDEV;
+pub const NFPROTO_BRIDGE: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_BRIDGE;
+pub const NFPROTO_IPV6: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV6;
+pub const NFPROTO_DECNET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_DECNET;
+pub const NFPROTO_NUMPROTO: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NUMPROTO;
#[repr(u32)]
#[non_exhaustive]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -1400,6 +1807,121 @@ TCP_NLA_EDT = 25,
TCP_NLA_TTL = 26,
TCP_NLA_REHASH = 27,
}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum net_device_flags {
+IFF_UP = 1,
+IFF_BROADCAST = 2,
+IFF_DEBUG = 4,
+IFF_LOOPBACK = 8,
+IFF_POINTOPOINT = 16,
+IFF_NOTRAILERS = 32,
+IFF_RUNNING = 64,
+IFF_NOARP = 128,
+IFF_PROMISC = 256,
+IFF_ALLMULTI = 512,
+IFF_MASTER = 1024,
+IFF_SLAVE = 2048,
+IFF_MULTICAST = 4096,
+IFF_PORTSEL = 8192,
+IFF_AUTOMEDIA = 16384,
+IFF_DYNAMIC = 32768,
+IFF_LOWER_UP = 65536,
+IFF_DORMANT = 131072,
+IFF_ECHO = 262144,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_7 {
+IF_OPER_UNKNOWN = 0,
+IF_OPER_NOTPRESENT = 1,
+IF_OPER_DOWN = 2,
+IF_OPER_LOWERLAYERDOWN = 3,
+IF_OPER_TESTING = 4,
+IF_OPER_DORMANT = 5,
+IF_OPER_UP = 6,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_8 {
+IF_LINK_MODE_DEFAULT = 0,
+IF_LINK_MODE_DORMANT = 1,
+IF_LINK_MODE_TESTING = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_inet_hooks {
+NF_INET_PRE_ROUTING = 0,
+NF_INET_LOCAL_IN = 1,
+NF_INET_FORWARD = 2,
+NF_INET_LOCAL_OUT = 3,
+NF_INET_POST_ROUTING = 4,
+NF_INET_NUMHOOKS = 5,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_dev_hooks {
+NF_NETDEV_INGRESS = 0,
+NF_NETDEV_EGRESS = 1,
+NF_NETDEV_NUMHOOKS = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_9 {
+NFPROTO_UNSPEC = 0,
+NFPROTO_INET = 1,
+NFPROTO_IPV4 = 2,
+NFPROTO_ARP = 3,
+NFPROTO_NETDEV = 5,
+NFPROTO_BRIDGE = 7,
+NFPROTO_IPV6 = 10,
+NFPROTO_DECNET = 12,
+NFPROTO_NUMPROTO = 13,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip6_hook_priorities {
+NF_IP6_PRI_FIRST = -2147483648,
+NF_IP6_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP6_PRI_RAW = -300,
+NF_IP6_PRI_SELINUX_FIRST = -225,
+NF_IP6_PRI_CONNTRACK = -200,
+NF_IP6_PRI_MANGLE = -150,
+NF_IP6_PRI_NAT_DST = -100,
+NF_IP6_PRI_FILTER = 0,
+NF_IP6_PRI_SECURITY = 50,
+NF_IP6_PRI_NAT_SRC = 100,
+NF_IP6_PRI_SELINUX_LAST = 225,
+NF_IP6_PRI_CONNTRACK_HELPER = 300,
+NF_IP6_PRI_LAST = 2147483647,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip_hook_priorities {
+NF_IP_PRI_FIRST = -2147483648,
+NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP_PRI_RAW = -300,
+NF_IP_PRI_SELINUX_FIRST = -225,
+NF_IP_PRI_CONNTRACK = -200,
+NF_IP_PRI_MANGLE = -150,
+NF_IP_PRI_NAT_DST = -100,
+NF_IP_PRI_FILTER = 0,
+NF_IP_PRI_SECURITY = 50,
+NF_IP_PRI_NAT_SRC = 100,
+NF_IP_PRI_SELINUX_LAST = 225,
+NF_IP_PRI_CONNTRACK_HELPER = 300,
+NF_IP_PRI_CONNTRACK_CONFIRM = 2147483647,
+}
#[repr(C)]
#[derive(Copy, Clone)]
pub union __vector128__bindgen_ty_1 {
@@ -1437,6 +1959,69 @@ pub union tcp_word_hdr {
pub hdr: tcphdr,
pub words: [__be32; 5usize],
}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union if_settings__bindgen_ty_1 {
+pub raw_hdlc: *mut raw_hdlc_proto,
+pub cisco: *mut cisco_proto,
+pub fr: *mut fr_proto,
+pub fr_pvc: *mut fr_proto_pvc,
+pub fr_pvc_info: *mut fr_proto_pvc_info,
+pub x25: *mut x25_hdlc_proto,
+pub sync: *mut sync_serial_settings,
+pub te1: *mut te1_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_1 {
+pub ifrn_name: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_2 {
+pub ifru_addr: sockaddr,
+pub ifru_dstaddr: sockaddr,
+pub ifru_broadaddr: sockaddr,
+pub ifru_netmask: sockaddr,
+pub ifru_hwaddr: sockaddr,
+pub ifru_flags: crate::ctypes::c_short,
+pub ifru_ivalue: crate::ctypes::c_int,
+pub ifru_mtu: crate::ctypes::c_int,
+pub ifru_map: ifmap,
+pub ifru_slave: [crate::ctypes::c_char; 16usize],
+pub ifru_newname: [crate::ctypes::c_char; 16usize],
+pub ifru_data: *mut crate::ctypes::c_void,
+pub ifru_settings: if_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifconf__bindgen_ty_1 {
+pub ifcu_buf: *mut crate::ctypes::c_char,
+pub ifcu_req: *mut ifreq,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union nf_inet_addr {
+pub all: [__u32; 4usize],
+pub ip: __be32,
+pub ip6: [__be32; 4usize],
+pub in_: in_addr,
+pub in6: in6_addr,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_match__bindgen_ty_1 {
+pub user: xt_entry_match__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_match__bindgen_ty_1__bindgen_ty_2,
+pub match_size: __u16,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_target__bindgen_ty_1 {
+pub user: xt_entry_target__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_target__bindgen_ty_1__bindgen_ty_2,
+pub target_size: __u16,
+}
impl<Storage> __BindgenBitfieldUnit<Storage> {
#[inline]
pub const fn new(storage: Storage) -> Self {
@@ -1862,3 +2447,9 @@ tcpi_fastopen_client_fail as u64
__bindgen_bitfield_unit
}
}
+impl nf_inet_hooks {
+pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
+}
+impl nf_ip_hook_priorities {
+pub const NF_IP_PRI_LAST: nf_ip_hook_priorities = nf_ip_hook_priorities::NF_IP_PRI_CONNTRACK_CONFIRM;
+}
diff --git a/vendor/linux-raw-sys/src/sparc/general.rs b/vendor/linux-raw-sys/src/sparc/general.rs
index 6989c081e..24c14470c 100644
--- a/vendor/linux-raw-sys/src/sparc/general.rs
+++ b/vendor/linux-raw-sys/src/sparc/general.rs
@@ -1614,6 +1614,19 @@ pub const POLLRDBAND: u32 = 128;
pub const GRND_NONBLOCK: u32 = 1;
pub const GRND_RANDOM: u32 = 2;
pub const GRND_INSECURE: u32 = 4;
+pub const LINUX_REBOOT_MAGIC1: u32 = 4276215469;
+pub const LINUX_REBOOT_MAGIC2: u32 = 672274793;
+pub const LINUX_REBOOT_MAGIC2A: u32 = 85072278;
+pub const LINUX_REBOOT_MAGIC2B: u32 = 369367448;
+pub const LINUX_REBOOT_MAGIC2C: u32 = 537993216;
+pub const LINUX_REBOOT_CMD_RESTART: u32 = 19088743;
+pub const LINUX_REBOOT_CMD_HALT: u32 = 3454992675;
+pub const LINUX_REBOOT_CMD_CAD_ON: u32 = 2309737967;
+pub const LINUX_REBOOT_CMD_CAD_OFF: u32 = 0;
+pub const LINUX_REBOOT_CMD_POWER_OFF: u32 = 1126301404;
+pub const LINUX_REBOOT_CMD_RESTART2: u32 = 2712847316;
+pub const LINUX_REBOOT_CMD_SW_SUSPEND: u32 = 3489725666;
+pub const LINUX_REBOOT_CMD_KEXEC: u32 = 1163412803;
pub const ITIMER_REAL: u32 = 0;
pub const ITIMER_VIRTUAL: u32 = 1;
pub const ITIMER_PROF: u32 = 2;
diff --git a/vendor/linux-raw-sys/src/sparc/net.rs b/vendor/linux-raw-sys/src/sparc/net.rs
index ca7d1aaa1..aff8a9622 100644
--- a/vendor/linux-raw-sys/src/sparc/net.rs
+++ b/vendor/linux-raw-sys/src/sparc/net.rs
@@ -476,6 +476,255 @@ pub __storage: __kernel_sockaddr_storage,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct sync_serial_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct te1_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+pub slot_map: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct raw_hdlc_proto {
+pub encoding: crate::ctypes::c_ushort,
+pub parity: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto {
+pub t391: crate::ctypes::c_uint,
+pub t392: crate::ctypes::c_uint,
+pub n391: crate::ctypes::c_uint,
+pub n392: crate::ctypes::c_uint,
+pub n393: crate::ctypes::c_uint,
+pub lmi: crate::ctypes::c_ushort,
+pub dce: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc {
+pub dlci: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc_info {
+pub dlci: crate::ctypes::c_uint,
+pub master: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct cisco_proto {
+pub interval: crate::ctypes::c_uint,
+pub timeout: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct x25_hdlc_proto {
+pub dce: crate::ctypes::c_ushort,
+pub modulo: crate::ctypes::c_uint,
+pub window: crate::ctypes::c_uint,
+pub t1: crate::ctypes::c_uint,
+pub t2: crate::ctypes::c_uint,
+pub n2: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ifmap {
+pub mem_start: crate::ctypes::c_ulong,
+pub mem_end: crate::ctypes::c_ulong,
+pub base_addr: crate::ctypes::c_ushort,
+pub irq: crate::ctypes::c_uchar,
+pub dma: crate::ctypes::c_uchar,
+pub port: crate::ctypes::c_uchar,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct if_settings {
+pub type_: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub ifs_ifsu: if_settings__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifreq {
+pub ifr_ifrn: ifreq__bindgen_ty_1,
+pub ifr_ifru: ifreq__bindgen_ty_2,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifconf {
+pub ifc_len: crate::ctypes::c_int,
+pub ifc_ifcu: ifconf__bindgen_ty_1,
+}
+#[repr(C)]
+pub struct xt_entry_match {
+pub u: xt_entry_match__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_1 {
+pub match_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_2 {
+pub match_size: __u16,
+pub match_: *mut xt_match,
+}
+#[repr(C)]
+pub struct xt_entry_target {
+pub u: xt_entry_target__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_1 {
+pub target_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_2 {
+pub target_size: __u16,
+pub target: *mut xt_target,
+}
+#[repr(C)]
+pub struct xt_standard_target {
+pub target: xt_entry_target,
+pub verdict: crate::ctypes::c_int,
+}
+#[repr(C)]
+pub struct xt_error_target {
+pub target: xt_entry_target,
+pub errorname: [crate::ctypes::c_char; 30usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_get_revision {
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _xt_align {
+pub u8_: __u8,
+pub u16_: __u16,
+pub u32_: __u32,
+pub u64_: __u64,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_counters {
+pub pcnt: __u64,
+pub bcnt: __u64,
+}
+#[repr(C)]
+#[derive(Debug)]
+pub struct xt_counters_info {
+pub name: [crate::ctypes::c_char; 32usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: __IncompleteArrayField<xt_counters>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_tcp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub option: __u8,
+pub flg_mask: __u8,
+pub flg_cmp: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_udp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ip6t_ip6 {
+pub src: in6_addr,
+pub dst: in6_addr,
+pub smsk: in6_addr,
+pub dmsk: in6_addr,
+pub iniface: [crate::ctypes::c_char; 16usize],
+pub outiface: [crate::ctypes::c_char; 16usize],
+pub iniface_mask: [crate::ctypes::c_uchar; 16usize],
+pub outiface_mask: [crate::ctypes::c_uchar; 16usize],
+pub proto: __u16,
+pub tos: __u8,
+pub flags: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+pub struct ip6t_entry {
+pub ipv6: ip6t_ip6,
+pub nfcache: crate::ctypes::c_uint,
+pub target_offset: __u16,
+pub next_offset: __u16,
+pub comefrom: crate::ctypes::c_uint,
+pub counters: xt_counters,
+pub elems: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+pub struct ip6t_standard {
+pub entry: ip6t_entry,
+pub target: xt_standard_target,
+}
+#[repr(C)]
+pub struct ip6t_error {
+pub entry: ip6t_entry,
+pub target: xt_error_target,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_icmp {
+pub type_: __u8,
+pub code: [__u8; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_getinfo {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+}
+#[repr(C)]
+pub struct ip6t_replace {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: *mut xt_counters,
+pub entries: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+pub struct ip6t_get_entries {
+pub name: [crate::ctypes::c_char; 32usize],
+pub size: crate::ctypes::c_uint,
+pub entrytable: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct linger {
pub l_onoff: crate::ctypes::c_int,
pub l_linger: crate::ctypes::c_int,
@@ -513,6 +762,16 @@ pub msg_len: crate::ctypes::c_uint,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct xt_match {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_target {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct iovec {
pub _address: u8,
}
@@ -1143,6 +1402,135 @@ pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
pub const UNIX_PATH_MAX: u32 = 108;
+pub const IFNAMSIZ: u32 = 16;
+pub const IFALIASZ: u32 = 256;
+pub const ALTIFNAMSIZ: u32 = 128;
+pub const GENERIC_HDLC_VERSION: u32 = 4;
+pub const CLOCK_DEFAULT: u32 = 0;
+pub const CLOCK_EXT: u32 = 1;
+pub const CLOCK_INT: u32 = 2;
+pub const CLOCK_TXINT: u32 = 3;
+pub const CLOCK_TXFROMRX: u32 = 4;
+pub const ENCODING_DEFAULT: u32 = 0;
+pub const ENCODING_NRZ: u32 = 1;
+pub const ENCODING_NRZI: u32 = 2;
+pub const ENCODING_FM_MARK: u32 = 3;
+pub const ENCODING_FM_SPACE: u32 = 4;
+pub const ENCODING_MANCHESTER: u32 = 5;
+pub const PARITY_DEFAULT: u32 = 0;
+pub const PARITY_NONE: u32 = 1;
+pub const PARITY_CRC16_PR0: u32 = 2;
+pub const PARITY_CRC16_PR1: u32 = 3;
+pub const PARITY_CRC16_PR0_CCITT: u32 = 4;
+pub const PARITY_CRC16_PR1_CCITT: u32 = 5;
+pub const PARITY_CRC32_PR0_CCITT: u32 = 6;
+pub const PARITY_CRC32_PR1_CCITT: u32 = 7;
+pub const LMI_DEFAULT: u32 = 0;
+pub const LMI_NONE: u32 = 1;
+pub const LMI_ANSI: u32 = 2;
+pub const LMI_CCITT: u32 = 3;
+pub const LMI_CISCO: u32 = 4;
+pub const IF_GET_IFACE: u32 = 1;
+pub const IF_GET_PROTO: u32 = 2;
+pub const IF_IFACE_V35: u32 = 4096;
+pub const IF_IFACE_V24: u32 = 4097;
+pub const IF_IFACE_X21: u32 = 4098;
+pub const IF_IFACE_T1: u32 = 4099;
+pub const IF_IFACE_E1: u32 = 4100;
+pub const IF_IFACE_SYNC_SERIAL: u32 = 4101;
+pub const IF_IFACE_X21D: u32 = 4102;
+pub const IF_PROTO_HDLC: u32 = 8192;
+pub const IF_PROTO_PPP: u32 = 8193;
+pub const IF_PROTO_CISCO: u32 = 8194;
+pub const IF_PROTO_FR: u32 = 8195;
+pub const IF_PROTO_FR_ADD_PVC: u32 = 8196;
+pub const IF_PROTO_FR_DEL_PVC: u32 = 8197;
+pub const IF_PROTO_X25: u32 = 8198;
+pub const IF_PROTO_HDLC_ETH: u32 = 8199;
+pub const IF_PROTO_FR_ADD_ETH_PVC: u32 = 8200;
+pub const IF_PROTO_FR_DEL_ETH_PVC: u32 = 8201;
+pub const IF_PROTO_FR_PVC: u32 = 8202;
+pub const IF_PROTO_FR_ETH_PVC: u32 = 8203;
+pub const IF_PROTO_RAW: u32 = 8204;
+pub const IFHWADDRLEN: u32 = 6;
+pub const NF_DROP: u32 = 0;
+pub const NF_ACCEPT: u32 = 1;
+pub const NF_STOLEN: u32 = 2;
+pub const NF_QUEUE: u32 = 3;
+pub const NF_REPEAT: u32 = 4;
+pub const NF_STOP: u32 = 5;
+pub const NF_MAX_VERDICT: u32 = 5;
+pub const NF_VERDICT_MASK: u32 = 255;
+pub const NF_VERDICT_FLAG_QUEUE_BYPASS: u32 = 32768;
+pub const NF_VERDICT_QMASK: u32 = 4294901760;
+pub const NF_VERDICT_QBITS: u32 = 16;
+pub const NF_VERDICT_BITS: u32 = 16;
+pub const NF_IP6_PRE_ROUTING: u32 = 0;
+pub const NF_IP6_LOCAL_IN: u32 = 1;
+pub const NF_IP6_FORWARD: u32 = 2;
+pub const NF_IP6_LOCAL_OUT: u32 = 3;
+pub const NF_IP6_POST_ROUTING: u32 = 4;
+pub const NF_IP6_NUMHOOKS: u32 = 5;
+pub const XT_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const XT_EXTENSION_MAXNAMELEN: u32 = 29;
+pub const XT_TABLE_MAXNAMELEN: u32 = 32;
+pub const XT_CONTINUE: u32 = 4294967295;
+pub const XT_RETURN: i32 = -5;
+pub const XT_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const XT_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const XT_INV_PROTO: u32 = 64;
+pub const IP6T_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const IP6T_TABLE_MAXNAMELEN: u32 = 32;
+pub const IP6T_CONTINUE: u32 = 4294967295;
+pub const IP6T_RETURN: i32 = -5;
+pub const XT_TCP_INV_SRCPT: u32 = 1;
+pub const XT_TCP_INV_DSTPT: u32 = 2;
+pub const XT_TCP_INV_FLAGS: u32 = 4;
+pub const XT_TCP_INV_OPTION: u32 = 8;
+pub const XT_TCP_INV_MASK: u32 = 15;
+pub const XT_UDP_INV_SRCPT: u32 = 1;
+pub const XT_UDP_INV_DSTPT: u32 = 2;
+pub const XT_UDP_INV_MASK: u32 = 3;
+pub const IP6T_TCP_INV_SRCPT: u32 = 1;
+pub const IP6T_TCP_INV_DSTPT: u32 = 2;
+pub const IP6T_TCP_INV_FLAGS: u32 = 4;
+pub const IP6T_TCP_INV_OPTION: u32 = 8;
+pub const IP6T_TCP_INV_MASK: u32 = 15;
+pub const IP6T_UDP_INV_SRCPT: u32 = 1;
+pub const IP6T_UDP_INV_DSTPT: u32 = 2;
+pub const IP6T_UDP_INV_MASK: u32 = 3;
+pub const IP6T_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const IP6T_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const IP6T_F_PROTO: u32 = 1;
+pub const IP6T_F_TOS: u32 = 2;
+pub const IP6T_F_GOTO: u32 = 4;
+pub const IP6T_F_MASK: u32 = 7;
+pub const IP6T_INV_VIA_IN: u32 = 1;
+pub const IP6T_INV_VIA_OUT: u32 = 2;
+pub const IP6T_INV_TOS: u32 = 4;
+pub const IP6T_INV_SRCIP: u32 = 8;
+pub const IP6T_INV_DSTIP: u32 = 16;
+pub const IP6T_INV_FRAG: u32 = 32;
+pub const IP6T_INV_PROTO: u32 = 64;
+pub const IP6T_INV_MASK: u32 = 127;
+pub const IP6T_BASE_CTL: u32 = 64;
+pub const IP6T_SO_SET_REPLACE: u32 = 64;
+pub const IP6T_SO_SET_ADD_COUNTERS: u32 = 65;
+pub const IP6T_SO_SET_MAX: u32 = 65;
+pub const IP6T_SO_GET_INFO: u32 = 64;
+pub const IP6T_SO_GET_ENTRIES: u32 = 65;
+pub const IP6T_SO_GET_REVISION_MATCH: u32 = 68;
+pub const IP6T_SO_GET_REVISION_TARGET: u32 = 69;
+pub const IP6T_SO_GET_MAX: u32 = 69;
+pub const IP6T_SO_ORIGINAL_DST: u32 = 80;
+pub const IP6T_ICMP_INV: u32 = 1;
+pub const NF_IP_PRE_ROUTING: u32 = 0;
+pub const NF_IP_LOCAL_IN: u32 = 1;
+pub const NF_IP_FORWARD: u32 = 2;
+pub const NF_IP_LOCAL_OUT: u32 = 3;
+pub const NF_IP_POST_ROUTING: u32 = 4;
+pub const NF_IP_NUMHOOKS: u32 = 5;
+pub const SO_ORIGINAL_DST: u32 = 80;
pub const SHUT_RD: u32 = 0;
pub const SHUT_WR: u32 = 1;
pub const SHUT_RDWR: u32 = 2;
@@ -1371,6 +1759,25 @@ pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NO
pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
+pub const IF_OPER_UNKNOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UNKNOWN;
+pub const IF_OPER_NOTPRESENT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_NOTPRESENT;
+pub const IF_OPER_DOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DOWN;
+pub const IF_OPER_LOWERLAYERDOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_LOWERLAYERDOWN;
+pub const IF_OPER_TESTING: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_TESTING;
+pub const IF_OPER_DORMANT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DORMANT;
+pub const IF_OPER_UP: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UP;
+pub const IF_LINK_MODE_DEFAULT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DEFAULT;
+pub const IF_LINK_MODE_DORMANT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DORMANT;
+pub const IF_LINK_MODE_TESTING: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_TESTING;
+pub const NFPROTO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_UNSPEC;
+pub const NFPROTO_INET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_INET;
+pub const NFPROTO_IPV4: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV4;
+pub const NFPROTO_ARP: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_ARP;
+pub const NFPROTO_NETDEV: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NETDEV;
+pub const NFPROTO_BRIDGE: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_BRIDGE;
+pub const NFPROTO_IPV6: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV6;
+pub const NFPROTO_DECNET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_DECNET;
+pub const NFPROTO_NUMPROTO: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NUMPROTO;
#[repr(u32)]
#[non_exhaustive]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -1594,6 +2001,121 @@ TCP_NLA_EDT = 25,
TCP_NLA_TTL = 26,
TCP_NLA_REHASH = 27,
}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum net_device_flags {
+IFF_UP = 1,
+IFF_BROADCAST = 2,
+IFF_DEBUG = 4,
+IFF_LOOPBACK = 8,
+IFF_POINTOPOINT = 16,
+IFF_NOTRAILERS = 32,
+IFF_RUNNING = 64,
+IFF_NOARP = 128,
+IFF_PROMISC = 256,
+IFF_ALLMULTI = 512,
+IFF_MASTER = 1024,
+IFF_SLAVE = 2048,
+IFF_MULTICAST = 4096,
+IFF_PORTSEL = 8192,
+IFF_AUTOMEDIA = 16384,
+IFF_DYNAMIC = 32768,
+IFF_LOWER_UP = 65536,
+IFF_DORMANT = 131072,
+IFF_ECHO = 262144,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_7 {
+IF_OPER_UNKNOWN = 0,
+IF_OPER_NOTPRESENT = 1,
+IF_OPER_DOWN = 2,
+IF_OPER_LOWERLAYERDOWN = 3,
+IF_OPER_TESTING = 4,
+IF_OPER_DORMANT = 5,
+IF_OPER_UP = 6,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_8 {
+IF_LINK_MODE_DEFAULT = 0,
+IF_LINK_MODE_DORMANT = 1,
+IF_LINK_MODE_TESTING = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_inet_hooks {
+NF_INET_PRE_ROUTING = 0,
+NF_INET_LOCAL_IN = 1,
+NF_INET_FORWARD = 2,
+NF_INET_LOCAL_OUT = 3,
+NF_INET_POST_ROUTING = 4,
+NF_INET_NUMHOOKS = 5,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_dev_hooks {
+NF_NETDEV_INGRESS = 0,
+NF_NETDEV_EGRESS = 1,
+NF_NETDEV_NUMHOOKS = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_9 {
+NFPROTO_UNSPEC = 0,
+NFPROTO_INET = 1,
+NFPROTO_IPV4 = 2,
+NFPROTO_ARP = 3,
+NFPROTO_NETDEV = 5,
+NFPROTO_BRIDGE = 7,
+NFPROTO_IPV6 = 10,
+NFPROTO_DECNET = 12,
+NFPROTO_NUMPROTO = 13,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip6_hook_priorities {
+NF_IP6_PRI_FIRST = -2147483648,
+NF_IP6_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP6_PRI_RAW = -300,
+NF_IP6_PRI_SELINUX_FIRST = -225,
+NF_IP6_PRI_CONNTRACK = -200,
+NF_IP6_PRI_MANGLE = -150,
+NF_IP6_PRI_NAT_DST = -100,
+NF_IP6_PRI_FILTER = 0,
+NF_IP6_PRI_SECURITY = 50,
+NF_IP6_PRI_NAT_SRC = 100,
+NF_IP6_PRI_SELINUX_LAST = 225,
+NF_IP6_PRI_CONNTRACK_HELPER = 300,
+NF_IP6_PRI_LAST = 2147483647,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip_hook_priorities {
+NF_IP_PRI_FIRST = -2147483648,
+NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP_PRI_RAW = -300,
+NF_IP_PRI_SELINUX_FIRST = -225,
+NF_IP_PRI_CONNTRACK = -200,
+NF_IP_PRI_MANGLE = -150,
+NF_IP_PRI_NAT_DST = -100,
+NF_IP_PRI_FILTER = 0,
+NF_IP_PRI_SECURITY = 50,
+NF_IP_PRI_NAT_SRC = 100,
+NF_IP_PRI_SELINUX_LAST = 225,
+NF_IP_PRI_CONNTRACK_HELPER = 300,
+NF_IP_PRI_CONNTRACK_CONFIRM = 2147483647,
+}
#[repr(C)]
#[derive(Copy, Clone)]
pub union __kernel_sockaddr_storage__bindgen_ty_1 {
@@ -1625,6 +2147,69 @@ pub union tcp_word_hdr {
pub hdr: tcphdr,
pub words: [__be32; 5usize],
}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union if_settings__bindgen_ty_1 {
+pub raw_hdlc: *mut raw_hdlc_proto,
+pub cisco: *mut cisco_proto,
+pub fr: *mut fr_proto,
+pub fr_pvc: *mut fr_proto_pvc,
+pub fr_pvc_info: *mut fr_proto_pvc_info,
+pub x25: *mut x25_hdlc_proto,
+pub sync: *mut sync_serial_settings,
+pub te1: *mut te1_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_1 {
+pub ifrn_name: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_2 {
+pub ifru_addr: sockaddr,
+pub ifru_dstaddr: sockaddr,
+pub ifru_broadaddr: sockaddr,
+pub ifru_netmask: sockaddr,
+pub ifru_hwaddr: sockaddr,
+pub ifru_flags: crate::ctypes::c_short,
+pub ifru_ivalue: crate::ctypes::c_int,
+pub ifru_mtu: crate::ctypes::c_int,
+pub ifru_map: ifmap,
+pub ifru_slave: [crate::ctypes::c_char; 16usize],
+pub ifru_newname: [crate::ctypes::c_char; 16usize],
+pub ifru_data: *mut crate::ctypes::c_void,
+pub ifru_settings: if_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifconf__bindgen_ty_1 {
+pub ifcu_buf: *mut crate::ctypes::c_char,
+pub ifcu_req: *mut ifreq,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union nf_inet_addr {
+pub all: [__u32; 4usize],
+pub ip: __be32,
+pub ip6: [__be32; 4usize],
+pub in_: in_addr,
+pub in6: in6_addr,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_match__bindgen_ty_1 {
+pub user: xt_entry_match__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_match__bindgen_ty_1__bindgen_ty_2,
+pub match_size: __u16,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_target__bindgen_ty_1 {
+pub user: xt_entry_target__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_target__bindgen_ty_1__bindgen_ty_2,
+pub target_size: __u16,
+}
impl<Storage> __BindgenBitfieldUnit<Storage> {
#[inline]
pub const fn new(storage: Storage) -> Self {
@@ -2050,3 +2635,9 @@ tcpi_fastopen_client_fail as u64
__bindgen_bitfield_unit
}
}
+impl nf_inet_hooks {
+pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
+}
+impl nf_ip_hook_priorities {
+pub const NF_IP_PRI_LAST: nf_ip_hook_priorities = nf_ip_hook_priorities::NF_IP_PRI_CONNTRACK_CONFIRM;
+}
diff --git a/vendor/linux-raw-sys/src/sparc64/general.rs b/vendor/linux-raw-sys/src/sparc64/general.rs
index 770232eb7..3965c8a6f 100644
--- a/vendor/linux-raw-sys/src/sparc64/general.rs
+++ b/vendor/linux-raw-sys/src/sparc64/general.rs
@@ -1606,6 +1606,19 @@ pub const POLLRDBAND: u32 = 128;
pub const GRND_NONBLOCK: u32 = 1;
pub const GRND_RANDOM: u32 = 2;
pub const GRND_INSECURE: u32 = 4;
+pub const LINUX_REBOOT_MAGIC1: u32 = 4276215469;
+pub const LINUX_REBOOT_MAGIC2: u32 = 672274793;
+pub const LINUX_REBOOT_MAGIC2A: u32 = 85072278;
+pub const LINUX_REBOOT_MAGIC2B: u32 = 369367448;
+pub const LINUX_REBOOT_MAGIC2C: u32 = 537993216;
+pub const LINUX_REBOOT_CMD_RESTART: u32 = 19088743;
+pub const LINUX_REBOOT_CMD_HALT: u32 = 3454992675;
+pub const LINUX_REBOOT_CMD_CAD_ON: u32 = 2309737967;
+pub const LINUX_REBOOT_CMD_CAD_OFF: u32 = 0;
+pub const LINUX_REBOOT_CMD_POWER_OFF: u32 = 1126301404;
+pub const LINUX_REBOOT_CMD_RESTART2: u32 = 2712847316;
+pub const LINUX_REBOOT_CMD_SW_SUSPEND: u32 = 3489725666;
+pub const LINUX_REBOOT_CMD_KEXEC: u32 = 1163412803;
pub const ITIMER_REAL: u32 = 0;
pub const ITIMER_VIRTUAL: u32 = 1;
pub const ITIMER_PROF: u32 = 2;
diff --git a/vendor/linux-raw-sys/src/sparc64/net.rs b/vendor/linux-raw-sys/src/sparc64/net.rs
index 9a8975418..6a9395bca 100644
--- a/vendor/linux-raw-sys/src/sparc64/net.rs
+++ b/vendor/linux-raw-sys/src/sparc64/net.rs
@@ -482,6 +482,255 @@ pub __storage: __kernel_sockaddr_storage,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct sync_serial_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct te1_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+pub slot_map: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct raw_hdlc_proto {
+pub encoding: crate::ctypes::c_ushort,
+pub parity: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto {
+pub t391: crate::ctypes::c_uint,
+pub t392: crate::ctypes::c_uint,
+pub n391: crate::ctypes::c_uint,
+pub n392: crate::ctypes::c_uint,
+pub n393: crate::ctypes::c_uint,
+pub lmi: crate::ctypes::c_ushort,
+pub dce: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc {
+pub dlci: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc_info {
+pub dlci: crate::ctypes::c_uint,
+pub master: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct cisco_proto {
+pub interval: crate::ctypes::c_uint,
+pub timeout: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct x25_hdlc_proto {
+pub dce: crate::ctypes::c_ushort,
+pub modulo: crate::ctypes::c_uint,
+pub window: crate::ctypes::c_uint,
+pub t1: crate::ctypes::c_uint,
+pub t2: crate::ctypes::c_uint,
+pub n2: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ifmap {
+pub mem_start: crate::ctypes::c_ulong,
+pub mem_end: crate::ctypes::c_ulong,
+pub base_addr: crate::ctypes::c_ushort,
+pub irq: crate::ctypes::c_uchar,
+pub dma: crate::ctypes::c_uchar,
+pub port: crate::ctypes::c_uchar,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct if_settings {
+pub type_: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub ifs_ifsu: if_settings__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifreq {
+pub ifr_ifrn: ifreq__bindgen_ty_1,
+pub ifr_ifru: ifreq__bindgen_ty_2,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifconf {
+pub ifc_len: crate::ctypes::c_int,
+pub ifc_ifcu: ifconf__bindgen_ty_1,
+}
+#[repr(C)]
+pub struct xt_entry_match {
+pub u: xt_entry_match__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_1 {
+pub match_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_2 {
+pub match_size: __u16,
+pub match_: *mut xt_match,
+}
+#[repr(C)]
+pub struct xt_entry_target {
+pub u: xt_entry_target__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_1 {
+pub target_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_2 {
+pub target_size: __u16,
+pub target: *mut xt_target,
+}
+#[repr(C)]
+pub struct xt_standard_target {
+pub target: xt_entry_target,
+pub verdict: crate::ctypes::c_int,
+}
+#[repr(C)]
+pub struct xt_error_target {
+pub target: xt_entry_target,
+pub errorname: [crate::ctypes::c_char; 30usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_get_revision {
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _xt_align {
+pub u8_: __u8,
+pub u16_: __u16,
+pub u32_: __u32,
+pub u64_: __u64,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_counters {
+pub pcnt: __u64,
+pub bcnt: __u64,
+}
+#[repr(C)]
+#[derive(Debug)]
+pub struct xt_counters_info {
+pub name: [crate::ctypes::c_char; 32usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: __IncompleteArrayField<xt_counters>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_tcp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub option: __u8,
+pub flg_mask: __u8,
+pub flg_cmp: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_udp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ip6t_ip6 {
+pub src: in6_addr,
+pub dst: in6_addr,
+pub smsk: in6_addr,
+pub dmsk: in6_addr,
+pub iniface: [crate::ctypes::c_char; 16usize],
+pub outiface: [crate::ctypes::c_char; 16usize],
+pub iniface_mask: [crate::ctypes::c_uchar; 16usize],
+pub outiface_mask: [crate::ctypes::c_uchar; 16usize],
+pub proto: __u16,
+pub tos: __u8,
+pub flags: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+pub struct ip6t_entry {
+pub ipv6: ip6t_ip6,
+pub nfcache: crate::ctypes::c_uint,
+pub target_offset: __u16,
+pub next_offset: __u16,
+pub comefrom: crate::ctypes::c_uint,
+pub counters: xt_counters,
+pub elems: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+pub struct ip6t_standard {
+pub entry: ip6t_entry,
+pub target: xt_standard_target,
+}
+#[repr(C)]
+pub struct ip6t_error {
+pub entry: ip6t_entry,
+pub target: xt_error_target,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_icmp {
+pub type_: __u8,
+pub code: [__u8; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_getinfo {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+}
+#[repr(C)]
+pub struct ip6t_replace {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: *mut xt_counters,
+pub entries: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+pub struct ip6t_get_entries {
+pub name: [crate::ctypes::c_char; 32usize],
+pub size: crate::ctypes::c_uint,
+pub entrytable: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct linger {
pub l_onoff: crate::ctypes::c_int,
pub l_linger: crate::ctypes::c_int,
@@ -519,6 +768,16 @@ pub msg_len: crate::ctypes::c_uint,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct xt_match {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_target {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct iovec {
pub _address: u8,
}
@@ -1157,6 +1416,135 @@ pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
pub const UNIX_PATH_MAX: u32 = 108;
+pub const IFNAMSIZ: u32 = 16;
+pub const IFALIASZ: u32 = 256;
+pub const ALTIFNAMSIZ: u32 = 128;
+pub const GENERIC_HDLC_VERSION: u32 = 4;
+pub const CLOCK_DEFAULT: u32 = 0;
+pub const CLOCK_EXT: u32 = 1;
+pub const CLOCK_INT: u32 = 2;
+pub const CLOCK_TXINT: u32 = 3;
+pub const CLOCK_TXFROMRX: u32 = 4;
+pub const ENCODING_DEFAULT: u32 = 0;
+pub const ENCODING_NRZ: u32 = 1;
+pub const ENCODING_NRZI: u32 = 2;
+pub const ENCODING_FM_MARK: u32 = 3;
+pub const ENCODING_FM_SPACE: u32 = 4;
+pub const ENCODING_MANCHESTER: u32 = 5;
+pub const PARITY_DEFAULT: u32 = 0;
+pub const PARITY_NONE: u32 = 1;
+pub const PARITY_CRC16_PR0: u32 = 2;
+pub const PARITY_CRC16_PR1: u32 = 3;
+pub const PARITY_CRC16_PR0_CCITT: u32 = 4;
+pub const PARITY_CRC16_PR1_CCITT: u32 = 5;
+pub const PARITY_CRC32_PR0_CCITT: u32 = 6;
+pub const PARITY_CRC32_PR1_CCITT: u32 = 7;
+pub const LMI_DEFAULT: u32 = 0;
+pub const LMI_NONE: u32 = 1;
+pub const LMI_ANSI: u32 = 2;
+pub const LMI_CCITT: u32 = 3;
+pub const LMI_CISCO: u32 = 4;
+pub const IF_GET_IFACE: u32 = 1;
+pub const IF_GET_PROTO: u32 = 2;
+pub const IF_IFACE_V35: u32 = 4096;
+pub const IF_IFACE_V24: u32 = 4097;
+pub const IF_IFACE_X21: u32 = 4098;
+pub const IF_IFACE_T1: u32 = 4099;
+pub const IF_IFACE_E1: u32 = 4100;
+pub const IF_IFACE_SYNC_SERIAL: u32 = 4101;
+pub const IF_IFACE_X21D: u32 = 4102;
+pub const IF_PROTO_HDLC: u32 = 8192;
+pub const IF_PROTO_PPP: u32 = 8193;
+pub const IF_PROTO_CISCO: u32 = 8194;
+pub const IF_PROTO_FR: u32 = 8195;
+pub const IF_PROTO_FR_ADD_PVC: u32 = 8196;
+pub const IF_PROTO_FR_DEL_PVC: u32 = 8197;
+pub const IF_PROTO_X25: u32 = 8198;
+pub const IF_PROTO_HDLC_ETH: u32 = 8199;
+pub const IF_PROTO_FR_ADD_ETH_PVC: u32 = 8200;
+pub const IF_PROTO_FR_DEL_ETH_PVC: u32 = 8201;
+pub const IF_PROTO_FR_PVC: u32 = 8202;
+pub const IF_PROTO_FR_ETH_PVC: u32 = 8203;
+pub const IF_PROTO_RAW: u32 = 8204;
+pub const IFHWADDRLEN: u32 = 6;
+pub const NF_DROP: u32 = 0;
+pub const NF_ACCEPT: u32 = 1;
+pub const NF_STOLEN: u32 = 2;
+pub const NF_QUEUE: u32 = 3;
+pub const NF_REPEAT: u32 = 4;
+pub const NF_STOP: u32 = 5;
+pub const NF_MAX_VERDICT: u32 = 5;
+pub const NF_VERDICT_MASK: u32 = 255;
+pub const NF_VERDICT_FLAG_QUEUE_BYPASS: u32 = 32768;
+pub const NF_VERDICT_QMASK: u32 = 4294901760;
+pub const NF_VERDICT_QBITS: u32 = 16;
+pub const NF_VERDICT_BITS: u32 = 16;
+pub const NF_IP6_PRE_ROUTING: u32 = 0;
+pub const NF_IP6_LOCAL_IN: u32 = 1;
+pub const NF_IP6_FORWARD: u32 = 2;
+pub const NF_IP6_LOCAL_OUT: u32 = 3;
+pub const NF_IP6_POST_ROUTING: u32 = 4;
+pub const NF_IP6_NUMHOOKS: u32 = 5;
+pub const XT_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const XT_EXTENSION_MAXNAMELEN: u32 = 29;
+pub const XT_TABLE_MAXNAMELEN: u32 = 32;
+pub const XT_CONTINUE: u32 = 4294967295;
+pub const XT_RETURN: i32 = -5;
+pub const XT_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const XT_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const XT_INV_PROTO: u32 = 64;
+pub const IP6T_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const IP6T_TABLE_MAXNAMELEN: u32 = 32;
+pub const IP6T_CONTINUE: u32 = 4294967295;
+pub const IP6T_RETURN: i32 = -5;
+pub const XT_TCP_INV_SRCPT: u32 = 1;
+pub const XT_TCP_INV_DSTPT: u32 = 2;
+pub const XT_TCP_INV_FLAGS: u32 = 4;
+pub const XT_TCP_INV_OPTION: u32 = 8;
+pub const XT_TCP_INV_MASK: u32 = 15;
+pub const XT_UDP_INV_SRCPT: u32 = 1;
+pub const XT_UDP_INV_DSTPT: u32 = 2;
+pub const XT_UDP_INV_MASK: u32 = 3;
+pub const IP6T_TCP_INV_SRCPT: u32 = 1;
+pub const IP6T_TCP_INV_DSTPT: u32 = 2;
+pub const IP6T_TCP_INV_FLAGS: u32 = 4;
+pub const IP6T_TCP_INV_OPTION: u32 = 8;
+pub const IP6T_TCP_INV_MASK: u32 = 15;
+pub const IP6T_UDP_INV_SRCPT: u32 = 1;
+pub const IP6T_UDP_INV_DSTPT: u32 = 2;
+pub const IP6T_UDP_INV_MASK: u32 = 3;
+pub const IP6T_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const IP6T_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const IP6T_F_PROTO: u32 = 1;
+pub const IP6T_F_TOS: u32 = 2;
+pub const IP6T_F_GOTO: u32 = 4;
+pub const IP6T_F_MASK: u32 = 7;
+pub const IP6T_INV_VIA_IN: u32 = 1;
+pub const IP6T_INV_VIA_OUT: u32 = 2;
+pub const IP6T_INV_TOS: u32 = 4;
+pub const IP6T_INV_SRCIP: u32 = 8;
+pub const IP6T_INV_DSTIP: u32 = 16;
+pub const IP6T_INV_FRAG: u32 = 32;
+pub const IP6T_INV_PROTO: u32 = 64;
+pub const IP6T_INV_MASK: u32 = 127;
+pub const IP6T_BASE_CTL: u32 = 64;
+pub const IP6T_SO_SET_REPLACE: u32 = 64;
+pub const IP6T_SO_SET_ADD_COUNTERS: u32 = 65;
+pub const IP6T_SO_SET_MAX: u32 = 65;
+pub const IP6T_SO_GET_INFO: u32 = 64;
+pub const IP6T_SO_GET_ENTRIES: u32 = 65;
+pub const IP6T_SO_GET_REVISION_MATCH: u32 = 68;
+pub const IP6T_SO_GET_REVISION_TARGET: u32 = 69;
+pub const IP6T_SO_GET_MAX: u32 = 69;
+pub const IP6T_SO_ORIGINAL_DST: u32 = 80;
+pub const IP6T_ICMP_INV: u32 = 1;
+pub const NF_IP_PRE_ROUTING: u32 = 0;
+pub const NF_IP_LOCAL_IN: u32 = 1;
+pub const NF_IP_FORWARD: u32 = 2;
+pub const NF_IP_LOCAL_OUT: u32 = 3;
+pub const NF_IP_POST_ROUTING: u32 = 4;
+pub const NF_IP_NUMHOOKS: u32 = 5;
+pub const SO_ORIGINAL_DST: u32 = 80;
pub const SHUT_RD: u32 = 0;
pub const SHUT_WR: u32 = 1;
pub const SHUT_RDWR: u32 = 2;
@@ -1385,6 +1773,25 @@ pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NO
pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
+pub const IF_OPER_UNKNOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UNKNOWN;
+pub const IF_OPER_NOTPRESENT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_NOTPRESENT;
+pub const IF_OPER_DOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DOWN;
+pub const IF_OPER_LOWERLAYERDOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_LOWERLAYERDOWN;
+pub const IF_OPER_TESTING: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_TESTING;
+pub const IF_OPER_DORMANT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DORMANT;
+pub const IF_OPER_UP: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UP;
+pub const IF_LINK_MODE_DEFAULT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DEFAULT;
+pub const IF_LINK_MODE_DORMANT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DORMANT;
+pub const IF_LINK_MODE_TESTING: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_TESTING;
+pub const NFPROTO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_UNSPEC;
+pub const NFPROTO_INET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_INET;
+pub const NFPROTO_IPV4: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV4;
+pub const NFPROTO_ARP: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_ARP;
+pub const NFPROTO_NETDEV: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NETDEV;
+pub const NFPROTO_BRIDGE: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_BRIDGE;
+pub const NFPROTO_IPV6: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV6;
+pub const NFPROTO_DECNET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_DECNET;
+pub const NFPROTO_NUMPROTO: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NUMPROTO;
#[repr(u32)]
#[non_exhaustive]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -1608,6 +2015,121 @@ TCP_NLA_EDT = 25,
TCP_NLA_TTL = 26,
TCP_NLA_REHASH = 27,
}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum net_device_flags {
+IFF_UP = 1,
+IFF_BROADCAST = 2,
+IFF_DEBUG = 4,
+IFF_LOOPBACK = 8,
+IFF_POINTOPOINT = 16,
+IFF_NOTRAILERS = 32,
+IFF_RUNNING = 64,
+IFF_NOARP = 128,
+IFF_PROMISC = 256,
+IFF_ALLMULTI = 512,
+IFF_MASTER = 1024,
+IFF_SLAVE = 2048,
+IFF_MULTICAST = 4096,
+IFF_PORTSEL = 8192,
+IFF_AUTOMEDIA = 16384,
+IFF_DYNAMIC = 32768,
+IFF_LOWER_UP = 65536,
+IFF_DORMANT = 131072,
+IFF_ECHO = 262144,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_7 {
+IF_OPER_UNKNOWN = 0,
+IF_OPER_NOTPRESENT = 1,
+IF_OPER_DOWN = 2,
+IF_OPER_LOWERLAYERDOWN = 3,
+IF_OPER_TESTING = 4,
+IF_OPER_DORMANT = 5,
+IF_OPER_UP = 6,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_8 {
+IF_LINK_MODE_DEFAULT = 0,
+IF_LINK_MODE_DORMANT = 1,
+IF_LINK_MODE_TESTING = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_inet_hooks {
+NF_INET_PRE_ROUTING = 0,
+NF_INET_LOCAL_IN = 1,
+NF_INET_FORWARD = 2,
+NF_INET_LOCAL_OUT = 3,
+NF_INET_POST_ROUTING = 4,
+NF_INET_NUMHOOKS = 5,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_dev_hooks {
+NF_NETDEV_INGRESS = 0,
+NF_NETDEV_EGRESS = 1,
+NF_NETDEV_NUMHOOKS = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_9 {
+NFPROTO_UNSPEC = 0,
+NFPROTO_INET = 1,
+NFPROTO_IPV4 = 2,
+NFPROTO_ARP = 3,
+NFPROTO_NETDEV = 5,
+NFPROTO_BRIDGE = 7,
+NFPROTO_IPV6 = 10,
+NFPROTO_DECNET = 12,
+NFPROTO_NUMPROTO = 13,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip6_hook_priorities {
+NF_IP6_PRI_FIRST = -2147483648,
+NF_IP6_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP6_PRI_RAW = -300,
+NF_IP6_PRI_SELINUX_FIRST = -225,
+NF_IP6_PRI_CONNTRACK = -200,
+NF_IP6_PRI_MANGLE = -150,
+NF_IP6_PRI_NAT_DST = -100,
+NF_IP6_PRI_FILTER = 0,
+NF_IP6_PRI_SECURITY = 50,
+NF_IP6_PRI_NAT_SRC = 100,
+NF_IP6_PRI_SELINUX_LAST = 225,
+NF_IP6_PRI_CONNTRACK_HELPER = 300,
+NF_IP6_PRI_LAST = 2147483647,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip_hook_priorities {
+NF_IP_PRI_FIRST = -2147483648,
+NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP_PRI_RAW = -300,
+NF_IP_PRI_SELINUX_FIRST = -225,
+NF_IP_PRI_CONNTRACK = -200,
+NF_IP_PRI_MANGLE = -150,
+NF_IP_PRI_NAT_DST = -100,
+NF_IP_PRI_FILTER = 0,
+NF_IP_PRI_SECURITY = 50,
+NF_IP_PRI_NAT_SRC = 100,
+NF_IP_PRI_SELINUX_LAST = 225,
+NF_IP_PRI_CONNTRACK_HELPER = 300,
+NF_IP_PRI_CONNTRACK_CONFIRM = 2147483647,
+}
#[repr(C)]
#[derive(Copy, Clone)]
pub union __kernel_sockaddr_storage__bindgen_ty_1 {
@@ -1639,6 +2161,69 @@ pub union tcp_word_hdr {
pub hdr: tcphdr,
pub words: [__be32; 5usize],
}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union if_settings__bindgen_ty_1 {
+pub raw_hdlc: *mut raw_hdlc_proto,
+pub cisco: *mut cisco_proto,
+pub fr: *mut fr_proto,
+pub fr_pvc: *mut fr_proto_pvc,
+pub fr_pvc_info: *mut fr_proto_pvc_info,
+pub x25: *mut x25_hdlc_proto,
+pub sync: *mut sync_serial_settings,
+pub te1: *mut te1_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_1 {
+pub ifrn_name: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_2 {
+pub ifru_addr: sockaddr,
+pub ifru_dstaddr: sockaddr,
+pub ifru_broadaddr: sockaddr,
+pub ifru_netmask: sockaddr,
+pub ifru_hwaddr: sockaddr,
+pub ifru_flags: crate::ctypes::c_short,
+pub ifru_ivalue: crate::ctypes::c_int,
+pub ifru_mtu: crate::ctypes::c_int,
+pub ifru_map: ifmap,
+pub ifru_slave: [crate::ctypes::c_char; 16usize],
+pub ifru_newname: [crate::ctypes::c_char; 16usize],
+pub ifru_data: *mut crate::ctypes::c_void,
+pub ifru_settings: if_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifconf__bindgen_ty_1 {
+pub ifcu_buf: *mut crate::ctypes::c_char,
+pub ifcu_req: *mut ifreq,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union nf_inet_addr {
+pub all: [__u32; 4usize],
+pub ip: __be32,
+pub ip6: [__be32; 4usize],
+pub in_: in_addr,
+pub in6: in6_addr,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_match__bindgen_ty_1 {
+pub user: xt_entry_match__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_match__bindgen_ty_1__bindgen_ty_2,
+pub match_size: __u16,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_target__bindgen_ty_1 {
+pub user: xt_entry_target__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_target__bindgen_ty_1__bindgen_ty_2,
+pub target_size: __u16,
+}
impl<Storage> __BindgenBitfieldUnit<Storage> {
#[inline]
pub const fn new(storage: Storage) -> Self {
@@ -2064,3 +2649,9 @@ tcpi_fastopen_client_fail as u64
__bindgen_bitfield_unit
}
}
+impl nf_inet_hooks {
+pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
+}
+impl nf_ip_hook_priorities {
+pub const NF_IP_PRI_LAST: nf_ip_hook_priorities = nf_ip_hook_priorities::NF_IP_PRI_CONNTRACK_CONFIRM;
+}
diff --git a/vendor/linux-raw-sys/src/x32/general.rs b/vendor/linux-raw-sys/src/x32/general.rs
index c23588f13..9eb612884 100644
--- a/vendor/linux-raw-sys/src/x32/general.rs
+++ b/vendor/linux-raw-sys/src/x32/general.rs
@@ -1582,6 +1582,19 @@ pub const POLLRDHUP: u32 = 8192;
pub const GRND_NONBLOCK: u32 = 1;
pub const GRND_RANDOM: u32 = 2;
pub const GRND_INSECURE: u32 = 4;
+pub const LINUX_REBOOT_MAGIC1: u32 = 4276215469;
+pub const LINUX_REBOOT_MAGIC2: u32 = 672274793;
+pub const LINUX_REBOOT_MAGIC2A: u32 = 85072278;
+pub const LINUX_REBOOT_MAGIC2B: u32 = 369367448;
+pub const LINUX_REBOOT_MAGIC2C: u32 = 537993216;
+pub const LINUX_REBOOT_CMD_RESTART: u32 = 19088743;
+pub const LINUX_REBOOT_CMD_HALT: u32 = 3454992675;
+pub const LINUX_REBOOT_CMD_CAD_ON: u32 = 2309737967;
+pub const LINUX_REBOOT_CMD_CAD_OFF: u32 = 0;
+pub const LINUX_REBOOT_CMD_POWER_OFF: u32 = 1126301404;
+pub const LINUX_REBOOT_CMD_RESTART2: u32 = 2712847316;
+pub const LINUX_REBOOT_CMD_SW_SUSPEND: u32 = 3489725666;
+pub const LINUX_REBOOT_CMD_KEXEC: u32 = 1163412803;
pub const ITIMER_REAL: u32 = 0;
pub const ITIMER_VIRTUAL: u32 = 1;
pub const ITIMER_PROF: u32 = 2;
diff --git a/vendor/linux-raw-sys/src/x32/net.rs b/vendor/linux-raw-sys/src/x32/net.rs
index d48dfc269..e01e29ca5 100644
--- a/vendor/linux-raw-sys/src/x32/net.rs
+++ b/vendor/linux-raw-sys/src/x32/net.rs
@@ -476,6 +476,255 @@ pub __storage: __kernel_sockaddr_storage,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct sync_serial_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct te1_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+pub slot_map: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct raw_hdlc_proto {
+pub encoding: crate::ctypes::c_ushort,
+pub parity: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto {
+pub t391: crate::ctypes::c_uint,
+pub t392: crate::ctypes::c_uint,
+pub n391: crate::ctypes::c_uint,
+pub n392: crate::ctypes::c_uint,
+pub n393: crate::ctypes::c_uint,
+pub lmi: crate::ctypes::c_ushort,
+pub dce: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc {
+pub dlci: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc_info {
+pub dlci: crate::ctypes::c_uint,
+pub master: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct cisco_proto {
+pub interval: crate::ctypes::c_uint,
+pub timeout: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct x25_hdlc_proto {
+pub dce: crate::ctypes::c_ushort,
+pub modulo: crate::ctypes::c_uint,
+pub window: crate::ctypes::c_uint,
+pub t1: crate::ctypes::c_uint,
+pub t2: crate::ctypes::c_uint,
+pub n2: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ifmap {
+pub mem_start: crate::ctypes::c_ulong,
+pub mem_end: crate::ctypes::c_ulong,
+pub base_addr: crate::ctypes::c_ushort,
+pub irq: crate::ctypes::c_uchar,
+pub dma: crate::ctypes::c_uchar,
+pub port: crate::ctypes::c_uchar,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct if_settings {
+pub type_: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub ifs_ifsu: if_settings__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifreq {
+pub ifr_ifrn: ifreq__bindgen_ty_1,
+pub ifr_ifru: ifreq__bindgen_ty_2,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifconf {
+pub ifc_len: crate::ctypes::c_int,
+pub ifc_ifcu: ifconf__bindgen_ty_1,
+}
+#[repr(C)]
+pub struct xt_entry_match {
+pub u: xt_entry_match__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_1 {
+pub match_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_2 {
+pub match_size: __u16,
+pub match_: *mut xt_match,
+}
+#[repr(C)]
+pub struct xt_entry_target {
+pub u: xt_entry_target__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_1 {
+pub target_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_2 {
+pub target_size: __u16,
+pub target: *mut xt_target,
+}
+#[repr(C)]
+pub struct xt_standard_target {
+pub target: xt_entry_target,
+pub verdict: crate::ctypes::c_int,
+}
+#[repr(C)]
+pub struct xt_error_target {
+pub target: xt_entry_target,
+pub errorname: [crate::ctypes::c_char; 30usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_get_revision {
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _xt_align {
+pub u8_: __u8,
+pub u16_: __u16,
+pub u32_: __u32,
+pub u64_: __u64,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_counters {
+pub pcnt: __u64,
+pub bcnt: __u64,
+}
+#[repr(C)]
+#[derive(Debug)]
+pub struct xt_counters_info {
+pub name: [crate::ctypes::c_char; 32usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: __IncompleteArrayField<xt_counters>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_tcp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub option: __u8,
+pub flg_mask: __u8,
+pub flg_cmp: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_udp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ip6t_ip6 {
+pub src: in6_addr,
+pub dst: in6_addr,
+pub smsk: in6_addr,
+pub dmsk: in6_addr,
+pub iniface: [crate::ctypes::c_char; 16usize],
+pub outiface: [crate::ctypes::c_char; 16usize],
+pub iniface_mask: [crate::ctypes::c_uchar; 16usize],
+pub outiface_mask: [crate::ctypes::c_uchar; 16usize],
+pub proto: __u16,
+pub tos: __u8,
+pub flags: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+pub struct ip6t_entry {
+pub ipv6: ip6t_ip6,
+pub nfcache: crate::ctypes::c_uint,
+pub target_offset: __u16,
+pub next_offset: __u16,
+pub comefrom: crate::ctypes::c_uint,
+pub counters: xt_counters,
+pub elems: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+pub struct ip6t_standard {
+pub entry: ip6t_entry,
+pub target: xt_standard_target,
+}
+#[repr(C)]
+pub struct ip6t_error {
+pub entry: ip6t_entry,
+pub target: xt_error_target,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_icmp {
+pub type_: __u8,
+pub code: [__u8; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_getinfo {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+}
+#[repr(C)]
+pub struct ip6t_replace {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: *mut xt_counters,
+pub entries: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+pub struct ip6t_get_entries {
+pub name: [crate::ctypes::c_char; 32usize],
+pub size: crate::ctypes::c_uint,
+pub entrytable: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct linger {
pub l_onoff: crate::ctypes::c_int,
pub l_linger: crate::ctypes::c_int,
@@ -513,6 +762,16 @@ pub msg_len: crate::ctypes::c_uint,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct xt_match {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_target {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct iovec {
pub _address: u8,
}
@@ -935,6 +1194,135 @@ pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
pub const UNIX_PATH_MAX: u32 = 108;
+pub const IFNAMSIZ: u32 = 16;
+pub const IFALIASZ: u32 = 256;
+pub const ALTIFNAMSIZ: u32 = 128;
+pub const GENERIC_HDLC_VERSION: u32 = 4;
+pub const CLOCK_DEFAULT: u32 = 0;
+pub const CLOCK_EXT: u32 = 1;
+pub const CLOCK_INT: u32 = 2;
+pub const CLOCK_TXINT: u32 = 3;
+pub const CLOCK_TXFROMRX: u32 = 4;
+pub const ENCODING_DEFAULT: u32 = 0;
+pub const ENCODING_NRZ: u32 = 1;
+pub const ENCODING_NRZI: u32 = 2;
+pub const ENCODING_FM_MARK: u32 = 3;
+pub const ENCODING_FM_SPACE: u32 = 4;
+pub const ENCODING_MANCHESTER: u32 = 5;
+pub const PARITY_DEFAULT: u32 = 0;
+pub const PARITY_NONE: u32 = 1;
+pub const PARITY_CRC16_PR0: u32 = 2;
+pub const PARITY_CRC16_PR1: u32 = 3;
+pub const PARITY_CRC16_PR0_CCITT: u32 = 4;
+pub const PARITY_CRC16_PR1_CCITT: u32 = 5;
+pub const PARITY_CRC32_PR0_CCITT: u32 = 6;
+pub const PARITY_CRC32_PR1_CCITT: u32 = 7;
+pub const LMI_DEFAULT: u32 = 0;
+pub const LMI_NONE: u32 = 1;
+pub const LMI_ANSI: u32 = 2;
+pub const LMI_CCITT: u32 = 3;
+pub const LMI_CISCO: u32 = 4;
+pub const IF_GET_IFACE: u32 = 1;
+pub const IF_GET_PROTO: u32 = 2;
+pub const IF_IFACE_V35: u32 = 4096;
+pub const IF_IFACE_V24: u32 = 4097;
+pub const IF_IFACE_X21: u32 = 4098;
+pub const IF_IFACE_T1: u32 = 4099;
+pub const IF_IFACE_E1: u32 = 4100;
+pub const IF_IFACE_SYNC_SERIAL: u32 = 4101;
+pub const IF_IFACE_X21D: u32 = 4102;
+pub const IF_PROTO_HDLC: u32 = 8192;
+pub const IF_PROTO_PPP: u32 = 8193;
+pub const IF_PROTO_CISCO: u32 = 8194;
+pub const IF_PROTO_FR: u32 = 8195;
+pub const IF_PROTO_FR_ADD_PVC: u32 = 8196;
+pub const IF_PROTO_FR_DEL_PVC: u32 = 8197;
+pub const IF_PROTO_X25: u32 = 8198;
+pub const IF_PROTO_HDLC_ETH: u32 = 8199;
+pub const IF_PROTO_FR_ADD_ETH_PVC: u32 = 8200;
+pub const IF_PROTO_FR_DEL_ETH_PVC: u32 = 8201;
+pub const IF_PROTO_FR_PVC: u32 = 8202;
+pub const IF_PROTO_FR_ETH_PVC: u32 = 8203;
+pub const IF_PROTO_RAW: u32 = 8204;
+pub const IFHWADDRLEN: u32 = 6;
+pub const NF_DROP: u32 = 0;
+pub const NF_ACCEPT: u32 = 1;
+pub const NF_STOLEN: u32 = 2;
+pub const NF_QUEUE: u32 = 3;
+pub const NF_REPEAT: u32 = 4;
+pub const NF_STOP: u32 = 5;
+pub const NF_MAX_VERDICT: u32 = 5;
+pub const NF_VERDICT_MASK: u32 = 255;
+pub const NF_VERDICT_FLAG_QUEUE_BYPASS: u32 = 32768;
+pub const NF_VERDICT_QMASK: u32 = 4294901760;
+pub const NF_VERDICT_QBITS: u32 = 16;
+pub const NF_VERDICT_BITS: u32 = 16;
+pub const NF_IP6_PRE_ROUTING: u32 = 0;
+pub const NF_IP6_LOCAL_IN: u32 = 1;
+pub const NF_IP6_FORWARD: u32 = 2;
+pub const NF_IP6_LOCAL_OUT: u32 = 3;
+pub const NF_IP6_POST_ROUTING: u32 = 4;
+pub const NF_IP6_NUMHOOKS: u32 = 5;
+pub const XT_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const XT_EXTENSION_MAXNAMELEN: u32 = 29;
+pub const XT_TABLE_MAXNAMELEN: u32 = 32;
+pub const XT_CONTINUE: u32 = 4294967295;
+pub const XT_RETURN: i32 = -5;
+pub const XT_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const XT_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const XT_INV_PROTO: u32 = 64;
+pub const IP6T_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const IP6T_TABLE_MAXNAMELEN: u32 = 32;
+pub const IP6T_CONTINUE: u32 = 4294967295;
+pub const IP6T_RETURN: i32 = -5;
+pub const XT_TCP_INV_SRCPT: u32 = 1;
+pub const XT_TCP_INV_DSTPT: u32 = 2;
+pub const XT_TCP_INV_FLAGS: u32 = 4;
+pub const XT_TCP_INV_OPTION: u32 = 8;
+pub const XT_TCP_INV_MASK: u32 = 15;
+pub const XT_UDP_INV_SRCPT: u32 = 1;
+pub const XT_UDP_INV_DSTPT: u32 = 2;
+pub const XT_UDP_INV_MASK: u32 = 3;
+pub const IP6T_TCP_INV_SRCPT: u32 = 1;
+pub const IP6T_TCP_INV_DSTPT: u32 = 2;
+pub const IP6T_TCP_INV_FLAGS: u32 = 4;
+pub const IP6T_TCP_INV_OPTION: u32 = 8;
+pub const IP6T_TCP_INV_MASK: u32 = 15;
+pub const IP6T_UDP_INV_SRCPT: u32 = 1;
+pub const IP6T_UDP_INV_DSTPT: u32 = 2;
+pub const IP6T_UDP_INV_MASK: u32 = 3;
+pub const IP6T_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const IP6T_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const IP6T_F_PROTO: u32 = 1;
+pub const IP6T_F_TOS: u32 = 2;
+pub const IP6T_F_GOTO: u32 = 4;
+pub const IP6T_F_MASK: u32 = 7;
+pub const IP6T_INV_VIA_IN: u32 = 1;
+pub const IP6T_INV_VIA_OUT: u32 = 2;
+pub const IP6T_INV_TOS: u32 = 4;
+pub const IP6T_INV_SRCIP: u32 = 8;
+pub const IP6T_INV_DSTIP: u32 = 16;
+pub const IP6T_INV_FRAG: u32 = 32;
+pub const IP6T_INV_PROTO: u32 = 64;
+pub const IP6T_INV_MASK: u32 = 127;
+pub const IP6T_BASE_CTL: u32 = 64;
+pub const IP6T_SO_SET_REPLACE: u32 = 64;
+pub const IP6T_SO_SET_ADD_COUNTERS: u32 = 65;
+pub const IP6T_SO_SET_MAX: u32 = 65;
+pub const IP6T_SO_GET_INFO: u32 = 64;
+pub const IP6T_SO_GET_ENTRIES: u32 = 65;
+pub const IP6T_SO_GET_REVISION_MATCH: u32 = 68;
+pub const IP6T_SO_GET_REVISION_TARGET: u32 = 69;
+pub const IP6T_SO_GET_MAX: u32 = 69;
+pub const IP6T_SO_ORIGINAL_DST: u32 = 80;
+pub const IP6T_ICMP_INV: u32 = 1;
+pub const NF_IP_PRE_ROUTING: u32 = 0;
+pub const NF_IP_LOCAL_IN: u32 = 1;
+pub const NF_IP_FORWARD: u32 = 2;
+pub const NF_IP_LOCAL_OUT: u32 = 3;
+pub const NF_IP_POST_ROUTING: u32 = 4;
+pub const NF_IP_NUMHOOKS: u32 = 5;
+pub const SO_ORIGINAL_DST: u32 = 80;
pub const SHUT_RD: u32 = 0;
pub const SHUT_WR: u32 = 1;
pub const SHUT_RDWR: u32 = 2;
@@ -1163,6 +1551,25 @@ pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NO
pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
+pub const IF_OPER_UNKNOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UNKNOWN;
+pub const IF_OPER_NOTPRESENT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_NOTPRESENT;
+pub const IF_OPER_DOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DOWN;
+pub const IF_OPER_LOWERLAYERDOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_LOWERLAYERDOWN;
+pub const IF_OPER_TESTING: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_TESTING;
+pub const IF_OPER_DORMANT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DORMANT;
+pub const IF_OPER_UP: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UP;
+pub const IF_LINK_MODE_DEFAULT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DEFAULT;
+pub const IF_LINK_MODE_DORMANT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DORMANT;
+pub const IF_LINK_MODE_TESTING: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_TESTING;
+pub const NFPROTO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_UNSPEC;
+pub const NFPROTO_INET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_INET;
+pub const NFPROTO_IPV4: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV4;
+pub const NFPROTO_ARP: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_ARP;
+pub const NFPROTO_NETDEV: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NETDEV;
+pub const NFPROTO_BRIDGE: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_BRIDGE;
+pub const NFPROTO_IPV6: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV6;
+pub const NFPROTO_DECNET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_DECNET;
+pub const NFPROTO_NUMPROTO: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NUMPROTO;
#[repr(u32)]
#[non_exhaustive]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -1386,6 +1793,121 @@ TCP_NLA_EDT = 25,
TCP_NLA_TTL = 26,
TCP_NLA_REHASH = 27,
}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum net_device_flags {
+IFF_UP = 1,
+IFF_BROADCAST = 2,
+IFF_DEBUG = 4,
+IFF_LOOPBACK = 8,
+IFF_POINTOPOINT = 16,
+IFF_NOTRAILERS = 32,
+IFF_RUNNING = 64,
+IFF_NOARP = 128,
+IFF_PROMISC = 256,
+IFF_ALLMULTI = 512,
+IFF_MASTER = 1024,
+IFF_SLAVE = 2048,
+IFF_MULTICAST = 4096,
+IFF_PORTSEL = 8192,
+IFF_AUTOMEDIA = 16384,
+IFF_DYNAMIC = 32768,
+IFF_LOWER_UP = 65536,
+IFF_DORMANT = 131072,
+IFF_ECHO = 262144,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_7 {
+IF_OPER_UNKNOWN = 0,
+IF_OPER_NOTPRESENT = 1,
+IF_OPER_DOWN = 2,
+IF_OPER_LOWERLAYERDOWN = 3,
+IF_OPER_TESTING = 4,
+IF_OPER_DORMANT = 5,
+IF_OPER_UP = 6,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_8 {
+IF_LINK_MODE_DEFAULT = 0,
+IF_LINK_MODE_DORMANT = 1,
+IF_LINK_MODE_TESTING = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_inet_hooks {
+NF_INET_PRE_ROUTING = 0,
+NF_INET_LOCAL_IN = 1,
+NF_INET_FORWARD = 2,
+NF_INET_LOCAL_OUT = 3,
+NF_INET_POST_ROUTING = 4,
+NF_INET_NUMHOOKS = 5,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_dev_hooks {
+NF_NETDEV_INGRESS = 0,
+NF_NETDEV_EGRESS = 1,
+NF_NETDEV_NUMHOOKS = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_9 {
+NFPROTO_UNSPEC = 0,
+NFPROTO_INET = 1,
+NFPROTO_IPV4 = 2,
+NFPROTO_ARP = 3,
+NFPROTO_NETDEV = 5,
+NFPROTO_BRIDGE = 7,
+NFPROTO_IPV6 = 10,
+NFPROTO_DECNET = 12,
+NFPROTO_NUMPROTO = 13,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip6_hook_priorities {
+NF_IP6_PRI_FIRST = -2147483648,
+NF_IP6_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP6_PRI_RAW = -300,
+NF_IP6_PRI_SELINUX_FIRST = -225,
+NF_IP6_PRI_CONNTRACK = -200,
+NF_IP6_PRI_MANGLE = -150,
+NF_IP6_PRI_NAT_DST = -100,
+NF_IP6_PRI_FILTER = 0,
+NF_IP6_PRI_SECURITY = 50,
+NF_IP6_PRI_NAT_SRC = 100,
+NF_IP6_PRI_SELINUX_LAST = 225,
+NF_IP6_PRI_CONNTRACK_HELPER = 300,
+NF_IP6_PRI_LAST = 2147483647,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip_hook_priorities {
+NF_IP_PRI_FIRST = -2147483648,
+NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP_PRI_RAW = -300,
+NF_IP_PRI_SELINUX_FIRST = -225,
+NF_IP_PRI_CONNTRACK = -200,
+NF_IP_PRI_MANGLE = -150,
+NF_IP_PRI_NAT_DST = -100,
+NF_IP_PRI_FILTER = 0,
+NF_IP_PRI_SECURITY = 50,
+NF_IP_PRI_NAT_SRC = 100,
+NF_IP_PRI_SELINUX_LAST = 225,
+NF_IP_PRI_CONNTRACK_HELPER = 300,
+NF_IP_PRI_CONNTRACK_CONFIRM = 2147483647,
+}
#[repr(C)]
#[derive(Copy, Clone)]
pub union __kernel_sockaddr_storage__bindgen_ty_1 {
@@ -1417,6 +1939,69 @@ pub union tcp_word_hdr {
pub hdr: tcphdr,
pub words: [__be32; 5usize],
}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union if_settings__bindgen_ty_1 {
+pub raw_hdlc: *mut raw_hdlc_proto,
+pub cisco: *mut cisco_proto,
+pub fr: *mut fr_proto,
+pub fr_pvc: *mut fr_proto_pvc,
+pub fr_pvc_info: *mut fr_proto_pvc_info,
+pub x25: *mut x25_hdlc_proto,
+pub sync: *mut sync_serial_settings,
+pub te1: *mut te1_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_1 {
+pub ifrn_name: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_2 {
+pub ifru_addr: sockaddr,
+pub ifru_dstaddr: sockaddr,
+pub ifru_broadaddr: sockaddr,
+pub ifru_netmask: sockaddr,
+pub ifru_hwaddr: sockaddr,
+pub ifru_flags: crate::ctypes::c_short,
+pub ifru_ivalue: crate::ctypes::c_int,
+pub ifru_mtu: crate::ctypes::c_int,
+pub ifru_map: ifmap,
+pub ifru_slave: [crate::ctypes::c_char; 16usize],
+pub ifru_newname: [crate::ctypes::c_char; 16usize],
+pub ifru_data: *mut crate::ctypes::c_void,
+pub ifru_settings: if_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifconf__bindgen_ty_1 {
+pub ifcu_buf: *mut crate::ctypes::c_char,
+pub ifcu_req: *mut ifreq,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union nf_inet_addr {
+pub all: [__u32; 4usize],
+pub ip: __be32,
+pub ip6: [__be32; 4usize],
+pub in_: in_addr,
+pub in6: in6_addr,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_match__bindgen_ty_1 {
+pub user: xt_entry_match__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_match__bindgen_ty_1__bindgen_ty_2,
+pub match_size: __u16,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_target__bindgen_ty_1 {
+pub user: xt_entry_target__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_target__bindgen_ty_1__bindgen_ty_2,
+pub target_size: __u16,
+}
impl<Storage> __BindgenBitfieldUnit<Storage> {
#[inline]
pub const fn new(storage: Storage) -> Self {
@@ -1842,3 +2427,9 @@ tcpi_fastopen_client_fail as u64
__bindgen_bitfield_unit
}
}
+impl nf_inet_hooks {
+pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
+}
+impl nf_ip_hook_priorities {
+pub const NF_IP_PRI_LAST: nf_ip_hook_priorities = nf_ip_hook_priorities::NF_IP_PRI_CONNTRACK_CONFIRM;
+}
diff --git a/vendor/linux-raw-sys/src/x86/general.rs b/vendor/linux-raw-sys/src/x86/general.rs
index 68bc4ab4d..17b34b1ae 100644
--- a/vendor/linux-raw-sys/src/x86/general.rs
+++ b/vendor/linux-raw-sys/src/x86/general.rs
@@ -1605,6 +1605,19 @@ pub const POLLRDHUP: u32 = 8192;
pub const GRND_NONBLOCK: u32 = 1;
pub const GRND_RANDOM: u32 = 2;
pub const GRND_INSECURE: u32 = 4;
+pub const LINUX_REBOOT_MAGIC1: u32 = 4276215469;
+pub const LINUX_REBOOT_MAGIC2: u32 = 672274793;
+pub const LINUX_REBOOT_MAGIC2A: u32 = 85072278;
+pub const LINUX_REBOOT_MAGIC2B: u32 = 369367448;
+pub const LINUX_REBOOT_MAGIC2C: u32 = 537993216;
+pub const LINUX_REBOOT_CMD_RESTART: u32 = 19088743;
+pub const LINUX_REBOOT_CMD_HALT: u32 = 3454992675;
+pub const LINUX_REBOOT_CMD_CAD_ON: u32 = 2309737967;
+pub const LINUX_REBOOT_CMD_CAD_OFF: u32 = 0;
+pub const LINUX_REBOOT_CMD_POWER_OFF: u32 = 1126301404;
+pub const LINUX_REBOOT_CMD_RESTART2: u32 = 2712847316;
+pub const LINUX_REBOOT_CMD_SW_SUSPEND: u32 = 3489725666;
+pub const LINUX_REBOOT_CMD_KEXEC: u32 = 1163412803;
pub const ITIMER_REAL: u32 = 0;
pub const ITIMER_VIRTUAL: u32 = 1;
pub const ITIMER_PROF: u32 = 2;
diff --git a/vendor/linux-raw-sys/src/x86/net.rs b/vendor/linux-raw-sys/src/x86/net.rs
index 86228098f..77c92c318 100644
--- a/vendor/linux-raw-sys/src/x86/net.rs
+++ b/vendor/linux-raw-sys/src/x86/net.rs
@@ -476,6 +476,255 @@ pub __storage: __kernel_sockaddr_storage,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct sync_serial_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct te1_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+pub slot_map: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct raw_hdlc_proto {
+pub encoding: crate::ctypes::c_ushort,
+pub parity: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto {
+pub t391: crate::ctypes::c_uint,
+pub t392: crate::ctypes::c_uint,
+pub n391: crate::ctypes::c_uint,
+pub n392: crate::ctypes::c_uint,
+pub n393: crate::ctypes::c_uint,
+pub lmi: crate::ctypes::c_ushort,
+pub dce: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc {
+pub dlci: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc_info {
+pub dlci: crate::ctypes::c_uint,
+pub master: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct cisco_proto {
+pub interval: crate::ctypes::c_uint,
+pub timeout: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct x25_hdlc_proto {
+pub dce: crate::ctypes::c_ushort,
+pub modulo: crate::ctypes::c_uint,
+pub window: crate::ctypes::c_uint,
+pub t1: crate::ctypes::c_uint,
+pub t2: crate::ctypes::c_uint,
+pub n2: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ifmap {
+pub mem_start: crate::ctypes::c_ulong,
+pub mem_end: crate::ctypes::c_ulong,
+pub base_addr: crate::ctypes::c_ushort,
+pub irq: crate::ctypes::c_uchar,
+pub dma: crate::ctypes::c_uchar,
+pub port: crate::ctypes::c_uchar,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct if_settings {
+pub type_: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub ifs_ifsu: if_settings__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifreq {
+pub ifr_ifrn: ifreq__bindgen_ty_1,
+pub ifr_ifru: ifreq__bindgen_ty_2,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifconf {
+pub ifc_len: crate::ctypes::c_int,
+pub ifc_ifcu: ifconf__bindgen_ty_1,
+}
+#[repr(C)]
+pub struct xt_entry_match {
+pub u: xt_entry_match__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_1 {
+pub match_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_2 {
+pub match_size: __u16,
+pub match_: *mut xt_match,
+}
+#[repr(C)]
+pub struct xt_entry_target {
+pub u: xt_entry_target__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_1 {
+pub target_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_2 {
+pub target_size: __u16,
+pub target: *mut xt_target,
+}
+#[repr(C)]
+pub struct xt_standard_target {
+pub target: xt_entry_target,
+pub verdict: crate::ctypes::c_int,
+}
+#[repr(C)]
+pub struct xt_error_target {
+pub target: xt_entry_target,
+pub errorname: [crate::ctypes::c_char; 30usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_get_revision {
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _xt_align {
+pub u8_: __u8,
+pub u16_: __u16,
+pub u32_: __u32,
+pub u64_: __u64,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_counters {
+pub pcnt: __u64,
+pub bcnt: __u64,
+}
+#[repr(C)]
+#[derive(Debug)]
+pub struct xt_counters_info {
+pub name: [crate::ctypes::c_char; 32usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: __IncompleteArrayField<xt_counters>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_tcp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub option: __u8,
+pub flg_mask: __u8,
+pub flg_cmp: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_udp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ip6t_ip6 {
+pub src: in6_addr,
+pub dst: in6_addr,
+pub smsk: in6_addr,
+pub dmsk: in6_addr,
+pub iniface: [crate::ctypes::c_char; 16usize],
+pub outiface: [crate::ctypes::c_char; 16usize],
+pub iniface_mask: [crate::ctypes::c_uchar; 16usize],
+pub outiface_mask: [crate::ctypes::c_uchar; 16usize],
+pub proto: __u16,
+pub tos: __u8,
+pub flags: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+pub struct ip6t_entry {
+pub ipv6: ip6t_ip6,
+pub nfcache: crate::ctypes::c_uint,
+pub target_offset: __u16,
+pub next_offset: __u16,
+pub comefrom: crate::ctypes::c_uint,
+pub counters: xt_counters,
+pub elems: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+pub struct ip6t_standard {
+pub entry: ip6t_entry,
+pub target: xt_standard_target,
+}
+#[repr(C)]
+pub struct ip6t_error {
+pub entry: ip6t_entry,
+pub target: xt_error_target,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_icmp {
+pub type_: __u8,
+pub code: [__u8; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_getinfo {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+}
+#[repr(C)]
+pub struct ip6t_replace {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: *mut xt_counters,
+pub entries: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+pub struct ip6t_get_entries {
+pub name: [crate::ctypes::c_char; 32usize],
+pub size: crate::ctypes::c_uint,
+pub entrytable: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct linger {
pub l_onoff: crate::ctypes::c_int,
pub l_linger: crate::ctypes::c_int,
@@ -513,6 +762,16 @@ pub msg_len: crate::ctypes::c_uint,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct xt_match {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_target {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct iovec {
pub _address: u8,
}
@@ -927,6 +1186,135 @@ pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
pub const UNIX_PATH_MAX: u32 = 108;
+pub const IFNAMSIZ: u32 = 16;
+pub const IFALIASZ: u32 = 256;
+pub const ALTIFNAMSIZ: u32 = 128;
+pub const GENERIC_HDLC_VERSION: u32 = 4;
+pub const CLOCK_DEFAULT: u32 = 0;
+pub const CLOCK_EXT: u32 = 1;
+pub const CLOCK_INT: u32 = 2;
+pub const CLOCK_TXINT: u32 = 3;
+pub const CLOCK_TXFROMRX: u32 = 4;
+pub const ENCODING_DEFAULT: u32 = 0;
+pub const ENCODING_NRZ: u32 = 1;
+pub const ENCODING_NRZI: u32 = 2;
+pub const ENCODING_FM_MARK: u32 = 3;
+pub const ENCODING_FM_SPACE: u32 = 4;
+pub const ENCODING_MANCHESTER: u32 = 5;
+pub const PARITY_DEFAULT: u32 = 0;
+pub const PARITY_NONE: u32 = 1;
+pub const PARITY_CRC16_PR0: u32 = 2;
+pub const PARITY_CRC16_PR1: u32 = 3;
+pub const PARITY_CRC16_PR0_CCITT: u32 = 4;
+pub const PARITY_CRC16_PR1_CCITT: u32 = 5;
+pub const PARITY_CRC32_PR0_CCITT: u32 = 6;
+pub const PARITY_CRC32_PR1_CCITT: u32 = 7;
+pub const LMI_DEFAULT: u32 = 0;
+pub const LMI_NONE: u32 = 1;
+pub const LMI_ANSI: u32 = 2;
+pub const LMI_CCITT: u32 = 3;
+pub const LMI_CISCO: u32 = 4;
+pub const IF_GET_IFACE: u32 = 1;
+pub const IF_GET_PROTO: u32 = 2;
+pub const IF_IFACE_V35: u32 = 4096;
+pub const IF_IFACE_V24: u32 = 4097;
+pub const IF_IFACE_X21: u32 = 4098;
+pub const IF_IFACE_T1: u32 = 4099;
+pub const IF_IFACE_E1: u32 = 4100;
+pub const IF_IFACE_SYNC_SERIAL: u32 = 4101;
+pub const IF_IFACE_X21D: u32 = 4102;
+pub const IF_PROTO_HDLC: u32 = 8192;
+pub const IF_PROTO_PPP: u32 = 8193;
+pub const IF_PROTO_CISCO: u32 = 8194;
+pub const IF_PROTO_FR: u32 = 8195;
+pub const IF_PROTO_FR_ADD_PVC: u32 = 8196;
+pub const IF_PROTO_FR_DEL_PVC: u32 = 8197;
+pub const IF_PROTO_X25: u32 = 8198;
+pub const IF_PROTO_HDLC_ETH: u32 = 8199;
+pub const IF_PROTO_FR_ADD_ETH_PVC: u32 = 8200;
+pub const IF_PROTO_FR_DEL_ETH_PVC: u32 = 8201;
+pub const IF_PROTO_FR_PVC: u32 = 8202;
+pub const IF_PROTO_FR_ETH_PVC: u32 = 8203;
+pub const IF_PROTO_RAW: u32 = 8204;
+pub const IFHWADDRLEN: u32 = 6;
+pub const NF_DROP: u32 = 0;
+pub const NF_ACCEPT: u32 = 1;
+pub const NF_STOLEN: u32 = 2;
+pub const NF_QUEUE: u32 = 3;
+pub const NF_REPEAT: u32 = 4;
+pub const NF_STOP: u32 = 5;
+pub const NF_MAX_VERDICT: u32 = 5;
+pub const NF_VERDICT_MASK: u32 = 255;
+pub const NF_VERDICT_FLAG_QUEUE_BYPASS: u32 = 32768;
+pub const NF_VERDICT_QMASK: u32 = 4294901760;
+pub const NF_VERDICT_QBITS: u32 = 16;
+pub const NF_VERDICT_BITS: u32 = 16;
+pub const NF_IP6_PRE_ROUTING: u32 = 0;
+pub const NF_IP6_LOCAL_IN: u32 = 1;
+pub const NF_IP6_FORWARD: u32 = 2;
+pub const NF_IP6_LOCAL_OUT: u32 = 3;
+pub const NF_IP6_POST_ROUTING: u32 = 4;
+pub const NF_IP6_NUMHOOKS: u32 = 5;
+pub const XT_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const XT_EXTENSION_MAXNAMELEN: u32 = 29;
+pub const XT_TABLE_MAXNAMELEN: u32 = 32;
+pub const XT_CONTINUE: u32 = 4294967295;
+pub const XT_RETURN: i32 = -5;
+pub const XT_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const XT_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const XT_INV_PROTO: u32 = 64;
+pub const IP6T_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const IP6T_TABLE_MAXNAMELEN: u32 = 32;
+pub const IP6T_CONTINUE: u32 = 4294967295;
+pub const IP6T_RETURN: i32 = -5;
+pub const XT_TCP_INV_SRCPT: u32 = 1;
+pub const XT_TCP_INV_DSTPT: u32 = 2;
+pub const XT_TCP_INV_FLAGS: u32 = 4;
+pub const XT_TCP_INV_OPTION: u32 = 8;
+pub const XT_TCP_INV_MASK: u32 = 15;
+pub const XT_UDP_INV_SRCPT: u32 = 1;
+pub const XT_UDP_INV_DSTPT: u32 = 2;
+pub const XT_UDP_INV_MASK: u32 = 3;
+pub const IP6T_TCP_INV_SRCPT: u32 = 1;
+pub const IP6T_TCP_INV_DSTPT: u32 = 2;
+pub const IP6T_TCP_INV_FLAGS: u32 = 4;
+pub const IP6T_TCP_INV_OPTION: u32 = 8;
+pub const IP6T_TCP_INV_MASK: u32 = 15;
+pub const IP6T_UDP_INV_SRCPT: u32 = 1;
+pub const IP6T_UDP_INV_DSTPT: u32 = 2;
+pub const IP6T_UDP_INV_MASK: u32 = 3;
+pub const IP6T_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const IP6T_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const IP6T_F_PROTO: u32 = 1;
+pub const IP6T_F_TOS: u32 = 2;
+pub const IP6T_F_GOTO: u32 = 4;
+pub const IP6T_F_MASK: u32 = 7;
+pub const IP6T_INV_VIA_IN: u32 = 1;
+pub const IP6T_INV_VIA_OUT: u32 = 2;
+pub const IP6T_INV_TOS: u32 = 4;
+pub const IP6T_INV_SRCIP: u32 = 8;
+pub const IP6T_INV_DSTIP: u32 = 16;
+pub const IP6T_INV_FRAG: u32 = 32;
+pub const IP6T_INV_PROTO: u32 = 64;
+pub const IP6T_INV_MASK: u32 = 127;
+pub const IP6T_BASE_CTL: u32 = 64;
+pub const IP6T_SO_SET_REPLACE: u32 = 64;
+pub const IP6T_SO_SET_ADD_COUNTERS: u32 = 65;
+pub const IP6T_SO_SET_MAX: u32 = 65;
+pub const IP6T_SO_GET_INFO: u32 = 64;
+pub const IP6T_SO_GET_ENTRIES: u32 = 65;
+pub const IP6T_SO_GET_REVISION_MATCH: u32 = 68;
+pub const IP6T_SO_GET_REVISION_TARGET: u32 = 69;
+pub const IP6T_SO_GET_MAX: u32 = 69;
+pub const IP6T_SO_ORIGINAL_DST: u32 = 80;
+pub const IP6T_ICMP_INV: u32 = 1;
+pub const NF_IP_PRE_ROUTING: u32 = 0;
+pub const NF_IP_LOCAL_IN: u32 = 1;
+pub const NF_IP_FORWARD: u32 = 2;
+pub const NF_IP_LOCAL_OUT: u32 = 3;
+pub const NF_IP_POST_ROUTING: u32 = 4;
+pub const NF_IP_NUMHOOKS: u32 = 5;
+pub const SO_ORIGINAL_DST: u32 = 80;
pub const SHUT_RD: u32 = 0;
pub const SHUT_WR: u32 = 1;
pub const SHUT_RDWR: u32 = 2;
@@ -1155,6 +1543,25 @@ pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NO
pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
+pub const IF_OPER_UNKNOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UNKNOWN;
+pub const IF_OPER_NOTPRESENT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_NOTPRESENT;
+pub const IF_OPER_DOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DOWN;
+pub const IF_OPER_LOWERLAYERDOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_LOWERLAYERDOWN;
+pub const IF_OPER_TESTING: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_TESTING;
+pub const IF_OPER_DORMANT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DORMANT;
+pub const IF_OPER_UP: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UP;
+pub const IF_LINK_MODE_DEFAULT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DEFAULT;
+pub const IF_LINK_MODE_DORMANT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DORMANT;
+pub const IF_LINK_MODE_TESTING: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_TESTING;
+pub const NFPROTO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_UNSPEC;
+pub const NFPROTO_INET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_INET;
+pub const NFPROTO_IPV4: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV4;
+pub const NFPROTO_ARP: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_ARP;
+pub const NFPROTO_NETDEV: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NETDEV;
+pub const NFPROTO_BRIDGE: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_BRIDGE;
+pub const NFPROTO_IPV6: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV6;
+pub const NFPROTO_DECNET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_DECNET;
+pub const NFPROTO_NUMPROTO: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NUMPROTO;
#[repr(u32)]
#[non_exhaustive]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -1378,6 +1785,121 @@ TCP_NLA_EDT = 25,
TCP_NLA_TTL = 26,
TCP_NLA_REHASH = 27,
}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum net_device_flags {
+IFF_UP = 1,
+IFF_BROADCAST = 2,
+IFF_DEBUG = 4,
+IFF_LOOPBACK = 8,
+IFF_POINTOPOINT = 16,
+IFF_NOTRAILERS = 32,
+IFF_RUNNING = 64,
+IFF_NOARP = 128,
+IFF_PROMISC = 256,
+IFF_ALLMULTI = 512,
+IFF_MASTER = 1024,
+IFF_SLAVE = 2048,
+IFF_MULTICAST = 4096,
+IFF_PORTSEL = 8192,
+IFF_AUTOMEDIA = 16384,
+IFF_DYNAMIC = 32768,
+IFF_LOWER_UP = 65536,
+IFF_DORMANT = 131072,
+IFF_ECHO = 262144,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_7 {
+IF_OPER_UNKNOWN = 0,
+IF_OPER_NOTPRESENT = 1,
+IF_OPER_DOWN = 2,
+IF_OPER_LOWERLAYERDOWN = 3,
+IF_OPER_TESTING = 4,
+IF_OPER_DORMANT = 5,
+IF_OPER_UP = 6,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_8 {
+IF_LINK_MODE_DEFAULT = 0,
+IF_LINK_MODE_DORMANT = 1,
+IF_LINK_MODE_TESTING = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_inet_hooks {
+NF_INET_PRE_ROUTING = 0,
+NF_INET_LOCAL_IN = 1,
+NF_INET_FORWARD = 2,
+NF_INET_LOCAL_OUT = 3,
+NF_INET_POST_ROUTING = 4,
+NF_INET_NUMHOOKS = 5,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_dev_hooks {
+NF_NETDEV_INGRESS = 0,
+NF_NETDEV_EGRESS = 1,
+NF_NETDEV_NUMHOOKS = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_9 {
+NFPROTO_UNSPEC = 0,
+NFPROTO_INET = 1,
+NFPROTO_IPV4 = 2,
+NFPROTO_ARP = 3,
+NFPROTO_NETDEV = 5,
+NFPROTO_BRIDGE = 7,
+NFPROTO_IPV6 = 10,
+NFPROTO_DECNET = 12,
+NFPROTO_NUMPROTO = 13,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip6_hook_priorities {
+NF_IP6_PRI_FIRST = -2147483648,
+NF_IP6_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP6_PRI_RAW = -300,
+NF_IP6_PRI_SELINUX_FIRST = -225,
+NF_IP6_PRI_CONNTRACK = -200,
+NF_IP6_PRI_MANGLE = -150,
+NF_IP6_PRI_NAT_DST = -100,
+NF_IP6_PRI_FILTER = 0,
+NF_IP6_PRI_SECURITY = 50,
+NF_IP6_PRI_NAT_SRC = 100,
+NF_IP6_PRI_SELINUX_LAST = 225,
+NF_IP6_PRI_CONNTRACK_HELPER = 300,
+NF_IP6_PRI_LAST = 2147483647,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip_hook_priorities {
+NF_IP_PRI_FIRST = -2147483648,
+NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP_PRI_RAW = -300,
+NF_IP_PRI_SELINUX_FIRST = -225,
+NF_IP_PRI_CONNTRACK = -200,
+NF_IP_PRI_MANGLE = -150,
+NF_IP_PRI_NAT_DST = -100,
+NF_IP_PRI_FILTER = 0,
+NF_IP_PRI_SECURITY = 50,
+NF_IP_PRI_NAT_SRC = 100,
+NF_IP_PRI_SELINUX_LAST = 225,
+NF_IP_PRI_CONNTRACK_HELPER = 300,
+NF_IP_PRI_CONNTRACK_CONFIRM = 2147483647,
+}
#[repr(C)]
#[derive(Copy, Clone)]
pub union __kernel_sockaddr_storage__bindgen_ty_1 {
@@ -1409,6 +1931,69 @@ pub union tcp_word_hdr {
pub hdr: tcphdr,
pub words: [__be32; 5usize],
}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union if_settings__bindgen_ty_1 {
+pub raw_hdlc: *mut raw_hdlc_proto,
+pub cisco: *mut cisco_proto,
+pub fr: *mut fr_proto,
+pub fr_pvc: *mut fr_proto_pvc,
+pub fr_pvc_info: *mut fr_proto_pvc_info,
+pub x25: *mut x25_hdlc_proto,
+pub sync: *mut sync_serial_settings,
+pub te1: *mut te1_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_1 {
+pub ifrn_name: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_2 {
+pub ifru_addr: sockaddr,
+pub ifru_dstaddr: sockaddr,
+pub ifru_broadaddr: sockaddr,
+pub ifru_netmask: sockaddr,
+pub ifru_hwaddr: sockaddr,
+pub ifru_flags: crate::ctypes::c_short,
+pub ifru_ivalue: crate::ctypes::c_int,
+pub ifru_mtu: crate::ctypes::c_int,
+pub ifru_map: ifmap,
+pub ifru_slave: [crate::ctypes::c_char; 16usize],
+pub ifru_newname: [crate::ctypes::c_char; 16usize],
+pub ifru_data: *mut crate::ctypes::c_void,
+pub ifru_settings: if_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifconf__bindgen_ty_1 {
+pub ifcu_buf: *mut crate::ctypes::c_char,
+pub ifcu_req: *mut ifreq,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union nf_inet_addr {
+pub all: [__u32; 4usize],
+pub ip: __be32,
+pub ip6: [__be32; 4usize],
+pub in_: in_addr,
+pub in6: in6_addr,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_match__bindgen_ty_1 {
+pub user: xt_entry_match__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_match__bindgen_ty_1__bindgen_ty_2,
+pub match_size: __u16,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_target__bindgen_ty_1 {
+pub user: xt_entry_target__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_target__bindgen_ty_1__bindgen_ty_2,
+pub target_size: __u16,
+}
impl<Storage> __BindgenBitfieldUnit<Storage> {
#[inline]
pub const fn new(storage: Storage) -> Self {
@@ -1834,3 +2419,9 @@ tcpi_fastopen_client_fail as u64
__bindgen_bitfield_unit
}
}
+impl nf_inet_hooks {
+pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
+}
+impl nf_ip_hook_priorities {
+pub const NF_IP_PRI_LAST: nf_ip_hook_priorities = nf_ip_hook_priorities::NF_IP_PRI_CONNTRACK_CONFIRM;
+}
diff --git a/vendor/linux-raw-sys/src/x86_64/general.rs b/vendor/linux-raw-sys/src/x86_64/general.rs
index d33497c46..6c6fbe412 100644
--- a/vendor/linux-raw-sys/src/x86_64/general.rs
+++ b/vendor/linux-raw-sys/src/x86_64/general.rs
@@ -1577,6 +1577,19 @@ pub const POLLRDHUP: u32 = 8192;
pub const GRND_NONBLOCK: u32 = 1;
pub const GRND_RANDOM: u32 = 2;
pub const GRND_INSECURE: u32 = 4;
+pub const LINUX_REBOOT_MAGIC1: u32 = 4276215469;
+pub const LINUX_REBOOT_MAGIC2: u32 = 672274793;
+pub const LINUX_REBOOT_MAGIC2A: u32 = 85072278;
+pub const LINUX_REBOOT_MAGIC2B: u32 = 369367448;
+pub const LINUX_REBOOT_MAGIC2C: u32 = 537993216;
+pub const LINUX_REBOOT_CMD_RESTART: u32 = 19088743;
+pub const LINUX_REBOOT_CMD_HALT: u32 = 3454992675;
+pub const LINUX_REBOOT_CMD_CAD_ON: u32 = 2309737967;
+pub const LINUX_REBOOT_CMD_CAD_OFF: u32 = 0;
+pub const LINUX_REBOOT_CMD_POWER_OFF: u32 = 1126301404;
+pub const LINUX_REBOOT_CMD_RESTART2: u32 = 2712847316;
+pub const LINUX_REBOOT_CMD_SW_SUSPEND: u32 = 3489725666;
+pub const LINUX_REBOOT_CMD_KEXEC: u32 = 1163412803;
pub const ITIMER_REAL: u32 = 0;
pub const ITIMER_VIRTUAL: u32 = 1;
pub const ITIMER_PROF: u32 = 2;
diff --git a/vendor/linux-raw-sys/src/x86_64/net.rs b/vendor/linux-raw-sys/src/x86_64/net.rs
index 51e11c283..6e55068af 100644
--- a/vendor/linux-raw-sys/src/x86_64/net.rs
+++ b/vendor/linux-raw-sys/src/x86_64/net.rs
@@ -476,6 +476,255 @@ pub __storage: __kernel_sockaddr_storage,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct sync_serial_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct te1_settings {
+pub clock_rate: crate::ctypes::c_uint,
+pub clock_type: crate::ctypes::c_uint,
+pub loopback: crate::ctypes::c_ushort,
+pub slot_map: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct raw_hdlc_proto {
+pub encoding: crate::ctypes::c_ushort,
+pub parity: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto {
+pub t391: crate::ctypes::c_uint,
+pub t392: crate::ctypes::c_uint,
+pub n391: crate::ctypes::c_uint,
+pub n392: crate::ctypes::c_uint,
+pub n393: crate::ctypes::c_uint,
+pub lmi: crate::ctypes::c_ushort,
+pub dce: crate::ctypes::c_ushort,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc {
+pub dlci: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct fr_proto_pvc_info {
+pub dlci: crate::ctypes::c_uint,
+pub master: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct cisco_proto {
+pub interval: crate::ctypes::c_uint,
+pub timeout: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct x25_hdlc_proto {
+pub dce: crate::ctypes::c_ushort,
+pub modulo: crate::ctypes::c_uint,
+pub window: crate::ctypes::c_uint,
+pub t1: crate::ctypes::c_uint,
+pub t2: crate::ctypes::c_uint,
+pub n2: crate::ctypes::c_uint,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ifmap {
+pub mem_start: crate::ctypes::c_ulong,
+pub mem_end: crate::ctypes::c_ulong,
+pub base_addr: crate::ctypes::c_ushort,
+pub irq: crate::ctypes::c_uchar,
+pub dma: crate::ctypes::c_uchar,
+pub port: crate::ctypes::c_uchar,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct if_settings {
+pub type_: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub ifs_ifsu: if_settings__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifreq {
+pub ifr_ifrn: ifreq__bindgen_ty_1,
+pub ifr_ifru: ifreq__bindgen_ty_2,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ifconf {
+pub ifc_len: crate::ctypes::c_int,
+pub ifc_ifcu: ifconf__bindgen_ty_1,
+}
+#[repr(C)]
+pub struct xt_entry_match {
+pub u: xt_entry_match__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_1 {
+pub match_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_match__bindgen_ty_1__bindgen_ty_2 {
+pub match_size: __u16,
+pub match_: *mut xt_match,
+}
+#[repr(C)]
+pub struct xt_entry_target {
+pub u: xt_entry_target__bindgen_ty_1,
+pub data: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_1 {
+pub target_size: __u16,
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_entry_target__bindgen_ty_1__bindgen_ty_2 {
+pub target_size: __u16,
+pub target: *mut xt_target,
+}
+#[repr(C)]
+pub struct xt_standard_target {
+pub target: xt_entry_target,
+pub verdict: crate::ctypes::c_int,
+}
+#[repr(C)]
+pub struct xt_error_target {
+pub target: xt_entry_target,
+pub errorname: [crate::ctypes::c_char; 30usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_get_revision {
+pub name: [crate::ctypes::c_char; 29usize],
+pub revision: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct _xt_align {
+pub u8_: __u8,
+pub u16_: __u16,
+pub u32_: __u32,
+pub u64_: __u64,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_counters {
+pub pcnt: __u64,
+pub bcnt: __u64,
+}
+#[repr(C)]
+#[derive(Debug)]
+pub struct xt_counters_info {
+pub name: [crate::ctypes::c_char; 32usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: __IncompleteArrayField<xt_counters>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_tcp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub option: __u8,
+pub flg_mask: __u8,
+pub flg_cmp: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_udp {
+pub spts: [__u16; 2usize],
+pub dpts: [__u16; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ip6t_ip6 {
+pub src: in6_addr,
+pub dst: in6_addr,
+pub smsk: in6_addr,
+pub dmsk: in6_addr,
+pub iniface: [crate::ctypes::c_char; 16usize],
+pub outiface: [crate::ctypes::c_char; 16usize],
+pub iniface_mask: [crate::ctypes::c_uchar; 16usize],
+pub outiface_mask: [crate::ctypes::c_uchar; 16usize],
+pub proto: __u16,
+pub tos: __u8,
+pub flags: __u8,
+pub invflags: __u8,
+}
+#[repr(C)]
+pub struct ip6t_entry {
+pub ipv6: ip6t_ip6,
+pub nfcache: crate::ctypes::c_uint,
+pub target_offset: __u16,
+pub next_offset: __u16,
+pub comefrom: crate::ctypes::c_uint,
+pub counters: xt_counters,
+pub elems: __IncompleteArrayField<crate::ctypes::c_uchar>,
+}
+#[repr(C)]
+pub struct ip6t_standard {
+pub entry: ip6t_entry,
+pub target: xt_standard_target,
+}
+#[repr(C)]
+pub struct ip6t_error {
+pub entry: ip6t_entry,
+pub target: xt_error_target,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_icmp {
+pub type_: __u8,
+pub code: [__u8; 2usize],
+pub invflags: __u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ip6t_getinfo {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+}
+#[repr(C)]
+pub struct ip6t_replace {
+pub name: [crate::ctypes::c_char; 32usize],
+pub valid_hooks: crate::ctypes::c_uint,
+pub num_entries: crate::ctypes::c_uint,
+pub size: crate::ctypes::c_uint,
+pub hook_entry: [crate::ctypes::c_uint; 5usize],
+pub underflow: [crate::ctypes::c_uint; 5usize],
+pub num_counters: crate::ctypes::c_uint,
+pub counters: *mut xt_counters,
+pub entries: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+pub struct ip6t_get_entries {
+pub name: [crate::ctypes::c_char; 32usize],
+pub size: crate::ctypes::c_uint,
+pub entrytable: __IncompleteArrayField<ip6t_entry>,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct linger {
pub l_onoff: crate::ctypes::c_int,
pub l_linger: crate::ctypes::c_int,
@@ -513,6 +762,16 @@ pub msg_len: crate::ctypes::c_uint,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
+pub struct xt_match {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct xt_target {
+pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
pub struct iovec {
pub _address: u8,
}
@@ -935,6 +1194,135 @@ pub const TCP_MD5SIG_FLAG_PREFIX: u32 = 1;
pub const TCP_MD5SIG_FLAG_IFINDEX: u32 = 2;
pub const TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT: u32 = 1;
pub const UNIX_PATH_MAX: u32 = 108;
+pub const IFNAMSIZ: u32 = 16;
+pub const IFALIASZ: u32 = 256;
+pub const ALTIFNAMSIZ: u32 = 128;
+pub const GENERIC_HDLC_VERSION: u32 = 4;
+pub const CLOCK_DEFAULT: u32 = 0;
+pub const CLOCK_EXT: u32 = 1;
+pub const CLOCK_INT: u32 = 2;
+pub const CLOCK_TXINT: u32 = 3;
+pub const CLOCK_TXFROMRX: u32 = 4;
+pub const ENCODING_DEFAULT: u32 = 0;
+pub const ENCODING_NRZ: u32 = 1;
+pub const ENCODING_NRZI: u32 = 2;
+pub const ENCODING_FM_MARK: u32 = 3;
+pub const ENCODING_FM_SPACE: u32 = 4;
+pub const ENCODING_MANCHESTER: u32 = 5;
+pub const PARITY_DEFAULT: u32 = 0;
+pub const PARITY_NONE: u32 = 1;
+pub const PARITY_CRC16_PR0: u32 = 2;
+pub const PARITY_CRC16_PR1: u32 = 3;
+pub const PARITY_CRC16_PR0_CCITT: u32 = 4;
+pub const PARITY_CRC16_PR1_CCITT: u32 = 5;
+pub const PARITY_CRC32_PR0_CCITT: u32 = 6;
+pub const PARITY_CRC32_PR1_CCITT: u32 = 7;
+pub const LMI_DEFAULT: u32 = 0;
+pub const LMI_NONE: u32 = 1;
+pub const LMI_ANSI: u32 = 2;
+pub const LMI_CCITT: u32 = 3;
+pub const LMI_CISCO: u32 = 4;
+pub const IF_GET_IFACE: u32 = 1;
+pub const IF_GET_PROTO: u32 = 2;
+pub const IF_IFACE_V35: u32 = 4096;
+pub const IF_IFACE_V24: u32 = 4097;
+pub const IF_IFACE_X21: u32 = 4098;
+pub const IF_IFACE_T1: u32 = 4099;
+pub const IF_IFACE_E1: u32 = 4100;
+pub const IF_IFACE_SYNC_SERIAL: u32 = 4101;
+pub const IF_IFACE_X21D: u32 = 4102;
+pub const IF_PROTO_HDLC: u32 = 8192;
+pub const IF_PROTO_PPP: u32 = 8193;
+pub const IF_PROTO_CISCO: u32 = 8194;
+pub const IF_PROTO_FR: u32 = 8195;
+pub const IF_PROTO_FR_ADD_PVC: u32 = 8196;
+pub const IF_PROTO_FR_DEL_PVC: u32 = 8197;
+pub const IF_PROTO_X25: u32 = 8198;
+pub const IF_PROTO_HDLC_ETH: u32 = 8199;
+pub const IF_PROTO_FR_ADD_ETH_PVC: u32 = 8200;
+pub const IF_PROTO_FR_DEL_ETH_PVC: u32 = 8201;
+pub const IF_PROTO_FR_PVC: u32 = 8202;
+pub const IF_PROTO_FR_ETH_PVC: u32 = 8203;
+pub const IF_PROTO_RAW: u32 = 8204;
+pub const IFHWADDRLEN: u32 = 6;
+pub const NF_DROP: u32 = 0;
+pub const NF_ACCEPT: u32 = 1;
+pub const NF_STOLEN: u32 = 2;
+pub const NF_QUEUE: u32 = 3;
+pub const NF_REPEAT: u32 = 4;
+pub const NF_STOP: u32 = 5;
+pub const NF_MAX_VERDICT: u32 = 5;
+pub const NF_VERDICT_MASK: u32 = 255;
+pub const NF_VERDICT_FLAG_QUEUE_BYPASS: u32 = 32768;
+pub const NF_VERDICT_QMASK: u32 = 4294901760;
+pub const NF_VERDICT_QBITS: u32 = 16;
+pub const NF_VERDICT_BITS: u32 = 16;
+pub const NF_IP6_PRE_ROUTING: u32 = 0;
+pub const NF_IP6_LOCAL_IN: u32 = 1;
+pub const NF_IP6_FORWARD: u32 = 2;
+pub const NF_IP6_LOCAL_OUT: u32 = 3;
+pub const NF_IP6_POST_ROUTING: u32 = 4;
+pub const NF_IP6_NUMHOOKS: u32 = 5;
+pub const XT_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const XT_EXTENSION_MAXNAMELEN: u32 = 29;
+pub const XT_TABLE_MAXNAMELEN: u32 = 32;
+pub const XT_CONTINUE: u32 = 4294967295;
+pub const XT_RETURN: i32 = -5;
+pub const XT_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const XT_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const XT_INV_PROTO: u32 = 64;
+pub const IP6T_FUNCTION_MAXNAMELEN: u32 = 30;
+pub const IP6T_TABLE_MAXNAMELEN: u32 = 32;
+pub const IP6T_CONTINUE: u32 = 4294967295;
+pub const IP6T_RETURN: i32 = -5;
+pub const XT_TCP_INV_SRCPT: u32 = 1;
+pub const XT_TCP_INV_DSTPT: u32 = 2;
+pub const XT_TCP_INV_FLAGS: u32 = 4;
+pub const XT_TCP_INV_OPTION: u32 = 8;
+pub const XT_TCP_INV_MASK: u32 = 15;
+pub const XT_UDP_INV_SRCPT: u32 = 1;
+pub const XT_UDP_INV_DSTPT: u32 = 2;
+pub const XT_UDP_INV_MASK: u32 = 3;
+pub const IP6T_TCP_INV_SRCPT: u32 = 1;
+pub const IP6T_TCP_INV_DSTPT: u32 = 2;
+pub const IP6T_TCP_INV_FLAGS: u32 = 4;
+pub const IP6T_TCP_INV_OPTION: u32 = 8;
+pub const IP6T_TCP_INV_MASK: u32 = 15;
+pub const IP6T_UDP_INV_SRCPT: u32 = 1;
+pub const IP6T_UDP_INV_DSTPT: u32 = 2;
+pub const IP6T_UDP_INV_MASK: u32 = 3;
+pub const IP6T_STANDARD_TARGET: &[u8; 1] = b"\0";
+pub const IP6T_ERROR_TARGET: &[u8; 6] = b"ERROR\0";
+pub const IP6T_F_PROTO: u32 = 1;
+pub const IP6T_F_TOS: u32 = 2;
+pub const IP6T_F_GOTO: u32 = 4;
+pub const IP6T_F_MASK: u32 = 7;
+pub const IP6T_INV_VIA_IN: u32 = 1;
+pub const IP6T_INV_VIA_OUT: u32 = 2;
+pub const IP6T_INV_TOS: u32 = 4;
+pub const IP6T_INV_SRCIP: u32 = 8;
+pub const IP6T_INV_DSTIP: u32 = 16;
+pub const IP6T_INV_FRAG: u32 = 32;
+pub const IP6T_INV_PROTO: u32 = 64;
+pub const IP6T_INV_MASK: u32 = 127;
+pub const IP6T_BASE_CTL: u32 = 64;
+pub const IP6T_SO_SET_REPLACE: u32 = 64;
+pub const IP6T_SO_SET_ADD_COUNTERS: u32 = 65;
+pub const IP6T_SO_SET_MAX: u32 = 65;
+pub const IP6T_SO_GET_INFO: u32 = 64;
+pub const IP6T_SO_GET_ENTRIES: u32 = 65;
+pub const IP6T_SO_GET_REVISION_MATCH: u32 = 68;
+pub const IP6T_SO_GET_REVISION_TARGET: u32 = 69;
+pub const IP6T_SO_GET_MAX: u32 = 69;
+pub const IP6T_SO_ORIGINAL_DST: u32 = 80;
+pub const IP6T_ICMP_INV: u32 = 1;
+pub const NF_IP_PRE_ROUTING: u32 = 0;
+pub const NF_IP_LOCAL_IN: u32 = 1;
+pub const NF_IP_FORWARD: u32 = 2;
+pub const NF_IP_LOCAL_OUT: u32 = 3;
+pub const NF_IP_POST_ROUTING: u32 = 4;
+pub const NF_IP_NUMHOOKS: u32 = 5;
+pub const SO_ORIGINAL_DST: u32 = 80;
pub const SHUT_RD: u32 = 0;
pub const SHUT_WR: u32 = 1;
pub const SHUT_RDWR: u32 = 2;
@@ -1163,6 +1551,25 @@ pub const TCP_NLA_BYTES_NOTSENT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_BYTES_NO
pub const TCP_NLA_EDT: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_EDT;
pub const TCP_NLA_TTL: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_TTL;
pub const TCP_NLA_REHASH: _bindgen_ty_6 = _bindgen_ty_6::TCP_NLA_REHASH;
+pub const IF_OPER_UNKNOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UNKNOWN;
+pub const IF_OPER_NOTPRESENT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_NOTPRESENT;
+pub const IF_OPER_DOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DOWN;
+pub const IF_OPER_LOWERLAYERDOWN: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_LOWERLAYERDOWN;
+pub const IF_OPER_TESTING: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_TESTING;
+pub const IF_OPER_DORMANT: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_DORMANT;
+pub const IF_OPER_UP: _bindgen_ty_7 = _bindgen_ty_7::IF_OPER_UP;
+pub const IF_LINK_MODE_DEFAULT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DEFAULT;
+pub const IF_LINK_MODE_DORMANT: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_DORMANT;
+pub const IF_LINK_MODE_TESTING: _bindgen_ty_8 = _bindgen_ty_8::IF_LINK_MODE_TESTING;
+pub const NFPROTO_UNSPEC: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_UNSPEC;
+pub const NFPROTO_INET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_INET;
+pub const NFPROTO_IPV4: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV4;
+pub const NFPROTO_ARP: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_ARP;
+pub const NFPROTO_NETDEV: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NETDEV;
+pub const NFPROTO_BRIDGE: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_BRIDGE;
+pub const NFPROTO_IPV6: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_IPV6;
+pub const NFPROTO_DECNET: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_DECNET;
+pub const NFPROTO_NUMPROTO: _bindgen_ty_9 = _bindgen_ty_9::NFPROTO_NUMPROTO;
#[repr(u32)]
#[non_exhaustive]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
@@ -1386,6 +1793,121 @@ TCP_NLA_EDT = 25,
TCP_NLA_TTL = 26,
TCP_NLA_REHASH = 27,
}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum net_device_flags {
+IFF_UP = 1,
+IFF_BROADCAST = 2,
+IFF_DEBUG = 4,
+IFF_LOOPBACK = 8,
+IFF_POINTOPOINT = 16,
+IFF_NOTRAILERS = 32,
+IFF_RUNNING = 64,
+IFF_NOARP = 128,
+IFF_PROMISC = 256,
+IFF_ALLMULTI = 512,
+IFF_MASTER = 1024,
+IFF_SLAVE = 2048,
+IFF_MULTICAST = 4096,
+IFF_PORTSEL = 8192,
+IFF_AUTOMEDIA = 16384,
+IFF_DYNAMIC = 32768,
+IFF_LOWER_UP = 65536,
+IFF_DORMANT = 131072,
+IFF_ECHO = 262144,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_7 {
+IF_OPER_UNKNOWN = 0,
+IF_OPER_NOTPRESENT = 1,
+IF_OPER_DOWN = 2,
+IF_OPER_LOWERLAYERDOWN = 3,
+IF_OPER_TESTING = 4,
+IF_OPER_DORMANT = 5,
+IF_OPER_UP = 6,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_8 {
+IF_LINK_MODE_DEFAULT = 0,
+IF_LINK_MODE_DORMANT = 1,
+IF_LINK_MODE_TESTING = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_inet_hooks {
+NF_INET_PRE_ROUTING = 0,
+NF_INET_LOCAL_IN = 1,
+NF_INET_FORWARD = 2,
+NF_INET_LOCAL_OUT = 3,
+NF_INET_POST_ROUTING = 4,
+NF_INET_NUMHOOKS = 5,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_dev_hooks {
+NF_NETDEV_INGRESS = 0,
+NF_NETDEV_EGRESS = 1,
+NF_NETDEV_NUMHOOKS = 2,
+}
+#[repr(u32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum _bindgen_ty_9 {
+NFPROTO_UNSPEC = 0,
+NFPROTO_INET = 1,
+NFPROTO_IPV4 = 2,
+NFPROTO_ARP = 3,
+NFPROTO_NETDEV = 5,
+NFPROTO_BRIDGE = 7,
+NFPROTO_IPV6 = 10,
+NFPROTO_DECNET = 12,
+NFPROTO_NUMPROTO = 13,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip6_hook_priorities {
+NF_IP6_PRI_FIRST = -2147483648,
+NF_IP6_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP6_PRI_RAW = -300,
+NF_IP6_PRI_SELINUX_FIRST = -225,
+NF_IP6_PRI_CONNTRACK = -200,
+NF_IP6_PRI_MANGLE = -150,
+NF_IP6_PRI_NAT_DST = -100,
+NF_IP6_PRI_FILTER = 0,
+NF_IP6_PRI_SECURITY = 50,
+NF_IP6_PRI_NAT_SRC = 100,
+NF_IP6_PRI_SELINUX_LAST = 225,
+NF_IP6_PRI_CONNTRACK_HELPER = 300,
+NF_IP6_PRI_LAST = 2147483647,
+}
+#[repr(i32)]
+#[non_exhaustive]
+#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
+pub enum nf_ip_hook_priorities {
+NF_IP_PRI_FIRST = -2147483648,
+NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,
+NF_IP_PRI_CONNTRACK_DEFRAG = -400,
+NF_IP_PRI_RAW = -300,
+NF_IP_PRI_SELINUX_FIRST = -225,
+NF_IP_PRI_CONNTRACK = -200,
+NF_IP_PRI_MANGLE = -150,
+NF_IP_PRI_NAT_DST = -100,
+NF_IP_PRI_FILTER = 0,
+NF_IP_PRI_SECURITY = 50,
+NF_IP_PRI_NAT_SRC = 100,
+NF_IP_PRI_SELINUX_LAST = 225,
+NF_IP_PRI_CONNTRACK_HELPER = 300,
+NF_IP_PRI_CONNTRACK_CONFIRM = 2147483647,
+}
#[repr(C)]
#[derive(Copy, Clone)]
pub union __kernel_sockaddr_storage__bindgen_ty_1 {
@@ -1417,6 +1939,69 @@ pub union tcp_word_hdr {
pub hdr: tcphdr,
pub words: [__be32; 5usize],
}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union if_settings__bindgen_ty_1 {
+pub raw_hdlc: *mut raw_hdlc_proto,
+pub cisco: *mut cisco_proto,
+pub fr: *mut fr_proto,
+pub fr_pvc: *mut fr_proto_pvc,
+pub fr_pvc_info: *mut fr_proto_pvc_info,
+pub x25: *mut x25_hdlc_proto,
+pub sync: *mut sync_serial_settings,
+pub te1: *mut te1_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_1 {
+pub ifrn_name: [crate::ctypes::c_char; 16usize],
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifreq__bindgen_ty_2 {
+pub ifru_addr: sockaddr,
+pub ifru_dstaddr: sockaddr,
+pub ifru_broadaddr: sockaddr,
+pub ifru_netmask: sockaddr,
+pub ifru_hwaddr: sockaddr,
+pub ifru_flags: crate::ctypes::c_short,
+pub ifru_ivalue: crate::ctypes::c_int,
+pub ifru_mtu: crate::ctypes::c_int,
+pub ifru_map: ifmap,
+pub ifru_slave: [crate::ctypes::c_char; 16usize],
+pub ifru_newname: [crate::ctypes::c_char; 16usize],
+pub ifru_data: *mut crate::ctypes::c_void,
+pub ifru_settings: if_settings,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union ifconf__bindgen_ty_1 {
+pub ifcu_buf: *mut crate::ctypes::c_char,
+pub ifcu_req: *mut ifreq,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union nf_inet_addr {
+pub all: [__u32; 4usize],
+pub ip: __be32,
+pub ip6: [__be32; 4usize],
+pub in_: in_addr,
+pub in6: in6_addr,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_match__bindgen_ty_1 {
+pub user: xt_entry_match__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_match__bindgen_ty_1__bindgen_ty_2,
+pub match_size: __u16,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union xt_entry_target__bindgen_ty_1 {
+pub user: xt_entry_target__bindgen_ty_1__bindgen_ty_1,
+pub kernel: xt_entry_target__bindgen_ty_1__bindgen_ty_2,
+pub target_size: __u16,
+}
impl<Storage> __BindgenBitfieldUnit<Storage> {
#[inline]
pub const fn new(storage: Storage) -> Self {
@@ -1842,3 +2427,9 @@ tcpi_fastopen_client_fail as u64
__bindgen_bitfield_unit
}
}
+impl nf_inet_hooks {
+pub const NF_INET_INGRESS: nf_inet_hooks = nf_inet_hooks::NF_INET_NUMHOOKS;
+}
+impl nf_ip_hook_priorities {
+pub const NF_IP_PRI_LAST: nf_ip_hook_priorities = nf_ip_hook_priorities::NF_IP_PRI_CONNTRACK_CONFIRM;
+}
diff --git a/vendor/litemap/.cargo-checksum.json b/vendor/litemap/.cargo-checksum.json
index a074ae1f6..522c1cbd5 100644
--- a/vendor/litemap/.cargo-checksum.json
+++ b/vendor/litemap/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"083bdb0f929313e0dbde901d90f3e4de3d8143103efd5ee3842241a8e01eee72","Cargo.toml":"5269701cb5ea061ba73f29271c0e6e2ccbb21b145214ca94ec16982b2532acb7","LICENSE":"4ad7541d66a407234e2c84902124cef325c29f3e966353efdb800bedb8b8da21","README.md":"021453bdd013041c191ed05243145d6fcd69d4b2e3c34685d80ee1bb96014495","benches/bin/litemap_bincode.rs":"76df7e65788467329089488f82bf01bffdc19f18778d42157f17beb1b4fe139c","benches/bin/litemap_postcard.rs":"3c63447b5d3c10109970508189793351753f8fc12887775a1a00817b9f0320ef","benches/litemap.rs":"bf0cde22497f2f397804ac035e18db82a2283374147776273eed858bcd30ae11","benches/testdata/large_litemap.postcard":"7316edaf9b1b618eaa33a22cdc1f02474d53bea4fdd664ad10099235e4de5f0d","examples/language_names_hash_map.rs":"705d1049e64d6080571806f8a06330c6a3b126945bcf3bc341e1c707aad4e8f5","examples/language_names_lite_map.rs":"767246fa90005d2450f60fe1cb92c4431610a44b6e861f6146562595214996d8","src/lib.rs":"cf9c3d91961f85b96680d935f44ec0650c8963ecca4c7c80261840cc2e7b9ce5","src/map.rs":"8bc72cac0960c65da300297f9ab057327a059fbd95ebc01accfcf4dca7f3d665","src/serde.rs":"e8db8afff8bf58f89d0f92a8a71ff6e7e180a26bd7db6d7df34dc657359d1d1f","src/serde_helpers.rs":"72787005972b93e49b9dc17aa47d30699364e6da9dc95aadb820ce58e4bf5c54","src/store/mod.rs":"ba9082debd8952fe98733f5a8d068851708b9486f82327286985cd0257e3dc56","src/store/slice_impl.rs":"34d46f5e3db0f81f391444b764f2fce7592efe1b758bef3f56a283dc24bf041d","src/store/vec_impl.rs":"96024ff999e95615e3584354cfaa446f9a9c5f283620566636f449526f194f36","src/testing.rs":"6e6dcb65920f9d10719b843409e8287f579ec864f9d69a9b33b80578a9fc9e4f","tests/rkyv.rs":"b19d91eda9105699a4340340f0a8961de5f02673599dd8eddb43269634777cc4","tests/serde.rs":"0051274f8490c5837d88447bf72fc7266e970fa95c6e4ca540eeba45b7947ce6","tests/store.rs":"c8b1d7899b68187aa31735f3703b056cab549310fecc3631d8fd3adc17ae714d"},"package":"3a04a5b2b6f54acba899926491d0a6c59d98012938ca2ab5befb281c034e8f94"} \ No newline at end of file
+{"files":{"Cargo.lock":"ee1695f3f8232eb191f6c8697f458cd66d988d43d4dc162592de353e39e46a47","Cargo.toml":"03c0eceda57bd0ab3dddfa8c4e2a8b2c45aa1ed89a573be245090027d5a4a8f6","LICENSE":"853f87c96f3d249f200fec6db1114427bc8bdf4afddc93c576956d78152ce978","README.md":"229a3746a55fb6aa20f7ca676a1a3eb4020a5875026bb80e35e45179d20ed4eb","benches/litemap.rs":"e7ed317126a7251b62f0ef5c2a0897ff119a401db5c464f8068d590158aac350","examples/language_names_hash_map.rs":"d8ee06487584caf18d0950ed8eeef4b25d26260b644c43ed0d8101beeb32f7e4","examples/language_names_lite_map.rs":"9f510009856e4edbdd9d3edb130e06a1e6dab691a639899e235e6d4b2aed6287","examples/litemap_bincode.rs":"76df7e65788467329089488f82bf01bffdc19f18778d42157f17beb1b4fe139c","examples/litemap_postcard.rs":"3c63447b5d3c10109970508189793351753f8fc12887775a1a00817b9f0320ef","src/lib.rs":"0860983718785a35c2edaf7db4acd9111366b15be165b8272b5e86f42d05c738","src/map.rs":"1279aa3a6e0f6a7ab6cfddab2103faa140c7d5521da5d8b43972671b9a534e84","src/serde.rs":"56cda02d9da4f555fe103a9aa2d015cf90468a98482dad3d3ba284bb10241231","src/serde_helpers.rs":"72787005972b93e49b9dc17aa47d30699364e6da9dc95aadb820ce58e4bf5c54","src/store/mod.rs":"ddfbf20008b3b925dbfb4bcabee28ca123a0bb4d33dc7512f3f5552a3d5eebcc","src/store/slice_impl.rs":"1807eb84cf263357ed356bc55f8ab7a2bc8b0ef56923155c659f2b5ee1f89180","src/store/vec_impl.rs":"60962147ced42c7442ff66616c615680e461f8e1eded52cde2599ad5c3c4bb34","src/testing.rs":"6e6dcb65920f9d10719b843409e8287f579ec864f9d69a9b33b80578a9fc9e4f","tests/rkyv.rs":"b19d91eda9105699a4340340f0a8961de5f02673599dd8eddb43269634777cc4","tests/serde.rs":"0051274f8490c5837d88447bf72fc7266e970fa95c6e4ca540eeba45b7947ce6","tests/store.rs":"c8b1d7899b68187aa31735f3703b056cab549310fecc3631d8fd3adc17ae714d"},"package":"77a1a2647d5b7134127971a6de0d533c49de2159167e7f259c427195f87168a1"} \ No newline at end of file
diff --git a/vendor/litemap/Cargo.lock b/vendor/litemap/Cargo.lock
index d674149c9..84c4f10c7 100644
--- a/vendor/litemap/Cargo.lock
+++ b/vendor/litemap/Cargo.lock
@@ -14,6 +14,15 @@ dependencies = [
]
[[package]]
+name = "aho-corasick"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
name = "anes"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -25,7 +34,7 @@ version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
dependencies = [
- "hermit-abi 0.1.19",
+ "hermit-abi",
"libc",
"winapi",
]
@@ -52,30 +61,43 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
+name = "bitvec"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c"
+dependencies = [
+ "funty",
+ "radium",
+ "tap",
+ "wyz",
+]
+
+[[package]]
name = "bumpalo"
-version = "3.12.0"
+version = "3.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
+checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
[[package]]
name = "bytecheck"
-version = "0.6.9"
+version = "0.6.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d11cac2c12b5adc6570dad2ee1b87eff4955dac476fe12d81e5fdd352e52406f"
+checksum = "8b6372023ac861f6e6dc89c8344a8f398fb42aaba2b5dbc649ca0c0e9dbcb627"
dependencies = [
"bytecheck_derive",
"ptr_meta",
+ "simdutf8",
]
[[package]]
name = "bytecheck_derive"
-version = "0.6.9"
+version = "0.6.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13e576ebe98e605500b3c8041bb888e966653577172df6dd97398714eb30b9bf"
+checksum = "a7ec4c6f261935ad534c0c22dbef2201b45918860eb1c574b972bd213a76af61"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.109",
]
[[package]]
@@ -92,9 +114,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "ciborium"
-version = "0.2.0"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
+checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926"
dependencies = [
"ciborium-io",
"ciborium-ll",
@@ -103,15 +125,15 @@ dependencies = [
[[package]]
name = "ciborium-io"
-version = "0.2.0"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
+checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656"
[[package]]
name = "ciborium-ll"
-version = "0.2.0"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
+checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b"
dependencies = [
"ciborium-io",
"half",
@@ -119,9 +141,9 @@ dependencies = [
[[package]]
name = "clap"
-version = "3.2.23"
+version = "3.2.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
+checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123"
dependencies = [
"bitflags",
"clap_lex",
@@ -181,20 +203,10 @@ dependencies = [
]
[[package]]
-name = "crossbeam-channel"
-version = "0.5.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521"
-dependencies = [
- "cfg-if",
- "crossbeam-utils",
-]
-
-[[package]]
name = "crossbeam-deque"
-version = "0.8.2"
+version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc"
+checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
dependencies = [
"cfg-if",
"crossbeam-epoch",
@@ -203,9 +215,9 @@ dependencies = [
[[package]]
name = "crossbeam-epoch"
-version = "0.9.13"
+version = "0.9.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a"
+checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7"
dependencies = [
"autocfg",
"cfg-if",
@@ -216,24 +228,41 @@ dependencies = [
[[package]]
name = "crossbeam-utils"
-version = "0.8.14"
+version = "0.8.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f"
+checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
dependencies = [
"cfg-if",
]
[[package]]
+name = "displaydoc"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.37",
+]
+
+[[package]]
name = "either"
-version = "1.8.1"
+version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
+checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
+
+[[package]]
+name = "funty"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
[[package]]
name = "getrandom"
-version = "0.2.8"
+version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
+checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
dependencies = [
"cfg-if",
"libc",
@@ -265,19 +294,22 @@ dependencies = [
]
[[package]]
-name = "hermit-abi"
-version = "0.2.6"
+name = "icu_locid"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
+checksum = "3003f85dccfc0e238ff567693248c59153a46f4e6125ba4020b973cef4d1d335"
dependencies = [
- "libc",
+ "displaydoc",
+ "litemap 0.7.0",
+ "tinystr",
+ "writeable",
]
[[package]]
name = "indexmap"
-version = "1.9.2"
+version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
+checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
dependencies = [
"autocfg",
"hashbrown",
@@ -294,15 +326,15 @@ dependencies = [
[[package]]
name = "itoa"
-version = "1.0.5"
+version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440"
+checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
[[package]]
name = "js-sys"
-version = "0.3.61"
+version = "0.3.64"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
+checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a"
dependencies = [
"wasm-bindgen",
]
@@ -315,17 +347,24 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
-version = "0.2.139"
+version = "0.2.148"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"
+checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b"
[[package]]
name = "litemap"
version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a04a5b2b6f54acba899926491d0a6c59d98012938ca2ab5befb281c034e8f94"
+
+[[package]]
+name = "litemap"
+version = "0.7.1"
dependencies = [
"bincode",
"bytecheck",
"criterion",
+ "icu_locid",
"postcard",
"rkyv",
"serde",
@@ -335,46 +374,39 @@ dependencies = [
[[package]]
name = "log"
-version = "0.4.17"
+version = "0.4.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
-dependencies = [
- "cfg-if",
-]
+checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
[[package]]
-name = "memoffset"
-version = "0.7.1"
+name = "memchr"
+version = "2.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
-dependencies = [
- "autocfg",
-]
+checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c"
[[package]]
-name = "num-traits"
-version = "0.2.15"
+name = "memoffset"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
dependencies = [
"autocfg",
]
[[package]]
-name = "num_cpus"
-version = "1.15.0"
+name = "num-traits"
+version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
+checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
dependencies = [
- "hermit-abi 0.2.6",
- "libc",
+ "autocfg",
]
[[package]]
name = "once_cell"
-version = "1.17.0"
+version = "1.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66"
+checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
[[package]]
name = "oorandom"
@@ -384,15 +416,15 @@ checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
[[package]]
name = "os_str_bytes"
-version = "6.4.1"
+version = "6.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee"
+checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac"
[[package]]
name = "plotters"
-version = "0.3.4"
+version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
+checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45"
dependencies = [
"num-traits",
"plotters-backend",
@@ -403,24 +435,24 @@ dependencies = [
[[package]]
name = "plotters-backend"
-version = "0.3.4"
+version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
+checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609"
[[package]]
name = "plotters-svg"
-version = "0.3.3"
+version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
+checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab"
dependencies = [
"plotters-backend",
]
[[package]]
name = "postcard"
-version = "1.0.2"
+version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1c2b180dc0bade59f03fd005cb967d3f1e5f69b13922dad0cd6e047cb8af2363"
+checksum = "d534c6e61df1c7166e636ca612d9820d486fe96ddad37f7abc671517b297488e"
dependencies = [
"cobs",
"serde",
@@ -428,9 +460,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
-version = "1.0.51"
+version = "1.0.67"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6"
+checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"
dependencies = [
"unicode-ident",
]
@@ -452,23 +484,29 @@ checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.109",
]
[[package]]
name = "quote"
-version = "1.0.23"
+version = "1.0.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"
+checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
dependencies = [
"proc-macro2",
]
[[package]]
+name = "radium"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09"
+
+[[package]]
name = "rayon"
-version = "1.6.1"
+version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7"
+checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"
dependencies = [
"either",
"rayon-core",
@@ -476,70 +514,85 @@ dependencies = [
[[package]]
name = "rayon-core"
-version = "1.10.2"
+version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "356a0625f1954f730c0201cdab48611198dc6ce21f4acff55089b5a78e6e835b"
+checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"
dependencies = [
- "crossbeam-channel",
"crossbeam-deque",
"crossbeam-utils",
- "num_cpus",
]
[[package]]
name = "regex"
-version = "1.7.1"
+version = "1.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733"
+checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795"
dependencies = [
+ "aho-corasick",
+ "memchr",
"regex-syntax",
]
[[package]]
name = "regex-syntax"
-version = "0.6.28"
+version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
+checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
[[package]]
name = "rend"
-version = "0.3.6"
+version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79af64b4b6362ffba04eef3a4e10829718a4896dac19daa741851c86781edf95"
+checksum = "581008d2099240d37fb08d77ad713bcaec2c4d89d50b5b21a8bb1996bbab68ab"
dependencies = [
"bytecheck",
]
[[package]]
name = "rkyv"
-version = "0.7.39"
+version = "0.7.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cec2b3485b07d96ddfd3134767b8a447b45ea4eb91448d0a35180ec0ffd5ed15"
+checksum = "0200c8230b013893c0b2d6213d6ec64ed2b9be2e0e016682b7224ff82cff5c58"
dependencies = [
+ "bitvec",
"bytecheck",
"hashbrown",
"ptr_meta",
"rend",
"rkyv_derive",
"seahash",
+ "tinyvec",
+ "uuid",
]
[[package]]
name = "rkyv_derive"
-version = "0.7.39"
+version = "0.7.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6eaedadc88b53e36dd32d940ed21ae4d850d5916f2581526921f553a72ac34c4"
+checksum = "b2e06b915b5c230a17d7a736d1e2e63ee753c256a8614ef3f5147b13a4f5541d"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.109",
]
[[package]]
name = "ryu"
-version = "1.0.12"
+version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde"
+checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
[[package]]
name = "same-file"
@@ -552,9 +605,9 @@ dependencies = [
[[package]]
name = "scopeguard"
-version = "1.1.0"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]]
name = "seahash"
@@ -564,29 +617,29 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
[[package]]
name = "serde"
-version = "1.0.152"
+version = "1.0.188"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb"
+checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.152"
+version = "1.0.188"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e"
+checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 2.0.37",
]
[[package]]
name = "serde_json"
-version = "1.0.93"
+version = "1.0.107"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cad406b69c91885b5107daf2c29572f6c8cdb3c66826821e286c533490c0bc76"
+checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65"
dependencies = [
"itoa",
"ryu",
@@ -594,6 +647,12 @@ dependencies = [
]
[[package]]
+name = "simdutf8"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a"
+
+[[package]]
name = "stable_deref_trait"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -601,9 +660,20 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
[[package]]
name = "syn"
-version = "1.0.107"
+version = "1.0.109"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8"
dependencies = [
"proc-macro2",
"quote",
@@ -618,17 +688,32 @@ checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.109",
"unicode-xid",
]
[[package]]
+name = "tap"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
+
+[[package]]
name = "textwrap"
version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
[[package]]
+name = "tinystr"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ac3f5b6856e931e15e07b478e98c8045239829a65f9156d4fa7e7788197a5ef"
+dependencies = [
+ "displaydoc",
+]
+
+[[package]]
name = "tinytemplate"
version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -639,10 +724,25 @@ dependencies = [
]
[[package]]
+name = "tinyvec"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+
+[[package]]
name = "unicode-ident"
-version = "1.0.6"
+version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
[[package]]
name = "unicode-xid"
@@ -651,6 +751,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
[[package]]
+name = "uuid"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d"
+
+[[package]]
name = "version_check"
version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -658,12 +764,11 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]]
name = "walkdir"
-version = "2.3.2"
+version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
+checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
dependencies = [
"same-file",
- "winapi",
"winapi-util",
]
@@ -675,9 +780,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasm-bindgen"
-version = "0.2.84"
+version = "0.2.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
+checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342"
dependencies = [
"cfg-if",
"wasm-bindgen-macro",
@@ -685,24 +790,24 @@ dependencies = [
[[package]]
name = "wasm-bindgen-backend"
-version = "0.2.84"
+version = "0.2.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
+checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd"
dependencies = [
"bumpalo",
"log",
"once_cell",
"proc-macro2",
"quote",
- "syn",
+ "syn 2.0.37",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.84"
+version = "0.2.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
+checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -710,28 +815,28 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.84"
+version = "0.2.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
+checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 2.0.37",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.84"
+version = "0.2.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
+checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
[[package]]
name = "web-sys"
-version = "0.3.61"
+version = "0.3.64"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
+checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -755,9 +860,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-util"
-version = "0.1.5"
+version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
dependencies = [
"winapi",
]
@@ -769,12 +874,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
+name = "writeable"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60e49e42bdb1d5dc76f4cd78102f8f0714d32edfa3efb82286eb0f0b1fc0da0f"
+
+[[package]]
+name = "wyz"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed"
+dependencies = [
+ "tap",
+]
+
+[[package]]
name = "yoke"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1848075a23a28f9773498ee9a0f2cf58fcbad4f8c0ccf84a210ab33c6ae495de"
dependencies = [
- "serde",
"stable_deref_trait",
"yoke-derive",
"zerofrom",
@@ -788,27 +907,27 @@ checksum = "af46c169923ed7516eef0aa32b56d2651b229f57458ebe46b49ddd6efef5b7a2"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.109",
"synstructure",
]
[[package]]
name = "zerofrom"
-version = "0.1.1"
+version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79e9355fccf72b04b7deaa99ce7a0f6630530acf34045391b74460fcd714de54"
+checksum = "df54d76c3251de27615dfcce21e636c172dafb2549cd7fd93e21c66f6ca6bea2"
dependencies = [
"zerofrom-derive",
]
[[package]]
name = "zerofrom-derive"
-version = "0.1.1"
+version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2e8aa86add9ddbd2409c1ed01e033cd457d79b1b1229b64922c25095c595e829"
+checksum = "b4eae7c1f7d4b8eafce526bc0771449ddc2f250881ae31c50d22c032b5a1c499"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.109",
"synstructure",
]
diff --git a/vendor/litemap/Cargo.toml b/vendor/litemap/Cargo.toml
index a08c685a2..452cd5e5f 100644
--- a/vendor/litemap/Cargo.toml
+++ b/vendor/litemap/Cargo.toml
@@ -11,10 +11,12 @@
[package]
edition = "2021"
+rust-version = "1.66"
name = "litemap"
-version = "0.7.0"
+version = "0.7.1"
authors = ["The ICU4X Project Developers"]
include = [
+ "data/**/*",
"src/**/*",
"examples/**/*",
"benches/**/*",
@@ -25,7 +27,7 @@ include = [
]
description = "A key-value Map implementation based on a flat, sorted Vec."
documentation = "https://docs.rs/litemap"
-readme = "./README.md"
+readme = "README.md"
keywords = [
"sorted",
"vec",
@@ -33,26 +35,29 @@ keywords = [
"hashmap",
"btreemap",
]
-license = "Unicode-DFS-2016"
+license-file = "LICENSE"
repository = "https://github.com/unicode-org/icu4x"
-[package.metadata.workspaces]
-independent = true
+[package.metadata.cargo-all-features]
+denylist = ["bench"]
[package.metadata.docs.rs]
all-features = true
-[package.metadata.cargo-all-features]
-denylist = ["bench"]
+[package.metadata.workspaces]
+independent = true
+
+[lib]
+bench = false
[[example]]
name = "litemap_bincode"
-path = "benches/bin/litemap_bincode.rs"
+path = "examples/litemap_bincode.rs"
required-features = ["serde"]
[[example]]
name = "litemap_postcard"
-path = "benches/bin/litemap_postcard.rs"
+path = "examples/litemap_postcard.rs"
required-features = ["serde"]
[[test]]
@@ -78,6 +83,7 @@ default-features = false
version = "0.7.1"
features = ["derive"]
optional = true
+default-features = false
[dev-dependencies.bincode]
version = "1"
@@ -85,8 +91,9 @@ version = "1"
[dev-dependencies.bytecheck]
version = "0.6"
-[dev-dependencies.criterion]
-version = "0.4"
+[dev-dependencies.icu_locid]
+version = "~1.2.0"
+default-features = false
[dev-dependencies.postcard]
version = "1.0.0"
@@ -105,6 +112,9 @@ version = "1"
[features]
alloc = []
-bench = []
+bench = ["serde"]
default = ["alloc"]
testing = ["alloc"]
+
+[target."cfg(not(target_arch = \"wasm32\"))".dev-dependencies.criterion]
+version = "0.4"
diff --git a/vendor/litemap/LICENSE b/vendor/litemap/LICENSE
index 9858d01ab..9845aa5f4 100644
--- a/vendor/litemap/LICENSE
+++ b/vendor/litemap/LICENSE
@@ -1,49 +1,42 @@
-UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
-
-See Terms of Use <https://www.unicode.org/copyright.html>
-for definitions of Unicode Inc.’s Data Files and Software.
-
-NOTICE TO USER: Carefully read the following legal agreement.
-BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
-DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
-YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
-TERMS AND CONDITIONS OF THIS AGREEMENT.
-IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
-THE DATA FILES OR SOFTWARE.
+UNICODE LICENSE V3
COPYRIGHT AND PERMISSION NOTICE
-Copyright © 1991-2022 Unicode, Inc. All rights reserved.
-Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Unicode data files and any associated documentation
-(the "Data Files") or Unicode software and any associated documentation
-(the "Software") to deal in the Data Files or Software
-without restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, and/or sell copies of
-the Data Files or Software, and to permit persons to whom the Data Files
-or Software are furnished to do so, provided that either
-(a) this copyright and permission notice appear with all copies
-of the Data Files or Software, or
-(b) this copyright and permission notice appear in associated
-Documentation.
-
-THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
-NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
-DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THE DATA FILES OR SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale,
-use or other dealings in these Data Files or Software without prior
-written authorization of the copyright holder.
+Copyright © 2020-2023 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
—
diff --git a/vendor/litemap/README.md b/vendor/litemap/README.md
index 69700a31b..cf5a19095 100644
--- a/vendor/litemap/README.md
+++ b/vendor/litemap/README.md
@@ -1,5 +1,7 @@
# litemap [![crates.io](https://img.shields.io/crates/v/litemap)](https://crates.io/crates/litemap)
+<!-- cargo-rdme start -->
+
## `litemap`
`litemap` is a crate providing [`LiteMap`], a highly simplistic "flat" key-value map
@@ -21,6 +23,8 @@ module for more details.
[`Vec`]: alloc::vec::Vec
+<!-- cargo-rdme end -->
+
## More Information
For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/litemap/benches/litemap.rs b/vendor/litemap/benches/litemap.rs
index 68906037d..b32b8ba87 100644
--- a/vendor/litemap/benches/litemap.rs
+++ b/vendor/litemap/benches/litemap.rs
@@ -2,8 +2,6 @@
// called LICENSE at the top level of the ICU4X source tree
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
-use std::fs;
-
use criterion::{black_box, criterion_group, criterion_main, Criterion};
use litemap::LiteMap;
@@ -40,7 +38,6 @@ const POSTCARD: [u8; 176] = [
];
/// Run this function to print new data to the console.
-/// Requires the optional `serde` Cargo feature.
#[allow(dead_code)]
fn generate() {
let map = build_litemap(false);
@@ -48,11 +45,8 @@ fn generate() {
println!("{buf:?}");
}
-#[cfg(feature = "generate")]
-fn generate_test_data() {
- let map = build_litemap(true);
- let bytes = postcard::to_stdvec(&map).unwrap();
- fs::write("large_litemap.postcard", &bytes).unwrap();
+fn large_litemap_postcard_bytes() -> Vec<u8> {
+ postcard::to_stdvec(&build_litemap(true)).unwrap()
}
fn overview_bench(c: &mut Criterion) {
@@ -92,7 +86,7 @@ fn bench_deserialize(c: &mut Criterion) {
}
fn bench_deserialize_large(c: &mut Criterion) {
- let buf = read_large_litemap_postcard_bytes();
+ let buf = large_litemap_postcard_bytes();
c.bench_function("litemap/deseralize/large", |b| {
b.iter(|| {
let map: LiteMap<String, String> = postcard::from_bytes(black_box(&buf)).unwrap();
@@ -112,7 +106,7 @@ fn bench_lookup(c: &mut Criterion) {
}
fn bench_lookup_large(c: &mut Criterion) {
- let buf = read_large_litemap_postcard_bytes();
+ let buf = large_litemap_postcard_bytes();
let map: LiteMap<String, String> = postcard::from_bytes(&buf).unwrap();
c.bench_function("litemap/lookup/large", |b| {
b.iter(|| {
@@ -122,13 +116,5 @@ fn bench_lookup_large(c: &mut Criterion) {
});
}
-fn read_large_litemap_postcard_bytes() -> Vec<u8> {
- let path = concat!(
- env!("CARGO_MANIFEST_DIR"),
- "/benches/testdata/large_litemap.postcard"
- );
- fs::read(path).unwrap()
-}
-
criterion_group!(benches, overview_bench);
criterion_main!(benches);
diff --git a/vendor/litemap/benches/testdata/large_litemap.postcard b/vendor/litemap/benches/testdata/large_litemap.postcard
deleted file mode 100644
index e7837b240..000000000
--- a/vendor/litemap/benches/testdata/large_litemap.postcard
+++ /dev/null
@@ -1 +0,0 @@
-€€ar0Arabicar1Arabicar10Arabicar100Arabicar1000Arabicar1001Arabicar1002Arabicar1003Arabicar1004Arabicar1005Arabicar1006Arabicar1007Arabicar1008Arabicar1009Arabicar101Arabicar1010Arabicar1011Arabicar1012Arabicar1013Arabicar1014Arabicar1015Arabicar1016Arabicar1017Arabicar1018Arabicar1019Arabicar102Arabicar1020Arabicar1021Arabicar1022Arabicar1023Arabicar1024Arabicar1025Arabicar1026Arabicar1027Arabicar1028Arabicar1029Arabicar103Arabicar1030Arabicar1031Arabicar1032Arabicar1033Arabicar1034Arabicar1035Arabicar1036Arabicar1037Arabicar1038Arabicar1039Arabicar104Arabicar1040Arabicar1041Arabicar1042Arabicar1043Arabicar1044Arabicar1045Arabicar1046Arabicar1047Arabicar1048Arabicar1049Arabicar105Arabicar1050Arabicar1051Arabicar1052Arabicar1053Arabicar1054Arabicar1055Arabicar1056Arabicar1057Arabicar1058Arabicar1059Arabicar106Arabicar1060Arabicar1061Arabicar1062Arabicar1063Arabicar1064Arabicar1065Arabicar1066Arabicar1067Arabicar1068Arabicar1069Arabicar107Arabicar1070Arabicar1071Arabicar1072Arabicar1073Arabicar1074Arabicar1075Arabicar1076Arabicar1077Arabicar1078Arabicar1079Arabicar108Arabicar1080Arabicar1081Arabicar1082Arabicar1083Arabicar1084Arabicar1085Arabicar1086Arabicar1087Arabicar1088Arabicar1089Arabicar109Arabicar1090Arabicar1091Arabicar1092Arabicar1093Arabicar1094Arabicar1095Arabicar1096Arabicar1097Arabicar1098Arabicar1099Arabicar11Arabicar110Arabicar1100Arabicar1101Arabicar1102Arabicar1103Arabicar1104Arabicar1105Arabicar1106Arabicar1107Arabicar1108Arabicar1109Arabicar111Arabicar1110Arabicar1111Arabicar1112Arabicar1113Arabicar1114Arabicar1115Arabicar1116Arabicar1117Arabicar1118Arabicar1119Arabicar112Arabicar1120Arabicar1121Arabicar1122Arabicar1123Arabicar1124Arabicar1125Arabicar1126Arabicar1127Arabicar1128Arabicar1129Arabicar113Arabicar1130Arabicar1131Arabicar1132Arabicar1133Arabicar1134Arabicar1135Arabicar1136Arabicar1137Arabicar1138Arabicar1139Arabicar114Arabicar1140Arabicar1141Arabicar1142Arabicar1143Arabicar1144Arabicar1145Arabicar1146Arabicar1147Arabicar1148Arabicar1149Arabicar115Arabicar1150Arabicar1151Arabicar1152Arabicar1153Arabicar1154Arabicar1155Arabicar1156Arabicar1157Arabicar1158Arabicar1159Arabicar116Arabicar1160Arabicar1161Arabicar1162Arabicar1163Arabicar1164Arabicar1165Arabicar1166Arabicar1167Arabicar1168Arabicar1169Arabicar117Arabicar1170Arabicar1171Arabicar1172Arabicar1173Arabicar1174Arabicar1175Arabicar1176Arabicar1177Arabicar1178Arabicar1179Arabicar118Arabicar1180Arabicar1181Arabicar1182Arabicar1183Arabicar1184Arabicar1185Arabicar1186Arabicar1187Arabicar1188Arabicar1189Arabicar119Arabicar1190Arabicar1191Arabicar1192Arabicar1193Arabicar1194Arabicar1195Arabicar1196Arabicar1197Arabicar1198Arabicar1199Arabicar12Arabicar120Arabicar1200Arabicar1201Arabicar1202Arabicar1203Arabicar1204Arabicar1205Arabicar1206Arabicar1207Arabicar1208Arabicar1209Arabicar121Arabicar1210Arabicar1211Arabicar1212Arabicar1213Arabicar1214Arabicar1215Arabicar1216Arabicar1217Arabicar1218Arabicar1219Arabicar122Arabicar1220Arabicar1221Arabicar1222Arabicar1223Arabicar1224Arabicar1225Arabicar1226Arabicar1227Arabicar1228Arabicar1229Arabicar123Arabicar1230Arabicar1231Arabicar1232Arabicar1233Arabicar1234Arabicar1235Arabicar1236Arabicar1237Arabicar1238Arabicar1239Arabicar124Arabicar1240Arabicar1241Arabicar1242Arabicar1243Arabicar1244Arabicar1245Arabicar1246Arabicar1247Arabicar1248Arabicar1249Arabicar125Arabicar1250Arabicar1251Arabicar1252Arabicar1253Arabicar1254Arabicar1255Arabicar1256Arabicar1257Arabicar1258Arabicar1259Arabicar126Arabicar1260Arabicar1261Arabicar1262Arabicar1263Arabicar1264Arabicar1265Arabicar1266Arabicar1267Arabicar1268Arabicar1269Arabicar127Arabicar1270Arabicar1271Arabicar1272Arabicar1273Arabicar1274Arabicar1275Arabicar1276Arabicar1277Arabicar1278Arabicar1279Arabicar128Arabicar1280Arabicar1281Arabicar1282Arabicar1283Arabicar1284Arabicar1285Arabicar1286Arabicar1287Arabicar1288Arabicar1289Arabicar129Arabicar1290Arabicar1291Arabicar1292Arabicar1293Arabicar1294Arabicar1295Arabicar1296Arabicar1297Arabicar1298Arabicar1299Arabicar13Arabicar130Arabicar1300Arabicar1301Arabicar1302Arabicar1303Arabicar1304Arabicar1305Arabicar1306Arabicar1307Arabicar1308Arabicar1309Arabicar131Arabicar1310Arabicar1311Arabicar1312Arabicar1313Arabicar1314Arabicar1315Arabicar1316Arabicar1317Arabicar1318Arabicar1319Arabicar132Arabicar1320Arabicar1321Arabicar1322Arabicar1323Arabicar1324Arabicar1325Arabicar1326Arabicar1327Arabicar1328Arabicar1329Arabicar133Arabicar1330Arabicar1331Arabicar1332Arabicar1333Arabicar1334Arabicar1335Arabicar1336Arabicar1337Arabicar1338Arabicar1339Arabicar134Arabicar1340Arabicar1341Arabicar1342Arabicar1343Arabicar1344Arabicar1345Arabicar1346Arabicar1347Arabicar1348Arabicar1349Arabicar135Arabicar1350Arabicar1351Arabicar1352Arabicar1353Arabicar1354Arabicar1355Arabicar1356Arabicar1357Arabicar1358Arabicar1359Arabicar136Arabicar1360Arabicar1361Arabicar1362Arabicar1363Arabicar1364Arabicar1365Arabicar1366Arabicar1367Arabicar1368Arabicar1369Arabicar137Arabicar1370Arabicar1371Arabicar1372Arabicar1373Arabicar1374Arabicar1375Arabicar1376Arabicar1377Arabicar1378Arabicar1379Arabicar138Arabicar1380Arabicar1381Arabicar1382Arabicar1383Arabicar1384Arabicar1385Arabicar1386Arabicar1387Arabicar1388Arabicar1389Arabicar139Arabicar1390Arabicar1391Arabicar1392Arabicar1393Arabicar1394Arabicar1395Arabicar1396Arabicar1397Arabicar1398Arabicar1399Arabicar14Arabicar140Arabicar1400Arabicar1401Arabicar1402Arabicar1403Arabicar1404Arabicar1405Arabicar1406Arabicar1407Arabicar1408Arabicar1409Arabicar141Arabicar1410Arabicar1411Arabicar1412Arabicar1413Arabicar1414Arabicar1415Arabicar1416Arabicar1417Arabicar1418Arabicar1419Arabicar142Arabicar1420Arabicar1421Arabicar1422Arabicar1423Arabicar1424Arabicar1425Arabicar1426Arabicar1427Arabicar1428Arabicar1429Arabicar143Arabicar1430Arabicar1431Arabicar1432Arabicar1433Arabicar1434Arabicar1435Arabicar1436Arabicar1437Arabicar1438Arabicar1439Arabicar144Arabicar1440Arabicar1441Arabicar1442Arabicar1443Arabicar1444Arabicar1445Arabicar1446Arabicar1447Arabicar1448Arabicar1449Arabicar145Arabicar1450Arabicar1451Arabicar1452Arabicar1453Arabicar1454Arabicar1455Arabicar1456Arabicar1457Arabicar1458Arabicar1459Arabicar146Arabicar1460Arabicar1461Arabicar1462Arabicar1463Arabicar1464Arabicar1465Arabicar1466Arabicar1467Arabicar1468Arabicar1469Arabicar147Arabicar1470Arabicar1471Arabicar1472Arabicar1473Arabicar1474Arabicar1475Arabicar1476Arabicar1477Arabicar1478Arabicar1479Arabicar148Arabicar1480Arabicar1481Arabicar1482Arabicar1483Arabicar1484Arabicar1485Arabicar1486Arabicar1487Arabicar1488Arabicar1489Arabicar149Arabicar1490Arabicar1491Arabicar1492Arabicar1493Arabicar1494Arabicar1495Arabicar1496Arabicar1497Arabicar1498Arabicar1499Arabicar15Arabicar150Arabicar1500Arabicar1501Arabicar1502Arabicar1503Arabicar1504Arabicar1505Arabicar1506Arabicar1507Arabicar1508Arabicar1509Arabicar151Arabicar1510Arabicar1511Arabicar1512Arabicar1513Arabicar1514Arabicar1515Arabicar1516Arabicar1517Arabicar1518Arabicar1519Arabicar152Arabicar1520Arabicar1521Arabicar1522Arabicar1523Arabicar1524Arabicar1525Arabicar1526Arabicar1527Arabicar1528Arabicar1529Arabicar153Arabicar1530Arabicar1531Arabicar1532Arabicar1533Arabicar1534Arabicar1535Arabicar1536Arabicar1537Arabicar1538Arabicar1539Arabicar154Arabicar1540Arabicar1541Arabicar1542Arabicar1543Arabicar1544Arabicar1545Arabicar1546Arabicar1547Arabicar1548Arabicar1549Arabicar155Arabicar1550Arabicar1551Arabicar1552Arabicar1553Arabicar1554Arabicar1555Arabicar1556Arabicar1557Arabicar1558Arabicar1559Arabicar156Arabicar1560Arabicar1561Arabicar1562Arabicar1563Arabicar1564Arabicar1565Arabicar1566Arabicar1567Arabicar1568Arabicar1569Arabicar157Arabicar1570Arabicar1571Arabicar1572Arabicar1573Arabicar1574Arabicar1575Arabicar1576Arabicar1577Arabicar1578Arabicar1579Arabicar158Arabicar1580Arabicar1581Arabicar1582Arabicar1583Arabicar1584Arabicar1585Arabicar1586Arabicar1587Arabicar1588Arabicar1589Arabicar159Arabicar1590Arabicar1591Arabicar1592Arabicar1593Arabicar1594Arabicar1595Arabicar1596Arabicar1597Arabicar1598Arabicar1599Arabicar16Arabicar160Arabicar1600Arabicar1601Arabicar1602Arabicar1603Arabicar1604Arabicar1605Arabicar1606Arabicar1607Arabicar1608Arabicar1609Arabicar161Arabicar1610Arabicar1611Arabicar1612Arabicar1613Arabicar1614Arabicar1615Arabicar1616Arabicar1617Arabicar1618Arabicar1619Arabicar162Arabicar1620Arabicar1621Arabicar1622Arabicar1623Arabicar1624Arabicar1625Arabicar1626Arabicar1627Arabicar1628Arabicar1629Arabicar163Arabicar1630Arabicar1631Arabicar1632Arabicar1633Arabicar1634Arabicar1635Arabicar1636Arabicar1637Arabicar1638Arabicar1639Arabicar164Arabicar1640Arabicar1641Arabicar1642Arabicar1643Arabicar1644Arabicar1645Arabicar1646Arabicar1647Arabicar1648Arabicar1649Arabicar165Arabicar1650Arabicar1651Arabicar1652Arabicar1653Arabicar1654Arabicar1655Arabicar1656Arabicar1657Arabicar1658Arabicar1659Arabicar166Arabicar1660Arabicar1661Arabicar1662Arabicar1663Arabicar1664Arabicar1665Arabicar1666Arabicar1667Arabicar1668Arabicar1669Arabicar167Arabicar1670Arabicar1671Arabicar1672Arabicar1673Arabicar1674Arabicar1675Arabicar1676Arabicar1677Arabicar1678Arabicar1679Arabicar168Arabicar1680Arabicar1681Arabicar1682Arabicar1683Arabicar1684Arabicar1685Arabicar1686Arabicar1687Arabicar1688Arabicar1689Arabicar169Arabicar1690Arabicar1691Arabicar1692Arabicar1693Arabicar1694Arabicar1695Arabicar1696Arabicar1697Arabicar1698Arabicar1699Arabicar17Arabicar170Arabicar1700Arabicar1701Arabicar1702Arabicar1703Arabicar1704Arabicar1705Arabicar1706Arabicar1707Arabicar1708Arabicar1709Arabicar171Arabicar1710Arabicar1711Arabicar1712Arabicar1713Arabicar1714Arabicar1715Arabicar1716Arabicar1717Arabicar1718Arabicar1719Arabicar172Arabicar1720Arabicar1721Arabicar1722Arabicar1723Arabicar1724Arabicar1725Arabicar1726Arabicar1727Arabicar1728Arabicar1729Arabicar173Arabicar1730Arabicar1731Arabicar1732Arabicar1733Arabicar1734Arabicar1735Arabicar1736Arabicar1737Arabicar1738Arabicar1739Arabicar174Arabicar1740Arabicar1741Arabicar1742Arabicar1743Arabicar1744Arabicar1745Arabicar1746Arabicar1747Arabicar1748Arabicar1749Arabicar175Arabicar1750Arabicar1751Arabicar1752Arabicar1753Arabicar1754Arabicar1755Arabicar1756Arabicar1757Arabicar1758Arabicar1759Arabicar176Arabicar1760Arabicar1761Arabicar1762Arabicar1763Arabicar1764Arabicar1765Arabicar1766Arabicar1767Arabicar1768Arabicar1769Arabicar177Arabicar1770Arabicar1771Arabicar1772Arabicar1773Arabicar1774Arabicar1775Arabicar1776Arabicar1777Arabicar1778Arabicar1779Arabicar178Arabicar1780Arabicar1781Arabicar1782Arabicar1783Arabicar1784Arabicar1785Arabicar1786Arabicar1787Arabicar1788Arabicar1789Arabicar179Arabicar1790Arabicar1791Arabicar1792Arabicar1793Arabicar1794Arabicar1795Arabicar1796Arabicar1797Arabicar1798Arabicar1799Arabicar18Arabicar180Arabicar1800Arabicar1801Arabicar1802Arabicar1803Arabicar1804Arabicar1805Arabicar1806Arabicar1807Arabicar1808Arabicar1809Arabicar181Arabicar1810Arabicar1811Arabicar1812Arabicar1813Arabicar1814Arabicar1815Arabicar1816Arabicar1817Arabicar1818Arabicar1819Arabicar182Arabicar1820Arabicar1821Arabicar1822Arabicar1823Arabicar1824Arabicar1825Arabicar1826Arabicar1827Arabicar1828Arabicar1829Arabicar183Arabicar1830Arabicar1831Arabicar1832Arabicar1833Arabicar1834Arabicar1835Arabicar1836Arabicar1837Arabicar1838Arabicar1839Arabicar184Arabicar1840Arabicar1841Arabicar1842Arabicar1843Arabicar1844Arabicar1845Arabicar1846Arabicar1847Arabicar1848Arabicar1849Arabicar185Arabicar1850Arabicar1851Arabicar1852Arabicar1853Arabicar1854Arabicar1855Arabicar1856Arabicar1857Arabicar1858Arabicar1859Arabicar186Arabicar1860Arabicar1861Arabicar1862Arabicar1863Arabicar1864Arabicar1865Arabicar1866Arabicar1867Arabicar1868Arabicar1869Arabicar187Arabicar1870Arabicar1871Arabicar1872Arabicar1873Arabicar1874Arabicar1875Arabicar1876Arabicar1877Arabicar1878Arabicar1879Arabicar188Arabicar1880Arabicar1881Arabicar1882Arabicar1883Arabicar1884Arabicar1885Arabicar1886Arabicar1887Arabicar1888Arabicar1889Arabicar189Arabicar1890Arabicar1891Arabicar1892Arabicar1893Arabicar1894Arabicar1895Arabicar1896Arabicar1897Arabicar1898Arabicar1899Arabicar19Arabicar190Arabicar1900Arabicar1901Arabicar1902Arabicar1903Arabicar1904Arabicar1905Arabicar1906Arabicar1907Arabicar1908Arabicar1909Arabicar191Arabicar1910Arabicar1911Arabicar1912Arabicar1913Arabicar1914Arabicar1915Arabicar1916Arabicar1917Arabicar1918Arabicar1919Arabicar192Arabicar1920Arabicar1921Arabicar1922Arabicar1923Arabicar1924Arabicar1925Arabicar1926Arabicar1927Arabicar1928Arabicar1929Arabicar193Arabicar1930Arabicar1931Arabicar1932Arabicar1933Arabicar1934Arabicar1935Arabicar1936Arabicar1937Arabicar1938Arabicar1939Arabicar194Arabicar1940Arabicar1941Arabicar1942Arabicar1943Arabicar1944Arabicar1945Arabicar1946Arabicar1947Arabicar1948Arabicar1949Arabicar195Arabicar1950Arabicar1951Arabicar1952Arabicar1953Arabicar1954Arabicar1955Arabicar1956Arabicar1957Arabicar1958Arabicar1959Arabicar196Arabicar1960Arabicar1961Arabicar1962Arabicar1963Arabicar1964Arabicar1965Arabicar1966Arabicar1967Arabicar1968Arabicar1969Arabicar197Arabicar1970Arabicar1971Arabicar1972Arabicar1973Arabicar1974Arabicar1975Arabicar1976Arabicar1977Arabicar1978Arabicar1979Arabicar198Arabicar1980Arabicar1981Arabicar1982Arabicar1983Arabicar1984Arabicar1985Arabicar1986Arabicar1987Arabicar1988Arabicar1989Arabicar199Arabicar1990Arabicar1991Arabicar1992Arabicar1993Arabicar1994Arabicar1995Arabicar1996Arabicar1997Arabicar1998Arabicar1999Arabicar2Arabicar20Arabicar200Arabicar2000Arabicar2001Arabicar2002Arabicar2003Arabicar2004Arabicar2005Arabicar2006Arabicar2007Arabicar2008Arabicar2009Arabicar201Arabicar2010Arabicar2011Arabicar2012Arabicar2013Arabicar2014Arabicar2015Arabicar2016Arabicar2017Arabicar2018Arabicar2019Arabicar202Arabicar2020Arabicar2021Arabicar2022Arabicar2023Arabicar2024Arabicar2025Arabicar2026Arabicar2027Arabicar2028Arabicar2029Arabicar203Arabicar2030Arabicar2031Arabicar2032Arabicar2033Arabicar2034Arabicar2035Arabicar2036Arabicar2037Arabicar2038Arabicar2039Arabicar204Arabicar2040Arabicar2041Arabicar2042Arabicar2043Arabicar2044Arabicar2045Arabicar2046Arabicar2047Arabicar2048Arabicar2049Arabicar205Arabicar2050Arabicar2051Arabicar2052Arabicar2053Arabicar2054Arabicar2055Arabicar2056Arabicar2057Arabicar2058Arabicar2059Arabicar206Arabicar2060Arabicar2061Arabicar2062Arabicar2063Arabicar2064Arabicar2065Arabicar2066Arabicar2067Arabicar2068Arabicar2069Arabicar207Arabicar2070Arabicar2071Arabicar2072Arabicar2073Arabicar2074Arabicar2075Arabicar2076Arabicar2077Arabicar2078Arabicar2079Arabicar208Arabicar2080Arabicar2081Arabicar2082Arabicar2083Arabicar2084Arabicar2085Arabicar2086Arabicar2087Arabicar2088Arabicar2089Arabicar209Arabicar2090Arabicar2091Arabicar2092Arabicar2093Arabicar2094Arabicar2095Arabicar2096Arabicar2097Arabicar2098Arabicar2099Arabicar21Arabicar210Arabicar2100Arabicar2101Arabicar2102Arabicar2103Arabicar2104Arabicar2105Arabicar2106Arabicar2107Arabicar2108Arabicar2109Arabicar211Arabicar2110Arabicar2111Arabicar2112Arabicar2113Arabicar2114Arabicar2115Arabicar2116Arabicar2117Arabicar2118Arabicar2119Arabicar212Arabicar2120Arabicar2121Arabicar2122Arabicar2123Arabicar2124Arabicar2125Arabicar2126Arabicar2127Arabicar2128Arabicar2129Arabicar213Arabicar2130Arabicar2131Arabicar2132Arabicar2133Arabicar2134Arabicar2135Arabicar2136Arabicar2137Arabicar2138Arabicar2139Arabicar214Arabicar2140Arabicar2141Arabicar2142Arabicar2143Arabicar2144Arabicar2145Arabicar2146Arabicar2147Arabicar2148Arabicar2149Arabicar215Arabicar2150Arabicar2151Arabicar2152Arabicar2153Arabicar2154Arabicar2155Arabicar2156Arabicar2157Arabicar2158Arabicar2159Arabicar216Arabicar2160Arabicar2161Arabicar2162Arabicar2163Arabicar2164Arabicar2165Arabicar2166Arabicar2167Arabicar2168Arabicar2169Arabicar217Arabicar2170Arabicar2171Arabicar2172Arabicar2173Arabicar2174Arabicar2175Arabicar2176Arabicar2177Arabicar2178Arabicar2179Arabicar218Arabicar2180Arabicar2181Arabicar2182Arabicar2183Arabicar2184Arabicar2185Arabicar2186Arabicar2187Arabicar2188Arabicar2189Arabicar219Arabicar2190Arabicar2191Arabicar2192Arabicar2193Arabicar2194Arabicar2195Arabicar2196Arabicar2197Arabicar2198Arabicar2199Arabicar22Arabicar220Arabicar2200Arabicar2201Arabicar2202Arabicar2203Arabicar2204Arabicar2205Arabicar2206Arabicar2207Arabicar2208Arabicar2209Arabicar221Arabicar2210Arabicar2211Arabicar2212Arabicar2213Arabicar2214Arabicar2215Arabicar2216Arabicar2217Arabicar2218Arabicar2219Arabicar222Arabicar2220Arabicar2221Arabicar2222Arabicar2223Arabicar2224Arabicar2225Arabicar2226Arabicar2227Arabicar2228Arabicar2229Arabicar223Arabicar2230Arabicar2231Arabicar2232Arabicar2233Arabicar2234Arabicar2235Arabicar2236Arabicar2237Arabicar2238Arabicar2239Arabicar224Arabicar2240Arabicar2241Arabicar2242Arabicar2243Arabicar2244Arabicar2245Arabicar2246Arabicar2247Arabicar2248Arabicar2249Arabicar225Arabicar2250Arabicar2251Arabicar2252Arabicar2253Arabicar2254Arabicar2255Arabicar2256Arabicar2257Arabicar2258Arabicar2259Arabicar226Arabicar2260Arabicar2261Arabicar2262Arabicar2263Arabicar2264Arabicar2265Arabicar2266Arabicar2267Arabicar2268Arabicar2269Arabicar227Arabicar2270Arabicar2271Arabicar2272Arabicar2273Arabicar2274Arabicar2275Arabicar2276Arabicar2277Arabicar2278Arabicar2279Arabicar228Arabicar2280Arabicar2281Arabicar2282Arabicar2283Arabicar2284Arabicar2285Arabicar2286Arabicar2287Arabicar2288Arabicar2289Arabicar229Arabicar2290Arabicar2291Arabicar2292Arabicar2293Arabicar2294Arabicar2295Arabicar2296Arabicar2297Arabicar2298Arabicar2299Arabicar23Arabicar230Arabicar2300Arabicar2301Arabicar2302Arabicar2303Arabicar2304Arabicar2305Arabicar2306Arabicar2307Arabicar2308Arabicar2309Arabicar231Arabicar2310Arabicar2311Arabicar2312Arabicar2313Arabicar2314Arabicar2315Arabicar2316Arabicar2317Arabicar2318Arabicar2319Arabicar232Arabicar2320Arabicar2321Arabicar2322Arabicar2323Arabicar2324Arabicar2325Arabicar2326Arabicar2327Arabicar2328Arabicar2329Arabicar233Arabicar2330Arabicar2331Arabicar2332Arabicar2333Arabicar2334Arabicar2335Arabicar2336Arabicar2337Arabicar2338Arabicar2339Arabicar234Arabicar2340Arabicar2341Arabicar2342Arabicar2343Arabicar2344Arabicar2345Arabicar2346Arabicar2347Arabicar2348Arabicar2349Arabicar235Arabicar2350Arabicar2351Arabicar2352Arabicar2353Arabicar2354Arabicar2355Arabicar2356Arabicar2357Arabicar2358Arabicar2359Arabicar236Arabicar2360Arabicar2361Arabicar2362Arabicar2363Arabicar2364Arabicar2365Arabicar2366Arabicar2367Arabicar2368Arabicar2369Arabicar237Arabicar2370Arabicar2371Arabicar2372Arabicar2373Arabicar2374Arabicar2375Arabicar2376Arabicar2377Arabicar2378Arabicar2379Arabicar238Arabicar2380Arabicar2381Arabicar2382Arabicar2383Arabicar2384Arabicar2385Arabicar2386Arabicar2387Arabicar2388Arabicar2389Arabicar239Arabicar2390Arabicar2391Arabicar2392Arabicar2393Arabicar2394Arabicar2395Arabicar2396Arabicar2397Arabicar2398Arabicar2399Arabicar24Arabicar240Arabicar2400Arabicar2401Arabicar2402Arabicar2403Arabicar2404Arabicar2405Arabicar2406Arabicar2407Arabicar2408Arabicar2409Arabicar241Arabicar2410Arabicar2411Arabicar2412Arabicar2413Arabicar2414Arabicar2415Arabicar2416Arabicar2417Arabicar2418Arabicar2419Arabicar242Arabicar2420Arabicar2421Arabicar2422Arabicar2423Arabicar2424Arabicar2425Arabicar2426Arabicar2427Arabicar2428Arabicar2429Arabicar243Arabicar2430Arabicar2431Arabicar2432Arabicar2433Arabicar2434Arabicar2435Arabicar2436Arabicar2437Arabicar2438Arabicar2439Arabicar244Arabicar2440Arabicar2441Arabicar2442Arabicar2443Arabicar2444Arabicar2445Arabicar2446Arabicar2447Arabicar2448Arabicar2449Arabicar245Arabicar2450Arabicar2451Arabicar2452Arabicar2453Arabicar2454Arabicar2455Arabicar2456Arabicar2457Arabicar2458Arabicar2459Arabicar246Arabicar2460Arabicar2461Arabicar2462Arabicar2463Arabicar2464Arabicar2465Arabicar2466Arabicar2467Arabicar2468Arabicar2469Arabicar247Arabicar2470Arabicar2471Arabicar2472Arabicar2473Arabicar2474Arabicar2475Arabicar2476Arabicar2477Arabicar2478Arabicar2479Arabicar248Arabicar2480Arabicar2481Arabicar2482Arabicar2483Arabicar2484Arabicar2485Arabicar2486Arabicar2487Arabicar2488Arabicar2489Arabicar249Arabicar2490Arabicar2491Arabicar2492Arabicar2493Arabicar2494Arabicar2495Arabicar2496Arabicar2497Arabicar2498Arabicar2499Arabicar25Arabicar250Arabicar2500Arabicar2501Arabicar2502Arabicar2503Arabicar2504Arabicar2505Arabicar2506Arabicar2507Arabicar2508Arabicar2509Arabicar251Arabicar2510Arabicar2511Arabicar2512Arabicar2513Arabicar2514Arabicar2515Arabicar2516Arabicar2517Arabicar2518Arabicar2519Arabicar252Arabicar2520Arabicar2521Arabicar2522Arabicar2523Arabicar2524Arabicar2525Arabicar2526Arabicar2527Arabicar2528Arabicar2529Arabicar253Arabicar2530Arabicar2531Arabicar2532Arabicar2533Arabicar2534Arabicar2535Arabicar2536Arabicar2537Arabicar2538Arabicar2539Arabicar254Arabicar2540Arabicar2541Arabicar2542Arabicar2543Arabicar2544Arabicar2545Arabicar2546Arabicar2547Arabicar2548Arabicar2549Arabicar255Arabicar2550Arabicar2551Arabicar2552Arabicar2553Arabicar2554Arabicar2555Arabicar2556Arabicar2557Arabicar2558Arabicar2559Arabicar256Arabicar2560Arabicar2561Arabicar2562Arabicar2563Arabicar2564Arabicar2565Arabicar2566Arabicar2567Arabicar2568Arabicar2569Arabicar257Arabicar2570Arabicar2571Arabicar2572Arabicar2573Arabicar2574Arabicar2575Arabicar2576Arabicar2577Arabicar2578Arabicar2579Arabicar258Arabicar2580Arabicar2581Arabicar2582Arabicar2583Arabicar2584Arabicar2585Arabicar2586Arabicar2587Arabicar2588Arabicar2589Arabicar259Arabicar2590Arabicar2591Arabicar2592Arabicar2593Arabicar2594Arabicar2595Arabicar2596Arabicar2597Arabicar2598Arabicar2599Arabicar26Arabicar260Arabicar2600Arabicar2601Arabicar2602Arabicar2603Arabicar2604Arabicar2605Arabicar2606Arabicar2607Arabicar2608Arabicar2609Arabicar261Arabicar2610Arabicar2611Arabicar2612Arabicar2613Arabicar2614Arabicar2615Arabicar2616Arabicar2617Arabicar2618Arabicar2619Arabicar262Arabicar2620Arabicar2621Arabicar2622Arabicar2623Arabicar2624Arabicar2625Arabicar2626Arabicar2627Arabicar2628Arabicar2629Arabicar263Arabicar2630Arabicar2631Arabicar2632Arabicar2633Arabicar2634Arabicar2635Arabicar2636Arabicar2637Arabicar2638Arabicar2639Arabicar264Arabicar2640Arabicar2641Arabicar2642Arabicar2643Arabicar2644Arabicar2645Arabicar2646Arabicar2647Arabicar2648Arabicar2649Arabicar265Arabicar2650Arabicar2651Arabicar2652Arabicar2653Arabicar2654Arabicar2655Arabicar2656Arabicar2657Arabicar2658Arabicar2659Arabicar266Arabicar2660Arabicar2661Arabicar2662Arabicar2663Arabicar2664Arabicar2665Arabicar2666Arabicar2667Arabicar2668Arabicar2669Arabicar267Arabicar2670Arabicar2671Arabicar2672Arabicar2673Arabicar2674Arabicar2675Arabicar2676Arabicar2677Arabicar2678Arabicar2679Arabicar268Arabicar2680Arabicar2681Arabicar2682Arabicar2683Arabicar2684Arabicar2685Arabicar2686Arabicar2687Arabicar2688Arabicar2689Arabicar269Arabicar2690Arabicar2691Arabicar2692Arabicar2693Arabicar2694Arabicar2695Arabicar2696Arabicar2697Arabicar2698Arabicar2699Arabicar27Arabicar270Arabicar2700Arabicar2701Arabicar2702Arabicar2703Arabicar2704Arabicar2705Arabicar2706Arabicar2707Arabicar2708Arabicar2709Arabicar271Arabicar2710Arabicar2711Arabicar2712Arabicar2713Arabicar2714Arabicar2715Arabicar2716Arabicar2717Arabicar2718Arabicar2719Arabicar272Arabicar2720Arabicar2721Arabicar2722Arabicar2723Arabicar2724Arabicar2725Arabicar2726Arabicar2727Arabicar2728Arabicar2729Arabicar273Arabicar2730Arabicar2731Arabicar2732Arabicar2733Arabicar2734Arabicar2735Arabicar2736Arabicar2737Arabicar2738Arabicar2739Arabicar274Arabicar2740Arabicar2741Arabicar2742Arabicar2743Arabicar2744Arabicar2745Arabicar2746Arabicar2747Arabicar2748Arabicar2749Arabicar275Arabicar2750Arabicar2751Arabicar2752Arabicar2753Arabicar2754Arabicar2755Arabicar2756Arabicar2757Arabicar2758Arabicar2759Arabicar276Arabicar2760Arabicar2761Arabicar2762Arabicar2763Arabicar2764Arabicar2765Arabicar2766Arabicar2767Arabicar2768Arabicar2769Arabicar277Arabicar2770Arabicar2771Arabicar2772Arabicar2773Arabicar2774Arabicar2775Arabicar2776Arabicar2777Arabicar2778Arabicar2779Arabicar278Arabicar2780Arabicar2781Arabicar2782Arabicar2783Arabicar2784Arabicar2785Arabicar2786Arabicar2787Arabicar2788Arabicar2789Arabicar279Arabicar2790Arabicar2791Arabicar2792Arabicar2793Arabicar2794Arabicar2795Arabicar2796Arabicar2797Arabicar2798Arabicar2799Arabicar28Arabicar280Arabicar2800Arabicar2801Arabicar2802Arabicar2803Arabicar2804Arabicar2805Arabicar2806Arabicar2807Arabicar2808Arabicar2809Arabicar281Arabicar2810Arabicar2811Arabicar2812Arabicar2813Arabicar2814Arabicar2815Arabicar2816Arabicar2817Arabicar2818Arabicar2819Arabicar282Arabicar2820Arabicar2821Arabicar2822Arabicar2823Arabicar2824Arabicar2825Arabicar2826Arabicar2827Arabicar2828Arabicar2829Arabicar283Arabicar2830Arabicar2831Arabicar2832Arabicar2833Arabicar2834Arabicar2835Arabicar2836Arabicar2837Arabicar2838Arabicar2839Arabicar284Arabicar2840Arabicar2841Arabicar2842Arabicar2843Arabicar2844Arabicar2845Arabicar2846Arabicar2847Arabicar2848Arabicar2849Arabicar285Arabicar2850Arabicar2851Arabicar2852Arabicar2853Arabicar2854Arabicar2855Arabicar2856Arabicar2857Arabicar2858Arabicar2859Arabicar286Arabicar2860Arabicar2861Arabicar2862Arabicar2863Arabicar2864Arabicar2865Arabicar2866Arabicar2867Arabicar2868Arabicar2869Arabicar287Arabicar2870Arabicar2871Arabicar2872Arabicar2873Arabicar2874Arabicar2875Arabicar2876Arabicar2877Arabicar2878Arabicar2879Arabicar288Arabicar2880Arabicar2881Arabicar2882Arabicar2883Arabicar2884Arabicar2885Arabicar2886Arabicar2887Arabicar2888Arabicar2889Arabicar289Arabicar2890Arabicar2891Arabicar2892Arabicar2893Arabicar2894Arabicar2895Arabicar2896Arabicar2897Arabicar2898Arabicar2899Arabicar29Arabicar290Arabicar2900Arabicar2901Arabicar2902Arabicar2903Arabicar2904Arabicar2905Arabicar2906Arabicar2907Arabicar2908Arabicar2909Arabicar291Arabicar2910Arabicar2911Arabicar2912Arabicar2913Arabicar2914Arabicar2915Arabicar2916Arabicar2917Arabicar2918Arabicar2919Arabicar292Arabicar2920Arabicar2921Arabicar2922Arabicar2923Arabicar2924Arabicar2925Arabicar2926Arabicar2927Arabicar2928Arabicar2929Arabicar293Arabicar2930Arabicar2931Arabicar2932Arabicar2933Arabicar2934Arabicar2935Arabicar2936Arabicar2937Arabicar2938Arabicar2939Arabicar294Arabicar2940Arabicar2941Arabicar2942Arabicar2943Arabicar2944Arabicar2945Arabicar2946Arabicar2947Arabicar2948Arabicar2949Arabicar295Arabicar2950Arabicar2951Arabicar2952Arabicar2953Arabicar2954Arabicar2955Arabicar2956Arabicar2957Arabicar2958Arabicar2959Arabicar296Arabicar2960Arabicar2961Arabicar2962Arabicar2963Arabicar2964Arabicar2965Arabicar2966Arabicar2967Arabicar2968Arabicar2969Arabicar297Arabicar2970Arabicar2971Arabicar2972Arabicar2973Arabicar2974Arabicar2975Arabicar2976Arabicar2977Arabicar2978Arabicar2979Arabicar298Arabicar2980Arabicar2981Arabicar2982Arabicar2983Arabicar2984Arabicar2985Arabicar2986Arabicar2987Arabicar2988Arabicar2989Arabicar299Arabicar2990Arabicar2991Arabicar2992Arabicar2993Arabicar2994Arabicar2995Arabicar2996Arabicar2997Arabicar2998Arabicar2999Arabicar3Arabicar30Arabicar300Arabicar3000Arabicar3001Arabicar3002Arabicar3003Arabicar3004Arabicar3005Arabicar3006Arabicar3007Arabicar3008Arabicar3009Arabicar301Arabicar3010Arabicar3011Arabicar3012Arabicar3013Arabicar3014Arabicar3015Arabicar3016Arabicar3017Arabicar3018Arabicar3019Arabicar302Arabicar3020Arabicar3021Arabicar3022Arabicar3023Arabicar3024Arabicar3025Arabicar3026Arabicar3027Arabicar3028Arabicar3029Arabicar303Arabicar3030Arabicar3031Arabicar3032Arabicar3033Arabicar3034Arabicar3035Arabicar3036Arabicar3037Arabicar3038Arabicar3039Arabicar304Arabicar3040Arabicar3041Arabicar3042Arabicar3043Arabicar3044Arabicar3045Arabicar3046Arabicar3047Arabicar3048Arabicar3049Arabicar305Arabicar3050Arabicar3051Arabicar3052Arabicar3053Arabicar3054Arabicar3055Arabicar3056Arabicar3057Arabicar3058Arabicar3059Arabicar306Arabicar3060Arabicar3061Arabicar3062Arabicar3063Arabicar3064Arabicar3065Arabicar3066Arabicar3067Arabicar3068Arabicar3069Arabicar307Arabicar3070Arabicar3071Arabicar3072Arabicar3073Arabicar3074Arabicar3075Arabicar3076Arabicar3077Arabicar3078Arabicar3079Arabicar308Arabicar3080Arabicar3081Arabicar3082Arabicar3083Arabicar3084Arabicar3085Arabicar3086Arabicar3087Arabicar3088Arabicar3089Arabicar309Arabicar3090Arabicar3091Arabicar3092Arabicar3093Arabicar3094Arabicar3095Arabicar3096Arabicar3097Arabicar3098Arabicar3099Arabicar31Arabicar310Arabicar3100Arabicar3101Arabicar3102Arabicar3103Arabicar3104Arabicar3105Arabicar3106Arabicar3107Arabicar3108Arabicar3109Arabicar311Arabicar3110Arabicar3111Arabicar3112Arabicar3113Arabicar3114Arabicar3115Arabicar3116Arabicar3117Arabicar3118Arabicar3119Arabicar312Arabicar3120Arabicar3121Arabicar3122Arabicar3123Arabicar3124Arabicar3125Arabicar3126Arabicar3127Arabicar3128Arabicar3129Arabicar313Arabicar3130Arabicar3131Arabicar3132Arabicar3133Arabicar3134Arabicar3135Arabicar3136Arabicar3137Arabicar3138Arabicar3139Arabicar314Arabicar3140Arabicar3141Arabicar3142Arabicar3143Arabicar3144Arabicar3145Arabicar3146Arabicar3147Arabicar3148Arabicar3149Arabicar315Arabicar3150Arabicar3151Arabicar3152Arabicar3153Arabicar3154Arabicar3155Arabicar3156Arabicar3157Arabicar3158Arabicar3159Arabicar316Arabicar3160Arabicar3161Arabicar3162Arabicar3163Arabicar3164Arabicar3165Arabicar3166Arabicar3167Arabicar3168Arabicar3169Arabicar317Arabicar3170Arabicar3171Arabicar3172Arabicar3173Arabicar3174Arabicar3175Arabicar3176Arabicar3177Arabicar3178Arabicar3179Arabicar318Arabicar3180Arabicar3181Arabicar3182Arabicar3183Arabicar3184Arabicar3185Arabicar3186Arabicar3187Arabicar3188Arabicar3189Arabicar319Arabicar3190Arabicar3191Arabicar3192Arabicar3193Arabicar3194Arabicar3195Arabicar3196Arabicar3197Arabicar3198Arabicar3199Arabicar32Arabicar320Arabicar3200Arabicar3201Arabicar3202Arabicar3203Arabicar3204Arabicar3205Arabicar3206Arabicar3207Arabicar3208Arabicar3209Arabicar321Arabicar3210Arabicar3211Arabicar3212Arabicar3213Arabicar3214Arabicar3215Arabicar3216Arabicar3217Arabicar3218Arabicar3219Arabicar322Arabicar3220Arabicar3221Arabicar3222Arabicar3223Arabicar3224Arabicar3225Arabicar3226Arabicar3227Arabicar3228Arabicar3229Arabicar323Arabicar3230Arabicar3231Arabicar3232Arabicar3233Arabicar3234Arabicar3235Arabicar3236Arabicar3237Arabicar3238Arabicar3239Arabicar324Arabicar3240Arabicar3241Arabicar3242Arabicar3243Arabicar3244Arabicar3245Arabicar3246Arabicar3247Arabicar3248Arabicar3249Arabicar325Arabicar3250Arabicar3251Arabicar3252Arabicar3253Arabicar3254Arabicar3255Arabicar3256Arabicar3257Arabicar3258Arabicar3259Arabicar326Arabicar3260Arabicar3261Arabicar3262Arabicar3263Arabicar3264Arabicar3265Arabicar3266Arabicar3267Arabicar3268Arabicar3269Arabicar327Arabicar3270Arabicar3271Arabicar3272Arabicar3273Arabicar3274Arabicar3275Arabicar3276Arabicar3277Arabicar3278Arabicar3279Arabicar328Arabicar3280Arabicar3281Arabicar3282Arabicar3283Arabicar3284Arabicar3285Arabicar3286Arabicar3287Arabicar3288Arabicar3289Arabicar329Arabicar3290Arabicar3291Arabicar3292Arabicar3293Arabicar3294Arabicar3295Arabicar3296Arabicar3297Arabicar3298Arabicar3299Arabicar33Arabicar330Arabicar3300Arabicar3301Arabicar3302Arabicar3303Arabicar3304Arabicar3305Arabicar3306Arabicar3307Arabicar3308Arabicar3309Arabicar331Arabicar3310Arabicar3311Arabicar3312Arabicar3313Arabicar3314Arabicar3315Arabicar3316Arabicar3317Arabicar3318Arabicar3319Arabicar332Arabicar3320Arabicar3321Arabicar3322Arabicar3323Arabicar3324Arabicar3325Arabicar3326Arabicar3327Arabicar3328Arabicar3329Arabicar333Arabicar3330Arabicar3331Arabicar3332Arabicar3333Arabicar3334Arabicar3335Arabicar3336Arabicar3337Arabicar3338Arabicar3339Arabicar334Arabicar3340Arabicar3341Arabicar3342Arabicar3343Arabicar3344Arabicar3345Arabicar3346Arabicar3347Arabicar3348Arabicar3349Arabicar335Arabicar3350Arabicar3351Arabicar3352Arabicar3353Arabicar3354Arabicar3355Arabicar3356Arabicar3357Arabicar3358Arabicar3359Arabicar336Arabicar3360Arabicar3361Arabicar3362Arabicar3363Arabicar3364Arabicar3365Arabicar3366Arabicar3367Arabicar3368Arabicar3369Arabicar337Arabicar3370Arabicar3371Arabicar3372Arabicar3373Arabicar3374Arabicar3375Arabicar3376Arabicar3377Arabicar3378Arabicar3379Arabicar338Arabicar3380Arabicar3381Arabicar3382Arabicar3383Arabicar3384Arabicar3385Arabicar3386Arabicar3387Arabicar3388Arabicar3389Arabicar339Arabicar3390Arabicar3391Arabicar3392Arabicar3393Arabicar3394Arabicar3395Arabicar3396Arabicar3397Arabicar3398Arabicar3399Arabicar34Arabicar340Arabicar3400Arabicar3401Arabicar3402Arabicar3403Arabicar3404Arabicar3405Arabicar3406Arabicar3407Arabicar3408Arabicar3409Arabicar341Arabicar3410Arabicar3411Arabicar3412Arabicar3413Arabicar3414Arabicar3415Arabicar3416Arabicar3417Arabicar3418Arabicar3419Arabicar342Arabicar3420Arabicar3421Arabicar3422Arabicar3423Arabicar3424Arabicar3425Arabicar3426Arabicar3427Arabicar3428Arabicar3429Arabicar343Arabicar3430Arabicar3431Arabicar3432Arabicar3433Arabicar3434Arabicar3435Arabicar3436Arabicar3437Arabicar3438Arabicar3439Arabicar344Arabicar3440Arabicar3441Arabicar3442Arabicar3443Arabicar3444Arabicar3445Arabicar3446Arabicar3447Arabicar3448Arabicar3449Arabicar345Arabicar3450Arabicar3451Arabicar3452Arabicar3453Arabicar3454Arabicar3455Arabicar3456Arabicar3457Arabicar3458Arabicar3459Arabicar346Arabicar3460Arabicar3461Arabicar3462Arabicar3463Arabicar3464Arabicar3465Arabicar3466Arabicar3467Arabicar3468Arabicar3469Arabicar347Arabicar3470Arabicar3471Arabicar3472Arabicar3473Arabicar3474Arabicar3475Arabicar3476Arabicar3477Arabicar3478Arabicar3479Arabicar348Arabicar3480Arabicar3481Arabicar3482Arabicar3483Arabicar3484Arabicar3485Arabicar3486Arabicar3487Arabicar3488Arabicar3489Arabicar349Arabicar3490Arabicar3491Arabicar3492Arabicar3493Arabicar3494Arabicar3495Arabicar3496Arabicar3497Arabicar3498Arabicar3499Arabicar35Arabicar350Arabicar3500Arabicar3501Arabicar3502Arabicar3503Arabicar3504Arabicar3505Arabicar3506Arabicar3507Arabicar3508Arabicar3509Arabicar351Arabicar3510Arabicar3511Arabicar3512Arabicar3513Arabicar3514Arabicar3515Arabicar3516Arabicar3517Arabicar3518Arabicar3519Arabicar352Arabicar3520Arabicar3521Arabicar3522Arabicar3523Arabicar3524Arabicar3525Arabicar3526Arabicar3527Arabicar3528Arabicar3529Arabicar353Arabicar3530Arabicar3531Arabicar3532Arabicar3533Arabicar3534Arabicar3535Arabicar3536Arabicar3537Arabicar3538Arabicar3539Arabicar354Arabicar3540Arabicar3541Arabicar3542Arabicar3543Arabicar3544Arabicar3545Arabicar3546Arabicar3547Arabicar3548Arabicar3549Arabicar355Arabicar3550Arabicar3551Arabicar3552Arabicar3553Arabicar3554Arabicar3555Arabicar3556Arabicar3557Arabicar3558Arabicar3559Arabicar356Arabicar3560Arabicar3561Arabicar3562Arabicar3563Arabicar3564Arabicar3565Arabicar3566Arabicar3567Arabicar3568Arabicar3569Arabicar357Arabicar3570Arabicar3571Arabicar3572Arabicar3573Arabicar3574Arabicar3575Arabicar3576Arabicar3577Arabicar3578Arabicar3579Arabicar358Arabicar3580Arabicar3581Arabicar3582Arabicar3583Arabicar3584Arabicar3585Arabicar3586Arabicar3587Arabicar3588Arabicar3589Arabicar359Arabicar3590Arabicar3591Arabicar3592Arabicar3593Arabicar3594Arabicar3595Arabicar3596Arabicar3597Arabicar3598Arabicar3599Arabicar36Arabicar360Arabicar3600Arabicar3601Arabicar3602Arabicar3603Arabicar3604Arabicar3605Arabicar3606Arabicar3607Arabicar3608Arabicar3609Arabicar361Arabicar3610Arabicar3611Arabicar3612Arabicar3613Arabicar3614Arabicar3615Arabicar3616Arabicar3617Arabicar3618Arabicar3619Arabicar362Arabicar3620Arabicar3621Arabicar3622Arabicar3623Arabicar3624Arabicar3625Arabicar3626Arabicar3627Arabicar3628Arabicar3629Arabicar363Arabicar3630Arabicar3631Arabicar3632Arabicar3633Arabicar3634Arabicar3635Arabicar3636Arabicar3637Arabicar3638Arabicar3639Arabicar364Arabicar3640Arabicar3641Arabicar3642Arabicar3643Arabicar3644Arabicar3645Arabicar3646Arabicar3647Arabicar3648Arabicar3649Arabicar365Arabicar3650Arabicar3651Arabicar3652Arabicar3653Arabicar3654Arabicar3655Arabicar3656Arabicar3657Arabicar3658Arabicar3659Arabicar366Arabicar3660Arabicar3661Arabicar3662Arabicar3663Arabicar3664Arabicar3665Arabicar3666Arabicar3667Arabicar3668Arabicar3669Arabicar367Arabicar3670Arabicar3671Arabicar3672Arabicar3673Arabicar3674Arabicar3675Arabicar3676Arabicar3677Arabicar3678Arabicar3679Arabicar368Arabicar3680Arabicar3681Arabicar3682Arabicar3683Arabicar3684Arabicar3685Arabicar3686Arabicar3687Arabicar3688Arabicar3689Arabicar369Arabicar3690Arabicar3691Arabicar3692Arabicar3693Arabicar3694Arabicar3695Arabicar3696Arabicar3697Arabicar3698Arabicar3699Arabicar37Arabicar370Arabicar3700Arabicar3701Arabicar3702Arabicar3703Arabicar3704Arabicar3705Arabicar3706Arabicar3707Arabicar3708Arabicar3709Arabicar371Arabicar3710Arabicar3711Arabicar3712Arabicar3713Arabicar3714Arabicar3715Arabicar3716Arabicar3717Arabicar3718Arabicar3719Arabicar372Arabicar3720Arabicar3721Arabicar3722Arabicar3723Arabicar3724Arabicar3725Arabicar3726Arabicar3727Arabicar3728Arabicar3729Arabicar373Arabicar3730Arabicar3731Arabicar3732Arabicar3733Arabicar3734Arabicar3735Arabicar3736Arabicar3737Arabicar3738Arabicar3739Arabicar374Arabicar3740Arabicar3741Arabicar3742Arabicar3743Arabicar3744Arabicar3745Arabicar3746Arabicar3747Arabicar3748Arabicar3749Arabicar375Arabicar3750Arabicar3751Arabicar3752Arabicar3753Arabicar3754Arabicar3755Arabicar3756Arabicar3757Arabicar3758Arabicar3759Arabicar376Arabicar3760Arabicar3761Arabicar3762Arabicar3763Arabicar3764Arabicar3765Arabicar3766Arabicar3767Arabicar3768Arabicar3769Arabicar377Arabicar3770Arabicar3771Arabicar3772Arabicar3773Arabicar3774Arabicar3775Arabicar3776Arabicar3777Arabicar3778Arabicar3779Arabicar378Arabicar3780Arabicar3781Arabicar3782Arabicar3783Arabicar3784Arabicar3785Arabicar3786Arabicar3787Arabicar3788Arabicar3789Arabicar379Arabicar3790Arabicar3791Arabicar3792Arabicar3793Arabicar3794Arabicar3795Arabicar3796Arabicar3797Arabicar3798Arabicar3799Arabicar38Arabicar380Arabicar3800Arabicar3801Arabicar3802Arabicar3803Arabicar3804Arabicar3805Arabicar3806Arabicar3807Arabicar3808Arabicar3809Arabicar381Arabicar3810Arabicar3811Arabicar3812Arabicar3813Arabicar3814Arabicar3815Arabicar3816Arabicar3817Arabicar3818Arabicar3819Arabicar382Arabicar3820Arabicar3821Arabicar3822Arabicar3823Arabicar3824Arabicar3825Arabicar3826Arabicar3827Arabicar3828Arabicar3829Arabicar383Arabicar3830Arabicar3831Arabicar3832Arabicar3833Arabicar3834Arabicar3835Arabicar3836Arabicar3837Arabicar3838Arabicar3839Arabicar384Arabicar3840Arabicar3841Arabicar3842Arabicar3843Arabicar3844Arabicar3845Arabicar3846Arabicar3847Arabicar3848Arabicar3849Arabicar385Arabicar3850Arabicar3851Arabicar3852Arabicar3853Arabicar3854Arabicar3855Arabicar3856Arabicar3857Arabicar3858Arabicar3859Arabicar386Arabicar3860Arabicar3861Arabicar3862Arabicar3863Arabicar3864Arabicar3865Arabicar3866Arabicar3867Arabicar3868Arabicar3869Arabicar387Arabicar3870Arabicar3871Arabicar3872Arabicar3873Arabicar3874Arabicar3875Arabicar3876Arabicar3877Arabicar3878Arabicar3879Arabicar388Arabicar3880Arabicar3881Arabicar3882Arabicar3883Arabicar3884Arabicar3885Arabicar3886Arabicar3887Arabicar3888Arabicar3889Arabicar389Arabicar3890Arabicar3891Arabicar3892Arabicar3893Arabicar3894Arabicar3895Arabicar3896Arabicar3897Arabicar3898Arabicar3899Arabicar39Arabicar390Arabicar3900Arabicar3901Arabicar3902Arabicar3903Arabicar3904Arabicar3905Arabicar3906Arabicar3907Arabicar3908Arabicar3909Arabicar391Arabicar3910Arabicar3911Arabicar3912Arabicar3913Arabicar3914Arabicar3915Arabicar3916Arabicar3917Arabicar3918Arabicar3919Arabicar392Arabicar3920Arabicar3921Arabicar3922Arabicar3923Arabicar3924Arabicar3925Arabicar3926Arabicar3927Arabicar3928Arabicar3929Arabicar393Arabicar3930Arabicar3931Arabicar3932Arabicar3933Arabicar3934Arabicar3935Arabicar3936Arabicar3937Arabicar3938Arabicar3939Arabicar394Arabicar3940Arabicar3941Arabicar3942Arabicar3943Arabicar3944Arabicar3945Arabicar3946Arabicar3947Arabicar3948Arabicar3949Arabicar395Arabicar3950Arabicar3951Arabicar3952Arabicar3953Arabicar3954Arabicar3955Arabicar3956Arabicar3957Arabicar3958Arabicar3959Arabicar396Arabicar3960Arabicar3961Arabicar3962Arabicar3963Arabicar3964Arabicar3965Arabicar3966Arabicar3967Arabicar3968Arabicar3969Arabicar397Arabicar3970Arabicar3971Arabicar3972Arabicar3973Arabicar3974Arabicar3975Arabicar3976Arabicar3977Arabicar3978Arabicar3979Arabicar398Arabicar3980Arabicar3981Arabicar3982Arabicar3983Arabicar3984Arabicar3985Arabicar3986Arabicar3987Arabicar3988Arabicar3989Arabicar399Arabicar3990Arabicar3991Arabicar3992Arabicar3993Arabicar3994Arabicar3995Arabicar3996Arabicar3997Arabicar3998Arabicar3999Arabicar4Arabicar40Arabicar400Arabicar4000Arabicar4001Arabicar4002Arabicar4003Arabicar4004Arabicar4005Arabicar4006Arabicar4007Arabicar4008Arabicar4009Arabicar401Arabicar4010Arabicar4011Arabicar4012Arabicar4013Arabicar4014Arabicar4015Arabicar4016Arabicar4017Arabicar4018Arabicar4019Arabicar402Arabicar4020Arabicar4021Arabicar4022Arabicar4023Arabicar4024Arabicar4025Arabicar4026Arabicar4027Arabicar4028Arabicar4029Arabicar403Arabicar4030Arabicar4031Arabicar4032Arabicar4033Arabicar4034Arabicar4035Arabicar4036Arabicar4037Arabicar4038Arabicar4039Arabicar404Arabicar4040Arabicar4041Arabicar4042Arabicar4043Arabicar4044Arabicar4045Arabicar4046Arabicar4047Arabicar4048Arabicar4049Arabicar405Arabicar4050Arabicar4051Arabicar4052Arabicar4053Arabicar4054Arabicar4055Arabicar4056Arabicar4057Arabicar4058Arabicar4059Arabicar406Arabicar4060Arabicar4061Arabicar4062Arabicar4063Arabicar4064Arabicar4065Arabicar4066Arabicar4067Arabicar4068Arabicar4069Arabicar407Arabicar4070Arabicar4071Arabicar4072Arabicar4073Arabicar4074Arabicar4075Arabicar4076Arabicar4077Arabicar4078Arabicar4079Arabicar408Arabicar4080Arabicar4081Arabicar4082Arabicar4083Arabicar4084Arabicar4085Arabicar4086Arabicar4087Arabicar4088Arabicar4089Arabicar409Arabicar4090Arabicar4091Arabicar4092Arabicar4093Arabicar4094Arabicar4095Arabicar4096Arabicar4097Arabicar4098Arabicar4099Arabicar41Arabicar410Arabicar4100Arabicar4101Arabicar4102Arabicar4103Arabicar4104Arabicar4105Arabicar4106Arabicar4107Arabicar4108Arabicar4109Arabicar411Arabicar4110Arabicar4111Arabicar4112Arabicar4113Arabicar4114Arabicar4115Arabicar4116Arabicar4117Arabicar4118Arabicar4119Arabicar412Arabicar4120Arabicar4121Arabicar4122Arabicar4123Arabicar4124Arabicar4125Arabicar4126Arabicar4127Arabicar4128Arabicar4129Arabicar413Arabicar4130Arabicar4131Arabicar4132Arabicar4133Arabicar4134Arabicar4135Arabicar4136Arabicar4137Arabicar4138Arabicar4139Arabicar414Arabicar4140Arabicar4141Arabicar4142Arabicar4143Arabicar4144Arabicar4145Arabicar4146Arabicar4147Arabicar4148Arabicar4149Arabicar415Arabicar4150Arabicar4151Arabicar4152Arabicar4153Arabicar4154Arabicar4155Arabicar4156Arabicar4157Arabicar4158Arabicar4159Arabicar416Arabicar4160Arabicar4161Arabicar4162Arabicar4163Arabicar4164Arabicar4165Arabicar4166Arabicar4167Arabicar4168Arabicar4169Arabicar417Arabicar4170Arabicar4171Arabicar4172Arabicar4173Arabicar4174Arabicar4175Arabicar4176Arabicar4177Arabicar4178Arabicar4179Arabicar418Arabicar4180Arabicar4181Arabicar4182Arabicar4183Arabicar4184Arabicar4185Arabicar4186Arabicar4187Arabicar4188Arabicar4189Arabicar419Arabicar4190Arabicar4191Arabicar4192Arabicar4193Arabicar4194Arabicar4195Arabicar4196Arabicar4197Arabicar4198Arabicar4199Arabicar42Arabicar420Arabicar4200Arabicar4201Arabicar4202Arabicar4203Arabicar4204Arabicar4205Arabicar4206Arabicar4207Arabicar4208Arabicar4209Arabicar421Arabicar4210Arabicar4211Arabicar4212Arabicar4213Arabicar4214Arabicar4215Arabicar4216Arabicar4217Arabicar4218Arabicar4219Arabicar422Arabicar4220Arabicar4221Arabicar4222Arabicar4223Arabicar4224Arabicar4225Arabicar4226Arabicar4227Arabicar4228Arabicar4229Arabicar423Arabicar4230Arabicar4231Arabicar4232Arabicar4233Arabicar4234Arabicar4235Arabicar4236Arabicar4237Arabicar4238Arabicar4239Arabicar424Arabicar4240Arabicar4241Arabicar4242Arabicar4243Arabicar4244Arabicar4245Arabicar4246Arabicar4247Arabicar4248Arabicar4249Arabicar425Arabicar4250Arabicar4251Arabicar4252Arabicar4253Arabicar4254Arabicar4255Arabicar4256Arabicar4257Arabicar4258Arabicar4259Arabicar426Arabicar4260Arabicar4261Arabicar4262Arabicar4263Arabicar4264Arabicar4265Arabicar4266Arabicar4267Arabicar4268Arabicar4269Arabicar427Arabicar4270Arabicar4271Arabicar4272Arabicar4273Arabicar4274Arabicar4275Arabicar4276Arabicar4277Arabicar4278Arabicar4279Arabicar428Arabicar4280Arabicar4281Arabicar4282Arabicar4283Arabicar4284Arabicar4285Arabicar4286Arabicar4287Arabicar4288Arabicar4289Arabicar429Arabicar4290Arabicar4291Arabicar4292Arabicar4293Arabicar4294Arabicar4295Arabicar4296Arabicar4297Arabicar4298Arabicar4299Arabicar43Arabicar430Arabicar4300Arabicar4301Arabicar4302Arabicar4303Arabicar4304Arabicar4305Arabicar4306Arabicar4307Arabicar4308Arabicar4309Arabicar431Arabicar4310Arabicar4311Arabicar4312Arabicar4313Arabicar4314Arabicar4315Arabicar4316Arabicar4317Arabicar4318Arabicar4319Arabicar432Arabicar4320Arabicar4321Arabicar4322Arabicar4323Arabicar4324Arabicar4325Arabicar4326Arabicar4327Arabicar4328Arabicar4329Arabicar433Arabicar4330Arabicar4331Arabicar4332Arabicar4333Arabicar4334Arabicar4335Arabicar4336Arabicar4337Arabicar4338Arabicar4339Arabicar434Arabicar4340Arabicar4341Arabicar4342Arabicar4343Arabicar4344Arabicar4345Arabicar4346Arabicar4347Arabicar4348Arabicar4349Arabicar435Arabicar4350Arabicar4351Arabicar4352Arabicar4353Arabicar4354Arabicar4355Arabicar4356Arabicar4357Arabicar4358Arabicar4359Arabicar436Arabicar4360Arabicar4361Arabicar4362Arabicar4363Arabicar4364Arabicar4365Arabicar4366Arabicar4367Arabicar4368Arabicar4369Arabicar437Arabicar4370Arabicar4371Arabicar4372Arabicar4373Arabicar4374Arabicar4375Arabicar4376Arabicar4377Arabicar4378Arabicar4379Arabicar438Arabicar4380Arabicar4381Arabicar4382Arabicar4383Arabicar4384Arabicar4385Arabicar4386Arabicar4387Arabicar4388Arabicar4389Arabicar439Arabicar4390Arabicar4391Arabicar4392Arabicar4393Arabicar4394Arabicar4395Arabicar4396Arabicar4397Arabicar4398Arabicar4399Arabicar44Arabicar440Arabicar4400Arabicar4401Arabicar4402Arabicar4403Arabicar4404Arabicar4405Arabicar4406Arabicar4407Arabicar4408Arabicar4409Arabicar441Arabicar4410Arabicar4411Arabicar4412Arabicar4413Arabicar4414Arabicar4415Arabicar4416Arabicar4417Arabicar4418Arabicar4419Arabicar442Arabicar4420Arabicar4421Arabicar4422Arabicar4423Arabicar4424Arabicar4425Arabicar4426Arabicar4427Arabicar4428Arabicar4429Arabicar443Arabicar4430Arabicar4431Arabicar4432Arabicar4433Arabicar4434Arabicar4435Arabicar4436Arabicar4437Arabicar4438Arabicar4439Arabicar444Arabicar4440Arabicar4441Arabicar4442Arabicar4443Arabicar4444Arabicar4445Arabicar4446Arabicar4447Arabicar4448Arabicar4449Arabicar445Arabicar4450Arabicar4451Arabicar4452Arabicar4453Arabicar4454Arabicar4455Arabicar4456Arabicar4457Arabicar4458Arabicar4459Arabicar446Arabicar4460Arabicar4461Arabicar4462Arabicar4463Arabicar4464Arabicar4465Arabicar4466Arabicar4467Arabicar4468Arabicar4469Arabicar447Arabicar4470Arabicar4471Arabicar4472Arabicar4473Arabicar4474Arabicar4475Arabicar4476Arabicar4477Arabicar4478Arabicar4479Arabicar448Arabicar4480Arabicar4481Arabicar4482Arabicar4483Arabicar4484Arabicar4485Arabicar4486Arabicar4487Arabicar4488Arabicar4489Arabicar449Arabicar4490Arabicar4491Arabicar4492Arabicar4493Arabicar4494Arabicar4495Arabicar4496Arabicar4497Arabicar4498Arabicar4499Arabicar45Arabicar450Arabicar4500Arabicar4501Arabicar4502Arabicar4503Arabicar4504Arabicar4505Arabicar4506Arabicar4507Arabicar4508Arabicar4509Arabicar451Arabicar4510Arabicar4511Arabicar4512Arabicar4513Arabicar4514Arabicar4515Arabicar4516Arabicar4517Arabicar4518Arabicar4519Arabicar452Arabicar4520Arabicar4521Arabicar4522Arabicar4523Arabicar4524Arabicar4525Arabicar4526Arabicar4527Arabicar4528Arabicar4529Arabicar453Arabicar4530Arabicar4531Arabicar4532Arabicar4533Arabicar4534Arabicar4535Arabicar4536Arabicar4537Arabicar4538Arabicar4539Arabicar454Arabicar4540Arabicar4541Arabicar4542Arabicar4543Arabicar4544Arabicar4545Arabicar4546Arabicar4547Arabicar4548Arabicar4549Arabicar455Arabicar4550Arabicar4551Arabicar4552Arabicar4553Arabicar4554Arabicar4555Arabicar4556Arabicar4557Arabicar4558Arabicar4559Arabicar456Arabicar4560Arabicar4561Arabicar4562Arabicar4563Arabicar4564Arabicar4565Arabicar4566Arabicar4567Arabicar4568Arabicar4569Arabicar457Arabicar4570Arabicar4571Arabicar4572Arabicar4573Arabicar4574Arabicar4575Arabicar4576Arabicar4577Arabicar4578Arabicar4579Arabicar458Arabicar4580Arabicar4581Arabicar4582Arabicar4583Arabicar4584Arabicar4585Arabicar4586Arabicar4587Arabicar4588Arabicar4589Arabicar459Arabicar4590Arabicar4591Arabicar4592Arabicar4593Arabicar4594Arabicar4595Arabicar4596Arabicar4597Arabicar4598Arabicar4599Arabicar46Arabicar460Arabicar4600Arabicar4601Arabicar4602Arabicar4603Arabicar4604Arabicar4605Arabicar4606Arabicar4607Arabicar4608Arabicar4609Arabicar461Arabicar4610Arabicar4611Arabicar4612Arabicar4613Arabicar4614Arabicar4615Arabicar4616Arabicar4617Arabicar4618Arabicar4619Arabicar462Arabicar4620Arabicar4621Arabicar4622Arabicar4623Arabicar4624Arabicar4625Arabicar4626Arabicar4627Arabicar4628Arabicar4629Arabicar463Arabicar4630Arabicar4631Arabicar4632Arabicar4633Arabicar4634Arabicar4635Arabicar4636Arabicar4637Arabicar4638Arabicar4639Arabicar464Arabicar4640Arabicar4641Arabicar4642Arabicar4643Arabicar4644Arabicar4645Arabicar4646Arabicar4647Arabicar4648Arabicar4649Arabicar465Arabicar4650Arabicar4651Arabicar4652Arabicar4653Arabicar4654Arabicar4655Arabicar4656Arabicar4657Arabicar4658Arabicar4659Arabicar466Arabicar4660Arabicar4661Arabicar4662Arabicar4663Arabicar4664Arabicar4665Arabicar4666Arabicar4667Arabicar4668Arabicar4669Arabicar467Arabicar4670Arabicar4671Arabicar4672Arabicar4673Arabicar4674Arabicar4675Arabicar4676Arabicar4677Arabicar4678Arabicar4679Arabicar468Arabicar4680Arabicar4681Arabicar4682Arabicar4683Arabicar4684Arabicar4685Arabicar4686Arabicar4687Arabicar4688Arabicar4689Arabicar469Arabicar4690Arabicar4691Arabicar4692Arabicar4693Arabicar4694Arabicar4695Arabicar4696Arabicar4697Arabicar4698Arabicar4699Arabicar47Arabicar470Arabicar4700Arabicar4701Arabicar4702Arabicar4703Arabicar4704Arabicar4705Arabicar4706Arabicar4707Arabicar4708Arabicar4709Arabicar471Arabicar4710Arabicar4711Arabicar4712Arabicar4713Arabicar4714Arabicar4715Arabicar4716Arabicar4717Arabicar4718Arabicar4719Arabicar472Arabicar4720Arabicar4721Arabicar4722Arabicar4723Arabicar4724Arabicar4725Arabicar4726Arabicar4727Arabicar4728Arabicar4729Arabicar473Arabicar4730Arabicar4731Arabicar4732Arabicar4733Arabicar4734Arabicar4735Arabicar4736Arabicar4737Arabicar4738Arabicar4739Arabicar474Arabicar4740Arabicar4741Arabicar4742Arabicar4743Arabicar4744Arabicar4745Arabicar4746Arabicar4747Arabicar4748Arabicar4749Arabicar475Arabicar4750Arabicar4751Arabicar4752Arabicar4753Arabicar4754Arabicar4755Arabicar4756Arabicar4757Arabicar4758Arabicar4759Arabicar476Arabicar4760Arabicar4761Arabicar4762Arabicar4763Arabicar4764Arabicar4765Arabicar4766Arabicar4767Arabicar4768Arabicar4769Arabicar477Arabicar4770Arabicar4771Arabicar4772Arabicar4773Arabicar4774Arabicar4775Arabicar4776Arabicar4777Arabicar4778Arabicar4779Arabicar478Arabicar4780Arabicar4781Arabicar4782Arabicar4783Arabicar4784Arabicar4785Arabicar4786Arabicar4787Arabicar4788Arabicar4789Arabicar479Arabicar4790Arabicar4791Arabicar4792Arabicar4793Arabicar4794Arabicar4795Arabicar4796Arabicar4797Arabicar4798Arabicar4799Arabicar48Arabicar480Arabicar4800Arabicar4801Arabicar4802Arabicar4803Arabicar4804Arabicar4805Arabicar4806Arabicar4807Arabicar4808Arabicar4809Arabicar481Arabicar4810Arabicar4811Arabicar4812Arabicar4813Arabicar4814Arabicar4815Arabicar4816Arabicar4817Arabicar4818Arabicar4819Arabicar482Arabicar4820Arabicar4821Arabicar4822Arabicar4823Arabicar4824Arabicar4825Arabicar4826Arabicar4827Arabicar4828Arabicar4829Arabicar483Arabicar4830Arabicar4831Arabicar4832Arabicar4833Arabicar4834Arabicar4835Arabicar4836Arabicar4837Arabicar4838Arabicar4839Arabicar484Arabicar4840Arabicar4841Arabicar4842Arabicar4843Arabicar4844Arabicar4845Arabicar4846Arabicar4847Arabicar4848Arabicar4849Arabicar485Arabicar4850Arabicar4851Arabicar4852Arabicar4853Arabicar4854Arabicar4855Arabicar4856Arabicar4857Arabicar4858Arabicar4859Arabicar486Arabicar4860Arabicar4861Arabicar4862Arabicar4863Arabicar4864Arabicar4865Arabicar4866Arabicar4867Arabicar4868Arabicar4869Arabicar487Arabicar4870Arabicar4871Arabicar4872Arabicar4873Arabicar4874Arabicar4875Arabicar4876Arabicar4877Arabicar4878Arabicar4879Arabicar488Arabicar4880Arabicar4881Arabicar4882Arabicar4883Arabicar4884Arabicar4885Arabicar4886Arabicar4887Arabicar4888Arabicar4889Arabicar489Arabicar4890Arabicar4891Arabicar4892Arabicar4893Arabicar4894Arabicar4895Arabicar4896Arabicar4897Arabicar4898Arabicar4899Arabicar49Arabicar490Arabicar4900Arabicar4901Arabicar4902Arabicar4903Arabicar4904Arabicar4905Arabicar4906Arabicar4907Arabicar4908Arabicar4909Arabicar491Arabicar4910Arabicar4911Arabicar4912Arabicar4913Arabicar4914Arabicar4915Arabicar4916Arabicar4917Arabicar4918Arabicar4919Arabicar492Arabicar4920Arabicar4921Arabicar4922Arabicar4923Arabicar4924Arabicar4925Arabicar4926Arabicar4927Arabicar4928Arabicar4929Arabicar493Arabicar4930Arabicar4931Arabicar4932Arabicar4933Arabicar4934Arabicar4935Arabicar4936Arabicar4937Arabicar4938Arabicar4939Arabicar494Arabicar4940Arabicar4941Arabicar4942Arabicar4943Arabicar4944Arabicar4945Arabicar4946Arabicar4947Arabicar4948Arabicar4949Arabicar495Arabicar4950Arabicar4951Arabicar4952Arabicar4953Arabicar4954Arabicar4955Arabicar4956Arabicar4957Arabicar4958Arabicar4959Arabicar496Arabicar4960Arabicar4961Arabicar4962Arabicar4963Arabicar4964Arabicar4965Arabicar4966Arabicar4967Arabicar4968Arabicar4969Arabicar497Arabicar4970Arabicar4971Arabicar4972Arabicar4973Arabicar4974Arabicar4975Arabicar4976Arabicar4977Arabicar4978Arabicar4979Arabicar498Arabicar4980Arabicar4981Arabicar4982Arabicar4983Arabicar4984Arabicar4985Arabicar4986Arabicar4987Arabicar4988Arabicar4989Arabicar499Arabicar4990Arabicar4991Arabicar4992Arabicar4993Arabicar4994Arabicar4995Arabicar4996Arabicar4997Arabicar4998Arabicar4999Arabicar5Arabicar50Arabicar500Arabicar5000Arabicar5001Arabicar5002Arabicar5003Arabicar5004Arabicar5005Arabicar5006Arabicar5007Arabicar5008Arabicar5009Arabicar501Arabicar5010Arabicar5011Arabicar5012Arabicar5013Arabicar5014Arabicar5015Arabicar5016Arabicar5017Arabicar5018Arabicar5019Arabicar502Arabicar5020Arabicar5021Arabicar5022Arabicar5023Arabicar5024Arabicar5025Arabicar5026Arabicar5027Arabicar5028Arabicar5029Arabicar503Arabicar5030Arabicar5031Arabicar5032Arabicar5033Arabicar5034Arabicar5035Arabicar5036Arabicar5037Arabicar5038Arabicar5039Arabicar504Arabicar5040Arabicar5041Arabicar5042Arabicar5043Arabicar5044Arabicar5045Arabicar5046Arabicar5047Arabicar5048Arabicar5049Arabicar505Arabicar5050Arabicar5051Arabicar5052Arabicar5053Arabicar5054Arabicar5055Arabicar5056Arabicar5057Arabicar5058Arabicar5059Arabicar506Arabicar5060Arabicar5061Arabicar5062Arabicar5063Arabicar5064Arabicar5065Arabicar5066Arabicar5067Arabicar5068Arabicar5069Arabicar507Arabicar5070Arabicar5071Arabicar5072Arabicar5073Arabicar5074Arabicar5075Arabicar5076Arabicar5077Arabicar5078Arabicar5079Arabicar508Arabicar5080Arabicar5081Arabicar5082Arabicar5083Arabicar5084Arabicar5085Arabicar5086Arabicar5087Arabicar5088Arabicar5089Arabicar509Arabicar5090Arabicar5091Arabicar5092Arabicar5093Arabicar5094Arabicar5095Arabicar5096Arabicar5097Arabicar5098Arabicar5099Arabicar51Arabicar510Arabicar5100Arabicar5101Arabicar5102Arabicar5103Arabicar5104Arabicar5105Arabicar5106Arabicar5107Arabicar5108Arabicar5109Arabicar511Arabicar5110Arabicar5111Arabicar5112Arabicar5113Arabicar5114Arabicar5115Arabicar5116Arabicar5117Arabicar5118Arabicar5119Arabicar512Arabicar5120Arabicar5121Arabicar5122Arabicar5123Arabicar5124Arabicar5125Arabicar5126Arabicar5127Arabicar5128Arabicar5129Arabicar513Arabicar5130Arabicar5131Arabicar5132Arabicar5133Arabicar5134Arabicar5135Arabicar5136Arabicar5137Arabicar5138Arabicar5139Arabicar514Arabicar5140Arabicar5141Arabicar5142Arabicar5143Arabicar5144Arabicar5145Arabicar5146Arabicar5147Arabicar5148Arabicar5149Arabicar515Arabicar5150Arabicar5151Arabicar5152Arabicar5153Arabicar5154Arabicar5155Arabicar5156Arabicar5157Arabicar5158Arabicar5159Arabicar516Arabicar5160Arabicar5161Arabicar5162Arabicar5163Arabicar5164Arabicar5165Arabicar5166Arabicar5167Arabicar5168Arabicar5169Arabicar517Arabicar5170Arabicar5171Arabicar5172Arabicar5173Arabicar5174Arabicar5175Arabicar5176Arabicar5177Arabicar5178Arabicar5179Arabicar518Arabicar5180Arabicar5181Arabicar5182Arabicar5183Arabicar5184Arabicar5185Arabicar5186Arabicar5187Arabicar5188Arabicar5189Arabicar519Arabicar5190Arabicar5191Arabicar5192Arabicar5193Arabicar5194Arabicar5195Arabicar5196Arabicar5197Arabicar5198Arabicar5199Arabicar52Arabicar520Arabicar5200Arabicar5201Arabicar5202Arabicar5203Arabicar5204Arabicar5205Arabicar5206Arabicar5207Arabicar5208Arabicar5209Arabicar521Arabicar5210Arabicar5211Arabicar5212Arabicar5213Arabicar5214Arabicar5215Arabicar5216Arabicar5217Arabicar5218Arabicar5219Arabicar522Arabicar5220Arabicar5221Arabicar5222Arabicar5223Arabicar5224Arabicar5225Arabicar5226Arabicar5227Arabicar5228Arabicar5229Arabicar523Arabicar5230Arabicar5231Arabicar5232Arabicar5233Arabicar5234Arabicar5235Arabicar5236Arabicar5237Arabicar5238Arabicar5239Arabicar524Arabicar5240Arabicar5241Arabicar5242Arabicar5243Arabicar5244Arabicar5245Arabicar5246Arabicar5247Arabicar5248Arabicar5249Arabicar525Arabicar5250Arabicar5251Arabicar5252Arabicar5253Arabicar5254Arabicar5255Arabicar5256Arabicar5257Arabicar5258Arabicar5259Arabicar526Arabicar5260Arabicar5261Arabicar5262Arabicar5263Arabicar5264Arabicar5265Arabicar5266Arabicar5267Arabicar5268Arabicar5269Arabicar527Arabicar5270Arabicar5271Arabicar5272Arabicar5273Arabicar5274Arabicar5275Arabicar5276Arabicar5277Arabicar5278Arabicar5279Arabicar528Arabicar5280Arabicar5281Arabicar5282Arabicar5283Arabicar5284Arabicar5285Arabicar5286Arabicar5287Arabicar5288Arabicar5289Arabicar529Arabicar5290Arabicar5291Arabicar5292Arabicar5293Arabicar5294Arabicar5295Arabicar5296Arabicar5297Arabicar5298Arabicar5299Arabicar53Arabicar530Arabicar5300Arabicar5301Arabicar5302Arabicar5303Arabicar5304Arabicar5305Arabicar5306Arabicar5307Arabicar5308Arabicar5309Arabicar531Arabicar5310Arabicar5311Arabicar5312Arabicar5313Arabicar5314Arabicar5315Arabicar5316Arabicar5317Arabicar5318Arabicar5319Arabicar532Arabicar5320Arabicar5321Arabicar5322Arabicar5323Arabicar5324Arabicar5325Arabicar5326Arabicar5327Arabicar5328Arabicar5329Arabicar533Arabicar5330Arabicar5331Arabicar5332Arabicar5333Arabicar5334Arabicar5335Arabicar5336Arabicar5337Arabicar5338Arabicar5339Arabicar534Arabicar5340Arabicar5341Arabicar5342Arabicar5343Arabicar5344Arabicar5345Arabicar5346Arabicar5347Arabicar5348Arabicar5349Arabicar535Arabicar5350Arabicar5351Arabicar5352Arabicar5353Arabicar5354Arabicar5355Arabicar5356Arabicar5357Arabicar5358Arabicar5359Arabicar536Arabicar5360Arabicar5361Arabicar5362Arabicar5363Arabicar5364Arabicar5365Arabicar5366Arabicar5367Arabicar5368Arabicar5369Arabicar537Arabicar5370Arabicar5371Arabicar5372Arabicar5373Arabicar5374Arabicar5375Arabicar5376Arabicar5377Arabicar5378Arabicar5379Arabicar538Arabicar5380Arabicar5381Arabicar5382Arabicar5383Arabicar5384Arabicar5385Arabicar5386Arabicar5387Arabicar5388Arabicar5389Arabicar539Arabicar5390Arabicar5391Arabicar5392Arabicar5393Arabicar5394Arabicar5395Arabicar5396Arabicar5397Arabicar5398Arabicar5399Arabicar54Arabicar540Arabicar5400Arabicar5401Arabicar5402Arabicar5403Arabicar5404Arabicar5405Arabicar5406Arabicar5407Arabicar5408Arabicar5409Arabicar541Arabicar5410Arabicar5411Arabicar5412Arabicar5413Arabicar5414Arabicar5415Arabicar5416Arabicar5417Arabicar5418Arabicar5419Arabicar542Arabicar5420Arabicar5421Arabicar5422Arabicar5423Arabicar5424Arabicar5425Arabicar5426Arabicar5427Arabicar5428Arabicar5429Arabicar543Arabicar5430Arabicar5431Arabicar5432Arabicar5433Arabicar5434Arabicar5435Arabicar5436Arabicar5437Arabicar5438Arabicar5439Arabicar544Arabicar5440Arabicar5441Arabicar5442Arabicar5443Arabicar5444Arabicar5445Arabicar5446Arabicar5447Arabicar5448Arabicar5449Arabicar545Arabicar5450Arabicar5451Arabicar5452Arabicar5453Arabicar5454Arabicar5455Arabicar5456Arabicar5457Arabicar5458Arabicar5459Arabicar546Arabicar5460Arabicar5461Arabicar5462Arabicar5463Arabicar5464Arabicar5465Arabicar5466Arabicar5467Arabicar5468Arabicar5469Arabicar547Arabicar5470Arabicar5471Arabicar5472Arabicar5473Arabicar5474Arabicar5475Arabicar5476Arabicar5477Arabicar5478Arabicar5479Arabicar548Arabicar5480Arabicar5481Arabicar5482Arabicar5483Arabicar5484Arabicar5485Arabicar5486Arabicar5487Arabicar5488Arabicar5489Arabicar549Arabicar5490Arabicar5491Arabicar5492Arabicar5493Arabicar5494Arabicar5495Arabicar5496Arabicar5497Arabicar5498Arabicar5499Arabicar55Arabicar550Arabicar5500Arabicar5501Arabicar5502Arabicar5503Arabicar5504Arabicar5505Arabicar5506Arabicar5507Arabicar5508Arabicar5509Arabicar551Arabicar5510Arabicar5511Arabicar5512Arabicar5513Arabicar5514Arabicar5515Arabicar5516Arabicar5517Arabicar5518Arabicar5519Arabicar552Arabicar5520Arabicar5521Arabicar5522Arabicar5523Arabicar5524Arabicar5525Arabicar5526Arabicar5527Arabicar5528Arabicar5529Arabicar553Arabicar5530Arabicar5531Arabicar5532Arabicar5533Arabicar5534Arabicar5535Arabicar5536Arabicar5537Arabicar5538Arabicar5539Arabicar554Arabicar5540Arabicar5541Arabicar5542Arabicar5543Arabicar5544Arabicar5545Arabicar5546Arabicar5547Arabicar5548Arabicar5549Arabicar555Arabicar5550Arabicar5551Arabicar5552Arabicar5553Arabicar5554Arabicar5555Arabicar5556Arabicar5557Arabicar5558Arabicar5559Arabicar556Arabicar5560Arabicar5561Arabicar5562Arabicar5563Arabicar5564Arabicar5565Arabicar5566Arabicar5567Arabicar5568Arabicar5569Arabicar557Arabicar5570Arabicar5571Arabicar5572Arabicar5573Arabicar5574Arabicar5575Arabicar5576Arabicar5577Arabicar5578Arabicar5579Arabicar558Arabicar5580Arabicar5581Arabicar5582Arabicar5583Arabicar5584Arabicar5585Arabicar5586Arabicar5587Arabicar5588Arabicar5589Arabicar559Arabicar5590Arabicar5591Arabicar5592Arabicar5593Arabicar5594Arabicar5595Arabicar5596Arabicar5597Arabicar5598Arabicar5599Arabicar56Arabicar560Arabicar5600Arabicar5601Arabicar5602Arabicar5603Arabicar5604Arabicar5605Arabicar5606Arabicar5607Arabicar5608Arabicar5609Arabicar561Arabicar5610Arabicar5611Arabicar5612Arabicar5613Arabicar5614Arabicar5615Arabicar5616Arabicar5617Arabicar5618Arabicar5619Arabicar562Arabicar5620Arabicar5621Arabicar5622Arabicar5623Arabicar5624Arabicar5625Arabicar5626Arabicar5627Arabicar5628Arabicar5629Arabicar563Arabicar5630Arabicar5631Arabicar5632Arabicar5633Arabicar5634Arabicar5635Arabicar5636Arabicar5637Arabicar5638Arabicar5639Arabicar564Arabicar5640Arabicar5641Arabicar5642Arabicar5643Arabicar5644Arabicar5645Arabicar5646Arabicar5647Arabicar5648Arabicar5649Arabicar565Arabicar5650Arabicar5651Arabicar5652Arabicar5653Arabicar5654Arabicar5655Arabicar5656Arabicar5657Arabicar5658Arabicar5659Arabicar566Arabicar5660Arabicar5661Arabicar5662Arabicar5663Arabicar5664Arabicar5665Arabicar5666Arabicar5667Arabicar5668Arabicar5669Arabicar567Arabicar5670Arabicar5671Arabicar5672Arabicar5673Arabicar5674Arabicar5675Arabicar5676Arabicar5677Arabicar5678Arabicar5679Arabicar568Arabicar5680Arabicar5681Arabicar5682Arabicar5683Arabicar5684Arabicar5685Arabicar5686Arabicar5687Arabicar5688Arabicar5689Arabicar569Arabicar5690Arabicar5691Arabicar5692Arabicar5693Arabicar5694Arabicar5695Arabicar5696Arabicar5697Arabicar5698Arabicar5699Arabicar57Arabicar570Arabicar5700Arabicar5701Arabicar5702Arabicar5703Arabicar5704Arabicar5705Arabicar5706Arabicar5707Arabicar5708Arabicar5709Arabicar571Arabicar5710Arabicar5711Arabicar5712Arabicar5713Arabicar5714Arabicar5715Arabicar5716Arabicar5717Arabicar5718Arabicar5719Arabicar572Arabicar5720Arabicar5721Arabicar5722Arabicar5723Arabicar5724Arabicar5725Arabicar5726Arabicar5727Arabicar5728Arabicar5729Arabicar573Arabicar5730Arabicar5731Arabicar5732Arabicar5733Arabicar5734Arabicar5735Arabicar5736Arabicar5737Arabicar5738Arabicar5739Arabicar574Arabicar5740Arabicar5741Arabicar5742Arabicar5743Arabicar5744Arabicar5745Arabicar5746Arabicar5747Arabicar5748Arabicar5749Arabicar575Arabicar5750Arabicar5751Arabicar5752Arabicar5753Arabicar5754Arabicar5755Arabicar5756Arabicar5757Arabicar5758Arabicar5759Arabicar576Arabicar5760Arabicar5761Arabicar5762Arabicar5763Arabicar5764Arabicar5765Arabicar5766Arabicar5767Arabicar5768Arabicar5769Arabicar577Arabicar5770Arabicar5771Arabicar5772Arabicar5773Arabicar5774Arabicar5775Arabicar5776Arabicar5777Arabicar5778Arabicar5779Arabicar578Arabicar5780Arabicar5781Arabicar5782Arabicar5783Arabicar5784Arabicar5785Arabicar5786Arabicar5787Arabicar5788Arabicar5789Arabicar579Arabicar5790Arabicar5791Arabicar5792Arabicar5793Arabicar5794Arabicar5795Arabicar5796Arabicar5797Arabicar5798Arabicar5799Arabicar58Arabicar580Arabicar5800Arabicar5801Arabicar5802Arabicar5803Arabicar5804Arabicar5805Arabicar5806Arabicar5807Arabicar5808Arabicar5809Arabicar581Arabicar5810Arabicar5811Arabicar5812Arabicar5813Arabicar5814Arabicar5815Arabicar5816Arabicar5817Arabicar5818Arabicar5819Arabicar582Arabicar5820Arabicar5821Arabicar5822Arabicar5823Arabicar5824Arabicar5825Arabicar5826Arabicar5827Arabicar5828Arabicar5829Arabicar583Arabicar5830Arabicar5831Arabicar5832Arabicar5833Arabicar5834Arabicar5835Arabicar5836Arabicar5837Arabicar5838Arabicar5839Arabicar584Arabicar5840Arabicar5841Arabicar5842Arabicar5843Arabicar5844Arabicar5845Arabicar5846Arabicar5847Arabicar5848Arabicar5849Arabicar585Arabicar5850Arabicar5851Arabicar5852Arabicar5853Arabicar5854Arabicar5855Arabicar5856Arabicar5857Arabicar5858Arabicar5859Arabicar586Arabicar5860Arabicar5861Arabicar5862Arabicar5863Arabicar5864Arabicar5865Arabicar5866Arabicar5867Arabicar5868Arabicar5869Arabicar587Arabicar5870Arabicar5871Arabicar5872Arabicar5873Arabicar5874Arabicar5875Arabicar5876Arabicar5877Arabicar5878Arabicar5879Arabicar588Arabicar5880Arabicar5881Arabicar5882Arabicar5883Arabicar5884Arabicar5885Arabicar5886Arabicar5887Arabicar5888Arabicar5889Arabicar589Arabicar5890Arabicar5891Arabicar5892Arabicar5893Arabicar5894Arabicar5895Arabicar5896Arabicar5897Arabicar5898Arabicar5899Arabicar59Arabicar590Arabicar5900Arabicar5901Arabicar5902Arabicar5903Arabicar5904Arabicar5905Arabicar5906Arabicar5907Arabicar5908Arabicar5909Arabicar591Arabicar5910Arabicar5911Arabicar5912Arabicar5913Arabicar5914Arabicar5915Arabicar5916Arabicar5917Arabicar5918Arabicar5919Arabicar592Arabicar5920Arabicar5921Arabicar5922Arabicar5923Arabicar5924Arabicar5925Arabicar5926Arabicar5927Arabicar5928Arabicar5929Arabicar593Arabicar5930Arabicar5931Arabicar5932Arabicar5933Arabicar5934Arabicar5935Arabicar5936Arabicar5937Arabicar5938Arabicar5939Arabicar594Arabicar5940Arabicar5941Arabicar5942Arabicar5943Arabicar5944Arabicar5945Arabicar5946Arabicar5947Arabicar5948Arabicar5949Arabicar595Arabicar5950Arabicar5951Arabicar5952Arabicar5953Arabicar5954Arabicar5955Arabicar5956Arabicar5957Arabicar5958Arabicar5959Arabicar596Arabicar5960Arabicar5961Arabicar5962Arabicar5963Arabicar5964Arabicar5965Arabicar5966Arabicar5967Arabicar5968Arabicar5969Arabicar597Arabicar5970Arabicar5971Arabicar5972Arabicar5973Arabicar5974Arabicar5975Arabicar5976Arabicar5977Arabicar5978Arabicar5979Arabicar598Arabicar5980Arabicar5981Arabicar5982Arabicar5983Arabicar5984Arabicar5985Arabicar5986Arabicar5987Arabicar5988Arabicar5989Arabicar599Arabicar5990Arabicar5991Arabicar5992Arabicar5993Arabicar5994Arabicar5995Arabicar5996Arabicar5997Arabicar5998Arabicar5999Arabicar6Arabicar60Arabicar600Arabicar6000Arabicar6001Arabicar6002Arabicar6003Arabicar6004Arabicar6005Arabicar6006Arabicar6007Arabicar6008Arabicar6009Arabicar601Arabicar6010Arabicar6011Arabicar6012Arabicar6013Arabicar6014Arabicar6015Arabicar6016Arabicar6017Arabicar6018Arabicar6019Arabicar602Arabicar6020Arabicar6021Arabicar6022Arabicar6023Arabicar6024Arabicar6025Arabicar6026Arabicar6027Arabicar6028Arabicar6029Arabicar603Arabicar6030Arabicar6031Arabicar6032Arabicar6033Arabicar6034Arabicar6035Arabicar6036Arabicar6037Arabicar6038Arabicar6039Arabicar604Arabicar6040Arabicar6041Arabicar6042Arabicar6043Arabicar6044Arabicar6045Arabicar6046Arabicar6047Arabicar6048Arabicar6049Arabicar605Arabicar6050Arabicar6051Arabicar6052Arabicar6053Arabicar6054Arabicar6055Arabicar6056Arabicar6057Arabicar6058Arabicar6059Arabicar606Arabicar6060Arabicar6061Arabicar6062Arabicar6063Arabicar6064Arabicar6065Arabicar6066Arabicar6067Arabicar6068Arabicar6069Arabicar607Arabicar6070Arabicar6071Arabicar6072Arabicar6073Arabicar6074Arabicar6075Arabicar6076Arabicar6077Arabicar6078Arabicar6079Arabicar608Arabicar6080Arabicar6081Arabicar6082Arabicar6083Arabicar6084Arabicar6085Arabicar6086Arabicar6087Arabicar6088Arabicar6089Arabicar609Arabicar6090Arabicar6091Arabicar6092Arabicar6093Arabicar6094Arabicar6095Arabicar6096Arabicar6097Arabicar6098Arabicar6099Arabicar61Arabicar610Arabicar6100Arabicar6101Arabicar6102Arabicar6103Arabicar6104Arabicar6105Arabicar6106Arabicar6107Arabicar6108Arabicar6109Arabicar611Arabicar6110Arabicar6111Arabicar6112Arabicar6113Arabicar6114Arabicar6115Arabicar6116Arabicar6117Arabicar6118Arabicar6119Arabicar612Arabicar6120Arabicar6121Arabicar6122Arabicar6123Arabicar6124Arabicar6125Arabicar6126Arabicar6127Arabicar6128Arabicar6129Arabicar613Arabicar6130Arabicar6131Arabicar6132Arabicar6133Arabicar6134Arabicar6135Arabicar6136Arabicar6137Arabicar6138Arabicar6139Arabicar614Arabicar6140Arabicar6141Arabicar6142Arabicar6143Arabicar6144Arabicar6145Arabicar6146Arabicar6147Arabicar6148Arabicar6149Arabicar615Arabicar6150Arabicar6151Arabicar6152Arabicar6153Arabicar6154Arabicar6155Arabicar6156Arabicar6157Arabicar6158Arabicar6159Arabicar616Arabicar6160Arabicar6161Arabicar6162Arabicar6163Arabicar6164Arabicar6165Arabicar6166Arabicar6167Arabicar6168Arabicar6169Arabicar617Arabicar6170Arabicar6171Arabicar6172Arabicar6173Arabicar6174Arabicar6175Arabicar6176Arabicar6177Arabicar6178Arabicar6179Arabicar618Arabicar6180Arabicar6181Arabicar6182Arabicar6183Arabicar6184Arabicar6185Arabicar6186Arabicar6187Arabicar6188Arabicar6189Arabicar619Arabicar6190Arabicar6191Arabicar6192Arabicar6193Arabicar6194Arabicar6195Arabicar6196Arabicar6197Arabicar6198Arabicar6199Arabicar62Arabicar620Arabicar6200Arabicar6201Arabicar6202Arabicar6203Arabicar6204Arabicar6205Arabicar6206Arabicar6207Arabicar6208Arabicar6209Arabicar621Arabicar6210Arabicar6211Arabicar6212Arabicar6213Arabicar6214Arabicar6215Arabicar6216Arabicar6217Arabicar6218Arabicar6219Arabicar622Arabicar6220Arabicar6221Arabicar6222Arabicar6223Arabicar6224Arabicar6225Arabicar6226Arabicar6227Arabicar6228Arabicar6229Arabicar623Arabicar6230Arabicar6231Arabicar6232Arabicar6233Arabicar6234Arabicar6235Arabicar6236Arabicar6237Arabicar6238Arabicar6239Arabicar624Arabicar6240Arabicar6241Arabicar6242Arabicar6243Arabicar6244Arabicar6245Arabicar6246Arabicar6247Arabicar6248Arabicar6249Arabicar625Arabicar6250Arabicar6251Arabicar6252Arabicar6253Arabicar6254Arabicar6255Arabicar6256Arabicar6257Arabicar6258Arabicar6259Arabicar626Arabicar6260Arabicar6261Arabicar6262Arabicar6263Arabicar6264Arabicar6265Arabicar6266Arabicar6267Arabicar6268Arabicar6269Arabicar627Arabicar6270Arabicar6271Arabicar6272Arabicar6273Arabicar6274Arabicar6275Arabicar6276Arabicar6277Arabicar6278Arabicar6279Arabicar628Arabicar6280Arabicar6281Arabicar6282Arabicar6283Arabicar6284Arabicar6285Arabicar6286Arabicar6287Arabicar6288Arabicar6289Arabicar629Arabicar6290Arabicar6291Arabicar6292Arabicar6293Arabicar6294Arabicar6295Arabicar6296Arabicar6297Arabicar6298Arabicar6299Arabicar63Arabicar630Arabicar6300Arabicar6301Arabicar6302Arabicar6303Arabicar6304Arabicar6305Arabicar6306Arabicar6307Arabicar6308Arabicar6309Arabicar631Arabicar6310Arabicar6311Arabicar6312Arabicar6313Arabicar6314Arabicar6315Arabicar6316Arabicar6317Arabicar6318Arabicar6319Arabicar632Arabicar6320Arabicar6321Arabicar6322Arabicar6323Arabicar6324Arabicar6325Arabicar6326Arabicar6327Arabicar6328Arabicar6329Arabicar633Arabicar6330Arabicar6331Arabicar6332Arabicar6333Arabicar6334Arabicar6335Arabicar6336Arabicar6337Arabicar6338Arabicar6339Arabicar634Arabicar6340Arabicar6341Arabicar6342Arabicar6343Arabicar6344Arabicar6345Arabicar6346Arabicar6347Arabicar6348Arabicar6349Arabicar635Arabicar6350Arabicar6351Arabicar6352Arabicar6353Arabicar6354Arabicar6355Arabicar6356Arabicar6357Arabicar6358Arabicar6359Arabicar636Arabicar6360Arabicar6361Arabicar6362Arabicar6363Arabicar6364Arabicar6365Arabicar6366Arabicar6367Arabicar6368Arabicar6369Arabicar637Arabicar6370Arabicar6371Arabicar6372Arabicar6373Arabicar6374Arabicar6375Arabicar6376Arabicar6377Arabicar6378Arabicar6379Arabicar638Arabicar6380Arabicar6381Arabicar6382Arabicar6383Arabicar6384Arabicar6385Arabicar6386Arabicar6387Arabicar6388Arabicar6389Arabicar639Arabicar6390Arabicar6391Arabicar6392Arabicar6393Arabicar6394Arabicar6395Arabicar6396Arabicar6397Arabicar6398Arabicar6399Arabicar64Arabicar640Arabicar6400Arabicar6401Arabicar6402Arabicar6403Arabicar6404Arabicar6405Arabicar6406Arabicar6407Arabicar6408Arabicar6409Arabicar641Arabicar6410Arabicar6411Arabicar6412Arabicar6413Arabicar6414Arabicar6415Arabicar6416Arabicar6417Arabicar6418Arabicar6419Arabicar642Arabicar6420Arabicar6421Arabicar6422Arabicar6423Arabicar6424Arabicar6425Arabicar6426Arabicar6427Arabicar6428Arabicar6429Arabicar643Arabicar6430Arabicar6431Arabicar6432Arabicar6433Arabicar6434Arabicar6435Arabicar6436Arabicar6437Arabicar6438Arabicar6439Arabicar644Arabicar6440Arabicar6441Arabicar6442Arabicar6443Arabicar6444Arabicar6445Arabicar6446Arabicar6447Arabicar6448Arabicar6449Arabicar645Arabicar6450Arabicar6451Arabicar6452Arabicar6453Arabicar6454Arabicar6455Arabicar6456Arabicar6457Arabicar6458Arabicar6459Arabicar646Arabicar6460Arabicar6461Arabicar6462Arabicar6463Arabicar6464Arabicar6465Arabicar6466Arabicar6467Arabicar6468Arabicar6469Arabicar647Arabicar6470Arabicar6471Arabicar6472Arabicar6473Arabicar6474Arabicar6475Arabicar6476Arabicar6477Arabicar6478Arabicar6479Arabicar648Arabicar6480Arabicar6481Arabicar6482Arabicar6483Arabicar6484Arabicar6485Arabicar6486Arabicar6487Arabicar6488Arabicar6489Arabicar649Arabicar6490Arabicar6491Arabicar6492Arabicar6493Arabicar6494Arabicar6495Arabicar6496Arabicar6497Arabicar6498Arabicar6499Arabicar65Arabicar650Arabicar6500Arabicar6501Arabicar6502Arabicar6503Arabicar6504Arabicar6505Arabicar6506Arabicar6507Arabicar6508Arabicar6509Arabicar651Arabicar6510Arabicar6511Arabicar6512Arabicar6513Arabicar6514Arabicar6515Arabicar6516Arabicar6517Arabicar6518Arabicar6519Arabicar652Arabicar6520Arabicar6521Arabicar6522Arabicar6523Arabicar6524Arabicar6525Arabicar6526Arabicar6527Arabicar6528Arabicar6529Arabicar653Arabicar6530Arabicar6531Arabicar6532Arabicar6533Arabicar6534Arabicar6535Arabicar6536Arabicar6537Arabicar6538Arabicar6539Arabicar654Arabicar6540Arabicar6541Arabicar6542Arabicar6543Arabicar6544Arabicar6545Arabicar6546Arabicar6547Arabicar6548Arabicar6549Arabicar655Arabicar6550Arabicar6551Arabicar6552Arabicar6553Arabicar6554Arabicar6555Arabicar6556Arabicar6557Arabicar6558Arabicar6559Arabicar656Arabicar6560Arabicar6561Arabicar6562Arabicar6563Arabicar6564Arabicar6565Arabicar6566Arabicar6567Arabicar6568Arabicar6569Arabicar657Arabicar6570Arabicar6571Arabicar6572Arabicar6573Arabicar6574Arabicar6575Arabicar6576Arabicar6577Arabicar6578Arabicar6579Arabicar658Arabicar6580Arabicar6581Arabicar6582Arabicar6583Arabicar6584Arabicar6585Arabicar6586Arabicar6587Arabicar6588Arabicar6589Arabicar659Arabicar6590Arabicar6591Arabicar6592Arabicar6593Arabicar6594Arabicar6595Arabicar6596Arabicar6597Arabicar6598Arabicar6599Arabicar66Arabicar660Arabicar6600Arabicar6601Arabicar6602Arabicar6603Arabicar6604Arabicar6605Arabicar6606Arabicar6607Arabicar6608Arabicar6609Arabicar661Arabicar6610Arabicar6611Arabicar6612Arabicar6613Arabicar6614Arabicar6615Arabicar6616Arabicar6617Arabicar6618Arabicar6619Arabicar662Arabicar6620Arabicar6621Arabicar6622Arabicar6623Arabicar6624Arabicar6625Arabicar6626Arabicar6627Arabicar6628Arabicar6629Arabicar663Arabicar6630Arabicar6631Arabicar6632Arabicar6633Arabicar6634Arabicar6635Arabicar6636Arabicar6637Arabicar6638Arabicar6639Arabicar664Arabicar6640Arabicar6641Arabicar6642Arabicar6643Arabicar6644Arabicar6645Arabicar6646Arabicar6647Arabicar6648Arabicar6649Arabicar665Arabicar6650Arabicar6651Arabicar6652Arabicar6653Arabicar6654Arabicar6655Arabicar6656Arabicar6657Arabicar6658Arabicar6659Arabicar666Arabicar6660Arabicar6661Arabicar6662Arabicar6663Arabicar6664Arabicar6665Arabicar6666Arabicar6667Arabicar6668Arabicar6669Arabicar667Arabicar6670Arabicar6671Arabicar6672Arabicar6673Arabicar6674Arabicar6675Arabicar6676Arabicar6677Arabicar6678Arabicar6679Arabicar668Arabicar6680Arabicar6681Arabicar6682Arabicar6683Arabicar6684Arabicar6685Arabicar6686Arabicar6687Arabicar6688Arabicar6689Arabicar669Arabicar6690Arabicar6691Arabicar6692Arabicar6693Arabicar6694Arabicar6695Arabicar6696Arabicar6697Arabicar6698Arabicar6699Arabicar67Arabicar670Arabicar6700Arabicar6701Arabicar6702Arabicar6703Arabicar6704Arabicar6705Arabicar6706Arabicar6707Arabicar6708Arabicar6709Arabicar671Arabicar6710Arabicar6711Arabicar6712Arabicar6713Arabicar6714Arabicar6715Arabicar6716Arabicar6717Arabicar6718Arabicar6719Arabicar672Arabicar6720Arabicar6721Arabicar6722Arabicar6723Arabicar6724Arabicar6725Arabicar6726Arabicar6727Arabicar6728Arabicar6729Arabicar673Arabicar6730Arabicar6731Arabicar6732Arabicar6733Arabicar6734Arabicar6735Arabicar6736Arabicar6737Arabicar6738Arabicar6739Arabicar674Arabicar6740Arabicar6741Arabicar6742Arabicar6743Arabicar6744Arabicar6745Arabicar6746Arabicar6747Arabicar6748Arabicar6749Arabicar675Arabicar6750Arabicar6751Arabicar6752Arabicar6753Arabicar6754Arabicar6755Arabicar6756Arabicar6757Arabicar6758Arabicar6759Arabicar676Arabicar6760Arabicar6761Arabicar6762Arabicar6763Arabicar6764Arabicar6765Arabicar6766Arabicar6767Arabicar6768Arabicar6769Arabicar677Arabicar6770Arabicar6771Arabicar6772Arabicar6773Arabicar6774Arabicar6775Arabicar6776Arabicar6777Arabicar6778Arabicar6779Arabicar678Arabicar6780Arabicar6781Arabicar6782Arabicar6783Arabicar6784Arabicar6785Arabicar6786Arabicar6787Arabicar6788Arabicar6789Arabicar679Arabicar6790Arabicar6791Arabicar6792Arabicar6793Arabicar6794Arabicar6795Arabicar6796Arabicar6797Arabicar6798Arabicar6799Arabicar68Arabicar680Arabicar6800Arabicar6801Arabicar6802Arabicar6803Arabicar6804Arabicar6805Arabicar6806Arabicar6807Arabicar6808Arabicar6809Arabicar681Arabicar6810Arabicar6811Arabicar6812Arabicar6813Arabicar6814Arabicar6815Arabicar6816Arabicar6817Arabicar6818Arabicar6819Arabicar682Arabicar6820Arabicar6821Arabicar6822Arabicar6823Arabicar6824Arabicar6825Arabicar6826Arabicar6827Arabicar6828Arabicar6829Arabicar683Arabicar6830Arabicar6831Arabicar6832Arabicar6833Arabicar6834Arabicar6835Arabicar6836Arabicar6837Arabicar6838Arabicar6839Arabicar684Arabicar6840Arabicar6841Arabicar6842Arabicar6843Arabicar6844Arabicar6845Arabicar6846Arabicar6847Arabicar6848Arabicar6849Arabicar685Arabicar6850Arabicar6851Arabicar6852Arabicar6853Arabicar6854Arabicar6855Arabicar6856Arabicar6857Arabicar6858Arabicar6859Arabicar686Arabicar6860Arabicar6861Arabicar6862Arabicar6863Arabicar6864Arabicar6865Arabicar6866Arabicar6867Arabicar6868Arabicar6869Arabicar687Arabicar6870Arabicar6871Arabicar6872Arabicar6873Arabicar6874Arabicar6875Arabicar6876Arabicar6877Arabicar6878Arabicar6879Arabicar688Arabicar6880Arabicar6881Arabicar6882Arabicar6883Arabicar6884Arabicar6885Arabicar6886Arabicar6887Arabicar6888Arabicar6889Arabicar689Arabicar6890Arabicar6891Arabicar6892Arabicar6893Arabicar6894Arabicar6895Arabicar6896Arabicar6897Arabicar6898Arabicar6899Arabicar69Arabicar690Arabicar6900Arabicar6901Arabicar6902Arabicar6903Arabicar6904Arabicar6905Arabicar6906Arabicar6907Arabicar6908Arabicar6909Arabicar691Arabicar6910Arabicar6911Arabicar6912Arabicar6913Arabicar6914Arabicar6915Arabicar6916Arabicar6917Arabicar6918Arabicar6919Arabicar692Arabicar6920Arabicar6921Arabicar6922Arabicar6923Arabicar6924Arabicar6925Arabicar6926Arabicar6927Arabicar6928Arabicar6929Arabicar693Arabicar6930Arabicar6931Arabicar6932Arabicar6933Arabicar6934Arabicar6935Arabicar6936Arabicar6937Arabicar6938Arabicar6939Arabicar694Arabicar6940Arabicar6941Arabicar6942Arabicar6943Arabicar6944Arabicar6945Arabicar6946Arabicar6947Arabicar6948Arabicar6949Arabicar695Arabicar6950Arabicar6951Arabicar6952Arabicar6953Arabicar6954Arabicar6955Arabicar6956Arabicar6957Arabicar6958Arabicar6959Arabicar696Arabicar6960Arabicar6961Arabicar6962Arabicar6963Arabicar6964Arabicar6965Arabicar6966Arabicar6967Arabicar6968Arabicar6969Arabicar697Arabicar6970Arabicar6971Arabicar6972Arabicar6973Arabicar6974Arabicar6975Arabicar6976Arabicar6977Arabicar6978Arabicar6979Arabicar698Arabicar6980Arabicar6981Arabicar6982Arabicar6983Arabicar6984Arabicar6985Arabicar6986Arabicar6987Arabicar6988Arabicar6989Arabicar699Arabicar6990Arabicar6991Arabicar6992Arabicar6993Arabicar6994Arabicar6995Arabicar6996Arabicar6997Arabicar6998Arabicar6999Arabicar7Arabicar70Arabicar700Arabicar7000Arabicar7001Arabicar7002Arabicar7003Arabicar7004Arabicar7005Arabicar7006Arabicar7007Arabicar7008Arabicar7009Arabicar701Arabicar7010Arabicar7011Arabicar7012Arabicar7013Arabicar7014Arabicar7015Arabicar7016Arabicar7017Arabicar7018Arabicar7019Arabicar702Arabicar7020Arabicar7021Arabicar7022Arabicar7023Arabicar7024Arabicar7025Arabicar7026Arabicar7027Arabicar7028Arabicar7029Arabicar703Arabicar7030Arabicar7031Arabicar7032Arabicar7033Arabicar7034Arabicar7035Arabicar7036Arabicar7037Arabicar7038Arabicar7039Arabicar704Arabicar7040Arabicar7041Arabicar7042Arabicar7043Arabicar7044Arabicar7045Arabicar7046Arabicar7047Arabicar7048Arabicar7049Arabicar705Arabicar7050Arabicar7051Arabicar7052Arabicar7053Arabicar7054Arabicar7055Arabicar7056Arabicar7057Arabicar7058Arabicar7059Arabicar706Arabicar7060Arabicar7061Arabicar7062Arabicar7063Arabicar7064Arabicar7065Arabicar7066Arabicar7067Arabicar7068Arabicar7069Arabicar707Arabicar7070Arabicar7071Arabicar7072Arabicar7073Arabicar7074Arabicar7075Arabicar7076Arabicar7077Arabicar7078Arabicar7079Arabicar708Arabicar7080Arabicar7081Arabicar7082Arabicar7083Arabicar7084Arabicar7085Arabicar7086Arabicar7087Arabicar7088Arabicar7089Arabicar709Arabicar7090Arabicar7091Arabicar7092Arabicar7093Arabicar7094Arabicar7095Arabicar7096Arabicar7097Arabicar7098Arabicar7099Arabicar71Arabicar710Arabicar7100Arabicar7101Arabicar7102Arabicar7103Arabicar7104Arabicar7105Arabicar7106Arabicar7107Arabicar7108Arabicar7109Arabicar711Arabicar7110Arabicar7111Arabicar7112Arabicar7113Arabicar7114Arabicar7115Arabicar7116Arabicar7117Arabicar7118Arabicar7119Arabicar712Arabicar7120Arabicar7121Arabicar7122Arabicar7123Arabicar7124Arabicar7125Arabicar7126Arabicar7127Arabicar7128Arabicar7129Arabicar713Arabicar7130Arabicar7131Arabicar7132Arabicar7133Arabicar7134Arabicar7135Arabicar7136Arabicar7137Arabicar7138Arabicar7139Arabicar714Arabicar7140Arabicar7141Arabicar7142Arabicar7143Arabicar7144Arabicar7145Arabicar7146Arabicar7147Arabicar7148Arabicar7149Arabicar715Arabicar7150Arabicar7151Arabicar7152Arabicar7153Arabicar7154Arabicar7155Arabicar7156Arabicar7157Arabicar7158Arabicar7159Arabicar716Arabicar7160Arabicar7161Arabicar7162Arabicar7163Arabicar7164Arabicar7165Arabicar7166Arabicar7167Arabicar7168Arabicar7169Arabicar717Arabicar7170Arabicar7171Arabicar7172Arabicar7173Arabicar7174Arabicar7175Arabicar7176Arabicar7177Arabicar7178Arabicar7179Arabicar718Arabicar7180Arabicar7181Arabicar7182Arabicar7183Arabicar7184Arabicar7185Arabicar7186Arabicar7187Arabicar7188Arabicar7189Arabicar719Arabicar7190Arabicar7191Arabicar7192Arabicar7193Arabicar7194Arabicar7195Arabicar7196Arabicar7197Arabicar7198Arabicar7199Arabicar72Arabicar720Arabicar7200Arabicar7201Arabicar7202Arabicar7203Arabicar7204Arabicar7205Arabicar7206Arabicar7207Arabicar7208Arabicar7209Arabicar721Arabicar7210Arabicar7211Arabicar7212Arabicar7213Arabicar7214Arabicar7215Arabicar7216Arabicar7217Arabicar7218Arabicar7219Arabicar722Arabicar7220Arabicar7221Arabicar7222Arabicar7223Arabicar7224Arabicar7225Arabicar7226Arabicar7227Arabicar7228Arabicar7229Arabicar723Arabicar7230Arabicar7231Arabicar7232Arabicar7233Arabicar7234Arabicar7235Arabicar7236Arabicar7237Arabicar7238Arabicar7239Arabicar724Arabicar7240Arabicar7241Arabicar7242Arabicar7243Arabicar7244Arabicar7245Arabicar7246Arabicar7247Arabicar7248Arabicar7249Arabicar725Arabicar7250Arabicar7251Arabicar7252Arabicar7253Arabicar7254Arabicar7255Arabicar7256Arabicar7257Arabicar7258Arabicar7259Arabicar726Arabicar7260Arabicar7261Arabicar7262Arabicar7263Arabicar7264Arabicar7265Arabicar7266Arabicar7267Arabicar7268Arabicar7269Arabicar727Arabicar7270Arabicar7271Arabicar7272Arabicar7273Arabicar7274Arabicar7275Arabicar7276Arabicar7277Arabicar7278Arabicar7279Arabicar728Arabicar7280Arabicar7281Arabicar7282Arabicar7283Arabicar7284Arabicar7285Arabicar7286Arabicar7287Arabicar7288Arabicar7289Arabicar729Arabicar7290Arabicar7291Arabicar7292Arabicar7293Arabicar7294Arabicar7295Arabicar7296Arabicar7297Arabicar7298Arabicar7299Arabicar73Arabicar730Arabicar7300Arabicar7301Arabicar7302Arabicar7303Arabicar7304Arabicar7305Arabicar7306Arabicar7307Arabicar7308Arabicar7309Arabicar731Arabicar7310Arabicar7311Arabicar7312Arabicar7313Arabicar7314Arabicar7315Arabicar7316Arabicar7317Arabicar7318Arabicar7319Arabicar732Arabicar7320Arabicar7321Arabicar7322Arabicar7323Arabicar7324Arabicar7325Arabicar7326Arabicar7327Arabicar7328Arabicar7329Arabicar733Arabicar7330Arabicar7331Arabicar7332Arabicar7333Arabicar7334Arabicar7335Arabicar7336Arabicar7337Arabicar7338Arabicar7339Arabicar734Arabicar7340Arabicar7341Arabicar7342Arabicar7343Arabicar7344Arabicar7345Arabicar7346Arabicar7347Arabicar7348Arabicar7349Arabicar735Arabicar7350Arabicar7351Arabicar7352Arabicar7353Arabicar7354Arabicar7355Arabicar7356Arabicar7357Arabicar7358Arabicar7359Arabicar736Arabicar7360Arabicar7361Arabicar7362Arabicar7363Arabicar7364Arabicar7365Arabicar7366Arabicar7367Arabicar7368Arabicar7369Arabicar737Arabicar7370Arabicar7371Arabicar7372Arabicar7373Arabicar7374Arabicar7375Arabicar7376Arabicar7377Arabicar7378Arabicar7379Arabicar738Arabicar7380Arabicar7381Arabicar7382Arabicar7383Arabicar7384Arabicar7385Arabicar7386Arabicar7387Arabicar7388Arabicar7389Arabicar739Arabicar7390Arabicar7391Arabicar7392Arabicar7393Arabicar7394Arabicar7395Arabicar7396Arabicar7397Arabicar7398Arabicar7399Arabicar74Arabicar740Arabicar7400Arabicar7401Arabicar7402Arabicar7403Arabicar7404Arabicar7405Arabicar7406Arabicar7407Arabicar7408Arabicar7409Arabicar741Arabicar7410Arabicar7411Arabicar7412Arabicar7413Arabicar7414Arabicar7415Arabicar7416Arabicar7417Arabicar7418Arabicar7419Arabicar742Arabicar7420Arabicar7421Arabicar7422Arabicar7423Arabicar7424Arabicar7425Arabicar7426Arabicar7427Arabicar7428Arabicar7429Arabicar743Arabicar7430Arabicar7431Arabicar7432Arabicar7433Arabicar7434Arabicar7435Arabicar7436Arabicar7437Arabicar7438Arabicar7439Arabicar744Arabicar7440Arabicar7441Arabicar7442Arabicar7443Arabicar7444Arabicar7445Arabicar7446Arabicar7447Arabicar7448Arabicar7449Arabicar745Arabicar7450Arabicar7451Arabicar7452Arabicar7453Arabicar7454Arabicar7455Arabicar7456Arabicar7457Arabicar7458Arabicar7459Arabicar746Arabicar7460Arabicar7461Arabicar7462Arabicar7463Arabicar7464Arabicar7465Arabicar7466Arabicar7467Arabicar7468Arabicar7469Arabicar747Arabicar7470Arabicar7471Arabicar7472Arabicar7473Arabicar7474Arabicar7475Arabicar7476Arabicar7477Arabicar7478Arabicar7479Arabicar748Arabicar7480Arabicar7481Arabicar7482Arabicar7483Arabicar7484Arabicar7485Arabicar7486Arabicar7487Arabicar7488Arabicar7489Arabicar749Arabicar7490Arabicar7491Arabicar7492Arabicar7493Arabicar7494Arabicar7495Arabicar7496Arabicar7497Arabicar7498Arabicar7499Arabicar75Arabicar750Arabicar7500Arabicar7501Arabicar7502Arabicar7503Arabicar7504Arabicar7505Arabicar7506Arabicar7507Arabicar7508Arabicar7509Arabicar751Arabicar7510Arabicar7511Arabicar7512Arabicar7513Arabicar7514Arabicar7515Arabicar7516Arabicar7517Arabicar7518Arabicar7519Arabicar752Arabicar7520Arabicar7521Arabicar7522Arabicar7523Arabicar7524Arabicar7525Arabicar7526Arabicar7527Arabicar7528Arabicar7529Arabicar753Arabicar7530Arabicar7531Arabicar7532Arabicar7533Arabicar7534Arabicar7535Arabicar7536Arabicar7537Arabicar7538Arabicar7539Arabicar754Arabicar7540Arabicar7541Arabicar7542Arabicar7543Arabicar7544Arabicar7545Arabicar7546Arabicar7547Arabicar7548Arabicar7549Arabicar755Arabicar7550Arabicar7551Arabicar7552Arabicar7553Arabicar7554Arabicar7555Arabicar7556Arabicar7557Arabicar7558Arabicar7559Arabicar756Arabicar7560Arabicar7561Arabicar7562Arabicar7563Arabicar7564Arabicar7565Arabicar7566Arabicar7567Arabicar7568Arabicar7569Arabicar757Arabicar7570Arabicar7571Arabicar7572Arabicar7573Arabicar7574Arabicar7575Arabicar7576Arabicar7577Arabicar7578Arabicar7579Arabicar758Arabicar7580Arabicar7581Arabicar7582Arabicar7583Arabicar7584Arabicar7585Arabicar7586Arabicar7587Arabicar7588Arabicar7589Arabicar759Arabicar7590Arabicar7591Arabicar7592Arabicar7593Arabicar7594Arabicar7595Arabicar7596Arabicar7597Arabicar7598Arabicar7599Arabicar76Arabicar760Arabicar7600Arabicar7601Arabicar7602Arabicar7603Arabicar7604Arabicar7605Arabicar7606Arabicar7607Arabicar7608Arabicar7609Arabicar761Arabicar7610Arabicar7611Arabicar7612Arabicar7613Arabicar7614Arabicar7615Arabicar7616Arabicar7617Arabicar7618Arabicar7619Arabicar762Arabicar7620Arabicar7621Arabicar7622Arabicar7623Arabicar7624Arabicar7625Arabicar7626Arabicar7627Arabicar7628Arabicar7629Arabicar763Arabicar7630Arabicar7631Arabicar7632Arabicar7633Arabicar7634Arabicar7635Arabicar7636Arabicar7637Arabicar7638Arabicar7639Arabicar764Arabicar7640Arabicar7641Arabicar7642Arabicar7643Arabicar7644Arabicar7645Arabicar7646Arabicar7647Arabicar7648Arabicar7649Arabicar765Arabicar7650Arabicar7651Arabicar7652Arabicar7653Arabicar7654Arabicar7655Arabicar7656Arabicar7657Arabicar7658Arabicar7659Arabicar766Arabicar7660Arabicar7661Arabicar7662Arabicar7663Arabicar7664Arabicar7665Arabicar7666Arabicar7667Arabicar7668Arabicar7669Arabicar767Arabicar7670Arabicar7671Arabicar7672Arabicar7673Arabicar7674Arabicar7675Arabicar7676Arabicar7677Arabicar7678Arabicar7679Arabicar768Arabicar7680Arabicar7681Arabicar7682Arabicar7683Arabicar7684Arabicar7685Arabicar7686Arabicar7687Arabicar7688Arabicar7689Arabicar769Arabicar7690Arabicar7691Arabicar7692Arabicar7693Arabicar7694Arabicar7695Arabicar7696Arabicar7697Arabicar7698Arabicar7699Arabicar77Arabicar770Arabicar7700Arabicar7701Arabicar7702Arabicar7703Arabicar7704Arabicar7705Arabicar7706Arabicar7707Arabicar7708Arabicar7709Arabicar771Arabicar7710Arabicar7711Arabicar7712Arabicar7713Arabicar7714Arabicar7715Arabicar7716Arabicar7717Arabicar7718Arabicar7719Arabicar772Arabicar7720Arabicar7721Arabicar7722Arabicar7723Arabicar7724Arabicar7725Arabicar7726Arabicar7727Arabicar7728Arabicar7729Arabicar773Arabicar7730Arabicar7731Arabicar7732Arabicar7733Arabicar7734Arabicar7735Arabicar7736Arabicar7737Arabicar7738Arabicar7739Arabicar774Arabicar7740Arabicar7741Arabicar7742Arabicar7743Arabicar7744Arabicar7745Arabicar7746Arabicar7747Arabicar7748Arabicar7749Arabicar775Arabicar7750Arabicar7751Arabicar7752Arabicar7753Arabicar7754Arabicar7755Arabicar7756Arabicar7757Arabicar7758Arabicar7759Arabicar776Arabicar7760Arabicar7761Arabicar7762Arabicar7763Arabicar7764Arabicar7765Arabicar7766Arabicar7767Arabicar7768Arabicar7769Arabicar777Arabicar7770Arabicar7771Arabicar7772Arabicar7773Arabicar7774Arabicar7775Arabicar7776Arabicar7777Arabicar7778Arabicar7779Arabicar778Arabicar7780Arabicar7781Arabicar7782Arabicar7783Arabicar7784Arabicar7785Arabicar7786Arabicar7787Arabicar7788Arabicar7789Arabicar779Arabicar7790Arabicar7791Arabicar7792Arabicar7793Arabicar7794Arabicar7795Arabicar7796Arabicar7797Arabicar7798Arabicar7799Arabicar78Arabicar780Arabicar7800Arabicar7801Arabicar7802Arabicar7803Arabicar7804Arabicar7805Arabicar7806Arabicar7807Arabicar7808Arabicar7809Arabicar781Arabicar7810Arabicar7811Arabicar7812Arabicar7813Arabicar7814Arabicar7815Arabicar7816Arabicar7817Arabicar7818Arabicar7819Arabicar782Arabicar7820Arabicar7821Arabicar7822Arabicar7823Arabicar7824Arabicar7825Arabicar7826Arabicar7827Arabicar7828Arabicar7829Arabicar783Arabicar7830Arabicar7831Arabicar7832Arabicar7833Arabicar7834Arabicar7835Arabicar7836Arabicar7837Arabicar7838Arabicar7839Arabicar784Arabicar7840Arabicar7841Arabicar7842Arabicar7843Arabicar7844Arabicar7845Arabicar7846Arabicar7847Arabicar7848Arabicar7849Arabicar785Arabicar7850Arabicar7851Arabicar7852Arabicar7853Arabicar7854Arabicar7855Arabicar7856Arabicar7857Arabicar7858Arabicar7859Arabicar786Arabicar7860Arabicar7861Arabicar7862Arabicar7863Arabicar7864Arabicar7865Arabicar7866Arabicar7867Arabicar7868Arabicar7869Arabicar787Arabicar7870Arabicar7871Arabicar7872Arabicar7873Arabicar7874Arabicar7875Arabicar7876Arabicar7877Arabicar7878Arabicar7879Arabicar788Arabicar7880Arabicar7881Arabicar7882Arabicar7883Arabicar7884Arabicar7885Arabicar7886Arabicar7887Arabicar7888Arabicar7889Arabicar789Arabicar7890Arabicar7891Arabicar7892Arabicar7893Arabicar7894Arabicar7895Arabicar7896Arabicar7897Arabicar7898Arabicar7899Arabicar79Arabicar790Arabicar7900Arabicar7901Arabicar7902Arabicar7903Arabicar7904Arabicar7905Arabicar7906Arabicar7907Arabicar7908Arabicar7909Arabicar791Arabicar7910Arabicar7911Arabicar7912Arabicar7913Arabicar7914Arabicar7915Arabicar7916Arabicar7917Arabicar7918Arabicar7919Arabicar792Arabicar7920Arabicar7921Arabicar7922Arabicar7923Arabicar7924Arabicar7925Arabicar7926Arabicar7927Arabicar7928Arabicar7929Arabicar793Arabicar7930Arabicar7931Arabicar7932Arabicar7933Arabicar7934Arabicar7935Arabicar7936Arabicar7937Arabicar7938Arabicar7939Arabicar794Arabicar7940Arabicar7941Arabicar7942Arabicar7943Arabicar7944Arabicar7945Arabicar7946Arabicar7947Arabicar7948Arabicar7949Arabicar795Arabicar7950Arabicar7951Arabicar7952Arabicar7953Arabicar7954Arabicar7955Arabicar7956Arabicar7957Arabicar7958Arabicar7959Arabicar796Arabicar7960Arabicar7961Arabicar7962Arabicar7963Arabicar7964Arabicar7965Arabicar7966Arabicar7967Arabicar7968Arabicar7969Arabicar797Arabicar7970Arabicar7971Arabicar7972Arabicar7973Arabicar7974Arabicar7975Arabicar7976Arabicar7977Arabicar7978Arabicar7979Arabicar798Arabicar7980Arabicar7981Arabicar7982Arabicar7983Arabicar7984Arabicar7985Arabicar7986Arabicar7987Arabicar7988Arabicar7989Arabicar799Arabicar7990Arabicar7991Arabicar7992Arabicar7993Arabicar7994Arabicar7995Arabicar7996Arabicar7997Arabicar7998Arabicar7999Arabicar8Arabicar80Arabicar800Arabicar8000Arabicar8001Arabicar8002Arabicar8003Arabicar8004Arabicar8005Arabicar8006Arabicar8007Arabicar8008Arabicar8009Arabicar801Arabicar8010Arabicar8011Arabicar8012Arabicar8013Arabicar8014Arabicar8015Arabicar8016Arabicar8017Arabicar8018Arabicar8019Arabicar802Arabicar8020Arabicar8021Arabicar8022Arabicar8023Arabicar8024Arabicar8025Arabicar8026Arabicar8027Arabicar8028Arabicar8029Arabicar803Arabicar8030Arabicar8031Arabicar8032Arabicar8033Arabicar8034Arabicar8035Arabicar8036Arabicar8037Arabicar8038Arabicar8039Arabicar804Arabicar8040Arabicar8041Arabicar8042Arabicar8043Arabicar8044Arabicar8045Arabicar8046Arabicar8047Arabicar8048Arabicar8049Arabicar805Arabicar8050Arabicar8051Arabicar8052Arabicar8053Arabicar8054Arabicar8055Arabicar8056Arabicar8057Arabicar8058Arabicar8059Arabicar806Arabicar8060Arabicar8061Arabicar8062Arabicar8063Arabicar8064Arabicar8065Arabicar8066Arabicar8067Arabicar8068Arabicar8069Arabicar807Arabicar8070Arabicar8071Arabicar8072Arabicar8073Arabicar8074Arabicar8075Arabicar8076Arabicar8077Arabicar8078Arabicar8079Arabicar808Arabicar8080Arabicar8081Arabicar8082Arabicar8083Arabicar8084Arabicar8085Arabicar8086Arabicar8087Arabicar8088Arabicar8089Arabicar809Arabicar8090Arabicar8091Arabicar8092Arabicar8093Arabicar8094Arabicar8095Arabicar8096Arabicar8097Arabicar8098Arabicar8099Arabicar81Arabicar810Arabicar8100Arabicar8101Arabicar8102Arabicar8103Arabicar8104Arabicar8105Arabicar8106Arabicar8107Arabicar8108Arabicar8109Arabicar811Arabicar8110Arabicar8111Arabicar8112Arabicar8113Arabicar8114Arabicar8115Arabicar8116Arabicar8117Arabicar8118Arabicar8119Arabicar812Arabicar8120Arabicar8121Arabicar8122Arabicar8123Arabicar8124Arabicar8125Arabicar8126Arabicar8127Arabicar8128Arabicar8129Arabicar813Arabicar8130Arabicar8131Arabicar8132Arabicar8133Arabicar8134Arabicar8135Arabicar8136Arabicar8137Arabicar8138Arabicar8139Arabicar814Arabicar8140Arabicar8141Arabicar8142Arabicar8143Arabicar8144Arabicar8145Arabicar8146Arabicar8147Arabicar8148Arabicar8149Arabicar815Arabicar8150Arabicar8151Arabicar8152Arabicar8153Arabicar8154Arabicar8155Arabicar8156Arabicar8157Arabicar8158Arabicar8159Arabicar816Arabicar8160Arabicar8161Arabicar8162Arabicar8163Arabicar8164Arabicar8165Arabicar8166Arabicar8167Arabicar8168Arabicar8169Arabicar817Arabicar8170Arabicar8171Arabicar8172Arabicar8173Arabicar8174Arabicar8175Arabicar8176Arabicar8177Arabicar8178Arabicar8179Arabicar818Arabicar8180Arabicar8181Arabicar8182Arabicar8183Arabicar8184Arabicar8185Arabicar8186Arabicar8187Arabicar8188Arabicar8189Arabicar819Arabicar8190Arabicar8191Arabicar82Arabicar820Arabicar821Arabicar822Arabicar823Arabicar824Arabicar825Arabicar826Arabicar827Arabicar828Arabicar829Arabicar83Arabicar830Arabicar831Arabicar832Arabicar833Arabicar834Arabicar835Arabicar836Arabicar837Arabicar838Arabicar839Arabicar84Arabicar840Arabicar841Arabicar842Arabicar843Arabicar844Arabicar845Arabicar846Arabicar847Arabicar848Arabicar849Arabicar85Arabicar850Arabicar851Arabicar852Arabicar853Arabicar854Arabicar855Arabicar856Arabicar857Arabicar858Arabicar859Arabicar86Arabicar860Arabicar861Arabicar862Arabicar863Arabicar864Arabicar865Arabicar866Arabicar867Arabicar868Arabicar869Arabicar87Arabicar870Arabicar871Arabicar872Arabicar873Arabicar874Arabicar875Arabicar876Arabicar877Arabicar878Arabicar879Arabicar88Arabicar880Arabicar881Arabicar882Arabicar883Arabicar884Arabicar885Arabicar886Arabicar887Arabicar888Arabicar889Arabicar89Arabicar890Arabicar891Arabicar892Arabicar893Arabicar894Arabicar895Arabicar896Arabicar897Arabicar898Arabicar899Arabicar9Arabicar90Arabicar900Arabicar901Arabicar902Arabicar903Arabicar904Arabicar905Arabicar906Arabicar907Arabicar908Arabicar909Arabicar91Arabicar910Arabicar911Arabicar912Arabicar913Arabicar914Arabicar915Arabicar916Arabicar917Arabicar918Arabicar919Arabicar92Arabicar920Arabicar921Arabicar922Arabicar923Arabicar924Arabicar925Arabicar926Arabicar927Arabicar928Arabicar929Arabicar93Arabicar930Arabicar931Arabicar932Arabicar933Arabicar934Arabicar935Arabicar936Arabicar937Arabicar938Arabicar939Arabicar94Arabicar940Arabicar941Arabicar942Arabicar943Arabicar944Arabicar945Arabicar946Arabicar947Arabicar948Arabicar949Arabicar95Arabicar950Arabicar951Arabicar952Arabicar953Arabicar954Arabicar955Arabicar956Arabicar957Arabicar958Arabicar959Arabicar96Arabicar960Arabicar961Arabicar962Arabicar963Arabicar964Arabicar965Arabicar966Arabicar967Arabicar968Arabicar969Arabicar97Arabicar970Arabicar971Arabicar972Arabicar973Arabicar974Arabicar975Arabicar976Arabicar977Arabicar978Arabicar979Arabicar98Arabicar980Arabicar981Arabicar982Arabicar983Arabicar984Arabicar985Arabicar986Arabicar987Arabicar988Arabicar989Arabicar99Arabicar990Arabicar991Arabicar992Arabicar993Arabicar994Arabicar995Arabicar996Arabicar997Arabicar998Arabicar999Arabicbn0Banglabn1Banglabn10Banglabn100Banglabn1000Banglabn1001Banglabn1002Banglabn1003Banglabn1004Banglabn1005Banglabn1006Banglabn1007Banglabn1008Banglabn1009Banglabn101Banglabn1010Banglabn1011Banglabn1012Banglabn1013Banglabn1014Banglabn1015Banglabn1016Banglabn1017Banglabn1018Banglabn1019Banglabn102Banglabn1020Banglabn1021Banglabn1022Banglabn1023Banglabn1024Banglabn1025Banglabn1026Banglabn1027Banglabn1028Banglabn1029Banglabn103Banglabn1030Banglabn1031Banglabn1032Banglabn1033Banglabn1034Banglabn1035Banglabn1036Banglabn1037Banglabn1038Banglabn1039Banglabn104Banglabn1040Banglabn1041Banglabn1042Banglabn1043Banglabn1044Banglabn1045Banglabn1046Banglabn1047Banglabn1048Banglabn1049Banglabn105Banglabn1050Banglabn1051Banglabn1052Banglabn1053Banglabn1054Banglabn1055Banglabn1056Banglabn1057Banglabn1058Banglabn1059Banglabn106Banglabn1060Banglabn1061Banglabn1062Banglabn1063Banglabn1064Banglabn1065Banglabn1066Banglabn1067Banglabn1068Banglabn1069Banglabn107Banglabn1070Banglabn1071Banglabn1072Banglabn1073Banglabn1074Banglabn1075Banglabn1076Banglabn1077Banglabn1078Banglabn1079Banglabn108Banglabn1080Banglabn1081Banglabn1082Banglabn1083Banglabn1084Banglabn1085Banglabn1086Banglabn1087Banglabn1088Banglabn1089Banglabn109Banglabn1090Banglabn1091Banglabn1092Banglabn1093Banglabn1094Banglabn1095Banglabn1096Banglabn1097Banglabn1098Banglabn1099Banglabn11Banglabn110Banglabn1100Banglabn1101Banglabn1102Banglabn1103Banglabn1104Banglabn1105Banglabn1106Banglabn1107Banglabn1108Banglabn1109Banglabn111Banglabn1110Banglabn1111Banglabn1112Banglabn1113Banglabn1114Banglabn1115Banglabn1116Banglabn1117Banglabn1118Banglabn1119Banglabn112Banglabn1120Banglabn1121Banglabn1122Banglabn1123Banglabn1124Banglabn1125Banglabn1126Banglabn1127Banglabn1128Banglabn1129Banglabn113Banglabn1130Banglabn1131Banglabn1132Banglabn1133Banglabn1134Banglabn1135Banglabn1136Banglabn1137Banglabn1138Banglabn1139Banglabn114Banglabn1140Banglabn1141Banglabn1142Banglabn1143Banglabn1144Banglabn1145Banglabn1146Banglabn1147Banglabn1148Banglabn1149Banglabn115Banglabn1150Banglabn1151Banglabn1152Banglabn1153Banglabn1154Banglabn1155Banglabn1156Banglabn1157Banglabn1158Banglabn1159Banglabn116Banglabn1160Banglabn1161Banglabn1162Banglabn1163Banglabn1164Banglabn1165Banglabn1166Banglabn1167Banglabn1168Banglabn1169Banglabn117Banglabn1170Banglabn1171Banglabn1172Banglabn1173Banglabn1174Banglabn1175Banglabn1176Banglabn1177Banglabn1178Banglabn1179Banglabn118Banglabn1180Banglabn1181Banglabn1182Banglabn1183Banglabn1184Banglabn1185Banglabn1186Banglabn1187Banglabn1188Banglabn1189Banglabn119Banglabn1190Banglabn1191Banglabn1192Banglabn1193Banglabn1194Banglabn1195Banglabn1196Banglabn1197Banglabn1198Banglabn1199Banglabn12Banglabn120Banglabn1200Banglabn1201Banglabn1202Banglabn1203Banglabn1204Banglabn1205Banglabn1206Banglabn1207Banglabn1208Banglabn1209Banglabn121Banglabn1210Banglabn1211Banglabn1212Banglabn1213Banglabn1214Banglabn1215Banglabn1216Banglabn1217Banglabn1218Banglabn1219Banglabn122Banglabn1220Banglabn1221Banglabn1222Banglabn1223Banglabn1224Banglabn1225Banglabn1226Banglabn1227Banglabn1228Banglabn1229Banglabn123Banglabn1230Banglabn1231Banglabn1232Banglabn1233Banglabn1234Banglabn1235Banglabn1236Banglabn1237Banglabn1238Banglabn1239Banglabn124Banglabn1240Banglabn1241Banglabn1242Banglabn1243Banglabn1244Banglabn1245Banglabn1246Banglabn1247Banglabn1248Banglabn1249Banglabn125Banglabn1250Banglabn1251Banglabn1252Banglabn1253Banglabn1254Banglabn1255Banglabn1256Banglabn1257Banglabn1258Banglabn1259Banglabn126Banglabn1260Banglabn1261Banglabn1262Banglabn1263Banglabn1264Banglabn1265Banglabn1266Banglabn1267Banglabn1268Banglabn1269Banglabn127Banglabn1270Banglabn1271Banglabn1272Banglabn1273Banglabn1274Banglabn1275Banglabn1276Banglabn1277Banglabn1278Banglabn1279Banglabn128Banglabn1280Banglabn1281Banglabn1282Banglabn1283Banglabn1284Banglabn1285Banglabn1286Banglabn1287Banglabn1288Banglabn1289Banglabn129Banglabn1290Banglabn1291Banglabn1292Banglabn1293Banglabn1294Banglabn1295Banglabn1296Banglabn1297Banglabn1298Banglabn1299Banglabn13Banglabn130Banglabn1300Banglabn1301Banglabn1302Banglabn1303Banglabn1304Banglabn1305Banglabn1306Banglabn1307Banglabn1308Banglabn1309Banglabn131Banglabn1310Banglabn1311Banglabn1312Banglabn1313Banglabn1314Banglabn1315Banglabn1316Banglabn1317Banglabn1318Banglabn1319Banglabn132Banglabn1320Banglabn1321Banglabn1322Banglabn1323Banglabn1324Banglabn1325Banglabn1326Banglabn1327Banglabn1328Banglabn1329Banglabn133Banglabn1330Banglabn1331Banglabn1332Banglabn1333Banglabn1334Banglabn1335Banglabn1336Banglabn1337Banglabn1338Banglabn1339Banglabn134Banglabn1340Banglabn1341Banglabn1342Banglabn1343Banglabn1344Banglabn1345Banglabn1346Banglabn1347Banglabn1348Banglabn1349Banglabn135Banglabn1350Banglabn1351Banglabn1352Banglabn1353Banglabn1354Banglabn1355Banglabn1356Banglabn1357Banglabn1358Banglabn1359Banglabn136Banglabn1360Banglabn1361Banglabn1362Banglabn1363Banglabn1364Banglabn1365Banglabn1366Banglabn1367Banglabn1368Banglabn1369Banglabn137Banglabn1370Banglabn1371Banglabn1372Banglabn1373Banglabn1374Banglabn1375Banglabn1376Banglabn1377Banglabn1378Banglabn1379Banglabn138Banglabn1380Banglabn1381Banglabn1382Banglabn1383Banglabn1384Banglabn1385Banglabn1386Banglabn1387Banglabn1388Banglabn1389Banglabn139Banglabn1390Banglabn1391Banglabn1392Banglabn1393Banglabn1394Banglabn1395Banglabn1396Banglabn1397Banglabn1398Banglabn1399Banglabn14Banglabn140Banglabn1400Banglabn1401Banglabn1402Banglabn1403Banglabn1404Banglabn1405Banglabn1406Banglabn1407Banglabn1408Banglabn1409Banglabn141Banglabn1410Banglabn1411Banglabn1412Banglabn1413Banglabn1414Banglabn1415Banglabn1416Banglabn1417Banglabn1418Banglabn1419Banglabn142Banglabn1420Banglabn1421Banglabn1422Banglabn1423Banglabn1424Banglabn1425Banglabn1426Banglabn1427Banglabn1428Banglabn1429Banglabn143Banglabn1430Banglabn1431Banglabn1432Banglabn1433Banglabn1434Banglabn1435Banglabn1436Banglabn1437Banglabn1438Banglabn1439Banglabn144Banglabn1440Banglabn1441Banglabn1442Banglabn1443Banglabn1444Banglabn1445Banglabn1446Banglabn1447Banglabn1448Banglabn1449Banglabn145Banglabn1450Banglabn1451Banglabn1452Banglabn1453Banglabn1454Banglabn1455Banglabn1456Banglabn1457Banglabn1458Banglabn1459Banglabn146Banglabn1460Banglabn1461Banglabn1462Banglabn1463Banglabn1464Banglabn1465Banglabn1466Banglabn1467Banglabn1468Banglabn1469Banglabn147Banglabn1470Banglabn1471Banglabn1472Banglabn1473Banglabn1474Banglabn1475Banglabn1476Banglabn1477Banglabn1478Banglabn1479Banglabn148Banglabn1480Banglabn1481Banglabn1482Banglabn1483Banglabn1484Banglabn1485Banglabn1486Banglabn1487Banglabn1488Banglabn1489Banglabn149Banglabn1490Banglabn1491Banglabn1492Banglabn1493Banglabn1494Banglabn1495Banglabn1496Banglabn1497Banglabn1498Banglabn1499Banglabn15Banglabn150Banglabn1500Banglabn1501Banglabn1502Banglabn1503Banglabn1504Banglabn1505Banglabn1506Banglabn1507Banglabn1508Banglabn1509Banglabn151Banglabn1510Banglabn1511Banglabn1512Banglabn1513Banglabn1514Banglabn1515Banglabn1516Banglabn1517Banglabn1518Banglabn1519Banglabn152Banglabn1520Banglabn1521Banglabn1522Banglabn1523Banglabn1524Banglabn1525Banglabn1526Banglabn1527Banglabn1528Banglabn1529Banglabn153Banglabn1530Banglabn1531Banglabn1532Banglabn1533Banglabn1534Banglabn1535Banglabn1536Banglabn1537Banglabn1538Banglabn1539Banglabn154Banglabn1540Banglabn1541Banglabn1542Banglabn1543Banglabn1544Banglabn1545Banglabn1546Banglabn1547Banglabn1548Banglabn1549Banglabn155Banglabn1550Banglabn1551Banglabn1552Banglabn1553Banglabn1554Banglabn1555Banglabn1556Banglabn1557Banglabn1558Banglabn1559Banglabn156Banglabn1560Banglabn1561Banglabn1562Banglabn1563Banglabn1564Banglabn1565Banglabn1566Banglabn1567Banglabn1568Banglabn1569Banglabn157Banglabn1570Banglabn1571Banglabn1572Banglabn1573Banglabn1574Banglabn1575Banglabn1576Banglabn1577Banglabn1578Banglabn1579Banglabn158Banglabn1580Banglabn1581Banglabn1582Banglabn1583Banglabn1584Banglabn1585Banglabn1586Banglabn1587Banglabn1588Banglabn1589Banglabn159Banglabn1590Banglabn1591Banglabn1592Banglabn1593Banglabn1594Banglabn1595Banglabn1596Banglabn1597Banglabn1598Banglabn1599Banglabn16Banglabn160Banglabn1600Banglabn1601Banglabn1602Banglabn1603Banglabn1604Banglabn1605Banglabn1606Banglabn1607Banglabn1608Banglabn1609Banglabn161Banglabn1610Banglabn1611Banglabn1612Banglabn1613Banglabn1614Banglabn1615Banglabn1616Banglabn1617Banglabn1618Banglabn1619Banglabn162Banglabn1620Banglabn1621Banglabn1622Banglabn1623Banglabn1624Banglabn1625Banglabn1626Banglabn1627Banglabn1628Banglabn1629Banglabn163Banglabn1630Banglabn1631Banglabn1632Banglabn1633Banglabn1634Banglabn1635Banglabn1636Banglabn1637Banglabn1638Banglabn1639Banglabn164Banglabn1640Banglabn1641Banglabn1642Banglabn1643Banglabn1644Banglabn1645Banglabn1646Banglabn1647Banglabn1648Banglabn1649Banglabn165Banglabn1650Banglabn1651Banglabn1652Banglabn1653Banglabn1654Banglabn1655Banglabn1656Banglabn1657Banglabn1658Banglabn1659Banglabn166Banglabn1660Banglabn1661Banglabn1662Banglabn1663Banglabn1664Banglabn1665Banglabn1666Banglabn1667Banglabn1668Banglabn1669Banglabn167Banglabn1670Banglabn1671Banglabn1672Banglabn1673Banglabn1674Banglabn1675Banglabn1676Banglabn1677Banglabn1678Banglabn1679Banglabn168Banglabn1680Banglabn1681Banglabn1682Banglabn1683Banglabn1684Banglabn1685Banglabn1686Banglabn1687Banglabn1688Banglabn1689Banglabn169Banglabn1690Banglabn1691Banglabn1692Banglabn1693Banglabn1694Banglabn1695Banglabn1696Banglabn1697Banglabn1698Banglabn1699Banglabn17Banglabn170Banglabn1700Banglabn1701Banglabn1702Banglabn1703Banglabn1704Banglabn1705Banglabn1706Banglabn1707Banglabn1708Banglabn1709Banglabn171Banglabn1710Banglabn1711Banglabn1712Banglabn1713Banglabn1714Banglabn1715Banglabn1716Banglabn1717Banglabn1718Banglabn1719Banglabn172Banglabn1720Banglabn1721Banglabn1722Banglabn1723Banglabn1724Banglabn1725Banglabn1726Banglabn1727Banglabn1728Banglabn1729Banglabn173Banglabn1730Banglabn1731Banglabn1732Banglabn1733Banglabn1734Banglabn1735Banglabn1736Banglabn1737Banglabn1738Banglabn1739Banglabn174Banglabn1740Banglabn1741Banglabn1742Banglabn1743Banglabn1744Banglabn1745Banglabn1746Banglabn1747Banglabn1748Banglabn1749Banglabn175Banglabn1750Banglabn1751Banglabn1752Banglabn1753Banglabn1754Banglabn1755Banglabn1756Banglabn1757Banglabn1758Banglabn1759Banglabn176Banglabn1760Banglabn1761Banglabn1762Banglabn1763Banglabn1764Banglabn1765Banglabn1766Banglabn1767Banglabn1768Banglabn1769Banglabn177Banglabn1770Banglabn1771Banglabn1772Banglabn1773Banglabn1774Banglabn1775Banglabn1776Banglabn1777Banglabn1778Banglabn1779Banglabn178Banglabn1780Banglabn1781Banglabn1782Banglabn1783Banglabn1784Banglabn1785Banglabn1786Banglabn1787Banglabn1788Banglabn1789Banglabn179Banglabn1790Banglabn1791Banglabn1792Banglabn1793Banglabn1794Banglabn1795Banglabn1796Banglabn1797Banglabn1798Banglabn1799Banglabn18Banglabn180Banglabn1800Banglabn1801Banglabn1802Banglabn1803Banglabn1804Banglabn1805Banglabn1806Banglabn1807Banglabn1808Banglabn1809Banglabn181Banglabn1810Banglabn1811Banglabn1812Banglabn1813Banglabn1814Banglabn1815Banglabn1816Banglabn1817Banglabn1818Banglabn1819Banglabn182Banglabn1820Banglabn1821Banglabn1822Banglabn1823Banglabn1824Banglabn1825Banglabn1826Banglabn1827Banglabn1828Banglabn1829Banglabn183Banglabn1830Banglabn1831Banglabn1832Banglabn1833Banglabn1834Banglabn1835Banglabn1836Banglabn1837Banglabn1838Banglabn1839Banglabn184Banglabn1840Banglabn1841Banglabn1842Banglabn1843Banglabn1844Banglabn1845Banglabn1846Banglabn1847Banglabn1848Banglabn1849Banglabn185Banglabn1850Banglabn1851Banglabn1852Banglabn1853Banglabn1854Banglabn1855Banglabn1856Banglabn1857Banglabn1858Banglabn1859Banglabn186Banglabn1860Banglabn1861Banglabn1862Banglabn1863Banglabn1864Banglabn1865Banglabn1866Banglabn1867Banglabn1868Banglabn1869Banglabn187Banglabn1870Banglabn1871Banglabn1872Banglabn1873Banglabn1874Banglabn1875Banglabn1876Banglabn1877Banglabn1878Banglabn1879Banglabn188Banglabn1880Banglabn1881Banglabn1882Banglabn1883Banglabn1884Banglabn1885Banglabn1886Banglabn1887Banglabn1888Banglabn1889Banglabn189Banglabn1890Banglabn1891Banglabn1892Banglabn1893Banglabn1894Banglabn1895Banglabn1896Banglabn1897Banglabn1898Banglabn1899Banglabn19Banglabn190Banglabn1900Banglabn1901Banglabn1902Banglabn1903Banglabn1904Banglabn1905Banglabn1906Banglabn1907Banglabn1908Banglabn1909Banglabn191Banglabn1910Banglabn1911Banglabn1912Banglabn1913Banglabn1914Banglabn1915Banglabn1916Banglabn1917Banglabn1918Banglabn1919Banglabn192Banglabn1920Banglabn1921Banglabn1922Banglabn1923Banglabn1924Banglabn1925Banglabn1926Banglabn1927Banglabn1928Banglabn1929Banglabn193Banglabn1930Banglabn1931Banglabn1932Banglabn1933Banglabn1934Banglabn1935Banglabn1936Banglabn1937Banglabn1938Banglabn1939Banglabn194Banglabn1940Banglabn1941Banglabn1942Banglabn1943Banglabn1944Banglabn1945Banglabn1946Banglabn1947Banglabn1948Banglabn1949Banglabn195Banglabn1950Banglabn1951Banglabn1952Banglabn1953Banglabn1954Banglabn1955Banglabn1956Banglabn1957Banglabn1958Banglabn1959Banglabn196Banglabn1960Banglabn1961Banglabn1962Banglabn1963Banglabn1964Banglabn1965Banglabn1966Banglabn1967Banglabn1968Banglabn1969Banglabn197Banglabn1970Banglabn1971Banglabn1972Banglabn1973Banglabn1974Banglabn1975Banglabn1976Banglabn1977Banglabn1978Banglabn1979Banglabn198Banglabn1980Banglabn1981Banglabn1982Banglabn1983Banglabn1984Banglabn1985Banglabn1986Banglabn1987Banglabn1988Banglabn1989Banglabn199Banglabn1990Banglabn1991Banglabn1992Banglabn1993Banglabn1994Banglabn1995Banglabn1996Banglabn1997Banglabn1998Banglabn1999Banglabn2Banglabn20Banglabn200Banglabn2000Banglabn2001Banglabn2002Banglabn2003Banglabn2004Banglabn2005Banglabn2006Banglabn2007Banglabn2008Banglabn2009Banglabn201Banglabn2010Banglabn2011Banglabn2012Banglabn2013Banglabn2014Banglabn2015Banglabn2016Banglabn2017Banglabn2018Banglabn2019Banglabn202Banglabn2020Banglabn2021Banglabn2022Banglabn2023Banglabn2024Banglabn2025Banglabn2026Banglabn2027Banglabn2028Banglabn2029Banglabn203Banglabn2030Banglabn2031Banglabn2032Banglabn2033Banglabn2034Banglabn2035Banglabn2036Banglabn2037Banglabn2038Banglabn2039Banglabn204Banglabn2040Banglabn2041Banglabn2042Banglabn2043Banglabn2044Banglabn2045Banglabn2046Banglabn2047Banglabn2048Banglabn2049Banglabn205Banglabn2050Banglabn2051Banglabn2052Banglabn2053Banglabn2054Banglabn2055Banglabn2056Banglabn2057Banglabn2058Banglabn2059Banglabn206Banglabn2060Banglabn2061Banglabn2062Banglabn2063Banglabn2064Banglabn2065Banglabn2066Banglabn2067Banglabn2068Banglabn2069Banglabn207Banglabn2070Banglabn2071Banglabn2072Banglabn2073Banglabn2074Banglabn2075Banglabn2076Banglabn2077Banglabn2078Banglabn2079Banglabn208Banglabn2080Banglabn2081Banglabn2082Banglabn2083Banglabn2084Banglabn2085Banglabn2086Banglabn2087Banglabn2088Banglabn2089Banglabn209Banglabn2090Banglabn2091Banglabn2092Banglabn2093Banglabn2094Banglabn2095Banglabn2096Banglabn2097Banglabn2098Banglabn2099Banglabn21Banglabn210Banglabn2100Banglabn2101Banglabn2102Banglabn2103Banglabn2104Banglabn2105Banglabn2106Banglabn2107Banglabn2108Banglabn2109Banglabn211Banglabn2110Banglabn2111Banglabn2112Banglabn2113Banglabn2114Banglabn2115Banglabn2116Banglabn2117Banglabn2118Banglabn2119Banglabn212Banglabn2120Banglabn2121Banglabn2122Banglabn2123Banglabn2124Banglabn2125Banglabn2126Banglabn2127Banglabn2128Banglabn2129Banglabn213Banglabn2130Banglabn2131Banglabn2132Banglabn2133Banglabn2134Banglabn2135Banglabn2136Banglabn2137Banglabn2138Banglabn2139Banglabn214Banglabn2140Banglabn2141Banglabn2142Banglabn2143Banglabn2144Banglabn2145Banglabn2146Banglabn2147Banglabn2148Banglabn2149Banglabn215Banglabn2150Banglabn2151Banglabn2152Banglabn2153Banglabn2154Banglabn2155Banglabn2156Banglabn2157Banglabn2158Banglabn2159Banglabn216Banglabn2160Banglabn2161Banglabn2162Banglabn2163Banglabn2164Banglabn2165Banglabn2166Banglabn2167Banglabn2168Banglabn2169Banglabn217Banglabn2170Banglabn2171Banglabn2172Banglabn2173Banglabn2174Banglabn2175Banglabn2176Banglabn2177Banglabn2178Banglabn2179Banglabn218Banglabn2180Banglabn2181Banglabn2182Banglabn2183Banglabn2184Banglabn2185Banglabn2186Banglabn2187Banglabn2188Banglabn2189Banglabn219Banglabn2190Banglabn2191Banglabn2192Banglabn2193Banglabn2194Banglabn2195Banglabn2196Banglabn2197Banglabn2198Banglabn2199Banglabn22Banglabn220Banglabn2200Banglabn2201Banglabn2202Banglabn2203Banglabn2204Banglabn2205Banglabn2206Banglabn2207Banglabn2208Banglabn2209Banglabn221Banglabn2210Banglabn2211Banglabn2212Banglabn2213Banglabn2214Banglabn2215Banglabn2216Banglabn2217Banglabn2218Banglabn2219Banglabn222Banglabn2220Banglabn2221Banglabn2222Banglabn2223Banglabn2224Banglabn2225Banglabn2226Banglabn2227Banglabn2228Banglabn2229Banglabn223Banglabn2230Banglabn2231Banglabn2232Banglabn2233Banglabn2234Banglabn2235Banglabn2236Banglabn2237Banglabn2238Banglabn2239Banglabn224Banglabn2240Banglabn2241Banglabn2242Banglabn2243Banglabn2244Banglabn2245Banglabn2246Banglabn2247Banglabn2248Banglabn2249Banglabn225Banglabn2250Banglabn2251Banglabn2252Banglabn2253Banglabn2254Banglabn2255Banglabn2256Banglabn2257Banglabn2258Banglabn2259Banglabn226Banglabn2260Banglabn2261Banglabn2262Banglabn2263Banglabn2264Banglabn2265Banglabn2266Banglabn2267Banglabn2268Banglabn2269Banglabn227Banglabn2270Banglabn2271Banglabn2272Banglabn2273Banglabn2274Banglabn2275Banglabn2276Banglabn2277Banglabn2278Banglabn2279Banglabn228Banglabn2280Banglabn2281Banglabn2282Banglabn2283Banglabn2284Banglabn2285Banglabn2286Banglabn2287Banglabn2288Banglabn2289Banglabn229Banglabn2290Banglabn2291Banglabn2292Banglabn2293Banglabn2294Banglabn2295Banglabn2296Banglabn2297Banglabn2298Banglabn2299Banglabn23Banglabn230Banglabn2300Banglabn2301Banglabn2302Banglabn2303Banglabn2304Banglabn2305Banglabn2306Banglabn2307Banglabn2308Banglabn2309Banglabn231Banglabn2310Banglabn2311Banglabn2312Banglabn2313Banglabn2314Banglabn2315Banglabn2316Banglabn2317Banglabn2318Banglabn2319Banglabn232Banglabn2320Banglabn2321Banglabn2322Banglabn2323Banglabn2324Banglabn2325Banglabn2326Banglabn2327Banglabn2328Banglabn2329Banglabn233Banglabn2330Banglabn2331Banglabn2332Banglabn2333Banglabn2334Banglabn2335Banglabn2336Banglabn2337Banglabn2338Banglabn2339Banglabn234Banglabn2340Banglabn2341Banglabn2342Banglabn2343Banglabn2344Banglabn2345Banglabn2346Banglabn2347Banglabn2348Banglabn2349Banglabn235Banglabn2350Banglabn2351Banglabn2352Banglabn2353Banglabn2354Banglabn2355Banglabn2356Banglabn2357Banglabn2358Banglabn2359Banglabn236Banglabn2360Banglabn2361Banglabn2362Banglabn2363Banglabn2364Banglabn2365Banglabn2366Banglabn2367Banglabn2368Banglabn2369Banglabn237Banglabn2370Banglabn2371Banglabn2372Banglabn2373Banglabn2374Banglabn2375Banglabn2376Banglabn2377Banglabn2378Banglabn2379Banglabn238Banglabn2380Banglabn2381Banglabn2382Banglabn2383Banglabn2384Banglabn2385Banglabn2386Banglabn2387Banglabn2388Banglabn2389Banglabn239Banglabn2390Banglabn2391Banglabn2392Banglabn2393Banglabn2394Banglabn2395Banglabn2396Banglabn2397Banglabn2398Banglabn2399Banglabn24Banglabn240Banglabn2400Banglabn2401Banglabn2402Banglabn2403Banglabn2404Banglabn2405Banglabn2406Banglabn2407Banglabn2408Banglabn2409Banglabn241Banglabn2410Banglabn2411Banglabn2412Banglabn2413Banglabn2414Banglabn2415Banglabn2416Banglabn2417Banglabn2418Banglabn2419Banglabn242Banglabn2420Banglabn2421Banglabn2422Banglabn2423Banglabn2424Banglabn2425Banglabn2426Banglabn2427Banglabn2428Banglabn2429Banglabn243Banglabn2430Banglabn2431Banglabn2432Banglabn2433Banglabn2434Banglabn2435Banglabn2436Banglabn2437Banglabn2438Banglabn2439Banglabn244Banglabn2440Banglabn2441Banglabn2442Banglabn2443Banglabn2444Banglabn2445Banglabn2446Banglabn2447Banglabn2448Banglabn2449Banglabn245Banglabn2450Banglabn2451Banglabn2452Banglabn2453Banglabn2454Banglabn2455Banglabn2456Banglabn2457Banglabn2458Banglabn2459Banglabn246Banglabn2460Banglabn2461Banglabn2462Banglabn2463Banglabn2464Banglabn2465Banglabn2466Banglabn2467Banglabn2468Banglabn2469Banglabn247Banglabn2470Banglabn2471Banglabn2472Banglabn2473Banglabn2474Banglabn2475Banglabn2476Banglabn2477Banglabn2478Banglabn2479Banglabn248Banglabn2480Banglabn2481Banglabn2482Banglabn2483Banglabn2484Banglabn2485Banglabn2486Banglabn2487Banglabn2488Banglabn2489Banglabn249Banglabn2490Banglabn2491Banglabn2492Banglabn2493Banglabn2494Banglabn2495Banglabn2496Banglabn2497Banglabn2498Banglabn2499Banglabn25Banglabn250Banglabn2500Banglabn2501Banglabn2502Banglabn2503Banglabn2504Banglabn2505Banglabn2506Banglabn2507Banglabn2508Banglabn2509Banglabn251Banglabn2510Banglabn2511Banglabn2512Banglabn2513Banglabn2514Banglabn2515Banglabn2516Banglabn2517Banglabn2518Banglabn2519Banglabn252Banglabn2520Banglabn2521Banglabn2522Banglabn2523Banglabn2524Banglabn2525Banglabn2526Banglabn2527Banglabn2528Banglabn2529Banglabn253Banglabn2530Banglabn2531Banglabn2532Banglabn2533Banglabn2534Banglabn2535Banglabn2536Banglabn2537Banglabn2538Banglabn2539Banglabn254Banglabn2540Banglabn2541Banglabn2542Banglabn2543Banglabn2544Banglabn2545Banglabn2546Banglabn2547Banglabn2548Banglabn2549Banglabn255Banglabn2550Banglabn2551Banglabn2552Banglabn2553Banglabn2554Banglabn2555Banglabn2556Banglabn2557Banglabn2558Banglabn2559Banglabn256Banglabn2560Banglabn2561Banglabn2562Banglabn2563Banglabn2564Banglabn2565Banglabn2566Banglabn2567Banglabn2568Banglabn2569Banglabn257Banglabn2570Banglabn2571Banglabn2572Banglabn2573Banglabn2574Banglabn2575Banglabn2576Banglabn2577Banglabn2578Banglabn2579Banglabn258Banglabn2580Banglabn2581Banglabn2582Banglabn2583Banglabn2584Banglabn2585Banglabn2586Banglabn2587Banglabn2588Banglabn2589Banglabn259Banglabn2590Banglabn2591Banglabn2592Banglabn2593Banglabn2594Banglabn2595Banglabn2596Banglabn2597Banglabn2598Banglabn2599Banglabn26Banglabn260Banglabn2600Banglabn2601Banglabn2602Banglabn2603Banglabn2604Banglabn2605Banglabn2606Banglabn2607Banglabn2608Banglabn2609Banglabn261Banglabn2610Banglabn2611Banglabn2612Banglabn2613Banglabn2614Banglabn2615Banglabn2616Banglabn2617Banglabn2618Banglabn2619Banglabn262Banglabn2620Banglabn2621Banglabn2622Banglabn2623Banglabn2624Banglabn2625Banglabn2626Banglabn2627Banglabn2628Banglabn2629Banglabn263Banglabn2630Banglabn2631Banglabn2632Banglabn2633Banglabn2634Banglabn2635Banglabn2636Banglabn2637Banglabn2638Banglabn2639Banglabn264Banglabn2640Banglabn2641Banglabn2642Banglabn2643Banglabn2644Banglabn2645Banglabn2646Banglabn2647Banglabn2648Banglabn2649Banglabn265Banglabn2650Banglabn2651Banglabn2652Banglabn2653Banglabn2654Banglabn2655Banglabn2656Banglabn2657Banglabn2658Banglabn2659Banglabn266Banglabn2660Banglabn2661Banglabn2662Banglabn2663Banglabn2664Banglabn2665Banglabn2666Banglabn2667Banglabn2668Banglabn2669Banglabn267Banglabn2670Banglabn2671Banglabn2672Banglabn2673Banglabn2674Banglabn2675Banglabn2676Banglabn2677Banglabn2678Banglabn2679Banglabn268Banglabn2680Banglabn2681Banglabn2682Banglabn2683Banglabn2684Banglabn2685Banglabn2686Banglabn2687Banglabn2688Banglabn2689Banglabn269Banglabn2690Banglabn2691Banglabn2692Banglabn2693Banglabn2694Banglabn2695Banglabn2696Banglabn2697Banglabn2698Banglabn2699Banglabn27Banglabn270Banglabn2700Banglabn2701Banglabn2702Banglabn2703Banglabn2704Banglabn2705Banglabn2706Banglabn2707Banglabn2708Banglabn2709Banglabn271Banglabn2710Banglabn2711Banglabn2712Banglabn2713Banglabn2714Banglabn2715Banglabn2716Banglabn2717Banglabn2718Banglabn2719Banglabn272Banglabn2720Banglabn2721Banglabn2722Banglabn2723Banglabn2724Banglabn2725Banglabn2726Banglabn2727Banglabn2728Banglabn2729Banglabn273Banglabn2730Banglabn2731Banglabn2732Banglabn2733Banglabn2734Banglabn2735Banglabn2736Banglabn2737Banglabn2738Banglabn2739Banglabn274Banglabn2740Banglabn2741Banglabn2742Banglabn2743Banglabn2744Banglabn2745Banglabn2746Banglabn2747Banglabn2748Banglabn2749Banglabn275Banglabn2750Banglabn2751Banglabn2752Banglabn2753Banglabn2754Banglabn2755Banglabn2756Banglabn2757Banglabn2758Banglabn2759Banglabn276Banglabn2760Banglabn2761Banglabn2762Banglabn2763Banglabn2764Banglabn2765Banglabn2766Banglabn2767Banglabn2768Banglabn2769Banglabn277Banglabn2770Banglabn2771Banglabn2772Banglabn2773Banglabn2774Banglabn2775Banglabn2776Banglabn2777Banglabn2778Banglabn2779Banglabn278Banglabn2780Banglabn2781Banglabn2782Banglabn2783Banglabn2784Banglabn2785Banglabn2786Banglabn2787Banglabn2788Banglabn2789Banglabn279Banglabn2790Banglabn2791Banglabn2792Banglabn2793Banglabn2794Banglabn2795Banglabn2796Banglabn2797Banglabn2798Banglabn2799Banglabn28Banglabn280Banglabn2800Banglabn2801Banglabn2802Banglabn2803Banglabn2804Banglabn2805Banglabn2806Banglabn2807Banglabn2808Banglabn2809Banglabn281Banglabn2810Banglabn2811Banglabn2812Banglabn2813Banglabn2814Banglabn2815Banglabn2816Banglabn2817Banglabn2818Banglabn2819Banglabn282Banglabn2820Banglabn2821Banglabn2822Banglabn2823Banglabn2824Banglabn2825Banglabn2826Banglabn2827Banglabn2828Banglabn2829Banglabn283Banglabn2830Banglabn2831Banglabn2832Banglabn2833Banglabn2834Banglabn2835Banglabn2836Banglabn2837Banglabn2838Banglabn2839Banglabn284Banglabn2840Banglabn2841Banglabn2842Banglabn2843Banglabn2844Banglabn2845Banglabn2846Banglabn2847Banglabn2848Banglabn2849Banglabn285Banglabn2850Banglabn2851Banglabn2852Banglabn2853Banglabn2854Banglabn2855Banglabn2856Banglabn2857Banglabn2858Banglabn2859Banglabn286Banglabn2860Banglabn2861Banglabn2862Banglabn2863Banglabn2864Banglabn2865Banglabn2866Banglabn2867Banglabn2868Banglabn2869Banglabn287Banglabn2870Banglabn2871Banglabn2872Banglabn2873Banglabn2874Banglabn2875Banglabn2876Banglabn2877Banglabn2878Banglabn2879Banglabn288Banglabn2880Banglabn2881Banglabn2882Banglabn2883Banglabn2884Banglabn2885Banglabn2886Banglabn2887Banglabn2888Banglabn2889Banglabn289Banglabn2890Banglabn2891Banglabn2892Banglabn2893Banglabn2894Banglabn2895Banglabn2896Banglabn2897Banglabn2898Banglabn2899Banglabn29Banglabn290Banglabn2900Banglabn2901Banglabn2902Banglabn2903Banglabn2904Banglabn2905Banglabn2906Banglabn2907Banglabn2908Banglabn2909Banglabn291Banglabn2910Banglabn2911Banglabn2912Banglabn2913Banglabn2914Banglabn2915Banglabn2916Banglabn2917Banglabn2918Banglabn2919Banglabn292Banglabn2920Banglabn2921Banglabn2922Banglabn2923Banglabn2924Banglabn2925Banglabn2926Banglabn2927Banglabn2928Banglabn2929Banglabn293Banglabn2930Banglabn2931Banglabn2932Banglabn2933Banglabn2934Banglabn2935Banglabn2936Banglabn2937Banglabn2938Banglabn2939Banglabn294Banglabn2940Banglabn2941Banglabn2942Banglabn2943Banglabn2944Banglabn2945Banglabn2946Banglabn2947Banglabn2948Banglabn2949Banglabn295Banglabn2950Banglabn2951Banglabn2952Banglabn2953Banglabn2954Banglabn2955Banglabn2956Banglabn2957Banglabn2958Banglabn2959Banglabn296Banglabn2960Banglabn2961Banglabn2962Banglabn2963Banglabn2964Banglabn2965Banglabn2966Banglabn2967Banglabn2968Banglabn2969Banglabn297Banglabn2970Banglabn2971Banglabn2972Banglabn2973Banglabn2974Banglabn2975Banglabn2976Banglabn2977Banglabn2978Banglabn2979Banglabn298Banglabn2980Banglabn2981Banglabn2982Banglabn2983Banglabn2984Banglabn2985Banglabn2986Banglabn2987Banglabn2988Banglabn2989Banglabn299Banglabn2990Banglabn2991Banglabn2992Banglabn2993Banglabn2994Banglabn2995Banglabn2996Banglabn2997Banglabn2998Banglabn2999Banglabn3Banglabn30Banglabn300Banglabn3000Banglabn3001Banglabn3002Banglabn3003Banglabn3004Banglabn3005Banglabn3006Banglabn3007Banglabn3008Banglabn3009Banglabn301Banglabn3010Banglabn3011Banglabn3012Banglabn3013Banglabn3014Banglabn3015Banglabn3016Banglabn3017Banglabn3018Banglabn3019Banglabn302Banglabn3020Banglabn3021Banglabn3022Banglabn3023Banglabn3024Banglabn3025Banglabn3026Banglabn3027Banglabn3028Banglabn3029Banglabn303Banglabn3030Banglabn3031Banglabn3032Banglabn3033Banglabn3034Banglabn3035Banglabn3036Banglabn3037Banglabn3038Banglabn3039Banglabn304Banglabn3040Banglabn3041Banglabn3042Banglabn3043Banglabn3044Banglabn3045Banglabn3046Banglabn3047Banglabn3048Banglabn3049Banglabn305Banglabn3050Banglabn3051Banglabn3052Banglabn3053Banglabn3054Banglabn3055Banglabn3056Banglabn3057Banglabn3058Banglabn3059Banglabn306Banglabn3060Banglabn3061Banglabn3062Banglabn3063Banglabn3064Banglabn3065Banglabn3066Banglabn3067Banglabn3068Banglabn3069Banglabn307Banglabn3070Banglabn3071Banglabn3072Banglabn3073Banglabn3074Banglabn3075Banglabn3076Banglabn3077Banglabn3078Banglabn3079Banglabn308Banglabn3080Banglabn3081Banglabn3082Banglabn3083Banglabn3084Banglabn3085Banglabn3086Banglabn3087Banglabn3088Banglabn3089Banglabn309Banglabn3090Banglabn3091Banglabn3092Banglabn3093Banglabn3094Banglabn3095Banglabn3096Banglabn3097Banglabn3098Banglabn3099Banglabn31Banglabn310Banglabn3100Banglabn3101Banglabn3102Banglabn3103Banglabn3104Banglabn3105Banglabn3106Banglabn3107Banglabn3108Banglabn3109Banglabn311Banglabn3110Banglabn3111Banglabn3112Banglabn3113Banglabn3114Banglabn3115Banglabn3116Banglabn3117Banglabn3118Banglabn3119Banglabn312Banglabn3120Banglabn3121Banglabn3122Banglabn3123Banglabn3124Banglabn3125Banglabn3126Banglabn3127Banglabn3128Banglabn3129Banglabn313Banglabn3130Banglabn3131Banglabn3132Banglabn3133Banglabn3134Banglabn3135Banglabn3136Banglabn3137Banglabn3138Banglabn3139Banglabn314Banglabn3140Banglabn3141Banglabn3142Banglabn3143Banglabn3144Banglabn3145Banglabn3146Banglabn3147Banglabn3148Banglabn3149Banglabn315Banglabn3150Banglabn3151Banglabn3152Banglabn3153Banglabn3154Banglabn3155Banglabn3156Banglabn3157Banglabn3158Banglabn3159Banglabn316Banglabn3160Banglabn3161Banglabn3162Banglabn3163Banglabn3164Banglabn3165Banglabn3166Banglabn3167Banglabn3168Banglabn3169Banglabn317Banglabn3170Banglabn3171Banglabn3172Banglabn3173Banglabn3174Banglabn3175Banglabn3176Banglabn3177Banglabn3178Banglabn3179Banglabn318Banglabn3180Banglabn3181Banglabn3182Banglabn3183Banglabn3184Banglabn3185Banglabn3186Banglabn3187Banglabn3188Banglabn3189Banglabn319Banglabn3190Banglabn3191Banglabn3192Banglabn3193Banglabn3194Banglabn3195Banglabn3196Banglabn3197Banglabn3198Banglabn3199Banglabn32Banglabn320Banglabn3200Banglabn3201Banglabn3202Banglabn3203Banglabn3204Banglabn3205Banglabn3206Banglabn3207Banglabn3208Banglabn3209Banglabn321Banglabn3210Banglabn3211Banglabn3212Banglabn3213Banglabn3214Banglabn3215Banglabn3216Banglabn3217Banglabn3218Banglabn3219Banglabn322Banglabn3220Banglabn3221Banglabn3222Banglabn3223Banglabn3224Banglabn3225Banglabn3226Banglabn3227Banglabn3228Banglabn3229Banglabn323Banglabn3230Banglabn3231Banglabn3232Banglabn3233Banglabn3234Banglabn3235Banglabn3236Banglabn3237Banglabn3238Banglabn3239Banglabn324Banglabn3240Banglabn3241Banglabn3242Banglabn3243Banglabn3244Banglabn3245Banglabn3246Banglabn3247Banglabn3248Banglabn3249Banglabn325Banglabn3250Banglabn3251Banglabn3252Banglabn3253Banglabn3254Banglabn3255Banglabn3256Banglabn3257Banglabn3258Banglabn3259Banglabn326Banglabn3260Banglabn3261Banglabn3262Banglabn3263Banglabn3264Banglabn3265Banglabn3266Banglabn3267Banglabn3268Banglabn3269Banglabn327Banglabn3270Banglabn3271Banglabn3272Banglabn3273Banglabn3274Banglabn3275Banglabn3276Banglabn3277Banglabn3278Banglabn3279Banglabn328Banglabn3280Banglabn3281Banglabn3282Banglabn3283Banglabn3284Banglabn3285Banglabn3286Banglabn3287Banglabn3288Banglabn3289Banglabn329Banglabn3290Banglabn3291Banglabn3292Banglabn3293Banglabn3294Banglabn3295Banglabn3296Banglabn3297Banglabn3298Banglabn3299Banglabn33Banglabn330Banglabn3300Banglabn3301Banglabn3302Banglabn3303Banglabn3304Banglabn3305Banglabn3306Banglabn3307Banglabn3308Banglabn3309Banglabn331Banglabn3310Banglabn3311Banglabn3312Banglabn3313Banglabn3314Banglabn3315Banglabn3316Banglabn3317Banglabn3318Banglabn3319Banglabn332Banglabn3320Banglabn3321Banglabn3322Banglabn3323Banglabn3324Banglabn3325Banglabn3326Banglabn3327Banglabn3328Banglabn3329Banglabn333Banglabn3330Banglabn3331Banglabn3332Banglabn3333Banglabn3334Banglabn3335Banglabn3336Banglabn3337Banglabn3338Banglabn3339Banglabn334Banglabn3340Banglabn3341Banglabn3342Banglabn3343Banglabn3344Banglabn3345Banglabn3346Banglabn3347Banglabn3348Banglabn3349Banglabn335Banglabn3350Banglabn3351Banglabn3352Banglabn3353Banglabn3354Banglabn3355Banglabn3356Banglabn3357Banglabn3358Banglabn3359Banglabn336Banglabn3360Banglabn3361Banglabn3362Banglabn3363Banglabn3364Banglabn3365Banglabn3366Banglabn3367Banglabn3368Banglabn3369Banglabn337Banglabn3370Banglabn3371Banglabn3372Banglabn3373Banglabn3374Banglabn3375Banglabn3376Banglabn3377Banglabn3378Banglabn3379Banglabn338Banglabn3380Banglabn3381Banglabn3382Banglabn3383Banglabn3384Banglabn3385Banglabn3386Banglabn3387Banglabn3388Banglabn3389Banglabn339Banglabn3390Banglabn3391Banglabn3392Banglabn3393Banglabn3394Banglabn3395Banglabn3396Banglabn3397Banglabn3398Banglabn3399Banglabn34Banglabn340Banglabn3400Banglabn3401Banglabn3402Banglabn3403Banglabn3404Banglabn3405Banglabn3406Banglabn3407Banglabn3408Banglabn3409Banglabn341Banglabn3410Banglabn3411Banglabn3412Banglabn3413Banglabn3414Banglabn3415Banglabn3416Banglabn3417Banglabn3418Banglabn3419Banglabn342Banglabn3420Banglabn3421Banglabn3422Banglabn3423Banglabn3424Banglabn3425Banglabn3426Banglabn3427Banglabn3428Banglabn3429Banglabn343Banglabn3430Banglabn3431Banglabn3432Banglabn3433Banglabn3434Banglabn3435Banglabn3436Banglabn3437Banglabn3438Banglabn3439Banglabn344Banglabn3440Banglabn3441Banglabn3442Banglabn3443Banglabn3444Banglabn3445Banglabn3446Banglabn3447Banglabn3448Banglabn3449Banglabn345Banglabn3450Banglabn3451Banglabn3452Banglabn3453Banglabn3454Banglabn3455Banglabn3456Banglabn3457Banglabn3458Banglabn3459Banglabn346Banglabn3460Banglabn3461Banglabn3462Banglabn3463Banglabn3464Banglabn3465Banglabn3466Banglabn3467Banglabn3468Banglabn3469Banglabn347Banglabn3470Banglabn3471Banglabn3472Banglabn3473Banglabn3474Banglabn3475Banglabn3476Banglabn3477Banglabn3478Banglabn3479Banglabn348Banglabn3480Banglabn3481Banglabn3482Banglabn3483Banglabn3484Banglabn3485Banglabn3486Banglabn3487Banglabn3488Banglabn3489Banglabn349Banglabn3490Banglabn3491Banglabn3492Banglabn3493Banglabn3494Banglabn3495Banglabn3496Banglabn3497Banglabn3498Banglabn3499Banglabn35Banglabn350Banglabn3500Banglabn3501Banglabn3502Banglabn3503Banglabn3504Banglabn3505Banglabn3506Banglabn3507Banglabn3508Banglabn3509Banglabn351Banglabn3510Banglabn3511Banglabn3512Banglabn3513Banglabn3514Banglabn3515Banglabn3516Banglabn3517Banglabn3518Banglabn3519Banglabn352Banglabn3520Banglabn3521Banglabn3522Banglabn3523Banglabn3524Banglabn3525Banglabn3526Banglabn3527Banglabn3528Banglabn3529Banglabn353Banglabn3530Banglabn3531Banglabn3532Banglabn3533Banglabn3534Banglabn3535Banglabn3536Banglabn3537Banglabn3538Banglabn3539Banglabn354Banglabn3540Banglabn3541Banglabn3542Banglabn3543Banglabn3544Banglabn3545Banglabn3546Banglabn3547Banglabn3548Banglabn3549Banglabn355Banglabn3550Banglabn3551Banglabn3552Banglabn3553Banglabn3554Banglabn3555Banglabn3556Banglabn3557Banglabn3558Banglabn3559Banglabn356Banglabn3560Banglabn3561Banglabn3562Banglabn3563Banglabn3564Banglabn3565Banglabn3566Banglabn3567Banglabn3568Banglabn3569Banglabn357Banglabn3570Banglabn3571Banglabn3572Banglabn3573Banglabn3574Banglabn3575Banglabn3576Banglabn3577Banglabn3578Banglabn3579Banglabn358Banglabn3580Banglabn3581Banglabn3582Banglabn3583Banglabn3584Banglabn3585Banglabn3586Banglabn3587Banglabn3588Banglabn3589Banglabn359Banglabn3590Banglabn3591Banglabn3592Banglabn3593Banglabn3594Banglabn3595Banglabn3596Banglabn3597Banglabn3598Banglabn3599Banglabn36Banglabn360Banglabn3600Banglabn3601Banglabn3602Banglabn3603Banglabn3604Banglabn3605Banglabn3606Banglabn3607Banglabn3608Banglabn3609Banglabn361Banglabn3610Banglabn3611Banglabn3612Banglabn3613Banglabn3614Banglabn3615Banglabn3616Banglabn3617Banglabn3618Banglabn3619Banglabn362Banglabn3620Banglabn3621Banglabn3622Banglabn3623Banglabn3624Banglabn3625Banglabn3626Banglabn3627Banglabn3628Banglabn3629Banglabn363Banglabn3630Banglabn3631Banglabn3632Banglabn3633Banglabn3634Banglabn3635Banglabn3636Banglabn3637Banglabn3638Banglabn3639Banglabn364Banglabn3640Banglabn3641Banglabn3642Banglabn3643Banglabn3644Banglabn3645Banglabn3646Banglabn3647Banglabn3648Banglabn3649Banglabn365Banglabn3650Banglabn3651Banglabn3652Banglabn3653Banglabn3654Banglabn3655Banglabn3656Banglabn3657Banglabn3658Banglabn3659Banglabn366Banglabn3660Banglabn3661Banglabn3662Banglabn3663Banglabn3664Banglabn3665Banglabn3666Banglabn3667Banglabn3668Banglabn3669Banglabn367Banglabn3670Banglabn3671Banglabn3672Banglabn3673Banglabn3674Banglabn3675Banglabn3676Banglabn3677Banglabn3678Banglabn3679Banglabn368Banglabn3680Banglabn3681Banglabn3682Banglabn3683Banglabn3684Banglabn3685Banglabn3686Banglabn3687Banglabn3688Banglabn3689Banglabn369Banglabn3690Banglabn3691Banglabn3692Banglabn3693Banglabn3694Banglabn3695Banglabn3696Banglabn3697Banglabn3698Banglabn3699Banglabn37Banglabn370Banglabn3700Banglabn3701Banglabn3702Banglabn3703Banglabn3704Banglabn3705Banglabn3706Banglabn3707Banglabn3708Banglabn3709Banglabn371Banglabn3710Banglabn3711Banglabn3712Banglabn3713Banglabn3714Banglabn3715Banglabn3716Banglabn3717Banglabn3718Banglabn3719Banglabn372Banglabn3720Banglabn3721Banglabn3722Banglabn3723Banglabn3724Banglabn3725Banglabn3726Banglabn3727Banglabn3728Banglabn3729Banglabn373Banglabn3730Banglabn3731Banglabn3732Banglabn3733Banglabn3734Banglabn3735Banglabn3736Banglabn3737Banglabn3738Banglabn3739Banglabn374Banglabn3740Banglabn3741Banglabn3742Banglabn3743Banglabn3744Banglabn3745Banglabn3746Banglabn3747Banglabn3748Banglabn3749Banglabn375Banglabn3750Banglabn3751Banglabn3752Banglabn3753Banglabn3754Banglabn3755Banglabn3756Banglabn3757Banglabn3758Banglabn3759Banglabn376Banglabn3760Banglabn3761Banglabn3762Banglabn3763Banglabn3764Banglabn3765Banglabn3766Banglabn3767Banglabn3768Banglabn3769Banglabn377Banglabn3770Banglabn3771Banglabn3772Banglabn3773Banglabn3774Banglabn3775Banglabn3776Banglabn3777Banglabn3778Banglabn3779Banglabn378Banglabn3780Banglabn3781Banglabn3782Banglabn3783Banglabn3784Banglabn3785Banglabn3786Banglabn3787Banglabn3788Banglabn3789Banglabn379Banglabn3790Banglabn3791Banglabn3792Banglabn3793Banglabn3794Banglabn3795Banglabn3796Banglabn3797Banglabn3798Banglabn3799Banglabn38Banglabn380Banglabn3800Banglabn3801Banglabn3802Banglabn3803Banglabn3804Banglabn3805Banglabn3806Banglabn3807Banglabn3808Banglabn3809Banglabn381Banglabn3810Banglabn3811Banglabn3812Banglabn3813Banglabn3814Banglabn3815Banglabn3816Banglabn3817Banglabn3818Banglabn3819Banglabn382Banglabn3820Banglabn3821Banglabn3822Banglabn3823Banglabn3824Banglabn3825Banglabn3826Banglabn3827Banglabn3828Banglabn3829Banglabn383Banglabn3830Banglabn3831Banglabn3832Banglabn3833Banglabn3834Banglabn3835Banglabn3836Banglabn3837Banglabn3838Banglabn3839Banglabn384Banglabn3840Banglabn3841Banglabn3842Banglabn3843Banglabn3844Banglabn3845Banglabn3846Banglabn3847Banglabn3848Banglabn3849Banglabn385Banglabn3850Banglabn3851Banglabn3852Banglabn3853Banglabn3854Banglabn3855Banglabn3856Banglabn3857Banglabn3858Banglabn3859Banglabn386Banglabn3860Banglabn3861Banglabn3862Banglabn3863Banglabn3864Banglabn3865Banglabn3866Banglabn3867Banglabn3868Banglabn3869Banglabn387Banglabn3870Banglabn3871Banglabn3872Banglabn3873Banglabn3874Banglabn3875Banglabn3876Banglabn3877Banglabn3878Banglabn3879Banglabn388Banglabn3880Banglabn3881Banglabn3882Banglabn3883Banglabn3884Banglabn3885Banglabn3886Banglabn3887Banglabn3888Banglabn3889Banglabn389Banglabn3890Banglabn3891Banglabn3892Banglabn3893Banglabn3894Banglabn3895Banglabn3896Banglabn3897Banglabn3898Banglabn3899Banglabn39Banglabn390Banglabn3900Banglabn3901Banglabn3902Banglabn3903Banglabn3904Banglabn3905Banglabn3906Banglabn3907Banglabn3908Banglabn3909Banglabn391Banglabn3910Banglabn3911Banglabn3912Banglabn3913Banglabn3914Banglabn3915Banglabn3916Banglabn3917Banglabn3918Banglabn3919Banglabn392Banglabn3920Banglabn3921Banglabn3922Banglabn3923Banglabn3924Banglabn3925Banglabn3926Banglabn3927Banglabn3928Banglabn3929Banglabn393Banglabn3930Banglabn3931Banglabn3932Banglabn3933Banglabn3934Banglabn3935Banglabn3936Banglabn3937Banglabn3938Banglabn3939Banglabn394Banglabn3940Banglabn3941Banglabn3942Banglabn3943Banglabn3944Banglabn3945Banglabn3946Banglabn3947Banglabn3948Banglabn3949Banglabn395Banglabn3950Banglabn3951Banglabn3952Banglabn3953Banglabn3954Banglabn3955Banglabn3956Banglabn3957Banglabn3958Banglabn3959Banglabn396Banglabn3960Banglabn3961Banglabn3962Banglabn3963Banglabn3964Banglabn3965Banglabn3966Banglabn3967Banglabn3968Banglabn3969Banglabn397Banglabn3970Banglabn3971Banglabn3972Banglabn3973Banglabn3974Banglabn3975Banglabn3976Banglabn3977Banglabn3978Banglabn3979Banglabn398Banglabn3980Banglabn3981Banglabn3982Banglabn3983Banglabn3984Banglabn3985Banglabn3986Banglabn3987Banglabn3988Banglabn3989Banglabn399Banglabn3990Banglabn3991Banglabn3992Banglabn3993Banglabn3994Banglabn3995Banglabn3996Banglabn3997Banglabn3998Banglabn3999Banglabn4Banglabn40Banglabn400Banglabn4000Banglabn4001Banglabn4002Banglabn4003Banglabn4004Banglabn4005Banglabn4006Banglabn4007Banglabn4008Banglabn4009Banglabn401Banglabn4010Banglabn4011Banglabn4012Banglabn4013Banglabn4014Banglabn4015Banglabn4016Banglabn4017Banglabn4018Banglabn4019Banglabn402Banglabn4020Banglabn4021Banglabn4022Banglabn4023Banglabn4024Banglabn4025Banglabn4026Banglabn4027Banglabn4028Banglabn4029Banglabn403Banglabn4030Banglabn4031Banglabn4032Banglabn4033Banglabn4034Banglabn4035Banglabn4036Banglabn4037Banglabn4038Banglabn4039Banglabn404Banglabn4040Banglabn4041Banglabn4042Banglabn4043Banglabn4044Banglabn4045Banglabn4046Banglabn4047Banglabn4048Banglabn4049Banglabn405Banglabn4050Banglabn4051Banglabn4052Banglabn4053Banglabn4054Banglabn4055Banglabn4056Banglabn4057Banglabn4058Banglabn4059Banglabn406Banglabn4060Banglabn4061Banglabn4062Banglabn4063Banglabn4064Banglabn4065Banglabn4066Banglabn4067Banglabn4068Banglabn4069Banglabn407Banglabn4070Banglabn4071Banglabn4072Banglabn4073Banglabn4074Banglabn4075Banglabn4076Banglabn4077Banglabn4078Banglabn4079Banglabn408Banglabn4080Banglabn4081Banglabn4082Banglabn4083Banglabn4084Banglabn4085Banglabn4086Banglabn4087Banglabn4088Banglabn4089Banglabn409Banglabn4090Banglabn4091Banglabn4092Banglabn4093Banglabn4094Banglabn4095Banglabn4096Banglabn4097Banglabn4098Banglabn4099Banglabn41Banglabn410Banglabn4100Banglabn4101Banglabn4102Banglabn4103Banglabn4104Banglabn4105Banglabn4106Banglabn4107Banglabn4108Banglabn4109Banglabn411Banglabn4110Banglabn4111Banglabn4112Banglabn4113Banglabn4114Banglabn4115Banglabn4116Banglabn4117Banglabn4118Banglabn4119Banglabn412Banglabn4120Banglabn4121Banglabn4122Banglabn4123Banglabn4124Banglabn4125Banglabn4126Banglabn4127Banglabn4128Banglabn4129Banglabn413Banglabn4130Banglabn4131Banglabn4132Banglabn4133Banglabn4134Banglabn4135Banglabn4136Banglabn4137Banglabn4138Banglabn4139Banglabn414Banglabn4140Banglabn4141Banglabn4142Banglabn4143Banglabn4144Banglabn4145Banglabn4146Banglabn4147Banglabn4148Banglabn4149Banglabn415Banglabn4150Banglabn4151Banglabn4152Banglabn4153Banglabn4154Banglabn4155Banglabn4156Banglabn4157Banglabn4158Banglabn4159Banglabn416Banglabn4160Banglabn4161Banglabn4162Banglabn4163Banglabn4164Banglabn4165Banglabn4166Banglabn4167Banglabn4168Banglabn4169Banglabn417Banglabn4170Banglabn4171Banglabn4172Banglabn4173Banglabn4174Banglabn4175Banglabn4176Banglabn4177Banglabn4178Banglabn4179Banglabn418Banglabn4180Banglabn4181Banglabn4182Banglabn4183Banglabn4184Banglabn4185Banglabn4186Banglabn4187Banglabn4188Banglabn4189Banglabn419Banglabn4190Banglabn4191Banglabn4192Banglabn4193Banglabn4194Banglabn4195Banglabn4196Banglabn4197Banglabn4198Banglabn4199Banglabn42Banglabn420Banglabn4200Banglabn4201Banglabn4202Banglabn4203Banglabn4204Banglabn4205Banglabn4206Banglabn4207Banglabn4208Banglabn4209Banglabn421Banglabn4210Banglabn4211Banglabn4212Banglabn4213Banglabn4214Banglabn4215Banglabn4216Banglabn4217Banglabn4218Banglabn4219Banglabn422Banglabn4220Banglabn4221Banglabn4222Banglabn4223Banglabn4224Banglabn4225Banglabn4226Banglabn4227Banglabn4228Banglabn4229Banglabn423Banglabn4230Banglabn4231Banglabn4232Banglabn4233Banglabn4234Banglabn4235Banglabn4236Banglabn4237Banglabn4238Banglabn4239Banglabn424Banglabn4240Banglabn4241Banglabn4242Banglabn4243Banglabn4244Banglabn4245Banglabn4246Banglabn4247Banglabn4248Banglabn4249Banglabn425Banglabn4250Banglabn4251Banglabn4252Banglabn4253Banglabn4254Banglabn4255Banglabn4256Banglabn4257Banglabn4258Banglabn4259Banglabn426Banglabn4260Banglabn4261Banglabn4262Banglabn4263Banglabn4264Banglabn4265Banglabn4266Banglabn4267Banglabn4268Banglabn4269Banglabn427Banglabn4270Banglabn4271Banglabn4272Banglabn4273Banglabn4274Banglabn4275Banglabn4276Banglabn4277Banglabn4278Banglabn4279Banglabn428Banglabn4280Banglabn4281Banglabn4282Banglabn4283Banglabn4284Banglabn4285Banglabn4286Banglabn4287Banglabn4288Banglabn4289Banglabn429Banglabn4290Banglabn4291Banglabn4292Banglabn4293Banglabn4294Banglabn4295Banglabn4296Banglabn4297Banglabn4298Banglabn4299Banglabn43Banglabn430Banglabn4300Banglabn4301Banglabn4302Banglabn4303Banglabn4304Banglabn4305Banglabn4306Banglabn4307Banglabn4308Banglabn4309Banglabn431Banglabn4310Banglabn4311Banglabn4312Banglabn4313Banglabn4314Banglabn4315Banglabn4316Banglabn4317Banglabn4318Banglabn4319Banglabn432Banglabn4320Banglabn4321Banglabn4322Banglabn4323Banglabn4324Banglabn4325Banglabn4326Banglabn4327Banglabn4328Banglabn4329Banglabn433Banglabn4330Banglabn4331Banglabn4332Banglabn4333Banglabn4334Banglabn4335Banglabn4336Banglabn4337Banglabn4338Banglabn4339Banglabn434Banglabn4340Banglabn4341Banglabn4342Banglabn4343Banglabn4344Banglabn4345Banglabn4346Banglabn4347Banglabn4348Banglabn4349Banglabn435Banglabn4350Banglabn4351Banglabn4352Banglabn4353Banglabn4354Banglabn4355Banglabn4356Banglabn4357Banglabn4358Banglabn4359Banglabn436Banglabn4360Banglabn4361Banglabn4362Banglabn4363Banglabn4364Banglabn4365Banglabn4366Banglabn4367Banglabn4368Banglabn4369Banglabn437Banglabn4370Banglabn4371Banglabn4372Banglabn4373Banglabn4374Banglabn4375Banglabn4376Banglabn4377Banglabn4378Banglabn4379Banglabn438Banglabn4380Banglabn4381Banglabn4382Banglabn4383Banglabn4384Banglabn4385Banglabn4386Banglabn4387Banglabn4388Banglabn4389Banglabn439Banglabn4390Banglabn4391Banglabn4392Banglabn4393Banglabn4394Banglabn4395Banglabn4396Banglabn4397Banglabn4398Banglabn4399Banglabn44Banglabn440Banglabn4400Banglabn4401Banglabn4402Banglabn4403Banglabn4404Banglabn4405Banglabn4406Banglabn4407Banglabn4408Banglabn4409Banglabn441Banglabn4410Banglabn4411Banglabn4412Banglabn4413Banglabn4414Banglabn4415Banglabn4416Banglabn4417Banglabn4418Banglabn4419Banglabn442Banglabn4420Banglabn4421Banglabn4422Banglabn4423Banglabn4424Banglabn4425Banglabn4426Banglabn4427Banglabn4428Banglabn4429Banglabn443Banglabn4430Banglabn4431Banglabn4432Banglabn4433Banglabn4434Banglabn4435Banglabn4436Banglabn4437Banglabn4438Banglabn4439Banglabn444Banglabn4440Banglabn4441Banglabn4442Banglabn4443Banglabn4444Banglabn4445Banglabn4446Banglabn4447Banglabn4448Banglabn4449Banglabn445Banglabn4450Banglabn4451Banglabn4452Banglabn4453Banglabn4454Banglabn4455Banglabn4456Banglabn4457Banglabn4458Banglabn4459Banglabn446Banglabn4460Banglabn4461Banglabn4462Banglabn4463Banglabn4464Banglabn4465Banglabn4466Banglabn4467Banglabn4468Banglabn4469Banglabn447Banglabn4470Banglabn4471Banglabn4472Banglabn4473Banglabn4474Banglabn4475Banglabn4476Banglabn4477Banglabn4478Banglabn4479Banglabn448Banglabn4480Banglabn4481Banglabn4482Banglabn4483Banglabn4484Banglabn4485Banglabn4486Banglabn4487Banglabn4488Banglabn4489Banglabn449Banglabn4490Banglabn4491Banglabn4492Banglabn4493Banglabn4494Banglabn4495Banglabn4496Banglabn4497Banglabn4498Banglabn4499Banglabn45Banglabn450Banglabn4500Banglabn4501Banglabn4502Banglabn4503Banglabn4504Banglabn4505Banglabn4506Banglabn4507Banglabn4508Banglabn4509Banglabn451Banglabn4510Banglabn4511Banglabn4512Banglabn4513Banglabn4514Banglabn4515Banglabn4516Banglabn4517Banglabn4518Banglabn4519Banglabn452Banglabn4520Banglabn4521Banglabn4522Banglabn4523Banglabn4524Banglabn4525Banglabn4526Banglabn4527Banglabn4528Banglabn4529Banglabn453Banglabn4530Banglabn4531Banglabn4532Banglabn4533Banglabn4534Banglabn4535Banglabn4536Banglabn4537Banglabn4538Banglabn4539Banglabn454Banglabn4540Banglabn4541Banglabn4542Banglabn4543Banglabn4544Banglabn4545Banglabn4546Banglabn4547Banglabn4548Banglabn4549Banglabn455Banglabn4550Banglabn4551Banglabn4552Banglabn4553Banglabn4554Banglabn4555Banglabn4556Banglabn4557Banglabn4558Banglabn4559Banglabn456Banglabn4560Banglabn4561Banglabn4562Banglabn4563Banglabn4564Banglabn4565Banglabn4566Banglabn4567Banglabn4568Banglabn4569Banglabn457Banglabn4570Banglabn4571Banglabn4572Banglabn4573Banglabn4574Banglabn4575Banglabn4576Banglabn4577Banglabn4578Banglabn4579Banglabn458Banglabn4580Banglabn4581Banglabn4582Banglabn4583Banglabn4584Banglabn4585Banglabn4586Banglabn4587Banglabn4588Banglabn4589Banglabn459Banglabn4590Banglabn4591Banglabn4592Banglabn4593Banglabn4594Banglabn4595Banglabn4596Banglabn4597Banglabn4598Banglabn4599Banglabn46Banglabn460Banglabn4600Banglabn4601Banglabn4602Banglabn4603Banglabn4604Banglabn4605Banglabn4606Banglabn4607Banglabn4608Banglabn4609Banglabn461Banglabn4610Banglabn4611Banglabn4612Banglabn4613Banglabn4614Banglabn4615Banglabn4616Banglabn4617Banglabn4618Banglabn4619Banglabn462Banglabn4620Banglabn4621Banglabn4622Banglabn4623Banglabn4624Banglabn4625Banglabn4626Banglabn4627Banglabn4628Banglabn4629Banglabn463Banglabn4630Banglabn4631Banglabn4632Banglabn4633Banglabn4634Banglabn4635Banglabn4636Banglabn4637Banglabn4638Banglabn4639Banglabn464Banglabn4640Banglabn4641Banglabn4642Banglabn4643Banglabn4644Banglabn4645Banglabn4646Banglabn4647Banglabn4648Banglabn4649Banglabn465Banglabn4650Banglabn4651Banglabn4652Banglabn4653Banglabn4654Banglabn4655Banglabn4656Banglabn4657Banglabn4658Banglabn4659Banglabn466Banglabn4660Banglabn4661Banglabn4662Banglabn4663Banglabn4664Banglabn4665Banglabn4666Banglabn4667Banglabn4668Banglabn4669Banglabn467Banglabn4670Banglabn4671Banglabn4672Banglabn4673Banglabn4674Banglabn4675Banglabn4676Banglabn4677Banglabn4678Banglabn4679Banglabn468Banglabn4680Banglabn4681Banglabn4682Banglabn4683Banglabn4684Banglabn4685Banglabn4686Banglabn4687Banglabn4688Banglabn4689Banglabn469Banglabn4690Banglabn4691Banglabn4692Banglabn4693Banglabn4694Banglabn4695Banglabn4696Banglabn4697Banglabn4698Banglabn4699Banglabn47Banglabn470Banglabn4700Banglabn4701Banglabn4702Banglabn4703Banglabn4704Banglabn4705Banglabn4706Banglabn4707Banglabn4708Banglabn4709Banglabn471Banglabn4710Banglabn4711Banglabn4712Banglabn4713Banglabn4714Banglabn4715Banglabn4716Banglabn4717Banglabn4718Banglabn4719Banglabn472Banglabn4720Banglabn4721Banglabn4722Banglabn4723Banglabn4724Banglabn4725Banglabn4726Banglabn4727Banglabn4728Banglabn4729Banglabn473Banglabn4730Banglabn4731Banglabn4732Banglabn4733Banglabn4734Banglabn4735Banglabn4736Banglabn4737Banglabn4738Banglabn4739Banglabn474Banglabn4740Banglabn4741Banglabn4742Banglabn4743Banglabn4744Banglabn4745Banglabn4746Banglabn4747Banglabn4748Banglabn4749Banglabn475Banglabn4750Banglabn4751Banglabn4752Banglabn4753Banglabn4754Banglabn4755Banglabn4756Banglabn4757Banglabn4758Banglabn4759Banglabn476Banglabn4760Banglabn4761Banglabn4762Banglabn4763Banglabn4764Banglabn4765Banglabn4766Banglabn4767Banglabn4768Banglabn4769Banglabn477Banglabn4770Banglabn4771Banglabn4772Banglabn4773Banglabn4774Banglabn4775Banglabn4776Banglabn4777Banglabn4778Banglabn4779Banglabn478Banglabn4780Banglabn4781Banglabn4782Banglabn4783Banglabn4784Banglabn4785Banglabn4786Banglabn4787Banglabn4788Banglabn4789Banglabn479Banglabn4790Banglabn4791Banglabn4792Banglabn4793Banglabn4794Banglabn4795Banglabn4796Banglabn4797Banglabn4798Banglabn4799Banglabn48Banglabn480Banglabn4800Banglabn4801Banglabn4802Banglabn4803Banglabn4804Banglabn4805Banglabn4806Banglabn4807Banglabn4808Banglabn4809Banglabn481Banglabn4810Banglabn4811Banglabn4812Banglabn4813Banglabn4814Banglabn4815Banglabn4816Banglabn4817Banglabn4818Banglabn4819Banglabn482Banglabn4820Banglabn4821Banglabn4822Banglabn4823Banglabn4824Banglabn4825Banglabn4826Banglabn4827Banglabn4828Banglabn4829Banglabn483Banglabn4830Banglabn4831Banglabn4832Banglabn4833Banglabn4834Banglabn4835Banglabn4836Banglabn4837Banglabn4838Banglabn4839Banglabn484Banglabn4840Banglabn4841Banglabn4842Banglabn4843Banglabn4844Banglabn4845Banglabn4846Banglabn4847Banglabn4848Banglabn4849Banglabn485Banglabn4850Banglabn4851Banglabn4852Banglabn4853Banglabn4854Banglabn4855Banglabn4856Banglabn4857Banglabn4858Banglabn4859Banglabn486Banglabn4860Banglabn4861Banglabn4862Banglabn4863Banglabn4864Banglabn4865Banglabn4866Banglabn4867Banglabn4868Banglabn4869Banglabn487Banglabn4870Banglabn4871Banglabn4872Banglabn4873Banglabn4874Banglabn4875Banglabn4876Banglabn4877Banglabn4878Banglabn4879Banglabn488Banglabn4880Banglabn4881Banglabn4882Banglabn4883Banglabn4884Banglabn4885Banglabn4886Banglabn4887Banglabn4888Banglabn4889Banglabn489Banglabn4890Banglabn4891Banglabn4892Banglabn4893Banglabn4894Banglabn4895Banglabn4896Banglabn4897Banglabn4898Banglabn4899Banglabn49Banglabn490Banglabn4900Banglabn4901Banglabn4902Banglabn4903Banglabn4904Banglabn4905Banglabn4906Banglabn4907Banglabn4908Banglabn4909Banglabn491Banglabn4910Banglabn4911Banglabn4912Banglabn4913Banglabn4914Banglabn4915Banglabn4916Banglabn4917Banglabn4918Banglabn4919Banglabn492Banglabn4920Banglabn4921Banglabn4922Banglabn4923Banglabn4924Banglabn4925Banglabn4926Banglabn4927Banglabn4928Banglabn4929Banglabn493Banglabn4930Banglabn4931Banglabn4932Banglabn4933Banglabn4934Banglabn4935Banglabn4936Banglabn4937Banglabn4938Banglabn4939Banglabn494Banglabn4940Banglabn4941Banglabn4942Banglabn4943Banglabn4944Banglabn4945Banglabn4946Banglabn4947Banglabn4948Banglabn4949Banglabn495Banglabn4950Banglabn4951Banglabn4952Banglabn4953Banglabn4954Banglabn4955Banglabn4956Banglabn4957Banglabn4958Banglabn4959Banglabn496Banglabn4960Banglabn4961Banglabn4962Banglabn4963Banglabn4964Banglabn4965Banglabn4966Banglabn4967Banglabn4968Banglabn4969Banglabn497Banglabn4970Banglabn4971Banglabn4972Banglabn4973Banglabn4974Banglabn4975Banglabn4976Banglabn4977Banglabn4978Banglabn4979Banglabn498Banglabn4980Banglabn4981Banglabn4982Banglabn4983Banglabn4984Banglabn4985Banglabn4986Banglabn4987Banglabn4988Banglabn4989Banglabn499Banglabn4990Banglabn4991Banglabn4992Banglabn4993Banglabn4994Banglabn4995Banglabn4996Banglabn4997Banglabn4998Banglabn4999Banglabn5Banglabn50Banglabn500Banglabn5000Banglabn5001Banglabn5002Banglabn5003Banglabn5004Banglabn5005Banglabn5006Banglabn5007Banglabn5008Banglabn5009Banglabn501Banglabn5010Banglabn5011Banglabn5012Banglabn5013Banglabn5014Banglabn5015Banglabn5016Banglabn5017Banglabn5018Banglabn5019Banglabn502Banglabn5020Banglabn5021Banglabn5022Banglabn5023Banglabn5024Banglabn5025Banglabn5026Banglabn5027Banglabn5028Banglabn5029Banglabn503Banglabn5030Banglabn5031Banglabn5032Banglabn5033Banglabn5034Banglabn5035Banglabn5036Banglabn5037Banglabn5038Banglabn5039Banglabn504Banglabn5040Banglabn5041Banglabn5042Banglabn5043Banglabn5044Banglabn5045Banglabn5046Banglabn5047Banglabn5048Banglabn5049Banglabn505Banglabn5050Banglabn5051Banglabn5052Banglabn5053Banglabn5054Banglabn5055Banglabn5056Banglabn5057Banglabn5058Banglabn5059Banglabn506Banglabn5060Banglabn5061Banglabn5062Banglabn5063Banglabn5064Banglabn5065Banglabn5066Banglabn5067Banglabn5068Banglabn5069Banglabn507Banglabn5070Banglabn5071Banglabn5072Banglabn5073Banglabn5074Banglabn5075Banglabn5076Banglabn5077Banglabn5078Banglabn5079Banglabn508Banglabn5080Banglabn5081Banglabn5082Banglabn5083Banglabn5084Banglabn5085Banglabn5086Banglabn5087Banglabn5088Banglabn5089Banglabn509Banglabn5090Banglabn5091Banglabn5092Banglabn5093Banglabn5094Banglabn5095Banglabn5096Banglabn5097Banglabn5098Banglabn5099Banglabn51Banglabn510Banglabn5100Banglabn5101Banglabn5102Banglabn5103Banglabn5104Banglabn5105Banglabn5106Banglabn5107Banglabn5108Banglabn5109Banglabn511Banglabn5110Banglabn5111Banglabn5112Banglabn5113Banglabn5114Banglabn5115Banglabn5116Banglabn5117Banglabn5118Banglabn5119Banglabn512Banglabn5120Banglabn5121Banglabn5122Banglabn5123Banglabn5124Banglabn5125Banglabn5126Banglabn5127Banglabn5128Banglabn5129Banglabn513Banglabn5130Banglabn5131Banglabn5132Banglabn5133Banglabn5134Banglabn5135Banglabn5136Banglabn5137Banglabn5138Banglabn5139Banglabn514Banglabn5140Banglabn5141Banglabn5142Banglabn5143Banglabn5144Banglabn5145Banglabn5146Banglabn5147Banglabn5148Banglabn5149Banglabn515Banglabn5150Banglabn5151Banglabn5152Banglabn5153Banglabn5154Banglabn5155Banglabn5156Banglabn5157Banglabn5158Banglabn5159Banglabn516Banglabn5160Banglabn5161Banglabn5162Banglabn5163Banglabn5164Banglabn5165Banglabn5166Banglabn5167Banglabn5168Banglabn5169Banglabn517Banglabn5170Banglabn5171Banglabn5172Banglabn5173Banglabn5174Banglabn5175Banglabn5176Banglabn5177Banglabn5178Banglabn5179Banglabn518Banglabn5180Banglabn5181Banglabn5182Banglabn5183Banglabn5184Banglabn5185Banglabn5186Banglabn5187Banglabn5188Banglabn5189Banglabn519Banglabn5190Banglabn5191Banglabn5192Banglabn5193Banglabn5194Banglabn5195Banglabn5196Banglabn5197Banglabn5198Banglabn5199Banglabn52Banglabn520Banglabn5200Banglabn5201Banglabn5202Banglabn5203Banglabn5204Banglabn5205Banglabn5206Banglabn5207Banglabn5208Banglabn5209Banglabn521Banglabn5210Banglabn5211Banglabn5212Banglabn5213Banglabn5214Banglabn5215Banglabn5216Banglabn5217Banglabn5218Banglabn5219Banglabn522Banglabn5220Banglabn5221Banglabn5222Banglabn5223Banglabn5224Banglabn5225Banglabn5226Banglabn5227Banglabn5228Banglabn5229Banglabn523Banglabn5230Banglabn5231Banglabn5232Banglabn5233Banglabn5234Banglabn5235Banglabn5236Banglabn5237Banglabn5238Banglabn5239Banglabn524Banglabn5240Banglabn5241Banglabn5242Banglabn5243Banglabn5244Banglabn5245Banglabn5246Banglabn5247Banglabn5248Banglabn5249Banglabn525Banglabn5250Banglabn5251Banglabn5252Banglabn5253Banglabn5254Banglabn5255Banglabn5256Banglabn5257Banglabn5258Banglabn5259Banglabn526Banglabn5260Banglabn5261Banglabn5262Banglabn5263Banglabn5264Banglabn5265Banglabn5266Banglabn5267Banglabn5268Banglabn5269Banglabn527Banglabn5270Banglabn5271Banglabn5272Banglabn5273Banglabn5274Banglabn5275Banglabn5276Banglabn5277Banglabn5278Banglabn5279Banglabn528Banglabn5280Banglabn5281Banglabn5282Banglabn5283Banglabn5284Banglabn5285Banglabn5286Banglabn5287Banglabn5288Banglabn5289Banglabn529Banglabn5290Banglabn5291Banglabn5292Banglabn5293Banglabn5294Banglabn5295Banglabn5296Banglabn5297Banglabn5298Banglabn5299Banglabn53Banglabn530Banglabn5300Banglabn5301Banglabn5302Banglabn5303Banglabn5304Banglabn5305Banglabn5306Banglabn5307Banglabn5308Banglabn5309Banglabn531Banglabn5310Banglabn5311Banglabn5312Banglabn5313Banglabn5314Banglabn5315Banglabn5316Banglabn5317Banglabn5318Banglabn5319Banglabn532Banglabn5320Banglabn5321Banglabn5322Banglabn5323Banglabn5324Banglabn5325Banglabn5326Banglabn5327Banglabn5328Banglabn5329Banglabn533Banglabn5330Banglabn5331Banglabn5332Banglabn5333Banglabn5334Banglabn5335Banglabn5336Banglabn5337Banglabn5338Banglabn5339Banglabn534Banglabn5340Banglabn5341Banglabn5342Banglabn5343Banglabn5344Banglabn5345Banglabn5346Banglabn5347Banglabn5348Banglabn5349Banglabn535Banglabn5350Banglabn5351Banglabn5352Banglabn5353Banglabn5354Banglabn5355Banglabn5356Banglabn5357Banglabn5358Banglabn5359Banglabn536Banglabn5360Banglabn5361Banglabn5362Banglabn5363Banglabn5364Banglabn5365Banglabn5366Banglabn5367Banglabn5368Banglabn5369Banglabn537Banglabn5370Banglabn5371Banglabn5372Banglabn5373Banglabn5374Banglabn5375Banglabn5376Banglabn5377Banglabn5378Banglabn5379Banglabn538Banglabn5380Banglabn5381Banglabn5382Banglabn5383Banglabn5384Banglabn5385Banglabn5386Banglabn5387Banglabn5388Banglabn5389Banglabn539Banglabn5390Banglabn5391Banglabn5392Banglabn5393Banglabn5394Banglabn5395Banglabn5396Banglabn5397Banglabn5398Banglabn5399Banglabn54Banglabn540Banglabn5400Banglabn5401Banglabn5402Banglabn5403Banglabn5404Banglabn5405Banglabn5406Banglabn5407Banglabn5408Banglabn5409Banglabn541Banglabn5410Banglabn5411Banglabn5412Banglabn5413Banglabn5414Banglabn5415Banglabn5416Banglabn5417Banglabn5418Banglabn5419Banglabn542Banglabn5420Banglabn5421Banglabn5422Banglabn5423Banglabn5424Banglabn5425Banglabn5426Banglabn5427Banglabn5428Banglabn5429Banglabn543Banglabn5430Banglabn5431Banglabn5432Banglabn5433Banglabn5434Banglabn5435Banglabn5436Banglabn5437Banglabn5438Banglabn5439Banglabn544Banglabn5440Banglabn5441Banglabn5442Banglabn5443Banglabn5444Banglabn5445Banglabn5446Banglabn5447Banglabn5448Banglabn5449Banglabn545Banglabn5450Banglabn5451Banglabn5452Banglabn5453Banglabn5454Banglabn5455Banglabn5456Banglabn5457Banglabn5458Banglabn5459Banglabn546Banglabn5460Banglabn5461Banglabn5462Banglabn5463Banglabn5464Banglabn5465Banglabn5466Banglabn5467Banglabn5468Banglabn5469Banglabn547Banglabn5470Banglabn5471Banglabn5472Banglabn5473Banglabn5474Banglabn5475Banglabn5476Banglabn5477Banglabn5478Banglabn5479Banglabn548Banglabn5480Banglabn5481Banglabn5482Banglabn5483Banglabn5484Banglabn5485Banglabn5486Banglabn5487Banglabn5488Banglabn5489Banglabn549Banglabn5490Banglabn5491Banglabn5492Banglabn5493Banglabn5494Banglabn5495Banglabn5496Banglabn5497Banglabn5498Banglabn5499Banglabn55Banglabn550Banglabn5500Banglabn5501Banglabn5502Banglabn5503Banglabn5504Banglabn5505Banglabn5506Banglabn5507Banglabn5508Banglabn5509Banglabn551Banglabn5510Banglabn5511Banglabn5512Banglabn5513Banglabn5514Banglabn5515Banglabn5516Banglabn5517Banglabn5518Banglabn5519Banglabn552Banglabn5520Banglabn5521Banglabn5522Banglabn5523Banglabn5524Banglabn5525Banglabn5526Banglabn5527Banglabn5528Banglabn5529Banglabn553Banglabn5530Banglabn5531Banglabn5532Banglabn5533Banglabn5534Banglabn5535Banglabn5536Banglabn5537Banglabn5538Banglabn5539Banglabn554Banglabn5540Banglabn5541Banglabn5542Banglabn5543Banglabn5544Banglabn5545Banglabn5546Banglabn5547Banglabn5548Banglabn5549Banglabn555Banglabn5550Banglabn5551Banglabn5552Banglabn5553Banglabn5554Banglabn5555Banglabn5556Banglabn5557Banglabn5558Banglabn5559Banglabn556Banglabn5560Banglabn5561Banglabn5562Banglabn5563Banglabn5564Banglabn5565Banglabn5566Banglabn5567Banglabn5568Banglabn5569Banglabn557Banglabn5570Banglabn5571Banglabn5572Banglabn5573Banglabn5574Banglabn5575Banglabn5576Banglabn5577Banglabn5578Banglabn5579Banglabn558Banglabn5580Banglabn5581Banglabn5582Banglabn5583Banglabn5584Banglabn5585Banglabn5586Banglabn5587Banglabn5588Banglabn5589Banglabn559Banglabn5590Banglabn5591Banglabn5592Banglabn5593Banglabn5594Banglabn5595Banglabn5596Banglabn5597Banglabn5598Banglabn5599Banglabn56Banglabn560Banglabn5600Banglabn5601Banglabn5602Banglabn5603Banglabn5604Banglabn5605Banglabn5606Banglabn5607Banglabn5608Banglabn5609Banglabn561Banglabn5610Banglabn5611Banglabn5612Banglabn5613Banglabn5614Banglabn5615Banglabn5616Banglabn5617Banglabn5618Banglabn5619Banglabn562Banglabn5620Banglabn5621Banglabn5622Banglabn5623Banglabn5624Banglabn5625Banglabn5626Banglabn5627Banglabn5628Banglabn5629Banglabn563Banglabn5630Banglabn5631Banglabn5632Banglabn5633Banglabn5634Banglabn5635Banglabn5636Banglabn5637Banglabn5638Banglabn5639Banglabn564Banglabn5640Banglabn5641Banglabn5642Banglabn5643Banglabn5644Banglabn5645Banglabn5646Banglabn5647Banglabn5648Banglabn5649Banglabn565Banglabn5650Banglabn5651Banglabn5652Banglabn5653Banglabn5654Banglabn5655Banglabn5656Banglabn5657Banglabn5658Banglabn5659Banglabn566Banglabn5660Banglabn5661Banglabn5662Banglabn5663Banglabn5664Banglabn5665Banglabn5666Banglabn5667Banglabn5668Banglabn5669Banglabn567Banglabn5670Banglabn5671Banglabn5672Banglabn5673Banglabn5674Banglabn5675Banglabn5676Banglabn5677Banglabn5678Banglabn5679Banglabn568Banglabn5680Banglabn5681Banglabn5682Banglabn5683Banglabn5684Banglabn5685Banglabn5686Banglabn5687Banglabn5688Banglabn5689Banglabn569Banglabn5690Banglabn5691Banglabn5692Banglabn5693Banglabn5694Banglabn5695Banglabn5696Banglabn5697Banglabn5698Banglabn5699Banglabn57Banglabn570Banglabn5700Banglabn5701Banglabn5702Banglabn5703Banglabn5704Banglabn5705Banglabn5706Banglabn5707Banglabn5708Banglabn5709Banglabn571Banglabn5710Banglabn5711Banglabn5712Banglabn5713Banglabn5714Banglabn5715Banglabn5716Banglabn5717Banglabn5718Banglabn5719Banglabn572Banglabn5720Banglabn5721Banglabn5722Banglabn5723Banglabn5724Banglabn5725Banglabn5726Banglabn5727Banglabn5728Banglabn5729Banglabn573Banglabn5730Banglabn5731Banglabn5732Banglabn5733Banglabn5734Banglabn5735Banglabn5736Banglabn5737Banglabn5738Banglabn5739Banglabn574Banglabn5740Banglabn5741Banglabn5742Banglabn5743Banglabn5744Banglabn5745Banglabn5746Banglabn5747Banglabn5748Banglabn5749Banglabn575Banglabn5750Banglabn5751Banglabn5752Banglabn5753Banglabn5754Banglabn5755Banglabn5756Banglabn5757Banglabn5758Banglabn5759Banglabn576Banglabn5760Banglabn5761Banglabn5762Banglabn5763Banglabn5764Banglabn5765Banglabn5766Banglabn5767Banglabn5768Banglabn5769Banglabn577Banglabn5770Banglabn5771Banglabn5772Banglabn5773Banglabn5774Banglabn5775Banglabn5776Banglabn5777Banglabn5778Banglabn5779Banglabn578Banglabn5780Banglabn5781Banglabn5782Banglabn5783Banglabn5784Banglabn5785Banglabn5786Banglabn5787Banglabn5788Banglabn5789Banglabn579Banglabn5790Banglabn5791Banglabn5792Banglabn5793Banglabn5794Banglabn5795Banglabn5796Banglabn5797Banglabn5798Banglabn5799Banglabn58Banglabn580Banglabn5800Banglabn5801Banglabn5802Banglabn5803Banglabn5804Banglabn5805Banglabn5806Banglabn5807Banglabn5808Banglabn5809Banglabn581Banglabn5810Banglabn5811Banglabn5812Banglabn5813Banglabn5814Banglabn5815Banglabn5816Banglabn5817Banglabn5818Banglabn5819Banglabn582Banglabn5820Banglabn5821Banglabn5822Banglabn5823Banglabn5824Banglabn5825Banglabn5826Banglabn5827Banglabn5828Banglabn5829Banglabn583Banglabn5830Banglabn5831Banglabn5832Banglabn5833Banglabn5834Banglabn5835Banglabn5836Banglabn5837Banglabn5838Banglabn5839Banglabn584Banglabn5840Banglabn5841Banglabn5842Banglabn5843Banglabn5844Banglabn5845Banglabn5846Banglabn5847Banglabn5848Banglabn5849Banglabn585Banglabn5850Banglabn5851Banglabn5852Banglabn5853Banglabn5854Banglabn5855Banglabn5856Banglabn5857Banglabn5858Banglabn5859Banglabn586Banglabn5860Banglabn5861Banglabn5862Banglabn5863Banglabn5864Banglabn5865Banglabn5866Banglabn5867Banglabn5868Banglabn5869Banglabn587Banglabn5870Banglabn5871Banglabn5872Banglabn5873Banglabn5874Banglabn5875Banglabn5876Banglabn5877Banglabn5878Banglabn5879Banglabn588Banglabn5880Banglabn5881Banglabn5882Banglabn5883Banglabn5884Banglabn5885Banglabn5886Banglabn5887Banglabn5888Banglabn5889Banglabn589Banglabn5890Banglabn5891Banglabn5892Banglabn5893Banglabn5894Banglabn5895Banglabn5896Banglabn5897Banglabn5898Banglabn5899Banglabn59Banglabn590Banglabn5900Banglabn5901Banglabn5902Banglabn5903Banglabn5904Banglabn5905Banglabn5906Banglabn5907Banglabn5908Banglabn5909Banglabn591Banglabn5910Banglabn5911Banglabn5912Banglabn5913Banglabn5914Banglabn5915Banglabn5916Banglabn5917Banglabn5918Banglabn5919Banglabn592Banglabn5920Banglabn5921Banglabn5922Banglabn5923Banglabn5924Banglabn5925Banglabn5926Banglabn5927Banglabn5928Banglabn5929Banglabn593Banglabn5930Banglabn5931Banglabn5932Banglabn5933Banglabn5934Banglabn5935Banglabn5936Banglabn5937Banglabn5938Banglabn5939Banglabn594Banglabn5940Banglabn5941Banglabn5942Banglabn5943Banglabn5944Banglabn5945Banglabn5946Banglabn5947Banglabn5948Banglabn5949Banglabn595Banglabn5950Banglabn5951Banglabn5952Banglabn5953Banglabn5954Banglabn5955Banglabn5956Banglabn5957Banglabn5958Banglabn5959Banglabn596Banglabn5960Banglabn5961Banglabn5962Banglabn5963Banglabn5964Banglabn5965Banglabn5966Banglabn5967Banglabn5968Banglabn5969Banglabn597Banglabn5970Banglabn5971Banglabn5972Banglabn5973Banglabn5974Banglabn5975Banglabn5976Banglabn5977Banglabn5978Banglabn5979Banglabn598Banglabn5980Banglabn5981Banglabn5982Banglabn5983Banglabn5984Banglabn5985Banglabn5986Banglabn5987Banglabn5988Banglabn5989Banglabn599Banglabn5990Banglabn5991Banglabn5992Banglabn5993Banglabn5994Banglabn5995Banglabn5996Banglabn5997Banglabn5998Banglabn5999Banglabn6Banglabn60Banglabn600Banglabn6000Banglabn6001Banglabn6002Banglabn6003Banglabn6004Banglabn6005Banglabn6006Banglabn6007Banglabn6008Banglabn6009Banglabn601Banglabn6010Banglabn6011Banglabn6012Banglabn6013Banglabn6014Banglabn6015Banglabn6016Banglabn6017Banglabn6018Banglabn6019Banglabn602Banglabn6020Banglabn6021Banglabn6022Banglabn6023Banglabn6024Banglabn6025Banglabn6026Banglabn6027Banglabn6028Banglabn6029Banglabn603Banglabn6030Banglabn6031Banglabn6032Banglabn6033Banglabn6034Banglabn6035Banglabn6036Banglabn6037Banglabn6038Banglabn6039Banglabn604Banglabn6040Banglabn6041Banglabn6042Banglabn6043Banglabn6044Banglabn6045Banglabn6046Banglabn6047Banglabn6048Banglabn6049Banglabn605Banglabn6050Banglabn6051Banglabn6052Banglabn6053Banglabn6054Banglabn6055Banglabn6056Banglabn6057Banglabn6058Banglabn6059Banglabn606Banglabn6060Banglabn6061Banglabn6062Banglabn6063Banglabn6064Banglabn6065Banglabn6066Banglabn6067Banglabn6068Banglabn6069Banglabn607Banglabn6070Banglabn6071Banglabn6072Banglabn6073Banglabn6074Banglabn6075Banglabn6076Banglabn6077Banglabn6078Banglabn6079Banglabn608Banglabn6080Banglabn6081Banglabn6082Banglabn6083Banglabn6084Banglabn6085Banglabn6086Banglabn6087Banglabn6088Banglabn6089Banglabn609Banglabn6090Banglabn6091Banglabn6092Banglabn6093Banglabn6094Banglabn6095Banglabn6096Banglabn6097Banglabn6098Banglabn6099Banglabn61Banglabn610Banglabn6100Banglabn6101Banglabn6102Banglabn6103Banglabn6104Banglabn6105Banglabn6106Banglabn6107Banglabn6108Banglabn6109Banglabn611Banglabn6110Banglabn6111Banglabn6112Banglabn6113Banglabn6114Banglabn6115Banglabn6116Banglabn6117Banglabn6118Banglabn6119Banglabn612Banglabn6120Banglabn6121Banglabn6122Banglabn6123Banglabn6124Banglabn6125Banglabn6126Banglabn6127Banglabn6128Banglabn6129Banglabn613Banglabn6130Banglabn6131Banglabn6132Banglabn6133Banglabn6134Banglabn6135Banglabn6136Banglabn6137Banglabn6138Banglabn6139Banglabn614Banglabn6140Banglabn6141Banglabn6142Banglabn6143Banglabn6144Banglabn6145Banglabn6146Banglabn6147Banglabn6148Banglabn6149Banglabn615Banglabn6150Banglabn6151Banglabn6152Banglabn6153Banglabn6154Banglabn6155Banglabn6156Banglabn6157Banglabn6158Banglabn6159Banglabn616Banglabn6160Banglabn6161Banglabn6162Banglabn6163Banglabn6164Banglabn6165Banglabn6166Banglabn6167Banglabn6168Banglabn6169Banglabn617Banglabn6170Banglabn6171Banglabn6172Banglabn6173Banglabn6174Banglabn6175Banglabn6176Banglabn6177Banglabn6178Banglabn6179Banglabn618Banglabn6180Banglabn6181Banglabn6182Banglabn6183Banglabn6184Banglabn6185Banglabn6186Banglabn6187Banglabn6188Banglabn6189Banglabn619Banglabn6190Banglabn6191Banglabn6192Banglabn6193Banglabn6194Banglabn6195Banglabn6196Banglabn6197Banglabn6198Banglabn6199Banglabn62Banglabn620Banglabn6200Banglabn6201Banglabn6202Banglabn6203Banglabn6204Banglabn6205Banglabn6206Banglabn6207Banglabn6208Banglabn6209Banglabn621Banglabn6210Banglabn6211Banglabn6212Banglabn6213Banglabn6214Banglabn6215Banglabn6216Banglabn6217Banglabn6218Banglabn6219Banglabn622Banglabn6220Banglabn6221Banglabn6222Banglabn6223Banglabn6224Banglabn6225Banglabn6226Banglabn6227Banglabn6228Banglabn6229Banglabn623Banglabn6230Banglabn6231Banglabn6232Banglabn6233Banglabn6234Banglabn6235Banglabn6236Banglabn6237Banglabn6238Banglabn6239Banglabn624Banglabn6240Banglabn6241Banglabn6242Banglabn6243Banglabn6244Banglabn6245Banglabn6246Banglabn6247Banglabn6248Banglabn6249Banglabn625Banglabn6250Banglabn6251Banglabn6252Banglabn6253Banglabn6254Banglabn6255Banglabn6256Banglabn6257Banglabn6258Banglabn6259Banglabn626Banglabn6260Banglabn6261Banglabn6262Banglabn6263Banglabn6264Banglabn6265Banglabn6266Banglabn6267Banglabn6268Banglabn6269Banglabn627Banglabn6270Banglabn6271Banglabn6272Banglabn6273Banglabn6274Banglabn6275Banglabn6276Banglabn6277Banglabn6278Banglabn6279Banglabn628Banglabn6280Banglabn6281Banglabn6282Banglabn6283Banglabn6284Banglabn6285Banglabn6286Banglabn6287Banglabn6288Banglabn6289Banglabn629Banglabn6290Banglabn6291Banglabn6292Banglabn6293Banglabn6294Banglabn6295Banglabn6296Banglabn6297Banglabn6298Banglabn6299Banglabn63Banglabn630Banglabn6300Banglabn6301Banglabn6302Banglabn6303Banglabn6304Banglabn6305Banglabn6306Banglabn6307Banglabn6308Banglabn6309Banglabn631Banglabn6310Banglabn6311Banglabn6312Banglabn6313Banglabn6314Banglabn6315Banglabn6316Banglabn6317Banglabn6318Banglabn6319Banglabn632Banglabn6320Banglabn6321Banglabn6322Banglabn6323Banglabn6324Banglabn6325Banglabn6326Banglabn6327Banglabn6328Banglabn6329Banglabn633Banglabn6330Banglabn6331Banglabn6332Banglabn6333Banglabn6334Banglabn6335Banglabn6336Banglabn6337Banglabn6338Banglabn6339Banglabn634Banglabn6340Banglabn6341Banglabn6342Banglabn6343Banglabn6344Banglabn6345Banglabn6346Banglabn6347Banglabn6348Banglabn6349Banglabn635Banglabn6350Banglabn6351Banglabn6352Banglabn6353Banglabn6354Banglabn6355Banglabn6356Banglabn6357Banglabn6358Banglabn6359Banglabn636Banglabn6360Banglabn6361Banglabn6362Banglabn6363Banglabn6364Banglabn6365Banglabn6366Banglabn6367Banglabn6368Banglabn6369Banglabn637Banglabn6370Banglabn6371Banglabn6372Banglabn6373Banglabn6374Banglabn6375Banglabn6376Banglabn6377Banglabn6378Banglabn6379Banglabn638Banglabn6380Banglabn6381Banglabn6382Banglabn6383Banglabn6384Banglabn6385Banglabn6386Banglabn6387Banglabn6388Banglabn6389Banglabn639Banglabn6390Banglabn6391Banglabn6392Banglabn6393Banglabn6394Banglabn6395Banglabn6396Banglabn6397Banglabn6398Banglabn6399Banglabn64Banglabn640Banglabn6400Banglabn6401Banglabn6402Banglabn6403Banglabn6404Banglabn6405Banglabn6406Banglabn6407Banglabn6408Banglabn6409Banglabn641Banglabn6410Banglabn6411Banglabn6412Banglabn6413Banglabn6414Banglabn6415Banglabn6416Banglabn6417Banglabn6418Banglabn6419Banglabn642Banglabn6420Banglabn6421Banglabn6422Banglabn6423Banglabn6424Banglabn6425Banglabn6426Banglabn6427Banglabn6428Banglabn6429Banglabn643Banglabn6430Banglabn6431Banglabn6432Banglabn6433Banglabn6434Banglabn6435Banglabn6436Banglabn6437Banglabn6438Banglabn6439Banglabn644Banglabn6440Banglabn6441Banglabn6442Banglabn6443Banglabn6444Banglabn6445Banglabn6446Banglabn6447Banglabn6448Banglabn6449Banglabn645Banglabn6450Banglabn6451Banglabn6452Banglabn6453Banglabn6454Banglabn6455Banglabn6456Banglabn6457Banglabn6458Banglabn6459Banglabn646Banglabn6460Banglabn6461Banglabn6462Banglabn6463Banglabn6464Banglabn6465Banglabn6466Banglabn6467Banglabn6468Banglabn6469Banglabn647Banglabn6470Banglabn6471Banglabn6472Banglabn6473Banglabn6474Banglabn6475Banglabn6476Banglabn6477Banglabn6478Banglabn6479Banglabn648Banglabn6480Banglabn6481Banglabn6482Banglabn6483Banglabn6484Banglabn6485Banglabn6486Banglabn6487Banglabn6488Banglabn6489Banglabn649Banglabn6490Banglabn6491Banglabn6492Banglabn6493Banglabn6494Banglabn6495Banglabn6496Banglabn6497Banglabn6498Banglabn6499Banglabn65Banglabn650Banglabn6500Banglabn6501Banglabn6502Banglabn6503Banglabn6504Banglabn6505Banglabn6506Banglabn6507Banglabn6508Banglabn6509Banglabn651Banglabn6510Banglabn6511Banglabn6512Banglabn6513Banglabn6514Banglabn6515Banglabn6516Banglabn6517Banglabn6518Banglabn6519Banglabn652Banglabn6520Banglabn6521Banglabn6522Banglabn6523Banglabn6524Banglabn6525Banglabn6526Banglabn6527Banglabn6528Banglabn6529Banglabn653Banglabn6530Banglabn6531Banglabn6532Banglabn6533Banglabn6534Banglabn6535Banglabn6536Banglabn6537Banglabn6538Banglabn6539Banglabn654Banglabn6540Banglabn6541Banglabn6542Banglabn6543Banglabn6544Banglabn6545Banglabn6546Banglabn6547Banglabn6548Banglabn6549Banglabn655Banglabn6550Banglabn6551Banglabn6552Banglabn6553Banglabn6554Banglabn6555Banglabn6556Banglabn6557Banglabn6558Banglabn6559Banglabn656Banglabn6560Banglabn6561Banglabn6562Banglabn6563Banglabn6564Banglabn6565Banglabn6566Banglabn6567Banglabn6568Banglabn6569Banglabn657Banglabn6570Banglabn6571Banglabn6572Banglabn6573Banglabn6574Banglabn6575Banglabn6576Banglabn6577Banglabn6578Banglabn6579Banglabn658Banglabn6580Banglabn6581Banglabn6582Banglabn6583Banglabn6584Banglabn6585Banglabn6586Banglabn6587Banglabn6588Banglabn6589Banglabn659Banglabn6590Banglabn6591Banglabn6592Banglabn6593Banglabn6594Banglabn6595Banglabn6596Banglabn6597Banglabn6598Banglabn6599Banglabn66Banglabn660Banglabn6600Banglabn6601Banglabn6602Banglabn6603Banglabn6604Banglabn6605Banglabn6606Banglabn6607Banglabn6608Banglabn6609Banglabn661Banglabn6610Banglabn6611Banglabn6612Banglabn6613Banglabn6614Banglabn6615Banglabn6616Banglabn6617Banglabn6618Banglabn6619Banglabn662Banglabn6620Banglabn6621Banglabn6622Banglabn6623Banglabn6624Banglabn6625Banglabn6626Banglabn6627Banglabn6628Banglabn6629Banglabn663Banglabn6630Banglabn6631Banglabn6632Banglabn6633Banglabn6634Banglabn6635Banglabn6636Banglabn6637Banglabn6638Banglabn6639Banglabn664Banglabn6640Banglabn6641Banglabn6642Banglabn6643Banglabn6644Banglabn6645Banglabn6646Banglabn6647Banglabn6648Banglabn6649Banglabn665Banglabn6650Banglabn6651Banglabn6652Banglabn6653Banglabn6654Banglabn6655Banglabn6656Banglabn6657Banglabn6658Banglabn6659Banglabn666Banglabn6660Banglabn6661Banglabn6662Banglabn6663Banglabn6664Banglabn6665Banglabn6666Banglabn6667Banglabn6668Banglabn6669Banglabn667Banglabn6670Banglabn6671Banglabn6672Banglabn6673Banglabn6674Banglabn6675Banglabn6676Banglabn6677Banglabn6678Banglabn6679Banglabn668Banglabn6680Banglabn6681Banglabn6682Banglabn6683Banglabn6684Banglabn6685Banglabn6686Banglabn6687Banglabn6688Banglabn6689Banglabn669Banglabn6690Banglabn6691Banglabn6692Banglabn6693Banglabn6694Banglabn6695Banglabn6696Banglabn6697Banglabn6698Banglabn6699Banglabn67Banglabn670Banglabn6700Banglabn6701Banglabn6702Banglabn6703Banglabn6704Banglabn6705Banglabn6706Banglabn6707Banglabn6708Banglabn6709Banglabn671Banglabn6710Banglabn6711Banglabn6712Banglabn6713Banglabn6714Banglabn6715Banglabn6716Banglabn6717Banglabn6718Banglabn6719Banglabn672Banglabn6720Banglabn6721Banglabn6722Banglabn6723Banglabn6724Banglabn6725Banglabn6726Banglabn6727Banglabn6728Banglabn6729Banglabn673Banglabn6730Banglabn6731Banglabn6732Banglabn6733Banglabn6734Banglabn6735Banglabn6736Banglabn6737Banglabn6738Banglabn6739Banglabn674Banglabn6740Banglabn6741Banglabn6742Banglabn6743Banglabn6744Banglabn6745Banglabn6746Banglabn6747Banglabn6748Banglabn6749Banglabn675Banglabn6750Banglabn6751Banglabn6752Banglabn6753Banglabn6754Banglabn6755Banglabn6756Banglabn6757Banglabn6758Banglabn6759Banglabn676Banglabn6760Banglabn6761Banglabn6762Banglabn6763Banglabn6764Banglabn6765Banglabn6766Banglabn6767Banglabn6768Banglabn6769Banglabn677Banglabn6770Banglabn6771Banglabn6772Banglabn6773Banglabn6774Banglabn6775Banglabn6776Banglabn6777Banglabn6778Banglabn6779Banglabn678Banglabn6780Banglabn6781Banglabn6782Banglabn6783Banglabn6784Banglabn6785Banglabn6786Banglabn6787Banglabn6788Banglabn6789Banglabn679Banglabn6790Banglabn6791Banglabn6792Banglabn6793Banglabn6794Banglabn6795Banglabn6796Banglabn6797Banglabn6798Banglabn6799Banglabn68Banglabn680Banglabn6800Banglabn6801Banglabn6802Banglabn6803Banglabn6804Banglabn6805Banglabn6806Banglabn6807Banglabn6808Banglabn6809Banglabn681Banglabn6810Banglabn6811Banglabn6812Banglabn6813Banglabn6814Banglabn6815Banglabn6816Banglabn6817Banglabn6818Banglabn6819Banglabn682Banglabn6820Banglabn6821Banglabn6822Banglabn6823Banglabn6824Banglabn6825Banglabn6826Banglabn6827Banglabn6828Banglabn6829Banglabn683Banglabn6830Banglabn6831Banglabn6832Banglabn6833Banglabn6834Banglabn6835Banglabn6836Banglabn6837Banglabn6838Banglabn6839Banglabn684Banglabn6840Banglabn6841Banglabn6842Banglabn6843Banglabn6844Banglabn6845Banglabn6846Banglabn6847Banglabn6848Banglabn6849Banglabn685Banglabn6850Banglabn6851Banglabn6852Banglabn6853Banglabn6854Banglabn6855Banglabn6856Banglabn6857Banglabn6858Banglabn6859Banglabn686Banglabn6860Banglabn6861Banglabn6862Banglabn6863Banglabn6864Banglabn6865Banglabn6866Banglabn6867Banglabn6868Banglabn6869Banglabn687Banglabn6870Banglabn6871Banglabn6872Banglabn6873Banglabn6874Banglabn6875Banglabn6876Banglabn6877Banglabn6878Banglabn6879Banglabn688Banglabn6880Banglabn6881Banglabn6882Banglabn6883Banglabn6884Banglabn6885Banglabn6886Banglabn6887Banglabn6888Banglabn6889Banglabn689Banglabn6890Banglabn6891Banglabn6892Banglabn6893Banglabn6894Banglabn6895Banglabn6896Banglabn6897Banglabn6898Banglabn6899Banglabn69Banglabn690Banglabn6900Banglabn6901Banglabn6902Banglabn6903Banglabn6904Banglabn6905Banglabn6906Banglabn6907Banglabn6908Banglabn6909Banglabn691Banglabn6910Banglabn6911Banglabn6912Banglabn6913Banglabn6914Banglabn6915Banglabn6916Banglabn6917Banglabn6918Banglabn6919Banglabn692Banglabn6920Banglabn6921Banglabn6922Banglabn6923Banglabn6924Banglabn6925Banglabn6926Banglabn6927Banglabn6928Banglabn6929Banglabn693Banglabn6930Banglabn6931Banglabn6932Banglabn6933Banglabn6934Banglabn6935Banglabn6936Banglabn6937Banglabn6938Banglabn6939Banglabn694Banglabn6940Banglabn6941Banglabn6942Banglabn6943Banglabn6944Banglabn6945Banglabn6946Banglabn6947Banglabn6948Banglabn6949Banglabn695Banglabn6950Banglabn6951Banglabn6952Banglabn6953Banglabn6954Banglabn6955Banglabn6956Banglabn6957Banglabn6958Banglabn6959Banglabn696Banglabn6960Banglabn6961Banglabn6962Banglabn6963Banglabn6964Banglabn6965Banglabn6966Banglabn6967Banglabn6968Banglabn6969Banglabn697Banglabn6970Banglabn6971Banglabn6972Banglabn6973Banglabn6974Banglabn6975Banglabn6976Banglabn6977Banglabn6978Banglabn6979Banglabn698Banglabn6980Banglabn6981Banglabn6982Banglabn6983Banglabn6984Banglabn6985Banglabn6986Banglabn6987Banglabn6988Banglabn6989Banglabn699Banglabn6990Banglabn6991Banglabn6992Banglabn6993Banglabn6994Banglabn6995Banglabn6996Banglabn6997Banglabn6998Banglabn6999Banglabn7Banglabn70Banglabn700Banglabn7000Banglabn7001Banglabn7002Banglabn7003Banglabn7004Banglabn7005Banglabn7006Banglabn7007Banglabn7008Banglabn7009Banglabn701Banglabn7010Banglabn7011Banglabn7012Banglabn7013Banglabn7014Banglabn7015Banglabn7016Banglabn7017Banglabn7018Banglabn7019Banglabn702Banglabn7020Banglabn7021Banglabn7022Banglabn7023Banglabn7024Banglabn7025Banglabn7026Banglabn7027Banglabn7028Banglabn7029Banglabn703Banglabn7030Banglabn7031Banglabn7032Banglabn7033Banglabn7034Banglabn7035Banglabn7036Banglabn7037Banglabn7038Banglabn7039Banglabn704Banglabn7040Banglabn7041Banglabn7042Banglabn7043Banglabn7044Banglabn7045Banglabn7046Banglabn7047Banglabn7048Banglabn7049Banglabn705Banglabn7050Banglabn7051Banglabn7052Banglabn7053Banglabn7054Banglabn7055Banglabn7056Banglabn7057Banglabn7058Banglabn7059Banglabn706Banglabn7060Banglabn7061Banglabn7062Banglabn7063Banglabn7064Banglabn7065Banglabn7066Banglabn7067Banglabn7068Banglabn7069Banglabn707Banglabn7070Banglabn7071Banglabn7072Banglabn7073Banglabn7074Banglabn7075Banglabn7076Banglabn7077Banglabn7078Banglabn7079Banglabn708Banglabn7080Banglabn7081Banglabn7082Banglabn7083Banglabn7084Banglabn7085Banglabn7086Banglabn7087Banglabn7088Banglabn7089Banglabn709Banglabn7090Banglabn7091Banglabn7092Banglabn7093Banglabn7094Banglabn7095Banglabn7096Banglabn7097Banglabn7098Banglabn7099Banglabn71Banglabn710Banglabn7100Banglabn7101Banglabn7102Banglabn7103Banglabn7104Banglabn7105Banglabn7106Banglabn7107Banglabn7108Banglabn7109Banglabn711Banglabn7110Banglabn7111Banglabn7112Banglabn7113Banglabn7114Banglabn7115Banglabn7116Banglabn7117Banglabn7118Banglabn7119Banglabn712Banglabn7120Banglabn7121Banglabn7122Banglabn7123Banglabn7124Banglabn7125Banglabn7126Banglabn7127Banglabn7128Banglabn7129Banglabn713Banglabn7130Banglabn7131Banglabn7132Banglabn7133Banglabn7134Banglabn7135Banglabn7136Banglabn7137Banglabn7138Banglabn7139Banglabn714Banglabn7140Banglabn7141Banglabn7142Banglabn7143Banglabn7144Banglabn7145Banglabn7146Banglabn7147Banglabn7148Banglabn7149Banglabn715Banglabn7150Banglabn7151Banglabn7152Banglabn7153Banglabn7154Banglabn7155Banglabn7156Banglabn7157Banglabn7158Banglabn7159Banglabn716Banglabn7160Banglabn7161Banglabn7162Banglabn7163Banglabn7164Banglabn7165Banglabn7166Banglabn7167Banglabn7168Banglabn7169Banglabn717Banglabn7170Banglabn7171Banglabn7172Banglabn7173Banglabn7174Banglabn7175Banglabn7176Banglabn7177Banglabn7178Banglabn7179Banglabn718Banglabn7180Banglabn7181Banglabn7182Banglabn7183Banglabn7184Banglabn7185Banglabn7186Banglabn7187Banglabn7188Banglabn7189Banglabn719Banglabn7190Banglabn7191Banglabn7192Banglabn7193Banglabn7194Banglabn7195Banglabn7196Banglabn7197Banglabn7198Banglabn7199Banglabn72Banglabn720Banglabn7200Banglabn7201Banglabn7202Banglabn7203Banglabn7204Banglabn7205Banglabn7206Banglabn7207Banglabn7208Banglabn7209Banglabn721Banglabn7210Banglabn7211Banglabn7212Banglabn7213Banglabn7214Banglabn7215Banglabn7216Banglabn7217Banglabn7218Banglabn7219Banglabn722Banglabn7220Banglabn7221Banglabn7222Banglabn7223Banglabn7224Banglabn7225Banglabn7226Banglabn7227Banglabn7228Banglabn7229Banglabn723Banglabn7230Banglabn7231Banglabn7232Banglabn7233Banglabn7234Banglabn7235Banglabn7236Banglabn7237Banglabn7238Banglabn7239Banglabn724Banglabn7240Banglabn7241Banglabn7242Banglabn7243Banglabn7244Banglabn7245Banglabn7246Banglabn7247Banglabn7248Banglabn7249Banglabn725Banglabn7250Banglabn7251Banglabn7252Banglabn7253Banglabn7254Banglabn7255Banglabn7256Banglabn7257Banglabn7258Banglabn7259Banglabn726Banglabn7260Banglabn7261Banglabn7262Banglabn7263Banglabn7264Banglabn7265Banglabn7266Banglabn7267Banglabn7268Banglabn7269Banglabn727Banglabn7270Banglabn7271Banglabn7272Banglabn7273Banglabn7274Banglabn7275Banglabn7276Banglabn7277Banglabn7278Banglabn7279Banglabn728Banglabn7280Banglabn7281Banglabn7282Banglabn7283Banglabn7284Banglabn7285Banglabn7286Banglabn7287Banglabn7288Banglabn7289Banglabn729Banglabn7290Banglabn7291Banglabn7292Banglabn7293Banglabn7294Banglabn7295Banglabn7296Banglabn7297Banglabn7298Banglabn7299Banglabn73Banglabn730Banglabn7300Banglabn7301Banglabn7302Banglabn7303Banglabn7304Banglabn7305Banglabn7306Banglabn7307Banglabn7308Banglabn7309Banglabn731Banglabn7310Banglabn7311Banglabn7312Banglabn7313Banglabn7314Banglabn7315Banglabn7316Banglabn7317Banglabn7318Banglabn7319Banglabn732Banglabn7320Banglabn7321Banglabn7322Banglabn7323Banglabn7324Banglabn7325Banglabn7326Banglabn7327Banglabn7328Banglabn7329Banglabn733Banglabn7330Banglabn7331Banglabn7332Banglabn7333Banglabn7334Banglabn7335Banglabn7336Banglabn7337Banglabn7338Banglabn7339Banglabn734Banglabn7340Banglabn7341Banglabn7342Banglabn7343Banglabn7344Banglabn7345Banglabn7346Banglabn7347Banglabn7348Banglabn7349Banglabn735Banglabn7350Banglabn7351Banglabn7352Banglabn7353Banglabn7354Banglabn7355Banglabn7356Banglabn7357Banglabn7358Banglabn7359Banglabn736Banglabn7360Banglabn7361Banglabn7362Banglabn7363Banglabn7364Banglabn7365Banglabn7366Banglabn7367Banglabn7368Banglabn7369Banglabn737Banglabn7370Banglabn7371Banglabn7372Banglabn7373Banglabn7374Banglabn7375Banglabn7376Banglabn7377Banglabn7378Banglabn7379Banglabn738Banglabn7380Banglabn7381Banglabn7382Banglabn7383Banglabn7384Banglabn7385Banglabn7386Banglabn7387Banglabn7388Banglabn7389Banglabn739Banglabn7390Banglabn7391Banglabn7392Banglabn7393Banglabn7394Banglabn7395Banglabn7396Banglabn7397Banglabn7398Banglabn7399Banglabn74Banglabn740Banglabn7400Banglabn7401Banglabn7402Banglabn7403Banglabn7404Banglabn7405Banglabn7406Banglabn7407Banglabn7408Banglabn7409Banglabn741Banglabn7410Banglabn7411Banglabn7412Banglabn7413Banglabn7414Banglabn7415Banglabn7416Banglabn7417Banglabn7418Banglabn7419Banglabn742Banglabn7420Banglabn7421Banglabn7422Banglabn7423Banglabn7424Banglabn7425Banglabn7426Banglabn7427Banglabn7428Banglabn7429Banglabn743Banglabn7430Banglabn7431Banglabn7432Banglabn7433Banglabn7434Banglabn7435Banglabn7436Banglabn7437Banglabn7438Banglabn7439Banglabn744Banglabn7440Banglabn7441Banglabn7442Banglabn7443Banglabn7444Banglabn7445Banglabn7446Banglabn7447Banglabn7448Banglabn7449Banglabn745Banglabn7450Banglabn7451Banglabn7452Banglabn7453Banglabn7454Banglabn7455Banglabn7456Banglabn7457Banglabn7458Banglabn7459Banglabn746Banglabn7460Banglabn7461Banglabn7462Banglabn7463Banglabn7464Banglabn7465Banglabn7466Banglabn7467Banglabn7468Banglabn7469Banglabn747Banglabn7470Banglabn7471Banglabn7472Banglabn7473Banglabn7474Banglabn7475Banglabn7476Banglabn7477Banglabn7478Banglabn7479Banglabn748Banglabn7480Banglabn7481Banglabn7482Banglabn7483Banglabn7484Banglabn7485Banglabn7486Banglabn7487Banglabn7488Banglabn7489Banglabn749Banglabn7490Banglabn7491Banglabn7492Banglabn7493Banglabn7494Banglabn7495Banglabn7496Banglabn7497Banglabn7498Banglabn7499Banglabn75Banglabn750Banglabn7500Banglabn7501Banglabn7502Banglabn7503Banglabn7504Banglabn7505Banglabn7506Banglabn7507Banglabn7508Banglabn7509Banglabn751Banglabn7510Banglabn7511Banglabn7512Banglabn7513Banglabn7514Banglabn7515Banglabn7516Banglabn7517Banglabn7518Banglabn7519Banglabn752Banglabn7520Banglabn7521Banglabn7522Banglabn7523Banglabn7524Banglabn7525Banglabn7526Banglabn7527Banglabn7528Banglabn7529Banglabn753Banglabn7530Banglabn7531Banglabn7532Banglabn7533Banglabn7534Banglabn7535Banglabn7536Banglabn7537Banglabn7538Banglabn7539Banglabn754Banglabn7540Banglabn7541Banglabn7542Banglabn7543Banglabn7544Banglabn7545Banglabn7546Banglabn7547Banglabn7548Banglabn7549Banglabn755Banglabn7550Banglabn7551Banglabn7552Banglabn7553Banglabn7554Banglabn7555Banglabn7556Banglabn7557Banglabn7558Banglabn7559Banglabn756Banglabn7560Banglabn7561Banglabn7562Banglabn7563Banglabn7564Banglabn7565Banglabn7566Banglabn7567Banglabn7568Banglabn7569Banglabn757Banglabn7570Banglabn7571Banglabn7572Banglabn7573Banglabn7574Banglabn7575Banglabn7576Banglabn7577Banglabn7578Banglabn7579Banglabn758Banglabn7580Banglabn7581Banglabn7582Banglabn7583Banglabn7584Banglabn7585Banglabn7586Banglabn7587Banglabn7588Banglabn7589Banglabn759Banglabn7590Banglabn7591Banglabn7592Banglabn7593Banglabn7594Banglabn7595Banglabn7596Banglabn7597Banglabn7598Banglabn7599Banglabn76Banglabn760Banglabn7600Banglabn7601Banglabn7602Banglabn7603Banglabn7604Banglabn7605Banglabn7606Banglabn7607Banglabn7608Banglabn7609Banglabn761Banglabn7610Banglabn7611Banglabn7612Banglabn7613Banglabn7614Banglabn7615Banglabn7616Banglabn7617Banglabn7618Banglabn7619Banglabn762Banglabn7620Banglabn7621Banglabn7622Banglabn7623Banglabn7624Banglabn7625Banglabn7626Banglabn7627Banglabn7628Banglabn7629Banglabn763Banglabn7630Banglabn7631Banglabn7632Banglabn7633Banglabn7634Banglabn7635Banglabn7636Banglabn7637Banglabn7638Banglabn7639Banglabn764Banglabn7640Banglabn7641Banglabn7642Banglabn7643Banglabn7644Banglabn7645Banglabn7646Banglabn7647Banglabn7648Banglabn7649Banglabn765Banglabn7650Banglabn7651Banglabn7652Banglabn7653Banglabn7654Banglabn7655Banglabn7656Banglabn7657Banglabn7658Banglabn7659Banglabn766Banglabn7660Banglabn7661Banglabn7662Banglabn7663Banglabn7664Banglabn7665Banglabn7666Banglabn7667Banglabn7668Banglabn7669Banglabn767Banglabn7670Banglabn7671Banglabn7672Banglabn7673Banglabn7674Banglabn7675Banglabn7676Banglabn7677Banglabn7678Banglabn7679Banglabn768Banglabn7680Banglabn7681Banglabn7682Banglabn7683Banglabn7684Banglabn7685Banglabn7686Banglabn7687Banglabn7688Banglabn7689Banglabn769Banglabn7690Banglabn7691Banglabn7692Banglabn7693Banglabn7694Banglabn7695Banglabn7696Banglabn7697Banglabn7698Banglabn7699Banglabn77Banglabn770Banglabn7700Banglabn7701Banglabn7702Banglabn7703Banglabn7704Banglabn7705Banglabn7706Banglabn7707Banglabn7708Banglabn7709Banglabn771Banglabn7710Banglabn7711Banglabn7712Banglabn7713Banglabn7714Banglabn7715Banglabn7716Banglabn7717Banglabn7718Banglabn7719Banglabn772Banglabn7720Banglabn7721Banglabn7722Banglabn7723Banglabn7724Banglabn7725Banglabn7726Banglabn7727Banglabn7728Banglabn7729Banglabn773Banglabn7730Banglabn7731Banglabn7732Banglabn7733Banglabn7734Banglabn7735Banglabn7736Banglabn7737Banglabn7738Banglabn7739Banglabn774Banglabn7740Banglabn7741Banglabn7742Banglabn7743Banglabn7744Banglabn7745Banglabn7746Banglabn7747Banglabn7748Banglabn7749Banglabn775Banglabn7750Banglabn7751Banglabn7752Banglabn7753Banglabn7754Banglabn7755Banglabn7756Banglabn7757Banglabn7758Banglabn7759Banglabn776Banglabn7760Banglabn7761Banglabn7762Banglabn7763Banglabn7764Banglabn7765Banglabn7766Banglabn7767Banglabn7768Banglabn7769Banglabn777Banglabn7770Banglabn7771Banglabn7772Banglabn7773Banglabn7774Banglabn7775Banglabn7776Banglabn7777Banglabn7778Banglabn7779Banglabn778Banglabn7780Banglabn7781Banglabn7782Banglabn7783Banglabn7784Banglabn7785Banglabn7786Banglabn7787Banglabn7788Banglabn7789Banglabn779Banglabn7790Banglabn7791Banglabn7792Banglabn7793Banglabn7794Banglabn7795Banglabn7796Banglabn7797Banglabn7798Banglabn7799Banglabn78Banglabn780Banglabn7800Banglabn7801Banglabn7802Banglabn7803Banglabn7804Banglabn7805Banglabn7806Banglabn7807Banglabn7808Banglabn7809Banglabn781Banglabn7810Banglabn7811Banglabn7812Banglabn7813Banglabn7814Banglabn7815Banglabn7816Banglabn7817Banglabn7818Banglabn7819Banglabn782Banglabn7820Banglabn7821Banglabn7822Banglabn7823Banglabn7824Banglabn7825Banglabn7826Banglabn7827Banglabn7828Banglabn7829Banglabn783Banglabn7830Banglabn7831Banglabn7832Banglabn7833Banglabn7834Banglabn7835Banglabn7836Banglabn7837Banglabn7838Banglabn7839Banglabn784Banglabn7840Banglabn7841Banglabn7842Banglabn7843Banglabn7844Banglabn7845Banglabn7846Banglabn7847Banglabn7848Banglabn7849Banglabn785Banglabn7850Banglabn7851Banglabn7852Banglabn7853Banglabn7854Banglabn7855Banglabn7856Banglabn7857Banglabn7858Banglabn7859Banglabn786Banglabn7860Banglabn7861Banglabn7862Banglabn7863Banglabn7864Banglabn7865Banglabn7866Banglabn7867Banglabn7868Banglabn7869Banglabn787Banglabn7870Banglabn7871Banglabn7872Banglabn7873Banglabn7874Banglabn7875Banglabn7876Banglabn7877Banglabn7878Banglabn7879Banglabn788Banglabn7880Banglabn7881Banglabn7882Banglabn7883Banglabn7884Banglabn7885Banglabn7886Banglabn7887Banglabn7888Banglabn7889Banglabn789Banglabn7890Banglabn7891Banglabn7892Banglabn7893Banglabn7894Banglabn7895Banglabn7896Banglabn7897Banglabn7898Banglabn7899Banglabn79Banglabn790Banglabn7900Banglabn7901Banglabn7902Banglabn7903Banglabn7904Banglabn7905Banglabn7906Banglabn7907Banglabn7908Banglabn7909Banglabn791Banglabn7910Banglabn7911Banglabn7912Banglabn7913Banglabn7914Banglabn7915Banglabn7916Banglabn7917Banglabn7918Banglabn7919Banglabn792Banglabn7920Banglabn7921Banglabn7922Banglabn7923Banglabn7924Banglabn7925Banglabn7926Banglabn7927Banglabn7928Banglabn7929Banglabn793Banglabn7930Banglabn7931Banglabn7932Banglabn7933Banglabn7934Banglabn7935Banglabn7936Banglabn7937Banglabn7938Banglabn7939Banglabn794Banglabn7940Banglabn7941Banglabn7942Banglabn7943Banglabn7944Banglabn7945Banglabn7946Banglabn7947Banglabn7948Banglabn7949Banglabn795Banglabn7950Banglabn7951Banglabn7952Banglabn7953Banglabn7954Banglabn7955Banglabn7956Banglabn7957Banglabn7958Banglabn7959Banglabn796Banglabn7960Banglabn7961Banglabn7962Banglabn7963Banglabn7964Banglabn7965Banglabn7966Banglabn7967Banglabn7968Banglabn7969Banglabn797Banglabn7970Banglabn7971Banglabn7972Banglabn7973Banglabn7974Banglabn7975Banglabn7976Banglabn7977Banglabn7978Banglabn7979Banglabn798Banglabn7980Banglabn7981Banglabn7982Banglabn7983Banglabn7984Banglabn7985Banglabn7986Banglabn7987Banglabn7988Banglabn7989Banglabn799Banglabn7990Banglabn7991Banglabn7992Banglabn7993Banglabn7994Banglabn7995Banglabn7996Banglabn7997Banglabn7998Banglabn7999Banglabn8Banglabn80Banglabn800Banglabn8000Banglabn8001Banglabn8002Banglabn8003Banglabn8004Banglabn8005Banglabn8006Banglabn8007Banglabn8008Banglabn8009Banglabn801Banglabn8010Banglabn8011Banglabn8012Banglabn8013Banglabn8014Banglabn8015Banglabn8016Banglabn8017Banglabn8018Banglabn8019Banglabn802Banglabn8020Banglabn8021Banglabn8022Banglabn8023Banglabn8024Banglabn8025Banglabn8026Banglabn8027Banglabn8028Banglabn8029Banglabn803Banglabn8030Banglabn8031Banglabn8032Banglabn8033Banglabn8034Banglabn8035Banglabn8036Banglabn8037Banglabn8038Banglabn8039Banglabn804Banglabn8040Banglabn8041Banglabn8042Banglabn8043Banglabn8044Banglabn8045Banglabn8046Banglabn8047Banglabn8048Banglabn8049Banglabn805Banglabn8050Banglabn8051Banglabn8052Banglabn8053Banglabn8054Banglabn8055Banglabn8056Banglabn8057Banglabn8058Banglabn8059Banglabn806Banglabn8060Banglabn8061Banglabn8062Banglabn8063Banglabn8064Banglabn8065Banglabn8066Banglabn8067Banglabn8068Banglabn8069Banglabn807Banglabn8070Banglabn8071Banglabn8072Banglabn8073Banglabn8074Banglabn8075Banglabn8076Banglabn8077Banglabn8078Banglabn8079Banglabn808Banglabn8080Banglabn8081Banglabn8082Banglabn8083Banglabn8084Banglabn8085Banglabn8086Banglabn8087Banglabn8088Banglabn8089Banglabn809Banglabn8090Banglabn8091Banglabn8092Banglabn8093Banglabn8094Banglabn8095Banglabn8096Banglabn8097Banglabn8098Banglabn8099Banglabn81Banglabn810Banglabn8100Banglabn8101Banglabn8102Banglabn8103Banglabn8104Banglabn8105Banglabn8106Banglabn8107Banglabn8108Banglabn8109Banglabn811Banglabn8110Banglabn8111Banglabn8112Banglabn8113Banglabn8114Banglabn8115Banglabn8116Banglabn8117Banglabn8118Banglabn8119Banglabn812Banglabn8120Banglabn8121Banglabn8122Banglabn8123Banglabn8124Banglabn8125Banglabn8126Banglabn8127Banglabn8128Banglabn8129Banglabn813Banglabn8130Banglabn8131Banglabn8132Banglabn8133Banglabn8134Banglabn8135Banglabn8136Banglabn8137Banglabn8138Banglabn8139Banglabn814Banglabn8140Banglabn8141Banglabn8142Banglabn8143Banglabn8144Banglabn8145Banglabn8146Banglabn8147Banglabn8148Banglabn8149Banglabn815Banglabn8150Banglabn8151Banglabn8152Banglabn8153Banglabn8154Banglabn8155Banglabn8156Banglabn8157Banglabn8158Banglabn8159Banglabn816Banglabn8160Banglabn8161Banglabn8162Banglabn8163Banglabn8164Banglabn8165Banglabn8166Banglabn8167Banglabn8168Banglabn8169Banglabn817Banglabn8170Banglabn8171Banglabn8172Banglabn8173Banglabn8174Banglabn8175Banglabn8176Banglabn8177Banglabn8178Banglabn8179Banglabn818Banglabn8180Banglabn8181Banglabn8182Banglabn8183Banglabn8184Banglabn8185Banglabn8186Banglabn8187Banglabn8188Banglabn8189Banglabn819Banglabn8190Banglabn8191Banglabn82Banglabn820Banglabn821Banglabn822Banglabn823Banglabn824Banglabn825Banglabn826Banglabn827Banglabn828Banglabn829Banglabn83Banglabn830Banglabn831Banglabn832Banglabn833Banglabn834Banglabn835Banglabn836Banglabn837Banglabn838Banglabn839Banglabn84Banglabn840Banglabn841Banglabn842Banglabn843Banglabn844Banglabn845Banglabn846Banglabn847Banglabn848Banglabn849Banglabn85Banglabn850Banglabn851Banglabn852Banglabn853Banglabn854Banglabn855Banglabn856Banglabn857Banglabn858Banglabn859Banglabn86Banglabn860Banglabn861Banglabn862Banglabn863Banglabn864Banglabn865Banglabn866Banglabn867Banglabn868Banglabn869Banglabn87Banglabn870Banglabn871Banglabn872Banglabn873Banglabn874Banglabn875Banglabn876Banglabn877Banglabn878Banglabn879Banglabn88Banglabn880Banglabn881Banglabn882Banglabn883Banglabn884Banglabn885Banglabn886Banglabn887Banglabn888Banglabn889Banglabn89Banglabn890Banglabn891Banglabn892Banglabn893Banglabn894Banglabn895Banglabn896Banglabn897Banglabn898Banglabn899Banglabn9Banglabn90Banglabn900Banglabn901Banglabn902Banglabn903Banglabn904Banglabn905Banglabn906Banglabn907Banglabn908Banglabn909Banglabn91Banglabn910Banglabn911Banglabn912Banglabn913Banglabn914Banglabn915Banglabn916Banglabn917Banglabn918Banglabn919Banglabn92Banglabn920Banglabn921Banglabn922Banglabn923Banglabn924Banglabn925Banglabn926Banglabn927Banglabn928Banglabn929Banglabn93Banglabn930Banglabn931Banglabn932Banglabn933Banglabn934Banglabn935Banglabn936Banglabn937Banglabn938Banglabn939Banglabn94Banglabn940Banglabn941Banglabn942Banglabn943Banglabn944Banglabn945Banglabn946Banglabn947Banglabn948Banglabn949Banglabn95Banglabn950Banglabn951Banglabn952Banglabn953Banglabn954Banglabn955Banglabn956Banglabn957Banglabn958Banglabn959Banglabn96Banglabn960Banglabn961Banglabn962Banglabn963Banglabn964Banglabn965Banglabn966Banglabn967Banglabn968Banglabn969Banglabn97Banglabn970Banglabn971Banglabn972Banglabn973Banglabn974Banglabn975Banglabn976Banglabn977Banglabn978Banglabn979Banglabn98Banglabn980Banglabn981Banglabn982Banglabn983Banglabn984Banglabn985Banglabn986Banglabn987Banglabn988Banglabn989Banglabn99Banglabn990Banglabn991Banglabn992Banglabn993Banglabn994Banglabn995Banglabn996Banglabn997Banglabn998Banglabn999Banglaccp0Chakmaccp1Chakmaccp10Chakmaccp100Chakmaccp1000Chakmaccp1001Chakmaccp1002Chakmaccp1003Chakmaccp1004Chakmaccp1005Chakmaccp1006Chakmaccp1007Chakmaccp1008Chakmaccp1009Chakmaccp101Chakmaccp1010Chakmaccp1011Chakmaccp1012Chakmaccp1013Chakmaccp1014Chakmaccp1015Chakmaccp1016Chakmaccp1017Chakmaccp1018Chakmaccp1019Chakmaccp102Chakmaccp1020Chakmaccp1021Chakmaccp1022Chakmaccp1023Chakmaccp1024Chakmaccp1025Chakmaccp1026Chakmaccp1027Chakmaccp1028Chakmaccp1029Chakmaccp103Chakmaccp1030Chakmaccp1031Chakmaccp1032Chakmaccp1033Chakmaccp1034Chakmaccp1035Chakmaccp1036Chakmaccp1037Chakmaccp1038Chakmaccp1039Chakmaccp104Chakmaccp1040Chakmaccp1041Chakmaccp1042Chakmaccp1043Chakmaccp1044Chakmaccp1045Chakmaccp1046Chakmaccp1047Chakmaccp1048Chakmaccp1049Chakmaccp105Chakmaccp1050Chakmaccp1051Chakmaccp1052Chakmaccp1053Chakmaccp1054Chakmaccp1055Chakmaccp1056Chakmaccp1057Chakmaccp1058Chakmaccp1059Chakmaccp106Chakmaccp1060Chakmaccp1061Chakmaccp1062Chakmaccp1063Chakmaccp1064Chakmaccp1065Chakmaccp1066Chakmaccp1067Chakmaccp1068Chakmaccp1069Chakmaccp107Chakmaccp1070Chakmaccp1071Chakmaccp1072Chakmaccp1073Chakmaccp1074Chakmaccp1075Chakmaccp1076Chakmaccp1077Chakmaccp1078Chakmaccp1079Chakmaccp108Chakmaccp1080Chakmaccp1081Chakmaccp1082Chakmaccp1083Chakmaccp1084Chakmaccp1085Chakmaccp1086Chakmaccp1087Chakmaccp1088Chakmaccp1089Chakmaccp109Chakmaccp1090Chakmaccp1091Chakmaccp1092Chakmaccp1093Chakmaccp1094Chakmaccp1095Chakmaccp1096Chakmaccp1097Chakmaccp1098Chakmaccp1099Chakmaccp11Chakmaccp110Chakmaccp1100Chakmaccp1101Chakmaccp1102Chakmaccp1103Chakmaccp1104Chakmaccp1105Chakmaccp1106Chakmaccp1107Chakmaccp1108Chakmaccp1109Chakmaccp111Chakmaccp1110Chakmaccp1111Chakmaccp1112Chakmaccp1113Chakmaccp1114Chakmaccp1115Chakmaccp1116Chakmaccp1117Chakmaccp1118Chakmaccp1119Chakmaccp112Chakmaccp1120Chakmaccp1121Chakmaccp1122Chakmaccp1123Chakmaccp1124Chakmaccp1125Chakmaccp1126Chakmaccp1127Chakmaccp1128Chakmaccp1129Chakmaccp113Chakmaccp1130Chakmaccp1131Chakmaccp1132Chakmaccp1133Chakmaccp1134Chakmaccp1135Chakmaccp1136Chakmaccp1137Chakmaccp1138Chakmaccp1139Chakmaccp114Chakmaccp1140Chakmaccp1141Chakmaccp1142Chakmaccp1143Chakmaccp1144Chakmaccp1145Chakmaccp1146Chakmaccp1147Chakmaccp1148Chakmaccp1149Chakmaccp115Chakmaccp1150Chakmaccp1151Chakmaccp1152Chakmaccp1153Chakmaccp1154Chakmaccp1155Chakmaccp1156Chakmaccp1157Chakmaccp1158Chakmaccp1159Chakmaccp116Chakmaccp1160Chakmaccp1161Chakmaccp1162Chakmaccp1163Chakmaccp1164Chakmaccp1165Chakmaccp1166Chakmaccp1167Chakmaccp1168Chakmaccp1169Chakmaccp117Chakmaccp1170Chakmaccp1171Chakmaccp1172Chakmaccp1173Chakmaccp1174Chakmaccp1175Chakmaccp1176Chakmaccp1177Chakmaccp1178Chakmaccp1179Chakmaccp118Chakmaccp1180Chakmaccp1181Chakmaccp1182Chakmaccp1183Chakmaccp1184Chakmaccp1185Chakmaccp1186Chakmaccp1187Chakmaccp1188Chakmaccp1189Chakmaccp119Chakmaccp1190Chakmaccp1191Chakmaccp1192Chakmaccp1193Chakmaccp1194Chakmaccp1195Chakmaccp1196Chakmaccp1197Chakmaccp1198Chakmaccp1199Chakmaccp12Chakmaccp120Chakmaccp1200Chakmaccp1201Chakmaccp1202Chakmaccp1203Chakmaccp1204Chakmaccp1205Chakmaccp1206Chakmaccp1207Chakmaccp1208Chakmaccp1209Chakmaccp121Chakmaccp1210Chakmaccp1211Chakmaccp1212Chakmaccp1213Chakmaccp1214Chakmaccp1215Chakmaccp1216Chakmaccp1217Chakmaccp1218Chakmaccp1219Chakmaccp122Chakmaccp1220Chakmaccp1221Chakmaccp1222Chakmaccp1223Chakmaccp1224Chakmaccp1225Chakmaccp1226Chakmaccp1227Chakmaccp1228Chakmaccp1229Chakmaccp123Chakmaccp1230Chakmaccp1231Chakmaccp1232Chakmaccp1233Chakmaccp1234Chakmaccp1235Chakmaccp1236Chakmaccp1237Chakmaccp1238Chakmaccp1239Chakmaccp124Chakmaccp1240Chakmaccp1241Chakmaccp1242Chakmaccp1243Chakmaccp1244Chakmaccp1245Chakmaccp1246Chakmaccp1247Chakmaccp1248Chakmaccp1249Chakmaccp125Chakmaccp1250Chakmaccp1251Chakmaccp1252Chakmaccp1253Chakmaccp1254Chakmaccp1255Chakmaccp1256Chakmaccp1257Chakmaccp1258Chakmaccp1259Chakmaccp126Chakmaccp1260Chakmaccp1261Chakmaccp1262Chakmaccp1263Chakmaccp1264Chakmaccp1265Chakmaccp1266Chakmaccp1267Chakmaccp1268Chakmaccp1269Chakmaccp127Chakmaccp1270Chakmaccp1271Chakmaccp1272Chakmaccp1273Chakmaccp1274Chakmaccp1275Chakmaccp1276Chakmaccp1277Chakmaccp1278Chakmaccp1279Chakmaccp128Chakmaccp1280Chakmaccp1281Chakmaccp1282Chakmaccp1283Chakmaccp1284Chakmaccp1285Chakmaccp1286Chakmaccp1287Chakmaccp1288Chakmaccp1289Chakmaccp129Chakmaccp1290Chakmaccp1291Chakmaccp1292Chakmaccp1293Chakmaccp1294Chakmaccp1295Chakmaccp1296Chakmaccp1297Chakmaccp1298Chakmaccp1299Chakmaccp13Chakmaccp130Chakmaccp1300Chakmaccp1301Chakmaccp1302Chakmaccp1303Chakmaccp1304Chakmaccp1305Chakmaccp1306Chakmaccp1307Chakmaccp1308Chakmaccp1309Chakmaccp131Chakmaccp1310Chakmaccp1311Chakmaccp1312Chakmaccp1313Chakmaccp1314Chakmaccp1315Chakmaccp1316Chakmaccp1317Chakmaccp1318Chakmaccp1319Chakmaccp132Chakmaccp1320Chakmaccp1321Chakmaccp1322Chakmaccp1323Chakmaccp1324Chakmaccp1325Chakmaccp1326Chakmaccp1327Chakmaccp1328Chakmaccp1329Chakmaccp133Chakmaccp1330Chakmaccp1331Chakmaccp1332Chakmaccp1333Chakmaccp1334Chakmaccp1335Chakmaccp1336Chakmaccp1337Chakmaccp1338Chakmaccp1339Chakmaccp134Chakmaccp1340Chakmaccp1341Chakmaccp1342Chakmaccp1343Chakmaccp1344Chakmaccp1345Chakmaccp1346Chakmaccp1347Chakmaccp1348Chakmaccp1349Chakmaccp135Chakmaccp1350Chakmaccp1351Chakmaccp1352Chakmaccp1353Chakmaccp1354Chakmaccp1355Chakmaccp1356Chakmaccp1357Chakmaccp1358Chakmaccp1359Chakmaccp136Chakmaccp1360Chakmaccp1361Chakmaccp1362Chakmaccp1363Chakmaccp1364Chakmaccp1365Chakmaccp1366Chakmaccp1367Chakmaccp1368Chakmaccp1369Chakmaccp137Chakmaccp1370Chakmaccp1371Chakmaccp1372Chakmaccp1373Chakmaccp1374Chakmaccp1375Chakmaccp1376Chakmaccp1377Chakmaccp1378Chakmaccp1379Chakmaccp138Chakmaccp1380Chakmaccp1381Chakmaccp1382Chakmaccp1383Chakmaccp1384Chakmaccp1385Chakmaccp1386Chakmaccp1387Chakmaccp1388Chakmaccp1389Chakmaccp139Chakmaccp1390Chakmaccp1391Chakmaccp1392Chakmaccp1393Chakmaccp1394Chakmaccp1395Chakmaccp1396Chakmaccp1397Chakmaccp1398Chakmaccp1399Chakmaccp14Chakmaccp140Chakmaccp1400Chakmaccp1401Chakmaccp1402Chakmaccp1403Chakmaccp1404Chakmaccp1405Chakmaccp1406Chakmaccp1407Chakmaccp1408Chakmaccp1409Chakmaccp141Chakmaccp1410Chakmaccp1411Chakmaccp1412Chakmaccp1413Chakmaccp1414Chakmaccp1415Chakmaccp1416Chakmaccp1417Chakmaccp1418Chakmaccp1419Chakmaccp142Chakmaccp1420Chakmaccp1421Chakmaccp1422Chakmaccp1423Chakmaccp1424Chakmaccp1425Chakmaccp1426Chakmaccp1427Chakmaccp1428Chakmaccp1429Chakmaccp143Chakmaccp1430Chakmaccp1431Chakmaccp1432Chakmaccp1433Chakmaccp1434Chakmaccp1435Chakmaccp1436Chakmaccp1437Chakmaccp1438Chakmaccp1439Chakmaccp144Chakmaccp1440Chakmaccp1441Chakmaccp1442Chakmaccp1443Chakmaccp1444Chakmaccp1445Chakmaccp1446Chakmaccp1447Chakmaccp1448Chakmaccp1449Chakmaccp145Chakmaccp1450Chakmaccp1451Chakmaccp1452Chakmaccp1453Chakmaccp1454Chakmaccp1455Chakmaccp1456Chakmaccp1457Chakmaccp1458Chakmaccp1459Chakmaccp146Chakmaccp1460Chakmaccp1461Chakmaccp1462Chakmaccp1463Chakmaccp1464Chakmaccp1465Chakmaccp1466Chakmaccp1467Chakmaccp1468Chakmaccp1469Chakmaccp147Chakmaccp1470Chakmaccp1471Chakmaccp1472Chakmaccp1473Chakmaccp1474Chakmaccp1475Chakmaccp1476Chakmaccp1477Chakmaccp1478Chakmaccp1479Chakmaccp148Chakmaccp1480Chakmaccp1481Chakmaccp1482Chakmaccp1483Chakmaccp1484Chakmaccp1485Chakmaccp1486Chakmaccp1487Chakmaccp1488Chakmaccp1489Chakmaccp149Chakmaccp1490Chakmaccp1491Chakmaccp1492Chakmaccp1493Chakmaccp1494Chakmaccp1495Chakmaccp1496Chakmaccp1497Chakmaccp1498Chakmaccp1499Chakmaccp15Chakmaccp150Chakmaccp1500Chakmaccp1501Chakmaccp1502Chakmaccp1503Chakmaccp1504Chakmaccp1505Chakmaccp1506Chakmaccp1507Chakmaccp1508Chakmaccp1509Chakmaccp151Chakmaccp1510Chakmaccp1511Chakmaccp1512Chakmaccp1513Chakmaccp1514Chakmaccp1515Chakmaccp1516Chakmaccp1517Chakmaccp1518Chakmaccp1519Chakmaccp152Chakmaccp1520Chakmaccp1521Chakmaccp1522Chakmaccp1523Chakmaccp1524Chakmaccp1525Chakmaccp1526Chakmaccp1527Chakmaccp1528Chakmaccp1529Chakmaccp153Chakmaccp1530Chakmaccp1531Chakmaccp1532Chakmaccp1533Chakmaccp1534Chakmaccp1535Chakmaccp1536Chakmaccp1537Chakmaccp1538Chakmaccp1539Chakmaccp154Chakmaccp1540Chakmaccp1541Chakmaccp1542Chakmaccp1543Chakmaccp1544Chakmaccp1545Chakmaccp1546Chakmaccp1547Chakmaccp1548Chakmaccp1549Chakmaccp155Chakmaccp1550Chakmaccp1551Chakmaccp1552Chakmaccp1553Chakmaccp1554Chakmaccp1555Chakmaccp1556Chakmaccp1557Chakmaccp1558Chakmaccp1559Chakmaccp156Chakmaccp1560Chakmaccp1561Chakmaccp1562Chakmaccp1563Chakmaccp1564Chakmaccp1565Chakmaccp1566Chakmaccp1567Chakmaccp1568Chakmaccp1569Chakmaccp157Chakmaccp1570Chakmaccp1571Chakmaccp1572Chakmaccp1573Chakmaccp1574Chakmaccp1575Chakmaccp1576Chakmaccp1577Chakmaccp1578Chakmaccp1579Chakmaccp158Chakmaccp1580Chakmaccp1581Chakmaccp1582Chakmaccp1583Chakmaccp1584Chakmaccp1585Chakmaccp1586Chakmaccp1587Chakmaccp1588Chakmaccp1589Chakmaccp159Chakmaccp1590Chakmaccp1591Chakmaccp1592Chakmaccp1593Chakmaccp1594Chakmaccp1595Chakmaccp1596Chakmaccp1597Chakmaccp1598Chakmaccp1599Chakmaccp16Chakmaccp160Chakmaccp1600Chakmaccp1601Chakmaccp1602Chakmaccp1603Chakmaccp1604Chakmaccp1605Chakmaccp1606Chakmaccp1607Chakmaccp1608Chakmaccp1609Chakmaccp161Chakmaccp1610Chakmaccp1611Chakmaccp1612Chakmaccp1613Chakmaccp1614Chakmaccp1615Chakmaccp1616Chakmaccp1617Chakmaccp1618Chakmaccp1619Chakmaccp162Chakmaccp1620Chakmaccp1621Chakmaccp1622Chakmaccp1623Chakmaccp1624Chakmaccp1625Chakmaccp1626Chakmaccp1627Chakmaccp1628Chakmaccp1629Chakmaccp163Chakmaccp1630Chakmaccp1631Chakmaccp1632Chakmaccp1633Chakmaccp1634Chakmaccp1635Chakmaccp1636Chakmaccp1637Chakmaccp1638Chakmaccp1639Chakmaccp164Chakmaccp1640Chakmaccp1641Chakmaccp1642Chakmaccp1643Chakmaccp1644Chakmaccp1645Chakmaccp1646Chakmaccp1647Chakmaccp1648Chakmaccp1649Chakmaccp165Chakmaccp1650Chakmaccp1651Chakmaccp1652Chakmaccp1653Chakmaccp1654Chakmaccp1655Chakmaccp1656Chakmaccp1657Chakmaccp1658Chakmaccp1659Chakmaccp166Chakmaccp1660Chakmaccp1661Chakmaccp1662Chakmaccp1663Chakmaccp1664Chakmaccp1665Chakmaccp1666Chakmaccp1667Chakmaccp1668Chakmaccp1669Chakmaccp167Chakmaccp1670Chakmaccp1671Chakmaccp1672Chakmaccp1673Chakmaccp1674Chakmaccp1675Chakmaccp1676Chakmaccp1677Chakmaccp1678Chakmaccp1679Chakmaccp168Chakmaccp1680Chakmaccp1681Chakmaccp1682Chakmaccp1683Chakmaccp1684Chakmaccp1685Chakmaccp1686Chakmaccp1687Chakmaccp1688Chakmaccp1689Chakmaccp169Chakmaccp1690Chakmaccp1691Chakmaccp1692Chakmaccp1693Chakmaccp1694Chakmaccp1695Chakmaccp1696Chakmaccp1697Chakmaccp1698Chakmaccp1699Chakmaccp17Chakmaccp170Chakmaccp1700Chakmaccp1701Chakmaccp1702Chakmaccp1703Chakmaccp1704Chakmaccp1705Chakmaccp1706Chakmaccp1707Chakmaccp1708Chakmaccp1709Chakmaccp171Chakmaccp1710Chakmaccp1711Chakmaccp1712Chakmaccp1713Chakmaccp1714Chakmaccp1715Chakmaccp1716Chakmaccp1717Chakmaccp1718Chakmaccp1719Chakmaccp172Chakmaccp1720Chakmaccp1721Chakmaccp1722Chakmaccp1723Chakmaccp1724Chakmaccp1725Chakmaccp1726Chakmaccp1727Chakmaccp1728Chakmaccp1729Chakmaccp173Chakmaccp1730Chakmaccp1731Chakmaccp1732Chakmaccp1733Chakmaccp1734Chakmaccp1735Chakmaccp1736Chakmaccp1737Chakmaccp1738Chakmaccp1739Chakmaccp174Chakmaccp1740Chakmaccp1741Chakmaccp1742Chakmaccp1743Chakmaccp1744Chakmaccp1745Chakmaccp1746Chakmaccp1747Chakmaccp1748Chakmaccp1749Chakmaccp175Chakmaccp1750Chakmaccp1751Chakmaccp1752Chakmaccp1753Chakmaccp1754Chakmaccp1755Chakmaccp1756Chakmaccp1757Chakmaccp1758Chakmaccp1759Chakmaccp176Chakmaccp1760Chakmaccp1761Chakmaccp1762Chakmaccp1763Chakmaccp1764Chakmaccp1765Chakmaccp1766Chakmaccp1767Chakmaccp1768Chakmaccp1769Chakmaccp177Chakmaccp1770Chakmaccp1771Chakmaccp1772Chakmaccp1773Chakmaccp1774Chakmaccp1775Chakmaccp1776Chakmaccp1777Chakmaccp1778Chakmaccp1779Chakmaccp178Chakmaccp1780Chakmaccp1781Chakmaccp1782Chakmaccp1783Chakmaccp1784Chakmaccp1785Chakmaccp1786Chakmaccp1787Chakmaccp1788Chakmaccp1789Chakmaccp179Chakmaccp1790Chakmaccp1791Chakmaccp1792Chakmaccp1793Chakmaccp1794Chakmaccp1795Chakmaccp1796Chakmaccp1797Chakmaccp1798Chakmaccp1799Chakmaccp18Chakmaccp180Chakmaccp1800Chakmaccp1801Chakmaccp1802Chakmaccp1803Chakmaccp1804Chakmaccp1805Chakmaccp1806Chakmaccp1807Chakmaccp1808Chakmaccp1809Chakmaccp181Chakmaccp1810Chakmaccp1811Chakmaccp1812Chakmaccp1813Chakmaccp1814Chakmaccp1815Chakmaccp1816Chakmaccp1817Chakmaccp1818Chakmaccp1819Chakmaccp182Chakmaccp1820Chakmaccp1821Chakmaccp1822Chakmaccp1823Chakmaccp1824Chakmaccp1825Chakmaccp1826Chakmaccp1827Chakmaccp1828Chakmaccp1829Chakmaccp183Chakmaccp1830Chakmaccp1831Chakmaccp1832Chakmaccp1833Chakmaccp1834Chakmaccp1835Chakmaccp1836Chakmaccp1837Chakmaccp1838Chakmaccp1839Chakmaccp184Chakmaccp1840Chakmaccp1841Chakmaccp1842Chakmaccp1843Chakmaccp1844Chakmaccp1845Chakmaccp1846Chakmaccp1847Chakmaccp1848Chakmaccp1849Chakmaccp185Chakmaccp1850Chakmaccp1851Chakmaccp1852Chakmaccp1853Chakmaccp1854Chakmaccp1855Chakmaccp1856Chakmaccp1857Chakmaccp1858Chakmaccp1859Chakmaccp186Chakmaccp1860Chakmaccp1861Chakmaccp1862Chakmaccp1863Chakmaccp1864Chakmaccp1865Chakmaccp1866Chakmaccp1867Chakmaccp1868Chakmaccp1869Chakmaccp187Chakmaccp1870Chakmaccp1871Chakmaccp1872Chakmaccp1873Chakmaccp1874Chakmaccp1875Chakmaccp1876Chakmaccp1877Chakmaccp1878Chakmaccp1879Chakmaccp188Chakmaccp1880Chakmaccp1881Chakmaccp1882Chakmaccp1883Chakmaccp1884Chakmaccp1885Chakmaccp1886Chakmaccp1887Chakmaccp1888Chakmaccp1889Chakmaccp189Chakmaccp1890Chakmaccp1891Chakmaccp1892Chakmaccp1893Chakmaccp1894Chakmaccp1895Chakmaccp1896Chakmaccp1897Chakmaccp1898Chakmaccp1899Chakmaccp19Chakmaccp190Chakmaccp1900Chakmaccp1901Chakmaccp1902Chakmaccp1903Chakmaccp1904Chakmaccp1905Chakmaccp1906Chakmaccp1907Chakmaccp1908Chakmaccp1909Chakmaccp191Chakmaccp1910Chakmaccp1911Chakmaccp1912Chakmaccp1913Chakmaccp1914Chakmaccp1915Chakmaccp1916Chakmaccp1917Chakmaccp1918Chakmaccp1919Chakmaccp192Chakmaccp1920Chakmaccp1921Chakmaccp1922Chakmaccp1923Chakmaccp1924Chakmaccp1925Chakmaccp1926Chakmaccp1927Chakmaccp1928Chakmaccp1929Chakmaccp193Chakmaccp1930Chakmaccp1931Chakmaccp1932Chakmaccp1933Chakmaccp1934Chakmaccp1935Chakmaccp1936Chakmaccp1937Chakmaccp1938Chakmaccp1939Chakmaccp194Chakmaccp1940Chakmaccp1941Chakmaccp1942Chakmaccp1943Chakmaccp1944Chakmaccp1945Chakmaccp1946Chakmaccp1947Chakmaccp1948Chakmaccp1949Chakmaccp195Chakmaccp1950Chakmaccp1951Chakmaccp1952Chakmaccp1953Chakmaccp1954Chakmaccp1955Chakmaccp1956Chakmaccp1957Chakmaccp1958Chakmaccp1959Chakmaccp196Chakmaccp1960Chakmaccp1961Chakmaccp1962Chakmaccp1963Chakmaccp1964Chakmaccp1965Chakmaccp1966Chakmaccp1967Chakmaccp1968Chakmaccp1969Chakmaccp197Chakmaccp1970Chakmaccp1971Chakmaccp1972Chakmaccp1973Chakmaccp1974Chakmaccp1975Chakmaccp1976Chakmaccp1977Chakmaccp1978Chakmaccp1979Chakmaccp198Chakmaccp1980Chakmaccp1981Chakmaccp1982Chakmaccp1983Chakmaccp1984Chakmaccp1985Chakmaccp1986Chakmaccp1987Chakmaccp1988Chakmaccp1989Chakmaccp199Chakmaccp1990Chakmaccp1991Chakmaccp1992Chakmaccp1993Chakmaccp1994Chakmaccp1995Chakmaccp1996Chakmaccp1997Chakmaccp1998Chakmaccp1999Chakmaccp2Chakmaccp20Chakmaccp200Chakmaccp2000Chakmaccp2001Chakmaccp2002Chakmaccp2003Chakmaccp2004Chakmaccp2005Chakmaccp2006Chakmaccp2007Chakmaccp2008Chakmaccp2009Chakmaccp201Chakmaccp2010Chakmaccp2011Chakmaccp2012Chakmaccp2013Chakmaccp2014Chakmaccp2015Chakmaccp2016Chakmaccp2017Chakmaccp2018Chakmaccp2019Chakmaccp202Chakmaccp2020Chakmaccp2021Chakmaccp2022Chakmaccp2023Chakmaccp2024Chakmaccp2025Chakmaccp2026Chakmaccp2027Chakmaccp2028Chakmaccp2029Chakmaccp203Chakmaccp2030Chakmaccp2031Chakmaccp2032Chakmaccp2033Chakmaccp2034Chakmaccp2035Chakmaccp2036Chakmaccp2037Chakmaccp2038Chakmaccp2039Chakmaccp204Chakmaccp2040Chakmaccp2041Chakmaccp2042Chakmaccp2043Chakmaccp2044Chakmaccp2045Chakmaccp2046Chakmaccp2047Chakmaccp2048Chakmaccp2049Chakmaccp205Chakmaccp2050Chakmaccp2051Chakmaccp2052Chakmaccp2053Chakmaccp2054Chakmaccp2055Chakmaccp2056Chakmaccp2057Chakmaccp2058Chakmaccp2059Chakmaccp206Chakmaccp2060Chakmaccp2061Chakmaccp2062Chakmaccp2063Chakmaccp2064Chakmaccp2065Chakmaccp2066Chakmaccp2067Chakmaccp2068Chakmaccp2069Chakmaccp207Chakmaccp2070Chakmaccp2071Chakmaccp2072Chakmaccp2073Chakmaccp2074Chakmaccp2075Chakmaccp2076Chakmaccp2077Chakmaccp2078Chakmaccp2079Chakmaccp208Chakmaccp2080Chakmaccp2081Chakmaccp2082Chakmaccp2083Chakmaccp2084Chakmaccp2085Chakmaccp2086Chakmaccp2087Chakmaccp2088Chakmaccp2089Chakmaccp209Chakmaccp2090Chakmaccp2091Chakmaccp2092Chakmaccp2093Chakmaccp2094Chakmaccp2095Chakmaccp2096Chakmaccp2097Chakmaccp2098Chakmaccp2099Chakmaccp21Chakmaccp210Chakmaccp2100Chakmaccp2101Chakmaccp2102Chakmaccp2103Chakmaccp2104Chakmaccp2105Chakmaccp2106Chakmaccp2107Chakmaccp2108Chakmaccp2109Chakmaccp211Chakmaccp2110Chakmaccp2111Chakmaccp2112Chakmaccp2113Chakmaccp2114Chakmaccp2115Chakmaccp2116Chakmaccp2117Chakmaccp2118Chakmaccp2119Chakmaccp212Chakmaccp2120Chakmaccp2121Chakmaccp2122Chakmaccp2123Chakmaccp2124Chakmaccp2125Chakmaccp2126Chakmaccp2127Chakmaccp2128Chakmaccp2129Chakmaccp213Chakmaccp2130Chakmaccp2131Chakmaccp2132Chakmaccp2133Chakmaccp2134Chakmaccp2135Chakmaccp2136Chakmaccp2137Chakmaccp2138Chakmaccp2139Chakmaccp214Chakmaccp2140Chakmaccp2141Chakmaccp2142Chakmaccp2143Chakmaccp2144Chakmaccp2145Chakmaccp2146Chakmaccp2147Chakmaccp2148Chakmaccp2149Chakmaccp215Chakmaccp2150Chakmaccp2151Chakmaccp2152Chakmaccp2153Chakmaccp2154Chakmaccp2155Chakmaccp2156Chakmaccp2157Chakmaccp2158Chakmaccp2159Chakmaccp216Chakmaccp2160Chakmaccp2161Chakmaccp2162Chakmaccp2163Chakmaccp2164Chakmaccp2165Chakmaccp2166Chakmaccp2167Chakmaccp2168Chakmaccp2169Chakmaccp217Chakmaccp2170Chakmaccp2171Chakmaccp2172Chakmaccp2173Chakmaccp2174Chakmaccp2175Chakmaccp2176Chakmaccp2177Chakmaccp2178Chakmaccp2179Chakmaccp218Chakmaccp2180Chakmaccp2181Chakmaccp2182Chakmaccp2183Chakmaccp2184Chakmaccp2185Chakmaccp2186Chakmaccp2187Chakmaccp2188Chakmaccp2189Chakmaccp219Chakmaccp2190Chakmaccp2191Chakmaccp2192Chakmaccp2193Chakmaccp2194Chakmaccp2195Chakmaccp2196Chakmaccp2197Chakmaccp2198Chakmaccp2199Chakmaccp22Chakmaccp220Chakmaccp2200Chakmaccp2201Chakmaccp2202Chakmaccp2203Chakmaccp2204Chakmaccp2205Chakmaccp2206Chakmaccp2207Chakmaccp2208Chakmaccp2209Chakmaccp221Chakmaccp2210Chakmaccp2211Chakmaccp2212Chakmaccp2213Chakmaccp2214Chakmaccp2215Chakmaccp2216Chakmaccp2217Chakmaccp2218Chakmaccp2219Chakmaccp222Chakmaccp2220Chakmaccp2221Chakmaccp2222Chakmaccp2223Chakmaccp2224Chakmaccp2225Chakmaccp2226Chakmaccp2227Chakmaccp2228Chakmaccp2229Chakmaccp223Chakmaccp2230Chakmaccp2231Chakmaccp2232Chakmaccp2233Chakmaccp2234Chakmaccp2235Chakmaccp2236Chakmaccp2237Chakmaccp2238Chakmaccp2239Chakmaccp224Chakmaccp2240Chakmaccp2241Chakmaccp2242Chakmaccp2243Chakmaccp2244Chakmaccp2245Chakmaccp2246Chakmaccp2247Chakmaccp2248Chakmaccp2249Chakmaccp225Chakmaccp2250Chakmaccp2251Chakmaccp2252Chakmaccp2253Chakmaccp2254Chakmaccp2255Chakmaccp2256Chakmaccp2257Chakmaccp2258Chakmaccp2259Chakmaccp226Chakmaccp2260Chakmaccp2261Chakmaccp2262Chakmaccp2263Chakmaccp2264Chakmaccp2265Chakmaccp2266Chakmaccp2267Chakmaccp2268Chakmaccp2269Chakmaccp227Chakmaccp2270Chakmaccp2271Chakmaccp2272Chakmaccp2273Chakmaccp2274Chakmaccp2275Chakmaccp2276Chakmaccp2277Chakmaccp2278Chakmaccp2279Chakmaccp228Chakmaccp2280Chakmaccp2281Chakmaccp2282Chakmaccp2283Chakmaccp2284Chakmaccp2285Chakmaccp2286Chakmaccp2287Chakmaccp2288Chakmaccp2289Chakmaccp229Chakmaccp2290Chakmaccp2291Chakmaccp2292Chakmaccp2293Chakmaccp2294Chakmaccp2295Chakmaccp2296Chakmaccp2297Chakmaccp2298Chakmaccp2299Chakmaccp23Chakmaccp230Chakmaccp2300Chakmaccp2301Chakmaccp2302Chakmaccp2303Chakmaccp2304Chakmaccp2305Chakmaccp2306Chakmaccp2307Chakmaccp2308Chakmaccp2309Chakmaccp231Chakmaccp2310Chakmaccp2311Chakmaccp2312Chakmaccp2313Chakmaccp2314Chakmaccp2315Chakmaccp2316Chakmaccp2317Chakmaccp2318Chakmaccp2319Chakmaccp232Chakmaccp2320Chakmaccp2321Chakmaccp2322Chakmaccp2323Chakmaccp2324Chakmaccp2325Chakmaccp2326Chakmaccp2327Chakmaccp2328Chakmaccp2329Chakmaccp233Chakmaccp2330Chakmaccp2331Chakmaccp2332Chakmaccp2333Chakmaccp2334Chakmaccp2335Chakmaccp2336Chakmaccp2337Chakmaccp2338Chakmaccp2339Chakmaccp234Chakmaccp2340Chakmaccp2341Chakmaccp2342Chakmaccp2343Chakmaccp2344Chakmaccp2345Chakmaccp2346Chakmaccp2347Chakmaccp2348Chakmaccp2349Chakmaccp235Chakmaccp2350Chakmaccp2351Chakmaccp2352Chakmaccp2353Chakmaccp2354Chakmaccp2355Chakmaccp2356Chakmaccp2357Chakmaccp2358Chakmaccp2359Chakmaccp236Chakmaccp2360Chakmaccp2361Chakmaccp2362Chakmaccp2363Chakmaccp2364Chakmaccp2365Chakmaccp2366Chakmaccp2367Chakmaccp2368Chakmaccp2369Chakmaccp237Chakmaccp2370Chakmaccp2371Chakmaccp2372Chakmaccp2373Chakmaccp2374Chakmaccp2375Chakmaccp2376Chakmaccp2377Chakmaccp2378Chakmaccp2379Chakmaccp238Chakmaccp2380Chakmaccp2381Chakmaccp2382Chakmaccp2383Chakmaccp2384Chakmaccp2385Chakmaccp2386Chakmaccp2387Chakmaccp2388Chakmaccp2389Chakmaccp239Chakmaccp2390Chakmaccp2391Chakmaccp2392Chakmaccp2393Chakmaccp2394Chakmaccp2395Chakmaccp2396Chakmaccp2397Chakmaccp2398Chakmaccp2399Chakmaccp24Chakmaccp240Chakmaccp2400Chakmaccp2401Chakmaccp2402Chakmaccp2403Chakmaccp2404Chakmaccp2405Chakmaccp2406Chakmaccp2407Chakmaccp2408Chakmaccp2409Chakmaccp241Chakmaccp2410Chakmaccp2411Chakmaccp2412Chakmaccp2413Chakmaccp2414Chakmaccp2415Chakmaccp2416Chakmaccp2417Chakmaccp2418Chakmaccp2419Chakmaccp242Chakmaccp2420Chakmaccp2421Chakmaccp2422Chakmaccp2423Chakmaccp2424Chakmaccp2425Chakmaccp2426Chakmaccp2427Chakmaccp2428Chakmaccp2429Chakmaccp243Chakmaccp2430Chakmaccp2431Chakmaccp2432Chakmaccp2433Chakmaccp2434Chakmaccp2435Chakmaccp2436Chakmaccp2437Chakmaccp2438Chakmaccp2439Chakmaccp244Chakmaccp2440Chakmaccp2441Chakmaccp2442Chakmaccp2443Chakmaccp2444Chakmaccp2445Chakmaccp2446Chakmaccp2447Chakmaccp2448Chakmaccp2449Chakmaccp245Chakmaccp2450Chakmaccp2451Chakmaccp2452Chakmaccp2453Chakmaccp2454Chakmaccp2455Chakmaccp2456Chakmaccp2457Chakmaccp2458Chakmaccp2459Chakmaccp246Chakmaccp2460Chakmaccp2461Chakmaccp2462Chakmaccp2463Chakmaccp2464Chakmaccp2465Chakmaccp2466Chakmaccp2467Chakmaccp2468Chakmaccp2469Chakmaccp247Chakmaccp2470Chakmaccp2471Chakmaccp2472Chakmaccp2473Chakmaccp2474Chakmaccp2475Chakmaccp2476Chakmaccp2477Chakmaccp2478Chakmaccp2479Chakmaccp248Chakmaccp2480Chakmaccp2481Chakmaccp2482Chakmaccp2483Chakmaccp2484Chakmaccp2485Chakmaccp2486Chakmaccp2487Chakmaccp2488Chakmaccp2489Chakmaccp249Chakmaccp2490Chakmaccp2491Chakmaccp2492Chakmaccp2493Chakmaccp2494Chakmaccp2495Chakmaccp2496Chakmaccp2497Chakmaccp2498Chakmaccp2499Chakmaccp25Chakmaccp250Chakmaccp2500Chakmaccp2501Chakmaccp2502Chakmaccp2503Chakmaccp2504Chakmaccp2505Chakmaccp2506Chakmaccp2507Chakmaccp2508Chakmaccp2509Chakmaccp251Chakmaccp2510Chakmaccp2511Chakmaccp2512Chakmaccp2513Chakmaccp2514Chakmaccp2515Chakmaccp2516Chakmaccp2517Chakmaccp2518Chakmaccp2519Chakmaccp252Chakmaccp2520Chakmaccp2521Chakmaccp2522Chakmaccp2523Chakmaccp2524Chakmaccp2525Chakmaccp2526Chakmaccp2527Chakmaccp2528Chakmaccp2529Chakmaccp253Chakmaccp2530Chakmaccp2531Chakmaccp2532Chakmaccp2533Chakmaccp2534Chakmaccp2535Chakmaccp2536Chakmaccp2537Chakmaccp2538Chakmaccp2539Chakmaccp254Chakmaccp2540Chakmaccp2541Chakmaccp2542Chakmaccp2543Chakmaccp2544Chakmaccp2545Chakmaccp2546Chakmaccp2547Chakmaccp2548Chakmaccp2549Chakmaccp255Chakmaccp2550Chakmaccp2551Chakmaccp2552Chakmaccp2553Chakmaccp2554Chakmaccp2555Chakmaccp2556Chakmaccp2557Chakmaccp2558Chakmaccp2559Chakmaccp256Chakmaccp2560Chakmaccp2561Chakmaccp2562Chakmaccp2563Chakmaccp2564Chakmaccp2565Chakmaccp2566Chakmaccp2567Chakmaccp2568Chakmaccp2569Chakmaccp257Chakmaccp2570Chakmaccp2571Chakmaccp2572Chakmaccp2573Chakmaccp2574Chakmaccp2575Chakmaccp2576Chakmaccp2577Chakmaccp2578Chakmaccp2579Chakmaccp258Chakmaccp2580Chakmaccp2581Chakmaccp2582Chakmaccp2583Chakmaccp2584Chakmaccp2585Chakmaccp2586Chakmaccp2587Chakmaccp2588Chakmaccp2589Chakmaccp259Chakmaccp2590Chakmaccp2591Chakmaccp2592Chakmaccp2593Chakmaccp2594Chakmaccp2595Chakmaccp2596Chakmaccp2597Chakmaccp2598Chakmaccp2599Chakmaccp26Chakmaccp260Chakmaccp2600Chakmaccp2601Chakmaccp2602Chakmaccp2603Chakmaccp2604Chakmaccp2605Chakmaccp2606Chakmaccp2607Chakmaccp2608Chakmaccp2609Chakmaccp261Chakmaccp2610Chakmaccp2611Chakmaccp2612Chakmaccp2613Chakmaccp2614Chakmaccp2615Chakmaccp2616Chakmaccp2617Chakmaccp2618Chakmaccp2619Chakmaccp262Chakmaccp2620Chakmaccp2621Chakmaccp2622Chakmaccp2623Chakmaccp2624Chakmaccp2625Chakmaccp2626Chakmaccp2627Chakmaccp2628Chakmaccp2629Chakmaccp263Chakmaccp2630Chakmaccp2631Chakmaccp2632Chakmaccp2633Chakmaccp2634Chakmaccp2635Chakmaccp2636Chakmaccp2637Chakmaccp2638Chakmaccp2639Chakmaccp264Chakmaccp2640Chakmaccp2641Chakmaccp2642Chakmaccp2643Chakmaccp2644Chakmaccp2645Chakmaccp2646Chakmaccp2647Chakmaccp2648Chakmaccp2649Chakmaccp265Chakmaccp2650Chakmaccp2651Chakmaccp2652Chakmaccp2653Chakmaccp2654Chakmaccp2655Chakmaccp2656Chakmaccp2657Chakmaccp2658Chakmaccp2659Chakmaccp266Chakmaccp2660Chakmaccp2661Chakmaccp2662Chakmaccp2663Chakmaccp2664Chakmaccp2665Chakmaccp2666Chakmaccp2667Chakmaccp2668Chakmaccp2669Chakmaccp267Chakmaccp2670Chakmaccp2671Chakmaccp2672Chakmaccp2673Chakmaccp2674Chakmaccp2675Chakmaccp2676Chakmaccp2677Chakmaccp2678Chakmaccp2679Chakmaccp268Chakmaccp2680Chakmaccp2681Chakmaccp2682Chakmaccp2683Chakmaccp2684Chakmaccp2685Chakmaccp2686Chakmaccp2687Chakmaccp2688Chakmaccp2689Chakmaccp269Chakmaccp2690Chakmaccp2691Chakmaccp2692Chakmaccp2693Chakmaccp2694Chakmaccp2695Chakmaccp2696Chakmaccp2697Chakmaccp2698Chakmaccp2699Chakmaccp27Chakmaccp270Chakmaccp2700Chakmaccp2701Chakmaccp2702Chakmaccp2703Chakmaccp2704Chakmaccp2705Chakmaccp2706Chakmaccp2707Chakmaccp2708Chakmaccp2709Chakmaccp271Chakmaccp2710Chakmaccp2711Chakmaccp2712Chakmaccp2713Chakmaccp2714Chakmaccp2715Chakmaccp2716Chakmaccp2717Chakmaccp2718Chakmaccp2719Chakmaccp272Chakmaccp2720Chakmaccp2721Chakmaccp2722Chakmaccp2723Chakmaccp2724Chakmaccp2725Chakmaccp2726Chakmaccp2727Chakmaccp2728Chakmaccp2729Chakmaccp273Chakmaccp2730Chakmaccp2731Chakmaccp2732Chakmaccp2733Chakmaccp2734Chakmaccp2735Chakmaccp2736Chakmaccp2737Chakmaccp2738Chakmaccp2739Chakmaccp274Chakmaccp2740Chakmaccp2741Chakmaccp2742Chakmaccp2743Chakmaccp2744Chakmaccp2745Chakmaccp2746Chakmaccp2747Chakmaccp2748Chakmaccp2749Chakmaccp275Chakmaccp2750Chakmaccp2751Chakmaccp2752Chakmaccp2753Chakmaccp2754Chakmaccp2755Chakmaccp2756Chakmaccp2757Chakmaccp2758Chakmaccp2759Chakmaccp276Chakmaccp2760Chakmaccp2761Chakmaccp2762Chakmaccp2763Chakmaccp2764Chakmaccp2765Chakmaccp2766Chakmaccp2767Chakmaccp2768Chakmaccp2769Chakmaccp277Chakmaccp2770Chakmaccp2771Chakmaccp2772Chakmaccp2773Chakmaccp2774Chakmaccp2775Chakmaccp2776Chakmaccp2777Chakmaccp2778Chakmaccp2779Chakmaccp278Chakmaccp2780Chakmaccp2781Chakmaccp2782Chakmaccp2783Chakmaccp2784Chakmaccp2785Chakmaccp2786Chakmaccp2787Chakmaccp2788Chakmaccp2789Chakmaccp279Chakmaccp2790Chakmaccp2791Chakmaccp2792Chakmaccp2793Chakmaccp2794Chakmaccp2795Chakmaccp2796Chakmaccp2797Chakmaccp2798Chakmaccp2799Chakmaccp28Chakmaccp280Chakmaccp2800Chakmaccp2801Chakmaccp2802Chakmaccp2803Chakmaccp2804Chakmaccp2805Chakmaccp2806Chakmaccp2807Chakmaccp2808Chakmaccp2809Chakmaccp281Chakmaccp2810Chakmaccp2811Chakmaccp2812Chakmaccp2813Chakmaccp2814Chakmaccp2815Chakmaccp2816Chakmaccp2817Chakmaccp2818Chakmaccp2819Chakmaccp282Chakmaccp2820Chakmaccp2821Chakmaccp2822Chakmaccp2823Chakmaccp2824Chakmaccp2825Chakmaccp2826Chakmaccp2827Chakmaccp2828Chakmaccp2829Chakmaccp283Chakmaccp2830Chakmaccp2831Chakmaccp2832Chakmaccp2833Chakmaccp2834Chakmaccp2835Chakmaccp2836Chakmaccp2837Chakmaccp2838Chakmaccp2839Chakmaccp284Chakmaccp2840Chakmaccp2841Chakmaccp2842Chakmaccp2843Chakmaccp2844Chakmaccp2845Chakmaccp2846Chakmaccp2847Chakmaccp2848Chakmaccp2849Chakmaccp285Chakmaccp2850Chakmaccp2851Chakmaccp2852Chakmaccp2853Chakmaccp2854Chakmaccp2855Chakmaccp2856Chakmaccp2857Chakmaccp2858Chakmaccp2859Chakmaccp286Chakmaccp2860Chakmaccp2861Chakmaccp2862Chakmaccp2863Chakmaccp2864Chakmaccp2865Chakmaccp2866Chakmaccp2867Chakmaccp2868Chakmaccp2869Chakmaccp287Chakmaccp2870Chakmaccp2871Chakmaccp2872Chakmaccp2873Chakmaccp2874Chakmaccp2875Chakmaccp2876Chakmaccp2877Chakmaccp2878Chakmaccp2879Chakmaccp288Chakmaccp2880Chakmaccp2881Chakmaccp2882Chakmaccp2883Chakmaccp2884Chakmaccp2885Chakmaccp2886Chakmaccp2887Chakmaccp2888Chakmaccp2889Chakmaccp289Chakmaccp2890Chakmaccp2891Chakmaccp2892Chakmaccp2893Chakmaccp2894Chakmaccp2895Chakmaccp2896Chakmaccp2897Chakmaccp2898Chakmaccp2899Chakmaccp29Chakmaccp290Chakmaccp2900Chakmaccp2901Chakmaccp2902Chakmaccp2903Chakmaccp2904Chakmaccp2905Chakmaccp2906Chakmaccp2907Chakmaccp2908Chakmaccp2909Chakmaccp291Chakmaccp2910Chakmaccp2911Chakmaccp2912Chakmaccp2913Chakmaccp2914Chakmaccp2915Chakmaccp2916Chakmaccp2917Chakmaccp2918Chakmaccp2919Chakmaccp292Chakmaccp2920Chakmaccp2921Chakmaccp2922Chakmaccp2923Chakmaccp2924Chakmaccp2925Chakmaccp2926Chakmaccp2927Chakmaccp2928Chakmaccp2929Chakmaccp293Chakmaccp2930Chakmaccp2931Chakmaccp2932Chakmaccp2933Chakmaccp2934Chakmaccp2935Chakmaccp2936Chakmaccp2937Chakmaccp2938Chakmaccp2939Chakmaccp294Chakmaccp2940Chakmaccp2941Chakmaccp2942Chakmaccp2943Chakmaccp2944Chakmaccp2945Chakmaccp2946Chakmaccp2947Chakmaccp2948Chakmaccp2949Chakmaccp295Chakmaccp2950Chakmaccp2951Chakmaccp2952Chakmaccp2953Chakmaccp2954Chakmaccp2955Chakmaccp2956Chakmaccp2957Chakmaccp2958Chakmaccp2959Chakmaccp296Chakmaccp2960Chakmaccp2961Chakmaccp2962Chakmaccp2963Chakmaccp2964Chakmaccp2965Chakmaccp2966Chakmaccp2967Chakmaccp2968Chakmaccp2969Chakmaccp297Chakmaccp2970Chakmaccp2971Chakmaccp2972Chakmaccp2973Chakmaccp2974Chakmaccp2975Chakmaccp2976Chakmaccp2977Chakmaccp2978Chakmaccp2979Chakmaccp298Chakmaccp2980Chakmaccp2981Chakmaccp2982Chakmaccp2983Chakmaccp2984Chakmaccp2985Chakmaccp2986Chakmaccp2987Chakmaccp2988Chakmaccp2989Chakmaccp299Chakmaccp2990Chakmaccp2991Chakmaccp2992Chakmaccp2993Chakmaccp2994Chakmaccp2995Chakmaccp2996Chakmaccp2997Chakmaccp2998Chakmaccp2999Chakmaccp3Chakmaccp30Chakmaccp300Chakmaccp3000Chakmaccp3001Chakmaccp3002Chakmaccp3003Chakmaccp3004Chakmaccp3005Chakmaccp3006Chakmaccp3007Chakmaccp3008Chakmaccp3009Chakmaccp301Chakmaccp3010Chakmaccp3011Chakmaccp3012Chakmaccp3013Chakmaccp3014Chakmaccp3015Chakmaccp3016Chakmaccp3017Chakmaccp3018Chakmaccp3019Chakmaccp302Chakmaccp3020Chakmaccp3021Chakmaccp3022Chakmaccp3023Chakmaccp3024Chakmaccp3025Chakmaccp3026Chakmaccp3027Chakmaccp3028Chakmaccp3029Chakmaccp303Chakmaccp3030Chakmaccp3031Chakmaccp3032Chakmaccp3033Chakmaccp3034Chakmaccp3035Chakmaccp3036Chakmaccp3037Chakmaccp3038Chakmaccp3039Chakmaccp304Chakmaccp3040Chakmaccp3041Chakmaccp3042Chakmaccp3043Chakmaccp3044Chakmaccp3045Chakmaccp3046Chakmaccp3047Chakmaccp3048Chakmaccp3049Chakmaccp305Chakmaccp3050Chakmaccp3051Chakmaccp3052Chakmaccp3053Chakmaccp3054Chakmaccp3055Chakmaccp3056Chakmaccp3057Chakmaccp3058Chakmaccp3059Chakmaccp306Chakmaccp3060Chakmaccp3061Chakmaccp3062Chakmaccp3063Chakmaccp3064Chakmaccp3065Chakmaccp3066Chakmaccp3067Chakmaccp3068Chakmaccp3069Chakmaccp307Chakmaccp3070Chakmaccp3071Chakmaccp3072Chakmaccp3073Chakmaccp3074Chakmaccp3075Chakmaccp3076Chakmaccp3077Chakmaccp3078Chakmaccp3079Chakmaccp308Chakmaccp3080Chakmaccp3081Chakmaccp3082Chakmaccp3083Chakmaccp3084Chakmaccp3085Chakmaccp3086Chakmaccp3087Chakmaccp3088Chakmaccp3089Chakmaccp309Chakmaccp3090Chakmaccp3091Chakmaccp3092Chakmaccp3093Chakmaccp3094Chakmaccp3095Chakmaccp3096Chakmaccp3097Chakmaccp3098Chakmaccp3099Chakmaccp31Chakmaccp310Chakmaccp3100Chakmaccp3101Chakmaccp3102Chakmaccp3103Chakmaccp3104Chakmaccp3105Chakmaccp3106Chakmaccp3107Chakmaccp3108Chakmaccp3109Chakmaccp311Chakmaccp3110Chakmaccp3111Chakmaccp3112Chakmaccp3113Chakmaccp3114Chakmaccp3115Chakmaccp3116Chakmaccp3117Chakmaccp3118Chakmaccp3119Chakmaccp312Chakmaccp3120Chakmaccp3121Chakmaccp3122Chakmaccp3123Chakmaccp3124Chakmaccp3125Chakmaccp3126Chakmaccp3127Chakmaccp3128Chakmaccp3129Chakmaccp313Chakmaccp3130Chakmaccp3131Chakmaccp3132Chakmaccp3133Chakmaccp3134Chakmaccp3135Chakmaccp3136Chakmaccp3137Chakmaccp3138Chakmaccp3139Chakmaccp314Chakmaccp3140Chakmaccp3141Chakmaccp3142Chakmaccp3143Chakmaccp3144Chakmaccp3145Chakmaccp3146Chakmaccp3147Chakmaccp3148Chakmaccp3149Chakmaccp315Chakmaccp3150Chakmaccp3151Chakmaccp3152Chakmaccp3153Chakmaccp3154Chakmaccp3155Chakmaccp3156Chakmaccp3157Chakmaccp3158Chakmaccp3159Chakmaccp316Chakmaccp3160Chakmaccp3161Chakmaccp3162Chakmaccp3163Chakmaccp3164Chakmaccp3165Chakmaccp3166Chakmaccp3167Chakmaccp3168Chakmaccp3169Chakmaccp317Chakmaccp3170Chakmaccp3171Chakmaccp3172Chakmaccp3173Chakmaccp3174Chakmaccp3175Chakmaccp3176Chakmaccp3177Chakmaccp3178Chakmaccp3179Chakmaccp318Chakmaccp3180Chakmaccp3181Chakmaccp3182Chakmaccp3183Chakmaccp3184Chakmaccp3185Chakmaccp3186Chakmaccp3187Chakmaccp3188Chakmaccp3189Chakmaccp319Chakmaccp3190Chakmaccp3191Chakmaccp3192Chakmaccp3193Chakmaccp3194Chakmaccp3195Chakmaccp3196Chakmaccp3197Chakmaccp3198Chakmaccp3199Chakmaccp32Chakmaccp320Chakmaccp3200Chakmaccp3201Chakmaccp3202Chakmaccp3203Chakmaccp3204Chakmaccp3205Chakmaccp3206Chakmaccp3207Chakmaccp3208Chakmaccp3209Chakmaccp321Chakmaccp3210Chakmaccp3211Chakmaccp3212Chakmaccp3213Chakmaccp3214Chakmaccp3215Chakmaccp3216Chakmaccp3217Chakmaccp3218Chakmaccp3219Chakmaccp322Chakmaccp3220Chakmaccp3221Chakmaccp3222Chakmaccp3223Chakmaccp3224Chakmaccp3225Chakmaccp3226Chakmaccp3227Chakmaccp3228Chakmaccp3229Chakmaccp323Chakmaccp3230Chakmaccp3231Chakmaccp3232Chakmaccp3233Chakmaccp3234Chakmaccp3235Chakmaccp3236Chakmaccp3237Chakmaccp3238Chakmaccp3239Chakmaccp324Chakmaccp3240Chakmaccp3241Chakmaccp3242Chakmaccp3243Chakmaccp3244Chakmaccp3245Chakmaccp3246Chakmaccp3247Chakmaccp3248Chakmaccp3249Chakmaccp325Chakmaccp3250Chakmaccp3251Chakmaccp3252Chakmaccp3253Chakmaccp3254Chakmaccp3255Chakmaccp3256Chakmaccp3257Chakmaccp3258Chakmaccp3259Chakmaccp326Chakmaccp3260Chakmaccp3261Chakmaccp3262Chakmaccp3263Chakmaccp3264Chakmaccp3265Chakmaccp3266Chakmaccp3267Chakmaccp3268Chakmaccp3269Chakmaccp327Chakmaccp3270Chakmaccp3271Chakmaccp3272Chakmaccp3273Chakmaccp3274Chakmaccp3275Chakmaccp3276Chakmaccp3277Chakmaccp3278Chakmaccp3279Chakmaccp328Chakmaccp3280Chakmaccp3281Chakmaccp3282Chakmaccp3283Chakmaccp3284Chakmaccp3285Chakmaccp3286Chakmaccp3287Chakmaccp3288Chakmaccp3289Chakmaccp329Chakmaccp3290Chakmaccp3291Chakmaccp3292Chakmaccp3293Chakmaccp3294Chakmaccp3295Chakmaccp3296Chakmaccp3297Chakmaccp3298Chakmaccp3299Chakmaccp33Chakmaccp330Chakmaccp3300Chakmaccp3301Chakmaccp3302Chakmaccp3303Chakmaccp3304Chakmaccp3305Chakmaccp3306Chakmaccp3307Chakmaccp3308Chakmaccp3309Chakmaccp331Chakmaccp3310Chakmaccp3311Chakmaccp3312Chakmaccp3313Chakmaccp3314Chakmaccp3315Chakmaccp3316Chakmaccp3317Chakmaccp3318Chakmaccp3319Chakmaccp332Chakmaccp3320Chakmaccp3321Chakmaccp3322Chakmaccp3323Chakmaccp3324Chakmaccp3325Chakmaccp3326Chakmaccp3327Chakmaccp3328Chakmaccp3329Chakmaccp333Chakmaccp3330Chakmaccp3331Chakmaccp3332Chakmaccp3333Chakmaccp3334Chakmaccp3335Chakmaccp3336Chakmaccp3337Chakmaccp3338Chakmaccp3339Chakmaccp334Chakmaccp3340Chakmaccp3341Chakmaccp3342Chakmaccp3343Chakmaccp3344Chakmaccp3345Chakmaccp3346Chakmaccp3347Chakmaccp3348Chakmaccp3349Chakmaccp335Chakmaccp3350Chakmaccp3351Chakmaccp3352Chakmaccp3353Chakmaccp3354Chakmaccp3355Chakmaccp3356Chakmaccp3357Chakmaccp3358Chakmaccp3359Chakmaccp336Chakmaccp3360Chakmaccp3361Chakmaccp3362Chakmaccp3363Chakmaccp3364Chakmaccp3365Chakmaccp3366Chakmaccp3367Chakmaccp3368Chakmaccp3369Chakmaccp337Chakmaccp3370Chakmaccp3371Chakmaccp3372Chakmaccp3373Chakmaccp3374Chakmaccp3375Chakmaccp3376Chakmaccp3377Chakmaccp3378Chakmaccp3379Chakmaccp338Chakmaccp3380Chakmaccp3381Chakmaccp3382Chakmaccp3383Chakmaccp3384Chakmaccp3385Chakmaccp3386Chakmaccp3387Chakmaccp3388Chakmaccp3389Chakmaccp339Chakmaccp3390Chakmaccp3391Chakmaccp3392Chakmaccp3393Chakmaccp3394Chakmaccp3395Chakmaccp3396Chakmaccp3397Chakmaccp3398Chakmaccp3399Chakmaccp34Chakmaccp340Chakmaccp3400Chakmaccp3401Chakmaccp3402Chakmaccp3403Chakmaccp3404Chakmaccp3405Chakmaccp3406Chakmaccp3407Chakmaccp3408Chakmaccp3409Chakmaccp341Chakmaccp3410Chakmaccp3411Chakmaccp3412Chakmaccp3413Chakmaccp3414Chakmaccp3415Chakmaccp3416Chakmaccp3417Chakmaccp3418Chakmaccp3419Chakmaccp342Chakmaccp3420Chakmaccp3421Chakmaccp3422Chakmaccp3423Chakmaccp3424Chakmaccp3425Chakmaccp3426Chakmaccp3427Chakmaccp3428Chakmaccp3429Chakmaccp343Chakmaccp3430Chakmaccp3431Chakmaccp3432Chakmaccp3433Chakmaccp3434Chakmaccp3435Chakmaccp3436Chakmaccp3437Chakmaccp3438Chakmaccp3439Chakmaccp344Chakmaccp3440Chakmaccp3441Chakmaccp3442Chakmaccp3443Chakmaccp3444Chakmaccp3445Chakmaccp3446Chakmaccp3447Chakmaccp3448Chakmaccp3449Chakmaccp345Chakmaccp3450Chakmaccp3451Chakmaccp3452Chakmaccp3453Chakmaccp3454Chakmaccp3455Chakmaccp3456Chakmaccp3457Chakmaccp3458Chakmaccp3459Chakmaccp346Chakmaccp3460Chakmaccp3461Chakmaccp3462Chakmaccp3463Chakmaccp3464Chakmaccp3465Chakmaccp3466Chakmaccp3467Chakmaccp3468Chakmaccp3469Chakmaccp347Chakmaccp3470Chakmaccp3471Chakmaccp3472Chakmaccp3473Chakmaccp3474Chakmaccp3475Chakmaccp3476Chakmaccp3477Chakmaccp3478Chakmaccp3479Chakmaccp348Chakmaccp3480Chakmaccp3481Chakmaccp3482Chakmaccp3483Chakmaccp3484Chakmaccp3485Chakmaccp3486Chakmaccp3487Chakmaccp3488Chakmaccp3489Chakmaccp349Chakmaccp3490Chakmaccp3491Chakmaccp3492Chakmaccp3493Chakmaccp3494Chakmaccp3495Chakmaccp3496Chakmaccp3497Chakmaccp3498Chakmaccp3499Chakmaccp35Chakmaccp350Chakmaccp3500Chakmaccp3501Chakmaccp3502Chakmaccp3503Chakmaccp3504Chakmaccp3505Chakmaccp3506Chakmaccp3507Chakmaccp3508Chakmaccp3509Chakmaccp351Chakmaccp3510Chakmaccp3511Chakmaccp3512Chakmaccp3513Chakmaccp3514Chakmaccp3515Chakmaccp3516Chakmaccp3517Chakmaccp3518Chakmaccp3519Chakmaccp352Chakmaccp3520Chakmaccp3521Chakmaccp3522Chakmaccp3523Chakmaccp3524Chakmaccp3525Chakmaccp3526Chakmaccp3527Chakmaccp3528Chakmaccp3529Chakmaccp353Chakmaccp3530Chakmaccp3531Chakmaccp3532Chakmaccp3533Chakmaccp3534Chakmaccp3535Chakmaccp3536Chakmaccp3537Chakmaccp3538Chakmaccp3539Chakmaccp354Chakmaccp3540Chakmaccp3541Chakmaccp3542Chakmaccp3543Chakmaccp3544Chakmaccp3545Chakmaccp3546Chakmaccp3547Chakmaccp3548Chakmaccp3549Chakmaccp355Chakmaccp3550Chakmaccp3551Chakmaccp3552Chakmaccp3553Chakmaccp3554Chakmaccp3555Chakmaccp3556Chakmaccp3557Chakmaccp3558Chakmaccp3559Chakmaccp356Chakmaccp3560Chakmaccp3561Chakmaccp3562Chakmaccp3563Chakmaccp3564Chakmaccp3565Chakmaccp3566Chakmaccp3567Chakmaccp3568Chakmaccp3569Chakmaccp357Chakmaccp3570Chakmaccp3571Chakmaccp3572Chakmaccp3573Chakmaccp3574Chakmaccp3575Chakmaccp3576Chakmaccp3577Chakmaccp3578Chakmaccp3579Chakmaccp358Chakmaccp3580Chakmaccp3581Chakmaccp3582Chakmaccp3583Chakmaccp3584Chakmaccp3585Chakmaccp3586Chakmaccp3587Chakmaccp3588Chakmaccp3589Chakmaccp359Chakmaccp3590Chakmaccp3591Chakmaccp3592Chakmaccp3593Chakmaccp3594Chakmaccp3595Chakmaccp3596Chakmaccp3597Chakmaccp3598Chakmaccp3599Chakmaccp36Chakmaccp360Chakmaccp3600Chakmaccp3601Chakmaccp3602Chakmaccp3603Chakmaccp3604Chakmaccp3605Chakmaccp3606Chakmaccp3607Chakmaccp3608Chakmaccp3609Chakmaccp361Chakmaccp3610Chakmaccp3611Chakmaccp3612Chakmaccp3613Chakmaccp3614Chakmaccp3615Chakmaccp3616Chakmaccp3617Chakmaccp3618Chakmaccp3619Chakmaccp362Chakmaccp3620Chakmaccp3621Chakmaccp3622Chakmaccp3623Chakmaccp3624Chakmaccp3625Chakmaccp3626Chakmaccp3627Chakmaccp3628Chakmaccp3629Chakmaccp363Chakmaccp3630Chakmaccp3631Chakmaccp3632Chakmaccp3633Chakmaccp3634Chakmaccp3635Chakmaccp3636Chakmaccp3637Chakmaccp3638Chakmaccp3639Chakmaccp364Chakmaccp3640Chakmaccp3641Chakmaccp3642Chakmaccp3643Chakmaccp3644Chakmaccp3645Chakmaccp3646Chakmaccp3647Chakmaccp3648Chakmaccp3649Chakmaccp365Chakmaccp3650Chakmaccp3651Chakmaccp3652Chakmaccp3653Chakmaccp3654Chakmaccp3655Chakmaccp3656Chakmaccp3657Chakmaccp3658Chakmaccp3659Chakmaccp366Chakmaccp3660Chakmaccp3661Chakmaccp3662Chakmaccp3663Chakmaccp3664Chakmaccp3665Chakmaccp3666Chakmaccp3667Chakmaccp3668Chakmaccp3669Chakmaccp367Chakmaccp3670Chakmaccp3671Chakmaccp3672Chakmaccp3673Chakmaccp3674Chakmaccp3675Chakmaccp3676Chakmaccp3677Chakmaccp3678Chakmaccp3679Chakmaccp368Chakmaccp3680Chakmaccp3681Chakmaccp3682Chakmaccp3683Chakmaccp3684Chakmaccp3685Chakmaccp3686Chakmaccp3687Chakmaccp3688Chakmaccp3689Chakmaccp369Chakmaccp3690Chakmaccp3691Chakmaccp3692Chakmaccp3693Chakmaccp3694Chakmaccp3695Chakmaccp3696Chakmaccp3697Chakmaccp3698Chakmaccp3699Chakmaccp37Chakmaccp370Chakmaccp3700Chakmaccp3701Chakmaccp3702Chakmaccp3703Chakmaccp3704Chakmaccp3705Chakmaccp3706Chakmaccp3707Chakmaccp3708Chakmaccp3709Chakmaccp371Chakmaccp3710Chakmaccp3711Chakmaccp3712Chakmaccp3713Chakmaccp3714Chakmaccp3715Chakmaccp3716Chakmaccp3717Chakmaccp3718Chakmaccp3719Chakmaccp372Chakmaccp3720Chakmaccp3721Chakmaccp3722Chakmaccp3723Chakmaccp3724Chakmaccp3725Chakmaccp3726Chakmaccp3727Chakmaccp3728Chakmaccp3729Chakmaccp373Chakmaccp3730Chakmaccp3731Chakmaccp3732Chakmaccp3733Chakmaccp3734Chakmaccp3735Chakmaccp3736Chakmaccp3737Chakmaccp3738Chakmaccp3739Chakmaccp374Chakmaccp3740Chakmaccp3741Chakmaccp3742Chakmaccp3743Chakmaccp3744Chakmaccp3745Chakmaccp3746Chakmaccp3747Chakmaccp3748Chakmaccp3749Chakmaccp375Chakmaccp3750Chakmaccp3751Chakmaccp3752Chakmaccp3753Chakmaccp3754Chakmaccp3755Chakmaccp3756Chakmaccp3757Chakmaccp3758Chakmaccp3759Chakmaccp376Chakmaccp3760Chakmaccp3761Chakmaccp3762Chakmaccp3763Chakmaccp3764Chakmaccp3765Chakmaccp3766Chakmaccp3767Chakmaccp3768Chakmaccp3769Chakmaccp377Chakmaccp3770Chakmaccp3771Chakmaccp3772Chakmaccp3773Chakmaccp3774Chakmaccp3775Chakmaccp3776Chakmaccp3777Chakmaccp3778Chakmaccp3779Chakmaccp378Chakmaccp3780Chakmaccp3781Chakmaccp3782Chakmaccp3783Chakmaccp3784Chakmaccp3785Chakmaccp3786Chakmaccp3787Chakmaccp3788Chakmaccp3789Chakmaccp379Chakmaccp3790Chakmaccp3791Chakmaccp3792Chakmaccp3793Chakmaccp3794Chakmaccp3795Chakmaccp3796Chakmaccp3797Chakmaccp3798Chakmaccp3799Chakmaccp38Chakmaccp380Chakmaccp3800Chakmaccp3801Chakmaccp3802Chakmaccp3803Chakmaccp3804Chakmaccp3805Chakmaccp3806Chakmaccp3807Chakmaccp3808Chakmaccp3809Chakmaccp381Chakmaccp3810Chakmaccp3811Chakmaccp3812Chakmaccp3813Chakmaccp3814Chakmaccp3815Chakmaccp3816Chakmaccp3817Chakmaccp3818Chakmaccp3819Chakmaccp382Chakmaccp3820Chakmaccp3821Chakmaccp3822Chakmaccp3823Chakmaccp3824Chakmaccp3825Chakmaccp3826Chakmaccp3827Chakmaccp3828Chakmaccp3829Chakmaccp383Chakmaccp3830Chakmaccp3831Chakmaccp3832Chakmaccp3833Chakmaccp3834Chakmaccp3835Chakmaccp3836Chakmaccp3837Chakmaccp3838Chakmaccp3839Chakmaccp384Chakmaccp3840Chakmaccp3841Chakmaccp3842Chakmaccp3843Chakmaccp3844Chakmaccp3845Chakmaccp3846Chakmaccp3847Chakmaccp3848Chakmaccp3849Chakmaccp385Chakmaccp3850Chakmaccp3851Chakmaccp3852Chakmaccp3853Chakmaccp3854Chakmaccp3855Chakmaccp3856Chakmaccp3857Chakmaccp3858Chakmaccp3859Chakmaccp386Chakmaccp3860Chakmaccp3861Chakmaccp3862Chakmaccp3863Chakmaccp3864Chakmaccp3865Chakmaccp3866Chakmaccp3867Chakmaccp3868Chakmaccp3869Chakmaccp387Chakmaccp3870Chakmaccp3871Chakmaccp3872Chakmaccp3873Chakmaccp3874Chakmaccp3875Chakmaccp3876Chakmaccp3877Chakmaccp3878Chakmaccp3879Chakmaccp388Chakmaccp3880Chakmaccp3881Chakmaccp3882Chakmaccp3883Chakmaccp3884Chakmaccp3885Chakmaccp3886Chakmaccp3887Chakmaccp3888Chakmaccp3889Chakmaccp389Chakmaccp3890Chakmaccp3891Chakmaccp3892Chakmaccp3893Chakmaccp3894Chakmaccp3895Chakmaccp3896Chakmaccp3897Chakmaccp3898Chakmaccp3899Chakmaccp39Chakmaccp390Chakmaccp3900Chakmaccp3901Chakmaccp3902Chakmaccp3903Chakmaccp3904Chakmaccp3905Chakmaccp3906Chakmaccp3907Chakmaccp3908Chakmaccp3909Chakmaccp391Chakmaccp3910Chakmaccp3911Chakmaccp3912Chakmaccp3913Chakmaccp3914Chakmaccp3915Chakmaccp3916Chakmaccp3917Chakmaccp3918Chakmaccp3919Chakmaccp392Chakmaccp3920Chakmaccp3921Chakmaccp3922Chakmaccp3923Chakmaccp3924Chakmaccp3925Chakmaccp3926Chakmaccp3927Chakmaccp3928Chakmaccp3929Chakmaccp393Chakmaccp3930Chakmaccp3931Chakmaccp3932Chakmaccp3933Chakmaccp3934Chakmaccp3935Chakmaccp3936Chakmaccp3937Chakmaccp3938Chakmaccp3939Chakmaccp394Chakmaccp3940Chakmaccp3941Chakmaccp3942Chakmaccp3943Chakmaccp3944Chakmaccp3945Chakmaccp3946Chakmaccp3947Chakmaccp3948Chakmaccp3949Chakmaccp395Chakmaccp3950Chakmaccp3951Chakmaccp3952Chakmaccp3953Chakmaccp3954Chakmaccp3955Chakmaccp3956Chakmaccp3957Chakmaccp3958Chakmaccp3959Chakmaccp396Chakmaccp3960Chakmaccp3961Chakmaccp3962Chakmaccp3963Chakmaccp3964Chakmaccp3965Chakmaccp3966Chakmaccp3967Chakmaccp3968Chakmaccp3969Chakmaccp397Chakmaccp3970Chakmaccp3971Chakmaccp3972Chakmaccp3973Chakmaccp3974Chakmaccp3975Chakmaccp3976Chakmaccp3977Chakmaccp3978Chakmaccp3979Chakmaccp398Chakmaccp3980Chakmaccp3981Chakmaccp3982Chakmaccp3983Chakmaccp3984Chakmaccp3985Chakmaccp3986Chakmaccp3987Chakmaccp3988Chakmaccp3989Chakmaccp399Chakmaccp3990Chakmaccp3991Chakmaccp3992Chakmaccp3993Chakmaccp3994Chakmaccp3995Chakmaccp3996Chakmaccp3997Chakmaccp3998Chakmaccp3999Chakmaccp4Chakmaccp40Chakmaccp400Chakmaccp4000Chakmaccp4001Chakmaccp4002Chakmaccp4003Chakmaccp4004Chakmaccp4005Chakmaccp4006Chakmaccp4007Chakmaccp4008Chakmaccp4009Chakmaccp401Chakmaccp4010Chakmaccp4011Chakmaccp4012Chakmaccp4013Chakmaccp4014Chakmaccp4015Chakmaccp4016Chakmaccp4017Chakmaccp4018Chakmaccp4019Chakmaccp402Chakmaccp4020Chakmaccp4021Chakmaccp4022Chakmaccp4023Chakmaccp4024Chakmaccp4025Chakmaccp4026Chakmaccp4027Chakmaccp4028Chakmaccp4029Chakmaccp403Chakmaccp4030Chakmaccp4031Chakmaccp4032Chakmaccp4033Chakmaccp4034Chakmaccp4035Chakmaccp4036Chakmaccp4037Chakmaccp4038Chakmaccp4039Chakmaccp404Chakmaccp4040Chakmaccp4041Chakmaccp4042Chakmaccp4043Chakmaccp4044Chakmaccp4045Chakmaccp4046Chakmaccp4047Chakmaccp4048Chakmaccp4049Chakmaccp405Chakmaccp4050Chakmaccp4051Chakmaccp4052Chakmaccp4053Chakmaccp4054Chakmaccp4055Chakmaccp4056Chakmaccp4057Chakmaccp4058Chakmaccp4059Chakmaccp406Chakmaccp4060Chakmaccp4061Chakmaccp4062Chakmaccp4063Chakmaccp4064Chakmaccp4065Chakmaccp4066Chakmaccp4067Chakmaccp4068Chakmaccp4069Chakmaccp407Chakmaccp4070Chakmaccp4071Chakmaccp4072Chakmaccp4073Chakmaccp4074Chakmaccp4075Chakmaccp4076Chakmaccp4077Chakmaccp4078Chakmaccp4079Chakmaccp408Chakmaccp4080Chakmaccp4081Chakmaccp4082Chakmaccp4083Chakmaccp4084Chakmaccp4085Chakmaccp4086Chakmaccp4087Chakmaccp4088Chakmaccp4089Chakmaccp409Chakmaccp4090Chakmaccp4091Chakmaccp4092Chakmaccp4093Chakmaccp4094Chakmaccp4095Chakmaccp4096Chakmaccp4097Chakmaccp4098Chakmaccp4099Chakmaccp41Chakmaccp410Chakmaccp4100Chakmaccp4101Chakmaccp4102Chakmaccp4103Chakmaccp4104Chakmaccp4105Chakmaccp4106Chakmaccp4107Chakmaccp4108Chakmaccp4109Chakmaccp411Chakmaccp4110Chakmaccp4111Chakmaccp4112Chakmaccp4113Chakmaccp4114Chakmaccp4115Chakmaccp4116Chakmaccp4117Chakmaccp4118Chakmaccp4119Chakmaccp412Chakmaccp4120Chakmaccp4121Chakmaccp4122Chakmaccp4123Chakmaccp4124Chakmaccp4125Chakmaccp4126Chakmaccp4127Chakmaccp4128Chakmaccp4129Chakmaccp413Chakmaccp4130Chakmaccp4131Chakmaccp4132Chakmaccp4133Chakmaccp4134Chakmaccp4135Chakmaccp4136Chakmaccp4137Chakmaccp4138Chakmaccp4139Chakmaccp414Chakmaccp4140Chakmaccp4141Chakmaccp4142Chakmaccp4143Chakmaccp4144Chakmaccp4145Chakmaccp4146Chakmaccp4147Chakmaccp4148Chakmaccp4149Chakmaccp415Chakmaccp4150Chakmaccp4151Chakmaccp4152Chakmaccp4153Chakmaccp4154Chakmaccp4155Chakmaccp4156Chakmaccp4157Chakmaccp4158Chakmaccp4159Chakmaccp416Chakmaccp4160Chakmaccp4161Chakmaccp4162Chakmaccp4163Chakmaccp4164Chakmaccp4165Chakmaccp4166Chakmaccp4167Chakmaccp4168Chakmaccp4169Chakmaccp417Chakmaccp4170Chakmaccp4171Chakmaccp4172Chakmaccp4173Chakmaccp4174Chakmaccp4175Chakmaccp4176Chakmaccp4177Chakmaccp4178Chakmaccp4179Chakmaccp418Chakmaccp4180Chakmaccp4181Chakmaccp4182Chakmaccp4183Chakmaccp4184Chakmaccp4185Chakmaccp4186Chakmaccp4187Chakmaccp4188Chakmaccp4189Chakmaccp419Chakmaccp4190Chakmaccp4191Chakmaccp4192Chakmaccp4193Chakmaccp4194Chakmaccp4195Chakmaccp4196Chakmaccp4197Chakmaccp4198Chakmaccp4199Chakmaccp42Chakmaccp420Chakmaccp4200Chakmaccp4201Chakmaccp4202Chakmaccp4203Chakmaccp4204Chakmaccp4205Chakmaccp4206Chakmaccp4207Chakmaccp4208Chakmaccp4209Chakmaccp421Chakmaccp4210Chakmaccp4211Chakmaccp4212Chakmaccp4213Chakmaccp4214Chakmaccp4215Chakmaccp4216Chakmaccp4217Chakmaccp4218Chakmaccp4219Chakmaccp422Chakmaccp4220Chakmaccp4221Chakmaccp4222Chakmaccp4223Chakmaccp4224Chakmaccp4225Chakmaccp4226Chakmaccp4227Chakmaccp4228Chakmaccp4229Chakmaccp423Chakmaccp4230Chakmaccp4231Chakmaccp4232Chakmaccp4233Chakmaccp4234Chakmaccp4235Chakmaccp4236Chakmaccp4237Chakmaccp4238Chakmaccp4239Chakmaccp424Chakmaccp4240Chakmaccp4241Chakmaccp4242Chakmaccp4243Chakmaccp4244Chakmaccp4245Chakmaccp4246Chakmaccp4247Chakmaccp4248Chakmaccp4249Chakmaccp425Chakmaccp4250Chakmaccp4251Chakmaccp4252Chakmaccp4253Chakmaccp4254Chakmaccp4255Chakmaccp4256Chakmaccp4257Chakmaccp4258Chakmaccp4259Chakmaccp426Chakmaccp4260Chakmaccp4261Chakmaccp4262Chakmaccp4263Chakmaccp4264Chakmaccp4265Chakmaccp4266Chakmaccp4267Chakmaccp4268Chakmaccp4269Chakmaccp427Chakmaccp4270Chakmaccp4271Chakmaccp4272Chakmaccp4273Chakmaccp4274Chakmaccp4275Chakmaccp4276Chakmaccp4277Chakmaccp4278Chakmaccp4279Chakmaccp428Chakmaccp4280Chakmaccp4281Chakmaccp4282Chakmaccp4283Chakmaccp4284Chakmaccp4285Chakmaccp4286Chakmaccp4287Chakmaccp4288Chakmaccp4289Chakmaccp429Chakmaccp4290Chakmaccp4291Chakmaccp4292Chakmaccp4293Chakmaccp4294Chakmaccp4295Chakmaccp4296Chakmaccp4297Chakmaccp4298Chakmaccp4299Chakmaccp43Chakmaccp430Chakmaccp4300Chakmaccp4301Chakmaccp4302Chakmaccp4303Chakmaccp4304Chakmaccp4305Chakmaccp4306Chakmaccp4307Chakmaccp4308Chakmaccp4309Chakmaccp431Chakmaccp4310Chakmaccp4311Chakmaccp4312Chakmaccp4313Chakmaccp4314Chakmaccp4315Chakmaccp4316Chakmaccp4317Chakmaccp4318Chakmaccp4319Chakmaccp432Chakmaccp4320Chakmaccp4321Chakmaccp4322Chakmaccp4323Chakmaccp4324Chakmaccp4325Chakmaccp4326Chakmaccp4327Chakmaccp4328Chakmaccp4329Chakmaccp433Chakmaccp4330Chakmaccp4331Chakmaccp4332Chakmaccp4333Chakmaccp4334Chakmaccp4335Chakmaccp4336Chakmaccp4337Chakmaccp4338Chakmaccp4339Chakmaccp434Chakmaccp4340Chakmaccp4341Chakmaccp4342Chakmaccp4343Chakmaccp4344Chakmaccp4345Chakmaccp4346Chakmaccp4347Chakmaccp4348Chakmaccp4349Chakmaccp435Chakmaccp4350Chakmaccp4351Chakmaccp4352Chakmaccp4353Chakmaccp4354Chakmaccp4355Chakmaccp4356Chakmaccp4357Chakmaccp4358Chakmaccp4359Chakmaccp436Chakmaccp4360Chakmaccp4361Chakmaccp4362Chakmaccp4363Chakmaccp4364Chakmaccp4365Chakmaccp4366Chakmaccp4367Chakmaccp4368Chakmaccp4369Chakmaccp437Chakmaccp4370Chakmaccp4371Chakmaccp4372Chakmaccp4373Chakmaccp4374Chakmaccp4375Chakmaccp4376Chakmaccp4377Chakmaccp4378Chakmaccp4379Chakmaccp438Chakmaccp4380Chakmaccp4381Chakmaccp4382Chakmaccp4383Chakmaccp4384Chakmaccp4385Chakmaccp4386Chakmaccp4387Chakmaccp4388Chakmaccp4389Chakmaccp439Chakmaccp4390Chakmaccp4391Chakmaccp4392Chakmaccp4393Chakmaccp4394Chakmaccp4395Chakmaccp4396Chakmaccp4397Chakmaccp4398Chakmaccp4399Chakmaccp44Chakmaccp440Chakmaccp4400Chakmaccp4401Chakmaccp4402Chakmaccp4403Chakmaccp4404Chakmaccp4405Chakmaccp4406Chakmaccp4407Chakmaccp4408Chakmaccp4409Chakmaccp441Chakmaccp4410Chakmaccp4411Chakmaccp4412Chakmaccp4413Chakmaccp4414Chakmaccp4415Chakmaccp4416Chakmaccp4417Chakmaccp4418Chakmaccp4419Chakmaccp442Chakmaccp4420Chakmaccp4421Chakmaccp4422Chakmaccp4423Chakmaccp4424Chakmaccp4425Chakmaccp4426Chakmaccp4427Chakmaccp4428Chakmaccp4429Chakmaccp443Chakmaccp4430Chakmaccp4431Chakmaccp4432Chakmaccp4433Chakmaccp4434Chakmaccp4435Chakmaccp4436Chakmaccp4437Chakmaccp4438Chakmaccp4439Chakmaccp444Chakmaccp4440Chakmaccp4441Chakmaccp4442Chakmaccp4443Chakmaccp4444Chakmaccp4445Chakmaccp4446Chakmaccp4447Chakmaccp4448Chakmaccp4449Chakmaccp445Chakmaccp4450Chakmaccp4451Chakmaccp4452Chakmaccp4453Chakmaccp4454Chakmaccp4455Chakmaccp4456Chakmaccp4457Chakmaccp4458Chakmaccp4459Chakmaccp446Chakmaccp4460Chakmaccp4461Chakmaccp4462Chakmaccp4463Chakmaccp4464Chakmaccp4465Chakmaccp4466Chakmaccp4467Chakmaccp4468Chakmaccp4469Chakmaccp447Chakmaccp4470Chakmaccp4471Chakmaccp4472Chakmaccp4473Chakmaccp4474Chakmaccp4475Chakmaccp4476Chakmaccp4477Chakmaccp4478Chakmaccp4479Chakmaccp448Chakmaccp4480Chakmaccp4481Chakmaccp4482Chakmaccp4483Chakmaccp4484Chakmaccp4485Chakmaccp4486Chakmaccp4487Chakmaccp4488Chakmaccp4489Chakmaccp449Chakmaccp4490Chakmaccp4491Chakmaccp4492Chakmaccp4493Chakmaccp4494Chakmaccp4495Chakmaccp4496Chakmaccp4497Chakmaccp4498Chakmaccp4499Chakmaccp45Chakmaccp450Chakmaccp4500Chakmaccp4501Chakmaccp4502Chakmaccp4503Chakmaccp4504Chakmaccp4505Chakmaccp4506Chakmaccp4507Chakmaccp4508Chakmaccp4509Chakmaccp451Chakmaccp4510Chakmaccp4511Chakmaccp4512Chakmaccp4513Chakmaccp4514Chakmaccp4515Chakmaccp4516Chakmaccp4517Chakmaccp4518Chakmaccp4519Chakmaccp452Chakmaccp4520Chakmaccp4521Chakmaccp4522Chakmaccp4523Chakmaccp4524Chakmaccp4525Chakmaccp4526Chakmaccp4527Chakmaccp4528Chakmaccp4529Chakmaccp453Chakmaccp4530Chakmaccp4531Chakmaccp4532Chakmaccp4533Chakmaccp4534Chakmaccp4535Chakmaccp4536Chakmaccp4537Chakmaccp4538Chakmaccp4539Chakmaccp454Chakmaccp4540Chakmaccp4541Chakmaccp4542Chakmaccp4543Chakmaccp4544Chakmaccp4545Chakmaccp4546Chakmaccp4547Chakmaccp4548Chakmaccp4549Chakmaccp455Chakmaccp4550Chakmaccp4551Chakmaccp4552Chakmaccp4553Chakmaccp4554Chakmaccp4555Chakmaccp4556Chakmaccp4557Chakmaccp4558Chakmaccp4559Chakmaccp456Chakmaccp4560Chakmaccp4561Chakmaccp4562Chakmaccp4563Chakmaccp4564Chakmaccp4565Chakmaccp4566Chakmaccp4567Chakmaccp4568Chakmaccp4569Chakmaccp457Chakmaccp4570Chakmaccp4571Chakmaccp4572Chakmaccp4573Chakmaccp4574Chakmaccp4575Chakmaccp4576Chakmaccp4577Chakmaccp4578Chakmaccp4579Chakmaccp458Chakmaccp4580Chakmaccp4581Chakmaccp4582Chakmaccp4583Chakmaccp4584Chakmaccp4585Chakmaccp4586Chakmaccp4587Chakmaccp4588Chakmaccp4589Chakmaccp459Chakmaccp4590Chakmaccp4591Chakmaccp4592Chakmaccp4593Chakmaccp4594Chakmaccp4595Chakmaccp4596Chakmaccp4597Chakmaccp4598Chakmaccp4599Chakmaccp46Chakmaccp460Chakmaccp4600Chakmaccp4601Chakmaccp4602Chakmaccp4603Chakmaccp4604Chakmaccp4605Chakmaccp4606Chakmaccp4607Chakmaccp4608Chakmaccp4609Chakmaccp461Chakmaccp4610Chakmaccp4611Chakmaccp4612Chakmaccp4613Chakmaccp4614Chakmaccp4615Chakmaccp4616Chakmaccp4617Chakmaccp4618Chakmaccp4619Chakmaccp462Chakmaccp4620Chakmaccp4621Chakmaccp4622Chakmaccp4623Chakmaccp4624Chakmaccp4625Chakmaccp4626Chakmaccp4627Chakmaccp4628Chakmaccp4629Chakmaccp463Chakmaccp4630Chakmaccp4631Chakmaccp4632Chakmaccp4633Chakmaccp4634Chakmaccp4635Chakmaccp4636Chakmaccp4637Chakmaccp4638Chakmaccp4639Chakmaccp464Chakmaccp4640Chakmaccp4641Chakmaccp4642Chakmaccp4643Chakmaccp4644Chakmaccp4645Chakmaccp4646Chakmaccp4647Chakmaccp4648Chakmaccp4649Chakmaccp465Chakmaccp4650Chakmaccp4651Chakmaccp4652Chakmaccp4653Chakmaccp4654Chakmaccp4655Chakmaccp4656Chakmaccp4657Chakmaccp4658Chakmaccp4659Chakmaccp466Chakmaccp4660Chakmaccp4661Chakmaccp4662Chakmaccp4663Chakmaccp4664Chakmaccp4665Chakmaccp4666Chakmaccp4667Chakmaccp4668Chakmaccp4669Chakmaccp467Chakmaccp4670Chakmaccp4671Chakmaccp4672Chakmaccp4673Chakmaccp4674Chakmaccp4675Chakmaccp4676Chakmaccp4677Chakmaccp4678Chakmaccp4679Chakmaccp468Chakmaccp4680Chakmaccp4681Chakmaccp4682Chakmaccp4683Chakmaccp4684Chakmaccp4685Chakmaccp4686Chakmaccp4687Chakmaccp4688Chakmaccp4689Chakmaccp469Chakmaccp4690Chakmaccp4691Chakmaccp4692Chakmaccp4693Chakmaccp4694Chakmaccp4695Chakmaccp4696Chakmaccp4697Chakmaccp4698Chakmaccp4699Chakmaccp47Chakmaccp470Chakmaccp4700Chakmaccp4701Chakmaccp4702Chakmaccp4703Chakmaccp4704Chakmaccp4705Chakmaccp4706Chakmaccp4707Chakmaccp4708Chakmaccp4709Chakmaccp471Chakmaccp4710Chakmaccp4711Chakmaccp4712Chakmaccp4713Chakmaccp4714Chakmaccp4715Chakmaccp4716Chakmaccp4717Chakmaccp4718Chakmaccp4719Chakmaccp472Chakmaccp4720Chakmaccp4721Chakmaccp4722Chakmaccp4723Chakmaccp4724Chakmaccp4725Chakmaccp4726Chakmaccp4727Chakmaccp4728Chakmaccp4729Chakmaccp473Chakmaccp4730Chakmaccp4731Chakmaccp4732Chakmaccp4733Chakmaccp4734Chakmaccp4735Chakmaccp4736Chakmaccp4737Chakmaccp4738Chakmaccp4739Chakmaccp474Chakmaccp4740Chakmaccp4741Chakmaccp4742Chakmaccp4743Chakmaccp4744Chakmaccp4745Chakmaccp4746Chakmaccp4747Chakmaccp4748Chakmaccp4749Chakmaccp475Chakmaccp4750Chakmaccp4751Chakmaccp4752Chakmaccp4753Chakmaccp4754Chakmaccp4755Chakmaccp4756Chakmaccp4757Chakmaccp4758Chakmaccp4759Chakmaccp476Chakmaccp4760Chakmaccp4761Chakmaccp4762Chakmaccp4763Chakmaccp4764Chakmaccp4765Chakmaccp4766Chakmaccp4767Chakmaccp4768Chakmaccp4769Chakmaccp477Chakmaccp4770Chakmaccp4771Chakmaccp4772Chakmaccp4773Chakmaccp4774Chakmaccp4775Chakmaccp4776Chakmaccp4777Chakmaccp4778Chakmaccp4779Chakmaccp478Chakmaccp4780Chakmaccp4781Chakmaccp4782Chakmaccp4783Chakmaccp4784Chakmaccp4785Chakmaccp4786Chakmaccp4787Chakmaccp4788Chakmaccp4789Chakmaccp479Chakmaccp4790Chakmaccp4791Chakmaccp4792Chakmaccp4793Chakmaccp4794Chakmaccp4795Chakmaccp4796Chakmaccp4797Chakmaccp4798Chakmaccp4799Chakmaccp48Chakmaccp480Chakmaccp4800Chakmaccp4801Chakmaccp4802Chakmaccp4803Chakmaccp4804Chakmaccp4805Chakmaccp4806Chakmaccp4807Chakmaccp4808Chakmaccp4809Chakmaccp481Chakmaccp4810Chakmaccp4811Chakmaccp4812Chakmaccp4813Chakmaccp4814Chakmaccp4815Chakmaccp4816Chakmaccp4817Chakmaccp4818Chakmaccp4819Chakmaccp482Chakmaccp4820Chakmaccp4821Chakmaccp4822Chakmaccp4823Chakmaccp4824Chakmaccp4825Chakmaccp4826Chakmaccp4827Chakmaccp4828Chakmaccp4829Chakmaccp483Chakmaccp4830Chakmaccp4831Chakmaccp4832Chakmaccp4833Chakmaccp4834Chakmaccp4835Chakmaccp4836Chakmaccp4837Chakmaccp4838Chakmaccp4839Chakmaccp484Chakmaccp4840Chakmaccp4841Chakmaccp4842Chakmaccp4843Chakmaccp4844Chakmaccp4845Chakmaccp4846Chakmaccp4847Chakmaccp4848Chakmaccp4849Chakmaccp485Chakmaccp4850Chakmaccp4851Chakmaccp4852Chakmaccp4853Chakmaccp4854Chakmaccp4855Chakmaccp4856Chakmaccp4857Chakmaccp4858Chakmaccp4859Chakmaccp486Chakmaccp4860Chakmaccp4861Chakmaccp4862Chakmaccp4863Chakmaccp4864Chakmaccp4865Chakmaccp4866Chakmaccp4867Chakmaccp4868Chakmaccp4869Chakmaccp487Chakmaccp4870Chakmaccp4871Chakmaccp4872Chakmaccp4873Chakmaccp4874Chakmaccp4875Chakmaccp4876Chakmaccp4877Chakmaccp4878Chakmaccp4879Chakmaccp488Chakmaccp4880Chakmaccp4881Chakmaccp4882Chakmaccp4883Chakmaccp4884Chakmaccp4885Chakmaccp4886Chakmaccp4887Chakmaccp4888Chakmaccp4889Chakmaccp489Chakmaccp4890Chakmaccp4891Chakmaccp4892Chakmaccp4893Chakmaccp4894Chakmaccp4895Chakmaccp4896Chakmaccp4897Chakmaccp4898Chakmaccp4899Chakmaccp49Chakmaccp490Chakmaccp4900Chakmaccp4901Chakmaccp4902Chakmaccp4903Chakmaccp4904Chakmaccp4905Chakmaccp4906Chakmaccp4907Chakmaccp4908Chakmaccp4909Chakmaccp491Chakmaccp4910Chakmaccp4911Chakmaccp4912Chakmaccp4913Chakmaccp4914Chakmaccp4915Chakmaccp4916Chakmaccp4917Chakmaccp4918Chakmaccp4919Chakmaccp492Chakmaccp4920Chakmaccp4921Chakmaccp4922Chakmaccp4923Chakmaccp4924Chakmaccp4925Chakmaccp4926Chakmaccp4927Chakmaccp4928Chakmaccp4929Chakmaccp493Chakmaccp4930Chakmaccp4931Chakmaccp4932Chakmaccp4933Chakmaccp4934Chakmaccp4935Chakmaccp4936Chakmaccp4937Chakmaccp4938Chakmaccp4939Chakmaccp494Chakmaccp4940Chakmaccp4941Chakmaccp4942Chakmaccp4943Chakmaccp4944Chakmaccp4945Chakmaccp4946Chakmaccp4947Chakmaccp4948Chakmaccp4949Chakmaccp495Chakmaccp4950Chakmaccp4951Chakmaccp4952Chakmaccp4953Chakmaccp4954Chakmaccp4955Chakmaccp4956Chakmaccp4957Chakmaccp4958Chakmaccp4959Chakmaccp496Chakmaccp4960Chakmaccp4961Chakmaccp4962Chakmaccp4963Chakmaccp4964Chakmaccp4965Chakmaccp4966Chakmaccp4967Chakmaccp4968Chakmaccp4969Chakmaccp497Chakmaccp4970Chakmaccp4971Chakmaccp4972Chakmaccp4973Chakmaccp4974Chakmaccp4975Chakmaccp4976Chakmaccp4977Chakmaccp4978Chakmaccp4979Chakmaccp498Chakmaccp4980Chakmaccp4981Chakmaccp4982Chakmaccp4983Chakmaccp4984Chakmaccp4985Chakmaccp4986Chakmaccp4987Chakmaccp4988Chakmaccp4989Chakmaccp499Chakmaccp4990Chakmaccp4991Chakmaccp4992Chakmaccp4993Chakmaccp4994Chakmaccp4995Chakmaccp4996Chakmaccp4997Chakmaccp4998Chakmaccp4999Chakmaccp5Chakmaccp50Chakmaccp500Chakmaccp5000Chakmaccp5001Chakmaccp5002Chakmaccp5003Chakmaccp5004Chakmaccp5005Chakmaccp5006Chakmaccp5007Chakmaccp5008Chakmaccp5009Chakmaccp501Chakmaccp5010Chakmaccp5011Chakmaccp5012Chakmaccp5013Chakmaccp5014Chakmaccp5015Chakmaccp5016Chakmaccp5017Chakmaccp5018Chakmaccp5019Chakmaccp502Chakmaccp5020Chakmaccp5021Chakmaccp5022Chakmaccp5023Chakmaccp5024Chakmaccp5025Chakmaccp5026Chakmaccp5027Chakmaccp5028Chakmaccp5029Chakmaccp503Chakmaccp5030Chakmaccp5031Chakmaccp5032Chakmaccp5033Chakmaccp5034Chakmaccp5035Chakmaccp5036Chakmaccp5037Chakmaccp5038Chakmaccp5039Chakmaccp504Chakmaccp5040Chakmaccp5041Chakmaccp5042Chakmaccp5043Chakmaccp5044Chakmaccp5045Chakmaccp5046Chakmaccp5047Chakmaccp5048Chakmaccp5049Chakmaccp505Chakmaccp5050Chakmaccp5051Chakmaccp5052Chakmaccp5053Chakmaccp5054Chakmaccp5055Chakmaccp5056Chakmaccp5057Chakmaccp5058Chakmaccp5059Chakmaccp506Chakmaccp5060Chakmaccp5061Chakmaccp5062Chakmaccp5063Chakmaccp5064Chakmaccp5065Chakmaccp5066Chakmaccp5067Chakmaccp5068Chakmaccp5069Chakmaccp507Chakmaccp5070Chakmaccp5071Chakmaccp5072Chakmaccp5073Chakmaccp5074Chakmaccp5075Chakmaccp5076Chakmaccp5077Chakmaccp5078Chakmaccp5079Chakmaccp508Chakmaccp5080Chakmaccp5081Chakmaccp5082Chakmaccp5083Chakmaccp5084Chakmaccp5085Chakmaccp5086Chakmaccp5087Chakmaccp5088Chakmaccp5089Chakmaccp509Chakmaccp5090Chakmaccp5091Chakmaccp5092Chakmaccp5093Chakmaccp5094Chakmaccp5095Chakmaccp5096Chakmaccp5097Chakmaccp5098Chakmaccp5099Chakmaccp51Chakmaccp510Chakmaccp5100Chakmaccp5101Chakmaccp5102Chakmaccp5103Chakmaccp5104Chakmaccp5105Chakmaccp5106Chakmaccp5107Chakmaccp5108Chakmaccp5109Chakmaccp511Chakmaccp5110Chakmaccp5111Chakmaccp5112Chakmaccp5113Chakmaccp5114Chakmaccp5115Chakmaccp5116Chakmaccp5117Chakmaccp5118Chakmaccp5119Chakmaccp512Chakmaccp5120Chakmaccp5121Chakmaccp5122Chakmaccp5123Chakmaccp5124Chakmaccp5125Chakmaccp5126Chakmaccp5127Chakmaccp5128Chakmaccp5129Chakmaccp513Chakmaccp5130Chakmaccp5131Chakmaccp5132Chakmaccp5133Chakmaccp5134Chakmaccp5135Chakmaccp5136Chakmaccp5137Chakmaccp5138Chakmaccp5139Chakmaccp514Chakmaccp5140Chakmaccp5141Chakmaccp5142Chakmaccp5143Chakmaccp5144Chakmaccp5145Chakmaccp5146Chakmaccp5147Chakmaccp5148Chakmaccp5149Chakmaccp515Chakmaccp5150Chakmaccp5151Chakmaccp5152Chakmaccp5153Chakmaccp5154Chakmaccp5155Chakmaccp5156Chakmaccp5157Chakmaccp5158Chakmaccp5159Chakmaccp516Chakmaccp5160Chakmaccp5161Chakmaccp5162Chakmaccp5163Chakmaccp5164Chakmaccp5165Chakmaccp5166Chakmaccp5167Chakmaccp5168Chakmaccp5169Chakmaccp517Chakmaccp5170Chakmaccp5171Chakmaccp5172Chakmaccp5173Chakmaccp5174Chakmaccp5175Chakmaccp5176Chakmaccp5177Chakmaccp5178Chakmaccp5179Chakmaccp518Chakmaccp5180Chakmaccp5181Chakmaccp5182Chakmaccp5183Chakmaccp5184Chakmaccp5185Chakmaccp5186Chakmaccp5187Chakmaccp5188Chakmaccp5189Chakmaccp519Chakmaccp5190Chakmaccp5191Chakmaccp5192Chakmaccp5193Chakmaccp5194Chakmaccp5195Chakmaccp5196Chakmaccp5197Chakmaccp5198Chakmaccp5199Chakmaccp52Chakmaccp520Chakmaccp5200Chakmaccp5201Chakmaccp5202Chakmaccp5203Chakmaccp5204Chakmaccp5205Chakmaccp5206Chakmaccp5207Chakmaccp5208Chakmaccp5209Chakmaccp521Chakmaccp5210Chakmaccp5211Chakmaccp5212Chakmaccp5213Chakmaccp5214Chakmaccp5215Chakmaccp5216Chakmaccp5217Chakmaccp5218Chakmaccp5219Chakmaccp522Chakmaccp5220Chakmaccp5221Chakmaccp5222Chakmaccp5223Chakmaccp5224Chakmaccp5225Chakmaccp5226Chakmaccp5227Chakmaccp5228Chakmaccp5229Chakmaccp523Chakmaccp5230Chakmaccp5231Chakmaccp5232Chakmaccp5233Chakmaccp5234Chakmaccp5235Chakmaccp5236Chakmaccp5237Chakmaccp5238Chakmaccp5239Chakmaccp524Chakmaccp5240Chakmaccp5241Chakmaccp5242Chakmaccp5243Chakmaccp5244Chakmaccp5245Chakmaccp5246Chakmaccp5247Chakmaccp5248Chakmaccp5249Chakmaccp525Chakmaccp5250Chakmaccp5251Chakmaccp5252Chakmaccp5253Chakmaccp5254Chakmaccp5255Chakmaccp5256Chakmaccp5257Chakmaccp5258Chakmaccp5259Chakmaccp526Chakmaccp5260Chakmaccp5261Chakmaccp5262Chakmaccp5263Chakmaccp5264Chakmaccp5265Chakmaccp5266Chakmaccp5267Chakmaccp5268Chakmaccp5269Chakmaccp527Chakmaccp5270Chakmaccp5271Chakmaccp5272Chakmaccp5273Chakmaccp5274Chakmaccp5275Chakmaccp5276Chakmaccp5277Chakmaccp5278Chakmaccp5279Chakmaccp528Chakmaccp5280Chakmaccp5281Chakmaccp5282Chakmaccp5283Chakmaccp5284Chakmaccp5285Chakmaccp5286Chakmaccp5287Chakmaccp5288Chakmaccp5289Chakmaccp529Chakmaccp5290Chakmaccp5291Chakmaccp5292Chakmaccp5293Chakmaccp5294Chakmaccp5295Chakmaccp5296Chakmaccp5297Chakmaccp5298Chakmaccp5299Chakmaccp53Chakmaccp530Chakmaccp5300Chakmaccp5301Chakmaccp5302Chakmaccp5303Chakmaccp5304Chakmaccp5305Chakmaccp5306Chakmaccp5307Chakmaccp5308Chakmaccp5309Chakmaccp531Chakmaccp5310Chakmaccp5311Chakmaccp5312Chakmaccp5313Chakmaccp5314Chakmaccp5315Chakmaccp5316Chakmaccp5317Chakmaccp5318Chakmaccp5319Chakmaccp532Chakmaccp5320Chakmaccp5321Chakmaccp5322Chakmaccp5323Chakmaccp5324Chakmaccp5325Chakmaccp5326Chakmaccp5327Chakmaccp5328Chakmaccp5329Chakmaccp533Chakmaccp5330Chakmaccp5331Chakmaccp5332Chakmaccp5333Chakmaccp5334Chakmaccp5335Chakmaccp5336Chakmaccp5337Chakmaccp5338Chakmaccp5339Chakmaccp534Chakmaccp5340Chakmaccp5341Chakmaccp5342Chakmaccp5343Chakmaccp5344Chakmaccp5345Chakmaccp5346Chakmaccp5347Chakmaccp5348Chakmaccp5349Chakmaccp535Chakmaccp5350Chakmaccp5351Chakmaccp5352Chakmaccp5353Chakmaccp5354Chakmaccp5355Chakmaccp5356Chakmaccp5357Chakmaccp5358Chakmaccp5359Chakmaccp536Chakmaccp5360Chakmaccp5361Chakmaccp5362Chakmaccp5363Chakmaccp5364Chakmaccp5365Chakmaccp5366Chakmaccp5367Chakmaccp5368Chakmaccp5369Chakmaccp537Chakmaccp5370Chakmaccp5371Chakmaccp5372Chakmaccp5373Chakmaccp5374Chakmaccp5375Chakmaccp5376Chakmaccp5377Chakmaccp5378Chakmaccp5379Chakmaccp538Chakmaccp5380Chakmaccp5381Chakmaccp5382Chakmaccp5383Chakmaccp5384Chakmaccp5385Chakmaccp5386Chakmaccp5387Chakmaccp5388Chakmaccp5389Chakmaccp539Chakmaccp5390Chakmaccp5391Chakmaccp5392Chakmaccp5393Chakmaccp5394Chakmaccp5395Chakmaccp5396Chakmaccp5397Chakmaccp5398Chakmaccp5399Chakmaccp54Chakmaccp540Chakmaccp5400Chakmaccp5401Chakmaccp5402Chakmaccp5403Chakmaccp5404Chakmaccp5405Chakmaccp5406Chakmaccp5407Chakmaccp5408Chakmaccp5409Chakmaccp541Chakmaccp5410Chakmaccp5411Chakmaccp5412Chakmaccp5413Chakmaccp5414Chakmaccp5415Chakmaccp5416Chakmaccp5417Chakmaccp5418Chakmaccp5419Chakmaccp542Chakmaccp5420Chakmaccp5421Chakmaccp5422Chakmaccp5423Chakmaccp5424Chakmaccp5425Chakmaccp5426Chakmaccp5427Chakmaccp5428Chakmaccp5429Chakmaccp543Chakmaccp5430Chakmaccp5431Chakmaccp5432Chakmaccp5433Chakmaccp5434Chakmaccp5435Chakmaccp5436Chakmaccp5437Chakmaccp5438Chakmaccp5439Chakmaccp544Chakmaccp5440Chakmaccp5441Chakmaccp5442Chakmaccp5443Chakmaccp5444Chakmaccp5445Chakmaccp5446Chakmaccp5447Chakmaccp5448Chakmaccp5449Chakmaccp545Chakmaccp5450Chakmaccp5451Chakmaccp5452Chakmaccp5453Chakmaccp5454Chakmaccp5455Chakmaccp5456Chakmaccp5457Chakmaccp5458Chakmaccp5459Chakmaccp546Chakmaccp5460Chakmaccp5461Chakmaccp5462Chakmaccp5463Chakmaccp5464Chakmaccp5465Chakmaccp5466Chakmaccp5467Chakmaccp5468Chakmaccp5469Chakmaccp547Chakmaccp5470Chakmaccp5471Chakmaccp5472Chakmaccp5473Chakmaccp5474Chakmaccp5475Chakmaccp5476Chakmaccp5477Chakmaccp5478Chakmaccp5479Chakmaccp548Chakmaccp5480Chakmaccp5481Chakmaccp5482Chakmaccp5483Chakmaccp5484Chakmaccp5485Chakmaccp5486Chakmaccp5487Chakmaccp5488Chakmaccp5489Chakmaccp549Chakmaccp5490Chakmaccp5491Chakmaccp5492Chakmaccp5493Chakmaccp5494Chakmaccp5495Chakmaccp5496Chakmaccp5497Chakmaccp5498Chakmaccp5499Chakmaccp55Chakmaccp550Chakmaccp5500Chakmaccp5501Chakmaccp5502Chakmaccp5503Chakmaccp5504Chakmaccp5505Chakmaccp5506Chakmaccp5507Chakmaccp5508Chakmaccp5509Chakmaccp551Chakmaccp5510Chakmaccp5511Chakmaccp5512Chakmaccp5513Chakmaccp5514Chakmaccp5515Chakmaccp5516Chakmaccp5517Chakmaccp5518Chakmaccp5519Chakmaccp552Chakmaccp5520Chakmaccp5521Chakmaccp5522Chakmaccp5523Chakmaccp5524Chakmaccp5525Chakmaccp5526Chakmaccp5527Chakmaccp5528Chakmaccp5529Chakmaccp553Chakmaccp5530Chakmaccp5531Chakmaccp5532Chakmaccp5533Chakmaccp5534Chakmaccp5535Chakmaccp5536Chakmaccp5537Chakmaccp5538Chakmaccp5539Chakmaccp554Chakmaccp5540Chakmaccp5541Chakmaccp5542Chakmaccp5543Chakmaccp5544Chakmaccp5545Chakmaccp5546Chakmaccp5547Chakmaccp5548Chakmaccp5549Chakmaccp555Chakmaccp5550Chakmaccp5551Chakmaccp5552Chakmaccp5553Chakmaccp5554Chakmaccp5555Chakmaccp5556Chakmaccp5557Chakmaccp5558Chakmaccp5559Chakmaccp556Chakmaccp5560Chakmaccp5561Chakmaccp5562Chakmaccp5563Chakmaccp5564Chakmaccp5565Chakmaccp5566Chakmaccp5567Chakmaccp5568Chakmaccp5569Chakmaccp557Chakmaccp5570Chakmaccp5571Chakmaccp5572Chakmaccp5573Chakmaccp5574Chakmaccp5575Chakmaccp5576Chakmaccp5577Chakmaccp5578Chakmaccp5579Chakmaccp558Chakmaccp5580Chakmaccp5581Chakmaccp5582Chakmaccp5583Chakmaccp5584Chakmaccp5585Chakmaccp5586Chakmaccp5587Chakmaccp5588Chakmaccp5589Chakmaccp559Chakmaccp5590Chakmaccp5591Chakmaccp5592Chakmaccp5593Chakmaccp5594Chakmaccp5595Chakmaccp5596Chakmaccp5597Chakmaccp5598Chakmaccp5599Chakmaccp56Chakmaccp560Chakmaccp5600Chakmaccp5601Chakmaccp5602Chakmaccp5603Chakmaccp5604Chakmaccp5605Chakmaccp5606Chakmaccp5607Chakmaccp5608Chakmaccp5609Chakmaccp561Chakmaccp5610Chakmaccp5611Chakmaccp5612Chakmaccp5613Chakmaccp5614Chakmaccp5615Chakmaccp5616Chakmaccp5617Chakmaccp5618Chakmaccp5619Chakmaccp562Chakmaccp5620Chakmaccp5621Chakmaccp5622Chakmaccp5623Chakmaccp5624Chakmaccp5625Chakmaccp5626Chakmaccp5627Chakmaccp5628Chakmaccp5629Chakmaccp563Chakmaccp5630Chakmaccp5631Chakmaccp5632Chakmaccp5633Chakmaccp5634Chakmaccp5635Chakmaccp5636Chakmaccp5637Chakmaccp5638Chakmaccp5639Chakmaccp564Chakmaccp5640Chakmaccp5641Chakmaccp5642Chakmaccp5643Chakmaccp5644Chakmaccp5645Chakmaccp5646Chakmaccp5647Chakmaccp5648Chakmaccp5649Chakmaccp565Chakmaccp5650Chakmaccp5651Chakmaccp5652Chakmaccp5653Chakmaccp5654Chakmaccp5655Chakmaccp5656Chakmaccp5657Chakmaccp5658Chakmaccp5659Chakmaccp566Chakmaccp5660Chakmaccp5661Chakmaccp5662Chakmaccp5663Chakmaccp5664Chakmaccp5665Chakmaccp5666Chakmaccp5667Chakmaccp5668Chakmaccp5669Chakmaccp567Chakmaccp5670Chakmaccp5671Chakmaccp5672Chakmaccp5673Chakmaccp5674Chakmaccp5675Chakmaccp5676Chakmaccp5677Chakmaccp5678Chakmaccp5679Chakmaccp568Chakmaccp5680Chakmaccp5681Chakmaccp5682Chakmaccp5683Chakmaccp5684Chakmaccp5685Chakmaccp5686Chakmaccp5687Chakmaccp5688Chakmaccp5689Chakmaccp569Chakmaccp5690Chakmaccp5691Chakmaccp5692Chakmaccp5693Chakmaccp5694Chakmaccp5695Chakmaccp5696Chakmaccp5697Chakmaccp5698Chakmaccp5699Chakmaccp57Chakmaccp570Chakmaccp5700Chakmaccp5701Chakmaccp5702Chakmaccp5703Chakmaccp5704Chakmaccp5705Chakmaccp5706Chakmaccp5707Chakmaccp5708Chakmaccp5709Chakmaccp571Chakmaccp5710Chakmaccp5711Chakmaccp5712Chakmaccp5713Chakmaccp5714Chakmaccp5715Chakmaccp5716Chakmaccp5717Chakmaccp5718Chakmaccp5719Chakmaccp572Chakmaccp5720Chakmaccp5721Chakmaccp5722Chakmaccp5723Chakmaccp5724Chakmaccp5725Chakmaccp5726Chakmaccp5727Chakmaccp5728Chakmaccp5729Chakmaccp573Chakmaccp5730Chakmaccp5731Chakmaccp5732Chakmaccp5733Chakmaccp5734Chakmaccp5735Chakmaccp5736Chakmaccp5737Chakmaccp5738Chakmaccp5739Chakmaccp574Chakmaccp5740Chakmaccp5741Chakmaccp5742Chakmaccp5743Chakmaccp5744Chakmaccp5745Chakmaccp5746Chakmaccp5747Chakmaccp5748Chakmaccp5749Chakmaccp575Chakmaccp5750Chakmaccp5751Chakmaccp5752Chakmaccp5753Chakmaccp5754Chakmaccp5755Chakmaccp5756Chakmaccp5757Chakmaccp5758Chakmaccp5759Chakmaccp576Chakmaccp5760Chakmaccp5761Chakmaccp5762Chakmaccp5763Chakmaccp5764Chakmaccp5765Chakmaccp5766Chakmaccp5767Chakmaccp5768Chakmaccp5769Chakmaccp577Chakmaccp5770Chakmaccp5771Chakmaccp5772Chakmaccp5773Chakmaccp5774Chakmaccp5775Chakmaccp5776Chakmaccp5777Chakmaccp5778Chakmaccp5779Chakmaccp578Chakmaccp5780Chakmaccp5781Chakmaccp5782Chakmaccp5783Chakmaccp5784Chakmaccp5785Chakmaccp5786Chakmaccp5787Chakmaccp5788Chakmaccp5789Chakmaccp579Chakmaccp5790Chakmaccp5791Chakmaccp5792Chakmaccp5793Chakmaccp5794Chakmaccp5795Chakmaccp5796Chakmaccp5797Chakmaccp5798Chakmaccp5799Chakmaccp58Chakmaccp580Chakmaccp5800Chakmaccp5801Chakmaccp5802Chakmaccp5803Chakmaccp5804Chakmaccp5805Chakmaccp5806Chakmaccp5807Chakmaccp5808Chakmaccp5809Chakmaccp581Chakmaccp5810Chakmaccp5811Chakmaccp5812Chakmaccp5813Chakmaccp5814Chakmaccp5815Chakmaccp5816Chakmaccp5817Chakmaccp5818Chakmaccp5819Chakmaccp582Chakmaccp5820Chakmaccp5821Chakmaccp5822Chakmaccp5823Chakmaccp5824Chakmaccp5825Chakmaccp5826Chakmaccp5827Chakmaccp5828Chakmaccp5829Chakmaccp583Chakmaccp5830Chakmaccp5831Chakmaccp5832Chakmaccp5833Chakmaccp5834Chakmaccp5835Chakmaccp5836Chakmaccp5837Chakmaccp5838Chakmaccp5839Chakmaccp584Chakmaccp5840Chakmaccp5841Chakmaccp5842Chakmaccp5843Chakmaccp5844Chakmaccp5845Chakmaccp5846Chakmaccp5847Chakmaccp5848Chakmaccp5849Chakmaccp585Chakmaccp5850Chakmaccp5851Chakmaccp5852Chakmaccp5853Chakmaccp5854Chakmaccp5855Chakmaccp5856Chakmaccp5857Chakmaccp5858Chakmaccp5859Chakmaccp586Chakmaccp5860Chakmaccp5861Chakmaccp5862Chakmaccp5863Chakmaccp5864Chakmaccp5865Chakmaccp5866Chakmaccp5867Chakmaccp5868Chakmaccp5869Chakmaccp587Chakmaccp5870Chakmaccp5871Chakmaccp5872Chakmaccp5873Chakmaccp5874Chakmaccp5875Chakmaccp5876Chakmaccp5877Chakmaccp5878Chakmaccp5879Chakmaccp588Chakmaccp5880Chakmaccp5881Chakmaccp5882Chakmaccp5883Chakmaccp5884Chakmaccp5885Chakmaccp5886Chakmaccp5887Chakmaccp5888Chakmaccp5889Chakmaccp589Chakmaccp5890Chakmaccp5891Chakmaccp5892Chakmaccp5893Chakmaccp5894Chakmaccp5895Chakmaccp5896Chakmaccp5897Chakmaccp5898Chakmaccp5899Chakmaccp59Chakmaccp590Chakmaccp5900Chakmaccp5901Chakmaccp5902Chakmaccp5903Chakmaccp5904Chakmaccp5905Chakmaccp5906Chakmaccp5907Chakmaccp5908Chakmaccp5909Chakmaccp591Chakmaccp5910Chakmaccp5911Chakmaccp5912Chakmaccp5913Chakmaccp5914Chakmaccp5915Chakmaccp5916Chakmaccp5917Chakmaccp5918Chakmaccp5919Chakmaccp592Chakmaccp5920Chakmaccp5921Chakmaccp5922Chakmaccp5923Chakmaccp5924Chakmaccp5925Chakmaccp5926Chakmaccp5927Chakmaccp5928Chakmaccp5929Chakmaccp593Chakmaccp5930Chakmaccp5931Chakmaccp5932Chakmaccp5933Chakmaccp5934Chakmaccp5935Chakmaccp5936Chakmaccp5937Chakmaccp5938Chakmaccp5939Chakmaccp594Chakmaccp5940Chakmaccp5941Chakmaccp5942Chakmaccp5943Chakmaccp5944Chakmaccp5945Chakmaccp5946Chakmaccp5947Chakmaccp5948Chakmaccp5949Chakmaccp595Chakmaccp5950Chakmaccp5951Chakmaccp5952Chakmaccp5953Chakmaccp5954Chakmaccp5955Chakmaccp5956Chakmaccp5957Chakmaccp5958Chakmaccp5959Chakmaccp596Chakmaccp5960Chakmaccp5961Chakmaccp5962Chakmaccp5963Chakmaccp5964Chakmaccp5965Chakmaccp5966Chakmaccp5967Chakmaccp5968Chakmaccp5969Chakmaccp597Chakmaccp5970Chakmaccp5971Chakmaccp5972Chakmaccp5973Chakmaccp5974Chakmaccp5975Chakmaccp5976Chakmaccp5977Chakmaccp5978Chakmaccp5979Chakmaccp598Chakmaccp5980Chakmaccp5981Chakmaccp5982Chakmaccp5983Chakmaccp5984Chakmaccp5985Chakmaccp5986Chakmaccp5987Chakmaccp5988Chakmaccp5989Chakmaccp599Chakmaccp5990Chakmaccp5991Chakmaccp5992Chakmaccp5993Chakmaccp5994Chakmaccp5995Chakmaccp5996Chakmaccp5997Chakmaccp5998Chakmaccp5999Chakmaccp6Chakmaccp60Chakmaccp600Chakmaccp6000Chakmaccp6001Chakmaccp6002Chakmaccp6003Chakmaccp6004Chakmaccp6005Chakmaccp6006Chakmaccp6007Chakmaccp6008Chakmaccp6009Chakmaccp601Chakmaccp6010Chakmaccp6011Chakmaccp6012Chakmaccp6013Chakmaccp6014Chakmaccp6015Chakmaccp6016Chakmaccp6017Chakmaccp6018Chakmaccp6019Chakmaccp602Chakmaccp6020Chakmaccp6021Chakmaccp6022Chakmaccp6023Chakmaccp6024Chakmaccp6025Chakmaccp6026Chakmaccp6027Chakmaccp6028Chakmaccp6029Chakmaccp603Chakmaccp6030Chakmaccp6031Chakmaccp6032Chakmaccp6033Chakmaccp6034Chakmaccp6035Chakmaccp6036Chakmaccp6037Chakmaccp6038Chakmaccp6039Chakmaccp604Chakmaccp6040Chakmaccp6041Chakmaccp6042Chakmaccp6043Chakmaccp6044Chakmaccp6045Chakmaccp6046Chakmaccp6047Chakmaccp6048Chakmaccp6049Chakmaccp605Chakmaccp6050Chakmaccp6051Chakmaccp6052Chakmaccp6053Chakmaccp6054Chakmaccp6055Chakmaccp6056Chakmaccp6057Chakmaccp6058Chakmaccp6059Chakmaccp606Chakmaccp6060Chakmaccp6061Chakmaccp6062Chakmaccp6063Chakmaccp6064Chakmaccp6065Chakmaccp6066Chakmaccp6067Chakmaccp6068Chakmaccp6069Chakmaccp607Chakmaccp6070Chakmaccp6071Chakmaccp6072Chakmaccp6073Chakmaccp6074Chakmaccp6075Chakmaccp6076Chakmaccp6077Chakmaccp6078Chakmaccp6079Chakmaccp608Chakmaccp6080Chakmaccp6081Chakmaccp6082Chakmaccp6083Chakmaccp6084Chakmaccp6085Chakmaccp6086Chakmaccp6087Chakmaccp6088Chakmaccp6089Chakmaccp609Chakmaccp6090Chakmaccp6091Chakmaccp6092Chakmaccp6093Chakmaccp6094Chakmaccp6095Chakmaccp6096Chakmaccp6097Chakmaccp6098Chakmaccp6099Chakmaccp61Chakmaccp610Chakmaccp6100Chakmaccp6101Chakmaccp6102Chakmaccp6103Chakmaccp6104Chakmaccp6105Chakmaccp6106Chakmaccp6107Chakmaccp6108Chakmaccp6109Chakmaccp611Chakmaccp6110Chakmaccp6111Chakmaccp6112Chakmaccp6113Chakmaccp6114Chakmaccp6115Chakmaccp6116Chakmaccp6117Chakmaccp6118Chakmaccp6119Chakmaccp612Chakmaccp6120Chakmaccp6121Chakmaccp6122Chakmaccp6123Chakmaccp6124Chakmaccp6125Chakmaccp6126Chakmaccp6127Chakmaccp6128Chakmaccp6129Chakmaccp613Chakmaccp6130Chakmaccp6131Chakmaccp6132Chakmaccp6133Chakmaccp6134Chakmaccp6135Chakmaccp6136Chakmaccp6137Chakmaccp6138Chakmaccp6139Chakmaccp614Chakmaccp6140Chakmaccp6141Chakmaccp6142Chakmaccp6143Chakmaccp6144Chakmaccp6145Chakmaccp6146Chakmaccp6147Chakmaccp6148Chakmaccp6149Chakmaccp615Chakmaccp6150Chakmaccp6151Chakmaccp6152Chakmaccp6153Chakmaccp6154Chakmaccp6155Chakmaccp6156Chakmaccp6157Chakmaccp6158Chakmaccp6159Chakmaccp616Chakmaccp6160Chakmaccp6161Chakmaccp6162Chakmaccp6163Chakmaccp6164Chakmaccp6165Chakmaccp6166Chakmaccp6167Chakmaccp6168Chakmaccp6169Chakmaccp617Chakmaccp6170Chakmaccp6171Chakmaccp6172Chakmaccp6173Chakmaccp6174Chakmaccp6175Chakmaccp6176Chakmaccp6177Chakmaccp6178Chakmaccp6179Chakmaccp618Chakmaccp6180Chakmaccp6181Chakmaccp6182Chakmaccp6183Chakmaccp6184Chakmaccp6185Chakmaccp6186Chakmaccp6187Chakmaccp6188Chakmaccp6189Chakmaccp619Chakmaccp6190Chakmaccp6191Chakmaccp6192Chakmaccp6193Chakmaccp6194Chakmaccp6195Chakmaccp6196Chakmaccp6197Chakmaccp6198Chakmaccp6199Chakmaccp62Chakmaccp620Chakmaccp6200Chakmaccp6201Chakmaccp6202Chakmaccp6203Chakmaccp6204Chakmaccp6205Chakmaccp6206Chakmaccp6207Chakmaccp6208Chakmaccp6209Chakmaccp621Chakmaccp6210Chakmaccp6211Chakmaccp6212Chakmaccp6213Chakmaccp6214Chakmaccp6215Chakmaccp6216Chakmaccp6217Chakmaccp6218Chakmaccp6219Chakmaccp622Chakmaccp6220Chakmaccp6221Chakmaccp6222Chakmaccp6223Chakmaccp6224Chakmaccp6225Chakmaccp6226Chakmaccp6227Chakmaccp6228Chakmaccp6229Chakmaccp623Chakmaccp6230Chakmaccp6231Chakmaccp6232Chakmaccp6233Chakmaccp6234Chakmaccp6235Chakmaccp6236Chakmaccp6237Chakmaccp6238Chakmaccp6239Chakmaccp624Chakmaccp6240Chakmaccp6241Chakmaccp6242Chakmaccp6243Chakmaccp6244Chakmaccp6245Chakmaccp6246Chakmaccp6247Chakmaccp6248Chakmaccp6249Chakmaccp625Chakmaccp6250Chakmaccp6251Chakmaccp6252Chakmaccp6253Chakmaccp6254Chakmaccp6255Chakmaccp6256Chakmaccp6257Chakmaccp6258Chakmaccp6259Chakmaccp626Chakmaccp6260Chakmaccp6261Chakmaccp6262Chakmaccp6263Chakmaccp6264Chakmaccp6265Chakmaccp6266Chakmaccp6267Chakmaccp6268Chakmaccp6269Chakmaccp627Chakmaccp6270Chakmaccp6271Chakmaccp6272Chakmaccp6273Chakmaccp6274Chakmaccp6275Chakmaccp6276Chakmaccp6277Chakmaccp6278Chakmaccp6279Chakmaccp628Chakmaccp6280Chakmaccp6281Chakmaccp6282Chakmaccp6283Chakmaccp6284Chakmaccp6285Chakmaccp6286Chakmaccp6287Chakmaccp6288Chakmaccp6289Chakmaccp629Chakmaccp6290Chakmaccp6291Chakmaccp6292Chakmaccp6293Chakmaccp6294Chakmaccp6295Chakmaccp6296Chakmaccp6297Chakmaccp6298Chakmaccp6299Chakmaccp63Chakmaccp630Chakmaccp6300Chakmaccp6301Chakmaccp6302Chakmaccp6303Chakmaccp6304Chakmaccp6305Chakmaccp6306Chakmaccp6307Chakmaccp6308Chakmaccp6309Chakmaccp631Chakmaccp6310Chakmaccp6311Chakmaccp6312Chakmaccp6313Chakmaccp6314Chakmaccp6315Chakmaccp6316Chakmaccp6317Chakmaccp6318Chakmaccp6319Chakmaccp632Chakmaccp6320Chakmaccp6321Chakmaccp6322Chakmaccp6323Chakmaccp6324Chakmaccp6325Chakmaccp6326Chakmaccp6327Chakmaccp6328Chakmaccp6329Chakmaccp633Chakmaccp6330Chakmaccp6331Chakmaccp6332Chakmaccp6333Chakmaccp6334Chakmaccp6335Chakmaccp6336Chakmaccp6337Chakmaccp6338Chakmaccp6339Chakmaccp634Chakmaccp6340Chakmaccp6341Chakmaccp6342Chakmaccp6343Chakmaccp6344Chakmaccp6345Chakmaccp6346Chakmaccp6347Chakmaccp6348Chakmaccp6349Chakmaccp635Chakmaccp6350Chakmaccp6351Chakmaccp6352Chakmaccp6353Chakmaccp6354Chakmaccp6355Chakmaccp6356Chakmaccp6357Chakmaccp6358Chakmaccp6359Chakmaccp636Chakmaccp6360Chakmaccp6361Chakmaccp6362Chakmaccp6363Chakmaccp6364Chakmaccp6365Chakmaccp6366Chakmaccp6367Chakmaccp6368Chakmaccp6369Chakmaccp637Chakmaccp6370Chakmaccp6371Chakmaccp6372Chakmaccp6373Chakmaccp6374Chakmaccp6375Chakmaccp6376Chakmaccp6377Chakmaccp6378Chakmaccp6379Chakmaccp638Chakmaccp6380Chakmaccp6381Chakmaccp6382Chakmaccp6383Chakmaccp6384Chakmaccp6385Chakmaccp6386Chakmaccp6387Chakmaccp6388Chakmaccp6389Chakmaccp639Chakmaccp6390Chakmaccp6391Chakmaccp6392Chakmaccp6393Chakmaccp6394Chakmaccp6395Chakmaccp6396Chakmaccp6397Chakmaccp6398Chakmaccp6399Chakmaccp64Chakmaccp640Chakmaccp6400Chakmaccp6401Chakmaccp6402Chakmaccp6403Chakmaccp6404Chakmaccp6405Chakmaccp6406Chakmaccp6407Chakmaccp6408Chakmaccp6409Chakmaccp641Chakmaccp6410Chakmaccp6411Chakmaccp6412Chakmaccp6413Chakmaccp6414Chakmaccp6415Chakmaccp6416Chakmaccp6417Chakmaccp6418Chakmaccp6419Chakmaccp642Chakmaccp6420Chakmaccp6421Chakmaccp6422Chakmaccp6423Chakmaccp6424Chakmaccp6425Chakmaccp6426Chakmaccp6427Chakmaccp6428Chakmaccp6429Chakmaccp643Chakmaccp6430Chakmaccp6431Chakmaccp6432Chakmaccp6433Chakmaccp6434Chakmaccp6435Chakmaccp6436Chakmaccp6437Chakmaccp6438Chakmaccp6439Chakmaccp644Chakmaccp6440Chakmaccp6441Chakmaccp6442Chakmaccp6443Chakmaccp6444Chakmaccp6445Chakmaccp6446Chakmaccp6447Chakmaccp6448Chakmaccp6449Chakmaccp645Chakmaccp6450Chakmaccp6451Chakmaccp6452Chakmaccp6453Chakmaccp6454Chakmaccp6455Chakmaccp6456Chakmaccp6457Chakmaccp6458Chakmaccp6459Chakmaccp646Chakmaccp6460Chakmaccp6461Chakmaccp6462Chakmaccp6463Chakmaccp6464Chakmaccp6465Chakmaccp6466Chakmaccp6467Chakmaccp6468Chakmaccp6469Chakmaccp647Chakmaccp6470Chakmaccp6471Chakmaccp6472Chakmaccp6473Chakmaccp6474Chakmaccp6475Chakmaccp6476Chakmaccp6477Chakmaccp6478Chakmaccp6479Chakmaccp648Chakmaccp6480Chakmaccp6481Chakmaccp6482Chakmaccp6483Chakmaccp6484Chakmaccp6485Chakmaccp6486Chakmaccp6487Chakmaccp6488Chakmaccp6489Chakmaccp649Chakmaccp6490Chakmaccp6491Chakmaccp6492Chakmaccp6493Chakmaccp6494Chakmaccp6495Chakmaccp6496Chakmaccp6497Chakmaccp6498Chakmaccp6499Chakmaccp65Chakmaccp650Chakmaccp6500Chakmaccp6501Chakmaccp6502Chakmaccp6503Chakmaccp6504Chakmaccp6505Chakmaccp6506Chakmaccp6507Chakmaccp6508Chakmaccp6509Chakmaccp651Chakmaccp6510Chakmaccp6511Chakmaccp6512Chakmaccp6513Chakmaccp6514Chakmaccp6515Chakmaccp6516Chakmaccp6517Chakmaccp6518Chakmaccp6519Chakmaccp652Chakmaccp6520Chakmaccp6521Chakmaccp6522Chakmaccp6523Chakmaccp6524Chakmaccp6525Chakmaccp6526Chakmaccp6527Chakmaccp6528Chakmaccp6529Chakmaccp653Chakmaccp6530Chakmaccp6531Chakmaccp6532Chakmaccp6533Chakmaccp6534Chakmaccp6535Chakmaccp6536Chakmaccp6537Chakmaccp6538Chakmaccp6539Chakmaccp654Chakmaccp6540Chakmaccp6541Chakmaccp6542Chakmaccp6543Chakmaccp6544Chakmaccp6545Chakmaccp6546Chakmaccp6547Chakmaccp6548Chakmaccp6549Chakmaccp655Chakmaccp6550Chakmaccp6551Chakmaccp6552Chakmaccp6553Chakmaccp6554Chakmaccp6555Chakmaccp6556Chakmaccp6557Chakmaccp6558Chakmaccp6559Chakmaccp656Chakmaccp6560Chakmaccp6561Chakmaccp6562Chakmaccp6563Chakmaccp6564Chakmaccp6565Chakmaccp6566Chakmaccp6567Chakmaccp6568Chakmaccp6569Chakmaccp657Chakmaccp6570Chakmaccp6571Chakmaccp6572Chakmaccp6573Chakmaccp6574Chakmaccp6575Chakmaccp6576Chakmaccp6577Chakmaccp6578Chakmaccp6579Chakmaccp658Chakmaccp6580Chakmaccp6581Chakmaccp6582Chakmaccp6583Chakmaccp6584Chakmaccp6585Chakmaccp6586Chakmaccp6587Chakmaccp6588Chakmaccp6589Chakmaccp659Chakmaccp6590Chakmaccp6591Chakmaccp6592Chakmaccp6593Chakmaccp6594Chakmaccp6595Chakmaccp6596Chakmaccp6597Chakmaccp6598Chakmaccp6599Chakmaccp66Chakmaccp660Chakmaccp6600Chakmaccp6601Chakmaccp6602Chakmaccp6603Chakmaccp6604Chakmaccp6605Chakmaccp6606Chakmaccp6607Chakmaccp6608Chakmaccp6609Chakmaccp661Chakmaccp6610Chakmaccp6611Chakmaccp6612Chakmaccp6613Chakmaccp6614Chakmaccp6615Chakmaccp6616Chakmaccp6617Chakmaccp6618Chakmaccp6619Chakmaccp662Chakmaccp6620Chakmaccp6621Chakmaccp6622Chakmaccp6623Chakmaccp6624Chakmaccp6625Chakmaccp6626Chakmaccp6627Chakmaccp6628Chakmaccp6629Chakmaccp663Chakmaccp6630Chakmaccp6631Chakmaccp6632Chakmaccp6633Chakmaccp6634Chakmaccp6635Chakmaccp6636Chakmaccp6637Chakmaccp6638Chakmaccp6639Chakmaccp664Chakmaccp6640Chakmaccp6641Chakmaccp6642Chakmaccp6643Chakmaccp6644Chakmaccp6645Chakmaccp6646Chakmaccp6647Chakmaccp6648Chakmaccp6649Chakmaccp665Chakmaccp6650Chakmaccp6651Chakmaccp6652Chakmaccp6653Chakmaccp6654Chakmaccp6655Chakmaccp6656Chakmaccp6657Chakmaccp6658Chakmaccp6659Chakmaccp666Chakmaccp6660Chakmaccp6661Chakmaccp6662Chakmaccp6663Chakmaccp6664Chakmaccp6665Chakmaccp6666Chakmaccp6667Chakmaccp6668Chakmaccp6669Chakmaccp667Chakmaccp6670Chakmaccp6671Chakmaccp6672Chakmaccp6673Chakmaccp6674Chakmaccp6675Chakmaccp6676Chakmaccp6677Chakmaccp6678Chakmaccp6679Chakmaccp668Chakmaccp6680Chakmaccp6681Chakmaccp6682Chakmaccp6683Chakmaccp6684Chakmaccp6685Chakmaccp6686Chakmaccp6687Chakmaccp6688Chakmaccp6689Chakmaccp669Chakmaccp6690Chakmaccp6691Chakmaccp6692Chakmaccp6693Chakmaccp6694Chakmaccp6695Chakmaccp6696Chakmaccp6697Chakmaccp6698Chakmaccp6699Chakmaccp67Chakmaccp670Chakmaccp6700Chakmaccp6701Chakmaccp6702Chakmaccp6703Chakmaccp6704Chakmaccp6705Chakmaccp6706Chakmaccp6707Chakmaccp6708Chakmaccp6709Chakmaccp671Chakmaccp6710Chakmaccp6711Chakmaccp6712Chakmaccp6713Chakmaccp6714Chakmaccp6715Chakmaccp6716Chakmaccp6717Chakmaccp6718Chakmaccp6719Chakmaccp672Chakmaccp6720Chakmaccp6721Chakmaccp6722Chakmaccp6723Chakmaccp6724Chakmaccp6725Chakmaccp6726Chakmaccp6727Chakmaccp6728Chakmaccp6729Chakmaccp673Chakmaccp6730Chakmaccp6731Chakmaccp6732Chakmaccp6733Chakmaccp6734Chakmaccp6735Chakmaccp6736Chakmaccp6737Chakmaccp6738Chakmaccp6739Chakmaccp674Chakmaccp6740Chakmaccp6741Chakmaccp6742Chakmaccp6743Chakmaccp6744Chakmaccp6745Chakmaccp6746Chakmaccp6747Chakmaccp6748Chakmaccp6749Chakmaccp675Chakmaccp6750Chakmaccp6751Chakmaccp6752Chakmaccp6753Chakmaccp6754Chakmaccp6755Chakmaccp6756Chakmaccp6757Chakmaccp6758Chakmaccp6759Chakmaccp676Chakmaccp6760Chakmaccp6761Chakmaccp6762Chakmaccp6763Chakmaccp6764Chakmaccp6765Chakmaccp6766Chakmaccp6767Chakmaccp6768Chakmaccp6769Chakmaccp677Chakmaccp6770Chakmaccp6771Chakmaccp6772Chakmaccp6773Chakmaccp6774Chakmaccp6775Chakmaccp6776Chakmaccp6777Chakmaccp6778Chakmaccp6779Chakmaccp678Chakmaccp6780Chakmaccp6781Chakmaccp6782Chakmaccp6783Chakmaccp6784Chakmaccp6785Chakmaccp6786Chakmaccp6787Chakmaccp6788Chakmaccp6789Chakmaccp679Chakmaccp6790Chakmaccp6791Chakmaccp6792Chakmaccp6793Chakmaccp6794Chakmaccp6795Chakmaccp6796Chakmaccp6797Chakmaccp6798Chakmaccp6799Chakmaccp68Chakmaccp680Chakmaccp6800Chakmaccp6801Chakmaccp6802Chakmaccp6803Chakmaccp6804Chakmaccp6805Chakmaccp6806Chakmaccp6807Chakmaccp6808Chakmaccp6809Chakmaccp681Chakmaccp6810Chakmaccp6811Chakmaccp6812Chakmaccp6813Chakmaccp6814Chakmaccp6815Chakmaccp6816Chakmaccp6817Chakmaccp6818Chakmaccp6819Chakmaccp682Chakmaccp6820Chakmaccp6821Chakmaccp6822Chakmaccp6823Chakmaccp6824Chakmaccp6825Chakmaccp6826Chakmaccp6827Chakmaccp6828Chakmaccp6829Chakmaccp683Chakmaccp6830Chakmaccp6831Chakmaccp6832Chakmaccp6833Chakmaccp6834Chakmaccp6835Chakmaccp6836Chakmaccp6837Chakmaccp6838Chakmaccp6839Chakmaccp684Chakmaccp6840Chakmaccp6841Chakmaccp6842Chakmaccp6843Chakmaccp6844Chakmaccp6845Chakmaccp6846Chakmaccp6847Chakmaccp6848Chakmaccp6849Chakmaccp685Chakmaccp6850Chakmaccp6851Chakmaccp6852Chakmaccp6853Chakmaccp6854Chakmaccp6855Chakmaccp6856Chakmaccp6857Chakmaccp6858Chakmaccp6859Chakmaccp686Chakmaccp6860Chakmaccp6861Chakmaccp6862Chakmaccp6863Chakmaccp6864Chakmaccp6865Chakmaccp6866Chakmaccp6867Chakmaccp6868Chakmaccp6869Chakmaccp687Chakmaccp6870Chakmaccp6871Chakmaccp6872Chakmaccp6873Chakmaccp6874Chakmaccp6875Chakmaccp6876Chakmaccp6877Chakmaccp6878Chakmaccp6879Chakmaccp688Chakmaccp6880Chakmaccp6881Chakmaccp6882Chakmaccp6883Chakmaccp6884Chakmaccp6885Chakmaccp6886Chakmaccp6887Chakmaccp6888Chakmaccp6889Chakmaccp689Chakmaccp6890Chakmaccp6891Chakmaccp6892Chakmaccp6893Chakmaccp6894Chakmaccp6895Chakmaccp6896Chakmaccp6897Chakmaccp6898Chakmaccp6899Chakmaccp69Chakmaccp690Chakmaccp6900Chakmaccp6901Chakmaccp6902Chakmaccp6903Chakmaccp6904Chakmaccp6905Chakmaccp6906Chakmaccp6907Chakmaccp6908Chakmaccp6909Chakmaccp691Chakmaccp6910Chakmaccp6911Chakmaccp6912Chakmaccp6913Chakmaccp6914Chakmaccp6915Chakmaccp6916Chakmaccp6917Chakmaccp6918Chakmaccp6919Chakmaccp692Chakmaccp6920Chakmaccp6921Chakmaccp6922Chakmaccp6923Chakmaccp6924Chakmaccp6925Chakmaccp6926Chakmaccp6927Chakmaccp6928Chakmaccp6929Chakmaccp693Chakmaccp6930Chakmaccp6931Chakmaccp6932Chakmaccp6933Chakmaccp6934Chakmaccp6935Chakmaccp6936Chakmaccp6937Chakmaccp6938Chakmaccp6939Chakmaccp694Chakmaccp6940Chakmaccp6941Chakmaccp6942Chakmaccp6943Chakmaccp6944Chakmaccp6945Chakmaccp6946Chakmaccp6947Chakmaccp6948Chakmaccp6949Chakmaccp695Chakmaccp6950Chakmaccp6951Chakmaccp6952Chakmaccp6953Chakmaccp6954Chakmaccp6955Chakmaccp6956Chakmaccp6957Chakmaccp6958Chakmaccp6959Chakmaccp696Chakmaccp6960Chakmaccp6961Chakmaccp6962Chakmaccp6963Chakmaccp6964Chakmaccp6965Chakmaccp6966Chakmaccp6967Chakmaccp6968Chakmaccp6969Chakmaccp697Chakmaccp6970Chakmaccp6971Chakmaccp6972Chakmaccp6973Chakmaccp6974Chakmaccp6975Chakmaccp6976Chakmaccp6977Chakmaccp6978Chakmaccp6979Chakmaccp698Chakmaccp6980Chakmaccp6981Chakmaccp6982Chakmaccp6983Chakmaccp6984Chakmaccp6985Chakmaccp6986Chakmaccp6987Chakmaccp6988Chakmaccp6989Chakmaccp699Chakmaccp6990Chakmaccp6991Chakmaccp6992Chakmaccp6993Chakmaccp6994Chakmaccp6995Chakmaccp6996Chakmaccp6997Chakmaccp6998Chakmaccp6999Chakmaccp7Chakmaccp70Chakmaccp700Chakmaccp7000Chakmaccp7001Chakmaccp7002Chakmaccp7003Chakmaccp7004Chakmaccp7005Chakmaccp7006Chakmaccp7007Chakmaccp7008Chakmaccp7009Chakmaccp701Chakmaccp7010Chakmaccp7011Chakmaccp7012Chakmaccp7013Chakmaccp7014Chakmaccp7015Chakmaccp7016Chakmaccp7017Chakmaccp7018Chakmaccp7019Chakmaccp702Chakmaccp7020Chakmaccp7021Chakmaccp7022Chakmaccp7023Chakmaccp7024Chakmaccp7025Chakmaccp7026Chakmaccp7027Chakmaccp7028Chakmaccp7029Chakmaccp703Chakmaccp7030Chakmaccp7031Chakmaccp7032Chakmaccp7033Chakmaccp7034Chakmaccp7035Chakmaccp7036Chakmaccp7037Chakmaccp7038Chakmaccp7039Chakmaccp704Chakmaccp7040Chakmaccp7041Chakmaccp7042Chakmaccp7043Chakmaccp7044Chakmaccp7045Chakmaccp7046Chakmaccp7047Chakmaccp7048Chakmaccp7049Chakmaccp705Chakmaccp7050Chakmaccp7051Chakmaccp7052Chakmaccp7053Chakmaccp7054Chakmaccp7055Chakmaccp7056Chakmaccp7057Chakmaccp7058Chakmaccp7059Chakmaccp706Chakmaccp7060Chakmaccp7061Chakmaccp7062Chakmaccp7063Chakmaccp7064Chakmaccp7065Chakmaccp7066Chakmaccp7067Chakmaccp7068Chakmaccp7069Chakmaccp707Chakmaccp7070Chakmaccp7071Chakmaccp7072Chakmaccp7073Chakmaccp7074Chakmaccp7075Chakmaccp7076Chakmaccp7077Chakmaccp7078Chakmaccp7079Chakmaccp708Chakmaccp7080Chakmaccp7081Chakmaccp7082Chakmaccp7083Chakmaccp7084Chakmaccp7085Chakmaccp7086Chakmaccp7087Chakmaccp7088Chakmaccp7089Chakmaccp709Chakmaccp7090Chakmaccp7091Chakmaccp7092Chakmaccp7093Chakmaccp7094Chakmaccp7095Chakmaccp7096Chakmaccp7097Chakmaccp7098Chakmaccp7099Chakmaccp71Chakmaccp710Chakmaccp7100Chakmaccp7101Chakmaccp7102Chakmaccp7103Chakmaccp7104Chakmaccp7105Chakmaccp7106Chakmaccp7107Chakmaccp7108Chakmaccp7109Chakmaccp711Chakmaccp7110Chakmaccp7111Chakmaccp7112Chakmaccp7113Chakmaccp7114Chakmaccp7115Chakmaccp7116Chakmaccp7117Chakmaccp7118Chakmaccp7119Chakmaccp712Chakmaccp7120Chakmaccp7121Chakmaccp7122Chakmaccp7123Chakmaccp7124Chakmaccp7125Chakmaccp7126Chakmaccp7127Chakmaccp7128Chakmaccp7129Chakmaccp713Chakmaccp7130Chakmaccp7131Chakmaccp7132Chakmaccp7133Chakmaccp7134Chakmaccp7135Chakmaccp7136Chakmaccp7137Chakmaccp7138Chakmaccp7139Chakmaccp714Chakmaccp7140Chakmaccp7141Chakmaccp7142Chakmaccp7143Chakmaccp7144Chakmaccp7145Chakmaccp7146Chakmaccp7147Chakmaccp7148Chakmaccp7149Chakmaccp715Chakmaccp7150Chakmaccp7151Chakmaccp7152Chakmaccp7153Chakmaccp7154Chakmaccp7155Chakmaccp7156Chakmaccp7157Chakmaccp7158Chakmaccp7159Chakmaccp716Chakmaccp7160Chakmaccp7161Chakmaccp7162Chakmaccp7163Chakmaccp7164Chakmaccp7165Chakmaccp7166Chakmaccp7167Chakmaccp7168Chakmaccp7169Chakmaccp717Chakmaccp7170Chakmaccp7171Chakmaccp7172Chakmaccp7173Chakmaccp7174Chakmaccp7175Chakmaccp7176Chakmaccp7177Chakmaccp7178Chakmaccp7179Chakmaccp718Chakmaccp7180Chakmaccp7181Chakmaccp7182Chakmaccp7183Chakmaccp7184Chakmaccp7185Chakmaccp7186Chakmaccp7187Chakmaccp7188Chakmaccp7189Chakmaccp719Chakmaccp7190Chakmaccp7191Chakmaccp7192Chakmaccp7193Chakmaccp7194Chakmaccp7195Chakmaccp7196Chakmaccp7197Chakmaccp7198Chakmaccp7199Chakmaccp72Chakmaccp720Chakmaccp7200Chakmaccp7201Chakmaccp7202Chakmaccp7203Chakmaccp7204Chakmaccp7205Chakmaccp7206Chakmaccp7207Chakmaccp7208Chakmaccp7209Chakmaccp721Chakmaccp7210Chakmaccp7211Chakmaccp7212Chakmaccp7213Chakmaccp7214Chakmaccp7215Chakmaccp7216Chakmaccp7217Chakmaccp7218Chakmaccp7219Chakmaccp722Chakmaccp7220Chakmaccp7221Chakmaccp7222Chakmaccp7223Chakmaccp7224Chakmaccp7225Chakmaccp7226Chakmaccp7227Chakmaccp7228Chakmaccp7229Chakmaccp723Chakmaccp7230Chakmaccp7231Chakmaccp7232Chakmaccp7233Chakmaccp7234Chakmaccp7235Chakmaccp7236Chakmaccp7237Chakmaccp7238Chakmaccp7239Chakmaccp724Chakmaccp7240Chakmaccp7241Chakmaccp7242Chakmaccp7243Chakmaccp7244Chakmaccp7245Chakmaccp7246Chakmaccp7247Chakmaccp7248Chakmaccp7249Chakmaccp725Chakmaccp7250Chakmaccp7251Chakmaccp7252Chakmaccp7253Chakmaccp7254Chakmaccp7255Chakmaccp7256Chakmaccp7257Chakmaccp7258Chakmaccp7259Chakmaccp726Chakmaccp7260Chakmaccp7261Chakmaccp7262Chakmaccp7263Chakmaccp7264Chakmaccp7265Chakmaccp7266Chakmaccp7267Chakmaccp7268Chakmaccp7269Chakmaccp727Chakmaccp7270Chakmaccp7271Chakmaccp7272Chakmaccp7273Chakmaccp7274Chakmaccp7275Chakmaccp7276Chakmaccp7277Chakmaccp7278Chakmaccp7279Chakmaccp728Chakmaccp7280Chakmaccp7281Chakmaccp7282Chakmaccp7283Chakmaccp7284Chakmaccp7285Chakmaccp7286Chakmaccp7287Chakmaccp7288Chakmaccp7289Chakmaccp729Chakmaccp7290Chakmaccp7291Chakmaccp7292Chakmaccp7293Chakmaccp7294Chakmaccp7295Chakmaccp7296Chakmaccp7297Chakmaccp7298Chakmaccp7299Chakmaccp73Chakmaccp730Chakmaccp7300Chakmaccp7301Chakmaccp7302Chakmaccp7303Chakmaccp7304Chakmaccp7305Chakmaccp7306Chakmaccp7307Chakmaccp7308Chakmaccp7309Chakmaccp731Chakmaccp7310Chakmaccp7311Chakmaccp7312Chakmaccp7313Chakmaccp7314Chakmaccp7315Chakmaccp7316Chakmaccp7317Chakmaccp7318Chakmaccp7319Chakmaccp732Chakmaccp7320Chakmaccp7321Chakmaccp7322Chakmaccp7323Chakmaccp7324Chakmaccp7325Chakmaccp7326Chakmaccp7327Chakmaccp7328Chakmaccp7329Chakmaccp733Chakmaccp7330Chakmaccp7331Chakmaccp7332Chakmaccp7333Chakmaccp7334Chakmaccp7335Chakmaccp7336Chakmaccp7337Chakmaccp7338Chakmaccp7339Chakmaccp734Chakmaccp7340Chakmaccp7341Chakmaccp7342Chakmaccp7343Chakmaccp7344Chakmaccp7345Chakmaccp7346Chakmaccp7347Chakmaccp7348Chakmaccp7349Chakmaccp735Chakmaccp7350Chakmaccp7351Chakmaccp7352Chakmaccp7353Chakmaccp7354Chakmaccp7355Chakmaccp7356Chakmaccp7357Chakmaccp7358Chakmaccp7359Chakmaccp736Chakmaccp7360Chakmaccp7361Chakmaccp7362Chakmaccp7363Chakmaccp7364Chakmaccp7365Chakmaccp7366Chakmaccp7367Chakmaccp7368Chakmaccp7369Chakmaccp737Chakmaccp7370Chakmaccp7371Chakmaccp7372Chakmaccp7373Chakmaccp7374Chakmaccp7375Chakmaccp7376Chakmaccp7377Chakmaccp7378Chakmaccp7379Chakmaccp738Chakmaccp7380Chakmaccp7381Chakmaccp7382Chakmaccp7383Chakmaccp7384Chakmaccp7385Chakmaccp7386Chakmaccp7387Chakmaccp7388Chakmaccp7389Chakmaccp739Chakmaccp7390Chakmaccp7391Chakmaccp7392Chakmaccp7393Chakmaccp7394Chakmaccp7395Chakmaccp7396Chakmaccp7397Chakmaccp7398Chakmaccp7399Chakmaccp74Chakmaccp740Chakmaccp7400Chakmaccp7401Chakmaccp7402Chakmaccp7403Chakmaccp7404Chakmaccp7405Chakmaccp7406Chakmaccp7407Chakmaccp7408Chakmaccp7409Chakmaccp741Chakmaccp7410Chakmaccp7411Chakmaccp7412Chakmaccp7413Chakmaccp7414Chakmaccp7415Chakmaccp7416Chakmaccp7417Chakmaccp7418Chakmaccp7419Chakmaccp742Chakmaccp7420Chakmaccp7421Chakmaccp7422Chakmaccp7423Chakmaccp7424Chakmaccp7425Chakmaccp7426Chakmaccp7427Chakmaccp7428Chakmaccp7429Chakmaccp743Chakmaccp7430Chakmaccp7431Chakmaccp7432Chakmaccp7433Chakmaccp7434Chakmaccp7435Chakmaccp7436Chakmaccp7437Chakmaccp7438Chakmaccp7439Chakmaccp744Chakmaccp7440Chakmaccp7441Chakmaccp7442Chakmaccp7443Chakmaccp7444Chakmaccp7445Chakmaccp7446Chakmaccp7447Chakmaccp7448Chakmaccp7449Chakmaccp745Chakmaccp7450Chakmaccp7451Chakmaccp7452Chakmaccp7453Chakmaccp7454Chakmaccp7455Chakmaccp7456Chakmaccp7457Chakmaccp7458Chakmaccp7459Chakmaccp746Chakmaccp7460Chakmaccp7461Chakmaccp7462Chakmaccp7463Chakmaccp7464Chakmaccp7465Chakmaccp7466Chakmaccp7467Chakmaccp7468Chakmaccp7469Chakmaccp747Chakmaccp7470Chakmaccp7471Chakmaccp7472Chakmaccp7473Chakmaccp7474Chakmaccp7475Chakmaccp7476Chakmaccp7477Chakmaccp7478Chakmaccp7479Chakmaccp748Chakmaccp7480Chakmaccp7481Chakmaccp7482Chakmaccp7483Chakmaccp7484Chakmaccp7485Chakmaccp7486Chakmaccp7487Chakmaccp7488Chakmaccp7489Chakmaccp749Chakmaccp7490Chakmaccp7491Chakmaccp7492Chakmaccp7493Chakmaccp7494Chakmaccp7495Chakmaccp7496Chakmaccp7497Chakmaccp7498Chakmaccp7499Chakmaccp75Chakmaccp750Chakmaccp7500Chakmaccp7501Chakmaccp7502Chakmaccp7503Chakmaccp7504Chakmaccp7505Chakmaccp7506Chakmaccp7507Chakmaccp7508Chakmaccp7509Chakmaccp751Chakmaccp7510Chakmaccp7511Chakmaccp7512Chakmaccp7513Chakmaccp7514Chakmaccp7515Chakmaccp7516Chakmaccp7517Chakmaccp7518Chakmaccp7519Chakmaccp752Chakmaccp7520Chakmaccp7521Chakmaccp7522Chakmaccp7523Chakmaccp7524Chakmaccp7525Chakmaccp7526Chakmaccp7527Chakmaccp7528Chakmaccp7529Chakmaccp753Chakmaccp7530Chakmaccp7531Chakmaccp7532Chakmaccp7533Chakmaccp7534Chakmaccp7535Chakmaccp7536Chakmaccp7537Chakmaccp7538Chakmaccp7539Chakmaccp754Chakmaccp7540Chakmaccp7541Chakmaccp7542Chakmaccp7543Chakmaccp7544Chakmaccp7545Chakmaccp7546Chakmaccp7547Chakmaccp7548Chakmaccp7549Chakmaccp755Chakmaccp7550Chakmaccp7551Chakmaccp7552Chakmaccp7553Chakmaccp7554Chakmaccp7555Chakmaccp7556Chakmaccp7557Chakmaccp7558Chakmaccp7559Chakmaccp756Chakmaccp7560Chakmaccp7561Chakmaccp7562Chakmaccp7563Chakmaccp7564Chakmaccp7565Chakmaccp7566Chakmaccp7567Chakmaccp7568Chakmaccp7569Chakmaccp757Chakmaccp7570Chakmaccp7571Chakmaccp7572Chakmaccp7573Chakmaccp7574Chakmaccp7575Chakmaccp7576Chakmaccp7577Chakmaccp7578Chakmaccp7579Chakmaccp758Chakmaccp7580Chakmaccp7581Chakmaccp7582Chakmaccp7583Chakmaccp7584Chakmaccp7585Chakmaccp7586Chakmaccp7587Chakmaccp7588Chakmaccp7589Chakmaccp759Chakmaccp7590Chakmaccp7591Chakmaccp7592Chakmaccp7593Chakmaccp7594Chakmaccp7595Chakmaccp7596Chakmaccp7597Chakmaccp7598Chakmaccp7599Chakmaccp76Chakmaccp760Chakmaccp7600Chakmaccp7601Chakmaccp7602Chakmaccp7603Chakmaccp7604Chakmaccp7605Chakmaccp7606Chakmaccp7607Chakmaccp7608Chakmaccp7609Chakmaccp761Chakmaccp7610Chakmaccp7611Chakmaccp7612Chakmaccp7613Chakmaccp7614Chakmaccp7615Chakmaccp7616Chakmaccp7617Chakmaccp7618Chakmaccp7619Chakmaccp762Chakmaccp7620Chakmaccp7621Chakmaccp7622Chakmaccp7623Chakmaccp7624Chakmaccp7625Chakmaccp7626Chakmaccp7627Chakmaccp7628Chakmaccp7629Chakmaccp763Chakmaccp7630Chakmaccp7631Chakmaccp7632Chakmaccp7633Chakmaccp7634Chakmaccp7635Chakmaccp7636Chakmaccp7637Chakmaccp7638Chakmaccp7639Chakmaccp764Chakmaccp7640Chakmaccp7641Chakmaccp7642Chakmaccp7643Chakmaccp7644Chakmaccp7645Chakmaccp7646Chakmaccp7647Chakmaccp7648Chakmaccp7649Chakmaccp765Chakmaccp7650Chakmaccp7651Chakmaccp7652Chakmaccp7653Chakmaccp7654Chakmaccp7655Chakmaccp7656Chakmaccp7657Chakmaccp7658Chakmaccp7659Chakmaccp766Chakmaccp7660Chakmaccp7661Chakmaccp7662Chakmaccp7663Chakmaccp7664Chakmaccp7665Chakmaccp7666Chakmaccp7667Chakmaccp7668Chakmaccp7669Chakmaccp767Chakmaccp7670Chakmaccp7671Chakmaccp7672Chakmaccp7673Chakmaccp7674Chakmaccp7675Chakmaccp7676Chakmaccp7677Chakmaccp7678Chakmaccp7679Chakmaccp768Chakmaccp7680Chakmaccp7681Chakmaccp7682Chakmaccp7683Chakmaccp7684Chakmaccp7685Chakmaccp7686Chakmaccp7687Chakmaccp7688Chakmaccp7689Chakmaccp769Chakmaccp7690Chakmaccp7691Chakmaccp7692Chakmaccp7693Chakmaccp7694Chakmaccp7695Chakmaccp7696Chakmaccp7697Chakmaccp7698Chakmaccp7699Chakmaccp77Chakmaccp770Chakmaccp7700Chakmaccp7701Chakmaccp7702Chakmaccp7703Chakmaccp7704Chakmaccp7705Chakmaccp7706Chakmaccp7707Chakmaccp7708Chakmaccp7709Chakmaccp771Chakmaccp7710Chakmaccp7711Chakmaccp7712Chakmaccp7713Chakmaccp7714Chakmaccp7715Chakmaccp7716Chakmaccp7717Chakmaccp7718Chakmaccp7719Chakmaccp772Chakmaccp7720Chakmaccp7721Chakmaccp7722Chakmaccp7723Chakmaccp7724Chakmaccp7725Chakmaccp7726Chakmaccp7727Chakmaccp7728Chakmaccp7729Chakmaccp773Chakmaccp7730Chakmaccp7731Chakmaccp7732Chakmaccp7733Chakmaccp7734Chakmaccp7735Chakmaccp7736Chakmaccp7737Chakmaccp7738Chakmaccp7739Chakmaccp774Chakmaccp7740Chakmaccp7741Chakmaccp7742Chakmaccp7743Chakmaccp7744Chakmaccp7745Chakmaccp7746Chakmaccp7747Chakmaccp7748Chakmaccp7749Chakmaccp775Chakmaccp7750Chakmaccp7751Chakmaccp7752Chakmaccp7753Chakmaccp7754Chakmaccp7755Chakmaccp7756Chakmaccp7757Chakmaccp7758Chakmaccp7759Chakmaccp776Chakmaccp7760Chakmaccp7761Chakmaccp7762Chakmaccp7763Chakmaccp7764Chakmaccp7765Chakmaccp7766Chakmaccp7767Chakmaccp7768Chakmaccp7769Chakmaccp777Chakmaccp7770Chakmaccp7771Chakmaccp7772Chakmaccp7773Chakmaccp7774Chakmaccp7775Chakmaccp7776Chakmaccp7777Chakmaccp7778Chakmaccp7779Chakmaccp778Chakmaccp7780Chakmaccp7781Chakmaccp7782Chakmaccp7783Chakmaccp7784Chakmaccp7785Chakmaccp7786Chakmaccp7787Chakmaccp7788Chakmaccp7789Chakmaccp779Chakmaccp7790Chakmaccp7791Chakmaccp7792Chakmaccp7793Chakmaccp7794Chakmaccp7795Chakmaccp7796Chakmaccp7797Chakmaccp7798Chakmaccp7799Chakmaccp78Chakmaccp780Chakmaccp7800Chakmaccp7801Chakmaccp7802Chakmaccp7803Chakmaccp7804Chakmaccp7805Chakmaccp7806Chakmaccp7807Chakmaccp7808Chakmaccp7809Chakmaccp781Chakmaccp7810Chakmaccp7811Chakmaccp7812Chakmaccp7813Chakmaccp7814Chakmaccp7815Chakmaccp7816Chakmaccp7817Chakmaccp7818Chakmaccp7819Chakmaccp782Chakmaccp7820Chakmaccp7821Chakmaccp7822Chakmaccp7823Chakmaccp7824Chakmaccp7825Chakmaccp7826Chakmaccp7827Chakmaccp7828Chakmaccp7829Chakmaccp783Chakmaccp7830Chakmaccp7831Chakmaccp7832Chakmaccp7833Chakmaccp7834Chakmaccp7835Chakmaccp7836Chakmaccp7837Chakmaccp7838Chakmaccp7839Chakmaccp784Chakmaccp7840Chakmaccp7841Chakmaccp7842Chakmaccp7843Chakmaccp7844Chakmaccp7845Chakmaccp7846Chakmaccp7847Chakmaccp7848Chakmaccp7849Chakmaccp785Chakmaccp7850Chakmaccp7851Chakmaccp7852Chakmaccp7853Chakmaccp7854Chakmaccp7855Chakmaccp7856Chakmaccp7857Chakmaccp7858Chakmaccp7859Chakmaccp786Chakmaccp7860Chakmaccp7861Chakmaccp7862Chakmaccp7863Chakmaccp7864Chakmaccp7865Chakmaccp7866Chakmaccp7867Chakmaccp7868Chakmaccp7869Chakmaccp787Chakmaccp7870Chakmaccp7871Chakmaccp7872Chakmaccp7873Chakmaccp7874Chakmaccp7875Chakmaccp7876Chakmaccp7877Chakmaccp7878Chakmaccp7879Chakmaccp788Chakmaccp7880Chakmaccp7881Chakmaccp7882Chakmaccp7883Chakmaccp7884Chakmaccp7885Chakmaccp7886Chakmaccp7887Chakmaccp7888Chakmaccp7889Chakmaccp789Chakmaccp7890Chakmaccp7891Chakmaccp7892Chakmaccp7893Chakmaccp7894Chakmaccp7895Chakmaccp7896Chakmaccp7897Chakmaccp7898Chakmaccp7899Chakmaccp79Chakmaccp790Chakmaccp7900Chakmaccp7901Chakmaccp7902Chakmaccp7903Chakmaccp7904Chakmaccp7905Chakmaccp7906Chakmaccp7907Chakmaccp7908Chakmaccp7909Chakmaccp791Chakmaccp7910Chakmaccp7911Chakmaccp7912Chakmaccp7913Chakmaccp7914Chakmaccp7915Chakmaccp7916Chakmaccp7917Chakmaccp7918Chakmaccp7919Chakmaccp792Chakmaccp7920Chakmaccp7921Chakmaccp7922Chakmaccp7923Chakmaccp7924Chakmaccp7925Chakmaccp7926Chakmaccp7927Chakmaccp7928Chakmaccp7929Chakmaccp793Chakmaccp7930Chakmaccp7931Chakmaccp7932Chakmaccp7933Chakmaccp7934Chakmaccp7935Chakmaccp7936Chakmaccp7937Chakmaccp7938Chakmaccp7939Chakmaccp794Chakmaccp7940Chakmaccp7941Chakmaccp7942Chakmaccp7943Chakmaccp7944Chakmaccp7945Chakmaccp7946Chakmaccp7947Chakmaccp7948Chakmaccp7949Chakmaccp795Chakmaccp7950Chakmaccp7951Chakmaccp7952Chakmaccp7953Chakmaccp7954Chakmaccp7955Chakmaccp7956Chakmaccp7957Chakmaccp7958Chakmaccp7959Chakmaccp796Chakmaccp7960Chakmaccp7961Chakmaccp7962Chakmaccp7963Chakmaccp7964Chakmaccp7965Chakmaccp7966Chakmaccp7967Chakmaccp7968Chakmaccp7969Chakmaccp797Chakmaccp7970Chakmaccp7971Chakmaccp7972Chakmaccp7973Chakmaccp7974Chakmaccp7975Chakmaccp7976Chakmaccp7977Chakmaccp7978Chakmaccp7979Chakmaccp798Chakmaccp7980Chakmaccp7981Chakmaccp7982Chakmaccp7983Chakmaccp7984Chakmaccp7985Chakmaccp7986Chakmaccp7987Chakmaccp7988Chakmaccp7989Chakmaccp799Chakmaccp7990Chakmaccp7991Chakmaccp7992Chakmaccp7993Chakmaccp7994Chakmaccp7995Chakmaccp7996Chakmaccp7997Chakmaccp7998Chakmaccp7999Chakmaccp8Chakmaccp80Chakmaccp800Chakmaccp8000Chakmaccp8001Chakmaccp8002Chakmaccp8003Chakmaccp8004Chakmaccp8005Chakmaccp8006Chakmaccp8007Chakmaccp8008Chakmaccp8009Chakmaccp801Chakmaccp8010Chakmaccp8011Chakmaccp8012Chakmaccp8013Chakmaccp8014Chakmaccp8015Chakmaccp8016Chakmaccp8017Chakmaccp8018Chakmaccp8019Chakmaccp802Chakmaccp8020Chakmaccp8021Chakmaccp8022Chakmaccp8023Chakmaccp8024Chakmaccp8025Chakmaccp8026Chakmaccp8027Chakmaccp8028Chakmaccp8029Chakmaccp803Chakmaccp8030Chakmaccp8031Chakmaccp8032Chakmaccp8033Chakmaccp8034Chakmaccp8035Chakmaccp8036Chakmaccp8037Chakmaccp8038Chakmaccp8039Chakmaccp804Chakmaccp8040Chakmaccp8041Chakmaccp8042Chakmaccp8043Chakmaccp8044Chakmaccp8045Chakmaccp8046Chakmaccp8047Chakmaccp8048Chakmaccp8049Chakmaccp805Chakmaccp8050Chakmaccp8051Chakmaccp8052Chakmaccp8053Chakmaccp8054Chakmaccp8055Chakmaccp8056Chakmaccp8057Chakmaccp8058Chakmaccp8059Chakmaccp806Chakmaccp8060Chakmaccp8061Chakmaccp8062Chakmaccp8063Chakmaccp8064Chakmaccp8065Chakmaccp8066Chakmaccp8067Chakmaccp8068Chakmaccp8069Chakmaccp807Chakmaccp8070Chakmaccp8071Chakmaccp8072Chakmaccp8073Chakmaccp8074Chakmaccp8075Chakmaccp8076Chakmaccp8077Chakmaccp8078Chakmaccp8079Chakmaccp808Chakmaccp8080Chakmaccp8081Chakmaccp8082Chakmaccp8083Chakmaccp8084Chakmaccp8085Chakmaccp8086Chakmaccp8087Chakmaccp8088Chakmaccp8089Chakmaccp809Chakmaccp8090Chakmaccp8091Chakmaccp8092Chakmaccp8093Chakmaccp8094Chakmaccp8095Chakmaccp8096Chakmaccp8097Chakmaccp8098Chakmaccp8099Chakmaccp81Chakmaccp810Chakmaccp8100Chakmaccp8101Chakmaccp8102Chakmaccp8103Chakmaccp8104Chakmaccp8105Chakmaccp8106Chakmaccp8107Chakmaccp8108Chakmaccp8109Chakmaccp811Chakmaccp8110Chakmaccp8111Chakmaccp8112Chakmaccp8113Chakmaccp8114Chakmaccp8115Chakmaccp8116Chakmaccp8117Chakmaccp8118Chakmaccp8119Chakmaccp812Chakmaccp8120Chakmaccp8121Chakmaccp8122Chakmaccp8123Chakmaccp8124Chakmaccp8125Chakmaccp8126Chakmaccp8127Chakmaccp8128Chakmaccp8129Chakmaccp813Chakmaccp8130Chakmaccp8131Chakmaccp8132Chakmaccp8133Chakmaccp8134Chakmaccp8135Chakmaccp8136Chakmaccp8137Chakmaccp8138Chakmaccp8139Chakmaccp814Chakmaccp8140Chakmaccp8141Chakmaccp8142Chakmaccp8143Chakmaccp8144Chakmaccp8145Chakmaccp8146Chakmaccp8147Chakmaccp8148Chakmaccp8149Chakmaccp815Chakmaccp8150Chakmaccp8151Chakmaccp8152Chakmaccp8153Chakmaccp8154Chakmaccp8155Chakmaccp8156Chakmaccp8157Chakmaccp8158Chakmaccp8159Chakmaccp816Chakmaccp8160Chakmaccp8161Chakmaccp8162Chakmaccp8163Chakmaccp8164Chakmaccp8165Chakmaccp8166Chakmaccp8167Chakmaccp8168Chakmaccp8169Chakmaccp817Chakmaccp8170Chakmaccp8171Chakmaccp8172Chakmaccp8173Chakmaccp8174Chakmaccp8175Chakmaccp8176Chakmaccp8177Chakmaccp8178Chakmaccp8179Chakmaccp818Chakmaccp8180Chakmaccp8181Chakmaccp8182Chakmaccp8183Chakmaccp8184Chakmaccp8185Chakmaccp8186Chakmaccp8187Chakmaccp8188Chakmaccp8189Chakmaccp819Chakmaccp8190Chakmaccp8191Chakmaccp82Chakmaccp820Chakmaccp821Chakmaccp822Chakmaccp823Chakmaccp824Chakmaccp825Chakmaccp826Chakmaccp827Chakmaccp828Chakmaccp829Chakmaccp83Chakmaccp830Chakmaccp831Chakmaccp832Chakmaccp833Chakmaccp834Chakmaccp835Chakmaccp836Chakmaccp837Chakmaccp838Chakmaccp839Chakmaccp84Chakmaccp840Chakmaccp841Chakmaccp842Chakmaccp843Chakmaccp844Chakmaccp845Chakmaccp846Chakmaccp847Chakmaccp848Chakmaccp849Chakmaccp85Chakmaccp850Chakmaccp851Chakmaccp852Chakmaccp853Chakmaccp854Chakmaccp855Chakmaccp856Chakmaccp857Chakmaccp858Chakmaccp859Chakmaccp86Chakmaccp860Chakmaccp861Chakmaccp862Chakmaccp863Chakmaccp864Chakmaccp865Chakmaccp866Chakmaccp867Chakmaccp868Chakmaccp869Chakmaccp87Chakmaccp870Chakmaccp871Chakmaccp872Chakmaccp873Chakmaccp874Chakmaccp875Chakmaccp876Chakmaccp877Chakmaccp878Chakmaccp879Chakmaccp88Chakmaccp880Chakmaccp881Chakmaccp882Chakmaccp883Chakmaccp884Chakmaccp885Chakmaccp886Chakmaccp887Chakmaccp888Chakmaccp889Chakmaccp89Chakmaccp890Chakmaccp891Chakmaccp892Chakmaccp893Chakmaccp894Chakmaccp895Chakmaccp896Chakmaccp897Chakmaccp898Chakmaccp899Chakmaccp9Chakmaccp90Chakmaccp900Chakmaccp901Chakmaccp902Chakmaccp903Chakmaccp904Chakmaccp905Chakmaccp906Chakmaccp907Chakmaccp908Chakmaccp909Chakmaccp91Chakmaccp910Chakmaccp911Chakmaccp912Chakmaccp913Chakmaccp914Chakmaccp915Chakmaccp916Chakmaccp917Chakmaccp918Chakmaccp919Chakmaccp92Chakmaccp920Chakmaccp921Chakmaccp922Chakmaccp923Chakmaccp924Chakmaccp925Chakmaccp926Chakmaccp927Chakmaccp928Chakmaccp929Chakmaccp93Chakmaccp930Chakmaccp931Chakmaccp932Chakmaccp933Chakmaccp934Chakmaccp935Chakmaccp936Chakmaccp937Chakmaccp938Chakmaccp939Chakmaccp94Chakmaccp940Chakmaccp941Chakmaccp942Chakmaccp943Chakmaccp944Chakmaccp945Chakmaccp946Chakmaccp947Chakmaccp948Chakmaccp949Chakmaccp95Chakmaccp950Chakmaccp951Chakmaccp952Chakmaccp953Chakmaccp954Chakmaccp955Chakmaccp956Chakmaccp957Chakmaccp958Chakmaccp959Chakmaccp96Chakmaccp960Chakmaccp961Chakmaccp962Chakmaccp963Chakmaccp964Chakmaccp965Chakmaccp966Chakmaccp967Chakmaccp968Chakmaccp969Chakmaccp97Chakmaccp970Chakmaccp971Chakmaccp972Chakmaccp973Chakmaccp974Chakmaccp975Chakmaccp976Chakmaccp977Chakmaccp978Chakmaccp979Chakmaccp98Chakmaccp980Chakmaccp981Chakmaccp982Chakmaccp983Chakmaccp984Chakmaccp985Chakmaccp986Chakmaccp987Chakmaccp988Chakmaccp989Chakmaccp99Chakmaccp990Chakmaccp991Chakmaccp992Chakmaccp993Chakmaccp994Chakmaccp995Chakmaccp996Chakmaccp997Chakmaccp998Chakmaccp999Chakmachr0Cherokeechr1Cherokeechr10Cherokeechr100Cherokeechr1000Cherokeechr1001Cherokeechr1002Cherokeechr1003Cherokeechr1004Cherokeechr1005Cherokeechr1006Cherokeechr1007Cherokeechr1008Cherokeechr1009Cherokeechr101Cherokeechr1010Cherokeechr1011Cherokeechr1012Cherokeechr1013Cherokeechr1014Cherokeechr1015Cherokeechr1016Cherokeechr1017Cherokeechr1018Cherokeechr1019Cherokeechr102Cherokeechr1020Cherokeechr1021Cherokeechr1022Cherokeechr1023Cherokeechr1024Cherokeechr1025Cherokeechr1026Cherokeechr1027Cherokeechr1028Cherokeechr1029Cherokeechr103Cherokeechr1030Cherokeechr1031Cherokeechr1032Cherokeechr1033Cherokeechr1034Cherokeechr1035Cherokeechr1036Cherokeechr1037Cherokeechr1038Cherokeechr1039Cherokeechr104Cherokeechr1040Cherokeechr1041Cherokeechr1042Cherokeechr1043Cherokeechr1044Cherokeechr1045Cherokeechr1046Cherokeechr1047Cherokeechr1048Cherokeechr1049Cherokeechr105Cherokeechr1050Cherokeechr1051Cherokeechr1052Cherokeechr1053Cherokeechr1054Cherokeechr1055Cherokeechr1056Cherokeechr1057Cherokeechr1058Cherokeechr1059Cherokeechr106Cherokeechr1060Cherokeechr1061Cherokeechr1062Cherokeechr1063Cherokeechr1064Cherokeechr1065Cherokeechr1066Cherokeechr1067Cherokeechr1068Cherokeechr1069Cherokeechr107Cherokeechr1070Cherokeechr1071Cherokeechr1072Cherokeechr1073Cherokeechr1074Cherokeechr1075Cherokeechr1076Cherokeechr1077Cherokeechr1078Cherokeechr1079Cherokeechr108Cherokeechr1080Cherokeechr1081Cherokeechr1082Cherokeechr1083Cherokeechr1084Cherokeechr1085Cherokeechr1086Cherokeechr1087Cherokeechr1088Cherokeechr1089Cherokeechr109Cherokeechr1090Cherokeechr1091Cherokeechr1092Cherokeechr1093Cherokeechr1094Cherokeechr1095Cherokeechr1096Cherokeechr1097Cherokeechr1098Cherokeechr1099Cherokeechr11Cherokeechr110Cherokeechr1100Cherokeechr1101Cherokeechr1102Cherokeechr1103Cherokeechr1104Cherokeechr1105Cherokeechr1106Cherokeechr1107Cherokeechr1108Cherokeechr1109Cherokeechr111Cherokeechr1110Cherokeechr1111Cherokeechr1112Cherokeechr1113Cherokeechr1114Cherokeechr1115Cherokeechr1116Cherokeechr1117Cherokeechr1118Cherokeechr1119Cherokeechr112Cherokeechr1120Cherokeechr1121Cherokeechr1122Cherokeechr1123Cherokeechr1124Cherokeechr1125Cherokeechr1126Cherokeechr1127Cherokeechr1128Cherokeechr1129Cherokeechr113Cherokeechr1130Cherokeechr1131Cherokeechr1132Cherokeechr1133Cherokeechr1134Cherokeechr1135Cherokeechr1136Cherokeechr1137Cherokeechr1138Cherokeechr1139Cherokeechr114Cherokeechr1140Cherokeechr1141Cherokeechr1142Cherokeechr1143Cherokeechr1144Cherokeechr1145Cherokeechr1146Cherokeechr1147Cherokeechr1148Cherokeechr1149Cherokeechr115Cherokeechr1150Cherokeechr1151Cherokeechr1152Cherokeechr1153Cherokeechr1154Cherokeechr1155Cherokeechr1156Cherokeechr1157Cherokeechr1158Cherokeechr1159Cherokeechr116Cherokeechr1160Cherokeechr1161Cherokeechr1162Cherokeechr1163Cherokeechr1164Cherokeechr1165Cherokeechr1166Cherokeechr1167Cherokeechr1168Cherokeechr1169Cherokeechr117Cherokeechr1170Cherokeechr1171Cherokeechr1172Cherokeechr1173Cherokeechr1174Cherokeechr1175Cherokeechr1176Cherokeechr1177Cherokeechr1178Cherokeechr1179Cherokeechr118Cherokeechr1180Cherokeechr1181Cherokeechr1182Cherokeechr1183Cherokeechr1184Cherokeechr1185Cherokeechr1186Cherokeechr1187Cherokeechr1188Cherokeechr1189Cherokeechr119Cherokeechr1190Cherokeechr1191Cherokeechr1192Cherokeechr1193Cherokeechr1194Cherokeechr1195Cherokeechr1196Cherokeechr1197Cherokeechr1198Cherokeechr1199Cherokeechr12Cherokeechr120Cherokeechr1200Cherokeechr1201Cherokeechr1202Cherokeechr1203Cherokeechr1204Cherokeechr1205Cherokeechr1206Cherokeechr1207Cherokeechr1208Cherokeechr1209Cherokeechr121Cherokeechr1210Cherokeechr1211Cherokeechr1212Cherokeechr1213Cherokeechr1214Cherokeechr1215Cherokeechr1216Cherokeechr1217Cherokeechr1218Cherokeechr1219Cherokeechr122Cherokeechr1220Cherokeechr1221Cherokeechr1222Cherokeechr1223Cherokeechr1224Cherokeechr1225Cherokeechr1226Cherokeechr1227Cherokeechr1228Cherokeechr1229Cherokeechr123Cherokeechr1230Cherokeechr1231Cherokeechr1232Cherokeechr1233Cherokeechr1234Cherokeechr1235Cherokeechr1236Cherokeechr1237Cherokeechr1238Cherokeechr1239Cherokeechr124Cherokeechr1240Cherokeechr1241Cherokeechr1242Cherokeechr1243Cherokeechr1244Cherokeechr1245Cherokeechr1246Cherokeechr1247Cherokeechr1248Cherokeechr1249Cherokeechr125Cherokeechr1250Cherokeechr1251Cherokeechr1252Cherokeechr1253Cherokeechr1254Cherokeechr1255Cherokeechr1256Cherokeechr1257Cherokeechr1258Cherokeechr1259Cherokeechr126Cherokeechr1260Cherokeechr1261Cherokeechr1262Cherokeechr1263Cherokeechr1264Cherokeechr1265Cherokeechr1266Cherokeechr1267Cherokeechr1268Cherokeechr1269Cherokeechr127Cherokeechr1270Cherokeechr1271Cherokeechr1272Cherokeechr1273Cherokeechr1274Cherokeechr1275Cherokeechr1276Cherokeechr1277Cherokeechr1278Cherokeechr1279Cherokeechr128Cherokeechr1280Cherokeechr1281Cherokeechr1282Cherokeechr1283Cherokeechr1284Cherokeechr1285Cherokeechr1286Cherokeechr1287Cherokeechr1288Cherokeechr1289Cherokeechr129Cherokeechr1290Cherokeechr1291Cherokeechr1292Cherokeechr1293Cherokeechr1294Cherokeechr1295Cherokeechr1296Cherokeechr1297Cherokeechr1298Cherokeechr1299Cherokeechr13Cherokeechr130Cherokeechr1300Cherokeechr1301Cherokeechr1302Cherokeechr1303Cherokeechr1304Cherokeechr1305Cherokeechr1306Cherokeechr1307Cherokeechr1308Cherokeechr1309Cherokeechr131Cherokeechr1310Cherokeechr1311Cherokeechr1312Cherokeechr1313Cherokeechr1314Cherokeechr1315Cherokeechr1316Cherokeechr1317Cherokeechr1318Cherokeechr1319Cherokeechr132Cherokeechr1320Cherokeechr1321Cherokeechr1322Cherokeechr1323Cherokeechr1324Cherokeechr1325Cherokeechr1326Cherokeechr1327Cherokeechr1328Cherokeechr1329Cherokeechr133Cherokeechr1330Cherokeechr1331Cherokeechr1332Cherokeechr1333Cherokeechr1334Cherokeechr1335Cherokeechr1336Cherokeechr1337Cherokeechr1338Cherokeechr1339Cherokeechr134Cherokeechr1340Cherokeechr1341Cherokeechr1342Cherokeechr1343Cherokeechr1344Cherokeechr1345Cherokeechr1346Cherokeechr1347Cherokeechr1348Cherokeechr1349Cherokeechr135Cherokeechr1350Cherokeechr1351Cherokeechr1352Cherokeechr1353Cherokeechr1354Cherokeechr1355Cherokeechr1356Cherokeechr1357Cherokeechr1358Cherokeechr1359Cherokeechr136Cherokeechr1360Cherokeechr1361Cherokeechr1362Cherokeechr1363Cherokeechr1364Cherokeechr1365Cherokeechr1366Cherokeechr1367Cherokeechr1368Cherokeechr1369Cherokeechr137Cherokeechr1370Cherokeechr1371Cherokeechr1372Cherokeechr1373Cherokeechr1374Cherokeechr1375Cherokeechr1376Cherokeechr1377Cherokeechr1378Cherokeechr1379Cherokeechr138Cherokeechr1380Cherokeechr1381Cherokeechr1382Cherokeechr1383Cherokeechr1384Cherokeechr1385Cherokeechr1386Cherokeechr1387Cherokeechr1388Cherokeechr1389Cherokeechr139Cherokeechr1390Cherokeechr1391Cherokeechr1392Cherokeechr1393Cherokeechr1394Cherokeechr1395Cherokeechr1396Cherokeechr1397Cherokeechr1398Cherokeechr1399Cherokeechr14Cherokeechr140Cherokeechr1400Cherokeechr1401Cherokeechr1402Cherokeechr1403Cherokeechr1404Cherokeechr1405Cherokeechr1406Cherokeechr1407Cherokeechr1408Cherokeechr1409Cherokeechr141Cherokeechr1410Cherokeechr1411Cherokeechr1412Cherokeechr1413Cherokeechr1414Cherokeechr1415Cherokeechr1416Cherokeechr1417Cherokeechr1418Cherokeechr1419Cherokeechr142Cherokeechr1420Cherokeechr1421Cherokeechr1422Cherokeechr1423Cherokeechr1424Cherokeechr1425Cherokeechr1426Cherokeechr1427Cherokeechr1428Cherokeechr1429Cherokeechr143Cherokeechr1430Cherokeechr1431Cherokeechr1432Cherokeechr1433Cherokeechr1434Cherokeechr1435Cherokeechr1436Cherokeechr1437Cherokeechr1438Cherokeechr1439Cherokeechr144Cherokeechr1440Cherokeechr1441Cherokeechr1442Cherokeechr1443Cherokeechr1444Cherokeechr1445Cherokeechr1446Cherokeechr1447Cherokeechr1448Cherokeechr1449Cherokeechr145Cherokeechr1450Cherokeechr1451Cherokeechr1452Cherokeechr1453Cherokeechr1454Cherokeechr1455Cherokeechr1456Cherokeechr1457Cherokeechr1458Cherokeechr1459Cherokeechr146Cherokeechr1460Cherokeechr1461Cherokeechr1462Cherokeechr1463Cherokeechr1464Cherokeechr1465Cherokeechr1466Cherokeechr1467Cherokeechr1468Cherokeechr1469Cherokeechr147Cherokeechr1470Cherokeechr1471Cherokeechr1472Cherokeechr1473Cherokeechr1474Cherokeechr1475Cherokeechr1476Cherokeechr1477Cherokeechr1478Cherokeechr1479Cherokeechr148Cherokeechr1480Cherokeechr1481Cherokeechr1482Cherokeechr1483Cherokeechr1484Cherokeechr1485Cherokeechr1486Cherokeechr1487Cherokeechr1488Cherokeechr1489Cherokeechr149Cherokeechr1490Cherokeechr1491Cherokeechr1492Cherokeechr1493Cherokeechr1494Cherokeechr1495Cherokeechr1496Cherokeechr1497Cherokeechr1498Cherokeechr1499Cherokeechr15Cherokeechr150Cherokeechr1500Cherokeechr1501Cherokeechr1502Cherokeechr1503Cherokeechr1504Cherokeechr1505Cherokeechr1506Cherokeechr1507Cherokeechr1508Cherokeechr1509Cherokeechr151Cherokeechr1510Cherokeechr1511Cherokeechr1512Cherokeechr1513Cherokeechr1514Cherokeechr1515Cherokeechr1516Cherokeechr1517Cherokeechr1518Cherokeechr1519Cherokeechr152Cherokeechr1520Cherokeechr1521Cherokeechr1522Cherokeechr1523Cherokeechr1524Cherokeechr1525Cherokeechr1526Cherokeechr1527Cherokeechr1528Cherokeechr1529Cherokeechr153Cherokeechr1530Cherokeechr1531Cherokeechr1532Cherokeechr1533Cherokeechr1534Cherokeechr1535Cherokeechr1536Cherokeechr1537Cherokeechr1538Cherokeechr1539Cherokeechr154Cherokeechr1540Cherokeechr1541Cherokeechr1542Cherokeechr1543Cherokeechr1544Cherokeechr1545Cherokeechr1546Cherokeechr1547Cherokeechr1548Cherokeechr1549Cherokeechr155Cherokeechr1550Cherokeechr1551Cherokeechr1552Cherokeechr1553Cherokeechr1554Cherokeechr1555Cherokeechr1556Cherokeechr1557Cherokeechr1558Cherokeechr1559Cherokeechr156Cherokeechr1560Cherokeechr1561Cherokeechr1562Cherokeechr1563Cherokeechr1564Cherokeechr1565Cherokeechr1566Cherokeechr1567Cherokeechr1568Cherokeechr1569Cherokeechr157Cherokeechr1570Cherokeechr1571Cherokeechr1572Cherokeechr1573Cherokeechr1574Cherokeechr1575Cherokeechr1576Cherokeechr1577Cherokeechr1578Cherokeechr1579Cherokeechr158Cherokeechr1580Cherokeechr1581Cherokeechr1582Cherokeechr1583Cherokeechr1584Cherokeechr1585Cherokeechr1586Cherokeechr1587Cherokeechr1588Cherokeechr1589Cherokeechr159Cherokeechr1590Cherokeechr1591Cherokeechr1592Cherokeechr1593Cherokeechr1594Cherokeechr1595Cherokeechr1596Cherokeechr1597Cherokeechr1598Cherokeechr1599Cherokeechr16Cherokeechr160Cherokeechr1600Cherokeechr1601Cherokeechr1602Cherokeechr1603Cherokeechr1604Cherokeechr1605Cherokeechr1606Cherokeechr1607Cherokeechr1608Cherokeechr1609Cherokeechr161Cherokeechr1610Cherokeechr1611Cherokeechr1612Cherokeechr1613Cherokeechr1614Cherokeechr1615Cherokeechr1616Cherokeechr1617Cherokeechr1618Cherokeechr1619Cherokeechr162Cherokeechr1620Cherokeechr1621Cherokeechr1622Cherokeechr1623Cherokeechr1624Cherokeechr1625Cherokeechr1626Cherokeechr1627Cherokeechr1628Cherokeechr1629Cherokeechr163Cherokeechr1630Cherokeechr1631Cherokeechr1632Cherokeechr1633Cherokeechr1634Cherokeechr1635Cherokeechr1636Cherokeechr1637Cherokeechr1638Cherokeechr1639Cherokeechr164Cherokeechr1640Cherokeechr1641Cherokeechr1642Cherokeechr1643Cherokeechr1644Cherokeechr1645Cherokeechr1646Cherokeechr1647Cherokeechr1648Cherokeechr1649Cherokeechr165Cherokeechr1650Cherokeechr1651Cherokeechr1652Cherokeechr1653Cherokeechr1654Cherokeechr1655Cherokeechr1656Cherokeechr1657Cherokeechr1658Cherokeechr1659Cherokeechr166Cherokeechr1660Cherokeechr1661Cherokeechr1662Cherokeechr1663Cherokeechr1664Cherokeechr1665Cherokeechr1666Cherokeechr1667Cherokeechr1668Cherokeechr1669Cherokeechr167Cherokeechr1670Cherokeechr1671Cherokeechr1672Cherokeechr1673Cherokeechr1674Cherokeechr1675Cherokeechr1676Cherokeechr1677Cherokeechr1678Cherokeechr1679Cherokeechr168Cherokeechr1680Cherokeechr1681Cherokeechr1682Cherokeechr1683Cherokeechr1684Cherokeechr1685Cherokeechr1686Cherokeechr1687Cherokeechr1688Cherokeechr1689Cherokeechr169Cherokeechr1690Cherokeechr1691Cherokeechr1692Cherokeechr1693Cherokeechr1694Cherokeechr1695Cherokeechr1696Cherokeechr1697Cherokeechr1698Cherokeechr1699Cherokeechr17Cherokeechr170Cherokeechr1700Cherokeechr1701Cherokeechr1702Cherokeechr1703Cherokeechr1704Cherokeechr1705Cherokeechr1706Cherokeechr1707Cherokeechr1708Cherokeechr1709Cherokeechr171Cherokeechr1710Cherokeechr1711Cherokeechr1712Cherokeechr1713Cherokeechr1714Cherokeechr1715Cherokeechr1716Cherokeechr1717Cherokeechr1718Cherokeechr1719Cherokeechr172Cherokeechr1720Cherokeechr1721Cherokeechr1722Cherokeechr1723Cherokeechr1724Cherokeechr1725Cherokeechr1726Cherokeechr1727Cherokeechr1728Cherokeechr1729Cherokeechr173Cherokeechr1730Cherokeechr1731Cherokeechr1732Cherokeechr1733Cherokeechr1734Cherokeechr1735Cherokeechr1736Cherokeechr1737Cherokeechr1738Cherokeechr1739Cherokeechr174Cherokeechr1740Cherokeechr1741Cherokeechr1742Cherokeechr1743Cherokeechr1744Cherokeechr1745Cherokeechr1746Cherokeechr1747Cherokeechr1748Cherokeechr1749Cherokeechr175Cherokeechr1750Cherokeechr1751Cherokeechr1752Cherokeechr1753Cherokeechr1754Cherokeechr1755Cherokeechr1756Cherokeechr1757Cherokeechr1758Cherokeechr1759Cherokeechr176Cherokeechr1760Cherokeechr1761Cherokeechr1762Cherokeechr1763Cherokeechr1764Cherokeechr1765Cherokeechr1766Cherokeechr1767Cherokeechr1768Cherokeechr1769Cherokeechr177Cherokeechr1770Cherokeechr1771Cherokeechr1772Cherokeechr1773Cherokeechr1774Cherokeechr1775Cherokeechr1776Cherokeechr1777Cherokeechr1778Cherokeechr1779Cherokeechr178Cherokeechr1780Cherokeechr1781Cherokeechr1782Cherokeechr1783Cherokeechr1784Cherokeechr1785Cherokeechr1786Cherokeechr1787Cherokeechr1788Cherokeechr1789Cherokeechr179Cherokeechr1790Cherokeechr1791Cherokeechr1792Cherokeechr1793Cherokeechr1794Cherokeechr1795Cherokeechr1796Cherokeechr1797Cherokeechr1798Cherokeechr1799Cherokeechr18Cherokeechr180Cherokeechr1800Cherokeechr1801Cherokeechr1802Cherokeechr1803Cherokeechr1804Cherokeechr1805Cherokeechr1806Cherokeechr1807Cherokeechr1808Cherokeechr1809Cherokeechr181Cherokeechr1810Cherokeechr1811Cherokeechr1812Cherokeechr1813Cherokeechr1814Cherokeechr1815Cherokeechr1816Cherokeechr1817Cherokeechr1818Cherokeechr1819Cherokeechr182Cherokeechr1820Cherokeechr1821Cherokeechr1822Cherokeechr1823Cherokeechr1824Cherokeechr1825Cherokeechr1826Cherokeechr1827Cherokeechr1828Cherokeechr1829Cherokeechr183Cherokeechr1830Cherokeechr1831Cherokeechr1832Cherokeechr1833Cherokeechr1834Cherokeechr1835Cherokeechr1836Cherokeechr1837Cherokeechr1838Cherokeechr1839Cherokeechr184Cherokeechr1840Cherokeechr1841Cherokeechr1842Cherokeechr1843Cherokeechr1844Cherokeechr1845Cherokeechr1846Cherokeechr1847Cherokeechr1848Cherokeechr1849Cherokeechr185Cherokeechr1850Cherokeechr1851Cherokeechr1852Cherokeechr1853Cherokeechr1854Cherokeechr1855Cherokeechr1856Cherokeechr1857Cherokeechr1858Cherokeechr1859Cherokeechr186Cherokeechr1860Cherokeechr1861Cherokeechr1862Cherokeechr1863Cherokeechr1864Cherokeechr1865Cherokeechr1866Cherokeechr1867Cherokeechr1868Cherokeechr1869Cherokeechr187Cherokeechr1870Cherokeechr1871Cherokeechr1872Cherokeechr1873Cherokeechr1874Cherokeechr1875Cherokeechr1876Cherokeechr1877Cherokeechr1878Cherokeechr1879Cherokeechr188Cherokeechr1880Cherokeechr1881Cherokeechr1882Cherokeechr1883Cherokeechr1884Cherokeechr1885Cherokeechr1886Cherokeechr1887Cherokeechr1888Cherokeechr1889Cherokeechr189Cherokeechr1890Cherokeechr1891Cherokeechr1892Cherokeechr1893Cherokeechr1894Cherokeechr1895Cherokeechr1896Cherokeechr1897Cherokeechr1898Cherokeechr1899Cherokeechr19Cherokeechr190Cherokeechr1900Cherokeechr1901Cherokeechr1902Cherokeechr1903Cherokeechr1904Cherokeechr1905Cherokeechr1906Cherokeechr1907Cherokeechr1908Cherokeechr1909Cherokeechr191Cherokeechr1910Cherokeechr1911Cherokeechr1912Cherokeechr1913Cherokeechr1914Cherokeechr1915Cherokeechr1916Cherokeechr1917Cherokeechr1918Cherokeechr1919Cherokeechr192Cherokeechr1920Cherokeechr1921Cherokeechr1922Cherokeechr1923Cherokeechr1924Cherokeechr1925Cherokeechr1926Cherokeechr1927Cherokeechr1928Cherokeechr1929Cherokeechr193Cherokeechr1930Cherokeechr1931Cherokeechr1932Cherokeechr1933Cherokeechr1934Cherokeechr1935Cherokeechr1936Cherokeechr1937Cherokeechr1938Cherokeechr1939Cherokeechr194Cherokeechr1940Cherokeechr1941Cherokeechr1942Cherokeechr1943Cherokeechr1944Cherokeechr1945Cherokeechr1946Cherokeechr1947Cherokeechr1948Cherokeechr1949Cherokeechr195Cherokeechr1950Cherokeechr1951Cherokeechr1952Cherokeechr1953Cherokeechr1954Cherokeechr1955Cherokeechr1956Cherokeechr1957Cherokeechr1958Cherokeechr1959Cherokeechr196Cherokeechr1960Cherokeechr1961Cherokeechr1962Cherokeechr1963Cherokeechr1964Cherokeechr1965Cherokeechr1966Cherokeechr1967Cherokeechr1968Cherokeechr1969Cherokeechr197Cherokeechr1970Cherokeechr1971Cherokeechr1972Cherokeechr1973Cherokeechr1974Cherokeechr1975Cherokeechr1976Cherokeechr1977Cherokeechr1978Cherokeechr1979Cherokeechr198Cherokeechr1980Cherokeechr1981Cherokeechr1982Cherokeechr1983Cherokeechr1984Cherokeechr1985Cherokeechr1986Cherokeechr1987Cherokeechr1988Cherokeechr1989Cherokeechr199Cherokeechr1990Cherokeechr1991Cherokeechr1992Cherokeechr1993Cherokeechr1994Cherokeechr1995Cherokeechr1996Cherokeechr1997Cherokeechr1998Cherokeechr1999Cherokeechr2Cherokeechr20Cherokeechr200Cherokeechr2000Cherokeechr2001Cherokeechr2002Cherokeechr2003Cherokeechr2004Cherokeechr2005Cherokeechr2006Cherokeechr2007Cherokeechr2008Cherokeechr2009Cherokeechr201Cherokeechr2010Cherokeechr2011Cherokeechr2012Cherokeechr2013Cherokeechr2014Cherokeechr2015Cherokeechr2016Cherokeechr2017Cherokeechr2018Cherokeechr2019Cherokeechr202Cherokeechr2020Cherokeechr2021Cherokeechr2022Cherokeechr2023Cherokeechr2024Cherokeechr2025Cherokeechr2026Cherokeechr2027Cherokeechr2028Cherokeechr2029Cherokeechr203Cherokeechr2030Cherokeechr2031Cherokeechr2032Cherokeechr2033Cherokeechr2034Cherokeechr2035Cherokeechr2036Cherokeechr2037Cherokeechr2038Cherokeechr2039Cherokeechr204Cherokeechr2040Cherokeechr2041Cherokeechr2042Cherokeechr2043Cherokeechr2044Cherokeechr2045Cherokeechr2046Cherokeechr2047Cherokeechr2048Cherokeechr2049Cherokeechr205Cherokeechr2050Cherokeechr2051Cherokeechr2052Cherokeechr2053Cherokeechr2054Cherokeechr2055Cherokeechr2056Cherokeechr2057Cherokeechr2058Cherokeechr2059Cherokeechr206Cherokeechr2060Cherokeechr2061Cherokeechr2062Cherokeechr2063Cherokeechr2064Cherokeechr2065Cherokeechr2066Cherokeechr2067Cherokeechr2068Cherokeechr2069Cherokeechr207Cherokeechr2070Cherokeechr2071Cherokeechr2072Cherokeechr2073Cherokeechr2074Cherokeechr2075Cherokeechr2076Cherokeechr2077Cherokeechr2078Cherokeechr2079Cherokeechr208Cherokeechr2080Cherokeechr2081Cherokeechr2082Cherokeechr2083Cherokeechr2084Cherokeechr2085Cherokeechr2086Cherokeechr2087Cherokeechr2088Cherokeechr2089Cherokeechr209Cherokeechr2090Cherokeechr2091Cherokeechr2092Cherokeechr2093Cherokeechr2094Cherokeechr2095Cherokeechr2096Cherokeechr2097Cherokeechr2098Cherokeechr2099Cherokeechr21Cherokeechr210Cherokeechr2100Cherokeechr2101Cherokeechr2102Cherokeechr2103Cherokeechr2104Cherokeechr2105Cherokeechr2106Cherokeechr2107Cherokeechr2108Cherokeechr2109Cherokeechr211Cherokeechr2110Cherokeechr2111Cherokeechr2112Cherokeechr2113Cherokeechr2114Cherokeechr2115Cherokeechr2116Cherokeechr2117Cherokeechr2118Cherokeechr2119Cherokeechr212Cherokeechr2120Cherokeechr2121Cherokeechr2122Cherokeechr2123Cherokeechr2124Cherokeechr2125Cherokeechr2126Cherokeechr2127Cherokeechr2128Cherokeechr2129Cherokeechr213Cherokeechr2130Cherokeechr2131Cherokeechr2132Cherokeechr2133Cherokeechr2134Cherokeechr2135Cherokeechr2136Cherokeechr2137Cherokeechr2138Cherokeechr2139Cherokeechr214Cherokeechr2140Cherokeechr2141Cherokeechr2142Cherokeechr2143Cherokeechr2144Cherokeechr2145Cherokeechr2146Cherokeechr2147Cherokeechr2148Cherokeechr2149Cherokeechr215Cherokeechr2150Cherokeechr2151Cherokeechr2152Cherokeechr2153Cherokeechr2154Cherokeechr2155Cherokeechr2156Cherokeechr2157Cherokeechr2158Cherokeechr2159Cherokeechr216Cherokeechr2160Cherokeechr2161Cherokeechr2162Cherokeechr2163Cherokeechr2164Cherokeechr2165Cherokeechr2166Cherokeechr2167Cherokeechr2168Cherokeechr2169Cherokeechr217Cherokeechr2170Cherokeechr2171Cherokeechr2172Cherokeechr2173Cherokeechr2174Cherokeechr2175Cherokeechr2176Cherokeechr2177Cherokeechr2178Cherokeechr2179Cherokeechr218Cherokeechr2180Cherokeechr2181Cherokeechr2182Cherokeechr2183Cherokeechr2184Cherokeechr2185Cherokeechr2186Cherokeechr2187Cherokeechr2188Cherokeechr2189Cherokeechr219Cherokeechr2190Cherokeechr2191Cherokeechr2192Cherokeechr2193Cherokeechr2194Cherokeechr2195Cherokeechr2196Cherokeechr2197Cherokeechr2198Cherokeechr2199Cherokeechr22Cherokeechr220Cherokeechr2200Cherokeechr2201Cherokeechr2202Cherokeechr2203Cherokeechr2204Cherokeechr2205Cherokeechr2206Cherokeechr2207Cherokeechr2208Cherokeechr2209Cherokeechr221Cherokeechr2210Cherokeechr2211Cherokeechr2212Cherokeechr2213Cherokeechr2214Cherokeechr2215Cherokeechr2216Cherokeechr2217Cherokeechr2218Cherokeechr2219Cherokeechr222Cherokeechr2220Cherokeechr2221Cherokeechr2222Cherokeechr2223Cherokeechr2224Cherokeechr2225Cherokeechr2226Cherokeechr2227Cherokeechr2228Cherokeechr2229Cherokeechr223Cherokeechr2230Cherokeechr2231Cherokeechr2232Cherokeechr2233Cherokeechr2234Cherokeechr2235Cherokeechr2236Cherokeechr2237Cherokeechr2238Cherokeechr2239Cherokeechr224Cherokeechr2240Cherokeechr2241Cherokeechr2242Cherokeechr2243Cherokeechr2244Cherokeechr2245Cherokeechr2246Cherokeechr2247Cherokeechr2248Cherokeechr2249Cherokeechr225Cherokeechr2250Cherokeechr2251Cherokeechr2252Cherokeechr2253Cherokeechr2254Cherokeechr2255Cherokeechr2256Cherokeechr2257Cherokeechr2258Cherokeechr2259Cherokeechr226Cherokeechr2260Cherokeechr2261Cherokeechr2262Cherokeechr2263Cherokeechr2264Cherokeechr2265Cherokeechr2266Cherokeechr2267Cherokeechr2268Cherokeechr2269Cherokeechr227Cherokeechr2270Cherokeechr2271Cherokeechr2272Cherokeechr2273Cherokeechr2274Cherokeechr2275Cherokeechr2276Cherokeechr2277Cherokeechr2278Cherokeechr2279Cherokeechr228Cherokeechr2280Cherokeechr2281Cherokeechr2282Cherokeechr2283Cherokeechr2284Cherokeechr2285Cherokeechr2286Cherokeechr2287Cherokeechr2288Cherokeechr2289Cherokeechr229Cherokeechr2290Cherokeechr2291Cherokeechr2292Cherokeechr2293Cherokeechr2294Cherokeechr2295Cherokeechr2296Cherokeechr2297Cherokeechr2298Cherokeechr2299Cherokeechr23Cherokeechr230Cherokeechr2300Cherokeechr2301Cherokeechr2302Cherokeechr2303Cherokeechr2304Cherokeechr2305Cherokeechr2306Cherokeechr2307Cherokeechr2308Cherokeechr2309Cherokeechr231Cherokeechr2310Cherokeechr2311Cherokeechr2312Cherokeechr2313Cherokeechr2314Cherokeechr2315Cherokeechr2316Cherokeechr2317Cherokeechr2318Cherokeechr2319Cherokeechr232Cherokeechr2320Cherokeechr2321Cherokeechr2322Cherokeechr2323Cherokeechr2324Cherokeechr2325Cherokeechr2326Cherokeechr2327Cherokeechr2328Cherokeechr2329Cherokeechr233Cherokeechr2330Cherokeechr2331Cherokeechr2332Cherokeechr2333Cherokeechr2334Cherokeechr2335Cherokeechr2336Cherokeechr2337Cherokeechr2338Cherokeechr2339Cherokeechr234Cherokeechr2340Cherokeechr2341Cherokeechr2342Cherokeechr2343Cherokeechr2344Cherokeechr2345Cherokeechr2346Cherokeechr2347Cherokeechr2348Cherokeechr2349Cherokeechr235Cherokeechr2350Cherokeechr2351Cherokeechr2352Cherokeechr2353Cherokeechr2354Cherokeechr2355Cherokeechr2356Cherokeechr2357Cherokeechr2358Cherokeechr2359Cherokeechr236Cherokeechr2360Cherokeechr2361Cherokeechr2362Cherokeechr2363Cherokeechr2364Cherokeechr2365Cherokeechr2366Cherokeechr2367Cherokeechr2368Cherokeechr2369Cherokeechr237Cherokeechr2370Cherokeechr2371Cherokeechr2372Cherokeechr2373Cherokeechr2374Cherokeechr2375Cherokeechr2376Cherokeechr2377Cherokeechr2378Cherokeechr2379Cherokeechr238Cherokeechr2380Cherokeechr2381Cherokeechr2382Cherokeechr2383Cherokeechr2384Cherokeechr2385Cherokeechr2386Cherokeechr2387Cherokeechr2388Cherokeechr2389Cherokeechr239Cherokeechr2390Cherokeechr2391Cherokeechr2392Cherokeechr2393Cherokeechr2394Cherokeechr2395Cherokeechr2396Cherokeechr2397Cherokeechr2398Cherokeechr2399Cherokeechr24Cherokeechr240Cherokeechr2400Cherokeechr2401Cherokeechr2402Cherokeechr2403Cherokeechr2404Cherokeechr2405Cherokeechr2406Cherokeechr2407Cherokeechr2408Cherokeechr2409Cherokeechr241Cherokeechr2410Cherokeechr2411Cherokeechr2412Cherokeechr2413Cherokeechr2414Cherokeechr2415Cherokeechr2416Cherokeechr2417Cherokeechr2418Cherokeechr2419Cherokeechr242Cherokeechr2420Cherokeechr2421Cherokeechr2422Cherokeechr2423Cherokeechr2424Cherokeechr2425Cherokeechr2426Cherokeechr2427Cherokeechr2428Cherokeechr2429Cherokeechr243Cherokeechr2430Cherokeechr2431Cherokeechr2432Cherokeechr2433Cherokeechr2434Cherokeechr2435Cherokeechr2436Cherokeechr2437Cherokeechr2438Cherokeechr2439Cherokeechr244Cherokeechr2440Cherokeechr2441Cherokeechr2442Cherokeechr2443Cherokeechr2444Cherokeechr2445Cherokeechr2446Cherokeechr2447Cherokeechr2448Cherokeechr2449Cherokeechr245Cherokeechr2450Cherokeechr2451Cherokeechr2452Cherokeechr2453Cherokeechr2454Cherokeechr2455Cherokeechr2456Cherokeechr2457Cherokeechr2458Cherokeechr2459Cherokeechr246Cherokeechr2460Cherokeechr2461Cherokeechr2462Cherokeechr2463Cherokeechr2464Cherokeechr2465Cherokeechr2466Cherokeechr2467Cherokeechr2468Cherokeechr2469Cherokeechr247Cherokeechr2470Cherokeechr2471Cherokeechr2472Cherokeechr2473Cherokeechr2474Cherokeechr2475Cherokeechr2476Cherokeechr2477Cherokeechr2478Cherokeechr2479Cherokeechr248Cherokeechr2480Cherokeechr2481Cherokeechr2482Cherokeechr2483Cherokeechr2484Cherokeechr2485Cherokeechr2486Cherokeechr2487Cherokeechr2488Cherokeechr2489Cherokeechr249Cherokeechr2490Cherokeechr2491Cherokeechr2492Cherokeechr2493Cherokeechr2494Cherokeechr2495Cherokeechr2496Cherokeechr2497Cherokeechr2498Cherokeechr2499Cherokeechr25Cherokeechr250Cherokeechr2500Cherokeechr2501Cherokeechr2502Cherokeechr2503Cherokeechr2504Cherokeechr2505Cherokeechr2506Cherokeechr2507Cherokeechr2508Cherokeechr2509Cherokeechr251Cherokeechr2510Cherokeechr2511Cherokeechr2512Cherokeechr2513Cherokeechr2514Cherokeechr2515Cherokeechr2516Cherokeechr2517Cherokeechr2518Cherokeechr2519Cherokeechr252Cherokeechr2520Cherokeechr2521Cherokeechr2522Cherokeechr2523Cherokeechr2524Cherokeechr2525Cherokeechr2526Cherokeechr2527Cherokeechr2528Cherokeechr2529Cherokeechr253Cherokeechr2530Cherokeechr2531Cherokeechr2532Cherokeechr2533Cherokeechr2534Cherokeechr2535Cherokeechr2536Cherokeechr2537Cherokeechr2538Cherokeechr2539Cherokeechr254Cherokeechr2540Cherokeechr2541Cherokeechr2542Cherokeechr2543Cherokeechr2544Cherokeechr2545Cherokeechr2546Cherokeechr2547Cherokeechr2548Cherokeechr2549Cherokeechr255Cherokeechr2550Cherokeechr2551Cherokeechr2552Cherokeechr2553Cherokeechr2554Cherokeechr2555Cherokeechr2556Cherokeechr2557Cherokeechr2558Cherokeechr2559Cherokeechr256Cherokeechr2560Cherokeechr2561Cherokeechr2562Cherokeechr2563Cherokeechr2564Cherokeechr2565Cherokeechr2566Cherokeechr2567Cherokeechr2568Cherokeechr2569Cherokeechr257Cherokeechr2570Cherokeechr2571Cherokeechr2572Cherokeechr2573Cherokeechr2574Cherokeechr2575Cherokeechr2576Cherokeechr2577Cherokeechr2578Cherokeechr2579Cherokeechr258Cherokeechr2580Cherokeechr2581Cherokeechr2582Cherokeechr2583Cherokeechr2584Cherokeechr2585Cherokeechr2586Cherokeechr2587Cherokeechr2588Cherokeechr2589Cherokeechr259Cherokeechr2590Cherokeechr2591Cherokeechr2592Cherokeechr2593Cherokeechr2594Cherokeechr2595Cherokeechr2596Cherokeechr2597Cherokeechr2598Cherokeechr2599Cherokeechr26Cherokeechr260Cherokeechr2600Cherokeechr2601Cherokeechr2602Cherokeechr2603Cherokeechr2604Cherokeechr2605Cherokeechr2606Cherokeechr2607Cherokeechr2608Cherokeechr2609Cherokeechr261Cherokeechr2610Cherokeechr2611Cherokeechr2612Cherokeechr2613Cherokeechr2614Cherokeechr2615Cherokeechr2616Cherokeechr2617Cherokeechr2618Cherokeechr2619Cherokeechr262Cherokeechr2620Cherokeechr2621Cherokeechr2622Cherokeechr2623Cherokeechr2624Cherokeechr2625Cherokeechr2626Cherokeechr2627Cherokeechr2628Cherokeechr2629Cherokeechr263Cherokeechr2630Cherokeechr2631Cherokeechr2632Cherokeechr2633Cherokeechr2634Cherokeechr2635Cherokeechr2636Cherokeechr2637Cherokeechr2638Cherokeechr2639Cherokeechr264Cherokeechr2640Cherokeechr2641Cherokeechr2642Cherokeechr2643Cherokeechr2644Cherokeechr2645Cherokeechr2646Cherokeechr2647Cherokeechr2648Cherokeechr2649Cherokeechr265Cherokeechr2650Cherokeechr2651Cherokeechr2652Cherokeechr2653Cherokeechr2654Cherokeechr2655Cherokeechr2656Cherokeechr2657Cherokeechr2658Cherokeechr2659Cherokeechr266Cherokeechr2660Cherokeechr2661Cherokeechr2662Cherokeechr2663Cherokeechr2664Cherokeechr2665Cherokeechr2666Cherokeechr2667Cherokeechr2668Cherokeechr2669Cherokeechr267Cherokeechr2670Cherokeechr2671Cherokeechr2672Cherokeechr2673Cherokeechr2674Cherokeechr2675Cherokeechr2676Cherokeechr2677Cherokeechr2678Cherokeechr2679Cherokeechr268Cherokeechr2680Cherokeechr2681Cherokeechr2682Cherokeechr2683Cherokeechr2684Cherokeechr2685Cherokeechr2686Cherokeechr2687Cherokeechr2688Cherokeechr2689Cherokeechr269Cherokeechr2690Cherokeechr2691Cherokeechr2692Cherokeechr2693Cherokeechr2694Cherokeechr2695Cherokeechr2696Cherokeechr2697Cherokeechr2698Cherokeechr2699Cherokeechr27Cherokeechr270Cherokeechr2700Cherokeechr2701Cherokeechr2702Cherokeechr2703Cherokeechr2704Cherokeechr2705Cherokeechr2706Cherokeechr2707Cherokeechr2708Cherokeechr2709Cherokeechr271Cherokeechr2710Cherokeechr2711Cherokeechr2712Cherokeechr2713Cherokeechr2714Cherokeechr2715Cherokeechr2716Cherokeechr2717Cherokeechr2718Cherokeechr2719Cherokeechr272Cherokeechr2720Cherokeechr2721Cherokeechr2722Cherokeechr2723Cherokeechr2724Cherokeechr2725Cherokeechr2726Cherokeechr2727Cherokeechr2728Cherokeechr2729Cherokeechr273Cherokeechr2730Cherokeechr2731Cherokeechr2732Cherokeechr2733Cherokeechr2734Cherokeechr2735Cherokeechr2736Cherokeechr2737Cherokeechr2738Cherokeechr2739Cherokeechr274Cherokeechr2740Cherokeechr2741Cherokeechr2742Cherokeechr2743Cherokeechr2744Cherokeechr2745Cherokeechr2746Cherokeechr2747Cherokeechr2748Cherokeechr2749Cherokeechr275Cherokeechr2750Cherokeechr2751Cherokeechr2752Cherokeechr2753Cherokeechr2754Cherokeechr2755Cherokeechr2756Cherokeechr2757Cherokeechr2758Cherokeechr2759Cherokeechr276Cherokeechr2760Cherokeechr2761Cherokeechr2762Cherokeechr2763Cherokeechr2764Cherokeechr2765Cherokeechr2766Cherokeechr2767Cherokeechr2768Cherokeechr2769Cherokeechr277Cherokeechr2770Cherokeechr2771Cherokeechr2772Cherokeechr2773Cherokeechr2774Cherokeechr2775Cherokeechr2776Cherokeechr2777Cherokeechr2778Cherokeechr2779Cherokeechr278Cherokeechr2780Cherokeechr2781Cherokeechr2782Cherokeechr2783Cherokeechr2784Cherokeechr2785Cherokeechr2786Cherokeechr2787Cherokeechr2788Cherokeechr2789Cherokeechr279Cherokeechr2790Cherokeechr2791Cherokeechr2792Cherokeechr2793Cherokeechr2794Cherokeechr2795Cherokeechr2796Cherokeechr2797Cherokeechr2798Cherokeechr2799Cherokeechr28Cherokeechr280Cherokeechr2800Cherokeechr2801Cherokeechr2802Cherokeechr2803Cherokeechr2804Cherokeechr2805Cherokeechr2806Cherokeechr2807Cherokeechr2808Cherokeechr2809Cherokeechr281Cherokeechr2810Cherokeechr2811Cherokeechr2812Cherokeechr2813Cherokeechr2814Cherokeechr2815Cherokeechr2816Cherokeechr2817Cherokeechr2818Cherokeechr2819Cherokeechr282Cherokeechr2820Cherokeechr2821Cherokeechr2822Cherokeechr2823Cherokeechr2824Cherokeechr2825Cherokeechr2826Cherokeechr2827Cherokeechr2828Cherokeechr2829Cherokeechr283Cherokeechr2830Cherokeechr2831Cherokeechr2832Cherokeechr2833Cherokeechr2834Cherokeechr2835Cherokeechr2836Cherokeechr2837Cherokeechr2838Cherokeechr2839Cherokeechr284Cherokeechr2840Cherokeechr2841Cherokeechr2842Cherokeechr2843Cherokeechr2844Cherokeechr2845Cherokeechr2846Cherokeechr2847Cherokeechr2848Cherokeechr2849Cherokeechr285Cherokeechr2850Cherokeechr2851Cherokeechr2852Cherokeechr2853Cherokeechr2854Cherokeechr2855Cherokeechr2856Cherokeechr2857Cherokeechr2858Cherokeechr2859Cherokeechr286Cherokeechr2860Cherokeechr2861Cherokeechr2862Cherokeechr2863Cherokeechr2864Cherokeechr2865Cherokeechr2866Cherokeechr2867Cherokeechr2868Cherokeechr2869Cherokeechr287Cherokeechr2870Cherokeechr2871Cherokeechr2872Cherokeechr2873Cherokeechr2874Cherokeechr2875Cherokeechr2876Cherokeechr2877Cherokeechr2878Cherokeechr2879Cherokeechr288Cherokeechr2880Cherokeechr2881Cherokeechr2882Cherokeechr2883Cherokeechr2884Cherokeechr2885Cherokeechr2886Cherokeechr2887Cherokeechr2888Cherokeechr2889Cherokeechr289Cherokeechr2890Cherokeechr2891Cherokeechr2892Cherokeechr2893Cherokeechr2894Cherokeechr2895Cherokeechr2896Cherokeechr2897Cherokeechr2898Cherokeechr2899Cherokeechr29Cherokeechr290Cherokeechr2900Cherokeechr2901Cherokeechr2902Cherokeechr2903Cherokeechr2904Cherokeechr2905Cherokeechr2906Cherokeechr2907Cherokeechr2908Cherokeechr2909Cherokeechr291Cherokeechr2910Cherokeechr2911Cherokeechr2912Cherokeechr2913Cherokeechr2914Cherokeechr2915Cherokeechr2916Cherokeechr2917Cherokeechr2918Cherokeechr2919Cherokeechr292Cherokeechr2920Cherokeechr2921Cherokeechr2922Cherokeechr2923Cherokeechr2924Cherokeechr2925Cherokeechr2926Cherokeechr2927Cherokeechr2928Cherokeechr2929Cherokeechr293Cherokeechr2930Cherokeechr2931Cherokeechr2932Cherokeechr2933Cherokeechr2934Cherokeechr2935Cherokeechr2936Cherokeechr2937Cherokeechr2938Cherokeechr2939Cherokeechr294Cherokeechr2940Cherokeechr2941Cherokeechr2942Cherokeechr2943Cherokeechr2944Cherokeechr2945Cherokeechr2946Cherokeechr2947Cherokeechr2948Cherokeechr2949Cherokeechr295Cherokeechr2950Cherokeechr2951Cherokeechr2952Cherokeechr2953Cherokeechr2954Cherokeechr2955Cherokeechr2956Cherokeechr2957Cherokeechr2958Cherokeechr2959Cherokeechr296Cherokeechr2960Cherokeechr2961Cherokeechr2962Cherokeechr2963Cherokeechr2964Cherokeechr2965Cherokeechr2966Cherokeechr2967Cherokeechr2968Cherokeechr2969Cherokeechr297Cherokeechr2970Cherokeechr2971Cherokeechr2972Cherokeechr2973Cherokeechr2974Cherokeechr2975Cherokeechr2976Cherokeechr2977Cherokeechr2978Cherokeechr2979Cherokeechr298Cherokeechr2980Cherokeechr2981Cherokeechr2982Cherokeechr2983Cherokeechr2984Cherokeechr2985Cherokeechr2986Cherokeechr2987Cherokeechr2988Cherokeechr2989Cherokeechr299Cherokeechr2990Cherokeechr2991Cherokeechr2992Cherokeechr2993Cherokeechr2994Cherokeechr2995Cherokeechr2996Cherokeechr2997Cherokeechr2998Cherokeechr2999Cherokeechr3Cherokeechr30Cherokeechr300Cherokeechr3000Cherokeechr3001Cherokeechr3002Cherokeechr3003Cherokeechr3004Cherokeechr3005Cherokeechr3006Cherokeechr3007Cherokeechr3008Cherokeechr3009Cherokeechr301Cherokeechr3010Cherokeechr3011Cherokeechr3012Cherokeechr3013Cherokeechr3014Cherokeechr3015Cherokeechr3016Cherokeechr3017Cherokeechr3018Cherokeechr3019Cherokeechr302Cherokeechr3020Cherokeechr3021Cherokeechr3022Cherokeechr3023Cherokeechr3024Cherokeechr3025Cherokeechr3026Cherokeechr3027Cherokeechr3028Cherokeechr3029Cherokeechr303Cherokeechr3030Cherokeechr3031Cherokeechr3032Cherokeechr3033Cherokeechr3034Cherokeechr3035Cherokeechr3036Cherokeechr3037Cherokeechr3038Cherokeechr3039Cherokeechr304Cherokeechr3040Cherokeechr3041Cherokeechr3042Cherokeechr3043Cherokeechr3044Cherokeechr3045Cherokeechr3046Cherokeechr3047Cherokeechr3048Cherokeechr3049Cherokeechr305Cherokeechr3050Cherokeechr3051Cherokeechr3052Cherokeechr3053Cherokeechr3054Cherokeechr3055Cherokeechr3056Cherokeechr3057Cherokeechr3058Cherokeechr3059Cherokeechr306Cherokeechr3060Cherokeechr3061Cherokeechr3062Cherokeechr3063Cherokeechr3064Cherokeechr3065Cherokeechr3066Cherokeechr3067Cherokeechr3068Cherokeechr3069Cherokeechr307Cherokeechr3070Cherokeechr3071Cherokeechr3072Cherokeechr3073Cherokeechr3074Cherokeechr3075Cherokeechr3076Cherokeechr3077Cherokeechr3078Cherokeechr3079Cherokeechr308Cherokeechr3080Cherokeechr3081Cherokeechr3082Cherokeechr3083Cherokeechr3084Cherokeechr3085Cherokeechr3086Cherokeechr3087Cherokeechr3088Cherokeechr3089Cherokeechr309Cherokeechr3090Cherokeechr3091Cherokeechr3092Cherokeechr3093Cherokeechr3094Cherokeechr3095Cherokeechr3096Cherokeechr3097Cherokeechr3098Cherokeechr3099Cherokeechr31Cherokeechr310Cherokeechr3100Cherokeechr3101Cherokeechr3102Cherokeechr3103Cherokeechr3104Cherokeechr3105Cherokeechr3106Cherokeechr3107Cherokeechr3108Cherokeechr3109Cherokeechr311Cherokeechr3110Cherokeechr3111Cherokeechr3112Cherokeechr3113Cherokeechr3114Cherokeechr3115Cherokeechr3116Cherokeechr3117Cherokeechr3118Cherokeechr3119Cherokeechr312Cherokeechr3120Cherokeechr3121Cherokeechr3122Cherokeechr3123Cherokeechr3124Cherokeechr3125Cherokeechr3126Cherokeechr3127Cherokeechr3128Cherokeechr3129Cherokeechr313Cherokeechr3130Cherokeechr3131Cherokeechr3132Cherokeechr3133Cherokeechr3134Cherokeechr3135Cherokeechr3136Cherokeechr3137Cherokeechr3138Cherokeechr3139Cherokeechr314Cherokeechr3140Cherokeechr3141Cherokeechr3142Cherokeechr3143Cherokeechr3144Cherokeechr3145Cherokeechr3146Cherokeechr3147Cherokeechr3148Cherokeechr3149Cherokeechr315Cherokeechr3150Cherokeechr3151Cherokeechr3152Cherokeechr3153Cherokeechr3154Cherokeechr3155Cherokeechr3156Cherokeechr3157Cherokeechr3158Cherokeechr3159Cherokeechr316Cherokeechr3160Cherokeechr3161Cherokeechr3162Cherokeechr3163Cherokeechr3164Cherokeechr3165Cherokeechr3166Cherokeechr3167Cherokeechr3168Cherokeechr3169Cherokeechr317Cherokeechr3170Cherokeechr3171Cherokeechr3172Cherokeechr3173Cherokeechr3174Cherokeechr3175Cherokeechr3176Cherokeechr3177Cherokeechr3178Cherokeechr3179Cherokeechr318Cherokeechr3180Cherokeechr3181Cherokeechr3182Cherokeechr3183Cherokeechr3184Cherokeechr3185Cherokeechr3186Cherokeechr3187Cherokeechr3188Cherokeechr3189Cherokeechr319Cherokeechr3190Cherokeechr3191Cherokeechr3192Cherokeechr3193Cherokeechr3194Cherokeechr3195Cherokeechr3196Cherokeechr3197Cherokeechr3198Cherokeechr3199Cherokeechr32Cherokeechr320Cherokeechr3200Cherokeechr3201Cherokeechr3202Cherokeechr3203Cherokeechr3204Cherokeechr3205Cherokeechr3206Cherokeechr3207Cherokeechr3208Cherokeechr3209Cherokeechr321Cherokeechr3210Cherokeechr3211Cherokeechr3212Cherokeechr3213Cherokeechr3214Cherokeechr3215Cherokeechr3216Cherokeechr3217Cherokeechr3218Cherokeechr3219Cherokeechr322Cherokeechr3220Cherokeechr3221Cherokeechr3222Cherokeechr3223Cherokeechr3224Cherokeechr3225Cherokeechr3226Cherokeechr3227Cherokeechr3228Cherokeechr3229Cherokeechr323Cherokeechr3230Cherokeechr3231Cherokeechr3232Cherokeechr3233Cherokeechr3234Cherokeechr3235Cherokeechr3236Cherokeechr3237Cherokeechr3238Cherokeechr3239Cherokeechr324Cherokeechr3240Cherokeechr3241Cherokeechr3242Cherokeechr3243Cherokeechr3244Cherokeechr3245Cherokeechr3246Cherokeechr3247Cherokeechr3248Cherokeechr3249Cherokeechr325Cherokeechr3250Cherokeechr3251Cherokeechr3252Cherokeechr3253Cherokeechr3254Cherokeechr3255Cherokeechr3256Cherokeechr3257Cherokeechr3258Cherokeechr3259Cherokeechr326Cherokeechr3260Cherokeechr3261Cherokeechr3262Cherokeechr3263Cherokeechr3264Cherokeechr3265Cherokeechr3266Cherokeechr3267Cherokeechr3268Cherokeechr3269Cherokeechr327Cherokeechr3270Cherokeechr3271Cherokeechr3272Cherokeechr3273Cherokeechr3274Cherokeechr3275Cherokeechr3276Cherokeechr3277Cherokeechr3278Cherokeechr3279Cherokeechr328Cherokeechr3280Cherokeechr3281Cherokeechr3282Cherokeechr3283Cherokeechr3284Cherokeechr3285Cherokeechr3286Cherokeechr3287Cherokeechr3288Cherokeechr3289Cherokeechr329Cherokeechr3290Cherokeechr3291Cherokeechr3292Cherokeechr3293Cherokeechr3294Cherokeechr3295Cherokeechr3296Cherokeechr3297Cherokeechr3298Cherokeechr3299Cherokeechr33Cherokeechr330Cherokeechr3300Cherokeechr3301Cherokeechr3302Cherokeechr3303Cherokeechr3304Cherokeechr3305Cherokeechr3306Cherokeechr3307Cherokeechr3308Cherokeechr3309Cherokeechr331Cherokeechr3310Cherokeechr3311Cherokeechr3312Cherokeechr3313Cherokeechr3314Cherokeechr3315Cherokeechr3316Cherokeechr3317Cherokeechr3318Cherokeechr3319Cherokeechr332Cherokeechr3320Cherokeechr3321Cherokeechr3322Cherokeechr3323Cherokeechr3324Cherokeechr3325Cherokeechr3326Cherokeechr3327Cherokeechr3328Cherokeechr3329Cherokeechr333Cherokeechr3330Cherokeechr3331Cherokeechr3332Cherokeechr3333Cherokeechr3334Cherokeechr3335Cherokeechr3336Cherokeechr3337Cherokeechr3338Cherokeechr3339Cherokeechr334Cherokeechr3340Cherokeechr3341Cherokeechr3342Cherokeechr3343Cherokeechr3344Cherokeechr3345Cherokeechr3346Cherokeechr3347Cherokeechr3348Cherokeechr3349Cherokeechr335Cherokeechr3350Cherokeechr3351Cherokeechr3352Cherokeechr3353Cherokeechr3354Cherokeechr3355Cherokeechr3356Cherokeechr3357Cherokeechr3358Cherokeechr3359Cherokeechr336Cherokeechr3360Cherokeechr3361Cherokeechr3362Cherokeechr3363Cherokeechr3364Cherokeechr3365Cherokeechr3366Cherokeechr3367Cherokeechr3368Cherokeechr3369Cherokeechr337Cherokeechr3370Cherokeechr3371Cherokeechr3372Cherokeechr3373Cherokeechr3374Cherokeechr3375Cherokeechr3376Cherokeechr3377Cherokeechr3378Cherokeechr3379Cherokeechr338Cherokeechr3380Cherokeechr3381Cherokeechr3382Cherokeechr3383Cherokeechr3384Cherokeechr3385Cherokeechr3386Cherokeechr3387Cherokeechr3388Cherokeechr3389Cherokeechr339Cherokeechr3390Cherokeechr3391Cherokeechr3392Cherokeechr3393Cherokeechr3394Cherokeechr3395Cherokeechr3396Cherokeechr3397Cherokeechr3398Cherokeechr3399Cherokeechr34Cherokeechr340Cherokeechr3400Cherokeechr3401Cherokeechr3402Cherokeechr3403Cherokeechr3404Cherokeechr3405Cherokeechr3406Cherokeechr3407Cherokeechr3408Cherokeechr3409Cherokeechr341Cherokeechr3410Cherokeechr3411Cherokeechr3412Cherokeechr3413Cherokeechr3414Cherokeechr3415Cherokeechr3416Cherokeechr3417Cherokeechr3418Cherokeechr3419Cherokeechr342Cherokeechr3420Cherokeechr3421Cherokeechr3422Cherokeechr3423Cherokeechr3424Cherokeechr3425Cherokeechr3426Cherokeechr3427Cherokeechr3428Cherokeechr3429Cherokeechr343Cherokeechr3430Cherokeechr3431Cherokeechr3432Cherokeechr3433Cherokeechr3434Cherokeechr3435Cherokeechr3436Cherokeechr3437Cherokeechr3438Cherokeechr3439Cherokeechr344Cherokeechr3440Cherokeechr3441Cherokeechr3442Cherokeechr3443Cherokeechr3444Cherokeechr3445Cherokeechr3446Cherokeechr3447Cherokeechr3448Cherokeechr3449Cherokeechr345Cherokeechr3450Cherokeechr3451Cherokeechr3452Cherokeechr3453Cherokeechr3454Cherokeechr3455Cherokeechr3456Cherokeechr3457Cherokeechr3458Cherokeechr3459Cherokeechr346Cherokeechr3460Cherokeechr3461Cherokeechr3462Cherokeechr3463Cherokeechr3464Cherokeechr3465Cherokeechr3466Cherokeechr3467Cherokeechr3468Cherokeechr3469Cherokeechr347Cherokeechr3470Cherokeechr3471Cherokeechr3472Cherokeechr3473Cherokeechr3474Cherokeechr3475Cherokeechr3476Cherokeechr3477Cherokeechr3478Cherokeechr3479Cherokeechr348Cherokeechr3480Cherokeechr3481Cherokeechr3482Cherokeechr3483Cherokeechr3484Cherokeechr3485Cherokeechr3486Cherokeechr3487Cherokeechr3488Cherokeechr3489Cherokeechr349Cherokeechr3490Cherokeechr3491Cherokeechr3492Cherokeechr3493Cherokeechr3494Cherokeechr3495Cherokeechr3496Cherokeechr3497Cherokeechr3498Cherokeechr3499Cherokeechr35Cherokeechr350Cherokeechr3500Cherokeechr3501Cherokeechr3502Cherokeechr3503Cherokeechr3504Cherokeechr3505Cherokeechr3506Cherokeechr3507Cherokeechr3508Cherokeechr3509Cherokeechr351Cherokeechr3510Cherokeechr3511Cherokeechr3512Cherokeechr3513Cherokeechr3514Cherokeechr3515Cherokeechr3516Cherokeechr3517Cherokeechr3518Cherokeechr3519Cherokeechr352Cherokeechr3520Cherokeechr3521Cherokeechr3522Cherokeechr3523Cherokeechr3524Cherokeechr3525Cherokeechr3526Cherokeechr3527Cherokeechr3528Cherokeechr3529Cherokeechr353Cherokeechr3530Cherokeechr3531Cherokeechr3532Cherokeechr3533Cherokeechr3534Cherokeechr3535Cherokeechr3536Cherokeechr3537Cherokeechr3538Cherokeechr3539Cherokeechr354Cherokeechr3540Cherokeechr3541Cherokeechr3542Cherokeechr3543Cherokeechr3544Cherokeechr3545Cherokeechr3546Cherokeechr3547Cherokeechr3548Cherokeechr3549Cherokeechr355Cherokeechr3550Cherokeechr3551Cherokeechr3552Cherokeechr3553Cherokeechr3554Cherokeechr3555Cherokeechr3556Cherokeechr3557Cherokeechr3558Cherokeechr3559Cherokeechr356Cherokeechr3560Cherokeechr3561Cherokeechr3562Cherokeechr3563Cherokeechr3564Cherokeechr3565Cherokeechr3566Cherokeechr3567Cherokeechr3568Cherokeechr3569Cherokeechr357Cherokeechr3570Cherokeechr3571Cherokeechr3572Cherokeechr3573Cherokeechr3574Cherokeechr3575Cherokeechr3576Cherokeechr3577Cherokeechr3578Cherokeechr3579Cherokeechr358Cherokeechr3580Cherokeechr3581Cherokeechr3582Cherokeechr3583Cherokeechr3584Cherokeechr3585Cherokeechr3586Cherokeechr3587Cherokeechr3588Cherokeechr3589Cherokeechr359Cherokeechr3590Cherokeechr3591Cherokeechr3592Cherokeechr3593Cherokeechr3594Cherokeechr3595Cherokeechr3596Cherokeechr3597Cherokeechr3598Cherokeechr3599Cherokeechr36Cherokeechr360Cherokeechr3600Cherokeechr3601Cherokeechr3602Cherokeechr3603Cherokeechr3604Cherokeechr3605Cherokeechr3606Cherokeechr3607Cherokeechr3608Cherokeechr3609Cherokeechr361Cherokeechr3610Cherokeechr3611Cherokeechr3612Cherokeechr3613Cherokeechr3614Cherokeechr3615Cherokeechr3616Cherokeechr3617Cherokeechr3618Cherokeechr3619Cherokeechr362Cherokeechr3620Cherokeechr3621Cherokeechr3622Cherokeechr3623Cherokeechr3624Cherokeechr3625Cherokeechr3626Cherokeechr3627Cherokeechr3628Cherokeechr3629Cherokeechr363Cherokeechr3630Cherokeechr3631Cherokeechr3632Cherokeechr3633Cherokeechr3634Cherokeechr3635Cherokeechr3636Cherokeechr3637Cherokeechr3638Cherokeechr3639Cherokeechr364Cherokeechr3640Cherokeechr3641Cherokeechr3642Cherokeechr3643Cherokeechr3644Cherokeechr3645Cherokeechr3646Cherokeechr3647Cherokeechr3648Cherokeechr3649Cherokeechr365Cherokeechr3650Cherokeechr3651Cherokeechr3652Cherokeechr3653Cherokeechr3654Cherokeechr3655Cherokeechr3656Cherokeechr3657Cherokeechr3658Cherokeechr3659Cherokeechr366Cherokeechr3660Cherokeechr3661Cherokeechr3662Cherokeechr3663Cherokeechr3664Cherokeechr3665Cherokeechr3666Cherokeechr3667Cherokeechr3668Cherokeechr3669Cherokeechr367Cherokeechr3670Cherokeechr3671Cherokeechr3672Cherokeechr3673Cherokeechr3674Cherokeechr3675Cherokeechr3676Cherokeechr3677Cherokeechr3678Cherokeechr3679Cherokeechr368Cherokeechr3680Cherokeechr3681Cherokeechr3682Cherokeechr3683Cherokeechr3684Cherokeechr3685Cherokeechr3686Cherokeechr3687Cherokeechr3688Cherokeechr3689Cherokeechr369Cherokeechr3690Cherokeechr3691Cherokeechr3692Cherokeechr3693Cherokeechr3694Cherokeechr3695Cherokeechr3696Cherokeechr3697Cherokeechr3698Cherokeechr3699Cherokeechr37Cherokeechr370Cherokeechr3700Cherokeechr3701Cherokeechr3702Cherokeechr3703Cherokeechr3704Cherokeechr3705Cherokeechr3706Cherokeechr3707Cherokeechr3708Cherokeechr3709Cherokeechr371Cherokeechr3710Cherokeechr3711Cherokeechr3712Cherokeechr3713Cherokeechr3714Cherokeechr3715Cherokeechr3716Cherokeechr3717Cherokeechr3718Cherokeechr3719Cherokeechr372Cherokeechr3720Cherokeechr3721Cherokeechr3722Cherokeechr3723Cherokeechr3724Cherokeechr3725Cherokeechr3726Cherokeechr3727Cherokeechr3728Cherokeechr3729Cherokeechr373Cherokeechr3730Cherokeechr3731Cherokeechr3732Cherokeechr3733Cherokeechr3734Cherokeechr3735Cherokeechr3736Cherokeechr3737Cherokeechr3738Cherokeechr3739Cherokeechr374Cherokeechr3740Cherokeechr3741Cherokeechr3742Cherokeechr3743Cherokeechr3744Cherokeechr3745Cherokeechr3746Cherokeechr3747Cherokeechr3748Cherokeechr3749Cherokeechr375Cherokeechr3750Cherokeechr3751Cherokeechr3752Cherokeechr3753Cherokeechr3754Cherokeechr3755Cherokeechr3756Cherokeechr3757Cherokeechr3758Cherokeechr3759Cherokeechr376Cherokeechr3760Cherokeechr3761Cherokeechr3762Cherokeechr3763Cherokeechr3764Cherokeechr3765Cherokeechr3766Cherokeechr3767Cherokeechr3768Cherokeechr3769Cherokeechr377Cherokeechr3770Cherokeechr3771Cherokeechr3772Cherokeechr3773Cherokeechr3774Cherokeechr3775Cherokeechr3776Cherokeechr3777Cherokeechr3778Cherokeechr3779Cherokeechr378Cherokeechr3780Cherokeechr3781Cherokeechr3782Cherokeechr3783Cherokeechr3784Cherokeechr3785Cherokeechr3786Cherokeechr3787Cherokeechr3788Cherokeechr3789Cherokeechr379Cherokeechr3790Cherokeechr3791Cherokeechr3792Cherokeechr3793Cherokeechr3794Cherokeechr3795Cherokeechr3796Cherokeechr3797Cherokeechr3798Cherokeechr3799Cherokeechr38Cherokeechr380Cherokeechr3800Cherokeechr3801Cherokeechr3802Cherokeechr3803Cherokeechr3804Cherokeechr3805Cherokeechr3806Cherokeechr3807Cherokeechr3808Cherokeechr3809Cherokeechr381Cherokeechr3810Cherokeechr3811Cherokeechr3812Cherokeechr3813Cherokeechr3814Cherokeechr3815Cherokeechr3816Cherokeechr3817Cherokeechr3818Cherokeechr3819Cherokeechr382Cherokeechr3820Cherokeechr3821Cherokeechr3822Cherokeechr3823Cherokeechr3824Cherokeechr3825Cherokeechr3826Cherokeechr3827Cherokeechr3828Cherokeechr3829Cherokeechr383Cherokeechr3830Cherokeechr3831Cherokeechr3832Cherokeechr3833Cherokeechr3834Cherokeechr3835Cherokeechr3836Cherokeechr3837Cherokeechr3838Cherokeechr3839Cherokeechr384Cherokeechr3840Cherokeechr3841Cherokeechr3842Cherokeechr3843Cherokeechr3844Cherokeechr3845Cherokeechr3846Cherokeechr3847Cherokeechr3848Cherokeechr3849Cherokeechr385Cherokeechr3850Cherokeechr3851Cherokeechr3852Cherokeechr3853Cherokeechr3854Cherokeechr3855Cherokeechr3856Cherokeechr3857Cherokeechr3858Cherokeechr3859Cherokeechr386Cherokeechr3860Cherokeechr3861Cherokeechr3862Cherokeechr3863Cherokeechr3864Cherokeechr3865Cherokeechr3866Cherokeechr3867Cherokeechr3868Cherokeechr3869Cherokeechr387Cherokeechr3870Cherokeechr3871Cherokeechr3872Cherokeechr3873Cherokeechr3874Cherokeechr3875Cherokeechr3876Cherokeechr3877Cherokeechr3878Cherokeechr3879Cherokeechr388Cherokeechr3880Cherokeechr3881Cherokeechr3882Cherokeechr3883Cherokeechr3884Cherokeechr3885Cherokeechr3886Cherokeechr3887Cherokeechr3888Cherokeechr3889Cherokeechr389Cherokeechr3890Cherokeechr3891Cherokeechr3892Cherokeechr3893Cherokeechr3894Cherokeechr3895Cherokeechr3896Cherokeechr3897Cherokeechr3898Cherokeechr3899Cherokeechr39Cherokeechr390Cherokeechr3900Cherokeechr3901Cherokeechr3902Cherokeechr3903Cherokeechr3904Cherokeechr3905Cherokeechr3906Cherokeechr3907Cherokeechr3908Cherokeechr3909Cherokeechr391Cherokeechr3910Cherokeechr3911Cherokeechr3912Cherokeechr3913Cherokeechr3914Cherokeechr3915Cherokeechr3916Cherokeechr3917Cherokeechr3918Cherokeechr3919Cherokeechr392Cherokeechr3920Cherokeechr3921Cherokeechr3922Cherokeechr3923Cherokeechr3924Cherokeechr3925Cherokeechr3926Cherokeechr3927Cherokeechr3928Cherokeechr3929Cherokeechr393Cherokeechr3930Cherokeechr3931Cherokeechr3932Cherokeechr3933Cherokeechr3934Cherokeechr3935Cherokeechr3936Cherokeechr3937Cherokeechr3938Cherokeechr3939Cherokeechr394Cherokeechr3940Cherokeechr3941Cherokeechr3942Cherokeechr3943Cherokeechr3944Cherokeechr3945Cherokeechr3946Cherokeechr3947Cherokeechr3948Cherokeechr3949Cherokeechr395Cherokeechr3950Cherokeechr3951Cherokeechr3952Cherokeechr3953Cherokeechr3954Cherokeechr3955Cherokeechr3956Cherokeechr3957Cherokeechr3958Cherokeechr3959Cherokeechr396Cherokeechr3960Cherokeechr3961Cherokeechr3962Cherokeechr3963Cherokeechr3964Cherokeechr3965Cherokeechr3966Cherokeechr3967Cherokeechr3968Cherokeechr3969Cherokeechr397Cherokeechr3970Cherokeechr3971Cherokeechr3972Cherokeechr3973Cherokeechr3974Cherokeechr3975Cherokeechr3976Cherokeechr3977Cherokeechr3978Cherokeechr3979Cherokeechr398Cherokeechr3980Cherokeechr3981Cherokeechr3982Cherokeechr3983Cherokeechr3984Cherokeechr3985Cherokeechr3986Cherokeechr3987Cherokeechr3988Cherokeechr3989Cherokeechr399Cherokeechr3990Cherokeechr3991Cherokeechr3992Cherokeechr3993Cherokeechr3994Cherokeechr3995Cherokeechr3996Cherokeechr3997Cherokeechr3998Cherokeechr3999Cherokeechr4Cherokeechr40Cherokeechr400Cherokeechr4000Cherokeechr4001Cherokeechr4002Cherokeechr4003Cherokeechr4004Cherokeechr4005Cherokeechr4006Cherokeechr4007Cherokeechr4008Cherokeechr4009Cherokeechr401Cherokeechr4010Cherokeechr4011Cherokeechr4012Cherokeechr4013Cherokeechr4014Cherokeechr4015Cherokeechr4016Cherokeechr4017Cherokeechr4018Cherokeechr4019Cherokeechr402Cherokeechr4020Cherokeechr4021Cherokeechr4022Cherokeechr4023Cherokeechr4024Cherokeechr4025Cherokeechr4026Cherokeechr4027Cherokeechr4028Cherokeechr4029Cherokeechr403Cherokeechr4030Cherokeechr4031Cherokeechr4032Cherokeechr4033Cherokeechr4034Cherokeechr4035Cherokeechr4036Cherokeechr4037Cherokeechr4038Cherokeechr4039Cherokeechr404Cherokeechr4040Cherokeechr4041Cherokeechr4042Cherokeechr4043Cherokeechr4044Cherokeechr4045Cherokeechr4046Cherokeechr4047Cherokeechr4048Cherokeechr4049Cherokeechr405Cherokeechr4050Cherokeechr4051Cherokeechr4052Cherokeechr4053Cherokeechr4054Cherokeechr4055Cherokeechr4056Cherokeechr4057Cherokeechr4058Cherokeechr4059Cherokeechr406Cherokeechr4060Cherokeechr4061Cherokeechr4062Cherokeechr4063Cherokeechr4064Cherokeechr4065Cherokeechr4066Cherokeechr4067Cherokeechr4068Cherokeechr4069Cherokeechr407Cherokeechr4070Cherokeechr4071Cherokeechr4072Cherokeechr4073Cherokeechr4074Cherokeechr4075Cherokeechr4076Cherokeechr4077Cherokeechr4078Cherokeechr4079Cherokeechr408Cherokeechr4080Cherokeechr4081Cherokeechr4082Cherokeechr4083Cherokeechr4084Cherokeechr4085Cherokeechr4086Cherokeechr4087Cherokeechr4088Cherokeechr4089Cherokeechr409Cherokeechr4090Cherokeechr4091Cherokeechr4092Cherokeechr4093Cherokeechr4094Cherokeechr4095Cherokeechr4096Cherokeechr4097Cherokeechr4098Cherokeechr4099Cherokeechr41Cherokeechr410Cherokeechr4100Cherokeechr4101Cherokeechr4102Cherokeechr4103Cherokeechr4104Cherokeechr4105Cherokeechr4106Cherokeechr4107Cherokeechr4108Cherokeechr4109Cherokeechr411Cherokeechr4110Cherokeechr4111Cherokeechr4112Cherokeechr4113Cherokeechr4114Cherokeechr4115Cherokeechr4116Cherokeechr4117Cherokeechr4118Cherokeechr4119Cherokeechr412Cherokeechr4120Cherokeechr4121Cherokeechr4122Cherokeechr4123Cherokeechr4124Cherokeechr4125Cherokeechr4126Cherokeechr4127Cherokeechr4128Cherokeechr4129Cherokeechr413Cherokeechr4130Cherokeechr4131Cherokeechr4132Cherokeechr4133Cherokeechr4134Cherokeechr4135Cherokeechr4136Cherokeechr4137Cherokeechr4138Cherokeechr4139Cherokeechr414Cherokeechr4140Cherokeechr4141Cherokeechr4142Cherokeechr4143Cherokeechr4144Cherokeechr4145Cherokeechr4146Cherokeechr4147Cherokeechr4148Cherokeechr4149Cherokeechr415Cherokeechr4150Cherokeechr4151Cherokeechr4152Cherokeechr4153Cherokeechr4154Cherokeechr4155Cherokeechr4156Cherokeechr4157Cherokeechr4158Cherokeechr4159Cherokeechr416Cherokeechr4160Cherokeechr4161Cherokeechr4162Cherokeechr4163Cherokeechr4164Cherokeechr4165Cherokeechr4166Cherokeechr4167Cherokeechr4168Cherokeechr4169Cherokeechr417Cherokeechr4170Cherokeechr4171Cherokeechr4172Cherokeechr4173Cherokeechr4174Cherokeechr4175Cherokeechr4176Cherokeechr4177Cherokeechr4178Cherokeechr4179Cherokeechr418Cherokeechr4180Cherokeechr4181Cherokeechr4182Cherokeechr4183Cherokeechr4184Cherokeechr4185Cherokeechr4186Cherokeechr4187Cherokeechr4188Cherokeechr4189Cherokeechr419Cherokeechr4190Cherokeechr4191Cherokeechr4192Cherokeechr4193Cherokeechr4194Cherokeechr4195Cherokeechr4196Cherokeechr4197Cherokeechr4198Cherokeechr4199Cherokeechr42Cherokeechr420Cherokeechr4200Cherokeechr4201Cherokeechr4202Cherokeechr4203Cherokeechr4204Cherokeechr4205Cherokeechr4206Cherokeechr4207Cherokeechr4208Cherokeechr4209Cherokeechr421Cherokeechr4210Cherokeechr4211Cherokeechr4212Cherokeechr4213Cherokeechr4214Cherokeechr4215Cherokeechr4216Cherokeechr4217Cherokeechr4218Cherokeechr4219Cherokeechr422Cherokeechr4220Cherokeechr4221Cherokeechr4222Cherokeechr4223Cherokeechr4224Cherokeechr4225Cherokeechr4226Cherokeechr4227Cherokeechr4228Cherokeechr4229Cherokeechr423Cherokeechr4230Cherokeechr4231Cherokeechr4232Cherokeechr4233Cherokeechr4234Cherokeechr4235Cherokeechr4236Cherokeechr4237Cherokeechr4238Cherokeechr4239Cherokeechr424Cherokeechr4240Cherokeechr4241Cherokeechr4242Cherokeechr4243Cherokeechr4244Cherokeechr4245Cherokeechr4246Cherokeechr4247Cherokeechr4248Cherokeechr4249Cherokeechr425Cherokeechr4250Cherokeechr4251Cherokeechr4252Cherokeechr4253Cherokeechr4254Cherokeechr4255Cherokeechr4256Cherokeechr4257Cherokeechr4258Cherokeechr4259Cherokeechr426Cherokeechr4260Cherokeechr4261Cherokeechr4262Cherokeechr4263Cherokeechr4264Cherokeechr4265Cherokeechr4266Cherokeechr4267Cherokeechr4268Cherokeechr4269Cherokeechr427Cherokeechr4270Cherokeechr4271Cherokeechr4272Cherokeechr4273Cherokeechr4274Cherokeechr4275Cherokeechr4276Cherokeechr4277Cherokeechr4278Cherokeechr4279Cherokeechr428Cherokeechr4280Cherokeechr4281Cherokeechr4282Cherokeechr4283Cherokeechr4284Cherokeechr4285Cherokeechr4286Cherokeechr4287Cherokeechr4288Cherokeechr4289Cherokeechr429Cherokeechr4290Cherokeechr4291Cherokeechr4292Cherokeechr4293Cherokeechr4294Cherokeechr4295Cherokeechr4296Cherokeechr4297Cherokeechr4298Cherokeechr4299Cherokeechr43Cherokeechr430Cherokeechr4300Cherokeechr4301Cherokeechr4302Cherokeechr4303Cherokeechr4304Cherokeechr4305Cherokeechr4306Cherokeechr4307Cherokeechr4308Cherokeechr4309Cherokeechr431Cherokeechr4310Cherokeechr4311Cherokeechr4312Cherokeechr4313Cherokeechr4314Cherokeechr4315Cherokeechr4316Cherokeechr4317Cherokeechr4318Cherokeechr4319Cherokeechr432Cherokeechr4320Cherokeechr4321Cherokeechr4322Cherokeechr4323Cherokeechr4324Cherokeechr4325Cherokeechr4326Cherokeechr4327Cherokeechr4328Cherokeechr4329Cherokeechr433Cherokeechr4330Cherokeechr4331Cherokeechr4332Cherokeechr4333Cherokeechr4334Cherokeechr4335Cherokeechr4336Cherokeechr4337Cherokeechr4338Cherokeechr4339Cherokeechr434Cherokeechr4340Cherokeechr4341Cherokeechr4342Cherokeechr4343Cherokeechr4344Cherokeechr4345Cherokeechr4346Cherokeechr4347Cherokeechr4348Cherokeechr4349Cherokeechr435Cherokeechr4350Cherokeechr4351Cherokeechr4352Cherokeechr4353Cherokeechr4354Cherokeechr4355Cherokeechr4356Cherokeechr4357Cherokeechr4358Cherokeechr4359Cherokeechr436Cherokeechr4360Cherokeechr4361Cherokeechr4362Cherokeechr4363Cherokeechr4364Cherokeechr4365Cherokeechr4366Cherokeechr4367Cherokeechr4368Cherokeechr4369Cherokeechr437Cherokeechr4370Cherokeechr4371Cherokeechr4372Cherokeechr4373Cherokeechr4374Cherokeechr4375Cherokeechr4376Cherokeechr4377Cherokeechr4378Cherokeechr4379Cherokeechr438Cherokeechr4380Cherokeechr4381Cherokeechr4382Cherokeechr4383Cherokeechr4384Cherokeechr4385Cherokeechr4386Cherokeechr4387Cherokeechr4388Cherokeechr4389Cherokeechr439Cherokeechr4390Cherokeechr4391Cherokeechr4392Cherokeechr4393Cherokeechr4394Cherokeechr4395Cherokeechr4396Cherokeechr4397Cherokeechr4398Cherokeechr4399Cherokeechr44Cherokeechr440Cherokeechr4400Cherokeechr4401Cherokeechr4402Cherokeechr4403Cherokeechr4404Cherokeechr4405Cherokeechr4406Cherokeechr4407Cherokeechr4408Cherokeechr4409Cherokeechr441Cherokeechr4410Cherokeechr4411Cherokeechr4412Cherokeechr4413Cherokeechr4414Cherokeechr4415Cherokeechr4416Cherokeechr4417Cherokeechr4418Cherokeechr4419Cherokeechr442Cherokeechr4420Cherokeechr4421Cherokeechr4422Cherokeechr4423Cherokeechr4424Cherokeechr4425Cherokeechr4426Cherokeechr4427Cherokeechr4428Cherokeechr4429Cherokeechr443Cherokeechr4430Cherokeechr4431Cherokeechr4432Cherokeechr4433Cherokeechr4434Cherokeechr4435Cherokeechr4436Cherokeechr4437Cherokeechr4438Cherokeechr4439Cherokeechr444Cherokeechr4440Cherokeechr4441Cherokeechr4442Cherokeechr4443Cherokeechr4444Cherokeechr4445Cherokeechr4446Cherokeechr4447Cherokeechr4448Cherokeechr4449Cherokeechr445Cherokeechr4450Cherokeechr4451Cherokeechr4452Cherokeechr4453Cherokeechr4454Cherokeechr4455Cherokeechr4456Cherokeechr4457Cherokeechr4458Cherokeechr4459Cherokeechr446Cherokeechr4460Cherokeechr4461Cherokeechr4462Cherokeechr4463Cherokeechr4464Cherokeechr4465Cherokeechr4466Cherokeechr4467Cherokeechr4468Cherokeechr4469Cherokeechr447Cherokeechr4470Cherokeechr4471Cherokeechr4472Cherokeechr4473Cherokeechr4474Cherokeechr4475Cherokeechr4476Cherokeechr4477Cherokeechr4478Cherokeechr4479Cherokeechr448Cherokeechr4480Cherokeechr4481Cherokeechr4482Cherokeechr4483Cherokeechr4484Cherokeechr4485Cherokeechr4486Cherokeechr4487Cherokeechr4488Cherokeechr4489Cherokeechr449Cherokeechr4490Cherokeechr4491Cherokeechr4492Cherokeechr4493Cherokeechr4494Cherokeechr4495Cherokeechr4496Cherokeechr4497Cherokeechr4498Cherokeechr4499Cherokeechr45Cherokeechr450Cherokeechr4500Cherokeechr4501Cherokeechr4502Cherokeechr4503Cherokeechr4504Cherokeechr4505Cherokeechr4506Cherokeechr4507Cherokeechr4508Cherokeechr4509Cherokeechr451Cherokeechr4510Cherokeechr4511Cherokeechr4512Cherokeechr4513Cherokeechr4514Cherokeechr4515Cherokeechr4516Cherokeechr4517Cherokeechr4518Cherokeechr4519Cherokeechr452Cherokeechr4520Cherokeechr4521Cherokeechr4522Cherokeechr4523Cherokeechr4524Cherokeechr4525Cherokeechr4526Cherokeechr4527Cherokeechr4528Cherokeechr4529Cherokeechr453Cherokeechr4530Cherokeechr4531Cherokeechr4532Cherokeechr4533Cherokeechr4534Cherokeechr4535Cherokeechr4536Cherokeechr4537Cherokeechr4538Cherokeechr4539Cherokeechr454Cherokeechr4540Cherokeechr4541Cherokeechr4542Cherokeechr4543Cherokeechr4544Cherokeechr4545Cherokeechr4546Cherokeechr4547Cherokeechr4548Cherokeechr4549Cherokeechr455Cherokeechr4550Cherokeechr4551Cherokeechr4552Cherokeechr4553Cherokeechr4554Cherokeechr4555Cherokeechr4556Cherokeechr4557Cherokeechr4558Cherokeechr4559Cherokeechr456Cherokeechr4560Cherokeechr4561Cherokeechr4562Cherokeechr4563Cherokeechr4564Cherokeechr4565Cherokeechr4566Cherokeechr4567Cherokeechr4568Cherokeechr4569Cherokeechr457Cherokeechr4570Cherokeechr4571Cherokeechr4572Cherokeechr4573Cherokeechr4574Cherokeechr4575Cherokeechr4576Cherokeechr4577Cherokeechr4578Cherokeechr4579Cherokeechr458Cherokeechr4580Cherokeechr4581Cherokeechr4582Cherokeechr4583Cherokeechr4584Cherokeechr4585Cherokeechr4586Cherokeechr4587Cherokeechr4588Cherokeechr4589Cherokeechr459Cherokeechr4590Cherokeechr4591Cherokeechr4592Cherokeechr4593Cherokeechr4594Cherokeechr4595Cherokeechr4596Cherokeechr4597Cherokeechr4598Cherokeechr4599Cherokeechr46Cherokeechr460Cherokeechr4600Cherokeechr4601Cherokeechr4602Cherokeechr4603Cherokeechr4604Cherokeechr4605Cherokeechr4606Cherokeechr4607Cherokeechr4608Cherokeechr4609Cherokeechr461Cherokeechr4610Cherokeechr4611Cherokeechr4612Cherokeechr4613Cherokeechr4614Cherokeechr4615Cherokeechr4616Cherokeechr4617Cherokeechr4618Cherokeechr4619Cherokeechr462Cherokeechr4620Cherokeechr4621Cherokeechr4622Cherokeechr4623Cherokeechr4624Cherokeechr4625Cherokeechr4626Cherokeechr4627Cherokeechr4628Cherokeechr4629Cherokeechr463Cherokeechr4630Cherokeechr4631Cherokeechr4632Cherokeechr4633Cherokeechr4634Cherokeechr4635Cherokeechr4636Cherokeechr4637Cherokeechr4638Cherokeechr4639Cherokeechr464Cherokeechr4640Cherokeechr4641Cherokeechr4642Cherokeechr4643Cherokeechr4644Cherokeechr4645Cherokeechr4646Cherokeechr4647Cherokeechr4648Cherokeechr4649Cherokeechr465Cherokeechr4650Cherokeechr4651Cherokeechr4652Cherokeechr4653Cherokeechr4654Cherokeechr4655Cherokeechr4656Cherokeechr4657Cherokeechr4658Cherokeechr4659Cherokeechr466Cherokeechr4660Cherokeechr4661Cherokeechr4662Cherokeechr4663Cherokeechr4664Cherokeechr4665Cherokeechr4666Cherokeechr4667Cherokeechr4668Cherokeechr4669Cherokeechr467Cherokeechr4670Cherokeechr4671Cherokeechr4672Cherokeechr4673Cherokeechr4674Cherokeechr4675Cherokeechr4676Cherokeechr4677Cherokeechr4678Cherokeechr4679Cherokeechr468Cherokeechr4680Cherokeechr4681Cherokeechr4682Cherokeechr4683Cherokeechr4684Cherokeechr4685Cherokeechr4686Cherokeechr4687Cherokeechr4688Cherokeechr4689Cherokeechr469Cherokeechr4690Cherokeechr4691Cherokeechr4692Cherokeechr4693Cherokeechr4694Cherokeechr4695Cherokeechr4696Cherokeechr4697Cherokeechr4698Cherokeechr4699Cherokeechr47Cherokeechr470Cherokeechr4700Cherokeechr4701Cherokeechr4702Cherokeechr4703Cherokeechr4704Cherokeechr4705Cherokeechr4706Cherokeechr4707Cherokeechr4708Cherokeechr4709Cherokeechr471Cherokeechr4710Cherokeechr4711Cherokeechr4712Cherokeechr4713Cherokeechr4714Cherokeechr4715Cherokeechr4716Cherokeechr4717Cherokeechr4718Cherokeechr4719Cherokeechr472Cherokeechr4720Cherokeechr4721Cherokeechr4722Cherokeechr4723Cherokeechr4724Cherokeechr4725Cherokeechr4726Cherokeechr4727Cherokeechr4728Cherokeechr4729Cherokeechr473Cherokeechr4730Cherokeechr4731Cherokeechr4732Cherokeechr4733Cherokeechr4734Cherokeechr4735Cherokeechr4736Cherokeechr4737Cherokeechr4738Cherokeechr4739Cherokeechr474Cherokeechr4740Cherokeechr4741Cherokeechr4742Cherokeechr4743Cherokeechr4744Cherokeechr4745Cherokeechr4746Cherokeechr4747Cherokeechr4748Cherokeechr4749Cherokeechr475Cherokeechr4750Cherokeechr4751Cherokeechr4752Cherokeechr4753Cherokeechr4754Cherokeechr4755Cherokeechr4756Cherokeechr4757Cherokeechr4758Cherokeechr4759Cherokeechr476Cherokeechr4760Cherokeechr4761Cherokeechr4762Cherokeechr4763Cherokeechr4764Cherokeechr4765Cherokeechr4766Cherokeechr4767Cherokeechr4768Cherokeechr4769Cherokeechr477Cherokeechr4770Cherokeechr4771Cherokeechr4772Cherokeechr4773Cherokeechr4774Cherokeechr4775Cherokeechr4776Cherokeechr4777Cherokeechr4778Cherokeechr4779Cherokeechr478Cherokeechr4780Cherokeechr4781Cherokeechr4782Cherokeechr4783Cherokeechr4784Cherokeechr4785Cherokeechr4786Cherokeechr4787Cherokeechr4788Cherokeechr4789Cherokeechr479Cherokeechr4790Cherokeechr4791Cherokeechr4792Cherokeechr4793Cherokeechr4794Cherokeechr4795Cherokeechr4796Cherokeechr4797Cherokeechr4798Cherokeechr4799Cherokeechr48Cherokeechr480Cherokeechr4800Cherokeechr4801Cherokeechr4802Cherokeechr4803Cherokeechr4804Cherokeechr4805Cherokeechr4806Cherokeechr4807Cherokeechr4808Cherokeechr4809Cherokeechr481Cherokeechr4810Cherokeechr4811Cherokeechr4812Cherokeechr4813Cherokeechr4814Cherokeechr4815Cherokeechr4816Cherokeechr4817Cherokeechr4818Cherokeechr4819Cherokeechr482Cherokeechr4820Cherokeechr4821Cherokeechr4822Cherokeechr4823Cherokeechr4824Cherokeechr4825Cherokeechr4826Cherokeechr4827Cherokeechr4828Cherokeechr4829Cherokeechr483Cherokeechr4830Cherokeechr4831Cherokeechr4832Cherokeechr4833Cherokeechr4834Cherokeechr4835Cherokeechr4836Cherokeechr4837Cherokeechr4838Cherokeechr4839Cherokeechr484Cherokeechr4840Cherokeechr4841Cherokeechr4842Cherokeechr4843Cherokeechr4844Cherokeechr4845Cherokeechr4846Cherokeechr4847Cherokeechr4848Cherokeechr4849Cherokeechr485Cherokeechr4850Cherokeechr4851Cherokeechr4852Cherokeechr4853Cherokeechr4854Cherokeechr4855Cherokeechr4856Cherokeechr4857Cherokeechr4858Cherokeechr4859Cherokeechr486Cherokeechr4860Cherokeechr4861Cherokeechr4862Cherokeechr4863Cherokeechr4864Cherokeechr4865Cherokeechr4866Cherokeechr4867Cherokeechr4868Cherokeechr4869Cherokeechr487Cherokeechr4870Cherokeechr4871Cherokeechr4872Cherokeechr4873Cherokeechr4874Cherokeechr4875Cherokeechr4876Cherokeechr4877Cherokeechr4878Cherokeechr4879Cherokeechr488Cherokeechr4880Cherokeechr4881Cherokeechr4882Cherokeechr4883Cherokeechr4884Cherokeechr4885Cherokeechr4886Cherokeechr4887Cherokeechr4888Cherokeechr4889Cherokeechr489Cherokeechr4890Cherokeechr4891Cherokeechr4892Cherokeechr4893Cherokeechr4894Cherokeechr4895Cherokeechr4896Cherokeechr4897Cherokeechr4898Cherokeechr4899Cherokeechr49Cherokeechr490Cherokeechr4900Cherokeechr4901Cherokeechr4902Cherokeechr4903Cherokeechr4904Cherokeechr4905Cherokeechr4906Cherokeechr4907Cherokeechr4908Cherokeechr4909Cherokeechr491Cherokeechr4910Cherokeechr4911Cherokeechr4912Cherokeechr4913Cherokeechr4914Cherokeechr4915Cherokeechr4916Cherokeechr4917Cherokeechr4918Cherokeechr4919Cherokeechr492Cherokeechr4920Cherokeechr4921Cherokeechr4922Cherokeechr4923Cherokeechr4924Cherokeechr4925Cherokeechr4926Cherokeechr4927Cherokeechr4928Cherokeechr4929Cherokeechr493Cherokeechr4930Cherokeechr4931Cherokeechr4932Cherokeechr4933Cherokeechr4934Cherokeechr4935Cherokeechr4936Cherokeechr4937Cherokeechr4938Cherokeechr4939Cherokeechr494Cherokeechr4940Cherokeechr4941Cherokeechr4942Cherokeechr4943Cherokeechr4944Cherokeechr4945Cherokeechr4946Cherokeechr4947Cherokeechr4948Cherokeechr4949Cherokeechr495Cherokeechr4950Cherokeechr4951Cherokeechr4952Cherokeechr4953Cherokeechr4954Cherokeechr4955Cherokeechr4956Cherokeechr4957Cherokeechr4958Cherokeechr4959Cherokeechr496Cherokeechr4960Cherokeechr4961Cherokeechr4962Cherokeechr4963Cherokeechr4964Cherokeechr4965Cherokeechr4966Cherokeechr4967Cherokeechr4968Cherokeechr4969Cherokeechr497Cherokeechr4970Cherokeechr4971Cherokeechr4972Cherokeechr4973Cherokeechr4974Cherokeechr4975Cherokeechr4976Cherokeechr4977Cherokeechr4978Cherokeechr4979Cherokeechr498Cherokeechr4980Cherokeechr4981Cherokeechr4982Cherokeechr4983Cherokeechr4984Cherokeechr4985Cherokeechr4986Cherokeechr4987Cherokeechr4988Cherokeechr4989Cherokeechr499Cherokeechr4990Cherokeechr4991Cherokeechr4992Cherokeechr4993Cherokeechr4994Cherokeechr4995Cherokeechr4996Cherokeechr4997Cherokeechr4998Cherokeechr4999Cherokeechr5Cherokeechr50Cherokeechr500Cherokeechr5000Cherokeechr5001Cherokeechr5002Cherokeechr5003Cherokeechr5004Cherokeechr5005Cherokeechr5006Cherokeechr5007Cherokeechr5008Cherokeechr5009Cherokeechr501Cherokeechr5010Cherokeechr5011Cherokeechr5012Cherokeechr5013Cherokeechr5014Cherokeechr5015Cherokeechr5016Cherokeechr5017Cherokeechr5018Cherokeechr5019Cherokeechr502Cherokeechr5020Cherokeechr5021Cherokeechr5022Cherokeechr5023Cherokeechr5024Cherokeechr5025Cherokeechr5026Cherokeechr5027Cherokeechr5028Cherokeechr5029Cherokeechr503Cherokeechr5030Cherokeechr5031Cherokeechr5032Cherokeechr5033Cherokeechr5034Cherokeechr5035Cherokeechr5036Cherokeechr5037Cherokeechr5038Cherokeechr5039Cherokeechr504Cherokeechr5040Cherokeechr5041Cherokeechr5042Cherokeechr5043Cherokeechr5044Cherokeechr5045Cherokeechr5046Cherokeechr5047Cherokeechr5048Cherokeechr5049Cherokeechr505Cherokeechr5050Cherokeechr5051Cherokeechr5052Cherokeechr5053Cherokeechr5054Cherokeechr5055Cherokeechr5056Cherokeechr5057Cherokeechr5058Cherokeechr5059Cherokeechr506Cherokeechr5060Cherokeechr5061Cherokeechr5062Cherokeechr5063Cherokeechr5064Cherokeechr5065Cherokeechr5066Cherokeechr5067Cherokeechr5068Cherokeechr5069Cherokeechr507Cherokeechr5070Cherokeechr5071Cherokeechr5072Cherokeechr5073Cherokeechr5074Cherokeechr5075Cherokeechr5076Cherokeechr5077Cherokeechr5078Cherokeechr5079Cherokeechr508Cherokeechr5080Cherokeechr5081Cherokeechr5082Cherokeechr5083Cherokeechr5084Cherokeechr5085Cherokeechr5086Cherokeechr5087Cherokeechr5088Cherokeechr5089Cherokeechr509Cherokeechr5090Cherokeechr5091Cherokeechr5092Cherokeechr5093Cherokeechr5094Cherokeechr5095Cherokeechr5096Cherokeechr5097Cherokeechr5098Cherokeechr5099Cherokeechr51Cherokeechr510Cherokeechr5100Cherokeechr5101Cherokeechr5102Cherokeechr5103Cherokeechr5104Cherokeechr5105Cherokeechr5106Cherokeechr5107Cherokeechr5108Cherokeechr5109Cherokeechr511Cherokeechr5110Cherokeechr5111Cherokeechr5112Cherokeechr5113Cherokeechr5114Cherokeechr5115Cherokeechr5116Cherokeechr5117Cherokeechr5118Cherokeechr5119Cherokeechr512Cherokeechr5120Cherokeechr5121Cherokeechr5122Cherokeechr5123Cherokeechr5124Cherokeechr5125Cherokeechr5126Cherokeechr5127Cherokeechr5128Cherokeechr5129Cherokeechr513Cherokeechr5130Cherokeechr5131Cherokeechr5132Cherokeechr5133Cherokeechr5134Cherokeechr5135Cherokeechr5136Cherokeechr5137Cherokeechr5138Cherokeechr5139Cherokeechr514Cherokeechr5140Cherokeechr5141Cherokeechr5142Cherokeechr5143Cherokeechr5144Cherokeechr5145Cherokeechr5146Cherokeechr5147Cherokeechr5148Cherokeechr5149Cherokeechr515Cherokeechr5150Cherokeechr5151Cherokeechr5152Cherokeechr5153Cherokeechr5154Cherokeechr5155Cherokeechr5156Cherokeechr5157Cherokeechr5158Cherokeechr5159Cherokeechr516Cherokeechr5160Cherokeechr5161Cherokeechr5162Cherokeechr5163Cherokeechr5164Cherokeechr5165Cherokeechr5166Cherokeechr5167Cherokeechr5168Cherokeechr5169Cherokeechr517Cherokeechr5170Cherokeechr5171Cherokeechr5172Cherokeechr5173Cherokeechr5174Cherokeechr5175Cherokeechr5176Cherokeechr5177Cherokeechr5178Cherokeechr5179Cherokeechr518Cherokeechr5180Cherokeechr5181Cherokeechr5182Cherokeechr5183Cherokeechr5184Cherokeechr5185Cherokeechr5186Cherokeechr5187Cherokeechr5188Cherokeechr5189Cherokeechr519Cherokeechr5190Cherokeechr5191Cherokeechr5192Cherokeechr5193Cherokeechr5194Cherokeechr5195Cherokeechr5196Cherokeechr5197Cherokeechr5198Cherokeechr5199Cherokeechr52Cherokeechr520Cherokeechr5200Cherokeechr5201Cherokeechr5202Cherokeechr5203Cherokeechr5204Cherokeechr5205Cherokeechr5206Cherokeechr5207Cherokeechr5208Cherokeechr5209Cherokeechr521Cherokeechr5210Cherokeechr5211Cherokeechr5212Cherokeechr5213Cherokeechr5214Cherokeechr5215Cherokeechr5216Cherokeechr5217Cherokeechr5218Cherokeechr5219Cherokeechr522Cherokeechr5220Cherokeechr5221Cherokeechr5222Cherokeechr5223Cherokeechr5224Cherokeechr5225Cherokeechr5226Cherokeechr5227Cherokeechr5228Cherokeechr5229Cherokeechr523Cherokeechr5230Cherokeechr5231Cherokeechr5232Cherokeechr5233Cherokeechr5234Cherokeechr5235Cherokeechr5236Cherokeechr5237Cherokeechr5238Cherokeechr5239Cherokeechr524Cherokeechr5240Cherokeechr5241Cherokeechr5242Cherokeechr5243Cherokeechr5244Cherokeechr5245Cherokeechr5246Cherokeechr5247Cherokeechr5248Cherokeechr5249Cherokeechr525Cherokeechr5250Cherokeechr5251Cherokeechr5252Cherokeechr5253Cherokeechr5254Cherokeechr5255Cherokeechr5256Cherokeechr5257Cherokeechr5258Cherokeechr5259Cherokeechr526Cherokeechr5260Cherokeechr5261Cherokeechr5262Cherokeechr5263Cherokeechr5264Cherokeechr5265Cherokeechr5266Cherokeechr5267Cherokeechr5268Cherokeechr5269Cherokeechr527Cherokeechr5270Cherokeechr5271Cherokeechr5272Cherokeechr5273Cherokeechr5274Cherokeechr5275Cherokeechr5276Cherokeechr5277Cherokeechr5278Cherokeechr5279Cherokeechr528Cherokeechr5280Cherokeechr5281Cherokeechr5282Cherokeechr5283Cherokeechr5284Cherokeechr5285Cherokeechr5286Cherokeechr5287Cherokeechr5288Cherokeechr5289Cherokeechr529Cherokeechr5290Cherokeechr5291Cherokeechr5292Cherokeechr5293Cherokeechr5294Cherokeechr5295Cherokeechr5296Cherokeechr5297Cherokeechr5298Cherokeechr5299Cherokeechr53Cherokeechr530Cherokeechr5300Cherokeechr5301Cherokeechr5302Cherokeechr5303Cherokeechr5304Cherokeechr5305Cherokeechr5306Cherokeechr5307Cherokeechr5308Cherokeechr5309Cherokeechr531Cherokeechr5310Cherokeechr5311Cherokeechr5312Cherokeechr5313Cherokeechr5314Cherokeechr5315Cherokeechr5316Cherokeechr5317Cherokeechr5318Cherokeechr5319Cherokeechr532Cherokeechr5320Cherokeechr5321Cherokeechr5322Cherokeechr5323Cherokeechr5324Cherokeechr5325Cherokeechr5326Cherokeechr5327Cherokeechr5328Cherokeechr5329Cherokeechr533Cherokeechr5330Cherokeechr5331Cherokeechr5332Cherokeechr5333Cherokeechr5334Cherokeechr5335Cherokeechr5336Cherokeechr5337Cherokeechr5338Cherokeechr5339Cherokeechr534Cherokeechr5340Cherokeechr5341Cherokeechr5342Cherokeechr5343Cherokeechr5344Cherokeechr5345Cherokeechr5346Cherokeechr5347Cherokeechr5348Cherokeechr5349Cherokeechr535Cherokeechr5350Cherokeechr5351Cherokeechr5352Cherokeechr5353Cherokeechr5354Cherokeechr5355Cherokeechr5356Cherokeechr5357Cherokeechr5358Cherokeechr5359Cherokeechr536Cherokeechr5360Cherokeechr5361Cherokeechr5362Cherokeechr5363Cherokeechr5364Cherokeechr5365Cherokeechr5366Cherokeechr5367Cherokeechr5368Cherokeechr5369Cherokeechr537Cherokeechr5370Cherokeechr5371Cherokeechr5372Cherokeechr5373Cherokeechr5374Cherokeechr5375Cherokeechr5376Cherokeechr5377Cherokeechr5378Cherokeechr5379Cherokeechr538Cherokeechr5380Cherokeechr5381Cherokeechr5382Cherokeechr5383Cherokeechr5384Cherokeechr5385Cherokeechr5386Cherokeechr5387Cherokeechr5388Cherokeechr5389Cherokeechr539Cherokeechr5390Cherokeechr5391Cherokeechr5392Cherokeechr5393Cherokeechr5394Cherokeechr5395Cherokeechr5396Cherokeechr5397Cherokeechr5398Cherokeechr5399Cherokeechr54Cherokeechr540Cherokeechr5400Cherokeechr5401Cherokeechr5402Cherokeechr5403Cherokeechr5404Cherokeechr5405Cherokeechr5406Cherokeechr5407Cherokeechr5408Cherokeechr5409Cherokeechr541Cherokeechr5410Cherokeechr5411Cherokeechr5412Cherokeechr5413Cherokeechr5414Cherokeechr5415Cherokeechr5416Cherokeechr5417Cherokeechr5418Cherokeechr5419Cherokeechr542Cherokeechr5420Cherokeechr5421Cherokeechr5422Cherokeechr5423Cherokeechr5424Cherokeechr5425Cherokeechr5426Cherokeechr5427Cherokeechr5428Cherokeechr5429Cherokeechr543Cherokeechr5430Cherokeechr5431Cherokeechr5432Cherokeechr5433Cherokeechr5434Cherokeechr5435Cherokeechr5436Cherokeechr5437Cherokeechr5438Cherokeechr5439Cherokeechr544Cherokeechr5440Cherokeechr5441Cherokeechr5442Cherokeechr5443Cherokeechr5444Cherokeechr5445Cherokeechr5446Cherokeechr5447Cherokeechr5448Cherokeechr5449Cherokeechr545Cherokeechr5450Cherokeechr5451Cherokeechr5452Cherokeechr5453Cherokeechr5454Cherokeechr5455Cherokeechr5456Cherokeechr5457Cherokeechr5458Cherokeechr5459Cherokeechr546Cherokeechr5460Cherokeechr5461Cherokeechr5462Cherokeechr5463Cherokeechr5464Cherokeechr5465Cherokeechr5466Cherokeechr5467Cherokeechr5468Cherokeechr5469Cherokeechr547Cherokeechr5470Cherokeechr5471Cherokeechr5472Cherokeechr5473Cherokeechr5474Cherokeechr5475Cherokeechr5476Cherokeechr5477Cherokeechr5478Cherokeechr5479Cherokeechr548Cherokeechr5480Cherokeechr5481Cherokeechr5482Cherokeechr5483Cherokeechr5484Cherokeechr5485Cherokeechr5486Cherokeechr5487Cherokeechr5488Cherokeechr5489Cherokeechr549Cherokeechr5490Cherokeechr5491Cherokeechr5492Cherokeechr5493Cherokeechr5494Cherokeechr5495Cherokeechr5496Cherokeechr5497Cherokeechr5498Cherokeechr5499Cherokeechr55Cherokeechr550Cherokeechr5500Cherokeechr5501Cherokeechr5502Cherokeechr5503Cherokeechr5504Cherokeechr5505Cherokeechr5506Cherokeechr5507Cherokeechr5508Cherokeechr5509Cherokeechr551Cherokeechr5510Cherokeechr5511Cherokeechr5512Cherokeechr5513Cherokeechr5514Cherokeechr5515Cherokeechr5516Cherokeechr5517Cherokeechr5518Cherokeechr5519Cherokeechr552Cherokeechr5520Cherokeechr5521Cherokeechr5522Cherokeechr5523Cherokeechr5524Cherokeechr5525Cherokeechr5526Cherokeechr5527Cherokeechr5528Cherokeechr5529Cherokeechr553Cherokeechr5530Cherokeechr5531Cherokeechr5532Cherokeechr5533Cherokeechr5534Cherokeechr5535Cherokeechr5536Cherokeechr5537Cherokeechr5538Cherokeechr5539Cherokeechr554Cherokeechr5540Cherokeechr5541Cherokeechr5542Cherokeechr5543Cherokeechr5544Cherokeechr5545Cherokeechr5546Cherokeechr5547Cherokeechr5548Cherokeechr5549Cherokeechr555Cherokeechr5550Cherokeechr5551Cherokeechr5552Cherokeechr5553Cherokeechr5554Cherokeechr5555Cherokeechr5556Cherokeechr5557Cherokeechr5558Cherokeechr5559Cherokeechr556Cherokeechr5560Cherokeechr5561Cherokeechr5562Cherokeechr5563Cherokeechr5564Cherokeechr5565Cherokeechr5566Cherokeechr5567Cherokeechr5568Cherokeechr5569Cherokeechr557Cherokeechr5570Cherokeechr5571Cherokeechr5572Cherokeechr5573Cherokeechr5574Cherokeechr5575Cherokeechr5576Cherokeechr5577Cherokeechr5578Cherokeechr5579Cherokeechr558Cherokeechr5580Cherokeechr5581Cherokeechr5582Cherokeechr5583Cherokeechr5584Cherokeechr5585Cherokeechr5586Cherokeechr5587Cherokeechr5588Cherokeechr5589Cherokeechr559Cherokeechr5590Cherokeechr5591Cherokeechr5592Cherokeechr5593Cherokeechr5594Cherokeechr5595Cherokeechr5596Cherokeechr5597Cherokeechr5598Cherokeechr5599Cherokeechr56Cherokeechr560Cherokeechr5600Cherokeechr5601Cherokeechr5602Cherokeechr5603Cherokeechr5604Cherokeechr5605Cherokeechr5606Cherokeechr5607Cherokeechr5608Cherokeechr5609Cherokeechr561Cherokeechr5610Cherokeechr5611Cherokeechr5612Cherokeechr5613Cherokeechr5614Cherokeechr5615Cherokeechr5616Cherokeechr5617Cherokeechr5618Cherokeechr5619Cherokeechr562Cherokeechr5620Cherokeechr5621Cherokeechr5622Cherokeechr5623Cherokeechr5624Cherokeechr5625Cherokeechr5626Cherokeechr5627Cherokeechr5628Cherokeechr5629Cherokeechr563Cherokeechr5630Cherokeechr5631Cherokeechr5632Cherokeechr5633Cherokeechr5634Cherokeechr5635Cherokeechr5636Cherokeechr5637Cherokeechr5638Cherokeechr5639Cherokeechr564Cherokeechr5640Cherokeechr5641Cherokeechr5642Cherokeechr5643Cherokeechr5644Cherokeechr5645Cherokeechr5646Cherokeechr5647Cherokeechr5648Cherokeechr5649Cherokeechr565Cherokeechr5650Cherokeechr5651Cherokeechr5652Cherokeechr5653Cherokeechr5654Cherokeechr5655Cherokeechr5656Cherokeechr5657Cherokeechr5658Cherokeechr5659Cherokeechr566Cherokeechr5660Cherokeechr5661Cherokeechr5662Cherokeechr5663Cherokeechr5664Cherokeechr5665Cherokeechr5666Cherokeechr5667Cherokeechr5668Cherokeechr5669Cherokeechr567Cherokeechr5670Cherokeechr5671Cherokeechr5672Cherokeechr5673Cherokeechr5674Cherokeechr5675Cherokeechr5676Cherokeechr5677Cherokeechr5678Cherokeechr5679Cherokeechr568Cherokeechr5680Cherokeechr5681Cherokeechr5682Cherokeechr5683Cherokeechr5684Cherokeechr5685Cherokeechr5686Cherokeechr5687Cherokeechr5688Cherokeechr5689Cherokeechr569Cherokeechr5690Cherokeechr5691Cherokeechr5692Cherokeechr5693Cherokeechr5694Cherokeechr5695Cherokeechr5696Cherokeechr5697Cherokeechr5698Cherokeechr5699Cherokeechr57Cherokeechr570Cherokeechr5700Cherokeechr5701Cherokeechr5702Cherokeechr5703Cherokeechr5704Cherokeechr5705Cherokeechr5706Cherokeechr5707Cherokeechr5708Cherokeechr5709Cherokeechr571Cherokeechr5710Cherokeechr5711Cherokeechr5712Cherokeechr5713Cherokeechr5714Cherokeechr5715Cherokeechr5716Cherokeechr5717Cherokeechr5718Cherokeechr5719Cherokeechr572Cherokeechr5720Cherokeechr5721Cherokeechr5722Cherokeechr5723Cherokeechr5724Cherokeechr5725Cherokeechr5726Cherokeechr5727Cherokeechr5728Cherokeechr5729Cherokeechr573Cherokeechr5730Cherokeechr5731Cherokeechr5732Cherokeechr5733Cherokeechr5734Cherokeechr5735Cherokeechr5736Cherokeechr5737Cherokeechr5738Cherokeechr5739Cherokeechr574Cherokeechr5740Cherokeechr5741Cherokeechr5742Cherokeechr5743Cherokeechr5744Cherokeechr5745Cherokeechr5746Cherokeechr5747Cherokeechr5748Cherokeechr5749Cherokeechr575Cherokeechr5750Cherokeechr5751Cherokeechr5752Cherokeechr5753Cherokeechr5754Cherokeechr5755Cherokeechr5756Cherokeechr5757Cherokeechr5758Cherokeechr5759Cherokeechr576Cherokeechr5760Cherokeechr5761Cherokeechr5762Cherokeechr5763Cherokeechr5764Cherokeechr5765Cherokeechr5766Cherokeechr5767Cherokeechr5768Cherokeechr5769Cherokeechr577Cherokeechr5770Cherokeechr5771Cherokeechr5772Cherokeechr5773Cherokeechr5774Cherokeechr5775Cherokeechr5776Cherokeechr5777Cherokeechr5778Cherokeechr5779Cherokeechr578Cherokeechr5780Cherokeechr5781Cherokeechr5782Cherokeechr5783Cherokeechr5784Cherokeechr5785Cherokeechr5786Cherokeechr5787Cherokeechr5788Cherokeechr5789Cherokeechr579Cherokeechr5790Cherokeechr5791Cherokeechr5792Cherokeechr5793Cherokeechr5794Cherokeechr5795Cherokeechr5796Cherokeechr5797Cherokeechr5798Cherokeechr5799Cherokeechr58Cherokeechr580Cherokeechr5800Cherokeechr5801Cherokeechr5802Cherokeechr5803Cherokeechr5804Cherokeechr5805Cherokeechr5806Cherokeechr5807Cherokeechr5808Cherokeechr5809Cherokeechr581Cherokeechr5810Cherokeechr5811Cherokeechr5812Cherokeechr5813Cherokeechr5814Cherokeechr5815Cherokeechr5816Cherokeechr5817Cherokeechr5818Cherokeechr5819Cherokeechr582Cherokeechr5820Cherokeechr5821Cherokeechr5822Cherokeechr5823Cherokeechr5824Cherokeechr5825Cherokeechr5826Cherokeechr5827Cherokeechr5828Cherokeechr5829Cherokeechr583Cherokeechr5830Cherokeechr5831Cherokeechr5832Cherokeechr5833Cherokeechr5834Cherokeechr5835Cherokeechr5836Cherokeechr5837Cherokeechr5838Cherokeechr5839Cherokeechr584Cherokeechr5840Cherokeechr5841Cherokeechr5842Cherokeechr5843Cherokeechr5844Cherokeechr5845Cherokeechr5846Cherokeechr5847Cherokeechr5848Cherokeechr5849Cherokeechr585Cherokeechr5850Cherokeechr5851Cherokeechr5852Cherokeechr5853Cherokeechr5854Cherokeechr5855Cherokeechr5856Cherokeechr5857Cherokeechr5858Cherokeechr5859Cherokeechr586Cherokeechr5860Cherokeechr5861Cherokeechr5862Cherokeechr5863Cherokeechr5864Cherokeechr5865Cherokeechr5866Cherokeechr5867Cherokeechr5868Cherokeechr5869Cherokeechr587Cherokeechr5870Cherokeechr5871Cherokeechr5872Cherokeechr5873Cherokeechr5874Cherokeechr5875Cherokeechr5876Cherokeechr5877Cherokeechr5878Cherokeechr5879Cherokeechr588Cherokeechr5880Cherokeechr5881Cherokeechr5882Cherokeechr5883Cherokeechr5884Cherokeechr5885Cherokeechr5886Cherokeechr5887Cherokeechr5888Cherokeechr5889Cherokeechr589Cherokeechr5890Cherokeechr5891Cherokeechr5892Cherokeechr5893Cherokeechr5894Cherokeechr5895Cherokeechr5896Cherokeechr5897Cherokeechr5898Cherokeechr5899Cherokeechr59Cherokeechr590Cherokeechr5900Cherokeechr5901Cherokeechr5902Cherokeechr5903Cherokeechr5904Cherokeechr5905Cherokeechr5906Cherokeechr5907Cherokeechr5908Cherokeechr5909Cherokeechr591Cherokeechr5910Cherokeechr5911Cherokeechr5912Cherokeechr5913Cherokeechr5914Cherokeechr5915Cherokeechr5916Cherokeechr5917Cherokeechr5918Cherokeechr5919Cherokeechr592Cherokeechr5920Cherokeechr5921Cherokeechr5922Cherokeechr5923Cherokeechr5924Cherokeechr5925Cherokeechr5926Cherokeechr5927Cherokeechr5928Cherokeechr5929Cherokeechr593Cherokeechr5930Cherokeechr5931Cherokeechr5932Cherokeechr5933Cherokeechr5934Cherokeechr5935Cherokeechr5936Cherokeechr5937Cherokeechr5938Cherokeechr5939Cherokeechr594Cherokeechr5940Cherokeechr5941Cherokeechr5942Cherokeechr5943Cherokeechr5944Cherokeechr5945Cherokeechr5946Cherokeechr5947Cherokeechr5948Cherokeechr5949Cherokeechr595Cherokeechr5950Cherokeechr5951Cherokeechr5952Cherokeechr5953Cherokeechr5954Cherokeechr5955Cherokeechr5956Cherokeechr5957Cherokeechr5958Cherokeechr5959Cherokeechr596Cherokeechr5960Cherokeechr5961Cherokeechr5962Cherokeechr5963Cherokeechr5964Cherokeechr5965Cherokeechr5966Cherokeechr5967Cherokeechr5968Cherokeechr5969Cherokeechr597Cherokeechr5970Cherokeechr5971Cherokeechr5972Cherokeechr5973Cherokeechr5974Cherokeechr5975Cherokeechr5976Cherokeechr5977Cherokeechr5978Cherokeechr5979Cherokeechr598Cherokeechr5980Cherokeechr5981Cherokeechr5982Cherokeechr5983Cherokeechr5984Cherokeechr5985Cherokeechr5986Cherokeechr5987Cherokeechr5988Cherokeechr5989Cherokeechr599Cherokeechr5990Cherokeechr5991Cherokeechr5992Cherokeechr5993Cherokeechr5994Cherokeechr5995Cherokeechr5996Cherokeechr5997Cherokeechr5998Cherokeechr5999Cherokeechr6Cherokeechr60Cherokeechr600Cherokeechr6000Cherokeechr6001Cherokeechr6002Cherokeechr6003Cherokeechr6004Cherokeechr6005Cherokeechr6006Cherokeechr6007Cherokeechr6008Cherokeechr6009Cherokeechr601Cherokeechr6010Cherokeechr6011Cherokeechr6012Cherokeechr6013Cherokeechr6014Cherokeechr6015Cherokeechr6016Cherokeechr6017Cherokeechr6018Cherokeechr6019Cherokeechr602Cherokeechr6020Cherokeechr6021Cherokeechr6022Cherokeechr6023Cherokeechr6024Cherokeechr6025Cherokeechr6026Cherokeechr6027Cherokeechr6028Cherokeechr6029Cherokeechr603Cherokeechr6030Cherokeechr6031Cherokeechr6032Cherokeechr6033Cherokeechr6034Cherokeechr6035Cherokeechr6036Cherokeechr6037Cherokeechr6038Cherokeechr6039Cherokeechr604Cherokeechr6040Cherokeechr6041Cherokeechr6042Cherokeechr6043Cherokeechr6044Cherokeechr6045Cherokeechr6046Cherokeechr6047Cherokeechr6048Cherokeechr6049Cherokeechr605Cherokeechr6050Cherokeechr6051Cherokeechr6052Cherokeechr6053Cherokeechr6054Cherokeechr6055Cherokeechr6056Cherokeechr6057Cherokeechr6058Cherokeechr6059Cherokeechr606Cherokeechr6060Cherokeechr6061Cherokeechr6062Cherokeechr6063Cherokeechr6064Cherokeechr6065Cherokeechr6066Cherokeechr6067Cherokeechr6068Cherokeechr6069Cherokeechr607Cherokeechr6070Cherokeechr6071Cherokeechr6072Cherokeechr6073Cherokeechr6074Cherokeechr6075Cherokeechr6076Cherokeechr6077Cherokeechr6078Cherokeechr6079Cherokeechr608Cherokeechr6080Cherokeechr6081Cherokeechr6082Cherokeechr6083Cherokeechr6084Cherokeechr6085Cherokeechr6086Cherokeechr6087Cherokeechr6088Cherokeechr6089Cherokeechr609Cherokeechr6090Cherokeechr6091Cherokeechr6092Cherokeechr6093Cherokeechr6094Cherokeechr6095Cherokeechr6096Cherokeechr6097Cherokeechr6098Cherokeechr6099Cherokeechr61Cherokeechr610Cherokeechr6100Cherokeechr6101Cherokeechr6102Cherokeechr6103Cherokeechr6104Cherokeechr6105Cherokeechr6106Cherokeechr6107Cherokeechr6108Cherokeechr6109Cherokeechr611Cherokeechr6110Cherokeechr6111Cherokeechr6112Cherokeechr6113Cherokeechr6114Cherokeechr6115Cherokeechr6116Cherokeechr6117Cherokeechr6118Cherokeechr6119Cherokeechr612Cherokeechr6120Cherokeechr6121Cherokeechr6122Cherokeechr6123Cherokeechr6124Cherokeechr6125Cherokeechr6126Cherokeechr6127Cherokeechr6128Cherokeechr6129Cherokeechr613Cherokeechr6130Cherokeechr6131Cherokeechr6132Cherokeechr6133Cherokeechr6134Cherokeechr6135Cherokeechr6136Cherokeechr6137Cherokeechr6138Cherokeechr6139Cherokeechr614Cherokeechr6140Cherokeechr6141Cherokeechr6142Cherokeechr6143Cherokeechr6144Cherokeechr6145Cherokeechr6146Cherokeechr6147Cherokeechr6148Cherokeechr6149Cherokeechr615Cherokeechr6150Cherokeechr6151Cherokeechr6152Cherokeechr6153Cherokeechr6154Cherokeechr6155Cherokeechr6156Cherokeechr6157Cherokeechr6158Cherokeechr6159Cherokeechr616Cherokeechr6160Cherokeechr6161Cherokeechr6162Cherokeechr6163Cherokeechr6164Cherokeechr6165Cherokeechr6166Cherokeechr6167Cherokeechr6168Cherokeechr6169Cherokeechr617Cherokeechr6170Cherokeechr6171Cherokeechr6172Cherokeechr6173Cherokeechr6174Cherokeechr6175Cherokeechr6176Cherokeechr6177Cherokeechr6178Cherokeechr6179Cherokeechr618Cherokeechr6180Cherokeechr6181Cherokeechr6182Cherokeechr6183Cherokeechr6184Cherokeechr6185Cherokeechr6186Cherokeechr6187Cherokeechr6188Cherokeechr6189Cherokeechr619Cherokeechr6190Cherokeechr6191Cherokeechr6192Cherokeechr6193Cherokeechr6194Cherokeechr6195Cherokeechr6196Cherokeechr6197Cherokeechr6198Cherokeechr6199Cherokeechr62Cherokeechr620Cherokeechr6200Cherokeechr6201Cherokeechr6202Cherokeechr6203Cherokeechr6204Cherokeechr6205Cherokeechr6206Cherokeechr6207Cherokeechr6208Cherokeechr6209Cherokeechr621Cherokeechr6210Cherokeechr6211Cherokeechr6212Cherokeechr6213Cherokeechr6214Cherokeechr6215Cherokeechr6216Cherokeechr6217Cherokeechr6218Cherokeechr6219Cherokeechr622Cherokeechr6220Cherokeechr6221Cherokeechr6222Cherokeechr6223Cherokeechr6224Cherokeechr6225Cherokeechr6226Cherokeechr6227Cherokeechr6228Cherokeechr6229Cherokeechr623Cherokeechr6230Cherokeechr6231Cherokeechr6232Cherokeechr6233Cherokeechr6234Cherokeechr6235Cherokeechr6236Cherokeechr6237Cherokeechr6238Cherokeechr6239Cherokeechr624Cherokeechr6240Cherokeechr6241Cherokeechr6242Cherokeechr6243Cherokeechr6244Cherokeechr6245Cherokeechr6246Cherokeechr6247Cherokeechr6248Cherokeechr6249Cherokeechr625Cherokeechr6250Cherokeechr6251Cherokeechr6252Cherokeechr6253Cherokeechr6254Cherokeechr6255Cherokeechr6256Cherokeechr6257Cherokeechr6258Cherokeechr6259Cherokeechr626Cherokeechr6260Cherokeechr6261Cherokeechr6262Cherokeechr6263Cherokeechr6264Cherokeechr6265Cherokeechr6266Cherokeechr6267Cherokeechr6268Cherokeechr6269Cherokeechr627Cherokeechr6270Cherokeechr6271Cherokeechr6272Cherokeechr6273Cherokeechr6274Cherokeechr6275Cherokeechr6276Cherokeechr6277Cherokeechr6278Cherokeechr6279Cherokeechr628Cherokeechr6280Cherokeechr6281Cherokeechr6282Cherokeechr6283Cherokeechr6284Cherokeechr6285Cherokeechr6286Cherokeechr6287Cherokeechr6288Cherokeechr6289Cherokeechr629Cherokeechr6290Cherokeechr6291Cherokeechr6292Cherokeechr6293Cherokeechr6294Cherokeechr6295Cherokeechr6296Cherokeechr6297Cherokeechr6298Cherokeechr6299Cherokeechr63Cherokeechr630Cherokeechr6300Cherokeechr6301Cherokeechr6302Cherokeechr6303Cherokeechr6304Cherokeechr6305Cherokeechr6306Cherokeechr6307Cherokeechr6308Cherokeechr6309Cherokeechr631Cherokeechr6310Cherokeechr6311Cherokeechr6312Cherokeechr6313Cherokeechr6314Cherokeechr6315Cherokeechr6316Cherokeechr6317Cherokeechr6318Cherokeechr6319Cherokeechr632Cherokeechr6320Cherokeechr6321Cherokeechr6322Cherokeechr6323Cherokeechr6324Cherokeechr6325Cherokeechr6326Cherokeechr6327Cherokeechr6328Cherokeechr6329Cherokeechr633Cherokeechr6330Cherokeechr6331Cherokeechr6332Cherokeechr6333Cherokeechr6334Cherokeechr6335Cherokeechr6336Cherokeechr6337Cherokeechr6338Cherokeechr6339Cherokeechr634Cherokeechr6340Cherokeechr6341Cherokeechr6342Cherokeechr6343Cherokeechr6344Cherokeechr6345Cherokeechr6346Cherokeechr6347Cherokeechr6348Cherokeechr6349Cherokeechr635Cherokeechr6350Cherokeechr6351Cherokeechr6352Cherokeechr6353Cherokeechr6354Cherokeechr6355Cherokeechr6356Cherokeechr6357Cherokeechr6358Cherokeechr6359Cherokeechr636Cherokeechr6360Cherokeechr6361Cherokeechr6362Cherokeechr6363Cherokeechr6364Cherokeechr6365Cherokeechr6366Cherokeechr6367Cherokeechr6368Cherokeechr6369Cherokeechr637Cherokeechr6370Cherokeechr6371Cherokeechr6372Cherokeechr6373Cherokeechr6374Cherokeechr6375Cherokeechr6376Cherokeechr6377Cherokeechr6378Cherokeechr6379Cherokeechr638Cherokeechr6380Cherokeechr6381Cherokeechr6382Cherokeechr6383Cherokeechr6384Cherokeechr6385Cherokeechr6386Cherokeechr6387Cherokeechr6388Cherokeechr6389Cherokeechr639Cherokeechr6390Cherokeechr6391Cherokeechr6392Cherokeechr6393Cherokeechr6394Cherokeechr6395Cherokeechr6396Cherokeechr6397Cherokeechr6398Cherokeechr6399Cherokeechr64Cherokeechr640Cherokeechr6400Cherokeechr6401Cherokeechr6402Cherokeechr6403Cherokeechr6404Cherokeechr6405Cherokeechr6406Cherokeechr6407Cherokeechr6408Cherokeechr6409Cherokeechr641Cherokeechr6410Cherokeechr6411Cherokeechr6412Cherokeechr6413Cherokeechr6414Cherokeechr6415Cherokeechr6416Cherokeechr6417Cherokeechr6418Cherokeechr6419Cherokeechr642Cherokeechr6420Cherokeechr6421Cherokeechr6422Cherokeechr6423Cherokeechr6424Cherokeechr6425Cherokeechr6426Cherokeechr6427Cherokeechr6428Cherokeechr6429Cherokeechr643Cherokeechr6430Cherokeechr6431Cherokeechr6432Cherokeechr6433Cherokeechr6434Cherokeechr6435Cherokeechr6436Cherokeechr6437Cherokeechr6438Cherokeechr6439Cherokeechr644Cherokeechr6440Cherokeechr6441Cherokeechr6442Cherokeechr6443Cherokeechr6444Cherokeechr6445Cherokeechr6446Cherokeechr6447Cherokeechr6448Cherokeechr6449Cherokeechr645Cherokeechr6450Cherokeechr6451Cherokeechr6452Cherokeechr6453Cherokeechr6454Cherokeechr6455Cherokeechr6456Cherokeechr6457Cherokeechr6458Cherokeechr6459Cherokeechr646Cherokeechr6460Cherokeechr6461Cherokeechr6462Cherokeechr6463Cherokeechr6464Cherokeechr6465Cherokeechr6466Cherokeechr6467Cherokeechr6468Cherokeechr6469Cherokeechr647Cherokeechr6470Cherokeechr6471Cherokeechr6472Cherokeechr6473Cherokeechr6474Cherokeechr6475Cherokeechr6476Cherokeechr6477Cherokeechr6478Cherokeechr6479Cherokeechr648Cherokeechr6480Cherokeechr6481Cherokeechr6482Cherokeechr6483Cherokeechr6484Cherokeechr6485Cherokeechr6486Cherokeechr6487Cherokeechr6488Cherokeechr6489Cherokeechr649Cherokeechr6490Cherokeechr6491Cherokeechr6492Cherokeechr6493Cherokeechr6494Cherokeechr6495Cherokeechr6496Cherokeechr6497Cherokeechr6498Cherokeechr6499Cherokeechr65Cherokeechr650Cherokeechr6500Cherokeechr6501Cherokeechr6502Cherokeechr6503Cherokeechr6504Cherokeechr6505Cherokeechr6506Cherokeechr6507Cherokeechr6508Cherokeechr6509Cherokeechr651Cherokeechr6510Cherokeechr6511Cherokeechr6512Cherokeechr6513Cherokeechr6514Cherokeechr6515Cherokeechr6516Cherokeechr6517Cherokeechr6518Cherokeechr6519Cherokeechr652Cherokeechr6520Cherokeechr6521Cherokeechr6522Cherokeechr6523Cherokeechr6524Cherokeechr6525Cherokeechr6526Cherokeechr6527Cherokeechr6528Cherokeechr6529Cherokeechr653Cherokeechr6530Cherokeechr6531Cherokeechr6532Cherokeechr6533Cherokeechr6534Cherokeechr6535Cherokeechr6536Cherokeechr6537Cherokeechr6538Cherokeechr6539Cherokeechr654Cherokeechr6540Cherokeechr6541Cherokeechr6542Cherokeechr6543Cherokeechr6544Cherokeechr6545Cherokeechr6546Cherokeechr6547Cherokeechr6548Cherokeechr6549Cherokeechr655Cherokeechr6550Cherokeechr6551Cherokeechr6552Cherokeechr6553Cherokeechr6554Cherokeechr6555Cherokeechr6556Cherokeechr6557Cherokeechr6558Cherokeechr6559Cherokeechr656Cherokeechr6560Cherokeechr6561Cherokeechr6562Cherokeechr6563Cherokeechr6564Cherokeechr6565Cherokeechr6566Cherokeechr6567Cherokeechr6568Cherokeechr6569Cherokeechr657Cherokeechr6570Cherokeechr6571Cherokeechr6572Cherokeechr6573Cherokeechr6574Cherokeechr6575Cherokeechr6576Cherokeechr6577Cherokeechr6578Cherokeechr6579Cherokeechr658Cherokeechr6580Cherokeechr6581Cherokeechr6582Cherokeechr6583Cherokeechr6584Cherokeechr6585Cherokeechr6586Cherokeechr6587Cherokeechr6588Cherokeechr6589Cherokeechr659Cherokeechr6590Cherokeechr6591Cherokeechr6592Cherokeechr6593Cherokeechr6594Cherokeechr6595Cherokeechr6596Cherokeechr6597Cherokeechr6598Cherokeechr6599Cherokeechr66Cherokeechr660Cherokeechr6600Cherokeechr6601Cherokeechr6602Cherokeechr6603Cherokeechr6604Cherokeechr6605Cherokeechr6606Cherokeechr6607Cherokeechr6608Cherokeechr6609Cherokeechr661Cherokeechr6610Cherokeechr6611Cherokeechr6612Cherokeechr6613Cherokeechr6614Cherokeechr6615Cherokeechr6616Cherokeechr6617Cherokeechr6618Cherokeechr6619Cherokeechr662Cherokeechr6620Cherokeechr6621Cherokeechr6622Cherokeechr6623Cherokeechr6624Cherokeechr6625Cherokeechr6626Cherokeechr6627Cherokeechr6628Cherokeechr6629Cherokeechr663Cherokeechr6630Cherokeechr6631Cherokeechr6632Cherokeechr6633Cherokeechr6634Cherokeechr6635Cherokeechr6636Cherokeechr6637Cherokeechr6638Cherokeechr6639Cherokeechr664Cherokeechr6640Cherokeechr6641Cherokeechr6642Cherokeechr6643Cherokeechr6644Cherokeechr6645Cherokeechr6646Cherokeechr6647Cherokeechr6648Cherokeechr6649Cherokeechr665Cherokeechr6650Cherokeechr6651Cherokeechr6652Cherokeechr6653Cherokeechr6654Cherokeechr6655Cherokeechr6656Cherokeechr6657Cherokeechr6658Cherokeechr6659Cherokeechr666Cherokeechr6660Cherokeechr6661Cherokeechr6662Cherokeechr6663Cherokeechr6664Cherokeechr6665Cherokeechr6666Cherokeechr6667Cherokeechr6668Cherokeechr6669Cherokeechr667Cherokeechr6670Cherokeechr6671Cherokeechr6672Cherokeechr6673Cherokeechr6674Cherokeechr6675Cherokeechr6676Cherokeechr6677Cherokeechr6678Cherokeechr6679Cherokeechr668Cherokeechr6680Cherokeechr6681Cherokeechr6682Cherokeechr6683Cherokeechr6684Cherokeechr6685Cherokeechr6686Cherokeechr6687Cherokeechr6688Cherokeechr6689Cherokeechr669Cherokeechr6690Cherokeechr6691Cherokeechr6692Cherokeechr6693Cherokeechr6694Cherokeechr6695Cherokeechr6696Cherokeechr6697Cherokeechr6698Cherokeechr6699Cherokeechr67Cherokeechr670Cherokeechr6700Cherokeechr6701Cherokeechr6702Cherokeechr6703Cherokeechr6704Cherokeechr6705Cherokeechr6706Cherokeechr6707Cherokeechr6708Cherokeechr6709Cherokeechr671Cherokeechr6710Cherokeechr6711Cherokeechr6712Cherokeechr6713Cherokeechr6714Cherokeechr6715Cherokeechr6716Cherokeechr6717Cherokeechr6718Cherokeechr6719Cherokeechr672Cherokeechr6720Cherokeechr6721Cherokeechr6722Cherokeechr6723Cherokeechr6724Cherokeechr6725Cherokeechr6726Cherokeechr6727Cherokeechr6728Cherokeechr6729Cherokeechr673Cherokeechr6730Cherokeechr6731Cherokeechr6732Cherokeechr6733Cherokeechr6734Cherokeechr6735Cherokeechr6736Cherokeechr6737Cherokeechr6738Cherokeechr6739Cherokeechr674Cherokeechr6740Cherokeechr6741Cherokeechr6742Cherokeechr6743Cherokeechr6744Cherokeechr6745Cherokeechr6746Cherokeechr6747Cherokeechr6748Cherokeechr6749Cherokeechr675Cherokeechr6750Cherokeechr6751Cherokeechr6752Cherokeechr6753Cherokeechr6754Cherokeechr6755Cherokeechr6756Cherokeechr6757Cherokeechr6758Cherokeechr6759Cherokeechr676Cherokeechr6760Cherokeechr6761Cherokeechr6762Cherokeechr6763Cherokeechr6764Cherokeechr6765Cherokeechr6766Cherokeechr6767Cherokeechr6768Cherokeechr6769Cherokeechr677Cherokeechr6770Cherokeechr6771Cherokeechr6772Cherokeechr6773Cherokeechr6774Cherokeechr6775Cherokeechr6776Cherokeechr6777Cherokeechr6778Cherokeechr6779Cherokeechr678Cherokeechr6780Cherokeechr6781Cherokeechr6782Cherokeechr6783Cherokeechr6784Cherokeechr6785Cherokeechr6786Cherokeechr6787Cherokeechr6788Cherokeechr6789Cherokeechr679Cherokeechr6790Cherokeechr6791Cherokeechr6792Cherokeechr6793Cherokeechr6794Cherokeechr6795Cherokeechr6796Cherokeechr6797Cherokeechr6798Cherokeechr6799Cherokeechr68Cherokeechr680Cherokeechr6800Cherokeechr6801Cherokeechr6802Cherokeechr6803Cherokeechr6804Cherokeechr6805Cherokeechr6806Cherokeechr6807Cherokeechr6808Cherokeechr6809Cherokeechr681Cherokeechr6810Cherokeechr6811Cherokeechr6812Cherokeechr6813Cherokeechr6814Cherokeechr6815Cherokeechr6816Cherokeechr6817Cherokeechr6818Cherokeechr6819Cherokeechr682Cherokeechr6820Cherokeechr6821Cherokeechr6822Cherokeechr6823Cherokeechr6824Cherokeechr6825Cherokeechr6826Cherokeechr6827Cherokeechr6828Cherokeechr6829Cherokeechr683Cherokeechr6830Cherokeechr6831Cherokeechr6832Cherokeechr6833Cherokeechr6834Cherokeechr6835Cherokeechr6836Cherokeechr6837Cherokeechr6838Cherokeechr6839Cherokeechr684Cherokeechr6840Cherokeechr6841Cherokeechr6842Cherokeechr6843Cherokeechr6844Cherokeechr6845Cherokeechr6846Cherokeechr6847Cherokeechr6848Cherokeechr6849Cherokeechr685Cherokeechr6850Cherokeechr6851Cherokeechr6852Cherokeechr6853Cherokeechr6854Cherokeechr6855Cherokeechr6856Cherokeechr6857Cherokeechr6858Cherokeechr6859Cherokeechr686Cherokeechr6860Cherokeechr6861Cherokeechr6862Cherokeechr6863Cherokeechr6864Cherokeechr6865Cherokeechr6866Cherokeechr6867Cherokeechr6868Cherokeechr6869Cherokeechr687Cherokeechr6870Cherokeechr6871Cherokeechr6872Cherokeechr6873Cherokeechr6874Cherokeechr6875Cherokeechr6876Cherokeechr6877Cherokeechr6878Cherokeechr6879Cherokeechr688Cherokeechr6880Cherokeechr6881Cherokeechr6882Cherokeechr6883Cherokeechr6884Cherokeechr6885Cherokeechr6886Cherokeechr6887Cherokeechr6888Cherokeechr6889Cherokeechr689Cherokeechr6890Cherokeechr6891Cherokeechr6892Cherokeechr6893Cherokeechr6894Cherokeechr6895Cherokeechr6896Cherokeechr6897Cherokeechr6898Cherokeechr6899Cherokeechr69Cherokeechr690Cherokeechr6900Cherokeechr6901Cherokeechr6902Cherokeechr6903Cherokeechr6904Cherokeechr6905Cherokeechr6906Cherokeechr6907Cherokeechr6908Cherokeechr6909Cherokeechr691Cherokeechr6910Cherokeechr6911Cherokeechr6912Cherokeechr6913Cherokeechr6914Cherokeechr6915Cherokeechr6916Cherokeechr6917Cherokeechr6918Cherokeechr6919Cherokeechr692Cherokeechr6920Cherokeechr6921Cherokeechr6922Cherokeechr6923Cherokeechr6924Cherokeechr6925Cherokeechr6926Cherokeechr6927Cherokeechr6928Cherokeechr6929Cherokeechr693Cherokeechr6930Cherokeechr6931Cherokeechr6932Cherokeechr6933Cherokeechr6934Cherokeechr6935Cherokeechr6936Cherokeechr6937Cherokeechr6938Cherokeechr6939Cherokeechr694Cherokeechr6940Cherokeechr6941Cherokeechr6942Cherokeechr6943Cherokeechr6944Cherokeechr6945Cherokeechr6946Cherokeechr6947Cherokeechr6948Cherokeechr6949Cherokeechr695Cherokeechr6950Cherokeechr6951Cherokeechr6952Cherokeechr6953Cherokeechr6954Cherokeechr6955Cherokeechr6956Cherokeechr6957Cherokeechr6958Cherokeechr6959Cherokeechr696Cherokeechr6960Cherokeechr6961Cherokeechr6962Cherokeechr6963Cherokeechr6964Cherokeechr6965Cherokeechr6966Cherokeechr6967Cherokeechr6968Cherokeechr6969Cherokeechr697Cherokeechr6970Cherokeechr6971Cherokeechr6972Cherokeechr6973Cherokeechr6974Cherokeechr6975Cherokeechr6976Cherokeechr6977Cherokeechr6978Cherokeechr6979Cherokeechr698Cherokeechr6980Cherokeechr6981Cherokeechr6982Cherokeechr6983Cherokeechr6984Cherokeechr6985Cherokeechr6986Cherokeechr6987Cherokeechr6988Cherokeechr6989Cherokeechr699Cherokeechr6990Cherokeechr6991Cherokeechr6992Cherokeechr6993Cherokeechr6994Cherokeechr6995Cherokeechr6996Cherokeechr6997Cherokeechr6998Cherokeechr6999Cherokeechr7Cherokeechr70Cherokeechr700Cherokeechr7000Cherokeechr7001Cherokeechr7002Cherokeechr7003Cherokeechr7004Cherokeechr7005Cherokeechr7006Cherokeechr7007Cherokeechr7008Cherokeechr7009Cherokeechr701Cherokeechr7010Cherokeechr7011Cherokeechr7012Cherokeechr7013Cherokeechr7014Cherokeechr7015Cherokeechr7016Cherokeechr7017Cherokeechr7018Cherokeechr7019Cherokeechr702Cherokeechr7020Cherokeechr7021Cherokeechr7022Cherokeechr7023Cherokeechr7024Cherokeechr7025Cherokeechr7026Cherokeechr7027Cherokeechr7028Cherokeechr7029Cherokeechr703Cherokeechr7030Cherokeechr7031Cherokeechr7032Cherokeechr7033Cherokeechr7034Cherokeechr7035Cherokeechr7036Cherokeechr7037Cherokeechr7038Cherokeechr7039Cherokeechr704Cherokeechr7040Cherokeechr7041Cherokeechr7042Cherokeechr7043Cherokeechr7044Cherokeechr7045Cherokeechr7046Cherokeechr7047Cherokeechr7048Cherokeechr7049Cherokeechr705Cherokeechr7050Cherokeechr7051Cherokeechr7052Cherokeechr7053Cherokeechr7054Cherokeechr7055Cherokeechr7056Cherokeechr7057Cherokeechr7058Cherokeechr7059Cherokeechr706Cherokeechr7060Cherokeechr7061Cherokeechr7062Cherokeechr7063Cherokeechr7064Cherokeechr7065Cherokeechr7066Cherokeechr7067Cherokeechr7068Cherokeechr7069Cherokeechr707Cherokeechr7070Cherokeechr7071Cherokeechr7072Cherokeechr7073Cherokeechr7074Cherokeechr7075Cherokeechr7076Cherokeechr7077Cherokeechr7078Cherokeechr7079Cherokeechr708Cherokeechr7080Cherokeechr7081Cherokeechr7082Cherokeechr7083Cherokeechr7084Cherokeechr7085Cherokeechr7086Cherokeechr7087Cherokeechr7088Cherokeechr7089Cherokeechr709Cherokeechr7090Cherokeechr7091Cherokeechr7092Cherokeechr7093Cherokeechr7094Cherokeechr7095Cherokeechr7096Cherokeechr7097Cherokeechr7098Cherokeechr7099Cherokeechr71Cherokeechr710Cherokeechr7100Cherokeechr7101Cherokeechr7102Cherokeechr7103Cherokeechr7104Cherokeechr7105Cherokeechr7106Cherokeechr7107Cherokeechr7108Cherokeechr7109Cherokeechr711Cherokeechr7110Cherokeechr7111Cherokeechr7112Cherokeechr7113Cherokeechr7114Cherokeechr7115Cherokeechr7116Cherokeechr7117Cherokeechr7118Cherokeechr7119Cherokeechr712Cherokeechr7120Cherokeechr7121Cherokeechr7122Cherokeechr7123Cherokeechr7124Cherokeechr7125Cherokeechr7126Cherokeechr7127Cherokeechr7128Cherokeechr7129Cherokeechr713Cherokeechr7130Cherokeechr7131Cherokeechr7132Cherokeechr7133Cherokeechr7134Cherokeechr7135Cherokeechr7136Cherokeechr7137Cherokeechr7138Cherokeechr7139Cherokeechr714Cherokeechr7140Cherokeechr7141Cherokeechr7142Cherokeechr7143Cherokeechr7144Cherokeechr7145Cherokeechr7146Cherokeechr7147Cherokeechr7148Cherokeechr7149Cherokeechr715Cherokeechr7150Cherokeechr7151Cherokeechr7152Cherokeechr7153Cherokeechr7154Cherokeechr7155Cherokeechr7156Cherokeechr7157Cherokeechr7158Cherokeechr7159Cherokeechr716Cherokeechr7160Cherokeechr7161Cherokeechr7162Cherokeechr7163Cherokeechr7164Cherokeechr7165Cherokeechr7166Cherokeechr7167Cherokeechr7168Cherokeechr7169Cherokeechr717Cherokeechr7170Cherokeechr7171Cherokeechr7172Cherokeechr7173Cherokeechr7174Cherokeechr7175Cherokeechr7176Cherokeechr7177Cherokeechr7178Cherokeechr7179Cherokeechr718Cherokeechr7180Cherokeechr7181Cherokeechr7182Cherokeechr7183Cherokeechr7184Cherokeechr7185Cherokeechr7186Cherokeechr7187Cherokeechr7188Cherokeechr7189Cherokeechr719Cherokeechr7190Cherokeechr7191Cherokeechr7192Cherokeechr7193Cherokeechr7194Cherokeechr7195Cherokeechr7196Cherokeechr7197Cherokeechr7198Cherokeechr7199Cherokeechr72Cherokeechr720Cherokeechr7200Cherokeechr7201Cherokeechr7202Cherokeechr7203Cherokeechr7204Cherokeechr7205Cherokeechr7206Cherokeechr7207Cherokeechr7208Cherokeechr7209Cherokeechr721Cherokeechr7210Cherokeechr7211Cherokeechr7212Cherokeechr7213Cherokeechr7214Cherokeechr7215Cherokeechr7216Cherokeechr7217Cherokeechr7218Cherokeechr7219Cherokeechr722Cherokeechr7220Cherokeechr7221Cherokeechr7222Cherokeechr7223Cherokeechr7224Cherokeechr7225Cherokeechr7226Cherokeechr7227Cherokeechr7228Cherokeechr7229Cherokeechr723Cherokeechr7230Cherokeechr7231Cherokeechr7232Cherokeechr7233Cherokeechr7234Cherokeechr7235Cherokeechr7236Cherokeechr7237Cherokeechr7238Cherokeechr7239Cherokeechr724Cherokeechr7240Cherokeechr7241Cherokeechr7242Cherokeechr7243Cherokeechr7244Cherokeechr7245Cherokeechr7246Cherokeechr7247Cherokeechr7248Cherokeechr7249Cherokeechr725Cherokeechr7250Cherokeechr7251Cherokeechr7252Cherokeechr7253Cherokeechr7254Cherokeechr7255Cherokeechr7256Cherokeechr7257Cherokeechr7258Cherokeechr7259Cherokeechr726Cherokeechr7260Cherokeechr7261Cherokeechr7262Cherokeechr7263Cherokeechr7264Cherokeechr7265Cherokeechr7266Cherokeechr7267Cherokeechr7268Cherokeechr7269Cherokeechr727Cherokeechr7270Cherokeechr7271Cherokeechr7272Cherokeechr7273Cherokeechr7274Cherokeechr7275Cherokeechr7276Cherokeechr7277Cherokeechr7278Cherokeechr7279Cherokeechr728Cherokeechr7280Cherokeechr7281Cherokeechr7282Cherokeechr7283Cherokeechr7284Cherokeechr7285Cherokeechr7286Cherokeechr7287Cherokeechr7288Cherokeechr7289Cherokeechr729Cherokeechr7290Cherokeechr7291Cherokeechr7292Cherokeechr7293Cherokeechr7294Cherokeechr7295Cherokeechr7296Cherokeechr7297Cherokeechr7298Cherokeechr7299Cherokeechr73Cherokeechr730Cherokeechr7300Cherokeechr7301Cherokeechr7302Cherokeechr7303Cherokeechr7304Cherokeechr7305Cherokeechr7306Cherokeechr7307Cherokeechr7308Cherokeechr7309Cherokeechr731Cherokeechr7310Cherokeechr7311Cherokeechr7312Cherokeechr7313Cherokeechr7314Cherokeechr7315Cherokeechr7316Cherokeechr7317Cherokeechr7318Cherokeechr7319Cherokeechr732Cherokeechr7320Cherokeechr7321Cherokeechr7322Cherokeechr7323Cherokeechr7324Cherokeechr7325Cherokeechr7326Cherokeechr7327Cherokeechr7328Cherokeechr7329Cherokeechr733Cherokeechr7330Cherokeechr7331Cherokeechr7332Cherokeechr7333Cherokeechr7334Cherokeechr7335Cherokeechr7336Cherokeechr7337Cherokeechr7338Cherokeechr7339Cherokeechr734Cherokeechr7340Cherokeechr7341Cherokeechr7342Cherokeechr7343Cherokeechr7344Cherokeechr7345Cherokeechr7346Cherokeechr7347Cherokeechr7348Cherokeechr7349Cherokeechr735Cherokeechr7350Cherokeechr7351Cherokeechr7352Cherokeechr7353Cherokeechr7354Cherokeechr7355Cherokeechr7356Cherokeechr7357Cherokeechr7358Cherokeechr7359Cherokeechr736Cherokeechr7360Cherokeechr7361Cherokeechr7362Cherokeechr7363Cherokeechr7364Cherokeechr7365Cherokeechr7366Cherokeechr7367Cherokeechr7368Cherokeechr7369Cherokeechr737Cherokeechr7370Cherokeechr7371Cherokeechr7372Cherokeechr7373Cherokeechr7374Cherokeechr7375Cherokeechr7376Cherokeechr7377Cherokeechr7378Cherokeechr7379Cherokeechr738Cherokeechr7380Cherokeechr7381Cherokeechr7382Cherokeechr7383Cherokeechr7384Cherokeechr7385Cherokeechr7386Cherokeechr7387Cherokeechr7388Cherokeechr7389Cherokeechr739Cherokeechr7390Cherokeechr7391Cherokeechr7392Cherokeechr7393Cherokeechr7394Cherokeechr7395Cherokeechr7396Cherokeechr7397Cherokeechr7398Cherokeechr7399Cherokeechr74Cherokeechr740Cherokeechr7400Cherokeechr7401Cherokeechr7402Cherokeechr7403Cherokeechr7404Cherokeechr7405Cherokeechr7406Cherokeechr7407Cherokeechr7408Cherokeechr7409Cherokeechr741Cherokeechr7410Cherokeechr7411Cherokeechr7412Cherokeechr7413Cherokeechr7414Cherokeechr7415Cherokeechr7416Cherokeechr7417Cherokeechr7418Cherokeechr7419Cherokeechr742Cherokeechr7420Cherokeechr7421Cherokeechr7422Cherokeechr7423Cherokeechr7424Cherokeechr7425Cherokeechr7426Cherokeechr7427Cherokeechr7428Cherokeechr7429Cherokeechr743Cherokeechr7430Cherokeechr7431Cherokeechr7432Cherokeechr7433Cherokeechr7434Cherokeechr7435Cherokeechr7436Cherokeechr7437Cherokeechr7438Cherokeechr7439Cherokeechr744Cherokeechr7440Cherokeechr7441Cherokeechr7442Cherokeechr7443Cherokeechr7444Cherokeechr7445Cherokeechr7446Cherokeechr7447Cherokeechr7448Cherokeechr7449Cherokeechr745Cherokeechr7450Cherokeechr7451Cherokeechr7452Cherokeechr7453Cherokeechr7454Cherokeechr7455Cherokeechr7456Cherokeechr7457Cherokeechr7458Cherokeechr7459Cherokeechr746Cherokeechr7460Cherokeechr7461Cherokeechr7462Cherokeechr7463Cherokeechr7464Cherokeechr7465Cherokeechr7466Cherokeechr7467Cherokeechr7468Cherokeechr7469Cherokeechr747Cherokeechr7470Cherokeechr7471Cherokeechr7472Cherokeechr7473Cherokeechr7474Cherokeechr7475Cherokeechr7476Cherokeechr7477Cherokeechr7478Cherokeechr7479Cherokeechr748Cherokeechr7480Cherokeechr7481Cherokeechr7482Cherokeechr7483Cherokeechr7484Cherokeechr7485Cherokeechr7486Cherokeechr7487Cherokeechr7488Cherokeechr7489Cherokeechr749Cherokeechr7490Cherokeechr7491Cherokeechr7492Cherokeechr7493Cherokeechr7494Cherokeechr7495Cherokeechr7496Cherokeechr7497Cherokeechr7498Cherokeechr7499Cherokeechr75Cherokeechr750Cherokeechr7500Cherokeechr7501Cherokeechr7502Cherokeechr7503Cherokeechr7504Cherokeechr7505Cherokeechr7506Cherokeechr7507Cherokeechr7508Cherokeechr7509Cherokeechr751Cherokeechr7510Cherokeechr7511Cherokeechr7512Cherokeechr7513Cherokeechr7514Cherokeechr7515Cherokeechr7516Cherokeechr7517Cherokeechr7518Cherokeechr7519Cherokeechr752Cherokeechr7520Cherokeechr7521Cherokeechr7522Cherokeechr7523Cherokeechr7524Cherokeechr7525Cherokeechr7526Cherokeechr7527Cherokeechr7528Cherokeechr7529Cherokeechr753Cherokeechr7530Cherokeechr7531Cherokeechr7532Cherokeechr7533Cherokeechr7534Cherokeechr7535Cherokeechr7536Cherokeechr7537Cherokeechr7538Cherokeechr7539Cherokeechr754Cherokeechr7540Cherokeechr7541Cherokeechr7542Cherokeechr7543Cherokeechr7544Cherokeechr7545Cherokeechr7546Cherokeechr7547Cherokeechr7548Cherokeechr7549Cherokeechr755Cherokeechr7550Cherokeechr7551Cherokeechr7552Cherokeechr7553Cherokeechr7554Cherokeechr7555Cherokeechr7556Cherokeechr7557Cherokeechr7558Cherokeechr7559Cherokeechr756Cherokeechr7560Cherokeechr7561Cherokeechr7562Cherokeechr7563Cherokeechr7564Cherokeechr7565Cherokeechr7566Cherokeechr7567Cherokeechr7568Cherokeechr7569Cherokeechr757Cherokeechr7570Cherokeechr7571Cherokeechr7572Cherokeechr7573Cherokeechr7574Cherokeechr7575Cherokeechr7576Cherokeechr7577Cherokeechr7578Cherokeechr7579Cherokeechr758Cherokeechr7580Cherokeechr7581Cherokeechr7582Cherokeechr7583Cherokeechr7584Cherokeechr7585Cherokeechr7586Cherokeechr7587Cherokeechr7588Cherokeechr7589Cherokeechr759Cherokeechr7590Cherokeechr7591Cherokeechr7592Cherokeechr7593Cherokeechr7594Cherokeechr7595Cherokeechr7596Cherokeechr7597Cherokeechr7598Cherokeechr7599Cherokeechr76Cherokeechr760Cherokeechr7600Cherokeechr7601Cherokeechr7602Cherokeechr7603Cherokeechr7604Cherokeechr7605Cherokeechr7606Cherokeechr7607Cherokeechr7608Cherokeechr7609Cherokeechr761Cherokeechr7610Cherokeechr7611Cherokeechr7612Cherokeechr7613Cherokeechr7614Cherokeechr7615Cherokeechr7616Cherokeechr7617Cherokeechr7618Cherokeechr7619Cherokeechr762Cherokeechr7620Cherokeechr7621Cherokeechr7622Cherokeechr7623Cherokeechr7624Cherokeechr7625Cherokeechr7626Cherokeechr7627Cherokeechr7628Cherokeechr7629Cherokeechr763Cherokeechr7630Cherokeechr7631Cherokeechr7632Cherokeechr7633Cherokeechr7634Cherokeechr7635Cherokeechr7636Cherokeechr7637Cherokeechr7638Cherokeechr7639Cherokeechr764Cherokeechr7640Cherokeechr7641Cherokeechr7642Cherokeechr7643Cherokeechr7644Cherokeechr7645Cherokeechr7646Cherokeechr7647Cherokeechr7648Cherokeechr7649Cherokeechr765Cherokeechr7650Cherokeechr7651Cherokeechr7652Cherokeechr7653Cherokeechr7654Cherokeechr7655Cherokeechr7656Cherokeechr7657Cherokeechr7658Cherokeechr7659Cherokeechr766Cherokeechr7660Cherokeechr7661Cherokeechr7662Cherokeechr7663Cherokeechr7664Cherokeechr7665Cherokeechr7666Cherokeechr7667Cherokeechr7668Cherokeechr7669Cherokeechr767Cherokeechr7670Cherokeechr7671Cherokeechr7672Cherokeechr7673Cherokeechr7674Cherokeechr7675Cherokeechr7676Cherokeechr7677Cherokeechr7678Cherokeechr7679Cherokeechr768Cherokeechr7680Cherokeechr7681Cherokeechr7682Cherokeechr7683Cherokeechr7684Cherokeechr7685Cherokeechr7686Cherokeechr7687Cherokeechr7688Cherokeechr7689Cherokeechr769Cherokeechr7690Cherokeechr7691Cherokeechr7692Cherokeechr7693Cherokeechr7694Cherokeechr7695Cherokeechr7696Cherokeechr7697Cherokeechr7698Cherokeechr7699Cherokeechr77Cherokeechr770Cherokeechr7700Cherokeechr7701Cherokeechr7702Cherokeechr7703Cherokeechr7704Cherokeechr7705Cherokeechr7706Cherokeechr7707Cherokeechr7708Cherokeechr7709Cherokeechr771Cherokeechr7710Cherokeechr7711Cherokeechr7712Cherokeechr7713Cherokeechr7714Cherokeechr7715Cherokeechr7716Cherokeechr7717Cherokeechr7718Cherokeechr7719Cherokeechr772Cherokeechr7720Cherokeechr7721Cherokeechr7722Cherokeechr7723Cherokeechr7724Cherokeechr7725Cherokeechr7726Cherokeechr7727Cherokeechr7728Cherokeechr7729Cherokeechr773Cherokeechr7730Cherokeechr7731Cherokeechr7732Cherokeechr7733Cherokeechr7734Cherokeechr7735Cherokeechr7736Cherokeechr7737Cherokeechr7738Cherokeechr7739Cherokeechr774Cherokeechr7740Cherokeechr7741Cherokeechr7742Cherokeechr7743Cherokeechr7744Cherokeechr7745Cherokeechr7746Cherokeechr7747Cherokeechr7748Cherokeechr7749Cherokeechr775Cherokeechr7750Cherokeechr7751Cherokeechr7752Cherokeechr7753Cherokeechr7754Cherokeechr7755Cherokeechr7756Cherokeechr7757Cherokeechr7758Cherokeechr7759Cherokeechr776Cherokeechr7760Cherokeechr7761Cherokeechr7762Cherokeechr7763Cherokeechr7764Cherokeechr7765Cherokeechr7766Cherokeechr7767Cherokeechr7768Cherokeechr7769Cherokeechr777Cherokeechr7770Cherokeechr7771Cherokeechr7772Cherokeechr7773Cherokeechr7774Cherokeechr7775Cherokeechr7776Cherokeechr7777Cherokeechr7778Cherokeechr7779Cherokeechr778Cherokeechr7780Cherokeechr7781Cherokeechr7782Cherokeechr7783Cherokeechr7784Cherokeechr7785Cherokeechr7786Cherokeechr7787Cherokeechr7788Cherokeechr7789Cherokeechr779Cherokeechr7790Cherokeechr7791Cherokeechr7792Cherokeechr7793Cherokeechr7794Cherokeechr7795Cherokeechr7796Cherokeechr7797Cherokeechr7798Cherokeechr7799Cherokeechr78Cherokeechr780Cherokeechr7800Cherokeechr7801Cherokeechr7802Cherokeechr7803Cherokeechr7804Cherokeechr7805Cherokeechr7806Cherokeechr7807Cherokeechr7808Cherokeechr7809Cherokeechr781Cherokeechr7810Cherokeechr7811Cherokeechr7812Cherokeechr7813Cherokeechr7814Cherokeechr7815Cherokeechr7816Cherokeechr7817Cherokeechr7818Cherokeechr7819Cherokeechr782Cherokeechr7820Cherokeechr7821Cherokeechr7822Cherokeechr7823Cherokeechr7824Cherokeechr7825Cherokeechr7826Cherokeechr7827Cherokeechr7828Cherokeechr7829Cherokeechr783Cherokeechr7830Cherokeechr7831Cherokeechr7832Cherokeechr7833Cherokeechr7834Cherokeechr7835Cherokeechr7836Cherokeechr7837Cherokeechr7838Cherokeechr7839Cherokeechr784Cherokeechr7840Cherokeechr7841Cherokeechr7842Cherokeechr7843Cherokeechr7844Cherokeechr7845Cherokeechr7846Cherokeechr7847Cherokeechr7848Cherokeechr7849Cherokeechr785Cherokeechr7850Cherokeechr7851Cherokeechr7852Cherokeechr7853Cherokeechr7854Cherokeechr7855Cherokeechr7856Cherokeechr7857Cherokeechr7858Cherokeechr7859Cherokeechr786Cherokeechr7860Cherokeechr7861Cherokeechr7862Cherokeechr7863Cherokeechr7864Cherokeechr7865Cherokeechr7866Cherokeechr7867Cherokeechr7868Cherokeechr7869Cherokeechr787Cherokeechr7870Cherokeechr7871Cherokeechr7872Cherokeechr7873Cherokeechr7874Cherokeechr7875Cherokeechr7876Cherokeechr7877Cherokeechr7878Cherokeechr7879Cherokeechr788Cherokeechr7880Cherokeechr7881Cherokeechr7882Cherokeechr7883Cherokeechr7884Cherokeechr7885Cherokeechr7886Cherokeechr7887Cherokeechr7888Cherokeechr7889Cherokeechr789Cherokeechr7890Cherokeechr7891Cherokeechr7892Cherokeechr7893Cherokeechr7894Cherokeechr7895Cherokeechr7896Cherokeechr7897Cherokeechr7898Cherokeechr7899Cherokeechr79Cherokeechr790Cherokeechr7900Cherokeechr7901Cherokeechr7902Cherokeechr7903Cherokeechr7904Cherokeechr7905Cherokeechr7906Cherokeechr7907Cherokeechr7908Cherokeechr7909Cherokeechr791Cherokeechr7910Cherokeechr7911Cherokeechr7912Cherokeechr7913Cherokeechr7914Cherokeechr7915Cherokeechr7916Cherokeechr7917Cherokeechr7918Cherokeechr7919Cherokeechr792Cherokeechr7920Cherokeechr7921Cherokeechr7922Cherokeechr7923Cherokeechr7924Cherokeechr7925Cherokeechr7926Cherokeechr7927Cherokeechr7928Cherokeechr7929Cherokeechr793Cherokeechr7930Cherokeechr7931Cherokeechr7932Cherokeechr7933Cherokeechr7934Cherokeechr7935Cherokeechr7936Cherokeechr7937Cherokeechr7938Cherokeechr7939Cherokeechr794Cherokeechr7940Cherokeechr7941Cherokeechr7942Cherokeechr7943Cherokeechr7944Cherokeechr7945Cherokeechr7946Cherokeechr7947Cherokeechr7948Cherokeechr7949Cherokeechr795Cherokeechr7950Cherokeechr7951Cherokeechr7952Cherokeechr7953Cherokeechr7954Cherokeechr7955Cherokeechr7956Cherokeechr7957Cherokeechr7958Cherokeechr7959Cherokeechr796Cherokeechr7960Cherokeechr7961Cherokeechr7962Cherokeechr7963Cherokeechr7964Cherokeechr7965Cherokeechr7966Cherokeechr7967Cherokeechr7968Cherokeechr7969Cherokeechr797Cherokeechr7970Cherokeechr7971Cherokeechr7972Cherokeechr7973Cherokeechr7974Cherokeechr7975Cherokeechr7976Cherokeechr7977Cherokeechr7978Cherokeechr7979Cherokeechr798Cherokeechr7980Cherokeechr7981Cherokeechr7982Cherokeechr7983Cherokeechr7984Cherokeechr7985Cherokeechr7986Cherokeechr7987Cherokeechr7988Cherokeechr7989Cherokeechr799Cherokeechr7990Cherokeechr7991Cherokeechr7992Cherokeechr7993Cherokeechr7994Cherokeechr7995Cherokeechr7996Cherokeechr7997Cherokeechr7998Cherokeechr7999Cherokeechr8Cherokeechr80Cherokeechr800Cherokeechr8000Cherokeechr8001Cherokeechr8002Cherokeechr8003Cherokeechr8004Cherokeechr8005Cherokeechr8006Cherokeechr8007Cherokeechr8008Cherokeechr8009Cherokeechr801Cherokeechr8010Cherokeechr8011Cherokeechr8012Cherokeechr8013Cherokeechr8014Cherokeechr8015Cherokeechr8016Cherokeechr8017Cherokeechr8018Cherokeechr8019Cherokeechr802Cherokeechr8020Cherokeechr8021Cherokeechr8022Cherokeechr8023Cherokeechr8024Cherokeechr8025Cherokeechr8026Cherokeechr8027Cherokeechr8028Cherokeechr8029Cherokeechr803Cherokeechr8030Cherokeechr8031Cherokeechr8032Cherokeechr8033Cherokeechr8034Cherokeechr8035Cherokeechr8036Cherokeechr8037Cherokeechr8038Cherokeechr8039Cherokeechr804Cherokeechr8040Cherokeechr8041Cherokeechr8042Cherokeechr8043Cherokeechr8044Cherokeechr8045Cherokeechr8046Cherokeechr8047Cherokeechr8048Cherokeechr8049Cherokeechr805Cherokeechr8050Cherokeechr8051Cherokeechr8052Cherokeechr8053Cherokeechr8054Cherokeechr8055Cherokeechr8056Cherokeechr8057Cherokeechr8058Cherokeechr8059Cherokeechr806Cherokeechr8060Cherokeechr8061Cherokeechr8062Cherokeechr8063Cherokeechr8064Cherokeechr8065Cherokeechr8066Cherokeechr8067Cherokeechr8068Cherokeechr8069Cherokeechr807Cherokeechr8070Cherokeechr8071Cherokeechr8072Cherokeechr8073Cherokeechr8074Cherokeechr8075Cherokeechr8076Cherokeechr8077Cherokeechr8078Cherokeechr8079Cherokeechr808Cherokeechr8080Cherokeechr8081Cherokeechr8082Cherokeechr8083Cherokeechr8084Cherokeechr8085Cherokeechr8086Cherokeechr8087Cherokeechr8088Cherokeechr8089Cherokeechr809Cherokeechr8090Cherokeechr8091Cherokeechr8092Cherokeechr8093Cherokeechr8094Cherokeechr8095Cherokeechr8096Cherokeechr8097Cherokeechr8098Cherokeechr8099Cherokeechr81Cherokeechr810Cherokeechr8100Cherokeechr8101Cherokeechr8102Cherokeechr8103Cherokeechr8104Cherokeechr8105Cherokeechr8106Cherokeechr8107Cherokeechr8108Cherokeechr8109Cherokeechr811Cherokeechr8110Cherokeechr8111Cherokeechr8112Cherokeechr8113Cherokeechr8114Cherokeechr8115Cherokeechr8116Cherokeechr8117Cherokeechr8118Cherokeechr8119Cherokeechr812Cherokeechr8120Cherokeechr8121Cherokeechr8122Cherokeechr8123Cherokeechr8124Cherokeechr8125Cherokeechr8126Cherokeechr8127Cherokeechr8128Cherokeechr8129Cherokeechr813Cherokeechr8130Cherokeechr8131Cherokeechr8132Cherokeechr8133Cherokeechr8134Cherokeechr8135Cherokeechr8136Cherokeechr8137Cherokeechr8138Cherokeechr8139Cherokeechr814Cherokeechr8140Cherokeechr8141Cherokeechr8142Cherokeechr8143Cherokeechr8144Cherokeechr8145Cherokeechr8146Cherokeechr8147Cherokeechr8148Cherokeechr8149Cherokeechr815Cherokeechr8150Cherokeechr8151Cherokeechr8152Cherokeechr8153Cherokeechr8154Cherokeechr8155Cherokeechr8156Cherokeechr8157Cherokeechr8158Cherokeechr8159Cherokeechr816Cherokeechr8160Cherokeechr8161Cherokeechr8162Cherokeechr8163Cherokeechr8164Cherokeechr8165Cherokeechr8166Cherokeechr8167Cherokeechr8168Cherokeechr8169Cherokeechr817Cherokeechr8170Cherokeechr8171Cherokeechr8172Cherokeechr8173Cherokeechr8174Cherokeechr8175Cherokeechr8176Cherokeechr8177Cherokeechr8178Cherokeechr8179Cherokeechr818Cherokeechr8180Cherokeechr8181Cherokeechr8182Cherokeechr8183Cherokeechr8184Cherokeechr8185Cherokeechr8186Cherokeechr8187Cherokeechr8188Cherokeechr8189Cherokeechr819Cherokeechr8190Cherokeechr8191Cherokeechr82Cherokeechr820Cherokeechr821Cherokeechr822Cherokeechr823Cherokeechr824Cherokeechr825Cherokeechr826Cherokeechr827Cherokeechr828Cherokeechr829Cherokeechr83Cherokeechr830Cherokeechr831Cherokeechr832Cherokeechr833Cherokeechr834Cherokeechr835Cherokeechr836Cherokeechr837Cherokeechr838Cherokeechr839Cherokeechr84Cherokeechr840Cherokeechr841Cherokeechr842Cherokeechr843Cherokeechr844Cherokeechr845Cherokeechr846Cherokeechr847Cherokeechr848Cherokeechr849Cherokeechr85Cherokeechr850Cherokeechr851Cherokeechr852Cherokeechr853Cherokeechr854Cherokeechr855Cherokeechr856Cherokeechr857Cherokeechr858Cherokeechr859Cherokeechr86Cherokeechr860Cherokeechr861Cherokeechr862Cherokeechr863Cherokeechr864Cherokeechr865Cherokeechr866Cherokeechr867Cherokeechr868Cherokeechr869Cherokeechr87Cherokeechr870Cherokeechr871Cherokeechr872Cherokeechr873Cherokeechr874Cherokeechr875Cherokeechr876Cherokeechr877Cherokeechr878Cherokeechr879Cherokeechr88Cherokeechr880Cherokeechr881Cherokeechr882Cherokeechr883Cherokeechr884Cherokeechr885Cherokeechr886Cherokeechr887Cherokeechr888Cherokeechr889Cherokeechr89Cherokeechr890Cherokeechr891Cherokeechr892Cherokeechr893Cherokeechr894Cherokeechr895Cherokeechr896Cherokeechr897Cherokeechr898Cherokeechr899Cherokeechr9Cherokeechr90Cherokeechr900Cherokeechr901Cherokeechr902Cherokeechr903Cherokeechr904Cherokeechr905Cherokeechr906Cherokeechr907Cherokeechr908Cherokeechr909Cherokeechr91Cherokeechr910Cherokeechr911Cherokeechr912Cherokeechr913Cherokeechr914Cherokeechr915Cherokeechr916Cherokeechr917Cherokeechr918Cherokeechr919Cherokeechr92Cherokeechr920Cherokeechr921Cherokeechr922Cherokeechr923Cherokeechr924Cherokeechr925Cherokeechr926Cherokeechr927Cherokeechr928Cherokeechr929Cherokeechr93Cherokeechr930Cherokeechr931Cherokeechr932Cherokeechr933Cherokeechr934Cherokeechr935Cherokeechr936Cherokeechr937Cherokeechr938Cherokeechr939Cherokeechr94Cherokeechr940Cherokeechr941Cherokeechr942Cherokeechr943Cherokeechr944Cherokeechr945Cherokeechr946Cherokeechr947Cherokeechr948Cherokeechr949Cherokeechr95Cherokeechr950Cherokeechr951Cherokeechr952Cherokeechr953Cherokeechr954Cherokeechr955Cherokeechr956Cherokeechr957Cherokeechr958Cherokeechr959Cherokeechr96Cherokeechr960Cherokeechr961Cherokeechr962Cherokeechr963Cherokeechr964Cherokeechr965Cherokeechr966Cherokeechr967Cherokeechr968Cherokeechr969Cherokeechr97Cherokeechr970Cherokeechr971Cherokeechr972Cherokeechr973Cherokeechr974Cherokeechr975Cherokeechr976Cherokeechr977Cherokeechr978Cherokeechr979Cherokeechr98Cherokeechr980Cherokeechr981Cherokeechr982Cherokeechr983Cherokeechr984Cherokeechr985Cherokeechr986Cherokeechr987Cherokeechr988Cherokeechr989Cherokeechr99Cherokeechr990Cherokeechr991Cherokeechr992Cherokeechr993Cherokeechr994Cherokeechr995Cherokeechr996Cherokeechr997Cherokeechr998Cherokeechr999Cherokeeel0Greekel1Greekel10Greekel100Greekel1000Greekel1001Greekel1002Greekel1003Greekel1004Greekel1005Greekel1006Greekel1007Greekel1008Greekel1009Greekel101Greekel1010Greekel1011Greekel1012Greekel1013Greekel1014Greekel1015Greekel1016Greekel1017Greekel1018Greekel1019Greekel102Greekel1020Greekel1021Greekel1022Greekel1023Greekel1024Greekel1025Greekel1026Greekel1027Greekel1028Greekel1029Greekel103Greekel1030Greekel1031Greekel1032Greekel1033Greekel1034Greekel1035Greekel1036Greekel1037Greekel1038Greekel1039Greekel104Greekel1040Greekel1041Greekel1042Greekel1043Greekel1044Greekel1045Greekel1046Greekel1047Greekel1048Greekel1049Greekel105Greekel1050Greekel1051Greekel1052Greekel1053Greekel1054Greekel1055Greekel1056Greekel1057Greekel1058Greekel1059Greekel106Greekel1060Greekel1061Greekel1062Greekel1063Greekel1064Greekel1065Greekel1066Greekel1067Greekel1068Greekel1069Greekel107Greekel1070Greekel1071Greekel1072Greekel1073Greekel1074Greekel1075Greekel1076Greekel1077Greekel1078Greekel1079Greekel108Greekel1080Greekel1081Greekel1082Greekel1083Greekel1084Greekel1085Greekel1086Greekel1087Greekel1088Greekel1089Greekel109Greekel1090Greekel1091Greekel1092Greekel1093Greekel1094Greekel1095Greekel1096Greekel1097Greekel1098Greekel1099Greekel11Greekel110Greekel1100Greekel1101Greekel1102Greekel1103Greekel1104Greekel1105Greekel1106Greekel1107Greekel1108Greekel1109Greekel111Greekel1110Greekel1111Greekel1112Greekel1113Greekel1114Greekel1115Greekel1116Greekel1117Greekel1118Greekel1119Greekel112Greekel1120Greekel1121Greekel1122Greekel1123Greekel1124Greekel1125Greekel1126Greekel1127Greekel1128Greekel1129Greekel113Greekel1130Greekel1131Greekel1132Greekel1133Greekel1134Greekel1135Greekel1136Greekel1137Greekel1138Greekel1139Greekel114Greekel1140Greekel1141Greekel1142Greekel1143Greekel1144Greekel1145Greekel1146Greekel1147Greekel1148Greekel1149Greekel115Greekel1150Greekel1151Greekel1152Greekel1153Greekel1154Greekel1155Greekel1156Greekel1157Greekel1158Greekel1159Greekel116Greekel1160Greekel1161Greekel1162Greekel1163Greekel1164Greekel1165Greekel1166Greekel1167Greekel1168Greekel1169Greekel117Greekel1170Greekel1171Greekel1172Greekel1173Greekel1174Greekel1175Greekel1176Greekel1177Greekel1178Greekel1179Greekel118Greekel1180Greekel1181Greekel1182Greekel1183Greekel1184Greekel1185Greekel1186Greekel1187Greekel1188Greekel1189Greekel119Greekel1190Greekel1191Greekel1192Greekel1193Greekel1194Greekel1195Greekel1196Greekel1197Greekel1198Greekel1199Greekel12Greekel120Greekel1200Greekel1201Greekel1202Greekel1203Greekel1204Greekel1205Greekel1206Greekel1207Greekel1208Greekel1209Greekel121Greekel1210Greekel1211Greekel1212Greekel1213Greekel1214Greekel1215Greekel1216Greekel1217Greekel1218Greekel1219Greekel122Greekel1220Greekel1221Greekel1222Greekel1223Greekel1224Greekel1225Greekel1226Greekel1227Greekel1228Greekel1229Greekel123Greekel1230Greekel1231Greekel1232Greekel1233Greekel1234Greekel1235Greekel1236Greekel1237Greekel1238Greekel1239Greekel124Greekel1240Greekel1241Greekel1242Greekel1243Greekel1244Greekel1245Greekel1246Greekel1247Greekel1248Greekel1249Greekel125Greekel1250Greekel1251Greekel1252Greekel1253Greekel1254Greekel1255Greekel1256Greekel1257Greekel1258Greekel1259Greekel126Greekel1260Greekel1261Greekel1262Greekel1263Greekel1264Greekel1265Greekel1266Greekel1267Greekel1268Greekel1269Greekel127Greekel1270Greekel1271Greekel1272Greekel1273Greekel1274Greekel1275Greekel1276Greekel1277Greekel1278Greekel1279Greekel128Greekel1280Greekel1281Greekel1282Greekel1283Greekel1284Greekel1285Greekel1286Greekel1287Greekel1288Greekel1289Greekel129Greekel1290Greekel1291Greekel1292Greekel1293Greekel1294Greekel1295Greekel1296Greekel1297Greekel1298Greekel1299Greekel13Greekel130Greekel1300Greekel1301Greekel1302Greekel1303Greekel1304Greekel1305Greekel1306Greekel1307Greekel1308Greekel1309Greekel131Greekel1310Greekel1311Greekel1312Greekel1313Greekel1314Greekel1315Greekel1316Greekel1317Greekel1318Greekel1319Greekel132Greekel1320Greekel1321Greekel1322Greekel1323Greekel1324Greekel1325Greekel1326Greekel1327Greekel1328Greekel1329Greekel133Greekel1330Greekel1331Greekel1332Greekel1333Greekel1334Greekel1335Greekel1336Greekel1337Greekel1338Greekel1339Greekel134Greekel1340Greekel1341Greekel1342Greekel1343Greekel1344Greekel1345Greekel1346Greekel1347Greekel1348Greekel1349Greekel135Greekel1350Greekel1351Greekel1352Greekel1353Greekel1354Greekel1355Greekel1356Greekel1357Greekel1358Greekel1359Greekel136Greekel1360Greekel1361Greekel1362Greekel1363Greekel1364Greekel1365Greekel1366Greekel1367Greekel1368Greekel1369Greekel137Greekel1370Greekel1371Greekel1372Greekel1373Greekel1374Greekel1375Greekel1376Greekel1377Greekel1378Greekel1379Greekel138Greekel1380Greekel1381Greekel1382Greekel1383Greekel1384Greekel1385Greekel1386Greekel1387Greekel1388Greekel1389Greekel139Greekel1390Greekel1391Greekel1392Greekel1393Greekel1394Greekel1395Greekel1396Greekel1397Greekel1398Greekel1399Greekel14Greekel140Greekel1400Greekel1401Greekel1402Greekel1403Greekel1404Greekel1405Greekel1406Greekel1407Greekel1408Greekel1409Greekel141Greekel1410Greekel1411Greekel1412Greekel1413Greekel1414Greekel1415Greekel1416Greekel1417Greekel1418Greekel1419Greekel142Greekel1420Greekel1421Greekel1422Greekel1423Greekel1424Greekel1425Greekel1426Greekel1427Greekel1428Greekel1429Greekel143Greekel1430Greekel1431Greekel1432Greekel1433Greekel1434Greekel1435Greekel1436Greekel1437Greekel1438Greekel1439Greekel144Greekel1440Greekel1441Greekel1442Greekel1443Greekel1444Greekel1445Greekel1446Greekel1447Greekel1448Greekel1449Greekel145Greekel1450Greekel1451Greekel1452Greekel1453Greekel1454Greekel1455Greekel1456Greekel1457Greekel1458Greekel1459Greekel146Greekel1460Greekel1461Greekel1462Greekel1463Greekel1464Greekel1465Greekel1466Greekel1467Greekel1468Greekel1469Greekel147Greekel1470Greekel1471Greekel1472Greekel1473Greekel1474Greekel1475Greekel1476Greekel1477Greekel1478Greekel1479Greekel148Greekel1480Greekel1481Greekel1482Greekel1483Greekel1484Greekel1485Greekel1486Greekel1487Greekel1488Greekel1489Greekel149Greekel1490Greekel1491Greekel1492Greekel1493Greekel1494Greekel1495Greekel1496Greekel1497Greekel1498Greekel1499Greekel15Greekel150Greekel1500Greekel1501Greekel1502Greekel1503Greekel1504Greekel1505Greekel1506Greekel1507Greekel1508Greekel1509Greekel151Greekel1510Greekel1511Greekel1512Greekel1513Greekel1514Greekel1515Greekel1516Greekel1517Greekel1518Greekel1519Greekel152Greekel1520Greekel1521Greekel1522Greekel1523Greekel1524Greekel1525Greekel1526Greekel1527Greekel1528Greekel1529Greekel153Greekel1530Greekel1531Greekel1532Greekel1533Greekel1534Greekel1535Greekel1536Greekel1537Greekel1538Greekel1539Greekel154Greekel1540Greekel1541Greekel1542Greekel1543Greekel1544Greekel1545Greekel1546Greekel1547Greekel1548Greekel1549Greekel155Greekel1550Greekel1551Greekel1552Greekel1553Greekel1554Greekel1555Greekel1556Greekel1557Greekel1558Greekel1559Greekel156Greekel1560Greekel1561Greekel1562Greekel1563Greekel1564Greekel1565Greekel1566Greekel1567Greekel1568Greekel1569Greekel157Greekel1570Greekel1571Greekel1572Greekel1573Greekel1574Greekel1575Greekel1576Greekel1577Greekel1578Greekel1579Greekel158Greekel1580Greekel1581Greekel1582Greekel1583Greekel1584Greekel1585Greekel1586Greekel1587Greekel1588Greekel1589Greekel159Greekel1590Greekel1591Greekel1592Greekel1593Greekel1594Greekel1595Greekel1596Greekel1597Greekel1598Greekel1599Greekel16Greekel160Greekel1600Greekel1601Greekel1602Greekel1603Greekel1604Greekel1605Greekel1606Greekel1607Greekel1608Greekel1609Greekel161Greekel1610Greekel1611Greekel1612Greekel1613Greekel1614Greekel1615Greekel1616Greekel1617Greekel1618Greekel1619Greekel162Greekel1620Greekel1621Greekel1622Greekel1623Greekel1624Greekel1625Greekel1626Greekel1627Greekel1628Greekel1629Greekel163Greekel1630Greekel1631Greekel1632Greekel1633Greekel1634Greekel1635Greekel1636Greekel1637Greekel1638Greekel1639Greekel164Greekel1640Greekel1641Greekel1642Greekel1643Greekel1644Greekel1645Greekel1646Greekel1647Greekel1648Greekel1649Greekel165Greekel1650Greekel1651Greekel1652Greekel1653Greekel1654Greekel1655Greekel1656Greekel1657Greekel1658Greekel1659Greekel166Greekel1660Greekel1661Greekel1662Greekel1663Greekel1664Greekel1665Greekel1666Greekel1667Greekel1668Greekel1669Greekel167Greekel1670Greekel1671Greekel1672Greekel1673Greekel1674Greekel1675Greekel1676Greekel1677Greekel1678Greekel1679Greekel168Greekel1680Greekel1681Greekel1682Greekel1683Greekel1684Greekel1685Greekel1686Greekel1687Greekel1688Greekel1689Greekel169Greekel1690Greekel1691Greekel1692Greekel1693Greekel1694Greekel1695Greekel1696Greekel1697Greekel1698Greekel1699Greekel17Greekel170Greekel1700Greekel1701Greekel1702Greekel1703Greekel1704Greekel1705Greekel1706Greekel1707Greekel1708Greekel1709Greekel171Greekel1710Greekel1711Greekel1712Greekel1713Greekel1714Greekel1715Greekel1716Greekel1717Greekel1718Greekel1719Greekel172Greekel1720Greekel1721Greekel1722Greekel1723Greekel1724Greekel1725Greekel1726Greekel1727Greekel1728Greekel1729Greekel173Greekel1730Greekel1731Greekel1732Greekel1733Greekel1734Greekel1735Greekel1736Greekel1737Greekel1738Greekel1739Greekel174Greekel1740Greekel1741Greekel1742Greekel1743Greekel1744Greekel1745Greekel1746Greekel1747Greekel1748Greekel1749Greekel175Greekel1750Greekel1751Greekel1752Greekel1753Greekel1754Greekel1755Greekel1756Greekel1757Greekel1758Greekel1759Greekel176Greekel1760Greekel1761Greekel1762Greekel1763Greekel1764Greekel1765Greekel1766Greekel1767Greekel1768Greekel1769Greekel177Greekel1770Greekel1771Greekel1772Greekel1773Greekel1774Greekel1775Greekel1776Greekel1777Greekel1778Greekel1779Greekel178Greekel1780Greekel1781Greekel1782Greekel1783Greekel1784Greekel1785Greekel1786Greekel1787Greekel1788Greekel1789Greekel179Greekel1790Greekel1791Greekel1792Greekel1793Greekel1794Greekel1795Greekel1796Greekel1797Greekel1798Greekel1799Greekel18Greekel180Greekel1800Greekel1801Greekel1802Greekel1803Greekel1804Greekel1805Greekel1806Greekel1807Greekel1808Greekel1809Greekel181Greekel1810Greekel1811Greekel1812Greekel1813Greekel1814Greekel1815Greekel1816Greekel1817Greekel1818Greekel1819Greekel182Greekel1820Greekel1821Greekel1822Greekel1823Greekel1824Greekel1825Greekel1826Greekel1827Greekel1828Greekel1829Greekel183Greekel1830Greekel1831Greekel1832Greekel1833Greekel1834Greekel1835Greekel1836Greekel1837Greekel1838Greekel1839Greekel184Greekel1840Greekel1841Greekel1842Greekel1843Greekel1844Greekel1845Greekel1846Greekel1847Greekel1848Greekel1849Greekel185Greekel1850Greekel1851Greekel1852Greekel1853Greekel1854Greekel1855Greekel1856Greekel1857Greekel1858Greekel1859Greekel186Greekel1860Greekel1861Greekel1862Greekel1863Greekel1864Greekel1865Greekel1866Greekel1867Greekel1868Greekel1869Greekel187Greekel1870Greekel1871Greekel1872Greekel1873Greekel1874Greekel1875Greekel1876Greekel1877Greekel1878Greekel1879Greekel188Greekel1880Greekel1881Greekel1882Greekel1883Greekel1884Greekel1885Greekel1886Greekel1887Greekel1888Greekel1889Greekel189Greekel1890Greekel1891Greekel1892Greekel1893Greekel1894Greekel1895Greekel1896Greekel1897Greekel1898Greekel1899Greekel19Greekel190Greekel1900Greekel1901Greekel1902Greekel1903Greekel1904Greekel1905Greekel1906Greekel1907Greekel1908Greekel1909Greekel191Greekel1910Greekel1911Greekel1912Greekel1913Greekel1914Greekel1915Greekel1916Greekel1917Greekel1918Greekel1919Greekel192Greekel1920Greekel1921Greekel1922Greekel1923Greekel1924Greekel1925Greekel1926Greekel1927Greekel1928Greekel1929Greekel193Greekel1930Greekel1931Greekel1932Greekel1933Greekel1934Greekel1935Greekel1936Greekel1937Greekel1938Greekel1939Greekel194Greekel1940Greekel1941Greekel1942Greekel1943Greekel1944Greekel1945Greekel1946Greekel1947Greekel1948Greekel1949Greekel195Greekel1950Greekel1951Greekel1952Greekel1953Greekel1954Greekel1955Greekel1956Greekel1957Greekel1958Greekel1959Greekel196Greekel1960Greekel1961Greekel1962Greekel1963Greekel1964Greekel1965Greekel1966Greekel1967Greekel1968Greekel1969Greekel197Greekel1970Greekel1971Greekel1972Greekel1973Greekel1974Greekel1975Greekel1976Greekel1977Greekel1978Greekel1979Greekel198Greekel1980Greekel1981Greekel1982Greekel1983Greekel1984Greekel1985Greekel1986Greekel1987Greekel1988Greekel1989Greekel199Greekel1990Greekel1991Greekel1992Greekel1993Greekel1994Greekel1995Greekel1996Greekel1997Greekel1998Greekel1999Greekel2Greekel20Greekel200Greekel2000Greekel2001Greekel2002Greekel2003Greekel2004Greekel2005Greekel2006Greekel2007Greekel2008Greekel2009Greekel201Greekel2010Greekel2011Greekel2012Greekel2013Greekel2014Greekel2015Greekel2016Greekel2017Greekel2018Greekel2019Greekel202Greekel2020Greekel2021Greekel2022Greekel2023Greekel2024Greekel2025Greekel2026Greekel2027Greekel2028Greekel2029Greekel203Greekel2030Greekel2031Greekel2032Greekel2033Greekel2034Greekel2035Greekel2036Greekel2037Greekel2038Greekel2039Greekel204Greekel2040Greekel2041Greekel2042Greekel2043Greekel2044Greekel2045Greekel2046Greekel2047Greekel2048Greekel2049Greekel205Greekel2050Greekel2051Greekel2052Greekel2053Greekel2054Greekel2055Greekel2056Greekel2057Greekel2058Greekel2059Greekel206Greekel2060Greekel2061Greekel2062Greekel2063Greekel2064Greekel2065Greekel2066Greekel2067Greekel2068Greekel2069Greekel207Greekel2070Greekel2071Greekel2072Greekel2073Greekel2074Greekel2075Greekel2076Greekel2077Greekel2078Greekel2079Greekel208Greekel2080Greekel2081Greekel2082Greekel2083Greekel2084Greekel2085Greekel2086Greekel2087Greekel2088Greekel2089Greekel209Greekel2090Greekel2091Greekel2092Greekel2093Greekel2094Greekel2095Greekel2096Greekel2097Greekel2098Greekel2099Greekel21Greekel210Greekel2100Greekel2101Greekel2102Greekel2103Greekel2104Greekel2105Greekel2106Greekel2107Greekel2108Greekel2109Greekel211Greekel2110Greekel2111Greekel2112Greekel2113Greekel2114Greekel2115Greekel2116Greekel2117Greekel2118Greekel2119Greekel212Greekel2120Greekel2121Greekel2122Greekel2123Greekel2124Greekel2125Greekel2126Greekel2127Greekel2128Greekel2129Greekel213Greekel2130Greekel2131Greekel2132Greekel2133Greekel2134Greekel2135Greekel2136Greekel2137Greekel2138Greekel2139Greekel214Greekel2140Greekel2141Greekel2142Greekel2143Greekel2144Greekel2145Greekel2146Greekel2147Greekel2148Greekel2149Greekel215Greekel2150Greekel2151Greekel2152Greekel2153Greekel2154Greekel2155Greekel2156Greekel2157Greekel2158Greekel2159Greekel216Greekel2160Greekel2161Greekel2162Greekel2163Greekel2164Greekel2165Greekel2166Greekel2167Greekel2168Greekel2169Greekel217Greekel2170Greekel2171Greekel2172Greekel2173Greekel2174Greekel2175Greekel2176Greekel2177Greekel2178Greekel2179Greekel218Greekel2180Greekel2181Greekel2182Greekel2183Greekel2184Greekel2185Greekel2186Greekel2187Greekel2188Greekel2189Greekel219Greekel2190Greekel2191Greekel2192Greekel2193Greekel2194Greekel2195Greekel2196Greekel2197Greekel2198Greekel2199Greekel22Greekel220Greekel2200Greekel2201Greekel2202Greekel2203Greekel2204Greekel2205Greekel2206Greekel2207Greekel2208Greekel2209Greekel221Greekel2210Greekel2211Greekel2212Greekel2213Greekel2214Greekel2215Greekel2216Greekel2217Greekel2218Greekel2219Greekel222Greekel2220Greekel2221Greekel2222Greekel2223Greekel2224Greekel2225Greekel2226Greekel2227Greekel2228Greekel2229Greekel223Greekel2230Greekel2231Greekel2232Greekel2233Greekel2234Greekel2235Greekel2236Greekel2237Greekel2238Greekel2239Greekel224Greekel2240Greekel2241Greekel2242Greekel2243Greekel2244Greekel2245Greekel2246Greekel2247Greekel2248Greekel2249Greekel225Greekel2250Greekel2251Greekel2252Greekel2253Greekel2254Greekel2255Greekel2256Greekel2257Greekel2258Greekel2259Greekel226Greekel2260Greekel2261Greekel2262Greekel2263Greekel2264Greekel2265Greekel2266Greekel2267Greekel2268Greekel2269Greekel227Greekel2270Greekel2271Greekel2272Greekel2273Greekel2274Greekel2275Greekel2276Greekel2277Greekel2278Greekel2279Greekel228Greekel2280Greekel2281Greekel2282Greekel2283Greekel2284Greekel2285Greekel2286Greekel2287Greekel2288Greekel2289Greekel229Greekel2290Greekel2291Greekel2292Greekel2293Greekel2294Greekel2295Greekel2296Greekel2297Greekel2298Greekel2299Greekel23Greekel230Greekel2300Greekel2301Greekel2302Greekel2303Greekel2304Greekel2305Greekel2306Greekel2307Greekel2308Greekel2309Greekel231Greekel2310Greekel2311Greekel2312Greekel2313Greekel2314Greekel2315Greekel2316Greekel2317Greekel2318Greekel2319Greekel232Greekel2320Greekel2321Greekel2322Greekel2323Greekel2324Greekel2325Greekel2326Greekel2327Greekel2328Greekel2329Greekel233Greekel2330Greekel2331Greekel2332Greekel2333Greekel2334Greekel2335Greekel2336Greekel2337Greekel2338Greekel2339Greekel234Greekel2340Greekel2341Greekel2342Greekel2343Greekel2344Greekel2345Greekel2346Greekel2347Greekel2348Greekel2349Greekel235Greekel2350Greekel2351Greekel2352Greekel2353Greekel2354Greekel2355Greekel2356Greekel2357Greekel2358Greekel2359Greekel236Greekel2360Greekel2361Greekel2362Greekel2363Greekel2364Greekel2365Greekel2366Greekel2367Greekel2368Greekel2369Greekel237Greekel2370Greekel2371Greekel2372Greekel2373Greekel2374Greekel2375Greekel2376Greekel2377Greekel2378Greekel2379Greekel238Greekel2380Greekel2381Greekel2382Greekel2383Greekel2384Greekel2385Greekel2386Greekel2387Greekel2388Greekel2389Greekel239Greekel2390Greekel2391Greekel2392Greekel2393Greekel2394Greekel2395Greekel2396Greekel2397Greekel2398Greekel2399Greekel24Greekel240Greekel2400Greekel2401Greekel2402Greekel2403Greekel2404Greekel2405Greekel2406Greekel2407Greekel2408Greekel2409Greekel241Greekel2410Greekel2411Greekel2412Greekel2413Greekel2414Greekel2415Greekel2416Greekel2417Greekel2418Greekel2419Greekel242Greekel2420Greekel2421Greekel2422Greekel2423Greekel2424Greekel2425Greekel2426Greekel2427Greekel2428Greekel2429Greekel243Greekel2430Greekel2431Greekel2432Greekel2433Greekel2434Greekel2435Greekel2436Greekel2437Greekel2438Greekel2439Greekel244Greekel2440Greekel2441Greekel2442Greekel2443Greekel2444Greekel2445Greekel2446Greekel2447Greekel2448Greekel2449Greekel245Greekel2450Greekel2451Greekel2452Greekel2453Greekel2454Greekel2455Greekel2456Greekel2457Greekel2458Greekel2459Greekel246Greekel2460Greekel2461Greekel2462Greekel2463Greekel2464Greekel2465Greekel2466Greekel2467Greekel2468Greekel2469Greekel247Greekel2470Greekel2471Greekel2472Greekel2473Greekel2474Greekel2475Greekel2476Greekel2477Greekel2478Greekel2479Greekel248Greekel2480Greekel2481Greekel2482Greekel2483Greekel2484Greekel2485Greekel2486Greekel2487Greekel2488Greekel2489Greekel249Greekel2490Greekel2491Greekel2492Greekel2493Greekel2494Greekel2495Greekel2496Greekel2497Greekel2498Greekel2499Greekel25Greekel250Greekel2500Greekel2501Greekel2502Greekel2503Greekel2504Greekel2505Greekel2506Greekel2507Greekel2508Greekel2509Greekel251Greekel2510Greekel2511Greekel2512Greekel2513Greekel2514Greekel2515Greekel2516Greekel2517Greekel2518Greekel2519Greekel252Greekel2520Greekel2521Greekel2522Greekel2523Greekel2524Greekel2525Greekel2526Greekel2527Greekel2528Greekel2529Greekel253Greekel2530Greekel2531Greekel2532Greekel2533Greekel2534Greekel2535Greekel2536Greekel2537Greekel2538Greekel2539Greekel254Greekel2540Greekel2541Greekel2542Greekel2543Greekel2544Greekel2545Greekel2546Greekel2547Greekel2548Greekel2549Greekel255Greekel2550Greekel2551Greekel2552Greekel2553Greekel2554Greekel2555Greekel2556Greekel2557Greekel2558Greekel2559Greekel256Greekel2560Greekel2561Greekel2562Greekel2563Greekel2564Greekel2565Greekel2566Greekel2567Greekel2568Greekel2569Greekel257Greekel2570Greekel2571Greekel2572Greekel2573Greekel2574Greekel2575Greekel2576Greekel2577Greekel2578Greekel2579Greekel258Greekel2580Greekel2581Greekel2582Greekel2583Greekel2584Greekel2585Greekel2586Greekel2587Greekel2588Greekel2589Greekel259Greekel2590Greekel2591Greekel2592Greekel2593Greekel2594Greekel2595Greekel2596Greekel2597Greekel2598Greekel2599Greekel26Greekel260Greekel2600Greekel2601Greekel2602Greekel2603Greekel2604Greekel2605Greekel2606Greekel2607Greekel2608Greekel2609Greekel261Greekel2610Greekel2611Greekel2612Greekel2613Greekel2614Greekel2615Greekel2616Greekel2617Greekel2618Greekel2619Greekel262Greekel2620Greekel2621Greekel2622Greekel2623Greekel2624Greekel2625Greekel2626Greekel2627Greekel2628Greekel2629Greekel263Greekel2630Greekel2631Greekel2632Greekel2633Greekel2634Greekel2635Greekel2636Greekel2637Greekel2638Greekel2639Greekel264Greekel2640Greekel2641Greekel2642Greekel2643Greekel2644Greekel2645Greekel2646Greekel2647Greekel2648Greekel2649Greekel265Greekel2650Greekel2651Greekel2652Greekel2653Greekel2654Greekel2655Greekel2656Greekel2657Greekel2658Greekel2659Greekel266Greekel2660Greekel2661Greekel2662Greekel2663Greekel2664Greekel2665Greekel2666Greekel2667Greekel2668Greekel2669Greekel267Greekel2670Greekel2671Greekel2672Greekel2673Greekel2674Greekel2675Greekel2676Greekel2677Greekel2678Greekel2679Greekel268Greekel2680Greekel2681Greekel2682Greekel2683Greekel2684Greekel2685Greekel2686Greekel2687Greekel2688Greekel2689Greekel269Greekel2690Greekel2691Greekel2692Greekel2693Greekel2694Greekel2695Greekel2696Greekel2697Greekel2698Greekel2699Greekel27Greekel270Greekel2700Greekel2701Greekel2702Greekel2703Greekel2704Greekel2705Greekel2706Greekel2707Greekel2708Greekel2709Greekel271Greekel2710Greekel2711Greekel2712Greekel2713Greekel2714Greekel2715Greekel2716Greekel2717Greekel2718Greekel2719Greekel272Greekel2720Greekel2721Greekel2722Greekel2723Greekel2724Greekel2725Greekel2726Greekel2727Greekel2728Greekel2729Greekel273Greekel2730Greekel2731Greekel2732Greekel2733Greekel2734Greekel2735Greekel2736Greekel2737Greekel2738Greekel2739Greekel274Greekel2740Greekel2741Greekel2742Greekel2743Greekel2744Greekel2745Greekel2746Greekel2747Greekel2748Greekel2749Greekel275Greekel2750Greekel2751Greekel2752Greekel2753Greekel2754Greekel2755Greekel2756Greekel2757Greekel2758Greekel2759Greekel276Greekel2760Greekel2761Greekel2762Greekel2763Greekel2764Greekel2765Greekel2766Greekel2767Greekel2768Greekel2769Greekel277Greekel2770Greekel2771Greekel2772Greekel2773Greekel2774Greekel2775Greekel2776Greekel2777Greekel2778Greekel2779Greekel278Greekel2780Greekel2781Greekel2782Greekel2783Greekel2784Greekel2785Greekel2786Greekel2787Greekel2788Greekel2789Greekel279Greekel2790Greekel2791Greekel2792Greekel2793Greekel2794Greekel2795Greekel2796Greekel2797Greekel2798Greekel2799Greekel28Greekel280Greekel2800Greekel2801Greekel2802Greekel2803Greekel2804Greekel2805Greekel2806Greekel2807Greekel2808Greekel2809Greekel281Greekel2810Greekel2811Greekel2812Greekel2813Greekel2814Greekel2815Greekel2816Greekel2817Greekel2818Greekel2819Greekel282Greekel2820Greekel2821Greekel2822Greekel2823Greekel2824Greekel2825Greekel2826Greekel2827Greekel2828Greekel2829Greekel283Greekel2830Greekel2831Greekel2832Greekel2833Greekel2834Greekel2835Greekel2836Greekel2837Greekel2838Greekel2839Greekel284Greekel2840Greekel2841Greekel2842Greekel2843Greekel2844Greekel2845Greekel2846Greekel2847Greekel2848Greekel2849Greekel285Greekel2850Greekel2851Greekel2852Greekel2853Greekel2854Greekel2855Greekel2856Greekel2857Greekel2858Greekel2859Greekel286Greekel2860Greekel2861Greekel2862Greekel2863Greekel2864Greekel2865Greekel2866Greekel2867Greekel2868Greekel2869Greekel287Greekel2870Greekel2871Greekel2872Greekel2873Greekel2874Greekel2875Greekel2876Greekel2877Greekel2878Greekel2879Greekel288Greekel2880Greekel2881Greekel2882Greekel2883Greekel2884Greekel2885Greekel2886Greekel2887Greekel2888Greekel2889Greekel289Greekel2890Greekel2891Greekel2892Greekel2893Greekel2894Greekel2895Greekel2896Greekel2897Greekel2898Greekel2899Greekel29Greekel290Greekel2900Greekel2901Greekel2902Greekel2903Greekel2904Greekel2905Greekel2906Greekel2907Greekel2908Greekel2909Greekel291Greekel2910Greekel2911Greekel2912Greekel2913Greekel2914Greekel2915Greekel2916Greekel2917Greekel2918Greekel2919Greekel292Greekel2920Greekel2921Greekel2922Greekel2923Greekel2924Greekel2925Greekel2926Greekel2927Greekel2928Greekel2929Greekel293Greekel2930Greekel2931Greekel2932Greekel2933Greekel2934Greekel2935Greekel2936Greekel2937Greekel2938Greekel2939Greekel294Greekel2940Greekel2941Greekel2942Greekel2943Greekel2944Greekel2945Greekel2946Greekel2947Greekel2948Greekel2949Greekel295Greekel2950Greekel2951Greekel2952Greekel2953Greekel2954Greekel2955Greekel2956Greekel2957Greekel2958Greekel2959Greekel296Greekel2960Greekel2961Greekel2962Greekel2963Greekel2964Greekel2965Greekel2966Greekel2967Greekel2968Greekel2969Greekel297Greekel2970Greekel2971Greekel2972Greekel2973Greekel2974Greekel2975Greekel2976Greekel2977Greekel2978Greekel2979Greekel298Greekel2980Greekel2981Greekel2982Greekel2983Greekel2984Greekel2985Greekel2986Greekel2987Greekel2988Greekel2989Greekel299Greekel2990Greekel2991Greekel2992Greekel2993Greekel2994Greekel2995Greekel2996Greekel2997Greekel2998Greekel2999Greekel3Greekel30Greekel300Greekel3000Greekel3001Greekel3002Greekel3003Greekel3004Greekel3005Greekel3006Greekel3007Greekel3008Greekel3009Greekel301Greekel3010Greekel3011Greekel3012Greekel3013Greekel3014Greekel3015Greekel3016Greekel3017Greekel3018Greekel3019Greekel302Greekel3020Greekel3021Greekel3022Greekel3023Greekel3024Greekel3025Greekel3026Greekel3027Greekel3028Greekel3029Greekel303Greekel3030Greekel3031Greekel3032Greekel3033Greekel3034Greekel3035Greekel3036Greekel3037Greekel3038Greekel3039Greekel304Greekel3040Greekel3041Greekel3042Greekel3043Greekel3044Greekel3045Greekel3046Greekel3047Greekel3048Greekel3049Greekel305Greekel3050Greekel3051Greekel3052Greekel3053Greekel3054Greekel3055Greekel3056Greekel3057Greekel3058Greekel3059Greekel306Greekel3060Greekel3061Greekel3062Greekel3063Greekel3064Greekel3065Greekel3066Greekel3067Greekel3068Greekel3069Greekel307Greekel3070Greekel3071Greekel3072Greekel3073Greekel3074Greekel3075Greekel3076Greekel3077Greekel3078Greekel3079Greekel308Greekel3080Greekel3081Greekel3082Greekel3083Greekel3084Greekel3085Greekel3086Greekel3087Greekel3088Greekel3089Greekel309Greekel3090Greekel3091Greekel3092Greekel3093Greekel3094Greekel3095Greekel3096Greekel3097Greekel3098Greekel3099Greekel31Greekel310Greekel3100Greekel3101Greekel3102Greekel3103Greekel3104Greekel3105Greekel3106Greekel3107Greekel3108Greekel3109Greekel311Greekel3110Greekel3111Greekel3112Greekel3113Greekel3114Greekel3115Greekel3116Greekel3117Greekel3118Greekel3119Greekel312Greekel3120Greekel3121Greekel3122Greekel3123Greekel3124Greekel3125Greekel3126Greekel3127Greekel3128Greekel3129Greekel313Greekel3130Greekel3131Greekel3132Greekel3133Greekel3134Greekel3135Greekel3136Greekel3137Greekel3138Greekel3139Greekel314Greekel3140Greekel3141Greekel3142Greekel3143Greekel3144Greekel3145Greekel3146Greekel3147Greekel3148Greekel3149Greekel315Greekel3150Greekel3151Greekel3152Greekel3153Greekel3154Greekel3155Greekel3156Greekel3157Greekel3158Greekel3159Greekel316Greekel3160Greekel3161Greekel3162Greekel3163Greekel3164Greekel3165Greekel3166Greekel3167Greekel3168Greekel3169Greekel317Greekel3170Greekel3171Greekel3172Greekel3173Greekel3174Greekel3175Greekel3176Greekel3177Greekel3178Greekel3179Greekel318Greekel3180Greekel3181Greekel3182Greekel3183Greekel3184Greekel3185Greekel3186Greekel3187Greekel3188Greekel3189Greekel319Greekel3190Greekel3191Greekel3192Greekel3193Greekel3194Greekel3195Greekel3196Greekel3197Greekel3198Greekel3199Greekel32Greekel320Greekel3200Greekel3201Greekel3202Greekel3203Greekel3204Greekel3205Greekel3206Greekel3207Greekel3208Greekel3209Greekel321Greekel3210Greekel3211Greekel3212Greekel3213Greekel3214Greekel3215Greekel3216Greekel3217Greekel3218Greekel3219Greekel322Greekel3220Greekel3221Greekel3222Greekel3223Greekel3224Greekel3225Greekel3226Greekel3227Greekel3228Greekel3229Greekel323Greekel3230Greekel3231Greekel3232Greekel3233Greekel3234Greekel3235Greekel3236Greekel3237Greekel3238Greekel3239Greekel324Greekel3240Greekel3241Greekel3242Greekel3243Greekel3244Greekel3245Greekel3246Greekel3247Greekel3248Greekel3249Greekel325Greekel3250Greekel3251Greekel3252Greekel3253Greekel3254Greekel3255Greekel3256Greekel3257Greekel3258Greekel3259Greekel326Greekel3260Greekel3261Greekel3262Greekel3263Greekel3264Greekel3265Greekel3266Greekel3267Greekel3268Greekel3269Greekel327Greekel3270Greekel3271Greekel3272Greekel3273Greekel3274Greekel3275Greekel3276Greekel3277Greekel3278Greekel3279Greekel328Greekel3280Greekel3281Greekel3282Greekel3283Greekel3284Greekel3285Greekel3286Greekel3287Greekel3288Greekel3289Greekel329Greekel3290Greekel3291Greekel3292Greekel3293Greekel3294Greekel3295Greekel3296Greekel3297Greekel3298Greekel3299Greekel33Greekel330Greekel3300Greekel3301Greekel3302Greekel3303Greekel3304Greekel3305Greekel3306Greekel3307Greekel3308Greekel3309Greekel331Greekel3310Greekel3311Greekel3312Greekel3313Greekel3314Greekel3315Greekel3316Greekel3317Greekel3318Greekel3319Greekel332Greekel3320Greekel3321Greekel3322Greekel3323Greekel3324Greekel3325Greekel3326Greekel3327Greekel3328Greekel3329Greekel333Greekel3330Greekel3331Greekel3332Greekel3333Greekel3334Greekel3335Greekel3336Greekel3337Greekel3338Greekel3339Greekel334Greekel3340Greekel3341Greekel3342Greekel3343Greekel3344Greekel3345Greekel3346Greekel3347Greekel3348Greekel3349Greekel335Greekel3350Greekel3351Greekel3352Greekel3353Greekel3354Greekel3355Greekel3356Greekel3357Greekel3358Greekel3359Greekel336Greekel3360Greekel3361Greekel3362Greekel3363Greekel3364Greekel3365Greekel3366Greekel3367Greekel3368Greekel3369Greekel337Greekel3370Greekel3371Greekel3372Greekel3373Greekel3374Greekel3375Greekel3376Greekel3377Greekel3378Greekel3379Greekel338Greekel3380Greekel3381Greekel3382Greekel3383Greekel3384Greekel3385Greekel3386Greekel3387Greekel3388Greekel3389Greekel339Greekel3390Greekel3391Greekel3392Greekel3393Greekel3394Greekel3395Greekel3396Greekel3397Greekel3398Greekel3399Greekel34Greekel340Greekel3400Greekel3401Greekel3402Greekel3403Greekel3404Greekel3405Greekel3406Greekel3407Greekel3408Greekel3409Greekel341Greekel3410Greekel3411Greekel3412Greekel3413Greekel3414Greekel3415Greekel3416Greekel3417Greekel3418Greekel3419Greekel342Greekel3420Greekel3421Greekel3422Greekel3423Greekel3424Greekel3425Greekel3426Greekel3427Greekel3428Greekel3429Greekel343Greekel3430Greekel3431Greekel3432Greekel3433Greekel3434Greekel3435Greekel3436Greekel3437Greekel3438Greekel3439Greekel344Greekel3440Greekel3441Greekel3442Greekel3443Greekel3444Greekel3445Greekel3446Greekel3447Greekel3448Greekel3449Greekel345Greekel3450Greekel3451Greekel3452Greekel3453Greekel3454Greekel3455Greekel3456Greekel3457Greekel3458Greekel3459Greekel346Greekel3460Greekel3461Greekel3462Greekel3463Greekel3464Greekel3465Greekel3466Greekel3467Greekel3468Greekel3469Greekel347Greekel3470Greekel3471Greekel3472Greekel3473Greekel3474Greekel3475Greekel3476Greekel3477Greekel3478Greekel3479Greekel348Greekel3480Greekel3481Greekel3482Greekel3483Greekel3484Greekel3485Greekel3486Greekel3487Greekel3488Greekel3489Greekel349Greekel3490Greekel3491Greekel3492Greekel3493Greekel3494Greekel3495Greekel3496Greekel3497Greekel3498Greekel3499Greekel35Greekel350Greekel3500Greekel3501Greekel3502Greekel3503Greekel3504Greekel3505Greekel3506Greekel3507Greekel3508Greekel3509Greekel351Greekel3510Greekel3511Greekel3512Greekel3513Greekel3514Greekel3515Greekel3516Greekel3517Greekel3518Greekel3519Greekel352Greekel3520Greekel3521Greekel3522Greekel3523Greekel3524Greekel3525Greekel3526Greekel3527Greekel3528Greekel3529Greekel353Greekel3530Greekel3531Greekel3532Greekel3533Greekel3534Greekel3535Greekel3536Greekel3537Greekel3538Greekel3539Greekel354Greekel3540Greekel3541Greekel3542Greekel3543Greekel3544Greekel3545Greekel3546Greekel3547Greekel3548Greekel3549Greekel355Greekel3550Greekel3551Greekel3552Greekel3553Greekel3554Greekel3555Greekel3556Greekel3557Greekel3558Greekel3559Greekel356Greekel3560Greekel3561Greekel3562Greekel3563Greekel3564Greekel3565Greekel3566Greekel3567Greekel3568Greekel3569Greekel357Greekel3570Greekel3571Greekel3572Greekel3573Greekel3574Greekel3575Greekel3576Greekel3577Greekel3578Greekel3579Greekel358Greekel3580Greekel3581Greekel3582Greekel3583Greekel3584Greekel3585Greekel3586Greekel3587Greekel3588Greekel3589Greekel359Greekel3590Greekel3591Greekel3592Greekel3593Greekel3594Greekel3595Greekel3596Greekel3597Greekel3598Greekel3599Greekel36Greekel360Greekel3600Greekel3601Greekel3602Greekel3603Greekel3604Greekel3605Greekel3606Greekel3607Greekel3608Greekel3609Greekel361Greekel3610Greekel3611Greekel3612Greekel3613Greekel3614Greekel3615Greekel3616Greekel3617Greekel3618Greekel3619Greekel362Greekel3620Greekel3621Greekel3622Greekel3623Greekel3624Greekel3625Greekel3626Greekel3627Greekel3628Greekel3629Greekel363Greekel3630Greekel3631Greekel3632Greekel3633Greekel3634Greekel3635Greekel3636Greekel3637Greekel3638Greekel3639Greekel364Greekel3640Greekel3641Greekel3642Greekel3643Greekel3644Greekel3645Greekel3646Greekel3647Greekel3648Greekel3649Greekel365Greekel3650Greekel3651Greekel3652Greekel3653Greekel3654Greekel3655Greekel3656Greekel3657Greekel3658Greekel3659Greekel366Greekel3660Greekel3661Greekel3662Greekel3663Greekel3664Greekel3665Greekel3666Greekel3667Greekel3668Greekel3669Greekel367Greekel3670Greekel3671Greekel3672Greekel3673Greekel3674Greekel3675Greekel3676Greekel3677Greekel3678Greekel3679Greekel368Greekel3680Greekel3681Greekel3682Greekel3683Greekel3684Greekel3685Greekel3686Greekel3687Greekel3688Greekel3689Greekel369Greekel3690Greekel3691Greekel3692Greekel3693Greekel3694Greekel3695Greekel3696Greekel3697Greekel3698Greekel3699Greekel37Greekel370Greekel3700Greekel3701Greekel3702Greekel3703Greekel3704Greekel3705Greekel3706Greekel3707Greekel3708Greekel3709Greekel371Greekel3710Greekel3711Greekel3712Greekel3713Greekel3714Greekel3715Greekel3716Greekel3717Greekel3718Greekel3719Greekel372Greekel3720Greekel3721Greekel3722Greekel3723Greekel3724Greekel3725Greekel3726Greekel3727Greekel3728Greekel3729Greekel373Greekel3730Greekel3731Greekel3732Greekel3733Greekel3734Greekel3735Greekel3736Greekel3737Greekel3738Greekel3739Greekel374Greekel3740Greekel3741Greekel3742Greekel3743Greekel3744Greekel3745Greekel3746Greekel3747Greekel3748Greekel3749Greekel375Greekel3750Greekel3751Greekel3752Greekel3753Greekel3754Greekel3755Greekel3756Greekel3757Greekel3758Greekel3759Greekel376Greekel3760Greekel3761Greekel3762Greekel3763Greekel3764Greekel3765Greekel3766Greekel3767Greekel3768Greekel3769Greekel377Greekel3770Greekel3771Greekel3772Greekel3773Greekel3774Greekel3775Greekel3776Greekel3777Greekel3778Greekel3779Greekel378Greekel3780Greekel3781Greekel3782Greekel3783Greekel3784Greekel3785Greekel3786Greekel3787Greekel3788Greekel3789Greekel379Greekel3790Greekel3791Greekel3792Greekel3793Greekel3794Greekel3795Greekel3796Greekel3797Greekel3798Greekel3799Greekel38Greekel380Greekel3800Greekel3801Greekel3802Greekel3803Greekel3804Greekel3805Greekel3806Greekel3807Greekel3808Greekel3809Greekel381Greekel3810Greekel3811Greekel3812Greekel3813Greekel3814Greekel3815Greekel3816Greekel3817Greekel3818Greekel3819Greekel382Greekel3820Greekel3821Greekel3822Greekel3823Greekel3824Greekel3825Greekel3826Greekel3827Greekel3828Greekel3829Greekel383Greekel3830Greekel3831Greekel3832Greekel3833Greekel3834Greekel3835Greekel3836Greekel3837Greekel3838Greekel3839Greekel384Greekel3840Greekel3841Greekel3842Greekel3843Greekel3844Greekel3845Greekel3846Greekel3847Greekel3848Greekel3849Greekel385Greekel3850Greekel3851Greekel3852Greekel3853Greekel3854Greekel3855Greekel3856Greekel3857Greekel3858Greekel3859Greekel386Greekel3860Greekel3861Greekel3862Greekel3863Greekel3864Greekel3865Greekel3866Greekel3867Greekel3868Greekel3869Greekel387Greekel3870Greekel3871Greekel3872Greekel3873Greekel3874Greekel3875Greekel3876Greekel3877Greekel3878Greekel3879Greekel388Greekel3880Greekel3881Greekel3882Greekel3883Greekel3884Greekel3885Greekel3886Greekel3887Greekel3888Greekel3889Greekel389Greekel3890Greekel3891Greekel3892Greekel3893Greekel3894Greekel3895Greekel3896Greekel3897Greekel3898Greekel3899Greekel39Greekel390Greekel3900Greekel3901Greekel3902Greekel3903Greekel3904Greekel3905Greekel3906Greekel3907Greekel3908Greekel3909Greekel391Greekel3910Greekel3911Greekel3912Greekel3913Greekel3914Greekel3915Greekel3916Greekel3917Greekel3918Greekel3919Greekel392Greekel3920Greekel3921Greekel3922Greekel3923Greekel3924Greekel3925Greekel3926Greekel3927Greekel3928Greekel3929Greekel393Greekel3930Greekel3931Greekel3932Greekel3933Greekel3934Greekel3935Greekel3936Greekel3937Greekel3938Greekel3939Greekel394Greekel3940Greekel3941Greekel3942Greekel3943Greekel3944Greekel3945Greekel3946Greekel3947Greekel3948Greekel3949Greekel395Greekel3950Greekel3951Greekel3952Greekel3953Greekel3954Greekel3955Greekel3956Greekel3957Greekel3958Greekel3959Greekel396Greekel3960Greekel3961Greekel3962Greekel3963Greekel3964Greekel3965Greekel3966Greekel3967Greekel3968Greekel3969Greekel397Greekel3970Greekel3971Greekel3972Greekel3973Greekel3974Greekel3975Greekel3976Greekel3977Greekel3978Greekel3979Greekel398Greekel3980Greekel3981Greekel3982Greekel3983Greekel3984Greekel3985Greekel3986Greekel3987Greekel3988Greekel3989Greekel399Greekel3990Greekel3991Greekel3992Greekel3993Greekel3994Greekel3995Greekel3996Greekel3997Greekel3998Greekel3999Greekel4Greekel40Greekel400Greekel4000Greekel4001Greekel4002Greekel4003Greekel4004Greekel4005Greekel4006Greekel4007Greekel4008Greekel4009Greekel401Greekel4010Greekel4011Greekel4012Greekel4013Greekel4014Greekel4015Greekel4016Greekel4017Greekel4018Greekel4019Greekel402Greekel4020Greekel4021Greekel4022Greekel4023Greekel4024Greekel4025Greekel4026Greekel4027Greekel4028Greekel4029Greekel403Greekel4030Greekel4031Greekel4032Greekel4033Greekel4034Greekel4035Greekel4036Greekel4037Greekel4038Greekel4039Greekel404Greekel4040Greekel4041Greekel4042Greekel4043Greekel4044Greekel4045Greekel4046Greekel4047Greekel4048Greekel4049Greekel405Greekel4050Greekel4051Greekel4052Greekel4053Greekel4054Greekel4055Greekel4056Greekel4057Greekel4058Greekel4059Greekel406Greekel4060Greekel4061Greekel4062Greekel4063Greekel4064Greekel4065Greekel4066Greekel4067Greekel4068Greekel4069Greekel407Greekel4070Greekel4071Greekel4072Greekel4073Greekel4074Greekel4075Greekel4076Greekel4077Greekel4078Greekel4079Greekel408Greekel4080Greekel4081Greekel4082Greekel4083Greekel4084Greekel4085Greekel4086Greekel4087Greekel4088Greekel4089Greekel409Greekel4090Greekel4091Greekel4092Greekel4093Greekel4094Greekel4095Greekel4096Greekel4097Greekel4098Greekel4099Greekel41Greekel410Greekel4100Greekel4101Greekel4102Greekel4103Greekel4104Greekel4105Greekel4106Greekel4107Greekel4108Greekel4109Greekel411Greekel4110Greekel4111Greekel4112Greekel4113Greekel4114Greekel4115Greekel4116Greekel4117Greekel4118Greekel4119Greekel412Greekel4120Greekel4121Greekel4122Greekel4123Greekel4124Greekel4125Greekel4126Greekel4127Greekel4128Greekel4129Greekel413Greekel4130Greekel4131Greekel4132Greekel4133Greekel4134Greekel4135Greekel4136Greekel4137Greekel4138Greekel4139Greekel414Greekel4140Greekel4141Greekel4142Greekel4143Greekel4144Greekel4145Greekel4146Greekel4147Greekel4148Greekel4149Greekel415Greekel4150Greekel4151Greekel4152Greekel4153Greekel4154Greekel4155Greekel4156Greekel4157Greekel4158Greekel4159Greekel416Greekel4160Greekel4161Greekel4162Greekel4163Greekel4164Greekel4165Greekel4166Greekel4167Greekel4168Greekel4169Greekel417Greekel4170Greekel4171Greekel4172Greekel4173Greekel4174Greekel4175Greekel4176Greekel4177Greekel4178Greekel4179Greekel418Greekel4180Greekel4181Greekel4182Greekel4183Greekel4184Greekel4185Greekel4186Greekel4187Greekel4188Greekel4189Greekel419Greekel4190Greekel4191Greekel4192Greekel4193Greekel4194Greekel4195Greekel4196Greekel4197Greekel4198Greekel4199Greekel42Greekel420Greekel4200Greekel4201Greekel4202Greekel4203Greekel4204Greekel4205Greekel4206Greekel4207Greekel4208Greekel4209Greekel421Greekel4210Greekel4211Greekel4212Greekel4213Greekel4214Greekel4215Greekel4216Greekel4217Greekel4218Greekel4219Greekel422Greekel4220Greekel4221Greekel4222Greekel4223Greekel4224Greekel4225Greekel4226Greekel4227Greekel4228Greekel4229Greekel423Greekel4230Greekel4231Greekel4232Greekel4233Greekel4234Greekel4235Greekel4236Greekel4237Greekel4238Greekel4239Greekel424Greekel4240Greekel4241Greekel4242Greekel4243Greekel4244Greekel4245Greekel4246Greekel4247Greekel4248Greekel4249Greekel425Greekel4250Greekel4251Greekel4252Greekel4253Greekel4254Greekel4255Greekel4256Greekel4257Greekel4258Greekel4259Greekel426Greekel4260Greekel4261Greekel4262Greekel4263Greekel4264Greekel4265Greekel4266Greekel4267Greekel4268Greekel4269Greekel427Greekel4270Greekel4271Greekel4272Greekel4273Greekel4274Greekel4275Greekel4276Greekel4277Greekel4278Greekel4279Greekel428Greekel4280Greekel4281Greekel4282Greekel4283Greekel4284Greekel4285Greekel4286Greekel4287Greekel4288Greekel4289Greekel429Greekel4290Greekel4291Greekel4292Greekel4293Greekel4294Greekel4295Greekel4296Greekel4297Greekel4298Greekel4299Greekel43Greekel430Greekel4300Greekel4301Greekel4302Greekel4303Greekel4304Greekel4305Greekel4306Greekel4307Greekel4308Greekel4309Greekel431Greekel4310Greekel4311Greekel4312Greekel4313Greekel4314Greekel4315Greekel4316Greekel4317Greekel4318Greekel4319Greekel432Greekel4320Greekel4321Greekel4322Greekel4323Greekel4324Greekel4325Greekel4326Greekel4327Greekel4328Greekel4329Greekel433Greekel4330Greekel4331Greekel4332Greekel4333Greekel4334Greekel4335Greekel4336Greekel4337Greekel4338Greekel4339Greekel434Greekel4340Greekel4341Greekel4342Greekel4343Greekel4344Greekel4345Greekel4346Greekel4347Greekel4348Greekel4349Greekel435Greekel4350Greekel4351Greekel4352Greekel4353Greekel4354Greekel4355Greekel4356Greekel4357Greekel4358Greekel4359Greekel436Greekel4360Greekel4361Greekel4362Greekel4363Greekel4364Greekel4365Greekel4366Greekel4367Greekel4368Greekel4369Greekel437Greekel4370Greekel4371Greekel4372Greekel4373Greekel4374Greekel4375Greekel4376Greekel4377Greekel4378Greekel4379Greekel438Greekel4380Greekel4381Greekel4382Greekel4383Greekel4384Greekel4385Greekel4386Greekel4387Greekel4388Greekel4389Greekel439Greekel4390Greekel4391Greekel4392Greekel4393Greekel4394Greekel4395Greekel4396Greekel4397Greekel4398Greekel4399Greekel44Greekel440Greekel4400Greekel4401Greekel4402Greekel4403Greekel4404Greekel4405Greekel4406Greekel4407Greekel4408Greekel4409Greekel441Greekel4410Greekel4411Greekel4412Greekel4413Greekel4414Greekel4415Greekel4416Greekel4417Greekel4418Greekel4419Greekel442Greekel4420Greekel4421Greekel4422Greekel4423Greekel4424Greekel4425Greekel4426Greekel4427Greekel4428Greekel4429Greekel443Greekel4430Greekel4431Greekel4432Greekel4433Greekel4434Greekel4435Greekel4436Greekel4437Greekel4438Greekel4439Greekel444Greekel4440Greekel4441Greekel4442Greekel4443Greekel4444Greekel4445Greekel4446Greekel4447Greekel4448Greekel4449Greekel445Greekel4450Greekel4451Greekel4452Greekel4453Greekel4454Greekel4455Greekel4456Greekel4457Greekel4458Greekel4459Greekel446Greekel4460Greekel4461Greekel4462Greekel4463Greekel4464Greekel4465Greekel4466Greekel4467Greekel4468Greekel4469Greekel447Greekel4470Greekel4471Greekel4472Greekel4473Greekel4474Greekel4475Greekel4476Greekel4477Greekel4478Greekel4479Greekel448Greekel4480Greekel4481Greekel4482Greekel4483Greekel4484Greekel4485Greekel4486Greekel4487Greekel4488Greekel4489Greekel449Greekel4490Greekel4491Greekel4492Greekel4493Greekel4494Greekel4495Greekel4496Greekel4497Greekel4498Greekel4499Greekel45Greekel450Greekel4500Greekel4501Greekel4502Greekel4503Greekel4504Greekel4505Greekel4506Greekel4507Greekel4508Greekel4509Greekel451Greekel4510Greekel4511Greekel4512Greekel4513Greekel4514Greekel4515Greekel4516Greekel4517Greekel4518Greekel4519Greekel452Greekel4520Greekel4521Greekel4522Greekel4523Greekel4524Greekel4525Greekel4526Greekel4527Greekel4528Greekel4529Greekel453Greekel4530Greekel4531Greekel4532Greekel4533Greekel4534Greekel4535Greekel4536Greekel4537Greekel4538Greekel4539Greekel454Greekel4540Greekel4541Greekel4542Greekel4543Greekel4544Greekel4545Greekel4546Greekel4547Greekel4548Greekel4549Greekel455Greekel4550Greekel4551Greekel4552Greekel4553Greekel4554Greekel4555Greekel4556Greekel4557Greekel4558Greekel4559Greekel456Greekel4560Greekel4561Greekel4562Greekel4563Greekel4564Greekel4565Greekel4566Greekel4567Greekel4568Greekel4569Greekel457Greekel4570Greekel4571Greekel4572Greekel4573Greekel4574Greekel4575Greekel4576Greekel4577Greekel4578Greekel4579Greekel458Greekel4580Greekel4581Greekel4582Greekel4583Greekel4584Greekel4585Greekel4586Greekel4587Greekel4588Greekel4589Greekel459Greekel4590Greekel4591Greekel4592Greekel4593Greekel4594Greekel4595Greekel4596Greekel4597Greekel4598Greekel4599Greekel46Greekel460Greekel4600Greekel4601Greekel4602Greekel4603Greekel4604Greekel4605Greekel4606Greekel4607Greekel4608Greekel4609Greekel461Greekel4610Greekel4611Greekel4612Greekel4613Greekel4614Greekel4615Greekel4616Greekel4617Greekel4618Greekel4619Greekel462Greekel4620Greekel4621Greekel4622Greekel4623Greekel4624Greekel4625Greekel4626Greekel4627Greekel4628Greekel4629Greekel463Greekel4630Greekel4631Greekel4632Greekel4633Greekel4634Greekel4635Greekel4636Greekel4637Greekel4638Greekel4639Greekel464Greekel4640Greekel4641Greekel4642Greekel4643Greekel4644Greekel4645Greekel4646Greekel4647Greekel4648Greekel4649Greekel465Greekel4650Greekel4651Greekel4652Greekel4653Greekel4654Greekel4655Greekel4656Greekel4657Greekel4658Greekel4659Greekel466Greekel4660Greekel4661Greekel4662Greekel4663Greekel4664Greekel4665Greekel4666Greekel4667Greekel4668Greekel4669Greekel467Greekel4670Greekel4671Greekel4672Greekel4673Greekel4674Greekel4675Greekel4676Greekel4677Greekel4678Greekel4679Greekel468Greekel4680Greekel4681Greekel4682Greekel4683Greekel4684Greekel4685Greekel4686Greekel4687Greekel4688Greekel4689Greekel469Greekel4690Greekel4691Greekel4692Greekel4693Greekel4694Greekel4695Greekel4696Greekel4697Greekel4698Greekel4699Greekel47Greekel470Greekel4700Greekel4701Greekel4702Greekel4703Greekel4704Greekel4705Greekel4706Greekel4707Greekel4708Greekel4709Greekel471Greekel4710Greekel4711Greekel4712Greekel4713Greekel4714Greekel4715Greekel4716Greekel4717Greekel4718Greekel4719Greekel472Greekel4720Greekel4721Greekel4722Greekel4723Greekel4724Greekel4725Greekel4726Greekel4727Greekel4728Greekel4729Greekel473Greekel4730Greekel4731Greekel4732Greekel4733Greekel4734Greekel4735Greekel4736Greekel4737Greekel4738Greekel4739Greekel474Greekel4740Greekel4741Greekel4742Greekel4743Greekel4744Greekel4745Greekel4746Greekel4747Greekel4748Greekel4749Greekel475Greekel4750Greekel4751Greekel4752Greekel4753Greekel4754Greekel4755Greekel4756Greekel4757Greekel4758Greekel4759Greekel476Greekel4760Greekel4761Greekel4762Greekel4763Greekel4764Greekel4765Greekel4766Greekel4767Greekel4768Greekel4769Greekel477Greekel4770Greekel4771Greekel4772Greekel4773Greekel4774Greekel4775Greekel4776Greekel4777Greekel4778Greekel4779Greekel478Greekel4780Greekel4781Greekel4782Greekel4783Greekel4784Greekel4785Greekel4786Greekel4787Greekel4788Greekel4789Greekel479Greekel4790Greekel4791Greekel4792Greekel4793Greekel4794Greekel4795Greekel4796Greekel4797Greekel4798Greekel4799Greekel48Greekel480Greekel4800Greekel4801Greekel4802Greekel4803Greekel4804Greekel4805Greekel4806Greekel4807Greekel4808Greekel4809Greekel481Greekel4810Greekel4811Greekel4812Greekel4813Greekel4814Greekel4815Greekel4816Greekel4817Greekel4818Greekel4819Greekel482Greekel4820Greekel4821Greekel4822Greekel4823Greekel4824Greekel4825Greekel4826Greekel4827Greekel4828Greekel4829Greekel483Greekel4830Greekel4831Greekel4832Greekel4833Greekel4834Greekel4835Greekel4836Greekel4837Greekel4838Greekel4839Greekel484Greekel4840Greekel4841Greekel4842Greekel4843Greekel4844Greekel4845Greekel4846Greekel4847Greekel4848Greekel4849Greekel485Greekel4850Greekel4851Greekel4852Greekel4853Greekel4854Greekel4855Greekel4856Greekel4857Greekel4858Greekel4859Greekel486Greekel4860Greekel4861Greekel4862Greekel4863Greekel4864Greekel4865Greekel4866Greekel4867Greekel4868Greekel4869Greekel487Greekel4870Greekel4871Greekel4872Greekel4873Greekel4874Greekel4875Greekel4876Greekel4877Greekel4878Greekel4879Greekel488Greekel4880Greekel4881Greekel4882Greekel4883Greekel4884Greekel4885Greekel4886Greekel4887Greekel4888Greekel4889Greekel489Greekel4890Greekel4891Greekel4892Greekel4893Greekel4894Greekel4895Greekel4896Greekel4897Greekel4898Greekel4899Greekel49Greekel490Greekel4900Greekel4901Greekel4902Greekel4903Greekel4904Greekel4905Greekel4906Greekel4907Greekel4908Greekel4909Greekel491Greekel4910Greekel4911Greekel4912Greekel4913Greekel4914Greekel4915Greekel4916Greekel4917Greekel4918Greekel4919Greekel492Greekel4920Greekel4921Greekel4922Greekel4923Greekel4924Greekel4925Greekel4926Greekel4927Greekel4928Greekel4929Greekel493Greekel4930Greekel4931Greekel4932Greekel4933Greekel4934Greekel4935Greekel4936Greekel4937Greekel4938Greekel4939Greekel494Greekel4940Greekel4941Greekel4942Greekel4943Greekel4944Greekel4945Greekel4946Greekel4947Greekel4948Greekel4949Greekel495Greekel4950Greekel4951Greekel4952Greekel4953Greekel4954Greekel4955Greekel4956Greekel4957Greekel4958Greekel4959Greekel496Greekel4960Greekel4961Greekel4962Greekel4963Greekel4964Greekel4965Greekel4966Greekel4967Greekel4968Greekel4969Greekel497Greekel4970Greekel4971Greekel4972Greekel4973Greekel4974Greekel4975Greekel4976Greekel4977Greekel4978Greekel4979Greekel498Greekel4980Greekel4981Greekel4982Greekel4983Greekel4984Greekel4985Greekel4986Greekel4987Greekel4988Greekel4989Greekel499Greekel4990Greekel4991Greekel4992Greekel4993Greekel4994Greekel4995Greekel4996Greekel4997Greekel4998Greekel4999Greekel5Greekel50Greekel500Greekel5000Greekel5001Greekel5002Greekel5003Greekel5004Greekel5005Greekel5006Greekel5007Greekel5008Greekel5009Greekel501Greekel5010Greekel5011Greekel5012Greekel5013Greekel5014Greekel5015Greekel5016Greekel5017Greekel5018Greekel5019Greekel502Greekel5020Greekel5021Greekel5022Greekel5023Greekel5024Greekel5025Greekel5026Greekel5027Greekel5028Greekel5029Greekel503Greekel5030Greekel5031Greekel5032Greekel5033Greekel5034Greekel5035Greekel5036Greekel5037Greekel5038Greekel5039Greekel504Greekel5040Greekel5041Greekel5042Greekel5043Greekel5044Greekel5045Greekel5046Greekel5047Greekel5048Greekel5049Greekel505Greekel5050Greekel5051Greekel5052Greekel5053Greekel5054Greekel5055Greekel5056Greekel5057Greekel5058Greekel5059Greekel506Greekel5060Greekel5061Greekel5062Greekel5063Greekel5064Greekel5065Greekel5066Greekel5067Greekel5068Greekel5069Greekel507Greekel5070Greekel5071Greekel5072Greekel5073Greekel5074Greekel5075Greekel5076Greekel5077Greekel5078Greekel5079Greekel508Greekel5080Greekel5081Greekel5082Greekel5083Greekel5084Greekel5085Greekel5086Greekel5087Greekel5088Greekel5089Greekel509Greekel5090Greekel5091Greekel5092Greekel5093Greekel5094Greekel5095Greekel5096Greekel5097Greekel5098Greekel5099Greekel51Greekel510Greekel5100Greekel5101Greekel5102Greekel5103Greekel5104Greekel5105Greekel5106Greekel5107Greekel5108Greekel5109Greekel511Greekel5110Greekel5111Greekel5112Greekel5113Greekel5114Greekel5115Greekel5116Greekel5117Greekel5118Greekel5119Greekel512Greekel5120Greekel5121Greekel5122Greekel5123Greekel5124Greekel5125Greekel5126Greekel5127Greekel5128Greekel5129Greekel513Greekel5130Greekel5131Greekel5132Greekel5133Greekel5134Greekel5135Greekel5136Greekel5137Greekel5138Greekel5139Greekel514Greekel5140Greekel5141Greekel5142Greekel5143Greekel5144Greekel5145Greekel5146Greekel5147Greekel5148Greekel5149Greekel515Greekel5150Greekel5151Greekel5152Greekel5153Greekel5154Greekel5155Greekel5156Greekel5157Greekel5158Greekel5159Greekel516Greekel5160Greekel5161Greekel5162Greekel5163Greekel5164Greekel5165Greekel5166Greekel5167Greekel5168Greekel5169Greekel517Greekel5170Greekel5171Greekel5172Greekel5173Greekel5174Greekel5175Greekel5176Greekel5177Greekel5178Greekel5179Greekel518Greekel5180Greekel5181Greekel5182Greekel5183Greekel5184Greekel5185Greekel5186Greekel5187Greekel5188Greekel5189Greekel519Greekel5190Greekel5191Greekel5192Greekel5193Greekel5194Greekel5195Greekel5196Greekel5197Greekel5198Greekel5199Greekel52Greekel520Greekel5200Greekel5201Greekel5202Greekel5203Greekel5204Greekel5205Greekel5206Greekel5207Greekel5208Greekel5209Greekel521Greekel5210Greekel5211Greekel5212Greekel5213Greekel5214Greekel5215Greekel5216Greekel5217Greekel5218Greekel5219Greekel522Greekel5220Greekel5221Greekel5222Greekel5223Greekel5224Greekel5225Greekel5226Greekel5227Greekel5228Greekel5229Greekel523Greekel5230Greekel5231Greekel5232Greekel5233Greekel5234Greekel5235Greekel5236Greekel5237Greekel5238Greekel5239Greekel524Greekel5240Greekel5241Greekel5242Greekel5243Greekel5244Greekel5245Greekel5246Greekel5247Greekel5248Greekel5249Greekel525Greekel5250Greekel5251Greekel5252Greekel5253Greekel5254Greekel5255Greekel5256Greekel5257Greekel5258Greekel5259Greekel526Greekel5260Greekel5261Greekel5262Greekel5263Greekel5264Greekel5265Greekel5266Greekel5267Greekel5268Greekel5269Greekel527Greekel5270Greekel5271Greekel5272Greekel5273Greekel5274Greekel5275Greekel5276Greekel5277Greekel5278Greekel5279Greekel528Greekel5280Greekel5281Greekel5282Greekel5283Greekel5284Greekel5285Greekel5286Greekel5287Greekel5288Greekel5289Greekel529Greekel5290Greekel5291Greekel5292Greekel5293Greekel5294Greekel5295Greekel5296Greekel5297Greekel5298Greekel5299Greekel53Greekel530Greekel5300Greekel5301Greekel5302Greekel5303Greekel5304Greekel5305Greekel5306Greekel5307Greekel5308Greekel5309Greekel531Greekel5310Greekel5311Greekel5312Greekel5313Greekel5314Greekel5315Greekel5316Greekel5317Greekel5318Greekel5319Greekel532Greekel5320Greekel5321Greekel5322Greekel5323Greekel5324Greekel5325Greekel5326Greekel5327Greekel5328Greekel5329Greekel533Greekel5330Greekel5331Greekel5332Greekel5333Greekel5334Greekel5335Greekel5336Greekel5337Greekel5338Greekel5339Greekel534Greekel5340Greekel5341Greekel5342Greekel5343Greekel5344Greekel5345Greekel5346Greekel5347Greekel5348Greekel5349Greekel535Greekel5350Greekel5351Greekel5352Greekel5353Greekel5354Greekel5355Greekel5356Greekel5357Greekel5358Greekel5359Greekel536Greekel5360Greekel5361Greekel5362Greekel5363Greekel5364Greekel5365Greekel5366Greekel5367Greekel5368Greekel5369Greekel537Greekel5370Greekel5371Greekel5372Greekel5373Greekel5374Greekel5375Greekel5376Greekel5377Greekel5378Greekel5379Greekel538Greekel5380Greekel5381Greekel5382Greekel5383Greekel5384Greekel5385Greekel5386Greekel5387Greekel5388Greekel5389Greekel539Greekel5390Greekel5391Greekel5392Greekel5393Greekel5394Greekel5395Greekel5396Greekel5397Greekel5398Greekel5399Greekel54Greekel540Greekel5400Greekel5401Greekel5402Greekel5403Greekel5404Greekel5405Greekel5406Greekel5407Greekel5408Greekel5409Greekel541Greekel5410Greekel5411Greekel5412Greekel5413Greekel5414Greekel5415Greekel5416Greekel5417Greekel5418Greekel5419Greekel542Greekel5420Greekel5421Greekel5422Greekel5423Greekel5424Greekel5425Greekel5426Greekel5427Greekel5428Greekel5429Greekel543Greekel5430Greekel5431Greekel5432Greekel5433Greekel5434Greekel5435Greekel5436Greekel5437Greekel5438Greekel5439Greekel544Greekel5440Greekel5441Greekel5442Greekel5443Greekel5444Greekel5445Greekel5446Greekel5447Greekel5448Greekel5449Greekel545Greekel5450Greekel5451Greekel5452Greekel5453Greekel5454Greekel5455Greekel5456Greekel5457Greekel5458Greekel5459Greekel546Greekel5460Greekel5461Greekel5462Greekel5463Greekel5464Greekel5465Greekel5466Greekel5467Greekel5468Greekel5469Greekel547Greekel5470Greekel5471Greekel5472Greekel5473Greekel5474Greekel5475Greekel5476Greekel5477Greekel5478Greekel5479Greekel548Greekel5480Greekel5481Greekel5482Greekel5483Greekel5484Greekel5485Greekel5486Greekel5487Greekel5488Greekel5489Greekel549Greekel5490Greekel5491Greekel5492Greekel5493Greekel5494Greekel5495Greekel5496Greekel5497Greekel5498Greekel5499Greekel55Greekel550Greekel5500Greekel5501Greekel5502Greekel5503Greekel5504Greekel5505Greekel5506Greekel5507Greekel5508Greekel5509Greekel551Greekel5510Greekel5511Greekel5512Greekel5513Greekel5514Greekel5515Greekel5516Greekel5517Greekel5518Greekel5519Greekel552Greekel5520Greekel5521Greekel5522Greekel5523Greekel5524Greekel5525Greekel5526Greekel5527Greekel5528Greekel5529Greekel553Greekel5530Greekel5531Greekel5532Greekel5533Greekel5534Greekel5535Greekel5536Greekel5537Greekel5538Greekel5539Greekel554Greekel5540Greekel5541Greekel5542Greekel5543Greekel5544Greekel5545Greekel5546Greekel5547Greekel5548Greekel5549Greekel555Greekel5550Greekel5551Greekel5552Greekel5553Greekel5554Greekel5555Greekel5556Greekel5557Greekel5558Greekel5559Greekel556Greekel5560Greekel5561Greekel5562Greekel5563Greekel5564Greekel5565Greekel5566Greekel5567Greekel5568Greekel5569Greekel557Greekel5570Greekel5571Greekel5572Greekel5573Greekel5574Greekel5575Greekel5576Greekel5577Greekel5578Greekel5579Greekel558Greekel5580Greekel5581Greekel5582Greekel5583Greekel5584Greekel5585Greekel5586Greekel5587Greekel5588Greekel5589Greekel559Greekel5590Greekel5591Greekel5592Greekel5593Greekel5594Greekel5595Greekel5596Greekel5597Greekel5598Greekel5599Greekel56Greekel560Greekel5600Greekel5601Greekel5602Greekel5603Greekel5604Greekel5605Greekel5606Greekel5607Greekel5608Greekel5609Greekel561Greekel5610Greekel5611Greekel5612Greekel5613Greekel5614Greekel5615Greekel5616Greekel5617Greekel5618Greekel5619Greekel562Greekel5620Greekel5621Greekel5622Greekel5623Greekel5624Greekel5625Greekel5626Greekel5627Greekel5628Greekel5629Greekel563Greekel5630Greekel5631Greekel5632Greekel5633Greekel5634Greekel5635Greekel5636Greekel5637Greekel5638Greekel5639Greekel564Greekel5640Greekel5641Greekel5642Greekel5643Greekel5644Greekel5645Greekel5646Greekel5647Greekel5648Greekel5649Greekel565Greekel5650Greekel5651Greekel5652Greekel5653Greekel5654Greekel5655Greekel5656Greekel5657Greekel5658Greekel5659Greekel566Greekel5660Greekel5661Greekel5662Greekel5663Greekel5664Greekel5665Greekel5666Greekel5667Greekel5668Greekel5669Greekel567Greekel5670Greekel5671Greekel5672Greekel5673Greekel5674Greekel5675Greekel5676Greekel5677Greekel5678Greekel5679Greekel568Greekel5680Greekel5681Greekel5682Greekel5683Greekel5684Greekel5685Greekel5686Greekel5687Greekel5688Greekel5689Greekel569Greekel5690Greekel5691Greekel5692Greekel5693Greekel5694Greekel5695Greekel5696Greekel5697Greekel5698Greekel5699Greekel57Greekel570Greekel5700Greekel5701Greekel5702Greekel5703Greekel5704Greekel5705Greekel5706Greekel5707Greekel5708Greekel5709Greekel571Greekel5710Greekel5711Greekel5712Greekel5713Greekel5714Greekel5715Greekel5716Greekel5717Greekel5718Greekel5719Greekel572Greekel5720Greekel5721Greekel5722Greekel5723Greekel5724Greekel5725Greekel5726Greekel5727Greekel5728Greekel5729Greekel573Greekel5730Greekel5731Greekel5732Greekel5733Greekel5734Greekel5735Greekel5736Greekel5737Greekel5738Greekel5739Greekel574Greekel5740Greekel5741Greekel5742Greekel5743Greekel5744Greekel5745Greekel5746Greekel5747Greekel5748Greekel5749Greekel575Greekel5750Greekel5751Greekel5752Greekel5753Greekel5754Greekel5755Greekel5756Greekel5757Greekel5758Greekel5759Greekel576Greekel5760Greekel5761Greekel5762Greekel5763Greekel5764Greekel5765Greekel5766Greekel5767Greekel5768Greekel5769Greekel577Greekel5770Greekel5771Greekel5772Greekel5773Greekel5774Greekel5775Greekel5776Greekel5777Greekel5778Greekel5779Greekel578Greekel5780Greekel5781Greekel5782Greekel5783Greekel5784Greekel5785Greekel5786Greekel5787Greekel5788Greekel5789Greekel579Greekel5790Greekel5791Greekel5792Greekel5793Greekel5794Greekel5795Greekel5796Greekel5797Greekel5798Greekel5799Greekel58Greekel580Greekel5800Greekel5801Greekel5802Greekel5803Greekel5804Greekel5805Greekel5806Greekel5807Greekel5808Greekel5809Greekel581Greekel5810Greekel5811Greekel5812Greekel5813Greekel5814Greekel5815Greekel5816Greekel5817Greekel5818Greekel5819Greekel582Greekel5820Greekel5821Greekel5822Greekel5823Greekel5824Greekel5825Greekel5826Greekel5827Greekel5828Greekel5829Greekel583Greekel5830Greekel5831Greekel5832Greekel5833Greekel5834Greekel5835Greekel5836Greekel5837Greekel5838Greekel5839Greekel584Greekel5840Greekel5841Greekel5842Greekel5843Greekel5844Greekel5845Greekel5846Greekel5847Greekel5848Greekel5849Greekel585Greekel5850Greekel5851Greekel5852Greekel5853Greekel5854Greekel5855Greekel5856Greekel5857Greekel5858Greekel5859Greekel586Greekel5860Greekel5861Greekel5862Greekel5863Greekel5864Greekel5865Greekel5866Greekel5867Greekel5868Greekel5869Greekel587Greekel5870Greekel5871Greekel5872Greekel5873Greekel5874Greekel5875Greekel5876Greekel5877Greekel5878Greekel5879Greekel588Greekel5880Greekel5881Greekel5882Greekel5883Greekel5884Greekel5885Greekel5886Greekel5887Greekel5888Greekel5889Greekel589Greekel5890Greekel5891Greekel5892Greekel5893Greekel5894Greekel5895Greekel5896Greekel5897Greekel5898Greekel5899Greekel59Greekel590Greekel5900Greekel5901Greekel5902Greekel5903Greekel5904Greekel5905Greekel5906Greekel5907Greekel5908Greekel5909Greekel591Greekel5910Greekel5911Greekel5912Greekel5913Greekel5914Greekel5915Greekel5916Greekel5917Greekel5918Greekel5919Greekel592Greekel5920Greekel5921Greekel5922Greekel5923Greekel5924Greekel5925Greekel5926Greekel5927Greekel5928Greekel5929Greekel593Greekel5930Greekel5931Greekel5932Greekel5933Greekel5934Greekel5935Greekel5936Greekel5937Greekel5938Greekel5939Greekel594Greekel5940Greekel5941Greekel5942Greekel5943Greekel5944Greekel5945Greekel5946Greekel5947Greekel5948Greekel5949Greekel595Greekel5950Greekel5951Greekel5952Greekel5953Greekel5954Greekel5955Greekel5956Greekel5957Greekel5958Greekel5959Greekel596Greekel5960Greekel5961Greekel5962Greekel5963Greekel5964Greekel5965Greekel5966Greekel5967Greekel5968Greekel5969Greekel597Greekel5970Greekel5971Greekel5972Greekel5973Greekel5974Greekel5975Greekel5976Greekel5977Greekel5978Greekel5979Greekel598Greekel5980Greekel5981Greekel5982Greekel5983Greekel5984Greekel5985Greekel5986Greekel5987Greekel5988Greekel5989Greekel599Greekel5990Greekel5991Greekel5992Greekel5993Greekel5994Greekel5995Greekel5996Greekel5997Greekel5998Greekel5999Greekel6Greekel60Greekel600Greekel6000Greekel6001Greekel6002Greekel6003Greekel6004Greekel6005Greekel6006Greekel6007Greekel6008Greekel6009Greekel601Greekel6010Greekel6011Greekel6012Greekel6013Greekel6014Greekel6015Greekel6016Greekel6017Greekel6018Greekel6019Greekel602Greekel6020Greekel6021Greekel6022Greekel6023Greekel6024Greekel6025Greekel6026Greekel6027Greekel6028Greekel6029Greekel603Greekel6030Greekel6031Greekel6032Greekel6033Greekel6034Greekel6035Greekel6036Greekel6037Greekel6038Greekel6039Greekel604Greekel6040Greekel6041Greekel6042Greekel6043Greekel6044Greekel6045Greekel6046Greekel6047Greekel6048Greekel6049Greekel605Greekel6050Greekel6051Greekel6052Greekel6053Greekel6054Greekel6055Greekel6056Greekel6057Greekel6058Greekel6059Greekel606Greekel6060Greekel6061Greekel6062Greekel6063Greekel6064Greekel6065Greekel6066Greekel6067Greekel6068Greekel6069Greekel607Greekel6070Greekel6071Greekel6072Greekel6073Greekel6074Greekel6075Greekel6076Greekel6077Greekel6078Greekel6079Greekel608Greekel6080Greekel6081Greekel6082Greekel6083Greekel6084Greekel6085Greekel6086Greekel6087Greekel6088Greekel6089Greekel609Greekel6090Greekel6091Greekel6092Greekel6093Greekel6094Greekel6095Greekel6096Greekel6097Greekel6098Greekel6099Greekel61Greekel610Greekel6100Greekel6101Greekel6102Greekel6103Greekel6104Greekel6105Greekel6106Greekel6107Greekel6108Greekel6109Greekel611Greekel6110Greekel6111Greekel6112Greekel6113Greekel6114Greekel6115Greekel6116Greekel6117Greekel6118Greekel6119Greekel612Greekel6120Greekel6121Greekel6122Greekel6123Greekel6124Greekel6125Greekel6126Greekel6127Greekel6128Greekel6129Greekel613Greekel6130Greekel6131Greekel6132Greekel6133Greekel6134Greekel6135Greekel6136Greekel6137Greekel6138Greekel6139Greekel614Greekel6140Greekel6141Greekel6142Greekel6143Greekel6144Greekel6145Greekel6146Greekel6147Greekel6148Greekel6149Greekel615Greekel6150Greekel6151Greekel6152Greekel6153Greekel6154Greekel6155Greekel6156Greekel6157Greekel6158Greekel6159Greekel616Greekel6160Greekel6161Greekel6162Greekel6163Greekel6164Greekel6165Greekel6166Greekel6167Greekel6168Greekel6169Greekel617Greekel6170Greekel6171Greekel6172Greekel6173Greekel6174Greekel6175Greekel6176Greekel6177Greekel6178Greekel6179Greekel618Greekel6180Greekel6181Greekel6182Greekel6183Greekel6184Greekel6185Greekel6186Greekel6187Greekel6188Greekel6189Greekel619Greekel6190Greekel6191Greekel6192Greekel6193Greekel6194Greekel6195Greekel6196Greekel6197Greekel6198Greekel6199Greekel62Greekel620Greekel6200Greekel6201Greekel6202Greekel6203Greekel6204Greekel6205Greekel6206Greekel6207Greekel6208Greekel6209Greekel621Greekel6210Greekel6211Greekel6212Greekel6213Greekel6214Greekel6215Greekel6216Greekel6217Greekel6218Greekel6219Greekel622Greekel6220Greekel6221Greekel6222Greekel6223Greekel6224Greekel6225Greekel6226Greekel6227Greekel6228Greekel6229Greekel623Greekel6230Greekel6231Greekel6232Greekel6233Greekel6234Greekel6235Greekel6236Greekel6237Greekel6238Greekel6239Greekel624Greekel6240Greekel6241Greekel6242Greekel6243Greekel6244Greekel6245Greekel6246Greekel6247Greekel6248Greekel6249Greekel625Greekel6250Greekel6251Greekel6252Greekel6253Greekel6254Greekel6255Greekel6256Greekel6257Greekel6258Greekel6259Greekel626Greekel6260Greekel6261Greekel6262Greekel6263Greekel6264Greekel6265Greekel6266Greekel6267Greekel6268Greekel6269Greekel627Greekel6270Greekel6271Greekel6272Greekel6273Greekel6274Greekel6275Greekel6276Greekel6277Greekel6278Greekel6279Greekel628Greekel6280Greekel6281Greekel6282Greekel6283Greekel6284Greekel6285Greekel6286Greekel6287Greekel6288Greekel6289Greekel629Greekel6290Greekel6291Greekel6292Greekel6293Greekel6294Greekel6295Greekel6296Greekel6297Greekel6298Greekel6299Greekel63Greekel630Greekel6300Greekel6301Greekel6302Greekel6303Greekel6304Greekel6305Greekel6306Greekel6307Greekel6308Greekel6309Greekel631Greekel6310Greekel6311Greekel6312Greekel6313Greekel6314Greekel6315Greekel6316Greekel6317Greekel6318Greekel6319Greekel632Greekel6320Greekel6321Greekel6322Greekel6323Greekel6324Greekel6325Greekel6326Greekel6327Greekel6328Greekel6329Greekel633Greekel6330Greekel6331Greekel6332Greekel6333Greekel6334Greekel6335Greekel6336Greekel6337Greekel6338Greekel6339Greekel634Greekel6340Greekel6341Greekel6342Greekel6343Greekel6344Greekel6345Greekel6346Greekel6347Greekel6348Greekel6349Greekel635Greekel6350Greekel6351Greekel6352Greekel6353Greekel6354Greekel6355Greekel6356Greekel6357Greekel6358Greekel6359Greekel636Greekel6360Greekel6361Greekel6362Greekel6363Greekel6364Greekel6365Greekel6366Greekel6367Greekel6368Greekel6369Greekel637Greekel6370Greekel6371Greekel6372Greekel6373Greekel6374Greekel6375Greekel6376Greekel6377Greekel6378Greekel6379Greekel638Greekel6380Greekel6381Greekel6382Greekel6383Greekel6384Greekel6385Greekel6386Greekel6387Greekel6388Greekel6389Greekel639Greekel6390Greekel6391Greekel6392Greekel6393Greekel6394Greekel6395Greekel6396Greekel6397Greekel6398Greekel6399Greekel64Greekel640Greekel6400Greekel6401Greekel6402Greekel6403Greekel6404Greekel6405Greekel6406Greekel6407Greekel6408Greekel6409Greekel641Greekel6410Greekel6411Greekel6412Greekel6413Greekel6414Greekel6415Greekel6416Greekel6417Greekel6418Greekel6419Greekel642Greekel6420Greekel6421Greekel6422Greekel6423Greekel6424Greekel6425Greekel6426Greekel6427Greekel6428Greekel6429Greekel643Greekel6430Greekel6431Greekel6432Greekel6433Greekel6434Greekel6435Greekel6436Greekel6437Greekel6438Greekel6439Greekel644Greekel6440Greekel6441Greekel6442Greekel6443Greekel6444Greekel6445Greekel6446Greekel6447Greekel6448Greekel6449Greekel645Greekel6450Greekel6451Greekel6452Greekel6453Greekel6454Greekel6455Greekel6456Greekel6457Greekel6458Greekel6459Greekel646Greekel6460Greekel6461Greekel6462Greekel6463Greekel6464Greekel6465Greekel6466Greekel6467Greekel6468Greekel6469Greekel647Greekel6470Greekel6471Greekel6472Greekel6473Greekel6474Greekel6475Greekel6476Greekel6477Greekel6478Greekel6479Greekel648Greekel6480Greekel6481Greekel6482Greekel6483Greekel6484Greekel6485Greekel6486Greekel6487Greekel6488Greekel6489Greekel649Greekel6490Greekel6491Greekel6492Greekel6493Greekel6494Greekel6495Greekel6496Greekel6497Greekel6498Greekel6499Greekel65Greekel650Greekel6500Greekel6501Greekel6502Greekel6503Greekel6504Greekel6505Greekel6506Greekel6507Greekel6508Greekel6509Greekel651Greekel6510Greekel6511Greekel6512Greekel6513Greekel6514Greekel6515Greekel6516Greekel6517Greekel6518Greekel6519Greekel652Greekel6520Greekel6521Greekel6522Greekel6523Greekel6524Greekel6525Greekel6526Greekel6527Greekel6528Greekel6529Greekel653Greekel6530Greekel6531Greekel6532Greekel6533Greekel6534Greekel6535Greekel6536Greekel6537Greekel6538Greekel6539Greekel654Greekel6540Greekel6541Greekel6542Greekel6543Greekel6544Greekel6545Greekel6546Greekel6547Greekel6548Greekel6549Greekel655Greekel6550Greekel6551Greekel6552Greekel6553Greekel6554Greekel6555Greekel6556Greekel6557Greekel6558Greekel6559Greekel656Greekel6560Greekel6561Greekel6562Greekel6563Greekel6564Greekel6565Greekel6566Greekel6567Greekel6568Greekel6569Greekel657Greekel6570Greekel6571Greekel6572Greekel6573Greekel6574Greekel6575Greekel6576Greekel6577Greekel6578Greekel6579Greekel658Greekel6580Greekel6581Greekel6582Greekel6583Greekel6584Greekel6585Greekel6586Greekel6587Greekel6588Greekel6589Greekel659Greekel6590Greekel6591Greekel6592Greekel6593Greekel6594Greekel6595Greekel6596Greekel6597Greekel6598Greekel6599Greekel66Greekel660Greekel6600Greekel6601Greekel6602Greekel6603Greekel6604Greekel6605Greekel6606Greekel6607Greekel6608Greekel6609Greekel661Greekel6610Greekel6611Greekel6612Greekel6613Greekel6614Greekel6615Greekel6616Greekel6617Greekel6618Greekel6619Greekel662Greekel6620Greekel6621Greekel6622Greekel6623Greekel6624Greekel6625Greekel6626Greekel6627Greekel6628Greekel6629Greekel663Greekel6630Greekel6631Greekel6632Greekel6633Greekel6634Greekel6635Greekel6636Greekel6637Greekel6638Greekel6639Greekel664Greekel6640Greekel6641Greekel6642Greekel6643Greekel6644Greekel6645Greekel6646Greekel6647Greekel6648Greekel6649Greekel665Greekel6650Greekel6651Greekel6652Greekel6653Greekel6654Greekel6655Greekel6656Greekel6657Greekel6658Greekel6659Greekel666Greekel6660Greekel6661Greekel6662Greekel6663Greekel6664Greekel6665Greekel6666Greekel6667Greekel6668Greekel6669Greekel667Greekel6670Greekel6671Greekel6672Greekel6673Greekel6674Greekel6675Greekel6676Greekel6677Greekel6678Greekel6679Greekel668Greekel6680Greekel6681Greekel6682Greekel6683Greekel6684Greekel6685Greekel6686Greekel6687Greekel6688Greekel6689Greekel669Greekel6690Greekel6691Greekel6692Greekel6693Greekel6694Greekel6695Greekel6696Greekel6697Greekel6698Greekel6699Greekel67Greekel670Greekel6700Greekel6701Greekel6702Greekel6703Greekel6704Greekel6705Greekel6706Greekel6707Greekel6708Greekel6709Greekel671Greekel6710Greekel6711Greekel6712Greekel6713Greekel6714Greekel6715Greekel6716Greekel6717Greekel6718Greekel6719Greekel672Greekel6720Greekel6721Greekel6722Greekel6723Greekel6724Greekel6725Greekel6726Greekel6727Greekel6728Greekel6729Greekel673Greekel6730Greekel6731Greekel6732Greekel6733Greekel6734Greekel6735Greekel6736Greekel6737Greekel6738Greekel6739Greekel674Greekel6740Greekel6741Greekel6742Greekel6743Greekel6744Greekel6745Greekel6746Greekel6747Greekel6748Greekel6749Greekel675Greekel6750Greekel6751Greekel6752Greekel6753Greekel6754Greekel6755Greekel6756Greekel6757Greekel6758Greekel6759Greekel676Greekel6760Greekel6761Greekel6762Greekel6763Greekel6764Greekel6765Greekel6766Greekel6767Greekel6768Greekel6769Greekel677Greekel6770Greekel6771Greekel6772Greekel6773Greekel6774Greekel6775Greekel6776Greekel6777Greekel6778Greekel6779Greekel678Greekel6780Greekel6781Greekel6782Greekel6783Greekel6784Greekel6785Greekel6786Greekel6787Greekel6788Greekel6789Greekel679Greekel6790Greekel6791Greekel6792Greekel6793Greekel6794Greekel6795Greekel6796Greekel6797Greekel6798Greekel6799Greekel68Greekel680Greekel6800Greekel6801Greekel6802Greekel6803Greekel6804Greekel6805Greekel6806Greekel6807Greekel6808Greekel6809Greekel681Greekel6810Greekel6811Greekel6812Greekel6813Greekel6814Greekel6815Greekel6816Greekel6817Greekel6818Greekel6819Greekel682Greekel6820Greekel6821Greekel6822Greekel6823Greekel6824Greekel6825Greekel6826Greekel6827Greekel6828Greekel6829Greekel683Greekel6830Greekel6831Greekel6832Greekel6833Greekel6834Greekel6835Greekel6836Greekel6837Greekel6838Greekel6839Greekel684Greekel6840Greekel6841Greekel6842Greekel6843Greekel6844Greekel6845Greekel6846Greekel6847Greekel6848Greekel6849Greekel685Greekel6850Greekel6851Greekel6852Greekel6853Greekel6854Greekel6855Greekel6856Greekel6857Greekel6858Greekel6859Greekel686Greekel6860Greekel6861Greekel6862Greekel6863Greekel6864Greekel6865Greekel6866Greekel6867Greekel6868Greekel6869Greekel687Greekel6870Greekel6871Greekel6872Greekel6873Greekel6874Greekel6875Greekel6876Greekel6877Greekel6878Greekel6879Greekel688Greekel6880Greekel6881Greekel6882Greekel6883Greekel6884Greekel6885Greekel6886Greekel6887Greekel6888Greekel6889Greekel689Greekel6890Greekel6891Greekel6892Greekel6893Greekel6894Greekel6895Greekel6896Greekel6897Greekel6898Greekel6899Greekel69Greekel690Greekel6900Greekel6901Greekel6902Greekel6903Greekel6904Greekel6905Greekel6906Greekel6907Greekel6908Greekel6909Greekel691Greekel6910Greekel6911Greekel6912Greekel6913Greekel6914Greekel6915Greekel6916Greekel6917Greekel6918Greekel6919Greekel692Greekel6920Greekel6921Greekel6922Greekel6923Greekel6924Greekel6925Greekel6926Greekel6927Greekel6928Greekel6929Greekel693Greekel6930Greekel6931Greekel6932Greekel6933Greekel6934Greekel6935Greekel6936Greekel6937Greekel6938Greekel6939Greekel694Greekel6940Greekel6941Greekel6942Greekel6943Greekel6944Greekel6945Greekel6946Greekel6947Greekel6948Greekel6949Greekel695Greekel6950Greekel6951Greekel6952Greekel6953Greekel6954Greekel6955Greekel6956Greekel6957Greekel6958Greekel6959Greekel696Greekel6960Greekel6961Greekel6962Greekel6963Greekel6964Greekel6965Greekel6966Greekel6967Greekel6968Greekel6969Greekel697Greekel6970Greekel6971Greekel6972Greekel6973Greekel6974Greekel6975Greekel6976Greekel6977Greekel6978Greekel6979Greekel698Greekel6980Greekel6981Greekel6982Greekel6983Greekel6984Greekel6985Greekel6986Greekel6987Greekel6988Greekel6989Greekel699Greekel6990Greekel6991Greekel6992Greekel6993Greekel6994Greekel6995Greekel6996Greekel6997Greekel6998Greekel6999Greekel7Greekel70Greekel700Greekel7000Greekel7001Greekel7002Greekel7003Greekel7004Greekel7005Greekel7006Greekel7007Greekel7008Greekel7009Greekel701Greekel7010Greekel7011Greekel7012Greekel7013Greekel7014Greekel7015Greekel7016Greekel7017Greekel7018Greekel7019Greekel702Greekel7020Greekel7021Greekel7022Greekel7023Greekel7024Greekel7025Greekel7026Greekel7027Greekel7028Greekel7029Greekel703Greekel7030Greekel7031Greekel7032Greekel7033Greekel7034Greekel7035Greekel7036Greekel7037Greekel7038Greekel7039Greekel704Greekel7040Greekel7041Greekel7042Greekel7043Greekel7044Greekel7045Greekel7046Greekel7047Greekel7048Greekel7049Greekel705Greekel7050Greekel7051Greekel7052Greekel7053Greekel7054Greekel7055Greekel7056Greekel7057Greekel7058Greekel7059Greekel706Greekel7060Greekel7061Greekel7062Greekel7063Greekel7064Greekel7065Greekel7066Greekel7067Greekel7068Greekel7069Greekel707Greekel7070Greekel7071Greekel7072Greekel7073Greekel7074Greekel7075Greekel7076Greekel7077Greekel7078Greekel7079Greekel708Greekel7080Greekel7081Greekel7082Greekel7083Greekel7084Greekel7085Greekel7086Greekel7087Greekel7088Greekel7089Greekel709Greekel7090Greekel7091Greekel7092Greekel7093Greekel7094Greekel7095Greekel7096Greekel7097Greekel7098Greekel7099Greekel71Greekel710Greekel7100Greekel7101Greekel7102Greekel7103Greekel7104Greekel7105Greekel7106Greekel7107Greekel7108Greekel7109Greekel711Greekel7110Greekel7111Greekel7112Greekel7113Greekel7114Greekel7115Greekel7116Greekel7117Greekel7118Greekel7119Greekel712Greekel7120Greekel7121Greekel7122Greekel7123Greekel7124Greekel7125Greekel7126Greekel7127Greekel7128Greekel7129Greekel713Greekel7130Greekel7131Greekel7132Greekel7133Greekel7134Greekel7135Greekel7136Greekel7137Greekel7138Greekel7139Greekel714Greekel7140Greekel7141Greekel7142Greekel7143Greekel7144Greekel7145Greekel7146Greekel7147Greekel7148Greekel7149Greekel715Greekel7150Greekel7151Greekel7152Greekel7153Greekel7154Greekel7155Greekel7156Greekel7157Greekel7158Greekel7159Greekel716Greekel7160Greekel7161Greekel7162Greekel7163Greekel7164Greekel7165Greekel7166Greekel7167Greekel7168Greekel7169Greekel717Greekel7170Greekel7171Greekel7172Greekel7173Greekel7174Greekel7175Greekel7176Greekel7177Greekel7178Greekel7179Greekel718Greekel7180Greekel7181Greekel7182Greekel7183Greekel7184Greekel7185Greekel7186Greekel7187Greekel7188Greekel7189Greekel719Greekel7190Greekel7191Greekel7192Greekel7193Greekel7194Greekel7195Greekel7196Greekel7197Greekel7198Greekel7199Greekel72Greekel720Greekel7200Greekel7201Greekel7202Greekel7203Greekel7204Greekel7205Greekel7206Greekel7207Greekel7208Greekel7209Greekel721Greekel7210Greekel7211Greekel7212Greekel7213Greekel7214Greekel7215Greekel7216Greekel7217Greekel7218Greekel7219Greekel722Greekel7220Greekel7221Greekel7222Greekel7223Greekel7224Greekel7225Greekel7226Greekel7227Greekel7228Greekel7229Greekel723Greekel7230Greekel7231Greekel7232Greekel7233Greekel7234Greekel7235Greekel7236Greekel7237Greekel7238Greekel7239Greekel724Greekel7240Greekel7241Greekel7242Greekel7243Greekel7244Greekel7245Greekel7246Greekel7247Greekel7248Greekel7249Greekel725Greekel7250Greekel7251Greekel7252Greekel7253Greekel7254Greekel7255Greekel7256Greekel7257Greekel7258Greekel7259Greekel726Greekel7260Greekel7261Greekel7262Greekel7263Greekel7264Greekel7265Greekel7266Greekel7267Greekel7268Greekel7269Greekel727Greekel7270Greekel7271Greekel7272Greekel7273Greekel7274Greekel7275Greekel7276Greekel7277Greekel7278Greekel7279Greekel728Greekel7280Greekel7281Greekel7282Greekel7283Greekel7284Greekel7285Greekel7286Greekel7287Greekel7288Greekel7289Greekel729Greekel7290Greekel7291Greekel7292Greekel7293Greekel7294Greekel7295Greekel7296Greekel7297Greekel7298Greekel7299Greekel73Greekel730Greekel7300Greekel7301Greekel7302Greekel7303Greekel7304Greekel7305Greekel7306Greekel7307Greekel7308Greekel7309Greekel731Greekel7310Greekel7311Greekel7312Greekel7313Greekel7314Greekel7315Greekel7316Greekel7317Greekel7318Greekel7319Greekel732Greekel7320Greekel7321Greekel7322Greekel7323Greekel7324Greekel7325Greekel7326Greekel7327Greekel7328Greekel7329Greekel733Greekel7330Greekel7331Greekel7332Greekel7333Greekel7334Greekel7335Greekel7336Greekel7337Greekel7338Greekel7339Greekel734Greekel7340Greekel7341Greekel7342Greekel7343Greekel7344Greekel7345Greekel7346Greekel7347Greekel7348Greekel7349Greekel735Greekel7350Greekel7351Greekel7352Greekel7353Greekel7354Greekel7355Greekel7356Greekel7357Greekel7358Greekel7359Greekel736Greekel7360Greekel7361Greekel7362Greekel7363Greekel7364Greekel7365Greekel7366Greekel7367Greekel7368Greekel7369Greekel737Greekel7370Greekel7371Greekel7372Greekel7373Greekel7374Greekel7375Greekel7376Greekel7377Greekel7378Greekel7379Greekel738Greekel7380Greekel7381Greekel7382Greekel7383Greekel7384Greekel7385Greekel7386Greekel7387Greekel7388Greekel7389Greekel739Greekel7390Greekel7391Greekel7392Greekel7393Greekel7394Greekel7395Greekel7396Greekel7397Greekel7398Greekel7399Greekel74Greekel740Greekel7400Greekel7401Greekel7402Greekel7403Greekel7404Greekel7405Greekel7406Greekel7407Greekel7408Greekel7409Greekel741Greekel7410Greekel7411Greekel7412Greekel7413Greekel7414Greekel7415Greekel7416Greekel7417Greekel7418Greekel7419Greekel742Greekel7420Greekel7421Greekel7422Greekel7423Greekel7424Greekel7425Greekel7426Greekel7427Greekel7428Greekel7429Greekel743Greekel7430Greekel7431Greekel7432Greekel7433Greekel7434Greekel7435Greekel7436Greekel7437Greekel7438Greekel7439Greekel744Greekel7440Greekel7441Greekel7442Greekel7443Greekel7444Greekel7445Greekel7446Greekel7447Greekel7448Greekel7449Greekel745Greekel7450Greekel7451Greekel7452Greekel7453Greekel7454Greekel7455Greekel7456Greekel7457Greekel7458Greekel7459Greekel746Greekel7460Greekel7461Greekel7462Greekel7463Greekel7464Greekel7465Greekel7466Greekel7467Greekel7468Greekel7469Greekel747Greekel7470Greekel7471Greekel7472Greekel7473Greekel7474Greekel7475Greekel7476Greekel7477Greekel7478Greekel7479Greekel748Greekel7480Greekel7481Greekel7482Greekel7483Greekel7484Greekel7485Greekel7486Greekel7487Greekel7488Greekel7489Greekel749Greekel7490Greekel7491Greekel7492Greekel7493Greekel7494Greekel7495Greekel7496Greekel7497Greekel7498Greekel7499Greekel75Greekel750Greekel7500Greekel7501Greekel7502Greekel7503Greekel7504Greekel7505Greekel7506Greekel7507Greekel7508Greekel7509Greekel751Greekel7510Greekel7511Greekel7512Greekel7513Greekel7514Greekel7515Greekel7516Greekel7517Greekel7518Greekel7519Greekel752Greekel7520Greekel7521Greekel7522Greekel7523Greekel7524Greekel7525Greekel7526Greekel7527Greekel7528Greekel7529Greekel753Greekel7530Greekel7531Greekel7532Greekel7533Greekel7534Greekel7535Greekel7536Greekel7537Greekel7538Greekel7539Greekel754Greekel7540Greekel7541Greekel7542Greekel7543Greekel7544Greekel7545Greekel7546Greekel7547Greekel7548Greekel7549Greekel755Greekel7550Greekel7551Greekel7552Greekel7553Greekel7554Greekel7555Greekel7556Greekel7557Greekel7558Greekel7559Greekel756Greekel7560Greekel7561Greekel7562Greekel7563Greekel7564Greekel7565Greekel7566Greekel7567Greekel7568Greekel7569Greekel757Greekel7570Greekel7571Greekel7572Greekel7573Greekel7574Greekel7575Greekel7576Greekel7577Greekel7578Greekel7579Greekel758Greekel7580Greekel7581Greekel7582Greekel7583Greekel7584Greekel7585Greekel7586Greekel7587Greekel7588Greekel7589Greekel759Greekel7590Greekel7591Greekel7592Greekel7593Greekel7594Greekel7595Greekel7596Greekel7597Greekel7598Greekel7599Greekel76Greekel760Greekel7600Greekel7601Greekel7602Greekel7603Greekel7604Greekel7605Greekel7606Greekel7607Greekel7608Greekel7609Greekel761Greekel7610Greekel7611Greekel7612Greekel7613Greekel7614Greekel7615Greekel7616Greekel7617Greekel7618Greekel7619Greekel762Greekel7620Greekel7621Greekel7622Greekel7623Greekel7624Greekel7625Greekel7626Greekel7627Greekel7628Greekel7629Greekel763Greekel7630Greekel7631Greekel7632Greekel7633Greekel7634Greekel7635Greekel7636Greekel7637Greekel7638Greekel7639Greekel764Greekel7640Greekel7641Greekel7642Greekel7643Greekel7644Greekel7645Greekel7646Greekel7647Greekel7648Greekel7649Greekel765Greekel7650Greekel7651Greekel7652Greekel7653Greekel7654Greekel7655Greekel7656Greekel7657Greekel7658Greekel7659Greekel766Greekel7660Greekel7661Greekel7662Greekel7663Greekel7664Greekel7665Greekel7666Greekel7667Greekel7668Greekel7669Greekel767Greekel7670Greekel7671Greekel7672Greekel7673Greekel7674Greekel7675Greekel7676Greekel7677Greekel7678Greekel7679Greekel768Greekel7680Greekel7681Greekel7682Greekel7683Greekel7684Greekel7685Greekel7686Greekel7687Greekel7688Greekel7689Greekel769Greekel7690Greekel7691Greekel7692Greekel7693Greekel7694Greekel7695Greekel7696Greekel7697Greekel7698Greekel7699Greekel77Greekel770Greekel7700Greekel7701Greekel7702Greekel7703Greekel7704Greekel7705Greekel7706Greekel7707Greekel7708Greekel7709Greekel771Greekel7710Greekel7711Greekel7712Greekel7713Greekel7714Greekel7715Greekel7716Greekel7717Greekel7718Greekel7719Greekel772Greekel7720Greekel7721Greekel7722Greekel7723Greekel7724Greekel7725Greekel7726Greekel7727Greekel7728Greekel7729Greekel773Greekel7730Greekel7731Greekel7732Greekel7733Greekel7734Greekel7735Greekel7736Greekel7737Greekel7738Greekel7739Greekel774Greekel7740Greekel7741Greekel7742Greekel7743Greekel7744Greekel7745Greekel7746Greekel7747Greekel7748Greekel7749Greekel775Greekel7750Greekel7751Greekel7752Greekel7753Greekel7754Greekel7755Greekel7756Greekel7757Greekel7758Greekel7759Greekel776Greekel7760Greekel7761Greekel7762Greekel7763Greekel7764Greekel7765Greekel7766Greekel7767Greekel7768Greekel7769Greekel777Greekel7770Greekel7771Greekel7772Greekel7773Greekel7774Greekel7775Greekel7776Greekel7777Greekel7778Greekel7779Greekel778Greekel7780Greekel7781Greekel7782Greekel7783Greekel7784Greekel7785Greekel7786Greekel7787Greekel7788Greekel7789Greekel779Greekel7790Greekel7791Greekel7792Greekel7793Greekel7794Greekel7795Greekel7796Greekel7797Greekel7798Greekel7799Greekel78Greekel780Greekel7800Greekel7801Greekel7802Greekel7803Greekel7804Greekel7805Greekel7806Greekel7807Greekel7808Greekel7809Greekel781Greekel7810Greekel7811Greekel7812Greekel7813Greekel7814Greekel7815Greekel7816Greekel7817Greekel7818Greekel7819Greekel782Greekel7820Greekel7821Greekel7822Greekel7823Greekel7824Greekel7825Greekel7826Greekel7827Greekel7828Greekel7829Greekel783Greekel7830Greekel7831Greekel7832Greekel7833Greekel7834Greekel7835Greekel7836Greekel7837Greekel7838Greekel7839Greekel784Greekel7840Greekel7841Greekel7842Greekel7843Greekel7844Greekel7845Greekel7846Greekel7847Greekel7848Greekel7849Greekel785Greekel7850Greekel7851Greekel7852Greekel7853Greekel7854Greekel7855Greekel7856Greekel7857Greekel7858Greekel7859Greekel786Greekel7860Greekel7861Greekel7862Greekel7863Greekel7864Greekel7865Greekel7866Greekel7867Greekel7868Greekel7869Greekel787Greekel7870Greekel7871Greekel7872Greekel7873Greekel7874Greekel7875Greekel7876Greekel7877Greekel7878Greekel7879Greekel788Greekel7880Greekel7881Greekel7882Greekel7883Greekel7884Greekel7885Greekel7886Greekel7887Greekel7888Greekel7889Greekel789Greekel7890Greekel7891Greekel7892Greekel7893Greekel7894Greekel7895Greekel7896Greekel7897Greekel7898Greekel7899Greekel79Greekel790Greekel7900Greekel7901Greekel7902Greekel7903Greekel7904Greekel7905Greekel7906Greekel7907Greekel7908Greekel7909Greekel791Greekel7910Greekel7911Greekel7912Greekel7913Greekel7914Greekel7915Greekel7916Greekel7917Greekel7918Greekel7919Greekel792Greekel7920Greekel7921Greekel7922Greekel7923Greekel7924Greekel7925Greekel7926Greekel7927Greekel7928Greekel7929Greekel793Greekel7930Greekel7931Greekel7932Greekel7933Greekel7934Greekel7935Greekel7936Greekel7937Greekel7938Greekel7939Greekel794Greekel7940Greekel7941Greekel7942Greekel7943Greekel7944Greekel7945Greekel7946Greekel7947Greekel7948Greekel7949Greekel795Greekel7950Greekel7951Greekel7952Greekel7953Greekel7954Greekel7955Greekel7956Greekel7957Greekel7958Greekel7959Greekel796Greekel7960Greekel7961Greekel7962Greekel7963Greekel7964Greekel7965Greekel7966Greekel7967Greekel7968Greekel7969Greekel797Greekel7970Greekel7971Greekel7972Greekel7973Greekel7974Greekel7975Greekel7976Greekel7977Greekel7978Greekel7979Greekel798Greekel7980Greekel7981Greekel7982Greekel7983Greekel7984Greekel7985Greekel7986Greekel7987Greekel7988Greekel7989Greekel799Greekel7990Greekel7991Greekel7992Greekel7993Greekel7994Greekel7995Greekel7996Greekel7997Greekel7998Greekel7999Greekel8Greekel80Greekel800Greekel8000Greekel8001Greekel8002Greekel8003Greekel8004Greekel8005Greekel8006Greekel8007Greekel8008Greekel8009Greekel801Greekel8010Greekel8011Greekel8012Greekel8013Greekel8014Greekel8015Greekel8016Greekel8017Greekel8018Greekel8019Greekel802Greekel8020Greekel8021Greekel8022Greekel8023Greekel8024Greekel8025Greekel8026Greekel8027Greekel8028Greekel8029Greekel803Greekel8030Greekel8031Greekel8032Greekel8033Greekel8034Greekel8035Greekel8036Greekel8037Greekel8038Greekel8039Greekel804Greekel8040Greekel8041Greekel8042Greekel8043Greekel8044Greekel8045Greekel8046Greekel8047Greekel8048Greekel8049Greekel805Greekel8050Greekel8051Greekel8052Greekel8053Greekel8054Greekel8055Greekel8056Greekel8057Greekel8058Greekel8059Greekel806Greekel8060Greekel8061Greekel8062Greekel8063Greekel8064Greekel8065Greekel8066Greekel8067Greekel8068Greekel8069Greekel807Greekel8070Greekel8071Greekel8072Greekel8073Greekel8074Greekel8075Greekel8076Greekel8077Greekel8078Greekel8079Greekel808Greekel8080Greekel8081Greekel8082Greekel8083Greekel8084Greekel8085Greekel8086Greekel8087Greekel8088Greekel8089Greekel809Greekel8090Greekel8091Greekel8092Greekel8093Greekel8094Greekel8095Greekel8096Greekel8097Greekel8098Greekel8099Greekel81Greekel810Greekel8100Greekel8101Greekel8102Greekel8103Greekel8104Greekel8105Greekel8106Greekel8107Greekel8108Greekel8109Greekel811Greekel8110Greekel8111Greekel8112Greekel8113Greekel8114Greekel8115Greekel8116Greekel8117Greekel8118Greekel8119Greekel812Greekel8120Greekel8121Greekel8122Greekel8123Greekel8124Greekel8125Greekel8126Greekel8127Greekel8128Greekel8129Greekel813Greekel8130Greekel8131Greekel8132Greekel8133Greekel8134Greekel8135Greekel8136Greekel8137Greekel8138Greekel8139Greekel814Greekel8140Greekel8141Greekel8142Greekel8143Greekel8144Greekel8145Greekel8146Greekel8147Greekel8148Greekel8149Greekel815Greekel8150Greekel8151Greekel8152Greekel8153Greekel8154Greekel8155Greekel8156Greekel8157Greekel8158Greekel8159Greekel816Greekel8160Greekel8161Greekel8162Greekel8163Greekel8164Greekel8165Greekel8166Greekel8167Greekel8168Greekel8169Greekel817Greekel8170Greekel8171Greekel8172Greekel8173Greekel8174Greekel8175Greekel8176Greekel8177Greekel8178Greekel8179Greekel818Greekel8180Greekel8181Greekel8182Greekel8183Greekel8184Greekel8185Greekel8186Greekel8187Greekel8188Greekel8189Greekel819Greekel8190Greekel8191Greekel82Greekel820Greekel821Greekel822Greekel823Greekel824Greekel825Greekel826Greekel827Greekel828Greekel829Greekel83Greekel830Greekel831Greekel832Greekel833Greekel834Greekel835Greekel836Greekel837Greekel838Greekel839Greekel84Greekel840Greekel841Greekel842Greekel843Greekel844Greekel845Greekel846Greekel847Greekel848Greekel849Greekel85Greekel850Greekel851Greekel852Greekel853Greekel854Greekel855Greekel856Greekel857Greekel858Greekel859Greekel86Greekel860Greekel861Greekel862Greekel863Greekel864Greekel865Greekel866Greekel867Greekel868Greekel869Greekel87Greekel870Greekel871Greekel872Greekel873Greekel874Greekel875Greekel876Greekel877Greekel878Greekel879Greekel88Greekel880Greekel881Greekel882Greekel883Greekel884Greekel885Greekel886Greekel887Greekel888Greekel889Greekel89Greekel890Greekel891Greekel892Greekel893Greekel894Greekel895Greekel896Greekel897Greekel898Greekel899Greekel9Greekel90Greekel900Greekel901Greekel902Greekel903Greekel904Greekel905Greekel906Greekel907Greekel908Greekel909Greekel91Greekel910Greekel911Greekel912Greekel913Greekel914Greekel915Greekel916Greekel917Greekel918Greekel919Greekel92Greekel920Greekel921Greekel922Greekel923Greekel924Greekel925Greekel926Greekel927Greekel928Greekel929Greekel93Greekel930Greekel931Greekel932Greekel933Greekel934Greekel935Greekel936Greekel937Greekel938Greekel939Greekel94Greekel940Greekel941Greekel942Greekel943Greekel944Greekel945Greekel946Greekel947Greekel948Greekel949Greekel95Greekel950Greekel951Greekel952Greekel953Greekel954Greekel955Greekel956Greekel957Greekel958Greekel959Greekel96Greekel960Greekel961Greekel962Greekel963Greekel964Greekel965Greekel966Greekel967Greekel968Greekel969Greekel97Greekel970Greekel971Greekel972Greekel973Greekel974Greekel975Greekel976Greekel977Greekel978Greekel979Greekel98Greekel980Greekel981Greekel982Greekel983Greekel984Greekel985Greekel986Greekel987Greekel988Greekel989Greekel99Greekel990Greekel991Greekel992Greekel993Greekel994Greekel995Greekel996Greekel997Greekel998Greekel999Greeken0Englishen1Englishen10Englishen100Englishen1000Englishen1001Englishen1002Englishen1003Englishen1004Englishen1005Englishen1006Englishen1007Englishen1008Englishen1009Englishen101Englishen1010Englishen1011Englishen1012Englishen1013Englishen1014Englishen1015Englishen1016Englishen1017Englishen1018Englishen1019Englishen102Englishen1020Englishen1021Englishen1022Englishen1023Englishen1024Englishen1025Englishen1026Englishen1027Englishen1028Englishen1029Englishen103Englishen1030Englishen1031Englishen1032Englishen1033Englishen1034Englishen1035Englishen1036Englishen1037Englishen1038Englishen1039Englishen104Englishen1040Englishen1041Englishen1042Englishen1043Englishen1044Englishen1045Englishen1046Englishen1047Englishen1048Englishen1049Englishen105Englishen1050Englishen1051Englishen1052Englishen1053Englishen1054Englishen1055Englishen1056Englishen1057Englishen1058Englishen1059Englishen106Englishen1060Englishen1061Englishen1062Englishen1063Englishen1064Englishen1065Englishen1066Englishen1067Englishen1068Englishen1069Englishen107Englishen1070Englishen1071Englishen1072Englishen1073Englishen1074Englishen1075Englishen1076Englishen1077Englishen1078Englishen1079Englishen108Englishen1080Englishen1081Englishen1082Englishen1083Englishen1084Englishen1085Englishen1086Englishen1087Englishen1088Englishen1089Englishen109Englishen1090Englishen1091Englishen1092Englishen1093Englishen1094Englishen1095Englishen1096Englishen1097Englishen1098Englishen1099Englishen11Englishen110Englishen1100Englishen1101Englishen1102Englishen1103Englishen1104Englishen1105Englishen1106Englishen1107Englishen1108Englishen1109Englishen111Englishen1110Englishen1111Englishen1112Englishen1113Englishen1114Englishen1115Englishen1116Englishen1117Englishen1118Englishen1119Englishen112Englishen1120Englishen1121Englishen1122Englishen1123Englishen1124Englishen1125Englishen1126Englishen1127Englishen1128Englishen1129Englishen113Englishen1130Englishen1131Englishen1132Englishen1133Englishen1134Englishen1135Englishen1136Englishen1137Englishen1138Englishen1139Englishen114Englishen1140Englishen1141Englishen1142Englishen1143Englishen1144Englishen1145Englishen1146Englishen1147Englishen1148Englishen1149Englishen115Englishen1150Englishen1151Englishen1152Englishen1153Englishen1154Englishen1155Englishen1156Englishen1157Englishen1158Englishen1159Englishen116Englishen1160Englishen1161Englishen1162Englishen1163Englishen1164Englishen1165Englishen1166Englishen1167Englishen1168Englishen1169Englishen117Englishen1170Englishen1171Englishen1172Englishen1173Englishen1174Englishen1175Englishen1176Englishen1177Englishen1178Englishen1179Englishen118Englishen1180Englishen1181Englishen1182Englishen1183Englishen1184Englishen1185Englishen1186Englishen1187Englishen1188Englishen1189Englishen119Englishen1190Englishen1191Englishen1192Englishen1193Englishen1194Englishen1195Englishen1196Englishen1197Englishen1198Englishen1199Englishen12Englishen120Englishen1200Englishen1201Englishen1202Englishen1203Englishen1204Englishen1205Englishen1206Englishen1207Englishen1208Englishen1209Englishen121Englishen1210Englishen1211Englishen1212Englishen1213Englishen1214Englishen1215Englishen1216Englishen1217Englishen1218Englishen1219Englishen122Englishen1220Englishen1221Englishen1222Englishen1223Englishen1224Englishen1225Englishen1226Englishen1227Englishen1228Englishen1229Englishen123Englishen1230Englishen1231Englishen1232Englishen1233Englishen1234Englishen1235Englishen1236Englishen1237Englishen1238Englishen1239Englishen124Englishen1240Englishen1241Englishen1242Englishen1243Englishen1244Englishen1245Englishen1246Englishen1247Englishen1248Englishen1249Englishen125Englishen1250Englishen1251Englishen1252Englishen1253Englishen1254Englishen1255Englishen1256Englishen1257Englishen1258Englishen1259Englishen126Englishen1260Englishen1261Englishen1262Englishen1263Englishen1264Englishen1265Englishen1266Englishen1267Englishen1268Englishen1269Englishen127Englishen1270Englishen1271Englishen1272Englishen1273Englishen1274Englishen1275Englishen1276Englishen1277Englishen1278Englishen1279Englishen128Englishen1280Englishen1281Englishen1282Englishen1283Englishen1284Englishen1285Englishen1286Englishen1287Englishen1288Englishen1289Englishen129Englishen1290Englishen1291Englishen1292Englishen1293Englishen1294Englishen1295Englishen1296Englishen1297Englishen1298Englishen1299Englishen13Englishen130Englishen1300Englishen1301Englishen1302Englishen1303Englishen1304Englishen1305Englishen1306Englishen1307Englishen1308Englishen1309Englishen131Englishen1310Englishen1311Englishen1312Englishen1313Englishen1314Englishen1315Englishen1316Englishen1317Englishen1318Englishen1319Englishen132Englishen1320Englishen1321Englishen1322Englishen1323Englishen1324Englishen1325Englishen1326Englishen1327Englishen1328Englishen1329Englishen133Englishen1330Englishen1331Englishen1332Englishen1333Englishen1334Englishen1335Englishen1336Englishen1337Englishen1338Englishen1339Englishen134Englishen1340Englishen1341Englishen1342Englishen1343Englishen1344Englishen1345Englishen1346Englishen1347Englishen1348Englishen1349Englishen135Englishen1350Englishen1351Englishen1352Englishen1353Englishen1354Englishen1355Englishen1356Englishen1357Englishen1358Englishen1359Englishen136Englishen1360Englishen1361Englishen1362Englishen1363Englishen1364Englishen1365Englishen1366Englishen1367Englishen1368Englishen1369Englishen137Englishen1370Englishen1371Englishen1372Englishen1373Englishen1374Englishen1375Englishen1376Englishen1377Englishen1378Englishen1379Englishen138Englishen1380Englishen1381Englishen1382Englishen1383Englishen1384Englishen1385Englishen1386Englishen1387Englishen1388Englishen1389Englishen139Englishen1390Englishen1391Englishen1392Englishen1393Englishen1394Englishen1395Englishen1396Englishen1397Englishen1398Englishen1399Englishen14Englishen140Englishen1400Englishen1401Englishen1402Englishen1403Englishen1404Englishen1405Englishen1406Englishen1407Englishen1408Englishen1409Englishen141Englishen1410Englishen1411Englishen1412Englishen1413Englishen1414Englishen1415Englishen1416Englishen1417Englishen1418Englishen1419Englishen142Englishen1420Englishen1421Englishen1422Englishen1423Englishen1424Englishen1425Englishen1426Englishen1427Englishen1428Englishen1429Englishen143Englishen1430Englishen1431Englishen1432Englishen1433Englishen1434Englishen1435Englishen1436Englishen1437Englishen1438Englishen1439Englishen144Englishen1440Englishen1441Englishen1442Englishen1443Englishen1444Englishen1445Englishen1446Englishen1447Englishen1448Englishen1449Englishen145Englishen1450Englishen1451Englishen1452Englishen1453Englishen1454Englishen1455Englishen1456Englishen1457Englishen1458Englishen1459Englishen146Englishen1460Englishen1461Englishen1462Englishen1463Englishen1464Englishen1465Englishen1466Englishen1467Englishen1468Englishen1469Englishen147Englishen1470Englishen1471Englishen1472Englishen1473Englishen1474Englishen1475Englishen1476Englishen1477Englishen1478Englishen1479Englishen148Englishen1480Englishen1481Englishen1482Englishen1483Englishen1484Englishen1485Englishen1486Englishen1487Englishen1488Englishen1489Englishen149Englishen1490Englishen1491Englishen1492Englishen1493Englishen1494Englishen1495Englishen1496Englishen1497Englishen1498Englishen1499Englishen15Englishen150Englishen1500Englishen1501Englishen1502Englishen1503Englishen1504Englishen1505Englishen1506Englishen1507Englishen1508Englishen1509Englishen151Englishen1510Englishen1511Englishen1512Englishen1513Englishen1514Englishen1515Englishen1516Englishen1517Englishen1518Englishen1519Englishen152Englishen1520Englishen1521Englishen1522Englishen1523Englishen1524Englishen1525Englishen1526Englishen1527Englishen1528Englishen1529Englishen153Englishen1530Englishen1531Englishen1532Englishen1533Englishen1534Englishen1535Englishen1536Englishen1537Englishen1538Englishen1539Englishen154Englishen1540Englishen1541Englishen1542Englishen1543Englishen1544Englishen1545Englishen1546Englishen1547Englishen1548Englishen1549Englishen155Englishen1550Englishen1551Englishen1552Englishen1553Englishen1554Englishen1555Englishen1556Englishen1557Englishen1558Englishen1559Englishen156Englishen1560Englishen1561Englishen1562Englishen1563Englishen1564Englishen1565Englishen1566Englishen1567Englishen1568Englishen1569Englishen157Englishen1570Englishen1571Englishen1572Englishen1573Englishen1574Englishen1575Englishen1576Englishen1577Englishen1578Englishen1579Englishen158Englishen1580Englishen1581Englishen1582Englishen1583Englishen1584Englishen1585Englishen1586Englishen1587Englishen1588Englishen1589Englishen159Englishen1590Englishen1591Englishen1592Englishen1593Englishen1594Englishen1595Englishen1596Englishen1597Englishen1598Englishen1599Englishen16Englishen160Englishen1600Englishen1601Englishen1602Englishen1603Englishen1604Englishen1605Englishen1606Englishen1607Englishen1608Englishen1609Englishen161Englishen1610Englishen1611Englishen1612Englishen1613Englishen1614Englishen1615Englishen1616Englishen1617Englishen1618Englishen1619Englishen162Englishen1620Englishen1621Englishen1622Englishen1623Englishen1624Englishen1625Englishen1626Englishen1627Englishen1628Englishen1629Englishen163Englishen1630Englishen1631Englishen1632Englishen1633Englishen1634Englishen1635Englishen1636Englishen1637Englishen1638Englishen1639Englishen164Englishen1640Englishen1641Englishen1642Englishen1643Englishen1644Englishen1645Englishen1646Englishen1647Englishen1648Englishen1649Englishen165Englishen1650Englishen1651Englishen1652Englishen1653Englishen1654Englishen1655Englishen1656Englishen1657Englishen1658Englishen1659Englishen166Englishen1660Englishen1661Englishen1662Englishen1663Englishen1664Englishen1665Englishen1666Englishen1667Englishen1668Englishen1669Englishen167Englishen1670Englishen1671Englishen1672Englishen1673Englishen1674Englishen1675Englishen1676Englishen1677Englishen1678Englishen1679Englishen168Englishen1680Englishen1681Englishen1682Englishen1683Englishen1684Englishen1685Englishen1686Englishen1687Englishen1688Englishen1689Englishen169Englishen1690Englishen1691Englishen1692Englishen1693Englishen1694Englishen1695Englishen1696Englishen1697Englishen1698Englishen1699Englishen17Englishen170Englishen1700Englishen1701Englishen1702Englishen1703Englishen1704Englishen1705Englishen1706Englishen1707Englishen1708Englishen1709Englishen171Englishen1710Englishen1711Englishen1712Englishen1713Englishen1714Englishen1715Englishen1716Englishen1717Englishen1718Englishen1719Englishen172Englishen1720Englishen1721Englishen1722Englishen1723Englishen1724Englishen1725Englishen1726Englishen1727Englishen1728Englishen1729Englishen173Englishen1730Englishen1731Englishen1732Englishen1733Englishen1734Englishen1735Englishen1736Englishen1737Englishen1738Englishen1739Englishen174Englishen1740Englishen1741Englishen1742Englishen1743Englishen1744Englishen1745Englishen1746Englishen1747Englishen1748Englishen1749Englishen175Englishen1750Englishen1751Englishen1752Englishen1753Englishen1754Englishen1755Englishen1756Englishen1757Englishen1758Englishen1759Englishen176Englishen1760Englishen1761Englishen1762Englishen1763Englishen1764Englishen1765Englishen1766Englishen1767Englishen1768Englishen1769Englishen177Englishen1770Englishen1771Englishen1772Englishen1773Englishen1774Englishen1775Englishen1776Englishen1777Englishen1778Englishen1779Englishen178Englishen1780Englishen1781Englishen1782Englishen1783Englishen1784Englishen1785Englishen1786Englishen1787Englishen1788Englishen1789Englishen179Englishen1790Englishen1791Englishen1792Englishen1793Englishen1794Englishen1795Englishen1796Englishen1797Englishen1798Englishen1799Englishen18Englishen180Englishen1800Englishen1801Englishen1802Englishen1803Englishen1804Englishen1805Englishen1806Englishen1807Englishen1808Englishen1809Englishen181Englishen1810Englishen1811Englishen1812Englishen1813Englishen1814Englishen1815Englishen1816Englishen1817Englishen1818Englishen1819Englishen182Englishen1820Englishen1821Englishen1822Englishen1823Englishen1824Englishen1825Englishen1826Englishen1827Englishen1828Englishen1829Englishen183Englishen1830Englishen1831Englishen1832Englishen1833Englishen1834Englishen1835Englishen1836Englishen1837Englishen1838Englishen1839Englishen184Englishen1840Englishen1841Englishen1842Englishen1843Englishen1844Englishen1845Englishen1846Englishen1847Englishen1848Englishen1849Englishen185Englishen1850Englishen1851Englishen1852Englishen1853Englishen1854Englishen1855Englishen1856Englishen1857Englishen1858Englishen1859Englishen186Englishen1860Englishen1861Englishen1862Englishen1863Englishen1864Englishen1865Englishen1866Englishen1867Englishen1868Englishen1869Englishen187Englishen1870Englishen1871Englishen1872Englishen1873Englishen1874Englishen1875Englishen1876Englishen1877Englishen1878Englishen1879Englishen188Englishen1880Englishen1881Englishen1882Englishen1883Englishen1884Englishen1885Englishen1886Englishen1887Englishen1888Englishen1889Englishen189Englishen1890Englishen1891Englishen1892Englishen1893Englishen1894Englishen1895Englishen1896Englishen1897Englishen1898Englishen1899Englishen19Englishen190Englishen1900Englishen1901Englishen1902Englishen1903Englishen1904Englishen1905Englishen1906Englishen1907Englishen1908Englishen1909Englishen191Englishen1910Englishen1911Englishen1912Englishen1913Englishen1914Englishen1915Englishen1916Englishen1917Englishen1918Englishen1919Englishen192Englishen1920Englishen1921Englishen1922Englishen1923Englishen1924Englishen1925Englishen1926Englishen1927Englishen1928Englishen1929Englishen193Englishen1930Englishen1931Englishen1932Englishen1933Englishen1934Englishen1935Englishen1936Englishen1937Englishen1938Englishen1939Englishen194Englishen1940Englishen1941Englishen1942Englishen1943Englishen1944Englishen1945Englishen1946Englishen1947Englishen1948Englishen1949Englishen195Englishen1950Englishen1951Englishen1952Englishen1953Englishen1954Englishen1955Englishen1956Englishen1957Englishen1958Englishen1959Englishen196Englishen1960Englishen1961Englishen1962Englishen1963Englishen1964Englishen1965Englishen1966Englishen1967Englishen1968Englishen1969Englishen197Englishen1970Englishen1971Englishen1972Englishen1973Englishen1974Englishen1975Englishen1976Englishen1977Englishen1978Englishen1979Englishen198Englishen1980Englishen1981Englishen1982Englishen1983Englishen1984Englishen1985Englishen1986Englishen1987Englishen1988Englishen1989Englishen199Englishen1990Englishen1991Englishen1992Englishen1993Englishen1994Englishen1995Englishen1996Englishen1997Englishen1998Englishen1999Englishen2Englishen20Englishen200Englishen2000Englishen2001Englishen2002Englishen2003Englishen2004Englishen2005Englishen2006Englishen2007Englishen2008Englishen2009Englishen201Englishen2010Englishen2011Englishen2012Englishen2013Englishen2014Englishen2015Englishen2016Englishen2017Englishen2018Englishen2019Englishen202Englishen2020Englishen2021Englishen2022Englishen2023Englishen2024Englishen2025Englishen2026Englishen2027Englishen2028Englishen2029Englishen203Englishen2030Englishen2031Englishen2032Englishen2033Englishen2034Englishen2035Englishen2036Englishen2037Englishen2038Englishen2039Englishen204Englishen2040Englishen2041Englishen2042Englishen2043Englishen2044Englishen2045Englishen2046Englishen2047Englishen2048Englishen2049Englishen205Englishen2050Englishen2051Englishen2052Englishen2053Englishen2054Englishen2055Englishen2056Englishen2057Englishen2058Englishen2059Englishen206Englishen2060Englishen2061Englishen2062Englishen2063Englishen2064Englishen2065Englishen2066Englishen2067Englishen2068Englishen2069Englishen207Englishen2070Englishen2071Englishen2072Englishen2073Englishen2074Englishen2075Englishen2076Englishen2077Englishen2078Englishen2079Englishen208Englishen2080Englishen2081Englishen2082Englishen2083Englishen2084Englishen2085Englishen2086Englishen2087Englishen2088Englishen2089Englishen209Englishen2090Englishen2091Englishen2092Englishen2093Englishen2094Englishen2095Englishen2096Englishen2097Englishen2098Englishen2099Englishen21Englishen210Englishen2100Englishen2101Englishen2102Englishen2103Englishen2104Englishen2105Englishen2106Englishen2107Englishen2108Englishen2109Englishen211Englishen2110Englishen2111Englishen2112Englishen2113Englishen2114Englishen2115Englishen2116Englishen2117Englishen2118Englishen2119Englishen212Englishen2120Englishen2121Englishen2122Englishen2123Englishen2124Englishen2125Englishen2126Englishen2127Englishen2128Englishen2129Englishen213Englishen2130Englishen2131Englishen2132Englishen2133Englishen2134Englishen2135Englishen2136Englishen2137Englishen2138Englishen2139Englishen214Englishen2140Englishen2141Englishen2142Englishen2143Englishen2144Englishen2145Englishen2146Englishen2147Englishen2148Englishen2149Englishen215Englishen2150Englishen2151Englishen2152Englishen2153Englishen2154Englishen2155Englishen2156Englishen2157Englishen2158Englishen2159Englishen216Englishen2160Englishen2161Englishen2162Englishen2163Englishen2164Englishen2165Englishen2166Englishen2167Englishen2168Englishen2169Englishen217Englishen2170Englishen2171Englishen2172Englishen2173Englishen2174Englishen2175Englishen2176Englishen2177Englishen2178Englishen2179Englishen218Englishen2180Englishen2181Englishen2182Englishen2183Englishen2184Englishen2185Englishen2186Englishen2187Englishen2188Englishen2189Englishen219Englishen2190Englishen2191Englishen2192Englishen2193Englishen2194Englishen2195Englishen2196Englishen2197Englishen2198Englishen2199Englishen22Englishen220Englishen2200Englishen2201Englishen2202Englishen2203Englishen2204Englishen2205Englishen2206Englishen2207Englishen2208Englishen2209Englishen221Englishen2210Englishen2211Englishen2212Englishen2213Englishen2214Englishen2215Englishen2216Englishen2217Englishen2218Englishen2219Englishen222Englishen2220Englishen2221Englishen2222Englishen2223Englishen2224Englishen2225Englishen2226Englishen2227Englishen2228Englishen2229Englishen223Englishen2230Englishen2231Englishen2232Englishen2233Englishen2234Englishen2235Englishen2236Englishen2237Englishen2238Englishen2239Englishen224Englishen2240Englishen2241Englishen2242Englishen2243Englishen2244Englishen2245Englishen2246Englishen2247Englishen2248Englishen2249Englishen225Englishen2250Englishen2251Englishen2252Englishen2253Englishen2254Englishen2255Englishen2256Englishen2257Englishen2258Englishen2259Englishen226Englishen2260Englishen2261Englishen2262Englishen2263Englishen2264Englishen2265Englishen2266Englishen2267Englishen2268Englishen2269Englishen227Englishen2270Englishen2271Englishen2272Englishen2273Englishen2274Englishen2275Englishen2276Englishen2277Englishen2278Englishen2279Englishen228Englishen2280Englishen2281Englishen2282Englishen2283Englishen2284Englishen2285Englishen2286Englishen2287Englishen2288Englishen2289Englishen229Englishen2290Englishen2291Englishen2292Englishen2293Englishen2294Englishen2295Englishen2296Englishen2297Englishen2298Englishen2299Englishen23Englishen230Englishen2300Englishen2301Englishen2302Englishen2303Englishen2304Englishen2305Englishen2306Englishen2307Englishen2308Englishen2309Englishen231Englishen2310Englishen2311Englishen2312Englishen2313Englishen2314Englishen2315Englishen2316Englishen2317Englishen2318Englishen2319Englishen232Englishen2320Englishen2321Englishen2322Englishen2323Englishen2324Englishen2325Englishen2326Englishen2327Englishen2328Englishen2329Englishen233Englishen2330Englishen2331Englishen2332Englishen2333Englishen2334Englishen2335Englishen2336Englishen2337Englishen2338Englishen2339Englishen234Englishen2340Englishen2341Englishen2342Englishen2343Englishen2344Englishen2345Englishen2346Englishen2347Englishen2348Englishen2349Englishen235Englishen2350Englishen2351Englishen2352Englishen2353Englishen2354Englishen2355Englishen2356Englishen2357Englishen2358Englishen2359Englishen236Englishen2360Englishen2361Englishen2362Englishen2363Englishen2364Englishen2365Englishen2366Englishen2367Englishen2368Englishen2369Englishen237Englishen2370Englishen2371Englishen2372Englishen2373Englishen2374Englishen2375Englishen2376Englishen2377Englishen2378Englishen2379Englishen238Englishen2380Englishen2381Englishen2382Englishen2383Englishen2384Englishen2385Englishen2386Englishen2387Englishen2388Englishen2389Englishen239Englishen2390Englishen2391Englishen2392Englishen2393Englishen2394Englishen2395Englishen2396Englishen2397Englishen2398Englishen2399Englishen24Englishen240Englishen2400Englishen2401Englishen2402Englishen2403Englishen2404Englishen2405Englishen2406Englishen2407Englishen2408Englishen2409Englishen241Englishen2410Englishen2411Englishen2412Englishen2413Englishen2414Englishen2415Englishen2416Englishen2417Englishen2418Englishen2419Englishen242Englishen2420Englishen2421Englishen2422Englishen2423Englishen2424Englishen2425Englishen2426Englishen2427Englishen2428Englishen2429Englishen243Englishen2430Englishen2431Englishen2432Englishen2433Englishen2434Englishen2435Englishen2436Englishen2437Englishen2438Englishen2439Englishen244Englishen2440Englishen2441Englishen2442Englishen2443Englishen2444Englishen2445Englishen2446Englishen2447Englishen2448Englishen2449Englishen245Englishen2450Englishen2451Englishen2452Englishen2453Englishen2454Englishen2455Englishen2456Englishen2457Englishen2458Englishen2459Englishen246Englishen2460Englishen2461Englishen2462Englishen2463Englishen2464Englishen2465Englishen2466Englishen2467Englishen2468Englishen2469Englishen247Englishen2470Englishen2471Englishen2472Englishen2473Englishen2474Englishen2475Englishen2476Englishen2477Englishen2478Englishen2479Englishen248Englishen2480Englishen2481Englishen2482Englishen2483Englishen2484Englishen2485Englishen2486Englishen2487Englishen2488Englishen2489Englishen249Englishen2490Englishen2491Englishen2492Englishen2493Englishen2494Englishen2495Englishen2496Englishen2497Englishen2498Englishen2499Englishen25Englishen250Englishen2500Englishen2501Englishen2502Englishen2503Englishen2504Englishen2505Englishen2506Englishen2507Englishen2508Englishen2509Englishen251Englishen2510Englishen2511Englishen2512Englishen2513Englishen2514Englishen2515Englishen2516Englishen2517Englishen2518Englishen2519Englishen252Englishen2520Englishen2521Englishen2522Englishen2523Englishen2524Englishen2525Englishen2526Englishen2527Englishen2528Englishen2529Englishen253Englishen2530Englishen2531Englishen2532Englishen2533Englishen2534Englishen2535Englishen2536Englishen2537Englishen2538Englishen2539Englishen254Englishen2540Englishen2541Englishen2542Englishen2543Englishen2544Englishen2545Englishen2546Englishen2547Englishen2548Englishen2549Englishen255Englishen2550Englishen2551Englishen2552Englishen2553Englishen2554Englishen2555Englishen2556Englishen2557Englishen2558Englishen2559Englishen256Englishen2560Englishen2561Englishen2562Englishen2563Englishen2564Englishen2565Englishen2566Englishen2567Englishen2568Englishen2569Englishen257Englishen2570Englishen2571Englishen2572Englishen2573Englishen2574Englishen2575Englishen2576Englishen2577Englishen2578Englishen2579Englishen258Englishen2580Englishen2581Englishen2582Englishen2583Englishen2584Englishen2585Englishen2586Englishen2587Englishen2588Englishen2589Englishen259Englishen2590Englishen2591Englishen2592Englishen2593Englishen2594Englishen2595Englishen2596Englishen2597Englishen2598Englishen2599Englishen26Englishen260Englishen2600Englishen2601Englishen2602Englishen2603Englishen2604Englishen2605Englishen2606Englishen2607Englishen2608Englishen2609Englishen261Englishen2610Englishen2611Englishen2612Englishen2613Englishen2614Englishen2615Englishen2616Englishen2617Englishen2618Englishen2619Englishen262Englishen2620Englishen2621Englishen2622Englishen2623Englishen2624Englishen2625Englishen2626Englishen2627Englishen2628Englishen2629Englishen263Englishen2630Englishen2631Englishen2632Englishen2633Englishen2634Englishen2635Englishen2636Englishen2637Englishen2638Englishen2639Englishen264Englishen2640Englishen2641Englishen2642Englishen2643Englishen2644Englishen2645Englishen2646Englishen2647Englishen2648Englishen2649Englishen265Englishen2650Englishen2651Englishen2652Englishen2653Englishen2654Englishen2655Englishen2656Englishen2657Englishen2658Englishen2659Englishen266Englishen2660Englishen2661Englishen2662Englishen2663Englishen2664Englishen2665Englishen2666Englishen2667Englishen2668Englishen2669Englishen267Englishen2670Englishen2671Englishen2672Englishen2673Englishen2674Englishen2675Englishen2676Englishen2677Englishen2678Englishen2679Englishen268Englishen2680Englishen2681Englishen2682Englishen2683Englishen2684Englishen2685Englishen2686Englishen2687Englishen2688Englishen2689Englishen269Englishen2690Englishen2691Englishen2692Englishen2693Englishen2694Englishen2695Englishen2696Englishen2697Englishen2698Englishen2699Englishen27Englishen270Englishen2700Englishen2701Englishen2702Englishen2703Englishen2704Englishen2705Englishen2706Englishen2707Englishen2708Englishen2709Englishen271Englishen2710Englishen2711Englishen2712Englishen2713Englishen2714Englishen2715Englishen2716Englishen2717Englishen2718Englishen2719Englishen272Englishen2720Englishen2721Englishen2722Englishen2723Englishen2724Englishen2725Englishen2726Englishen2727Englishen2728Englishen2729Englishen273Englishen2730Englishen2731Englishen2732Englishen2733Englishen2734Englishen2735Englishen2736Englishen2737Englishen2738Englishen2739Englishen274Englishen2740Englishen2741Englishen2742Englishen2743Englishen2744Englishen2745Englishen2746Englishen2747Englishen2748Englishen2749Englishen275Englishen2750Englishen2751Englishen2752Englishen2753Englishen2754Englishen2755Englishen2756Englishen2757Englishen2758Englishen2759Englishen276Englishen2760Englishen2761Englishen2762Englishen2763Englishen2764Englishen2765Englishen2766Englishen2767Englishen2768Englishen2769Englishen277Englishen2770Englishen2771Englishen2772Englishen2773Englishen2774Englishen2775Englishen2776Englishen2777Englishen2778Englishen2779Englishen278Englishen2780Englishen2781Englishen2782Englishen2783Englishen2784Englishen2785Englishen2786Englishen2787Englishen2788Englishen2789Englishen279Englishen2790Englishen2791Englishen2792Englishen2793Englishen2794Englishen2795Englishen2796Englishen2797Englishen2798Englishen2799Englishen28Englishen280Englishen2800Englishen2801Englishen2802Englishen2803Englishen2804Englishen2805Englishen2806Englishen2807Englishen2808Englishen2809Englishen281Englishen2810Englishen2811Englishen2812Englishen2813Englishen2814Englishen2815Englishen2816Englishen2817Englishen2818Englishen2819Englishen282Englishen2820Englishen2821Englishen2822Englishen2823Englishen2824Englishen2825Englishen2826Englishen2827Englishen2828Englishen2829Englishen283Englishen2830Englishen2831Englishen2832Englishen2833Englishen2834Englishen2835Englishen2836Englishen2837Englishen2838Englishen2839Englishen284Englishen2840Englishen2841Englishen2842Englishen2843Englishen2844Englishen2845Englishen2846Englishen2847Englishen2848Englishen2849Englishen285Englishen2850Englishen2851Englishen2852Englishen2853Englishen2854Englishen2855Englishen2856Englishen2857Englishen2858Englishen2859Englishen286Englishen2860Englishen2861Englishen2862Englishen2863Englishen2864Englishen2865Englishen2866Englishen2867Englishen2868Englishen2869Englishen287Englishen2870Englishen2871Englishen2872Englishen2873Englishen2874Englishen2875Englishen2876Englishen2877Englishen2878Englishen2879Englishen288Englishen2880Englishen2881Englishen2882Englishen2883Englishen2884Englishen2885Englishen2886Englishen2887Englishen2888Englishen2889Englishen289Englishen2890Englishen2891Englishen2892Englishen2893Englishen2894Englishen2895Englishen2896Englishen2897Englishen2898Englishen2899Englishen29Englishen290Englishen2900Englishen2901Englishen2902Englishen2903Englishen2904Englishen2905Englishen2906Englishen2907Englishen2908Englishen2909Englishen291Englishen2910Englishen2911Englishen2912Englishen2913Englishen2914Englishen2915Englishen2916Englishen2917Englishen2918Englishen2919Englishen292Englishen2920Englishen2921Englishen2922Englishen2923Englishen2924Englishen2925Englishen2926Englishen2927Englishen2928Englishen2929Englishen293Englishen2930Englishen2931Englishen2932Englishen2933Englishen2934Englishen2935Englishen2936Englishen2937Englishen2938Englishen2939Englishen294Englishen2940Englishen2941Englishen2942Englishen2943Englishen2944Englishen2945Englishen2946Englishen2947Englishen2948Englishen2949Englishen295Englishen2950Englishen2951Englishen2952Englishen2953Englishen2954Englishen2955Englishen2956Englishen2957Englishen2958Englishen2959Englishen296Englishen2960Englishen2961Englishen2962Englishen2963Englishen2964Englishen2965Englishen2966Englishen2967Englishen2968Englishen2969Englishen297Englishen2970Englishen2971Englishen2972Englishen2973Englishen2974Englishen2975Englishen2976Englishen2977Englishen2978Englishen2979Englishen298Englishen2980Englishen2981Englishen2982Englishen2983Englishen2984Englishen2985Englishen2986Englishen2987Englishen2988Englishen2989Englishen299Englishen2990Englishen2991Englishen2992Englishen2993Englishen2994Englishen2995Englishen2996Englishen2997Englishen2998Englishen2999Englishen3Englishen30Englishen300Englishen3000Englishen3001Englishen3002Englishen3003Englishen3004Englishen3005Englishen3006Englishen3007Englishen3008Englishen3009Englishen301Englishen3010Englishen3011Englishen3012Englishen3013Englishen3014Englishen3015Englishen3016Englishen3017Englishen3018Englishen3019Englishen302Englishen3020Englishen3021Englishen3022Englishen3023Englishen3024Englishen3025Englishen3026Englishen3027Englishen3028Englishen3029Englishen303Englishen3030Englishen3031Englishen3032Englishen3033Englishen3034Englishen3035Englishen3036Englishen3037Englishen3038Englishen3039Englishen304Englishen3040Englishen3041Englishen3042Englishen3043Englishen3044Englishen3045Englishen3046Englishen3047Englishen3048Englishen3049Englishen305Englishen3050Englishen3051Englishen3052Englishen3053Englishen3054Englishen3055Englishen3056Englishen3057Englishen3058Englishen3059Englishen306Englishen3060Englishen3061Englishen3062Englishen3063Englishen3064Englishen3065Englishen3066Englishen3067Englishen3068Englishen3069Englishen307Englishen3070Englishen3071Englishen3072Englishen3073Englishen3074Englishen3075Englishen3076Englishen3077Englishen3078Englishen3079Englishen308Englishen3080Englishen3081Englishen3082Englishen3083Englishen3084Englishen3085Englishen3086Englishen3087Englishen3088Englishen3089Englishen309Englishen3090Englishen3091Englishen3092Englishen3093Englishen3094Englishen3095Englishen3096Englishen3097Englishen3098Englishen3099Englishen31Englishen310Englishen3100Englishen3101Englishen3102Englishen3103Englishen3104Englishen3105Englishen3106Englishen3107Englishen3108Englishen3109Englishen311Englishen3110Englishen3111Englishen3112Englishen3113Englishen3114Englishen3115Englishen3116Englishen3117Englishen3118Englishen3119Englishen312Englishen3120Englishen3121Englishen3122Englishen3123Englishen3124Englishen3125Englishen3126Englishen3127Englishen3128Englishen3129Englishen313Englishen3130Englishen3131Englishen3132Englishen3133Englishen3134Englishen3135Englishen3136Englishen3137Englishen3138Englishen3139Englishen314Englishen3140Englishen3141Englishen3142Englishen3143Englishen3144Englishen3145Englishen3146Englishen3147Englishen3148Englishen3149Englishen315Englishen3150Englishen3151Englishen3152Englishen3153Englishen3154Englishen3155Englishen3156Englishen3157Englishen3158Englishen3159Englishen316Englishen3160Englishen3161Englishen3162Englishen3163Englishen3164Englishen3165Englishen3166Englishen3167Englishen3168Englishen3169Englishen317Englishen3170Englishen3171Englishen3172Englishen3173Englishen3174Englishen3175Englishen3176Englishen3177Englishen3178Englishen3179Englishen318Englishen3180Englishen3181Englishen3182Englishen3183Englishen3184Englishen3185Englishen3186Englishen3187Englishen3188Englishen3189Englishen319Englishen3190Englishen3191Englishen3192Englishen3193Englishen3194Englishen3195Englishen3196Englishen3197Englishen3198Englishen3199Englishen32Englishen320Englishen3200Englishen3201Englishen3202Englishen3203Englishen3204Englishen3205Englishen3206Englishen3207Englishen3208Englishen3209Englishen321Englishen3210Englishen3211Englishen3212Englishen3213Englishen3214Englishen3215Englishen3216Englishen3217Englishen3218Englishen3219Englishen322Englishen3220Englishen3221Englishen3222Englishen3223Englishen3224Englishen3225Englishen3226Englishen3227Englishen3228Englishen3229Englishen323Englishen3230Englishen3231Englishen3232Englishen3233Englishen3234Englishen3235Englishen3236Englishen3237Englishen3238Englishen3239Englishen324Englishen3240Englishen3241Englishen3242Englishen3243Englishen3244Englishen3245Englishen3246Englishen3247Englishen3248Englishen3249Englishen325Englishen3250Englishen3251Englishen3252Englishen3253Englishen3254Englishen3255Englishen3256Englishen3257Englishen3258Englishen3259Englishen326Englishen3260Englishen3261Englishen3262Englishen3263Englishen3264Englishen3265Englishen3266Englishen3267Englishen3268Englishen3269Englishen327Englishen3270Englishen3271Englishen3272Englishen3273Englishen3274Englishen3275Englishen3276Englishen3277Englishen3278Englishen3279Englishen328Englishen3280Englishen3281Englishen3282Englishen3283Englishen3284Englishen3285Englishen3286Englishen3287Englishen3288Englishen3289Englishen329Englishen3290Englishen3291Englishen3292Englishen3293Englishen3294Englishen3295Englishen3296Englishen3297Englishen3298Englishen3299Englishen33Englishen330Englishen3300Englishen3301Englishen3302Englishen3303Englishen3304Englishen3305Englishen3306Englishen3307Englishen3308Englishen3309Englishen331Englishen3310Englishen3311Englishen3312Englishen3313Englishen3314Englishen3315Englishen3316Englishen3317Englishen3318Englishen3319Englishen332Englishen3320Englishen3321Englishen3322Englishen3323Englishen3324Englishen3325Englishen3326Englishen3327Englishen3328Englishen3329Englishen333Englishen3330Englishen3331Englishen3332Englishen3333Englishen3334Englishen3335Englishen3336Englishen3337Englishen3338Englishen3339Englishen334Englishen3340Englishen3341Englishen3342Englishen3343Englishen3344Englishen3345Englishen3346Englishen3347Englishen3348Englishen3349Englishen335Englishen3350Englishen3351Englishen3352Englishen3353Englishen3354Englishen3355Englishen3356Englishen3357Englishen3358Englishen3359Englishen336Englishen3360Englishen3361Englishen3362Englishen3363Englishen3364Englishen3365Englishen3366Englishen3367Englishen3368Englishen3369Englishen337Englishen3370Englishen3371Englishen3372Englishen3373Englishen3374Englishen3375Englishen3376Englishen3377Englishen3378Englishen3379Englishen338Englishen3380Englishen3381Englishen3382Englishen3383Englishen3384Englishen3385Englishen3386Englishen3387Englishen3388Englishen3389Englishen339Englishen3390Englishen3391Englishen3392Englishen3393Englishen3394Englishen3395Englishen3396Englishen3397Englishen3398Englishen3399Englishen34Englishen340Englishen3400Englishen3401Englishen3402Englishen3403Englishen3404Englishen3405Englishen3406Englishen3407Englishen3408Englishen3409Englishen341Englishen3410Englishen3411Englishen3412Englishen3413Englishen3414Englishen3415Englishen3416Englishen3417Englishen3418Englishen3419Englishen342Englishen3420Englishen3421Englishen3422Englishen3423Englishen3424Englishen3425Englishen3426Englishen3427Englishen3428Englishen3429Englishen343Englishen3430Englishen3431Englishen3432Englishen3433Englishen3434Englishen3435Englishen3436Englishen3437Englishen3438Englishen3439Englishen344Englishen3440Englishen3441Englishen3442Englishen3443Englishen3444Englishen3445Englishen3446Englishen3447Englishen3448Englishen3449Englishen345Englishen3450Englishen3451Englishen3452Englishen3453Englishen3454Englishen3455Englishen3456Englishen3457Englishen3458Englishen3459Englishen346Englishen3460Englishen3461Englishen3462Englishen3463Englishen3464Englishen3465Englishen3466Englishen3467Englishen3468Englishen3469Englishen347Englishen3470Englishen3471Englishen3472Englishen3473Englishen3474Englishen3475Englishen3476Englishen3477Englishen3478Englishen3479Englishen348Englishen3480Englishen3481Englishen3482Englishen3483Englishen3484Englishen3485Englishen3486Englishen3487Englishen3488Englishen3489Englishen349Englishen3490Englishen3491Englishen3492Englishen3493Englishen3494Englishen3495Englishen3496Englishen3497Englishen3498Englishen3499Englishen35Englishen350Englishen3500Englishen3501Englishen3502Englishen3503Englishen3504Englishen3505Englishen3506Englishen3507Englishen3508Englishen3509Englishen351Englishen3510Englishen3511Englishen3512Englishen3513Englishen3514Englishen3515Englishen3516Englishen3517Englishen3518Englishen3519Englishen352Englishen3520Englishen3521Englishen3522Englishen3523Englishen3524Englishen3525Englishen3526Englishen3527Englishen3528Englishen3529Englishen353Englishen3530Englishen3531Englishen3532Englishen3533Englishen3534Englishen3535Englishen3536Englishen3537Englishen3538Englishen3539Englishen354Englishen3540Englishen3541Englishen3542Englishen3543Englishen3544Englishen3545Englishen3546Englishen3547Englishen3548Englishen3549Englishen355Englishen3550Englishen3551Englishen3552Englishen3553Englishen3554Englishen3555Englishen3556Englishen3557Englishen3558Englishen3559Englishen356Englishen3560Englishen3561Englishen3562Englishen3563Englishen3564Englishen3565Englishen3566Englishen3567Englishen3568Englishen3569Englishen357Englishen3570Englishen3571Englishen3572Englishen3573Englishen3574Englishen3575Englishen3576Englishen3577Englishen3578Englishen3579Englishen358Englishen3580Englishen3581Englishen3582Englishen3583Englishen3584Englishen3585Englishen3586Englishen3587Englishen3588Englishen3589Englishen359Englishen3590Englishen3591Englishen3592Englishen3593Englishen3594Englishen3595Englishen3596Englishen3597Englishen3598Englishen3599Englishen36Englishen360Englishen3600Englishen3601Englishen3602Englishen3603Englishen3604Englishen3605Englishen3606Englishen3607Englishen3608Englishen3609Englishen361Englishen3610Englishen3611Englishen3612Englishen3613Englishen3614Englishen3615Englishen3616Englishen3617Englishen3618Englishen3619Englishen362Englishen3620Englishen3621Englishen3622Englishen3623Englishen3624Englishen3625Englishen3626Englishen3627Englishen3628Englishen3629Englishen363Englishen3630Englishen3631Englishen3632Englishen3633Englishen3634Englishen3635Englishen3636Englishen3637Englishen3638Englishen3639Englishen364Englishen3640Englishen3641Englishen3642Englishen3643Englishen3644Englishen3645Englishen3646Englishen3647Englishen3648Englishen3649Englishen365Englishen3650Englishen3651Englishen3652Englishen3653Englishen3654Englishen3655Englishen3656Englishen3657Englishen3658Englishen3659Englishen366Englishen3660Englishen3661Englishen3662Englishen3663Englishen3664Englishen3665Englishen3666Englishen3667Englishen3668Englishen3669Englishen367Englishen3670Englishen3671Englishen3672Englishen3673Englishen3674Englishen3675Englishen3676Englishen3677Englishen3678Englishen3679Englishen368Englishen3680Englishen3681Englishen3682Englishen3683Englishen3684Englishen3685Englishen3686Englishen3687Englishen3688Englishen3689Englishen369Englishen3690Englishen3691Englishen3692Englishen3693Englishen3694Englishen3695Englishen3696Englishen3697Englishen3698Englishen3699Englishen37Englishen370Englishen3700Englishen3701Englishen3702Englishen3703Englishen3704Englishen3705Englishen3706Englishen3707Englishen3708Englishen3709Englishen371Englishen3710Englishen3711Englishen3712Englishen3713Englishen3714Englishen3715Englishen3716Englishen3717Englishen3718Englishen3719Englishen372Englishen3720Englishen3721Englishen3722Englishen3723Englishen3724Englishen3725Englishen3726Englishen3727Englishen3728Englishen3729Englishen373Englishen3730Englishen3731Englishen3732Englishen3733Englishen3734Englishen3735Englishen3736Englishen3737Englishen3738Englishen3739Englishen374Englishen3740Englishen3741Englishen3742Englishen3743Englishen3744Englishen3745Englishen3746Englishen3747Englishen3748Englishen3749Englishen375Englishen3750Englishen3751Englishen3752Englishen3753Englishen3754Englishen3755Englishen3756Englishen3757Englishen3758Englishen3759Englishen376Englishen3760Englishen3761Englishen3762Englishen3763Englishen3764Englishen3765Englishen3766Englishen3767Englishen3768Englishen3769Englishen377Englishen3770Englishen3771Englishen3772Englishen3773Englishen3774Englishen3775Englishen3776Englishen3777Englishen3778Englishen3779Englishen378Englishen3780Englishen3781Englishen3782Englishen3783Englishen3784Englishen3785Englishen3786Englishen3787Englishen3788Englishen3789Englishen379Englishen3790Englishen3791Englishen3792Englishen3793Englishen3794Englishen3795Englishen3796Englishen3797Englishen3798Englishen3799Englishen38Englishen380Englishen3800Englishen3801Englishen3802Englishen3803Englishen3804Englishen3805Englishen3806Englishen3807Englishen3808Englishen3809Englishen381Englishen3810Englishen3811Englishen3812Englishen3813Englishen3814Englishen3815Englishen3816Englishen3817Englishen3818Englishen3819Englishen382Englishen3820Englishen3821Englishen3822Englishen3823Englishen3824Englishen3825Englishen3826Englishen3827Englishen3828Englishen3829Englishen383Englishen3830Englishen3831Englishen3832Englishen3833Englishen3834Englishen3835Englishen3836Englishen3837Englishen3838Englishen3839Englishen384Englishen3840Englishen3841Englishen3842Englishen3843Englishen3844Englishen3845Englishen3846Englishen3847Englishen3848Englishen3849Englishen385Englishen3850Englishen3851Englishen3852Englishen3853Englishen3854Englishen3855Englishen3856Englishen3857Englishen3858Englishen3859Englishen386Englishen3860Englishen3861Englishen3862Englishen3863Englishen3864Englishen3865Englishen3866Englishen3867Englishen3868Englishen3869Englishen387Englishen3870Englishen3871Englishen3872Englishen3873Englishen3874Englishen3875Englishen3876Englishen3877Englishen3878Englishen3879Englishen388Englishen3880Englishen3881Englishen3882Englishen3883Englishen3884Englishen3885Englishen3886Englishen3887Englishen3888Englishen3889Englishen389Englishen3890Englishen3891Englishen3892Englishen3893Englishen3894Englishen3895Englishen3896Englishen3897Englishen3898Englishen3899Englishen39Englishen390Englishen3900Englishen3901Englishen3902Englishen3903Englishen3904Englishen3905Englishen3906Englishen3907Englishen3908Englishen3909Englishen391Englishen3910Englishen3911Englishen3912Englishen3913Englishen3914Englishen3915Englishen3916Englishen3917Englishen3918Englishen3919Englishen392Englishen3920Englishen3921Englishen3922Englishen3923Englishen3924Englishen3925Englishen3926Englishen3927Englishen3928Englishen3929Englishen393Englishen3930Englishen3931Englishen3932Englishen3933Englishen3934Englishen3935Englishen3936Englishen3937Englishen3938Englishen3939Englishen394Englishen3940Englishen3941Englishen3942Englishen3943Englishen3944Englishen3945Englishen3946Englishen3947Englishen3948Englishen3949Englishen395Englishen3950Englishen3951Englishen3952Englishen3953Englishen3954Englishen3955Englishen3956Englishen3957Englishen3958Englishen3959Englishen396Englishen3960Englishen3961Englishen3962Englishen3963Englishen3964Englishen3965Englishen3966Englishen3967Englishen3968Englishen3969Englishen397Englishen3970Englishen3971Englishen3972Englishen3973Englishen3974Englishen3975Englishen3976Englishen3977Englishen3978Englishen3979Englishen398Englishen3980Englishen3981Englishen3982Englishen3983Englishen3984Englishen3985Englishen3986Englishen3987Englishen3988Englishen3989Englishen399Englishen3990Englishen3991Englishen3992Englishen3993Englishen3994Englishen3995Englishen3996Englishen3997Englishen3998Englishen3999Englishen4Englishen40Englishen400Englishen4000Englishen4001Englishen4002Englishen4003Englishen4004Englishen4005Englishen4006Englishen4007Englishen4008Englishen4009Englishen401Englishen4010Englishen4011Englishen4012Englishen4013Englishen4014Englishen4015Englishen4016Englishen4017Englishen4018Englishen4019Englishen402Englishen4020Englishen4021Englishen4022Englishen4023Englishen4024Englishen4025Englishen4026Englishen4027Englishen4028Englishen4029Englishen403Englishen4030Englishen4031Englishen4032Englishen4033Englishen4034Englishen4035Englishen4036Englishen4037Englishen4038Englishen4039Englishen404Englishen4040Englishen4041Englishen4042Englishen4043Englishen4044Englishen4045Englishen4046Englishen4047Englishen4048Englishen4049Englishen405Englishen4050Englishen4051Englishen4052Englishen4053Englishen4054Englishen4055Englishen4056Englishen4057Englishen4058Englishen4059Englishen406Englishen4060Englishen4061Englishen4062Englishen4063Englishen4064Englishen4065Englishen4066Englishen4067Englishen4068Englishen4069Englishen407Englishen4070Englishen4071Englishen4072Englishen4073Englishen4074Englishen4075Englishen4076Englishen4077Englishen4078Englishen4079Englishen408Englishen4080Englishen4081Englishen4082Englishen4083Englishen4084Englishen4085Englishen4086Englishen4087Englishen4088Englishen4089Englishen409Englishen4090Englishen4091Englishen4092Englishen4093Englishen4094Englishen4095Englishen4096Englishen4097Englishen4098Englishen4099Englishen41Englishen410Englishen4100Englishen4101Englishen4102Englishen4103Englishen4104Englishen4105Englishen4106Englishen4107Englishen4108Englishen4109Englishen411Englishen4110Englishen4111Englishen4112Englishen4113Englishen4114Englishen4115Englishen4116Englishen4117Englishen4118Englishen4119Englishen412Englishen4120Englishen4121Englishen4122Englishen4123Englishen4124Englishen4125Englishen4126Englishen4127Englishen4128Englishen4129Englishen413Englishen4130Englishen4131Englishen4132Englishen4133Englishen4134Englishen4135Englishen4136Englishen4137Englishen4138Englishen4139Englishen414Englishen4140Englishen4141Englishen4142Englishen4143Englishen4144Englishen4145Englishen4146Englishen4147Englishen4148Englishen4149Englishen415Englishen4150Englishen4151Englishen4152Englishen4153Englishen4154Englishen4155Englishen4156Englishen4157Englishen4158Englishen4159Englishen416Englishen4160Englishen4161Englishen4162Englishen4163Englishen4164Englishen4165Englishen4166Englishen4167Englishen4168Englishen4169Englishen417Englishen4170Englishen4171Englishen4172Englishen4173Englishen4174Englishen4175Englishen4176Englishen4177Englishen4178Englishen4179Englishen418Englishen4180Englishen4181Englishen4182Englishen4183Englishen4184Englishen4185Englishen4186Englishen4187Englishen4188Englishen4189Englishen419Englishen4190Englishen4191Englishen4192Englishen4193Englishen4194Englishen4195Englishen4196Englishen4197Englishen4198Englishen4199Englishen42Englishen420Englishen4200Englishen4201Englishen4202Englishen4203Englishen4204Englishen4205Englishen4206Englishen4207Englishen4208Englishen4209Englishen421Englishen4210Englishen4211Englishen4212Englishen4213Englishen4214Englishen4215Englishen4216Englishen4217Englishen4218Englishen4219Englishen422Englishen4220Englishen4221Englishen4222Englishen4223Englishen4224Englishen4225Englishen4226Englishen4227Englishen4228Englishen4229Englishen423Englishen4230Englishen4231Englishen4232Englishen4233Englishen4234Englishen4235Englishen4236Englishen4237Englishen4238Englishen4239Englishen424Englishen4240Englishen4241Englishen4242Englishen4243Englishen4244Englishen4245Englishen4246Englishen4247Englishen4248Englishen4249Englishen425Englishen4250Englishen4251Englishen4252Englishen4253Englishen4254Englishen4255Englishen4256Englishen4257Englishen4258Englishen4259Englishen426Englishen4260Englishen4261Englishen4262Englishen4263Englishen4264Englishen4265Englishen4266Englishen4267Englishen4268Englishen4269Englishen427Englishen4270Englishen4271Englishen4272Englishen4273Englishen4274Englishen4275Englishen4276Englishen4277Englishen4278Englishen4279Englishen428Englishen4280Englishen4281Englishen4282Englishen4283Englishen4284Englishen4285Englishen4286Englishen4287Englishen4288Englishen4289Englishen429Englishen4290Englishen4291Englishen4292Englishen4293Englishen4294Englishen4295Englishen4296Englishen4297Englishen4298Englishen4299Englishen43Englishen430Englishen4300Englishen4301Englishen4302Englishen4303Englishen4304Englishen4305Englishen4306Englishen4307Englishen4308Englishen4309Englishen431Englishen4310Englishen4311Englishen4312Englishen4313Englishen4314Englishen4315Englishen4316Englishen4317Englishen4318Englishen4319Englishen432Englishen4320Englishen4321Englishen4322Englishen4323Englishen4324Englishen4325Englishen4326Englishen4327Englishen4328Englishen4329Englishen433Englishen4330Englishen4331Englishen4332Englishen4333Englishen4334Englishen4335Englishen4336Englishen4337Englishen4338Englishen4339Englishen434Englishen4340Englishen4341Englishen4342Englishen4343Englishen4344Englishen4345Englishen4346Englishen4347Englishen4348Englishen4349Englishen435Englishen4350Englishen4351Englishen4352Englishen4353Englishen4354Englishen4355Englishen4356Englishen4357Englishen4358Englishen4359Englishen436Englishen4360Englishen4361Englishen4362Englishen4363Englishen4364Englishen4365Englishen4366Englishen4367Englishen4368Englishen4369Englishen437Englishen4370Englishen4371Englishen4372Englishen4373Englishen4374Englishen4375Englishen4376Englishen4377Englishen4378Englishen4379Englishen438Englishen4380Englishen4381Englishen4382Englishen4383Englishen4384Englishen4385Englishen4386Englishen4387Englishen4388Englishen4389Englishen439Englishen4390Englishen4391Englishen4392Englishen4393Englishen4394Englishen4395Englishen4396Englishen4397Englishen4398Englishen4399Englishen44Englishen440Englishen4400Englishen4401Englishen4402Englishen4403Englishen4404Englishen4405Englishen4406Englishen4407Englishen4408Englishen4409Englishen441Englishen4410Englishen4411Englishen4412Englishen4413Englishen4414Englishen4415Englishen4416Englishen4417Englishen4418Englishen4419Englishen442Englishen4420Englishen4421Englishen4422Englishen4423Englishen4424Englishen4425Englishen4426Englishen4427Englishen4428Englishen4429Englishen443Englishen4430Englishen4431Englishen4432Englishen4433Englishen4434Englishen4435Englishen4436Englishen4437Englishen4438Englishen4439Englishen444Englishen4440Englishen4441Englishen4442Englishen4443Englishen4444Englishen4445Englishen4446Englishen4447Englishen4448Englishen4449Englishen445Englishen4450Englishen4451Englishen4452Englishen4453Englishen4454Englishen4455Englishen4456Englishen4457Englishen4458Englishen4459Englishen446Englishen4460Englishen4461Englishen4462Englishen4463Englishen4464Englishen4465Englishen4466Englishen4467Englishen4468Englishen4469Englishen447Englishen4470Englishen4471Englishen4472Englishen4473Englishen4474Englishen4475Englishen4476Englishen4477Englishen4478Englishen4479Englishen448Englishen4480Englishen4481Englishen4482Englishen4483Englishen4484Englishen4485Englishen4486Englishen4487Englishen4488Englishen4489Englishen449Englishen4490Englishen4491Englishen4492Englishen4493Englishen4494Englishen4495Englishen4496Englishen4497Englishen4498Englishen4499Englishen45Englishen450Englishen4500Englishen4501Englishen4502Englishen4503Englishen4504Englishen4505Englishen4506Englishen4507Englishen4508Englishen4509Englishen451Englishen4510Englishen4511Englishen4512Englishen4513Englishen4514Englishen4515Englishen4516Englishen4517Englishen4518Englishen4519Englishen452Englishen4520Englishen4521Englishen4522Englishen4523Englishen4524Englishen4525Englishen4526Englishen4527Englishen4528Englishen4529Englishen453Englishen4530Englishen4531Englishen4532Englishen4533Englishen4534Englishen4535Englishen4536Englishen4537Englishen4538Englishen4539Englishen454Englishen4540Englishen4541Englishen4542Englishen4543Englishen4544Englishen4545Englishen4546Englishen4547Englishen4548Englishen4549Englishen455Englishen4550Englishen4551Englishen4552Englishen4553Englishen4554Englishen4555Englishen4556Englishen4557Englishen4558Englishen4559Englishen456Englishen4560Englishen4561Englishen4562Englishen4563Englishen4564Englishen4565Englishen4566Englishen4567Englishen4568Englishen4569Englishen457Englishen4570Englishen4571Englishen4572Englishen4573Englishen4574Englishen4575Englishen4576Englishen4577Englishen4578Englishen4579Englishen458Englishen4580Englishen4581Englishen4582Englishen4583Englishen4584Englishen4585Englishen4586Englishen4587Englishen4588Englishen4589Englishen459Englishen4590Englishen4591Englishen4592Englishen4593Englishen4594Englishen4595Englishen4596Englishen4597Englishen4598Englishen4599Englishen46Englishen460Englishen4600Englishen4601Englishen4602Englishen4603Englishen4604Englishen4605Englishen4606Englishen4607Englishen4608Englishen4609Englishen461Englishen4610Englishen4611Englishen4612Englishen4613Englishen4614Englishen4615Englishen4616Englishen4617Englishen4618Englishen4619Englishen462Englishen4620Englishen4621Englishen4622Englishen4623Englishen4624Englishen4625Englishen4626Englishen4627Englishen4628Englishen4629Englishen463Englishen4630Englishen4631Englishen4632Englishen4633Englishen4634Englishen4635Englishen4636Englishen4637Englishen4638Englishen4639Englishen464Englishen4640Englishen4641Englishen4642Englishen4643Englishen4644Englishen4645Englishen4646Englishen4647Englishen4648Englishen4649Englishen465Englishen4650Englishen4651Englishen4652Englishen4653Englishen4654Englishen4655Englishen4656Englishen4657Englishen4658Englishen4659Englishen466Englishen4660Englishen4661Englishen4662Englishen4663Englishen4664Englishen4665Englishen4666Englishen4667Englishen4668Englishen4669Englishen467Englishen4670Englishen4671Englishen4672Englishen4673Englishen4674Englishen4675Englishen4676Englishen4677Englishen4678Englishen4679Englishen468Englishen4680Englishen4681Englishen4682Englishen4683Englishen4684Englishen4685Englishen4686Englishen4687Englishen4688Englishen4689Englishen469Englishen4690Englishen4691Englishen4692Englishen4693Englishen4694Englishen4695Englishen4696Englishen4697Englishen4698Englishen4699Englishen47Englishen470Englishen4700Englishen4701Englishen4702Englishen4703Englishen4704Englishen4705Englishen4706Englishen4707Englishen4708Englishen4709Englishen471Englishen4710Englishen4711Englishen4712Englishen4713Englishen4714Englishen4715Englishen4716Englishen4717Englishen4718Englishen4719Englishen472Englishen4720Englishen4721Englishen4722Englishen4723Englishen4724Englishen4725Englishen4726Englishen4727Englishen4728Englishen4729Englishen473Englishen4730Englishen4731Englishen4732Englishen4733Englishen4734Englishen4735Englishen4736Englishen4737Englishen4738Englishen4739Englishen474Englishen4740Englishen4741Englishen4742Englishen4743Englishen4744Englishen4745Englishen4746Englishen4747Englishen4748Englishen4749Englishen475Englishen4750Englishen4751Englishen4752Englishen4753Englishen4754Englishen4755Englishen4756Englishen4757Englishen4758Englishen4759Englishen476Englishen4760Englishen4761Englishen4762Englishen4763Englishen4764Englishen4765Englishen4766Englishen4767Englishen4768Englishen4769Englishen477Englishen4770Englishen4771Englishen4772Englishen4773Englishen4774Englishen4775Englishen4776Englishen4777Englishen4778Englishen4779Englishen478Englishen4780Englishen4781Englishen4782Englishen4783Englishen4784Englishen4785Englishen4786Englishen4787Englishen4788Englishen4789Englishen479Englishen4790Englishen4791Englishen4792Englishen4793Englishen4794Englishen4795Englishen4796Englishen4797Englishen4798Englishen4799Englishen48Englishen480Englishen4800Englishen4801Englishen4802Englishen4803Englishen4804Englishen4805Englishen4806Englishen4807Englishen4808Englishen4809Englishen481Englishen4810Englishen4811Englishen4812Englishen4813Englishen4814Englishen4815Englishen4816Englishen4817Englishen4818Englishen4819Englishen482Englishen4820Englishen4821Englishen4822Englishen4823Englishen4824Englishen4825Englishen4826Englishen4827Englishen4828Englishen4829Englishen483Englishen4830Englishen4831Englishen4832Englishen4833Englishen4834Englishen4835Englishen4836Englishen4837Englishen4838Englishen4839Englishen484Englishen4840Englishen4841Englishen4842Englishen4843Englishen4844Englishen4845Englishen4846Englishen4847Englishen4848Englishen4849Englishen485Englishen4850Englishen4851Englishen4852Englishen4853Englishen4854Englishen4855Englishen4856Englishen4857Englishen4858Englishen4859Englishen486Englishen4860Englishen4861Englishen4862Englishen4863Englishen4864Englishen4865Englishen4866Englishen4867Englishen4868Englishen4869Englishen487Englishen4870Englishen4871Englishen4872Englishen4873Englishen4874Englishen4875Englishen4876Englishen4877Englishen4878Englishen4879Englishen488Englishen4880Englishen4881Englishen4882Englishen4883Englishen4884Englishen4885Englishen4886Englishen4887Englishen4888Englishen4889Englishen489Englishen4890Englishen4891Englishen4892Englishen4893Englishen4894Englishen4895Englishen4896Englishen4897Englishen4898Englishen4899Englishen49Englishen490Englishen4900Englishen4901Englishen4902Englishen4903Englishen4904Englishen4905Englishen4906Englishen4907Englishen4908Englishen4909Englishen491Englishen4910Englishen4911Englishen4912Englishen4913Englishen4914Englishen4915Englishen4916Englishen4917Englishen4918Englishen4919Englishen492Englishen4920Englishen4921Englishen4922Englishen4923Englishen4924Englishen4925Englishen4926Englishen4927Englishen4928Englishen4929Englishen493Englishen4930Englishen4931Englishen4932Englishen4933Englishen4934Englishen4935Englishen4936Englishen4937Englishen4938Englishen4939Englishen494Englishen4940Englishen4941Englishen4942Englishen4943Englishen4944Englishen4945Englishen4946Englishen4947Englishen4948Englishen4949Englishen495Englishen4950Englishen4951Englishen4952Englishen4953Englishen4954Englishen4955Englishen4956Englishen4957Englishen4958Englishen4959Englishen496Englishen4960Englishen4961Englishen4962Englishen4963Englishen4964Englishen4965Englishen4966Englishen4967Englishen4968Englishen4969Englishen497Englishen4970Englishen4971Englishen4972Englishen4973Englishen4974Englishen4975Englishen4976Englishen4977Englishen4978Englishen4979Englishen498Englishen4980Englishen4981Englishen4982Englishen4983Englishen4984Englishen4985Englishen4986Englishen4987Englishen4988Englishen4989Englishen499Englishen4990Englishen4991Englishen4992Englishen4993Englishen4994Englishen4995Englishen4996Englishen4997Englishen4998Englishen4999Englishen5Englishen50Englishen500Englishen5000Englishen5001Englishen5002Englishen5003Englishen5004Englishen5005Englishen5006Englishen5007Englishen5008Englishen5009Englishen501Englishen5010Englishen5011Englishen5012Englishen5013Englishen5014Englishen5015Englishen5016Englishen5017Englishen5018Englishen5019Englishen502Englishen5020Englishen5021Englishen5022Englishen5023Englishen5024Englishen5025Englishen5026Englishen5027Englishen5028Englishen5029Englishen503Englishen5030Englishen5031Englishen5032Englishen5033Englishen5034Englishen5035Englishen5036Englishen5037Englishen5038Englishen5039Englishen504Englishen5040Englishen5041Englishen5042Englishen5043Englishen5044Englishen5045Englishen5046Englishen5047Englishen5048Englishen5049Englishen505Englishen5050Englishen5051Englishen5052Englishen5053Englishen5054Englishen5055Englishen5056Englishen5057Englishen5058Englishen5059Englishen506Englishen5060Englishen5061Englishen5062Englishen5063Englishen5064Englishen5065Englishen5066Englishen5067Englishen5068Englishen5069Englishen507Englishen5070Englishen5071Englishen5072Englishen5073Englishen5074Englishen5075Englishen5076Englishen5077Englishen5078Englishen5079Englishen508Englishen5080Englishen5081Englishen5082Englishen5083Englishen5084Englishen5085Englishen5086Englishen5087Englishen5088Englishen5089Englishen509Englishen5090Englishen5091Englishen5092Englishen5093Englishen5094Englishen5095Englishen5096Englishen5097Englishen5098Englishen5099Englishen51Englishen510Englishen5100Englishen5101Englishen5102Englishen5103Englishen5104Englishen5105Englishen5106Englishen5107Englishen5108Englishen5109Englishen511Englishen5110Englishen5111Englishen5112Englishen5113Englishen5114Englishen5115Englishen5116Englishen5117Englishen5118Englishen5119Englishen512Englishen5120Englishen5121Englishen5122Englishen5123Englishen5124Englishen5125Englishen5126Englishen5127Englishen5128Englishen5129Englishen513Englishen5130Englishen5131Englishen5132Englishen5133Englishen5134Englishen5135Englishen5136Englishen5137Englishen5138Englishen5139Englishen514Englishen5140Englishen5141Englishen5142Englishen5143Englishen5144Englishen5145Englishen5146Englishen5147Englishen5148Englishen5149Englishen515Englishen5150Englishen5151Englishen5152Englishen5153Englishen5154Englishen5155Englishen5156Englishen5157Englishen5158Englishen5159Englishen516Englishen5160Englishen5161Englishen5162Englishen5163Englishen5164Englishen5165Englishen5166Englishen5167Englishen5168Englishen5169Englishen517Englishen5170Englishen5171Englishen5172Englishen5173Englishen5174Englishen5175Englishen5176Englishen5177Englishen5178Englishen5179Englishen518Englishen5180Englishen5181Englishen5182Englishen5183Englishen5184Englishen5185Englishen5186Englishen5187Englishen5188Englishen5189Englishen519Englishen5190Englishen5191Englishen5192Englishen5193Englishen5194Englishen5195Englishen5196Englishen5197Englishen5198Englishen5199Englishen52Englishen520Englishen5200Englishen5201Englishen5202Englishen5203Englishen5204Englishen5205Englishen5206Englishen5207Englishen5208Englishen5209Englishen521Englishen5210Englishen5211Englishen5212Englishen5213Englishen5214Englishen5215Englishen5216Englishen5217Englishen5218Englishen5219Englishen522Englishen5220Englishen5221Englishen5222Englishen5223Englishen5224Englishen5225Englishen5226Englishen5227Englishen5228Englishen5229Englishen523Englishen5230Englishen5231Englishen5232Englishen5233Englishen5234Englishen5235Englishen5236Englishen5237Englishen5238Englishen5239Englishen524Englishen5240Englishen5241Englishen5242Englishen5243Englishen5244Englishen5245Englishen5246Englishen5247Englishen5248Englishen5249Englishen525Englishen5250Englishen5251Englishen5252Englishen5253Englishen5254Englishen5255Englishen5256Englishen5257Englishen5258Englishen5259Englishen526Englishen5260Englishen5261Englishen5262Englishen5263Englishen5264Englishen5265Englishen5266Englishen5267Englishen5268Englishen5269Englishen527Englishen5270Englishen5271Englishen5272Englishen5273Englishen5274Englishen5275Englishen5276Englishen5277Englishen5278Englishen5279Englishen528Englishen5280Englishen5281Englishen5282Englishen5283Englishen5284Englishen5285Englishen5286Englishen5287Englishen5288Englishen5289Englishen529Englishen5290Englishen5291Englishen5292Englishen5293Englishen5294Englishen5295Englishen5296Englishen5297Englishen5298Englishen5299Englishen53Englishen530Englishen5300Englishen5301Englishen5302Englishen5303Englishen5304Englishen5305Englishen5306Englishen5307Englishen5308Englishen5309Englishen531Englishen5310Englishen5311Englishen5312Englishen5313Englishen5314Englishen5315Englishen5316Englishen5317Englishen5318Englishen5319Englishen532Englishen5320Englishen5321Englishen5322Englishen5323Englishen5324Englishen5325Englishen5326Englishen5327Englishen5328Englishen5329Englishen533Englishen5330Englishen5331Englishen5332Englishen5333Englishen5334Englishen5335Englishen5336Englishen5337Englishen5338Englishen5339Englishen534Englishen5340Englishen5341Englishen5342Englishen5343Englishen5344Englishen5345Englishen5346Englishen5347Englishen5348Englishen5349Englishen535Englishen5350Englishen5351Englishen5352Englishen5353Englishen5354Englishen5355Englishen5356Englishen5357Englishen5358Englishen5359Englishen536Englishen5360Englishen5361Englishen5362Englishen5363Englishen5364Englishen5365Englishen5366Englishen5367Englishen5368Englishen5369Englishen537Englishen5370Englishen5371Englishen5372Englishen5373Englishen5374Englishen5375Englishen5376Englishen5377Englishen5378Englishen5379Englishen538Englishen5380Englishen5381Englishen5382Englishen5383Englishen5384Englishen5385Englishen5386Englishen5387Englishen5388Englishen5389Englishen539Englishen5390Englishen5391Englishen5392Englishen5393Englishen5394Englishen5395Englishen5396Englishen5397Englishen5398Englishen5399Englishen54Englishen540Englishen5400Englishen5401Englishen5402Englishen5403Englishen5404Englishen5405Englishen5406Englishen5407Englishen5408Englishen5409Englishen541Englishen5410Englishen5411Englishen5412Englishen5413Englishen5414Englishen5415Englishen5416Englishen5417Englishen5418Englishen5419Englishen542Englishen5420Englishen5421Englishen5422Englishen5423Englishen5424Englishen5425Englishen5426Englishen5427Englishen5428Englishen5429Englishen543Englishen5430Englishen5431Englishen5432Englishen5433Englishen5434Englishen5435Englishen5436Englishen5437Englishen5438Englishen5439Englishen544Englishen5440Englishen5441Englishen5442Englishen5443Englishen5444Englishen5445Englishen5446Englishen5447Englishen5448Englishen5449Englishen545Englishen5450Englishen5451Englishen5452Englishen5453Englishen5454Englishen5455Englishen5456Englishen5457Englishen5458Englishen5459Englishen546Englishen5460Englishen5461Englishen5462Englishen5463Englishen5464Englishen5465Englishen5466Englishen5467Englishen5468Englishen5469Englishen547Englishen5470Englishen5471Englishen5472Englishen5473Englishen5474Englishen5475Englishen5476Englishen5477Englishen5478Englishen5479Englishen548Englishen5480Englishen5481Englishen5482Englishen5483Englishen5484Englishen5485Englishen5486Englishen5487Englishen5488Englishen5489Englishen549Englishen5490Englishen5491Englishen5492Englishen5493Englishen5494Englishen5495Englishen5496Englishen5497Englishen5498Englishen5499Englishen55Englishen550Englishen5500Englishen5501Englishen5502Englishen5503Englishen5504Englishen5505Englishen5506Englishen5507Englishen5508Englishen5509Englishen551Englishen5510Englishen5511Englishen5512Englishen5513Englishen5514Englishen5515Englishen5516Englishen5517Englishen5518Englishen5519Englishen552Englishen5520Englishen5521Englishen5522Englishen5523Englishen5524Englishen5525Englishen5526Englishen5527Englishen5528Englishen5529Englishen553Englishen5530Englishen5531Englishen5532Englishen5533Englishen5534Englishen5535Englishen5536Englishen5537Englishen5538Englishen5539Englishen554Englishen5540Englishen5541Englishen5542Englishen5543Englishen5544Englishen5545Englishen5546Englishen5547Englishen5548Englishen5549Englishen555Englishen5550Englishen5551Englishen5552Englishen5553Englishen5554Englishen5555Englishen5556Englishen5557Englishen5558Englishen5559Englishen556Englishen5560Englishen5561Englishen5562Englishen5563Englishen5564Englishen5565Englishen5566Englishen5567Englishen5568Englishen5569Englishen557Englishen5570Englishen5571Englishen5572Englishen5573Englishen5574Englishen5575Englishen5576Englishen5577Englishen5578Englishen5579Englishen558Englishen5580Englishen5581Englishen5582Englishen5583Englishen5584Englishen5585Englishen5586Englishen5587Englishen5588Englishen5589Englishen559Englishen5590Englishen5591Englishen5592Englishen5593Englishen5594Englishen5595Englishen5596Englishen5597Englishen5598Englishen5599Englishen56Englishen560Englishen5600Englishen5601Englishen5602Englishen5603Englishen5604Englishen5605Englishen5606Englishen5607Englishen5608Englishen5609Englishen561Englishen5610Englishen5611Englishen5612Englishen5613Englishen5614Englishen5615Englishen5616Englishen5617Englishen5618Englishen5619Englishen562Englishen5620Englishen5621Englishen5622Englishen5623Englishen5624Englishen5625Englishen5626Englishen5627Englishen5628Englishen5629Englishen563Englishen5630Englishen5631Englishen5632Englishen5633Englishen5634Englishen5635Englishen5636Englishen5637Englishen5638Englishen5639Englishen564Englishen5640Englishen5641Englishen5642Englishen5643Englishen5644Englishen5645Englishen5646Englishen5647Englishen5648Englishen5649Englishen565Englishen5650Englishen5651Englishen5652Englishen5653Englishen5654Englishen5655Englishen5656Englishen5657Englishen5658Englishen5659Englishen566Englishen5660Englishen5661Englishen5662Englishen5663Englishen5664Englishen5665Englishen5666Englishen5667Englishen5668Englishen5669Englishen567Englishen5670Englishen5671Englishen5672Englishen5673Englishen5674Englishen5675Englishen5676Englishen5677Englishen5678Englishen5679Englishen568Englishen5680Englishen5681Englishen5682Englishen5683Englishen5684Englishen5685Englishen5686Englishen5687Englishen5688Englishen5689Englishen569Englishen5690Englishen5691Englishen5692Englishen5693Englishen5694Englishen5695Englishen5696Englishen5697Englishen5698Englishen5699Englishen57Englishen570Englishen5700Englishen5701Englishen5702Englishen5703Englishen5704Englishen5705Englishen5706Englishen5707Englishen5708Englishen5709Englishen571Englishen5710Englishen5711Englishen5712Englishen5713Englishen5714Englishen5715Englishen5716Englishen5717Englishen5718Englishen5719Englishen572Englishen5720Englishen5721Englishen5722Englishen5723Englishen5724Englishen5725Englishen5726Englishen5727Englishen5728Englishen5729Englishen573Englishen5730Englishen5731Englishen5732Englishen5733Englishen5734Englishen5735Englishen5736Englishen5737Englishen5738Englishen5739Englishen574Englishen5740Englishen5741Englishen5742Englishen5743Englishen5744Englishen5745Englishen5746Englishen5747Englishen5748Englishen5749Englishen575Englishen5750Englishen5751Englishen5752Englishen5753Englishen5754Englishen5755Englishen5756Englishen5757Englishen5758Englishen5759Englishen576Englishen5760Englishen5761Englishen5762Englishen5763Englishen5764Englishen5765Englishen5766Englishen5767Englishen5768Englishen5769Englishen577Englishen5770Englishen5771Englishen5772Englishen5773Englishen5774Englishen5775Englishen5776Englishen5777Englishen5778Englishen5779Englishen578Englishen5780Englishen5781Englishen5782Englishen5783Englishen5784Englishen5785Englishen5786Englishen5787Englishen5788Englishen5789Englishen579Englishen5790Englishen5791Englishen5792Englishen5793Englishen5794Englishen5795Englishen5796Englishen5797Englishen5798Englishen5799Englishen58Englishen580Englishen5800Englishen5801Englishen5802Englishen5803Englishen5804Englishen5805Englishen5806Englishen5807Englishen5808Englishen5809Englishen581Englishen5810Englishen5811Englishen5812Englishen5813Englishen5814Englishen5815Englishen5816Englishen5817Englishen5818Englishen5819Englishen582Englishen5820Englishen5821Englishen5822Englishen5823Englishen5824Englishen5825Englishen5826Englishen5827Englishen5828Englishen5829Englishen583Englishen5830Englishen5831Englishen5832Englishen5833Englishen5834Englishen5835Englishen5836Englishen5837Englishen5838Englishen5839Englishen584Englishen5840Englishen5841Englishen5842Englishen5843Englishen5844Englishen5845Englishen5846Englishen5847Englishen5848Englishen5849Englishen585Englishen5850Englishen5851Englishen5852Englishen5853Englishen5854Englishen5855Englishen5856Englishen5857Englishen5858Englishen5859Englishen586Englishen5860Englishen5861Englishen5862Englishen5863Englishen5864Englishen5865Englishen5866Englishen5867Englishen5868Englishen5869Englishen587Englishen5870Englishen5871Englishen5872Englishen5873Englishen5874Englishen5875Englishen5876Englishen5877Englishen5878Englishen5879Englishen588Englishen5880Englishen5881Englishen5882Englishen5883Englishen5884Englishen5885Englishen5886Englishen5887Englishen5888Englishen5889Englishen589Englishen5890Englishen5891Englishen5892Englishen5893Englishen5894Englishen5895Englishen5896Englishen5897Englishen5898Englishen5899Englishen59Englishen590Englishen5900Englishen5901Englishen5902Englishen5903Englishen5904Englishen5905Englishen5906Englishen5907Englishen5908Englishen5909Englishen591Englishen5910Englishen5911Englishen5912Englishen5913Englishen5914Englishen5915Englishen5916Englishen5917Englishen5918Englishen5919Englishen592Englishen5920Englishen5921Englishen5922Englishen5923Englishen5924Englishen5925Englishen5926Englishen5927Englishen5928Englishen5929Englishen593Englishen5930Englishen5931Englishen5932Englishen5933Englishen5934Englishen5935Englishen5936Englishen5937Englishen5938Englishen5939Englishen594Englishen5940Englishen5941Englishen5942Englishen5943Englishen5944Englishen5945Englishen5946Englishen5947Englishen5948Englishen5949Englishen595Englishen5950Englishen5951Englishen5952Englishen5953Englishen5954Englishen5955Englishen5956Englishen5957Englishen5958Englishen5959Englishen596Englishen5960Englishen5961Englishen5962Englishen5963Englishen5964Englishen5965Englishen5966Englishen5967Englishen5968Englishen5969Englishen597Englishen5970Englishen5971Englishen5972Englishen5973Englishen5974Englishen5975Englishen5976Englishen5977Englishen5978Englishen5979Englishen598Englishen5980Englishen5981Englishen5982Englishen5983Englishen5984Englishen5985Englishen5986Englishen5987Englishen5988Englishen5989Englishen599Englishen5990Englishen5991Englishen5992Englishen5993Englishen5994Englishen5995Englishen5996Englishen5997Englishen5998Englishen5999Englishen6Englishen60Englishen600Englishen6000Englishen6001Englishen6002Englishen6003Englishen6004Englishen6005Englishen6006Englishen6007Englishen6008Englishen6009Englishen601Englishen6010Englishen6011Englishen6012Englishen6013Englishen6014Englishen6015Englishen6016Englishen6017Englishen6018Englishen6019Englishen602Englishen6020Englishen6021Englishen6022Englishen6023Englishen6024Englishen6025Englishen6026Englishen6027Englishen6028Englishen6029Englishen603Englishen6030Englishen6031Englishen6032Englishen6033Englishen6034Englishen6035Englishen6036Englishen6037Englishen6038Englishen6039Englishen604Englishen6040Englishen6041Englishen6042Englishen6043Englishen6044Englishen6045Englishen6046Englishen6047Englishen6048Englishen6049Englishen605Englishen6050Englishen6051Englishen6052Englishen6053Englishen6054Englishen6055Englishen6056Englishen6057Englishen6058Englishen6059Englishen606Englishen6060Englishen6061Englishen6062Englishen6063Englishen6064Englishen6065Englishen6066Englishen6067Englishen6068Englishen6069Englishen607Englishen6070Englishen6071Englishen6072Englishen6073Englishen6074Englishen6075Englishen6076Englishen6077Englishen6078Englishen6079Englishen608Englishen6080Englishen6081Englishen6082Englishen6083Englishen6084Englishen6085Englishen6086Englishen6087Englishen6088Englishen6089Englishen609Englishen6090Englishen6091Englishen6092Englishen6093Englishen6094Englishen6095Englishen6096Englishen6097Englishen6098Englishen6099Englishen61Englishen610Englishen6100Englishen6101Englishen6102Englishen6103Englishen6104Englishen6105Englishen6106Englishen6107Englishen6108Englishen6109Englishen611Englishen6110Englishen6111Englishen6112Englishen6113Englishen6114Englishen6115Englishen6116Englishen6117Englishen6118Englishen6119Englishen612Englishen6120Englishen6121Englishen6122Englishen6123Englishen6124Englishen6125Englishen6126Englishen6127Englishen6128Englishen6129Englishen613Englishen6130Englishen6131Englishen6132Englishen6133Englishen6134Englishen6135Englishen6136Englishen6137Englishen6138Englishen6139Englishen614Englishen6140Englishen6141Englishen6142Englishen6143Englishen6144Englishen6145Englishen6146Englishen6147Englishen6148Englishen6149Englishen615Englishen6150Englishen6151Englishen6152Englishen6153Englishen6154Englishen6155Englishen6156Englishen6157Englishen6158Englishen6159Englishen616Englishen6160Englishen6161Englishen6162Englishen6163Englishen6164Englishen6165Englishen6166Englishen6167Englishen6168Englishen6169Englishen617Englishen6170Englishen6171Englishen6172Englishen6173Englishen6174Englishen6175Englishen6176Englishen6177Englishen6178Englishen6179Englishen618Englishen6180Englishen6181Englishen6182Englishen6183Englishen6184Englishen6185Englishen6186Englishen6187Englishen6188Englishen6189Englishen619Englishen6190Englishen6191Englishen6192Englishen6193Englishen6194Englishen6195Englishen6196Englishen6197Englishen6198Englishen6199Englishen62Englishen620Englishen6200Englishen6201Englishen6202Englishen6203Englishen6204Englishen6205Englishen6206Englishen6207Englishen6208Englishen6209Englishen621Englishen6210Englishen6211Englishen6212Englishen6213Englishen6214Englishen6215Englishen6216Englishen6217Englishen6218Englishen6219Englishen622Englishen6220Englishen6221Englishen6222Englishen6223Englishen6224Englishen6225Englishen6226Englishen6227Englishen6228Englishen6229Englishen623Englishen6230Englishen6231Englishen6232Englishen6233Englishen6234Englishen6235Englishen6236Englishen6237Englishen6238Englishen6239Englishen624Englishen6240Englishen6241Englishen6242Englishen6243Englishen6244Englishen6245Englishen6246Englishen6247Englishen6248Englishen6249Englishen625Englishen6250Englishen6251Englishen6252Englishen6253Englishen6254Englishen6255Englishen6256Englishen6257Englishen6258Englishen6259Englishen626Englishen6260Englishen6261Englishen6262Englishen6263Englishen6264Englishen6265Englishen6266Englishen6267Englishen6268Englishen6269Englishen627Englishen6270Englishen6271Englishen6272Englishen6273Englishen6274Englishen6275Englishen6276Englishen6277Englishen6278Englishen6279Englishen628Englishen6280Englishen6281Englishen6282Englishen6283Englishen6284Englishen6285Englishen6286Englishen6287Englishen6288Englishen6289Englishen629Englishen6290Englishen6291Englishen6292Englishen6293Englishen6294Englishen6295Englishen6296Englishen6297Englishen6298Englishen6299Englishen63Englishen630Englishen6300Englishen6301Englishen6302Englishen6303Englishen6304Englishen6305Englishen6306Englishen6307Englishen6308Englishen6309Englishen631Englishen6310Englishen6311Englishen6312Englishen6313Englishen6314Englishen6315Englishen6316Englishen6317Englishen6318Englishen6319Englishen632Englishen6320Englishen6321Englishen6322Englishen6323Englishen6324Englishen6325Englishen6326Englishen6327Englishen6328Englishen6329Englishen633Englishen6330Englishen6331Englishen6332Englishen6333Englishen6334Englishen6335Englishen6336Englishen6337Englishen6338Englishen6339Englishen634Englishen6340Englishen6341Englishen6342Englishen6343Englishen6344Englishen6345Englishen6346Englishen6347Englishen6348Englishen6349Englishen635Englishen6350Englishen6351Englishen6352Englishen6353Englishen6354Englishen6355Englishen6356Englishen6357Englishen6358Englishen6359Englishen636Englishen6360Englishen6361Englishen6362Englishen6363Englishen6364Englishen6365Englishen6366Englishen6367Englishen6368Englishen6369Englishen637Englishen6370Englishen6371Englishen6372Englishen6373Englishen6374Englishen6375Englishen6376Englishen6377Englishen6378Englishen6379Englishen638Englishen6380Englishen6381Englishen6382Englishen6383Englishen6384Englishen6385Englishen6386Englishen6387Englishen6388Englishen6389Englishen639Englishen6390Englishen6391Englishen6392Englishen6393Englishen6394Englishen6395Englishen6396Englishen6397Englishen6398Englishen6399Englishen64Englishen640Englishen6400Englishen6401Englishen6402Englishen6403Englishen6404Englishen6405Englishen6406Englishen6407Englishen6408Englishen6409Englishen641Englishen6410Englishen6411Englishen6412Englishen6413Englishen6414Englishen6415Englishen6416Englishen6417Englishen6418Englishen6419Englishen642Englishen6420Englishen6421Englishen6422Englishen6423Englishen6424Englishen6425Englishen6426Englishen6427Englishen6428Englishen6429Englishen643Englishen6430Englishen6431Englishen6432Englishen6433Englishen6434Englishen6435Englishen6436Englishen6437Englishen6438Englishen6439Englishen644Englishen6440Englishen6441Englishen6442Englishen6443Englishen6444Englishen6445Englishen6446Englishen6447Englishen6448Englishen6449Englishen645Englishen6450Englishen6451Englishen6452Englishen6453Englishen6454Englishen6455Englishen6456Englishen6457Englishen6458Englishen6459Englishen646Englishen6460Englishen6461Englishen6462Englishen6463Englishen6464Englishen6465Englishen6466Englishen6467Englishen6468Englishen6469Englishen647Englishen6470Englishen6471Englishen6472Englishen6473Englishen6474Englishen6475Englishen6476Englishen6477Englishen6478Englishen6479Englishen648Englishen6480Englishen6481Englishen6482Englishen6483Englishen6484Englishen6485Englishen6486Englishen6487Englishen6488Englishen6489Englishen649Englishen6490Englishen6491Englishen6492Englishen6493Englishen6494Englishen6495Englishen6496Englishen6497Englishen6498Englishen6499Englishen65Englishen650Englishen6500Englishen6501Englishen6502Englishen6503Englishen6504Englishen6505Englishen6506Englishen6507Englishen6508Englishen6509Englishen651Englishen6510Englishen6511Englishen6512Englishen6513Englishen6514Englishen6515Englishen6516Englishen6517Englishen6518Englishen6519Englishen652Englishen6520Englishen6521Englishen6522Englishen6523Englishen6524Englishen6525Englishen6526Englishen6527Englishen6528Englishen6529Englishen653Englishen6530Englishen6531Englishen6532Englishen6533Englishen6534Englishen6535Englishen6536Englishen6537Englishen6538Englishen6539Englishen654Englishen6540Englishen6541Englishen6542Englishen6543Englishen6544Englishen6545Englishen6546Englishen6547Englishen6548Englishen6549Englishen655Englishen6550Englishen6551Englishen6552Englishen6553Englishen6554Englishen6555Englishen6556Englishen6557Englishen6558Englishen6559Englishen656Englishen6560Englishen6561Englishen6562Englishen6563Englishen6564Englishen6565Englishen6566Englishen6567Englishen6568Englishen6569Englishen657Englishen6570Englishen6571Englishen6572Englishen6573Englishen6574Englishen6575Englishen6576Englishen6577Englishen6578Englishen6579Englishen658Englishen6580Englishen6581Englishen6582Englishen6583Englishen6584Englishen6585Englishen6586Englishen6587Englishen6588Englishen6589Englishen659Englishen6590Englishen6591Englishen6592Englishen6593Englishen6594Englishen6595Englishen6596Englishen6597Englishen6598Englishen6599Englishen66Englishen660Englishen6600Englishen6601Englishen6602Englishen6603Englishen6604Englishen6605Englishen6606Englishen6607Englishen6608Englishen6609Englishen661Englishen6610Englishen6611Englishen6612Englishen6613Englishen6614Englishen6615Englishen6616Englishen6617Englishen6618Englishen6619Englishen662Englishen6620Englishen6621Englishen6622Englishen6623Englishen6624Englishen6625Englishen6626Englishen6627Englishen6628Englishen6629Englishen663Englishen6630Englishen6631Englishen6632Englishen6633Englishen6634Englishen6635Englishen6636Englishen6637Englishen6638Englishen6639Englishen664Englishen6640Englishen6641Englishen6642Englishen6643Englishen6644Englishen6645Englishen6646Englishen6647Englishen6648Englishen6649Englishen665Englishen6650Englishen6651Englishen6652Englishen6653Englishen6654Englishen6655Englishen6656Englishen6657Englishen6658Englishen6659Englishen666Englishen6660Englishen6661Englishen6662Englishen6663Englishen6664Englishen6665Englishen6666Englishen6667Englishen6668Englishen6669Englishen667Englishen6670Englishen6671Englishen6672Englishen6673Englishen6674Englishen6675Englishen6676Englishen6677Englishen6678Englishen6679Englishen668Englishen6680Englishen6681Englishen6682Englishen6683Englishen6684Englishen6685Englishen6686Englishen6687Englishen6688Englishen6689Englishen669Englishen6690Englishen6691Englishen6692Englishen6693Englishen6694Englishen6695Englishen6696Englishen6697Englishen6698Englishen6699Englishen67Englishen670Englishen6700Englishen6701Englishen6702Englishen6703Englishen6704Englishen6705Englishen6706Englishen6707Englishen6708Englishen6709Englishen671Englishen6710Englishen6711Englishen6712Englishen6713Englishen6714Englishen6715Englishen6716Englishen6717Englishen6718Englishen6719Englishen672Englishen6720Englishen6721Englishen6722Englishen6723Englishen6724Englishen6725Englishen6726Englishen6727Englishen6728Englishen6729Englishen673Englishen6730Englishen6731Englishen6732Englishen6733Englishen6734Englishen6735Englishen6736Englishen6737Englishen6738Englishen6739Englishen674Englishen6740Englishen6741Englishen6742Englishen6743Englishen6744Englishen6745Englishen6746Englishen6747Englishen6748Englishen6749Englishen675Englishen6750Englishen6751Englishen6752Englishen6753Englishen6754Englishen6755Englishen6756Englishen6757Englishen6758Englishen6759Englishen676Englishen6760Englishen6761Englishen6762Englishen6763Englishen6764Englishen6765Englishen6766Englishen6767Englishen6768Englishen6769Englishen677Englishen6770Englishen6771Englishen6772Englishen6773Englishen6774Englishen6775Englishen6776Englishen6777Englishen6778Englishen6779Englishen678Englishen6780Englishen6781Englishen6782Englishen6783Englishen6784Englishen6785Englishen6786Englishen6787Englishen6788Englishen6789Englishen679Englishen6790Englishen6791Englishen6792Englishen6793Englishen6794Englishen6795Englishen6796Englishen6797Englishen6798Englishen6799Englishen68Englishen680Englishen6800Englishen6801Englishen6802Englishen6803Englishen6804Englishen6805Englishen6806Englishen6807Englishen6808Englishen6809Englishen681Englishen6810Englishen6811Englishen6812Englishen6813Englishen6814Englishen6815Englishen6816Englishen6817Englishen6818Englishen6819Englishen682Englishen6820Englishen6821Englishen6822Englishen6823Englishen6824Englishen6825Englishen6826Englishen6827Englishen6828Englishen6829Englishen683Englishen6830Englishen6831Englishen6832Englishen6833Englishen6834Englishen6835Englishen6836Englishen6837Englishen6838Englishen6839Englishen684Englishen6840Englishen6841Englishen6842Englishen6843Englishen6844Englishen6845Englishen6846Englishen6847Englishen6848Englishen6849Englishen685Englishen6850Englishen6851Englishen6852Englishen6853Englishen6854Englishen6855Englishen6856Englishen6857Englishen6858Englishen6859Englishen686Englishen6860Englishen6861Englishen6862Englishen6863Englishen6864Englishen6865Englishen6866Englishen6867Englishen6868Englishen6869Englishen687Englishen6870Englishen6871Englishen6872Englishen6873Englishen6874Englishen6875Englishen6876Englishen6877Englishen6878Englishen6879Englishen688Englishen6880Englishen6881Englishen6882Englishen6883Englishen6884Englishen6885Englishen6886Englishen6887Englishen6888Englishen6889Englishen689Englishen6890Englishen6891Englishen6892Englishen6893Englishen6894Englishen6895Englishen6896Englishen6897Englishen6898Englishen6899Englishen69Englishen690Englishen6900Englishen6901Englishen6902Englishen6903Englishen6904Englishen6905Englishen6906Englishen6907Englishen6908Englishen6909Englishen691Englishen6910Englishen6911Englishen6912Englishen6913Englishen6914Englishen6915Englishen6916Englishen6917Englishen6918Englishen6919Englishen692Englishen6920Englishen6921Englishen6922Englishen6923Englishen6924Englishen6925Englishen6926Englishen6927Englishen6928Englishen6929Englishen693Englishen6930Englishen6931Englishen6932Englishen6933Englishen6934Englishen6935Englishen6936Englishen6937Englishen6938Englishen6939Englishen694Englishen6940Englishen6941Englishen6942Englishen6943Englishen6944Englishen6945Englishen6946Englishen6947Englishen6948Englishen6949Englishen695Englishen6950Englishen6951Englishen6952Englishen6953Englishen6954Englishen6955Englishen6956Englishen6957Englishen6958Englishen6959Englishen696Englishen6960Englishen6961Englishen6962Englishen6963Englishen6964Englishen6965Englishen6966Englishen6967Englishen6968Englishen6969Englishen697Englishen6970Englishen6971Englishen6972Englishen6973Englishen6974Englishen6975Englishen6976Englishen6977Englishen6978Englishen6979Englishen698Englishen6980Englishen6981Englishen6982Englishen6983Englishen6984Englishen6985Englishen6986Englishen6987Englishen6988Englishen6989Englishen699Englishen6990Englishen6991Englishen6992Englishen6993Englishen6994Englishen6995Englishen6996Englishen6997Englishen6998Englishen6999Englishen7Englishen70Englishen700Englishen7000Englishen7001Englishen7002Englishen7003Englishen7004Englishen7005Englishen7006Englishen7007Englishen7008Englishen7009Englishen701Englishen7010Englishen7011Englishen7012Englishen7013Englishen7014Englishen7015Englishen7016Englishen7017Englishen7018Englishen7019Englishen702Englishen7020Englishen7021Englishen7022Englishen7023Englishen7024Englishen7025Englishen7026Englishen7027Englishen7028Englishen7029Englishen703Englishen7030Englishen7031Englishen7032Englishen7033Englishen7034Englishen7035Englishen7036Englishen7037Englishen7038Englishen7039Englishen704Englishen7040Englishen7041Englishen7042Englishen7043Englishen7044Englishen7045Englishen7046Englishen7047Englishen7048Englishen7049Englishen705Englishen7050Englishen7051Englishen7052Englishen7053Englishen7054Englishen7055Englishen7056Englishen7057Englishen7058Englishen7059Englishen706Englishen7060Englishen7061Englishen7062Englishen7063Englishen7064Englishen7065Englishen7066Englishen7067Englishen7068Englishen7069Englishen707Englishen7070Englishen7071Englishen7072Englishen7073Englishen7074Englishen7075Englishen7076Englishen7077Englishen7078Englishen7079Englishen708Englishen7080Englishen7081Englishen7082Englishen7083Englishen7084Englishen7085Englishen7086Englishen7087Englishen7088Englishen7089Englishen709Englishen7090Englishen7091Englishen7092Englishen7093Englishen7094Englishen7095Englishen7096Englishen7097Englishen7098Englishen7099Englishen71Englishen710Englishen7100Englishen7101Englishen7102Englishen7103Englishen7104Englishen7105Englishen7106Englishen7107Englishen7108Englishen7109Englishen711Englishen7110Englishen7111Englishen7112Englishen7113Englishen7114Englishen7115Englishen7116Englishen7117Englishen7118Englishen7119Englishen712Englishen7120Englishen7121Englishen7122Englishen7123Englishen7124Englishen7125Englishen7126Englishen7127Englishen7128Englishen7129Englishen713Englishen7130Englishen7131Englishen7132Englishen7133Englishen7134Englishen7135Englishen7136Englishen7137Englishen7138Englishen7139Englishen714Englishen7140Englishen7141Englishen7142Englishen7143Englishen7144Englishen7145Englishen7146Englishen7147Englishen7148Englishen7149Englishen715Englishen7150Englishen7151Englishen7152Englishen7153Englishen7154Englishen7155Englishen7156Englishen7157Englishen7158Englishen7159Englishen716Englishen7160Englishen7161Englishen7162Englishen7163Englishen7164Englishen7165Englishen7166Englishen7167Englishen7168Englishen7169Englishen717Englishen7170Englishen7171Englishen7172Englishen7173Englishen7174Englishen7175Englishen7176Englishen7177Englishen7178Englishen7179Englishen718Englishen7180Englishen7181Englishen7182Englishen7183Englishen7184Englishen7185Englishen7186Englishen7187Englishen7188Englishen7189Englishen719Englishen7190Englishen7191Englishen7192Englishen7193Englishen7194Englishen7195Englishen7196Englishen7197Englishen7198Englishen7199Englishen72Englishen720Englishen7200Englishen7201Englishen7202Englishen7203Englishen7204Englishen7205Englishen7206Englishen7207Englishen7208Englishen7209Englishen721Englishen7210Englishen7211Englishen7212Englishen7213Englishen7214Englishen7215Englishen7216Englishen7217Englishen7218Englishen7219Englishen722Englishen7220Englishen7221Englishen7222Englishen7223Englishen7224Englishen7225Englishen7226Englishen7227Englishen7228Englishen7229Englishen723Englishen7230Englishen7231Englishen7232Englishen7233Englishen7234Englishen7235Englishen7236Englishen7237Englishen7238Englishen7239Englishen724Englishen7240Englishen7241Englishen7242Englishen7243Englishen7244Englishen7245Englishen7246Englishen7247Englishen7248Englishen7249Englishen725Englishen7250Englishen7251Englishen7252Englishen7253Englishen7254Englishen7255Englishen7256Englishen7257Englishen7258Englishen7259Englishen726Englishen7260Englishen7261Englishen7262Englishen7263Englishen7264Englishen7265Englishen7266Englishen7267Englishen7268Englishen7269Englishen727Englishen7270Englishen7271Englishen7272Englishen7273Englishen7274Englishen7275Englishen7276Englishen7277Englishen7278Englishen7279Englishen728Englishen7280Englishen7281Englishen7282Englishen7283Englishen7284Englishen7285Englishen7286Englishen7287Englishen7288Englishen7289Englishen729Englishen7290Englishen7291Englishen7292Englishen7293Englishen7294Englishen7295Englishen7296Englishen7297Englishen7298Englishen7299Englishen73Englishen730Englishen7300Englishen7301Englishen7302Englishen7303Englishen7304Englishen7305Englishen7306Englishen7307Englishen7308Englishen7309Englishen731Englishen7310Englishen7311Englishen7312Englishen7313Englishen7314Englishen7315Englishen7316Englishen7317Englishen7318Englishen7319Englishen732Englishen7320Englishen7321Englishen7322Englishen7323Englishen7324Englishen7325Englishen7326Englishen7327Englishen7328Englishen7329Englishen733Englishen7330Englishen7331Englishen7332Englishen7333Englishen7334Englishen7335Englishen7336Englishen7337Englishen7338Englishen7339Englishen734Englishen7340Englishen7341Englishen7342Englishen7343Englishen7344Englishen7345Englishen7346Englishen7347Englishen7348Englishen7349Englishen735Englishen7350Englishen7351Englishen7352Englishen7353Englishen7354Englishen7355Englishen7356Englishen7357Englishen7358Englishen7359Englishen736Englishen7360Englishen7361Englishen7362Englishen7363Englishen7364Englishen7365Englishen7366Englishen7367Englishen7368Englishen7369Englishen737Englishen7370Englishen7371Englishen7372Englishen7373Englishen7374Englishen7375Englishen7376Englishen7377Englishen7378Englishen7379Englishen738Englishen7380Englishen7381Englishen7382Englishen7383Englishen7384Englishen7385Englishen7386Englishen7387Englishen7388Englishen7389Englishen739Englishen7390Englishen7391Englishen7392Englishen7393Englishen7394Englishen7395Englishen7396Englishen7397Englishen7398Englishen7399Englishen74Englishen740Englishen7400Englishen7401Englishen7402Englishen7403Englishen7404Englishen7405Englishen7406Englishen7407Englishen7408Englishen7409Englishen741Englishen7410Englishen7411Englishen7412Englishen7413Englishen7414Englishen7415Englishen7416Englishen7417Englishen7418Englishen7419Englishen742Englishen7420Englishen7421Englishen7422Englishen7423Englishen7424Englishen7425Englishen7426Englishen7427Englishen7428Englishen7429Englishen743Englishen7430Englishen7431Englishen7432Englishen7433Englishen7434Englishen7435Englishen7436Englishen7437Englishen7438Englishen7439Englishen744Englishen7440Englishen7441Englishen7442Englishen7443Englishen7444Englishen7445Englishen7446Englishen7447Englishen7448Englishen7449Englishen745Englishen7450Englishen7451Englishen7452Englishen7453Englishen7454Englishen7455Englishen7456Englishen7457Englishen7458Englishen7459Englishen746Englishen7460Englishen7461Englishen7462Englishen7463Englishen7464Englishen7465Englishen7466Englishen7467Englishen7468Englishen7469Englishen747Englishen7470Englishen7471Englishen7472Englishen7473Englishen7474Englishen7475Englishen7476Englishen7477Englishen7478Englishen7479Englishen748Englishen7480Englishen7481Englishen7482Englishen7483Englishen7484Englishen7485Englishen7486Englishen7487Englishen7488Englishen7489Englishen749Englishen7490Englishen7491Englishen7492Englishen7493Englishen7494Englishen7495Englishen7496Englishen7497Englishen7498Englishen7499Englishen75Englishen750Englishen7500Englishen7501Englishen7502Englishen7503Englishen7504Englishen7505Englishen7506Englishen7507Englishen7508Englishen7509Englishen751Englishen7510Englishen7511Englishen7512Englishen7513Englishen7514Englishen7515Englishen7516Englishen7517Englishen7518Englishen7519Englishen752Englishen7520Englishen7521Englishen7522Englishen7523Englishen7524Englishen7525Englishen7526Englishen7527Englishen7528Englishen7529Englishen753Englishen7530Englishen7531Englishen7532Englishen7533Englishen7534Englishen7535Englishen7536Englishen7537Englishen7538Englishen7539Englishen754Englishen7540Englishen7541Englishen7542Englishen7543Englishen7544Englishen7545Englishen7546Englishen7547Englishen7548Englishen7549Englishen755Englishen7550Englishen7551Englishen7552Englishen7553Englishen7554Englishen7555Englishen7556Englishen7557Englishen7558Englishen7559Englishen756Englishen7560Englishen7561Englishen7562Englishen7563Englishen7564Englishen7565Englishen7566Englishen7567Englishen7568Englishen7569Englishen757Englishen7570Englishen7571Englishen7572Englishen7573Englishen7574Englishen7575Englishen7576Englishen7577Englishen7578Englishen7579Englishen758Englishen7580Englishen7581Englishen7582Englishen7583Englishen7584Englishen7585Englishen7586Englishen7587Englishen7588Englishen7589Englishen759Englishen7590Englishen7591Englishen7592Englishen7593Englishen7594Englishen7595Englishen7596Englishen7597Englishen7598Englishen7599Englishen76Englishen760Englishen7600Englishen7601Englishen7602Englishen7603Englishen7604Englishen7605Englishen7606Englishen7607Englishen7608Englishen7609Englishen761Englishen7610Englishen7611Englishen7612Englishen7613Englishen7614Englishen7615Englishen7616Englishen7617Englishen7618Englishen7619Englishen762Englishen7620Englishen7621Englishen7622Englishen7623Englishen7624Englishen7625Englishen7626Englishen7627Englishen7628Englishen7629Englishen763Englishen7630Englishen7631Englishen7632Englishen7633Englishen7634Englishen7635Englishen7636Englishen7637Englishen7638Englishen7639Englishen764Englishen7640Englishen7641Englishen7642Englishen7643Englishen7644Englishen7645Englishen7646Englishen7647Englishen7648Englishen7649Englishen765Englishen7650Englishen7651Englishen7652Englishen7653Englishen7654Englishen7655Englishen7656Englishen7657Englishen7658Englishen7659Englishen766Englishen7660Englishen7661Englishen7662Englishen7663Englishen7664Englishen7665Englishen7666Englishen7667Englishen7668Englishen7669Englishen767Englishen7670Englishen7671Englishen7672Englishen7673Englishen7674Englishen7675Englishen7676Englishen7677Englishen7678Englishen7679Englishen768Englishen7680Englishen7681Englishen7682Englishen7683Englishen7684Englishen7685Englishen7686Englishen7687Englishen7688Englishen7689Englishen769Englishen7690Englishen7691Englishen7692Englishen7693Englishen7694Englishen7695Englishen7696Englishen7697Englishen7698Englishen7699Englishen77Englishen770Englishen7700Englishen7701Englishen7702Englishen7703Englishen7704Englishen7705Englishen7706Englishen7707Englishen7708Englishen7709Englishen771Englishen7710Englishen7711Englishen7712Englishen7713Englishen7714Englishen7715Englishen7716Englishen7717Englishen7718Englishen7719Englishen772Englishen7720Englishen7721Englishen7722Englishen7723Englishen7724Englishen7725Englishen7726Englishen7727Englishen7728Englishen7729Englishen773Englishen7730Englishen7731Englishen7732Englishen7733Englishen7734Englishen7735Englishen7736Englishen7737Englishen7738Englishen7739Englishen774Englishen7740Englishen7741Englishen7742Englishen7743Englishen7744Englishen7745Englishen7746Englishen7747Englishen7748Englishen7749Englishen775Englishen7750Englishen7751Englishen7752Englishen7753Englishen7754Englishen7755Englishen7756Englishen7757Englishen7758Englishen7759Englishen776Englishen7760Englishen7761Englishen7762Englishen7763Englishen7764Englishen7765Englishen7766Englishen7767Englishen7768Englishen7769Englishen777Englishen7770Englishen7771Englishen7772Englishen7773Englishen7774Englishen7775Englishen7776Englishen7777Englishen7778Englishen7779Englishen778Englishen7780Englishen7781Englishen7782Englishen7783Englishen7784Englishen7785Englishen7786Englishen7787Englishen7788Englishen7789Englishen779Englishen7790Englishen7791Englishen7792Englishen7793Englishen7794Englishen7795Englishen7796Englishen7797Englishen7798Englishen7799Englishen78Englishen780Englishen7800Englishen7801Englishen7802Englishen7803Englishen7804Englishen7805Englishen7806Englishen7807Englishen7808Englishen7809Englishen781Englishen7810Englishen7811Englishen7812Englishen7813Englishen7814Englishen7815Englishen7816Englishen7817Englishen7818Englishen7819Englishen782Englishen7820Englishen7821Englishen7822Englishen7823Englishen7824Englishen7825Englishen7826Englishen7827Englishen7828Englishen7829Englishen783Englishen7830Englishen7831Englishen7832Englishen7833Englishen7834Englishen7835Englishen7836Englishen7837Englishen7838Englishen7839Englishen784Englishen7840Englishen7841Englishen7842Englishen7843Englishen7844Englishen7845Englishen7846Englishen7847Englishen7848Englishen7849Englishen785Englishen7850Englishen7851Englishen7852Englishen7853Englishen7854Englishen7855Englishen7856Englishen7857Englishen7858Englishen7859Englishen786Englishen7860Englishen7861Englishen7862Englishen7863Englishen7864Englishen7865Englishen7866Englishen7867Englishen7868Englishen7869Englishen787Englishen7870Englishen7871Englishen7872Englishen7873Englishen7874Englishen7875Englishen7876Englishen7877Englishen7878Englishen7879Englishen788Englishen7880Englishen7881Englishen7882Englishen7883Englishen7884Englishen7885Englishen7886Englishen7887Englishen7888Englishen7889Englishen789Englishen7890Englishen7891Englishen7892Englishen7893Englishen7894Englishen7895Englishen7896Englishen7897Englishen7898Englishen7899Englishen79Englishen790Englishen7900Englishen7901Englishen7902Englishen7903Englishen7904Englishen7905Englishen7906Englishen7907Englishen7908Englishen7909Englishen791Englishen7910Englishen7911Englishen7912Englishen7913Englishen7914Englishen7915Englishen7916Englishen7917Englishen7918Englishen7919Englishen792Englishen7920Englishen7921Englishen7922Englishen7923Englishen7924Englishen7925Englishen7926Englishen7927Englishen7928Englishen7929Englishen793Englishen7930Englishen7931Englishen7932Englishen7933Englishen7934Englishen7935Englishen7936Englishen7937Englishen7938Englishen7939Englishen794Englishen7940Englishen7941Englishen7942Englishen7943Englishen7944Englishen7945Englishen7946Englishen7947Englishen7948Englishen7949Englishen795Englishen7950Englishen7951Englishen7952Englishen7953Englishen7954Englishen7955Englishen7956Englishen7957Englishen7958Englishen7959Englishen796Englishen7960Englishen7961Englishen7962Englishen7963Englishen7964Englishen7965Englishen7966Englishen7967Englishen7968Englishen7969Englishen797Englishen7970Englishen7971Englishen7972Englishen7973Englishen7974Englishen7975Englishen7976Englishen7977Englishen7978Englishen7979Englishen798Englishen7980Englishen7981Englishen7982Englishen7983Englishen7984Englishen7985Englishen7986Englishen7987Englishen7988Englishen7989Englishen799Englishen7990Englishen7991Englishen7992Englishen7993Englishen7994Englishen7995Englishen7996Englishen7997Englishen7998Englishen7999Englishen8Englishen80Englishen800Englishen8000Englishen8001Englishen8002Englishen8003Englishen8004Englishen8005Englishen8006Englishen8007Englishen8008Englishen8009Englishen801Englishen8010Englishen8011Englishen8012Englishen8013Englishen8014Englishen8015Englishen8016Englishen8017Englishen8018Englishen8019Englishen802Englishen8020Englishen8021Englishen8022Englishen8023Englishen8024Englishen8025Englishen8026Englishen8027Englishen8028Englishen8029Englishen803Englishen8030Englishen8031Englishen8032Englishen8033Englishen8034Englishen8035Englishen8036Englishen8037Englishen8038Englishen8039Englishen804Englishen8040Englishen8041Englishen8042Englishen8043Englishen8044Englishen8045Englishen8046Englishen8047Englishen8048Englishen8049Englishen805Englishen8050Englishen8051Englishen8052Englishen8053Englishen8054Englishen8055Englishen8056Englishen8057Englishen8058Englishen8059Englishen806Englishen8060Englishen8061Englishen8062Englishen8063Englishen8064Englishen8065Englishen8066Englishen8067Englishen8068Englishen8069Englishen807Englishen8070Englishen8071Englishen8072Englishen8073Englishen8074Englishen8075Englishen8076Englishen8077Englishen8078Englishen8079Englishen808Englishen8080Englishen8081Englishen8082Englishen8083Englishen8084Englishen8085Englishen8086Englishen8087Englishen8088Englishen8089Englishen809Englishen8090Englishen8091Englishen8092Englishen8093Englishen8094Englishen8095Englishen8096Englishen8097Englishen8098Englishen8099Englishen81Englishen810Englishen8100Englishen8101Englishen8102Englishen8103Englishen8104Englishen8105Englishen8106Englishen8107Englishen8108Englishen8109Englishen811Englishen8110Englishen8111Englishen8112Englishen8113Englishen8114Englishen8115Englishen8116Englishen8117Englishen8118Englishen8119Englishen812Englishen8120Englishen8121Englishen8122Englishen8123Englishen8124Englishen8125Englishen8126Englishen8127Englishen8128Englishen8129Englishen813Englishen8130Englishen8131Englishen8132Englishen8133Englishen8134Englishen8135Englishen8136Englishen8137Englishen8138Englishen8139Englishen814Englishen8140Englishen8141Englishen8142Englishen8143Englishen8144Englishen8145Englishen8146Englishen8147Englishen8148Englishen8149Englishen815Englishen8150Englishen8151Englishen8152Englishen8153Englishen8154Englishen8155Englishen8156Englishen8157Englishen8158Englishen8159Englishen816Englishen8160Englishen8161Englishen8162Englishen8163Englishen8164Englishen8165Englishen8166Englishen8167Englishen8168Englishen8169Englishen817Englishen8170Englishen8171Englishen8172Englishen8173Englishen8174Englishen8175Englishen8176Englishen8177Englishen8178Englishen8179Englishen818Englishen8180Englishen8181Englishen8182Englishen8183Englishen8184Englishen8185Englishen8186Englishen8187Englishen8188Englishen8189Englishen819Englishen8190Englishen8191Englishen82Englishen820Englishen821Englishen822Englishen823Englishen824Englishen825Englishen826Englishen827Englishen828Englishen829Englishen83Englishen830Englishen831Englishen832Englishen833Englishen834Englishen835Englishen836Englishen837Englishen838Englishen839Englishen84Englishen840Englishen841Englishen842Englishen843Englishen844Englishen845Englishen846Englishen847Englishen848Englishen849Englishen85Englishen850Englishen851Englishen852Englishen853Englishen854Englishen855Englishen856Englishen857Englishen858Englishen859Englishen86Englishen860Englishen861Englishen862Englishen863Englishen864Englishen865Englishen866Englishen867Englishen868Englishen869Englishen87Englishen870Englishen871Englishen872Englishen873Englishen874Englishen875Englishen876Englishen877Englishen878Englishen879Englishen88Englishen880Englishen881Englishen882Englishen883Englishen884Englishen885Englishen886Englishen887Englishen888Englishen889Englishen89Englishen890Englishen891Englishen892Englishen893Englishen894Englishen895Englishen896Englishen897Englishen898Englishen899Englishen9Englishen90Englishen900Englishen901Englishen902Englishen903Englishen904Englishen905Englishen906Englishen907Englishen908Englishen909Englishen91Englishen910Englishen911Englishen912Englishen913Englishen914Englishen915Englishen916Englishen917Englishen918Englishen919Englishen92Englishen920Englishen921Englishen922Englishen923Englishen924Englishen925Englishen926Englishen927Englishen928Englishen929Englishen93Englishen930Englishen931Englishen932Englishen933Englishen934Englishen935Englishen936Englishen937Englishen938Englishen939Englishen94Englishen940Englishen941Englishen942Englishen943Englishen944Englishen945Englishen946Englishen947Englishen948Englishen949Englishen95Englishen950Englishen951Englishen952Englishen953Englishen954Englishen955Englishen956Englishen957Englishen958Englishen959Englishen96Englishen960Englishen961Englishen962Englishen963Englishen964Englishen965Englishen966Englishen967Englishen968Englishen969Englishen97Englishen970Englishen971Englishen972Englishen973Englishen974Englishen975Englishen976Englishen977Englishen978Englishen979Englishen98Englishen980Englishen981Englishen982Englishen983Englishen984Englishen985Englishen986Englishen987Englishen988Englishen989Englishen99Englishen990Englishen991Englishen992Englishen993Englishen994Englishen995Englishen996Englishen997Englishen998Englishen999Englisheo0 Esperantoeo1 Esperantoeo10 Esperantoeo100 Esperantoeo1000 Esperantoeo1001 Esperantoeo1002 Esperantoeo1003 Esperantoeo1004 Esperantoeo1005 Esperantoeo1006 Esperantoeo1007 Esperantoeo1008 Esperantoeo1009 Esperantoeo101 Esperantoeo1010 Esperantoeo1011 Esperantoeo1012 Esperantoeo1013 Esperantoeo1014 Esperantoeo1015 Esperantoeo1016 Esperantoeo1017 Esperantoeo1018 Esperantoeo1019 Esperantoeo102 Esperantoeo1020 Esperantoeo1021 Esperantoeo1022 Esperantoeo1023 Esperantoeo1024 Esperantoeo1025 Esperantoeo1026 Esperantoeo1027 Esperantoeo1028 Esperantoeo1029 Esperantoeo103 Esperantoeo1030 Esperantoeo1031 Esperantoeo1032 Esperantoeo1033 Esperantoeo1034 Esperantoeo1035 Esperantoeo1036 Esperantoeo1037 Esperantoeo1038 Esperantoeo1039 Esperantoeo104 Esperantoeo1040 Esperantoeo1041 Esperantoeo1042 Esperantoeo1043 Esperantoeo1044 Esperantoeo1045 Esperantoeo1046 Esperantoeo1047 Esperantoeo1048 Esperantoeo1049 Esperantoeo105 Esperantoeo1050 Esperantoeo1051 Esperantoeo1052 Esperantoeo1053 Esperantoeo1054 Esperantoeo1055 Esperantoeo1056 Esperantoeo1057 Esperantoeo1058 Esperantoeo1059 Esperantoeo106 Esperantoeo1060 Esperantoeo1061 Esperantoeo1062 Esperantoeo1063 Esperantoeo1064 Esperantoeo1065 Esperantoeo1066 Esperantoeo1067 Esperantoeo1068 Esperantoeo1069 Esperantoeo107 Esperantoeo1070 Esperantoeo1071 Esperantoeo1072 Esperantoeo1073 Esperantoeo1074 Esperantoeo1075 Esperantoeo1076 Esperantoeo1077 Esperantoeo1078 Esperantoeo1079 Esperantoeo108 Esperantoeo1080 Esperantoeo1081 Esperantoeo1082 Esperantoeo1083 Esperantoeo1084 Esperantoeo1085 Esperantoeo1086 Esperantoeo1087 Esperantoeo1088 Esperantoeo1089 Esperantoeo109 Esperantoeo1090 Esperantoeo1091 Esperantoeo1092 Esperantoeo1093 Esperantoeo1094 Esperantoeo1095 Esperantoeo1096 Esperantoeo1097 Esperantoeo1098 Esperantoeo1099 Esperantoeo11 Esperantoeo110 Esperantoeo1100 Esperantoeo1101 Esperantoeo1102 Esperantoeo1103 Esperantoeo1104 Esperantoeo1105 Esperantoeo1106 Esperantoeo1107 Esperantoeo1108 Esperantoeo1109 Esperantoeo111 Esperantoeo1110 Esperantoeo1111 Esperantoeo1112 Esperantoeo1113 Esperantoeo1114 Esperantoeo1115 Esperantoeo1116 Esperantoeo1117 Esperantoeo1118 Esperantoeo1119 Esperantoeo112 Esperantoeo1120 Esperantoeo1121 Esperantoeo1122 Esperantoeo1123 Esperantoeo1124 Esperantoeo1125 Esperantoeo1126 Esperantoeo1127 Esperantoeo1128 Esperantoeo1129 Esperantoeo113 Esperantoeo1130 Esperantoeo1131 Esperantoeo1132 Esperantoeo1133 Esperantoeo1134 Esperantoeo1135 Esperantoeo1136 Esperantoeo1137 Esperantoeo1138 Esperantoeo1139 Esperantoeo114 Esperantoeo1140 Esperantoeo1141 Esperantoeo1142 Esperantoeo1143 Esperantoeo1144 Esperantoeo1145 Esperantoeo1146 Esperantoeo1147 Esperantoeo1148 Esperantoeo1149 Esperantoeo115 Esperantoeo1150 Esperantoeo1151 Esperantoeo1152 Esperantoeo1153 Esperantoeo1154 Esperantoeo1155 Esperantoeo1156 Esperantoeo1157 Esperantoeo1158 Esperantoeo1159 Esperantoeo116 Esperantoeo1160 Esperantoeo1161 Esperantoeo1162 Esperantoeo1163 Esperantoeo1164 Esperantoeo1165 Esperantoeo1166 Esperantoeo1167 Esperantoeo1168 Esperantoeo1169 Esperantoeo117 Esperantoeo1170 Esperantoeo1171 Esperantoeo1172 Esperantoeo1173 Esperantoeo1174 Esperantoeo1175 Esperantoeo1176 Esperantoeo1177 Esperantoeo1178 Esperantoeo1179 Esperantoeo118 Esperantoeo1180 Esperantoeo1181 Esperantoeo1182 Esperantoeo1183 Esperantoeo1184 Esperantoeo1185 Esperantoeo1186 Esperantoeo1187 Esperantoeo1188 Esperantoeo1189 Esperantoeo119 Esperantoeo1190 Esperantoeo1191 Esperantoeo1192 Esperantoeo1193 Esperantoeo1194 Esperantoeo1195 Esperantoeo1196 Esperantoeo1197 Esperantoeo1198 Esperantoeo1199 Esperantoeo12 Esperantoeo120 Esperantoeo1200 Esperantoeo1201 Esperantoeo1202 Esperantoeo1203 Esperantoeo1204 Esperantoeo1205 Esperantoeo1206 Esperantoeo1207 Esperantoeo1208 Esperantoeo1209 Esperantoeo121 Esperantoeo1210 Esperantoeo1211 Esperantoeo1212 Esperantoeo1213 Esperantoeo1214 Esperantoeo1215 Esperantoeo1216 Esperantoeo1217 Esperantoeo1218 Esperantoeo1219 Esperantoeo122 Esperantoeo1220 Esperantoeo1221 Esperantoeo1222 Esperantoeo1223 Esperantoeo1224 Esperantoeo1225 Esperantoeo1226 Esperantoeo1227 Esperantoeo1228 Esperantoeo1229 Esperantoeo123 Esperantoeo1230 Esperantoeo1231 Esperantoeo1232 Esperantoeo1233 Esperantoeo1234 Esperantoeo1235 Esperantoeo1236 Esperantoeo1237 Esperantoeo1238 Esperantoeo1239 Esperantoeo124 Esperantoeo1240 Esperantoeo1241 Esperantoeo1242 Esperantoeo1243 Esperantoeo1244 Esperantoeo1245 Esperantoeo1246 Esperantoeo1247 Esperantoeo1248 Esperantoeo1249 Esperantoeo125 Esperantoeo1250 Esperantoeo1251 Esperantoeo1252 Esperantoeo1253 Esperantoeo1254 Esperantoeo1255 Esperantoeo1256 Esperantoeo1257 Esperantoeo1258 Esperantoeo1259 Esperantoeo126 Esperantoeo1260 Esperantoeo1261 Esperantoeo1262 Esperantoeo1263 Esperantoeo1264 Esperantoeo1265 Esperantoeo1266 Esperantoeo1267 Esperantoeo1268 Esperantoeo1269 Esperantoeo127 Esperantoeo1270 Esperantoeo1271 Esperantoeo1272 Esperantoeo1273 Esperantoeo1274 Esperantoeo1275 Esperantoeo1276 Esperantoeo1277 Esperantoeo1278 Esperantoeo1279 Esperantoeo128 Esperantoeo1280 Esperantoeo1281 Esperantoeo1282 Esperantoeo1283 Esperantoeo1284 Esperantoeo1285 Esperantoeo1286 Esperantoeo1287 Esperantoeo1288 Esperantoeo1289 Esperantoeo129 Esperantoeo1290 Esperantoeo1291 Esperantoeo1292 Esperantoeo1293 Esperantoeo1294 Esperantoeo1295 Esperantoeo1296 Esperantoeo1297 Esperantoeo1298 Esperantoeo1299 Esperantoeo13 Esperantoeo130 Esperantoeo1300 Esperantoeo1301 Esperantoeo1302 Esperantoeo1303 Esperantoeo1304 Esperantoeo1305 Esperantoeo1306 Esperantoeo1307 Esperantoeo1308 Esperantoeo1309 Esperantoeo131 Esperantoeo1310 Esperantoeo1311 Esperantoeo1312 Esperantoeo1313 Esperantoeo1314 Esperantoeo1315 Esperantoeo1316 Esperantoeo1317 Esperantoeo1318 Esperantoeo1319 Esperantoeo132 Esperantoeo1320 Esperantoeo1321 Esperantoeo1322 Esperantoeo1323 Esperantoeo1324 Esperantoeo1325 Esperantoeo1326 Esperantoeo1327 Esperantoeo1328 Esperantoeo1329 Esperantoeo133 Esperantoeo1330 Esperantoeo1331 Esperantoeo1332 Esperantoeo1333 Esperantoeo1334 Esperantoeo1335 Esperantoeo1336 Esperantoeo1337 Esperantoeo1338 Esperantoeo1339 Esperantoeo134 Esperantoeo1340 Esperantoeo1341 Esperantoeo1342 Esperantoeo1343 Esperantoeo1344 Esperantoeo1345 Esperantoeo1346 Esperantoeo1347 Esperantoeo1348 Esperantoeo1349 Esperantoeo135 Esperantoeo1350 Esperantoeo1351 Esperantoeo1352 Esperantoeo1353 Esperantoeo1354 Esperantoeo1355 Esperantoeo1356 Esperantoeo1357 Esperantoeo1358 Esperantoeo1359 Esperantoeo136 Esperantoeo1360 Esperantoeo1361 Esperantoeo1362 Esperantoeo1363 Esperantoeo1364 Esperantoeo1365 Esperantoeo1366 Esperantoeo1367 Esperantoeo1368 Esperantoeo1369 Esperantoeo137 Esperantoeo1370 Esperantoeo1371 Esperantoeo1372 Esperantoeo1373 Esperantoeo1374 Esperantoeo1375 Esperantoeo1376 Esperantoeo1377 Esperantoeo1378 Esperantoeo1379 Esperantoeo138 Esperantoeo1380 Esperantoeo1381 Esperantoeo1382 Esperantoeo1383 Esperantoeo1384 Esperantoeo1385 Esperantoeo1386 Esperantoeo1387 Esperantoeo1388 Esperantoeo1389 Esperantoeo139 Esperantoeo1390 Esperantoeo1391 Esperantoeo1392 Esperantoeo1393 Esperantoeo1394 Esperantoeo1395 Esperantoeo1396 Esperantoeo1397 Esperantoeo1398 Esperantoeo1399 Esperantoeo14 Esperantoeo140 Esperantoeo1400 Esperantoeo1401 Esperantoeo1402 Esperantoeo1403 Esperantoeo1404 Esperantoeo1405 Esperantoeo1406 Esperantoeo1407 Esperantoeo1408 Esperantoeo1409 Esperantoeo141 Esperantoeo1410 Esperantoeo1411 Esperantoeo1412 Esperantoeo1413 Esperantoeo1414 Esperantoeo1415 Esperantoeo1416 Esperantoeo1417 Esperantoeo1418 Esperantoeo1419 Esperantoeo142 Esperantoeo1420 Esperantoeo1421 Esperantoeo1422 Esperantoeo1423 Esperantoeo1424 Esperantoeo1425 Esperantoeo1426 Esperantoeo1427 Esperantoeo1428 Esperantoeo1429 Esperantoeo143 Esperantoeo1430 Esperantoeo1431 Esperantoeo1432 Esperantoeo1433 Esperantoeo1434 Esperantoeo1435 Esperantoeo1436 Esperantoeo1437 Esperantoeo1438 Esperantoeo1439 Esperantoeo144 Esperantoeo1440 Esperantoeo1441 Esperantoeo1442 Esperantoeo1443 Esperantoeo1444 Esperantoeo1445 Esperantoeo1446 Esperantoeo1447 Esperantoeo1448 Esperantoeo1449 Esperantoeo145 Esperantoeo1450 Esperantoeo1451 Esperantoeo1452 Esperantoeo1453 Esperantoeo1454 Esperantoeo1455 Esperantoeo1456 Esperantoeo1457 Esperantoeo1458 Esperantoeo1459 Esperantoeo146 Esperantoeo1460 Esperantoeo1461 Esperantoeo1462 Esperantoeo1463 Esperantoeo1464 Esperantoeo1465 Esperantoeo1466 Esperantoeo1467 Esperantoeo1468 Esperantoeo1469 Esperantoeo147 Esperantoeo1470 Esperantoeo1471 Esperantoeo1472 Esperantoeo1473 Esperantoeo1474 Esperantoeo1475 Esperantoeo1476 Esperantoeo1477 Esperantoeo1478 Esperantoeo1479 Esperantoeo148 Esperantoeo1480 Esperantoeo1481 Esperantoeo1482 Esperantoeo1483 Esperantoeo1484 Esperantoeo1485 Esperantoeo1486 Esperantoeo1487 Esperantoeo1488 Esperantoeo1489 Esperantoeo149 Esperantoeo1490 Esperantoeo1491 Esperantoeo1492 Esperantoeo1493 Esperantoeo1494 Esperantoeo1495 Esperantoeo1496 Esperantoeo1497 Esperantoeo1498 Esperantoeo1499 Esperantoeo15 Esperantoeo150 Esperantoeo1500 Esperantoeo1501 Esperantoeo1502 Esperantoeo1503 Esperantoeo1504 Esperantoeo1505 Esperantoeo1506 Esperantoeo1507 Esperantoeo1508 Esperantoeo1509 Esperantoeo151 Esperantoeo1510 Esperantoeo1511 Esperantoeo1512 Esperantoeo1513 Esperantoeo1514 Esperantoeo1515 Esperantoeo1516 Esperantoeo1517 Esperantoeo1518 Esperantoeo1519 Esperantoeo152 Esperantoeo1520 Esperantoeo1521 Esperantoeo1522 Esperantoeo1523 Esperantoeo1524 Esperantoeo1525 Esperantoeo1526 Esperantoeo1527 Esperantoeo1528 Esperantoeo1529 Esperantoeo153 Esperantoeo1530 Esperantoeo1531 Esperantoeo1532 Esperantoeo1533 Esperantoeo1534 Esperantoeo1535 Esperantoeo1536 Esperantoeo1537 Esperantoeo1538 Esperantoeo1539 Esperantoeo154 Esperantoeo1540 Esperantoeo1541 Esperantoeo1542 Esperantoeo1543 Esperantoeo1544 Esperantoeo1545 Esperantoeo1546 Esperantoeo1547 Esperantoeo1548 Esperantoeo1549 Esperantoeo155 Esperantoeo1550 Esperantoeo1551 Esperantoeo1552 Esperantoeo1553 Esperantoeo1554 Esperantoeo1555 Esperantoeo1556 Esperantoeo1557 Esperantoeo1558 Esperantoeo1559 Esperantoeo156 Esperantoeo1560 Esperantoeo1561 Esperantoeo1562 Esperantoeo1563 Esperantoeo1564 Esperantoeo1565 Esperantoeo1566 Esperantoeo1567 Esperantoeo1568 Esperantoeo1569 Esperantoeo157 Esperantoeo1570 Esperantoeo1571 Esperantoeo1572 Esperantoeo1573 Esperantoeo1574 Esperantoeo1575 Esperantoeo1576 Esperantoeo1577 Esperantoeo1578 Esperantoeo1579 Esperantoeo158 Esperantoeo1580 Esperantoeo1581 Esperantoeo1582 Esperantoeo1583 Esperantoeo1584 Esperantoeo1585 Esperantoeo1586 Esperantoeo1587 Esperantoeo1588 Esperantoeo1589 Esperantoeo159 Esperantoeo1590 Esperantoeo1591 Esperantoeo1592 Esperantoeo1593 Esperantoeo1594 Esperantoeo1595 Esperantoeo1596 Esperantoeo1597 Esperantoeo1598 Esperantoeo1599 Esperantoeo16 Esperantoeo160 Esperantoeo1600 Esperantoeo1601 Esperantoeo1602 Esperantoeo1603 Esperantoeo1604 Esperantoeo1605 Esperantoeo1606 Esperantoeo1607 Esperantoeo1608 Esperantoeo1609 Esperantoeo161 Esperantoeo1610 Esperantoeo1611 Esperantoeo1612 Esperantoeo1613 Esperantoeo1614 Esperantoeo1615 Esperantoeo1616 Esperantoeo1617 Esperantoeo1618 Esperantoeo1619 Esperantoeo162 Esperantoeo1620 Esperantoeo1621 Esperantoeo1622 Esperantoeo1623 Esperantoeo1624 Esperantoeo1625 Esperantoeo1626 Esperantoeo1627 Esperantoeo1628 Esperantoeo1629 Esperantoeo163 Esperantoeo1630 Esperantoeo1631 Esperantoeo1632 Esperantoeo1633 Esperantoeo1634 Esperantoeo1635 Esperantoeo1636 Esperantoeo1637 Esperantoeo1638 Esperantoeo1639 Esperantoeo164 Esperantoeo1640 Esperantoeo1641 Esperantoeo1642 Esperantoeo1643 Esperantoeo1644 Esperantoeo1645 Esperantoeo1646 Esperantoeo1647 Esperantoeo1648 Esperantoeo1649 Esperantoeo165 Esperantoeo1650 Esperantoeo1651 Esperantoeo1652 Esperantoeo1653 Esperantoeo1654 Esperantoeo1655 Esperantoeo1656 Esperantoeo1657 Esperantoeo1658 Esperantoeo1659 Esperantoeo166 Esperantoeo1660 Esperantoeo1661 Esperantoeo1662 Esperantoeo1663 Esperantoeo1664 Esperantoeo1665 Esperantoeo1666 Esperantoeo1667 Esperantoeo1668 Esperantoeo1669 Esperantoeo167 Esperantoeo1670 Esperantoeo1671 Esperantoeo1672 Esperantoeo1673 Esperantoeo1674 Esperantoeo1675 Esperantoeo1676 Esperantoeo1677 Esperantoeo1678 Esperantoeo1679 Esperantoeo168 Esperantoeo1680 Esperantoeo1681 Esperantoeo1682 Esperantoeo1683 Esperantoeo1684 Esperantoeo1685 Esperantoeo1686 Esperantoeo1687 Esperantoeo1688 Esperantoeo1689 Esperantoeo169 Esperantoeo1690 Esperantoeo1691 Esperantoeo1692 Esperantoeo1693 Esperantoeo1694 Esperantoeo1695 Esperantoeo1696 Esperantoeo1697 Esperantoeo1698 Esperantoeo1699 Esperantoeo17 Esperantoeo170 Esperantoeo1700 Esperantoeo1701 Esperantoeo1702 Esperantoeo1703 Esperantoeo1704 Esperantoeo1705 Esperantoeo1706 Esperantoeo1707 Esperantoeo1708 Esperantoeo1709 Esperantoeo171 Esperantoeo1710 Esperantoeo1711 Esperantoeo1712 Esperantoeo1713 Esperantoeo1714 Esperantoeo1715 Esperantoeo1716 Esperantoeo1717 Esperantoeo1718 Esperantoeo1719 Esperantoeo172 Esperantoeo1720 Esperantoeo1721 Esperantoeo1722 Esperantoeo1723 Esperantoeo1724 Esperantoeo1725 Esperantoeo1726 Esperantoeo1727 Esperantoeo1728 Esperantoeo1729 Esperantoeo173 Esperantoeo1730 Esperantoeo1731 Esperantoeo1732 Esperantoeo1733 Esperantoeo1734 Esperantoeo1735 Esperantoeo1736 Esperantoeo1737 Esperantoeo1738 Esperantoeo1739 Esperantoeo174 Esperantoeo1740 Esperantoeo1741 Esperantoeo1742 Esperantoeo1743 Esperantoeo1744 Esperantoeo1745 Esperantoeo1746 Esperantoeo1747 Esperantoeo1748 Esperantoeo1749 Esperantoeo175 Esperantoeo1750 Esperantoeo1751 Esperantoeo1752 Esperantoeo1753 Esperantoeo1754 Esperantoeo1755 Esperantoeo1756 Esperantoeo1757 Esperantoeo1758 Esperantoeo1759 Esperantoeo176 Esperantoeo1760 Esperantoeo1761 Esperantoeo1762 Esperantoeo1763 Esperantoeo1764 Esperantoeo1765 Esperantoeo1766 Esperantoeo1767 Esperantoeo1768 Esperantoeo1769 Esperantoeo177 Esperantoeo1770 Esperantoeo1771 Esperantoeo1772 Esperantoeo1773 Esperantoeo1774 Esperantoeo1775 Esperantoeo1776 Esperantoeo1777 Esperantoeo1778 Esperantoeo1779 Esperantoeo178 Esperantoeo1780 Esperantoeo1781 Esperantoeo1782 Esperantoeo1783 Esperantoeo1784 Esperantoeo1785 Esperantoeo1786 Esperantoeo1787 Esperantoeo1788 Esperantoeo1789 Esperantoeo179 Esperantoeo1790 Esperantoeo1791 Esperantoeo1792 Esperantoeo1793 Esperantoeo1794 Esperantoeo1795 Esperantoeo1796 Esperantoeo1797 Esperantoeo1798 Esperantoeo1799 Esperantoeo18 Esperantoeo180 Esperantoeo1800 Esperantoeo1801 Esperantoeo1802 Esperantoeo1803 Esperantoeo1804 Esperantoeo1805 Esperantoeo1806 Esperantoeo1807 Esperantoeo1808 Esperantoeo1809 Esperantoeo181 Esperantoeo1810 Esperantoeo1811 Esperantoeo1812 Esperantoeo1813 Esperantoeo1814 Esperantoeo1815 Esperantoeo1816 Esperantoeo1817 Esperantoeo1818 Esperantoeo1819 Esperantoeo182 Esperantoeo1820 Esperantoeo1821 Esperantoeo1822 Esperantoeo1823 Esperantoeo1824 Esperantoeo1825 Esperantoeo1826 Esperantoeo1827 Esperantoeo1828 Esperantoeo1829 Esperantoeo183 Esperantoeo1830 Esperantoeo1831 Esperantoeo1832 Esperantoeo1833 Esperantoeo1834 Esperantoeo1835 Esperantoeo1836 Esperantoeo1837 Esperantoeo1838 Esperantoeo1839 Esperantoeo184 Esperantoeo1840 Esperantoeo1841 Esperantoeo1842 Esperantoeo1843 Esperantoeo1844 Esperantoeo1845 Esperantoeo1846 Esperantoeo1847 Esperantoeo1848 Esperantoeo1849 Esperantoeo185 Esperantoeo1850 Esperantoeo1851 Esperantoeo1852 Esperantoeo1853 Esperantoeo1854 Esperantoeo1855 Esperantoeo1856 Esperantoeo1857 Esperantoeo1858 Esperantoeo1859 Esperantoeo186 Esperantoeo1860 Esperantoeo1861 Esperantoeo1862 Esperantoeo1863 Esperantoeo1864 Esperantoeo1865 Esperantoeo1866 Esperantoeo1867 Esperantoeo1868 Esperantoeo1869 Esperantoeo187 Esperantoeo1870 Esperantoeo1871 Esperantoeo1872 Esperantoeo1873 Esperantoeo1874 Esperantoeo1875 Esperantoeo1876 Esperantoeo1877 Esperantoeo1878 Esperantoeo1879 Esperantoeo188 Esperantoeo1880 Esperantoeo1881 Esperantoeo1882 Esperantoeo1883 Esperantoeo1884 Esperantoeo1885 Esperantoeo1886 Esperantoeo1887 Esperantoeo1888 Esperantoeo1889 Esperantoeo189 Esperantoeo1890 Esperantoeo1891 Esperantoeo1892 Esperantoeo1893 Esperantoeo1894 Esperantoeo1895 Esperantoeo1896 Esperantoeo1897 Esperantoeo1898 Esperantoeo1899 Esperantoeo19 Esperantoeo190 Esperantoeo1900 Esperantoeo1901 Esperantoeo1902 Esperantoeo1903 Esperantoeo1904 Esperantoeo1905 Esperantoeo1906 Esperantoeo1907 Esperantoeo1908 Esperantoeo1909 Esperantoeo191 Esperantoeo1910 Esperantoeo1911 Esperantoeo1912 Esperantoeo1913 Esperantoeo1914 Esperantoeo1915 Esperantoeo1916 Esperantoeo1917 Esperantoeo1918 Esperantoeo1919 Esperantoeo192 Esperantoeo1920 Esperantoeo1921 Esperantoeo1922 Esperantoeo1923 Esperantoeo1924 Esperantoeo1925 Esperantoeo1926 Esperantoeo1927 Esperantoeo1928 Esperantoeo1929 Esperantoeo193 Esperantoeo1930 Esperantoeo1931 Esperantoeo1932 Esperantoeo1933 Esperantoeo1934 Esperantoeo1935 Esperantoeo1936 Esperantoeo1937 Esperantoeo1938 Esperantoeo1939 Esperantoeo194 Esperantoeo1940 Esperantoeo1941 Esperantoeo1942 Esperantoeo1943 Esperantoeo1944 Esperantoeo1945 Esperantoeo1946 Esperantoeo1947 Esperantoeo1948 Esperantoeo1949 Esperantoeo195 Esperantoeo1950 Esperantoeo1951 Esperantoeo1952 Esperantoeo1953 Esperantoeo1954 Esperantoeo1955 Esperantoeo1956 Esperantoeo1957 Esperantoeo1958 Esperantoeo1959 Esperantoeo196 Esperantoeo1960 Esperantoeo1961 Esperantoeo1962 Esperantoeo1963 Esperantoeo1964 Esperantoeo1965 Esperantoeo1966 Esperantoeo1967 Esperantoeo1968 Esperantoeo1969 Esperantoeo197 Esperantoeo1970 Esperantoeo1971 Esperantoeo1972 Esperantoeo1973 Esperantoeo1974 Esperantoeo1975 Esperantoeo1976 Esperantoeo1977 Esperantoeo1978 Esperantoeo1979 Esperantoeo198 Esperantoeo1980 Esperantoeo1981 Esperantoeo1982 Esperantoeo1983 Esperantoeo1984 Esperantoeo1985 Esperantoeo1986 Esperantoeo1987 Esperantoeo1988 Esperantoeo1989 Esperantoeo199 Esperantoeo1990 Esperantoeo1991 Esperantoeo1992 Esperantoeo1993 Esperantoeo1994 Esperantoeo1995 Esperantoeo1996 Esperantoeo1997 Esperantoeo1998 Esperantoeo1999 Esperantoeo2 Esperantoeo20 Esperantoeo200 Esperantoeo2000 Esperantoeo2001 Esperantoeo2002 Esperantoeo2003 Esperantoeo2004 Esperantoeo2005 Esperantoeo2006 Esperantoeo2007 Esperantoeo2008 Esperantoeo2009 Esperantoeo201 Esperantoeo2010 Esperantoeo2011 Esperantoeo2012 Esperantoeo2013 Esperantoeo2014 Esperantoeo2015 Esperantoeo2016 Esperantoeo2017 Esperantoeo2018 Esperantoeo2019 Esperantoeo202 Esperantoeo2020 Esperantoeo2021 Esperantoeo2022 Esperantoeo2023 Esperantoeo2024 Esperantoeo2025 Esperantoeo2026 Esperantoeo2027 Esperantoeo2028 Esperantoeo2029 Esperantoeo203 Esperantoeo2030 Esperantoeo2031 Esperantoeo2032 Esperantoeo2033 Esperantoeo2034 Esperantoeo2035 Esperantoeo2036 Esperantoeo2037 Esperantoeo2038 Esperantoeo2039 Esperantoeo204 Esperantoeo2040 Esperantoeo2041 Esperantoeo2042 Esperantoeo2043 Esperantoeo2044 Esperantoeo2045 Esperantoeo2046 Esperantoeo2047 Esperantoeo2048 Esperantoeo2049 Esperantoeo205 Esperantoeo2050 Esperantoeo2051 Esperantoeo2052 Esperantoeo2053 Esperantoeo2054 Esperantoeo2055 Esperantoeo2056 Esperantoeo2057 Esperantoeo2058 Esperantoeo2059 Esperantoeo206 Esperantoeo2060 Esperantoeo2061 Esperantoeo2062 Esperantoeo2063 Esperantoeo2064 Esperantoeo2065 Esperantoeo2066 Esperantoeo2067 Esperantoeo2068 Esperantoeo2069 Esperantoeo207 Esperantoeo2070 Esperantoeo2071 Esperantoeo2072 Esperantoeo2073 Esperantoeo2074 Esperantoeo2075 Esperantoeo2076 Esperantoeo2077 Esperantoeo2078 Esperantoeo2079 Esperantoeo208 Esperantoeo2080 Esperantoeo2081 Esperantoeo2082 Esperantoeo2083 Esperantoeo2084 Esperantoeo2085 Esperantoeo2086 Esperantoeo2087 Esperantoeo2088 Esperantoeo2089 Esperantoeo209 Esperantoeo2090 Esperantoeo2091 Esperantoeo2092 Esperantoeo2093 Esperantoeo2094 Esperantoeo2095 Esperantoeo2096 Esperantoeo2097 Esperantoeo2098 Esperantoeo2099 Esperantoeo21 Esperantoeo210 Esperantoeo2100 Esperantoeo2101 Esperantoeo2102 Esperantoeo2103 Esperantoeo2104 Esperantoeo2105 Esperantoeo2106 Esperantoeo2107 Esperantoeo2108 Esperantoeo2109 Esperantoeo211 Esperantoeo2110 Esperantoeo2111 Esperantoeo2112 Esperantoeo2113 Esperantoeo2114 Esperantoeo2115 Esperantoeo2116 Esperantoeo2117 Esperantoeo2118 Esperantoeo2119 Esperantoeo212 Esperantoeo2120 Esperantoeo2121 Esperantoeo2122 Esperantoeo2123 Esperantoeo2124 Esperantoeo2125 Esperantoeo2126 Esperantoeo2127 Esperantoeo2128 Esperantoeo2129 Esperantoeo213 Esperantoeo2130 Esperantoeo2131 Esperantoeo2132 Esperantoeo2133 Esperantoeo2134 Esperantoeo2135 Esperantoeo2136 Esperantoeo2137 Esperantoeo2138 Esperantoeo2139 Esperantoeo214 Esperantoeo2140 Esperantoeo2141 Esperantoeo2142 Esperantoeo2143 Esperantoeo2144 Esperantoeo2145 Esperantoeo2146 Esperantoeo2147 Esperantoeo2148 Esperantoeo2149 Esperantoeo215 Esperantoeo2150 Esperantoeo2151 Esperantoeo2152 Esperantoeo2153 Esperantoeo2154 Esperantoeo2155 Esperantoeo2156 Esperantoeo2157 Esperantoeo2158 Esperantoeo2159 Esperantoeo216 Esperantoeo2160 Esperantoeo2161 Esperantoeo2162 Esperantoeo2163 Esperantoeo2164 Esperantoeo2165 Esperantoeo2166 Esperantoeo2167 Esperantoeo2168 Esperantoeo2169 Esperantoeo217 Esperantoeo2170 Esperantoeo2171 Esperantoeo2172 Esperantoeo2173 Esperantoeo2174 Esperantoeo2175 Esperantoeo2176 Esperantoeo2177 Esperantoeo2178 Esperantoeo2179 Esperantoeo218 Esperantoeo2180 Esperantoeo2181 Esperantoeo2182 Esperantoeo2183 Esperantoeo2184 Esperantoeo2185 Esperantoeo2186 Esperantoeo2187 Esperantoeo2188 Esperantoeo2189 Esperantoeo219 Esperantoeo2190 Esperantoeo2191 Esperantoeo2192 Esperantoeo2193 Esperantoeo2194 Esperantoeo2195 Esperantoeo2196 Esperantoeo2197 Esperantoeo2198 Esperantoeo2199 Esperantoeo22 Esperantoeo220 Esperantoeo2200 Esperantoeo2201 Esperantoeo2202 Esperantoeo2203 Esperantoeo2204 Esperantoeo2205 Esperantoeo2206 Esperantoeo2207 Esperantoeo2208 Esperantoeo2209 Esperantoeo221 Esperantoeo2210 Esperantoeo2211 Esperantoeo2212 Esperantoeo2213 Esperantoeo2214 Esperantoeo2215 Esperantoeo2216 Esperantoeo2217 Esperantoeo2218 Esperantoeo2219 Esperantoeo222 Esperantoeo2220 Esperantoeo2221 Esperantoeo2222 Esperantoeo2223 Esperantoeo2224 Esperantoeo2225 Esperantoeo2226 Esperantoeo2227 Esperantoeo2228 Esperantoeo2229 Esperantoeo223 Esperantoeo2230 Esperantoeo2231 Esperantoeo2232 Esperantoeo2233 Esperantoeo2234 Esperantoeo2235 Esperantoeo2236 Esperantoeo2237 Esperantoeo2238 Esperantoeo2239 Esperantoeo224 Esperantoeo2240 Esperantoeo2241 Esperantoeo2242 Esperantoeo2243 Esperantoeo2244 Esperantoeo2245 Esperantoeo2246 Esperantoeo2247 Esperantoeo2248 Esperantoeo2249 Esperantoeo225 Esperantoeo2250 Esperantoeo2251 Esperantoeo2252 Esperantoeo2253 Esperantoeo2254 Esperantoeo2255 Esperantoeo2256 Esperantoeo2257 Esperantoeo2258 Esperantoeo2259 Esperantoeo226 Esperantoeo2260 Esperantoeo2261 Esperantoeo2262 Esperantoeo2263 Esperantoeo2264 Esperantoeo2265 Esperantoeo2266 Esperantoeo2267 Esperantoeo2268 Esperantoeo2269 Esperantoeo227 Esperantoeo2270 Esperantoeo2271 Esperantoeo2272 Esperantoeo2273 Esperantoeo2274 Esperantoeo2275 Esperantoeo2276 Esperantoeo2277 Esperantoeo2278 Esperantoeo2279 Esperantoeo228 Esperantoeo2280 Esperantoeo2281 Esperantoeo2282 Esperantoeo2283 Esperantoeo2284 Esperantoeo2285 Esperantoeo2286 Esperantoeo2287 Esperantoeo2288 Esperantoeo2289 Esperantoeo229 Esperantoeo2290 Esperantoeo2291 Esperantoeo2292 Esperantoeo2293 Esperantoeo2294 Esperantoeo2295 Esperantoeo2296 Esperantoeo2297 Esperantoeo2298 Esperantoeo2299 Esperantoeo23 Esperantoeo230 Esperantoeo2300 Esperantoeo2301 Esperantoeo2302 Esperantoeo2303 Esperantoeo2304 Esperantoeo2305 Esperantoeo2306 Esperantoeo2307 Esperantoeo2308 Esperantoeo2309 Esperantoeo231 Esperantoeo2310 Esperantoeo2311 Esperantoeo2312 Esperantoeo2313 Esperantoeo2314 Esperantoeo2315 Esperantoeo2316 Esperantoeo2317 Esperantoeo2318 Esperantoeo2319 Esperantoeo232 Esperantoeo2320 Esperantoeo2321 Esperantoeo2322 Esperantoeo2323 Esperantoeo2324 Esperantoeo2325 Esperantoeo2326 Esperantoeo2327 Esperantoeo2328 Esperantoeo2329 Esperantoeo233 Esperantoeo2330 Esperantoeo2331 Esperantoeo2332 Esperantoeo2333 Esperantoeo2334 Esperantoeo2335 Esperantoeo2336 Esperantoeo2337 Esperantoeo2338 Esperantoeo2339 Esperantoeo234 Esperantoeo2340 Esperantoeo2341 Esperantoeo2342 Esperantoeo2343 Esperantoeo2344 Esperantoeo2345 Esperantoeo2346 Esperantoeo2347 Esperantoeo2348 Esperantoeo2349 Esperantoeo235 Esperantoeo2350 Esperantoeo2351 Esperantoeo2352 Esperantoeo2353 Esperantoeo2354 Esperantoeo2355 Esperantoeo2356 Esperantoeo2357 Esperantoeo2358 Esperantoeo2359 Esperantoeo236 Esperantoeo2360 Esperantoeo2361 Esperantoeo2362 Esperantoeo2363 Esperantoeo2364 Esperantoeo2365 Esperantoeo2366 Esperantoeo2367 Esperantoeo2368 Esperantoeo2369 Esperantoeo237 Esperantoeo2370 Esperantoeo2371 Esperantoeo2372 Esperantoeo2373 Esperantoeo2374 Esperantoeo2375 Esperantoeo2376 Esperantoeo2377 Esperantoeo2378 Esperantoeo2379 Esperantoeo238 Esperantoeo2380 Esperantoeo2381 Esperantoeo2382 Esperantoeo2383 Esperantoeo2384 Esperantoeo2385 Esperantoeo2386 Esperantoeo2387 Esperantoeo2388 Esperantoeo2389 Esperantoeo239 Esperantoeo2390 Esperantoeo2391 Esperantoeo2392 Esperantoeo2393 Esperantoeo2394 Esperantoeo2395 Esperantoeo2396 Esperantoeo2397 Esperantoeo2398 Esperantoeo2399 Esperantoeo24 Esperantoeo240 Esperantoeo2400 Esperantoeo2401 Esperantoeo2402 Esperantoeo2403 Esperantoeo2404 Esperantoeo2405 Esperantoeo2406 Esperantoeo2407 Esperantoeo2408 Esperantoeo2409 Esperantoeo241 Esperantoeo2410 Esperantoeo2411 Esperantoeo2412 Esperantoeo2413 Esperantoeo2414 Esperantoeo2415 Esperantoeo2416 Esperantoeo2417 Esperantoeo2418 Esperantoeo2419 Esperantoeo242 Esperantoeo2420 Esperantoeo2421 Esperantoeo2422 Esperantoeo2423 Esperantoeo2424 Esperantoeo2425 Esperantoeo2426 Esperantoeo2427 Esperantoeo2428 Esperantoeo2429 Esperantoeo243 Esperantoeo2430 Esperantoeo2431 Esperantoeo2432 Esperantoeo2433 Esperantoeo2434 Esperantoeo2435 Esperantoeo2436 Esperantoeo2437 Esperantoeo2438 Esperantoeo2439 Esperantoeo244 Esperantoeo2440 Esperantoeo2441 Esperantoeo2442 Esperantoeo2443 Esperantoeo2444 Esperantoeo2445 Esperantoeo2446 Esperantoeo2447 Esperantoeo2448 Esperantoeo2449 Esperantoeo245 Esperantoeo2450 Esperantoeo2451 Esperantoeo2452 Esperantoeo2453 Esperantoeo2454 Esperantoeo2455 Esperantoeo2456 Esperantoeo2457 Esperantoeo2458 Esperantoeo2459 Esperantoeo246 Esperantoeo2460 Esperantoeo2461 Esperantoeo2462 Esperantoeo2463 Esperantoeo2464 Esperantoeo2465 Esperantoeo2466 Esperantoeo2467 Esperantoeo2468 Esperantoeo2469 Esperantoeo247 Esperantoeo2470 Esperantoeo2471 Esperantoeo2472 Esperantoeo2473 Esperantoeo2474 Esperantoeo2475 Esperantoeo2476 Esperantoeo2477 Esperantoeo2478 Esperantoeo2479 Esperantoeo248 Esperantoeo2480 Esperantoeo2481 Esperantoeo2482 Esperantoeo2483 Esperantoeo2484 Esperantoeo2485 Esperantoeo2486 Esperantoeo2487 Esperantoeo2488 Esperantoeo2489 Esperantoeo249 Esperantoeo2490 Esperantoeo2491 Esperantoeo2492 Esperantoeo2493 Esperantoeo2494 Esperantoeo2495 Esperantoeo2496 Esperantoeo2497 Esperantoeo2498 Esperantoeo2499 Esperantoeo25 Esperantoeo250 Esperantoeo2500 Esperantoeo2501 Esperantoeo2502 Esperantoeo2503 Esperantoeo2504 Esperantoeo2505 Esperantoeo2506 Esperantoeo2507 Esperantoeo2508 Esperantoeo2509 Esperantoeo251 Esperantoeo2510 Esperantoeo2511 Esperantoeo2512 Esperantoeo2513 Esperantoeo2514 Esperantoeo2515 Esperantoeo2516 Esperantoeo2517 Esperantoeo2518 Esperantoeo2519 Esperantoeo252 Esperantoeo2520 Esperantoeo2521 Esperantoeo2522 Esperantoeo2523 Esperantoeo2524 Esperantoeo2525 Esperantoeo2526 Esperantoeo2527 Esperantoeo2528 Esperantoeo2529 Esperantoeo253 Esperantoeo2530 Esperantoeo2531 Esperantoeo2532 Esperantoeo2533 Esperantoeo2534 Esperantoeo2535 Esperantoeo2536 Esperantoeo2537 Esperantoeo2538 Esperantoeo2539 Esperantoeo254 Esperantoeo2540 Esperantoeo2541 Esperantoeo2542 Esperantoeo2543 Esperantoeo2544 Esperantoeo2545 Esperantoeo2546 Esperantoeo2547 Esperantoeo2548 Esperantoeo2549 Esperantoeo255 Esperantoeo2550 Esperantoeo2551 Esperantoeo2552 Esperantoeo2553 Esperantoeo2554 Esperantoeo2555 Esperantoeo2556 Esperantoeo2557 Esperantoeo2558 Esperantoeo2559 Esperantoeo256 Esperantoeo2560 Esperantoeo2561 Esperantoeo2562 Esperantoeo2563 Esperantoeo2564 Esperantoeo2565 Esperantoeo2566 Esperantoeo2567 Esperantoeo2568 Esperantoeo2569 Esperantoeo257 Esperantoeo2570 Esperantoeo2571 Esperantoeo2572 Esperantoeo2573 Esperantoeo2574 Esperantoeo2575 Esperantoeo2576 Esperantoeo2577 Esperantoeo2578 Esperantoeo2579 Esperantoeo258 Esperantoeo2580 Esperantoeo2581 Esperantoeo2582 Esperantoeo2583 Esperantoeo2584 Esperantoeo2585 Esperantoeo2586 Esperantoeo2587 Esperantoeo2588 Esperantoeo2589 Esperantoeo259 Esperantoeo2590 Esperantoeo2591 Esperantoeo2592 Esperantoeo2593 Esperantoeo2594 Esperantoeo2595 Esperantoeo2596 Esperantoeo2597 Esperantoeo2598 Esperantoeo2599 Esperantoeo26 Esperantoeo260 Esperantoeo2600 Esperantoeo2601 Esperantoeo2602 Esperantoeo2603 Esperantoeo2604 Esperantoeo2605 Esperantoeo2606 Esperantoeo2607 Esperantoeo2608 Esperantoeo2609 Esperantoeo261 Esperantoeo2610 Esperantoeo2611 Esperantoeo2612 Esperantoeo2613 Esperantoeo2614 Esperantoeo2615 Esperantoeo2616 Esperantoeo2617 Esperantoeo2618 Esperantoeo2619 Esperantoeo262 Esperantoeo2620 Esperantoeo2621 Esperantoeo2622 Esperantoeo2623 Esperantoeo2624 Esperantoeo2625 Esperantoeo2626 Esperantoeo2627 Esperantoeo2628 Esperantoeo2629 Esperantoeo263 Esperantoeo2630 Esperantoeo2631 Esperantoeo2632 Esperantoeo2633 Esperantoeo2634 Esperantoeo2635 Esperantoeo2636 Esperantoeo2637 Esperantoeo2638 Esperantoeo2639 Esperantoeo264 Esperantoeo2640 Esperantoeo2641 Esperantoeo2642 Esperantoeo2643 Esperantoeo2644 Esperantoeo2645 Esperantoeo2646 Esperantoeo2647 Esperantoeo2648 Esperantoeo2649 Esperantoeo265 Esperantoeo2650 Esperantoeo2651 Esperantoeo2652 Esperantoeo2653 Esperantoeo2654 Esperantoeo2655 Esperantoeo2656 Esperantoeo2657 Esperantoeo2658 Esperantoeo2659 Esperantoeo266 Esperantoeo2660 Esperantoeo2661 Esperantoeo2662 Esperantoeo2663 Esperantoeo2664 Esperantoeo2665 Esperantoeo2666 Esperantoeo2667 Esperantoeo2668 Esperantoeo2669 Esperantoeo267 Esperantoeo2670 Esperantoeo2671 Esperantoeo2672 Esperantoeo2673 Esperantoeo2674 Esperantoeo2675 Esperantoeo2676 Esperantoeo2677 Esperantoeo2678 Esperantoeo2679 Esperantoeo268 Esperantoeo2680 Esperantoeo2681 Esperantoeo2682 Esperantoeo2683 Esperantoeo2684 Esperantoeo2685 Esperantoeo2686 Esperantoeo2687 Esperantoeo2688 Esperantoeo2689 Esperantoeo269 Esperantoeo2690 Esperantoeo2691 Esperantoeo2692 Esperantoeo2693 Esperantoeo2694 Esperantoeo2695 Esperantoeo2696 Esperantoeo2697 Esperantoeo2698 Esperantoeo2699 Esperantoeo27 Esperantoeo270 Esperantoeo2700 Esperantoeo2701 Esperantoeo2702 Esperantoeo2703 Esperantoeo2704 Esperantoeo2705 Esperantoeo2706 Esperantoeo2707 Esperantoeo2708 Esperantoeo2709 Esperantoeo271 Esperantoeo2710 Esperantoeo2711 Esperantoeo2712 Esperantoeo2713 Esperantoeo2714 Esperantoeo2715 Esperantoeo2716 Esperantoeo2717 Esperantoeo2718 Esperantoeo2719 Esperantoeo272 Esperantoeo2720 Esperantoeo2721 Esperantoeo2722 Esperantoeo2723 Esperantoeo2724 Esperantoeo2725 Esperantoeo2726 Esperantoeo2727 Esperantoeo2728 Esperantoeo2729 Esperantoeo273 Esperantoeo2730 Esperantoeo2731 Esperantoeo2732 Esperantoeo2733 Esperantoeo2734 Esperantoeo2735 Esperantoeo2736 Esperantoeo2737 Esperantoeo2738 Esperantoeo2739 Esperantoeo274 Esperantoeo2740 Esperantoeo2741 Esperantoeo2742 Esperantoeo2743 Esperantoeo2744 Esperantoeo2745 Esperantoeo2746 Esperantoeo2747 Esperantoeo2748 Esperantoeo2749 Esperantoeo275 Esperantoeo2750 Esperantoeo2751 Esperantoeo2752 Esperantoeo2753 Esperantoeo2754 Esperantoeo2755 Esperantoeo2756 Esperantoeo2757 Esperantoeo2758 Esperantoeo2759 Esperantoeo276 Esperantoeo2760 Esperantoeo2761 Esperantoeo2762 Esperantoeo2763 Esperantoeo2764 Esperantoeo2765 Esperantoeo2766 Esperantoeo2767 Esperantoeo2768 Esperantoeo2769 Esperantoeo277 Esperantoeo2770 Esperantoeo2771 Esperantoeo2772 Esperantoeo2773 Esperantoeo2774 Esperantoeo2775 Esperantoeo2776 Esperantoeo2777 Esperantoeo2778 Esperantoeo2779 Esperantoeo278 Esperantoeo2780 Esperantoeo2781 Esperantoeo2782 Esperantoeo2783 Esperantoeo2784 Esperantoeo2785 Esperantoeo2786 Esperantoeo2787 Esperantoeo2788 Esperantoeo2789 Esperantoeo279 Esperantoeo2790 Esperantoeo2791 Esperantoeo2792 Esperantoeo2793 Esperantoeo2794 Esperantoeo2795 Esperantoeo2796 Esperantoeo2797 Esperantoeo2798 Esperantoeo2799 Esperantoeo28 Esperantoeo280 Esperantoeo2800 Esperantoeo2801 Esperantoeo2802 Esperantoeo2803 Esperantoeo2804 Esperantoeo2805 Esperantoeo2806 Esperantoeo2807 Esperantoeo2808 Esperantoeo2809 Esperantoeo281 Esperantoeo2810 Esperantoeo2811 Esperantoeo2812 Esperantoeo2813 Esperantoeo2814 Esperantoeo2815 Esperantoeo2816 Esperantoeo2817 Esperantoeo2818 Esperantoeo2819 Esperantoeo282 Esperantoeo2820 Esperantoeo2821 Esperantoeo2822 Esperantoeo2823 Esperantoeo2824 Esperantoeo2825 Esperantoeo2826 Esperantoeo2827 Esperantoeo2828 Esperantoeo2829 Esperantoeo283 Esperantoeo2830 Esperantoeo2831 Esperantoeo2832 Esperantoeo2833 Esperantoeo2834 Esperantoeo2835 Esperantoeo2836 Esperantoeo2837 Esperantoeo2838 Esperantoeo2839 Esperantoeo284 Esperantoeo2840 Esperantoeo2841 Esperantoeo2842 Esperantoeo2843 Esperantoeo2844 Esperantoeo2845 Esperantoeo2846 Esperantoeo2847 Esperantoeo2848 Esperantoeo2849 Esperantoeo285 Esperantoeo2850 Esperantoeo2851 Esperantoeo2852 Esperantoeo2853 Esperantoeo2854 Esperantoeo2855 Esperantoeo2856 Esperantoeo2857 Esperantoeo2858 Esperantoeo2859 Esperantoeo286 Esperantoeo2860 Esperantoeo2861 Esperantoeo2862 Esperantoeo2863 Esperantoeo2864 Esperantoeo2865 Esperantoeo2866 Esperantoeo2867 Esperantoeo2868 Esperantoeo2869 Esperantoeo287 Esperantoeo2870 Esperantoeo2871 Esperantoeo2872 Esperantoeo2873 Esperantoeo2874 Esperantoeo2875 Esperantoeo2876 Esperantoeo2877 Esperantoeo2878 Esperantoeo2879 Esperantoeo288 Esperantoeo2880 Esperantoeo2881 Esperantoeo2882 Esperantoeo2883 Esperantoeo2884 Esperantoeo2885 Esperantoeo2886 Esperantoeo2887 Esperantoeo2888 Esperantoeo2889 Esperantoeo289 Esperantoeo2890 Esperantoeo2891 Esperantoeo2892 Esperantoeo2893 Esperantoeo2894 Esperantoeo2895 Esperantoeo2896 Esperantoeo2897 Esperantoeo2898 Esperantoeo2899 Esperantoeo29 Esperantoeo290 Esperantoeo2900 Esperantoeo2901 Esperantoeo2902 Esperantoeo2903 Esperantoeo2904 Esperantoeo2905 Esperantoeo2906 Esperantoeo2907 Esperantoeo2908 Esperantoeo2909 Esperantoeo291 Esperantoeo2910 Esperantoeo2911 Esperantoeo2912 Esperantoeo2913 Esperantoeo2914 Esperantoeo2915 Esperantoeo2916 Esperantoeo2917 Esperantoeo2918 Esperantoeo2919 Esperantoeo292 Esperantoeo2920 Esperantoeo2921 Esperantoeo2922 Esperantoeo2923 Esperantoeo2924 Esperantoeo2925 Esperantoeo2926 Esperantoeo2927 Esperantoeo2928 Esperantoeo2929 Esperantoeo293 Esperantoeo2930 Esperantoeo2931 Esperantoeo2932 Esperantoeo2933 Esperantoeo2934 Esperantoeo2935 Esperantoeo2936 Esperantoeo2937 Esperantoeo2938 Esperantoeo2939 Esperantoeo294 Esperantoeo2940 Esperantoeo2941 Esperantoeo2942 Esperantoeo2943 Esperantoeo2944 Esperantoeo2945 Esperantoeo2946 Esperantoeo2947 Esperantoeo2948 Esperantoeo2949 Esperantoeo295 Esperantoeo2950 Esperantoeo2951 Esperantoeo2952 Esperantoeo2953 Esperantoeo2954 Esperantoeo2955 Esperantoeo2956 Esperantoeo2957 Esperantoeo2958 Esperantoeo2959 Esperantoeo296 Esperantoeo2960 Esperantoeo2961 Esperantoeo2962 Esperantoeo2963 Esperantoeo2964 Esperantoeo2965 Esperantoeo2966 Esperantoeo2967 Esperantoeo2968 Esperantoeo2969 Esperantoeo297 Esperantoeo2970 Esperantoeo2971 Esperantoeo2972 Esperantoeo2973 Esperantoeo2974 Esperantoeo2975 Esperantoeo2976 Esperantoeo2977 Esperantoeo2978 Esperantoeo2979 Esperantoeo298 Esperantoeo2980 Esperantoeo2981 Esperantoeo2982 Esperantoeo2983 Esperantoeo2984 Esperantoeo2985 Esperantoeo2986 Esperantoeo2987 Esperantoeo2988 Esperantoeo2989 Esperantoeo299 Esperantoeo2990 Esperantoeo2991 Esperantoeo2992 Esperantoeo2993 Esperantoeo2994 Esperantoeo2995 Esperantoeo2996 Esperantoeo2997 Esperantoeo2998 Esperantoeo2999 Esperantoeo3 Esperantoeo30 Esperantoeo300 Esperantoeo3000 Esperantoeo3001 Esperantoeo3002 Esperantoeo3003 Esperantoeo3004 Esperantoeo3005 Esperantoeo3006 Esperantoeo3007 Esperantoeo3008 Esperantoeo3009 Esperantoeo301 Esperantoeo3010 Esperantoeo3011 Esperantoeo3012 Esperantoeo3013 Esperantoeo3014 Esperantoeo3015 Esperantoeo3016 Esperantoeo3017 Esperantoeo3018 Esperantoeo3019 Esperantoeo302 Esperantoeo3020 Esperantoeo3021 Esperantoeo3022 Esperantoeo3023 Esperantoeo3024 Esperantoeo3025 Esperantoeo3026 Esperantoeo3027 Esperantoeo3028 Esperantoeo3029 Esperantoeo303 Esperantoeo3030 Esperantoeo3031 Esperantoeo3032 Esperantoeo3033 Esperantoeo3034 Esperantoeo3035 Esperantoeo3036 Esperantoeo3037 Esperantoeo3038 Esperantoeo3039 Esperantoeo304 Esperantoeo3040 Esperantoeo3041 Esperantoeo3042 Esperantoeo3043 Esperantoeo3044 Esperantoeo3045 Esperantoeo3046 Esperantoeo3047 Esperantoeo3048 Esperantoeo3049 Esperantoeo305 Esperantoeo3050 Esperantoeo3051 Esperantoeo3052 Esperantoeo3053 Esperantoeo3054 Esperantoeo3055 Esperantoeo3056 Esperantoeo3057 Esperantoeo3058 Esperantoeo3059 Esperantoeo306 Esperantoeo3060 Esperantoeo3061 Esperantoeo3062 Esperantoeo3063 Esperantoeo3064 Esperantoeo3065 Esperantoeo3066 Esperantoeo3067 Esperantoeo3068 Esperantoeo3069 Esperantoeo307 Esperantoeo3070 Esperantoeo3071 Esperantoeo3072 Esperantoeo3073 Esperantoeo3074 Esperantoeo3075 Esperantoeo3076 Esperantoeo3077 Esperantoeo3078 Esperantoeo3079 Esperantoeo308 Esperantoeo3080 Esperantoeo3081 Esperantoeo3082 Esperantoeo3083 Esperantoeo3084 Esperantoeo3085 Esperantoeo3086 Esperantoeo3087 Esperantoeo3088 Esperantoeo3089 Esperantoeo309 Esperantoeo3090 Esperantoeo3091 Esperantoeo3092 Esperantoeo3093 Esperantoeo3094 Esperantoeo3095 Esperantoeo3096 Esperantoeo3097 Esperantoeo3098 Esperantoeo3099 Esperantoeo31 Esperantoeo310 Esperantoeo3100 Esperantoeo3101 Esperantoeo3102 Esperantoeo3103 Esperantoeo3104 Esperantoeo3105 Esperantoeo3106 Esperantoeo3107 Esperantoeo3108 Esperantoeo3109 Esperantoeo311 Esperantoeo3110 Esperantoeo3111 Esperantoeo3112 Esperantoeo3113 Esperantoeo3114 Esperantoeo3115 Esperantoeo3116 Esperantoeo3117 Esperantoeo3118 Esperantoeo3119 Esperantoeo312 Esperantoeo3120 Esperantoeo3121 Esperantoeo3122 Esperantoeo3123 Esperantoeo3124 Esperantoeo3125 Esperantoeo3126 Esperantoeo3127 Esperantoeo3128 Esperantoeo3129 Esperantoeo313 Esperantoeo3130 Esperantoeo3131 Esperantoeo3132 Esperantoeo3133 Esperantoeo3134 Esperantoeo3135 Esperantoeo3136 Esperantoeo3137 Esperantoeo3138 Esperantoeo3139 Esperantoeo314 Esperantoeo3140 Esperantoeo3141 Esperantoeo3142 Esperantoeo3143 Esperantoeo3144 Esperantoeo3145 Esperantoeo3146 Esperantoeo3147 Esperantoeo3148 Esperantoeo3149 Esperantoeo315 Esperantoeo3150 Esperantoeo3151 Esperantoeo3152 Esperantoeo3153 Esperantoeo3154 Esperantoeo3155 Esperantoeo3156 Esperantoeo3157 Esperantoeo3158 Esperantoeo3159 Esperantoeo316 Esperantoeo3160 Esperantoeo3161 Esperantoeo3162 Esperantoeo3163 Esperantoeo3164 Esperantoeo3165 Esperantoeo3166 Esperantoeo3167 Esperantoeo3168 Esperantoeo3169 Esperantoeo317 Esperantoeo3170 Esperantoeo3171 Esperantoeo3172 Esperantoeo3173 Esperantoeo3174 Esperantoeo3175 Esperantoeo3176 Esperantoeo3177 Esperantoeo3178 Esperantoeo3179 Esperantoeo318 Esperantoeo3180 Esperantoeo3181 Esperantoeo3182 Esperantoeo3183 Esperantoeo3184 Esperantoeo3185 Esperantoeo3186 Esperantoeo3187 Esperantoeo3188 Esperantoeo3189 Esperantoeo319 Esperantoeo3190 Esperantoeo3191 Esperantoeo3192 Esperantoeo3193 Esperantoeo3194 Esperantoeo3195 Esperantoeo3196 Esperantoeo3197 Esperantoeo3198 Esperantoeo3199 Esperantoeo32 Esperantoeo320 Esperantoeo3200 Esperantoeo3201 Esperantoeo3202 Esperantoeo3203 Esperantoeo3204 Esperantoeo3205 Esperantoeo3206 Esperantoeo3207 Esperantoeo3208 Esperantoeo3209 Esperantoeo321 Esperantoeo3210 Esperantoeo3211 Esperantoeo3212 Esperantoeo3213 Esperantoeo3214 Esperantoeo3215 Esperantoeo3216 Esperantoeo3217 Esperantoeo3218 Esperantoeo3219 Esperantoeo322 Esperantoeo3220 Esperantoeo3221 Esperantoeo3222 Esperantoeo3223 Esperantoeo3224 Esperantoeo3225 Esperantoeo3226 Esperantoeo3227 Esperantoeo3228 Esperantoeo3229 Esperantoeo323 Esperantoeo3230 Esperantoeo3231 Esperantoeo3232 Esperantoeo3233 Esperantoeo3234 Esperantoeo3235 Esperantoeo3236 Esperantoeo3237 Esperantoeo3238 Esperantoeo3239 Esperantoeo324 Esperantoeo3240 Esperantoeo3241 Esperantoeo3242 Esperantoeo3243 Esperantoeo3244 Esperantoeo3245 Esperantoeo3246 Esperantoeo3247 Esperantoeo3248 Esperantoeo3249 Esperantoeo325 Esperantoeo3250 Esperantoeo3251 Esperantoeo3252 Esperantoeo3253 Esperantoeo3254 Esperantoeo3255 Esperantoeo3256 Esperantoeo3257 Esperantoeo3258 Esperantoeo3259 Esperantoeo326 Esperantoeo3260 Esperantoeo3261 Esperantoeo3262 Esperantoeo3263 Esperantoeo3264 Esperantoeo3265 Esperantoeo3266 Esperantoeo3267 Esperantoeo3268 Esperantoeo3269 Esperantoeo327 Esperantoeo3270 Esperantoeo3271 Esperantoeo3272 Esperantoeo3273 Esperantoeo3274 Esperantoeo3275 Esperantoeo3276 Esperantoeo3277 Esperantoeo3278 Esperantoeo3279 Esperantoeo328 Esperantoeo3280 Esperantoeo3281 Esperantoeo3282 Esperantoeo3283 Esperantoeo3284 Esperantoeo3285 Esperantoeo3286 Esperantoeo3287 Esperantoeo3288 Esperantoeo3289 Esperantoeo329 Esperantoeo3290 Esperantoeo3291 Esperantoeo3292 Esperantoeo3293 Esperantoeo3294 Esperantoeo3295 Esperantoeo3296 Esperantoeo3297 Esperantoeo3298 Esperantoeo3299 Esperantoeo33 Esperantoeo330 Esperantoeo3300 Esperantoeo3301 Esperantoeo3302 Esperantoeo3303 Esperantoeo3304 Esperantoeo3305 Esperantoeo3306 Esperantoeo3307 Esperantoeo3308 Esperantoeo3309 Esperantoeo331 Esperantoeo3310 Esperantoeo3311 Esperantoeo3312 Esperantoeo3313 Esperantoeo3314 Esperantoeo3315 Esperantoeo3316 Esperantoeo3317 Esperantoeo3318 Esperantoeo3319 Esperantoeo332 Esperantoeo3320 Esperantoeo3321 Esperantoeo3322 Esperantoeo3323 Esperantoeo3324 Esperantoeo3325 Esperantoeo3326 Esperantoeo3327 Esperantoeo3328 Esperantoeo3329 Esperantoeo333 Esperantoeo3330 Esperantoeo3331 Esperantoeo3332 Esperantoeo3333 Esperantoeo3334 Esperantoeo3335 Esperantoeo3336 Esperantoeo3337 Esperantoeo3338 Esperantoeo3339 Esperantoeo334 Esperantoeo3340 Esperantoeo3341 Esperantoeo3342 Esperantoeo3343 Esperantoeo3344 Esperantoeo3345 Esperantoeo3346 Esperantoeo3347 Esperantoeo3348 Esperantoeo3349 Esperantoeo335 Esperantoeo3350 Esperantoeo3351 Esperantoeo3352 Esperantoeo3353 Esperantoeo3354 Esperantoeo3355 Esperantoeo3356 Esperantoeo3357 Esperantoeo3358 Esperantoeo3359 Esperantoeo336 Esperantoeo3360 Esperantoeo3361 Esperantoeo3362 Esperantoeo3363 Esperantoeo3364 Esperantoeo3365 Esperantoeo3366 Esperantoeo3367 Esperantoeo3368 Esperantoeo3369 Esperantoeo337 Esperantoeo3370 Esperantoeo3371 Esperantoeo3372 Esperantoeo3373 Esperantoeo3374 Esperantoeo3375 Esperantoeo3376 Esperantoeo3377 Esperantoeo3378 Esperantoeo3379 Esperantoeo338 Esperantoeo3380 Esperantoeo3381 Esperantoeo3382 Esperantoeo3383 Esperantoeo3384 Esperantoeo3385 Esperantoeo3386 Esperantoeo3387 Esperantoeo3388 Esperantoeo3389 Esperantoeo339 Esperantoeo3390 Esperantoeo3391 Esperantoeo3392 Esperantoeo3393 Esperantoeo3394 Esperantoeo3395 Esperantoeo3396 Esperantoeo3397 Esperantoeo3398 Esperantoeo3399 Esperantoeo34 Esperantoeo340 Esperantoeo3400 Esperantoeo3401 Esperantoeo3402 Esperantoeo3403 Esperantoeo3404 Esperantoeo3405 Esperantoeo3406 Esperantoeo3407 Esperantoeo3408 Esperantoeo3409 Esperantoeo341 Esperantoeo3410 Esperantoeo3411 Esperantoeo3412 Esperantoeo3413 Esperantoeo3414 Esperantoeo3415 Esperantoeo3416 Esperantoeo3417 Esperantoeo3418 Esperantoeo3419 Esperantoeo342 Esperantoeo3420 Esperantoeo3421 Esperantoeo3422 Esperantoeo3423 Esperantoeo3424 Esperantoeo3425 Esperantoeo3426 Esperantoeo3427 Esperantoeo3428 Esperantoeo3429 Esperantoeo343 Esperantoeo3430 Esperantoeo3431 Esperantoeo3432 Esperantoeo3433 Esperantoeo3434 Esperantoeo3435 Esperantoeo3436 Esperantoeo3437 Esperantoeo3438 Esperantoeo3439 Esperantoeo344 Esperantoeo3440 Esperantoeo3441 Esperantoeo3442 Esperantoeo3443 Esperantoeo3444 Esperantoeo3445 Esperantoeo3446 Esperantoeo3447 Esperantoeo3448 Esperantoeo3449 Esperantoeo345 Esperantoeo3450 Esperantoeo3451 Esperantoeo3452 Esperantoeo3453 Esperantoeo3454 Esperantoeo3455 Esperantoeo3456 Esperantoeo3457 Esperantoeo3458 Esperantoeo3459 Esperantoeo346 Esperantoeo3460 Esperantoeo3461 Esperantoeo3462 Esperantoeo3463 Esperantoeo3464 Esperantoeo3465 Esperantoeo3466 Esperantoeo3467 Esperantoeo3468 Esperantoeo3469 Esperantoeo347 Esperantoeo3470 Esperantoeo3471 Esperantoeo3472 Esperantoeo3473 Esperantoeo3474 Esperantoeo3475 Esperantoeo3476 Esperantoeo3477 Esperantoeo3478 Esperantoeo3479 Esperantoeo348 Esperantoeo3480 Esperantoeo3481 Esperantoeo3482 Esperantoeo3483 Esperantoeo3484 Esperantoeo3485 Esperantoeo3486 Esperantoeo3487 Esperantoeo3488 Esperantoeo3489 Esperantoeo349 Esperantoeo3490 Esperantoeo3491 Esperantoeo3492 Esperantoeo3493 Esperantoeo3494 Esperantoeo3495 Esperantoeo3496 Esperantoeo3497 Esperantoeo3498 Esperantoeo3499 Esperantoeo35 Esperantoeo350 Esperantoeo3500 Esperantoeo3501 Esperantoeo3502 Esperantoeo3503 Esperantoeo3504 Esperantoeo3505 Esperantoeo3506 Esperantoeo3507 Esperantoeo3508 Esperantoeo3509 Esperantoeo351 Esperantoeo3510 Esperantoeo3511 Esperantoeo3512 Esperantoeo3513 Esperantoeo3514 Esperantoeo3515 Esperantoeo3516 Esperantoeo3517 Esperantoeo3518 Esperantoeo3519 Esperantoeo352 Esperantoeo3520 Esperantoeo3521 Esperantoeo3522 Esperantoeo3523 Esperantoeo3524 Esperantoeo3525 Esperantoeo3526 Esperantoeo3527 Esperantoeo3528 Esperantoeo3529 Esperantoeo353 Esperantoeo3530 Esperantoeo3531 Esperantoeo3532 Esperantoeo3533 Esperantoeo3534 Esperantoeo3535 Esperantoeo3536 Esperantoeo3537 Esperantoeo3538 Esperantoeo3539 Esperantoeo354 Esperantoeo3540 Esperantoeo3541 Esperantoeo3542 Esperantoeo3543 Esperantoeo3544 Esperantoeo3545 Esperantoeo3546 Esperantoeo3547 Esperantoeo3548 Esperantoeo3549 Esperantoeo355 Esperantoeo3550 Esperantoeo3551 Esperantoeo3552 Esperantoeo3553 Esperantoeo3554 Esperantoeo3555 Esperantoeo3556 Esperantoeo3557 Esperantoeo3558 Esperantoeo3559 Esperantoeo356 Esperantoeo3560 Esperantoeo3561 Esperantoeo3562 Esperantoeo3563 Esperantoeo3564 Esperantoeo3565 Esperantoeo3566 Esperantoeo3567 Esperantoeo3568 Esperantoeo3569 Esperantoeo357 Esperantoeo3570 Esperantoeo3571 Esperantoeo3572 Esperantoeo3573 Esperantoeo3574 Esperantoeo3575 Esperantoeo3576 Esperantoeo3577 Esperantoeo3578 Esperantoeo3579 Esperantoeo358 Esperantoeo3580 Esperantoeo3581 Esperantoeo3582 Esperantoeo3583 Esperantoeo3584 Esperantoeo3585 Esperantoeo3586 Esperantoeo3587 Esperantoeo3588 Esperantoeo3589 Esperantoeo359 Esperantoeo3590 Esperantoeo3591 Esperantoeo3592 Esperantoeo3593 Esperantoeo3594 Esperantoeo3595 Esperantoeo3596 Esperantoeo3597 Esperantoeo3598 Esperantoeo3599 Esperantoeo36 Esperantoeo360 Esperantoeo3600 Esperantoeo3601 Esperantoeo3602 Esperantoeo3603 Esperantoeo3604 Esperantoeo3605 Esperantoeo3606 Esperantoeo3607 Esperantoeo3608 Esperantoeo3609 Esperantoeo361 Esperantoeo3610 Esperantoeo3611 Esperantoeo3612 Esperantoeo3613 Esperantoeo3614 Esperantoeo3615 Esperantoeo3616 Esperantoeo3617 Esperantoeo3618 Esperantoeo3619 Esperantoeo362 Esperantoeo3620 Esperantoeo3621 Esperantoeo3622 Esperantoeo3623 Esperantoeo3624 Esperantoeo3625 Esperantoeo3626 Esperantoeo3627 Esperantoeo3628 Esperantoeo3629 Esperantoeo363 Esperantoeo3630 Esperantoeo3631 Esperantoeo3632 Esperantoeo3633 Esperantoeo3634 Esperantoeo3635 Esperantoeo3636 Esperantoeo3637 Esperantoeo3638 Esperantoeo3639 Esperantoeo364 Esperantoeo3640 Esperantoeo3641 Esperantoeo3642 Esperantoeo3643 Esperantoeo3644 Esperantoeo3645 Esperantoeo3646 Esperantoeo3647 Esperantoeo3648 Esperantoeo3649 Esperantoeo365 Esperantoeo3650 Esperantoeo3651 Esperantoeo3652 Esperantoeo3653 Esperantoeo3654 Esperantoeo3655 Esperantoeo3656 Esperantoeo3657 Esperantoeo3658 Esperantoeo3659 Esperantoeo366 Esperantoeo3660 Esperantoeo3661 Esperantoeo3662 Esperantoeo3663 Esperantoeo3664 Esperantoeo3665 Esperantoeo3666 Esperantoeo3667 Esperantoeo3668 Esperantoeo3669 Esperantoeo367 Esperantoeo3670 Esperantoeo3671 Esperantoeo3672 Esperantoeo3673 Esperantoeo3674 Esperantoeo3675 Esperantoeo3676 Esperantoeo3677 Esperantoeo3678 Esperantoeo3679 Esperantoeo368 Esperantoeo3680 Esperantoeo3681 Esperantoeo3682 Esperantoeo3683 Esperantoeo3684 Esperantoeo3685 Esperantoeo3686 Esperantoeo3687 Esperantoeo3688 Esperantoeo3689 Esperantoeo369 Esperantoeo3690 Esperantoeo3691 Esperantoeo3692 Esperantoeo3693 Esperantoeo3694 Esperantoeo3695 Esperantoeo3696 Esperantoeo3697 Esperantoeo3698 Esperantoeo3699 Esperantoeo37 Esperantoeo370 Esperantoeo3700 Esperantoeo3701 Esperantoeo3702 Esperantoeo3703 Esperantoeo3704 Esperantoeo3705 Esperantoeo3706 Esperantoeo3707 Esperantoeo3708 Esperantoeo3709 Esperantoeo371 Esperantoeo3710 Esperantoeo3711 Esperantoeo3712 Esperantoeo3713 Esperantoeo3714 Esperantoeo3715 Esperantoeo3716 Esperantoeo3717 Esperantoeo3718 Esperantoeo3719 Esperantoeo372 Esperantoeo3720 Esperantoeo3721 Esperantoeo3722 Esperantoeo3723 Esperantoeo3724 Esperantoeo3725 Esperantoeo3726 Esperantoeo3727 Esperantoeo3728 Esperantoeo3729 Esperantoeo373 Esperantoeo3730 Esperantoeo3731 Esperantoeo3732 Esperantoeo3733 Esperantoeo3734 Esperantoeo3735 Esperantoeo3736 Esperantoeo3737 Esperantoeo3738 Esperantoeo3739 Esperantoeo374 Esperantoeo3740 Esperantoeo3741 Esperantoeo3742 Esperantoeo3743 Esperantoeo3744 Esperantoeo3745 Esperantoeo3746 Esperantoeo3747 Esperantoeo3748 Esperantoeo3749 Esperantoeo375 Esperantoeo3750 Esperantoeo3751 Esperantoeo3752 Esperantoeo3753 Esperantoeo3754 Esperantoeo3755 Esperantoeo3756 Esperantoeo3757 Esperantoeo3758 Esperantoeo3759 Esperantoeo376 Esperantoeo3760 Esperantoeo3761 Esperantoeo3762 Esperantoeo3763 Esperantoeo3764 Esperantoeo3765 Esperantoeo3766 Esperantoeo3767 Esperantoeo3768 Esperantoeo3769 Esperantoeo377 Esperantoeo3770 Esperantoeo3771 Esperantoeo3772 Esperantoeo3773 Esperantoeo3774 Esperantoeo3775 Esperantoeo3776 Esperantoeo3777 Esperantoeo3778 Esperantoeo3779 Esperantoeo378 Esperantoeo3780 Esperantoeo3781 Esperantoeo3782 Esperantoeo3783 Esperantoeo3784 Esperantoeo3785 Esperantoeo3786 Esperantoeo3787 Esperantoeo3788 Esperantoeo3789 Esperantoeo379 Esperantoeo3790 Esperantoeo3791 Esperantoeo3792 Esperantoeo3793 Esperantoeo3794 Esperantoeo3795 Esperantoeo3796 Esperantoeo3797 Esperantoeo3798 Esperantoeo3799 Esperantoeo38 Esperantoeo380 Esperantoeo3800 Esperantoeo3801 Esperantoeo3802 Esperantoeo3803 Esperantoeo3804 Esperantoeo3805 Esperantoeo3806 Esperantoeo3807 Esperantoeo3808 Esperantoeo3809 Esperantoeo381 Esperantoeo3810 Esperantoeo3811 Esperantoeo3812 Esperantoeo3813 Esperantoeo3814 Esperantoeo3815 Esperantoeo3816 Esperantoeo3817 Esperantoeo3818 Esperantoeo3819 Esperantoeo382 Esperantoeo3820 Esperantoeo3821 Esperantoeo3822 Esperantoeo3823 Esperantoeo3824 Esperantoeo3825 Esperantoeo3826 Esperantoeo3827 Esperantoeo3828 Esperantoeo3829 Esperantoeo383 Esperantoeo3830 Esperantoeo3831 Esperantoeo3832 Esperantoeo3833 Esperantoeo3834 Esperantoeo3835 Esperantoeo3836 Esperantoeo3837 Esperantoeo3838 Esperantoeo3839 Esperantoeo384 Esperantoeo3840 Esperantoeo3841 Esperantoeo3842 Esperantoeo3843 Esperantoeo3844 Esperantoeo3845 Esperantoeo3846 Esperantoeo3847 Esperantoeo3848 Esperantoeo3849 Esperantoeo385 Esperantoeo3850 Esperantoeo3851 Esperantoeo3852 Esperantoeo3853 Esperantoeo3854 Esperantoeo3855 Esperantoeo3856 Esperantoeo3857 Esperantoeo3858 Esperantoeo3859 Esperantoeo386 Esperantoeo3860 Esperantoeo3861 Esperantoeo3862 Esperantoeo3863 Esperantoeo3864 Esperantoeo3865 Esperantoeo3866 Esperantoeo3867 Esperantoeo3868 Esperantoeo3869 Esperantoeo387 Esperantoeo3870 Esperantoeo3871 Esperantoeo3872 Esperantoeo3873 Esperantoeo3874 Esperantoeo3875 Esperantoeo3876 Esperantoeo3877 Esperantoeo3878 Esperantoeo3879 Esperantoeo388 Esperantoeo3880 Esperantoeo3881 Esperantoeo3882 Esperantoeo3883 Esperantoeo3884 Esperantoeo3885 Esperantoeo3886 Esperantoeo3887 Esperantoeo3888 Esperantoeo3889 Esperantoeo389 Esperantoeo3890 Esperantoeo3891 Esperantoeo3892 Esperantoeo3893 Esperantoeo3894 Esperantoeo3895 Esperantoeo3896 Esperantoeo3897 Esperantoeo3898 Esperantoeo3899 Esperantoeo39 Esperantoeo390 Esperantoeo3900 Esperantoeo3901 Esperantoeo3902 Esperantoeo3903 Esperantoeo3904 Esperantoeo3905 Esperantoeo3906 Esperantoeo3907 Esperantoeo3908 Esperantoeo3909 Esperantoeo391 Esperantoeo3910 Esperantoeo3911 Esperantoeo3912 Esperantoeo3913 Esperantoeo3914 Esperantoeo3915 Esperantoeo3916 Esperantoeo3917 Esperantoeo3918 Esperantoeo3919 Esperantoeo392 Esperantoeo3920 Esperantoeo3921 Esperantoeo3922 Esperantoeo3923 Esperantoeo3924 Esperantoeo3925 Esperantoeo3926 Esperantoeo3927 Esperantoeo3928 Esperantoeo3929 Esperantoeo393 Esperantoeo3930 Esperantoeo3931 Esperantoeo3932 Esperantoeo3933 Esperantoeo3934 Esperantoeo3935 Esperantoeo3936 Esperantoeo3937 Esperantoeo3938 Esperantoeo3939 Esperantoeo394 Esperantoeo3940 Esperantoeo3941 Esperantoeo3942 Esperantoeo3943 Esperantoeo3944 Esperantoeo3945 Esperantoeo3946 Esperantoeo3947 Esperantoeo3948 Esperantoeo3949 Esperantoeo395 Esperantoeo3950 Esperantoeo3951 Esperantoeo3952 Esperantoeo3953 Esperantoeo3954 Esperantoeo3955 Esperantoeo3956 Esperantoeo3957 Esperantoeo3958 Esperantoeo3959 Esperantoeo396 Esperantoeo3960 Esperantoeo3961 Esperantoeo3962 Esperantoeo3963 Esperantoeo3964 Esperantoeo3965 Esperantoeo3966 Esperantoeo3967 Esperantoeo3968 Esperantoeo3969 Esperantoeo397 Esperantoeo3970 Esperantoeo3971 Esperantoeo3972 Esperantoeo3973 Esperantoeo3974 Esperantoeo3975 Esperantoeo3976 Esperantoeo3977 Esperantoeo3978 Esperantoeo3979 Esperantoeo398 Esperantoeo3980 Esperantoeo3981 Esperantoeo3982 Esperantoeo3983 Esperantoeo3984 Esperantoeo3985 Esperantoeo3986 Esperantoeo3987 Esperantoeo3988 Esperantoeo3989 Esperantoeo399 Esperantoeo3990 Esperantoeo3991 Esperantoeo3992 Esperantoeo3993 Esperantoeo3994 Esperantoeo3995 Esperantoeo3996 Esperantoeo3997 Esperantoeo3998 Esperantoeo3999 Esperantoeo4 Esperantoeo40 Esperantoeo400 Esperantoeo4000 Esperantoeo4001 Esperantoeo4002 Esperantoeo4003 Esperantoeo4004 Esperantoeo4005 Esperantoeo4006 Esperantoeo4007 Esperantoeo4008 Esperantoeo4009 Esperantoeo401 Esperantoeo4010 Esperantoeo4011 Esperantoeo4012 Esperantoeo4013 Esperantoeo4014 Esperantoeo4015 Esperantoeo4016 Esperantoeo4017 Esperantoeo4018 Esperantoeo4019 Esperantoeo402 Esperantoeo4020 Esperantoeo4021 Esperantoeo4022 Esperantoeo4023 Esperantoeo4024 Esperantoeo4025 Esperantoeo4026 Esperantoeo4027 Esperantoeo4028 Esperantoeo4029 Esperantoeo403 Esperantoeo4030 Esperantoeo4031 Esperantoeo4032 Esperantoeo4033 Esperantoeo4034 Esperantoeo4035 Esperantoeo4036 Esperantoeo4037 Esperantoeo4038 Esperantoeo4039 Esperantoeo404 Esperantoeo4040 Esperantoeo4041 Esperantoeo4042 Esperantoeo4043 Esperantoeo4044 Esperantoeo4045 Esperantoeo4046 Esperantoeo4047 Esperantoeo4048 Esperantoeo4049 Esperantoeo405 Esperantoeo4050 Esperantoeo4051 Esperantoeo4052 Esperantoeo4053 Esperantoeo4054 Esperantoeo4055 Esperantoeo4056 Esperantoeo4057 Esperantoeo4058 Esperantoeo4059 Esperantoeo406 Esperantoeo4060 Esperantoeo4061 Esperantoeo4062 Esperantoeo4063 Esperantoeo4064 Esperantoeo4065 Esperantoeo4066 Esperantoeo4067 Esperantoeo4068 Esperantoeo4069 Esperantoeo407 Esperantoeo4070 Esperantoeo4071 Esperantoeo4072 Esperantoeo4073 Esperantoeo4074 Esperantoeo4075 Esperantoeo4076 Esperantoeo4077 Esperantoeo4078 Esperantoeo4079 Esperantoeo408 Esperantoeo4080 Esperantoeo4081 Esperantoeo4082 Esperantoeo4083 Esperantoeo4084 Esperantoeo4085 Esperantoeo4086 Esperantoeo4087 Esperantoeo4088 Esperantoeo4089 Esperantoeo409 Esperantoeo4090 Esperantoeo4091 Esperantoeo4092 Esperantoeo4093 Esperantoeo4094 Esperantoeo4095 Esperantoeo4096 Esperantoeo4097 Esperantoeo4098 Esperantoeo4099 Esperantoeo41 Esperantoeo410 Esperantoeo4100 Esperantoeo4101 Esperantoeo4102 Esperantoeo4103 Esperantoeo4104 Esperantoeo4105 Esperantoeo4106 Esperantoeo4107 Esperantoeo4108 Esperantoeo4109 Esperantoeo411 Esperantoeo4110 Esperantoeo4111 Esperantoeo4112 Esperantoeo4113 Esperantoeo4114 Esperantoeo4115 Esperantoeo4116 Esperantoeo4117 Esperantoeo4118 Esperantoeo4119 Esperantoeo412 Esperantoeo4120 Esperantoeo4121 Esperantoeo4122 Esperantoeo4123 Esperantoeo4124 Esperantoeo4125 Esperantoeo4126 Esperantoeo4127 Esperantoeo4128 Esperantoeo4129 Esperantoeo413 Esperantoeo4130 Esperantoeo4131 Esperantoeo4132 Esperantoeo4133 Esperantoeo4134 Esperantoeo4135 Esperantoeo4136 Esperantoeo4137 Esperantoeo4138 Esperantoeo4139 Esperantoeo414 Esperantoeo4140 Esperantoeo4141 Esperantoeo4142 Esperantoeo4143 Esperantoeo4144 Esperantoeo4145 Esperantoeo4146 Esperantoeo4147 Esperantoeo4148 Esperantoeo4149 Esperantoeo415 Esperantoeo4150 Esperantoeo4151 Esperantoeo4152 Esperantoeo4153 Esperantoeo4154 Esperantoeo4155 Esperantoeo4156 Esperantoeo4157 Esperantoeo4158 Esperantoeo4159 Esperantoeo416 Esperantoeo4160 Esperantoeo4161 Esperantoeo4162 Esperantoeo4163 Esperantoeo4164 Esperantoeo4165 Esperantoeo4166 Esperantoeo4167 Esperantoeo4168 Esperantoeo4169 Esperantoeo417 Esperantoeo4170 Esperantoeo4171 Esperantoeo4172 Esperantoeo4173 Esperantoeo4174 Esperantoeo4175 Esperantoeo4176 Esperantoeo4177 Esperantoeo4178 Esperantoeo4179 Esperantoeo418 Esperantoeo4180 Esperantoeo4181 Esperantoeo4182 Esperantoeo4183 Esperantoeo4184 Esperantoeo4185 Esperantoeo4186 Esperantoeo4187 Esperantoeo4188 Esperantoeo4189 Esperantoeo419 Esperantoeo4190 Esperantoeo4191 Esperantoeo4192 Esperantoeo4193 Esperantoeo4194 Esperantoeo4195 Esperantoeo4196 Esperantoeo4197 Esperantoeo4198 Esperantoeo4199 Esperantoeo42 Esperantoeo420 Esperantoeo4200 Esperantoeo4201 Esperantoeo4202 Esperantoeo4203 Esperantoeo4204 Esperantoeo4205 Esperantoeo4206 Esperantoeo4207 Esperantoeo4208 Esperantoeo4209 Esperantoeo421 Esperantoeo4210 Esperantoeo4211 Esperantoeo4212 Esperantoeo4213 Esperantoeo4214 Esperantoeo4215 Esperantoeo4216 Esperantoeo4217 Esperantoeo4218 Esperantoeo4219 Esperantoeo422 Esperantoeo4220 Esperantoeo4221 Esperantoeo4222 Esperantoeo4223 Esperantoeo4224 Esperantoeo4225 Esperantoeo4226 Esperantoeo4227 Esperantoeo4228 Esperantoeo4229 Esperantoeo423 Esperantoeo4230 Esperantoeo4231 Esperantoeo4232 Esperantoeo4233 Esperantoeo4234 Esperantoeo4235 Esperantoeo4236 Esperantoeo4237 Esperantoeo4238 Esperantoeo4239 Esperantoeo424 Esperantoeo4240 Esperantoeo4241 Esperantoeo4242 Esperantoeo4243 Esperantoeo4244 Esperantoeo4245 Esperantoeo4246 Esperantoeo4247 Esperantoeo4248 Esperantoeo4249 Esperantoeo425 Esperantoeo4250 Esperantoeo4251 Esperantoeo4252 Esperantoeo4253 Esperantoeo4254 Esperantoeo4255 Esperantoeo4256 Esperantoeo4257 Esperantoeo4258 Esperantoeo4259 Esperantoeo426 Esperantoeo4260 Esperantoeo4261 Esperantoeo4262 Esperantoeo4263 Esperantoeo4264 Esperantoeo4265 Esperantoeo4266 Esperantoeo4267 Esperantoeo4268 Esperantoeo4269 Esperantoeo427 Esperantoeo4270 Esperantoeo4271 Esperantoeo4272 Esperantoeo4273 Esperantoeo4274 Esperantoeo4275 Esperantoeo4276 Esperantoeo4277 Esperantoeo4278 Esperantoeo4279 Esperantoeo428 Esperantoeo4280 Esperantoeo4281 Esperantoeo4282 Esperantoeo4283 Esperantoeo4284 Esperantoeo4285 Esperantoeo4286 Esperantoeo4287 Esperantoeo4288 Esperantoeo4289 Esperantoeo429 Esperantoeo4290 Esperantoeo4291 Esperantoeo4292 Esperantoeo4293 Esperantoeo4294 Esperantoeo4295 Esperantoeo4296 Esperantoeo4297 Esperantoeo4298 Esperantoeo4299 Esperantoeo43 Esperantoeo430 Esperantoeo4300 Esperantoeo4301 Esperantoeo4302 Esperantoeo4303 Esperantoeo4304 Esperantoeo4305 Esperantoeo4306 Esperantoeo4307 Esperantoeo4308 Esperantoeo4309 Esperantoeo431 Esperantoeo4310 Esperantoeo4311 Esperantoeo4312 Esperantoeo4313 Esperantoeo4314 Esperantoeo4315 Esperantoeo4316 Esperantoeo4317 Esperantoeo4318 Esperantoeo4319 Esperantoeo432 Esperantoeo4320 Esperantoeo4321 Esperantoeo4322 Esperantoeo4323 Esperantoeo4324 Esperantoeo4325 Esperantoeo4326 Esperantoeo4327 Esperantoeo4328 Esperantoeo4329 Esperantoeo433 Esperantoeo4330 Esperantoeo4331 Esperantoeo4332 Esperantoeo4333 Esperantoeo4334 Esperantoeo4335 Esperantoeo4336 Esperantoeo4337 Esperantoeo4338 Esperantoeo4339 Esperantoeo434 Esperantoeo4340 Esperantoeo4341 Esperantoeo4342 Esperantoeo4343 Esperantoeo4344 Esperantoeo4345 Esperantoeo4346 Esperantoeo4347 Esperantoeo4348 Esperantoeo4349 Esperantoeo435 Esperantoeo4350 Esperantoeo4351 Esperantoeo4352 Esperantoeo4353 Esperantoeo4354 Esperantoeo4355 Esperantoeo4356 Esperantoeo4357 Esperantoeo4358 Esperantoeo4359 Esperantoeo436 Esperantoeo4360 Esperantoeo4361 Esperantoeo4362 Esperantoeo4363 Esperantoeo4364 Esperantoeo4365 Esperantoeo4366 Esperantoeo4367 Esperantoeo4368 Esperantoeo4369 Esperantoeo437 Esperantoeo4370 Esperantoeo4371 Esperantoeo4372 Esperantoeo4373 Esperantoeo4374 Esperantoeo4375 Esperantoeo4376 Esperantoeo4377 Esperantoeo4378 Esperantoeo4379 Esperantoeo438 Esperantoeo4380 Esperantoeo4381 Esperantoeo4382 Esperantoeo4383 Esperantoeo4384 Esperantoeo4385 Esperantoeo4386 Esperantoeo4387 Esperantoeo4388 Esperantoeo4389 Esperantoeo439 Esperantoeo4390 Esperantoeo4391 Esperantoeo4392 Esperantoeo4393 Esperantoeo4394 Esperantoeo4395 Esperantoeo4396 Esperantoeo4397 Esperantoeo4398 Esperantoeo4399 Esperantoeo44 Esperantoeo440 Esperantoeo4400 Esperantoeo4401 Esperantoeo4402 Esperantoeo4403 Esperantoeo4404 Esperantoeo4405 Esperantoeo4406 Esperantoeo4407 Esperantoeo4408 Esperantoeo4409 Esperantoeo441 Esperantoeo4410 Esperantoeo4411 Esperantoeo4412 Esperantoeo4413 Esperantoeo4414 Esperantoeo4415 Esperantoeo4416 Esperantoeo4417 Esperantoeo4418 Esperantoeo4419 Esperantoeo442 Esperantoeo4420 Esperantoeo4421 Esperantoeo4422 Esperantoeo4423 Esperantoeo4424 Esperantoeo4425 Esperantoeo4426 Esperantoeo4427 Esperantoeo4428 Esperantoeo4429 Esperantoeo443 Esperantoeo4430 Esperantoeo4431 Esperantoeo4432 Esperantoeo4433 Esperantoeo4434 Esperantoeo4435 Esperantoeo4436 Esperantoeo4437 Esperantoeo4438 Esperantoeo4439 Esperantoeo444 Esperantoeo4440 Esperantoeo4441 Esperantoeo4442 Esperantoeo4443 Esperantoeo4444 Esperantoeo4445 Esperantoeo4446 Esperantoeo4447 Esperantoeo4448 Esperantoeo4449 Esperantoeo445 Esperantoeo4450 Esperantoeo4451 Esperantoeo4452 Esperantoeo4453 Esperantoeo4454 Esperantoeo4455 Esperantoeo4456 Esperantoeo4457 Esperantoeo4458 Esperantoeo4459 Esperantoeo446 Esperantoeo4460 Esperantoeo4461 Esperantoeo4462 Esperantoeo4463 Esperantoeo4464 Esperantoeo4465 Esperantoeo4466 Esperantoeo4467 Esperantoeo4468 Esperantoeo4469 Esperantoeo447 Esperantoeo4470 Esperantoeo4471 Esperantoeo4472 Esperantoeo4473 Esperantoeo4474 Esperantoeo4475 Esperantoeo4476 Esperantoeo4477 Esperantoeo4478 Esperantoeo4479 Esperantoeo448 Esperantoeo4480 Esperantoeo4481 Esperantoeo4482 Esperantoeo4483 Esperantoeo4484 Esperantoeo4485 Esperantoeo4486 Esperantoeo4487 Esperantoeo4488 Esperantoeo4489 Esperantoeo449 Esperantoeo4490 Esperantoeo4491 Esperantoeo4492 Esperantoeo4493 Esperantoeo4494 Esperantoeo4495 Esperantoeo4496 Esperantoeo4497 Esperantoeo4498 Esperantoeo4499 Esperantoeo45 Esperantoeo450 Esperantoeo4500 Esperantoeo4501 Esperantoeo4502 Esperantoeo4503 Esperantoeo4504 Esperantoeo4505 Esperantoeo4506 Esperantoeo4507 Esperantoeo4508 Esperantoeo4509 Esperantoeo451 Esperantoeo4510 Esperantoeo4511 Esperantoeo4512 Esperantoeo4513 Esperantoeo4514 Esperantoeo4515 Esperantoeo4516 Esperantoeo4517 Esperantoeo4518 Esperantoeo4519 Esperantoeo452 Esperantoeo4520 Esperantoeo4521 Esperantoeo4522 Esperantoeo4523 Esperantoeo4524 Esperantoeo4525 Esperantoeo4526 Esperantoeo4527 Esperantoeo4528 Esperantoeo4529 Esperantoeo453 Esperantoeo4530 Esperantoeo4531 Esperantoeo4532 Esperantoeo4533 Esperantoeo4534 Esperantoeo4535 Esperantoeo4536 Esperantoeo4537 Esperantoeo4538 Esperantoeo4539 Esperantoeo454 Esperantoeo4540 Esperantoeo4541 Esperantoeo4542 Esperantoeo4543 Esperantoeo4544 Esperantoeo4545 Esperantoeo4546 Esperantoeo4547 Esperantoeo4548 Esperantoeo4549 Esperantoeo455 Esperantoeo4550 Esperantoeo4551 Esperantoeo4552 Esperantoeo4553 Esperantoeo4554 Esperantoeo4555 Esperantoeo4556 Esperantoeo4557 Esperantoeo4558 Esperantoeo4559 Esperantoeo456 Esperantoeo4560 Esperantoeo4561 Esperantoeo4562 Esperantoeo4563 Esperantoeo4564 Esperantoeo4565 Esperantoeo4566 Esperantoeo4567 Esperantoeo4568 Esperantoeo4569 Esperantoeo457 Esperantoeo4570 Esperantoeo4571 Esperantoeo4572 Esperantoeo4573 Esperantoeo4574 Esperantoeo4575 Esperantoeo4576 Esperantoeo4577 Esperantoeo4578 Esperantoeo4579 Esperantoeo458 Esperantoeo4580 Esperantoeo4581 Esperantoeo4582 Esperantoeo4583 Esperantoeo4584 Esperantoeo4585 Esperantoeo4586 Esperantoeo4587 Esperantoeo4588 Esperantoeo4589 Esperantoeo459 Esperantoeo4590 Esperantoeo4591 Esperantoeo4592 Esperantoeo4593 Esperantoeo4594 Esperantoeo4595 Esperantoeo4596 Esperantoeo4597 Esperantoeo4598 Esperantoeo4599 Esperantoeo46 Esperantoeo460 Esperantoeo4600 Esperantoeo4601 Esperantoeo4602 Esperantoeo4603 Esperantoeo4604 Esperantoeo4605 Esperantoeo4606 Esperantoeo4607 Esperantoeo4608 Esperantoeo4609 Esperantoeo461 Esperantoeo4610 Esperantoeo4611 Esperantoeo4612 Esperantoeo4613 Esperantoeo4614 Esperantoeo4615 Esperantoeo4616 Esperantoeo4617 Esperantoeo4618 Esperantoeo4619 Esperantoeo462 Esperantoeo4620 Esperantoeo4621 Esperantoeo4622 Esperantoeo4623 Esperantoeo4624 Esperantoeo4625 Esperantoeo4626 Esperantoeo4627 Esperantoeo4628 Esperantoeo4629 Esperantoeo463 Esperantoeo4630 Esperantoeo4631 Esperantoeo4632 Esperantoeo4633 Esperantoeo4634 Esperantoeo4635 Esperantoeo4636 Esperantoeo4637 Esperantoeo4638 Esperantoeo4639 Esperantoeo464 Esperantoeo4640 Esperantoeo4641 Esperantoeo4642 Esperantoeo4643 Esperantoeo4644 Esperantoeo4645 Esperantoeo4646 Esperantoeo4647 Esperantoeo4648 Esperantoeo4649 Esperantoeo465 Esperantoeo4650 Esperantoeo4651 Esperantoeo4652 Esperantoeo4653 Esperantoeo4654 Esperantoeo4655 Esperantoeo4656 Esperantoeo4657 Esperantoeo4658 Esperantoeo4659 Esperantoeo466 Esperantoeo4660 Esperantoeo4661 Esperantoeo4662 Esperantoeo4663 Esperantoeo4664 Esperantoeo4665 Esperantoeo4666 Esperantoeo4667 Esperantoeo4668 Esperantoeo4669 Esperantoeo467 Esperantoeo4670 Esperantoeo4671 Esperantoeo4672 Esperantoeo4673 Esperantoeo4674 Esperantoeo4675 Esperantoeo4676 Esperantoeo4677 Esperantoeo4678 Esperantoeo4679 Esperantoeo468 Esperantoeo4680 Esperantoeo4681 Esperantoeo4682 Esperantoeo4683 Esperantoeo4684 Esperantoeo4685 Esperantoeo4686 Esperantoeo4687 Esperantoeo4688 Esperantoeo4689 Esperantoeo469 Esperantoeo4690 Esperantoeo4691 Esperantoeo4692 Esperantoeo4693 Esperantoeo4694 Esperantoeo4695 Esperantoeo4696 Esperantoeo4697 Esperantoeo4698 Esperantoeo4699 Esperantoeo47 Esperantoeo470 Esperantoeo4700 Esperantoeo4701 Esperantoeo4702 Esperantoeo4703 Esperantoeo4704 Esperantoeo4705 Esperantoeo4706 Esperantoeo4707 Esperantoeo4708 Esperantoeo4709 Esperantoeo471 Esperantoeo4710 Esperantoeo4711 Esperantoeo4712 Esperantoeo4713 Esperantoeo4714 Esperantoeo4715 Esperantoeo4716 Esperantoeo4717 Esperantoeo4718 Esperantoeo4719 Esperantoeo472 Esperantoeo4720 Esperantoeo4721 Esperantoeo4722 Esperantoeo4723 Esperantoeo4724 Esperantoeo4725 Esperantoeo4726 Esperantoeo4727 Esperantoeo4728 Esperantoeo4729 Esperantoeo473 Esperantoeo4730 Esperantoeo4731 Esperantoeo4732 Esperantoeo4733 Esperantoeo4734 Esperantoeo4735 Esperantoeo4736 Esperantoeo4737 Esperantoeo4738 Esperantoeo4739 Esperantoeo474 Esperantoeo4740 Esperantoeo4741 Esperantoeo4742 Esperantoeo4743 Esperantoeo4744 Esperantoeo4745 Esperantoeo4746 Esperantoeo4747 Esperantoeo4748 Esperantoeo4749 Esperantoeo475 Esperantoeo4750 Esperantoeo4751 Esperantoeo4752 Esperantoeo4753 Esperantoeo4754 Esperantoeo4755 Esperantoeo4756 Esperantoeo4757 Esperantoeo4758 Esperantoeo4759 Esperantoeo476 Esperantoeo4760 Esperantoeo4761 Esperantoeo4762 Esperantoeo4763 Esperantoeo4764 Esperantoeo4765 Esperantoeo4766 Esperantoeo4767 Esperantoeo4768 Esperantoeo4769 Esperantoeo477 Esperantoeo4770 Esperantoeo4771 Esperantoeo4772 Esperantoeo4773 Esperantoeo4774 Esperantoeo4775 Esperantoeo4776 Esperantoeo4777 Esperantoeo4778 Esperantoeo4779 Esperantoeo478 Esperantoeo4780 Esperantoeo4781 Esperantoeo4782 Esperantoeo4783 Esperantoeo4784 Esperantoeo4785 Esperantoeo4786 Esperantoeo4787 Esperantoeo4788 Esperantoeo4789 Esperantoeo479 Esperantoeo4790 Esperantoeo4791 Esperantoeo4792 Esperantoeo4793 Esperantoeo4794 Esperantoeo4795 Esperantoeo4796 Esperantoeo4797 Esperantoeo4798 Esperantoeo4799 Esperantoeo48 Esperantoeo480 Esperantoeo4800 Esperantoeo4801 Esperantoeo4802 Esperantoeo4803 Esperantoeo4804 Esperantoeo4805 Esperantoeo4806 Esperantoeo4807 Esperantoeo4808 Esperantoeo4809 Esperantoeo481 Esperantoeo4810 Esperantoeo4811 Esperantoeo4812 Esperantoeo4813 Esperantoeo4814 Esperantoeo4815 Esperantoeo4816 Esperantoeo4817 Esperantoeo4818 Esperantoeo4819 Esperantoeo482 Esperantoeo4820 Esperantoeo4821 Esperantoeo4822 Esperantoeo4823 Esperantoeo4824 Esperantoeo4825 Esperantoeo4826 Esperantoeo4827 Esperantoeo4828 Esperantoeo4829 Esperantoeo483 Esperantoeo4830 Esperantoeo4831 Esperantoeo4832 Esperantoeo4833 Esperantoeo4834 Esperantoeo4835 Esperantoeo4836 Esperantoeo4837 Esperantoeo4838 Esperantoeo4839 Esperantoeo484 Esperantoeo4840 Esperantoeo4841 Esperantoeo4842 Esperantoeo4843 Esperantoeo4844 Esperantoeo4845 Esperantoeo4846 Esperantoeo4847 Esperantoeo4848 Esperantoeo4849 Esperantoeo485 Esperantoeo4850 Esperantoeo4851 Esperantoeo4852 Esperantoeo4853 Esperantoeo4854 Esperantoeo4855 Esperantoeo4856 Esperantoeo4857 Esperantoeo4858 Esperantoeo4859 Esperantoeo486 Esperantoeo4860 Esperantoeo4861 Esperantoeo4862 Esperantoeo4863 Esperantoeo4864 Esperantoeo4865 Esperantoeo4866 Esperantoeo4867 Esperantoeo4868 Esperantoeo4869 Esperantoeo487 Esperantoeo4870 Esperantoeo4871 Esperantoeo4872 Esperantoeo4873 Esperantoeo4874 Esperantoeo4875 Esperantoeo4876 Esperantoeo4877 Esperantoeo4878 Esperantoeo4879 Esperantoeo488 Esperantoeo4880 Esperantoeo4881 Esperantoeo4882 Esperantoeo4883 Esperantoeo4884 Esperantoeo4885 Esperantoeo4886 Esperantoeo4887 Esperantoeo4888 Esperantoeo4889 Esperantoeo489 Esperantoeo4890 Esperantoeo4891 Esperantoeo4892 Esperantoeo4893 Esperantoeo4894 Esperantoeo4895 Esperantoeo4896 Esperantoeo4897 Esperantoeo4898 Esperantoeo4899 Esperantoeo49 Esperantoeo490 Esperantoeo4900 Esperantoeo4901 Esperantoeo4902 Esperantoeo4903 Esperantoeo4904 Esperantoeo4905 Esperantoeo4906 Esperantoeo4907 Esperantoeo4908 Esperantoeo4909 Esperantoeo491 Esperantoeo4910 Esperantoeo4911 Esperantoeo4912 Esperantoeo4913 Esperantoeo4914 Esperantoeo4915 Esperantoeo4916 Esperantoeo4917 Esperantoeo4918 Esperantoeo4919 Esperantoeo492 Esperantoeo4920 Esperantoeo4921 Esperantoeo4922 Esperantoeo4923 Esperantoeo4924 Esperantoeo4925 Esperantoeo4926 Esperantoeo4927 Esperantoeo4928 Esperantoeo4929 Esperantoeo493 Esperantoeo4930 Esperantoeo4931 Esperantoeo4932 Esperantoeo4933 Esperantoeo4934 Esperantoeo4935 Esperantoeo4936 Esperantoeo4937 Esperantoeo4938 Esperantoeo4939 Esperantoeo494 Esperantoeo4940 Esperantoeo4941 Esperantoeo4942 Esperantoeo4943 Esperantoeo4944 Esperantoeo4945 Esperantoeo4946 Esperantoeo4947 Esperantoeo4948 Esperantoeo4949 Esperantoeo495 Esperantoeo4950 Esperantoeo4951 Esperantoeo4952 Esperantoeo4953 Esperantoeo4954 Esperantoeo4955 Esperantoeo4956 Esperantoeo4957 Esperantoeo4958 Esperantoeo4959 Esperantoeo496 Esperantoeo4960 Esperantoeo4961 Esperantoeo4962 Esperantoeo4963 Esperantoeo4964 Esperantoeo4965 Esperantoeo4966 Esperantoeo4967 Esperantoeo4968 Esperantoeo4969 Esperantoeo497 Esperantoeo4970 Esperantoeo4971 Esperantoeo4972 Esperantoeo4973 Esperantoeo4974 Esperantoeo4975 Esperantoeo4976 Esperantoeo4977 Esperantoeo4978 Esperantoeo4979 Esperantoeo498 Esperantoeo4980 Esperantoeo4981 Esperantoeo4982 Esperantoeo4983 Esperantoeo4984 Esperantoeo4985 Esperantoeo4986 Esperantoeo4987 Esperantoeo4988 Esperantoeo4989 Esperantoeo499 Esperantoeo4990 Esperantoeo4991 Esperantoeo4992 Esperantoeo4993 Esperantoeo4994 Esperantoeo4995 Esperantoeo4996 Esperantoeo4997 Esperantoeo4998 Esperantoeo4999 Esperantoeo5 Esperantoeo50 Esperantoeo500 Esperantoeo5000 Esperantoeo5001 Esperantoeo5002 Esperantoeo5003 Esperantoeo5004 Esperantoeo5005 Esperantoeo5006 Esperantoeo5007 Esperantoeo5008 Esperantoeo5009 Esperantoeo501 Esperantoeo5010 Esperantoeo5011 Esperantoeo5012 Esperantoeo5013 Esperantoeo5014 Esperantoeo5015 Esperantoeo5016 Esperantoeo5017 Esperantoeo5018 Esperantoeo5019 Esperantoeo502 Esperantoeo5020 Esperantoeo5021 Esperantoeo5022 Esperantoeo5023 Esperantoeo5024 Esperantoeo5025 Esperantoeo5026 Esperantoeo5027 Esperantoeo5028 Esperantoeo5029 Esperantoeo503 Esperantoeo5030 Esperantoeo5031 Esperantoeo5032 Esperantoeo5033 Esperantoeo5034 Esperantoeo5035 Esperantoeo5036 Esperantoeo5037 Esperantoeo5038 Esperantoeo5039 Esperantoeo504 Esperantoeo5040 Esperantoeo5041 Esperantoeo5042 Esperantoeo5043 Esperantoeo5044 Esperantoeo5045 Esperantoeo5046 Esperantoeo5047 Esperantoeo5048 Esperantoeo5049 Esperantoeo505 Esperantoeo5050 Esperantoeo5051 Esperantoeo5052 Esperantoeo5053 Esperantoeo5054 Esperantoeo5055 Esperantoeo5056 Esperantoeo5057 Esperantoeo5058 Esperantoeo5059 Esperantoeo506 Esperantoeo5060 Esperantoeo5061 Esperantoeo5062 Esperantoeo5063 Esperantoeo5064 Esperantoeo5065 Esperantoeo5066 Esperantoeo5067 Esperantoeo5068 Esperantoeo5069 Esperantoeo507 Esperantoeo5070 Esperantoeo5071 Esperantoeo5072 Esperantoeo5073 Esperantoeo5074 Esperantoeo5075 Esperantoeo5076 Esperantoeo5077 Esperantoeo5078 Esperantoeo5079 Esperantoeo508 Esperantoeo5080 Esperantoeo5081 Esperantoeo5082 Esperantoeo5083 Esperantoeo5084 Esperantoeo5085 Esperantoeo5086 Esperantoeo5087 Esperantoeo5088 Esperantoeo5089 Esperantoeo509 Esperantoeo5090 Esperantoeo5091 Esperantoeo5092 Esperantoeo5093 Esperantoeo5094 Esperantoeo5095 Esperantoeo5096 Esperantoeo5097 Esperantoeo5098 Esperantoeo5099 Esperantoeo51 Esperantoeo510 Esperantoeo5100 Esperantoeo5101 Esperantoeo5102 Esperantoeo5103 Esperantoeo5104 Esperantoeo5105 Esperantoeo5106 Esperantoeo5107 Esperantoeo5108 Esperantoeo5109 Esperantoeo511 Esperantoeo5110 Esperantoeo5111 Esperantoeo5112 Esperantoeo5113 Esperantoeo5114 Esperantoeo5115 Esperantoeo5116 Esperantoeo5117 Esperantoeo5118 Esperantoeo5119 Esperantoeo512 Esperantoeo5120 Esperantoeo5121 Esperantoeo5122 Esperantoeo5123 Esperantoeo5124 Esperantoeo5125 Esperantoeo5126 Esperantoeo5127 Esperantoeo5128 Esperantoeo5129 Esperantoeo513 Esperantoeo5130 Esperantoeo5131 Esperantoeo5132 Esperantoeo5133 Esperantoeo5134 Esperantoeo5135 Esperantoeo5136 Esperantoeo5137 Esperantoeo5138 Esperantoeo5139 Esperantoeo514 Esperantoeo5140 Esperantoeo5141 Esperantoeo5142 Esperantoeo5143 Esperantoeo5144 Esperantoeo5145 Esperantoeo5146 Esperantoeo5147 Esperantoeo5148 Esperantoeo5149 Esperantoeo515 Esperantoeo5150 Esperantoeo5151 Esperantoeo5152 Esperantoeo5153 Esperantoeo5154 Esperantoeo5155 Esperantoeo5156 Esperantoeo5157 Esperantoeo5158 Esperantoeo5159 Esperantoeo516 Esperantoeo5160 Esperantoeo5161 Esperantoeo5162 Esperantoeo5163 Esperantoeo5164 Esperantoeo5165 Esperantoeo5166 Esperantoeo5167 Esperantoeo5168 Esperantoeo5169 Esperantoeo517 Esperantoeo5170 Esperantoeo5171 Esperantoeo5172 Esperantoeo5173 Esperantoeo5174 Esperantoeo5175 Esperantoeo5176 Esperantoeo5177 Esperantoeo5178 Esperantoeo5179 Esperantoeo518 Esperantoeo5180 Esperantoeo5181 Esperantoeo5182 Esperantoeo5183 Esperantoeo5184 Esperantoeo5185 Esperantoeo5186 Esperantoeo5187 Esperantoeo5188 Esperantoeo5189 Esperantoeo519 Esperantoeo5190 Esperantoeo5191 Esperantoeo5192 Esperantoeo5193 Esperantoeo5194 Esperantoeo5195 Esperantoeo5196 Esperantoeo5197 Esperantoeo5198 Esperantoeo5199 Esperantoeo52 Esperantoeo520 Esperantoeo5200 Esperantoeo5201 Esperantoeo5202 Esperantoeo5203 Esperantoeo5204 Esperantoeo5205 Esperantoeo5206 Esperantoeo5207 Esperantoeo5208 Esperantoeo5209 Esperantoeo521 Esperantoeo5210 Esperantoeo5211 Esperantoeo5212 Esperantoeo5213 Esperantoeo5214 Esperantoeo5215 Esperantoeo5216 Esperantoeo5217 Esperantoeo5218 Esperantoeo5219 Esperantoeo522 Esperantoeo5220 Esperantoeo5221 Esperantoeo5222 Esperantoeo5223 Esperantoeo5224 Esperantoeo5225 Esperantoeo5226 Esperantoeo5227 Esperantoeo5228 Esperantoeo5229 Esperantoeo523 Esperantoeo5230 Esperantoeo5231 Esperantoeo5232 Esperantoeo5233 Esperantoeo5234 Esperantoeo5235 Esperantoeo5236 Esperantoeo5237 Esperantoeo5238 Esperantoeo5239 Esperantoeo524 Esperantoeo5240 Esperantoeo5241 Esperantoeo5242 Esperantoeo5243 Esperantoeo5244 Esperantoeo5245 Esperantoeo5246 Esperantoeo5247 Esperantoeo5248 Esperantoeo5249 Esperantoeo525 Esperantoeo5250 Esperantoeo5251 Esperantoeo5252 Esperantoeo5253 Esperantoeo5254 Esperantoeo5255 Esperantoeo5256 Esperantoeo5257 Esperantoeo5258 Esperantoeo5259 Esperantoeo526 Esperantoeo5260 Esperantoeo5261 Esperantoeo5262 Esperantoeo5263 Esperantoeo5264 Esperantoeo5265 Esperantoeo5266 Esperantoeo5267 Esperantoeo5268 Esperantoeo5269 Esperantoeo527 Esperantoeo5270 Esperantoeo5271 Esperantoeo5272 Esperantoeo5273 Esperantoeo5274 Esperantoeo5275 Esperantoeo5276 Esperantoeo5277 Esperantoeo5278 Esperantoeo5279 Esperantoeo528 Esperantoeo5280 Esperantoeo5281 Esperantoeo5282 Esperantoeo5283 Esperantoeo5284 Esperantoeo5285 Esperantoeo5286 Esperantoeo5287 Esperantoeo5288 Esperantoeo5289 Esperantoeo529 Esperantoeo5290 Esperantoeo5291 Esperantoeo5292 Esperantoeo5293 Esperantoeo5294 Esperantoeo5295 Esperantoeo5296 Esperantoeo5297 Esperantoeo5298 Esperantoeo5299 Esperantoeo53 Esperantoeo530 Esperantoeo5300 Esperantoeo5301 Esperantoeo5302 Esperantoeo5303 Esperantoeo5304 Esperantoeo5305 Esperantoeo5306 Esperantoeo5307 Esperantoeo5308 Esperantoeo5309 Esperantoeo531 Esperantoeo5310 Esperantoeo5311 Esperantoeo5312 Esperantoeo5313 Esperantoeo5314 Esperantoeo5315 Esperantoeo5316 Esperantoeo5317 Esperantoeo5318 Esperantoeo5319 Esperantoeo532 Esperantoeo5320 Esperantoeo5321 Esperantoeo5322 Esperantoeo5323 Esperantoeo5324 Esperantoeo5325 Esperantoeo5326 Esperantoeo5327 Esperantoeo5328 Esperantoeo5329 Esperantoeo533 Esperantoeo5330 Esperantoeo5331 Esperantoeo5332 Esperantoeo5333 Esperantoeo5334 Esperantoeo5335 Esperantoeo5336 Esperantoeo5337 Esperantoeo5338 Esperantoeo5339 Esperantoeo534 Esperantoeo5340 Esperantoeo5341 Esperantoeo5342 Esperantoeo5343 Esperantoeo5344 Esperantoeo5345 Esperantoeo5346 Esperantoeo5347 Esperantoeo5348 Esperantoeo5349 Esperantoeo535 Esperantoeo5350 Esperantoeo5351 Esperantoeo5352 Esperantoeo5353 Esperantoeo5354 Esperantoeo5355 Esperantoeo5356 Esperantoeo5357 Esperantoeo5358 Esperantoeo5359 Esperantoeo536 Esperantoeo5360 Esperantoeo5361 Esperantoeo5362 Esperantoeo5363 Esperantoeo5364 Esperantoeo5365 Esperantoeo5366 Esperantoeo5367 Esperantoeo5368 Esperantoeo5369 Esperantoeo537 Esperantoeo5370 Esperantoeo5371 Esperantoeo5372 Esperantoeo5373 Esperantoeo5374 Esperantoeo5375 Esperantoeo5376 Esperantoeo5377 Esperantoeo5378 Esperantoeo5379 Esperantoeo538 Esperantoeo5380 Esperantoeo5381 Esperantoeo5382 Esperantoeo5383 Esperantoeo5384 Esperantoeo5385 Esperantoeo5386 Esperantoeo5387 Esperantoeo5388 Esperantoeo5389 Esperantoeo539 Esperantoeo5390 Esperantoeo5391 Esperantoeo5392 Esperantoeo5393 Esperantoeo5394 Esperantoeo5395 Esperantoeo5396 Esperantoeo5397 Esperantoeo5398 Esperantoeo5399 Esperantoeo54 Esperantoeo540 Esperantoeo5400 Esperantoeo5401 Esperantoeo5402 Esperantoeo5403 Esperantoeo5404 Esperantoeo5405 Esperantoeo5406 Esperantoeo5407 Esperantoeo5408 Esperantoeo5409 Esperantoeo541 Esperantoeo5410 Esperantoeo5411 Esperantoeo5412 Esperantoeo5413 Esperantoeo5414 Esperantoeo5415 Esperantoeo5416 Esperantoeo5417 Esperantoeo5418 Esperantoeo5419 Esperantoeo542 Esperantoeo5420 Esperantoeo5421 Esperantoeo5422 Esperantoeo5423 Esperantoeo5424 Esperantoeo5425 Esperantoeo5426 Esperantoeo5427 Esperantoeo5428 Esperantoeo5429 Esperantoeo543 Esperantoeo5430 Esperantoeo5431 Esperantoeo5432 Esperantoeo5433 Esperantoeo5434 Esperantoeo5435 Esperantoeo5436 Esperantoeo5437 Esperantoeo5438 Esperantoeo5439 Esperantoeo544 Esperantoeo5440 Esperantoeo5441 Esperantoeo5442 Esperantoeo5443 Esperantoeo5444 Esperantoeo5445 Esperantoeo5446 Esperantoeo5447 Esperantoeo5448 Esperantoeo5449 Esperantoeo545 Esperantoeo5450 Esperantoeo5451 Esperantoeo5452 Esperantoeo5453 Esperantoeo5454 Esperantoeo5455 Esperantoeo5456 Esperantoeo5457 Esperantoeo5458 Esperantoeo5459 Esperantoeo546 Esperantoeo5460 Esperantoeo5461 Esperantoeo5462 Esperantoeo5463 Esperantoeo5464 Esperantoeo5465 Esperantoeo5466 Esperantoeo5467 Esperantoeo5468 Esperantoeo5469 Esperantoeo547 Esperantoeo5470 Esperantoeo5471 Esperantoeo5472 Esperantoeo5473 Esperantoeo5474 Esperantoeo5475 Esperantoeo5476 Esperantoeo5477 Esperantoeo5478 Esperantoeo5479 Esperantoeo548 Esperantoeo5480 Esperantoeo5481 Esperantoeo5482 Esperantoeo5483 Esperantoeo5484 Esperantoeo5485 Esperantoeo5486 Esperantoeo5487 Esperantoeo5488 Esperantoeo5489 Esperantoeo549 Esperantoeo5490 Esperantoeo5491 Esperantoeo5492 Esperantoeo5493 Esperantoeo5494 Esperantoeo5495 Esperantoeo5496 Esperantoeo5497 Esperantoeo5498 Esperantoeo5499 Esperantoeo55 Esperantoeo550 Esperantoeo5500 Esperantoeo5501 Esperantoeo5502 Esperantoeo5503 Esperantoeo5504 Esperantoeo5505 Esperantoeo5506 Esperantoeo5507 Esperantoeo5508 Esperantoeo5509 Esperantoeo551 Esperantoeo5510 Esperantoeo5511 Esperantoeo5512 Esperantoeo5513 Esperantoeo5514 Esperantoeo5515 Esperantoeo5516 Esperantoeo5517 Esperantoeo5518 Esperantoeo5519 Esperantoeo552 Esperantoeo5520 Esperantoeo5521 Esperantoeo5522 Esperantoeo5523 Esperantoeo5524 Esperantoeo5525 Esperantoeo5526 Esperantoeo5527 Esperantoeo5528 Esperantoeo5529 Esperantoeo553 Esperantoeo5530 Esperantoeo5531 Esperantoeo5532 Esperantoeo5533 Esperantoeo5534 Esperantoeo5535 Esperantoeo5536 Esperantoeo5537 Esperantoeo5538 Esperantoeo5539 Esperantoeo554 Esperantoeo5540 Esperantoeo5541 Esperantoeo5542 Esperantoeo5543 Esperantoeo5544 Esperantoeo5545 Esperantoeo5546 Esperantoeo5547 Esperantoeo5548 Esperantoeo5549 Esperantoeo555 Esperantoeo5550 Esperantoeo5551 Esperantoeo5552 Esperantoeo5553 Esperantoeo5554 Esperantoeo5555 Esperantoeo5556 Esperantoeo5557 Esperantoeo5558 Esperantoeo5559 Esperantoeo556 Esperantoeo5560 Esperantoeo5561 Esperantoeo5562 Esperantoeo5563 Esperantoeo5564 Esperantoeo5565 Esperantoeo5566 Esperantoeo5567 Esperantoeo5568 Esperantoeo5569 Esperantoeo557 Esperantoeo5570 Esperantoeo5571 Esperantoeo5572 Esperantoeo5573 Esperantoeo5574 Esperantoeo5575 Esperantoeo5576 Esperantoeo5577 Esperantoeo5578 Esperantoeo5579 Esperantoeo558 Esperantoeo5580 Esperantoeo5581 Esperantoeo5582 Esperantoeo5583 Esperantoeo5584 Esperantoeo5585 Esperantoeo5586 Esperantoeo5587 Esperantoeo5588 Esperantoeo5589 Esperantoeo559 Esperantoeo5590 Esperantoeo5591 Esperantoeo5592 Esperantoeo5593 Esperantoeo5594 Esperantoeo5595 Esperantoeo5596 Esperantoeo5597 Esperantoeo5598 Esperantoeo5599 Esperantoeo56 Esperantoeo560 Esperantoeo5600 Esperantoeo5601 Esperantoeo5602 Esperantoeo5603 Esperantoeo5604 Esperantoeo5605 Esperantoeo5606 Esperantoeo5607 Esperantoeo5608 Esperantoeo5609 Esperantoeo561 Esperantoeo5610 Esperantoeo5611 Esperantoeo5612 Esperantoeo5613 Esperantoeo5614 Esperantoeo5615 Esperantoeo5616 Esperantoeo5617 Esperantoeo5618 Esperantoeo5619 Esperantoeo562 Esperantoeo5620 Esperantoeo5621 Esperantoeo5622 Esperantoeo5623 Esperantoeo5624 Esperantoeo5625 Esperantoeo5626 Esperantoeo5627 Esperantoeo5628 Esperantoeo5629 Esperantoeo563 Esperantoeo5630 Esperantoeo5631 Esperantoeo5632 Esperantoeo5633 Esperantoeo5634 Esperantoeo5635 Esperantoeo5636 Esperantoeo5637 Esperantoeo5638 Esperantoeo5639 Esperantoeo564 Esperantoeo5640 Esperantoeo5641 Esperantoeo5642 Esperantoeo5643 Esperantoeo5644 Esperantoeo5645 Esperantoeo5646 Esperantoeo5647 Esperantoeo5648 Esperantoeo5649 Esperantoeo565 Esperantoeo5650 Esperantoeo5651 Esperantoeo5652 Esperantoeo5653 Esperantoeo5654 Esperantoeo5655 Esperantoeo5656 Esperantoeo5657 Esperantoeo5658 Esperantoeo5659 Esperantoeo566 Esperantoeo5660 Esperantoeo5661 Esperantoeo5662 Esperantoeo5663 Esperantoeo5664 Esperantoeo5665 Esperantoeo5666 Esperantoeo5667 Esperantoeo5668 Esperantoeo5669 Esperantoeo567 Esperantoeo5670 Esperantoeo5671 Esperantoeo5672 Esperantoeo5673 Esperantoeo5674 Esperantoeo5675 Esperantoeo5676 Esperantoeo5677 Esperantoeo5678 Esperantoeo5679 Esperantoeo568 Esperantoeo5680 Esperantoeo5681 Esperantoeo5682 Esperantoeo5683 Esperantoeo5684 Esperantoeo5685 Esperantoeo5686 Esperantoeo5687 Esperantoeo5688 Esperantoeo5689 Esperantoeo569 Esperantoeo5690 Esperantoeo5691 Esperantoeo5692 Esperantoeo5693 Esperantoeo5694 Esperantoeo5695 Esperantoeo5696 Esperantoeo5697 Esperantoeo5698 Esperantoeo5699 Esperantoeo57 Esperantoeo570 Esperantoeo5700 Esperantoeo5701 Esperantoeo5702 Esperantoeo5703 Esperantoeo5704 Esperantoeo5705 Esperantoeo5706 Esperantoeo5707 Esperantoeo5708 Esperantoeo5709 Esperantoeo571 Esperantoeo5710 Esperantoeo5711 Esperantoeo5712 Esperantoeo5713 Esperantoeo5714 Esperantoeo5715 Esperantoeo5716 Esperantoeo5717 Esperantoeo5718 Esperantoeo5719 Esperantoeo572 Esperantoeo5720 Esperantoeo5721 Esperantoeo5722 Esperantoeo5723 Esperantoeo5724 Esperantoeo5725 Esperantoeo5726 Esperantoeo5727 Esperantoeo5728 Esperantoeo5729 Esperantoeo573 Esperantoeo5730 Esperantoeo5731 Esperantoeo5732 Esperantoeo5733 Esperantoeo5734 Esperantoeo5735 Esperantoeo5736 Esperantoeo5737 Esperantoeo5738 Esperantoeo5739 Esperantoeo574 Esperantoeo5740 Esperantoeo5741 Esperantoeo5742 Esperantoeo5743 Esperantoeo5744 Esperantoeo5745 Esperantoeo5746 Esperantoeo5747 Esperantoeo5748 Esperantoeo5749 Esperantoeo575 Esperantoeo5750 Esperantoeo5751 Esperantoeo5752 Esperantoeo5753 Esperantoeo5754 Esperantoeo5755 Esperantoeo5756 Esperantoeo5757 Esperantoeo5758 Esperantoeo5759 Esperantoeo576 Esperantoeo5760 Esperantoeo5761 Esperantoeo5762 Esperantoeo5763 Esperantoeo5764 Esperantoeo5765 Esperantoeo5766 Esperantoeo5767 Esperantoeo5768 Esperantoeo5769 Esperantoeo577 Esperantoeo5770 Esperantoeo5771 Esperantoeo5772 Esperantoeo5773 Esperantoeo5774 Esperantoeo5775 Esperantoeo5776 Esperantoeo5777 Esperantoeo5778 Esperantoeo5779 Esperantoeo578 Esperantoeo5780 Esperantoeo5781 Esperantoeo5782 Esperantoeo5783 Esperantoeo5784 Esperantoeo5785 Esperantoeo5786 Esperantoeo5787 Esperantoeo5788 Esperantoeo5789 Esperantoeo579 Esperantoeo5790 Esperantoeo5791 Esperantoeo5792 Esperantoeo5793 Esperantoeo5794 Esperantoeo5795 Esperantoeo5796 Esperantoeo5797 Esperantoeo5798 Esperantoeo5799 Esperantoeo58 Esperantoeo580 Esperantoeo5800 Esperantoeo5801 Esperantoeo5802 Esperantoeo5803 Esperantoeo5804 Esperantoeo5805 Esperantoeo5806 Esperantoeo5807 Esperantoeo5808 Esperantoeo5809 Esperantoeo581 Esperantoeo5810 Esperantoeo5811 Esperantoeo5812 Esperantoeo5813 Esperantoeo5814 Esperantoeo5815 Esperantoeo5816 Esperantoeo5817 Esperantoeo5818 Esperantoeo5819 Esperantoeo582 Esperantoeo5820 Esperantoeo5821 Esperantoeo5822 Esperantoeo5823 Esperantoeo5824 Esperantoeo5825 Esperantoeo5826 Esperantoeo5827 Esperantoeo5828 Esperantoeo5829 Esperantoeo583 Esperantoeo5830 Esperantoeo5831 Esperantoeo5832 Esperantoeo5833 Esperantoeo5834 Esperantoeo5835 Esperantoeo5836 Esperantoeo5837 Esperantoeo5838 Esperantoeo5839 Esperantoeo584 Esperantoeo5840 Esperantoeo5841 Esperantoeo5842 Esperantoeo5843 Esperantoeo5844 Esperantoeo5845 Esperantoeo5846 Esperantoeo5847 Esperantoeo5848 Esperantoeo5849 Esperantoeo585 Esperantoeo5850 Esperantoeo5851 Esperantoeo5852 Esperantoeo5853 Esperantoeo5854 Esperantoeo5855 Esperantoeo5856 Esperantoeo5857 Esperantoeo5858 Esperantoeo5859 Esperantoeo586 Esperantoeo5860 Esperantoeo5861 Esperantoeo5862 Esperantoeo5863 Esperantoeo5864 Esperantoeo5865 Esperantoeo5866 Esperantoeo5867 Esperantoeo5868 Esperantoeo5869 Esperantoeo587 Esperantoeo5870 Esperantoeo5871 Esperantoeo5872 Esperantoeo5873 Esperantoeo5874 Esperantoeo5875 Esperantoeo5876 Esperantoeo5877 Esperantoeo5878 Esperantoeo5879 Esperantoeo588 Esperantoeo5880 Esperantoeo5881 Esperantoeo5882 Esperantoeo5883 Esperantoeo5884 Esperantoeo5885 Esperantoeo5886 Esperantoeo5887 Esperantoeo5888 Esperantoeo5889 Esperantoeo589 Esperantoeo5890 Esperantoeo5891 Esperantoeo5892 Esperantoeo5893 Esperantoeo5894 Esperantoeo5895 Esperantoeo5896 Esperantoeo5897 Esperantoeo5898 Esperantoeo5899 Esperantoeo59 Esperantoeo590 Esperantoeo5900 Esperantoeo5901 Esperantoeo5902 Esperantoeo5903 Esperantoeo5904 Esperantoeo5905 Esperantoeo5906 Esperantoeo5907 Esperantoeo5908 Esperantoeo5909 Esperantoeo591 Esperantoeo5910 Esperantoeo5911 Esperantoeo5912 Esperantoeo5913 Esperantoeo5914 Esperantoeo5915 Esperantoeo5916 Esperantoeo5917 Esperantoeo5918 Esperantoeo5919 Esperantoeo592 Esperantoeo5920 Esperantoeo5921 Esperantoeo5922 Esperantoeo5923 Esperantoeo5924 Esperantoeo5925 Esperantoeo5926 Esperantoeo5927 Esperantoeo5928 Esperantoeo5929 Esperantoeo593 Esperantoeo5930 Esperantoeo5931 Esperantoeo5932 Esperantoeo5933 Esperantoeo5934 Esperantoeo5935 Esperantoeo5936 Esperantoeo5937 Esperantoeo5938 Esperantoeo5939 Esperantoeo594 Esperantoeo5940 Esperantoeo5941 Esperantoeo5942 Esperantoeo5943 Esperantoeo5944 Esperantoeo5945 Esperantoeo5946 Esperantoeo5947 Esperantoeo5948 Esperantoeo5949 Esperantoeo595 Esperantoeo5950 Esperantoeo5951 Esperantoeo5952 Esperantoeo5953 Esperantoeo5954 Esperantoeo5955 Esperantoeo5956 Esperantoeo5957 Esperantoeo5958 Esperantoeo5959 Esperantoeo596 Esperantoeo5960 Esperantoeo5961 Esperantoeo5962 Esperantoeo5963 Esperantoeo5964 Esperantoeo5965 Esperantoeo5966 Esperantoeo5967 Esperantoeo5968 Esperantoeo5969 Esperantoeo597 Esperantoeo5970 Esperantoeo5971 Esperantoeo5972 Esperantoeo5973 Esperantoeo5974 Esperantoeo5975 Esperantoeo5976 Esperantoeo5977 Esperantoeo5978 Esperantoeo5979 Esperantoeo598 Esperantoeo5980 Esperantoeo5981 Esperantoeo5982 Esperantoeo5983 Esperantoeo5984 Esperantoeo5985 Esperantoeo5986 Esperantoeo5987 Esperantoeo5988 Esperantoeo5989 Esperantoeo599 Esperantoeo5990 Esperantoeo5991 Esperantoeo5992 Esperantoeo5993 Esperantoeo5994 Esperantoeo5995 Esperantoeo5996 Esperantoeo5997 Esperantoeo5998 Esperantoeo5999 Esperantoeo6 Esperantoeo60 Esperantoeo600 Esperantoeo6000 Esperantoeo6001 Esperantoeo6002 Esperantoeo6003 Esperantoeo6004 Esperantoeo6005 Esperantoeo6006 Esperantoeo6007 Esperantoeo6008 Esperantoeo6009 Esperantoeo601 Esperantoeo6010 Esperantoeo6011 Esperantoeo6012 Esperantoeo6013 Esperantoeo6014 Esperantoeo6015 Esperantoeo6016 Esperantoeo6017 Esperantoeo6018 Esperantoeo6019 Esperantoeo602 Esperantoeo6020 Esperantoeo6021 Esperantoeo6022 Esperantoeo6023 Esperantoeo6024 Esperantoeo6025 Esperantoeo6026 Esperantoeo6027 Esperantoeo6028 Esperantoeo6029 Esperantoeo603 Esperantoeo6030 Esperantoeo6031 Esperantoeo6032 Esperantoeo6033 Esperantoeo6034 Esperantoeo6035 Esperantoeo6036 Esperantoeo6037 Esperantoeo6038 Esperantoeo6039 Esperantoeo604 Esperantoeo6040 Esperantoeo6041 Esperantoeo6042 Esperantoeo6043 Esperantoeo6044 Esperantoeo6045 Esperantoeo6046 Esperantoeo6047 Esperantoeo6048 Esperantoeo6049 Esperantoeo605 Esperantoeo6050 Esperantoeo6051 Esperantoeo6052 Esperantoeo6053 Esperantoeo6054 Esperantoeo6055 Esperantoeo6056 Esperantoeo6057 Esperantoeo6058 Esperantoeo6059 Esperantoeo606 Esperantoeo6060 Esperantoeo6061 Esperantoeo6062 Esperantoeo6063 Esperantoeo6064 Esperantoeo6065 Esperantoeo6066 Esperantoeo6067 Esperantoeo6068 Esperantoeo6069 Esperantoeo607 Esperantoeo6070 Esperantoeo6071 Esperantoeo6072 Esperantoeo6073 Esperantoeo6074 Esperantoeo6075 Esperantoeo6076 Esperantoeo6077 Esperantoeo6078 Esperantoeo6079 Esperantoeo608 Esperantoeo6080 Esperantoeo6081 Esperantoeo6082 Esperantoeo6083 Esperantoeo6084 Esperantoeo6085 Esperantoeo6086 Esperantoeo6087 Esperantoeo6088 Esperantoeo6089 Esperantoeo609 Esperantoeo6090 Esperantoeo6091 Esperantoeo6092 Esperantoeo6093 Esperantoeo6094 Esperantoeo6095 Esperantoeo6096 Esperantoeo6097 Esperantoeo6098 Esperantoeo6099 Esperantoeo61 Esperantoeo610 Esperantoeo6100 Esperantoeo6101 Esperantoeo6102 Esperantoeo6103 Esperantoeo6104 Esperantoeo6105 Esperantoeo6106 Esperantoeo6107 Esperantoeo6108 Esperantoeo6109 Esperantoeo611 Esperantoeo6110 Esperantoeo6111 Esperantoeo6112 Esperantoeo6113 Esperantoeo6114 Esperantoeo6115 Esperantoeo6116 Esperantoeo6117 Esperantoeo6118 Esperantoeo6119 Esperantoeo612 Esperantoeo6120 Esperantoeo6121 Esperantoeo6122 Esperantoeo6123 Esperantoeo6124 Esperantoeo6125 Esperantoeo6126 Esperantoeo6127 Esperantoeo6128 Esperantoeo6129 Esperantoeo613 Esperantoeo6130 Esperantoeo6131 Esperantoeo6132 Esperantoeo6133 Esperantoeo6134 Esperantoeo6135 Esperantoeo6136 Esperantoeo6137 Esperantoeo6138 Esperantoeo6139 Esperantoeo614 Esperantoeo6140 Esperantoeo6141 Esperantoeo6142 Esperantoeo6143 Esperantoeo6144 Esperantoeo6145 Esperantoeo6146 Esperantoeo6147 Esperantoeo6148 Esperantoeo6149 Esperantoeo615 Esperantoeo6150 Esperantoeo6151 Esperantoeo6152 Esperantoeo6153 Esperantoeo6154 Esperantoeo6155 Esperantoeo6156 Esperantoeo6157 Esperantoeo6158 Esperantoeo6159 Esperantoeo616 Esperantoeo6160 Esperantoeo6161 Esperantoeo6162 Esperantoeo6163 Esperantoeo6164 Esperantoeo6165 Esperantoeo6166 Esperantoeo6167 Esperantoeo6168 Esperantoeo6169 Esperantoeo617 Esperantoeo6170 Esperantoeo6171 Esperantoeo6172 Esperantoeo6173 Esperantoeo6174 Esperantoeo6175 Esperantoeo6176 Esperantoeo6177 Esperantoeo6178 Esperantoeo6179 Esperantoeo618 Esperantoeo6180 Esperantoeo6181 Esperantoeo6182 Esperantoeo6183 Esperantoeo6184 Esperantoeo6185 Esperantoeo6186 Esperantoeo6187 Esperantoeo6188 Esperantoeo6189 Esperantoeo619 Esperantoeo6190 Esperantoeo6191 Esperantoeo6192 Esperantoeo6193 Esperantoeo6194 Esperantoeo6195 Esperantoeo6196 Esperantoeo6197 Esperantoeo6198 Esperantoeo6199 Esperantoeo62 Esperantoeo620 Esperantoeo6200 Esperantoeo6201 Esperantoeo6202 Esperantoeo6203 Esperantoeo6204 Esperantoeo6205 Esperantoeo6206 Esperantoeo6207 Esperantoeo6208 Esperantoeo6209 Esperantoeo621 Esperantoeo6210 Esperantoeo6211 Esperantoeo6212 Esperantoeo6213 Esperantoeo6214 Esperantoeo6215 Esperantoeo6216 Esperantoeo6217 Esperantoeo6218 Esperantoeo6219 Esperantoeo622 Esperantoeo6220 Esperantoeo6221 Esperantoeo6222 Esperantoeo6223 Esperantoeo6224 Esperantoeo6225 Esperantoeo6226 Esperantoeo6227 Esperantoeo6228 Esperantoeo6229 Esperantoeo623 Esperantoeo6230 Esperantoeo6231 Esperantoeo6232 Esperantoeo6233 Esperantoeo6234 Esperantoeo6235 Esperantoeo6236 Esperantoeo6237 Esperantoeo6238 Esperantoeo6239 Esperantoeo624 Esperantoeo6240 Esperantoeo6241 Esperantoeo6242 Esperantoeo6243 Esperantoeo6244 Esperantoeo6245 Esperantoeo6246 Esperantoeo6247 Esperantoeo6248 Esperantoeo6249 Esperantoeo625 Esperantoeo6250 Esperantoeo6251 Esperantoeo6252 Esperantoeo6253 Esperantoeo6254 Esperantoeo6255 Esperantoeo6256 Esperantoeo6257 Esperantoeo6258 Esperantoeo6259 Esperantoeo626 Esperantoeo6260 Esperantoeo6261 Esperantoeo6262 Esperantoeo6263 Esperantoeo6264 Esperantoeo6265 Esperantoeo6266 Esperantoeo6267 Esperantoeo6268 Esperantoeo6269 Esperantoeo627 Esperantoeo6270 Esperantoeo6271 Esperantoeo6272 Esperantoeo6273 Esperantoeo6274 Esperantoeo6275 Esperantoeo6276 Esperantoeo6277 Esperantoeo6278 Esperantoeo6279 Esperantoeo628 Esperantoeo6280 Esperantoeo6281 Esperantoeo6282 Esperantoeo6283 Esperantoeo6284 Esperantoeo6285 Esperantoeo6286 Esperantoeo6287 Esperantoeo6288 Esperantoeo6289 Esperantoeo629 Esperantoeo6290 Esperantoeo6291 Esperantoeo6292 Esperantoeo6293 Esperantoeo6294 Esperantoeo6295 Esperantoeo6296 Esperantoeo6297 Esperantoeo6298 Esperantoeo6299 Esperantoeo63 Esperantoeo630 Esperantoeo6300 Esperantoeo6301 Esperantoeo6302 Esperantoeo6303 Esperantoeo6304 Esperantoeo6305 Esperantoeo6306 Esperantoeo6307 Esperantoeo6308 Esperantoeo6309 Esperantoeo631 Esperantoeo6310 Esperantoeo6311 Esperantoeo6312 Esperantoeo6313 Esperantoeo6314 Esperantoeo6315 Esperantoeo6316 Esperantoeo6317 Esperantoeo6318 Esperantoeo6319 Esperantoeo632 Esperantoeo6320 Esperantoeo6321 Esperantoeo6322 Esperantoeo6323 Esperantoeo6324 Esperantoeo6325 Esperantoeo6326 Esperantoeo6327 Esperantoeo6328 Esperantoeo6329 Esperantoeo633 Esperantoeo6330 Esperantoeo6331 Esperantoeo6332 Esperantoeo6333 Esperantoeo6334 Esperantoeo6335 Esperantoeo6336 Esperantoeo6337 Esperantoeo6338 Esperantoeo6339 Esperantoeo634 Esperantoeo6340 Esperantoeo6341 Esperantoeo6342 Esperantoeo6343 Esperantoeo6344 Esperantoeo6345 Esperantoeo6346 Esperantoeo6347 Esperantoeo6348 Esperantoeo6349 Esperantoeo635 Esperantoeo6350 Esperantoeo6351 Esperantoeo6352 Esperantoeo6353 Esperantoeo6354 Esperantoeo6355 Esperantoeo6356 Esperantoeo6357 Esperantoeo6358 Esperantoeo6359 Esperantoeo636 Esperantoeo6360 Esperantoeo6361 Esperantoeo6362 Esperantoeo6363 Esperantoeo6364 Esperantoeo6365 Esperantoeo6366 Esperantoeo6367 Esperantoeo6368 Esperantoeo6369 Esperantoeo637 Esperantoeo6370 Esperantoeo6371 Esperantoeo6372 Esperantoeo6373 Esperantoeo6374 Esperantoeo6375 Esperantoeo6376 Esperantoeo6377 Esperantoeo6378 Esperantoeo6379 Esperantoeo638 Esperantoeo6380 Esperantoeo6381 Esperantoeo6382 Esperantoeo6383 Esperantoeo6384 Esperantoeo6385 Esperantoeo6386 Esperantoeo6387 Esperantoeo6388 Esperantoeo6389 Esperantoeo639 Esperantoeo6390 Esperantoeo6391 Esperantoeo6392 Esperantoeo6393 Esperantoeo6394 Esperantoeo6395 Esperantoeo6396 Esperantoeo6397 Esperantoeo6398 Esperantoeo6399 Esperantoeo64 Esperantoeo640 Esperantoeo6400 Esperantoeo6401 Esperantoeo6402 Esperantoeo6403 Esperantoeo6404 Esperantoeo6405 Esperantoeo6406 Esperantoeo6407 Esperantoeo6408 Esperantoeo6409 Esperantoeo641 Esperantoeo6410 Esperantoeo6411 Esperantoeo6412 Esperantoeo6413 Esperantoeo6414 Esperantoeo6415 Esperantoeo6416 Esperantoeo6417 Esperantoeo6418 Esperantoeo6419 Esperantoeo642 Esperantoeo6420 Esperantoeo6421 Esperantoeo6422 Esperantoeo6423 Esperantoeo6424 Esperantoeo6425 Esperantoeo6426 Esperantoeo6427 Esperantoeo6428 Esperantoeo6429 Esperantoeo643 Esperantoeo6430 Esperantoeo6431 Esperantoeo6432 Esperantoeo6433 Esperantoeo6434 Esperantoeo6435 Esperantoeo6436 Esperantoeo6437 Esperantoeo6438 Esperantoeo6439 Esperantoeo644 Esperantoeo6440 Esperantoeo6441 Esperantoeo6442 Esperantoeo6443 Esperantoeo6444 Esperantoeo6445 Esperantoeo6446 Esperantoeo6447 Esperantoeo6448 Esperantoeo6449 Esperantoeo645 Esperantoeo6450 Esperantoeo6451 Esperantoeo6452 Esperantoeo6453 Esperantoeo6454 Esperantoeo6455 Esperantoeo6456 Esperantoeo6457 Esperantoeo6458 Esperantoeo6459 Esperantoeo646 Esperantoeo6460 Esperantoeo6461 Esperantoeo6462 Esperantoeo6463 Esperantoeo6464 Esperantoeo6465 Esperantoeo6466 Esperantoeo6467 Esperantoeo6468 Esperantoeo6469 Esperantoeo647 Esperantoeo6470 Esperantoeo6471 Esperantoeo6472 Esperantoeo6473 Esperantoeo6474 Esperantoeo6475 Esperantoeo6476 Esperantoeo6477 Esperantoeo6478 Esperantoeo6479 Esperantoeo648 Esperantoeo6480 Esperantoeo6481 Esperantoeo6482 Esperantoeo6483 Esperantoeo6484 Esperantoeo6485 Esperantoeo6486 Esperantoeo6487 Esperantoeo6488 Esperantoeo6489 Esperantoeo649 Esperantoeo6490 Esperantoeo6491 Esperantoeo6492 Esperantoeo6493 Esperantoeo6494 Esperantoeo6495 Esperantoeo6496 Esperantoeo6497 Esperantoeo6498 Esperantoeo6499 Esperantoeo65 Esperantoeo650 Esperantoeo6500 Esperantoeo6501 Esperantoeo6502 Esperantoeo6503 Esperantoeo6504 Esperantoeo6505 Esperantoeo6506 Esperantoeo6507 Esperantoeo6508 Esperantoeo6509 Esperantoeo651 Esperantoeo6510 Esperantoeo6511 Esperantoeo6512 Esperantoeo6513 Esperantoeo6514 Esperantoeo6515 Esperantoeo6516 Esperantoeo6517 Esperantoeo6518 Esperantoeo6519 Esperantoeo652 Esperantoeo6520 Esperantoeo6521 Esperantoeo6522 Esperantoeo6523 Esperantoeo6524 Esperantoeo6525 Esperantoeo6526 Esperantoeo6527 Esperantoeo6528 Esperantoeo6529 Esperantoeo653 Esperantoeo6530 Esperantoeo6531 Esperantoeo6532 Esperantoeo6533 Esperantoeo6534 Esperantoeo6535 Esperantoeo6536 Esperantoeo6537 Esperantoeo6538 Esperantoeo6539 Esperantoeo654 Esperantoeo6540 Esperantoeo6541 Esperantoeo6542 Esperantoeo6543 Esperantoeo6544 Esperantoeo6545 Esperantoeo6546 Esperantoeo6547 Esperantoeo6548 Esperantoeo6549 Esperantoeo655 Esperantoeo6550 Esperantoeo6551 Esperantoeo6552 Esperantoeo6553 Esperantoeo6554 Esperantoeo6555 Esperantoeo6556 Esperantoeo6557 Esperantoeo6558 Esperantoeo6559 Esperantoeo656 Esperantoeo6560 Esperantoeo6561 Esperantoeo6562 Esperantoeo6563 Esperantoeo6564 Esperantoeo6565 Esperantoeo6566 Esperantoeo6567 Esperantoeo6568 Esperantoeo6569 Esperantoeo657 Esperantoeo6570 Esperantoeo6571 Esperantoeo6572 Esperantoeo6573 Esperantoeo6574 Esperantoeo6575 Esperantoeo6576 Esperantoeo6577 Esperantoeo6578 Esperantoeo6579 Esperantoeo658 Esperantoeo6580 Esperantoeo6581 Esperantoeo6582 Esperantoeo6583 Esperantoeo6584 Esperantoeo6585 Esperantoeo6586 Esperantoeo6587 Esperantoeo6588 Esperantoeo6589 Esperantoeo659 Esperantoeo6590 Esperantoeo6591 Esperantoeo6592 Esperantoeo6593 Esperantoeo6594 Esperantoeo6595 Esperantoeo6596 Esperantoeo6597 Esperantoeo6598 Esperantoeo6599 Esperantoeo66 Esperantoeo660 Esperantoeo6600 Esperantoeo6601 Esperantoeo6602 Esperantoeo6603 Esperantoeo6604 Esperantoeo6605 Esperantoeo6606 Esperantoeo6607 Esperantoeo6608 Esperantoeo6609 Esperantoeo661 Esperantoeo6610 Esperantoeo6611 Esperantoeo6612 Esperantoeo6613 Esperantoeo6614 Esperantoeo6615 Esperantoeo6616 Esperantoeo6617 Esperantoeo6618 Esperantoeo6619 Esperantoeo662 Esperantoeo6620 Esperantoeo6621 Esperantoeo6622 Esperantoeo6623 Esperantoeo6624 Esperantoeo6625 Esperantoeo6626 Esperantoeo6627 Esperantoeo6628 Esperantoeo6629 Esperantoeo663 Esperantoeo6630 Esperantoeo6631 Esperantoeo6632 Esperantoeo6633 Esperantoeo6634 Esperantoeo6635 Esperantoeo6636 Esperantoeo6637 Esperantoeo6638 Esperantoeo6639 Esperantoeo664 Esperantoeo6640 Esperantoeo6641 Esperantoeo6642 Esperantoeo6643 Esperantoeo6644 Esperantoeo6645 Esperantoeo6646 Esperantoeo6647 Esperantoeo6648 Esperantoeo6649 Esperantoeo665 Esperantoeo6650 Esperantoeo6651 Esperantoeo6652 Esperantoeo6653 Esperantoeo6654 Esperantoeo6655 Esperantoeo6656 Esperantoeo6657 Esperantoeo6658 Esperantoeo6659 Esperantoeo666 Esperantoeo6660 Esperantoeo6661 Esperantoeo6662 Esperantoeo6663 Esperantoeo6664 Esperantoeo6665 Esperantoeo6666 Esperantoeo6667 Esperantoeo6668 Esperantoeo6669 Esperantoeo667 Esperantoeo6670 Esperantoeo6671 Esperantoeo6672 Esperantoeo6673 Esperantoeo6674 Esperantoeo6675 Esperantoeo6676 Esperantoeo6677 Esperantoeo6678 Esperantoeo6679 Esperantoeo668 Esperantoeo6680 Esperantoeo6681 Esperantoeo6682 Esperantoeo6683 Esperantoeo6684 Esperantoeo6685 Esperantoeo6686 Esperantoeo6687 Esperantoeo6688 Esperantoeo6689 Esperantoeo669 Esperantoeo6690 Esperantoeo6691 Esperantoeo6692 Esperantoeo6693 Esperantoeo6694 Esperantoeo6695 Esperantoeo6696 Esperantoeo6697 Esperantoeo6698 Esperantoeo6699 Esperantoeo67 Esperantoeo670 Esperantoeo6700 Esperantoeo6701 Esperantoeo6702 Esperantoeo6703 Esperantoeo6704 Esperantoeo6705 Esperantoeo6706 Esperantoeo6707 Esperantoeo6708 Esperantoeo6709 Esperantoeo671 Esperantoeo6710 Esperantoeo6711 Esperantoeo6712 Esperantoeo6713 Esperantoeo6714 Esperantoeo6715 Esperantoeo6716 Esperantoeo6717 Esperantoeo6718 Esperantoeo6719 Esperantoeo672 Esperantoeo6720 Esperantoeo6721 Esperantoeo6722 Esperantoeo6723 Esperantoeo6724 Esperantoeo6725 Esperantoeo6726 Esperantoeo6727 Esperantoeo6728 Esperantoeo6729 Esperantoeo673 Esperantoeo6730 Esperantoeo6731 Esperantoeo6732 Esperantoeo6733 Esperantoeo6734 Esperantoeo6735 Esperantoeo6736 Esperantoeo6737 Esperantoeo6738 Esperantoeo6739 Esperantoeo674 Esperantoeo6740 Esperantoeo6741 Esperantoeo6742 Esperantoeo6743 Esperantoeo6744 Esperantoeo6745 Esperantoeo6746 Esperantoeo6747 Esperantoeo6748 Esperantoeo6749 Esperantoeo675 Esperantoeo6750 Esperantoeo6751 Esperantoeo6752 Esperantoeo6753 Esperantoeo6754 Esperantoeo6755 Esperantoeo6756 Esperantoeo6757 Esperantoeo6758 Esperantoeo6759 Esperantoeo676 Esperantoeo6760 Esperantoeo6761 Esperantoeo6762 Esperantoeo6763 Esperantoeo6764 Esperantoeo6765 Esperantoeo6766 Esperantoeo6767 Esperantoeo6768 Esperantoeo6769 Esperantoeo677 Esperantoeo6770 Esperantoeo6771 Esperantoeo6772 Esperantoeo6773 Esperantoeo6774 Esperantoeo6775 Esperantoeo6776 Esperantoeo6777 Esperantoeo6778 Esperantoeo6779 Esperantoeo678 Esperantoeo6780 Esperantoeo6781 Esperantoeo6782 Esperantoeo6783 Esperantoeo6784 Esperantoeo6785 Esperantoeo6786 Esperantoeo6787 Esperantoeo6788 Esperantoeo6789 Esperantoeo679 Esperantoeo6790 Esperantoeo6791 Esperantoeo6792 Esperantoeo6793 Esperantoeo6794 Esperantoeo6795 Esperantoeo6796 Esperantoeo6797 Esperantoeo6798 Esperantoeo6799 Esperantoeo68 Esperantoeo680 Esperantoeo6800 Esperantoeo6801 Esperantoeo6802 Esperantoeo6803 Esperantoeo6804 Esperantoeo6805 Esperantoeo6806 Esperantoeo6807 Esperantoeo6808 Esperantoeo6809 Esperantoeo681 Esperantoeo6810 Esperantoeo6811 Esperantoeo6812 Esperantoeo6813 Esperantoeo6814 Esperantoeo6815 Esperantoeo6816 Esperantoeo6817 Esperantoeo6818 Esperantoeo6819 Esperantoeo682 Esperantoeo6820 Esperantoeo6821 Esperantoeo6822 Esperantoeo6823 Esperantoeo6824 Esperantoeo6825 Esperantoeo6826 Esperantoeo6827 Esperantoeo6828 Esperantoeo6829 Esperantoeo683 Esperantoeo6830 Esperantoeo6831 Esperantoeo6832 Esperantoeo6833 Esperantoeo6834 Esperantoeo6835 Esperantoeo6836 Esperantoeo6837 Esperantoeo6838 Esperantoeo6839 Esperantoeo684 Esperantoeo6840 Esperantoeo6841 Esperantoeo6842 Esperantoeo6843 Esperantoeo6844 Esperantoeo6845 Esperantoeo6846 Esperantoeo6847 Esperantoeo6848 Esperantoeo6849 Esperantoeo685 Esperantoeo6850 Esperantoeo6851 Esperantoeo6852 Esperantoeo6853 Esperantoeo6854 Esperantoeo6855 Esperantoeo6856 Esperantoeo6857 Esperantoeo6858 Esperantoeo6859 Esperantoeo686 Esperantoeo6860 Esperantoeo6861 Esperantoeo6862 Esperantoeo6863 Esperantoeo6864 Esperantoeo6865 Esperantoeo6866 Esperantoeo6867 Esperantoeo6868 Esperantoeo6869 Esperantoeo687 Esperantoeo6870 Esperantoeo6871 Esperantoeo6872 Esperantoeo6873 Esperantoeo6874 Esperantoeo6875 Esperantoeo6876 Esperantoeo6877 Esperantoeo6878 Esperantoeo6879 Esperantoeo688 Esperantoeo6880 Esperantoeo6881 Esperantoeo6882 Esperantoeo6883 Esperantoeo6884 Esperantoeo6885 Esperantoeo6886 Esperantoeo6887 Esperantoeo6888 Esperantoeo6889 Esperantoeo689 Esperantoeo6890 Esperantoeo6891 Esperantoeo6892 Esperantoeo6893 Esperantoeo6894 Esperantoeo6895 Esperantoeo6896 Esperantoeo6897 Esperantoeo6898 Esperantoeo6899 Esperantoeo69 Esperantoeo690 Esperantoeo6900 Esperantoeo6901 Esperantoeo6902 Esperantoeo6903 Esperantoeo6904 Esperantoeo6905 Esperantoeo6906 Esperantoeo6907 Esperantoeo6908 Esperantoeo6909 Esperantoeo691 Esperantoeo6910 Esperantoeo6911 Esperantoeo6912 Esperantoeo6913 Esperantoeo6914 Esperantoeo6915 Esperantoeo6916 Esperantoeo6917 Esperantoeo6918 Esperantoeo6919 Esperantoeo692 Esperantoeo6920 Esperantoeo6921 Esperantoeo6922 Esperantoeo6923 Esperantoeo6924 Esperantoeo6925 Esperantoeo6926 Esperantoeo6927 Esperantoeo6928 Esperantoeo6929 Esperantoeo693 Esperantoeo6930 Esperantoeo6931 Esperantoeo6932 Esperantoeo6933 Esperantoeo6934 Esperantoeo6935 Esperantoeo6936 Esperantoeo6937 Esperantoeo6938 Esperantoeo6939 Esperantoeo694 Esperantoeo6940 Esperantoeo6941 Esperantoeo6942 Esperantoeo6943 Esperantoeo6944 Esperantoeo6945 Esperantoeo6946 Esperantoeo6947 Esperantoeo6948 Esperantoeo6949 Esperantoeo695 Esperantoeo6950 Esperantoeo6951 Esperantoeo6952 Esperantoeo6953 Esperantoeo6954 Esperantoeo6955 Esperantoeo6956 Esperantoeo6957 Esperantoeo6958 Esperantoeo6959 Esperantoeo696 Esperantoeo6960 Esperantoeo6961 Esperantoeo6962 Esperantoeo6963 Esperantoeo6964 Esperantoeo6965 Esperantoeo6966 Esperantoeo6967 Esperantoeo6968 Esperantoeo6969 Esperantoeo697 Esperantoeo6970 Esperantoeo6971 Esperantoeo6972 Esperantoeo6973 Esperantoeo6974 Esperantoeo6975 Esperantoeo6976 Esperantoeo6977 Esperantoeo6978 Esperantoeo6979 Esperantoeo698 Esperantoeo6980 Esperantoeo6981 Esperantoeo6982 Esperantoeo6983 Esperantoeo6984 Esperantoeo6985 Esperantoeo6986 Esperantoeo6987 Esperantoeo6988 Esperantoeo6989 Esperantoeo699 Esperantoeo6990 Esperantoeo6991 Esperantoeo6992 Esperantoeo6993 Esperantoeo6994 Esperantoeo6995 Esperantoeo6996 Esperantoeo6997 Esperantoeo6998 Esperantoeo6999 Esperantoeo7 Esperantoeo70 Esperantoeo700 Esperantoeo7000 Esperantoeo7001 Esperantoeo7002 Esperantoeo7003 Esperantoeo7004 Esperantoeo7005 Esperantoeo7006 Esperantoeo7007 Esperantoeo7008 Esperantoeo7009 Esperantoeo701 Esperantoeo7010 Esperantoeo7011 Esperantoeo7012 Esperantoeo7013 Esperantoeo7014 Esperantoeo7015 Esperantoeo7016 Esperantoeo7017 Esperantoeo7018 Esperantoeo7019 Esperantoeo702 Esperantoeo7020 Esperantoeo7021 Esperantoeo7022 Esperantoeo7023 Esperantoeo7024 Esperantoeo7025 Esperantoeo7026 Esperantoeo7027 Esperantoeo7028 Esperantoeo7029 Esperantoeo703 Esperantoeo7030 Esperantoeo7031 Esperantoeo7032 Esperantoeo7033 Esperantoeo7034 Esperantoeo7035 Esperantoeo7036 Esperantoeo7037 Esperantoeo7038 Esperantoeo7039 Esperantoeo704 Esperantoeo7040 Esperantoeo7041 Esperantoeo7042 Esperantoeo7043 Esperantoeo7044 Esperantoeo7045 Esperantoeo7046 Esperantoeo7047 Esperantoeo7048 Esperantoeo7049 Esperantoeo705 Esperantoeo7050 Esperantoeo7051 Esperantoeo7052 Esperantoeo7053 Esperantoeo7054 Esperantoeo7055 Esperantoeo7056 Esperantoeo7057 Esperantoeo7058 Esperantoeo7059 Esperantoeo706 Esperantoeo7060 Esperantoeo7061 Esperantoeo7062 Esperantoeo7063 Esperantoeo7064 Esperantoeo7065 Esperantoeo7066 Esperantoeo7067 Esperantoeo7068 Esperantoeo7069 Esperantoeo707 Esperantoeo7070 Esperantoeo7071 Esperantoeo7072 Esperantoeo7073 Esperantoeo7074 Esperantoeo7075 Esperantoeo7076 Esperantoeo7077 Esperantoeo7078 Esperantoeo7079 Esperantoeo708 Esperantoeo7080 Esperantoeo7081 Esperantoeo7082 Esperantoeo7083 Esperantoeo7084 Esperantoeo7085 Esperantoeo7086 Esperantoeo7087 Esperantoeo7088 Esperantoeo7089 Esperantoeo709 Esperantoeo7090 Esperantoeo7091 Esperantoeo7092 Esperantoeo7093 Esperantoeo7094 Esperantoeo7095 Esperantoeo7096 Esperantoeo7097 Esperantoeo7098 Esperantoeo7099 Esperantoeo71 Esperantoeo710 Esperantoeo7100 Esperantoeo7101 Esperantoeo7102 Esperantoeo7103 Esperantoeo7104 Esperantoeo7105 Esperantoeo7106 Esperantoeo7107 Esperantoeo7108 Esperantoeo7109 Esperantoeo711 Esperantoeo7110 Esperantoeo7111 Esperantoeo7112 Esperantoeo7113 Esperantoeo7114 Esperantoeo7115 Esperantoeo7116 Esperantoeo7117 Esperantoeo7118 Esperantoeo7119 Esperantoeo712 Esperantoeo7120 Esperantoeo7121 Esperantoeo7122 Esperantoeo7123 Esperantoeo7124 Esperantoeo7125 Esperantoeo7126 Esperantoeo7127 Esperantoeo7128 Esperantoeo7129 Esperantoeo713 Esperantoeo7130 Esperantoeo7131 Esperantoeo7132 Esperantoeo7133 Esperantoeo7134 Esperantoeo7135 Esperantoeo7136 Esperantoeo7137 Esperantoeo7138 Esperantoeo7139 Esperantoeo714 Esperantoeo7140 Esperantoeo7141 Esperantoeo7142 Esperantoeo7143 Esperantoeo7144 Esperantoeo7145 Esperantoeo7146 Esperantoeo7147 Esperantoeo7148 Esperantoeo7149 Esperantoeo715 Esperantoeo7150 Esperantoeo7151 Esperantoeo7152 Esperantoeo7153 Esperantoeo7154 Esperantoeo7155 Esperantoeo7156 Esperantoeo7157 Esperantoeo7158 Esperantoeo7159 Esperantoeo716 Esperantoeo7160 Esperantoeo7161 Esperantoeo7162 Esperantoeo7163 Esperantoeo7164 Esperantoeo7165 Esperantoeo7166 Esperantoeo7167 Esperantoeo7168 Esperantoeo7169 Esperantoeo717 Esperantoeo7170 Esperantoeo7171 Esperantoeo7172 Esperantoeo7173 Esperantoeo7174 Esperantoeo7175 Esperantoeo7176 Esperantoeo7177 Esperantoeo7178 Esperantoeo7179 Esperantoeo718 Esperantoeo7180 Esperantoeo7181 Esperantoeo7182 Esperantoeo7183 Esperantoeo7184 Esperantoeo7185 Esperantoeo7186 Esperantoeo7187 Esperantoeo7188 Esperantoeo7189 Esperantoeo719 Esperantoeo7190 Esperantoeo7191 Esperantoeo7192 Esperantoeo7193 Esperantoeo7194 Esperantoeo7195 Esperantoeo7196 Esperantoeo7197 Esperantoeo7198 Esperantoeo7199 Esperantoeo72 Esperantoeo720 Esperantoeo7200 Esperantoeo7201 Esperantoeo7202 Esperantoeo7203 Esperantoeo7204 Esperantoeo7205 Esperantoeo7206 Esperantoeo7207 Esperantoeo7208 Esperantoeo7209 Esperantoeo721 Esperantoeo7210 Esperantoeo7211 Esperantoeo7212 Esperantoeo7213 Esperantoeo7214 Esperantoeo7215 Esperantoeo7216 Esperantoeo7217 Esperantoeo7218 Esperantoeo7219 Esperantoeo722 Esperantoeo7220 Esperantoeo7221 Esperantoeo7222 Esperantoeo7223 Esperantoeo7224 Esperantoeo7225 Esperantoeo7226 Esperantoeo7227 Esperantoeo7228 Esperantoeo7229 Esperantoeo723 Esperantoeo7230 Esperantoeo7231 Esperantoeo7232 Esperantoeo7233 Esperantoeo7234 Esperantoeo7235 Esperantoeo7236 Esperantoeo7237 Esperantoeo7238 Esperantoeo7239 Esperantoeo724 Esperantoeo7240 Esperantoeo7241 Esperantoeo7242 Esperantoeo7243 Esperantoeo7244 Esperantoeo7245 Esperantoeo7246 Esperantoeo7247 Esperantoeo7248 Esperantoeo7249 Esperantoeo725 Esperantoeo7250 Esperantoeo7251 Esperantoeo7252 Esperantoeo7253 Esperantoeo7254 Esperantoeo7255 Esperantoeo7256 Esperantoeo7257 Esperantoeo7258 Esperantoeo7259 Esperantoeo726 Esperantoeo7260 Esperantoeo7261 Esperantoeo7262 Esperantoeo7263 Esperantoeo7264 Esperantoeo7265 Esperantoeo7266 Esperantoeo7267 Esperantoeo7268 Esperantoeo7269 Esperantoeo727 Esperantoeo7270 Esperantoeo7271 Esperantoeo7272 Esperantoeo7273 Esperantoeo7274 Esperantoeo7275 Esperantoeo7276 Esperantoeo7277 Esperantoeo7278 Esperantoeo7279 Esperantoeo728 Esperantoeo7280 Esperantoeo7281 Esperantoeo7282 Esperantoeo7283 Esperantoeo7284 Esperantoeo7285 Esperantoeo7286 Esperantoeo7287 Esperantoeo7288 Esperantoeo7289 Esperantoeo729 Esperantoeo7290 Esperantoeo7291 Esperantoeo7292 Esperantoeo7293 Esperantoeo7294 Esperantoeo7295 Esperantoeo7296 Esperantoeo7297 Esperantoeo7298 Esperantoeo7299 Esperantoeo73 Esperantoeo730 Esperantoeo7300 Esperantoeo7301 Esperantoeo7302 Esperantoeo7303 Esperantoeo7304 Esperantoeo7305 Esperantoeo7306 Esperantoeo7307 Esperantoeo7308 Esperantoeo7309 Esperantoeo731 Esperantoeo7310 Esperantoeo7311 Esperantoeo7312 Esperantoeo7313 Esperantoeo7314 Esperantoeo7315 Esperantoeo7316 Esperantoeo7317 Esperantoeo7318 Esperantoeo7319 Esperantoeo732 Esperantoeo7320 Esperantoeo7321 Esperantoeo7322 Esperantoeo7323 Esperantoeo7324 Esperantoeo7325 Esperantoeo7326 Esperantoeo7327 Esperantoeo7328 Esperantoeo7329 Esperantoeo733 Esperantoeo7330 Esperantoeo7331 Esperantoeo7332 Esperantoeo7333 Esperantoeo7334 Esperantoeo7335 Esperantoeo7336 Esperantoeo7337 Esperantoeo7338 Esperantoeo7339 Esperantoeo734 Esperantoeo7340 Esperantoeo7341 Esperantoeo7342 Esperantoeo7343 Esperantoeo7344 Esperantoeo7345 Esperantoeo7346 Esperantoeo7347 Esperantoeo7348 Esperantoeo7349 Esperantoeo735 Esperantoeo7350 Esperantoeo7351 Esperantoeo7352 Esperantoeo7353 Esperantoeo7354 Esperantoeo7355 Esperantoeo7356 Esperantoeo7357 Esperantoeo7358 Esperantoeo7359 Esperantoeo736 Esperantoeo7360 Esperantoeo7361 Esperantoeo7362 Esperantoeo7363 Esperantoeo7364 Esperantoeo7365 Esperantoeo7366 Esperantoeo7367 Esperantoeo7368 Esperantoeo7369 Esperantoeo737 Esperantoeo7370 Esperantoeo7371 Esperantoeo7372 Esperantoeo7373 Esperantoeo7374 Esperantoeo7375 Esperantoeo7376 Esperantoeo7377 Esperantoeo7378 Esperantoeo7379 Esperantoeo738 Esperantoeo7380 Esperantoeo7381 Esperantoeo7382 Esperantoeo7383 Esperantoeo7384 Esperantoeo7385 Esperantoeo7386 Esperantoeo7387 Esperantoeo7388 Esperantoeo7389 Esperantoeo739 Esperantoeo7390 Esperantoeo7391 Esperantoeo7392 Esperantoeo7393 Esperantoeo7394 Esperantoeo7395 Esperantoeo7396 Esperantoeo7397 Esperantoeo7398 Esperantoeo7399 Esperantoeo74 Esperantoeo740 Esperantoeo7400 Esperantoeo7401 Esperantoeo7402 Esperantoeo7403 Esperantoeo7404 Esperantoeo7405 Esperantoeo7406 Esperantoeo7407 Esperantoeo7408 Esperantoeo7409 Esperantoeo741 Esperantoeo7410 Esperantoeo7411 Esperantoeo7412 Esperantoeo7413 Esperantoeo7414 Esperantoeo7415 Esperantoeo7416 Esperantoeo7417 Esperantoeo7418 Esperantoeo7419 Esperantoeo742 Esperantoeo7420 Esperantoeo7421 Esperantoeo7422 Esperantoeo7423 Esperantoeo7424 Esperantoeo7425 Esperantoeo7426 Esperantoeo7427 Esperantoeo7428 Esperantoeo7429 Esperantoeo743 Esperantoeo7430 Esperantoeo7431 Esperantoeo7432 Esperantoeo7433 Esperantoeo7434 Esperantoeo7435 Esperantoeo7436 Esperantoeo7437 Esperantoeo7438 Esperantoeo7439 Esperantoeo744 Esperantoeo7440 Esperantoeo7441 Esperantoeo7442 Esperantoeo7443 Esperantoeo7444 Esperantoeo7445 Esperantoeo7446 Esperantoeo7447 Esperantoeo7448 Esperantoeo7449 Esperantoeo745 Esperantoeo7450 Esperantoeo7451 Esperantoeo7452 Esperantoeo7453 Esperantoeo7454 Esperantoeo7455 Esperantoeo7456 Esperantoeo7457 Esperantoeo7458 Esperantoeo7459 Esperantoeo746 Esperantoeo7460 Esperantoeo7461 Esperantoeo7462 Esperantoeo7463 Esperantoeo7464 Esperantoeo7465 Esperantoeo7466 Esperantoeo7467 Esperantoeo7468 Esperantoeo7469 Esperantoeo747 Esperantoeo7470 Esperantoeo7471 Esperantoeo7472 Esperantoeo7473 Esperantoeo7474 Esperantoeo7475 Esperantoeo7476 Esperantoeo7477 Esperantoeo7478 Esperantoeo7479 Esperantoeo748 Esperantoeo7480 Esperantoeo7481 Esperantoeo7482 Esperantoeo7483 Esperantoeo7484 Esperantoeo7485 Esperantoeo7486 Esperantoeo7487 Esperantoeo7488 Esperantoeo7489 Esperantoeo749 Esperantoeo7490 Esperantoeo7491 Esperantoeo7492 Esperantoeo7493 Esperantoeo7494 Esperantoeo7495 Esperantoeo7496 Esperantoeo7497 Esperantoeo7498 Esperantoeo7499 Esperantoeo75 Esperantoeo750 Esperantoeo7500 Esperantoeo7501 Esperantoeo7502 Esperantoeo7503 Esperantoeo7504 Esperantoeo7505 Esperantoeo7506 Esperantoeo7507 Esperantoeo7508 Esperantoeo7509 Esperantoeo751 Esperantoeo7510 Esperantoeo7511 Esperantoeo7512 Esperantoeo7513 Esperantoeo7514 Esperantoeo7515 Esperantoeo7516 Esperantoeo7517 Esperantoeo7518 Esperantoeo7519 Esperantoeo752 Esperantoeo7520 Esperantoeo7521 Esperantoeo7522 Esperantoeo7523 Esperantoeo7524 Esperantoeo7525 Esperantoeo7526 Esperantoeo7527 Esperantoeo7528 Esperantoeo7529 Esperantoeo753 Esperantoeo7530 Esperantoeo7531 Esperantoeo7532 Esperantoeo7533 Esperantoeo7534 Esperantoeo7535 Esperantoeo7536 Esperantoeo7537 Esperantoeo7538 Esperantoeo7539 Esperantoeo754 Esperantoeo7540 Esperantoeo7541 Esperantoeo7542 Esperantoeo7543 Esperantoeo7544 Esperantoeo7545 Esperantoeo7546 Esperantoeo7547 Esperantoeo7548 Esperantoeo7549 Esperantoeo755 Esperantoeo7550 Esperantoeo7551 Esperantoeo7552 Esperantoeo7553 Esperantoeo7554 Esperantoeo7555 Esperantoeo7556 Esperantoeo7557 Esperantoeo7558 Esperantoeo7559 Esperantoeo756 Esperantoeo7560 Esperantoeo7561 Esperantoeo7562 Esperantoeo7563 Esperantoeo7564 Esperantoeo7565 Esperantoeo7566 Esperantoeo7567 Esperantoeo7568 Esperantoeo7569 Esperantoeo757 Esperantoeo7570 Esperantoeo7571 Esperantoeo7572 Esperantoeo7573 Esperantoeo7574 Esperantoeo7575 Esperantoeo7576 Esperantoeo7577 Esperantoeo7578 Esperantoeo7579 Esperantoeo758 Esperantoeo7580 Esperantoeo7581 Esperantoeo7582 Esperantoeo7583 Esperantoeo7584 Esperantoeo7585 Esperantoeo7586 Esperantoeo7587 Esperantoeo7588 Esperantoeo7589 Esperantoeo759 Esperantoeo7590 Esperantoeo7591 Esperantoeo7592 Esperantoeo7593 Esperantoeo7594 Esperantoeo7595 Esperantoeo7596 Esperantoeo7597 Esperantoeo7598 Esperantoeo7599 Esperantoeo76 Esperantoeo760 Esperantoeo7600 Esperantoeo7601 Esperantoeo7602 Esperantoeo7603 Esperantoeo7604 Esperantoeo7605 Esperantoeo7606 Esperantoeo7607 Esperantoeo7608 Esperantoeo7609 Esperantoeo761 Esperantoeo7610 Esperantoeo7611 Esperantoeo7612 Esperantoeo7613 Esperantoeo7614 Esperantoeo7615 Esperantoeo7616 Esperantoeo7617 Esperantoeo7618 Esperantoeo7619 Esperantoeo762 Esperantoeo7620 Esperantoeo7621 Esperantoeo7622 Esperantoeo7623 Esperantoeo7624 Esperantoeo7625 Esperantoeo7626 Esperantoeo7627 Esperantoeo7628 Esperantoeo7629 Esperantoeo763 Esperantoeo7630 Esperantoeo7631 Esperantoeo7632 Esperantoeo7633 Esperantoeo7634 Esperantoeo7635 Esperantoeo7636 Esperantoeo7637 Esperantoeo7638 Esperantoeo7639 Esperantoeo764 Esperantoeo7640 Esperantoeo7641 Esperantoeo7642 Esperantoeo7643 Esperantoeo7644 Esperantoeo7645 Esperantoeo7646 Esperantoeo7647 Esperantoeo7648 Esperantoeo7649 Esperantoeo765 Esperantoeo7650 Esperantoeo7651 Esperantoeo7652 Esperantoeo7653 Esperantoeo7654 Esperantoeo7655 Esperantoeo7656 Esperantoeo7657 Esperantoeo7658 Esperantoeo7659 Esperantoeo766 Esperantoeo7660 Esperantoeo7661 Esperantoeo7662 Esperantoeo7663 Esperantoeo7664 Esperantoeo7665 Esperantoeo7666 Esperantoeo7667 Esperantoeo7668 Esperantoeo7669 Esperantoeo767 Esperantoeo7670 Esperantoeo7671 Esperantoeo7672 Esperantoeo7673 Esperantoeo7674 Esperantoeo7675 Esperantoeo7676 Esperantoeo7677 Esperantoeo7678 Esperantoeo7679 Esperantoeo768 Esperantoeo7680 Esperantoeo7681 Esperantoeo7682 Esperantoeo7683 Esperantoeo7684 Esperantoeo7685 Esperantoeo7686 Esperantoeo7687 Esperantoeo7688 Esperantoeo7689 Esperantoeo769 Esperantoeo7690 Esperantoeo7691 Esperantoeo7692 Esperantoeo7693 Esperantoeo7694 Esperantoeo7695 Esperantoeo7696 Esperantoeo7697 Esperantoeo7698 Esperantoeo7699 Esperantoeo77 Esperantoeo770 Esperantoeo7700 Esperantoeo7701 Esperantoeo7702 Esperantoeo7703 Esperantoeo7704 Esperantoeo7705 Esperantoeo7706 Esperantoeo7707 Esperantoeo7708 Esperantoeo7709 Esperantoeo771 Esperantoeo7710 Esperantoeo7711 Esperantoeo7712 Esperantoeo7713 Esperantoeo7714 Esperantoeo7715 Esperantoeo7716 Esperantoeo7717 Esperantoeo7718 Esperantoeo7719 Esperantoeo772 Esperantoeo7720 Esperantoeo7721 Esperantoeo7722 Esperantoeo7723 Esperantoeo7724 Esperantoeo7725 Esperantoeo7726 Esperantoeo7727 Esperantoeo7728 Esperantoeo7729 Esperantoeo773 Esperantoeo7730 Esperantoeo7731 Esperantoeo7732 Esperantoeo7733 Esperantoeo7734 Esperantoeo7735 Esperantoeo7736 Esperantoeo7737 Esperantoeo7738 Esperantoeo7739 Esperantoeo774 Esperantoeo7740 Esperantoeo7741 Esperantoeo7742 Esperantoeo7743 Esperantoeo7744 Esperantoeo7745 Esperantoeo7746 Esperantoeo7747 Esperantoeo7748 Esperantoeo7749 Esperantoeo775 Esperantoeo7750 Esperantoeo7751 Esperantoeo7752 Esperantoeo7753 Esperantoeo7754 Esperantoeo7755 Esperantoeo7756 Esperantoeo7757 Esperantoeo7758 Esperantoeo7759 Esperantoeo776 Esperantoeo7760 Esperantoeo7761 Esperantoeo7762 Esperantoeo7763 Esperantoeo7764 Esperantoeo7765 Esperantoeo7766 Esperantoeo7767 Esperantoeo7768 Esperantoeo7769 Esperantoeo777 Esperantoeo7770 Esperantoeo7771 Esperantoeo7772 Esperantoeo7773 Esperantoeo7774 Esperantoeo7775 Esperantoeo7776 Esperantoeo7777 Esperantoeo7778 Esperantoeo7779 Esperantoeo778 Esperantoeo7780 Esperantoeo7781 Esperantoeo7782 Esperantoeo7783 Esperantoeo7784 Esperantoeo7785 Esperantoeo7786 Esperantoeo7787 Esperantoeo7788 Esperantoeo7789 Esperantoeo779 Esperantoeo7790 Esperantoeo7791 Esperantoeo7792 Esperantoeo7793 Esperantoeo7794 Esperantoeo7795 Esperantoeo7796 Esperantoeo7797 Esperantoeo7798 Esperantoeo7799 Esperantoeo78 Esperantoeo780 Esperantoeo7800 Esperantoeo7801 Esperantoeo7802 Esperantoeo7803 Esperantoeo7804 Esperantoeo7805 Esperantoeo7806 Esperantoeo7807 Esperantoeo7808 Esperantoeo7809 Esperantoeo781 Esperantoeo7810 Esperantoeo7811 Esperantoeo7812 Esperantoeo7813 Esperantoeo7814 Esperantoeo7815 Esperantoeo7816 Esperantoeo7817 Esperantoeo7818 Esperantoeo7819 Esperantoeo782 Esperantoeo7820 Esperantoeo7821 Esperantoeo7822 Esperantoeo7823 Esperantoeo7824 Esperantoeo7825 Esperantoeo7826 Esperantoeo7827 Esperantoeo7828 Esperantoeo7829 Esperantoeo783 Esperantoeo7830 Esperantoeo7831 Esperantoeo7832 Esperantoeo7833 Esperantoeo7834 Esperantoeo7835 Esperantoeo7836 Esperantoeo7837 Esperantoeo7838 Esperantoeo7839 Esperantoeo784 Esperantoeo7840 Esperantoeo7841 Esperantoeo7842 Esperantoeo7843 Esperantoeo7844 Esperantoeo7845 Esperantoeo7846 Esperantoeo7847 Esperantoeo7848 Esperantoeo7849 Esperantoeo785 Esperantoeo7850 Esperantoeo7851 Esperantoeo7852 Esperantoeo7853 Esperantoeo7854 Esperantoeo7855 Esperantoeo7856 Esperantoeo7857 Esperantoeo7858 Esperantoeo7859 Esperantoeo786 Esperantoeo7860 Esperantoeo7861 Esperantoeo7862 Esperantoeo7863 Esperantoeo7864 Esperantoeo7865 Esperantoeo7866 Esperantoeo7867 Esperantoeo7868 Esperantoeo7869 Esperantoeo787 Esperantoeo7870 Esperantoeo7871 Esperantoeo7872 Esperantoeo7873 Esperantoeo7874 Esperantoeo7875 Esperantoeo7876 Esperantoeo7877 Esperantoeo7878 Esperantoeo7879 Esperantoeo788 Esperantoeo7880 Esperantoeo7881 Esperantoeo7882 Esperantoeo7883 Esperantoeo7884 Esperantoeo7885 Esperantoeo7886 Esperantoeo7887 Esperantoeo7888 Esperantoeo7889 Esperantoeo789 Esperantoeo7890 Esperantoeo7891 Esperantoeo7892 Esperantoeo7893 Esperantoeo7894 Esperantoeo7895 Esperantoeo7896 Esperantoeo7897 Esperantoeo7898 Esperantoeo7899 Esperantoeo79 Esperantoeo790 Esperantoeo7900 Esperantoeo7901 Esperantoeo7902 Esperantoeo7903 Esperantoeo7904 Esperantoeo7905 Esperantoeo7906 Esperantoeo7907 Esperantoeo7908 Esperantoeo7909 Esperantoeo791 Esperantoeo7910 Esperantoeo7911 Esperantoeo7912 Esperantoeo7913 Esperantoeo7914 Esperantoeo7915 Esperantoeo7916 Esperantoeo7917 Esperantoeo7918 Esperantoeo7919 Esperantoeo792 Esperantoeo7920 Esperantoeo7921 Esperantoeo7922 Esperantoeo7923 Esperantoeo7924 Esperantoeo7925 Esperantoeo7926 Esperantoeo7927 Esperantoeo7928 Esperantoeo7929 Esperantoeo793 Esperantoeo7930 Esperantoeo7931 Esperantoeo7932 Esperantoeo7933 Esperantoeo7934 Esperantoeo7935 Esperantoeo7936 Esperantoeo7937 Esperantoeo7938 Esperantoeo7939 Esperantoeo794 Esperantoeo7940 Esperantoeo7941 Esperantoeo7942 Esperantoeo7943 Esperantoeo7944 Esperantoeo7945 Esperantoeo7946 Esperantoeo7947 Esperantoeo7948 Esperantoeo7949 Esperantoeo795 Esperantoeo7950 Esperantoeo7951 Esperantoeo7952 Esperantoeo7953 Esperantoeo7954 Esperantoeo7955 Esperantoeo7956 Esperantoeo7957 Esperantoeo7958 Esperantoeo7959 Esperantoeo796 Esperantoeo7960 Esperantoeo7961 Esperantoeo7962 Esperantoeo7963 Esperantoeo7964 Esperantoeo7965 Esperantoeo7966 Esperantoeo7967 Esperantoeo7968 Esperantoeo7969 Esperantoeo797 Esperantoeo7970 Esperantoeo7971 Esperantoeo7972 Esperantoeo7973 Esperantoeo7974 Esperantoeo7975 Esperantoeo7976 Esperantoeo7977 Esperantoeo7978 Esperantoeo7979 Esperantoeo798 Esperantoeo7980 Esperantoeo7981 Esperantoeo7982 Esperantoeo7983 Esperantoeo7984 Esperantoeo7985 Esperantoeo7986 Esperantoeo7987 Esperantoeo7988 Esperantoeo7989 Esperantoeo799 Esperantoeo7990 Esperantoeo7991 Esperantoeo7992 Esperantoeo7993 Esperantoeo7994 Esperantoeo7995 Esperantoeo7996 Esperantoeo7997 Esperantoeo7998 Esperantoeo7999 Esperantoeo8 Esperantoeo80 Esperantoeo800 Esperantoeo8000 Esperantoeo8001 Esperantoeo8002 Esperantoeo8003 Esperantoeo8004 Esperantoeo8005 Esperantoeo8006 Esperantoeo8007 Esperantoeo8008 Esperantoeo8009 Esperantoeo801 Esperantoeo8010 Esperantoeo8011 Esperantoeo8012 Esperantoeo8013 Esperantoeo8014 Esperantoeo8015 Esperantoeo8016 Esperantoeo8017 Esperantoeo8018 Esperantoeo8019 Esperantoeo802 Esperantoeo8020 Esperantoeo8021 Esperantoeo8022 Esperantoeo8023 Esperantoeo8024 Esperantoeo8025 Esperantoeo8026 Esperantoeo8027 Esperantoeo8028 Esperantoeo8029 Esperantoeo803 Esperantoeo8030 Esperantoeo8031 Esperantoeo8032 Esperantoeo8033 Esperantoeo8034 Esperantoeo8035 Esperantoeo8036 Esperantoeo8037 Esperantoeo8038 Esperantoeo8039 Esperantoeo804 Esperantoeo8040 Esperantoeo8041 Esperantoeo8042 Esperantoeo8043 Esperantoeo8044 Esperantoeo8045 Esperantoeo8046 Esperantoeo8047 Esperantoeo8048 Esperantoeo8049 Esperantoeo805 Esperantoeo8050 Esperantoeo8051 Esperantoeo8052 Esperantoeo8053 Esperantoeo8054 Esperantoeo8055 Esperantoeo8056 Esperantoeo8057 Esperantoeo8058 Esperantoeo8059 Esperantoeo806 Esperantoeo8060 Esperantoeo8061 Esperantoeo8062 Esperantoeo8063 Esperantoeo8064 Esperantoeo8065 Esperantoeo8066 Esperantoeo8067 Esperantoeo8068 Esperantoeo8069 Esperantoeo807 Esperantoeo8070 Esperantoeo8071 Esperantoeo8072 Esperantoeo8073 Esperantoeo8074 Esperantoeo8075 Esperantoeo8076 Esperantoeo8077 Esperantoeo8078 Esperantoeo8079 Esperantoeo808 Esperantoeo8080 Esperantoeo8081 Esperantoeo8082 Esperantoeo8083 Esperantoeo8084 Esperantoeo8085 Esperantoeo8086 Esperantoeo8087 Esperantoeo8088 Esperantoeo8089 Esperantoeo809 Esperantoeo8090 Esperantoeo8091 Esperantoeo8092 Esperantoeo8093 Esperantoeo8094 Esperantoeo8095 Esperantoeo8096 Esperantoeo8097 Esperantoeo8098 Esperantoeo8099 Esperantoeo81 Esperantoeo810 Esperantoeo8100 Esperantoeo8101 Esperantoeo8102 Esperantoeo8103 Esperantoeo8104 Esperantoeo8105 Esperantoeo8106 Esperantoeo8107 Esperantoeo8108 Esperantoeo8109 Esperantoeo811 Esperantoeo8110 Esperantoeo8111 Esperantoeo8112 Esperantoeo8113 Esperantoeo8114 Esperantoeo8115 Esperantoeo8116 Esperantoeo8117 Esperantoeo8118 Esperantoeo8119 Esperantoeo812 Esperantoeo8120 Esperantoeo8121 Esperantoeo8122 Esperantoeo8123 Esperantoeo8124 Esperantoeo8125 Esperantoeo8126 Esperantoeo8127 Esperantoeo8128 Esperantoeo8129 Esperantoeo813 Esperantoeo8130 Esperantoeo8131 Esperantoeo8132 Esperantoeo8133 Esperantoeo8134 Esperantoeo8135 Esperantoeo8136 Esperantoeo8137 Esperantoeo8138 Esperantoeo8139 Esperantoeo814 Esperantoeo8140 Esperantoeo8141 Esperantoeo8142 Esperantoeo8143 Esperantoeo8144 Esperantoeo8145 Esperantoeo8146 Esperantoeo8147 Esperantoeo8148 Esperantoeo8149 Esperantoeo815 Esperantoeo8150 Esperantoeo8151 Esperantoeo8152 Esperantoeo8153 Esperantoeo8154 Esperantoeo8155 Esperantoeo8156 Esperantoeo8157 Esperantoeo8158 Esperantoeo8159 Esperantoeo816 Esperantoeo8160 Esperantoeo8161 Esperantoeo8162 Esperantoeo8163 Esperantoeo8164 Esperantoeo8165 Esperantoeo8166 Esperantoeo8167 Esperantoeo8168 Esperantoeo8169 Esperantoeo817 Esperantoeo8170 Esperantoeo8171 Esperantoeo8172 Esperantoeo8173 Esperantoeo8174 Esperantoeo8175 Esperantoeo8176 Esperantoeo8177 Esperantoeo8178 Esperantoeo8179 Esperantoeo818 Esperantoeo8180 Esperantoeo8181 Esperantoeo8182 Esperantoeo8183 Esperantoeo8184 Esperantoeo8185 Esperantoeo8186 Esperantoeo8187 Esperantoeo8188 Esperantoeo8189 Esperantoeo819 Esperantoeo8190 Esperantoeo8191 Esperantoeo82 Esperantoeo820 Esperantoeo821 Esperantoeo822 Esperantoeo823 Esperantoeo824 Esperantoeo825 Esperantoeo826 Esperantoeo827 Esperantoeo828 Esperantoeo829 Esperantoeo83 Esperantoeo830 Esperantoeo831 Esperantoeo832 Esperantoeo833 Esperantoeo834 Esperantoeo835 Esperantoeo836 Esperantoeo837 Esperantoeo838 Esperantoeo839 Esperantoeo84 Esperantoeo840 Esperantoeo841 Esperantoeo842 Esperantoeo843 Esperantoeo844 Esperantoeo845 Esperantoeo846 Esperantoeo847 Esperantoeo848 Esperantoeo849 Esperantoeo85 Esperantoeo850 Esperantoeo851 Esperantoeo852 Esperantoeo853 Esperantoeo854 Esperantoeo855 Esperantoeo856 Esperantoeo857 Esperantoeo858 Esperantoeo859 Esperantoeo86 Esperantoeo860 Esperantoeo861 Esperantoeo862 Esperantoeo863 Esperantoeo864 Esperantoeo865 Esperantoeo866 Esperantoeo867 Esperantoeo868 Esperantoeo869 Esperantoeo87 Esperantoeo870 Esperantoeo871 Esperantoeo872 Esperantoeo873 Esperantoeo874 Esperantoeo875 Esperantoeo876 Esperantoeo877 Esperantoeo878 Esperantoeo879 Esperantoeo88 Esperantoeo880 Esperantoeo881 Esperantoeo882 Esperantoeo883 Esperantoeo884 Esperantoeo885 Esperantoeo886 Esperantoeo887 Esperantoeo888 Esperantoeo889 Esperantoeo89 Esperantoeo890 Esperantoeo891 Esperantoeo892 Esperantoeo893 Esperantoeo894 Esperantoeo895 Esperantoeo896 Esperantoeo897 Esperantoeo898 Esperantoeo899 Esperantoeo9 Esperantoeo90 Esperantoeo900 Esperantoeo901 Esperantoeo902 Esperantoeo903 Esperantoeo904 Esperantoeo905 Esperantoeo906 Esperantoeo907 Esperantoeo908 Esperantoeo909 Esperantoeo91 Esperantoeo910 Esperantoeo911 Esperantoeo912 Esperantoeo913 Esperantoeo914 Esperantoeo915 Esperantoeo916 Esperantoeo917 Esperantoeo918 Esperantoeo919 Esperantoeo92 Esperantoeo920 Esperantoeo921 Esperantoeo922 Esperantoeo923 Esperantoeo924 Esperantoeo925 Esperantoeo926 Esperantoeo927 Esperantoeo928 Esperantoeo929 Esperantoeo93 Esperantoeo930 Esperantoeo931 Esperantoeo932 Esperantoeo933 Esperantoeo934 Esperantoeo935 Esperantoeo936 Esperantoeo937 Esperantoeo938 Esperantoeo939 Esperantoeo94 Esperantoeo940 Esperantoeo941 Esperantoeo942 Esperantoeo943 Esperantoeo944 Esperantoeo945 Esperantoeo946 Esperantoeo947 Esperantoeo948 Esperantoeo949 Esperantoeo95 Esperantoeo950 Esperantoeo951 Esperantoeo952 Esperantoeo953 Esperantoeo954 Esperantoeo955 Esperantoeo956 Esperantoeo957 Esperantoeo958 Esperantoeo959 Esperantoeo96 Esperantoeo960 Esperantoeo961 Esperantoeo962 Esperantoeo963 Esperantoeo964 Esperantoeo965 Esperantoeo966 Esperantoeo967 Esperantoeo968 Esperantoeo969 Esperantoeo97 Esperantoeo970 Esperantoeo971 Esperantoeo972 Esperantoeo973 Esperantoeo974 Esperantoeo975 Esperantoeo976 Esperantoeo977 Esperantoeo978 Esperantoeo979 Esperantoeo98 Esperantoeo980 Esperantoeo981 Esperantoeo982 Esperantoeo983 Esperantoeo984 Esperantoeo985 Esperantoeo986 Esperantoeo987 Esperantoeo988 Esperantoeo989 Esperantoeo99 Esperantoeo990 Esperantoeo991 Esperantoeo992 Esperantoeo993 Esperantoeo994 Esperantoeo995 Esperantoeo996 Esperantoeo997 Esperantoeo998 Esperantoeo999 Esperantoes0Spanishes1Spanishes10Spanishes100Spanishes1000Spanishes1001Spanishes1002Spanishes1003Spanishes1004Spanishes1005Spanishes1006Spanishes1007Spanishes1008Spanishes1009Spanishes101Spanishes1010Spanishes1011Spanishes1012Spanishes1013Spanishes1014Spanishes1015Spanishes1016Spanishes1017Spanishes1018Spanishes1019Spanishes102Spanishes1020Spanishes1021Spanishes1022Spanishes1023Spanishes1024Spanishes1025Spanishes1026Spanishes1027Spanishes1028Spanishes1029Spanishes103Spanishes1030Spanishes1031Spanishes1032Spanishes1033Spanishes1034Spanishes1035Spanishes1036Spanishes1037Spanishes1038Spanishes1039Spanishes104Spanishes1040Spanishes1041Spanishes1042Spanishes1043Spanishes1044Spanishes1045Spanishes1046Spanishes1047Spanishes1048Spanishes1049Spanishes105Spanishes1050Spanishes1051Spanishes1052Spanishes1053Spanishes1054Spanishes1055Spanishes1056Spanishes1057Spanishes1058Spanishes1059Spanishes106Spanishes1060Spanishes1061Spanishes1062Spanishes1063Spanishes1064Spanishes1065Spanishes1066Spanishes1067Spanishes1068Spanishes1069Spanishes107Spanishes1070Spanishes1071Spanishes1072Spanishes1073Spanishes1074Spanishes1075Spanishes1076Spanishes1077Spanishes1078Spanishes1079Spanishes108Spanishes1080Spanishes1081Spanishes1082Spanishes1083Spanishes1084Spanishes1085Spanishes1086Spanishes1087Spanishes1088Spanishes1089Spanishes109Spanishes1090Spanishes1091Spanishes1092Spanishes1093Spanishes1094Spanishes1095Spanishes1096Spanishes1097Spanishes1098Spanishes1099Spanishes11Spanishes110Spanishes1100Spanishes1101Spanishes1102Spanishes1103Spanishes1104Spanishes1105Spanishes1106Spanishes1107Spanishes1108Spanishes1109Spanishes111Spanishes1110Spanishes1111Spanishes1112Spanishes1113Spanishes1114Spanishes1115Spanishes1116Spanishes1117Spanishes1118Spanishes1119Spanishes112Spanishes1120Spanishes1121Spanishes1122Spanishes1123Spanishes1124Spanishes1125Spanishes1126Spanishes1127Spanishes1128Spanishes1129Spanishes113Spanishes1130Spanishes1131Spanishes1132Spanishes1133Spanishes1134Spanishes1135Spanishes1136Spanishes1137Spanishes1138Spanishes1139Spanishes114Spanishes1140Spanishes1141Spanishes1142Spanishes1143Spanishes1144Spanishes1145Spanishes1146Spanishes1147Spanishes1148Spanishes1149Spanishes115Spanishes1150Spanishes1151Spanishes1152Spanishes1153Spanishes1154Spanishes1155Spanishes1156Spanishes1157Spanishes1158Spanishes1159Spanishes116Spanishes1160Spanishes1161Spanishes1162Spanishes1163Spanishes1164Spanishes1165Spanishes1166Spanishes1167Spanishes1168Spanishes1169Spanishes117Spanishes1170Spanishes1171Spanishes1172Spanishes1173Spanishes1174Spanishes1175Spanishes1176Spanishes1177Spanishes1178Spanishes1179Spanishes118Spanishes1180Spanishes1181Spanishes1182Spanishes1183Spanishes1184Spanishes1185Spanishes1186Spanishes1187Spanishes1188Spanishes1189Spanishes119Spanishes1190Spanishes1191Spanishes1192Spanishes1193Spanishes1194Spanishes1195Spanishes1196Spanishes1197Spanishes1198Spanishes1199Spanishes12Spanishes120Spanishes1200Spanishes1201Spanishes1202Spanishes1203Spanishes1204Spanishes1205Spanishes1206Spanishes1207Spanishes1208Spanishes1209Spanishes121Spanishes1210Spanishes1211Spanishes1212Spanishes1213Spanishes1214Spanishes1215Spanishes1216Spanishes1217Spanishes1218Spanishes1219Spanishes122Spanishes1220Spanishes1221Spanishes1222Spanishes1223Spanishes1224Spanishes1225Spanishes1226Spanishes1227Spanishes1228Spanishes1229Spanishes123Spanishes1230Spanishes1231Spanishes1232Spanishes1233Spanishes1234Spanishes1235Spanishes1236Spanishes1237Spanishes1238Spanishes1239Spanishes124Spanishes1240Spanishes1241Spanishes1242Spanishes1243Spanishes1244Spanishes1245Spanishes1246Spanishes1247Spanishes1248Spanishes1249Spanishes125Spanishes1250Spanishes1251Spanishes1252Spanishes1253Spanishes1254Spanishes1255Spanishes1256Spanishes1257Spanishes1258Spanishes1259Spanishes126Spanishes1260Spanishes1261Spanishes1262Spanishes1263Spanishes1264Spanishes1265Spanishes1266Spanishes1267Spanishes1268Spanishes1269Spanishes127Spanishes1270Spanishes1271Spanishes1272Spanishes1273Spanishes1274Spanishes1275Spanishes1276Spanishes1277Spanishes1278Spanishes1279Spanishes128Spanishes1280Spanishes1281Spanishes1282Spanishes1283Spanishes1284Spanishes1285Spanishes1286Spanishes1287Spanishes1288Spanishes1289Spanishes129Spanishes1290Spanishes1291Spanishes1292Spanishes1293Spanishes1294Spanishes1295Spanishes1296Spanishes1297Spanishes1298Spanishes1299Spanishes13Spanishes130Spanishes1300Spanishes1301Spanishes1302Spanishes1303Spanishes1304Spanishes1305Spanishes1306Spanishes1307Spanishes1308Spanishes1309Spanishes131Spanishes1310Spanishes1311Spanishes1312Spanishes1313Spanishes1314Spanishes1315Spanishes1316Spanishes1317Spanishes1318Spanishes1319Spanishes132Spanishes1320Spanishes1321Spanishes1322Spanishes1323Spanishes1324Spanishes1325Spanishes1326Spanishes1327Spanishes1328Spanishes1329Spanishes133Spanishes1330Spanishes1331Spanishes1332Spanishes1333Spanishes1334Spanishes1335Spanishes1336Spanishes1337Spanishes1338Spanishes1339Spanishes134Spanishes1340Spanishes1341Spanishes1342Spanishes1343Spanishes1344Spanishes1345Spanishes1346Spanishes1347Spanishes1348Spanishes1349Spanishes135Spanishes1350Spanishes1351Spanishes1352Spanishes1353Spanishes1354Spanishes1355Spanishes1356Spanishes1357Spanishes1358Spanishes1359Spanishes136Spanishes1360Spanishes1361Spanishes1362Spanishes1363Spanishes1364Spanishes1365Spanishes1366Spanishes1367Spanishes1368Spanishes1369Spanishes137Spanishes1370Spanishes1371Spanishes1372Spanishes1373Spanishes1374Spanishes1375Spanishes1376Spanishes1377Spanishes1378Spanishes1379Spanishes138Spanishes1380Spanishes1381Spanishes1382Spanishes1383Spanishes1384Spanishes1385Spanishes1386Spanishes1387Spanishes1388Spanishes1389Spanishes139Spanishes1390Spanishes1391Spanishes1392Spanishes1393Spanishes1394Spanishes1395Spanishes1396Spanishes1397Spanishes1398Spanishes1399Spanishes14Spanishes140Spanishes1400Spanishes1401Spanishes1402Spanishes1403Spanishes1404Spanishes1405Spanishes1406Spanishes1407Spanishes1408Spanishes1409Spanishes141Spanishes1410Spanishes1411Spanishes1412Spanishes1413Spanishes1414Spanishes1415Spanishes1416Spanishes1417Spanishes1418Spanishes1419Spanishes142Spanishes1420Spanishes1421Spanishes1422Spanishes1423Spanishes1424Spanishes1425Spanishes1426Spanishes1427Spanishes1428Spanishes1429Spanishes143Spanishes1430Spanishes1431Spanishes1432Spanishes1433Spanishes1434Spanishes1435Spanishes1436Spanishes1437Spanishes1438Spanishes1439Spanishes144Spanishes1440Spanishes1441Spanishes1442Spanishes1443Spanishes1444Spanishes1445Spanishes1446Spanishes1447Spanishes1448Spanishes1449Spanishes145Spanishes1450Spanishes1451Spanishes1452Spanishes1453Spanishes1454Spanishes1455Spanishes1456Spanishes1457Spanishes1458Spanishes1459Spanishes146Spanishes1460Spanishes1461Spanishes1462Spanishes1463Spanishes1464Spanishes1465Spanishes1466Spanishes1467Spanishes1468Spanishes1469Spanishes147Spanishes1470Spanishes1471Spanishes1472Spanishes1473Spanishes1474Spanishes1475Spanishes1476Spanishes1477Spanishes1478Spanishes1479Spanishes148Spanishes1480Spanishes1481Spanishes1482Spanishes1483Spanishes1484Spanishes1485Spanishes1486Spanishes1487Spanishes1488Spanishes1489Spanishes149Spanishes1490Spanishes1491Spanishes1492Spanishes1493Spanishes1494Spanishes1495Spanishes1496Spanishes1497Spanishes1498Spanishes1499Spanishes15Spanishes150Spanishes1500Spanishes1501Spanishes1502Spanishes1503Spanishes1504Spanishes1505Spanishes1506Spanishes1507Spanishes1508Spanishes1509Spanishes151Spanishes1510Spanishes1511Spanishes1512Spanishes1513Spanishes1514Spanishes1515Spanishes1516Spanishes1517Spanishes1518Spanishes1519Spanishes152Spanishes1520Spanishes1521Spanishes1522Spanishes1523Spanishes1524Spanishes1525Spanishes1526Spanishes1527Spanishes1528Spanishes1529Spanishes153Spanishes1530Spanishes1531Spanishes1532Spanishes1533Spanishes1534Spanishes1535Spanishes1536Spanishes1537Spanishes1538Spanishes1539Spanishes154Spanishes1540Spanishes1541Spanishes1542Spanishes1543Spanishes1544Spanishes1545Spanishes1546Spanishes1547Spanishes1548Spanishes1549Spanishes155Spanishes1550Spanishes1551Spanishes1552Spanishes1553Spanishes1554Spanishes1555Spanishes1556Spanishes1557Spanishes1558Spanishes1559Spanishes156Spanishes1560Spanishes1561Spanishes1562Spanishes1563Spanishes1564Spanishes1565Spanishes1566Spanishes1567Spanishes1568Spanishes1569Spanishes157Spanishes1570Spanishes1571Spanishes1572Spanishes1573Spanishes1574Spanishes1575Spanishes1576Spanishes1577Spanishes1578Spanishes1579Spanishes158Spanishes1580Spanishes1581Spanishes1582Spanishes1583Spanishes1584Spanishes1585Spanishes1586Spanishes1587Spanishes1588Spanishes1589Spanishes159Spanishes1590Spanishes1591Spanishes1592Spanishes1593Spanishes1594Spanishes1595Spanishes1596Spanishes1597Spanishes1598Spanishes1599Spanishes16Spanishes160Spanishes1600Spanishes1601Spanishes1602Spanishes1603Spanishes1604Spanishes1605Spanishes1606Spanishes1607Spanishes1608Spanishes1609Spanishes161Spanishes1610Spanishes1611Spanishes1612Spanishes1613Spanishes1614Spanishes1615Spanishes1616Spanishes1617Spanishes1618Spanishes1619Spanishes162Spanishes1620Spanishes1621Spanishes1622Spanishes1623Spanishes1624Spanishes1625Spanishes1626Spanishes1627Spanishes1628Spanishes1629Spanishes163Spanishes1630Spanishes1631Spanishes1632Spanishes1633Spanishes1634Spanishes1635Spanishes1636Spanishes1637Spanishes1638Spanishes1639Spanishes164Spanishes1640Spanishes1641Spanishes1642Spanishes1643Spanishes1644Spanishes1645Spanishes1646Spanishes1647Spanishes1648Spanishes1649Spanishes165Spanishes1650Spanishes1651Spanishes1652Spanishes1653Spanishes1654Spanishes1655Spanishes1656Spanishes1657Spanishes1658Spanishes1659Spanishes166Spanishes1660Spanishes1661Spanishes1662Spanishes1663Spanishes1664Spanishes1665Spanishes1666Spanishes1667Spanishes1668Spanishes1669Spanishes167Spanishes1670Spanishes1671Spanishes1672Spanishes1673Spanishes1674Spanishes1675Spanishes1676Spanishes1677Spanishes1678Spanishes1679Spanishes168Spanishes1680Spanishes1681Spanishes1682Spanishes1683Spanishes1684Spanishes1685Spanishes1686Spanishes1687Spanishes1688Spanishes1689Spanishes169Spanishes1690Spanishes1691Spanishes1692Spanishes1693Spanishes1694Spanishes1695Spanishes1696Spanishes1697Spanishes1698Spanishes1699Spanishes17Spanishes170Spanishes1700Spanishes1701Spanishes1702Spanishes1703Spanishes1704Spanishes1705Spanishes1706Spanishes1707Spanishes1708Spanishes1709Spanishes171Spanishes1710Spanishes1711Spanishes1712Spanishes1713Spanishes1714Spanishes1715Spanishes1716Spanishes1717Spanishes1718Spanishes1719Spanishes172Spanishes1720Spanishes1721Spanishes1722Spanishes1723Spanishes1724Spanishes1725Spanishes1726Spanishes1727Spanishes1728Spanishes1729Spanishes173Spanishes1730Spanishes1731Spanishes1732Spanishes1733Spanishes1734Spanishes1735Spanishes1736Spanishes1737Spanishes1738Spanishes1739Spanishes174Spanishes1740Spanishes1741Spanishes1742Spanishes1743Spanishes1744Spanishes1745Spanishes1746Spanishes1747Spanishes1748Spanishes1749Spanishes175Spanishes1750Spanishes1751Spanishes1752Spanishes1753Spanishes1754Spanishes1755Spanishes1756Spanishes1757Spanishes1758Spanishes1759Spanishes176Spanishes1760Spanishes1761Spanishes1762Spanishes1763Spanishes1764Spanishes1765Spanishes1766Spanishes1767Spanishes1768Spanishes1769Spanishes177Spanishes1770Spanishes1771Spanishes1772Spanishes1773Spanishes1774Spanishes1775Spanishes1776Spanishes1777Spanishes1778Spanishes1779Spanishes178Spanishes1780Spanishes1781Spanishes1782Spanishes1783Spanishes1784Spanishes1785Spanishes1786Spanishes1787Spanishes1788Spanishes1789Spanishes179Spanishes1790Spanishes1791Spanishes1792Spanishes1793Spanishes1794Spanishes1795Spanishes1796Spanishes1797Spanishes1798Spanishes1799Spanishes18Spanishes180Spanishes1800Spanishes1801Spanishes1802Spanishes1803Spanishes1804Spanishes1805Spanishes1806Spanishes1807Spanishes1808Spanishes1809Spanishes181Spanishes1810Spanishes1811Spanishes1812Spanishes1813Spanishes1814Spanishes1815Spanishes1816Spanishes1817Spanishes1818Spanishes1819Spanishes182Spanishes1820Spanishes1821Spanishes1822Spanishes1823Spanishes1824Spanishes1825Spanishes1826Spanishes1827Spanishes1828Spanishes1829Spanishes183Spanishes1830Spanishes1831Spanishes1832Spanishes1833Spanishes1834Spanishes1835Spanishes1836Spanishes1837Spanishes1838Spanishes1839Spanishes184Spanishes1840Spanishes1841Spanishes1842Spanishes1843Spanishes1844Spanishes1845Spanishes1846Spanishes1847Spanishes1848Spanishes1849Spanishes185Spanishes1850Spanishes1851Spanishes1852Spanishes1853Spanishes1854Spanishes1855Spanishes1856Spanishes1857Spanishes1858Spanishes1859Spanishes186Spanishes1860Spanishes1861Spanishes1862Spanishes1863Spanishes1864Spanishes1865Spanishes1866Spanishes1867Spanishes1868Spanishes1869Spanishes187Spanishes1870Spanishes1871Spanishes1872Spanishes1873Spanishes1874Spanishes1875Spanishes1876Spanishes1877Spanishes1878Spanishes1879Spanishes188Spanishes1880Spanishes1881Spanishes1882Spanishes1883Spanishes1884Spanishes1885Spanishes1886Spanishes1887Spanishes1888Spanishes1889Spanishes189Spanishes1890Spanishes1891Spanishes1892Spanishes1893Spanishes1894Spanishes1895Spanishes1896Spanishes1897Spanishes1898Spanishes1899Spanishes19Spanishes190Spanishes1900Spanishes1901Spanishes1902Spanishes1903Spanishes1904Spanishes1905Spanishes1906Spanishes1907Spanishes1908Spanishes1909Spanishes191Spanishes1910Spanishes1911Spanishes1912Spanishes1913Spanishes1914Spanishes1915Spanishes1916Spanishes1917Spanishes1918Spanishes1919Spanishes192Spanishes1920Spanishes1921Spanishes1922Spanishes1923Spanishes1924Spanishes1925Spanishes1926Spanishes1927Spanishes1928Spanishes1929Spanishes193Spanishes1930Spanishes1931Spanishes1932Spanishes1933Spanishes1934Spanishes1935Spanishes1936Spanishes1937Spanishes1938Spanishes1939Spanishes194Spanishes1940Spanishes1941Spanishes1942Spanishes1943Spanishes1944Spanishes1945Spanishes1946Spanishes1947Spanishes1948Spanishes1949Spanishes195Spanishes1950Spanishes1951Spanishes1952Spanishes1953Spanishes1954Spanishes1955Spanishes1956Spanishes1957Spanishes1958Spanishes1959Spanishes196Spanishes1960Spanishes1961Spanishes1962Spanishes1963Spanishes1964Spanishes1965Spanishes1966Spanishes1967Spanishes1968Spanishes1969Spanishes197Spanishes1970Spanishes1971Spanishes1972Spanishes1973Spanishes1974Spanishes1975Spanishes1976Spanishes1977Spanishes1978Spanishes1979Spanishes198Spanishes1980Spanishes1981Spanishes1982Spanishes1983Spanishes1984Spanishes1985Spanishes1986Spanishes1987Spanishes1988Spanishes1989Spanishes199Spanishes1990Spanishes1991Spanishes1992Spanishes1993Spanishes1994Spanishes1995Spanishes1996Spanishes1997Spanishes1998Spanishes1999Spanishes2Spanishes20Spanishes200Spanishes2000Spanishes2001Spanishes2002Spanishes2003Spanishes2004Spanishes2005Spanishes2006Spanishes2007Spanishes2008Spanishes2009Spanishes201Spanishes2010Spanishes2011Spanishes2012Spanishes2013Spanishes2014Spanishes2015Spanishes2016Spanishes2017Spanishes2018Spanishes2019Spanishes202Spanishes2020Spanishes2021Spanishes2022Spanishes2023Spanishes2024Spanishes2025Spanishes2026Spanishes2027Spanishes2028Spanishes2029Spanishes203Spanishes2030Spanishes2031Spanishes2032Spanishes2033Spanishes2034Spanishes2035Spanishes2036Spanishes2037Spanishes2038Spanishes2039Spanishes204Spanishes2040Spanishes2041Spanishes2042Spanishes2043Spanishes2044Spanishes2045Spanishes2046Spanishes2047Spanishes2048Spanishes2049Spanishes205Spanishes2050Spanishes2051Spanishes2052Spanishes2053Spanishes2054Spanishes2055Spanishes2056Spanishes2057Spanishes2058Spanishes2059Spanishes206Spanishes2060Spanishes2061Spanishes2062Spanishes2063Spanishes2064Spanishes2065Spanishes2066Spanishes2067Spanishes2068Spanishes2069Spanishes207Spanishes2070Spanishes2071Spanishes2072Spanishes2073Spanishes2074Spanishes2075Spanishes2076Spanishes2077Spanishes2078Spanishes2079Spanishes208Spanishes2080Spanishes2081Spanishes2082Spanishes2083Spanishes2084Spanishes2085Spanishes2086Spanishes2087Spanishes2088Spanishes2089Spanishes209Spanishes2090Spanishes2091Spanishes2092Spanishes2093Spanishes2094Spanishes2095Spanishes2096Spanishes2097Spanishes2098Spanishes2099Spanishes21Spanishes210Spanishes2100Spanishes2101Spanishes2102Spanishes2103Spanishes2104Spanishes2105Spanishes2106Spanishes2107Spanishes2108Spanishes2109Spanishes211Spanishes2110Spanishes2111Spanishes2112Spanishes2113Spanishes2114Spanishes2115Spanishes2116Spanishes2117Spanishes2118Spanishes2119Spanishes212Spanishes2120Spanishes2121Spanishes2122Spanishes2123Spanishes2124Spanishes2125Spanishes2126Spanishes2127Spanishes2128Spanishes2129Spanishes213Spanishes2130Spanishes2131Spanishes2132Spanishes2133Spanishes2134Spanishes2135Spanishes2136Spanishes2137Spanishes2138Spanishes2139Spanishes214Spanishes2140Spanishes2141Spanishes2142Spanishes2143Spanishes2144Spanishes2145Spanishes2146Spanishes2147Spanishes2148Spanishes2149Spanishes215Spanishes2150Spanishes2151Spanishes2152Spanishes2153Spanishes2154Spanishes2155Spanishes2156Spanishes2157Spanishes2158Spanishes2159Spanishes216Spanishes2160Spanishes2161Spanishes2162Spanishes2163Spanishes2164Spanishes2165Spanishes2166Spanishes2167Spanishes2168Spanishes2169Spanishes217Spanishes2170Spanishes2171Spanishes2172Spanishes2173Spanishes2174Spanishes2175Spanishes2176Spanishes2177Spanishes2178Spanishes2179Spanishes218Spanishes2180Spanishes2181Spanishes2182Spanishes2183Spanishes2184Spanishes2185Spanishes2186Spanishes2187Spanishes2188Spanishes2189Spanishes219Spanishes2190Spanishes2191Spanishes2192Spanishes2193Spanishes2194Spanishes2195Spanishes2196Spanishes2197Spanishes2198Spanishes2199Spanishes22Spanishes220Spanishes2200Spanishes2201Spanishes2202Spanishes2203Spanishes2204Spanishes2205Spanishes2206Spanishes2207Spanishes2208Spanishes2209Spanishes221Spanishes2210Spanishes2211Spanishes2212Spanishes2213Spanishes2214Spanishes2215Spanishes2216Spanishes2217Spanishes2218Spanishes2219Spanishes222Spanishes2220Spanishes2221Spanishes2222Spanishes2223Spanishes2224Spanishes2225Spanishes2226Spanishes2227Spanishes2228Spanishes2229Spanishes223Spanishes2230Spanishes2231Spanishes2232Spanishes2233Spanishes2234Spanishes2235Spanishes2236Spanishes2237Spanishes2238Spanishes2239Spanishes224Spanishes2240Spanishes2241Spanishes2242Spanishes2243Spanishes2244Spanishes2245Spanishes2246Spanishes2247Spanishes2248Spanishes2249Spanishes225Spanishes2250Spanishes2251Spanishes2252Spanishes2253Spanishes2254Spanishes2255Spanishes2256Spanishes2257Spanishes2258Spanishes2259Spanishes226Spanishes2260Spanishes2261Spanishes2262Spanishes2263Spanishes2264Spanishes2265Spanishes2266Spanishes2267Spanishes2268Spanishes2269Spanishes227Spanishes2270Spanishes2271Spanishes2272Spanishes2273Spanishes2274Spanishes2275Spanishes2276Spanishes2277Spanishes2278Spanishes2279Spanishes228Spanishes2280Spanishes2281Spanishes2282Spanishes2283Spanishes2284Spanishes2285Spanishes2286Spanishes2287Spanishes2288Spanishes2289Spanishes229Spanishes2290Spanishes2291Spanishes2292Spanishes2293Spanishes2294Spanishes2295Spanishes2296Spanishes2297Spanishes2298Spanishes2299Spanishes23Spanishes230Spanishes2300Spanishes2301Spanishes2302Spanishes2303Spanishes2304Spanishes2305Spanishes2306Spanishes2307Spanishes2308Spanishes2309Spanishes231Spanishes2310Spanishes2311Spanishes2312Spanishes2313Spanishes2314Spanishes2315Spanishes2316Spanishes2317Spanishes2318Spanishes2319Spanishes232Spanishes2320Spanishes2321Spanishes2322Spanishes2323Spanishes2324Spanishes2325Spanishes2326Spanishes2327Spanishes2328Spanishes2329Spanishes233Spanishes2330Spanishes2331Spanishes2332Spanishes2333Spanishes2334Spanishes2335Spanishes2336Spanishes2337Spanishes2338Spanishes2339Spanishes234Spanishes2340Spanishes2341Spanishes2342Spanishes2343Spanishes2344Spanishes2345Spanishes2346Spanishes2347Spanishes2348Spanishes2349Spanishes235Spanishes2350Spanishes2351Spanishes2352Spanishes2353Spanishes2354Spanishes2355Spanishes2356Spanishes2357Spanishes2358Spanishes2359Spanishes236Spanishes2360Spanishes2361Spanishes2362Spanishes2363Spanishes2364Spanishes2365Spanishes2366Spanishes2367Spanishes2368Spanishes2369Spanishes237Spanishes2370Spanishes2371Spanishes2372Spanishes2373Spanishes2374Spanishes2375Spanishes2376Spanishes2377Spanishes2378Spanishes2379Spanishes238Spanishes2380Spanishes2381Spanishes2382Spanishes2383Spanishes2384Spanishes2385Spanishes2386Spanishes2387Spanishes2388Spanishes2389Spanishes239Spanishes2390Spanishes2391Spanishes2392Spanishes2393Spanishes2394Spanishes2395Spanishes2396Spanishes2397Spanishes2398Spanishes2399Spanishes24Spanishes240Spanishes2400Spanishes2401Spanishes2402Spanishes2403Spanishes2404Spanishes2405Spanishes2406Spanishes2407Spanishes2408Spanishes2409Spanishes241Spanishes2410Spanishes2411Spanishes2412Spanishes2413Spanishes2414Spanishes2415Spanishes2416Spanishes2417Spanishes2418Spanishes2419Spanishes242Spanishes2420Spanishes2421Spanishes2422Spanishes2423Spanishes2424Spanishes2425Spanishes2426Spanishes2427Spanishes2428Spanishes2429Spanishes243Spanishes2430Spanishes2431Spanishes2432Spanishes2433Spanishes2434Spanishes2435Spanishes2436Spanishes2437Spanishes2438Spanishes2439Spanishes244Spanishes2440Spanishes2441Spanishes2442Spanishes2443Spanishes2444Spanishes2445Spanishes2446Spanishes2447Spanishes2448Spanishes2449Spanishes245Spanishes2450Spanishes2451Spanishes2452Spanishes2453Spanishes2454Spanishes2455Spanishes2456Spanishes2457Spanishes2458Spanishes2459Spanishes246Spanishes2460Spanishes2461Spanishes2462Spanishes2463Spanishes2464Spanishes2465Spanishes2466Spanishes2467Spanishes2468Spanishes2469Spanishes247Spanishes2470Spanishes2471Spanishes2472Spanishes2473Spanishes2474Spanishes2475Spanishes2476Spanishes2477Spanishes2478Spanishes2479Spanishes248Spanishes2480Spanishes2481Spanishes2482Spanishes2483Spanishes2484Spanishes2485Spanishes2486Spanishes2487Spanishes2488Spanishes2489Spanishes249Spanishes2490Spanishes2491Spanishes2492Spanishes2493Spanishes2494Spanishes2495Spanishes2496Spanishes2497Spanishes2498Spanishes2499Spanishes25Spanishes250Spanishes2500Spanishes2501Spanishes2502Spanishes2503Spanishes2504Spanishes2505Spanishes2506Spanishes2507Spanishes2508Spanishes2509Spanishes251Spanishes2510Spanishes2511Spanishes2512Spanishes2513Spanishes2514Spanishes2515Spanishes2516Spanishes2517Spanishes2518Spanishes2519Spanishes252Spanishes2520Spanishes2521Spanishes2522Spanishes2523Spanishes2524Spanishes2525Spanishes2526Spanishes2527Spanishes2528Spanishes2529Spanishes253Spanishes2530Spanishes2531Spanishes2532Spanishes2533Spanishes2534Spanishes2535Spanishes2536Spanishes2537Spanishes2538Spanishes2539Spanishes254Spanishes2540Spanishes2541Spanishes2542Spanishes2543Spanishes2544Spanishes2545Spanishes2546Spanishes2547Spanishes2548Spanishes2549Spanishes255Spanishes2550Spanishes2551Spanishes2552Spanishes2553Spanishes2554Spanishes2555Spanishes2556Spanishes2557Spanishes2558Spanishes2559Spanishes256Spanishes2560Spanishes2561Spanishes2562Spanishes2563Spanishes2564Spanishes2565Spanishes2566Spanishes2567Spanishes2568Spanishes2569Spanishes257Spanishes2570Spanishes2571Spanishes2572Spanishes2573Spanishes2574Spanishes2575Spanishes2576Spanishes2577Spanishes2578Spanishes2579Spanishes258Spanishes2580Spanishes2581Spanishes2582Spanishes2583Spanishes2584Spanishes2585Spanishes2586Spanishes2587Spanishes2588Spanishes2589Spanishes259Spanishes2590Spanishes2591Spanishes2592Spanishes2593Spanishes2594Spanishes2595Spanishes2596Spanishes2597Spanishes2598Spanishes2599Spanishes26Spanishes260Spanishes2600Spanishes2601Spanishes2602Spanishes2603Spanishes2604Spanishes2605Spanishes2606Spanishes2607Spanishes2608Spanishes2609Spanishes261Spanishes2610Spanishes2611Spanishes2612Spanishes2613Spanishes2614Spanishes2615Spanishes2616Spanishes2617Spanishes2618Spanishes2619Spanishes262Spanishes2620Spanishes2621Spanishes2622Spanishes2623Spanishes2624Spanishes2625Spanishes2626Spanishes2627Spanishes2628Spanishes2629Spanishes263Spanishes2630Spanishes2631Spanishes2632Spanishes2633Spanishes2634Spanishes2635Spanishes2636Spanishes2637Spanishes2638Spanishes2639Spanishes264Spanishes2640Spanishes2641Spanishes2642Spanishes2643Spanishes2644Spanishes2645Spanishes2646Spanishes2647Spanishes2648Spanishes2649Spanishes265Spanishes2650Spanishes2651Spanishes2652Spanishes2653Spanishes2654Spanishes2655Spanishes2656Spanishes2657Spanishes2658Spanishes2659Spanishes266Spanishes2660Spanishes2661Spanishes2662Spanishes2663Spanishes2664Spanishes2665Spanishes2666Spanishes2667Spanishes2668Spanishes2669Spanishes267Spanishes2670Spanishes2671Spanishes2672Spanishes2673Spanishes2674Spanishes2675Spanishes2676Spanishes2677Spanishes2678Spanishes2679Spanishes268Spanishes2680Spanishes2681Spanishes2682Spanishes2683Spanishes2684Spanishes2685Spanishes2686Spanishes2687Spanishes2688Spanishes2689Spanishes269Spanishes2690Spanishes2691Spanishes2692Spanishes2693Spanishes2694Spanishes2695Spanishes2696Spanishes2697Spanishes2698Spanishes2699Spanishes27Spanishes270Spanishes2700Spanishes2701Spanishes2702Spanishes2703Spanishes2704Spanishes2705Spanishes2706Spanishes2707Spanishes2708Spanishes2709Spanishes271Spanishes2710Spanishes2711Spanishes2712Spanishes2713Spanishes2714Spanishes2715Spanishes2716Spanishes2717Spanishes2718Spanishes2719Spanishes272Spanishes2720Spanishes2721Spanishes2722Spanishes2723Spanishes2724Spanishes2725Spanishes2726Spanishes2727Spanishes2728Spanishes2729Spanishes273Spanishes2730Spanishes2731Spanishes2732Spanishes2733Spanishes2734Spanishes2735Spanishes2736Spanishes2737Spanishes2738Spanishes2739Spanishes274Spanishes2740Spanishes2741Spanishes2742Spanishes2743Spanishes2744Spanishes2745Spanishes2746Spanishes2747Spanishes2748Spanishes2749Spanishes275Spanishes2750Spanishes2751Spanishes2752Spanishes2753Spanishes2754Spanishes2755Spanishes2756Spanishes2757Spanishes2758Spanishes2759Spanishes276Spanishes2760Spanishes2761Spanishes2762Spanishes2763Spanishes2764Spanishes2765Spanishes2766Spanishes2767Spanishes2768Spanishes2769Spanishes277Spanishes2770Spanishes2771Spanishes2772Spanishes2773Spanishes2774Spanishes2775Spanishes2776Spanishes2777Spanishes2778Spanishes2779Spanishes278Spanishes2780Spanishes2781Spanishes2782Spanishes2783Spanishes2784Spanishes2785Spanishes2786Spanishes2787Spanishes2788Spanishes2789Spanishes279Spanishes2790Spanishes2791Spanishes2792Spanishes2793Spanishes2794Spanishes2795Spanishes2796Spanishes2797Spanishes2798Spanishes2799Spanishes28Spanishes280Spanishes2800Spanishes2801Spanishes2802Spanishes2803Spanishes2804Spanishes2805Spanishes2806Spanishes2807Spanishes2808Spanishes2809Spanishes281Spanishes2810Spanishes2811Spanishes2812Spanishes2813Spanishes2814Spanishes2815Spanishes2816Spanishes2817Spanishes2818Spanishes2819Spanishes282Spanishes2820Spanishes2821Spanishes2822Spanishes2823Spanishes2824Spanishes2825Spanishes2826Spanishes2827Spanishes2828Spanishes2829Spanishes283Spanishes2830Spanishes2831Spanishes2832Spanishes2833Spanishes2834Spanishes2835Spanishes2836Spanishes2837Spanishes2838Spanishes2839Spanishes284Spanishes2840Spanishes2841Spanishes2842Spanishes2843Spanishes2844Spanishes2845Spanishes2846Spanishes2847Spanishes2848Spanishes2849Spanishes285Spanishes2850Spanishes2851Spanishes2852Spanishes2853Spanishes2854Spanishes2855Spanishes2856Spanishes2857Spanishes2858Spanishes2859Spanishes286Spanishes2860Spanishes2861Spanishes2862Spanishes2863Spanishes2864Spanishes2865Spanishes2866Spanishes2867Spanishes2868Spanishes2869Spanishes287Spanishes2870Spanishes2871Spanishes2872Spanishes2873Spanishes2874Spanishes2875Spanishes2876Spanishes2877Spanishes2878Spanishes2879Spanishes288Spanishes2880Spanishes2881Spanishes2882Spanishes2883Spanishes2884Spanishes2885Spanishes2886Spanishes2887Spanishes2888Spanishes2889Spanishes289Spanishes2890Spanishes2891Spanishes2892Spanishes2893Spanishes2894Spanishes2895Spanishes2896Spanishes2897Spanishes2898Spanishes2899Spanishes29Spanishes290Spanishes2900Spanishes2901Spanishes2902Spanishes2903Spanishes2904Spanishes2905Spanishes2906Spanishes2907Spanishes2908Spanishes2909Spanishes291Spanishes2910Spanishes2911Spanishes2912Spanishes2913Spanishes2914Spanishes2915Spanishes2916Spanishes2917Spanishes2918Spanishes2919Spanishes292Spanishes2920Spanishes2921Spanishes2922Spanishes2923Spanishes2924Spanishes2925Spanishes2926Spanishes2927Spanishes2928Spanishes2929Spanishes293Spanishes2930Spanishes2931Spanishes2932Spanishes2933Spanishes2934Spanishes2935Spanishes2936Spanishes2937Spanishes2938Spanishes2939Spanishes294Spanishes2940Spanishes2941Spanishes2942Spanishes2943Spanishes2944Spanishes2945Spanishes2946Spanishes2947Spanishes2948Spanishes2949Spanishes295Spanishes2950Spanishes2951Spanishes2952Spanishes2953Spanishes2954Spanishes2955Spanishes2956Spanishes2957Spanishes2958Spanishes2959Spanishes296Spanishes2960Spanishes2961Spanishes2962Spanishes2963Spanishes2964Spanishes2965Spanishes2966Spanishes2967Spanishes2968Spanishes2969Spanishes297Spanishes2970Spanishes2971Spanishes2972Spanishes2973Spanishes2974Spanishes2975Spanishes2976Spanishes2977Spanishes2978Spanishes2979Spanishes298Spanishes2980Spanishes2981Spanishes2982Spanishes2983Spanishes2984Spanishes2985Spanishes2986Spanishes2987Spanishes2988Spanishes2989Spanishes299Spanishes2990Spanishes2991Spanishes2992Spanishes2993Spanishes2994Spanishes2995Spanishes2996Spanishes2997Spanishes2998Spanishes2999Spanishes3Spanishes30Spanishes300Spanishes3000Spanishes3001Spanishes3002Spanishes3003Spanishes3004Spanishes3005Spanishes3006Spanishes3007Spanishes3008Spanishes3009Spanishes301Spanishes3010Spanishes3011Spanishes3012Spanishes3013Spanishes3014Spanishes3015Spanishes3016Spanishes3017Spanishes3018Spanishes3019Spanishes302Spanishes3020Spanishes3021Spanishes3022Spanishes3023Spanishes3024Spanishes3025Spanishes3026Spanishes3027Spanishes3028Spanishes3029Spanishes303Spanishes3030Spanishes3031Spanishes3032Spanishes3033Spanishes3034Spanishes3035Spanishes3036Spanishes3037Spanishes3038Spanishes3039Spanishes304Spanishes3040Spanishes3041Spanishes3042Spanishes3043Spanishes3044Spanishes3045Spanishes3046Spanishes3047Spanishes3048Spanishes3049Spanishes305Spanishes3050Spanishes3051Spanishes3052Spanishes3053Spanishes3054Spanishes3055Spanishes3056Spanishes3057Spanishes3058Spanishes3059Spanishes306Spanishes3060Spanishes3061Spanishes3062Spanishes3063Spanishes3064Spanishes3065Spanishes3066Spanishes3067Spanishes3068Spanishes3069Spanishes307Spanishes3070Spanishes3071Spanishes3072Spanishes3073Spanishes3074Spanishes3075Spanishes3076Spanishes3077Spanishes3078Spanishes3079Spanishes308Spanishes3080Spanishes3081Spanishes3082Spanishes3083Spanishes3084Spanishes3085Spanishes3086Spanishes3087Spanishes3088Spanishes3089Spanishes309Spanishes3090Spanishes3091Spanishes3092Spanishes3093Spanishes3094Spanishes3095Spanishes3096Spanishes3097Spanishes3098Spanishes3099Spanishes31Spanishes310Spanishes3100Spanishes3101Spanishes3102Spanishes3103Spanishes3104Spanishes3105Spanishes3106Spanishes3107Spanishes3108Spanishes3109Spanishes311Spanishes3110Spanishes3111Spanishes3112Spanishes3113Spanishes3114Spanishes3115Spanishes3116Spanishes3117Spanishes3118Spanishes3119Spanishes312Spanishes3120Spanishes3121Spanishes3122Spanishes3123Spanishes3124Spanishes3125Spanishes3126Spanishes3127Spanishes3128Spanishes3129Spanishes313Spanishes3130Spanishes3131Spanishes3132Spanishes3133Spanishes3134Spanishes3135Spanishes3136Spanishes3137Spanishes3138Spanishes3139Spanishes314Spanishes3140Spanishes3141Spanishes3142Spanishes3143Spanishes3144Spanishes3145Spanishes3146Spanishes3147Spanishes3148Spanishes3149Spanishes315Spanishes3150Spanishes3151Spanishes3152Spanishes3153Spanishes3154Spanishes3155Spanishes3156Spanishes3157Spanishes3158Spanishes3159Spanishes316Spanishes3160Spanishes3161Spanishes3162Spanishes3163Spanishes3164Spanishes3165Spanishes3166Spanishes3167Spanishes3168Spanishes3169Spanishes317Spanishes3170Spanishes3171Spanishes3172Spanishes3173Spanishes3174Spanishes3175Spanishes3176Spanishes3177Spanishes3178Spanishes3179Spanishes318Spanishes3180Spanishes3181Spanishes3182Spanishes3183Spanishes3184Spanishes3185Spanishes3186Spanishes3187Spanishes3188Spanishes3189Spanishes319Spanishes3190Spanishes3191Spanishes3192Spanishes3193Spanishes3194Spanishes3195Spanishes3196Spanishes3197Spanishes3198Spanishes3199Spanishes32Spanishes320Spanishes3200Spanishes3201Spanishes3202Spanishes3203Spanishes3204Spanishes3205Spanishes3206Spanishes3207Spanishes3208Spanishes3209Spanishes321Spanishes3210Spanishes3211Spanishes3212Spanishes3213Spanishes3214Spanishes3215Spanishes3216Spanishes3217Spanishes3218Spanishes3219Spanishes322Spanishes3220Spanishes3221Spanishes3222Spanishes3223Spanishes3224Spanishes3225Spanishes3226Spanishes3227Spanishes3228Spanishes3229Spanishes323Spanishes3230Spanishes3231Spanishes3232Spanishes3233Spanishes3234Spanishes3235Spanishes3236Spanishes3237Spanishes3238Spanishes3239Spanishes324Spanishes3240Spanishes3241Spanishes3242Spanishes3243Spanishes3244Spanishes3245Spanishes3246Spanishes3247Spanishes3248Spanishes3249Spanishes325Spanishes3250Spanishes3251Spanishes3252Spanishes3253Spanishes3254Spanishes3255Spanishes3256Spanishes3257Spanishes3258Spanishes3259Spanishes326Spanishes3260Spanishes3261Spanishes3262Spanishes3263Spanishes3264Spanishes3265Spanishes3266Spanishes3267Spanishes3268Spanishes3269Spanishes327Spanishes3270Spanishes3271Spanishes3272Spanishes3273Spanishes3274Spanishes3275Spanishes3276Spanishes3277Spanishes3278Spanishes3279Spanishes328Spanishes3280Spanishes3281Spanishes3282Spanishes3283Spanishes3284Spanishes3285Spanishes3286Spanishes3287Spanishes3288Spanishes3289Spanishes329Spanishes3290Spanishes3291Spanishes3292Spanishes3293Spanishes3294Spanishes3295Spanishes3296Spanishes3297Spanishes3298Spanishes3299Spanishes33Spanishes330Spanishes3300Spanishes3301Spanishes3302Spanishes3303Spanishes3304Spanishes3305Spanishes3306Spanishes3307Spanishes3308Spanishes3309Spanishes331Spanishes3310Spanishes3311Spanishes3312Spanishes3313Spanishes3314Spanishes3315Spanishes3316Spanishes3317Spanishes3318Spanishes3319Spanishes332Spanishes3320Spanishes3321Spanishes3322Spanishes3323Spanishes3324Spanishes3325Spanishes3326Spanishes3327Spanishes3328Spanishes3329Spanishes333Spanishes3330Spanishes3331Spanishes3332Spanishes3333Spanishes3334Spanishes3335Spanishes3336Spanishes3337Spanishes3338Spanishes3339Spanishes334Spanishes3340Spanishes3341Spanishes3342Spanishes3343Spanishes3344Spanishes3345Spanishes3346Spanishes3347Spanishes3348Spanishes3349Spanishes335Spanishes3350Spanishes3351Spanishes3352Spanishes3353Spanishes3354Spanishes3355Spanishes3356Spanishes3357Spanishes3358Spanishes3359Spanishes336Spanishes3360Spanishes3361Spanishes3362Spanishes3363Spanishes3364Spanishes3365Spanishes3366Spanishes3367Spanishes3368Spanishes3369Spanishes337Spanishes3370Spanishes3371Spanishes3372Spanishes3373Spanishes3374Spanishes3375Spanishes3376Spanishes3377Spanishes3378Spanishes3379Spanishes338Spanishes3380Spanishes3381Spanishes3382Spanishes3383Spanishes3384Spanishes3385Spanishes3386Spanishes3387Spanishes3388Spanishes3389Spanishes339Spanishes3390Spanishes3391Spanishes3392Spanishes3393Spanishes3394Spanishes3395Spanishes3396Spanishes3397Spanishes3398Spanishes3399Spanishes34Spanishes340Spanishes3400Spanishes3401Spanishes3402Spanishes3403Spanishes3404Spanishes3405Spanishes3406Spanishes3407Spanishes3408Spanishes3409Spanishes341Spanishes3410Spanishes3411Spanishes3412Spanishes3413Spanishes3414Spanishes3415Spanishes3416Spanishes3417Spanishes3418Spanishes3419Spanishes342Spanishes3420Spanishes3421Spanishes3422Spanishes3423Spanishes3424Spanishes3425Spanishes3426Spanishes3427Spanishes3428Spanishes3429Spanishes343Spanishes3430Spanishes3431Spanishes3432Spanishes3433Spanishes3434Spanishes3435Spanishes3436Spanishes3437Spanishes3438Spanishes3439Spanishes344Spanishes3440Spanishes3441Spanishes3442Spanishes3443Spanishes3444Spanishes3445Spanishes3446Spanishes3447Spanishes3448Spanishes3449Spanishes345Spanishes3450Spanishes3451Spanishes3452Spanishes3453Spanishes3454Spanishes3455Spanishes3456Spanishes3457Spanishes3458Spanishes3459Spanishes346Spanishes3460Spanishes3461Spanishes3462Spanishes3463Spanishes3464Spanishes3465Spanishes3466Spanishes3467Spanishes3468Spanishes3469Spanishes347Spanishes3470Spanishes3471Spanishes3472Spanishes3473Spanishes3474Spanishes3475Spanishes3476Spanishes3477Spanishes3478Spanishes3479Spanishes348Spanishes3480Spanishes3481Spanishes3482Spanishes3483Spanishes3484Spanishes3485Spanishes3486Spanishes3487Spanishes3488Spanishes3489Spanishes349Spanishes3490Spanishes3491Spanishes3492Spanishes3493Spanishes3494Spanishes3495Spanishes3496Spanishes3497Spanishes3498Spanishes3499Spanishes35Spanishes350Spanishes3500Spanishes3501Spanishes3502Spanishes3503Spanishes3504Spanishes3505Spanishes3506Spanishes3507Spanishes3508Spanishes3509Spanishes351Spanishes3510Spanishes3511Spanishes3512Spanishes3513Spanishes3514Spanishes3515Spanishes3516Spanishes3517Spanishes3518Spanishes3519Spanishes352Spanishes3520Spanishes3521Spanishes3522Spanishes3523Spanishes3524Spanishes3525Spanishes3526Spanishes3527Spanishes3528Spanishes3529Spanishes353Spanishes3530Spanishes3531Spanishes3532Spanishes3533Spanishes3534Spanishes3535Spanishes3536Spanishes3537Spanishes3538Spanishes3539Spanishes354Spanishes3540Spanishes3541Spanishes3542Spanishes3543Spanishes3544Spanishes3545Spanishes3546Spanishes3547Spanishes3548Spanishes3549Spanishes355Spanishes3550Spanishes3551Spanishes3552Spanishes3553Spanishes3554Spanishes3555Spanishes3556Spanishes3557Spanishes3558Spanishes3559Spanishes356Spanishes3560Spanishes3561Spanishes3562Spanishes3563Spanishes3564Spanishes3565Spanishes3566Spanishes3567Spanishes3568Spanishes3569Spanishes357Spanishes3570Spanishes3571Spanishes3572Spanishes3573Spanishes3574Spanishes3575Spanishes3576Spanishes3577Spanishes3578Spanishes3579Spanishes358Spanishes3580Spanishes3581Spanishes3582Spanishes3583Spanishes3584Spanishes3585Spanishes3586Spanishes3587Spanishes3588Spanishes3589Spanishes359Spanishes3590Spanishes3591Spanishes3592Spanishes3593Spanishes3594Spanishes3595Spanishes3596Spanishes3597Spanishes3598Spanishes3599Spanishes36Spanishes360Spanishes3600Spanishes3601Spanishes3602Spanishes3603Spanishes3604Spanishes3605Spanishes3606Spanishes3607Spanishes3608Spanishes3609Spanishes361Spanishes3610Spanishes3611Spanishes3612Spanishes3613Spanishes3614Spanishes3615Spanishes3616Spanishes3617Spanishes3618Spanishes3619Spanishes362Spanishes3620Spanishes3621Spanishes3622Spanishes3623Spanishes3624Spanishes3625Spanishes3626Spanishes3627Spanishes3628Spanishes3629Spanishes363Spanishes3630Spanishes3631Spanishes3632Spanishes3633Spanishes3634Spanishes3635Spanishes3636Spanishes3637Spanishes3638Spanishes3639Spanishes364Spanishes3640Spanishes3641Spanishes3642Spanishes3643Spanishes3644Spanishes3645Spanishes3646Spanishes3647Spanishes3648Spanishes3649Spanishes365Spanishes3650Spanishes3651Spanishes3652Spanishes3653Spanishes3654Spanishes3655Spanishes3656Spanishes3657Spanishes3658Spanishes3659Spanishes366Spanishes3660Spanishes3661Spanishes3662Spanishes3663Spanishes3664Spanishes3665Spanishes3666Spanishes3667Spanishes3668Spanishes3669Spanishes367Spanishes3670Spanishes3671Spanishes3672Spanishes3673Spanishes3674Spanishes3675Spanishes3676Spanishes3677Spanishes3678Spanishes3679Spanishes368Spanishes3680Spanishes3681Spanishes3682Spanishes3683Spanishes3684Spanishes3685Spanishes3686Spanishes3687Spanishes3688Spanishes3689Spanishes369Spanishes3690Spanishes3691Spanishes3692Spanishes3693Spanishes3694Spanishes3695Spanishes3696Spanishes3697Spanishes3698Spanishes3699Spanishes37Spanishes370Spanishes3700Spanishes3701Spanishes3702Spanishes3703Spanishes3704Spanishes3705Spanishes3706Spanishes3707Spanishes3708Spanishes3709Spanishes371Spanishes3710Spanishes3711Spanishes3712Spanishes3713Spanishes3714Spanishes3715Spanishes3716Spanishes3717Spanishes3718Spanishes3719Spanishes372Spanishes3720Spanishes3721Spanishes3722Spanishes3723Spanishes3724Spanishes3725Spanishes3726Spanishes3727Spanishes3728Spanishes3729Spanishes373Spanishes3730Spanishes3731Spanishes3732Spanishes3733Spanishes3734Spanishes3735Spanishes3736Spanishes3737Spanishes3738Spanishes3739Spanishes374Spanishes3740Spanishes3741Spanishes3742Spanishes3743Spanishes3744Spanishes3745Spanishes3746Spanishes3747Spanishes3748Spanishes3749Spanishes375Spanishes3750Spanishes3751Spanishes3752Spanishes3753Spanishes3754Spanishes3755Spanishes3756Spanishes3757Spanishes3758Spanishes3759Spanishes376Spanishes3760Spanishes3761Spanishes3762Spanishes3763Spanishes3764Spanishes3765Spanishes3766Spanishes3767Spanishes3768Spanishes3769Spanishes377Spanishes3770Spanishes3771Spanishes3772Spanishes3773Spanishes3774Spanishes3775Spanishes3776Spanishes3777Spanishes3778Spanishes3779Spanishes378Spanishes3780Spanishes3781Spanishes3782Spanishes3783Spanishes3784Spanishes3785Spanishes3786Spanishes3787Spanishes3788Spanishes3789Spanishes379Spanishes3790Spanishes3791Spanishes3792Spanishes3793Spanishes3794Spanishes3795Spanishes3796Spanishes3797Spanishes3798Spanishes3799Spanishes38Spanishes380Spanishes3800Spanishes3801Spanishes3802Spanishes3803Spanishes3804Spanishes3805Spanishes3806Spanishes3807Spanishes3808Spanishes3809Spanishes381Spanishes3810Spanishes3811Spanishes3812Spanishes3813Spanishes3814Spanishes3815Spanishes3816Spanishes3817Spanishes3818Spanishes3819Spanishes382Spanishes3820Spanishes3821Spanishes3822Spanishes3823Spanishes3824Spanishes3825Spanishes3826Spanishes3827Spanishes3828Spanishes3829Spanishes383Spanishes3830Spanishes3831Spanishes3832Spanishes3833Spanishes3834Spanishes3835Spanishes3836Spanishes3837Spanishes3838Spanishes3839Spanishes384Spanishes3840Spanishes3841Spanishes3842Spanishes3843Spanishes3844Spanishes3845Spanishes3846Spanishes3847Spanishes3848Spanishes3849Spanishes385Spanishes3850Spanishes3851Spanishes3852Spanishes3853Spanishes3854Spanishes3855Spanishes3856Spanishes3857Spanishes3858Spanishes3859Spanishes386Spanishes3860Spanishes3861Spanishes3862Spanishes3863Spanishes3864Spanishes3865Spanishes3866Spanishes3867Spanishes3868Spanishes3869Spanishes387Spanishes3870Spanishes3871Spanishes3872Spanishes3873Spanishes3874Spanishes3875Spanishes3876Spanishes3877Spanishes3878Spanishes3879Spanishes388Spanishes3880Spanishes3881Spanishes3882Spanishes3883Spanishes3884Spanishes3885Spanishes3886Spanishes3887Spanishes3888Spanishes3889Spanishes389Spanishes3890Spanishes3891Spanishes3892Spanishes3893Spanishes3894Spanishes3895Spanishes3896Spanishes3897Spanishes3898Spanishes3899Spanishes39Spanishes390Spanishes3900Spanishes3901Spanishes3902Spanishes3903Spanishes3904Spanishes3905Spanishes3906Spanishes3907Spanishes3908Spanishes3909Spanishes391Spanishes3910Spanishes3911Spanishes3912Spanishes3913Spanishes3914Spanishes3915Spanishes3916Spanishes3917Spanishes3918Spanishes3919Spanishes392Spanishes3920Spanishes3921Spanishes3922Spanishes3923Spanishes3924Spanishes3925Spanishes3926Spanishes3927Spanishes3928Spanishes3929Spanishes393Spanishes3930Spanishes3931Spanishes3932Spanishes3933Spanishes3934Spanishes3935Spanishes3936Spanishes3937Spanishes3938Spanishes3939Spanishes394Spanishes3940Spanishes3941Spanishes3942Spanishes3943Spanishes3944Spanishes3945Spanishes3946Spanishes3947Spanishes3948Spanishes3949Spanishes395Spanishes3950Spanishes3951Spanishes3952Spanishes3953Spanishes3954Spanishes3955Spanishes3956Spanishes3957Spanishes3958Spanishes3959Spanishes396Spanishes3960Spanishes3961Spanishes3962Spanishes3963Spanishes3964Spanishes3965Spanishes3966Spanishes3967Spanishes3968Spanishes3969Spanishes397Spanishes3970Spanishes3971Spanishes3972Spanishes3973Spanishes3974Spanishes3975Spanishes3976Spanishes3977Spanishes3978Spanishes3979Spanishes398Spanishes3980Spanishes3981Spanishes3982Spanishes3983Spanishes3984Spanishes3985Spanishes3986Spanishes3987Spanishes3988Spanishes3989Spanishes399Spanishes3990Spanishes3991Spanishes3992Spanishes3993Spanishes3994Spanishes3995Spanishes3996Spanishes3997Spanishes3998Spanishes3999Spanishes4Spanishes40Spanishes400Spanishes4000Spanishes4001Spanishes4002Spanishes4003Spanishes4004Spanishes4005Spanishes4006Spanishes4007Spanishes4008Spanishes4009Spanishes401Spanishes4010Spanishes4011Spanishes4012Spanishes4013Spanishes4014Spanishes4015Spanishes4016Spanishes4017Spanishes4018Spanishes4019Spanishes402Spanishes4020Spanishes4021Spanishes4022Spanishes4023Spanishes4024Spanishes4025Spanishes4026Spanishes4027Spanishes4028Spanishes4029Spanishes403Spanishes4030Spanishes4031Spanishes4032Spanishes4033Spanishes4034Spanishes4035Spanishes4036Spanishes4037Spanishes4038Spanishes4039Spanishes404Spanishes4040Spanishes4041Spanishes4042Spanishes4043Spanishes4044Spanishes4045Spanishes4046Spanishes4047Spanishes4048Spanishes4049Spanishes405Spanishes4050Spanishes4051Spanishes4052Spanishes4053Spanishes4054Spanishes4055Spanishes4056Spanishes4057Spanishes4058Spanishes4059Spanishes406Spanishes4060Spanishes4061Spanishes4062Spanishes4063Spanishes4064Spanishes4065Spanishes4066Spanishes4067Spanishes4068Spanishes4069Spanishes407Spanishes4070Spanishes4071Spanishes4072Spanishes4073Spanishes4074Spanishes4075Spanishes4076Spanishes4077Spanishes4078Spanishes4079Spanishes408Spanishes4080Spanishes4081Spanishes4082Spanishes4083Spanishes4084Spanishes4085Spanishes4086Spanishes4087Spanishes4088Spanishes4089Spanishes409Spanishes4090Spanishes4091Spanishes4092Spanishes4093Spanishes4094Spanishes4095Spanishes4096Spanishes4097Spanishes4098Spanishes4099Spanishes41Spanishes410Spanishes4100Spanishes4101Spanishes4102Spanishes4103Spanishes4104Spanishes4105Spanishes4106Spanishes4107Spanishes4108Spanishes4109Spanishes411Spanishes4110Spanishes4111Spanishes4112Spanishes4113Spanishes4114Spanishes4115Spanishes4116Spanishes4117Spanishes4118Spanishes4119Spanishes412Spanishes4120Spanishes4121Spanishes4122Spanishes4123Spanishes4124Spanishes4125Spanishes4126Spanishes4127Spanishes4128Spanishes4129Spanishes413Spanishes4130Spanishes4131Spanishes4132Spanishes4133Spanishes4134Spanishes4135Spanishes4136Spanishes4137Spanishes4138Spanishes4139Spanishes414Spanishes4140Spanishes4141Spanishes4142Spanishes4143Spanishes4144Spanishes4145Spanishes4146Spanishes4147Spanishes4148Spanishes4149Spanishes415Spanishes4150Spanishes4151Spanishes4152Spanishes4153Spanishes4154Spanishes4155Spanishes4156Spanishes4157Spanishes4158Spanishes4159Spanishes416Spanishes4160Spanishes4161Spanishes4162Spanishes4163Spanishes4164Spanishes4165Spanishes4166Spanishes4167Spanishes4168Spanishes4169Spanishes417Spanishes4170Spanishes4171Spanishes4172Spanishes4173Spanishes4174Spanishes4175Spanishes4176Spanishes4177Spanishes4178Spanishes4179Spanishes418Spanishes4180Spanishes4181Spanishes4182Spanishes4183Spanishes4184Spanishes4185Spanishes4186Spanishes4187Spanishes4188Spanishes4189Spanishes419Spanishes4190Spanishes4191Spanishes4192Spanishes4193Spanishes4194Spanishes4195Spanishes4196Spanishes4197Spanishes4198Spanishes4199Spanishes42Spanishes420Spanishes4200Spanishes4201Spanishes4202Spanishes4203Spanishes4204Spanishes4205Spanishes4206Spanishes4207Spanishes4208Spanishes4209Spanishes421Spanishes4210Spanishes4211Spanishes4212Spanishes4213Spanishes4214Spanishes4215Spanishes4216Spanishes4217Spanishes4218Spanishes4219Spanishes422Spanishes4220Spanishes4221Spanishes4222Spanishes4223Spanishes4224Spanishes4225Spanishes4226Spanishes4227Spanishes4228Spanishes4229Spanishes423Spanishes4230Spanishes4231Spanishes4232Spanishes4233Spanishes4234Spanishes4235Spanishes4236Spanishes4237Spanishes4238Spanishes4239Spanishes424Spanishes4240Spanishes4241Spanishes4242Spanishes4243Spanishes4244Spanishes4245Spanishes4246Spanishes4247Spanishes4248Spanishes4249Spanishes425Spanishes4250Spanishes4251Spanishes4252Spanishes4253Spanishes4254Spanishes4255Spanishes4256Spanishes4257Spanishes4258Spanishes4259Spanishes426Spanishes4260Spanishes4261Spanishes4262Spanishes4263Spanishes4264Spanishes4265Spanishes4266Spanishes4267Spanishes4268Spanishes4269Spanishes427Spanishes4270Spanishes4271Spanishes4272Spanishes4273Spanishes4274Spanishes4275Spanishes4276Spanishes4277Spanishes4278Spanishes4279Spanishes428Spanishes4280Spanishes4281Spanishes4282Spanishes4283Spanishes4284Spanishes4285Spanishes4286Spanishes4287Spanishes4288Spanishes4289Spanishes429Spanishes4290Spanishes4291Spanishes4292Spanishes4293Spanishes4294Spanishes4295Spanishes4296Spanishes4297Spanishes4298Spanishes4299Spanishes43Spanishes430Spanishes4300Spanishes4301Spanishes4302Spanishes4303Spanishes4304Spanishes4305Spanishes4306Spanishes4307Spanishes4308Spanishes4309Spanishes431Spanishes4310Spanishes4311Spanishes4312Spanishes4313Spanishes4314Spanishes4315Spanishes4316Spanishes4317Spanishes4318Spanishes4319Spanishes432Spanishes4320Spanishes4321Spanishes4322Spanishes4323Spanishes4324Spanishes4325Spanishes4326Spanishes4327Spanishes4328Spanishes4329Spanishes433Spanishes4330Spanishes4331Spanishes4332Spanishes4333Spanishes4334Spanishes4335Spanishes4336Spanishes4337Spanishes4338Spanishes4339Spanishes434Spanishes4340Spanishes4341Spanishes4342Spanishes4343Spanishes4344Spanishes4345Spanishes4346Spanishes4347Spanishes4348Spanishes4349Spanishes435Spanishes4350Spanishes4351Spanishes4352Spanishes4353Spanishes4354Spanishes4355Spanishes4356Spanishes4357Spanishes4358Spanishes4359Spanishes436Spanishes4360Spanishes4361Spanishes4362Spanishes4363Spanishes4364Spanishes4365Spanishes4366Spanishes4367Spanishes4368Spanishes4369Spanishes437Spanishes4370Spanishes4371Spanishes4372Spanishes4373Spanishes4374Spanishes4375Spanishes4376Spanishes4377Spanishes4378Spanishes4379Spanishes438Spanishes4380Spanishes4381Spanishes4382Spanishes4383Spanishes4384Spanishes4385Spanishes4386Spanishes4387Spanishes4388Spanishes4389Spanishes439Spanishes4390Spanishes4391Spanishes4392Spanishes4393Spanishes4394Spanishes4395Spanishes4396Spanishes4397Spanishes4398Spanishes4399Spanishes44Spanishes440Spanishes4400Spanishes4401Spanishes4402Spanishes4403Spanishes4404Spanishes4405Spanishes4406Spanishes4407Spanishes4408Spanishes4409Spanishes441Spanishes4410Spanishes4411Spanishes4412Spanishes4413Spanishes4414Spanishes4415Spanishes4416Spanishes4417Spanishes4418Spanishes4419Spanishes442Spanishes4420Spanishes4421Spanishes4422Spanishes4423Spanishes4424Spanishes4425Spanishes4426Spanishes4427Spanishes4428Spanishes4429Spanishes443Spanishes4430Spanishes4431Spanishes4432Spanishes4433Spanishes4434Spanishes4435Spanishes4436Spanishes4437Spanishes4438Spanishes4439Spanishes444Spanishes4440Spanishes4441Spanishes4442Spanishes4443Spanishes4444Spanishes4445Spanishes4446Spanishes4447Spanishes4448Spanishes4449Spanishes445Spanishes4450Spanishes4451Spanishes4452Spanishes4453Spanishes4454Spanishes4455Spanishes4456Spanishes4457Spanishes4458Spanishes4459Spanishes446Spanishes4460Spanishes4461Spanishes4462Spanishes4463Spanishes4464Spanishes4465Spanishes4466Spanishes4467Spanishes4468Spanishes4469Spanishes447Spanishes4470Spanishes4471Spanishes4472Spanishes4473Spanishes4474Spanishes4475Spanishes4476Spanishes4477Spanishes4478Spanishes4479Spanishes448Spanishes4480Spanishes4481Spanishes4482Spanishes4483Spanishes4484Spanishes4485Spanishes4486Spanishes4487Spanishes4488Spanishes4489Spanishes449Spanishes4490Spanishes4491Spanishes4492Spanishes4493Spanishes4494Spanishes4495Spanishes4496Spanishes4497Spanishes4498Spanishes4499Spanishes45Spanishes450Spanishes4500Spanishes4501Spanishes4502Spanishes4503Spanishes4504Spanishes4505Spanishes4506Spanishes4507Spanishes4508Spanishes4509Spanishes451Spanishes4510Spanishes4511Spanishes4512Spanishes4513Spanishes4514Spanishes4515Spanishes4516Spanishes4517Spanishes4518Spanishes4519Spanishes452Spanishes4520Spanishes4521Spanishes4522Spanishes4523Spanishes4524Spanishes4525Spanishes4526Spanishes4527Spanishes4528Spanishes4529Spanishes453Spanishes4530Spanishes4531Spanishes4532Spanishes4533Spanishes4534Spanishes4535Spanishes4536Spanishes4537Spanishes4538Spanishes4539Spanishes454Spanishes4540Spanishes4541Spanishes4542Spanishes4543Spanishes4544Spanishes4545Spanishes4546Spanishes4547Spanishes4548Spanishes4549Spanishes455Spanishes4550Spanishes4551Spanishes4552Spanishes4553Spanishes4554Spanishes4555Spanishes4556Spanishes4557Spanishes4558Spanishes4559Spanishes456Spanishes4560Spanishes4561Spanishes4562Spanishes4563Spanishes4564Spanishes4565Spanishes4566Spanishes4567Spanishes4568Spanishes4569Spanishes457Spanishes4570Spanishes4571Spanishes4572Spanishes4573Spanishes4574Spanishes4575Spanishes4576Spanishes4577Spanishes4578Spanishes4579Spanishes458Spanishes4580Spanishes4581Spanishes4582Spanishes4583Spanishes4584Spanishes4585Spanishes4586Spanishes4587Spanishes4588Spanishes4589Spanishes459Spanishes4590Spanishes4591Spanishes4592Spanishes4593Spanishes4594Spanishes4595Spanishes4596Spanishes4597Spanishes4598Spanishes4599Spanishes46Spanishes460Spanishes4600Spanishes4601Spanishes4602Spanishes4603Spanishes4604Spanishes4605Spanishes4606Spanishes4607Spanishes4608Spanishes4609Spanishes461Spanishes4610Spanishes4611Spanishes4612Spanishes4613Spanishes4614Spanishes4615Spanishes4616Spanishes4617Spanishes4618Spanishes4619Spanishes462Spanishes4620Spanishes4621Spanishes4622Spanishes4623Spanishes4624Spanishes4625Spanishes4626Spanishes4627Spanishes4628Spanishes4629Spanishes463Spanishes4630Spanishes4631Spanishes4632Spanishes4633Spanishes4634Spanishes4635Spanishes4636Spanishes4637Spanishes4638Spanishes4639Spanishes464Spanishes4640Spanishes4641Spanishes4642Spanishes4643Spanishes4644Spanishes4645Spanishes4646Spanishes4647Spanishes4648Spanishes4649Spanishes465Spanishes4650Spanishes4651Spanishes4652Spanishes4653Spanishes4654Spanishes4655Spanishes4656Spanishes4657Spanishes4658Spanishes4659Spanishes466Spanishes4660Spanishes4661Spanishes4662Spanishes4663Spanishes4664Spanishes4665Spanishes4666Spanishes4667Spanishes4668Spanishes4669Spanishes467Spanishes4670Spanishes4671Spanishes4672Spanishes4673Spanishes4674Spanishes4675Spanishes4676Spanishes4677Spanishes4678Spanishes4679Spanishes468Spanishes4680Spanishes4681Spanishes4682Spanishes4683Spanishes4684Spanishes4685Spanishes4686Spanishes4687Spanishes4688Spanishes4689Spanishes469Spanishes4690Spanishes4691Spanishes4692Spanishes4693Spanishes4694Spanishes4695Spanishes4696Spanishes4697Spanishes4698Spanishes4699Spanishes47Spanishes470Spanishes4700Spanishes4701Spanishes4702Spanishes4703Spanishes4704Spanishes4705Spanishes4706Spanishes4707Spanishes4708Spanishes4709Spanishes471Spanishes4710Spanishes4711Spanishes4712Spanishes4713Spanishes4714Spanishes4715Spanishes4716Spanishes4717Spanishes4718Spanishes4719Spanishes472Spanishes4720Spanishes4721Spanishes4722Spanishes4723Spanishes4724Spanishes4725Spanishes4726Spanishes4727Spanishes4728Spanishes4729Spanishes473Spanishes4730Spanishes4731Spanishes4732Spanishes4733Spanishes4734Spanishes4735Spanishes4736Spanishes4737Spanishes4738Spanishes4739Spanishes474Spanishes4740Spanishes4741Spanishes4742Spanishes4743Spanishes4744Spanishes4745Spanishes4746Spanishes4747Spanishes4748Spanishes4749Spanishes475Spanishes4750Spanishes4751Spanishes4752Spanishes4753Spanishes4754Spanishes4755Spanishes4756Spanishes4757Spanishes4758Spanishes4759Spanishes476Spanishes4760Spanishes4761Spanishes4762Spanishes4763Spanishes4764Spanishes4765Spanishes4766Spanishes4767Spanishes4768Spanishes4769Spanishes477Spanishes4770Spanishes4771Spanishes4772Spanishes4773Spanishes4774Spanishes4775Spanishes4776Spanishes4777Spanishes4778Spanishes4779Spanishes478Spanishes4780Spanishes4781Spanishes4782Spanishes4783Spanishes4784Spanishes4785Spanishes4786Spanishes4787Spanishes4788Spanishes4789Spanishes479Spanishes4790Spanishes4791Spanishes4792Spanishes4793Spanishes4794Spanishes4795Spanishes4796Spanishes4797Spanishes4798Spanishes4799Spanishes48Spanishes480Spanishes4800Spanishes4801Spanishes4802Spanishes4803Spanishes4804Spanishes4805Spanishes4806Spanishes4807Spanishes4808Spanishes4809Spanishes481Spanishes4810Spanishes4811Spanishes4812Spanishes4813Spanishes4814Spanishes4815Spanishes4816Spanishes4817Spanishes4818Spanishes4819Spanishes482Spanishes4820Spanishes4821Spanishes4822Spanishes4823Spanishes4824Spanishes4825Spanishes4826Spanishes4827Spanishes4828Spanishes4829Spanishes483Spanishes4830Spanishes4831Spanishes4832Spanishes4833Spanishes4834Spanishes4835Spanishes4836Spanishes4837Spanishes4838Spanishes4839Spanishes484Spanishes4840Spanishes4841Spanishes4842Spanishes4843Spanishes4844Spanishes4845Spanishes4846Spanishes4847Spanishes4848Spanishes4849Spanishes485Spanishes4850Spanishes4851Spanishes4852Spanishes4853Spanishes4854Spanishes4855Spanishes4856Spanishes4857Spanishes4858Spanishes4859Spanishes486Spanishes4860Spanishes4861Spanishes4862Spanishes4863Spanishes4864Spanishes4865Spanishes4866Spanishes4867Spanishes4868Spanishes4869Spanishes487Spanishes4870Spanishes4871Spanishes4872Spanishes4873Spanishes4874Spanishes4875Spanishes4876Spanishes4877Spanishes4878Spanishes4879Spanishes488Spanishes4880Spanishes4881Spanishes4882Spanishes4883Spanishes4884Spanishes4885Spanishes4886Spanishes4887Spanishes4888Spanishes4889Spanishes489Spanishes4890Spanishes4891Spanishes4892Spanishes4893Spanishes4894Spanishes4895Spanishes4896Spanishes4897Spanishes4898Spanishes4899Spanishes49Spanishes490Spanishes4900Spanishes4901Spanishes4902Spanishes4903Spanishes4904Spanishes4905Spanishes4906Spanishes4907Spanishes4908Spanishes4909Spanishes491Spanishes4910Spanishes4911Spanishes4912Spanishes4913Spanishes4914Spanishes4915Spanishes4916Spanishes4917Spanishes4918Spanishes4919Spanishes492Spanishes4920Spanishes4921Spanishes4922Spanishes4923Spanishes4924Spanishes4925Spanishes4926Spanishes4927Spanishes4928Spanishes4929Spanishes493Spanishes4930Spanishes4931Spanishes4932Spanishes4933Spanishes4934Spanishes4935Spanishes4936Spanishes4937Spanishes4938Spanishes4939Spanishes494Spanishes4940Spanishes4941Spanishes4942Spanishes4943Spanishes4944Spanishes4945Spanishes4946Spanishes4947Spanishes4948Spanishes4949Spanishes495Spanishes4950Spanishes4951Spanishes4952Spanishes4953Spanishes4954Spanishes4955Spanishes4956Spanishes4957Spanishes4958Spanishes4959Spanishes496Spanishes4960Spanishes4961Spanishes4962Spanishes4963Spanishes4964Spanishes4965Spanishes4966Spanishes4967Spanishes4968Spanishes4969Spanishes497Spanishes4970Spanishes4971Spanishes4972Spanishes4973Spanishes4974Spanishes4975Spanishes4976Spanishes4977Spanishes4978Spanishes4979Spanishes498Spanishes4980Spanishes4981Spanishes4982Spanishes4983Spanishes4984Spanishes4985Spanishes4986Spanishes4987Spanishes4988Spanishes4989Spanishes499Spanishes4990Spanishes4991Spanishes4992Spanishes4993Spanishes4994Spanishes4995Spanishes4996Spanishes4997Spanishes4998Spanishes4999Spanishes5Spanishes50Spanishes500Spanishes5000Spanishes5001Spanishes5002Spanishes5003Spanishes5004Spanishes5005Spanishes5006Spanishes5007Spanishes5008Spanishes5009Spanishes501Spanishes5010Spanishes5011Spanishes5012Spanishes5013Spanishes5014Spanishes5015Spanishes5016Spanishes5017Spanishes5018Spanishes5019Spanishes502Spanishes5020Spanishes5021Spanishes5022Spanishes5023Spanishes5024Spanishes5025Spanishes5026Spanishes5027Spanishes5028Spanishes5029Spanishes503Spanishes5030Spanishes5031Spanishes5032Spanishes5033Spanishes5034Spanishes5035Spanishes5036Spanishes5037Spanishes5038Spanishes5039Spanishes504Spanishes5040Spanishes5041Spanishes5042Spanishes5043Spanishes5044Spanishes5045Spanishes5046Spanishes5047Spanishes5048Spanishes5049Spanishes505Spanishes5050Spanishes5051Spanishes5052Spanishes5053Spanishes5054Spanishes5055Spanishes5056Spanishes5057Spanishes5058Spanishes5059Spanishes506Spanishes5060Spanishes5061Spanishes5062Spanishes5063Spanishes5064Spanishes5065Spanishes5066Spanishes5067Spanishes5068Spanishes5069Spanishes507Spanishes5070Spanishes5071Spanishes5072Spanishes5073Spanishes5074Spanishes5075Spanishes5076Spanishes5077Spanishes5078Spanishes5079Spanishes508Spanishes5080Spanishes5081Spanishes5082Spanishes5083Spanishes5084Spanishes5085Spanishes5086Spanishes5087Spanishes5088Spanishes5089Spanishes509Spanishes5090Spanishes5091Spanishes5092Spanishes5093Spanishes5094Spanishes5095Spanishes5096Spanishes5097Spanishes5098Spanishes5099Spanishes51Spanishes510Spanishes5100Spanishes5101Spanishes5102Spanishes5103Spanishes5104Spanishes5105Spanishes5106Spanishes5107Spanishes5108Spanishes5109Spanishes511Spanishes5110Spanishes5111Spanishes5112Spanishes5113Spanishes5114Spanishes5115Spanishes5116Spanishes5117Spanishes5118Spanishes5119Spanishes512Spanishes5120Spanishes5121Spanishes5122Spanishes5123Spanishes5124Spanishes5125Spanishes5126Spanishes5127Spanishes5128Spanishes5129Spanishes513Spanishes5130Spanishes5131Spanishes5132Spanishes5133Spanishes5134Spanishes5135Spanishes5136Spanishes5137Spanishes5138Spanishes5139Spanishes514Spanishes5140Spanishes5141Spanishes5142Spanishes5143Spanishes5144Spanishes5145Spanishes5146Spanishes5147Spanishes5148Spanishes5149Spanishes515Spanishes5150Spanishes5151Spanishes5152Spanishes5153Spanishes5154Spanishes5155Spanishes5156Spanishes5157Spanishes5158Spanishes5159Spanishes516Spanishes5160Spanishes5161Spanishes5162Spanishes5163Spanishes5164Spanishes5165Spanishes5166Spanishes5167Spanishes5168Spanishes5169Spanishes517Spanishes5170Spanishes5171Spanishes5172Spanishes5173Spanishes5174Spanishes5175Spanishes5176Spanishes5177Spanishes5178Spanishes5179Spanishes518Spanishes5180Spanishes5181Spanishes5182Spanishes5183Spanishes5184Spanishes5185Spanishes5186Spanishes5187Spanishes5188Spanishes5189Spanishes519Spanishes5190Spanishes5191Spanishes5192Spanishes5193Spanishes5194Spanishes5195Spanishes5196Spanishes5197Spanishes5198Spanishes5199Spanishes52Spanishes520Spanishes5200Spanishes5201Spanishes5202Spanishes5203Spanishes5204Spanishes5205Spanishes5206Spanishes5207Spanishes5208Spanishes5209Spanishes521Spanishes5210Spanishes5211Spanishes5212Spanishes5213Spanishes5214Spanishes5215Spanishes5216Spanishes5217Spanishes5218Spanishes5219Spanishes522Spanishes5220Spanishes5221Spanishes5222Spanishes5223Spanishes5224Spanishes5225Spanishes5226Spanishes5227Spanishes5228Spanishes5229Spanishes523Spanishes5230Spanishes5231Spanishes5232Spanishes5233Spanishes5234Spanishes5235Spanishes5236Spanishes5237Spanishes5238Spanishes5239Spanishes524Spanishes5240Spanishes5241Spanishes5242Spanishes5243Spanishes5244Spanishes5245Spanishes5246Spanishes5247Spanishes5248Spanishes5249Spanishes525Spanishes5250Spanishes5251Spanishes5252Spanishes5253Spanishes5254Spanishes5255Spanishes5256Spanishes5257Spanishes5258Spanishes5259Spanishes526Spanishes5260Spanishes5261Spanishes5262Spanishes5263Spanishes5264Spanishes5265Spanishes5266Spanishes5267Spanishes5268Spanishes5269Spanishes527Spanishes5270Spanishes5271Spanishes5272Spanishes5273Spanishes5274Spanishes5275Spanishes5276Spanishes5277Spanishes5278Spanishes5279Spanishes528Spanishes5280Spanishes5281Spanishes5282Spanishes5283Spanishes5284Spanishes5285Spanishes5286Spanishes5287Spanishes5288Spanishes5289Spanishes529Spanishes5290Spanishes5291Spanishes5292Spanishes5293Spanishes5294Spanishes5295Spanishes5296Spanishes5297Spanishes5298Spanishes5299Spanishes53Spanishes530Spanishes5300Spanishes5301Spanishes5302Spanishes5303Spanishes5304Spanishes5305Spanishes5306Spanishes5307Spanishes5308Spanishes5309Spanishes531Spanishes5310Spanishes5311Spanishes5312Spanishes5313Spanishes5314Spanishes5315Spanishes5316Spanishes5317Spanishes5318Spanishes5319Spanishes532Spanishes5320Spanishes5321Spanishes5322Spanishes5323Spanishes5324Spanishes5325Spanishes5326Spanishes5327Spanishes5328Spanishes5329Spanishes533Spanishes5330Spanishes5331Spanishes5332Spanishes5333Spanishes5334Spanishes5335Spanishes5336Spanishes5337Spanishes5338Spanishes5339Spanishes534Spanishes5340Spanishes5341Spanishes5342Spanishes5343Spanishes5344Spanishes5345Spanishes5346Spanishes5347Spanishes5348Spanishes5349Spanishes535Spanishes5350Spanishes5351Spanishes5352Spanishes5353Spanishes5354Spanishes5355Spanishes5356Spanishes5357Spanishes5358Spanishes5359Spanishes536Spanishes5360Spanishes5361Spanishes5362Spanishes5363Spanishes5364Spanishes5365Spanishes5366Spanishes5367Spanishes5368Spanishes5369Spanishes537Spanishes5370Spanishes5371Spanishes5372Spanishes5373Spanishes5374Spanishes5375Spanishes5376Spanishes5377Spanishes5378Spanishes5379Spanishes538Spanishes5380Spanishes5381Spanishes5382Spanishes5383Spanishes5384Spanishes5385Spanishes5386Spanishes5387Spanishes5388Spanishes5389Spanishes539Spanishes5390Spanishes5391Spanishes5392Spanishes5393Spanishes5394Spanishes5395Spanishes5396Spanishes5397Spanishes5398Spanishes5399Spanishes54Spanishes540Spanishes5400Spanishes5401Spanishes5402Spanishes5403Spanishes5404Spanishes5405Spanishes5406Spanishes5407Spanishes5408Spanishes5409Spanishes541Spanishes5410Spanishes5411Spanishes5412Spanishes5413Spanishes5414Spanishes5415Spanishes5416Spanishes5417Spanishes5418Spanishes5419Spanishes542Spanishes5420Spanishes5421Spanishes5422Spanishes5423Spanishes5424Spanishes5425Spanishes5426Spanishes5427Spanishes5428Spanishes5429Spanishes543Spanishes5430Spanishes5431Spanishes5432Spanishes5433Spanishes5434Spanishes5435Spanishes5436Spanishes5437Spanishes5438Spanishes5439Spanishes544Spanishes5440Spanishes5441Spanishes5442Spanishes5443Spanishes5444Spanishes5445Spanishes5446Spanishes5447Spanishes5448Spanishes5449Spanishes545Spanishes5450Spanishes5451Spanishes5452Spanishes5453Spanishes5454Spanishes5455Spanishes5456Spanishes5457Spanishes5458Spanishes5459Spanishes546Spanishes5460Spanishes5461Spanishes5462Spanishes5463Spanishes5464Spanishes5465Spanishes5466Spanishes5467Spanishes5468Spanishes5469Spanishes547Spanishes5470Spanishes5471Spanishes5472Spanishes5473Spanishes5474Spanishes5475Spanishes5476Spanishes5477Spanishes5478Spanishes5479Spanishes548Spanishes5480Spanishes5481Spanishes5482Spanishes5483Spanishes5484Spanishes5485Spanishes5486Spanishes5487Spanishes5488Spanishes5489Spanishes549Spanishes5490Spanishes5491Spanishes5492Spanishes5493Spanishes5494Spanishes5495Spanishes5496Spanishes5497Spanishes5498Spanishes5499Spanishes55Spanishes550Spanishes5500Spanishes5501Spanishes5502Spanishes5503Spanishes5504Spanishes5505Spanishes5506Spanishes5507Spanishes5508Spanishes5509Spanishes551Spanishes5510Spanishes5511Spanishes5512Spanishes5513Spanishes5514Spanishes5515Spanishes5516Spanishes5517Spanishes5518Spanishes5519Spanishes552Spanishes5520Spanishes5521Spanishes5522Spanishes5523Spanishes5524Spanishes5525Spanishes5526Spanishes5527Spanishes5528Spanishes5529Spanishes553Spanishes5530Spanishes5531Spanishes5532Spanishes5533Spanishes5534Spanishes5535Spanishes5536Spanishes5537Spanishes5538Spanishes5539Spanishes554Spanishes5540Spanishes5541Spanishes5542Spanishes5543Spanishes5544Spanishes5545Spanishes5546Spanishes5547Spanishes5548Spanishes5549Spanishes555Spanishes5550Spanishes5551Spanishes5552Spanishes5553Spanishes5554Spanishes5555Spanishes5556Spanishes5557Spanishes5558Spanishes5559Spanishes556Spanishes5560Spanishes5561Spanishes5562Spanishes5563Spanishes5564Spanishes5565Spanishes5566Spanishes5567Spanishes5568Spanishes5569Spanishes557Spanishes5570Spanishes5571Spanishes5572Spanishes5573Spanishes5574Spanishes5575Spanishes5576Spanishes5577Spanishes5578Spanishes5579Spanishes558Spanishes5580Spanishes5581Spanishes5582Spanishes5583Spanishes5584Spanishes5585Spanishes5586Spanishes5587Spanishes5588Spanishes5589Spanishes559Spanishes5590Spanishes5591Spanishes5592Spanishes5593Spanishes5594Spanishes5595Spanishes5596Spanishes5597Spanishes5598Spanishes5599Spanishes56Spanishes560Spanishes5600Spanishes5601Spanishes5602Spanishes5603Spanishes5604Spanishes5605Spanishes5606Spanishes5607Spanishes5608Spanishes5609Spanishes561Spanishes5610Spanishes5611Spanishes5612Spanishes5613Spanishes5614Spanishes5615Spanishes5616Spanishes5617Spanishes5618Spanishes5619Spanishes562Spanishes5620Spanishes5621Spanishes5622Spanishes5623Spanishes5624Spanishes5625Spanishes5626Spanishes5627Spanishes5628Spanishes5629Spanishes563Spanishes5630Spanishes5631Spanishes5632Spanishes5633Spanishes5634Spanishes5635Spanishes5636Spanishes5637Spanishes5638Spanishes5639Spanishes564Spanishes5640Spanishes5641Spanishes5642Spanishes5643Spanishes5644Spanishes5645Spanishes5646Spanishes5647Spanishes5648Spanishes5649Spanishes565Spanishes5650Spanishes5651Spanishes5652Spanishes5653Spanishes5654Spanishes5655Spanishes5656Spanishes5657Spanishes5658Spanishes5659Spanishes566Spanishes5660Spanishes5661Spanishes5662Spanishes5663Spanishes5664Spanishes5665Spanishes5666Spanishes5667Spanishes5668Spanishes5669Spanishes567Spanishes5670Spanishes5671Spanishes5672Spanishes5673Spanishes5674Spanishes5675Spanishes5676Spanishes5677Spanishes5678Spanishes5679Spanishes568Spanishes5680Spanishes5681Spanishes5682Spanishes5683Spanishes5684Spanishes5685Spanishes5686Spanishes5687Spanishes5688Spanishes5689Spanishes569Spanishes5690Spanishes5691Spanishes5692Spanishes5693Spanishes5694Spanishes5695Spanishes5696Spanishes5697Spanishes5698Spanishes5699Spanishes57Spanishes570Spanishes5700Spanishes5701Spanishes5702Spanishes5703Spanishes5704Spanishes5705Spanishes5706Spanishes5707Spanishes5708Spanishes5709Spanishes571Spanishes5710Spanishes5711Spanishes5712Spanishes5713Spanishes5714Spanishes5715Spanishes5716Spanishes5717Spanishes5718Spanishes5719Spanishes572Spanishes5720Spanishes5721Spanishes5722Spanishes5723Spanishes5724Spanishes5725Spanishes5726Spanishes5727Spanishes5728Spanishes5729Spanishes573Spanishes5730Spanishes5731Spanishes5732Spanishes5733Spanishes5734Spanishes5735Spanishes5736Spanishes5737Spanishes5738Spanishes5739Spanishes574Spanishes5740Spanishes5741Spanishes5742Spanishes5743Spanishes5744Spanishes5745Spanishes5746Spanishes5747Spanishes5748Spanishes5749Spanishes575Spanishes5750Spanishes5751Spanishes5752Spanishes5753Spanishes5754Spanishes5755Spanishes5756Spanishes5757Spanishes5758Spanishes5759Spanishes576Spanishes5760Spanishes5761Spanishes5762Spanishes5763Spanishes5764Spanishes5765Spanishes5766Spanishes5767Spanishes5768Spanishes5769Spanishes577Spanishes5770Spanishes5771Spanishes5772Spanishes5773Spanishes5774Spanishes5775Spanishes5776Spanishes5777Spanishes5778Spanishes5779Spanishes578Spanishes5780Spanishes5781Spanishes5782Spanishes5783Spanishes5784Spanishes5785Spanishes5786Spanishes5787Spanishes5788Spanishes5789Spanishes579Spanishes5790Spanishes5791Spanishes5792Spanishes5793Spanishes5794Spanishes5795Spanishes5796Spanishes5797Spanishes5798Spanishes5799Spanishes58Spanishes580Spanishes5800Spanishes5801Spanishes5802Spanishes5803Spanishes5804Spanishes5805Spanishes5806Spanishes5807Spanishes5808Spanishes5809Spanishes581Spanishes5810Spanishes5811Spanishes5812Spanishes5813Spanishes5814Spanishes5815Spanishes5816Spanishes5817Spanishes5818Spanishes5819Spanishes582Spanishes5820Spanishes5821Spanishes5822Spanishes5823Spanishes5824Spanishes5825Spanishes5826Spanishes5827Spanishes5828Spanishes5829Spanishes583Spanishes5830Spanishes5831Spanishes5832Spanishes5833Spanishes5834Spanishes5835Spanishes5836Spanishes5837Spanishes5838Spanishes5839Spanishes584Spanishes5840Spanishes5841Spanishes5842Spanishes5843Spanishes5844Spanishes5845Spanishes5846Spanishes5847Spanishes5848Spanishes5849Spanishes585Spanishes5850Spanishes5851Spanishes5852Spanishes5853Spanishes5854Spanishes5855Spanishes5856Spanishes5857Spanishes5858Spanishes5859Spanishes586Spanishes5860Spanishes5861Spanishes5862Spanishes5863Spanishes5864Spanishes5865Spanishes5866Spanishes5867Spanishes5868Spanishes5869Spanishes587Spanishes5870Spanishes5871Spanishes5872Spanishes5873Spanishes5874Spanishes5875Spanishes5876Spanishes5877Spanishes5878Spanishes5879Spanishes588Spanishes5880Spanishes5881Spanishes5882Spanishes5883Spanishes5884Spanishes5885Spanishes5886Spanishes5887Spanishes5888Spanishes5889Spanishes589Spanishes5890Spanishes5891Spanishes5892Spanishes5893Spanishes5894Spanishes5895Spanishes5896Spanishes5897Spanishes5898Spanishes5899Spanishes59Spanishes590Spanishes5900Spanishes5901Spanishes5902Spanishes5903Spanishes5904Spanishes5905Spanishes5906Spanishes5907Spanishes5908Spanishes5909Spanishes591Spanishes5910Spanishes5911Spanishes5912Spanishes5913Spanishes5914Spanishes5915Spanishes5916Spanishes5917Spanishes5918Spanishes5919Spanishes592Spanishes5920Spanishes5921Spanishes5922Spanishes5923Spanishes5924Spanishes5925Spanishes5926Spanishes5927Spanishes5928Spanishes5929Spanishes593Spanishes5930Spanishes5931Spanishes5932Spanishes5933Spanishes5934Spanishes5935Spanishes5936Spanishes5937Spanishes5938Spanishes5939Spanishes594Spanishes5940Spanishes5941Spanishes5942Spanishes5943Spanishes5944Spanishes5945Spanishes5946Spanishes5947Spanishes5948Spanishes5949Spanishes595Spanishes5950Spanishes5951Spanishes5952Spanishes5953Spanishes5954Spanishes5955Spanishes5956Spanishes5957Spanishes5958Spanishes5959Spanishes596Spanishes5960Spanishes5961Spanishes5962Spanishes5963Spanishes5964Spanishes5965Spanishes5966Spanishes5967Spanishes5968Spanishes5969Spanishes597Spanishes5970Spanishes5971Spanishes5972Spanishes5973Spanishes5974Spanishes5975Spanishes5976Spanishes5977Spanishes5978Spanishes5979Spanishes598Spanishes5980Spanishes5981Spanishes5982Spanishes5983Spanishes5984Spanishes5985Spanishes5986Spanishes5987Spanishes5988Spanishes5989Spanishes599Spanishes5990Spanishes5991Spanishes5992Spanishes5993Spanishes5994Spanishes5995Spanishes5996Spanishes5997Spanishes5998Spanishes5999Spanishes6Spanishes60Spanishes600Spanishes6000Spanishes6001Spanishes6002Spanishes6003Spanishes6004Spanishes6005Spanishes6006Spanishes6007Spanishes6008Spanishes6009Spanishes601Spanishes6010Spanishes6011Spanishes6012Spanishes6013Spanishes6014Spanishes6015Spanishes6016Spanishes6017Spanishes6018Spanishes6019Spanishes602Spanishes6020Spanishes6021Spanishes6022Spanishes6023Spanishes6024Spanishes6025Spanishes6026Spanishes6027Spanishes6028Spanishes6029Spanishes603Spanishes6030Spanishes6031Spanishes6032Spanishes6033Spanishes6034Spanishes6035Spanishes6036Spanishes6037Spanishes6038Spanishes6039Spanishes604Spanishes6040Spanishes6041Spanishes6042Spanishes6043Spanishes6044Spanishes6045Spanishes6046Spanishes6047Spanishes6048Spanishes6049Spanishes605Spanishes6050Spanishes6051Spanishes6052Spanishes6053Spanishes6054Spanishes6055Spanishes6056Spanishes6057Spanishes6058Spanishes6059Spanishes606Spanishes6060Spanishes6061Spanishes6062Spanishes6063Spanishes6064Spanishes6065Spanishes6066Spanishes6067Spanishes6068Spanishes6069Spanishes607Spanishes6070Spanishes6071Spanishes6072Spanishes6073Spanishes6074Spanishes6075Spanishes6076Spanishes6077Spanishes6078Spanishes6079Spanishes608Spanishes6080Spanishes6081Spanishes6082Spanishes6083Spanishes6084Spanishes6085Spanishes6086Spanishes6087Spanishes6088Spanishes6089Spanishes609Spanishes6090Spanishes6091Spanishes6092Spanishes6093Spanishes6094Spanishes6095Spanishes6096Spanishes6097Spanishes6098Spanishes6099Spanishes61Spanishes610Spanishes6100Spanishes6101Spanishes6102Spanishes6103Spanishes6104Spanishes6105Spanishes6106Spanishes6107Spanishes6108Spanishes6109Spanishes611Spanishes6110Spanishes6111Spanishes6112Spanishes6113Spanishes6114Spanishes6115Spanishes6116Spanishes6117Spanishes6118Spanishes6119Spanishes612Spanishes6120Spanishes6121Spanishes6122Spanishes6123Spanishes6124Spanishes6125Spanishes6126Spanishes6127Spanishes6128Spanishes6129Spanishes613Spanishes6130Spanishes6131Spanishes6132Spanishes6133Spanishes6134Spanishes6135Spanishes6136Spanishes6137Spanishes6138Spanishes6139Spanishes614Spanishes6140Spanishes6141Spanishes6142Spanishes6143Spanishes6144Spanishes6145Spanishes6146Spanishes6147Spanishes6148Spanishes6149Spanishes615Spanishes6150Spanishes6151Spanishes6152Spanishes6153Spanishes6154Spanishes6155Spanishes6156Spanishes6157Spanishes6158Spanishes6159Spanishes616Spanishes6160Spanishes6161Spanishes6162Spanishes6163Spanishes6164Spanishes6165Spanishes6166Spanishes6167Spanishes6168Spanishes6169Spanishes617Spanishes6170Spanishes6171Spanishes6172Spanishes6173Spanishes6174Spanishes6175Spanishes6176Spanishes6177Spanishes6178Spanishes6179Spanishes618Spanishes6180Spanishes6181Spanishes6182Spanishes6183Spanishes6184Spanishes6185Spanishes6186Spanishes6187Spanishes6188Spanishes6189Spanishes619Spanishes6190Spanishes6191Spanishes6192Spanishes6193Spanishes6194Spanishes6195Spanishes6196Spanishes6197Spanishes6198Spanishes6199Spanishes62Spanishes620Spanishes6200Spanishes6201Spanishes6202Spanishes6203Spanishes6204Spanishes6205Spanishes6206Spanishes6207Spanishes6208Spanishes6209Spanishes621Spanishes6210Spanishes6211Spanishes6212Spanishes6213Spanishes6214Spanishes6215Spanishes6216Spanishes6217Spanishes6218Spanishes6219Spanishes622Spanishes6220Spanishes6221Spanishes6222Spanishes6223Spanishes6224Spanishes6225Spanishes6226Spanishes6227Spanishes6228Spanishes6229Spanishes623Spanishes6230Spanishes6231Spanishes6232Spanishes6233Spanishes6234Spanishes6235Spanishes6236Spanishes6237Spanishes6238Spanishes6239Spanishes624Spanishes6240Spanishes6241Spanishes6242Spanishes6243Spanishes6244Spanishes6245Spanishes6246Spanishes6247Spanishes6248Spanishes6249Spanishes625Spanishes6250Spanishes6251Spanishes6252Spanishes6253Spanishes6254Spanishes6255Spanishes6256Spanishes6257Spanishes6258Spanishes6259Spanishes626Spanishes6260Spanishes6261Spanishes6262Spanishes6263Spanishes6264Spanishes6265Spanishes6266Spanishes6267Spanishes6268Spanishes6269Spanishes627Spanishes6270Spanishes6271Spanishes6272Spanishes6273Spanishes6274Spanishes6275Spanishes6276Spanishes6277Spanishes6278Spanishes6279Spanishes628Spanishes6280Spanishes6281Spanishes6282Spanishes6283Spanishes6284Spanishes6285Spanishes6286Spanishes6287Spanishes6288Spanishes6289Spanishes629Spanishes6290Spanishes6291Spanishes6292Spanishes6293Spanishes6294Spanishes6295Spanishes6296Spanishes6297Spanishes6298Spanishes6299Spanishes63Spanishes630Spanishes6300Spanishes6301Spanishes6302Spanishes6303Spanishes6304Spanishes6305Spanishes6306Spanishes6307Spanishes6308Spanishes6309Spanishes631Spanishes6310Spanishes6311Spanishes6312Spanishes6313Spanishes6314Spanishes6315Spanishes6316Spanishes6317Spanishes6318Spanishes6319Spanishes632Spanishes6320Spanishes6321Spanishes6322Spanishes6323Spanishes6324Spanishes6325Spanishes6326Spanishes6327Spanishes6328Spanishes6329Spanishes633Spanishes6330Spanishes6331Spanishes6332Spanishes6333Spanishes6334Spanishes6335Spanishes6336Spanishes6337Spanishes6338Spanishes6339Spanishes634Spanishes6340Spanishes6341Spanishes6342Spanishes6343Spanishes6344Spanishes6345Spanishes6346Spanishes6347Spanishes6348Spanishes6349Spanishes635Spanishes6350Spanishes6351Spanishes6352Spanishes6353Spanishes6354Spanishes6355Spanishes6356Spanishes6357Spanishes6358Spanishes6359Spanishes636Spanishes6360Spanishes6361Spanishes6362Spanishes6363Spanishes6364Spanishes6365Spanishes6366Spanishes6367Spanishes6368Spanishes6369Spanishes637Spanishes6370Spanishes6371Spanishes6372Spanishes6373Spanishes6374Spanishes6375Spanishes6376Spanishes6377Spanishes6378Spanishes6379Spanishes638Spanishes6380Spanishes6381Spanishes6382Spanishes6383Spanishes6384Spanishes6385Spanishes6386Spanishes6387Spanishes6388Spanishes6389Spanishes639Spanishes6390Spanishes6391Spanishes6392Spanishes6393Spanishes6394Spanishes6395Spanishes6396Spanishes6397Spanishes6398Spanishes6399Spanishes64Spanishes640Spanishes6400Spanishes6401Spanishes6402Spanishes6403Spanishes6404Spanishes6405Spanishes6406Spanishes6407Spanishes6408Spanishes6409Spanishes641Spanishes6410Spanishes6411Spanishes6412Spanishes6413Spanishes6414Spanishes6415Spanishes6416Spanishes6417Spanishes6418Spanishes6419Spanishes642Spanishes6420Spanishes6421Spanishes6422Spanishes6423Spanishes6424Spanishes6425Spanishes6426Spanishes6427Spanishes6428Spanishes6429Spanishes643Spanishes6430Spanishes6431Spanishes6432Spanishes6433Spanishes6434Spanishes6435Spanishes6436Spanishes6437Spanishes6438Spanishes6439Spanishes644Spanishes6440Spanishes6441Spanishes6442Spanishes6443Spanishes6444Spanishes6445Spanishes6446Spanishes6447Spanishes6448Spanishes6449Spanishes645Spanishes6450Spanishes6451Spanishes6452Spanishes6453Spanishes6454Spanishes6455Spanishes6456Spanishes6457Spanishes6458Spanishes6459Spanishes646Spanishes6460Spanishes6461Spanishes6462Spanishes6463Spanishes6464Spanishes6465Spanishes6466Spanishes6467Spanishes6468Spanishes6469Spanishes647Spanishes6470Spanishes6471Spanishes6472Spanishes6473Spanishes6474Spanishes6475Spanishes6476Spanishes6477Spanishes6478Spanishes6479Spanishes648Spanishes6480Spanishes6481Spanishes6482Spanishes6483Spanishes6484Spanishes6485Spanishes6486Spanishes6487Spanishes6488Spanishes6489Spanishes649Spanishes6490Spanishes6491Spanishes6492Spanishes6493Spanishes6494Spanishes6495Spanishes6496Spanishes6497Spanishes6498Spanishes6499Spanishes65Spanishes650Spanishes6500Spanishes6501Spanishes6502Spanishes6503Spanishes6504Spanishes6505Spanishes6506Spanishes6507Spanishes6508Spanishes6509Spanishes651Spanishes6510Spanishes6511Spanishes6512Spanishes6513Spanishes6514Spanishes6515Spanishes6516Spanishes6517Spanishes6518Spanishes6519Spanishes652Spanishes6520Spanishes6521Spanishes6522Spanishes6523Spanishes6524Spanishes6525Spanishes6526Spanishes6527Spanishes6528Spanishes6529Spanishes653Spanishes6530Spanishes6531Spanishes6532Spanishes6533Spanishes6534Spanishes6535Spanishes6536Spanishes6537Spanishes6538Spanishes6539Spanishes654Spanishes6540Spanishes6541Spanishes6542Spanishes6543Spanishes6544Spanishes6545Spanishes6546Spanishes6547Spanishes6548Spanishes6549Spanishes655Spanishes6550Spanishes6551Spanishes6552Spanishes6553Spanishes6554Spanishes6555Spanishes6556Spanishes6557Spanishes6558Spanishes6559Spanishes656Spanishes6560Spanishes6561Spanishes6562Spanishes6563Spanishes6564Spanishes6565Spanishes6566Spanishes6567Spanishes6568Spanishes6569Spanishes657Spanishes6570Spanishes6571Spanishes6572Spanishes6573Spanishes6574Spanishes6575Spanishes6576Spanishes6577Spanishes6578Spanishes6579Spanishes658Spanishes6580Spanishes6581Spanishes6582Spanishes6583Spanishes6584Spanishes6585Spanishes6586Spanishes6587Spanishes6588Spanishes6589Spanishes659Spanishes6590Spanishes6591Spanishes6592Spanishes6593Spanishes6594Spanishes6595Spanishes6596Spanishes6597Spanishes6598Spanishes6599Spanishes66Spanishes660Spanishes6600Spanishes6601Spanishes6602Spanishes6603Spanishes6604Spanishes6605Spanishes6606Spanishes6607Spanishes6608Spanishes6609Spanishes661Spanishes6610Spanishes6611Spanishes6612Spanishes6613Spanishes6614Spanishes6615Spanishes6616Spanishes6617Spanishes6618Spanishes6619Spanishes662Spanishes6620Spanishes6621Spanishes6622Spanishes6623Spanishes6624Spanishes6625Spanishes6626Spanishes6627Spanishes6628Spanishes6629Spanishes663Spanishes6630Spanishes6631Spanishes6632Spanishes6633Spanishes6634Spanishes6635Spanishes6636Spanishes6637Spanishes6638Spanishes6639Spanishes664Spanishes6640Spanishes6641Spanishes6642Spanishes6643Spanishes6644Spanishes6645Spanishes6646Spanishes6647Spanishes6648Spanishes6649Spanishes665Spanishes6650Spanishes6651Spanishes6652Spanishes6653Spanishes6654Spanishes6655Spanishes6656Spanishes6657Spanishes6658Spanishes6659Spanishes666Spanishes6660Spanishes6661Spanishes6662Spanishes6663Spanishes6664Spanishes6665Spanishes6666Spanishes6667Spanishes6668Spanishes6669Spanishes667Spanishes6670Spanishes6671Spanishes6672Spanishes6673Spanishes6674Spanishes6675Spanishes6676Spanishes6677Spanishes6678Spanishes6679Spanishes668Spanishes6680Spanishes6681Spanishes6682Spanishes6683Spanishes6684Spanishes6685Spanishes6686Spanishes6687Spanishes6688Spanishes6689Spanishes669Spanishes6690Spanishes6691Spanishes6692Spanishes6693Spanishes6694Spanishes6695Spanishes6696Spanishes6697Spanishes6698Spanishes6699Spanishes67Spanishes670Spanishes6700Spanishes6701Spanishes6702Spanishes6703Spanishes6704Spanishes6705Spanishes6706Spanishes6707Spanishes6708Spanishes6709Spanishes671Spanishes6710Spanishes6711Spanishes6712Spanishes6713Spanishes6714Spanishes6715Spanishes6716Spanishes6717Spanishes6718Spanishes6719Spanishes672Spanishes6720Spanishes6721Spanishes6722Spanishes6723Spanishes6724Spanishes6725Spanishes6726Spanishes6727Spanishes6728Spanishes6729Spanishes673Spanishes6730Spanishes6731Spanishes6732Spanishes6733Spanishes6734Spanishes6735Spanishes6736Spanishes6737Spanishes6738Spanishes6739Spanishes674Spanishes6740Spanishes6741Spanishes6742Spanishes6743Spanishes6744Spanishes6745Spanishes6746Spanishes6747Spanishes6748Spanishes6749Spanishes675Spanishes6750Spanishes6751Spanishes6752Spanishes6753Spanishes6754Spanishes6755Spanishes6756Spanishes6757Spanishes6758Spanishes6759Spanishes676Spanishes6760Spanishes6761Spanishes6762Spanishes6763Spanishes6764Spanishes6765Spanishes6766Spanishes6767Spanishes6768Spanishes6769Spanishes677Spanishes6770Spanishes6771Spanishes6772Spanishes6773Spanishes6774Spanishes6775Spanishes6776Spanishes6777Spanishes6778Spanishes6779Spanishes678Spanishes6780Spanishes6781Spanishes6782Spanishes6783Spanishes6784Spanishes6785Spanishes6786Spanishes6787Spanishes6788Spanishes6789Spanishes679Spanishes6790Spanishes6791Spanishes6792Spanishes6793Spanishes6794Spanishes6795Spanishes6796Spanishes6797Spanishes6798Spanishes6799Spanishes68Spanishes680Spanishes6800Spanishes6801Spanishes6802Spanishes6803Spanishes6804Spanishes6805Spanishes6806Spanishes6807Spanishes6808Spanishes6809Spanishes681Spanishes6810Spanishes6811Spanishes6812Spanishes6813Spanishes6814Spanishes6815Spanishes6816Spanishes6817Spanishes6818Spanishes6819Spanishes682Spanishes6820Spanishes6821Spanishes6822Spanishes6823Spanishes6824Spanishes6825Spanishes6826Spanishes6827Spanishes6828Spanishes6829Spanishes683Spanishes6830Spanishes6831Spanishes6832Spanishes6833Spanishes6834Spanishes6835Spanishes6836Spanishes6837Spanishes6838Spanishes6839Spanishes684Spanishes6840Spanishes6841Spanishes6842Spanishes6843Spanishes6844Spanishes6845Spanishes6846Spanishes6847Spanishes6848Spanishes6849Spanishes685Spanishes6850Spanishes6851Spanishes6852Spanishes6853Spanishes6854Spanishes6855Spanishes6856Spanishes6857Spanishes6858Spanishes6859Spanishes686Spanishes6860Spanishes6861Spanishes6862Spanishes6863Spanishes6864Spanishes6865Spanishes6866Spanishes6867Spanishes6868Spanishes6869Spanishes687Spanishes6870Spanishes6871Spanishes6872Spanishes6873Spanishes6874Spanishes6875Spanishes6876Spanishes6877Spanishes6878Spanishes6879Spanishes688Spanishes6880Spanishes6881Spanishes6882Spanishes6883Spanishes6884Spanishes6885Spanishes6886Spanishes6887Spanishes6888Spanishes6889Spanishes689Spanishes6890Spanishes6891Spanishes6892Spanishes6893Spanishes6894Spanishes6895Spanishes6896Spanishes6897Spanishes6898Spanishes6899Spanishes69Spanishes690Spanishes6900Spanishes6901Spanishes6902Spanishes6903Spanishes6904Spanishes6905Spanishes6906Spanishes6907Spanishes6908Spanishes6909Spanishes691Spanishes6910Spanishes6911Spanishes6912Spanishes6913Spanishes6914Spanishes6915Spanishes6916Spanishes6917Spanishes6918Spanishes6919Spanishes692Spanishes6920Spanishes6921Spanishes6922Spanishes6923Spanishes6924Spanishes6925Spanishes6926Spanishes6927Spanishes6928Spanishes6929Spanishes693Spanishes6930Spanishes6931Spanishes6932Spanishes6933Spanishes6934Spanishes6935Spanishes6936Spanishes6937Spanishes6938Spanishes6939Spanishes694Spanishes6940Spanishes6941Spanishes6942Spanishes6943Spanishes6944Spanishes6945Spanishes6946Spanishes6947Spanishes6948Spanishes6949Spanishes695Spanishes6950Spanishes6951Spanishes6952Spanishes6953Spanishes6954Spanishes6955Spanishes6956Spanishes6957Spanishes6958Spanishes6959Spanishes696Spanishes6960Spanishes6961Spanishes6962Spanishes6963Spanishes6964Spanishes6965Spanishes6966Spanishes6967Spanishes6968Spanishes6969Spanishes697Spanishes6970Spanishes6971Spanishes6972Spanishes6973Spanishes6974Spanishes6975Spanishes6976Spanishes6977Spanishes6978Spanishes6979Spanishes698Spanishes6980Spanishes6981Spanishes6982Spanishes6983Spanishes6984Spanishes6985Spanishes6986Spanishes6987Spanishes6988Spanishes6989Spanishes699Spanishes6990Spanishes6991Spanishes6992Spanishes6993Spanishes6994Spanishes6995Spanishes6996Spanishes6997Spanishes6998Spanishes6999Spanishes7Spanishes70Spanishes700Spanishes7000Spanishes7001Spanishes7002Spanishes7003Spanishes7004Spanishes7005Spanishes7006Spanishes7007Spanishes7008Spanishes7009Spanishes701Spanishes7010Spanishes7011Spanishes7012Spanishes7013Spanishes7014Spanishes7015Spanishes7016Spanishes7017Spanishes7018Spanishes7019Spanishes702Spanishes7020Spanishes7021Spanishes7022Spanishes7023Spanishes7024Spanishes7025Spanishes7026Spanishes7027Spanishes7028Spanishes7029Spanishes703Spanishes7030Spanishes7031Spanishes7032Spanishes7033Spanishes7034Spanishes7035Spanishes7036Spanishes7037Spanishes7038Spanishes7039Spanishes704Spanishes7040Spanishes7041Spanishes7042Spanishes7043Spanishes7044Spanishes7045Spanishes7046Spanishes7047Spanishes7048Spanishes7049Spanishes705Spanishes7050Spanishes7051Spanishes7052Spanishes7053Spanishes7054Spanishes7055Spanishes7056Spanishes7057Spanishes7058Spanishes7059Spanishes706Spanishes7060Spanishes7061Spanishes7062Spanishes7063Spanishes7064Spanishes7065Spanishes7066Spanishes7067Spanishes7068Spanishes7069Spanishes707Spanishes7070Spanishes7071Spanishes7072Spanishes7073Spanishes7074Spanishes7075Spanishes7076Spanishes7077Spanishes7078Spanishes7079Spanishes708Spanishes7080Spanishes7081Spanishes7082Spanishes7083Spanishes7084Spanishes7085Spanishes7086Spanishes7087Spanishes7088Spanishes7089Spanishes709Spanishes7090Spanishes7091Spanishes7092Spanishes7093Spanishes7094Spanishes7095Spanishes7096Spanishes7097Spanishes7098Spanishes7099Spanishes71Spanishes710Spanishes7100Spanishes7101Spanishes7102Spanishes7103Spanishes7104Spanishes7105Spanishes7106Spanishes7107Spanishes7108Spanishes7109Spanishes711Spanishes7110Spanishes7111Spanishes7112Spanishes7113Spanishes7114Spanishes7115Spanishes7116Spanishes7117Spanishes7118Spanishes7119Spanishes712Spanishes7120Spanishes7121Spanishes7122Spanishes7123Spanishes7124Spanishes7125Spanishes7126Spanishes7127Spanishes7128Spanishes7129Spanishes713Spanishes7130Spanishes7131Spanishes7132Spanishes7133Spanishes7134Spanishes7135Spanishes7136Spanishes7137Spanishes7138Spanishes7139Spanishes714Spanishes7140Spanishes7141Spanishes7142Spanishes7143Spanishes7144Spanishes7145Spanishes7146Spanishes7147Spanishes7148Spanishes7149Spanishes715Spanishes7150Spanishes7151Spanishes7152Spanishes7153Spanishes7154Spanishes7155Spanishes7156Spanishes7157Spanishes7158Spanishes7159Spanishes716Spanishes7160Spanishes7161Spanishes7162Spanishes7163Spanishes7164Spanishes7165Spanishes7166Spanishes7167Spanishes7168Spanishes7169Spanishes717Spanishes7170Spanishes7171Spanishes7172Spanishes7173Spanishes7174Spanishes7175Spanishes7176Spanishes7177Spanishes7178Spanishes7179Spanishes718Spanishes7180Spanishes7181Spanishes7182Spanishes7183Spanishes7184Spanishes7185Spanishes7186Spanishes7187Spanishes7188Spanishes7189Spanishes719Spanishes7190Spanishes7191Spanishes7192Spanishes7193Spanishes7194Spanishes7195Spanishes7196Spanishes7197Spanishes7198Spanishes7199Spanishes72Spanishes720Spanishes7200Spanishes7201Spanishes7202Spanishes7203Spanishes7204Spanishes7205Spanishes7206Spanishes7207Spanishes7208Spanishes7209Spanishes721Spanishes7210Spanishes7211Spanishes7212Spanishes7213Spanishes7214Spanishes7215Spanishes7216Spanishes7217Spanishes7218Spanishes7219Spanishes722Spanishes7220Spanishes7221Spanishes7222Spanishes7223Spanishes7224Spanishes7225Spanishes7226Spanishes7227Spanishes7228Spanishes7229Spanishes723Spanishes7230Spanishes7231Spanishes7232Spanishes7233Spanishes7234Spanishes7235Spanishes7236Spanishes7237Spanishes7238Spanishes7239Spanishes724Spanishes7240Spanishes7241Spanishes7242Spanishes7243Spanishes7244Spanishes7245Spanishes7246Spanishes7247Spanishes7248Spanishes7249Spanishes725Spanishes7250Spanishes7251Spanishes7252Spanishes7253Spanishes7254Spanishes7255Spanishes7256Spanishes7257Spanishes7258Spanishes7259Spanishes726Spanishes7260Spanishes7261Spanishes7262Spanishes7263Spanishes7264Spanishes7265Spanishes7266Spanishes7267Spanishes7268Spanishes7269Spanishes727Spanishes7270Spanishes7271Spanishes7272Spanishes7273Spanishes7274Spanishes7275Spanishes7276Spanishes7277Spanishes7278Spanishes7279Spanishes728Spanishes7280Spanishes7281Spanishes7282Spanishes7283Spanishes7284Spanishes7285Spanishes7286Spanishes7287Spanishes7288Spanishes7289Spanishes729Spanishes7290Spanishes7291Spanishes7292Spanishes7293Spanishes7294Spanishes7295Spanishes7296Spanishes7297Spanishes7298Spanishes7299Spanishes73Spanishes730Spanishes7300Spanishes7301Spanishes7302Spanishes7303Spanishes7304Spanishes7305Spanishes7306Spanishes7307Spanishes7308Spanishes7309Spanishes731Spanishes7310Spanishes7311Spanishes7312Spanishes7313Spanishes7314Spanishes7315Spanishes7316Spanishes7317Spanishes7318Spanishes7319Spanishes732Spanishes7320Spanishes7321Spanishes7322Spanishes7323Spanishes7324Spanishes7325Spanishes7326Spanishes7327Spanishes7328Spanishes7329Spanishes733Spanishes7330Spanishes7331Spanishes7332Spanishes7333Spanishes7334Spanishes7335Spanishes7336Spanishes7337Spanishes7338Spanishes7339Spanishes734Spanishes7340Spanishes7341Spanishes7342Spanishes7343Spanishes7344Spanishes7345Spanishes7346Spanishes7347Spanishes7348Spanishes7349Spanishes735Spanishes7350Spanishes7351Spanishes7352Spanishes7353Spanishes7354Spanishes7355Spanishes7356Spanishes7357Spanishes7358Spanishes7359Spanishes736Spanishes7360Spanishes7361Spanishes7362Spanishes7363Spanishes7364Spanishes7365Spanishes7366Spanishes7367Spanishes7368Spanishes7369Spanishes737Spanishes7370Spanishes7371Spanishes7372Spanishes7373Spanishes7374Spanishes7375Spanishes7376Spanishes7377Spanishes7378Spanishes7379Spanishes738Spanishes7380Spanishes7381Spanishes7382Spanishes7383Spanishes7384Spanishes7385Spanishes7386Spanishes7387Spanishes7388Spanishes7389Spanishes739Spanishes7390Spanishes7391Spanishes7392Spanishes7393Spanishes7394Spanishes7395Spanishes7396Spanishes7397Spanishes7398Spanishes7399Spanishes74Spanishes740Spanishes7400Spanishes7401Spanishes7402Spanishes7403Spanishes7404Spanishes7405Spanishes7406Spanishes7407Spanishes7408Spanishes7409Spanishes741Spanishes7410Spanishes7411Spanishes7412Spanishes7413Spanishes7414Spanishes7415Spanishes7416Spanishes7417Spanishes7418Spanishes7419Spanishes742Spanishes7420Spanishes7421Spanishes7422Spanishes7423Spanishes7424Spanishes7425Spanishes7426Spanishes7427Spanishes7428Spanishes7429Spanishes743Spanishes7430Spanishes7431Spanishes7432Spanishes7433Spanishes7434Spanishes7435Spanishes7436Spanishes7437Spanishes7438Spanishes7439Spanishes744Spanishes7440Spanishes7441Spanishes7442Spanishes7443Spanishes7444Spanishes7445Spanishes7446Spanishes7447Spanishes7448Spanishes7449Spanishes745Spanishes7450Spanishes7451Spanishes7452Spanishes7453Spanishes7454Spanishes7455Spanishes7456Spanishes7457Spanishes7458Spanishes7459Spanishes746Spanishes7460Spanishes7461Spanishes7462Spanishes7463Spanishes7464Spanishes7465Spanishes7466Spanishes7467Spanishes7468Spanishes7469Spanishes747Spanishes7470Spanishes7471Spanishes7472Spanishes7473Spanishes7474Spanishes7475Spanishes7476Spanishes7477Spanishes7478Spanishes7479Spanishes748Spanishes7480Spanishes7481Spanishes7482Spanishes7483Spanishes7484Spanishes7485Spanishes7486Spanishes7487Spanishes7488Spanishes7489Spanishes749Spanishes7490Spanishes7491Spanishes7492Spanishes7493Spanishes7494Spanishes7495Spanishes7496Spanishes7497Spanishes7498Spanishes7499Spanishes75Spanishes750Spanishes7500Spanishes7501Spanishes7502Spanishes7503Spanishes7504Spanishes7505Spanishes7506Spanishes7507Spanishes7508Spanishes7509Spanishes751Spanishes7510Spanishes7511Spanishes7512Spanishes7513Spanishes7514Spanishes7515Spanishes7516Spanishes7517Spanishes7518Spanishes7519Spanishes752Spanishes7520Spanishes7521Spanishes7522Spanishes7523Spanishes7524Spanishes7525Spanishes7526Spanishes7527Spanishes7528Spanishes7529Spanishes753Spanishes7530Spanishes7531Spanishes7532Spanishes7533Spanishes7534Spanishes7535Spanishes7536Spanishes7537Spanishes7538Spanishes7539Spanishes754Spanishes7540Spanishes7541Spanishes7542Spanishes7543Spanishes7544Spanishes7545Spanishes7546Spanishes7547Spanishes7548Spanishes7549Spanishes755Spanishes7550Spanishes7551Spanishes7552Spanishes7553Spanishes7554Spanishes7555Spanishes7556Spanishes7557Spanishes7558Spanishes7559Spanishes756Spanishes7560Spanishes7561Spanishes7562Spanishes7563Spanishes7564Spanishes7565Spanishes7566Spanishes7567Spanishes7568Spanishes7569Spanishes757Spanishes7570Spanishes7571Spanishes7572Spanishes7573Spanishes7574Spanishes7575Spanishes7576Spanishes7577Spanishes7578Spanishes7579Spanishes758Spanishes7580Spanishes7581Spanishes7582Spanishes7583Spanishes7584Spanishes7585Spanishes7586Spanishes7587Spanishes7588Spanishes7589Spanishes759Spanishes7590Spanishes7591Spanishes7592Spanishes7593Spanishes7594Spanishes7595Spanishes7596Spanishes7597Spanishes7598Spanishes7599Spanishes76Spanishes760Spanishes7600Spanishes7601Spanishes7602Spanishes7603Spanishes7604Spanishes7605Spanishes7606Spanishes7607Spanishes7608Spanishes7609Spanishes761Spanishes7610Spanishes7611Spanishes7612Spanishes7613Spanishes7614Spanishes7615Spanishes7616Spanishes7617Spanishes7618Spanishes7619Spanishes762Spanishes7620Spanishes7621Spanishes7622Spanishes7623Spanishes7624Spanishes7625Spanishes7626Spanishes7627Spanishes7628Spanishes7629Spanishes763Spanishes7630Spanishes7631Spanishes7632Spanishes7633Spanishes7634Spanishes7635Spanishes7636Spanishes7637Spanishes7638Spanishes7639Spanishes764Spanishes7640Spanishes7641Spanishes7642Spanishes7643Spanishes7644Spanishes7645Spanishes7646Spanishes7647Spanishes7648Spanishes7649Spanishes765Spanishes7650Spanishes7651Spanishes7652Spanishes7653Spanishes7654Spanishes7655Spanishes7656Spanishes7657Spanishes7658Spanishes7659Spanishes766Spanishes7660Spanishes7661Spanishes7662Spanishes7663Spanishes7664Spanishes7665Spanishes7666Spanishes7667Spanishes7668Spanishes7669Spanishes767Spanishes7670Spanishes7671Spanishes7672Spanishes7673Spanishes7674Spanishes7675Spanishes7676Spanishes7677Spanishes7678Spanishes7679Spanishes768Spanishes7680Spanishes7681Spanishes7682Spanishes7683Spanishes7684Spanishes7685Spanishes7686Spanishes7687Spanishes7688Spanishes7689Spanishes769Spanishes7690Spanishes7691Spanishes7692Spanishes7693Spanishes7694Spanishes7695Spanishes7696Spanishes7697Spanishes7698Spanishes7699Spanishes77Spanishes770Spanishes7700Spanishes7701Spanishes7702Spanishes7703Spanishes7704Spanishes7705Spanishes7706Spanishes7707Spanishes7708Spanishes7709Spanishes771Spanishes7710Spanishes7711Spanishes7712Spanishes7713Spanishes7714Spanishes7715Spanishes7716Spanishes7717Spanishes7718Spanishes7719Spanishes772Spanishes7720Spanishes7721Spanishes7722Spanishes7723Spanishes7724Spanishes7725Spanishes7726Spanishes7727Spanishes7728Spanishes7729Spanishes773Spanishes7730Spanishes7731Spanishes7732Spanishes7733Spanishes7734Spanishes7735Spanishes7736Spanishes7737Spanishes7738Spanishes7739Spanishes774Spanishes7740Spanishes7741Spanishes7742Spanishes7743Spanishes7744Spanishes7745Spanishes7746Spanishes7747Spanishes7748Spanishes7749Spanishes775Spanishes7750Spanishes7751Spanishes7752Spanishes7753Spanishes7754Spanishes7755Spanishes7756Spanishes7757Spanishes7758Spanishes7759Spanishes776Spanishes7760Spanishes7761Spanishes7762Spanishes7763Spanishes7764Spanishes7765Spanishes7766Spanishes7767Spanishes7768Spanishes7769Spanishes777Spanishes7770Spanishes7771Spanishes7772Spanishes7773Spanishes7774Spanishes7775Spanishes7776Spanishes7777Spanishes7778Spanishes7779Spanishes778Spanishes7780Spanishes7781Spanishes7782Spanishes7783Spanishes7784Spanishes7785Spanishes7786Spanishes7787Spanishes7788Spanishes7789Spanishes779Spanishes7790Spanishes7791Spanishes7792Spanishes7793Spanishes7794Spanishes7795Spanishes7796Spanishes7797Spanishes7798Spanishes7799Spanishes78Spanishes780Spanishes7800Spanishes7801Spanishes7802Spanishes7803Spanishes7804Spanishes7805Spanishes7806Spanishes7807Spanishes7808Spanishes7809Spanishes781Spanishes7810Spanishes7811Spanishes7812Spanishes7813Spanishes7814Spanishes7815Spanishes7816Spanishes7817Spanishes7818Spanishes7819Spanishes782Spanishes7820Spanishes7821Spanishes7822Spanishes7823Spanishes7824Spanishes7825Spanishes7826Spanishes7827Spanishes7828Spanishes7829Spanishes783Spanishes7830Spanishes7831Spanishes7832Spanishes7833Spanishes7834Spanishes7835Spanishes7836Spanishes7837Spanishes7838Spanishes7839Spanishes784Spanishes7840Spanishes7841Spanishes7842Spanishes7843Spanishes7844Spanishes7845Spanishes7846Spanishes7847Spanishes7848Spanishes7849Spanishes785Spanishes7850Spanishes7851Spanishes7852Spanishes7853Spanishes7854Spanishes7855Spanishes7856Spanishes7857Spanishes7858Spanishes7859Spanishes786Spanishes7860Spanishes7861Spanishes7862Spanishes7863Spanishes7864Spanishes7865Spanishes7866Spanishes7867Spanishes7868Spanishes7869Spanishes787Spanishes7870Spanishes7871Spanishes7872Spanishes7873Spanishes7874Spanishes7875Spanishes7876Spanishes7877Spanishes7878Spanishes7879Spanishes788Spanishes7880Spanishes7881Spanishes7882Spanishes7883Spanishes7884Spanishes7885Spanishes7886Spanishes7887Spanishes7888Spanishes7889Spanishes789Spanishes7890Spanishes7891Spanishes7892Spanishes7893Spanishes7894Spanishes7895Spanishes7896Spanishes7897Spanishes7898Spanishes7899Spanishes79Spanishes790Spanishes7900Spanishes7901Spanishes7902Spanishes7903Spanishes7904Spanishes7905Spanishes7906Spanishes7907Spanishes7908Spanishes7909Spanishes791Spanishes7910Spanishes7911Spanishes7912Spanishes7913Spanishes7914Spanishes7915Spanishes7916Spanishes7917Spanishes7918Spanishes7919Spanishes792Spanishes7920Spanishes7921Spanishes7922Spanishes7923Spanishes7924Spanishes7925Spanishes7926Spanishes7927Spanishes7928Spanishes7929Spanishes793Spanishes7930Spanishes7931Spanishes7932Spanishes7933Spanishes7934Spanishes7935Spanishes7936Spanishes7937Spanishes7938Spanishes7939Spanishes794Spanishes7940Spanishes7941Spanishes7942Spanishes7943Spanishes7944Spanishes7945Spanishes7946Spanishes7947Spanishes7948Spanishes7949Spanishes795Spanishes7950Spanishes7951Spanishes7952Spanishes7953Spanishes7954Spanishes7955Spanishes7956Spanishes7957Spanishes7958Spanishes7959Spanishes796Spanishes7960Spanishes7961Spanishes7962Spanishes7963Spanishes7964Spanishes7965Spanishes7966Spanishes7967Spanishes7968Spanishes7969Spanishes797Spanishes7970Spanishes7971Spanishes7972Spanishes7973Spanishes7974Spanishes7975Spanishes7976Spanishes7977Spanishes7978Spanishes7979Spanishes798Spanishes7980Spanishes7981Spanishes7982Spanishes7983Spanishes7984Spanishes7985Spanishes7986Spanishes7987Spanishes7988Spanishes7989Spanishes799Spanishes7990Spanishes7991Spanishes7992Spanishes7993Spanishes7994Spanishes7995Spanishes7996Spanishes7997Spanishes7998Spanishes7999Spanishes8Spanishes80Spanishes800Spanishes8000Spanishes8001Spanishes8002Spanishes8003Spanishes8004Spanishes8005Spanishes8006Spanishes8007Spanishes8008Spanishes8009Spanishes801Spanishes8010Spanishes8011Spanishes8012Spanishes8013Spanishes8014Spanishes8015Spanishes8016Spanishes8017Spanishes8018Spanishes8019Spanishes802Spanishes8020Spanishes8021Spanishes8022Spanishes8023Spanishes8024Spanishes8025Spanishes8026Spanishes8027Spanishes8028Spanishes8029Spanishes803Spanishes8030Spanishes8031Spanishes8032Spanishes8033Spanishes8034Spanishes8035Spanishes8036Spanishes8037Spanishes8038Spanishes8039Spanishes804Spanishes8040Spanishes8041Spanishes8042Spanishes8043Spanishes8044Spanishes8045Spanishes8046Spanishes8047Spanishes8048Spanishes8049Spanishes805Spanishes8050Spanishes8051Spanishes8052Spanishes8053Spanishes8054Spanishes8055Spanishes8056Spanishes8057Spanishes8058Spanishes8059Spanishes806Spanishes8060Spanishes8061Spanishes8062Spanishes8063Spanishes8064Spanishes8065Spanishes8066Spanishes8067Spanishes8068Spanishes8069Spanishes807Spanishes8070Spanishes8071Spanishes8072Spanishes8073Spanishes8074Spanishes8075Spanishes8076Spanishes8077Spanishes8078Spanishes8079Spanishes808Spanishes8080Spanishes8081Spanishes8082Spanishes8083Spanishes8084Spanishes8085Spanishes8086Spanishes8087Spanishes8088Spanishes8089Spanishes809Spanishes8090Spanishes8091Spanishes8092Spanishes8093Spanishes8094Spanishes8095Spanishes8096Spanishes8097Spanishes8098Spanishes8099Spanishes81Spanishes810Spanishes8100Spanishes8101Spanishes8102Spanishes8103Spanishes8104Spanishes8105Spanishes8106Spanishes8107Spanishes8108Spanishes8109Spanishes811Spanishes8110Spanishes8111Spanishes8112Spanishes8113Spanishes8114Spanishes8115Spanishes8116Spanishes8117Spanishes8118Spanishes8119Spanishes812Spanishes8120Spanishes8121Spanishes8122Spanishes8123Spanishes8124Spanishes8125Spanishes8126Spanishes8127Spanishes8128Spanishes8129Spanishes813Spanishes8130Spanishes8131Spanishes8132Spanishes8133Spanishes8134Spanishes8135Spanishes8136Spanishes8137Spanishes8138Spanishes8139Spanishes814Spanishes8140Spanishes8141Spanishes8142Spanishes8143Spanishes8144Spanishes8145Spanishes8146Spanishes8147Spanishes8148Spanishes8149Spanishes815Spanishes8150Spanishes8151Spanishes8152Spanishes8153Spanishes8154Spanishes8155Spanishes8156Spanishes8157Spanishes8158Spanishes8159Spanishes816Spanishes8160Spanishes8161Spanishes8162Spanishes8163Spanishes8164Spanishes8165Spanishes8166Spanishes8167Spanishes8168Spanishes8169Spanishes817Spanishes8170Spanishes8171Spanishes8172Spanishes8173Spanishes8174Spanishes8175Spanishes8176Spanishes8177Spanishes8178Spanishes8179Spanishes818Spanishes8180Spanishes8181Spanishes8182Spanishes8183Spanishes8184Spanishes8185Spanishes8186Spanishes8187Spanishes8188Spanishes8189Spanishes819Spanishes8190Spanishes8191Spanishes82Spanishes820Spanishes821Spanishes822Spanishes823Spanishes824Spanishes825Spanishes826Spanishes827Spanishes828Spanishes829Spanishes83Spanishes830Spanishes831Spanishes832Spanishes833Spanishes834Spanishes835Spanishes836Spanishes837Spanishes838Spanishes839Spanishes84Spanishes840Spanishes841Spanishes842Spanishes843Spanishes844Spanishes845Spanishes846Spanishes847Spanishes848Spanishes849Spanishes85Spanishes850Spanishes851Spanishes852Spanishes853Spanishes854Spanishes855Spanishes856Spanishes857Spanishes858Spanishes859Spanishes86Spanishes860Spanishes861Spanishes862Spanishes863Spanishes864Spanishes865Spanishes866Spanishes867Spanishes868Spanishes869Spanishes87Spanishes870Spanishes871Spanishes872Spanishes873Spanishes874Spanishes875Spanishes876Spanishes877Spanishes878Spanishes879Spanishes88Spanishes880Spanishes881Spanishes882Spanishes883Spanishes884Spanishes885Spanishes886Spanishes887Spanishes888Spanishes889Spanishes89Spanishes890Spanishes891Spanishes892Spanishes893Spanishes894Spanishes895Spanishes896Spanishes897Spanishes898Spanishes899Spanishes9Spanishes90Spanishes900Spanishes901Spanishes902Spanishes903Spanishes904Spanishes905Spanishes906Spanishes907Spanishes908Spanishes909Spanishes91Spanishes910Spanishes911Spanishes912Spanishes913Spanishes914Spanishes915Spanishes916Spanishes917Spanishes918Spanishes919Spanishes92Spanishes920Spanishes921Spanishes922Spanishes923Spanishes924Spanishes925Spanishes926Spanishes927Spanishes928Spanishes929Spanishes93Spanishes930Spanishes931Spanishes932Spanishes933Spanishes934Spanishes935Spanishes936Spanishes937Spanishes938Spanishes939Spanishes94Spanishes940Spanishes941Spanishes942Spanishes943Spanishes944Spanishes945Spanishes946Spanishes947Spanishes948Spanishes949Spanishes95Spanishes950Spanishes951Spanishes952Spanishes953Spanishes954Spanishes955Spanishes956Spanishes957Spanishes958Spanishes959Spanishes96Spanishes960Spanishes961Spanishes962Spanishes963Spanishes964Spanishes965Spanishes966Spanishes967Spanishes968Spanishes969Spanishes97Spanishes970Spanishes971Spanishes972Spanishes973Spanishes974Spanishes975Spanishes976Spanishes977Spanishes978Spanishes979Spanishes98Spanishes980Spanishes981Spanishes982Spanishes983Spanishes984Spanishes985Spanishes986Spanishes987Spanishes988Spanishes989Spanishes99Spanishes990Spanishes991Spanishes992Spanishes993Spanishes994Spanishes995Spanishes996Spanishes997Spanishes998Spanishes999Spanishfr0Frenchfr1Frenchfr10Frenchfr100Frenchfr1000Frenchfr1001Frenchfr1002Frenchfr1003Frenchfr1004Frenchfr1005Frenchfr1006Frenchfr1007Frenchfr1008Frenchfr1009Frenchfr101Frenchfr1010Frenchfr1011Frenchfr1012Frenchfr1013Frenchfr1014Frenchfr1015Frenchfr1016Frenchfr1017Frenchfr1018Frenchfr1019Frenchfr102Frenchfr1020Frenchfr1021Frenchfr1022Frenchfr1023Frenchfr1024Frenchfr1025Frenchfr1026Frenchfr1027Frenchfr1028Frenchfr1029Frenchfr103Frenchfr1030Frenchfr1031Frenchfr1032Frenchfr1033Frenchfr1034Frenchfr1035Frenchfr1036Frenchfr1037Frenchfr1038Frenchfr1039Frenchfr104Frenchfr1040Frenchfr1041Frenchfr1042Frenchfr1043Frenchfr1044Frenchfr1045Frenchfr1046Frenchfr1047Frenchfr1048Frenchfr1049Frenchfr105Frenchfr1050Frenchfr1051Frenchfr1052Frenchfr1053Frenchfr1054Frenchfr1055Frenchfr1056Frenchfr1057Frenchfr1058Frenchfr1059Frenchfr106Frenchfr1060Frenchfr1061Frenchfr1062Frenchfr1063Frenchfr1064Frenchfr1065Frenchfr1066Frenchfr1067Frenchfr1068Frenchfr1069Frenchfr107Frenchfr1070Frenchfr1071Frenchfr1072Frenchfr1073Frenchfr1074Frenchfr1075Frenchfr1076Frenchfr1077Frenchfr1078Frenchfr1079Frenchfr108Frenchfr1080Frenchfr1081Frenchfr1082Frenchfr1083Frenchfr1084Frenchfr1085Frenchfr1086Frenchfr1087Frenchfr1088Frenchfr1089Frenchfr109Frenchfr1090Frenchfr1091Frenchfr1092Frenchfr1093Frenchfr1094Frenchfr1095Frenchfr1096Frenchfr1097Frenchfr1098Frenchfr1099Frenchfr11Frenchfr110Frenchfr1100Frenchfr1101Frenchfr1102Frenchfr1103Frenchfr1104Frenchfr1105Frenchfr1106Frenchfr1107Frenchfr1108Frenchfr1109Frenchfr111Frenchfr1110Frenchfr1111Frenchfr1112Frenchfr1113Frenchfr1114Frenchfr1115Frenchfr1116Frenchfr1117Frenchfr1118Frenchfr1119Frenchfr112Frenchfr1120Frenchfr1121Frenchfr1122Frenchfr1123Frenchfr1124Frenchfr1125Frenchfr1126Frenchfr1127Frenchfr1128Frenchfr1129Frenchfr113Frenchfr1130Frenchfr1131Frenchfr1132Frenchfr1133Frenchfr1134Frenchfr1135Frenchfr1136Frenchfr1137Frenchfr1138Frenchfr1139Frenchfr114Frenchfr1140Frenchfr1141Frenchfr1142Frenchfr1143Frenchfr1144Frenchfr1145Frenchfr1146Frenchfr1147Frenchfr1148Frenchfr1149Frenchfr115Frenchfr1150Frenchfr1151Frenchfr1152Frenchfr1153Frenchfr1154Frenchfr1155Frenchfr1156Frenchfr1157Frenchfr1158Frenchfr1159Frenchfr116Frenchfr1160Frenchfr1161Frenchfr1162Frenchfr1163Frenchfr1164Frenchfr1165Frenchfr1166Frenchfr1167Frenchfr1168Frenchfr1169Frenchfr117Frenchfr1170Frenchfr1171Frenchfr1172Frenchfr1173Frenchfr1174Frenchfr1175Frenchfr1176Frenchfr1177Frenchfr1178Frenchfr1179Frenchfr118Frenchfr1180Frenchfr1181Frenchfr1182Frenchfr1183Frenchfr1184Frenchfr1185Frenchfr1186Frenchfr1187Frenchfr1188Frenchfr1189Frenchfr119Frenchfr1190Frenchfr1191Frenchfr1192Frenchfr1193Frenchfr1194Frenchfr1195Frenchfr1196Frenchfr1197Frenchfr1198Frenchfr1199Frenchfr12Frenchfr120Frenchfr1200Frenchfr1201Frenchfr1202Frenchfr1203Frenchfr1204Frenchfr1205Frenchfr1206Frenchfr1207Frenchfr1208Frenchfr1209Frenchfr121Frenchfr1210Frenchfr1211Frenchfr1212Frenchfr1213Frenchfr1214Frenchfr1215Frenchfr1216Frenchfr1217Frenchfr1218Frenchfr1219Frenchfr122Frenchfr1220Frenchfr1221Frenchfr1222Frenchfr1223Frenchfr1224Frenchfr1225Frenchfr1226Frenchfr1227Frenchfr1228Frenchfr1229Frenchfr123Frenchfr1230Frenchfr1231Frenchfr1232Frenchfr1233Frenchfr1234Frenchfr1235Frenchfr1236Frenchfr1237Frenchfr1238Frenchfr1239Frenchfr124Frenchfr1240Frenchfr1241Frenchfr1242Frenchfr1243Frenchfr1244Frenchfr1245Frenchfr1246Frenchfr1247Frenchfr1248Frenchfr1249Frenchfr125Frenchfr1250Frenchfr1251Frenchfr1252Frenchfr1253Frenchfr1254Frenchfr1255Frenchfr1256Frenchfr1257Frenchfr1258Frenchfr1259Frenchfr126Frenchfr1260Frenchfr1261Frenchfr1262Frenchfr1263Frenchfr1264Frenchfr1265Frenchfr1266Frenchfr1267Frenchfr1268Frenchfr1269Frenchfr127Frenchfr1270Frenchfr1271Frenchfr1272Frenchfr1273Frenchfr1274Frenchfr1275Frenchfr1276Frenchfr1277Frenchfr1278Frenchfr1279Frenchfr128Frenchfr1280Frenchfr1281Frenchfr1282Frenchfr1283Frenchfr1284Frenchfr1285Frenchfr1286Frenchfr1287Frenchfr1288Frenchfr1289Frenchfr129Frenchfr1290Frenchfr1291Frenchfr1292Frenchfr1293Frenchfr1294Frenchfr1295Frenchfr1296Frenchfr1297Frenchfr1298Frenchfr1299Frenchfr13Frenchfr130Frenchfr1300Frenchfr1301Frenchfr1302Frenchfr1303Frenchfr1304Frenchfr1305Frenchfr1306Frenchfr1307Frenchfr1308Frenchfr1309Frenchfr131Frenchfr1310Frenchfr1311Frenchfr1312Frenchfr1313Frenchfr1314Frenchfr1315Frenchfr1316Frenchfr1317Frenchfr1318Frenchfr1319Frenchfr132Frenchfr1320Frenchfr1321Frenchfr1322Frenchfr1323Frenchfr1324Frenchfr1325Frenchfr1326Frenchfr1327Frenchfr1328Frenchfr1329Frenchfr133Frenchfr1330Frenchfr1331Frenchfr1332Frenchfr1333Frenchfr1334Frenchfr1335Frenchfr1336Frenchfr1337Frenchfr1338Frenchfr1339Frenchfr134Frenchfr1340Frenchfr1341Frenchfr1342Frenchfr1343Frenchfr1344Frenchfr1345Frenchfr1346Frenchfr1347Frenchfr1348Frenchfr1349Frenchfr135Frenchfr1350Frenchfr1351Frenchfr1352Frenchfr1353Frenchfr1354Frenchfr1355Frenchfr1356Frenchfr1357Frenchfr1358Frenchfr1359Frenchfr136Frenchfr1360Frenchfr1361Frenchfr1362Frenchfr1363Frenchfr1364Frenchfr1365Frenchfr1366Frenchfr1367Frenchfr1368Frenchfr1369Frenchfr137Frenchfr1370Frenchfr1371Frenchfr1372Frenchfr1373Frenchfr1374Frenchfr1375Frenchfr1376Frenchfr1377Frenchfr1378Frenchfr1379Frenchfr138Frenchfr1380Frenchfr1381Frenchfr1382Frenchfr1383Frenchfr1384Frenchfr1385Frenchfr1386Frenchfr1387Frenchfr1388Frenchfr1389Frenchfr139Frenchfr1390Frenchfr1391Frenchfr1392Frenchfr1393Frenchfr1394Frenchfr1395Frenchfr1396Frenchfr1397Frenchfr1398Frenchfr1399Frenchfr14Frenchfr140Frenchfr1400Frenchfr1401Frenchfr1402Frenchfr1403Frenchfr1404Frenchfr1405Frenchfr1406Frenchfr1407Frenchfr1408Frenchfr1409Frenchfr141Frenchfr1410Frenchfr1411Frenchfr1412Frenchfr1413Frenchfr1414Frenchfr1415Frenchfr1416Frenchfr1417Frenchfr1418Frenchfr1419Frenchfr142Frenchfr1420Frenchfr1421Frenchfr1422Frenchfr1423Frenchfr1424Frenchfr1425Frenchfr1426Frenchfr1427Frenchfr1428Frenchfr1429Frenchfr143Frenchfr1430Frenchfr1431Frenchfr1432Frenchfr1433Frenchfr1434Frenchfr1435Frenchfr1436Frenchfr1437Frenchfr1438Frenchfr1439Frenchfr144Frenchfr1440Frenchfr1441Frenchfr1442Frenchfr1443Frenchfr1444Frenchfr1445Frenchfr1446Frenchfr1447Frenchfr1448Frenchfr1449Frenchfr145Frenchfr1450Frenchfr1451Frenchfr1452Frenchfr1453Frenchfr1454Frenchfr1455Frenchfr1456Frenchfr1457Frenchfr1458Frenchfr1459Frenchfr146Frenchfr1460Frenchfr1461Frenchfr1462Frenchfr1463Frenchfr1464Frenchfr1465Frenchfr1466Frenchfr1467Frenchfr1468Frenchfr1469Frenchfr147Frenchfr1470Frenchfr1471Frenchfr1472Frenchfr1473Frenchfr1474Frenchfr1475Frenchfr1476Frenchfr1477Frenchfr1478Frenchfr1479Frenchfr148Frenchfr1480Frenchfr1481Frenchfr1482Frenchfr1483Frenchfr1484Frenchfr1485Frenchfr1486Frenchfr1487Frenchfr1488Frenchfr1489Frenchfr149Frenchfr1490Frenchfr1491Frenchfr1492Frenchfr1493Frenchfr1494Frenchfr1495Frenchfr1496Frenchfr1497Frenchfr1498Frenchfr1499Frenchfr15Frenchfr150Frenchfr1500Frenchfr1501Frenchfr1502Frenchfr1503Frenchfr1504Frenchfr1505Frenchfr1506Frenchfr1507Frenchfr1508Frenchfr1509Frenchfr151Frenchfr1510Frenchfr1511Frenchfr1512Frenchfr1513Frenchfr1514Frenchfr1515Frenchfr1516Frenchfr1517Frenchfr1518Frenchfr1519Frenchfr152Frenchfr1520Frenchfr1521Frenchfr1522Frenchfr1523Frenchfr1524Frenchfr1525Frenchfr1526Frenchfr1527Frenchfr1528Frenchfr1529Frenchfr153Frenchfr1530Frenchfr1531Frenchfr1532Frenchfr1533Frenchfr1534Frenchfr1535Frenchfr1536Frenchfr1537Frenchfr1538Frenchfr1539Frenchfr154Frenchfr1540Frenchfr1541Frenchfr1542Frenchfr1543Frenchfr1544Frenchfr1545Frenchfr1546Frenchfr1547Frenchfr1548Frenchfr1549Frenchfr155Frenchfr1550Frenchfr1551Frenchfr1552Frenchfr1553Frenchfr1554Frenchfr1555Frenchfr1556Frenchfr1557Frenchfr1558Frenchfr1559Frenchfr156Frenchfr1560Frenchfr1561Frenchfr1562Frenchfr1563Frenchfr1564Frenchfr1565Frenchfr1566Frenchfr1567Frenchfr1568Frenchfr1569Frenchfr157Frenchfr1570Frenchfr1571Frenchfr1572Frenchfr1573Frenchfr1574Frenchfr1575Frenchfr1576Frenchfr1577Frenchfr1578Frenchfr1579Frenchfr158Frenchfr1580Frenchfr1581Frenchfr1582Frenchfr1583Frenchfr1584Frenchfr1585Frenchfr1586Frenchfr1587Frenchfr1588Frenchfr1589Frenchfr159Frenchfr1590Frenchfr1591Frenchfr1592Frenchfr1593Frenchfr1594Frenchfr1595Frenchfr1596Frenchfr1597Frenchfr1598Frenchfr1599Frenchfr16Frenchfr160Frenchfr1600Frenchfr1601Frenchfr1602Frenchfr1603Frenchfr1604Frenchfr1605Frenchfr1606Frenchfr1607Frenchfr1608Frenchfr1609Frenchfr161Frenchfr1610Frenchfr1611Frenchfr1612Frenchfr1613Frenchfr1614Frenchfr1615Frenchfr1616Frenchfr1617Frenchfr1618Frenchfr1619Frenchfr162Frenchfr1620Frenchfr1621Frenchfr1622Frenchfr1623Frenchfr1624Frenchfr1625Frenchfr1626Frenchfr1627Frenchfr1628Frenchfr1629Frenchfr163Frenchfr1630Frenchfr1631Frenchfr1632Frenchfr1633Frenchfr1634Frenchfr1635Frenchfr1636Frenchfr1637Frenchfr1638Frenchfr1639Frenchfr164Frenchfr1640Frenchfr1641Frenchfr1642Frenchfr1643Frenchfr1644Frenchfr1645Frenchfr1646Frenchfr1647Frenchfr1648Frenchfr1649Frenchfr165Frenchfr1650Frenchfr1651Frenchfr1652Frenchfr1653Frenchfr1654Frenchfr1655Frenchfr1656Frenchfr1657Frenchfr1658Frenchfr1659Frenchfr166Frenchfr1660Frenchfr1661Frenchfr1662Frenchfr1663Frenchfr1664Frenchfr1665Frenchfr1666Frenchfr1667Frenchfr1668Frenchfr1669Frenchfr167Frenchfr1670Frenchfr1671Frenchfr1672Frenchfr1673Frenchfr1674Frenchfr1675Frenchfr1676Frenchfr1677Frenchfr1678Frenchfr1679Frenchfr168Frenchfr1680Frenchfr1681Frenchfr1682Frenchfr1683Frenchfr1684Frenchfr1685Frenchfr1686Frenchfr1687Frenchfr1688Frenchfr1689Frenchfr169Frenchfr1690Frenchfr1691Frenchfr1692Frenchfr1693Frenchfr1694Frenchfr1695Frenchfr1696Frenchfr1697Frenchfr1698Frenchfr1699Frenchfr17Frenchfr170Frenchfr1700Frenchfr1701Frenchfr1702Frenchfr1703Frenchfr1704Frenchfr1705Frenchfr1706Frenchfr1707Frenchfr1708Frenchfr1709Frenchfr171Frenchfr1710Frenchfr1711Frenchfr1712Frenchfr1713Frenchfr1714Frenchfr1715Frenchfr1716Frenchfr1717Frenchfr1718Frenchfr1719Frenchfr172Frenchfr1720Frenchfr1721Frenchfr1722Frenchfr1723Frenchfr1724Frenchfr1725Frenchfr1726Frenchfr1727Frenchfr1728Frenchfr1729Frenchfr173Frenchfr1730Frenchfr1731Frenchfr1732Frenchfr1733Frenchfr1734Frenchfr1735Frenchfr1736Frenchfr1737Frenchfr1738Frenchfr1739Frenchfr174Frenchfr1740Frenchfr1741Frenchfr1742Frenchfr1743Frenchfr1744Frenchfr1745Frenchfr1746Frenchfr1747Frenchfr1748Frenchfr1749Frenchfr175Frenchfr1750Frenchfr1751Frenchfr1752Frenchfr1753Frenchfr1754Frenchfr1755Frenchfr1756Frenchfr1757Frenchfr1758Frenchfr1759Frenchfr176Frenchfr1760Frenchfr1761Frenchfr1762Frenchfr1763Frenchfr1764Frenchfr1765Frenchfr1766Frenchfr1767Frenchfr1768Frenchfr1769Frenchfr177Frenchfr1770Frenchfr1771Frenchfr1772Frenchfr1773Frenchfr1774Frenchfr1775Frenchfr1776Frenchfr1777Frenchfr1778Frenchfr1779Frenchfr178Frenchfr1780Frenchfr1781Frenchfr1782Frenchfr1783Frenchfr1784Frenchfr1785Frenchfr1786Frenchfr1787Frenchfr1788Frenchfr1789Frenchfr179Frenchfr1790Frenchfr1791Frenchfr1792Frenchfr1793Frenchfr1794Frenchfr1795Frenchfr1796Frenchfr1797Frenchfr1798Frenchfr1799Frenchfr18Frenchfr180Frenchfr1800Frenchfr1801Frenchfr1802Frenchfr1803Frenchfr1804Frenchfr1805Frenchfr1806Frenchfr1807Frenchfr1808Frenchfr1809Frenchfr181Frenchfr1810Frenchfr1811Frenchfr1812Frenchfr1813Frenchfr1814Frenchfr1815Frenchfr1816Frenchfr1817Frenchfr1818Frenchfr1819Frenchfr182Frenchfr1820Frenchfr1821Frenchfr1822Frenchfr1823Frenchfr1824Frenchfr1825Frenchfr1826Frenchfr1827Frenchfr1828Frenchfr1829Frenchfr183Frenchfr1830Frenchfr1831Frenchfr1832Frenchfr1833Frenchfr1834Frenchfr1835Frenchfr1836Frenchfr1837Frenchfr1838Frenchfr1839Frenchfr184Frenchfr1840Frenchfr1841Frenchfr1842Frenchfr1843Frenchfr1844Frenchfr1845Frenchfr1846Frenchfr1847Frenchfr1848Frenchfr1849Frenchfr185Frenchfr1850Frenchfr1851Frenchfr1852Frenchfr1853Frenchfr1854Frenchfr1855Frenchfr1856Frenchfr1857Frenchfr1858Frenchfr1859Frenchfr186Frenchfr1860Frenchfr1861Frenchfr1862Frenchfr1863Frenchfr1864Frenchfr1865Frenchfr1866Frenchfr1867Frenchfr1868Frenchfr1869Frenchfr187Frenchfr1870Frenchfr1871Frenchfr1872Frenchfr1873Frenchfr1874Frenchfr1875Frenchfr1876Frenchfr1877Frenchfr1878Frenchfr1879Frenchfr188Frenchfr1880Frenchfr1881Frenchfr1882Frenchfr1883Frenchfr1884Frenchfr1885Frenchfr1886Frenchfr1887Frenchfr1888Frenchfr1889Frenchfr189Frenchfr1890Frenchfr1891Frenchfr1892Frenchfr1893Frenchfr1894Frenchfr1895Frenchfr1896Frenchfr1897Frenchfr1898Frenchfr1899Frenchfr19Frenchfr190Frenchfr1900Frenchfr1901Frenchfr1902Frenchfr1903Frenchfr1904Frenchfr1905Frenchfr1906Frenchfr1907Frenchfr1908Frenchfr1909Frenchfr191Frenchfr1910Frenchfr1911Frenchfr1912Frenchfr1913Frenchfr1914Frenchfr1915Frenchfr1916Frenchfr1917Frenchfr1918Frenchfr1919Frenchfr192Frenchfr1920Frenchfr1921Frenchfr1922Frenchfr1923Frenchfr1924Frenchfr1925Frenchfr1926Frenchfr1927Frenchfr1928Frenchfr1929Frenchfr193Frenchfr1930Frenchfr1931Frenchfr1932Frenchfr1933Frenchfr1934Frenchfr1935Frenchfr1936Frenchfr1937Frenchfr1938Frenchfr1939Frenchfr194Frenchfr1940Frenchfr1941Frenchfr1942Frenchfr1943Frenchfr1944Frenchfr1945Frenchfr1946Frenchfr1947Frenchfr1948Frenchfr1949Frenchfr195Frenchfr1950Frenchfr1951Frenchfr1952Frenchfr1953Frenchfr1954Frenchfr1955Frenchfr1956Frenchfr1957Frenchfr1958Frenchfr1959Frenchfr196Frenchfr1960Frenchfr1961Frenchfr1962Frenchfr1963Frenchfr1964Frenchfr1965Frenchfr1966Frenchfr1967Frenchfr1968Frenchfr1969Frenchfr197Frenchfr1970Frenchfr1971Frenchfr1972Frenchfr1973Frenchfr1974Frenchfr1975Frenchfr1976Frenchfr1977Frenchfr1978Frenchfr1979Frenchfr198Frenchfr1980Frenchfr1981Frenchfr1982Frenchfr1983Frenchfr1984Frenchfr1985Frenchfr1986Frenchfr1987Frenchfr1988Frenchfr1989Frenchfr199Frenchfr1990Frenchfr1991Frenchfr1992Frenchfr1993Frenchfr1994Frenchfr1995Frenchfr1996Frenchfr1997Frenchfr1998Frenchfr1999Frenchfr2Frenchfr20Frenchfr200Frenchfr2000Frenchfr2001Frenchfr2002Frenchfr2003Frenchfr2004Frenchfr2005Frenchfr2006Frenchfr2007Frenchfr2008Frenchfr2009Frenchfr201Frenchfr2010Frenchfr2011Frenchfr2012Frenchfr2013Frenchfr2014Frenchfr2015Frenchfr2016Frenchfr2017Frenchfr2018Frenchfr2019Frenchfr202Frenchfr2020Frenchfr2021Frenchfr2022Frenchfr2023Frenchfr2024Frenchfr2025Frenchfr2026Frenchfr2027Frenchfr2028Frenchfr2029Frenchfr203Frenchfr2030Frenchfr2031Frenchfr2032Frenchfr2033Frenchfr2034Frenchfr2035Frenchfr2036Frenchfr2037Frenchfr2038Frenchfr2039Frenchfr204Frenchfr2040Frenchfr2041Frenchfr2042Frenchfr2043Frenchfr2044Frenchfr2045Frenchfr2046Frenchfr2047Frenchfr2048Frenchfr2049Frenchfr205Frenchfr2050Frenchfr2051Frenchfr2052Frenchfr2053Frenchfr2054Frenchfr2055Frenchfr2056Frenchfr2057Frenchfr2058Frenchfr2059Frenchfr206Frenchfr2060Frenchfr2061Frenchfr2062Frenchfr2063Frenchfr2064Frenchfr2065Frenchfr2066Frenchfr2067Frenchfr2068Frenchfr2069Frenchfr207Frenchfr2070Frenchfr2071Frenchfr2072Frenchfr2073Frenchfr2074Frenchfr2075Frenchfr2076Frenchfr2077Frenchfr2078Frenchfr2079Frenchfr208Frenchfr2080Frenchfr2081Frenchfr2082Frenchfr2083Frenchfr2084Frenchfr2085Frenchfr2086Frenchfr2087Frenchfr2088Frenchfr2089Frenchfr209Frenchfr2090Frenchfr2091Frenchfr2092Frenchfr2093Frenchfr2094Frenchfr2095Frenchfr2096Frenchfr2097Frenchfr2098Frenchfr2099Frenchfr21Frenchfr210Frenchfr2100Frenchfr2101Frenchfr2102Frenchfr2103Frenchfr2104Frenchfr2105Frenchfr2106Frenchfr2107Frenchfr2108Frenchfr2109Frenchfr211Frenchfr2110Frenchfr2111Frenchfr2112Frenchfr2113Frenchfr2114Frenchfr2115Frenchfr2116Frenchfr2117Frenchfr2118Frenchfr2119Frenchfr212Frenchfr2120Frenchfr2121Frenchfr2122Frenchfr2123Frenchfr2124Frenchfr2125Frenchfr2126Frenchfr2127Frenchfr2128Frenchfr2129Frenchfr213Frenchfr2130Frenchfr2131Frenchfr2132Frenchfr2133Frenchfr2134Frenchfr2135Frenchfr2136Frenchfr2137Frenchfr2138Frenchfr2139Frenchfr214Frenchfr2140Frenchfr2141Frenchfr2142Frenchfr2143Frenchfr2144Frenchfr2145Frenchfr2146Frenchfr2147Frenchfr2148Frenchfr2149Frenchfr215Frenchfr2150Frenchfr2151Frenchfr2152Frenchfr2153Frenchfr2154Frenchfr2155Frenchfr2156Frenchfr2157Frenchfr2158Frenchfr2159Frenchfr216Frenchfr2160Frenchfr2161Frenchfr2162Frenchfr2163Frenchfr2164Frenchfr2165Frenchfr2166Frenchfr2167Frenchfr2168Frenchfr2169Frenchfr217Frenchfr2170Frenchfr2171Frenchfr2172Frenchfr2173Frenchfr2174Frenchfr2175Frenchfr2176Frenchfr2177Frenchfr2178Frenchfr2179Frenchfr218Frenchfr2180Frenchfr2181Frenchfr2182Frenchfr2183Frenchfr2184Frenchfr2185Frenchfr2186Frenchfr2187Frenchfr2188Frenchfr2189Frenchfr219Frenchfr2190Frenchfr2191Frenchfr2192Frenchfr2193Frenchfr2194Frenchfr2195Frenchfr2196Frenchfr2197Frenchfr2198Frenchfr2199Frenchfr22Frenchfr220Frenchfr2200Frenchfr2201Frenchfr2202Frenchfr2203Frenchfr2204Frenchfr2205Frenchfr2206Frenchfr2207Frenchfr2208Frenchfr2209Frenchfr221Frenchfr2210Frenchfr2211Frenchfr2212Frenchfr2213Frenchfr2214Frenchfr2215Frenchfr2216Frenchfr2217Frenchfr2218Frenchfr2219Frenchfr222Frenchfr2220Frenchfr2221Frenchfr2222Frenchfr2223Frenchfr2224Frenchfr2225Frenchfr2226Frenchfr2227Frenchfr2228Frenchfr2229Frenchfr223Frenchfr2230Frenchfr2231Frenchfr2232Frenchfr2233Frenchfr2234Frenchfr2235Frenchfr2236Frenchfr2237Frenchfr2238Frenchfr2239Frenchfr224Frenchfr2240Frenchfr2241Frenchfr2242Frenchfr2243Frenchfr2244Frenchfr2245Frenchfr2246Frenchfr2247Frenchfr2248Frenchfr2249Frenchfr225Frenchfr2250Frenchfr2251Frenchfr2252Frenchfr2253Frenchfr2254Frenchfr2255Frenchfr2256Frenchfr2257Frenchfr2258Frenchfr2259Frenchfr226Frenchfr2260Frenchfr2261Frenchfr2262Frenchfr2263Frenchfr2264Frenchfr2265Frenchfr2266Frenchfr2267Frenchfr2268Frenchfr2269Frenchfr227Frenchfr2270Frenchfr2271Frenchfr2272Frenchfr2273Frenchfr2274Frenchfr2275Frenchfr2276Frenchfr2277Frenchfr2278Frenchfr2279Frenchfr228Frenchfr2280Frenchfr2281Frenchfr2282Frenchfr2283Frenchfr2284Frenchfr2285Frenchfr2286Frenchfr2287Frenchfr2288Frenchfr2289Frenchfr229Frenchfr2290Frenchfr2291Frenchfr2292Frenchfr2293Frenchfr2294Frenchfr2295Frenchfr2296Frenchfr2297Frenchfr2298Frenchfr2299Frenchfr23Frenchfr230Frenchfr2300Frenchfr2301Frenchfr2302Frenchfr2303Frenchfr2304Frenchfr2305Frenchfr2306Frenchfr2307Frenchfr2308Frenchfr2309Frenchfr231Frenchfr2310Frenchfr2311Frenchfr2312Frenchfr2313Frenchfr2314Frenchfr2315Frenchfr2316Frenchfr2317Frenchfr2318Frenchfr2319Frenchfr232Frenchfr2320Frenchfr2321Frenchfr2322Frenchfr2323Frenchfr2324Frenchfr2325Frenchfr2326Frenchfr2327Frenchfr2328Frenchfr2329Frenchfr233Frenchfr2330Frenchfr2331Frenchfr2332Frenchfr2333Frenchfr2334Frenchfr2335Frenchfr2336Frenchfr2337Frenchfr2338Frenchfr2339Frenchfr234Frenchfr2340Frenchfr2341Frenchfr2342Frenchfr2343Frenchfr2344Frenchfr2345Frenchfr2346Frenchfr2347Frenchfr2348Frenchfr2349Frenchfr235Frenchfr2350Frenchfr2351Frenchfr2352Frenchfr2353Frenchfr2354Frenchfr2355Frenchfr2356Frenchfr2357Frenchfr2358Frenchfr2359Frenchfr236Frenchfr2360Frenchfr2361Frenchfr2362Frenchfr2363Frenchfr2364Frenchfr2365Frenchfr2366Frenchfr2367Frenchfr2368Frenchfr2369Frenchfr237Frenchfr2370Frenchfr2371Frenchfr2372Frenchfr2373Frenchfr2374Frenchfr2375Frenchfr2376Frenchfr2377Frenchfr2378Frenchfr2379Frenchfr238Frenchfr2380Frenchfr2381Frenchfr2382Frenchfr2383Frenchfr2384Frenchfr2385Frenchfr2386Frenchfr2387Frenchfr2388Frenchfr2389Frenchfr239Frenchfr2390Frenchfr2391Frenchfr2392Frenchfr2393Frenchfr2394Frenchfr2395Frenchfr2396Frenchfr2397Frenchfr2398Frenchfr2399Frenchfr24Frenchfr240Frenchfr2400Frenchfr2401Frenchfr2402Frenchfr2403Frenchfr2404Frenchfr2405Frenchfr2406Frenchfr2407Frenchfr2408Frenchfr2409Frenchfr241Frenchfr2410Frenchfr2411Frenchfr2412Frenchfr2413Frenchfr2414Frenchfr2415Frenchfr2416Frenchfr2417Frenchfr2418Frenchfr2419Frenchfr242Frenchfr2420Frenchfr2421Frenchfr2422Frenchfr2423Frenchfr2424Frenchfr2425Frenchfr2426Frenchfr2427Frenchfr2428Frenchfr2429Frenchfr243Frenchfr2430Frenchfr2431Frenchfr2432Frenchfr2433Frenchfr2434Frenchfr2435Frenchfr2436Frenchfr2437Frenchfr2438Frenchfr2439Frenchfr244Frenchfr2440Frenchfr2441Frenchfr2442Frenchfr2443Frenchfr2444Frenchfr2445Frenchfr2446Frenchfr2447Frenchfr2448Frenchfr2449Frenchfr245Frenchfr2450Frenchfr2451Frenchfr2452Frenchfr2453Frenchfr2454Frenchfr2455Frenchfr2456Frenchfr2457Frenchfr2458Frenchfr2459Frenchfr246Frenchfr2460Frenchfr2461Frenchfr2462Frenchfr2463Frenchfr2464Frenchfr2465Frenchfr2466Frenchfr2467Frenchfr2468Frenchfr2469Frenchfr247Frenchfr2470Frenchfr2471Frenchfr2472Frenchfr2473Frenchfr2474Frenchfr2475Frenchfr2476Frenchfr2477Frenchfr2478Frenchfr2479Frenchfr248Frenchfr2480Frenchfr2481Frenchfr2482Frenchfr2483Frenchfr2484Frenchfr2485Frenchfr2486Frenchfr2487Frenchfr2488Frenchfr2489Frenchfr249Frenchfr2490Frenchfr2491Frenchfr2492Frenchfr2493Frenchfr2494Frenchfr2495Frenchfr2496Frenchfr2497Frenchfr2498Frenchfr2499Frenchfr25Frenchfr250Frenchfr2500Frenchfr2501Frenchfr2502Frenchfr2503Frenchfr2504Frenchfr2505Frenchfr2506Frenchfr2507Frenchfr2508Frenchfr2509Frenchfr251Frenchfr2510Frenchfr2511Frenchfr2512Frenchfr2513Frenchfr2514Frenchfr2515Frenchfr2516Frenchfr2517Frenchfr2518Frenchfr2519Frenchfr252Frenchfr2520Frenchfr2521Frenchfr2522Frenchfr2523Frenchfr2524Frenchfr2525Frenchfr2526Frenchfr2527Frenchfr2528Frenchfr2529Frenchfr253Frenchfr2530Frenchfr2531Frenchfr2532Frenchfr2533Frenchfr2534Frenchfr2535Frenchfr2536Frenchfr2537Frenchfr2538Frenchfr2539Frenchfr254Frenchfr2540Frenchfr2541Frenchfr2542Frenchfr2543Frenchfr2544Frenchfr2545Frenchfr2546Frenchfr2547Frenchfr2548Frenchfr2549Frenchfr255Frenchfr2550Frenchfr2551Frenchfr2552Frenchfr2553Frenchfr2554Frenchfr2555Frenchfr2556Frenchfr2557Frenchfr2558Frenchfr2559Frenchfr256Frenchfr2560Frenchfr2561Frenchfr2562Frenchfr2563Frenchfr2564Frenchfr2565Frenchfr2566Frenchfr2567Frenchfr2568Frenchfr2569Frenchfr257Frenchfr2570Frenchfr2571Frenchfr2572Frenchfr2573Frenchfr2574Frenchfr2575Frenchfr2576Frenchfr2577Frenchfr2578Frenchfr2579Frenchfr258Frenchfr2580Frenchfr2581Frenchfr2582Frenchfr2583Frenchfr2584Frenchfr2585Frenchfr2586Frenchfr2587Frenchfr2588Frenchfr2589Frenchfr259Frenchfr2590Frenchfr2591Frenchfr2592Frenchfr2593Frenchfr2594Frenchfr2595Frenchfr2596Frenchfr2597Frenchfr2598Frenchfr2599Frenchfr26Frenchfr260Frenchfr2600Frenchfr2601Frenchfr2602Frenchfr2603Frenchfr2604Frenchfr2605Frenchfr2606Frenchfr2607Frenchfr2608Frenchfr2609Frenchfr261Frenchfr2610Frenchfr2611Frenchfr2612Frenchfr2613Frenchfr2614Frenchfr2615Frenchfr2616Frenchfr2617Frenchfr2618Frenchfr2619Frenchfr262Frenchfr2620Frenchfr2621Frenchfr2622Frenchfr2623Frenchfr2624Frenchfr2625Frenchfr2626Frenchfr2627Frenchfr2628Frenchfr2629Frenchfr263Frenchfr2630Frenchfr2631Frenchfr2632Frenchfr2633Frenchfr2634Frenchfr2635Frenchfr2636Frenchfr2637Frenchfr2638Frenchfr2639Frenchfr264Frenchfr2640Frenchfr2641Frenchfr2642Frenchfr2643Frenchfr2644Frenchfr2645Frenchfr2646Frenchfr2647Frenchfr2648Frenchfr2649Frenchfr265Frenchfr2650Frenchfr2651Frenchfr2652Frenchfr2653Frenchfr2654Frenchfr2655Frenchfr2656Frenchfr2657Frenchfr2658Frenchfr2659Frenchfr266Frenchfr2660Frenchfr2661Frenchfr2662Frenchfr2663Frenchfr2664Frenchfr2665Frenchfr2666Frenchfr2667Frenchfr2668Frenchfr2669Frenchfr267Frenchfr2670Frenchfr2671Frenchfr2672Frenchfr2673Frenchfr2674Frenchfr2675Frenchfr2676Frenchfr2677Frenchfr2678Frenchfr2679Frenchfr268Frenchfr2680Frenchfr2681Frenchfr2682Frenchfr2683Frenchfr2684Frenchfr2685Frenchfr2686Frenchfr2687Frenchfr2688Frenchfr2689Frenchfr269Frenchfr2690Frenchfr2691Frenchfr2692Frenchfr2693Frenchfr2694Frenchfr2695Frenchfr2696Frenchfr2697Frenchfr2698Frenchfr2699Frenchfr27Frenchfr270Frenchfr2700Frenchfr2701Frenchfr2702Frenchfr2703Frenchfr2704Frenchfr2705Frenchfr2706Frenchfr2707Frenchfr2708Frenchfr2709Frenchfr271Frenchfr2710Frenchfr2711Frenchfr2712Frenchfr2713Frenchfr2714Frenchfr2715Frenchfr2716Frenchfr2717Frenchfr2718Frenchfr2719Frenchfr272Frenchfr2720Frenchfr2721Frenchfr2722Frenchfr2723Frenchfr2724Frenchfr2725Frenchfr2726Frenchfr2727Frenchfr2728Frenchfr2729Frenchfr273Frenchfr2730Frenchfr2731Frenchfr2732Frenchfr2733Frenchfr2734Frenchfr2735Frenchfr2736Frenchfr2737Frenchfr2738Frenchfr2739Frenchfr274Frenchfr2740Frenchfr2741Frenchfr2742Frenchfr2743Frenchfr2744Frenchfr2745Frenchfr2746Frenchfr2747Frenchfr2748Frenchfr2749Frenchfr275Frenchfr2750Frenchfr2751Frenchfr2752Frenchfr2753Frenchfr2754Frenchfr2755Frenchfr2756Frenchfr2757Frenchfr2758Frenchfr2759Frenchfr276Frenchfr2760Frenchfr2761Frenchfr2762Frenchfr2763Frenchfr2764Frenchfr2765Frenchfr2766Frenchfr2767Frenchfr2768Frenchfr2769Frenchfr277Frenchfr2770Frenchfr2771Frenchfr2772Frenchfr2773Frenchfr2774Frenchfr2775Frenchfr2776Frenchfr2777Frenchfr2778Frenchfr2779Frenchfr278Frenchfr2780Frenchfr2781Frenchfr2782Frenchfr2783Frenchfr2784Frenchfr2785Frenchfr2786Frenchfr2787Frenchfr2788Frenchfr2789Frenchfr279Frenchfr2790Frenchfr2791Frenchfr2792Frenchfr2793Frenchfr2794Frenchfr2795Frenchfr2796Frenchfr2797Frenchfr2798Frenchfr2799Frenchfr28Frenchfr280Frenchfr2800Frenchfr2801Frenchfr2802Frenchfr2803Frenchfr2804Frenchfr2805Frenchfr2806Frenchfr2807Frenchfr2808Frenchfr2809Frenchfr281Frenchfr2810Frenchfr2811Frenchfr2812Frenchfr2813Frenchfr2814Frenchfr2815Frenchfr2816Frenchfr2817Frenchfr2818Frenchfr2819Frenchfr282Frenchfr2820Frenchfr2821Frenchfr2822Frenchfr2823Frenchfr2824Frenchfr2825Frenchfr2826Frenchfr2827Frenchfr2828Frenchfr2829Frenchfr283Frenchfr2830Frenchfr2831Frenchfr2832Frenchfr2833Frenchfr2834Frenchfr2835Frenchfr2836Frenchfr2837Frenchfr2838Frenchfr2839Frenchfr284Frenchfr2840Frenchfr2841Frenchfr2842Frenchfr2843Frenchfr2844Frenchfr2845Frenchfr2846Frenchfr2847Frenchfr2848Frenchfr2849Frenchfr285Frenchfr2850Frenchfr2851Frenchfr2852Frenchfr2853Frenchfr2854Frenchfr2855Frenchfr2856Frenchfr2857Frenchfr2858Frenchfr2859Frenchfr286Frenchfr2860Frenchfr2861Frenchfr2862Frenchfr2863Frenchfr2864Frenchfr2865Frenchfr2866Frenchfr2867Frenchfr2868Frenchfr2869Frenchfr287Frenchfr2870Frenchfr2871Frenchfr2872Frenchfr2873Frenchfr2874Frenchfr2875Frenchfr2876Frenchfr2877Frenchfr2878Frenchfr2879Frenchfr288Frenchfr2880Frenchfr2881Frenchfr2882Frenchfr2883Frenchfr2884Frenchfr2885Frenchfr2886Frenchfr2887Frenchfr2888Frenchfr2889Frenchfr289Frenchfr2890Frenchfr2891Frenchfr2892Frenchfr2893Frenchfr2894Frenchfr2895Frenchfr2896Frenchfr2897Frenchfr2898Frenchfr2899Frenchfr29Frenchfr290Frenchfr2900Frenchfr2901Frenchfr2902Frenchfr2903Frenchfr2904Frenchfr2905Frenchfr2906Frenchfr2907Frenchfr2908Frenchfr2909Frenchfr291Frenchfr2910Frenchfr2911Frenchfr2912Frenchfr2913Frenchfr2914Frenchfr2915Frenchfr2916Frenchfr2917Frenchfr2918Frenchfr2919Frenchfr292Frenchfr2920Frenchfr2921Frenchfr2922Frenchfr2923Frenchfr2924Frenchfr2925Frenchfr2926Frenchfr2927Frenchfr2928Frenchfr2929Frenchfr293Frenchfr2930Frenchfr2931Frenchfr2932Frenchfr2933Frenchfr2934Frenchfr2935Frenchfr2936Frenchfr2937Frenchfr2938Frenchfr2939Frenchfr294Frenchfr2940Frenchfr2941Frenchfr2942Frenchfr2943Frenchfr2944Frenchfr2945Frenchfr2946Frenchfr2947Frenchfr2948Frenchfr2949Frenchfr295Frenchfr2950Frenchfr2951Frenchfr2952Frenchfr2953Frenchfr2954Frenchfr2955Frenchfr2956Frenchfr2957Frenchfr2958Frenchfr2959Frenchfr296Frenchfr2960Frenchfr2961Frenchfr2962Frenchfr2963Frenchfr2964Frenchfr2965Frenchfr2966Frenchfr2967Frenchfr2968Frenchfr2969Frenchfr297Frenchfr2970Frenchfr2971Frenchfr2972Frenchfr2973Frenchfr2974Frenchfr2975Frenchfr2976Frenchfr2977Frenchfr2978Frenchfr2979Frenchfr298Frenchfr2980Frenchfr2981Frenchfr2982Frenchfr2983Frenchfr2984Frenchfr2985Frenchfr2986Frenchfr2987Frenchfr2988Frenchfr2989Frenchfr299Frenchfr2990Frenchfr2991Frenchfr2992Frenchfr2993Frenchfr2994Frenchfr2995Frenchfr2996Frenchfr2997Frenchfr2998Frenchfr2999Frenchfr3Frenchfr30Frenchfr300Frenchfr3000Frenchfr3001Frenchfr3002Frenchfr3003Frenchfr3004Frenchfr3005Frenchfr3006Frenchfr3007Frenchfr3008Frenchfr3009Frenchfr301Frenchfr3010Frenchfr3011Frenchfr3012Frenchfr3013Frenchfr3014Frenchfr3015Frenchfr3016Frenchfr3017Frenchfr3018Frenchfr3019Frenchfr302Frenchfr3020Frenchfr3021Frenchfr3022Frenchfr3023Frenchfr3024Frenchfr3025Frenchfr3026Frenchfr3027Frenchfr3028Frenchfr3029Frenchfr303Frenchfr3030Frenchfr3031Frenchfr3032Frenchfr3033Frenchfr3034Frenchfr3035Frenchfr3036Frenchfr3037Frenchfr3038Frenchfr3039Frenchfr304Frenchfr3040Frenchfr3041Frenchfr3042Frenchfr3043Frenchfr3044Frenchfr3045Frenchfr3046Frenchfr3047Frenchfr3048Frenchfr3049Frenchfr305Frenchfr3050Frenchfr3051Frenchfr3052Frenchfr3053Frenchfr3054Frenchfr3055Frenchfr3056Frenchfr3057Frenchfr3058Frenchfr3059Frenchfr306Frenchfr3060Frenchfr3061Frenchfr3062Frenchfr3063Frenchfr3064Frenchfr3065Frenchfr3066Frenchfr3067Frenchfr3068Frenchfr3069Frenchfr307Frenchfr3070Frenchfr3071Frenchfr3072Frenchfr3073Frenchfr3074Frenchfr3075Frenchfr3076Frenchfr3077Frenchfr3078Frenchfr3079Frenchfr308Frenchfr3080Frenchfr3081Frenchfr3082Frenchfr3083Frenchfr3084Frenchfr3085Frenchfr3086Frenchfr3087Frenchfr3088Frenchfr3089Frenchfr309Frenchfr3090Frenchfr3091Frenchfr3092Frenchfr3093Frenchfr3094Frenchfr3095Frenchfr3096Frenchfr3097Frenchfr3098Frenchfr3099Frenchfr31Frenchfr310Frenchfr3100Frenchfr3101Frenchfr3102Frenchfr3103Frenchfr3104Frenchfr3105Frenchfr3106Frenchfr3107Frenchfr3108Frenchfr3109Frenchfr311Frenchfr3110Frenchfr3111Frenchfr3112Frenchfr3113Frenchfr3114Frenchfr3115Frenchfr3116Frenchfr3117Frenchfr3118Frenchfr3119Frenchfr312Frenchfr3120Frenchfr3121Frenchfr3122Frenchfr3123Frenchfr3124Frenchfr3125Frenchfr3126Frenchfr3127Frenchfr3128Frenchfr3129Frenchfr313Frenchfr3130Frenchfr3131Frenchfr3132Frenchfr3133Frenchfr3134Frenchfr3135Frenchfr3136Frenchfr3137Frenchfr3138Frenchfr3139Frenchfr314Frenchfr3140Frenchfr3141Frenchfr3142Frenchfr3143Frenchfr3144Frenchfr3145Frenchfr3146Frenchfr3147Frenchfr3148Frenchfr3149Frenchfr315Frenchfr3150Frenchfr3151Frenchfr3152Frenchfr3153Frenchfr3154Frenchfr3155Frenchfr3156Frenchfr3157Frenchfr3158Frenchfr3159Frenchfr316Frenchfr3160Frenchfr3161Frenchfr3162Frenchfr3163Frenchfr3164Frenchfr3165Frenchfr3166Frenchfr3167Frenchfr3168Frenchfr3169Frenchfr317Frenchfr3170Frenchfr3171Frenchfr3172Frenchfr3173Frenchfr3174Frenchfr3175Frenchfr3176Frenchfr3177Frenchfr3178Frenchfr3179Frenchfr318Frenchfr3180Frenchfr3181Frenchfr3182Frenchfr3183Frenchfr3184Frenchfr3185Frenchfr3186Frenchfr3187Frenchfr3188Frenchfr3189Frenchfr319Frenchfr3190Frenchfr3191Frenchfr3192Frenchfr3193Frenchfr3194Frenchfr3195Frenchfr3196Frenchfr3197Frenchfr3198Frenchfr3199Frenchfr32Frenchfr320Frenchfr3200Frenchfr3201Frenchfr3202Frenchfr3203Frenchfr3204Frenchfr3205Frenchfr3206Frenchfr3207Frenchfr3208Frenchfr3209Frenchfr321Frenchfr3210Frenchfr3211Frenchfr3212Frenchfr3213Frenchfr3214Frenchfr3215Frenchfr3216Frenchfr3217Frenchfr3218Frenchfr3219Frenchfr322Frenchfr3220Frenchfr3221Frenchfr3222Frenchfr3223Frenchfr3224Frenchfr3225Frenchfr3226Frenchfr3227Frenchfr3228Frenchfr3229Frenchfr323Frenchfr3230Frenchfr3231Frenchfr3232Frenchfr3233Frenchfr3234Frenchfr3235Frenchfr3236Frenchfr3237Frenchfr3238Frenchfr3239Frenchfr324Frenchfr3240Frenchfr3241Frenchfr3242Frenchfr3243Frenchfr3244Frenchfr3245Frenchfr3246Frenchfr3247Frenchfr3248Frenchfr3249Frenchfr325Frenchfr3250Frenchfr3251Frenchfr3252Frenchfr3253Frenchfr3254Frenchfr3255Frenchfr3256Frenchfr3257Frenchfr3258Frenchfr3259Frenchfr326Frenchfr3260Frenchfr3261Frenchfr3262Frenchfr3263Frenchfr3264Frenchfr3265Frenchfr3266Frenchfr3267Frenchfr3268Frenchfr3269Frenchfr327Frenchfr3270Frenchfr3271Frenchfr3272Frenchfr3273Frenchfr3274Frenchfr3275Frenchfr3276Frenchfr3277Frenchfr3278Frenchfr3279Frenchfr328Frenchfr3280Frenchfr3281Frenchfr3282Frenchfr3283Frenchfr3284Frenchfr3285Frenchfr3286Frenchfr3287Frenchfr3288Frenchfr3289Frenchfr329Frenchfr3290Frenchfr3291Frenchfr3292Frenchfr3293Frenchfr3294Frenchfr3295Frenchfr3296Frenchfr3297Frenchfr3298Frenchfr3299Frenchfr33Frenchfr330Frenchfr3300Frenchfr3301Frenchfr3302Frenchfr3303Frenchfr3304Frenchfr3305Frenchfr3306Frenchfr3307Frenchfr3308Frenchfr3309Frenchfr331Frenchfr3310Frenchfr3311Frenchfr3312Frenchfr3313Frenchfr3314Frenchfr3315Frenchfr3316Frenchfr3317Frenchfr3318Frenchfr3319Frenchfr332Frenchfr3320Frenchfr3321Frenchfr3322Frenchfr3323Frenchfr3324Frenchfr3325Frenchfr3326Frenchfr3327Frenchfr3328Frenchfr3329Frenchfr333Frenchfr3330Frenchfr3331Frenchfr3332Frenchfr3333Frenchfr3334Frenchfr3335Frenchfr3336Frenchfr3337Frenchfr3338Frenchfr3339Frenchfr334Frenchfr3340Frenchfr3341Frenchfr3342Frenchfr3343Frenchfr3344Frenchfr3345Frenchfr3346Frenchfr3347Frenchfr3348Frenchfr3349Frenchfr335Frenchfr3350Frenchfr3351Frenchfr3352Frenchfr3353Frenchfr3354Frenchfr3355Frenchfr3356Frenchfr3357Frenchfr3358Frenchfr3359Frenchfr336Frenchfr3360Frenchfr3361Frenchfr3362Frenchfr3363Frenchfr3364Frenchfr3365Frenchfr3366Frenchfr3367Frenchfr3368Frenchfr3369Frenchfr337Frenchfr3370Frenchfr3371Frenchfr3372Frenchfr3373Frenchfr3374Frenchfr3375Frenchfr3376Frenchfr3377Frenchfr3378Frenchfr3379Frenchfr338Frenchfr3380Frenchfr3381Frenchfr3382Frenchfr3383Frenchfr3384Frenchfr3385Frenchfr3386Frenchfr3387Frenchfr3388Frenchfr3389Frenchfr339Frenchfr3390Frenchfr3391Frenchfr3392Frenchfr3393Frenchfr3394Frenchfr3395Frenchfr3396Frenchfr3397Frenchfr3398Frenchfr3399Frenchfr34Frenchfr340Frenchfr3400Frenchfr3401Frenchfr3402Frenchfr3403Frenchfr3404Frenchfr3405Frenchfr3406Frenchfr3407Frenchfr3408Frenchfr3409Frenchfr341Frenchfr3410Frenchfr3411Frenchfr3412Frenchfr3413Frenchfr3414Frenchfr3415Frenchfr3416Frenchfr3417Frenchfr3418Frenchfr3419Frenchfr342Frenchfr3420Frenchfr3421Frenchfr3422Frenchfr3423Frenchfr3424Frenchfr3425Frenchfr3426Frenchfr3427Frenchfr3428Frenchfr3429Frenchfr343Frenchfr3430Frenchfr3431Frenchfr3432Frenchfr3433Frenchfr3434Frenchfr3435Frenchfr3436Frenchfr3437Frenchfr3438Frenchfr3439Frenchfr344Frenchfr3440Frenchfr3441Frenchfr3442Frenchfr3443Frenchfr3444Frenchfr3445Frenchfr3446Frenchfr3447Frenchfr3448Frenchfr3449Frenchfr345Frenchfr3450Frenchfr3451Frenchfr3452Frenchfr3453Frenchfr3454Frenchfr3455Frenchfr3456Frenchfr3457Frenchfr3458Frenchfr3459Frenchfr346Frenchfr3460Frenchfr3461Frenchfr3462Frenchfr3463Frenchfr3464Frenchfr3465Frenchfr3466Frenchfr3467Frenchfr3468Frenchfr3469Frenchfr347Frenchfr3470Frenchfr3471Frenchfr3472Frenchfr3473Frenchfr3474Frenchfr3475Frenchfr3476Frenchfr3477Frenchfr3478Frenchfr3479Frenchfr348Frenchfr3480Frenchfr3481Frenchfr3482Frenchfr3483Frenchfr3484Frenchfr3485Frenchfr3486Frenchfr3487Frenchfr3488Frenchfr3489Frenchfr349Frenchfr3490Frenchfr3491Frenchfr3492Frenchfr3493Frenchfr3494Frenchfr3495Frenchfr3496Frenchfr3497Frenchfr3498Frenchfr3499Frenchfr35Frenchfr350Frenchfr3500Frenchfr3501Frenchfr3502Frenchfr3503Frenchfr3504Frenchfr3505Frenchfr3506Frenchfr3507Frenchfr3508Frenchfr3509Frenchfr351Frenchfr3510Frenchfr3511Frenchfr3512Frenchfr3513Frenchfr3514Frenchfr3515Frenchfr3516Frenchfr3517Frenchfr3518Frenchfr3519Frenchfr352Frenchfr3520Frenchfr3521Frenchfr3522Frenchfr3523Frenchfr3524Frenchfr3525Frenchfr3526Frenchfr3527Frenchfr3528Frenchfr3529Frenchfr353Frenchfr3530Frenchfr3531Frenchfr3532Frenchfr3533Frenchfr3534Frenchfr3535Frenchfr3536Frenchfr3537Frenchfr3538Frenchfr3539Frenchfr354Frenchfr3540Frenchfr3541Frenchfr3542Frenchfr3543Frenchfr3544Frenchfr3545Frenchfr3546Frenchfr3547Frenchfr3548Frenchfr3549Frenchfr355Frenchfr3550Frenchfr3551Frenchfr3552Frenchfr3553Frenchfr3554Frenchfr3555Frenchfr3556Frenchfr3557Frenchfr3558Frenchfr3559Frenchfr356Frenchfr3560Frenchfr3561Frenchfr3562Frenchfr3563Frenchfr3564Frenchfr3565Frenchfr3566Frenchfr3567Frenchfr3568Frenchfr3569Frenchfr357Frenchfr3570Frenchfr3571Frenchfr3572Frenchfr3573Frenchfr3574Frenchfr3575Frenchfr3576Frenchfr3577Frenchfr3578Frenchfr3579Frenchfr358Frenchfr3580Frenchfr3581Frenchfr3582Frenchfr3583Frenchfr3584Frenchfr3585Frenchfr3586Frenchfr3587Frenchfr3588Frenchfr3589Frenchfr359Frenchfr3590Frenchfr3591Frenchfr3592Frenchfr3593Frenchfr3594Frenchfr3595Frenchfr3596Frenchfr3597Frenchfr3598Frenchfr3599Frenchfr36Frenchfr360Frenchfr3600Frenchfr3601Frenchfr3602Frenchfr3603Frenchfr3604Frenchfr3605Frenchfr3606Frenchfr3607Frenchfr3608Frenchfr3609Frenchfr361Frenchfr3610Frenchfr3611Frenchfr3612Frenchfr3613Frenchfr3614Frenchfr3615Frenchfr3616Frenchfr3617Frenchfr3618Frenchfr3619Frenchfr362Frenchfr3620Frenchfr3621Frenchfr3622Frenchfr3623Frenchfr3624Frenchfr3625Frenchfr3626Frenchfr3627Frenchfr3628Frenchfr3629Frenchfr363Frenchfr3630Frenchfr3631Frenchfr3632Frenchfr3633Frenchfr3634Frenchfr3635Frenchfr3636Frenchfr3637Frenchfr3638Frenchfr3639Frenchfr364Frenchfr3640Frenchfr3641Frenchfr3642Frenchfr3643Frenchfr3644Frenchfr3645Frenchfr3646Frenchfr3647Frenchfr3648Frenchfr3649Frenchfr365Frenchfr3650Frenchfr3651Frenchfr3652Frenchfr3653Frenchfr3654Frenchfr3655Frenchfr3656Frenchfr3657Frenchfr3658Frenchfr3659Frenchfr366Frenchfr3660Frenchfr3661Frenchfr3662Frenchfr3663Frenchfr3664Frenchfr3665Frenchfr3666Frenchfr3667Frenchfr3668Frenchfr3669Frenchfr367Frenchfr3670Frenchfr3671Frenchfr3672Frenchfr3673Frenchfr3674Frenchfr3675Frenchfr3676Frenchfr3677Frenchfr3678Frenchfr3679Frenchfr368Frenchfr3680Frenchfr3681Frenchfr3682Frenchfr3683Frenchfr3684Frenchfr3685Frenchfr3686Frenchfr3687Frenchfr3688Frenchfr3689Frenchfr369Frenchfr3690Frenchfr3691Frenchfr3692Frenchfr3693Frenchfr3694Frenchfr3695Frenchfr3696Frenchfr3697Frenchfr3698Frenchfr3699Frenchfr37Frenchfr370Frenchfr3700Frenchfr3701Frenchfr3702Frenchfr3703Frenchfr3704Frenchfr3705Frenchfr3706Frenchfr3707Frenchfr3708Frenchfr3709Frenchfr371Frenchfr3710Frenchfr3711Frenchfr3712Frenchfr3713Frenchfr3714Frenchfr3715Frenchfr3716Frenchfr3717Frenchfr3718Frenchfr3719Frenchfr372Frenchfr3720Frenchfr3721Frenchfr3722Frenchfr3723Frenchfr3724Frenchfr3725Frenchfr3726Frenchfr3727Frenchfr3728Frenchfr3729Frenchfr373Frenchfr3730Frenchfr3731Frenchfr3732Frenchfr3733Frenchfr3734Frenchfr3735Frenchfr3736Frenchfr3737Frenchfr3738Frenchfr3739Frenchfr374Frenchfr3740Frenchfr3741Frenchfr3742Frenchfr3743Frenchfr3744Frenchfr3745Frenchfr3746Frenchfr3747Frenchfr3748Frenchfr3749Frenchfr375Frenchfr3750Frenchfr3751Frenchfr3752Frenchfr3753Frenchfr3754Frenchfr3755Frenchfr3756Frenchfr3757Frenchfr3758Frenchfr3759Frenchfr376Frenchfr3760Frenchfr3761Frenchfr3762Frenchfr3763Frenchfr3764Frenchfr3765Frenchfr3766Frenchfr3767Frenchfr3768Frenchfr3769Frenchfr377Frenchfr3770Frenchfr3771Frenchfr3772Frenchfr3773Frenchfr3774Frenchfr3775Frenchfr3776Frenchfr3777Frenchfr3778Frenchfr3779Frenchfr378Frenchfr3780Frenchfr3781Frenchfr3782Frenchfr3783Frenchfr3784Frenchfr3785Frenchfr3786Frenchfr3787Frenchfr3788Frenchfr3789Frenchfr379Frenchfr3790Frenchfr3791Frenchfr3792Frenchfr3793Frenchfr3794Frenchfr3795Frenchfr3796Frenchfr3797Frenchfr3798Frenchfr3799Frenchfr38Frenchfr380Frenchfr3800Frenchfr3801Frenchfr3802Frenchfr3803Frenchfr3804Frenchfr3805Frenchfr3806Frenchfr3807Frenchfr3808Frenchfr3809Frenchfr381Frenchfr3810Frenchfr3811Frenchfr3812Frenchfr3813Frenchfr3814Frenchfr3815Frenchfr3816Frenchfr3817Frenchfr3818Frenchfr3819Frenchfr382Frenchfr3820Frenchfr3821Frenchfr3822Frenchfr3823Frenchfr3824Frenchfr3825Frenchfr3826Frenchfr3827Frenchfr3828Frenchfr3829Frenchfr383Frenchfr3830Frenchfr3831Frenchfr3832Frenchfr3833Frenchfr3834Frenchfr3835Frenchfr3836Frenchfr3837Frenchfr3838Frenchfr3839Frenchfr384Frenchfr3840Frenchfr3841Frenchfr3842Frenchfr3843Frenchfr3844Frenchfr3845Frenchfr3846Frenchfr3847Frenchfr3848Frenchfr3849Frenchfr385Frenchfr3850Frenchfr3851Frenchfr3852Frenchfr3853Frenchfr3854Frenchfr3855Frenchfr3856Frenchfr3857Frenchfr3858Frenchfr3859Frenchfr386Frenchfr3860Frenchfr3861Frenchfr3862Frenchfr3863Frenchfr3864Frenchfr3865Frenchfr3866Frenchfr3867Frenchfr3868Frenchfr3869Frenchfr387Frenchfr3870Frenchfr3871Frenchfr3872Frenchfr3873Frenchfr3874Frenchfr3875Frenchfr3876Frenchfr3877Frenchfr3878Frenchfr3879Frenchfr388Frenchfr3880Frenchfr3881Frenchfr3882Frenchfr3883Frenchfr3884Frenchfr3885Frenchfr3886Frenchfr3887Frenchfr3888Frenchfr3889Frenchfr389Frenchfr3890Frenchfr3891Frenchfr3892Frenchfr3893Frenchfr3894Frenchfr3895Frenchfr3896Frenchfr3897Frenchfr3898Frenchfr3899Frenchfr39Frenchfr390Frenchfr3900Frenchfr3901Frenchfr3902Frenchfr3903Frenchfr3904Frenchfr3905Frenchfr3906Frenchfr3907Frenchfr3908Frenchfr3909Frenchfr391Frenchfr3910Frenchfr3911Frenchfr3912Frenchfr3913Frenchfr3914Frenchfr3915Frenchfr3916Frenchfr3917Frenchfr3918Frenchfr3919Frenchfr392Frenchfr3920Frenchfr3921Frenchfr3922Frenchfr3923Frenchfr3924Frenchfr3925Frenchfr3926Frenchfr3927Frenchfr3928Frenchfr3929Frenchfr393Frenchfr3930Frenchfr3931Frenchfr3932Frenchfr3933Frenchfr3934Frenchfr3935Frenchfr3936Frenchfr3937Frenchfr3938Frenchfr3939Frenchfr394Frenchfr3940Frenchfr3941Frenchfr3942Frenchfr3943Frenchfr3944Frenchfr3945Frenchfr3946Frenchfr3947Frenchfr3948Frenchfr3949Frenchfr395Frenchfr3950Frenchfr3951Frenchfr3952Frenchfr3953Frenchfr3954Frenchfr3955Frenchfr3956Frenchfr3957Frenchfr3958Frenchfr3959Frenchfr396Frenchfr3960Frenchfr3961Frenchfr3962Frenchfr3963Frenchfr3964Frenchfr3965Frenchfr3966Frenchfr3967Frenchfr3968Frenchfr3969Frenchfr397Frenchfr3970Frenchfr3971Frenchfr3972Frenchfr3973Frenchfr3974Frenchfr3975Frenchfr3976Frenchfr3977Frenchfr3978Frenchfr3979Frenchfr398Frenchfr3980Frenchfr3981Frenchfr3982Frenchfr3983Frenchfr3984Frenchfr3985Frenchfr3986Frenchfr3987Frenchfr3988Frenchfr3989Frenchfr399Frenchfr3990Frenchfr3991Frenchfr3992Frenchfr3993Frenchfr3994Frenchfr3995Frenchfr3996Frenchfr3997Frenchfr3998Frenchfr3999Frenchfr4Frenchfr40Frenchfr400Frenchfr4000Frenchfr4001Frenchfr4002Frenchfr4003Frenchfr4004Frenchfr4005Frenchfr4006Frenchfr4007Frenchfr4008Frenchfr4009Frenchfr401Frenchfr4010Frenchfr4011Frenchfr4012Frenchfr4013Frenchfr4014Frenchfr4015Frenchfr4016Frenchfr4017Frenchfr4018Frenchfr4019Frenchfr402Frenchfr4020Frenchfr4021Frenchfr4022Frenchfr4023Frenchfr4024Frenchfr4025Frenchfr4026Frenchfr4027Frenchfr4028Frenchfr4029Frenchfr403Frenchfr4030Frenchfr4031Frenchfr4032Frenchfr4033Frenchfr4034Frenchfr4035Frenchfr4036Frenchfr4037Frenchfr4038Frenchfr4039Frenchfr404Frenchfr4040Frenchfr4041Frenchfr4042Frenchfr4043Frenchfr4044Frenchfr4045Frenchfr4046Frenchfr4047Frenchfr4048Frenchfr4049Frenchfr405Frenchfr4050Frenchfr4051Frenchfr4052Frenchfr4053Frenchfr4054Frenchfr4055Frenchfr4056Frenchfr4057Frenchfr4058Frenchfr4059Frenchfr406Frenchfr4060Frenchfr4061Frenchfr4062Frenchfr4063Frenchfr4064Frenchfr4065Frenchfr4066Frenchfr4067Frenchfr4068Frenchfr4069Frenchfr407Frenchfr4070Frenchfr4071Frenchfr4072Frenchfr4073Frenchfr4074Frenchfr4075Frenchfr4076Frenchfr4077Frenchfr4078Frenchfr4079Frenchfr408Frenchfr4080Frenchfr4081Frenchfr4082Frenchfr4083Frenchfr4084Frenchfr4085Frenchfr4086Frenchfr4087Frenchfr4088Frenchfr4089Frenchfr409Frenchfr4090Frenchfr4091Frenchfr4092Frenchfr4093Frenchfr4094Frenchfr4095Frenchfr4096Frenchfr4097Frenchfr4098Frenchfr4099Frenchfr41Frenchfr410Frenchfr4100Frenchfr4101Frenchfr4102Frenchfr4103Frenchfr4104Frenchfr4105Frenchfr4106Frenchfr4107Frenchfr4108Frenchfr4109Frenchfr411Frenchfr4110Frenchfr4111Frenchfr4112Frenchfr4113Frenchfr4114Frenchfr4115Frenchfr4116Frenchfr4117Frenchfr4118Frenchfr4119Frenchfr412Frenchfr4120Frenchfr4121Frenchfr4122Frenchfr4123Frenchfr4124Frenchfr4125Frenchfr4126Frenchfr4127Frenchfr4128Frenchfr4129Frenchfr413Frenchfr4130Frenchfr4131Frenchfr4132Frenchfr4133Frenchfr4134Frenchfr4135Frenchfr4136Frenchfr4137Frenchfr4138Frenchfr4139Frenchfr414Frenchfr4140Frenchfr4141Frenchfr4142Frenchfr4143Frenchfr4144Frenchfr4145Frenchfr4146Frenchfr4147Frenchfr4148Frenchfr4149Frenchfr415Frenchfr4150Frenchfr4151Frenchfr4152Frenchfr4153Frenchfr4154Frenchfr4155Frenchfr4156Frenchfr4157Frenchfr4158Frenchfr4159Frenchfr416Frenchfr4160Frenchfr4161Frenchfr4162Frenchfr4163Frenchfr4164Frenchfr4165Frenchfr4166Frenchfr4167Frenchfr4168Frenchfr4169Frenchfr417Frenchfr4170Frenchfr4171Frenchfr4172Frenchfr4173Frenchfr4174Frenchfr4175Frenchfr4176Frenchfr4177Frenchfr4178Frenchfr4179Frenchfr418Frenchfr4180Frenchfr4181Frenchfr4182Frenchfr4183Frenchfr4184Frenchfr4185Frenchfr4186Frenchfr4187Frenchfr4188Frenchfr4189Frenchfr419Frenchfr4190Frenchfr4191Frenchfr4192Frenchfr4193Frenchfr4194Frenchfr4195Frenchfr4196Frenchfr4197Frenchfr4198Frenchfr4199Frenchfr42Frenchfr420Frenchfr4200Frenchfr4201Frenchfr4202Frenchfr4203Frenchfr4204Frenchfr4205Frenchfr4206Frenchfr4207Frenchfr4208Frenchfr4209Frenchfr421Frenchfr4210Frenchfr4211Frenchfr4212Frenchfr4213Frenchfr4214Frenchfr4215Frenchfr4216Frenchfr4217Frenchfr4218Frenchfr4219Frenchfr422Frenchfr4220Frenchfr4221Frenchfr4222Frenchfr4223Frenchfr4224Frenchfr4225Frenchfr4226Frenchfr4227Frenchfr4228Frenchfr4229Frenchfr423Frenchfr4230Frenchfr4231Frenchfr4232Frenchfr4233Frenchfr4234Frenchfr4235Frenchfr4236Frenchfr4237Frenchfr4238Frenchfr4239Frenchfr424Frenchfr4240Frenchfr4241Frenchfr4242Frenchfr4243Frenchfr4244Frenchfr4245Frenchfr4246Frenchfr4247Frenchfr4248Frenchfr4249Frenchfr425Frenchfr4250Frenchfr4251Frenchfr4252Frenchfr4253Frenchfr4254Frenchfr4255Frenchfr4256Frenchfr4257Frenchfr4258Frenchfr4259Frenchfr426Frenchfr4260Frenchfr4261Frenchfr4262Frenchfr4263Frenchfr4264Frenchfr4265Frenchfr4266Frenchfr4267Frenchfr4268Frenchfr4269Frenchfr427Frenchfr4270Frenchfr4271Frenchfr4272Frenchfr4273Frenchfr4274Frenchfr4275Frenchfr4276Frenchfr4277Frenchfr4278Frenchfr4279Frenchfr428Frenchfr4280Frenchfr4281Frenchfr4282Frenchfr4283Frenchfr4284Frenchfr4285Frenchfr4286Frenchfr4287Frenchfr4288Frenchfr4289Frenchfr429Frenchfr4290Frenchfr4291Frenchfr4292Frenchfr4293Frenchfr4294Frenchfr4295Frenchfr4296Frenchfr4297Frenchfr4298Frenchfr4299Frenchfr43Frenchfr430Frenchfr4300Frenchfr4301Frenchfr4302Frenchfr4303Frenchfr4304Frenchfr4305Frenchfr4306Frenchfr4307Frenchfr4308Frenchfr4309Frenchfr431Frenchfr4310Frenchfr4311Frenchfr4312Frenchfr4313Frenchfr4314Frenchfr4315Frenchfr4316Frenchfr4317Frenchfr4318Frenchfr4319Frenchfr432Frenchfr4320Frenchfr4321Frenchfr4322Frenchfr4323Frenchfr4324Frenchfr4325Frenchfr4326Frenchfr4327Frenchfr4328Frenchfr4329Frenchfr433Frenchfr4330Frenchfr4331Frenchfr4332Frenchfr4333Frenchfr4334Frenchfr4335Frenchfr4336Frenchfr4337Frenchfr4338Frenchfr4339Frenchfr434Frenchfr4340Frenchfr4341Frenchfr4342Frenchfr4343Frenchfr4344Frenchfr4345Frenchfr4346Frenchfr4347Frenchfr4348Frenchfr4349Frenchfr435Frenchfr4350Frenchfr4351Frenchfr4352Frenchfr4353Frenchfr4354Frenchfr4355Frenchfr4356Frenchfr4357Frenchfr4358Frenchfr4359Frenchfr436Frenchfr4360Frenchfr4361Frenchfr4362Frenchfr4363Frenchfr4364Frenchfr4365Frenchfr4366Frenchfr4367Frenchfr4368Frenchfr4369Frenchfr437Frenchfr4370Frenchfr4371Frenchfr4372Frenchfr4373Frenchfr4374Frenchfr4375Frenchfr4376Frenchfr4377Frenchfr4378Frenchfr4379Frenchfr438Frenchfr4380Frenchfr4381Frenchfr4382Frenchfr4383Frenchfr4384Frenchfr4385Frenchfr4386Frenchfr4387Frenchfr4388Frenchfr4389Frenchfr439Frenchfr4390Frenchfr4391Frenchfr4392Frenchfr4393Frenchfr4394Frenchfr4395Frenchfr4396Frenchfr4397Frenchfr4398Frenchfr4399Frenchfr44Frenchfr440Frenchfr4400Frenchfr4401Frenchfr4402Frenchfr4403Frenchfr4404Frenchfr4405Frenchfr4406Frenchfr4407Frenchfr4408Frenchfr4409Frenchfr441Frenchfr4410Frenchfr4411Frenchfr4412Frenchfr4413Frenchfr4414Frenchfr4415Frenchfr4416Frenchfr4417Frenchfr4418Frenchfr4419Frenchfr442Frenchfr4420Frenchfr4421Frenchfr4422Frenchfr4423Frenchfr4424Frenchfr4425Frenchfr4426Frenchfr4427Frenchfr4428Frenchfr4429Frenchfr443Frenchfr4430Frenchfr4431Frenchfr4432Frenchfr4433Frenchfr4434Frenchfr4435Frenchfr4436Frenchfr4437Frenchfr4438Frenchfr4439Frenchfr444Frenchfr4440Frenchfr4441Frenchfr4442Frenchfr4443Frenchfr4444Frenchfr4445Frenchfr4446Frenchfr4447Frenchfr4448Frenchfr4449Frenchfr445Frenchfr4450Frenchfr4451Frenchfr4452Frenchfr4453Frenchfr4454Frenchfr4455Frenchfr4456Frenchfr4457Frenchfr4458Frenchfr4459Frenchfr446Frenchfr4460Frenchfr4461Frenchfr4462Frenchfr4463Frenchfr4464Frenchfr4465Frenchfr4466Frenchfr4467Frenchfr4468Frenchfr4469Frenchfr447Frenchfr4470Frenchfr4471Frenchfr4472Frenchfr4473Frenchfr4474Frenchfr4475Frenchfr4476Frenchfr4477Frenchfr4478Frenchfr4479Frenchfr448Frenchfr4480Frenchfr4481Frenchfr4482Frenchfr4483Frenchfr4484Frenchfr4485Frenchfr4486Frenchfr4487Frenchfr4488Frenchfr4489Frenchfr449Frenchfr4490Frenchfr4491Frenchfr4492Frenchfr4493Frenchfr4494Frenchfr4495Frenchfr4496Frenchfr4497Frenchfr4498Frenchfr4499Frenchfr45Frenchfr450Frenchfr4500Frenchfr4501Frenchfr4502Frenchfr4503Frenchfr4504Frenchfr4505Frenchfr4506Frenchfr4507Frenchfr4508Frenchfr4509Frenchfr451Frenchfr4510Frenchfr4511Frenchfr4512Frenchfr4513Frenchfr4514Frenchfr4515Frenchfr4516Frenchfr4517Frenchfr4518Frenchfr4519Frenchfr452Frenchfr4520Frenchfr4521Frenchfr4522Frenchfr4523Frenchfr4524Frenchfr4525Frenchfr4526Frenchfr4527Frenchfr4528Frenchfr4529Frenchfr453Frenchfr4530Frenchfr4531Frenchfr4532Frenchfr4533Frenchfr4534Frenchfr4535Frenchfr4536Frenchfr4537Frenchfr4538Frenchfr4539Frenchfr454Frenchfr4540Frenchfr4541Frenchfr4542Frenchfr4543Frenchfr4544Frenchfr4545Frenchfr4546Frenchfr4547Frenchfr4548Frenchfr4549Frenchfr455Frenchfr4550Frenchfr4551Frenchfr4552Frenchfr4553Frenchfr4554Frenchfr4555Frenchfr4556Frenchfr4557Frenchfr4558Frenchfr4559Frenchfr456Frenchfr4560Frenchfr4561Frenchfr4562Frenchfr4563Frenchfr4564Frenchfr4565Frenchfr4566Frenchfr4567Frenchfr4568Frenchfr4569Frenchfr457Frenchfr4570Frenchfr4571Frenchfr4572Frenchfr4573Frenchfr4574Frenchfr4575Frenchfr4576Frenchfr4577Frenchfr4578Frenchfr4579Frenchfr458Frenchfr4580Frenchfr4581Frenchfr4582Frenchfr4583Frenchfr4584Frenchfr4585Frenchfr4586Frenchfr4587Frenchfr4588Frenchfr4589Frenchfr459Frenchfr4590Frenchfr4591Frenchfr4592Frenchfr4593Frenchfr4594Frenchfr4595Frenchfr4596Frenchfr4597Frenchfr4598Frenchfr4599Frenchfr46Frenchfr460Frenchfr4600Frenchfr4601Frenchfr4602Frenchfr4603Frenchfr4604Frenchfr4605Frenchfr4606Frenchfr4607Frenchfr4608Frenchfr4609Frenchfr461Frenchfr4610Frenchfr4611Frenchfr4612Frenchfr4613Frenchfr4614Frenchfr4615Frenchfr4616Frenchfr4617Frenchfr4618Frenchfr4619Frenchfr462Frenchfr4620Frenchfr4621Frenchfr4622Frenchfr4623Frenchfr4624Frenchfr4625Frenchfr4626Frenchfr4627Frenchfr4628Frenchfr4629Frenchfr463Frenchfr4630Frenchfr4631Frenchfr4632Frenchfr4633Frenchfr4634Frenchfr4635Frenchfr4636Frenchfr4637Frenchfr4638Frenchfr4639Frenchfr464Frenchfr4640Frenchfr4641Frenchfr4642Frenchfr4643Frenchfr4644Frenchfr4645Frenchfr4646Frenchfr4647Frenchfr4648Frenchfr4649Frenchfr465Frenchfr4650Frenchfr4651Frenchfr4652Frenchfr4653Frenchfr4654Frenchfr4655Frenchfr4656Frenchfr4657Frenchfr4658Frenchfr4659Frenchfr466Frenchfr4660Frenchfr4661Frenchfr4662Frenchfr4663Frenchfr4664Frenchfr4665Frenchfr4666Frenchfr4667Frenchfr4668Frenchfr4669Frenchfr467Frenchfr4670Frenchfr4671Frenchfr4672Frenchfr4673Frenchfr4674Frenchfr4675Frenchfr4676Frenchfr4677Frenchfr4678Frenchfr4679Frenchfr468Frenchfr4680Frenchfr4681Frenchfr4682Frenchfr4683Frenchfr4684Frenchfr4685Frenchfr4686Frenchfr4687Frenchfr4688Frenchfr4689Frenchfr469Frenchfr4690Frenchfr4691Frenchfr4692Frenchfr4693Frenchfr4694Frenchfr4695Frenchfr4696Frenchfr4697Frenchfr4698Frenchfr4699Frenchfr47Frenchfr470Frenchfr4700Frenchfr4701Frenchfr4702Frenchfr4703Frenchfr4704Frenchfr4705Frenchfr4706Frenchfr4707Frenchfr4708Frenchfr4709Frenchfr471Frenchfr4710Frenchfr4711Frenchfr4712Frenchfr4713Frenchfr4714Frenchfr4715Frenchfr4716Frenchfr4717Frenchfr4718Frenchfr4719Frenchfr472Frenchfr4720Frenchfr4721Frenchfr4722Frenchfr4723Frenchfr4724Frenchfr4725Frenchfr4726Frenchfr4727Frenchfr4728Frenchfr4729Frenchfr473Frenchfr4730Frenchfr4731Frenchfr4732Frenchfr4733Frenchfr4734Frenchfr4735Frenchfr4736Frenchfr4737Frenchfr4738Frenchfr4739Frenchfr474Frenchfr4740Frenchfr4741Frenchfr4742Frenchfr4743Frenchfr4744Frenchfr4745Frenchfr4746Frenchfr4747Frenchfr4748Frenchfr4749Frenchfr475Frenchfr4750Frenchfr4751Frenchfr4752Frenchfr4753Frenchfr4754Frenchfr4755Frenchfr4756Frenchfr4757Frenchfr4758Frenchfr4759Frenchfr476Frenchfr4760Frenchfr4761Frenchfr4762Frenchfr4763Frenchfr4764Frenchfr4765Frenchfr4766Frenchfr4767Frenchfr4768Frenchfr4769Frenchfr477Frenchfr4770Frenchfr4771Frenchfr4772Frenchfr4773Frenchfr4774Frenchfr4775Frenchfr4776Frenchfr4777Frenchfr4778Frenchfr4779Frenchfr478Frenchfr4780Frenchfr4781Frenchfr4782Frenchfr4783Frenchfr4784Frenchfr4785Frenchfr4786Frenchfr4787Frenchfr4788Frenchfr4789Frenchfr479Frenchfr4790Frenchfr4791Frenchfr4792Frenchfr4793Frenchfr4794Frenchfr4795Frenchfr4796Frenchfr4797Frenchfr4798Frenchfr4799Frenchfr48Frenchfr480Frenchfr4800Frenchfr4801Frenchfr4802Frenchfr4803Frenchfr4804Frenchfr4805Frenchfr4806Frenchfr4807Frenchfr4808Frenchfr4809Frenchfr481Frenchfr4810Frenchfr4811Frenchfr4812Frenchfr4813Frenchfr4814Frenchfr4815Frenchfr4816Frenchfr4817Frenchfr4818Frenchfr4819Frenchfr482Frenchfr4820Frenchfr4821Frenchfr4822Frenchfr4823Frenchfr4824Frenchfr4825Frenchfr4826Frenchfr4827Frenchfr4828Frenchfr4829Frenchfr483Frenchfr4830Frenchfr4831Frenchfr4832Frenchfr4833Frenchfr4834Frenchfr4835Frenchfr4836Frenchfr4837Frenchfr4838Frenchfr4839Frenchfr484Frenchfr4840Frenchfr4841Frenchfr4842Frenchfr4843Frenchfr4844Frenchfr4845Frenchfr4846Frenchfr4847Frenchfr4848Frenchfr4849Frenchfr485Frenchfr4850Frenchfr4851Frenchfr4852Frenchfr4853Frenchfr4854Frenchfr4855Frenchfr4856Frenchfr4857Frenchfr4858Frenchfr4859Frenchfr486Frenchfr4860Frenchfr4861Frenchfr4862Frenchfr4863Frenchfr4864Frenchfr4865Frenchfr4866Frenchfr4867Frenchfr4868Frenchfr4869Frenchfr487Frenchfr4870Frenchfr4871Frenchfr4872Frenchfr4873Frenchfr4874Frenchfr4875Frenchfr4876Frenchfr4877Frenchfr4878Frenchfr4879Frenchfr488Frenchfr4880Frenchfr4881Frenchfr4882Frenchfr4883Frenchfr4884Frenchfr4885Frenchfr4886Frenchfr4887Frenchfr4888Frenchfr4889Frenchfr489Frenchfr4890Frenchfr4891Frenchfr4892Frenchfr4893Frenchfr4894Frenchfr4895Frenchfr4896Frenchfr4897Frenchfr4898Frenchfr4899Frenchfr49Frenchfr490Frenchfr4900Frenchfr4901Frenchfr4902Frenchfr4903Frenchfr4904Frenchfr4905Frenchfr4906Frenchfr4907Frenchfr4908Frenchfr4909Frenchfr491Frenchfr4910Frenchfr4911Frenchfr4912Frenchfr4913Frenchfr4914Frenchfr4915Frenchfr4916Frenchfr4917Frenchfr4918Frenchfr4919Frenchfr492Frenchfr4920Frenchfr4921Frenchfr4922Frenchfr4923Frenchfr4924Frenchfr4925Frenchfr4926Frenchfr4927Frenchfr4928Frenchfr4929Frenchfr493Frenchfr4930Frenchfr4931Frenchfr4932Frenchfr4933Frenchfr4934Frenchfr4935Frenchfr4936Frenchfr4937Frenchfr4938Frenchfr4939Frenchfr494Frenchfr4940Frenchfr4941Frenchfr4942Frenchfr4943Frenchfr4944Frenchfr4945Frenchfr4946Frenchfr4947Frenchfr4948Frenchfr4949Frenchfr495Frenchfr4950Frenchfr4951Frenchfr4952Frenchfr4953Frenchfr4954Frenchfr4955Frenchfr4956Frenchfr4957Frenchfr4958Frenchfr4959Frenchfr496Frenchfr4960Frenchfr4961Frenchfr4962Frenchfr4963Frenchfr4964Frenchfr4965Frenchfr4966Frenchfr4967Frenchfr4968Frenchfr4969Frenchfr497Frenchfr4970Frenchfr4971Frenchfr4972Frenchfr4973Frenchfr4974Frenchfr4975Frenchfr4976Frenchfr4977Frenchfr4978Frenchfr4979Frenchfr498Frenchfr4980Frenchfr4981Frenchfr4982Frenchfr4983Frenchfr4984Frenchfr4985Frenchfr4986Frenchfr4987Frenchfr4988Frenchfr4989Frenchfr499Frenchfr4990Frenchfr4991Frenchfr4992Frenchfr4993Frenchfr4994Frenchfr4995Frenchfr4996Frenchfr4997Frenchfr4998Frenchfr4999Frenchfr5Frenchfr50Frenchfr500Frenchfr5000Frenchfr5001Frenchfr5002Frenchfr5003Frenchfr5004Frenchfr5005Frenchfr5006Frenchfr5007Frenchfr5008Frenchfr5009Frenchfr501Frenchfr5010Frenchfr5011Frenchfr5012Frenchfr5013Frenchfr5014Frenchfr5015Frenchfr5016Frenchfr5017Frenchfr5018Frenchfr5019Frenchfr502Frenchfr5020Frenchfr5021Frenchfr5022Frenchfr5023Frenchfr5024Frenchfr5025Frenchfr5026Frenchfr5027Frenchfr5028Frenchfr5029Frenchfr503Frenchfr5030Frenchfr5031Frenchfr5032Frenchfr5033Frenchfr5034Frenchfr5035Frenchfr5036Frenchfr5037Frenchfr5038Frenchfr5039Frenchfr504Frenchfr5040Frenchfr5041Frenchfr5042Frenchfr5043Frenchfr5044Frenchfr5045Frenchfr5046Frenchfr5047Frenchfr5048Frenchfr5049Frenchfr505Frenchfr5050Frenchfr5051Frenchfr5052Frenchfr5053Frenchfr5054Frenchfr5055Frenchfr5056Frenchfr5057Frenchfr5058Frenchfr5059Frenchfr506Frenchfr5060Frenchfr5061Frenchfr5062Frenchfr5063Frenchfr5064Frenchfr5065Frenchfr5066Frenchfr5067Frenchfr5068Frenchfr5069Frenchfr507Frenchfr5070Frenchfr5071Frenchfr5072Frenchfr5073Frenchfr5074Frenchfr5075Frenchfr5076Frenchfr5077Frenchfr5078Frenchfr5079Frenchfr508Frenchfr5080Frenchfr5081Frenchfr5082Frenchfr5083Frenchfr5084Frenchfr5085Frenchfr5086Frenchfr5087Frenchfr5088Frenchfr5089Frenchfr509Frenchfr5090Frenchfr5091Frenchfr5092Frenchfr5093Frenchfr5094Frenchfr5095Frenchfr5096Frenchfr5097Frenchfr5098Frenchfr5099Frenchfr51Frenchfr510Frenchfr5100Frenchfr5101Frenchfr5102Frenchfr5103Frenchfr5104Frenchfr5105Frenchfr5106Frenchfr5107Frenchfr5108Frenchfr5109Frenchfr511Frenchfr5110Frenchfr5111Frenchfr5112Frenchfr5113Frenchfr5114Frenchfr5115Frenchfr5116Frenchfr5117Frenchfr5118Frenchfr5119Frenchfr512Frenchfr5120Frenchfr5121Frenchfr5122Frenchfr5123Frenchfr5124Frenchfr5125Frenchfr5126Frenchfr5127Frenchfr5128Frenchfr5129Frenchfr513Frenchfr5130Frenchfr5131Frenchfr5132Frenchfr5133Frenchfr5134Frenchfr5135Frenchfr5136Frenchfr5137Frenchfr5138Frenchfr5139Frenchfr514Frenchfr5140Frenchfr5141Frenchfr5142Frenchfr5143Frenchfr5144Frenchfr5145Frenchfr5146Frenchfr5147Frenchfr5148Frenchfr5149Frenchfr515Frenchfr5150Frenchfr5151Frenchfr5152Frenchfr5153Frenchfr5154Frenchfr5155Frenchfr5156Frenchfr5157Frenchfr5158Frenchfr5159Frenchfr516Frenchfr5160Frenchfr5161Frenchfr5162Frenchfr5163Frenchfr5164Frenchfr5165Frenchfr5166Frenchfr5167Frenchfr5168Frenchfr5169Frenchfr517Frenchfr5170Frenchfr5171Frenchfr5172Frenchfr5173Frenchfr5174Frenchfr5175Frenchfr5176Frenchfr5177Frenchfr5178Frenchfr5179Frenchfr518Frenchfr5180Frenchfr5181Frenchfr5182Frenchfr5183Frenchfr5184Frenchfr5185Frenchfr5186Frenchfr5187Frenchfr5188Frenchfr5189Frenchfr519Frenchfr5190Frenchfr5191Frenchfr5192Frenchfr5193Frenchfr5194Frenchfr5195Frenchfr5196Frenchfr5197Frenchfr5198Frenchfr5199Frenchfr52Frenchfr520Frenchfr5200Frenchfr5201Frenchfr5202Frenchfr5203Frenchfr5204Frenchfr5205Frenchfr5206Frenchfr5207Frenchfr5208Frenchfr5209Frenchfr521Frenchfr5210Frenchfr5211Frenchfr5212Frenchfr5213Frenchfr5214Frenchfr5215Frenchfr5216Frenchfr5217Frenchfr5218Frenchfr5219Frenchfr522Frenchfr5220Frenchfr5221Frenchfr5222Frenchfr5223Frenchfr5224Frenchfr5225Frenchfr5226Frenchfr5227Frenchfr5228Frenchfr5229Frenchfr523Frenchfr5230Frenchfr5231Frenchfr5232Frenchfr5233Frenchfr5234Frenchfr5235Frenchfr5236Frenchfr5237Frenchfr5238Frenchfr5239Frenchfr524Frenchfr5240Frenchfr5241Frenchfr5242Frenchfr5243Frenchfr5244Frenchfr5245Frenchfr5246Frenchfr5247Frenchfr5248Frenchfr5249Frenchfr525Frenchfr5250Frenchfr5251Frenchfr5252Frenchfr5253Frenchfr5254Frenchfr5255Frenchfr5256Frenchfr5257Frenchfr5258Frenchfr5259Frenchfr526Frenchfr5260Frenchfr5261Frenchfr5262Frenchfr5263Frenchfr5264Frenchfr5265Frenchfr5266Frenchfr5267Frenchfr5268Frenchfr5269Frenchfr527Frenchfr5270Frenchfr5271Frenchfr5272Frenchfr5273Frenchfr5274Frenchfr5275Frenchfr5276Frenchfr5277Frenchfr5278Frenchfr5279Frenchfr528Frenchfr5280Frenchfr5281Frenchfr5282Frenchfr5283Frenchfr5284Frenchfr5285Frenchfr5286Frenchfr5287Frenchfr5288Frenchfr5289Frenchfr529Frenchfr5290Frenchfr5291Frenchfr5292Frenchfr5293Frenchfr5294Frenchfr5295Frenchfr5296Frenchfr5297Frenchfr5298Frenchfr5299Frenchfr53Frenchfr530Frenchfr5300Frenchfr5301Frenchfr5302Frenchfr5303Frenchfr5304Frenchfr5305Frenchfr5306Frenchfr5307Frenchfr5308Frenchfr5309Frenchfr531Frenchfr5310Frenchfr5311Frenchfr5312Frenchfr5313Frenchfr5314Frenchfr5315Frenchfr5316Frenchfr5317Frenchfr5318Frenchfr5319Frenchfr532Frenchfr5320Frenchfr5321Frenchfr5322Frenchfr5323Frenchfr5324Frenchfr5325Frenchfr5326Frenchfr5327Frenchfr5328Frenchfr5329Frenchfr533Frenchfr5330Frenchfr5331Frenchfr5332Frenchfr5333Frenchfr5334Frenchfr5335Frenchfr5336Frenchfr5337Frenchfr5338Frenchfr5339Frenchfr534Frenchfr5340Frenchfr5341Frenchfr5342Frenchfr5343Frenchfr5344Frenchfr5345Frenchfr5346Frenchfr5347Frenchfr5348Frenchfr5349Frenchfr535Frenchfr5350Frenchfr5351Frenchfr5352Frenchfr5353Frenchfr5354Frenchfr5355Frenchfr5356Frenchfr5357Frenchfr5358Frenchfr5359Frenchfr536Frenchfr5360Frenchfr5361Frenchfr5362Frenchfr5363Frenchfr5364Frenchfr5365Frenchfr5366Frenchfr5367Frenchfr5368Frenchfr5369Frenchfr537Frenchfr5370Frenchfr5371Frenchfr5372Frenchfr5373Frenchfr5374Frenchfr5375Frenchfr5376Frenchfr5377Frenchfr5378Frenchfr5379Frenchfr538Frenchfr5380Frenchfr5381Frenchfr5382Frenchfr5383Frenchfr5384Frenchfr5385Frenchfr5386Frenchfr5387Frenchfr5388Frenchfr5389Frenchfr539Frenchfr5390Frenchfr5391Frenchfr5392Frenchfr5393Frenchfr5394Frenchfr5395Frenchfr5396Frenchfr5397Frenchfr5398Frenchfr5399Frenchfr54Frenchfr540Frenchfr5400Frenchfr5401Frenchfr5402Frenchfr5403Frenchfr5404Frenchfr5405Frenchfr5406Frenchfr5407Frenchfr5408Frenchfr5409Frenchfr541Frenchfr5410Frenchfr5411Frenchfr5412Frenchfr5413Frenchfr5414Frenchfr5415Frenchfr5416Frenchfr5417Frenchfr5418Frenchfr5419Frenchfr542Frenchfr5420Frenchfr5421Frenchfr5422Frenchfr5423Frenchfr5424Frenchfr5425Frenchfr5426Frenchfr5427Frenchfr5428Frenchfr5429Frenchfr543Frenchfr5430Frenchfr5431Frenchfr5432Frenchfr5433Frenchfr5434Frenchfr5435Frenchfr5436Frenchfr5437Frenchfr5438Frenchfr5439Frenchfr544Frenchfr5440Frenchfr5441Frenchfr5442Frenchfr5443Frenchfr5444Frenchfr5445Frenchfr5446Frenchfr5447Frenchfr5448Frenchfr5449Frenchfr545Frenchfr5450Frenchfr5451Frenchfr5452Frenchfr5453Frenchfr5454Frenchfr5455Frenchfr5456Frenchfr5457Frenchfr5458Frenchfr5459Frenchfr546Frenchfr5460Frenchfr5461Frenchfr5462Frenchfr5463Frenchfr5464Frenchfr5465Frenchfr5466Frenchfr5467Frenchfr5468Frenchfr5469Frenchfr547Frenchfr5470Frenchfr5471Frenchfr5472Frenchfr5473Frenchfr5474Frenchfr5475Frenchfr5476Frenchfr5477Frenchfr5478Frenchfr5479Frenchfr548Frenchfr5480Frenchfr5481Frenchfr5482Frenchfr5483Frenchfr5484Frenchfr5485Frenchfr5486Frenchfr5487Frenchfr5488Frenchfr5489Frenchfr549Frenchfr5490Frenchfr5491Frenchfr5492Frenchfr5493Frenchfr5494Frenchfr5495Frenchfr5496Frenchfr5497Frenchfr5498Frenchfr5499Frenchfr55Frenchfr550Frenchfr5500Frenchfr5501Frenchfr5502Frenchfr5503Frenchfr5504Frenchfr5505Frenchfr5506Frenchfr5507Frenchfr5508Frenchfr5509Frenchfr551Frenchfr5510Frenchfr5511Frenchfr5512Frenchfr5513Frenchfr5514Frenchfr5515Frenchfr5516Frenchfr5517Frenchfr5518Frenchfr5519Frenchfr552Frenchfr5520Frenchfr5521Frenchfr5522Frenchfr5523Frenchfr5524Frenchfr5525Frenchfr5526Frenchfr5527Frenchfr5528Frenchfr5529Frenchfr553Frenchfr5530Frenchfr5531Frenchfr5532Frenchfr5533Frenchfr5534Frenchfr5535Frenchfr5536Frenchfr5537Frenchfr5538Frenchfr5539Frenchfr554Frenchfr5540Frenchfr5541Frenchfr5542Frenchfr5543Frenchfr5544Frenchfr5545Frenchfr5546Frenchfr5547Frenchfr5548Frenchfr5549Frenchfr555Frenchfr5550Frenchfr5551Frenchfr5552Frenchfr5553Frenchfr5554Frenchfr5555Frenchfr5556Frenchfr5557Frenchfr5558Frenchfr5559Frenchfr556Frenchfr5560Frenchfr5561Frenchfr5562Frenchfr5563Frenchfr5564Frenchfr5565Frenchfr5566Frenchfr5567Frenchfr5568Frenchfr5569Frenchfr557Frenchfr5570Frenchfr5571Frenchfr5572Frenchfr5573Frenchfr5574Frenchfr5575Frenchfr5576Frenchfr5577Frenchfr5578Frenchfr5579Frenchfr558Frenchfr5580Frenchfr5581Frenchfr5582Frenchfr5583Frenchfr5584Frenchfr5585Frenchfr5586Frenchfr5587Frenchfr5588Frenchfr5589Frenchfr559Frenchfr5590Frenchfr5591Frenchfr5592Frenchfr5593Frenchfr5594Frenchfr5595Frenchfr5596Frenchfr5597Frenchfr5598Frenchfr5599Frenchfr56Frenchfr560Frenchfr5600Frenchfr5601Frenchfr5602Frenchfr5603Frenchfr5604Frenchfr5605Frenchfr5606Frenchfr5607Frenchfr5608Frenchfr5609Frenchfr561Frenchfr5610Frenchfr5611Frenchfr5612Frenchfr5613Frenchfr5614Frenchfr5615Frenchfr5616Frenchfr5617Frenchfr5618Frenchfr5619Frenchfr562Frenchfr5620Frenchfr5621Frenchfr5622Frenchfr5623Frenchfr5624Frenchfr5625Frenchfr5626Frenchfr5627Frenchfr5628Frenchfr5629Frenchfr563Frenchfr5630Frenchfr5631Frenchfr5632Frenchfr5633Frenchfr5634Frenchfr5635Frenchfr5636Frenchfr5637Frenchfr5638Frenchfr5639Frenchfr564Frenchfr5640Frenchfr5641Frenchfr5642Frenchfr5643Frenchfr5644Frenchfr5645Frenchfr5646Frenchfr5647Frenchfr5648Frenchfr5649Frenchfr565Frenchfr5650Frenchfr5651Frenchfr5652Frenchfr5653Frenchfr5654Frenchfr5655Frenchfr5656Frenchfr5657Frenchfr5658Frenchfr5659Frenchfr566Frenchfr5660Frenchfr5661Frenchfr5662Frenchfr5663Frenchfr5664Frenchfr5665Frenchfr5666Frenchfr5667Frenchfr5668Frenchfr5669Frenchfr567Frenchfr5670Frenchfr5671Frenchfr5672Frenchfr5673Frenchfr5674Frenchfr5675Frenchfr5676Frenchfr5677Frenchfr5678Frenchfr5679Frenchfr568Frenchfr5680Frenchfr5681Frenchfr5682Frenchfr5683Frenchfr5684Frenchfr5685Frenchfr5686Frenchfr5687Frenchfr5688Frenchfr5689Frenchfr569Frenchfr5690Frenchfr5691Frenchfr5692Frenchfr5693Frenchfr5694Frenchfr5695Frenchfr5696Frenchfr5697Frenchfr5698Frenchfr5699Frenchfr57Frenchfr570Frenchfr5700Frenchfr5701Frenchfr5702Frenchfr5703Frenchfr5704Frenchfr5705Frenchfr5706Frenchfr5707Frenchfr5708Frenchfr5709Frenchfr571Frenchfr5710Frenchfr5711Frenchfr5712Frenchfr5713Frenchfr5714Frenchfr5715Frenchfr5716Frenchfr5717Frenchfr5718Frenchfr5719Frenchfr572Frenchfr5720Frenchfr5721Frenchfr5722Frenchfr5723Frenchfr5724Frenchfr5725Frenchfr5726Frenchfr5727Frenchfr5728Frenchfr5729Frenchfr573Frenchfr5730Frenchfr5731Frenchfr5732Frenchfr5733Frenchfr5734Frenchfr5735Frenchfr5736Frenchfr5737Frenchfr5738Frenchfr5739Frenchfr574Frenchfr5740Frenchfr5741Frenchfr5742Frenchfr5743Frenchfr5744Frenchfr5745Frenchfr5746Frenchfr5747Frenchfr5748Frenchfr5749Frenchfr575Frenchfr5750Frenchfr5751Frenchfr5752Frenchfr5753Frenchfr5754Frenchfr5755Frenchfr5756Frenchfr5757Frenchfr5758Frenchfr5759Frenchfr576Frenchfr5760Frenchfr5761Frenchfr5762Frenchfr5763Frenchfr5764Frenchfr5765Frenchfr5766Frenchfr5767Frenchfr5768Frenchfr5769Frenchfr577Frenchfr5770Frenchfr5771Frenchfr5772Frenchfr5773Frenchfr5774Frenchfr5775Frenchfr5776Frenchfr5777Frenchfr5778Frenchfr5779Frenchfr578Frenchfr5780Frenchfr5781Frenchfr5782Frenchfr5783Frenchfr5784Frenchfr5785Frenchfr5786Frenchfr5787Frenchfr5788Frenchfr5789Frenchfr579Frenchfr5790Frenchfr5791Frenchfr5792Frenchfr5793Frenchfr5794Frenchfr5795Frenchfr5796Frenchfr5797Frenchfr5798Frenchfr5799Frenchfr58Frenchfr580Frenchfr5800Frenchfr5801Frenchfr5802Frenchfr5803Frenchfr5804Frenchfr5805Frenchfr5806Frenchfr5807Frenchfr5808Frenchfr5809Frenchfr581Frenchfr5810Frenchfr5811Frenchfr5812Frenchfr5813Frenchfr5814Frenchfr5815Frenchfr5816Frenchfr5817Frenchfr5818Frenchfr5819Frenchfr582Frenchfr5820Frenchfr5821Frenchfr5822Frenchfr5823Frenchfr5824Frenchfr5825Frenchfr5826Frenchfr5827Frenchfr5828Frenchfr5829Frenchfr583Frenchfr5830Frenchfr5831Frenchfr5832Frenchfr5833Frenchfr5834Frenchfr5835Frenchfr5836Frenchfr5837Frenchfr5838Frenchfr5839Frenchfr584Frenchfr5840Frenchfr5841Frenchfr5842Frenchfr5843Frenchfr5844Frenchfr5845Frenchfr5846Frenchfr5847Frenchfr5848Frenchfr5849Frenchfr585Frenchfr5850Frenchfr5851Frenchfr5852Frenchfr5853Frenchfr5854Frenchfr5855Frenchfr5856Frenchfr5857Frenchfr5858Frenchfr5859Frenchfr586Frenchfr5860Frenchfr5861Frenchfr5862Frenchfr5863Frenchfr5864Frenchfr5865Frenchfr5866Frenchfr5867Frenchfr5868Frenchfr5869Frenchfr587Frenchfr5870Frenchfr5871Frenchfr5872Frenchfr5873Frenchfr5874Frenchfr5875Frenchfr5876Frenchfr5877Frenchfr5878Frenchfr5879Frenchfr588Frenchfr5880Frenchfr5881Frenchfr5882Frenchfr5883Frenchfr5884Frenchfr5885Frenchfr5886Frenchfr5887Frenchfr5888Frenchfr5889Frenchfr589Frenchfr5890Frenchfr5891Frenchfr5892Frenchfr5893Frenchfr5894Frenchfr5895Frenchfr5896Frenchfr5897Frenchfr5898Frenchfr5899Frenchfr59Frenchfr590Frenchfr5900Frenchfr5901Frenchfr5902Frenchfr5903Frenchfr5904Frenchfr5905Frenchfr5906Frenchfr5907Frenchfr5908Frenchfr5909Frenchfr591Frenchfr5910Frenchfr5911Frenchfr5912Frenchfr5913Frenchfr5914Frenchfr5915Frenchfr5916Frenchfr5917Frenchfr5918Frenchfr5919Frenchfr592Frenchfr5920Frenchfr5921Frenchfr5922Frenchfr5923Frenchfr5924Frenchfr5925Frenchfr5926Frenchfr5927Frenchfr5928Frenchfr5929Frenchfr593Frenchfr5930Frenchfr5931Frenchfr5932Frenchfr5933Frenchfr5934Frenchfr5935Frenchfr5936Frenchfr5937Frenchfr5938Frenchfr5939Frenchfr594Frenchfr5940Frenchfr5941Frenchfr5942Frenchfr5943Frenchfr5944Frenchfr5945Frenchfr5946Frenchfr5947Frenchfr5948Frenchfr5949Frenchfr595Frenchfr5950Frenchfr5951Frenchfr5952Frenchfr5953Frenchfr5954Frenchfr5955Frenchfr5956Frenchfr5957Frenchfr5958Frenchfr5959Frenchfr596Frenchfr5960Frenchfr5961Frenchfr5962Frenchfr5963Frenchfr5964Frenchfr5965Frenchfr5966Frenchfr5967Frenchfr5968Frenchfr5969Frenchfr597Frenchfr5970Frenchfr5971Frenchfr5972Frenchfr5973Frenchfr5974Frenchfr5975Frenchfr5976Frenchfr5977Frenchfr5978Frenchfr5979Frenchfr598Frenchfr5980Frenchfr5981Frenchfr5982Frenchfr5983Frenchfr5984Frenchfr5985Frenchfr5986Frenchfr5987Frenchfr5988Frenchfr5989Frenchfr599Frenchfr5990Frenchfr5991Frenchfr5992Frenchfr5993Frenchfr5994Frenchfr5995Frenchfr5996Frenchfr5997Frenchfr5998Frenchfr5999Frenchfr6Frenchfr60Frenchfr600Frenchfr6000Frenchfr6001Frenchfr6002Frenchfr6003Frenchfr6004Frenchfr6005Frenchfr6006Frenchfr6007Frenchfr6008Frenchfr6009Frenchfr601Frenchfr6010Frenchfr6011Frenchfr6012Frenchfr6013Frenchfr6014Frenchfr6015Frenchfr6016Frenchfr6017Frenchfr6018Frenchfr6019Frenchfr602Frenchfr6020Frenchfr6021Frenchfr6022Frenchfr6023Frenchfr6024Frenchfr6025Frenchfr6026Frenchfr6027Frenchfr6028Frenchfr6029Frenchfr603Frenchfr6030Frenchfr6031Frenchfr6032Frenchfr6033Frenchfr6034Frenchfr6035Frenchfr6036Frenchfr6037Frenchfr6038Frenchfr6039Frenchfr604Frenchfr6040Frenchfr6041Frenchfr6042Frenchfr6043Frenchfr6044Frenchfr6045Frenchfr6046Frenchfr6047Frenchfr6048Frenchfr6049Frenchfr605Frenchfr6050Frenchfr6051Frenchfr6052Frenchfr6053Frenchfr6054Frenchfr6055Frenchfr6056Frenchfr6057Frenchfr6058Frenchfr6059Frenchfr606Frenchfr6060Frenchfr6061Frenchfr6062Frenchfr6063Frenchfr6064Frenchfr6065Frenchfr6066Frenchfr6067Frenchfr6068Frenchfr6069Frenchfr607Frenchfr6070Frenchfr6071Frenchfr6072Frenchfr6073Frenchfr6074Frenchfr6075Frenchfr6076Frenchfr6077Frenchfr6078Frenchfr6079Frenchfr608Frenchfr6080Frenchfr6081Frenchfr6082Frenchfr6083Frenchfr6084Frenchfr6085Frenchfr6086Frenchfr6087Frenchfr6088Frenchfr6089Frenchfr609Frenchfr6090Frenchfr6091Frenchfr6092Frenchfr6093Frenchfr6094Frenchfr6095Frenchfr6096Frenchfr6097Frenchfr6098Frenchfr6099Frenchfr61Frenchfr610Frenchfr6100Frenchfr6101Frenchfr6102Frenchfr6103Frenchfr6104Frenchfr6105Frenchfr6106Frenchfr6107Frenchfr6108Frenchfr6109Frenchfr611Frenchfr6110Frenchfr6111Frenchfr6112Frenchfr6113Frenchfr6114Frenchfr6115Frenchfr6116Frenchfr6117Frenchfr6118Frenchfr6119Frenchfr612Frenchfr6120Frenchfr6121Frenchfr6122Frenchfr6123Frenchfr6124Frenchfr6125Frenchfr6126Frenchfr6127Frenchfr6128Frenchfr6129Frenchfr613Frenchfr6130Frenchfr6131Frenchfr6132Frenchfr6133Frenchfr6134Frenchfr6135Frenchfr6136Frenchfr6137Frenchfr6138Frenchfr6139Frenchfr614Frenchfr6140Frenchfr6141Frenchfr6142Frenchfr6143Frenchfr6144Frenchfr6145Frenchfr6146Frenchfr6147Frenchfr6148Frenchfr6149Frenchfr615Frenchfr6150Frenchfr6151Frenchfr6152Frenchfr6153Frenchfr6154Frenchfr6155Frenchfr6156Frenchfr6157Frenchfr6158Frenchfr6159Frenchfr616Frenchfr6160Frenchfr6161Frenchfr6162Frenchfr6163Frenchfr6164Frenchfr6165Frenchfr6166Frenchfr6167Frenchfr6168Frenchfr6169Frenchfr617Frenchfr6170Frenchfr6171Frenchfr6172Frenchfr6173Frenchfr6174Frenchfr6175Frenchfr6176Frenchfr6177Frenchfr6178Frenchfr6179Frenchfr618Frenchfr6180Frenchfr6181Frenchfr6182Frenchfr6183Frenchfr6184Frenchfr6185Frenchfr6186Frenchfr6187Frenchfr6188Frenchfr6189Frenchfr619Frenchfr6190Frenchfr6191Frenchfr6192Frenchfr6193Frenchfr6194Frenchfr6195Frenchfr6196Frenchfr6197Frenchfr6198Frenchfr6199Frenchfr62Frenchfr620Frenchfr6200Frenchfr6201Frenchfr6202Frenchfr6203Frenchfr6204Frenchfr6205Frenchfr6206Frenchfr6207Frenchfr6208Frenchfr6209Frenchfr621Frenchfr6210Frenchfr6211Frenchfr6212Frenchfr6213Frenchfr6214Frenchfr6215Frenchfr6216Frenchfr6217Frenchfr6218Frenchfr6219Frenchfr622Frenchfr6220Frenchfr6221Frenchfr6222Frenchfr6223Frenchfr6224Frenchfr6225Frenchfr6226Frenchfr6227Frenchfr6228Frenchfr6229Frenchfr623Frenchfr6230Frenchfr6231Frenchfr6232Frenchfr6233Frenchfr6234Frenchfr6235Frenchfr6236Frenchfr6237Frenchfr6238Frenchfr6239Frenchfr624Frenchfr6240Frenchfr6241Frenchfr6242Frenchfr6243Frenchfr6244Frenchfr6245Frenchfr6246Frenchfr6247Frenchfr6248Frenchfr6249Frenchfr625Frenchfr6250Frenchfr6251Frenchfr6252Frenchfr6253Frenchfr6254Frenchfr6255Frenchfr6256Frenchfr6257Frenchfr6258Frenchfr6259Frenchfr626Frenchfr6260Frenchfr6261Frenchfr6262Frenchfr6263Frenchfr6264Frenchfr6265Frenchfr6266Frenchfr6267Frenchfr6268Frenchfr6269Frenchfr627Frenchfr6270Frenchfr6271Frenchfr6272Frenchfr6273Frenchfr6274Frenchfr6275Frenchfr6276Frenchfr6277Frenchfr6278Frenchfr6279Frenchfr628Frenchfr6280Frenchfr6281Frenchfr6282Frenchfr6283Frenchfr6284Frenchfr6285Frenchfr6286Frenchfr6287Frenchfr6288Frenchfr6289Frenchfr629Frenchfr6290Frenchfr6291Frenchfr6292Frenchfr6293Frenchfr6294Frenchfr6295Frenchfr6296Frenchfr6297Frenchfr6298Frenchfr6299Frenchfr63Frenchfr630Frenchfr6300Frenchfr6301Frenchfr6302Frenchfr6303Frenchfr6304Frenchfr6305Frenchfr6306Frenchfr6307Frenchfr6308Frenchfr6309Frenchfr631Frenchfr6310Frenchfr6311Frenchfr6312Frenchfr6313Frenchfr6314Frenchfr6315Frenchfr6316Frenchfr6317Frenchfr6318Frenchfr6319Frenchfr632Frenchfr6320Frenchfr6321Frenchfr6322Frenchfr6323Frenchfr6324Frenchfr6325Frenchfr6326Frenchfr6327Frenchfr6328Frenchfr6329Frenchfr633Frenchfr6330Frenchfr6331Frenchfr6332Frenchfr6333Frenchfr6334Frenchfr6335Frenchfr6336Frenchfr6337Frenchfr6338Frenchfr6339Frenchfr634Frenchfr6340Frenchfr6341Frenchfr6342Frenchfr6343Frenchfr6344Frenchfr6345Frenchfr6346Frenchfr6347Frenchfr6348Frenchfr6349Frenchfr635Frenchfr6350Frenchfr6351Frenchfr6352Frenchfr6353Frenchfr6354Frenchfr6355Frenchfr6356Frenchfr6357Frenchfr6358Frenchfr6359Frenchfr636Frenchfr6360Frenchfr6361Frenchfr6362Frenchfr6363Frenchfr6364Frenchfr6365Frenchfr6366Frenchfr6367Frenchfr6368Frenchfr6369Frenchfr637Frenchfr6370Frenchfr6371Frenchfr6372Frenchfr6373Frenchfr6374Frenchfr6375Frenchfr6376Frenchfr6377Frenchfr6378Frenchfr6379Frenchfr638Frenchfr6380Frenchfr6381Frenchfr6382Frenchfr6383Frenchfr6384Frenchfr6385Frenchfr6386Frenchfr6387Frenchfr6388Frenchfr6389Frenchfr639Frenchfr6390Frenchfr6391Frenchfr6392Frenchfr6393Frenchfr6394Frenchfr6395Frenchfr6396Frenchfr6397Frenchfr6398Frenchfr6399Frenchfr64Frenchfr640Frenchfr6400Frenchfr6401Frenchfr6402Frenchfr6403Frenchfr6404Frenchfr6405Frenchfr6406Frenchfr6407Frenchfr6408Frenchfr6409Frenchfr641Frenchfr6410Frenchfr6411Frenchfr6412Frenchfr6413Frenchfr6414Frenchfr6415Frenchfr6416Frenchfr6417Frenchfr6418Frenchfr6419Frenchfr642Frenchfr6420Frenchfr6421Frenchfr6422Frenchfr6423Frenchfr6424Frenchfr6425Frenchfr6426Frenchfr6427Frenchfr6428Frenchfr6429Frenchfr643Frenchfr6430Frenchfr6431Frenchfr6432Frenchfr6433Frenchfr6434Frenchfr6435Frenchfr6436Frenchfr6437Frenchfr6438Frenchfr6439Frenchfr644Frenchfr6440Frenchfr6441Frenchfr6442Frenchfr6443Frenchfr6444Frenchfr6445Frenchfr6446Frenchfr6447Frenchfr6448Frenchfr6449Frenchfr645Frenchfr6450Frenchfr6451Frenchfr6452Frenchfr6453Frenchfr6454Frenchfr6455Frenchfr6456Frenchfr6457Frenchfr6458Frenchfr6459Frenchfr646Frenchfr6460Frenchfr6461Frenchfr6462Frenchfr6463Frenchfr6464Frenchfr6465Frenchfr6466Frenchfr6467Frenchfr6468Frenchfr6469Frenchfr647Frenchfr6470Frenchfr6471Frenchfr6472Frenchfr6473Frenchfr6474Frenchfr6475Frenchfr6476Frenchfr6477Frenchfr6478Frenchfr6479Frenchfr648Frenchfr6480Frenchfr6481Frenchfr6482Frenchfr6483Frenchfr6484Frenchfr6485Frenchfr6486Frenchfr6487Frenchfr6488Frenchfr6489Frenchfr649Frenchfr6490Frenchfr6491Frenchfr6492Frenchfr6493Frenchfr6494Frenchfr6495Frenchfr6496Frenchfr6497Frenchfr6498Frenchfr6499Frenchfr65Frenchfr650Frenchfr6500Frenchfr6501Frenchfr6502Frenchfr6503Frenchfr6504Frenchfr6505Frenchfr6506Frenchfr6507Frenchfr6508Frenchfr6509Frenchfr651Frenchfr6510Frenchfr6511Frenchfr6512Frenchfr6513Frenchfr6514Frenchfr6515Frenchfr6516Frenchfr6517Frenchfr6518Frenchfr6519Frenchfr652Frenchfr6520Frenchfr6521Frenchfr6522Frenchfr6523Frenchfr6524Frenchfr6525Frenchfr6526Frenchfr6527Frenchfr6528Frenchfr6529Frenchfr653Frenchfr6530Frenchfr6531Frenchfr6532Frenchfr6533Frenchfr6534Frenchfr6535Frenchfr6536Frenchfr6537Frenchfr6538Frenchfr6539Frenchfr654Frenchfr6540Frenchfr6541Frenchfr6542Frenchfr6543Frenchfr6544Frenchfr6545Frenchfr6546Frenchfr6547Frenchfr6548Frenchfr6549Frenchfr655Frenchfr6550Frenchfr6551Frenchfr6552Frenchfr6553Frenchfr6554Frenchfr6555Frenchfr6556Frenchfr6557Frenchfr6558Frenchfr6559Frenchfr656Frenchfr6560Frenchfr6561Frenchfr6562Frenchfr6563Frenchfr6564Frenchfr6565Frenchfr6566Frenchfr6567Frenchfr6568Frenchfr6569Frenchfr657Frenchfr6570Frenchfr6571Frenchfr6572Frenchfr6573Frenchfr6574Frenchfr6575Frenchfr6576Frenchfr6577Frenchfr6578Frenchfr6579Frenchfr658Frenchfr6580Frenchfr6581Frenchfr6582Frenchfr6583Frenchfr6584Frenchfr6585Frenchfr6586Frenchfr6587Frenchfr6588Frenchfr6589Frenchfr659Frenchfr6590Frenchfr6591Frenchfr6592Frenchfr6593Frenchfr6594Frenchfr6595Frenchfr6596Frenchfr6597Frenchfr6598Frenchfr6599Frenchfr66Frenchfr660Frenchfr6600Frenchfr6601Frenchfr6602Frenchfr6603Frenchfr6604Frenchfr6605Frenchfr6606Frenchfr6607Frenchfr6608Frenchfr6609Frenchfr661Frenchfr6610Frenchfr6611Frenchfr6612Frenchfr6613Frenchfr6614Frenchfr6615Frenchfr6616Frenchfr6617Frenchfr6618Frenchfr6619Frenchfr662Frenchfr6620Frenchfr6621Frenchfr6622Frenchfr6623Frenchfr6624Frenchfr6625Frenchfr6626Frenchfr6627Frenchfr6628Frenchfr6629Frenchfr663Frenchfr6630Frenchfr6631Frenchfr6632Frenchfr6633Frenchfr6634Frenchfr6635Frenchfr6636Frenchfr6637Frenchfr6638Frenchfr6639Frenchfr664Frenchfr6640Frenchfr6641Frenchfr6642Frenchfr6643Frenchfr6644Frenchfr6645Frenchfr6646Frenchfr6647Frenchfr6648Frenchfr6649Frenchfr665Frenchfr6650Frenchfr6651Frenchfr6652Frenchfr6653Frenchfr6654Frenchfr6655Frenchfr6656Frenchfr6657Frenchfr6658Frenchfr6659Frenchfr666Frenchfr6660Frenchfr6661Frenchfr6662Frenchfr6663Frenchfr6664Frenchfr6665Frenchfr6666Frenchfr6667Frenchfr6668Frenchfr6669Frenchfr667Frenchfr6670Frenchfr6671Frenchfr6672Frenchfr6673Frenchfr6674Frenchfr6675Frenchfr6676Frenchfr6677Frenchfr6678Frenchfr6679Frenchfr668Frenchfr6680Frenchfr6681Frenchfr6682Frenchfr6683Frenchfr6684Frenchfr6685Frenchfr6686Frenchfr6687Frenchfr6688Frenchfr6689Frenchfr669Frenchfr6690Frenchfr6691Frenchfr6692Frenchfr6693Frenchfr6694Frenchfr6695Frenchfr6696Frenchfr6697Frenchfr6698Frenchfr6699Frenchfr67Frenchfr670Frenchfr6700Frenchfr6701Frenchfr6702Frenchfr6703Frenchfr6704Frenchfr6705Frenchfr6706Frenchfr6707Frenchfr6708Frenchfr6709Frenchfr671Frenchfr6710Frenchfr6711Frenchfr6712Frenchfr6713Frenchfr6714Frenchfr6715Frenchfr6716Frenchfr6717Frenchfr6718Frenchfr6719Frenchfr672Frenchfr6720Frenchfr6721Frenchfr6722Frenchfr6723Frenchfr6724Frenchfr6725Frenchfr6726Frenchfr6727Frenchfr6728Frenchfr6729Frenchfr673Frenchfr6730Frenchfr6731Frenchfr6732Frenchfr6733Frenchfr6734Frenchfr6735Frenchfr6736Frenchfr6737Frenchfr6738Frenchfr6739Frenchfr674Frenchfr6740Frenchfr6741Frenchfr6742Frenchfr6743Frenchfr6744Frenchfr6745Frenchfr6746Frenchfr6747Frenchfr6748Frenchfr6749Frenchfr675Frenchfr6750Frenchfr6751Frenchfr6752Frenchfr6753Frenchfr6754Frenchfr6755Frenchfr6756Frenchfr6757Frenchfr6758Frenchfr6759Frenchfr676Frenchfr6760Frenchfr6761Frenchfr6762Frenchfr6763Frenchfr6764Frenchfr6765Frenchfr6766Frenchfr6767Frenchfr6768Frenchfr6769Frenchfr677Frenchfr6770Frenchfr6771Frenchfr6772Frenchfr6773Frenchfr6774Frenchfr6775Frenchfr6776Frenchfr6777Frenchfr6778Frenchfr6779Frenchfr678Frenchfr6780Frenchfr6781Frenchfr6782Frenchfr6783Frenchfr6784Frenchfr6785Frenchfr6786Frenchfr6787Frenchfr6788Frenchfr6789Frenchfr679Frenchfr6790Frenchfr6791Frenchfr6792Frenchfr6793Frenchfr6794Frenchfr6795Frenchfr6796Frenchfr6797Frenchfr6798Frenchfr6799Frenchfr68Frenchfr680Frenchfr6800Frenchfr6801Frenchfr6802Frenchfr6803Frenchfr6804Frenchfr6805Frenchfr6806Frenchfr6807Frenchfr6808Frenchfr6809Frenchfr681Frenchfr6810Frenchfr6811Frenchfr6812Frenchfr6813Frenchfr6814Frenchfr6815Frenchfr6816Frenchfr6817Frenchfr6818Frenchfr6819Frenchfr682Frenchfr6820Frenchfr6821Frenchfr6822Frenchfr6823Frenchfr6824Frenchfr6825Frenchfr6826Frenchfr6827Frenchfr6828Frenchfr6829Frenchfr683Frenchfr6830Frenchfr6831Frenchfr6832Frenchfr6833Frenchfr6834Frenchfr6835Frenchfr6836Frenchfr6837Frenchfr6838Frenchfr6839Frenchfr684Frenchfr6840Frenchfr6841Frenchfr6842Frenchfr6843Frenchfr6844Frenchfr6845Frenchfr6846Frenchfr6847Frenchfr6848Frenchfr6849Frenchfr685Frenchfr6850Frenchfr6851Frenchfr6852Frenchfr6853Frenchfr6854Frenchfr6855Frenchfr6856Frenchfr6857Frenchfr6858Frenchfr6859Frenchfr686Frenchfr6860Frenchfr6861Frenchfr6862Frenchfr6863Frenchfr6864Frenchfr6865Frenchfr6866Frenchfr6867Frenchfr6868Frenchfr6869Frenchfr687Frenchfr6870Frenchfr6871Frenchfr6872Frenchfr6873Frenchfr6874Frenchfr6875Frenchfr6876Frenchfr6877Frenchfr6878Frenchfr6879Frenchfr688Frenchfr6880Frenchfr6881Frenchfr6882Frenchfr6883Frenchfr6884Frenchfr6885Frenchfr6886Frenchfr6887Frenchfr6888Frenchfr6889Frenchfr689Frenchfr6890Frenchfr6891Frenchfr6892Frenchfr6893Frenchfr6894Frenchfr6895Frenchfr6896Frenchfr6897Frenchfr6898Frenchfr6899Frenchfr69Frenchfr690Frenchfr6900Frenchfr6901Frenchfr6902Frenchfr6903Frenchfr6904Frenchfr6905Frenchfr6906Frenchfr6907Frenchfr6908Frenchfr6909Frenchfr691Frenchfr6910Frenchfr6911Frenchfr6912Frenchfr6913Frenchfr6914Frenchfr6915Frenchfr6916Frenchfr6917Frenchfr6918Frenchfr6919Frenchfr692Frenchfr6920Frenchfr6921Frenchfr6922Frenchfr6923Frenchfr6924Frenchfr6925Frenchfr6926Frenchfr6927Frenchfr6928Frenchfr6929Frenchfr693Frenchfr6930Frenchfr6931Frenchfr6932Frenchfr6933Frenchfr6934Frenchfr6935Frenchfr6936Frenchfr6937Frenchfr6938Frenchfr6939Frenchfr694Frenchfr6940Frenchfr6941Frenchfr6942Frenchfr6943Frenchfr6944Frenchfr6945Frenchfr6946Frenchfr6947Frenchfr6948Frenchfr6949Frenchfr695Frenchfr6950Frenchfr6951Frenchfr6952Frenchfr6953Frenchfr6954Frenchfr6955Frenchfr6956Frenchfr6957Frenchfr6958Frenchfr6959Frenchfr696Frenchfr6960Frenchfr6961Frenchfr6962Frenchfr6963Frenchfr6964Frenchfr6965Frenchfr6966Frenchfr6967Frenchfr6968Frenchfr6969Frenchfr697Frenchfr6970Frenchfr6971Frenchfr6972Frenchfr6973Frenchfr6974Frenchfr6975Frenchfr6976Frenchfr6977Frenchfr6978Frenchfr6979Frenchfr698Frenchfr6980Frenchfr6981Frenchfr6982Frenchfr6983Frenchfr6984Frenchfr6985Frenchfr6986Frenchfr6987Frenchfr6988Frenchfr6989Frenchfr699Frenchfr6990Frenchfr6991Frenchfr6992Frenchfr6993Frenchfr6994Frenchfr6995Frenchfr6996Frenchfr6997Frenchfr6998Frenchfr6999Frenchfr7Frenchfr70Frenchfr700Frenchfr7000Frenchfr7001Frenchfr7002Frenchfr7003Frenchfr7004Frenchfr7005Frenchfr7006Frenchfr7007Frenchfr7008Frenchfr7009Frenchfr701Frenchfr7010Frenchfr7011Frenchfr7012Frenchfr7013Frenchfr7014Frenchfr7015Frenchfr7016Frenchfr7017Frenchfr7018Frenchfr7019Frenchfr702Frenchfr7020Frenchfr7021Frenchfr7022Frenchfr7023Frenchfr7024Frenchfr7025Frenchfr7026Frenchfr7027Frenchfr7028Frenchfr7029Frenchfr703Frenchfr7030Frenchfr7031Frenchfr7032Frenchfr7033Frenchfr7034Frenchfr7035Frenchfr7036Frenchfr7037Frenchfr7038Frenchfr7039Frenchfr704Frenchfr7040Frenchfr7041Frenchfr7042Frenchfr7043Frenchfr7044Frenchfr7045Frenchfr7046Frenchfr7047Frenchfr7048Frenchfr7049Frenchfr705Frenchfr7050Frenchfr7051Frenchfr7052Frenchfr7053Frenchfr7054Frenchfr7055Frenchfr7056Frenchfr7057Frenchfr7058Frenchfr7059Frenchfr706Frenchfr7060Frenchfr7061Frenchfr7062Frenchfr7063Frenchfr7064Frenchfr7065Frenchfr7066Frenchfr7067Frenchfr7068Frenchfr7069Frenchfr707Frenchfr7070Frenchfr7071Frenchfr7072Frenchfr7073Frenchfr7074Frenchfr7075Frenchfr7076Frenchfr7077Frenchfr7078Frenchfr7079Frenchfr708Frenchfr7080Frenchfr7081Frenchfr7082Frenchfr7083Frenchfr7084Frenchfr7085Frenchfr7086Frenchfr7087Frenchfr7088Frenchfr7089Frenchfr709Frenchfr7090Frenchfr7091Frenchfr7092Frenchfr7093Frenchfr7094Frenchfr7095Frenchfr7096Frenchfr7097Frenchfr7098Frenchfr7099Frenchfr71Frenchfr710Frenchfr7100Frenchfr7101Frenchfr7102Frenchfr7103Frenchfr7104Frenchfr7105Frenchfr7106Frenchfr7107Frenchfr7108Frenchfr7109Frenchfr711Frenchfr7110Frenchfr7111Frenchfr7112Frenchfr7113Frenchfr7114Frenchfr7115Frenchfr7116Frenchfr7117Frenchfr7118Frenchfr7119Frenchfr712Frenchfr7120Frenchfr7121Frenchfr7122Frenchfr7123Frenchfr7124Frenchfr7125Frenchfr7126Frenchfr7127Frenchfr7128Frenchfr7129Frenchfr713Frenchfr7130Frenchfr7131Frenchfr7132Frenchfr7133Frenchfr7134Frenchfr7135Frenchfr7136Frenchfr7137Frenchfr7138Frenchfr7139Frenchfr714Frenchfr7140Frenchfr7141Frenchfr7142Frenchfr7143Frenchfr7144Frenchfr7145Frenchfr7146Frenchfr7147Frenchfr7148Frenchfr7149Frenchfr715Frenchfr7150Frenchfr7151Frenchfr7152Frenchfr7153Frenchfr7154Frenchfr7155Frenchfr7156Frenchfr7157Frenchfr7158Frenchfr7159Frenchfr716Frenchfr7160Frenchfr7161Frenchfr7162Frenchfr7163Frenchfr7164Frenchfr7165Frenchfr7166Frenchfr7167Frenchfr7168Frenchfr7169Frenchfr717Frenchfr7170Frenchfr7171Frenchfr7172Frenchfr7173Frenchfr7174Frenchfr7175Frenchfr7176Frenchfr7177Frenchfr7178Frenchfr7179Frenchfr718Frenchfr7180Frenchfr7181Frenchfr7182Frenchfr7183Frenchfr7184Frenchfr7185Frenchfr7186Frenchfr7187Frenchfr7188Frenchfr7189Frenchfr719Frenchfr7190Frenchfr7191Frenchfr7192Frenchfr7193Frenchfr7194Frenchfr7195Frenchfr7196Frenchfr7197Frenchfr7198Frenchfr7199Frenchfr72Frenchfr720Frenchfr7200Frenchfr7201Frenchfr7202Frenchfr7203Frenchfr7204Frenchfr7205Frenchfr7206Frenchfr7207Frenchfr7208Frenchfr7209Frenchfr721Frenchfr7210Frenchfr7211Frenchfr7212Frenchfr7213Frenchfr7214Frenchfr7215Frenchfr7216Frenchfr7217Frenchfr7218Frenchfr7219Frenchfr722Frenchfr7220Frenchfr7221Frenchfr7222Frenchfr7223Frenchfr7224Frenchfr7225Frenchfr7226Frenchfr7227Frenchfr7228Frenchfr7229Frenchfr723Frenchfr7230Frenchfr7231Frenchfr7232Frenchfr7233Frenchfr7234Frenchfr7235Frenchfr7236Frenchfr7237Frenchfr7238Frenchfr7239Frenchfr724Frenchfr7240Frenchfr7241Frenchfr7242Frenchfr7243Frenchfr7244Frenchfr7245Frenchfr7246Frenchfr7247Frenchfr7248Frenchfr7249Frenchfr725Frenchfr7250Frenchfr7251Frenchfr7252Frenchfr7253Frenchfr7254Frenchfr7255Frenchfr7256Frenchfr7257Frenchfr7258Frenchfr7259Frenchfr726Frenchfr7260Frenchfr7261Frenchfr7262Frenchfr7263Frenchfr7264Frenchfr7265Frenchfr7266Frenchfr7267Frenchfr7268Frenchfr7269Frenchfr727Frenchfr7270Frenchfr7271Frenchfr7272Frenchfr7273Frenchfr7274Frenchfr7275Frenchfr7276Frenchfr7277Frenchfr7278Frenchfr7279Frenchfr728Frenchfr7280Frenchfr7281Frenchfr7282Frenchfr7283Frenchfr7284Frenchfr7285Frenchfr7286Frenchfr7287Frenchfr7288Frenchfr7289Frenchfr729Frenchfr7290Frenchfr7291Frenchfr7292Frenchfr7293Frenchfr7294Frenchfr7295Frenchfr7296Frenchfr7297Frenchfr7298Frenchfr7299Frenchfr73Frenchfr730Frenchfr7300Frenchfr7301Frenchfr7302Frenchfr7303Frenchfr7304Frenchfr7305Frenchfr7306Frenchfr7307Frenchfr7308Frenchfr7309Frenchfr731Frenchfr7310Frenchfr7311Frenchfr7312Frenchfr7313Frenchfr7314Frenchfr7315Frenchfr7316Frenchfr7317Frenchfr7318Frenchfr7319Frenchfr732Frenchfr7320Frenchfr7321Frenchfr7322Frenchfr7323Frenchfr7324Frenchfr7325Frenchfr7326Frenchfr7327Frenchfr7328Frenchfr7329Frenchfr733Frenchfr7330Frenchfr7331Frenchfr7332Frenchfr7333Frenchfr7334Frenchfr7335Frenchfr7336Frenchfr7337Frenchfr7338Frenchfr7339Frenchfr734Frenchfr7340Frenchfr7341Frenchfr7342Frenchfr7343Frenchfr7344Frenchfr7345Frenchfr7346Frenchfr7347Frenchfr7348Frenchfr7349Frenchfr735Frenchfr7350Frenchfr7351Frenchfr7352Frenchfr7353Frenchfr7354Frenchfr7355Frenchfr7356Frenchfr7357Frenchfr7358Frenchfr7359Frenchfr736Frenchfr7360Frenchfr7361Frenchfr7362Frenchfr7363Frenchfr7364Frenchfr7365Frenchfr7366Frenchfr7367Frenchfr7368Frenchfr7369Frenchfr737Frenchfr7370Frenchfr7371Frenchfr7372Frenchfr7373Frenchfr7374Frenchfr7375Frenchfr7376Frenchfr7377Frenchfr7378Frenchfr7379Frenchfr738Frenchfr7380Frenchfr7381Frenchfr7382Frenchfr7383Frenchfr7384Frenchfr7385Frenchfr7386Frenchfr7387Frenchfr7388Frenchfr7389Frenchfr739Frenchfr7390Frenchfr7391Frenchfr7392Frenchfr7393Frenchfr7394Frenchfr7395Frenchfr7396Frenchfr7397Frenchfr7398Frenchfr7399Frenchfr74Frenchfr740Frenchfr7400Frenchfr7401Frenchfr7402Frenchfr7403Frenchfr7404Frenchfr7405Frenchfr7406Frenchfr7407Frenchfr7408Frenchfr7409Frenchfr741Frenchfr7410Frenchfr7411Frenchfr7412Frenchfr7413Frenchfr7414Frenchfr7415Frenchfr7416Frenchfr7417Frenchfr7418Frenchfr7419Frenchfr742Frenchfr7420Frenchfr7421Frenchfr7422Frenchfr7423Frenchfr7424Frenchfr7425Frenchfr7426Frenchfr7427Frenchfr7428Frenchfr7429Frenchfr743Frenchfr7430Frenchfr7431Frenchfr7432Frenchfr7433Frenchfr7434Frenchfr7435Frenchfr7436Frenchfr7437Frenchfr7438Frenchfr7439Frenchfr744Frenchfr7440Frenchfr7441Frenchfr7442Frenchfr7443Frenchfr7444Frenchfr7445Frenchfr7446Frenchfr7447Frenchfr7448Frenchfr7449Frenchfr745Frenchfr7450Frenchfr7451Frenchfr7452Frenchfr7453Frenchfr7454Frenchfr7455Frenchfr7456Frenchfr7457Frenchfr7458Frenchfr7459Frenchfr746Frenchfr7460Frenchfr7461Frenchfr7462Frenchfr7463Frenchfr7464Frenchfr7465Frenchfr7466Frenchfr7467Frenchfr7468Frenchfr7469Frenchfr747Frenchfr7470Frenchfr7471Frenchfr7472Frenchfr7473Frenchfr7474Frenchfr7475Frenchfr7476Frenchfr7477Frenchfr7478Frenchfr7479Frenchfr748Frenchfr7480Frenchfr7481Frenchfr7482Frenchfr7483Frenchfr7484Frenchfr7485Frenchfr7486Frenchfr7487Frenchfr7488Frenchfr7489Frenchfr749Frenchfr7490Frenchfr7491Frenchfr7492Frenchfr7493Frenchfr7494Frenchfr7495Frenchfr7496Frenchfr7497Frenchfr7498Frenchfr7499Frenchfr75Frenchfr750Frenchfr7500Frenchfr7501Frenchfr7502Frenchfr7503Frenchfr7504Frenchfr7505Frenchfr7506Frenchfr7507Frenchfr7508Frenchfr7509Frenchfr751Frenchfr7510Frenchfr7511Frenchfr7512Frenchfr7513Frenchfr7514Frenchfr7515Frenchfr7516Frenchfr7517Frenchfr7518Frenchfr7519Frenchfr752Frenchfr7520Frenchfr7521Frenchfr7522Frenchfr7523Frenchfr7524Frenchfr7525Frenchfr7526Frenchfr7527Frenchfr7528Frenchfr7529Frenchfr753Frenchfr7530Frenchfr7531Frenchfr7532Frenchfr7533Frenchfr7534Frenchfr7535Frenchfr7536Frenchfr7537Frenchfr7538Frenchfr7539Frenchfr754Frenchfr7540Frenchfr7541Frenchfr7542Frenchfr7543Frenchfr7544Frenchfr7545Frenchfr7546Frenchfr7547Frenchfr7548Frenchfr7549Frenchfr755Frenchfr7550Frenchfr7551Frenchfr7552Frenchfr7553Frenchfr7554Frenchfr7555Frenchfr7556Frenchfr7557Frenchfr7558Frenchfr7559Frenchfr756Frenchfr7560Frenchfr7561Frenchfr7562Frenchfr7563Frenchfr7564Frenchfr7565Frenchfr7566Frenchfr7567Frenchfr7568Frenchfr7569Frenchfr757Frenchfr7570Frenchfr7571Frenchfr7572Frenchfr7573Frenchfr7574Frenchfr7575Frenchfr7576Frenchfr7577Frenchfr7578Frenchfr7579Frenchfr758Frenchfr7580Frenchfr7581Frenchfr7582Frenchfr7583Frenchfr7584Frenchfr7585Frenchfr7586Frenchfr7587Frenchfr7588Frenchfr7589Frenchfr759Frenchfr7590Frenchfr7591Frenchfr7592Frenchfr7593Frenchfr7594Frenchfr7595Frenchfr7596Frenchfr7597Frenchfr7598Frenchfr7599Frenchfr76Frenchfr760Frenchfr7600Frenchfr7601Frenchfr7602Frenchfr7603Frenchfr7604Frenchfr7605Frenchfr7606Frenchfr7607Frenchfr7608Frenchfr7609Frenchfr761Frenchfr7610Frenchfr7611Frenchfr7612Frenchfr7613Frenchfr7614Frenchfr7615Frenchfr7616Frenchfr7617Frenchfr7618Frenchfr7619Frenchfr762Frenchfr7620Frenchfr7621Frenchfr7622Frenchfr7623Frenchfr7624Frenchfr7625Frenchfr7626Frenchfr7627Frenchfr7628Frenchfr7629Frenchfr763Frenchfr7630Frenchfr7631Frenchfr7632Frenchfr7633Frenchfr7634Frenchfr7635Frenchfr7636Frenchfr7637Frenchfr7638Frenchfr7639Frenchfr764Frenchfr7640Frenchfr7641Frenchfr7642Frenchfr7643Frenchfr7644Frenchfr7645Frenchfr7646Frenchfr7647Frenchfr7648Frenchfr7649Frenchfr765Frenchfr7650Frenchfr7651Frenchfr7652Frenchfr7653Frenchfr7654Frenchfr7655Frenchfr7656Frenchfr7657Frenchfr7658Frenchfr7659Frenchfr766Frenchfr7660Frenchfr7661Frenchfr7662Frenchfr7663Frenchfr7664Frenchfr7665Frenchfr7666Frenchfr7667Frenchfr7668Frenchfr7669Frenchfr767Frenchfr7670Frenchfr7671Frenchfr7672Frenchfr7673Frenchfr7674Frenchfr7675Frenchfr7676Frenchfr7677Frenchfr7678Frenchfr7679Frenchfr768Frenchfr7680Frenchfr7681Frenchfr7682Frenchfr7683Frenchfr7684Frenchfr7685Frenchfr7686Frenchfr7687Frenchfr7688Frenchfr7689Frenchfr769Frenchfr7690Frenchfr7691Frenchfr7692Frenchfr7693Frenchfr7694Frenchfr7695Frenchfr7696Frenchfr7697Frenchfr7698Frenchfr7699Frenchfr77Frenchfr770Frenchfr7700Frenchfr7701Frenchfr7702Frenchfr7703Frenchfr7704Frenchfr7705Frenchfr7706Frenchfr7707Frenchfr7708Frenchfr7709Frenchfr771Frenchfr7710Frenchfr7711Frenchfr7712Frenchfr7713Frenchfr7714Frenchfr7715Frenchfr7716Frenchfr7717Frenchfr7718Frenchfr7719Frenchfr772Frenchfr7720Frenchfr7721Frenchfr7722Frenchfr7723Frenchfr7724Frenchfr7725Frenchfr7726Frenchfr7727Frenchfr7728Frenchfr7729Frenchfr773Frenchfr7730Frenchfr7731Frenchfr7732Frenchfr7733Frenchfr7734Frenchfr7735Frenchfr7736Frenchfr7737Frenchfr7738Frenchfr7739Frenchfr774Frenchfr7740Frenchfr7741Frenchfr7742Frenchfr7743Frenchfr7744Frenchfr7745Frenchfr7746Frenchfr7747Frenchfr7748Frenchfr7749Frenchfr775Frenchfr7750Frenchfr7751Frenchfr7752Frenchfr7753Frenchfr7754Frenchfr7755Frenchfr7756Frenchfr7757Frenchfr7758Frenchfr7759Frenchfr776Frenchfr7760Frenchfr7761Frenchfr7762Frenchfr7763Frenchfr7764Frenchfr7765Frenchfr7766Frenchfr7767Frenchfr7768Frenchfr7769Frenchfr777Frenchfr7770Frenchfr7771Frenchfr7772Frenchfr7773Frenchfr7774Frenchfr7775Frenchfr7776Frenchfr7777Frenchfr7778Frenchfr7779Frenchfr778Frenchfr7780Frenchfr7781Frenchfr7782Frenchfr7783Frenchfr7784Frenchfr7785Frenchfr7786Frenchfr7787Frenchfr7788Frenchfr7789Frenchfr779Frenchfr7790Frenchfr7791Frenchfr7792Frenchfr7793Frenchfr7794Frenchfr7795Frenchfr7796Frenchfr7797Frenchfr7798Frenchfr7799Frenchfr78Frenchfr780Frenchfr7800Frenchfr7801Frenchfr7802Frenchfr7803Frenchfr7804Frenchfr7805Frenchfr7806Frenchfr7807Frenchfr7808Frenchfr7809Frenchfr781Frenchfr7810Frenchfr7811Frenchfr7812Frenchfr7813Frenchfr7814Frenchfr7815Frenchfr7816Frenchfr7817Frenchfr7818Frenchfr7819Frenchfr782Frenchfr7820Frenchfr7821Frenchfr7822Frenchfr7823Frenchfr7824Frenchfr7825Frenchfr7826Frenchfr7827Frenchfr7828Frenchfr7829Frenchfr783Frenchfr7830Frenchfr7831Frenchfr7832Frenchfr7833Frenchfr7834Frenchfr7835Frenchfr7836Frenchfr7837Frenchfr7838Frenchfr7839Frenchfr784Frenchfr7840Frenchfr7841Frenchfr7842Frenchfr7843Frenchfr7844Frenchfr7845Frenchfr7846Frenchfr7847Frenchfr7848Frenchfr7849Frenchfr785Frenchfr7850Frenchfr7851Frenchfr7852Frenchfr7853Frenchfr7854Frenchfr7855Frenchfr7856Frenchfr7857Frenchfr7858Frenchfr7859Frenchfr786Frenchfr7860Frenchfr7861Frenchfr7862Frenchfr7863Frenchfr7864Frenchfr7865Frenchfr7866Frenchfr7867Frenchfr7868Frenchfr7869Frenchfr787Frenchfr7870Frenchfr7871Frenchfr7872Frenchfr7873Frenchfr7874Frenchfr7875Frenchfr7876Frenchfr7877Frenchfr7878Frenchfr7879Frenchfr788Frenchfr7880Frenchfr7881Frenchfr7882Frenchfr7883Frenchfr7884Frenchfr7885Frenchfr7886Frenchfr7887Frenchfr7888Frenchfr7889Frenchfr789Frenchfr7890Frenchfr7891Frenchfr7892Frenchfr7893Frenchfr7894Frenchfr7895Frenchfr7896Frenchfr7897Frenchfr7898Frenchfr7899Frenchfr79Frenchfr790Frenchfr7900Frenchfr7901Frenchfr7902Frenchfr7903Frenchfr7904Frenchfr7905Frenchfr7906Frenchfr7907Frenchfr7908Frenchfr7909Frenchfr791Frenchfr7910Frenchfr7911Frenchfr7912Frenchfr7913Frenchfr7914Frenchfr7915Frenchfr7916Frenchfr7917Frenchfr7918Frenchfr7919Frenchfr792Frenchfr7920Frenchfr7921Frenchfr7922Frenchfr7923Frenchfr7924Frenchfr7925Frenchfr7926Frenchfr7927Frenchfr7928Frenchfr7929Frenchfr793Frenchfr7930Frenchfr7931Frenchfr7932Frenchfr7933Frenchfr7934Frenchfr7935Frenchfr7936Frenchfr7937Frenchfr7938Frenchfr7939Frenchfr794Frenchfr7940Frenchfr7941Frenchfr7942Frenchfr7943Frenchfr7944Frenchfr7945Frenchfr7946Frenchfr7947Frenchfr7948Frenchfr7949Frenchfr795Frenchfr7950Frenchfr7951Frenchfr7952Frenchfr7953Frenchfr7954Frenchfr7955Frenchfr7956Frenchfr7957Frenchfr7958Frenchfr7959Frenchfr796Frenchfr7960Frenchfr7961Frenchfr7962Frenchfr7963Frenchfr7964Frenchfr7965Frenchfr7966Frenchfr7967Frenchfr7968Frenchfr7969Frenchfr797Frenchfr7970Frenchfr7971Frenchfr7972Frenchfr7973Frenchfr7974Frenchfr7975Frenchfr7976Frenchfr7977Frenchfr7978Frenchfr7979Frenchfr798Frenchfr7980Frenchfr7981Frenchfr7982Frenchfr7983Frenchfr7984Frenchfr7985Frenchfr7986Frenchfr7987Frenchfr7988Frenchfr7989Frenchfr799Frenchfr7990Frenchfr7991Frenchfr7992Frenchfr7993Frenchfr7994Frenchfr7995Frenchfr7996Frenchfr7997Frenchfr7998Frenchfr7999Frenchfr8Frenchfr80Frenchfr800Frenchfr8000Frenchfr8001Frenchfr8002Frenchfr8003Frenchfr8004Frenchfr8005Frenchfr8006Frenchfr8007Frenchfr8008Frenchfr8009Frenchfr801Frenchfr8010Frenchfr8011Frenchfr8012Frenchfr8013Frenchfr8014Frenchfr8015Frenchfr8016Frenchfr8017Frenchfr8018Frenchfr8019Frenchfr802Frenchfr8020Frenchfr8021Frenchfr8022Frenchfr8023Frenchfr8024Frenchfr8025Frenchfr8026Frenchfr8027Frenchfr8028Frenchfr8029Frenchfr803Frenchfr8030Frenchfr8031Frenchfr8032Frenchfr8033Frenchfr8034Frenchfr8035Frenchfr8036Frenchfr8037Frenchfr8038Frenchfr8039Frenchfr804Frenchfr8040Frenchfr8041Frenchfr8042Frenchfr8043Frenchfr8044Frenchfr8045Frenchfr8046Frenchfr8047Frenchfr8048Frenchfr8049Frenchfr805Frenchfr8050Frenchfr8051Frenchfr8052Frenchfr8053Frenchfr8054Frenchfr8055Frenchfr8056Frenchfr8057Frenchfr8058Frenchfr8059Frenchfr806Frenchfr8060Frenchfr8061Frenchfr8062Frenchfr8063Frenchfr8064Frenchfr8065Frenchfr8066Frenchfr8067Frenchfr8068Frenchfr8069Frenchfr807Frenchfr8070Frenchfr8071Frenchfr8072Frenchfr8073Frenchfr8074Frenchfr8075Frenchfr8076Frenchfr8077Frenchfr8078Frenchfr8079Frenchfr808Frenchfr8080Frenchfr8081Frenchfr8082Frenchfr8083Frenchfr8084Frenchfr8085Frenchfr8086Frenchfr8087Frenchfr8088Frenchfr8089Frenchfr809Frenchfr8090Frenchfr8091Frenchfr8092Frenchfr8093Frenchfr8094Frenchfr8095Frenchfr8096Frenchfr8097Frenchfr8098Frenchfr8099Frenchfr81Frenchfr810Frenchfr8100Frenchfr8101Frenchfr8102Frenchfr8103Frenchfr8104Frenchfr8105Frenchfr8106Frenchfr8107Frenchfr8108Frenchfr8109Frenchfr811Frenchfr8110Frenchfr8111Frenchfr8112Frenchfr8113Frenchfr8114Frenchfr8115Frenchfr8116Frenchfr8117Frenchfr8118Frenchfr8119Frenchfr812Frenchfr8120Frenchfr8121Frenchfr8122Frenchfr8123Frenchfr8124Frenchfr8125Frenchfr8126Frenchfr8127Frenchfr8128Frenchfr8129Frenchfr813Frenchfr8130Frenchfr8131Frenchfr8132Frenchfr8133Frenchfr8134Frenchfr8135Frenchfr8136Frenchfr8137Frenchfr8138Frenchfr8139Frenchfr814Frenchfr8140Frenchfr8141Frenchfr8142Frenchfr8143Frenchfr8144Frenchfr8145Frenchfr8146Frenchfr8147Frenchfr8148Frenchfr8149Frenchfr815Frenchfr8150Frenchfr8151Frenchfr8152Frenchfr8153Frenchfr8154Frenchfr8155Frenchfr8156Frenchfr8157Frenchfr8158Frenchfr8159Frenchfr816Frenchfr8160Frenchfr8161Frenchfr8162Frenchfr8163Frenchfr8164Frenchfr8165Frenchfr8166Frenchfr8167Frenchfr8168Frenchfr8169Frenchfr817Frenchfr8170Frenchfr8171Frenchfr8172Frenchfr8173Frenchfr8174Frenchfr8175Frenchfr8176Frenchfr8177Frenchfr8178Frenchfr8179Frenchfr818Frenchfr8180Frenchfr8181Frenchfr8182Frenchfr8183Frenchfr8184Frenchfr8185Frenchfr8186Frenchfr8187Frenchfr8188Frenchfr8189Frenchfr819Frenchfr8190Frenchfr8191Frenchfr82Frenchfr820Frenchfr821Frenchfr822Frenchfr823Frenchfr824Frenchfr825Frenchfr826Frenchfr827Frenchfr828Frenchfr829Frenchfr83Frenchfr830Frenchfr831Frenchfr832Frenchfr833Frenchfr834Frenchfr835Frenchfr836Frenchfr837Frenchfr838Frenchfr839Frenchfr84Frenchfr840Frenchfr841Frenchfr842Frenchfr843Frenchfr844Frenchfr845Frenchfr846Frenchfr847Frenchfr848Frenchfr849Frenchfr85Frenchfr850Frenchfr851Frenchfr852Frenchfr853Frenchfr854Frenchfr855Frenchfr856Frenchfr857Frenchfr858Frenchfr859Frenchfr86Frenchfr860Frenchfr861Frenchfr862Frenchfr863Frenchfr864Frenchfr865Frenchfr866Frenchfr867Frenchfr868Frenchfr869Frenchfr87Frenchfr870Frenchfr871Frenchfr872Frenchfr873Frenchfr874Frenchfr875Frenchfr876Frenchfr877Frenchfr878Frenchfr879Frenchfr88Frenchfr880Frenchfr881Frenchfr882Frenchfr883Frenchfr884Frenchfr885Frenchfr886Frenchfr887Frenchfr888Frenchfr889Frenchfr89Frenchfr890Frenchfr891Frenchfr892Frenchfr893Frenchfr894Frenchfr895Frenchfr896Frenchfr897Frenchfr898Frenchfr899Frenchfr9Frenchfr90Frenchfr900Frenchfr901Frenchfr902Frenchfr903Frenchfr904Frenchfr905Frenchfr906Frenchfr907Frenchfr908Frenchfr909Frenchfr91Frenchfr910Frenchfr911Frenchfr912Frenchfr913Frenchfr914Frenchfr915Frenchfr916Frenchfr917Frenchfr918Frenchfr919Frenchfr92Frenchfr920Frenchfr921Frenchfr922Frenchfr923Frenchfr924Frenchfr925Frenchfr926Frenchfr927Frenchfr928Frenchfr929Frenchfr93Frenchfr930Frenchfr931Frenchfr932Frenchfr933Frenchfr934Frenchfr935Frenchfr936Frenchfr937Frenchfr938Frenchfr939Frenchfr94Frenchfr940Frenchfr941Frenchfr942Frenchfr943Frenchfr944Frenchfr945Frenchfr946Frenchfr947Frenchfr948Frenchfr949Frenchfr95Frenchfr950Frenchfr951Frenchfr952Frenchfr953Frenchfr954Frenchfr955Frenchfr956Frenchfr957Frenchfr958Frenchfr959Frenchfr96Frenchfr960Frenchfr961Frenchfr962Frenchfr963Frenchfr964Frenchfr965Frenchfr966Frenchfr967Frenchfr968Frenchfr969Frenchfr97Frenchfr970Frenchfr971Frenchfr972Frenchfr973Frenchfr974Frenchfr975Frenchfr976Frenchfr977Frenchfr978Frenchfr979Frenchfr98Frenchfr980Frenchfr981Frenchfr982Frenchfr983Frenchfr984Frenchfr985Frenchfr986Frenchfr987Frenchfr988Frenchfr989Frenchfr99Frenchfr990Frenchfr991Frenchfr992Frenchfr993Frenchfr994Frenchfr995Frenchfr996Frenchfr997Frenchfr998Frenchfr999Frenchiu0 Inuktitutiu1 Inuktitutiu10 Inuktitutiu100 Inuktitutiu1000 Inuktitutiu1001 Inuktitutiu1002 Inuktitutiu1003 Inuktitutiu1004 Inuktitutiu1005 Inuktitutiu1006 Inuktitutiu1007 Inuktitutiu1008 Inuktitutiu1009 Inuktitutiu101 Inuktitutiu1010 Inuktitutiu1011 Inuktitutiu1012 Inuktitutiu1013 Inuktitutiu1014 Inuktitutiu1015 Inuktitutiu1016 Inuktitutiu1017 Inuktitutiu1018 Inuktitutiu1019 Inuktitutiu102 Inuktitutiu1020 Inuktitutiu1021 Inuktitutiu1022 Inuktitutiu1023 Inuktitutiu1024 Inuktitutiu1025 Inuktitutiu1026 Inuktitutiu1027 Inuktitutiu1028 Inuktitutiu1029 Inuktitutiu103 Inuktitutiu1030 Inuktitutiu1031 Inuktitutiu1032 Inuktitutiu1033 Inuktitutiu1034 Inuktitutiu1035 Inuktitutiu1036 Inuktitutiu1037 Inuktitutiu1038 Inuktitutiu1039 Inuktitutiu104 Inuktitutiu1040 Inuktitutiu1041 Inuktitutiu1042 Inuktitutiu1043 Inuktitutiu1044 Inuktitutiu1045 Inuktitutiu1046 Inuktitutiu1047 Inuktitutiu1048 Inuktitutiu1049 Inuktitutiu105 Inuktitutiu1050 Inuktitutiu1051 Inuktitutiu1052 Inuktitutiu1053 Inuktitutiu1054 Inuktitutiu1055 Inuktitutiu1056 Inuktitutiu1057 Inuktitutiu1058 Inuktitutiu1059 Inuktitutiu106 Inuktitutiu1060 Inuktitutiu1061 Inuktitutiu1062 Inuktitutiu1063 Inuktitutiu1064 Inuktitutiu1065 Inuktitutiu1066 Inuktitutiu1067 Inuktitutiu1068 Inuktitutiu1069 Inuktitutiu107 Inuktitutiu1070 Inuktitutiu1071 Inuktitutiu1072 Inuktitutiu1073 Inuktitutiu1074 Inuktitutiu1075 Inuktitutiu1076 Inuktitutiu1077 Inuktitutiu1078 Inuktitutiu1079 Inuktitutiu108 Inuktitutiu1080 Inuktitutiu1081 Inuktitutiu1082 Inuktitutiu1083 Inuktitutiu1084 Inuktitutiu1085 Inuktitutiu1086 Inuktitutiu1087 Inuktitutiu1088 Inuktitutiu1089 Inuktitutiu109 Inuktitutiu1090 Inuktitutiu1091 Inuktitutiu1092 Inuktitutiu1093 Inuktitutiu1094 Inuktitutiu1095 Inuktitutiu1096 Inuktitutiu1097 Inuktitutiu1098 Inuktitutiu1099 Inuktitutiu11 Inuktitutiu110 Inuktitutiu1100 Inuktitutiu1101 Inuktitutiu1102 Inuktitutiu1103 Inuktitutiu1104 Inuktitutiu1105 Inuktitutiu1106 Inuktitutiu1107 Inuktitutiu1108 Inuktitutiu1109 Inuktitutiu111 Inuktitutiu1110 Inuktitutiu1111 Inuktitutiu1112 Inuktitutiu1113 Inuktitutiu1114 Inuktitutiu1115 Inuktitutiu1116 Inuktitutiu1117 Inuktitutiu1118 Inuktitutiu1119 Inuktitutiu112 Inuktitutiu1120 Inuktitutiu1121 Inuktitutiu1122 Inuktitutiu1123 Inuktitutiu1124 Inuktitutiu1125 Inuktitutiu1126 Inuktitutiu1127 Inuktitutiu1128 Inuktitutiu1129 Inuktitutiu113 Inuktitutiu1130 Inuktitutiu1131 Inuktitutiu1132 Inuktitutiu1133 Inuktitutiu1134 Inuktitutiu1135 Inuktitutiu1136 Inuktitutiu1137 Inuktitutiu1138 Inuktitutiu1139 Inuktitutiu114 Inuktitutiu1140 Inuktitutiu1141 Inuktitutiu1142 Inuktitutiu1143 Inuktitutiu1144 Inuktitutiu1145 Inuktitutiu1146 Inuktitutiu1147 Inuktitutiu1148 Inuktitutiu1149 Inuktitutiu115 Inuktitutiu1150 Inuktitutiu1151 Inuktitutiu1152 Inuktitutiu1153 Inuktitutiu1154 Inuktitutiu1155 Inuktitutiu1156 Inuktitutiu1157 Inuktitutiu1158 Inuktitutiu1159 Inuktitutiu116 Inuktitutiu1160 Inuktitutiu1161 Inuktitutiu1162 Inuktitutiu1163 Inuktitutiu1164 Inuktitutiu1165 Inuktitutiu1166 Inuktitutiu1167 Inuktitutiu1168 Inuktitutiu1169 Inuktitutiu117 Inuktitutiu1170 Inuktitutiu1171 Inuktitutiu1172 Inuktitutiu1173 Inuktitutiu1174 Inuktitutiu1175 Inuktitutiu1176 Inuktitutiu1177 Inuktitutiu1178 Inuktitutiu1179 Inuktitutiu118 Inuktitutiu1180 Inuktitutiu1181 Inuktitutiu1182 Inuktitutiu1183 Inuktitutiu1184 Inuktitutiu1185 Inuktitutiu1186 Inuktitutiu1187 Inuktitutiu1188 Inuktitutiu1189 Inuktitutiu119 Inuktitutiu1190 Inuktitutiu1191 Inuktitutiu1192 Inuktitutiu1193 Inuktitutiu1194 Inuktitutiu1195 Inuktitutiu1196 Inuktitutiu1197 Inuktitutiu1198 Inuktitutiu1199 Inuktitutiu12 Inuktitutiu120 Inuktitutiu1200 Inuktitutiu1201 Inuktitutiu1202 Inuktitutiu1203 Inuktitutiu1204 Inuktitutiu1205 Inuktitutiu1206 Inuktitutiu1207 Inuktitutiu1208 Inuktitutiu1209 Inuktitutiu121 Inuktitutiu1210 Inuktitutiu1211 Inuktitutiu1212 Inuktitutiu1213 Inuktitutiu1214 Inuktitutiu1215 Inuktitutiu1216 Inuktitutiu1217 Inuktitutiu1218 Inuktitutiu1219 Inuktitutiu122 Inuktitutiu1220 Inuktitutiu1221 Inuktitutiu1222 Inuktitutiu1223 Inuktitutiu1224 Inuktitutiu1225 Inuktitutiu1226 Inuktitutiu1227 Inuktitutiu1228 Inuktitutiu1229 Inuktitutiu123 Inuktitutiu1230 Inuktitutiu1231 Inuktitutiu1232 Inuktitutiu1233 Inuktitutiu1234 Inuktitutiu1235 Inuktitutiu1236 Inuktitutiu1237 Inuktitutiu1238 Inuktitutiu1239 Inuktitutiu124 Inuktitutiu1240 Inuktitutiu1241 Inuktitutiu1242 Inuktitutiu1243 Inuktitutiu1244 Inuktitutiu1245 Inuktitutiu1246 Inuktitutiu1247 Inuktitutiu1248 Inuktitutiu1249 Inuktitutiu125 Inuktitutiu1250 Inuktitutiu1251 Inuktitutiu1252 Inuktitutiu1253 Inuktitutiu1254 Inuktitutiu1255 Inuktitutiu1256 Inuktitutiu1257 Inuktitutiu1258 Inuktitutiu1259 Inuktitutiu126 Inuktitutiu1260 Inuktitutiu1261 Inuktitutiu1262 Inuktitutiu1263 Inuktitutiu1264 Inuktitutiu1265 Inuktitutiu1266 Inuktitutiu1267 Inuktitutiu1268 Inuktitutiu1269 Inuktitutiu127 Inuktitutiu1270 Inuktitutiu1271 Inuktitutiu1272 Inuktitutiu1273 Inuktitutiu1274 Inuktitutiu1275 Inuktitutiu1276 Inuktitutiu1277 Inuktitutiu1278 Inuktitutiu1279 Inuktitutiu128 Inuktitutiu1280 Inuktitutiu1281 Inuktitutiu1282 Inuktitutiu1283 Inuktitutiu1284 Inuktitutiu1285 Inuktitutiu1286 Inuktitutiu1287 Inuktitutiu1288 Inuktitutiu1289 Inuktitutiu129 Inuktitutiu1290 Inuktitutiu1291 Inuktitutiu1292 Inuktitutiu1293 Inuktitutiu1294 Inuktitutiu1295 Inuktitutiu1296 Inuktitutiu1297 Inuktitutiu1298 Inuktitutiu1299 Inuktitutiu13 Inuktitutiu130 Inuktitutiu1300 Inuktitutiu1301 Inuktitutiu1302 Inuktitutiu1303 Inuktitutiu1304 Inuktitutiu1305 Inuktitutiu1306 Inuktitutiu1307 Inuktitutiu1308 Inuktitutiu1309 Inuktitutiu131 Inuktitutiu1310 Inuktitutiu1311 Inuktitutiu1312 Inuktitutiu1313 Inuktitutiu1314 Inuktitutiu1315 Inuktitutiu1316 Inuktitutiu1317 Inuktitutiu1318 Inuktitutiu1319 Inuktitutiu132 Inuktitutiu1320 Inuktitutiu1321 Inuktitutiu1322 Inuktitutiu1323 Inuktitutiu1324 Inuktitutiu1325 Inuktitutiu1326 Inuktitutiu1327 Inuktitutiu1328 Inuktitutiu1329 Inuktitutiu133 Inuktitutiu1330 Inuktitutiu1331 Inuktitutiu1332 Inuktitutiu1333 Inuktitutiu1334 Inuktitutiu1335 Inuktitutiu1336 Inuktitutiu1337 Inuktitutiu1338 Inuktitutiu1339 Inuktitutiu134 Inuktitutiu1340 Inuktitutiu1341 Inuktitutiu1342 Inuktitutiu1343 Inuktitutiu1344 Inuktitutiu1345 Inuktitutiu1346 Inuktitutiu1347 Inuktitutiu1348 Inuktitutiu1349 Inuktitutiu135 Inuktitutiu1350 Inuktitutiu1351 Inuktitutiu1352 Inuktitutiu1353 Inuktitutiu1354 Inuktitutiu1355 Inuktitutiu1356 Inuktitutiu1357 Inuktitutiu1358 Inuktitutiu1359 Inuktitutiu136 Inuktitutiu1360 Inuktitutiu1361 Inuktitutiu1362 Inuktitutiu1363 Inuktitutiu1364 Inuktitutiu1365 Inuktitutiu1366 Inuktitutiu1367 Inuktitutiu1368 Inuktitutiu1369 Inuktitutiu137 Inuktitutiu1370 Inuktitutiu1371 Inuktitutiu1372 Inuktitutiu1373 Inuktitutiu1374 Inuktitutiu1375 Inuktitutiu1376 Inuktitutiu1377 Inuktitutiu1378 Inuktitutiu1379 Inuktitutiu138 Inuktitutiu1380 Inuktitutiu1381 Inuktitutiu1382 Inuktitutiu1383 Inuktitutiu1384 Inuktitutiu1385 Inuktitutiu1386 Inuktitutiu1387 Inuktitutiu1388 Inuktitutiu1389 Inuktitutiu139 Inuktitutiu1390 Inuktitutiu1391 Inuktitutiu1392 Inuktitutiu1393 Inuktitutiu1394 Inuktitutiu1395 Inuktitutiu1396 Inuktitutiu1397 Inuktitutiu1398 Inuktitutiu1399 Inuktitutiu14 Inuktitutiu140 Inuktitutiu1400 Inuktitutiu1401 Inuktitutiu1402 Inuktitutiu1403 Inuktitutiu1404 Inuktitutiu1405 Inuktitutiu1406 Inuktitutiu1407 Inuktitutiu1408 Inuktitutiu1409 Inuktitutiu141 Inuktitutiu1410 Inuktitutiu1411 Inuktitutiu1412 Inuktitutiu1413 Inuktitutiu1414 Inuktitutiu1415 Inuktitutiu1416 Inuktitutiu1417 Inuktitutiu1418 Inuktitutiu1419 Inuktitutiu142 Inuktitutiu1420 Inuktitutiu1421 Inuktitutiu1422 Inuktitutiu1423 Inuktitutiu1424 Inuktitutiu1425 Inuktitutiu1426 Inuktitutiu1427 Inuktitutiu1428 Inuktitutiu1429 Inuktitutiu143 Inuktitutiu1430 Inuktitutiu1431 Inuktitutiu1432 Inuktitutiu1433 Inuktitutiu1434 Inuktitutiu1435 Inuktitutiu1436 Inuktitutiu1437 Inuktitutiu1438 Inuktitutiu1439 Inuktitutiu144 Inuktitutiu1440 Inuktitutiu1441 Inuktitutiu1442 Inuktitutiu1443 Inuktitutiu1444 Inuktitutiu1445 Inuktitutiu1446 Inuktitutiu1447 Inuktitutiu1448 Inuktitutiu1449 Inuktitutiu145 Inuktitutiu1450 Inuktitutiu1451 Inuktitutiu1452 Inuktitutiu1453 Inuktitutiu1454 Inuktitutiu1455 Inuktitutiu1456 Inuktitutiu1457 Inuktitutiu1458 Inuktitutiu1459 Inuktitutiu146 Inuktitutiu1460 Inuktitutiu1461 Inuktitutiu1462 Inuktitutiu1463 Inuktitutiu1464 Inuktitutiu1465 Inuktitutiu1466 Inuktitutiu1467 Inuktitutiu1468 Inuktitutiu1469 Inuktitutiu147 Inuktitutiu1470 Inuktitutiu1471 Inuktitutiu1472 Inuktitutiu1473 Inuktitutiu1474 Inuktitutiu1475 Inuktitutiu1476 Inuktitutiu1477 Inuktitutiu1478 Inuktitutiu1479 Inuktitutiu148 Inuktitutiu1480 Inuktitutiu1481 Inuktitutiu1482 Inuktitutiu1483 Inuktitutiu1484 Inuktitutiu1485 Inuktitutiu1486 Inuktitutiu1487 Inuktitutiu1488 Inuktitutiu1489 Inuktitutiu149 Inuktitutiu1490 Inuktitutiu1491 Inuktitutiu1492 Inuktitutiu1493 Inuktitutiu1494 Inuktitutiu1495 Inuktitutiu1496 Inuktitutiu1497 Inuktitutiu1498 Inuktitutiu1499 Inuktitutiu15 Inuktitutiu150 Inuktitutiu1500 Inuktitutiu1501 Inuktitutiu1502 Inuktitutiu1503 Inuktitutiu1504 Inuktitutiu1505 Inuktitutiu1506 Inuktitutiu1507 Inuktitutiu1508 Inuktitutiu1509 Inuktitutiu151 Inuktitutiu1510 Inuktitutiu1511 Inuktitutiu1512 Inuktitutiu1513 Inuktitutiu1514 Inuktitutiu1515 Inuktitutiu1516 Inuktitutiu1517 Inuktitutiu1518 Inuktitutiu1519 Inuktitutiu152 Inuktitutiu1520 Inuktitutiu1521 Inuktitutiu1522 Inuktitutiu1523 Inuktitutiu1524 Inuktitutiu1525 Inuktitutiu1526 Inuktitutiu1527 Inuktitutiu1528 Inuktitutiu1529 Inuktitutiu153 Inuktitutiu1530 Inuktitutiu1531 Inuktitutiu1532 Inuktitutiu1533 Inuktitutiu1534 Inuktitutiu1535 Inuktitutiu1536 Inuktitutiu1537 Inuktitutiu1538 Inuktitutiu1539 Inuktitutiu154 Inuktitutiu1540 Inuktitutiu1541 Inuktitutiu1542 Inuktitutiu1543 Inuktitutiu1544 Inuktitutiu1545 Inuktitutiu1546 Inuktitutiu1547 Inuktitutiu1548 Inuktitutiu1549 Inuktitutiu155 Inuktitutiu1550 Inuktitutiu1551 Inuktitutiu1552 Inuktitutiu1553 Inuktitutiu1554 Inuktitutiu1555 Inuktitutiu1556 Inuktitutiu1557 Inuktitutiu1558 Inuktitutiu1559 Inuktitutiu156 Inuktitutiu1560 Inuktitutiu1561 Inuktitutiu1562 Inuktitutiu1563 Inuktitutiu1564 Inuktitutiu1565 Inuktitutiu1566 Inuktitutiu1567 Inuktitutiu1568 Inuktitutiu1569 Inuktitutiu157 Inuktitutiu1570 Inuktitutiu1571 Inuktitutiu1572 Inuktitutiu1573 Inuktitutiu1574 Inuktitutiu1575 Inuktitutiu1576 Inuktitutiu1577 Inuktitutiu1578 Inuktitutiu1579 Inuktitutiu158 Inuktitutiu1580 Inuktitutiu1581 Inuktitutiu1582 Inuktitutiu1583 Inuktitutiu1584 Inuktitutiu1585 Inuktitutiu1586 Inuktitutiu1587 Inuktitutiu1588 Inuktitutiu1589 Inuktitutiu159 Inuktitutiu1590 Inuktitutiu1591 Inuktitutiu1592 Inuktitutiu1593 Inuktitutiu1594 Inuktitutiu1595 Inuktitutiu1596 Inuktitutiu1597 Inuktitutiu1598 Inuktitutiu1599 Inuktitutiu16 Inuktitutiu160 Inuktitutiu1600 Inuktitutiu1601 Inuktitutiu1602 Inuktitutiu1603 Inuktitutiu1604 Inuktitutiu1605 Inuktitutiu1606 Inuktitutiu1607 Inuktitutiu1608 Inuktitutiu1609 Inuktitutiu161 Inuktitutiu1610 Inuktitutiu1611 Inuktitutiu1612 Inuktitutiu1613 Inuktitutiu1614 Inuktitutiu1615 Inuktitutiu1616 Inuktitutiu1617 Inuktitutiu1618 Inuktitutiu1619 Inuktitutiu162 Inuktitutiu1620 Inuktitutiu1621 Inuktitutiu1622 Inuktitutiu1623 Inuktitutiu1624 Inuktitutiu1625 Inuktitutiu1626 Inuktitutiu1627 Inuktitutiu1628 Inuktitutiu1629 Inuktitutiu163 Inuktitutiu1630 Inuktitutiu1631 Inuktitutiu1632 Inuktitutiu1633 Inuktitutiu1634 Inuktitutiu1635 Inuktitutiu1636 Inuktitutiu1637 Inuktitutiu1638 Inuktitutiu1639 Inuktitutiu164 Inuktitutiu1640 Inuktitutiu1641 Inuktitutiu1642 Inuktitutiu1643 Inuktitutiu1644 Inuktitutiu1645 Inuktitutiu1646 Inuktitutiu1647 Inuktitutiu1648 Inuktitutiu1649 Inuktitutiu165 Inuktitutiu1650 Inuktitutiu1651 Inuktitutiu1652 Inuktitutiu1653 Inuktitutiu1654 Inuktitutiu1655 Inuktitutiu1656 Inuktitutiu1657 Inuktitutiu1658 Inuktitutiu1659 Inuktitutiu166 Inuktitutiu1660 Inuktitutiu1661 Inuktitutiu1662 Inuktitutiu1663 Inuktitutiu1664 Inuktitutiu1665 Inuktitutiu1666 Inuktitutiu1667 Inuktitutiu1668 Inuktitutiu1669 Inuktitutiu167 Inuktitutiu1670 Inuktitutiu1671 Inuktitutiu1672 Inuktitutiu1673 Inuktitutiu1674 Inuktitutiu1675 Inuktitutiu1676 Inuktitutiu1677 Inuktitutiu1678 Inuktitutiu1679 Inuktitutiu168 Inuktitutiu1680 Inuktitutiu1681 Inuktitutiu1682 Inuktitutiu1683 Inuktitutiu1684 Inuktitutiu1685 Inuktitutiu1686 Inuktitutiu1687 Inuktitutiu1688 Inuktitutiu1689 Inuktitutiu169 Inuktitutiu1690 Inuktitutiu1691 Inuktitutiu1692 Inuktitutiu1693 Inuktitutiu1694 Inuktitutiu1695 Inuktitutiu1696 Inuktitutiu1697 Inuktitutiu1698 Inuktitutiu1699 Inuktitutiu17 Inuktitutiu170 Inuktitutiu1700 Inuktitutiu1701 Inuktitutiu1702 Inuktitutiu1703 Inuktitutiu1704 Inuktitutiu1705 Inuktitutiu1706 Inuktitutiu1707 Inuktitutiu1708 Inuktitutiu1709 Inuktitutiu171 Inuktitutiu1710 Inuktitutiu1711 Inuktitutiu1712 Inuktitutiu1713 Inuktitutiu1714 Inuktitutiu1715 Inuktitutiu1716 Inuktitutiu1717 Inuktitutiu1718 Inuktitutiu1719 Inuktitutiu172 Inuktitutiu1720 Inuktitutiu1721 Inuktitutiu1722 Inuktitutiu1723 Inuktitutiu1724 Inuktitutiu1725 Inuktitutiu1726 Inuktitutiu1727 Inuktitutiu1728 Inuktitutiu1729 Inuktitutiu173 Inuktitutiu1730 Inuktitutiu1731 Inuktitutiu1732 Inuktitutiu1733 Inuktitutiu1734 Inuktitutiu1735 Inuktitutiu1736 Inuktitutiu1737 Inuktitutiu1738 Inuktitutiu1739 Inuktitutiu174 Inuktitutiu1740 Inuktitutiu1741 Inuktitutiu1742 Inuktitutiu1743 Inuktitutiu1744 Inuktitutiu1745 Inuktitutiu1746 Inuktitutiu1747 Inuktitutiu1748 Inuktitutiu1749 Inuktitutiu175 Inuktitutiu1750 Inuktitutiu1751 Inuktitutiu1752 Inuktitutiu1753 Inuktitutiu1754 Inuktitutiu1755 Inuktitutiu1756 Inuktitutiu1757 Inuktitutiu1758 Inuktitutiu1759 Inuktitutiu176 Inuktitutiu1760 Inuktitutiu1761 Inuktitutiu1762 Inuktitutiu1763 Inuktitutiu1764 Inuktitutiu1765 Inuktitutiu1766 Inuktitutiu1767 Inuktitutiu1768 Inuktitutiu1769 Inuktitutiu177 Inuktitutiu1770 Inuktitutiu1771 Inuktitutiu1772 Inuktitutiu1773 Inuktitutiu1774 Inuktitutiu1775 Inuktitutiu1776 Inuktitutiu1777 Inuktitutiu1778 Inuktitutiu1779 Inuktitutiu178 Inuktitutiu1780 Inuktitutiu1781 Inuktitutiu1782 Inuktitutiu1783 Inuktitutiu1784 Inuktitutiu1785 Inuktitutiu1786 Inuktitutiu1787 Inuktitutiu1788 Inuktitutiu1789 Inuktitutiu179 Inuktitutiu1790 Inuktitutiu1791 Inuktitutiu1792 Inuktitutiu1793 Inuktitutiu1794 Inuktitutiu1795 Inuktitutiu1796 Inuktitutiu1797 Inuktitutiu1798 Inuktitutiu1799 Inuktitutiu18 Inuktitutiu180 Inuktitutiu1800 Inuktitutiu1801 Inuktitutiu1802 Inuktitutiu1803 Inuktitutiu1804 Inuktitutiu1805 Inuktitutiu1806 Inuktitutiu1807 Inuktitutiu1808 Inuktitutiu1809 Inuktitutiu181 Inuktitutiu1810 Inuktitutiu1811 Inuktitutiu1812 Inuktitutiu1813 Inuktitutiu1814 Inuktitutiu1815 Inuktitutiu1816 Inuktitutiu1817 Inuktitutiu1818 Inuktitutiu1819 Inuktitutiu182 Inuktitutiu1820 Inuktitutiu1821 Inuktitutiu1822 Inuktitutiu1823 Inuktitutiu1824 Inuktitutiu1825 Inuktitutiu1826 Inuktitutiu1827 Inuktitutiu1828 Inuktitutiu1829 Inuktitutiu183 Inuktitutiu1830 Inuktitutiu1831 Inuktitutiu1832 Inuktitutiu1833 Inuktitutiu1834 Inuktitutiu1835 Inuktitutiu1836 Inuktitutiu1837 Inuktitutiu1838 Inuktitutiu1839 Inuktitutiu184 Inuktitutiu1840 Inuktitutiu1841 Inuktitutiu1842 Inuktitutiu1843 Inuktitutiu1844 Inuktitutiu1845 Inuktitutiu1846 Inuktitutiu1847 Inuktitutiu1848 Inuktitutiu1849 Inuktitutiu185 Inuktitutiu1850 Inuktitutiu1851 Inuktitutiu1852 Inuktitutiu1853 Inuktitutiu1854 Inuktitutiu1855 Inuktitutiu1856 Inuktitutiu1857 Inuktitutiu1858 Inuktitutiu1859 Inuktitutiu186 Inuktitutiu1860 Inuktitutiu1861 Inuktitutiu1862 Inuktitutiu1863 Inuktitutiu1864 Inuktitutiu1865 Inuktitutiu1866 Inuktitutiu1867 Inuktitutiu1868 Inuktitutiu1869 Inuktitutiu187 Inuktitutiu1870 Inuktitutiu1871 Inuktitutiu1872 Inuktitutiu1873 Inuktitutiu1874 Inuktitutiu1875 Inuktitutiu1876 Inuktitutiu1877 Inuktitutiu1878 Inuktitutiu1879 Inuktitutiu188 Inuktitutiu1880 Inuktitutiu1881 Inuktitutiu1882 Inuktitutiu1883 Inuktitutiu1884 Inuktitutiu1885 Inuktitutiu1886 Inuktitutiu1887 Inuktitutiu1888 Inuktitutiu1889 Inuktitutiu189 Inuktitutiu1890 Inuktitutiu1891 Inuktitutiu1892 Inuktitutiu1893 Inuktitutiu1894 Inuktitutiu1895 Inuktitutiu1896 Inuktitutiu1897 Inuktitutiu1898 Inuktitutiu1899 Inuktitutiu19 Inuktitutiu190 Inuktitutiu1900 Inuktitutiu1901 Inuktitutiu1902 Inuktitutiu1903 Inuktitutiu1904 Inuktitutiu1905 Inuktitutiu1906 Inuktitutiu1907 Inuktitutiu1908 Inuktitutiu1909 Inuktitutiu191 Inuktitutiu1910 Inuktitutiu1911 Inuktitutiu1912 Inuktitutiu1913 Inuktitutiu1914 Inuktitutiu1915 Inuktitutiu1916 Inuktitutiu1917 Inuktitutiu1918 Inuktitutiu1919 Inuktitutiu192 Inuktitutiu1920 Inuktitutiu1921 Inuktitutiu1922 Inuktitutiu1923 Inuktitutiu1924 Inuktitutiu1925 Inuktitutiu1926 Inuktitutiu1927 Inuktitutiu1928 Inuktitutiu1929 Inuktitutiu193 Inuktitutiu1930 Inuktitutiu1931 Inuktitutiu1932 Inuktitutiu1933 Inuktitutiu1934 Inuktitutiu1935 Inuktitutiu1936 Inuktitutiu1937 Inuktitutiu1938 Inuktitutiu1939 Inuktitutiu194 Inuktitutiu1940 Inuktitutiu1941 Inuktitutiu1942 Inuktitutiu1943 Inuktitutiu1944 Inuktitutiu1945 Inuktitutiu1946 Inuktitutiu1947 Inuktitutiu1948 Inuktitutiu1949 Inuktitutiu195 Inuktitutiu1950 Inuktitutiu1951 Inuktitutiu1952 Inuktitutiu1953 Inuktitutiu1954 Inuktitutiu1955 Inuktitutiu1956 Inuktitutiu1957 Inuktitutiu1958 Inuktitutiu1959 Inuktitutiu196 Inuktitutiu1960 Inuktitutiu1961 Inuktitutiu1962 Inuktitutiu1963 Inuktitutiu1964 Inuktitutiu1965 Inuktitutiu1966 Inuktitutiu1967 Inuktitutiu1968 Inuktitutiu1969 Inuktitutiu197 Inuktitutiu1970 Inuktitutiu1971 Inuktitutiu1972 Inuktitutiu1973 Inuktitutiu1974 Inuktitutiu1975 Inuktitutiu1976 Inuktitutiu1977 Inuktitutiu1978 Inuktitutiu1979 Inuktitutiu198 Inuktitutiu1980 Inuktitutiu1981 Inuktitutiu1982 Inuktitutiu1983 Inuktitutiu1984 Inuktitutiu1985 Inuktitutiu1986 Inuktitutiu1987 Inuktitutiu1988 Inuktitutiu1989 Inuktitutiu199 Inuktitutiu1990 Inuktitutiu1991 Inuktitutiu1992 Inuktitutiu1993 Inuktitutiu1994 Inuktitutiu1995 Inuktitutiu1996 Inuktitutiu1997 Inuktitutiu1998 Inuktitutiu1999 Inuktitutiu2 Inuktitutiu20 Inuktitutiu200 Inuktitutiu2000 Inuktitutiu2001 Inuktitutiu2002 Inuktitutiu2003 Inuktitutiu2004 Inuktitutiu2005 Inuktitutiu2006 Inuktitutiu2007 Inuktitutiu2008 Inuktitutiu2009 Inuktitutiu201 Inuktitutiu2010 Inuktitutiu2011 Inuktitutiu2012 Inuktitutiu2013 Inuktitutiu2014 Inuktitutiu2015 Inuktitutiu2016 Inuktitutiu2017 Inuktitutiu2018 Inuktitutiu2019 Inuktitutiu202 Inuktitutiu2020 Inuktitutiu2021 Inuktitutiu2022 Inuktitutiu2023 Inuktitutiu2024 Inuktitutiu2025 Inuktitutiu2026 Inuktitutiu2027 Inuktitutiu2028 Inuktitutiu2029 Inuktitutiu203 Inuktitutiu2030 Inuktitutiu2031 Inuktitutiu2032 Inuktitutiu2033 Inuktitutiu2034 Inuktitutiu2035 Inuktitutiu2036 Inuktitutiu2037 Inuktitutiu2038 Inuktitutiu2039 Inuktitutiu204 Inuktitutiu2040 Inuktitutiu2041 Inuktitutiu2042 Inuktitutiu2043 Inuktitutiu2044 Inuktitutiu2045 Inuktitutiu2046 Inuktitutiu2047 Inuktitutiu2048 Inuktitutiu2049 Inuktitutiu205 Inuktitutiu2050 Inuktitutiu2051 Inuktitutiu2052 Inuktitutiu2053 Inuktitutiu2054 Inuktitutiu2055 Inuktitutiu2056 Inuktitutiu2057 Inuktitutiu2058 Inuktitutiu2059 Inuktitutiu206 Inuktitutiu2060 Inuktitutiu2061 Inuktitutiu2062 Inuktitutiu2063 Inuktitutiu2064 Inuktitutiu2065 Inuktitutiu2066 Inuktitutiu2067 Inuktitutiu2068 Inuktitutiu2069 Inuktitutiu207 Inuktitutiu2070 Inuktitutiu2071 Inuktitutiu2072 Inuktitutiu2073 Inuktitutiu2074 Inuktitutiu2075 Inuktitutiu2076 Inuktitutiu2077 Inuktitutiu2078 Inuktitutiu2079 Inuktitutiu208 Inuktitutiu2080 Inuktitutiu2081 Inuktitutiu2082 Inuktitutiu2083 Inuktitutiu2084 Inuktitutiu2085 Inuktitutiu2086 Inuktitutiu2087 Inuktitutiu2088 Inuktitutiu2089 Inuktitutiu209 Inuktitutiu2090 Inuktitutiu2091 Inuktitutiu2092 Inuktitutiu2093 Inuktitutiu2094 Inuktitutiu2095 Inuktitutiu2096 Inuktitutiu2097 Inuktitutiu2098 Inuktitutiu2099 Inuktitutiu21 Inuktitutiu210 Inuktitutiu2100 Inuktitutiu2101 Inuktitutiu2102 Inuktitutiu2103 Inuktitutiu2104 Inuktitutiu2105 Inuktitutiu2106 Inuktitutiu2107 Inuktitutiu2108 Inuktitutiu2109 Inuktitutiu211 Inuktitutiu2110 Inuktitutiu2111 Inuktitutiu2112 Inuktitutiu2113 Inuktitutiu2114 Inuktitutiu2115 Inuktitutiu2116 Inuktitutiu2117 Inuktitutiu2118 Inuktitutiu2119 Inuktitutiu212 Inuktitutiu2120 Inuktitutiu2121 Inuktitutiu2122 Inuktitutiu2123 Inuktitutiu2124 Inuktitutiu2125 Inuktitutiu2126 Inuktitutiu2127 Inuktitutiu2128 Inuktitutiu2129 Inuktitutiu213 Inuktitutiu2130 Inuktitutiu2131 Inuktitutiu2132 Inuktitutiu2133 Inuktitutiu2134 Inuktitutiu2135 Inuktitutiu2136 Inuktitutiu2137 Inuktitutiu2138 Inuktitutiu2139 Inuktitutiu214 Inuktitutiu2140 Inuktitutiu2141 Inuktitutiu2142 Inuktitutiu2143 Inuktitutiu2144 Inuktitutiu2145 Inuktitutiu2146 Inuktitutiu2147 Inuktitutiu2148 Inuktitutiu2149 Inuktitutiu215 Inuktitutiu2150 Inuktitutiu2151 Inuktitutiu2152 Inuktitutiu2153 Inuktitutiu2154 Inuktitutiu2155 Inuktitutiu2156 Inuktitutiu2157 Inuktitutiu2158 Inuktitutiu2159 Inuktitutiu216 Inuktitutiu2160 Inuktitutiu2161 Inuktitutiu2162 Inuktitutiu2163 Inuktitutiu2164 Inuktitutiu2165 Inuktitutiu2166 Inuktitutiu2167 Inuktitutiu2168 Inuktitutiu2169 Inuktitutiu217 Inuktitutiu2170 Inuktitutiu2171 Inuktitutiu2172 Inuktitutiu2173 Inuktitutiu2174 Inuktitutiu2175 Inuktitutiu2176 Inuktitutiu2177 Inuktitutiu2178 Inuktitutiu2179 Inuktitutiu218 Inuktitutiu2180 Inuktitutiu2181 Inuktitutiu2182 Inuktitutiu2183 Inuktitutiu2184 Inuktitutiu2185 Inuktitutiu2186 Inuktitutiu2187 Inuktitutiu2188 Inuktitutiu2189 Inuktitutiu219 Inuktitutiu2190 Inuktitutiu2191 Inuktitutiu2192 Inuktitutiu2193 Inuktitutiu2194 Inuktitutiu2195 Inuktitutiu2196 Inuktitutiu2197 Inuktitutiu2198 Inuktitutiu2199 Inuktitutiu22 Inuktitutiu220 Inuktitutiu2200 Inuktitutiu2201 Inuktitutiu2202 Inuktitutiu2203 Inuktitutiu2204 Inuktitutiu2205 Inuktitutiu2206 Inuktitutiu2207 Inuktitutiu2208 Inuktitutiu2209 Inuktitutiu221 Inuktitutiu2210 Inuktitutiu2211 Inuktitutiu2212 Inuktitutiu2213 Inuktitutiu2214 Inuktitutiu2215 Inuktitutiu2216 Inuktitutiu2217 Inuktitutiu2218 Inuktitutiu2219 Inuktitutiu222 Inuktitutiu2220 Inuktitutiu2221 Inuktitutiu2222 Inuktitutiu2223 Inuktitutiu2224 Inuktitutiu2225 Inuktitutiu2226 Inuktitutiu2227 Inuktitutiu2228 Inuktitutiu2229 Inuktitutiu223 Inuktitutiu2230 Inuktitutiu2231 Inuktitutiu2232 Inuktitutiu2233 Inuktitutiu2234 Inuktitutiu2235 Inuktitutiu2236 Inuktitutiu2237 Inuktitutiu2238 Inuktitutiu2239 Inuktitutiu224 Inuktitutiu2240 Inuktitutiu2241 Inuktitutiu2242 Inuktitutiu2243 Inuktitutiu2244 Inuktitutiu2245 Inuktitutiu2246 Inuktitutiu2247 Inuktitutiu2248 Inuktitutiu2249 Inuktitutiu225 Inuktitutiu2250 Inuktitutiu2251 Inuktitutiu2252 Inuktitutiu2253 Inuktitutiu2254 Inuktitutiu2255 Inuktitutiu2256 Inuktitutiu2257 Inuktitutiu2258 Inuktitutiu2259 Inuktitutiu226 Inuktitutiu2260 Inuktitutiu2261 Inuktitutiu2262 Inuktitutiu2263 Inuktitutiu2264 Inuktitutiu2265 Inuktitutiu2266 Inuktitutiu2267 Inuktitutiu2268 Inuktitutiu2269 Inuktitutiu227 Inuktitutiu2270 Inuktitutiu2271 Inuktitutiu2272 Inuktitutiu2273 Inuktitutiu2274 Inuktitutiu2275 Inuktitutiu2276 Inuktitutiu2277 Inuktitutiu2278 Inuktitutiu2279 Inuktitutiu228 Inuktitutiu2280 Inuktitutiu2281 Inuktitutiu2282 Inuktitutiu2283 Inuktitutiu2284 Inuktitutiu2285 Inuktitutiu2286 Inuktitutiu2287 Inuktitutiu2288 Inuktitutiu2289 Inuktitutiu229 Inuktitutiu2290 Inuktitutiu2291 Inuktitutiu2292 Inuktitutiu2293 Inuktitutiu2294 Inuktitutiu2295 Inuktitutiu2296 Inuktitutiu2297 Inuktitutiu2298 Inuktitutiu2299 Inuktitutiu23 Inuktitutiu230 Inuktitutiu2300 Inuktitutiu2301 Inuktitutiu2302 Inuktitutiu2303 Inuktitutiu2304 Inuktitutiu2305 Inuktitutiu2306 Inuktitutiu2307 Inuktitutiu2308 Inuktitutiu2309 Inuktitutiu231 Inuktitutiu2310 Inuktitutiu2311 Inuktitutiu2312 Inuktitutiu2313 Inuktitutiu2314 Inuktitutiu2315 Inuktitutiu2316 Inuktitutiu2317 Inuktitutiu2318 Inuktitutiu2319 Inuktitutiu232 Inuktitutiu2320 Inuktitutiu2321 Inuktitutiu2322 Inuktitutiu2323 Inuktitutiu2324 Inuktitutiu2325 Inuktitutiu2326 Inuktitutiu2327 Inuktitutiu2328 Inuktitutiu2329 Inuktitutiu233 Inuktitutiu2330 Inuktitutiu2331 Inuktitutiu2332 Inuktitutiu2333 Inuktitutiu2334 Inuktitutiu2335 Inuktitutiu2336 Inuktitutiu2337 Inuktitutiu2338 Inuktitutiu2339 Inuktitutiu234 Inuktitutiu2340 Inuktitutiu2341 Inuktitutiu2342 Inuktitutiu2343 Inuktitutiu2344 Inuktitutiu2345 Inuktitutiu2346 Inuktitutiu2347 Inuktitutiu2348 Inuktitutiu2349 Inuktitutiu235 Inuktitutiu2350 Inuktitutiu2351 Inuktitutiu2352 Inuktitutiu2353 Inuktitutiu2354 Inuktitutiu2355 Inuktitutiu2356 Inuktitutiu2357 Inuktitutiu2358 Inuktitutiu2359 Inuktitutiu236 Inuktitutiu2360 Inuktitutiu2361 Inuktitutiu2362 Inuktitutiu2363 Inuktitutiu2364 Inuktitutiu2365 Inuktitutiu2366 Inuktitutiu2367 Inuktitutiu2368 Inuktitutiu2369 Inuktitutiu237 Inuktitutiu2370 Inuktitutiu2371 Inuktitutiu2372 Inuktitutiu2373 Inuktitutiu2374 Inuktitutiu2375 Inuktitutiu2376 Inuktitutiu2377 Inuktitutiu2378 Inuktitutiu2379 Inuktitutiu238 Inuktitutiu2380 Inuktitutiu2381 Inuktitutiu2382 Inuktitutiu2383 Inuktitutiu2384 Inuktitutiu2385 Inuktitutiu2386 Inuktitutiu2387 Inuktitutiu2388 Inuktitutiu2389 Inuktitutiu239 Inuktitutiu2390 Inuktitutiu2391 Inuktitutiu2392 Inuktitutiu2393 Inuktitutiu2394 Inuktitutiu2395 Inuktitutiu2396 Inuktitutiu2397 Inuktitutiu2398 Inuktitutiu2399 Inuktitutiu24 Inuktitutiu240 Inuktitutiu2400 Inuktitutiu2401 Inuktitutiu2402 Inuktitutiu2403 Inuktitutiu2404 Inuktitutiu2405 Inuktitutiu2406 Inuktitutiu2407 Inuktitutiu2408 Inuktitutiu2409 Inuktitutiu241 Inuktitutiu2410 Inuktitutiu2411 Inuktitutiu2412 Inuktitutiu2413 Inuktitutiu2414 Inuktitutiu2415 Inuktitutiu2416 Inuktitutiu2417 Inuktitutiu2418 Inuktitutiu2419 Inuktitutiu242 Inuktitutiu2420 Inuktitutiu2421 Inuktitutiu2422 Inuktitutiu2423 Inuktitutiu2424 Inuktitutiu2425 Inuktitutiu2426 Inuktitutiu2427 Inuktitutiu2428 Inuktitutiu2429 Inuktitutiu243 Inuktitutiu2430 Inuktitutiu2431 Inuktitutiu2432 Inuktitutiu2433 Inuktitutiu2434 Inuktitutiu2435 Inuktitutiu2436 Inuktitutiu2437 Inuktitutiu2438 Inuktitutiu2439 Inuktitutiu244 Inuktitutiu2440 Inuktitutiu2441 Inuktitutiu2442 Inuktitutiu2443 Inuktitutiu2444 Inuktitutiu2445 Inuktitutiu2446 Inuktitutiu2447 Inuktitutiu2448 Inuktitutiu2449 Inuktitutiu245 Inuktitutiu2450 Inuktitutiu2451 Inuktitutiu2452 Inuktitutiu2453 Inuktitutiu2454 Inuktitutiu2455 Inuktitutiu2456 Inuktitutiu2457 Inuktitutiu2458 Inuktitutiu2459 Inuktitutiu246 Inuktitutiu2460 Inuktitutiu2461 Inuktitutiu2462 Inuktitutiu2463 Inuktitutiu2464 Inuktitutiu2465 Inuktitutiu2466 Inuktitutiu2467 Inuktitutiu2468 Inuktitutiu2469 Inuktitutiu247 Inuktitutiu2470 Inuktitutiu2471 Inuktitutiu2472 Inuktitutiu2473 Inuktitutiu2474 Inuktitutiu2475 Inuktitutiu2476 Inuktitutiu2477 Inuktitutiu2478 Inuktitutiu2479 Inuktitutiu248 Inuktitutiu2480 Inuktitutiu2481 Inuktitutiu2482 Inuktitutiu2483 Inuktitutiu2484 Inuktitutiu2485 Inuktitutiu2486 Inuktitutiu2487 Inuktitutiu2488 Inuktitutiu2489 Inuktitutiu249 Inuktitutiu2490 Inuktitutiu2491 Inuktitutiu2492 Inuktitutiu2493 Inuktitutiu2494 Inuktitutiu2495 Inuktitutiu2496 Inuktitutiu2497 Inuktitutiu2498 Inuktitutiu2499 Inuktitutiu25 Inuktitutiu250 Inuktitutiu2500 Inuktitutiu2501 Inuktitutiu2502 Inuktitutiu2503 Inuktitutiu2504 Inuktitutiu2505 Inuktitutiu2506 Inuktitutiu2507 Inuktitutiu2508 Inuktitutiu2509 Inuktitutiu251 Inuktitutiu2510 Inuktitutiu2511 Inuktitutiu2512 Inuktitutiu2513 Inuktitutiu2514 Inuktitutiu2515 Inuktitutiu2516 Inuktitutiu2517 Inuktitutiu2518 Inuktitutiu2519 Inuktitutiu252 Inuktitutiu2520 Inuktitutiu2521 Inuktitutiu2522 Inuktitutiu2523 Inuktitutiu2524 Inuktitutiu2525 Inuktitutiu2526 Inuktitutiu2527 Inuktitutiu2528 Inuktitutiu2529 Inuktitutiu253 Inuktitutiu2530 Inuktitutiu2531 Inuktitutiu2532 Inuktitutiu2533 Inuktitutiu2534 Inuktitutiu2535 Inuktitutiu2536 Inuktitutiu2537 Inuktitutiu2538 Inuktitutiu2539 Inuktitutiu254 Inuktitutiu2540 Inuktitutiu2541 Inuktitutiu2542 Inuktitutiu2543 Inuktitutiu2544 Inuktitutiu2545 Inuktitutiu2546 Inuktitutiu2547 Inuktitutiu2548 Inuktitutiu2549 Inuktitutiu255 Inuktitutiu2550 Inuktitutiu2551 Inuktitutiu2552 Inuktitutiu2553 Inuktitutiu2554 Inuktitutiu2555 Inuktitutiu2556 Inuktitutiu2557 Inuktitutiu2558 Inuktitutiu2559 Inuktitutiu256 Inuktitutiu2560 Inuktitutiu2561 Inuktitutiu2562 Inuktitutiu2563 Inuktitutiu2564 Inuktitutiu2565 Inuktitutiu2566 Inuktitutiu2567 Inuktitutiu2568 Inuktitutiu2569 Inuktitutiu257 Inuktitutiu2570 Inuktitutiu2571 Inuktitutiu2572 Inuktitutiu2573 Inuktitutiu2574 Inuktitutiu2575 Inuktitutiu2576 Inuktitutiu2577 Inuktitutiu2578 Inuktitutiu2579 Inuktitutiu258 Inuktitutiu2580 Inuktitutiu2581 Inuktitutiu2582 Inuktitutiu2583 Inuktitutiu2584 Inuktitutiu2585 Inuktitutiu2586 Inuktitutiu2587 Inuktitutiu2588 Inuktitutiu2589 Inuktitutiu259 Inuktitutiu2590 Inuktitutiu2591 Inuktitutiu2592 Inuktitutiu2593 Inuktitutiu2594 Inuktitutiu2595 Inuktitutiu2596 Inuktitutiu2597 Inuktitutiu2598 Inuktitutiu2599 Inuktitutiu26 Inuktitutiu260 Inuktitutiu2600 Inuktitutiu2601 Inuktitutiu2602 Inuktitutiu2603 Inuktitutiu2604 Inuktitutiu2605 Inuktitutiu2606 Inuktitutiu2607 Inuktitutiu2608 Inuktitutiu2609 Inuktitutiu261 Inuktitutiu2610 Inuktitutiu2611 Inuktitutiu2612 Inuktitutiu2613 Inuktitutiu2614 Inuktitutiu2615 Inuktitutiu2616 Inuktitutiu2617 Inuktitutiu2618 Inuktitutiu2619 Inuktitutiu262 Inuktitutiu2620 Inuktitutiu2621 Inuktitutiu2622 Inuktitutiu2623 Inuktitutiu2624 Inuktitutiu2625 Inuktitutiu2626 Inuktitutiu2627 Inuktitutiu2628 Inuktitutiu2629 Inuktitutiu263 Inuktitutiu2630 Inuktitutiu2631 Inuktitutiu2632 Inuktitutiu2633 Inuktitutiu2634 Inuktitutiu2635 Inuktitutiu2636 Inuktitutiu2637 Inuktitutiu2638 Inuktitutiu2639 Inuktitutiu264 Inuktitutiu2640 Inuktitutiu2641 Inuktitutiu2642 Inuktitutiu2643 Inuktitutiu2644 Inuktitutiu2645 Inuktitutiu2646 Inuktitutiu2647 Inuktitutiu2648 Inuktitutiu2649 Inuktitutiu265 Inuktitutiu2650 Inuktitutiu2651 Inuktitutiu2652 Inuktitutiu2653 Inuktitutiu2654 Inuktitutiu2655 Inuktitutiu2656 Inuktitutiu2657 Inuktitutiu2658 Inuktitutiu2659 Inuktitutiu266 Inuktitutiu2660 Inuktitutiu2661 Inuktitutiu2662 Inuktitutiu2663 Inuktitutiu2664 Inuktitutiu2665 Inuktitutiu2666 Inuktitutiu2667 Inuktitutiu2668 Inuktitutiu2669 Inuktitutiu267 Inuktitutiu2670 Inuktitutiu2671 Inuktitutiu2672 Inuktitutiu2673 Inuktitutiu2674 Inuktitutiu2675 Inuktitutiu2676 Inuktitutiu2677 Inuktitutiu2678 Inuktitutiu2679 Inuktitutiu268 Inuktitutiu2680 Inuktitutiu2681 Inuktitutiu2682 Inuktitutiu2683 Inuktitutiu2684 Inuktitutiu2685 Inuktitutiu2686 Inuktitutiu2687 Inuktitutiu2688 Inuktitutiu2689 Inuktitutiu269 Inuktitutiu2690 Inuktitutiu2691 Inuktitutiu2692 Inuktitutiu2693 Inuktitutiu2694 Inuktitutiu2695 Inuktitutiu2696 Inuktitutiu2697 Inuktitutiu2698 Inuktitutiu2699 Inuktitutiu27 Inuktitutiu270 Inuktitutiu2700 Inuktitutiu2701 Inuktitutiu2702 Inuktitutiu2703 Inuktitutiu2704 Inuktitutiu2705 Inuktitutiu2706 Inuktitutiu2707 Inuktitutiu2708 Inuktitutiu2709 Inuktitutiu271 Inuktitutiu2710 Inuktitutiu2711 Inuktitutiu2712 Inuktitutiu2713 Inuktitutiu2714 Inuktitutiu2715 Inuktitutiu2716 Inuktitutiu2717 Inuktitutiu2718 Inuktitutiu2719 Inuktitutiu272 Inuktitutiu2720 Inuktitutiu2721 Inuktitutiu2722 Inuktitutiu2723 Inuktitutiu2724 Inuktitutiu2725 Inuktitutiu2726 Inuktitutiu2727 Inuktitutiu2728 Inuktitutiu2729 Inuktitutiu273 Inuktitutiu2730 Inuktitutiu2731 Inuktitutiu2732 Inuktitutiu2733 Inuktitutiu2734 Inuktitutiu2735 Inuktitutiu2736 Inuktitutiu2737 Inuktitutiu2738 Inuktitutiu2739 Inuktitutiu274 Inuktitutiu2740 Inuktitutiu2741 Inuktitutiu2742 Inuktitutiu2743 Inuktitutiu2744 Inuktitutiu2745 Inuktitutiu2746 Inuktitutiu2747 Inuktitutiu2748 Inuktitutiu2749 Inuktitutiu275 Inuktitutiu2750 Inuktitutiu2751 Inuktitutiu2752 Inuktitutiu2753 Inuktitutiu2754 Inuktitutiu2755 Inuktitutiu2756 Inuktitutiu2757 Inuktitutiu2758 Inuktitutiu2759 Inuktitutiu276 Inuktitutiu2760 Inuktitutiu2761 Inuktitutiu2762 Inuktitutiu2763 Inuktitutiu2764 Inuktitutiu2765 Inuktitutiu2766 Inuktitutiu2767 Inuktitutiu2768 Inuktitutiu2769 Inuktitutiu277 Inuktitutiu2770 Inuktitutiu2771 Inuktitutiu2772 Inuktitutiu2773 Inuktitutiu2774 Inuktitutiu2775 Inuktitutiu2776 Inuktitutiu2777 Inuktitutiu2778 Inuktitutiu2779 Inuktitutiu278 Inuktitutiu2780 Inuktitutiu2781 Inuktitutiu2782 Inuktitutiu2783 Inuktitutiu2784 Inuktitutiu2785 Inuktitutiu2786 Inuktitutiu2787 Inuktitutiu2788 Inuktitutiu2789 Inuktitutiu279 Inuktitutiu2790 Inuktitutiu2791 Inuktitutiu2792 Inuktitutiu2793 Inuktitutiu2794 Inuktitutiu2795 Inuktitutiu2796 Inuktitutiu2797 Inuktitutiu2798 Inuktitutiu2799 Inuktitutiu28 Inuktitutiu280 Inuktitutiu2800 Inuktitutiu2801 Inuktitutiu2802 Inuktitutiu2803 Inuktitutiu2804 Inuktitutiu2805 Inuktitutiu2806 Inuktitutiu2807 Inuktitutiu2808 Inuktitutiu2809 Inuktitutiu281 Inuktitutiu2810 Inuktitutiu2811 Inuktitutiu2812 Inuktitutiu2813 Inuktitutiu2814 Inuktitutiu2815 Inuktitutiu2816 Inuktitutiu2817 Inuktitutiu2818 Inuktitutiu2819 Inuktitutiu282 Inuktitutiu2820 Inuktitutiu2821 Inuktitutiu2822 Inuktitutiu2823 Inuktitutiu2824 Inuktitutiu2825 Inuktitutiu2826 Inuktitutiu2827 Inuktitutiu2828 Inuktitutiu2829 Inuktitutiu283 Inuktitutiu2830 Inuktitutiu2831 Inuktitutiu2832 Inuktitutiu2833 Inuktitutiu2834 Inuktitutiu2835 Inuktitutiu2836 Inuktitutiu2837 Inuktitutiu2838 Inuktitutiu2839 Inuktitutiu284 Inuktitutiu2840 Inuktitutiu2841 Inuktitutiu2842 Inuktitutiu2843 Inuktitutiu2844 Inuktitutiu2845 Inuktitutiu2846 Inuktitutiu2847 Inuktitutiu2848 Inuktitutiu2849 Inuktitutiu285 Inuktitutiu2850 Inuktitutiu2851 Inuktitutiu2852 Inuktitutiu2853 Inuktitutiu2854 Inuktitutiu2855 Inuktitutiu2856 Inuktitutiu2857 Inuktitutiu2858 Inuktitutiu2859 Inuktitutiu286 Inuktitutiu2860 Inuktitutiu2861 Inuktitutiu2862 Inuktitutiu2863 Inuktitutiu2864 Inuktitutiu2865 Inuktitutiu2866 Inuktitutiu2867 Inuktitutiu2868 Inuktitutiu2869 Inuktitutiu287 Inuktitutiu2870 Inuktitutiu2871 Inuktitutiu2872 Inuktitutiu2873 Inuktitutiu2874 Inuktitutiu2875 Inuktitutiu2876 Inuktitutiu2877 Inuktitutiu2878 Inuktitutiu2879 Inuktitutiu288 Inuktitutiu2880 Inuktitutiu2881 Inuktitutiu2882 Inuktitutiu2883 Inuktitutiu2884 Inuktitutiu2885 Inuktitutiu2886 Inuktitutiu2887 Inuktitutiu2888 Inuktitutiu2889 Inuktitutiu289 Inuktitutiu2890 Inuktitutiu2891 Inuktitutiu2892 Inuktitutiu2893 Inuktitutiu2894 Inuktitutiu2895 Inuktitutiu2896 Inuktitutiu2897 Inuktitutiu2898 Inuktitutiu2899 Inuktitutiu29 Inuktitutiu290 Inuktitutiu2900 Inuktitutiu2901 Inuktitutiu2902 Inuktitutiu2903 Inuktitutiu2904 Inuktitutiu2905 Inuktitutiu2906 Inuktitutiu2907 Inuktitutiu2908 Inuktitutiu2909 Inuktitutiu291 Inuktitutiu2910 Inuktitutiu2911 Inuktitutiu2912 Inuktitutiu2913 Inuktitutiu2914 Inuktitutiu2915 Inuktitutiu2916 Inuktitutiu2917 Inuktitutiu2918 Inuktitutiu2919 Inuktitutiu292 Inuktitutiu2920 Inuktitutiu2921 Inuktitutiu2922 Inuktitutiu2923 Inuktitutiu2924 Inuktitutiu2925 Inuktitutiu2926 Inuktitutiu2927 Inuktitutiu2928 Inuktitutiu2929 Inuktitutiu293 Inuktitutiu2930 Inuktitutiu2931 Inuktitutiu2932 Inuktitutiu2933 Inuktitutiu2934 Inuktitutiu2935 Inuktitutiu2936 Inuktitutiu2937 Inuktitutiu2938 Inuktitutiu2939 Inuktitutiu294 Inuktitutiu2940 Inuktitutiu2941 Inuktitutiu2942 Inuktitutiu2943 Inuktitutiu2944 Inuktitutiu2945 Inuktitutiu2946 Inuktitutiu2947 Inuktitutiu2948 Inuktitutiu2949 Inuktitutiu295 Inuktitutiu2950 Inuktitutiu2951 Inuktitutiu2952 Inuktitutiu2953 Inuktitutiu2954 Inuktitutiu2955 Inuktitutiu2956 Inuktitutiu2957 Inuktitutiu2958 Inuktitutiu2959 Inuktitutiu296 Inuktitutiu2960 Inuktitutiu2961 Inuktitutiu2962 Inuktitutiu2963 Inuktitutiu2964 Inuktitutiu2965 Inuktitutiu2966 Inuktitutiu2967 Inuktitutiu2968 Inuktitutiu2969 Inuktitutiu297 Inuktitutiu2970 Inuktitutiu2971 Inuktitutiu2972 Inuktitutiu2973 Inuktitutiu2974 Inuktitutiu2975 Inuktitutiu2976 Inuktitutiu2977 Inuktitutiu2978 Inuktitutiu2979 Inuktitutiu298 Inuktitutiu2980 Inuktitutiu2981 Inuktitutiu2982 Inuktitutiu2983 Inuktitutiu2984 Inuktitutiu2985 Inuktitutiu2986 Inuktitutiu2987 Inuktitutiu2988 Inuktitutiu2989 Inuktitutiu299 Inuktitutiu2990 Inuktitutiu2991 Inuktitutiu2992 Inuktitutiu2993 Inuktitutiu2994 Inuktitutiu2995 Inuktitutiu2996 Inuktitutiu2997 Inuktitutiu2998 Inuktitutiu2999 Inuktitutiu3 Inuktitutiu30 Inuktitutiu300 Inuktitutiu3000 Inuktitutiu3001 Inuktitutiu3002 Inuktitutiu3003 Inuktitutiu3004 Inuktitutiu3005 Inuktitutiu3006 Inuktitutiu3007 Inuktitutiu3008 Inuktitutiu3009 Inuktitutiu301 Inuktitutiu3010 Inuktitutiu3011 Inuktitutiu3012 Inuktitutiu3013 Inuktitutiu3014 Inuktitutiu3015 Inuktitutiu3016 Inuktitutiu3017 Inuktitutiu3018 Inuktitutiu3019 Inuktitutiu302 Inuktitutiu3020 Inuktitutiu3021 Inuktitutiu3022 Inuktitutiu3023 Inuktitutiu3024 Inuktitutiu3025 Inuktitutiu3026 Inuktitutiu3027 Inuktitutiu3028 Inuktitutiu3029 Inuktitutiu303 Inuktitutiu3030 Inuktitutiu3031 Inuktitutiu3032 Inuktitutiu3033 Inuktitutiu3034 Inuktitutiu3035 Inuktitutiu3036 Inuktitutiu3037 Inuktitutiu3038 Inuktitutiu3039 Inuktitutiu304 Inuktitutiu3040 Inuktitutiu3041 Inuktitutiu3042 Inuktitutiu3043 Inuktitutiu3044 Inuktitutiu3045 Inuktitutiu3046 Inuktitutiu3047 Inuktitutiu3048 Inuktitutiu3049 Inuktitutiu305 Inuktitutiu3050 Inuktitutiu3051 Inuktitutiu3052 Inuktitutiu3053 Inuktitutiu3054 Inuktitutiu3055 Inuktitutiu3056 Inuktitutiu3057 Inuktitutiu3058 Inuktitutiu3059 Inuktitutiu306 Inuktitutiu3060 Inuktitutiu3061 Inuktitutiu3062 Inuktitutiu3063 Inuktitutiu3064 Inuktitutiu3065 Inuktitutiu3066 Inuktitutiu3067 Inuktitutiu3068 Inuktitutiu3069 Inuktitutiu307 Inuktitutiu3070 Inuktitutiu3071 Inuktitutiu3072 Inuktitutiu3073 Inuktitutiu3074 Inuktitutiu3075 Inuktitutiu3076 Inuktitutiu3077 Inuktitutiu3078 Inuktitutiu3079 Inuktitutiu308 Inuktitutiu3080 Inuktitutiu3081 Inuktitutiu3082 Inuktitutiu3083 Inuktitutiu3084 Inuktitutiu3085 Inuktitutiu3086 Inuktitutiu3087 Inuktitutiu3088 Inuktitutiu3089 Inuktitutiu309 Inuktitutiu3090 Inuktitutiu3091 Inuktitutiu3092 Inuktitutiu3093 Inuktitutiu3094 Inuktitutiu3095 Inuktitutiu3096 Inuktitutiu3097 Inuktitutiu3098 Inuktitutiu3099 Inuktitutiu31 Inuktitutiu310 Inuktitutiu3100 Inuktitutiu3101 Inuktitutiu3102 Inuktitutiu3103 Inuktitutiu3104 Inuktitutiu3105 Inuktitutiu3106 Inuktitutiu3107 Inuktitutiu3108 Inuktitutiu3109 Inuktitutiu311 Inuktitutiu3110 Inuktitutiu3111 Inuktitutiu3112 Inuktitutiu3113 Inuktitutiu3114 Inuktitutiu3115 Inuktitutiu3116 Inuktitutiu3117 Inuktitutiu3118 Inuktitutiu3119 Inuktitutiu312 Inuktitutiu3120 Inuktitutiu3121 Inuktitutiu3122 Inuktitutiu3123 Inuktitutiu3124 Inuktitutiu3125 Inuktitutiu3126 Inuktitutiu3127 Inuktitutiu3128 Inuktitutiu3129 Inuktitutiu313 Inuktitutiu3130 Inuktitutiu3131 Inuktitutiu3132 Inuktitutiu3133 Inuktitutiu3134 Inuktitutiu3135 Inuktitutiu3136 Inuktitutiu3137 Inuktitutiu3138 Inuktitutiu3139 Inuktitutiu314 Inuktitutiu3140 Inuktitutiu3141 Inuktitutiu3142 Inuktitutiu3143 Inuktitutiu3144 Inuktitutiu3145 Inuktitutiu3146 Inuktitutiu3147 Inuktitutiu3148 Inuktitutiu3149 Inuktitutiu315 Inuktitutiu3150 Inuktitutiu3151 Inuktitutiu3152 Inuktitutiu3153 Inuktitutiu3154 Inuktitutiu3155 Inuktitutiu3156 Inuktitutiu3157 Inuktitutiu3158 Inuktitutiu3159 Inuktitutiu316 Inuktitutiu3160 Inuktitutiu3161 Inuktitutiu3162 Inuktitutiu3163 Inuktitutiu3164 Inuktitutiu3165 Inuktitutiu3166 Inuktitutiu3167 Inuktitutiu3168 Inuktitutiu3169 Inuktitutiu317 Inuktitutiu3170 Inuktitutiu3171 Inuktitutiu3172 Inuktitutiu3173 Inuktitutiu3174 Inuktitutiu3175 Inuktitutiu3176 Inuktitutiu3177 Inuktitutiu3178 Inuktitutiu3179 Inuktitutiu318 Inuktitutiu3180 Inuktitutiu3181 Inuktitutiu3182 Inuktitutiu3183 Inuktitutiu3184 Inuktitutiu3185 Inuktitutiu3186 Inuktitutiu3187 Inuktitutiu3188 Inuktitutiu3189 Inuktitutiu319 Inuktitutiu3190 Inuktitutiu3191 Inuktitutiu3192 Inuktitutiu3193 Inuktitutiu3194 Inuktitutiu3195 Inuktitutiu3196 Inuktitutiu3197 Inuktitutiu3198 Inuktitutiu3199 Inuktitutiu32 Inuktitutiu320 Inuktitutiu3200 Inuktitutiu3201 Inuktitutiu3202 Inuktitutiu3203 Inuktitutiu3204 Inuktitutiu3205 Inuktitutiu3206 Inuktitutiu3207 Inuktitutiu3208 Inuktitutiu3209 Inuktitutiu321 Inuktitutiu3210 Inuktitutiu3211 Inuktitutiu3212 Inuktitutiu3213 Inuktitutiu3214 Inuktitutiu3215 Inuktitutiu3216 Inuktitutiu3217 Inuktitutiu3218 Inuktitutiu3219 Inuktitutiu322 Inuktitutiu3220 Inuktitutiu3221 Inuktitutiu3222 Inuktitutiu3223 Inuktitutiu3224 Inuktitutiu3225 Inuktitutiu3226 Inuktitutiu3227 Inuktitutiu3228 Inuktitutiu3229 Inuktitutiu323 Inuktitutiu3230 Inuktitutiu3231 Inuktitutiu3232 Inuktitutiu3233 Inuktitutiu3234 Inuktitutiu3235 Inuktitutiu3236 Inuktitutiu3237 Inuktitutiu3238 Inuktitutiu3239 Inuktitutiu324 Inuktitutiu3240 Inuktitutiu3241 Inuktitutiu3242 Inuktitutiu3243 Inuktitutiu3244 Inuktitutiu3245 Inuktitutiu3246 Inuktitutiu3247 Inuktitutiu3248 Inuktitutiu3249 Inuktitutiu325 Inuktitutiu3250 Inuktitutiu3251 Inuktitutiu3252 Inuktitutiu3253 Inuktitutiu3254 Inuktitutiu3255 Inuktitutiu3256 Inuktitutiu3257 Inuktitutiu3258 Inuktitutiu3259 Inuktitutiu326 Inuktitutiu3260 Inuktitutiu3261 Inuktitutiu3262 Inuktitutiu3263 Inuktitutiu3264 Inuktitutiu3265 Inuktitutiu3266 Inuktitutiu3267 Inuktitutiu3268 Inuktitutiu3269 Inuktitutiu327 Inuktitutiu3270 Inuktitutiu3271 Inuktitutiu3272 Inuktitutiu3273 Inuktitutiu3274 Inuktitutiu3275 Inuktitutiu3276 Inuktitutiu3277 Inuktitutiu3278 Inuktitutiu3279 Inuktitutiu328 Inuktitutiu3280 Inuktitutiu3281 Inuktitutiu3282 Inuktitutiu3283 Inuktitutiu3284 Inuktitutiu3285 Inuktitutiu3286 Inuktitutiu3287 Inuktitutiu3288 Inuktitutiu3289 Inuktitutiu329 Inuktitutiu3290 Inuktitutiu3291 Inuktitutiu3292 Inuktitutiu3293 Inuktitutiu3294 Inuktitutiu3295 Inuktitutiu3296 Inuktitutiu3297 Inuktitutiu3298 Inuktitutiu3299 Inuktitutiu33 Inuktitutiu330 Inuktitutiu3300 Inuktitutiu3301 Inuktitutiu3302 Inuktitutiu3303 Inuktitutiu3304 Inuktitutiu3305 Inuktitutiu3306 Inuktitutiu3307 Inuktitutiu3308 Inuktitutiu3309 Inuktitutiu331 Inuktitutiu3310 Inuktitutiu3311 Inuktitutiu3312 Inuktitutiu3313 Inuktitutiu3314 Inuktitutiu3315 Inuktitutiu3316 Inuktitutiu3317 Inuktitutiu3318 Inuktitutiu3319 Inuktitutiu332 Inuktitutiu3320 Inuktitutiu3321 Inuktitutiu3322 Inuktitutiu3323 Inuktitutiu3324 Inuktitutiu3325 Inuktitutiu3326 Inuktitutiu3327 Inuktitutiu3328 Inuktitutiu3329 Inuktitutiu333 Inuktitutiu3330 Inuktitutiu3331 Inuktitutiu3332 Inuktitutiu3333 Inuktitutiu3334 Inuktitutiu3335 Inuktitutiu3336 Inuktitutiu3337 Inuktitutiu3338 Inuktitutiu3339 Inuktitutiu334 Inuktitutiu3340 Inuktitutiu3341 Inuktitutiu3342 Inuktitutiu3343 Inuktitutiu3344 Inuktitutiu3345 Inuktitutiu3346 Inuktitutiu3347 Inuktitutiu3348 Inuktitutiu3349 Inuktitutiu335 Inuktitutiu3350 Inuktitutiu3351 Inuktitutiu3352 Inuktitutiu3353 Inuktitutiu3354 Inuktitutiu3355 Inuktitutiu3356 Inuktitutiu3357 Inuktitutiu3358 Inuktitutiu3359 Inuktitutiu336 Inuktitutiu3360 Inuktitutiu3361 Inuktitutiu3362 Inuktitutiu3363 Inuktitutiu3364 Inuktitutiu3365 Inuktitutiu3366 Inuktitutiu3367 Inuktitutiu3368 Inuktitutiu3369 Inuktitutiu337 Inuktitutiu3370 Inuktitutiu3371 Inuktitutiu3372 Inuktitutiu3373 Inuktitutiu3374 Inuktitutiu3375 Inuktitutiu3376 Inuktitutiu3377 Inuktitutiu3378 Inuktitutiu3379 Inuktitutiu338 Inuktitutiu3380 Inuktitutiu3381 Inuktitutiu3382 Inuktitutiu3383 Inuktitutiu3384 Inuktitutiu3385 Inuktitutiu3386 Inuktitutiu3387 Inuktitutiu3388 Inuktitutiu3389 Inuktitutiu339 Inuktitutiu3390 Inuktitutiu3391 Inuktitutiu3392 Inuktitutiu3393 Inuktitutiu3394 Inuktitutiu3395 Inuktitutiu3396 Inuktitutiu3397 Inuktitutiu3398 Inuktitutiu3399 Inuktitutiu34 Inuktitutiu340 Inuktitutiu3400 Inuktitutiu3401 Inuktitutiu3402 Inuktitutiu3403 Inuktitutiu3404 Inuktitutiu3405 Inuktitutiu3406 Inuktitutiu3407 Inuktitutiu3408 Inuktitutiu3409 Inuktitutiu341 Inuktitutiu3410 Inuktitutiu3411 Inuktitutiu3412 Inuktitutiu3413 Inuktitutiu3414 Inuktitutiu3415 Inuktitutiu3416 Inuktitutiu3417 Inuktitutiu3418 Inuktitutiu3419 Inuktitutiu342 Inuktitutiu3420 Inuktitutiu3421 Inuktitutiu3422 Inuktitutiu3423 Inuktitutiu3424 Inuktitutiu3425 Inuktitutiu3426 Inuktitutiu3427 Inuktitutiu3428 Inuktitutiu3429 Inuktitutiu343 Inuktitutiu3430 Inuktitutiu3431 Inuktitutiu3432 Inuktitutiu3433 Inuktitutiu3434 Inuktitutiu3435 Inuktitutiu3436 Inuktitutiu3437 Inuktitutiu3438 Inuktitutiu3439 Inuktitutiu344 Inuktitutiu3440 Inuktitutiu3441 Inuktitutiu3442 Inuktitutiu3443 Inuktitutiu3444 Inuktitutiu3445 Inuktitutiu3446 Inuktitutiu3447 Inuktitutiu3448 Inuktitutiu3449 Inuktitutiu345 Inuktitutiu3450 Inuktitutiu3451 Inuktitutiu3452 Inuktitutiu3453 Inuktitutiu3454 Inuktitutiu3455 Inuktitutiu3456 Inuktitutiu3457 Inuktitutiu3458 Inuktitutiu3459 Inuktitutiu346 Inuktitutiu3460 Inuktitutiu3461 Inuktitutiu3462 Inuktitutiu3463 Inuktitutiu3464 Inuktitutiu3465 Inuktitutiu3466 Inuktitutiu3467 Inuktitutiu3468 Inuktitutiu3469 Inuktitutiu347 Inuktitutiu3470 Inuktitutiu3471 Inuktitutiu3472 Inuktitutiu3473 Inuktitutiu3474 Inuktitutiu3475 Inuktitutiu3476 Inuktitutiu3477 Inuktitutiu3478 Inuktitutiu3479 Inuktitutiu348 Inuktitutiu3480 Inuktitutiu3481 Inuktitutiu3482 Inuktitutiu3483 Inuktitutiu3484 Inuktitutiu3485 Inuktitutiu3486 Inuktitutiu3487 Inuktitutiu3488 Inuktitutiu3489 Inuktitutiu349 Inuktitutiu3490 Inuktitutiu3491 Inuktitutiu3492 Inuktitutiu3493 Inuktitutiu3494 Inuktitutiu3495 Inuktitutiu3496 Inuktitutiu3497 Inuktitutiu3498 Inuktitutiu3499 Inuktitutiu35 Inuktitutiu350 Inuktitutiu3500 Inuktitutiu3501 Inuktitutiu3502 Inuktitutiu3503 Inuktitutiu3504 Inuktitutiu3505 Inuktitutiu3506 Inuktitutiu3507 Inuktitutiu3508 Inuktitutiu3509 Inuktitutiu351 Inuktitutiu3510 Inuktitutiu3511 Inuktitutiu3512 Inuktitutiu3513 Inuktitutiu3514 Inuktitutiu3515 Inuktitutiu3516 Inuktitutiu3517 Inuktitutiu3518 Inuktitutiu3519 Inuktitutiu352 Inuktitutiu3520 Inuktitutiu3521 Inuktitutiu3522 Inuktitutiu3523 Inuktitutiu3524 Inuktitutiu3525 Inuktitutiu3526 Inuktitutiu3527 Inuktitutiu3528 Inuktitutiu3529 Inuktitutiu353 Inuktitutiu3530 Inuktitutiu3531 Inuktitutiu3532 Inuktitutiu3533 Inuktitutiu3534 Inuktitutiu3535 Inuktitutiu3536 Inuktitutiu3537 Inuktitutiu3538 Inuktitutiu3539 Inuktitutiu354 Inuktitutiu3540 Inuktitutiu3541 Inuktitutiu3542 Inuktitutiu3543 Inuktitutiu3544 Inuktitutiu3545 Inuktitutiu3546 Inuktitutiu3547 Inuktitutiu3548 Inuktitutiu3549 Inuktitutiu355 Inuktitutiu3550 Inuktitutiu3551 Inuktitutiu3552 Inuktitutiu3553 Inuktitutiu3554 Inuktitutiu3555 Inuktitutiu3556 Inuktitutiu3557 Inuktitutiu3558 Inuktitutiu3559 Inuktitutiu356 Inuktitutiu3560 Inuktitutiu3561 Inuktitutiu3562 Inuktitutiu3563 Inuktitutiu3564 Inuktitutiu3565 Inuktitutiu3566 Inuktitutiu3567 Inuktitutiu3568 Inuktitutiu3569 Inuktitutiu357 Inuktitutiu3570 Inuktitutiu3571 Inuktitutiu3572 Inuktitutiu3573 Inuktitutiu3574 Inuktitutiu3575 Inuktitutiu3576 Inuktitutiu3577 Inuktitutiu3578 Inuktitutiu3579 Inuktitutiu358 Inuktitutiu3580 Inuktitutiu3581 Inuktitutiu3582 Inuktitutiu3583 Inuktitutiu3584 Inuktitutiu3585 Inuktitutiu3586 Inuktitutiu3587 Inuktitutiu3588 Inuktitutiu3589 Inuktitutiu359 Inuktitutiu3590 Inuktitutiu3591 Inuktitutiu3592 Inuktitutiu3593 Inuktitutiu3594 Inuktitutiu3595 Inuktitutiu3596 Inuktitutiu3597 Inuktitutiu3598 Inuktitutiu3599 Inuktitutiu36 Inuktitutiu360 Inuktitutiu3600 Inuktitutiu3601 Inuktitutiu3602 Inuktitutiu3603 Inuktitutiu3604 Inuktitutiu3605 Inuktitutiu3606 Inuktitutiu3607 Inuktitutiu3608 Inuktitutiu3609 Inuktitutiu361 Inuktitutiu3610 Inuktitutiu3611 Inuktitutiu3612 Inuktitutiu3613 Inuktitutiu3614 Inuktitutiu3615 Inuktitutiu3616 Inuktitutiu3617 Inuktitutiu3618 Inuktitutiu3619 Inuktitutiu362 Inuktitutiu3620 Inuktitutiu3621 Inuktitutiu3622 Inuktitutiu3623 Inuktitutiu3624 Inuktitutiu3625 Inuktitutiu3626 Inuktitutiu3627 Inuktitutiu3628 Inuktitutiu3629 Inuktitutiu363 Inuktitutiu3630 Inuktitutiu3631 Inuktitutiu3632 Inuktitutiu3633 Inuktitutiu3634 Inuktitutiu3635 Inuktitutiu3636 Inuktitutiu3637 Inuktitutiu3638 Inuktitutiu3639 Inuktitutiu364 Inuktitutiu3640 Inuktitutiu3641 Inuktitutiu3642 Inuktitutiu3643 Inuktitutiu3644 Inuktitutiu3645 Inuktitutiu3646 Inuktitutiu3647 Inuktitutiu3648 Inuktitutiu3649 Inuktitutiu365 Inuktitutiu3650 Inuktitutiu3651 Inuktitutiu3652 Inuktitutiu3653 Inuktitutiu3654 Inuktitutiu3655 Inuktitutiu3656 Inuktitutiu3657 Inuktitutiu3658 Inuktitutiu3659 Inuktitutiu366 Inuktitutiu3660 Inuktitutiu3661 Inuktitutiu3662 Inuktitutiu3663 Inuktitutiu3664 Inuktitutiu3665 Inuktitutiu3666 Inuktitutiu3667 Inuktitutiu3668 Inuktitutiu3669 Inuktitutiu367 Inuktitutiu3670 Inuktitutiu3671 Inuktitutiu3672 Inuktitutiu3673 Inuktitutiu3674 Inuktitutiu3675 Inuktitutiu3676 Inuktitutiu3677 Inuktitutiu3678 Inuktitutiu3679 Inuktitutiu368 Inuktitutiu3680 Inuktitutiu3681 Inuktitutiu3682 Inuktitutiu3683 Inuktitutiu3684 Inuktitutiu3685 Inuktitutiu3686 Inuktitutiu3687 Inuktitutiu3688 Inuktitutiu3689 Inuktitutiu369 Inuktitutiu3690 Inuktitutiu3691 Inuktitutiu3692 Inuktitutiu3693 Inuktitutiu3694 Inuktitutiu3695 Inuktitutiu3696 Inuktitutiu3697 Inuktitutiu3698 Inuktitutiu3699 Inuktitutiu37 Inuktitutiu370 Inuktitutiu3700 Inuktitutiu3701 Inuktitutiu3702 Inuktitutiu3703 Inuktitutiu3704 Inuktitutiu3705 Inuktitutiu3706 Inuktitutiu3707 Inuktitutiu3708 Inuktitutiu3709 Inuktitutiu371 Inuktitutiu3710 Inuktitutiu3711 Inuktitutiu3712 Inuktitutiu3713 Inuktitutiu3714 Inuktitutiu3715 Inuktitutiu3716 Inuktitutiu3717 Inuktitutiu3718 Inuktitutiu3719 Inuktitutiu372 Inuktitutiu3720 Inuktitutiu3721 Inuktitutiu3722 Inuktitutiu3723 Inuktitutiu3724 Inuktitutiu3725 Inuktitutiu3726 Inuktitutiu3727 Inuktitutiu3728 Inuktitutiu3729 Inuktitutiu373 Inuktitutiu3730 Inuktitutiu3731 Inuktitutiu3732 Inuktitutiu3733 Inuktitutiu3734 Inuktitutiu3735 Inuktitutiu3736 Inuktitutiu3737 Inuktitutiu3738 Inuktitutiu3739 Inuktitutiu374 Inuktitutiu3740 Inuktitutiu3741 Inuktitutiu3742 Inuktitutiu3743 Inuktitutiu3744 Inuktitutiu3745 Inuktitutiu3746 Inuktitutiu3747 Inuktitutiu3748 Inuktitutiu3749 Inuktitutiu375 Inuktitutiu3750 Inuktitutiu3751 Inuktitutiu3752 Inuktitutiu3753 Inuktitutiu3754 Inuktitutiu3755 Inuktitutiu3756 Inuktitutiu3757 Inuktitutiu3758 Inuktitutiu3759 Inuktitutiu376 Inuktitutiu3760 Inuktitutiu3761 Inuktitutiu3762 Inuktitutiu3763 Inuktitutiu3764 Inuktitutiu3765 Inuktitutiu3766 Inuktitutiu3767 Inuktitutiu3768 Inuktitutiu3769 Inuktitutiu377 Inuktitutiu3770 Inuktitutiu3771 Inuktitutiu3772 Inuktitutiu3773 Inuktitutiu3774 Inuktitutiu3775 Inuktitutiu3776 Inuktitutiu3777 Inuktitutiu3778 Inuktitutiu3779 Inuktitutiu378 Inuktitutiu3780 Inuktitutiu3781 Inuktitutiu3782 Inuktitutiu3783 Inuktitutiu3784 Inuktitutiu3785 Inuktitutiu3786 Inuktitutiu3787 Inuktitutiu3788 Inuktitutiu3789 Inuktitutiu379 Inuktitutiu3790 Inuktitutiu3791 Inuktitutiu3792 Inuktitutiu3793 Inuktitutiu3794 Inuktitutiu3795 Inuktitutiu3796 Inuktitutiu3797 Inuktitutiu3798 Inuktitutiu3799 Inuktitutiu38 Inuktitutiu380 Inuktitutiu3800 Inuktitutiu3801 Inuktitutiu3802 Inuktitutiu3803 Inuktitutiu3804 Inuktitutiu3805 Inuktitutiu3806 Inuktitutiu3807 Inuktitutiu3808 Inuktitutiu3809 Inuktitutiu381 Inuktitutiu3810 Inuktitutiu3811 Inuktitutiu3812 Inuktitutiu3813 Inuktitutiu3814 Inuktitutiu3815 Inuktitutiu3816 Inuktitutiu3817 Inuktitutiu3818 Inuktitutiu3819 Inuktitutiu382 Inuktitutiu3820 Inuktitutiu3821 Inuktitutiu3822 Inuktitutiu3823 Inuktitutiu3824 Inuktitutiu3825 Inuktitutiu3826 Inuktitutiu3827 Inuktitutiu3828 Inuktitutiu3829 Inuktitutiu383 Inuktitutiu3830 Inuktitutiu3831 Inuktitutiu3832 Inuktitutiu3833 Inuktitutiu3834 Inuktitutiu3835 Inuktitutiu3836 Inuktitutiu3837 Inuktitutiu3838 Inuktitutiu3839 Inuktitutiu384 Inuktitutiu3840 Inuktitutiu3841 Inuktitutiu3842 Inuktitutiu3843 Inuktitutiu3844 Inuktitutiu3845 Inuktitutiu3846 Inuktitutiu3847 Inuktitutiu3848 Inuktitutiu3849 Inuktitutiu385 Inuktitutiu3850 Inuktitutiu3851 Inuktitutiu3852 Inuktitutiu3853 Inuktitutiu3854 Inuktitutiu3855 Inuktitutiu3856 Inuktitutiu3857 Inuktitutiu3858 Inuktitutiu3859 Inuktitutiu386 Inuktitutiu3860 Inuktitutiu3861 Inuktitutiu3862 Inuktitutiu3863 Inuktitutiu3864 Inuktitutiu3865 Inuktitutiu3866 Inuktitutiu3867 Inuktitutiu3868 Inuktitutiu3869 Inuktitutiu387 Inuktitutiu3870 Inuktitutiu3871 Inuktitutiu3872 Inuktitutiu3873 Inuktitutiu3874 Inuktitutiu3875 Inuktitutiu3876 Inuktitutiu3877 Inuktitutiu3878 Inuktitutiu3879 Inuktitutiu388 Inuktitutiu3880 Inuktitutiu3881 Inuktitutiu3882 Inuktitutiu3883 Inuktitutiu3884 Inuktitutiu3885 Inuktitutiu3886 Inuktitutiu3887 Inuktitutiu3888 Inuktitutiu3889 Inuktitutiu389 Inuktitutiu3890 Inuktitutiu3891 Inuktitutiu3892 Inuktitutiu3893 Inuktitutiu3894 Inuktitutiu3895 Inuktitutiu3896 Inuktitutiu3897 Inuktitutiu3898 Inuktitutiu3899 Inuktitutiu39 Inuktitutiu390 Inuktitutiu3900 Inuktitutiu3901 Inuktitutiu3902 Inuktitutiu3903 Inuktitutiu3904 Inuktitutiu3905 Inuktitutiu3906 Inuktitutiu3907 Inuktitutiu3908 Inuktitutiu3909 Inuktitutiu391 Inuktitutiu3910 Inuktitutiu3911 Inuktitutiu3912 Inuktitutiu3913 Inuktitutiu3914 Inuktitutiu3915 Inuktitutiu3916 Inuktitutiu3917 Inuktitutiu3918 Inuktitutiu3919 Inuktitutiu392 Inuktitutiu3920 Inuktitutiu3921 Inuktitutiu3922 Inuktitutiu3923 Inuktitutiu3924 Inuktitutiu3925 Inuktitutiu3926 Inuktitutiu3927 Inuktitutiu3928 Inuktitutiu3929 Inuktitutiu393 Inuktitutiu3930 Inuktitutiu3931 Inuktitutiu3932 Inuktitutiu3933 Inuktitutiu3934 Inuktitutiu3935 Inuktitutiu3936 Inuktitutiu3937 Inuktitutiu3938 Inuktitutiu3939 Inuktitutiu394 Inuktitutiu3940 Inuktitutiu3941 Inuktitutiu3942 Inuktitutiu3943 Inuktitutiu3944 Inuktitutiu3945 Inuktitutiu3946 Inuktitutiu3947 Inuktitutiu3948 Inuktitutiu3949 Inuktitutiu395 Inuktitutiu3950 Inuktitutiu3951 Inuktitutiu3952 Inuktitutiu3953 Inuktitutiu3954 Inuktitutiu3955 Inuktitutiu3956 Inuktitutiu3957 Inuktitutiu3958 Inuktitutiu3959 Inuktitutiu396 Inuktitutiu3960 Inuktitutiu3961 Inuktitutiu3962 Inuktitutiu3963 Inuktitutiu3964 Inuktitutiu3965 Inuktitutiu3966 Inuktitutiu3967 Inuktitutiu3968 Inuktitutiu3969 Inuktitutiu397 Inuktitutiu3970 Inuktitutiu3971 Inuktitutiu3972 Inuktitutiu3973 Inuktitutiu3974 Inuktitutiu3975 Inuktitutiu3976 Inuktitutiu3977 Inuktitutiu3978 Inuktitutiu3979 Inuktitutiu398 Inuktitutiu3980 Inuktitutiu3981 Inuktitutiu3982 Inuktitutiu3983 Inuktitutiu3984 Inuktitutiu3985 Inuktitutiu3986 Inuktitutiu3987 Inuktitutiu3988 Inuktitutiu3989 Inuktitutiu399 Inuktitutiu3990 Inuktitutiu3991 Inuktitutiu3992 Inuktitutiu3993 Inuktitutiu3994 Inuktitutiu3995 Inuktitutiu3996 Inuktitutiu3997 Inuktitutiu3998 Inuktitutiu3999 Inuktitutiu4 Inuktitutiu40 Inuktitutiu400 Inuktitutiu4000 Inuktitutiu4001 Inuktitutiu4002 Inuktitutiu4003 Inuktitutiu4004 Inuktitutiu4005 Inuktitutiu4006 Inuktitutiu4007 Inuktitutiu4008 Inuktitutiu4009 Inuktitutiu401 Inuktitutiu4010 Inuktitutiu4011 Inuktitutiu4012 Inuktitutiu4013 Inuktitutiu4014 Inuktitutiu4015 Inuktitutiu4016 Inuktitutiu4017 Inuktitutiu4018 Inuktitutiu4019 Inuktitutiu402 Inuktitutiu4020 Inuktitutiu4021 Inuktitutiu4022 Inuktitutiu4023 Inuktitutiu4024 Inuktitutiu4025 Inuktitutiu4026 Inuktitutiu4027 Inuktitutiu4028 Inuktitutiu4029 Inuktitutiu403 Inuktitutiu4030 Inuktitutiu4031 Inuktitutiu4032 Inuktitutiu4033 Inuktitutiu4034 Inuktitutiu4035 Inuktitutiu4036 Inuktitutiu4037 Inuktitutiu4038 Inuktitutiu4039 Inuktitutiu404 Inuktitutiu4040 Inuktitutiu4041 Inuktitutiu4042 Inuktitutiu4043 Inuktitutiu4044 Inuktitutiu4045 Inuktitutiu4046 Inuktitutiu4047 Inuktitutiu4048 Inuktitutiu4049 Inuktitutiu405 Inuktitutiu4050 Inuktitutiu4051 Inuktitutiu4052 Inuktitutiu4053 Inuktitutiu4054 Inuktitutiu4055 Inuktitutiu4056 Inuktitutiu4057 Inuktitutiu4058 Inuktitutiu4059 Inuktitutiu406 Inuktitutiu4060 Inuktitutiu4061 Inuktitutiu4062 Inuktitutiu4063 Inuktitutiu4064 Inuktitutiu4065 Inuktitutiu4066 Inuktitutiu4067 Inuktitutiu4068 Inuktitutiu4069 Inuktitutiu407 Inuktitutiu4070 Inuktitutiu4071 Inuktitutiu4072 Inuktitutiu4073 Inuktitutiu4074 Inuktitutiu4075 Inuktitutiu4076 Inuktitutiu4077 Inuktitutiu4078 Inuktitutiu4079 Inuktitutiu408 Inuktitutiu4080 Inuktitutiu4081 Inuktitutiu4082 Inuktitutiu4083 Inuktitutiu4084 Inuktitutiu4085 Inuktitutiu4086 Inuktitutiu4087 Inuktitutiu4088 Inuktitutiu4089 Inuktitutiu409 Inuktitutiu4090 Inuktitutiu4091 Inuktitutiu4092 Inuktitutiu4093 Inuktitutiu4094 Inuktitutiu4095 Inuktitutiu4096 Inuktitutiu4097 Inuktitutiu4098 Inuktitutiu4099 Inuktitutiu41 Inuktitutiu410 Inuktitutiu4100 Inuktitutiu4101 Inuktitutiu4102 Inuktitutiu4103 Inuktitutiu4104 Inuktitutiu4105 Inuktitutiu4106 Inuktitutiu4107 Inuktitutiu4108 Inuktitutiu4109 Inuktitutiu411 Inuktitutiu4110 Inuktitutiu4111 Inuktitutiu4112 Inuktitutiu4113 Inuktitutiu4114 Inuktitutiu4115 Inuktitutiu4116 Inuktitutiu4117 Inuktitutiu4118 Inuktitutiu4119 Inuktitutiu412 Inuktitutiu4120 Inuktitutiu4121 Inuktitutiu4122 Inuktitutiu4123 Inuktitutiu4124 Inuktitutiu4125 Inuktitutiu4126 Inuktitutiu4127 Inuktitutiu4128 Inuktitutiu4129 Inuktitutiu413 Inuktitutiu4130 Inuktitutiu4131 Inuktitutiu4132 Inuktitutiu4133 Inuktitutiu4134 Inuktitutiu4135 Inuktitutiu4136 Inuktitutiu4137 Inuktitutiu4138 Inuktitutiu4139 Inuktitutiu414 Inuktitutiu4140 Inuktitutiu4141 Inuktitutiu4142 Inuktitutiu4143 Inuktitutiu4144 Inuktitutiu4145 Inuktitutiu4146 Inuktitutiu4147 Inuktitutiu4148 Inuktitutiu4149 Inuktitutiu415 Inuktitutiu4150 Inuktitutiu4151 Inuktitutiu4152 Inuktitutiu4153 Inuktitutiu4154 Inuktitutiu4155 Inuktitutiu4156 Inuktitutiu4157 Inuktitutiu4158 Inuktitutiu4159 Inuktitutiu416 Inuktitutiu4160 Inuktitutiu4161 Inuktitutiu4162 Inuktitutiu4163 Inuktitutiu4164 Inuktitutiu4165 Inuktitutiu4166 Inuktitutiu4167 Inuktitutiu4168 Inuktitutiu4169 Inuktitutiu417 Inuktitutiu4170 Inuktitutiu4171 Inuktitutiu4172 Inuktitutiu4173 Inuktitutiu4174 Inuktitutiu4175 Inuktitutiu4176 Inuktitutiu4177 Inuktitutiu4178 Inuktitutiu4179 Inuktitutiu418 Inuktitutiu4180 Inuktitutiu4181 Inuktitutiu4182 Inuktitutiu4183 Inuktitutiu4184 Inuktitutiu4185 Inuktitutiu4186 Inuktitutiu4187 Inuktitutiu4188 Inuktitutiu4189 Inuktitutiu419 Inuktitutiu4190 Inuktitutiu4191 Inuktitutiu4192 Inuktitutiu4193 Inuktitutiu4194 Inuktitutiu4195 Inuktitutiu4196 Inuktitutiu4197 Inuktitutiu4198 Inuktitutiu4199 Inuktitutiu42 Inuktitutiu420 Inuktitutiu4200 Inuktitutiu4201 Inuktitutiu4202 Inuktitutiu4203 Inuktitutiu4204 Inuktitutiu4205 Inuktitutiu4206 Inuktitutiu4207 Inuktitutiu4208 Inuktitutiu4209 Inuktitutiu421 Inuktitutiu4210 Inuktitutiu4211 Inuktitutiu4212 Inuktitutiu4213 Inuktitutiu4214 Inuktitutiu4215 Inuktitutiu4216 Inuktitutiu4217 Inuktitutiu4218 Inuktitutiu4219 Inuktitutiu422 Inuktitutiu4220 Inuktitutiu4221 Inuktitutiu4222 Inuktitutiu4223 Inuktitutiu4224 Inuktitutiu4225 Inuktitutiu4226 Inuktitutiu4227 Inuktitutiu4228 Inuktitutiu4229 Inuktitutiu423 Inuktitutiu4230 Inuktitutiu4231 Inuktitutiu4232 Inuktitutiu4233 Inuktitutiu4234 Inuktitutiu4235 Inuktitutiu4236 Inuktitutiu4237 Inuktitutiu4238 Inuktitutiu4239 Inuktitutiu424 Inuktitutiu4240 Inuktitutiu4241 Inuktitutiu4242 Inuktitutiu4243 Inuktitutiu4244 Inuktitutiu4245 Inuktitutiu4246 Inuktitutiu4247 Inuktitutiu4248 Inuktitutiu4249 Inuktitutiu425 Inuktitutiu4250 Inuktitutiu4251 Inuktitutiu4252 Inuktitutiu4253 Inuktitutiu4254 Inuktitutiu4255 Inuktitutiu4256 Inuktitutiu4257 Inuktitutiu4258 Inuktitutiu4259 Inuktitutiu426 Inuktitutiu4260 Inuktitutiu4261 Inuktitutiu4262 Inuktitutiu4263 Inuktitutiu4264 Inuktitutiu4265 Inuktitutiu4266 Inuktitutiu4267 Inuktitutiu4268 Inuktitutiu4269 Inuktitutiu427 Inuktitutiu4270 Inuktitutiu4271 Inuktitutiu4272 Inuktitutiu4273 Inuktitutiu4274 Inuktitutiu4275 Inuktitutiu4276 Inuktitutiu4277 Inuktitutiu4278 Inuktitutiu4279 Inuktitutiu428 Inuktitutiu4280 Inuktitutiu4281 Inuktitutiu4282 Inuktitutiu4283 Inuktitutiu4284 Inuktitutiu4285 Inuktitutiu4286 Inuktitutiu4287 Inuktitutiu4288 Inuktitutiu4289 Inuktitutiu429 Inuktitutiu4290 Inuktitutiu4291 Inuktitutiu4292 Inuktitutiu4293 Inuktitutiu4294 Inuktitutiu4295 Inuktitutiu4296 Inuktitutiu4297 Inuktitutiu4298 Inuktitutiu4299 Inuktitutiu43 Inuktitutiu430 Inuktitutiu4300 Inuktitutiu4301 Inuktitutiu4302 Inuktitutiu4303 Inuktitutiu4304 Inuktitutiu4305 Inuktitutiu4306 Inuktitutiu4307 Inuktitutiu4308 Inuktitutiu4309 Inuktitutiu431 Inuktitutiu4310 Inuktitutiu4311 Inuktitutiu4312 Inuktitutiu4313 Inuktitutiu4314 Inuktitutiu4315 Inuktitutiu4316 Inuktitutiu4317 Inuktitutiu4318 Inuktitutiu4319 Inuktitutiu432 Inuktitutiu4320 Inuktitutiu4321 Inuktitutiu4322 Inuktitutiu4323 Inuktitutiu4324 Inuktitutiu4325 Inuktitutiu4326 Inuktitutiu4327 Inuktitutiu4328 Inuktitutiu4329 Inuktitutiu433 Inuktitutiu4330 Inuktitutiu4331 Inuktitutiu4332 Inuktitutiu4333 Inuktitutiu4334 Inuktitutiu4335 Inuktitutiu4336 Inuktitutiu4337 Inuktitutiu4338 Inuktitutiu4339 Inuktitutiu434 Inuktitutiu4340 Inuktitutiu4341 Inuktitutiu4342 Inuktitutiu4343 Inuktitutiu4344 Inuktitutiu4345 Inuktitutiu4346 Inuktitutiu4347 Inuktitutiu4348 Inuktitutiu4349 Inuktitutiu435 Inuktitutiu4350 Inuktitutiu4351 Inuktitutiu4352 Inuktitutiu4353 Inuktitutiu4354 Inuktitutiu4355 Inuktitutiu4356 Inuktitutiu4357 Inuktitutiu4358 Inuktitutiu4359 Inuktitutiu436 Inuktitutiu4360 Inuktitutiu4361 Inuktitutiu4362 Inuktitutiu4363 Inuktitutiu4364 Inuktitutiu4365 Inuktitutiu4366 Inuktitutiu4367 Inuktitutiu4368 Inuktitutiu4369 Inuktitutiu437 Inuktitutiu4370 Inuktitutiu4371 Inuktitutiu4372 Inuktitutiu4373 Inuktitutiu4374 Inuktitutiu4375 Inuktitutiu4376 Inuktitutiu4377 Inuktitutiu4378 Inuktitutiu4379 Inuktitutiu438 Inuktitutiu4380 Inuktitutiu4381 Inuktitutiu4382 Inuktitutiu4383 Inuktitutiu4384 Inuktitutiu4385 Inuktitutiu4386 Inuktitutiu4387 Inuktitutiu4388 Inuktitutiu4389 Inuktitutiu439 Inuktitutiu4390 Inuktitutiu4391 Inuktitutiu4392 Inuktitutiu4393 Inuktitutiu4394 Inuktitutiu4395 Inuktitutiu4396 Inuktitutiu4397 Inuktitutiu4398 Inuktitutiu4399 Inuktitutiu44 Inuktitutiu440 Inuktitutiu4400 Inuktitutiu4401 Inuktitutiu4402 Inuktitutiu4403 Inuktitutiu4404 Inuktitutiu4405 Inuktitutiu4406 Inuktitutiu4407 Inuktitutiu4408 Inuktitutiu4409 Inuktitutiu441 Inuktitutiu4410 Inuktitutiu4411 Inuktitutiu4412 Inuktitutiu4413 Inuktitutiu4414 Inuktitutiu4415 Inuktitutiu4416 Inuktitutiu4417 Inuktitutiu4418 Inuktitutiu4419 Inuktitutiu442 Inuktitutiu4420 Inuktitutiu4421 Inuktitutiu4422 Inuktitutiu4423 Inuktitutiu4424 Inuktitutiu4425 Inuktitutiu4426 Inuktitutiu4427 Inuktitutiu4428 Inuktitutiu4429 Inuktitutiu443 Inuktitutiu4430 Inuktitutiu4431 Inuktitutiu4432 Inuktitutiu4433 Inuktitutiu4434 Inuktitutiu4435 Inuktitutiu4436 Inuktitutiu4437 Inuktitutiu4438 Inuktitutiu4439 Inuktitutiu444 Inuktitutiu4440 Inuktitutiu4441 Inuktitutiu4442 Inuktitutiu4443 Inuktitutiu4444 Inuktitutiu4445 Inuktitutiu4446 Inuktitutiu4447 Inuktitutiu4448 Inuktitutiu4449 Inuktitutiu445 Inuktitutiu4450 Inuktitutiu4451 Inuktitutiu4452 Inuktitutiu4453 Inuktitutiu4454 Inuktitutiu4455 Inuktitutiu4456 Inuktitutiu4457 Inuktitutiu4458 Inuktitutiu4459 Inuktitutiu446 Inuktitutiu4460 Inuktitutiu4461 Inuktitutiu4462 Inuktitutiu4463 Inuktitutiu4464 Inuktitutiu4465 Inuktitutiu4466 Inuktitutiu4467 Inuktitutiu4468 Inuktitutiu4469 Inuktitutiu447 Inuktitutiu4470 Inuktitutiu4471 Inuktitutiu4472 Inuktitutiu4473 Inuktitutiu4474 Inuktitutiu4475 Inuktitutiu4476 Inuktitutiu4477 Inuktitutiu4478 Inuktitutiu4479 Inuktitutiu448 Inuktitutiu4480 Inuktitutiu4481 Inuktitutiu4482 Inuktitutiu4483 Inuktitutiu4484 Inuktitutiu4485 Inuktitutiu4486 Inuktitutiu4487 Inuktitutiu4488 Inuktitutiu4489 Inuktitutiu449 Inuktitutiu4490 Inuktitutiu4491 Inuktitutiu4492 Inuktitutiu4493 Inuktitutiu4494 Inuktitutiu4495 Inuktitutiu4496 Inuktitutiu4497 Inuktitutiu4498 Inuktitutiu4499 Inuktitutiu45 Inuktitutiu450 Inuktitutiu4500 Inuktitutiu4501 Inuktitutiu4502 Inuktitutiu4503 Inuktitutiu4504 Inuktitutiu4505 Inuktitutiu4506 Inuktitutiu4507 Inuktitutiu4508 Inuktitutiu4509 Inuktitutiu451 Inuktitutiu4510 Inuktitutiu4511 Inuktitutiu4512 Inuktitutiu4513 Inuktitutiu4514 Inuktitutiu4515 Inuktitutiu4516 Inuktitutiu4517 Inuktitutiu4518 Inuktitutiu4519 Inuktitutiu452 Inuktitutiu4520 Inuktitutiu4521 Inuktitutiu4522 Inuktitutiu4523 Inuktitutiu4524 Inuktitutiu4525 Inuktitutiu4526 Inuktitutiu4527 Inuktitutiu4528 Inuktitutiu4529 Inuktitutiu453 Inuktitutiu4530 Inuktitutiu4531 Inuktitutiu4532 Inuktitutiu4533 Inuktitutiu4534 Inuktitutiu4535 Inuktitutiu4536 Inuktitutiu4537 Inuktitutiu4538 Inuktitutiu4539 Inuktitutiu454 Inuktitutiu4540 Inuktitutiu4541 Inuktitutiu4542 Inuktitutiu4543 Inuktitutiu4544 Inuktitutiu4545 Inuktitutiu4546 Inuktitutiu4547 Inuktitutiu4548 Inuktitutiu4549 Inuktitutiu455 Inuktitutiu4550 Inuktitutiu4551 Inuktitutiu4552 Inuktitutiu4553 Inuktitutiu4554 Inuktitutiu4555 Inuktitutiu4556 Inuktitutiu4557 Inuktitutiu4558 Inuktitutiu4559 Inuktitutiu456 Inuktitutiu4560 Inuktitutiu4561 Inuktitutiu4562 Inuktitutiu4563 Inuktitutiu4564 Inuktitutiu4565 Inuktitutiu4566 Inuktitutiu4567 Inuktitutiu4568 Inuktitutiu4569 Inuktitutiu457 Inuktitutiu4570 Inuktitutiu4571 Inuktitutiu4572 Inuktitutiu4573 Inuktitutiu4574 Inuktitutiu4575 Inuktitutiu4576 Inuktitutiu4577 Inuktitutiu4578 Inuktitutiu4579 Inuktitutiu458 Inuktitutiu4580 Inuktitutiu4581 Inuktitutiu4582 Inuktitutiu4583 Inuktitutiu4584 Inuktitutiu4585 Inuktitutiu4586 Inuktitutiu4587 Inuktitutiu4588 Inuktitutiu4589 Inuktitutiu459 Inuktitutiu4590 Inuktitutiu4591 Inuktitutiu4592 Inuktitutiu4593 Inuktitutiu4594 Inuktitutiu4595 Inuktitutiu4596 Inuktitutiu4597 Inuktitutiu4598 Inuktitutiu4599 Inuktitutiu46 Inuktitutiu460 Inuktitutiu4600 Inuktitutiu4601 Inuktitutiu4602 Inuktitutiu4603 Inuktitutiu4604 Inuktitutiu4605 Inuktitutiu4606 Inuktitutiu4607 Inuktitutiu4608 Inuktitutiu4609 Inuktitutiu461 Inuktitutiu4610 Inuktitutiu4611 Inuktitutiu4612 Inuktitutiu4613 Inuktitutiu4614 Inuktitutiu4615 Inuktitutiu4616 Inuktitutiu4617 Inuktitutiu4618 Inuktitutiu4619 Inuktitutiu462 Inuktitutiu4620 Inuktitutiu4621 Inuktitutiu4622 Inuktitutiu4623 Inuktitutiu4624 Inuktitutiu4625 Inuktitutiu4626 Inuktitutiu4627 Inuktitutiu4628 Inuktitutiu4629 Inuktitutiu463 Inuktitutiu4630 Inuktitutiu4631 Inuktitutiu4632 Inuktitutiu4633 Inuktitutiu4634 Inuktitutiu4635 Inuktitutiu4636 Inuktitutiu4637 Inuktitutiu4638 Inuktitutiu4639 Inuktitutiu464 Inuktitutiu4640 Inuktitutiu4641 Inuktitutiu4642 Inuktitutiu4643 Inuktitutiu4644 Inuktitutiu4645 Inuktitutiu4646 Inuktitutiu4647 Inuktitutiu4648 Inuktitutiu4649 Inuktitutiu465 Inuktitutiu4650 Inuktitutiu4651 Inuktitutiu4652 Inuktitutiu4653 Inuktitutiu4654 Inuktitutiu4655 Inuktitutiu4656 Inuktitutiu4657 Inuktitutiu4658 Inuktitutiu4659 Inuktitutiu466 Inuktitutiu4660 Inuktitutiu4661 Inuktitutiu4662 Inuktitutiu4663 Inuktitutiu4664 Inuktitutiu4665 Inuktitutiu4666 Inuktitutiu4667 Inuktitutiu4668 Inuktitutiu4669 Inuktitutiu467 Inuktitutiu4670 Inuktitutiu4671 Inuktitutiu4672 Inuktitutiu4673 Inuktitutiu4674 Inuktitutiu4675 Inuktitutiu4676 Inuktitutiu4677 Inuktitutiu4678 Inuktitutiu4679 Inuktitutiu468 Inuktitutiu4680 Inuktitutiu4681 Inuktitutiu4682 Inuktitutiu4683 Inuktitutiu4684 Inuktitutiu4685 Inuktitutiu4686 Inuktitutiu4687 Inuktitutiu4688 Inuktitutiu4689 Inuktitutiu469 Inuktitutiu4690 Inuktitutiu4691 Inuktitutiu4692 Inuktitutiu4693 Inuktitutiu4694 Inuktitutiu4695 Inuktitutiu4696 Inuktitutiu4697 Inuktitutiu4698 Inuktitutiu4699 Inuktitutiu47 Inuktitutiu470 Inuktitutiu4700 Inuktitutiu4701 Inuktitutiu4702 Inuktitutiu4703 Inuktitutiu4704 Inuktitutiu4705 Inuktitutiu4706 Inuktitutiu4707 Inuktitutiu4708 Inuktitutiu4709 Inuktitutiu471 Inuktitutiu4710 Inuktitutiu4711 Inuktitutiu4712 Inuktitutiu4713 Inuktitutiu4714 Inuktitutiu4715 Inuktitutiu4716 Inuktitutiu4717 Inuktitutiu4718 Inuktitutiu4719 Inuktitutiu472 Inuktitutiu4720 Inuktitutiu4721 Inuktitutiu4722 Inuktitutiu4723 Inuktitutiu4724 Inuktitutiu4725 Inuktitutiu4726 Inuktitutiu4727 Inuktitutiu4728 Inuktitutiu4729 Inuktitutiu473 Inuktitutiu4730 Inuktitutiu4731 Inuktitutiu4732 Inuktitutiu4733 Inuktitutiu4734 Inuktitutiu4735 Inuktitutiu4736 Inuktitutiu4737 Inuktitutiu4738 Inuktitutiu4739 Inuktitutiu474 Inuktitutiu4740 Inuktitutiu4741 Inuktitutiu4742 Inuktitutiu4743 Inuktitutiu4744 Inuktitutiu4745 Inuktitutiu4746 Inuktitutiu4747 Inuktitutiu4748 Inuktitutiu4749 Inuktitutiu475 Inuktitutiu4750 Inuktitutiu4751 Inuktitutiu4752 Inuktitutiu4753 Inuktitutiu4754 Inuktitutiu4755 Inuktitutiu4756 Inuktitutiu4757 Inuktitutiu4758 Inuktitutiu4759 Inuktitutiu476 Inuktitutiu4760 Inuktitutiu4761 Inuktitutiu4762 Inuktitutiu4763 Inuktitutiu4764 Inuktitutiu4765 Inuktitutiu4766 Inuktitutiu4767 Inuktitutiu4768 Inuktitutiu4769 Inuktitutiu477 Inuktitutiu4770 Inuktitutiu4771 Inuktitutiu4772 Inuktitutiu4773 Inuktitutiu4774 Inuktitutiu4775 Inuktitutiu4776 Inuktitutiu4777 Inuktitutiu4778 Inuktitutiu4779 Inuktitutiu478 Inuktitutiu4780 Inuktitutiu4781 Inuktitutiu4782 Inuktitutiu4783 Inuktitutiu4784 Inuktitutiu4785 Inuktitutiu4786 Inuktitutiu4787 Inuktitutiu4788 Inuktitutiu4789 Inuktitutiu479 Inuktitutiu4790 Inuktitutiu4791 Inuktitutiu4792 Inuktitutiu4793 Inuktitutiu4794 Inuktitutiu4795 Inuktitutiu4796 Inuktitutiu4797 Inuktitutiu4798 Inuktitutiu4799 Inuktitutiu48 Inuktitutiu480 Inuktitutiu4800 Inuktitutiu4801 Inuktitutiu4802 Inuktitutiu4803 Inuktitutiu4804 Inuktitutiu4805 Inuktitutiu4806 Inuktitutiu4807 Inuktitutiu4808 Inuktitutiu4809 Inuktitutiu481 Inuktitutiu4810 Inuktitutiu4811 Inuktitutiu4812 Inuktitutiu4813 Inuktitutiu4814 Inuktitutiu4815 Inuktitutiu4816 Inuktitutiu4817 Inuktitutiu4818 Inuktitutiu4819 Inuktitutiu482 Inuktitutiu4820 Inuktitutiu4821 Inuktitutiu4822 Inuktitutiu4823 Inuktitutiu4824 Inuktitutiu4825 Inuktitutiu4826 Inuktitutiu4827 Inuktitutiu4828 Inuktitutiu4829 Inuktitutiu483 Inuktitutiu4830 Inuktitutiu4831 Inuktitutiu4832 Inuktitutiu4833 Inuktitutiu4834 Inuktitutiu4835 Inuktitutiu4836 Inuktitutiu4837 Inuktitutiu4838 Inuktitutiu4839 Inuktitutiu484 Inuktitutiu4840 Inuktitutiu4841 Inuktitutiu4842 Inuktitutiu4843 Inuktitutiu4844 Inuktitutiu4845 Inuktitutiu4846 Inuktitutiu4847 Inuktitutiu4848 Inuktitutiu4849 Inuktitutiu485 Inuktitutiu4850 Inuktitutiu4851 Inuktitutiu4852 Inuktitutiu4853 Inuktitutiu4854 Inuktitutiu4855 Inuktitutiu4856 Inuktitutiu4857 Inuktitutiu4858 Inuktitutiu4859 Inuktitutiu486 Inuktitutiu4860 Inuktitutiu4861 Inuktitutiu4862 Inuktitutiu4863 Inuktitutiu4864 Inuktitutiu4865 Inuktitutiu4866 Inuktitutiu4867 Inuktitutiu4868 Inuktitutiu4869 Inuktitutiu487 Inuktitutiu4870 Inuktitutiu4871 Inuktitutiu4872 Inuktitutiu4873 Inuktitutiu4874 Inuktitutiu4875 Inuktitutiu4876 Inuktitutiu4877 Inuktitutiu4878 Inuktitutiu4879 Inuktitutiu488 Inuktitutiu4880 Inuktitutiu4881 Inuktitutiu4882 Inuktitutiu4883 Inuktitutiu4884 Inuktitutiu4885 Inuktitutiu4886 Inuktitutiu4887 Inuktitutiu4888 Inuktitutiu4889 Inuktitutiu489 Inuktitutiu4890 Inuktitutiu4891 Inuktitutiu4892 Inuktitutiu4893 Inuktitutiu4894 Inuktitutiu4895 Inuktitutiu4896 Inuktitutiu4897 Inuktitutiu4898 Inuktitutiu4899 Inuktitutiu49 Inuktitutiu490 Inuktitutiu4900 Inuktitutiu4901 Inuktitutiu4902 Inuktitutiu4903 Inuktitutiu4904 Inuktitutiu4905 Inuktitutiu4906 Inuktitutiu4907 Inuktitutiu4908 Inuktitutiu4909 Inuktitutiu491 Inuktitutiu4910 Inuktitutiu4911 Inuktitutiu4912 Inuktitutiu4913 Inuktitutiu4914 Inuktitutiu4915 Inuktitutiu4916 Inuktitutiu4917 Inuktitutiu4918 Inuktitutiu4919 Inuktitutiu492 Inuktitutiu4920 Inuktitutiu4921 Inuktitutiu4922 Inuktitutiu4923 Inuktitutiu4924 Inuktitutiu4925 Inuktitutiu4926 Inuktitutiu4927 Inuktitutiu4928 Inuktitutiu4929 Inuktitutiu493 Inuktitutiu4930 Inuktitutiu4931 Inuktitutiu4932 Inuktitutiu4933 Inuktitutiu4934 Inuktitutiu4935 Inuktitutiu4936 Inuktitutiu4937 Inuktitutiu4938 Inuktitutiu4939 Inuktitutiu494 Inuktitutiu4940 Inuktitutiu4941 Inuktitutiu4942 Inuktitutiu4943 Inuktitutiu4944 Inuktitutiu4945 Inuktitutiu4946 Inuktitutiu4947 Inuktitutiu4948 Inuktitutiu4949 Inuktitutiu495 Inuktitutiu4950 Inuktitutiu4951 Inuktitutiu4952 Inuktitutiu4953 Inuktitutiu4954 Inuktitutiu4955 Inuktitutiu4956 Inuktitutiu4957 Inuktitutiu4958 Inuktitutiu4959 Inuktitutiu496 Inuktitutiu4960 Inuktitutiu4961 Inuktitutiu4962 Inuktitutiu4963 Inuktitutiu4964 Inuktitutiu4965 Inuktitutiu4966 Inuktitutiu4967 Inuktitutiu4968 Inuktitutiu4969 Inuktitutiu497 Inuktitutiu4970 Inuktitutiu4971 Inuktitutiu4972 Inuktitutiu4973 Inuktitutiu4974 Inuktitutiu4975 Inuktitutiu4976 Inuktitutiu4977 Inuktitutiu4978 Inuktitutiu4979 Inuktitutiu498 Inuktitutiu4980 Inuktitutiu4981 Inuktitutiu4982 Inuktitutiu4983 Inuktitutiu4984 Inuktitutiu4985 Inuktitutiu4986 Inuktitutiu4987 Inuktitutiu4988 Inuktitutiu4989 Inuktitutiu499 Inuktitutiu4990 Inuktitutiu4991 Inuktitutiu4992 Inuktitutiu4993 Inuktitutiu4994 Inuktitutiu4995 Inuktitutiu4996 Inuktitutiu4997 Inuktitutiu4998 Inuktitutiu4999 Inuktitutiu5 Inuktitutiu50 Inuktitutiu500 Inuktitutiu5000 Inuktitutiu5001 Inuktitutiu5002 Inuktitutiu5003 Inuktitutiu5004 Inuktitutiu5005 Inuktitutiu5006 Inuktitutiu5007 Inuktitutiu5008 Inuktitutiu5009 Inuktitutiu501 Inuktitutiu5010 Inuktitutiu5011 Inuktitutiu5012 Inuktitutiu5013 Inuktitutiu5014 Inuktitutiu5015 Inuktitutiu5016 Inuktitutiu5017 Inuktitutiu5018 Inuktitutiu5019 Inuktitutiu502 Inuktitutiu5020 Inuktitutiu5021 Inuktitutiu5022 Inuktitutiu5023 Inuktitutiu5024 Inuktitutiu5025 Inuktitutiu5026 Inuktitutiu5027 Inuktitutiu5028 Inuktitutiu5029 Inuktitutiu503 Inuktitutiu5030 Inuktitutiu5031 Inuktitutiu5032 Inuktitutiu5033 Inuktitutiu5034 Inuktitutiu5035 Inuktitutiu5036 Inuktitutiu5037 Inuktitutiu5038 Inuktitutiu5039 Inuktitutiu504 Inuktitutiu5040 Inuktitutiu5041 Inuktitutiu5042 Inuktitutiu5043 Inuktitutiu5044 Inuktitutiu5045 Inuktitutiu5046 Inuktitutiu5047 Inuktitutiu5048 Inuktitutiu5049 Inuktitutiu505 Inuktitutiu5050 Inuktitutiu5051 Inuktitutiu5052 Inuktitutiu5053 Inuktitutiu5054 Inuktitutiu5055 Inuktitutiu5056 Inuktitutiu5057 Inuktitutiu5058 Inuktitutiu5059 Inuktitutiu506 Inuktitutiu5060 Inuktitutiu5061 Inuktitutiu5062 Inuktitutiu5063 Inuktitutiu5064 Inuktitutiu5065 Inuktitutiu5066 Inuktitutiu5067 Inuktitutiu5068 Inuktitutiu5069 Inuktitutiu507 Inuktitutiu5070 Inuktitutiu5071 Inuktitutiu5072 Inuktitutiu5073 Inuktitutiu5074 Inuktitutiu5075 Inuktitutiu5076 Inuktitutiu5077 Inuktitutiu5078 Inuktitutiu5079 Inuktitutiu508 Inuktitutiu5080 Inuktitutiu5081 Inuktitutiu5082 Inuktitutiu5083 Inuktitutiu5084 Inuktitutiu5085 Inuktitutiu5086 Inuktitutiu5087 Inuktitutiu5088 Inuktitutiu5089 Inuktitutiu509 Inuktitutiu5090 Inuktitutiu5091 Inuktitutiu5092 Inuktitutiu5093 Inuktitutiu5094 Inuktitutiu5095 Inuktitutiu5096 Inuktitutiu5097 Inuktitutiu5098 Inuktitutiu5099 Inuktitutiu51 Inuktitutiu510 Inuktitutiu5100 Inuktitutiu5101 Inuktitutiu5102 Inuktitutiu5103 Inuktitutiu5104 Inuktitutiu5105 Inuktitutiu5106 Inuktitutiu5107 Inuktitutiu5108 Inuktitutiu5109 Inuktitutiu511 Inuktitutiu5110 Inuktitutiu5111 Inuktitutiu5112 Inuktitutiu5113 Inuktitutiu5114 Inuktitutiu5115 Inuktitutiu5116 Inuktitutiu5117 Inuktitutiu5118 Inuktitutiu5119 Inuktitutiu512 Inuktitutiu5120 Inuktitutiu5121 Inuktitutiu5122 Inuktitutiu5123 Inuktitutiu5124 Inuktitutiu5125 Inuktitutiu5126 Inuktitutiu5127 Inuktitutiu5128 Inuktitutiu5129 Inuktitutiu513 Inuktitutiu5130 Inuktitutiu5131 Inuktitutiu5132 Inuktitutiu5133 Inuktitutiu5134 Inuktitutiu5135 Inuktitutiu5136 Inuktitutiu5137 Inuktitutiu5138 Inuktitutiu5139 Inuktitutiu514 Inuktitutiu5140 Inuktitutiu5141 Inuktitutiu5142 Inuktitutiu5143 Inuktitutiu5144 Inuktitutiu5145 Inuktitutiu5146 Inuktitutiu5147 Inuktitutiu5148 Inuktitutiu5149 Inuktitutiu515 Inuktitutiu5150 Inuktitutiu5151 Inuktitutiu5152 Inuktitutiu5153 Inuktitutiu5154 Inuktitutiu5155 Inuktitutiu5156 Inuktitutiu5157 Inuktitutiu5158 Inuktitutiu5159 Inuktitutiu516 Inuktitutiu5160 Inuktitutiu5161 Inuktitutiu5162 Inuktitutiu5163 Inuktitutiu5164 Inuktitutiu5165 Inuktitutiu5166 Inuktitutiu5167 Inuktitutiu5168 Inuktitutiu5169 Inuktitutiu517 Inuktitutiu5170 Inuktitutiu5171 Inuktitutiu5172 Inuktitutiu5173 Inuktitutiu5174 Inuktitutiu5175 Inuktitutiu5176 Inuktitutiu5177 Inuktitutiu5178 Inuktitutiu5179 Inuktitutiu518 Inuktitutiu5180 Inuktitutiu5181 Inuktitutiu5182 Inuktitutiu5183 Inuktitutiu5184 Inuktitutiu5185 Inuktitutiu5186 Inuktitutiu5187 Inuktitutiu5188 Inuktitutiu5189 Inuktitutiu519 Inuktitutiu5190 Inuktitutiu5191 Inuktitutiu5192 Inuktitutiu5193 Inuktitutiu5194 Inuktitutiu5195 Inuktitutiu5196 Inuktitutiu5197 Inuktitutiu5198 Inuktitutiu5199 Inuktitutiu52 Inuktitutiu520 Inuktitutiu5200 Inuktitutiu5201 Inuktitutiu5202 Inuktitutiu5203 Inuktitutiu5204 Inuktitutiu5205 Inuktitutiu5206 Inuktitutiu5207 Inuktitutiu5208 Inuktitutiu5209 Inuktitutiu521 Inuktitutiu5210 Inuktitutiu5211 Inuktitutiu5212 Inuktitutiu5213 Inuktitutiu5214 Inuktitutiu5215 Inuktitutiu5216 Inuktitutiu5217 Inuktitutiu5218 Inuktitutiu5219 Inuktitutiu522 Inuktitutiu5220 Inuktitutiu5221 Inuktitutiu5222 Inuktitutiu5223 Inuktitutiu5224 Inuktitutiu5225 Inuktitutiu5226 Inuktitutiu5227 Inuktitutiu5228 Inuktitutiu5229 Inuktitutiu523 Inuktitutiu5230 Inuktitutiu5231 Inuktitutiu5232 Inuktitutiu5233 Inuktitutiu5234 Inuktitutiu5235 Inuktitutiu5236 Inuktitutiu5237 Inuktitutiu5238 Inuktitutiu5239 Inuktitutiu524 Inuktitutiu5240 Inuktitutiu5241 Inuktitutiu5242 Inuktitutiu5243 Inuktitutiu5244 Inuktitutiu5245 Inuktitutiu5246 Inuktitutiu5247 Inuktitutiu5248 Inuktitutiu5249 Inuktitutiu525 Inuktitutiu5250 Inuktitutiu5251 Inuktitutiu5252 Inuktitutiu5253 Inuktitutiu5254 Inuktitutiu5255 Inuktitutiu5256 Inuktitutiu5257 Inuktitutiu5258 Inuktitutiu5259 Inuktitutiu526 Inuktitutiu5260 Inuktitutiu5261 Inuktitutiu5262 Inuktitutiu5263 Inuktitutiu5264 Inuktitutiu5265 Inuktitutiu5266 Inuktitutiu5267 Inuktitutiu5268 Inuktitutiu5269 Inuktitutiu527 Inuktitutiu5270 Inuktitutiu5271 Inuktitutiu5272 Inuktitutiu5273 Inuktitutiu5274 Inuktitutiu5275 Inuktitutiu5276 Inuktitutiu5277 Inuktitutiu5278 Inuktitutiu5279 Inuktitutiu528 Inuktitutiu5280 Inuktitutiu5281 Inuktitutiu5282 Inuktitutiu5283 Inuktitutiu5284 Inuktitutiu5285 Inuktitutiu5286 Inuktitutiu5287 Inuktitutiu5288 Inuktitutiu5289 Inuktitutiu529 Inuktitutiu5290 Inuktitutiu5291 Inuktitutiu5292 Inuktitutiu5293 Inuktitutiu5294 Inuktitutiu5295 Inuktitutiu5296 Inuktitutiu5297 Inuktitutiu5298 Inuktitutiu5299 Inuktitutiu53 Inuktitutiu530 Inuktitutiu5300 Inuktitutiu5301 Inuktitutiu5302 Inuktitutiu5303 Inuktitutiu5304 Inuktitutiu5305 Inuktitutiu5306 Inuktitutiu5307 Inuktitutiu5308 Inuktitutiu5309 Inuktitutiu531 Inuktitutiu5310 Inuktitutiu5311 Inuktitutiu5312 Inuktitutiu5313 Inuktitutiu5314 Inuktitutiu5315 Inuktitutiu5316 Inuktitutiu5317 Inuktitutiu5318 Inuktitutiu5319 Inuktitutiu532 Inuktitutiu5320 Inuktitutiu5321 Inuktitutiu5322 Inuktitutiu5323 Inuktitutiu5324 Inuktitutiu5325 Inuktitutiu5326 Inuktitutiu5327 Inuktitutiu5328 Inuktitutiu5329 Inuktitutiu533 Inuktitutiu5330 Inuktitutiu5331 Inuktitutiu5332 Inuktitutiu5333 Inuktitutiu5334 Inuktitutiu5335 Inuktitutiu5336 Inuktitutiu5337 Inuktitutiu5338 Inuktitutiu5339 Inuktitutiu534 Inuktitutiu5340 Inuktitutiu5341 Inuktitutiu5342 Inuktitutiu5343 Inuktitutiu5344 Inuktitutiu5345 Inuktitutiu5346 Inuktitutiu5347 Inuktitutiu5348 Inuktitutiu5349 Inuktitutiu535 Inuktitutiu5350 Inuktitutiu5351 Inuktitutiu5352 Inuktitutiu5353 Inuktitutiu5354 Inuktitutiu5355 Inuktitutiu5356 Inuktitutiu5357 Inuktitutiu5358 Inuktitutiu5359 Inuktitutiu536 Inuktitutiu5360 Inuktitutiu5361 Inuktitutiu5362 Inuktitutiu5363 Inuktitutiu5364 Inuktitutiu5365 Inuktitutiu5366 Inuktitutiu5367 Inuktitutiu5368 Inuktitutiu5369 Inuktitutiu537 Inuktitutiu5370 Inuktitutiu5371 Inuktitutiu5372 Inuktitutiu5373 Inuktitutiu5374 Inuktitutiu5375 Inuktitutiu5376 Inuktitutiu5377 Inuktitutiu5378 Inuktitutiu5379 Inuktitutiu538 Inuktitutiu5380 Inuktitutiu5381 Inuktitutiu5382 Inuktitutiu5383 Inuktitutiu5384 Inuktitutiu5385 Inuktitutiu5386 Inuktitutiu5387 Inuktitutiu5388 Inuktitutiu5389 Inuktitutiu539 Inuktitutiu5390 Inuktitutiu5391 Inuktitutiu5392 Inuktitutiu5393 Inuktitutiu5394 Inuktitutiu5395 Inuktitutiu5396 Inuktitutiu5397 Inuktitutiu5398 Inuktitutiu5399 Inuktitutiu54 Inuktitutiu540 Inuktitutiu5400 Inuktitutiu5401 Inuktitutiu5402 Inuktitutiu5403 Inuktitutiu5404 Inuktitutiu5405 Inuktitutiu5406 Inuktitutiu5407 Inuktitutiu5408 Inuktitutiu5409 Inuktitutiu541 Inuktitutiu5410 Inuktitutiu5411 Inuktitutiu5412 Inuktitutiu5413 Inuktitutiu5414 Inuktitutiu5415 Inuktitutiu5416 Inuktitutiu5417 Inuktitutiu5418 Inuktitutiu5419 Inuktitutiu542 Inuktitutiu5420 Inuktitutiu5421 Inuktitutiu5422 Inuktitutiu5423 Inuktitutiu5424 Inuktitutiu5425 Inuktitutiu5426 Inuktitutiu5427 Inuktitutiu5428 Inuktitutiu5429 Inuktitutiu543 Inuktitutiu5430 Inuktitutiu5431 Inuktitutiu5432 Inuktitutiu5433 Inuktitutiu5434 Inuktitutiu5435 Inuktitutiu5436 Inuktitutiu5437 Inuktitutiu5438 Inuktitutiu5439 Inuktitutiu544 Inuktitutiu5440 Inuktitutiu5441 Inuktitutiu5442 Inuktitutiu5443 Inuktitutiu5444 Inuktitutiu5445 Inuktitutiu5446 Inuktitutiu5447 Inuktitutiu5448 Inuktitutiu5449 Inuktitutiu545 Inuktitutiu5450 Inuktitutiu5451 Inuktitutiu5452 Inuktitutiu5453 Inuktitutiu5454 Inuktitutiu5455 Inuktitutiu5456 Inuktitutiu5457 Inuktitutiu5458 Inuktitutiu5459 Inuktitutiu546 Inuktitutiu5460 Inuktitutiu5461 Inuktitutiu5462 Inuktitutiu5463 Inuktitutiu5464 Inuktitutiu5465 Inuktitutiu5466 Inuktitutiu5467 Inuktitutiu5468 Inuktitutiu5469 Inuktitutiu547 Inuktitutiu5470 Inuktitutiu5471 Inuktitutiu5472 Inuktitutiu5473 Inuktitutiu5474 Inuktitutiu5475 Inuktitutiu5476 Inuktitutiu5477 Inuktitutiu5478 Inuktitutiu5479 Inuktitutiu548 Inuktitutiu5480 Inuktitutiu5481 Inuktitutiu5482 Inuktitutiu5483 Inuktitutiu5484 Inuktitutiu5485 Inuktitutiu5486 Inuktitutiu5487 Inuktitutiu5488 Inuktitutiu5489 Inuktitutiu549 Inuktitutiu5490 Inuktitutiu5491 Inuktitutiu5492 Inuktitutiu5493 Inuktitutiu5494 Inuktitutiu5495 Inuktitutiu5496 Inuktitutiu5497 Inuktitutiu5498 Inuktitutiu5499 Inuktitutiu55 Inuktitutiu550 Inuktitutiu5500 Inuktitutiu5501 Inuktitutiu5502 Inuktitutiu5503 Inuktitutiu5504 Inuktitutiu5505 Inuktitutiu5506 Inuktitutiu5507 Inuktitutiu5508 Inuktitutiu5509 Inuktitutiu551 Inuktitutiu5510 Inuktitutiu5511 Inuktitutiu5512 Inuktitutiu5513 Inuktitutiu5514 Inuktitutiu5515 Inuktitutiu5516 Inuktitutiu5517 Inuktitutiu5518 Inuktitutiu5519 Inuktitutiu552 Inuktitutiu5520 Inuktitutiu5521 Inuktitutiu5522 Inuktitutiu5523 Inuktitutiu5524 Inuktitutiu5525 Inuktitutiu5526 Inuktitutiu5527 Inuktitutiu5528 Inuktitutiu5529 Inuktitutiu553 Inuktitutiu5530 Inuktitutiu5531 Inuktitutiu5532 Inuktitutiu5533 Inuktitutiu5534 Inuktitutiu5535 Inuktitutiu5536 Inuktitutiu5537 Inuktitutiu5538 Inuktitutiu5539 Inuktitutiu554 Inuktitutiu5540 Inuktitutiu5541 Inuktitutiu5542 Inuktitutiu5543 Inuktitutiu5544 Inuktitutiu5545 Inuktitutiu5546 Inuktitutiu5547 Inuktitutiu5548 Inuktitutiu5549 Inuktitutiu555 Inuktitutiu5550 Inuktitutiu5551 Inuktitutiu5552 Inuktitutiu5553 Inuktitutiu5554 Inuktitutiu5555 Inuktitutiu5556 Inuktitutiu5557 Inuktitutiu5558 Inuktitutiu5559 Inuktitutiu556 Inuktitutiu5560 Inuktitutiu5561 Inuktitutiu5562 Inuktitutiu5563 Inuktitutiu5564 Inuktitutiu5565 Inuktitutiu5566 Inuktitutiu5567 Inuktitutiu5568 Inuktitutiu5569 Inuktitutiu557 Inuktitutiu5570 Inuktitutiu5571 Inuktitutiu5572 Inuktitutiu5573 Inuktitutiu5574 Inuktitutiu5575 Inuktitutiu5576 Inuktitutiu5577 Inuktitutiu5578 Inuktitutiu5579 Inuktitutiu558 Inuktitutiu5580 Inuktitutiu5581 Inuktitutiu5582 Inuktitutiu5583 Inuktitutiu5584 Inuktitutiu5585 Inuktitutiu5586 Inuktitutiu5587 Inuktitutiu5588 Inuktitutiu5589 Inuktitutiu559 Inuktitutiu5590 Inuktitutiu5591 Inuktitutiu5592 Inuktitutiu5593 Inuktitutiu5594 Inuktitutiu5595 Inuktitutiu5596 Inuktitutiu5597 Inuktitutiu5598 Inuktitutiu5599 Inuktitutiu56 Inuktitutiu560 Inuktitutiu5600 Inuktitutiu5601 Inuktitutiu5602 Inuktitutiu5603 Inuktitutiu5604 Inuktitutiu5605 Inuktitutiu5606 Inuktitutiu5607 Inuktitutiu5608 Inuktitutiu5609 Inuktitutiu561 Inuktitutiu5610 Inuktitutiu5611 Inuktitutiu5612 Inuktitutiu5613 Inuktitutiu5614 Inuktitutiu5615 Inuktitutiu5616 Inuktitutiu5617 Inuktitutiu5618 Inuktitutiu5619 Inuktitutiu562 Inuktitutiu5620 Inuktitutiu5621 Inuktitutiu5622 Inuktitutiu5623 Inuktitutiu5624 Inuktitutiu5625 Inuktitutiu5626 Inuktitutiu5627 Inuktitutiu5628 Inuktitutiu5629 Inuktitutiu563 Inuktitutiu5630 Inuktitutiu5631 Inuktitutiu5632 Inuktitutiu5633 Inuktitutiu5634 Inuktitutiu5635 Inuktitutiu5636 Inuktitutiu5637 Inuktitutiu5638 Inuktitutiu5639 Inuktitutiu564 Inuktitutiu5640 Inuktitutiu5641 Inuktitutiu5642 Inuktitutiu5643 Inuktitutiu5644 Inuktitutiu5645 Inuktitutiu5646 Inuktitutiu5647 Inuktitutiu5648 Inuktitutiu5649 Inuktitutiu565 Inuktitutiu5650 Inuktitutiu5651 Inuktitutiu5652 Inuktitutiu5653 Inuktitutiu5654 Inuktitutiu5655 Inuktitutiu5656 Inuktitutiu5657 Inuktitutiu5658 Inuktitutiu5659 Inuktitutiu566 Inuktitutiu5660 Inuktitutiu5661 Inuktitutiu5662 Inuktitutiu5663 Inuktitutiu5664 Inuktitutiu5665 Inuktitutiu5666 Inuktitutiu5667 Inuktitutiu5668 Inuktitutiu5669 Inuktitutiu567 Inuktitutiu5670 Inuktitutiu5671 Inuktitutiu5672 Inuktitutiu5673 Inuktitutiu5674 Inuktitutiu5675 Inuktitutiu5676 Inuktitutiu5677 Inuktitutiu5678 Inuktitutiu5679 Inuktitutiu568 Inuktitutiu5680 Inuktitutiu5681 Inuktitutiu5682 Inuktitutiu5683 Inuktitutiu5684 Inuktitutiu5685 Inuktitutiu5686 Inuktitutiu5687 Inuktitutiu5688 Inuktitutiu5689 Inuktitutiu569 Inuktitutiu5690 Inuktitutiu5691 Inuktitutiu5692 Inuktitutiu5693 Inuktitutiu5694 Inuktitutiu5695 Inuktitutiu5696 Inuktitutiu5697 Inuktitutiu5698 Inuktitutiu5699 Inuktitutiu57 Inuktitutiu570 Inuktitutiu5700 Inuktitutiu5701 Inuktitutiu5702 Inuktitutiu5703 Inuktitutiu5704 Inuktitutiu5705 Inuktitutiu5706 Inuktitutiu5707 Inuktitutiu5708 Inuktitutiu5709 Inuktitutiu571 Inuktitutiu5710 Inuktitutiu5711 Inuktitutiu5712 Inuktitutiu5713 Inuktitutiu5714 Inuktitutiu5715 Inuktitutiu5716 Inuktitutiu5717 Inuktitutiu5718 Inuktitutiu5719 Inuktitutiu572 Inuktitutiu5720 Inuktitutiu5721 Inuktitutiu5722 Inuktitutiu5723 Inuktitutiu5724 Inuktitutiu5725 Inuktitutiu5726 Inuktitutiu5727 Inuktitutiu5728 Inuktitutiu5729 Inuktitutiu573 Inuktitutiu5730 Inuktitutiu5731 Inuktitutiu5732 Inuktitutiu5733 Inuktitutiu5734 Inuktitutiu5735 Inuktitutiu5736 Inuktitutiu5737 Inuktitutiu5738 Inuktitutiu5739 Inuktitutiu574 Inuktitutiu5740 Inuktitutiu5741 Inuktitutiu5742 Inuktitutiu5743 Inuktitutiu5744 Inuktitutiu5745 Inuktitutiu5746 Inuktitutiu5747 Inuktitutiu5748 Inuktitutiu5749 Inuktitutiu575 Inuktitutiu5750 Inuktitutiu5751 Inuktitutiu5752 Inuktitutiu5753 Inuktitutiu5754 Inuktitutiu5755 Inuktitutiu5756 Inuktitutiu5757 Inuktitutiu5758 Inuktitutiu5759 Inuktitutiu576 Inuktitutiu5760 Inuktitutiu5761 Inuktitutiu5762 Inuktitutiu5763 Inuktitutiu5764 Inuktitutiu5765 Inuktitutiu5766 Inuktitutiu5767 Inuktitutiu5768 Inuktitutiu5769 Inuktitutiu577 Inuktitutiu5770 Inuktitutiu5771 Inuktitutiu5772 Inuktitutiu5773 Inuktitutiu5774 Inuktitutiu5775 Inuktitutiu5776 Inuktitutiu5777 Inuktitutiu5778 Inuktitutiu5779 Inuktitutiu578 Inuktitutiu5780 Inuktitutiu5781 Inuktitutiu5782 Inuktitutiu5783 Inuktitutiu5784 Inuktitutiu5785 Inuktitutiu5786 Inuktitutiu5787 Inuktitutiu5788 Inuktitutiu5789 Inuktitutiu579 Inuktitutiu5790 Inuktitutiu5791 Inuktitutiu5792 Inuktitutiu5793 Inuktitutiu5794 Inuktitutiu5795 Inuktitutiu5796 Inuktitutiu5797 Inuktitutiu5798 Inuktitutiu5799 Inuktitutiu58 Inuktitutiu580 Inuktitutiu5800 Inuktitutiu5801 Inuktitutiu5802 Inuktitutiu5803 Inuktitutiu5804 Inuktitutiu5805 Inuktitutiu5806 Inuktitutiu5807 Inuktitutiu5808 Inuktitutiu5809 Inuktitutiu581 Inuktitutiu5810 Inuktitutiu5811 Inuktitutiu5812 Inuktitutiu5813 Inuktitutiu5814 Inuktitutiu5815 Inuktitutiu5816 Inuktitutiu5817 Inuktitutiu5818 Inuktitutiu5819 Inuktitutiu582 Inuktitutiu5820 Inuktitutiu5821 Inuktitutiu5822 Inuktitutiu5823 Inuktitutiu5824 Inuktitutiu5825 Inuktitutiu5826 Inuktitutiu5827 Inuktitutiu5828 Inuktitutiu5829 Inuktitutiu583 Inuktitutiu5830 Inuktitutiu5831 Inuktitutiu5832 Inuktitutiu5833 Inuktitutiu5834 Inuktitutiu5835 Inuktitutiu5836 Inuktitutiu5837 Inuktitutiu5838 Inuktitutiu5839 Inuktitutiu584 Inuktitutiu5840 Inuktitutiu5841 Inuktitutiu5842 Inuktitutiu5843 Inuktitutiu5844 Inuktitutiu5845 Inuktitutiu5846 Inuktitutiu5847 Inuktitutiu5848 Inuktitutiu5849 Inuktitutiu585 Inuktitutiu5850 Inuktitutiu5851 Inuktitutiu5852 Inuktitutiu5853 Inuktitutiu5854 Inuktitutiu5855 Inuktitutiu5856 Inuktitutiu5857 Inuktitutiu5858 Inuktitutiu5859 Inuktitutiu586 Inuktitutiu5860 Inuktitutiu5861 Inuktitutiu5862 Inuktitutiu5863 Inuktitutiu5864 Inuktitutiu5865 Inuktitutiu5866 Inuktitutiu5867 Inuktitutiu5868 Inuktitutiu5869 Inuktitutiu587 Inuktitutiu5870 Inuktitutiu5871 Inuktitutiu5872 Inuktitutiu5873 Inuktitutiu5874 Inuktitutiu5875 Inuktitutiu5876 Inuktitutiu5877 Inuktitutiu5878 Inuktitutiu5879 Inuktitutiu588 Inuktitutiu5880 Inuktitutiu5881 Inuktitutiu5882 Inuktitutiu5883 Inuktitutiu5884 Inuktitutiu5885 Inuktitutiu5886 Inuktitutiu5887 Inuktitutiu5888 Inuktitutiu5889 Inuktitutiu589 Inuktitutiu5890 Inuktitutiu5891 Inuktitutiu5892 Inuktitutiu5893 Inuktitutiu5894 Inuktitutiu5895 Inuktitutiu5896 Inuktitutiu5897 Inuktitutiu5898 Inuktitutiu5899 Inuktitutiu59 Inuktitutiu590 Inuktitutiu5900 Inuktitutiu5901 Inuktitutiu5902 Inuktitutiu5903 Inuktitutiu5904 Inuktitutiu5905 Inuktitutiu5906 Inuktitutiu5907 Inuktitutiu5908 Inuktitutiu5909 Inuktitutiu591 Inuktitutiu5910 Inuktitutiu5911 Inuktitutiu5912 Inuktitutiu5913 Inuktitutiu5914 Inuktitutiu5915 Inuktitutiu5916 Inuktitutiu5917 Inuktitutiu5918 Inuktitutiu5919 Inuktitutiu592 Inuktitutiu5920 Inuktitutiu5921 Inuktitutiu5922 Inuktitutiu5923 Inuktitutiu5924 Inuktitutiu5925 Inuktitutiu5926 Inuktitutiu5927 Inuktitutiu5928 Inuktitutiu5929 Inuktitutiu593 Inuktitutiu5930 Inuktitutiu5931 Inuktitutiu5932 Inuktitutiu5933 Inuktitutiu5934 Inuktitutiu5935 Inuktitutiu5936 Inuktitutiu5937 Inuktitutiu5938 Inuktitutiu5939 Inuktitutiu594 Inuktitutiu5940 Inuktitutiu5941 Inuktitutiu5942 Inuktitutiu5943 Inuktitutiu5944 Inuktitutiu5945 Inuktitutiu5946 Inuktitutiu5947 Inuktitutiu5948 Inuktitutiu5949 Inuktitutiu595 Inuktitutiu5950 Inuktitutiu5951 Inuktitutiu5952 Inuktitutiu5953 Inuktitutiu5954 Inuktitutiu5955 Inuktitutiu5956 Inuktitutiu5957 Inuktitutiu5958 Inuktitutiu5959 Inuktitutiu596 Inuktitutiu5960 Inuktitutiu5961 Inuktitutiu5962 Inuktitutiu5963 Inuktitutiu5964 Inuktitutiu5965 Inuktitutiu5966 Inuktitutiu5967 Inuktitutiu5968 Inuktitutiu5969 Inuktitutiu597 Inuktitutiu5970 Inuktitutiu5971 Inuktitutiu5972 Inuktitutiu5973 Inuktitutiu5974 Inuktitutiu5975 Inuktitutiu5976 Inuktitutiu5977 Inuktitutiu5978 Inuktitutiu5979 Inuktitutiu598 Inuktitutiu5980 Inuktitutiu5981 Inuktitutiu5982 Inuktitutiu5983 Inuktitutiu5984 Inuktitutiu5985 Inuktitutiu5986 Inuktitutiu5987 Inuktitutiu5988 Inuktitutiu5989 Inuktitutiu599 Inuktitutiu5990 Inuktitutiu5991 Inuktitutiu5992 Inuktitutiu5993 Inuktitutiu5994 Inuktitutiu5995 Inuktitutiu5996 Inuktitutiu5997 Inuktitutiu5998 Inuktitutiu5999 Inuktitutiu6 Inuktitutiu60 Inuktitutiu600 Inuktitutiu6000 Inuktitutiu6001 Inuktitutiu6002 Inuktitutiu6003 Inuktitutiu6004 Inuktitutiu6005 Inuktitutiu6006 Inuktitutiu6007 Inuktitutiu6008 Inuktitutiu6009 Inuktitutiu601 Inuktitutiu6010 Inuktitutiu6011 Inuktitutiu6012 Inuktitutiu6013 Inuktitutiu6014 Inuktitutiu6015 Inuktitutiu6016 Inuktitutiu6017 Inuktitutiu6018 Inuktitutiu6019 Inuktitutiu602 Inuktitutiu6020 Inuktitutiu6021 Inuktitutiu6022 Inuktitutiu6023 Inuktitutiu6024 Inuktitutiu6025 Inuktitutiu6026 Inuktitutiu6027 Inuktitutiu6028 Inuktitutiu6029 Inuktitutiu603 Inuktitutiu6030 Inuktitutiu6031 Inuktitutiu6032 Inuktitutiu6033 Inuktitutiu6034 Inuktitutiu6035 Inuktitutiu6036 Inuktitutiu6037 Inuktitutiu6038 Inuktitutiu6039 Inuktitutiu604 Inuktitutiu6040 Inuktitutiu6041 Inuktitutiu6042 Inuktitutiu6043 Inuktitutiu6044 Inuktitutiu6045 Inuktitutiu6046 Inuktitutiu6047 Inuktitutiu6048 Inuktitutiu6049 Inuktitutiu605 Inuktitutiu6050 Inuktitutiu6051 Inuktitutiu6052 Inuktitutiu6053 Inuktitutiu6054 Inuktitutiu6055 Inuktitutiu6056 Inuktitutiu6057 Inuktitutiu6058 Inuktitutiu6059 Inuktitutiu606 Inuktitutiu6060 Inuktitutiu6061 Inuktitutiu6062 Inuktitutiu6063 Inuktitutiu6064 Inuktitutiu6065 Inuktitutiu6066 Inuktitutiu6067 Inuktitutiu6068 Inuktitutiu6069 Inuktitutiu607 Inuktitutiu6070 Inuktitutiu6071 Inuktitutiu6072 Inuktitutiu6073 Inuktitutiu6074 Inuktitutiu6075 Inuktitutiu6076 Inuktitutiu6077 Inuktitutiu6078 Inuktitutiu6079 Inuktitutiu608 Inuktitutiu6080 Inuktitutiu6081 Inuktitutiu6082 Inuktitutiu6083 Inuktitutiu6084 Inuktitutiu6085 Inuktitutiu6086 Inuktitutiu6087 Inuktitutiu6088 Inuktitutiu6089 Inuktitutiu609 Inuktitutiu6090 Inuktitutiu6091 Inuktitutiu6092 Inuktitutiu6093 Inuktitutiu6094 Inuktitutiu6095 Inuktitutiu6096 Inuktitutiu6097 Inuktitutiu6098 Inuktitutiu6099 Inuktitutiu61 Inuktitutiu610 Inuktitutiu6100 Inuktitutiu6101 Inuktitutiu6102 Inuktitutiu6103 Inuktitutiu6104 Inuktitutiu6105 Inuktitutiu6106 Inuktitutiu6107 Inuktitutiu6108 Inuktitutiu6109 Inuktitutiu611 Inuktitutiu6110 Inuktitutiu6111 Inuktitutiu6112 Inuktitutiu6113 Inuktitutiu6114 Inuktitutiu6115 Inuktitutiu6116 Inuktitutiu6117 Inuktitutiu6118 Inuktitutiu6119 Inuktitutiu612 Inuktitutiu6120 Inuktitutiu6121 Inuktitutiu6122 Inuktitutiu6123 Inuktitutiu6124 Inuktitutiu6125 Inuktitutiu6126 Inuktitutiu6127 Inuktitutiu6128 Inuktitutiu6129 Inuktitutiu613 Inuktitutiu6130 Inuktitutiu6131 Inuktitutiu6132 Inuktitutiu6133 Inuktitutiu6134 Inuktitutiu6135 Inuktitutiu6136 Inuktitutiu6137 Inuktitutiu6138 Inuktitutiu6139 Inuktitutiu614 Inuktitutiu6140 Inuktitutiu6141 Inuktitutiu6142 Inuktitutiu6143 Inuktitutiu6144 Inuktitutiu6145 Inuktitutiu6146 Inuktitutiu6147 Inuktitutiu6148 Inuktitutiu6149 Inuktitutiu615 Inuktitutiu6150 Inuktitutiu6151 Inuktitutiu6152 Inuktitutiu6153 Inuktitutiu6154 Inuktitutiu6155 Inuktitutiu6156 Inuktitutiu6157 Inuktitutiu6158 Inuktitutiu6159 Inuktitutiu616 Inuktitutiu6160 Inuktitutiu6161 Inuktitutiu6162 Inuktitutiu6163 Inuktitutiu6164 Inuktitutiu6165 Inuktitutiu6166 Inuktitutiu6167 Inuktitutiu6168 Inuktitutiu6169 Inuktitutiu617 Inuktitutiu6170 Inuktitutiu6171 Inuktitutiu6172 Inuktitutiu6173 Inuktitutiu6174 Inuktitutiu6175 Inuktitutiu6176 Inuktitutiu6177 Inuktitutiu6178 Inuktitutiu6179 Inuktitutiu618 Inuktitutiu6180 Inuktitutiu6181 Inuktitutiu6182 Inuktitutiu6183 Inuktitutiu6184 Inuktitutiu6185 Inuktitutiu6186 Inuktitutiu6187 Inuktitutiu6188 Inuktitutiu6189 Inuktitutiu619 Inuktitutiu6190 Inuktitutiu6191 Inuktitutiu6192 Inuktitutiu6193 Inuktitutiu6194 Inuktitutiu6195 Inuktitutiu6196 Inuktitutiu6197 Inuktitutiu6198 Inuktitutiu6199 Inuktitutiu62 Inuktitutiu620 Inuktitutiu6200 Inuktitutiu6201 Inuktitutiu6202 Inuktitutiu6203 Inuktitutiu6204 Inuktitutiu6205 Inuktitutiu6206 Inuktitutiu6207 Inuktitutiu6208 Inuktitutiu6209 Inuktitutiu621 Inuktitutiu6210 Inuktitutiu6211 Inuktitutiu6212 Inuktitutiu6213 Inuktitutiu6214 Inuktitutiu6215 Inuktitutiu6216 Inuktitutiu6217 Inuktitutiu6218 Inuktitutiu6219 Inuktitutiu622 Inuktitutiu6220 Inuktitutiu6221 Inuktitutiu6222 Inuktitutiu6223 Inuktitutiu6224 Inuktitutiu6225 Inuktitutiu6226 Inuktitutiu6227 Inuktitutiu6228 Inuktitutiu6229 Inuktitutiu623 Inuktitutiu6230 Inuktitutiu6231 Inuktitutiu6232 Inuktitutiu6233 Inuktitutiu6234 Inuktitutiu6235 Inuktitutiu6236 Inuktitutiu6237 Inuktitutiu6238 Inuktitutiu6239 Inuktitutiu624 Inuktitutiu6240 Inuktitutiu6241 Inuktitutiu6242 Inuktitutiu6243 Inuktitutiu6244 Inuktitutiu6245 Inuktitutiu6246 Inuktitutiu6247 Inuktitutiu6248 Inuktitutiu6249 Inuktitutiu625 Inuktitutiu6250 Inuktitutiu6251 Inuktitutiu6252 Inuktitutiu6253 Inuktitutiu6254 Inuktitutiu6255 Inuktitutiu6256 Inuktitutiu6257 Inuktitutiu6258 Inuktitutiu6259 Inuktitutiu626 Inuktitutiu6260 Inuktitutiu6261 Inuktitutiu6262 Inuktitutiu6263 Inuktitutiu6264 Inuktitutiu6265 Inuktitutiu6266 Inuktitutiu6267 Inuktitutiu6268 Inuktitutiu6269 Inuktitutiu627 Inuktitutiu6270 Inuktitutiu6271 Inuktitutiu6272 Inuktitutiu6273 Inuktitutiu6274 Inuktitutiu6275 Inuktitutiu6276 Inuktitutiu6277 Inuktitutiu6278 Inuktitutiu6279 Inuktitutiu628 Inuktitutiu6280 Inuktitutiu6281 Inuktitutiu6282 Inuktitutiu6283 Inuktitutiu6284 Inuktitutiu6285 Inuktitutiu6286 Inuktitutiu6287 Inuktitutiu6288 Inuktitutiu6289 Inuktitutiu629 Inuktitutiu6290 Inuktitutiu6291 Inuktitutiu6292 Inuktitutiu6293 Inuktitutiu6294 Inuktitutiu6295 Inuktitutiu6296 Inuktitutiu6297 Inuktitutiu6298 Inuktitutiu6299 Inuktitutiu63 Inuktitutiu630 Inuktitutiu6300 Inuktitutiu6301 Inuktitutiu6302 Inuktitutiu6303 Inuktitutiu6304 Inuktitutiu6305 Inuktitutiu6306 Inuktitutiu6307 Inuktitutiu6308 Inuktitutiu6309 Inuktitutiu631 Inuktitutiu6310 Inuktitutiu6311 Inuktitutiu6312 Inuktitutiu6313 Inuktitutiu6314 Inuktitutiu6315 Inuktitutiu6316 Inuktitutiu6317 Inuktitutiu6318 Inuktitutiu6319 Inuktitutiu632 Inuktitutiu6320 Inuktitutiu6321 Inuktitutiu6322 Inuktitutiu6323 Inuktitutiu6324 Inuktitutiu6325 Inuktitutiu6326 Inuktitutiu6327 Inuktitutiu6328 Inuktitutiu6329 Inuktitutiu633 Inuktitutiu6330 Inuktitutiu6331 Inuktitutiu6332 Inuktitutiu6333 Inuktitutiu6334 Inuktitutiu6335 Inuktitutiu6336 Inuktitutiu6337 Inuktitutiu6338 Inuktitutiu6339 Inuktitutiu634 Inuktitutiu6340 Inuktitutiu6341 Inuktitutiu6342 Inuktitutiu6343 Inuktitutiu6344 Inuktitutiu6345 Inuktitutiu6346 Inuktitutiu6347 Inuktitutiu6348 Inuktitutiu6349 Inuktitutiu635 Inuktitutiu6350 Inuktitutiu6351 Inuktitutiu6352 Inuktitutiu6353 Inuktitutiu6354 Inuktitutiu6355 Inuktitutiu6356 Inuktitutiu6357 Inuktitutiu6358 Inuktitutiu6359 Inuktitutiu636 Inuktitutiu6360 Inuktitutiu6361 Inuktitutiu6362 Inuktitutiu6363 Inuktitutiu6364 Inuktitutiu6365 Inuktitutiu6366 Inuktitutiu6367 Inuktitutiu6368 Inuktitutiu6369 Inuktitutiu637 Inuktitutiu6370 Inuktitutiu6371 Inuktitutiu6372 Inuktitutiu6373 Inuktitutiu6374 Inuktitutiu6375 Inuktitutiu6376 Inuktitutiu6377 Inuktitutiu6378 Inuktitutiu6379 Inuktitutiu638 Inuktitutiu6380 Inuktitutiu6381 Inuktitutiu6382 Inuktitutiu6383 Inuktitutiu6384 Inuktitutiu6385 Inuktitutiu6386 Inuktitutiu6387 Inuktitutiu6388 Inuktitutiu6389 Inuktitutiu639 Inuktitutiu6390 Inuktitutiu6391 Inuktitutiu6392 Inuktitutiu6393 Inuktitutiu6394 Inuktitutiu6395 Inuktitutiu6396 Inuktitutiu6397 Inuktitutiu6398 Inuktitutiu6399 Inuktitutiu64 Inuktitutiu640 Inuktitutiu6400 Inuktitutiu6401 Inuktitutiu6402 Inuktitutiu6403 Inuktitutiu6404 Inuktitutiu6405 Inuktitutiu6406 Inuktitutiu6407 Inuktitutiu6408 Inuktitutiu6409 Inuktitutiu641 Inuktitutiu6410 Inuktitutiu6411 Inuktitutiu6412 Inuktitutiu6413 Inuktitutiu6414 Inuktitutiu6415 Inuktitutiu6416 Inuktitutiu6417 Inuktitutiu6418 Inuktitutiu6419 Inuktitutiu642 Inuktitutiu6420 Inuktitutiu6421 Inuktitutiu6422 Inuktitutiu6423 Inuktitutiu6424 Inuktitutiu6425 Inuktitutiu6426 Inuktitutiu6427 Inuktitutiu6428 Inuktitutiu6429 Inuktitutiu643 Inuktitutiu6430 Inuktitutiu6431 Inuktitutiu6432 Inuktitutiu6433 Inuktitutiu6434 Inuktitutiu6435 Inuktitutiu6436 Inuktitutiu6437 Inuktitutiu6438 Inuktitutiu6439 Inuktitutiu644 Inuktitutiu6440 Inuktitutiu6441 Inuktitutiu6442 Inuktitutiu6443 Inuktitutiu6444 Inuktitutiu6445 Inuktitutiu6446 Inuktitutiu6447 Inuktitutiu6448 Inuktitutiu6449 Inuktitutiu645 Inuktitutiu6450 Inuktitutiu6451 Inuktitutiu6452 Inuktitutiu6453 Inuktitutiu6454 Inuktitutiu6455 Inuktitutiu6456 Inuktitutiu6457 Inuktitutiu6458 Inuktitutiu6459 Inuktitutiu646 Inuktitutiu6460 Inuktitutiu6461 Inuktitutiu6462 Inuktitutiu6463 Inuktitutiu6464 Inuktitutiu6465 Inuktitutiu6466 Inuktitutiu6467 Inuktitutiu6468 Inuktitutiu6469 Inuktitutiu647 Inuktitutiu6470 Inuktitutiu6471 Inuktitutiu6472 Inuktitutiu6473 Inuktitutiu6474 Inuktitutiu6475 Inuktitutiu6476 Inuktitutiu6477 Inuktitutiu6478 Inuktitutiu6479 Inuktitutiu648 Inuktitutiu6480 Inuktitutiu6481 Inuktitutiu6482 Inuktitutiu6483 Inuktitutiu6484 Inuktitutiu6485 Inuktitutiu6486 Inuktitutiu6487 Inuktitutiu6488 Inuktitutiu6489 Inuktitutiu649 Inuktitutiu6490 Inuktitutiu6491 Inuktitutiu6492 Inuktitutiu6493 Inuktitutiu6494 Inuktitutiu6495 Inuktitutiu6496 Inuktitutiu6497 Inuktitutiu6498 Inuktitutiu6499 Inuktitutiu65 Inuktitutiu650 Inuktitutiu6500 Inuktitutiu6501 Inuktitutiu6502 Inuktitutiu6503 Inuktitutiu6504 Inuktitutiu6505 Inuktitutiu6506 Inuktitutiu6507 Inuktitutiu6508 Inuktitutiu6509 Inuktitutiu651 Inuktitutiu6510 Inuktitutiu6511 Inuktitutiu6512 Inuktitutiu6513 Inuktitutiu6514 Inuktitutiu6515 Inuktitutiu6516 Inuktitutiu6517 Inuktitutiu6518 Inuktitutiu6519 Inuktitutiu652 Inuktitutiu6520 Inuktitutiu6521 Inuktitutiu6522 Inuktitutiu6523 Inuktitutiu6524 Inuktitutiu6525 Inuktitutiu6526 Inuktitutiu6527 Inuktitutiu6528 Inuktitutiu6529 Inuktitutiu653 Inuktitutiu6530 Inuktitutiu6531 Inuktitutiu6532 Inuktitutiu6533 Inuktitutiu6534 Inuktitutiu6535 Inuktitutiu6536 Inuktitutiu6537 Inuktitutiu6538 Inuktitutiu6539 Inuktitutiu654 Inuktitutiu6540 Inuktitutiu6541 Inuktitutiu6542 Inuktitutiu6543 Inuktitutiu6544 Inuktitutiu6545 Inuktitutiu6546 Inuktitutiu6547 Inuktitutiu6548 Inuktitutiu6549 Inuktitutiu655 Inuktitutiu6550 Inuktitutiu6551 Inuktitutiu6552 Inuktitutiu6553 Inuktitutiu6554 Inuktitutiu6555 Inuktitutiu6556 Inuktitutiu6557 Inuktitutiu6558 Inuktitutiu6559 Inuktitutiu656 Inuktitutiu6560 Inuktitutiu6561 Inuktitutiu6562 Inuktitutiu6563 Inuktitutiu6564 Inuktitutiu6565 Inuktitutiu6566 Inuktitutiu6567 Inuktitutiu6568 Inuktitutiu6569 Inuktitutiu657 Inuktitutiu6570 Inuktitutiu6571 Inuktitutiu6572 Inuktitutiu6573 Inuktitutiu6574 Inuktitutiu6575 Inuktitutiu6576 Inuktitutiu6577 Inuktitutiu6578 Inuktitutiu6579 Inuktitutiu658 Inuktitutiu6580 Inuktitutiu6581 Inuktitutiu6582 Inuktitutiu6583 Inuktitutiu6584 Inuktitutiu6585 Inuktitutiu6586 Inuktitutiu6587 Inuktitutiu6588 Inuktitutiu6589 Inuktitutiu659 Inuktitutiu6590 Inuktitutiu6591 Inuktitutiu6592 Inuktitutiu6593 Inuktitutiu6594 Inuktitutiu6595 Inuktitutiu6596 Inuktitutiu6597 Inuktitutiu6598 Inuktitutiu6599 Inuktitutiu66 Inuktitutiu660 Inuktitutiu6600 Inuktitutiu6601 Inuktitutiu6602 Inuktitutiu6603 Inuktitutiu6604 Inuktitutiu6605 Inuktitutiu6606 Inuktitutiu6607 Inuktitutiu6608 Inuktitutiu6609 Inuktitutiu661 Inuktitutiu6610 Inuktitutiu6611 Inuktitutiu6612 Inuktitutiu6613 Inuktitutiu6614 Inuktitutiu6615 Inuktitutiu6616 Inuktitutiu6617 Inuktitutiu6618 Inuktitutiu6619 Inuktitutiu662 Inuktitutiu6620 Inuktitutiu6621 Inuktitutiu6622 Inuktitutiu6623 Inuktitutiu6624 Inuktitutiu6625 Inuktitutiu6626 Inuktitutiu6627 Inuktitutiu6628 Inuktitutiu6629 Inuktitutiu663 Inuktitutiu6630 Inuktitutiu6631 Inuktitutiu6632 Inuktitutiu6633 Inuktitutiu6634 Inuktitutiu6635 Inuktitutiu6636 Inuktitutiu6637 Inuktitutiu6638 Inuktitutiu6639 Inuktitutiu664 Inuktitutiu6640 Inuktitutiu6641 Inuktitutiu6642 Inuktitutiu6643 Inuktitutiu6644 Inuktitutiu6645 Inuktitutiu6646 Inuktitutiu6647 Inuktitutiu6648 Inuktitutiu6649 Inuktitutiu665 Inuktitutiu6650 Inuktitutiu6651 Inuktitutiu6652 Inuktitutiu6653 Inuktitutiu6654 Inuktitutiu6655 Inuktitutiu6656 Inuktitutiu6657 Inuktitutiu6658 Inuktitutiu6659 Inuktitutiu666 Inuktitutiu6660 Inuktitutiu6661 Inuktitutiu6662 Inuktitutiu6663 Inuktitutiu6664 Inuktitutiu6665 Inuktitutiu6666 Inuktitutiu6667 Inuktitutiu6668 Inuktitutiu6669 Inuktitutiu667 Inuktitutiu6670 Inuktitutiu6671 Inuktitutiu6672 Inuktitutiu6673 Inuktitutiu6674 Inuktitutiu6675 Inuktitutiu6676 Inuktitutiu6677 Inuktitutiu6678 Inuktitutiu6679 Inuktitutiu668 Inuktitutiu6680 Inuktitutiu6681 Inuktitutiu6682 Inuktitutiu6683 Inuktitutiu6684 Inuktitutiu6685 Inuktitutiu6686 Inuktitutiu6687 Inuktitutiu6688 Inuktitutiu6689 Inuktitutiu669 Inuktitutiu6690 Inuktitutiu6691 Inuktitutiu6692 Inuktitutiu6693 Inuktitutiu6694 Inuktitutiu6695 Inuktitutiu6696 Inuktitutiu6697 Inuktitutiu6698 Inuktitutiu6699 Inuktitutiu67 Inuktitutiu670 Inuktitutiu6700 Inuktitutiu6701 Inuktitutiu6702 Inuktitutiu6703 Inuktitutiu6704 Inuktitutiu6705 Inuktitutiu6706 Inuktitutiu6707 Inuktitutiu6708 Inuktitutiu6709 Inuktitutiu671 Inuktitutiu6710 Inuktitutiu6711 Inuktitutiu6712 Inuktitutiu6713 Inuktitutiu6714 Inuktitutiu6715 Inuktitutiu6716 Inuktitutiu6717 Inuktitutiu6718 Inuktitutiu6719 Inuktitutiu672 Inuktitutiu6720 Inuktitutiu6721 Inuktitutiu6722 Inuktitutiu6723 Inuktitutiu6724 Inuktitutiu6725 Inuktitutiu6726 Inuktitutiu6727 Inuktitutiu6728 Inuktitutiu6729 Inuktitutiu673 Inuktitutiu6730 Inuktitutiu6731 Inuktitutiu6732 Inuktitutiu6733 Inuktitutiu6734 Inuktitutiu6735 Inuktitutiu6736 Inuktitutiu6737 Inuktitutiu6738 Inuktitutiu6739 Inuktitutiu674 Inuktitutiu6740 Inuktitutiu6741 Inuktitutiu6742 Inuktitutiu6743 Inuktitutiu6744 Inuktitutiu6745 Inuktitutiu6746 Inuktitutiu6747 Inuktitutiu6748 Inuktitutiu6749 Inuktitutiu675 Inuktitutiu6750 Inuktitutiu6751 Inuktitutiu6752 Inuktitutiu6753 Inuktitutiu6754 Inuktitutiu6755 Inuktitutiu6756 Inuktitutiu6757 Inuktitutiu6758 Inuktitutiu6759 Inuktitutiu676 Inuktitutiu6760 Inuktitutiu6761 Inuktitutiu6762 Inuktitutiu6763 Inuktitutiu6764 Inuktitutiu6765 Inuktitutiu6766 Inuktitutiu6767 Inuktitutiu6768 Inuktitutiu6769 Inuktitutiu677 Inuktitutiu6770 Inuktitutiu6771 Inuktitutiu6772 Inuktitutiu6773 Inuktitutiu6774 Inuktitutiu6775 Inuktitutiu6776 Inuktitutiu6777 Inuktitutiu6778 Inuktitutiu6779 Inuktitutiu678 Inuktitutiu6780 Inuktitutiu6781 Inuktitutiu6782 Inuktitutiu6783 Inuktitutiu6784 Inuktitutiu6785 Inuktitutiu6786 Inuktitutiu6787 Inuktitutiu6788 Inuktitutiu6789 Inuktitutiu679 Inuktitutiu6790 Inuktitutiu6791 Inuktitutiu6792 Inuktitutiu6793 Inuktitutiu6794 Inuktitutiu6795 Inuktitutiu6796 Inuktitutiu6797 Inuktitutiu6798 Inuktitutiu6799 Inuktitutiu68 Inuktitutiu680 Inuktitutiu6800 Inuktitutiu6801 Inuktitutiu6802 Inuktitutiu6803 Inuktitutiu6804 Inuktitutiu6805 Inuktitutiu6806 Inuktitutiu6807 Inuktitutiu6808 Inuktitutiu6809 Inuktitutiu681 Inuktitutiu6810 Inuktitutiu6811 Inuktitutiu6812 Inuktitutiu6813 Inuktitutiu6814 Inuktitutiu6815 Inuktitutiu6816 Inuktitutiu6817 Inuktitutiu6818 Inuktitutiu6819 Inuktitutiu682 Inuktitutiu6820 Inuktitutiu6821 Inuktitutiu6822 Inuktitutiu6823 Inuktitutiu6824 Inuktitutiu6825 Inuktitutiu6826 Inuktitutiu6827 Inuktitutiu6828 Inuktitutiu6829 Inuktitutiu683 Inuktitutiu6830 Inuktitutiu6831 Inuktitutiu6832 Inuktitutiu6833 Inuktitutiu6834 Inuktitutiu6835 Inuktitutiu6836 Inuktitutiu6837 Inuktitutiu6838 Inuktitutiu6839 Inuktitutiu684 Inuktitutiu6840 Inuktitutiu6841 Inuktitutiu6842 Inuktitutiu6843 Inuktitutiu6844 Inuktitutiu6845 Inuktitutiu6846 Inuktitutiu6847 Inuktitutiu6848 Inuktitutiu6849 Inuktitutiu685 Inuktitutiu6850 Inuktitutiu6851 Inuktitutiu6852 Inuktitutiu6853 Inuktitutiu6854 Inuktitutiu6855 Inuktitutiu6856 Inuktitutiu6857 Inuktitutiu6858 Inuktitutiu6859 Inuktitutiu686 Inuktitutiu6860 Inuktitutiu6861 Inuktitutiu6862 Inuktitutiu6863 Inuktitutiu6864 Inuktitutiu6865 Inuktitutiu6866 Inuktitutiu6867 Inuktitutiu6868 Inuktitutiu6869 Inuktitutiu687 Inuktitutiu6870 Inuktitutiu6871 Inuktitutiu6872 Inuktitutiu6873 Inuktitutiu6874 Inuktitutiu6875 Inuktitutiu6876 Inuktitutiu6877 Inuktitutiu6878 Inuktitutiu6879 Inuktitutiu688 Inuktitutiu6880 Inuktitutiu6881 Inuktitutiu6882 Inuktitutiu6883 Inuktitutiu6884 Inuktitutiu6885 Inuktitutiu6886 Inuktitutiu6887 Inuktitutiu6888 Inuktitutiu6889 Inuktitutiu689 Inuktitutiu6890 Inuktitutiu6891 Inuktitutiu6892 Inuktitutiu6893 Inuktitutiu6894 Inuktitutiu6895 Inuktitutiu6896 Inuktitutiu6897 Inuktitutiu6898 Inuktitutiu6899 Inuktitutiu69 Inuktitutiu690 Inuktitutiu6900 Inuktitutiu6901 Inuktitutiu6902 Inuktitutiu6903 Inuktitutiu6904 Inuktitutiu6905 Inuktitutiu6906 Inuktitutiu6907 Inuktitutiu6908 Inuktitutiu6909 Inuktitutiu691 Inuktitutiu6910 Inuktitutiu6911 Inuktitutiu6912 Inuktitutiu6913 Inuktitutiu6914 Inuktitutiu6915 Inuktitutiu6916 Inuktitutiu6917 Inuktitutiu6918 Inuktitutiu6919 Inuktitutiu692 Inuktitutiu6920 Inuktitutiu6921 Inuktitutiu6922 Inuktitutiu6923 Inuktitutiu6924 Inuktitutiu6925 Inuktitutiu6926 Inuktitutiu6927 Inuktitutiu6928 Inuktitutiu6929 Inuktitutiu693 Inuktitutiu6930 Inuktitutiu6931 Inuktitutiu6932 Inuktitutiu6933 Inuktitutiu6934 Inuktitutiu6935 Inuktitutiu6936 Inuktitutiu6937 Inuktitutiu6938 Inuktitutiu6939 Inuktitutiu694 Inuktitutiu6940 Inuktitutiu6941 Inuktitutiu6942 Inuktitutiu6943 Inuktitutiu6944 Inuktitutiu6945 Inuktitutiu6946 Inuktitutiu6947 Inuktitutiu6948 Inuktitutiu6949 Inuktitutiu695 Inuktitutiu6950 Inuktitutiu6951 Inuktitutiu6952 Inuktitutiu6953 Inuktitutiu6954 Inuktitutiu6955 Inuktitutiu6956 Inuktitutiu6957 Inuktitutiu6958 Inuktitutiu6959 Inuktitutiu696 Inuktitutiu6960 Inuktitutiu6961 Inuktitutiu6962 Inuktitutiu6963 Inuktitutiu6964 Inuktitutiu6965 Inuktitutiu6966 Inuktitutiu6967 Inuktitutiu6968 Inuktitutiu6969 Inuktitutiu697 Inuktitutiu6970 Inuktitutiu6971 Inuktitutiu6972 Inuktitutiu6973 Inuktitutiu6974 Inuktitutiu6975 Inuktitutiu6976 Inuktitutiu6977 Inuktitutiu6978 Inuktitutiu6979 Inuktitutiu698 Inuktitutiu6980 Inuktitutiu6981 Inuktitutiu6982 Inuktitutiu6983 Inuktitutiu6984 Inuktitutiu6985 Inuktitutiu6986 Inuktitutiu6987 Inuktitutiu6988 Inuktitutiu6989 Inuktitutiu699 Inuktitutiu6990 Inuktitutiu6991 Inuktitutiu6992 Inuktitutiu6993 Inuktitutiu6994 Inuktitutiu6995 Inuktitutiu6996 Inuktitutiu6997 Inuktitutiu6998 Inuktitutiu6999 Inuktitutiu7 Inuktitutiu70 Inuktitutiu700 Inuktitutiu7000 Inuktitutiu7001 Inuktitutiu7002 Inuktitutiu7003 Inuktitutiu7004 Inuktitutiu7005 Inuktitutiu7006 Inuktitutiu7007 Inuktitutiu7008 Inuktitutiu7009 Inuktitutiu701 Inuktitutiu7010 Inuktitutiu7011 Inuktitutiu7012 Inuktitutiu7013 Inuktitutiu7014 Inuktitutiu7015 Inuktitutiu7016 Inuktitutiu7017 Inuktitutiu7018 Inuktitutiu7019 Inuktitutiu702 Inuktitutiu7020 Inuktitutiu7021 Inuktitutiu7022 Inuktitutiu7023 Inuktitutiu7024 Inuktitutiu7025 Inuktitutiu7026 Inuktitutiu7027 Inuktitutiu7028 Inuktitutiu7029 Inuktitutiu703 Inuktitutiu7030 Inuktitutiu7031 Inuktitutiu7032 Inuktitutiu7033 Inuktitutiu7034 Inuktitutiu7035 Inuktitutiu7036 Inuktitutiu7037 Inuktitutiu7038 Inuktitutiu7039 Inuktitutiu704 Inuktitutiu7040 Inuktitutiu7041 Inuktitutiu7042 Inuktitutiu7043 Inuktitutiu7044 Inuktitutiu7045 Inuktitutiu7046 Inuktitutiu7047 Inuktitutiu7048 Inuktitutiu7049 Inuktitutiu705 Inuktitutiu7050 Inuktitutiu7051 Inuktitutiu7052 Inuktitutiu7053 Inuktitutiu7054 Inuktitutiu7055 Inuktitutiu7056 Inuktitutiu7057 Inuktitutiu7058 Inuktitutiu7059 Inuktitutiu706 Inuktitutiu7060 Inuktitutiu7061 Inuktitutiu7062 Inuktitutiu7063 Inuktitutiu7064 Inuktitutiu7065 Inuktitutiu7066 Inuktitutiu7067 Inuktitutiu7068 Inuktitutiu7069 Inuktitutiu707 Inuktitutiu7070 Inuktitutiu7071 Inuktitutiu7072 Inuktitutiu7073 Inuktitutiu7074 Inuktitutiu7075 Inuktitutiu7076 Inuktitutiu7077 Inuktitutiu7078 Inuktitutiu7079 Inuktitutiu708 Inuktitutiu7080 Inuktitutiu7081 Inuktitutiu7082 Inuktitutiu7083 Inuktitutiu7084 Inuktitutiu7085 Inuktitutiu7086 Inuktitutiu7087 Inuktitutiu7088 Inuktitutiu7089 Inuktitutiu709 Inuktitutiu7090 Inuktitutiu7091 Inuktitutiu7092 Inuktitutiu7093 Inuktitutiu7094 Inuktitutiu7095 Inuktitutiu7096 Inuktitutiu7097 Inuktitutiu7098 Inuktitutiu7099 Inuktitutiu71 Inuktitutiu710 Inuktitutiu7100 Inuktitutiu7101 Inuktitutiu7102 Inuktitutiu7103 Inuktitutiu7104 Inuktitutiu7105 Inuktitutiu7106 Inuktitutiu7107 Inuktitutiu7108 Inuktitutiu7109 Inuktitutiu711 Inuktitutiu7110 Inuktitutiu7111 Inuktitutiu7112 Inuktitutiu7113 Inuktitutiu7114 Inuktitutiu7115 Inuktitutiu7116 Inuktitutiu7117 Inuktitutiu7118 Inuktitutiu7119 Inuktitutiu712 Inuktitutiu7120 Inuktitutiu7121 Inuktitutiu7122 Inuktitutiu7123 Inuktitutiu7124 Inuktitutiu7125 Inuktitutiu7126 Inuktitutiu7127 Inuktitutiu7128 Inuktitutiu7129 Inuktitutiu713 Inuktitutiu7130 Inuktitutiu7131 Inuktitutiu7132 Inuktitutiu7133 Inuktitutiu7134 Inuktitutiu7135 Inuktitutiu7136 Inuktitutiu7137 Inuktitutiu7138 Inuktitutiu7139 Inuktitutiu714 Inuktitutiu7140 Inuktitutiu7141 Inuktitutiu7142 Inuktitutiu7143 Inuktitutiu7144 Inuktitutiu7145 Inuktitutiu7146 Inuktitutiu7147 Inuktitutiu7148 Inuktitutiu7149 Inuktitutiu715 Inuktitutiu7150 Inuktitutiu7151 Inuktitutiu7152 Inuktitutiu7153 Inuktitutiu7154 Inuktitutiu7155 Inuktitutiu7156 Inuktitutiu7157 Inuktitutiu7158 Inuktitutiu7159 Inuktitutiu716 Inuktitutiu7160 Inuktitutiu7161 Inuktitutiu7162 Inuktitutiu7163 Inuktitutiu7164 Inuktitutiu7165 Inuktitutiu7166 Inuktitutiu7167 Inuktitutiu7168 Inuktitutiu7169 Inuktitutiu717 Inuktitutiu7170 Inuktitutiu7171 Inuktitutiu7172 Inuktitutiu7173 Inuktitutiu7174 Inuktitutiu7175 Inuktitutiu7176 Inuktitutiu7177 Inuktitutiu7178 Inuktitutiu7179 Inuktitutiu718 Inuktitutiu7180 Inuktitutiu7181 Inuktitutiu7182 Inuktitutiu7183 Inuktitutiu7184 Inuktitutiu7185 Inuktitutiu7186 Inuktitutiu7187 Inuktitutiu7188 Inuktitutiu7189 Inuktitutiu719 Inuktitutiu7190 Inuktitutiu7191 Inuktitutiu7192 Inuktitutiu7193 Inuktitutiu7194 Inuktitutiu7195 Inuktitutiu7196 Inuktitutiu7197 Inuktitutiu7198 Inuktitutiu7199 Inuktitutiu72 Inuktitutiu720 Inuktitutiu7200 Inuktitutiu7201 Inuktitutiu7202 Inuktitutiu7203 Inuktitutiu7204 Inuktitutiu7205 Inuktitutiu7206 Inuktitutiu7207 Inuktitutiu7208 Inuktitutiu7209 Inuktitutiu721 Inuktitutiu7210 Inuktitutiu7211 Inuktitutiu7212 Inuktitutiu7213 Inuktitutiu7214 Inuktitutiu7215 Inuktitutiu7216 Inuktitutiu7217 Inuktitutiu7218 Inuktitutiu7219 Inuktitutiu722 Inuktitutiu7220 Inuktitutiu7221 Inuktitutiu7222 Inuktitutiu7223 Inuktitutiu7224 Inuktitutiu7225 Inuktitutiu7226 Inuktitutiu7227 Inuktitutiu7228 Inuktitutiu7229 Inuktitutiu723 Inuktitutiu7230 Inuktitutiu7231 Inuktitutiu7232 Inuktitutiu7233 Inuktitutiu7234 Inuktitutiu7235 Inuktitutiu7236 Inuktitutiu7237 Inuktitutiu7238 Inuktitutiu7239 Inuktitutiu724 Inuktitutiu7240 Inuktitutiu7241 Inuktitutiu7242 Inuktitutiu7243 Inuktitutiu7244 Inuktitutiu7245 Inuktitutiu7246 Inuktitutiu7247 Inuktitutiu7248 Inuktitutiu7249 Inuktitutiu725 Inuktitutiu7250 Inuktitutiu7251 Inuktitutiu7252 Inuktitutiu7253 Inuktitutiu7254 Inuktitutiu7255 Inuktitutiu7256 Inuktitutiu7257 Inuktitutiu7258 Inuktitutiu7259 Inuktitutiu726 Inuktitutiu7260 Inuktitutiu7261 Inuktitutiu7262 Inuktitutiu7263 Inuktitutiu7264 Inuktitutiu7265 Inuktitutiu7266 Inuktitutiu7267 Inuktitutiu7268 Inuktitutiu7269 Inuktitutiu727 Inuktitutiu7270 Inuktitutiu7271 Inuktitutiu7272 Inuktitutiu7273 Inuktitutiu7274 Inuktitutiu7275 Inuktitutiu7276 Inuktitutiu7277 Inuktitutiu7278 Inuktitutiu7279 Inuktitutiu728 Inuktitutiu7280 Inuktitutiu7281 Inuktitutiu7282 Inuktitutiu7283 Inuktitutiu7284 Inuktitutiu7285 Inuktitutiu7286 Inuktitutiu7287 Inuktitutiu7288 Inuktitutiu7289 Inuktitutiu729 Inuktitutiu7290 Inuktitutiu7291 Inuktitutiu7292 Inuktitutiu7293 Inuktitutiu7294 Inuktitutiu7295 Inuktitutiu7296 Inuktitutiu7297 Inuktitutiu7298 Inuktitutiu7299 Inuktitutiu73 Inuktitutiu730 Inuktitutiu7300 Inuktitutiu7301 Inuktitutiu7302 Inuktitutiu7303 Inuktitutiu7304 Inuktitutiu7305 Inuktitutiu7306 Inuktitutiu7307 Inuktitutiu7308 Inuktitutiu7309 Inuktitutiu731 Inuktitutiu7310 Inuktitutiu7311 Inuktitutiu7312 Inuktitutiu7313 Inuktitutiu7314 Inuktitutiu7315 Inuktitutiu7316 Inuktitutiu7317 Inuktitutiu7318 Inuktitutiu7319 Inuktitutiu732 Inuktitutiu7320 Inuktitutiu7321 Inuktitutiu7322 Inuktitutiu7323 Inuktitutiu7324 Inuktitutiu7325 Inuktitutiu7326 Inuktitutiu7327 Inuktitutiu7328 Inuktitutiu7329 Inuktitutiu733 Inuktitutiu7330 Inuktitutiu7331 Inuktitutiu7332 Inuktitutiu7333 Inuktitutiu7334 Inuktitutiu7335 Inuktitutiu7336 Inuktitutiu7337 Inuktitutiu7338 Inuktitutiu7339 Inuktitutiu734 Inuktitutiu7340 Inuktitutiu7341 Inuktitutiu7342 Inuktitutiu7343 Inuktitutiu7344 Inuktitutiu7345 Inuktitutiu7346 Inuktitutiu7347 Inuktitutiu7348 Inuktitutiu7349 Inuktitutiu735 Inuktitutiu7350 Inuktitutiu7351 Inuktitutiu7352 Inuktitutiu7353 Inuktitutiu7354 Inuktitutiu7355 Inuktitutiu7356 Inuktitutiu7357 Inuktitutiu7358 Inuktitutiu7359 Inuktitutiu736 Inuktitutiu7360 Inuktitutiu7361 Inuktitutiu7362 Inuktitutiu7363 Inuktitutiu7364 Inuktitutiu7365 Inuktitutiu7366 Inuktitutiu7367 Inuktitutiu7368 Inuktitutiu7369 Inuktitutiu737 Inuktitutiu7370 Inuktitutiu7371 Inuktitutiu7372 Inuktitutiu7373 Inuktitutiu7374 Inuktitutiu7375 Inuktitutiu7376 Inuktitutiu7377 Inuktitutiu7378 Inuktitutiu7379 Inuktitutiu738 Inuktitutiu7380 Inuktitutiu7381 Inuktitutiu7382 Inuktitutiu7383 Inuktitutiu7384 Inuktitutiu7385 Inuktitutiu7386 Inuktitutiu7387 Inuktitutiu7388 Inuktitutiu7389 Inuktitutiu739 Inuktitutiu7390 Inuktitutiu7391 Inuktitutiu7392 Inuktitutiu7393 Inuktitutiu7394 Inuktitutiu7395 Inuktitutiu7396 Inuktitutiu7397 Inuktitutiu7398 Inuktitutiu7399 Inuktitutiu74 Inuktitutiu740 Inuktitutiu7400 Inuktitutiu7401 Inuktitutiu7402 Inuktitutiu7403 Inuktitutiu7404 Inuktitutiu7405 Inuktitutiu7406 Inuktitutiu7407 Inuktitutiu7408 Inuktitutiu7409 Inuktitutiu741 Inuktitutiu7410 Inuktitutiu7411 Inuktitutiu7412 Inuktitutiu7413 Inuktitutiu7414 Inuktitutiu7415 Inuktitutiu7416 Inuktitutiu7417 Inuktitutiu7418 Inuktitutiu7419 Inuktitutiu742 Inuktitutiu7420 Inuktitutiu7421 Inuktitutiu7422 Inuktitutiu7423 Inuktitutiu7424 Inuktitutiu7425 Inuktitutiu7426 Inuktitutiu7427 Inuktitutiu7428 Inuktitutiu7429 Inuktitutiu743 Inuktitutiu7430 Inuktitutiu7431 Inuktitutiu7432 Inuktitutiu7433 Inuktitutiu7434 Inuktitutiu7435 Inuktitutiu7436 Inuktitutiu7437 Inuktitutiu7438 Inuktitutiu7439 Inuktitutiu744 Inuktitutiu7440 Inuktitutiu7441 Inuktitutiu7442 Inuktitutiu7443 Inuktitutiu7444 Inuktitutiu7445 Inuktitutiu7446 Inuktitutiu7447 Inuktitutiu7448 Inuktitutiu7449 Inuktitutiu745 Inuktitutiu7450 Inuktitutiu7451 Inuktitutiu7452 Inuktitutiu7453 Inuktitutiu7454 Inuktitutiu7455 Inuktitutiu7456 Inuktitutiu7457 Inuktitutiu7458 Inuktitutiu7459 Inuktitutiu746 Inuktitutiu7460 Inuktitutiu7461 Inuktitutiu7462 Inuktitutiu7463 Inuktitutiu7464 Inuktitutiu7465 Inuktitutiu7466 Inuktitutiu7467 Inuktitutiu7468 Inuktitutiu7469 Inuktitutiu747 Inuktitutiu7470 Inuktitutiu7471 Inuktitutiu7472 Inuktitutiu7473 Inuktitutiu7474 Inuktitutiu7475 Inuktitutiu7476 Inuktitutiu7477 Inuktitutiu7478 Inuktitutiu7479 Inuktitutiu748 Inuktitutiu7480 Inuktitutiu7481 Inuktitutiu7482 Inuktitutiu7483 Inuktitutiu7484 Inuktitutiu7485 Inuktitutiu7486 Inuktitutiu7487 Inuktitutiu7488 Inuktitutiu7489 Inuktitutiu749 Inuktitutiu7490 Inuktitutiu7491 Inuktitutiu7492 Inuktitutiu7493 Inuktitutiu7494 Inuktitutiu7495 Inuktitutiu7496 Inuktitutiu7497 Inuktitutiu7498 Inuktitutiu7499 Inuktitutiu75 Inuktitutiu750 Inuktitutiu7500 Inuktitutiu7501 Inuktitutiu7502 Inuktitutiu7503 Inuktitutiu7504 Inuktitutiu7505 Inuktitutiu7506 Inuktitutiu7507 Inuktitutiu7508 Inuktitutiu7509 Inuktitutiu751 Inuktitutiu7510 Inuktitutiu7511 Inuktitutiu7512 Inuktitutiu7513 Inuktitutiu7514 Inuktitutiu7515 Inuktitutiu7516 Inuktitutiu7517 Inuktitutiu7518 Inuktitutiu7519 Inuktitutiu752 Inuktitutiu7520 Inuktitutiu7521 Inuktitutiu7522 Inuktitutiu7523 Inuktitutiu7524 Inuktitutiu7525 Inuktitutiu7526 Inuktitutiu7527 Inuktitutiu7528 Inuktitutiu7529 Inuktitutiu753 Inuktitutiu7530 Inuktitutiu7531 Inuktitutiu7532 Inuktitutiu7533 Inuktitutiu7534 Inuktitutiu7535 Inuktitutiu7536 Inuktitutiu7537 Inuktitutiu7538 Inuktitutiu7539 Inuktitutiu754 Inuktitutiu7540 Inuktitutiu7541 Inuktitutiu7542 Inuktitutiu7543 Inuktitutiu7544 Inuktitutiu7545 Inuktitutiu7546 Inuktitutiu7547 Inuktitutiu7548 Inuktitutiu7549 Inuktitutiu755 Inuktitutiu7550 Inuktitutiu7551 Inuktitutiu7552 Inuktitutiu7553 Inuktitutiu7554 Inuktitutiu7555 Inuktitutiu7556 Inuktitutiu7557 Inuktitutiu7558 Inuktitutiu7559 Inuktitutiu756 Inuktitutiu7560 Inuktitutiu7561 Inuktitutiu7562 Inuktitutiu7563 Inuktitutiu7564 Inuktitutiu7565 Inuktitutiu7566 Inuktitutiu7567 Inuktitutiu7568 Inuktitutiu7569 Inuktitutiu757 Inuktitutiu7570 Inuktitutiu7571 Inuktitutiu7572 Inuktitutiu7573 Inuktitutiu7574 Inuktitutiu7575 Inuktitutiu7576 Inuktitutiu7577 Inuktitutiu7578 Inuktitutiu7579 Inuktitutiu758 Inuktitutiu7580 Inuktitutiu7581 Inuktitutiu7582 Inuktitutiu7583 Inuktitutiu7584 Inuktitutiu7585 Inuktitutiu7586 Inuktitutiu7587 Inuktitutiu7588 Inuktitutiu7589 Inuktitutiu759 Inuktitutiu7590 Inuktitutiu7591 Inuktitutiu7592 Inuktitutiu7593 Inuktitutiu7594 Inuktitutiu7595 Inuktitutiu7596 Inuktitutiu7597 Inuktitutiu7598 Inuktitutiu7599 Inuktitutiu76 Inuktitutiu760 Inuktitutiu7600 Inuktitutiu7601 Inuktitutiu7602 Inuktitutiu7603 Inuktitutiu7604 Inuktitutiu7605 Inuktitutiu7606 Inuktitutiu7607 Inuktitutiu7608 Inuktitutiu7609 Inuktitutiu761 Inuktitutiu7610 Inuktitutiu7611 Inuktitutiu7612 Inuktitutiu7613 Inuktitutiu7614 Inuktitutiu7615 Inuktitutiu7616 Inuktitutiu7617 Inuktitutiu7618 Inuktitutiu7619 Inuktitutiu762 Inuktitutiu7620 Inuktitutiu7621 Inuktitutiu7622 Inuktitutiu7623 Inuktitutiu7624 Inuktitutiu7625 Inuktitutiu7626 Inuktitutiu7627 Inuktitutiu7628 Inuktitutiu7629 Inuktitutiu763 Inuktitutiu7630 Inuktitutiu7631 Inuktitutiu7632 Inuktitutiu7633 Inuktitutiu7634 Inuktitutiu7635 Inuktitutiu7636 Inuktitutiu7637 Inuktitutiu7638 Inuktitutiu7639 Inuktitutiu764 Inuktitutiu7640 Inuktitutiu7641 Inuktitutiu7642 Inuktitutiu7643 Inuktitutiu7644 Inuktitutiu7645 Inuktitutiu7646 Inuktitutiu7647 Inuktitutiu7648 Inuktitutiu7649 Inuktitutiu765 Inuktitutiu7650 Inuktitutiu7651 Inuktitutiu7652 Inuktitutiu7653 Inuktitutiu7654 Inuktitutiu7655 Inuktitutiu7656 Inuktitutiu7657 Inuktitutiu7658 Inuktitutiu7659 Inuktitutiu766 Inuktitutiu7660 Inuktitutiu7661 Inuktitutiu7662 Inuktitutiu7663 Inuktitutiu7664 Inuktitutiu7665 Inuktitutiu7666 Inuktitutiu7667 Inuktitutiu7668 Inuktitutiu7669 Inuktitutiu767 Inuktitutiu7670 Inuktitutiu7671 Inuktitutiu7672 Inuktitutiu7673 Inuktitutiu7674 Inuktitutiu7675 Inuktitutiu7676 Inuktitutiu7677 Inuktitutiu7678 Inuktitutiu7679 Inuktitutiu768 Inuktitutiu7680 Inuktitutiu7681 Inuktitutiu7682 Inuktitutiu7683 Inuktitutiu7684 Inuktitutiu7685 Inuktitutiu7686 Inuktitutiu7687 Inuktitutiu7688 Inuktitutiu7689 Inuktitutiu769 Inuktitutiu7690 Inuktitutiu7691 Inuktitutiu7692 Inuktitutiu7693 Inuktitutiu7694 Inuktitutiu7695 Inuktitutiu7696 Inuktitutiu7697 Inuktitutiu7698 Inuktitutiu7699 Inuktitutiu77 Inuktitutiu770 Inuktitutiu7700 Inuktitutiu7701 Inuktitutiu7702 Inuktitutiu7703 Inuktitutiu7704 Inuktitutiu7705 Inuktitutiu7706 Inuktitutiu7707 Inuktitutiu7708 Inuktitutiu7709 Inuktitutiu771 Inuktitutiu7710 Inuktitutiu7711 Inuktitutiu7712 Inuktitutiu7713 Inuktitutiu7714 Inuktitutiu7715 Inuktitutiu7716 Inuktitutiu7717 Inuktitutiu7718 Inuktitutiu7719 Inuktitutiu772 Inuktitutiu7720 Inuktitutiu7721 Inuktitutiu7722 Inuktitutiu7723 Inuktitutiu7724 Inuktitutiu7725 Inuktitutiu7726 Inuktitutiu7727 Inuktitutiu7728 Inuktitutiu7729 Inuktitutiu773 Inuktitutiu7730 Inuktitutiu7731 Inuktitutiu7732 Inuktitutiu7733 Inuktitutiu7734 Inuktitutiu7735 Inuktitutiu7736 Inuktitutiu7737 Inuktitutiu7738 Inuktitutiu7739 Inuktitutiu774 Inuktitutiu7740 Inuktitutiu7741 Inuktitutiu7742 Inuktitutiu7743 Inuktitutiu7744 Inuktitutiu7745 Inuktitutiu7746 Inuktitutiu7747 Inuktitutiu7748 Inuktitutiu7749 Inuktitutiu775 Inuktitutiu7750 Inuktitutiu7751 Inuktitutiu7752 Inuktitutiu7753 Inuktitutiu7754 Inuktitutiu7755 Inuktitutiu7756 Inuktitutiu7757 Inuktitutiu7758 Inuktitutiu7759 Inuktitutiu776 Inuktitutiu7760 Inuktitutiu7761 Inuktitutiu7762 Inuktitutiu7763 Inuktitutiu7764 Inuktitutiu7765 Inuktitutiu7766 Inuktitutiu7767 Inuktitutiu7768 Inuktitutiu7769 Inuktitutiu777 Inuktitutiu7770 Inuktitutiu7771 Inuktitutiu7772 Inuktitutiu7773 Inuktitutiu7774 Inuktitutiu7775 Inuktitutiu7776 Inuktitutiu7777 Inuktitutiu7778 Inuktitutiu7779 Inuktitutiu778 Inuktitutiu7780 Inuktitutiu7781 Inuktitutiu7782 Inuktitutiu7783 Inuktitutiu7784 Inuktitutiu7785 Inuktitutiu7786 Inuktitutiu7787 Inuktitutiu7788 Inuktitutiu7789 Inuktitutiu779 Inuktitutiu7790 Inuktitutiu7791 Inuktitutiu7792 Inuktitutiu7793 Inuktitutiu7794 Inuktitutiu7795 Inuktitutiu7796 Inuktitutiu7797 Inuktitutiu7798 Inuktitutiu7799 Inuktitutiu78 Inuktitutiu780 Inuktitutiu7800 Inuktitutiu7801 Inuktitutiu7802 Inuktitutiu7803 Inuktitutiu7804 Inuktitutiu7805 Inuktitutiu7806 Inuktitutiu7807 Inuktitutiu7808 Inuktitutiu7809 Inuktitutiu781 Inuktitutiu7810 Inuktitutiu7811 Inuktitutiu7812 Inuktitutiu7813 Inuktitutiu7814 Inuktitutiu7815 Inuktitutiu7816 Inuktitutiu7817 Inuktitutiu7818 Inuktitutiu7819 Inuktitutiu782 Inuktitutiu7820 Inuktitutiu7821 Inuktitutiu7822 Inuktitutiu7823 Inuktitutiu7824 Inuktitutiu7825 Inuktitutiu7826 Inuktitutiu7827 Inuktitutiu7828 Inuktitutiu7829 Inuktitutiu783 Inuktitutiu7830 Inuktitutiu7831 Inuktitutiu7832 Inuktitutiu7833 Inuktitutiu7834 Inuktitutiu7835 Inuktitutiu7836 Inuktitutiu7837 Inuktitutiu7838 Inuktitutiu7839 Inuktitutiu784 Inuktitutiu7840 Inuktitutiu7841 Inuktitutiu7842 Inuktitutiu7843 Inuktitutiu7844 Inuktitutiu7845 Inuktitutiu7846 Inuktitutiu7847 Inuktitutiu7848 Inuktitutiu7849 Inuktitutiu785 Inuktitutiu7850 Inuktitutiu7851 Inuktitutiu7852 Inuktitutiu7853 Inuktitutiu7854 Inuktitutiu7855 Inuktitutiu7856 Inuktitutiu7857 Inuktitutiu7858 Inuktitutiu7859 Inuktitutiu786 Inuktitutiu7860 Inuktitutiu7861 Inuktitutiu7862 Inuktitutiu7863 Inuktitutiu7864 Inuktitutiu7865 Inuktitutiu7866 Inuktitutiu7867 Inuktitutiu7868 Inuktitutiu7869 Inuktitutiu787 Inuktitutiu7870 Inuktitutiu7871 Inuktitutiu7872 Inuktitutiu7873 Inuktitutiu7874 Inuktitutiu7875 Inuktitutiu7876 Inuktitutiu7877 Inuktitutiu7878 Inuktitutiu7879 Inuktitutiu788 Inuktitutiu7880 Inuktitutiu7881 Inuktitutiu7882 Inuktitutiu7883 Inuktitutiu7884 Inuktitutiu7885 Inuktitutiu7886 Inuktitutiu7887 Inuktitutiu7888 Inuktitutiu7889 Inuktitutiu789 Inuktitutiu7890 Inuktitutiu7891 Inuktitutiu7892 Inuktitutiu7893 Inuktitutiu7894 Inuktitutiu7895 Inuktitutiu7896 Inuktitutiu7897 Inuktitutiu7898 Inuktitutiu7899 Inuktitutiu79 Inuktitutiu790 Inuktitutiu7900 Inuktitutiu7901 Inuktitutiu7902 Inuktitutiu7903 Inuktitutiu7904 Inuktitutiu7905 Inuktitutiu7906 Inuktitutiu7907 Inuktitutiu7908 Inuktitutiu7909 Inuktitutiu791 Inuktitutiu7910 Inuktitutiu7911 Inuktitutiu7912 Inuktitutiu7913 Inuktitutiu7914 Inuktitutiu7915 Inuktitutiu7916 Inuktitutiu7917 Inuktitutiu7918 Inuktitutiu7919 Inuktitutiu792 Inuktitutiu7920 Inuktitutiu7921 Inuktitutiu7922 Inuktitutiu7923 Inuktitutiu7924 Inuktitutiu7925 Inuktitutiu7926 Inuktitutiu7927 Inuktitutiu7928 Inuktitutiu7929 Inuktitutiu793 Inuktitutiu7930 Inuktitutiu7931 Inuktitutiu7932 Inuktitutiu7933 Inuktitutiu7934 Inuktitutiu7935 Inuktitutiu7936 Inuktitutiu7937 Inuktitutiu7938 Inuktitutiu7939 Inuktitutiu794 Inuktitutiu7940 Inuktitutiu7941 Inuktitutiu7942 Inuktitutiu7943 Inuktitutiu7944 Inuktitutiu7945 Inuktitutiu7946 Inuktitutiu7947 Inuktitutiu7948 Inuktitutiu7949 Inuktitutiu795 Inuktitutiu7950 Inuktitutiu7951 Inuktitutiu7952 Inuktitutiu7953 Inuktitutiu7954 Inuktitutiu7955 Inuktitutiu7956 Inuktitutiu7957 Inuktitutiu7958 Inuktitutiu7959 Inuktitutiu796 Inuktitutiu7960 Inuktitutiu7961 Inuktitutiu7962 Inuktitutiu7963 Inuktitutiu7964 Inuktitutiu7965 Inuktitutiu7966 Inuktitutiu7967 Inuktitutiu7968 Inuktitutiu7969 Inuktitutiu797 Inuktitutiu7970 Inuktitutiu7971 Inuktitutiu7972 Inuktitutiu7973 Inuktitutiu7974 Inuktitutiu7975 Inuktitutiu7976 Inuktitutiu7977 Inuktitutiu7978 Inuktitutiu7979 Inuktitutiu798 Inuktitutiu7980 Inuktitutiu7981 Inuktitutiu7982 Inuktitutiu7983 Inuktitutiu7984 Inuktitutiu7985 Inuktitutiu7986 Inuktitutiu7987 Inuktitutiu7988 Inuktitutiu7989 Inuktitutiu799 Inuktitutiu7990 Inuktitutiu7991 Inuktitutiu7992 Inuktitutiu7993 Inuktitutiu7994 Inuktitutiu7995 Inuktitutiu7996 Inuktitutiu7997 Inuktitutiu7998 Inuktitutiu7999 Inuktitutiu8 Inuktitutiu80 Inuktitutiu800 Inuktitutiu8000 Inuktitutiu8001 Inuktitutiu8002 Inuktitutiu8003 Inuktitutiu8004 Inuktitutiu8005 Inuktitutiu8006 Inuktitutiu8007 Inuktitutiu8008 Inuktitutiu8009 Inuktitutiu801 Inuktitutiu8010 Inuktitutiu8011 Inuktitutiu8012 Inuktitutiu8013 Inuktitutiu8014 Inuktitutiu8015 Inuktitutiu8016 Inuktitutiu8017 Inuktitutiu8018 Inuktitutiu8019 Inuktitutiu802 Inuktitutiu8020 Inuktitutiu8021 Inuktitutiu8022 Inuktitutiu8023 Inuktitutiu8024 Inuktitutiu8025 Inuktitutiu8026 Inuktitutiu8027 Inuktitutiu8028 Inuktitutiu8029 Inuktitutiu803 Inuktitutiu8030 Inuktitutiu8031 Inuktitutiu8032 Inuktitutiu8033 Inuktitutiu8034 Inuktitutiu8035 Inuktitutiu8036 Inuktitutiu8037 Inuktitutiu8038 Inuktitutiu8039 Inuktitutiu804 Inuktitutiu8040 Inuktitutiu8041 Inuktitutiu8042 Inuktitutiu8043 Inuktitutiu8044 Inuktitutiu8045 Inuktitutiu8046 Inuktitutiu8047 Inuktitutiu8048 Inuktitutiu8049 Inuktitutiu805 Inuktitutiu8050 Inuktitutiu8051 Inuktitutiu8052 Inuktitutiu8053 Inuktitutiu8054 Inuktitutiu8055 Inuktitutiu8056 Inuktitutiu8057 Inuktitutiu8058 Inuktitutiu8059 Inuktitutiu806 Inuktitutiu8060 Inuktitutiu8061 Inuktitutiu8062 Inuktitutiu8063 Inuktitutiu8064 Inuktitutiu8065 Inuktitutiu8066 Inuktitutiu8067 Inuktitutiu8068 Inuktitutiu8069 Inuktitutiu807 Inuktitutiu8070 Inuktitutiu8071 Inuktitutiu8072 Inuktitutiu8073 Inuktitutiu8074 Inuktitutiu8075 Inuktitutiu8076 Inuktitutiu8077 Inuktitutiu8078 Inuktitutiu8079 Inuktitutiu808 Inuktitutiu8080 Inuktitutiu8081 Inuktitutiu8082 Inuktitutiu8083 Inuktitutiu8084 Inuktitutiu8085 Inuktitutiu8086 Inuktitutiu8087 Inuktitutiu8088 Inuktitutiu8089 Inuktitutiu809 Inuktitutiu8090 Inuktitutiu8091 Inuktitutiu8092 Inuktitutiu8093 Inuktitutiu8094 Inuktitutiu8095 Inuktitutiu8096 Inuktitutiu8097 Inuktitutiu8098 Inuktitutiu8099 Inuktitutiu81 Inuktitutiu810 Inuktitutiu8100 Inuktitutiu8101 Inuktitutiu8102 Inuktitutiu8103 Inuktitutiu8104 Inuktitutiu8105 Inuktitutiu8106 Inuktitutiu8107 Inuktitutiu8108 Inuktitutiu8109 Inuktitutiu811 Inuktitutiu8110 Inuktitutiu8111 Inuktitutiu8112 Inuktitutiu8113 Inuktitutiu8114 Inuktitutiu8115 Inuktitutiu8116 Inuktitutiu8117 Inuktitutiu8118 Inuktitutiu8119 Inuktitutiu812 Inuktitutiu8120 Inuktitutiu8121 Inuktitutiu8122 Inuktitutiu8123 Inuktitutiu8124 Inuktitutiu8125 Inuktitutiu8126 Inuktitutiu8127 Inuktitutiu8128 Inuktitutiu8129 Inuktitutiu813 Inuktitutiu8130 Inuktitutiu8131 Inuktitutiu8132 Inuktitutiu8133 Inuktitutiu8134 Inuktitutiu8135 Inuktitutiu8136 Inuktitutiu8137 Inuktitutiu8138 Inuktitutiu8139 Inuktitutiu814 Inuktitutiu8140 Inuktitutiu8141 Inuktitutiu8142 Inuktitutiu8143 Inuktitutiu8144 Inuktitutiu8145 Inuktitutiu8146 Inuktitutiu8147 Inuktitutiu8148 Inuktitutiu8149 Inuktitutiu815 Inuktitutiu8150 Inuktitutiu8151 Inuktitutiu8152 Inuktitutiu8153 Inuktitutiu8154 Inuktitutiu8155 Inuktitutiu8156 Inuktitutiu8157 Inuktitutiu8158 Inuktitutiu8159 Inuktitutiu816 Inuktitutiu8160 Inuktitutiu8161 Inuktitutiu8162 Inuktitutiu8163 Inuktitutiu8164 Inuktitutiu8165 Inuktitutiu8166 Inuktitutiu8167 Inuktitutiu8168 Inuktitutiu8169 Inuktitutiu817 Inuktitutiu8170 Inuktitutiu8171 Inuktitutiu8172 Inuktitutiu8173 Inuktitutiu8174 Inuktitutiu8175 Inuktitutiu8176 Inuktitutiu8177 Inuktitutiu8178 Inuktitutiu8179 Inuktitutiu818 Inuktitutiu8180 Inuktitutiu8181 Inuktitutiu8182 Inuktitutiu8183 Inuktitutiu8184 Inuktitutiu8185 Inuktitutiu8186 Inuktitutiu8187 Inuktitutiu8188 Inuktitutiu8189 Inuktitutiu819 Inuktitutiu8190 Inuktitutiu8191 Inuktitutiu82 Inuktitutiu820 Inuktitutiu821 Inuktitutiu822 Inuktitutiu823 Inuktitutiu824 Inuktitutiu825 Inuktitutiu826 Inuktitutiu827 Inuktitutiu828 Inuktitutiu829 Inuktitutiu83 Inuktitutiu830 Inuktitutiu831 Inuktitutiu832 Inuktitutiu833 Inuktitutiu834 Inuktitutiu835 Inuktitutiu836 Inuktitutiu837 Inuktitutiu838 Inuktitutiu839 Inuktitutiu84 Inuktitutiu840 Inuktitutiu841 Inuktitutiu842 Inuktitutiu843 Inuktitutiu844 Inuktitutiu845 Inuktitutiu846 Inuktitutiu847 Inuktitutiu848 Inuktitutiu849 Inuktitutiu85 Inuktitutiu850 Inuktitutiu851 Inuktitutiu852 Inuktitutiu853 Inuktitutiu854 Inuktitutiu855 Inuktitutiu856 Inuktitutiu857 Inuktitutiu858 Inuktitutiu859 Inuktitutiu86 Inuktitutiu860 Inuktitutiu861 Inuktitutiu862 Inuktitutiu863 Inuktitutiu864 Inuktitutiu865 Inuktitutiu866 Inuktitutiu867 Inuktitutiu868 Inuktitutiu869 Inuktitutiu87 Inuktitutiu870 Inuktitutiu871 Inuktitutiu872 Inuktitutiu873 Inuktitutiu874 Inuktitutiu875 Inuktitutiu876 Inuktitutiu877 Inuktitutiu878 Inuktitutiu879 Inuktitutiu88 Inuktitutiu880 Inuktitutiu881 Inuktitutiu882 Inuktitutiu883 Inuktitutiu884 Inuktitutiu885 Inuktitutiu886 Inuktitutiu887 Inuktitutiu888 Inuktitutiu889 Inuktitutiu89 Inuktitutiu890 Inuktitutiu891 Inuktitutiu892 Inuktitutiu893 Inuktitutiu894 Inuktitutiu895 Inuktitutiu896 Inuktitutiu897 Inuktitutiu898 Inuktitutiu899 Inuktitutiu9 Inuktitutiu90 Inuktitutiu900 Inuktitutiu901 Inuktitutiu902 Inuktitutiu903 Inuktitutiu904 Inuktitutiu905 Inuktitutiu906 Inuktitutiu907 Inuktitutiu908 Inuktitutiu909 Inuktitutiu91 Inuktitutiu910 Inuktitutiu911 Inuktitutiu912 Inuktitutiu913 Inuktitutiu914 Inuktitutiu915 Inuktitutiu916 Inuktitutiu917 Inuktitutiu918 Inuktitutiu919 Inuktitutiu92 Inuktitutiu920 Inuktitutiu921 Inuktitutiu922 Inuktitutiu923 Inuktitutiu924 Inuktitutiu925 Inuktitutiu926 Inuktitutiu927 Inuktitutiu928 Inuktitutiu929 Inuktitutiu93 Inuktitutiu930 Inuktitutiu931 Inuktitutiu932 Inuktitutiu933 Inuktitutiu934 Inuktitutiu935 Inuktitutiu936 Inuktitutiu937 Inuktitutiu938 Inuktitutiu939 Inuktitutiu94 Inuktitutiu940 Inuktitutiu941 Inuktitutiu942 Inuktitutiu943 Inuktitutiu944 Inuktitutiu945 Inuktitutiu946 Inuktitutiu947 Inuktitutiu948 Inuktitutiu949 Inuktitutiu95 Inuktitutiu950 Inuktitutiu951 Inuktitutiu952 Inuktitutiu953 Inuktitutiu954 Inuktitutiu955 Inuktitutiu956 Inuktitutiu957 Inuktitutiu958 Inuktitutiu959 Inuktitutiu96 Inuktitutiu960 Inuktitutiu961 Inuktitutiu962 Inuktitutiu963 Inuktitutiu964 Inuktitutiu965 Inuktitutiu966 Inuktitutiu967 Inuktitutiu968 Inuktitutiu969 Inuktitutiu97 Inuktitutiu970 Inuktitutiu971 Inuktitutiu972 Inuktitutiu973 Inuktitutiu974 Inuktitutiu975 Inuktitutiu976 Inuktitutiu977 Inuktitutiu978 Inuktitutiu979 Inuktitutiu98 Inuktitutiu980 Inuktitutiu981 Inuktitutiu982 Inuktitutiu983 Inuktitutiu984 Inuktitutiu985 Inuktitutiu986 Inuktitutiu987 Inuktitutiu988 Inuktitutiu989 Inuktitutiu99 Inuktitutiu990 Inuktitutiu991 Inuktitutiu992 Inuktitutiu993 Inuktitutiu994 Inuktitutiu995 Inuktitutiu996 Inuktitutiu997 Inuktitutiu998 Inuktitutiu999 Inuktitutja0Japaneseja1Japaneseja10Japaneseja100Japaneseja1000Japaneseja1001Japaneseja1002Japaneseja1003Japaneseja1004Japaneseja1005Japaneseja1006Japaneseja1007Japaneseja1008Japaneseja1009Japaneseja101Japaneseja1010Japaneseja1011Japaneseja1012Japaneseja1013Japaneseja1014Japaneseja1015Japaneseja1016Japaneseja1017Japaneseja1018Japaneseja1019Japaneseja102Japaneseja1020Japaneseja1021Japaneseja1022Japaneseja1023Japaneseja1024Japaneseja1025Japaneseja1026Japaneseja1027Japaneseja1028Japaneseja1029Japaneseja103Japaneseja1030Japaneseja1031Japaneseja1032Japaneseja1033Japaneseja1034Japaneseja1035Japaneseja1036Japaneseja1037Japaneseja1038Japaneseja1039Japaneseja104Japaneseja1040Japaneseja1041Japaneseja1042Japaneseja1043Japaneseja1044Japaneseja1045Japaneseja1046Japaneseja1047Japaneseja1048Japaneseja1049Japaneseja105Japaneseja1050Japaneseja1051Japaneseja1052Japaneseja1053Japaneseja1054Japaneseja1055Japaneseja1056Japaneseja1057Japaneseja1058Japaneseja1059Japaneseja106Japaneseja1060Japaneseja1061Japaneseja1062Japaneseja1063Japaneseja1064Japaneseja1065Japaneseja1066Japaneseja1067Japaneseja1068Japaneseja1069Japaneseja107Japaneseja1070Japaneseja1071Japaneseja1072Japaneseja1073Japaneseja1074Japaneseja1075Japaneseja1076Japaneseja1077Japaneseja1078Japaneseja1079Japaneseja108Japaneseja1080Japaneseja1081Japaneseja1082Japaneseja1083Japaneseja1084Japaneseja1085Japaneseja1086Japaneseja1087Japaneseja1088Japaneseja1089Japaneseja109Japaneseja1090Japaneseja1091Japaneseja1092Japaneseja1093Japaneseja1094Japaneseja1095Japaneseja1096Japaneseja1097Japaneseja1098Japaneseja1099Japaneseja11Japaneseja110Japaneseja1100Japaneseja1101Japaneseja1102Japaneseja1103Japaneseja1104Japaneseja1105Japaneseja1106Japaneseja1107Japaneseja1108Japaneseja1109Japaneseja111Japaneseja1110Japaneseja1111Japaneseja1112Japaneseja1113Japaneseja1114Japaneseja1115Japaneseja1116Japaneseja1117Japaneseja1118Japaneseja1119Japaneseja112Japaneseja1120Japaneseja1121Japaneseja1122Japaneseja1123Japaneseja1124Japaneseja1125Japaneseja1126Japaneseja1127Japaneseja1128Japaneseja1129Japaneseja113Japaneseja1130Japaneseja1131Japaneseja1132Japaneseja1133Japaneseja1134Japaneseja1135Japaneseja1136Japaneseja1137Japaneseja1138Japaneseja1139Japaneseja114Japaneseja1140Japaneseja1141Japaneseja1142Japaneseja1143Japaneseja1144Japaneseja1145Japaneseja1146Japaneseja1147Japaneseja1148Japaneseja1149Japaneseja115Japaneseja1150Japaneseja1151Japaneseja1152Japaneseja1153Japaneseja1154Japaneseja1155Japaneseja1156Japaneseja1157Japaneseja1158Japaneseja1159Japaneseja116Japaneseja1160Japaneseja1161Japaneseja1162Japaneseja1163Japaneseja1164Japaneseja1165Japaneseja1166Japaneseja1167Japaneseja1168Japaneseja1169Japaneseja117Japaneseja1170Japaneseja1171Japaneseja1172Japaneseja1173Japaneseja1174Japaneseja1175Japaneseja1176Japaneseja1177Japaneseja1178Japaneseja1179Japaneseja118Japaneseja1180Japaneseja1181Japaneseja1182Japaneseja1183Japaneseja1184Japaneseja1185Japaneseja1186Japaneseja1187Japaneseja1188Japaneseja1189Japaneseja119Japaneseja1190Japaneseja1191Japaneseja1192Japaneseja1193Japaneseja1194Japaneseja1195Japaneseja1196Japaneseja1197Japaneseja1198Japaneseja1199Japaneseja12Japaneseja120Japaneseja1200Japaneseja1201Japaneseja1202Japaneseja1203Japaneseja1204Japaneseja1205Japaneseja1206Japaneseja1207Japaneseja1208Japaneseja1209Japaneseja121Japaneseja1210Japaneseja1211Japaneseja1212Japaneseja1213Japaneseja1214Japaneseja1215Japaneseja1216Japaneseja1217Japaneseja1218Japaneseja1219Japaneseja122Japaneseja1220Japaneseja1221Japaneseja1222Japaneseja1223Japaneseja1224Japaneseja1225Japaneseja1226Japaneseja1227Japaneseja1228Japaneseja1229Japaneseja123Japaneseja1230Japaneseja1231Japaneseja1232Japaneseja1233Japaneseja1234Japaneseja1235Japaneseja1236Japaneseja1237Japaneseja1238Japaneseja1239Japaneseja124Japaneseja1240Japaneseja1241Japaneseja1242Japaneseja1243Japaneseja1244Japaneseja1245Japaneseja1246Japaneseja1247Japaneseja1248Japaneseja1249Japaneseja125Japaneseja1250Japaneseja1251Japaneseja1252Japaneseja1253Japaneseja1254Japaneseja1255Japaneseja1256Japaneseja1257Japaneseja1258Japaneseja1259Japaneseja126Japaneseja1260Japaneseja1261Japaneseja1262Japaneseja1263Japaneseja1264Japaneseja1265Japaneseja1266Japaneseja1267Japaneseja1268Japaneseja1269Japaneseja127Japaneseja1270Japaneseja1271Japaneseja1272Japaneseja1273Japaneseja1274Japaneseja1275Japaneseja1276Japaneseja1277Japaneseja1278Japaneseja1279Japaneseja128Japaneseja1280Japaneseja1281Japaneseja1282Japaneseja1283Japaneseja1284Japaneseja1285Japaneseja1286Japaneseja1287Japaneseja1288Japaneseja1289Japaneseja129Japaneseja1290Japaneseja1291Japaneseja1292Japaneseja1293Japaneseja1294Japaneseja1295Japaneseja1296Japaneseja1297Japaneseja1298Japaneseja1299Japaneseja13Japaneseja130Japaneseja1300Japaneseja1301Japaneseja1302Japaneseja1303Japaneseja1304Japaneseja1305Japaneseja1306Japaneseja1307Japaneseja1308Japaneseja1309Japaneseja131Japaneseja1310Japaneseja1311Japaneseja1312Japaneseja1313Japaneseja1314Japaneseja1315Japaneseja1316Japaneseja1317Japaneseja1318Japaneseja1319Japaneseja132Japaneseja1320Japaneseja1321Japaneseja1322Japaneseja1323Japaneseja1324Japaneseja1325Japaneseja1326Japaneseja1327Japaneseja1328Japaneseja1329Japaneseja133Japaneseja1330Japaneseja1331Japaneseja1332Japaneseja1333Japaneseja1334Japaneseja1335Japaneseja1336Japaneseja1337Japaneseja1338Japaneseja1339Japaneseja134Japaneseja1340Japaneseja1341Japaneseja1342Japaneseja1343Japaneseja1344Japaneseja1345Japaneseja1346Japaneseja1347Japaneseja1348Japaneseja1349Japaneseja135Japaneseja1350Japaneseja1351Japaneseja1352Japaneseja1353Japaneseja1354Japaneseja1355Japaneseja1356Japaneseja1357Japaneseja1358Japaneseja1359Japaneseja136Japaneseja1360Japaneseja1361Japaneseja1362Japaneseja1363Japaneseja1364Japaneseja1365Japaneseja1366Japaneseja1367Japaneseja1368Japaneseja1369Japaneseja137Japaneseja1370Japaneseja1371Japaneseja1372Japaneseja1373Japaneseja1374Japaneseja1375Japaneseja1376Japaneseja1377Japaneseja1378Japaneseja1379Japaneseja138Japaneseja1380Japaneseja1381Japaneseja1382Japaneseja1383Japaneseja1384Japaneseja1385Japaneseja1386Japaneseja1387Japaneseja1388Japaneseja1389Japaneseja139Japaneseja1390Japaneseja1391Japaneseja1392Japaneseja1393Japaneseja1394Japaneseja1395Japaneseja1396Japaneseja1397Japaneseja1398Japaneseja1399Japaneseja14Japaneseja140Japaneseja1400Japaneseja1401Japaneseja1402Japaneseja1403Japaneseja1404Japaneseja1405Japaneseja1406Japaneseja1407Japaneseja1408Japaneseja1409Japaneseja141Japaneseja1410Japaneseja1411Japaneseja1412Japaneseja1413Japaneseja1414Japaneseja1415Japaneseja1416Japaneseja1417Japaneseja1418Japaneseja1419Japaneseja142Japaneseja1420Japaneseja1421Japaneseja1422Japaneseja1423Japaneseja1424Japaneseja1425Japaneseja1426Japaneseja1427Japaneseja1428Japaneseja1429Japaneseja143Japaneseja1430Japaneseja1431Japaneseja1432Japaneseja1433Japaneseja1434Japaneseja1435Japaneseja1436Japaneseja1437Japaneseja1438Japaneseja1439Japaneseja144Japaneseja1440Japaneseja1441Japaneseja1442Japaneseja1443Japaneseja1444Japaneseja1445Japaneseja1446Japaneseja1447Japaneseja1448Japaneseja1449Japaneseja145Japaneseja1450Japaneseja1451Japaneseja1452Japaneseja1453Japaneseja1454Japaneseja1455Japaneseja1456Japaneseja1457Japaneseja1458Japaneseja1459Japaneseja146Japaneseja1460Japaneseja1461Japaneseja1462Japaneseja1463Japaneseja1464Japaneseja1465Japaneseja1466Japaneseja1467Japaneseja1468Japaneseja1469Japaneseja147Japaneseja1470Japaneseja1471Japaneseja1472Japaneseja1473Japaneseja1474Japaneseja1475Japaneseja1476Japaneseja1477Japaneseja1478Japaneseja1479Japaneseja148Japaneseja1480Japaneseja1481Japaneseja1482Japaneseja1483Japaneseja1484Japaneseja1485Japaneseja1486Japaneseja1487Japaneseja1488Japaneseja1489Japaneseja149Japaneseja1490Japaneseja1491Japaneseja1492Japaneseja1493Japaneseja1494Japaneseja1495Japaneseja1496Japaneseja1497Japaneseja1498Japaneseja1499Japaneseja15Japaneseja150Japaneseja1500Japaneseja1501Japaneseja1502Japaneseja1503Japaneseja1504Japaneseja1505Japaneseja1506Japaneseja1507Japaneseja1508Japaneseja1509Japaneseja151Japaneseja1510Japaneseja1511Japaneseja1512Japaneseja1513Japaneseja1514Japaneseja1515Japaneseja1516Japaneseja1517Japaneseja1518Japaneseja1519Japaneseja152Japaneseja1520Japaneseja1521Japaneseja1522Japaneseja1523Japaneseja1524Japaneseja1525Japaneseja1526Japaneseja1527Japaneseja1528Japaneseja1529Japaneseja153Japaneseja1530Japaneseja1531Japaneseja1532Japaneseja1533Japaneseja1534Japaneseja1535Japaneseja1536Japaneseja1537Japaneseja1538Japaneseja1539Japaneseja154Japaneseja1540Japaneseja1541Japaneseja1542Japaneseja1543Japaneseja1544Japaneseja1545Japaneseja1546Japaneseja1547Japaneseja1548Japaneseja1549Japaneseja155Japaneseja1550Japaneseja1551Japaneseja1552Japaneseja1553Japaneseja1554Japaneseja1555Japaneseja1556Japaneseja1557Japaneseja1558Japaneseja1559Japaneseja156Japaneseja1560Japaneseja1561Japaneseja1562Japaneseja1563Japaneseja1564Japaneseja1565Japaneseja1566Japaneseja1567Japaneseja1568Japaneseja1569Japaneseja157Japaneseja1570Japaneseja1571Japaneseja1572Japaneseja1573Japaneseja1574Japaneseja1575Japaneseja1576Japaneseja1577Japaneseja1578Japaneseja1579Japaneseja158Japaneseja1580Japaneseja1581Japaneseja1582Japaneseja1583Japaneseja1584Japaneseja1585Japaneseja1586Japaneseja1587Japaneseja1588Japaneseja1589Japaneseja159Japaneseja1590Japaneseja1591Japaneseja1592Japaneseja1593Japaneseja1594Japaneseja1595Japaneseja1596Japaneseja1597Japaneseja1598Japaneseja1599Japaneseja16Japaneseja160Japaneseja1600Japaneseja1601Japaneseja1602Japaneseja1603Japaneseja1604Japaneseja1605Japaneseja1606Japaneseja1607Japaneseja1608Japaneseja1609Japaneseja161Japaneseja1610Japaneseja1611Japaneseja1612Japaneseja1613Japaneseja1614Japaneseja1615Japaneseja1616Japaneseja1617Japaneseja1618Japaneseja1619Japaneseja162Japaneseja1620Japaneseja1621Japaneseja1622Japaneseja1623Japaneseja1624Japaneseja1625Japaneseja1626Japaneseja1627Japaneseja1628Japaneseja1629Japaneseja163Japaneseja1630Japaneseja1631Japaneseja1632Japaneseja1633Japaneseja1634Japaneseja1635Japaneseja1636Japaneseja1637Japaneseja1638Japaneseja1639Japaneseja164Japaneseja1640Japaneseja1641Japaneseja1642Japaneseja1643Japaneseja1644Japaneseja1645Japaneseja1646Japaneseja1647Japaneseja1648Japaneseja1649Japaneseja165Japaneseja1650Japaneseja1651Japaneseja1652Japaneseja1653Japaneseja1654Japaneseja1655Japaneseja1656Japaneseja1657Japaneseja1658Japaneseja1659Japaneseja166Japaneseja1660Japaneseja1661Japaneseja1662Japaneseja1663Japaneseja1664Japaneseja1665Japaneseja1666Japaneseja1667Japaneseja1668Japaneseja1669Japaneseja167Japaneseja1670Japaneseja1671Japaneseja1672Japaneseja1673Japaneseja1674Japaneseja1675Japaneseja1676Japaneseja1677Japaneseja1678Japaneseja1679Japaneseja168Japaneseja1680Japaneseja1681Japaneseja1682Japaneseja1683Japaneseja1684Japaneseja1685Japaneseja1686Japaneseja1687Japaneseja1688Japaneseja1689Japaneseja169Japaneseja1690Japaneseja1691Japaneseja1692Japaneseja1693Japaneseja1694Japaneseja1695Japaneseja1696Japaneseja1697Japaneseja1698Japaneseja1699Japaneseja17Japaneseja170Japaneseja1700Japaneseja1701Japaneseja1702Japaneseja1703Japaneseja1704Japaneseja1705Japaneseja1706Japaneseja1707Japaneseja1708Japaneseja1709Japaneseja171Japaneseja1710Japaneseja1711Japaneseja1712Japaneseja1713Japaneseja1714Japaneseja1715Japaneseja1716Japaneseja1717Japaneseja1718Japaneseja1719Japaneseja172Japaneseja1720Japaneseja1721Japaneseja1722Japaneseja1723Japaneseja1724Japaneseja1725Japaneseja1726Japaneseja1727Japaneseja1728Japaneseja1729Japaneseja173Japaneseja1730Japaneseja1731Japaneseja1732Japaneseja1733Japaneseja1734Japaneseja1735Japaneseja1736Japaneseja1737Japaneseja1738Japaneseja1739Japaneseja174Japaneseja1740Japaneseja1741Japaneseja1742Japaneseja1743Japaneseja1744Japaneseja1745Japaneseja1746Japaneseja1747Japaneseja1748Japaneseja1749Japaneseja175Japaneseja1750Japaneseja1751Japaneseja1752Japaneseja1753Japaneseja1754Japaneseja1755Japaneseja1756Japaneseja1757Japaneseja1758Japaneseja1759Japaneseja176Japaneseja1760Japaneseja1761Japaneseja1762Japaneseja1763Japaneseja1764Japaneseja1765Japaneseja1766Japaneseja1767Japaneseja1768Japaneseja1769Japaneseja177Japaneseja1770Japaneseja1771Japaneseja1772Japaneseja1773Japaneseja1774Japaneseja1775Japaneseja1776Japaneseja1777Japaneseja1778Japaneseja1779Japaneseja178Japaneseja1780Japaneseja1781Japaneseja1782Japaneseja1783Japaneseja1784Japaneseja1785Japaneseja1786Japaneseja1787Japaneseja1788Japaneseja1789Japaneseja179Japaneseja1790Japaneseja1791Japaneseja1792Japaneseja1793Japaneseja1794Japaneseja1795Japaneseja1796Japaneseja1797Japaneseja1798Japaneseja1799Japaneseja18Japaneseja180Japaneseja1800Japaneseja1801Japaneseja1802Japaneseja1803Japaneseja1804Japaneseja1805Japaneseja1806Japaneseja1807Japaneseja1808Japaneseja1809Japaneseja181Japaneseja1810Japaneseja1811Japaneseja1812Japaneseja1813Japaneseja1814Japaneseja1815Japaneseja1816Japaneseja1817Japaneseja1818Japaneseja1819Japaneseja182Japaneseja1820Japaneseja1821Japaneseja1822Japaneseja1823Japaneseja1824Japaneseja1825Japaneseja1826Japaneseja1827Japaneseja1828Japaneseja1829Japaneseja183Japaneseja1830Japaneseja1831Japaneseja1832Japaneseja1833Japaneseja1834Japaneseja1835Japaneseja1836Japaneseja1837Japaneseja1838Japaneseja1839Japaneseja184Japaneseja1840Japaneseja1841Japaneseja1842Japaneseja1843Japaneseja1844Japaneseja1845Japaneseja1846Japaneseja1847Japaneseja1848Japaneseja1849Japaneseja185Japaneseja1850Japaneseja1851Japaneseja1852Japaneseja1853Japaneseja1854Japaneseja1855Japaneseja1856Japaneseja1857Japaneseja1858Japaneseja1859Japaneseja186Japaneseja1860Japaneseja1861Japaneseja1862Japaneseja1863Japaneseja1864Japaneseja1865Japaneseja1866Japaneseja1867Japaneseja1868Japaneseja1869Japaneseja187Japaneseja1870Japaneseja1871Japaneseja1872Japaneseja1873Japaneseja1874Japaneseja1875Japaneseja1876Japaneseja1877Japaneseja1878Japaneseja1879Japaneseja188Japaneseja1880Japaneseja1881Japaneseja1882Japaneseja1883Japaneseja1884Japaneseja1885Japaneseja1886Japaneseja1887Japaneseja1888Japaneseja1889Japaneseja189Japaneseja1890Japaneseja1891Japaneseja1892Japaneseja1893Japaneseja1894Japaneseja1895Japaneseja1896Japaneseja1897Japaneseja1898Japaneseja1899Japaneseja19Japaneseja190Japaneseja1900Japaneseja1901Japaneseja1902Japaneseja1903Japaneseja1904Japaneseja1905Japaneseja1906Japaneseja1907Japaneseja1908Japaneseja1909Japaneseja191Japaneseja1910Japaneseja1911Japaneseja1912Japaneseja1913Japaneseja1914Japaneseja1915Japaneseja1916Japaneseja1917Japaneseja1918Japaneseja1919Japaneseja192Japaneseja1920Japaneseja1921Japaneseja1922Japaneseja1923Japaneseja1924Japaneseja1925Japaneseja1926Japaneseja1927Japaneseja1928Japaneseja1929Japaneseja193Japaneseja1930Japaneseja1931Japaneseja1932Japaneseja1933Japaneseja1934Japaneseja1935Japaneseja1936Japaneseja1937Japaneseja1938Japaneseja1939Japaneseja194Japaneseja1940Japaneseja1941Japaneseja1942Japaneseja1943Japaneseja1944Japaneseja1945Japaneseja1946Japaneseja1947Japaneseja1948Japaneseja1949Japaneseja195Japaneseja1950Japaneseja1951Japaneseja1952Japaneseja1953Japaneseja1954Japaneseja1955Japaneseja1956Japaneseja1957Japaneseja1958Japaneseja1959Japaneseja196Japaneseja1960Japaneseja1961Japaneseja1962Japaneseja1963Japaneseja1964Japaneseja1965Japaneseja1966Japaneseja1967Japaneseja1968Japaneseja1969Japaneseja197Japaneseja1970Japaneseja1971Japaneseja1972Japaneseja1973Japaneseja1974Japaneseja1975Japaneseja1976Japaneseja1977Japaneseja1978Japaneseja1979Japaneseja198Japaneseja1980Japaneseja1981Japaneseja1982Japaneseja1983Japaneseja1984Japaneseja1985Japaneseja1986Japaneseja1987Japaneseja1988Japaneseja1989Japaneseja199Japaneseja1990Japaneseja1991Japaneseja1992Japaneseja1993Japaneseja1994Japaneseja1995Japaneseja1996Japaneseja1997Japaneseja1998Japaneseja1999Japaneseja2Japaneseja20Japaneseja200Japaneseja2000Japaneseja2001Japaneseja2002Japaneseja2003Japaneseja2004Japaneseja2005Japaneseja2006Japaneseja2007Japaneseja2008Japaneseja2009Japaneseja201Japaneseja2010Japaneseja2011Japaneseja2012Japaneseja2013Japaneseja2014Japaneseja2015Japaneseja2016Japaneseja2017Japaneseja2018Japaneseja2019Japaneseja202Japaneseja2020Japaneseja2021Japaneseja2022Japaneseja2023Japaneseja2024Japaneseja2025Japaneseja2026Japaneseja2027Japaneseja2028Japaneseja2029Japaneseja203Japaneseja2030Japaneseja2031Japaneseja2032Japaneseja2033Japaneseja2034Japaneseja2035Japaneseja2036Japaneseja2037Japaneseja2038Japaneseja2039Japaneseja204Japaneseja2040Japaneseja2041Japaneseja2042Japaneseja2043Japaneseja2044Japaneseja2045Japaneseja2046Japaneseja2047Japaneseja2048Japaneseja2049Japaneseja205Japaneseja2050Japaneseja2051Japaneseja2052Japaneseja2053Japaneseja2054Japaneseja2055Japaneseja2056Japaneseja2057Japaneseja2058Japaneseja2059Japaneseja206Japaneseja2060Japaneseja2061Japaneseja2062Japaneseja2063Japaneseja2064Japaneseja2065Japaneseja2066Japaneseja2067Japaneseja2068Japaneseja2069Japaneseja207Japaneseja2070Japaneseja2071Japaneseja2072Japaneseja2073Japaneseja2074Japaneseja2075Japaneseja2076Japaneseja2077Japaneseja2078Japaneseja2079Japaneseja208Japaneseja2080Japaneseja2081Japaneseja2082Japaneseja2083Japaneseja2084Japaneseja2085Japaneseja2086Japaneseja2087Japaneseja2088Japaneseja2089Japaneseja209Japaneseja2090Japaneseja2091Japaneseja2092Japaneseja2093Japaneseja2094Japaneseja2095Japaneseja2096Japaneseja2097Japaneseja2098Japaneseja2099Japaneseja21Japaneseja210Japaneseja2100Japaneseja2101Japaneseja2102Japaneseja2103Japaneseja2104Japaneseja2105Japaneseja2106Japaneseja2107Japaneseja2108Japaneseja2109Japaneseja211Japaneseja2110Japaneseja2111Japaneseja2112Japaneseja2113Japaneseja2114Japaneseja2115Japaneseja2116Japaneseja2117Japaneseja2118Japaneseja2119Japaneseja212Japaneseja2120Japaneseja2121Japaneseja2122Japaneseja2123Japaneseja2124Japaneseja2125Japaneseja2126Japaneseja2127Japaneseja2128Japaneseja2129Japaneseja213Japaneseja2130Japaneseja2131Japaneseja2132Japaneseja2133Japaneseja2134Japaneseja2135Japaneseja2136Japaneseja2137Japaneseja2138Japaneseja2139Japaneseja214Japaneseja2140Japaneseja2141Japaneseja2142Japaneseja2143Japaneseja2144Japaneseja2145Japaneseja2146Japaneseja2147Japaneseja2148Japaneseja2149Japaneseja215Japaneseja2150Japaneseja2151Japaneseja2152Japaneseja2153Japaneseja2154Japaneseja2155Japaneseja2156Japaneseja2157Japaneseja2158Japaneseja2159Japaneseja216Japaneseja2160Japaneseja2161Japaneseja2162Japaneseja2163Japaneseja2164Japaneseja2165Japaneseja2166Japaneseja2167Japaneseja2168Japaneseja2169Japaneseja217Japaneseja2170Japaneseja2171Japaneseja2172Japaneseja2173Japaneseja2174Japaneseja2175Japaneseja2176Japaneseja2177Japaneseja2178Japaneseja2179Japaneseja218Japaneseja2180Japaneseja2181Japaneseja2182Japaneseja2183Japaneseja2184Japaneseja2185Japaneseja2186Japaneseja2187Japaneseja2188Japaneseja2189Japaneseja219Japaneseja2190Japaneseja2191Japaneseja2192Japaneseja2193Japaneseja2194Japaneseja2195Japaneseja2196Japaneseja2197Japaneseja2198Japaneseja2199Japaneseja22Japaneseja220Japaneseja2200Japaneseja2201Japaneseja2202Japaneseja2203Japaneseja2204Japaneseja2205Japaneseja2206Japaneseja2207Japaneseja2208Japaneseja2209Japaneseja221Japaneseja2210Japaneseja2211Japaneseja2212Japaneseja2213Japaneseja2214Japaneseja2215Japaneseja2216Japaneseja2217Japaneseja2218Japaneseja2219Japaneseja222Japaneseja2220Japaneseja2221Japaneseja2222Japaneseja2223Japaneseja2224Japaneseja2225Japaneseja2226Japaneseja2227Japaneseja2228Japaneseja2229Japaneseja223Japaneseja2230Japaneseja2231Japaneseja2232Japaneseja2233Japaneseja2234Japaneseja2235Japaneseja2236Japaneseja2237Japaneseja2238Japaneseja2239Japaneseja224Japaneseja2240Japaneseja2241Japaneseja2242Japaneseja2243Japaneseja2244Japaneseja2245Japaneseja2246Japaneseja2247Japaneseja2248Japaneseja2249Japaneseja225Japaneseja2250Japaneseja2251Japaneseja2252Japaneseja2253Japaneseja2254Japaneseja2255Japaneseja2256Japaneseja2257Japaneseja2258Japaneseja2259Japaneseja226Japaneseja2260Japaneseja2261Japaneseja2262Japaneseja2263Japaneseja2264Japaneseja2265Japaneseja2266Japaneseja2267Japaneseja2268Japaneseja2269Japaneseja227Japaneseja2270Japaneseja2271Japaneseja2272Japaneseja2273Japaneseja2274Japaneseja2275Japaneseja2276Japaneseja2277Japaneseja2278Japaneseja2279Japaneseja228Japaneseja2280Japaneseja2281Japaneseja2282Japaneseja2283Japaneseja2284Japaneseja2285Japaneseja2286Japaneseja2287Japaneseja2288Japaneseja2289Japaneseja229Japaneseja2290Japaneseja2291Japaneseja2292Japaneseja2293Japaneseja2294Japaneseja2295Japaneseja2296Japaneseja2297Japaneseja2298Japaneseja2299Japaneseja23Japaneseja230Japaneseja2300Japaneseja2301Japaneseja2302Japaneseja2303Japaneseja2304Japaneseja2305Japaneseja2306Japaneseja2307Japaneseja2308Japaneseja2309Japaneseja231Japaneseja2310Japaneseja2311Japaneseja2312Japaneseja2313Japaneseja2314Japaneseja2315Japaneseja2316Japaneseja2317Japaneseja2318Japaneseja2319Japaneseja232Japaneseja2320Japaneseja2321Japaneseja2322Japaneseja2323Japaneseja2324Japaneseja2325Japaneseja2326Japaneseja2327Japaneseja2328Japaneseja2329Japaneseja233Japaneseja2330Japaneseja2331Japaneseja2332Japaneseja2333Japaneseja2334Japaneseja2335Japaneseja2336Japaneseja2337Japaneseja2338Japaneseja2339Japaneseja234Japaneseja2340Japaneseja2341Japaneseja2342Japaneseja2343Japaneseja2344Japaneseja2345Japaneseja2346Japaneseja2347Japaneseja2348Japaneseja2349Japaneseja235Japaneseja2350Japaneseja2351Japaneseja2352Japaneseja2353Japaneseja2354Japaneseja2355Japaneseja2356Japaneseja2357Japaneseja2358Japaneseja2359Japaneseja236Japaneseja2360Japaneseja2361Japaneseja2362Japaneseja2363Japaneseja2364Japaneseja2365Japaneseja2366Japaneseja2367Japaneseja2368Japaneseja2369Japaneseja237Japaneseja2370Japaneseja2371Japaneseja2372Japaneseja2373Japaneseja2374Japaneseja2375Japaneseja2376Japaneseja2377Japaneseja2378Japaneseja2379Japaneseja238Japaneseja2380Japaneseja2381Japaneseja2382Japaneseja2383Japaneseja2384Japaneseja2385Japaneseja2386Japaneseja2387Japaneseja2388Japaneseja2389Japaneseja239Japaneseja2390Japaneseja2391Japaneseja2392Japaneseja2393Japaneseja2394Japaneseja2395Japaneseja2396Japaneseja2397Japaneseja2398Japaneseja2399Japaneseja24Japaneseja240Japaneseja2400Japaneseja2401Japaneseja2402Japaneseja2403Japaneseja2404Japaneseja2405Japaneseja2406Japaneseja2407Japaneseja2408Japaneseja2409Japaneseja241Japaneseja2410Japaneseja2411Japaneseja2412Japaneseja2413Japaneseja2414Japaneseja2415Japaneseja2416Japaneseja2417Japaneseja2418Japaneseja2419Japaneseja242Japaneseja2420Japaneseja2421Japaneseja2422Japaneseja2423Japaneseja2424Japaneseja2425Japaneseja2426Japaneseja2427Japaneseja2428Japaneseja2429Japaneseja243Japaneseja2430Japaneseja2431Japaneseja2432Japaneseja2433Japaneseja2434Japaneseja2435Japaneseja2436Japaneseja2437Japaneseja2438Japaneseja2439Japaneseja244Japaneseja2440Japaneseja2441Japaneseja2442Japaneseja2443Japaneseja2444Japaneseja2445Japaneseja2446Japaneseja2447Japaneseja2448Japaneseja2449Japaneseja245Japaneseja2450Japaneseja2451Japaneseja2452Japaneseja2453Japaneseja2454Japaneseja2455Japaneseja2456Japaneseja2457Japaneseja2458Japaneseja2459Japaneseja246Japaneseja2460Japaneseja2461Japaneseja2462Japaneseja2463Japaneseja2464Japaneseja2465Japaneseja2466Japaneseja2467Japaneseja2468Japaneseja2469Japaneseja247Japaneseja2470Japaneseja2471Japaneseja2472Japaneseja2473Japaneseja2474Japaneseja2475Japaneseja2476Japaneseja2477Japaneseja2478Japaneseja2479Japaneseja248Japaneseja2480Japaneseja2481Japaneseja2482Japaneseja2483Japaneseja2484Japaneseja2485Japaneseja2486Japaneseja2487Japaneseja2488Japaneseja2489Japaneseja249Japaneseja2490Japaneseja2491Japaneseja2492Japaneseja2493Japaneseja2494Japaneseja2495Japaneseja2496Japaneseja2497Japaneseja2498Japaneseja2499Japaneseja25Japaneseja250Japaneseja2500Japaneseja2501Japaneseja2502Japaneseja2503Japaneseja2504Japaneseja2505Japaneseja2506Japaneseja2507Japaneseja2508Japaneseja2509Japaneseja251Japaneseja2510Japaneseja2511Japaneseja2512Japaneseja2513Japaneseja2514Japaneseja2515Japaneseja2516Japaneseja2517Japaneseja2518Japaneseja2519Japaneseja252Japaneseja2520Japaneseja2521Japaneseja2522Japaneseja2523Japaneseja2524Japaneseja2525Japaneseja2526Japaneseja2527Japaneseja2528Japaneseja2529Japaneseja253Japaneseja2530Japaneseja2531Japaneseja2532Japaneseja2533Japaneseja2534Japaneseja2535Japaneseja2536Japaneseja2537Japaneseja2538Japaneseja2539Japaneseja254Japaneseja2540Japaneseja2541Japaneseja2542Japaneseja2543Japaneseja2544Japaneseja2545Japaneseja2546Japaneseja2547Japaneseja2548Japaneseja2549Japaneseja255Japaneseja2550Japaneseja2551Japaneseja2552Japaneseja2553Japaneseja2554Japaneseja2555Japaneseja2556Japaneseja2557Japaneseja2558Japaneseja2559Japaneseja256Japaneseja2560Japaneseja2561Japaneseja2562Japaneseja2563Japaneseja2564Japaneseja2565Japaneseja2566Japaneseja2567Japaneseja2568Japaneseja2569Japaneseja257Japaneseja2570Japaneseja2571Japaneseja2572Japaneseja2573Japaneseja2574Japaneseja2575Japaneseja2576Japaneseja2577Japaneseja2578Japaneseja2579Japaneseja258Japaneseja2580Japaneseja2581Japaneseja2582Japaneseja2583Japaneseja2584Japaneseja2585Japaneseja2586Japaneseja2587Japaneseja2588Japaneseja2589Japaneseja259Japaneseja2590Japaneseja2591Japaneseja2592Japaneseja2593Japaneseja2594Japaneseja2595Japaneseja2596Japaneseja2597Japaneseja2598Japaneseja2599Japaneseja26Japaneseja260Japaneseja2600Japaneseja2601Japaneseja2602Japaneseja2603Japaneseja2604Japaneseja2605Japaneseja2606Japaneseja2607Japaneseja2608Japaneseja2609Japaneseja261Japaneseja2610Japaneseja2611Japaneseja2612Japaneseja2613Japaneseja2614Japaneseja2615Japaneseja2616Japaneseja2617Japaneseja2618Japaneseja2619Japaneseja262Japaneseja2620Japaneseja2621Japaneseja2622Japaneseja2623Japaneseja2624Japaneseja2625Japaneseja2626Japaneseja2627Japaneseja2628Japaneseja2629Japaneseja263Japaneseja2630Japaneseja2631Japaneseja2632Japaneseja2633Japaneseja2634Japaneseja2635Japaneseja2636Japaneseja2637Japaneseja2638Japaneseja2639Japaneseja264Japaneseja2640Japaneseja2641Japaneseja2642Japaneseja2643Japaneseja2644Japaneseja2645Japaneseja2646Japaneseja2647Japaneseja2648Japaneseja2649Japaneseja265Japaneseja2650Japaneseja2651Japaneseja2652Japaneseja2653Japaneseja2654Japaneseja2655Japaneseja2656Japaneseja2657Japaneseja2658Japaneseja2659Japaneseja266Japaneseja2660Japaneseja2661Japaneseja2662Japaneseja2663Japaneseja2664Japaneseja2665Japaneseja2666Japaneseja2667Japaneseja2668Japaneseja2669Japaneseja267Japaneseja2670Japaneseja2671Japaneseja2672Japaneseja2673Japaneseja2674Japaneseja2675Japaneseja2676Japaneseja2677Japaneseja2678Japaneseja2679Japaneseja268Japaneseja2680Japaneseja2681Japaneseja2682Japaneseja2683Japaneseja2684Japaneseja2685Japaneseja2686Japaneseja2687Japaneseja2688Japaneseja2689Japaneseja269Japaneseja2690Japaneseja2691Japaneseja2692Japaneseja2693Japaneseja2694Japaneseja2695Japaneseja2696Japaneseja2697Japaneseja2698Japaneseja2699Japaneseja27Japaneseja270Japaneseja2700Japaneseja2701Japaneseja2702Japaneseja2703Japaneseja2704Japaneseja2705Japaneseja2706Japaneseja2707Japaneseja2708Japaneseja2709Japaneseja271Japaneseja2710Japaneseja2711Japaneseja2712Japaneseja2713Japaneseja2714Japaneseja2715Japaneseja2716Japaneseja2717Japaneseja2718Japaneseja2719Japaneseja272Japaneseja2720Japaneseja2721Japaneseja2722Japaneseja2723Japaneseja2724Japaneseja2725Japaneseja2726Japaneseja2727Japaneseja2728Japaneseja2729Japaneseja273Japaneseja2730Japaneseja2731Japaneseja2732Japaneseja2733Japaneseja2734Japaneseja2735Japaneseja2736Japaneseja2737Japaneseja2738Japaneseja2739Japaneseja274Japaneseja2740Japaneseja2741Japaneseja2742Japaneseja2743Japaneseja2744Japaneseja2745Japaneseja2746Japaneseja2747Japaneseja2748Japaneseja2749Japaneseja275Japaneseja2750Japaneseja2751Japaneseja2752Japaneseja2753Japaneseja2754Japaneseja2755Japaneseja2756Japaneseja2757Japaneseja2758Japaneseja2759Japaneseja276Japaneseja2760Japaneseja2761Japaneseja2762Japaneseja2763Japaneseja2764Japaneseja2765Japaneseja2766Japaneseja2767Japaneseja2768Japaneseja2769Japaneseja277Japaneseja2770Japaneseja2771Japaneseja2772Japaneseja2773Japaneseja2774Japaneseja2775Japaneseja2776Japaneseja2777Japaneseja2778Japaneseja2779Japaneseja278Japaneseja2780Japaneseja2781Japaneseja2782Japaneseja2783Japaneseja2784Japaneseja2785Japaneseja2786Japaneseja2787Japaneseja2788Japaneseja2789Japaneseja279Japaneseja2790Japaneseja2791Japaneseja2792Japaneseja2793Japaneseja2794Japaneseja2795Japaneseja2796Japaneseja2797Japaneseja2798Japaneseja2799Japaneseja28Japaneseja280Japaneseja2800Japaneseja2801Japaneseja2802Japaneseja2803Japaneseja2804Japaneseja2805Japaneseja2806Japaneseja2807Japaneseja2808Japaneseja2809Japaneseja281Japaneseja2810Japaneseja2811Japaneseja2812Japaneseja2813Japaneseja2814Japaneseja2815Japaneseja2816Japaneseja2817Japaneseja2818Japaneseja2819Japaneseja282Japaneseja2820Japaneseja2821Japaneseja2822Japaneseja2823Japaneseja2824Japaneseja2825Japaneseja2826Japaneseja2827Japaneseja2828Japaneseja2829Japaneseja283Japaneseja2830Japaneseja2831Japaneseja2832Japaneseja2833Japaneseja2834Japaneseja2835Japaneseja2836Japaneseja2837Japaneseja2838Japaneseja2839Japaneseja284Japaneseja2840Japaneseja2841Japaneseja2842Japaneseja2843Japaneseja2844Japaneseja2845Japaneseja2846Japaneseja2847Japaneseja2848Japaneseja2849Japaneseja285Japaneseja2850Japaneseja2851Japaneseja2852Japaneseja2853Japaneseja2854Japaneseja2855Japaneseja2856Japaneseja2857Japaneseja2858Japaneseja2859Japaneseja286Japaneseja2860Japaneseja2861Japaneseja2862Japaneseja2863Japaneseja2864Japaneseja2865Japaneseja2866Japaneseja2867Japaneseja2868Japaneseja2869Japaneseja287Japaneseja2870Japaneseja2871Japaneseja2872Japaneseja2873Japaneseja2874Japaneseja2875Japaneseja2876Japaneseja2877Japaneseja2878Japaneseja2879Japaneseja288Japaneseja2880Japaneseja2881Japaneseja2882Japaneseja2883Japaneseja2884Japaneseja2885Japaneseja2886Japaneseja2887Japaneseja2888Japaneseja2889Japaneseja289Japaneseja2890Japaneseja2891Japaneseja2892Japaneseja2893Japaneseja2894Japaneseja2895Japaneseja2896Japaneseja2897Japaneseja2898Japaneseja2899Japaneseja29Japaneseja290Japaneseja2900Japaneseja2901Japaneseja2902Japaneseja2903Japaneseja2904Japaneseja2905Japaneseja2906Japaneseja2907Japaneseja2908Japaneseja2909Japaneseja291Japaneseja2910Japaneseja2911Japaneseja2912Japaneseja2913Japaneseja2914Japaneseja2915Japaneseja2916Japaneseja2917Japaneseja2918Japaneseja2919Japaneseja292Japaneseja2920Japaneseja2921Japaneseja2922Japaneseja2923Japaneseja2924Japaneseja2925Japaneseja2926Japaneseja2927Japaneseja2928Japaneseja2929Japaneseja293Japaneseja2930Japaneseja2931Japaneseja2932Japaneseja2933Japaneseja2934Japaneseja2935Japaneseja2936Japaneseja2937Japaneseja2938Japaneseja2939Japaneseja294Japaneseja2940Japaneseja2941Japaneseja2942Japaneseja2943Japaneseja2944Japaneseja2945Japaneseja2946Japaneseja2947Japaneseja2948Japaneseja2949Japaneseja295Japaneseja2950Japaneseja2951Japaneseja2952Japaneseja2953Japaneseja2954Japaneseja2955Japaneseja2956Japaneseja2957Japaneseja2958Japaneseja2959Japaneseja296Japaneseja2960Japaneseja2961Japaneseja2962Japaneseja2963Japaneseja2964Japaneseja2965Japaneseja2966Japaneseja2967Japaneseja2968Japaneseja2969Japaneseja297Japaneseja2970Japaneseja2971Japaneseja2972Japaneseja2973Japaneseja2974Japaneseja2975Japaneseja2976Japaneseja2977Japaneseja2978Japaneseja2979Japaneseja298Japaneseja2980Japaneseja2981Japaneseja2982Japaneseja2983Japaneseja2984Japaneseja2985Japaneseja2986Japaneseja2987Japaneseja2988Japaneseja2989Japaneseja299Japaneseja2990Japaneseja2991Japaneseja2992Japaneseja2993Japaneseja2994Japaneseja2995Japaneseja2996Japaneseja2997Japaneseja2998Japaneseja2999Japaneseja3Japaneseja30Japaneseja300Japaneseja3000Japaneseja3001Japaneseja3002Japaneseja3003Japaneseja3004Japaneseja3005Japaneseja3006Japaneseja3007Japaneseja3008Japaneseja3009Japaneseja301Japaneseja3010Japaneseja3011Japaneseja3012Japaneseja3013Japaneseja3014Japaneseja3015Japaneseja3016Japaneseja3017Japaneseja3018Japaneseja3019Japaneseja302Japaneseja3020Japaneseja3021Japaneseja3022Japaneseja3023Japaneseja3024Japaneseja3025Japaneseja3026Japaneseja3027Japaneseja3028Japaneseja3029Japaneseja303Japaneseja3030Japaneseja3031Japaneseja3032Japaneseja3033Japaneseja3034Japaneseja3035Japaneseja3036Japaneseja3037Japaneseja3038Japaneseja3039Japaneseja304Japaneseja3040Japaneseja3041Japaneseja3042Japaneseja3043Japaneseja3044Japaneseja3045Japaneseja3046Japaneseja3047Japaneseja3048Japaneseja3049Japaneseja305Japaneseja3050Japaneseja3051Japaneseja3052Japaneseja3053Japaneseja3054Japaneseja3055Japaneseja3056Japaneseja3057Japaneseja3058Japaneseja3059Japaneseja306Japaneseja3060Japaneseja3061Japaneseja3062Japaneseja3063Japaneseja3064Japaneseja3065Japaneseja3066Japaneseja3067Japaneseja3068Japaneseja3069Japaneseja307Japaneseja3070Japaneseja3071Japaneseja3072Japaneseja3073Japaneseja3074Japaneseja3075Japaneseja3076Japaneseja3077Japaneseja3078Japaneseja3079Japaneseja308Japaneseja3080Japaneseja3081Japaneseja3082Japaneseja3083Japaneseja3084Japaneseja3085Japaneseja3086Japaneseja3087Japaneseja3088Japaneseja3089Japaneseja309Japaneseja3090Japaneseja3091Japaneseja3092Japaneseja3093Japaneseja3094Japaneseja3095Japaneseja3096Japaneseja3097Japaneseja3098Japaneseja3099Japaneseja31Japaneseja310Japaneseja3100Japaneseja3101Japaneseja3102Japaneseja3103Japaneseja3104Japaneseja3105Japaneseja3106Japaneseja3107Japaneseja3108Japaneseja3109Japaneseja311Japaneseja3110Japaneseja3111Japaneseja3112Japaneseja3113Japaneseja3114Japaneseja3115Japaneseja3116Japaneseja3117Japaneseja3118Japaneseja3119Japaneseja312Japaneseja3120Japaneseja3121Japaneseja3122Japaneseja3123Japaneseja3124Japaneseja3125Japaneseja3126Japaneseja3127Japaneseja3128Japaneseja3129Japaneseja313Japaneseja3130Japaneseja3131Japaneseja3132Japaneseja3133Japaneseja3134Japaneseja3135Japaneseja3136Japaneseja3137Japaneseja3138Japaneseja3139Japaneseja314Japaneseja3140Japaneseja3141Japaneseja3142Japaneseja3143Japaneseja3144Japaneseja3145Japaneseja3146Japaneseja3147Japaneseja3148Japaneseja3149Japaneseja315Japaneseja3150Japaneseja3151Japaneseja3152Japaneseja3153Japaneseja3154Japaneseja3155Japaneseja3156Japaneseja3157Japaneseja3158Japaneseja3159Japaneseja316Japaneseja3160Japaneseja3161Japaneseja3162Japaneseja3163Japaneseja3164Japaneseja3165Japaneseja3166Japaneseja3167Japaneseja3168Japaneseja3169Japaneseja317Japaneseja3170Japaneseja3171Japaneseja3172Japaneseja3173Japaneseja3174Japaneseja3175Japaneseja3176Japaneseja3177Japaneseja3178Japaneseja3179Japaneseja318Japaneseja3180Japaneseja3181Japaneseja3182Japaneseja3183Japaneseja3184Japaneseja3185Japaneseja3186Japaneseja3187Japaneseja3188Japaneseja3189Japaneseja319Japaneseja3190Japaneseja3191Japaneseja3192Japaneseja3193Japaneseja3194Japaneseja3195Japaneseja3196Japaneseja3197Japaneseja3198Japaneseja3199Japaneseja32Japaneseja320Japaneseja3200Japaneseja3201Japaneseja3202Japaneseja3203Japaneseja3204Japaneseja3205Japaneseja3206Japaneseja3207Japaneseja3208Japaneseja3209Japaneseja321Japaneseja3210Japaneseja3211Japaneseja3212Japaneseja3213Japaneseja3214Japaneseja3215Japaneseja3216Japaneseja3217Japaneseja3218Japaneseja3219Japaneseja322Japaneseja3220Japaneseja3221Japaneseja3222Japaneseja3223Japaneseja3224Japaneseja3225Japaneseja3226Japaneseja3227Japaneseja3228Japaneseja3229Japaneseja323Japaneseja3230Japaneseja3231Japaneseja3232Japaneseja3233Japaneseja3234Japaneseja3235Japaneseja3236Japaneseja3237Japaneseja3238Japaneseja3239Japaneseja324Japaneseja3240Japaneseja3241Japaneseja3242Japaneseja3243Japaneseja3244Japaneseja3245Japaneseja3246Japaneseja3247Japaneseja3248Japaneseja3249Japaneseja325Japaneseja3250Japaneseja3251Japaneseja3252Japaneseja3253Japaneseja3254Japaneseja3255Japaneseja3256Japaneseja3257Japaneseja3258Japaneseja3259Japaneseja326Japaneseja3260Japaneseja3261Japaneseja3262Japaneseja3263Japaneseja3264Japaneseja3265Japaneseja3266Japaneseja3267Japaneseja3268Japaneseja3269Japaneseja327Japaneseja3270Japaneseja3271Japaneseja3272Japaneseja3273Japaneseja3274Japaneseja3275Japaneseja3276Japaneseja3277Japaneseja3278Japaneseja3279Japaneseja328Japaneseja3280Japaneseja3281Japaneseja3282Japaneseja3283Japaneseja3284Japaneseja3285Japaneseja3286Japaneseja3287Japaneseja3288Japaneseja3289Japaneseja329Japaneseja3290Japaneseja3291Japaneseja3292Japaneseja3293Japaneseja3294Japaneseja3295Japaneseja3296Japaneseja3297Japaneseja3298Japaneseja3299Japaneseja33Japaneseja330Japaneseja3300Japaneseja3301Japaneseja3302Japaneseja3303Japaneseja3304Japaneseja3305Japaneseja3306Japaneseja3307Japaneseja3308Japaneseja3309Japaneseja331Japaneseja3310Japaneseja3311Japaneseja3312Japaneseja3313Japaneseja3314Japaneseja3315Japaneseja3316Japaneseja3317Japaneseja3318Japaneseja3319Japaneseja332Japaneseja3320Japaneseja3321Japaneseja3322Japaneseja3323Japaneseja3324Japaneseja3325Japaneseja3326Japaneseja3327Japaneseja3328Japaneseja3329Japaneseja333Japaneseja3330Japaneseja3331Japaneseja3332Japaneseja3333Japaneseja3334Japaneseja3335Japaneseja3336Japaneseja3337Japaneseja3338Japaneseja3339Japaneseja334Japaneseja3340Japaneseja3341Japaneseja3342Japaneseja3343Japaneseja3344Japaneseja3345Japaneseja3346Japaneseja3347Japaneseja3348Japaneseja3349Japaneseja335Japaneseja3350Japaneseja3351Japaneseja3352Japaneseja3353Japaneseja3354Japaneseja3355Japaneseja3356Japaneseja3357Japaneseja3358Japaneseja3359Japaneseja336Japaneseja3360Japaneseja3361Japaneseja3362Japaneseja3363Japaneseja3364Japaneseja3365Japaneseja3366Japaneseja3367Japaneseja3368Japaneseja3369Japaneseja337Japaneseja3370Japaneseja3371Japaneseja3372Japaneseja3373Japaneseja3374Japaneseja3375Japaneseja3376Japaneseja3377Japaneseja3378Japaneseja3379Japaneseja338Japaneseja3380Japaneseja3381Japaneseja3382Japaneseja3383Japaneseja3384Japaneseja3385Japaneseja3386Japaneseja3387Japaneseja3388Japaneseja3389Japaneseja339Japaneseja3390Japaneseja3391Japaneseja3392Japaneseja3393Japaneseja3394Japaneseja3395Japaneseja3396Japaneseja3397Japaneseja3398Japaneseja3399Japaneseja34Japaneseja340Japaneseja3400Japaneseja3401Japaneseja3402Japaneseja3403Japaneseja3404Japaneseja3405Japaneseja3406Japaneseja3407Japaneseja3408Japaneseja3409Japaneseja341Japaneseja3410Japaneseja3411Japaneseja3412Japaneseja3413Japaneseja3414Japaneseja3415Japaneseja3416Japaneseja3417Japaneseja3418Japaneseja3419Japaneseja342Japaneseja3420Japaneseja3421Japaneseja3422Japaneseja3423Japaneseja3424Japaneseja3425Japaneseja3426Japaneseja3427Japaneseja3428Japaneseja3429Japaneseja343Japaneseja3430Japaneseja3431Japaneseja3432Japaneseja3433Japaneseja3434Japaneseja3435Japaneseja3436Japaneseja3437Japaneseja3438Japaneseja3439Japaneseja344Japaneseja3440Japaneseja3441Japaneseja3442Japaneseja3443Japaneseja3444Japaneseja3445Japaneseja3446Japaneseja3447Japaneseja3448Japaneseja3449Japaneseja345Japaneseja3450Japaneseja3451Japaneseja3452Japaneseja3453Japaneseja3454Japaneseja3455Japaneseja3456Japaneseja3457Japaneseja3458Japaneseja3459Japaneseja346Japaneseja3460Japaneseja3461Japaneseja3462Japaneseja3463Japaneseja3464Japaneseja3465Japaneseja3466Japaneseja3467Japaneseja3468Japaneseja3469Japaneseja347Japaneseja3470Japaneseja3471Japaneseja3472Japaneseja3473Japaneseja3474Japaneseja3475Japaneseja3476Japaneseja3477Japaneseja3478Japaneseja3479Japaneseja348Japaneseja3480Japaneseja3481Japaneseja3482Japaneseja3483Japaneseja3484Japaneseja3485Japaneseja3486Japaneseja3487Japaneseja3488Japaneseja3489Japaneseja349Japaneseja3490Japaneseja3491Japaneseja3492Japaneseja3493Japaneseja3494Japaneseja3495Japaneseja3496Japaneseja3497Japaneseja3498Japaneseja3499Japaneseja35Japaneseja350Japaneseja3500Japaneseja3501Japaneseja3502Japaneseja3503Japaneseja3504Japaneseja3505Japaneseja3506Japaneseja3507Japaneseja3508Japaneseja3509Japaneseja351Japaneseja3510Japaneseja3511Japaneseja3512Japaneseja3513Japaneseja3514Japaneseja3515Japaneseja3516Japaneseja3517Japaneseja3518Japaneseja3519Japaneseja352Japaneseja3520Japaneseja3521Japaneseja3522Japaneseja3523Japaneseja3524Japaneseja3525Japaneseja3526Japaneseja3527Japaneseja3528Japaneseja3529Japaneseja353Japaneseja3530Japaneseja3531Japaneseja3532Japaneseja3533Japaneseja3534Japaneseja3535Japaneseja3536Japaneseja3537Japaneseja3538Japaneseja3539Japaneseja354Japaneseja3540Japaneseja3541Japaneseja3542Japaneseja3543Japaneseja3544Japaneseja3545Japaneseja3546Japaneseja3547Japaneseja3548Japaneseja3549Japaneseja355Japaneseja3550Japaneseja3551Japaneseja3552Japaneseja3553Japaneseja3554Japaneseja3555Japaneseja3556Japaneseja3557Japaneseja3558Japaneseja3559Japaneseja356Japaneseja3560Japaneseja3561Japaneseja3562Japaneseja3563Japaneseja3564Japaneseja3565Japaneseja3566Japaneseja3567Japaneseja3568Japaneseja3569Japaneseja357Japaneseja3570Japaneseja3571Japaneseja3572Japaneseja3573Japaneseja3574Japaneseja3575Japaneseja3576Japaneseja3577Japaneseja3578Japaneseja3579Japaneseja358Japaneseja3580Japaneseja3581Japaneseja3582Japaneseja3583Japaneseja3584Japaneseja3585Japaneseja3586Japaneseja3587Japaneseja3588Japaneseja3589Japaneseja359Japaneseja3590Japaneseja3591Japaneseja3592Japaneseja3593Japaneseja3594Japaneseja3595Japaneseja3596Japaneseja3597Japaneseja3598Japaneseja3599Japaneseja36Japaneseja360Japaneseja3600Japaneseja3601Japaneseja3602Japaneseja3603Japaneseja3604Japaneseja3605Japaneseja3606Japaneseja3607Japaneseja3608Japaneseja3609Japaneseja361Japaneseja3610Japaneseja3611Japaneseja3612Japaneseja3613Japaneseja3614Japaneseja3615Japaneseja3616Japaneseja3617Japaneseja3618Japaneseja3619Japaneseja362Japaneseja3620Japaneseja3621Japaneseja3622Japaneseja3623Japaneseja3624Japaneseja3625Japaneseja3626Japaneseja3627Japaneseja3628Japaneseja3629Japaneseja363Japaneseja3630Japaneseja3631Japaneseja3632Japaneseja3633Japaneseja3634Japaneseja3635Japaneseja3636Japaneseja3637Japaneseja3638Japaneseja3639Japaneseja364Japaneseja3640Japaneseja3641Japaneseja3642Japaneseja3643Japaneseja3644Japaneseja3645Japaneseja3646Japaneseja3647Japaneseja3648Japaneseja3649Japaneseja365Japaneseja3650Japaneseja3651Japaneseja3652Japaneseja3653Japaneseja3654Japaneseja3655Japaneseja3656Japaneseja3657Japaneseja3658Japaneseja3659Japaneseja366Japaneseja3660Japaneseja3661Japaneseja3662Japaneseja3663Japaneseja3664Japaneseja3665Japaneseja3666Japaneseja3667Japaneseja3668Japaneseja3669Japaneseja367Japaneseja3670Japaneseja3671Japaneseja3672Japaneseja3673Japaneseja3674Japaneseja3675Japaneseja3676Japaneseja3677Japaneseja3678Japaneseja3679Japaneseja368Japaneseja3680Japaneseja3681Japaneseja3682Japaneseja3683Japaneseja3684Japaneseja3685Japaneseja3686Japaneseja3687Japaneseja3688Japaneseja3689Japaneseja369Japaneseja3690Japaneseja3691Japaneseja3692Japaneseja3693Japaneseja3694Japaneseja3695Japaneseja3696Japaneseja3697Japaneseja3698Japaneseja3699Japaneseja37Japaneseja370Japaneseja3700Japaneseja3701Japaneseja3702Japaneseja3703Japaneseja3704Japaneseja3705Japaneseja3706Japaneseja3707Japaneseja3708Japaneseja3709Japaneseja371Japaneseja3710Japaneseja3711Japaneseja3712Japaneseja3713Japaneseja3714Japaneseja3715Japaneseja3716Japaneseja3717Japaneseja3718Japaneseja3719Japaneseja372Japaneseja3720Japaneseja3721Japaneseja3722Japaneseja3723Japaneseja3724Japaneseja3725Japaneseja3726Japaneseja3727Japaneseja3728Japaneseja3729Japaneseja373Japaneseja3730Japaneseja3731Japaneseja3732Japaneseja3733Japaneseja3734Japaneseja3735Japaneseja3736Japaneseja3737Japaneseja3738Japaneseja3739Japaneseja374Japaneseja3740Japaneseja3741Japaneseja3742Japaneseja3743Japaneseja3744Japaneseja3745Japaneseja3746Japaneseja3747Japaneseja3748Japaneseja3749Japaneseja375Japaneseja3750Japaneseja3751Japaneseja3752Japaneseja3753Japaneseja3754Japaneseja3755Japaneseja3756Japaneseja3757Japaneseja3758Japaneseja3759Japaneseja376Japaneseja3760Japaneseja3761Japaneseja3762Japaneseja3763Japaneseja3764Japaneseja3765Japaneseja3766Japaneseja3767Japaneseja3768Japaneseja3769Japaneseja377Japaneseja3770Japaneseja3771Japaneseja3772Japaneseja3773Japaneseja3774Japaneseja3775Japaneseja3776Japaneseja3777Japaneseja3778Japaneseja3779Japaneseja378Japaneseja3780Japaneseja3781Japaneseja3782Japaneseja3783Japaneseja3784Japaneseja3785Japaneseja3786Japaneseja3787Japaneseja3788Japaneseja3789Japaneseja379Japaneseja3790Japaneseja3791Japaneseja3792Japaneseja3793Japaneseja3794Japaneseja3795Japaneseja3796Japaneseja3797Japaneseja3798Japaneseja3799Japaneseja38Japaneseja380Japaneseja3800Japaneseja3801Japaneseja3802Japaneseja3803Japaneseja3804Japaneseja3805Japaneseja3806Japaneseja3807Japaneseja3808Japaneseja3809Japaneseja381Japaneseja3810Japaneseja3811Japaneseja3812Japaneseja3813Japaneseja3814Japaneseja3815Japaneseja3816Japaneseja3817Japaneseja3818Japaneseja3819Japaneseja382Japaneseja3820Japaneseja3821Japaneseja3822Japaneseja3823Japaneseja3824Japaneseja3825Japaneseja3826Japaneseja3827Japaneseja3828Japaneseja3829Japaneseja383Japaneseja3830Japaneseja3831Japaneseja3832Japaneseja3833Japaneseja3834Japaneseja3835Japaneseja3836Japaneseja3837Japaneseja3838Japaneseja3839Japaneseja384Japaneseja3840Japaneseja3841Japaneseja3842Japaneseja3843Japaneseja3844Japaneseja3845Japaneseja3846Japaneseja3847Japaneseja3848Japaneseja3849Japaneseja385Japaneseja3850Japaneseja3851Japaneseja3852Japaneseja3853Japaneseja3854Japaneseja3855Japaneseja3856Japaneseja3857Japaneseja3858Japaneseja3859Japaneseja386Japaneseja3860Japaneseja3861Japaneseja3862Japaneseja3863Japaneseja3864Japaneseja3865Japaneseja3866Japaneseja3867Japaneseja3868Japaneseja3869Japaneseja387Japaneseja3870Japaneseja3871Japaneseja3872Japaneseja3873Japaneseja3874Japaneseja3875Japaneseja3876Japaneseja3877Japaneseja3878Japaneseja3879Japaneseja388Japaneseja3880Japaneseja3881Japaneseja3882Japaneseja3883Japaneseja3884Japaneseja3885Japaneseja3886Japaneseja3887Japaneseja3888Japaneseja3889Japaneseja389Japaneseja3890Japaneseja3891Japaneseja3892Japaneseja3893Japaneseja3894Japaneseja3895Japaneseja3896Japaneseja3897Japaneseja3898Japaneseja3899Japaneseja39Japaneseja390Japaneseja3900Japaneseja3901Japaneseja3902Japaneseja3903Japaneseja3904Japaneseja3905Japaneseja3906Japaneseja3907Japaneseja3908Japaneseja3909Japaneseja391Japaneseja3910Japaneseja3911Japaneseja3912Japaneseja3913Japaneseja3914Japaneseja3915Japaneseja3916Japaneseja3917Japaneseja3918Japaneseja3919Japaneseja392Japaneseja3920Japaneseja3921Japaneseja3922Japaneseja3923Japaneseja3924Japaneseja3925Japaneseja3926Japaneseja3927Japaneseja3928Japaneseja3929Japaneseja393Japaneseja3930Japaneseja3931Japaneseja3932Japaneseja3933Japaneseja3934Japaneseja3935Japaneseja3936Japaneseja3937Japaneseja3938Japaneseja3939Japaneseja394Japaneseja3940Japaneseja3941Japaneseja3942Japaneseja3943Japaneseja3944Japaneseja3945Japaneseja3946Japaneseja3947Japaneseja3948Japaneseja3949Japaneseja395Japaneseja3950Japaneseja3951Japaneseja3952Japaneseja3953Japaneseja3954Japaneseja3955Japaneseja3956Japaneseja3957Japaneseja3958Japaneseja3959Japaneseja396Japaneseja3960Japaneseja3961Japaneseja3962Japaneseja3963Japaneseja3964Japaneseja3965Japaneseja3966Japaneseja3967Japaneseja3968Japaneseja3969Japaneseja397Japaneseja3970Japaneseja3971Japaneseja3972Japaneseja3973Japaneseja3974Japaneseja3975Japaneseja3976Japaneseja3977Japaneseja3978Japaneseja3979Japaneseja398Japaneseja3980Japaneseja3981Japaneseja3982Japaneseja3983Japaneseja3984Japaneseja3985Japaneseja3986Japaneseja3987Japaneseja3988Japaneseja3989Japaneseja399Japaneseja3990Japaneseja3991Japaneseja3992Japaneseja3993Japaneseja3994Japaneseja3995Japaneseja3996Japaneseja3997Japaneseja3998Japaneseja3999Japaneseja4Japaneseja40Japaneseja400Japaneseja4000Japaneseja4001Japaneseja4002Japaneseja4003Japaneseja4004Japaneseja4005Japaneseja4006Japaneseja4007Japaneseja4008Japaneseja4009Japaneseja401Japaneseja4010Japaneseja4011Japaneseja4012Japaneseja4013Japaneseja4014Japaneseja4015Japaneseja4016Japaneseja4017Japaneseja4018Japaneseja4019Japaneseja402Japaneseja4020Japaneseja4021Japaneseja4022Japaneseja4023Japaneseja4024Japaneseja4025Japaneseja4026Japaneseja4027Japaneseja4028Japaneseja4029Japaneseja403Japaneseja4030Japaneseja4031Japaneseja4032Japaneseja4033Japaneseja4034Japaneseja4035Japaneseja4036Japaneseja4037Japaneseja4038Japaneseja4039Japaneseja404Japaneseja4040Japaneseja4041Japaneseja4042Japaneseja4043Japaneseja4044Japaneseja4045Japaneseja4046Japaneseja4047Japaneseja4048Japaneseja4049Japaneseja405Japaneseja4050Japaneseja4051Japaneseja4052Japaneseja4053Japaneseja4054Japaneseja4055Japaneseja4056Japaneseja4057Japaneseja4058Japaneseja4059Japaneseja406Japaneseja4060Japaneseja4061Japaneseja4062Japaneseja4063Japaneseja4064Japaneseja4065Japaneseja4066Japaneseja4067Japaneseja4068Japaneseja4069Japaneseja407Japaneseja4070Japaneseja4071Japaneseja4072Japaneseja4073Japaneseja4074Japaneseja4075Japaneseja4076Japaneseja4077Japaneseja4078Japaneseja4079Japaneseja408Japaneseja4080Japaneseja4081Japaneseja4082Japaneseja4083Japaneseja4084Japaneseja4085Japaneseja4086Japaneseja4087Japaneseja4088Japaneseja4089Japaneseja409Japaneseja4090Japaneseja4091Japaneseja4092Japaneseja4093Japaneseja4094Japaneseja4095Japaneseja4096Japaneseja4097Japaneseja4098Japaneseja4099Japaneseja41Japaneseja410Japaneseja4100Japaneseja4101Japaneseja4102Japaneseja4103Japaneseja4104Japaneseja4105Japaneseja4106Japaneseja4107Japaneseja4108Japaneseja4109Japaneseja411Japaneseja4110Japaneseja4111Japaneseja4112Japaneseja4113Japaneseja4114Japaneseja4115Japaneseja4116Japaneseja4117Japaneseja4118Japaneseja4119Japaneseja412Japaneseja4120Japaneseja4121Japaneseja4122Japaneseja4123Japaneseja4124Japaneseja4125Japaneseja4126Japaneseja4127Japaneseja4128Japaneseja4129Japaneseja413Japaneseja4130Japaneseja4131Japaneseja4132Japaneseja4133Japaneseja4134Japaneseja4135Japaneseja4136Japaneseja4137Japaneseja4138Japaneseja4139Japaneseja414Japaneseja4140Japaneseja4141Japaneseja4142Japaneseja4143Japaneseja4144Japaneseja4145Japaneseja4146Japaneseja4147Japaneseja4148Japaneseja4149Japaneseja415Japaneseja4150Japaneseja4151Japaneseja4152Japaneseja4153Japaneseja4154Japaneseja4155Japaneseja4156Japaneseja4157Japaneseja4158Japaneseja4159Japaneseja416Japaneseja4160Japaneseja4161Japaneseja4162Japaneseja4163Japaneseja4164Japaneseja4165Japaneseja4166Japaneseja4167Japaneseja4168Japaneseja4169Japaneseja417Japaneseja4170Japaneseja4171Japaneseja4172Japaneseja4173Japaneseja4174Japaneseja4175Japaneseja4176Japaneseja4177Japaneseja4178Japaneseja4179Japaneseja418Japaneseja4180Japaneseja4181Japaneseja4182Japaneseja4183Japaneseja4184Japaneseja4185Japaneseja4186Japaneseja4187Japaneseja4188Japaneseja4189Japaneseja419Japaneseja4190Japaneseja4191Japaneseja4192Japaneseja4193Japaneseja4194Japaneseja4195Japaneseja4196Japaneseja4197Japaneseja4198Japaneseja4199Japaneseja42Japaneseja420Japaneseja4200Japaneseja4201Japaneseja4202Japaneseja4203Japaneseja4204Japaneseja4205Japaneseja4206Japaneseja4207Japaneseja4208Japaneseja4209Japaneseja421Japaneseja4210Japaneseja4211Japaneseja4212Japaneseja4213Japaneseja4214Japaneseja4215Japaneseja4216Japaneseja4217Japaneseja4218Japaneseja4219Japaneseja422Japaneseja4220Japaneseja4221Japaneseja4222Japaneseja4223Japaneseja4224Japaneseja4225Japaneseja4226Japaneseja4227Japaneseja4228Japaneseja4229Japaneseja423Japaneseja4230Japaneseja4231Japaneseja4232Japaneseja4233Japaneseja4234Japaneseja4235Japaneseja4236Japaneseja4237Japaneseja4238Japaneseja4239Japaneseja424Japaneseja4240Japaneseja4241Japaneseja4242Japaneseja4243Japaneseja4244Japaneseja4245Japaneseja4246Japaneseja4247Japaneseja4248Japaneseja4249Japaneseja425Japaneseja4250Japaneseja4251Japaneseja4252Japaneseja4253Japaneseja4254Japaneseja4255Japaneseja4256Japaneseja4257Japaneseja4258Japaneseja4259Japaneseja426Japaneseja4260Japaneseja4261Japaneseja4262Japaneseja4263Japaneseja4264Japaneseja4265Japaneseja4266Japaneseja4267Japaneseja4268Japaneseja4269Japaneseja427Japaneseja4270Japaneseja4271Japaneseja4272Japaneseja4273Japaneseja4274Japaneseja4275Japaneseja4276Japaneseja4277Japaneseja4278Japaneseja4279Japaneseja428Japaneseja4280Japaneseja4281Japaneseja4282Japaneseja4283Japaneseja4284Japaneseja4285Japaneseja4286Japaneseja4287Japaneseja4288Japaneseja4289Japaneseja429Japaneseja4290Japaneseja4291Japaneseja4292Japaneseja4293Japaneseja4294Japaneseja4295Japaneseja4296Japaneseja4297Japaneseja4298Japaneseja4299Japaneseja43Japaneseja430Japaneseja4300Japaneseja4301Japaneseja4302Japaneseja4303Japaneseja4304Japaneseja4305Japaneseja4306Japaneseja4307Japaneseja4308Japaneseja4309Japaneseja431Japaneseja4310Japaneseja4311Japaneseja4312Japaneseja4313Japaneseja4314Japaneseja4315Japaneseja4316Japaneseja4317Japaneseja4318Japaneseja4319Japaneseja432Japaneseja4320Japaneseja4321Japaneseja4322Japaneseja4323Japaneseja4324Japaneseja4325Japaneseja4326Japaneseja4327Japaneseja4328Japaneseja4329Japaneseja433Japaneseja4330Japaneseja4331Japaneseja4332Japaneseja4333Japaneseja4334Japaneseja4335Japaneseja4336Japaneseja4337Japaneseja4338Japaneseja4339Japaneseja434Japaneseja4340Japaneseja4341Japaneseja4342Japaneseja4343Japaneseja4344Japaneseja4345Japaneseja4346Japaneseja4347Japaneseja4348Japaneseja4349Japaneseja435Japaneseja4350Japaneseja4351Japaneseja4352Japaneseja4353Japaneseja4354Japaneseja4355Japaneseja4356Japaneseja4357Japaneseja4358Japaneseja4359Japaneseja436Japaneseja4360Japaneseja4361Japaneseja4362Japaneseja4363Japaneseja4364Japaneseja4365Japaneseja4366Japaneseja4367Japaneseja4368Japaneseja4369Japaneseja437Japaneseja4370Japaneseja4371Japaneseja4372Japaneseja4373Japaneseja4374Japaneseja4375Japaneseja4376Japaneseja4377Japaneseja4378Japaneseja4379Japaneseja438Japaneseja4380Japaneseja4381Japaneseja4382Japaneseja4383Japaneseja4384Japaneseja4385Japaneseja4386Japaneseja4387Japaneseja4388Japaneseja4389Japaneseja439Japaneseja4390Japaneseja4391Japaneseja4392Japaneseja4393Japaneseja4394Japaneseja4395Japaneseja4396Japaneseja4397Japaneseja4398Japaneseja4399Japaneseja44Japaneseja440Japaneseja4400Japaneseja4401Japaneseja4402Japaneseja4403Japaneseja4404Japaneseja4405Japaneseja4406Japaneseja4407Japaneseja4408Japaneseja4409Japaneseja441Japaneseja4410Japaneseja4411Japaneseja4412Japaneseja4413Japaneseja4414Japaneseja4415Japaneseja4416Japaneseja4417Japaneseja4418Japaneseja4419Japaneseja442Japaneseja4420Japaneseja4421Japaneseja4422Japaneseja4423Japaneseja4424Japaneseja4425Japaneseja4426Japaneseja4427Japaneseja4428Japaneseja4429Japaneseja443Japaneseja4430Japaneseja4431Japaneseja4432Japaneseja4433Japaneseja4434Japaneseja4435Japaneseja4436Japaneseja4437Japaneseja4438Japaneseja4439Japaneseja444Japaneseja4440Japaneseja4441Japaneseja4442Japaneseja4443Japaneseja4444Japaneseja4445Japaneseja4446Japaneseja4447Japaneseja4448Japaneseja4449Japaneseja445Japaneseja4450Japaneseja4451Japaneseja4452Japaneseja4453Japaneseja4454Japaneseja4455Japaneseja4456Japaneseja4457Japaneseja4458Japaneseja4459Japaneseja446Japaneseja4460Japaneseja4461Japaneseja4462Japaneseja4463Japaneseja4464Japaneseja4465Japaneseja4466Japaneseja4467Japaneseja4468Japaneseja4469Japaneseja447Japaneseja4470Japaneseja4471Japaneseja4472Japaneseja4473Japaneseja4474Japaneseja4475Japaneseja4476Japaneseja4477Japaneseja4478Japaneseja4479Japaneseja448Japaneseja4480Japaneseja4481Japaneseja4482Japaneseja4483Japaneseja4484Japaneseja4485Japaneseja4486Japaneseja4487Japaneseja4488Japaneseja4489Japaneseja449Japaneseja4490Japaneseja4491Japaneseja4492Japaneseja4493Japaneseja4494Japaneseja4495Japaneseja4496Japaneseja4497Japaneseja4498Japaneseja4499Japaneseja45Japaneseja450Japaneseja4500Japaneseja4501Japaneseja4502Japaneseja4503Japaneseja4504Japaneseja4505Japaneseja4506Japaneseja4507Japaneseja4508Japaneseja4509Japaneseja451Japaneseja4510Japaneseja4511Japaneseja4512Japaneseja4513Japaneseja4514Japaneseja4515Japaneseja4516Japaneseja4517Japaneseja4518Japaneseja4519Japaneseja452Japaneseja4520Japaneseja4521Japaneseja4522Japaneseja4523Japaneseja4524Japaneseja4525Japaneseja4526Japaneseja4527Japaneseja4528Japaneseja4529Japaneseja453Japaneseja4530Japaneseja4531Japaneseja4532Japaneseja4533Japaneseja4534Japaneseja4535Japaneseja4536Japaneseja4537Japaneseja4538Japaneseja4539Japaneseja454Japaneseja4540Japaneseja4541Japaneseja4542Japaneseja4543Japaneseja4544Japaneseja4545Japaneseja4546Japaneseja4547Japaneseja4548Japaneseja4549Japaneseja455Japaneseja4550Japaneseja4551Japaneseja4552Japaneseja4553Japaneseja4554Japaneseja4555Japaneseja4556Japaneseja4557Japaneseja4558Japaneseja4559Japaneseja456Japaneseja4560Japaneseja4561Japaneseja4562Japaneseja4563Japaneseja4564Japaneseja4565Japaneseja4566Japaneseja4567Japaneseja4568Japaneseja4569Japaneseja457Japaneseja4570Japaneseja4571Japaneseja4572Japaneseja4573Japaneseja4574Japaneseja4575Japaneseja4576Japaneseja4577Japaneseja4578Japaneseja4579Japaneseja458Japaneseja4580Japaneseja4581Japaneseja4582Japaneseja4583Japaneseja4584Japaneseja4585Japaneseja4586Japaneseja4587Japaneseja4588Japaneseja4589Japaneseja459Japaneseja4590Japaneseja4591Japaneseja4592Japaneseja4593Japaneseja4594Japaneseja4595Japaneseja4596Japaneseja4597Japaneseja4598Japaneseja4599Japaneseja46Japaneseja460Japaneseja4600Japaneseja4601Japaneseja4602Japaneseja4603Japaneseja4604Japaneseja4605Japaneseja4606Japaneseja4607Japaneseja4608Japaneseja4609Japaneseja461Japaneseja4610Japaneseja4611Japaneseja4612Japaneseja4613Japaneseja4614Japaneseja4615Japaneseja4616Japaneseja4617Japaneseja4618Japaneseja4619Japaneseja462Japaneseja4620Japaneseja4621Japaneseja4622Japaneseja4623Japaneseja4624Japaneseja4625Japaneseja4626Japaneseja4627Japaneseja4628Japaneseja4629Japaneseja463Japaneseja4630Japaneseja4631Japaneseja4632Japaneseja4633Japaneseja4634Japaneseja4635Japaneseja4636Japaneseja4637Japaneseja4638Japaneseja4639Japaneseja464Japaneseja4640Japaneseja4641Japaneseja4642Japaneseja4643Japaneseja4644Japaneseja4645Japaneseja4646Japaneseja4647Japaneseja4648Japaneseja4649Japaneseja465Japaneseja4650Japaneseja4651Japaneseja4652Japaneseja4653Japaneseja4654Japaneseja4655Japaneseja4656Japaneseja4657Japaneseja4658Japaneseja4659Japaneseja466Japaneseja4660Japaneseja4661Japaneseja4662Japaneseja4663Japaneseja4664Japaneseja4665Japaneseja4666Japaneseja4667Japaneseja4668Japaneseja4669Japaneseja467Japaneseja4670Japaneseja4671Japaneseja4672Japaneseja4673Japaneseja4674Japaneseja4675Japaneseja4676Japaneseja4677Japaneseja4678Japaneseja4679Japaneseja468Japaneseja4680Japaneseja4681Japaneseja4682Japaneseja4683Japaneseja4684Japaneseja4685Japaneseja4686Japaneseja4687Japaneseja4688Japaneseja4689Japaneseja469Japaneseja4690Japaneseja4691Japaneseja4692Japaneseja4693Japaneseja4694Japaneseja4695Japaneseja4696Japaneseja4697Japaneseja4698Japaneseja4699Japaneseja47Japaneseja470Japaneseja4700Japaneseja4701Japaneseja4702Japaneseja4703Japaneseja4704Japaneseja4705Japaneseja4706Japaneseja4707Japaneseja4708Japaneseja4709Japaneseja471Japaneseja4710Japaneseja4711Japaneseja4712Japaneseja4713Japaneseja4714Japaneseja4715Japaneseja4716Japaneseja4717Japaneseja4718Japaneseja4719Japaneseja472Japaneseja4720Japaneseja4721Japaneseja4722Japaneseja4723Japaneseja4724Japaneseja4725Japaneseja4726Japaneseja4727Japaneseja4728Japaneseja4729Japaneseja473Japaneseja4730Japaneseja4731Japaneseja4732Japaneseja4733Japaneseja4734Japaneseja4735Japaneseja4736Japaneseja4737Japaneseja4738Japaneseja4739Japaneseja474Japaneseja4740Japaneseja4741Japaneseja4742Japaneseja4743Japaneseja4744Japaneseja4745Japaneseja4746Japaneseja4747Japaneseja4748Japaneseja4749Japaneseja475Japaneseja4750Japaneseja4751Japaneseja4752Japaneseja4753Japaneseja4754Japaneseja4755Japaneseja4756Japaneseja4757Japaneseja4758Japaneseja4759Japaneseja476Japaneseja4760Japaneseja4761Japaneseja4762Japaneseja4763Japaneseja4764Japaneseja4765Japaneseja4766Japaneseja4767Japaneseja4768Japaneseja4769Japaneseja477Japaneseja4770Japaneseja4771Japaneseja4772Japaneseja4773Japaneseja4774Japaneseja4775Japaneseja4776Japaneseja4777Japaneseja4778Japaneseja4779Japaneseja478Japaneseja4780Japaneseja4781Japaneseja4782Japaneseja4783Japaneseja4784Japaneseja4785Japaneseja4786Japaneseja4787Japaneseja4788Japaneseja4789Japaneseja479Japaneseja4790Japaneseja4791Japaneseja4792Japaneseja4793Japaneseja4794Japaneseja4795Japaneseja4796Japaneseja4797Japaneseja4798Japaneseja4799Japaneseja48Japaneseja480Japaneseja4800Japaneseja4801Japaneseja4802Japaneseja4803Japaneseja4804Japaneseja4805Japaneseja4806Japaneseja4807Japaneseja4808Japaneseja4809Japaneseja481Japaneseja4810Japaneseja4811Japaneseja4812Japaneseja4813Japaneseja4814Japaneseja4815Japaneseja4816Japaneseja4817Japaneseja4818Japaneseja4819Japaneseja482Japaneseja4820Japaneseja4821Japaneseja4822Japaneseja4823Japaneseja4824Japaneseja4825Japaneseja4826Japaneseja4827Japaneseja4828Japaneseja4829Japaneseja483Japaneseja4830Japaneseja4831Japaneseja4832Japaneseja4833Japaneseja4834Japaneseja4835Japaneseja4836Japaneseja4837Japaneseja4838Japaneseja4839Japaneseja484Japaneseja4840Japaneseja4841Japaneseja4842Japaneseja4843Japaneseja4844Japaneseja4845Japaneseja4846Japaneseja4847Japaneseja4848Japaneseja4849Japaneseja485Japaneseja4850Japaneseja4851Japaneseja4852Japaneseja4853Japaneseja4854Japaneseja4855Japaneseja4856Japaneseja4857Japaneseja4858Japaneseja4859Japaneseja486Japaneseja4860Japaneseja4861Japaneseja4862Japaneseja4863Japaneseja4864Japaneseja4865Japaneseja4866Japaneseja4867Japaneseja4868Japaneseja4869Japaneseja487Japaneseja4870Japaneseja4871Japaneseja4872Japaneseja4873Japaneseja4874Japaneseja4875Japaneseja4876Japaneseja4877Japaneseja4878Japaneseja4879Japaneseja488Japaneseja4880Japaneseja4881Japaneseja4882Japaneseja4883Japaneseja4884Japaneseja4885Japaneseja4886Japaneseja4887Japaneseja4888Japaneseja4889Japaneseja489Japaneseja4890Japaneseja4891Japaneseja4892Japaneseja4893Japaneseja4894Japaneseja4895Japaneseja4896Japaneseja4897Japaneseja4898Japaneseja4899Japaneseja49Japaneseja490Japaneseja4900Japaneseja4901Japaneseja4902Japaneseja4903Japaneseja4904Japaneseja4905Japaneseja4906Japaneseja4907Japaneseja4908Japaneseja4909Japaneseja491Japaneseja4910Japaneseja4911Japaneseja4912Japaneseja4913Japaneseja4914Japaneseja4915Japaneseja4916Japaneseja4917Japaneseja4918Japaneseja4919Japaneseja492Japaneseja4920Japaneseja4921Japaneseja4922Japaneseja4923Japaneseja4924Japaneseja4925Japaneseja4926Japaneseja4927Japaneseja4928Japaneseja4929Japaneseja493Japaneseja4930Japaneseja4931Japaneseja4932Japaneseja4933Japaneseja4934Japaneseja4935Japaneseja4936Japaneseja4937Japaneseja4938Japaneseja4939Japaneseja494Japaneseja4940Japaneseja4941Japaneseja4942Japaneseja4943Japaneseja4944Japaneseja4945Japaneseja4946Japaneseja4947Japaneseja4948Japaneseja4949Japaneseja495Japaneseja4950Japaneseja4951Japaneseja4952Japaneseja4953Japaneseja4954Japaneseja4955Japaneseja4956Japaneseja4957Japaneseja4958Japaneseja4959Japaneseja496Japaneseja4960Japaneseja4961Japaneseja4962Japaneseja4963Japaneseja4964Japaneseja4965Japaneseja4966Japaneseja4967Japaneseja4968Japaneseja4969Japaneseja497Japaneseja4970Japaneseja4971Japaneseja4972Japaneseja4973Japaneseja4974Japaneseja4975Japaneseja4976Japaneseja4977Japaneseja4978Japaneseja4979Japaneseja498Japaneseja4980Japaneseja4981Japaneseja4982Japaneseja4983Japaneseja4984Japaneseja4985Japaneseja4986Japaneseja4987Japaneseja4988Japaneseja4989Japaneseja499Japaneseja4990Japaneseja4991Japaneseja4992Japaneseja4993Japaneseja4994Japaneseja4995Japaneseja4996Japaneseja4997Japaneseja4998Japaneseja4999Japaneseja5Japaneseja50Japaneseja500Japaneseja5000Japaneseja5001Japaneseja5002Japaneseja5003Japaneseja5004Japaneseja5005Japaneseja5006Japaneseja5007Japaneseja5008Japaneseja5009Japaneseja501Japaneseja5010Japaneseja5011Japaneseja5012Japaneseja5013Japaneseja5014Japaneseja5015Japaneseja5016Japaneseja5017Japaneseja5018Japaneseja5019Japaneseja502Japaneseja5020Japaneseja5021Japaneseja5022Japaneseja5023Japaneseja5024Japaneseja5025Japaneseja5026Japaneseja5027Japaneseja5028Japaneseja5029Japaneseja503Japaneseja5030Japaneseja5031Japaneseja5032Japaneseja5033Japaneseja5034Japaneseja5035Japaneseja5036Japaneseja5037Japaneseja5038Japaneseja5039Japaneseja504Japaneseja5040Japaneseja5041Japaneseja5042Japaneseja5043Japaneseja5044Japaneseja5045Japaneseja5046Japaneseja5047Japaneseja5048Japaneseja5049Japaneseja505Japaneseja5050Japaneseja5051Japaneseja5052Japaneseja5053Japaneseja5054Japaneseja5055Japaneseja5056Japaneseja5057Japaneseja5058Japaneseja5059Japaneseja506Japaneseja5060Japaneseja5061Japaneseja5062Japaneseja5063Japaneseja5064Japaneseja5065Japaneseja5066Japaneseja5067Japaneseja5068Japaneseja5069Japaneseja507Japaneseja5070Japaneseja5071Japaneseja5072Japaneseja5073Japaneseja5074Japaneseja5075Japaneseja5076Japaneseja5077Japaneseja5078Japaneseja5079Japaneseja508Japaneseja5080Japaneseja5081Japaneseja5082Japaneseja5083Japaneseja5084Japaneseja5085Japaneseja5086Japaneseja5087Japaneseja5088Japaneseja5089Japaneseja509Japaneseja5090Japaneseja5091Japaneseja5092Japaneseja5093Japaneseja5094Japaneseja5095Japaneseja5096Japaneseja5097Japaneseja5098Japaneseja5099Japaneseja51Japaneseja510Japaneseja5100Japaneseja5101Japaneseja5102Japaneseja5103Japaneseja5104Japaneseja5105Japaneseja5106Japaneseja5107Japaneseja5108Japaneseja5109Japaneseja511Japaneseja5110Japaneseja5111Japaneseja5112Japaneseja5113Japaneseja5114Japaneseja5115Japaneseja5116Japaneseja5117Japaneseja5118Japaneseja5119Japaneseja512Japaneseja5120Japaneseja5121Japaneseja5122Japaneseja5123Japaneseja5124Japaneseja5125Japaneseja5126Japaneseja5127Japaneseja5128Japaneseja5129Japaneseja513Japaneseja5130Japaneseja5131Japaneseja5132Japaneseja5133Japaneseja5134Japaneseja5135Japaneseja5136Japaneseja5137Japaneseja5138Japaneseja5139Japaneseja514Japaneseja5140Japaneseja5141Japaneseja5142Japaneseja5143Japaneseja5144Japaneseja5145Japaneseja5146Japaneseja5147Japaneseja5148Japaneseja5149Japaneseja515Japaneseja5150Japaneseja5151Japaneseja5152Japaneseja5153Japaneseja5154Japaneseja5155Japaneseja5156Japaneseja5157Japaneseja5158Japaneseja5159Japaneseja516Japaneseja5160Japaneseja5161Japaneseja5162Japaneseja5163Japaneseja5164Japaneseja5165Japaneseja5166Japaneseja5167Japaneseja5168Japaneseja5169Japaneseja517Japaneseja5170Japaneseja5171Japaneseja5172Japaneseja5173Japaneseja5174Japaneseja5175Japaneseja5176Japaneseja5177Japaneseja5178Japaneseja5179Japaneseja518Japaneseja5180Japaneseja5181Japaneseja5182Japaneseja5183Japaneseja5184Japaneseja5185Japaneseja5186Japaneseja5187Japaneseja5188Japaneseja5189Japaneseja519Japaneseja5190Japaneseja5191Japaneseja5192Japaneseja5193Japaneseja5194Japaneseja5195Japaneseja5196Japaneseja5197Japaneseja5198Japaneseja5199Japaneseja52Japaneseja520Japaneseja5200Japaneseja5201Japaneseja5202Japaneseja5203Japaneseja5204Japaneseja5205Japaneseja5206Japaneseja5207Japaneseja5208Japaneseja5209Japaneseja521Japaneseja5210Japaneseja5211Japaneseja5212Japaneseja5213Japaneseja5214Japaneseja5215Japaneseja5216Japaneseja5217Japaneseja5218Japaneseja5219Japaneseja522Japaneseja5220Japaneseja5221Japaneseja5222Japaneseja5223Japaneseja5224Japaneseja5225Japaneseja5226Japaneseja5227Japaneseja5228Japaneseja5229Japaneseja523Japaneseja5230Japaneseja5231Japaneseja5232Japaneseja5233Japaneseja5234Japaneseja5235Japaneseja5236Japaneseja5237Japaneseja5238Japaneseja5239Japaneseja524Japaneseja5240Japaneseja5241Japaneseja5242Japaneseja5243Japaneseja5244Japaneseja5245Japaneseja5246Japaneseja5247Japaneseja5248Japaneseja5249Japaneseja525Japaneseja5250Japaneseja5251Japaneseja5252Japaneseja5253Japaneseja5254Japaneseja5255Japaneseja5256Japaneseja5257Japaneseja5258Japaneseja5259Japaneseja526Japaneseja5260Japaneseja5261Japaneseja5262Japaneseja5263Japaneseja5264Japaneseja5265Japaneseja5266Japaneseja5267Japaneseja5268Japaneseja5269Japaneseja527Japaneseja5270Japaneseja5271Japaneseja5272Japaneseja5273Japaneseja5274Japaneseja5275Japaneseja5276Japaneseja5277Japaneseja5278Japaneseja5279Japaneseja528Japaneseja5280Japaneseja5281Japaneseja5282Japaneseja5283Japaneseja5284Japaneseja5285Japaneseja5286Japaneseja5287Japaneseja5288Japaneseja5289Japaneseja529Japaneseja5290Japaneseja5291Japaneseja5292Japaneseja5293Japaneseja5294Japaneseja5295Japaneseja5296Japaneseja5297Japaneseja5298Japaneseja5299Japaneseja53Japaneseja530Japaneseja5300Japaneseja5301Japaneseja5302Japaneseja5303Japaneseja5304Japaneseja5305Japaneseja5306Japaneseja5307Japaneseja5308Japaneseja5309Japaneseja531Japaneseja5310Japaneseja5311Japaneseja5312Japaneseja5313Japaneseja5314Japaneseja5315Japaneseja5316Japaneseja5317Japaneseja5318Japaneseja5319Japaneseja532Japaneseja5320Japaneseja5321Japaneseja5322Japaneseja5323Japaneseja5324Japaneseja5325Japaneseja5326Japaneseja5327Japaneseja5328Japaneseja5329Japaneseja533Japaneseja5330Japaneseja5331Japaneseja5332Japaneseja5333Japaneseja5334Japaneseja5335Japaneseja5336Japaneseja5337Japaneseja5338Japaneseja5339Japaneseja534Japaneseja5340Japaneseja5341Japaneseja5342Japaneseja5343Japaneseja5344Japaneseja5345Japaneseja5346Japaneseja5347Japaneseja5348Japaneseja5349Japaneseja535Japaneseja5350Japaneseja5351Japaneseja5352Japaneseja5353Japaneseja5354Japaneseja5355Japaneseja5356Japaneseja5357Japaneseja5358Japaneseja5359Japaneseja536Japaneseja5360Japaneseja5361Japaneseja5362Japaneseja5363Japaneseja5364Japaneseja5365Japaneseja5366Japaneseja5367Japaneseja5368Japaneseja5369Japaneseja537Japaneseja5370Japaneseja5371Japaneseja5372Japaneseja5373Japaneseja5374Japaneseja5375Japaneseja5376Japaneseja5377Japaneseja5378Japaneseja5379Japaneseja538Japaneseja5380Japaneseja5381Japaneseja5382Japaneseja5383Japaneseja5384Japaneseja5385Japaneseja5386Japaneseja5387Japaneseja5388Japaneseja5389Japaneseja539Japaneseja5390Japaneseja5391Japaneseja5392Japaneseja5393Japaneseja5394Japaneseja5395Japaneseja5396Japaneseja5397Japaneseja5398Japaneseja5399Japaneseja54Japaneseja540Japaneseja5400Japaneseja5401Japaneseja5402Japaneseja5403Japaneseja5404Japaneseja5405Japaneseja5406Japaneseja5407Japaneseja5408Japaneseja5409Japaneseja541Japaneseja5410Japaneseja5411Japaneseja5412Japaneseja5413Japaneseja5414Japaneseja5415Japaneseja5416Japaneseja5417Japaneseja5418Japaneseja5419Japaneseja542Japaneseja5420Japaneseja5421Japaneseja5422Japaneseja5423Japaneseja5424Japaneseja5425Japaneseja5426Japaneseja5427Japaneseja5428Japaneseja5429Japaneseja543Japaneseja5430Japaneseja5431Japaneseja5432Japaneseja5433Japaneseja5434Japaneseja5435Japaneseja5436Japaneseja5437Japaneseja5438Japaneseja5439Japaneseja544Japaneseja5440Japaneseja5441Japaneseja5442Japaneseja5443Japaneseja5444Japaneseja5445Japaneseja5446Japaneseja5447Japaneseja5448Japaneseja5449Japaneseja545Japaneseja5450Japaneseja5451Japaneseja5452Japaneseja5453Japaneseja5454Japaneseja5455Japaneseja5456Japaneseja5457Japaneseja5458Japaneseja5459Japaneseja546Japaneseja5460Japaneseja5461Japaneseja5462Japaneseja5463Japaneseja5464Japaneseja5465Japaneseja5466Japaneseja5467Japaneseja5468Japaneseja5469Japaneseja547Japaneseja5470Japaneseja5471Japaneseja5472Japaneseja5473Japaneseja5474Japaneseja5475Japaneseja5476Japaneseja5477Japaneseja5478Japaneseja5479Japaneseja548Japaneseja5480Japaneseja5481Japaneseja5482Japaneseja5483Japaneseja5484Japaneseja5485Japaneseja5486Japaneseja5487Japaneseja5488Japaneseja5489Japaneseja549Japaneseja5490Japaneseja5491Japaneseja5492Japaneseja5493Japaneseja5494Japaneseja5495Japaneseja5496Japaneseja5497Japaneseja5498Japaneseja5499Japaneseja55Japaneseja550Japaneseja5500Japaneseja5501Japaneseja5502Japaneseja5503Japaneseja5504Japaneseja5505Japaneseja5506Japaneseja5507Japaneseja5508Japaneseja5509Japaneseja551Japaneseja5510Japaneseja5511Japaneseja5512Japaneseja5513Japaneseja5514Japaneseja5515Japaneseja5516Japaneseja5517Japaneseja5518Japaneseja5519Japaneseja552Japaneseja5520Japaneseja5521Japaneseja5522Japaneseja5523Japaneseja5524Japaneseja5525Japaneseja5526Japaneseja5527Japaneseja5528Japaneseja5529Japaneseja553Japaneseja5530Japaneseja5531Japaneseja5532Japaneseja5533Japaneseja5534Japaneseja5535Japaneseja5536Japaneseja5537Japaneseja5538Japaneseja5539Japaneseja554Japaneseja5540Japaneseja5541Japaneseja5542Japaneseja5543Japaneseja5544Japaneseja5545Japaneseja5546Japaneseja5547Japaneseja5548Japaneseja5549Japaneseja555Japaneseja5550Japaneseja5551Japaneseja5552Japaneseja5553Japaneseja5554Japaneseja5555Japaneseja5556Japaneseja5557Japaneseja5558Japaneseja5559Japaneseja556Japaneseja5560Japaneseja5561Japaneseja5562Japaneseja5563Japaneseja5564Japaneseja5565Japaneseja5566Japaneseja5567Japaneseja5568Japaneseja5569Japaneseja557Japaneseja5570Japaneseja5571Japaneseja5572Japaneseja5573Japaneseja5574Japaneseja5575Japaneseja5576Japaneseja5577Japaneseja5578Japaneseja5579Japaneseja558Japaneseja5580Japaneseja5581Japaneseja5582Japaneseja5583Japaneseja5584Japaneseja5585Japaneseja5586Japaneseja5587Japaneseja5588Japaneseja5589Japaneseja559Japaneseja5590Japaneseja5591Japaneseja5592Japaneseja5593Japaneseja5594Japaneseja5595Japaneseja5596Japaneseja5597Japaneseja5598Japaneseja5599Japaneseja56Japaneseja560Japaneseja5600Japaneseja5601Japaneseja5602Japaneseja5603Japaneseja5604Japaneseja5605Japaneseja5606Japaneseja5607Japaneseja5608Japaneseja5609Japaneseja561Japaneseja5610Japaneseja5611Japaneseja5612Japaneseja5613Japaneseja5614Japaneseja5615Japaneseja5616Japaneseja5617Japaneseja5618Japaneseja5619Japaneseja562Japaneseja5620Japaneseja5621Japaneseja5622Japaneseja5623Japaneseja5624Japaneseja5625Japaneseja5626Japaneseja5627Japaneseja5628Japaneseja5629Japaneseja563Japaneseja5630Japaneseja5631Japaneseja5632Japaneseja5633Japaneseja5634Japaneseja5635Japaneseja5636Japaneseja5637Japaneseja5638Japaneseja5639Japaneseja564Japaneseja5640Japaneseja5641Japaneseja5642Japaneseja5643Japaneseja5644Japaneseja5645Japaneseja5646Japaneseja5647Japaneseja5648Japaneseja5649Japaneseja565Japaneseja5650Japaneseja5651Japaneseja5652Japaneseja5653Japaneseja5654Japaneseja5655Japaneseja5656Japaneseja5657Japaneseja5658Japaneseja5659Japaneseja566Japaneseja5660Japaneseja5661Japaneseja5662Japaneseja5663Japaneseja5664Japaneseja5665Japaneseja5666Japaneseja5667Japaneseja5668Japaneseja5669Japaneseja567Japaneseja5670Japaneseja5671Japaneseja5672Japaneseja5673Japaneseja5674Japaneseja5675Japaneseja5676Japaneseja5677Japaneseja5678Japaneseja5679Japaneseja568Japaneseja5680Japaneseja5681Japaneseja5682Japaneseja5683Japaneseja5684Japaneseja5685Japaneseja5686Japaneseja5687Japaneseja5688Japaneseja5689Japaneseja569Japaneseja5690Japaneseja5691Japaneseja5692Japaneseja5693Japaneseja5694Japaneseja5695Japaneseja5696Japaneseja5697Japaneseja5698Japaneseja5699Japaneseja57Japaneseja570Japaneseja5700Japaneseja5701Japaneseja5702Japaneseja5703Japaneseja5704Japaneseja5705Japaneseja5706Japaneseja5707Japaneseja5708Japaneseja5709Japaneseja571Japaneseja5710Japaneseja5711Japaneseja5712Japaneseja5713Japaneseja5714Japaneseja5715Japaneseja5716Japaneseja5717Japaneseja5718Japaneseja5719Japaneseja572Japaneseja5720Japaneseja5721Japaneseja5722Japaneseja5723Japaneseja5724Japaneseja5725Japaneseja5726Japaneseja5727Japaneseja5728Japaneseja5729Japaneseja573Japaneseja5730Japaneseja5731Japaneseja5732Japaneseja5733Japaneseja5734Japaneseja5735Japaneseja5736Japaneseja5737Japaneseja5738Japaneseja5739Japaneseja574Japaneseja5740Japaneseja5741Japaneseja5742Japaneseja5743Japaneseja5744Japaneseja5745Japaneseja5746Japaneseja5747Japaneseja5748Japaneseja5749Japaneseja575Japaneseja5750Japaneseja5751Japaneseja5752Japaneseja5753Japaneseja5754Japaneseja5755Japaneseja5756Japaneseja5757Japaneseja5758Japaneseja5759Japaneseja576Japaneseja5760Japaneseja5761Japaneseja5762Japaneseja5763Japaneseja5764Japaneseja5765Japaneseja5766Japaneseja5767Japaneseja5768Japaneseja5769Japaneseja577Japaneseja5770Japaneseja5771Japaneseja5772Japaneseja5773Japaneseja5774Japaneseja5775Japaneseja5776Japaneseja5777Japaneseja5778Japaneseja5779Japaneseja578Japaneseja5780Japaneseja5781Japaneseja5782Japaneseja5783Japaneseja5784Japaneseja5785Japaneseja5786Japaneseja5787Japaneseja5788Japaneseja5789Japaneseja579Japaneseja5790Japaneseja5791Japaneseja5792Japaneseja5793Japaneseja5794Japaneseja5795Japaneseja5796Japaneseja5797Japaneseja5798Japaneseja5799Japaneseja58Japaneseja580Japaneseja5800Japaneseja5801Japaneseja5802Japaneseja5803Japaneseja5804Japaneseja5805Japaneseja5806Japaneseja5807Japaneseja5808Japaneseja5809Japaneseja581Japaneseja5810Japaneseja5811Japaneseja5812Japaneseja5813Japaneseja5814Japaneseja5815Japaneseja5816Japaneseja5817Japaneseja5818Japaneseja5819Japaneseja582Japaneseja5820Japaneseja5821Japaneseja5822Japaneseja5823Japaneseja5824Japaneseja5825Japaneseja5826Japaneseja5827Japaneseja5828Japaneseja5829Japaneseja583Japaneseja5830Japaneseja5831Japaneseja5832Japaneseja5833Japaneseja5834Japaneseja5835Japaneseja5836Japaneseja5837Japaneseja5838Japaneseja5839Japaneseja584Japaneseja5840Japaneseja5841Japaneseja5842Japaneseja5843Japaneseja5844Japaneseja5845Japaneseja5846Japaneseja5847Japaneseja5848Japaneseja5849Japaneseja585Japaneseja5850Japaneseja5851Japaneseja5852Japaneseja5853Japaneseja5854Japaneseja5855Japaneseja5856Japaneseja5857Japaneseja5858Japaneseja5859Japaneseja586Japaneseja5860Japaneseja5861Japaneseja5862Japaneseja5863Japaneseja5864Japaneseja5865Japaneseja5866Japaneseja5867Japaneseja5868Japaneseja5869Japaneseja587Japaneseja5870Japaneseja5871Japaneseja5872Japaneseja5873Japaneseja5874Japaneseja5875Japaneseja5876Japaneseja5877Japaneseja5878Japaneseja5879Japaneseja588Japaneseja5880Japaneseja5881Japaneseja5882Japaneseja5883Japaneseja5884Japaneseja5885Japaneseja5886Japaneseja5887Japaneseja5888Japaneseja5889Japaneseja589Japaneseja5890Japaneseja5891Japaneseja5892Japaneseja5893Japaneseja5894Japaneseja5895Japaneseja5896Japaneseja5897Japaneseja5898Japaneseja5899Japaneseja59Japaneseja590Japaneseja5900Japaneseja5901Japaneseja5902Japaneseja5903Japaneseja5904Japaneseja5905Japaneseja5906Japaneseja5907Japaneseja5908Japaneseja5909Japaneseja591Japaneseja5910Japaneseja5911Japaneseja5912Japaneseja5913Japaneseja5914Japaneseja5915Japaneseja5916Japaneseja5917Japaneseja5918Japaneseja5919Japaneseja592Japaneseja5920Japaneseja5921Japaneseja5922Japaneseja5923Japaneseja5924Japaneseja5925Japaneseja5926Japaneseja5927Japaneseja5928Japaneseja5929Japaneseja593Japaneseja5930Japaneseja5931Japaneseja5932Japaneseja5933Japaneseja5934Japaneseja5935Japaneseja5936Japaneseja5937Japaneseja5938Japaneseja5939Japaneseja594Japaneseja5940Japaneseja5941Japaneseja5942Japaneseja5943Japaneseja5944Japaneseja5945Japaneseja5946Japaneseja5947Japaneseja5948Japaneseja5949Japaneseja595Japaneseja5950Japaneseja5951Japaneseja5952Japaneseja5953Japaneseja5954Japaneseja5955Japaneseja5956Japaneseja5957Japaneseja5958Japaneseja5959Japaneseja596Japaneseja5960Japaneseja5961Japaneseja5962Japaneseja5963Japaneseja5964Japaneseja5965Japaneseja5966Japaneseja5967Japaneseja5968Japaneseja5969Japaneseja597Japaneseja5970Japaneseja5971Japaneseja5972Japaneseja5973Japaneseja5974Japaneseja5975Japaneseja5976Japaneseja5977Japaneseja5978Japaneseja5979Japaneseja598Japaneseja5980Japaneseja5981Japaneseja5982Japaneseja5983Japaneseja5984Japaneseja5985Japaneseja5986Japaneseja5987Japaneseja5988Japaneseja5989Japaneseja599Japaneseja5990Japaneseja5991Japaneseja5992Japaneseja5993Japaneseja5994Japaneseja5995Japaneseja5996Japaneseja5997Japaneseja5998Japaneseja5999Japaneseja6Japaneseja60Japaneseja600Japaneseja6000Japaneseja6001Japaneseja6002Japaneseja6003Japaneseja6004Japaneseja6005Japaneseja6006Japaneseja6007Japaneseja6008Japaneseja6009Japaneseja601Japaneseja6010Japaneseja6011Japaneseja6012Japaneseja6013Japaneseja6014Japaneseja6015Japaneseja6016Japaneseja6017Japaneseja6018Japaneseja6019Japaneseja602Japaneseja6020Japaneseja6021Japaneseja6022Japaneseja6023Japaneseja6024Japaneseja6025Japaneseja6026Japaneseja6027Japaneseja6028Japaneseja6029Japaneseja603Japaneseja6030Japaneseja6031Japaneseja6032Japaneseja6033Japaneseja6034Japaneseja6035Japaneseja6036Japaneseja6037Japaneseja6038Japaneseja6039Japaneseja604Japaneseja6040Japaneseja6041Japaneseja6042Japaneseja6043Japaneseja6044Japaneseja6045Japaneseja6046Japaneseja6047Japaneseja6048Japaneseja6049Japaneseja605Japaneseja6050Japaneseja6051Japaneseja6052Japaneseja6053Japaneseja6054Japaneseja6055Japaneseja6056Japaneseja6057Japaneseja6058Japaneseja6059Japaneseja606Japaneseja6060Japaneseja6061Japaneseja6062Japaneseja6063Japaneseja6064Japaneseja6065Japaneseja6066Japaneseja6067Japaneseja6068Japaneseja6069Japaneseja607Japaneseja6070Japaneseja6071Japaneseja6072Japaneseja6073Japaneseja6074Japaneseja6075Japaneseja6076Japaneseja6077Japaneseja6078Japaneseja6079Japaneseja608Japaneseja6080Japaneseja6081Japaneseja6082Japaneseja6083Japaneseja6084Japaneseja6085Japaneseja6086Japaneseja6087Japaneseja6088Japaneseja6089Japaneseja609Japaneseja6090Japaneseja6091Japaneseja6092Japaneseja6093Japaneseja6094Japaneseja6095Japaneseja6096Japaneseja6097Japaneseja6098Japaneseja6099Japaneseja61Japaneseja610Japaneseja6100Japaneseja6101Japaneseja6102Japaneseja6103Japaneseja6104Japaneseja6105Japaneseja6106Japaneseja6107Japaneseja6108Japaneseja6109Japaneseja611Japaneseja6110Japaneseja6111Japaneseja6112Japaneseja6113Japaneseja6114Japaneseja6115Japaneseja6116Japaneseja6117Japaneseja6118Japaneseja6119Japaneseja612Japaneseja6120Japaneseja6121Japaneseja6122Japaneseja6123Japaneseja6124Japaneseja6125Japaneseja6126Japaneseja6127Japaneseja6128Japaneseja6129Japaneseja613Japaneseja6130Japaneseja6131Japaneseja6132Japaneseja6133Japaneseja6134Japaneseja6135Japaneseja6136Japaneseja6137Japaneseja6138Japaneseja6139Japaneseja614Japaneseja6140Japaneseja6141Japaneseja6142Japaneseja6143Japaneseja6144Japaneseja6145Japaneseja6146Japaneseja6147Japaneseja6148Japaneseja6149Japaneseja615Japaneseja6150Japaneseja6151Japaneseja6152Japaneseja6153Japaneseja6154Japaneseja6155Japaneseja6156Japaneseja6157Japaneseja6158Japaneseja6159Japaneseja616Japaneseja6160Japaneseja6161Japaneseja6162Japaneseja6163Japaneseja6164Japaneseja6165Japaneseja6166Japaneseja6167Japaneseja6168Japaneseja6169Japaneseja617Japaneseja6170Japaneseja6171Japaneseja6172Japaneseja6173Japaneseja6174Japaneseja6175Japaneseja6176Japaneseja6177Japaneseja6178Japaneseja6179Japaneseja618Japaneseja6180Japaneseja6181Japaneseja6182Japaneseja6183Japaneseja6184Japaneseja6185Japaneseja6186Japaneseja6187Japaneseja6188Japaneseja6189Japaneseja619Japaneseja6190Japaneseja6191Japaneseja6192Japaneseja6193Japaneseja6194Japaneseja6195Japaneseja6196Japaneseja6197Japaneseja6198Japaneseja6199Japaneseja62Japaneseja620Japaneseja6200Japaneseja6201Japaneseja6202Japaneseja6203Japaneseja6204Japaneseja6205Japaneseja6206Japaneseja6207Japaneseja6208Japaneseja6209Japaneseja621Japaneseja6210Japaneseja6211Japaneseja6212Japaneseja6213Japaneseja6214Japaneseja6215Japaneseja6216Japaneseja6217Japaneseja6218Japaneseja6219Japaneseja622Japaneseja6220Japaneseja6221Japaneseja6222Japaneseja6223Japaneseja6224Japaneseja6225Japaneseja6226Japaneseja6227Japaneseja6228Japaneseja6229Japaneseja623Japaneseja6230Japaneseja6231Japaneseja6232Japaneseja6233Japaneseja6234Japaneseja6235Japaneseja6236Japaneseja6237Japaneseja6238Japaneseja6239Japaneseja624Japaneseja6240Japaneseja6241Japaneseja6242Japaneseja6243Japaneseja6244Japaneseja6245Japaneseja6246Japaneseja6247Japaneseja6248Japaneseja6249Japaneseja625Japaneseja6250Japaneseja6251Japaneseja6252Japaneseja6253Japaneseja6254Japaneseja6255Japaneseja6256Japaneseja6257Japaneseja6258Japaneseja6259Japaneseja626Japaneseja6260Japaneseja6261Japaneseja6262Japaneseja6263Japaneseja6264Japaneseja6265Japaneseja6266Japaneseja6267Japaneseja6268Japaneseja6269Japaneseja627Japaneseja6270Japaneseja6271Japaneseja6272Japaneseja6273Japaneseja6274Japaneseja6275Japaneseja6276Japaneseja6277Japaneseja6278Japaneseja6279Japaneseja628Japaneseja6280Japaneseja6281Japaneseja6282Japaneseja6283Japaneseja6284Japaneseja6285Japaneseja6286Japaneseja6287Japaneseja6288Japaneseja6289Japaneseja629Japaneseja6290Japaneseja6291Japaneseja6292Japaneseja6293Japaneseja6294Japaneseja6295Japaneseja6296Japaneseja6297Japaneseja6298Japaneseja6299Japaneseja63Japaneseja630Japaneseja6300Japaneseja6301Japaneseja6302Japaneseja6303Japaneseja6304Japaneseja6305Japaneseja6306Japaneseja6307Japaneseja6308Japaneseja6309Japaneseja631Japaneseja6310Japaneseja6311Japaneseja6312Japaneseja6313Japaneseja6314Japaneseja6315Japaneseja6316Japaneseja6317Japaneseja6318Japaneseja6319Japaneseja632Japaneseja6320Japaneseja6321Japaneseja6322Japaneseja6323Japaneseja6324Japaneseja6325Japaneseja6326Japaneseja6327Japaneseja6328Japaneseja6329Japaneseja633Japaneseja6330Japaneseja6331Japaneseja6332Japaneseja6333Japaneseja6334Japaneseja6335Japaneseja6336Japaneseja6337Japaneseja6338Japaneseja6339Japaneseja634Japaneseja6340Japaneseja6341Japaneseja6342Japaneseja6343Japaneseja6344Japaneseja6345Japaneseja6346Japaneseja6347Japaneseja6348Japaneseja6349Japaneseja635Japaneseja6350Japaneseja6351Japaneseja6352Japaneseja6353Japaneseja6354Japaneseja6355Japaneseja6356Japaneseja6357Japaneseja6358Japaneseja6359Japaneseja636Japaneseja6360Japaneseja6361Japaneseja6362Japaneseja6363Japaneseja6364Japaneseja6365Japaneseja6366Japaneseja6367Japaneseja6368Japaneseja6369Japaneseja637Japaneseja6370Japaneseja6371Japaneseja6372Japaneseja6373Japaneseja6374Japaneseja6375Japaneseja6376Japaneseja6377Japaneseja6378Japaneseja6379Japaneseja638Japaneseja6380Japaneseja6381Japaneseja6382Japaneseja6383Japaneseja6384Japaneseja6385Japaneseja6386Japaneseja6387Japaneseja6388Japaneseja6389Japaneseja639Japaneseja6390Japaneseja6391Japaneseja6392Japaneseja6393Japaneseja6394Japaneseja6395Japaneseja6396Japaneseja6397Japaneseja6398Japaneseja6399Japaneseja64Japaneseja640Japaneseja6400Japaneseja6401Japaneseja6402Japaneseja6403Japaneseja6404Japaneseja6405Japaneseja6406Japaneseja6407Japaneseja6408Japaneseja6409Japaneseja641Japaneseja6410Japaneseja6411Japaneseja6412Japaneseja6413Japaneseja6414Japaneseja6415Japaneseja6416Japaneseja6417Japaneseja6418Japaneseja6419Japaneseja642Japaneseja6420Japaneseja6421Japaneseja6422Japaneseja6423Japaneseja6424Japaneseja6425Japaneseja6426Japaneseja6427Japaneseja6428Japaneseja6429Japaneseja643Japaneseja6430Japaneseja6431Japaneseja6432Japaneseja6433Japaneseja6434Japaneseja6435Japaneseja6436Japaneseja6437Japaneseja6438Japaneseja6439Japaneseja644Japaneseja6440Japaneseja6441Japaneseja6442Japaneseja6443Japaneseja6444Japaneseja6445Japaneseja6446Japaneseja6447Japaneseja6448Japaneseja6449Japaneseja645Japaneseja6450Japaneseja6451Japaneseja6452Japaneseja6453Japaneseja6454Japaneseja6455Japaneseja6456Japaneseja6457Japaneseja6458Japaneseja6459Japaneseja646Japaneseja6460Japaneseja6461Japaneseja6462Japaneseja6463Japaneseja6464Japaneseja6465Japaneseja6466Japaneseja6467Japaneseja6468Japaneseja6469Japaneseja647Japaneseja6470Japaneseja6471Japaneseja6472Japaneseja6473Japaneseja6474Japaneseja6475Japaneseja6476Japaneseja6477Japaneseja6478Japaneseja6479Japaneseja648Japaneseja6480Japaneseja6481Japaneseja6482Japaneseja6483Japaneseja6484Japaneseja6485Japaneseja6486Japaneseja6487Japaneseja6488Japaneseja6489Japaneseja649Japaneseja6490Japaneseja6491Japaneseja6492Japaneseja6493Japaneseja6494Japaneseja6495Japaneseja6496Japaneseja6497Japaneseja6498Japaneseja6499Japaneseja65Japaneseja650Japaneseja6500Japaneseja6501Japaneseja6502Japaneseja6503Japaneseja6504Japaneseja6505Japaneseja6506Japaneseja6507Japaneseja6508Japaneseja6509Japaneseja651Japaneseja6510Japaneseja6511Japaneseja6512Japaneseja6513Japaneseja6514Japaneseja6515Japaneseja6516Japaneseja6517Japaneseja6518Japaneseja6519Japaneseja652Japaneseja6520Japaneseja6521Japaneseja6522Japaneseja6523Japaneseja6524Japaneseja6525Japaneseja6526Japaneseja6527Japaneseja6528Japaneseja6529Japaneseja653Japaneseja6530Japaneseja6531Japaneseja6532Japaneseja6533Japaneseja6534Japaneseja6535Japaneseja6536Japaneseja6537Japaneseja6538Japaneseja6539Japaneseja654Japaneseja6540Japaneseja6541Japaneseja6542Japaneseja6543Japaneseja6544Japaneseja6545Japaneseja6546Japaneseja6547Japaneseja6548Japaneseja6549Japaneseja655Japaneseja6550Japaneseja6551Japaneseja6552Japaneseja6553Japaneseja6554Japaneseja6555Japaneseja6556Japaneseja6557Japaneseja6558Japaneseja6559Japaneseja656Japaneseja6560Japaneseja6561Japaneseja6562Japaneseja6563Japaneseja6564Japaneseja6565Japaneseja6566Japaneseja6567Japaneseja6568Japaneseja6569Japaneseja657Japaneseja6570Japaneseja6571Japaneseja6572Japaneseja6573Japaneseja6574Japaneseja6575Japaneseja6576Japaneseja6577Japaneseja6578Japaneseja6579Japaneseja658Japaneseja6580Japaneseja6581Japaneseja6582Japaneseja6583Japaneseja6584Japaneseja6585Japaneseja6586Japaneseja6587Japaneseja6588Japaneseja6589Japaneseja659Japaneseja6590Japaneseja6591Japaneseja6592Japaneseja6593Japaneseja6594Japaneseja6595Japaneseja6596Japaneseja6597Japaneseja6598Japaneseja6599Japaneseja66Japaneseja660Japaneseja6600Japaneseja6601Japaneseja6602Japaneseja6603Japaneseja6604Japaneseja6605Japaneseja6606Japaneseja6607Japaneseja6608Japaneseja6609Japaneseja661Japaneseja6610Japaneseja6611Japaneseja6612Japaneseja6613Japaneseja6614Japaneseja6615Japaneseja6616Japaneseja6617Japaneseja6618Japaneseja6619Japaneseja662Japaneseja6620Japaneseja6621Japaneseja6622Japaneseja6623Japaneseja6624Japaneseja6625Japaneseja6626Japaneseja6627Japaneseja6628Japaneseja6629Japaneseja663Japaneseja6630Japaneseja6631Japaneseja6632Japaneseja6633Japaneseja6634Japaneseja6635Japaneseja6636Japaneseja6637Japaneseja6638Japaneseja6639Japaneseja664Japaneseja6640Japaneseja6641Japaneseja6642Japaneseja6643Japaneseja6644Japaneseja6645Japaneseja6646Japaneseja6647Japaneseja6648Japaneseja6649Japaneseja665Japaneseja6650Japaneseja6651Japaneseja6652Japaneseja6653Japaneseja6654Japaneseja6655Japaneseja6656Japaneseja6657Japaneseja6658Japaneseja6659Japaneseja666Japaneseja6660Japaneseja6661Japaneseja6662Japaneseja6663Japaneseja6664Japaneseja6665Japaneseja6666Japaneseja6667Japaneseja6668Japaneseja6669Japaneseja667Japaneseja6670Japaneseja6671Japaneseja6672Japaneseja6673Japaneseja6674Japaneseja6675Japaneseja6676Japaneseja6677Japaneseja6678Japaneseja6679Japaneseja668Japaneseja6680Japaneseja6681Japaneseja6682Japaneseja6683Japaneseja6684Japaneseja6685Japaneseja6686Japaneseja6687Japaneseja6688Japaneseja6689Japaneseja669Japaneseja6690Japaneseja6691Japaneseja6692Japaneseja6693Japaneseja6694Japaneseja6695Japaneseja6696Japaneseja6697Japaneseja6698Japaneseja6699Japaneseja67Japaneseja670Japaneseja6700Japaneseja6701Japaneseja6702Japaneseja6703Japaneseja6704Japaneseja6705Japaneseja6706Japaneseja6707Japaneseja6708Japaneseja6709Japaneseja671Japaneseja6710Japaneseja6711Japaneseja6712Japaneseja6713Japaneseja6714Japaneseja6715Japaneseja6716Japaneseja6717Japaneseja6718Japaneseja6719Japaneseja672Japaneseja6720Japaneseja6721Japaneseja6722Japaneseja6723Japaneseja6724Japaneseja6725Japaneseja6726Japaneseja6727Japaneseja6728Japaneseja6729Japaneseja673Japaneseja6730Japaneseja6731Japaneseja6732Japaneseja6733Japaneseja6734Japaneseja6735Japaneseja6736Japaneseja6737Japaneseja6738Japaneseja6739Japaneseja674Japaneseja6740Japaneseja6741Japaneseja6742Japaneseja6743Japaneseja6744Japaneseja6745Japaneseja6746Japaneseja6747Japaneseja6748Japaneseja6749Japaneseja675Japaneseja6750Japaneseja6751Japaneseja6752Japaneseja6753Japaneseja6754Japaneseja6755Japaneseja6756Japaneseja6757Japaneseja6758Japaneseja6759Japaneseja676Japaneseja6760Japaneseja6761Japaneseja6762Japaneseja6763Japaneseja6764Japaneseja6765Japaneseja6766Japaneseja6767Japaneseja6768Japaneseja6769Japaneseja677Japaneseja6770Japaneseja6771Japaneseja6772Japaneseja6773Japaneseja6774Japaneseja6775Japaneseja6776Japaneseja6777Japaneseja6778Japaneseja6779Japaneseja678Japaneseja6780Japaneseja6781Japaneseja6782Japaneseja6783Japaneseja6784Japaneseja6785Japaneseja6786Japaneseja6787Japaneseja6788Japaneseja6789Japaneseja679Japaneseja6790Japaneseja6791Japaneseja6792Japaneseja6793Japaneseja6794Japaneseja6795Japaneseja6796Japaneseja6797Japaneseja6798Japaneseja6799Japaneseja68Japaneseja680Japaneseja6800Japaneseja6801Japaneseja6802Japaneseja6803Japaneseja6804Japaneseja6805Japaneseja6806Japaneseja6807Japaneseja6808Japaneseja6809Japaneseja681Japaneseja6810Japaneseja6811Japaneseja6812Japaneseja6813Japaneseja6814Japaneseja6815Japaneseja6816Japaneseja6817Japaneseja6818Japaneseja6819Japaneseja682Japaneseja6820Japaneseja6821Japaneseja6822Japaneseja6823Japaneseja6824Japaneseja6825Japaneseja6826Japaneseja6827Japaneseja6828Japaneseja6829Japaneseja683Japaneseja6830Japaneseja6831Japaneseja6832Japaneseja6833Japaneseja6834Japaneseja6835Japaneseja6836Japaneseja6837Japaneseja6838Japaneseja6839Japaneseja684Japaneseja6840Japaneseja6841Japaneseja6842Japaneseja6843Japaneseja6844Japaneseja6845Japaneseja6846Japaneseja6847Japaneseja6848Japaneseja6849Japaneseja685Japaneseja6850Japaneseja6851Japaneseja6852Japaneseja6853Japaneseja6854Japaneseja6855Japaneseja6856Japaneseja6857Japaneseja6858Japaneseja6859Japaneseja686Japaneseja6860Japaneseja6861Japaneseja6862Japaneseja6863Japaneseja6864Japaneseja6865Japaneseja6866Japaneseja6867Japaneseja6868Japaneseja6869Japaneseja687Japaneseja6870Japaneseja6871Japaneseja6872Japaneseja6873Japaneseja6874Japaneseja6875Japaneseja6876Japaneseja6877Japaneseja6878Japaneseja6879Japaneseja688Japaneseja6880Japaneseja6881Japaneseja6882Japaneseja6883Japaneseja6884Japaneseja6885Japaneseja6886Japaneseja6887Japaneseja6888Japaneseja6889Japaneseja689Japaneseja6890Japaneseja6891Japaneseja6892Japaneseja6893Japaneseja6894Japaneseja6895Japaneseja6896Japaneseja6897Japaneseja6898Japaneseja6899Japaneseja69Japaneseja690Japaneseja6900Japaneseja6901Japaneseja6902Japaneseja6903Japaneseja6904Japaneseja6905Japaneseja6906Japaneseja6907Japaneseja6908Japaneseja6909Japaneseja691Japaneseja6910Japaneseja6911Japaneseja6912Japaneseja6913Japaneseja6914Japaneseja6915Japaneseja6916Japaneseja6917Japaneseja6918Japaneseja6919Japaneseja692Japaneseja6920Japaneseja6921Japaneseja6922Japaneseja6923Japaneseja6924Japaneseja6925Japaneseja6926Japaneseja6927Japaneseja6928Japaneseja6929Japaneseja693Japaneseja6930Japaneseja6931Japaneseja6932Japaneseja6933Japaneseja6934Japaneseja6935Japaneseja6936Japaneseja6937Japaneseja6938Japaneseja6939Japaneseja694Japaneseja6940Japaneseja6941Japaneseja6942Japaneseja6943Japaneseja6944Japaneseja6945Japaneseja6946Japaneseja6947Japaneseja6948Japaneseja6949Japaneseja695Japaneseja6950Japaneseja6951Japaneseja6952Japaneseja6953Japaneseja6954Japaneseja6955Japaneseja6956Japaneseja6957Japaneseja6958Japaneseja6959Japaneseja696Japaneseja6960Japaneseja6961Japaneseja6962Japaneseja6963Japaneseja6964Japaneseja6965Japaneseja6966Japaneseja6967Japaneseja6968Japaneseja6969Japaneseja697Japaneseja6970Japaneseja6971Japaneseja6972Japaneseja6973Japaneseja6974Japaneseja6975Japaneseja6976Japaneseja6977Japaneseja6978Japaneseja6979Japaneseja698Japaneseja6980Japaneseja6981Japaneseja6982Japaneseja6983Japaneseja6984Japaneseja6985Japaneseja6986Japaneseja6987Japaneseja6988Japaneseja6989Japaneseja699Japaneseja6990Japaneseja6991Japaneseja6992Japaneseja6993Japaneseja6994Japaneseja6995Japaneseja6996Japaneseja6997Japaneseja6998Japaneseja6999Japaneseja7Japaneseja70Japaneseja700Japaneseja7000Japaneseja7001Japaneseja7002Japaneseja7003Japaneseja7004Japaneseja7005Japaneseja7006Japaneseja7007Japaneseja7008Japaneseja7009Japaneseja701Japaneseja7010Japaneseja7011Japaneseja7012Japaneseja7013Japaneseja7014Japaneseja7015Japaneseja7016Japaneseja7017Japaneseja7018Japaneseja7019Japaneseja702Japaneseja7020Japaneseja7021Japaneseja7022Japaneseja7023Japaneseja7024Japaneseja7025Japaneseja7026Japaneseja7027Japaneseja7028Japaneseja7029Japaneseja703Japaneseja7030Japaneseja7031Japaneseja7032Japaneseja7033Japaneseja7034Japaneseja7035Japaneseja7036Japaneseja7037Japaneseja7038Japaneseja7039Japaneseja704Japaneseja7040Japaneseja7041Japaneseja7042Japaneseja7043Japaneseja7044Japaneseja7045Japaneseja7046Japaneseja7047Japaneseja7048Japaneseja7049Japaneseja705Japaneseja7050Japaneseja7051Japaneseja7052Japaneseja7053Japaneseja7054Japaneseja7055Japaneseja7056Japaneseja7057Japaneseja7058Japaneseja7059Japaneseja706Japaneseja7060Japaneseja7061Japaneseja7062Japaneseja7063Japaneseja7064Japaneseja7065Japaneseja7066Japaneseja7067Japaneseja7068Japaneseja7069Japaneseja707Japaneseja7070Japaneseja7071Japaneseja7072Japaneseja7073Japaneseja7074Japaneseja7075Japaneseja7076Japaneseja7077Japaneseja7078Japaneseja7079Japaneseja708Japaneseja7080Japaneseja7081Japaneseja7082Japaneseja7083Japaneseja7084Japaneseja7085Japaneseja7086Japaneseja7087Japaneseja7088Japaneseja7089Japaneseja709Japaneseja7090Japaneseja7091Japaneseja7092Japaneseja7093Japaneseja7094Japaneseja7095Japaneseja7096Japaneseja7097Japaneseja7098Japaneseja7099Japaneseja71Japaneseja710Japaneseja7100Japaneseja7101Japaneseja7102Japaneseja7103Japaneseja7104Japaneseja7105Japaneseja7106Japaneseja7107Japaneseja7108Japaneseja7109Japaneseja711Japaneseja7110Japaneseja7111Japaneseja7112Japaneseja7113Japaneseja7114Japaneseja7115Japaneseja7116Japaneseja7117Japaneseja7118Japaneseja7119Japaneseja712Japaneseja7120Japaneseja7121Japaneseja7122Japaneseja7123Japaneseja7124Japaneseja7125Japaneseja7126Japaneseja7127Japaneseja7128Japaneseja7129Japaneseja713Japaneseja7130Japaneseja7131Japaneseja7132Japaneseja7133Japaneseja7134Japaneseja7135Japaneseja7136Japaneseja7137Japaneseja7138Japaneseja7139Japaneseja714Japaneseja7140Japaneseja7141Japaneseja7142Japaneseja7143Japaneseja7144Japaneseja7145Japaneseja7146Japaneseja7147Japaneseja7148Japaneseja7149Japaneseja715Japaneseja7150Japaneseja7151Japaneseja7152Japaneseja7153Japaneseja7154Japaneseja7155Japaneseja7156Japaneseja7157Japaneseja7158Japaneseja7159Japaneseja716Japaneseja7160Japaneseja7161Japaneseja7162Japaneseja7163Japaneseja7164Japaneseja7165Japaneseja7166Japaneseja7167Japaneseja7168Japaneseja7169Japaneseja717Japaneseja7170Japaneseja7171Japaneseja7172Japaneseja7173Japaneseja7174Japaneseja7175Japaneseja7176Japaneseja7177Japaneseja7178Japaneseja7179Japaneseja718Japaneseja7180Japaneseja7181Japaneseja7182Japaneseja7183Japaneseja7184Japaneseja7185Japaneseja7186Japaneseja7187Japaneseja7188Japaneseja7189Japaneseja719Japaneseja7190Japaneseja7191Japaneseja7192Japaneseja7193Japaneseja7194Japaneseja7195Japaneseja7196Japaneseja7197Japaneseja7198Japaneseja7199Japaneseja72Japaneseja720Japaneseja7200Japaneseja7201Japaneseja7202Japaneseja7203Japaneseja7204Japaneseja7205Japaneseja7206Japaneseja7207Japaneseja7208Japaneseja7209Japaneseja721Japaneseja7210Japaneseja7211Japaneseja7212Japaneseja7213Japaneseja7214Japaneseja7215Japaneseja7216Japaneseja7217Japaneseja7218Japaneseja7219Japaneseja722Japaneseja7220Japaneseja7221Japaneseja7222Japaneseja7223Japaneseja7224Japaneseja7225Japaneseja7226Japaneseja7227Japaneseja7228Japaneseja7229Japaneseja723Japaneseja7230Japaneseja7231Japaneseja7232Japaneseja7233Japaneseja7234Japaneseja7235Japaneseja7236Japaneseja7237Japaneseja7238Japaneseja7239Japaneseja724Japaneseja7240Japaneseja7241Japaneseja7242Japaneseja7243Japaneseja7244Japaneseja7245Japaneseja7246Japaneseja7247Japaneseja7248Japaneseja7249Japaneseja725Japaneseja7250Japaneseja7251Japaneseja7252Japaneseja7253Japaneseja7254Japaneseja7255Japaneseja7256Japaneseja7257Japaneseja7258Japaneseja7259Japaneseja726Japaneseja7260Japaneseja7261Japaneseja7262Japaneseja7263Japaneseja7264Japaneseja7265Japaneseja7266Japaneseja7267Japaneseja7268Japaneseja7269Japaneseja727Japaneseja7270Japaneseja7271Japaneseja7272Japaneseja7273Japaneseja7274Japaneseja7275Japaneseja7276Japaneseja7277Japaneseja7278Japaneseja7279Japaneseja728Japaneseja7280Japaneseja7281Japaneseja7282Japaneseja7283Japaneseja7284Japaneseja7285Japaneseja7286Japaneseja7287Japaneseja7288Japaneseja7289Japaneseja729Japaneseja7290Japaneseja7291Japaneseja7292Japaneseja7293Japaneseja7294Japaneseja7295Japaneseja7296Japaneseja7297Japaneseja7298Japaneseja7299Japaneseja73Japaneseja730Japaneseja7300Japaneseja7301Japaneseja7302Japaneseja7303Japaneseja7304Japaneseja7305Japaneseja7306Japaneseja7307Japaneseja7308Japaneseja7309Japaneseja731Japaneseja7310Japaneseja7311Japaneseja7312Japaneseja7313Japaneseja7314Japaneseja7315Japaneseja7316Japaneseja7317Japaneseja7318Japaneseja7319Japaneseja732Japaneseja7320Japaneseja7321Japaneseja7322Japaneseja7323Japaneseja7324Japaneseja7325Japaneseja7326Japaneseja7327Japaneseja7328Japaneseja7329Japaneseja733Japaneseja7330Japaneseja7331Japaneseja7332Japaneseja7333Japaneseja7334Japaneseja7335Japaneseja7336Japaneseja7337Japaneseja7338Japaneseja7339Japaneseja734Japaneseja7340Japaneseja7341Japaneseja7342Japaneseja7343Japaneseja7344Japaneseja7345Japaneseja7346Japaneseja7347Japaneseja7348Japaneseja7349Japaneseja735Japaneseja7350Japaneseja7351Japaneseja7352Japaneseja7353Japaneseja7354Japaneseja7355Japaneseja7356Japaneseja7357Japaneseja7358Japaneseja7359Japaneseja736Japaneseja7360Japaneseja7361Japaneseja7362Japaneseja7363Japaneseja7364Japaneseja7365Japaneseja7366Japaneseja7367Japaneseja7368Japaneseja7369Japaneseja737Japaneseja7370Japaneseja7371Japaneseja7372Japaneseja7373Japaneseja7374Japaneseja7375Japaneseja7376Japaneseja7377Japaneseja7378Japaneseja7379Japaneseja738Japaneseja7380Japaneseja7381Japaneseja7382Japaneseja7383Japaneseja7384Japaneseja7385Japaneseja7386Japaneseja7387Japaneseja7388Japaneseja7389Japaneseja739Japaneseja7390Japaneseja7391Japaneseja7392Japaneseja7393Japaneseja7394Japaneseja7395Japaneseja7396Japaneseja7397Japaneseja7398Japaneseja7399Japaneseja74Japaneseja740Japaneseja7400Japaneseja7401Japaneseja7402Japaneseja7403Japaneseja7404Japaneseja7405Japaneseja7406Japaneseja7407Japaneseja7408Japaneseja7409Japaneseja741Japaneseja7410Japaneseja7411Japaneseja7412Japaneseja7413Japaneseja7414Japaneseja7415Japaneseja7416Japaneseja7417Japaneseja7418Japaneseja7419Japaneseja742Japaneseja7420Japaneseja7421Japaneseja7422Japaneseja7423Japaneseja7424Japaneseja7425Japaneseja7426Japaneseja7427Japaneseja7428Japaneseja7429Japaneseja743Japaneseja7430Japaneseja7431Japaneseja7432Japaneseja7433Japaneseja7434Japaneseja7435Japaneseja7436Japaneseja7437Japaneseja7438Japaneseja7439Japaneseja744Japaneseja7440Japaneseja7441Japaneseja7442Japaneseja7443Japaneseja7444Japaneseja7445Japaneseja7446Japaneseja7447Japaneseja7448Japaneseja7449Japaneseja745Japaneseja7450Japaneseja7451Japaneseja7452Japaneseja7453Japaneseja7454Japaneseja7455Japaneseja7456Japaneseja7457Japaneseja7458Japaneseja7459Japaneseja746Japaneseja7460Japaneseja7461Japaneseja7462Japaneseja7463Japaneseja7464Japaneseja7465Japaneseja7466Japaneseja7467Japaneseja7468Japaneseja7469Japaneseja747Japaneseja7470Japaneseja7471Japaneseja7472Japaneseja7473Japaneseja7474Japaneseja7475Japaneseja7476Japaneseja7477Japaneseja7478Japaneseja7479Japaneseja748Japaneseja7480Japaneseja7481Japaneseja7482Japaneseja7483Japaneseja7484Japaneseja7485Japaneseja7486Japaneseja7487Japaneseja7488Japaneseja7489Japaneseja749Japaneseja7490Japaneseja7491Japaneseja7492Japaneseja7493Japaneseja7494Japaneseja7495Japaneseja7496Japaneseja7497Japaneseja7498Japaneseja7499Japaneseja75Japaneseja750Japaneseja7500Japaneseja7501Japaneseja7502Japaneseja7503Japaneseja7504Japaneseja7505Japaneseja7506Japaneseja7507Japaneseja7508Japaneseja7509Japaneseja751Japaneseja7510Japaneseja7511Japaneseja7512Japaneseja7513Japaneseja7514Japaneseja7515Japaneseja7516Japaneseja7517Japaneseja7518Japaneseja7519Japaneseja752Japaneseja7520Japaneseja7521Japaneseja7522Japaneseja7523Japaneseja7524Japaneseja7525Japaneseja7526Japaneseja7527Japaneseja7528Japaneseja7529Japaneseja753Japaneseja7530Japaneseja7531Japaneseja7532Japaneseja7533Japaneseja7534Japaneseja7535Japaneseja7536Japaneseja7537Japaneseja7538Japaneseja7539Japaneseja754Japaneseja7540Japaneseja7541Japaneseja7542Japaneseja7543Japaneseja7544Japaneseja7545Japaneseja7546Japaneseja7547Japaneseja7548Japaneseja7549Japaneseja755Japaneseja7550Japaneseja7551Japaneseja7552Japaneseja7553Japaneseja7554Japaneseja7555Japaneseja7556Japaneseja7557Japaneseja7558Japaneseja7559Japaneseja756Japaneseja7560Japaneseja7561Japaneseja7562Japaneseja7563Japaneseja7564Japaneseja7565Japaneseja7566Japaneseja7567Japaneseja7568Japaneseja7569Japaneseja757Japaneseja7570Japaneseja7571Japaneseja7572Japaneseja7573Japaneseja7574Japaneseja7575Japaneseja7576Japaneseja7577Japaneseja7578Japaneseja7579Japaneseja758Japaneseja7580Japaneseja7581Japaneseja7582Japaneseja7583Japaneseja7584Japaneseja7585Japaneseja7586Japaneseja7587Japaneseja7588Japaneseja7589Japaneseja759Japaneseja7590Japaneseja7591Japaneseja7592Japaneseja7593Japaneseja7594Japaneseja7595Japaneseja7596Japaneseja7597Japaneseja7598Japaneseja7599Japaneseja76Japaneseja760Japaneseja7600Japaneseja7601Japaneseja7602Japaneseja7603Japaneseja7604Japaneseja7605Japaneseja7606Japaneseja7607Japaneseja7608Japaneseja7609Japaneseja761Japaneseja7610Japaneseja7611Japaneseja7612Japaneseja7613Japaneseja7614Japaneseja7615Japaneseja7616Japaneseja7617Japaneseja7618Japaneseja7619Japaneseja762Japaneseja7620Japaneseja7621Japaneseja7622Japaneseja7623Japaneseja7624Japaneseja7625Japaneseja7626Japaneseja7627Japaneseja7628Japaneseja7629Japaneseja763Japaneseja7630Japaneseja7631Japaneseja7632Japaneseja7633Japaneseja7634Japaneseja7635Japaneseja7636Japaneseja7637Japaneseja7638Japaneseja7639Japaneseja764Japaneseja7640Japaneseja7641Japaneseja7642Japaneseja7643Japaneseja7644Japaneseja7645Japaneseja7646Japaneseja7647Japaneseja7648Japaneseja7649Japaneseja765Japaneseja7650Japaneseja7651Japaneseja7652Japaneseja7653Japaneseja7654Japaneseja7655Japaneseja7656Japaneseja7657Japaneseja7658Japaneseja7659Japaneseja766Japaneseja7660Japaneseja7661Japaneseja7662Japaneseja7663Japaneseja7664Japaneseja7665Japaneseja7666Japaneseja7667Japaneseja7668Japaneseja7669Japaneseja767Japaneseja7670Japaneseja7671Japaneseja7672Japaneseja7673Japaneseja7674Japaneseja7675Japaneseja7676Japaneseja7677Japaneseja7678Japaneseja7679Japaneseja768Japaneseja7680Japaneseja7681Japaneseja7682Japaneseja7683Japaneseja7684Japaneseja7685Japaneseja7686Japaneseja7687Japaneseja7688Japaneseja7689Japaneseja769Japaneseja7690Japaneseja7691Japaneseja7692Japaneseja7693Japaneseja7694Japaneseja7695Japaneseja7696Japaneseja7697Japaneseja7698Japaneseja7699Japaneseja77Japaneseja770Japaneseja7700Japaneseja7701Japaneseja7702Japaneseja7703Japaneseja7704Japaneseja7705Japaneseja7706Japaneseja7707Japaneseja7708Japaneseja7709Japaneseja771Japaneseja7710Japaneseja7711Japaneseja7712Japaneseja7713Japaneseja7714Japaneseja7715Japaneseja7716Japaneseja7717Japaneseja7718Japaneseja7719Japaneseja772Japaneseja7720Japaneseja7721Japaneseja7722Japaneseja7723Japaneseja7724Japaneseja7725Japaneseja7726Japaneseja7727Japaneseja7728Japaneseja7729Japaneseja773Japaneseja7730Japaneseja7731Japaneseja7732Japaneseja7733Japaneseja7734Japaneseja7735Japaneseja7736Japaneseja7737Japaneseja7738Japaneseja7739Japaneseja774Japaneseja7740Japaneseja7741Japaneseja7742Japaneseja7743Japaneseja7744Japaneseja7745Japaneseja7746Japaneseja7747Japaneseja7748Japaneseja7749Japaneseja775Japaneseja7750Japaneseja7751Japaneseja7752Japaneseja7753Japaneseja7754Japaneseja7755Japaneseja7756Japaneseja7757Japaneseja7758Japaneseja7759Japaneseja776Japaneseja7760Japaneseja7761Japaneseja7762Japaneseja7763Japaneseja7764Japaneseja7765Japaneseja7766Japaneseja7767Japaneseja7768Japaneseja7769Japaneseja777Japaneseja7770Japaneseja7771Japaneseja7772Japaneseja7773Japaneseja7774Japaneseja7775Japaneseja7776Japaneseja7777Japaneseja7778Japaneseja7779Japaneseja778Japaneseja7780Japaneseja7781Japaneseja7782Japaneseja7783Japaneseja7784Japaneseja7785Japaneseja7786Japaneseja7787Japaneseja7788Japaneseja7789Japaneseja779Japaneseja7790Japaneseja7791Japaneseja7792Japaneseja7793Japaneseja7794Japaneseja7795Japaneseja7796Japaneseja7797Japaneseja7798Japaneseja7799Japaneseja78Japaneseja780Japaneseja7800Japaneseja7801Japaneseja7802Japaneseja7803Japaneseja7804Japaneseja7805Japaneseja7806Japaneseja7807Japaneseja7808Japaneseja7809Japaneseja781Japaneseja7810Japaneseja7811Japaneseja7812Japaneseja7813Japaneseja7814Japaneseja7815Japaneseja7816Japaneseja7817Japaneseja7818Japaneseja7819Japaneseja782Japaneseja7820Japaneseja7821Japaneseja7822Japaneseja7823Japaneseja7824Japaneseja7825Japaneseja7826Japaneseja7827Japaneseja7828Japaneseja7829Japaneseja783Japaneseja7830Japaneseja7831Japaneseja7832Japaneseja7833Japaneseja7834Japaneseja7835Japaneseja7836Japaneseja7837Japaneseja7838Japaneseja7839Japaneseja784Japaneseja7840Japaneseja7841Japaneseja7842Japaneseja7843Japaneseja7844Japaneseja7845Japaneseja7846Japaneseja7847Japaneseja7848Japaneseja7849Japaneseja785Japaneseja7850Japaneseja7851Japaneseja7852Japaneseja7853Japaneseja7854Japaneseja7855Japaneseja7856Japaneseja7857Japaneseja7858Japaneseja7859Japaneseja786Japaneseja7860Japaneseja7861Japaneseja7862Japaneseja7863Japaneseja7864Japaneseja7865Japaneseja7866Japaneseja7867Japaneseja7868Japaneseja7869Japaneseja787Japaneseja7870Japaneseja7871Japaneseja7872Japaneseja7873Japaneseja7874Japaneseja7875Japaneseja7876Japaneseja7877Japaneseja7878Japaneseja7879Japaneseja788Japaneseja7880Japaneseja7881Japaneseja7882Japaneseja7883Japaneseja7884Japaneseja7885Japaneseja7886Japaneseja7887Japaneseja7888Japaneseja7889Japaneseja789Japaneseja7890Japaneseja7891Japaneseja7892Japaneseja7893Japaneseja7894Japaneseja7895Japaneseja7896Japaneseja7897Japaneseja7898Japaneseja7899Japaneseja79Japaneseja790Japaneseja7900Japaneseja7901Japaneseja7902Japaneseja7903Japaneseja7904Japaneseja7905Japaneseja7906Japaneseja7907Japaneseja7908Japaneseja7909Japaneseja791Japaneseja7910Japaneseja7911Japaneseja7912Japaneseja7913Japaneseja7914Japaneseja7915Japaneseja7916Japaneseja7917Japaneseja7918Japaneseja7919Japaneseja792Japaneseja7920Japaneseja7921Japaneseja7922Japaneseja7923Japaneseja7924Japaneseja7925Japaneseja7926Japaneseja7927Japaneseja7928Japaneseja7929Japaneseja793Japaneseja7930Japaneseja7931Japaneseja7932Japaneseja7933Japaneseja7934Japaneseja7935Japaneseja7936Japaneseja7937Japaneseja7938Japaneseja7939Japaneseja794Japaneseja7940Japaneseja7941Japaneseja7942Japaneseja7943Japaneseja7944Japaneseja7945Japaneseja7946Japaneseja7947Japaneseja7948Japaneseja7949Japaneseja795Japaneseja7950Japaneseja7951Japaneseja7952Japaneseja7953Japaneseja7954Japaneseja7955Japaneseja7956Japaneseja7957Japaneseja7958Japaneseja7959Japaneseja796Japaneseja7960Japaneseja7961Japaneseja7962Japaneseja7963Japaneseja7964Japaneseja7965Japaneseja7966Japaneseja7967Japaneseja7968Japaneseja7969Japaneseja797Japaneseja7970Japaneseja7971Japaneseja7972Japaneseja7973Japaneseja7974Japaneseja7975Japaneseja7976Japaneseja7977Japaneseja7978Japaneseja7979Japaneseja798Japaneseja7980Japaneseja7981Japaneseja7982Japaneseja7983Japaneseja7984Japaneseja7985Japaneseja7986Japaneseja7987Japaneseja7988Japaneseja7989Japaneseja799Japaneseja7990Japaneseja7991Japaneseja7992Japaneseja7993Japaneseja7994Japaneseja7995Japaneseja7996Japaneseja7997Japaneseja7998Japaneseja7999Japaneseja8Japaneseja80Japaneseja800Japaneseja8000Japaneseja8001Japaneseja8002Japaneseja8003Japaneseja8004Japaneseja8005Japaneseja8006Japaneseja8007Japaneseja8008Japaneseja8009Japaneseja801Japaneseja8010Japaneseja8011Japaneseja8012Japaneseja8013Japaneseja8014Japaneseja8015Japaneseja8016Japaneseja8017Japaneseja8018Japaneseja8019Japaneseja802Japaneseja8020Japaneseja8021Japaneseja8022Japaneseja8023Japaneseja8024Japaneseja8025Japaneseja8026Japaneseja8027Japaneseja8028Japaneseja8029Japaneseja803Japaneseja8030Japaneseja8031Japaneseja8032Japaneseja8033Japaneseja8034Japaneseja8035Japaneseja8036Japaneseja8037Japaneseja8038Japaneseja8039Japaneseja804Japaneseja8040Japaneseja8041Japaneseja8042Japaneseja8043Japaneseja8044Japaneseja8045Japaneseja8046Japaneseja8047Japaneseja8048Japaneseja8049Japaneseja805Japaneseja8050Japaneseja8051Japaneseja8052Japaneseja8053Japaneseja8054Japaneseja8055Japaneseja8056Japaneseja8057Japaneseja8058Japaneseja8059Japaneseja806Japaneseja8060Japaneseja8061Japaneseja8062Japaneseja8063Japaneseja8064Japaneseja8065Japaneseja8066Japaneseja8067Japaneseja8068Japaneseja8069Japaneseja807Japaneseja8070Japaneseja8071Japaneseja8072Japaneseja8073Japaneseja8074Japaneseja8075Japaneseja8076Japaneseja8077Japaneseja8078Japaneseja8079Japaneseja808Japaneseja8080Japaneseja8081Japaneseja8082Japaneseja8083Japaneseja8084Japaneseja8085Japaneseja8086Japaneseja8087Japaneseja8088Japaneseja8089Japaneseja809Japaneseja8090Japaneseja8091Japaneseja8092Japaneseja8093Japaneseja8094Japaneseja8095Japaneseja8096Japaneseja8097Japaneseja8098Japaneseja8099Japaneseja81Japaneseja810Japaneseja8100Japaneseja8101Japaneseja8102Japaneseja8103Japaneseja8104Japaneseja8105Japaneseja8106Japaneseja8107Japaneseja8108Japaneseja8109Japaneseja811Japaneseja8110Japaneseja8111Japaneseja8112Japaneseja8113Japaneseja8114Japaneseja8115Japaneseja8116Japaneseja8117Japaneseja8118Japaneseja8119Japaneseja812Japaneseja8120Japaneseja8121Japaneseja8122Japaneseja8123Japaneseja8124Japaneseja8125Japaneseja8126Japaneseja8127Japaneseja8128Japaneseja8129Japaneseja813Japaneseja8130Japaneseja8131Japaneseja8132Japaneseja8133Japaneseja8134Japaneseja8135Japaneseja8136Japaneseja8137Japaneseja8138Japaneseja8139Japaneseja814Japaneseja8140Japaneseja8141Japaneseja8142Japaneseja8143Japaneseja8144Japaneseja8145Japaneseja8146Japaneseja8147Japaneseja8148Japaneseja8149Japaneseja815Japaneseja8150Japaneseja8151Japaneseja8152Japaneseja8153Japaneseja8154Japaneseja8155Japaneseja8156Japaneseja8157Japaneseja8158Japaneseja8159Japaneseja816Japaneseja8160Japaneseja8161Japaneseja8162Japaneseja8163Japaneseja8164Japaneseja8165Japaneseja8166Japaneseja8167Japaneseja8168Japaneseja8169Japaneseja817Japaneseja8170Japaneseja8171Japaneseja8172Japaneseja8173Japaneseja8174Japaneseja8175Japaneseja8176Japaneseja8177Japaneseja8178Japaneseja8179Japaneseja818Japaneseja8180Japaneseja8181Japaneseja8182Japaneseja8183Japaneseja8184Japaneseja8185Japaneseja8186Japaneseja8187Japaneseja8188Japaneseja8189Japaneseja819Japaneseja8190Japaneseja8191Japaneseja82Japaneseja820Japaneseja821Japaneseja822Japaneseja823Japaneseja824Japaneseja825Japaneseja826Japaneseja827Japaneseja828Japaneseja829Japaneseja83Japaneseja830Japaneseja831Japaneseja832Japaneseja833Japaneseja834Japaneseja835Japaneseja836Japaneseja837Japaneseja838Japaneseja839Japaneseja84Japaneseja840Japaneseja841Japaneseja842Japaneseja843Japaneseja844Japaneseja845Japaneseja846Japaneseja847Japaneseja848Japaneseja849Japaneseja85Japaneseja850Japaneseja851Japaneseja852Japaneseja853Japaneseja854Japaneseja855Japaneseja856Japaneseja857Japaneseja858Japaneseja859Japaneseja86Japaneseja860Japaneseja861Japaneseja862Japaneseja863Japaneseja864Japaneseja865Japaneseja866Japaneseja867Japaneseja868Japaneseja869Japaneseja87Japaneseja870Japaneseja871Japaneseja872Japaneseja873Japaneseja874Japaneseja875Japaneseja876Japaneseja877Japaneseja878Japaneseja879Japaneseja88Japaneseja880Japaneseja881Japaneseja882Japaneseja883Japaneseja884Japaneseja885Japaneseja886Japaneseja887Japaneseja888Japaneseja889Japaneseja89Japaneseja890Japaneseja891Japaneseja892Japaneseja893Japaneseja894Japaneseja895Japaneseja896Japaneseja897Japaneseja898Japaneseja899Japaneseja9Japaneseja90Japaneseja900Japaneseja901Japaneseja902Japaneseja903Japaneseja904Japaneseja905Japaneseja906Japaneseja907Japaneseja908Japaneseja909Japaneseja91Japaneseja910Japaneseja911Japaneseja912Japaneseja913Japaneseja914Japaneseja915Japaneseja916Japaneseja917Japaneseja918Japaneseja919Japaneseja92Japaneseja920Japaneseja921Japaneseja922Japaneseja923Japaneseja924Japaneseja925Japaneseja926Japaneseja927Japaneseja928Japaneseja929Japaneseja93Japaneseja930Japaneseja931Japaneseja932Japaneseja933Japaneseja934Japaneseja935Japaneseja936Japaneseja937Japaneseja938Japaneseja939Japaneseja94Japaneseja940Japaneseja941Japaneseja942Japaneseja943Japaneseja944Japaneseja945Japaneseja946Japaneseja947Japaneseja948Japaneseja949Japaneseja95Japaneseja950Japaneseja951Japaneseja952Japaneseja953Japaneseja954Japaneseja955Japaneseja956Japaneseja957Japaneseja958Japaneseja959Japaneseja96Japaneseja960Japaneseja961Japaneseja962Japaneseja963Japaneseja964Japaneseja965Japaneseja966Japaneseja967Japaneseja968Japaneseja969Japaneseja97Japaneseja970Japaneseja971Japaneseja972Japaneseja973Japaneseja974Japaneseja975Japaneseja976Japaneseja977Japaneseja978Japaneseja979Japaneseja98Japaneseja980Japaneseja981Japaneseja982Japaneseja983Japaneseja984Japaneseja985Japaneseja986Japaneseja987Japaneseja988Japaneseja989Japaneseja99Japaneseja990Japaneseja991Japaneseja992Japaneseja993Japaneseja994Japaneseja995Japaneseja996Japaneseja997Japaneseja998Japaneseja999Japaneseru0Russianru1Russianru10Russianru100Russianru1000Russianru1001Russianru1002Russianru1003Russianru1004Russianru1005Russianru1006Russianru1007Russianru1008Russianru1009Russianru101Russianru1010Russianru1011Russianru1012Russianru1013Russianru1014Russianru1015Russianru1016Russianru1017Russianru1018Russianru1019Russianru102Russianru1020Russianru1021Russianru1022Russianru1023Russianru1024Russianru1025Russianru1026Russianru1027Russianru1028Russianru1029Russianru103Russianru1030Russianru1031Russianru1032Russianru1033Russianru1034Russianru1035Russianru1036Russianru1037Russianru1038Russianru1039Russianru104Russianru1040Russianru1041Russianru1042Russianru1043Russianru1044Russianru1045Russianru1046Russianru1047Russianru1048Russianru1049Russianru105Russianru1050Russianru1051Russianru1052Russianru1053Russianru1054Russianru1055Russianru1056Russianru1057Russianru1058Russianru1059Russianru106Russianru1060Russianru1061Russianru1062Russianru1063Russianru1064Russianru1065Russianru1066Russianru1067Russianru1068Russianru1069Russianru107Russianru1070Russianru1071Russianru1072Russianru1073Russianru1074Russianru1075Russianru1076Russianru1077Russianru1078Russianru1079Russianru108Russianru1080Russianru1081Russianru1082Russianru1083Russianru1084Russianru1085Russianru1086Russianru1087Russianru1088Russianru1089Russianru109Russianru1090Russianru1091Russianru1092Russianru1093Russianru1094Russianru1095Russianru1096Russianru1097Russianru1098Russianru1099Russianru11Russianru110Russianru1100Russianru1101Russianru1102Russianru1103Russianru1104Russianru1105Russianru1106Russianru1107Russianru1108Russianru1109Russianru111Russianru1110Russianru1111Russianru1112Russianru1113Russianru1114Russianru1115Russianru1116Russianru1117Russianru1118Russianru1119Russianru112Russianru1120Russianru1121Russianru1122Russianru1123Russianru1124Russianru1125Russianru1126Russianru1127Russianru1128Russianru1129Russianru113Russianru1130Russianru1131Russianru1132Russianru1133Russianru1134Russianru1135Russianru1136Russianru1137Russianru1138Russianru1139Russianru114Russianru1140Russianru1141Russianru1142Russianru1143Russianru1144Russianru1145Russianru1146Russianru1147Russianru1148Russianru1149Russianru115Russianru1150Russianru1151Russianru1152Russianru1153Russianru1154Russianru1155Russianru1156Russianru1157Russianru1158Russianru1159Russianru116Russianru1160Russianru1161Russianru1162Russianru1163Russianru1164Russianru1165Russianru1166Russianru1167Russianru1168Russianru1169Russianru117Russianru1170Russianru1171Russianru1172Russianru1173Russianru1174Russianru1175Russianru1176Russianru1177Russianru1178Russianru1179Russianru118Russianru1180Russianru1181Russianru1182Russianru1183Russianru1184Russianru1185Russianru1186Russianru1187Russianru1188Russianru1189Russianru119Russianru1190Russianru1191Russianru1192Russianru1193Russianru1194Russianru1195Russianru1196Russianru1197Russianru1198Russianru1199Russianru12Russianru120Russianru1200Russianru1201Russianru1202Russianru1203Russianru1204Russianru1205Russianru1206Russianru1207Russianru1208Russianru1209Russianru121Russianru1210Russianru1211Russianru1212Russianru1213Russianru1214Russianru1215Russianru1216Russianru1217Russianru1218Russianru1219Russianru122Russianru1220Russianru1221Russianru1222Russianru1223Russianru1224Russianru1225Russianru1226Russianru1227Russianru1228Russianru1229Russianru123Russianru1230Russianru1231Russianru1232Russianru1233Russianru1234Russianru1235Russianru1236Russianru1237Russianru1238Russianru1239Russianru124Russianru1240Russianru1241Russianru1242Russianru1243Russianru1244Russianru1245Russianru1246Russianru1247Russianru1248Russianru1249Russianru125Russianru1250Russianru1251Russianru1252Russianru1253Russianru1254Russianru1255Russianru1256Russianru1257Russianru1258Russianru1259Russianru126Russianru1260Russianru1261Russianru1262Russianru1263Russianru1264Russianru1265Russianru1266Russianru1267Russianru1268Russianru1269Russianru127Russianru1270Russianru1271Russianru1272Russianru1273Russianru1274Russianru1275Russianru1276Russianru1277Russianru1278Russianru1279Russianru128Russianru1280Russianru1281Russianru1282Russianru1283Russianru1284Russianru1285Russianru1286Russianru1287Russianru1288Russianru1289Russianru129Russianru1290Russianru1291Russianru1292Russianru1293Russianru1294Russianru1295Russianru1296Russianru1297Russianru1298Russianru1299Russianru13Russianru130Russianru1300Russianru1301Russianru1302Russianru1303Russianru1304Russianru1305Russianru1306Russianru1307Russianru1308Russianru1309Russianru131Russianru1310Russianru1311Russianru1312Russianru1313Russianru1314Russianru1315Russianru1316Russianru1317Russianru1318Russianru1319Russianru132Russianru1320Russianru1321Russianru1322Russianru1323Russianru1324Russianru1325Russianru1326Russianru1327Russianru1328Russianru1329Russianru133Russianru1330Russianru1331Russianru1332Russianru1333Russianru1334Russianru1335Russianru1336Russianru1337Russianru1338Russianru1339Russianru134Russianru1340Russianru1341Russianru1342Russianru1343Russianru1344Russianru1345Russianru1346Russianru1347Russianru1348Russianru1349Russianru135Russianru1350Russianru1351Russianru1352Russianru1353Russianru1354Russianru1355Russianru1356Russianru1357Russianru1358Russianru1359Russianru136Russianru1360Russianru1361Russianru1362Russianru1363Russianru1364Russianru1365Russianru1366Russianru1367Russianru1368Russianru1369Russianru137Russianru1370Russianru1371Russianru1372Russianru1373Russianru1374Russianru1375Russianru1376Russianru1377Russianru1378Russianru1379Russianru138Russianru1380Russianru1381Russianru1382Russianru1383Russianru1384Russianru1385Russianru1386Russianru1387Russianru1388Russianru1389Russianru139Russianru1390Russianru1391Russianru1392Russianru1393Russianru1394Russianru1395Russianru1396Russianru1397Russianru1398Russianru1399Russianru14Russianru140Russianru1400Russianru1401Russianru1402Russianru1403Russianru1404Russianru1405Russianru1406Russianru1407Russianru1408Russianru1409Russianru141Russianru1410Russianru1411Russianru1412Russianru1413Russianru1414Russianru1415Russianru1416Russianru1417Russianru1418Russianru1419Russianru142Russianru1420Russianru1421Russianru1422Russianru1423Russianru1424Russianru1425Russianru1426Russianru1427Russianru1428Russianru1429Russianru143Russianru1430Russianru1431Russianru1432Russianru1433Russianru1434Russianru1435Russianru1436Russianru1437Russianru1438Russianru1439Russianru144Russianru1440Russianru1441Russianru1442Russianru1443Russianru1444Russianru1445Russianru1446Russianru1447Russianru1448Russianru1449Russianru145Russianru1450Russianru1451Russianru1452Russianru1453Russianru1454Russianru1455Russianru1456Russianru1457Russianru1458Russianru1459Russianru146Russianru1460Russianru1461Russianru1462Russianru1463Russianru1464Russianru1465Russianru1466Russianru1467Russianru1468Russianru1469Russianru147Russianru1470Russianru1471Russianru1472Russianru1473Russianru1474Russianru1475Russianru1476Russianru1477Russianru1478Russianru1479Russianru148Russianru1480Russianru1481Russianru1482Russianru1483Russianru1484Russianru1485Russianru1486Russianru1487Russianru1488Russianru1489Russianru149Russianru1490Russianru1491Russianru1492Russianru1493Russianru1494Russianru1495Russianru1496Russianru1497Russianru1498Russianru1499Russianru15Russianru150Russianru1500Russianru1501Russianru1502Russianru1503Russianru1504Russianru1505Russianru1506Russianru1507Russianru1508Russianru1509Russianru151Russianru1510Russianru1511Russianru1512Russianru1513Russianru1514Russianru1515Russianru1516Russianru1517Russianru1518Russianru1519Russianru152Russianru1520Russianru1521Russianru1522Russianru1523Russianru1524Russianru1525Russianru1526Russianru1527Russianru1528Russianru1529Russianru153Russianru1530Russianru1531Russianru1532Russianru1533Russianru1534Russianru1535Russianru1536Russianru1537Russianru1538Russianru1539Russianru154Russianru1540Russianru1541Russianru1542Russianru1543Russianru1544Russianru1545Russianru1546Russianru1547Russianru1548Russianru1549Russianru155Russianru1550Russianru1551Russianru1552Russianru1553Russianru1554Russianru1555Russianru1556Russianru1557Russianru1558Russianru1559Russianru156Russianru1560Russianru1561Russianru1562Russianru1563Russianru1564Russianru1565Russianru1566Russianru1567Russianru1568Russianru1569Russianru157Russianru1570Russianru1571Russianru1572Russianru1573Russianru1574Russianru1575Russianru1576Russianru1577Russianru1578Russianru1579Russianru158Russianru1580Russianru1581Russianru1582Russianru1583Russianru1584Russianru1585Russianru1586Russianru1587Russianru1588Russianru1589Russianru159Russianru1590Russianru1591Russianru1592Russianru1593Russianru1594Russianru1595Russianru1596Russianru1597Russianru1598Russianru1599Russianru16Russianru160Russianru1600Russianru1601Russianru1602Russianru1603Russianru1604Russianru1605Russianru1606Russianru1607Russianru1608Russianru1609Russianru161Russianru1610Russianru1611Russianru1612Russianru1613Russianru1614Russianru1615Russianru1616Russianru1617Russianru1618Russianru1619Russianru162Russianru1620Russianru1621Russianru1622Russianru1623Russianru1624Russianru1625Russianru1626Russianru1627Russianru1628Russianru1629Russianru163Russianru1630Russianru1631Russianru1632Russianru1633Russianru1634Russianru1635Russianru1636Russianru1637Russianru1638Russianru1639Russianru164Russianru1640Russianru1641Russianru1642Russianru1643Russianru1644Russianru1645Russianru1646Russianru1647Russianru1648Russianru1649Russianru165Russianru1650Russianru1651Russianru1652Russianru1653Russianru1654Russianru1655Russianru1656Russianru1657Russianru1658Russianru1659Russianru166Russianru1660Russianru1661Russianru1662Russianru1663Russianru1664Russianru1665Russianru1666Russianru1667Russianru1668Russianru1669Russianru167Russianru1670Russianru1671Russianru1672Russianru1673Russianru1674Russianru1675Russianru1676Russianru1677Russianru1678Russianru1679Russianru168Russianru1680Russianru1681Russianru1682Russianru1683Russianru1684Russianru1685Russianru1686Russianru1687Russianru1688Russianru1689Russianru169Russianru1690Russianru1691Russianru1692Russianru1693Russianru1694Russianru1695Russianru1696Russianru1697Russianru1698Russianru1699Russianru17Russianru170Russianru1700Russianru1701Russianru1702Russianru1703Russianru1704Russianru1705Russianru1706Russianru1707Russianru1708Russianru1709Russianru171Russianru1710Russianru1711Russianru1712Russianru1713Russianru1714Russianru1715Russianru1716Russianru1717Russianru1718Russianru1719Russianru172Russianru1720Russianru1721Russianru1722Russianru1723Russianru1724Russianru1725Russianru1726Russianru1727Russianru1728Russianru1729Russianru173Russianru1730Russianru1731Russianru1732Russianru1733Russianru1734Russianru1735Russianru1736Russianru1737Russianru1738Russianru1739Russianru174Russianru1740Russianru1741Russianru1742Russianru1743Russianru1744Russianru1745Russianru1746Russianru1747Russianru1748Russianru1749Russianru175Russianru1750Russianru1751Russianru1752Russianru1753Russianru1754Russianru1755Russianru1756Russianru1757Russianru1758Russianru1759Russianru176Russianru1760Russianru1761Russianru1762Russianru1763Russianru1764Russianru1765Russianru1766Russianru1767Russianru1768Russianru1769Russianru177Russianru1770Russianru1771Russianru1772Russianru1773Russianru1774Russianru1775Russianru1776Russianru1777Russianru1778Russianru1779Russianru178Russianru1780Russianru1781Russianru1782Russianru1783Russianru1784Russianru1785Russianru1786Russianru1787Russianru1788Russianru1789Russianru179Russianru1790Russianru1791Russianru1792Russianru1793Russianru1794Russianru1795Russianru1796Russianru1797Russianru1798Russianru1799Russianru18Russianru180Russianru1800Russianru1801Russianru1802Russianru1803Russianru1804Russianru1805Russianru1806Russianru1807Russianru1808Russianru1809Russianru181Russianru1810Russianru1811Russianru1812Russianru1813Russianru1814Russianru1815Russianru1816Russianru1817Russianru1818Russianru1819Russianru182Russianru1820Russianru1821Russianru1822Russianru1823Russianru1824Russianru1825Russianru1826Russianru1827Russianru1828Russianru1829Russianru183Russianru1830Russianru1831Russianru1832Russianru1833Russianru1834Russianru1835Russianru1836Russianru1837Russianru1838Russianru1839Russianru184Russianru1840Russianru1841Russianru1842Russianru1843Russianru1844Russianru1845Russianru1846Russianru1847Russianru1848Russianru1849Russianru185Russianru1850Russianru1851Russianru1852Russianru1853Russianru1854Russianru1855Russianru1856Russianru1857Russianru1858Russianru1859Russianru186Russianru1860Russianru1861Russianru1862Russianru1863Russianru1864Russianru1865Russianru1866Russianru1867Russianru1868Russianru1869Russianru187Russianru1870Russianru1871Russianru1872Russianru1873Russianru1874Russianru1875Russianru1876Russianru1877Russianru1878Russianru1879Russianru188Russianru1880Russianru1881Russianru1882Russianru1883Russianru1884Russianru1885Russianru1886Russianru1887Russianru1888Russianru1889Russianru189Russianru1890Russianru1891Russianru1892Russianru1893Russianru1894Russianru1895Russianru1896Russianru1897Russianru1898Russianru1899Russianru19Russianru190Russianru1900Russianru1901Russianru1902Russianru1903Russianru1904Russianru1905Russianru1906Russianru1907Russianru1908Russianru1909Russianru191Russianru1910Russianru1911Russianru1912Russianru1913Russianru1914Russianru1915Russianru1916Russianru1917Russianru1918Russianru1919Russianru192Russianru1920Russianru1921Russianru1922Russianru1923Russianru1924Russianru1925Russianru1926Russianru1927Russianru1928Russianru1929Russianru193Russianru1930Russianru1931Russianru1932Russianru1933Russianru1934Russianru1935Russianru1936Russianru1937Russianru1938Russianru1939Russianru194Russianru1940Russianru1941Russianru1942Russianru1943Russianru1944Russianru1945Russianru1946Russianru1947Russianru1948Russianru1949Russianru195Russianru1950Russianru1951Russianru1952Russianru1953Russianru1954Russianru1955Russianru1956Russianru1957Russianru1958Russianru1959Russianru196Russianru1960Russianru1961Russianru1962Russianru1963Russianru1964Russianru1965Russianru1966Russianru1967Russianru1968Russianru1969Russianru197Russianru1970Russianru1971Russianru1972Russianru1973Russianru1974Russianru1975Russianru1976Russianru1977Russianru1978Russianru1979Russianru198Russianru1980Russianru1981Russianru1982Russianru1983Russianru1984Russianru1985Russianru1986Russianru1987Russianru1988Russianru1989Russianru199Russianru1990Russianru1991Russianru1992Russianru1993Russianru1994Russianru1995Russianru1996Russianru1997Russianru1998Russianru1999Russianru2Russianru20Russianru200Russianru2000Russianru2001Russianru2002Russianru2003Russianru2004Russianru2005Russianru2006Russianru2007Russianru2008Russianru2009Russianru201Russianru2010Russianru2011Russianru2012Russianru2013Russianru2014Russianru2015Russianru2016Russianru2017Russianru2018Russianru2019Russianru202Russianru2020Russianru2021Russianru2022Russianru2023Russianru2024Russianru2025Russianru2026Russianru2027Russianru2028Russianru2029Russianru203Russianru2030Russianru2031Russianru2032Russianru2033Russianru2034Russianru2035Russianru2036Russianru2037Russianru2038Russianru2039Russianru204Russianru2040Russianru2041Russianru2042Russianru2043Russianru2044Russianru2045Russianru2046Russianru2047Russianru2048Russianru2049Russianru205Russianru2050Russianru2051Russianru2052Russianru2053Russianru2054Russianru2055Russianru2056Russianru2057Russianru2058Russianru2059Russianru206Russianru2060Russianru2061Russianru2062Russianru2063Russianru2064Russianru2065Russianru2066Russianru2067Russianru2068Russianru2069Russianru207Russianru2070Russianru2071Russianru2072Russianru2073Russianru2074Russianru2075Russianru2076Russianru2077Russianru2078Russianru2079Russianru208Russianru2080Russianru2081Russianru2082Russianru2083Russianru2084Russianru2085Russianru2086Russianru2087Russianru2088Russianru2089Russianru209Russianru2090Russianru2091Russianru2092Russianru2093Russianru2094Russianru2095Russianru2096Russianru2097Russianru2098Russianru2099Russianru21Russianru210Russianru2100Russianru2101Russianru2102Russianru2103Russianru2104Russianru2105Russianru2106Russianru2107Russianru2108Russianru2109Russianru211Russianru2110Russianru2111Russianru2112Russianru2113Russianru2114Russianru2115Russianru2116Russianru2117Russianru2118Russianru2119Russianru212Russianru2120Russianru2121Russianru2122Russianru2123Russianru2124Russianru2125Russianru2126Russianru2127Russianru2128Russianru2129Russianru213Russianru2130Russianru2131Russianru2132Russianru2133Russianru2134Russianru2135Russianru2136Russianru2137Russianru2138Russianru2139Russianru214Russianru2140Russianru2141Russianru2142Russianru2143Russianru2144Russianru2145Russianru2146Russianru2147Russianru2148Russianru2149Russianru215Russianru2150Russianru2151Russianru2152Russianru2153Russianru2154Russianru2155Russianru2156Russianru2157Russianru2158Russianru2159Russianru216Russianru2160Russianru2161Russianru2162Russianru2163Russianru2164Russianru2165Russianru2166Russianru2167Russianru2168Russianru2169Russianru217Russianru2170Russianru2171Russianru2172Russianru2173Russianru2174Russianru2175Russianru2176Russianru2177Russianru2178Russianru2179Russianru218Russianru2180Russianru2181Russianru2182Russianru2183Russianru2184Russianru2185Russianru2186Russianru2187Russianru2188Russianru2189Russianru219Russianru2190Russianru2191Russianru2192Russianru2193Russianru2194Russianru2195Russianru2196Russianru2197Russianru2198Russianru2199Russianru22Russianru220Russianru2200Russianru2201Russianru2202Russianru2203Russianru2204Russianru2205Russianru2206Russianru2207Russianru2208Russianru2209Russianru221Russianru2210Russianru2211Russianru2212Russianru2213Russianru2214Russianru2215Russianru2216Russianru2217Russianru2218Russianru2219Russianru222Russianru2220Russianru2221Russianru2222Russianru2223Russianru2224Russianru2225Russianru2226Russianru2227Russianru2228Russianru2229Russianru223Russianru2230Russianru2231Russianru2232Russianru2233Russianru2234Russianru2235Russianru2236Russianru2237Russianru2238Russianru2239Russianru224Russianru2240Russianru2241Russianru2242Russianru2243Russianru2244Russianru2245Russianru2246Russianru2247Russianru2248Russianru2249Russianru225Russianru2250Russianru2251Russianru2252Russianru2253Russianru2254Russianru2255Russianru2256Russianru2257Russianru2258Russianru2259Russianru226Russianru2260Russianru2261Russianru2262Russianru2263Russianru2264Russianru2265Russianru2266Russianru2267Russianru2268Russianru2269Russianru227Russianru2270Russianru2271Russianru2272Russianru2273Russianru2274Russianru2275Russianru2276Russianru2277Russianru2278Russianru2279Russianru228Russianru2280Russianru2281Russianru2282Russianru2283Russianru2284Russianru2285Russianru2286Russianru2287Russianru2288Russianru2289Russianru229Russianru2290Russianru2291Russianru2292Russianru2293Russianru2294Russianru2295Russianru2296Russianru2297Russianru2298Russianru2299Russianru23Russianru230Russianru2300Russianru2301Russianru2302Russianru2303Russianru2304Russianru2305Russianru2306Russianru2307Russianru2308Russianru2309Russianru231Russianru2310Russianru2311Russianru2312Russianru2313Russianru2314Russianru2315Russianru2316Russianru2317Russianru2318Russianru2319Russianru232Russianru2320Russianru2321Russianru2322Russianru2323Russianru2324Russianru2325Russianru2326Russianru2327Russianru2328Russianru2329Russianru233Russianru2330Russianru2331Russianru2332Russianru2333Russianru2334Russianru2335Russianru2336Russianru2337Russianru2338Russianru2339Russianru234Russianru2340Russianru2341Russianru2342Russianru2343Russianru2344Russianru2345Russianru2346Russianru2347Russianru2348Russianru2349Russianru235Russianru2350Russianru2351Russianru2352Russianru2353Russianru2354Russianru2355Russianru2356Russianru2357Russianru2358Russianru2359Russianru236Russianru2360Russianru2361Russianru2362Russianru2363Russianru2364Russianru2365Russianru2366Russianru2367Russianru2368Russianru2369Russianru237Russianru2370Russianru2371Russianru2372Russianru2373Russianru2374Russianru2375Russianru2376Russianru2377Russianru2378Russianru2379Russianru238Russianru2380Russianru2381Russianru2382Russianru2383Russianru2384Russianru2385Russianru2386Russianru2387Russianru2388Russianru2389Russianru239Russianru2390Russianru2391Russianru2392Russianru2393Russianru2394Russianru2395Russianru2396Russianru2397Russianru2398Russianru2399Russianru24Russianru240Russianru2400Russianru2401Russianru2402Russianru2403Russianru2404Russianru2405Russianru2406Russianru2407Russianru2408Russianru2409Russianru241Russianru2410Russianru2411Russianru2412Russianru2413Russianru2414Russianru2415Russianru2416Russianru2417Russianru2418Russianru2419Russianru242Russianru2420Russianru2421Russianru2422Russianru2423Russianru2424Russianru2425Russianru2426Russianru2427Russianru2428Russianru2429Russianru243Russianru2430Russianru2431Russianru2432Russianru2433Russianru2434Russianru2435Russianru2436Russianru2437Russianru2438Russianru2439Russianru244Russianru2440Russianru2441Russianru2442Russianru2443Russianru2444Russianru2445Russianru2446Russianru2447Russianru2448Russianru2449Russianru245Russianru2450Russianru2451Russianru2452Russianru2453Russianru2454Russianru2455Russianru2456Russianru2457Russianru2458Russianru2459Russianru246Russianru2460Russianru2461Russianru2462Russianru2463Russianru2464Russianru2465Russianru2466Russianru2467Russianru2468Russianru2469Russianru247Russianru2470Russianru2471Russianru2472Russianru2473Russianru2474Russianru2475Russianru2476Russianru2477Russianru2478Russianru2479Russianru248Russianru2480Russianru2481Russianru2482Russianru2483Russianru2484Russianru2485Russianru2486Russianru2487Russianru2488Russianru2489Russianru249Russianru2490Russianru2491Russianru2492Russianru2493Russianru2494Russianru2495Russianru2496Russianru2497Russianru2498Russianru2499Russianru25Russianru250Russianru2500Russianru2501Russianru2502Russianru2503Russianru2504Russianru2505Russianru2506Russianru2507Russianru2508Russianru2509Russianru251Russianru2510Russianru2511Russianru2512Russianru2513Russianru2514Russianru2515Russianru2516Russianru2517Russianru2518Russianru2519Russianru252Russianru2520Russianru2521Russianru2522Russianru2523Russianru2524Russianru2525Russianru2526Russianru2527Russianru2528Russianru2529Russianru253Russianru2530Russianru2531Russianru2532Russianru2533Russianru2534Russianru2535Russianru2536Russianru2537Russianru2538Russianru2539Russianru254Russianru2540Russianru2541Russianru2542Russianru2543Russianru2544Russianru2545Russianru2546Russianru2547Russianru2548Russianru2549Russianru255Russianru2550Russianru2551Russianru2552Russianru2553Russianru2554Russianru2555Russianru2556Russianru2557Russianru2558Russianru2559Russianru256Russianru2560Russianru2561Russianru2562Russianru2563Russianru2564Russianru2565Russianru2566Russianru2567Russianru2568Russianru2569Russianru257Russianru2570Russianru2571Russianru2572Russianru2573Russianru2574Russianru2575Russianru2576Russianru2577Russianru2578Russianru2579Russianru258Russianru2580Russianru2581Russianru2582Russianru2583Russianru2584Russianru2585Russianru2586Russianru2587Russianru2588Russianru2589Russianru259Russianru2590Russianru2591Russianru2592Russianru2593Russianru2594Russianru2595Russianru2596Russianru2597Russianru2598Russianru2599Russianru26Russianru260Russianru2600Russianru2601Russianru2602Russianru2603Russianru2604Russianru2605Russianru2606Russianru2607Russianru2608Russianru2609Russianru261Russianru2610Russianru2611Russianru2612Russianru2613Russianru2614Russianru2615Russianru2616Russianru2617Russianru2618Russianru2619Russianru262Russianru2620Russianru2621Russianru2622Russianru2623Russianru2624Russianru2625Russianru2626Russianru2627Russianru2628Russianru2629Russianru263Russianru2630Russianru2631Russianru2632Russianru2633Russianru2634Russianru2635Russianru2636Russianru2637Russianru2638Russianru2639Russianru264Russianru2640Russianru2641Russianru2642Russianru2643Russianru2644Russianru2645Russianru2646Russianru2647Russianru2648Russianru2649Russianru265Russianru2650Russianru2651Russianru2652Russianru2653Russianru2654Russianru2655Russianru2656Russianru2657Russianru2658Russianru2659Russianru266Russianru2660Russianru2661Russianru2662Russianru2663Russianru2664Russianru2665Russianru2666Russianru2667Russianru2668Russianru2669Russianru267Russianru2670Russianru2671Russianru2672Russianru2673Russianru2674Russianru2675Russianru2676Russianru2677Russianru2678Russianru2679Russianru268Russianru2680Russianru2681Russianru2682Russianru2683Russianru2684Russianru2685Russianru2686Russianru2687Russianru2688Russianru2689Russianru269Russianru2690Russianru2691Russianru2692Russianru2693Russianru2694Russianru2695Russianru2696Russianru2697Russianru2698Russianru2699Russianru27Russianru270Russianru2700Russianru2701Russianru2702Russianru2703Russianru2704Russianru2705Russianru2706Russianru2707Russianru2708Russianru2709Russianru271Russianru2710Russianru2711Russianru2712Russianru2713Russianru2714Russianru2715Russianru2716Russianru2717Russianru2718Russianru2719Russianru272Russianru2720Russianru2721Russianru2722Russianru2723Russianru2724Russianru2725Russianru2726Russianru2727Russianru2728Russianru2729Russianru273Russianru2730Russianru2731Russianru2732Russianru2733Russianru2734Russianru2735Russianru2736Russianru2737Russianru2738Russianru2739Russianru274Russianru2740Russianru2741Russianru2742Russianru2743Russianru2744Russianru2745Russianru2746Russianru2747Russianru2748Russianru2749Russianru275Russianru2750Russianru2751Russianru2752Russianru2753Russianru2754Russianru2755Russianru2756Russianru2757Russianru2758Russianru2759Russianru276Russianru2760Russianru2761Russianru2762Russianru2763Russianru2764Russianru2765Russianru2766Russianru2767Russianru2768Russianru2769Russianru277Russianru2770Russianru2771Russianru2772Russianru2773Russianru2774Russianru2775Russianru2776Russianru2777Russianru2778Russianru2779Russianru278Russianru2780Russianru2781Russianru2782Russianru2783Russianru2784Russianru2785Russianru2786Russianru2787Russianru2788Russianru2789Russianru279Russianru2790Russianru2791Russianru2792Russianru2793Russianru2794Russianru2795Russianru2796Russianru2797Russianru2798Russianru2799Russianru28Russianru280Russianru2800Russianru2801Russianru2802Russianru2803Russianru2804Russianru2805Russianru2806Russianru2807Russianru2808Russianru2809Russianru281Russianru2810Russianru2811Russianru2812Russianru2813Russianru2814Russianru2815Russianru2816Russianru2817Russianru2818Russianru2819Russianru282Russianru2820Russianru2821Russianru2822Russianru2823Russianru2824Russianru2825Russianru2826Russianru2827Russianru2828Russianru2829Russianru283Russianru2830Russianru2831Russianru2832Russianru2833Russianru2834Russianru2835Russianru2836Russianru2837Russianru2838Russianru2839Russianru284Russianru2840Russianru2841Russianru2842Russianru2843Russianru2844Russianru2845Russianru2846Russianru2847Russianru2848Russianru2849Russianru285Russianru2850Russianru2851Russianru2852Russianru2853Russianru2854Russianru2855Russianru2856Russianru2857Russianru2858Russianru2859Russianru286Russianru2860Russianru2861Russianru2862Russianru2863Russianru2864Russianru2865Russianru2866Russianru2867Russianru2868Russianru2869Russianru287Russianru2870Russianru2871Russianru2872Russianru2873Russianru2874Russianru2875Russianru2876Russianru2877Russianru2878Russianru2879Russianru288Russianru2880Russianru2881Russianru2882Russianru2883Russianru2884Russianru2885Russianru2886Russianru2887Russianru2888Russianru2889Russianru289Russianru2890Russianru2891Russianru2892Russianru2893Russianru2894Russianru2895Russianru2896Russianru2897Russianru2898Russianru2899Russianru29Russianru290Russianru2900Russianru2901Russianru2902Russianru2903Russianru2904Russianru2905Russianru2906Russianru2907Russianru2908Russianru2909Russianru291Russianru2910Russianru2911Russianru2912Russianru2913Russianru2914Russianru2915Russianru2916Russianru2917Russianru2918Russianru2919Russianru292Russianru2920Russianru2921Russianru2922Russianru2923Russianru2924Russianru2925Russianru2926Russianru2927Russianru2928Russianru2929Russianru293Russianru2930Russianru2931Russianru2932Russianru2933Russianru2934Russianru2935Russianru2936Russianru2937Russianru2938Russianru2939Russianru294Russianru2940Russianru2941Russianru2942Russianru2943Russianru2944Russianru2945Russianru2946Russianru2947Russianru2948Russianru2949Russianru295Russianru2950Russianru2951Russianru2952Russianru2953Russianru2954Russianru2955Russianru2956Russianru2957Russianru2958Russianru2959Russianru296Russianru2960Russianru2961Russianru2962Russianru2963Russianru2964Russianru2965Russianru2966Russianru2967Russianru2968Russianru2969Russianru297Russianru2970Russianru2971Russianru2972Russianru2973Russianru2974Russianru2975Russianru2976Russianru2977Russianru2978Russianru2979Russianru298Russianru2980Russianru2981Russianru2982Russianru2983Russianru2984Russianru2985Russianru2986Russianru2987Russianru2988Russianru2989Russianru299Russianru2990Russianru2991Russianru2992Russianru2993Russianru2994Russianru2995Russianru2996Russianru2997Russianru2998Russianru2999Russianru3Russianru30Russianru300Russianru3000Russianru3001Russianru3002Russianru3003Russianru3004Russianru3005Russianru3006Russianru3007Russianru3008Russianru3009Russianru301Russianru3010Russianru3011Russianru3012Russianru3013Russianru3014Russianru3015Russianru3016Russianru3017Russianru3018Russianru3019Russianru302Russianru3020Russianru3021Russianru3022Russianru3023Russianru3024Russianru3025Russianru3026Russianru3027Russianru3028Russianru3029Russianru303Russianru3030Russianru3031Russianru3032Russianru3033Russianru3034Russianru3035Russianru3036Russianru3037Russianru3038Russianru3039Russianru304Russianru3040Russianru3041Russianru3042Russianru3043Russianru3044Russianru3045Russianru3046Russianru3047Russianru3048Russianru3049Russianru305Russianru3050Russianru3051Russianru3052Russianru3053Russianru3054Russianru3055Russianru3056Russianru3057Russianru3058Russianru3059Russianru306Russianru3060Russianru3061Russianru3062Russianru3063Russianru3064Russianru3065Russianru3066Russianru3067Russianru3068Russianru3069Russianru307Russianru3070Russianru3071Russianru3072Russianru3073Russianru3074Russianru3075Russianru3076Russianru3077Russianru3078Russianru3079Russianru308Russianru3080Russianru3081Russianru3082Russianru3083Russianru3084Russianru3085Russianru3086Russianru3087Russianru3088Russianru3089Russianru309Russianru3090Russianru3091Russianru3092Russianru3093Russianru3094Russianru3095Russianru3096Russianru3097Russianru3098Russianru3099Russianru31Russianru310Russianru3100Russianru3101Russianru3102Russianru3103Russianru3104Russianru3105Russianru3106Russianru3107Russianru3108Russianru3109Russianru311Russianru3110Russianru3111Russianru3112Russianru3113Russianru3114Russianru3115Russianru3116Russianru3117Russianru3118Russianru3119Russianru312Russianru3120Russianru3121Russianru3122Russianru3123Russianru3124Russianru3125Russianru3126Russianru3127Russianru3128Russianru3129Russianru313Russianru3130Russianru3131Russianru3132Russianru3133Russianru3134Russianru3135Russianru3136Russianru3137Russianru3138Russianru3139Russianru314Russianru3140Russianru3141Russianru3142Russianru3143Russianru3144Russianru3145Russianru3146Russianru3147Russianru3148Russianru3149Russianru315Russianru3150Russianru3151Russianru3152Russianru3153Russianru3154Russianru3155Russianru3156Russianru3157Russianru3158Russianru3159Russianru316Russianru3160Russianru3161Russianru3162Russianru3163Russianru3164Russianru3165Russianru3166Russianru3167Russianru3168Russianru3169Russianru317Russianru3170Russianru3171Russianru3172Russianru3173Russianru3174Russianru3175Russianru3176Russianru3177Russianru3178Russianru3179Russianru318Russianru3180Russianru3181Russianru3182Russianru3183Russianru3184Russianru3185Russianru3186Russianru3187Russianru3188Russianru3189Russianru319Russianru3190Russianru3191Russianru3192Russianru3193Russianru3194Russianru3195Russianru3196Russianru3197Russianru3198Russianru3199Russianru32Russianru320Russianru3200Russianru3201Russianru3202Russianru3203Russianru3204Russianru3205Russianru3206Russianru3207Russianru3208Russianru3209Russianru321Russianru3210Russianru3211Russianru3212Russianru3213Russianru3214Russianru3215Russianru3216Russianru3217Russianru3218Russianru3219Russianru322Russianru3220Russianru3221Russianru3222Russianru3223Russianru3224Russianru3225Russianru3226Russianru3227Russianru3228Russianru3229Russianru323Russianru3230Russianru3231Russianru3232Russianru3233Russianru3234Russianru3235Russianru3236Russianru3237Russianru3238Russianru3239Russianru324Russianru3240Russianru3241Russianru3242Russianru3243Russianru3244Russianru3245Russianru3246Russianru3247Russianru3248Russianru3249Russianru325Russianru3250Russianru3251Russianru3252Russianru3253Russianru3254Russianru3255Russianru3256Russianru3257Russianru3258Russianru3259Russianru326Russianru3260Russianru3261Russianru3262Russianru3263Russianru3264Russianru3265Russianru3266Russianru3267Russianru3268Russianru3269Russianru327Russianru3270Russianru3271Russianru3272Russianru3273Russianru3274Russianru3275Russianru3276Russianru3277Russianru3278Russianru3279Russianru328Russianru3280Russianru3281Russianru3282Russianru3283Russianru3284Russianru3285Russianru3286Russianru3287Russianru3288Russianru3289Russianru329Russianru3290Russianru3291Russianru3292Russianru3293Russianru3294Russianru3295Russianru3296Russianru3297Russianru3298Russianru3299Russianru33Russianru330Russianru3300Russianru3301Russianru3302Russianru3303Russianru3304Russianru3305Russianru3306Russianru3307Russianru3308Russianru3309Russianru331Russianru3310Russianru3311Russianru3312Russianru3313Russianru3314Russianru3315Russianru3316Russianru3317Russianru3318Russianru3319Russianru332Russianru3320Russianru3321Russianru3322Russianru3323Russianru3324Russianru3325Russianru3326Russianru3327Russianru3328Russianru3329Russianru333Russianru3330Russianru3331Russianru3332Russianru3333Russianru3334Russianru3335Russianru3336Russianru3337Russianru3338Russianru3339Russianru334Russianru3340Russianru3341Russianru3342Russianru3343Russianru3344Russianru3345Russianru3346Russianru3347Russianru3348Russianru3349Russianru335Russianru3350Russianru3351Russianru3352Russianru3353Russianru3354Russianru3355Russianru3356Russianru3357Russianru3358Russianru3359Russianru336Russianru3360Russianru3361Russianru3362Russianru3363Russianru3364Russianru3365Russianru3366Russianru3367Russianru3368Russianru3369Russianru337Russianru3370Russianru3371Russianru3372Russianru3373Russianru3374Russianru3375Russianru3376Russianru3377Russianru3378Russianru3379Russianru338Russianru3380Russianru3381Russianru3382Russianru3383Russianru3384Russianru3385Russianru3386Russianru3387Russianru3388Russianru3389Russianru339Russianru3390Russianru3391Russianru3392Russianru3393Russianru3394Russianru3395Russianru3396Russianru3397Russianru3398Russianru3399Russianru34Russianru340Russianru3400Russianru3401Russianru3402Russianru3403Russianru3404Russianru3405Russianru3406Russianru3407Russianru3408Russianru3409Russianru341Russianru3410Russianru3411Russianru3412Russianru3413Russianru3414Russianru3415Russianru3416Russianru3417Russianru3418Russianru3419Russianru342Russianru3420Russianru3421Russianru3422Russianru3423Russianru3424Russianru3425Russianru3426Russianru3427Russianru3428Russianru3429Russianru343Russianru3430Russianru3431Russianru3432Russianru3433Russianru3434Russianru3435Russianru3436Russianru3437Russianru3438Russianru3439Russianru344Russianru3440Russianru3441Russianru3442Russianru3443Russianru3444Russianru3445Russianru3446Russianru3447Russianru3448Russianru3449Russianru345Russianru3450Russianru3451Russianru3452Russianru3453Russianru3454Russianru3455Russianru3456Russianru3457Russianru3458Russianru3459Russianru346Russianru3460Russianru3461Russianru3462Russianru3463Russianru3464Russianru3465Russianru3466Russianru3467Russianru3468Russianru3469Russianru347Russianru3470Russianru3471Russianru3472Russianru3473Russianru3474Russianru3475Russianru3476Russianru3477Russianru3478Russianru3479Russianru348Russianru3480Russianru3481Russianru3482Russianru3483Russianru3484Russianru3485Russianru3486Russianru3487Russianru3488Russianru3489Russianru349Russianru3490Russianru3491Russianru3492Russianru3493Russianru3494Russianru3495Russianru3496Russianru3497Russianru3498Russianru3499Russianru35Russianru350Russianru3500Russianru3501Russianru3502Russianru3503Russianru3504Russianru3505Russianru3506Russianru3507Russianru3508Russianru3509Russianru351Russianru3510Russianru3511Russianru3512Russianru3513Russianru3514Russianru3515Russianru3516Russianru3517Russianru3518Russianru3519Russianru352Russianru3520Russianru3521Russianru3522Russianru3523Russianru3524Russianru3525Russianru3526Russianru3527Russianru3528Russianru3529Russianru353Russianru3530Russianru3531Russianru3532Russianru3533Russianru3534Russianru3535Russianru3536Russianru3537Russianru3538Russianru3539Russianru354Russianru3540Russianru3541Russianru3542Russianru3543Russianru3544Russianru3545Russianru3546Russianru3547Russianru3548Russianru3549Russianru355Russianru3550Russianru3551Russianru3552Russianru3553Russianru3554Russianru3555Russianru3556Russianru3557Russianru3558Russianru3559Russianru356Russianru3560Russianru3561Russianru3562Russianru3563Russianru3564Russianru3565Russianru3566Russianru3567Russianru3568Russianru3569Russianru357Russianru3570Russianru3571Russianru3572Russianru3573Russianru3574Russianru3575Russianru3576Russianru3577Russianru3578Russianru3579Russianru358Russianru3580Russianru3581Russianru3582Russianru3583Russianru3584Russianru3585Russianru3586Russianru3587Russianru3588Russianru3589Russianru359Russianru3590Russianru3591Russianru3592Russianru3593Russianru3594Russianru3595Russianru3596Russianru3597Russianru3598Russianru3599Russianru36Russianru360Russianru3600Russianru3601Russianru3602Russianru3603Russianru3604Russianru3605Russianru3606Russianru3607Russianru3608Russianru3609Russianru361Russianru3610Russianru3611Russianru3612Russianru3613Russianru3614Russianru3615Russianru3616Russianru3617Russianru3618Russianru3619Russianru362Russianru3620Russianru3621Russianru3622Russianru3623Russianru3624Russianru3625Russianru3626Russianru3627Russianru3628Russianru3629Russianru363Russianru3630Russianru3631Russianru3632Russianru3633Russianru3634Russianru3635Russianru3636Russianru3637Russianru3638Russianru3639Russianru364Russianru3640Russianru3641Russianru3642Russianru3643Russianru3644Russianru3645Russianru3646Russianru3647Russianru3648Russianru3649Russianru365Russianru3650Russianru3651Russianru3652Russianru3653Russianru3654Russianru3655Russianru3656Russianru3657Russianru3658Russianru3659Russianru366Russianru3660Russianru3661Russianru3662Russianru3663Russianru3664Russianru3665Russianru3666Russianru3667Russianru3668Russianru3669Russianru367Russianru3670Russianru3671Russianru3672Russianru3673Russianru3674Russianru3675Russianru3676Russianru3677Russianru3678Russianru3679Russianru368Russianru3680Russianru3681Russianru3682Russianru3683Russianru3684Russianru3685Russianru3686Russianru3687Russianru3688Russianru3689Russianru369Russianru3690Russianru3691Russianru3692Russianru3693Russianru3694Russianru3695Russianru3696Russianru3697Russianru3698Russianru3699Russianru37Russianru370Russianru3700Russianru3701Russianru3702Russianru3703Russianru3704Russianru3705Russianru3706Russianru3707Russianru3708Russianru3709Russianru371Russianru3710Russianru3711Russianru3712Russianru3713Russianru3714Russianru3715Russianru3716Russianru3717Russianru3718Russianru3719Russianru372Russianru3720Russianru3721Russianru3722Russianru3723Russianru3724Russianru3725Russianru3726Russianru3727Russianru3728Russianru3729Russianru373Russianru3730Russianru3731Russianru3732Russianru3733Russianru3734Russianru3735Russianru3736Russianru3737Russianru3738Russianru3739Russianru374Russianru3740Russianru3741Russianru3742Russianru3743Russianru3744Russianru3745Russianru3746Russianru3747Russianru3748Russianru3749Russianru375Russianru3750Russianru3751Russianru3752Russianru3753Russianru3754Russianru3755Russianru3756Russianru3757Russianru3758Russianru3759Russianru376Russianru3760Russianru3761Russianru3762Russianru3763Russianru3764Russianru3765Russianru3766Russianru3767Russianru3768Russianru3769Russianru377Russianru3770Russianru3771Russianru3772Russianru3773Russianru3774Russianru3775Russianru3776Russianru3777Russianru3778Russianru3779Russianru378Russianru3780Russianru3781Russianru3782Russianru3783Russianru3784Russianru3785Russianru3786Russianru3787Russianru3788Russianru3789Russianru379Russianru3790Russianru3791Russianru3792Russianru3793Russianru3794Russianru3795Russianru3796Russianru3797Russianru3798Russianru3799Russianru38Russianru380Russianru3800Russianru3801Russianru3802Russianru3803Russianru3804Russianru3805Russianru3806Russianru3807Russianru3808Russianru3809Russianru381Russianru3810Russianru3811Russianru3812Russianru3813Russianru3814Russianru3815Russianru3816Russianru3817Russianru3818Russianru3819Russianru382Russianru3820Russianru3821Russianru3822Russianru3823Russianru3824Russianru3825Russianru3826Russianru3827Russianru3828Russianru3829Russianru383Russianru3830Russianru3831Russianru3832Russianru3833Russianru3834Russianru3835Russianru3836Russianru3837Russianru3838Russianru3839Russianru384Russianru3840Russianru3841Russianru3842Russianru3843Russianru3844Russianru3845Russianru3846Russianru3847Russianru3848Russianru3849Russianru385Russianru3850Russianru3851Russianru3852Russianru3853Russianru3854Russianru3855Russianru3856Russianru3857Russianru3858Russianru3859Russianru386Russianru3860Russianru3861Russianru3862Russianru3863Russianru3864Russianru3865Russianru3866Russianru3867Russianru3868Russianru3869Russianru387Russianru3870Russianru3871Russianru3872Russianru3873Russianru3874Russianru3875Russianru3876Russianru3877Russianru3878Russianru3879Russianru388Russianru3880Russianru3881Russianru3882Russianru3883Russianru3884Russianru3885Russianru3886Russianru3887Russianru3888Russianru3889Russianru389Russianru3890Russianru3891Russianru3892Russianru3893Russianru3894Russianru3895Russianru3896Russianru3897Russianru3898Russianru3899Russianru39Russianru390Russianru3900Russianru3901Russianru3902Russianru3903Russianru3904Russianru3905Russianru3906Russianru3907Russianru3908Russianru3909Russianru391Russianru3910Russianru3911Russianru3912Russianru3913Russianru3914Russianru3915Russianru3916Russianru3917Russianru3918Russianru3919Russianru392Russianru3920Russianru3921Russianru3922Russianru3923Russianru3924Russianru3925Russianru3926Russianru3927Russianru3928Russianru3929Russianru393Russianru3930Russianru3931Russianru3932Russianru3933Russianru3934Russianru3935Russianru3936Russianru3937Russianru3938Russianru3939Russianru394Russianru3940Russianru3941Russianru3942Russianru3943Russianru3944Russianru3945Russianru3946Russianru3947Russianru3948Russianru3949Russianru395Russianru3950Russianru3951Russianru3952Russianru3953Russianru3954Russianru3955Russianru3956Russianru3957Russianru3958Russianru3959Russianru396Russianru3960Russianru3961Russianru3962Russianru3963Russianru3964Russianru3965Russianru3966Russianru3967Russianru3968Russianru3969Russianru397Russianru3970Russianru3971Russianru3972Russianru3973Russianru3974Russianru3975Russianru3976Russianru3977Russianru3978Russianru3979Russianru398Russianru3980Russianru3981Russianru3982Russianru3983Russianru3984Russianru3985Russianru3986Russianru3987Russianru3988Russianru3989Russianru399Russianru3990Russianru3991Russianru3992Russianru3993Russianru3994Russianru3995Russianru3996Russianru3997Russianru3998Russianru3999Russianru4Russianru40Russianru400Russianru4000Russianru4001Russianru4002Russianru4003Russianru4004Russianru4005Russianru4006Russianru4007Russianru4008Russianru4009Russianru401Russianru4010Russianru4011Russianru4012Russianru4013Russianru4014Russianru4015Russianru4016Russianru4017Russianru4018Russianru4019Russianru402Russianru4020Russianru4021Russianru4022Russianru4023Russianru4024Russianru4025Russianru4026Russianru4027Russianru4028Russianru4029Russianru403Russianru4030Russianru4031Russianru4032Russianru4033Russianru4034Russianru4035Russianru4036Russianru4037Russianru4038Russianru4039Russianru404Russianru4040Russianru4041Russianru4042Russianru4043Russianru4044Russianru4045Russianru4046Russianru4047Russianru4048Russianru4049Russianru405Russianru4050Russianru4051Russianru4052Russianru4053Russianru4054Russianru4055Russianru4056Russianru4057Russianru4058Russianru4059Russianru406Russianru4060Russianru4061Russianru4062Russianru4063Russianru4064Russianru4065Russianru4066Russianru4067Russianru4068Russianru4069Russianru407Russianru4070Russianru4071Russianru4072Russianru4073Russianru4074Russianru4075Russianru4076Russianru4077Russianru4078Russianru4079Russianru408Russianru4080Russianru4081Russianru4082Russianru4083Russianru4084Russianru4085Russianru4086Russianru4087Russianru4088Russianru4089Russianru409Russianru4090Russianru4091Russianru4092Russianru4093Russianru4094Russianru4095Russianru4096Russianru4097Russianru4098Russianru4099Russianru41Russianru410Russianru4100Russianru4101Russianru4102Russianru4103Russianru4104Russianru4105Russianru4106Russianru4107Russianru4108Russianru4109Russianru411Russianru4110Russianru4111Russianru4112Russianru4113Russianru4114Russianru4115Russianru4116Russianru4117Russianru4118Russianru4119Russianru412Russianru4120Russianru4121Russianru4122Russianru4123Russianru4124Russianru4125Russianru4126Russianru4127Russianru4128Russianru4129Russianru413Russianru4130Russianru4131Russianru4132Russianru4133Russianru4134Russianru4135Russianru4136Russianru4137Russianru4138Russianru4139Russianru414Russianru4140Russianru4141Russianru4142Russianru4143Russianru4144Russianru4145Russianru4146Russianru4147Russianru4148Russianru4149Russianru415Russianru4150Russianru4151Russianru4152Russianru4153Russianru4154Russianru4155Russianru4156Russianru4157Russianru4158Russianru4159Russianru416Russianru4160Russianru4161Russianru4162Russianru4163Russianru4164Russianru4165Russianru4166Russianru4167Russianru4168Russianru4169Russianru417Russianru4170Russianru4171Russianru4172Russianru4173Russianru4174Russianru4175Russianru4176Russianru4177Russianru4178Russianru4179Russianru418Russianru4180Russianru4181Russianru4182Russianru4183Russianru4184Russianru4185Russianru4186Russianru4187Russianru4188Russianru4189Russianru419Russianru4190Russianru4191Russianru4192Russianru4193Russianru4194Russianru4195Russianru4196Russianru4197Russianru4198Russianru4199Russianru42Russianru420Russianru4200Russianru4201Russianru4202Russianru4203Russianru4204Russianru4205Russianru4206Russianru4207Russianru4208Russianru4209Russianru421Russianru4210Russianru4211Russianru4212Russianru4213Russianru4214Russianru4215Russianru4216Russianru4217Russianru4218Russianru4219Russianru422Russianru4220Russianru4221Russianru4222Russianru4223Russianru4224Russianru4225Russianru4226Russianru4227Russianru4228Russianru4229Russianru423Russianru4230Russianru4231Russianru4232Russianru4233Russianru4234Russianru4235Russianru4236Russianru4237Russianru4238Russianru4239Russianru424Russianru4240Russianru4241Russianru4242Russianru4243Russianru4244Russianru4245Russianru4246Russianru4247Russianru4248Russianru4249Russianru425Russianru4250Russianru4251Russianru4252Russianru4253Russianru4254Russianru4255Russianru4256Russianru4257Russianru4258Russianru4259Russianru426Russianru4260Russianru4261Russianru4262Russianru4263Russianru4264Russianru4265Russianru4266Russianru4267Russianru4268Russianru4269Russianru427Russianru4270Russianru4271Russianru4272Russianru4273Russianru4274Russianru4275Russianru4276Russianru4277Russianru4278Russianru4279Russianru428Russianru4280Russianru4281Russianru4282Russianru4283Russianru4284Russianru4285Russianru4286Russianru4287Russianru4288Russianru4289Russianru429Russianru4290Russianru4291Russianru4292Russianru4293Russianru4294Russianru4295Russianru4296Russianru4297Russianru4298Russianru4299Russianru43Russianru430Russianru4300Russianru4301Russianru4302Russianru4303Russianru4304Russianru4305Russianru4306Russianru4307Russianru4308Russianru4309Russianru431Russianru4310Russianru4311Russianru4312Russianru4313Russianru4314Russianru4315Russianru4316Russianru4317Russianru4318Russianru4319Russianru432Russianru4320Russianru4321Russianru4322Russianru4323Russianru4324Russianru4325Russianru4326Russianru4327Russianru4328Russianru4329Russianru433Russianru4330Russianru4331Russianru4332Russianru4333Russianru4334Russianru4335Russianru4336Russianru4337Russianru4338Russianru4339Russianru434Russianru4340Russianru4341Russianru4342Russianru4343Russianru4344Russianru4345Russianru4346Russianru4347Russianru4348Russianru4349Russianru435Russianru4350Russianru4351Russianru4352Russianru4353Russianru4354Russianru4355Russianru4356Russianru4357Russianru4358Russianru4359Russianru436Russianru4360Russianru4361Russianru4362Russianru4363Russianru4364Russianru4365Russianru4366Russianru4367Russianru4368Russianru4369Russianru437Russianru4370Russianru4371Russianru4372Russianru4373Russianru4374Russianru4375Russianru4376Russianru4377Russianru4378Russianru4379Russianru438Russianru4380Russianru4381Russianru4382Russianru4383Russianru4384Russianru4385Russianru4386Russianru4387Russianru4388Russianru4389Russianru439Russianru4390Russianru4391Russianru4392Russianru4393Russianru4394Russianru4395Russianru4396Russianru4397Russianru4398Russianru4399Russianru44Russianru440Russianru4400Russianru4401Russianru4402Russianru4403Russianru4404Russianru4405Russianru4406Russianru4407Russianru4408Russianru4409Russianru441Russianru4410Russianru4411Russianru4412Russianru4413Russianru4414Russianru4415Russianru4416Russianru4417Russianru4418Russianru4419Russianru442Russianru4420Russianru4421Russianru4422Russianru4423Russianru4424Russianru4425Russianru4426Russianru4427Russianru4428Russianru4429Russianru443Russianru4430Russianru4431Russianru4432Russianru4433Russianru4434Russianru4435Russianru4436Russianru4437Russianru4438Russianru4439Russianru444Russianru4440Russianru4441Russianru4442Russianru4443Russianru4444Russianru4445Russianru4446Russianru4447Russianru4448Russianru4449Russianru445Russianru4450Russianru4451Russianru4452Russianru4453Russianru4454Russianru4455Russianru4456Russianru4457Russianru4458Russianru4459Russianru446Russianru4460Russianru4461Russianru4462Russianru4463Russianru4464Russianru4465Russianru4466Russianru4467Russianru4468Russianru4469Russianru447Russianru4470Russianru4471Russianru4472Russianru4473Russianru4474Russianru4475Russianru4476Russianru4477Russianru4478Russianru4479Russianru448Russianru4480Russianru4481Russianru4482Russianru4483Russianru4484Russianru4485Russianru4486Russianru4487Russianru4488Russianru4489Russianru449Russianru4490Russianru4491Russianru4492Russianru4493Russianru4494Russianru4495Russianru4496Russianru4497Russianru4498Russianru4499Russianru45Russianru450Russianru4500Russianru4501Russianru4502Russianru4503Russianru4504Russianru4505Russianru4506Russianru4507Russianru4508Russianru4509Russianru451Russianru4510Russianru4511Russianru4512Russianru4513Russianru4514Russianru4515Russianru4516Russianru4517Russianru4518Russianru4519Russianru452Russianru4520Russianru4521Russianru4522Russianru4523Russianru4524Russianru4525Russianru4526Russianru4527Russianru4528Russianru4529Russianru453Russianru4530Russianru4531Russianru4532Russianru4533Russianru4534Russianru4535Russianru4536Russianru4537Russianru4538Russianru4539Russianru454Russianru4540Russianru4541Russianru4542Russianru4543Russianru4544Russianru4545Russianru4546Russianru4547Russianru4548Russianru4549Russianru455Russianru4550Russianru4551Russianru4552Russianru4553Russianru4554Russianru4555Russianru4556Russianru4557Russianru4558Russianru4559Russianru456Russianru4560Russianru4561Russianru4562Russianru4563Russianru4564Russianru4565Russianru4566Russianru4567Russianru4568Russianru4569Russianru457Russianru4570Russianru4571Russianru4572Russianru4573Russianru4574Russianru4575Russianru4576Russianru4577Russianru4578Russianru4579Russianru458Russianru4580Russianru4581Russianru4582Russianru4583Russianru4584Russianru4585Russianru4586Russianru4587Russianru4588Russianru4589Russianru459Russianru4590Russianru4591Russianru4592Russianru4593Russianru4594Russianru4595Russianru4596Russianru4597Russianru4598Russianru4599Russianru46Russianru460Russianru4600Russianru4601Russianru4602Russianru4603Russianru4604Russianru4605Russianru4606Russianru4607Russianru4608Russianru4609Russianru461Russianru4610Russianru4611Russianru4612Russianru4613Russianru4614Russianru4615Russianru4616Russianru4617Russianru4618Russianru4619Russianru462Russianru4620Russianru4621Russianru4622Russianru4623Russianru4624Russianru4625Russianru4626Russianru4627Russianru4628Russianru4629Russianru463Russianru4630Russianru4631Russianru4632Russianru4633Russianru4634Russianru4635Russianru4636Russianru4637Russianru4638Russianru4639Russianru464Russianru4640Russianru4641Russianru4642Russianru4643Russianru4644Russianru4645Russianru4646Russianru4647Russianru4648Russianru4649Russianru465Russianru4650Russianru4651Russianru4652Russianru4653Russianru4654Russianru4655Russianru4656Russianru4657Russianru4658Russianru4659Russianru466Russianru4660Russianru4661Russianru4662Russianru4663Russianru4664Russianru4665Russianru4666Russianru4667Russianru4668Russianru4669Russianru467Russianru4670Russianru4671Russianru4672Russianru4673Russianru4674Russianru4675Russianru4676Russianru4677Russianru4678Russianru4679Russianru468Russianru4680Russianru4681Russianru4682Russianru4683Russianru4684Russianru4685Russianru4686Russianru4687Russianru4688Russianru4689Russianru469Russianru4690Russianru4691Russianru4692Russianru4693Russianru4694Russianru4695Russianru4696Russianru4697Russianru4698Russianru4699Russianru47Russianru470Russianru4700Russianru4701Russianru4702Russianru4703Russianru4704Russianru4705Russianru4706Russianru4707Russianru4708Russianru4709Russianru471Russianru4710Russianru4711Russianru4712Russianru4713Russianru4714Russianru4715Russianru4716Russianru4717Russianru4718Russianru4719Russianru472Russianru4720Russianru4721Russianru4722Russianru4723Russianru4724Russianru4725Russianru4726Russianru4727Russianru4728Russianru4729Russianru473Russianru4730Russianru4731Russianru4732Russianru4733Russianru4734Russianru4735Russianru4736Russianru4737Russianru4738Russianru4739Russianru474Russianru4740Russianru4741Russianru4742Russianru4743Russianru4744Russianru4745Russianru4746Russianru4747Russianru4748Russianru4749Russianru475Russianru4750Russianru4751Russianru4752Russianru4753Russianru4754Russianru4755Russianru4756Russianru4757Russianru4758Russianru4759Russianru476Russianru4760Russianru4761Russianru4762Russianru4763Russianru4764Russianru4765Russianru4766Russianru4767Russianru4768Russianru4769Russianru477Russianru4770Russianru4771Russianru4772Russianru4773Russianru4774Russianru4775Russianru4776Russianru4777Russianru4778Russianru4779Russianru478Russianru4780Russianru4781Russianru4782Russianru4783Russianru4784Russianru4785Russianru4786Russianru4787Russianru4788Russianru4789Russianru479Russianru4790Russianru4791Russianru4792Russianru4793Russianru4794Russianru4795Russianru4796Russianru4797Russianru4798Russianru4799Russianru48Russianru480Russianru4800Russianru4801Russianru4802Russianru4803Russianru4804Russianru4805Russianru4806Russianru4807Russianru4808Russianru4809Russianru481Russianru4810Russianru4811Russianru4812Russianru4813Russianru4814Russianru4815Russianru4816Russianru4817Russianru4818Russianru4819Russianru482Russianru4820Russianru4821Russianru4822Russianru4823Russianru4824Russianru4825Russianru4826Russianru4827Russianru4828Russianru4829Russianru483Russianru4830Russianru4831Russianru4832Russianru4833Russianru4834Russianru4835Russianru4836Russianru4837Russianru4838Russianru4839Russianru484Russianru4840Russianru4841Russianru4842Russianru4843Russianru4844Russianru4845Russianru4846Russianru4847Russianru4848Russianru4849Russianru485Russianru4850Russianru4851Russianru4852Russianru4853Russianru4854Russianru4855Russianru4856Russianru4857Russianru4858Russianru4859Russianru486Russianru4860Russianru4861Russianru4862Russianru4863Russianru4864Russianru4865Russianru4866Russianru4867Russianru4868Russianru4869Russianru487Russianru4870Russianru4871Russianru4872Russianru4873Russianru4874Russianru4875Russianru4876Russianru4877Russianru4878Russianru4879Russianru488Russianru4880Russianru4881Russianru4882Russianru4883Russianru4884Russianru4885Russianru4886Russianru4887Russianru4888Russianru4889Russianru489Russianru4890Russianru4891Russianru4892Russianru4893Russianru4894Russianru4895Russianru4896Russianru4897Russianru4898Russianru4899Russianru49Russianru490Russianru4900Russianru4901Russianru4902Russianru4903Russianru4904Russianru4905Russianru4906Russianru4907Russianru4908Russianru4909Russianru491Russianru4910Russianru4911Russianru4912Russianru4913Russianru4914Russianru4915Russianru4916Russianru4917Russianru4918Russianru4919Russianru492Russianru4920Russianru4921Russianru4922Russianru4923Russianru4924Russianru4925Russianru4926Russianru4927Russianru4928Russianru4929Russianru493Russianru4930Russianru4931Russianru4932Russianru4933Russianru4934Russianru4935Russianru4936Russianru4937Russianru4938Russianru4939Russianru494Russianru4940Russianru4941Russianru4942Russianru4943Russianru4944Russianru4945Russianru4946Russianru4947Russianru4948Russianru4949Russianru495Russianru4950Russianru4951Russianru4952Russianru4953Russianru4954Russianru4955Russianru4956Russianru4957Russianru4958Russianru4959Russianru496Russianru4960Russianru4961Russianru4962Russianru4963Russianru4964Russianru4965Russianru4966Russianru4967Russianru4968Russianru4969Russianru497Russianru4970Russianru4971Russianru4972Russianru4973Russianru4974Russianru4975Russianru4976Russianru4977Russianru4978Russianru4979Russianru498Russianru4980Russianru4981Russianru4982Russianru4983Russianru4984Russianru4985Russianru4986Russianru4987Russianru4988Russianru4989Russianru499Russianru4990Russianru4991Russianru4992Russianru4993Russianru4994Russianru4995Russianru4996Russianru4997Russianru4998Russianru4999Russianru5Russianru50Russianru500Russianru5000Russianru5001Russianru5002Russianru5003Russianru5004Russianru5005Russianru5006Russianru5007Russianru5008Russianru5009Russianru501Russianru5010Russianru5011Russianru5012Russianru5013Russianru5014Russianru5015Russianru5016Russianru5017Russianru5018Russianru5019Russianru502Russianru5020Russianru5021Russianru5022Russianru5023Russianru5024Russianru5025Russianru5026Russianru5027Russianru5028Russianru5029Russianru503Russianru5030Russianru5031Russianru5032Russianru5033Russianru5034Russianru5035Russianru5036Russianru5037Russianru5038Russianru5039Russianru504Russianru5040Russianru5041Russianru5042Russianru5043Russianru5044Russianru5045Russianru5046Russianru5047Russianru5048Russianru5049Russianru505Russianru5050Russianru5051Russianru5052Russianru5053Russianru5054Russianru5055Russianru5056Russianru5057Russianru5058Russianru5059Russianru506Russianru5060Russianru5061Russianru5062Russianru5063Russianru5064Russianru5065Russianru5066Russianru5067Russianru5068Russianru5069Russianru507Russianru5070Russianru5071Russianru5072Russianru5073Russianru5074Russianru5075Russianru5076Russianru5077Russianru5078Russianru5079Russianru508Russianru5080Russianru5081Russianru5082Russianru5083Russianru5084Russianru5085Russianru5086Russianru5087Russianru5088Russianru5089Russianru509Russianru5090Russianru5091Russianru5092Russianru5093Russianru5094Russianru5095Russianru5096Russianru5097Russianru5098Russianru5099Russianru51Russianru510Russianru5100Russianru5101Russianru5102Russianru5103Russianru5104Russianru5105Russianru5106Russianru5107Russianru5108Russianru5109Russianru511Russianru5110Russianru5111Russianru5112Russianru5113Russianru5114Russianru5115Russianru5116Russianru5117Russianru5118Russianru5119Russianru512Russianru5120Russianru5121Russianru5122Russianru5123Russianru5124Russianru5125Russianru5126Russianru5127Russianru5128Russianru5129Russianru513Russianru5130Russianru5131Russianru5132Russianru5133Russianru5134Russianru5135Russianru5136Russianru5137Russianru5138Russianru5139Russianru514Russianru5140Russianru5141Russianru5142Russianru5143Russianru5144Russianru5145Russianru5146Russianru5147Russianru5148Russianru5149Russianru515Russianru5150Russianru5151Russianru5152Russianru5153Russianru5154Russianru5155Russianru5156Russianru5157Russianru5158Russianru5159Russianru516Russianru5160Russianru5161Russianru5162Russianru5163Russianru5164Russianru5165Russianru5166Russianru5167Russianru5168Russianru5169Russianru517Russianru5170Russianru5171Russianru5172Russianru5173Russianru5174Russianru5175Russianru5176Russianru5177Russianru5178Russianru5179Russianru518Russianru5180Russianru5181Russianru5182Russianru5183Russianru5184Russianru5185Russianru5186Russianru5187Russianru5188Russianru5189Russianru519Russianru5190Russianru5191Russianru5192Russianru5193Russianru5194Russianru5195Russianru5196Russianru5197Russianru5198Russianru5199Russianru52Russianru520Russianru5200Russianru5201Russianru5202Russianru5203Russianru5204Russianru5205Russianru5206Russianru5207Russianru5208Russianru5209Russianru521Russianru5210Russianru5211Russianru5212Russianru5213Russianru5214Russianru5215Russianru5216Russianru5217Russianru5218Russianru5219Russianru522Russianru5220Russianru5221Russianru5222Russianru5223Russianru5224Russianru5225Russianru5226Russianru5227Russianru5228Russianru5229Russianru523Russianru5230Russianru5231Russianru5232Russianru5233Russianru5234Russianru5235Russianru5236Russianru5237Russianru5238Russianru5239Russianru524Russianru5240Russianru5241Russianru5242Russianru5243Russianru5244Russianru5245Russianru5246Russianru5247Russianru5248Russianru5249Russianru525Russianru5250Russianru5251Russianru5252Russianru5253Russianru5254Russianru5255Russianru5256Russianru5257Russianru5258Russianru5259Russianru526Russianru5260Russianru5261Russianru5262Russianru5263Russianru5264Russianru5265Russianru5266Russianru5267Russianru5268Russianru5269Russianru527Russianru5270Russianru5271Russianru5272Russianru5273Russianru5274Russianru5275Russianru5276Russianru5277Russianru5278Russianru5279Russianru528Russianru5280Russianru5281Russianru5282Russianru5283Russianru5284Russianru5285Russianru5286Russianru5287Russianru5288Russianru5289Russianru529Russianru5290Russianru5291Russianru5292Russianru5293Russianru5294Russianru5295Russianru5296Russianru5297Russianru5298Russianru5299Russianru53Russianru530Russianru5300Russianru5301Russianru5302Russianru5303Russianru5304Russianru5305Russianru5306Russianru5307Russianru5308Russianru5309Russianru531Russianru5310Russianru5311Russianru5312Russianru5313Russianru5314Russianru5315Russianru5316Russianru5317Russianru5318Russianru5319Russianru532Russianru5320Russianru5321Russianru5322Russianru5323Russianru5324Russianru5325Russianru5326Russianru5327Russianru5328Russianru5329Russianru533Russianru5330Russianru5331Russianru5332Russianru5333Russianru5334Russianru5335Russianru5336Russianru5337Russianru5338Russianru5339Russianru534Russianru5340Russianru5341Russianru5342Russianru5343Russianru5344Russianru5345Russianru5346Russianru5347Russianru5348Russianru5349Russianru535Russianru5350Russianru5351Russianru5352Russianru5353Russianru5354Russianru5355Russianru5356Russianru5357Russianru5358Russianru5359Russianru536Russianru5360Russianru5361Russianru5362Russianru5363Russianru5364Russianru5365Russianru5366Russianru5367Russianru5368Russianru5369Russianru537Russianru5370Russianru5371Russianru5372Russianru5373Russianru5374Russianru5375Russianru5376Russianru5377Russianru5378Russianru5379Russianru538Russianru5380Russianru5381Russianru5382Russianru5383Russianru5384Russianru5385Russianru5386Russianru5387Russianru5388Russianru5389Russianru539Russianru5390Russianru5391Russianru5392Russianru5393Russianru5394Russianru5395Russianru5396Russianru5397Russianru5398Russianru5399Russianru54Russianru540Russianru5400Russianru5401Russianru5402Russianru5403Russianru5404Russianru5405Russianru5406Russianru5407Russianru5408Russianru5409Russianru541Russianru5410Russianru5411Russianru5412Russianru5413Russianru5414Russianru5415Russianru5416Russianru5417Russianru5418Russianru5419Russianru542Russianru5420Russianru5421Russianru5422Russianru5423Russianru5424Russianru5425Russianru5426Russianru5427Russianru5428Russianru5429Russianru543Russianru5430Russianru5431Russianru5432Russianru5433Russianru5434Russianru5435Russianru5436Russianru5437Russianru5438Russianru5439Russianru544Russianru5440Russianru5441Russianru5442Russianru5443Russianru5444Russianru5445Russianru5446Russianru5447Russianru5448Russianru5449Russianru545Russianru5450Russianru5451Russianru5452Russianru5453Russianru5454Russianru5455Russianru5456Russianru5457Russianru5458Russianru5459Russianru546Russianru5460Russianru5461Russianru5462Russianru5463Russianru5464Russianru5465Russianru5466Russianru5467Russianru5468Russianru5469Russianru547Russianru5470Russianru5471Russianru5472Russianru5473Russianru5474Russianru5475Russianru5476Russianru5477Russianru5478Russianru5479Russianru548Russianru5480Russianru5481Russianru5482Russianru5483Russianru5484Russianru5485Russianru5486Russianru5487Russianru5488Russianru5489Russianru549Russianru5490Russianru5491Russianru5492Russianru5493Russianru5494Russianru5495Russianru5496Russianru5497Russianru5498Russianru5499Russianru55Russianru550Russianru5500Russianru5501Russianru5502Russianru5503Russianru5504Russianru5505Russianru5506Russianru5507Russianru5508Russianru5509Russianru551Russianru5510Russianru5511Russianru5512Russianru5513Russianru5514Russianru5515Russianru5516Russianru5517Russianru5518Russianru5519Russianru552Russianru5520Russianru5521Russianru5522Russianru5523Russianru5524Russianru5525Russianru5526Russianru5527Russianru5528Russianru5529Russianru553Russianru5530Russianru5531Russianru5532Russianru5533Russianru5534Russianru5535Russianru5536Russianru5537Russianru5538Russianru5539Russianru554Russianru5540Russianru5541Russianru5542Russianru5543Russianru5544Russianru5545Russianru5546Russianru5547Russianru5548Russianru5549Russianru555Russianru5550Russianru5551Russianru5552Russianru5553Russianru5554Russianru5555Russianru5556Russianru5557Russianru5558Russianru5559Russianru556Russianru5560Russianru5561Russianru5562Russianru5563Russianru5564Russianru5565Russianru5566Russianru5567Russianru5568Russianru5569Russianru557Russianru5570Russianru5571Russianru5572Russianru5573Russianru5574Russianru5575Russianru5576Russianru5577Russianru5578Russianru5579Russianru558Russianru5580Russianru5581Russianru5582Russianru5583Russianru5584Russianru5585Russianru5586Russianru5587Russianru5588Russianru5589Russianru559Russianru5590Russianru5591Russianru5592Russianru5593Russianru5594Russianru5595Russianru5596Russianru5597Russianru5598Russianru5599Russianru56Russianru560Russianru5600Russianru5601Russianru5602Russianru5603Russianru5604Russianru5605Russianru5606Russianru5607Russianru5608Russianru5609Russianru561Russianru5610Russianru5611Russianru5612Russianru5613Russianru5614Russianru5615Russianru5616Russianru5617Russianru5618Russianru5619Russianru562Russianru5620Russianru5621Russianru5622Russianru5623Russianru5624Russianru5625Russianru5626Russianru5627Russianru5628Russianru5629Russianru563Russianru5630Russianru5631Russianru5632Russianru5633Russianru5634Russianru5635Russianru5636Russianru5637Russianru5638Russianru5639Russianru564Russianru5640Russianru5641Russianru5642Russianru5643Russianru5644Russianru5645Russianru5646Russianru5647Russianru5648Russianru5649Russianru565Russianru5650Russianru5651Russianru5652Russianru5653Russianru5654Russianru5655Russianru5656Russianru5657Russianru5658Russianru5659Russianru566Russianru5660Russianru5661Russianru5662Russianru5663Russianru5664Russianru5665Russianru5666Russianru5667Russianru5668Russianru5669Russianru567Russianru5670Russianru5671Russianru5672Russianru5673Russianru5674Russianru5675Russianru5676Russianru5677Russianru5678Russianru5679Russianru568Russianru5680Russianru5681Russianru5682Russianru5683Russianru5684Russianru5685Russianru5686Russianru5687Russianru5688Russianru5689Russianru569Russianru5690Russianru5691Russianru5692Russianru5693Russianru5694Russianru5695Russianru5696Russianru5697Russianru5698Russianru5699Russianru57Russianru570Russianru5700Russianru5701Russianru5702Russianru5703Russianru5704Russianru5705Russianru5706Russianru5707Russianru5708Russianru5709Russianru571Russianru5710Russianru5711Russianru5712Russianru5713Russianru5714Russianru5715Russianru5716Russianru5717Russianru5718Russianru5719Russianru572Russianru5720Russianru5721Russianru5722Russianru5723Russianru5724Russianru5725Russianru5726Russianru5727Russianru5728Russianru5729Russianru573Russianru5730Russianru5731Russianru5732Russianru5733Russianru5734Russianru5735Russianru5736Russianru5737Russianru5738Russianru5739Russianru574Russianru5740Russianru5741Russianru5742Russianru5743Russianru5744Russianru5745Russianru5746Russianru5747Russianru5748Russianru5749Russianru575Russianru5750Russianru5751Russianru5752Russianru5753Russianru5754Russianru5755Russianru5756Russianru5757Russianru5758Russianru5759Russianru576Russianru5760Russianru5761Russianru5762Russianru5763Russianru5764Russianru5765Russianru5766Russianru5767Russianru5768Russianru5769Russianru577Russianru5770Russianru5771Russianru5772Russianru5773Russianru5774Russianru5775Russianru5776Russianru5777Russianru5778Russianru5779Russianru578Russianru5780Russianru5781Russianru5782Russianru5783Russianru5784Russianru5785Russianru5786Russianru5787Russianru5788Russianru5789Russianru579Russianru5790Russianru5791Russianru5792Russianru5793Russianru5794Russianru5795Russianru5796Russianru5797Russianru5798Russianru5799Russianru58Russianru580Russianru5800Russianru5801Russianru5802Russianru5803Russianru5804Russianru5805Russianru5806Russianru5807Russianru5808Russianru5809Russianru581Russianru5810Russianru5811Russianru5812Russianru5813Russianru5814Russianru5815Russianru5816Russianru5817Russianru5818Russianru5819Russianru582Russianru5820Russianru5821Russianru5822Russianru5823Russianru5824Russianru5825Russianru5826Russianru5827Russianru5828Russianru5829Russianru583Russianru5830Russianru5831Russianru5832Russianru5833Russianru5834Russianru5835Russianru5836Russianru5837Russianru5838Russianru5839Russianru584Russianru5840Russianru5841Russianru5842Russianru5843Russianru5844Russianru5845Russianru5846Russianru5847Russianru5848Russianru5849Russianru585Russianru5850Russianru5851Russianru5852Russianru5853Russianru5854Russianru5855Russianru5856Russianru5857Russianru5858Russianru5859Russianru586Russianru5860Russianru5861Russianru5862Russianru5863Russianru5864Russianru5865Russianru5866Russianru5867Russianru5868Russianru5869Russianru587Russianru5870Russianru5871Russianru5872Russianru5873Russianru5874Russianru5875Russianru5876Russianru5877Russianru5878Russianru5879Russianru588Russianru5880Russianru5881Russianru5882Russianru5883Russianru5884Russianru5885Russianru5886Russianru5887Russianru5888Russianru5889Russianru589Russianru5890Russianru5891Russianru5892Russianru5893Russianru5894Russianru5895Russianru5896Russianru5897Russianru5898Russianru5899Russianru59Russianru590Russianru5900Russianru5901Russianru5902Russianru5903Russianru5904Russianru5905Russianru5906Russianru5907Russianru5908Russianru5909Russianru591Russianru5910Russianru5911Russianru5912Russianru5913Russianru5914Russianru5915Russianru5916Russianru5917Russianru5918Russianru5919Russianru592Russianru5920Russianru5921Russianru5922Russianru5923Russianru5924Russianru5925Russianru5926Russianru5927Russianru5928Russianru5929Russianru593Russianru5930Russianru5931Russianru5932Russianru5933Russianru5934Russianru5935Russianru5936Russianru5937Russianru5938Russianru5939Russianru594Russianru5940Russianru5941Russianru5942Russianru5943Russianru5944Russianru5945Russianru5946Russianru5947Russianru5948Russianru5949Russianru595Russianru5950Russianru5951Russianru5952Russianru5953Russianru5954Russianru5955Russianru5956Russianru5957Russianru5958Russianru5959Russianru596Russianru5960Russianru5961Russianru5962Russianru5963Russianru5964Russianru5965Russianru5966Russianru5967Russianru5968Russianru5969Russianru597Russianru5970Russianru5971Russianru5972Russianru5973Russianru5974Russianru5975Russianru5976Russianru5977Russianru5978Russianru5979Russianru598Russianru5980Russianru5981Russianru5982Russianru5983Russianru5984Russianru5985Russianru5986Russianru5987Russianru5988Russianru5989Russianru599Russianru5990Russianru5991Russianru5992Russianru5993Russianru5994Russianru5995Russianru5996Russianru5997Russianru5998Russianru5999Russianru6Russianru60Russianru600Russianru6000Russianru6001Russianru6002Russianru6003Russianru6004Russianru6005Russianru6006Russianru6007Russianru6008Russianru6009Russianru601Russianru6010Russianru6011Russianru6012Russianru6013Russianru6014Russianru6015Russianru6016Russianru6017Russianru6018Russianru6019Russianru602Russianru6020Russianru6021Russianru6022Russianru6023Russianru6024Russianru6025Russianru6026Russianru6027Russianru6028Russianru6029Russianru603Russianru6030Russianru6031Russianru6032Russianru6033Russianru6034Russianru6035Russianru6036Russianru6037Russianru6038Russianru6039Russianru604Russianru6040Russianru6041Russianru6042Russianru6043Russianru6044Russianru6045Russianru6046Russianru6047Russianru6048Russianru6049Russianru605Russianru6050Russianru6051Russianru6052Russianru6053Russianru6054Russianru6055Russianru6056Russianru6057Russianru6058Russianru6059Russianru606Russianru6060Russianru6061Russianru6062Russianru6063Russianru6064Russianru6065Russianru6066Russianru6067Russianru6068Russianru6069Russianru607Russianru6070Russianru6071Russianru6072Russianru6073Russianru6074Russianru6075Russianru6076Russianru6077Russianru6078Russianru6079Russianru608Russianru6080Russianru6081Russianru6082Russianru6083Russianru6084Russianru6085Russianru6086Russianru6087Russianru6088Russianru6089Russianru609Russianru6090Russianru6091Russianru6092Russianru6093Russianru6094Russianru6095Russianru6096Russianru6097Russianru6098Russianru6099Russianru61Russianru610Russianru6100Russianru6101Russianru6102Russianru6103Russianru6104Russianru6105Russianru6106Russianru6107Russianru6108Russianru6109Russianru611Russianru6110Russianru6111Russianru6112Russianru6113Russianru6114Russianru6115Russianru6116Russianru6117Russianru6118Russianru6119Russianru612Russianru6120Russianru6121Russianru6122Russianru6123Russianru6124Russianru6125Russianru6126Russianru6127Russianru6128Russianru6129Russianru613Russianru6130Russianru6131Russianru6132Russianru6133Russianru6134Russianru6135Russianru6136Russianru6137Russianru6138Russianru6139Russianru614Russianru6140Russianru6141Russianru6142Russianru6143Russianru6144Russianru6145Russianru6146Russianru6147Russianru6148Russianru6149Russianru615Russianru6150Russianru6151Russianru6152Russianru6153Russianru6154Russianru6155Russianru6156Russianru6157Russianru6158Russianru6159Russianru616Russianru6160Russianru6161Russianru6162Russianru6163Russianru6164Russianru6165Russianru6166Russianru6167Russianru6168Russianru6169Russianru617Russianru6170Russianru6171Russianru6172Russianru6173Russianru6174Russianru6175Russianru6176Russianru6177Russianru6178Russianru6179Russianru618Russianru6180Russianru6181Russianru6182Russianru6183Russianru6184Russianru6185Russianru6186Russianru6187Russianru6188Russianru6189Russianru619Russianru6190Russianru6191Russianru6192Russianru6193Russianru6194Russianru6195Russianru6196Russianru6197Russianru6198Russianru6199Russianru62Russianru620Russianru6200Russianru6201Russianru6202Russianru6203Russianru6204Russianru6205Russianru6206Russianru6207Russianru6208Russianru6209Russianru621Russianru6210Russianru6211Russianru6212Russianru6213Russianru6214Russianru6215Russianru6216Russianru6217Russianru6218Russianru6219Russianru622Russianru6220Russianru6221Russianru6222Russianru6223Russianru6224Russianru6225Russianru6226Russianru6227Russianru6228Russianru6229Russianru623Russianru6230Russianru6231Russianru6232Russianru6233Russianru6234Russianru6235Russianru6236Russianru6237Russianru6238Russianru6239Russianru624Russianru6240Russianru6241Russianru6242Russianru6243Russianru6244Russianru6245Russianru6246Russianru6247Russianru6248Russianru6249Russianru625Russianru6250Russianru6251Russianru6252Russianru6253Russianru6254Russianru6255Russianru6256Russianru6257Russianru6258Russianru6259Russianru626Russianru6260Russianru6261Russianru6262Russianru6263Russianru6264Russianru6265Russianru6266Russianru6267Russianru6268Russianru6269Russianru627Russianru6270Russianru6271Russianru6272Russianru6273Russianru6274Russianru6275Russianru6276Russianru6277Russianru6278Russianru6279Russianru628Russianru6280Russianru6281Russianru6282Russianru6283Russianru6284Russianru6285Russianru6286Russianru6287Russianru6288Russianru6289Russianru629Russianru6290Russianru6291Russianru6292Russianru6293Russianru6294Russianru6295Russianru6296Russianru6297Russianru6298Russianru6299Russianru63Russianru630Russianru6300Russianru6301Russianru6302Russianru6303Russianru6304Russianru6305Russianru6306Russianru6307Russianru6308Russianru6309Russianru631Russianru6310Russianru6311Russianru6312Russianru6313Russianru6314Russianru6315Russianru6316Russianru6317Russianru6318Russianru6319Russianru632Russianru6320Russianru6321Russianru6322Russianru6323Russianru6324Russianru6325Russianru6326Russianru6327Russianru6328Russianru6329Russianru633Russianru6330Russianru6331Russianru6332Russianru6333Russianru6334Russianru6335Russianru6336Russianru6337Russianru6338Russianru6339Russianru634Russianru6340Russianru6341Russianru6342Russianru6343Russianru6344Russianru6345Russianru6346Russianru6347Russianru6348Russianru6349Russianru635Russianru6350Russianru6351Russianru6352Russianru6353Russianru6354Russianru6355Russianru6356Russianru6357Russianru6358Russianru6359Russianru636Russianru6360Russianru6361Russianru6362Russianru6363Russianru6364Russianru6365Russianru6366Russianru6367Russianru6368Russianru6369Russianru637Russianru6370Russianru6371Russianru6372Russianru6373Russianru6374Russianru6375Russianru6376Russianru6377Russianru6378Russianru6379Russianru638Russianru6380Russianru6381Russianru6382Russianru6383Russianru6384Russianru6385Russianru6386Russianru6387Russianru6388Russianru6389Russianru639Russianru6390Russianru6391Russianru6392Russianru6393Russianru6394Russianru6395Russianru6396Russianru6397Russianru6398Russianru6399Russianru64Russianru640Russianru6400Russianru6401Russianru6402Russianru6403Russianru6404Russianru6405Russianru6406Russianru6407Russianru6408Russianru6409Russianru641Russianru6410Russianru6411Russianru6412Russianru6413Russianru6414Russianru6415Russianru6416Russianru6417Russianru6418Russianru6419Russianru642Russianru6420Russianru6421Russianru6422Russianru6423Russianru6424Russianru6425Russianru6426Russianru6427Russianru6428Russianru6429Russianru643Russianru6430Russianru6431Russianru6432Russianru6433Russianru6434Russianru6435Russianru6436Russianru6437Russianru6438Russianru6439Russianru644Russianru6440Russianru6441Russianru6442Russianru6443Russianru6444Russianru6445Russianru6446Russianru6447Russianru6448Russianru6449Russianru645Russianru6450Russianru6451Russianru6452Russianru6453Russianru6454Russianru6455Russianru6456Russianru6457Russianru6458Russianru6459Russianru646Russianru6460Russianru6461Russianru6462Russianru6463Russianru6464Russianru6465Russianru6466Russianru6467Russianru6468Russianru6469Russianru647Russianru6470Russianru6471Russianru6472Russianru6473Russianru6474Russianru6475Russianru6476Russianru6477Russianru6478Russianru6479Russianru648Russianru6480Russianru6481Russianru6482Russianru6483Russianru6484Russianru6485Russianru6486Russianru6487Russianru6488Russianru6489Russianru649Russianru6490Russianru6491Russianru6492Russianru6493Russianru6494Russianru6495Russianru6496Russianru6497Russianru6498Russianru6499Russianru65Russianru650Russianru6500Russianru6501Russianru6502Russianru6503Russianru6504Russianru6505Russianru6506Russianru6507Russianru6508Russianru6509Russianru651Russianru6510Russianru6511Russianru6512Russianru6513Russianru6514Russianru6515Russianru6516Russianru6517Russianru6518Russianru6519Russianru652Russianru6520Russianru6521Russianru6522Russianru6523Russianru6524Russianru6525Russianru6526Russianru6527Russianru6528Russianru6529Russianru653Russianru6530Russianru6531Russianru6532Russianru6533Russianru6534Russianru6535Russianru6536Russianru6537Russianru6538Russianru6539Russianru654Russianru6540Russianru6541Russianru6542Russianru6543Russianru6544Russianru6545Russianru6546Russianru6547Russianru6548Russianru6549Russianru655Russianru6550Russianru6551Russianru6552Russianru6553Russianru6554Russianru6555Russianru6556Russianru6557Russianru6558Russianru6559Russianru656Russianru6560Russianru6561Russianru6562Russianru6563Russianru6564Russianru6565Russianru6566Russianru6567Russianru6568Russianru6569Russianru657Russianru6570Russianru6571Russianru6572Russianru6573Russianru6574Russianru6575Russianru6576Russianru6577Russianru6578Russianru6579Russianru658Russianru6580Russianru6581Russianru6582Russianru6583Russianru6584Russianru6585Russianru6586Russianru6587Russianru6588Russianru6589Russianru659Russianru6590Russianru6591Russianru6592Russianru6593Russianru6594Russianru6595Russianru6596Russianru6597Russianru6598Russianru6599Russianru66Russianru660Russianru6600Russianru6601Russianru6602Russianru6603Russianru6604Russianru6605Russianru6606Russianru6607Russianru6608Russianru6609Russianru661Russianru6610Russianru6611Russianru6612Russianru6613Russianru6614Russianru6615Russianru6616Russianru6617Russianru6618Russianru6619Russianru662Russianru6620Russianru6621Russianru6622Russianru6623Russianru6624Russianru6625Russianru6626Russianru6627Russianru6628Russianru6629Russianru663Russianru6630Russianru6631Russianru6632Russianru6633Russianru6634Russianru6635Russianru6636Russianru6637Russianru6638Russianru6639Russianru664Russianru6640Russianru6641Russianru6642Russianru6643Russianru6644Russianru6645Russianru6646Russianru6647Russianru6648Russianru6649Russianru665Russianru6650Russianru6651Russianru6652Russianru6653Russianru6654Russianru6655Russianru6656Russianru6657Russianru6658Russianru6659Russianru666Russianru6660Russianru6661Russianru6662Russianru6663Russianru6664Russianru6665Russianru6666Russianru6667Russianru6668Russianru6669Russianru667Russianru6670Russianru6671Russianru6672Russianru6673Russianru6674Russianru6675Russianru6676Russianru6677Russianru6678Russianru6679Russianru668Russianru6680Russianru6681Russianru6682Russianru6683Russianru6684Russianru6685Russianru6686Russianru6687Russianru6688Russianru6689Russianru669Russianru6690Russianru6691Russianru6692Russianru6693Russianru6694Russianru6695Russianru6696Russianru6697Russianru6698Russianru6699Russianru67Russianru670Russianru6700Russianru6701Russianru6702Russianru6703Russianru6704Russianru6705Russianru6706Russianru6707Russianru6708Russianru6709Russianru671Russianru6710Russianru6711Russianru6712Russianru6713Russianru6714Russianru6715Russianru6716Russianru6717Russianru6718Russianru6719Russianru672Russianru6720Russianru6721Russianru6722Russianru6723Russianru6724Russianru6725Russianru6726Russianru6727Russianru6728Russianru6729Russianru673Russianru6730Russianru6731Russianru6732Russianru6733Russianru6734Russianru6735Russianru6736Russianru6737Russianru6738Russianru6739Russianru674Russianru6740Russianru6741Russianru6742Russianru6743Russianru6744Russianru6745Russianru6746Russianru6747Russianru6748Russianru6749Russianru675Russianru6750Russianru6751Russianru6752Russianru6753Russianru6754Russianru6755Russianru6756Russianru6757Russianru6758Russianru6759Russianru676Russianru6760Russianru6761Russianru6762Russianru6763Russianru6764Russianru6765Russianru6766Russianru6767Russianru6768Russianru6769Russianru677Russianru6770Russianru6771Russianru6772Russianru6773Russianru6774Russianru6775Russianru6776Russianru6777Russianru6778Russianru6779Russianru678Russianru6780Russianru6781Russianru6782Russianru6783Russianru6784Russianru6785Russianru6786Russianru6787Russianru6788Russianru6789Russianru679Russianru6790Russianru6791Russianru6792Russianru6793Russianru6794Russianru6795Russianru6796Russianru6797Russianru6798Russianru6799Russianru68Russianru680Russianru6800Russianru6801Russianru6802Russianru6803Russianru6804Russianru6805Russianru6806Russianru6807Russianru6808Russianru6809Russianru681Russianru6810Russianru6811Russianru6812Russianru6813Russianru6814Russianru6815Russianru6816Russianru6817Russianru6818Russianru6819Russianru682Russianru6820Russianru6821Russianru6822Russianru6823Russianru6824Russianru6825Russianru6826Russianru6827Russianru6828Russianru6829Russianru683Russianru6830Russianru6831Russianru6832Russianru6833Russianru6834Russianru6835Russianru6836Russianru6837Russianru6838Russianru6839Russianru684Russianru6840Russianru6841Russianru6842Russianru6843Russianru6844Russianru6845Russianru6846Russianru6847Russianru6848Russianru6849Russianru685Russianru6850Russianru6851Russianru6852Russianru6853Russianru6854Russianru6855Russianru6856Russianru6857Russianru6858Russianru6859Russianru686Russianru6860Russianru6861Russianru6862Russianru6863Russianru6864Russianru6865Russianru6866Russianru6867Russianru6868Russianru6869Russianru687Russianru6870Russianru6871Russianru6872Russianru6873Russianru6874Russianru6875Russianru6876Russianru6877Russianru6878Russianru6879Russianru688Russianru6880Russianru6881Russianru6882Russianru6883Russianru6884Russianru6885Russianru6886Russianru6887Russianru6888Russianru6889Russianru689Russianru6890Russianru6891Russianru6892Russianru6893Russianru6894Russianru6895Russianru6896Russianru6897Russianru6898Russianru6899Russianru69Russianru690Russianru6900Russianru6901Russianru6902Russianru6903Russianru6904Russianru6905Russianru6906Russianru6907Russianru6908Russianru6909Russianru691Russianru6910Russianru6911Russianru6912Russianru6913Russianru6914Russianru6915Russianru6916Russianru6917Russianru6918Russianru6919Russianru692Russianru6920Russianru6921Russianru6922Russianru6923Russianru6924Russianru6925Russianru6926Russianru6927Russianru6928Russianru6929Russianru693Russianru6930Russianru6931Russianru6932Russianru6933Russianru6934Russianru6935Russianru6936Russianru6937Russianru6938Russianru6939Russianru694Russianru6940Russianru6941Russianru6942Russianru6943Russianru6944Russianru6945Russianru6946Russianru6947Russianru6948Russianru6949Russianru695Russianru6950Russianru6951Russianru6952Russianru6953Russianru6954Russianru6955Russianru6956Russianru6957Russianru6958Russianru6959Russianru696Russianru6960Russianru6961Russianru6962Russianru6963Russianru6964Russianru6965Russianru6966Russianru6967Russianru6968Russianru6969Russianru697Russianru6970Russianru6971Russianru6972Russianru6973Russianru6974Russianru6975Russianru6976Russianru6977Russianru6978Russianru6979Russianru698Russianru6980Russianru6981Russianru6982Russianru6983Russianru6984Russianru6985Russianru6986Russianru6987Russianru6988Russianru6989Russianru699Russianru6990Russianru6991Russianru6992Russianru6993Russianru6994Russianru6995Russianru6996Russianru6997Russianru6998Russianru6999Russianru7Russianru70Russianru700Russianru7000Russianru7001Russianru7002Russianru7003Russianru7004Russianru7005Russianru7006Russianru7007Russianru7008Russianru7009Russianru701Russianru7010Russianru7011Russianru7012Russianru7013Russianru7014Russianru7015Russianru7016Russianru7017Russianru7018Russianru7019Russianru702Russianru7020Russianru7021Russianru7022Russianru7023Russianru7024Russianru7025Russianru7026Russianru7027Russianru7028Russianru7029Russianru703Russianru7030Russianru7031Russianru7032Russianru7033Russianru7034Russianru7035Russianru7036Russianru7037Russianru7038Russianru7039Russianru704Russianru7040Russianru7041Russianru7042Russianru7043Russianru7044Russianru7045Russianru7046Russianru7047Russianru7048Russianru7049Russianru705Russianru7050Russianru7051Russianru7052Russianru7053Russianru7054Russianru7055Russianru7056Russianru7057Russianru7058Russianru7059Russianru706Russianru7060Russianru7061Russianru7062Russianru7063Russianru7064Russianru7065Russianru7066Russianru7067Russianru7068Russianru7069Russianru707Russianru7070Russianru7071Russianru7072Russianru7073Russianru7074Russianru7075Russianru7076Russianru7077Russianru7078Russianru7079Russianru708Russianru7080Russianru7081Russianru7082Russianru7083Russianru7084Russianru7085Russianru7086Russianru7087Russianru7088Russianru7089Russianru709Russianru7090Russianru7091Russianru7092Russianru7093Russianru7094Russianru7095Russianru7096Russianru7097Russianru7098Russianru7099Russianru71Russianru710Russianru7100Russianru7101Russianru7102Russianru7103Russianru7104Russianru7105Russianru7106Russianru7107Russianru7108Russianru7109Russianru711Russianru7110Russianru7111Russianru7112Russianru7113Russianru7114Russianru7115Russianru7116Russianru7117Russianru7118Russianru7119Russianru712Russianru7120Russianru7121Russianru7122Russianru7123Russianru7124Russianru7125Russianru7126Russianru7127Russianru7128Russianru7129Russianru713Russianru7130Russianru7131Russianru7132Russianru7133Russianru7134Russianru7135Russianru7136Russianru7137Russianru7138Russianru7139Russianru714Russianru7140Russianru7141Russianru7142Russianru7143Russianru7144Russianru7145Russianru7146Russianru7147Russianru7148Russianru7149Russianru715Russianru7150Russianru7151Russianru7152Russianru7153Russianru7154Russianru7155Russianru7156Russianru7157Russianru7158Russianru7159Russianru716Russianru7160Russianru7161Russianru7162Russianru7163Russianru7164Russianru7165Russianru7166Russianru7167Russianru7168Russianru7169Russianru717Russianru7170Russianru7171Russianru7172Russianru7173Russianru7174Russianru7175Russianru7176Russianru7177Russianru7178Russianru7179Russianru718Russianru7180Russianru7181Russianru7182Russianru7183Russianru7184Russianru7185Russianru7186Russianru7187Russianru7188Russianru7189Russianru719Russianru7190Russianru7191Russianru7192Russianru7193Russianru7194Russianru7195Russianru7196Russianru7197Russianru7198Russianru7199Russianru72Russianru720Russianru7200Russianru7201Russianru7202Russianru7203Russianru7204Russianru7205Russianru7206Russianru7207Russianru7208Russianru7209Russianru721Russianru7210Russianru7211Russianru7212Russianru7213Russianru7214Russianru7215Russianru7216Russianru7217Russianru7218Russianru7219Russianru722Russianru7220Russianru7221Russianru7222Russianru7223Russianru7224Russianru7225Russianru7226Russianru7227Russianru7228Russianru7229Russianru723Russianru7230Russianru7231Russianru7232Russianru7233Russianru7234Russianru7235Russianru7236Russianru7237Russianru7238Russianru7239Russianru724Russianru7240Russianru7241Russianru7242Russianru7243Russianru7244Russianru7245Russianru7246Russianru7247Russianru7248Russianru7249Russianru725Russianru7250Russianru7251Russianru7252Russianru7253Russianru7254Russianru7255Russianru7256Russianru7257Russianru7258Russianru7259Russianru726Russianru7260Russianru7261Russianru7262Russianru7263Russianru7264Russianru7265Russianru7266Russianru7267Russianru7268Russianru7269Russianru727Russianru7270Russianru7271Russianru7272Russianru7273Russianru7274Russianru7275Russianru7276Russianru7277Russianru7278Russianru7279Russianru728Russianru7280Russianru7281Russianru7282Russianru7283Russianru7284Russianru7285Russianru7286Russianru7287Russianru7288Russianru7289Russianru729Russianru7290Russianru7291Russianru7292Russianru7293Russianru7294Russianru7295Russianru7296Russianru7297Russianru7298Russianru7299Russianru73Russianru730Russianru7300Russianru7301Russianru7302Russianru7303Russianru7304Russianru7305Russianru7306Russianru7307Russianru7308Russianru7309Russianru731Russianru7310Russianru7311Russianru7312Russianru7313Russianru7314Russianru7315Russianru7316Russianru7317Russianru7318Russianru7319Russianru732Russianru7320Russianru7321Russianru7322Russianru7323Russianru7324Russianru7325Russianru7326Russianru7327Russianru7328Russianru7329Russianru733Russianru7330Russianru7331Russianru7332Russianru7333Russianru7334Russianru7335Russianru7336Russianru7337Russianru7338Russianru7339Russianru734Russianru7340Russianru7341Russianru7342Russianru7343Russianru7344Russianru7345Russianru7346Russianru7347Russianru7348Russianru7349Russianru735Russianru7350Russianru7351Russianru7352Russianru7353Russianru7354Russianru7355Russianru7356Russianru7357Russianru7358Russianru7359Russianru736Russianru7360Russianru7361Russianru7362Russianru7363Russianru7364Russianru7365Russianru7366Russianru7367Russianru7368Russianru7369Russianru737Russianru7370Russianru7371Russianru7372Russianru7373Russianru7374Russianru7375Russianru7376Russianru7377Russianru7378Russianru7379Russianru738Russianru7380Russianru7381Russianru7382Russianru7383Russianru7384Russianru7385Russianru7386Russianru7387Russianru7388Russianru7389Russianru739Russianru7390Russianru7391Russianru7392Russianru7393Russianru7394Russianru7395Russianru7396Russianru7397Russianru7398Russianru7399Russianru74Russianru740Russianru7400Russianru7401Russianru7402Russianru7403Russianru7404Russianru7405Russianru7406Russianru7407Russianru7408Russianru7409Russianru741Russianru7410Russianru7411Russianru7412Russianru7413Russianru7414Russianru7415Russianru7416Russianru7417Russianru7418Russianru7419Russianru742Russianru7420Russianru7421Russianru7422Russianru7423Russianru7424Russianru7425Russianru7426Russianru7427Russianru7428Russianru7429Russianru743Russianru7430Russianru7431Russianru7432Russianru7433Russianru7434Russianru7435Russianru7436Russianru7437Russianru7438Russianru7439Russianru744Russianru7440Russianru7441Russianru7442Russianru7443Russianru7444Russianru7445Russianru7446Russianru7447Russianru7448Russianru7449Russianru745Russianru7450Russianru7451Russianru7452Russianru7453Russianru7454Russianru7455Russianru7456Russianru7457Russianru7458Russianru7459Russianru746Russianru7460Russianru7461Russianru7462Russianru7463Russianru7464Russianru7465Russianru7466Russianru7467Russianru7468Russianru7469Russianru747Russianru7470Russianru7471Russianru7472Russianru7473Russianru7474Russianru7475Russianru7476Russianru7477Russianru7478Russianru7479Russianru748Russianru7480Russianru7481Russianru7482Russianru7483Russianru7484Russianru7485Russianru7486Russianru7487Russianru7488Russianru7489Russianru749Russianru7490Russianru7491Russianru7492Russianru7493Russianru7494Russianru7495Russianru7496Russianru7497Russianru7498Russianru7499Russianru75Russianru750Russianru7500Russianru7501Russianru7502Russianru7503Russianru7504Russianru7505Russianru7506Russianru7507Russianru7508Russianru7509Russianru751Russianru7510Russianru7511Russianru7512Russianru7513Russianru7514Russianru7515Russianru7516Russianru7517Russianru7518Russianru7519Russianru752Russianru7520Russianru7521Russianru7522Russianru7523Russianru7524Russianru7525Russianru7526Russianru7527Russianru7528Russianru7529Russianru753Russianru7530Russianru7531Russianru7532Russianru7533Russianru7534Russianru7535Russianru7536Russianru7537Russianru7538Russianru7539Russianru754Russianru7540Russianru7541Russianru7542Russianru7543Russianru7544Russianru7545Russianru7546Russianru7547Russianru7548Russianru7549Russianru755Russianru7550Russianru7551Russianru7552Russianru7553Russianru7554Russianru7555Russianru7556Russianru7557Russianru7558Russianru7559Russianru756Russianru7560Russianru7561Russianru7562Russianru7563Russianru7564Russianru7565Russianru7566Russianru7567Russianru7568Russianru7569Russianru757Russianru7570Russianru7571Russianru7572Russianru7573Russianru7574Russianru7575Russianru7576Russianru7577Russianru7578Russianru7579Russianru758Russianru7580Russianru7581Russianru7582Russianru7583Russianru7584Russianru7585Russianru7586Russianru7587Russianru7588Russianru7589Russianru759Russianru7590Russianru7591Russianru7592Russianru7593Russianru7594Russianru7595Russianru7596Russianru7597Russianru7598Russianru7599Russianru76Russianru760Russianru7600Russianru7601Russianru7602Russianru7603Russianru7604Russianru7605Russianru7606Russianru7607Russianru7608Russianru7609Russianru761Russianru7610Russianru7611Russianru7612Russianru7613Russianru7614Russianru7615Russianru7616Russianru7617Russianru7618Russianru7619Russianru762Russianru7620Russianru7621Russianru7622Russianru7623Russianru7624Russianru7625Russianru7626Russianru7627Russianru7628Russianru7629Russianru763Russianru7630Russianru7631Russianru7632Russianru7633Russianru7634Russianru7635Russianru7636Russianru7637Russianru7638Russianru7639Russianru764Russianru7640Russianru7641Russianru7642Russianru7643Russianru7644Russianru7645Russianru7646Russianru7647Russianru7648Russianru7649Russianru765Russianru7650Russianru7651Russianru7652Russianru7653Russianru7654Russianru7655Russianru7656Russianru7657Russianru7658Russianru7659Russianru766Russianru7660Russianru7661Russianru7662Russianru7663Russianru7664Russianru7665Russianru7666Russianru7667Russianru7668Russianru7669Russianru767Russianru7670Russianru7671Russianru7672Russianru7673Russianru7674Russianru7675Russianru7676Russianru7677Russianru7678Russianru7679Russianru768Russianru7680Russianru7681Russianru7682Russianru7683Russianru7684Russianru7685Russianru7686Russianru7687Russianru7688Russianru7689Russianru769Russianru7690Russianru7691Russianru7692Russianru7693Russianru7694Russianru7695Russianru7696Russianru7697Russianru7698Russianru7699Russianru77Russianru770Russianru7700Russianru7701Russianru7702Russianru7703Russianru7704Russianru7705Russianru7706Russianru7707Russianru7708Russianru7709Russianru771Russianru7710Russianru7711Russianru7712Russianru7713Russianru7714Russianru7715Russianru7716Russianru7717Russianru7718Russianru7719Russianru772Russianru7720Russianru7721Russianru7722Russianru7723Russianru7724Russianru7725Russianru7726Russianru7727Russianru7728Russianru7729Russianru773Russianru7730Russianru7731Russianru7732Russianru7733Russianru7734Russianru7735Russianru7736Russianru7737Russianru7738Russianru7739Russianru774Russianru7740Russianru7741Russianru7742Russianru7743Russianru7744Russianru7745Russianru7746Russianru7747Russianru7748Russianru7749Russianru775Russianru7750Russianru7751Russianru7752Russianru7753Russianru7754Russianru7755Russianru7756Russianru7757Russianru7758Russianru7759Russianru776Russianru7760Russianru7761Russianru7762Russianru7763Russianru7764Russianru7765Russianru7766Russianru7767Russianru7768Russianru7769Russianru777Russianru7770Russianru7771Russianru7772Russianru7773Russianru7774Russianru7775Russianru7776Russianru7777Russianru7778Russianru7779Russianru778Russianru7780Russianru7781Russianru7782Russianru7783Russianru7784Russianru7785Russianru7786Russianru7787Russianru7788Russianru7789Russianru779Russianru7790Russianru7791Russianru7792Russianru7793Russianru7794Russianru7795Russianru7796Russianru7797Russianru7798Russianru7799Russianru78Russianru780Russianru7800Russianru7801Russianru7802Russianru7803Russianru7804Russianru7805Russianru7806Russianru7807Russianru7808Russianru7809Russianru781Russianru7810Russianru7811Russianru7812Russianru7813Russianru7814Russianru7815Russianru7816Russianru7817Russianru7818Russianru7819Russianru782Russianru7820Russianru7821Russianru7822Russianru7823Russianru7824Russianru7825Russianru7826Russianru7827Russianru7828Russianru7829Russianru783Russianru7830Russianru7831Russianru7832Russianru7833Russianru7834Russianru7835Russianru7836Russianru7837Russianru7838Russianru7839Russianru784Russianru7840Russianru7841Russianru7842Russianru7843Russianru7844Russianru7845Russianru7846Russianru7847Russianru7848Russianru7849Russianru785Russianru7850Russianru7851Russianru7852Russianru7853Russianru7854Russianru7855Russianru7856Russianru7857Russianru7858Russianru7859Russianru786Russianru7860Russianru7861Russianru7862Russianru7863Russianru7864Russianru7865Russianru7866Russianru7867Russianru7868Russianru7869Russianru787Russianru7870Russianru7871Russianru7872Russianru7873Russianru7874Russianru7875Russianru7876Russianru7877Russianru7878Russianru7879Russianru788Russianru7880Russianru7881Russianru7882Russianru7883Russianru7884Russianru7885Russianru7886Russianru7887Russianru7888Russianru7889Russianru789Russianru7890Russianru7891Russianru7892Russianru7893Russianru7894Russianru7895Russianru7896Russianru7897Russianru7898Russianru7899Russianru79Russianru790Russianru7900Russianru7901Russianru7902Russianru7903Russianru7904Russianru7905Russianru7906Russianru7907Russianru7908Russianru7909Russianru791Russianru7910Russianru7911Russianru7912Russianru7913Russianru7914Russianru7915Russianru7916Russianru7917Russianru7918Russianru7919Russianru792Russianru7920Russianru7921Russianru7922Russianru7923Russianru7924Russianru7925Russianru7926Russianru7927Russianru7928Russianru7929Russianru793Russianru7930Russianru7931Russianru7932Russianru7933Russianru7934Russianru7935Russianru7936Russianru7937Russianru7938Russianru7939Russianru794Russianru7940Russianru7941Russianru7942Russianru7943Russianru7944Russianru7945Russianru7946Russianru7947Russianru7948Russianru7949Russianru795Russianru7950Russianru7951Russianru7952Russianru7953Russianru7954Russianru7955Russianru7956Russianru7957Russianru7958Russianru7959Russianru796Russianru7960Russianru7961Russianru7962Russianru7963Russianru7964Russianru7965Russianru7966Russianru7967Russianru7968Russianru7969Russianru797Russianru7970Russianru7971Russianru7972Russianru7973Russianru7974Russianru7975Russianru7976Russianru7977Russianru7978Russianru7979Russianru798Russianru7980Russianru7981Russianru7982Russianru7983Russianru7984Russianru7985Russianru7986Russianru7987Russianru7988Russianru7989Russianru799Russianru7990Russianru7991Russianru7992Russianru7993Russianru7994Russianru7995Russianru7996Russianru7997Russianru7998Russianru7999Russianru8Russianru80Russianru800Russianru8000Russianru8001Russianru8002Russianru8003Russianru8004Russianru8005Russianru8006Russianru8007Russianru8008Russianru8009Russianru801Russianru8010Russianru8011Russianru8012Russianru8013Russianru8014Russianru8015Russianru8016Russianru8017Russianru8018Russianru8019Russianru802Russianru8020Russianru8021Russianru8022Russianru8023Russianru8024Russianru8025Russianru8026Russianru8027Russianru8028Russianru8029Russianru803Russianru8030Russianru8031Russianru8032Russianru8033Russianru8034Russianru8035Russianru8036Russianru8037Russianru8038Russianru8039Russianru804Russianru8040Russianru8041Russianru8042Russianru8043Russianru8044Russianru8045Russianru8046Russianru8047Russianru8048Russianru8049Russianru805Russianru8050Russianru8051Russianru8052Russianru8053Russianru8054Russianru8055Russianru8056Russianru8057Russianru8058Russianru8059Russianru806Russianru8060Russianru8061Russianru8062Russianru8063Russianru8064Russianru8065Russianru8066Russianru8067Russianru8068Russianru8069Russianru807Russianru8070Russianru8071Russianru8072Russianru8073Russianru8074Russianru8075Russianru8076Russianru8077Russianru8078Russianru8079Russianru808Russianru8080Russianru8081Russianru8082Russianru8083Russianru8084Russianru8085Russianru8086Russianru8087Russianru8088Russianru8089Russianru809Russianru8090Russianru8091Russianru8092Russianru8093Russianru8094Russianru8095Russianru8096Russianru8097Russianru8098Russianru8099Russianru81Russianru810Russianru8100Russianru8101Russianru8102Russianru8103Russianru8104Russianru8105Russianru8106Russianru8107Russianru8108Russianru8109Russianru811Russianru8110Russianru8111Russianru8112Russianru8113Russianru8114Russianru8115Russianru8116Russianru8117Russianru8118Russianru8119Russianru812Russianru8120Russianru8121Russianru8122Russianru8123Russianru8124Russianru8125Russianru8126Russianru8127Russianru8128Russianru8129Russianru813Russianru8130Russianru8131Russianru8132Russianru8133Russianru8134Russianru8135Russianru8136Russianru8137Russianru8138Russianru8139Russianru814Russianru8140Russianru8141Russianru8142Russianru8143Russianru8144Russianru8145Russianru8146Russianru8147Russianru8148Russianru8149Russianru815Russianru8150Russianru8151Russianru8152Russianru8153Russianru8154Russianru8155Russianru8156Russianru8157Russianru8158Russianru8159Russianru816Russianru8160Russianru8161Russianru8162Russianru8163Russianru8164Russianru8165Russianru8166Russianru8167Russianru8168Russianru8169Russianru817Russianru8170Russianru8171Russianru8172Russianru8173Russianru8174Russianru8175Russianru8176Russianru8177Russianru8178Russianru8179Russianru818Russianru8180Russianru8181Russianru8182Russianru8183Russianru8184Russianru8185Russianru8186Russianru8187Russianru8188Russianru8189Russianru819Russianru8190Russianru8191Russianru82Russianru820Russianru821Russianru822Russianru823Russianru824Russianru825Russianru826Russianru827Russianru828Russianru829Russianru83Russianru830Russianru831Russianru832Russianru833Russianru834Russianru835Russianru836Russianru837Russianru838Russianru839Russianru84Russianru840Russianru841Russianru842Russianru843Russianru844Russianru845Russianru846Russianru847Russianru848Russianru849Russianru85Russianru850Russianru851Russianru852Russianru853Russianru854Russianru855Russianru856Russianru857Russianru858Russianru859Russianru86Russianru860Russianru861Russianru862Russianru863Russianru864Russianru865Russianru866Russianru867Russianru868Russianru869Russianru87Russianru870Russianru871Russianru872Russianru873Russianru874Russianru875Russianru876Russianru877Russianru878Russianru879Russianru88Russianru880Russianru881Russianru882Russianru883Russianru884Russianru885Russianru886Russianru887Russianru888Russianru889Russianru89Russianru890Russianru891Russianru892Russianru893Russianru894Russianru895Russianru896Russianru897Russianru898Russianru899Russianru9Russianru90Russianru900Russianru901Russianru902Russianru903Russianru904Russianru905Russianru906Russianru907Russianru908Russianru909Russianru91Russianru910Russianru911Russianru912Russianru913Russianru914Russianru915Russianru916Russianru917Russianru918Russianru919Russianru92Russianru920Russianru921Russianru922Russianru923Russianru924Russianru925Russianru926Russianru927Russianru928Russianru929Russianru93Russianru930Russianru931Russianru932Russianru933Russianru934Russianru935Russianru936Russianru937Russianru938Russianru939Russianru94Russianru940Russianru941Russianru942Russianru943Russianru944Russianru945Russianru946Russianru947Russianru948Russianru949Russianru95Russianru950Russianru951Russianru952Russianru953Russianru954Russianru955Russianru956Russianru957Russianru958Russianru959Russianru96Russianru960Russianru961Russianru962Russianru963Russianru964Russianru965Russianru966Russianru967Russianru968Russianru969Russianru97Russianru970Russianru971Russianru972Russianru973Russianru974Russianru975Russianru976Russianru977Russianru978Russianru979Russianru98Russianru980Russianru981Russianru982Russianru983Russianru984Russianru985Russianru986Russianru987Russianru988Russianru989Russianru99Russianru990Russianru991Russianru992Russianru993Russianru994Russianru995Russianru996Russianru997Russianru998Russianru999Russiansr0Serbiansr1Serbiansr10Serbiansr100Serbiansr1000Serbiansr1001Serbiansr1002Serbiansr1003Serbiansr1004Serbiansr1005Serbiansr1006Serbiansr1007Serbiansr1008Serbiansr1009Serbiansr101Serbiansr1010Serbiansr1011Serbiansr1012Serbiansr1013Serbiansr1014Serbiansr1015Serbiansr1016Serbiansr1017Serbiansr1018Serbiansr1019Serbiansr102Serbiansr1020Serbiansr1021Serbiansr1022Serbiansr1023Serbiansr1024Serbiansr1025Serbiansr1026Serbiansr1027Serbiansr1028Serbiansr1029Serbiansr103Serbiansr1030Serbiansr1031Serbiansr1032Serbiansr1033Serbiansr1034Serbiansr1035Serbiansr1036Serbiansr1037Serbiansr1038Serbiansr1039Serbiansr104Serbiansr1040Serbiansr1041Serbiansr1042Serbiansr1043Serbiansr1044Serbiansr1045Serbiansr1046Serbiansr1047Serbiansr1048Serbiansr1049Serbiansr105Serbiansr1050Serbiansr1051Serbiansr1052Serbiansr1053Serbiansr1054Serbiansr1055Serbiansr1056Serbiansr1057Serbiansr1058Serbiansr1059Serbiansr106Serbiansr1060Serbiansr1061Serbiansr1062Serbiansr1063Serbiansr1064Serbiansr1065Serbiansr1066Serbiansr1067Serbiansr1068Serbiansr1069Serbiansr107Serbiansr1070Serbiansr1071Serbiansr1072Serbiansr1073Serbiansr1074Serbiansr1075Serbiansr1076Serbiansr1077Serbiansr1078Serbiansr1079Serbiansr108Serbiansr1080Serbiansr1081Serbiansr1082Serbiansr1083Serbiansr1084Serbiansr1085Serbiansr1086Serbiansr1087Serbiansr1088Serbiansr1089Serbiansr109Serbiansr1090Serbiansr1091Serbiansr1092Serbiansr1093Serbiansr1094Serbiansr1095Serbiansr1096Serbiansr1097Serbiansr1098Serbiansr1099Serbiansr11Serbiansr110Serbiansr1100Serbiansr1101Serbiansr1102Serbiansr1103Serbiansr1104Serbiansr1105Serbiansr1106Serbiansr1107Serbiansr1108Serbiansr1109Serbiansr111Serbiansr1110Serbiansr1111Serbiansr1112Serbiansr1113Serbiansr1114Serbiansr1115Serbiansr1116Serbiansr1117Serbiansr1118Serbiansr1119Serbiansr112Serbiansr1120Serbiansr1121Serbiansr1122Serbiansr1123Serbiansr1124Serbiansr1125Serbiansr1126Serbiansr1127Serbiansr1128Serbiansr1129Serbiansr113Serbiansr1130Serbiansr1131Serbiansr1132Serbiansr1133Serbiansr1134Serbiansr1135Serbiansr1136Serbiansr1137Serbiansr1138Serbiansr1139Serbiansr114Serbiansr1140Serbiansr1141Serbiansr1142Serbiansr1143Serbiansr1144Serbiansr1145Serbiansr1146Serbiansr1147Serbiansr1148Serbiansr1149Serbiansr115Serbiansr1150Serbiansr1151Serbiansr1152Serbiansr1153Serbiansr1154Serbiansr1155Serbiansr1156Serbiansr1157Serbiansr1158Serbiansr1159Serbiansr116Serbiansr1160Serbiansr1161Serbiansr1162Serbiansr1163Serbiansr1164Serbiansr1165Serbiansr1166Serbiansr1167Serbiansr1168Serbiansr1169Serbiansr117Serbiansr1170Serbiansr1171Serbiansr1172Serbiansr1173Serbiansr1174Serbiansr1175Serbiansr1176Serbiansr1177Serbiansr1178Serbiansr1179Serbiansr118Serbiansr1180Serbiansr1181Serbiansr1182Serbiansr1183Serbiansr1184Serbiansr1185Serbiansr1186Serbiansr1187Serbiansr1188Serbiansr1189Serbiansr119Serbiansr1190Serbiansr1191Serbiansr1192Serbiansr1193Serbiansr1194Serbiansr1195Serbiansr1196Serbiansr1197Serbiansr1198Serbiansr1199Serbiansr12Serbiansr120Serbiansr1200Serbiansr1201Serbiansr1202Serbiansr1203Serbiansr1204Serbiansr1205Serbiansr1206Serbiansr1207Serbiansr1208Serbiansr1209Serbiansr121Serbiansr1210Serbiansr1211Serbiansr1212Serbiansr1213Serbiansr1214Serbiansr1215Serbiansr1216Serbiansr1217Serbiansr1218Serbiansr1219Serbiansr122Serbiansr1220Serbiansr1221Serbiansr1222Serbiansr1223Serbiansr1224Serbiansr1225Serbiansr1226Serbiansr1227Serbiansr1228Serbiansr1229Serbiansr123Serbiansr1230Serbiansr1231Serbiansr1232Serbiansr1233Serbiansr1234Serbiansr1235Serbiansr1236Serbiansr1237Serbiansr1238Serbiansr1239Serbiansr124Serbiansr1240Serbiansr1241Serbiansr1242Serbiansr1243Serbiansr1244Serbiansr1245Serbiansr1246Serbiansr1247Serbiansr1248Serbiansr1249Serbiansr125Serbiansr1250Serbiansr1251Serbiansr1252Serbiansr1253Serbiansr1254Serbiansr1255Serbiansr1256Serbiansr1257Serbiansr1258Serbiansr1259Serbiansr126Serbiansr1260Serbiansr1261Serbiansr1262Serbiansr1263Serbiansr1264Serbiansr1265Serbiansr1266Serbiansr1267Serbiansr1268Serbiansr1269Serbiansr127Serbiansr1270Serbiansr1271Serbiansr1272Serbiansr1273Serbiansr1274Serbiansr1275Serbiansr1276Serbiansr1277Serbiansr1278Serbiansr1279Serbiansr128Serbiansr1280Serbiansr1281Serbiansr1282Serbiansr1283Serbiansr1284Serbiansr1285Serbiansr1286Serbiansr1287Serbiansr1288Serbiansr1289Serbiansr129Serbiansr1290Serbiansr1291Serbiansr1292Serbiansr1293Serbiansr1294Serbiansr1295Serbiansr1296Serbiansr1297Serbiansr1298Serbiansr1299Serbiansr13Serbiansr130Serbiansr1300Serbiansr1301Serbiansr1302Serbiansr1303Serbiansr1304Serbiansr1305Serbiansr1306Serbiansr1307Serbiansr1308Serbiansr1309Serbiansr131Serbiansr1310Serbiansr1311Serbiansr1312Serbiansr1313Serbiansr1314Serbiansr1315Serbiansr1316Serbiansr1317Serbiansr1318Serbiansr1319Serbiansr132Serbiansr1320Serbiansr1321Serbiansr1322Serbiansr1323Serbiansr1324Serbiansr1325Serbiansr1326Serbiansr1327Serbiansr1328Serbiansr1329Serbiansr133Serbiansr1330Serbiansr1331Serbiansr1332Serbiansr1333Serbiansr1334Serbiansr1335Serbiansr1336Serbiansr1337Serbiansr1338Serbiansr1339Serbiansr134Serbiansr1340Serbiansr1341Serbiansr1342Serbiansr1343Serbiansr1344Serbiansr1345Serbiansr1346Serbiansr1347Serbiansr1348Serbiansr1349Serbiansr135Serbiansr1350Serbiansr1351Serbiansr1352Serbiansr1353Serbiansr1354Serbiansr1355Serbiansr1356Serbiansr1357Serbiansr1358Serbiansr1359Serbiansr136Serbiansr1360Serbiansr1361Serbiansr1362Serbiansr1363Serbiansr1364Serbiansr1365Serbiansr1366Serbiansr1367Serbiansr1368Serbiansr1369Serbiansr137Serbiansr1370Serbiansr1371Serbiansr1372Serbiansr1373Serbiansr1374Serbiansr1375Serbiansr1376Serbiansr1377Serbiansr1378Serbiansr1379Serbiansr138Serbiansr1380Serbiansr1381Serbiansr1382Serbiansr1383Serbiansr1384Serbiansr1385Serbiansr1386Serbiansr1387Serbiansr1388Serbiansr1389Serbiansr139Serbiansr1390Serbiansr1391Serbiansr1392Serbiansr1393Serbiansr1394Serbiansr1395Serbiansr1396Serbiansr1397Serbiansr1398Serbiansr1399Serbiansr14Serbiansr140Serbiansr1400Serbiansr1401Serbiansr1402Serbiansr1403Serbiansr1404Serbiansr1405Serbiansr1406Serbiansr1407Serbiansr1408Serbiansr1409Serbiansr141Serbiansr1410Serbiansr1411Serbiansr1412Serbiansr1413Serbiansr1414Serbiansr1415Serbiansr1416Serbiansr1417Serbiansr1418Serbiansr1419Serbiansr142Serbiansr1420Serbiansr1421Serbiansr1422Serbiansr1423Serbiansr1424Serbiansr1425Serbiansr1426Serbiansr1427Serbiansr1428Serbiansr1429Serbiansr143Serbiansr1430Serbiansr1431Serbiansr1432Serbiansr1433Serbiansr1434Serbiansr1435Serbiansr1436Serbiansr1437Serbiansr1438Serbiansr1439Serbiansr144Serbiansr1440Serbiansr1441Serbiansr1442Serbiansr1443Serbiansr1444Serbiansr1445Serbiansr1446Serbiansr1447Serbiansr1448Serbiansr1449Serbiansr145Serbiansr1450Serbiansr1451Serbiansr1452Serbiansr1453Serbiansr1454Serbiansr1455Serbiansr1456Serbiansr1457Serbiansr1458Serbiansr1459Serbiansr146Serbiansr1460Serbiansr1461Serbiansr1462Serbiansr1463Serbiansr1464Serbiansr1465Serbiansr1466Serbiansr1467Serbiansr1468Serbiansr1469Serbiansr147Serbiansr1470Serbiansr1471Serbiansr1472Serbiansr1473Serbiansr1474Serbiansr1475Serbiansr1476Serbiansr1477Serbiansr1478Serbiansr1479Serbiansr148Serbiansr1480Serbiansr1481Serbiansr1482Serbiansr1483Serbiansr1484Serbiansr1485Serbiansr1486Serbiansr1487Serbiansr1488Serbiansr1489Serbiansr149Serbiansr1490Serbiansr1491Serbiansr1492Serbiansr1493Serbiansr1494Serbiansr1495Serbiansr1496Serbiansr1497Serbiansr1498Serbiansr1499Serbiansr15Serbiansr150Serbiansr1500Serbiansr1501Serbiansr1502Serbiansr1503Serbiansr1504Serbiansr1505Serbiansr1506Serbiansr1507Serbiansr1508Serbiansr1509Serbiansr151Serbiansr1510Serbiansr1511Serbiansr1512Serbiansr1513Serbiansr1514Serbiansr1515Serbiansr1516Serbiansr1517Serbiansr1518Serbiansr1519Serbiansr152Serbiansr1520Serbiansr1521Serbiansr1522Serbiansr1523Serbiansr1524Serbiansr1525Serbiansr1526Serbiansr1527Serbiansr1528Serbiansr1529Serbiansr153Serbiansr1530Serbiansr1531Serbiansr1532Serbiansr1533Serbiansr1534Serbiansr1535Serbiansr1536Serbiansr1537Serbiansr1538Serbiansr1539Serbiansr154Serbiansr1540Serbiansr1541Serbiansr1542Serbiansr1543Serbiansr1544Serbiansr1545Serbiansr1546Serbiansr1547Serbiansr1548Serbiansr1549Serbiansr155Serbiansr1550Serbiansr1551Serbiansr1552Serbiansr1553Serbiansr1554Serbiansr1555Serbiansr1556Serbiansr1557Serbiansr1558Serbiansr1559Serbiansr156Serbiansr1560Serbiansr1561Serbiansr1562Serbiansr1563Serbiansr1564Serbiansr1565Serbiansr1566Serbiansr1567Serbiansr1568Serbiansr1569Serbiansr157Serbiansr1570Serbiansr1571Serbiansr1572Serbiansr1573Serbiansr1574Serbiansr1575Serbiansr1576Serbiansr1577Serbiansr1578Serbiansr1579Serbiansr158Serbiansr1580Serbiansr1581Serbiansr1582Serbiansr1583Serbiansr1584Serbiansr1585Serbiansr1586Serbiansr1587Serbiansr1588Serbiansr1589Serbiansr159Serbiansr1590Serbiansr1591Serbiansr1592Serbiansr1593Serbiansr1594Serbiansr1595Serbiansr1596Serbiansr1597Serbiansr1598Serbiansr1599Serbiansr16Serbiansr160Serbiansr1600Serbiansr1601Serbiansr1602Serbiansr1603Serbiansr1604Serbiansr1605Serbiansr1606Serbiansr1607Serbiansr1608Serbiansr1609Serbiansr161Serbiansr1610Serbiansr1611Serbiansr1612Serbiansr1613Serbiansr1614Serbiansr1615Serbiansr1616Serbiansr1617Serbiansr1618Serbiansr1619Serbiansr162Serbiansr1620Serbiansr1621Serbiansr1622Serbiansr1623Serbiansr1624Serbiansr1625Serbiansr1626Serbiansr1627Serbiansr1628Serbiansr1629Serbiansr163Serbiansr1630Serbiansr1631Serbiansr1632Serbiansr1633Serbiansr1634Serbiansr1635Serbiansr1636Serbiansr1637Serbiansr1638Serbiansr1639Serbiansr164Serbiansr1640Serbiansr1641Serbiansr1642Serbiansr1643Serbiansr1644Serbiansr1645Serbiansr1646Serbiansr1647Serbiansr1648Serbiansr1649Serbiansr165Serbiansr1650Serbiansr1651Serbiansr1652Serbiansr1653Serbiansr1654Serbiansr1655Serbiansr1656Serbiansr1657Serbiansr1658Serbiansr1659Serbiansr166Serbiansr1660Serbiansr1661Serbiansr1662Serbiansr1663Serbiansr1664Serbiansr1665Serbiansr1666Serbiansr1667Serbiansr1668Serbiansr1669Serbiansr167Serbiansr1670Serbiansr1671Serbiansr1672Serbiansr1673Serbiansr1674Serbiansr1675Serbiansr1676Serbiansr1677Serbiansr1678Serbiansr1679Serbiansr168Serbiansr1680Serbiansr1681Serbiansr1682Serbiansr1683Serbiansr1684Serbiansr1685Serbiansr1686Serbiansr1687Serbiansr1688Serbiansr1689Serbiansr169Serbiansr1690Serbiansr1691Serbiansr1692Serbiansr1693Serbiansr1694Serbiansr1695Serbiansr1696Serbiansr1697Serbiansr1698Serbiansr1699Serbiansr17Serbiansr170Serbiansr1700Serbiansr1701Serbiansr1702Serbiansr1703Serbiansr1704Serbiansr1705Serbiansr1706Serbiansr1707Serbiansr1708Serbiansr1709Serbiansr171Serbiansr1710Serbiansr1711Serbiansr1712Serbiansr1713Serbiansr1714Serbiansr1715Serbiansr1716Serbiansr1717Serbiansr1718Serbiansr1719Serbiansr172Serbiansr1720Serbiansr1721Serbiansr1722Serbiansr1723Serbiansr1724Serbiansr1725Serbiansr1726Serbiansr1727Serbiansr1728Serbiansr1729Serbiansr173Serbiansr1730Serbiansr1731Serbiansr1732Serbiansr1733Serbiansr1734Serbiansr1735Serbiansr1736Serbiansr1737Serbiansr1738Serbiansr1739Serbiansr174Serbiansr1740Serbiansr1741Serbiansr1742Serbiansr1743Serbiansr1744Serbiansr1745Serbiansr1746Serbiansr1747Serbiansr1748Serbiansr1749Serbiansr175Serbiansr1750Serbiansr1751Serbiansr1752Serbiansr1753Serbiansr1754Serbiansr1755Serbiansr1756Serbiansr1757Serbiansr1758Serbiansr1759Serbiansr176Serbiansr1760Serbiansr1761Serbiansr1762Serbiansr1763Serbiansr1764Serbiansr1765Serbiansr1766Serbiansr1767Serbiansr1768Serbiansr1769Serbiansr177Serbiansr1770Serbiansr1771Serbiansr1772Serbiansr1773Serbiansr1774Serbiansr1775Serbiansr1776Serbiansr1777Serbiansr1778Serbiansr1779Serbiansr178Serbiansr1780Serbiansr1781Serbiansr1782Serbiansr1783Serbiansr1784Serbiansr1785Serbiansr1786Serbiansr1787Serbiansr1788Serbiansr1789Serbiansr179Serbiansr1790Serbiansr1791Serbiansr1792Serbiansr1793Serbiansr1794Serbiansr1795Serbiansr1796Serbiansr1797Serbiansr1798Serbiansr1799Serbiansr18Serbiansr180Serbiansr1800Serbiansr1801Serbiansr1802Serbiansr1803Serbiansr1804Serbiansr1805Serbiansr1806Serbiansr1807Serbiansr1808Serbiansr1809Serbiansr181Serbiansr1810Serbiansr1811Serbiansr1812Serbiansr1813Serbiansr1814Serbiansr1815Serbiansr1816Serbiansr1817Serbiansr1818Serbiansr1819Serbiansr182Serbiansr1820Serbiansr1821Serbiansr1822Serbiansr1823Serbiansr1824Serbiansr1825Serbiansr1826Serbiansr1827Serbiansr1828Serbiansr1829Serbiansr183Serbiansr1830Serbiansr1831Serbiansr1832Serbiansr1833Serbiansr1834Serbiansr1835Serbiansr1836Serbiansr1837Serbiansr1838Serbiansr1839Serbiansr184Serbiansr1840Serbiansr1841Serbiansr1842Serbiansr1843Serbiansr1844Serbiansr1845Serbiansr1846Serbiansr1847Serbiansr1848Serbiansr1849Serbiansr185Serbiansr1850Serbiansr1851Serbiansr1852Serbiansr1853Serbiansr1854Serbiansr1855Serbiansr1856Serbiansr1857Serbiansr1858Serbiansr1859Serbiansr186Serbiansr1860Serbiansr1861Serbiansr1862Serbiansr1863Serbiansr1864Serbiansr1865Serbiansr1866Serbiansr1867Serbiansr1868Serbiansr1869Serbiansr187Serbiansr1870Serbiansr1871Serbiansr1872Serbiansr1873Serbiansr1874Serbiansr1875Serbiansr1876Serbiansr1877Serbiansr1878Serbiansr1879Serbiansr188Serbiansr1880Serbiansr1881Serbiansr1882Serbiansr1883Serbiansr1884Serbiansr1885Serbiansr1886Serbiansr1887Serbiansr1888Serbiansr1889Serbiansr189Serbiansr1890Serbiansr1891Serbiansr1892Serbiansr1893Serbiansr1894Serbiansr1895Serbiansr1896Serbiansr1897Serbiansr1898Serbiansr1899Serbiansr19Serbiansr190Serbiansr1900Serbiansr1901Serbiansr1902Serbiansr1903Serbiansr1904Serbiansr1905Serbiansr1906Serbiansr1907Serbiansr1908Serbiansr1909Serbiansr191Serbiansr1910Serbiansr1911Serbiansr1912Serbiansr1913Serbiansr1914Serbiansr1915Serbiansr1916Serbiansr1917Serbiansr1918Serbiansr1919Serbiansr192Serbiansr1920Serbiansr1921Serbiansr1922Serbiansr1923Serbiansr1924Serbiansr1925Serbiansr1926Serbiansr1927Serbiansr1928Serbiansr1929Serbiansr193Serbiansr1930Serbiansr1931Serbiansr1932Serbiansr1933Serbiansr1934Serbiansr1935Serbiansr1936Serbiansr1937Serbiansr1938Serbiansr1939Serbiansr194Serbiansr1940Serbiansr1941Serbiansr1942Serbiansr1943Serbiansr1944Serbiansr1945Serbiansr1946Serbiansr1947Serbiansr1948Serbiansr1949Serbiansr195Serbiansr1950Serbiansr1951Serbiansr1952Serbiansr1953Serbiansr1954Serbiansr1955Serbiansr1956Serbiansr1957Serbiansr1958Serbiansr1959Serbiansr196Serbiansr1960Serbiansr1961Serbiansr1962Serbiansr1963Serbiansr1964Serbiansr1965Serbiansr1966Serbiansr1967Serbiansr1968Serbiansr1969Serbiansr197Serbiansr1970Serbiansr1971Serbiansr1972Serbiansr1973Serbiansr1974Serbiansr1975Serbiansr1976Serbiansr1977Serbiansr1978Serbiansr1979Serbiansr198Serbiansr1980Serbiansr1981Serbiansr1982Serbiansr1983Serbiansr1984Serbiansr1985Serbiansr1986Serbiansr1987Serbiansr1988Serbiansr1989Serbiansr199Serbiansr1990Serbiansr1991Serbiansr1992Serbiansr1993Serbiansr1994Serbiansr1995Serbiansr1996Serbiansr1997Serbiansr1998Serbiansr1999Serbiansr2Serbiansr20Serbiansr200Serbiansr2000Serbiansr2001Serbiansr2002Serbiansr2003Serbiansr2004Serbiansr2005Serbiansr2006Serbiansr2007Serbiansr2008Serbiansr2009Serbiansr201Serbiansr2010Serbiansr2011Serbiansr2012Serbiansr2013Serbiansr2014Serbiansr2015Serbiansr2016Serbiansr2017Serbiansr2018Serbiansr2019Serbiansr202Serbiansr2020Serbiansr2021Serbiansr2022Serbiansr2023Serbiansr2024Serbiansr2025Serbiansr2026Serbiansr2027Serbiansr2028Serbiansr2029Serbiansr203Serbiansr2030Serbiansr2031Serbiansr2032Serbiansr2033Serbiansr2034Serbiansr2035Serbiansr2036Serbiansr2037Serbiansr2038Serbiansr2039Serbiansr204Serbiansr2040Serbiansr2041Serbiansr2042Serbiansr2043Serbiansr2044Serbiansr2045Serbiansr2046Serbiansr2047Serbiansr2048Serbiansr2049Serbiansr205Serbiansr2050Serbiansr2051Serbiansr2052Serbiansr2053Serbiansr2054Serbiansr2055Serbiansr2056Serbiansr2057Serbiansr2058Serbiansr2059Serbiansr206Serbiansr2060Serbiansr2061Serbiansr2062Serbiansr2063Serbiansr2064Serbiansr2065Serbiansr2066Serbiansr2067Serbiansr2068Serbiansr2069Serbiansr207Serbiansr2070Serbiansr2071Serbiansr2072Serbiansr2073Serbiansr2074Serbiansr2075Serbiansr2076Serbiansr2077Serbiansr2078Serbiansr2079Serbiansr208Serbiansr2080Serbiansr2081Serbiansr2082Serbiansr2083Serbiansr2084Serbiansr2085Serbiansr2086Serbiansr2087Serbiansr2088Serbiansr2089Serbiansr209Serbiansr2090Serbiansr2091Serbiansr2092Serbiansr2093Serbiansr2094Serbiansr2095Serbiansr2096Serbiansr2097Serbiansr2098Serbiansr2099Serbiansr21Serbiansr210Serbiansr2100Serbiansr2101Serbiansr2102Serbiansr2103Serbiansr2104Serbiansr2105Serbiansr2106Serbiansr2107Serbiansr2108Serbiansr2109Serbiansr211Serbiansr2110Serbiansr2111Serbiansr2112Serbiansr2113Serbiansr2114Serbiansr2115Serbiansr2116Serbiansr2117Serbiansr2118Serbiansr2119Serbiansr212Serbiansr2120Serbiansr2121Serbiansr2122Serbiansr2123Serbiansr2124Serbiansr2125Serbiansr2126Serbiansr2127Serbiansr2128Serbiansr2129Serbiansr213Serbiansr2130Serbiansr2131Serbiansr2132Serbiansr2133Serbiansr2134Serbiansr2135Serbiansr2136Serbiansr2137Serbiansr2138Serbiansr2139Serbiansr214Serbiansr2140Serbiansr2141Serbiansr2142Serbiansr2143Serbiansr2144Serbiansr2145Serbiansr2146Serbiansr2147Serbiansr2148Serbiansr2149Serbiansr215Serbiansr2150Serbiansr2151Serbiansr2152Serbiansr2153Serbiansr2154Serbiansr2155Serbiansr2156Serbiansr2157Serbiansr2158Serbiansr2159Serbiansr216Serbiansr2160Serbiansr2161Serbiansr2162Serbiansr2163Serbiansr2164Serbiansr2165Serbiansr2166Serbiansr2167Serbiansr2168Serbiansr2169Serbiansr217Serbiansr2170Serbiansr2171Serbiansr2172Serbiansr2173Serbiansr2174Serbiansr2175Serbiansr2176Serbiansr2177Serbiansr2178Serbiansr2179Serbiansr218Serbiansr2180Serbiansr2181Serbiansr2182Serbiansr2183Serbiansr2184Serbiansr2185Serbiansr2186Serbiansr2187Serbiansr2188Serbiansr2189Serbiansr219Serbiansr2190Serbiansr2191Serbiansr2192Serbiansr2193Serbiansr2194Serbiansr2195Serbiansr2196Serbiansr2197Serbiansr2198Serbiansr2199Serbiansr22Serbiansr220Serbiansr2200Serbiansr2201Serbiansr2202Serbiansr2203Serbiansr2204Serbiansr2205Serbiansr2206Serbiansr2207Serbiansr2208Serbiansr2209Serbiansr221Serbiansr2210Serbiansr2211Serbiansr2212Serbiansr2213Serbiansr2214Serbiansr2215Serbiansr2216Serbiansr2217Serbiansr2218Serbiansr2219Serbiansr222Serbiansr2220Serbiansr2221Serbiansr2222Serbiansr2223Serbiansr2224Serbiansr2225Serbiansr2226Serbiansr2227Serbiansr2228Serbiansr2229Serbiansr223Serbiansr2230Serbiansr2231Serbiansr2232Serbiansr2233Serbiansr2234Serbiansr2235Serbiansr2236Serbiansr2237Serbiansr2238Serbiansr2239Serbiansr224Serbiansr2240Serbiansr2241Serbiansr2242Serbiansr2243Serbiansr2244Serbiansr2245Serbiansr2246Serbiansr2247Serbiansr2248Serbiansr2249Serbiansr225Serbiansr2250Serbiansr2251Serbiansr2252Serbiansr2253Serbiansr2254Serbiansr2255Serbiansr2256Serbiansr2257Serbiansr2258Serbiansr2259Serbiansr226Serbiansr2260Serbiansr2261Serbiansr2262Serbiansr2263Serbiansr2264Serbiansr2265Serbiansr2266Serbiansr2267Serbiansr2268Serbiansr2269Serbiansr227Serbiansr2270Serbiansr2271Serbiansr2272Serbiansr2273Serbiansr2274Serbiansr2275Serbiansr2276Serbiansr2277Serbiansr2278Serbiansr2279Serbiansr228Serbiansr2280Serbiansr2281Serbiansr2282Serbiansr2283Serbiansr2284Serbiansr2285Serbiansr2286Serbiansr2287Serbiansr2288Serbiansr2289Serbiansr229Serbiansr2290Serbiansr2291Serbiansr2292Serbiansr2293Serbiansr2294Serbiansr2295Serbiansr2296Serbiansr2297Serbiansr2298Serbiansr2299Serbiansr23Serbiansr230Serbiansr2300Serbiansr2301Serbiansr2302Serbiansr2303Serbiansr2304Serbiansr2305Serbiansr2306Serbiansr2307Serbiansr2308Serbiansr2309Serbiansr231Serbiansr2310Serbiansr2311Serbiansr2312Serbiansr2313Serbiansr2314Serbiansr2315Serbiansr2316Serbiansr2317Serbiansr2318Serbiansr2319Serbiansr232Serbiansr2320Serbiansr2321Serbiansr2322Serbiansr2323Serbiansr2324Serbiansr2325Serbiansr2326Serbiansr2327Serbiansr2328Serbiansr2329Serbiansr233Serbiansr2330Serbiansr2331Serbiansr2332Serbiansr2333Serbiansr2334Serbiansr2335Serbiansr2336Serbiansr2337Serbiansr2338Serbiansr2339Serbiansr234Serbiansr2340Serbiansr2341Serbiansr2342Serbiansr2343Serbiansr2344Serbiansr2345Serbiansr2346Serbiansr2347Serbiansr2348Serbiansr2349Serbiansr235Serbiansr2350Serbiansr2351Serbiansr2352Serbiansr2353Serbiansr2354Serbiansr2355Serbiansr2356Serbiansr2357Serbiansr2358Serbiansr2359Serbiansr236Serbiansr2360Serbiansr2361Serbiansr2362Serbiansr2363Serbiansr2364Serbiansr2365Serbiansr2366Serbiansr2367Serbiansr2368Serbiansr2369Serbiansr237Serbiansr2370Serbiansr2371Serbiansr2372Serbiansr2373Serbiansr2374Serbiansr2375Serbiansr2376Serbiansr2377Serbiansr2378Serbiansr2379Serbiansr238Serbiansr2380Serbiansr2381Serbiansr2382Serbiansr2383Serbiansr2384Serbiansr2385Serbiansr2386Serbiansr2387Serbiansr2388Serbiansr2389Serbiansr239Serbiansr2390Serbiansr2391Serbiansr2392Serbiansr2393Serbiansr2394Serbiansr2395Serbiansr2396Serbiansr2397Serbiansr2398Serbiansr2399Serbiansr24Serbiansr240Serbiansr2400Serbiansr2401Serbiansr2402Serbiansr2403Serbiansr2404Serbiansr2405Serbiansr2406Serbiansr2407Serbiansr2408Serbiansr2409Serbiansr241Serbiansr2410Serbiansr2411Serbiansr2412Serbiansr2413Serbiansr2414Serbiansr2415Serbiansr2416Serbiansr2417Serbiansr2418Serbiansr2419Serbiansr242Serbiansr2420Serbiansr2421Serbiansr2422Serbiansr2423Serbiansr2424Serbiansr2425Serbiansr2426Serbiansr2427Serbiansr2428Serbiansr2429Serbiansr243Serbiansr2430Serbiansr2431Serbiansr2432Serbiansr2433Serbiansr2434Serbiansr2435Serbiansr2436Serbiansr2437Serbiansr2438Serbiansr2439Serbiansr244Serbiansr2440Serbiansr2441Serbiansr2442Serbiansr2443Serbiansr2444Serbiansr2445Serbiansr2446Serbiansr2447Serbiansr2448Serbiansr2449Serbiansr245Serbiansr2450Serbiansr2451Serbiansr2452Serbiansr2453Serbiansr2454Serbiansr2455Serbiansr2456Serbiansr2457Serbiansr2458Serbiansr2459Serbiansr246Serbiansr2460Serbiansr2461Serbiansr2462Serbiansr2463Serbiansr2464Serbiansr2465Serbiansr2466Serbiansr2467Serbiansr2468Serbiansr2469Serbiansr247Serbiansr2470Serbiansr2471Serbiansr2472Serbiansr2473Serbiansr2474Serbiansr2475Serbiansr2476Serbiansr2477Serbiansr2478Serbiansr2479Serbiansr248Serbiansr2480Serbiansr2481Serbiansr2482Serbiansr2483Serbiansr2484Serbiansr2485Serbiansr2486Serbiansr2487Serbiansr2488Serbiansr2489Serbiansr249Serbiansr2490Serbiansr2491Serbiansr2492Serbiansr2493Serbiansr2494Serbiansr2495Serbiansr2496Serbiansr2497Serbiansr2498Serbiansr2499Serbiansr25Serbiansr250Serbiansr2500Serbiansr2501Serbiansr2502Serbiansr2503Serbiansr2504Serbiansr2505Serbiansr2506Serbiansr2507Serbiansr2508Serbiansr2509Serbiansr251Serbiansr2510Serbiansr2511Serbiansr2512Serbiansr2513Serbiansr2514Serbiansr2515Serbiansr2516Serbiansr2517Serbiansr2518Serbiansr2519Serbiansr252Serbiansr2520Serbiansr2521Serbiansr2522Serbiansr2523Serbiansr2524Serbiansr2525Serbiansr2526Serbiansr2527Serbiansr2528Serbiansr2529Serbiansr253Serbiansr2530Serbiansr2531Serbiansr2532Serbiansr2533Serbiansr2534Serbiansr2535Serbiansr2536Serbiansr2537Serbiansr2538Serbiansr2539Serbiansr254Serbiansr2540Serbiansr2541Serbiansr2542Serbiansr2543Serbiansr2544Serbiansr2545Serbiansr2546Serbiansr2547Serbiansr2548Serbiansr2549Serbiansr255Serbiansr2550Serbiansr2551Serbiansr2552Serbiansr2553Serbiansr2554Serbiansr2555Serbiansr2556Serbiansr2557Serbiansr2558Serbiansr2559Serbiansr256Serbiansr2560Serbiansr2561Serbiansr2562Serbiansr2563Serbiansr2564Serbiansr2565Serbiansr2566Serbiansr2567Serbiansr2568Serbiansr2569Serbiansr257Serbiansr2570Serbiansr2571Serbiansr2572Serbiansr2573Serbiansr2574Serbiansr2575Serbiansr2576Serbiansr2577Serbiansr2578Serbiansr2579Serbiansr258Serbiansr2580Serbiansr2581Serbiansr2582Serbiansr2583Serbiansr2584Serbiansr2585Serbiansr2586Serbiansr2587Serbiansr2588Serbiansr2589Serbiansr259Serbiansr2590Serbiansr2591Serbiansr2592Serbiansr2593Serbiansr2594Serbiansr2595Serbiansr2596Serbiansr2597Serbiansr2598Serbiansr2599Serbiansr26Serbiansr260Serbiansr2600Serbiansr2601Serbiansr2602Serbiansr2603Serbiansr2604Serbiansr2605Serbiansr2606Serbiansr2607Serbiansr2608Serbiansr2609Serbiansr261Serbiansr2610Serbiansr2611Serbiansr2612Serbiansr2613Serbiansr2614Serbiansr2615Serbiansr2616Serbiansr2617Serbiansr2618Serbiansr2619Serbiansr262Serbiansr2620Serbiansr2621Serbiansr2622Serbiansr2623Serbiansr2624Serbiansr2625Serbiansr2626Serbiansr2627Serbiansr2628Serbiansr2629Serbiansr263Serbiansr2630Serbiansr2631Serbiansr2632Serbiansr2633Serbiansr2634Serbiansr2635Serbiansr2636Serbiansr2637Serbiansr2638Serbiansr2639Serbiansr264Serbiansr2640Serbiansr2641Serbiansr2642Serbiansr2643Serbiansr2644Serbiansr2645Serbiansr2646Serbiansr2647Serbiansr2648Serbiansr2649Serbiansr265Serbiansr2650Serbiansr2651Serbiansr2652Serbiansr2653Serbiansr2654Serbiansr2655Serbiansr2656Serbiansr2657Serbiansr2658Serbiansr2659Serbiansr266Serbiansr2660Serbiansr2661Serbiansr2662Serbiansr2663Serbiansr2664Serbiansr2665Serbiansr2666Serbiansr2667Serbiansr2668Serbiansr2669Serbiansr267Serbiansr2670Serbiansr2671Serbiansr2672Serbiansr2673Serbiansr2674Serbiansr2675Serbiansr2676Serbiansr2677Serbiansr2678Serbiansr2679Serbiansr268Serbiansr2680Serbiansr2681Serbiansr2682Serbiansr2683Serbiansr2684Serbiansr2685Serbiansr2686Serbiansr2687Serbiansr2688Serbiansr2689Serbiansr269Serbiansr2690Serbiansr2691Serbiansr2692Serbiansr2693Serbiansr2694Serbiansr2695Serbiansr2696Serbiansr2697Serbiansr2698Serbiansr2699Serbiansr27Serbiansr270Serbiansr2700Serbiansr2701Serbiansr2702Serbiansr2703Serbiansr2704Serbiansr2705Serbiansr2706Serbiansr2707Serbiansr2708Serbiansr2709Serbiansr271Serbiansr2710Serbiansr2711Serbiansr2712Serbiansr2713Serbiansr2714Serbiansr2715Serbiansr2716Serbiansr2717Serbiansr2718Serbiansr2719Serbiansr272Serbiansr2720Serbiansr2721Serbiansr2722Serbiansr2723Serbiansr2724Serbiansr2725Serbiansr2726Serbiansr2727Serbiansr2728Serbiansr2729Serbiansr273Serbiansr2730Serbiansr2731Serbiansr2732Serbiansr2733Serbiansr2734Serbiansr2735Serbiansr2736Serbiansr2737Serbiansr2738Serbiansr2739Serbiansr274Serbiansr2740Serbiansr2741Serbiansr2742Serbiansr2743Serbiansr2744Serbiansr2745Serbiansr2746Serbiansr2747Serbiansr2748Serbiansr2749Serbiansr275Serbiansr2750Serbiansr2751Serbiansr2752Serbiansr2753Serbiansr2754Serbiansr2755Serbiansr2756Serbiansr2757Serbiansr2758Serbiansr2759Serbiansr276Serbiansr2760Serbiansr2761Serbiansr2762Serbiansr2763Serbiansr2764Serbiansr2765Serbiansr2766Serbiansr2767Serbiansr2768Serbiansr2769Serbiansr277Serbiansr2770Serbiansr2771Serbiansr2772Serbiansr2773Serbiansr2774Serbiansr2775Serbiansr2776Serbiansr2777Serbiansr2778Serbiansr2779Serbiansr278Serbiansr2780Serbiansr2781Serbiansr2782Serbiansr2783Serbiansr2784Serbiansr2785Serbiansr2786Serbiansr2787Serbiansr2788Serbiansr2789Serbiansr279Serbiansr2790Serbiansr2791Serbiansr2792Serbiansr2793Serbiansr2794Serbiansr2795Serbiansr2796Serbiansr2797Serbiansr2798Serbiansr2799Serbiansr28Serbiansr280Serbiansr2800Serbiansr2801Serbiansr2802Serbiansr2803Serbiansr2804Serbiansr2805Serbiansr2806Serbiansr2807Serbiansr2808Serbiansr2809Serbiansr281Serbiansr2810Serbiansr2811Serbiansr2812Serbiansr2813Serbiansr2814Serbiansr2815Serbiansr2816Serbiansr2817Serbiansr2818Serbiansr2819Serbiansr282Serbiansr2820Serbiansr2821Serbiansr2822Serbiansr2823Serbiansr2824Serbiansr2825Serbiansr2826Serbiansr2827Serbiansr2828Serbiansr2829Serbiansr283Serbiansr2830Serbiansr2831Serbiansr2832Serbiansr2833Serbiansr2834Serbiansr2835Serbiansr2836Serbiansr2837Serbiansr2838Serbiansr2839Serbiansr284Serbiansr2840Serbiansr2841Serbiansr2842Serbiansr2843Serbiansr2844Serbiansr2845Serbiansr2846Serbiansr2847Serbiansr2848Serbiansr2849Serbiansr285Serbiansr2850Serbiansr2851Serbiansr2852Serbiansr2853Serbiansr2854Serbiansr2855Serbiansr2856Serbiansr2857Serbiansr2858Serbiansr2859Serbiansr286Serbiansr2860Serbiansr2861Serbiansr2862Serbiansr2863Serbiansr2864Serbiansr2865Serbiansr2866Serbiansr2867Serbiansr2868Serbiansr2869Serbiansr287Serbiansr2870Serbiansr2871Serbiansr2872Serbiansr2873Serbiansr2874Serbiansr2875Serbiansr2876Serbiansr2877Serbiansr2878Serbiansr2879Serbiansr288Serbiansr2880Serbiansr2881Serbiansr2882Serbiansr2883Serbiansr2884Serbiansr2885Serbiansr2886Serbiansr2887Serbiansr2888Serbiansr2889Serbiansr289Serbiansr2890Serbiansr2891Serbiansr2892Serbiansr2893Serbiansr2894Serbiansr2895Serbiansr2896Serbiansr2897Serbiansr2898Serbiansr2899Serbiansr29Serbiansr290Serbiansr2900Serbiansr2901Serbiansr2902Serbiansr2903Serbiansr2904Serbiansr2905Serbiansr2906Serbiansr2907Serbiansr2908Serbiansr2909Serbiansr291Serbiansr2910Serbiansr2911Serbiansr2912Serbiansr2913Serbiansr2914Serbiansr2915Serbiansr2916Serbiansr2917Serbiansr2918Serbiansr2919Serbiansr292Serbiansr2920Serbiansr2921Serbiansr2922Serbiansr2923Serbiansr2924Serbiansr2925Serbiansr2926Serbiansr2927Serbiansr2928Serbiansr2929Serbiansr293Serbiansr2930Serbiansr2931Serbiansr2932Serbiansr2933Serbiansr2934Serbiansr2935Serbiansr2936Serbiansr2937Serbiansr2938Serbiansr2939Serbiansr294Serbiansr2940Serbiansr2941Serbiansr2942Serbiansr2943Serbiansr2944Serbiansr2945Serbiansr2946Serbiansr2947Serbiansr2948Serbiansr2949Serbiansr295Serbiansr2950Serbiansr2951Serbiansr2952Serbiansr2953Serbiansr2954Serbiansr2955Serbiansr2956Serbiansr2957Serbiansr2958Serbiansr2959Serbiansr296Serbiansr2960Serbiansr2961Serbiansr2962Serbiansr2963Serbiansr2964Serbiansr2965Serbiansr2966Serbiansr2967Serbiansr2968Serbiansr2969Serbiansr297Serbiansr2970Serbiansr2971Serbiansr2972Serbiansr2973Serbiansr2974Serbiansr2975Serbiansr2976Serbiansr2977Serbiansr2978Serbiansr2979Serbiansr298Serbiansr2980Serbiansr2981Serbiansr2982Serbiansr2983Serbiansr2984Serbiansr2985Serbiansr2986Serbiansr2987Serbiansr2988Serbiansr2989Serbiansr299Serbiansr2990Serbiansr2991Serbiansr2992Serbiansr2993Serbiansr2994Serbiansr2995Serbiansr2996Serbiansr2997Serbiansr2998Serbiansr2999Serbiansr3Serbiansr30Serbiansr300Serbiansr3000Serbiansr3001Serbiansr3002Serbiansr3003Serbiansr3004Serbiansr3005Serbiansr3006Serbiansr3007Serbiansr3008Serbiansr3009Serbiansr301Serbiansr3010Serbiansr3011Serbiansr3012Serbiansr3013Serbiansr3014Serbiansr3015Serbiansr3016Serbiansr3017Serbiansr3018Serbiansr3019Serbiansr302Serbiansr3020Serbiansr3021Serbiansr3022Serbiansr3023Serbiansr3024Serbiansr3025Serbiansr3026Serbiansr3027Serbiansr3028Serbiansr3029Serbiansr303Serbiansr3030Serbiansr3031Serbiansr3032Serbiansr3033Serbiansr3034Serbiansr3035Serbiansr3036Serbiansr3037Serbiansr3038Serbiansr3039Serbiansr304Serbiansr3040Serbiansr3041Serbiansr3042Serbiansr3043Serbiansr3044Serbiansr3045Serbiansr3046Serbiansr3047Serbiansr3048Serbiansr3049Serbiansr305Serbiansr3050Serbiansr3051Serbiansr3052Serbiansr3053Serbiansr3054Serbiansr3055Serbiansr3056Serbiansr3057Serbiansr3058Serbiansr3059Serbiansr306Serbiansr3060Serbiansr3061Serbiansr3062Serbiansr3063Serbiansr3064Serbiansr3065Serbiansr3066Serbiansr3067Serbiansr3068Serbiansr3069Serbiansr307Serbiansr3070Serbiansr3071Serbiansr3072Serbiansr3073Serbiansr3074Serbiansr3075Serbiansr3076Serbiansr3077Serbiansr3078Serbiansr3079Serbiansr308Serbiansr3080Serbiansr3081Serbiansr3082Serbiansr3083Serbiansr3084Serbiansr3085Serbiansr3086Serbiansr3087Serbiansr3088Serbiansr3089Serbiansr309Serbiansr3090Serbiansr3091Serbiansr3092Serbiansr3093Serbiansr3094Serbiansr3095Serbiansr3096Serbiansr3097Serbiansr3098Serbiansr3099Serbiansr31Serbiansr310Serbiansr3100Serbiansr3101Serbiansr3102Serbiansr3103Serbiansr3104Serbiansr3105Serbiansr3106Serbiansr3107Serbiansr3108Serbiansr3109Serbiansr311Serbiansr3110Serbiansr3111Serbiansr3112Serbiansr3113Serbiansr3114Serbiansr3115Serbiansr3116Serbiansr3117Serbiansr3118Serbiansr3119Serbiansr312Serbiansr3120Serbiansr3121Serbiansr3122Serbiansr3123Serbiansr3124Serbiansr3125Serbiansr3126Serbiansr3127Serbiansr3128Serbiansr3129Serbiansr313Serbiansr3130Serbiansr3131Serbiansr3132Serbiansr3133Serbiansr3134Serbiansr3135Serbiansr3136Serbiansr3137Serbiansr3138Serbiansr3139Serbiansr314Serbiansr3140Serbiansr3141Serbiansr3142Serbiansr3143Serbiansr3144Serbiansr3145Serbiansr3146Serbiansr3147Serbiansr3148Serbiansr3149Serbiansr315Serbiansr3150Serbiansr3151Serbiansr3152Serbiansr3153Serbiansr3154Serbiansr3155Serbiansr3156Serbiansr3157Serbiansr3158Serbiansr3159Serbiansr316Serbiansr3160Serbiansr3161Serbiansr3162Serbiansr3163Serbiansr3164Serbiansr3165Serbiansr3166Serbiansr3167Serbiansr3168Serbiansr3169Serbiansr317Serbiansr3170Serbiansr3171Serbiansr3172Serbiansr3173Serbiansr3174Serbiansr3175Serbiansr3176Serbiansr3177Serbiansr3178Serbiansr3179Serbiansr318Serbiansr3180Serbiansr3181Serbiansr3182Serbiansr3183Serbiansr3184Serbiansr3185Serbiansr3186Serbiansr3187Serbiansr3188Serbiansr3189Serbiansr319Serbiansr3190Serbiansr3191Serbiansr3192Serbiansr3193Serbiansr3194Serbiansr3195Serbiansr3196Serbiansr3197Serbiansr3198Serbiansr3199Serbiansr32Serbiansr320Serbiansr3200Serbiansr3201Serbiansr3202Serbiansr3203Serbiansr3204Serbiansr3205Serbiansr3206Serbiansr3207Serbiansr3208Serbiansr3209Serbiansr321Serbiansr3210Serbiansr3211Serbiansr3212Serbiansr3213Serbiansr3214Serbiansr3215Serbiansr3216Serbiansr3217Serbiansr3218Serbiansr3219Serbiansr322Serbiansr3220Serbiansr3221Serbiansr3222Serbiansr3223Serbiansr3224Serbiansr3225Serbiansr3226Serbiansr3227Serbiansr3228Serbiansr3229Serbiansr323Serbiansr3230Serbiansr3231Serbiansr3232Serbiansr3233Serbiansr3234Serbiansr3235Serbiansr3236Serbiansr3237Serbiansr3238Serbiansr3239Serbiansr324Serbiansr3240Serbiansr3241Serbiansr3242Serbiansr3243Serbiansr3244Serbiansr3245Serbiansr3246Serbiansr3247Serbiansr3248Serbiansr3249Serbiansr325Serbiansr3250Serbiansr3251Serbiansr3252Serbiansr3253Serbiansr3254Serbiansr3255Serbiansr3256Serbiansr3257Serbiansr3258Serbiansr3259Serbiansr326Serbiansr3260Serbiansr3261Serbiansr3262Serbiansr3263Serbiansr3264Serbiansr3265Serbiansr3266Serbiansr3267Serbiansr3268Serbiansr3269Serbiansr327Serbiansr3270Serbiansr3271Serbiansr3272Serbiansr3273Serbiansr3274Serbiansr3275Serbiansr3276Serbiansr3277Serbiansr3278Serbiansr3279Serbiansr328Serbiansr3280Serbiansr3281Serbiansr3282Serbiansr3283Serbiansr3284Serbiansr3285Serbiansr3286Serbiansr3287Serbiansr3288Serbiansr3289Serbiansr329Serbiansr3290Serbiansr3291Serbiansr3292Serbiansr3293Serbiansr3294Serbiansr3295Serbiansr3296Serbiansr3297Serbiansr3298Serbiansr3299Serbiansr33Serbiansr330Serbiansr3300Serbiansr3301Serbiansr3302Serbiansr3303Serbiansr3304Serbiansr3305Serbiansr3306Serbiansr3307Serbiansr3308Serbiansr3309Serbiansr331Serbiansr3310Serbiansr3311Serbiansr3312Serbiansr3313Serbiansr3314Serbiansr3315Serbiansr3316Serbiansr3317Serbiansr3318Serbiansr3319Serbiansr332Serbiansr3320Serbiansr3321Serbiansr3322Serbiansr3323Serbiansr3324Serbiansr3325Serbiansr3326Serbiansr3327Serbiansr3328Serbiansr3329Serbiansr333Serbiansr3330Serbiansr3331Serbiansr3332Serbiansr3333Serbiansr3334Serbiansr3335Serbiansr3336Serbiansr3337Serbiansr3338Serbiansr3339Serbiansr334Serbiansr3340Serbiansr3341Serbiansr3342Serbiansr3343Serbiansr3344Serbiansr3345Serbiansr3346Serbiansr3347Serbiansr3348Serbiansr3349Serbiansr335Serbiansr3350Serbiansr3351Serbiansr3352Serbiansr3353Serbiansr3354Serbiansr3355Serbiansr3356Serbiansr3357Serbiansr3358Serbiansr3359Serbiansr336Serbiansr3360Serbiansr3361Serbiansr3362Serbiansr3363Serbiansr3364Serbiansr3365Serbiansr3366Serbiansr3367Serbiansr3368Serbiansr3369Serbiansr337Serbiansr3370Serbiansr3371Serbiansr3372Serbiansr3373Serbiansr3374Serbiansr3375Serbiansr3376Serbiansr3377Serbiansr3378Serbiansr3379Serbiansr338Serbiansr3380Serbiansr3381Serbiansr3382Serbiansr3383Serbiansr3384Serbiansr3385Serbiansr3386Serbiansr3387Serbiansr3388Serbiansr3389Serbiansr339Serbiansr3390Serbiansr3391Serbiansr3392Serbiansr3393Serbiansr3394Serbiansr3395Serbiansr3396Serbiansr3397Serbiansr3398Serbiansr3399Serbiansr34Serbiansr340Serbiansr3400Serbiansr3401Serbiansr3402Serbiansr3403Serbiansr3404Serbiansr3405Serbiansr3406Serbiansr3407Serbiansr3408Serbiansr3409Serbiansr341Serbiansr3410Serbiansr3411Serbiansr3412Serbiansr3413Serbiansr3414Serbiansr3415Serbiansr3416Serbiansr3417Serbiansr3418Serbiansr3419Serbiansr342Serbiansr3420Serbiansr3421Serbiansr3422Serbiansr3423Serbiansr3424Serbiansr3425Serbiansr3426Serbiansr3427Serbiansr3428Serbiansr3429Serbiansr343Serbiansr3430Serbiansr3431Serbiansr3432Serbiansr3433Serbiansr3434Serbiansr3435Serbiansr3436Serbiansr3437Serbiansr3438Serbiansr3439Serbiansr344Serbiansr3440Serbiansr3441Serbiansr3442Serbiansr3443Serbiansr3444Serbiansr3445Serbiansr3446Serbiansr3447Serbiansr3448Serbiansr3449Serbiansr345Serbiansr3450Serbiansr3451Serbiansr3452Serbiansr3453Serbiansr3454Serbiansr3455Serbiansr3456Serbiansr3457Serbiansr3458Serbiansr3459Serbiansr346Serbiansr3460Serbiansr3461Serbiansr3462Serbiansr3463Serbiansr3464Serbiansr3465Serbiansr3466Serbiansr3467Serbiansr3468Serbiansr3469Serbiansr347Serbiansr3470Serbiansr3471Serbiansr3472Serbiansr3473Serbiansr3474Serbiansr3475Serbiansr3476Serbiansr3477Serbiansr3478Serbiansr3479Serbiansr348Serbiansr3480Serbiansr3481Serbiansr3482Serbiansr3483Serbiansr3484Serbiansr3485Serbiansr3486Serbiansr3487Serbiansr3488Serbiansr3489Serbiansr349Serbiansr3490Serbiansr3491Serbiansr3492Serbiansr3493Serbiansr3494Serbiansr3495Serbiansr3496Serbiansr3497Serbiansr3498Serbiansr3499Serbiansr35Serbiansr350Serbiansr3500Serbiansr3501Serbiansr3502Serbiansr3503Serbiansr3504Serbiansr3505Serbiansr3506Serbiansr3507Serbiansr3508Serbiansr3509Serbiansr351Serbiansr3510Serbiansr3511Serbiansr3512Serbiansr3513Serbiansr3514Serbiansr3515Serbiansr3516Serbiansr3517Serbiansr3518Serbiansr3519Serbiansr352Serbiansr3520Serbiansr3521Serbiansr3522Serbiansr3523Serbiansr3524Serbiansr3525Serbiansr3526Serbiansr3527Serbiansr3528Serbiansr3529Serbiansr353Serbiansr3530Serbiansr3531Serbiansr3532Serbiansr3533Serbiansr3534Serbiansr3535Serbiansr3536Serbiansr3537Serbiansr3538Serbiansr3539Serbiansr354Serbiansr3540Serbiansr3541Serbiansr3542Serbiansr3543Serbiansr3544Serbiansr3545Serbiansr3546Serbiansr3547Serbiansr3548Serbiansr3549Serbiansr355Serbiansr3550Serbiansr3551Serbiansr3552Serbiansr3553Serbiansr3554Serbiansr3555Serbiansr3556Serbiansr3557Serbiansr3558Serbiansr3559Serbiansr356Serbiansr3560Serbiansr3561Serbiansr3562Serbiansr3563Serbiansr3564Serbiansr3565Serbiansr3566Serbiansr3567Serbiansr3568Serbiansr3569Serbiansr357Serbiansr3570Serbiansr3571Serbiansr3572Serbiansr3573Serbiansr3574Serbiansr3575Serbiansr3576Serbiansr3577Serbiansr3578Serbiansr3579Serbiansr358Serbiansr3580Serbiansr3581Serbiansr3582Serbiansr3583Serbiansr3584Serbiansr3585Serbiansr3586Serbiansr3587Serbiansr3588Serbiansr3589Serbiansr359Serbiansr3590Serbiansr3591Serbiansr3592Serbiansr3593Serbiansr3594Serbiansr3595Serbiansr3596Serbiansr3597Serbiansr3598Serbiansr3599Serbiansr36Serbiansr360Serbiansr3600Serbiansr3601Serbiansr3602Serbiansr3603Serbiansr3604Serbiansr3605Serbiansr3606Serbiansr3607Serbiansr3608Serbiansr3609Serbiansr361Serbiansr3610Serbiansr3611Serbiansr3612Serbiansr3613Serbiansr3614Serbiansr3615Serbiansr3616Serbiansr3617Serbiansr3618Serbiansr3619Serbiansr362Serbiansr3620Serbiansr3621Serbiansr3622Serbiansr3623Serbiansr3624Serbiansr3625Serbiansr3626Serbiansr3627Serbiansr3628Serbiansr3629Serbiansr363Serbiansr3630Serbiansr3631Serbiansr3632Serbiansr3633Serbiansr3634Serbiansr3635Serbiansr3636Serbiansr3637Serbiansr3638Serbiansr3639Serbiansr364Serbiansr3640Serbiansr3641Serbiansr3642Serbiansr3643Serbiansr3644Serbiansr3645Serbiansr3646Serbiansr3647Serbiansr3648Serbiansr3649Serbiansr365Serbiansr3650Serbiansr3651Serbiansr3652Serbiansr3653Serbiansr3654Serbiansr3655Serbiansr3656Serbiansr3657Serbiansr3658Serbiansr3659Serbiansr366Serbiansr3660Serbiansr3661Serbiansr3662Serbiansr3663Serbiansr3664Serbiansr3665Serbiansr3666Serbiansr3667Serbiansr3668Serbiansr3669Serbiansr367Serbiansr3670Serbiansr3671Serbiansr3672Serbiansr3673Serbiansr3674Serbiansr3675Serbiansr3676Serbiansr3677Serbiansr3678Serbiansr3679Serbiansr368Serbiansr3680Serbiansr3681Serbiansr3682Serbiansr3683Serbiansr3684Serbiansr3685Serbiansr3686Serbiansr3687Serbiansr3688Serbiansr3689Serbiansr369Serbiansr3690Serbiansr3691Serbiansr3692Serbiansr3693Serbiansr3694Serbiansr3695Serbiansr3696Serbiansr3697Serbiansr3698Serbiansr3699Serbiansr37Serbiansr370Serbiansr3700Serbiansr3701Serbiansr3702Serbiansr3703Serbiansr3704Serbiansr3705Serbiansr3706Serbiansr3707Serbiansr3708Serbiansr3709Serbiansr371Serbiansr3710Serbiansr3711Serbiansr3712Serbiansr3713Serbiansr3714Serbiansr3715Serbiansr3716Serbiansr3717Serbiansr3718Serbiansr3719Serbiansr372Serbiansr3720Serbiansr3721Serbiansr3722Serbiansr3723Serbiansr3724Serbiansr3725Serbiansr3726Serbiansr3727Serbiansr3728Serbiansr3729Serbiansr373Serbiansr3730Serbiansr3731Serbiansr3732Serbiansr3733Serbiansr3734Serbiansr3735Serbiansr3736Serbiansr3737Serbiansr3738Serbiansr3739Serbiansr374Serbiansr3740Serbiansr3741Serbiansr3742Serbiansr3743Serbiansr3744Serbiansr3745Serbiansr3746Serbiansr3747Serbiansr3748Serbiansr3749Serbiansr375Serbiansr3750Serbiansr3751Serbiansr3752Serbiansr3753Serbiansr3754Serbiansr3755Serbiansr3756Serbiansr3757Serbiansr3758Serbiansr3759Serbiansr376Serbiansr3760Serbiansr3761Serbiansr3762Serbiansr3763Serbiansr3764Serbiansr3765Serbiansr3766Serbiansr3767Serbiansr3768Serbiansr3769Serbiansr377Serbiansr3770Serbiansr3771Serbiansr3772Serbiansr3773Serbiansr3774Serbiansr3775Serbiansr3776Serbiansr3777Serbiansr3778Serbiansr3779Serbiansr378Serbiansr3780Serbiansr3781Serbiansr3782Serbiansr3783Serbiansr3784Serbiansr3785Serbiansr3786Serbiansr3787Serbiansr3788Serbiansr3789Serbiansr379Serbiansr3790Serbiansr3791Serbiansr3792Serbiansr3793Serbiansr3794Serbiansr3795Serbiansr3796Serbiansr3797Serbiansr3798Serbiansr3799Serbiansr38Serbiansr380Serbiansr3800Serbiansr3801Serbiansr3802Serbiansr3803Serbiansr3804Serbiansr3805Serbiansr3806Serbiansr3807Serbiansr3808Serbiansr3809Serbiansr381Serbiansr3810Serbiansr3811Serbiansr3812Serbiansr3813Serbiansr3814Serbiansr3815Serbiansr3816Serbiansr3817Serbiansr3818Serbiansr3819Serbiansr382Serbiansr3820Serbiansr3821Serbiansr3822Serbiansr3823Serbiansr3824Serbiansr3825Serbiansr3826Serbiansr3827Serbiansr3828Serbiansr3829Serbiansr383Serbiansr3830Serbiansr3831Serbiansr3832Serbiansr3833Serbiansr3834Serbiansr3835Serbiansr3836Serbiansr3837Serbiansr3838Serbiansr3839Serbiansr384Serbiansr3840Serbiansr3841Serbiansr3842Serbiansr3843Serbiansr3844Serbiansr3845Serbiansr3846Serbiansr3847Serbiansr3848Serbiansr3849Serbiansr385Serbiansr3850Serbiansr3851Serbiansr3852Serbiansr3853Serbiansr3854Serbiansr3855Serbiansr3856Serbiansr3857Serbiansr3858Serbiansr3859Serbiansr386Serbiansr3860Serbiansr3861Serbiansr3862Serbiansr3863Serbiansr3864Serbiansr3865Serbiansr3866Serbiansr3867Serbiansr3868Serbiansr3869Serbiansr387Serbiansr3870Serbiansr3871Serbiansr3872Serbiansr3873Serbiansr3874Serbiansr3875Serbiansr3876Serbiansr3877Serbiansr3878Serbiansr3879Serbiansr388Serbiansr3880Serbiansr3881Serbiansr3882Serbiansr3883Serbiansr3884Serbiansr3885Serbiansr3886Serbiansr3887Serbiansr3888Serbiansr3889Serbiansr389Serbiansr3890Serbiansr3891Serbiansr3892Serbiansr3893Serbiansr3894Serbiansr3895Serbiansr3896Serbiansr3897Serbiansr3898Serbiansr3899Serbiansr39Serbiansr390Serbiansr3900Serbiansr3901Serbiansr3902Serbiansr3903Serbiansr3904Serbiansr3905Serbiansr3906Serbiansr3907Serbiansr3908Serbiansr3909Serbiansr391Serbiansr3910Serbiansr3911Serbiansr3912Serbiansr3913Serbiansr3914Serbiansr3915Serbiansr3916Serbiansr3917Serbiansr3918Serbiansr3919Serbiansr392Serbiansr3920Serbiansr3921Serbiansr3922Serbiansr3923Serbiansr3924Serbiansr3925Serbiansr3926Serbiansr3927Serbiansr3928Serbiansr3929Serbiansr393Serbiansr3930Serbiansr3931Serbiansr3932Serbiansr3933Serbiansr3934Serbiansr3935Serbiansr3936Serbiansr3937Serbiansr3938Serbiansr3939Serbiansr394Serbiansr3940Serbiansr3941Serbiansr3942Serbiansr3943Serbiansr3944Serbiansr3945Serbiansr3946Serbiansr3947Serbiansr3948Serbiansr3949Serbiansr395Serbiansr3950Serbiansr3951Serbiansr3952Serbiansr3953Serbiansr3954Serbiansr3955Serbiansr3956Serbiansr3957Serbiansr3958Serbiansr3959Serbiansr396Serbiansr3960Serbiansr3961Serbiansr3962Serbiansr3963Serbiansr3964Serbiansr3965Serbiansr3966Serbiansr3967Serbiansr3968Serbiansr3969Serbiansr397Serbiansr3970Serbiansr3971Serbiansr3972Serbiansr3973Serbiansr3974Serbiansr3975Serbiansr3976Serbiansr3977Serbiansr3978Serbiansr3979Serbiansr398Serbiansr3980Serbiansr3981Serbiansr3982Serbiansr3983Serbiansr3984Serbiansr3985Serbiansr3986Serbiansr3987Serbiansr3988Serbiansr3989Serbiansr399Serbiansr3990Serbiansr3991Serbiansr3992Serbiansr3993Serbiansr3994Serbiansr3995Serbiansr3996Serbiansr3997Serbiansr3998Serbiansr3999Serbiansr4Serbiansr40Serbiansr400Serbiansr4000Serbiansr4001Serbiansr4002Serbiansr4003Serbiansr4004Serbiansr4005Serbiansr4006Serbiansr4007Serbiansr4008Serbiansr4009Serbiansr401Serbiansr4010Serbiansr4011Serbiansr4012Serbiansr4013Serbiansr4014Serbiansr4015Serbiansr4016Serbiansr4017Serbiansr4018Serbiansr4019Serbiansr402Serbiansr4020Serbiansr4021Serbiansr4022Serbiansr4023Serbiansr4024Serbiansr4025Serbiansr4026Serbiansr4027Serbiansr4028Serbiansr4029Serbiansr403Serbiansr4030Serbiansr4031Serbiansr4032Serbiansr4033Serbiansr4034Serbiansr4035Serbiansr4036Serbiansr4037Serbiansr4038Serbiansr4039Serbiansr404Serbiansr4040Serbiansr4041Serbiansr4042Serbiansr4043Serbiansr4044Serbiansr4045Serbiansr4046Serbiansr4047Serbiansr4048Serbiansr4049Serbiansr405Serbiansr4050Serbiansr4051Serbiansr4052Serbiansr4053Serbiansr4054Serbiansr4055Serbiansr4056Serbiansr4057Serbiansr4058Serbiansr4059Serbiansr406Serbiansr4060Serbiansr4061Serbiansr4062Serbiansr4063Serbiansr4064Serbiansr4065Serbiansr4066Serbiansr4067Serbiansr4068Serbiansr4069Serbiansr407Serbiansr4070Serbiansr4071Serbiansr4072Serbiansr4073Serbiansr4074Serbiansr4075Serbiansr4076Serbiansr4077Serbiansr4078Serbiansr4079Serbiansr408Serbiansr4080Serbiansr4081Serbiansr4082Serbiansr4083Serbiansr4084Serbiansr4085Serbiansr4086Serbiansr4087Serbiansr4088Serbiansr4089Serbiansr409Serbiansr4090Serbiansr4091Serbiansr4092Serbiansr4093Serbiansr4094Serbiansr4095Serbiansr4096Serbiansr4097Serbiansr4098Serbiansr4099Serbiansr41Serbiansr410Serbiansr4100Serbiansr4101Serbiansr4102Serbiansr4103Serbiansr4104Serbiansr4105Serbiansr4106Serbiansr4107Serbiansr4108Serbiansr4109Serbiansr411Serbiansr4110Serbiansr4111Serbiansr4112Serbiansr4113Serbiansr4114Serbiansr4115Serbiansr4116Serbiansr4117Serbiansr4118Serbiansr4119Serbiansr412Serbiansr4120Serbiansr4121Serbiansr4122Serbiansr4123Serbiansr4124Serbiansr4125Serbiansr4126Serbiansr4127Serbiansr4128Serbiansr4129Serbiansr413Serbiansr4130Serbiansr4131Serbiansr4132Serbiansr4133Serbiansr4134Serbiansr4135Serbiansr4136Serbiansr4137Serbiansr4138Serbiansr4139Serbiansr414Serbiansr4140Serbiansr4141Serbiansr4142Serbiansr4143Serbiansr4144Serbiansr4145Serbiansr4146Serbiansr4147Serbiansr4148Serbiansr4149Serbiansr415Serbiansr4150Serbiansr4151Serbiansr4152Serbiansr4153Serbiansr4154Serbiansr4155Serbiansr4156Serbiansr4157Serbiansr4158Serbiansr4159Serbiansr416Serbiansr4160Serbiansr4161Serbiansr4162Serbiansr4163Serbiansr4164Serbiansr4165Serbiansr4166Serbiansr4167Serbiansr4168Serbiansr4169Serbiansr417Serbiansr4170Serbiansr4171Serbiansr4172Serbiansr4173Serbiansr4174Serbiansr4175Serbiansr4176Serbiansr4177Serbiansr4178Serbiansr4179Serbiansr418Serbiansr4180Serbiansr4181Serbiansr4182Serbiansr4183Serbiansr4184Serbiansr4185Serbiansr4186Serbiansr4187Serbiansr4188Serbiansr4189Serbiansr419Serbiansr4190Serbiansr4191Serbiansr4192Serbiansr4193Serbiansr4194Serbiansr4195Serbiansr4196Serbiansr4197Serbiansr4198Serbiansr4199Serbiansr42Serbiansr420Serbiansr4200Serbiansr4201Serbiansr4202Serbiansr4203Serbiansr4204Serbiansr4205Serbiansr4206Serbiansr4207Serbiansr4208Serbiansr4209Serbiansr421Serbiansr4210Serbiansr4211Serbiansr4212Serbiansr4213Serbiansr4214Serbiansr4215Serbiansr4216Serbiansr4217Serbiansr4218Serbiansr4219Serbiansr422Serbiansr4220Serbiansr4221Serbiansr4222Serbiansr4223Serbiansr4224Serbiansr4225Serbiansr4226Serbiansr4227Serbiansr4228Serbiansr4229Serbiansr423Serbiansr4230Serbiansr4231Serbiansr4232Serbiansr4233Serbiansr4234Serbiansr4235Serbiansr4236Serbiansr4237Serbiansr4238Serbiansr4239Serbiansr424Serbiansr4240Serbiansr4241Serbiansr4242Serbiansr4243Serbiansr4244Serbiansr4245Serbiansr4246Serbiansr4247Serbiansr4248Serbiansr4249Serbiansr425Serbiansr4250Serbiansr4251Serbiansr4252Serbiansr4253Serbiansr4254Serbiansr4255Serbiansr4256Serbiansr4257Serbiansr4258Serbiansr4259Serbiansr426Serbiansr4260Serbiansr4261Serbiansr4262Serbiansr4263Serbiansr4264Serbiansr4265Serbiansr4266Serbiansr4267Serbiansr4268Serbiansr4269Serbiansr427Serbiansr4270Serbiansr4271Serbiansr4272Serbiansr4273Serbiansr4274Serbiansr4275Serbiansr4276Serbiansr4277Serbiansr4278Serbiansr4279Serbiansr428Serbiansr4280Serbiansr4281Serbiansr4282Serbiansr4283Serbiansr4284Serbiansr4285Serbiansr4286Serbiansr4287Serbiansr4288Serbiansr4289Serbiansr429Serbiansr4290Serbiansr4291Serbiansr4292Serbiansr4293Serbiansr4294Serbiansr4295Serbiansr4296Serbiansr4297Serbiansr4298Serbiansr4299Serbiansr43Serbiansr430Serbiansr4300Serbiansr4301Serbiansr4302Serbiansr4303Serbiansr4304Serbiansr4305Serbiansr4306Serbiansr4307Serbiansr4308Serbiansr4309Serbiansr431Serbiansr4310Serbiansr4311Serbiansr4312Serbiansr4313Serbiansr4314Serbiansr4315Serbiansr4316Serbiansr4317Serbiansr4318Serbiansr4319Serbiansr432Serbiansr4320Serbiansr4321Serbiansr4322Serbiansr4323Serbiansr4324Serbiansr4325Serbiansr4326Serbiansr4327Serbiansr4328Serbiansr4329Serbiansr433Serbiansr4330Serbiansr4331Serbiansr4332Serbiansr4333Serbiansr4334Serbiansr4335Serbiansr4336Serbiansr4337Serbiansr4338Serbiansr4339Serbiansr434Serbiansr4340Serbiansr4341Serbiansr4342Serbiansr4343Serbiansr4344Serbiansr4345Serbiansr4346Serbiansr4347Serbiansr4348Serbiansr4349Serbiansr435Serbiansr4350Serbiansr4351Serbiansr4352Serbiansr4353Serbiansr4354Serbiansr4355Serbiansr4356Serbiansr4357Serbiansr4358Serbiansr4359Serbiansr436Serbiansr4360Serbiansr4361Serbiansr4362Serbiansr4363Serbiansr4364Serbiansr4365Serbiansr4366Serbiansr4367Serbiansr4368Serbiansr4369Serbiansr437Serbiansr4370Serbiansr4371Serbiansr4372Serbiansr4373Serbiansr4374Serbiansr4375Serbiansr4376Serbiansr4377Serbiansr4378Serbiansr4379Serbiansr438Serbiansr4380Serbiansr4381Serbiansr4382Serbiansr4383Serbiansr4384Serbiansr4385Serbiansr4386Serbiansr4387Serbiansr4388Serbiansr4389Serbiansr439Serbiansr4390Serbiansr4391Serbiansr4392Serbiansr4393Serbiansr4394Serbiansr4395Serbiansr4396Serbiansr4397Serbiansr4398Serbiansr4399Serbiansr44Serbiansr440Serbiansr4400Serbiansr4401Serbiansr4402Serbiansr4403Serbiansr4404Serbiansr4405Serbiansr4406Serbiansr4407Serbiansr4408Serbiansr4409Serbiansr441Serbiansr4410Serbiansr4411Serbiansr4412Serbiansr4413Serbiansr4414Serbiansr4415Serbiansr4416Serbiansr4417Serbiansr4418Serbiansr4419Serbiansr442Serbiansr4420Serbiansr4421Serbiansr4422Serbiansr4423Serbiansr4424Serbiansr4425Serbiansr4426Serbiansr4427Serbiansr4428Serbiansr4429Serbiansr443Serbiansr4430Serbiansr4431Serbiansr4432Serbiansr4433Serbiansr4434Serbiansr4435Serbiansr4436Serbiansr4437Serbiansr4438Serbiansr4439Serbiansr444Serbiansr4440Serbiansr4441Serbiansr4442Serbiansr4443Serbiansr4444Serbiansr4445Serbiansr4446Serbiansr4447Serbiansr4448Serbiansr4449Serbiansr445Serbiansr4450Serbiansr4451Serbiansr4452Serbiansr4453Serbiansr4454Serbiansr4455Serbiansr4456Serbiansr4457Serbiansr4458Serbiansr4459Serbiansr446Serbiansr4460Serbiansr4461Serbiansr4462Serbiansr4463Serbiansr4464Serbiansr4465Serbiansr4466Serbiansr4467Serbiansr4468Serbiansr4469Serbiansr447Serbiansr4470Serbiansr4471Serbiansr4472Serbiansr4473Serbiansr4474Serbiansr4475Serbiansr4476Serbiansr4477Serbiansr4478Serbiansr4479Serbiansr448Serbiansr4480Serbiansr4481Serbiansr4482Serbiansr4483Serbiansr4484Serbiansr4485Serbiansr4486Serbiansr4487Serbiansr4488Serbiansr4489Serbiansr449Serbiansr4490Serbiansr4491Serbiansr4492Serbiansr4493Serbiansr4494Serbiansr4495Serbiansr4496Serbiansr4497Serbiansr4498Serbiansr4499Serbiansr45Serbiansr450Serbiansr4500Serbiansr4501Serbiansr4502Serbiansr4503Serbiansr4504Serbiansr4505Serbiansr4506Serbiansr4507Serbiansr4508Serbiansr4509Serbiansr451Serbiansr4510Serbiansr4511Serbiansr4512Serbiansr4513Serbiansr4514Serbiansr4515Serbiansr4516Serbiansr4517Serbiansr4518Serbiansr4519Serbiansr452Serbiansr4520Serbiansr4521Serbiansr4522Serbiansr4523Serbiansr4524Serbiansr4525Serbiansr4526Serbiansr4527Serbiansr4528Serbiansr4529Serbiansr453Serbiansr4530Serbiansr4531Serbiansr4532Serbiansr4533Serbiansr4534Serbiansr4535Serbiansr4536Serbiansr4537Serbiansr4538Serbiansr4539Serbiansr454Serbiansr4540Serbiansr4541Serbiansr4542Serbiansr4543Serbiansr4544Serbiansr4545Serbiansr4546Serbiansr4547Serbiansr4548Serbiansr4549Serbiansr455Serbiansr4550Serbiansr4551Serbiansr4552Serbiansr4553Serbiansr4554Serbiansr4555Serbiansr4556Serbiansr4557Serbiansr4558Serbiansr4559Serbiansr456Serbiansr4560Serbiansr4561Serbiansr4562Serbiansr4563Serbiansr4564Serbiansr4565Serbiansr4566Serbiansr4567Serbiansr4568Serbiansr4569Serbiansr457Serbiansr4570Serbiansr4571Serbiansr4572Serbiansr4573Serbiansr4574Serbiansr4575Serbiansr4576Serbiansr4577Serbiansr4578Serbiansr4579Serbiansr458Serbiansr4580Serbiansr4581Serbiansr4582Serbiansr4583Serbiansr4584Serbiansr4585Serbiansr4586Serbiansr4587Serbiansr4588Serbiansr4589Serbiansr459Serbiansr4590Serbiansr4591Serbiansr4592Serbiansr4593Serbiansr4594Serbiansr4595Serbiansr4596Serbiansr4597Serbiansr4598Serbiansr4599Serbiansr46Serbiansr460Serbiansr4600Serbiansr4601Serbiansr4602Serbiansr4603Serbiansr4604Serbiansr4605Serbiansr4606Serbiansr4607Serbiansr4608Serbiansr4609Serbiansr461Serbiansr4610Serbiansr4611Serbiansr4612Serbiansr4613Serbiansr4614Serbiansr4615Serbiansr4616Serbiansr4617Serbiansr4618Serbiansr4619Serbiansr462Serbiansr4620Serbiansr4621Serbiansr4622Serbiansr4623Serbiansr4624Serbiansr4625Serbiansr4626Serbiansr4627Serbiansr4628Serbiansr4629Serbiansr463Serbiansr4630Serbiansr4631Serbiansr4632Serbiansr4633Serbiansr4634Serbiansr4635Serbiansr4636Serbiansr4637Serbiansr4638Serbiansr4639Serbiansr464Serbiansr4640Serbiansr4641Serbiansr4642Serbiansr4643Serbiansr4644Serbiansr4645Serbiansr4646Serbiansr4647Serbiansr4648Serbiansr4649Serbiansr465Serbiansr4650Serbiansr4651Serbiansr4652Serbiansr4653Serbiansr4654Serbiansr4655Serbiansr4656Serbiansr4657Serbiansr4658Serbiansr4659Serbiansr466Serbiansr4660Serbiansr4661Serbiansr4662Serbiansr4663Serbiansr4664Serbiansr4665Serbiansr4666Serbiansr4667Serbiansr4668Serbiansr4669Serbiansr467Serbiansr4670Serbiansr4671Serbiansr4672Serbiansr4673Serbiansr4674Serbiansr4675Serbiansr4676Serbiansr4677Serbiansr4678Serbiansr4679Serbiansr468Serbiansr4680Serbiansr4681Serbiansr4682Serbiansr4683Serbiansr4684Serbiansr4685Serbiansr4686Serbiansr4687Serbiansr4688Serbiansr4689Serbiansr469Serbiansr4690Serbiansr4691Serbiansr4692Serbiansr4693Serbiansr4694Serbiansr4695Serbiansr4696Serbiansr4697Serbiansr4698Serbiansr4699Serbiansr47Serbiansr470Serbiansr4700Serbiansr4701Serbiansr4702Serbiansr4703Serbiansr4704Serbiansr4705Serbiansr4706Serbiansr4707Serbiansr4708Serbiansr4709Serbiansr471Serbiansr4710Serbiansr4711Serbiansr4712Serbiansr4713Serbiansr4714Serbiansr4715Serbiansr4716Serbiansr4717Serbiansr4718Serbiansr4719Serbiansr472Serbiansr4720Serbiansr4721Serbiansr4722Serbiansr4723Serbiansr4724Serbiansr4725Serbiansr4726Serbiansr4727Serbiansr4728Serbiansr4729Serbiansr473Serbiansr4730Serbiansr4731Serbiansr4732Serbiansr4733Serbiansr4734Serbiansr4735Serbiansr4736Serbiansr4737Serbiansr4738Serbiansr4739Serbiansr474Serbiansr4740Serbiansr4741Serbiansr4742Serbiansr4743Serbiansr4744Serbiansr4745Serbiansr4746Serbiansr4747Serbiansr4748Serbiansr4749Serbiansr475Serbiansr4750Serbiansr4751Serbiansr4752Serbiansr4753Serbiansr4754Serbiansr4755Serbiansr4756Serbiansr4757Serbiansr4758Serbiansr4759Serbiansr476Serbiansr4760Serbiansr4761Serbiansr4762Serbiansr4763Serbiansr4764Serbiansr4765Serbiansr4766Serbiansr4767Serbiansr4768Serbiansr4769Serbiansr477Serbiansr4770Serbiansr4771Serbiansr4772Serbiansr4773Serbiansr4774Serbiansr4775Serbiansr4776Serbiansr4777Serbiansr4778Serbiansr4779Serbiansr478Serbiansr4780Serbiansr4781Serbiansr4782Serbiansr4783Serbiansr4784Serbiansr4785Serbiansr4786Serbiansr4787Serbiansr4788Serbiansr4789Serbiansr479Serbiansr4790Serbiansr4791Serbiansr4792Serbiansr4793Serbiansr4794Serbiansr4795Serbiansr4796Serbiansr4797Serbiansr4798Serbiansr4799Serbiansr48Serbiansr480Serbiansr4800Serbiansr4801Serbiansr4802Serbiansr4803Serbiansr4804Serbiansr4805Serbiansr4806Serbiansr4807Serbiansr4808Serbiansr4809Serbiansr481Serbiansr4810Serbiansr4811Serbiansr4812Serbiansr4813Serbiansr4814Serbiansr4815Serbiansr4816Serbiansr4817Serbiansr4818Serbiansr4819Serbiansr482Serbiansr4820Serbiansr4821Serbiansr4822Serbiansr4823Serbiansr4824Serbiansr4825Serbiansr4826Serbiansr4827Serbiansr4828Serbiansr4829Serbiansr483Serbiansr4830Serbiansr4831Serbiansr4832Serbiansr4833Serbiansr4834Serbiansr4835Serbiansr4836Serbiansr4837Serbiansr4838Serbiansr4839Serbiansr484Serbiansr4840Serbiansr4841Serbiansr4842Serbiansr4843Serbiansr4844Serbiansr4845Serbiansr4846Serbiansr4847Serbiansr4848Serbiansr4849Serbiansr485Serbiansr4850Serbiansr4851Serbiansr4852Serbiansr4853Serbiansr4854Serbiansr4855Serbiansr4856Serbiansr4857Serbiansr4858Serbiansr4859Serbiansr486Serbiansr4860Serbiansr4861Serbiansr4862Serbiansr4863Serbiansr4864Serbiansr4865Serbiansr4866Serbiansr4867Serbiansr4868Serbiansr4869Serbiansr487Serbiansr4870Serbiansr4871Serbiansr4872Serbiansr4873Serbiansr4874Serbiansr4875Serbiansr4876Serbiansr4877Serbiansr4878Serbiansr4879Serbiansr488Serbiansr4880Serbiansr4881Serbiansr4882Serbiansr4883Serbiansr4884Serbiansr4885Serbiansr4886Serbiansr4887Serbiansr4888Serbiansr4889Serbiansr489Serbiansr4890Serbiansr4891Serbiansr4892Serbiansr4893Serbiansr4894Serbiansr4895Serbiansr4896Serbiansr4897Serbiansr4898Serbiansr4899Serbiansr49Serbiansr490Serbiansr4900Serbiansr4901Serbiansr4902Serbiansr4903Serbiansr4904Serbiansr4905Serbiansr4906Serbiansr4907Serbiansr4908Serbiansr4909Serbiansr491Serbiansr4910Serbiansr4911Serbiansr4912Serbiansr4913Serbiansr4914Serbiansr4915Serbiansr4916Serbiansr4917Serbiansr4918Serbiansr4919Serbiansr492Serbiansr4920Serbiansr4921Serbiansr4922Serbiansr4923Serbiansr4924Serbiansr4925Serbiansr4926Serbiansr4927Serbiansr4928Serbiansr4929Serbiansr493Serbiansr4930Serbiansr4931Serbiansr4932Serbiansr4933Serbiansr4934Serbiansr4935Serbiansr4936Serbiansr4937Serbiansr4938Serbiansr4939Serbiansr494Serbiansr4940Serbiansr4941Serbiansr4942Serbiansr4943Serbiansr4944Serbiansr4945Serbiansr4946Serbiansr4947Serbiansr4948Serbiansr4949Serbiansr495Serbiansr4950Serbiansr4951Serbiansr4952Serbiansr4953Serbiansr4954Serbiansr4955Serbiansr4956Serbiansr4957Serbiansr4958Serbiansr4959Serbiansr496Serbiansr4960Serbiansr4961Serbiansr4962Serbiansr4963Serbiansr4964Serbiansr4965Serbiansr4966Serbiansr4967Serbiansr4968Serbiansr4969Serbiansr497Serbiansr4970Serbiansr4971Serbiansr4972Serbiansr4973Serbiansr4974Serbiansr4975Serbiansr4976Serbiansr4977Serbiansr4978Serbiansr4979Serbiansr498Serbiansr4980Serbiansr4981Serbiansr4982Serbiansr4983Serbiansr4984Serbiansr4985Serbiansr4986Serbiansr4987Serbiansr4988Serbiansr4989Serbiansr499Serbiansr4990Serbiansr4991Serbiansr4992Serbiansr4993Serbiansr4994Serbiansr4995Serbiansr4996Serbiansr4997Serbiansr4998Serbiansr4999Serbiansr5Serbiansr50Serbiansr500Serbiansr5000Serbiansr5001Serbiansr5002Serbiansr5003Serbiansr5004Serbiansr5005Serbiansr5006Serbiansr5007Serbiansr5008Serbiansr5009Serbiansr501Serbiansr5010Serbiansr5011Serbiansr5012Serbiansr5013Serbiansr5014Serbiansr5015Serbiansr5016Serbiansr5017Serbiansr5018Serbiansr5019Serbiansr502Serbiansr5020Serbiansr5021Serbiansr5022Serbiansr5023Serbiansr5024Serbiansr5025Serbiansr5026Serbiansr5027Serbiansr5028Serbiansr5029Serbiansr503Serbiansr5030Serbiansr5031Serbiansr5032Serbiansr5033Serbiansr5034Serbiansr5035Serbiansr5036Serbiansr5037Serbiansr5038Serbiansr5039Serbiansr504Serbiansr5040Serbiansr5041Serbiansr5042Serbiansr5043Serbiansr5044Serbiansr5045Serbiansr5046Serbiansr5047Serbiansr5048Serbiansr5049Serbiansr505Serbiansr5050Serbiansr5051Serbiansr5052Serbiansr5053Serbiansr5054Serbiansr5055Serbiansr5056Serbiansr5057Serbiansr5058Serbiansr5059Serbiansr506Serbiansr5060Serbiansr5061Serbiansr5062Serbiansr5063Serbiansr5064Serbiansr5065Serbiansr5066Serbiansr5067Serbiansr5068Serbiansr5069Serbiansr507Serbiansr5070Serbiansr5071Serbiansr5072Serbiansr5073Serbiansr5074Serbiansr5075Serbiansr5076Serbiansr5077Serbiansr5078Serbiansr5079Serbiansr508Serbiansr5080Serbiansr5081Serbiansr5082Serbiansr5083Serbiansr5084Serbiansr5085Serbiansr5086Serbiansr5087Serbiansr5088Serbiansr5089Serbiansr509Serbiansr5090Serbiansr5091Serbiansr5092Serbiansr5093Serbiansr5094Serbiansr5095Serbiansr5096Serbiansr5097Serbiansr5098Serbiansr5099Serbiansr51Serbiansr510Serbiansr5100Serbiansr5101Serbiansr5102Serbiansr5103Serbiansr5104Serbiansr5105Serbiansr5106Serbiansr5107Serbiansr5108Serbiansr5109Serbiansr511Serbiansr5110Serbiansr5111Serbiansr5112Serbiansr5113Serbiansr5114Serbiansr5115Serbiansr5116Serbiansr5117Serbiansr5118Serbiansr5119Serbiansr512Serbiansr5120Serbiansr5121Serbiansr5122Serbiansr5123Serbiansr5124Serbiansr5125Serbiansr5126Serbiansr5127Serbiansr5128Serbiansr5129Serbiansr513Serbiansr5130Serbiansr5131Serbiansr5132Serbiansr5133Serbiansr5134Serbiansr5135Serbiansr5136Serbiansr5137Serbiansr5138Serbiansr5139Serbiansr514Serbiansr5140Serbiansr5141Serbiansr5142Serbiansr5143Serbiansr5144Serbiansr5145Serbiansr5146Serbiansr5147Serbiansr5148Serbiansr5149Serbiansr515Serbiansr5150Serbiansr5151Serbiansr5152Serbiansr5153Serbiansr5154Serbiansr5155Serbiansr5156Serbiansr5157Serbiansr5158Serbiansr5159Serbiansr516Serbiansr5160Serbiansr5161Serbiansr5162Serbiansr5163Serbiansr5164Serbiansr5165Serbiansr5166Serbiansr5167Serbiansr5168Serbiansr5169Serbiansr517Serbiansr5170Serbiansr5171Serbiansr5172Serbiansr5173Serbiansr5174Serbiansr5175Serbiansr5176Serbiansr5177Serbiansr5178Serbiansr5179Serbiansr518Serbiansr5180Serbiansr5181Serbiansr5182Serbiansr5183Serbiansr5184Serbiansr5185Serbiansr5186Serbiansr5187Serbiansr5188Serbiansr5189Serbiansr519Serbiansr5190Serbiansr5191Serbiansr5192Serbiansr5193Serbiansr5194Serbiansr5195Serbiansr5196Serbiansr5197Serbiansr5198Serbiansr5199Serbiansr52Serbiansr520Serbiansr5200Serbiansr5201Serbiansr5202Serbiansr5203Serbiansr5204Serbiansr5205Serbiansr5206Serbiansr5207Serbiansr5208Serbiansr5209Serbiansr521Serbiansr5210Serbiansr5211Serbiansr5212Serbiansr5213Serbiansr5214Serbiansr5215Serbiansr5216Serbiansr5217Serbiansr5218Serbiansr5219Serbiansr522Serbiansr5220Serbiansr5221Serbiansr5222Serbiansr5223Serbiansr5224Serbiansr5225Serbiansr5226Serbiansr5227Serbiansr5228Serbiansr5229Serbiansr523Serbiansr5230Serbiansr5231Serbiansr5232Serbiansr5233Serbiansr5234Serbiansr5235Serbiansr5236Serbiansr5237Serbiansr5238Serbiansr5239Serbiansr524Serbiansr5240Serbiansr5241Serbiansr5242Serbiansr5243Serbiansr5244Serbiansr5245Serbiansr5246Serbiansr5247Serbiansr5248Serbiansr5249Serbiansr525Serbiansr5250Serbiansr5251Serbiansr5252Serbiansr5253Serbiansr5254Serbiansr5255Serbiansr5256Serbiansr5257Serbiansr5258Serbiansr5259Serbiansr526Serbiansr5260Serbiansr5261Serbiansr5262Serbiansr5263Serbiansr5264Serbiansr5265Serbiansr5266Serbiansr5267Serbiansr5268Serbiansr5269Serbiansr527Serbiansr5270Serbiansr5271Serbiansr5272Serbiansr5273Serbiansr5274Serbiansr5275Serbiansr5276Serbiansr5277Serbiansr5278Serbiansr5279Serbiansr528Serbiansr5280Serbiansr5281Serbiansr5282Serbiansr5283Serbiansr5284Serbiansr5285Serbiansr5286Serbiansr5287Serbiansr5288Serbiansr5289Serbiansr529Serbiansr5290Serbiansr5291Serbiansr5292Serbiansr5293Serbiansr5294Serbiansr5295Serbiansr5296Serbiansr5297Serbiansr5298Serbiansr5299Serbiansr53Serbiansr530Serbiansr5300Serbiansr5301Serbiansr5302Serbiansr5303Serbiansr5304Serbiansr5305Serbiansr5306Serbiansr5307Serbiansr5308Serbiansr5309Serbiansr531Serbiansr5310Serbiansr5311Serbiansr5312Serbiansr5313Serbiansr5314Serbiansr5315Serbiansr5316Serbiansr5317Serbiansr5318Serbiansr5319Serbiansr532Serbiansr5320Serbiansr5321Serbiansr5322Serbiansr5323Serbiansr5324Serbiansr5325Serbiansr5326Serbiansr5327Serbiansr5328Serbiansr5329Serbiansr533Serbiansr5330Serbiansr5331Serbiansr5332Serbiansr5333Serbiansr5334Serbiansr5335Serbiansr5336Serbiansr5337Serbiansr5338Serbiansr5339Serbiansr534Serbiansr5340Serbiansr5341Serbiansr5342Serbiansr5343Serbiansr5344Serbiansr5345Serbiansr5346Serbiansr5347Serbiansr5348Serbiansr5349Serbiansr535Serbiansr5350Serbiansr5351Serbiansr5352Serbiansr5353Serbiansr5354Serbiansr5355Serbiansr5356Serbiansr5357Serbiansr5358Serbiansr5359Serbiansr536Serbiansr5360Serbiansr5361Serbiansr5362Serbiansr5363Serbiansr5364Serbiansr5365Serbiansr5366Serbiansr5367Serbiansr5368Serbiansr5369Serbiansr537Serbiansr5370Serbiansr5371Serbiansr5372Serbiansr5373Serbiansr5374Serbiansr5375Serbiansr5376Serbiansr5377Serbiansr5378Serbiansr5379Serbiansr538Serbiansr5380Serbiansr5381Serbiansr5382Serbiansr5383Serbiansr5384Serbiansr5385Serbiansr5386Serbiansr5387Serbiansr5388Serbiansr5389Serbiansr539Serbiansr5390Serbiansr5391Serbiansr5392Serbiansr5393Serbiansr5394Serbiansr5395Serbiansr5396Serbiansr5397Serbiansr5398Serbiansr5399Serbiansr54Serbiansr540Serbiansr5400Serbiansr5401Serbiansr5402Serbiansr5403Serbiansr5404Serbiansr5405Serbiansr5406Serbiansr5407Serbiansr5408Serbiansr5409Serbiansr541Serbiansr5410Serbiansr5411Serbiansr5412Serbiansr5413Serbiansr5414Serbiansr5415Serbiansr5416Serbiansr5417Serbiansr5418Serbiansr5419Serbiansr542Serbiansr5420Serbiansr5421Serbiansr5422Serbiansr5423Serbiansr5424Serbiansr5425Serbiansr5426Serbiansr5427Serbiansr5428Serbiansr5429Serbiansr543Serbiansr5430Serbiansr5431Serbiansr5432Serbiansr5433Serbiansr5434Serbiansr5435Serbiansr5436Serbiansr5437Serbiansr5438Serbiansr5439Serbiansr544Serbiansr5440Serbiansr5441Serbiansr5442Serbiansr5443Serbiansr5444Serbiansr5445Serbiansr5446Serbiansr5447Serbiansr5448Serbiansr5449Serbiansr545Serbiansr5450Serbiansr5451Serbiansr5452Serbiansr5453Serbiansr5454Serbiansr5455Serbiansr5456Serbiansr5457Serbiansr5458Serbiansr5459Serbiansr546Serbiansr5460Serbiansr5461Serbiansr5462Serbiansr5463Serbiansr5464Serbiansr5465Serbiansr5466Serbiansr5467Serbiansr5468Serbiansr5469Serbiansr547Serbiansr5470Serbiansr5471Serbiansr5472Serbiansr5473Serbiansr5474Serbiansr5475Serbiansr5476Serbiansr5477Serbiansr5478Serbiansr5479Serbiansr548Serbiansr5480Serbiansr5481Serbiansr5482Serbiansr5483Serbiansr5484Serbiansr5485Serbiansr5486Serbiansr5487Serbiansr5488Serbiansr5489Serbiansr549Serbiansr5490Serbiansr5491Serbiansr5492Serbiansr5493Serbiansr5494Serbiansr5495Serbiansr5496Serbiansr5497Serbiansr5498Serbiansr5499Serbiansr55Serbiansr550Serbiansr5500Serbiansr5501Serbiansr5502Serbiansr5503Serbiansr5504Serbiansr5505Serbiansr5506Serbiansr5507Serbiansr5508Serbiansr5509Serbiansr551Serbiansr5510Serbiansr5511Serbiansr5512Serbiansr5513Serbiansr5514Serbiansr5515Serbiansr5516Serbiansr5517Serbiansr5518Serbiansr5519Serbiansr552Serbiansr5520Serbiansr5521Serbiansr5522Serbiansr5523Serbiansr5524Serbiansr5525Serbiansr5526Serbiansr5527Serbiansr5528Serbiansr5529Serbiansr553Serbiansr5530Serbiansr5531Serbiansr5532Serbiansr5533Serbiansr5534Serbiansr5535Serbiansr5536Serbiansr5537Serbiansr5538Serbiansr5539Serbiansr554Serbiansr5540Serbiansr5541Serbiansr5542Serbiansr5543Serbiansr5544Serbiansr5545Serbiansr5546Serbiansr5547Serbiansr5548Serbiansr5549Serbiansr555Serbiansr5550Serbiansr5551Serbiansr5552Serbiansr5553Serbiansr5554Serbiansr5555Serbiansr5556Serbiansr5557Serbiansr5558Serbiansr5559Serbiansr556Serbiansr5560Serbiansr5561Serbiansr5562Serbiansr5563Serbiansr5564Serbiansr5565Serbiansr5566Serbiansr5567Serbiansr5568Serbiansr5569Serbiansr557Serbiansr5570Serbiansr5571Serbiansr5572Serbiansr5573Serbiansr5574Serbiansr5575Serbiansr5576Serbiansr5577Serbiansr5578Serbiansr5579Serbiansr558Serbiansr5580Serbiansr5581Serbiansr5582Serbiansr5583Serbiansr5584Serbiansr5585Serbiansr5586Serbiansr5587Serbiansr5588Serbiansr5589Serbiansr559Serbiansr5590Serbiansr5591Serbiansr5592Serbiansr5593Serbiansr5594Serbiansr5595Serbiansr5596Serbiansr5597Serbiansr5598Serbiansr5599Serbiansr56Serbiansr560Serbiansr5600Serbiansr5601Serbiansr5602Serbiansr5603Serbiansr5604Serbiansr5605Serbiansr5606Serbiansr5607Serbiansr5608Serbiansr5609Serbiansr561Serbiansr5610Serbiansr5611Serbiansr5612Serbiansr5613Serbiansr5614Serbiansr5615Serbiansr5616Serbiansr5617Serbiansr5618Serbiansr5619Serbiansr562Serbiansr5620Serbiansr5621Serbiansr5622Serbiansr5623Serbiansr5624Serbiansr5625Serbiansr5626Serbiansr5627Serbiansr5628Serbiansr5629Serbiansr563Serbiansr5630Serbiansr5631Serbiansr5632Serbiansr5633Serbiansr5634Serbiansr5635Serbiansr5636Serbiansr5637Serbiansr5638Serbiansr5639Serbiansr564Serbiansr5640Serbiansr5641Serbiansr5642Serbiansr5643Serbiansr5644Serbiansr5645Serbiansr5646Serbiansr5647Serbiansr5648Serbiansr5649Serbiansr565Serbiansr5650Serbiansr5651Serbiansr5652Serbiansr5653Serbiansr5654Serbiansr5655Serbiansr5656Serbiansr5657Serbiansr5658Serbiansr5659Serbiansr566Serbiansr5660Serbiansr5661Serbiansr5662Serbiansr5663Serbiansr5664Serbiansr5665Serbiansr5666Serbiansr5667Serbiansr5668Serbiansr5669Serbiansr567Serbiansr5670Serbiansr5671Serbiansr5672Serbiansr5673Serbiansr5674Serbiansr5675Serbiansr5676Serbiansr5677Serbiansr5678Serbiansr5679Serbiansr568Serbiansr5680Serbiansr5681Serbiansr5682Serbiansr5683Serbiansr5684Serbiansr5685Serbiansr5686Serbiansr5687Serbiansr5688Serbiansr5689Serbiansr569Serbiansr5690Serbiansr5691Serbiansr5692Serbiansr5693Serbiansr5694Serbiansr5695Serbiansr5696Serbiansr5697Serbiansr5698Serbiansr5699Serbiansr57Serbiansr570Serbiansr5700Serbiansr5701Serbiansr5702Serbiansr5703Serbiansr5704Serbiansr5705Serbiansr5706Serbiansr5707Serbiansr5708Serbiansr5709Serbiansr571Serbiansr5710Serbiansr5711Serbiansr5712Serbiansr5713Serbiansr5714Serbiansr5715Serbiansr5716Serbiansr5717Serbiansr5718Serbiansr5719Serbiansr572Serbiansr5720Serbiansr5721Serbiansr5722Serbiansr5723Serbiansr5724Serbiansr5725Serbiansr5726Serbiansr5727Serbiansr5728Serbiansr5729Serbiansr573Serbiansr5730Serbiansr5731Serbiansr5732Serbiansr5733Serbiansr5734Serbiansr5735Serbiansr5736Serbiansr5737Serbiansr5738Serbiansr5739Serbiansr574Serbiansr5740Serbiansr5741Serbiansr5742Serbiansr5743Serbiansr5744Serbiansr5745Serbiansr5746Serbiansr5747Serbiansr5748Serbiansr5749Serbiansr575Serbiansr5750Serbiansr5751Serbiansr5752Serbiansr5753Serbiansr5754Serbiansr5755Serbiansr5756Serbiansr5757Serbiansr5758Serbiansr5759Serbiansr576Serbiansr5760Serbiansr5761Serbiansr5762Serbiansr5763Serbiansr5764Serbiansr5765Serbiansr5766Serbiansr5767Serbiansr5768Serbiansr5769Serbiansr577Serbiansr5770Serbiansr5771Serbiansr5772Serbiansr5773Serbiansr5774Serbiansr5775Serbiansr5776Serbiansr5777Serbiansr5778Serbiansr5779Serbiansr578Serbiansr5780Serbiansr5781Serbiansr5782Serbiansr5783Serbiansr5784Serbiansr5785Serbiansr5786Serbiansr5787Serbiansr5788Serbiansr5789Serbiansr579Serbiansr5790Serbiansr5791Serbiansr5792Serbiansr5793Serbiansr5794Serbiansr5795Serbiansr5796Serbiansr5797Serbiansr5798Serbiansr5799Serbiansr58Serbiansr580Serbiansr5800Serbiansr5801Serbiansr5802Serbiansr5803Serbiansr5804Serbiansr5805Serbiansr5806Serbiansr5807Serbiansr5808Serbiansr5809Serbiansr581Serbiansr5810Serbiansr5811Serbiansr5812Serbiansr5813Serbiansr5814Serbiansr5815Serbiansr5816Serbiansr5817Serbiansr5818Serbiansr5819Serbiansr582Serbiansr5820Serbiansr5821Serbiansr5822Serbiansr5823Serbiansr5824Serbiansr5825Serbiansr5826Serbiansr5827Serbiansr5828Serbiansr5829Serbiansr583Serbiansr5830Serbiansr5831Serbiansr5832Serbiansr5833Serbiansr5834Serbiansr5835Serbiansr5836Serbiansr5837Serbiansr5838Serbiansr5839Serbiansr584Serbiansr5840Serbiansr5841Serbiansr5842Serbiansr5843Serbiansr5844Serbiansr5845Serbiansr5846Serbiansr5847Serbiansr5848Serbiansr5849Serbiansr585Serbiansr5850Serbiansr5851Serbiansr5852Serbiansr5853Serbiansr5854Serbiansr5855Serbiansr5856Serbiansr5857Serbiansr5858Serbiansr5859Serbiansr586Serbiansr5860Serbiansr5861Serbiansr5862Serbiansr5863Serbiansr5864Serbiansr5865Serbiansr5866Serbiansr5867Serbiansr5868Serbiansr5869Serbiansr587Serbiansr5870Serbiansr5871Serbiansr5872Serbiansr5873Serbiansr5874Serbiansr5875Serbiansr5876Serbiansr5877Serbiansr5878Serbiansr5879Serbiansr588Serbiansr5880Serbiansr5881Serbiansr5882Serbiansr5883Serbiansr5884Serbiansr5885Serbiansr5886Serbiansr5887Serbiansr5888Serbiansr5889Serbiansr589Serbiansr5890Serbiansr5891Serbiansr5892Serbiansr5893Serbiansr5894Serbiansr5895Serbiansr5896Serbiansr5897Serbiansr5898Serbiansr5899Serbiansr59Serbiansr590Serbiansr5900Serbiansr5901Serbiansr5902Serbiansr5903Serbiansr5904Serbiansr5905Serbiansr5906Serbiansr5907Serbiansr5908Serbiansr5909Serbiansr591Serbiansr5910Serbiansr5911Serbiansr5912Serbiansr5913Serbiansr5914Serbiansr5915Serbiansr5916Serbiansr5917Serbiansr5918Serbiansr5919Serbiansr592Serbiansr5920Serbiansr5921Serbiansr5922Serbiansr5923Serbiansr5924Serbiansr5925Serbiansr5926Serbiansr5927Serbiansr5928Serbiansr5929Serbiansr593Serbiansr5930Serbiansr5931Serbiansr5932Serbiansr5933Serbiansr5934Serbiansr5935Serbiansr5936Serbiansr5937Serbiansr5938Serbiansr5939Serbiansr594Serbiansr5940Serbiansr5941Serbiansr5942Serbiansr5943Serbiansr5944Serbiansr5945Serbiansr5946Serbiansr5947Serbiansr5948Serbiansr5949Serbiansr595Serbiansr5950Serbiansr5951Serbiansr5952Serbiansr5953Serbiansr5954Serbiansr5955Serbiansr5956Serbiansr5957Serbiansr5958Serbiansr5959Serbiansr596Serbiansr5960Serbiansr5961Serbiansr5962Serbiansr5963Serbiansr5964Serbiansr5965Serbiansr5966Serbiansr5967Serbiansr5968Serbiansr5969Serbiansr597Serbiansr5970Serbiansr5971Serbiansr5972Serbiansr5973Serbiansr5974Serbiansr5975Serbiansr5976Serbiansr5977Serbiansr5978Serbiansr5979Serbiansr598Serbiansr5980Serbiansr5981Serbiansr5982Serbiansr5983Serbiansr5984Serbiansr5985Serbiansr5986Serbiansr5987Serbiansr5988Serbiansr5989Serbiansr599Serbiansr5990Serbiansr5991Serbiansr5992Serbiansr5993Serbiansr5994Serbiansr5995Serbiansr5996Serbiansr5997Serbiansr5998Serbiansr5999Serbiansr6Serbiansr60Serbiansr600Serbiansr6000Serbiansr6001Serbiansr6002Serbiansr6003Serbiansr6004Serbiansr6005Serbiansr6006Serbiansr6007Serbiansr6008Serbiansr6009Serbiansr601Serbiansr6010Serbiansr6011Serbiansr6012Serbiansr6013Serbiansr6014Serbiansr6015Serbiansr6016Serbiansr6017Serbiansr6018Serbiansr6019Serbiansr602Serbiansr6020Serbiansr6021Serbiansr6022Serbiansr6023Serbiansr6024Serbiansr6025Serbiansr6026Serbiansr6027Serbiansr6028Serbiansr6029Serbiansr603Serbiansr6030Serbiansr6031Serbiansr6032Serbiansr6033Serbiansr6034Serbiansr6035Serbiansr6036Serbiansr6037Serbiansr6038Serbiansr6039Serbiansr604Serbiansr6040Serbiansr6041Serbiansr6042Serbiansr6043Serbiansr6044Serbiansr6045Serbiansr6046Serbiansr6047Serbiansr6048Serbiansr6049Serbiansr605Serbiansr6050Serbiansr6051Serbiansr6052Serbiansr6053Serbiansr6054Serbiansr6055Serbiansr6056Serbiansr6057Serbiansr6058Serbiansr6059Serbiansr606Serbiansr6060Serbiansr6061Serbiansr6062Serbiansr6063Serbiansr6064Serbiansr6065Serbiansr6066Serbiansr6067Serbiansr6068Serbiansr6069Serbiansr607Serbiansr6070Serbiansr6071Serbiansr6072Serbiansr6073Serbiansr6074Serbiansr6075Serbiansr6076Serbiansr6077Serbiansr6078Serbiansr6079Serbiansr608Serbiansr6080Serbiansr6081Serbiansr6082Serbiansr6083Serbiansr6084Serbiansr6085Serbiansr6086Serbiansr6087Serbiansr6088Serbiansr6089Serbiansr609Serbiansr6090Serbiansr6091Serbiansr6092Serbiansr6093Serbiansr6094Serbiansr6095Serbiansr6096Serbiansr6097Serbiansr6098Serbiansr6099Serbiansr61Serbiansr610Serbiansr6100Serbiansr6101Serbiansr6102Serbiansr6103Serbiansr6104Serbiansr6105Serbiansr6106Serbiansr6107Serbiansr6108Serbiansr6109Serbiansr611Serbiansr6110Serbiansr6111Serbiansr6112Serbiansr6113Serbiansr6114Serbiansr6115Serbiansr6116Serbiansr6117Serbiansr6118Serbiansr6119Serbiansr612Serbiansr6120Serbiansr6121Serbiansr6122Serbiansr6123Serbiansr6124Serbiansr6125Serbiansr6126Serbiansr6127Serbiansr6128Serbiansr6129Serbiansr613Serbiansr6130Serbiansr6131Serbiansr6132Serbiansr6133Serbiansr6134Serbiansr6135Serbiansr6136Serbiansr6137Serbiansr6138Serbiansr6139Serbiansr614Serbiansr6140Serbiansr6141Serbiansr6142Serbiansr6143Serbiansr6144Serbiansr6145Serbiansr6146Serbiansr6147Serbiansr6148Serbiansr6149Serbiansr615Serbiansr6150Serbiansr6151Serbiansr6152Serbiansr6153Serbiansr6154Serbiansr6155Serbiansr6156Serbiansr6157Serbiansr6158Serbiansr6159Serbiansr616Serbiansr6160Serbiansr6161Serbiansr6162Serbiansr6163Serbiansr6164Serbiansr6165Serbiansr6166Serbiansr6167Serbiansr6168Serbiansr6169Serbiansr617Serbiansr6170Serbiansr6171Serbiansr6172Serbiansr6173Serbiansr6174Serbiansr6175Serbiansr6176Serbiansr6177Serbiansr6178Serbiansr6179Serbiansr618Serbiansr6180Serbiansr6181Serbiansr6182Serbiansr6183Serbiansr6184Serbiansr6185Serbiansr6186Serbiansr6187Serbiansr6188Serbiansr6189Serbiansr619Serbiansr6190Serbiansr6191Serbiansr6192Serbiansr6193Serbiansr6194Serbiansr6195Serbiansr6196Serbiansr6197Serbiansr6198Serbiansr6199Serbiansr62Serbiansr620Serbiansr6200Serbiansr6201Serbiansr6202Serbiansr6203Serbiansr6204Serbiansr6205Serbiansr6206Serbiansr6207Serbiansr6208Serbiansr6209Serbiansr621Serbiansr6210Serbiansr6211Serbiansr6212Serbiansr6213Serbiansr6214Serbiansr6215Serbiansr6216Serbiansr6217Serbiansr6218Serbiansr6219Serbiansr622Serbiansr6220Serbiansr6221Serbiansr6222Serbiansr6223Serbiansr6224Serbiansr6225Serbiansr6226Serbiansr6227Serbiansr6228Serbiansr6229Serbiansr623Serbiansr6230Serbiansr6231Serbiansr6232Serbiansr6233Serbiansr6234Serbiansr6235Serbiansr6236Serbiansr6237Serbiansr6238Serbiansr6239Serbiansr624Serbiansr6240Serbiansr6241Serbiansr6242Serbiansr6243Serbiansr6244Serbiansr6245Serbiansr6246Serbiansr6247Serbiansr6248Serbiansr6249Serbiansr625Serbiansr6250Serbiansr6251Serbiansr6252Serbiansr6253Serbiansr6254Serbiansr6255Serbiansr6256Serbiansr6257Serbiansr6258Serbiansr6259Serbiansr626Serbiansr6260Serbiansr6261Serbiansr6262Serbiansr6263Serbiansr6264Serbiansr6265Serbiansr6266Serbiansr6267Serbiansr6268Serbiansr6269Serbiansr627Serbiansr6270Serbiansr6271Serbiansr6272Serbiansr6273Serbiansr6274Serbiansr6275Serbiansr6276Serbiansr6277Serbiansr6278Serbiansr6279Serbiansr628Serbiansr6280Serbiansr6281Serbiansr6282Serbiansr6283Serbiansr6284Serbiansr6285Serbiansr6286Serbiansr6287Serbiansr6288Serbiansr6289Serbiansr629Serbiansr6290Serbiansr6291Serbiansr6292Serbiansr6293Serbiansr6294Serbiansr6295Serbiansr6296Serbiansr6297Serbiansr6298Serbiansr6299Serbiansr63Serbiansr630Serbiansr6300Serbiansr6301Serbiansr6302Serbiansr6303Serbiansr6304Serbiansr6305Serbiansr6306Serbiansr6307Serbiansr6308Serbiansr6309Serbiansr631Serbiansr6310Serbiansr6311Serbiansr6312Serbiansr6313Serbiansr6314Serbiansr6315Serbiansr6316Serbiansr6317Serbiansr6318Serbiansr6319Serbiansr632Serbiansr6320Serbiansr6321Serbiansr6322Serbiansr6323Serbiansr6324Serbiansr6325Serbiansr6326Serbiansr6327Serbiansr6328Serbiansr6329Serbiansr633Serbiansr6330Serbiansr6331Serbiansr6332Serbiansr6333Serbiansr6334Serbiansr6335Serbiansr6336Serbiansr6337Serbiansr6338Serbiansr6339Serbiansr634Serbiansr6340Serbiansr6341Serbiansr6342Serbiansr6343Serbiansr6344Serbiansr6345Serbiansr6346Serbiansr6347Serbiansr6348Serbiansr6349Serbiansr635Serbiansr6350Serbiansr6351Serbiansr6352Serbiansr6353Serbiansr6354Serbiansr6355Serbiansr6356Serbiansr6357Serbiansr6358Serbiansr6359Serbiansr636Serbiansr6360Serbiansr6361Serbiansr6362Serbiansr6363Serbiansr6364Serbiansr6365Serbiansr6366Serbiansr6367Serbiansr6368Serbiansr6369Serbiansr637Serbiansr6370Serbiansr6371Serbiansr6372Serbiansr6373Serbiansr6374Serbiansr6375Serbiansr6376Serbiansr6377Serbiansr6378Serbiansr6379Serbiansr638Serbiansr6380Serbiansr6381Serbiansr6382Serbiansr6383Serbiansr6384Serbiansr6385Serbiansr6386Serbiansr6387Serbiansr6388Serbiansr6389Serbiansr639Serbiansr6390Serbiansr6391Serbiansr6392Serbiansr6393Serbiansr6394Serbiansr6395Serbiansr6396Serbiansr6397Serbiansr6398Serbiansr6399Serbiansr64Serbiansr640Serbiansr6400Serbiansr6401Serbiansr6402Serbiansr6403Serbiansr6404Serbiansr6405Serbiansr6406Serbiansr6407Serbiansr6408Serbiansr6409Serbiansr641Serbiansr6410Serbiansr6411Serbiansr6412Serbiansr6413Serbiansr6414Serbiansr6415Serbiansr6416Serbiansr6417Serbiansr6418Serbiansr6419Serbiansr642Serbiansr6420Serbiansr6421Serbiansr6422Serbiansr6423Serbiansr6424Serbiansr6425Serbiansr6426Serbiansr6427Serbiansr6428Serbiansr6429Serbiansr643Serbiansr6430Serbiansr6431Serbiansr6432Serbiansr6433Serbiansr6434Serbiansr6435Serbiansr6436Serbiansr6437Serbiansr6438Serbiansr6439Serbiansr644Serbiansr6440Serbiansr6441Serbiansr6442Serbiansr6443Serbiansr6444Serbiansr6445Serbiansr6446Serbiansr6447Serbiansr6448Serbiansr6449Serbiansr645Serbiansr6450Serbiansr6451Serbiansr6452Serbiansr6453Serbiansr6454Serbiansr6455Serbiansr6456Serbiansr6457Serbiansr6458Serbiansr6459Serbiansr646Serbiansr6460Serbiansr6461Serbiansr6462Serbiansr6463Serbiansr6464Serbiansr6465Serbiansr6466Serbiansr6467Serbiansr6468Serbiansr6469Serbiansr647Serbiansr6470Serbiansr6471Serbiansr6472Serbiansr6473Serbiansr6474Serbiansr6475Serbiansr6476Serbiansr6477Serbiansr6478Serbiansr6479Serbiansr648Serbiansr6480Serbiansr6481Serbiansr6482Serbiansr6483Serbiansr6484Serbiansr6485Serbiansr6486Serbiansr6487Serbiansr6488Serbiansr6489Serbiansr649Serbiansr6490Serbiansr6491Serbiansr6492Serbiansr6493Serbiansr6494Serbiansr6495Serbiansr6496Serbiansr6497Serbiansr6498Serbiansr6499Serbiansr65Serbiansr650Serbiansr6500Serbiansr6501Serbiansr6502Serbiansr6503Serbiansr6504Serbiansr6505Serbiansr6506Serbiansr6507Serbiansr6508Serbiansr6509Serbiansr651Serbiansr6510Serbiansr6511Serbiansr6512Serbiansr6513Serbiansr6514Serbiansr6515Serbiansr6516Serbiansr6517Serbiansr6518Serbiansr6519Serbiansr652Serbiansr6520Serbiansr6521Serbiansr6522Serbiansr6523Serbiansr6524Serbiansr6525Serbiansr6526Serbiansr6527Serbiansr6528Serbiansr6529Serbiansr653Serbiansr6530Serbiansr6531Serbiansr6532Serbiansr6533Serbiansr6534Serbiansr6535Serbiansr6536Serbiansr6537Serbiansr6538Serbiansr6539Serbiansr654Serbiansr6540Serbiansr6541Serbiansr6542Serbiansr6543Serbiansr6544Serbiansr6545Serbiansr6546Serbiansr6547Serbiansr6548Serbiansr6549Serbiansr655Serbiansr6550Serbiansr6551Serbiansr6552Serbiansr6553Serbiansr6554Serbiansr6555Serbiansr6556Serbiansr6557Serbiansr6558Serbiansr6559Serbiansr656Serbiansr6560Serbiansr6561Serbiansr6562Serbiansr6563Serbiansr6564Serbiansr6565Serbiansr6566Serbiansr6567Serbiansr6568Serbiansr6569Serbiansr657Serbiansr6570Serbiansr6571Serbiansr6572Serbiansr6573Serbiansr6574Serbiansr6575Serbiansr6576Serbiansr6577Serbiansr6578Serbiansr6579Serbiansr658Serbiansr6580Serbiansr6581Serbiansr6582Serbiansr6583Serbiansr6584Serbiansr6585Serbiansr6586Serbiansr6587Serbiansr6588Serbiansr6589Serbiansr659Serbiansr6590Serbiansr6591Serbiansr6592Serbiansr6593Serbiansr6594Serbiansr6595Serbiansr6596Serbiansr6597Serbiansr6598Serbiansr6599Serbiansr66Serbiansr660Serbiansr6600Serbiansr6601Serbiansr6602Serbiansr6603Serbiansr6604Serbiansr6605Serbiansr6606Serbiansr6607Serbiansr6608Serbiansr6609Serbiansr661Serbiansr6610Serbiansr6611Serbiansr6612Serbiansr6613Serbiansr6614Serbiansr6615Serbiansr6616Serbiansr6617Serbiansr6618Serbiansr6619Serbiansr662Serbiansr6620Serbiansr6621Serbiansr6622Serbiansr6623Serbiansr6624Serbiansr6625Serbiansr6626Serbiansr6627Serbiansr6628Serbiansr6629Serbiansr663Serbiansr6630Serbiansr6631Serbiansr6632Serbiansr6633Serbiansr6634Serbiansr6635Serbiansr6636Serbiansr6637Serbiansr6638Serbiansr6639Serbiansr664Serbiansr6640Serbiansr6641Serbiansr6642Serbiansr6643Serbiansr6644Serbiansr6645Serbiansr6646Serbiansr6647Serbiansr6648Serbiansr6649Serbiansr665Serbiansr6650Serbiansr6651Serbiansr6652Serbiansr6653Serbiansr6654Serbiansr6655Serbiansr6656Serbiansr6657Serbiansr6658Serbiansr6659Serbiansr666Serbiansr6660Serbiansr6661Serbiansr6662Serbiansr6663Serbiansr6664Serbiansr6665Serbiansr6666Serbiansr6667Serbiansr6668Serbiansr6669Serbiansr667Serbiansr6670Serbiansr6671Serbiansr6672Serbiansr6673Serbiansr6674Serbiansr6675Serbiansr6676Serbiansr6677Serbiansr6678Serbiansr6679Serbiansr668Serbiansr6680Serbiansr6681Serbiansr6682Serbiansr6683Serbiansr6684Serbiansr6685Serbiansr6686Serbiansr6687Serbiansr6688Serbiansr6689Serbiansr669Serbiansr6690Serbiansr6691Serbiansr6692Serbiansr6693Serbiansr6694Serbiansr6695Serbiansr6696Serbiansr6697Serbiansr6698Serbiansr6699Serbiansr67Serbiansr670Serbiansr6700Serbiansr6701Serbiansr6702Serbiansr6703Serbiansr6704Serbiansr6705Serbiansr6706Serbiansr6707Serbiansr6708Serbiansr6709Serbiansr671Serbiansr6710Serbiansr6711Serbiansr6712Serbiansr6713Serbiansr6714Serbiansr6715Serbiansr6716Serbiansr6717Serbiansr6718Serbiansr6719Serbiansr672Serbiansr6720Serbiansr6721Serbiansr6722Serbiansr6723Serbiansr6724Serbiansr6725Serbiansr6726Serbiansr6727Serbiansr6728Serbiansr6729Serbiansr673Serbiansr6730Serbiansr6731Serbiansr6732Serbiansr6733Serbiansr6734Serbiansr6735Serbiansr6736Serbiansr6737Serbiansr6738Serbiansr6739Serbiansr674Serbiansr6740Serbiansr6741Serbiansr6742Serbiansr6743Serbiansr6744Serbiansr6745Serbiansr6746Serbiansr6747Serbiansr6748Serbiansr6749Serbiansr675Serbiansr6750Serbiansr6751Serbiansr6752Serbiansr6753Serbiansr6754Serbiansr6755Serbiansr6756Serbiansr6757Serbiansr6758Serbiansr6759Serbiansr676Serbiansr6760Serbiansr6761Serbiansr6762Serbiansr6763Serbiansr6764Serbiansr6765Serbiansr6766Serbiansr6767Serbiansr6768Serbiansr6769Serbiansr677Serbiansr6770Serbiansr6771Serbiansr6772Serbiansr6773Serbiansr6774Serbiansr6775Serbiansr6776Serbiansr6777Serbiansr6778Serbiansr6779Serbiansr678Serbiansr6780Serbiansr6781Serbiansr6782Serbiansr6783Serbiansr6784Serbiansr6785Serbiansr6786Serbiansr6787Serbiansr6788Serbiansr6789Serbiansr679Serbiansr6790Serbiansr6791Serbiansr6792Serbiansr6793Serbiansr6794Serbiansr6795Serbiansr6796Serbiansr6797Serbiansr6798Serbiansr6799Serbiansr68Serbiansr680Serbiansr6800Serbiansr6801Serbiansr6802Serbiansr6803Serbiansr6804Serbiansr6805Serbiansr6806Serbiansr6807Serbiansr6808Serbiansr6809Serbiansr681Serbiansr6810Serbiansr6811Serbiansr6812Serbiansr6813Serbiansr6814Serbiansr6815Serbiansr6816Serbiansr6817Serbiansr6818Serbiansr6819Serbiansr682Serbiansr6820Serbiansr6821Serbiansr6822Serbiansr6823Serbiansr6824Serbiansr6825Serbiansr6826Serbiansr6827Serbiansr6828Serbiansr6829Serbiansr683Serbiansr6830Serbiansr6831Serbiansr6832Serbiansr6833Serbiansr6834Serbiansr6835Serbiansr6836Serbiansr6837Serbiansr6838Serbiansr6839Serbiansr684Serbiansr6840Serbiansr6841Serbiansr6842Serbiansr6843Serbiansr6844Serbiansr6845Serbiansr6846Serbiansr6847Serbiansr6848Serbiansr6849Serbiansr685Serbiansr6850Serbiansr6851Serbiansr6852Serbiansr6853Serbiansr6854Serbiansr6855Serbiansr6856Serbiansr6857Serbiansr6858Serbiansr6859Serbiansr686Serbiansr6860Serbiansr6861Serbiansr6862Serbiansr6863Serbiansr6864Serbiansr6865Serbiansr6866Serbiansr6867Serbiansr6868Serbiansr6869Serbiansr687Serbiansr6870Serbiansr6871Serbiansr6872Serbiansr6873Serbiansr6874Serbiansr6875Serbiansr6876Serbiansr6877Serbiansr6878Serbiansr6879Serbiansr688Serbiansr6880Serbiansr6881Serbiansr6882Serbiansr6883Serbiansr6884Serbiansr6885Serbiansr6886Serbiansr6887Serbiansr6888Serbiansr6889Serbiansr689Serbiansr6890Serbiansr6891Serbiansr6892Serbiansr6893Serbiansr6894Serbiansr6895Serbiansr6896Serbiansr6897Serbiansr6898Serbiansr6899Serbiansr69Serbiansr690Serbiansr6900Serbiansr6901Serbiansr6902Serbiansr6903Serbiansr6904Serbiansr6905Serbiansr6906Serbiansr6907Serbiansr6908Serbiansr6909Serbiansr691Serbiansr6910Serbiansr6911Serbiansr6912Serbiansr6913Serbiansr6914Serbiansr6915Serbiansr6916Serbiansr6917Serbiansr6918Serbiansr6919Serbiansr692Serbiansr6920Serbiansr6921Serbiansr6922Serbiansr6923Serbiansr6924Serbiansr6925Serbiansr6926Serbiansr6927Serbiansr6928Serbiansr6929Serbiansr693Serbiansr6930Serbiansr6931Serbiansr6932Serbiansr6933Serbiansr6934Serbiansr6935Serbiansr6936Serbiansr6937Serbiansr6938Serbiansr6939Serbiansr694Serbiansr6940Serbiansr6941Serbiansr6942Serbiansr6943Serbiansr6944Serbiansr6945Serbiansr6946Serbiansr6947Serbiansr6948Serbiansr6949Serbiansr695Serbiansr6950Serbiansr6951Serbiansr6952Serbiansr6953Serbiansr6954Serbiansr6955Serbiansr6956Serbiansr6957Serbiansr6958Serbiansr6959Serbiansr696Serbiansr6960Serbiansr6961Serbiansr6962Serbiansr6963Serbiansr6964Serbiansr6965Serbiansr6966Serbiansr6967Serbiansr6968Serbiansr6969Serbiansr697Serbiansr6970Serbiansr6971Serbiansr6972Serbiansr6973Serbiansr6974Serbiansr6975Serbiansr6976Serbiansr6977Serbiansr6978Serbiansr6979Serbiansr698Serbiansr6980Serbiansr6981Serbiansr6982Serbiansr6983Serbiansr6984Serbiansr6985Serbiansr6986Serbiansr6987Serbiansr6988Serbiansr6989Serbiansr699Serbiansr6990Serbiansr6991Serbiansr6992Serbiansr6993Serbiansr6994Serbiansr6995Serbiansr6996Serbiansr6997Serbiansr6998Serbiansr6999Serbiansr7Serbiansr70Serbiansr700Serbiansr7000Serbiansr7001Serbiansr7002Serbiansr7003Serbiansr7004Serbiansr7005Serbiansr7006Serbiansr7007Serbiansr7008Serbiansr7009Serbiansr701Serbiansr7010Serbiansr7011Serbiansr7012Serbiansr7013Serbiansr7014Serbiansr7015Serbiansr7016Serbiansr7017Serbiansr7018Serbiansr7019Serbiansr702Serbiansr7020Serbiansr7021Serbiansr7022Serbiansr7023Serbiansr7024Serbiansr7025Serbiansr7026Serbiansr7027Serbiansr7028Serbiansr7029Serbiansr703Serbiansr7030Serbiansr7031Serbiansr7032Serbiansr7033Serbiansr7034Serbiansr7035Serbiansr7036Serbiansr7037Serbiansr7038Serbiansr7039Serbiansr704Serbiansr7040Serbiansr7041Serbiansr7042Serbiansr7043Serbiansr7044Serbiansr7045Serbiansr7046Serbiansr7047Serbiansr7048Serbiansr7049Serbiansr705Serbiansr7050Serbiansr7051Serbiansr7052Serbiansr7053Serbiansr7054Serbiansr7055Serbiansr7056Serbiansr7057Serbiansr7058Serbiansr7059Serbiansr706Serbiansr7060Serbiansr7061Serbiansr7062Serbiansr7063Serbiansr7064Serbiansr7065Serbiansr7066Serbiansr7067Serbiansr7068Serbiansr7069Serbiansr707Serbiansr7070Serbiansr7071Serbiansr7072Serbiansr7073Serbiansr7074Serbiansr7075Serbiansr7076Serbiansr7077Serbiansr7078Serbiansr7079Serbiansr708Serbiansr7080Serbiansr7081Serbiansr7082Serbiansr7083Serbiansr7084Serbiansr7085Serbiansr7086Serbiansr7087Serbiansr7088Serbiansr7089Serbiansr709Serbiansr7090Serbiansr7091Serbiansr7092Serbiansr7093Serbiansr7094Serbiansr7095Serbiansr7096Serbiansr7097Serbiansr7098Serbiansr7099Serbiansr71Serbiansr710Serbiansr7100Serbiansr7101Serbiansr7102Serbiansr7103Serbiansr7104Serbiansr7105Serbiansr7106Serbiansr7107Serbiansr7108Serbiansr7109Serbiansr711Serbiansr7110Serbiansr7111Serbiansr7112Serbiansr7113Serbiansr7114Serbiansr7115Serbiansr7116Serbiansr7117Serbiansr7118Serbiansr7119Serbiansr712Serbiansr7120Serbiansr7121Serbiansr7122Serbiansr7123Serbiansr7124Serbiansr7125Serbiansr7126Serbiansr7127Serbiansr7128Serbiansr7129Serbiansr713Serbiansr7130Serbiansr7131Serbiansr7132Serbiansr7133Serbiansr7134Serbiansr7135Serbiansr7136Serbiansr7137Serbiansr7138Serbiansr7139Serbiansr714Serbiansr7140Serbiansr7141Serbiansr7142Serbiansr7143Serbiansr7144Serbiansr7145Serbiansr7146Serbiansr7147Serbiansr7148Serbiansr7149Serbiansr715Serbiansr7150Serbiansr7151Serbiansr7152Serbiansr7153Serbiansr7154Serbiansr7155Serbiansr7156Serbiansr7157Serbiansr7158Serbiansr7159Serbiansr716Serbiansr7160Serbiansr7161Serbiansr7162Serbiansr7163Serbiansr7164Serbiansr7165Serbiansr7166Serbiansr7167Serbiansr7168Serbiansr7169Serbiansr717Serbiansr7170Serbiansr7171Serbiansr7172Serbiansr7173Serbiansr7174Serbiansr7175Serbiansr7176Serbiansr7177Serbiansr7178Serbiansr7179Serbiansr718Serbiansr7180Serbiansr7181Serbiansr7182Serbiansr7183Serbiansr7184Serbiansr7185Serbiansr7186Serbiansr7187Serbiansr7188Serbiansr7189Serbiansr719Serbiansr7190Serbiansr7191Serbiansr7192Serbiansr7193Serbiansr7194Serbiansr7195Serbiansr7196Serbiansr7197Serbiansr7198Serbiansr7199Serbiansr72Serbiansr720Serbiansr7200Serbiansr7201Serbiansr7202Serbiansr7203Serbiansr7204Serbiansr7205Serbiansr7206Serbiansr7207Serbiansr7208Serbiansr7209Serbiansr721Serbiansr7210Serbiansr7211Serbiansr7212Serbiansr7213Serbiansr7214Serbiansr7215Serbiansr7216Serbiansr7217Serbiansr7218Serbiansr7219Serbiansr722Serbiansr7220Serbiansr7221Serbiansr7222Serbiansr7223Serbiansr7224Serbiansr7225Serbiansr7226Serbiansr7227Serbiansr7228Serbiansr7229Serbiansr723Serbiansr7230Serbiansr7231Serbiansr7232Serbiansr7233Serbiansr7234Serbiansr7235Serbiansr7236Serbiansr7237Serbiansr7238Serbiansr7239Serbiansr724Serbiansr7240Serbiansr7241Serbiansr7242Serbiansr7243Serbiansr7244Serbiansr7245Serbiansr7246Serbiansr7247Serbiansr7248Serbiansr7249Serbiansr725Serbiansr7250Serbiansr7251Serbiansr7252Serbiansr7253Serbiansr7254Serbiansr7255Serbiansr7256Serbiansr7257Serbiansr7258Serbiansr7259Serbiansr726Serbiansr7260Serbiansr7261Serbiansr7262Serbiansr7263Serbiansr7264Serbiansr7265Serbiansr7266Serbiansr7267Serbiansr7268Serbiansr7269Serbiansr727Serbiansr7270Serbiansr7271Serbiansr7272Serbiansr7273Serbiansr7274Serbiansr7275Serbiansr7276Serbiansr7277Serbiansr7278Serbiansr7279Serbiansr728Serbiansr7280Serbiansr7281Serbiansr7282Serbiansr7283Serbiansr7284Serbiansr7285Serbiansr7286Serbiansr7287Serbiansr7288Serbiansr7289Serbiansr729Serbiansr7290Serbiansr7291Serbiansr7292Serbiansr7293Serbiansr7294Serbiansr7295Serbiansr7296Serbiansr7297Serbiansr7298Serbiansr7299Serbiansr73Serbiansr730Serbiansr7300Serbiansr7301Serbiansr7302Serbiansr7303Serbiansr7304Serbiansr7305Serbiansr7306Serbiansr7307Serbiansr7308Serbiansr7309Serbiansr731Serbiansr7310Serbiansr7311Serbiansr7312Serbiansr7313Serbiansr7314Serbiansr7315Serbiansr7316Serbiansr7317Serbiansr7318Serbiansr7319Serbiansr732Serbiansr7320Serbiansr7321Serbiansr7322Serbiansr7323Serbiansr7324Serbiansr7325Serbiansr7326Serbiansr7327Serbiansr7328Serbiansr7329Serbiansr733Serbiansr7330Serbiansr7331Serbiansr7332Serbiansr7333Serbiansr7334Serbiansr7335Serbiansr7336Serbiansr7337Serbiansr7338Serbiansr7339Serbiansr734Serbiansr7340Serbiansr7341Serbiansr7342Serbiansr7343Serbiansr7344Serbiansr7345Serbiansr7346Serbiansr7347Serbiansr7348Serbiansr7349Serbiansr735Serbiansr7350Serbiansr7351Serbiansr7352Serbiansr7353Serbiansr7354Serbiansr7355Serbiansr7356Serbiansr7357Serbiansr7358Serbiansr7359Serbiansr736Serbiansr7360Serbiansr7361Serbiansr7362Serbiansr7363Serbiansr7364Serbiansr7365Serbiansr7366Serbiansr7367Serbiansr7368Serbiansr7369Serbiansr737Serbiansr7370Serbiansr7371Serbiansr7372Serbiansr7373Serbiansr7374Serbiansr7375Serbiansr7376Serbiansr7377Serbiansr7378Serbiansr7379Serbiansr738Serbiansr7380Serbiansr7381Serbiansr7382Serbiansr7383Serbiansr7384Serbiansr7385Serbiansr7386Serbiansr7387Serbiansr7388Serbiansr7389Serbiansr739Serbiansr7390Serbiansr7391Serbiansr7392Serbiansr7393Serbiansr7394Serbiansr7395Serbiansr7396Serbiansr7397Serbiansr7398Serbiansr7399Serbiansr74Serbiansr740Serbiansr7400Serbiansr7401Serbiansr7402Serbiansr7403Serbiansr7404Serbiansr7405Serbiansr7406Serbiansr7407Serbiansr7408Serbiansr7409Serbiansr741Serbiansr7410Serbiansr7411Serbiansr7412Serbiansr7413Serbiansr7414Serbiansr7415Serbiansr7416Serbiansr7417Serbiansr7418Serbiansr7419Serbiansr742Serbiansr7420Serbiansr7421Serbiansr7422Serbiansr7423Serbiansr7424Serbiansr7425Serbiansr7426Serbiansr7427Serbiansr7428Serbiansr7429Serbiansr743Serbiansr7430Serbiansr7431Serbiansr7432Serbiansr7433Serbiansr7434Serbiansr7435Serbiansr7436Serbiansr7437Serbiansr7438Serbiansr7439Serbiansr744Serbiansr7440Serbiansr7441Serbiansr7442Serbiansr7443Serbiansr7444Serbiansr7445Serbiansr7446Serbiansr7447Serbiansr7448Serbiansr7449Serbiansr745Serbiansr7450Serbiansr7451Serbiansr7452Serbiansr7453Serbiansr7454Serbiansr7455Serbiansr7456Serbiansr7457Serbiansr7458Serbiansr7459Serbiansr746Serbiansr7460Serbiansr7461Serbiansr7462Serbiansr7463Serbiansr7464Serbiansr7465Serbiansr7466Serbiansr7467Serbiansr7468Serbiansr7469Serbiansr747Serbiansr7470Serbiansr7471Serbiansr7472Serbiansr7473Serbiansr7474Serbiansr7475Serbiansr7476Serbiansr7477Serbiansr7478Serbiansr7479Serbiansr748Serbiansr7480Serbiansr7481Serbiansr7482Serbiansr7483Serbiansr7484Serbiansr7485Serbiansr7486Serbiansr7487Serbiansr7488Serbiansr7489Serbiansr749Serbiansr7490Serbiansr7491Serbiansr7492Serbiansr7493Serbiansr7494Serbiansr7495Serbiansr7496Serbiansr7497Serbiansr7498Serbiansr7499Serbiansr75Serbiansr750Serbiansr7500Serbiansr7501Serbiansr7502Serbiansr7503Serbiansr7504Serbiansr7505Serbiansr7506Serbiansr7507Serbiansr7508Serbiansr7509Serbiansr751Serbiansr7510Serbiansr7511Serbiansr7512Serbiansr7513Serbiansr7514Serbiansr7515Serbiansr7516Serbiansr7517Serbiansr7518Serbiansr7519Serbiansr752Serbiansr7520Serbiansr7521Serbiansr7522Serbiansr7523Serbiansr7524Serbiansr7525Serbiansr7526Serbiansr7527Serbiansr7528Serbiansr7529Serbiansr753Serbiansr7530Serbiansr7531Serbiansr7532Serbiansr7533Serbiansr7534Serbiansr7535Serbiansr7536Serbiansr7537Serbiansr7538Serbiansr7539Serbiansr754Serbiansr7540Serbiansr7541Serbiansr7542Serbiansr7543Serbiansr7544Serbiansr7545Serbiansr7546Serbiansr7547Serbiansr7548Serbiansr7549Serbiansr755Serbiansr7550Serbiansr7551Serbiansr7552Serbiansr7553Serbiansr7554Serbiansr7555Serbiansr7556Serbiansr7557Serbiansr7558Serbiansr7559Serbiansr756Serbiansr7560Serbiansr7561Serbiansr7562Serbiansr7563Serbiansr7564Serbiansr7565Serbiansr7566Serbiansr7567Serbiansr7568Serbiansr7569Serbiansr757Serbiansr7570Serbiansr7571Serbiansr7572Serbiansr7573Serbiansr7574Serbiansr7575Serbiansr7576Serbiansr7577Serbiansr7578Serbiansr7579Serbiansr758Serbiansr7580Serbiansr7581Serbiansr7582Serbiansr7583Serbiansr7584Serbiansr7585Serbiansr7586Serbiansr7587Serbiansr7588Serbiansr7589Serbiansr759Serbiansr7590Serbiansr7591Serbiansr7592Serbiansr7593Serbiansr7594Serbiansr7595Serbiansr7596Serbiansr7597Serbiansr7598Serbiansr7599Serbiansr76Serbiansr760Serbiansr7600Serbiansr7601Serbiansr7602Serbiansr7603Serbiansr7604Serbiansr7605Serbiansr7606Serbiansr7607Serbiansr7608Serbiansr7609Serbiansr761Serbiansr7610Serbiansr7611Serbiansr7612Serbiansr7613Serbiansr7614Serbiansr7615Serbiansr7616Serbiansr7617Serbiansr7618Serbiansr7619Serbiansr762Serbiansr7620Serbiansr7621Serbiansr7622Serbiansr7623Serbiansr7624Serbiansr7625Serbiansr7626Serbiansr7627Serbiansr7628Serbiansr7629Serbiansr763Serbiansr7630Serbiansr7631Serbiansr7632Serbiansr7633Serbiansr7634Serbiansr7635Serbiansr7636Serbiansr7637Serbiansr7638Serbiansr7639Serbiansr764Serbiansr7640Serbiansr7641Serbiansr7642Serbiansr7643Serbiansr7644Serbiansr7645Serbiansr7646Serbiansr7647Serbiansr7648Serbiansr7649Serbiansr765Serbiansr7650Serbiansr7651Serbiansr7652Serbiansr7653Serbiansr7654Serbiansr7655Serbiansr7656Serbiansr7657Serbiansr7658Serbiansr7659Serbiansr766Serbiansr7660Serbiansr7661Serbiansr7662Serbiansr7663Serbiansr7664Serbiansr7665Serbiansr7666Serbiansr7667Serbiansr7668Serbiansr7669Serbiansr767Serbiansr7670Serbiansr7671Serbiansr7672Serbiansr7673Serbiansr7674Serbiansr7675Serbiansr7676Serbiansr7677Serbiansr7678Serbiansr7679Serbiansr768Serbiansr7680Serbiansr7681Serbiansr7682Serbiansr7683Serbiansr7684Serbiansr7685Serbiansr7686Serbiansr7687Serbiansr7688Serbiansr7689Serbiansr769Serbiansr7690Serbiansr7691Serbiansr7692Serbiansr7693Serbiansr7694Serbiansr7695Serbiansr7696Serbiansr7697Serbiansr7698Serbiansr7699Serbiansr77Serbiansr770Serbiansr7700Serbiansr7701Serbiansr7702Serbiansr7703Serbiansr7704Serbiansr7705Serbiansr7706Serbiansr7707Serbiansr7708Serbiansr7709Serbiansr771Serbiansr7710Serbiansr7711Serbiansr7712Serbiansr7713Serbiansr7714Serbiansr7715Serbiansr7716Serbiansr7717Serbiansr7718Serbiansr7719Serbiansr772Serbiansr7720Serbiansr7721Serbiansr7722Serbiansr7723Serbiansr7724Serbiansr7725Serbiansr7726Serbiansr7727Serbiansr7728Serbiansr7729Serbiansr773Serbiansr7730Serbiansr7731Serbiansr7732Serbiansr7733Serbiansr7734Serbiansr7735Serbiansr7736Serbiansr7737Serbiansr7738Serbiansr7739Serbiansr774Serbiansr7740Serbiansr7741Serbiansr7742Serbiansr7743Serbiansr7744Serbiansr7745Serbiansr7746Serbiansr7747Serbiansr7748Serbiansr7749Serbiansr775Serbiansr7750Serbiansr7751Serbiansr7752Serbiansr7753Serbiansr7754Serbiansr7755Serbiansr7756Serbiansr7757Serbiansr7758Serbiansr7759Serbiansr776Serbiansr7760Serbiansr7761Serbiansr7762Serbiansr7763Serbiansr7764Serbiansr7765Serbiansr7766Serbiansr7767Serbiansr7768Serbiansr7769Serbiansr777Serbiansr7770Serbiansr7771Serbiansr7772Serbiansr7773Serbiansr7774Serbiansr7775Serbiansr7776Serbiansr7777Serbiansr7778Serbiansr7779Serbiansr778Serbiansr7780Serbiansr7781Serbiansr7782Serbiansr7783Serbiansr7784Serbiansr7785Serbiansr7786Serbiansr7787Serbiansr7788Serbiansr7789Serbiansr779Serbiansr7790Serbiansr7791Serbiansr7792Serbiansr7793Serbiansr7794Serbiansr7795Serbiansr7796Serbiansr7797Serbiansr7798Serbiansr7799Serbiansr78Serbiansr780Serbiansr7800Serbiansr7801Serbiansr7802Serbiansr7803Serbiansr7804Serbiansr7805Serbiansr7806Serbiansr7807Serbiansr7808Serbiansr7809Serbiansr781Serbiansr7810Serbiansr7811Serbiansr7812Serbiansr7813Serbiansr7814Serbiansr7815Serbiansr7816Serbiansr7817Serbiansr7818Serbiansr7819Serbiansr782Serbiansr7820Serbiansr7821Serbiansr7822Serbiansr7823Serbiansr7824Serbiansr7825Serbiansr7826Serbiansr7827Serbiansr7828Serbiansr7829Serbiansr783Serbiansr7830Serbiansr7831Serbiansr7832Serbiansr7833Serbiansr7834Serbiansr7835Serbiansr7836Serbiansr7837Serbiansr7838Serbiansr7839Serbiansr784Serbiansr7840Serbiansr7841Serbiansr7842Serbiansr7843Serbiansr7844Serbiansr7845Serbiansr7846Serbiansr7847Serbiansr7848Serbiansr7849Serbiansr785Serbiansr7850Serbiansr7851Serbiansr7852Serbiansr7853Serbiansr7854Serbiansr7855Serbiansr7856Serbiansr7857Serbiansr7858Serbiansr7859Serbiansr786Serbiansr7860Serbiansr7861Serbiansr7862Serbiansr7863Serbiansr7864Serbiansr7865Serbiansr7866Serbiansr7867Serbiansr7868Serbiansr7869Serbiansr787Serbiansr7870Serbiansr7871Serbiansr7872Serbiansr7873Serbiansr7874Serbiansr7875Serbiansr7876Serbiansr7877Serbiansr7878Serbiansr7879Serbiansr788Serbiansr7880Serbiansr7881Serbiansr7882Serbiansr7883Serbiansr7884Serbiansr7885Serbiansr7886Serbiansr7887Serbiansr7888Serbiansr7889Serbiansr789Serbiansr7890Serbiansr7891Serbiansr7892Serbiansr7893Serbiansr7894Serbiansr7895Serbiansr7896Serbiansr7897Serbiansr7898Serbiansr7899Serbiansr79Serbiansr790Serbiansr7900Serbiansr7901Serbiansr7902Serbiansr7903Serbiansr7904Serbiansr7905Serbiansr7906Serbiansr7907Serbiansr7908Serbiansr7909Serbiansr791Serbiansr7910Serbiansr7911Serbiansr7912Serbiansr7913Serbiansr7914Serbiansr7915Serbiansr7916Serbiansr7917Serbiansr7918Serbiansr7919Serbiansr792Serbiansr7920Serbiansr7921Serbiansr7922Serbiansr7923Serbiansr7924Serbiansr7925Serbiansr7926Serbiansr7927Serbiansr7928Serbiansr7929Serbiansr793Serbiansr7930Serbiansr7931Serbiansr7932Serbiansr7933Serbiansr7934Serbiansr7935Serbiansr7936Serbiansr7937Serbiansr7938Serbiansr7939Serbiansr794Serbiansr7940Serbiansr7941Serbiansr7942Serbiansr7943Serbiansr7944Serbiansr7945Serbiansr7946Serbiansr7947Serbiansr7948Serbiansr7949Serbiansr795Serbiansr7950Serbiansr7951Serbiansr7952Serbiansr7953Serbiansr7954Serbiansr7955Serbiansr7956Serbiansr7957Serbiansr7958Serbiansr7959Serbiansr796Serbiansr7960Serbiansr7961Serbiansr7962Serbiansr7963Serbiansr7964Serbiansr7965Serbiansr7966Serbiansr7967Serbiansr7968Serbiansr7969Serbiansr797Serbiansr7970Serbiansr7971Serbiansr7972Serbiansr7973Serbiansr7974Serbiansr7975Serbiansr7976Serbiansr7977Serbiansr7978Serbiansr7979Serbiansr798Serbiansr7980Serbiansr7981Serbiansr7982Serbiansr7983Serbiansr7984Serbiansr7985Serbiansr7986Serbiansr7987Serbiansr7988Serbiansr7989Serbiansr799Serbiansr7990Serbiansr7991Serbiansr7992Serbiansr7993Serbiansr7994Serbiansr7995Serbiansr7996Serbiansr7997Serbiansr7998Serbiansr7999Serbiansr8Serbiansr80Serbiansr800Serbiansr8000Serbiansr8001Serbiansr8002Serbiansr8003Serbiansr8004Serbiansr8005Serbiansr8006Serbiansr8007Serbiansr8008Serbiansr8009Serbiansr801Serbiansr8010Serbiansr8011Serbiansr8012Serbiansr8013Serbiansr8014Serbiansr8015Serbiansr8016Serbiansr8017Serbiansr8018Serbiansr8019Serbiansr802Serbiansr8020Serbiansr8021Serbiansr8022Serbiansr8023Serbiansr8024Serbiansr8025Serbiansr8026Serbiansr8027Serbiansr8028Serbiansr8029Serbiansr803Serbiansr8030Serbiansr8031Serbiansr8032Serbiansr8033Serbiansr8034Serbiansr8035Serbiansr8036Serbiansr8037Serbiansr8038Serbiansr8039Serbiansr804Serbiansr8040Serbiansr8041Serbiansr8042Serbiansr8043Serbiansr8044Serbiansr8045Serbiansr8046Serbiansr8047Serbiansr8048Serbiansr8049Serbiansr805Serbiansr8050Serbiansr8051Serbiansr8052Serbiansr8053Serbiansr8054Serbiansr8055Serbiansr8056Serbiansr8057Serbiansr8058Serbiansr8059Serbiansr806Serbiansr8060Serbiansr8061Serbiansr8062Serbiansr8063Serbiansr8064Serbiansr8065Serbiansr8066Serbiansr8067Serbiansr8068Serbiansr8069Serbiansr807Serbiansr8070Serbiansr8071Serbiansr8072Serbiansr8073Serbiansr8074Serbiansr8075Serbiansr8076Serbiansr8077Serbiansr8078Serbiansr8079Serbiansr808Serbiansr8080Serbiansr8081Serbiansr8082Serbiansr8083Serbiansr8084Serbiansr8085Serbiansr8086Serbiansr8087Serbiansr8088Serbiansr8089Serbiansr809Serbiansr8090Serbiansr8091Serbiansr8092Serbiansr8093Serbiansr8094Serbiansr8095Serbiansr8096Serbiansr8097Serbiansr8098Serbiansr8099Serbiansr81Serbiansr810Serbiansr8100Serbiansr8101Serbiansr8102Serbiansr8103Serbiansr8104Serbiansr8105Serbiansr8106Serbiansr8107Serbiansr8108Serbiansr8109Serbiansr811Serbiansr8110Serbiansr8111Serbiansr8112Serbiansr8113Serbiansr8114Serbiansr8115Serbiansr8116Serbiansr8117Serbiansr8118Serbiansr8119Serbiansr812Serbiansr8120Serbiansr8121Serbiansr8122Serbiansr8123Serbiansr8124Serbiansr8125Serbiansr8126Serbiansr8127Serbiansr8128Serbiansr8129Serbiansr813Serbiansr8130Serbiansr8131Serbiansr8132Serbiansr8133Serbiansr8134Serbiansr8135Serbiansr8136Serbiansr8137Serbiansr8138Serbiansr8139Serbiansr814Serbiansr8140Serbiansr8141Serbiansr8142Serbiansr8143Serbiansr8144Serbiansr8145Serbiansr8146Serbiansr8147Serbiansr8148Serbiansr8149Serbiansr815Serbiansr8150Serbiansr8151Serbiansr8152Serbiansr8153Serbiansr8154Serbiansr8155Serbiansr8156Serbiansr8157Serbiansr8158Serbiansr8159Serbiansr816Serbiansr8160Serbiansr8161Serbiansr8162Serbiansr8163Serbiansr8164Serbiansr8165Serbiansr8166Serbiansr8167Serbiansr8168Serbiansr8169Serbiansr817Serbiansr8170Serbiansr8171Serbiansr8172Serbiansr8173Serbiansr8174Serbiansr8175Serbiansr8176Serbiansr8177Serbiansr8178Serbiansr8179Serbiansr818Serbiansr8180Serbiansr8181Serbiansr8182Serbiansr8183Serbiansr8184Serbiansr8185Serbiansr8186Serbiansr8187Serbiansr8188Serbiansr8189Serbiansr819Serbiansr8190Serbiansr8191Serbiansr82Serbiansr820Serbiansr821Serbiansr822Serbiansr823Serbiansr824Serbiansr825Serbiansr826Serbiansr827Serbiansr828Serbiansr829Serbiansr83Serbiansr830Serbiansr831Serbiansr832Serbiansr833Serbiansr834Serbiansr835Serbiansr836Serbiansr837Serbiansr838Serbiansr839Serbiansr84Serbiansr840Serbiansr841Serbiansr842Serbiansr843Serbiansr844Serbiansr845Serbiansr846Serbiansr847Serbiansr848Serbiansr849Serbiansr85Serbiansr850Serbiansr851Serbiansr852Serbiansr853Serbiansr854Serbiansr855Serbiansr856Serbiansr857Serbiansr858Serbiansr859Serbiansr86Serbiansr860Serbiansr861Serbiansr862Serbiansr863Serbiansr864Serbiansr865Serbiansr866Serbiansr867Serbiansr868Serbiansr869Serbiansr87Serbiansr870Serbiansr871Serbiansr872Serbiansr873Serbiansr874Serbiansr875Serbiansr876Serbiansr877Serbiansr878Serbiansr879Serbiansr88Serbiansr880Serbiansr881Serbiansr882Serbiansr883Serbiansr884Serbiansr885Serbiansr886Serbiansr887Serbiansr888Serbiansr889Serbiansr89Serbiansr890Serbiansr891Serbiansr892Serbiansr893Serbiansr894Serbiansr895Serbiansr896Serbiansr897Serbiansr898Serbiansr899Serbiansr9Serbiansr90Serbiansr900Serbiansr901Serbiansr902Serbiansr903Serbiansr904Serbiansr905Serbiansr906Serbiansr907Serbiansr908Serbiansr909Serbiansr91Serbiansr910Serbiansr911Serbiansr912Serbiansr913Serbiansr914Serbiansr915Serbiansr916Serbiansr917Serbiansr918Serbiansr919Serbiansr92Serbiansr920Serbiansr921Serbiansr922Serbiansr923Serbiansr924Serbiansr925Serbiansr926Serbiansr927Serbiansr928Serbiansr929Serbiansr93Serbiansr930Serbiansr931Serbiansr932Serbiansr933Serbiansr934Serbiansr935Serbiansr936Serbiansr937Serbiansr938Serbiansr939Serbiansr94Serbiansr940Serbiansr941Serbiansr942Serbiansr943Serbiansr944Serbiansr945Serbiansr946Serbiansr947Serbiansr948Serbiansr949Serbiansr95Serbiansr950Serbiansr951Serbiansr952Serbiansr953Serbiansr954Serbiansr955Serbiansr956Serbiansr957Serbiansr958Serbiansr959Serbiansr96Serbiansr960Serbiansr961Serbiansr962Serbiansr963Serbiansr964Serbiansr965Serbiansr966Serbiansr967Serbiansr968Serbiansr969Serbiansr97Serbiansr970Serbiansr971Serbiansr972Serbiansr973Serbiansr974Serbiansr975Serbiansr976Serbiansr977Serbiansr978Serbiansr979Serbiansr98Serbiansr980Serbiansr981Serbiansr982Serbiansr983Serbiansr984Serbiansr985Serbiansr986Serbiansr987Serbiansr988Serbiansr989Serbiansr99Serbiansr990Serbiansr991Serbiansr992Serbiansr993Serbiansr994Serbiansr995Serbiansr996Serbiansr997Serbiansr998Serbiansr999Serbianth0Thaith1Thaith10Thaith100Thaith1000Thaith1001Thaith1002Thaith1003Thaith1004Thaith1005Thaith1006Thaith1007Thaith1008Thaith1009Thaith101Thaith1010Thaith1011Thaith1012Thaith1013Thaith1014Thaith1015Thaith1016Thaith1017Thaith1018Thaith1019Thaith102Thaith1020Thaith1021Thaith1022Thaith1023Thaith1024Thaith1025Thaith1026Thaith1027Thaith1028Thaith1029Thaith103Thaith1030Thaith1031Thaith1032Thaith1033Thaith1034Thaith1035Thaith1036Thaith1037Thaith1038Thaith1039Thaith104Thaith1040Thaith1041Thaith1042Thaith1043Thaith1044Thaith1045Thaith1046Thaith1047Thaith1048Thaith1049Thaith105Thaith1050Thaith1051Thaith1052Thaith1053Thaith1054Thaith1055Thaith1056Thaith1057Thaith1058Thaith1059Thaith106Thaith1060Thaith1061Thaith1062Thaith1063Thaith1064Thaith1065Thaith1066Thaith1067Thaith1068Thaith1069Thaith107Thaith1070Thaith1071Thaith1072Thaith1073Thaith1074Thaith1075Thaith1076Thaith1077Thaith1078Thaith1079Thaith108Thaith1080Thaith1081Thaith1082Thaith1083Thaith1084Thaith1085Thaith1086Thaith1087Thaith1088Thaith1089Thaith109Thaith1090Thaith1091Thaith1092Thaith1093Thaith1094Thaith1095Thaith1096Thaith1097Thaith1098Thaith1099Thaith11Thaith110Thaith1100Thaith1101Thaith1102Thaith1103Thaith1104Thaith1105Thaith1106Thaith1107Thaith1108Thaith1109Thaith111Thaith1110Thaith1111Thaith1112Thaith1113Thaith1114Thaith1115Thaith1116Thaith1117Thaith1118Thaith1119Thaith112Thaith1120Thaith1121Thaith1122Thaith1123Thaith1124Thaith1125Thaith1126Thaith1127Thaith1128Thaith1129Thaith113Thaith1130Thaith1131Thaith1132Thaith1133Thaith1134Thaith1135Thaith1136Thaith1137Thaith1138Thaith1139Thaith114Thaith1140Thaith1141Thaith1142Thaith1143Thaith1144Thaith1145Thaith1146Thaith1147Thaith1148Thaith1149Thaith115Thaith1150Thaith1151Thaith1152Thaith1153Thaith1154Thaith1155Thaith1156Thaith1157Thaith1158Thaith1159Thaith116Thaith1160Thaith1161Thaith1162Thaith1163Thaith1164Thaith1165Thaith1166Thaith1167Thaith1168Thaith1169Thaith117Thaith1170Thaith1171Thaith1172Thaith1173Thaith1174Thaith1175Thaith1176Thaith1177Thaith1178Thaith1179Thaith118Thaith1180Thaith1181Thaith1182Thaith1183Thaith1184Thaith1185Thaith1186Thaith1187Thaith1188Thaith1189Thaith119Thaith1190Thaith1191Thaith1192Thaith1193Thaith1194Thaith1195Thaith1196Thaith1197Thaith1198Thaith1199Thaith12Thaith120Thaith1200Thaith1201Thaith1202Thaith1203Thaith1204Thaith1205Thaith1206Thaith1207Thaith1208Thaith1209Thaith121Thaith1210Thaith1211Thaith1212Thaith1213Thaith1214Thaith1215Thaith1216Thaith1217Thaith1218Thaith1219Thaith122Thaith1220Thaith1221Thaith1222Thaith1223Thaith1224Thaith1225Thaith1226Thaith1227Thaith1228Thaith1229Thaith123Thaith1230Thaith1231Thaith1232Thaith1233Thaith1234Thaith1235Thaith1236Thaith1237Thaith1238Thaith1239Thaith124Thaith1240Thaith1241Thaith1242Thaith1243Thaith1244Thaith1245Thaith1246Thaith1247Thaith1248Thaith1249Thaith125Thaith1250Thaith1251Thaith1252Thaith1253Thaith1254Thaith1255Thaith1256Thaith1257Thaith1258Thaith1259Thaith126Thaith1260Thaith1261Thaith1262Thaith1263Thaith1264Thaith1265Thaith1266Thaith1267Thaith1268Thaith1269Thaith127Thaith1270Thaith1271Thaith1272Thaith1273Thaith1274Thaith1275Thaith1276Thaith1277Thaith1278Thaith1279Thaith128Thaith1280Thaith1281Thaith1282Thaith1283Thaith1284Thaith1285Thaith1286Thaith1287Thaith1288Thaith1289Thaith129Thaith1290Thaith1291Thaith1292Thaith1293Thaith1294Thaith1295Thaith1296Thaith1297Thaith1298Thaith1299Thaith13Thaith130Thaith1300Thaith1301Thaith1302Thaith1303Thaith1304Thaith1305Thaith1306Thaith1307Thaith1308Thaith1309Thaith131Thaith1310Thaith1311Thaith1312Thaith1313Thaith1314Thaith1315Thaith1316Thaith1317Thaith1318Thaith1319Thaith132Thaith1320Thaith1321Thaith1322Thaith1323Thaith1324Thaith1325Thaith1326Thaith1327Thaith1328Thaith1329Thaith133Thaith1330Thaith1331Thaith1332Thaith1333Thaith1334Thaith1335Thaith1336Thaith1337Thaith1338Thaith1339Thaith134Thaith1340Thaith1341Thaith1342Thaith1343Thaith1344Thaith1345Thaith1346Thaith1347Thaith1348Thaith1349Thaith135Thaith1350Thaith1351Thaith1352Thaith1353Thaith1354Thaith1355Thaith1356Thaith1357Thaith1358Thaith1359Thaith136Thaith1360Thaith1361Thaith1362Thaith1363Thaith1364Thaith1365Thaith1366Thaith1367Thaith1368Thaith1369Thaith137Thaith1370Thaith1371Thaith1372Thaith1373Thaith1374Thaith1375Thaith1376Thaith1377Thaith1378Thaith1379Thaith138Thaith1380Thaith1381Thaith1382Thaith1383Thaith1384Thaith1385Thaith1386Thaith1387Thaith1388Thaith1389Thaith139Thaith1390Thaith1391Thaith1392Thaith1393Thaith1394Thaith1395Thaith1396Thaith1397Thaith1398Thaith1399Thaith14Thaith140Thaith1400Thaith1401Thaith1402Thaith1403Thaith1404Thaith1405Thaith1406Thaith1407Thaith1408Thaith1409Thaith141Thaith1410Thaith1411Thaith1412Thaith1413Thaith1414Thaith1415Thaith1416Thaith1417Thaith1418Thaith1419Thaith142Thaith1420Thaith1421Thaith1422Thaith1423Thaith1424Thaith1425Thaith1426Thaith1427Thaith1428Thaith1429Thaith143Thaith1430Thaith1431Thaith1432Thaith1433Thaith1434Thaith1435Thaith1436Thaith1437Thaith1438Thaith1439Thaith144Thaith1440Thaith1441Thaith1442Thaith1443Thaith1444Thaith1445Thaith1446Thaith1447Thaith1448Thaith1449Thaith145Thaith1450Thaith1451Thaith1452Thaith1453Thaith1454Thaith1455Thaith1456Thaith1457Thaith1458Thaith1459Thaith146Thaith1460Thaith1461Thaith1462Thaith1463Thaith1464Thaith1465Thaith1466Thaith1467Thaith1468Thaith1469Thaith147Thaith1470Thaith1471Thaith1472Thaith1473Thaith1474Thaith1475Thaith1476Thaith1477Thaith1478Thaith1479Thaith148Thaith1480Thaith1481Thaith1482Thaith1483Thaith1484Thaith1485Thaith1486Thaith1487Thaith1488Thaith1489Thaith149Thaith1490Thaith1491Thaith1492Thaith1493Thaith1494Thaith1495Thaith1496Thaith1497Thaith1498Thaith1499Thaith15Thaith150Thaith1500Thaith1501Thaith1502Thaith1503Thaith1504Thaith1505Thaith1506Thaith1507Thaith1508Thaith1509Thaith151Thaith1510Thaith1511Thaith1512Thaith1513Thaith1514Thaith1515Thaith1516Thaith1517Thaith1518Thaith1519Thaith152Thaith1520Thaith1521Thaith1522Thaith1523Thaith1524Thaith1525Thaith1526Thaith1527Thaith1528Thaith1529Thaith153Thaith1530Thaith1531Thaith1532Thaith1533Thaith1534Thaith1535Thaith1536Thaith1537Thaith1538Thaith1539Thaith154Thaith1540Thaith1541Thaith1542Thaith1543Thaith1544Thaith1545Thaith1546Thaith1547Thaith1548Thaith1549Thaith155Thaith1550Thaith1551Thaith1552Thaith1553Thaith1554Thaith1555Thaith1556Thaith1557Thaith1558Thaith1559Thaith156Thaith1560Thaith1561Thaith1562Thaith1563Thaith1564Thaith1565Thaith1566Thaith1567Thaith1568Thaith1569Thaith157Thaith1570Thaith1571Thaith1572Thaith1573Thaith1574Thaith1575Thaith1576Thaith1577Thaith1578Thaith1579Thaith158Thaith1580Thaith1581Thaith1582Thaith1583Thaith1584Thaith1585Thaith1586Thaith1587Thaith1588Thaith1589Thaith159Thaith1590Thaith1591Thaith1592Thaith1593Thaith1594Thaith1595Thaith1596Thaith1597Thaith1598Thaith1599Thaith16Thaith160Thaith1600Thaith1601Thaith1602Thaith1603Thaith1604Thaith1605Thaith1606Thaith1607Thaith1608Thaith1609Thaith161Thaith1610Thaith1611Thaith1612Thaith1613Thaith1614Thaith1615Thaith1616Thaith1617Thaith1618Thaith1619Thaith162Thaith1620Thaith1621Thaith1622Thaith1623Thaith1624Thaith1625Thaith1626Thaith1627Thaith1628Thaith1629Thaith163Thaith1630Thaith1631Thaith1632Thaith1633Thaith1634Thaith1635Thaith1636Thaith1637Thaith1638Thaith1639Thaith164Thaith1640Thaith1641Thaith1642Thaith1643Thaith1644Thaith1645Thaith1646Thaith1647Thaith1648Thaith1649Thaith165Thaith1650Thaith1651Thaith1652Thaith1653Thaith1654Thaith1655Thaith1656Thaith1657Thaith1658Thaith1659Thaith166Thaith1660Thaith1661Thaith1662Thaith1663Thaith1664Thaith1665Thaith1666Thaith1667Thaith1668Thaith1669Thaith167Thaith1670Thaith1671Thaith1672Thaith1673Thaith1674Thaith1675Thaith1676Thaith1677Thaith1678Thaith1679Thaith168Thaith1680Thaith1681Thaith1682Thaith1683Thaith1684Thaith1685Thaith1686Thaith1687Thaith1688Thaith1689Thaith169Thaith1690Thaith1691Thaith1692Thaith1693Thaith1694Thaith1695Thaith1696Thaith1697Thaith1698Thaith1699Thaith17Thaith170Thaith1700Thaith1701Thaith1702Thaith1703Thaith1704Thaith1705Thaith1706Thaith1707Thaith1708Thaith1709Thaith171Thaith1710Thaith1711Thaith1712Thaith1713Thaith1714Thaith1715Thaith1716Thaith1717Thaith1718Thaith1719Thaith172Thaith1720Thaith1721Thaith1722Thaith1723Thaith1724Thaith1725Thaith1726Thaith1727Thaith1728Thaith1729Thaith173Thaith1730Thaith1731Thaith1732Thaith1733Thaith1734Thaith1735Thaith1736Thaith1737Thaith1738Thaith1739Thaith174Thaith1740Thaith1741Thaith1742Thaith1743Thaith1744Thaith1745Thaith1746Thaith1747Thaith1748Thaith1749Thaith175Thaith1750Thaith1751Thaith1752Thaith1753Thaith1754Thaith1755Thaith1756Thaith1757Thaith1758Thaith1759Thaith176Thaith1760Thaith1761Thaith1762Thaith1763Thaith1764Thaith1765Thaith1766Thaith1767Thaith1768Thaith1769Thaith177Thaith1770Thaith1771Thaith1772Thaith1773Thaith1774Thaith1775Thaith1776Thaith1777Thaith1778Thaith1779Thaith178Thaith1780Thaith1781Thaith1782Thaith1783Thaith1784Thaith1785Thaith1786Thaith1787Thaith1788Thaith1789Thaith179Thaith1790Thaith1791Thaith1792Thaith1793Thaith1794Thaith1795Thaith1796Thaith1797Thaith1798Thaith1799Thaith18Thaith180Thaith1800Thaith1801Thaith1802Thaith1803Thaith1804Thaith1805Thaith1806Thaith1807Thaith1808Thaith1809Thaith181Thaith1810Thaith1811Thaith1812Thaith1813Thaith1814Thaith1815Thaith1816Thaith1817Thaith1818Thaith1819Thaith182Thaith1820Thaith1821Thaith1822Thaith1823Thaith1824Thaith1825Thaith1826Thaith1827Thaith1828Thaith1829Thaith183Thaith1830Thaith1831Thaith1832Thaith1833Thaith1834Thaith1835Thaith1836Thaith1837Thaith1838Thaith1839Thaith184Thaith1840Thaith1841Thaith1842Thaith1843Thaith1844Thaith1845Thaith1846Thaith1847Thaith1848Thaith1849Thaith185Thaith1850Thaith1851Thaith1852Thaith1853Thaith1854Thaith1855Thaith1856Thaith1857Thaith1858Thaith1859Thaith186Thaith1860Thaith1861Thaith1862Thaith1863Thaith1864Thaith1865Thaith1866Thaith1867Thaith1868Thaith1869Thaith187Thaith1870Thaith1871Thaith1872Thaith1873Thaith1874Thaith1875Thaith1876Thaith1877Thaith1878Thaith1879Thaith188Thaith1880Thaith1881Thaith1882Thaith1883Thaith1884Thaith1885Thaith1886Thaith1887Thaith1888Thaith1889Thaith189Thaith1890Thaith1891Thaith1892Thaith1893Thaith1894Thaith1895Thaith1896Thaith1897Thaith1898Thaith1899Thaith19Thaith190Thaith1900Thaith1901Thaith1902Thaith1903Thaith1904Thaith1905Thaith1906Thaith1907Thaith1908Thaith1909Thaith191Thaith1910Thaith1911Thaith1912Thaith1913Thaith1914Thaith1915Thaith1916Thaith1917Thaith1918Thaith1919Thaith192Thaith1920Thaith1921Thaith1922Thaith1923Thaith1924Thaith1925Thaith1926Thaith1927Thaith1928Thaith1929Thaith193Thaith1930Thaith1931Thaith1932Thaith1933Thaith1934Thaith1935Thaith1936Thaith1937Thaith1938Thaith1939Thaith194Thaith1940Thaith1941Thaith1942Thaith1943Thaith1944Thaith1945Thaith1946Thaith1947Thaith1948Thaith1949Thaith195Thaith1950Thaith1951Thaith1952Thaith1953Thaith1954Thaith1955Thaith1956Thaith1957Thaith1958Thaith1959Thaith196Thaith1960Thaith1961Thaith1962Thaith1963Thaith1964Thaith1965Thaith1966Thaith1967Thaith1968Thaith1969Thaith197Thaith1970Thaith1971Thaith1972Thaith1973Thaith1974Thaith1975Thaith1976Thaith1977Thaith1978Thaith1979Thaith198Thaith1980Thaith1981Thaith1982Thaith1983Thaith1984Thaith1985Thaith1986Thaith1987Thaith1988Thaith1989Thaith199Thaith1990Thaith1991Thaith1992Thaith1993Thaith1994Thaith1995Thaith1996Thaith1997Thaith1998Thaith1999Thaith2Thaith20Thaith200Thaith2000Thaith2001Thaith2002Thaith2003Thaith2004Thaith2005Thaith2006Thaith2007Thaith2008Thaith2009Thaith201Thaith2010Thaith2011Thaith2012Thaith2013Thaith2014Thaith2015Thaith2016Thaith2017Thaith2018Thaith2019Thaith202Thaith2020Thaith2021Thaith2022Thaith2023Thaith2024Thaith2025Thaith2026Thaith2027Thaith2028Thaith2029Thaith203Thaith2030Thaith2031Thaith2032Thaith2033Thaith2034Thaith2035Thaith2036Thaith2037Thaith2038Thaith2039Thaith204Thaith2040Thaith2041Thaith2042Thaith2043Thaith2044Thaith2045Thaith2046Thaith2047Thaith2048Thaith2049Thaith205Thaith2050Thaith2051Thaith2052Thaith2053Thaith2054Thaith2055Thaith2056Thaith2057Thaith2058Thaith2059Thaith206Thaith2060Thaith2061Thaith2062Thaith2063Thaith2064Thaith2065Thaith2066Thaith2067Thaith2068Thaith2069Thaith207Thaith2070Thaith2071Thaith2072Thaith2073Thaith2074Thaith2075Thaith2076Thaith2077Thaith2078Thaith2079Thaith208Thaith2080Thaith2081Thaith2082Thaith2083Thaith2084Thaith2085Thaith2086Thaith2087Thaith2088Thaith2089Thaith209Thaith2090Thaith2091Thaith2092Thaith2093Thaith2094Thaith2095Thaith2096Thaith2097Thaith2098Thaith2099Thaith21Thaith210Thaith2100Thaith2101Thaith2102Thaith2103Thaith2104Thaith2105Thaith2106Thaith2107Thaith2108Thaith2109Thaith211Thaith2110Thaith2111Thaith2112Thaith2113Thaith2114Thaith2115Thaith2116Thaith2117Thaith2118Thaith2119Thaith212Thaith2120Thaith2121Thaith2122Thaith2123Thaith2124Thaith2125Thaith2126Thaith2127Thaith2128Thaith2129Thaith213Thaith2130Thaith2131Thaith2132Thaith2133Thaith2134Thaith2135Thaith2136Thaith2137Thaith2138Thaith2139Thaith214Thaith2140Thaith2141Thaith2142Thaith2143Thaith2144Thaith2145Thaith2146Thaith2147Thaith2148Thaith2149Thaith215Thaith2150Thaith2151Thaith2152Thaith2153Thaith2154Thaith2155Thaith2156Thaith2157Thaith2158Thaith2159Thaith216Thaith2160Thaith2161Thaith2162Thaith2163Thaith2164Thaith2165Thaith2166Thaith2167Thaith2168Thaith2169Thaith217Thaith2170Thaith2171Thaith2172Thaith2173Thaith2174Thaith2175Thaith2176Thaith2177Thaith2178Thaith2179Thaith218Thaith2180Thaith2181Thaith2182Thaith2183Thaith2184Thaith2185Thaith2186Thaith2187Thaith2188Thaith2189Thaith219Thaith2190Thaith2191Thaith2192Thaith2193Thaith2194Thaith2195Thaith2196Thaith2197Thaith2198Thaith2199Thaith22Thaith220Thaith2200Thaith2201Thaith2202Thaith2203Thaith2204Thaith2205Thaith2206Thaith2207Thaith2208Thaith2209Thaith221Thaith2210Thaith2211Thaith2212Thaith2213Thaith2214Thaith2215Thaith2216Thaith2217Thaith2218Thaith2219Thaith222Thaith2220Thaith2221Thaith2222Thaith2223Thaith2224Thaith2225Thaith2226Thaith2227Thaith2228Thaith2229Thaith223Thaith2230Thaith2231Thaith2232Thaith2233Thaith2234Thaith2235Thaith2236Thaith2237Thaith2238Thaith2239Thaith224Thaith2240Thaith2241Thaith2242Thaith2243Thaith2244Thaith2245Thaith2246Thaith2247Thaith2248Thaith2249Thaith225Thaith2250Thaith2251Thaith2252Thaith2253Thaith2254Thaith2255Thaith2256Thaith2257Thaith2258Thaith2259Thaith226Thaith2260Thaith2261Thaith2262Thaith2263Thaith2264Thaith2265Thaith2266Thaith2267Thaith2268Thaith2269Thaith227Thaith2270Thaith2271Thaith2272Thaith2273Thaith2274Thaith2275Thaith2276Thaith2277Thaith2278Thaith2279Thaith228Thaith2280Thaith2281Thaith2282Thaith2283Thaith2284Thaith2285Thaith2286Thaith2287Thaith2288Thaith2289Thaith229Thaith2290Thaith2291Thaith2292Thaith2293Thaith2294Thaith2295Thaith2296Thaith2297Thaith2298Thaith2299Thaith23Thaith230Thaith2300Thaith2301Thaith2302Thaith2303Thaith2304Thaith2305Thaith2306Thaith2307Thaith2308Thaith2309Thaith231Thaith2310Thaith2311Thaith2312Thaith2313Thaith2314Thaith2315Thaith2316Thaith2317Thaith2318Thaith2319Thaith232Thaith2320Thaith2321Thaith2322Thaith2323Thaith2324Thaith2325Thaith2326Thaith2327Thaith2328Thaith2329Thaith233Thaith2330Thaith2331Thaith2332Thaith2333Thaith2334Thaith2335Thaith2336Thaith2337Thaith2338Thaith2339Thaith234Thaith2340Thaith2341Thaith2342Thaith2343Thaith2344Thaith2345Thaith2346Thaith2347Thaith2348Thaith2349Thaith235Thaith2350Thaith2351Thaith2352Thaith2353Thaith2354Thaith2355Thaith2356Thaith2357Thaith2358Thaith2359Thaith236Thaith2360Thaith2361Thaith2362Thaith2363Thaith2364Thaith2365Thaith2366Thaith2367Thaith2368Thaith2369Thaith237Thaith2370Thaith2371Thaith2372Thaith2373Thaith2374Thaith2375Thaith2376Thaith2377Thaith2378Thaith2379Thaith238Thaith2380Thaith2381Thaith2382Thaith2383Thaith2384Thaith2385Thaith2386Thaith2387Thaith2388Thaith2389Thaith239Thaith2390Thaith2391Thaith2392Thaith2393Thaith2394Thaith2395Thaith2396Thaith2397Thaith2398Thaith2399Thaith24Thaith240Thaith2400Thaith2401Thaith2402Thaith2403Thaith2404Thaith2405Thaith2406Thaith2407Thaith2408Thaith2409Thaith241Thaith2410Thaith2411Thaith2412Thaith2413Thaith2414Thaith2415Thaith2416Thaith2417Thaith2418Thaith2419Thaith242Thaith2420Thaith2421Thaith2422Thaith2423Thaith2424Thaith2425Thaith2426Thaith2427Thaith2428Thaith2429Thaith243Thaith2430Thaith2431Thaith2432Thaith2433Thaith2434Thaith2435Thaith2436Thaith2437Thaith2438Thaith2439Thaith244Thaith2440Thaith2441Thaith2442Thaith2443Thaith2444Thaith2445Thaith2446Thaith2447Thaith2448Thaith2449Thaith245Thaith2450Thaith2451Thaith2452Thaith2453Thaith2454Thaith2455Thaith2456Thaith2457Thaith2458Thaith2459Thaith246Thaith2460Thaith2461Thaith2462Thaith2463Thaith2464Thaith2465Thaith2466Thaith2467Thaith2468Thaith2469Thaith247Thaith2470Thaith2471Thaith2472Thaith2473Thaith2474Thaith2475Thaith2476Thaith2477Thaith2478Thaith2479Thaith248Thaith2480Thaith2481Thaith2482Thaith2483Thaith2484Thaith2485Thaith2486Thaith2487Thaith2488Thaith2489Thaith249Thaith2490Thaith2491Thaith2492Thaith2493Thaith2494Thaith2495Thaith2496Thaith2497Thaith2498Thaith2499Thaith25Thaith250Thaith2500Thaith2501Thaith2502Thaith2503Thaith2504Thaith2505Thaith2506Thaith2507Thaith2508Thaith2509Thaith251Thaith2510Thaith2511Thaith2512Thaith2513Thaith2514Thaith2515Thaith2516Thaith2517Thaith2518Thaith2519Thaith252Thaith2520Thaith2521Thaith2522Thaith2523Thaith2524Thaith2525Thaith2526Thaith2527Thaith2528Thaith2529Thaith253Thaith2530Thaith2531Thaith2532Thaith2533Thaith2534Thaith2535Thaith2536Thaith2537Thaith2538Thaith2539Thaith254Thaith2540Thaith2541Thaith2542Thaith2543Thaith2544Thaith2545Thaith2546Thaith2547Thaith2548Thaith2549Thaith255Thaith2550Thaith2551Thaith2552Thaith2553Thaith2554Thaith2555Thaith2556Thaith2557Thaith2558Thaith2559Thaith256Thaith2560Thaith2561Thaith2562Thaith2563Thaith2564Thaith2565Thaith2566Thaith2567Thaith2568Thaith2569Thaith257Thaith2570Thaith2571Thaith2572Thaith2573Thaith2574Thaith2575Thaith2576Thaith2577Thaith2578Thaith2579Thaith258Thaith2580Thaith2581Thaith2582Thaith2583Thaith2584Thaith2585Thaith2586Thaith2587Thaith2588Thaith2589Thaith259Thaith2590Thaith2591Thaith2592Thaith2593Thaith2594Thaith2595Thaith2596Thaith2597Thaith2598Thaith2599Thaith26Thaith260Thaith2600Thaith2601Thaith2602Thaith2603Thaith2604Thaith2605Thaith2606Thaith2607Thaith2608Thaith2609Thaith261Thaith2610Thaith2611Thaith2612Thaith2613Thaith2614Thaith2615Thaith2616Thaith2617Thaith2618Thaith2619Thaith262Thaith2620Thaith2621Thaith2622Thaith2623Thaith2624Thaith2625Thaith2626Thaith2627Thaith2628Thaith2629Thaith263Thaith2630Thaith2631Thaith2632Thaith2633Thaith2634Thaith2635Thaith2636Thaith2637Thaith2638Thaith2639Thaith264Thaith2640Thaith2641Thaith2642Thaith2643Thaith2644Thaith2645Thaith2646Thaith2647Thaith2648Thaith2649Thaith265Thaith2650Thaith2651Thaith2652Thaith2653Thaith2654Thaith2655Thaith2656Thaith2657Thaith2658Thaith2659Thaith266Thaith2660Thaith2661Thaith2662Thaith2663Thaith2664Thaith2665Thaith2666Thaith2667Thaith2668Thaith2669Thaith267Thaith2670Thaith2671Thaith2672Thaith2673Thaith2674Thaith2675Thaith2676Thaith2677Thaith2678Thaith2679Thaith268Thaith2680Thaith2681Thaith2682Thaith2683Thaith2684Thaith2685Thaith2686Thaith2687Thaith2688Thaith2689Thaith269Thaith2690Thaith2691Thaith2692Thaith2693Thaith2694Thaith2695Thaith2696Thaith2697Thaith2698Thaith2699Thaith27Thaith270Thaith2700Thaith2701Thaith2702Thaith2703Thaith2704Thaith2705Thaith2706Thaith2707Thaith2708Thaith2709Thaith271Thaith2710Thaith2711Thaith2712Thaith2713Thaith2714Thaith2715Thaith2716Thaith2717Thaith2718Thaith2719Thaith272Thaith2720Thaith2721Thaith2722Thaith2723Thaith2724Thaith2725Thaith2726Thaith2727Thaith2728Thaith2729Thaith273Thaith2730Thaith2731Thaith2732Thaith2733Thaith2734Thaith2735Thaith2736Thaith2737Thaith2738Thaith2739Thaith274Thaith2740Thaith2741Thaith2742Thaith2743Thaith2744Thaith2745Thaith2746Thaith2747Thaith2748Thaith2749Thaith275Thaith2750Thaith2751Thaith2752Thaith2753Thaith2754Thaith2755Thaith2756Thaith2757Thaith2758Thaith2759Thaith276Thaith2760Thaith2761Thaith2762Thaith2763Thaith2764Thaith2765Thaith2766Thaith2767Thaith2768Thaith2769Thaith277Thaith2770Thaith2771Thaith2772Thaith2773Thaith2774Thaith2775Thaith2776Thaith2777Thaith2778Thaith2779Thaith278Thaith2780Thaith2781Thaith2782Thaith2783Thaith2784Thaith2785Thaith2786Thaith2787Thaith2788Thaith2789Thaith279Thaith2790Thaith2791Thaith2792Thaith2793Thaith2794Thaith2795Thaith2796Thaith2797Thaith2798Thaith2799Thaith28Thaith280Thaith2800Thaith2801Thaith2802Thaith2803Thaith2804Thaith2805Thaith2806Thaith2807Thaith2808Thaith2809Thaith281Thaith2810Thaith2811Thaith2812Thaith2813Thaith2814Thaith2815Thaith2816Thaith2817Thaith2818Thaith2819Thaith282Thaith2820Thaith2821Thaith2822Thaith2823Thaith2824Thaith2825Thaith2826Thaith2827Thaith2828Thaith2829Thaith283Thaith2830Thaith2831Thaith2832Thaith2833Thaith2834Thaith2835Thaith2836Thaith2837Thaith2838Thaith2839Thaith284Thaith2840Thaith2841Thaith2842Thaith2843Thaith2844Thaith2845Thaith2846Thaith2847Thaith2848Thaith2849Thaith285Thaith2850Thaith2851Thaith2852Thaith2853Thaith2854Thaith2855Thaith2856Thaith2857Thaith2858Thaith2859Thaith286Thaith2860Thaith2861Thaith2862Thaith2863Thaith2864Thaith2865Thaith2866Thaith2867Thaith2868Thaith2869Thaith287Thaith2870Thaith2871Thaith2872Thaith2873Thaith2874Thaith2875Thaith2876Thaith2877Thaith2878Thaith2879Thaith288Thaith2880Thaith2881Thaith2882Thaith2883Thaith2884Thaith2885Thaith2886Thaith2887Thaith2888Thaith2889Thaith289Thaith2890Thaith2891Thaith2892Thaith2893Thaith2894Thaith2895Thaith2896Thaith2897Thaith2898Thaith2899Thaith29Thaith290Thaith2900Thaith2901Thaith2902Thaith2903Thaith2904Thaith2905Thaith2906Thaith2907Thaith2908Thaith2909Thaith291Thaith2910Thaith2911Thaith2912Thaith2913Thaith2914Thaith2915Thaith2916Thaith2917Thaith2918Thaith2919Thaith292Thaith2920Thaith2921Thaith2922Thaith2923Thaith2924Thaith2925Thaith2926Thaith2927Thaith2928Thaith2929Thaith293Thaith2930Thaith2931Thaith2932Thaith2933Thaith2934Thaith2935Thaith2936Thaith2937Thaith2938Thaith2939Thaith294Thaith2940Thaith2941Thaith2942Thaith2943Thaith2944Thaith2945Thaith2946Thaith2947Thaith2948Thaith2949Thaith295Thaith2950Thaith2951Thaith2952Thaith2953Thaith2954Thaith2955Thaith2956Thaith2957Thaith2958Thaith2959Thaith296Thaith2960Thaith2961Thaith2962Thaith2963Thaith2964Thaith2965Thaith2966Thaith2967Thaith2968Thaith2969Thaith297Thaith2970Thaith2971Thaith2972Thaith2973Thaith2974Thaith2975Thaith2976Thaith2977Thaith2978Thaith2979Thaith298Thaith2980Thaith2981Thaith2982Thaith2983Thaith2984Thaith2985Thaith2986Thaith2987Thaith2988Thaith2989Thaith299Thaith2990Thaith2991Thaith2992Thaith2993Thaith2994Thaith2995Thaith2996Thaith2997Thaith2998Thaith2999Thaith3Thaith30Thaith300Thaith3000Thaith3001Thaith3002Thaith3003Thaith3004Thaith3005Thaith3006Thaith3007Thaith3008Thaith3009Thaith301Thaith3010Thaith3011Thaith3012Thaith3013Thaith3014Thaith3015Thaith3016Thaith3017Thaith3018Thaith3019Thaith302Thaith3020Thaith3021Thaith3022Thaith3023Thaith3024Thaith3025Thaith3026Thaith3027Thaith3028Thaith3029Thaith303Thaith3030Thaith3031Thaith3032Thaith3033Thaith3034Thaith3035Thaith3036Thaith3037Thaith3038Thaith3039Thaith304Thaith3040Thaith3041Thaith3042Thaith3043Thaith3044Thaith3045Thaith3046Thaith3047Thaith3048Thaith3049Thaith305Thaith3050Thaith3051Thaith3052Thaith3053Thaith3054Thaith3055Thaith3056Thaith3057Thaith3058Thaith3059Thaith306Thaith3060Thaith3061Thaith3062Thaith3063Thaith3064Thaith3065Thaith3066Thaith3067Thaith3068Thaith3069Thaith307Thaith3070Thaith3071Thaith3072Thaith3073Thaith3074Thaith3075Thaith3076Thaith3077Thaith3078Thaith3079Thaith308Thaith3080Thaith3081Thaith3082Thaith3083Thaith3084Thaith3085Thaith3086Thaith3087Thaith3088Thaith3089Thaith309Thaith3090Thaith3091Thaith3092Thaith3093Thaith3094Thaith3095Thaith3096Thaith3097Thaith3098Thaith3099Thaith31Thaith310Thaith3100Thaith3101Thaith3102Thaith3103Thaith3104Thaith3105Thaith3106Thaith3107Thaith3108Thaith3109Thaith311Thaith3110Thaith3111Thaith3112Thaith3113Thaith3114Thaith3115Thaith3116Thaith3117Thaith3118Thaith3119Thaith312Thaith3120Thaith3121Thaith3122Thaith3123Thaith3124Thaith3125Thaith3126Thaith3127Thaith3128Thaith3129Thaith313Thaith3130Thaith3131Thaith3132Thaith3133Thaith3134Thaith3135Thaith3136Thaith3137Thaith3138Thaith3139Thaith314Thaith3140Thaith3141Thaith3142Thaith3143Thaith3144Thaith3145Thaith3146Thaith3147Thaith3148Thaith3149Thaith315Thaith3150Thaith3151Thaith3152Thaith3153Thaith3154Thaith3155Thaith3156Thaith3157Thaith3158Thaith3159Thaith316Thaith3160Thaith3161Thaith3162Thaith3163Thaith3164Thaith3165Thaith3166Thaith3167Thaith3168Thaith3169Thaith317Thaith3170Thaith3171Thaith3172Thaith3173Thaith3174Thaith3175Thaith3176Thaith3177Thaith3178Thaith3179Thaith318Thaith3180Thaith3181Thaith3182Thaith3183Thaith3184Thaith3185Thaith3186Thaith3187Thaith3188Thaith3189Thaith319Thaith3190Thaith3191Thaith3192Thaith3193Thaith3194Thaith3195Thaith3196Thaith3197Thaith3198Thaith3199Thaith32Thaith320Thaith3200Thaith3201Thaith3202Thaith3203Thaith3204Thaith3205Thaith3206Thaith3207Thaith3208Thaith3209Thaith321Thaith3210Thaith3211Thaith3212Thaith3213Thaith3214Thaith3215Thaith3216Thaith3217Thaith3218Thaith3219Thaith322Thaith3220Thaith3221Thaith3222Thaith3223Thaith3224Thaith3225Thaith3226Thaith3227Thaith3228Thaith3229Thaith323Thaith3230Thaith3231Thaith3232Thaith3233Thaith3234Thaith3235Thaith3236Thaith3237Thaith3238Thaith3239Thaith324Thaith3240Thaith3241Thaith3242Thaith3243Thaith3244Thaith3245Thaith3246Thaith3247Thaith3248Thaith3249Thaith325Thaith3250Thaith3251Thaith3252Thaith3253Thaith3254Thaith3255Thaith3256Thaith3257Thaith3258Thaith3259Thaith326Thaith3260Thaith3261Thaith3262Thaith3263Thaith3264Thaith3265Thaith3266Thaith3267Thaith3268Thaith3269Thaith327Thaith3270Thaith3271Thaith3272Thaith3273Thaith3274Thaith3275Thaith3276Thaith3277Thaith3278Thaith3279Thaith328Thaith3280Thaith3281Thaith3282Thaith3283Thaith3284Thaith3285Thaith3286Thaith3287Thaith3288Thaith3289Thaith329Thaith3290Thaith3291Thaith3292Thaith3293Thaith3294Thaith3295Thaith3296Thaith3297Thaith3298Thaith3299Thaith33Thaith330Thaith3300Thaith3301Thaith3302Thaith3303Thaith3304Thaith3305Thaith3306Thaith3307Thaith3308Thaith3309Thaith331Thaith3310Thaith3311Thaith3312Thaith3313Thaith3314Thaith3315Thaith3316Thaith3317Thaith3318Thaith3319Thaith332Thaith3320Thaith3321Thaith3322Thaith3323Thaith3324Thaith3325Thaith3326Thaith3327Thaith3328Thaith3329Thaith333Thaith3330Thaith3331Thaith3332Thaith3333Thaith3334Thaith3335Thaith3336Thaith3337Thaith3338Thaith3339Thaith334Thaith3340Thaith3341Thaith3342Thaith3343Thaith3344Thaith3345Thaith3346Thaith3347Thaith3348Thaith3349Thaith335Thaith3350Thaith3351Thaith3352Thaith3353Thaith3354Thaith3355Thaith3356Thaith3357Thaith3358Thaith3359Thaith336Thaith3360Thaith3361Thaith3362Thaith3363Thaith3364Thaith3365Thaith3366Thaith3367Thaith3368Thaith3369Thaith337Thaith3370Thaith3371Thaith3372Thaith3373Thaith3374Thaith3375Thaith3376Thaith3377Thaith3378Thaith3379Thaith338Thaith3380Thaith3381Thaith3382Thaith3383Thaith3384Thaith3385Thaith3386Thaith3387Thaith3388Thaith3389Thaith339Thaith3390Thaith3391Thaith3392Thaith3393Thaith3394Thaith3395Thaith3396Thaith3397Thaith3398Thaith3399Thaith34Thaith340Thaith3400Thaith3401Thaith3402Thaith3403Thaith3404Thaith3405Thaith3406Thaith3407Thaith3408Thaith3409Thaith341Thaith3410Thaith3411Thaith3412Thaith3413Thaith3414Thaith3415Thaith3416Thaith3417Thaith3418Thaith3419Thaith342Thaith3420Thaith3421Thaith3422Thaith3423Thaith3424Thaith3425Thaith3426Thaith3427Thaith3428Thaith3429Thaith343Thaith3430Thaith3431Thaith3432Thaith3433Thaith3434Thaith3435Thaith3436Thaith3437Thaith3438Thaith3439Thaith344Thaith3440Thaith3441Thaith3442Thaith3443Thaith3444Thaith3445Thaith3446Thaith3447Thaith3448Thaith3449Thaith345Thaith3450Thaith3451Thaith3452Thaith3453Thaith3454Thaith3455Thaith3456Thaith3457Thaith3458Thaith3459Thaith346Thaith3460Thaith3461Thaith3462Thaith3463Thaith3464Thaith3465Thaith3466Thaith3467Thaith3468Thaith3469Thaith347Thaith3470Thaith3471Thaith3472Thaith3473Thaith3474Thaith3475Thaith3476Thaith3477Thaith3478Thaith3479Thaith348Thaith3480Thaith3481Thaith3482Thaith3483Thaith3484Thaith3485Thaith3486Thaith3487Thaith3488Thaith3489Thaith349Thaith3490Thaith3491Thaith3492Thaith3493Thaith3494Thaith3495Thaith3496Thaith3497Thaith3498Thaith3499Thaith35Thaith350Thaith3500Thaith3501Thaith3502Thaith3503Thaith3504Thaith3505Thaith3506Thaith3507Thaith3508Thaith3509Thaith351Thaith3510Thaith3511Thaith3512Thaith3513Thaith3514Thaith3515Thaith3516Thaith3517Thaith3518Thaith3519Thaith352Thaith3520Thaith3521Thaith3522Thaith3523Thaith3524Thaith3525Thaith3526Thaith3527Thaith3528Thaith3529Thaith353Thaith3530Thaith3531Thaith3532Thaith3533Thaith3534Thaith3535Thaith3536Thaith3537Thaith3538Thaith3539Thaith354Thaith3540Thaith3541Thaith3542Thaith3543Thaith3544Thaith3545Thaith3546Thaith3547Thaith3548Thaith3549Thaith355Thaith3550Thaith3551Thaith3552Thaith3553Thaith3554Thaith3555Thaith3556Thaith3557Thaith3558Thaith3559Thaith356Thaith3560Thaith3561Thaith3562Thaith3563Thaith3564Thaith3565Thaith3566Thaith3567Thaith3568Thaith3569Thaith357Thaith3570Thaith3571Thaith3572Thaith3573Thaith3574Thaith3575Thaith3576Thaith3577Thaith3578Thaith3579Thaith358Thaith3580Thaith3581Thaith3582Thaith3583Thaith3584Thaith3585Thaith3586Thaith3587Thaith3588Thaith3589Thaith359Thaith3590Thaith3591Thaith3592Thaith3593Thaith3594Thaith3595Thaith3596Thaith3597Thaith3598Thaith3599Thaith36Thaith360Thaith3600Thaith3601Thaith3602Thaith3603Thaith3604Thaith3605Thaith3606Thaith3607Thaith3608Thaith3609Thaith361Thaith3610Thaith3611Thaith3612Thaith3613Thaith3614Thaith3615Thaith3616Thaith3617Thaith3618Thaith3619Thaith362Thaith3620Thaith3621Thaith3622Thaith3623Thaith3624Thaith3625Thaith3626Thaith3627Thaith3628Thaith3629Thaith363Thaith3630Thaith3631Thaith3632Thaith3633Thaith3634Thaith3635Thaith3636Thaith3637Thaith3638Thaith3639Thaith364Thaith3640Thaith3641Thaith3642Thaith3643Thaith3644Thaith3645Thaith3646Thaith3647Thaith3648Thaith3649Thaith365Thaith3650Thaith3651Thaith3652Thaith3653Thaith3654Thaith3655Thaith3656Thaith3657Thaith3658Thaith3659Thaith366Thaith3660Thaith3661Thaith3662Thaith3663Thaith3664Thaith3665Thaith3666Thaith3667Thaith3668Thaith3669Thaith367Thaith3670Thaith3671Thaith3672Thaith3673Thaith3674Thaith3675Thaith3676Thaith3677Thaith3678Thaith3679Thaith368Thaith3680Thaith3681Thaith3682Thaith3683Thaith3684Thaith3685Thaith3686Thaith3687Thaith3688Thaith3689Thaith369Thaith3690Thaith3691Thaith3692Thaith3693Thaith3694Thaith3695Thaith3696Thaith3697Thaith3698Thaith3699Thaith37Thaith370Thaith3700Thaith3701Thaith3702Thaith3703Thaith3704Thaith3705Thaith3706Thaith3707Thaith3708Thaith3709Thaith371Thaith3710Thaith3711Thaith3712Thaith3713Thaith3714Thaith3715Thaith3716Thaith3717Thaith3718Thaith3719Thaith372Thaith3720Thaith3721Thaith3722Thaith3723Thaith3724Thaith3725Thaith3726Thaith3727Thaith3728Thaith3729Thaith373Thaith3730Thaith3731Thaith3732Thaith3733Thaith3734Thaith3735Thaith3736Thaith3737Thaith3738Thaith3739Thaith374Thaith3740Thaith3741Thaith3742Thaith3743Thaith3744Thaith3745Thaith3746Thaith3747Thaith3748Thaith3749Thaith375Thaith3750Thaith3751Thaith3752Thaith3753Thaith3754Thaith3755Thaith3756Thaith3757Thaith3758Thaith3759Thaith376Thaith3760Thaith3761Thaith3762Thaith3763Thaith3764Thaith3765Thaith3766Thaith3767Thaith3768Thaith3769Thaith377Thaith3770Thaith3771Thaith3772Thaith3773Thaith3774Thaith3775Thaith3776Thaith3777Thaith3778Thaith3779Thaith378Thaith3780Thaith3781Thaith3782Thaith3783Thaith3784Thaith3785Thaith3786Thaith3787Thaith3788Thaith3789Thaith379Thaith3790Thaith3791Thaith3792Thaith3793Thaith3794Thaith3795Thaith3796Thaith3797Thaith3798Thaith3799Thaith38Thaith380Thaith3800Thaith3801Thaith3802Thaith3803Thaith3804Thaith3805Thaith3806Thaith3807Thaith3808Thaith3809Thaith381Thaith3810Thaith3811Thaith3812Thaith3813Thaith3814Thaith3815Thaith3816Thaith3817Thaith3818Thaith3819Thaith382Thaith3820Thaith3821Thaith3822Thaith3823Thaith3824Thaith3825Thaith3826Thaith3827Thaith3828Thaith3829Thaith383Thaith3830Thaith3831Thaith3832Thaith3833Thaith3834Thaith3835Thaith3836Thaith3837Thaith3838Thaith3839Thaith384Thaith3840Thaith3841Thaith3842Thaith3843Thaith3844Thaith3845Thaith3846Thaith3847Thaith3848Thaith3849Thaith385Thaith3850Thaith3851Thaith3852Thaith3853Thaith3854Thaith3855Thaith3856Thaith3857Thaith3858Thaith3859Thaith386Thaith3860Thaith3861Thaith3862Thaith3863Thaith3864Thaith3865Thaith3866Thaith3867Thaith3868Thaith3869Thaith387Thaith3870Thaith3871Thaith3872Thaith3873Thaith3874Thaith3875Thaith3876Thaith3877Thaith3878Thaith3879Thaith388Thaith3880Thaith3881Thaith3882Thaith3883Thaith3884Thaith3885Thaith3886Thaith3887Thaith3888Thaith3889Thaith389Thaith3890Thaith3891Thaith3892Thaith3893Thaith3894Thaith3895Thaith3896Thaith3897Thaith3898Thaith3899Thaith39Thaith390Thaith3900Thaith3901Thaith3902Thaith3903Thaith3904Thaith3905Thaith3906Thaith3907Thaith3908Thaith3909Thaith391Thaith3910Thaith3911Thaith3912Thaith3913Thaith3914Thaith3915Thaith3916Thaith3917Thaith3918Thaith3919Thaith392Thaith3920Thaith3921Thaith3922Thaith3923Thaith3924Thaith3925Thaith3926Thaith3927Thaith3928Thaith3929Thaith393Thaith3930Thaith3931Thaith3932Thaith3933Thaith3934Thaith3935Thaith3936Thaith3937Thaith3938Thaith3939Thaith394Thaith3940Thaith3941Thaith3942Thaith3943Thaith3944Thaith3945Thaith3946Thaith3947Thaith3948Thaith3949Thaith395Thaith3950Thaith3951Thaith3952Thaith3953Thaith3954Thaith3955Thaith3956Thaith3957Thaith3958Thaith3959Thaith396Thaith3960Thaith3961Thaith3962Thaith3963Thaith3964Thaith3965Thaith3966Thaith3967Thaith3968Thaith3969Thaith397Thaith3970Thaith3971Thaith3972Thaith3973Thaith3974Thaith3975Thaith3976Thaith3977Thaith3978Thaith3979Thaith398Thaith3980Thaith3981Thaith3982Thaith3983Thaith3984Thaith3985Thaith3986Thaith3987Thaith3988Thaith3989Thaith399Thaith3990Thaith3991Thaith3992Thaith3993Thaith3994Thaith3995Thaith3996Thaith3997Thaith3998Thaith3999Thaith4Thaith40Thaith400Thaith4000Thaith4001Thaith4002Thaith4003Thaith4004Thaith4005Thaith4006Thaith4007Thaith4008Thaith4009Thaith401Thaith4010Thaith4011Thaith4012Thaith4013Thaith4014Thaith4015Thaith4016Thaith4017Thaith4018Thaith4019Thaith402Thaith4020Thaith4021Thaith4022Thaith4023Thaith4024Thaith4025Thaith4026Thaith4027Thaith4028Thaith4029Thaith403Thaith4030Thaith4031Thaith4032Thaith4033Thaith4034Thaith4035Thaith4036Thaith4037Thaith4038Thaith4039Thaith404Thaith4040Thaith4041Thaith4042Thaith4043Thaith4044Thaith4045Thaith4046Thaith4047Thaith4048Thaith4049Thaith405Thaith4050Thaith4051Thaith4052Thaith4053Thaith4054Thaith4055Thaith4056Thaith4057Thaith4058Thaith4059Thaith406Thaith4060Thaith4061Thaith4062Thaith4063Thaith4064Thaith4065Thaith4066Thaith4067Thaith4068Thaith4069Thaith407Thaith4070Thaith4071Thaith4072Thaith4073Thaith4074Thaith4075Thaith4076Thaith4077Thaith4078Thaith4079Thaith408Thaith4080Thaith4081Thaith4082Thaith4083Thaith4084Thaith4085Thaith4086Thaith4087Thaith4088Thaith4089Thaith409Thaith4090Thaith4091Thaith4092Thaith4093Thaith4094Thaith4095Thaith4096Thaith4097Thaith4098Thaith4099Thaith41Thaith410Thaith4100Thaith4101Thaith4102Thaith4103Thaith4104Thaith4105Thaith4106Thaith4107Thaith4108Thaith4109Thaith411Thaith4110Thaith4111Thaith4112Thaith4113Thaith4114Thaith4115Thaith4116Thaith4117Thaith4118Thaith4119Thaith412Thaith4120Thaith4121Thaith4122Thaith4123Thaith4124Thaith4125Thaith4126Thaith4127Thaith4128Thaith4129Thaith413Thaith4130Thaith4131Thaith4132Thaith4133Thaith4134Thaith4135Thaith4136Thaith4137Thaith4138Thaith4139Thaith414Thaith4140Thaith4141Thaith4142Thaith4143Thaith4144Thaith4145Thaith4146Thaith4147Thaith4148Thaith4149Thaith415Thaith4150Thaith4151Thaith4152Thaith4153Thaith4154Thaith4155Thaith4156Thaith4157Thaith4158Thaith4159Thaith416Thaith4160Thaith4161Thaith4162Thaith4163Thaith4164Thaith4165Thaith4166Thaith4167Thaith4168Thaith4169Thaith417Thaith4170Thaith4171Thaith4172Thaith4173Thaith4174Thaith4175Thaith4176Thaith4177Thaith4178Thaith4179Thaith418Thaith4180Thaith4181Thaith4182Thaith4183Thaith4184Thaith4185Thaith4186Thaith4187Thaith4188Thaith4189Thaith419Thaith4190Thaith4191Thaith4192Thaith4193Thaith4194Thaith4195Thaith4196Thaith4197Thaith4198Thaith4199Thaith42Thaith420Thaith4200Thaith4201Thaith4202Thaith4203Thaith4204Thaith4205Thaith4206Thaith4207Thaith4208Thaith4209Thaith421Thaith4210Thaith4211Thaith4212Thaith4213Thaith4214Thaith4215Thaith4216Thaith4217Thaith4218Thaith4219Thaith422Thaith4220Thaith4221Thaith4222Thaith4223Thaith4224Thaith4225Thaith4226Thaith4227Thaith4228Thaith4229Thaith423Thaith4230Thaith4231Thaith4232Thaith4233Thaith4234Thaith4235Thaith4236Thaith4237Thaith4238Thaith4239Thaith424Thaith4240Thaith4241Thaith4242Thaith4243Thaith4244Thaith4245Thaith4246Thaith4247Thaith4248Thaith4249Thaith425Thaith4250Thaith4251Thaith4252Thaith4253Thaith4254Thaith4255Thaith4256Thaith4257Thaith4258Thaith4259Thaith426Thaith4260Thaith4261Thaith4262Thaith4263Thaith4264Thaith4265Thaith4266Thaith4267Thaith4268Thaith4269Thaith427Thaith4270Thaith4271Thaith4272Thaith4273Thaith4274Thaith4275Thaith4276Thaith4277Thaith4278Thaith4279Thaith428Thaith4280Thaith4281Thaith4282Thaith4283Thaith4284Thaith4285Thaith4286Thaith4287Thaith4288Thaith4289Thaith429Thaith4290Thaith4291Thaith4292Thaith4293Thaith4294Thaith4295Thaith4296Thaith4297Thaith4298Thaith4299Thaith43Thaith430Thaith4300Thaith4301Thaith4302Thaith4303Thaith4304Thaith4305Thaith4306Thaith4307Thaith4308Thaith4309Thaith431Thaith4310Thaith4311Thaith4312Thaith4313Thaith4314Thaith4315Thaith4316Thaith4317Thaith4318Thaith4319Thaith432Thaith4320Thaith4321Thaith4322Thaith4323Thaith4324Thaith4325Thaith4326Thaith4327Thaith4328Thaith4329Thaith433Thaith4330Thaith4331Thaith4332Thaith4333Thaith4334Thaith4335Thaith4336Thaith4337Thaith4338Thaith4339Thaith434Thaith4340Thaith4341Thaith4342Thaith4343Thaith4344Thaith4345Thaith4346Thaith4347Thaith4348Thaith4349Thaith435Thaith4350Thaith4351Thaith4352Thaith4353Thaith4354Thaith4355Thaith4356Thaith4357Thaith4358Thaith4359Thaith436Thaith4360Thaith4361Thaith4362Thaith4363Thaith4364Thaith4365Thaith4366Thaith4367Thaith4368Thaith4369Thaith437Thaith4370Thaith4371Thaith4372Thaith4373Thaith4374Thaith4375Thaith4376Thaith4377Thaith4378Thaith4379Thaith438Thaith4380Thaith4381Thaith4382Thaith4383Thaith4384Thaith4385Thaith4386Thaith4387Thaith4388Thaith4389Thaith439Thaith4390Thaith4391Thaith4392Thaith4393Thaith4394Thaith4395Thaith4396Thaith4397Thaith4398Thaith4399Thaith44Thaith440Thaith4400Thaith4401Thaith4402Thaith4403Thaith4404Thaith4405Thaith4406Thaith4407Thaith4408Thaith4409Thaith441Thaith4410Thaith4411Thaith4412Thaith4413Thaith4414Thaith4415Thaith4416Thaith4417Thaith4418Thaith4419Thaith442Thaith4420Thaith4421Thaith4422Thaith4423Thaith4424Thaith4425Thaith4426Thaith4427Thaith4428Thaith4429Thaith443Thaith4430Thaith4431Thaith4432Thaith4433Thaith4434Thaith4435Thaith4436Thaith4437Thaith4438Thaith4439Thaith444Thaith4440Thaith4441Thaith4442Thaith4443Thaith4444Thaith4445Thaith4446Thaith4447Thaith4448Thaith4449Thaith445Thaith4450Thaith4451Thaith4452Thaith4453Thaith4454Thaith4455Thaith4456Thaith4457Thaith4458Thaith4459Thaith446Thaith4460Thaith4461Thaith4462Thaith4463Thaith4464Thaith4465Thaith4466Thaith4467Thaith4468Thaith4469Thaith447Thaith4470Thaith4471Thaith4472Thaith4473Thaith4474Thaith4475Thaith4476Thaith4477Thaith4478Thaith4479Thaith448Thaith4480Thaith4481Thaith4482Thaith4483Thaith4484Thaith4485Thaith4486Thaith4487Thaith4488Thaith4489Thaith449Thaith4490Thaith4491Thaith4492Thaith4493Thaith4494Thaith4495Thaith4496Thaith4497Thaith4498Thaith4499Thaith45Thaith450Thaith4500Thaith4501Thaith4502Thaith4503Thaith4504Thaith4505Thaith4506Thaith4507Thaith4508Thaith4509Thaith451Thaith4510Thaith4511Thaith4512Thaith4513Thaith4514Thaith4515Thaith4516Thaith4517Thaith4518Thaith4519Thaith452Thaith4520Thaith4521Thaith4522Thaith4523Thaith4524Thaith4525Thaith4526Thaith4527Thaith4528Thaith4529Thaith453Thaith4530Thaith4531Thaith4532Thaith4533Thaith4534Thaith4535Thaith4536Thaith4537Thaith4538Thaith4539Thaith454Thaith4540Thaith4541Thaith4542Thaith4543Thaith4544Thaith4545Thaith4546Thaith4547Thaith4548Thaith4549Thaith455Thaith4550Thaith4551Thaith4552Thaith4553Thaith4554Thaith4555Thaith4556Thaith4557Thaith4558Thaith4559Thaith456Thaith4560Thaith4561Thaith4562Thaith4563Thaith4564Thaith4565Thaith4566Thaith4567Thaith4568Thaith4569Thaith457Thaith4570Thaith4571Thaith4572Thaith4573Thaith4574Thaith4575Thaith4576Thaith4577Thaith4578Thaith4579Thaith458Thaith4580Thaith4581Thaith4582Thaith4583Thaith4584Thaith4585Thaith4586Thaith4587Thaith4588Thaith4589Thaith459Thaith4590Thaith4591Thaith4592Thaith4593Thaith4594Thaith4595Thaith4596Thaith4597Thaith4598Thaith4599Thaith46Thaith460Thaith4600Thaith4601Thaith4602Thaith4603Thaith4604Thaith4605Thaith4606Thaith4607Thaith4608Thaith4609Thaith461Thaith4610Thaith4611Thaith4612Thaith4613Thaith4614Thaith4615Thaith4616Thaith4617Thaith4618Thaith4619Thaith462Thaith4620Thaith4621Thaith4622Thaith4623Thaith4624Thaith4625Thaith4626Thaith4627Thaith4628Thaith4629Thaith463Thaith4630Thaith4631Thaith4632Thaith4633Thaith4634Thaith4635Thaith4636Thaith4637Thaith4638Thaith4639Thaith464Thaith4640Thaith4641Thaith4642Thaith4643Thaith4644Thaith4645Thaith4646Thaith4647Thaith4648Thaith4649Thaith465Thaith4650Thaith4651Thaith4652Thaith4653Thaith4654Thaith4655Thaith4656Thaith4657Thaith4658Thaith4659Thaith466Thaith4660Thaith4661Thaith4662Thaith4663Thaith4664Thaith4665Thaith4666Thaith4667Thaith4668Thaith4669Thaith467Thaith4670Thaith4671Thaith4672Thaith4673Thaith4674Thaith4675Thaith4676Thaith4677Thaith4678Thaith4679Thaith468Thaith4680Thaith4681Thaith4682Thaith4683Thaith4684Thaith4685Thaith4686Thaith4687Thaith4688Thaith4689Thaith469Thaith4690Thaith4691Thaith4692Thaith4693Thaith4694Thaith4695Thaith4696Thaith4697Thaith4698Thaith4699Thaith47Thaith470Thaith4700Thaith4701Thaith4702Thaith4703Thaith4704Thaith4705Thaith4706Thaith4707Thaith4708Thaith4709Thaith471Thaith4710Thaith4711Thaith4712Thaith4713Thaith4714Thaith4715Thaith4716Thaith4717Thaith4718Thaith4719Thaith472Thaith4720Thaith4721Thaith4722Thaith4723Thaith4724Thaith4725Thaith4726Thaith4727Thaith4728Thaith4729Thaith473Thaith4730Thaith4731Thaith4732Thaith4733Thaith4734Thaith4735Thaith4736Thaith4737Thaith4738Thaith4739Thaith474Thaith4740Thaith4741Thaith4742Thaith4743Thaith4744Thaith4745Thaith4746Thaith4747Thaith4748Thaith4749Thaith475Thaith4750Thaith4751Thaith4752Thaith4753Thaith4754Thaith4755Thaith4756Thaith4757Thaith4758Thaith4759Thaith476Thaith4760Thaith4761Thaith4762Thaith4763Thaith4764Thaith4765Thaith4766Thaith4767Thaith4768Thaith4769Thaith477Thaith4770Thaith4771Thaith4772Thaith4773Thaith4774Thaith4775Thaith4776Thaith4777Thaith4778Thaith4779Thaith478Thaith4780Thaith4781Thaith4782Thaith4783Thaith4784Thaith4785Thaith4786Thaith4787Thaith4788Thaith4789Thaith479Thaith4790Thaith4791Thaith4792Thaith4793Thaith4794Thaith4795Thaith4796Thaith4797Thaith4798Thaith4799Thaith48Thaith480Thaith4800Thaith4801Thaith4802Thaith4803Thaith4804Thaith4805Thaith4806Thaith4807Thaith4808Thaith4809Thaith481Thaith4810Thaith4811Thaith4812Thaith4813Thaith4814Thaith4815Thaith4816Thaith4817Thaith4818Thaith4819Thaith482Thaith4820Thaith4821Thaith4822Thaith4823Thaith4824Thaith4825Thaith4826Thaith4827Thaith4828Thaith4829Thaith483Thaith4830Thaith4831Thaith4832Thaith4833Thaith4834Thaith4835Thaith4836Thaith4837Thaith4838Thaith4839Thaith484Thaith4840Thaith4841Thaith4842Thaith4843Thaith4844Thaith4845Thaith4846Thaith4847Thaith4848Thaith4849Thaith485Thaith4850Thaith4851Thaith4852Thaith4853Thaith4854Thaith4855Thaith4856Thaith4857Thaith4858Thaith4859Thaith486Thaith4860Thaith4861Thaith4862Thaith4863Thaith4864Thaith4865Thaith4866Thaith4867Thaith4868Thaith4869Thaith487Thaith4870Thaith4871Thaith4872Thaith4873Thaith4874Thaith4875Thaith4876Thaith4877Thaith4878Thaith4879Thaith488Thaith4880Thaith4881Thaith4882Thaith4883Thaith4884Thaith4885Thaith4886Thaith4887Thaith4888Thaith4889Thaith489Thaith4890Thaith4891Thaith4892Thaith4893Thaith4894Thaith4895Thaith4896Thaith4897Thaith4898Thaith4899Thaith49Thaith490Thaith4900Thaith4901Thaith4902Thaith4903Thaith4904Thaith4905Thaith4906Thaith4907Thaith4908Thaith4909Thaith491Thaith4910Thaith4911Thaith4912Thaith4913Thaith4914Thaith4915Thaith4916Thaith4917Thaith4918Thaith4919Thaith492Thaith4920Thaith4921Thaith4922Thaith4923Thaith4924Thaith4925Thaith4926Thaith4927Thaith4928Thaith4929Thaith493Thaith4930Thaith4931Thaith4932Thaith4933Thaith4934Thaith4935Thaith4936Thaith4937Thaith4938Thaith4939Thaith494Thaith4940Thaith4941Thaith4942Thaith4943Thaith4944Thaith4945Thaith4946Thaith4947Thaith4948Thaith4949Thaith495Thaith4950Thaith4951Thaith4952Thaith4953Thaith4954Thaith4955Thaith4956Thaith4957Thaith4958Thaith4959Thaith496Thaith4960Thaith4961Thaith4962Thaith4963Thaith4964Thaith4965Thaith4966Thaith4967Thaith4968Thaith4969Thaith497Thaith4970Thaith4971Thaith4972Thaith4973Thaith4974Thaith4975Thaith4976Thaith4977Thaith4978Thaith4979Thaith498Thaith4980Thaith4981Thaith4982Thaith4983Thaith4984Thaith4985Thaith4986Thaith4987Thaith4988Thaith4989Thaith499Thaith4990Thaith4991Thaith4992Thaith4993Thaith4994Thaith4995Thaith4996Thaith4997Thaith4998Thaith4999Thaith5Thaith50Thaith500Thaith5000Thaith5001Thaith5002Thaith5003Thaith5004Thaith5005Thaith5006Thaith5007Thaith5008Thaith5009Thaith501Thaith5010Thaith5011Thaith5012Thaith5013Thaith5014Thaith5015Thaith5016Thaith5017Thaith5018Thaith5019Thaith502Thaith5020Thaith5021Thaith5022Thaith5023Thaith5024Thaith5025Thaith5026Thaith5027Thaith5028Thaith5029Thaith503Thaith5030Thaith5031Thaith5032Thaith5033Thaith5034Thaith5035Thaith5036Thaith5037Thaith5038Thaith5039Thaith504Thaith5040Thaith5041Thaith5042Thaith5043Thaith5044Thaith5045Thaith5046Thaith5047Thaith5048Thaith5049Thaith505Thaith5050Thaith5051Thaith5052Thaith5053Thaith5054Thaith5055Thaith5056Thaith5057Thaith5058Thaith5059Thaith506Thaith5060Thaith5061Thaith5062Thaith5063Thaith5064Thaith5065Thaith5066Thaith5067Thaith5068Thaith5069Thaith507Thaith5070Thaith5071Thaith5072Thaith5073Thaith5074Thaith5075Thaith5076Thaith5077Thaith5078Thaith5079Thaith508Thaith5080Thaith5081Thaith5082Thaith5083Thaith5084Thaith5085Thaith5086Thaith5087Thaith5088Thaith5089Thaith509Thaith5090Thaith5091Thaith5092Thaith5093Thaith5094Thaith5095Thaith5096Thaith5097Thaith5098Thaith5099Thaith51Thaith510Thaith5100Thaith5101Thaith5102Thaith5103Thaith5104Thaith5105Thaith5106Thaith5107Thaith5108Thaith5109Thaith511Thaith5110Thaith5111Thaith5112Thaith5113Thaith5114Thaith5115Thaith5116Thaith5117Thaith5118Thaith5119Thaith512Thaith5120Thaith5121Thaith5122Thaith5123Thaith5124Thaith5125Thaith5126Thaith5127Thaith5128Thaith5129Thaith513Thaith5130Thaith5131Thaith5132Thaith5133Thaith5134Thaith5135Thaith5136Thaith5137Thaith5138Thaith5139Thaith514Thaith5140Thaith5141Thaith5142Thaith5143Thaith5144Thaith5145Thaith5146Thaith5147Thaith5148Thaith5149Thaith515Thaith5150Thaith5151Thaith5152Thaith5153Thaith5154Thaith5155Thaith5156Thaith5157Thaith5158Thaith5159Thaith516Thaith5160Thaith5161Thaith5162Thaith5163Thaith5164Thaith5165Thaith5166Thaith5167Thaith5168Thaith5169Thaith517Thaith5170Thaith5171Thaith5172Thaith5173Thaith5174Thaith5175Thaith5176Thaith5177Thaith5178Thaith5179Thaith518Thaith5180Thaith5181Thaith5182Thaith5183Thaith5184Thaith5185Thaith5186Thaith5187Thaith5188Thaith5189Thaith519Thaith5190Thaith5191Thaith5192Thaith5193Thaith5194Thaith5195Thaith5196Thaith5197Thaith5198Thaith5199Thaith52Thaith520Thaith5200Thaith5201Thaith5202Thaith5203Thaith5204Thaith5205Thaith5206Thaith5207Thaith5208Thaith5209Thaith521Thaith5210Thaith5211Thaith5212Thaith5213Thaith5214Thaith5215Thaith5216Thaith5217Thaith5218Thaith5219Thaith522Thaith5220Thaith5221Thaith5222Thaith5223Thaith5224Thaith5225Thaith5226Thaith5227Thaith5228Thaith5229Thaith523Thaith5230Thaith5231Thaith5232Thaith5233Thaith5234Thaith5235Thaith5236Thaith5237Thaith5238Thaith5239Thaith524Thaith5240Thaith5241Thaith5242Thaith5243Thaith5244Thaith5245Thaith5246Thaith5247Thaith5248Thaith5249Thaith525Thaith5250Thaith5251Thaith5252Thaith5253Thaith5254Thaith5255Thaith5256Thaith5257Thaith5258Thaith5259Thaith526Thaith5260Thaith5261Thaith5262Thaith5263Thaith5264Thaith5265Thaith5266Thaith5267Thaith5268Thaith5269Thaith527Thaith5270Thaith5271Thaith5272Thaith5273Thaith5274Thaith5275Thaith5276Thaith5277Thaith5278Thaith5279Thaith528Thaith5280Thaith5281Thaith5282Thaith5283Thaith5284Thaith5285Thaith5286Thaith5287Thaith5288Thaith5289Thaith529Thaith5290Thaith5291Thaith5292Thaith5293Thaith5294Thaith5295Thaith5296Thaith5297Thaith5298Thaith5299Thaith53Thaith530Thaith5300Thaith5301Thaith5302Thaith5303Thaith5304Thaith5305Thaith5306Thaith5307Thaith5308Thaith5309Thaith531Thaith5310Thaith5311Thaith5312Thaith5313Thaith5314Thaith5315Thaith5316Thaith5317Thaith5318Thaith5319Thaith532Thaith5320Thaith5321Thaith5322Thaith5323Thaith5324Thaith5325Thaith5326Thaith5327Thaith5328Thaith5329Thaith533Thaith5330Thaith5331Thaith5332Thaith5333Thaith5334Thaith5335Thaith5336Thaith5337Thaith5338Thaith5339Thaith534Thaith5340Thaith5341Thaith5342Thaith5343Thaith5344Thaith5345Thaith5346Thaith5347Thaith5348Thaith5349Thaith535Thaith5350Thaith5351Thaith5352Thaith5353Thaith5354Thaith5355Thaith5356Thaith5357Thaith5358Thaith5359Thaith536Thaith5360Thaith5361Thaith5362Thaith5363Thaith5364Thaith5365Thaith5366Thaith5367Thaith5368Thaith5369Thaith537Thaith5370Thaith5371Thaith5372Thaith5373Thaith5374Thaith5375Thaith5376Thaith5377Thaith5378Thaith5379Thaith538Thaith5380Thaith5381Thaith5382Thaith5383Thaith5384Thaith5385Thaith5386Thaith5387Thaith5388Thaith5389Thaith539Thaith5390Thaith5391Thaith5392Thaith5393Thaith5394Thaith5395Thaith5396Thaith5397Thaith5398Thaith5399Thaith54Thaith540Thaith5400Thaith5401Thaith5402Thaith5403Thaith5404Thaith5405Thaith5406Thaith5407Thaith5408Thaith5409Thaith541Thaith5410Thaith5411Thaith5412Thaith5413Thaith5414Thaith5415Thaith5416Thaith5417Thaith5418Thaith5419Thaith542Thaith5420Thaith5421Thaith5422Thaith5423Thaith5424Thaith5425Thaith5426Thaith5427Thaith5428Thaith5429Thaith543Thaith5430Thaith5431Thaith5432Thaith5433Thaith5434Thaith5435Thaith5436Thaith5437Thaith5438Thaith5439Thaith544Thaith5440Thaith5441Thaith5442Thaith5443Thaith5444Thaith5445Thaith5446Thaith5447Thaith5448Thaith5449Thaith545Thaith5450Thaith5451Thaith5452Thaith5453Thaith5454Thaith5455Thaith5456Thaith5457Thaith5458Thaith5459Thaith546Thaith5460Thaith5461Thaith5462Thaith5463Thaith5464Thaith5465Thaith5466Thaith5467Thaith5468Thaith5469Thaith547Thaith5470Thaith5471Thaith5472Thaith5473Thaith5474Thaith5475Thaith5476Thaith5477Thaith5478Thaith5479Thaith548Thaith5480Thaith5481Thaith5482Thaith5483Thaith5484Thaith5485Thaith5486Thaith5487Thaith5488Thaith5489Thaith549Thaith5490Thaith5491Thaith5492Thaith5493Thaith5494Thaith5495Thaith5496Thaith5497Thaith5498Thaith5499Thaith55Thaith550Thaith5500Thaith5501Thaith5502Thaith5503Thaith5504Thaith5505Thaith5506Thaith5507Thaith5508Thaith5509Thaith551Thaith5510Thaith5511Thaith5512Thaith5513Thaith5514Thaith5515Thaith5516Thaith5517Thaith5518Thaith5519Thaith552Thaith5520Thaith5521Thaith5522Thaith5523Thaith5524Thaith5525Thaith5526Thaith5527Thaith5528Thaith5529Thaith553Thaith5530Thaith5531Thaith5532Thaith5533Thaith5534Thaith5535Thaith5536Thaith5537Thaith5538Thaith5539Thaith554Thaith5540Thaith5541Thaith5542Thaith5543Thaith5544Thaith5545Thaith5546Thaith5547Thaith5548Thaith5549Thaith555Thaith5550Thaith5551Thaith5552Thaith5553Thaith5554Thaith5555Thaith5556Thaith5557Thaith5558Thaith5559Thaith556Thaith5560Thaith5561Thaith5562Thaith5563Thaith5564Thaith5565Thaith5566Thaith5567Thaith5568Thaith5569Thaith557Thaith5570Thaith5571Thaith5572Thaith5573Thaith5574Thaith5575Thaith5576Thaith5577Thaith5578Thaith5579Thaith558Thaith5580Thaith5581Thaith5582Thaith5583Thaith5584Thaith5585Thaith5586Thaith5587Thaith5588Thaith5589Thaith559Thaith5590Thaith5591Thaith5592Thaith5593Thaith5594Thaith5595Thaith5596Thaith5597Thaith5598Thaith5599Thaith56Thaith560Thaith5600Thaith5601Thaith5602Thaith5603Thaith5604Thaith5605Thaith5606Thaith5607Thaith5608Thaith5609Thaith561Thaith5610Thaith5611Thaith5612Thaith5613Thaith5614Thaith5615Thaith5616Thaith5617Thaith5618Thaith5619Thaith562Thaith5620Thaith5621Thaith5622Thaith5623Thaith5624Thaith5625Thaith5626Thaith5627Thaith5628Thaith5629Thaith563Thaith5630Thaith5631Thaith5632Thaith5633Thaith5634Thaith5635Thaith5636Thaith5637Thaith5638Thaith5639Thaith564Thaith5640Thaith5641Thaith5642Thaith5643Thaith5644Thaith5645Thaith5646Thaith5647Thaith5648Thaith5649Thaith565Thaith5650Thaith5651Thaith5652Thaith5653Thaith5654Thaith5655Thaith5656Thaith5657Thaith5658Thaith5659Thaith566Thaith5660Thaith5661Thaith5662Thaith5663Thaith5664Thaith5665Thaith5666Thaith5667Thaith5668Thaith5669Thaith567Thaith5670Thaith5671Thaith5672Thaith5673Thaith5674Thaith5675Thaith5676Thaith5677Thaith5678Thaith5679Thaith568Thaith5680Thaith5681Thaith5682Thaith5683Thaith5684Thaith5685Thaith5686Thaith5687Thaith5688Thaith5689Thaith569Thaith5690Thaith5691Thaith5692Thaith5693Thaith5694Thaith5695Thaith5696Thaith5697Thaith5698Thaith5699Thaith57Thaith570Thaith5700Thaith5701Thaith5702Thaith5703Thaith5704Thaith5705Thaith5706Thaith5707Thaith5708Thaith5709Thaith571Thaith5710Thaith5711Thaith5712Thaith5713Thaith5714Thaith5715Thaith5716Thaith5717Thaith5718Thaith5719Thaith572Thaith5720Thaith5721Thaith5722Thaith5723Thaith5724Thaith5725Thaith5726Thaith5727Thaith5728Thaith5729Thaith573Thaith5730Thaith5731Thaith5732Thaith5733Thaith5734Thaith5735Thaith5736Thaith5737Thaith5738Thaith5739Thaith574Thaith5740Thaith5741Thaith5742Thaith5743Thaith5744Thaith5745Thaith5746Thaith5747Thaith5748Thaith5749Thaith575Thaith5750Thaith5751Thaith5752Thaith5753Thaith5754Thaith5755Thaith5756Thaith5757Thaith5758Thaith5759Thaith576Thaith5760Thaith5761Thaith5762Thaith5763Thaith5764Thaith5765Thaith5766Thaith5767Thaith5768Thaith5769Thaith577Thaith5770Thaith5771Thaith5772Thaith5773Thaith5774Thaith5775Thaith5776Thaith5777Thaith5778Thaith5779Thaith578Thaith5780Thaith5781Thaith5782Thaith5783Thaith5784Thaith5785Thaith5786Thaith5787Thaith5788Thaith5789Thaith579Thaith5790Thaith5791Thaith5792Thaith5793Thaith5794Thaith5795Thaith5796Thaith5797Thaith5798Thaith5799Thaith58Thaith580Thaith5800Thaith5801Thaith5802Thaith5803Thaith5804Thaith5805Thaith5806Thaith5807Thaith5808Thaith5809Thaith581Thaith5810Thaith5811Thaith5812Thaith5813Thaith5814Thaith5815Thaith5816Thaith5817Thaith5818Thaith5819Thaith582Thaith5820Thaith5821Thaith5822Thaith5823Thaith5824Thaith5825Thaith5826Thaith5827Thaith5828Thaith5829Thaith583Thaith5830Thaith5831Thaith5832Thaith5833Thaith5834Thaith5835Thaith5836Thaith5837Thaith5838Thaith5839Thaith584Thaith5840Thaith5841Thaith5842Thaith5843Thaith5844Thaith5845Thaith5846Thaith5847Thaith5848Thaith5849Thaith585Thaith5850Thaith5851Thaith5852Thaith5853Thaith5854Thaith5855Thaith5856Thaith5857Thaith5858Thaith5859Thaith586Thaith5860Thaith5861Thaith5862Thaith5863Thaith5864Thaith5865Thaith5866Thaith5867Thaith5868Thaith5869Thaith587Thaith5870Thaith5871Thaith5872Thaith5873Thaith5874Thaith5875Thaith5876Thaith5877Thaith5878Thaith5879Thaith588Thaith5880Thaith5881Thaith5882Thaith5883Thaith5884Thaith5885Thaith5886Thaith5887Thaith5888Thaith5889Thaith589Thaith5890Thaith5891Thaith5892Thaith5893Thaith5894Thaith5895Thaith5896Thaith5897Thaith5898Thaith5899Thaith59Thaith590Thaith5900Thaith5901Thaith5902Thaith5903Thaith5904Thaith5905Thaith5906Thaith5907Thaith5908Thaith5909Thaith591Thaith5910Thaith5911Thaith5912Thaith5913Thaith5914Thaith5915Thaith5916Thaith5917Thaith5918Thaith5919Thaith592Thaith5920Thaith5921Thaith5922Thaith5923Thaith5924Thaith5925Thaith5926Thaith5927Thaith5928Thaith5929Thaith593Thaith5930Thaith5931Thaith5932Thaith5933Thaith5934Thaith5935Thaith5936Thaith5937Thaith5938Thaith5939Thaith594Thaith5940Thaith5941Thaith5942Thaith5943Thaith5944Thaith5945Thaith5946Thaith5947Thaith5948Thaith5949Thaith595Thaith5950Thaith5951Thaith5952Thaith5953Thaith5954Thaith5955Thaith5956Thaith5957Thaith5958Thaith5959Thaith596Thaith5960Thaith5961Thaith5962Thaith5963Thaith5964Thaith5965Thaith5966Thaith5967Thaith5968Thaith5969Thaith597Thaith5970Thaith5971Thaith5972Thaith5973Thaith5974Thaith5975Thaith5976Thaith5977Thaith5978Thaith5979Thaith598Thaith5980Thaith5981Thaith5982Thaith5983Thaith5984Thaith5985Thaith5986Thaith5987Thaith5988Thaith5989Thaith599Thaith5990Thaith5991Thaith5992Thaith5993Thaith5994Thaith5995Thaith5996Thaith5997Thaith5998Thaith5999Thaith6Thaith60Thaith600Thaith6000Thaith6001Thaith6002Thaith6003Thaith6004Thaith6005Thaith6006Thaith6007Thaith6008Thaith6009Thaith601Thaith6010Thaith6011Thaith6012Thaith6013Thaith6014Thaith6015Thaith6016Thaith6017Thaith6018Thaith6019Thaith602Thaith6020Thaith6021Thaith6022Thaith6023Thaith6024Thaith6025Thaith6026Thaith6027Thaith6028Thaith6029Thaith603Thaith6030Thaith6031Thaith6032Thaith6033Thaith6034Thaith6035Thaith6036Thaith6037Thaith6038Thaith6039Thaith604Thaith6040Thaith6041Thaith6042Thaith6043Thaith6044Thaith6045Thaith6046Thaith6047Thaith6048Thaith6049Thaith605Thaith6050Thaith6051Thaith6052Thaith6053Thaith6054Thaith6055Thaith6056Thaith6057Thaith6058Thaith6059Thaith606Thaith6060Thaith6061Thaith6062Thaith6063Thaith6064Thaith6065Thaith6066Thaith6067Thaith6068Thaith6069Thaith607Thaith6070Thaith6071Thaith6072Thaith6073Thaith6074Thaith6075Thaith6076Thaith6077Thaith6078Thaith6079Thaith608Thaith6080Thaith6081Thaith6082Thaith6083Thaith6084Thaith6085Thaith6086Thaith6087Thaith6088Thaith6089Thaith609Thaith6090Thaith6091Thaith6092Thaith6093Thaith6094Thaith6095Thaith6096Thaith6097Thaith6098Thaith6099Thaith61Thaith610Thaith6100Thaith6101Thaith6102Thaith6103Thaith6104Thaith6105Thaith6106Thaith6107Thaith6108Thaith6109Thaith611Thaith6110Thaith6111Thaith6112Thaith6113Thaith6114Thaith6115Thaith6116Thaith6117Thaith6118Thaith6119Thaith612Thaith6120Thaith6121Thaith6122Thaith6123Thaith6124Thaith6125Thaith6126Thaith6127Thaith6128Thaith6129Thaith613Thaith6130Thaith6131Thaith6132Thaith6133Thaith6134Thaith6135Thaith6136Thaith6137Thaith6138Thaith6139Thaith614Thaith6140Thaith6141Thaith6142Thaith6143Thaith6144Thaith6145Thaith6146Thaith6147Thaith6148Thaith6149Thaith615Thaith6150Thaith6151Thaith6152Thaith6153Thaith6154Thaith6155Thaith6156Thaith6157Thaith6158Thaith6159Thaith616Thaith6160Thaith6161Thaith6162Thaith6163Thaith6164Thaith6165Thaith6166Thaith6167Thaith6168Thaith6169Thaith617Thaith6170Thaith6171Thaith6172Thaith6173Thaith6174Thaith6175Thaith6176Thaith6177Thaith6178Thaith6179Thaith618Thaith6180Thaith6181Thaith6182Thaith6183Thaith6184Thaith6185Thaith6186Thaith6187Thaith6188Thaith6189Thaith619Thaith6190Thaith6191Thaith6192Thaith6193Thaith6194Thaith6195Thaith6196Thaith6197Thaith6198Thaith6199Thaith62Thaith620Thaith6200Thaith6201Thaith6202Thaith6203Thaith6204Thaith6205Thaith6206Thaith6207Thaith6208Thaith6209Thaith621Thaith6210Thaith6211Thaith6212Thaith6213Thaith6214Thaith6215Thaith6216Thaith6217Thaith6218Thaith6219Thaith622Thaith6220Thaith6221Thaith6222Thaith6223Thaith6224Thaith6225Thaith6226Thaith6227Thaith6228Thaith6229Thaith623Thaith6230Thaith6231Thaith6232Thaith6233Thaith6234Thaith6235Thaith6236Thaith6237Thaith6238Thaith6239Thaith624Thaith6240Thaith6241Thaith6242Thaith6243Thaith6244Thaith6245Thaith6246Thaith6247Thaith6248Thaith6249Thaith625Thaith6250Thaith6251Thaith6252Thaith6253Thaith6254Thaith6255Thaith6256Thaith6257Thaith6258Thaith6259Thaith626Thaith6260Thaith6261Thaith6262Thaith6263Thaith6264Thaith6265Thaith6266Thaith6267Thaith6268Thaith6269Thaith627Thaith6270Thaith6271Thaith6272Thaith6273Thaith6274Thaith6275Thaith6276Thaith6277Thaith6278Thaith6279Thaith628Thaith6280Thaith6281Thaith6282Thaith6283Thaith6284Thaith6285Thaith6286Thaith6287Thaith6288Thaith6289Thaith629Thaith6290Thaith6291Thaith6292Thaith6293Thaith6294Thaith6295Thaith6296Thaith6297Thaith6298Thaith6299Thaith63Thaith630Thaith6300Thaith6301Thaith6302Thaith6303Thaith6304Thaith6305Thaith6306Thaith6307Thaith6308Thaith6309Thaith631Thaith6310Thaith6311Thaith6312Thaith6313Thaith6314Thaith6315Thaith6316Thaith6317Thaith6318Thaith6319Thaith632Thaith6320Thaith6321Thaith6322Thaith6323Thaith6324Thaith6325Thaith6326Thaith6327Thaith6328Thaith6329Thaith633Thaith6330Thaith6331Thaith6332Thaith6333Thaith6334Thaith6335Thaith6336Thaith6337Thaith6338Thaith6339Thaith634Thaith6340Thaith6341Thaith6342Thaith6343Thaith6344Thaith6345Thaith6346Thaith6347Thaith6348Thaith6349Thaith635Thaith6350Thaith6351Thaith6352Thaith6353Thaith6354Thaith6355Thaith6356Thaith6357Thaith6358Thaith6359Thaith636Thaith6360Thaith6361Thaith6362Thaith6363Thaith6364Thaith6365Thaith6366Thaith6367Thaith6368Thaith6369Thaith637Thaith6370Thaith6371Thaith6372Thaith6373Thaith6374Thaith6375Thaith6376Thaith6377Thaith6378Thaith6379Thaith638Thaith6380Thaith6381Thaith6382Thaith6383Thaith6384Thaith6385Thaith6386Thaith6387Thaith6388Thaith6389Thaith639Thaith6390Thaith6391Thaith6392Thaith6393Thaith6394Thaith6395Thaith6396Thaith6397Thaith6398Thaith6399Thaith64Thaith640Thaith6400Thaith6401Thaith6402Thaith6403Thaith6404Thaith6405Thaith6406Thaith6407Thaith6408Thaith6409Thaith641Thaith6410Thaith6411Thaith6412Thaith6413Thaith6414Thaith6415Thaith6416Thaith6417Thaith6418Thaith6419Thaith642Thaith6420Thaith6421Thaith6422Thaith6423Thaith6424Thaith6425Thaith6426Thaith6427Thaith6428Thaith6429Thaith643Thaith6430Thaith6431Thaith6432Thaith6433Thaith6434Thaith6435Thaith6436Thaith6437Thaith6438Thaith6439Thaith644Thaith6440Thaith6441Thaith6442Thaith6443Thaith6444Thaith6445Thaith6446Thaith6447Thaith6448Thaith6449Thaith645Thaith6450Thaith6451Thaith6452Thaith6453Thaith6454Thaith6455Thaith6456Thaith6457Thaith6458Thaith6459Thaith646Thaith6460Thaith6461Thaith6462Thaith6463Thaith6464Thaith6465Thaith6466Thaith6467Thaith6468Thaith6469Thaith647Thaith6470Thaith6471Thaith6472Thaith6473Thaith6474Thaith6475Thaith6476Thaith6477Thaith6478Thaith6479Thaith648Thaith6480Thaith6481Thaith6482Thaith6483Thaith6484Thaith6485Thaith6486Thaith6487Thaith6488Thaith6489Thaith649Thaith6490Thaith6491Thaith6492Thaith6493Thaith6494Thaith6495Thaith6496Thaith6497Thaith6498Thaith6499Thaith65Thaith650Thaith6500Thaith6501Thaith6502Thaith6503Thaith6504Thaith6505Thaith6506Thaith6507Thaith6508Thaith6509Thaith651Thaith6510Thaith6511Thaith6512Thaith6513Thaith6514Thaith6515Thaith6516Thaith6517Thaith6518Thaith6519Thaith652Thaith6520Thaith6521Thaith6522Thaith6523Thaith6524Thaith6525Thaith6526Thaith6527Thaith6528Thaith6529Thaith653Thaith6530Thaith6531Thaith6532Thaith6533Thaith6534Thaith6535Thaith6536Thaith6537Thaith6538Thaith6539Thaith654Thaith6540Thaith6541Thaith6542Thaith6543Thaith6544Thaith6545Thaith6546Thaith6547Thaith6548Thaith6549Thaith655Thaith6550Thaith6551Thaith6552Thaith6553Thaith6554Thaith6555Thaith6556Thaith6557Thaith6558Thaith6559Thaith656Thaith6560Thaith6561Thaith6562Thaith6563Thaith6564Thaith6565Thaith6566Thaith6567Thaith6568Thaith6569Thaith657Thaith6570Thaith6571Thaith6572Thaith6573Thaith6574Thaith6575Thaith6576Thaith6577Thaith6578Thaith6579Thaith658Thaith6580Thaith6581Thaith6582Thaith6583Thaith6584Thaith6585Thaith6586Thaith6587Thaith6588Thaith6589Thaith659Thaith6590Thaith6591Thaith6592Thaith6593Thaith6594Thaith6595Thaith6596Thaith6597Thaith6598Thaith6599Thaith66Thaith660Thaith6600Thaith6601Thaith6602Thaith6603Thaith6604Thaith6605Thaith6606Thaith6607Thaith6608Thaith6609Thaith661Thaith6610Thaith6611Thaith6612Thaith6613Thaith6614Thaith6615Thaith6616Thaith6617Thaith6618Thaith6619Thaith662Thaith6620Thaith6621Thaith6622Thaith6623Thaith6624Thaith6625Thaith6626Thaith6627Thaith6628Thaith6629Thaith663Thaith6630Thaith6631Thaith6632Thaith6633Thaith6634Thaith6635Thaith6636Thaith6637Thaith6638Thaith6639Thaith664Thaith6640Thaith6641Thaith6642Thaith6643Thaith6644Thaith6645Thaith6646Thaith6647Thaith6648Thaith6649Thaith665Thaith6650Thaith6651Thaith6652Thaith6653Thaith6654Thaith6655Thaith6656Thaith6657Thaith6658Thaith6659Thaith666Thaith6660Thaith6661Thaith6662Thaith6663Thaith6664Thaith6665Thaith6666Thaith6667Thaith6668Thaith6669Thaith667Thaith6670Thaith6671Thaith6672Thaith6673Thaith6674Thaith6675Thaith6676Thaith6677Thaith6678Thaith6679Thaith668Thaith6680Thaith6681Thaith6682Thaith6683Thaith6684Thaith6685Thaith6686Thaith6687Thaith6688Thaith6689Thaith669Thaith6690Thaith6691Thaith6692Thaith6693Thaith6694Thaith6695Thaith6696Thaith6697Thaith6698Thaith6699Thaith67Thaith670Thaith6700Thaith6701Thaith6702Thaith6703Thaith6704Thaith6705Thaith6706Thaith6707Thaith6708Thaith6709Thaith671Thaith6710Thaith6711Thaith6712Thaith6713Thaith6714Thaith6715Thaith6716Thaith6717Thaith6718Thaith6719Thaith672Thaith6720Thaith6721Thaith6722Thaith6723Thaith6724Thaith6725Thaith6726Thaith6727Thaith6728Thaith6729Thaith673Thaith6730Thaith6731Thaith6732Thaith6733Thaith6734Thaith6735Thaith6736Thaith6737Thaith6738Thaith6739Thaith674Thaith6740Thaith6741Thaith6742Thaith6743Thaith6744Thaith6745Thaith6746Thaith6747Thaith6748Thaith6749Thaith675Thaith6750Thaith6751Thaith6752Thaith6753Thaith6754Thaith6755Thaith6756Thaith6757Thaith6758Thaith6759Thaith676Thaith6760Thaith6761Thaith6762Thaith6763Thaith6764Thaith6765Thaith6766Thaith6767Thaith6768Thaith6769Thaith677Thaith6770Thaith6771Thaith6772Thaith6773Thaith6774Thaith6775Thaith6776Thaith6777Thaith6778Thaith6779Thaith678Thaith6780Thaith6781Thaith6782Thaith6783Thaith6784Thaith6785Thaith6786Thaith6787Thaith6788Thaith6789Thaith679Thaith6790Thaith6791Thaith6792Thaith6793Thaith6794Thaith6795Thaith6796Thaith6797Thaith6798Thaith6799Thaith68Thaith680Thaith6800Thaith6801Thaith6802Thaith6803Thaith6804Thaith6805Thaith6806Thaith6807Thaith6808Thaith6809Thaith681Thaith6810Thaith6811Thaith6812Thaith6813Thaith6814Thaith6815Thaith6816Thaith6817Thaith6818Thaith6819Thaith682Thaith6820Thaith6821Thaith6822Thaith6823Thaith6824Thaith6825Thaith6826Thaith6827Thaith6828Thaith6829Thaith683Thaith6830Thaith6831Thaith6832Thaith6833Thaith6834Thaith6835Thaith6836Thaith6837Thaith6838Thaith6839Thaith684Thaith6840Thaith6841Thaith6842Thaith6843Thaith6844Thaith6845Thaith6846Thaith6847Thaith6848Thaith6849Thaith685Thaith6850Thaith6851Thaith6852Thaith6853Thaith6854Thaith6855Thaith6856Thaith6857Thaith6858Thaith6859Thaith686Thaith6860Thaith6861Thaith6862Thaith6863Thaith6864Thaith6865Thaith6866Thaith6867Thaith6868Thaith6869Thaith687Thaith6870Thaith6871Thaith6872Thaith6873Thaith6874Thaith6875Thaith6876Thaith6877Thaith6878Thaith6879Thaith688Thaith6880Thaith6881Thaith6882Thaith6883Thaith6884Thaith6885Thaith6886Thaith6887Thaith6888Thaith6889Thaith689Thaith6890Thaith6891Thaith6892Thaith6893Thaith6894Thaith6895Thaith6896Thaith6897Thaith6898Thaith6899Thaith69Thaith690Thaith6900Thaith6901Thaith6902Thaith6903Thaith6904Thaith6905Thaith6906Thaith6907Thaith6908Thaith6909Thaith691Thaith6910Thaith6911Thaith6912Thaith6913Thaith6914Thaith6915Thaith6916Thaith6917Thaith6918Thaith6919Thaith692Thaith6920Thaith6921Thaith6922Thaith6923Thaith6924Thaith6925Thaith6926Thaith6927Thaith6928Thaith6929Thaith693Thaith6930Thaith6931Thaith6932Thaith6933Thaith6934Thaith6935Thaith6936Thaith6937Thaith6938Thaith6939Thaith694Thaith6940Thaith6941Thaith6942Thaith6943Thaith6944Thaith6945Thaith6946Thaith6947Thaith6948Thaith6949Thaith695Thaith6950Thaith6951Thaith6952Thaith6953Thaith6954Thaith6955Thaith6956Thaith6957Thaith6958Thaith6959Thaith696Thaith6960Thaith6961Thaith6962Thaith6963Thaith6964Thaith6965Thaith6966Thaith6967Thaith6968Thaith6969Thaith697Thaith6970Thaith6971Thaith6972Thaith6973Thaith6974Thaith6975Thaith6976Thaith6977Thaith6978Thaith6979Thaith698Thaith6980Thaith6981Thaith6982Thaith6983Thaith6984Thaith6985Thaith6986Thaith6987Thaith6988Thaith6989Thaith699Thaith6990Thaith6991Thaith6992Thaith6993Thaith6994Thaith6995Thaith6996Thaith6997Thaith6998Thaith6999Thaith7Thaith70Thaith700Thaith7000Thaith7001Thaith7002Thaith7003Thaith7004Thaith7005Thaith7006Thaith7007Thaith7008Thaith7009Thaith701Thaith7010Thaith7011Thaith7012Thaith7013Thaith7014Thaith7015Thaith7016Thaith7017Thaith7018Thaith7019Thaith702Thaith7020Thaith7021Thaith7022Thaith7023Thaith7024Thaith7025Thaith7026Thaith7027Thaith7028Thaith7029Thaith703Thaith7030Thaith7031Thaith7032Thaith7033Thaith7034Thaith7035Thaith7036Thaith7037Thaith7038Thaith7039Thaith704Thaith7040Thaith7041Thaith7042Thaith7043Thaith7044Thaith7045Thaith7046Thaith7047Thaith7048Thaith7049Thaith705Thaith7050Thaith7051Thaith7052Thaith7053Thaith7054Thaith7055Thaith7056Thaith7057Thaith7058Thaith7059Thaith706Thaith7060Thaith7061Thaith7062Thaith7063Thaith7064Thaith7065Thaith7066Thaith7067Thaith7068Thaith7069Thaith707Thaith7070Thaith7071Thaith7072Thaith7073Thaith7074Thaith7075Thaith7076Thaith7077Thaith7078Thaith7079Thaith708Thaith7080Thaith7081Thaith7082Thaith7083Thaith7084Thaith7085Thaith7086Thaith7087Thaith7088Thaith7089Thaith709Thaith7090Thaith7091Thaith7092Thaith7093Thaith7094Thaith7095Thaith7096Thaith7097Thaith7098Thaith7099Thaith71Thaith710Thaith7100Thaith7101Thaith7102Thaith7103Thaith7104Thaith7105Thaith7106Thaith7107Thaith7108Thaith7109Thaith711Thaith7110Thaith7111Thaith7112Thaith7113Thaith7114Thaith7115Thaith7116Thaith7117Thaith7118Thaith7119Thaith712Thaith7120Thaith7121Thaith7122Thaith7123Thaith7124Thaith7125Thaith7126Thaith7127Thaith7128Thaith7129Thaith713Thaith7130Thaith7131Thaith7132Thaith7133Thaith7134Thaith7135Thaith7136Thaith7137Thaith7138Thaith7139Thaith714Thaith7140Thaith7141Thaith7142Thaith7143Thaith7144Thaith7145Thaith7146Thaith7147Thaith7148Thaith7149Thaith715Thaith7150Thaith7151Thaith7152Thaith7153Thaith7154Thaith7155Thaith7156Thaith7157Thaith7158Thaith7159Thaith716Thaith7160Thaith7161Thaith7162Thaith7163Thaith7164Thaith7165Thaith7166Thaith7167Thaith7168Thaith7169Thaith717Thaith7170Thaith7171Thaith7172Thaith7173Thaith7174Thaith7175Thaith7176Thaith7177Thaith7178Thaith7179Thaith718Thaith7180Thaith7181Thaith7182Thaith7183Thaith7184Thaith7185Thaith7186Thaith7187Thaith7188Thaith7189Thaith719Thaith7190Thaith7191Thaith7192Thaith7193Thaith7194Thaith7195Thaith7196Thaith7197Thaith7198Thaith7199Thaith72Thaith720Thaith7200Thaith7201Thaith7202Thaith7203Thaith7204Thaith7205Thaith7206Thaith7207Thaith7208Thaith7209Thaith721Thaith7210Thaith7211Thaith7212Thaith7213Thaith7214Thaith7215Thaith7216Thaith7217Thaith7218Thaith7219Thaith722Thaith7220Thaith7221Thaith7222Thaith7223Thaith7224Thaith7225Thaith7226Thaith7227Thaith7228Thaith7229Thaith723Thaith7230Thaith7231Thaith7232Thaith7233Thaith7234Thaith7235Thaith7236Thaith7237Thaith7238Thaith7239Thaith724Thaith7240Thaith7241Thaith7242Thaith7243Thaith7244Thaith7245Thaith7246Thaith7247Thaith7248Thaith7249Thaith725Thaith7250Thaith7251Thaith7252Thaith7253Thaith7254Thaith7255Thaith7256Thaith7257Thaith7258Thaith7259Thaith726Thaith7260Thaith7261Thaith7262Thaith7263Thaith7264Thaith7265Thaith7266Thaith7267Thaith7268Thaith7269Thaith727Thaith7270Thaith7271Thaith7272Thaith7273Thaith7274Thaith7275Thaith7276Thaith7277Thaith7278Thaith7279Thaith728Thaith7280Thaith7281Thaith7282Thaith7283Thaith7284Thaith7285Thaith7286Thaith7287Thaith7288Thaith7289Thaith729Thaith7290Thaith7291Thaith7292Thaith7293Thaith7294Thaith7295Thaith7296Thaith7297Thaith7298Thaith7299Thaith73Thaith730Thaith7300Thaith7301Thaith7302Thaith7303Thaith7304Thaith7305Thaith7306Thaith7307Thaith7308Thaith7309Thaith731Thaith7310Thaith7311Thaith7312Thaith7313Thaith7314Thaith7315Thaith7316Thaith7317Thaith7318Thaith7319Thaith732Thaith7320Thaith7321Thaith7322Thaith7323Thaith7324Thaith7325Thaith7326Thaith7327Thaith7328Thaith7329Thaith733Thaith7330Thaith7331Thaith7332Thaith7333Thaith7334Thaith7335Thaith7336Thaith7337Thaith7338Thaith7339Thaith734Thaith7340Thaith7341Thaith7342Thaith7343Thaith7344Thaith7345Thaith7346Thaith7347Thaith7348Thaith7349Thaith735Thaith7350Thaith7351Thaith7352Thaith7353Thaith7354Thaith7355Thaith7356Thaith7357Thaith7358Thaith7359Thaith736Thaith7360Thaith7361Thaith7362Thaith7363Thaith7364Thaith7365Thaith7366Thaith7367Thaith7368Thaith7369Thaith737Thaith7370Thaith7371Thaith7372Thaith7373Thaith7374Thaith7375Thaith7376Thaith7377Thaith7378Thaith7379Thaith738Thaith7380Thaith7381Thaith7382Thaith7383Thaith7384Thaith7385Thaith7386Thaith7387Thaith7388Thaith7389Thaith739Thaith7390Thaith7391Thaith7392Thaith7393Thaith7394Thaith7395Thaith7396Thaith7397Thaith7398Thaith7399Thaith74Thaith740Thaith7400Thaith7401Thaith7402Thaith7403Thaith7404Thaith7405Thaith7406Thaith7407Thaith7408Thaith7409Thaith741Thaith7410Thaith7411Thaith7412Thaith7413Thaith7414Thaith7415Thaith7416Thaith7417Thaith7418Thaith7419Thaith742Thaith7420Thaith7421Thaith7422Thaith7423Thaith7424Thaith7425Thaith7426Thaith7427Thaith7428Thaith7429Thaith743Thaith7430Thaith7431Thaith7432Thaith7433Thaith7434Thaith7435Thaith7436Thaith7437Thaith7438Thaith7439Thaith744Thaith7440Thaith7441Thaith7442Thaith7443Thaith7444Thaith7445Thaith7446Thaith7447Thaith7448Thaith7449Thaith745Thaith7450Thaith7451Thaith7452Thaith7453Thaith7454Thaith7455Thaith7456Thaith7457Thaith7458Thaith7459Thaith746Thaith7460Thaith7461Thaith7462Thaith7463Thaith7464Thaith7465Thaith7466Thaith7467Thaith7468Thaith7469Thaith747Thaith7470Thaith7471Thaith7472Thaith7473Thaith7474Thaith7475Thaith7476Thaith7477Thaith7478Thaith7479Thaith748Thaith7480Thaith7481Thaith7482Thaith7483Thaith7484Thaith7485Thaith7486Thaith7487Thaith7488Thaith7489Thaith749Thaith7490Thaith7491Thaith7492Thaith7493Thaith7494Thaith7495Thaith7496Thaith7497Thaith7498Thaith7499Thaith75Thaith750Thaith7500Thaith7501Thaith7502Thaith7503Thaith7504Thaith7505Thaith7506Thaith7507Thaith7508Thaith7509Thaith751Thaith7510Thaith7511Thaith7512Thaith7513Thaith7514Thaith7515Thaith7516Thaith7517Thaith7518Thaith7519Thaith752Thaith7520Thaith7521Thaith7522Thaith7523Thaith7524Thaith7525Thaith7526Thaith7527Thaith7528Thaith7529Thaith753Thaith7530Thaith7531Thaith7532Thaith7533Thaith7534Thaith7535Thaith7536Thaith7537Thaith7538Thaith7539Thaith754Thaith7540Thaith7541Thaith7542Thaith7543Thaith7544Thaith7545Thaith7546Thaith7547Thaith7548Thaith7549Thaith755Thaith7550Thaith7551Thaith7552Thaith7553Thaith7554Thaith7555Thaith7556Thaith7557Thaith7558Thaith7559Thaith756Thaith7560Thaith7561Thaith7562Thaith7563Thaith7564Thaith7565Thaith7566Thaith7567Thaith7568Thaith7569Thaith757Thaith7570Thaith7571Thaith7572Thaith7573Thaith7574Thaith7575Thaith7576Thaith7577Thaith7578Thaith7579Thaith758Thaith7580Thaith7581Thaith7582Thaith7583Thaith7584Thaith7585Thaith7586Thaith7587Thaith7588Thaith7589Thaith759Thaith7590Thaith7591Thaith7592Thaith7593Thaith7594Thaith7595Thaith7596Thaith7597Thaith7598Thaith7599Thaith76Thaith760Thaith7600Thaith7601Thaith7602Thaith7603Thaith7604Thaith7605Thaith7606Thaith7607Thaith7608Thaith7609Thaith761Thaith7610Thaith7611Thaith7612Thaith7613Thaith7614Thaith7615Thaith7616Thaith7617Thaith7618Thaith7619Thaith762Thaith7620Thaith7621Thaith7622Thaith7623Thaith7624Thaith7625Thaith7626Thaith7627Thaith7628Thaith7629Thaith763Thaith7630Thaith7631Thaith7632Thaith7633Thaith7634Thaith7635Thaith7636Thaith7637Thaith7638Thaith7639Thaith764Thaith7640Thaith7641Thaith7642Thaith7643Thaith7644Thaith7645Thaith7646Thaith7647Thaith7648Thaith7649Thaith765Thaith7650Thaith7651Thaith7652Thaith7653Thaith7654Thaith7655Thaith7656Thaith7657Thaith7658Thaith7659Thaith766Thaith7660Thaith7661Thaith7662Thaith7663Thaith7664Thaith7665Thaith7666Thaith7667Thaith7668Thaith7669Thaith767Thaith7670Thaith7671Thaith7672Thaith7673Thaith7674Thaith7675Thaith7676Thaith7677Thaith7678Thaith7679Thaith768Thaith7680Thaith7681Thaith7682Thaith7683Thaith7684Thaith7685Thaith7686Thaith7687Thaith7688Thaith7689Thaith769Thaith7690Thaith7691Thaith7692Thaith7693Thaith7694Thaith7695Thaith7696Thaith7697Thaith7698Thaith7699Thaith77Thaith770Thaith7700Thaith7701Thaith7702Thaith7703Thaith7704Thaith7705Thaith7706Thaith7707Thaith7708Thaith7709Thaith771Thaith7710Thaith7711Thaith7712Thaith7713Thaith7714Thaith7715Thaith7716Thaith7717Thaith7718Thaith7719Thaith772Thaith7720Thaith7721Thaith7722Thaith7723Thaith7724Thaith7725Thaith7726Thaith7727Thaith7728Thaith7729Thaith773Thaith7730Thaith7731Thaith7732Thaith7733Thaith7734Thaith7735Thaith7736Thaith7737Thaith7738Thaith7739Thaith774Thaith7740Thaith7741Thaith7742Thaith7743Thaith7744Thaith7745Thaith7746Thaith7747Thaith7748Thaith7749Thaith775Thaith7750Thaith7751Thaith7752Thaith7753Thaith7754Thaith7755Thaith7756Thaith7757Thaith7758Thaith7759Thaith776Thaith7760Thaith7761Thaith7762Thaith7763Thaith7764Thaith7765Thaith7766Thaith7767Thaith7768Thaith7769Thaith777Thaith7770Thaith7771Thaith7772Thaith7773Thaith7774Thaith7775Thaith7776Thaith7777Thaith7778Thaith7779Thaith778Thaith7780Thaith7781Thaith7782Thaith7783Thaith7784Thaith7785Thaith7786Thaith7787Thaith7788Thaith7789Thaith779Thaith7790Thaith7791Thaith7792Thaith7793Thaith7794Thaith7795Thaith7796Thaith7797Thaith7798Thaith7799Thaith78Thaith780Thaith7800Thaith7801Thaith7802Thaith7803Thaith7804Thaith7805Thaith7806Thaith7807Thaith7808Thaith7809Thaith781Thaith7810Thaith7811Thaith7812Thaith7813Thaith7814Thaith7815Thaith7816Thaith7817Thaith7818Thaith7819Thaith782Thaith7820Thaith7821Thaith7822Thaith7823Thaith7824Thaith7825Thaith7826Thaith7827Thaith7828Thaith7829Thaith783Thaith7830Thaith7831Thaith7832Thaith7833Thaith7834Thaith7835Thaith7836Thaith7837Thaith7838Thaith7839Thaith784Thaith7840Thaith7841Thaith7842Thaith7843Thaith7844Thaith7845Thaith7846Thaith7847Thaith7848Thaith7849Thaith785Thaith7850Thaith7851Thaith7852Thaith7853Thaith7854Thaith7855Thaith7856Thaith7857Thaith7858Thaith7859Thaith786Thaith7860Thaith7861Thaith7862Thaith7863Thaith7864Thaith7865Thaith7866Thaith7867Thaith7868Thaith7869Thaith787Thaith7870Thaith7871Thaith7872Thaith7873Thaith7874Thaith7875Thaith7876Thaith7877Thaith7878Thaith7879Thaith788Thaith7880Thaith7881Thaith7882Thaith7883Thaith7884Thaith7885Thaith7886Thaith7887Thaith7888Thaith7889Thaith789Thaith7890Thaith7891Thaith7892Thaith7893Thaith7894Thaith7895Thaith7896Thaith7897Thaith7898Thaith7899Thaith79Thaith790Thaith7900Thaith7901Thaith7902Thaith7903Thaith7904Thaith7905Thaith7906Thaith7907Thaith7908Thaith7909Thaith791Thaith7910Thaith7911Thaith7912Thaith7913Thaith7914Thaith7915Thaith7916Thaith7917Thaith7918Thaith7919Thaith792Thaith7920Thaith7921Thaith7922Thaith7923Thaith7924Thaith7925Thaith7926Thaith7927Thaith7928Thaith7929Thaith793Thaith7930Thaith7931Thaith7932Thaith7933Thaith7934Thaith7935Thaith7936Thaith7937Thaith7938Thaith7939Thaith794Thaith7940Thaith7941Thaith7942Thaith7943Thaith7944Thaith7945Thaith7946Thaith7947Thaith7948Thaith7949Thaith795Thaith7950Thaith7951Thaith7952Thaith7953Thaith7954Thaith7955Thaith7956Thaith7957Thaith7958Thaith7959Thaith796Thaith7960Thaith7961Thaith7962Thaith7963Thaith7964Thaith7965Thaith7966Thaith7967Thaith7968Thaith7969Thaith797Thaith7970Thaith7971Thaith7972Thaith7973Thaith7974Thaith7975Thaith7976Thaith7977Thaith7978Thaith7979Thaith798Thaith7980Thaith7981Thaith7982Thaith7983Thaith7984Thaith7985Thaith7986Thaith7987Thaith7988Thaith7989Thaith799Thaith7990Thaith7991Thaith7992Thaith7993Thaith7994Thaith7995Thaith7996Thaith7997Thaith7998Thaith7999Thaith8Thaith80Thaith800Thaith8000Thaith8001Thaith8002Thaith8003Thaith8004Thaith8005Thaith8006Thaith8007Thaith8008Thaith8009Thaith801Thaith8010Thaith8011Thaith8012Thaith8013Thaith8014Thaith8015Thaith8016Thaith8017Thaith8018Thaith8019Thaith802Thaith8020Thaith8021Thaith8022Thaith8023Thaith8024Thaith8025Thaith8026Thaith8027Thaith8028Thaith8029Thaith803Thaith8030Thaith8031Thaith8032Thaith8033Thaith8034Thaith8035Thaith8036Thaith8037Thaith8038Thaith8039Thaith804Thaith8040Thaith8041Thaith8042Thaith8043Thaith8044Thaith8045Thaith8046Thaith8047Thaith8048Thaith8049Thaith805Thaith8050Thaith8051Thaith8052Thaith8053Thaith8054Thaith8055Thaith8056Thaith8057Thaith8058Thaith8059Thaith806Thaith8060Thaith8061Thaith8062Thaith8063Thaith8064Thaith8065Thaith8066Thaith8067Thaith8068Thaith8069Thaith807Thaith8070Thaith8071Thaith8072Thaith8073Thaith8074Thaith8075Thaith8076Thaith8077Thaith8078Thaith8079Thaith808Thaith8080Thaith8081Thaith8082Thaith8083Thaith8084Thaith8085Thaith8086Thaith8087Thaith8088Thaith8089Thaith809Thaith8090Thaith8091Thaith8092Thaith8093Thaith8094Thaith8095Thaith8096Thaith8097Thaith8098Thaith8099Thaith81Thaith810Thaith8100Thaith8101Thaith8102Thaith8103Thaith8104Thaith8105Thaith8106Thaith8107Thaith8108Thaith8109Thaith811Thaith8110Thaith8111Thaith8112Thaith8113Thaith8114Thaith8115Thaith8116Thaith8117Thaith8118Thaith8119Thaith812Thaith8120Thaith8121Thaith8122Thaith8123Thaith8124Thaith8125Thaith8126Thaith8127Thaith8128Thaith8129Thaith813Thaith8130Thaith8131Thaith8132Thaith8133Thaith8134Thaith8135Thaith8136Thaith8137Thaith8138Thaith8139Thaith814Thaith8140Thaith8141Thaith8142Thaith8143Thaith8144Thaith8145Thaith8146Thaith8147Thaith8148Thaith8149Thaith815Thaith8150Thaith8151Thaith8152Thaith8153Thaith8154Thaith8155Thaith8156Thaith8157Thaith8158Thaith8159Thaith816Thaith8160Thaith8161Thaith8162Thaith8163Thaith8164Thaith8165Thaith8166Thaith8167Thaith8168Thaith8169Thaith817Thaith8170Thaith8171Thaith8172Thaith8173Thaith8174Thaith8175Thaith8176Thaith8177Thaith8178Thaith8179Thaith818Thaith8180Thaith8181Thaith8182Thaith8183Thaith8184Thaith8185Thaith8186Thaith8187Thaith8188Thaith8189Thaith819Thaith8190Thaith8191Thaith82Thaith820Thaith821Thaith822Thaith823Thaith824Thaith825Thaith826Thaith827Thaith828Thaith829Thaith83Thaith830Thaith831Thaith832Thaith833Thaith834Thaith835Thaith836Thaith837Thaith838Thaith839Thaith84Thaith840Thaith841Thaith842Thaith843Thaith844Thaith845Thaith846Thaith847Thaith848Thaith849Thaith85Thaith850Thaith851Thaith852Thaith853Thaith854Thaith855Thaith856Thaith857Thaith858Thaith859Thaith86Thaith860Thaith861Thaith862Thaith863Thaith864Thaith865Thaith866Thaith867Thaith868Thaith869Thaith87Thaith870Thaith871Thaith872Thaith873Thaith874Thaith875Thaith876Thaith877Thaith878Thaith879Thaith88Thaith880Thaith881Thaith882Thaith883Thaith884Thaith885Thaith886Thaith887Thaith888Thaith889Thaith89Thaith890Thaith891Thaith892Thaith893Thaith894Thaith895Thaith896Thaith897Thaith898Thaith899Thaith9Thaith90Thaith900Thaith901Thaith902Thaith903Thaith904Thaith905Thaith906Thaith907Thaith908Thaith909Thaith91Thaith910Thaith911Thaith912Thaith913Thaith914Thaith915Thaith916Thaith917Thaith918Thaith919Thaith92Thaith920Thaith921Thaith922Thaith923Thaith924Thaith925Thaith926Thaith927Thaith928Thaith929Thaith93Thaith930Thaith931Thaith932Thaith933Thaith934Thaith935Thaith936Thaith937Thaith938Thaith939Thaith94Thaith940Thaith941Thaith942Thaith943Thaith944Thaith945Thaith946Thaith947Thaith948Thaith949Thaith95Thaith950Thaith951Thaith952Thaith953Thaith954Thaith955Thaith956Thaith957Thaith958Thaith959Thaith96Thaith960Thaith961Thaith962Thaith963Thaith964Thaith965Thaith966Thaith967Thaith968Thaith969Thaith97Thaith970Thaith971Thaith972Thaith973Thaith974Thaith975Thaith976Thaith977Thaith978Thaith979Thaith98Thaith980Thaith981Thaith982Thaith983Thaith984Thaith985Thaith986Thaith987Thaith988Thaith989Thaith99Thaith990Thaith991Thaith992Thaith993Thaith994Thaith995Thaith996Thaith997Thaith998Thaith999Thaitr0Turkishtr1Turkishtr10Turkishtr100Turkishtr1000Turkishtr1001Turkishtr1002Turkishtr1003Turkishtr1004Turkishtr1005Turkishtr1006Turkishtr1007Turkishtr1008Turkishtr1009Turkishtr101Turkishtr1010Turkishtr1011Turkishtr1012Turkishtr1013Turkishtr1014Turkishtr1015Turkishtr1016Turkishtr1017Turkishtr1018Turkishtr1019Turkishtr102Turkishtr1020Turkishtr1021Turkishtr1022Turkishtr1023Turkishtr1024Turkishtr1025Turkishtr1026Turkishtr1027Turkishtr1028Turkishtr1029Turkishtr103Turkishtr1030Turkishtr1031Turkishtr1032Turkishtr1033Turkishtr1034Turkishtr1035Turkishtr1036Turkishtr1037Turkishtr1038Turkishtr1039Turkishtr104Turkishtr1040Turkishtr1041Turkishtr1042Turkishtr1043Turkishtr1044Turkishtr1045Turkishtr1046Turkishtr1047Turkishtr1048Turkishtr1049Turkishtr105Turkishtr1050Turkishtr1051Turkishtr1052Turkishtr1053Turkishtr1054Turkishtr1055Turkishtr1056Turkishtr1057Turkishtr1058Turkishtr1059Turkishtr106Turkishtr1060Turkishtr1061Turkishtr1062Turkishtr1063Turkishtr1064Turkishtr1065Turkishtr1066Turkishtr1067Turkishtr1068Turkishtr1069Turkishtr107Turkishtr1070Turkishtr1071Turkishtr1072Turkishtr1073Turkishtr1074Turkishtr1075Turkishtr1076Turkishtr1077Turkishtr1078Turkishtr1079Turkishtr108Turkishtr1080Turkishtr1081Turkishtr1082Turkishtr1083Turkishtr1084Turkishtr1085Turkishtr1086Turkishtr1087Turkishtr1088Turkishtr1089Turkishtr109Turkishtr1090Turkishtr1091Turkishtr1092Turkishtr1093Turkishtr1094Turkishtr1095Turkishtr1096Turkishtr1097Turkishtr1098Turkishtr1099Turkishtr11Turkishtr110Turkishtr1100Turkishtr1101Turkishtr1102Turkishtr1103Turkishtr1104Turkishtr1105Turkishtr1106Turkishtr1107Turkishtr1108Turkishtr1109Turkishtr111Turkishtr1110Turkishtr1111Turkishtr1112Turkishtr1113Turkishtr1114Turkishtr1115Turkishtr1116Turkishtr1117Turkishtr1118Turkishtr1119Turkishtr112Turkishtr1120Turkishtr1121Turkishtr1122Turkishtr1123Turkishtr1124Turkishtr1125Turkishtr1126Turkishtr1127Turkishtr1128Turkishtr1129Turkishtr113Turkishtr1130Turkishtr1131Turkishtr1132Turkishtr1133Turkishtr1134Turkishtr1135Turkishtr1136Turkishtr1137Turkishtr1138Turkishtr1139Turkishtr114Turkishtr1140Turkishtr1141Turkishtr1142Turkishtr1143Turkishtr1144Turkishtr1145Turkishtr1146Turkishtr1147Turkishtr1148Turkishtr1149Turkishtr115Turkishtr1150Turkishtr1151Turkishtr1152Turkishtr1153Turkishtr1154Turkishtr1155Turkishtr1156Turkishtr1157Turkishtr1158Turkishtr1159Turkishtr116Turkishtr1160Turkishtr1161Turkishtr1162Turkishtr1163Turkishtr1164Turkishtr1165Turkishtr1166Turkishtr1167Turkishtr1168Turkishtr1169Turkishtr117Turkishtr1170Turkishtr1171Turkishtr1172Turkishtr1173Turkishtr1174Turkishtr1175Turkishtr1176Turkishtr1177Turkishtr1178Turkishtr1179Turkishtr118Turkishtr1180Turkishtr1181Turkishtr1182Turkishtr1183Turkishtr1184Turkishtr1185Turkishtr1186Turkishtr1187Turkishtr1188Turkishtr1189Turkishtr119Turkishtr1190Turkishtr1191Turkishtr1192Turkishtr1193Turkishtr1194Turkishtr1195Turkishtr1196Turkishtr1197Turkishtr1198Turkishtr1199Turkishtr12Turkishtr120Turkishtr1200Turkishtr1201Turkishtr1202Turkishtr1203Turkishtr1204Turkishtr1205Turkishtr1206Turkishtr1207Turkishtr1208Turkishtr1209Turkishtr121Turkishtr1210Turkishtr1211Turkishtr1212Turkishtr1213Turkishtr1214Turkishtr1215Turkishtr1216Turkishtr1217Turkishtr1218Turkishtr1219Turkishtr122Turkishtr1220Turkishtr1221Turkishtr1222Turkishtr1223Turkishtr1224Turkishtr1225Turkishtr1226Turkishtr1227Turkishtr1228Turkishtr1229Turkishtr123Turkishtr1230Turkishtr1231Turkishtr1232Turkishtr1233Turkishtr1234Turkishtr1235Turkishtr1236Turkishtr1237Turkishtr1238Turkishtr1239Turkishtr124Turkishtr1240Turkishtr1241Turkishtr1242Turkishtr1243Turkishtr1244Turkishtr1245Turkishtr1246Turkishtr1247Turkishtr1248Turkishtr1249Turkishtr125Turkishtr1250Turkishtr1251Turkishtr1252Turkishtr1253Turkishtr1254Turkishtr1255Turkishtr1256Turkishtr1257Turkishtr1258Turkishtr1259Turkishtr126Turkishtr1260Turkishtr1261Turkishtr1262Turkishtr1263Turkishtr1264Turkishtr1265Turkishtr1266Turkishtr1267Turkishtr1268Turkishtr1269Turkishtr127Turkishtr1270Turkishtr1271Turkishtr1272Turkishtr1273Turkishtr1274Turkishtr1275Turkishtr1276Turkishtr1277Turkishtr1278Turkishtr1279Turkishtr128Turkishtr1280Turkishtr1281Turkishtr1282Turkishtr1283Turkishtr1284Turkishtr1285Turkishtr1286Turkishtr1287Turkishtr1288Turkishtr1289Turkishtr129Turkishtr1290Turkishtr1291Turkishtr1292Turkishtr1293Turkishtr1294Turkishtr1295Turkishtr1296Turkishtr1297Turkishtr1298Turkishtr1299Turkishtr13Turkishtr130Turkishtr1300Turkishtr1301Turkishtr1302Turkishtr1303Turkishtr1304Turkishtr1305Turkishtr1306Turkishtr1307Turkishtr1308Turkishtr1309Turkishtr131Turkishtr1310Turkishtr1311Turkishtr1312Turkishtr1313Turkishtr1314Turkishtr1315Turkishtr1316Turkishtr1317Turkishtr1318Turkishtr1319Turkishtr132Turkishtr1320Turkishtr1321Turkishtr1322Turkishtr1323Turkishtr1324Turkishtr1325Turkishtr1326Turkishtr1327Turkishtr1328Turkishtr1329Turkishtr133Turkishtr1330Turkishtr1331Turkishtr1332Turkishtr1333Turkishtr1334Turkishtr1335Turkishtr1336Turkishtr1337Turkishtr1338Turkishtr1339Turkishtr134Turkishtr1340Turkishtr1341Turkishtr1342Turkishtr1343Turkishtr1344Turkishtr1345Turkishtr1346Turkishtr1347Turkishtr1348Turkishtr1349Turkishtr135Turkishtr1350Turkishtr1351Turkishtr1352Turkishtr1353Turkishtr1354Turkishtr1355Turkishtr1356Turkishtr1357Turkishtr1358Turkishtr1359Turkishtr136Turkishtr1360Turkishtr1361Turkishtr1362Turkishtr1363Turkishtr1364Turkishtr1365Turkishtr1366Turkishtr1367Turkishtr1368Turkishtr1369Turkishtr137Turkishtr1370Turkishtr1371Turkishtr1372Turkishtr1373Turkishtr1374Turkishtr1375Turkishtr1376Turkishtr1377Turkishtr1378Turkishtr1379Turkishtr138Turkishtr1380Turkishtr1381Turkishtr1382Turkishtr1383Turkishtr1384Turkishtr1385Turkishtr1386Turkishtr1387Turkishtr1388Turkishtr1389Turkishtr139Turkishtr1390Turkishtr1391Turkishtr1392Turkishtr1393Turkishtr1394Turkishtr1395Turkishtr1396Turkishtr1397Turkishtr1398Turkishtr1399Turkishtr14Turkishtr140Turkishtr1400Turkishtr1401Turkishtr1402Turkishtr1403Turkishtr1404Turkishtr1405Turkishtr1406Turkishtr1407Turkishtr1408Turkishtr1409Turkishtr141Turkishtr1410Turkishtr1411Turkishtr1412Turkishtr1413Turkishtr1414Turkishtr1415Turkishtr1416Turkishtr1417Turkishtr1418Turkishtr1419Turkishtr142Turkishtr1420Turkishtr1421Turkishtr1422Turkishtr1423Turkishtr1424Turkishtr1425Turkishtr1426Turkishtr1427Turkishtr1428Turkishtr1429Turkishtr143Turkishtr1430Turkishtr1431Turkishtr1432Turkishtr1433Turkishtr1434Turkishtr1435Turkishtr1436Turkishtr1437Turkishtr1438Turkishtr1439Turkishtr144Turkishtr1440Turkishtr1441Turkishtr1442Turkishtr1443Turkishtr1444Turkishtr1445Turkishtr1446Turkishtr1447Turkishtr1448Turkishtr1449Turkishtr145Turkishtr1450Turkishtr1451Turkishtr1452Turkishtr1453Turkishtr1454Turkishtr1455Turkishtr1456Turkishtr1457Turkishtr1458Turkishtr1459Turkishtr146Turkishtr1460Turkishtr1461Turkishtr1462Turkishtr1463Turkishtr1464Turkishtr1465Turkishtr1466Turkishtr1467Turkishtr1468Turkishtr1469Turkishtr147Turkishtr1470Turkishtr1471Turkishtr1472Turkishtr1473Turkishtr1474Turkishtr1475Turkishtr1476Turkishtr1477Turkishtr1478Turkishtr1479Turkishtr148Turkishtr1480Turkishtr1481Turkishtr1482Turkishtr1483Turkishtr1484Turkishtr1485Turkishtr1486Turkishtr1487Turkishtr1488Turkishtr1489Turkishtr149Turkishtr1490Turkishtr1491Turkishtr1492Turkishtr1493Turkishtr1494Turkishtr1495Turkishtr1496Turkishtr1497Turkishtr1498Turkishtr1499Turkishtr15Turkishtr150Turkishtr1500Turkishtr1501Turkishtr1502Turkishtr1503Turkishtr1504Turkishtr1505Turkishtr1506Turkishtr1507Turkishtr1508Turkishtr1509Turkishtr151Turkishtr1510Turkishtr1511Turkishtr1512Turkishtr1513Turkishtr1514Turkishtr1515Turkishtr1516Turkishtr1517Turkishtr1518Turkishtr1519Turkishtr152Turkishtr1520Turkishtr1521Turkishtr1522Turkishtr1523Turkishtr1524Turkishtr1525Turkishtr1526Turkishtr1527Turkishtr1528Turkishtr1529Turkishtr153Turkishtr1530Turkishtr1531Turkishtr1532Turkishtr1533Turkishtr1534Turkishtr1535Turkishtr1536Turkishtr1537Turkishtr1538Turkishtr1539Turkishtr154Turkishtr1540Turkishtr1541Turkishtr1542Turkishtr1543Turkishtr1544Turkishtr1545Turkishtr1546Turkishtr1547Turkishtr1548Turkishtr1549Turkishtr155Turkishtr1550Turkishtr1551Turkishtr1552Turkishtr1553Turkishtr1554Turkishtr1555Turkishtr1556Turkishtr1557Turkishtr1558Turkishtr1559Turkishtr156Turkishtr1560Turkishtr1561Turkishtr1562Turkishtr1563Turkishtr1564Turkishtr1565Turkishtr1566Turkishtr1567Turkishtr1568Turkishtr1569Turkishtr157Turkishtr1570Turkishtr1571Turkishtr1572Turkishtr1573Turkishtr1574Turkishtr1575Turkishtr1576Turkishtr1577Turkishtr1578Turkishtr1579Turkishtr158Turkishtr1580Turkishtr1581Turkishtr1582Turkishtr1583Turkishtr1584Turkishtr1585Turkishtr1586Turkishtr1587Turkishtr1588Turkishtr1589Turkishtr159Turkishtr1590Turkishtr1591Turkishtr1592Turkishtr1593Turkishtr1594Turkishtr1595Turkishtr1596Turkishtr1597Turkishtr1598Turkishtr1599Turkishtr16Turkishtr160Turkishtr1600Turkishtr1601Turkishtr1602Turkishtr1603Turkishtr1604Turkishtr1605Turkishtr1606Turkishtr1607Turkishtr1608Turkishtr1609Turkishtr161Turkishtr1610Turkishtr1611Turkishtr1612Turkishtr1613Turkishtr1614Turkishtr1615Turkishtr1616Turkishtr1617Turkishtr1618Turkishtr1619Turkishtr162Turkishtr1620Turkishtr1621Turkishtr1622Turkishtr1623Turkishtr1624Turkishtr1625Turkishtr1626Turkishtr1627Turkishtr1628Turkishtr1629Turkishtr163Turkishtr1630Turkishtr1631Turkishtr1632Turkishtr1633Turkishtr1634Turkishtr1635Turkishtr1636Turkishtr1637Turkishtr1638Turkishtr1639Turkishtr164Turkishtr1640Turkishtr1641Turkishtr1642Turkishtr1643Turkishtr1644Turkishtr1645Turkishtr1646Turkishtr1647Turkishtr1648Turkishtr1649Turkishtr165Turkishtr1650Turkishtr1651Turkishtr1652Turkishtr1653Turkishtr1654Turkishtr1655Turkishtr1656Turkishtr1657Turkishtr1658Turkishtr1659Turkishtr166Turkishtr1660Turkishtr1661Turkishtr1662Turkishtr1663Turkishtr1664Turkishtr1665Turkishtr1666Turkishtr1667Turkishtr1668Turkishtr1669Turkishtr167Turkishtr1670Turkishtr1671Turkishtr1672Turkishtr1673Turkishtr1674Turkishtr1675Turkishtr1676Turkishtr1677Turkishtr1678Turkishtr1679Turkishtr168Turkishtr1680Turkishtr1681Turkishtr1682Turkishtr1683Turkishtr1684Turkishtr1685Turkishtr1686Turkishtr1687Turkishtr1688Turkishtr1689Turkishtr169Turkishtr1690Turkishtr1691Turkishtr1692Turkishtr1693Turkishtr1694Turkishtr1695Turkishtr1696Turkishtr1697Turkishtr1698Turkishtr1699Turkishtr17Turkishtr170Turkishtr1700Turkishtr1701Turkishtr1702Turkishtr1703Turkishtr1704Turkishtr1705Turkishtr1706Turkishtr1707Turkishtr1708Turkishtr1709Turkishtr171Turkishtr1710Turkishtr1711Turkishtr1712Turkishtr1713Turkishtr1714Turkishtr1715Turkishtr1716Turkishtr1717Turkishtr1718Turkishtr1719Turkishtr172Turkishtr1720Turkishtr1721Turkishtr1722Turkishtr1723Turkishtr1724Turkishtr1725Turkishtr1726Turkishtr1727Turkishtr1728Turkishtr1729Turkishtr173Turkishtr1730Turkishtr1731Turkishtr1732Turkishtr1733Turkishtr1734Turkishtr1735Turkishtr1736Turkishtr1737Turkishtr1738Turkishtr1739Turkishtr174Turkishtr1740Turkishtr1741Turkishtr1742Turkishtr1743Turkishtr1744Turkishtr1745Turkishtr1746Turkishtr1747Turkishtr1748Turkishtr1749Turkishtr175Turkishtr1750Turkishtr1751Turkishtr1752Turkishtr1753Turkishtr1754Turkishtr1755Turkishtr1756Turkishtr1757Turkishtr1758Turkishtr1759Turkishtr176Turkishtr1760Turkishtr1761Turkishtr1762Turkishtr1763Turkishtr1764Turkishtr1765Turkishtr1766Turkishtr1767Turkishtr1768Turkishtr1769Turkishtr177Turkishtr1770Turkishtr1771Turkishtr1772Turkishtr1773Turkishtr1774Turkishtr1775Turkishtr1776Turkishtr1777Turkishtr1778Turkishtr1779Turkishtr178Turkishtr1780Turkishtr1781Turkishtr1782Turkishtr1783Turkishtr1784Turkishtr1785Turkishtr1786Turkishtr1787Turkishtr1788Turkishtr1789Turkishtr179Turkishtr1790Turkishtr1791Turkishtr1792Turkishtr1793Turkishtr1794Turkishtr1795Turkishtr1796Turkishtr1797Turkishtr1798Turkishtr1799Turkishtr18Turkishtr180Turkishtr1800Turkishtr1801Turkishtr1802Turkishtr1803Turkishtr1804Turkishtr1805Turkishtr1806Turkishtr1807Turkishtr1808Turkishtr1809Turkishtr181Turkishtr1810Turkishtr1811Turkishtr1812Turkishtr1813Turkishtr1814Turkishtr1815Turkishtr1816Turkishtr1817Turkishtr1818Turkishtr1819Turkishtr182Turkishtr1820Turkishtr1821Turkishtr1822Turkishtr1823Turkishtr1824Turkishtr1825Turkishtr1826Turkishtr1827Turkishtr1828Turkishtr1829Turkishtr183Turkishtr1830Turkishtr1831Turkishtr1832Turkishtr1833Turkishtr1834Turkishtr1835Turkishtr1836Turkishtr1837Turkishtr1838Turkishtr1839Turkishtr184Turkishtr1840Turkishtr1841Turkishtr1842Turkishtr1843Turkishtr1844Turkishtr1845Turkishtr1846Turkishtr1847Turkishtr1848Turkishtr1849Turkishtr185Turkishtr1850Turkishtr1851Turkishtr1852Turkishtr1853Turkishtr1854Turkishtr1855Turkishtr1856Turkishtr1857Turkishtr1858Turkishtr1859Turkishtr186Turkishtr1860Turkishtr1861Turkishtr1862Turkishtr1863Turkishtr1864Turkishtr1865Turkishtr1866Turkishtr1867Turkishtr1868Turkishtr1869Turkishtr187Turkishtr1870Turkishtr1871Turkishtr1872Turkishtr1873Turkishtr1874Turkishtr1875Turkishtr1876Turkishtr1877Turkishtr1878Turkishtr1879Turkishtr188Turkishtr1880Turkishtr1881Turkishtr1882Turkishtr1883Turkishtr1884Turkishtr1885Turkishtr1886Turkishtr1887Turkishtr1888Turkishtr1889Turkishtr189Turkishtr1890Turkishtr1891Turkishtr1892Turkishtr1893Turkishtr1894Turkishtr1895Turkishtr1896Turkishtr1897Turkishtr1898Turkishtr1899Turkishtr19Turkishtr190Turkishtr1900Turkishtr1901Turkishtr1902Turkishtr1903Turkishtr1904Turkishtr1905Turkishtr1906Turkishtr1907Turkishtr1908Turkishtr1909Turkishtr191Turkishtr1910Turkishtr1911Turkishtr1912Turkishtr1913Turkishtr1914Turkishtr1915Turkishtr1916Turkishtr1917Turkishtr1918Turkishtr1919Turkishtr192Turkishtr1920Turkishtr1921Turkishtr1922Turkishtr1923Turkishtr1924Turkishtr1925Turkishtr1926Turkishtr1927Turkishtr1928Turkishtr1929Turkishtr193Turkishtr1930Turkishtr1931Turkishtr1932Turkishtr1933Turkishtr1934Turkishtr1935Turkishtr1936Turkishtr1937Turkishtr1938Turkishtr1939Turkishtr194Turkishtr1940Turkishtr1941Turkishtr1942Turkishtr1943Turkishtr1944Turkishtr1945Turkishtr1946Turkishtr1947Turkishtr1948Turkishtr1949Turkishtr195Turkishtr1950Turkishtr1951Turkishtr1952Turkishtr1953Turkishtr1954Turkishtr1955Turkishtr1956Turkishtr1957Turkishtr1958Turkishtr1959Turkishtr196Turkishtr1960Turkishtr1961Turkishtr1962Turkishtr1963Turkishtr1964Turkishtr1965Turkishtr1966Turkishtr1967Turkishtr1968Turkishtr1969Turkishtr197Turkishtr1970Turkishtr1971Turkishtr1972Turkishtr1973Turkishtr1974Turkishtr1975Turkishtr1976Turkishtr1977Turkishtr1978Turkishtr1979Turkishtr198Turkishtr1980Turkishtr1981Turkishtr1982Turkishtr1983Turkishtr1984Turkishtr1985Turkishtr1986Turkishtr1987Turkishtr1988Turkishtr1989Turkishtr199Turkishtr1990Turkishtr1991Turkishtr1992Turkishtr1993Turkishtr1994Turkishtr1995Turkishtr1996Turkishtr1997Turkishtr1998Turkishtr1999Turkishtr2Turkishtr20Turkishtr200Turkishtr2000Turkishtr2001Turkishtr2002Turkishtr2003Turkishtr2004Turkishtr2005Turkishtr2006Turkishtr2007Turkishtr2008Turkishtr2009Turkishtr201Turkishtr2010Turkishtr2011Turkishtr2012Turkishtr2013Turkishtr2014Turkishtr2015Turkishtr2016Turkishtr2017Turkishtr2018Turkishtr2019Turkishtr202Turkishtr2020Turkishtr2021Turkishtr2022Turkishtr2023Turkishtr2024Turkishtr2025Turkishtr2026Turkishtr2027Turkishtr2028Turkishtr2029Turkishtr203Turkishtr2030Turkishtr2031Turkishtr2032Turkishtr2033Turkishtr2034Turkishtr2035Turkishtr2036Turkishtr2037Turkishtr2038Turkishtr2039Turkishtr204Turkishtr2040Turkishtr2041Turkishtr2042Turkishtr2043Turkishtr2044Turkishtr2045Turkishtr2046Turkishtr2047Turkishtr2048Turkishtr2049Turkishtr205Turkishtr2050Turkishtr2051Turkishtr2052Turkishtr2053Turkishtr2054Turkishtr2055Turkishtr2056Turkishtr2057Turkishtr2058Turkishtr2059Turkishtr206Turkishtr2060Turkishtr2061Turkishtr2062Turkishtr2063Turkishtr2064Turkishtr2065Turkishtr2066Turkishtr2067Turkishtr2068Turkishtr2069Turkishtr207Turkishtr2070Turkishtr2071Turkishtr2072Turkishtr2073Turkishtr2074Turkishtr2075Turkishtr2076Turkishtr2077Turkishtr2078Turkishtr2079Turkishtr208Turkishtr2080Turkishtr2081Turkishtr2082Turkishtr2083Turkishtr2084Turkishtr2085Turkishtr2086Turkishtr2087Turkishtr2088Turkishtr2089Turkishtr209Turkishtr2090Turkishtr2091Turkishtr2092Turkishtr2093Turkishtr2094Turkishtr2095Turkishtr2096Turkishtr2097Turkishtr2098Turkishtr2099Turkishtr21Turkishtr210Turkishtr2100Turkishtr2101Turkishtr2102Turkishtr2103Turkishtr2104Turkishtr2105Turkishtr2106Turkishtr2107Turkishtr2108Turkishtr2109Turkishtr211Turkishtr2110Turkishtr2111Turkishtr2112Turkishtr2113Turkishtr2114Turkishtr2115Turkishtr2116Turkishtr2117Turkishtr2118Turkishtr2119Turkishtr212Turkishtr2120Turkishtr2121Turkishtr2122Turkishtr2123Turkishtr2124Turkishtr2125Turkishtr2126Turkishtr2127Turkishtr2128Turkishtr2129Turkishtr213Turkishtr2130Turkishtr2131Turkishtr2132Turkishtr2133Turkishtr2134Turkishtr2135Turkishtr2136Turkishtr2137Turkishtr2138Turkishtr2139Turkishtr214Turkishtr2140Turkishtr2141Turkishtr2142Turkishtr2143Turkishtr2144Turkishtr2145Turkishtr2146Turkishtr2147Turkishtr2148Turkishtr2149Turkishtr215Turkishtr2150Turkishtr2151Turkishtr2152Turkishtr2153Turkishtr2154Turkishtr2155Turkishtr2156Turkishtr2157Turkishtr2158Turkishtr2159Turkishtr216Turkishtr2160Turkishtr2161Turkishtr2162Turkishtr2163Turkishtr2164Turkishtr2165Turkishtr2166Turkishtr2167Turkishtr2168Turkishtr2169Turkishtr217Turkishtr2170Turkishtr2171Turkishtr2172Turkishtr2173Turkishtr2174Turkishtr2175Turkishtr2176Turkishtr2177Turkishtr2178Turkishtr2179Turkishtr218Turkishtr2180Turkishtr2181Turkishtr2182Turkishtr2183Turkishtr2184Turkishtr2185Turkishtr2186Turkishtr2187Turkishtr2188Turkishtr2189Turkishtr219Turkishtr2190Turkishtr2191Turkishtr2192Turkishtr2193Turkishtr2194Turkishtr2195Turkishtr2196Turkishtr2197Turkishtr2198Turkishtr2199Turkishtr22Turkishtr220Turkishtr2200Turkishtr2201Turkishtr2202Turkishtr2203Turkishtr2204Turkishtr2205Turkishtr2206Turkishtr2207Turkishtr2208Turkishtr2209Turkishtr221Turkishtr2210Turkishtr2211Turkishtr2212Turkishtr2213Turkishtr2214Turkishtr2215Turkishtr2216Turkishtr2217Turkishtr2218Turkishtr2219Turkishtr222Turkishtr2220Turkishtr2221Turkishtr2222Turkishtr2223Turkishtr2224Turkishtr2225Turkishtr2226Turkishtr2227Turkishtr2228Turkishtr2229Turkishtr223Turkishtr2230Turkishtr2231Turkishtr2232Turkishtr2233Turkishtr2234Turkishtr2235Turkishtr2236Turkishtr2237Turkishtr2238Turkishtr2239Turkishtr224Turkishtr2240Turkishtr2241Turkishtr2242Turkishtr2243Turkishtr2244Turkishtr2245Turkishtr2246Turkishtr2247Turkishtr2248Turkishtr2249Turkishtr225Turkishtr2250Turkishtr2251Turkishtr2252Turkishtr2253Turkishtr2254Turkishtr2255Turkishtr2256Turkishtr2257Turkishtr2258Turkishtr2259Turkishtr226Turkishtr2260Turkishtr2261Turkishtr2262Turkishtr2263Turkishtr2264Turkishtr2265Turkishtr2266Turkishtr2267Turkishtr2268Turkishtr2269Turkishtr227Turkishtr2270Turkishtr2271Turkishtr2272Turkishtr2273Turkishtr2274Turkishtr2275Turkishtr2276Turkishtr2277Turkishtr2278Turkishtr2279Turkishtr228Turkishtr2280Turkishtr2281Turkishtr2282Turkishtr2283Turkishtr2284Turkishtr2285Turkishtr2286Turkishtr2287Turkishtr2288Turkishtr2289Turkishtr229Turkishtr2290Turkishtr2291Turkishtr2292Turkishtr2293Turkishtr2294Turkishtr2295Turkishtr2296Turkishtr2297Turkishtr2298Turkishtr2299Turkishtr23Turkishtr230Turkishtr2300Turkishtr2301Turkishtr2302Turkishtr2303Turkishtr2304Turkishtr2305Turkishtr2306Turkishtr2307Turkishtr2308Turkishtr2309Turkishtr231Turkishtr2310Turkishtr2311Turkishtr2312Turkishtr2313Turkishtr2314Turkishtr2315Turkishtr2316Turkishtr2317Turkishtr2318Turkishtr2319Turkishtr232Turkishtr2320Turkishtr2321Turkishtr2322Turkishtr2323Turkishtr2324Turkishtr2325Turkishtr2326Turkishtr2327Turkishtr2328Turkishtr2329Turkishtr233Turkishtr2330Turkishtr2331Turkishtr2332Turkishtr2333Turkishtr2334Turkishtr2335Turkishtr2336Turkishtr2337Turkishtr2338Turkishtr2339Turkishtr234Turkishtr2340Turkishtr2341Turkishtr2342Turkishtr2343Turkishtr2344Turkishtr2345Turkishtr2346Turkishtr2347Turkishtr2348Turkishtr2349Turkishtr235Turkishtr2350Turkishtr2351Turkishtr2352Turkishtr2353Turkishtr2354Turkishtr2355Turkishtr2356Turkishtr2357Turkishtr2358Turkishtr2359Turkishtr236Turkishtr2360Turkishtr2361Turkishtr2362Turkishtr2363Turkishtr2364Turkishtr2365Turkishtr2366Turkishtr2367Turkishtr2368Turkishtr2369Turkishtr237Turkishtr2370Turkishtr2371Turkishtr2372Turkishtr2373Turkishtr2374Turkishtr2375Turkishtr2376Turkishtr2377Turkishtr2378Turkishtr2379Turkishtr238Turkishtr2380Turkishtr2381Turkishtr2382Turkishtr2383Turkishtr2384Turkishtr2385Turkishtr2386Turkishtr2387Turkishtr2388Turkishtr2389Turkishtr239Turkishtr2390Turkishtr2391Turkishtr2392Turkishtr2393Turkishtr2394Turkishtr2395Turkishtr2396Turkishtr2397Turkishtr2398Turkishtr2399Turkishtr24Turkishtr240Turkishtr2400Turkishtr2401Turkishtr2402Turkishtr2403Turkishtr2404Turkishtr2405Turkishtr2406Turkishtr2407Turkishtr2408Turkishtr2409Turkishtr241Turkishtr2410Turkishtr2411Turkishtr2412Turkishtr2413Turkishtr2414Turkishtr2415Turkishtr2416Turkishtr2417Turkishtr2418Turkishtr2419Turkishtr242Turkishtr2420Turkishtr2421Turkishtr2422Turkishtr2423Turkishtr2424Turkishtr2425Turkishtr2426Turkishtr2427Turkishtr2428Turkishtr2429Turkishtr243Turkishtr2430Turkishtr2431Turkishtr2432Turkishtr2433Turkishtr2434Turkishtr2435Turkishtr2436Turkishtr2437Turkishtr2438Turkishtr2439Turkishtr244Turkishtr2440Turkishtr2441Turkishtr2442Turkishtr2443Turkishtr2444Turkishtr2445Turkishtr2446Turkishtr2447Turkishtr2448Turkishtr2449Turkishtr245Turkishtr2450Turkishtr2451Turkishtr2452Turkishtr2453Turkishtr2454Turkishtr2455Turkishtr2456Turkishtr2457Turkishtr2458Turkishtr2459Turkishtr246Turkishtr2460Turkishtr2461Turkishtr2462Turkishtr2463Turkishtr2464Turkishtr2465Turkishtr2466Turkishtr2467Turkishtr2468Turkishtr2469Turkishtr247Turkishtr2470Turkishtr2471Turkishtr2472Turkishtr2473Turkishtr2474Turkishtr2475Turkishtr2476Turkishtr2477Turkishtr2478Turkishtr2479Turkishtr248Turkishtr2480Turkishtr2481Turkishtr2482Turkishtr2483Turkishtr2484Turkishtr2485Turkishtr2486Turkishtr2487Turkishtr2488Turkishtr2489Turkishtr249Turkishtr2490Turkishtr2491Turkishtr2492Turkishtr2493Turkishtr2494Turkishtr2495Turkishtr2496Turkishtr2497Turkishtr2498Turkishtr2499Turkishtr25Turkishtr250Turkishtr2500Turkishtr2501Turkishtr2502Turkishtr2503Turkishtr2504Turkishtr2505Turkishtr2506Turkishtr2507Turkishtr2508Turkishtr2509Turkishtr251Turkishtr2510Turkishtr2511Turkishtr2512Turkishtr2513Turkishtr2514Turkishtr2515Turkishtr2516Turkishtr2517Turkishtr2518Turkishtr2519Turkishtr252Turkishtr2520Turkishtr2521Turkishtr2522Turkishtr2523Turkishtr2524Turkishtr2525Turkishtr2526Turkishtr2527Turkishtr2528Turkishtr2529Turkishtr253Turkishtr2530Turkishtr2531Turkishtr2532Turkishtr2533Turkishtr2534Turkishtr2535Turkishtr2536Turkishtr2537Turkishtr2538Turkishtr2539Turkishtr254Turkishtr2540Turkishtr2541Turkishtr2542Turkishtr2543Turkishtr2544Turkishtr2545Turkishtr2546Turkishtr2547Turkishtr2548Turkishtr2549Turkishtr255Turkishtr2550Turkishtr2551Turkishtr2552Turkishtr2553Turkishtr2554Turkishtr2555Turkishtr2556Turkishtr2557Turkishtr2558Turkishtr2559Turkishtr256Turkishtr2560Turkishtr2561Turkishtr2562Turkishtr2563Turkishtr2564Turkishtr2565Turkishtr2566Turkishtr2567Turkishtr2568Turkishtr2569Turkishtr257Turkishtr2570Turkishtr2571Turkishtr2572Turkishtr2573Turkishtr2574Turkishtr2575Turkishtr2576Turkishtr2577Turkishtr2578Turkishtr2579Turkishtr258Turkishtr2580Turkishtr2581Turkishtr2582Turkishtr2583Turkishtr2584Turkishtr2585Turkishtr2586Turkishtr2587Turkishtr2588Turkishtr2589Turkishtr259Turkishtr2590Turkishtr2591Turkishtr2592Turkishtr2593Turkishtr2594Turkishtr2595Turkishtr2596Turkishtr2597Turkishtr2598Turkishtr2599Turkishtr26Turkishtr260Turkishtr2600Turkishtr2601Turkishtr2602Turkishtr2603Turkishtr2604Turkishtr2605Turkishtr2606Turkishtr2607Turkishtr2608Turkishtr2609Turkishtr261Turkishtr2610Turkishtr2611Turkishtr2612Turkishtr2613Turkishtr2614Turkishtr2615Turkishtr2616Turkishtr2617Turkishtr2618Turkishtr2619Turkishtr262Turkishtr2620Turkishtr2621Turkishtr2622Turkishtr2623Turkishtr2624Turkishtr2625Turkishtr2626Turkishtr2627Turkishtr2628Turkishtr2629Turkishtr263Turkishtr2630Turkishtr2631Turkishtr2632Turkishtr2633Turkishtr2634Turkishtr2635Turkishtr2636Turkishtr2637Turkishtr2638Turkishtr2639Turkishtr264Turkishtr2640Turkishtr2641Turkishtr2642Turkishtr2643Turkishtr2644Turkishtr2645Turkishtr2646Turkishtr2647Turkishtr2648Turkishtr2649Turkishtr265Turkishtr2650Turkishtr2651Turkishtr2652Turkishtr2653Turkishtr2654Turkishtr2655Turkishtr2656Turkishtr2657Turkishtr2658Turkishtr2659Turkishtr266Turkishtr2660Turkishtr2661Turkishtr2662Turkishtr2663Turkishtr2664Turkishtr2665Turkishtr2666Turkishtr2667Turkishtr2668Turkishtr2669Turkishtr267Turkishtr2670Turkishtr2671Turkishtr2672Turkishtr2673Turkishtr2674Turkishtr2675Turkishtr2676Turkishtr2677Turkishtr2678Turkishtr2679Turkishtr268Turkishtr2680Turkishtr2681Turkishtr2682Turkishtr2683Turkishtr2684Turkishtr2685Turkishtr2686Turkishtr2687Turkishtr2688Turkishtr2689Turkishtr269Turkishtr2690Turkishtr2691Turkishtr2692Turkishtr2693Turkishtr2694Turkishtr2695Turkishtr2696Turkishtr2697Turkishtr2698Turkishtr2699Turkishtr27Turkishtr270Turkishtr2700Turkishtr2701Turkishtr2702Turkishtr2703Turkishtr2704Turkishtr2705Turkishtr2706Turkishtr2707Turkishtr2708Turkishtr2709Turkishtr271Turkishtr2710Turkishtr2711Turkishtr2712Turkishtr2713Turkishtr2714Turkishtr2715Turkishtr2716Turkishtr2717Turkishtr2718Turkishtr2719Turkishtr272Turkishtr2720Turkishtr2721Turkishtr2722Turkishtr2723Turkishtr2724Turkishtr2725Turkishtr2726Turkishtr2727Turkishtr2728Turkishtr2729Turkishtr273Turkishtr2730Turkishtr2731Turkishtr2732Turkishtr2733Turkishtr2734Turkishtr2735Turkishtr2736Turkishtr2737Turkishtr2738Turkishtr2739Turkishtr274Turkishtr2740Turkishtr2741Turkishtr2742Turkishtr2743Turkishtr2744Turkishtr2745Turkishtr2746Turkishtr2747Turkishtr2748Turkishtr2749Turkishtr275Turkishtr2750Turkishtr2751Turkishtr2752Turkishtr2753Turkishtr2754Turkishtr2755Turkishtr2756Turkishtr2757Turkishtr2758Turkishtr2759Turkishtr276Turkishtr2760Turkishtr2761Turkishtr2762Turkishtr2763Turkishtr2764Turkishtr2765Turkishtr2766Turkishtr2767Turkishtr2768Turkishtr2769Turkishtr277Turkishtr2770Turkishtr2771Turkishtr2772Turkishtr2773Turkishtr2774Turkishtr2775Turkishtr2776Turkishtr2777Turkishtr2778Turkishtr2779Turkishtr278Turkishtr2780Turkishtr2781Turkishtr2782Turkishtr2783Turkishtr2784Turkishtr2785Turkishtr2786Turkishtr2787Turkishtr2788Turkishtr2789Turkishtr279Turkishtr2790Turkishtr2791Turkishtr2792Turkishtr2793Turkishtr2794Turkishtr2795Turkishtr2796Turkishtr2797Turkishtr2798Turkishtr2799Turkishtr28Turkishtr280Turkishtr2800Turkishtr2801Turkishtr2802Turkishtr2803Turkishtr2804Turkishtr2805Turkishtr2806Turkishtr2807Turkishtr2808Turkishtr2809Turkishtr281Turkishtr2810Turkishtr2811Turkishtr2812Turkishtr2813Turkishtr2814Turkishtr2815Turkishtr2816Turkishtr2817Turkishtr2818Turkishtr2819Turkishtr282Turkishtr2820Turkishtr2821Turkishtr2822Turkishtr2823Turkishtr2824Turkishtr2825Turkishtr2826Turkishtr2827Turkishtr2828Turkishtr2829Turkishtr283Turkishtr2830Turkishtr2831Turkishtr2832Turkishtr2833Turkishtr2834Turkishtr2835Turkishtr2836Turkishtr2837Turkishtr2838Turkishtr2839Turkishtr284Turkishtr2840Turkishtr2841Turkishtr2842Turkishtr2843Turkishtr2844Turkishtr2845Turkishtr2846Turkishtr2847Turkishtr2848Turkishtr2849Turkishtr285Turkishtr2850Turkishtr2851Turkishtr2852Turkishtr2853Turkishtr2854Turkishtr2855Turkishtr2856Turkishtr2857Turkishtr2858Turkishtr2859Turkishtr286Turkishtr2860Turkishtr2861Turkishtr2862Turkishtr2863Turkishtr2864Turkishtr2865Turkishtr2866Turkishtr2867Turkishtr2868Turkishtr2869Turkishtr287Turkishtr2870Turkishtr2871Turkishtr2872Turkishtr2873Turkishtr2874Turkishtr2875Turkishtr2876Turkishtr2877Turkishtr2878Turkishtr2879Turkishtr288Turkishtr2880Turkishtr2881Turkishtr2882Turkishtr2883Turkishtr2884Turkishtr2885Turkishtr2886Turkishtr2887Turkishtr2888Turkishtr2889Turkishtr289Turkishtr2890Turkishtr2891Turkishtr2892Turkishtr2893Turkishtr2894Turkishtr2895Turkishtr2896Turkishtr2897Turkishtr2898Turkishtr2899Turkishtr29Turkishtr290Turkishtr2900Turkishtr2901Turkishtr2902Turkishtr2903Turkishtr2904Turkishtr2905Turkishtr2906Turkishtr2907Turkishtr2908Turkishtr2909Turkishtr291Turkishtr2910Turkishtr2911Turkishtr2912Turkishtr2913Turkishtr2914Turkishtr2915Turkishtr2916Turkishtr2917Turkishtr2918Turkishtr2919Turkishtr292Turkishtr2920Turkishtr2921Turkishtr2922Turkishtr2923Turkishtr2924Turkishtr2925Turkishtr2926Turkishtr2927Turkishtr2928Turkishtr2929Turkishtr293Turkishtr2930Turkishtr2931Turkishtr2932Turkishtr2933Turkishtr2934Turkishtr2935Turkishtr2936Turkishtr2937Turkishtr2938Turkishtr2939Turkishtr294Turkishtr2940Turkishtr2941Turkishtr2942Turkishtr2943Turkishtr2944Turkishtr2945Turkishtr2946Turkishtr2947Turkishtr2948Turkishtr2949Turkishtr295Turkishtr2950Turkishtr2951Turkishtr2952Turkishtr2953Turkishtr2954Turkishtr2955Turkishtr2956Turkishtr2957Turkishtr2958Turkishtr2959Turkishtr296Turkishtr2960Turkishtr2961Turkishtr2962Turkishtr2963Turkishtr2964Turkishtr2965Turkishtr2966Turkishtr2967Turkishtr2968Turkishtr2969Turkishtr297Turkishtr2970Turkishtr2971Turkishtr2972Turkishtr2973Turkishtr2974Turkishtr2975Turkishtr2976Turkishtr2977Turkishtr2978Turkishtr2979Turkishtr298Turkishtr2980Turkishtr2981Turkishtr2982Turkishtr2983Turkishtr2984Turkishtr2985Turkishtr2986Turkishtr2987Turkishtr2988Turkishtr2989Turkishtr299Turkishtr2990Turkishtr2991Turkishtr2992Turkishtr2993Turkishtr2994Turkishtr2995Turkishtr2996Turkishtr2997Turkishtr2998Turkishtr2999Turkishtr3Turkishtr30Turkishtr300Turkishtr3000Turkishtr3001Turkishtr3002Turkishtr3003Turkishtr3004Turkishtr3005Turkishtr3006Turkishtr3007Turkishtr3008Turkishtr3009Turkishtr301Turkishtr3010Turkishtr3011Turkishtr3012Turkishtr3013Turkishtr3014Turkishtr3015Turkishtr3016Turkishtr3017Turkishtr3018Turkishtr3019Turkishtr302Turkishtr3020Turkishtr3021Turkishtr3022Turkishtr3023Turkishtr3024Turkishtr3025Turkishtr3026Turkishtr3027Turkishtr3028Turkishtr3029Turkishtr303Turkishtr3030Turkishtr3031Turkishtr3032Turkishtr3033Turkishtr3034Turkishtr3035Turkishtr3036Turkishtr3037Turkishtr3038Turkishtr3039Turkishtr304Turkishtr3040Turkishtr3041Turkishtr3042Turkishtr3043Turkishtr3044Turkishtr3045Turkishtr3046Turkishtr3047Turkishtr3048Turkishtr3049Turkishtr305Turkishtr3050Turkishtr3051Turkishtr3052Turkishtr3053Turkishtr3054Turkishtr3055Turkishtr3056Turkishtr3057Turkishtr3058Turkishtr3059Turkishtr306Turkishtr3060Turkishtr3061Turkishtr3062Turkishtr3063Turkishtr3064Turkishtr3065Turkishtr3066Turkishtr3067Turkishtr3068Turkishtr3069Turkishtr307Turkishtr3070Turkishtr3071Turkishtr3072Turkishtr3073Turkishtr3074Turkishtr3075Turkishtr3076Turkishtr3077Turkishtr3078Turkishtr3079Turkishtr308Turkishtr3080Turkishtr3081Turkishtr3082Turkishtr3083Turkishtr3084Turkishtr3085Turkishtr3086Turkishtr3087Turkishtr3088Turkishtr3089Turkishtr309Turkishtr3090Turkishtr3091Turkishtr3092Turkishtr3093Turkishtr3094Turkishtr3095Turkishtr3096Turkishtr3097Turkishtr3098Turkishtr3099Turkishtr31Turkishtr310Turkishtr3100Turkishtr3101Turkishtr3102Turkishtr3103Turkishtr3104Turkishtr3105Turkishtr3106Turkishtr3107Turkishtr3108Turkishtr3109Turkishtr311Turkishtr3110Turkishtr3111Turkishtr3112Turkishtr3113Turkishtr3114Turkishtr3115Turkishtr3116Turkishtr3117Turkishtr3118Turkishtr3119Turkishtr312Turkishtr3120Turkishtr3121Turkishtr3122Turkishtr3123Turkishtr3124Turkishtr3125Turkishtr3126Turkishtr3127Turkishtr3128Turkishtr3129Turkishtr313Turkishtr3130Turkishtr3131Turkishtr3132Turkishtr3133Turkishtr3134Turkishtr3135Turkishtr3136Turkishtr3137Turkishtr3138Turkishtr3139Turkishtr314Turkishtr3140Turkishtr3141Turkishtr3142Turkishtr3143Turkishtr3144Turkishtr3145Turkishtr3146Turkishtr3147Turkishtr3148Turkishtr3149Turkishtr315Turkishtr3150Turkishtr3151Turkishtr3152Turkishtr3153Turkishtr3154Turkishtr3155Turkishtr3156Turkishtr3157Turkishtr3158Turkishtr3159Turkishtr316Turkishtr3160Turkishtr3161Turkishtr3162Turkishtr3163Turkishtr3164Turkishtr3165Turkishtr3166Turkishtr3167Turkishtr3168Turkishtr3169Turkishtr317Turkishtr3170Turkishtr3171Turkishtr3172Turkishtr3173Turkishtr3174Turkishtr3175Turkishtr3176Turkishtr3177Turkishtr3178Turkishtr3179Turkishtr318Turkishtr3180Turkishtr3181Turkishtr3182Turkishtr3183Turkishtr3184Turkishtr3185Turkishtr3186Turkishtr3187Turkishtr3188Turkishtr3189Turkishtr319Turkishtr3190Turkishtr3191Turkishtr3192Turkishtr3193Turkishtr3194Turkishtr3195Turkishtr3196Turkishtr3197Turkishtr3198Turkishtr3199Turkishtr32Turkishtr320Turkishtr3200Turkishtr3201Turkishtr3202Turkishtr3203Turkishtr3204Turkishtr3205Turkishtr3206Turkishtr3207Turkishtr3208Turkishtr3209Turkishtr321Turkishtr3210Turkishtr3211Turkishtr3212Turkishtr3213Turkishtr3214Turkishtr3215Turkishtr3216Turkishtr3217Turkishtr3218Turkishtr3219Turkishtr322Turkishtr3220Turkishtr3221Turkishtr3222Turkishtr3223Turkishtr3224Turkishtr3225Turkishtr3226Turkishtr3227Turkishtr3228Turkishtr3229Turkishtr323Turkishtr3230Turkishtr3231Turkishtr3232Turkishtr3233Turkishtr3234Turkishtr3235Turkishtr3236Turkishtr3237Turkishtr3238Turkishtr3239Turkishtr324Turkishtr3240Turkishtr3241Turkishtr3242Turkishtr3243Turkishtr3244Turkishtr3245Turkishtr3246Turkishtr3247Turkishtr3248Turkishtr3249Turkishtr325Turkishtr3250Turkishtr3251Turkishtr3252Turkishtr3253Turkishtr3254Turkishtr3255Turkishtr3256Turkishtr3257Turkishtr3258Turkishtr3259Turkishtr326Turkishtr3260Turkishtr3261Turkishtr3262Turkishtr3263Turkishtr3264Turkishtr3265Turkishtr3266Turkishtr3267Turkishtr3268Turkishtr3269Turkishtr327Turkishtr3270Turkishtr3271Turkishtr3272Turkishtr3273Turkishtr3274Turkishtr3275Turkishtr3276Turkishtr3277Turkishtr3278Turkishtr3279Turkishtr328Turkishtr3280Turkishtr3281Turkishtr3282Turkishtr3283Turkishtr3284Turkishtr3285Turkishtr3286Turkishtr3287Turkishtr3288Turkishtr3289Turkishtr329Turkishtr3290Turkishtr3291Turkishtr3292Turkishtr3293Turkishtr3294Turkishtr3295Turkishtr3296Turkishtr3297Turkishtr3298Turkishtr3299Turkishtr33Turkishtr330Turkishtr3300Turkishtr3301Turkishtr3302Turkishtr3303Turkishtr3304Turkishtr3305Turkishtr3306Turkishtr3307Turkishtr3308Turkishtr3309Turkishtr331Turkishtr3310Turkishtr3311Turkishtr3312Turkishtr3313Turkishtr3314Turkishtr3315Turkishtr3316Turkishtr3317Turkishtr3318Turkishtr3319Turkishtr332Turkishtr3320Turkishtr3321Turkishtr3322Turkishtr3323Turkishtr3324Turkishtr3325Turkishtr3326Turkishtr3327Turkishtr3328Turkishtr3329Turkishtr333Turkishtr3330Turkishtr3331Turkishtr3332Turkishtr3333Turkishtr3334Turkishtr3335Turkishtr3336Turkishtr3337Turkishtr3338Turkishtr3339Turkishtr334Turkishtr3340Turkishtr3341Turkishtr3342Turkishtr3343Turkishtr3344Turkishtr3345Turkishtr3346Turkishtr3347Turkishtr3348Turkishtr3349Turkishtr335Turkishtr3350Turkishtr3351Turkishtr3352Turkishtr3353Turkishtr3354Turkishtr3355Turkishtr3356Turkishtr3357Turkishtr3358Turkishtr3359Turkishtr336Turkishtr3360Turkishtr3361Turkishtr3362Turkishtr3363Turkishtr3364Turkishtr3365Turkishtr3366Turkishtr3367Turkishtr3368Turkishtr3369Turkishtr337Turkishtr3370Turkishtr3371Turkishtr3372Turkishtr3373Turkishtr3374Turkishtr3375Turkishtr3376Turkishtr3377Turkishtr3378Turkishtr3379Turkishtr338Turkishtr3380Turkishtr3381Turkishtr3382Turkishtr3383Turkishtr3384Turkishtr3385Turkishtr3386Turkishtr3387Turkishtr3388Turkishtr3389Turkishtr339Turkishtr3390Turkishtr3391Turkishtr3392Turkishtr3393Turkishtr3394Turkishtr3395Turkishtr3396Turkishtr3397Turkishtr3398Turkishtr3399Turkishtr34Turkishtr340Turkishtr3400Turkishtr3401Turkishtr3402Turkishtr3403Turkishtr3404Turkishtr3405Turkishtr3406Turkishtr3407Turkishtr3408Turkishtr3409Turkishtr341Turkishtr3410Turkishtr3411Turkishtr3412Turkishtr3413Turkishtr3414Turkishtr3415Turkishtr3416Turkishtr3417Turkishtr3418Turkishtr3419Turkishtr342Turkishtr3420Turkishtr3421Turkishtr3422Turkishtr3423Turkishtr3424Turkishtr3425Turkishtr3426Turkishtr3427Turkishtr3428Turkishtr3429Turkishtr343Turkishtr3430Turkishtr3431Turkishtr3432Turkishtr3433Turkishtr3434Turkishtr3435Turkishtr3436Turkishtr3437Turkishtr3438Turkishtr3439Turkishtr344Turkishtr3440Turkishtr3441Turkishtr3442Turkishtr3443Turkishtr3444Turkishtr3445Turkishtr3446Turkishtr3447Turkishtr3448Turkishtr3449Turkishtr345Turkishtr3450Turkishtr3451Turkishtr3452Turkishtr3453Turkishtr3454Turkishtr3455Turkishtr3456Turkishtr3457Turkishtr3458Turkishtr3459Turkishtr346Turkishtr3460Turkishtr3461Turkishtr3462Turkishtr3463Turkishtr3464Turkishtr3465Turkishtr3466Turkishtr3467Turkishtr3468Turkishtr3469Turkishtr347Turkishtr3470Turkishtr3471Turkishtr3472Turkishtr3473Turkishtr3474Turkishtr3475Turkishtr3476Turkishtr3477Turkishtr3478Turkishtr3479Turkishtr348Turkishtr3480Turkishtr3481Turkishtr3482Turkishtr3483Turkishtr3484Turkishtr3485Turkishtr3486Turkishtr3487Turkishtr3488Turkishtr3489Turkishtr349Turkishtr3490Turkishtr3491Turkishtr3492Turkishtr3493Turkishtr3494Turkishtr3495Turkishtr3496Turkishtr3497Turkishtr3498Turkishtr3499Turkishtr35Turkishtr350Turkishtr3500Turkishtr3501Turkishtr3502Turkishtr3503Turkishtr3504Turkishtr3505Turkishtr3506Turkishtr3507Turkishtr3508Turkishtr3509Turkishtr351Turkishtr3510Turkishtr3511Turkishtr3512Turkishtr3513Turkishtr3514Turkishtr3515Turkishtr3516Turkishtr3517Turkishtr3518Turkishtr3519Turkishtr352Turkishtr3520Turkishtr3521Turkishtr3522Turkishtr3523Turkishtr3524Turkishtr3525Turkishtr3526Turkishtr3527Turkishtr3528Turkishtr3529Turkishtr353Turkishtr3530Turkishtr3531Turkishtr3532Turkishtr3533Turkishtr3534Turkishtr3535Turkishtr3536Turkishtr3537Turkishtr3538Turkishtr3539Turkishtr354Turkishtr3540Turkishtr3541Turkishtr3542Turkishtr3543Turkishtr3544Turkishtr3545Turkishtr3546Turkishtr3547Turkishtr3548Turkishtr3549Turkishtr355Turkishtr3550Turkishtr3551Turkishtr3552Turkishtr3553Turkishtr3554Turkishtr3555Turkishtr3556Turkishtr3557Turkishtr3558Turkishtr3559Turkishtr356Turkishtr3560Turkishtr3561Turkishtr3562Turkishtr3563Turkishtr3564Turkishtr3565Turkishtr3566Turkishtr3567Turkishtr3568Turkishtr3569Turkishtr357Turkishtr3570Turkishtr3571Turkishtr3572Turkishtr3573Turkishtr3574Turkishtr3575Turkishtr3576Turkishtr3577Turkishtr3578Turkishtr3579Turkishtr358Turkishtr3580Turkishtr3581Turkishtr3582Turkishtr3583Turkishtr3584Turkishtr3585Turkishtr3586Turkishtr3587Turkishtr3588Turkishtr3589Turkishtr359Turkishtr3590Turkishtr3591Turkishtr3592Turkishtr3593Turkishtr3594Turkishtr3595Turkishtr3596Turkishtr3597Turkishtr3598Turkishtr3599Turkishtr36Turkishtr360Turkishtr3600Turkishtr3601Turkishtr3602Turkishtr3603Turkishtr3604Turkishtr3605Turkishtr3606Turkishtr3607Turkishtr3608Turkishtr3609Turkishtr361Turkishtr3610Turkishtr3611Turkishtr3612Turkishtr3613Turkishtr3614Turkishtr3615Turkishtr3616Turkishtr3617Turkishtr3618Turkishtr3619Turkishtr362Turkishtr3620Turkishtr3621Turkishtr3622Turkishtr3623Turkishtr3624Turkishtr3625Turkishtr3626Turkishtr3627Turkishtr3628Turkishtr3629Turkishtr363Turkishtr3630Turkishtr3631Turkishtr3632Turkishtr3633Turkishtr3634Turkishtr3635Turkishtr3636Turkishtr3637Turkishtr3638Turkishtr3639Turkishtr364Turkishtr3640Turkishtr3641Turkishtr3642Turkishtr3643Turkishtr3644Turkishtr3645Turkishtr3646Turkishtr3647Turkishtr3648Turkishtr3649Turkishtr365Turkishtr3650Turkishtr3651Turkishtr3652Turkishtr3653Turkishtr3654Turkishtr3655Turkishtr3656Turkishtr3657Turkishtr3658Turkishtr3659Turkishtr366Turkishtr3660Turkishtr3661Turkishtr3662Turkishtr3663Turkishtr3664Turkishtr3665Turkishtr3666Turkishtr3667Turkishtr3668Turkishtr3669Turkishtr367Turkishtr3670Turkishtr3671Turkishtr3672Turkishtr3673Turkishtr3674Turkishtr3675Turkishtr3676Turkishtr3677Turkishtr3678Turkishtr3679Turkishtr368Turkishtr3680Turkishtr3681Turkishtr3682Turkishtr3683Turkishtr3684Turkishtr3685Turkishtr3686Turkishtr3687Turkishtr3688Turkishtr3689Turkishtr369Turkishtr3690Turkishtr3691Turkishtr3692Turkishtr3693Turkishtr3694Turkishtr3695Turkishtr3696Turkishtr3697Turkishtr3698Turkishtr3699Turkishtr37Turkishtr370Turkishtr3700Turkishtr3701Turkishtr3702Turkishtr3703Turkishtr3704Turkishtr3705Turkishtr3706Turkishtr3707Turkishtr3708Turkishtr3709Turkishtr371Turkishtr3710Turkishtr3711Turkishtr3712Turkishtr3713Turkishtr3714Turkishtr3715Turkishtr3716Turkishtr3717Turkishtr3718Turkishtr3719Turkishtr372Turkishtr3720Turkishtr3721Turkishtr3722Turkishtr3723Turkishtr3724Turkishtr3725Turkishtr3726Turkishtr3727Turkishtr3728Turkishtr3729Turkishtr373Turkishtr3730Turkishtr3731Turkishtr3732Turkishtr3733Turkishtr3734Turkishtr3735Turkishtr3736Turkishtr3737Turkishtr3738Turkishtr3739Turkishtr374Turkishtr3740Turkishtr3741Turkishtr3742Turkishtr3743Turkishtr3744Turkishtr3745Turkishtr3746Turkishtr3747Turkishtr3748Turkishtr3749Turkishtr375Turkishtr3750Turkishtr3751Turkishtr3752Turkishtr3753Turkishtr3754Turkishtr3755Turkishtr3756Turkishtr3757Turkishtr3758Turkishtr3759Turkishtr376Turkishtr3760Turkishtr3761Turkishtr3762Turkishtr3763Turkishtr3764Turkishtr3765Turkishtr3766Turkishtr3767Turkishtr3768Turkishtr3769Turkishtr377Turkishtr3770Turkishtr3771Turkishtr3772Turkishtr3773Turkishtr3774Turkishtr3775Turkishtr3776Turkishtr3777Turkishtr3778Turkishtr3779Turkishtr378Turkishtr3780Turkishtr3781Turkishtr3782Turkishtr3783Turkishtr3784Turkishtr3785Turkishtr3786Turkishtr3787Turkishtr3788Turkishtr3789Turkishtr379Turkishtr3790Turkishtr3791Turkishtr3792Turkishtr3793Turkishtr3794Turkishtr3795Turkishtr3796Turkishtr3797Turkishtr3798Turkishtr3799Turkishtr38Turkishtr380Turkishtr3800Turkishtr3801Turkishtr3802Turkishtr3803Turkishtr3804Turkishtr3805Turkishtr3806Turkishtr3807Turkishtr3808Turkishtr3809Turkishtr381Turkishtr3810Turkishtr3811Turkishtr3812Turkishtr3813Turkishtr3814Turkishtr3815Turkishtr3816Turkishtr3817Turkishtr3818Turkishtr3819Turkishtr382Turkishtr3820Turkishtr3821Turkishtr3822Turkishtr3823Turkishtr3824Turkishtr3825Turkishtr3826Turkishtr3827Turkishtr3828Turkishtr3829Turkishtr383Turkishtr3830Turkishtr3831Turkishtr3832Turkishtr3833Turkishtr3834Turkishtr3835Turkishtr3836Turkishtr3837Turkishtr3838Turkishtr3839Turkishtr384Turkishtr3840Turkishtr3841Turkishtr3842Turkishtr3843Turkishtr3844Turkishtr3845Turkishtr3846Turkishtr3847Turkishtr3848Turkishtr3849Turkishtr385Turkishtr3850Turkishtr3851Turkishtr3852Turkishtr3853Turkishtr3854Turkishtr3855Turkishtr3856Turkishtr3857Turkishtr3858Turkishtr3859Turkishtr386Turkishtr3860Turkishtr3861Turkishtr3862Turkishtr3863Turkishtr3864Turkishtr3865Turkishtr3866Turkishtr3867Turkishtr3868Turkishtr3869Turkishtr387Turkishtr3870Turkishtr3871Turkishtr3872Turkishtr3873Turkishtr3874Turkishtr3875Turkishtr3876Turkishtr3877Turkishtr3878Turkishtr3879Turkishtr388Turkishtr3880Turkishtr3881Turkishtr3882Turkishtr3883Turkishtr3884Turkishtr3885Turkishtr3886Turkishtr3887Turkishtr3888Turkishtr3889Turkishtr389Turkishtr3890Turkishtr3891Turkishtr3892Turkishtr3893Turkishtr3894Turkishtr3895Turkishtr3896Turkishtr3897Turkishtr3898Turkishtr3899Turkishtr39Turkishtr390Turkishtr3900Turkishtr3901Turkishtr3902Turkishtr3903Turkishtr3904Turkishtr3905Turkishtr3906Turkishtr3907Turkishtr3908Turkishtr3909Turkishtr391Turkishtr3910Turkishtr3911Turkishtr3912Turkishtr3913Turkishtr3914Turkishtr3915Turkishtr3916Turkishtr3917Turkishtr3918Turkishtr3919Turkishtr392Turkishtr3920Turkishtr3921Turkishtr3922Turkishtr3923Turkishtr3924Turkishtr3925Turkishtr3926Turkishtr3927Turkishtr3928Turkishtr3929Turkishtr393Turkishtr3930Turkishtr3931Turkishtr3932Turkishtr3933Turkishtr3934Turkishtr3935Turkishtr3936Turkishtr3937Turkishtr3938Turkishtr3939Turkishtr394Turkishtr3940Turkishtr3941Turkishtr3942Turkishtr3943Turkishtr3944Turkishtr3945Turkishtr3946Turkishtr3947Turkishtr3948Turkishtr3949Turkishtr395Turkishtr3950Turkishtr3951Turkishtr3952Turkishtr3953Turkishtr3954Turkishtr3955Turkishtr3956Turkishtr3957Turkishtr3958Turkishtr3959Turkishtr396Turkishtr3960Turkishtr3961Turkishtr3962Turkishtr3963Turkishtr3964Turkishtr3965Turkishtr3966Turkishtr3967Turkishtr3968Turkishtr3969Turkishtr397Turkishtr3970Turkishtr3971Turkishtr3972Turkishtr3973Turkishtr3974Turkishtr3975Turkishtr3976Turkishtr3977Turkishtr3978Turkishtr3979Turkishtr398Turkishtr3980Turkishtr3981Turkishtr3982Turkishtr3983Turkishtr3984Turkishtr3985Turkishtr3986Turkishtr3987Turkishtr3988Turkishtr3989Turkishtr399Turkishtr3990Turkishtr3991Turkishtr3992Turkishtr3993Turkishtr3994Turkishtr3995Turkishtr3996Turkishtr3997Turkishtr3998Turkishtr3999Turkishtr4Turkishtr40Turkishtr400Turkishtr4000Turkishtr4001Turkishtr4002Turkishtr4003Turkishtr4004Turkishtr4005Turkishtr4006Turkishtr4007Turkishtr4008Turkishtr4009Turkishtr401Turkishtr4010Turkishtr4011Turkishtr4012Turkishtr4013Turkishtr4014Turkishtr4015Turkishtr4016Turkishtr4017Turkishtr4018Turkishtr4019Turkishtr402Turkishtr4020Turkishtr4021Turkishtr4022Turkishtr4023Turkishtr4024Turkishtr4025Turkishtr4026Turkishtr4027Turkishtr4028Turkishtr4029Turkishtr403Turkishtr4030Turkishtr4031Turkishtr4032Turkishtr4033Turkishtr4034Turkishtr4035Turkishtr4036Turkishtr4037Turkishtr4038Turkishtr4039Turkishtr404Turkishtr4040Turkishtr4041Turkishtr4042Turkishtr4043Turkishtr4044Turkishtr4045Turkishtr4046Turkishtr4047Turkishtr4048Turkishtr4049Turkishtr405Turkishtr4050Turkishtr4051Turkishtr4052Turkishtr4053Turkishtr4054Turkishtr4055Turkishtr4056Turkishtr4057Turkishtr4058Turkishtr4059Turkishtr406Turkishtr4060Turkishtr4061Turkishtr4062Turkishtr4063Turkishtr4064Turkishtr4065Turkishtr4066Turkishtr4067Turkishtr4068Turkishtr4069Turkishtr407Turkishtr4070Turkishtr4071Turkishtr4072Turkishtr4073Turkishtr4074Turkishtr4075Turkishtr4076Turkishtr4077Turkishtr4078Turkishtr4079Turkishtr408Turkishtr4080Turkishtr4081Turkishtr4082Turkishtr4083Turkishtr4084Turkishtr4085Turkishtr4086Turkishtr4087Turkishtr4088Turkishtr4089Turkishtr409Turkishtr4090Turkishtr4091Turkishtr4092Turkishtr4093Turkishtr4094Turkishtr4095Turkishtr4096Turkishtr4097Turkishtr4098Turkishtr4099Turkishtr41Turkishtr410Turkishtr4100Turkishtr4101Turkishtr4102Turkishtr4103Turkishtr4104Turkishtr4105Turkishtr4106Turkishtr4107Turkishtr4108Turkishtr4109Turkishtr411Turkishtr4110Turkishtr4111Turkishtr4112Turkishtr4113Turkishtr4114Turkishtr4115Turkishtr4116Turkishtr4117Turkishtr4118Turkishtr4119Turkishtr412Turkishtr4120Turkishtr4121Turkishtr4122Turkishtr4123Turkishtr4124Turkishtr4125Turkishtr4126Turkishtr4127Turkishtr4128Turkishtr4129Turkishtr413Turkishtr4130Turkishtr4131Turkishtr4132Turkishtr4133Turkishtr4134Turkishtr4135Turkishtr4136Turkishtr4137Turkishtr4138Turkishtr4139Turkishtr414Turkishtr4140Turkishtr4141Turkishtr4142Turkishtr4143Turkishtr4144Turkishtr4145Turkishtr4146Turkishtr4147Turkishtr4148Turkishtr4149Turkishtr415Turkishtr4150Turkishtr4151Turkishtr4152Turkishtr4153Turkishtr4154Turkishtr4155Turkishtr4156Turkishtr4157Turkishtr4158Turkishtr4159Turkishtr416Turkishtr4160Turkishtr4161Turkishtr4162Turkishtr4163Turkishtr4164Turkishtr4165Turkishtr4166Turkishtr4167Turkishtr4168Turkishtr4169Turkishtr417Turkishtr4170Turkishtr4171Turkishtr4172Turkishtr4173Turkishtr4174Turkishtr4175Turkishtr4176Turkishtr4177Turkishtr4178Turkishtr4179Turkishtr418Turkishtr4180Turkishtr4181Turkishtr4182Turkishtr4183Turkishtr4184Turkishtr4185Turkishtr4186Turkishtr4187Turkishtr4188Turkishtr4189Turkishtr419Turkishtr4190Turkishtr4191Turkishtr4192Turkishtr4193Turkishtr4194Turkishtr4195Turkishtr4196Turkishtr4197Turkishtr4198Turkishtr4199Turkishtr42Turkishtr420Turkishtr4200Turkishtr4201Turkishtr4202Turkishtr4203Turkishtr4204Turkishtr4205Turkishtr4206Turkishtr4207Turkishtr4208Turkishtr4209Turkishtr421Turkishtr4210Turkishtr4211Turkishtr4212Turkishtr4213Turkishtr4214Turkishtr4215Turkishtr4216Turkishtr4217Turkishtr4218Turkishtr4219Turkishtr422Turkishtr4220Turkishtr4221Turkishtr4222Turkishtr4223Turkishtr4224Turkishtr4225Turkishtr4226Turkishtr4227Turkishtr4228Turkishtr4229Turkishtr423Turkishtr4230Turkishtr4231Turkishtr4232Turkishtr4233Turkishtr4234Turkishtr4235Turkishtr4236Turkishtr4237Turkishtr4238Turkishtr4239Turkishtr424Turkishtr4240Turkishtr4241Turkishtr4242Turkishtr4243Turkishtr4244Turkishtr4245Turkishtr4246Turkishtr4247Turkishtr4248Turkishtr4249Turkishtr425Turkishtr4250Turkishtr4251Turkishtr4252Turkishtr4253Turkishtr4254Turkishtr4255Turkishtr4256Turkishtr4257Turkishtr4258Turkishtr4259Turkishtr426Turkishtr4260Turkishtr4261Turkishtr4262Turkishtr4263Turkishtr4264Turkishtr4265Turkishtr4266Turkishtr4267Turkishtr4268Turkishtr4269Turkishtr427Turkishtr4270Turkishtr4271Turkishtr4272Turkishtr4273Turkishtr4274Turkishtr4275Turkishtr4276Turkishtr4277Turkishtr4278Turkishtr4279Turkishtr428Turkishtr4280Turkishtr4281Turkishtr4282Turkishtr4283Turkishtr4284Turkishtr4285Turkishtr4286Turkishtr4287Turkishtr4288Turkishtr4289Turkishtr429Turkishtr4290Turkishtr4291Turkishtr4292Turkishtr4293Turkishtr4294Turkishtr4295Turkishtr4296Turkishtr4297Turkishtr4298Turkishtr4299Turkishtr43Turkishtr430Turkishtr4300Turkishtr4301Turkishtr4302Turkishtr4303Turkishtr4304Turkishtr4305Turkishtr4306Turkishtr4307Turkishtr4308Turkishtr4309Turkishtr431Turkishtr4310Turkishtr4311Turkishtr4312Turkishtr4313Turkishtr4314Turkishtr4315Turkishtr4316Turkishtr4317Turkishtr4318Turkishtr4319Turkishtr432Turkishtr4320Turkishtr4321Turkishtr4322Turkishtr4323Turkishtr4324Turkishtr4325Turkishtr4326Turkishtr4327Turkishtr4328Turkishtr4329Turkishtr433Turkishtr4330Turkishtr4331Turkishtr4332Turkishtr4333Turkishtr4334Turkishtr4335Turkishtr4336Turkishtr4337Turkishtr4338Turkishtr4339Turkishtr434Turkishtr4340Turkishtr4341Turkishtr4342Turkishtr4343Turkishtr4344Turkishtr4345Turkishtr4346Turkishtr4347Turkishtr4348Turkishtr4349Turkishtr435Turkishtr4350Turkishtr4351Turkishtr4352Turkishtr4353Turkishtr4354Turkishtr4355Turkishtr4356Turkishtr4357Turkishtr4358Turkishtr4359Turkishtr436Turkishtr4360Turkishtr4361Turkishtr4362Turkishtr4363Turkishtr4364Turkishtr4365Turkishtr4366Turkishtr4367Turkishtr4368Turkishtr4369Turkishtr437Turkishtr4370Turkishtr4371Turkishtr4372Turkishtr4373Turkishtr4374Turkishtr4375Turkishtr4376Turkishtr4377Turkishtr4378Turkishtr4379Turkishtr438Turkishtr4380Turkishtr4381Turkishtr4382Turkishtr4383Turkishtr4384Turkishtr4385Turkishtr4386Turkishtr4387Turkishtr4388Turkishtr4389Turkishtr439Turkishtr4390Turkishtr4391Turkishtr4392Turkishtr4393Turkishtr4394Turkishtr4395Turkishtr4396Turkishtr4397Turkishtr4398Turkishtr4399Turkishtr44Turkishtr440Turkishtr4400Turkishtr4401Turkishtr4402Turkishtr4403Turkishtr4404Turkishtr4405Turkishtr4406Turkishtr4407Turkishtr4408Turkishtr4409Turkishtr441Turkishtr4410Turkishtr4411Turkishtr4412Turkishtr4413Turkishtr4414Turkishtr4415Turkishtr4416Turkishtr4417Turkishtr4418Turkishtr4419Turkishtr442Turkishtr4420Turkishtr4421Turkishtr4422Turkishtr4423Turkishtr4424Turkishtr4425Turkishtr4426Turkishtr4427Turkishtr4428Turkishtr4429Turkishtr443Turkishtr4430Turkishtr4431Turkishtr4432Turkishtr4433Turkishtr4434Turkishtr4435Turkishtr4436Turkishtr4437Turkishtr4438Turkishtr4439Turkishtr444Turkishtr4440Turkishtr4441Turkishtr4442Turkishtr4443Turkishtr4444Turkishtr4445Turkishtr4446Turkishtr4447Turkishtr4448Turkishtr4449Turkishtr445Turkishtr4450Turkishtr4451Turkishtr4452Turkishtr4453Turkishtr4454Turkishtr4455Turkishtr4456Turkishtr4457Turkishtr4458Turkishtr4459Turkishtr446Turkishtr4460Turkishtr4461Turkishtr4462Turkishtr4463Turkishtr4464Turkishtr4465Turkishtr4466Turkishtr4467Turkishtr4468Turkishtr4469Turkishtr447Turkishtr4470Turkishtr4471Turkishtr4472Turkishtr4473Turkishtr4474Turkishtr4475Turkishtr4476Turkishtr4477Turkishtr4478Turkishtr4479Turkishtr448Turkishtr4480Turkishtr4481Turkishtr4482Turkishtr4483Turkishtr4484Turkishtr4485Turkishtr4486Turkishtr4487Turkishtr4488Turkishtr4489Turkishtr449Turkishtr4490Turkishtr4491Turkishtr4492Turkishtr4493Turkishtr4494Turkishtr4495Turkishtr4496Turkishtr4497Turkishtr4498Turkishtr4499Turkishtr45Turkishtr450Turkishtr4500Turkishtr4501Turkishtr4502Turkishtr4503Turkishtr4504Turkishtr4505Turkishtr4506Turkishtr4507Turkishtr4508Turkishtr4509Turkishtr451Turkishtr4510Turkishtr4511Turkishtr4512Turkishtr4513Turkishtr4514Turkishtr4515Turkishtr4516Turkishtr4517Turkishtr4518Turkishtr4519Turkishtr452Turkishtr4520Turkishtr4521Turkishtr4522Turkishtr4523Turkishtr4524Turkishtr4525Turkishtr4526Turkishtr4527Turkishtr4528Turkishtr4529Turkishtr453Turkishtr4530Turkishtr4531Turkishtr4532Turkishtr4533Turkishtr4534Turkishtr4535Turkishtr4536Turkishtr4537Turkishtr4538Turkishtr4539Turkishtr454Turkishtr4540Turkishtr4541Turkishtr4542Turkishtr4543Turkishtr4544Turkishtr4545Turkishtr4546Turkishtr4547Turkishtr4548Turkishtr4549Turkishtr455Turkishtr4550Turkishtr4551Turkishtr4552Turkishtr4553Turkishtr4554Turkishtr4555Turkishtr4556Turkishtr4557Turkishtr4558Turkishtr4559Turkishtr456Turkishtr4560Turkishtr4561Turkishtr4562Turkishtr4563Turkishtr4564Turkishtr4565Turkishtr4566Turkishtr4567Turkishtr4568Turkishtr4569Turkishtr457Turkishtr4570Turkishtr4571Turkishtr4572Turkishtr4573Turkishtr4574Turkishtr4575Turkishtr4576Turkishtr4577Turkishtr4578Turkishtr4579Turkishtr458Turkishtr4580Turkishtr4581Turkishtr4582Turkishtr4583Turkishtr4584Turkishtr4585Turkishtr4586Turkishtr4587Turkishtr4588Turkishtr4589Turkishtr459Turkishtr4590Turkishtr4591Turkishtr4592Turkishtr4593Turkishtr4594Turkishtr4595Turkishtr4596Turkishtr4597Turkishtr4598Turkishtr4599Turkishtr46Turkishtr460Turkishtr4600Turkishtr4601Turkishtr4602Turkishtr4603Turkishtr4604Turkishtr4605Turkishtr4606Turkishtr4607Turkishtr4608Turkishtr4609Turkishtr461Turkishtr4610Turkishtr4611Turkishtr4612Turkishtr4613Turkishtr4614Turkishtr4615Turkishtr4616Turkishtr4617Turkishtr4618Turkishtr4619Turkishtr462Turkishtr4620Turkishtr4621Turkishtr4622Turkishtr4623Turkishtr4624Turkishtr4625Turkishtr4626Turkishtr4627Turkishtr4628Turkishtr4629Turkishtr463Turkishtr4630Turkishtr4631Turkishtr4632Turkishtr4633Turkishtr4634Turkishtr4635Turkishtr4636Turkishtr4637Turkishtr4638Turkishtr4639Turkishtr464Turkishtr4640Turkishtr4641Turkishtr4642Turkishtr4643Turkishtr4644Turkishtr4645Turkishtr4646Turkishtr4647Turkishtr4648Turkishtr4649Turkishtr465Turkishtr4650Turkishtr4651Turkishtr4652Turkishtr4653Turkishtr4654Turkishtr4655Turkishtr4656Turkishtr4657Turkishtr4658Turkishtr4659Turkishtr466Turkishtr4660Turkishtr4661Turkishtr4662Turkishtr4663Turkishtr4664Turkishtr4665Turkishtr4666Turkishtr4667Turkishtr4668Turkishtr4669Turkishtr467Turkishtr4670Turkishtr4671Turkishtr4672Turkishtr4673Turkishtr4674Turkishtr4675Turkishtr4676Turkishtr4677Turkishtr4678Turkishtr4679Turkishtr468Turkishtr4680Turkishtr4681Turkishtr4682Turkishtr4683Turkishtr4684Turkishtr4685Turkishtr4686Turkishtr4687Turkishtr4688Turkishtr4689Turkishtr469Turkishtr4690Turkishtr4691Turkishtr4692Turkishtr4693Turkishtr4694Turkishtr4695Turkishtr4696Turkishtr4697Turkishtr4698Turkishtr4699Turkishtr47Turkishtr470Turkishtr4700Turkishtr4701Turkishtr4702Turkishtr4703Turkishtr4704Turkishtr4705Turkishtr4706Turkishtr4707Turkishtr4708Turkishtr4709Turkishtr471Turkishtr4710Turkishtr4711Turkishtr4712Turkishtr4713Turkishtr4714Turkishtr4715Turkishtr4716Turkishtr4717Turkishtr4718Turkishtr4719Turkishtr472Turkishtr4720Turkishtr4721Turkishtr4722Turkishtr4723Turkishtr4724Turkishtr4725Turkishtr4726Turkishtr4727Turkishtr4728Turkishtr4729Turkishtr473Turkishtr4730Turkishtr4731Turkishtr4732Turkishtr4733Turkishtr4734Turkishtr4735Turkishtr4736Turkishtr4737Turkishtr4738Turkishtr4739Turkishtr474Turkishtr4740Turkishtr4741Turkishtr4742Turkishtr4743Turkishtr4744Turkishtr4745Turkishtr4746Turkishtr4747Turkishtr4748Turkishtr4749Turkishtr475Turkishtr4750Turkishtr4751Turkishtr4752Turkishtr4753Turkishtr4754Turkishtr4755Turkishtr4756Turkishtr4757Turkishtr4758Turkishtr4759Turkishtr476Turkishtr4760Turkishtr4761Turkishtr4762Turkishtr4763Turkishtr4764Turkishtr4765Turkishtr4766Turkishtr4767Turkishtr4768Turkishtr4769Turkishtr477Turkishtr4770Turkishtr4771Turkishtr4772Turkishtr4773Turkishtr4774Turkishtr4775Turkishtr4776Turkishtr4777Turkishtr4778Turkishtr4779Turkishtr478Turkishtr4780Turkishtr4781Turkishtr4782Turkishtr4783Turkishtr4784Turkishtr4785Turkishtr4786Turkishtr4787Turkishtr4788Turkishtr4789Turkishtr479Turkishtr4790Turkishtr4791Turkishtr4792Turkishtr4793Turkishtr4794Turkishtr4795Turkishtr4796Turkishtr4797Turkishtr4798Turkishtr4799Turkishtr48Turkishtr480Turkishtr4800Turkishtr4801Turkishtr4802Turkishtr4803Turkishtr4804Turkishtr4805Turkishtr4806Turkishtr4807Turkishtr4808Turkishtr4809Turkishtr481Turkishtr4810Turkishtr4811Turkishtr4812Turkishtr4813Turkishtr4814Turkishtr4815Turkishtr4816Turkishtr4817Turkishtr4818Turkishtr4819Turkishtr482Turkishtr4820Turkishtr4821Turkishtr4822Turkishtr4823Turkishtr4824Turkishtr4825Turkishtr4826Turkishtr4827Turkishtr4828Turkishtr4829Turkishtr483Turkishtr4830Turkishtr4831Turkishtr4832Turkishtr4833Turkishtr4834Turkishtr4835Turkishtr4836Turkishtr4837Turkishtr4838Turkishtr4839Turkishtr484Turkishtr4840Turkishtr4841Turkishtr4842Turkishtr4843Turkishtr4844Turkishtr4845Turkishtr4846Turkishtr4847Turkishtr4848Turkishtr4849Turkishtr485Turkishtr4850Turkishtr4851Turkishtr4852Turkishtr4853Turkishtr4854Turkishtr4855Turkishtr4856Turkishtr4857Turkishtr4858Turkishtr4859Turkishtr486Turkishtr4860Turkishtr4861Turkishtr4862Turkishtr4863Turkishtr4864Turkishtr4865Turkishtr4866Turkishtr4867Turkishtr4868Turkishtr4869Turkishtr487Turkishtr4870Turkishtr4871Turkishtr4872Turkishtr4873Turkishtr4874Turkishtr4875Turkishtr4876Turkishtr4877Turkishtr4878Turkishtr4879Turkishtr488Turkishtr4880Turkishtr4881Turkishtr4882Turkishtr4883Turkishtr4884Turkishtr4885Turkishtr4886Turkishtr4887Turkishtr4888Turkishtr4889Turkishtr489Turkishtr4890Turkishtr4891Turkishtr4892Turkishtr4893Turkishtr4894Turkishtr4895Turkishtr4896Turkishtr4897Turkishtr4898Turkishtr4899Turkishtr49Turkishtr490Turkishtr4900Turkishtr4901Turkishtr4902Turkishtr4903Turkishtr4904Turkishtr4905Turkishtr4906Turkishtr4907Turkishtr4908Turkishtr4909Turkishtr491Turkishtr4910Turkishtr4911Turkishtr4912Turkishtr4913Turkishtr4914Turkishtr4915Turkishtr4916Turkishtr4917Turkishtr4918Turkishtr4919Turkishtr492Turkishtr4920Turkishtr4921Turkishtr4922Turkishtr4923Turkishtr4924Turkishtr4925Turkishtr4926Turkishtr4927Turkishtr4928Turkishtr4929Turkishtr493Turkishtr4930Turkishtr4931Turkishtr4932Turkishtr4933Turkishtr4934Turkishtr4935Turkishtr4936Turkishtr4937Turkishtr4938Turkishtr4939Turkishtr494Turkishtr4940Turkishtr4941Turkishtr4942Turkishtr4943Turkishtr4944Turkishtr4945Turkishtr4946Turkishtr4947Turkishtr4948Turkishtr4949Turkishtr495Turkishtr4950Turkishtr4951Turkishtr4952Turkishtr4953Turkishtr4954Turkishtr4955Turkishtr4956Turkishtr4957Turkishtr4958Turkishtr4959Turkishtr496Turkishtr4960Turkishtr4961Turkishtr4962Turkishtr4963Turkishtr4964Turkishtr4965Turkishtr4966Turkishtr4967Turkishtr4968Turkishtr4969Turkishtr497Turkishtr4970Turkishtr4971Turkishtr4972Turkishtr4973Turkishtr4974Turkishtr4975Turkishtr4976Turkishtr4977Turkishtr4978Turkishtr4979Turkishtr498Turkishtr4980Turkishtr4981Turkishtr4982Turkishtr4983Turkishtr4984Turkishtr4985Turkishtr4986Turkishtr4987Turkishtr4988Turkishtr4989Turkishtr499Turkishtr4990Turkishtr4991Turkishtr4992Turkishtr4993Turkishtr4994Turkishtr4995Turkishtr4996Turkishtr4997Turkishtr4998Turkishtr4999Turkishtr5Turkishtr50Turkishtr500Turkishtr5000Turkishtr5001Turkishtr5002Turkishtr5003Turkishtr5004Turkishtr5005Turkishtr5006Turkishtr5007Turkishtr5008Turkishtr5009Turkishtr501Turkishtr5010Turkishtr5011Turkishtr5012Turkishtr5013Turkishtr5014Turkishtr5015Turkishtr5016Turkishtr5017Turkishtr5018Turkishtr5019Turkishtr502Turkishtr5020Turkishtr5021Turkishtr5022Turkishtr5023Turkishtr5024Turkishtr5025Turkishtr5026Turkishtr5027Turkishtr5028Turkishtr5029Turkishtr503Turkishtr5030Turkishtr5031Turkishtr5032Turkishtr5033Turkishtr5034Turkishtr5035Turkishtr5036Turkishtr5037Turkishtr5038Turkishtr5039Turkishtr504Turkishtr5040Turkishtr5041Turkishtr5042Turkishtr5043Turkishtr5044Turkishtr5045Turkishtr5046Turkishtr5047Turkishtr5048Turkishtr5049Turkishtr505Turkishtr5050Turkishtr5051Turkishtr5052Turkishtr5053Turkishtr5054Turkishtr5055Turkishtr5056Turkishtr5057Turkishtr5058Turkishtr5059Turkishtr506Turkishtr5060Turkishtr5061Turkishtr5062Turkishtr5063Turkishtr5064Turkishtr5065Turkishtr5066Turkishtr5067Turkishtr5068Turkishtr5069Turkishtr507Turkishtr5070Turkishtr5071Turkishtr5072Turkishtr5073Turkishtr5074Turkishtr5075Turkishtr5076Turkishtr5077Turkishtr5078Turkishtr5079Turkishtr508Turkishtr5080Turkishtr5081Turkishtr5082Turkishtr5083Turkishtr5084Turkishtr5085Turkishtr5086Turkishtr5087Turkishtr5088Turkishtr5089Turkishtr509Turkishtr5090Turkishtr5091Turkishtr5092Turkishtr5093Turkishtr5094Turkishtr5095Turkishtr5096Turkishtr5097Turkishtr5098Turkishtr5099Turkishtr51Turkishtr510Turkishtr5100Turkishtr5101Turkishtr5102Turkishtr5103Turkishtr5104Turkishtr5105Turkishtr5106Turkishtr5107Turkishtr5108Turkishtr5109Turkishtr511Turkishtr5110Turkishtr5111Turkishtr5112Turkishtr5113Turkishtr5114Turkishtr5115Turkishtr5116Turkishtr5117Turkishtr5118Turkishtr5119Turkishtr512Turkishtr5120Turkishtr5121Turkishtr5122Turkishtr5123Turkishtr5124Turkishtr5125Turkishtr5126Turkishtr5127Turkishtr5128Turkishtr5129Turkishtr513Turkishtr5130Turkishtr5131Turkishtr5132Turkishtr5133Turkishtr5134Turkishtr5135Turkishtr5136Turkishtr5137Turkishtr5138Turkishtr5139Turkishtr514Turkishtr5140Turkishtr5141Turkishtr5142Turkishtr5143Turkishtr5144Turkishtr5145Turkishtr5146Turkishtr5147Turkishtr5148Turkishtr5149Turkishtr515Turkishtr5150Turkishtr5151Turkishtr5152Turkishtr5153Turkishtr5154Turkishtr5155Turkishtr5156Turkishtr5157Turkishtr5158Turkishtr5159Turkishtr516Turkishtr5160Turkishtr5161Turkishtr5162Turkishtr5163Turkishtr5164Turkishtr5165Turkishtr5166Turkishtr5167Turkishtr5168Turkishtr5169Turkishtr517Turkishtr5170Turkishtr5171Turkishtr5172Turkishtr5173Turkishtr5174Turkishtr5175Turkishtr5176Turkishtr5177Turkishtr5178Turkishtr5179Turkishtr518Turkishtr5180Turkishtr5181Turkishtr5182Turkishtr5183Turkishtr5184Turkishtr5185Turkishtr5186Turkishtr5187Turkishtr5188Turkishtr5189Turkishtr519Turkishtr5190Turkishtr5191Turkishtr5192Turkishtr5193Turkishtr5194Turkishtr5195Turkishtr5196Turkishtr5197Turkishtr5198Turkishtr5199Turkishtr52Turkishtr520Turkishtr5200Turkishtr5201Turkishtr5202Turkishtr5203Turkishtr5204Turkishtr5205Turkishtr5206Turkishtr5207Turkishtr5208Turkishtr5209Turkishtr521Turkishtr5210Turkishtr5211Turkishtr5212Turkishtr5213Turkishtr5214Turkishtr5215Turkishtr5216Turkishtr5217Turkishtr5218Turkishtr5219Turkishtr522Turkishtr5220Turkishtr5221Turkishtr5222Turkishtr5223Turkishtr5224Turkishtr5225Turkishtr5226Turkishtr5227Turkishtr5228Turkishtr5229Turkishtr523Turkishtr5230Turkishtr5231Turkishtr5232Turkishtr5233Turkishtr5234Turkishtr5235Turkishtr5236Turkishtr5237Turkishtr5238Turkishtr5239Turkishtr524Turkishtr5240Turkishtr5241Turkishtr5242Turkishtr5243Turkishtr5244Turkishtr5245Turkishtr5246Turkishtr5247Turkishtr5248Turkishtr5249Turkishtr525Turkishtr5250Turkishtr5251Turkishtr5252Turkishtr5253Turkishtr5254Turkishtr5255Turkishtr5256Turkishtr5257Turkishtr5258Turkishtr5259Turkishtr526Turkishtr5260Turkishtr5261Turkishtr5262Turkishtr5263Turkishtr5264Turkishtr5265Turkishtr5266Turkishtr5267Turkishtr5268Turkishtr5269Turkishtr527Turkishtr5270Turkishtr5271Turkishtr5272Turkishtr5273Turkishtr5274Turkishtr5275Turkishtr5276Turkishtr5277Turkishtr5278Turkishtr5279Turkishtr528Turkishtr5280Turkishtr5281Turkishtr5282Turkishtr5283Turkishtr5284Turkishtr5285Turkishtr5286Turkishtr5287Turkishtr5288Turkishtr5289Turkishtr529Turkishtr5290Turkishtr5291Turkishtr5292Turkishtr5293Turkishtr5294Turkishtr5295Turkishtr5296Turkishtr5297Turkishtr5298Turkishtr5299Turkishtr53Turkishtr530Turkishtr5300Turkishtr5301Turkishtr5302Turkishtr5303Turkishtr5304Turkishtr5305Turkishtr5306Turkishtr5307Turkishtr5308Turkishtr5309Turkishtr531Turkishtr5310Turkishtr5311Turkishtr5312Turkishtr5313Turkishtr5314Turkishtr5315Turkishtr5316Turkishtr5317Turkishtr5318Turkishtr5319Turkishtr532Turkishtr5320Turkishtr5321Turkishtr5322Turkishtr5323Turkishtr5324Turkishtr5325Turkishtr5326Turkishtr5327Turkishtr5328Turkishtr5329Turkishtr533Turkishtr5330Turkishtr5331Turkishtr5332Turkishtr5333Turkishtr5334Turkishtr5335Turkishtr5336Turkishtr5337Turkishtr5338Turkishtr5339Turkishtr534Turkishtr5340Turkishtr5341Turkishtr5342Turkishtr5343Turkishtr5344Turkishtr5345Turkishtr5346Turkishtr5347Turkishtr5348Turkishtr5349Turkishtr535Turkishtr5350Turkishtr5351Turkishtr5352Turkishtr5353Turkishtr5354Turkishtr5355Turkishtr5356Turkishtr5357Turkishtr5358Turkishtr5359Turkishtr536Turkishtr5360Turkishtr5361Turkishtr5362Turkishtr5363Turkishtr5364Turkishtr5365Turkishtr5366Turkishtr5367Turkishtr5368Turkishtr5369Turkishtr537Turkishtr5370Turkishtr5371Turkishtr5372Turkishtr5373Turkishtr5374Turkishtr5375Turkishtr5376Turkishtr5377Turkishtr5378Turkishtr5379Turkishtr538Turkishtr5380Turkishtr5381Turkishtr5382Turkishtr5383Turkishtr5384Turkishtr5385Turkishtr5386Turkishtr5387Turkishtr5388Turkishtr5389Turkishtr539Turkishtr5390Turkishtr5391Turkishtr5392Turkishtr5393Turkishtr5394Turkishtr5395Turkishtr5396Turkishtr5397Turkishtr5398Turkishtr5399Turkishtr54Turkishtr540Turkishtr5400Turkishtr5401Turkishtr5402Turkishtr5403Turkishtr5404Turkishtr5405Turkishtr5406Turkishtr5407Turkishtr5408Turkishtr5409Turkishtr541Turkishtr5410Turkishtr5411Turkishtr5412Turkishtr5413Turkishtr5414Turkishtr5415Turkishtr5416Turkishtr5417Turkishtr5418Turkishtr5419Turkishtr542Turkishtr5420Turkishtr5421Turkishtr5422Turkishtr5423Turkishtr5424Turkishtr5425Turkishtr5426Turkishtr5427Turkishtr5428Turkishtr5429Turkishtr543Turkishtr5430Turkishtr5431Turkishtr5432Turkishtr5433Turkishtr5434Turkishtr5435Turkishtr5436Turkishtr5437Turkishtr5438Turkishtr5439Turkishtr544Turkishtr5440Turkishtr5441Turkishtr5442Turkishtr5443Turkishtr5444Turkishtr5445Turkishtr5446Turkishtr5447Turkishtr5448Turkishtr5449Turkishtr545Turkishtr5450Turkishtr5451Turkishtr5452Turkishtr5453Turkishtr5454Turkishtr5455Turkishtr5456Turkishtr5457Turkishtr5458Turkishtr5459Turkishtr546Turkishtr5460Turkishtr5461Turkishtr5462Turkishtr5463Turkishtr5464Turkishtr5465Turkishtr5466Turkishtr5467Turkishtr5468Turkishtr5469Turkishtr547Turkishtr5470Turkishtr5471Turkishtr5472Turkishtr5473Turkishtr5474Turkishtr5475Turkishtr5476Turkishtr5477Turkishtr5478Turkishtr5479Turkishtr548Turkishtr5480Turkishtr5481Turkishtr5482Turkishtr5483Turkishtr5484Turkishtr5485Turkishtr5486Turkishtr5487Turkishtr5488Turkishtr5489Turkishtr549Turkishtr5490Turkishtr5491Turkishtr5492Turkishtr5493Turkishtr5494Turkishtr5495Turkishtr5496Turkishtr5497Turkishtr5498Turkishtr5499Turkishtr55Turkishtr550Turkishtr5500Turkishtr5501Turkishtr5502Turkishtr5503Turkishtr5504Turkishtr5505Turkishtr5506Turkishtr5507Turkishtr5508Turkishtr5509Turkishtr551Turkishtr5510Turkishtr5511Turkishtr5512Turkishtr5513Turkishtr5514Turkishtr5515Turkishtr5516Turkishtr5517Turkishtr5518Turkishtr5519Turkishtr552Turkishtr5520Turkishtr5521Turkishtr5522Turkishtr5523Turkishtr5524Turkishtr5525Turkishtr5526Turkishtr5527Turkishtr5528Turkishtr5529Turkishtr553Turkishtr5530Turkishtr5531Turkishtr5532Turkishtr5533Turkishtr5534Turkishtr5535Turkishtr5536Turkishtr5537Turkishtr5538Turkishtr5539Turkishtr554Turkishtr5540Turkishtr5541Turkishtr5542Turkishtr5543Turkishtr5544Turkishtr5545Turkishtr5546Turkishtr5547Turkishtr5548Turkishtr5549Turkishtr555Turkishtr5550Turkishtr5551Turkishtr5552Turkishtr5553Turkishtr5554Turkishtr5555Turkishtr5556Turkishtr5557Turkishtr5558Turkishtr5559Turkishtr556Turkishtr5560Turkishtr5561Turkishtr5562Turkishtr5563Turkishtr5564Turkishtr5565Turkishtr5566Turkishtr5567Turkishtr5568Turkishtr5569Turkishtr557Turkishtr5570Turkishtr5571Turkishtr5572Turkishtr5573Turkishtr5574Turkishtr5575Turkishtr5576Turkishtr5577Turkishtr5578Turkishtr5579Turkishtr558Turkishtr5580Turkishtr5581Turkishtr5582Turkishtr5583Turkishtr5584Turkishtr5585Turkishtr5586Turkishtr5587Turkishtr5588Turkishtr5589Turkishtr559Turkishtr5590Turkishtr5591Turkishtr5592Turkishtr5593Turkishtr5594Turkishtr5595Turkishtr5596Turkishtr5597Turkishtr5598Turkishtr5599Turkishtr56Turkishtr560Turkishtr5600Turkishtr5601Turkishtr5602Turkishtr5603Turkishtr5604Turkishtr5605Turkishtr5606Turkishtr5607Turkishtr5608Turkishtr5609Turkishtr561Turkishtr5610Turkishtr5611Turkishtr5612Turkishtr5613Turkishtr5614Turkishtr5615Turkishtr5616Turkishtr5617Turkishtr5618Turkishtr5619Turkishtr562Turkishtr5620Turkishtr5621Turkishtr5622Turkishtr5623Turkishtr5624Turkishtr5625Turkishtr5626Turkishtr5627Turkishtr5628Turkishtr5629Turkishtr563Turkishtr5630Turkishtr5631Turkishtr5632Turkishtr5633Turkishtr5634Turkishtr5635Turkishtr5636Turkishtr5637Turkishtr5638Turkishtr5639Turkishtr564Turkishtr5640Turkishtr5641Turkishtr5642Turkishtr5643Turkishtr5644Turkishtr5645Turkishtr5646Turkishtr5647Turkishtr5648Turkishtr5649Turkishtr565Turkishtr5650Turkishtr5651Turkishtr5652Turkishtr5653Turkishtr5654Turkishtr5655Turkishtr5656Turkishtr5657Turkishtr5658Turkishtr5659Turkishtr566Turkishtr5660Turkishtr5661Turkishtr5662Turkishtr5663Turkishtr5664Turkishtr5665Turkishtr5666Turkishtr5667Turkishtr5668Turkishtr5669Turkishtr567Turkishtr5670Turkishtr5671Turkishtr5672Turkishtr5673Turkishtr5674Turkishtr5675Turkishtr5676Turkishtr5677Turkishtr5678Turkishtr5679Turkishtr568Turkishtr5680Turkishtr5681Turkishtr5682Turkishtr5683Turkishtr5684Turkishtr5685Turkishtr5686Turkishtr5687Turkishtr5688Turkishtr5689Turkishtr569Turkishtr5690Turkishtr5691Turkishtr5692Turkishtr5693Turkishtr5694Turkishtr5695Turkishtr5696Turkishtr5697Turkishtr5698Turkishtr5699Turkishtr57Turkishtr570Turkishtr5700Turkishtr5701Turkishtr5702Turkishtr5703Turkishtr5704Turkishtr5705Turkishtr5706Turkishtr5707Turkishtr5708Turkishtr5709Turkishtr571Turkishtr5710Turkishtr5711Turkishtr5712Turkishtr5713Turkishtr5714Turkishtr5715Turkishtr5716Turkishtr5717Turkishtr5718Turkishtr5719Turkishtr572Turkishtr5720Turkishtr5721Turkishtr5722Turkishtr5723Turkishtr5724Turkishtr5725Turkishtr5726Turkishtr5727Turkishtr5728Turkishtr5729Turkishtr573Turkishtr5730Turkishtr5731Turkishtr5732Turkishtr5733Turkishtr5734Turkishtr5735Turkishtr5736Turkishtr5737Turkishtr5738Turkishtr5739Turkishtr574Turkishtr5740Turkishtr5741Turkishtr5742Turkishtr5743Turkishtr5744Turkishtr5745Turkishtr5746Turkishtr5747Turkishtr5748Turkishtr5749Turkishtr575Turkishtr5750Turkishtr5751Turkishtr5752Turkishtr5753Turkishtr5754Turkishtr5755Turkishtr5756Turkishtr5757Turkishtr5758Turkishtr5759Turkishtr576Turkishtr5760Turkishtr5761Turkishtr5762Turkishtr5763Turkishtr5764Turkishtr5765Turkishtr5766Turkishtr5767Turkishtr5768Turkishtr5769Turkishtr577Turkishtr5770Turkishtr5771Turkishtr5772Turkishtr5773Turkishtr5774Turkishtr5775Turkishtr5776Turkishtr5777Turkishtr5778Turkishtr5779Turkishtr578Turkishtr5780Turkishtr5781Turkishtr5782Turkishtr5783Turkishtr5784Turkishtr5785Turkishtr5786Turkishtr5787Turkishtr5788Turkishtr5789Turkishtr579Turkishtr5790Turkishtr5791Turkishtr5792Turkishtr5793Turkishtr5794Turkishtr5795Turkishtr5796Turkishtr5797Turkishtr5798Turkishtr5799Turkishtr58Turkishtr580Turkishtr5800Turkishtr5801Turkishtr5802Turkishtr5803Turkishtr5804Turkishtr5805Turkishtr5806Turkishtr5807Turkishtr5808Turkishtr5809Turkishtr581Turkishtr5810Turkishtr5811Turkishtr5812Turkishtr5813Turkishtr5814Turkishtr5815Turkishtr5816Turkishtr5817Turkishtr5818Turkishtr5819Turkishtr582Turkishtr5820Turkishtr5821Turkishtr5822Turkishtr5823Turkishtr5824Turkishtr5825Turkishtr5826Turkishtr5827Turkishtr5828Turkishtr5829Turkishtr583Turkishtr5830Turkishtr5831Turkishtr5832Turkishtr5833Turkishtr5834Turkishtr5835Turkishtr5836Turkishtr5837Turkishtr5838Turkishtr5839Turkishtr584Turkishtr5840Turkishtr5841Turkishtr5842Turkishtr5843Turkishtr5844Turkishtr5845Turkishtr5846Turkishtr5847Turkishtr5848Turkishtr5849Turkishtr585Turkishtr5850Turkishtr5851Turkishtr5852Turkishtr5853Turkishtr5854Turkishtr5855Turkishtr5856Turkishtr5857Turkishtr5858Turkishtr5859Turkishtr586Turkishtr5860Turkishtr5861Turkishtr5862Turkishtr5863Turkishtr5864Turkishtr5865Turkishtr5866Turkishtr5867Turkishtr5868Turkishtr5869Turkishtr587Turkishtr5870Turkishtr5871Turkishtr5872Turkishtr5873Turkishtr5874Turkishtr5875Turkishtr5876Turkishtr5877Turkishtr5878Turkishtr5879Turkishtr588Turkishtr5880Turkishtr5881Turkishtr5882Turkishtr5883Turkishtr5884Turkishtr5885Turkishtr5886Turkishtr5887Turkishtr5888Turkishtr5889Turkishtr589Turkishtr5890Turkishtr5891Turkishtr5892Turkishtr5893Turkishtr5894Turkishtr5895Turkishtr5896Turkishtr5897Turkishtr5898Turkishtr5899Turkishtr59Turkishtr590Turkishtr5900Turkishtr5901Turkishtr5902Turkishtr5903Turkishtr5904Turkishtr5905Turkishtr5906Turkishtr5907Turkishtr5908Turkishtr5909Turkishtr591Turkishtr5910Turkishtr5911Turkishtr5912Turkishtr5913Turkishtr5914Turkishtr5915Turkishtr5916Turkishtr5917Turkishtr5918Turkishtr5919Turkishtr592Turkishtr5920Turkishtr5921Turkishtr5922Turkishtr5923Turkishtr5924Turkishtr5925Turkishtr5926Turkishtr5927Turkishtr5928Turkishtr5929Turkishtr593Turkishtr5930Turkishtr5931Turkishtr5932Turkishtr5933Turkishtr5934Turkishtr5935Turkishtr5936Turkishtr5937Turkishtr5938Turkishtr5939Turkishtr594Turkishtr5940Turkishtr5941Turkishtr5942Turkishtr5943Turkishtr5944Turkishtr5945Turkishtr5946Turkishtr5947Turkishtr5948Turkishtr5949Turkishtr595Turkishtr5950Turkishtr5951Turkishtr5952Turkishtr5953Turkishtr5954Turkishtr5955Turkishtr5956Turkishtr5957Turkishtr5958Turkishtr5959Turkishtr596Turkishtr5960Turkishtr5961Turkishtr5962Turkishtr5963Turkishtr5964Turkishtr5965Turkishtr5966Turkishtr5967Turkishtr5968Turkishtr5969Turkishtr597Turkishtr5970Turkishtr5971Turkishtr5972Turkishtr5973Turkishtr5974Turkishtr5975Turkishtr5976Turkishtr5977Turkishtr5978Turkishtr5979Turkishtr598Turkishtr5980Turkishtr5981Turkishtr5982Turkishtr5983Turkishtr5984Turkishtr5985Turkishtr5986Turkishtr5987Turkishtr5988Turkishtr5989Turkishtr599Turkishtr5990Turkishtr5991Turkishtr5992Turkishtr5993Turkishtr5994Turkishtr5995Turkishtr5996Turkishtr5997Turkishtr5998Turkishtr5999Turkishtr6Turkishtr60Turkishtr600Turkishtr6000Turkishtr6001Turkishtr6002Turkishtr6003Turkishtr6004Turkishtr6005Turkishtr6006Turkishtr6007Turkishtr6008Turkishtr6009Turkishtr601Turkishtr6010Turkishtr6011Turkishtr6012Turkishtr6013Turkishtr6014Turkishtr6015Turkishtr6016Turkishtr6017Turkishtr6018Turkishtr6019Turkishtr602Turkishtr6020Turkishtr6021Turkishtr6022Turkishtr6023Turkishtr6024Turkishtr6025Turkishtr6026Turkishtr6027Turkishtr6028Turkishtr6029Turkishtr603Turkishtr6030Turkishtr6031Turkishtr6032Turkishtr6033Turkishtr6034Turkishtr6035Turkishtr6036Turkishtr6037Turkishtr6038Turkishtr6039Turkishtr604Turkishtr6040Turkishtr6041Turkishtr6042Turkishtr6043Turkishtr6044Turkishtr6045Turkishtr6046Turkishtr6047Turkishtr6048Turkishtr6049Turkishtr605Turkishtr6050Turkishtr6051Turkishtr6052Turkishtr6053Turkishtr6054Turkishtr6055Turkishtr6056Turkishtr6057Turkishtr6058Turkishtr6059Turkishtr606Turkishtr6060Turkishtr6061Turkishtr6062Turkishtr6063Turkishtr6064Turkishtr6065Turkishtr6066Turkishtr6067Turkishtr6068Turkishtr6069Turkishtr607Turkishtr6070Turkishtr6071Turkishtr6072Turkishtr6073Turkishtr6074Turkishtr6075Turkishtr6076Turkishtr6077Turkishtr6078Turkishtr6079Turkishtr608Turkishtr6080Turkishtr6081Turkishtr6082Turkishtr6083Turkishtr6084Turkishtr6085Turkishtr6086Turkishtr6087Turkishtr6088Turkishtr6089Turkishtr609Turkishtr6090Turkishtr6091Turkishtr6092Turkishtr6093Turkishtr6094Turkishtr6095Turkishtr6096Turkishtr6097Turkishtr6098Turkishtr6099Turkishtr61Turkishtr610Turkishtr6100Turkishtr6101Turkishtr6102Turkishtr6103Turkishtr6104Turkishtr6105Turkishtr6106Turkishtr6107Turkishtr6108Turkishtr6109Turkishtr611Turkishtr6110Turkishtr6111Turkishtr6112Turkishtr6113Turkishtr6114Turkishtr6115Turkishtr6116Turkishtr6117Turkishtr6118Turkishtr6119Turkishtr612Turkishtr6120Turkishtr6121Turkishtr6122Turkishtr6123Turkishtr6124Turkishtr6125Turkishtr6126Turkishtr6127Turkishtr6128Turkishtr6129Turkishtr613Turkishtr6130Turkishtr6131Turkishtr6132Turkishtr6133Turkishtr6134Turkishtr6135Turkishtr6136Turkishtr6137Turkishtr6138Turkishtr6139Turkishtr614Turkishtr6140Turkishtr6141Turkishtr6142Turkishtr6143Turkishtr6144Turkishtr6145Turkishtr6146Turkishtr6147Turkishtr6148Turkishtr6149Turkishtr615Turkishtr6150Turkishtr6151Turkishtr6152Turkishtr6153Turkishtr6154Turkishtr6155Turkishtr6156Turkishtr6157Turkishtr6158Turkishtr6159Turkishtr616Turkishtr6160Turkishtr6161Turkishtr6162Turkishtr6163Turkishtr6164Turkishtr6165Turkishtr6166Turkishtr6167Turkishtr6168Turkishtr6169Turkishtr617Turkishtr6170Turkishtr6171Turkishtr6172Turkishtr6173Turkishtr6174Turkishtr6175Turkishtr6176Turkishtr6177Turkishtr6178Turkishtr6179Turkishtr618Turkishtr6180Turkishtr6181Turkishtr6182Turkishtr6183Turkishtr6184Turkishtr6185Turkishtr6186Turkishtr6187Turkishtr6188Turkishtr6189Turkishtr619Turkishtr6190Turkishtr6191Turkishtr6192Turkishtr6193Turkishtr6194Turkishtr6195Turkishtr6196Turkishtr6197Turkishtr6198Turkishtr6199Turkishtr62Turkishtr620Turkishtr6200Turkishtr6201Turkishtr6202Turkishtr6203Turkishtr6204Turkishtr6205Turkishtr6206Turkishtr6207Turkishtr6208Turkishtr6209Turkishtr621Turkishtr6210Turkishtr6211Turkishtr6212Turkishtr6213Turkishtr6214Turkishtr6215Turkishtr6216Turkishtr6217Turkishtr6218Turkishtr6219Turkishtr622Turkishtr6220Turkishtr6221Turkishtr6222Turkishtr6223Turkishtr6224Turkishtr6225Turkishtr6226Turkishtr6227Turkishtr6228Turkishtr6229Turkishtr623Turkishtr6230Turkishtr6231Turkishtr6232Turkishtr6233Turkishtr6234Turkishtr6235Turkishtr6236Turkishtr6237Turkishtr6238Turkishtr6239Turkishtr624Turkishtr6240Turkishtr6241Turkishtr6242Turkishtr6243Turkishtr6244Turkishtr6245Turkishtr6246Turkishtr6247Turkishtr6248Turkishtr6249Turkishtr625Turkishtr6250Turkishtr6251Turkishtr6252Turkishtr6253Turkishtr6254Turkishtr6255Turkishtr6256Turkishtr6257Turkishtr6258Turkishtr6259Turkishtr626Turkishtr6260Turkishtr6261Turkishtr6262Turkishtr6263Turkishtr6264Turkishtr6265Turkishtr6266Turkishtr6267Turkishtr6268Turkishtr6269Turkishtr627Turkishtr6270Turkishtr6271Turkishtr6272Turkishtr6273Turkishtr6274Turkishtr6275Turkishtr6276Turkishtr6277Turkishtr6278Turkishtr6279Turkishtr628Turkishtr6280Turkishtr6281Turkishtr6282Turkishtr6283Turkishtr6284Turkishtr6285Turkishtr6286Turkishtr6287Turkishtr6288Turkishtr6289Turkishtr629Turkishtr6290Turkishtr6291Turkishtr6292Turkishtr6293Turkishtr6294Turkishtr6295Turkishtr6296Turkishtr6297Turkishtr6298Turkishtr6299Turkishtr63Turkishtr630Turkishtr6300Turkishtr6301Turkishtr6302Turkishtr6303Turkishtr6304Turkishtr6305Turkishtr6306Turkishtr6307Turkishtr6308Turkishtr6309Turkishtr631Turkishtr6310Turkishtr6311Turkishtr6312Turkishtr6313Turkishtr6314Turkishtr6315Turkishtr6316Turkishtr6317Turkishtr6318Turkishtr6319Turkishtr632Turkishtr6320Turkishtr6321Turkishtr6322Turkishtr6323Turkishtr6324Turkishtr6325Turkishtr6326Turkishtr6327Turkishtr6328Turkishtr6329Turkishtr633Turkishtr6330Turkishtr6331Turkishtr6332Turkishtr6333Turkishtr6334Turkishtr6335Turkishtr6336Turkishtr6337Turkishtr6338Turkishtr6339Turkishtr634Turkishtr6340Turkishtr6341Turkishtr6342Turkishtr6343Turkishtr6344Turkishtr6345Turkishtr6346Turkishtr6347Turkishtr6348Turkishtr6349Turkishtr635Turkishtr6350Turkishtr6351Turkishtr6352Turkishtr6353Turkishtr6354Turkishtr6355Turkishtr6356Turkishtr6357Turkishtr6358Turkishtr6359Turkishtr636Turkishtr6360Turkishtr6361Turkishtr6362Turkishtr6363Turkishtr6364Turkishtr6365Turkishtr6366Turkishtr6367Turkishtr6368Turkishtr6369Turkishtr637Turkishtr6370Turkishtr6371Turkishtr6372Turkishtr6373Turkishtr6374Turkishtr6375Turkishtr6376Turkishtr6377Turkishtr6378Turkishtr6379Turkishtr638Turkishtr6380Turkishtr6381Turkishtr6382Turkishtr6383Turkishtr6384Turkishtr6385Turkishtr6386Turkishtr6387Turkishtr6388Turkishtr6389Turkishtr639Turkishtr6390Turkishtr6391Turkishtr6392Turkishtr6393Turkishtr6394Turkishtr6395Turkishtr6396Turkishtr6397Turkishtr6398Turkishtr6399Turkishtr64Turkishtr640Turkishtr6400Turkishtr6401Turkishtr6402Turkishtr6403Turkishtr6404Turkishtr6405Turkishtr6406Turkishtr6407Turkishtr6408Turkishtr6409Turkishtr641Turkishtr6410Turkishtr6411Turkishtr6412Turkishtr6413Turkishtr6414Turkishtr6415Turkishtr6416Turkishtr6417Turkishtr6418Turkishtr6419Turkishtr642Turkishtr6420Turkishtr6421Turkishtr6422Turkishtr6423Turkishtr6424Turkishtr6425Turkishtr6426Turkishtr6427Turkishtr6428Turkishtr6429Turkishtr643Turkishtr6430Turkishtr6431Turkishtr6432Turkishtr6433Turkishtr6434Turkishtr6435Turkishtr6436Turkishtr6437Turkishtr6438Turkishtr6439Turkishtr644Turkishtr6440Turkishtr6441Turkishtr6442Turkishtr6443Turkishtr6444Turkishtr6445Turkishtr6446Turkishtr6447Turkishtr6448Turkishtr6449Turkishtr645Turkishtr6450Turkishtr6451Turkishtr6452Turkishtr6453Turkishtr6454Turkishtr6455Turkishtr6456Turkishtr6457Turkishtr6458Turkishtr6459Turkishtr646Turkishtr6460Turkishtr6461Turkishtr6462Turkishtr6463Turkishtr6464Turkishtr6465Turkishtr6466Turkishtr6467Turkishtr6468Turkishtr6469Turkishtr647Turkishtr6470Turkishtr6471Turkishtr6472Turkishtr6473Turkishtr6474Turkishtr6475Turkishtr6476Turkishtr6477Turkishtr6478Turkishtr6479Turkishtr648Turkishtr6480Turkishtr6481Turkishtr6482Turkishtr6483Turkishtr6484Turkishtr6485Turkishtr6486Turkishtr6487Turkishtr6488Turkishtr6489Turkishtr649Turkishtr6490Turkishtr6491Turkishtr6492Turkishtr6493Turkishtr6494Turkishtr6495Turkishtr6496Turkishtr6497Turkishtr6498Turkishtr6499Turkishtr65Turkishtr650Turkishtr6500Turkishtr6501Turkishtr6502Turkishtr6503Turkishtr6504Turkishtr6505Turkishtr6506Turkishtr6507Turkishtr6508Turkishtr6509Turkishtr651Turkishtr6510Turkishtr6511Turkishtr6512Turkishtr6513Turkishtr6514Turkishtr6515Turkishtr6516Turkishtr6517Turkishtr6518Turkishtr6519Turkishtr652Turkishtr6520Turkishtr6521Turkishtr6522Turkishtr6523Turkishtr6524Turkishtr6525Turkishtr6526Turkishtr6527Turkishtr6528Turkishtr6529Turkishtr653Turkishtr6530Turkishtr6531Turkishtr6532Turkishtr6533Turkishtr6534Turkishtr6535Turkishtr6536Turkishtr6537Turkishtr6538Turkishtr6539Turkishtr654Turkishtr6540Turkishtr6541Turkishtr6542Turkishtr6543Turkishtr6544Turkishtr6545Turkishtr6546Turkishtr6547Turkishtr6548Turkishtr6549Turkishtr655Turkishtr6550Turkishtr6551Turkishtr6552Turkishtr6553Turkishtr6554Turkishtr6555Turkishtr6556Turkishtr6557Turkishtr6558Turkishtr6559Turkishtr656Turkishtr6560Turkishtr6561Turkishtr6562Turkishtr6563Turkishtr6564Turkishtr6565Turkishtr6566Turkishtr6567Turkishtr6568Turkishtr6569Turkishtr657Turkishtr6570Turkishtr6571Turkishtr6572Turkishtr6573Turkishtr6574Turkishtr6575Turkishtr6576Turkishtr6577Turkishtr6578Turkishtr6579Turkishtr658Turkishtr6580Turkishtr6581Turkishtr6582Turkishtr6583Turkishtr6584Turkishtr6585Turkishtr6586Turkishtr6587Turkishtr6588Turkishtr6589Turkishtr659Turkishtr6590Turkishtr6591Turkishtr6592Turkishtr6593Turkishtr6594Turkishtr6595Turkishtr6596Turkishtr6597Turkishtr6598Turkishtr6599Turkishtr66Turkishtr660Turkishtr6600Turkishtr6601Turkishtr6602Turkishtr6603Turkishtr6604Turkishtr6605Turkishtr6606Turkishtr6607Turkishtr6608Turkishtr6609Turkishtr661Turkishtr6610Turkishtr6611Turkishtr6612Turkishtr6613Turkishtr6614Turkishtr6615Turkishtr6616Turkishtr6617Turkishtr6618Turkishtr6619Turkishtr662Turkishtr6620Turkishtr6621Turkishtr6622Turkishtr6623Turkishtr6624Turkishtr6625Turkishtr6626Turkishtr6627Turkishtr6628Turkishtr6629Turkishtr663Turkishtr6630Turkishtr6631Turkishtr6632Turkishtr6633Turkishtr6634Turkishtr6635Turkishtr6636Turkishtr6637Turkishtr6638Turkishtr6639Turkishtr664Turkishtr6640Turkishtr6641Turkishtr6642Turkishtr6643Turkishtr6644Turkishtr6645Turkishtr6646Turkishtr6647Turkishtr6648Turkishtr6649Turkishtr665Turkishtr6650Turkishtr6651Turkishtr6652Turkishtr6653Turkishtr6654Turkishtr6655Turkishtr6656Turkishtr6657Turkishtr6658Turkishtr6659Turkishtr666Turkishtr6660Turkishtr6661Turkishtr6662Turkishtr6663Turkishtr6664Turkishtr6665Turkishtr6666Turkishtr6667Turkishtr6668Turkishtr6669Turkishtr667Turkishtr6670Turkishtr6671Turkishtr6672Turkishtr6673Turkishtr6674Turkishtr6675Turkishtr6676Turkishtr6677Turkishtr6678Turkishtr6679Turkishtr668Turkishtr6680Turkishtr6681Turkishtr6682Turkishtr6683Turkishtr6684Turkishtr6685Turkishtr6686Turkishtr6687Turkishtr6688Turkishtr6689Turkishtr669Turkishtr6690Turkishtr6691Turkishtr6692Turkishtr6693Turkishtr6694Turkishtr6695Turkishtr6696Turkishtr6697Turkishtr6698Turkishtr6699Turkishtr67Turkishtr670Turkishtr6700Turkishtr6701Turkishtr6702Turkishtr6703Turkishtr6704Turkishtr6705Turkishtr6706Turkishtr6707Turkishtr6708Turkishtr6709Turkishtr671Turkishtr6710Turkishtr6711Turkishtr6712Turkishtr6713Turkishtr6714Turkishtr6715Turkishtr6716Turkishtr6717Turkishtr6718Turkishtr6719Turkishtr672Turkishtr6720Turkishtr6721Turkishtr6722Turkishtr6723Turkishtr6724Turkishtr6725Turkishtr6726Turkishtr6727Turkishtr6728Turkishtr6729Turkishtr673Turkishtr6730Turkishtr6731Turkishtr6732Turkishtr6733Turkishtr6734Turkishtr6735Turkishtr6736Turkishtr6737Turkishtr6738Turkishtr6739Turkishtr674Turkishtr6740Turkishtr6741Turkishtr6742Turkishtr6743Turkishtr6744Turkishtr6745Turkishtr6746Turkishtr6747Turkishtr6748Turkishtr6749Turkishtr675Turkishtr6750Turkishtr6751Turkishtr6752Turkishtr6753Turkishtr6754Turkishtr6755Turkishtr6756Turkishtr6757Turkishtr6758Turkishtr6759Turkishtr676Turkishtr6760Turkishtr6761Turkishtr6762Turkishtr6763Turkishtr6764Turkishtr6765Turkishtr6766Turkishtr6767Turkishtr6768Turkishtr6769Turkishtr677Turkishtr6770Turkishtr6771Turkishtr6772Turkishtr6773Turkishtr6774Turkishtr6775Turkishtr6776Turkishtr6777Turkishtr6778Turkishtr6779Turkishtr678Turkishtr6780Turkishtr6781Turkishtr6782Turkishtr6783Turkishtr6784Turkishtr6785Turkishtr6786Turkishtr6787Turkishtr6788Turkishtr6789Turkishtr679Turkishtr6790Turkishtr6791Turkishtr6792Turkishtr6793Turkishtr6794Turkishtr6795Turkishtr6796Turkishtr6797Turkishtr6798Turkishtr6799Turkishtr68Turkishtr680Turkishtr6800Turkishtr6801Turkishtr6802Turkishtr6803Turkishtr6804Turkishtr6805Turkishtr6806Turkishtr6807Turkishtr6808Turkishtr6809Turkishtr681Turkishtr6810Turkishtr6811Turkishtr6812Turkishtr6813Turkishtr6814Turkishtr6815Turkishtr6816Turkishtr6817Turkishtr6818Turkishtr6819Turkishtr682Turkishtr6820Turkishtr6821Turkishtr6822Turkishtr6823Turkishtr6824Turkishtr6825Turkishtr6826Turkishtr6827Turkishtr6828Turkishtr6829Turkishtr683Turkishtr6830Turkishtr6831Turkishtr6832Turkishtr6833Turkishtr6834Turkishtr6835Turkishtr6836Turkishtr6837Turkishtr6838Turkishtr6839Turkishtr684Turkishtr6840Turkishtr6841Turkishtr6842Turkishtr6843Turkishtr6844Turkishtr6845Turkishtr6846Turkishtr6847Turkishtr6848Turkishtr6849Turkishtr685Turkishtr6850Turkishtr6851Turkishtr6852Turkishtr6853Turkishtr6854Turkishtr6855Turkishtr6856Turkishtr6857Turkishtr6858Turkishtr6859Turkishtr686Turkishtr6860Turkishtr6861Turkishtr6862Turkishtr6863Turkishtr6864Turkishtr6865Turkishtr6866Turkishtr6867Turkishtr6868Turkishtr6869Turkishtr687Turkishtr6870Turkishtr6871Turkishtr6872Turkishtr6873Turkishtr6874Turkishtr6875Turkishtr6876Turkishtr6877Turkishtr6878Turkishtr6879Turkishtr688Turkishtr6880Turkishtr6881Turkishtr6882Turkishtr6883Turkishtr6884Turkishtr6885Turkishtr6886Turkishtr6887Turkishtr6888Turkishtr6889Turkishtr689Turkishtr6890Turkishtr6891Turkishtr6892Turkishtr6893Turkishtr6894Turkishtr6895Turkishtr6896Turkishtr6897Turkishtr6898Turkishtr6899Turkishtr69Turkishtr690Turkishtr6900Turkishtr6901Turkishtr6902Turkishtr6903Turkishtr6904Turkishtr6905Turkishtr6906Turkishtr6907Turkishtr6908Turkishtr6909Turkishtr691Turkishtr6910Turkishtr6911Turkishtr6912Turkishtr6913Turkishtr6914Turkishtr6915Turkishtr6916Turkishtr6917Turkishtr6918Turkishtr6919Turkishtr692Turkishtr6920Turkishtr6921Turkishtr6922Turkishtr6923Turkishtr6924Turkishtr6925Turkishtr6926Turkishtr6927Turkishtr6928Turkishtr6929Turkishtr693Turkishtr6930Turkishtr6931Turkishtr6932Turkishtr6933Turkishtr6934Turkishtr6935Turkishtr6936Turkishtr6937Turkishtr6938Turkishtr6939Turkishtr694Turkishtr6940Turkishtr6941Turkishtr6942Turkishtr6943Turkishtr6944Turkishtr6945Turkishtr6946Turkishtr6947Turkishtr6948Turkishtr6949Turkishtr695Turkishtr6950Turkishtr6951Turkishtr6952Turkishtr6953Turkishtr6954Turkishtr6955Turkishtr6956Turkishtr6957Turkishtr6958Turkishtr6959Turkishtr696Turkishtr6960Turkishtr6961Turkishtr6962Turkishtr6963Turkishtr6964Turkishtr6965Turkishtr6966Turkishtr6967Turkishtr6968Turkishtr6969Turkishtr697Turkishtr6970Turkishtr6971Turkishtr6972Turkishtr6973Turkishtr6974Turkishtr6975Turkishtr6976Turkishtr6977Turkishtr6978Turkishtr6979Turkishtr698Turkishtr6980Turkishtr6981Turkishtr6982Turkishtr6983Turkishtr6984Turkishtr6985Turkishtr6986Turkishtr6987Turkishtr6988Turkishtr6989Turkishtr699Turkishtr6990Turkishtr6991Turkishtr6992Turkishtr6993Turkishtr6994Turkishtr6995Turkishtr6996Turkishtr6997Turkishtr6998Turkishtr6999Turkishtr7Turkishtr70Turkishtr700Turkishtr7000Turkishtr7001Turkishtr7002Turkishtr7003Turkishtr7004Turkishtr7005Turkishtr7006Turkishtr7007Turkishtr7008Turkishtr7009Turkishtr701Turkishtr7010Turkishtr7011Turkishtr7012Turkishtr7013Turkishtr7014Turkishtr7015Turkishtr7016Turkishtr7017Turkishtr7018Turkishtr7019Turkishtr702Turkishtr7020Turkishtr7021Turkishtr7022Turkishtr7023Turkishtr7024Turkishtr7025Turkishtr7026Turkishtr7027Turkishtr7028Turkishtr7029Turkishtr703Turkishtr7030Turkishtr7031Turkishtr7032Turkishtr7033Turkishtr7034Turkishtr7035Turkishtr7036Turkishtr7037Turkishtr7038Turkishtr7039Turkishtr704Turkishtr7040Turkishtr7041Turkishtr7042Turkishtr7043Turkishtr7044Turkishtr7045Turkishtr7046Turkishtr7047Turkishtr7048Turkishtr7049Turkishtr705Turkishtr7050Turkishtr7051Turkishtr7052Turkishtr7053Turkishtr7054Turkishtr7055Turkishtr7056Turkishtr7057Turkishtr7058Turkishtr7059Turkishtr706Turkishtr7060Turkishtr7061Turkishtr7062Turkishtr7063Turkishtr7064Turkishtr7065Turkishtr7066Turkishtr7067Turkishtr7068Turkishtr7069Turkishtr707Turkishtr7070Turkishtr7071Turkishtr7072Turkishtr7073Turkishtr7074Turkishtr7075Turkishtr7076Turkishtr7077Turkishtr7078Turkishtr7079Turkishtr708Turkishtr7080Turkishtr7081Turkishtr7082Turkishtr7083Turkishtr7084Turkishtr7085Turkishtr7086Turkishtr7087Turkishtr7088Turkishtr7089Turkishtr709Turkishtr7090Turkishtr7091Turkishtr7092Turkishtr7093Turkishtr7094Turkishtr7095Turkishtr7096Turkishtr7097Turkishtr7098Turkishtr7099Turkishtr71Turkishtr710Turkishtr7100Turkishtr7101Turkishtr7102Turkishtr7103Turkishtr7104Turkishtr7105Turkishtr7106Turkishtr7107Turkishtr7108Turkishtr7109Turkishtr711Turkishtr7110Turkishtr7111Turkishtr7112Turkishtr7113Turkishtr7114Turkishtr7115Turkishtr7116Turkishtr7117Turkishtr7118Turkishtr7119Turkishtr712Turkishtr7120Turkishtr7121Turkishtr7122Turkishtr7123Turkishtr7124Turkishtr7125Turkishtr7126Turkishtr7127Turkishtr7128Turkishtr7129Turkishtr713Turkishtr7130Turkishtr7131Turkishtr7132Turkishtr7133Turkishtr7134Turkishtr7135Turkishtr7136Turkishtr7137Turkishtr7138Turkishtr7139Turkishtr714Turkishtr7140Turkishtr7141Turkishtr7142Turkishtr7143Turkishtr7144Turkishtr7145Turkishtr7146Turkishtr7147Turkishtr7148Turkishtr7149Turkishtr715Turkishtr7150Turkishtr7151Turkishtr7152Turkishtr7153Turkishtr7154Turkishtr7155Turkishtr7156Turkishtr7157Turkishtr7158Turkishtr7159Turkishtr716Turkishtr7160Turkishtr7161Turkishtr7162Turkishtr7163Turkishtr7164Turkishtr7165Turkishtr7166Turkishtr7167Turkishtr7168Turkishtr7169Turkishtr717Turkishtr7170Turkishtr7171Turkishtr7172Turkishtr7173Turkishtr7174Turkishtr7175Turkishtr7176Turkishtr7177Turkishtr7178Turkishtr7179Turkishtr718Turkishtr7180Turkishtr7181Turkishtr7182Turkishtr7183Turkishtr7184Turkishtr7185Turkishtr7186Turkishtr7187Turkishtr7188Turkishtr7189Turkishtr719Turkishtr7190Turkishtr7191Turkishtr7192Turkishtr7193Turkishtr7194Turkishtr7195Turkishtr7196Turkishtr7197Turkishtr7198Turkishtr7199Turkishtr72Turkishtr720Turkishtr7200Turkishtr7201Turkishtr7202Turkishtr7203Turkishtr7204Turkishtr7205Turkishtr7206Turkishtr7207Turkishtr7208Turkishtr7209Turkishtr721Turkishtr7210Turkishtr7211Turkishtr7212Turkishtr7213Turkishtr7214Turkishtr7215Turkishtr7216Turkishtr7217Turkishtr7218Turkishtr7219Turkishtr722Turkishtr7220Turkishtr7221Turkishtr7222Turkishtr7223Turkishtr7224Turkishtr7225Turkishtr7226Turkishtr7227Turkishtr7228Turkishtr7229Turkishtr723Turkishtr7230Turkishtr7231Turkishtr7232Turkishtr7233Turkishtr7234Turkishtr7235Turkishtr7236Turkishtr7237Turkishtr7238Turkishtr7239Turkishtr724Turkishtr7240Turkishtr7241Turkishtr7242Turkishtr7243Turkishtr7244Turkishtr7245Turkishtr7246Turkishtr7247Turkishtr7248Turkishtr7249Turkishtr725Turkishtr7250Turkishtr7251Turkishtr7252Turkishtr7253Turkishtr7254Turkishtr7255Turkishtr7256Turkishtr7257Turkishtr7258Turkishtr7259Turkishtr726Turkishtr7260Turkishtr7261Turkishtr7262Turkishtr7263Turkishtr7264Turkishtr7265Turkishtr7266Turkishtr7267Turkishtr7268Turkishtr7269Turkishtr727Turkishtr7270Turkishtr7271Turkishtr7272Turkishtr7273Turkishtr7274Turkishtr7275Turkishtr7276Turkishtr7277Turkishtr7278Turkishtr7279Turkishtr728Turkishtr7280Turkishtr7281Turkishtr7282Turkishtr7283Turkishtr7284Turkishtr7285Turkishtr7286Turkishtr7287Turkishtr7288Turkishtr7289Turkishtr729Turkishtr7290Turkishtr7291Turkishtr7292Turkishtr7293Turkishtr7294Turkishtr7295Turkishtr7296Turkishtr7297Turkishtr7298Turkishtr7299Turkishtr73Turkishtr730Turkishtr7300Turkishtr7301Turkishtr7302Turkishtr7303Turkishtr7304Turkishtr7305Turkishtr7306Turkishtr7307Turkishtr7308Turkishtr7309Turkishtr731Turkishtr7310Turkishtr7311Turkishtr7312Turkishtr7313Turkishtr7314Turkishtr7315Turkishtr7316Turkishtr7317Turkishtr7318Turkishtr7319Turkishtr732Turkishtr7320Turkishtr7321Turkishtr7322Turkishtr7323Turkishtr7324Turkishtr7325Turkishtr7326Turkishtr7327Turkishtr7328Turkishtr7329Turkishtr733Turkishtr7330Turkishtr7331Turkishtr7332Turkishtr7333Turkishtr7334Turkishtr7335Turkishtr7336Turkishtr7337Turkishtr7338Turkishtr7339Turkishtr734Turkishtr7340Turkishtr7341Turkishtr7342Turkishtr7343Turkishtr7344Turkishtr7345Turkishtr7346Turkishtr7347Turkishtr7348Turkishtr7349Turkishtr735Turkishtr7350Turkishtr7351Turkishtr7352Turkishtr7353Turkishtr7354Turkishtr7355Turkishtr7356Turkishtr7357Turkishtr7358Turkishtr7359Turkishtr736Turkishtr7360Turkishtr7361Turkishtr7362Turkishtr7363Turkishtr7364Turkishtr7365Turkishtr7366Turkishtr7367Turkishtr7368Turkishtr7369Turkishtr737Turkishtr7370Turkishtr7371Turkishtr7372Turkishtr7373Turkishtr7374Turkishtr7375Turkishtr7376Turkishtr7377Turkishtr7378Turkishtr7379Turkishtr738Turkishtr7380Turkishtr7381Turkishtr7382Turkishtr7383Turkishtr7384Turkishtr7385Turkishtr7386Turkishtr7387Turkishtr7388Turkishtr7389Turkishtr739Turkishtr7390Turkishtr7391Turkishtr7392Turkishtr7393Turkishtr7394Turkishtr7395Turkishtr7396Turkishtr7397Turkishtr7398Turkishtr7399Turkishtr74Turkishtr740Turkishtr7400Turkishtr7401Turkishtr7402Turkishtr7403Turkishtr7404Turkishtr7405Turkishtr7406Turkishtr7407Turkishtr7408Turkishtr7409Turkishtr741Turkishtr7410Turkishtr7411Turkishtr7412Turkishtr7413Turkishtr7414Turkishtr7415Turkishtr7416Turkishtr7417Turkishtr7418Turkishtr7419Turkishtr742Turkishtr7420Turkishtr7421Turkishtr7422Turkishtr7423Turkishtr7424Turkishtr7425Turkishtr7426Turkishtr7427Turkishtr7428Turkishtr7429Turkishtr743Turkishtr7430Turkishtr7431Turkishtr7432Turkishtr7433Turkishtr7434Turkishtr7435Turkishtr7436Turkishtr7437Turkishtr7438Turkishtr7439Turkishtr744Turkishtr7440Turkishtr7441Turkishtr7442Turkishtr7443Turkishtr7444Turkishtr7445Turkishtr7446Turkishtr7447Turkishtr7448Turkishtr7449Turkishtr745Turkishtr7450Turkishtr7451Turkishtr7452Turkishtr7453Turkishtr7454Turkishtr7455Turkishtr7456Turkishtr7457Turkishtr7458Turkishtr7459Turkishtr746Turkishtr7460Turkishtr7461Turkishtr7462Turkishtr7463Turkishtr7464Turkishtr7465Turkishtr7466Turkishtr7467Turkishtr7468Turkishtr7469Turkishtr747Turkishtr7470Turkishtr7471Turkishtr7472Turkishtr7473Turkishtr7474Turkishtr7475Turkishtr7476Turkishtr7477Turkishtr7478Turkishtr7479Turkishtr748Turkishtr7480Turkishtr7481Turkishtr7482Turkishtr7483Turkishtr7484Turkishtr7485Turkishtr7486Turkishtr7487Turkishtr7488Turkishtr7489Turkishtr749Turkishtr7490Turkishtr7491Turkishtr7492Turkishtr7493Turkishtr7494Turkishtr7495Turkishtr7496Turkishtr7497Turkishtr7498Turkishtr7499Turkishtr75Turkishtr750Turkishtr7500Turkishtr7501Turkishtr7502Turkishtr7503Turkishtr7504Turkishtr7505Turkishtr7506Turkishtr7507Turkishtr7508Turkishtr7509Turkishtr751Turkishtr7510Turkishtr7511Turkishtr7512Turkishtr7513Turkishtr7514Turkishtr7515Turkishtr7516Turkishtr7517Turkishtr7518Turkishtr7519Turkishtr752Turkishtr7520Turkishtr7521Turkishtr7522Turkishtr7523Turkishtr7524Turkishtr7525Turkishtr7526Turkishtr7527Turkishtr7528Turkishtr7529Turkishtr753Turkishtr7530Turkishtr7531Turkishtr7532Turkishtr7533Turkishtr7534Turkishtr7535Turkishtr7536Turkishtr7537Turkishtr7538Turkishtr7539Turkishtr754Turkishtr7540Turkishtr7541Turkishtr7542Turkishtr7543Turkishtr7544Turkishtr7545Turkishtr7546Turkishtr7547Turkishtr7548Turkishtr7549Turkishtr755Turkishtr7550Turkishtr7551Turkishtr7552Turkishtr7553Turkishtr7554Turkishtr7555Turkishtr7556Turkishtr7557Turkishtr7558Turkishtr7559Turkishtr756Turkishtr7560Turkishtr7561Turkishtr7562Turkishtr7563Turkishtr7564Turkishtr7565Turkishtr7566Turkishtr7567Turkishtr7568Turkishtr7569Turkishtr757Turkishtr7570Turkishtr7571Turkishtr7572Turkishtr7573Turkishtr7574Turkishtr7575Turkishtr7576Turkishtr7577Turkishtr7578Turkishtr7579Turkishtr758Turkishtr7580Turkishtr7581Turkishtr7582Turkishtr7583Turkishtr7584Turkishtr7585Turkishtr7586Turkishtr7587Turkishtr7588Turkishtr7589Turkishtr759Turkishtr7590Turkishtr7591Turkishtr7592Turkishtr7593Turkishtr7594Turkishtr7595Turkishtr7596Turkishtr7597Turkishtr7598Turkishtr7599Turkishtr76Turkishtr760Turkishtr7600Turkishtr7601Turkishtr7602Turkishtr7603Turkishtr7604Turkishtr7605Turkishtr7606Turkishtr7607Turkishtr7608Turkishtr7609Turkishtr761Turkishtr7610Turkishtr7611Turkishtr7612Turkishtr7613Turkishtr7614Turkishtr7615Turkishtr7616Turkishtr7617Turkishtr7618Turkishtr7619Turkishtr762Turkishtr7620Turkishtr7621Turkishtr7622Turkishtr7623Turkishtr7624Turkishtr7625Turkishtr7626Turkishtr7627Turkishtr7628Turkishtr7629Turkishtr763Turkishtr7630Turkishtr7631Turkishtr7632Turkishtr7633Turkishtr7634Turkishtr7635Turkishtr7636Turkishtr7637Turkishtr7638Turkishtr7639Turkishtr764Turkishtr7640Turkishtr7641Turkishtr7642Turkishtr7643Turkishtr7644Turkishtr7645Turkishtr7646Turkishtr7647Turkishtr7648Turkishtr7649Turkishtr765Turkishtr7650Turkishtr7651Turkishtr7652Turkishtr7653Turkishtr7654Turkishtr7655Turkishtr7656Turkishtr7657Turkishtr7658Turkishtr7659Turkishtr766Turkishtr7660Turkishtr7661Turkishtr7662Turkishtr7663Turkishtr7664Turkishtr7665Turkishtr7666Turkishtr7667Turkishtr7668Turkishtr7669Turkishtr767Turkishtr7670Turkishtr7671Turkishtr7672Turkishtr7673Turkishtr7674Turkishtr7675Turkishtr7676Turkishtr7677Turkishtr7678Turkishtr7679Turkishtr768Turkishtr7680Turkishtr7681Turkishtr7682Turkishtr7683Turkishtr7684Turkishtr7685Turkishtr7686Turkishtr7687Turkishtr7688Turkishtr7689Turkishtr769Turkishtr7690Turkishtr7691Turkishtr7692Turkishtr7693Turkishtr7694Turkishtr7695Turkishtr7696Turkishtr7697Turkishtr7698Turkishtr7699Turkishtr77Turkishtr770Turkishtr7700Turkishtr7701Turkishtr7702Turkishtr7703Turkishtr7704Turkishtr7705Turkishtr7706Turkishtr7707Turkishtr7708Turkishtr7709Turkishtr771Turkishtr7710Turkishtr7711Turkishtr7712Turkishtr7713Turkishtr7714Turkishtr7715Turkishtr7716Turkishtr7717Turkishtr7718Turkishtr7719Turkishtr772Turkishtr7720Turkishtr7721Turkishtr7722Turkishtr7723Turkishtr7724Turkishtr7725Turkishtr7726Turkishtr7727Turkishtr7728Turkishtr7729Turkishtr773Turkishtr7730Turkishtr7731Turkishtr7732Turkishtr7733Turkishtr7734Turkishtr7735Turkishtr7736Turkishtr7737Turkishtr7738Turkishtr7739Turkishtr774Turkishtr7740Turkishtr7741Turkishtr7742Turkishtr7743Turkishtr7744Turkishtr7745Turkishtr7746Turkishtr7747Turkishtr7748Turkishtr7749Turkishtr775Turkishtr7750Turkishtr7751Turkishtr7752Turkishtr7753Turkishtr7754Turkishtr7755Turkishtr7756Turkishtr7757Turkishtr7758Turkishtr7759Turkishtr776Turkishtr7760Turkishtr7761Turkishtr7762Turkishtr7763Turkishtr7764Turkishtr7765Turkishtr7766Turkishtr7767Turkishtr7768Turkishtr7769Turkishtr777Turkishtr7770Turkishtr7771Turkishtr7772Turkishtr7773Turkishtr7774Turkishtr7775Turkishtr7776Turkishtr7777Turkishtr7778Turkishtr7779Turkishtr778Turkishtr7780Turkishtr7781Turkishtr7782Turkishtr7783Turkishtr7784Turkishtr7785Turkishtr7786Turkishtr7787Turkishtr7788Turkishtr7789Turkishtr779Turkishtr7790Turkishtr7791Turkishtr7792Turkishtr7793Turkishtr7794Turkishtr7795Turkishtr7796Turkishtr7797Turkishtr7798Turkishtr7799Turkishtr78Turkishtr780Turkishtr7800Turkishtr7801Turkishtr7802Turkishtr7803Turkishtr7804Turkishtr7805Turkishtr7806Turkishtr7807Turkishtr7808Turkishtr7809Turkishtr781Turkishtr7810Turkishtr7811Turkishtr7812Turkishtr7813Turkishtr7814Turkishtr7815Turkishtr7816Turkishtr7817Turkishtr7818Turkishtr7819Turkishtr782Turkishtr7820Turkishtr7821Turkishtr7822Turkishtr7823Turkishtr7824Turkishtr7825Turkishtr7826Turkishtr7827Turkishtr7828Turkishtr7829Turkishtr783Turkishtr7830Turkishtr7831Turkishtr7832Turkishtr7833Turkishtr7834Turkishtr7835Turkishtr7836Turkishtr7837Turkishtr7838Turkishtr7839Turkishtr784Turkishtr7840Turkishtr7841Turkishtr7842Turkishtr7843Turkishtr7844Turkishtr7845Turkishtr7846Turkishtr7847Turkishtr7848Turkishtr7849Turkishtr785Turkishtr7850Turkishtr7851Turkishtr7852Turkishtr7853Turkishtr7854Turkishtr7855Turkishtr7856Turkishtr7857Turkishtr7858Turkishtr7859Turkishtr786Turkishtr7860Turkishtr7861Turkishtr7862Turkishtr7863Turkishtr7864Turkishtr7865Turkishtr7866Turkishtr7867Turkishtr7868Turkishtr7869Turkishtr787Turkishtr7870Turkishtr7871Turkishtr7872Turkishtr7873Turkishtr7874Turkishtr7875Turkishtr7876Turkishtr7877Turkishtr7878Turkishtr7879Turkishtr788Turkishtr7880Turkishtr7881Turkishtr7882Turkishtr7883Turkishtr7884Turkishtr7885Turkishtr7886Turkishtr7887Turkishtr7888Turkishtr7889Turkishtr789Turkishtr7890Turkishtr7891Turkishtr7892Turkishtr7893Turkishtr7894Turkishtr7895Turkishtr7896Turkishtr7897Turkishtr7898Turkishtr7899Turkishtr79Turkishtr790Turkishtr7900Turkishtr7901Turkishtr7902Turkishtr7903Turkishtr7904Turkishtr7905Turkishtr7906Turkishtr7907Turkishtr7908Turkishtr7909Turkishtr791Turkishtr7910Turkishtr7911Turkishtr7912Turkishtr7913Turkishtr7914Turkishtr7915Turkishtr7916Turkishtr7917Turkishtr7918Turkishtr7919Turkishtr792Turkishtr7920Turkishtr7921Turkishtr7922Turkishtr7923Turkishtr7924Turkishtr7925Turkishtr7926Turkishtr7927Turkishtr7928Turkishtr7929Turkishtr793Turkishtr7930Turkishtr7931Turkishtr7932Turkishtr7933Turkishtr7934Turkishtr7935Turkishtr7936Turkishtr7937Turkishtr7938Turkishtr7939Turkishtr794Turkishtr7940Turkishtr7941Turkishtr7942Turkishtr7943Turkishtr7944Turkishtr7945Turkishtr7946Turkishtr7947Turkishtr7948Turkishtr7949Turkishtr795Turkishtr7950Turkishtr7951Turkishtr7952Turkishtr7953Turkishtr7954Turkishtr7955Turkishtr7956Turkishtr7957Turkishtr7958Turkishtr7959Turkishtr796Turkishtr7960Turkishtr7961Turkishtr7962Turkishtr7963Turkishtr7964Turkishtr7965Turkishtr7966Turkishtr7967Turkishtr7968Turkishtr7969Turkishtr797Turkishtr7970Turkishtr7971Turkishtr7972Turkishtr7973Turkishtr7974Turkishtr7975Turkishtr7976Turkishtr7977Turkishtr7978Turkishtr7979Turkishtr798Turkishtr7980Turkishtr7981Turkishtr7982Turkishtr7983Turkishtr7984Turkishtr7985Turkishtr7986Turkishtr7987Turkishtr7988Turkishtr7989Turkishtr799Turkishtr7990Turkishtr7991Turkishtr7992Turkishtr7993Turkishtr7994Turkishtr7995Turkishtr7996Turkishtr7997Turkishtr7998Turkishtr7999Turkishtr8Turkishtr80Turkishtr800Turkishtr8000Turkishtr8001Turkishtr8002Turkishtr8003Turkishtr8004Turkishtr8005Turkishtr8006Turkishtr8007Turkishtr8008Turkishtr8009Turkishtr801Turkishtr8010Turkishtr8011Turkishtr8012Turkishtr8013Turkishtr8014Turkishtr8015Turkishtr8016Turkishtr8017Turkishtr8018Turkishtr8019Turkishtr802Turkishtr8020Turkishtr8021Turkishtr8022Turkishtr8023Turkishtr8024Turkishtr8025Turkishtr8026Turkishtr8027Turkishtr8028Turkishtr8029Turkishtr803Turkishtr8030Turkishtr8031Turkishtr8032Turkishtr8033Turkishtr8034Turkishtr8035Turkishtr8036Turkishtr8037Turkishtr8038Turkishtr8039Turkishtr804Turkishtr8040Turkishtr8041Turkishtr8042Turkishtr8043Turkishtr8044Turkishtr8045Turkishtr8046Turkishtr8047Turkishtr8048Turkishtr8049Turkishtr805Turkishtr8050Turkishtr8051Turkishtr8052Turkishtr8053Turkishtr8054Turkishtr8055Turkishtr8056Turkishtr8057Turkishtr8058Turkishtr8059Turkishtr806Turkishtr8060Turkishtr8061Turkishtr8062Turkishtr8063Turkishtr8064Turkishtr8065Turkishtr8066Turkishtr8067Turkishtr8068Turkishtr8069Turkishtr807Turkishtr8070Turkishtr8071Turkishtr8072Turkishtr8073Turkishtr8074Turkishtr8075Turkishtr8076Turkishtr8077Turkishtr8078Turkishtr8079Turkishtr808Turkishtr8080Turkishtr8081Turkishtr8082Turkishtr8083Turkishtr8084Turkishtr8085Turkishtr8086Turkishtr8087Turkishtr8088Turkishtr8089Turkishtr809Turkishtr8090Turkishtr8091Turkishtr8092Turkishtr8093Turkishtr8094Turkishtr8095Turkishtr8096Turkishtr8097Turkishtr8098Turkishtr8099Turkishtr81Turkishtr810Turkishtr8100Turkishtr8101Turkishtr8102Turkishtr8103Turkishtr8104Turkishtr8105Turkishtr8106Turkishtr8107Turkishtr8108Turkishtr8109Turkishtr811Turkishtr8110Turkishtr8111Turkishtr8112Turkishtr8113Turkishtr8114Turkishtr8115Turkishtr8116Turkishtr8117Turkishtr8118Turkishtr8119Turkishtr812Turkishtr8120Turkishtr8121Turkishtr8122Turkishtr8123Turkishtr8124Turkishtr8125Turkishtr8126Turkishtr8127Turkishtr8128Turkishtr8129Turkishtr813Turkishtr8130Turkishtr8131Turkishtr8132Turkishtr8133Turkishtr8134Turkishtr8135Turkishtr8136Turkishtr8137Turkishtr8138Turkishtr8139Turkishtr814Turkishtr8140Turkishtr8141Turkishtr8142Turkishtr8143Turkishtr8144Turkishtr8145Turkishtr8146Turkishtr8147Turkishtr8148Turkishtr8149Turkishtr815Turkishtr8150Turkishtr8151Turkishtr8152Turkishtr8153Turkishtr8154Turkishtr8155Turkishtr8156Turkishtr8157Turkishtr8158Turkishtr8159Turkishtr816Turkishtr8160Turkishtr8161Turkishtr8162Turkishtr8163Turkishtr8164Turkishtr8165Turkishtr8166Turkishtr8167Turkishtr8168Turkishtr8169Turkishtr817Turkishtr8170Turkishtr8171Turkishtr8172Turkishtr8173Turkishtr8174Turkishtr8175Turkishtr8176Turkishtr8177Turkishtr8178Turkishtr8179Turkishtr818Turkishtr8180Turkishtr8181Turkishtr8182Turkishtr8183Turkishtr8184Turkishtr8185Turkishtr8186Turkishtr8187Turkishtr8188Turkishtr8189Turkishtr819Turkishtr8190Turkishtr8191Turkishtr82Turkishtr820Turkishtr821Turkishtr822Turkishtr823Turkishtr824Turkishtr825Turkishtr826Turkishtr827Turkishtr828Turkishtr829Turkishtr83Turkishtr830Turkishtr831Turkishtr832Turkishtr833Turkishtr834Turkishtr835Turkishtr836Turkishtr837Turkishtr838Turkishtr839Turkishtr84Turkishtr840Turkishtr841Turkishtr842Turkishtr843Turkishtr844Turkishtr845Turkishtr846Turkishtr847Turkishtr848Turkishtr849Turkishtr85Turkishtr850Turkishtr851Turkishtr852Turkishtr853Turkishtr854Turkishtr855Turkishtr856Turkishtr857Turkishtr858Turkishtr859Turkishtr86Turkishtr860Turkishtr861Turkishtr862Turkishtr863Turkishtr864Turkishtr865Turkishtr866Turkishtr867Turkishtr868Turkishtr869Turkishtr87Turkishtr870Turkishtr871Turkishtr872Turkishtr873Turkishtr874Turkishtr875Turkishtr876Turkishtr877Turkishtr878Turkishtr879Turkishtr88Turkishtr880Turkishtr881Turkishtr882Turkishtr883Turkishtr884Turkishtr885Turkishtr886Turkishtr887Turkishtr888Turkishtr889Turkishtr89Turkishtr890Turkishtr891Turkishtr892Turkishtr893Turkishtr894Turkishtr895Turkishtr896Turkishtr897Turkishtr898Turkishtr899Turkishtr9Turkishtr90Turkishtr900Turkishtr901Turkishtr902Turkishtr903Turkishtr904Turkishtr905Turkishtr906Turkishtr907Turkishtr908Turkishtr909Turkishtr91Turkishtr910Turkishtr911Turkishtr912Turkishtr913Turkishtr914Turkishtr915Turkishtr916Turkishtr917Turkishtr918Turkishtr919Turkishtr92Turkishtr920Turkishtr921Turkishtr922Turkishtr923Turkishtr924Turkishtr925Turkishtr926Turkishtr927Turkishtr928Turkishtr929Turkishtr93Turkishtr930Turkishtr931Turkishtr932Turkishtr933Turkishtr934Turkishtr935Turkishtr936Turkishtr937Turkishtr938Turkishtr939Turkishtr94Turkishtr940Turkishtr941Turkishtr942Turkishtr943Turkishtr944Turkishtr945Turkishtr946Turkishtr947Turkishtr948Turkishtr949Turkishtr95Turkishtr950Turkishtr951Turkishtr952Turkishtr953Turkishtr954Turkishtr955Turkishtr956Turkishtr957Turkishtr958Turkishtr959Turkishtr96Turkishtr960Turkishtr961Turkishtr962Turkishtr963Turkishtr964Turkishtr965Turkishtr966Turkishtr967Turkishtr968Turkishtr969Turkishtr97Turkishtr970Turkishtr971Turkishtr972Turkishtr973Turkishtr974Turkishtr975Turkishtr976Turkishtr977Turkishtr978Turkishtr979Turkishtr98Turkishtr980Turkishtr981Turkishtr982Turkishtr983Turkishtr984Turkishtr985Turkishtr986Turkishtr987Turkishtr988Turkishtr989Turkishtr99Turkishtr990Turkishtr991Turkishtr992Turkishtr993Turkishtr994Turkishtr995Turkishtr996Turkishtr997Turkishtr998Turkishtr999Turkishzh0Chinesezh1Chinesezh10Chinesezh100Chinesezh1000Chinesezh1001Chinesezh1002Chinesezh1003Chinesezh1004Chinesezh1005Chinesezh1006Chinesezh1007Chinesezh1008Chinesezh1009Chinesezh101Chinesezh1010Chinesezh1011Chinesezh1012Chinesezh1013Chinesezh1014Chinesezh1015Chinesezh1016Chinesezh1017Chinesezh1018Chinesezh1019Chinesezh102Chinesezh1020Chinesezh1021Chinesezh1022Chinesezh1023Chinesezh1024Chinesezh1025Chinesezh1026Chinesezh1027Chinesezh1028Chinesezh1029Chinesezh103Chinesezh1030Chinesezh1031Chinesezh1032Chinesezh1033Chinesezh1034Chinesezh1035Chinesezh1036Chinesezh1037Chinesezh1038Chinesezh1039Chinesezh104Chinesezh1040Chinesezh1041Chinesezh1042Chinesezh1043Chinesezh1044Chinesezh1045Chinesezh1046Chinesezh1047Chinesezh1048Chinesezh1049Chinesezh105Chinesezh1050Chinesezh1051Chinesezh1052Chinesezh1053Chinesezh1054Chinesezh1055Chinesezh1056Chinesezh1057Chinesezh1058Chinesezh1059Chinesezh106Chinesezh1060Chinesezh1061Chinesezh1062Chinesezh1063Chinesezh1064Chinesezh1065Chinesezh1066Chinesezh1067Chinesezh1068Chinesezh1069Chinesezh107Chinesezh1070Chinesezh1071Chinesezh1072Chinesezh1073Chinesezh1074Chinesezh1075Chinesezh1076Chinesezh1077Chinesezh1078Chinesezh1079Chinesezh108Chinesezh1080Chinesezh1081Chinesezh1082Chinesezh1083Chinesezh1084Chinesezh1085Chinesezh1086Chinesezh1087Chinesezh1088Chinesezh1089Chinesezh109Chinesezh1090Chinesezh1091Chinesezh1092Chinesezh1093Chinesezh1094Chinesezh1095Chinesezh1096Chinesezh1097Chinesezh1098Chinesezh1099Chinesezh11Chinesezh110Chinesezh1100Chinesezh1101Chinesezh1102Chinesezh1103Chinesezh1104Chinesezh1105Chinesezh1106Chinesezh1107Chinesezh1108Chinesezh1109Chinesezh111Chinesezh1110Chinesezh1111Chinesezh1112Chinesezh1113Chinesezh1114Chinesezh1115Chinesezh1116Chinesezh1117Chinesezh1118Chinesezh1119Chinesezh112Chinesezh1120Chinesezh1121Chinesezh1122Chinesezh1123Chinesezh1124Chinesezh1125Chinesezh1126Chinesezh1127Chinesezh1128Chinesezh1129Chinesezh113Chinesezh1130Chinesezh1131Chinesezh1132Chinesezh1133Chinesezh1134Chinesezh1135Chinesezh1136Chinesezh1137Chinesezh1138Chinesezh1139Chinesezh114Chinesezh1140Chinesezh1141Chinesezh1142Chinesezh1143Chinesezh1144Chinesezh1145Chinesezh1146Chinesezh1147Chinesezh1148Chinesezh1149Chinesezh115Chinesezh1150Chinesezh1151Chinesezh1152Chinesezh1153Chinesezh1154Chinesezh1155Chinesezh1156Chinesezh1157Chinesezh1158Chinesezh1159Chinesezh116Chinesezh1160Chinesezh1161Chinesezh1162Chinesezh1163Chinesezh1164Chinesezh1165Chinesezh1166Chinesezh1167Chinesezh1168Chinesezh1169Chinesezh117Chinesezh1170Chinesezh1171Chinesezh1172Chinesezh1173Chinesezh1174Chinesezh1175Chinesezh1176Chinesezh1177Chinesezh1178Chinesezh1179Chinesezh118Chinesezh1180Chinesezh1181Chinesezh1182Chinesezh1183Chinesezh1184Chinesezh1185Chinesezh1186Chinesezh1187Chinesezh1188Chinesezh1189Chinesezh119Chinesezh1190Chinesezh1191Chinesezh1192Chinesezh1193Chinesezh1194Chinesezh1195Chinesezh1196Chinesezh1197Chinesezh1198Chinesezh1199Chinesezh12Chinesezh120Chinesezh1200Chinesezh1201Chinesezh1202Chinesezh1203Chinesezh1204Chinesezh1205Chinesezh1206Chinesezh1207Chinesezh1208Chinesezh1209Chinesezh121Chinesezh1210Chinesezh1211Chinesezh1212Chinesezh1213Chinesezh1214Chinesezh1215Chinesezh1216Chinesezh1217Chinesezh1218Chinesezh1219Chinesezh122Chinesezh1220Chinesezh1221Chinesezh1222Chinesezh1223Chinesezh1224Chinesezh1225Chinesezh1226Chinesezh1227Chinesezh1228Chinesezh1229Chinesezh123Chinesezh1230Chinesezh1231Chinesezh1232Chinesezh1233Chinesezh1234Chinesezh1235Chinesezh1236Chinesezh1237Chinesezh1238Chinesezh1239Chinesezh124Chinesezh1240Chinesezh1241Chinesezh1242Chinesezh1243Chinesezh1244Chinesezh1245Chinesezh1246Chinesezh1247Chinesezh1248Chinesezh1249Chinesezh125Chinesezh1250Chinesezh1251Chinesezh1252Chinesezh1253Chinesezh1254Chinesezh1255Chinesezh1256Chinesezh1257Chinesezh1258Chinesezh1259Chinesezh126Chinesezh1260Chinesezh1261Chinesezh1262Chinesezh1263Chinesezh1264Chinesezh1265Chinesezh1266Chinesezh1267Chinesezh1268Chinesezh1269Chinesezh127Chinesezh1270Chinesezh1271Chinesezh1272Chinesezh1273Chinesezh1274Chinesezh1275Chinesezh1276Chinesezh1277Chinesezh1278Chinesezh1279Chinesezh128Chinesezh1280Chinesezh1281Chinesezh1282Chinesezh1283Chinesezh1284Chinesezh1285Chinesezh1286Chinesezh1287Chinesezh1288Chinesezh1289Chinesezh129Chinesezh1290Chinesezh1291Chinesezh1292Chinesezh1293Chinesezh1294Chinesezh1295Chinesezh1296Chinesezh1297Chinesezh1298Chinesezh1299Chinesezh13Chinesezh130Chinesezh1300Chinesezh1301Chinesezh1302Chinesezh1303Chinesezh1304Chinesezh1305Chinesezh1306Chinesezh1307Chinesezh1308Chinesezh1309Chinesezh131Chinesezh1310Chinesezh1311Chinesezh1312Chinesezh1313Chinesezh1314Chinesezh1315Chinesezh1316Chinesezh1317Chinesezh1318Chinesezh1319Chinesezh132Chinesezh1320Chinesezh1321Chinesezh1322Chinesezh1323Chinesezh1324Chinesezh1325Chinesezh1326Chinesezh1327Chinesezh1328Chinesezh1329Chinesezh133Chinesezh1330Chinesezh1331Chinesezh1332Chinesezh1333Chinesezh1334Chinesezh1335Chinesezh1336Chinesezh1337Chinesezh1338Chinesezh1339Chinesezh134Chinesezh1340Chinesezh1341Chinesezh1342Chinesezh1343Chinesezh1344Chinesezh1345Chinesezh1346Chinesezh1347Chinesezh1348Chinesezh1349Chinesezh135Chinesezh1350Chinesezh1351Chinesezh1352Chinesezh1353Chinesezh1354Chinesezh1355Chinesezh1356Chinesezh1357Chinesezh1358Chinesezh1359Chinesezh136Chinesezh1360Chinesezh1361Chinesezh1362Chinesezh1363Chinesezh1364Chinesezh1365Chinesezh1366Chinesezh1367Chinesezh1368Chinesezh1369Chinesezh137Chinesezh1370Chinesezh1371Chinesezh1372Chinesezh1373Chinesezh1374Chinesezh1375Chinesezh1376Chinesezh1377Chinesezh1378Chinesezh1379Chinesezh138Chinesezh1380Chinesezh1381Chinesezh1382Chinesezh1383Chinesezh1384Chinesezh1385Chinesezh1386Chinesezh1387Chinesezh1388Chinesezh1389Chinesezh139Chinesezh1390Chinesezh1391Chinesezh1392Chinesezh1393Chinesezh1394Chinesezh1395Chinesezh1396Chinesezh1397Chinesezh1398Chinesezh1399Chinesezh14Chinesezh140Chinesezh1400Chinesezh1401Chinesezh1402Chinesezh1403Chinesezh1404Chinesezh1405Chinesezh1406Chinesezh1407Chinesezh1408Chinesezh1409Chinesezh141Chinesezh1410Chinesezh1411Chinesezh1412Chinesezh1413Chinesezh1414Chinesezh1415Chinesezh1416Chinesezh1417Chinesezh1418Chinesezh1419Chinesezh142Chinesezh1420Chinesezh1421Chinesezh1422Chinesezh1423Chinesezh1424Chinesezh1425Chinesezh1426Chinesezh1427Chinesezh1428Chinesezh1429Chinesezh143Chinesezh1430Chinesezh1431Chinesezh1432Chinesezh1433Chinesezh1434Chinesezh1435Chinesezh1436Chinesezh1437Chinesezh1438Chinesezh1439Chinesezh144Chinesezh1440Chinesezh1441Chinesezh1442Chinesezh1443Chinesezh1444Chinesezh1445Chinesezh1446Chinesezh1447Chinesezh1448Chinesezh1449Chinesezh145Chinesezh1450Chinesezh1451Chinesezh1452Chinesezh1453Chinesezh1454Chinesezh1455Chinesezh1456Chinesezh1457Chinesezh1458Chinesezh1459Chinesezh146Chinesezh1460Chinesezh1461Chinesezh1462Chinesezh1463Chinesezh1464Chinesezh1465Chinesezh1466Chinesezh1467Chinesezh1468Chinesezh1469Chinesezh147Chinesezh1470Chinesezh1471Chinesezh1472Chinesezh1473Chinesezh1474Chinesezh1475Chinesezh1476Chinesezh1477Chinesezh1478Chinesezh1479Chinesezh148Chinesezh1480Chinesezh1481Chinesezh1482Chinesezh1483Chinesezh1484Chinesezh1485Chinesezh1486Chinesezh1487Chinesezh1488Chinesezh1489Chinesezh149Chinesezh1490Chinesezh1491Chinesezh1492Chinesezh1493Chinesezh1494Chinesezh1495Chinesezh1496Chinesezh1497Chinesezh1498Chinesezh1499Chinesezh15Chinesezh150Chinesezh1500Chinesezh1501Chinesezh1502Chinesezh1503Chinesezh1504Chinesezh1505Chinesezh1506Chinesezh1507Chinesezh1508Chinesezh1509Chinesezh151Chinesezh1510Chinesezh1511Chinesezh1512Chinesezh1513Chinesezh1514Chinesezh1515Chinesezh1516Chinesezh1517Chinesezh1518Chinesezh1519Chinesezh152Chinesezh1520Chinesezh1521Chinesezh1522Chinesezh1523Chinesezh1524Chinesezh1525Chinesezh1526Chinesezh1527Chinesezh1528Chinesezh1529Chinesezh153Chinesezh1530Chinesezh1531Chinesezh1532Chinesezh1533Chinesezh1534Chinesezh1535Chinesezh1536Chinesezh1537Chinesezh1538Chinesezh1539Chinesezh154Chinesezh1540Chinesezh1541Chinesezh1542Chinesezh1543Chinesezh1544Chinesezh1545Chinesezh1546Chinesezh1547Chinesezh1548Chinesezh1549Chinesezh155Chinesezh1550Chinesezh1551Chinesezh1552Chinesezh1553Chinesezh1554Chinesezh1555Chinesezh1556Chinesezh1557Chinesezh1558Chinesezh1559Chinesezh156Chinesezh1560Chinesezh1561Chinesezh1562Chinesezh1563Chinesezh1564Chinesezh1565Chinesezh1566Chinesezh1567Chinesezh1568Chinesezh1569Chinesezh157Chinesezh1570Chinesezh1571Chinesezh1572Chinesezh1573Chinesezh1574Chinesezh1575Chinesezh1576Chinesezh1577Chinesezh1578Chinesezh1579Chinesezh158Chinesezh1580Chinesezh1581Chinesezh1582Chinesezh1583Chinesezh1584Chinesezh1585Chinesezh1586Chinesezh1587Chinesezh1588Chinesezh1589Chinesezh159Chinesezh1590Chinesezh1591Chinesezh1592Chinesezh1593Chinesezh1594Chinesezh1595Chinesezh1596Chinesezh1597Chinesezh1598Chinesezh1599Chinesezh16Chinesezh160Chinesezh1600Chinesezh1601Chinesezh1602Chinesezh1603Chinesezh1604Chinesezh1605Chinesezh1606Chinesezh1607Chinesezh1608Chinesezh1609Chinesezh161Chinesezh1610Chinesezh1611Chinesezh1612Chinesezh1613Chinesezh1614Chinesezh1615Chinesezh1616Chinesezh1617Chinesezh1618Chinesezh1619Chinesezh162Chinesezh1620Chinesezh1621Chinesezh1622Chinesezh1623Chinesezh1624Chinesezh1625Chinesezh1626Chinesezh1627Chinesezh1628Chinesezh1629Chinesezh163Chinesezh1630Chinesezh1631Chinesezh1632Chinesezh1633Chinesezh1634Chinesezh1635Chinesezh1636Chinesezh1637Chinesezh1638Chinesezh1639Chinesezh164Chinesezh1640Chinesezh1641Chinesezh1642Chinesezh1643Chinesezh1644Chinesezh1645Chinesezh1646Chinesezh1647Chinesezh1648Chinesezh1649Chinesezh165Chinesezh1650Chinesezh1651Chinesezh1652Chinesezh1653Chinesezh1654Chinesezh1655Chinesezh1656Chinesezh1657Chinesezh1658Chinesezh1659Chinesezh166Chinesezh1660Chinesezh1661Chinesezh1662Chinesezh1663Chinesezh1664Chinesezh1665Chinesezh1666Chinesezh1667Chinesezh1668Chinesezh1669Chinesezh167Chinesezh1670Chinesezh1671Chinesezh1672Chinesezh1673Chinesezh1674Chinesezh1675Chinesezh1676Chinesezh1677Chinesezh1678Chinesezh1679Chinesezh168Chinesezh1680Chinesezh1681Chinesezh1682Chinesezh1683Chinesezh1684Chinesezh1685Chinesezh1686Chinesezh1687Chinesezh1688Chinesezh1689Chinesezh169Chinesezh1690Chinesezh1691Chinesezh1692Chinesezh1693Chinesezh1694Chinesezh1695Chinesezh1696Chinesezh1697Chinesezh1698Chinesezh1699Chinesezh17Chinesezh170Chinesezh1700Chinesezh1701Chinesezh1702Chinesezh1703Chinesezh1704Chinesezh1705Chinesezh1706Chinesezh1707Chinesezh1708Chinesezh1709Chinesezh171Chinesezh1710Chinesezh1711Chinesezh1712Chinesezh1713Chinesezh1714Chinesezh1715Chinesezh1716Chinesezh1717Chinesezh1718Chinesezh1719Chinesezh172Chinesezh1720Chinesezh1721Chinesezh1722Chinesezh1723Chinesezh1724Chinesezh1725Chinesezh1726Chinesezh1727Chinesezh1728Chinesezh1729Chinesezh173Chinesezh1730Chinesezh1731Chinesezh1732Chinesezh1733Chinesezh1734Chinesezh1735Chinesezh1736Chinesezh1737Chinesezh1738Chinesezh1739Chinesezh174Chinesezh1740Chinesezh1741Chinesezh1742Chinesezh1743Chinesezh1744Chinesezh1745Chinesezh1746Chinesezh1747Chinesezh1748Chinesezh1749Chinesezh175Chinesezh1750Chinesezh1751Chinesezh1752Chinesezh1753Chinesezh1754Chinesezh1755Chinesezh1756Chinesezh1757Chinesezh1758Chinesezh1759Chinesezh176Chinesezh1760Chinesezh1761Chinesezh1762Chinesezh1763Chinesezh1764Chinesezh1765Chinesezh1766Chinesezh1767Chinesezh1768Chinesezh1769Chinesezh177Chinesezh1770Chinesezh1771Chinesezh1772Chinesezh1773Chinesezh1774Chinesezh1775Chinesezh1776Chinesezh1777Chinesezh1778Chinesezh1779Chinesezh178Chinesezh1780Chinesezh1781Chinesezh1782Chinesezh1783Chinesezh1784Chinesezh1785Chinesezh1786Chinesezh1787Chinesezh1788Chinesezh1789Chinesezh179Chinesezh1790Chinesezh1791Chinesezh1792Chinesezh1793Chinesezh1794Chinesezh1795Chinesezh1796Chinesezh1797Chinesezh1798Chinesezh1799Chinesezh18Chinesezh180Chinesezh1800Chinesezh1801Chinesezh1802Chinesezh1803Chinesezh1804Chinesezh1805Chinesezh1806Chinesezh1807Chinesezh1808Chinesezh1809Chinesezh181Chinesezh1810Chinesezh1811Chinesezh1812Chinesezh1813Chinesezh1814Chinesezh1815Chinesezh1816Chinesezh1817Chinesezh1818Chinesezh1819Chinesezh182Chinesezh1820Chinesezh1821Chinesezh1822Chinesezh1823Chinesezh1824Chinesezh1825Chinesezh1826Chinesezh1827Chinesezh1828Chinesezh1829Chinesezh183Chinesezh1830Chinesezh1831Chinesezh1832Chinesezh1833Chinesezh1834Chinesezh1835Chinesezh1836Chinesezh1837Chinesezh1838Chinesezh1839Chinesezh184Chinesezh1840Chinesezh1841Chinesezh1842Chinesezh1843Chinesezh1844Chinesezh1845Chinesezh1846Chinesezh1847Chinesezh1848Chinesezh1849Chinesezh185Chinesezh1850Chinesezh1851Chinesezh1852Chinesezh1853Chinesezh1854Chinesezh1855Chinesezh1856Chinesezh1857Chinesezh1858Chinesezh1859Chinesezh186Chinesezh1860Chinesezh1861Chinesezh1862Chinesezh1863Chinesezh1864Chinesezh1865Chinesezh1866Chinesezh1867Chinesezh1868Chinesezh1869Chinesezh187Chinesezh1870Chinesezh1871Chinesezh1872Chinesezh1873Chinesezh1874Chinesezh1875Chinesezh1876Chinesezh1877Chinesezh1878Chinesezh1879Chinesezh188Chinesezh1880Chinesezh1881Chinesezh1882Chinesezh1883Chinesezh1884Chinesezh1885Chinesezh1886Chinesezh1887Chinesezh1888Chinesezh1889Chinesezh189Chinesezh1890Chinesezh1891Chinesezh1892Chinesezh1893Chinesezh1894Chinesezh1895Chinesezh1896Chinesezh1897Chinesezh1898Chinesezh1899Chinesezh19Chinesezh190Chinesezh1900Chinesezh1901Chinesezh1902Chinesezh1903Chinesezh1904Chinesezh1905Chinesezh1906Chinesezh1907Chinesezh1908Chinesezh1909Chinesezh191Chinesezh1910Chinesezh1911Chinesezh1912Chinesezh1913Chinesezh1914Chinesezh1915Chinesezh1916Chinesezh1917Chinesezh1918Chinesezh1919Chinesezh192Chinesezh1920Chinesezh1921Chinesezh1922Chinesezh1923Chinesezh1924Chinesezh1925Chinesezh1926Chinesezh1927Chinesezh1928Chinesezh1929Chinesezh193Chinesezh1930Chinesezh1931Chinesezh1932Chinesezh1933Chinesezh1934Chinesezh1935Chinesezh1936Chinesezh1937Chinesezh1938Chinesezh1939Chinesezh194Chinesezh1940Chinesezh1941Chinesezh1942Chinesezh1943Chinesezh1944Chinesezh1945Chinesezh1946Chinesezh1947Chinesezh1948Chinesezh1949Chinesezh195Chinesezh1950Chinesezh1951Chinesezh1952Chinesezh1953Chinesezh1954Chinesezh1955Chinesezh1956Chinesezh1957Chinesezh1958Chinesezh1959Chinesezh196Chinesezh1960Chinesezh1961Chinesezh1962Chinesezh1963Chinesezh1964Chinesezh1965Chinesezh1966Chinesezh1967Chinesezh1968Chinesezh1969Chinesezh197Chinesezh1970Chinesezh1971Chinesezh1972Chinesezh1973Chinesezh1974Chinesezh1975Chinesezh1976Chinesezh1977Chinesezh1978Chinesezh1979Chinesezh198Chinesezh1980Chinesezh1981Chinesezh1982Chinesezh1983Chinesezh1984Chinesezh1985Chinesezh1986Chinesezh1987Chinesezh1988Chinesezh1989Chinesezh199Chinesezh1990Chinesezh1991Chinesezh1992Chinesezh1993Chinesezh1994Chinesezh1995Chinesezh1996Chinesezh1997Chinesezh1998Chinesezh1999Chinesezh2Chinesezh20Chinesezh200Chinesezh2000Chinesezh2001Chinesezh2002Chinesezh2003Chinesezh2004Chinesezh2005Chinesezh2006Chinesezh2007Chinesezh2008Chinesezh2009Chinesezh201Chinesezh2010Chinesezh2011Chinesezh2012Chinesezh2013Chinesezh2014Chinesezh2015Chinesezh2016Chinesezh2017Chinesezh2018Chinesezh2019Chinesezh202Chinesezh2020Chinesezh2021Chinesezh2022Chinesezh2023Chinesezh2024Chinesezh2025Chinesezh2026Chinesezh2027Chinesezh2028Chinesezh2029Chinesezh203Chinesezh2030Chinesezh2031Chinesezh2032Chinesezh2033Chinesezh2034Chinesezh2035Chinesezh2036Chinesezh2037Chinesezh2038Chinesezh2039Chinesezh204Chinesezh2040Chinesezh2041Chinesezh2042Chinesezh2043Chinesezh2044Chinesezh2045Chinesezh2046Chinesezh2047Chinesezh2048Chinesezh2049Chinesezh205Chinesezh2050Chinesezh2051Chinesezh2052Chinesezh2053Chinesezh2054Chinesezh2055Chinesezh2056Chinesezh2057Chinesezh2058Chinesezh2059Chinesezh206Chinesezh2060Chinesezh2061Chinesezh2062Chinesezh2063Chinesezh2064Chinesezh2065Chinesezh2066Chinesezh2067Chinesezh2068Chinesezh2069Chinesezh207Chinesezh2070Chinesezh2071Chinesezh2072Chinesezh2073Chinesezh2074Chinesezh2075Chinesezh2076Chinesezh2077Chinesezh2078Chinesezh2079Chinesezh208Chinesezh2080Chinesezh2081Chinesezh2082Chinesezh2083Chinesezh2084Chinesezh2085Chinesezh2086Chinesezh2087Chinesezh2088Chinesezh2089Chinesezh209Chinesezh2090Chinesezh2091Chinesezh2092Chinesezh2093Chinesezh2094Chinesezh2095Chinesezh2096Chinesezh2097Chinesezh2098Chinesezh2099Chinesezh21Chinesezh210Chinesezh2100Chinesezh2101Chinesezh2102Chinesezh2103Chinesezh2104Chinesezh2105Chinesezh2106Chinesezh2107Chinesezh2108Chinesezh2109Chinesezh211Chinesezh2110Chinesezh2111Chinesezh2112Chinesezh2113Chinesezh2114Chinesezh2115Chinesezh2116Chinesezh2117Chinesezh2118Chinesezh2119Chinesezh212Chinesezh2120Chinesezh2121Chinesezh2122Chinesezh2123Chinesezh2124Chinesezh2125Chinesezh2126Chinesezh2127Chinesezh2128Chinesezh2129Chinesezh213Chinesezh2130Chinesezh2131Chinesezh2132Chinesezh2133Chinesezh2134Chinesezh2135Chinesezh2136Chinesezh2137Chinesezh2138Chinesezh2139Chinesezh214Chinesezh2140Chinesezh2141Chinesezh2142Chinesezh2143Chinesezh2144Chinesezh2145Chinesezh2146Chinesezh2147Chinesezh2148Chinesezh2149Chinesezh215Chinesezh2150Chinesezh2151Chinesezh2152Chinesezh2153Chinesezh2154Chinesezh2155Chinesezh2156Chinesezh2157Chinesezh2158Chinesezh2159Chinesezh216Chinesezh2160Chinesezh2161Chinesezh2162Chinesezh2163Chinesezh2164Chinesezh2165Chinesezh2166Chinesezh2167Chinesezh2168Chinesezh2169Chinesezh217Chinesezh2170Chinesezh2171Chinesezh2172Chinesezh2173Chinesezh2174Chinesezh2175Chinesezh2176Chinesezh2177Chinesezh2178Chinesezh2179Chinesezh218Chinesezh2180Chinesezh2181Chinesezh2182Chinesezh2183Chinesezh2184Chinesezh2185Chinesezh2186Chinesezh2187Chinesezh2188Chinesezh2189Chinesezh219Chinesezh2190Chinesezh2191Chinesezh2192Chinesezh2193Chinesezh2194Chinesezh2195Chinesezh2196Chinesezh2197Chinesezh2198Chinesezh2199Chinesezh22Chinesezh220Chinesezh2200Chinesezh2201Chinesezh2202Chinesezh2203Chinesezh2204Chinesezh2205Chinesezh2206Chinesezh2207Chinesezh2208Chinesezh2209Chinesezh221Chinesezh2210Chinesezh2211Chinesezh2212Chinesezh2213Chinesezh2214Chinesezh2215Chinesezh2216Chinesezh2217Chinesezh2218Chinesezh2219Chinesezh222Chinesezh2220Chinesezh2221Chinesezh2222Chinesezh2223Chinesezh2224Chinesezh2225Chinesezh2226Chinesezh2227Chinesezh2228Chinesezh2229Chinesezh223Chinesezh2230Chinesezh2231Chinesezh2232Chinesezh2233Chinesezh2234Chinesezh2235Chinesezh2236Chinesezh2237Chinesezh2238Chinesezh2239Chinesezh224Chinesezh2240Chinesezh2241Chinesezh2242Chinesezh2243Chinesezh2244Chinesezh2245Chinesezh2246Chinesezh2247Chinesezh2248Chinesezh2249Chinesezh225Chinesezh2250Chinesezh2251Chinesezh2252Chinesezh2253Chinesezh2254Chinesezh2255Chinesezh2256Chinesezh2257Chinesezh2258Chinesezh2259Chinesezh226Chinesezh2260Chinesezh2261Chinesezh2262Chinesezh2263Chinesezh2264Chinesezh2265Chinesezh2266Chinesezh2267Chinesezh2268Chinesezh2269Chinesezh227Chinesezh2270Chinesezh2271Chinesezh2272Chinesezh2273Chinesezh2274Chinesezh2275Chinesezh2276Chinesezh2277Chinesezh2278Chinesezh2279Chinesezh228Chinesezh2280Chinesezh2281Chinesezh2282Chinesezh2283Chinesezh2284Chinesezh2285Chinesezh2286Chinesezh2287Chinesezh2288Chinesezh2289Chinesezh229Chinesezh2290Chinesezh2291Chinesezh2292Chinesezh2293Chinesezh2294Chinesezh2295Chinesezh2296Chinesezh2297Chinesezh2298Chinesezh2299Chinesezh23Chinesezh230Chinesezh2300Chinesezh2301Chinesezh2302Chinesezh2303Chinesezh2304Chinesezh2305Chinesezh2306Chinesezh2307Chinesezh2308Chinesezh2309Chinesezh231Chinesezh2310Chinesezh2311Chinesezh2312Chinesezh2313Chinesezh2314Chinesezh2315Chinesezh2316Chinesezh2317Chinesezh2318Chinesezh2319Chinesezh232Chinesezh2320Chinesezh2321Chinesezh2322Chinesezh2323Chinesezh2324Chinesezh2325Chinesezh2326Chinesezh2327Chinesezh2328Chinesezh2329Chinesezh233Chinesezh2330Chinesezh2331Chinesezh2332Chinesezh2333Chinesezh2334Chinesezh2335Chinesezh2336Chinesezh2337Chinesezh2338Chinesezh2339Chinesezh234Chinesezh2340Chinesezh2341Chinesezh2342Chinesezh2343Chinesezh2344Chinesezh2345Chinesezh2346Chinesezh2347Chinesezh2348Chinesezh2349Chinesezh235Chinesezh2350Chinesezh2351Chinesezh2352Chinesezh2353Chinesezh2354Chinesezh2355Chinesezh2356Chinesezh2357Chinesezh2358Chinesezh2359Chinesezh236Chinesezh2360Chinesezh2361Chinesezh2362Chinesezh2363Chinesezh2364Chinesezh2365Chinesezh2366Chinesezh2367Chinesezh2368Chinesezh2369Chinesezh237Chinesezh2370Chinesezh2371Chinesezh2372Chinesezh2373Chinesezh2374Chinesezh2375Chinesezh2376Chinesezh2377Chinesezh2378Chinesezh2379Chinesezh238Chinesezh2380Chinesezh2381Chinesezh2382Chinesezh2383Chinesezh2384Chinesezh2385Chinesezh2386Chinesezh2387Chinesezh2388Chinesezh2389Chinesezh239Chinesezh2390Chinesezh2391Chinesezh2392Chinesezh2393Chinesezh2394Chinesezh2395Chinesezh2396Chinesezh2397Chinesezh2398Chinesezh2399Chinesezh24Chinesezh240Chinesezh2400Chinesezh2401Chinesezh2402Chinesezh2403Chinesezh2404Chinesezh2405Chinesezh2406Chinesezh2407Chinesezh2408Chinesezh2409Chinesezh241Chinesezh2410Chinesezh2411Chinesezh2412Chinesezh2413Chinesezh2414Chinesezh2415Chinesezh2416Chinesezh2417Chinesezh2418Chinesezh2419Chinesezh242Chinesezh2420Chinesezh2421Chinesezh2422Chinesezh2423Chinesezh2424Chinesezh2425Chinesezh2426Chinesezh2427Chinesezh2428Chinesezh2429Chinesezh243Chinesezh2430Chinesezh2431Chinesezh2432Chinesezh2433Chinesezh2434Chinesezh2435Chinesezh2436Chinesezh2437Chinesezh2438Chinesezh2439Chinesezh244Chinesezh2440Chinesezh2441Chinesezh2442Chinesezh2443Chinesezh2444Chinesezh2445Chinesezh2446Chinesezh2447Chinesezh2448Chinesezh2449Chinesezh245Chinesezh2450Chinesezh2451Chinesezh2452Chinesezh2453Chinesezh2454Chinesezh2455Chinesezh2456Chinesezh2457Chinesezh2458Chinesezh2459Chinesezh246Chinesezh2460Chinesezh2461Chinesezh2462Chinesezh2463Chinesezh2464Chinesezh2465Chinesezh2466Chinesezh2467Chinesezh2468Chinesezh2469Chinesezh247Chinesezh2470Chinesezh2471Chinesezh2472Chinesezh2473Chinesezh2474Chinesezh2475Chinesezh2476Chinesezh2477Chinesezh2478Chinesezh2479Chinesezh248Chinesezh2480Chinesezh2481Chinesezh2482Chinesezh2483Chinesezh2484Chinesezh2485Chinesezh2486Chinesezh2487Chinesezh2488Chinesezh2489Chinesezh249Chinesezh2490Chinesezh2491Chinesezh2492Chinesezh2493Chinesezh2494Chinesezh2495Chinesezh2496Chinesezh2497Chinesezh2498Chinesezh2499Chinesezh25Chinesezh250Chinesezh2500Chinesezh2501Chinesezh2502Chinesezh2503Chinesezh2504Chinesezh2505Chinesezh2506Chinesezh2507Chinesezh2508Chinesezh2509Chinesezh251Chinesezh2510Chinesezh2511Chinesezh2512Chinesezh2513Chinesezh2514Chinesezh2515Chinesezh2516Chinesezh2517Chinesezh2518Chinesezh2519Chinesezh252Chinesezh2520Chinesezh2521Chinesezh2522Chinesezh2523Chinesezh2524Chinesezh2525Chinesezh2526Chinesezh2527Chinesezh2528Chinesezh2529Chinesezh253Chinesezh2530Chinesezh2531Chinesezh2532Chinesezh2533Chinesezh2534Chinesezh2535Chinesezh2536Chinesezh2537Chinesezh2538Chinesezh2539Chinesezh254Chinesezh2540Chinesezh2541Chinesezh2542Chinesezh2543Chinesezh2544Chinesezh2545Chinesezh2546Chinesezh2547Chinesezh2548Chinesezh2549Chinesezh255Chinesezh2550Chinesezh2551Chinesezh2552Chinesezh2553Chinesezh2554Chinesezh2555Chinesezh2556Chinesezh2557Chinesezh2558Chinesezh2559Chinesezh256Chinesezh2560Chinesezh2561Chinesezh2562Chinesezh2563Chinesezh2564Chinesezh2565Chinesezh2566Chinesezh2567Chinesezh2568Chinesezh2569Chinesezh257Chinesezh2570Chinesezh2571Chinesezh2572Chinesezh2573Chinesezh2574Chinesezh2575Chinesezh2576Chinesezh2577Chinesezh2578Chinesezh2579Chinesezh258Chinesezh2580Chinesezh2581Chinesezh2582Chinesezh2583Chinesezh2584Chinesezh2585Chinesezh2586Chinesezh2587Chinesezh2588Chinesezh2589Chinesezh259Chinesezh2590Chinesezh2591Chinesezh2592Chinesezh2593Chinesezh2594Chinesezh2595Chinesezh2596Chinesezh2597Chinesezh2598Chinesezh2599Chinesezh26Chinesezh260Chinesezh2600Chinesezh2601Chinesezh2602Chinesezh2603Chinesezh2604Chinesezh2605Chinesezh2606Chinesezh2607Chinesezh2608Chinesezh2609Chinesezh261Chinesezh2610Chinesezh2611Chinesezh2612Chinesezh2613Chinesezh2614Chinesezh2615Chinesezh2616Chinesezh2617Chinesezh2618Chinesezh2619Chinesezh262Chinesezh2620Chinesezh2621Chinesezh2622Chinesezh2623Chinesezh2624Chinesezh2625Chinesezh2626Chinesezh2627Chinesezh2628Chinesezh2629Chinesezh263Chinesezh2630Chinesezh2631Chinesezh2632Chinesezh2633Chinesezh2634Chinesezh2635Chinesezh2636Chinesezh2637Chinesezh2638Chinesezh2639Chinesezh264Chinesezh2640Chinesezh2641Chinesezh2642Chinesezh2643Chinesezh2644Chinesezh2645Chinesezh2646Chinesezh2647Chinesezh2648Chinesezh2649Chinesezh265Chinesezh2650Chinesezh2651Chinesezh2652Chinesezh2653Chinesezh2654Chinesezh2655Chinesezh2656Chinesezh2657Chinesezh2658Chinesezh2659Chinesezh266Chinesezh2660Chinesezh2661Chinesezh2662Chinesezh2663Chinesezh2664Chinesezh2665Chinesezh2666Chinesezh2667Chinesezh2668Chinesezh2669Chinesezh267Chinesezh2670Chinesezh2671Chinesezh2672Chinesezh2673Chinesezh2674Chinesezh2675Chinesezh2676Chinesezh2677Chinesezh2678Chinesezh2679Chinesezh268Chinesezh2680Chinesezh2681Chinesezh2682Chinesezh2683Chinesezh2684Chinesezh2685Chinesezh2686Chinesezh2687Chinesezh2688Chinesezh2689Chinesezh269Chinesezh2690Chinesezh2691Chinesezh2692Chinesezh2693Chinesezh2694Chinesezh2695Chinesezh2696Chinesezh2697Chinesezh2698Chinesezh2699Chinesezh27Chinesezh270Chinesezh2700Chinesezh2701Chinesezh2702Chinesezh2703Chinesezh2704Chinesezh2705Chinesezh2706Chinesezh2707Chinesezh2708Chinesezh2709Chinesezh271Chinesezh2710Chinesezh2711Chinesezh2712Chinesezh2713Chinesezh2714Chinesezh2715Chinesezh2716Chinesezh2717Chinesezh2718Chinesezh2719Chinesezh272Chinesezh2720Chinesezh2721Chinesezh2722Chinesezh2723Chinesezh2724Chinesezh2725Chinesezh2726Chinesezh2727Chinesezh2728Chinesezh2729Chinesezh273Chinesezh2730Chinesezh2731Chinesezh2732Chinesezh2733Chinesezh2734Chinesezh2735Chinesezh2736Chinesezh2737Chinesezh2738Chinesezh2739Chinesezh274Chinesezh2740Chinesezh2741Chinesezh2742Chinesezh2743Chinesezh2744Chinesezh2745Chinesezh2746Chinesezh2747Chinesezh2748Chinesezh2749Chinesezh275Chinesezh2750Chinesezh2751Chinesezh2752Chinesezh2753Chinesezh2754Chinesezh2755Chinesezh2756Chinesezh2757Chinesezh2758Chinesezh2759Chinesezh276Chinesezh2760Chinesezh2761Chinesezh2762Chinesezh2763Chinesezh2764Chinesezh2765Chinesezh2766Chinesezh2767Chinesezh2768Chinesezh2769Chinesezh277Chinesezh2770Chinesezh2771Chinesezh2772Chinesezh2773Chinesezh2774Chinesezh2775Chinesezh2776Chinesezh2777Chinesezh2778Chinesezh2779Chinesezh278Chinesezh2780Chinesezh2781Chinesezh2782Chinesezh2783Chinesezh2784Chinesezh2785Chinesezh2786Chinesezh2787Chinesezh2788Chinesezh2789Chinesezh279Chinesezh2790Chinesezh2791Chinesezh2792Chinesezh2793Chinesezh2794Chinesezh2795Chinesezh2796Chinesezh2797Chinesezh2798Chinesezh2799Chinesezh28Chinesezh280Chinesezh2800Chinesezh2801Chinesezh2802Chinesezh2803Chinesezh2804Chinesezh2805Chinesezh2806Chinesezh2807Chinesezh2808Chinesezh2809Chinesezh281Chinesezh2810Chinesezh2811Chinesezh2812Chinesezh2813Chinesezh2814Chinesezh2815Chinesezh2816Chinesezh2817Chinesezh2818Chinesezh2819Chinesezh282Chinesezh2820Chinesezh2821Chinesezh2822Chinesezh2823Chinesezh2824Chinesezh2825Chinesezh2826Chinesezh2827Chinesezh2828Chinesezh2829Chinesezh283Chinesezh2830Chinesezh2831Chinesezh2832Chinesezh2833Chinesezh2834Chinesezh2835Chinesezh2836Chinesezh2837Chinesezh2838Chinesezh2839Chinesezh284Chinesezh2840Chinesezh2841Chinesezh2842Chinesezh2843Chinesezh2844Chinesezh2845Chinesezh2846Chinesezh2847Chinesezh2848Chinesezh2849Chinesezh285Chinesezh2850Chinesezh2851Chinesezh2852Chinesezh2853Chinesezh2854Chinesezh2855Chinesezh2856Chinesezh2857Chinesezh2858Chinesezh2859Chinesezh286Chinesezh2860Chinesezh2861Chinesezh2862Chinesezh2863Chinesezh2864Chinesezh2865Chinesezh2866Chinesezh2867Chinesezh2868Chinesezh2869Chinesezh287Chinesezh2870Chinesezh2871Chinesezh2872Chinesezh2873Chinesezh2874Chinesezh2875Chinesezh2876Chinesezh2877Chinesezh2878Chinesezh2879Chinesezh288Chinesezh2880Chinesezh2881Chinesezh2882Chinesezh2883Chinesezh2884Chinesezh2885Chinesezh2886Chinesezh2887Chinesezh2888Chinesezh2889Chinesezh289Chinesezh2890Chinesezh2891Chinesezh2892Chinesezh2893Chinesezh2894Chinesezh2895Chinesezh2896Chinesezh2897Chinesezh2898Chinesezh2899Chinesezh29Chinesezh290Chinesezh2900Chinesezh2901Chinesezh2902Chinesezh2903Chinesezh2904Chinesezh2905Chinesezh2906Chinesezh2907Chinesezh2908Chinesezh2909Chinesezh291Chinesezh2910Chinesezh2911Chinesezh2912Chinesezh2913Chinesezh2914Chinesezh2915Chinesezh2916Chinesezh2917Chinesezh2918Chinesezh2919Chinesezh292Chinesezh2920Chinesezh2921Chinesezh2922Chinesezh2923Chinesezh2924Chinesezh2925Chinesezh2926Chinesezh2927Chinesezh2928Chinesezh2929Chinesezh293Chinesezh2930Chinesezh2931Chinesezh2932Chinesezh2933Chinesezh2934Chinesezh2935Chinesezh2936Chinesezh2937Chinesezh2938Chinesezh2939Chinesezh294Chinesezh2940Chinesezh2941Chinesezh2942Chinesezh2943Chinesezh2944Chinesezh2945Chinesezh2946Chinesezh2947Chinesezh2948Chinesezh2949Chinesezh295Chinesezh2950Chinesezh2951Chinesezh2952Chinesezh2953Chinesezh2954Chinesezh2955Chinesezh2956Chinesezh2957Chinesezh2958Chinesezh2959Chinesezh296Chinesezh2960Chinesezh2961Chinesezh2962Chinesezh2963Chinesezh2964Chinesezh2965Chinesezh2966Chinesezh2967Chinesezh2968Chinesezh2969Chinesezh297Chinesezh2970Chinesezh2971Chinesezh2972Chinesezh2973Chinesezh2974Chinesezh2975Chinesezh2976Chinesezh2977Chinesezh2978Chinesezh2979Chinesezh298Chinesezh2980Chinesezh2981Chinesezh2982Chinesezh2983Chinesezh2984Chinesezh2985Chinesezh2986Chinesezh2987Chinesezh2988Chinesezh2989Chinesezh299Chinesezh2990Chinesezh2991Chinesezh2992Chinesezh2993Chinesezh2994Chinesezh2995Chinesezh2996Chinesezh2997Chinesezh2998Chinesezh2999Chinesezh3Chinesezh30Chinesezh300Chinesezh3000Chinesezh3001Chinesezh3002Chinesezh3003Chinesezh3004Chinesezh3005Chinesezh3006Chinesezh3007Chinesezh3008Chinesezh3009Chinesezh301Chinesezh3010Chinesezh3011Chinesezh3012Chinesezh3013Chinesezh3014Chinesezh3015Chinesezh3016Chinesezh3017Chinesezh3018Chinesezh3019Chinesezh302Chinesezh3020Chinesezh3021Chinesezh3022Chinesezh3023Chinesezh3024Chinesezh3025Chinesezh3026Chinesezh3027Chinesezh3028Chinesezh3029Chinesezh303Chinesezh3030Chinesezh3031Chinesezh3032Chinesezh3033Chinesezh3034Chinesezh3035Chinesezh3036Chinesezh3037Chinesezh3038Chinesezh3039Chinesezh304Chinesezh3040Chinesezh3041Chinesezh3042Chinesezh3043Chinesezh3044Chinesezh3045Chinesezh3046Chinesezh3047Chinesezh3048Chinesezh3049Chinesezh305Chinesezh3050Chinesezh3051Chinesezh3052Chinesezh3053Chinesezh3054Chinesezh3055Chinesezh3056Chinesezh3057Chinesezh3058Chinesezh3059Chinesezh306Chinesezh3060Chinesezh3061Chinesezh3062Chinesezh3063Chinesezh3064Chinesezh3065Chinesezh3066Chinesezh3067Chinesezh3068Chinesezh3069Chinesezh307Chinesezh3070Chinesezh3071Chinesezh3072Chinesezh3073Chinesezh3074Chinesezh3075Chinesezh3076Chinesezh3077Chinesezh3078Chinesezh3079Chinesezh308Chinesezh3080Chinesezh3081Chinesezh3082Chinesezh3083Chinesezh3084Chinesezh3085Chinesezh3086Chinesezh3087Chinesezh3088Chinesezh3089Chinesezh309Chinesezh3090Chinesezh3091Chinesezh3092Chinesezh3093Chinesezh3094Chinesezh3095Chinesezh3096Chinesezh3097Chinesezh3098Chinesezh3099Chinesezh31Chinesezh310Chinesezh3100Chinesezh3101Chinesezh3102Chinesezh3103Chinesezh3104Chinesezh3105Chinesezh3106Chinesezh3107Chinesezh3108Chinesezh3109Chinesezh311Chinesezh3110Chinesezh3111Chinesezh3112Chinesezh3113Chinesezh3114Chinesezh3115Chinesezh3116Chinesezh3117Chinesezh3118Chinesezh3119Chinesezh312Chinesezh3120Chinesezh3121Chinesezh3122Chinesezh3123Chinesezh3124Chinesezh3125Chinesezh3126Chinesezh3127Chinesezh3128Chinesezh3129Chinesezh313Chinesezh3130Chinesezh3131Chinesezh3132Chinesezh3133Chinesezh3134Chinesezh3135Chinesezh3136Chinesezh3137Chinesezh3138Chinesezh3139Chinesezh314Chinesezh3140Chinesezh3141Chinesezh3142Chinesezh3143Chinesezh3144Chinesezh3145Chinesezh3146Chinesezh3147Chinesezh3148Chinesezh3149Chinesezh315Chinesezh3150Chinesezh3151Chinesezh3152Chinesezh3153Chinesezh3154Chinesezh3155Chinesezh3156Chinesezh3157Chinesezh3158Chinesezh3159Chinesezh316Chinesezh3160Chinesezh3161Chinesezh3162Chinesezh3163Chinesezh3164Chinesezh3165Chinesezh3166Chinesezh3167Chinesezh3168Chinesezh3169Chinesezh317Chinesezh3170Chinesezh3171Chinesezh3172Chinesezh3173Chinesezh3174Chinesezh3175Chinesezh3176Chinesezh3177Chinesezh3178Chinesezh3179Chinesezh318Chinesezh3180Chinesezh3181Chinesezh3182Chinesezh3183Chinesezh3184Chinesezh3185Chinesezh3186Chinesezh3187Chinesezh3188Chinesezh3189Chinesezh319Chinesezh3190Chinesezh3191Chinesezh3192Chinesezh3193Chinesezh3194Chinesezh3195Chinesezh3196Chinesezh3197Chinesezh3198Chinesezh3199Chinesezh32Chinesezh320Chinesezh3200Chinesezh3201Chinesezh3202Chinesezh3203Chinesezh3204Chinesezh3205Chinesezh3206Chinesezh3207Chinesezh3208Chinesezh3209Chinesezh321Chinesezh3210Chinesezh3211Chinesezh3212Chinesezh3213Chinesezh3214Chinesezh3215Chinesezh3216Chinesezh3217Chinesezh3218Chinesezh3219Chinesezh322Chinesezh3220Chinesezh3221Chinesezh3222Chinesezh3223Chinesezh3224Chinesezh3225Chinesezh3226Chinesezh3227Chinesezh3228Chinesezh3229Chinesezh323Chinesezh3230Chinesezh3231Chinesezh3232Chinesezh3233Chinesezh3234Chinesezh3235Chinesezh3236Chinesezh3237Chinesezh3238Chinesezh3239Chinesezh324Chinesezh3240Chinesezh3241Chinesezh3242Chinesezh3243Chinesezh3244Chinesezh3245Chinesezh3246Chinesezh3247Chinesezh3248Chinesezh3249Chinesezh325Chinesezh3250Chinesezh3251Chinesezh3252Chinesezh3253Chinesezh3254Chinesezh3255Chinesezh3256Chinesezh3257Chinesezh3258Chinesezh3259Chinesezh326Chinesezh3260Chinesezh3261Chinesezh3262Chinesezh3263Chinesezh3264Chinesezh3265Chinesezh3266Chinesezh3267Chinesezh3268Chinesezh3269Chinesezh327Chinesezh3270Chinesezh3271Chinesezh3272Chinesezh3273Chinesezh3274Chinesezh3275Chinesezh3276Chinesezh3277Chinesezh3278Chinesezh3279Chinesezh328Chinesezh3280Chinesezh3281Chinesezh3282Chinesezh3283Chinesezh3284Chinesezh3285Chinesezh3286Chinesezh3287Chinesezh3288Chinesezh3289Chinesezh329Chinesezh3290Chinesezh3291Chinesezh3292Chinesezh3293Chinesezh3294Chinesezh3295Chinesezh3296Chinesezh3297Chinesezh3298Chinesezh3299Chinesezh33Chinesezh330Chinesezh3300Chinesezh3301Chinesezh3302Chinesezh3303Chinesezh3304Chinesezh3305Chinesezh3306Chinesezh3307Chinesezh3308Chinesezh3309Chinesezh331Chinesezh3310Chinesezh3311Chinesezh3312Chinesezh3313Chinesezh3314Chinesezh3315Chinesezh3316Chinesezh3317Chinesezh3318Chinesezh3319Chinesezh332Chinesezh3320Chinesezh3321Chinesezh3322Chinesezh3323Chinesezh3324Chinesezh3325Chinesezh3326Chinesezh3327Chinesezh3328Chinesezh3329Chinesezh333Chinesezh3330Chinesezh3331Chinesezh3332Chinesezh3333Chinesezh3334Chinesezh3335Chinesezh3336Chinesezh3337Chinesezh3338Chinesezh3339Chinesezh334Chinesezh3340Chinesezh3341Chinesezh3342Chinesezh3343Chinesezh3344Chinesezh3345Chinesezh3346Chinesezh3347Chinesezh3348Chinesezh3349Chinesezh335Chinesezh3350Chinesezh3351Chinesezh3352Chinesezh3353Chinesezh3354Chinesezh3355Chinesezh3356Chinesezh3357Chinesezh3358Chinesezh3359Chinesezh336Chinesezh3360Chinesezh3361Chinesezh3362Chinesezh3363Chinesezh3364Chinesezh3365Chinesezh3366Chinesezh3367Chinesezh3368Chinesezh3369Chinesezh337Chinesezh3370Chinesezh3371Chinesezh3372Chinesezh3373Chinesezh3374Chinesezh3375Chinesezh3376Chinesezh3377Chinesezh3378Chinesezh3379Chinesezh338Chinesezh3380Chinesezh3381Chinesezh3382Chinesezh3383Chinesezh3384Chinesezh3385Chinesezh3386Chinesezh3387Chinesezh3388Chinesezh3389Chinesezh339Chinesezh3390Chinesezh3391Chinesezh3392Chinesezh3393Chinesezh3394Chinesezh3395Chinesezh3396Chinesezh3397Chinesezh3398Chinesezh3399Chinesezh34Chinesezh340Chinesezh3400Chinesezh3401Chinesezh3402Chinesezh3403Chinesezh3404Chinesezh3405Chinesezh3406Chinesezh3407Chinesezh3408Chinesezh3409Chinesezh341Chinesezh3410Chinesezh3411Chinesezh3412Chinesezh3413Chinesezh3414Chinesezh3415Chinesezh3416Chinesezh3417Chinesezh3418Chinesezh3419Chinesezh342Chinesezh3420Chinesezh3421Chinesezh3422Chinesezh3423Chinesezh3424Chinesezh3425Chinesezh3426Chinesezh3427Chinesezh3428Chinesezh3429Chinesezh343Chinesezh3430Chinesezh3431Chinesezh3432Chinesezh3433Chinesezh3434Chinesezh3435Chinesezh3436Chinesezh3437Chinesezh3438Chinesezh3439Chinesezh344Chinesezh3440Chinesezh3441Chinesezh3442Chinesezh3443Chinesezh3444Chinesezh3445Chinesezh3446Chinesezh3447Chinesezh3448Chinesezh3449Chinesezh345Chinesezh3450Chinesezh3451Chinesezh3452Chinesezh3453Chinesezh3454Chinesezh3455Chinesezh3456Chinesezh3457Chinesezh3458Chinesezh3459Chinesezh346Chinesezh3460Chinesezh3461Chinesezh3462Chinesezh3463Chinesezh3464Chinesezh3465Chinesezh3466Chinesezh3467Chinesezh3468Chinesezh3469Chinesezh347Chinesezh3470Chinesezh3471Chinesezh3472Chinesezh3473Chinesezh3474Chinesezh3475Chinesezh3476Chinesezh3477Chinesezh3478Chinesezh3479Chinesezh348Chinesezh3480Chinesezh3481Chinesezh3482Chinesezh3483Chinesezh3484Chinesezh3485Chinesezh3486Chinesezh3487Chinesezh3488Chinesezh3489Chinesezh349Chinesezh3490Chinesezh3491Chinesezh3492Chinesezh3493Chinesezh3494Chinesezh3495Chinesezh3496Chinesezh3497Chinesezh3498Chinesezh3499Chinesezh35Chinesezh350Chinesezh3500Chinesezh3501Chinesezh3502Chinesezh3503Chinesezh3504Chinesezh3505Chinesezh3506Chinesezh3507Chinesezh3508Chinesezh3509Chinesezh351Chinesezh3510Chinesezh3511Chinesezh3512Chinesezh3513Chinesezh3514Chinesezh3515Chinesezh3516Chinesezh3517Chinesezh3518Chinesezh3519Chinesezh352Chinesezh3520Chinesezh3521Chinesezh3522Chinesezh3523Chinesezh3524Chinesezh3525Chinesezh3526Chinesezh3527Chinesezh3528Chinesezh3529Chinesezh353Chinesezh3530Chinesezh3531Chinesezh3532Chinesezh3533Chinesezh3534Chinesezh3535Chinesezh3536Chinesezh3537Chinesezh3538Chinesezh3539Chinesezh354Chinesezh3540Chinesezh3541Chinesezh3542Chinesezh3543Chinesezh3544Chinesezh3545Chinesezh3546Chinesezh3547Chinesezh3548Chinesezh3549Chinesezh355Chinesezh3550Chinesezh3551Chinesezh3552Chinesezh3553Chinesezh3554Chinesezh3555Chinesezh3556Chinesezh3557Chinesezh3558Chinesezh3559Chinesezh356Chinesezh3560Chinesezh3561Chinesezh3562Chinesezh3563Chinesezh3564Chinesezh3565Chinesezh3566Chinesezh3567Chinesezh3568Chinesezh3569Chinesezh357Chinesezh3570Chinesezh3571Chinesezh3572Chinesezh3573Chinesezh3574Chinesezh3575Chinesezh3576Chinesezh3577Chinesezh3578Chinesezh3579Chinesezh358Chinesezh3580Chinesezh3581Chinesezh3582Chinesezh3583Chinesezh3584Chinesezh3585Chinesezh3586Chinesezh3587Chinesezh3588Chinesezh3589Chinesezh359Chinesezh3590Chinesezh3591Chinesezh3592Chinesezh3593Chinesezh3594Chinesezh3595Chinesezh3596Chinesezh3597Chinesezh3598Chinesezh3599Chinesezh36Chinesezh360Chinesezh3600Chinesezh3601Chinesezh3602Chinesezh3603Chinesezh3604Chinesezh3605Chinesezh3606Chinesezh3607Chinesezh3608Chinesezh3609Chinesezh361Chinesezh3610Chinesezh3611Chinesezh3612Chinesezh3613Chinesezh3614Chinesezh3615Chinesezh3616Chinesezh3617Chinesezh3618Chinesezh3619Chinesezh362Chinesezh3620Chinesezh3621Chinesezh3622Chinesezh3623Chinesezh3624Chinesezh3625Chinesezh3626Chinesezh3627Chinesezh3628Chinesezh3629Chinesezh363Chinesezh3630Chinesezh3631Chinesezh3632Chinesezh3633Chinesezh3634Chinesezh3635Chinesezh3636Chinesezh3637Chinesezh3638Chinesezh3639Chinesezh364Chinesezh3640Chinesezh3641Chinesezh3642Chinesezh3643Chinesezh3644Chinesezh3645Chinesezh3646Chinesezh3647Chinesezh3648Chinesezh3649Chinesezh365Chinesezh3650Chinesezh3651Chinesezh3652Chinesezh3653Chinesezh3654Chinesezh3655Chinesezh3656Chinesezh3657Chinesezh3658Chinesezh3659Chinesezh366Chinesezh3660Chinesezh3661Chinesezh3662Chinesezh3663Chinesezh3664Chinesezh3665Chinesezh3666Chinesezh3667Chinesezh3668Chinesezh3669Chinesezh367Chinesezh3670Chinesezh3671Chinesezh3672Chinesezh3673Chinesezh3674Chinesezh3675Chinesezh3676Chinesezh3677Chinesezh3678Chinesezh3679Chinesezh368Chinesezh3680Chinesezh3681Chinesezh3682Chinesezh3683Chinesezh3684Chinesezh3685Chinesezh3686Chinesezh3687Chinesezh3688Chinesezh3689Chinesezh369Chinesezh3690Chinesezh3691Chinesezh3692Chinesezh3693Chinesezh3694Chinesezh3695Chinesezh3696Chinesezh3697Chinesezh3698Chinesezh3699Chinesezh37Chinesezh370Chinesezh3700Chinesezh3701Chinesezh3702Chinesezh3703Chinesezh3704Chinesezh3705Chinesezh3706Chinesezh3707Chinesezh3708Chinesezh3709Chinesezh371Chinesezh3710Chinesezh3711Chinesezh3712Chinesezh3713Chinesezh3714Chinesezh3715Chinesezh3716Chinesezh3717Chinesezh3718Chinesezh3719Chinesezh372Chinesezh3720Chinesezh3721Chinesezh3722Chinesezh3723Chinesezh3724Chinesezh3725Chinesezh3726Chinesezh3727Chinesezh3728Chinesezh3729Chinesezh373Chinesezh3730Chinesezh3731Chinesezh3732Chinesezh3733Chinesezh3734Chinesezh3735Chinesezh3736Chinesezh3737Chinesezh3738Chinesezh3739Chinesezh374Chinesezh3740Chinesezh3741Chinesezh3742Chinesezh3743Chinesezh3744Chinesezh3745Chinesezh3746Chinesezh3747Chinesezh3748Chinesezh3749Chinesezh375Chinesezh3750Chinesezh3751Chinesezh3752Chinesezh3753Chinesezh3754Chinesezh3755Chinesezh3756Chinesezh3757Chinesezh3758Chinesezh3759Chinesezh376Chinesezh3760Chinesezh3761Chinesezh3762Chinesezh3763Chinesezh3764Chinesezh3765Chinesezh3766Chinesezh3767Chinesezh3768Chinesezh3769Chinesezh377Chinesezh3770Chinesezh3771Chinesezh3772Chinesezh3773Chinesezh3774Chinesezh3775Chinesezh3776Chinesezh3777Chinesezh3778Chinesezh3779Chinesezh378Chinesezh3780Chinesezh3781Chinesezh3782Chinesezh3783Chinesezh3784Chinesezh3785Chinesezh3786Chinesezh3787Chinesezh3788Chinesezh3789Chinesezh379Chinesezh3790Chinesezh3791Chinesezh3792Chinesezh3793Chinesezh3794Chinesezh3795Chinesezh3796Chinesezh3797Chinesezh3798Chinesezh3799Chinesezh38Chinesezh380Chinesezh3800Chinesezh3801Chinesezh3802Chinesezh3803Chinesezh3804Chinesezh3805Chinesezh3806Chinesezh3807Chinesezh3808Chinesezh3809Chinesezh381Chinesezh3810Chinesezh3811Chinesezh3812Chinesezh3813Chinesezh3814Chinesezh3815Chinesezh3816Chinesezh3817Chinesezh3818Chinesezh3819Chinesezh382Chinesezh3820Chinesezh3821Chinesezh3822Chinesezh3823Chinesezh3824Chinesezh3825Chinesezh3826Chinesezh3827Chinesezh3828Chinesezh3829Chinesezh383Chinesezh3830Chinesezh3831Chinesezh3832Chinesezh3833Chinesezh3834Chinesezh3835Chinesezh3836Chinesezh3837Chinesezh3838Chinesezh3839Chinesezh384Chinesezh3840Chinesezh3841Chinesezh3842Chinesezh3843Chinesezh3844Chinesezh3845Chinesezh3846Chinesezh3847Chinesezh3848Chinesezh3849Chinesezh385Chinesezh3850Chinesezh3851Chinesezh3852Chinesezh3853Chinesezh3854Chinesezh3855Chinesezh3856Chinesezh3857Chinesezh3858Chinesezh3859Chinesezh386Chinesezh3860Chinesezh3861Chinesezh3862Chinesezh3863Chinesezh3864Chinesezh3865Chinesezh3866Chinesezh3867Chinesezh3868Chinesezh3869Chinesezh387Chinesezh3870Chinesezh3871Chinesezh3872Chinesezh3873Chinesezh3874Chinesezh3875Chinesezh3876Chinesezh3877Chinesezh3878Chinesezh3879Chinesezh388Chinesezh3880Chinesezh3881Chinesezh3882Chinesezh3883Chinesezh3884Chinesezh3885Chinesezh3886Chinesezh3887Chinesezh3888Chinesezh3889Chinesezh389Chinesezh3890Chinesezh3891Chinesezh3892Chinesezh3893Chinesezh3894Chinesezh3895Chinesezh3896Chinesezh3897Chinesezh3898Chinesezh3899Chinesezh39Chinesezh390Chinesezh3900Chinesezh3901Chinesezh3902Chinesezh3903Chinesezh3904Chinesezh3905Chinesezh3906Chinesezh3907Chinesezh3908Chinesezh3909Chinesezh391Chinesezh3910Chinesezh3911Chinesezh3912Chinesezh3913Chinesezh3914Chinesezh3915Chinesezh3916Chinesezh3917Chinesezh3918Chinesezh3919Chinesezh392Chinesezh3920Chinesezh3921Chinesezh3922Chinesezh3923Chinesezh3924Chinesezh3925Chinesezh3926Chinesezh3927Chinesezh3928Chinesezh3929Chinesezh393Chinesezh3930Chinesezh3931Chinesezh3932Chinesezh3933Chinesezh3934Chinesezh3935Chinesezh3936Chinesezh3937Chinesezh3938Chinesezh3939Chinesezh394Chinesezh3940Chinesezh3941Chinesezh3942Chinesezh3943Chinesezh3944Chinesezh3945Chinesezh3946Chinesezh3947Chinesezh3948Chinesezh3949Chinesezh395Chinesezh3950Chinesezh3951Chinesezh3952Chinesezh3953Chinesezh3954Chinesezh3955Chinesezh3956Chinesezh3957Chinesezh3958Chinesezh3959Chinesezh396Chinesezh3960Chinesezh3961Chinesezh3962Chinesezh3963Chinesezh3964Chinesezh3965Chinesezh3966Chinesezh3967Chinesezh3968Chinesezh3969Chinesezh397Chinesezh3970Chinesezh3971Chinesezh3972Chinesezh3973Chinesezh3974Chinesezh3975Chinesezh3976Chinesezh3977Chinesezh3978Chinesezh3979Chinesezh398Chinesezh3980Chinesezh3981Chinesezh3982Chinesezh3983Chinesezh3984Chinesezh3985Chinesezh3986Chinesezh3987Chinesezh3988Chinesezh3989Chinesezh399Chinesezh3990Chinesezh3991Chinesezh3992Chinesezh3993Chinesezh3994Chinesezh3995Chinesezh3996Chinesezh3997Chinesezh3998Chinesezh3999Chinesezh4Chinesezh40Chinesezh400Chinesezh4000Chinesezh4001Chinesezh4002Chinesezh4003Chinesezh4004Chinesezh4005Chinesezh4006Chinesezh4007Chinesezh4008Chinesezh4009Chinesezh401Chinesezh4010Chinesezh4011Chinesezh4012Chinesezh4013Chinesezh4014Chinesezh4015Chinesezh4016Chinesezh4017Chinesezh4018Chinesezh4019Chinesezh402Chinesezh4020Chinesezh4021Chinesezh4022Chinesezh4023Chinesezh4024Chinesezh4025Chinesezh4026Chinesezh4027Chinesezh4028Chinesezh4029Chinesezh403Chinesezh4030Chinesezh4031Chinesezh4032Chinesezh4033Chinesezh4034Chinesezh4035Chinesezh4036Chinesezh4037Chinesezh4038Chinesezh4039Chinesezh404Chinesezh4040Chinesezh4041Chinesezh4042Chinesezh4043Chinesezh4044Chinesezh4045Chinesezh4046Chinesezh4047Chinesezh4048Chinesezh4049Chinesezh405Chinesezh4050Chinesezh4051Chinesezh4052Chinesezh4053Chinesezh4054Chinesezh4055Chinesezh4056Chinesezh4057Chinesezh4058Chinesezh4059Chinesezh406Chinesezh4060Chinesezh4061Chinesezh4062Chinesezh4063Chinesezh4064Chinesezh4065Chinesezh4066Chinesezh4067Chinesezh4068Chinesezh4069Chinesezh407Chinesezh4070Chinesezh4071Chinesezh4072Chinesezh4073Chinesezh4074Chinesezh4075Chinesezh4076Chinesezh4077Chinesezh4078Chinesezh4079Chinesezh408Chinesezh4080Chinesezh4081Chinesezh4082Chinesezh4083Chinesezh4084Chinesezh4085Chinesezh4086Chinesezh4087Chinesezh4088Chinesezh4089Chinesezh409Chinesezh4090Chinesezh4091Chinesezh4092Chinesezh4093Chinesezh4094Chinesezh4095Chinesezh4096Chinesezh4097Chinesezh4098Chinesezh4099Chinesezh41Chinesezh410Chinesezh4100Chinesezh4101Chinesezh4102Chinesezh4103Chinesezh4104Chinesezh4105Chinesezh4106Chinesezh4107Chinesezh4108Chinesezh4109Chinesezh411Chinesezh4110Chinesezh4111Chinesezh4112Chinesezh4113Chinesezh4114Chinesezh4115Chinesezh4116Chinesezh4117Chinesezh4118Chinesezh4119Chinesezh412Chinesezh4120Chinesezh4121Chinesezh4122Chinesezh4123Chinesezh4124Chinesezh4125Chinesezh4126Chinesezh4127Chinesezh4128Chinesezh4129Chinesezh413Chinesezh4130Chinesezh4131Chinesezh4132Chinesezh4133Chinesezh4134Chinesezh4135Chinesezh4136Chinesezh4137Chinesezh4138Chinesezh4139Chinesezh414Chinesezh4140Chinesezh4141Chinesezh4142Chinesezh4143Chinesezh4144Chinesezh4145Chinesezh4146Chinesezh4147Chinesezh4148Chinesezh4149Chinesezh415Chinesezh4150Chinesezh4151Chinesezh4152Chinesezh4153Chinesezh4154Chinesezh4155Chinesezh4156Chinesezh4157Chinesezh4158Chinesezh4159Chinesezh416Chinesezh4160Chinesezh4161Chinesezh4162Chinesezh4163Chinesezh4164Chinesezh4165Chinesezh4166Chinesezh4167Chinesezh4168Chinesezh4169Chinesezh417Chinesezh4170Chinesezh4171Chinesezh4172Chinesezh4173Chinesezh4174Chinesezh4175Chinesezh4176Chinesezh4177Chinesezh4178Chinesezh4179Chinesezh418Chinesezh4180Chinesezh4181Chinesezh4182Chinesezh4183Chinesezh4184Chinesezh4185Chinesezh4186Chinesezh4187Chinesezh4188Chinesezh4189Chinesezh419Chinesezh4190Chinesezh4191Chinesezh4192Chinesezh4193Chinesezh4194Chinesezh4195Chinesezh4196Chinesezh4197Chinesezh4198Chinesezh4199Chinesezh42Chinesezh420Chinesezh4200Chinesezh4201Chinesezh4202Chinesezh4203Chinesezh4204Chinesezh4205Chinesezh4206Chinesezh4207Chinesezh4208Chinesezh4209Chinesezh421Chinesezh4210Chinesezh4211Chinesezh4212Chinesezh4213Chinesezh4214Chinesezh4215Chinesezh4216Chinesezh4217Chinesezh4218Chinesezh4219Chinesezh422Chinesezh4220Chinesezh4221Chinesezh4222Chinesezh4223Chinesezh4224Chinesezh4225Chinesezh4226Chinesezh4227Chinesezh4228Chinesezh4229Chinesezh423Chinesezh4230Chinesezh4231Chinesezh4232Chinesezh4233Chinesezh4234Chinesezh4235Chinesezh4236Chinesezh4237Chinesezh4238Chinesezh4239Chinesezh424Chinesezh4240Chinesezh4241Chinesezh4242Chinesezh4243Chinesezh4244Chinesezh4245Chinesezh4246Chinesezh4247Chinesezh4248Chinesezh4249Chinesezh425Chinesezh4250Chinesezh4251Chinesezh4252Chinesezh4253Chinesezh4254Chinesezh4255Chinesezh4256Chinesezh4257Chinesezh4258Chinesezh4259Chinesezh426Chinesezh4260Chinesezh4261Chinesezh4262Chinesezh4263Chinesezh4264Chinesezh4265Chinesezh4266Chinesezh4267Chinesezh4268Chinesezh4269Chinesezh427Chinesezh4270Chinesezh4271Chinesezh4272Chinesezh4273Chinesezh4274Chinesezh4275Chinesezh4276Chinesezh4277Chinesezh4278Chinesezh4279Chinesezh428Chinesezh4280Chinesezh4281Chinesezh4282Chinesezh4283Chinesezh4284Chinesezh4285Chinesezh4286Chinesezh4287Chinesezh4288Chinesezh4289Chinesezh429Chinesezh4290Chinesezh4291Chinesezh4292Chinesezh4293Chinesezh4294Chinesezh4295Chinesezh4296Chinesezh4297Chinesezh4298Chinesezh4299Chinesezh43Chinesezh430Chinesezh4300Chinesezh4301Chinesezh4302Chinesezh4303Chinesezh4304Chinesezh4305Chinesezh4306Chinesezh4307Chinesezh4308Chinesezh4309Chinesezh431Chinesezh4310Chinesezh4311Chinesezh4312Chinesezh4313Chinesezh4314Chinesezh4315Chinesezh4316Chinesezh4317Chinesezh4318Chinesezh4319Chinesezh432Chinesezh4320Chinesezh4321Chinesezh4322Chinesezh4323Chinesezh4324Chinesezh4325Chinesezh4326Chinesezh4327Chinesezh4328Chinesezh4329Chinesezh433Chinesezh4330Chinesezh4331Chinesezh4332Chinesezh4333Chinesezh4334Chinesezh4335Chinesezh4336Chinesezh4337Chinesezh4338Chinesezh4339Chinesezh434Chinesezh4340Chinesezh4341Chinesezh4342Chinesezh4343Chinesezh4344Chinesezh4345Chinesezh4346Chinesezh4347Chinesezh4348Chinesezh4349Chinesezh435Chinesezh4350Chinesezh4351Chinesezh4352Chinesezh4353Chinesezh4354Chinesezh4355Chinesezh4356Chinesezh4357Chinesezh4358Chinesezh4359Chinesezh436Chinesezh4360Chinesezh4361Chinesezh4362Chinesezh4363Chinesezh4364Chinesezh4365Chinesezh4366Chinesezh4367Chinesezh4368Chinesezh4369Chinesezh437Chinesezh4370Chinesezh4371Chinesezh4372Chinesezh4373Chinesezh4374Chinesezh4375Chinesezh4376Chinesezh4377Chinesezh4378Chinesezh4379Chinesezh438Chinesezh4380Chinesezh4381Chinesezh4382Chinesezh4383Chinesezh4384Chinesezh4385Chinesezh4386Chinesezh4387Chinesezh4388Chinesezh4389Chinesezh439Chinesezh4390Chinesezh4391Chinesezh4392Chinesezh4393Chinesezh4394Chinesezh4395Chinesezh4396Chinesezh4397Chinesezh4398Chinesezh4399Chinesezh44Chinesezh440Chinesezh4400Chinesezh4401Chinesezh4402Chinesezh4403Chinesezh4404Chinesezh4405Chinesezh4406Chinesezh4407Chinesezh4408Chinesezh4409Chinesezh441Chinesezh4410Chinesezh4411Chinesezh4412Chinesezh4413Chinesezh4414Chinesezh4415Chinesezh4416Chinesezh4417Chinesezh4418Chinesezh4419Chinesezh442Chinesezh4420Chinesezh4421Chinesezh4422Chinesezh4423Chinesezh4424Chinesezh4425Chinesezh4426Chinesezh4427Chinesezh4428Chinesezh4429Chinesezh443Chinesezh4430Chinesezh4431Chinesezh4432Chinesezh4433Chinesezh4434Chinesezh4435Chinesezh4436Chinesezh4437Chinesezh4438Chinesezh4439Chinesezh444Chinesezh4440Chinesezh4441Chinesezh4442Chinesezh4443Chinesezh4444Chinesezh4445Chinesezh4446Chinesezh4447Chinesezh4448Chinesezh4449Chinesezh445Chinesezh4450Chinesezh4451Chinesezh4452Chinesezh4453Chinesezh4454Chinesezh4455Chinesezh4456Chinesezh4457Chinesezh4458Chinesezh4459Chinesezh446Chinesezh4460Chinesezh4461Chinesezh4462Chinesezh4463Chinesezh4464Chinesezh4465Chinesezh4466Chinesezh4467Chinesezh4468Chinesezh4469Chinesezh447Chinesezh4470Chinesezh4471Chinesezh4472Chinesezh4473Chinesezh4474Chinesezh4475Chinesezh4476Chinesezh4477Chinesezh4478Chinesezh4479Chinesezh448Chinesezh4480Chinesezh4481Chinesezh4482Chinesezh4483Chinesezh4484Chinesezh4485Chinesezh4486Chinesezh4487Chinesezh4488Chinesezh4489Chinesezh449Chinesezh4490Chinesezh4491Chinesezh4492Chinesezh4493Chinesezh4494Chinesezh4495Chinesezh4496Chinesezh4497Chinesezh4498Chinesezh4499Chinesezh45Chinesezh450Chinesezh4500Chinesezh4501Chinesezh4502Chinesezh4503Chinesezh4504Chinesezh4505Chinesezh4506Chinesezh4507Chinesezh4508Chinesezh4509Chinesezh451Chinesezh4510Chinesezh4511Chinesezh4512Chinesezh4513Chinesezh4514Chinesezh4515Chinesezh4516Chinesezh4517Chinesezh4518Chinesezh4519Chinesezh452Chinesezh4520Chinesezh4521Chinesezh4522Chinesezh4523Chinesezh4524Chinesezh4525Chinesezh4526Chinesezh4527Chinesezh4528Chinesezh4529Chinesezh453Chinesezh4530Chinesezh4531Chinesezh4532Chinesezh4533Chinesezh4534Chinesezh4535Chinesezh4536Chinesezh4537Chinesezh4538Chinesezh4539Chinesezh454Chinesezh4540Chinesezh4541Chinesezh4542Chinesezh4543Chinesezh4544Chinesezh4545Chinesezh4546Chinesezh4547Chinesezh4548Chinesezh4549Chinesezh455Chinesezh4550Chinesezh4551Chinesezh4552Chinesezh4553Chinesezh4554Chinesezh4555Chinesezh4556Chinesezh4557Chinesezh4558Chinesezh4559Chinesezh456Chinesezh4560Chinesezh4561Chinesezh4562Chinesezh4563Chinesezh4564Chinesezh4565Chinesezh4566Chinesezh4567Chinesezh4568Chinesezh4569Chinesezh457Chinesezh4570Chinesezh4571Chinesezh4572Chinesezh4573Chinesezh4574Chinesezh4575Chinesezh4576Chinesezh4577Chinesezh4578Chinesezh4579Chinesezh458Chinesezh4580Chinesezh4581Chinesezh4582Chinesezh4583Chinesezh4584Chinesezh4585Chinesezh4586Chinesezh4587Chinesezh4588Chinesezh4589Chinesezh459Chinesezh4590Chinesezh4591Chinesezh4592Chinesezh4593Chinesezh4594Chinesezh4595Chinesezh4596Chinesezh4597Chinesezh4598Chinesezh4599Chinesezh46Chinesezh460Chinesezh4600Chinesezh4601Chinesezh4602Chinesezh4603Chinesezh4604Chinesezh4605Chinesezh4606Chinesezh4607Chinesezh4608Chinesezh4609Chinesezh461Chinesezh4610Chinesezh4611Chinesezh4612Chinesezh4613Chinesezh4614Chinesezh4615Chinesezh4616Chinesezh4617Chinesezh4618Chinesezh4619Chinesezh462Chinesezh4620Chinesezh4621Chinesezh4622Chinesezh4623Chinesezh4624Chinesezh4625Chinesezh4626Chinesezh4627Chinesezh4628Chinesezh4629Chinesezh463Chinesezh4630Chinesezh4631Chinesezh4632Chinesezh4633Chinesezh4634Chinesezh4635Chinesezh4636Chinesezh4637Chinesezh4638Chinesezh4639Chinesezh464Chinesezh4640Chinesezh4641Chinesezh4642Chinesezh4643Chinesezh4644Chinesezh4645Chinesezh4646Chinesezh4647Chinesezh4648Chinesezh4649Chinesezh465Chinesezh4650Chinesezh4651Chinesezh4652Chinesezh4653Chinesezh4654Chinesezh4655Chinesezh4656Chinesezh4657Chinesezh4658Chinesezh4659Chinesezh466Chinesezh4660Chinesezh4661Chinesezh4662Chinesezh4663Chinesezh4664Chinesezh4665Chinesezh4666Chinesezh4667Chinesezh4668Chinesezh4669Chinesezh467Chinesezh4670Chinesezh4671Chinesezh4672Chinesezh4673Chinesezh4674Chinesezh4675Chinesezh4676Chinesezh4677Chinesezh4678Chinesezh4679Chinesezh468Chinesezh4680Chinesezh4681Chinesezh4682Chinesezh4683Chinesezh4684Chinesezh4685Chinesezh4686Chinesezh4687Chinesezh4688Chinesezh4689Chinesezh469Chinesezh4690Chinesezh4691Chinesezh4692Chinesezh4693Chinesezh4694Chinesezh4695Chinesezh4696Chinesezh4697Chinesezh4698Chinesezh4699Chinesezh47Chinesezh470Chinesezh4700Chinesezh4701Chinesezh4702Chinesezh4703Chinesezh4704Chinesezh4705Chinesezh4706Chinesezh4707Chinesezh4708Chinesezh4709Chinesezh471Chinesezh4710Chinesezh4711Chinesezh4712Chinesezh4713Chinesezh4714Chinesezh4715Chinesezh4716Chinesezh4717Chinesezh4718Chinesezh4719Chinesezh472Chinesezh4720Chinesezh4721Chinesezh4722Chinesezh4723Chinesezh4724Chinesezh4725Chinesezh4726Chinesezh4727Chinesezh4728Chinesezh4729Chinesezh473Chinesezh4730Chinesezh4731Chinesezh4732Chinesezh4733Chinesezh4734Chinesezh4735Chinesezh4736Chinesezh4737Chinesezh4738Chinesezh4739Chinesezh474Chinesezh4740Chinesezh4741Chinesezh4742Chinesezh4743Chinesezh4744Chinesezh4745Chinesezh4746Chinesezh4747Chinesezh4748Chinesezh4749Chinesezh475Chinesezh4750Chinesezh4751Chinesezh4752Chinesezh4753Chinesezh4754Chinesezh4755Chinesezh4756Chinesezh4757Chinesezh4758Chinesezh4759Chinesezh476Chinesezh4760Chinesezh4761Chinesezh4762Chinesezh4763Chinesezh4764Chinesezh4765Chinesezh4766Chinesezh4767Chinesezh4768Chinesezh4769Chinesezh477Chinesezh4770Chinesezh4771Chinesezh4772Chinesezh4773Chinesezh4774Chinesezh4775Chinesezh4776Chinesezh4777Chinesezh4778Chinesezh4779Chinesezh478Chinesezh4780Chinesezh4781Chinesezh4782Chinesezh4783Chinesezh4784Chinesezh4785Chinesezh4786Chinesezh4787Chinesezh4788Chinesezh4789Chinesezh479Chinesezh4790Chinesezh4791Chinesezh4792Chinesezh4793Chinesezh4794Chinesezh4795Chinesezh4796Chinesezh4797Chinesezh4798Chinesezh4799Chinesezh48Chinesezh480Chinesezh4800Chinesezh4801Chinesezh4802Chinesezh4803Chinesezh4804Chinesezh4805Chinesezh4806Chinesezh4807Chinesezh4808Chinesezh4809Chinesezh481Chinesezh4810Chinesezh4811Chinesezh4812Chinesezh4813Chinesezh4814Chinesezh4815Chinesezh4816Chinesezh4817Chinesezh4818Chinesezh4819Chinesezh482Chinesezh4820Chinesezh4821Chinesezh4822Chinesezh4823Chinesezh4824Chinesezh4825Chinesezh4826Chinesezh4827Chinesezh4828Chinesezh4829Chinesezh483Chinesezh4830Chinesezh4831Chinesezh4832Chinesezh4833Chinesezh4834Chinesezh4835Chinesezh4836Chinesezh4837Chinesezh4838Chinesezh4839Chinesezh484Chinesezh4840Chinesezh4841Chinesezh4842Chinesezh4843Chinesezh4844Chinesezh4845Chinesezh4846Chinesezh4847Chinesezh4848Chinesezh4849Chinesezh485Chinesezh4850Chinesezh4851Chinesezh4852Chinesezh4853Chinesezh4854Chinesezh4855Chinesezh4856Chinesezh4857Chinesezh4858Chinesezh4859Chinesezh486Chinesezh4860Chinesezh4861Chinesezh4862Chinesezh4863Chinesezh4864Chinesezh4865Chinesezh4866Chinesezh4867Chinesezh4868Chinesezh4869Chinesezh487Chinesezh4870Chinesezh4871Chinesezh4872Chinesezh4873Chinesezh4874Chinesezh4875Chinesezh4876Chinesezh4877Chinesezh4878Chinesezh4879Chinesezh488Chinesezh4880Chinesezh4881Chinesezh4882Chinesezh4883Chinesezh4884Chinesezh4885Chinesezh4886Chinesezh4887Chinesezh4888Chinesezh4889Chinesezh489Chinesezh4890Chinesezh4891Chinesezh4892Chinesezh4893Chinesezh4894Chinesezh4895Chinesezh4896Chinesezh4897Chinesezh4898Chinesezh4899Chinesezh49Chinesezh490Chinesezh4900Chinesezh4901Chinesezh4902Chinesezh4903Chinesezh4904Chinesezh4905Chinesezh4906Chinesezh4907Chinesezh4908Chinesezh4909Chinesezh491Chinesezh4910Chinesezh4911Chinesezh4912Chinesezh4913Chinesezh4914Chinesezh4915Chinesezh4916Chinesezh4917Chinesezh4918Chinesezh4919Chinesezh492Chinesezh4920Chinesezh4921Chinesezh4922Chinesezh4923Chinesezh4924Chinesezh4925Chinesezh4926Chinesezh4927Chinesezh4928Chinesezh4929Chinesezh493Chinesezh4930Chinesezh4931Chinesezh4932Chinesezh4933Chinesezh4934Chinesezh4935Chinesezh4936Chinesezh4937Chinesezh4938Chinesezh4939Chinesezh494Chinesezh4940Chinesezh4941Chinesezh4942Chinesezh4943Chinesezh4944Chinesezh4945Chinesezh4946Chinesezh4947Chinesezh4948Chinesezh4949Chinesezh495Chinesezh4950Chinesezh4951Chinesezh4952Chinesezh4953Chinesezh4954Chinesezh4955Chinesezh4956Chinesezh4957Chinesezh4958Chinesezh4959Chinesezh496Chinesezh4960Chinesezh4961Chinesezh4962Chinesezh4963Chinesezh4964Chinesezh4965Chinesezh4966Chinesezh4967Chinesezh4968Chinesezh4969Chinesezh497Chinesezh4970Chinesezh4971Chinesezh4972Chinesezh4973Chinesezh4974Chinesezh4975Chinesezh4976Chinesezh4977Chinesezh4978Chinesezh4979Chinesezh498Chinesezh4980Chinesezh4981Chinesezh4982Chinesezh4983Chinesezh4984Chinesezh4985Chinesezh4986Chinesezh4987Chinesezh4988Chinesezh4989Chinesezh499Chinesezh4990Chinesezh4991Chinesezh4992Chinesezh4993Chinesezh4994Chinesezh4995Chinesezh4996Chinesezh4997Chinesezh4998Chinesezh4999Chinesezh5Chinesezh50Chinesezh500Chinesezh5000Chinesezh5001Chinesezh5002Chinesezh5003Chinesezh5004Chinesezh5005Chinesezh5006Chinesezh5007Chinesezh5008Chinesezh5009Chinesezh501Chinesezh5010Chinesezh5011Chinesezh5012Chinesezh5013Chinesezh5014Chinesezh5015Chinesezh5016Chinesezh5017Chinesezh5018Chinesezh5019Chinesezh502Chinesezh5020Chinesezh5021Chinesezh5022Chinesezh5023Chinesezh5024Chinesezh5025Chinesezh5026Chinesezh5027Chinesezh5028Chinesezh5029Chinesezh503Chinesezh5030Chinesezh5031Chinesezh5032Chinesezh5033Chinesezh5034Chinesezh5035Chinesezh5036Chinesezh5037Chinesezh5038Chinesezh5039Chinesezh504Chinesezh5040Chinesezh5041Chinesezh5042Chinesezh5043Chinesezh5044Chinesezh5045Chinesezh5046Chinesezh5047Chinesezh5048Chinesezh5049Chinesezh505Chinesezh5050Chinesezh5051Chinesezh5052Chinesezh5053Chinesezh5054Chinesezh5055Chinesezh5056Chinesezh5057Chinesezh5058Chinesezh5059Chinesezh506Chinesezh5060Chinesezh5061Chinesezh5062Chinesezh5063Chinesezh5064Chinesezh5065Chinesezh5066Chinesezh5067Chinesezh5068Chinesezh5069Chinesezh507Chinesezh5070Chinesezh5071Chinesezh5072Chinesezh5073Chinesezh5074Chinesezh5075Chinesezh5076Chinesezh5077Chinesezh5078Chinesezh5079Chinesezh508Chinesezh5080Chinesezh5081Chinesezh5082Chinesezh5083Chinesezh5084Chinesezh5085Chinesezh5086Chinesezh5087Chinesezh5088Chinesezh5089Chinesezh509Chinesezh5090Chinesezh5091Chinesezh5092Chinesezh5093Chinesezh5094Chinesezh5095Chinesezh5096Chinesezh5097Chinesezh5098Chinesezh5099Chinesezh51Chinesezh510Chinesezh5100Chinesezh5101Chinesezh5102Chinesezh5103Chinesezh5104Chinesezh5105Chinesezh5106Chinesezh5107Chinesezh5108Chinesezh5109Chinesezh511Chinesezh5110Chinesezh5111Chinesezh5112Chinesezh5113Chinesezh5114Chinesezh5115Chinesezh5116Chinesezh5117Chinesezh5118Chinesezh5119Chinesezh512Chinesezh5120Chinesezh5121Chinesezh5122Chinesezh5123Chinesezh5124Chinesezh5125Chinesezh5126Chinesezh5127Chinesezh5128Chinesezh5129Chinesezh513Chinesezh5130Chinesezh5131Chinesezh5132Chinesezh5133Chinesezh5134Chinesezh5135Chinesezh5136Chinesezh5137Chinesezh5138Chinesezh5139Chinesezh514Chinesezh5140Chinesezh5141Chinesezh5142Chinesezh5143Chinesezh5144Chinesezh5145Chinesezh5146Chinesezh5147Chinesezh5148Chinesezh5149Chinesezh515Chinesezh5150Chinesezh5151Chinesezh5152Chinesezh5153Chinesezh5154Chinesezh5155Chinesezh5156Chinesezh5157Chinesezh5158Chinesezh5159Chinesezh516Chinesezh5160Chinesezh5161Chinesezh5162Chinesezh5163Chinesezh5164Chinesezh5165Chinesezh5166Chinesezh5167Chinesezh5168Chinesezh5169Chinesezh517Chinesezh5170Chinesezh5171Chinesezh5172Chinesezh5173Chinesezh5174Chinesezh5175Chinesezh5176Chinesezh5177Chinesezh5178Chinesezh5179Chinesezh518Chinesezh5180Chinesezh5181Chinesezh5182Chinesezh5183Chinesezh5184Chinesezh5185Chinesezh5186Chinesezh5187Chinesezh5188Chinesezh5189Chinesezh519Chinesezh5190Chinesezh5191Chinesezh5192Chinesezh5193Chinesezh5194Chinesezh5195Chinesezh5196Chinesezh5197Chinesezh5198Chinesezh5199Chinesezh52Chinesezh520Chinesezh5200Chinesezh5201Chinesezh5202Chinesezh5203Chinesezh5204Chinesezh5205Chinesezh5206Chinesezh5207Chinesezh5208Chinesezh5209Chinesezh521Chinesezh5210Chinesezh5211Chinesezh5212Chinesezh5213Chinesezh5214Chinesezh5215Chinesezh5216Chinesezh5217Chinesezh5218Chinesezh5219Chinesezh522Chinesezh5220Chinesezh5221Chinesezh5222Chinesezh5223Chinesezh5224Chinesezh5225Chinesezh5226Chinesezh5227Chinesezh5228Chinesezh5229Chinesezh523Chinesezh5230Chinesezh5231Chinesezh5232Chinesezh5233Chinesezh5234Chinesezh5235Chinesezh5236Chinesezh5237Chinesezh5238Chinesezh5239Chinesezh524Chinesezh5240Chinesezh5241Chinesezh5242Chinesezh5243Chinesezh5244Chinesezh5245Chinesezh5246Chinesezh5247Chinesezh5248Chinesezh5249Chinesezh525Chinesezh5250Chinesezh5251Chinesezh5252Chinesezh5253Chinesezh5254Chinesezh5255Chinesezh5256Chinesezh5257Chinesezh5258Chinesezh5259Chinesezh526Chinesezh5260Chinesezh5261Chinesezh5262Chinesezh5263Chinesezh5264Chinesezh5265Chinesezh5266Chinesezh5267Chinesezh5268Chinesezh5269Chinesezh527Chinesezh5270Chinesezh5271Chinesezh5272Chinesezh5273Chinesezh5274Chinesezh5275Chinesezh5276Chinesezh5277Chinesezh5278Chinesezh5279Chinesezh528Chinesezh5280Chinesezh5281Chinesezh5282Chinesezh5283Chinesezh5284Chinesezh5285Chinesezh5286Chinesezh5287Chinesezh5288Chinesezh5289Chinesezh529Chinesezh5290Chinesezh5291Chinesezh5292Chinesezh5293Chinesezh5294Chinesezh5295Chinesezh5296Chinesezh5297Chinesezh5298Chinesezh5299Chinesezh53Chinesezh530Chinesezh5300Chinesezh5301Chinesezh5302Chinesezh5303Chinesezh5304Chinesezh5305Chinesezh5306Chinesezh5307Chinesezh5308Chinesezh5309Chinesezh531Chinesezh5310Chinesezh5311Chinesezh5312Chinesezh5313Chinesezh5314Chinesezh5315Chinesezh5316Chinesezh5317Chinesezh5318Chinesezh5319Chinesezh532Chinesezh5320Chinesezh5321Chinesezh5322Chinesezh5323Chinesezh5324Chinesezh5325Chinesezh5326Chinesezh5327Chinesezh5328Chinesezh5329Chinesezh533Chinesezh5330Chinesezh5331Chinesezh5332Chinesezh5333Chinesezh5334Chinesezh5335Chinesezh5336Chinesezh5337Chinesezh5338Chinesezh5339Chinesezh534Chinesezh5340Chinesezh5341Chinesezh5342Chinesezh5343Chinesezh5344Chinesezh5345Chinesezh5346Chinesezh5347Chinesezh5348Chinesezh5349Chinesezh535Chinesezh5350Chinesezh5351Chinesezh5352Chinesezh5353Chinesezh5354Chinesezh5355Chinesezh5356Chinesezh5357Chinesezh5358Chinesezh5359Chinesezh536Chinesezh5360Chinesezh5361Chinesezh5362Chinesezh5363Chinesezh5364Chinesezh5365Chinesezh5366Chinesezh5367Chinesezh5368Chinesezh5369Chinesezh537Chinesezh5370Chinesezh5371Chinesezh5372Chinesezh5373Chinesezh5374Chinesezh5375Chinesezh5376Chinesezh5377Chinesezh5378Chinesezh5379Chinesezh538Chinesezh5380Chinesezh5381Chinesezh5382Chinesezh5383Chinesezh5384Chinesezh5385Chinesezh5386Chinesezh5387Chinesezh5388Chinesezh5389Chinesezh539Chinesezh5390Chinesezh5391Chinesezh5392Chinesezh5393Chinesezh5394Chinesezh5395Chinesezh5396Chinesezh5397Chinesezh5398Chinesezh5399Chinesezh54Chinesezh540Chinesezh5400Chinesezh5401Chinesezh5402Chinesezh5403Chinesezh5404Chinesezh5405Chinesezh5406Chinesezh5407Chinesezh5408Chinesezh5409Chinesezh541Chinesezh5410Chinesezh5411Chinesezh5412Chinesezh5413Chinesezh5414Chinesezh5415Chinesezh5416Chinesezh5417Chinesezh5418Chinesezh5419Chinesezh542Chinesezh5420Chinesezh5421Chinesezh5422Chinesezh5423Chinesezh5424Chinesezh5425Chinesezh5426Chinesezh5427Chinesezh5428Chinesezh5429Chinesezh543Chinesezh5430Chinesezh5431Chinesezh5432Chinesezh5433Chinesezh5434Chinesezh5435Chinesezh5436Chinesezh5437Chinesezh5438Chinesezh5439Chinesezh544Chinesezh5440Chinesezh5441Chinesezh5442Chinesezh5443Chinesezh5444Chinesezh5445Chinesezh5446Chinesezh5447Chinesezh5448Chinesezh5449Chinesezh545Chinesezh5450Chinesezh5451Chinesezh5452Chinesezh5453Chinesezh5454Chinesezh5455Chinesezh5456Chinesezh5457Chinesezh5458Chinesezh5459Chinesezh546Chinesezh5460Chinesezh5461Chinesezh5462Chinesezh5463Chinesezh5464Chinesezh5465Chinesezh5466Chinesezh5467Chinesezh5468Chinesezh5469Chinesezh547Chinesezh5470Chinesezh5471Chinesezh5472Chinesezh5473Chinesezh5474Chinesezh5475Chinesezh5476Chinesezh5477Chinesezh5478Chinesezh5479Chinesezh548Chinesezh5480Chinesezh5481Chinesezh5482Chinesezh5483Chinesezh5484Chinesezh5485Chinesezh5486Chinesezh5487Chinesezh5488Chinesezh5489Chinesezh549Chinesezh5490Chinesezh5491Chinesezh5492Chinesezh5493Chinesezh5494Chinesezh5495Chinesezh5496Chinesezh5497Chinesezh5498Chinesezh5499Chinesezh55Chinesezh550Chinesezh5500Chinesezh5501Chinesezh5502Chinesezh5503Chinesezh5504Chinesezh5505Chinesezh5506Chinesezh5507Chinesezh5508Chinesezh5509Chinesezh551Chinesezh5510Chinesezh5511Chinesezh5512Chinesezh5513Chinesezh5514Chinesezh5515Chinesezh5516Chinesezh5517Chinesezh5518Chinesezh5519Chinesezh552Chinesezh5520Chinesezh5521Chinesezh5522Chinesezh5523Chinesezh5524Chinesezh5525Chinesezh5526Chinesezh5527Chinesezh5528Chinesezh5529Chinesezh553Chinesezh5530Chinesezh5531Chinesezh5532Chinesezh5533Chinesezh5534Chinesezh5535Chinesezh5536Chinesezh5537Chinesezh5538Chinesezh5539Chinesezh554Chinesezh5540Chinesezh5541Chinesezh5542Chinesezh5543Chinesezh5544Chinesezh5545Chinesezh5546Chinesezh5547Chinesezh5548Chinesezh5549Chinesezh555Chinesezh5550Chinesezh5551Chinesezh5552Chinesezh5553Chinesezh5554Chinesezh5555Chinesezh5556Chinesezh5557Chinesezh5558Chinesezh5559Chinesezh556Chinesezh5560Chinesezh5561Chinesezh5562Chinesezh5563Chinesezh5564Chinesezh5565Chinesezh5566Chinesezh5567Chinesezh5568Chinesezh5569Chinesezh557Chinesezh5570Chinesezh5571Chinesezh5572Chinesezh5573Chinesezh5574Chinesezh5575Chinesezh5576Chinesezh5577Chinesezh5578Chinesezh5579Chinesezh558Chinesezh5580Chinesezh5581Chinesezh5582Chinesezh5583Chinesezh5584Chinesezh5585Chinesezh5586Chinesezh5587Chinesezh5588Chinesezh5589Chinesezh559Chinesezh5590Chinesezh5591Chinesezh5592Chinesezh5593Chinesezh5594Chinesezh5595Chinesezh5596Chinesezh5597Chinesezh5598Chinesezh5599Chinesezh56Chinesezh560Chinesezh5600Chinesezh5601Chinesezh5602Chinesezh5603Chinesezh5604Chinesezh5605Chinesezh5606Chinesezh5607Chinesezh5608Chinesezh5609Chinesezh561Chinesezh5610Chinesezh5611Chinesezh5612Chinesezh5613Chinesezh5614Chinesezh5615Chinesezh5616Chinesezh5617Chinesezh5618Chinesezh5619Chinesezh562Chinesezh5620Chinesezh5621Chinesezh5622Chinesezh5623Chinesezh5624Chinesezh5625Chinesezh5626Chinesezh5627Chinesezh5628Chinesezh5629Chinesezh563Chinesezh5630Chinesezh5631Chinesezh5632Chinesezh5633Chinesezh5634Chinesezh5635Chinesezh5636Chinesezh5637Chinesezh5638Chinesezh5639Chinesezh564Chinesezh5640Chinesezh5641Chinesezh5642Chinesezh5643Chinesezh5644Chinesezh5645Chinesezh5646Chinesezh5647Chinesezh5648Chinesezh5649Chinesezh565Chinesezh5650Chinesezh5651Chinesezh5652Chinesezh5653Chinesezh5654Chinesezh5655Chinesezh5656Chinesezh5657Chinesezh5658Chinesezh5659Chinesezh566Chinesezh5660Chinesezh5661Chinesezh5662Chinesezh5663Chinesezh5664Chinesezh5665Chinesezh5666Chinesezh5667Chinesezh5668Chinesezh5669Chinesezh567Chinesezh5670Chinesezh5671Chinesezh5672Chinesezh5673Chinesezh5674Chinesezh5675Chinesezh5676Chinesezh5677Chinesezh5678Chinesezh5679Chinesezh568Chinesezh5680Chinesezh5681Chinesezh5682Chinesezh5683Chinesezh5684Chinesezh5685Chinesezh5686Chinesezh5687Chinesezh5688Chinesezh5689Chinesezh569Chinesezh5690Chinesezh5691Chinesezh5692Chinesezh5693Chinesezh5694Chinesezh5695Chinesezh5696Chinesezh5697Chinesezh5698Chinesezh5699Chinesezh57Chinesezh570Chinesezh5700Chinesezh5701Chinesezh5702Chinesezh5703Chinesezh5704Chinesezh5705Chinesezh5706Chinesezh5707Chinesezh5708Chinesezh5709Chinesezh571Chinesezh5710Chinesezh5711Chinesezh5712Chinesezh5713Chinesezh5714Chinesezh5715Chinesezh5716Chinesezh5717Chinesezh5718Chinesezh5719Chinesezh572Chinesezh5720Chinesezh5721Chinesezh5722Chinesezh5723Chinesezh5724Chinesezh5725Chinesezh5726Chinesezh5727Chinesezh5728Chinesezh5729Chinesezh573Chinesezh5730Chinesezh5731Chinesezh5732Chinesezh5733Chinesezh5734Chinesezh5735Chinesezh5736Chinesezh5737Chinesezh5738Chinesezh5739Chinesezh574Chinesezh5740Chinesezh5741Chinesezh5742Chinesezh5743Chinesezh5744Chinesezh5745Chinesezh5746Chinesezh5747Chinesezh5748Chinesezh5749Chinesezh575Chinesezh5750Chinesezh5751Chinesezh5752Chinesezh5753Chinesezh5754Chinesezh5755Chinesezh5756Chinesezh5757Chinesezh5758Chinesezh5759Chinesezh576Chinesezh5760Chinesezh5761Chinesezh5762Chinesezh5763Chinesezh5764Chinesezh5765Chinesezh5766Chinesezh5767Chinesezh5768Chinesezh5769Chinesezh577Chinesezh5770Chinesezh5771Chinesezh5772Chinesezh5773Chinesezh5774Chinesezh5775Chinesezh5776Chinesezh5777Chinesezh5778Chinesezh5779Chinesezh578Chinesezh5780Chinesezh5781Chinesezh5782Chinesezh5783Chinesezh5784Chinesezh5785Chinesezh5786Chinesezh5787Chinesezh5788Chinesezh5789Chinesezh579Chinesezh5790Chinesezh5791Chinesezh5792Chinesezh5793Chinesezh5794Chinesezh5795Chinesezh5796Chinesezh5797Chinesezh5798Chinesezh5799Chinesezh58Chinesezh580Chinesezh5800Chinesezh5801Chinesezh5802Chinesezh5803Chinesezh5804Chinesezh5805Chinesezh5806Chinesezh5807Chinesezh5808Chinesezh5809Chinesezh581Chinesezh5810Chinesezh5811Chinesezh5812Chinesezh5813Chinesezh5814Chinesezh5815Chinesezh5816Chinesezh5817Chinesezh5818Chinesezh5819Chinesezh582Chinesezh5820Chinesezh5821Chinesezh5822Chinesezh5823Chinesezh5824Chinesezh5825Chinesezh5826Chinesezh5827Chinesezh5828Chinesezh5829Chinesezh583Chinesezh5830Chinesezh5831Chinesezh5832Chinesezh5833Chinesezh5834Chinesezh5835Chinesezh5836Chinesezh5837Chinesezh5838Chinesezh5839Chinesezh584Chinesezh5840Chinesezh5841Chinesezh5842Chinesezh5843Chinesezh5844Chinesezh5845Chinesezh5846Chinesezh5847Chinesezh5848Chinesezh5849Chinesezh585Chinesezh5850Chinesezh5851Chinesezh5852Chinesezh5853Chinesezh5854Chinesezh5855Chinesezh5856Chinesezh5857Chinesezh5858Chinesezh5859Chinesezh586Chinesezh5860Chinesezh5861Chinesezh5862Chinesezh5863Chinesezh5864Chinesezh5865Chinesezh5866Chinesezh5867Chinesezh5868Chinesezh5869Chinesezh587Chinesezh5870Chinesezh5871Chinesezh5872Chinesezh5873Chinesezh5874Chinesezh5875Chinesezh5876Chinesezh5877Chinesezh5878Chinesezh5879Chinesezh588Chinesezh5880Chinesezh5881Chinesezh5882Chinesezh5883Chinesezh5884Chinesezh5885Chinesezh5886Chinesezh5887Chinesezh5888Chinesezh5889Chinesezh589Chinesezh5890Chinesezh5891Chinesezh5892Chinesezh5893Chinesezh5894Chinesezh5895Chinesezh5896Chinesezh5897Chinesezh5898Chinesezh5899Chinesezh59Chinesezh590Chinesezh5900Chinesezh5901Chinesezh5902Chinesezh5903Chinesezh5904Chinesezh5905Chinesezh5906Chinesezh5907Chinesezh5908Chinesezh5909Chinesezh591Chinesezh5910Chinesezh5911Chinesezh5912Chinesezh5913Chinesezh5914Chinesezh5915Chinesezh5916Chinesezh5917Chinesezh5918Chinesezh5919Chinesezh592Chinesezh5920Chinesezh5921Chinesezh5922Chinesezh5923Chinesezh5924Chinesezh5925Chinesezh5926Chinesezh5927Chinesezh5928Chinesezh5929Chinesezh593Chinesezh5930Chinesezh5931Chinesezh5932Chinesezh5933Chinesezh5934Chinesezh5935Chinesezh5936Chinesezh5937Chinesezh5938Chinesezh5939Chinesezh594Chinesezh5940Chinesezh5941Chinesezh5942Chinesezh5943Chinesezh5944Chinesezh5945Chinesezh5946Chinesezh5947Chinesezh5948Chinesezh5949Chinesezh595Chinesezh5950Chinesezh5951Chinesezh5952Chinesezh5953Chinesezh5954Chinesezh5955Chinesezh5956Chinesezh5957Chinesezh5958Chinesezh5959Chinesezh596Chinesezh5960Chinesezh5961Chinesezh5962Chinesezh5963Chinesezh5964Chinesezh5965Chinesezh5966Chinesezh5967Chinesezh5968Chinesezh5969Chinesezh597Chinesezh5970Chinesezh5971Chinesezh5972Chinesezh5973Chinesezh5974Chinesezh5975Chinesezh5976Chinesezh5977Chinesezh5978Chinesezh5979Chinesezh598Chinesezh5980Chinesezh5981Chinesezh5982Chinesezh5983Chinesezh5984Chinesezh5985Chinesezh5986Chinesezh5987Chinesezh5988Chinesezh5989Chinesezh599Chinesezh5990Chinesezh5991Chinesezh5992Chinesezh5993Chinesezh5994Chinesezh5995Chinesezh5996Chinesezh5997Chinesezh5998Chinesezh5999Chinesezh6Chinesezh60Chinesezh600Chinesezh6000Chinesezh6001Chinesezh6002Chinesezh6003Chinesezh6004Chinesezh6005Chinesezh6006Chinesezh6007Chinesezh6008Chinesezh6009Chinesezh601Chinesezh6010Chinesezh6011Chinesezh6012Chinesezh6013Chinesezh6014Chinesezh6015Chinesezh6016Chinesezh6017Chinesezh6018Chinesezh6019Chinesezh602Chinesezh6020Chinesezh6021Chinesezh6022Chinesezh6023Chinesezh6024Chinesezh6025Chinesezh6026Chinesezh6027Chinesezh6028Chinesezh6029Chinesezh603Chinesezh6030Chinesezh6031Chinesezh6032Chinesezh6033Chinesezh6034Chinesezh6035Chinesezh6036Chinesezh6037Chinesezh6038Chinesezh6039Chinesezh604Chinesezh6040Chinesezh6041Chinesezh6042Chinesezh6043Chinesezh6044Chinesezh6045Chinesezh6046Chinesezh6047Chinesezh6048Chinesezh6049Chinesezh605Chinesezh6050Chinesezh6051Chinesezh6052Chinesezh6053Chinesezh6054Chinesezh6055Chinesezh6056Chinesezh6057Chinesezh6058Chinesezh6059Chinesezh606Chinesezh6060Chinesezh6061Chinesezh6062Chinesezh6063Chinesezh6064Chinesezh6065Chinesezh6066Chinesezh6067Chinesezh6068Chinesezh6069Chinesezh607Chinesezh6070Chinesezh6071Chinesezh6072Chinesezh6073Chinesezh6074Chinesezh6075Chinesezh6076Chinesezh6077Chinesezh6078Chinesezh6079Chinesezh608Chinesezh6080Chinesezh6081Chinesezh6082Chinesezh6083Chinesezh6084Chinesezh6085Chinesezh6086Chinesezh6087Chinesezh6088Chinesezh6089Chinesezh609Chinesezh6090Chinesezh6091Chinesezh6092Chinesezh6093Chinesezh6094Chinesezh6095Chinesezh6096Chinesezh6097Chinesezh6098Chinesezh6099Chinesezh61Chinesezh610Chinesezh6100Chinesezh6101Chinesezh6102Chinesezh6103Chinesezh6104Chinesezh6105Chinesezh6106Chinesezh6107Chinesezh6108Chinesezh6109Chinesezh611Chinesezh6110Chinesezh6111Chinesezh6112Chinesezh6113Chinesezh6114Chinesezh6115Chinesezh6116Chinesezh6117Chinesezh6118Chinesezh6119Chinesezh612Chinesezh6120Chinesezh6121Chinesezh6122Chinesezh6123Chinesezh6124Chinesezh6125Chinesezh6126Chinesezh6127Chinesezh6128Chinesezh6129Chinesezh613Chinesezh6130Chinesezh6131Chinesezh6132Chinesezh6133Chinesezh6134Chinesezh6135Chinesezh6136Chinesezh6137Chinesezh6138Chinesezh6139Chinesezh614Chinesezh6140Chinesezh6141Chinesezh6142Chinesezh6143Chinesezh6144Chinesezh6145Chinesezh6146Chinesezh6147Chinesezh6148Chinesezh6149Chinesezh615Chinesezh6150Chinesezh6151Chinesezh6152Chinesezh6153Chinesezh6154Chinesezh6155Chinesezh6156Chinesezh6157Chinesezh6158Chinesezh6159Chinesezh616Chinesezh6160Chinesezh6161Chinesezh6162Chinesezh6163Chinesezh6164Chinesezh6165Chinesezh6166Chinesezh6167Chinesezh6168Chinesezh6169Chinesezh617Chinesezh6170Chinesezh6171Chinesezh6172Chinesezh6173Chinesezh6174Chinesezh6175Chinesezh6176Chinesezh6177Chinesezh6178Chinesezh6179Chinesezh618Chinesezh6180Chinesezh6181Chinesezh6182Chinesezh6183Chinesezh6184Chinesezh6185Chinesezh6186Chinesezh6187Chinesezh6188Chinesezh6189Chinesezh619Chinesezh6190Chinesezh6191Chinesezh6192Chinesezh6193Chinesezh6194Chinesezh6195Chinesezh6196Chinesezh6197Chinesezh6198Chinesezh6199Chinesezh62Chinesezh620Chinesezh6200Chinesezh6201Chinesezh6202Chinesezh6203Chinesezh6204Chinesezh6205Chinesezh6206Chinesezh6207Chinesezh6208Chinesezh6209Chinesezh621Chinesezh6210Chinesezh6211Chinesezh6212Chinesezh6213Chinesezh6214Chinesezh6215Chinesezh6216Chinesezh6217Chinesezh6218Chinesezh6219Chinesezh622Chinesezh6220Chinesezh6221Chinesezh6222Chinesezh6223Chinesezh6224Chinesezh6225Chinesezh6226Chinesezh6227Chinesezh6228Chinesezh6229Chinesezh623Chinesezh6230Chinesezh6231Chinesezh6232Chinesezh6233Chinesezh6234Chinesezh6235Chinesezh6236Chinesezh6237Chinesezh6238Chinesezh6239Chinesezh624Chinesezh6240Chinesezh6241Chinesezh6242Chinesezh6243Chinesezh6244Chinesezh6245Chinesezh6246Chinesezh6247Chinesezh6248Chinesezh6249Chinesezh625Chinesezh6250Chinesezh6251Chinesezh6252Chinesezh6253Chinesezh6254Chinesezh6255Chinesezh6256Chinesezh6257Chinesezh6258Chinesezh6259Chinesezh626Chinesezh6260Chinesezh6261Chinesezh6262Chinesezh6263Chinesezh6264Chinesezh6265Chinesezh6266Chinesezh6267Chinesezh6268Chinesezh6269Chinesezh627Chinesezh6270Chinesezh6271Chinesezh6272Chinesezh6273Chinesezh6274Chinesezh6275Chinesezh6276Chinesezh6277Chinesezh6278Chinesezh6279Chinesezh628Chinesezh6280Chinesezh6281Chinesezh6282Chinesezh6283Chinesezh6284Chinesezh6285Chinesezh6286Chinesezh6287Chinesezh6288Chinesezh6289Chinesezh629Chinesezh6290Chinesezh6291Chinesezh6292Chinesezh6293Chinesezh6294Chinesezh6295Chinesezh6296Chinesezh6297Chinesezh6298Chinesezh6299Chinesezh63Chinesezh630Chinesezh6300Chinesezh6301Chinesezh6302Chinesezh6303Chinesezh6304Chinesezh6305Chinesezh6306Chinesezh6307Chinesezh6308Chinesezh6309Chinesezh631Chinesezh6310Chinesezh6311Chinesezh6312Chinesezh6313Chinesezh6314Chinesezh6315Chinesezh6316Chinesezh6317Chinesezh6318Chinesezh6319Chinesezh632Chinesezh6320Chinesezh6321Chinesezh6322Chinesezh6323Chinesezh6324Chinesezh6325Chinesezh6326Chinesezh6327Chinesezh6328Chinesezh6329Chinesezh633Chinesezh6330Chinesezh6331Chinesezh6332Chinesezh6333Chinesezh6334Chinesezh6335Chinesezh6336Chinesezh6337Chinesezh6338Chinesezh6339Chinesezh634Chinesezh6340Chinesezh6341Chinesezh6342Chinesezh6343Chinesezh6344Chinesezh6345Chinesezh6346Chinesezh6347Chinesezh6348Chinesezh6349Chinesezh635Chinesezh6350Chinesezh6351Chinesezh6352Chinesezh6353Chinesezh6354Chinesezh6355Chinesezh6356Chinesezh6357Chinesezh6358Chinesezh6359Chinesezh636Chinesezh6360Chinesezh6361Chinesezh6362Chinesezh6363Chinesezh6364Chinesezh6365Chinesezh6366Chinesezh6367Chinesezh6368Chinesezh6369Chinesezh637Chinesezh6370Chinesezh6371Chinesezh6372Chinesezh6373Chinesezh6374Chinesezh6375Chinesezh6376Chinesezh6377Chinesezh6378Chinesezh6379Chinesezh638Chinesezh6380Chinesezh6381Chinesezh6382Chinesezh6383Chinesezh6384Chinesezh6385Chinesezh6386Chinesezh6387Chinesezh6388Chinesezh6389Chinesezh639Chinesezh6390Chinesezh6391Chinesezh6392Chinesezh6393Chinesezh6394Chinesezh6395Chinesezh6396Chinesezh6397Chinesezh6398Chinesezh6399Chinesezh64Chinesezh640Chinesezh6400Chinesezh6401Chinesezh6402Chinesezh6403Chinesezh6404Chinesezh6405Chinesezh6406Chinesezh6407Chinesezh6408Chinesezh6409Chinesezh641Chinesezh6410Chinesezh6411Chinesezh6412Chinesezh6413Chinesezh6414Chinesezh6415Chinesezh6416Chinesezh6417Chinesezh6418Chinesezh6419Chinesezh642Chinesezh6420Chinesezh6421Chinesezh6422Chinesezh6423Chinesezh6424Chinesezh6425Chinesezh6426Chinesezh6427Chinesezh6428Chinesezh6429Chinesezh643Chinesezh6430Chinesezh6431Chinesezh6432Chinesezh6433Chinesezh6434Chinesezh6435Chinesezh6436Chinesezh6437Chinesezh6438Chinesezh6439Chinesezh644Chinesezh6440Chinesezh6441Chinesezh6442Chinesezh6443Chinesezh6444Chinesezh6445Chinesezh6446Chinesezh6447Chinesezh6448Chinesezh6449Chinesezh645Chinesezh6450Chinesezh6451Chinesezh6452Chinesezh6453Chinesezh6454Chinesezh6455Chinesezh6456Chinesezh6457Chinesezh6458Chinesezh6459Chinesezh646Chinesezh6460Chinesezh6461Chinesezh6462Chinesezh6463Chinesezh6464Chinesezh6465Chinesezh6466Chinesezh6467Chinesezh6468Chinesezh6469Chinesezh647Chinesezh6470Chinesezh6471Chinesezh6472Chinesezh6473Chinesezh6474Chinesezh6475Chinesezh6476Chinesezh6477Chinesezh6478Chinesezh6479Chinesezh648Chinesezh6480Chinesezh6481Chinesezh6482Chinesezh6483Chinesezh6484Chinesezh6485Chinesezh6486Chinesezh6487Chinesezh6488Chinesezh6489Chinesezh649Chinesezh6490Chinesezh6491Chinesezh6492Chinesezh6493Chinesezh6494Chinesezh6495Chinesezh6496Chinesezh6497Chinesezh6498Chinesezh6499Chinesezh65Chinesezh650Chinesezh6500Chinesezh6501Chinesezh6502Chinesezh6503Chinesezh6504Chinesezh6505Chinesezh6506Chinesezh6507Chinesezh6508Chinesezh6509Chinesezh651Chinesezh6510Chinesezh6511Chinesezh6512Chinesezh6513Chinesezh6514Chinesezh6515Chinesezh6516Chinesezh6517Chinesezh6518Chinesezh6519Chinesezh652Chinesezh6520Chinesezh6521Chinesezh6522Chinesezh6523Chinesezh6524Chinesezh6525Chinesezh6526Chinesezh6527Chinesezh6528Chinesezh6529Chinesezh653Chinesezh6530Chinesezh6531Chinesezh6532Chinesezh6533Chinesezh6534Chinesezh6535Chinesezh6536Chinesezh6537Chinesezh6538Chinesezh6539Chinesezh654Chinesezh6540Chinesezh6541Chinesezh6542Chinesezh6543Chinesezh6544Chinesezh6545Chinesezh6546Chinesezh6547Chinesezh6548Chinesezh6549Chinesezh655Chinesezh6550Chinesezh6551Chinesezh6552Chinesezh6553Chinesezh6554Chinesezh6555Chinesezh6556Chinesezh6557Chinesezh6558Chinesezh6559Chinesezh656Chinesezh6560Chinesezh6561Chinesezh6562Chinesezh6563Chinesezh6564Chinesezh6565Chinesezh6566Chinesezh6567Chinesezh6568Chinesezh6569Chinesezh657Chinesezh6570Chinesezh6571Chinesezh6572Chinesezh6573Chinesezh6574Chinesezh6575Chinesezh6576Chinesezh6577Chinesezh6578Chinesezh6579Chinesezh658Chinesezh6580Chinesezh6581Chinesezh6582Chinesezh6583Chinesezh6584Chinesezh6585Chinesezh6586Chinesezh6587Chinesezh6588Chinesezh6589Chinesezh659Chinesezh6590Chinesezh6591Chinesezh6592Chinesezh6593Chinesezh6594Chinesezh6595Chinesezh6596Chinesezh6597Chinesezh6598Chinesezh6599Chinesezh66Chinesezh660Chinesezh6600Chinesezh6601Chinesezh6602Chinesezh6603Chinesezh6604Chinesezh6605Chinesezh6606Chinesezh6607Chinesezh6608Chinesezh6609Chinesezh661Chinesezh6610Chinesezh6611Chinesezh6612Chinesezh6613Chinesezh6614Chinesezh6615Chinesezh6616Chinesezh6617Chinesezh6618Chinesezh6619Chinesezh662Chinesezh6620Chinesezh6621Chinesezh6622Chinesezh6623Chinesezh6624Chinesezh6625Chinesezh6626Chinesezh6627Chinesezh6628Chinesezh6629Chinesezh663Chinesezh6630Chinesezh6631Chinesezh6632Chinesezh6633Chinesezh6634Chinesezh6635Chinesezh6636Chinesezh6637Chinesezh6638Chinesezh6639Chinesezh664Chinesezh6640Chinesezh6641Chinesezh6642Chinesezh6643Chinesezh6644Chinesezh6645Chinesezh6646Chinesezh6647Chinesezh6648Chinesezh6649Chinesezh665Chinesezh6650Chinesezh6651Chinesezh6652Chinesezh6653Chinesezh6654Chinesezh6655Chinesezh6656Chinesezh6657Chinesezh6658Chinesezh6659Chinesezh666Chinesezh6660Chinesezh6661Chinesezh6662Chinesezh6663Chinesezh6664Chinesezh6665Chinesezh6666Chinesezh6667Chinesezh6668Chinesezh6669Chinesezh667Chinesezh6670Chinesezh6671Chinesezh6672Chinesezh6673Chinesezh6674Chinesezh6675Chinesezh6676Chinesezh6677Chinesezh6678Chinesezh6679Chinesezh668Chinesezh6680Chinesezh6681Chinesezh6682Chinesezh6683Chinesezh6684Chinesezh6685Chinesezh6686Chinesezh6687Chinesezh6688Chinesezh6689Chinesezh669Chinesezh6690Chinesezh6691Chinesezh6692Chinesezh6693Chinesezh6694Chinesezh6695Chinesezh6696Chinesezh6697Chinesezh6698Chinesezh6699Chinesezh67Chinesezh670Chinesezh6700Chinesezh6701Chinesezh6702Chinesezh6703Chinesezh6704Chinesezh6705Chinesezh6706Chinesezh6707Chinesezh6708Chinesezh6709Chinesezh671Chinesezh6710Chinesezh6711Chinesezh6712Chinesezh6713Chinesezh6714Chinesezh6715Chinesezh6716Chinesezh6717Chinesezh6718Chinesezh6719Chinesezh672Chinesezh6720Chinesezh6721Chinesezh6722Chinesezh6723Chinesezh6724Chinesezh6725Chinesezh6726Chinesezh6727Chinesezh6728Chinesezh6729Chinesezh673Chinesezh6730Chinesezh6731Chinesezh6732Chinesezh6733Chinesezh6734Chinesezh6735Chinesezh6736Chinesezh6737Chinesezh6738Chinesezh6739Chinesezh674Chinesezh6740Chinesezh6741Chinesezh6742Chinesezh6743Chinesezh6744Chinesezh6745Chinesezh6746Chinesezh6747Chinesezh6748Chinesezh6749Chinesezh675Chinesezh6750Chinesezh6751Chinesezh6752Chinesezh6753Chinesezh6754Chinesezh6755Chinesezh6756Chinesezh6757Chinesezh6758Chinesezh6759Chinesezh676Chinesezh6760Chinesezh6761Chinesezh6762Chinesezh6763Chinesezh6764Chinesezh6765Chinesezh6766Chinesezh6767Chinesezh6768Chinesezh6769Chinesezh677Chinesezh6770Chinesezh6771Chinesezh6772Chinesezh6773Chinesezh6774Chinesezh6775Chinesezh6776Chinesezh6777Chinesezh6778Chinesezh6779Chinesezh678Chinesezh6780Chinesezh6781Chinesezh6782Chinesezh6783Chinesezh6784Chinesezh6785Chinesezh6786Chinesezh6787Chinesezh6788Chinesezh6789Chinesezh679Chinesezh6790Chinesezh6791Chinesezh6792Chinesezh6793Chinesezh6794Chinesezh6795Chinesezh6796Chinesezh6797Chinesezh6798Chinesezh6799Chinesezh68Chinesezh680Chinesezh6800Chinesezh6801Chinesezh6802Chinesezh6803Chinesezh6804Chinesezh6805Chinesezh6806Chinesezh6807Chinesezh6808Chinesezh6809Chinesezh681Chinesezh6810Chinesezh6811Chinesezh6812Chinesezh6813Chinesezh6814Chinesezh6815Chinesezh6816Chinesezh6817Chinesezh6818Chinesezh6819Chinesezh682Chinesezh6820Chinesezh6821Chinesezh6822Chinesezh6823Chinesezh6824Chinesezh6825Chinesezh6826Chinesezh6827Chinesezh6828Chinesezh6829Chinesezh683Chinesezh6830Chinesezh6831Chinesezh6832Chinesezh6833Chinesezh6834Chinesezh6835Chinesezh6836Chinesezh6837Chinesezh6838Chinesezh6839Chinesezh684Chinesezh6840Chinesezh6841Chinesezh6842Chinesezh6843Chinesezh6844Chinesezh6845Chinesezh6846Chinesezh6847Chinesezh6848Chinesezh6849Chinesezh685Chinesezh6850Chinesezh6851Chinesezh6852Chinesezh6853Chinesezh6854Chinesezh6855Chinesezh6856Chinesezh6857Chinesezh6858Chinesezh6859Chinesezh686Chinesezh6860Chinesezh6861Chinesezh6862Chinesezh6863Chinesezh6864Chinesezh6865Chinesezh6866Chinesezh6867Chinesezh6868Chinesezh6869Chinesezh687Chinesezh6870Chinesezh6871Chinesezh6872Chinesezh6873Chinesezh6874Chinesezh6875Chinesezh6876Chinesezh6877Chinesezh6878Chinesezh6879Chinesezh688Chinesezh6880Chinesezh6881Chinesezh6882Chinesezh6883Chinesezh6884Chinesezh6885Chinesezh6886Chinesezh6887Chinesezh6888Chinesezh6889Chinesezh689Chinesezh6890Chinesezh6891Chinesezh6892Chinesezh6893Chinesezh6894Chinesezh6895Chinesezh6896Chinesezh6897Chinesezh6898Chinesezh6899Chinesezh69Chinesezh690Chinesezh6900Chinesezh6901Chinesezh6902Chinesezh6903Chinesezh6904Chinesezh6905Chinesezh6906Chinesezh6907Chinesezh6908Chinesezh6909Chinesezh691Chinesezh6910Chinesezh6911Chinesezh6912Chinesezh6913Chinesezh6914Chinesezh6915Chinesezh6916Chinesezh6917Chinesezh6918Chinesezh6919Chinesezh692Chinesezh6920Chinesezh6921Chinesezh6922Chinesezh6923Chinesezh6924Chinesezh6925Chinesezh6926Chinesezh6927Chinesezh6928Chinesezh6929Chinesezh693Chinesezh6930Chinesezh6931Chinesezh6932Chinesezh6933Chinesezh6934Chinesezh6935Chinesezh6936Chinesezh6937Chinesezh6938Chinesezh6939Chinesezh694Chinesezh6940Chinesezh6941Chinesezh6942Chinesezh6943Chinesezh6944Chinesezh6945Chinesezh6946Chinesezh6947Chinesezh6948Chinesezh6949Chinesezh695Chinesezh6950Chinesezh6951Chinesezh6952Chinesezh6953Chinesezh6954Chinesezh6955Chinesezh6956Chinesezh6957Chinesezh6958Chinesezh6959Chinesezh696Chinesezh6960Chinesezh6961Chinesezh6962Chinesezh6963Chinesezh6964Chinesezh6965Chinesezh6966Chinesezh6967Chinesezh6968Chinesezh6969Chinesezh697Chinesezh6970Chinesezh6971Chinesezh6972Chinesezh6973Chinesezh6974Chinesezh6975Chinesezh6976Chinesezh6977Chinesezh6978Chinesezh6979Chinesezh698Chinesezh6980Chinesezh6981Chinesezh6982Chinesezh6983Chinesezh6984Chinesezh6985Chinesezh6986Chinesezh6987Chinesezh6988Chinesezh6989Chinesezh699Chinesezh6990Chinesezh6991Chinesezh6992Chinesezh6993Chinesezh6994Chinesezh6995Chinesezh6996Chinesezh6997Chinesezh6998Chinesezh6999Chinesezh7Chinesezh70Chinesezh700Chinesezh7000Chinesezh7001Chinesezh7002Chinesezh7003Chinesezh7004Chinesezh7005Chinesezh7006Chinesezh7007Chinesezh7008Chinesezh7009Chinesezh701Chinesezh7010Chinesezh7011Chinesezh7012Chinesezh7013Chinesezh7014Chinesezh7015Chinesezh7016Chinesezh7017Chinesezh7018Chinesezh7019Chinesezh702Chinesezh7020Chinesezh7021Chinesezh7022Chinesezh7023Chinesezh7024Chinesezh7025Chinesezh7026Chinesezh7027Chinesezh7028Chinesezh7029Chinesezh703Chinesezh7030Chinesezh7031Chinesezh7032Chinesezh7033Chinesezh7034Chinesezh7035Chinesezh7036Chinesezh7037Chinesezh7038Chinesezh7039Chinesezh704Chinesezh7040Chinesezh7041Chinesezh7042Chinesezh7043Chinesezh7044Chinesezh7045Chinesezh7046Chinesezh7047Chinesezh7048Chinesezh7049Chinesezh705Chinesezh7050Chinesezh7051Chinesezh7052Chinesezh7053Chinesezh7054Chinesezh7055Chinesezh7056Chinesezh7057Chinesezh7058Chinesezh7059Chinesezh706Chinesezh7060Chinesezh7061Chinesezh7062Chinesezh7063Chinesezh7064Chinesezh7065Chinesezh7066Chinesezh7067Chinesezh7068Chinesezh7069Chinesezh707Chinesezh7070Chinesezh7071Chinesezh7072Chinesezh7073Chinesezh7074Chinesezh7075Chinesezh7076Chinesezh7077Chinesezh7078Chinesezh7079Chinesezh708Chinesezh7080Chinesezh7081Chinesezh7082Chinesezh7083Chinesezh7084Chinesezh7085Chinesezh7086Chinesezh7087Chinesezh7088Chinesezh7089Chinesezh709Chinesezh7090Chinesezh7091Chinesezh7092Chinesezh7093Chinesezh7094Chinesezh7095Chinesezh7096Chinesezh7097Chinesezh7098Chinesezh7099Chinesezh71Chinesezh710Chinesezh7100Chinesezh7101Chinesezh7102Chinesezh7103Chinesezh7104Chinesezh7105Chinesezh7106Chinesezh7107Chinesezh7108Chinesezh7109Chinesezh711Chinesezh7110Chinesezh7111Chinesezh7112Chinesezh7113Chinesezh7114Chinesezh7115Chinesezh7116Chinesezh7117Chinesezh7118Chinesezh7119Chinesezh712Chinesezh7120Chinesezh7121Chinesezh7122Chinesezh7123Chinesezh7124Chinesezh7125Chinesezh7126Chinesezh7127Chinesezh7128Chinesezh7129Chinesezh713Chinesezh7130Chinesezh7131Chinesezh7132Chinesezh7133Chinesezh7134Chinesezh7135Chinesezh7136Chinesezh7137Chinesezh7138Chinesezh7139Chinesezh714Chinesezh7140Chinesezh7141Chinesezh7142Chinesezh7143Chinesezh7144Chinesezh7145Chinesezh7146Chinesezh7147Chinesezh7148Chinesezh7149Chinesezh715Chinesezh7150Chinesezh7151Chinesezh7152Chinesezh7153Chinesezh7154Chinesezh7155Chinesezh7156Chinesezh7157Chinesezh7158Chinesezh7159Chinesezh716Chinesezh7160Chinesezh7161Chinesezh7162Chinesezh7163Chinesezh7164Chinesezh7165Chinesezh7166Chinesezh7167Chinesezh7168Chinesezh7169Chinesezh717Chinesezh7170Chinesezh7171Chinesezh7172Chinesezh7173Chinesezh7174Chinesezh7175Chinesezh7176Chinesezh7177Chinesezh7178Chinesezh7179Chinesezh718Chinesezh7180Chinesezh7181Chinesezh7182Chinesezh7183Chinesezh7184Chinesezh7185Chinesezh7186Chinesezh7187Chinesezh7188Chinesezh7189Chinesezh719Chinesezh7190Chinesezh7191Chinesezh7192Chinesezh7193Chinesezh7194Chinesezh7195Chinesezh7196Chinesezh7197Chinesezh7198Chinesezh7199Chinesezh72Chinesezh720Chinesezh7200Chinesezh7201Chinesezh7202Chinesezh7203Chinesezh7204Chinesezh7205Chinesezh7206Chinesezh7207Chinesezh7208Chinesezh7209Chinesezh721Chinesezh7210Chinesezh7211Chinesezh7212Chinesezh7213Chinesezh7214Chinesezh7215Chinesezh7216Chinesezh7217Chinesezh7218Chinesezh7219Chinesezh722Chinesezh7220Chinesezh7221Chinesezh7222Chinesezh7223Chinesezh7224Chinesezh7225Chinesezh7226Chinesezh7227Chinesezh7228Chinesezh7229Chinesezh723Chinesezh7230Chinesezh7231Chinesezh7232Chinesezh7233Chinesezh7234Chinesezh7235Chinesezh7236Chinesezh7237Chinesezh7238Chinesezh7239Chinesezh724Chinesezh7240Chinesezh7241Chinesezh7242Chinesezh7243Chinesezh7244Chinesezh7245Chinesezh7246Chinesezh7247Chinesezh7248Chinesezh7249Chinesezh725Chinesezh7250Chinesezh7251Chinesezh7252Chinesezh7253Chinesezh7254Chinesezh7255Chinesezh7256Chinesezh7257Chinesezh7258Chinesezh7259Chinesezh726Chinesezh7260Chinesezh7261Chinesezh7262Chinesezh7263Chinesezh7264Chinesezh7265Chinesezh7266Chinesezh7267Chinesezh7268Chinesezh7269Chinesezh727Chinesezh7270Chinesezh7271Chinesezh7272Chinesezh7273Chinesezh7274Chinesezh7275Chinesezh7276Chinesezh7277Chinesezh7278Chinesezh7279Chinesezh728Chinesezh7280Chinesezh7281Chinesezh7282Chinesezh7283Chinesezh7284Chinesezh7285Chinesezh7286Chinesezh7287Chinesezh7288Chinesezh7289Chinesezh729Chinesezh7290Chinesezh7291Chinesezh7292Chinesezh7293Chinesezh7294Chinesezh7295Chinesezh7296Chinesezh7297Chinesezh7298Chinesezh7299Chinesezh73Chinesezh730Chinesezh7300Chinesezh7301Chinesezh7302Chinesezh7303Chinesezh7304Chinesezh7305Chinesezh7306Chinesezh7307Chinesezh7308Chinesezh7309Chinesezh731Chinesezh7310Chinesezh7311Chinesezh7312Chinesezh7313Chinesezh7314Chinesezh7315Chinesezh7316Chinesezh7317Chinesezh7318Chinesezh7319Chinesezh732Chinesezh7320Chinesezh7321Chinesezh7322Chinesezh7323Chinesezh7324Chinesezh7325Chinesezh7326Chinesezh7327Chinesezh7328Chinesezh7329Chinesezh733Chinesezh7330Chinesezh7331Chinesezh7332Chinesezh7333Chinesezh7334Chinesezh7335Chinesezh7336Chinesezh7337Chinesezh7338Chinesezh7339Chinesezh734Chinesezh7340Chinesezh7341Chinesezh7342Chinesezh7343Chinesezh7344Chinesezh7345Chinesezh7346Chinesezh7347Chinesezh7348Chinesezh7349Chinesezh735Chinesezh7350Chinesezh7351Chinesezh7352Chinesezh7353Chinesezh7354Chinesezh7355Chinesezh7356Chinesezh7357Chinesezh7358Chinesezh7359Chinesezh736Chinesezh7360Chinesezh7361Chinesezh7362Chinesezh7363Chinesezh7364Chinesezh7365Chinesezh7366Chinesezh7367Chinesezh7368Chinesezh7369Chinesezh737Chinesezh7370Chinesezh7371Chinesezh7372Chinesezh7373Chinesezh7374Chinesezh7375Chinesezh7376Chinesezh7377Chinesezh7378Chinesezh7379Chinesezh738Chinesezh7380Chinesezh7381Chinesezh7382Chinesezh7383Chinesezh7384Chinesezh7385Chinesezh7386Chinesezh7387Chinesezh7388Chinesezh7389Chinesezh739Chinesezh7390Chinesezh7391Chinesezh7392Chinesezh7393Chinesezh7394Chinesezh7395Chinesezh7396Chinesezh7397Chinesezh7398Chinesezh7399Chinesezh74Chinesezh740Chinesezh7400Chinesezh7401Chinesezh7402Chinesezh7403Chinesezh7404Chinesezh7405Chinesezh7406Chinesezh7407Chinesezh7408Chinesezh7409Chinesezh741Chinesezh7410Chinesezh7411Chinesezh7412Chinesezh7413Chinesezh7414Chinesezh7415Chinesezh7416Chinesezh7417Chinesezh7418Chinesezh7419Chinesezh742Chinesezh7420Chinesezh7421Chinesezh7422Chinesezh7423Chinesezh7424Chinesezh7425Chinesezh7426Chinesezh7427Chinesezh7428Chinesezh7429Chinesezh743Chinesezh7430Chinesezh7431Chinesezh7432Chinesezh7433Chinesezh7434Chinesezh7435Chinesezh7436Chinesezh7437Chinesezh7438Chinesezh7439Chinesezh744Chinesezh7440Chinesezh7441Chinesezh7442Chinesezh7443Chinesezh7444Chinesezh7445Chinesezh7446Chinesezh7447Chinesezh7448Chinesezh7449Chinesezh745Chinesezh7450Chinesezh7451Chinesezh7452Chinesezh7453Chinesezh7454Chinesezh7455Chinesezh7456Chinesezh7457Chinesezh7458Chinesezh7459Chinesezh746Chinesezh7460Chinesezh7461Chinesezh7462Chinesezh7463Chinesezh7464Chinesezh7465Chinesezh7466Chinesezh7467Chinesezh7468Chinesezh7469Chinesezh747Chinesezh7470Chinesezh7471Chinesezh7472Chinesezh7473Chinesezh7474Chinesezh7475Chinesezh7476Chinesezh7477Chinesezh7478Chinesezh7479Chinesezh748Chinesezh7480Chinesezh7481Chinesezh7482Chinesezh7483Chinesezh7484Chinesezh7485Chinesezh7486Chinesezh7487Chinesezh7488Chinesezh7489Chinesezh749Chinesezh7490Chinesezh7491Chinesezh7492Chinesezh7493Chinesezh7494Chinesezh7495Chinesezh7496Chinesezh7497Chinesezh7498Chinesezh7499Chinesezh75Chinesezh750Chinesezh7500Chinesezh7501Chinesezh7502Chinesezh7503Chinesezh7504Chinesezh7505Chinesezh7506Chinesezh7507Chinesezh7508Chinesezh7509Chinesezh751Chinesezh7510Chinesezh7511Chinesezh7512Chinesezh7513Chinesezh7514Chinesezh7515Chinesezh7516Chinesezh7517Chinesezh7518Chinesezh7519Chinesezh752Chinesezh7520Chinesezh7521Chinesezh7522Chinesezh7523Chinesezh7524Chinesezh7525Chinesezh7526Chinesezh7527Chinesezh7528Chinesezh7529Chinesezh753Chinesezh7530Chinesezh7531Chinesezh7532Chinesezh7533Chinesezh7534Chinesezh7535Chinesezh7536Chinesezh7537Chinesezh7538Chinesezh7539Chinesezh754Chinesezh7540Chinesezh7541Chinesezh7542Chinesezh7543Chinesezh7544Chinesezh7545Chinesezh7546Chinesezh7547Chinesezh7548Chinesezh7549Chinesezh755Chinesezh7550Chinesezh7551Chinesezh7552Chinesezh7553Chinesezh7554Chinesezh7555Chinesezh7556Chinesezh7557Chinesezh7558Chinesezh7559Chinesezh756Chinesezh7560Chinesezh7561Chinesezh7562Chinesezh7563Chinesezh7564Chinesezh7565Chinesezh7566Chinesezh7567Chinesezh7568Chinesezh7569Chinesezh757Chinesezh7570Chinesezh7571Chinesezh7572Chinesezh7573Chinesezh7574Chinesezh7575Chinesezh7576Chinesezh7577Chinesezh7578Chinesezh7579Chinesezh758Chinesezh7580Chinesezh7581Chinesezh7582Chinesezh7583Chinesezh7584Chinesezh7585Chinesezh7586Chinesezh7587Chinesezh7588Chinesezh7589Chinesezh759Chinesezh7590Chinesezh7591Chinesezh7592Chinesezh7593Chinesezh7594Chinesezh7595Chinesezh7596Chinesezh7597Chinesezh7598Chinesezh7599Chinesezh76Chinesezh760Chinesezh7600Chinesezh7601Chinesezh7602Chinesezh7603Chinesezh7604Chinesezh7605Chinesezh7606Chinesezh7607Chinesezh7608Chinesezh7609Chinesezh761Chinesezh7610Chinesezh7611Chinesezh7612Chinesezh7613Chinesezh7614Chinesezh7615Chinesezh7616Chinesezh7617Chinesezh7618Chinesezh7619Chinesezh762Chinesezh7620Chinesezh7621Chinesezh7622Chinesezh7623Chinesezh7624Chinesezh7625Chinesezh7626Chinesezh7627Chinesezh7628Chinesezh7629Chinesezh763Chinesezh7630Chinesezh7631Chinesezh7632Chinesezh7633Chinesezh7634Chinesezh7635Chinesezh7636Chinesezh7637Chinesezh7638Chinesezh7639Chinesezh764Chinesezh7640Chinesezh7641Chinesezh7642Chinesezh7643Chinesezh7644Chinesezh7645Chinesezh7646Chinesezh7647Chinesezh7648Chinesezh7649Chinesezh765Chinesezh7650Chinesezh7651Chinesezh7652Chinesezh7653Chinesezh7654Chinesezh7655Chinesezh7656Chinesezh7657Chinesezh7658Chinesezh7659Chinesezh766Chinesezh7660Chinesezh7661Chinesezh7662Chinesezh7663Chinesezh7664Chinesezh7665Chinesezh7666Chinesezh7667Chinesezh7668Chinesezh7669Chinesezh767Chinesezh7670Chinesezh7671Chinesezh7672Chinesezh7673Chinesezh7674Chinesezh7675Chinesezh7676Chinesezh7677Chinesezh7678Chinesezh7679Chinesezh768Chinesezh7680Chinesezh7681Chinesezh7682Chinesezh7683Chinesezh7684Chinesezh7685Chinesezh7686Chinesezh7687Chinesezh7688Chinesezh7689Chinesezh769Chinesezh7690Chinesezh7691Chinesezh7692Chinesezh7693Chinesezh7694Chinesezh7695Chinesezh7696Chinesezh7697Chinesezh7698Chinesezh7699Chinesezh77Chinesezh770Chinesezh7700Chinesezh7701Chinesezh7702Chinesezh7703Chinesezh7704Chinesezh7705Chinesezh7706Chinesezh7707Chinesezh7708Chinesezh7709Chinesezh771Chinesezh7710Chinesezh7711Chinesezh7712Chinesezh7713Chinesezh7714Chinesezh7715Chinesezh7716Chinesezh7717Chinesezh7718Chinesezh7719Chinesezh772Chinesezh7720Chinesezh7721Chinesezh7722Chinesezh7723Chinesezh7724Chinesezh7725Chinesezh7726Chinesezh7727Chinesezh7728Chinesezh7729Chinesezh773Chinesezh7730Chinesezh7731Chinesezh7732Chinesezh7733Chinesezh7734Chinesezh7735Chinesezh7736Chinesezh7737Chinesezh7738Chinesezh7739Chinesezh774Chinesezh7740Chinesezh7741Chinesezh7742Chinesezh7743Chinesezh7744Chinesezh7745Chinesezh7746Chinesezh7747Chinesezh7748Chinesezh7749Chinesezh775Chinesezh7750Chinesezh7751Chinesezh7752Chinesezh7753Chinesezh7754Chinesezh7755Chinesezh7756Chinesezh7757Chinesezh7758Chinesezh7759Chinesezh776Chinesezh7760Chinesezh7761Chinesezh7762Chinesezh7763Chinesezh7764Chinesezh7765Chinesezh7766Chinesezh7767Chinesezh7768Chinesezh7769Chinesezh777Chinesezh7770Chinesezh7771Chinesezh7772Chinesezh7773Chinesezh7774Chinesezh7775Chinesezh7776Chinesezh7777Chinesezh7778Chinesezh7779Chinesezh778Chinesezh7780Chinesezh7781Chinesezh7782Chinesezh7783Chinesezh7784Chinesezh7785Chinesezh7786Chinesezh7787Chinesezh7788Chinesezh7789Chinesezh779Chinesezh7790Chinesezh7791Chinesezh7792Chinesezh7793Chinesezh7794Chinesezh7795Chinesezh7796Chinesezh7797Chinesezh7798Chinesezh7799Chinesezh78Chinesezh780Chinesezh7800Chinesezh7801Chinesezh7802Chinesezh7803Chinesezh7804Chinesezh7805Chinesezh7806Chinesezh7807Chinesezh7808Chinesezh7809Chinesezh781Chinesezh7810Chinesezh7811Chinesezh7812Chinesezh7813Chinesezh7814Chinesezh7815Chinesezh7816Chinesezh7817Chinesezh7818Chinesezh7819Chinesezh782Chinesezh7820Chinesezh7821Chinesezh7822Chinesezh7823Chinesezh7824Chinesezh7825Chinesezh7826Chinesezh7827Chinesezh7828Chinesezh7829Chinesezh783Chinesezh7830Chinesezh7831Chinesezh7832Chinesezh7833Chinesezh7834Chinesezh7835Chinesezh7836Chinesezh7837Chinesezh7838Chinesezh7839Chinesezh784Chinesezh7840Chinesezh7841Chinesezh7842Chinesezh7843Chinesezh7844Chinesezh7845Chinesezh7846Chinesezh7847Chinesezh7848Chinesezh7849Chinesezh785Chinesezh7850Chinesezh7851Chinesezh7852Chinesezh7853Chinesezh7854Chinesezh7855Chinesezh7856Chinesezh7857Chinesezh7858Chinesezh7859Chinesezh786Chinesezh7860Chinesezh7861Chinesezh7862Chinesezh7863Chinesezh7864Chinesezh7865Chinesezh7866Chinesezh7867Chinesezh7868Chinesezh7869Chinesezh787Chinesezh7870Chinesezh7871Chinesezh7872Chinesezh7873Chinesezh7874Chinesezh7875Chinesezh7876Chinesezh7877Chinesezh7878Chinesezh7879Chinesezh788Chinesezh7880Chinesezh7881Chinesezh7882Chinesezh7883Chinesezh7884Chinesezh7885Chinesezh7886Chinesezh7887Chinesezh7888Chinesezh7889Chinesezh789Chinesezh7890Chinesezh7891Chinesezh7892Chinesezh7893Chinesezh7894Chinesezh7895Chinesezh7896Chinesezh7897Chinesezh7898Chinesezh7899Chinesezh79Chinesezh790Chinesezh7900Chinesezh7901Chinesezh7902Chinesezh7903Chinesezh7904Chinesezh7905Chinesezh7906Chinesezh7907Chinesezh7908Chinesezh7909Chinesezh791Chinesezh7910Chinesezh7911Chinesezh7912Chinesezh7913Chinesezh7914Chinesezh7915Chinesezh7916Chinesezh7917Chinesezh7918Chinesezh7919Chinesezh792Chinesezh7920Chinesezh7921Chinesezh7922Chinesezh7923Chinesezh7924Chinesezh7925Chinesezh7926Chinesezh7927Chinesezh7928Chinesezh7929Chinesezh793Chinesezh7930Chinesezh7931Chinesezh7932Chinesezh7933Chinesezh7934Chinesezh7935Chinesezh7936Chinesezh7937Chinesezh7938Chinesezh7939Chinesezh794Chinesezh7940Chinesezh7941Chinesezh7942Chinesezh7943Chinesezh7944Chinesezh7945Chinesezh7946Chinesezh7947Chinesezh7948Chinesezh7949Chinesezh795Chinesezh7950Chinesezh7951Chinesezh7952Chinesezh7953Chinesezh7954Chinesezh7955Chinesezh7956Chinesezh7957Chinesezh7958Chinesezh7959Chinesezh796Chinesezh7960Chinesezh7961Chinesezh7962Chinesezh7963Chinesezh7964Chinesezh7965Chinesezh7966Chinesezh7967Chinesezh7968Chinesezh7969Chinesezh797Chinesezh7970Chinesezh7971Chinesezh7972Chinesezh7973Chinesezh7974Chinesezh7975Chinesezh7976Chinesezh7977Chinesezh7978Chinesezh7979Chinesezh798Chinesezh7980Chinesezh7981Chinesezh7982Chinesezh7983Chinesezh7984Chinesezh7985Chinesezh7986Chinesezh7987Chinesezh7988Chinesezh7989Chinesezh799Chinesezh7990Chinesezh7991Chinesezh7992Chinesezh7993Chinesezh7994Chinesezh7995Chinesezh7996Chinesezh7997Chinesezh7998Chinesezh7999Chinesezh8Chinesezh80Chinesezh800Chinesezh8000Chinesezh8001Chinesezh8002Chinesezh8003Chinesezh8004Chinesezh8005Chinesezh8006Chinesezh8007Chinesezh8008Chinesezh8009Chinesezh801Chinesezh8010Chinesezh8011Chinesezh8012Chinesezh8013Chinesezh8014Chinesezh8015Chinesezh8016Chinesezh8017Chinesezh8018Chinesezh8019Chinesezh802Chinesezh8020Chinesezh8021Chinesezh8022Chinesezh8023Chinesezh8024Chinesezh8025Chinesezh8026Chinesezh8027Chinesezh8028Chinesezh8029Chinesezh803Chinesezh8030Chinesezh8031Chinesezh8032Chinesezh8033Chinesezh8034Chinesezh8035Chinesezh8036Chinesezh8037Chinesezh8038Chinesezh8039Chinesezh804Chinesezh8040Chinesezh8041Chinesezh8042Chinesezh8043Chinesezh8044Chinesezh8045Chinesezh8046Chinesezh8047Chinesezh8048Chinesezh8049Chinesezh805Chinesezh8050Chinesezh8051Chinesezh8052Chinesezh8053Chinesezh8054Chinesezh8055Chinesezh8056Chinesezh8057Chinesezh8058Chinesezh8059Chinesezh806Chinesezh8060Chinesezh8061Chinesezh8062Chinesezh8063Chinesezh8064Chinesezh8065Chinesezh8066Chinesezh8067Chinesezh8068Chinesezh8069Chinesezh807Chinesezh8070Chinesezh8071Chinesezh8072Chinesezh8073Chinesezh8074Chinesezh8075Chinesezh8076Chinesezh8077Chinesezh8078Chinesezh8079Chinesezh808Chinesezh8080Chinesezh8081Chinesezh8082Chinesezh8083Chinesezh8084Chinesezh8085Chinesezh8086Chinesezh8087Chinesezh8088Chinesezh8089Chinesezh809Chinesezh8090Chinesezh8091Chinesezh8092Chinesezh8093Chinesezh8094Chinesezh8095Chinesezh8096Chinesezh8097Chinesezh8098Chinesezh8099Chinesezh81Chinesezh810Chinesezh8100Chinesezh8101Chinesezh8102Chinesezh8103Chinesezh8104Chinesezh8105Chinesezh8106Chinesezh8107Chinesezh8108Chinesezh8109Chinesezh811Chinesezh8110Chinesezh8111Chinesezh8112Chinesezh8113Chinesezh8114Chinesezh8115Chinesezh8116Chinesezh8117Chinesezh8118Chinesezh8119Chinesezh812Chinesezh8120Chinesezh8121Chinesezh8122Chinesezh8123Chinesezh8124Chinesezh8125Chinesezh8126Chinesezh8127Chinesezh8128Chinesezh8129Chinesezh813Chinesezh8130Chinesezh8131Chinesezh8132Chinesezh8133Chinesezh8134Chinesezh8135Chinesezh8136Chinesezh8137Chinesezh8138Chinesezh8139Chinesezh814Chinesezh8140Chinesezh8141Chinesezh8142Chinesezh8143Chinesezh8144Chinesezh8145Chinesezh8146Chinesezh8147Chinesezh8148Chinesezh8149Chinesezh815Chinesezh8150Chinesezh8151Chinesezh8152Chinesezh8153Chinesezh8154Chinesezh8155Chinesezh8156Chinesezh8157Chinesezh8158Chinesezh8159Chinesezh816Chinesezh8160Chinesezh8161Chinesezh8162Chinesezh8163Chinesezh8164Chinesezh8165Chinesezh8166Chinesezh8167Chinesezh8168Chinesezh8169Chinesezh817Chinesezh8170Chinesezh8171Chinesezh8172Chinesezh8173Chinesezh8174Chinesezh8175Chinesezh8176Chinesezh8177Chinesezh8178Chinesezh8179Chinesezh818Chinesezh8180Chinesezh8181Chinesezh8182Chinesezh8183Chinesezh8184Chinesezh8185Chinesezh8186Chinesezh8187Chinesezh8188Chinesezh8189Chinesezh819Chinesezh8190Chinesezh8191Chinesezh82Chinesezh820Chinesezh821Chinesezh822Chinesezh823Chinesezh824Chinesezh825Chinesezh826Chinesezh827Chinesezh828Chinesezh829Chinesezh83Chinesezh830Chinesezh831Chinesezh832Chinesezh833Chinesezh834Chinesezh835Chinesezh836Chinesezh837Chinesezh838Chinesezh839Chinesezh84Chinesezh840Chinesezh841Chinesezh842Chinesezh843Chinesezh844Chinesezh845Chinesezh846Chinesezh847Chinesezh848Chinesezh849Chinesezh85Chinesezh850Chinesezh851Chinesezh852Chinesezh853Chinesezh854Chinesezh855Chinesezh856Chinesezh857Chinesezh858Chinesezh859Chinesezh86Chinesezh860Chinesezh861Chinesezh862Chinesezh863Chinesezh864Chinesezh865Chinesezh866Chinesezh867Chinesezh868Chinesezh869Chinesezh87Chinesezh870Chinesezh871Chinesezh872Chinesezh873Chinesezh874Chinesezh875Chinesezh876Chinesezh877Chinesezh878Chinesezh879Chinesezh88Chinesezh880Chinesezh881Chinesezh882Chinesezh883Chinesezh884Chinesezh885Chinesezh886Chinesezh887Chinesezh888Chinesezh889Chinesezh89Chinesezh890Chinesezh891Chinesezh892Chinesezh893Chinesezh894Chinesezh895Chinesezh896Chinesezh897Chinesezh898Chinesezh899Chinesezh9Chinesezh90Chinesezh900Chinesezh901Chinesezh902Chinesezh903Chinesezh904Chinesezh905Chinesezh906Chinesezh907Chinesezh908Chinesezh909Chinesezh91Chinesezh910Chinesezh911Chinesezh912Chinesezh913Chinesezh914Chinesezh915Chinesezh916Chinesezh917Chinesezh918Chinesezh919Chinesezh92Chinesezh920Chinesezh921Chinesezh922Chinesezh923Chinesezh924Chinesezh925Chinesezh926Chinesezh927Chinesezh928Chinesezh929Chinesezh93Chinesezh930Chinesezh931Chinesezh932Chinesezh933Chinesezh934Chinesezh935Chinesezh936Chinesezh937Chinesezh938Chinesezh939Chinesezh94Chinesezh940Chinesezh941Chinesezh942Chinesezh943Chinesezh944Chinesezh945Chinesezh946Chinesezh947Chinesezh948Chinesezh949Chinesezh95Chinesezh950Chinesezh951Chinesezh952Chinesezh953Chinesezh954Chinesezh955Chinesezh956Chinesezh957Chinesezh958Chinesezh959Chinesezh96Chinesezh960Chinesezh961Chinesezh962Chinesezh963Chinesezh964Chinesezh965Chinesezh966Chinesezh967Chinesezh968Chinesezh969Chinesezh97Chinesezh970Chinesezh971Chinesezh972Chinesezh973Chinesezh974Chinesezh975Chinesezh976Chinesezh977Chinesezh978Chinesezh979Chinesezh98Chinesezh980Chinesezh981Chinesezh982Chinesezh983Chinesezh984Chinesezh985Chinesezh986Chinesezh987Chinesezh988Chinesezh989Chinesezh99Chinesezh990Chinesezh991Chinesezh992Chinesezh993Chinesezh994Chinesezh995Chinesezh996Chinesezh997Chinesezh998Chinesezh999Chinese \ No newline at end of file
diff --git a/vendor/litemap/examples/language_names_hash_map.rs b/vendor/litemap/examples/language_names_hash_map.rs
index d34af7665..cb0f750b8 100644
--- a/vendor/litemap/examples/language_names_hash_map.rs
+++ b/vendor/litemap/examples/language_names_hash_map.rs
@@ -11,8 +11,7 @@
icu_benchmark_macros::static_setup!();
-use icu_locid::subtags::Language;
-use icu_locid::subtags_language as language;
+use icu_locid::subtags::{language, Language};
use std::collections::HashMap;
const DATA: [(Language, &str); 11] = [
diff --git a/vendor/litemap/examples/language_names_lite_map.rs b/vendor/litemap/examples/language_names_lite_map.rs
index 28b4ee807..a8641bf82 100644
--- a/vendor/litemap/examples/language_names_lite_map.rs
+++ b/vendor/litemap/examples/language_names_lite_map.rs
@@ -11,8 +11,7 @@
icu_benchmark_macros::static_setup!();
-use icu_locid::subtags::Language;
-use icu_locid::subtags_language as language;
+use icu_locid::subtags::{language, Language};
use litemap::LiteMap;
const DATA: [(Language, &str); 11] = [
diff --git a/vendor/litemap/benches/bin/litemap_bincode.rs b/vendor/litemap/examples/litemap_bincode.rs
index bb17aaba0..bb17aaba0 100644
--- a/vendor/litemap/benches/bin/litemap_bincode.rs
+++ b/vendor/litemap/examples/litemap_bincode.rs
diff --git a/vendor/litemap/benches/bin/litemap_postcard.rs b/vendor/litemap/examples/litemap_postcard.rs
index d7033c21c..d7033c21c 100644
--- a/vendor/litemap/benches/bin/litemap_postcard.rs
+++ b/vendor/litemap/examples/litemap_postcard.rs
diff --git a/vendor/litemap/src/lib.rs b/vendor/litemap/src/lib.rs
index 3647ccfcb..85f2c435d 100644
--- a/vendor/litemap/src/lib.rs
+++ b/vendor/litemap/src/lib.rs
@@ -51,7 +51,7 @@ mod serde;
mod serde_helpers;
pub mod store;
-#[cfg(feature = "testing")]
+#[cfg(any(test, feature = "testing"))]
pub mod testing;
pub use map::LiteMap;
diff --git a/vendor/litemap/src/map.rs b/vendor/litemap/src/map.rs
index bcd7eb8c9..dd1015b73 100644
--- a/vendor/litemap/src/map.rs
+++ b/vendor/litemap/src/map.rs
@@ -4,12 +4,13 @@
use crate::store::*;
use alloc::borrow::Borrow;
+use alloc::boxed::Box;
use alloc::vec::Vec;
use core::cmp::Ordering;
use core::iter::FromIterator;
use core::marker::PhantomData;
use core::mem;
-use core::ops::{Index, IndexMut};
+use core::ops::{Index, IndexMut, Range};
/// A simple "flat" map based on a sorted vector
///
@@ -91,6 +92,152 @@ where
pub fn get_indexed(&self, index: usize) -> Option<(&K, &V)> {
self.values.lm_get(index)
}
+
+ /// Get the lowest-rank key/value pair from the `LiteMap`, if it exists.
+ ///
+ /// # Examples
+ ///
+ /// ```rust
+ /// use litemap::LiteMap;
+ ///
+ /// let mut map =
+ /// LiteMap::<i32, &str, Vec<_>>::from_iter([(1, "uno"), (3, "tres")]);
+ ///
+ /// assert_eq!(map.first(), Some((&1, &"uno")));
+ /// ```
+ #[inline]
+ pub fn first(&self) -> Option<(&K, &V)> {
+ self.values.lm_get(0).map(|(k, v)| (k, v))
+ }
+
+ /// Get the highest-rank key/value pair from the `LiteMap`, if it exists.
+ ///
+ /// # Examples
+ ///
+ /// ```rust
+ /// use litemap::LiteMap;
+ ///
+ /// let mut map =
+ /// LiteMap::<i32, &str, Vec<_>>::from_iter([(1, "uno"), (3, "tres")]);
+ ///
+ /// assert_eq!(map.last(), Some((&3, &"tres")));
+ /// ```
+ #[inline]
+ pub fn last(&self) -> Option<(&K, &V)> {
+ self.values.lm_get(self.len() - 1).map(|(k, v)| (k, v))
+ }
+
+ /// Returns a new [`LiteMap`] with owned keys and values.
+ ///
+ /// The trait bounds allow transforming most slice and string types.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use litemap::LiteMap;
+ ///
+ /// let mut map: LiteMap<&str, &str> = LiteMap::new_vec();
+ /// map.insert("one", "uno");
+ /// map.insert("two", "dos");
+ ///
+ /// let boxed_map: LiteMap<Box<str>, Box<str>> = map.to_boxed_keys_values();
+ ///
+ /// assert_eq!(boxed_map.get("one"), Some(&Box::from("uno")));
+ /// ```
+ pub fn to_boxed_keys_values<KB: ?Sized, VB: ?Sized, SB>(&self) -> LiteMap<Box<KB>, Box<VB>, SB>
+ where
+ SB: StoreMut<Box<KB>, Box<VB>>,
+ K: Borrow<KB>,
+ V: Borrow<VB>,
+ Box<KB>: for<'a> From<&'a KB>,
+ Box<VB>: for<'a> From<&'a VB>,
+ {
+ let mut values = SB::lm_with_capacity(self.len());
+ for i in 0..self.len() {
+ #[allow(clippy::unwrap_used)] // iterating over our own length
+ let (k, v) = self.values.lm_get(i).unwrap();
+ values.lm_push(Box::from(k.borrow()), Box::from(v.borrow()))
+ }
+ LiteMap {
+ values,
+ _key_type: PhantomData,
+ _value_type: PhantomData,
+ }
+ }
+
+ /// Returns a new [`LiteMap`] with owned keys and cloned values.
+ ///
+ /// The trait bounds allow transforming most slice and string types.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use litemap::LiteMap;
+ ///
+ /// let mut map: LiteMap<&str, usize> = LiteMap::new_vec();
+ /// map.insert("one", 11);
+ /// map.insert("two", 22);
+ ///
+ /// let boxed_map: LiteMap<Box<str>, usize> = map.to_boxed_keys();
+ ///
+ /// assert_eq!(boxed_map.get("one"), Some(&11));
+ /// ```
+ pub fn to_boxed_keys<KB: ?Sized, SB>(&self) -> LiteMap<Box<KB>, V, SB>
+ where
+ V: Clone,
+ SB: StoreMut<Box<KB>, V>,
+ K: Borrow<KB>,
+ Box<KB>: for<'a> From<&'a KB>,
+ {
+ let mut values = SB::lm_with_capacity(self.len());
+ for i in 0..self.len() {
+ #[allow(clippy::unwrap_used)] // iterating over our own length
+ let (k, v) = self.values.lm_get(i).unwrap();
+ values.lm_push(Box::from(k.borrow()), v.clone())
+ }
+ LiteMap {
+ values,
+ _key_type: PhantomData,
+ _value_type: PhantomData,
+ }
+ }
+
+ /// Returns a new [`LiteMap`] with cloned keys and owned values.
+ ///
+ /// The trait bounds allow transforming most slice and string types.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use litemap::LiteMap;
+ ///
+ /// let mut map: LiteMap<usize, &str> = LiteMap::new_vec();
+ /// map.insert(11, "uno");
+ /// map.insert(22, "dos");
+ ///
+ /// let boxed_map: LiteMap<usize, Box<str>> = map.to_boxed_values();
+ ///
+ /// assert_eq!(boxed_map.get(&11), Some(&Box::from("uno")));
+ /// ```
+ pub fn to_boxed_values<VB: ?Sized, SB>(&self) -> LiteMap<K, Box<VB>, SB>
+ where
+ K: Clone,
+ SB: StoreMut<K, Box<VB>>,
+ V: Borrow<VB>,
+ Box<VB>: for<'a> From<&'a VB>,
+ {
+ let mut values = SB::lm_with_capacity(self.len());
+ for i in 0..self.len() {
+ #[allow(clippy::unwrap_used)] // iterating over our own length
+ let (k, v) = self.values.lm_get(i).unwrap();
+ values.lm_push(k.clone(), Box::from(v.borrow()))
+ }
+ LiteMap {
+ values,
+ _key_type: PhantomData,
+ _value_type: PhantomData,
+ }
+ }
}
impl<K: ?Sized, V: ?Sized, S> LiteMap<K, V, S>
@@ -146,54 +293,211 @@ where
self.find_index(key).is_ok()
}
- /// Get the lowest-rank key/value pair from the `LiteMap`, if it exists.
+ /// Obtain the index for a given key, or if the key is not found, the index
+ /// at which it would be inserted.
+ ///
+ /// (The return value works equivalently to [`slice::binary_search_by()`])
+ ///
+ /// The indices returned can be used with [`Self::get_indexed()`]. Prefer using
+ /// [`Self::get()`] directly where possible.
+ #[inline]
+ pub fn find_index<Q: ?Sized>(&self, key: &Q) -> Result<usize, usize>
+ where
+ K: Borrow<Q>,
+ Q: Ord,
+ {
+ self.values.lm_binary_search_by(|k| k.borrow().cmp(key))
+ }
+}
+
+impl<K: ?Sized, V: ?Sized, S> LiteMap<K, V, S>
+where
+ S: StoreSlice<K, V>,
+{
+ /// Creates a new [`LiteMap`] from a range of the current [`LiteMap`].
///
/// # Examples
///
- /// ```rust
+ /// ```
/// use litemap::LiteMap;
///
- /// let mut map: LiteMap<i32, &str, Vec<_>> =
- /// LiteMap::from_iter([(1, "uno"), (3, "tres")].into_iter());
+ /// let mut map = LiteMap::new_vec();
+ /// map.insert(1, "one");
+ /// map.insert(2, "two");
+ /// map.insert(3, "three");
///
- /// assert_eq!(map.first(), Some((&1, &"uno")));
+ /// let mut sub_map = map.get_indexed_range(1..3).expect("valid range");
+ /// assert_eq!(sub_map.get(&1), None);
+ /// assert_eq!(sub_map.get(&2), Some(&"two"));
+ /// assert_eq!(sub_map.get(&3), Some(&"three"));
/// ```
- #[inline]
- pub fn first(&self) -> Option<(&K, &V)> {
- self.values.lm_get(0).map(|(k, v)| (k, v))
+ pub fn get_indexed_range(&self, range: Range<usize>) -> Option<LiteMap<K, V, &S::Slice>> {
+ let subslice = self.values.lm_get_range(range)?;
+ Some(LiteMap {
+ values: subslice,
+ _key_type: PhantomData,
+ _value_type: PhantomData,
+ })
}
- /// Get the highest-rank key/value pair from the `LiteMap`, if it exists.
+ /// Borrows this [`LiteMap`] as one of its slice type.
+ ///
+ /// This can be useful in situations where you need a `LiteMap` by value but do not want
+ /// to clone the owned version.
///
/// # Examples
///
- /// ```rust
+ /// ```
/// use litemap::LiteMap;
///
- /// let mut map: LiteMap<i32, &str, Vec<_>> =
- /// LiteMap::from_iter([(1, "uno"), (3, "tres")].into_iter());
+ /// let mut map = LiteMap::new_vec();
+ /// map.insert(1, "one");
+ /// map.insert(2, "two");
///
- /// assert_eq!(map.last(), Some((&3, &"tres")));
+ /// let borrowed_map = map.as_sliced();
+ /// assert_eq!(borrowed_map.get(&1), Some(&"one"));
+ /// assert_eq!(borrowed_map.get(&2), Some(&"two"));
/// ```
- #[inline]
- pub fn last(&self) -> Option<(&K, &V)> {
- self.values.lm_get(self.len() - 1).map(|(k, v)| (k, v))
+ pub fn as_sliced(&self) -> LiteMap<K, V, &S::Slice> {
+ // Won't panic: 0..self.len() is within range
+ #[allow(clippy::unwrap_used)]
+ let subslice = self.values.lm_get_range(0..self.len()).unwrap();
+ LiteMap {
+ values: subslice,
+ _key_type: PhantomData,
+ _value_type: PhantomData,
+ }
}
- /// Obtain the index for a given key, or if the key is not found, the index
- /// at which it would be inserted.
+ /// Borrows the backing buffer of this [`LiteMap`] as its slice type.
///
- /// (The return value works equivalently to [`slice::binary_search_by()`])
+ /// The slice will be sorted.
///
- /// The indices returned can be used with [`Self::get_indexed()`]. Prefer using
- /// [`Self::get()`] directly where possible.
- #[inline]
- pub fn find_index<Q: ?Sized>(&self, key: &Q) -> Result<usize, usize>
+ /// # Examples
+ ///
+ /// ```
+ /// use litemap::LiteMap;
+ ///
+ /// let mut map = LiteMap::new_vec();
+ /// map.insert(1, "one");
+ /// map.insert(2, "two");
+ ///
+ /// let slice = map.as_slice();
+ /// assert_eq!(slice, &[(1, "one"), (2, "two")]);
+ /// ```
+ pub fn as_slice(&self) -> &S::Slice {
+ // Won't panic: 0..self.len() is within range
+ #[allow(clippy::unwrap_used)]
+ self.values.lm_get_range(0..self.len()).unwrap()
+ }
+}
+
+impl<'a, K: 'a, V: 'a, S> LiteMap<K, V, S>
+where
+ S: Store<K, V>,
+{
+ /// Returns a new [`LiteMap`] with keys and values borrowed from this one.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use litemap::LiteMap;
+ ///
+ /// let mut map: LiteMap<Box<usize>, String> = LiteMap::new_vec();
+ /// map.insert(Box::new(1), "one".to_string());
+ /// map.insert(Box::new(2), "two".to_string());
+ ///
+ /// let borrowed_map: LiteMap<&usize, &str> = map.to_borrowed_keys_values();
+ ///
+ /// assert_eq!(borrowed_map.get(&1), Some(&"one"));
+ /// ```
+ pub fn to_borrowed_keys_values<KB: ?Sized, VB: ?Sized, SB>(
+ &'a self,
+ ) -> LiteMap<&'a KB, &'a VB, SB>
where
- K: Borrow<Q>,
- Q: Ord,
+ K: Borrow<KB>,
+ V: Borrow<VB>,
+ SB: StoreMut<&'a KB, &'a VB>,
{
- self.values.lm_binary_search_by(|k| k.borrow().cmp(key))
+ let mut values = SB::lm_with_capacity(self.len());
+ for i in 0..self.len() {
+ #[allow(clippy::unwrap_used)] // iterating over our own length
+ let (k, v) = self.values.lm_get(i).unwrap();
+ values.lm_push(k.borrow(), v.borrow())
+ }
+ LiteMap {
+ values,
+ _key_type: PhantomData,
+ _value_type: PhantomData,
+ }
+ }
+
+ /// Returns a new [`LiteMap`] with keys borrowed from this one and cloned values.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use litemap::LiteMap;
+ ///
+ /// let mut map: LiteMap<Box<usize>, String> = LiteMap::new_vec();
+ /// map.insert(Box::new(1), "one".to_string());
+ /// map.insert(Box::new(2), "two".to_string());
+ ///
+ /// let borrowed_map: LiteMap<&usize, String> = map.to_borrowed_keys();
+ ///
+ /// assert_eq!(borrowed_map.get(&1), Some(&"one".to_string()));
+ /// ```
+ pub fn to_borrowed_keys<KB: ?Sized, SB>(&'a self) -> LiteMap<&'a KB, V, SB>
+ where
+ K: Borrow<KB>,
+ V: Clone,
+ SB: StoreMut<&'a KB, V>,
+ {
+ let mut values = SB::lm_with_capacity(self.len());
+ for i in 0..self.len() {
+ #[allow(clippy::unwrap_used)] // iterating over our own length
+ let (k, v) = self.values.lm_get(i).unwrap();
+ values.lm_push(k.borrow(), v.clone())
+ }
+ LiteMap {
+ values,
+ _key_type: PhantomData,
+ _value_type: PhantomData,
+ }
+ }
+
+ /// Returns a new [`LiteMap`] with values borrowed from this one and cloned keys.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use litemap::LiteMap;
+ ///
+ /// let mut map: LiteMap<Box<usize>, String> = LiteMap::new_vec();
+ /// map.insert(Box::new(1), "one".to_string());
+ /// map.insert(Box::new(2), "two".to_string());
+ ///
+ /// let borrowed_map: LiteMap<Box<usize>, &str> = map.to_borrowed_values();
+ ///
+ /// assert_eq!(borrowed_map.get(&1), Some(&"one"));
+ /// ```
+ pub fn to_borrowed_values<VB: ?Sized, SB>(&'a self) -> LiteMap<K, &'a VB, SB>
+ where
+ K: Clone,
+ V: Borrow<VB>,
+ SB: StoreMut<K, &'a VB>,
+ {
+ let mut values = SB::lm_with_capacity(self.len());
+ for i in 0..self.len() {
+ #[allow(clippy::unwrap_used)] // iterating over our own length
+ let (k, v) = self.values.lm_get(i).unwrap();
+ values.lm_push(k.clone(), v.borrow())
+ }
+ LiteMap {
+ values,
+ _key_type: PhantomData,
+ _value_type: PhantomData,
+ }
}
}
@@ -359,6 +663,64 @@ where
}
}
+ /// Attempts to insert a unique entry into the map.
+ ///
+ /// If `key` is not already in the map, invokes the closure to compute `value`, inserts
+ /// the pair into the map, and returns a reference to the value. The closure is passed
+ /// a reference to the `key` argument.
+ ///
+ /// If `key` is already in the map, a reference to the existing value is returned.
+ ///
+ /// Additionally, the index of the value in the map is returned. If it is not desirable
+ /// to hold on to the mutable reference's lifetime, the index can be used to access the
+ /// element via [`LiteMap::get_indexed()`].
+ ///
+ /// The closure returns a `Result` to allow for a fallible insertion function. If the
+ /// creation of `value` is infallible, you can use [`core::convert::Infallible`].
+ ///
+ /// ```
+ /// use litemap::LiteMap;
+ ///
+ /// /// Helper function to unwrap an `Infallible` result from the insertion function
+ /// fn unwrap_infallible<T>(result: Result<T, core::convert::Infallible>) -> T {
+ /// result.unwrap_or_else(|never| match never {})
+ /// }
+ ///
+ /// let mut map = LiteMap::new_vec();
+ /// map.insert(1, "one");
+ /// map.insert(3, "three");
+ ///
+ /// // 2 is not yet in the map...
+ /// let result1 = unwrap_infallible(
+ /// map.try_get_or_insert(2, |_| Ok("two"))
+ /// );
+ /// assert_eq!(result1.1, &"two");
+ /// assert_eq!(map.len(), 3);
+ ///
+ /// // ...but now it is.
+ /// let result1 = unwrap_infallible(
+ /// map.try_get_or_insert(2, |_| Ok("TWO"))
+ /// );
+ /// assert_eq!(result1.1, &"two");
+ /// assert_eq!(map.len(), 3);
+ /// ```
+ pub fn try_get_or_insert<E>(
+ &mut self,
+ key: K,
+ value: impl FnOnce(&K) -> Result<V, E>,
+ ) -> Result<(usize, &V), E> {
+ let idx = match self.values.lm_binary_search_by(|k| k.cmp(&key)) {
+ Ok(idx) => idx,
+ Err(idx) => {
+ let value = value(&key)?;
+ self.values.lm_insert(idx, key, value);
+ idx
+ }
+ };
+ #[allow(clippy::unwrap_used)] // item at idx found or inserted above
+ Ok((idx, self.values.lm_get(idx).unwrap().1))
+ }
+
/// Remove the value at `key`, returning it if it exists.
///
/// ```rust
@@ -511,17 +873,17 @@ where
S: StoreIterable<'a, K, V>,
{
/// Produce an ordered iterator over key-value pairs
- pub fn iter(&'a self) -> impl Iterator<Item = (&'a K, &'a V)> + DoubleEndedIterator {
+ pub fn iter(&'a self) -> impl DoubleEndedIterator<Item = (&'a K, &'a V)> {
self.values.lm_iter()
}
/// Produce an ordered iterator over keys
- pub fn iter_keys(&'a self) -> impl Iterator<Item = &'a K> + DoubleEndedIterator {
+ pub fn iter_keys(&'a self) -> impl DoubleEndedIterator<Item = &'a K> {
self.values.lm_iter().map(|val| val.0)
}
/// Produce an iterator over values, ordered by their keys
- pub fn iter_values(&'a self) -> impl Iterator<Item = &'a V> + DoubleEndedIterator {
+ pub fn iter_values(&'a self) -> impl DoubleEndedIterator<Item = &'a V> {
self.values.lm_iter().map(|val| val.1)
}
}
@@ -531,9 +893,7 @@ where
S: StoreIterableMut<'a, K, V>,
{
/// Produce an ordered mutable iterator over key-value pairs
- pub fn iter_mut(
- &'a mut self,
- ) -> impl Iterator<Item = (&'a K, &'a mut V)> + DoubleEndedIterator {
+ pub fn iter_mut(&'a mut self) -> impl DoubleEndedIterator<Item = (&'a K, &'a mut V)> {
self.values.lm_iter_mut()
}
}
@@ -571,9 +931,227 @@ where
}
}
+impl<'a, K, V> LiteMap<K, V, &'a [(K, V)]> {
+ /// Const version of [`LiteMap::len()`] for a slice store.
+ ///
+ /// Note: This function will no longer be needed if const trait behavior is stabilized.
+ ///
+ /// # Examples
+ ///
+ /// ```rust
+ /// use litemap::LiteMap;
+ ///
+ /// static map: LiteMap<&str, usize, &[(&str, usize)]> =
+ /// LiteMap::from_sorted_store_unchecked(&[("a", 11), ("b", 22)]);
+ /// static len: usize = map.const_len();
+ /// assert_eq!(len, 2);
+ /// ```
+ #[inline]
+ pub const fn const_len(&self) -> usize {
+ self.values.len()
+ }
+
+ /// Const version of [`LiteMap::is_empty()`] for a slice store.
+ ///
+ /// Note: This function will no longer be needed if const trait behavior is stabilized.
+ ///
+ /// # Examples
+ ///
+ /// ```rust
+ /// use litemap::LiteMap;
+ ///
+ /// static map: LiteMap<&str, usize, &[(&str, usize)]> =
+ /// LiteMap::from_sorted_store_unchecked(&[]);
+ /// static is_empty: bool = map.const_is_empty();
+ /// assert!(is_empty);
+ /// ```
+ #[inline]
+ pub const fn const_is_empty(&self) -> bool {
+ self.values.is_empty()
+ }
+
+ /// Const version of [`LiteMap::get_indexed()`] for a slice store.
+ ///
+ /// Note: This function will no longer be needed if const trait behavior is stabilized.
+ ///
+ /// # Panics
+ ///
+ /// Panics if the index is out of bounds.
+ ///
+ /// # Examples
+ ///
+ /// ```rust
+ /// use litemap::LiteMap;
+ ///
+ /// static map: LiteMap<&str, usize, &[(&str, usize)]> =
+ /// LiteMap::from_sorted_store_unchecked(&[("a", 11), ("b", 22)]);
+ /// static t: &(&str, usize) = map.const_get_indexed_or_panic(0);
+ /// assert_eq!(t.0, "a");
+ /// assert_eq!(t.1, 11);
+ /// ```
+ #[inline]
+ #[allow(clippy::indexing_slicing)] // documented
+ pub const fn const_get_indexed_or_panic(&self, index: usize) -> &'a (K, V) {
+ &self.values[index]
+ }
+}
+
+const fn const_cmp_bytes(a: &[u8], b: &[u8]) -> Ordering {
+ let (max, default) = if a.len() == b.len() {
+ (a.len(), Ordering::Equal)
+ } else if a.len() < b.len() {
+ (a.len(), Ordering::Less)
+ } else {
+ (b.len(), Ordering::Greater)
+ };
+ let mut i = 0;
+ #[allow(clippy::indexing_slicing)] // indexes in range by above checks
+ while i < max {
+ if a[i] == b[i] {
+ i += 1;
+ continue;
+ } else if a[i] < b[i] {
+ return Ordering::Less;
+ } else {
+ return Ordering::Greater;
+ }
+ }
+ default
+}
+
+impl<'a, V> LiteMap<&'a str, V, &'a [(&'a str, V)]> {
+ /// Const function to get the value associated with a `&str` key, if it exists.
+ ///
+ /// Also returns the index of the value.
+ ///
+ /// Note: This function will no longer be needed if const trait behavior is stabilized.
+ ///
+ /// # Examples
+ ///
+ /// ```rust
+ /// use litemap::LiteMap;
+ ///
+ /// static map: LiteMap<&str, usize, &[(&str, usize)]> =
+ /// LiteMap::from_sorted_store_unchecked(&[
+ /// ("abc", 11),
+ /// ("bcd", 22),
+ /// ("cde", 33),
+ /// ("def", 44),
+ /// ("efg", 55),
+ /// ]);
+ ///
+ /// static d: Option<(usize, &usize)> = map.const_get_with_index("def");
+ /// assert_eq!(d, Some((3, &44)));
+ ///
+ /// static n: Option<(usize, &usize)> = map.const_get_with_index("dng");
+ /// assert_eq!(n, None);
+ /// ```
+ pub const fn const_get_with_index(&self, key: &str) -> Option<(usize, &'a V)> {
+ let mut i = 0;
+ let mut j = self.const_len();
+ while i < j {
+ let mid = (i + j) / 2;
+ #[allow(clippy::indexing_slicing)] // in range
+ let x = &self.values[mid];
+ match const_cmp_bytes(key.as_bytes(), x.0.as_bytes()) {
+ Ordering::Equal => return Some((mid, &x.1)),
+ Ordering::Greater => i = mid + 1,
+ Ordering::Less => j = mid,
+ };
+ }
+ None
+ }
+}
+
+impl<'a, V> LiteMap<&'a [u8], V, &'a [(&'a [u8], V)]> {
+ /// Const function to get the value associated with a `&[u8]` key, if it exists.
+ ///
+ /// Also returns the index of the value.
+ ///
+ /// Note: This function will no longer be needed if const trait behavior is stabilized.
+ ///
+ /// # Examples
+ ///
+ /// ```rust
+ /// use litemap::LiteMap;
+ ///
+ /// static map: LiteMap<&[u8], usize, &[(&[u8], usize)]> =
+ /// LiteMap::from_sorted_store_unchecked(&[
+ /// (b"abc", 11),
+ /// (b"bcd", 22),
+ /// (b"cde", 33),
+ /// (b"def", 44),
+ /// (b"efg", 55),
+ /// ]);
+ ///
+ /// static d: Option<(usize, &usize)> = map.const_get_with_index(b"def");
+ /// assert_eq!(d, Some((3, &44)));
+ ///
+ /// static n: Option<(usize, &usize)> = map.const_get_with_index(b"dng");
+ /// assert_eq!(n, None);
+ /// ```
+ pub const fn const_get_with_index(&self, key: &[u8]) -> Option<(usize, &'a V)> {
+ let mut i = 0;
+ let mut j = self.const_len();
+ while i < j {
+ let mid = (i + j) / 2;
+ #[allow(clippy::indexing_slicing)] // in range
+ let x = &self.values[mid];
+ match const_cmp_bytes(key, x.0) {
+ Ordering::Equal => return Some((mid, &x.1)),
+ Ordering::Greater => i = mid + 1,
+ Ordering::Less => j = mid,
+ };
+ }
+ None
+ }
+}
+
+macro_rules! impl_const_get_with_index_for_integer {
+ ($integer:ty) => {
+ impl<'a, V> LiteMap<$integer, V, &'a [($integer, V)]> {
+ /// Const function to get the value associated with an integer key, if it exists.
+ ///
+ /// Note: This function will no longer be needed if const trait behavior is stabilized.
+ ///
+ /// Also returns the index of the value.
+ pub const fn const_get_with_index(&self, key: $integer) -> Option<(usize, &'a V)> {
+ let mut i = 0;
+ let mut j = self.const_len();
+ while i < j {
+ let mid = (i + j) / 2;
+ #[allow(clippy::indexing_slicing)] // in range
+ let x = &self.values[mid];
+ if key == x.0 {
+ return Some((mid, &x.1));
+ } else if key > x.0 {
+ i = mid + 1;
+ } else {
+ j = mid;
+ }
+ }
+ return None;
+ }
+ }
+ };
+}
+
+impl_const_get_with_index_for_integer!(u8);
+impl_const_get_with_index_for_integer!(u16);
+impl_const_get_with_index_for_integer!(u32);
+impl_const_get_with_index_for_integer!(u64);
+impl_const_get_with_index_for_integer!(u128);
+impl_const_get_with_index_for_integer!(usize);
+impl_const_get_with_index_for_integer!(i8);
+impl_const_get_with_index_for_integer!(i16);
+impl_const_get_with_index_for_integer!(i32);
+impl_const_get_with_index_for_integer!(i64);
+impl_const_get_with_index_for_integer!(i128);
+impl_const_get_with_index_for_integer!(isize);
+
#[cfg(test)]
mod test {
- use crate::LiteMap;
+ use super::*;
#[test]
fn from_iterator() {
@@ -583,7 +1161,7 @@ mod test {
expected.insert(3, "original-three");
expected.insert(4, "updated-four");
- let actual = vec![
+ let actual = [
(1, "original-one"),
(2, "original-two"),
(4, "original-four"),
@@ -655,4 +1233,16 @@ mod test {
.expect("Insert with conflict");
assert_eq!(map.len(), 5);
}
+
+ #[test]
+ fn test_const_cmp_bytes() {
+ let strs = &["a", "aa", "abc", "abde", "bcd", "bcde"];
+ for i in 0..strs.len() {
+ for j in 0..strs.len() {
+ let a = strs[i].as_bytes();
+ let b = strs[j].as_bytes();
+ assert_eq!(a.cmp(b), const_cmp_bytes(a, b));
+ }
+ }
+ }
}
diff --git a/vendor/litemap/src/serde.rs b/vendor/litemap/src/serde.rs
index 019f0fdbb..45e249ea8 100644
--- a/vendor/litemap/src/serde.rs
+++ b/vendor/litemap/src/serde.rs
@@ -148,10 +148,9 @@ mod test {
use crate::LiteMap;
use alloc::borrow::ToOwned;
use alloc::string::String;
- use alloc::vec;
fn get_simple_map() -> LiteMap<u32, String> {
- vec![
+ [
(1, "one".to_owned()),
(2, "two".to_owned()),
(4, "four".to_owned()),
@@ -162,7 +161,7 @@ mod test {
}
fn get_tuple_map() -> LiteMap<(u32, String), String> {
- vec![
+ [
((1, "en".to_owned()), "one".to_owned()),
((1, "zh".to_owned()), "一".to_owned()),
((2, "en".to_owned()), "two".to_owned()),
diff --git a/vendor/litemap/src/store/mod.rs b/vendor/litemap/src/store/mod.rs
index 3468ebb97..ca696a1af 100644
--- a/vendor/litemap/src/store/mod.rs
+++ b/vendor/litemap/src/store/mod.rs
@@ -30,6 +30,7 @@ use core::cmp::Ordering;
use core::iter::DoubleEndedIterator;
use core::iter::FromIterator;
use core::iter::Iterator;
+use core::ops::Range;
/// Trait to enable const construction of empty store.
pub trait StoreConstEmpty<K: ?Sized, V: ?Sized> {
@@ -53,7 +54,7 @@ pub trait Store<K: ?Sized, V: ?Sized>: Sized {
/// Gets a key/value pair at the specified index.
fn lm_get(&self, index: usize) -> Option<(&K, &V)>;
- /// Gets the last element in the store, or None if the store is empty.
+ /// Gets the last element in the store, or `None` if the store is empty.
fn lm_last(&self) -> Option<(&K, &V)> {
let len = self.lm_len();
if len == 0 {
@@ -76,6 +77,12 @@ pub trait StoreFromIterable<K, V>: Store<K, V> {
fn lm_sort_from_iter<I: IntoIterator<Item = (K, V)>>(iter: I) -> Self;
}
+pub trait StoreSlice<K: ?Sized, V: ?Sized>: Store<K, V> {
+ type Slice: ?Sized;
+
+ fn lm_get_range(&self, range: Range<usize>) -> Option<&Self::Slice>;
+}
+
pub trait StoreMut<K, V>: Store<K, V> {
/// Creates a new store with the specified capacity hint.
///
@@ -129,7 +136,7 @@ pub trait StoreMut<K, V>: Store<K, V> {
}
/// Iterator methods for the LiteMap store.
-pub trait StoreIterable<'a, K: 'a, V: 'a>: Store<K, V> {
+pub trait StoreIterable<'a, K: 'a + ?Sized, V: 'a + ?Sized>: Store<K, V> {
type KeyValueIter: Iterator<Item = (&'a K, &'a V)> + DoubleEndedIterator + 'a;
/// Returns an iterator over key/value pairs.
diff --git a/vendor/litemap/src/store/slice_impl.rs b/vendor/litemap/src/store/slice_impl.rs
index 4afb4fac2..48f6ca40c 100644
--- a/vendor/litemap/src/store/slice_impl.rs
+++ b/vendor/litemap/src/store/slice_impl.rs
@@ -45,6 +45,14 @@ impl<'a, K: 'a, V: 'a> Store<K, V> for &'a [(K, V)] {
}
}
+impl<'a, K, V> StoreSlice<K, V> for &'a [(K, V)] {
+ type Slice = [(K, V)];
+
+ fn lm_get_range(&self, range: Range<usize>) -> Option<&Self::Slice> {
+ self.get(range)
+ }
+}
+
impl<'a, K: 'a, V: 'a> StoreIterable<'a, K, V> for &'a [(K, V)] {
type KeyValueIter = core::iter::Map<core::slice::Iter<'a, (K, V)>, MapF<K, V>>;
diff --git a/vendor/litemap/src/store/vec_impl.rs b/vendor/litemap/src/store/vec_impl.rs
index 361b926c3..2205e8e8f 100644
--- a/vendor/litemap/src/store/vec_impl.rs
+++ b/vendor/litemap/src/store/vec_impl.rs
@@ -53,6 +53,14 @@ impl<K, V> Store<K, V> for Vec<(K, V)> {
}
}
+impl<K, V> StoreSlice<K, V> for Vec<(K, V)> {
+ type Slice = [(K, V)];
+
+ fn lm_get_range(&self, range: Range<usize>) -> Option<&Self::Slice> {
+ self.get(range)
+ }
+}
+
impl<K, V> StoreMut<K, V> for Vec<(K, V)> {
#[inline]
fn lm_with_capacity(capacity: usize) -> Self {
diff --git a/vendor/log/.cargo-checksum.json b/vendor/log/.cargo-checksum.json
index 31fa86e0a..357ec02f2 100644
--- a/vendor/log/.cargo-checksum.json
+++ b/vendor/log/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"ec02b20ae6390252656b99ca3edf9f0ee457d44d2ada1e0ff5e0a4cbf0f809c3","Cargo.toml":"e9fb9f9514a722e4e49c56ed6e6b3a008de2cfc3c5439373226a01378c7ca444","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"e297502f3ff18aace3858ed44e7d7da1be3cad26cd63887013b8d958b216b671","benches/value.rs":"6ce7689c8c714c93fa58afa984aefe54f0fc279fdd69e1582d013c97d1688eba","src/kv/error.rs":"5dea46a9eb2128442a60f7f8a0e0b9e5f155bc0e9ecc5134f91e466cb04c8a31","src/kv/key.rs":"941979c92db5f9b999b9eba4f96a8d43da034da80849fbfa65277f122b5fc39f","src/kv/mod.rs":"3592b750c206d5a36545d0c5f2e5db79c499c3f96dced13c5aeeacc7409b4ff6","src/kv/source.rs":"4fd7f0083caef44094984c02bd3d15d7e5fd6b95e809b2d6abab31aa8d01f5c3","src/kv/value.rs":"7f0ee0327dcfbb3df3ed4f0c8caed4bebd4b76bb7407f32f100d660f2a10eabd","src/lib.rs":"039fdb0d37e00a10c1ea805b9c0a27b31cfb7a901f075ed77523193248706a1d","src/macros.rs":"f44454d68bbe2d4b319cb3f7480de400d3999cc96cbf86d665ff63ac587ac8aa","src/serde.rs":"1f8614b42ffb1b34bdf58ce3ab6584b760a8a9e9aa6e00b27dc229cbc46f0a2b","triagebot.toml":"a135e10c777cd13459559bdf74fb704c1379af7c9b0f70bc49fa6f5a837daa81"},"package":"b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"4cf5d5c08ecf2cca9bfc6c0393fb06375675e1a712cd0da17426d54dd6b26281","Cargo.toml":"400053190237140d908218465ab8942fe65196c43925be6faef37e284b5817ff","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"788bda1deb337541be7ddaf8a7483d1c315f008aeab72374973135ad490e06c4","benches/value.rs":"6ce7689c8c714c93fa58afa984aefe54f0fc279fdd69e1582d013c97d1688eba","src/__private_api.rs":"de6799f0772181878a2fbfb93146641243a86f1115f2e8234a255d70105e2e65","src/kv/error.rs":"5dea46a9eb2128442a60f7f8a0e0b9e5f155bc0e9ecc5134f91e466cb04c8a31","src/kv/key.rs":"941979c92db5f9b999b9eba4f96a8d43da034da80849fbfa65277f122b5fc39f","src/kv/mod.rs":"3592b750c206d5a36545d0c5f2e5db79c499c3f96dced13c5aeeacc7409b4ff6","src/kv/source.rs":"4fd7f0083caef44094984c02bd3d15d7e5fd6b95e809b2d6abab31aa8d01f5c3","src/kv/value.rs":"7f0ee0327dcfbb3df3ed4f0c8caed4bebd4b76bb7407f32f100d660f2a10eabd","src/lib.rs":"1332fb825d498244bf068ce929d744c7316888c7f99e4711149af69ed028730c","src/macros.rs":"f0604416b1a839ba84509c17bff3741766cfa401cb09c0b00e33c36ae1c710ad","src/serde.rs":"1f8614b42ffb1b34bdf58ce3ab6584b760a8a9e9aa6e00b27dc229cbc46f0a2b","triagebot.toml":"a135e10c777cd13459559bdf74fb704c1379af7c9b0f70bc49fa6f5a837daa81"},"package":"b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"} \ No newline at end of file
diff --git a/vendor/log/CHANGELOG.md b/vendor/log/CHANGELOG.md
index c45c875c1..60870804a 100644
--- a/vendor/log/CHANGELOG.md
+++ b/vendor/log/CHANGELOG.md
@@ -2,6 +2,11 @@
## [Unreleased]
+## [0.4.20] - 2023-07-11
+
+* Remove rustversion dev-dependency by @Thomasdezeeuw in https://github.com/rust-lang/log/pull/568
+* Remove `local_inner_macros` usage by @EFanZh in https://github.com/rust-lang/log/pull/570
+
## [0.4.19] - 2023-06-10
* Use target_has_atomic instead of the old atomic_cas cfg by @GuillaumeGomez in https://github.com/rust-lang/log/pull/555
@@ -244,6 +249,7 @@ version using log 0.4.x to avoid losing module and file information.
Look at the [release tags] for information about older releases.
[Unreleased]: https://github.com/rust-lang-nursery/log/compare/0.4.18...HEAD
+[0.4.20]: https://github.com/rust-lang-nursery/log/compare/0.4.19...0.4.20
[0.4.19]: https://github.com/rust-lang-nursery/log/compare/0.4.18...0.4.19
[0.4.18]: https://github.com/rust-lang-nursery/log/compare/0.4.17...0.4.18
[0.4.17]: https://github.com/rust-lang-nursery/log/compare/0.4.16...0.4.17
diff --git a/vendor/log/Cargo.toml b/vendor/log/Cargo.toml
index b6da21d7a..b72d9c315 100644
--- a/vendor/log/Cargo.toml
+++ b/vendor/log/Cargo.toml
@@ -12,7 +12,7 @@
[package]
rust-version = "1.60.0"
name = "log"
-version = "0.4.19"
+version = "0.4.20"
authors = ["The Rust Project Developers"]
exclude = ["rfcs/**/*"]
description = """
@@ -64,8 +64,9 @@ version = "1.4"
optional = true
default-features = false
-[dev-dependencies.rustversion]
-version = "1.0"
+[dev-dependencies.proc-macro2]
+version = "1.0.63"
+default-features = false
[dev-dependencies.serde]
version = "1.0"
diff --git a/vendor/log/README.md b/vendor/log/README.md
index c6a944723..3dd645799 100644
--- a/vendor/log/README.md
+++ b/vendor/log/README.md
@@ -80,6 +80,7 @@ There are many available implementations to choose from, here are some options:
* [`android_log`](https://docs.rs/android_log/*/android_log/)
* [`win_dbg_logger`](https://docs.rs/win_dbg_logger/*/win_dbg_logger/)
* [`db_logger`](https://docs.rs/db_logger/*/db_logger/)
+ * [`log-to-defmt`](https://docs.rs/log-to-defmt/*/log_to_defmt/)
* For WebAssembly binaries:
* [`console_log`](https://docs.rs/console_log/*/console_log/)
* For dynamic libraries:
diff --git a/vendor/log/src/__private_api.rs b/vendor/log/src/__private_api.rs
new file mode 100644
index 000000000..7304deb89
--- /dev/null
+++ b/vendor/log/src/__private_api.rs
@@ -0,0 +1,57 @@
+//! WARNING: this is not part of the crate's public API and is subject to change at any time
+
+use crate::{Level, Metadata, Record};
+use std::fmt::Arguments;
+pub use std::option::Option;
+pub use std::{file, format_args, line, module_path, stringify};
+
+#[cfg(not(feature = "kv_unstable"))]
+pub fn log(
+ args: Arguments,
+ level: Level,
+ &(target, module_path, file): &(&str, &'static str, &'static str),
+ line: u32,
+ kvs: Option<&[(&str, &str)]>,
+) {
+ if kvs.is_some() {
+ panic!(
+ "key-value support is experimental and must be enabled using the `kv_unstable` feature"
+ )
+ }
+
+ crate::logger().log(
+ &Record::builder()
+ .args(args)
+ .level(level)
+ .target(target)
+ .module_path_static(Some(module_path))
+ .file_static(Some(file))
+ .line(Some(line))
+ .build(),
+ );
+}
+
+#[cfg(feature = "kv_unstable")]
+pub fn log(
+ args: Arguments,
+ level: Level,
+ &(target, module_path, file): &(&str, &'static str, &'static str),
+ line: u32,
+ kvs: Option<&[(&str, &dyn crate::kv::ToValue)]>,
+) {
+ crate::logger().log(
+ &Record::builder()
+ .args(args)
+ .level(level)
+ .target(target)
+ .module_path_static(Some(module_path))
+ .file_static(Some(file))
+ .line(Some(line))
+ .key_values(&kvs)
+ .build(),
+ );
+}
+
+pub fn enabled(level: Level, target: &str) -> bool {
+ crate::logger().enabled(&Metadata::builder().level(level).target(target).build())
+}
diff --git a/vendor/log/src/lib.rs b/vendor/log/src/lib.rs
index 95f261d78..ab5cdfa4a 100644
--- a/vendor/log/src/lib.rs
+++ b/vendor/log/src/lib.rs
@@ -148,6 +148,7 @@
//! * [android_log]
//! * [win_dbg_logger]
//! * [db_logger]
+//! * [log-to-defmt]
//! * For WebAssembly binaries:
//! * [console_log]
//! * For dynamic libraries:
@@ -313,13 +314,14 @@
//! [android_log]: https://docs.rs/android_log/*/android_log/
//! [win_dbg_logger]: https://docs.rs/win_dbg_logger/*/win_dbg_logger/
//! [db_logger]: https://docs.rs/db_logger/*/db_logger/
+//! [log-to-defmt]: https://docs.rs/log-to-defmt/*/log_to_defmt/
//! [console_log]: https://docs.rs/console_log/*/console_log/
//! [structured-logger]: https://docs.rs/structured-logger/latest/structured_logger/
#![doc(
html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
html_favicon_url = "https://www.rust-lang.org/favicon.ico",
- html_root_url = "https://docs.rs/log/0.4.19"
+ html_root_url = "https://docs.rs/log/0.4.20"
)]
#![warn(missing_docs)]
#![deny(missing_debug_implementations, unconditional_recursion)]
@@ -1466,64 +1468,7 @@ pub fn logger() -> &'static dyn Log {
// WARNING: this is not part of the crate's public API and is subject to change at any time
#[doc(hidden)]
-#[cfg(not(feature = "kv_unstable"))]
-pub fn __private_api_log(
- args: fmt::Arguments,
- level: Level,
- &(target, module_path, file, line): &(&str, &'static str, &'static str, u32),
- kvs: Option<&[(&str, &str)]>,
-) {
- if kvs.is_some() {
- panic!(
- "key-value support is experimental and must be enabled using the `kv_unstable` feature"
- )
- }
-
- logger().log(
- &Record::builder()
- .args(args)
- .level(level)
- .target(target)
- .module_path_static(Some(module_path))
- .file_static(Some(file))
- .line(Some(line))
- .build(),
- );
-}
-
-// WARNING: this is not part of the crate's public API and is subject to change at any time
-#[doc(hidden)]
-#[cfg(feature = "kv_unstable")]
-pub fn __private_api_log(
- args: fmt::Arguments,
- level: Level,
- &(target, module_path, file, line): &(&str, &'static str, &'static str, u32),
- kvs: Option<&[(&str, &dyn kv::ToValue)]>,
-) {
- logger().log(
- &Record::builder()
- .args(args)
- .level(level)
- .target(target)
- .module_path_static(Some(module_path))
- .file_static(Some(file))
- .line(Some(line))
- .key_values(&kvs)
- .build(),
- );
-}
-
-// WARNING: this is not part of the crate's public API and is subject to change at any time
-#[doc(hidden)]
-pub fn __private_api_enabled(level: Level, target: &str) -> bool {
- logger().enabled(&Metadata::builder().level(level).target(target).build())
-}
-
-// WARNING: this is not part of the crate's public API and is subject to change at any time
-#[doc(hidden)]
-pub mod __private_api {
- pub use std::option::Option;
-}
+pub mod __private_api;
/// The statically resolved maximum log level.
///
diff --git a/vendor/log/src/macros.rs b/vendor/log/src/macros.rs
index 84143dd37..281ff2572 100644
--- a/vendor/log/src/macros.rs
+++ b/vendor/log/src/macros.rs
@@ -27,17 +27,18 @@
/// data.0, data.1, private_data);
/// # }
/// ```
-#[macro_export(local_inner_macros)]
+#[macro_export]
macro_rules! log {
// log!(target: "my_target", Level::Info, key1 = 42, key2 = true; "a {} event", "log");
(target: $target:expr, $lvl:expr, $($key:tt = $value:expr),+; $($arg:tt)+) => ({
let lvl = $lvl;
if lvl <= $crate::STATIC_MAX_LEVEL && lvl <= $crate::max_level() {
- $crate::__private_api_log(
- __log_format_args!($($arg)+),
+ $crate::__private_api::log(
+ $crate::__private_api::format_args!($($arg)+),
lvl,
- &($target, __log_module_path!(), __log_file!(), __log_line!()),
- $crate::__private_api::Option::Some(&[$((__log_key!($key), &$value)),+])
+ &($target, $crate::__private_api::module_path!(), $crate::__private_api::file!()),
+ $crate::__private_api::line!(),
+ $crate::__private_api::Option::Some(&[$(($crate::__log_key!($key), &$value)),+])
);
}
});
@@ -46,17 +47,18 @@ macro_rules! log {
(target: $target:expr, $lvl:expr, $($arg:tt)+) => ({
let lvl = $lvl;
if lvl <= $crate::STATIC_MAX_LEVEL && lvl <= $crate::max_level() {
- $crate::__private_api_log(
- __log_format_args!($($arg)+),
+ $crate::__private_api::log(
+ $crate::__private_api::format_args!($($arg)+),
lvl,
- &($target, __log_module_path!(), __log_file!(), __log_line!()),
+ &($target, $crate::__private_api::module_path!(), $crate::__private_api::file!()),
+ $crate::__private_api::line!(),
$crate::__private_api::Option::None,
);
}
});
// log!(Level::Info, "a log event")
- ($lvl:expr, $($arg:tt)+) => (log!(target: __log_module_path!(), $lvl, $($arg)+));
+ ($lvl:expr, $($arg:tt)+) => ($crate::log!(target: $crate::__private_api::module_path!(), $lvl, $($arg)+));
}
/// Logs a message at the error level.
@@ -73,14 +75,14 @@ macro_rules! log {
/// error!(target: "app_events", "App Error: {}, Port: {}", err_info, 22);
/// # }
/// ```
-#[macro_export(local_inner_macros)]
+#[macro_export]
macro_rules! error {
// error!(target: "my_target", key1 = 42, key2 = true; "a {} event", "log")
// error!(target: "my_target", "a {} event", "log")
- (target: $target:expr, $($arg:tt)+) => (log!(target: $target, $crate::Level::Error, $($arg)+));
+ (target: $target:expr, $($arg:tt)+) => ($crate::log!(target: $target, $crate::Level::Error, $($arg)+));
// error!("a {} event", "log")
- ($($arg:tt)+) => (log!($crate::Level::Error, $($arg)+))
+ ($($arg:tt)+) => ($crate::log!($crate::Level::Error, $($arg)+))
}
/// Logs a message at the warn level.
@@ -97,14 +99,14 @@ macro_rules! error {
/// warn!(target: "input_events", "App received warning: {}", warn_description);
/// # }
/// ```
-#[macro_export(local_inner_macros)]
+#[macro_export]
macro_rules! warn {
// warn!(target: "my_target", key1 = 42, key2 = true; "a {} event", "log")
// warn!(target: "my_target", "a {} event", "log")
- (target: $target:expr, $($arg:tt)+) => (log!(target: $target, $crate::Level::Warn, $($arg)+));
+ (target: $target:expr, $($arg:tt)+) => ($crate::log!(target: $target, $crate::Level::Warn, $($arg)+));
// warn!("a {} event", "log")
- ($($arg:tt)+) => (log!($crate::Level::Warn, $($arg)+))
+ ($($arg:tt)+) => ($crate::log!($crate::Level::Warn, $($arg)+))
}
/// Logs a message at the info level.
@@ -123,14 +125,14 @@ macro_rules! warn {
/// conn_info.port, conn_info.speed);
/// # }
/// ```
-#[macro_export(local_inner_macros)]
+#[macro_export]
macro_rules! info {
// info!(target: "my_target", key1 = 42, key2 = true; "a {} event", "log")
// info!(target: "my_target", "a {} event", "log")
- (target: $target:expr, $($arg:tt)+) => (log!(target: $target, $crate::Level::Info, $($arg)+));
+ (target: $target:expr, $($arg:tt)+) => ($crate::log!(target: $target, $crate::Level::Info, $($arg)+));
// info!("a {} event", "log")
- ($($arg:tt)+) => (log!($crate::Level::Info, $($arg)+))
+ ($($arg:tt)+) => ($crate::log!($crate::Level::Info, $($arg)+))
}
/// Logs a message at the debug level.
@@ -148,14 +150,14 @@ macro_rules! info {
/// debug!(target: "app_events", "New position: x: {}, y: {}", pos.x, pos.y);
/// # }
/// ```
-#[macro_export(local_inner_macros)]
+#[macro_export]
macro_rules! debug {
// debug!(target: "my_target", key1 = 42, key2 = true; "a {} event", "log")
// debug!(target: "my_target", "a {} event", "log")
- (target: $target:expr, $($arg:tt)+) => (log!(target: $target, $crate::Level::Debug, $($arg)+));
+ (target: $target:expr, $($arg:tt)+) => ($crate::log!(target: $target, $crate::Level::Debug, $($arg)+));
// debug!("a {} event", "log")
- ($($arg:tt)+) => (log!($crate::Level::Debug, $($arg)+))
+ ($($arg:tt)+) => ($crate::log!($crate::Level::Debug, $($arg)+))
}
/// Logs a message at the trace level.
@@ -175,14 +177,14 @@ macro_rules! debug {
/// if pos.y >= 0.0 { "positive" } else { "negative" });
/// # }
/// ```
-#[macro_export(local_inner_macros)]
+#[macro_export]
macro_rules! trace {
// trace!(target: "my_target", key1 = 42, key2 = true; "a {} event", "log")
// trace!(target: "my_target", "a {} event", "log")
- (target: $target:expr, $($arg:tt)+) => (log!(target: $target, $crate::Level::Trace, $($arg)+));
+ (target: $target:expr, $($arg:tt)+) => ($crate::log!(target: $target, $crate::Level::Trace, $($arg)+));
// trace!("a {} event", "log")
- ($($arg:tt)+) => (log!($crate::Level::Trace, $($arg)+))
+ ($($arg:tt)+) => ($crate::log!($crate::Level::Trace, $($arg)+))
}
/// Determines if a message logged at the specified level in that module will
@@ -211,58 +213,16 @@ macro_rules! trace {
/// # fn expensive_call() -> Data { Data { x: 0, y: 0 } }
/// # fn main() {}
/// ```
-#[macro_export(local_inner_macros)]
+#[macro_export]
macro_rules! log_enabled {
(target: $target:expr, $lvl:expr) => {{
let lvl = $lvl;
lvl <= $crate::STATIC_MAX_LEVEL
&& lvl <= $crate::max_level()
- && $crate::__private_api_enabled(lvl, $target)
+ && $crate::__private_api::enabled(lvl, $target)
}};
($lvl:expr) => {
- log_enabled!(target: __log_module_path!(), $lvl)
- };
-}
-
-// The log macro above cannot invoke format_args directly because it uses
-// local_inner_macros. A format_args invocation there would resolve to
-// $crate::format_args which does not exist. Instead invoke format_args here
-// outside of local_inner_macros so that it resolves (probably) to
-// core::format_args or std::format_args. Same for the several macros that
-// follow.
-//
-// This is a workaround until we drop support for pre-1.30 compilers. At that
-// point we can remove use of local_inner_macros, use $crate:: when invoking
-// local macros, and invoke format_args directly.
-#[doc(hidden)]
-#[macro_export]
-macro_rules! __log_format_args {
- ($($args:tt)*) => {
- format_args!($($args)*)
- };
-}
-
-#[doc(hidden)]
-#[macro_export]
-macro_rules! __log_module_path {
- () => {
- module_path!()
- };
-}
-
-#[doc(hidden)]
-#[macro_export]
-macro_rules! __log_file {
- () => {
- file!()
- };
-}
-
-#[doc(hidden)]
-#[macro_export]
-macro_rules! __log_line {
- () => {
- line!()
+ $crate::log_enabled!(target: $crate::__private_api::module_path!(), $lvl)
};
}
@@ -271,7 +231,7 @@ macro_rules! __log_line {
macro_rules! __log_key {
// key1 = 42
($($args:ident)*) => {
- stringify!($($args)*)
+ $crate::__private_api::stringify!($($args)*)
};
// "key1" = 42
($($args:expr)*) => {
diff --git a/vendor/memchr/.cargo-checksum.json b/vendor/memchr/.cargo-checksum.json
index 9ebbb0ab0..3b8044fe3 100644
--- a/vendor/memchr/.cargo-checksum.json
+++ b/vendor/memchr/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.toml":"ec5b6a33c10b0c455159687c391ee3bbcda6c272156d965203c06f5385b4401d","LICENSE-MIT":"0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f","README.md":"b77bcf5362c0b4d5500f6bcc488747daf0020bc83862b02ca20e4d8113cfb5b2","UNLICENSE":"7e12e5df4bae12cb21581ba157ced20e1986a0508dd10d0e8a4ab9a4cf94e85c","rustfmt.toml":"1ca600239a27401c4a43f363cf3f38183a212affc1f31bff3ae93234bbaec228","src/arch/aarch64/memchr.rs":"5bb70f915084e629d940dbc322f5b9096b2e658cf63fea8a2f6e7550412e73a0","src/arch/aarch64/mod.rs":"44cd1a614bd66f1e66fc86c541d3c3b8d3a14a644c13e8bf816df3f555eac2d4","src/arch/aarch64/neon/memchr.rs":"e8c00b8fb2c7e2711832ae3cedefe59f32ebedd7dfa4d0ec6de2a566c979daea","src/arch/aarch64/neon/mod.rs":"eab6d56c2b2354db4ee395f40282cd49f97e2ab853547be5de6e65fbe1b2f634","src/arch/aarch64/neon/packedpair.rs":"fbdfdbfaf7b76b234db261fbe55a55c4479d32cdc65a654d60417c2d1c237849","src/arch/all/memchr.rs":"916d058b8b75b795996608b59767e348c6d5ae50061719c595ea409aefca36b9","src/arch/all/mod.rs":"b3190c1c48b23efe4b5e320aebdf8f0260a2cb2f63c0deba95ad0ef8219695d7","src/arch/all/packedpair/default_rank.rs":"abffd1b5b8b7a3be95c03dd1105b905c246a379854dc56f1e846ea7c4408f2c7","src/arch/all/packedpair/mod.rs":"292b66042c5b5c78bba33db6526aeae6904db803d601fcdd29032b87b3eb3754","src/arch/all/rabinkarp.rs":"236f69c04b90c14c253ae6c8d9b78150b4a56df75bb50af6d63b15145668b7cc","src/arch/all/shiftor.rs":"0d79117f52a1e4795843603a3bb0b45397df4ad5e4184bbc923658dab9dc3b5f","src/arch/all/twoway.rs":"47c97a265bfbafde90a618946643d3e97dfd9a85f01aa4ac758cd4c1573a450d","src/arch/generic/memchr.rs":"88290761bab740878401e914d71866da6501cdcef53d1249ec6fda4c7f9c12ae","src/arch/generic/mod.rs":"1dd75f61e0ea2563b8205a08aaa7b55500130aa331d18b9e9f995724b66c7a39","src/arch/generic/packedpair.rs":"a4a6efb29877ced9cf4c4e5ae9f36a79f019a16b831f2b9424899a1513d458ad","src/arch/mod.rs":"6dbd9e0b1b89fecb9faac5df6edfc87e24607e9099136aa831f3f056b14e22db","src/arch/wasm32/memchr.rs":"bfaaeca702cc32e605a06d5078d26ac59263d3c4eb04f9756e6be5e2850c3d0d","src/arch/wasm32/mod.rs":"a20377aa8fe07d68594879101dc73061e4f51d9c8d812b593b1f376e3c8add79","src/arch/wasm32/simd128/memchr.rs":"bac2c4c43fe710c83a6f2b1118fede043be89dd821d4b532907f129f09fdb5cf","src/arch/wasm32/simd128/mod.rs":"c157b373faedbfd65323be432e25bc411d97aa1b7bc58e76048614c7b2bf3bf6","src/arch/wasm32/simd128/packedpair.rs":"47e7875f1a0b502f3f30ddfd9257ed7ad4568fb7d968b5e6c01ba9e2aab2a459","src/arch/x86_64/avx2/memchr.rs":"576ec0c30f49874f7fd9f6caeb490d56132c0fbbaa4d877b1aa532cafce19323","src/arch/x86_64/avx2/mod.rs":"0033d1b712d0b10f0f273ef9aa8caa53e05e49f4c56a64f39af0b9df97eec584","src/arch/x86_64/avx2/packedpair.rs":"87b69cb4301815906127db4f6370f572c7c5d5dad35c0946c00ad888dbcaec8c","src/arch/x86_64/memchr.rs":"99a1dbe4156d498e6f910d06d3d3b31e7f6d06dff7d13a4c51b33a02b7e2fba9","src/arch/x86_64/mod.rs":"61b2aa876942fd3e78714c2ae21e356c8634545c06995020f443fa50218df027","src/arch/x86_64/sse2/memchr.rs":"68fc3b8f9eddf82192979c3aa11e5141f085cbb993c49c340558719a904679dc","src/arch/x86_64/sse2/mod.rs":"38b70ae52a64ec974dbb91d04d6ca8013d9e06d1fe4af852206bbc2faf1c59aa","src/arch/x86_64/sse2/packedpair.rs":"241ea981d8eea6024769f1c9375f726a9bb9700160c5857781d4befd9f5ef55d","src/cow.rs":"34eddd02cb82cc2d5a2c640891d64efe332dabcc1eea5115764200d8f46b66f7","src/ext.rs":"c472bcc41a7ef48980d976e954e87ef9fdfdfd30ac0199b959cc7e5b9d563ab3","src/lib.rs":"4e56613894535a80d669dda77697fb8c23769ede5e3fcedc5d999617b5b1d094","src/macros.rs":"3e4b39252bfa471fad384160a43f113ebfec7bec46a85d16f006622881dd2081","src/memchr.rs":"36f1c03304261877cd7f75c7ed8f7daff7a5c570cedce375e38e9b1ca44467f7","src/memmem/mod.rs":"7297b60ac7d7cb50ba44bf58a7cde7d32819237f2ec45f311d20bfe9379d4c78","src/memmem/searcher.rs":"69c38fb33d8f1a2a26769a81e514428240c8f8f15cea5302873d90b80391dd89","src/tests/memchr/mod.rs":"269f8e4b4f7f5ea458f27a3c174eb1020ffb2484eeba9464170beb51747df69b","src/tests/memchr/naive.rs":"6a0bee033e5edfb5b1d5769a5fa1c78388f7e9ff7bb91cb67f0ad029289e00e7","src/tests/memchr/prop.rs":"7bf7435087fbf08c5014c216b76575349735590d6b1d0e448921a1dc17bc0ea7","src/tests/mod.rs":"7cec8f809e279310a465c6a7725087970f219a676cc76c83de30c695bb490740","src/tests/packedpair.rs":"b02ec4fbb61a8653cb5f2268c31bc9168b8043347f2abdcc74081acf83b98e15","src/tests/substring/mod.rs":"c7660d10749363ac4687e7da2b5fda60768230425df8ba416c0c28b8d56a5c74","src/tests/substring/naive.rs":"df6f55d165382b8a53762ba4c324926cac13ebc62cde1805f4ce08740b326483","src/tests/substring/prop.rs":"38c15992609b5681a95d838ae6f2933e00a1219f2c971bfba245f96e0729fcdc","src/tests/x86_64-soft_float.json":"c0e416487fe9b4809534edb7db2a9eff3453dc40d9f1e23362c37f45a77ec717","src/vector.rs":"ef823ae8c54053780a0e7aeaee14b6c6ac2aea4567bf701ae8be137806c6d293"},"package":"5486aed0026218e61b8a01d5fbd5a0a134649abb71a0e53b7bc088529dced86e"} \ No newline at end of file
+{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.toml":"a56f004ee16ebce155f8a2ebbde8f5bbc8045e3d46e73828e5db15a008cede12","LICENSE-MIT":"0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f","README.md":"898ebf0019a21a33fa869de1b40ba35041798f553d883f016e976658866e95bd","UNLICENSE":"7e12e5df4bae12cb21581ba157ced20e1986a0508dd10d0e8a4ab9a4cf94e85c","rustfmt.toml":"1ca600239a27401c4a43f363cf3f38183a212affc1f31bff3ae93234bbaec228","src/arch/aarch64/memchr.rs":"5bb70f915084e629d940dbc322f5b9096b2e658cf63fea8a2f6e7550412e73a0","src/arch/aarch64/mod.rs":"44cd1a614bd66f1e66fc86c541d3c3b8d3a14a644c13e8bf816df3f555eac2d4","src/arch/aarch64/neon/memchr.rs":"e8c00b8fb2c7e2711832ae3cedefe59f32ebedd7dfa4d0ec6de2a566c979daea","src/arch/aarch64/neon/mod.rs":"eab6d56c2b2354db4ee395f40282cd49f97e2ab853547be5de6e65fbe1b2f634","src/arch/aarch64/neon/packedpair.rs":"fbdfdbfaf7b76b234db261fbe55a55c4479d32cdc65a654d60417c2d1c237849","src/arch/all/memchr.rs":"f6c51e50309f80e749887572297aa5efc19a3c7e5434b4404a101b3e6b152be1","src/arch/all/mod.rs":"b3190c1c48b23efe4b5e320aebdf8f0260a2cb2f63c0deba95ad0ef8219695d7","src/arch/all/packedpair/default_rank.rs":"abffd1b5b8b7a3be95c03dd1105b905c246a379854dc56f1e846ea7c4408f2c7","src/arch/all/packedpair/mod.rs":"292b66042c5b5c78bba33db6526aeae6904db803d601fcdd29032b87b3eb3754","src/arch/all/rabinkarp.rs":"236f69c04b90c14c253ae6c8d9b78150b4a56df75bb50af6d63b15145668b7cc","src/arch/all/shiftor.rs":"0d79117f52a1e4795843603a3bb0b45397df4ad5e4184bbc923658dab9dc3b5f","src/arch/all/twoway.rs":"47c97a265bfbafde90a618946643d3e97dfd9a85f01aa4ac758cd4c1573a450d","src/arch/generic/memchr.rs":"88290761bab740878401e914d71866da6501cdcef53d1249ec6fda4c7f9c12ae","src/arch/generic/mod.rs":"1dd75f61e0ea2563b8205a08aaa7b55500130aa331d18b9e9f995724b66c7a39","src/arch/generic/packedpair.rs":"a4a6efb29877ced9cf4c4e5ae9f36a79f019a16b831f2b9424899a1513d458ad","src/arch/mod.rs":"6dbd9e0b1b89fecb9faac5df6edfc87e24607e9099136aa831f3f056b14e22db","src/arch/wasm32/memchr.rs":"bfaaeca702cc32e605a06d5078d26ac59263d3c4eb04f9756e6be5e2850c3d0d","src/arch/wasm32/mod.rs":"a20377aa8fe07d68594879101dc73061e4f51d9c8d812b593b1f376e3c8add79","src/arch/wasm32/simd128/memchr.rs":"bac2c4c43fe710c83a6f2b1118fede043be89dd821d4b532907f129f09fdb5cf","src/arch/wasm32/simd128/mod.rs":"c157b373faedbfd65323be432e25bc411d97aa1b7bc58e76048614c7b2bf3bf6","src/arch/wasm32/simd128/packedpair.rs":"47e7875f1a0b502f3f30ddfd9257ed7ad4568fb7d968b5e6c01ba9e2aab2a459","src/arch/x86_64/avx2/memchr.rs":"576ec0c30f49874f7fd9f6caeb490d56132c0fbbaa4d877b1aa532cafce19323","src/arch/x86_64/avx2/mod.rs":"0033d1b712d0b10f0f273ef9aa8caa53e05e49f4c56a64f39af0b9df97eec584","src/arch/x86_64/avx2/packedpair.rs":"87b69cb4301815906127db4f6370f572c7c5d5dad35c0946c00ad888dbcaec8c","src/arch/x86_64/memchr.rs":"99a1dbe4156d498e6f910d06d3d3b31e7f6d06dff7d13a4c51b33a02b7e2fba9","src/arch/x86_64/mod.rs":"61b2aa876942fd3e78714c2ae21e356c8634545c06995020f443fa50218df027","src/arch/x86_64/sse2/memchr.rs":"68fc3b8f9eddf82192979c3aa11e5141f085cbb993c49c340558719a904679dc","src/arch/x86_64/sse2/mod.rs":"38b70ae52a64ec974dbb91d04d6ca8013d9e06d1fe4af852206bbc2faf1c59aa","src/arch/x86_64/sse2/packedpair.rs":"241ea981d8eea6024769f1c9375f726a9bb9700160c5857781d4befd9f5ef55d","src/cow.rs":"34eddd02cb82cc2d5a2c640891d64efe332dabcc1eea5115764200d8f46b66f7","src/ext.rs":"c472bcc41a7ef48980d976e954e87ef9fdfdfd30ac0199b959cc7e5b9d563ab3","src/lib.rs":"4e56613894535a80d669dda77697fb8c23769ede5e3fcedc5d999617b5b1d094","src/macros.rs":"3e4b39252bfa471fad384160a43f113ebfec7bec46a85d16f006622881dd2081","src/memchr.rs":"36f1c03304261877cd7f75c7ed8f7daff7a5c570cedce375e38e9b1ca44467f7","src/memmem/mod.rs":"7297b60ac7d7cb50ba44bf58a7cde7d32819237f2ec45f311d20bfe9379d4c78","src/memmem/searcher.rs":"69c38fb33d8f1a2a26769a81e514428240c8f8f15cea5302873d90b80391dd89","src/tests/memchr/mod.rs":"269f8e4b4f7f5ea458f27a3c174eb1020ffb2484eeba9464170beb51747df69b","src/tests/memchr/naive.rs":"6a0bee033e5edfb5b1d5769a5fa1c78388f7e9ff7bb91cb67f0ad029289e00e7","src/tests/memchr/prop.rs":"7bf7435087fbf08c5014c216b76575349735590d6b1d0e448921a1dc17bc0ea7","src/tests/mod.rs":"7cec8f809e279310a465c6a7725087970f219a676cc76c83de30c695bb490740","src/tests/packedpair.rs":"b02ec4fbb61a8653cb5f2268c31bc9168b8043347f2abdcc74081acf83b98e15","src/tests/substring/mod.rs":"c7660d10749363ac4687e7da2b5fda60768230425df8ba416c0c28b8d56a5c74","src/tests/substring/naive.rs":"df6f55d165382b8a53762ba4c324926cac13ebc62cde1805f4ce08740b326483","src/tests/substring/prop.rs":"38c15992609b5681a95d838ae6f2933e00a1219f2c971bfba245f96e0729fcdc","src/tests/x86_64-soft_float.json":"c0e416487fe9b4809534edb7db2a9eff3453dc40d9f1e23362c37f45a77ec717","src/vector.rs":"ef823ae8c54053780a0e7aeaee14b6c6ac2aea4567bf701ae8be137806c6d293"},"package":"f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"} \ No newline at end of file
diff --git a/vendor/memchr/Cargo.toml b/vendor/memchr/Cargo.toml
index b43898e29..394d85dbb 100644
--- a/vendor/memchr/Cargo.toml
+++ b/vendor/memchr/Cargo.toml
@@ -11,9 +11,9 @@
[package]
edition = "2021"
-rust-version = "1.60"
+rust-version = "1.61"
name = "memchr"
-version = "2.6.2"
+version = "2.6.4"
authors = [
"Andrew Gallant <jamslam@gmail.com>",
"bluss",
@@ -26,16 +26,19 @@ exclude = [
"/scripts",
"/tmp",
]
-description = "Safe interface to memchr."
+description = """
+Provides extremely fast (uses SIMD on x86_64, aarch64 and wasm32) routines for
+1, 2 or 3 byte search and single substring search.
+"""
homepage = "https://github.com/BurntSushi/memchr"
documentation = "https://docs.rs/memchr/"
readme = "README.md"
keywords = [
"memchr",
- "char",
- "scan",
- "strchr",
- "string",
+ "memmem",
+ "substring",
+ "find",
+ "search",
]
license = "Unlicense OR MIT"
repository = "https://github.com/BurntSushi/memchr"
diff --git a/vendor/memchr/README.md b/vendor/memchr/README.md
index 54dabd585..fe44625e3 100644
--- a/vendor/memchr/README.md
+++ b/vendor/memchr/README.md
@@ -47,7 +47,7 @@ When a SIMD version is not available, then this crate falls back to
### Minimum Rust version policy
-This crate's minimum supported `rustc` version is `1.60.0`.
+This crate's minimum supported `rustc` version is `1.61.0`.
The current policy is that the minimum Rust version required to use this crate
can be increased in minor version updates. For example, if `crate 1.0` requires
diff --git a/vendor/memchr/src/arch/all/memchr.rs b/vendor/memchr/src/arch/all/memchr.rs
index b211ad9ec..435b1beed 100644
--- a/vendor/memchr/src/arch/all/memchr.rs
+++ b/vendor/memchr/src/arch/all/memchr.rs
@@ -257,32 +257,14 @@ impl One {
if start >= end {
return 0;
}
- let confirm = |b| self.confirm(b);
- let len = end.distance(start);
- if len < USIZE_BYTES {
- return generic::count_byte_by_byte(start, end, confirm);
- }
-
- // And now we start our search at a guaranteed aligned position.
- let mut cur =
- start.add(USIZE_BYTES - (start.as_usize() & USIZE_ALIGN));
- debug_assert!(cur > start);
- // Count any bytes that start before the first aligned boundary.
- let mut count = generic::count_byte_by_byte(start, cur, confirm);
- if len <= One::LOOP_BYTES {
- return count + generic::count_byte_by_byte(cur, end, confirm);
- }
- debug_assert!(end.sub(One::LOOP_BYTES) >= start);
- while cur <= end.sub(One::LOOP_BYTES) {
- debug_assert_eq!(0, cur.as_usize() % USIZE_BYTES);
-
- let a = cur.cast::<usize>().read();
- let b = cur.add(USIZE_BYTES).cast::<usize>().read();
- count += self.count_bytes(a);
- count += self.count_bytes(b);
- cur = cur.add(One::LOOP_BYTES);
+ // Sadly I couldn't get the SWAR approach to work here, so we just do
+ // one byte at a time for now. PRs to improve this are welcome.
+ let mut ptr = start;
+ let mut count = 0;
+ while ptr < end {
+ count += (ptr.read() == self.s1) as usize;
+ ptr = ptr.offset(1);
}
- count += generic::count_byte_by_byte(cur, end, confirm);
count
}
@@ -301,11 +283,6 @@ impl One {
}
#[inline(always)]
- fn count_bytes(&self, chunk: usize) -> usize {
- count_bytes(self.v1 ^ chunk)
- }
-
- #[inline(always)]
fn confirm(&self, haystack_byte: u8) -> bool {
self.s1 == haystack_byte
}
@@ -907,14 +884,6 @@ fn has_zero_byte(x: usize) -> bool {
(x.wrapping_sub(LO) & !x & HI) != 0
}
-#[inline(always)]
-fn count_bytes(chunk: usize) -> usize {
- const LO: usize = splat(0x01);
- const HI: usize = splat(0x80);
-
- (chunk.wrapping_sub(LO) & !chunk & HI).count_ones() as usize
-}
-
/// Repeat the given byte into a word size number. That is, every 8 bits
/// is equivalent to the given byte. For example, if `b` is `\x4E` or
/// `01001110` in binary, then the returned value on a 32-bit system would be:
@@ -1012,4 +981,16 @@ mod tests {
assert_eq!(Some(0), it.next());
assert_eq!(None, it.next_back());
}
+
+ // This regression test was caught by ripgrep's test suite on i686 when
+ // upgrading to memchr 2.6. Namely, something about the \x0B bytes here
+ // screws with the SWAR counting approach I was using. This regression test
+ // prompted me to remove the SWAR counting approach and just replace it
+ // with a byte-at-a-time loop.
+ #[test]
+ fn regression_count_new_lines() {
+ let haystack = "01234567\x0b\n\x0b\n\x0b\n\x0b\nx";
+ let count = One::new(b'\n').count(haystack.as_bytes());
+ assert_eq!(4, count);
+ }
}
diff --git a/vendor/minifier/.cargo-checksum.json b/vendor/minifier/.cargo-checksum.json
index 6ca9569c2..2fb61fb60 100644
--- a/vendor/minifier/.cargo-checksum.json
+++ b/vendor/minifier/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"57dc07ee7630f30d86a9f9729eda1a2df49abcfbd82eaa850d1583de0507a57a","Cargo.toml":"1d804870b80ebb2d7361ab20144152a8593f97b37377834fa4c0f5c399281626","LICENSE":"d64fe3199be0c90d1f88b363e6b567d5812f64c01accc8957e71381598a3d670","README.md":"7ce7cc43ebca972096db97b9f8bd211e5ac0c688f01b1732d5e2243e8c32d02d","src/css/mod.rs":"afbab7f8a657871fb567b25c5c87cb3e1c9e88d486335e154873b8c818370506","src/css/tests.rs":"056d1d3d927be4c7cece4033b48b28fe3a142939ac2f71cb10ca93f2a28a4477","src/css/token.rs":"3f949eb966daab620df03a2fb9e8309fae0f48ad4b3012603f7daa363ab9d62f","src/html.rs":"7b78e2c7d1b0d85065de7e6ab7e0407a74590e23ad1d20fe106c2361f5b09447","src/js/mod.rs":"b63e9cac9cc2cf7063f1eb598892fde3aa55081d0bf926df85c008e35d8e5a30","src/js/token.rs":"81918762068fba64a53dc0328222e74e8c922e657be46bb431ae4a3ac0e9fce9","src/js/tools.rs":"50e9581d6cfa2aebf2928f3df63bbb8a72149c7a40a687f248c108cf154a74ab","src/js/utils.rs":"54d97e766cb38ca1ac7c661a376f8e01c735486f2b78ae149794bb735e8f787b","src/json/json_minifier.rs":"83b5868bff0692aa655973596ad6ff34d215001be47c5c9adad8049faeec87bb","src/json/mod.rs":"e4ff2108ba01d5e937e22108c467c1c191ffc55fffedebd9c86d2a9789abb5e4","src/json/read/byte_to_char.rs":"633cdff14eb99fe7e2ba72594444b2c681a7ec13f557fecfc791b11ce8b9f130","src/json/read/internal_buffer.rs":"459e17fcc86039dd5000dbf9e8c834bfaa02cba2a2afbd19c067c9d621ba7d0b","src/json/read/internal_reader.rs":"37d9f8a31fd6477bbed676ce923a85568e9a96ef5d46db02e92e65ba13c65dea","src/json/read/json_read.rs":"dbc2c729c0c07109860e5a7c69f4fea2c4721fc17f764622392c54bd2afb1b55","src/json/string.rs":"9b9b3a40bfdb6fcbe2f3215a0506b8edfab577dd79e4a404c492fbc486896567","src/lib.rs":"ec53713f3903f80439c83a835d46b562c3cae119f2354d7a5558c0603c86c1a7","src/main.rs":"10c62d1d5544896506962d569d1507d3396bf894f501c26586a561b904956c47","tests/files/main.js":"18f43c7672eb75f532bc7f99dd2b6d644b3a11e19662774e93405928fde4d4d4","tests/files/minified_main.js":"0952e8cff3fae6c91b13a15f2923d922ccd9bce339419cc4bd52b5314180dabb","tests/files/test.json":"e07a148ef24385057cb7420209a630758c6ce80970bd54c8ffee5be207205608","tests/js_minify.rs":"66de1b596668a5f8d11e0b65d42ace3da6bc0b2b997b2d9e2fc09a488624c5af"},"package":"8eb022374af2f446981254e6bf9efb6e2c9e1a53176d395fca02792fd4435729"} \ No newline at end of file
+{"files":{"Cargo.lock":"0a3d802a38b6843f9bea09193473b7afe1fea1fb696ea21fdc3d7722bf570482","Cargo.toml":"d233b121cdf122385b76cc7be3bbce987da1d4697fa3b72c2d5aa2202affa2e2","LICENSE":"d64fe3199be0c90d1f88b363e6b567d5812f64c01accc8957e71381598a3d670","README.md":"7daa903217294b5aab2854340c6d5a3fd797b4ea529a4ccc8d2aa3337eff587d","src/css/mod.rs":"5eba1ee5a93d2229b197e868947f0a47b97a7b115f0ce48bd10ad83603d7bf3d","src/css/tests.rs":"526790a74253e455271188576ca4cb9fa6c98c5004721b95a94e784022bc9ea4","src/css/token.rs":"981ada1fd444c234584072a183d33400672b14d0ad40054dd9a217d93e3c6023","src/html.rs":"7b78e2c7d1b0d85065de7e6ab7e0407a74590e23ad1d20fe106c2361f5b09447","src/js/mod.rs":"b63e9cac9cc2cf7063f1eb598892fde3aa55081d0bf926df85c008e35d8e5a30","src/js/token.rs":"64a2e8a5e22456db1fa8b40e97241e34feda4ef11f5f2ebafb2f0f552b51eb6e","src/js/tools.rs":"50e9581d6cfa2aebf2928f3df63bbb8a72149c7a40a687f248c108cf154a74ab","src/js/utils.rs":"4392113ccfb96a6ecabc2b78909040b7cd7984a6f3516b85905eb6e8194480f1","src/json/json_minifier.rs":"83b5868bff0692aa655973596ad6ff34d215001be47c5c9adad8049faeec87bb","src/json/mod.rs":"e4ff2108ba01d5e937e22108c467c1c191ffc55fffedebd9c86d2a9789abb5e4","src/json/read/byte_to_char.rs":"633cdff14eb99fe7e2ba72594444b2c681a7ec13f557fecfc791b11ce8b9f130","src/json/read/internal_buffer.rs":"459e17fcc86039dd5000dbf9e8c834bfaa02cba2a2afbd19c067c9d621ba7d0b","src/json/read/internal_reader.rs":"37d9f8a31fd6477bbed676ce923a85568e9a96ef5d46db02e92e65ba13c65dea","src/json/read/json_read.rs":"dbc2c729c0c07109860e5a7c69f4fea2c4721fc17f764622392c54bd2afb1b55","src/json/string.rs":"9b9b3a40bfdb6fcbe2f3215a0506b8edfab577dd79e4a404c492fbc486896567","src/lib.rs":"ec53713f3903f80439c83a835d46b562c3cae119f2354d7a5558c0603c86c1a7","src/main.rs":"10c62d1d5544896506962d569d1507d3396bf894f501c26586a561b904956c47","tests/files/main.js":"18f43c7672eb75f532bc7f99dd2b6d644b3a11e19662774e93405928fde4d4d4","tests/files/minified_main.js":"0952e8cff3fae6c91b13a15f2923d922ccd9bce339419cc4bd52b5314180dabb","tests/files/test.json":"e07a148ef24385057cb7420209a630758c6ce80970bd54c8ffee5be207205608","tests/js_minify.rs":"66de1b596668a5f8d11e0b65d42ace3da6bc0b2b997b2d9e2fc09a488624c5af"},"package":"95bbbf96b9ac3482c2a25450b67a15ed851319bc5fabf3b40742ea9066e84282"} \ No newline at end of file
diff --git a/vendor/minifier/Cargo.lock b/vendor/minifier/Cargo.lock
index 2b0a9ea5c..645a0ced2 100644
--- a/vendor/minifier/Cargo.lock
+++ b/vendor/minifier/Cargo.lock
@@ -19,7 +19,7 @@ checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
[[package]]
name = "minifier"
-version = "0.2.2"
+version = "0.3.0"
dependencies = [
"regex",
]
diff --git a/vendor/minifier/Cargo.toml b/vendor/minifier/Cargo.toml
index a7f02a37c..a899cea54 100644
--- a/vendor/minifier/Cargo.toml
+++ b/vendor/minifier/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2021"
name = "minifier"
-version = "0.2.2"
+version = "0.3.0"
authors = ["Guillaume Gomez <guillaume1.gomez@gmail.com>"]
description = "Minifier tool/lib for JS/CSS/JSON files"
documentation = "https://docs.rs/minifier-rs"
@@ -26,7 +26,6 @@ keywords = [
]
license = "MIT"
repository = "https://github.com/GuillaumeGomez/minifier-rs"
-resolver = "2"
[profile.release]
opt-level = 3
@@ -51,10 +50,3 @@ optional = true
[features]
html = ["regex"]
-
-[badges.appveyor]
-repository = "GuillaumeGomez/minifier-rs"
-service = "github"
-
-[badges.travis-ci]
-repository = "GuillaumeGomez/minifier-rs"
diff --git a/vendor/minifier/README.md b/vendor/minifier/README.md
index e9aa5bba6..bd6a843cb 100644
--- a/vendor/minifier/README.md
+++ b/vendor/minifier/README.md
@@ -16,13 +16,7 @@ To use the library, add it into your `Cargo.toml` file like this:
```toml
[dependencies]
-minifier = "^0.0.1"
-```
-
-Then import it into your code like this:
-
-```rust
-extern crate minifier;
+minifier = "0.2"
```
## WARNING!!
diff --git a/vendor/minifier/src/css/mod.rs b/vendor/minifier/src/css/mod.rs
index 224ad8126..70ac41037 100644
--- a/vendor/minifier/src/css/mod.rs
+++ b/vendor/minifier/src/css/mod.rs
@@ -18,7 +18,7 @@ mod token;
/// let css_minified = minify(css).expect("minification failed");
/// assert_eq!(&css_minified.to_string(), ".foo>p{color:red;}");
/// ```
-pub fn minify<'a>(content: &'a str) -> Result<Minified<'a>, &'static str> {
+pub fn minify(content: &str) -> Result<Minified<'_>, &'static str> {
token::tokenize(content).map(Minified)
}
diff --git a/vendor/minifier/src/css/tests.rs b/vendor/minifier/src/css/tests.rs
index dd696afde..2a3459e1e 100644
--- a/vendor/minifier/src/css/tests.rs
+++ b/vendor/minifier/src/css/tests.rs
@@ -200,6 +200,13 @@ fn check_calc() {
}
#[test]
+fn check_container() {
+ let s = "@container rustdoc (min-width: 1250px) { .foo { width: 100px; } }";
+ let expected = "@container rustdoc (min-width:1250px){.foo{width:100px;}}";
+ assert_eq!(minify(s).expect("minify failed").to_string(), expected);
+}
+
+#[test]
fn check_spaces() {
let s = ".line-numbers .line-highlighted { color: #0a042f !important; }";
let expected = ".line-numbers .line-highlighted{color:#0a042f !important;}";
diff --git a/vendor/minifier/src/css/token.rs b/vendor/minifier/src/css/token.rs
index 58e416fcd..467bed0fa 100644
--- a/vendor/minifier/src/css/token.rs
+++ b/vendor/minifier/src/css/token.rs
@@ -427,7 +427,7 @@ fn fill_other<'a>(
}
#[allow(clippy::comparison_chain)]
-pub(super) fn tokenize<'a>(source: &'a str) -> Result<Tokens<'a>, &'static str> {
+pub(super) fn tokenize(source: &str) -> Result<Tokens<'_>, &'static str> {
let mut v = Vec::with_capacity(1000);
let mut iterator = source.char_indices().peekable();
let mut start = 0;
@@ -579,6 +579,7 @@ fn clean_tokens(mut v: Vec<Token<'_>>) -> Vec<Token<'_>> {
// Index of the previous retained token, if there is one.
let mut ip: Option<usize> = None;
let mut is_in_calc = false;
+ let mut is_in_container = false;
let mut paren = 0;
// A vector of bools indicating which elements are to be retained.
let mut b = Vec::with_capacity(v.len());
@@ -594,6 +595,9 @@ fn clean_tokens(mut v: Vec<Token<'_>>) -> Vec<Token<'_>> {
paren += 1;
}
}
+ if v[i] == Token::SelectorElement(SelectorElement::Media("container")) {
+ is_in_container = true;
+ }
let mut retain = true;
if v[i].is_useless() {
@@ -609,6 +613,8 @@ fn clean_tokens(mut v: Vec<Token<'_>>) -> Vec<Token<'_>> {
// retain the space after "and", "or" or "not"
} else if is_in_calc && v[ip.unwrap()].is_useless() {
retain = false;
+ } else if is_in_container && matches!(v[ip.unwrap()], Token::Other(_)) {
+ // retain spaces between keywords in container queryes
} else if !is_in_calc
&& ((ip.is_some() && {
let prev = &v[ip.unwrap()];
diff --git a/vendor/minifier/src/js/token.rs b/vendor/minifier/src/js/token.rs
index 251394cf6..3888e7076 100644
--- a/vendor/minifier/src/js/token.rs
+++ b/vendor/minifier/src/js/token.rs
@@ -821,12 +821,7 @@ fn handle_equal_sign(v: &mut Vec<Token<'_>>, c: ReservedChar) -> bool {
true
}
-fn check_if_number<'a>(
- iterator: &mut MyPeekable<'_>,
- start: usize,
- pos: usize,
- source: &'a str,
-) -> bool {
+fn check_if_number(iterator: &mut MyPeekable<'_>, start: usize, pos: usize, source: &str) -> bool {
if source[start..pos].find('.').is_some() {
return false;
} else if u64::from_str(&source[start..pos]).is_ok() {
@@ -1064,32 +1059,12 @@ impl<'a> Tokens<'a> {
}
}
-pub struct IntoIterTokens<'a> {
- inner: Tokens<'a>,
-}
-
impl<'a> IntoIterator for Tokens<'a> {
- type Item = (Token<'a>, Option<&'a Token<'a>>);
- type IntoIter = IntoIterTokens<'a>;
+ type Item = Token<'a>;
+ type IntoIter = std::vec::IntoIter<Token<'a>>;
- fn into_iter(mut self) -> Self::IntoIter {
- self.0.reverse();
- IntoIterTokens { inner: self }
- }
-}
-
-impl<'a> Iterator for IntoIterTokens<'a> {
- type Item = (Token<'a>, Option<&'a Token<'a>>);
-
- fn next(&mut self) -> Option<Self::Item> {
- if self.inner.0.is_empty() {
- None
- } else {
- let ret = self.inner.0.pop().expect("pop() failed");
- // FIXME once generic traits' types are stabilized, use a second
- // lifetime instead of transmute!
- Some((ret, unsafe { std::mem::transmute(self.inner.0.last()) }))
- }
+ fn into_iter(self) -> Self::IntoIter {
+ self.0.into_iter()
}
}
diff --git a/vendor/minifier/src/js/utils.rs b/vendor/minifier/src/js/utils.rs
index db765e804..f19d26ebb 100644
--- a/vendor/minifier/src/js/utils.rs
+++ b/vendor/minifier/src/js/utils.rs
@@ -559,17 +559,17 @@ var n = null;
"#;
let expected_result = "var x=['a','b',N,'d',{'x':N,'e':N,'z':'w'}];var n=N;";
- let res: Tokens = crate::js::simple_minify(source)
- .into_iter()
- .filter(|(x, next)| crate::js::clean_token(x, next))
- .map(|(t, _)| {
- if t == Token::Keyword(Keyword::Null) {
+ let mut iter = crate::js::simple_minify(source).into_iter().peekable();
+ let mut tokens = Vec::new();
+ while let Some(token) = iter.next() {
+ if crate::js::clean_token(&token, &iter.peek()) {
+ tokens.push(if token == Token::Keyword(Keyword::Null) {
Token::Other("N")
} else {
- t
- }
- })
- .collect::<Vec<_>>()
- .into();
- assert_eq!(res.to_string(), expected_result);
+ token
+ });
+ }
+ }
+ let tokens: Tokens = tokens.into();
+ assert_eq!(tokens.to_string(), expected_result);
}
diff --git a/vendor/packed_simd/.cargo-checksum.json b/vendor/packed_simd/.cargo-checksum.json
new file mode 100644
index 000000000..0d75492f0
--- /dev/null
+++ b/vendor/packed_simd/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"ae219b55eab1f8cd8c3497d7327ea0e5426dba23d2446f7981ca799ad80b6a52","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"c4ac7027a9ab7d7858aa8957d7454dbfcdbb81e605b6a171f05310cc3cad3762","bors.toml":"dee881dc69b9b7834e4eba5d95c3ed5a416d4628815a167d6a22d4cb4fb064b8","build.rs":"019ed29c43989782d8eec3a961654cfc172d7a7898da4eca8f654700af7e1988","ci/all.sh":"2ae6b2445b4db83833e40b37efd0016c6b9879ee988b9b3ef94db5439a3e1606","ci/android-install-ndk.sh":"bdcf93ba9043ac1184e2c504a3d40c47c6c1601d882e0f0a27a8eb56fbabcb5f","ci/android-install-sdk.sh":"3490432022c5c8f5a115c084f7a9aca1626f96c0c87ffb62019228c4346b47e4","ci/android-sysimage.sh":"ebf4e5daa1f0fe1b2092b79f0f3f161c4c4275cb744e52352c4d81ab451e4c5a","ci/benchmark.sh":"b61d19ef6b90deba8fb79dee74c8b062d94844676293da346da87bb78a9a49a4","ci/deploy_and_run_on_ios_simulator.rs":"ec8ecf82d92072676aa47f0d1a3d021b60a7ae3531153ef12d2ff4541fc294dc","ci/docker/aarch64-linux-android/Dockerfile":"ace2e7d33c87bc0f6d3962a4a3408c04557646f7f51ab99cfbf574906796b016","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"da88c0d50f16dc08448c7fdf1fa5ed2cbe576acf9e7dd85b5b818621b2a8c702","ci/docker/arm-unknown-linux-gnueabi/Dockerfile":"bb5f8ae890707c128652290ffc544447643bf12037ddd73c6ad6989f848cb380","ci/docker/arm-unknown-linux-gnueabihf/Dockerfile":"1afaefcbc05b740859acd4e067bc92439be6bcbe8f2e9678474fb434bcd398d9","ci/docker/armv7-linux-androideabi/Dockerfile":"370e55d3330a413a3ccf677b3afb3e0ef9018a5fab263faa97ae8ac017fc2286","ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile":"8282ea707a94109beed47a57574755e2d58401735904a03f85fb64c578c53b4f","ci/docker/i586-unknown-linux-gnu/Dockerfile":"49792922269f371bd29da4727e9085101b27be67a6b97755d0196c63317f7abb","ci/docker/i686-unknown-linux-gnu/Dockerfile":"49792922269f371bd29da4727e9085101b27be67a6b97755d0196c63317f7abb","ci/docker/mips-unknown-linux-gnu/Dockerfile":"b2ebc25797612c4f8395fe9d407725156044955bfbcf442036b7f55b43a5f9da","ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile":"b0c1692ac65bc56dd30494b1993d8e929c48cc9c4b92029b7c7592af6d4f9220","ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile":"4e9249c179300138141d0b2b7401b11897f64aed69f541f078c1db4594df2827","ci/docker/mipsel-unknown-linux-musl/Dockerfile":"3164c52b0dcbb01afa78292b15b5c43503ccf0491cf6eb801ec2bf22ae274e52","ci/docker/powerpc-unknown-linux-gnu/Dockerfile":"ae8274309928620a5dd232a46264e05399bb746288ebee3843a71c4162208cc3","ci/docker/powerpc64-unknown-linux-gnu/Dockerfile":"ba5fbc4bf3bb91cd50b407248da31225681efc8f2be7618f4a0ab1219b389508","ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile":"53f97f8b9b5aca7534b9bf9ea48f35175052cd2a560a107e01ad270731c032fc","ci/docker/s390x-unknown-linux-gnu/Dockerfile":"89f5421cf06d817ae94092987e914472ef384ad2d1fff2735be3d8786ba11214","ci/docker/sparc64-unknown-linux-gnu/Dockerfile":"83eba19576486f9d10d7c037d669d72b31a65565a479f30b22aab36aaa2ff8dc","ci/docker/thumbv7neon-linux-androideabi/Dockerfile":"c2decd5591bd7a09378901bef629cd944acf052eb55e4f35b79eb9cb4d62246a","ci/docker/thumbv7neon-unknown-linux-gnueabihf/Dockerfile":"51955a8bf3c4d440f47382af6f5426ebff94ab01a04da36175babda9a057740f","ci/docker/wasm32-unknown-unknown/Dockerfile":"b982b421c70db476900df5b60e19ef8815e6c7dae22687225002780cab7b0a76","ci/docker/x86_64-linux-android/Dockerfile":"a17ebdb186ce2dd6b62100b5a439e05a1ab9adab113e2508843e121aaea52992","ci/docker/x86_64-unknown-linux-gnu-emulated/Dockerfile":"44b6203d9290bfdc53d81219f0937e1110847a23dd982ec8c4de388354f01536","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"7f4e3ca5fa288ea70edb4d1f75309708cd30b192e2e4444e61c4d5b3b58f89cf","ci/dox.sh":"434e9611c52e389312d2b03564adf09429f10cc76fe66a8644adb104903b87b7","ci/linux-s390x.sh":"d6b732d7795b4ba131326aff893bca6228a7d2eb0e9402f135705413dbbe0dce","ci/linux-sparc64.sh":"c92966838b1ab7ad3b7a344833ee726aba6b647cf5952e56f0ad1ba420b13325","ci/lld-shim.rs":"3d7f71ec23a49e2b67f694a0168786f9a954dda15f5a138815d966643fd3fcc3","ci/max_line_width.sh":"0a1518bba4c9ecaa55694cb2e9930d0e19c265baabf73143f17f9cf285aaa5bb","ci/run-docker.sh":"92e036390ad9b0d16f109579df1b5ced2e72e9afea40c7d011400ebd3a2a90de","ci/run.sh":"9afabc961e0ee83b87201f3fd554c19e5b0c36f3a95d013595e276c9882dd0a4","ci/run_examples.sh":"d1a23c6c35374a0678ba5114b9b8fefd8be0a79e774872a8bf0898d1baca18d0","ci/runtest-android.rs":"145a8e9799a5223975061fe7e586ade5669ee4877a7d7a4cf6b4ab48e8e36c7c","ci/setup_benchmarks.sh":"fae3960023f6f3d1388cd2ad22fdbab4b075f1f29dd4292d7994a20783beb6cf","ci/test-runner-linux":"c8aa6025cff5306f4f31d0c61dc5f9d4dd5a1d189ab613ef8d4c367c694d9ccd","contributing.md":"2d2629310ad4d464c482bdbb5819f0d6ce223c576aeef2cdce6a1f6857085ea5","perf-guide/book.toml":"115a98284126c6b180178b44713314cc494f08a71662ee2ce15cf67f17a51064","perf-guide/src/SUMMARY.md":"3e03bffc991fdc2050f3d51842d72d9d21ea6abab56a3baf3b2d5973a78b89e1","perf-guide/src/ascii.css":"29afb08833b2fe2250f0412e1fa1161a2432a0820a14953c87124407417c741a","perf-guide/src/bound_checks.md":"5e4991ff58a183ef0cd9fdc1feb4cd12d083b44bdf87393bbb0927808ef3ce7d","perf-guide/src/float-math/approx.md":"8c09032fa2d795a0c5db1775826c850d28eb2627846d0965c60ee72de63735ad","perf-guide/src/float-math/fma.md":"311076ba4b741d604a82e74b83a8d7e8c318fcbd7f64c4392d1cf5af95c60243","perf-guide/src/float-math/fp.md":"04153e775ab6e4f0d7837bcc515230d327b04edfa34c84ce9c9e10ebaeef2be8","perf-guide/src/float-math/svml.md":"0798873b8eedaeda5fed62dc91645b57c20775a02d3cd74d8bd06958f1516506","perf-guide/src/introduction.md":"9f5a19e9e6751f25d2daad39891a0cc600974527ec4c8305843f9618910671bd","perf-guide/src/prof/linux.md":"447731eb5de7d69166728fdbc5ecb0c0c9db678ea493b45a592d67dd002184c0","perf-guide/src/prof/mca.md":"f56d54f3d20e7aa4d32052186e8237b03d65971eb5d112802b442570ff11d344","perf-guide/src/prof/profiling.md":"8a650c0fd6ede0964789bb6577557eeef1d8226a896788602ce61528e260e43c","perf-guide/src/target-feature/attribute.md":"615f88dca0a707b6c416fa605435dd6e1fb5361cc639429cbf68cd87624bd78b","perf-guide/src/target-feature/features.md":"17077760ff24c006b606dd21889c53d87228f4311f3ba3a574f9afdeacd86165","perf-guide/src/target-feature/inlining.md":"7ed1d7068d8173a00d84c16cfe5871cd68b9f04f8d0cca2d01ebc84957ebf2f6","perf-guide/src/target-feature/practice.md":"c4b371842e0086df178488fec97f20def8f0c62ee588bcd25fd948b9b1fa227e","perf-guide/src/target-feature/runtime.md":"835425f5ee597fb3e51d36e725a81ebee29f4561231d19563cd4da81dbb1cfcb","perf-guide/src/target-feature/rustflags.md":"01197acf6f0adec8db32b8591811f69cecb6555a2b05dc5d5ec27d0e3f7b065e","perf-guide/src/vert-hor-ops.md":"c6211c0ee91e60552ec592d89d9d957eedc21dee3cbd89e1ad6765ea06a27471","rust-toolchain":"58bea07cb6d97f9cfcd5c8f98b1feca0fb81cce5b0bf29a8e70ed2641956e9a6","rustfmt.toml":"d99a43f3f8ef9e425cf01c333fba9f0051f888f5d87ab4e8f63c2f7d0fe6620f","src/api.rs":"45508c6c0241519fc01a7f00c9105554c24c312c4e46900ef9c75139ea438305","src/api/bit_manip.rs":"27f3097fc0a11e3c4107049d9779e680dcd67407a066704008a6b9c4fd529e05","src/api/bitmask.rs":"058ebc38a2e0363f07a441d3e9a4775aaec57ccb170a0e5d5efa5dc4743ab07b","src/api/cast.rs":"03b94a3d316ac7b7be7068810044911e965e889a0ace7bae762749ca74a92747","src/api/cast/macros.rs":"b0a14d0c83ad2ebb7a275180f6d9e3f2bc312ba57a7d3d6c39fad4e0f20f9408","src/api/cast/v128.rs":"edd0994efac4379dff26e178423a52dbb3ffeb38b1fc97cae975d744c00b4fb6","src/api/cast/v16.rs":"96bd98c2d21b0663abe6c0ab33005b1fa693f3db7ee6795351391343863484da","src/api/cast/v256.rs":"8c31fe91f5e78ef737dfba6979cc1240210cb094a89d284fe459bf8a991ca24b","src/api/cast/v32.rs":"a99a79dd84d2a5e6adf9db98705675915bd03fd1287d489c7fe38e84d7e4a086","src/api/cast/v512.rs":"c0dd526f41ed7b8a71c3743d91267554ec0a0c75834ccc2e3ecb0ef3004af642","src/api/cast/v64.rs":"6572fdba2a1241a6cd666d3f0cce3306cd2cb7e5e236172e59d5d4351c8a88af","src/api/cmp.rs":"357c3a2a09c6d4611c32dd7fa95be2fae933d513e229026ec9b44451a77b884e","src/api/cmp/eq.rs":"60f70f355bae4cb5b17db53204cacc3890f70670611c17df638d4c04f7cc8075","src/api/cmp/ord.rs":"589f7234761c294fa5df8f525bc4acd5a47cdb602207d524a0d4e19804cd9695","src/api/cmp/partial_eq.rs":"902ccb8aa01fd5738b30ba0b712669c21d4801958907e03bad23432c7dba0198","src/api/cmp/partial_ord.rs":"9db0c37d7434cdfc62d8d66912e972fa3d8c115ab2af051a6f45e414bd3e4f1c","src/api/cmp/vertical.rs":"de3d62f38eba817299aa16f1e1939954c9a447e316509397465c2830852ba053","src/api/default.rs":"67bf21c134127d12a7028c8b88a57f0ceee8ccbd74976da8ca74eb9f16a174d5","src/api/fmt.rs":"67fb804bb86b6cd77cf8cd492b5733ce437071b66fe3297278b8a6552c325dda","src/api/fmt/binary.rs":"02b2b287f7404f8a983813cf70c87108c8da3835578b63ab303116885f609413","src/api/fmt/debug.rs":"56e1c3bdc092747344fffaafff9da7163ee7827857f6fb7cb1c9923eca4f6fa0","src/api/fmt/lower_hex.rs":"558fd592f7f485712fb051509cecc7174a21e6bf62e5ce64766e75afc97bb8e1","src/api/fmt/octal.rs":"3b2e70877a4f368c7704f8e254236c014c365c74d93371c1feb5f030e6c66422","src/api/fmt/upper_hex.rs":"2a442f666bc80e22d41f903f881238fe114dd49344c3ed69849250e853cafc5d","src/api/from.rs":"2e599d8329cb05eaf06224cc441355c4b7b51254fc19256619333be8c149d444","src/api/from/from_array.rs":"5d2cc700568376bf6ee1fe5e406da3bc2d488ff155644bf73d06a1349b73fc53","src/api/from/from_vector.rs":"9764371aa9e6005aace74dea14f59e5611a095b7cf42707940924749282c52f0","src/api/hash.rs":"5076ece87969592c876486f5b1ea8affbeaec379d1a14a30859e0aa5592019de","src/api/into_bits.rs":"8f8011627250e23e66b5c0ca641afb079d8232674bb1354140b536bdbea63e55","src/api/into_bits/arch_specific.rs":"e7445021f3908326bfee758835e5fc5ad56aa1baa77fc1c58abe4350c66c670a","src/api/into_bits/macros.rs":"bb4fe99be2af6a21d805efab44c8e4e61a7b2adb42a65504a0cf26d13efdadcd","src/api/into_bits/v128.rs":"145a44922b09a5ca5b62d88a461d327d399a997a15db4b11d7b17e554a9fa4c0","src/api/into_bits/v16.rs":"f4f4f61ba88aa51b158ec56ca3dce234349aea0daf2b3029a14ab5125d1e41e5","src/api/into_bits/v256.rs":"8cea9c5d9809f11323cb7cdc53b83df593fd17caf926251e412ae9777bed547f","src/api/into_bits/v32.rs":"905ba683d342fa32f4202b80bb46530807bd0a5b588f6c2e8c9f475223c47775","src/api/into_bits/v512.rs":"e25afa1fbf088a5d58e7d75d197b6cd4c56637ea28542ba18e46a451f29d04e7","src/api/into_bits/v64.rs":"d6238022ccff7b92e55b3f6017fc269acb6f36330a6d7e8fb389853a0f1b6478","src/api/math.rs":"8b2a2fc651917a850539f993aa0b9e5bf4da67b11685285b8de8cdca311719ec","src/api/math/float.rs":"969a75cdb3743c5ac7cde653d1a7f659ac65f2a5afb004c9928a7b34b79c3e39","src/api/math/float/abs.rs":"5b6b2701e2e11135b7ce58a05052ea8120e10e4702c95d046b9d21b827b26bf8","src/api/math/float/consts.rs":"6302c9261da4291d144d5bb53493cdd073498feb40955fb6860ea3c4d06c978a","src/api/math/float/cos.rs":"4c2dd7173728ef189314f1576c9486e03be21b7da98843b2f9011282a7979e31","src/api/math/float/exp.rs":"7c6d5f1e304f498a01cfa23b92380c815d7da0ad94eae3483783bc377d287eef","src/api/math/float/ln.rs":"54c7583f3df793b39ff57534fade27b41bb992439e5dc178252f5ca3190a3e54","src/api/math/float/mul_add.rs":"62cac77660d20159276d4c9ef066eb90c81cbddb808e8e157182c607625ad2eb","src/api/math/float/mul_adde.rs":"bae056ee9f3a70df39ec3c3b2f6437c65303888a7b843ef1a5bcf1f5aca0e602","src/api/math/float/powf.rs":"9ddb938984b36d39d82a82f862f80df8f7fb013f1d222d45698d41d88472f568","src/api/math/float/recpre.rs":"589225794ff1dbf31158dff660e6d4509ecc8befbb57c633900dea5ac0b840d6","src/api/math/float/rsqrte.rs":"a32abdcc318d7ccc8448231f54d75b884b7cbeb03a7d595713ab6243036f4dbf","src/api/math/float/sin.rs":"cbd3622b7df74f19691743001c8cf747a201f8977ad90542fee915f37dcd1e49","src/api/math/float/sqrt.rs":"0c66d5d63fb08e4d99c6b82a8828e41173aff1ac9fa1a2764a11fac217ccf2ac","src/api/math/float/sqrte.rs":"731e1c9f321b662accdd27dacb3aac2e8043b7aecb2f2161dde733bd9f025362","src/api/math/float/tanh.rs":"e57940434cc05981b086f0f3b92d32caceb38d67b90aebce5d3ed8e07c80538f","src/api/minimal.rs":"1f22bcc528555444e76de569ec0ae2029b9ae9d04805efeafa93369c8098036b","src/api/minimal/iuf.rs":"819cff26d3e196f807645bcc1d79eb27d9f175edb89910f2274d52a1e913cd11","src/api/minimal/mask.rs":"0cae10ae1fc65f5070e686c0c79bfba27b86b33d6c399367bd4848fb367dcec4","src/api/minimal/ptr.rs":"f74d7a4925d7209faebc26ea8315259cb2c08ec65789a70869e595649a9bc39a","src/api/ops.rs":"3e273b277a0f3019d42c3c59ca94a5afd4885d5ae6d2182e5089bbeec9de42ee","src/api/ops/scalar_arithmetic.rs":"d2d5ad897a59dd0787544f927e0e7ca4072c3e58b0f4a2324083312b0d5a21d7","src/api/ops/scalar_bitwise.rs":"482204e459ca6be79568e1c9f70adbe2d2151412ddf122fb2161be8ebb51c40c","src/api/ops/scalar_mask_bitwise.rs":"c250f52042e37b22d57256c80d4604104cfd2fbe2a2e127c676267270ca5d350","src/api/ops/scalar_shifts.rs":"c4773d435c3f9da4454327e6fbb2b5b41a1c0ebb1cca7372e69dc7a344a1b6e4","src/api/ops/vector_arithmetic.rs":"ddca15d09ddeef502c2ed66117a62300ca65d87e959e8b622d767bdf1c307910","src/api/ops/vector_bitwise.rs":"b3968f7005b649edcc22a54e2379b14d5ee19045f2e784029805781ae043b5ee","src/api/ops/vector_float_min_max.rs":"76bf8cb607e2c442923c1da1061a6b80d742d607408033c2a3761161114cf2a0","src/api/ops/vector_int_min_max.rs":"a378789c6ff9b32a51fbd0a97ffd36ed102cd1fe6a067d2b02017c1df342def6","src/api/ops/vector_mask_bitwise.rs":"5052d18517d765415d40327e6e8e55a312daaca0a5e2aec959bfa54b1675f9c8","src/api/ops/vector_neg.rs":"5c62f6b0221983cdbd23cd0a3af3672e6ba1255f0dfe8b19aae6fbd6503e231b","src/api/ops/vector_rotates.rs":"6c3f761d9d551f6365a8a95539ceace4b1a02e0b12d144f34ed68db94e88cff4","src/api/ops/vector_shifts.rs":"e510be14127c0ffd58a2573a39701da3557d66bedec09837ac8bbd44d579da00","src/api/ptr.rs":"8a793251bed6130dcfb2f1519ceaa18b751bbb15875928d0fb6deb5a5e07523a","src/api/ptr/gather_scatter.rs":"3d614f9d5b4ca201a9f7e46af4405e1d2c28ecee1620297c23b52e37b92cc0ea","src/api/reductions.rs":"ae5baca81352ecd44526d6c30c0a1feeda475ec73ddd3c3ec6b14e944e5448ee","src/api/reductions/bitwise.rs":"8bf910ae226188bd15fc7e125f058cd2566b6186fcd0cd8fd020f352c39ce139","src/api/reductions/float_arithmetic.rs":"47a5679896db2cbb56c31372fe42143da015b6beae7db5d2f3a0309ddf427ae1","src/api/reductions/integer_arithmetic.rs":"c2df3cf7493cca4174f2c65aea422a3d20d8a23af03f8d57cef72c19fee8f20d","src/api/reductions/mask.rs":"db83327a950e33a317f37fd33ca4e20c347fb415975ec024f3e23da8509425af","src/api/reductions/min_max.rs":"6af8c9aa45c69961b1b6fc205395f4767d4421869fb105fb3d563c5605fc13cd","src/api/select.rs":"6b07e7e8026df561f7307221a896f0fbb272536f41b9109040ac094c24c69331","src/api/shuffle.rs":"be7faff9b59654926df12897b2f98a4baa7d6acf2af1aaf93d388ba6e96f83ec","src/api/shuffle1_dyn.rs":"bfea5a91905b31444e9ef7ca6eddb7a9606b7e22d3f71bb842eb2795a0346620","src/api/slice.rs":"ee87484e8af329547b9a5d4f2a69e8bed6ea10bbd96270d706083843d4eea2ac","src/api/slice/from_slice.rs":"3735363000737104a8fc5f394ad8c31ec14e885952bd57647dd2a84001aee0a6","src/api/slice/write_to_slice.rs":"79d09c64d00724783c77c42e4583eeec97b18db94cf2ae146b564c3f85cfefd6","src/api/swap_bytes.rs":"05b4262eaade2f63e6cd3b780c19a03aecd2459d4cc4360051fc088887179a6e","src/codegen.rs":"db4f232fb9f5728db310b87dc8c4733be48afacab1053798c06106bef9a42b05","src/codegen/bit_manip.rs":"525ea6ff7ad1e043b6f6136992166f1803ed5563b7f6fc292c1c40257d20e264","src/codegen/llvm.rs":"12e748b4928c3be6cc12b4165c3041a3d0efccf6195338ecd3d88b8fdb0bbcc7","src/codegen/math.rs":"dfcf02ad34e2fdfe22c3f1cc2822001cc895e65031b4d06e585e5047839febb7","src/codegen/math/float.rs":"b2f31f479c5c70a6ff9ad33872c1e65506f72882b77a2e3f9e71c42e92af9355","src/codegen/math/float/abs.rs":"d5aaadcf540bdb9b4264dca6471a255fd7bf509e763bef0239c0144a68466fea","src/codegen/math/float/cos.rs":"17f28d2900c852dca221fa9c92a9cd5fe7fd2df8d427bbc60216c749b2be013d","src/codegen/math/float/cos_pi.rs":"dbaf9f443f9846a491d4ec52210a7b5835dd593b03366e3135b05c37d70f9d6c","src/codegen/math/float/exp.rs":"d300058a4bcc7ae7976f216f81902cd73a9e603ad63880dff3bbc866c27a9f37","src/codegen/math/float/ln.rs":"c851e211e43f8256093ba75b03ae0c307c9962ee66d94f09b4dd80068190cbdf","src/codegen/math/float/macros.rs":"fc9924869ed85e4795983af228cacf23158f4f35919adce16c920ad4a3f0a009","src/codegen/math/float/mul_add.rs":"041a5b69d5991d93ef795351b17560c10faf80b78fd26ad7df42a239b32cf9de","src/codegen/math/float/mul_adde.rs":"d71d5f0f3333b62a7439b823cb7adf5340ea1555ce820fb4a3f4cb922f73f5f5","src/codegen/math/float/powf.rs":"9742c3877f1a5509ca5c9492a40884b6579ba6dd11c26b7112e63f70666b395d","src/codegen/math/float/sin.rs":"0e9868d35531566509f3a01d85d5253045eb4afa8525d8407dcc1f5f33c56036","src/codegen/math/float/sin_cos_pi.rs":"8e6b6142d7dd240cdb36669722e82ab9810a2261e86e659f7d97a942ad8b1258","src/codegen/math/float/sin_pi.rs":"bb6d39db8f921e03a301fc5206ac1a61a97def8a2cb83b87ccf189f3fc48d548","src/codegen/math/float/sqrt.rs":"e6ebb0c5f428efad1f672b9a8fe4e58534dbf1ea5a8fe092ce5ce76b52fe89cb","src/codegen/math/float/sqrte.rs":"23acfaea38d0e081a6d9021c1094e813d0cfd12c58c1eca9662aade5e625d51c","src/codegen/math/float/tanh.rs":"816fd107f134920fb1a21cd792029d4b89306f6cf16d6f030cc1136823b033e7","src/codegen/pointer_sized_int.rs":"6ca13c214b6cf7e0929dbe18e96a16fc0bb7d8799608df29c4c8115490f99e01","src/codegen/reductions.rs":"8eb18ebac76985d2aa30262a2edd8cb004230b511a765d657525f677a585c12c","src/codegen/reductions/mask.rs":"e67f35a1f4d156a4894a2d6ea5a935b4d898cf70eefb2715f5c1cc165e776c11","src/codegen/reductions/mask/aarch64.rs":"84b101c17cad1ede4eb6d38cada0ac7da239dba8cea3badd3829b967e558431f","src/codegen/reductions/mask/arm.rs":"aaa07129bd078ae7e677cf8b8e67ec9f30536606a0c7ed1baaa18fd1793bb218","src/codegen/reductions/mask/fallback.rs":"3eb9319d2c7cf19216b607b8459612c4e027b643cf11b036937d36896bf76786","src/codegen/reductions/mask/fallback_impl.rs":"76547f396e55ef403327c77c314cf8db8c7a5c9b9819bfb925abeacf130249e5","src/codegen/reductions/mask/x86.rs":"36dcd8af4ab99730a078ed113d3955f74eb1a2876e2e6d9f224e0ff462c216d1","src/codegen/reductions/mask/x86/avx.rs":"3a40868b38c86e35aefb96d7578de6322efe89d8135e0366359b54ddd06f861a","src/codegen/reductions/mask/x86/avx2.rs":"677aed3f056285285daa3adff8bc65e739630b4424defa6d9665e160f027507e","src/codegen/reductions/mask/x86/sse.rs":"8522f6ed03f6c32dd577d4298df477c08aeaaa38563706f29096e1911ed731f2","src/codegen/reductions/mask/x86/sse2.rs":"54ec56e49b0c6841eccb719e4f310d65fe767c04136b2ec20bd8b9d7d9897b9e","src/codegen/shuffle.rs":"1ec2930f4e1acc43ac30b518af298d466a79e9e75734a51c380b7810efd1a27f","src/codegen/shuffle1_dyn.rs":"3f13ca1597378758d05106bf5ff3715eee531f3cb6d88f48b9182bd6c9386b51","src/codegen/swap_bytes.rs":"c67c86e91ca3fc77539e0efcea081a3c62548cccf503963ae408f2e86f4e6a21","src/codegen/v128.rs":"94226b31ec403d18d9d2fe06713f147c9c79e9b5f9105089088266313f843185","src/codegen/v16.rs":"ddec4ffb66b6f7aaffb9a1780c5ddba82557abd74f45073d335047e04cf74924","src/codegen/v256.rs":"6b63917f0444118d6b1595bff2045e59b97c4d24012bd575f69f1f0efc5a0241","src/codegen/v32.rs":"3477b3c5540aed86e61e2f5807dd31db947413cec9181c587d93ed6ec74f0eba","src/codegen/v512.rs":"5854f99d3aabc4cd42b28a20d9ce447756dc2ba024a409a69b6a8ae1f1842fc5","src/codegen/v64.rs":"e9e89caebfe63d10c0cbca61e4dfdba3b7e02ee0989170f80beed23237ddd950","src/codegen/vPtr.rs":"f0753b405cdc865bdf8e82c6505f299ea1f96136239ebbaf7f9ce93d310764b8","src/codegen/vSize.rs":"c89f5fdeb28ac4c8272ed1816fce03d9d95308cc32bb2533bd8b20cd5ac102ac","src/lib.rs":"05048c6a85ec65cf902d9dd8f757a3f76392b703a6794ea71f0d41500a89f78f","src/masks.rs":"70fc0abe4c2907ce2a491c574e1cfb9f3423385da2e1a923a48c9c13f8ba6ed8","src/sealed.rs":"ae7fdeaf5d84cd7710ed730ca72ca7eaba93df6cb0acb183e5c0a7327acf197f","src/testing.rs":"896669c08d8c801448a4d2fadc9d633eda0fbe879d229997e2a182e31278e469","src/testing/macros.rs":"403bbc5ecb7c786fe36156df302d0c07a8122408dbb15f7474d7682224ba1106","src/testing/utils.rs":"41912a92266dfe884647fc035e4242fd746100df8e839808ae0397af3759a3c8","src/v128.rs":"16cf9a8e7156b899ee9b9cd3f2dba9d13ec63289bea8c3ee9ae2e43ad9510288","src/v16.rs":"cb6465cf1e00bf530183af1819b9fe3d7eec978f8765d5e85d9b58a39a4b4045","src/v256.rs":"fe235017da18c7f3c361831c60e3173ad304d8ea1e95d64ebebc79da2d708511","src/v32.rs":"145d347855bac59b2de6508f9e594654e6c330423af9edc0e2ac8f4d1abdf45e","src/v512.rs":"f372f277f3e62eb5c945bb1c460333fdb17b6974fcc876633788ff53bded9599","src/v64.rs":"0b8079881b71575e3414be0b7f8f7eaba65281ba6732f2b2f61f73e95b6f48f7","src/vPtr.rs":"8b3e433d487180bb4304ff71245ecad90f0010f43e139a72027b672abe58facc","src/vSize.rs":"eda5aa020706cbf94d15bada41a0c2a35fc8f3f37cb7c2cd6f34d201399a495e","tests/endianness.rs":"5147f86d224c4c540b772033da2f994cad9bc9c035f38ec21e23bc4e55f8a759"},"package":"1f9f08af0c877571712e2e3e686ad79efad9657dbf0f7c3c8ba943ff6c38932d"} \ No newline at end of file
diff --git a/vendor/packed_simd_2/Cargo.toml b/vendor/packed_simd/Cargo.toml
index 86239f96c..77fc096b0 100644
--- a/vendor/packed_simd_2/Cargo.toml
+++ b/vendor/packed_simd/Cargo.toml
@@ -11,8 +11,8 @@
[package]
edition = "2018"
-name = "packed_simd_2"
-version = "0.3.8"
+name = "packed_simd"
+version = "0.3.9"
build = "build.rs"
description = "Portable Packed SIMD vectors"
homepage = "https://github.com/rust-lang/packed_simd"
@@ -32,6 +32,13 @@ categories = [
license = "MIT OR Apache-2.0"
repository = "https://github.com/rust-lang/packed_simd"
+[package.metadata.docs.rs]
+features = ["into_bits"]
+rustdoc-args = [
+ "--cfg",
+ "doc_cfg",
+]
+
[dependencies.cfg-if]
version = "1.0.0"
@@ -39,15 +46,17 @@ version = "1.0.0"
version = "0.1.5"
optional = true
-[dependencies.libm]
-version = "0.1.4"
+[dependencies.num-traits]
+version = "0.2.14"
+features = ["libm"]
+default-features = false
[dev-dependencies.arrayvec]
version = "^0.5"
default-features = false
[dev-dependencies.paste]
-version = "^0.1.3"
+version = "^1"
[features]
default = []
@@ -59,16 +68,10 @@ version = "0.1.2"
optional = true
[target.wasm32-unknown-unknown.dev-dependencies.wasm-bindgen]
-version = "=0.2.73"
+version = "=0.2.87"
[target.wasm32-unknown-unknown.dev-dependencies.wasm-bindgen-test]
-version = "=0.3.23"
-
-[badges.appveyor]
-repository = "rust-lang/packed_simd"
-
-[badges.codecov]
-repository = "rust-lang/packed_simd"
+version = "=0.3.37"
[badges.is-it-maintained-issue-resolution]
repository = "rust-lang/packed_simd"
@@ -78,6 +81,3 @@ repository = "rust-lang/packed_simd"
[badges.maintenance]
status = "experimental"
-
-[badges.travis-ci]
-repository = "rust-lang/packed_simd"
diff --git a/vendor/packed_simd_2/LICENSE-APACHE b/vendor/packed_simd/LICENSE-APACHE
index 16fe87b06..16fe87b06 100644
--- a/vendor/packed_simd_2/LICENSE-APACHE
+++ b/vendor/packed_simd/LICENSE-APACHE
diff --git a/vendor/packed_simd_2/LICENSE-MIT b/vendor/packed_simd/LICENSE-MIT
index 39d4bdb5a..39d4bdb5a 100644
--- a/vendor/packed_simd_2/LICENSE-MIT
+++ b/vendor/packed_simd/LICENSE-MIT
diff --git a/vendor/packed_simd_2/README.md b/vendor/packed_simd/README.md
index eb3101c33..59db13fe4 100644
--- a/vendor/packed_simd_2/README.md
+++ b/vendor/packed_simd/README.md
@@ -1,24 +1,11 @@
-# The Crates.io Version Can No Longer Be Updated!
-
-The original maintainer is out of contact, and the new maintainers (the Portable SIMD Project Group) do not have the appropriate crates.io permissions to issue updates.
-
-We are aware that the version available on crates.io is currently broken, and will not build.
-
-If you need to continue to use the crate, we have published a "next version" under an alternative name.
-
-Adjust your `[dependencies]` section of `Cargo.toml` to be the following:
-```toml
-packed_simd = { version = "0.3.8", package = "packed_simd_2" }
-```
-
# `Simd<[T; N]>`
## Implementation of [Rust RFC #2366: `std::simd`][rfc2366]
-[![Travis-CI Status]][travis] <!-- [![Appveyor Status]][appveyor] --> [![Latest Version]][crates.io] [![docs]][master_docs]
+[![Latest Version]][crates.io] [![docs]][master_docs]
**WARNING**: this crate only supports the most recent nightly Rust toolchain
-and will be superseded by [stdsimd](https://github.com/rust-lang/stdsimd).
+and will be superseded by [`#![feature(portable_simd)]`](https://github.com/rust-lang/portable-simd).
## Documentation
@@ -84,30 +71,25 @@ whether the test suite passes for a given target.
| `i586-unknown-linux-gnu` | ✓ | ✗ |
| `i686-unknown-linux-gnu` | ✓ | ✗ |
| `x86_64-unknown-linux-gnu` | ✓ | ✓ |
-| `arm-unknown-linux-gnueabi` | ✗ | ✗ |
| `arm-unknown-linux-gnueabihf` | ✓ | ✓ |
| `armv7-unknown-linux-gnueabi` | ✓ | ✓ |
| `aarch64-unknown-linux-gnu` | ✓ | ✓ |
-| `mips-unknown-linux-gnu` | ✓ | ✗ |
-| `mipsel-unknown-linux-musl` | ✓ | ✗ |
-| `mips64-unknown-linux-gnuabi64` | ✓ | ✗ |
-| `mips64el-unknown-linux-gnuabi64` | ✓ | ✗ |
-| `powerpc-unknown-linux-gnu` | ✗ | ✗ |
-| `powerpc64-unknown-linux-gnu` | ✗ | ✗ |
+| `powerpc-unknown-linux-gnu` | ✓ | ✗ |
+| `powerpc64-unknown-linux-gnu` | ✓ | ✗ |
| `powerpc64le-unknown-linux-gnu` | ✓ | ✓ |
-| `s390x-unknown-linux-gnu` | ✗ | ✗ |
+| `s390x-unknown-linux-gnu` | ✓ | ✗ |
| `sparc64-unknown-linux-gnu` | ✓ | ✗ |
| `thumbv7neon-unknown-linux-gnueabihf` | ✓ | ✓ |
| **MacOSX** | **build** | **run** |
| `x86_64-apple-darwin` | ✓ | ✓ |
| **Android** | **build** | **run** |
| `x86_64-linux-android` | ✓ | ✓ |
-| `arm-linux-androideabi` | ✓ | ✓ |
-| `aarch64-linux-android` | ✓ | ✓ |
-| `thumbv7neon-linux-androideabi` | ✗ | ✗ |
+| `armv7-linux-androideabi` | ✓ | ✗ |
+| `aarch64-linux-android` | ✓ | ✗ |
+| `thumbv7neon-linux-androideabi` | ✓ | ✗ |
| **iOS** | **build** | **run** |
-| `x86_64-apple-ios` | ✓ | ✗ |
-| `aarch64-apple-ios` | ✓ | ✗ |
+| `x86_64-apple-ios` | ✗ | ✗ |
+| `aarch64-apple-ios` | ✗ | ✗ |
## Machine code verification
@@ -146,11 +128,11 @@ dual licensed as above, without any additional terms or conditions.
[Travis-CI Status]: https://travis-ci.com/rust-lang/packed_simd.svg?branch=master
[appveyor]: https://ci.appveyor.com/project/gnzlbg/packed-simd
[Appveyor Status]: https://ci.appveyor.com/api/projects/status/hd7v9dvr442hgdix?svg=true
-[Latest Version]: https://img.shields.io/crates/v/packed_simd_2.svg
-[crates.io]: https://crates.io/crates/packed_simd_2
-[docs]: https://docs.rs/packed_simd_2/badge.svg
-[docs.rs]: https://docs.rs/packed_simd_2
-[master_docs]: https://rust-lang-nursery.github.io/packed_simd/packed_simd_2/
+[Latest Version]: https://img.shields.io/crates/v/packed_simd.svg
+[crates.io]: https://crates.io/crates/packed_simd
+[docs]: https://docs.rs/packed_simd/badge.svg
+[docs.rs]: https://docs.rs/packed_simd
+[master_docs]: https://rust-lang-nursery.github.io/packed_simd/packed_simd/
[perf_guide]: https://rust-lang-nursery.github.io/packed_simd/perf-guide/
[rfc2366]: https://github.com/rust-lang/rfcs/pull/2366
[ISPC]: https://ispc.github.io/
diff --git a/vendor/packed_simd_2/bors.toml b/vendor/packed_simd/bors.toml
index 6d302dc85..6d302dc85 100644
--- a/vendor/packed_simd_2/bors.toml
+++ b/vendor/packed_simd/bors.toml
diff --git a/vendor/packed_simd_2/build.rs b/vendor/packed_simd/build.rs
index e87298a2d..e87298a2d 100644
--- a/vendor/packed_simd_2/build.rs
+++ b/vendor/packed_simd/build.rs
diff --git a/vendor/packed_simd_2/ci/all.sh b/vendor/packed_simd/ci/all.sh
index 55a1fa2ef..55a1fa2ef 100755
--- a/vendor/packed_simd_2/ci/all.sh
+++ b/vendor/packed_simd/ci/all.sh
diff --git a/vendor/packed_simd/ci/android-install-ndk.sh b/vendor/packed_simd/ci/android-install-ndk.sh
new file mode 100644
index 000000000..537085393
--- /dev/null
+++ b/vendor/packed_simd/ci/android-install-ndk.sh
@@ -0,0 +1,21 @@
+#!/usr/bin/env sh
+# Copyright 2016 The Rust Project Developers. See the COPYRIGHT
+# file at the top-level directory of this distribution and at
+# http://rust-lang.org/COPYRIGHT.
+#
+# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+# option. This file may not be copied, modified, or distributed
+# except according to those terms.
+
+set -ex
+
+ANDROID_NDK_URL=https://dl.google.com/android/repository
+ANDROID_NDK_ARCHIVE=android-ndk-r25b-linux.zip
+
+curl -fO "$ANDROID_NDK_URL/$ANDROID_NDK_ARCHIVE"
+unzip -q $ANDROID_NDK_ARCHIVE
+rm $ANDROID_NDK_ARCHIVE
+mv android-ndk-* ndk
+rm -rf android-ndk-*
diff --git a/vendor/packed_simd_2/ci/android-install-sdk.sh b/vendor/packed_simd/ci/android-install-sdk.sh
index 6b5ac09ab..6b5ac09ab 100644
--- a/vendor/packed_simd_2/ci/android-install-sdk.sh
+++ b/vendor/packed_simd/ci/android-install-sdk.sh
diff --git a/vendor/packed_simd_2/ci/android-sysimage.sh b/vendor/packed_simd/ci/android-sysimage.sh
index 9eabd7c8d..9eabd7c8d 100644
--- a/vendor/packed_simd_2/ci/android-sysimage.sh
+++ b/vendor/packed_simd/ci/android-sysimage.sh
diff --git a/vendor/packed_simd_2/ci/benchmark.sh b/vendor/packed_simd/ci/benchmark.sh
index 3635b9e37..3635b9e37 100755
--- a/vendor/packed_simd_2/ci/benchmark.sh
+++ b/vendor/packed_simd/ci/benchmark.sh
diff --git a/vendor/packed_simd_2/ci/deploy_and_run_on_ios_simulator.rs b/vendor/packed_simd/ci/deploy_and_run_on_ios_simulator.rs
index c0fe52c35..c0fe52c35 100644
--- a/vendor/packed_simd_2/ci/deploy_and_run_on_ios_simulator.rs
+++ b/vendor/packed_simd/ci/deploy_and_run_on_ios_simulator.rs
diff --git a/vendor/packed_simd_2/ci/docker/aarch64-linux-android/Dockerfile b/vendor/packed_simd/ci/docker/aarch64-linux-android/Dockerfile
index 27bde89c5..27bde89c5 100644
--- a/vendor/packed_simd_2/ci/docker/aarch64-linux-android/Dockerfile
+++ b/vendor/packed_simd/ci/docker/aarch64-linux-android/Dockerfile
diff --git a/vendor/packed_simd_2/ci/docker/aarch64-unknown-linux-gnu/Dockerfile b/vendor/packed_simd/ci/docker/aarch64-unknown-linux-gnu/Dockerfile
index 41ff4729a..41ff4729a 100644
--- a/vendor/packed_simd_2/ci/docker/aarch64-unknown-linux-gnu/Dockerfile
+++ b/vendor/packed_simd/ci/docker/aarch64-unknown-linux-gnu/Dockerfile
diff --git a/vendor/packed_simd_2/ci/docker/arm-unknown-linux-gnueabi/Dockerfile b/vendor/packed_simd/ci/docker/arm-unknown-linux-gnueabi/Dockerfile
index e1c591dd9..e1c591dd9 100644
--- a/vendor/packed_simd_2/ci/docker/arm-unknown-linux-gnueabi/Dockerfile
+++ b/vendor/packed_simd/ci/docker/arm-unknown-linux-gnueabi/Dockerfile
diff --git a/vendor/packed_simd_2/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile b/vendor/packed_simd/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile
index 757b79e7e..757b79e7e 100644
--- a/vendor/packed_simd_2/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile
+++ b/vendor/packed_simd/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile
diff --git a/vendor/packed_simd_2/ci/docker/arm-linux-androideabi/Dockerfile b/vendor/packed_simd/ci/docker/armv7-linux-androideabi/Dockerfile
index 995a9e30e..995a9e30e 100644
--- a/vendor/packed_simd_2/ci/docker/arm-linux-androideabi/Dockerfile
+++ b/vendor/packed_simd/ci/docker/armv7-linux-androideabi/Dockerfile
diff --git a/vendor/packed_simd_2/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile b/vendor/packed_simd/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile
index 253906293..253906293 100644
--- a/vendor/packed_simd_2/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile
+++ b/vendor/packed_simd/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile
diff --git a/vendor/packed_simd_2/ci/docker/i586-unknown-linux-gnu/Dockerfile b/vendor/packed_simd/ci/docker/i586-unknown-linux-gnu/Dockerfile
index 01093698f..01093698f 100644
--- a/vendor/packed_simd_2/ci/docker/i586-unknown-linux-gnu/Dockerfile
+++ b/vendor/packed_simd/ci/docker/i586-unknown-linux-gnu/Dockerfile
diff --git a/vendor/packed_simd_2/ci/docker/i686-unknown-linux-gnu/Dockerfile b/vendor/packed_simd/ci/docker/i686-unknown-linux-gnu/Dockerfile
index 01093698f..01093698f 100644
--- a/vendor/packed_simd_2/ci/docker/i686-unknown-linux-gnu/Dockerfile
+++ b/vendor/packed_simd/ci/docker/i686-unknown-linux-gnu/Dockerfile
diff --git a/vendor/packed_simd_2/ci/docker/mips-unknown-linux-gnu/Dockerfile b/vendor/packed_simd/ci/docker/mips-unknown-linux-gnu/Dockerfile
index 3bd471e87..3bd471e87 100644
--- a/vendor/packed_simd_2/ci/docker/mips-unknown-linux-gnu/Dockerfile
+++ b/vendor/packed_simd/ci/docker/mips-unknown-linux-gnu/Dockerfile
diff --git a/vendor/packed_simd_2/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile b/vendor/packed_simd/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile
index f26f1f38e..f26f1f38e 100644
--- a/vendor/packed_simd_2/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile
+++ b/vendor/packed_simd/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile
diff --git a/vendor/packed_simd_2/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile b/vendor/packed_simd/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile
index 7d9f0bd99..7d9f0bd99 100644
--- a/vendor/packed_simd_2/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile
+++ b/vendor/packed_simd/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile
diff --git a/vendor/packed_simd_2/ci/docker/mipsel-unknown-linux-musl/Dockerfile b/vendor/packed_simd/ci/docker/mipsel-unknown-linux-musl/Dockerfile
index 7488662ef..7488662ef 100644
--- a/vendor/packed_simd_2/ci/docker/mipsel-unknown-linux-musl/Dockerfile
+++ b/vendor/packed_simd/ci/docker/mipsel-unknown-linux-musl/Dockerfile
diff --git a/vendor/packed_simd_2/ci/docker/powerpc-unknown-linux-gnu/Dockerfile b/vendor/packed_simd/ci/docker/powerpc-unknown-linux-gnu/Dockerfile
index 80cfee8ab..15ba58e60 100644
--- a/vendor/packed_simd_2/ci/docker/powerpc-unknown-linux-gnu/Dockerfile
+++ b/vendor/packed_simd/ci/docker/powerpc-unknown-linux-gnu/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:18.04
+FROM ubuntu:22.04
RUN apt-get update && apt-get install -y --no-install-recommends \
gcc libc6-dev qemu-user ca-certificates \
diff --git a/vendor/packed_simd_2/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile b/vendor/packed_simd/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile
index 74031a2a3..21c296dc4 100644
--- a/vendor/packed_simd_2/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile
+++ b/vendor/packed_simd/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:18.04
+FROM ubuntu:22.04
RUN apt-get update && apt-get install -y --no-install-recommends \
gcc \
diff --git a/vendor/packed_simd_2/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile b/vendor/packed_simd/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile
index 471a7d965..8034145fc 100644
--- a/vendor/packed_simd_2/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile
+++ b/vendor/packed_simd/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:18.04
+FROM ubuntu:22.04
RUN apt-get update && apt-get install -y --no-install-recommends \
gcc libc6-dev qemu-user ca-certificates \
diff --git a/vendor/packed_simd_2/ci/docker/s390x-unknown-linux-gnu/Dockerfile b/vendor/packed_simd/ci/docker/s390x-unknown-linux-gnu/Dockerfile
index c645b0bcc..e785ca370 100644
--- a/vendor/packed_simd_2/ci/docker/s390x-unknown-linux-gnu/Dockerfile
+++ b/vendor/packed_simd/ci/docker/s390x-unknown-linux-gnu/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:18.10
+FROM ubuntu:22.04
RUN apt-get update && \
apt-get install -y --no-install-recommends \
@@ -17,4 +17,4 @@ ENV CARGO_TARGET_S390X_UNKNOWN_LINUX_GNU_LINKER=s390x-linux-gnu-gcc \
CARGO_TARGET_S390X_UNKNOWN_LINUX_GNU_RUNNER="qemu-s390x -L /usr/s390x-linux-gnu" \
CC_s390x_unknown_linux_gnu=s390x-linux-gnu-gcc \
CXX_s390x_unknown_linux_gnu=s390x-linux-gnu-g++ \
- OBJDUMP=s390x-linux-gnu-objdump \ No newline at end of file
+ OBJDUMP=s390x-linux-gnu-objdump
diff --git a/vendor/packed_simd_2/ci/docker/sparc64-unknown-linux-gnu/Dockerfile b/vendor/packed_simd/ci/docker/sparc64-unknown-linux-gnu/Dockerfile
index fe12af14d..c35f4d8f3 100644
--- a/vendor/packed_simd_2/ci/docker/sparc64-unknown-linux-gnu/Dockerfile
+++ b/vendor/packed_simd/ci/docker/sparc64-unknown-linux-gnu/Dockerfile
@@ -1,4 +1,4 @@
-FROM debian:stretch
+FROM debian:bookworm
RUN apt-get update && apt-get install -y --no-install-recommends \
curl ca-certificates \
@@ -15,4 +15,4 @@ COPY test-runner-linux /
ENV CARGO_TARGET_SPARC64_UNKNOWN_LINUX_GNU_LINKER=sparc64-linux-gnu-gcc \
CARGO_TARGET_SPARC64_UNKNOWN_LINUX_GNU_RUNNER="/test-runner-linux sparc64" \
CC_sparc64_unknown_linux_gnu=sparc64-linux-gnu-gcc \
- PATH=$PATH:/rust/bin \ No newline at end of file
+ PATH=$PATH:/rust/bin
diff --git a/vendor/packed_simd_2/ci/docker/thumbv7neon-linux-androideabi/Dockerfile b/vendor/packed_simd/ci/docker/thumbv7neon-linux-androideabi/Dockerfile
index c1da77109..c1da77109 100644
--- a/vendor/packed_simd_2/ci/docker/thumbv7neon-linux-androideabi/Dockerfile
+++ b/vendor/packed_simd/ci/docker/thumbv7neon-linux-androideabi/Dockerfile
diff --git a/vendor/packed_simd_2/ci/docker/thumbv7neon-unknown-linux-gnueabihf/Dockerfile b/vendor/packed_simd/ci/docker/thumbv7neon-unknown-linux-gnueabihf/Dockerfile
index 588d23c65..588d23c65 100644
--- a/vendor/packed_simd_2/ci/docker/thumbv7neon-unknown-linux-gnueabihf/Dockerfile
+++ b/vendor/packed_simd/ci/docker/thumbv7neon-unknown-linux-gnueabihf/Dockerfile
diff --git a/vendor/packed_simd_2/ci/docker/wasm32-unknown-unknown/Dockerfile b/vendor/packed_simd/ci/docker/wasm32-unknown-unknown/Dockerfile
index bd97170bc..51ee13e6c 100644
--- a/vendor/packed_simd_2/ci/docker/wasm32-unknown-unknown/Dockerfile
+++ b/vendor/packed_simd/ci/docker/wasm32-unknown-unknown/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:18.04
+FROM ubuntu:22.04
RUN apt-get update -y && apt-get install -y --no-install-recommends \
ca-certificates \
@@ -8,7 +8,8 @@ RUN apt-get update -y && apt-get install -y --no-install-recommends \
git \
libc6-dev \
make \
- python \
+ ninja-build \
+ python-is-python3 \
xz-utils
# Install `wasm2wat`
@@ -17,10 +18,10 @@ RUN make -C wabt -j$(nproc)
ENV PATH=$PATH:/wabt/bin
# Install `wasm-bindgen-test-runner`
-RUN curl -L https://github.com/rustwasm/wasm-bindgen/releases/download/0.2.73/wasm-bindgen-0.2.73-x86_64-unknown-linux-musl.tar.gz \
+RUN curl -L https://github.com/rustwasm/wasm-bindgen/releases/download/0.2.87/wasm-bindgen-0.2.87-x86_64-unknown-linux-musl.tar.gz \
| tar xzf -
# Keep in sync with the version on Cargo.toml.
-ENV PATH=$PATH:/wasm-bindgen-0.2.73-x86_64-unknown-linux-musl
+ENV PATH=$PATH:/wasm-bindgen-0.2.87-x86_64-unknown-linux-musl
ENV CARGO_TARGET_WASM32_UNKNOWN_UNKNOWN_RUNNER=wasm-bindgen-test-runner
# Install `node`
diff --git a/vendor/packed_simd_2/ci/docker/x86_64-linux-android/Dockerfile b/vendor/packed_simd/ci/docker/x86_64-linux-android/Dockerfile
index d52dd45b1..785936d34 100644
--- a/vendor/packed_simd_2/ci/docker/x86_64-linux-android/Dockerfile
+++ b/vendor/packed_simd/ci/docker/x86_64-linux-android/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:16.04
+FROM ubuntu:20.04
RUN apt-get update && \
apt-get install -y --no-install-recommends \
@@ -14,16 +14,18 @@ RUN apt-get update && \
WORKDIR /android/
ENV ANDROID_ARCH=x86_64
COPY android-install-ndk.sh /android/
-RUN sh /android/android-install-ndk.sh $ANDROID_ARCH
+RUN sh /android/android-install-ndk.sh
+
+ENV STDARCH_ASSERT_INSTR_LIMIT=30
# We do not run x86_64-linux-android tests on an android emulator.
# See ci/android-sysimage.sh for informations about how tests are run.
COPY android-sysimage.sh /android/
RUN bash /android/android-sysimage.sh x86_64 x86_64-24_r07.zip
-ENV PATH=$PATH:/rust/bin:/android/ndk-$ANDROID_ARCH/bin \
- CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER=x86_64-linux-android-gcc \
- CC_x86_64_linux_android=x86_64-linux-android-gcc \
- CXX_x86_64_linux_android=x86_64-linux-android-g++ \
- OBJDUMP=x86_64-linux-android-objdump \
+ENV PATH=$PATH:/rust/bin:/android/ndk/toolchains/llvm/prebuilt/linux-x86_64/bin \
+ CARGO_TARGET_X86_64_LINUX_ANDROID_LINKER=x86_64-linux-android21-clang \
+ CC_x86_64_linux_android=x86_64-linux-android21-clang \
+ CXX_x86_64_linux_android=x86_64-linux-android21-clang++ \
+ OBJDUMP=llvm-objdump \
HOME=/tmp
diff --git a/vendor/packed_simd_2/ci/docker/x86_64-unknown-linux-gnu-emulated/Dockerfile b/vendor/packed_simd/ci/docker/x86_64-unknown-linux-gnu-emulated/Dockerfile
index a6bbe6653..a6bbe6653 100644
--- a/vendor/packed_simd_2/ci/docker/x86_64-unknown-linux-gnu-emulated/Dockerfile
+++ b/vendor/packed_simd/ci/docker/x86_64-unknown-linux-gnu-emulated/Dockerfile
diff --git a/vendor/packed_simd_2/ci/docker/x86_64-unknown-linux-gnu/Dockerfile b/vendor/packed_simd/ci/docker/x86_64-unknown-linux-gnu/Dockerfile
index ce5bb88e6..ce5bb88e6 100644
--- a/vendor/packed_simd_2/ci/docker/x86_64-unknown-linux-gnu/Dockerfile
+++ b/vendor/packed_simd/ci/docker/x86_64-unknown-linux-gnu/Dockerfile
diff --git a/vendor/packed_simd_2/ci/dox.sh b/vendor/packed_simd/ci/dox.sh
index 560eaadcc..560eaadcc 100755
--- a/vendor/packed_simd_2/ci/dox.sh
+++ b/vendor/packed_simd/ci/dox.sh
diff --git a/vendor/packed_simd_2/ci/linux-s390x.sh b/vendor/packed_simd/ci/linux-s390x.sh
index 972abeec5..972abeec5 100644
--- a/vendor/packed_simd_2/ci/linux-s390x.sh
+++ b/vendor/packed_simd/ci/linux-s390x.sh
diff --git a/vendor/packed_simd_2/ci/linux-sparc64.sh b/vendor/packed_simd/ci/linux-sparc64.sh
index 4452b120e..4452b120e 100644
--- a/vendor/packed_simd_2/ci/linux-sparc64.sh
+++ b/vendor/packed_simd/ci/linux-sparc64.sh
diff --git a/vendor/packed_simd_2/ci/lld-shim.rs b/vendor/packed_simd/ci/lld-shim.rs
index 10263869e..10263869e 100644
--- a/vendor/packed_simd_2/ci/lld-shim.rs
+++ b/vendor/packed_simd/ci/lld-shim.rs
diff --git a/vendor/packed_simd_2/ci/max_line_width.sh b/vendor/packed_simd/ci/max_line_width.sh
index f70639b6f..f70639b6f 100755
--- a/vendor/packed_simd_2/ci/max_line_width.sh
+++ b/vendor/packed_simd/ci/max_line_width.sh
diff --git a/vendor/packed_simd_2/ci/run-docker.sh b/vendor/packed_simd/ci/run-docker.sh
index abdd6852f..abdd6852f 100755
--- a/vendor/packed_simd_2/ci/run-docker.sh
+++ b/vendor/packed_simd/ci/run-docker.sh
diff --git a/vendor/packed_simd_2/ci/run.sh b/vendor/packed_simd/ci/run.sh
index 428a5d890..b1b22ebd7 100755
--- a/vendor/packed_simd_2/ci/run.sh
+++ b/vendor/packed_simd/ci/run.sh
@@ -95,4 +95,5 @@ if [[ "${NOVERIFY}" != "1" ]]; then
cargo_test --release --manifest-path=target/verify/Cargo.toml
fi
-. ci/run_examples.sh
+# FIXME: Figure out which examples take too long to run and ignore or adjust those
+#. ci/run_examples.sh
diff --git a/vendor/packed_simd_2/ci/run_examples.sh b/vendor/packed_simd/ci/run_examples.sh
index 5b26b18af..5b26b18af 100644
--- a/vendor/packed_simd_2/ci/run_examples.sh
+++ b/vendor/packed_simd/ci/run_examples.sh
diff --git a/vendor/packed_simd_2/ci/runtest-android.rs b/vendor/packed_simd/ci/runtest-android.rs
index ed1cd80c8..ed1cd80c8 100644
--- a/vendor/packed_simd_2/ci/runtest-android.rs
+++ b/vendor/packed_simd/ci/runtest-android.rs
diff --git a/vendor/packed_simd_2/ci/setup_benchmarks.sh b/vendor/packed_simd/ci/setup_benchmarks.sh
index cd41a7851..cd41a7851 100755
--- a/vendor/packed_simd_2/ci/setup_benchmarks.sh
+++ b/vendor/packed_simd/ci/setup_benchmarks.sh
diff --git a/vendor/packed_simd_2/ci/test-runner-linux b/vendor/packed_simd/ci/test-runner-linux
index 0654f63bf..0654f63bf 100755
--- a/vendor/packed_simd_2/ci/test-runner-linux
+++ b/vendor/packed_simd/ci/test-runner-linux
diff --git a/vendor/packed_simd_2/contributing.md b/vendor/packed_simd/contributing.md
index 79af8c199..79af8c199 100644
--- a/vendor/packed_simd_2/contributing.md
+++ b/vendor/packed_simd/contributing.md
diff --git a/vendor/packed_simd_2/perf-guide/book.toml b/vendor/packed_simd/perf-guide/book.toml
index 69ba3053c..69ba3053c 100644
--- a/vendor/packed_simd_2/perf-guide/book.toml
+++ b/vendor/packed_simd/perf-guide/book.toml
diff --git a/vendor/packed_simd_2/perf-guide/src/SUMMARY.md b/vendor/packed_simd/perf-guide/src/SUMMARY.md
index 1e7689886..1e7689886 100644
--- a/vendor/packed_simd_2/perf-guide/src/SUMMARY.md
+++ b/vendor/packed_simd/perf-guide/src/SUMMARY.md
diff --git a/vendor/packed_simd_2/perf-guide/src/ascii.css b/vendor/packed_simd/perf-guide/src/ascii.css
index 4c0265119..4c0265119 100644
--- a/vendor/packed_simd_2/perf-guide/src/ascii.css
+++ b/vendor/packed_simd/perf-guide/src/ascii.css
diff --git a/vendor/packed_simd_2/perf-guide/src/bound_checks.md b/vendor/packed_simd/perf-guide/src/bound_checks.md
index 2eeedb5ac..2eeedb5ac 100644
--- a/vendor/packed_simd_2/perf-guide/src/bound_checks.md
+++ b/vendor/packed_simd/perf-guide/src/bound_checks.md
diff --git a/vendor/packed_simd_2/perf-guide/src/float-math/approx.md b/vendor/packed_simd/perf-guide/src/float-math/approx.md
index 2237c67ec..2237c67ec 100644
--- a/vendor/packed_simd_2/perf-guide/src/float-math/approx.md
+++ b/vendor/packed_simd/perf-guide/src/float-math/approx.md
diff --git a/vendor/packed_simd_2/perf-guide/src/float-math/fma.md b/vendor/packed_simd/perf-guide/src/float-math/fma.md
index 357748383..357748383 100644
--- a/vendor/packed_simd_2/perf-guide/src/float-math/fma.md
+++ b/vendor/packed_simd/perf-guide/src/float-math/fma.md
diff --git a/vendor/packed_simd_2/perf-guide/src/float-math/fp.md b/vendor/packed_simd/perf-guide/src/float-math/fp.md
index 711fcc4fd..711fcc4fd 100644
--- a/vendor/packed_simd_2/perf-guide/src/float-math/fp.md
+++ b/vendor/packed_simd/perf-guide/src/float-math/fp.md
diff --git a/vendor/packed_simd_2/perf-guide/src/float-math/svml.md b/vendor/packed_simd/perf-guide/src/float-math/svml.md
index 266c2531c..266c2531c 100644
--- a/vendor/packed_simd_2/perf-guide/src/float-math/svml.md
+++ b/vendor/packed_simd/perf-guide/src/float-math/svml.md
diff --git a/vendor/packed_simd_2/perf-guide/src/introduction.md b/vendor/packed_simd/perf-guide/src/introduction.md
index 7243e19c8..7243e19c8 100644
--- a/vendor/packed_simd_2/perf-guide/src/introduction.md
+++ b/vendor/packed_simd/perf-guide/src/introduction.md
diff --git a/vendor/packed_simd_2/perf-guide/src/prof/linux.md b/vendor/packed_simd/perf-guide/src/prof/linux.md
index 96c7d67bc..96c7d67bc 100644
--- a/vendor/packed_simd_2/perf-guide/src/prof/linux.md
+++ b/vendor/packed_simd/perf-guide/src/prof/linux.md
diff --git a/vendor/packed_simd_2/perf-guide/src/prof/mca.md b/vendor/packed_simd/perf-guide/src/prof/mca.md
index 65ddf1a4e..65ddf1a4e 100644
--- a/vendor/packed_simd_2/perf-guide/src/prof/mca.md
+++ b/vendor/packed_simd/perf-guide/src/prof/mca.md
diff --git a/vendor/packed_simd_2/perf-guide/src/prof/profiling.md b/vendor/packed_simd/perf-guide/src/prof/profiling.md
index 02ba78d2f..02ba78d2f 100644
--- a/vendor/packed_simd_2/perf-guide/src/prof/profiling.md
+++ b/vendor/packed_simd/perf-guide/src/prof/profiling.md
diff --git a/vendor/packed_simd_2/perf-guide/src/target-feature/attribute.md b/vendor/packed_simd/perf-guide/src/target-feature/attribute.md
index ee670fea5..ee670fea5 100644
--- a/vendor/packed_simd_2/perf-guide/src/target-feature/attribute.md
+++ b/vendor/packed_simd/perf-guide/src/target-feature/attribute.md
diff --git a/vendor/packed_simd_2/perf-guide/src/target-feature/features.md b/vendor/packed_simd/perf-guide/src/target-feature/features.md
index b93030ca6..b93030ca6 100644
--- a/vendor/packed_simd_2/perf-guide/src/target-feature/features.md
+++ b/vendor/packed_simd/perf-guide/src/target-feature/features.md
diff --git a/vendor/packed_simd_2/perf-guide/src/target-feature/inlining.md b/vendor/packed_simd/perf-guide/src/target-feature/inlining.md
index 86705102a..86705102a 100644
--- a/vendor/packed_simd_2/perf-guide/src/target-feature/inlining.md
+++ b/vendor/packed_simd/perf-guide/src/target-feature/inlining.md
diff --git a/vendor/packed_simd_2/perf-guide/src/target-feature/practice.md b/vendor/packed_simd/perf-guide/src/target-feature/practice.md
index 5b55c61c2..5b55c61c2 100644
--- a/vendor/packed_simd_2/perf-guide/src/target-feature/practice.md
+++ b/vendor/packed_simd/perf-guide/src/target-feature/practice.md
diff --git a/vendor/packed_simd_2/perf-guide/src/target-feature/runtime.md b/vendor/packed_simd/perf-guide/src/target-feature/runtime.md
index 47ddcc866..47ddcc866 100644
--- a/vendor/packed_simd_2/perf-guide/src/target-feature/runtime.md
+++ b/vendor/packed_simd/perf-guide/src/target-feature/runtime.md
diff --git a/vendor/packed_simd_2/perf-guide/src/target-feature/rustflags.md b/vendor/packed_simd/perf-guide/src/target-feature/rustflags.md
index f4c1d1304..f4c1d1304 100644
--- a/vendor/packed_simd_2/perf-guide/src/target-feature/rustflags.md
+++ b/vendor/packed_simd/perf-guide/src/target-feature/rustflags.md
diff --git a/vendor/packed_simd_2/perf-guide/src/vert-hor-ops.md b/vendor/packed_simd/perf-guide/src/vert-hor-ops.md
index d0dd1be12..d0dd1be12 100644
--- a/vendor/packed_simd_2/perf-guide/src/vert-hor-ops.md
+++ b/vendor/packed_simd/perf-guide/src/vert-hor-ops.md
diff --git a/vendor/packed_simd/rust-toolchain b/vendor/packed_simd/rust-toolchain
new file mode 100644
index 000000000..bf867e0ae
--- /dev/null
+++ b/vendor/packed_simd/rust-toolchain
@@ -0,0 +1 @@
+nightly
diff --git a/vendor/packed_simd_2/rustfmt.toml b/vendor/packed_simd/rustfmt.toml
index 7316518b9..7316518b9 100644
--- a/vendor/packed_simd_2/rustfmt.toml
+++ b/vendor/packed_simd/rustfmt.toml
diff --git a/vendor/packed_simd_2/src/api.rs b/vendor/packed_simd/src/api.rs
index 262fc4ee6..262fc4ee6 100644
--- a/vendor/packed_simd_2/src/api.rs
+++ b/vendor/packed_simd/src/api.rs
diff --git a/vendor/packed_simd_2/src/api/bit_manip.rs b/vendor/packed_simd/src/api/bit_manip.rs
index 6d8865706..c1e90bb0f 100644
--- a/vendor/packed_simd_2/src/api/bit_manip.rs
+++ b/vendor/packed_simd/src/api/bit_manip.rs
@@ -34,7 +34,7 @@ macro_rules! impl_bit_manip {
test_if! {
$test_tt:
- paste::item_with_macros! {
+ paste::item! {
#[allow(overflowing_literals)]
pub mod [<$id _bit_manip>] {
#![allow(const_item_mutation)]
diff --git a/vendor/packed_simd_2/src/api/bitmask.rs b/vendor/packed_simd/src/api/bitmask.rs
index a06ff0fab..8f4868f32 100644
--- a/vendor/packed_simd_2/src/api/bitmask.rs
+++ b/vendor/packed_simd/src/api/bitmask.rs
@@ -17,13 +17,10 @@ macro_rules! impl_bitmask {
test_if! {
$test_tt:
paste::item! {
- #[cfg(not(any(
+ #[cfg(not(
// FIXME: https://github.com/rust-lang-nursery/packed_simd/issues/210
- all(target_arch = "mips", target_endian = "big"),
- all(target_arch = "mips64", target_endian = "big"),
- target_arch = "sparc64",
- target_arch = "s390x",
- )))]
+ target_endian = "big"
+ ))]
pub mod [<$id _bitmask>] {
use super::*;
#[cfg_attr(not(target_arch = "wasm32"), test)]
diff --git a/vendor/packed_simd_2/src/api/cast.rs b/vendor/packed_simd/src/api/cast.rs
index f1c32ca1a..f1c32ca1a 100644
--- a/vendor/packed_simd_2/src/api/cast.rs
+++ b/vendor/packed_simd/src/api/cast.rs
diff --git a/vendor/packed_simd_2/src/api/cast/macros.rs b/vendor/packed_simd/src/api/cast/macros.rs
index 3bb29f0b8..3bb29f0b8 100644
--- a/vendor/packed_simd_2/src/api/cast/macros.rs
+++ b/vendor/packed_simd/src/api/cast/macros.rs
diff --git a/vendor/packed_simd_2/src/api/cast/v128.rs b/vendor/packed_simd/src/api/cast/v128.rs
index 2e10b97b7..2e10b97b7 100644
--- a/vendor/packed_simd_2/src/api/cast/v128.rs
+++ b/vendor/packed_simd/src/api/cast/v128.rs
diff --git a/vendor/packed_simd_2/src/api/cast/v16.rs b/vendor/packed_simd/src/api/cast/v16.rs
index 896febacb..896febacb 100644
--- a/vendor/packed_simd_2/src/api/cast/v16.rs
+++ b/vendor/packed_simd/src/api/cast/v16.rs
diff --git a/vendor/packed_simd_2/src/api/cast/v256.rs b/vendor/packed_simd/src/api/cast/v256.rs
index fe0c835e3..fe0c835e3 100644
--- a/vendor/packed_simd_2/src/api/cast/v256.rs
+++ b/vendor/packed_simd/src/api/cast/v256.rs
diff --git a/vendor/packed_simd_2/src/api/cast/v32.rs b/vendor/packed_simd/src/api/cast/v32.rs
index 4ad1cbf74..4ad1cbf74 100644
--- a/vendor/packed_simd_2/src/api/cast/v32.rs
+++ b/vendor/packed_simd/src/api/cast/v32.rs
diff --git a/vendor/packed_simd_2/src/api/cast/v512.rs b/vendor/packed_simd/src/api/cast/v512.rs
index b64605045..b64605045 100644
--- a/vendor/packed_simd_2/src/api/cast/v512.rs
+++ b/vendor/packed_simd/src/api/cast/v512.rs
diff --git a/vendor/packed_simd_2/src/api/cast/v64.rs b/vendor/packed_simd/src/api/cast/v64.rs
index b23d1a491..b23d1a491 100644
--- a/vendor/packed_simd_2/src/api/cast/v64.rs
+++ b/vendor/packed_simd/src/api/cast/v64.rs
diff --git a/vendor/packed_simd_2/src/api/cmp.rs b/vendor/packed_simd/src/api/cmp.rs
index 6d5301ddd..6d5301ddd 100644
--- a/vendor/packed_simd_2/src/api/cmp.rs
+++ b/vendor/packed_simd/src/api/cmp.rs
diff --git a/vendor/packed_simd_2/src/api/cmp/eq.rs b/vendor/packed_simd/src/api/cmp/eq.rs
index 3c55d0dce..3c55d0dce 100644
--- a/vendor/packed_simd_2/src/api/cmp/eq.rs
+++ b/vendor/packed_simd/src/api/cmp/eq.rs
diff --git a/vendor/packed_simd_2/src/api/cmp/ord.rs b/vendor/packed_simd/src/api/cmp/ord.rs
index e54ba3bfd..e54ba3bfd 100644
--- a/vendor/packed_simd_2/src/api/cmp/ord.rs
+++ b/vendor/packed_simd/src/api/cmp/ord.rs
diff --git a/vendor/packed_simd_2/src/api/cmp/partial_eq.rs b/vendor/packed_simd/src/api/cmp/partial_eq.rs
index d69dd4742..d69dd4742 100644
--- a/vendor/packed_simd_2/src/api/cmp/partial_eq.rs
+++ b/vendor/packed_simd/src/api/cmp/partial_eq.rs
diff --git a/vendor/packed_simd_2/src/api/cmp/partial_ord.rs b/vendor/packed_simd/src/api/cmp/partial_ord.rs
index 76ed9ebe4..76ed9ebe4 100644
--- a/vendor/packed_simd_2/src/api/cmp/partial_ord.rs
+++ b/vendor/packed_simd/src/api/cmp/partial_ord.rs
diff --git a/vendor/packed_simd_2/src/api/cmp/vertical.rs b/vendor/packed_simd/src/api/cmp/vertical.rs
index ea4a0d1a3..ea4a0d1a3 100644
--- a/vendor/packed_simd_2/src/api/cmp/vertical.rs
+++ b/vendor/packed_simd/src/api/cmp/vertical.rs
diff --git a/vendor/packed_simd_2/src/api/default.rs b/vendor/packed_simd/src/api/default.rs
index 7af55ea77..7af55ea77 100644
--- a/vendor/packed_simd_2/src/api/default.rs
+++ b/vendor/packed_simd/src/api/default.rs
diff --git a/vendor/packed_simd_2/src/api/fmt.rs b/vendor/packed_simd/src/api/fmt.rs
index f3f55c401..f3f55c401 100644
--- a/vendor/packed_simd_2/src/api/fmt.rs
+++ b/vendor/packed_simd/src/api/fmt.rs
diff --git a/vendor/packed_simd_2/src/api/fmt/binary.rs b/vendor/packed_simd/src/api/fmt/binary.rs
index 91c082555..91c082555 100644
--- a/vendor/packed_simd_2/src/api/fmt/binary.rs
+++ b/vendor/packed_simd/src/api/fmt/binary.rs
diff --git a/vendor/packed_simd_2/src/api/fmt/debug.rs b/vendor/packed_simd/src/api/fmt/debug.rs
index 1e209b3bf..1e209b3bf 100644
--- a/vendor/packed_simd_2/src/api/fmt/debug.rs
+++ b/vendor/packed_simd/src/api/fmt/debug.rs
diff --git a/vendor/packed_simd_2/src/api/fmt/lower_hex.rs b/vendor/packed_simd/src/api/fmt/lower_hex.rs
index 8f11d3119..8f11d3119 100644
--- a/vendor/packed_simd_2/src/api/fmt/lower_hex.rs
+++ b/vendor/packed_simd/src/api/fmt/lower_hex.rs
diff --git a/vendor/packed_simd_2/src/api/fmt/octal.rs b/vendor/packed_simd/src/api/fmt/octal.rs
index e708e094c..e708e094c 100644
--- a/vendor/packed_simd_2/src/api/fmt/octal.rs
+++ b/vendor/packed_simd/src/api/fmt/octal.rs
diff --git a/vendor/packed_simd_2/src/api/fmt/upper_hex.rs b/vendor/packed_simd/src/api/fmt/upper_hex.rs
index 5ad455706..5ad455706 100644
--- a/vendor/packed_simd_2/src/api/fmt/upper_hex.rs
+++ b/vendor/packed_simd/src/api/fmt/upper_hex.rs
diff --git a/vendor/packed_simd_2/src/api/from.rs b/vendor/packed_simd/src/api/from.rs
index c30c4d6e2..c30c4d6e2 100644
--- a/vendor/packed_simd_2/src/api/from.rs
+++ b/vendor/packed_simd/src/api/from.rs
diff --git a/vendor/packed_simd_2/src/api/from/from_array.rs b/vendor/packed_simd/src/api/from/from_array.rs
index b83f93816..5c7801dda 100644
--- a/vendor/packed_simd_2/src/api/from/from_array.rs
+++ b/vendor/packed_simd/src/api/from/from_array.rs
@@ -61,6 +61,7 @@ macro_rules! impl_from_array {
mod [<$id _from>] {
use super::*;
#[test]
+ #[cfg_attr(miri, ignore)]
fn array() {
let vec: $id = Default::default();
diff --git a/vendor/packed_simd_2/src/api/from/from_vector.rs b/vendor/packed_simd/src/api/from/from_vector.rs
index 55f70016d..55f70016d 100644
--- a/vendor/packed_simd_2/src/api/from/from_vector.rs
+++ b/vendor/packed_simd/src/api/from/from_vector.rs
diff --git a/vendor/packed_simd_2/src/api/hash.rs b/vendor/packed_simd/src/api/hash.rs
index ee80eff93..ee80eff93 100644
--- a/vendor/packed_simd_2/src/api/hash.rs
+++ b/vendor/packed_simd/src/api/hash.rs
diff --git a/vendor/packed_simd_2/src/api/into_bits.rs b/vendor/packed_simd/src/api/into_bits.rs
index 32b6d2ddc..03fbe4bff 100644
--- a/vendor/packed_simd_2/src/api/into_bits.rs
+++ b/vendor/packed_simd/src/api/into_bits.rs
@@ -1,12 +1,14 @@
//! Implementation of `FromBits` and `IntoBits`.
/// Safe lossless bitwise conversion from `T` to `Self`.
+#[cfg_attr(doc_cfg, doc(cfg(feature = "into_bits")))]
pub trait FromBits<T>: crate::marker::Sized {
/// Safe lossless bitwise transmute from `T` to `Self`.
fn from_bits(t: T) -> Self;
}
/// Safe lossless bitwise conversion from `Self` to `T`.
+#[cfg_attr(doc_cfg, doc(cfg(feature = "into_bits")))]
pub trait IntoBits<T>: crate::marker::Sized {
/// Safe lossless bitwise transmute from `self` to `T`.
fn into_bits(self) -> T;
diff --git a/vendor/packed_simd_2/src/api/into_bits/arch_specific.rs b/vendor/packed_simd/src/api/into_bits/arch_specific.rs
index bfac91557..bfac91557 100644
--- a/vendor/packed_simd_2/src/api/into_bits/arch_specific.rs
+++ b/vendor/packed_simd/src/api/into_bits/arch_specific.rs
diff --git a/vendor/packed_simd_2/src/api/into_bits/macros.rs b/vendor/packed_simd/src/api/into_bits/macros.rs
index 265ab34ae..265ab34ae 100644
--- a/vendor/packed_simd_2/src/api/into_bits/macros.rs
+++ b/vendor/packed_simd/src/api/into_bits/macros.rs
diff --git a/vendor/packed_simd_2/src/api/into_bits/v128.rs b/vendor/packed_simd/src/api/into_bits/v128.rs
index 639c09c2c..639c09c2c 100644
--- a/vendor/packed_simd_2/src/api/into_bits/v128.rs
+++ b/vendor/packed_simd/src/api/into_bits/v128.rs
diff --git a/vendor/packed_simd_2/src/api/into_bits/v16.rs b/vendor/packed_simd/src/api/into_bits/v16.rs
index e44d0e7f9..e44d0e7f9 100644
--- a/vendor/packed_simd_2/src/api/into_bits/v16.rs
+++ b/vendor/packed_simd/src/api/into_bits/v16.rs
diff --git a/vendor/packed_simd_2/src/api/into_bits/v256.rs b/vendor/packed_simd/src/api/into_bits/v256.rs
index e432bbbc9..e432bbbc9 100644
--- a/vendor/packed_simd_2/src/api/into_bits/v256.rs
+++ b/vendor/packed_simd/src/api/into_bits/v256.rs
diff --git a/vendor/packed_simd_2/src/api/into_bits/v32.rs b/vendor/packed_simd/src/api/into_bits/v32.rs
index 5dba38a17..5dba38a17 100644
--- a/vendor/packed_simd_2/src/api/into_bits/v32.rs
+++ b/vendor/packed_simd/src/api/into_bits/v32.rs
diff --git a/vendor/packed_simd_2/src/api/into_bits/v512.rs b/vendor/packed_simd/src/api/into_bits/v512.rs
index f6e9bb8bf..f6e9bb8bf 100644
--- a/vendor/packed_simd_2/src/api/into_bits/v512.rs
+++ b/vendor/packed_simd/src/api/into_bits/v512.rs
diff --git a/vendor/packed_simd_2/src/api/into_bits/v64.rs b/vendor/packed_simd/src/api/into_bits/v64.rs
index 5b065f1bd..5b065f1bd 100644
--- a/vendor/packed_simd_2/src/api/into_bits/v64.rs
+++ b/vendor/packed_simd/src/api/into_bits/v64.rs
diff --git a/vendor/packed_simd_2/src/api/math.rs b/vendor/packed_simd/src/api/math.rs
index e7a8d256b..e7a8d256b 100644
--- a/vendor/packed_simd_2/src/api/math.rs
+++ b/vendor/packed_simd/src/api/math.rs
diff --git a/vendor/packed_simd_2/src/api/math/float.rs b/vendor/packed_simd/src/api/math/float.rs
index d5d2bee2e..d5d2bee2e 100644
--- a/vendor/packed_simd_2/src/api/math/float.rs
+++ b/vendor/packed_simd/src/api/math/float.rs
diff --git a/vendor/packed_simd_2/src/api/math/float/abs.rs b/vendor/packed_simd/src/api/math/float/abs.rs
index 1865bdb68..1865bdb68 100644
--- a/vendor/packed_simd_2/src/api/math/float/abs.rs
+++ b/vendor/packed_simd/src/api/math/float/abs.rs
diff --git a/vendor/packed_simd_2/src/api/math/float/consts.rs b/vendor/packed_simd/src/api/math/float/consts.rs
index 7f41acbf1..7f41acbf1 100644
--- a/vendor/packed_simd_2/src/api/math/float/consts.rs
+++ b/vendor/packed_simd/src/api/math/float/consts.rs
diff --git a/vendor/packed_simd_2/src/api/math/float/cos.rs b/vendor/packed_simd/src/api/math/float/cos.rs
index e5b8f4603..e5b8f4603 100644
--- a/vendor/packed_simd_2/src/api/math/float/cos.rs
+++ b/vendor/packed_simd/src/api/math/float/cos.rs
diff --git a/vendor/packed_simd_2/src/api/math/float/exp.rs b/vendor/packed_simd/src/api/math/float/exp.rs
index e3356d853..e3356d853 100644
--- a/vendor/packed_simd_2/src/api/math/float/exp.rs
+++ b/vendor/packed_simd/src/api/math/float/exp.rs
diff --git a/vendor/packed_simd_2/src/api/math/float/ln.rs b/vendor/packed_simd/src/api/math/float/ln.rs
index 5ceb9173a..5ceb9173a 100644
--- a/vendor/packed_simd_2/src/api/math/float/ln.rs
+++ b/vendor/packed_simd/src/api/math/float/ln.rs
diff --git a/vendor/packed_simd_2/src/api/math/float/mul_add.rs b/vendor/packed_simd/src/api/math/float/mul_add.rs
index 4b170ee2b..4b170ee2b 100644
--- a/vendor/packed_simd_2/src/api/math/float/mul_add.rs
+++ b/vendor/packed_simd/src/api/math/float/mul_add.rs
diff --git a/vendor/packed_simd_2/src/api/math/float/mul_adde.rs b/vendor/packed_simd/src/api/math/float/mul_adde.rs
index c5b27110f..c5b27110f 100644
--- a/vendor/packed_simd_2/src/api/math/float/mul_adde.rs
+++ b/vendor/packed_simd/src/api/math/float/mul_adde.rs
diff --git a/vendor/packed_simd_2/src/api/math/float/powf.rs b/vendor/packed_simd/src/api/math/float/powf.rs
index 83dc9ff9c..83dc9ff9c 100644
--- a/vendor/packed_simd_2/src/api/math/float/powf.rs
+++ b/vendor/packed_simd/src/api/math/float/powf.rs
diff --git a/vendor/packed_simd_2/src/api/math/float/recpre.rs b/vendor/packed_simd/src/api/math/float/recpre.rs
index 127f0b2ff..127f0b2ff 100644
--- a/vendor/packed_simd_2/src/api/math/float/recpre.rs
+++ b/vendor/packed_simd/src/api/math/float/recpre.rs
diff --git a/vendor/packed_simd_2/src/api/math/float/rsqrte.rs b/vendor/packed_simd/src/api/math/float/rsqrte.rs
index c77977f7b..c77977f7b 100644
--- a/vendor/packed_simd_2/src/api/math/float/rsqrte.rs
+++ b/vendor/packed_simd/src/api/math/float/rsqrte.rs
diff --git a/vendor/packed_simd_2/src/api/math/float/sin.rs b/vendor/packed_simd/src/api/math/float/sin.rs
index 49908319b..49908319b 100644
--- a/vendor/packed_simd_2/src/api/math/float/sin.rs
+++ b/vendor/packed_simd/src/api/math/float/sin.rs
diff --git a/vendor/packed_simd_2/src/api/math/float/sqrt.rs b/vendor/packed_simd/src/api/math/float/sqrt.rs
index ae624122d..ae624122d 100644
--- a/vendor/packed_simd_2/src/api/math/float/sqrt.rs
+++ b/vendor/packed_simd/src/api/math/float/sqrt.rs
diff --git a/vendor/packed_simd_2/src/api/math/float/sqrte.rs b/vendor/packed_simd/src/api/math/float/sqrte.rs
index f7ffad748..f7ffad748 100644
--- a/vendor/packed_simd_2/src/api/math/float/sqrte.rs
+++ b/vendor/packed_simd/src/api/math/float/sqrte.rs
diff --git a/vendor/packed_simd_2/src/api/math/float/tanh.rs b/vendor/packed_simd/src/api/math/float/tanh.rs
index acfd93caa..acfd93caa 100644
--- a/vendor/packed_simd_2/src/api/math/float/tanh.rs
+++ b/vendor/packed_simd/src/api/math/float/tanh.rs
diff --git a/vendor/packed_simd_2/src/api/minimal.rs b/vendor/packed_simd/src/api/minimal.rs
index 840d9e325..840d9e325 100644
--- a/vendor/packed_simd_2/src/api/minimal.rs
+++ b/vendor/packed_simd/src/api/minimal.rs
diff --git a/vendor/packed_simd_2/src/api/minimal/iuf.rs b/vendor/packed_simd/src/api/minimal/iuf.rs
index a155ac178..a155ac178 100644
--- a/vendor/packed_simd_2/src/api/minimal/iuf.rs
+++ b/vendor/packed_simd/src/api/minimal/iuf.rs
diff --git a/vendor/packed_simd_2/src/api/minimal/mask.rs b/vendor/packed_simd/src/api/minimal/mask.rs
index a420060b4..a420060b4 100644
--- a/vendor/packed_simd_2/src/api/minimal/mask.rs
+++ b/vendor/packed_simd/src/api/minimal/mask.rs
diff --git a/vendor/packed_simd_2/src/api/minimal/ptr.rs b/vendor/packed_simd/src/api/minimal/ptr.rs
index c3d61fbf6..d9e47c9cc 100644
--- a/vendor/packed_simd_2/src/api/minimal/ptr.rs
+++ b/vendor/packed_simd/src/api/minimal/ptr.rs
@@ -583,7 +583,7 @@ macro_rules! impl_minimal_p {
pub fn from_slice_aligned(slice: &[$elem_ty]) -> Self {
unsafe {
assert!(slice.len() >= $elem_count);
- let target_ptr = slice.get_unchecked(0) as *const $elem_ty;
+ let target_ptr = slice.as_ptr();
assert!(
target_ptr.align_offset(crate::mem::align_of::<Self>())
== 0
@@ -615,7 +615,7 @@ macro_rules! impl_minimal_p {
pub unsafe fn from_slice_aligned_unchecked(slice: &[$elem_ty])
-> Self {
#[allow(clippy::cast_ptr_alignment)]
- *(slice.get_unchecked(0) as *const $elem_ty as *const Self)
+ *(slice.as_ptr().cast())
}
/// Instantiates a new vector with the values of the `slice`.
@@ -628,8 +628,7 @@ macro_rules! impl_minimal_p {
slice: &[$elem_ty],
) -> Self {
use crate::mem::size_of;
- let target_ptr =
- slice.get_unchecked(0) as *const $elem_ty as *const u8;
+ let target_ptr = slice.as_ptr().cast();
let mut x = Self::splat(crate::ptr::null_mut() as $elem_ty);
let self_ptr = &mut x as *mut Self as *mut u8;
crate::ptr::copy_nonoverlapping(
@@ -798,8 +797,7 @@ macro_rules! impl_minimal_p {
pub fn write_to_slice_aligned(self, slice: &mut [$elem_ty]) {
unsafe {
assert!(slice.len() >= $elem_count);
- let target_ptr =
- slice.get_unchecked_mut(0) as *mut $elem_ty;
+ let target_ptr = slice.as_mut_ptr();
assert!(
target_ptr.align_offset(crate::mem::align_of::<Self>())
== 0
@@ -833,8 +831,7 @@ macro_rules! impl_minimal_p {
self, slice: &mut [$elem_ty],
) {
#[allow(clippy::cast_ptr_alignment)]
- *(slice.get_unchecked_mut(0) as *mut $elem_ty as *mut Self) =
- self;
+ *(slice.as_mut_ptr().cast()) = self;
}
/// Writes the values of the vector to the `slice`.
@@ -846,8 +843,7 @@ macro_rules! impl_minimal_p {
pub unsafe fn write_to_slice_unaligned_unchecked(
self, slice: &mut [$elem_ty],
) {
- let target_ptr =
- slice.get_unchecked_mut(0) as *mut $elem_ty as *mut u8;
+ let target_ptr = slice.as_mut_ptr().cast();
let self_ptr = &self as *const Self as *const u8;
crate::ptr::copy_nonoverlapping(
self_ptr,
diff --git a/vendor/packed_simd_2/src/api/ops.rs b/vendor/packed_simd/src/api/ops.rs
index f71c98795..f71c98795 100644
--- a/vendor/packed_simd_2/src/api/ops.rs
+++ b/vendor/packed_simd/src/api/ops.rs
diff --git a/vendor/packed_simd_2/src/api/ops/scalar_arithmetic.rs b/vendor/packed_simd/src/api/ops/scalar_arithmetic.rs
index da1a2037e..da1a2037e 100644
--- a/vendor/packed_simd_2/src/api/ops/scalar_arithmetic.rs
+++ b/vendor/packed_simd/src/api/ops/scalar_arithmetic.rs
diff --git a/vendor/packed_simd_2/src/api/ops/scalar_bitwise.rs b/vendor/packed_simd/src/api/ops/scalar_bitwise.rs
index 88216769a..88216769a 100644
--- a/vendor/packed_simd_2/src/api/ops/scalar_bitwise.rs
+++ b/vendor/packed_simd/src/api/ops/scalar_bitwise.rs
diff --git a/vendor/packed_simd_2/src/api/ops/scalar_mask_bitwise.rs b/vendor/packed_simd/src/api/ops/scalar_mask_bitwise.rs
index 523a85207..523a85207 100644
--- a/vendor/packed_simd_2/src/api/ops/scalar_mask_bitwise.rs
+++ b/vendor/packed_simd/src/api/ops/scalar_mask_bitwise.rs
diff --git a/vendor/packed_simd_2/src/api/ops/scalar_shifts.rs b/vendor/packed_simd/src/api/ops/scalar_shifts.rs
index 4a7a09626..4a7a09626 100644
--- a/vendor/packed_simd_2/src/api/ops/scalar_shifts.rs
+++ b/vendor/packed_simd/src/api/ops/scalar_shifts.rs
diff --git a/vendor/packed_simd_2/src/api/ops/vector_arithmetic.rs b/vendor/packed_simd/src/api/ops/vector_arithmetic.rs
index 7057f52d0..7057f52d0 100644
--- a/vendor/packed_simd_2/src/api/ops/vector_arithmetic.rs
+++ b/vendor/packed_simd/src/api/ops/vector_arithmetic.rs
diff --git a/vendor/packed_simd_2/src/api/ops/vector_bitwise.rs b/vendor/packed_simd/src/api/ops/vector_bitwise.rs
index 7be9603fa..7be9603fa 100644
--- a/vendor/packed_simd_2/src/api/ops/vector_bitwise.rs
+++ b/vendor/packed_simd/src/api/ops/vector_bitwise.rs
diff --git a/vendor/packed_simd_2/src/api/ops/vector_float_min_max.rs b/vendor/packed_simd/src/api/ops/vector_float_min_max.rs
index 8310667b7..8310667b7 100644
--- a/vendor/packed_simd_2/src/api/ops/vector_float_min_max.rs
+++ b/vendor/packed_simd/src/api/ops/vector_float_min_max.rs
diff --git a/vendor/packed_simd_2/src/api/ops/vector_int_min_max.rs b/vendor/packed_simd/src/api/ops/vector_int_min_max.rs
index 36ea98e6b..36ea98e6b 100644
--- a/vendor/packed_simd_2/src/api/ops/vector_int_min_max.rs
+++ b/vendor/packed_simd/src/api/ops/vector_int_min_max.rs
diff --git a/vendor/packed_simd_2/src/api/ops/vector_mask_bitwise.rs b/vendor/packed_simd/src/api/ops/vector_mask_bitwise.rs
index 295fc1ca8..295fc1ca8 100644
--- a/vendor/packed_simd_2/src/api/ops/vector_mask_bitwise.rs
+++ b/vendor/packed_simd/src/api/ops/vector_mask_bitwise.rs
diff --git a/vendor/packed_simd_2/src/api/ops/vector_neg.rs b/vendor/packed_simd/src/api/ops/vector_neg.rs
index e2d91fd2f..e2d91fd2f 100644
--- a/vendor/packed_simd_2/src/api/ops/vector_neg.rs
+++ b/vendor/packed_simd/src/api/ops/vector_neg.rs
diff --git a/vendor/packed_simd_2/src/api/ops/vector_rotates.rs b/vendor/packed_simd/src/api/ops/vector_rotates.rs
index 147fc2e37..6c4bed72a 100644
--- a/vendor/packed_simd_2/src/api/ops/vector_rotates.rs
+++ b/vendor/packed_simd/src/api/ops/vector_rotates.rs
@@ -23,8 +23,8 @@ macro_rules! impl_ops_vector_rotates {
/// amount in the corresponding lane of `n`, wrapping the
/// truncated bits to the beginning of the resulting integer.
///
- /// Note: this is neither the same operation as `<<` nor equivalent
- /// to `slice::rotate_left`.
+ /// Note: this is neither the same operation as `>>` nor equivalent
+ /// to `slice::rotate_right`.
#[inline]
pub fn rotate_right(self, n: $id) -> $id {
const LANE_WIDTH: $elem_ty =
diff --git a/vendor/packed_simd_2/src/api/ops/vector_shifts.rs b/vendor/packed_simd/src/api/ops/vector_shifts.rs
index 8bb5ac2fc..8bb5ac2fc 100644
--- a/vendor/packed_simd_2/src/api/ops/vector_shifts.rs
+++ b/vendor/packed_simd/src/api/ops/vector_shifts.rs
diff --git a/vendor/packed_simd_2/src/api/ptr.rs b/vendor/packed_simd/src/api/ptr.rs
index d2e523a49..d2e523a49 100644
--- a/vendor/packed_simd_2/src/api/ptr.rs
+++ b/vendor/packed_simd/src/api/ptr.rs
diff --git a/vendor/packed_simd_2/src/api/ptr/gather_scatter.rs b/vendor/packed_simd/src/api/ptr/gather_scatter.rs
index 374482ac3..374482ac3 100644
--- a/vendor/packed_simd_2/src/api/ptr/gather_scatter.rs
+++ b/vendor/packed_simd/src/api/ptr/gather_scatter.rs
diff --git a/vendor/packed_simd_2/src/api/reductions.rs b/vendor/packed_simd/src/api/reductions.rs
index 54d2f0cc7..54d2f0cc7 100644
--- a/vendor/packed_simd_2/src/api/reductions.rs
+++ b/vendor/packed_simd/src/api/reductions.rs
diff --git a/vendor/packed_simd_2/src/api/reductions/bitwise.rs b/vendor/packed_simd/src/api/reductions/bitwise.rs
index 5bad4f474..5bad4f474 100644
--- a/vendor/packed_simd_2/src/api/reductions/bitwise.rs
+++ b/vendor/packed_simd/src/api/reductions/bitwise.rs
diff --git a/vendor/packed_simd_2/src/api/reductions/float_arithmetic.rs b/vendor/packed_simd/src/api/reductions/float_arithmetic.rs
index 9dc8783db..9dc8783db 100644
--- a/vendor/packed_simd_2/src/api/reductions/float_arithmetic.rs
+++ b/vendor/packed_simd/src/api/reductions/float_arithmetic.rs
diff --git a/vendor/packed_simd_2/src/api/reductions/integer_arithmetic.rs b/vendor/packed_simd/src/api/reductions/integer_arithmetic.rs
index e99e6cb5d..e99e6cb5d 100644
--- a/vendor/packed_simd_2/src/api/reductions/integer_arithmetic.rs
+++ b/vendor/packed_simd/src/api/reductions/integer_arithmetic.rs
diff --git a/vendor/packed_simd_2/src/api/reductions/mask.rs b/vendor/packed_simd/src/api/reductions/mask.rs
index 0dd6a84e7..0dd6a84e7 100644
--- a/vendor/packed_simd_2/src/api/reductions/mask.rs
+++ b/vendor/packed_simd/src/api/reductions/mask.rs
diff --git a/vendor/packed_simd_2/src/api/reductions/min_max.rs b/vendor/packed_simd/src/api/reductions/min_max.rs
index a3ce13a45..a3ce13a45 100644
--- a/vendor/packed_simd_2/src/api/reductions/min_max.rs
+++ b/vendor/packed_simd/src/api/reductions/min_max.rs
diff --git a/vendor/packed_simd_2/src/api/select.rs b/vendor/packed_simd/src/api/select.rs
index daf629472..daf629472 100644
--- a/vendor/packed_simd_2/src/api/select.rs
+++ b/vendor/packed_simd/src/api/select.rs
diff --git a/vendor/packed_simd_2/src/api/shuffle.rs b/vendor/packed_simd/src/api/shuffle.rs
index fda29ccdd..1c17bd766 100644
--- a/vendor/packed_simd_2/src/api/shuffle.rs
+++ b/vendor/packed_simd/src/api/shuffle.rs
@@ -27,7 +27,7 @@
/// Shuffling elements of two vectors:
///
/// ```
-/// # use packed_simd_2::*;
+/// # use packed_simd::*;
/// # fn main() {
/// // Shuffle allows reordering the elements:
/// let x = i32x4::new(1, 2, 3, 4);
@@ -49,7 +49,7 @@
/// Shuffling elements of one vector:
///
/// ```
-/// # use packed_simd_2::*;
+/// # use packed_simd::*;
/// # fn main() {
/// // Shuffle allows reordering the elements of a vector:
/// let x = i32x4::new(1, 2, 3, 4);
diff --git a/vendor/packed_simd_2/src/api/shuffle1_dyn.rs b/vendor/packed_simd/src/api/shuffle1_dyn.rs
index 64536be6c..64536be6c 100644
--- a/vendor/packed_simd_2/src/api/shuffle1_dyn.rs
+++ b/vendor/packed_simd/src/api/shuffle1_dyn.rs
diff --git a/vendor/packed_simd_2/src/api/slice.rs b/vendor/packed_simd/src/api/slice.rs
index 526b848b5..526b848b5 100644
--- a/vendor/packed_simd_2/src/api/slice.rs
+++ b/vendor/packed_simd/src/api/slice.rs
diff --git a/vendor/packed_simd_2/src/api/slice/from_slice.rs b/vendor/packed_simd/src/api/slice/from_slice.rs
index 50f3914f7..cafd6f821 100644
--- a/vendor/packed_simd_2/src/api/slice/from_slice.rs
+++ b/vendor/packed_simd/src/api/slice/from_slice.rs
@@ -13,7 +13,7 @@ macro_rules! impl_slice_from_slice {
pub fn from_slice_aligned(slice: &[$elem_ty]) -> Self {
unsafe {
assert!(slice.len() >= $elem_count);
- let target_ptr = slice.get_unchecked(0) as *const $elem_ty;
+ let target_ptr = slice.as_ptr();
assert_eq!(target_ptr.align_offset(crate::mem::align_of::<Self>()), 0);
Self::from_slice_aligned_unchecked(slice)
}
@@ -41,7 +41,7 @@ macro_rules! impl_slice_from_slice {
#[inline]
pub unsafe fn from_slice_aligned_unchecked(slice: &[$elem_ty]) -> Self {
debug_assert!(slice.len() >= $elem_count);
- let target_ptr = slice.get_unchecked(0) as *const $elem_ty;
+ let target_ptr = slice.as_ptr();
debug_assert_eq!(target_ptr.align_offset(crate::mem::align_of::<Self>()), 0);
#[allow(clippy::cast_ptr_alignment)]
@@ -57,7 +57,7 @@ macro_rules! impl_slice_from_slice {
pub unsafe fn from_slice_unaligned_unchecked(slice: &[$elem_ty]) -> Self {
use crate::mem::size_of;
debug_assert!(slice.len() >= $elem_count);
- let target_ptr = slice.get_unchecked(0) as *const $elem_ty as *const u8;
+ let target_ptr = slice.as_ptr().cast();
let mut x = Self::splat(0 as $elem_ty);
let self_ptr = &mut x as *mut Self as *mut u8;
crate::ptr::copy_nonoverlapping(target_ptr, self_ptr, size_of::<Self>());
diff --git a/vendor/packed_simd_2/src/api/slice/write_to_slice.rs b/vendor/packed_simd/src/api/slice/write_to_slice.rs
index dd04a2634..5abd4916e 100644
--- a/vendor/packed_simd_2/src/api/slice/write_to_slice.rs
+++ b/vendor/packed_simd/src/api/slice/write_to_slice.rs
@@ -13,7 +13,7 @@ macro_rules! impl_slice_write_to_slice {
pub fn write_to_slice_aligned(self, slice: &mut [$elem_ty]) {
unsafe {
assert!(slice.len() >= $elem_count);
- let target_ptr = slice.get_unchecked_mut(0) as *mut $elem_ty;
+ let target_ptr = slice.as_mut_ptr();
assert_eq!(target_ptr.align_offset(crate::mem::align_of::<Self>()), 0);
self.write_to_slice_aligned_unchecked(slice);
}
@@ -42,7 +42,7 @@ macro_rules! impl_slice_write_to_slice {
#[inline]
pub unsafe fn write_to_slice_aligned_unchecked(self, slice: &mut [$elem_ty]) {
debug_assert!(slice.len() >= $elem_count);
- let target_ptr = slice.get_unchecked_mut(0) as *mut $elem_ty;
+ let target_ptr = slice.as_mut_ptr();
debug_assert_eq!(target_ptr.align_offset(crate::mem::align_of::<Self>()), 0);
#[allow(clippy::cast_ptr_alignment)]
@@ -60,7 +60,7 @@ macro_rules! impl_slice_write_to_slice {
#[inline]
pub unsafe fn write_to_slice_unaligned_unchecked(self, slice: &mut [$elem_ty]) {
debug_assert!(slice.len() >= $elem_count);
- let target_ptr = slice.get_unchecked_mut(0) as *mut $elem_ty as *mut u8;
+ let target_ptr = slice.as_mut_ptr().cast();
let self_ptr = &self as *const Self as *const u8;
crate::ptr::copy_nonoverlapping(self_ptr, target_ptr, crate::mem::size_of::<Self>());
}
diff --git a/vendor/packed_simd_2/src/api/swap_bytes.rs b/vendor/packed_simd/src/api/swap_bytes.rs
index 53bba25bd..4649ed679 100644
--- a/vendor/packed_simd_2/src/api/swap_bytes.rs
+++ b/vendor/packed_simd/src/api/swap_bytes.rs
@@ -76,7 +76,7 @@ macro_rules! impl_swap_bytes {
test_if! {
$test_tt:
- paste::item_with_macros! {
+ paste::item! {
pub mod [<$id _swap_bytes>] {
use super::*;
diff --git a/vendor/packed_simd_2/src/codegen.rs b/vendor/packed_simd/src/codegen.rs
index 8a9e97148..8a9e97148 100644
--- a/vendor/packed_simd_2/src/codegen.rs
+++ b/vendor/packed_simd/src/codegen.rs
diff --git a/vendor/packed_simd_2/src/codegen/bit_manip.rs b/vendor/packed_simd/src/codegen/bit_manip.rs
index 32d8d717a..32d8d717a 100644
--- a/vendor/packed_simd_2/src/codegen/bit_manip.rs
+++ b/vendor/packed_simd/src/codegen/bit_manip.rs
diff --git a/vendor/packed_simd_2/src/codegen/llvm.rs b/vendor/packed_simd/src/codegen/llvm.rs
index b4c09849b..bb482fac6 100644
--- a/vendor/packed_simd_2/src/codegen/llvm.rs
+++ b/vendor/packed_simd/src/codegen/llvm.rs
@@ -5,14 +5,8 @@ use crate::sealed::Shuffle;
#[allow(unused_imports)] // FIXME: spurious warning?
use crate::sealed::Simd;
-// Shuffle intrinsics: expanded in users' crates, therefore public.
extern "platform-intrinsic" {
- pub fn simd_shuffle2<T, U>(x: T, y: T, idx: [u32; 2]) -> U;
- pub fn simd_shuffle4<T, U>(x: T, y: T, idx: [u32; 4]) -> U;
- pub fn simd_shuffle8<T, U>(x: T, y: T, idx: [u32; 8]) -> U;
- pub fn simd_shuffle16<T, U>(x: T, y: T, idx: [u32; 16]) -> U;
- pub fn simd_shuffle32<T, U>(x: T, y: T, idx: [u32; 32]) -> U;
- pub fn simd_shuffle64<T, U>(x: T, y: T, idx: [u32; 64]) -> U;
+ fn simd_shuffle<T, I, U>(x: T, y: T, idx: I) -> U;
}
#[allow(clippy::missing_safety_doc)]
@@ -22,7 +16,7 @@ where
T: Simd,
<T as Simd>::Element: Shuffle<[u32; 2], Output = U>,
{
- simd_shuffle2(x, y, IDX)
+ simd_shuffle(x, y, IDX)
}
#[allow(clippy::missing_safety_doc)]
@@ -32,7 +26,7 @@ where
T: Simd,
<T as Simd>::Element: Shuffle<[u32; 4], Output = U>,
{
- simd_shuffle4(x, y, IDX)
+ simd_shuffle(x, y, IDX)
}
#[allow(clippy::missing_safety_doc)]
@@ -42,7 +36,7 @@ where
T: Simd,
<T as Simd>::Element: Shuffle<[u32; 8], Output = U>,
{
- simd_shuffle8(x, y, IDX)
+ simd_shuffle(x, y, IDX)
}
#[allow(clippy::missing_safety_doc)]
@@ -52,7 +46,7 @@ where
T: Simd,
<T as Simd>::Element: Shuffle<[u32; 16], Output = U>,
{
- simd_shuffle16(x, y, IDX)
+ simd_shuffle(x, y, IDX)
}
#[allow(clippy::missing_safety_doc)]
@@ -62,7 +56,7 @@ where
T: Simd,
<T as Simd>::Element: Shuffle<[u32; 32], Output = U>,
{
- simd_shuffle32(x, y, IDX)
+ simd_shuffle(x, y, IDX)
}
#[allow(clippy::missing_safety_doc)]
@@ -72,7 +66,7 @@ where
T: Simd,
<T as Simd>::Element: Shuffle<[u32; 64], Output = U>,
{
- simd_shuffle64(x, y, IDX)
+ simd_shuffle(x, y, IDX)
}
extern "platform-intrinsic" {
diff --git a/vendor/packed_simd_2/src/codegen/math.rs b/vendor/packed_simd/src/codegen/math.rs
index 9a0ea7a4e..9a0ea7a4e 100644
--- a/vendor/packed_simd_2/src/codegen/math.rs
+++ b/vendor/packed_simd/src/codegen/math.rs
diff --git a/vendor/packed_simd_2/src/codegen/math/float.rs b/vendor/packed_simd/src/codegen/math/float.rs
index 10d21831f..10d21831f 100644
--- a/vendor/packed_simd_2/src/codegen/math/float.rs
+++ b/vendor/packed_simd/src/codegen/math/float.rs
diff --git a/vendor/packed_simd_2/src/codegen/math/float/abs.rs b/vendor/packed_simd/src/codegen/math/float/abs.rs
index 34aacc25b..34aacc25b 100644
--- a/vendor/packed_simd_2/src/codegen/math/float/abs.rs
+++ b/vendor/packed_simd/src/codegen/math/float/abs.rs
diff --git a/vendor/packed_simd_2/src/codegen/math/float/cos.rs b/vendor/packed_simd/src/codegen/math/float/cos.rs
index dec390cb7..dec390cb7 100644
--- a/vendor/packed_simd_2/src/codegen/math/float/cos.rs
+++ b/vendor/packed_simd/src/codegen/math/float/cos.rs
diff --git a/vendor/packed_simd_2/src/codegen/math/float/cos_pi.rs b/vendor/packed_simd/src/codegen/math/float/cos_pi.rs
index e283280ee..e283280ee 100644
--- a/vendor/packed_simd_2/src/codegen/math/float/cos_pi.rs
+++ b/vendor/packed_simd/src/codegen/math/float/cos_pi.rs
diff --git a/vendor/packed_simd_2/src/codegen/math/float/exp.rs b/vendor/packed_simd/src/codegen/math/float/exp.rs
index a7b20580e..a7b20580e 100644
--- a/vendor/packed_simd_2/src/codegen/math/float/exp.rs
+++ b/vendor/packed_simd/src/codegen/math/float/exp.rs
diff --git a/vendor/packed_simd_2/src/codegen/math/float/ln.rs b/vendor/packed_simd/src/codegen/math/float/ln.rs
index a5e38cb40..a5e38cb40 100644
--- a/vendor/packed_simd_2/src/codegen/math/float/ln.rs
+++ b/vendor/packed_simd/src/codegen/math/float/ln.rs
diff --git a/vendor/packed_simd_2/src/codegen/math/float/macros.rs b/vendor/packed_simd/src/codegen/math/float/macros.rs
index 8daee1afe..8daee1afe 100644
--- a/vendor/packed_simd_2/src/codegen/math/float/macros.rs
+++ b/vendor/packed_simd/src/codegen/math/float/macros.rs
diff --git a/vendor/packed_simd_2/src/codegen/math/float/mul_add.rs b/vendor/packed_simd/src/codegen/math/float/mul_add.rs
index d37f30fa8..d37f30fa8 100644
--- a/vendor/packed_simd_2/src/codegen/math/float/mul_add.rs
+++ b/vendor/packed_simd/src/codegen/math/float/mul_add.rs
diff --git a/vendor/packed_simd_2/src/codegen/math/float/mul_adde.rs b/vendor/packed_simd/src/codegen/math/float/mul_adde.rs
index c0baeacec..c0baeacec 100644
--- a/vendor/packed_simd_2/src/codegen/math/float/mul_adde.rs
+++ b/vendor/packed_simd/src/codegen/math/float/mul_adde.rs
diff --git a/vendor/packed_simd_2/src/codegen/math/float/powf.rs b/vendor/packed_simd/src/codegen/math/float/powf.rs
index 89ca52e96..89ca52e96 100644
--- a/vendor/packed_simd_2/src/codegen/math/float/powf.rs
+++ b/vendor/packed_simd/src/codegen/math/float/powf.rs
diff --git a/vendor/packed_simd_2/src/codegen/math/float/sin.rs b/vendor/packed_simd/src/codegen/math/float/sin.rs
index d88141590..d88141590 100644
--- a/vendor/packed_simd_2/src/codegen/math/float/sin.rs
+++ b/vendor/packed_simd/src/codegen/math/float/sin.rs
diff --git a/vendor/packed_simd_2/src/codegen/math/float/sin_cos_pi.rs b/vendor/packed_simd/src/codegen/math/float/sin_cos_pi.rs
index b283d1111..b283d1111 100644
--- a/vendor/packed_simd_2/src/codegen/math/float/sin_cos_pi.rs
+++ b/vendor/packed_simd/src/codegen/math/float/sin_cos_pi.rs
diff --git a/vendor/packed_simd_2/src/codegen/math/float/sin_pi.rs b/vendor/packed_simd/src/codegen/math/float/sin_pi.rs
index 0c8f6bb12..0c8f6bb12 100644
--- a/vendor/packed_simd_2/src/codegen/math/float/sin_pi.rs
+++ b/vendor/packed_simd/src/codegen/math/float/sin_pi.rs
diff --git a/vendor/packed_simd_2/src/codegen/math/float/sqrt.rs b/vendor/packed_simd/src/codegen/math/float/sqrt.rs
index 67bb0a2a9..67bb0a2a9 100644
--- a/vendor/packed_simd_2/src/codegen/math/float/sqrt.rs
+++ b/vendor/packed_simd/src/codegen/math/float/sqrt.rs
diff --git a/vendor/packed_simd_2/src/codegen/math/float/sqrte.rs b/vendor/packed_simd/src/codegen/math/float/sqrte.rs
index 58a1de1f4..58a1de1f4 100644
--- a/vendor/packed_simd_2/src/codegen/math/float/sqrte.rs
+++ b/vendor/packed_simd/src/codegen/math/float/sqrte.rs
diff --git a/vendor/packed_simd_2/src/codegen/math/float/tanh.rs b/vendor/packed_simd/src/codegen/math/float/tanh.rs
index 2c0dd3dc3..4243b0d88 100644
--- a/vendor/packed_simd_2/src/codegen/math/float/tanh.rs
+++ b/vendor/packed_simd/src/codegen/math/float/tanh.rs
@@ -3,6 +3,9 @@
// FIXME 64-bit 1 elem vectors tanh
+#[cfg(not(feature = "std"))]
+use num_traits::Float;
+
use crate::*;
pub(crate) trait Tanh {
@@ -22,11 +25,11 @@ macro_rules! define_tanh {
};
(f32 => $name:ident, $type:ty, $lanes:expr) => {
- define_tanh!($name, f32, $type, $lanes, libm::F32Ext);
+ define_tanh!($name, f32, $type, $lanes, Float);
};
(f64 => $name:ident, $type:ty, $lanes:expr) => {
- define_tanh!($name, f64, $type, $lanes, libm::F64Ext);
+ define_tanh!($name, f64, $type, $lanes, Float);
};
}
@@ -43,11 +46,11 @@ define_tanh!(f64 => tanh_v4f64, f64x4, 4);
define_tanh!(f64 => tanh_v8f64, f64x8, 8);
fn tanh_f32(x: f32) -> f32 {
- libm::F32Ext::tanh(x)
+ Float::tanh(x)
}
fn tanh_f64(x: f64) -> f64 {
- libm::F64Ext::tanh(x)
+ Float::tanh(x)
}
gen_unary_impl_table!(Tanh, tanh);
diff --git a/vendor/packed_simd_2/src/codegen/pointer_sized_int.rs b/vendor/packed_simd/src/codegen/pointer_sized_int.rs
index 55cbc297a..55cbc297a 100644
--- a/vendor/packed_simd_2/src/codegen/pointer_sized_int.rs
+++ b/vendor/packed_simd/src/codegen/pointer_sized_int.rs
diff --git a/vendor/packed_simd_2/src/codegen/reductions.rs b/vendor/packed_simd/src/codegen/reductions.rs
index 302ca6d88..302ca6d88 100644
--- a/vendor/packed_simd_2/src/codegen/reductions.rs
+++ b/vendor/packed_simd/src/codegen/reductions.rs
diff --git a/vendor/packed_simd_2/src/codegen/reductions/mask.rs b/vendor/packed_simd/src/codegen/reductions/mask.rs
index a78bcc563..a78bcc563 100644
--- a/vendor/packed_simd_2/src/codegen/reductions/mask.rs
+++ b/vendor/packed_simd/src/codegen/reductions/mask.rs
diff --git a/vendor/packed_simd_2/src/codegen/reductions/mask/aarch64.rs b/vendor/packed_simd/src/codegen/reductions/mask/aarch64.rs
index b2db52c89..b2db52c89 100644
--- a/vendor/packed_simd_2/src/codegen/reductions/mask/aarch64.rs
+++ b/vendor/packed_simd/src/codegen/reductions/mask/aarch64.rs
diff --git a/vendor/packed_simd_2/src/codegen/reductions/mask/arm.rs b/vendor/packed_simd/src/codegen/reductions/mask/arm.rs
index 41c3cbc58..41c3cbc58 100644
--- a/vendor/packed_simd_2/src/codegen/reductions/mask/arm.rs
+++ b/vendor/packed_simd/src/codegen/reductions/mask/arm.rs
diff --git a/vendor/packed_simd_2/src/codegen/reductions/mask/fallback.rs b/vendor/packed_simd/src/codegen/reductions/mask/fallback.rs
index 4c377a687..4c377a687 100644
--- a/vendor/packed_simd_2/src/codegen/reductions/mask/fallback.rs
+++ b/vendor/packed_simd/src/codegen/reductions/mask/fallback.rs
diff --git a/vendor/packed_simd_2/src/codegen/reductions/mask/fallback_impl.rs b/vendor/packed_simd/src/codegen/reductions/mask/fallback_impl.rs
index 0d246e2fd..0d246e2fd 100644
--- a/vendor/packed_simd_2/src/codegen/reductions/mask/fallback_impl.rs
+++ b/vendor/packed_simd/src/codegen/reductions/mask/fallback_impl.rs
diff --git a/vendor/packed_simd_2/src/codegen/reductions/mask/x86.rs b/vendor/packed_simd/src/codegen/reductions/mask/x86.rs
index 4bf509806..4bf509806 100644
--- a/vendor/packed_simd_2/src/codegen/reductions/mask/x86.rs
+++ b/vendor/packed_simd/src/codegen/reductions/mask/x86.rs
diff --git a/vendor/packed_simd_2/src/codegen/reductions/mask/x86/avx.rs b/vendor/packed_simd/src/codegen/reductions/mask/x86/avx.rs
index 61f352d22..61f352d22 100644
--- a/vendor/packed_simd_2/src/codegen/reductions/mask/x86/avx.rs
+++ b/vendor/packed_simd/src/codegen/reductions/mask/x86/avx.rs
diff --git a/vendor/packed_simd_2/src/codegen/reductions/mask/x86/avx2.rs b/vendor/packed_simd/src/codegen/reductions/mask/x86/avx2.rs
index d37d02342..d37d02342 100644
--- a/vendor/packed_simd_2/src/codegen/reductions/mask/x86/avx2.rs
+++ b/vendor/packed_simd/src/codegen/reductions/mask/x86/avx2.rs
diff --git a/vendor/packed_simd_2/src/codegen/reductions/mask/x86/sse.rs b/vendor/packed_simd/src/codegen/reductions/mask/x86/sse.rs
index e0c9aee92..e0c9aee92 100644
--- a/vendor/packed_simd_2/src/codegen/reductions/mask/x86/sse.rs
+++ b/vendor/packed_simd/src/codegen/reductions/mask/x86/sse.rs
diff --git a/vendor/packed_simd_2/src/codegen/reductions/mask/x86/sse2.rs b/vendor/packed_simd/src/codegen/reductions/mask/x86/sse2.rs
index bbb52fa47..bbb52fa47 100644
--- a/vendor/packed_simd_2/src/codegen/reductions/mask/x86/sse2.rs
+++ b/vendor/packed_simd/src/codegen/reductions/mask/x86/sse2.rs
diff --git a/vendor/packed_simd_2/src/codegen/shuffle.rs b/vendor/packed_simd/src/codegen/shuffle.rs
index d3acd48f5..d3acd48f5 100644
--- a/vendor/packed_simd_2/src/codegen/shuffle.rs
+++ b/vendor/packed_simd/src/codegen/shuffle.rs
diff --git a/vendor/packed_simd_2/src/codegen/shuffle1_dyn.rs b/vendor/packed_simd/src/codegen/shuffle1_dyn.rs
index 19d457a45..19d457a45 100644
--- a/vendor/packed_simd_2/src/codegen/shuffle1_dyn.rs
+++ b/vendor/packed_simd/src/codegen/shuffle1_dyn.rs
diff --git a/vendor/packed_simd_2/src/codegen/swap_bytes.rs b/vendor/packed_simd/src/codegen/swap_bytes.rs
index 9cf34a3e0..9cf34a3e0 100644
--- a/vendor/packed_simd_2/src/codegen/swap_bytes.rs
+++ b/vendor/packed_simd/src/codegen/swap_bytes.rs
diff --git a/vendor/packed_simd_2/src/codegen/v128.rs b/vendor/packed_simd/src/codegen/v128.rs
index 9506424fa..9506424fa 100644
--- a/vendor/packed_simd_2/src/codegen/v128.rs
+++ b/vendor/packed_simd/src/codegen/v128.rs
diff --git a/vendor/packed_simd_2/src/codegen/v16.rs b/vendor/packed_simd/src/codegen/v16.rs
index 4d55a6d89..4d55a6d89 100644
--- a/vendor/packed_simd_2/src/codegen/v16.rs
+++ b/vendor/packed_simd/src/codegen/v16.rs
diff --git a/vendor/packed_simd_2/src/codegen/v256.rs b/vendor/packed_simd/src/codegen/v256.rs
index 5ca4759f0..5ca4759f0 100644
--- a/vendor/packed_simd_2/src/codegen/v256.rs
+++ b/vendor/packed_simd/src/codegen/v256.rs
diff --git a/vendor/packed_simd_2/src/codegen/v32.rs b/vendor/packed_simd/src/codegen/v32.rs
index ae1dabd00..ae1dabd00 100644
--- a/vendor/packed_simd_2/src/codegen/v32.rs
+++ b/vendor/packed_simd/src/codegen/v32.rs
diff --git a/vendor/packed_simd_2/src/codegen/v512.rs b/vendor/packed_simd/src/codegen/v512.rs
index bf9511034..bf9511034 100644
--- a/vendor/packed_simd_2/src/codegen/v512.rs
+++ b/vendor/packed_simd/src/codegen/v512.rs
diff --git a/vendor/packed_simd_2/src/codegen/v64.rs b/vendor/packed_simd/src/codegen/v64.rs
index 3cfb67c1a..3cfb67c1a 100644
--- a/vendor/packed_simd_2/src/codegen/v64.rs
+++ b/vendor/packed_simd/src/codegen/v64.rs
diff --git a/vendor/packed_simd_2/src/codegen/vPtr.rs b/vendor/packed_simd/src/codegen/vPtr.rs
index abd3aa877..abd3aa877 100644
--- a/vendor/packed_simd_2/src/codegen/vPtr.rs
+++ b/vendor/packed_simd/src/codegen/vPtr.rs
diff --git a/vendor/packed_simd_2/src/codegen/vSize.rs b/vendor/packed_simd/src/codegen/vSize.rs
index d5db03991..d5db03991 100644
--- a/vendor/packed_simd_2/src/codegen/vSize.rs
+++ b/vendor/packed_simd/src/codegen/vSize.rs
diff --git a/vendor/packed_simd_2/src/lib.rs b/vendor/packed_simd/src/lib.rs
index 277cc818b..867cc10e9 100644
--- a/vendor/packed_simd_2/src/lib.rs
+++ b/vendor/packed_simd/src/lib.rs
@@ -26,7 +26,7 @@
//! are applied to each vector lane in isolation of the others:
//!
//! ```
-//! # use packed_simd_2::*;
+//! # use packed_simd::*;
//! let a = i32x4::new(1, 2, 3, 4);
//! let b = i32x4::new(5, 6, 7, 8);
//! assert_eq!(a + b, i32x4::new(6, 8, 10, 12));
@@ -35,7 +35,7 @@
//! Many "horizontal" operations are also provided:
//!
//! ```
-//! # use packed_simd_2::*;
+//! # use packed_simd::*;
//! # let a = i32x4::new(1, 2, 3, 4);
//! assert_eq!(a.wrapping_sum(), 10);
//! ```
@@ -47,7 +47,7 @@
//! and performing a single horizontal operation at the end:
//!
//! ```
-//! # use packed_simd_2::*;
+//! # use packed_simd::*;
//! fn reduce(x: &[i32]) -> i32 {
//! assert_eq!(x.len() % 4, 0);
//! let mut sum = i32x4::splat(0); // [0, 0, 0, 0]
@@ -79,7 +79,7 @@
//! ## Basic operations
//!
//! ```
-//! # use packed_simd_2::*;
+//! # use packed_simd::*;
//! // Sets all elements to `0`:
//! let a = i32x4::splat(0);
//!
@@ -107,7 +107,7 @@
//! to be performed:
//!
//! ```
-//! # use packed_simd_2::*;
+//! # use packed_simd::*;
//! let a = i32x4::new(1, 1, 2, 2);
//!
//! // Add `1` to the first two lanes of the vector.
@@ -140,7 +140,7 @@
//! All vertical comparison operations returns masks:
//!
//! ```
-//! # use packed_simd_2::*;
+//! # use packed_simd::*;
//! let a = i32x4::new(1, 1, 3, 3);
//! let b = i32x4::new(2, 2, 0, 0);
//!
@@ -241,6 +241,7 @@
clippy::from_over_into,
)]
#![cfg_attr(test, feature(hashmap_internals))]
+#![cfg_attr(doc_cfg, feature(doc_cfg))]
#![deny(rust_2018_idioms, clippy::missing_inline_in_public_items)]
#![no_std]
@@ -279,7 +280,7 @@ pub use crate::sealed::{Mask, Shuffle, Simd as SimdVector, SimdArray};
/// # Examples
///
/// ```
-/// # use packed_simd_2::Simd;
+/// # use packed_simd::Simd;
/// let v = Simd::<[i32; 4]>::new(0, 1, 2, 3);
/// assert_eq!(v.extract(2), 2);
/// ```
diff --git a/vendor/packed_simd_2/src/masks.rs b/vendor/packed_simd/src/masks.rs
index 04534eab2..04534eab2 100644
--- a/vendor/packed_simd_2/src/masks.rs
+++ b/vendor/packed_simd/src/masks.rs
diff --git a/vendor/packed_simd_2/src/sealed.rs b/vendor/packed_simd/src/sealed.rs
index 0ec20300f..0ec20300f 100644
--- a/vendor/packed_simd_2/src/sealed.rs
+++ b/vendor/packed_simd/src/sealed.rs
diff --git a/vendor/packed_simd_2/src/testing.rs b/vendor/packed_simd/src/testing.rs
index 6320b2805..6320b2805 100644
--- a/vendor/packed_simd_2/src/testing.rs
+++ b/vendor/packed_simd/src/testing.rs
diff --git a/vendor/packed_simd_2/src/testing/macros.rs b/vendor/packed_simd/src/testing/macros.rs
index 7bc4268b9..7bc4268b9 100644
--- a/vendor/packed_simd_2/src/testing/macros.rs
+++ b/vendor/packed_simd/src/testing/macros.rs
diff --git a/vendor/packed_simd_2/src/testing/utils.rs b/vendor/packed_simd/src/testing/utils.rs
index 7d8f39573..7d8f39573 100644
--- a/vendor/packed_simd_2/src/testing/utils.rs
+++ b/vendor/packed_simd/src/testing/utils.rs
diff --git a/vendor/packed_simd_2/src/v128.rs b/vendor/packed_simd/src/v128.rs
index 7949f6619..7949f6619 100644
--- a/vendor/packed_simd_2/src/v128.rs
+++ b/vendor/packed_simd/src/v128.rs
diff --git a/vendor/packed_simd_2/src/v16.rs b/vendor/packed_simd/src/v16.rs
index 4ca5afb2a..4ca5afb2a 100644
--- a/vendor/packed_simd_2/src/v16.rs
+++ b/vendor/packed_simd/src/v16.rs
diff --git a/vendor/packed_simd_2/src/v256.rs b/vendor/packed_simd/src/v256.rs
index f0c3bc281..f0c3bc281 100644
--- a/vendor/packed_simd_2/src/v256.rs
+++ b/vendor/packed_simd/src/v256.rs
diff --git a/vendor/packed_simd_2/src/v32.rs b/vendor/packed_simd/src/v32.rs
index 75a1838e5..75a1838e5 100644
--- a/vendor/packed_simd_2/src/v32.rs
+++ b/vendor/packed_simd/src/v32.rs
diff --git a/vendor/packed_simd_2/src/v512.rs b/vendor/packed_simd/src/v512.rs
index 4c8c71338..4c8c71338 100644
--- a/vendor/packed_simd_2/src/v512.rs
+++ b/vendor/packed_simd/src/v512.rs
diff --git a/vendor/packed_simd_2/src/v64.rs b/vendor/packed_simd/src/v64.rs
index bf6b9de61..bf6b9de61 100644
--- a/vendor/packed_simd_2/src/v64.rs
+++ b/vendor/packed_simd/src/v64.rs
diff --git a/vendor/packed_simd_2/src/vPtr.rs b/vendor/packed_simd/src/vPtr.rs
index e34cb170e..e34cb170e 100644
--- a/vendor/packed_simd_2/src/vPtr.rs
+++ b/vendor/packed_simd/src/vPtr.rs
diff --git a/vendor/packed_simd_2/src/vSize.rs b/vendor/packed_simd/src/vSize.rs
index b5d891006..b5d891006 100644
--- a/vendor/packed_simd_2/src/vSize.rs
+++ b/vendor/packed_simd/src/vSize.rs
diff --git a/vendor/packed_simd_2/tests/endianness.rs b/vendor/packed_simd/tests/endianness.rs
index da12c2338..17a7796b1 100644
--- a/vendor/packed_simd_2/tests/endianness.rs
+++ b/vendor/packed_simd/tests/endianness.rs
@@ -1,7 +1,7 @@
#[cfg(target_arch = "wasm32")]
use wasm_bindgen_test::*;
-use packed_simd_2::*;
+use packed_simd::*;
use std::{mem, slice};
#[cfg_attr(not(target_arch = "wasm32"), test)]
diff --git a/vendor/packed_simd_2/.cargo-checksum.json b/vendor/packed_simd_2/.cargo-checksum.json
deleted file mode 100644
index e235b36c3..000000000
--- a/vendor/packed_simd_2/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"Cargo.toml":"dc595f9306276711bb230de128e7714dc266448740f3a53341aacf0106f00b77","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"fa4dd64f66972217d35b7653338c9e2011ccd8f3008ae7c0103272d4287f9b1d","bors.toml":"dee881dc69b9b7834e4eba5d95c3ed5a416d4628815a167d6a22d4cb4fb064b8","build.rs":"019ed29c43989782d8eec3a961654cfc172d7a7898da4eca8f654700af7e1988","ci/all.sh":"2ae6b2445b4db83833e40b37efd0016c6b9879ee988b9b3ef94db5439a3e1606","ci/android-install-ndk.sh":"0f1746108cc30bf9b9ba45bcde7b19fc1a8bdf5b0258035b4eb8dc69b75efac4","ci/android-install-sdk.sh":"3490432022c5c8f5a115c084f7a9aca1626f96c0c87ffb62019228c4346b47e4","ci/android-sysimage.sh":"ebf4e5daa1f0fe1b2092b79f0f3f161c4c4275cb744e52352c4d81ab451e4c5a","ci/benchmark.sh":"b61d19ef6b90deba8fb79dee74c8b062d94844676293da346da87bb78a9a49a4","ci/deploy_and_run_on_ios_simulator.rs":"ec8ecf82d92072676aa47f0d1a3d021b60a7ae3531153ef12d2ff4541fc294dc","ci/docker/aarch64-linux-android/Dockerfile":"ace2e7d33c87bc0f6d3962a4a3408c04557646f7f51ab99cfbf574906796b016","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"da88c0d50f16dc08448c7fdf1fa5ed2cbe576acf9e7dd85b5b818621b2a8c702","ci/docker/arm-linux-androideabi/Dockerfile":"370e55d3330a413a3ccf677b3afb3e0ef9018a5fab263faa97ae8ac017fc2286","ci/docker/arm-unknown-linux-gnueabi/Dockerfile":"bb5f8ae890707c128652290ffc544447643bf12037ddd73c6ad6989f848cb380","ci/docker/arm-unknown-linux-gnueabihf/Dockerfile":"1afaefcbc05b740859acd4e067bc92439be6bcbe8f2e9678474fb434bcd398d9","ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile":"8282ea707a94109beed47a57574755e2d58401735904a03f85fb64c578c53b4f","ci/docker/i586-unknown-linux-gnu/Dockerfile":"49792922269f371bd29da4727e9085101b27be67a6b97755d0196c63317f7abb","ci/docker/i686-unknown-linux-gnu/Dockerfile":"49792922269f371bd29da4727e9085101b27be67a6b97755d0196c63317f7abb","ci/docker/mips-unknown-linux-gnu/Dockerfile":"b2ebc25797612c4f8395fe9d407725156044955bfbcf442036b7f55b43a5f9da","ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile":"b0c1692ac65bc56dd30494b1993d8e929c48cc9c4b92029b7c7592af6d4f9220","ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile":"4e9249c179300138141d0b2b7401b11897f64aed69f541f078c1db4594df2827","ci/docker/mipsel-unknown-linux-musl/Dockerfile":"3164c52b0dcbb01afa78292b15b5c43503ccf0491cf6eb801ec2bf22ae274e52","ci/docker/powerpc-unknown-linux-gnu/Dockerfile":"786f799d0b56eb54d7b6c4b00e1aed4ce81776e14e44767e083c89d014b72004","ci/docker/powerpc64-unknown-linux-gnu/Dockerfile":"e8bc363837cd9c2d8b22402acb8c1c329efc11ba5d12170603d2fe2eae9da059","ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile":"47998d45b781d797b9e6085ebe898d90de0c952b54537a8db4e8d7503eb032d9","ci/docker/s390x-unknown-linux-gnu/Dockerfile":"93fb44df3d7fd31ead158570667c97b5076a05c3d968af4a84bc13819a8f2db8","ci/docker/sparc64-unknown-linux-gnu/Dockerfile":"da1c39a3ff1fe22e41395fa7c8934e90b4c1788e551b9aec6e38bfd94effc437","ci/docker/thumbv7neon-linux-androideabi/Dockerfile":"c2decd5591bd7a09378901bef629cd944acf052eb55e4f35b79eb9cb4d62246a","ci/docker/thumbv7neon-unknown-linux-gnueabihf/Dockerfile":"51955a8bf3c4d440f47382af6f5426ebff94ab01a04da36175babda9a057740f","ci/docker/wasm32-unknown-unknown/Dockerfile":"5a022299f56730cf8c432a07391e95e199cfa36dc8da2a96c9d185c8de93e913","ci/docker/x86_64-linux-android/Dockerfile":"685040273cf350d5509e580ac451555efa19790c8723ca2af066adadc6880ad2","ci/docker/x86_64-unknown-linux-gnu-emulated/Dockerfile":"44b6203d9290bfdc53d81219f0937e1110847a23dd982ec8c4de388354f01536","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"7f4e3ca5fa288ea70edb4d1f75309708cd30b192e2e4444e61c4d5b3b58f89cf","ci/dox.sh":"434e9611c52e389312d2b03564adf09429f10cc76fe66a8644adb104903b87b7","ci/linux-s390x.sh":"d6b732d7795b4ba131326aff893bca6228a7d2eb0e9402f135705413dbbe0dce","ci/linux-sparc64.sh":"c92966838b1ab7ad3b7a344833ee726aba6b647cf5952e56f0ad1ba420b13325","ci/lld-shim.rs":"3d7f71ec23a49e2b67f694a0168786f9a954dda15f5a138815d966643fd3fcc3","ci/max_line_width.sh":"0a1518bba4c9ecaa55694cb2e9930d0e19c265baabf73143f17f9cf285aaa5bb","ci/run-docker.sh":"92e036390ad9b0d16f109579df1b5ced2e72e9afea40c7d011400ebd3a2a90de","ci/run.sh":"41dd6a60efaaeae9661a01370cce98b631f78392859a0cf68c946c0a16edf5f7","ci/run_examples.sh":"d1a23c6c35374a0678ba5114b9b8fefd8be0a79e774872a8bf0898d1baca18d0","ci/runtest-android.rs":"145a8e9799a5223975061fe7e586ade5669ee4877a7d7a4cf6b4ab48e8e36c7c","ci/setup_benchmarks.sh":"fae3960023f6f3d1388cd2ad22fdbab4b075f1f29dd4292d7994a20783beb6cf","ci/test-runner-linux":"c8aa6025cff5306f4f31d0c61dc5f9d4dd5a1d189ab613ef8d4c367c694d9ccd","contributing.md":"2d2629310ad4d464c482bdbb5819f0d6ce223c576aeef2cdce6a1f6857085ea5","perf-guide/book.toml":"115a98284126c6b180178b44713314cc494f08a71662ee2ce15cf67f17a51064","perf-guide/src/SUMMARY.md":"3e03bffc991fdc2050f3d51842d72d9d21ea6abab56a3baf3b2d5973a78b89e1","perf-guide/src/ascii.css":"29afb08833b2fe2250f0412e1fa1161a2432a0820a14953c87124407417c741a","perf-guide/src/bound_checks.md":"5e4991ff58a183ef0cd9fdc1feb4cd12d083b44bdf87393bbb0927808ef3ce7d","perf-guide/src/float-math/approx.md":"8c09032fa2d795a0c5db1775826c850d28eb2627846d0965c60ee72de63735ad","perf-guide/src/float-math/fma.md":"311076ba4b741d604a82e74b83a8d7e8c318fcbd7f64c4392d1cf5af95c60243","perf-guide/src/float-math/fp.md":"04153e775ab6e4f0d7837bcc515230d327b04edfa34c84ce9c9e10ebaeef2be8","perf-guide/src/float-math/svml.md":"0798873b8eedaeda5fed62dc91645b57c20775a02d3cd74d8bd06958f1516506","perf-guide/src/introduction.md":"9f5a19e9e6751f25d2daad39891a0cc600974527ec4c8305843f9618910671bd","perf-guide/src/prof/linux.md":"447731eb5de7d69166728fdbc5ecb0c0c9db678ea493b45a592d67dd002184c0","perf-guide/src/prof/mca.md":"f56d54f3d20e7aa4d32052186e8237b03d65971eb5d112802b442570ff11d344","perf-guide/src/prof/profiling.md":"8a650c0fd6ede0964789bb6577557eeef1d8226a896788602ce61528e260e43c","perf-guide/src/target-feature/attribute.md":"615f88dca0a707b6c416fa605435dd6e1fb5361cc639429cbf68cd87624bd78b","perf-guide/src/target-feature/features.md":"17077760ff24c006b606dd21889c53d87228f4311f3ba3a574f9afdeacd86165","perf-guide/src/target-feature/inlining.md":"7ed1d7068d8173a00d84c16cfe5871cd68b9f04f8d0cca2d01ebc84957ebf2f6","perf-guide/src/target-feature/practice.md":"c4b371842e0086df178488fec97f20def8f0c62ee588bcd25fd948b9b1fa227e","perf-guide/src/target-feature/runtime.md":"835425f5ee597fb3e51d36e725a81ebee29f4561231d19563cd4da81dbb1cfcb","perf-guide/src/target-feature/rustflags.md":"01197acf6f0adec8db32b8591811f69cecb6555a2b05dc5d5ec27d0e3f7b065e","perf-guide/src/vert-hor-ops.md":"c6211c0ee91e60552ec592d89d9d957eedc21dee3cbd89e1ad6765ea06a27471","rust-toolchain":"2a3b62b53ddb9f167b63d22202a360811ba78df015021f704d01ee9abad4169c","rustfmt.toml":"d99a43f3f8ef9e425cf01c333fba9f0051f888f5d87ab4e8f63c2f7d0fe6620f","src/api.rs":"45508c6c0241519fc01a7f00c9105554c24c312c4e46900ef9c75139ea438305","src/api/bit_manip.rs":"c47a4d0f7451f7e35d07715e4f39a472e07457fd456fdb726864a4f6887252a3","src/api/bitmask.rs":"6d2beefd62ee5d9c8eb060bee6abc641616bf828c99f82abf97b21bf004e894b","src/api/cast.rs":"03b94a3d316ac7b7be7068810044911e965e889a0ace7bae762749ca74a92747","src/api/cast/macros.rs":"b0a14d0c83ad2ebb7a275180f6d9e3f2bc312ba57a7d3d6c39fad4e0f20f9408","src/api/cast/v128.rs":"edd0994efac4379dff26e178423a52dbb3ffeb38b1fc97cae975d744c00b4fb6","src/api/cast/v16.rs":"96bd98c2d21b0663abe6c0ab33005b1fa693f3db7ee6795351391343863484da","src/api/cast/v256.rs":"8c31fe91f5e78ef737dfba6979cc1240210cb094a89d284fe459bf8a991ca24b","src/api/cast/v32.rs":"a99a79dd84d2a5e6adf9db98705675915bd03fd1287d489c7fe38e84d7e4a086","src/api/cast/v512.rs":"c0dd526f41ed7b8a71c3743d91267554ec0a0c75834ccc2e3ecb0ef3004af642","src/api/cast/v64.rs":"6572fdba2a1241a6cd666d3f0cce3306cd2cb7e5e236172e59d5d4351c8a88af","src/api/cmp.rs":"357c3a2a09c6d4611c32dd7fa95be2fae933d513e229026ec9b44451a77b884e","src/api/cmp/eq.rs":"60f70f355bae4cb5b17db53204cacc3890f70670611c17df638d4c04f7cc8075","src/api/cmp/ord.rs":"589f7234761c294fa5df8f525bc4acd5a47cdb602207d524a0d4e19804cd9695","src/api/cmp/partial_eq.rs":"902ccb8aa01fd5738b30ba0b712669c21d4801958907e03bad23432c7dba0198","src/api/cmp/partial_ord.rs":"9db0c37d7434cdfc62d8d66912e972fa3d8c115ab2af051a6f45e414bd3e4f1c","src/api/cmp/vertical.rs":"de3d62f38eba817299aa16f1e1939954c9a447e316509397465c2830852ba053","src/api/default.rs":"67bf21c134127d12a7028c8b88a57f0ceee8ccbd74976da8ca74eb9f16a174d5","src/api/fmt.rs":"67fb804bb86b6cd77cf8cd492b5733ce437071b66fe3297278b8a6552c325dda","src/api/fmt/binary.rs":"02b2b287f7404f8a983813cf70c87108c8da3835578b63ab303116885f609413","src/api/fmt/debug.rs":"56e1c3bdc092747344fffaafff9da7163ee7827857f6fb7cb1c9923eca4f6fa0","src/api/fmt/lower_hex.rs":"558fd592f7f485712fb051509cecc7174a21e6bf62e5ce64766e75afc97bb8e1","src/api/fmt/octal.rs":"3b2e70877a4f368c7704f8e254236c014c365c74d93371c1feb5f030e6c66422","src/api/fmt/upper_hex.rs":"2a442f666bc80e22d41f903f881238fe114dd49344c3ed69849250e853cafc5d","src/api/from.rs":"2e599d8329cb05eaf06224cc441355c4b7b51254fc19256619333be8c149d444","src/api/from/from_array.rs":"dd3fc64fb17d6184bb60343f8da26a05edf0e5f3c14caf55d49fa15e21d948dc","src/api/from/from_vector.rs":"9764371aa9e6005aace74dea14f59e5611a095b7cf42707940924749282c52f0","src/api/hash.rs":"5076ece87969592c876486f5b1ea8affbeaec379d1a14a30859e0aa5592019de","src/api/into_bits.rs":"1ee15923352786b9ab4a31fa506762297116b18cfdb8e72853abc8ad001651d2","src/api/into_bits/arch_specific.rs":"e7445021f3908326bfee758835e5fc5ad56aa1baa77fc1c58abe4350c66c670a","src/api/into_bits/macros.rs":"bb4fe99be2af6a21d805efab44c8e4e61a7b2adb42a65504a0cf26d13efdadcd","src/api/into_bits/v128.rs":"145a44922b09a5ca5b62d88a461d327d399a997a15db4b11d7b17e554a9fa4c0","src/api/into_bits/v16.rs":"f4f4f61ba88aa51b158ec56ca3dce234349aea0daf2b3029a14ab5125d1e41e5","src/api/into_bits/v256.rs":"8cea9c5d9809f11323cb7cdc53b83df593fd17caf926251e412ae9777bed547f","src/api/into_bits/v32.rs":"905ba683d342fa32f4202b80bb46530807bd0a5b588f6c2e8c9f475223c47775","src/api/into_bits/v512.rs":"e25afa1fbf088a5d58e7d75d197b6cd4c56637ea28542ba18e46a451f29d04e7","src/api/into_bits/v64.rs":"d6238022ccff7b92e55b3f6017fc269acb6f36330a6d7e8fb389853a0f1b6478","src/api/math.rs":"8b2a2fc651917a850539f993aa0b9e5bf4da67b11685285b8de8cdca311719ec","src/api/math/float.rs":"969a75cdb3743c5ac7cde653d1a7f659ac65f2a5afb004c9928a7b34b79c3e39","src/api/math/float/abs.rs":"5b6b2701e2e11135b7ce58a05052ea8120e10e4702c95d046b9d21b827b26bf8","src/api/math/float/consts.rs":"6302c9261da4291d144d5bb53493cdd073498feb40955fb6860ea3c4d06c978a","src/api/math/float/cos.rs":"4c2dd7173728ef189314f1576c9486e03be21b7da98843b2f9011282a7979e31","src/api/math/float/exp.rs":"7c6d5f1e304f498a01cfa23b92380c815d7da0ad94eae3483783bc377d287eef","src/api/math/float/ln.rs":"54c7583f3df793b39ff57534fade27b41bb992439e5dc178252f5ca3190a3e54","src/api/math/float/mul_add.rs":"62cac77660d20159276d4c9ef066eb90c81cbddb808e8e157182c607625ad2eb","src/api/math/float/mul_adde.rs":"bae056ee9f3a70df39ec3c3b2f6437c65303888a7b843ef1a5bcf1f5aca0e602","src/api/math/float/powf.rs":"9ddb938984b36d39d82a82f862f80df8f7fb013f1d222d45698d41d88472f568","src/api/math/float/recpre.rs":"589225794ff1dbf31158dff660e6d4509ecc8befbb57c633900dea5ac0b840d6","src/api/math/float/rsqrte.rs":"a32abdcc318d7ccc8448231f54d75b884b7cbeb03a7d595713ab6243036f4dbf","src/api/math/float/sin.rs":"cbd3622b7df74f19691743001c8cf747a201f8977ad90542fee915f37dcd1e49","src/api/math/float/sqrt.rs":"0c66d5d63fb08e4d99c6b82a8828e41173aff1ac9fa1a2764a11fac217ccf2ac","src/api/math/float/sqrte.rs":"731e1c9f321b662accdd27dacb3aac2e8043b7aecb2f2161dde733bd9f025362","src/api/math/float/tanh.rs":"e57940434cc05981b086f0f3b92d32caceb38d67b90aebce5d3ed8e07c80538f","src/api/minimal.rs":"1f22bcc528555444e76de569ec0ae2029b9ae9d04805efeafa93369c8098036b","src/api/minimal/iuf.rs":"819cff26d3e196f807645bcc1d79eb27d9f175edb89910f2274d52a1e913cd11","src/api/minimal/mask.rs":"0cae10ae1fc65f5070e686c0c79bfba27b86b33d6c399367bd4848fb367dcec4","src/api/minimal/ptr.rs":"f65ebf21866a863485344432d9a7a9b7418f7fad5fdf841a4e2fa56ec0766ad0","src/api/ops.rs":"3e273b277a0f3019d42c3c59ca94a5afd4885d5ae6d2182e5089bbeec9de42ee","src/api/ops/scalar_arithmetic.rs":"d2d5ad897a59dd0787544f927e0e7ca4072c3e58b0f4a2324083312b0d5a21d7","src/api/ops/scalar_bitwise.rs":"482204e459ca6be79568e1c9f70adbe2d2151412ddf122fb2161be8ebb51c40c","src/api/ops/scalar_mask_bitwise.rs":"c250f52042e37b22d57256c80d4604104cfd2fbe2a2e127c676267270ca5d350","src/api/ops/scalar_shifts.rs":"c4773d435c3f9da4454327e6fbb2b5b41a1c0ebb1cca7372e69dc7a344a1b6e4","src/api/ops/vector_arithmetic.rs":"ddca15d09ddeef502c2ed66117a62300ca65d87e959e8b622d767bdf1c307910","src/api/ops/vector_bitwise.rs":"b3968f7005b649edcc22a54e2379b14d5ee19045f2e784029805781ae043b5ee","src/api/ops/vector_float_min_max.rs":"76bf8cb607e2c442923c1da1061a6b80d742d607408033c2a3761161114cf2a0","src/api/ops/vector_int_min_max.rs":"a378789c6ff9b32a51fbd0a97ffd36ed102cd1fe6a067d2b02017c1df342def6","src/api/ops/vector_mask_bitwise.rs":"5052d18517d765415d40327e6e8e55a312daaca0a5e2aec959bfa54b1675f9c8","src/api/ops/vector_neg.rs":"5c62f6b0221983cdbd23cd0a3af3672e6ba1255f0dfe8b19aae6fbd6503e231b","src/api/ops/vector_rotates.rs":"ee319eaaa449dc50ea8ef05b89d38519c6faa6753dfdce432ea7bb8520e4e8e7","src/api/ops/vector_shifts.rs":"e510be14127c0ffd58a2573a39701da3557d66bedec09837ac8bbd44d579da00","src/api/ptr.rs":"8a793251bed6130dcfb2f1519ceaa18b751bbb15875928d0fb6deb5a5e07523a","src/api/ptr/gather_scatter.rs":"3d614f9d5b4ca201a9f7e46af4405e1d2c28ecee1620297c23b52e37b92cc0ea","src/api/reductions.rs":"ae5baca81352ecd44526d6c30c0a1feeda475ec73ddd3c3ec6b14e944e5448ee","src/api/reductions/bitwise.rs":"8bf910ae226188bd15fc7e125f058cd2566b6186fcd0cd8fd020f352c39ce139","src/api/reductions/float_arithmetic.rs":"47a5679896db2cbb56c31372fe42143da015b6beae7db5d2f3a0309ddf427ae1","src/api/reductions/integer_arithmetic.rs":"c2df3cf7493cca4174f2c65aea422a3d20d8a23af03f8d57cef72c19fee8f20d","src/api/reductions/mask.rs":"db83327a950e33a317f37fd33ca4e20c347fb415975ec024f3e23da8509425af","src/api/reductions/min_max.rs":"6af8c9aa45c69961b1b6fc205395f4767d4421869fb105fb3d563c5605fc13cd","src/api/select.rs":"6b07e7e8026df561f7307221a896f0fbb272536f41b9109040ac094c24c69331","src/api/shuffle.rs":"26458aec2557bfab41b7765f72aefbff3a7ee08cdc689981a81f133f58ee368b","src/api/shuffle1_dyn.rs":"bfea5a91905b31444e9ef7ca6eddb7a9606b7e22d3f71bb842eb2795a0346620","src/api/slice.rs":"ee87484e8af329547b9a5d4f2a69e8bed6ea10bbd96270d706083843d4eea2ac","src/api/slice/from_slice.rs":"9b6f01ace2d12ef45c84608bb7aad3a122e2cc319b2d99170fc332a568b8de63","src/api/slice/write_to_slice.rs":"244b6bd6ccffa6e5a195f8b1abc66d94251b6d16b2ec3fe4d76d32caec68261e","src/api/swap_bytes.rs":"4a6792a2e49a77475e1b237592b4b2804dbddb79c474331acd0dd71b36934259","src/codegen.rs":"db4f232fb9f5728db310b87dc8c4733be48afacab1053798c06106bef9a42b05","src/codegen/bit_manip.rs":"525ea6ff7ad1e043b6f6136992166f1803ed5563b7f6fc292c1c40257d20e264","src/codegen/llvm.rs":"b4ccbc0bad90038f00fc3c158736462d01d0053df3afa00f9169e67d1a264444","src/codegen/math.rs":"dfcf02ad34e2fdfe22c3f1cc2822001cc895e65031b4d06e585e5047839febb7","src/codegen/math/float.rs":"b2f31f479c5c70a6ff9ad33872c1e65506f72882b77a2e3f9e71c42e92af9355","src/codegen/math/float/abs.rs":"d5aaadcf540bdb9b4264dca6471a255fd7bf509e763bef0239c0144a68466fea","src/codegen/math/float/cos.rs":"17f28d2900c852dca221fa9c92a9cd5fe7fd2df8d427bbc60216c749b2be013d","src/codegen/math/float/cos_pi.rs":"dbaf9f443f9846a491d4ec52210a7b5835dd593b03366e3135b05c37d70f9d6c","src/codegen/math/float/exp.rs":"d300058a4bcc7ae7976f216f81902cd73a9e603ad63880dff3bbc866c27a9f37","src/codegen/math/float/ln.rs":"c851e211e43f8256093ba75b03ae0c307c9962ee66d94f09b4dd80068190cbdf","src/codegen/math/float/macros.rs":"fc9924869ed85e4795983af228cacf23158f4f35919adce16c920ad4a3f0a009","src/codegen/math/float/mul_add.rs":"041a5b69d5991d93ef795351b17560c10faf80b78fd26ad7df42a239b32cf9de","src/codegen/math/float/mul_adde.rs":"d71d5f0f3333b62a7439b823cb7adf5340ea1555ce820fb4a3f4cb922f73f5f5","src/codegen/math/float/powf.rs":"9742c3877f1a5509ca5c9492a40884b6579ba6dd11c26b7112e63f70666b395d","src/codegen/math/float/sin.rs":"0e9868d35531566509f3a01d85d5253045eb4afa8525d8407dcc1f5f33c56036","src/codegen/math/float/sin_cos_pi.rs":"8e6b6142d7dd240cdb36669722e82ab9810a2261e86e659f7d97a942ad8b1258","src/codegen/math/float/sin_pi.rs":"bb6d39db8f921e03a301fc5206ac1a61a97def8a2cb83b87ccf189f3fc48d548","src/codegen/math/float/sqrt.rs":"e6ebb0c5f428efad1f672b9a8fe4e58534dbf1ea5a8fe092ce5ce76b52fe89cb","src/codegen/math/float/sqrte.rs":"23acfaea38d0e081a6d9021c1094e813d0cfd12c58c1eca9662aade5e625d51c","src/codegen/math/float/tanh.rs":"0b345a896c67a0c7a0055a8d8195279540d83480cada603e3271e27a5e797cb3","src/codegen/pointer_sized_int.rs":"6ca13c214b6cf7e0929dbe18e96a16fc0bb7d8799608df29c4c8115490f99e01","src/codegen/reductions.rs":"8eb18ebac76985d2aa30262a2edd8cb004230b511a765d657525f677a585c12c","src/codegen/reductions/mask.rs":"e67f35a1f4d156a4894a2d6ea5a935b4d898cf70eefb2715f5c1cc165e776c11","src/codegen/reductions/mask/aarch64.rs":"84b101c17cad1ede4eb6d38cada0ac7da239dba8cea3badd3829b967e558431f","src/codegen/reductions/mask/arm.rs":"aaa07129bd078ae7e677cf8b8e67ec9f30536606a0c7ed1baaa18fd1793bb218","src/codegen/reductions/mask/fallback.rs":"3eb9319d2c7cf19216b607b8459612c4e027b643cf11b036937d36896bf76786","src/codegen/reductions/mask/fallback_impl.rs":"76547f396e55ef403327c77c314cf8db8c7a5c9b9819bfb925abeacf130249e5","src/codegen/reductions/mask/x86.rs":"36dcd8af4ab99730a078ed113d3955f74eb1a2876e2e6d9f224e0ff462c216d1","src/codegen/reductions/mask/x86/avx.rs":"3a40868b38c86e35aefb96d7578de6322efe89d8135e0366359b54ddd06f861a","src/codegen/reductions/mask/x86/avx2.rs":"677aed3f056285285daa3adff8bc65e739630b4424defa6d9665e160f027507e","src/codegen/reductions/mask/x86/sse.rs":"8522f6ed03f6c32dd577d4298df477c08aeaaa38563706f29096e1911ed731f2","src/codegen/reductions/mask/x86/sse2.rs":"54ec56e49b0c6841eccb719e4f310d65fe767c04136b2ec20bd8b9d7d9897b9e","src/codegen/shuffle.rs":"1ec2930f4e1acc43ac30b518af298d466a79e9e75734a51c380b7810efd1a27f","src/codegen/shuffle1_dyn.rs":"3f13ca1597378758d05106bf5ff3715eee531f3cb6d88f48b9182bd6c9386b51","src/codegen/swap_bytes.rs":"c67c86e91ca3fc77539e0efcea081a3c62548cccf503963ae408f2e86f4e6a21","src/codegen/v128.rs":"94226b31ec403d18d9d2fe06713f147c9c79e9b5f9105089088266313f843185","src/codegen/v16.rs":"ddec4ffb66b6f7aaffb9a1780c5ddba82557abd74f45073d335047e04cf74924","src/codegen/v256.rs":"6b63917f0444118d6b1595bff2045e59b97c4d24012bd575f69f1f0efc5a0241","src/codegen/v32.rs":"3477b3c5540aed86e61e2f5807dd31db947413cec9181c587d93ed6ec74f0eba","src/codegen/v512.rs":"5854f99d3aabc4cd42b28a20d9ce447756dc2ba024a409a69b6a8ae1f1842fc5","src/codegen/v64.rs":"e9e89caebfe63d10c0cbca61e4dfdba3b7e02ee0989170f80beed23237ddd950","src/codegen/vPtr.rs":"f0753b405cdc865bdf8e82c6505f299ea1f96136239ebbaf7f9ce93d310764b8","src/codegen/vSize.rs":"c89f5fdeb28ac4c8272ed1816fce03d9d95308cc32bb2533bd8b20cd5ac102ac","src/lib.rs":"dee6d850ba925493380d1f0c20615c21daa1e81c352798b6b42e47a4fbd17ce2","src/masks.rs":"70fc0abe4c2907ce2a491c574e1cfb9f3423385da2e1a923a48c9c13f8ba6ed8","src/sealed.rs":"ae7fdeaf5d84cd7710ed730ca72ca7eaba93df6cb0acb183e5c0a7327acf197f","src/testing.rs":"896669c08d8c801448a4d2fadc9d633eda0fbe879d229997e2a182e31278e469","src/testing/macros.rs":"403bbc5ecb7c786fe36156df302d0c07a8122408dbb15f7474d7682224ba1106","src/testing/utils.rs":"41912a92266dfe884647fc035e4242fd746100df8e839808ae0397af3759a3c8","src/v128.rs":"16cf9a8e7156b899ee9b9cd3f2dba9d13ec63289bea8c3ee9ae2e43ad9510288","src/v16.rs":"cb6465cf1e00bf530183af1819b9fe3d7eec978f8765d5e85d9b58a39a4b4045","src/v256.rs":"fe235017da18c7f3c361831c60e3173ad304d8ea1e95d64ebebc79da2d708511","src/v32.rs":"145d347855bac59b2de6508f9e594654e6c330423af9edc0e2ac8f4d1abdf45e","src/v512.rs":"f372f277f3e62eb5c945bb1c460333fdb17b6974fcc876633788ff53bded9599","src/v64.rs":"0b8079881b71575e3414be0b7f8f7eaba65281ba6732f2b2f61f73e95b6f48f7","src/vPtr.rs":"8b3e433d487180bb4304ff71245ecad90f0010f43e139a72027b672abe58facc","src/vSize.rs":"eda5aa020706cbf94d15bada41a0c2a35fc8f3f37cb7c2cd6f34d201399a495e","tests/endianness.rs":"2783d727e8ff8789211e03120634cd3ad9f8972fc484012681b5b63cf89408a7"},"package":"a1914cd452d8fccd6f9db48147b29fd4ae05bea9dc5d9ad578509f72415de282"} \ No newline at end of file
diff --git a/vendor/packed_simd_2/ci/android-install-ndk.sh b/vendor/packed_simd_2/ci/android-install-ndk.sh
deleted file mode 100644
index 818e78446..000000000
--- a/vendor/packed_simd_2/ci/android-install-ndk.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/env sh
-# Copyright 2016 The Rust Project Developers. See the COPYRIGHT
-# file at the top-level directory of this distribution and at
-# http://rust-lang.org/COPYRIGHT.
-#
-# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-# option. This file may not be copied, modified, or distributed
-# except according to those terms.
-
-set -ex
-
-curl --retry 5 -O https://dl.google.com/android/repository/android-ndk-r15b-linux-x86_64.zip
-unzip -q android-ndk-r15b-linux-x86_64.zip
-
-case "$1" in
- aarch64)
- arch=arm64
- ;;
-
- i686)
- arch=x86
- ;;
-
- *)
- arch=$1
- ;;
-esac;
-
-android-ndk-r15b/build/tools/make_standalone_toolchain.py \
- --unified-headers \
- --install-dir "/android/ndk-${1}" \
- --arch "${arch}" \
- --api 24
-
-rm -rf ./android-ndk-r15b-linux-x86_64.zip ./android-ndk-r15b
diff --git a/vendor/packed_simd_2/rust-toolchain b/vendor/packed_simd_2/rust-toolchain
deleted file mode 100644
index 07ade694b..000000000
--- a/vendor/packed_simd_2/rust-toolchain
+++ /dev/null
@@ -1 +0,0 @@
-nightly \ No newline at end of file
diff --git a/vendor/papergrid/.cargo-checksum.json b/vendor/papergrid/.cargo-checksum.json
new file mode 100644
index 000000000..b2a89dc61
--- /dev/null
+++ b/vendor/papergrid/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.lock":"7e044f069f7fb00baab23079cb80e6c3718b79158fe0be6946f36d4199b4988e","Cargo.toml":"0381d261cebb9e568d34d11f91770a1424edb81c08a7f9e624b25b9e4e67bece","LICENSE-MIT":"49ad3fe9bc9d4f0798a481e1c73ac833c52b4525c72fb2c4b0cd1a510e88a177","README.md":"22e04f2d214da24344d16821627e51005979b94b6a76138f1c7d7f3b74ed821d","examples/color_map.rs":"309aea6737d4862ed235875a23a5ca8b24dc8b4621bcdf43f4f319fd91863e49","examples/colored_border.rs":"957ed3c9eb566a7c89ebcbd791f0286ea00714d91101df32484f03c7944eda01","examples/common_grid.rs":"e857595bda7c82258e74bb5b521d930ee40684263ea5b9dabf748669d21d2c92","examples/common_grid_no_std.rs":"5f4e1a97a95000ee4f4920643a35b153fe7638c4f5880fe16520aa8ab0a01c3c","examples/hello_world.rs":"d37088e1d5e2e9da9868ff80057c584d3ec3bbe8b2c6373d662140312be760a2","examples/papergrid_color.rs":"cd13b49fb627b1334cdf342eacad83992b1413bcf9e599fbe886a5856a0a3e5a","examples/span_usage.rs":"65dca2d8358b7519797c9dac8c31a02118b767d12c406e5b07d878f61d8136b6","src/color/ansi_color.rs":"f195d2204db6d3ed7f8c104d255ed595d4657113735a0a76b3ee9d552fb082b4","src/color/mod.rs":"aff92604ad47fe324a3b24eeb43f10cd88d050f1dce0b24c5f6bd313e85ad82c","src/color/static_color.rs":"41e71eb445e7896cebba2fbd3b929ffaf163841d1e026bfde0b84d3757fd492f","src/colors.rs":"d5128327f62afba64d1c3595c0e60444c5b9a1874a2d25e8fdd92488db1b6610","src/config/alignment.rs":"63140c1b37bdefe899a72d888376e4d09dc72fc0395fe5a8169075e6523944fd","src/config/border.rs":"2c3c54ac3ea30e1fedfc309cdc2ce65b25c6c5fef5a9bc4cb96a2c72d3dd348c","src/config/borders.rs":"eef502563ef8327d54281ffcf53985c2eaa49564efd40482262ed61c6fe5dc69","src/config/compact/mod.rs":"624b1e70fb55e120341e264090f0b96dd0d67af1e58ed4fc466e5a2b59c28cbf","src/config/entity.rs":"e7105b872e8bc2ece3b33512fddb8a49b2a4a2747cb4dc11832e5c8a52cf4ce9","src/config/indent.rs":"36eabb607418c6425789218a2a308adcd1de858d387b0054d7c1d4fb60c75fef","src/config/line.rs":"894b7a7a8d524998316bf3633595c2b4c6562e3720b1637a59148db95f99680c","src/config/mod.rs":"a35bb8f0e88c7f03528861a771ebc33a164186d8f764a4d3ec201023b93abc55","src/config/position.rs":"da7985c9ea27755a34c56992698140d96fef213dacba0d6c01cbbd7a888b2c79","src/config/sides.rs":"74dc20170d3c74dd3383a836eedc765328bb12f788f58e3a369129f58cdd1f77","src/config/spanned/borders_config.rs":"d90db37855ee352b1ed85d7f7086df6417f73fa45c825b7bdfcbd77284add13b","src/config/spanned/entity_map.rs":"171a1b30599e3a580158bb36ba24a2f5fd1cc9ca9ecca32cea15ff913b4d2611","src/config/spanned/formatting.rs":"092dcd385e7bba689f6a4643a1e97bf5d134633b3f48196f87c40315acdd7323","src/config/spanned/mod.rs":"8a4e09f7022cdb51b7a7b793959ca27702f1212c4914c531bb895987dcd90e3b","src/config/spanned/offset.rs":"1f48f5bbab07899da98c5792eca17ba2c4c5b0da0dfd3b99a23b7a99542a0598","src/dimension/compact.rs":"d4fee4d0e71bee70978f2c5ba28dfda26900995fc578a005977a733096254a14","src/dimension/mod.rs":"9d5d4bd81ff6b8da3dc5964b05dc67212770f90452f52e25874af906772176f9","src/dimension/spanned.rs":"c84633a9072a2a4cbb40425c7915f035605a42d06ca128397175eca51dfaa585","src/dimension/spanned_vec_records.rs":"a79ee463bc2a7b1f7cddf5609bfebf29679817904fa9c180fe84d47d1a877e35","src/grid/compact.rs":"176da4fe8fd06b350724223646809e375d8629c4a0b3ff663d210c8c73d86894","src/grid/iterable.rs":"6bb9df7c44de8224c533aeab18d256fb771a4181ba3cefc0c0fa3f676ab670b6","src/grid/mod.rs":"6d4b85cd4aced51ac15adabfc1c45caa1dfdc950ee67f5d927551105fd4a0eba","src/grid/peekable.rs":"83507fe45d99b73bc30615db977612c6651ae7b284359efcae56f2e90fbfbc51","src/lib.rs":"a5facbf0df5444df8ab0d0de7c08e1176e2bfa18b0069b17549d5ebf8ca2ad05","src/records/exact_records.rs":"e2f6f613cdd08e31f2ee6b5c0f6e0a7242e0c33d246d542cc5fbac6b92f5fcbf","src/records/into_records.rs":"7591512f44fe0ad015ae180b8bb603b9ed85d42b5b94255ba45ba6ecb922b4c1","src/records/iter_records.rs":"9ed52c17468a0d271115a96dd26c38a55f23ecc634834ddd75fdd4caf245b2b0","src/records/mod.rs":"dd58fd34e0ceadb6e7bdf4cfb5339842d07bd494a3ff91081e5ace71715e9782","src/records/peekable_records.rs":"fe0d96e1e11c520ae2e4755918f5dfc085b472eeaa83255a17a50c9c44d6d689","src/records/vec_records/cell.rs":"dc6ea0dc21ad4f54077ab3e749e920c0894a9ae183131bbd4b9fd5ae3cd385a1","src/records/vec_records/cell_info.rs":"29657b8aea4edbcd1f6cc722ad18e3ab421c7c828ac11748831bdb53755dc134","src/records/vec_records/mod.rs":"2d5c5f68be016b0a3ac8840fb6234060658e5a1479829a56c7a60bb310cac831","src/util/mod.rs":"5351c378b23d6ea21076352092d45abe641c293e0855c1d34ae2844fd2bb286e","src/util/string.rs":"fa22ae561397c8c9abd0a1e49861899ace684cd40c627b3fbd2a7db1216a489f","tests/grid/column_span.rs":"45f41564cf011b80ce0a5ce2baa4626366909350c32d0203f6e08e6ac00d2b92","tests/grid/format_configuration.rs":"e0a9c8269aabec443cd610b7b1b5d82bec9806d12cac4b35a62f040f2a40e6a1","tests/grid/mod.rs":"683b002b5a09ddc801fb7452d7cafb129546630966f12de79124ded401e60be4","tests/grid/render.rs":"58dbae9c694b127633a672b09e3c01f119235c729bfc3307995605a43f9ef500","tests/grid/row_span.rs":"df2ae66621fee380eb94f4560a626ecab4c7c13d66712566c22019b47e94468b","tests/grid/settings.rs":"37a08acb7d3ddf89bed6821d8e2a6fe42e1cd34ee25f5cdeefad927558cf879c","tests/grid/styling.rs":"9c5b0a399367c1660a5d0828bcaa732d8caa4761b775681f4d617fe5c961c599","tests/main.rs":"d54c32cbb3e1c476fda247a63bac07f99caa31f11a344563c33e8e9a52c4f17c","tests/util/grid_builder.rs":"418ab36bd19fd840e641c5f73434fa9a41b704b09c10b6add97fd47103cc3a54","tests/util/mod.rs":"bb73da6bdc2f6dbe1de249aaeeeabb3463a36a8fb5fb9b6faa13b5840cebdbe2"},"package":"a2ccbe15f2b6db62f9a9871642746427e297b0ceb85f9a7f1ee5ff47d184d0c8"} \ No newline at end of file
diff --git a/vendor/papergrid/Cargo.lock b/vendor/papergrid/Cargo.lock
new file mode 100644
index 000000000..427b79bbe
--- /dev/null
+++ b/vendor/papergrid/Cargo.lock
@@ -0,0 +1,137 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "ansi-str"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cf4578926a981ab0ca955dc023541d19de37112bc24c1a197bd806d3d86ad1d"
+dependencies = [
+ "ansitok",
+]
+
+[[package]]
+name = "ansitok"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "220044e6a1bb31ddee4e3db724d29767f352de47445a6cd75e1a173142136c83"
+dependencies = [
+ "nom",
+ "vte",
+]
+
+[[package]]
+name = "arrayvec"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
+
+[[package]]
+name = "bytecount"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c"
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "memchr"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+
+[[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
+[[package]]
+name = "nom"
+version = "7.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+dependencies = [
+ "memchr",
+ "minimal-lexical",
+]
+
+[[package]]
+name = "owo-colors"
+version = "3.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f"
+
+[[package]]
+name = "papergrid"
+version = "0.10.0"
+dependencies = [
+ "ansi-str",
+ "ansitok",
+ "bytecount",
+ "fnv",
+ "owo-colors",
+ "unicode-width",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.56"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+
+[[package]]
+name = "utf8parse"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+
+[[package]]
+name = "vte"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6cbce692ab4ca2f1f3047fcf732430249c0e971bfdd2b234cf2c47ad93af5983"
+dependencies = [
+ "arrayvec",
+ "utf8parse",
+ "vte_generate_state_changes",
+]
+
+[[package]]
+name = "vte_generate_state_changes"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff"
+dependencies = [
+ "proc-macro2",
+ "quote",
+]
diff --git a/vendor/papergrid/Cargo.toml b/vendor/papergrid/Cargo.toml
new file mode 100644
index 000000000..2b5cf8130
--- /dev/null
+++ b/vendor/papergrid/Cargo.toml
@@ -0,0 +1,85 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2018"
+name = "papergrid"
+version = "0.10.0"
+authors = ["Maxim Zhiburt <zhiburt@gmail.com>"]
+description = "Papergrid is a core library to print a table"
+readme = "README.md"
+license = "MIT"
+repository = "https://github.com/zhiburt/tabled"
+
+[[example]]
+name = "papergrid_color"
+required-features = [
+ "std",
+ "color",
+]
+
+[[example]]
+name = "color_map"
+path = "examples/color_map.rs"
+required-features = ["std"]
+
+[[example]]
+name = "colored_border"
+path = "examples/colored_border.rs"
+required-features = ["std"]
+
+[[example]]
+name = "common_grid"
+path = "examples/common_grid.rs"
+required-features = ["std"]
+
+[[example]]
+name = "span_usage"
+path = "examples/span_usage.rs"
+required-features = ["std"]
+
+[[example]]
+name = "common_grid_no_std"
+path = "examples/common_grid_no_std.rs"
+required-features = []
+
+[[example]]
+name = "hello_world"
+path = "examples/hello_world.rs"
+required-features = ["std"]
+
+[dependencies.ansi-str]
+version = "0.8"
+optional = true
+
+[dependencies.ansitok]
+version = "0.2"
+optional = true
+
+[dependencies.bytecount]
+version = "0.6"
+
+[dependencies.fnv]
+version = "1.0"
+
+[dependencies.unicode-width]
+version = "0.1"
+
+[dev-dependencies.owo-colors]
+version = "3.4.0"
+
+[features]
+color = [
+ "ansi-str",
+ "ansitok",
+]
+default = ["std"]
+std = []
diff --git a/vendor/errno-dragonfly/LICENSE b/vendor/papergrid/LICENSE-MIT
index 1f1500c81..6077b9d68 100644
--- a/vendor/errno-dragonfly/LICENSE
+++ b/vendor/papergrid/LICENSE-MIT
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2017 Michael Neumann
+Copyright (c) 2021 Maxim Zhiburt
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/papergrid/README.md b/vendor/papergrid/README.md
new file mode 100644
index 000000000..c5ad00f7b
--- /dev/null
+++ b/vendor/papergrid/README.md
@@ -0,0 +1,84 @@
+# papergrid
+
+This is library for pretty tables.
+
+It has relatively low level API.
+If you're interested in a more friendly one take a look at [`tabled`](https://github.com/zhiburt/tabled).
+
+## Usage
+
+```rust
+use papergrid::{
+ colors::NoColors,
+ config::{
+ spanned::SpannedConfig, AlignmentHorizontal, AlignmentVertical, Borders, Entity, Indent,
+ Sides,
+ },
+ dimension::{spanned::SpannedGridDimension, Estimate},
+ grid::peekable::PeekableGrid,
+ records::vec_records::{CellInfo, VecRecords},
+};
+
+fn main() {
+ let mut cfg = SpannedConfig::default();
+ cfg.set_borders(Borders {
+ top: Some('-'),
+ top_left: Some('+'),
+ top_right: Some('+'),
+ top_intersection: Some('+'),
+ bottom: Some('-'),
+ bottom_left: Some('+'),
+ bottom_right: Some('+'),
+ bottom_intersection: Some('+'),
+ horizontal: Some('-'),
+ left_intersection: Some('+'),
+ right_intersection: Some('+'),
+ vertical: Some('|'),
+ left: Some('|'),
+ right: Some('|'),
+ intersection: Some('+'),
+ });
+ cfg.set_column_span((1, 1), 3);
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_alignment_horizontal((1, 0).into(), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Entity::Global, AlignmentVertical::Center);
+ cfg.set_padding(
+ (0, 0).into(),
+ Sides::new(
+ Indent::spaced(4),
+ Indent::spaced(4),
+ Indent::spaced(1),
+ Indent::spaced(1),
+ ),
+ );
+
+ let data = [
+ ["Papergrid", "is a library", "for print tables", "!"],
+ ["", "Just like this", "", ""],
+ ];
+
+ let data = data
+ .iter()
+ .map(|row| row.iter().map(CellInfo::new).collect())
+ .collect();
+
+ let records = VecRecords::new(data);
+
+ let mut dims = SpannedGridDimension::default();
+ dims.estimate(&records, &cfg);
+
+ let grid = PeekableGrid::new(&records, &cfg, &dims, NoColors).to_string();
+
+ println!("{grid}");
+}
+```
+
+Running the example you must see.
+
+```text
++-----------------+------------+----------------+-+
+| |is a library|for print tables|!|
++ Papergrid +------------+----------------+-+
+| |Just like this |
++-----------------+------------+----------------+-+
+``` \ No newline at end of file
diff --git a/vendor/papergrid/examples/color_map.rs b/vendor/papergrid/examples/color_map.rs
new file mode 100644
index 000000000..e9c238ea4
--- /dev/null
+++ b/vendor/papergrid/examples/color_map.rs
@@ -0,0 +1,105 @@
+//! This example demonstrates using a [`HashMap`] of colors to simplify styling
+//! sections of a [`Grid`] without embedding ANSI escape characters into cell values.
+//!
+//! * 🚩 This example requires the `color` feature.
+//!
+//! * Check out [`owo_colors`] for additional styling options available through their API.
+
+use std::{
+ collections::HashMap,
+ fmt::{Display, Formatter},
+ io::Write,
+};
+
+use owo_colors::{
+ colors::{Black, Blue, Red},
+ Style as OStyle,
+};
+
+use papergrid::{
+ color::Color,
+ config::spanned::SpannedConfig,
+ config::{Borders, Position},
+ dimension::spanned::SpannedGridDimension,
+ dimension::Estimate,
+ grid::iterable::Grid,
+ records::IterRecords,
+};
+
+fn main() {
+ let records = vec![vec!["Hello", "World"], vec!["Hi", "World"]];
+ let records = IterRecords::new(&records, 2, None);
+
+ let cfg = generate_table_config();
+
+ let mut dimension = SpannedGridDimension::default();
+ dimension.estimate(records, &cfg);
+
+ let colors = generate_colors();
+
+ let grid = Grid::new(records, &dimension, &cfg, &colors);
+
+ grid.build(UTF8Stdout(std::io::stdout())).unwrap();
+ println!();
+}
+
+fn generate_colors() -> HashMap<Position, Style> {
+ HashMap::from([
+ ((0, 0), Style(OStyle::default().bg::<Red>().fg::<Black>())),
+ ((1, 1), Style(OStyle::default().bg::<Blue>())),
+ ])
+}
+
+fn generate_table_config() -> SpannedConfig {
+ let mut cfg = SpannedConfig::default();
+ cfg.set_borders(Borders {
+ top: Some('-'),
+ bottom: Some('-'),
+ left: Some('|'),
+ right: Some('|'),
+ vertical: Some('|'),
+ horizontal: Some('-'),
+ ..Default::default()
+ });
+ cfg.set_borders_missing('+');
+
+ cfg
+}
+
+#[derive(Debug, Clone, Default)]
+struct Style(OStyle);
+
+impl Color for Style {
+ fn fmt_prefix<W: std::fmt::Write>(&self, f: &mut W) -> std::fmt::Result {
+ let buf = OStylePrefix(&self.0).to_string();
+ f.write_str(&buf)
+ }
+}
+
+struct OStylePrefix<'a>(&'a OStyle);
+
+impl Display for OStylePrefix<'_> {
+ fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
+ self.0.fmt_prefix(f)
+ }
+}
+
+struct UTF8Stdout(std::io::Stdout);
+
+impl std::fmt::Write for UTF8Stdout {
+ fn write_str(&mut self, s: &str) -> std::fmt::Result {
+ let mut buf = s.as_bytes();
+ loop {
+ let n = self.0.write(buf).map_err(|_| std::fmt::Error::default())?;
+ if n == buf.len() {
+ break;
+ }
+
+ buf = &buf[n..];
+ }
+
+ self.0.flush().map_err(|_| std::fmt::Error::default())?;
+
+ Ok(())
+ }
+}
diff --git a/vendor/papergrid/examples/colored_border.rs b/vendor/papergrid/examples/colored_border.rs
new file mode 100644
index 000000000..ec7ff2848
--- /dev/null
+++ b/vendor/papergrid/examples/colored_border.rs
@@ -0,0 +1,74 @@
+//! This example demonstrates using colors to stylize [`Grid`] borders.
+//! Borders can be set globally with [`SpannedConfig::set_border_color_global()`]
+//! or individually with [`SpannedConfig::set_border_color()`].
+//!
+//! * 🚩 This example requires the `color` feature.
+//!
+//! * [`CompactConfig`] also supports colorization when the `color` feature is enabled.
+
+use papergrid::{
+ color::AnsiColor,
+ colors::NoColors,
+ config::spanned::SpannedConfig,
+ config::{AlignmentHorizontal, AlignmentVertical, Borders, Entity::Global, Indent, Sides},
+ dimension::spanned::SpannedGridDimension,
+ dimension::Estimate,
+ grid::iterable::Grid,
+ records::IterRecords,
+};
+
+fn main() {
+ let cfg = generate_table_config();
+
+ let data = vec![
+ vec!["Papergrid", "is a library", "for printing tables", "!"],
+ vec!["", "Just like this", "", ""],
+ ];
+ let records = IterRecords::new(data, 4, Some(2));
+
+ let mut dim = SpannedGridDimension::default();
+ dim.estimate(&records, &cfg);
+
+ let grid = Grid::new(records, &dim, &cfg, NoColors).to_string();
+
+ println!("{grid}");
+}
+
+fn generate_table_config() -> SpannedConfig {
+ let style = Borders {
+ top: Some('-'),
+ top_left: Some('+'),
+ top_right: Some('+'),
+ top_intersection: Some('+'),
+ bottom: Some('-'),
+ bottom_left: Some('+'),
+ bottom_right: Some('+'),
+ bottom_intersection: Some('+'),
+ horizontal: Some('-'),
+ left_intersection: Some('+'),
+ right_intersection: Some('+'),
+ vertical: Some('|'),
+ left: Some('|'),
+ right: Some('|'),
+ intersection: Some('+'),
+ };
+
+ let mut cfg = SpannedConfig::default();
+ cfg.set_borders(style);
+ cfg.set_column_span((1, 1), 3);
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_alignment_horizontal((1, 0).into(), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Global, AlignmentVertical::Center);
+ cfg.set_padding(
+ (0, 0).into(),
+ Sides::new(
+ Indent::spaced(4),
+ Indent::spaced(4),
+ Indent::spaced(1),
+ Indent::spaced(1),
+ ),
+ );
+ cfg.set_border_color_global(AnsiColor::new("\u{1b}[42m".into(), "\u{1b}[0m".into()));
+
+ cfg
+}
diff --git a/vendor/papergrid/examples/common_grid.rs b/vendor/papergrid/examples/common_grid.rs
new file mode 100644
index 000000000..a0fc8d4c7
--- /dev/null
+++ b/vendor/papergrid/examples/common_grid.rs
@@ -0,0 +1,67 @@
+//! This example demonstrates the flexibility of [`papergrid`] with manual configurations
+//! of [`Borders`], [`CompactConfig`], and column counts with [`IterRecords`].
+//!
+//! * For an alternative to [`CompactGrid`] and [`CompactGridDimension`] with
+//! flexible row height, variable intra-column spans, and multiline cell support
+//! see [`Grid`] and [`SpannedGridDimension`].
+
+use papergrid::{
+ config::compact::CompactConfig,
+ config::{AlignmentHorizontal, Borders, Indent, Sides},
+ dimension::compact::CompactGridDimension,
+ dimension::Estimate,
+ grid::compact::CompactGrid,
+ records::IterRecords,
+};
+
+fn main() {
+ let cfg = generate_table_config();
+
+ let data = [
+ ["Papergrid", "is a library", "for printing tables", "!"],
+ [
+ "Just like this",
+ "NOTICE",
+ "that multiline is not supported",
+ "H\ne\nl\nl\no",
+ ],
+ ];
+ let records = IterRecords::new(data, 4, None);
+
+ let mut dim = CompactGridDimension::default();
+ dim.estimate(records, &cfg);
+
+ let grid = CompactGrid::new(records, &dim, &cfg);
+
+ println!("{grid}");
+}
+
+fn generate_table_config() -> CompactConfig {
+ const STYLE: Borders<char> = Borders {
+ top: Some('-'),
+ top_left: Some('+'),
+ top_right: Some('+'),
+ top_intersection: Some('+'),
+ bottom: Some('-'),
+ bottom_left: Some('+'),
+ bottom_right: Some('+'),
+ bottom_intersection: Some('+'),
+ horizontal: Some('-'),
+ left_intersection: Some('+'),
+ right_intersection: Some('+'),
+ vertical: Some('|'),
+ left: Some('|'),
+ right: Some('|'),
+ intersection: Some('+'),
+ };
+
+ CompactConfig::default()
+ .set_borders(STYLE)
+ .set_alignment_horizontal(AlignmentHorizontal::Center)
+ .set_padding(Sides::new(
+ Indent::spaced(1),
+ Indent::spaced(1),
+ Indent::spaced(0),
+ Indent::spaced(0),
+ ))
+}
diff --git a/vendor/papergrid/examples/common_grid_no_std.rs b/vendor/papergrid/examples/common_grid_no_std.rs
new file mode 100644
index 000000000..ebb77bcbb
--- /dev/null
+++ b/vendor/papergrid/examples/common_grid_no_std.rs
@@ -0,0 +1,73 @@
+//! This example demonstrates using [`papergrid`] without [The Rust Standard Library](std).
+//!
+//! * Note the missing, pre-built [`Dimension`] implementations requiring manual design.
+
+use papergrid::{
+ config::compact::CompactConfig,
+ config::{AlignmentHorizontal, Borders, Indent, Sides},
+ dimension::Dimension,
+ grid::compact::CompactGrid,
+ records::IterRecords,
+};
+
+fn main() {
+ let data = [
+ ["Papergrid", "is a library", "for printing tables", "!"],
+ [
+ "Just like this",
+ "NOTICE",
+ "that multiline is not supported",
+ "H\ne\nl\nl\no",
+ ],
+ ];
+
+ let records = IterRecords::new(data, 4, None);
+ let dim = ConstDims(&[20, 15, 40, 3], 4);
+ let cfg = generate_table_config();
+
+ let grid = CompactGrid::new(records, &dim, &cfg);
+
+ println!("{grid}");
+}
+
+fn generate_table_config() -> CompactConfig {
+ const STYLE: Borders<char> = Borders {
+ top: Some('-'),
+ top_left: Some('+'),
+ top_right: Some('+'),
+ top_intersection: Some('+'),
+ bottom: Some('-'),
+ bottom_left: Some('+'),
+ bottom_right: Some('+'),
+ bottom_intersection: Some('+'),
+ horizontal: Some('-'),
+ left_intersection: Some('+'),
+ right_intersection: Some('+'),
+ vertical: Some('|'),
+ left: Some('|'),
+ right: Some('|'),
+ intersection: Some('+'),
+ };
+
+ CompactConfig::default()
+ .set_borders(STYLE)
+ .set_alignment_horizontal(AlignmentHorizontal::Center)
+ .set_padding(Sides::new(
+ Indent::spaced(1),
+ Indent::spaced(1),
+ Indent::spaced(3),
+ Indent::spaced(0),
+ ))
+}
+
+struct ConstDims<'a>(&'a [usize], usize);
+
+impl Dimension for ConstDims<'_> {
+ fn get_width(&self, column: usize) -> usize {
+ self.0[column]
+ }
+
+ fn get_height(&self, _: usize) -> usize {
+ self.1
+ }
+}
diff --git a/vendor/papergrid/examples/hello_world.rs b/vendor/papergrid/examples/hello_world.rs
new file mode 100644
index 000000000..90be1fa17
--- /dev/null
+++ b/vendor/papergrid/examples/hello_world.rs
@@ -0,0 +1,78 @@
+//! This example demonstrates the flexibility of [`papergrid`] with manual configurations
+//! of [`Borders`], [`SpannedConfig`], and column counts with [`IterRecords`].
+//!
+//! * For an alternative to [`Grid`] and [`SpannedGridDimension`] with
+//! uniform row height and intra-column spans see [`CompactGrid`] and [`CompactGridDimension`].
+//! * Note that [`Grid`] supports multiline cells whereas [`CompactGrid`] does not.
+//! * Note that [`Dimension`] implementations rely on [`Dimension::estimate()`]
+//! to correctly format outputs, and typically trigger index-out-of-bounds errors otherwise.
+
+use papergrid::{
+ colors::NoColors,
+ config::spanned::SpannedConfig,
+ config::{AlignmentHorizontal, AlignmentVertical, Borders, Entity::Global, Indent, Sides},
+ dimension::spanned::SpannedGridDimension,
+ dimension::Estimate,
+ grid::iterable::Grid,
+ records::IterRecords,
+};
+
+fn main() {
+ let cfg = generate_table_config();
+
+ let data = [
+ ["Papergrid", "is a library", "for printing tables", "!"],
+ [
+ "",
+ "Just like\n\nthis",
+ "",
+ "",
+ ],
+ ];
+ let records = IterRecords::new(data, 4, None);
+
+ let mut dim = SpannedGridDimension::default();
+ dim.estimate(records, &cfg);
+
+ let grid = Grid::new(records, &dim, &cfg, NoColors).to_string();
+
+ println!("{grid}");
+}
+
+fn generate_table_config() -> SpannedConfig {
+ const STYLE: Borders<char> = Borders {
+ top: Some('-'),
+ top_left: Some('+'),
+ top_right: Some('+'),
+ top_intersection: Some('+'),
+ bottom: Some('-'),
+ bottom_left: Some('+'),
+ bottom_right: Some('+'),
+ bottom_intersection: Some('+'),
+ horizontal: Some('-'),
+ left_intersection: Some('+'),
+ right_intersection: Some('+'),
+ vertical: Some('|'),
+ left: Some('|'),
+ right: Some('|'),
+ intersection: Some('+'),
+ };
+
+ let mut cfg = SpannedConfig::default();
+ cfg.set_borders(STYLE);
+ cfg.set_column_span((1, 1), 3);
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_alignment_horizontal((1, 0).into(), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Global, AlignmentVertical::Center);
+ cfg.set_padding(
+ (0, 0).into(),
+ Sides::new(
+ Indent::spaced(4),
+ Indent::spaced(4),
+ Indent::spaced(1),
+ Indent::spaced(1),
+ ),
+ );
+
+ cfg
+}
diff --git a/vendor/papergrid/examples/papergrid_color.rs b/vendor/papergrid/examples/papergrid_color.rs
new file mode 100644
index 000000000..f634c0d6c
--- /dev/null
+++ b/vendor/papergrid/examples/papergrid_color.rs
@@ -0,0 +1,69 @@
+//! This example demonstrates using colors to stylize [`Grid`] cells.
+//!
+//! * 🚩 This example requires the `color` feature.
+//!
+//! * Note that this example uses inline ANSI escape characters to style
+//! grid cells. `Grid::new(_, _, _, NoColors)` indicates that a color
+//! map is not provided. NOT that colors are ignored in the output.
+
+use std::io::Write;
+
+use papergrid::{
+ colors::NoColors, config::spanned::SpannedConfig, config::Borders,
+ dimension::spanned::SpannedGridDimension, dimension::Estimate, grid::iterable::Grid,
+ records::IterRecords,
+};
+
+fn main() {
+ let data = vec![
+ vec!["\u{1b}[42mHello\u{1b}[0m", "\u{1b}[43mWorld\u{1b}[0m"],
+ vec!["\u{1b}[44mHi\u{1b}[0m", "\u{1b}[45mWorld\u{1b}[0m"],
+ ];
+ let records = IterRecords::new(data, 2, None);
+
+ let cfg = generate_table_config();
+
+ let mut dimension = SpannedGridDimension::default();
+ dimension.estimate(&records, &cfg);
+
+ let grid = Grid::new(&records, &dimension, &cfg, NoColors);
+
+ grid.build(UTF8Stdout(std::io::stdout())).unwrap();
+ println!();
+}
+
+fn generate_table_config() -> SpannedConfig {
+ let mut cfg = SpannedConfig::default();
+ cfg.set_borders(Borders {
+ top: Some('-'),
+ bottom: Some('-'),
+ left: Some('|'),
+ right: Some('|'),
+ vertical: Some('|'),
+ horizontal: Some('-'),
+ ..Default::default()
+ });
+ cfg.set_borders_missing('+');
+
+ cfg
+}
+
+struct UTF8Stdout(std::io::Stdout);
+
+impl std::fmt::Write for UTF8Stdout {
+ fn write_str(&mut self, s: &str) -> std::fmt::Result {
+ let mut buf = s.as_bytes();
+ loop {
+ let n = self.0.write(buf).map_err(|_| std::fmt::Error::default())?;
+ if n == buf.len() {
+ break;
+ }
+
+ buf = &buf[n..];
+ }
+
+ self.0.flush().map_err(|_| std::fmt::Error::default())?;
+
+ Ok(())
+ }
+}
diff --git a/vendor/papergrid/examples/span_usage.rs b/vendor/papergrid/examples/span_usage.rs
new file mode 100644
index 000000000..d5f963767
--- /dev/null
+++ b/vendor/papergrid/examples/span_usage.rs
@@ -0,0 +1,63 @@
+use papergrid::{
+ colors::NoColors,
+ config::{
+ spanned::SpannedConfig, AlignmentHorizontal, AlignmentVertical, Borders, Entity, Indent,
+ Sides,
+ },
+ dimension::{spanned::SpannedGridDimension, Estimate},
+ grid::peekable::PeekableGrid,
+ records::vec_records::{CellInfo, VecRecords},
+};
+
+fn main() {
+ let mut cfg = SpannedConfig::default();
+ cfg.set_borders(Borders {
+ top: Some('-'),
+ top_left: Some('+'),
+ top_right: Some('+'),
+ top_intersection: Some('+'),
+ bottom: Some('-'),
+ bottom_left: Some('+'),
+ bottom_right: Some('+'),
+ bottom_intersection: Some('+'),
+ horizontal: Some('-'),
+ left_intersection: Some('+'),
+ right_intersection: Some('+'),
+ vertical: Some('|'),
+ left: Some('|'),
+ right: Some('|'),
+ intersection: Some('+'),
+ });
+ cfg.set_column_span((1, 1), 3);
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_alignment_horizontal((1, 0).into(), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Entity::Global, AlignmentVertical::Center);
+ cfg.set_padding(
+ (0, 0).into(),
+ Sides::new(
+ Indent::spaced(4),
+ Indent::spaced(4),
+ Indent::spaced(1),
+ Indent::spaced(1),
+ ),
+ );
+
+ let data = [
+ ["Papergrid", "is a library", "for print tables", "!"],
+ ["", "Just like this", "", ""],
+ ];
+
+ let data = data
+ .iter()
+ .map(|row| row.iter().map(CellInfo::new).collect())
+ .collect();
+
+ let records = VecRecords::new(data);
+
+ let mut dims = SpannedGridDimension::default();
+ dims.estimate(&records, &cfg);
+
+ let grid = PeekableGrid::new(&records, &cfg, &dims, NoColors).to_string();
+
+ println!("{grid}");
+}
diff --git a/vendor/papergrid/src/color/ansi_color.rs b/vendor/papergrid/src/color/ansi_color.rs
new file mode 100644
index 000000000..6fcf4f832
--- /dev/null
+++ b/vendor/papergrid/src/color/ansi_color.rs
@@ -0,0 +1,86 @@
+use std::{
+ borrow::Cow,
+ fmt::{self, Write},
+};
+
+use super::{Color, StaticColor};
+
+/// The structure represents a ANSI color by suffix and prefix.
+#[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord)]
+pub struct AnsiColor<'a> {
+ prefix: Cow<'a, str>,
+ suffix: Cow<'a, str>,
+}
+
+impl<'a> AnsiColor<'a> {
+ /// Constructs a new instance with suffix and prefix.
+ ///
+ /// They are not checked so you should make sure you provide correct ANSI.
+ /// Otherwise you may want to use [`TryFrom`].
+ ///
+ /// [`TryFrom`]: std::convert::TryFrom
+ pub const fn new(prefix: Cow<'a, str>, suffix: Cow<'a, str>) -> Self {
+ Self { prefix, suffix }
+ }
+}
+
+impl AnsiColor<'_> {
+ /// Gets a reference to a prefix.
+ pub fn get_prefix(&self) -> &str {
+ &self.prefix
+ }
+
+ /// Gets a reference to a suffix.
+ pub fn get_suffix(&self) -> &str {
+ &self.suffix
+ }
+}
+
+impl Color for AnsiColor<'_> {
+ fn fmt_prefix<W: Write>(&self, f: &mut W) -> fmt::Result {
+ f.write_str(&self.prefix)
+ }
+
+ fn fmt_suffix<W: Write>(&self, f: &mut W) -> fmt::Result {
+ f.write_str(&self.suffix)
+ }
+}
+
+#[cfg(feature = "color")]
+impl std::convert::TryFrom<&str> for AnsiColor<'static> {
+ type Error = ();
+
+ fn try_from(value: &str) -> Result<Self, Self::Error> {
+ parse_ansi_color(value).ok_or(())
+ }
+}
+
+#[cfg(feature = "color")]
+impl std::convert::TryFrom<String> for AnsiColor<'static> {
+ type Error = ();
+
+ fn try_from(value: String) -> Result<Self, Self::Error> {
+ Self::try_from(value.as_str())
+ }
+}
+
+#[cfg(feature = "color")]
+fn parse_ansi_color(s: &str) -> Option<AnsiColor<'static>> {
+ let mut blocks = ansi_str::get_blocks(s);
+ let block = blocks.next()?;
+ let style = block.style();
+
+ let start = style.start().to_string();
+ let end = style.end().to_string();
+
+ Some(AnsiColor::new(start.into(), end.into()))
+}
+
+impl From<StaticColor> for AnsiColor<'static> {
+ fn from(value: StaticColor) -> Self {
+ Self::new(
+ Cow::Borrowed(value.get_prefix()),
+ Cow::Borrowed(value.get_suffix()),
+ )
+ }
+}
diff --git a/vendor/papergrid/src/color/mod.rs b/vendor/papergrid/src/color/mod.rs
new file mode 100644
index 000000000..e4618b750
--- /dev/null
+++ b/vendor/papergrid/src/color/mod.rs
@@ -0,0 +1,51 @@
+//! A module which contains [`Color`] trait and its implementation [`AnsiColor`].
+
+#[cfg(feature = "std")]
+mod ansi_color;
+mod static_color;
+
+#[cfg(feature = "std")]
+pub use ansi_color::AnsiColor;
+
+pub use static_color::StaticColor;
+
+use core::fmt::{self, Write};
+
+#[allow(unreachable_pub)]
+/// A trait which prints an ANSI prefix and suffix.
+pub trait Color {
+ /// Print ANSI prefix.
+ fn fmt_prefix<W: Write>(&self, f: &mut W) -> fmt::Result;
+
+ /// Print ANSI suffix.
+ fn fmt_suffix<W: Write>(&self, f: &mut W) -> fmt::Result {
+ f.write_str("\u{1b}[0m")
+ }
+
+ /// Print colored text.
+ ///
+ /// It may not handle `\n` (new lines).
+ fn colorize<W: Write>(&self, f: &mut W, text: &str) -> fmt::Result {
+ self.fmt_prefix(f)?;
+ f.write_str(text)?;
+ self.fmt_suffix(f)?;
+ Ok(())
+ }
+}
+
+impl<C> Color for &C
+where
+ C: Color,
+{
+ fn fmt_prefix<W: Write>(&self, f: &mut W) -> fmt::Result {
+ C::fmt_prefix(self, f)
+ }
+
+ fn fmt_suffix<W: Write>(&self, f: &mut W) -> fmt::Result {
+ C::fmt_suffix(self, f)
+ }
+
+ fn colorize<W: Write>(&self, f: &mut W, text: &str) -> fmt::Result {
+ C::colorize(self, f, text)
+ }
+}
diff --git a/vendor/papergrid/src/color/static_color.rs b/vendor/papergrid/src/color/static_color.rs
new file mode 100644
index 000000000..3f9a38cfd
--- /dev/null
+++ b/vendor/papergrid/src/color/static_color.rs
@@ -0,0 +1,49 @@
+use core::fmt::{self, Write};
+
+use super::Color;
+
+/// The structure represents a ANSI color by suffix and prefix.
+#[derive(Debug, Default, Clone, Copy, Eq, PartialEq, PartialOrd, Ord)]
+pub struct StaticColor {
+ prefix: &'static str,
+ suffix: &'static str,
+}
+
+impl StaticColor {
+ /// Constructs a new instance with suffix and prefix.
+ ///
+ /// They are not checked so you should make sure you provide correct ANSI.
+ /// Otherwise you may want to use [`TryFrom`].
+ ///
+ /// [`TryFrom`]: std::convert::TryFrom
+ pub const fn new(prefix: &'static str, suffix: &'static str) -> Self {
+ Self { prefix, suffix }
+ }
+
+ /// Verifies if anything was actually set.
+ pub const fn is_empty(&self) -> bool {
+ self.prefix.is_empty() && self.suffix.is_empty()
+ }
+}
+
+impl StaticColor {
+ /// Gets a reference to a prefix.
+ pub fn get_prefix(&self) -> &'static str {
+ self.prefix
+ }
+
+ /// Gets a reference to a suffix.
+ pub fn get_suffix(&self) -> &'static str {
+ self.suffix
+ }
+}
+
+impl Color for StaticColor {
+ fn fmt_prefix<W: Write>(&self, f: &mut W) -> fmt::Result {
+ f.write_str(self.prefix)
+ }
+
+ fn fmt_suffix<W: Write>(&self, f: &mut W) -> fmt::Result {
+ f.write_str(self.suffix)
+ }
+}
diff --git a/vendor/papergrid/src/colors.rs b/vendor/papergrid/src/colors.rs
new file mode 100644
index 000000000..f671ec005
--- /dev/null
+++ b/vendor/papergrid/src/colors.rs
@@ -0,0 +1,89 @@
+//! A module which contains [Colors] trait and its blanket implementations.
+
+use crate::{color::Color, config::Position};
+
+/// A trait which represents map of colors.
+pub trait Colors {
+ /// Color implementation.
+ type Color: Color;
+
+ /// Returns a color for a given position.
+ fn get_color(&self, pos: (usize, usize)) -> Option<&Self::Color>;
+}
+
+impl<C> Colors for &'_ C
+where
+ C: Colors,
+{
+ type Color = C::Color;
+
+ fn get_color(&self, pos: Position) -> Option<&Self::Color> {
+ C::get_color(self, pos)
+ }
+}
+
+#[cfg(feature = "std")]
+impl<C> Colors for std::collections::HashMap<Position, C>
+where
+ C: Color,
+{
+ type Color = C;
+
+ fn get_color(&self, pos: Position) -> Option<&Self::Color> {
+ self.get(&pos)
+ }
+}
+
+#[cfg(feature = "std")]
+impl<C> Colors for std::collections::BTreeMap<Position, C>
+where
+ C: Color,
+{
+ type Color = C;
+
+ fn get_color(&self, pos: Position) -> Option<&Self::Color> {
+ self.get(&pos)
+ }
+}
+
+#[cfg(feature = "std")]
+impl<C> Colors for crate::config::spanned::EntityMap<Option<C>>
+where
+ C: Color,
+{
+ type Color = C;
+
+ fn get_color(&self, pos: Position) -> Option<&Self::Color> {
+ self.get(pos.into()).as_ref()
+ }
+}
+
+/// The structure represents empty [`Colors`] map.
+#[derive(Debug, Default, Clone)]
+pub struct NoColors;
+
+impl Colors for NoColors {
+ type Color = EmptyColor;
+
+ fn get_color(&self, _: Position) -> Option<&Self::Color> {
+ None
+ }
+}
+
+/// A color which is actually has not value.
+#[derive(Debug)]
+pub struct EmptyColor;
+
+impl Color for EmptyColor {
+ fn fmt_prefix<W: core::fmt::Write>(&self, _: &mut W) -> core::fmt::Result {
+ Ok(())
+ }
+
+ fn colorize<W: core::fmt::Write>(&self, _: &mut W, _: &str) -> core::fmt::Result {
+ Ok(())
+ }
+
+ fn fmt_suffix<W: core::fmt::Write>(&self, _: &mut W) -> core::fmt::Result {
+ Ok(())
+ }
+}
diff --git a/vendor/papergrid/src/config/alignment.rs b/vendor/papergrid/src/config/alignment.rs
new file mode 100644
index 000000000..2b3b5e9db
--- /dev/null
+++ b/vendor/papergrid/src/config/alignment.rs
@@ -0,0 +1,21 @@
+/// [`AlignmentHorizontal`] represents an horizontal alignment of a cell content.
+#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, PartialOrd, Ord)]
+pub enum AlignmentHorizontal {
+ /// Align to the center.
+ Center,
+ /// Align on the left.
+ Left,
+ /// Align on the right.
+ Right,
+}
+
+/// [`AlignmentVertical`] represents an vertical alignment of a cell content.
+#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, PartialOrd, Ord)]
+pub enum AlignmentVertical {
+ /// Align to the center.
+ Center,
+ /// Align to the top.
+ Top,
+ /// Align to the bottom.
+ Bottom,
+}
diff --git a/vendor/papergrid/src/config/border.rs b/vendor/papergrid/src/config/border.rs
new file mode 100644
index 000000000..e803900f7
--- /dev/null
+++ b/vendor/papergrid/src/config/border.rs
@@ -0,0 +1,142 @@
+/// Border is a representation of a cells's borders (left, right, top, bottom, and the corners)
+///
+///
+/// ```text
+/// top border
+/// |
+/// V
+/// corner top left ------> +_______+ <---- corner top left
+/// | |
+/// left border ----------> | cell | <---- right border
+/// | |
+/// corner bottom right --> +_______+ <---- corner bottom right
+/// ^
+/// |
+/// bottom border
+/// ```
+#[derive(Debug, Clone, Copy, Default, Eq, PartialEq, PartialOrd, Ord)]
+pub struct Border<T> {
+ /// A character for a top.
+ pub top: Option<T>,
+ /// A character for a bottom.
+ pub bottom: Option<T>,
+ /// A character for a left.
+ pub left: Option<T>,
+ /// A character for a right.
+ pub right: Option<T>,
+ /// A character for a left top corner.
+ pub left_top_corner: Option<T>,
+ /// A character for a left bottom corner.
+ pub left_bottom_corner: Option<T>,
+ /// A character for a right top corner.
+ pub right_top_corner: Option<T>,
+ /// A character for a right bottom corner.
+ pub right_bottom_corner: Option<T>,
+}
+
+impl<T> Border<T> {
+ /// This function constructs a cell borders with all sides set.
+ #[allow(clippy::too_many_arguments)]
+ pub const fn full(
+ top: T,
+ bottom: T,
+ left: T,
+ right: T,
+ top_left: T,
+ top_right: T,
+ bottom_left: T,
+ bottom_right: T,
+ ) -> Self {
+ Self {
+ top: Some(top),
+ bottom: Some(bottom),
+ right: Some(right),
+ right_top_corner: Some(top_right),
+ right_bottom_corner: Some(bottom_right),
+ left: Some(left),
+ left_bottom_corner: Some(bottom_left),
+ left_top_corner: Some(top_left),
+ }
+ }
+
+ /// Checks whether any side is set.
+ pub const fn is_empty(&self) -> bool {
+ self.top.is_none()
+ && self.left_top_corner.is_none()
+ && self.right_top_corner.is_none()
+ && self.bottom.is_none()
+ && self.left_bottom_corner.is_none()
+ && self.left_top_corner.is_none()
+ && self.left.is_none()
+ && self.right.is_none()
+ }
+
+ /// Verifies whether anything is set on the top.
+ pub const fn has_top(&self) -> bool {
+ self.top.is_some() || self.left_top_corner.is_some() || self.right_top_corner.is_some()
+ }
+
+ /// Verifies whether anything is set on the bottom.
+ pub const fn has_bottom(&self) -> bool {
+ self.bottom.is_some()
+ || self.left_bottom_corner.is_some()
+ || self.right_bottom_corner.is_some()
+ }
+
+ /// Verifies whether anything is set on the left.
+ pub const fn has_left(&self) -> bool {
+ self.left.is_some() || self.left_top_corner.is_some() || self.left_bottom_corner.is_some()
+ }
+
+ /// Verifies whether anything is set on the right.
+ pub const fn has_right(&self) -> bool {
+ self.right.is_some()
+ || self.right_top_corner.is_some()
+ || self.right_bottom_corner.is_some()
+ }
+}
+
+impl<T: Copy> Border<T> {
+ /// This function constructs a cell borders with all sides's char set to a given character.
+ ///
+ /// It behaves like [`Border::full`] with the same character set to each side.
+ pub fn filled(c: T) -> Self {
+ Self::full(c, c, c, c, c, c, c, c)
+ }
+}
+
+impl<T: Copy> Border<&T> {
+ /// This function constructs a cell borders with all sides's char set to a given character.
+ ///
+ /// It behaves like [`Border::full`] with the same character set to each side.
+ pub fn copied(&self) -> Border<T> {
+ Border {
+ top: self.top.copied(),
+ bottom: self.bottom.copied(),
+ left: self.left.copied(),
+ right: self.right.copied(),
+ left_bottom_corner: self.left_bottom_corner.copied(),
+ left_top_corner: self.left_top_corner.copied(),
+ right_bottom_corner: self.right_bottom_corner.copied(),
+ right_top_corner: self.right_top_corner.copied(),
+ }
+ }
+}
+
+impl<T: Clone> Border<&T> {
+ /// This function constructs a cell borders with all sides's char set to a given character.
+ ///
+ /// It behaves like [`Border::full`] with the same character set to each side.
+ pub fn cloned(&self) -> Border<T> {
+ Border {
+ top: self.top.cloned(),
+ bottom: self.bottom.cloned(),
+ left: self.left.cloned(),
+ right: self.right.cloned(),
+ left_bottom_corner: self.left_bottom_corner.cloned(),
+ left_top_corner: self.left_top_corner.cloned(),
+ right_bottom_corner: self.right_bottom_corner.cloned(),
+ right_top_corner: self.right_top_corner.cloned(),
+ }
+ }
+}
diff --git a/vendor/papergrid/src/config/borders.rs b/vendor/papergrid/src/config/borders.rs
new file mode 100644
index 000000000..d242e1f63
--- /dev/null
+++ b/vendor/papergrid/src/config/borders.rs
@@ -0,0 +1,152 @@
+/// Borders represents a Table frame with horizontal and vertical split lines.
+#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub struct Borders<T> {
+ /// A top horizontal on the frame.
+ pub top: Option<T>,
+ /// A top left on the frame.
+ pub top_left: Option<T>,
+ /// A top right on the frame.
+ pub top_right: Option<T>,
+ /// A top horizontal intersection on the frame.
+ pub top_intersection: Option<T>,
+
+ /// A bottom horizontal on the frame.
+ pub bottom: Option<T>,
+ /// A bottom left on the frame.
+ pub bottom_left: Option<T>,
+ /// A bottom right on the frame.
+ pub bottom_right: Option<T>,
+ /// A bottom horizontal intersection on the frame.
+ pub bottom_intersection: Option<T>,
+
+ /// A horizontal split.
+ pub horizontal: Option<T>,
+ /// A vertical split.
+ pub vertical: Option<T>,
+ /// A top left character on the frame.
+ pub intersection: Option<T>,
+
+ /// A vertical split on the left frame line.
+ pub left: Option<T>,
+ /// A horizontal split on the left frame line.
+ pub left_intersection: Option<T>,
+
+ /// A vertical split on the right frame line.
+ pub right: Option<T>,
+ /// A horizontal split on the right frame line.
+ pub right_intersection: Option<T>,
+}
+
+impl<T> Borders<T> {
+ /// Returns empty borders.
+ pub const fn empty() -> Self {
+ Self {
+ top: None,
+ top_left: None,
+ top_right: None,
+ top_intersection: None,
+ bottom: None,
+ bottom_left: None,
+ bottom_right: None,
+ bottom_intersection: None,
+ horizontal: None,
+ left: None,
+ right: None,
+ vertical: None,
+ left_intersection: None,
+ right_intersection: None,
+ intersection: None,
+ }
+ }
+
+ /// Returns Borders filled in with a supplied value.
+ pub const fn filled(val: T) -> Self
+ where
+ T: Copy,
+ {
+ Self {
+ top: Some(val),
+ top_left: Some(val),
+ top_right: Some(val),
+ top_intersection: Some(val),
+ bottom: Some(val),
+ bottom_left: Some(val),
+ bottom_right: Some(val),
+ bottom_intersection: Some(val),
+ horizontal: Some(val),
+ left: Some(val),
+ right: Some(val),
+ vertical: Some(val),
+ left_intersection: Some(val),
+ right_intersection: Some(val),
+ intersection: Some(val),
+ }
+ }
+
+ /// A verification whether any border was set.
+ pub const fn is_empty(&self) -> bool {
+ !(self.top.is_some()
+ || self.top_left.is_some()
+ || self.top_right.is_some()
+ || self.top_intersection.is_some()
+ || self.bottom.is_some()
+ || self.bottom_left.is_some()
+ || self.bottom_right.is_some()
+ || self.bottom_intersection.is_some()
+ || self.horizontal.is_some()
+ || self.left.is_some()
+ || self.right.is_some()
+ || self.vertical.is_some()
+ || self.left_intersection.is_some()
+ || self.right_intersection.is_some()
+ || self.intersection.is_some())
+ }
+
+ /// Verifies if borders has left line set on the frame.
+ pub const fn has_left(&self) -> bool {
+ self.left.is_some()
+ || self.left_intersection.is_some()
+ || self.top_left.is_some()
+ || self.bottom_left.is_some()
+ }
+
+ /// Verifies if borders has right line set on the frame.
+ pub const fn has_right(&self) -> bool {
+ self.right.is_some()
+ || self.right_intersection.is_some()
+ || self.top_right.is_some()
+ || self.bottom_right.is_some()
+ }
+
+ /// Verifies if borders has top line set on the frame.
+ pub const fn has_top(&self) -> bool {
+ self.top.is_some()
+ || self.top_intersection.is_some()
+ || self.top_left.is_some()
+ || self.top_right.is_some()
+ }
+
+ /// Verifies if borders has bottom line set on the frame.
+ pub const fn has_bottom(&self) -> bool {
+ self.bottom.is_some()
+ || self.bottom_intersection.is_some()
+ || self.bottom_left.is_some()
+ || self.bottom_right.is_some()
+ }
+
+ /// Verifies if borders has horizontal lines set.
+ pub const fn has_horizontal(&self) -> bool {
+ self.horizontal.is_some()
+ || self.left_intersection.is_some()
+ || self.right_intersection.is_some()
+ || self.intersection.is_some()
+ }
+
+ /// Verifies if borders has vertical lines set.
+ pub const fn has_vertical(&self) -> bool {
+ self.intersection.is_some()
+ || self.vertical.is_some()
+ || self.top_intersection.is_some()
+ || self.bottom_intersection.is_some()
+ }
+}
diff --git a/vendor/papergrid/src/config/compact/mod.rs b/vendor/papergrid/src/config/compact/mod.rs
new file mode 100644
index 000000000..099fa44d9
--- /dev/null
+++ b/vendor/papergrid/src/config/compact/mod.rs
@@ -0,0 +1,141 @@
+//! A module which contains configuration of a [`CompactGrid`] which is responsible for grid configuration.
+//!
+//! [`CompactGrid`]: crate::grid::compact::CompactGrid
+
+use crate::color::StaticColor;
+
+use crate::config::{AlignmentHorizontal, Borders, Indent, Line, Sides};
+
+/// This structure represents a settings of a grid.
+///
+/// grid: crate::Grid.
+#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub struct CompactConfig {
+ borders: Borders<char>,
+ horizontal_line1: Option<Line<char>>,
+ border_colors: Borders<StaticColor>,
+ margin: Sides<Indent>,
+ margin_color: Sides<StaticColor>,
+ padding: Sides<Indent>,
+ padding_color: Sides<StaticColor>,
+ halignment: AlignmentHorizontal,
+}
+
+impl Default for CompactConfig {
+ fn default() -> Self {
+ Self::empty()
+ }
+}
+
+impl CompactConfig {
+ /// Returns an standard config.
+ pub const fn empty() -> Self {
+ Self {
+ halignment: AlignmentHorizontal::Left,
+ horizontal_line1: None,
+ borders: Borders::empty(),
+ border_colors: Borders::empty(),
+ margin: Sides::filled(Indent::zero()),
+ margin_color: Sides::filled(StaticColor::new("", "")),
+ padding: Sides::new(
+ Indent::spaced(1),
+ Indent::spaced(1),
+ Indent::zero(),
+ Indent::zero(),
+ ),
+ padding_color: Sides::filled(StaticColor::new("", "")),
+ }
+ }
+
+ /// Set grid margin.
+ pub const fn set_margin(mut self, margin: Sides<Indent>) -> Self {
+ self.margin = margin;
+ self
+ }
+
+ /// Returns a grid margin.
+ pub const fn get_margin(&self) -> &Sides<Indent> {
+ &self.margin
+ }
+
+ /// Set the [`Borders`] value as correct one.
+ pub const fn set_borders(mut self, borders: Borders<char>) -> Self {
+ self.borders = borders;
+ self
+ }
+
+ /// Set the first horizontal line.
+ ///
+ /// It ignores the [`Borders`] horizontal value if set for 1st row.
+ pub const fn set_first_horizontal_line(mut self, line: Line<char>) -> Self {
+ self.horizontal_line1 = Some(line);
+ self
+ }
+
+ /// Set the first horizontal line.
+ ///
+ /// It ignores the [`Borders`] horizontal value if set for 1st row.
+ pub const fn get_first_horizontal_line(&self) -> Option<Line<char>> {
+ self.horizontal_line1
+ }
+
+ /// Returns a current [`Borders`] structure.
+ pub const fn get_borders(&self) -> &Borders<char> {
+ &self.borders
+ }
+
+ /// Returns a current [`Borders`] structure.
+ pub const fn get_borders_color(&self) -> &Borders<StaticColor> {
+ &self.border_colors
+ }
+
+ /// Set a padding to a given cells.
+ pub const fn set_padding(mut self, padding: Sides<Indent>) -> Self {
+ self.padding = padding;
+ self
+ }
+
+ /// Get a padding for a given.
+ pub const fn get_padding(&self) -> &Sides<Indent> {
+ &self.padding
+ }
+
+ /// Set a horizontal alignment.
+ pub const fn set_alignment_horizontal(mut self, alignment: AlignmentHorizontal) -> Self {
+ self.halignment = alignment;
+ self
+ }
+
+ /// Get a alignment horizontal.
+ pub const fn get_alignment_horizontal(&self) -> AlignmentHorizontal {
+ self.halignment
+ }
+
+ /// Sets colors of border carcass on the grid.
+ pub const fn set_borders_color(mut self, borders: Borders<StaticColor>) -> Self {
+ self.border_colors = borders;
+ self
+ }
+
+ /// Set colors for a margin.
+ pub const fn set_margin_color(mut self, color: Sides<StaticColor>) -> Self {
+ self.margin_color = color;
+ self
+ }
+
+ /// Returns a margin color.
+ pub const fn get_margin_color(&self) -> Sides<StaticColor> {
+ self.margin_color
+ }
+
+ /// Set a padding to a given cells.
+ pub const fn set_padding_color(mut self, color: Sides<StaticColor>) -> Self {
+ self.padding_color = color;
+ self
+ }
+
+ /// Set a padding to a given cells.
+ pub const fn get_padding_color(&self) -> Sides<StaticColor> {
+ self.padding_color
+ }
+}
diff --git a/vendor/papergrid/src/config/entity.rs b/vendor/papergrid/src/config/entity.rs
new file mode 100644
index 000000000..0a2d3ba9b
--- /dev/null
+++ b/vendor/papergrid/src/config/entity.rs
@@ -0,0 +1,120 @@
+use super::Position;
+
+/// Entity a structure which represent a set of cells.
+///
+/// For example such table:
+///
+/// ```text
+/// ┌───┬───â”
+/// │ 0 │ 1 │
+/// ├───┼───┤
+/// │ 1 │ 2 │
+/// └───┴───┘
+/// ```
+///
+/// - has 4 cells.
+/// Which indexes are (0, 0), (0, 1), (1, 0), (1, 1).
+///
+/// - has 2 rows.
+/// Which indexes are 0, 1.
+///
+/// - has 2 column.
+/// Which indexes are 0, 1.
+///
+/// In [`Entity`] terms, all cells on the grid we call `Global`.
+#[derive(PartialEq, Eq, Debug, Hash, Clone, Copy)]
+pub enum Entity {
+ /// All cells on the grid.
+ Global,
+ /// All cells in a column on the grid.
+ Column(usize),
+ /// All cells in a row on the grid.
+ Row(usize),
+ /// A particular cell (row, column) on the grid.
+ Cell(usize, usize),
+}
+
+impl Entity {
+ /// Iterate over cells which are covered via the [`Entity`].
+ pub fn iter(&self, count_rows: usize, count_cols: usize) -> EntityIterator {
+ EntityIterator {
+ entity: *self,
+ count_rows,
+ count_cols,
+ i: 0,
+ j: 0,
+ }
+ }
+}
+
+impl From<Position> for Entity {
+ fn from((row, col): Position) -> Self {
+ Self::Cell(row, col)
+ }
+}
+
+/// An iterator over cells.
+///
+/// Produced from [`Entity::iter`].
+#[derive(Debug, Clone)]
+pub struct EntityIterator {
+ entity: Entity,
+ count_rows: usize,
+ count_cols: usize,
+ i: usize,
+ j: usize,
+}
+
+impl Iterator for EntityIterator {
+ type Item = Position;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if self.count_rows == 0 || self.count_cols == 0 {
+ return None;
+ }
+
+ match self.entity {
+ Entity::Cell(row, col) => {
+ self.count_cols = 0;
+ self.count_rows = 0;
+
+ Some((row, col))
+ }
+ Entity::Column(col) => {
+ if self.i >= self.count_rows {
+ return None;
+ }
+
+ let i = self.i;
+ self.i += 1;
+
+ Some((i, col))
+ }
+ Entity::Row(row) => {
+ if self.j >= self.count_cols {
+ return None;
+ }
+
+ let j = self.j;
+ self.j += 1;
+
+ Some((row, j))
+ }
+ Entity::Global => {
+ if self.j >= self.count_cols {
+ self.j = 0;
+ self.i += 1;
+
+ if self.i >= self.count_rows {
+ return None;
+ }
+ }
+
+ let j = self.j;
+ self.j += 1;
+
+ Some((self.i, j))
+ }
+ }
+ }
+}
diff --git a/vendor/papergrid/src/config/indent.rs b/vendor/papergrid/src/config/indent.rs
new file mode 100644
index 000000000..4d987724c
--- /dev/null
+++ b/vendor/papergrid/src/config/indent.rs
@@ -0,0 +1,31 @@
+/// Indent represent a filled space.
+#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub struct Indent {
+ /// A fill character.
+ pub fill: char,
+ /// A number of repeats of a fill character.
+ pub size: usize,
+}
+
+impl Indent {
+ /// Creates a new Indent structure.
+ pub const fn new(size: usize, fill: char) -> Self {
+ Self { fill, size }
+ }
+
+ /// Creates a new Indent structure with space (`' '`) as a fill character.
+ pub const fn spaced(size: usize) -> Self {
+ Self { size, fill: ' ' }
+ }
+
+ /// Creates a new Indent structure with space (`' '`) as a fill character.
+ pub const fn zero() -> Self {
+ Self::new(0, ' ')
+ }
+}
+
+impl Default for Indent {
+ fn default() -> Self {
+ Self { size: 0, fill: ' ' }
+ }
+}
diff --git a/vendor/papergrid/src/config/line.rs b/vendor/papergrid/src/config/line.rs
new file mode 100644
index 000000000..c3089e1c4
--- /dev/null
+++ b/vendor/papergrid/src/config/line.rs
@@ -0,0 +1,42 @@
+/// A line data structure.
+#[derive(Debug, Clone, Copy, Eq, PartialEq, PartialOrd, Ord)]
+pub struct Line<T> {
+ /// A horizontal/vertical character.
+ pub main: T,
+ /// A horizontal/vertical intersection.
+ pub intersection: Option<T>,
+ /// A horizontal left / vertical top intersection.
+ pub connect1: Option<T>,
+ /// A horizontal right / vertical bottom intersection.
+ pub connect2: Option<T>,
+}
+
+impl<T> Line<T> {
+ /// Creates a new line.
+ pub const fn new(
+ main: T,
+ intersection: Option<T>,
+ connect1: Option<T>,
+ connect2: Option<T>,
+ ) -> Self {
+ Self {
+ main,
+ intersection,
+ connect1,
+ connect2,
+ }
+ }
+
+ /// Creates a new line.
+ pub const fn filled(val: T) -> Self
+ where
+ T: Copy,
+ {
+ Self {
+ main: val,
+ intersection: Some(val),
+ connect1: Some(val),
+ connect2: Some(val),
+ }
+ }
+}
diff --git a/vendor/papergrid/src/config/mod.rs b/vendor/papergrid/src/config/mod.rs
new file mode 100644
index 000000000..bba0b458e
--- /dev/null
+++ b/vendor/papergrid/src/config/mod.rs
@@ -0,0 +1,23 @@
+//! A module which contains a general settings which might be used in other grid implementations.
+
+mod alignment;
+mod border;
+mod borders;
+mod entity;
+mod indent;
+mod line;
+mod position;
+mod sides;
+
+pub mod compact;
+#[cfg(feature = "std")]
+pub mod spanned;
+
+pub use alignment::{AlignmentHorizontal, AlignmentVertical};
+pub use border::Border;
+pub use borders::Borders;
+pub use entity::{Entity, EntityIterator};
+pub use indent::Indent;
+pub use line::Line;
+pub use position::Position;
+pub use sides::Sides;
diff --git a/vendor/papergrid/src/config/position.rs b/vendor/papergrid/src/config/position.rs
new file mode 100644
index 000000000..3996453cc
--- /dev/null
+++ b/vendor/papergrid/src/config/position.rs
@@ -0,0 +1,13 @@
+/// Position is a (row, col) position on a Grid.
+///
+/// For example such table has 4 cells.
+/// Which indexes are (0, 0), (0, 1), (1, 0), (1, 1).
+///
+/// ```text
+/// ┌───┬───â”
+/// │ 0 │ 1 │
+/// ├───┼───┤
+/// │ 1 │ 2 │
+/// └───┴───┘
+/// ```
+pub type Position = (usize, usize);
diff --git a/vendor/papergrid/src/config/sides.rs b/vendor/papergrid/src/config/sides.rs
new file mode 100644
index 000000000..7aa0fb498
--- /dev/null
+++ b/vendor/papergrid/src/config/sides.rs
@@ -0,0 +1,37 @@
+/// A structure which represents 4 box sides.
+#[derive(Default, Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub struct Sides<T> {
+ /// Top side.
+ pub top: T,
+ /// Bottom side.
+ pub bottom: T,
+ /// Left side.
+ pub left: T,
+ /// Right side.
+ pub right: T,
+}
+
+impl<T> Sides<T> {
+ /// Creates a new object.
+ pub const fn new(left: T, right: T, top: T, bottom: T) -> Self {
+ Self {
+ top,
+ bottom,
+ left,
+ right,
+ }
+ }
+
+ /// Creates a new object.
+ pub const fn filled(value: T) -> Self
+ where
+ T: Copy,
+ {
+ Self {
+ top: value,
+ bottom: value,
+ left: value,
+ right: value,
+ }
+ }
+}
diff --git a/vendor/papergrid/src/config/spanned/borders_config.rs b/vendor/papergrid/src/config/spanned/borders_config.rs
new file mode 100644
index 000000000..fe7729806
--- /dev/null
+++ b/vendor/papergrid/src/config/spanned/borders_config.rs
@@ -0,0 +1,486 @@
+use std::collections::{HashMap, HashSet};
+
+use crate::config::{Border, Borders, Position};
+
+#[derive(Debug, Default, Clone, PartialEq, Eq)]
+pub(crate) struct BordersConfig<T> {
+ global: Option<T>,
+ borders: Borders<T>,
+ cells: BordersMap<T>,
+ horizontals: HashMap<usize, HorizontalLine<T>>,
+ verticals: HashMap<usize, VerticalLine<T>>,
+ layout: BordersLayout,
+}
+
+impl<T: std::fmt::Debug> BordersConfig<T> {
+ pub(crate) fn insert_border(&mut self, pos: Position, border: Border<T>) {
+ if let Some(c) = border.top {
+ self.cells.horizontal.insert(pos, c);
+ self.layout.horizontals.insert(pos.0);
+ }
+
+ if let Some(c) = border.bottom {
+ self.cells.horizontal.insert((pos.0 + 1, pos.1), c);
+ self.layout.horizontals.insert(pos.0 + 1);
+ }
+
+ if let Some(c) = border.left {
+ self.cells.vertical.insert(pos, c);
+ self.layout.verticals.insert(pos.1);
+ }
+
+ if let Some(c) = border.right {
+ self.cells.vertical.insert((pos.0, pos.1 + 1), c);
+ self.layout.verticals.insert(pos.1 + 1);
+ }
+
+ if let Some(c) = border.left_top_corner {
+ self.cells.intersection.insert((pos.0, pos.1), c);
+ self.layout.horizontals.insert(pos.0);
+ self.layout.verticals.insert(pos.1);
+ }
+
+ if let Some(c) = border.right_top_corner {
+ self.cells.intersection.insert((pos.0, pos.1 + 1), c);
+ self.layout.horizontals.insert(pos.0);
+ self.layout.verticals.insert(pos.1 + 1);
+ }
+
+ if let Some(c) = border.left_bottom_corner {
+ self.cells.intersection.insert((pos.0 + 1, pos.1), c);
+ self.layout.horizontals.insert(pos.0 + 1);
+ self.layout.verticals.insert(pos.1);
+ }
+
+ if let Some(c) = border.right_bottom_corner {
+ self.cells.intersection.insert((pos.0 + 1, pos.1 + 1), c);
+ self.layout.horizontals.insert(pos.0 + 1);
+ self.layout.verticals.insert(pos.1 + 1);
+ }
+ }
+
+ pub(crate) fn remove_border(&mut self, pos: Position, shape: (usize, usize)) {
+ let (count_rows, count_cols) = shape;
+
+ self.cells.horizontal.remove(&pos);
+ self.cells.horizontal.remove(&(pos.0 + 1, pos.1));
+ self.cells.vertical.remove(&pos);
+ self.cells.vertical.remove(&(pos.0, pos.1 + 1));
+ self.cells.intersection.remove(&pos);
+ self.cells.intersection.remove(&(pos.0 + 1, pos.1));
+ self.cells.intersection.remove(&(pos.0, pos.1 + 1));
+ self.cells.intersection.remove(&(pos.0 + 1, pos.1 + 1));
+
+ // clean up the layout.
+
+ if !self.check_is_horizontal_set(pos.0, count_rows) {
+ self.layout.horizontals.remove(&pos.0);
+ }
+
+ if !self.check_is_horizontal_set(pos.0 + 1, count_rows) {
+ self.layout.horizontals.remove(&(pos.0 + 1));
+ }
+
+ if !self.check_is_vertical_set(pos.1, count_cols) {
+ self.layout.verticals.remove(&pos.1);
+ }
+
+ if !self.check_is_vertical_set(pos.1 + 1, count_cols) {
+ self.layout.verticals.remove(&(pos.1 + 1));
+ }
+ }
+
+ pub(crate) fn get_border(&self, pos: Position, shape: (usize, usize)) -> Border<&T> {
+ Border {
+ top: self.get_horizontal(pos, shape.0),
+ bottom: self.get_horizontal((pos.0 + 1, pos.1), shape.0),
+ left: self.get_vertical(pos, shape.1),
+ left_top_corner: self.get_intersection(pos, shape),
+ left_bottom_corner: self.get_intersection((pos.0 + 1, pos.1), shape),
+ right: self.get_vertical((pos.0, pos.1 + 1), shape.1),
+ right_top_corner: self.get_intersection((pos.0, pos.1 + 1), shape),
+ right_bottom_corner: self.get_intersection((pos.0 + 1, pos.1 + 1), shape),
+ }
+ }
+
+ pub(crate) fn insert_horizontal_line(&mut self, row: usize, line: HorizontalLine<T>) {
+ if line.left.is_some() {
+ self.layout.left = true;
+ }
+
+ // todo: when we delete lines these are still left set; so has_horizontal/vertical return true in some cases;
+ // it shall be fixed, but maybe we can improve the logic as it got a bit complicated.
+ if line.right.is_some() {
+ self.layout.right = true;
+ }
+
+ if line.intersection.is_some() {
+ self.layout.inner_verticals = true;
+ }
+
+ self.horizontals.insert(row, line);
+ self.layout.horizontals.insert(row);
+ }
+
+ pub(crate) fn get_horizontal_line(&self, row: usize) -> Option<&HorizontalLine<T>> {
+ self.horizontals.get(&row)
+ }
+
+ pub(crate) fn remove_horizontal_line(&mut self, row: usize, count_rows: usize) {
+ self.horizontals.remove(&row);
+ self.layout.horizontals.remove(&row);
+
+ if self.has_horizontal(row, count_rows) {
+ self.layout.horizontals.insert(row);
+ }
+ }
+
+ pub(crate) fn insert_vertical_line(&mut self, row: usize, line: VerticalLine<T>) {
+ if line.top.is_some() {
+ self.layout.top = true;
+ }
+
+ if line.bottom.is_some() {
+ self.layout.bottom = true;
+ }
+
+ self.verticals.insert(row, line);
+ self.layout.verticals.insert(row);
+ }
+
+ pub(crate) fn get_vertical_line(&self, row: usize) -> Option<&VerticalLine<T>> {
+ self.verticals.get(&row)
+ }
+
+ pub(crate) fn remove_vertical_line(&mut self, col: usize, count_columns: usize) {
+ self.verticals.remove(&col);
+ self.layout.verticals.remove(&col);
+
+ if self.has_vertical(col, count_columns) {
+ self.layout.verticals.insert(col);
+ }
+ }
+
+ pub(crate) fn set_borders(&mut self, borders: Borders<T>) {
+ self.borders = borders;
+ }
+
+ pub(crate) fn get_borders(&self) -> &Borders<T> {
+ &self.borders
+ }
+
+ pub(crate) fn get_global(&self) -> Option<&T> {
+ self.global.as_ref()
+ }
+
+ pub(crate) fn set_global(&mut self, value: T) {
+ self.global = Some(value);
+ }
+
+ pub(crate) fn get_vertical(&self, pos: Position, count_cols: usize) -> Option<&T> {
+ self.cells
+ .vertical
+ .get(&pos)
+ .or_else(|| self.verticals.get(&pos.1).and_then(|l| l.main.as_ref()))
+ .or({
+ if pos.1 == count_cols {
+ self.borders.right.as_ref()
+ } else if pos.1 == 0 {
+ self.borders.left.as_ref()
+ } else {
+ self.borders.vertical.as_ref()
+ }
+ })
+ .or(self.global.as_ref())
+ }
+
+ pub(crate) fn get_horizontal(&self, pos: Position, count_rows: usize) -> Option<&T> {
+ self.cells
+ .horizontal
+ .get(&pos)
+ .or_else(|| self.horizontals.get(&pos.0).and_then(|l| l.main.as_ref()))
+ .or({
+ if pos.0 == 0 {
+ self.borders.top.as_ref()
+ } else if pos.0 == count_rows {
+ self.borders.bottom.as_ref()
+ } else {
+ self.borders.horizontal.as_ref()
+ }
+ })
+ .or(self.global.as_ref())
+ }
+
+ pub(crate) fn get_intersection(
+ &self,
+ pos: Position,
+ (count_rows, count_cols): (usize, usize),
+ ) -> Option<&T> {
+ let use_top = pos.0 == 0;
+ let use_bottom = pos.0 == count_rows;
+ let use_left = pos.1 == 0;
+ let use_right = pos.1 == count_cols;
+
+ if let Some(c) = self.cells.intersection.get(&pos) {
+ return Some(c);
+ }
+
+ let hl_c = self.horizontals.get(&pos.0).and_then(|l| {
+ if use_left && l.left.is_some() {
+ l.left.as_ref()
+ } else if use_right && l.right.is_some() {
+ l.right.as_ref()
+ } else if !use_right && !use_left && l.intersection.is_some() {
+ l.intersection.as_ref()
+ } else {
+ None
+ }
+ });
+
+ if let Some(c) = hl_c {
+ return Some(c);
+ }
+
+ let vl_c = self.verticals.get(&pos.1).and_then(|l| {
+ if use_top && l.top.is_some() {
+ l.top.as_ref()
+ } else if use_bottom && l.bottom.is_some() {
+ l.bottom.as_ref()
+ } else if !use_top && !use_bottom && l.intersection.is_some() {
+ l.intersection.as_ref()
+ } else {
+ None
+ }
+ });
+
+ if let Some(c) = vl_c {
+ return Some(c);
+ }
+
+ let borders_c = {
+ if use_top && use_left {
+ self.borders.top_left.as_ref()
+ } else if use_top && use_right {
+ self.borders.top_right.as_ref()
+ } else if use_bottom && use_left {
+ self.borders.bottom_left.as_ref()
+ } else if use_bottom && use_right {
+ self.borders.bottom_right.as_ref()
+ } else if use_top {
+ self.borders.top_intersection.as_ref()
+ } else if use_bottom {
+ self.borders.bottom_intersection.as_ref()
+ } else if use_left {
+ self.borders.left_intersection.as_ref()
+ } else if use_right {
+ self.borders.right_intersection.as_ref()
+ } else {
+ self.borders.intersection.as_ref()
+ }
+ };
+
+ if let Some(c) = borders_c {
+ return Some(c);
+ }
+
+ self.global.as_ref()
+ }
+
+ pub(crate) fn has_horizontal(&self, row: usize, count_rows: usize) -> bool {
+ self.global.is_some()
+ || (row == 0 && self.borders.has_top())
+ || (row == count_rows && self.borders.has_bottom())
+ || (row > 0 && row < count_rows && self.borders.has_horizontal())
+ || self.is_horizontal_set(row, count_rows)
+ }
+
+ pub(crate) fn has_vertical(&self, col: usize, count_cols: usize) -> bool {
+ self.global.is_some()
+ || (col == 0 && self.borders.has_left())
+ || (col == count_cols && self.borders.has_right())
+ || (col > 0 && col < count_cols && self.borders.has_vertical())
+ || self.is_vertical_set(col, count_cols)
+ }
+
+ fn is_horizontal_set(&self, row: usize, count_rows: usize) -> bool {
+ (row == 0 && self.layout.top)
+ || (row == count_rows && self.layout.bottom)
+ || (row > 0 && row < count_rows && self.layout.inner_horizontals)
+ || self.layout.horizontals.contains(&row)
+ }
+
+ fn is_vertical_set(&self, col: usize, count_cols: usize) -> bool {
+ (col == 0 && self.layout.left)
+ || (col == count_cols && self.layout.right)
+ || (col > 0 && col < count_cols && self.layout.inner_verticals)
+ || self.layout.verticals.contains(&col)
+ }
+
+ fn check_is_horizontal_set(&self, row: usize, count_rows: usize) -> bool {
+ (row == 0 && self.layout.top)
+ || (row == count_rows && self.layout.bottom)
+ || (row > 0 && row < count_rows && self.layout.inner_horizontals)
+ || self.cells.horizontal.keys().any(|&p| p.0 == row)
+ || self.cells.intersection.keys().any(|&p| p.0 == row)
+ }
+
+ fn check_is_vertical_set(&self, col: usize, count_cols: usize) -> bool {
+ (col == 0 && self.layout.left)
+ || (col == count_cols && self.layout.right)
+ || (col > 0 && col < count_cols && self.layout.inner_verticals)
+ || self.cells.vertical.keys().any(|&p| p.1 == col)
+ || self.cells.intersection.keys().any(|&p| p.1 == col)
+ }
+}
+
+#[derive(Debug, Clone, Default, PartialEq, Eq)]
+pub(crate) struct BordersMap<T> {
+ vertical: HashMap<Position, T>,
+ horizontal: HashMap<Position, T>,
+ intersection: HashMap<Position, T>,
+}
+
+#[derive(Debug, Clone, Default, PartialEq, Eq)]
+pub(crate) struct BordersLayout {
+ left: bool,
+ right: bool,
+ top: bool,
+ bottom: bool,
+ inner_verticals: bool,
+ inner_horizontals: bool,
+ horizontals: HashSet<usize>,
+ verticals: HashSet<usize>,
+}
+
+/// A structure for a custom horizontal line.
+#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, PartialOrd, Ord)]
+pub struct HorizontalLine<T> {
+ /// Line character.
+ pub main: Option<T>,
+ /// Line intersection character.
+ pub intersection: Option<T>,
+ /// Left intersection character.
+ pub left: Option<T>,
+ /// Right intersection character.
+ pub right: Option<T>,
+}
+
+impl<T> HorizontalLine<T> {
+ /// Verifies if the line has any setting set.
+ pub const fn is_empty(&self) -> bool {
+ self.main.is_none()
+ && self.intersection.is_none()
+ && self.left.is_none()
+ && self.right.is_none()
+ }
+}
+
+/// A structure for a vertical line.
+#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, PartialOrd, Ord)]
+pub struct VerticalLine<T> {
+ /// Line character.
+ pub main: Option<T>,
+ /// Line intersection character.
+ pub intersection: Option<T>,
+ /// Left intersection character.
+ pub top: Option<T>,
+ /// Right intersection character.
+ pub bottom: Option<T>,
+}
+
+impl<T> VerticalLine<T> {
+ /// Verifies if the line has any setting set.
+ pub const fn is_empty(&self) -> bool {
+ self.main.is_none()
+ && self.intersection.is_none()
+ && self.top.is_none()
+ && self.bottom.is_none()
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn test_insert_border() {
+ let mut borders = BordersConfig::<char>::default();
+ borders.insert_border((0, 0), Border::filled('x'));
+
+ assert_eq!(borders.get_border((0, 0), (10, 10)), Border::filled(&'x'));
+ assert_eq!(borders.get_border((0, 0), (0, 0)), Border::filled(&'x'));
+
+ assert!(borders.is_horizontal_set(0, 10));
+ assert!(borders.is_horizontal_set(1, 10));
+ assert!(!borders.is_horizontal_set(2, 10));
+ assert!(borders.is_vertical_set(0, 10));
+ assert!(borders.is_vertical_set(1, 10));
+ assert!(!borders.is_vertical_set(2, 10));
+
+ assert!(borders.is_horizontal_set(0, 0));
+ assert!(borders.is_horizontal_set(1, 0));
+ assert!(!borders.is_horizontal_set(2, 0));
+ assert!(borders.is_vertical_set(0, 0));
+ assert!(borders.is_vertical_set(1, 0));
+ assert!(!borders.is_vertical_set(2, 0));
+ }
+
+ #[test]
+ fn test_insert_border_override() {
+ let mut borders = BordersConfig::<char>::default();
+ borders.insert_border((0, 0), Border::filled('x'));
+ borders.insert_border((1, 0), Border::filled('y'));
+ borders.insert_border((0, 1), Border::filled('w'));
+ borders.insert_border((1, 1), Border::filled('q'));
+
+ assert_eq!(
+ borders.get_border((0, 0), (10, 10)).copied(),
+ Border::full('x', 'y', 'x', 'w', 'x', 'w', 'y', 'q')
+ );
+ assert_eq!(
+ borders.get_border((0, 1), (10, 10)).copied(),
+ Border::full('w', 'q', 'w', 'w', 'w', 'w', 'q', 'q')
+ );
+ assert_eq!(
+ borders.get_border((1, 0), (10, 10)).copied(),
+ Border::full('y', 'y', 'y', 'q', 'y', 'q', 'y', 'q')
+ );
+ assert_eq!(
+ borders.get_border((1, 1), (10, 10)).copied(),
+ Border::filled('q')
+ );
+
+ assert!(borders.is_horizontal_set(0, 10));
+ assert!(borders.is_horizontal_set(1, 10));
+ assert!(borders.is_horizontal_set(2, 10));
+ assert!(!borders.is_horizontal_set(3, 10));
+ assert!(borders.is_vertical_set(0, 10));
+ assert!(borders.is_vertical_set(1, 10));
+ assert!(borders.is_vertical_set(2, 10));
+ assert!(!borders.is_vertical_set(3, 10));
+ }
+
+ #[test]
+ fn test_set_global() {
+ let mut borders = BordersConfig::<char>::default();
+ borders.insert_border((0, 0), Border::filled('x'));
+ borders.set_global('l');
+
+ assert_eq!(borders.get_border((0, 0), (10, 10)), Border::filled(&'x'));
+ assert_eq!(borders.get_border((2, 0), (10, 10)), Border::filled(&'l'));
+
+ assert!(borders.is_horizontal_set(0, 10));
+ assert!(borders.is_horizontal_set(1, 10));
+ assert!(!borders.is_horizontal_set(2, 10));
+ assert!(borders.is_vertical_set(0, 10));
+ assert!(borders.is_vertical_set(1, 10));
+ assert!(!borders.is_vertical_set(2, 10));
+
+ assert!(borders.is_horizontal_set(0, 0));
+ assert!(borders.is_horizontal_set(1, 0));
+ assert!(!borders.is_horizontal_set(2, 0));
+ assert!(borders.is_vertical_set(0, 0));
+ assert!(borders.is_vertical_set(1, 0));
+ assert!(!borders.is_vertical_set(2, 0));
+ }
+}
diff --git a/vendor/papergrid/src/config/spanned/entity_map.rs b/vendor/papergrid/src/config/spanned/entity_map.rs
new file mode 100644
index 000000000..472ea5fb2
--- /dev/null
+++ b/vendor/papergrid/src/config/spanned/entity_map.rs
@@ -0,0 +1,108 @@
+use fnv::FnvHashMap;
+
+use crate::config::{Entity, Position};
+
+/// A structure to keep information for [`Entity`] as a key.
+#[derive(Debug, Default, Clone, PartialEq, Eq)]
+pub struct EntityMap<T> {
+ // we have a global type to allocate in on stack.
+ // because most of the time no changes are made to the [`EntityMap`].
+ global: T,
+ columns: FnvHashMap<usize, T>,
+ rows: FnvHashMap<usize, T>,
+ cells: FnvHashMap<Position, T>,
+}
+
+impl<T> EntityMap<T> {
+ /// Creates an empty [`EntityMap`].
+ pub fn new(global: T) -> Self {
+ Self {
+ global,
+ rows: FnvHashMap::default(),
+ columns: FnvHashMap::default(),
+ cells: FnvHashMap::default(),
+ }
+ }
+
+ /// Get a value for an [`Entity`].
+ pub fn get(&self, entity: Entity) -> &T {
+ if self.rows.is_empty() && self.columns.is_empty() && self.cells.is_empty() {
+ return &self.global;
+ }
+
+ match entity {
+ Entity::Column(col) => self.columns.get(&col).unwrap_or(&self.global),
+ Entity::Row(row) => self.rows.get(&row).unwrap_or(&self.global),
+ Entity::Cell(row, col) => {
+ // todo: optimize;
+ //
+ // Cause we can change rows/columns/cells separately we need to check them separately.
+ // But we often doing this checks in `Grid::fmt` and I believe if we could optimize it it could be beneficial.
+ //
+ // Haven't found a solution for that yet.
+ //
+ // I was wondering if there is a hash function like.
+ // Apparently it doesn't make sense cause we will reset columns/rows on cell insert which is not what we want.
+ //
+ // ```
+ // hash(column, row) == hash(column) == hash(row)
+ // ```
+ //
+ // ref: https://opendsa-server.cs.vt.edu/ODSA/Books/Everything/html/Sparse.html
+ // ref: https://users.rust-lang.org/t/make-hash-return-same-value-whather-the-order-of-element-of-a-tuple/69932/13
+
+ self.cells
+ .get(&(row, col))
+ .or_else(|| self.columns.get(&col))
+ .or_else(|| self.rows.get(&row))
+ .unwrap_or(&self.global)
+ }
+ Entity::Global => &self.global,
+ }
+ }
+
+ /// Removes a value for an [`Entity`].
+ pub fn remove(&mut self, entity: Entity) {
+ match entity {
+ Entity::Global => {
+ self.cells.clear();
+ self.rows.clear();
+ self.columns.clear();
+ }
+ Entity::Column(col) => self.cells.retain(|&(_, c), _| c != col),
+ Entity::Row(row) => self.cells.retain(|&(r, _), _| r != row),
+ Entity::Cell(row, col) => {
+ self.cells.remove(&(row, col));
+ }
+ }
+ }
+}
+
+impl<T: Clone> EntityMap<T> {
+ /// Set a value for an [`Entity`].
+ pub fn insert(&mut self, entity: Entity, value: T) {
+ match entity {
+ Entity::Column(col) => {
+ for &row in self.rows.keys() {
+ self.cells.insert((row, col), value.clone());
+ }
+
+ self.columns.insert(col, value);
+ }
+ Entity::Row(row) => {
+ for &col in self.columns.keys() {
+ self.cells.insert((row, col), value.clone());
+ }
+
+ self.rows.insert(row, value);
+ }
+ Entity::Cell(row, col) => {
+ self.cells.insert((row, col), value);
+ }
+ Entity::Global => {
+ self.remove(Entity::Global);
+ self.global = value
+ }
+ }
+ }
+}
diff --git a/vendor/papergrid/src/config/spanned/formatting.rs b/vendor/papergrid/src/config/spanned/formatting.rs
new file mode 100644
index 000000000..0865f6c5b
--- /dev/null
+++ b/vendor/papergrid/src/config/spanned/formatting.rs
@@ -0,0 +1,21 @@
+/// Formatting represent a logic of formatting of a cell.
+#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub struct Formatting {
+ /// An setting to allow horizontal trim.
+ pub horizontal_trim: bool,
+ /// An setting to allow vertical trim.
+ pub vertical_trim: bool,
+ /// An setting to allow alignment per line.
+ pub allow_lines_alignment: bool,
+}
+
+impl Formatting {
+ /// Creates a new [`Formatting`] structure.
+ pub fn new(horizontal_trim: bool, vertical_trim: bool, allow_lines_alignment: bool) -> Self {
+ Self {
+ horizontal_trim,
+ vertical_trim,
+ allow_lines_alignment,
+ }
+ }
+}
diff --git a/vendor/papergrid/src/config/spanned/mod.rs b/vendor/papergrid/src/config/spanned/mod.rs
new file mode 100644
index 000000000..a7f71e11c
--- /dev/null
+++ b/vendor/papergrid/src/config/spanned/mod.rs
@@ -0,0 +1,887 @@
+//! A module which contains configuration options for a [`Grid`].
+//!
+//! [`Grid`]: crate::grid::iterable::Grid
+
+mod borders_config;
+mod entity_map;
+mod formatting;
+mod offset;
+
+use std::collections::HashMap;
+
+use crate::color::{AnsiColor, StaticColor};
+use crate::config::compact::CompactConfig;
+use crate::config::{
+ AlignmentHorizontal, AlignmentVertical, Border, Borders, Entity, Indent, Position, Sides,
+};
+use borders_config::BordersConfig;
+
+pub use self::{entity_map::EntityMap, formatting::Formatting, offset::Offset};
+
+/// This structure represents a settings of a grid.
+///
+/// grid: crate::Grid.
+#[derive(Debug, PartialEq, Eq, Clone)]
+pub struct SpannedConfig {
+ margin: Sides<ColoredMarginIndent>,
+ padding: EntityMap<Sides<ColoredIndent>>,
+ alignment_h: EntityMap<AlignmentHorizontal>,
+ alignment_v: EntityMap<AlignmentVertical>,
+ formatting: EntityMap<Formatting>,
+ span_columns: HashMap<Position, usize>,
+ span_rows: HashMap<Position, usize>,
+ borders: BordersConfig<char>,
+ borders_colors: BordersConfig<AnsiColor<'static>>,
+ borders_missing_char: char,
+ horizontal_chars: HashMap<Position, HashMap<Offset, char>>,
+ horizontal_colors: HashMap<Position, HashMap<Offset, AnsiColor<'static>>>,
+ vertical_chars: HashMap<Position, HashMap<Offset, char>>,
+ vertical_colors: HashMap<Position, HashMap<Offset, AnsiColor<'static>>>,
+ justification: EntityMap<char>,
+ justification_color: EntityMap<Option<AnsiColor<'static>>>,
+}
+
+impl Default for SpannedConfig {
+ fn default() -> Self {
+ Self {
+ margin: Sides::default(),
+ padding: EntityMap::default(),
+ formatting: EntityMap::default(),
+ alignment_h: EntityMap::new(AlignmentHorizontal::Left),
+ alignment_v: EntityMap::new(AlignmentVertical::Top),
+ span_columns: HashMap::default(),
+ span_rows: HashMap::default(),
+ borders: BordersConfig::default(),
+ borders_colors: BordersConfig::default(),
+ borders_missing_char: ' ',
+ horizontal_chars: HashMap::default(),
+ horizontal_colors: HashMap::default(),
+ vertical_chars: HashMap::default(),
+ vertical_colors: HashMap::default(),
+ justification: EntityMap::new(' '),
+ justification_color: EntityMap::default(),
+ }
+ }
+}
+
+impl SpannedConfig {
+ /// Set a margin of a grid.
+ pub fn set_margin(&mut self, margin: Sides<Indent>) {
+ self.margin.left.indent = margin.left;
+ self.margin.right.indent = margin.right;
+ self.margin.top.indent = margin.top;
+ self.margin.bottom.indent = margin.bottom;
+ }
+
+ /// Set a color of margin of a grid.
+ pub fn set_margin_color(&mut self, margin: Sides<Option<AnsiColor<'static>>>) {
+ self.margin.left.color = margin.left;
+ self.margin.right.color = margin.right;
+ self.margin.top.color = margin.top;
+ self.margin.bottom.color = margin.bottom;
+ }
+
+ /// Set an offset of margin of a grid.
+ pub fn set_margin_offset(&mut self, margin: Sides<Offset>) {
+ self.margin.left.offset = margin.left;
+ self.margin.right.offset = margin.right;
+ self.margin.top.offset = margin.top;
+ self.margin.bottom.offset = margin.bottom;
+ }
+
+ /// Returns a margin value currently set.
+ pub fn get_margin(&self) -> Sides<Indent> {
+ Sides::new(
+ self.margin.left.indent,
+ self.margin.right.indent,
+ self.margin.top.indent,
+ self.margin.bottom.indent,
+ )
+ }
+
+ /// Returns a margin color value currently set.
+ pub fn get_margin_color(&self) -> Sides<Option<AnsiColor<'static>>> {
+ Sides::new(
+ self.margin.left.color.clone(),
+ self.margin.right.color.clone(),
+ self.margin.top.color.clone(),
+ self.margin.bottom.color.clone(),
+ )
+ }
+
+ /// Returns a margin offset value currently set.
+ pub fn get_margin_offset(&self) -> Sides<Offset> {
+ Sides::new(
+ self.margin.left.offset,
+ self.margin.right.offset,
+ self.margin.top.offset,
+ self.margin.bottom.offset,
+ )
+ }
+
+ /// Clears all theme changes.
+ /// And sets it to default.
+ pub fn clear_theme(&mut self) {
+ self.borders = BordersConfig::default();
+ self.horizontal_chars.clear();
+ self.vertical_chars.clear();
+ self.horizontal_colors.clear();
+ self.vertical_colors.clear();
+ }
+
+ /// Set the [`Borders`] value as correct one.
+ pub fn set_borders(&mut self, borders: Borders<char>) {
+ self.borders.set_borders(borders);
+ }
+
+ /// Gets a global border value if set.
+ pub fn get_global_border(&self) -> Option<&char> {
+ self.borders.get_global()
+ }
+
+ /// Set the all [`Borders`] values to a char.
+ pub fn set_global_border(&mut self, c: char) {
+ self.borders.set_global(c);
+ }
+
+ /// Returns a current [`Borders`] structure.
+ pub fn get_borders(&self) -> &Borders<char> {
+ self.borders.get_borders()
+ }
+
+ /// Set the border line by row index.
+ ///
+ /// Row `0` means the top row.
+ /// Row `grid.count_rows()` means the bottom row.
+ pub fn insert_horizontal_line(&mut self, line: usize, val: HorizontalLine) {
+ self.borders.insert_horizontal_line(line, val);
+ }
+
+ /// Sets off the border line by row index if any were set
+ ///
+ /// Row `0` means the top row.
+ /// Row `grid.count_rows()` means the bottom row.
+ pub fn remove_horizontal_line(&mut self, line: usize, count_rows: usize) {
+ self.borders.remove_horizontal_line(line, count_rows);
+ }
+
+ /// Gets a overridden vertical line.
+ ///
+ /// Row `0` means the left row.
+ /// Row `grid.count_columns()` means the right most row.
+ pub fn get_vertical_line(&self, line: usize) -> Option<&VerticalLine> {
+ self.borders.get_vertical_line(line)
+ }
+
+ /// Set the border line by column index.
+ ///
+ /// Row `0` means the left row.
+ /// Row `grid.count_columns()` means the right most row.
+ pub fn insert_vertical_line(&mut self, line: usize, val: VerticalLine) {
+ self.borders.insert_vertical_line(line, val);
+ }
+
+ /// Sets off the border line by column index if any were set
+ ///
+ /// Row `0` means the left row.
+ /// Row `grid.count_columns()` means the right most row.
+ pub fn remove_vertical_line(&mut self, line: usize, count_columns: usize) {
+ self.borders.remove_vertical_line(line, count_columns);
+ }
+
+ /// Gets a overridden line.
+ ///
+ /// Row `0` means the top row.
+ /// Row `grid.count_rows()` means the bottom row.
+ pub fn get_horizontal_line(&self, line: usize) -> Option<&HorizontalLine> {
+ self.borders.get_horizontal_line(line)
+ }
+
+ /// Override a character on a horizontal line.
+ ///
+ /// If borders are not set the char won't be used.
+ ///
+ /// It takes not cell position but line as row and column of a cell;
+ /// So its range is line <= count_rows && col < count_columns.
+ pub fn set_horizontal_char(&mut self, pos: Position, c: char, offset: Offset) {
+ let chars = self
+ .horizontal_chars
+ .entry(pos)
+ .or_insert_with(|| HashMap::with_capacity(1));
+
+ chars.insert(offset, c);
+ }
+
+ /// Get a list of overridden chars in a horizontal border.
+ ///
+ /// It takes not cell position but line as row and column of a cell;
+ /// So its range is line <= count_rows && col < count_columns.
+ pub fn lookup_horizontal_char(&self, pos: Position, offset: usize, end: usize) -> Option<char> {
+ self.horizontal_chars
+ .get(&pos)
+ .and_then(|chars| {
+ chars.get(&Offset::Begin(offset)).or_else(|| {
+ if end > offset {
+ if end == 0 {
+ chars.get(&Offset::End(0))
+ } else {
+ chars.get(&Offset::End(end - offset - 1))
+ }
+ } else {
+ None
+ }
+ })
+ })
+ .copied()
+ }
+
+ /// Checks if there any char in a horizontal border being overridden.
+ ///
+ /// It takes not cell position but line as row and column of a cell;
+ /// So its range is line <= count_rows && col < count_columns.
+ pub fn is_overridden_horizontal(&self, pos: Position) -> bool {
+ self.horizontal_chars.get(&pos).is_some()
+ }
+
+ /// Removes a list of overridden chars in a horizontal border.
+ ///
+ /// It takes not cell position but line as row and column of a cell;
+ /// So its range is line <= count_rows && col < count_columns.
+ pub fn remove_overridden_horizontal(&mut self, pos: Position) {
+ self.horizontal_chars.remove(&pos);
+ }
+
+ /// Override a vertical split line.
+ ///
+ /// If borders are not set the char won't be used.
+ ///
+ /// It takes not cell position but cell row and column of a line;
+ /// So its range is row < count_rows && col <= count_columns.
+ pub fn set_vertical_char(&mut self, pos: Position, c: char, offset: Offset) {
+ let chars = self
+ .vertical_chars
+ .entry(pos)
+ .or_insert_with(|| HashMap::with_capacity(1));
+
+ chars.insert(offset, c);
+ }
+
+ /// Get a list of overridden chars in a horizontal border.
+ ///
+ /// It takes not cell position but cell row and column of a line;
+ /// So its range is row < count_rows && col <= count_columns.
+ pub fn lookup_vertical_char(&self, pos: Position, offset: usize, end: usize) -> Option<char> {
+ self.vertical_chars
+ .get(&pos)
+ .and_then(|chars| {
+ chars.get(&Offset::Begin(offset)).or_else(|| {
+ if end > offset {
+ if end == 0 {
+ chars.get(&Offset::End(0))
+ } else {
+ chars.get(&Offset::End(end - offset - 1))
+ }
+ } else {
+ None
+ }
+ })
+ })
+ .copied()
+ }
+
+ /// Checks if there any char in a horizontal border being overridden.
+ ///
+ /// It takes not cell position but cell row and column of a line;
+ /// So its range is row < count_rows && col <= count_columns.
+ pub fn is_overridden_vertical(&self, pos: Position) -> bool {
+ self.vertical_chars.get(&pos).is_some()
+ }
+
+ /// Removes a list of overridden chars in a horizontal border.
+ ///
+ /// It takes not cell position but cell row and column of a line;
+ /// So its range is row < count_rows && col <= count_columns.
+ pub fn remove_overridden_vertical(&mut self, pos: Position) {
+ self.vertical_chars.remove(&pos);
+ }
+
+ /// Override a character color on a horizontal line.
+ pub fn set_horizontal_color(&mut self, pos: Position, c: AnsiColor<'static>, offset: Offset) {
+ let chars = self
+ .horizontal_colors
+ .entry(pos)
+ .or_insert_with(|| HashMap::with_capacity(1));
+
+ chars.insert(offset, c);
+ }
+
+ /// Get a overridden color in a horizontal border.
+ pub fn lookup_horizontal_color(
+ &self,
+ pos: Position,
+ offset: usize,
+ end: usize,
+ ) -> Option<&AnsiColor<'static>> {
+ self.horizontal_colors.get(&pos).and_then(|chars| {
+ chars.get(&Offset::Begin(offset)).or_else(|| {
+ if end > offset {
+ if end == 0 {
+ chars.get(&Offset::End(0))
+ } else {
+ chars.get(&Offset::End(end - offset - 1))
+ }
+ } else {
+ None
+ }
+ })
+ })
+ }
+
+ /// Override a character color on a vertical line.
+ pub fn set_vertical_color(&mut self, pos: Position, c: AnsiColor<'static>, offset: Offset) {
+ let chars = self
+ .vertical_colors
+ .entry(pos)
+ .or_insert_with(|| HashMap::with_capacity(1));
+
+ chars.insert(offset, c);
+ }
+
+ /// Get a overridden color in a vertical border.
+ pub fn lookup_vertical_color(
+ &self,
+ pos: Position,
+ offset: usize,
+ end: usize,
+ ) -> Option<&AnsiColor<'static>> {
+ self.vertical_colors.get(&pos).and_then(|chars| {
+ chars.get(&Offset::Begin(offset)).or_else(|| {
+ if end > offset {
+ if end == 0 {
+ chars.get(&Offset::End(0))
+ } else {
+ chars.get(&Offset::End(end - offset - 1))
+ }
+ } else {
+ None
+ }
+ })
+ })
+ }
+
+ /// Set a padding to a given cells.
+ pub fn set_padding(&mut self, entity: Entity, padding: Sides<Indent>) {
+ let mut pad = self.padding.get(entity).clone();
+ pad.left.indent = padding.left;
+ pad.right.indent = padding.right;
+ pad.top.indent = padding.top;
+ pad.bottom.indent = padding.bottom;
+
+ self.padding.insert(entity, pad);
+ }
+
+ /// Set a padding to a given cells.
+ pub fn set_padding_color(
+ &mut self,
+ entity: Entity,
+ padding: Sides<Option<AnsiColor<'static>>>,
+ ) {
+ let mut pad = self.padding.get(entity).clone();
+ pad.left.color = padding.left;
+ pad.right.color = padding.right;
+ pad.top.color = padding.top;
+ pad.bottom.color = padding.bottom;
+
+ self.padding.insert(entity, pad);
+ }
+
+ /// Get a padding for a given [Entity].
+ pub fn get_padding(&self, entity: Entity) -> Sides<Indent> {
+ let pad = self.padding.get(entity);
+ Sides::new(
+ pad.left.indent,
+ pad.right.indent,
+ pad.top.indent,
+ pad.bottom.indent,
+ )
+ }
+
+ /// Get a padding color for a given [Entity].
+ pub fn get_padding_color(&self, entity: Entity) -> Sides<Option<AnsiColor<'static>>> {
+ let pad = self.padding.get(entity);
+ Sides::new(
+ pad.left.color.clone(),
+ pad.right.color.clone(),
+ pad.top.color.clone(),
+ pad.bottom.color.clone(),
+ )
+ }
+
+ /// Set a formatting to a given cells.
+ pub fn set_formatting(&mut self, entity: Entity, formatting: Formatting) {
+ self.formatting.insert(entity, formatting);
+ }
+
+ /// Get a formatting settings for a given [Entity].
+ pub fn get_formatting(&self, entity: Entity) -> &Formatting {
+ self.formatting.get(entity)
+ }
+
+ /// Set a vertical alignment to a given cells.
+ pub fn set_alignment_vertical(&mut self, entity: Entity, alignment: AlignmentVertical) {
+ self.alignment_v.insert(entity, alignment);
+ }
+
+ /// Get a vertical alignment for a given [Entity].
+ pub fn get_alignment_vertical(&self, entity: Entity) -> &AlignmentVertical {
+ self.alignment_v.get(entity)
+ }
+
+ /// Set a horizontal alignment to a given cells.
+ pub fn set_alignment_horizontal(&mut self, entity: Entity, alignment: AlignmentHorizontal) {
+ self.alignment_h.insert(entity, alignment);
+ }
+
+ /// Get a horizontal alignment for a given [Entity].
+ pub fn get_alignment_horizontal(&self, entity: Entity) -> &AlignmentHorizontal {
+ self.alignment_h.get(entity)
+ }
+
+ /// Set border set a border value to all cells in [`Entity`].
+ pub fn set_border(&mut self, pos: Position, border: Border<char>) {
+ self.borders.insert_border(pos, border);
+ }
+
+ /// Returns a border of a cell.
+ pub fn get_border(&self, pos: Position, shape: (usize, usize)) -> Border<char> {
+ self.borders.get_border(pos, shape).copied()
+ }
+
+ /// Returns a border color of a cell.
+ pub fn get_border_color(
+ &self,
+ pos: Position,
+ shape: (usize, usize),
+ ) -> Border<&AnsiColor<'static>> {
+ self.borders_colors.get_border(pos, shape)
+ }
+
+ /// Set a character which will be used in case any misconfiguration of borders.
+ ///
+ /// It will be usde for example when you set a left char for border frame and top but didn't set a top left corner.
+ pub fn set_borders_missing(&mut self, c: char) {
+ self.borders_missing_char = c;
+ }
+
+ /// Get a character which will be used in case any misconfiguration of borders.
+ pub fn get_borders_missing(&self) -> char {
+ self.borders_missing_char
+ }
+
+ /// Gets a color of all borders on the grid.
+ pub fn get_border_color_global(&self) -> Option<&AnsiColor<'static>> {
+ self.borders_colors.get_global()
+ }
+
+ /// Sets a color of all borders on the grid.
+ pub fn set_border_color_global(&mut self, clr: AnsiColor<'static>) {
+ self.borders_colors = BordersConfig::default();
+ self.borders_colors.set_global(clr);
+ }
+
+ /// Gets colors of a borders carcass on the grid.
+ pub fn get_color_borders(&self) -> &Borders<AnsiColor<'static>> {
+ self.borders_colors.get_borders()
+ }
+
+ /// Sets colors of border carcass on the grid.
+ pub fn set_borders_color(&mut self, clrs: Borders<AnsiColor<'static>>) {
+ self.borders_colors.set_borders(clrs);
+ }
+
+ /// Sets a color of border of a cell on the grid.
+ pub fn set_border_color(&mut self, pos: Position, border: Border<AnsiColor<'static>>) {
+ self.borders_colors.insert_border(pos, border)
+ }
+
+ /// Sets off all borders possible on the [`Entity`].
+ ///
+ /// It doesn't changes globally set borders through [`SpannedConfig::set_borders`].
+ //
+ // todo: would be great to remove a shape
+ pub fn remove_border(&mut self, pos: Position, shape: (usize, usize)) {
+ self.borders.remove_border(pos, shape);
+ }
+
+ /// Gets a color of border of a cell on the grid.
+ //
+ // todo: would be great to remove a shape
+ pub fn remove_border_color(&mut self, pos: Position, shape: (usize, usize)) {
+ self.borders_colors.remove_border(pos, shape);
+ }
+
+ /// Get a justification which will be used while expanding cells width/height.
+ pub fn get_justification(&self, entity: Entity) -> char {
+ *self.justification.get(entity)
+ }
+
+ /// Get a justification color which will be used while expanding cells width/height.
+ ///
+ /// `None` means no color.
+ pub fn get_justification_color(&self, entity: Entity) -> Option<&AnsiColor<'static>> {
+ self.justification_color.get(entity).as_ref()
+ }
+
+ /// Set a justification which will be used while expanding cells width/height.
+ pub fn set_justification(&mut self, entity: Entity, c: char) {
+ self.justification.insert(entity, c);
+ }
+
+ /// Set a justification color which will be used while expanding cells width/height.
+ ///
+ /// `None` removes it.
+ pub fn set_justification_color(&mut self, entity: Entity, color: Option<AnsiColor<'static>>) {
+ self.justification_color.insert(entity, color);
+ }
+
+ /// Get a span value of the cell, if any is set.
+ pub fn get_column_spans(&self) -> HashMap<Position, usize> {
+ self.span_columns.clone()
+ }
+
+ /// Get a span value of the cell, if any is set.
+ pub fn get_row_spans(&self) -> HashMap<Position, usize> {
+ self.span_rows.clone()
+ }
+
+ /// Get a span value of the cell, if any is set.
+ pub fn get_column_span(&self, pos: Position) -> Option<usize> {
+ self.span_columns.get(&pos).copied()
+ }
+
+ /// Get a span value of the cell, if any is set.
+ pub fn get_row_span(&self, pos: Position) -> Option<usize> {
+ self.span_rows.get(&pos).copied()
+ }
+
+ /// Removes column spans.
+ pub fn remove_column_spans(&mut self) {
+ self.span_columns.clear()
+ }
+
+ /// Removes row spans.
+ pub fn remove_row_spans(&mut self) {
+ self.span_rows.clear()
+ }
+
+ /// Set a column span to a given cells.
+ ///
+ /// BEWARE
+ ///
+ /// IT'S CALLER RESPONSIBILITY TO MAKE SURE
+ /// THAT THERE NO INTERSECTIONS IN PLACE AND THE SPAN VALUE IS CORRECT
+ pub fn set_column_span(&mut self, pos: Position, span: usize) {
+ set_cell_column_span(self, pos, span);
+ }
+
+ /// Verifies if there's any spans set.
+ pub fn has_column_spans(&self) -> bool {
+ !self.span_columns.is_empty()
+ }
+
+ /// Set a column span to a given cells.
+ ///
+ /// BEWARE
+ ///
+ /// IT'S CALLER RESPONSIBILITY TO MAKE SURE
+ /// THAT THERE NO INTERSECTIONS IN PLACE AND THE SPAN VALUE IS CORRECT
+ pub fn set_row_span(&mut self, pos: Position, span: usize) {
+ set_cell_row_span(self, pos, span);
+ }
+
+ /// Verifies if there's any spans set.
+ pub fn has_row_spans(&self) -> bool {
+ !self.span_rows.is_empty()
+ }
+
+ /// Gets an intersection character which would be rendered on the grid.
+ ///
+ /// grid: crate::Grid
+ pub fn get_intersection(&self, pos: Position, shape: (usize, usize)) -> Option<char> {
+ let c = self.borders.get_intersection(pos, shape);
+ if let Some(c) = c {
+ return Some(*c);
+ }
+
+ if self.has_horizontal(pos.0, shape.0) && self.has_vertical(pos.1, shape.1) {
+ return Some(self.get_borders_missing());
+ }
+
+ None
+ }
+
+ /// Gets a horizontal character which would be rendered on the grid.
+ ///
+ /// grid: crate::Grid
+ pub fn get_horizontal(&self, pos: Position, count_rows: usize) -> Option<char> {
+ let c = self.borders.get_horizontal(pos, count_rows);
+ if let Some(c) = c {
+ return Some(*c);
+ }
+
+ if self.has_horizontal(pos.0, count_rows) {
+ return Some(self.get_borders_missing());
+ }
+
+ None
+ }
+
+ /// Gets a vertical character which would be rendered on the grid.
+ ///
+ /// grid: crate::Grid
+ pub fn get_vertical(&self, pos: Position, count_columns: usize) -> Option<char> {
+ if let Some(c) = self.borders.get_vertical(pos, count_columns) {
+ return Some(*c);
+ }
+
+ if self.has_vertical(pos.1, count_columns) {
+ return Some(self.get_borders_missing());
+ }
+
+ None
+ }
+
+ /// Gets a color of a cell horizontal.
+ pub fn get_horizontal_color(
+ &self,
+ pos: Position,
+ count_rows: usize,
+ ) -> Option<&AnsiColor<'static>> {
+ self.borders_colors.get_horizontal(pos, count_rows)
+ }
+
+ /// Gets a color of a cell vertical.
+ pub fn get_vertical_color(
+ &self,
+ pos: Position,
+ count_columns: usize,
+ ) -> Option<&AnsiColor<'static>> {
+ self.borders_colors.get_vertical(pos, count_columns)
+ }
+
+ /// Gets a color of a cell vertical.
+ pub fn get_intersection_color(
+ &self,
+ pos: Position,
+ shape: (usize, usize),
+ ) -> Option<&AnsiColor<'static>> {
+ self.borders_colors.get_intersection(pos, shape)
+ }
+
+ /// Checks if grid would have a horizontal border with the current configuration.
+ ///
+ /// grid: crate::Grid
+ pub fn has_horizontal(&self, row: usize, count_rows: usize) -> bool {
+ self.borders.has_horizontal(row, count_rows)
+ }
+
+ /// Checks if grid would have a vertical border with the current configuration.
+ ///
+ /// grid: crate::Grid
+ pub fn has_vertical(&self, col: usize, count_columns: usize) -> bool {
+ self.borders.has_vertical(col, count_columns)
+ }
+
+ /// Calculates an amount of horizontal lines would present on the grid.
+ ///
+ /// grid: crate::Grid
+ pub fn count_horizontal(&self, count_rows: usize) -> usize {
+ (0..=count_rows)
+ .filter(|&row| self.has_horizontal(row, count_rows))
+ .count()
+ }
+
+ /// Calculates an amount of vertical lines would present on the grid.
+ ///
+ /// grid: crate::Grid
+ pub fn count_vertical(&self, count_columns: usize) -> usize {
+ (0..=count_columns)
+ .filter(|&col| self.has_vertical(col, count_columns))
+ .count()
+ }
+
+ /// The function returns whether the cells will be rendered or it will be hidden because of a span.
+ pub fn is_cell_visible(&self, pos: Position) -> bool {
+ !(self.is_cell_covered_by_column_span(pos)
+ || self.is_cell_covered_by_row_span(pos)
+ || self.is_cell_covered_by_both_spans(pos))
+ }
+
+ /// The function checks if a cell is hidden because of a row span.
+ pub fn is_cell_covered_by_row_span(&self, pos: Position) -> bool {
+ is_cell_covered_by_row_span(self, pos)
+ }
+
+ /// The function checks if a cell is hidden because of a column span.
+ pub fn is_cell_covered_by_column_span(&self, pos: Position) -> bool {
+ is_cell_covered_by_column_span(self, pos)
+ }
+
+ /// The function checks if a cell is hidden indirectly because of a row and column span combination.
+ pub fn is_cell_covered_by_both_spans(&self, pos: Position) -> bool {
+ is_cell_covered_by_both_spans(self, pos)
+ }
+}
+
+impl From<CompactConfig> for SpannedConfig {
+ fn from(compact: CompactConfig) -> Self {
+ use Entity::Global;
+
+ let mut cfg = Self::default();
+
+ cfg.set_padding(Global, *compact.get_padding());
+ cfg.set_padding_color(Global, to_ansi_color(compact.get_padding_color()));
+ cfg.set_margin(*compact.get_margin());
+ cfg.set_margin_color(to_ansi_color(compact.get_margin_color()));
+ cfg.set_alignment_horizontal(Global, compact.get_alignment_horizontal());
+ cfg.set_borders(*compact.get_borders());
+ cfg.set_borders_color(borders_static_color_to_ansi_color(
+ *compact.get_borders_color(),
+ ));
+
+ if let Some(line) = compact.get_first_horizontal_line() {
+ cfg.insert_horizontal_line(
+ 1,
+ HorizontalLine {
+ intersection: line.intersection,
+ left: line.connect1,
+ right: line.connect2,
+ main: Some(line.main),
+ },
+ );
+ }
+
+ cfg
+ }
+}
+
+fn to_ansi_color(b: Sides<StaticColor>) -> Sides<Option<AnsiColor<'static>>> {
+ Sides::new(
+ Some(b.left.into()),
+ Some(b.right.into()),
+ Some(b.top.into()),
+ Some(b.bottom.into()),
+ )
+}
+
+fn borders_static_color_to_ansi_color(b: Borders<StaticColor>) -> Borders<AnsiColor<'static>> {
+ Borders {
+ left: b.left.map(|c| c.into()),
+ right: b.right.map(|c| c.into()),
+ top: b.top.map(|c| c.into()),
+ bottom: b.bottom.map(|c| c.into()),
+ bottom_intersection: b.bottom_intersection.map(|c| c.into()),
+ bottom_left: b.bottom_left.map(|c| c.into()),
+ bottom_right: b.bottom_right.map(|c| c.into()),
+ horizontal: b.horizontal.map(|c| c.into()),
+ intersection: b.intersection.map(|c| c.into()),
+ left_intersection: b.left_intersection.map(|c| c.into()),
+ right_intersection: b.right_intersection.map(|c| c.into()),
+ top_intersection: b.top_intersection.map(|c| c.into()),
+ top_left: b.top_left.map(|c| c.into()),
+ top_right: b.top_right.map(|c| c.into()),
+ vertical: b.vertical.map(|c| c.into()),
+ }
+}
+
+fn set_cell_row_span(cfg: &mut SpannedConfig, pos: Position, span: usize) {
+ // such spans aren't supported
+ if span == 0 {
+ return;
+ }
+
+ // It's a default span so we can do nothing.
+ // but we check if it's an override of a span.
+ if span == 1 {
+ cfg.span_rows.remove(&pos);
+ return;
+ }
+
+ cfg.span_rows.insert(pos, span);
+}
+
+fn set_cell_column_span(cfg: &mut SpannedConfig, pos: Position, span: usize) {
+ // such spans aren't supported
+ if span == 0 {
+ return;
+ }
+
+ // It's a default span so we can do nothing.
+ // but we check if it's an override of a span.
+ if span == 1 {
+ cfg.span_columns.remove(&pos);
+ return;
+ }
+
+ cfg.span_columns.insert(pos, span);
+}
+
+fn is_cell_covered_by_column_span(cfg: &SpannedConfig, pos: Position) -> bool {
+ cfg.span_columns
+ .iter()
+ .any(|(&(row, col), span)| pos.1 > col && pos.1 < col + span && row == pos.0)
+}
+
+fn is_cell_covered_by_row_span(cfg: &SpannedConfig, pos: Position) -> bool {
+ cfg.span_rows
+ .iter()
+ .any(|(&(row, col), span)| pos.0 > row && pos.0 < row + span && col == pos.1)
+}
+
+fn is_cell_covered_by_both_spans(cfg: &SpannedConfig, pos: Position) -> bool {
+ if !cfg.has_column_spans() || !cfg.has_row_spans() {
+ return false;
+ }
+
+ cfg.span_rows.iter().any(|(p1, row_span)| {
+ cfg.span_columns
+ .iter()
+ .filter(|(p2, _)| &p1 == p2)
+ .any(|(_, col_span)| {
+ pos.0 > p1.0 && pos.0 < p1.0 + row_span && pos.1 > p1.1 && pos.1 < p1.1 + col_span
+ })
+ })
+}
+
+#[derive(Default, Debug, Clone, PartialEq, Eq)]
+struct ColoredIndent {
+ indent: Indent,
+ color: Option<AnsiColor<'static>>,
+}
+
+/// A colorefull margin indent.
+#[derive(Debug, Clone, PartialEq, Eq)]
+struct ColoredMarginIndent {
+ /// An indent value.
+ indent: Indent,
+ /// An offset value.
+ offset: Offset,
+ /// An color value.
+ color: Option<AnsiColor<'static>>,
+}
+
+impl Default for ColoredMarginIndent {
+ fn default() -> Self {
+ Self {
+ indent: Indent::default(),
+ offset: Offset::Begin(0),
+ color: None,
+ }
+ }
+}
+
+/// HorizontalLine represents a horizontal border line.
+pub type HorizontalLine = borders_config::HorizontalLine<char>;
+
+/// HorizontalLine represents a vertical border line.
+pub type VerticalLine = borders_config::VerticalLine<char>;
diff --git a/vendor/papergrid/src/config/spanned/offset.rs b/vendor/papergrid/src/config/spanned/offset.rs
new file mode 100644
index 000000000..03055ca34
--- /dev/null
+++ b/vendor/papergrid/src/config/spanned/offset.rs
@@ -0,0 +1,8 @@
+/// The structure represents an offset in a text.
+#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
+pub enum Offset {
+ /// An offset from the start.
+ Begin(usize),
+ /// An offset from the end.
+ End(usize),
+}
diff --git a/vendor/papergrid/src/dimension/compact.rs b/vendor/papergrid/src/dimension/compact.rs
new file mode 100644
index 000000000..e53429ad9
--- /dev/null
+++ b/vendor/papergrid/src/dimension/compact.rs
@@ -0,0 +1,121 @@
+//! The module contains a [`CompactGridDimension`] for [`CompactGrid`] height/width estimation.
+//!
+//! [`CompactGrid`]: crate::grid::compact::CompactGrid
+
+use core::cmp::max;
+
+use crate::{
+ dimension::{Dimension, Estimate},
+ records::Records,
+ util::string::{count_lines, string_width_multiline},
+};
+
+use crate::config::compact::CompactConfig;
+
+/// A [`Dimension`] implementation which calculates exact column/row width/height.
+///
+/// [`Grid`]: crate::grid::iterable::Grid
+#[derive(Debug, Default, Clone, PartialEq, Eq)]
+pub struct CompactGridDimension {
+ height: usize,
+ width: Vec<usize>,
+}
+
+impl CompactGridDimension {
+ /// Calculates height of rows.
+ pub fn height<R: Records>(records: R, cfg: &CompactConfig) -> Vec<usize> {
+ build_height(records, cfg)
+ }
+
+ /// Calculates width of columns.
+ pub fn width<R: Records>(records: R, cfg: &CompactConfig) -> Vec<usize> {
+ build_width(records, cfg)
+ }
+
+ /// Calculates dimensions of columns.
+ pub fn dimension<R: Records>(records: R, cfg: &CompactConfig) -> (Vec<usize>, Vec<usize>) {
+ build_dims(records, cfg)
+ }
+}
+
+impl Dimension for CompactGridDimension {
+ fn get_width(&self, column: usize) -> usize {
+ self.width[column]
+ }
+
+ fn get_height(&self, _: usize) -> usize {
+ self.height
+ }
+}
+
+impl<R> Estimate<R, CompactConfig> for CompactGridDimension
+where
+ R: Records,
+{
+ fn estimate(&mut self, records: R, cfg: &CompactConfig) {
+ self.width = build_width(records, cfg);
+ let pad = cfg.get_padding();
+ self.height = 1 + pad.top.size + pad.bottom.size;
+ }
+}
+
+fn build_dims<R: Records>(records: R, cfg: &CompactConfig) -> (Vec<usize>, Vec<usize>) {
+ let mut heights = vec![];
+ let mut widths = vec![0; records.count_columns()];
+
+ for columns in records.iter_rows() {
+ let mut row_height = 0;
+ for (col, cell) in columns.into_iter().enumerate() {
+ let height = get_cell_height(cell.as_ref(), cfg);
+ let width = get_cell_width(cell.as_ref(), cfg);
+ row_height = max(row_height, height);
+ widths[col] = max(widths[col], width)
+ }
+
+ heights.push(row_height);
+ }
+
+ (widths, heights)
+}
+
+fn build_height<R: Records>(records: R, cfg: &CompactConfig) -> Vec<usize> {
+ let mut heights = vec![];
+
+ for columns in records.iter_rows() {
+ let mut row_height = 0;
+ for cell in columns.into_iter() {
+ let height = get_cell_height(cell.as_ref(), cfg);
+ row_height = max(row_height, height);
+ }
+
+ heights.push(row_height);
+ }
+
+ heights
+}
+
+fn build_width<R: Records>(records: R, cfg: &CompactConfig) -> Vec<usize> {
+ let mut widths = vec![0; records.count_columns()];
+ for columns in records.iter_rows() {
+ for (col, cell) in columns.into_iter().enumerate() {
+ let width = get_cell_width(cell.as_ref(), cfg);
+ widths[col] = max(widths[col], width);
+ }
+ }
+
+ widths
+}
+
+fn get_cell_height(cell: &str, cfg: &CompactConfig) -> usize {
+ let count_lines = max(1, count_lines(cell));
+ let pad = cfg.get_padding();
+
+ count_lines + pad.top.size + pad.bottom.size
+}
+
+fn get_cell_width(text: &str, cfg: &CompactConfig) -> usize {
+ let width = string_width_multiline(text);
+ let pad = cfg.get_padding();
+
+ width + pad.left.size + pad.right.size
+}
diff --git a/vendor/papergrid/src/dimension/mod.rs b/vendor/papergrid/src/dimension/mod.rs
new file mode 100644
index 000000000..40be17b48
--- /dev/null
+++ b/vendor/papergrid/src/dimension/mod.rs
@@ -0,0 +1,44 @@
+//! The module contains an [`Dimension`] trait and its implementations.
+
+#[cfg(feature = "std")]
+pub mod compact;
+#[cfg(feature = "std")]
+pub mod spanned;
+#[cfg(feature = "std")]
+pub mod spanned_vec_records;
+
+/// Dimension of a [`Grid`]
+///
+/// It's a friend trait of [`Estimate`].
+///
+/// [`Grid`]: crate::grid::iterable::Grid
+pub trait Dimension {
+ /// Get a column width by index.
+ fn get_width(&self, column: usize) -> usize;
+
+ /// Get a row height by index.
+ fn get_height(&self, row: usize) -> usize;
+}
+
+impl<T> Dimension for &T
+where
+ T: Dimension,
+{
+ fn get_height(&self, row: usize) -> usize {
+ T::get_height(self, row)
+ }
+
+ fn get_width(&self, column: usize) -> usize {
+ T::get_width(self, column)
+ }
+}
+
+/// Dimension estimation of a [`Grid`]
+///
+/// It's a friend trait of [`Dimension`].
+///
+/// [`Grid`]: crate::grid::iterable::Grid
+pub trait Estimate<R, C> {
+ /// Estimates a metric.
+ fn estimate(&mut self, records: R, config: &C);
+}
diff --git a/vendor/papergrid/src/dimension/spanned.rs b/vendor/papergrid/src/dimension/spanned.rs
new file mode 100644
index 000000000..6597ba176
--- /dev/null
+++ b/vendor/papergrid/src/dimension/spanned.rs
@@ -0,0 +1,329 @@
+//! The module contains a [`SpannedGridDimension`] for [`Grid`] height/width estimation.
+//!
+//! [`Grid`]: crate::grid::iterable::Grid
+
+use std::{
+ cmp::{max, Ordering},
+ collections::HashMap,
+};
+
+use crate::{
+ config::Position,
+ dimension::{Dimension, Estimate},
+ records::Records,
+ util::string::{count_lines, string_dimension, string_width_multiline},
+};
+
+use crate::config::spanned::SpannedConfig;
+
+/// A [`Dimension`] implementation which calculates exact column/row width/height.
+///
+/// [`Grid`]: crate::grid::iterable::Grid
+#[derive(Debug, Default, Clone, PartialEq, Eq)]
+pub struct SpannedGridDimension {
+ height: Vec<usize>,
+ width: Vec<usize>,
+}
+
+impl SpannedGridDimension {
+ /// Calculates height of rows.
+ pub fn height<R: Records>(records: R, cfg: &SpannedConfig) -> Vec<usize> {
+ build_height(records, cfg)
+ }
+
+ /// Calculates width of columns.
+ pub fn width<R: Records>(records: R, cfg: &SpannedConfig) -> Vec<usize> {
+ build_width(records, cfg)
+ }
+
+ /// Return width and height lists.
+ pub fn get_values(self) -> (Vec<usize>, Vec<usize>) {
+ (self.width, self.height)
+ }
+}
+
+impl Dimension for SpannedGridDimension {
+ fn get_width(&self, column: usize) -> usize {
+ self.width[column]
+ }
+
+ fn get_height(&self, row: usize) -> usize {
+ self.height[row]
+ }
+}
+
+impl<R> Estimate<R, SpannedConfig> for SpannedGridDimension
+where
+ R: Records,
+{
+ fn estimate(&mut self, records: R, cfg: &SpannedConfig) {
+ let (width, height) = build_dimensions(records, cfg);
+ self.width = width;
+ self.height = height;
+ }
+}
+
+fn build_dimensions<R: Records>(records: R, cfg: &SpannedConfig) -> (Vec<usize>, Vec<usize>) {
+ let count_columns = records.count_columns();
+
+ let mut widths = vec![0; count_columns];
+ let mut heights = vec![];
+
+ let mut vspans = HashMap::new();
+ let mut hspans = HashMap::new();
+
+ for (row, columns) in records.iter_rows().into_iter().enumerate() {
+ let mut row_height = 0;
+ for (col, cell) in columns.into_iter().enumerate() {
+ let pos = (row, col);
+ if !cfg.is_cell_visible(pos) {
+ continue;
+ }
+
+ let text = cell.as_ref();
+ let (height, width) = string_dimension(text);
+ let pad = cfg.get_padding(pos.into());
+ let width = width + pad.left.size + pad.right.size;
+ let height = height + pad.top.size + pad.bottom.size;
+
+ match cfg.get_column_span(pos) {
+ Some(n) if n > 1 => {
+ vspans.insert(pos, (n, width));
+ }
+ _ => widths[col] = max(widths[col], width),
+ }
+
+ match cfg.get_row_span(pos) {
+ Some(n) if n > 1 => {
+ hspans.insert(pos, (n, height));
+ }
+ _ => row_height = max(row_height, height),
+ }
+ }
+
+ heights.push(row_height);
+ }
+
+ let count_rows = heights.len();
+
+ adjust_vspans(cfg, count_columns, &vspans, &mut widths);
+ adjust_hspans(cfg, count_rows, &hspans, &mut heights);
+
+ (widths, heights)
+}
+
+fn adjust_hspans(
+ cfg: &SpannedConfig,
+ len: usize,
+ spans: &HashMap<Position, (usize, usize)>,
+ heights: &mut [usize],
+) {
+ if spans.is_empty() {
+ return;
+ }
+
+ let mut spans_ordered = spans
+ .iter()
+ .map(|(k, v)| ((k.0, k.1), *v))
+ .collect::<Vec<_>>();
+ spans_ordered.sort_unstable_by(|(arow, acol), (brow, bcol)| match arow.cmp(brow) {
+ Ordering::Equal => acol.cmp(bcol),
+ ord => ord,
+ });
+
+ for ((row, _), (span, height)) in spans_ordered {
+ adjust_row_range(cfg, height, len, row, row + span, heights);
+ }
+}
+
+fn adjust_row_range(
+ cfg: &SpannedConfig,
+ max_span_height: usize,
+ len: usize,
+ start: usize,
+ end: usize,
+ heights: &mut [usize],
+) {
+ let range_height = range_height(cfg, len, start, end, heights);
+ if range_height >= max_span_height {
+ return;
+ }
+
+ inc_range(heights, max_span_height - range_height, start, end);
+}
+
+fn range_height(
+ cfg: &SpannedConfig,
+ len: usize,
+ start: usize,
+ end: usize,
+ heights: &[usize],
+) -> usize {
+ let count_borders = count_horizontal_borders(cfg, len, start, end);
+ let range_height = heights[start..end].iter().sum::<usize>();
+ count_borders + range_height
+}
+
+fn count_horizontal_borders(cfg: &SpannedConfig, len: usize, start: usize, end: usize) -> usize {
+ (start..end)
+ .skip(1)
+ .filter(|&i| cfg.has_horizontal(i, len))
+ .count()
+}
+
+fn get_cell_height(cell: &str, cfg: &SpannedConfig, pos: Position) -> usize {
+ let count_lines = max(1, count_lines(cell));
+ let padding = cfg.get_padding(pos.into());
+ count_lines + padding.top.size + padding.bottom.size
+}
+
+fn inc_range(list: &mut [usize], size: usize, start: usize, end: usize) {
+ if list.is_empty() {
+ return;
+ }
+
+ let span = end - start;
+ let one = size / span;
+ let rest = size - span * one;
+
+ let mut i = start;
+ while i < end {
+ if i == start {
+ list[i] += one + rest;
+ } else {
+ list[i] += one;
+ }
+
+ i += 1;
+ }
+}
+
+fn adjust_vspans(
+ cfg: &SpannedConfig,
+ len: usize,
+ spans: &HashMap<Position, (usize, usize)>,
+ widths: &mut [usize],
+) {
+ if spans.is_empty() {
+ return;
+ }
+
+ // The overall width distribution will be different depend on the order.
+ //
+ // We sort spans in order to prioritize the smaller spans first.
+ let mut spans_ordered = spans
+ .iter()
+ .map(|(k, v)| ((k.0, k.1), *v))
+ .collect::<Vec<_>>();
+ spans_ordered.sort_unstable_by(|a, b| match a.1 .0.cmp(&b.1 .0) {
+ Ordering::Equal => a.0.cmp(&b.0),
+ o => o,
+ });
+
+ for ((_, col), (span, width)) in spans_ordered {
+ adjust_column_range(cfg, width, len, col, col + span, widths);
+ }
+}
+
+fn adjust_column_range(
+ cfg: &SpannedConfig,
+ max_span_width: usize,
+ len: usize,
+ start: usize,
+ end: usize,
+ widths: &mut [usize],
+) {
+ let range_width = range_width(cfg, len, start, end, widths);
+ if range_width >= max_span_width {
+ return;
+ }
+
+ inc_range(widths, max_span_width - range_width, start, end);
+}
+
+fn get_cell_width(text: &str, cfg: &SpannedConfig, pos: Position) -> usize {
+ let padding = get_cell_padding(cfg, pos);
+ let width = string_width_multiline(text);
+ width + padding
+}
+
+fn get_cell_padding(cfg: &SpannedConfig, pos: Position) -> usize {
+ let padding = cfg.get_padding(pos.into());
+ padding.left.size + padding.right.size
+}
+
+fn range_width(
+ cfg: &SpannedConfig,
+ len: usize,
+ start: usize,
+ end: usize,
+ widths: &[usize],
+) -> usize {
+ let count_borders = count_vertical_borders(cfg, len, start, end);
+ let range_width = widths[start..end].iter().sum::<usize>();
+ count_borders + range_width
+}
+
+fn count_vertical_borders(cfg: &SpannedConfig, len: usize, start: usize, end: usize) -> usize {
+ (start..end)
+ .skip(1)
+ .filter(|&i| cfg.has_vertical(i, len))
+ .count()
+}
+
+fn build_height<R: Records>(records: R, cfg: &SpannedConfig) -> Vec<usize> {
+ let mut heights = vec![];
+ let mut hspans = HashMap::new();
+
+ for (row, columns) in records.iter_rows().into_iter().enumerate() {
+ let mut row_height = 0;
+ for (col, cell) in columns.into_iter().enumerate() {
+ let pos = (row, col);
+ if !cfg.is_cell_visible(pos) {
+ continue;
+ }
+
+ let height = get_cell_height(cell.as_ref(), cfg, pos);
+ match cfg.get_row_span(pos) {
+ Some(n) if n > 1 => {
+ hspans.insert(pos, (n, height));
+ }
+ _ => row_height = max(row_height, height),
+ }
+ }
+
+ heights.push(row_height);
+ }
+
+ adjust_hspans(cfg, heights.len(), &hspans, &mut heights);
+
+ heights
+}
+
+fn build_width<R: Records>(records: R, cfg: &SpannedConfig) -> Vec<usize> {
+ let count_columns = records.count_columns();
+
+ let mut widths = vec![0; count_columns];
+ let mut vspans = HashMap::new();
+
+ for (row, columns) in records.iter_rows().into_iter().enumerate() {
+ for (col, cell) in columns.into_iter().enumerate() {
+ let pos = (row, col);
+ if !cfg.is_cell_visible(pos) {
+ continue;
+ }
+
+ let width = get_cell_width(cell.as_ref(), cfg, pos);
+ match cfg.get_column_span(pos) {
+ Some(n) if n > 1 => {
+ vspans.insert(pos, (n, width));
+ }
+ _ => widths[col] = max(widths[col], width),
+ }
+ }
+ }
+
+ adjust_vspans(cfg, count_columns, &vspans, &mut widths);
+
+ widths
+}
diff --git a/vendor/papergrid/src/dimension/spanned_vec_records.rs b/vendor/papergrid/src/dimension/spanned_vec_records.rs
new file mode 100644
index 000000000..75e85a850
--- /dev/null
+++ b/vendor/papergrid/src/dimension/spanned_vec_records.rs
@@ -0,0 +1,332 @@
+//! The module contains a [`SpannedVecRecordsDimension`] for [`Grid`] height/width estimation.
+//!
+//! [`Grid`]: crate::grid::iterable::Grid
+
+use std::{
+ cmp::{max, Ordering},
+ collections::HashMap,
+};
+
+use crate::{
+ config::Position,
+ dimension::{Dimension, Estimate},
+ records::{
+ vec_records::{Cell, VecRecords},
+ Records,
+ },
+};
+
+use crate::config::spanned::SpannedConfig;
+
+/// A [`Dimension`] implementation which calculates exact column/row width/height for [`VecRecords`].
+///
+/// It is a specialization of [`SpannedGridDimension`] for [`VecRecords`].
+///
+/// [`SpannedGridDimension`]: crate::dimension::spanned::SpannedGridDimension
+#[derive(Debug, Default, Clone, PartialEq, Eq)]
+pub struct SpannedVecRecordsDimension {
+ height: Vec<usize>,
+ width: Vec<usize>,
+}
+
+impl SpannedVecRecordsDimension {
+ /// Calculates height of rows.
+ pub fn height<T: Cell + AsRef<str>>(
+ records: &VecRecords<T>,
+ cfg: &SpannedConfig,
+ ) -> Vec<usize> {
+ build_height(records, cfg)
+ }
+
+ /// Calculates width of columns.
+ pub fn width<T: Cell + AsRef<str>>(records: &VecRecords<T>, cfg: &SpannedConfig) -> Vec<usize> {
+ build_width(records, cfg)
+ }
+
+ /// Return width and height lists.
+ pub fn get_values(self) -> (Vec<usize>, Vec<usize>) {
+ (self.width, self.height)
+ }
+}
+
+impl Dimension for SpannedVecRecordsDimension {
+ fn get_width(&self, column: usize) -> usize {
+ self.width[column]
+ }
+
+ fn get_height(&self, row: usize) -> usize {
+ self.height[row]
+ }
+}
+
+impl<T> Estimate<&VecRecords<T>, SpannedConfig> for SpannedVecRecordsDimension
+where
+ T: Cell + AsRef<str>,
+{
+ fn estimate(&mut self, records: &VecRecords<T>, cfg: &SpannedConfig) {
+ let (width, height) = build_dimensions(records, cfg);
+ self.width = width;
+ self.height = height;
+ }
+}
+
+fn build_dimensions<T: Cell + AsRef<str>>(
+ records: &VecRecords<T>,
+ cfg: &SpannedConfig,
+) -> (Vec<usize>, Vec<usize>) {
+ let count_columns = records.count_columns();
+
+ let mut widths = vec![0; count_columns];
+ let mut heights = vec![];
+
+ let mut vspans = HashMap::new();
+ let mut hspans = HashMap::new();
+
+ for (row, columns) in records.iter_rows().enumerate() {
+ let mut row_height = 0;
+ for (col, cell) in columns.iter().enumerate() {
+ let pos = (row, col);
+ if !cfg.is_cell_visible(pos) {
+ continue;
+ }
+
+ let width = cell.width();
+ let height = cell.count_lines();
+ let pad = cfg.get_padding(pos.into());
+ let width = width + pad.left.size + pad.right.size;
+ let height = height + pad.top.size + pad.bottom.size;
+
+ match cfg.get_column_span(pos) {
+ Some(n) if n > 1 => {
+ vspans.insert(pos, (n, width));
+ }
+ _ => widths[col] = max(widths[col], width),
+ }
+
+ match cfg.get_row_span(pos) {
+ Some(n) if n > 1 => {
+ hspans.insert(pos, (n, height));
+ }
+ _ => row_height = max(row_height, height),
+ }
+ }
+
+ heights.push(row_height);
+ }
+
+ let count_rows = heights.len();
+
+ adjust_vspans(cfg, count_columns, &vspans, &mut widths);
+ adjust_hspans(cfg, count_rows, &hspans, &mut heights);
+
+ (widths, heights)
+}
+
+fn adjust_hspans(
+ cfg: &SpannedConfig,
+ len: usize,
+ spans: &HashMap<Position, (usize, usize)>,
+ heights: &mut [usize],
+) {
+ if spans.is_empty() {
+ return;
+ }
+
+ let mut spans_ordered = spans
+ .iter()
+ .map(|(k, v)| ((k.0, k.1), *v))
+ .collect::<Vec<_>>();
+ spans_ordered.sort_unstable_by(|(arow, acol), (brow, bcol)| match arow.cmp(brow) {
+ Ordering::Equal => acol.cmp(bcol),
+ ord => ord,
+ });
+
+ for ((row, _), (span, height)) in spans_ordered {
+ adjust_row_range(cfg, height, len, row, row + span, heights);
+ }
+}
+
+fn adjust_row_range(
+ cfg: &SpannedConfig,
+ max_span_height: usize,
+ len: usize,
+ start: usize,
+ end: usize,
+ heights: &mut [usize],
+) {
+ let range_height = range_height(cfg, len, start, end, heights);
+ if range_height >= max_span_height {
+ return;
+ }
+
+ inc_range(heights, max_span_height - range_height, start, end);
+}
+
+fn range_height(
+ cfg: &SpannedConfig,
+ len: usize,
+ start: usize,
+ end: usize,
+ heights: &[usize],
+) -> usize {
+ let count_borders = count_horizontal_borders(cfg, len, start, end);
+ let range_height = heights[start..end].iter().sum::<usize>();
+ count_borders + range_height
+}
+
+fn count_horizontal_borders(cfg: &SpannedConfig, len: usize, start: usize, end: usize) -> usize {
+ (start..end)
+ .skip(1)
+ .filter(|&i| cfg.has_horizontal(i, len))
+ .count()
+}
+
+fn inc_range(list: &mut [usize], size: usize, start: usize, end: usize) {
+ if list.is_empty() {
+ return;
+ }
+
+ let span = end - start;
+ let one = size / span;
+ let rest = size - span * one;
+
+ let mut i = start;
+ while i < end {
+ if i == start {
+ list[i] += one + rest;
+ } else {
+ list[i] += one;
+ }
+
+ i += 1;
+ }
+}
+
+fn adjust_vspans(
+ cfg: &SpannedConfig,
+ len: usize,
+ spans: &HashMap<Position, (usize, usize)>,
+ widths: &mut [usize],
+) {
+ if spans.is_empty() {
+ return;
+ }
+
+ // The overall width distribution will be different depend on the order.
+ //
+ // We sort spans in order to prioritize the smaller spans first.
+ let mut spans_ordered = spans
+ .iter()
+ .map(|(k, v)| ((k.0, k.1), *v))
+ .collect::<Vec<_>>();
+ spans_ordered.sort_unstable_by(|a, b| match a.1 .0.cmp(&b.1 .0) {
+ Ordering::Equal => a.0.cmp(&b.0),
+ o => o,
+ });
+
+ for ((_, col), (span, width)) in spans_ordered {
+ adjust_column_range(cfg, width, len, col, col + span, widths);
+ }
+}
+
+fn adjust_column_range(
+ cfg: &SpannedConfig,
+ max_span_width: usize,
+ len: usize,
+ start: usize,
+ end: usize,
+ widths: &mut [usize],
+) {
+ let range_width = range_width(cfg, len, start, end, widths);
+ if range_width >= max_span_width {
+ return;
+ }
+
+ inc_range(widths, max_span_width - range_width, start, end);
+}
+
+fn get_cell_padding_horizontal(cfg: &SpannedConfig, pos: Position) -> usize {
+ let padding = cfg.get_padding(pos.into());
+ padding.left.size + padding.right.size
+}
+
+fn get_cell_vertical_padding(cfg: &SpannedConfig, pos: Position) -> usize {
+ let padding = cfg.get_padding(pos.into());
+ padding.top.size + padding.bottom.size
+}
+
+fn range_width(
+ cfg: &SpannedConfig,
+ len: usize,
+ start: usize,
+ end: usize,
+ widths: &[usize],
+) -> usize {
+ let count_borders = count_vertical_borders(cfg, len, start, end);
+ let range_width = widths[start..end].iter().sum::<usize>();
+ count_borders + range_width
+}
+
+fn count_vertical_borders(cfg: &SpannedConfig, len: usize, start: usize, end: usize) -> usize {
+ (start..end)
+ .skip(1)
+ .filter(|&i| cfg.has_vertical(i, len))
+ .count()
+}
+
+fn build_height<T: Cell + AsRef<str>>(records: &VecRecords<T>, cfg: &SpannedConfig) -> Vec<usize> {
+ let mut heights = vec![];
+ let mut hspans = HashMap::new();
+
+ for (row, columns) in records.iter_rows().enumerate() {
+ let mut row_height = 0;
+ for (col, cell) in columns.iter().enumerate() {
+ let pos = (row, col);
+ if !cfg.is_cell_visible(pos) {
+ continue;
+ }
+
+ let height = cell.count_lines() + get_cell_vertical_padding(cfg, pos);
+ match cfg.get_row_span(pos) {
+ Some(n) if n > 1 => {
+ hspans.insert(pos, (n, height));
+ }
+ _ => row_height = max(row_height, height),
+ }
+ }
+
+ heights.push(row_height);
+ }
+
+ adjust_hspans(cfg, heights.len(), &hspans, &mut heights);
+
+ heights
+}
+
+fn build_width<T: Cell + AsRef<str>>(records: &VecRecords<T>, cfg: &SpannedConfig) -> Vec<usize> {
+ let count_columns = records.count_columns();
+
+ let mut widths = vec![0; count_columns];
+ let mut vspans = HashMap::new();
+
+ for (row, columns) in records.iter_rows().enumerate() {
+ for (col, cell) in columns.iter().enumerate() {
+ let pos = (row, col);
+ if !cfg.is_cell_visible(pos) {
+ continue;
+ }
+
+ let width = cell.width() + get_cell_padding_horizontal(cfg, (row, col));
+ match cfg.get_column_span(pos) {
+ Some(n) if n > 1 => {
+ vspans.insert(pos, (n, width));
+ }
+ _ => widths[col] = max(widths[col], width),
+ }
+ }
+ }
+
+ adjust_vspans(cfg, count_columns, &vspans, &mut widths);
+
+ widths
+}
diff --git a/vendor/papergrid/src/grid/compact.rs b/vendor/papergrid/src/grid/compact.rs
new file mode 100644
index 000000000..f9536bd80
--- /dev/null
+++ b/vendor/papergrid/src/grid/compact.rs
@@ -0,0 +1,659 @@
+//! The module contains a [`CompactGrid`] structure,
+//! which is a relatively strict grid.
+
+use core::{
+ borrow::Borrow,
+ fmt::{self, Display, Write},
+};
+
+use crate::{
+ color::{Color, StaticColor},
+ colors::{Colors, NoColors},
+ config::{AlignmentHorizontal, Borders, Indent, Line, Sides},
+ dimension::Dimension,
+ records::Records,
+ util::string::string_width,
+};
+
+use crate::config::compact::CompactConfig;
+
+/// Grid provides a set of methods for building a text-based table.
+#[derive(Debug, Clone)]
+pub struct CompactGrid<R, D, G, C> {
+ records: R,
+ config: G,
+ dimension: D,
+ colors: C,
+}
+
+impl<R, D, G> CompactGrid<R, D, G, NoColors> {
+ /// The new method creates a grid instance with default styles.
+ pub fn new(records: R, dimension: D, config: G) -> Self {
+ CompactGrid {
+ records,
+ config,
+ dimension,
+ colors: NoColors::default(),
+ }
+ }
+}
+
+impl<R, D, G, C> CompactGrid<R, D, G, C> {
+ /// Sets colors map.
+ pub fn with_colors<Colors>(self, colors: Colors) -> CompactGrid<R, D, G, Colors> {
+ CompactGrid {
+ records: self.records,
+ config: self.config,
+ dimension: self.dimension,
+ colors,
+ }
+ }
+
+ /// Builds a table.
+ pub fn build<F>(self, mut f: F) -> fmt::Result
+ where
+ R: Records,
+ D: Dimension,
+ C: Colors,
+ G: Borrow<CompactConfig>,
+ F: Write,
+ {
+ if self.records.count_columns() == 0 {
+ return Ok(());
+ }
+
+ let config = self.config.borrow();
+ print_grid(&mut f, self.records, config, &self.dimension, &self.colors)
+ }
+
+ /// Builds a table into string.
+ ///
+ /// Notice that it consumes self.
+ #[cfg(feature = "std")]
+ #[allow(clippy::inherent_to_string)]
+ pub fn to_string(self) -> String
+ where
+ R: Records,
+ D: Dimension,
+ G: Borrow<CompactConfig>,
+ C: Colors,
+ {
+ let mut buf = String::new();
+ self.build(&mut buf).expect("It's guaranteed to never happen otherwise it's considered an stdlib error or impl error");
+ buf
+ }
+}
+
+impl<R, D, G, C> Display for CompactGrid<R, D, G, C>
+where
+ for<'a> &'a R: Records,
+ D: Dimension,
+ G: Borrow<CompactConfig>,
+ C: Colors,
+{
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ let records = &self.records;
+ let config = self.config.borrow();
+
+ print_grid(f, records, config, &self.dimension, &self.colors)
+ }
+}
+
+fn print_grid<F: Write, R: Records, D: Dimension, C: Colors>(
+ f: &mut F,
+ records: R,
+ cfg: &CompactConfig,
+ dims: &D,
+ colors: &C,
+) -> fmt::Result {
+ let count_columns = records.count_columns();
+ let count_rows = records.hint_count_rows();
+
+ if count_columns == 0 || matches!(count_rows, Some(0)) {
+ return Ok(());
+ }
+
+ let mut records = records.iter_rows().into_iter();
+ let mut next_columns = records.next();
+
+ if next_columns.is_none() {
+ return Ok(());
+ }
+
+ let wtotal = total_width(cfg, dims, count_columns);
+
+ let borders = cfg.get_borders();
+ let bcolors = cfg.get_borders_color();
+
+ let h_chars = create_horizontal(borders);
+ let h_colors = create_horizontal_colors(bcolors);
+
+ let has_horizontal = borders.has_horizontal();
+ let has_horizontal_colors = bcolors.has_horizontal();
+ let has_horizontal_second = cfg.get_first_horizontal_line().is_some();
+
+ let vert = (
+ borders.left.map(|c| (c, bcolors.left)),
+ borders.vertical.map(|c| (c, bcolors.vertical)),
+ borders.right.map(|c| (c, bcolors.right)),
+ );
+
+ let margin = cfg.get_margin();
+ let margin_color = cfg.get_margin_color();
+ let pad = create_padding(cfg);
+ let align = cfg.get_alignment_horizontal();
+ let mar = (
+ (margin.left, margin_color.left),
+ (margin.right, margin_color.right),
+ );
+
+ let widths = (0..count_columns).map(|col| dims.get_width(col));
+
+ let mut new_line = false;
+
+ if margin.top.size > 0 {
+ let wtotal = wtotal + margin.left.size + margin.right.size;
+ print_indent_lines(f, wtotal, margin.top, margin_color.top)?;
+ new_line = true;
+ }
+
+ if borders.has_top() {
+ if new_line {
+ f.write_char('\n')?
+ }
+
+ print_indent2(f, margin.left, margin_color.left)?;
+
+ let chars = create_horizontal_top(borders);
+ if bcolors.has_top() {
+ let chars_color = create_horizontal_top_colors(bcolors);
+ print_split_line_colored(f, chars, chars_color, dims, count_columns)?;
+ } else {
+ print_split_line(f, chars, dims, count_columns)?;
+ }
+
+ print_indent2(f, margin.right, margin_color.right)?;
+
+ new_line = true;
+ }
+
+ let mut row = 0;
+ while let Some(columns) = next_columns {
+ let columns = columns.into_iter();
+ next_columns = records.next();
+
+ if row > 0 && has_horizontal {
+ if new_line {
+ f.write_char('\n')?;
+ }
+
+ print_indent2(f, margin.left, margin_color.left)?;
+
+ if has_horizontal_colors {
+ print_split_line_colored(f, h_chars, h_colors, dims, count_columns)?;
+ } else {
+ print_split_line(f, h_chars, dims, count_columns)?;
+ }
+
+ print_indent2(f, margin.right, margin_color.right)?;
+ } else if row == 1 && has_horizontal_second {
+ if new_line {
+ f.write_char('\n')?;
+ }
+
+ print_indent2(f, margin.left, margin_color.left)?;
+
+ let h_chars = cfg.get_first_horizontal_line().expect("must be here");
+
+ if has_horizontal_colors {
+ print_split_line_colored(f, h_chars, h_colors, dims, count_columns)?;
+ } else {
+ print_split_line(f, h_chars, dims, count_columns)?;
+ }
+
+ print_indent2(f, margin.right, margin_color.right)?;
+ }
+
+ if new_line {
+ f.write_char('\n')?;
+ }
+
+ let columns = columns
+ .enumerate()
+ .map(|(col, text)| (text, colors.get_color((row, col))));
+
+ let widths = widths.clone();
+ print_grid_row(f, columns, widths, mar, pad, vert, align)?;
+
+ new_line = true;
+ row += 1;
+ }
+
+ if borders.has_bottom() {
+ f.write_char('\n')?;
+
+ print_indent2(f, margin.left, margin_color.left)?;
+
+ let chars = create_horizontal_bottom(borders);
+ if bcolors.has_bottom() {
+ let chars_color = create_horizontal_bottom_colors(bcolors);
+ print_split_line_colored(f, chars, chars_color, dims, count_columns)?;
+ } else {
+ print_split_line(f, chars, dims, count_columns)?;
+ }
+
+ print_indent2(f, margin.right, margin_color.right)?;
+ }
+
+ if cfg.get_margin().bottom.size > 0 {
+ f.write_char('\n')?;
+
+ let wtotal = wtotal + margin.left.size + margin.right.size;
+ print_indent_lines(f, wtotal, margin.bottom, margin_color.bottom)?;
+ }
+
+ Ok(())
+}
+
+type ColoredIndent = (Indent, StaticColor);
+
+#[allow(clippy::too_many_arguments)]
+fn print_grid_row<F, I, T, C, D>(
+ f: &mut F,
+ columns: I,
+ widths: D,
+ mar: (ColoredIndent, ColoredIndent),
+ pad: Sides<ColoredIndent>,
+ vert: (BorderChar, BorderChar, BorderChar),
+ align: AlignmentHorizontal,
+) -> fmt::Result
+where
+ F: Write,
+ I: Iterator<Item = (T, Option<C>)>,
+ T: AsRef<str>,
+ C: Color,
+ D: Iterator<Item = usize> + Clone,
+{
+ if pad.top.0.size > 0 {
+ for _ in 0..pad.top.0.size {
+ print_indent2(f, mar.0 .0, mar.0 .1)?;
+ print_columns_empty_colored(f, widths.clone(), vert, pad.top.1)?;
+ print_indent2(f, mar.1 .0, mar.1 .1)?;
+
+ f.write_char('\n')?;
+ }
+ }
+
+ let mut widths1 = widths.clone();
+ let columns = columns.map(move |(text, color)| {
+ let width = widths1.next().expect("must be here");
+ (text, color, width)
+ });
+
+ print_indent2(f, mar.0 .0, mar.0 .1)?;
+ print_row_columns(f, columns, vert, pad, align)?;
+ print_indent2(f, mar.1 .0, mar.1 .1)?;
+
+ for _ in 0..pad.bottom.0.size {
+ f.write_char('\n')?;
+
+ print_indent2(f, mar.0 .0, mar.0 .1)?;
+ print_columns_empty_colored(f, widths.clone(), vert, pad.bottom.1)?;
+ print_indent2(f, mar.1 .0, mar.1 .1)?;
+ }
+
+ Ok(())
+}
+
+fn create_padding(cfg: &CompactConfig) -> Sides<ColoredIndent> {
+ let pad = cfg.get_padding();
+ let pad_colors = cfg.get_padding_color();
+ Sides::new(
+ (pad.left, pad_colors.left),
+ (pad.right, pad_colors.right),
+ (pad.top, pad_colors.top),
+ (pad.bottom, pad_colors.bottom),
+ )
+}
+
+fn create_horizontal(b: &Borders<char>) -> Line<char> {
+ Line::new(b.horizontal.unwrap_or(' '), b.intersection, b.left, b.right)
+}
+
+fn create_horizontal_top(b: &Borders<char>) -> Line<char> {
+ Line::new(
+ b.top.unwrap_or(' '),
+ b.top_intersection,
+ b.top_left,
+ b.top_right,
+ )
+}
+
+fn create_horizontal_bottom(b: &Borders<char>) -> Line<char> {
+ Line::new(
+ b.bottom.unwrap_or(' '),
+ b.bottom_intersection,
+ b.bottom_left,
+ b.bottom_right,
+ )
+}
+
+fn create_horizontal_colors(
+ b: &Borders<StaticColor>,
+) -> (StaticColor, StaticColor, StaticColor, StaticColor) {
+ (
+ b.horizontal.unwrap_or(StaticColor::default()),
+ b.left.unwrap_or(StaticColor::default()),
+ b.intersection.unwrap_or(StaticColor::default()),
+ b.right.unwrap_or(StaticColor::default()),
+ )
+}
+
+fn create_horizontal_top_colors(
+ b: &Borders<StaticColor>,
+) -> (StaticColor, StaticColor, StaticColor, StaticColor) {
+ (
+ b.top.unwrap_or(StaticColor::default()),
+ b.top_left.unwrap_or(StaticColor::default()),
+ b.top_intersection.unwrap_or(StaticColor::default()),
+ b.top_right.unwrap_or(StaticColor::default()),
+ )
+}
+
+fn create_horizontal_bottom_colors(
+ b: &Borders<StaticColor>,
+) -> (StaticColor, StaticColor, StaticColor, StaticColor) {
+ (
+ b.bottom.unwrap_or(StaticColor::default()),
+ b.bottom_left.unwrap_or(StaticColor::default()),
+ b.bottom_intersection.unwrap_or(StaticColor::default()),
+ b.bottom_right.unwrap_or(StaticColor::default()),
+ )
+}
+
+fn total_width<D: Dimension>(cfg: &CompactConfig, dims: &D, count_columns: usize) -> usize {
+ let content_width = total_columns_width(count_columns, dims);
+ let count_verticals = count_verticals(cfg, count_columns);
+
+ content_width + count_verticals
+}
+
+fn total_columns_width<D: Dimension>(count_columns: usize, dims: &D) -> usize {
+ (0..count_columns).map(|i| dims.get_width(i)).sum::<usize>()
+}
+
+fn count_verticals(cfg: &CompactConfig, count_columns: usize) -> usize {
+ assert!(count_columns > 0);
+
+ let count_verticals = count_columns - 1;
+ let borders = cfg.get_borders();
+ borders.has_vertical() as usize * count_verticals
+ + borders.has_left() as usize
+ + borders.has_right() as usize
+}
+
+type BorderChar = Option<(char, Option<StaticColor>)>;
+
+fn print_row_columns<F, I, T, C>(
+ f: &mut F,
+ mut columns: I,
+ borders: (BorderChar, BorderChar, BorderChar),
+ pad: Sides<ColoredIndent>,
+ align: AlignmentHorizontal,
+) -> Result<(), fmt::Error>
+where
+ F: Write,
+ I: Iterator<Item = (T, Option<C>, usize)>,
+ T: AsRef<str>,
+ C: Color,
+{
+ if let Some((c, color)) = borders.0 {
+ print_char(f, c, color)?;
+ }
+
+ if let Some((text, color, width)) = columns.next() {
+ let text = text.as_ref();
+ let text = text.lines().next().unwrap_or("");
+ print_cell(f, text, width, color, (pad.left, pad.right), align)?;
+ }
+
+ for (text, color, width) in columns {
+ if let Some((c, color)) = borders.1 {
+ print_char(f, c, color)?;
+ }
+
+ let text = text.as_ref();
+ let text = text.lines().next().unwrap_or("");
+ print_cell(f, text, width, color, (pad.left, pad.right), align)?;
+ }
+
+ if let Some((c, color)) = borders.2 {
+ print_char(f, c, color)?;
+ }
+
+ Ok(())
+}
+
+fn print_columns_empty_colored<F: Write, I: Iterator<Item = usize>>(
+ f: &mut F,
+ mut columns: I,
+ borders: (BorderChar, BorderChar, BorderChar),
+ color: StaticColor,
+) -> Result<(), fmt::Error> {
+ if let Some((c, color)) = borders.0 {
+ print_char(f, c, color)?;
+ }
+
+ if let Some(width) = columns.next() {
+ color.fmt_prefix(f)?;
+ repeat_char(f, ' ', width)?;
+ color.fmt_suffix(f)?;
+ }
+
+ for width in columns {
+ if let Some((c, color)) = borders.1 {
+ print_char(f, c, color)?;
+ }
+
+ color.fmt_prefix(f)?;
+ repeat_char(f, ' ', width)?;
+ color.fmt_suffix(f)?;
+ }
+
+ if let Some((c, color)) = borders.2 {
+ print_char(f, c, color)?;
+ }
+
+ Ok(())
+}
+
+fn print_cell<F: Write, C: Color>(
+ f: &mut F,
+ text: &str,
+ width: usize,
+ color: Option<C>,
+ (pad_l, pad_r): (ColoredIndent, ColoredIndent),
+ align: AlignmentHorizontal,
+) -> fmt::Result {
+ let available = width - pad_l.0.size - pad_r.0.size;
+
+ let text_width = string_width(text);
+ let (left, right) = if available < text_width {
+ (0, 0)
+ } else {
+ calculate_indent(align, text_width, available)
+ };
+
+ print_indent(f, pad_l.0.fill, pad_l.0.size, pad_l.1)?;
+
+ repeat_char(f, ' ', left)?;
+ print_text(f, text, color)?;
+ repeat_char(f, ' ', right)?;
+
+ print_indent(f, pad_r.0.fill, pad_r.0.size, pad_r.1)?;
+
+ Ok(())
+}
+
+fn print_split_line_colored<F: Write>(
+ f: &mut F,
+ chars: Line<char>,
+ colors: (StaticColor, StaticColor, StaticColor, StaticColor),
+ dimension: impl Dimension,
+ count_columns: usize,
+) -> fmt::Result {
+ let mut used_color = StaticColor::default();
+
+ if let Some(c) = chars.connect1 {
+ colors.1.fmt_prefix(f)?;
+ f.write_char(c)?;
+ used_color = colors.1;
+ }
+
+ let width = dimension.get_width(0);
+ if width > 0 {
+ prepare_coloring(f, &colors.0, &mut used_color)?;
+ repeat_char(f, chars.main, width)?;
+ }
+
+ for col in 1..count_columns {
+ if let Some(c) = &chars.intersection {
+ prepare_coloring(f, &colors.2, &mut used_color)?;
+ f.write_char(*c)?;
+ }
+
+ let width = dimension.get_width(col);
+ if width > 0 {
+ prepare_coloring(f, &colors.0, &mut used_color)?;
+ repeat_char(f, chars.main, width)?;
+ }
+ }
+
+ if let Some(c) = &chars.connect2 {
+ prepare_coloring(f, &colors.3, &mut used_color)?;
+ f.write_char(*c)?;
+ }
+
+ used_color.fmt_suffix(f)?;
+
+ Ok(())
+}
+
+fn print_split_line<F: Write>(
+ f: &mut F,
+ chars: Line<char>,
+ dimension: impl Dimension,
+ count_columns: usize,
+) -> fmt::Result {
+ if let Some(c) = chars.connect1 {
+ f.write_char(c)?;
+ }
+
+ let width = dimension.get_width(0);
+ if width > 0 {
+ repeat_char(f, chars.main, width)?;
+ }
+
+ for col in 1..count_columns {
+ if let Some(c) = chars.intersection {
+ f.write_char(c)?;
+ }
+
+ let width = dimension.get_width(col);
+ if width > 0 {
+ repeat_char(f, chars.main, width)?;
+ }
+ }
+
+ if let Some(c) = chars.connect2 {
+ f.write_char(c)?;
+ }
+
+ Ok(())
+}
+
+fn print_text<F: Write>(f: &mut F, text: &str, clr: Option<impl Color>) -> fmt::Result {
+ match clr {
+ Some(color) => {
+ color.fmt_prefix(f)?;
+ f.write_str(text)?;
+ color.fmt_suffix(f)
+ }
+ None => f.write_str(text),
+ }
+}
+
+fn prepare_coloring<F: Write>(f: &mut F, clr: &StaticColor, used: &mut StaticColor) -> fmt::Result {
+ if *used != *clr {
+ used.fmt_suffix(f)?;
+ clr.fmt_prefix(f)?;
+ *used = *clr;
+ }
+
+ Ok(())
+}
+
+fn calculate_indent(
+ alignment: AlignmentHorizontal,
+ text_width: usize,
+ available: usize,
+) -> (usize, usize) {
+ let diff = available - text_width;
+ match alignment {
+ AlignmentHorizontal::Left => (0, diff),
+ AlignmentHorizontal::Right => (diff, 0),
+ AlignmentHorizontal::Center => {
+ let left = diff / 2;
+ let rest = diff - left;
+ (left, rest)
+ }
+ }
+}
+
+fn repeat_char<F: Write>(f: &mut F, c: char, n: usize) -> fmt::Result {
+ for _ in 0..n {
+ f.write_char(c)?;
+ }
+
+ Ok(())
+}
+
+fn print_char<F: Write>(f: &mut F, c: char, color: Option<StaticColor>) -> fmt::Result {
+ match color {
+ Some(color) => {
+ color.fmt_prefix(f)?;
+ f.write_char(c)?;
+ color.fmt_suffix(f)
+ }
+ None => f.write_char(c),
+ }
+}
+
+fn print_indent_lines<F: Write>(
+ f: &mut F,
+ width: usize,
+ indent: Indent,
+ color: StaticColor,
+) -> fmt::Result {
+ print_indent(f, indent.fill, width, color)?;
+ f.write_char('\n')?;
+
+ for _ in 1..indent.size {
+ f.write_char('\n')?;
+ print_indent(f, indent.fill, width, color)?;
+ }
+
+ Ok(())
+}
+
+fn print_indent<F: Write>(f: &mut F, c: char, n: usize, color: StaticColor) -> fmt::Result {
+ color.fmt_prefix(f)?;
+ repeat_char(f, c, n)?;
+ color.fmt_suffix(f)?;
+
+ Ok(())
+}
+
+fn print_indent2<F: Write>(f: &mut F, indent: Indent, color: StaticColor) -> fmt::Result {
+ print_indent(f, indent.fill, indent.size, color)
+}
diff --git a/vendor/papergrid/src/grid/iterable.rs b/vendor/papergrid/src/grid/iterable.rs
new file mode 100644
index 000000000..c02998b0b
--- /dev/null
+++ b/vendor/papergrid/src/grid/iterable.rs
@@ -0,0 +1,1358 @@
+//! The module contains a [`Grid`] structure.
+
+use std::{
+ borrow::{Borrow, Cow},
+ cmp,
+ collections::BTreeMap,
+ fmt::{self, Write},
+};
+
+use crate::{
+ color::{AnsiColor, Color},
+ colors::Colors,
+ config::{AlignmentHorizontal, AlignmentVertical, Indent, Position, Sides},
+ dimension::Dimension,
+ records::Records,
+ util::string::{count_lines, get_lines, string_width, string_width_multiline, Lines},
+};
+
+use crate::config::spanned::{Formatting, Offset, SpannedConfig};
+
+/// Grid provides a set of methods for building a text-based table.
+#[derive(Debug, Clone)]
+pub struct Grid<R, D, G, C> {
+ records: R,
+ config: G,
+ dimension: D,
+ colors: C,
+}
+
+impl<R, D, G, C> Grid<R, D, G, C> {
+ /// The new method creates a grid instance with default styles.
+ pub fn new(records: R, dimension: D, config: G, colors: C) -> Self {
+ Grid {
+ records,
+ config,
+ dimension,
+ colors,
+ }
+ }
+}
+
+impl<R, D, G, C> Grid<R, D, G, C> {
+ /// Builds a table.
+ pub fn build<F>(self, mut f: F) -> fmt::Result
+ where
+ R: Records,
+ D: Dimension,
+ C: Colors,
+ G: Borrow<SpannedConfig>,
+ F: Write,
+ {
+ if self.records.count_columns() == 0 || self.records.hint_count_rows() == Some(0) {
+ return Ok(());
+ }
+
+ let config = self.config.borrow();
+ print_grid(&mut f, self.records, config, &self.dimension, &self.colors)
+ }
+
+ /// Builds a table into string.
+ ///
+ /// Notice that it consumes self.
+ #[allow(clippy::inherent_to_string)]
+ pub fn to_string(self) -> String
+ where
+ R: Records,
+ D: Dimension,
+ G: Borrow<SpannedConfig>,
+ C: Colors,
+ {
+ let mut buf = String::new();
+ self.build(&mut buf).expect("It's guaranteed to never happen otherwise it's considered an stdlib error or impl error");
+ buf
+ }
+}
+
+fn print_grid<F: Write, R: Records, D: Dimension, C: Colors>(
+ f: &mut F,
+ records: R,
+ cfg: &SpannedConfig,
+ dimension: &D,
+ colors: &C,
+) -> fmt::Result {
+ // spanned version is a bit more complex and 'supposedly' slower,
+ // because spans are considered to be not a general case we are having 2 versions
+ let grid_has_spans = cfg.has_column_spans() || cfg.has_row_spans();
+ if grid_has_spans {
+ print_grid_spanned(f, records, cfg, dimension, colors)
+ } else {
+ print_grid_general(f, records, cfg, dimension, colors)
+ }
+}
+
+fn print_grid_general<F: Write, R: Records, D: Dimension, C: Colors>(
+ f: &mut F,
+ records: R,
+ cfg: &SpannedConfig,
+ dims: &D,
+ colors: &C,
+) -> fmt::Result {
+ let count_columns = records.count_columns();
+
+ let mut totalw = None;
+ let totalh = records
+ .hint_count_rows()
+ .map(|count_rows| total_height(cfg, dims, count_rows));
+
+ let mut records_iter = records.iter_rows().into_iter();
+ let mut next_columns = records_iter.next();
+
+ if next_columns.is_none() {
+ return Ok(());
+ }
+
+ if cfg.get_margin().top.size > 0 {
+ totalw = Some(output_width(cfg, dims, count_columns));
+
+ print_margin_top(f, cfg, totalw.unwrap())?;
+ f.write_char('\n')?;
+ }
+
+ let mut row = 0;
+ let mut line = 0;
+ let mut is_prev_row_skipped = false;
+ let mut buf = None;
+ while let Some(columns) = next_columns {
+ let columns = columns.into_iter();
+ next_columns = records_iter.next();
+ let is_last_row = next_columns.is_none();
+
+ let height = dims.get_height(row);
+ let count_rows = convert_count_rows(row, is_last_row);
+ let has_horizontal = cfg.has_horizontal(row, count_rows);
+ let shape = (count_rows, count_columns);
+
+ if row > 0 && !is_prev_row_skipped && (has_horizontal || height > 0) {
+ f.write_char('\n')?;
+ }
+
+ if has_horizontal {
+ print_horizontal_line(f, cfg, line, totalh, dims, row, shape)?;
+
+ line += 1;
+
+ if height > 0 {
+ f.write_char('\n')?;
+ }
+ }
+
+ if height == 1 {
+ print_single_line_columns(f, columns, cfg, colors, dims, row, line, totalh, shape)?
+ } else if height > 0 {
+ if buf.is_none() {
+ buf = Some(Vec::with_capacity(count_columns));
+ }
+
+ let buf = buf.as_mut().unwrap();
+ print_multiline_columns(
+ f, columns, cfg, colors, dims, height, row, line, totalh, shape, buf,
+ )?;
+
+ buf.clear();
+ }
+
+ if height == 0 && !has_horizontal {
+ is_prev_row_skipped = true;
+ } else {
+ is_prev_row_skipped = false;
+ }
+
+ line += height;
+ row += 1;
+ }
+
+ if cfg.has_horizontal(row, row) {
+ f.write_char('\n')?;
+ let shape = (row, count_columns);
+ print_horizontal_line(f, cfg, line, totalh, dims, row, shape)?;
+ }
+
+ {
+ let margin = cfg.get_margin();
+ if margin.bottom.size > 0 {
+ let totalw = totalw.unwrap_or_else(|| output_width(cfg, dims, count_columns));
+
+ f.write_char('\n')?;
+ print_margin_bottom(f, cfg, totalw)?;
+ }
+ }
+
+ Ok(())
+}
+
+fn output_width<D: Dimension>(cfg: &SpannedConfig, d: D, count_columns: usize) -> usize {
+ let margin = cfg.get_margin();
+ total_width(cfg, &d, count_columns) + margin.left.size + margin.right.size
+}
+
+#[allow(clippy::too_many_arguments)]
+fn print_horizontal_line<F: Write, D: Dimension>(
+ f: &mut F,
+ cfg: &SpannedConfig,
+ line: usize,
+ totalh: Option<usize>,
+ dimension: &D,
+ row: usize,
+ shape: (usize, usize),
+) -> fmt::Result {
+ print_margin_left(f, cfg, line, totalh)?;
+ print_split_line(f, cfg, dimension, row, shape)?;
+ print_margin_right(f, cfg, line, totalh)?;
+ Ok(())
+}
+
+#[allow(clippy::too_many_arguments)]
+fn print_multiline_columns<'a, F, I, D, C>(
+ f: &mut F,
+ columns: I,
+ cfg: &'a SpannedConfig,
+ colors: &'a C,
+ dimension: &D,
+ height: usize,
+ row: usize,
+ line: usize,
+ totalh: Option<usize>,
+ shape: (usize, usize),
+ buf: &mut Vec<Cell<I::Item, &'a C::Color>>,
+) -> fmt::Result
+where
+ F: Write,
+ I: Iterator,
+ I::Item: AsRef<str>,
+ D: Dimension,
+ C: Colors,
+{
+ collect_columns(buf, columns, cfg, colors, dimension, height, row);
+ print_columns_lines(f, buf, height, cfg, line, row, totalh, shape)?;
+ Ok(())
+}
+
+#[allow(clippy::too_many_arguments)]
+fn print_single_line_columns<F, I, D, C>(
+ f: &mut F,
+ columns: I,
+ cfg: &SpannedConfig,
+ colors: &C,
+ dims: &D,
+ row: usize,
+ line: usize,
+ totalh: Option<usize>,
+ shape: (usize, usize),
+) -> fmt::Result
+where
+ F: Write,
+ I: Iterator,
+ I::Item: AsRef<str>,
+ D: Dimension,
+ C: Colors,
+{
+ print_margin_left(f, cfg, line, totalh)?;
+
+ for (col, cell) in columns.enumerate() {
+ let pos = (row, col);
+ let width = dims.get_width(col);
+ let color = colors.get_color(pos);
+ print_vertical_char(f, cfg, pos, 0, 1, shape.1)?;
+ print_single_line_column(f, cell.as_ref(), cfg, width, color, pos)?;
+ }
+
+ print_vertical_char(f, cfg, (row, shape.1), 0, 1, shape.1)?;
+
+ print_margin_right(f, cfg, line, totalh)?;
+
+ Ok(())
+}
+
+fn print_single_line_column<F: Write, C: Color>(
+ f: &mut F,
+ text: &str,
+ cfg: &SpannedConfig,
+ width: usize,
+ color: Option<&C>,
+ pos: Position,
+) -> fmt::Result {
+ let pos = pos.into();
+ let pad = cfg.get_padding(pos);
+ let pad_color = cfg.get_padding_color(pos);
+ let fmt = cfg.get_formatting(pos);
+ let space = cfg.get_justification(pos);
+ let space_color = cfg.get_justification_color(pos);
+
+ let (text, text_width) = if fmt.horizontal_trim && !text.is_empty() {
+ let text = string_trim(text);
+ let width = string_width(&text);
+
+ (text, width)
+ } else {
+ let text = Cow::Borrowed(text);
+ let width = string_width_multiline(&text);
+
+ (text, width)
+ };
+
+ let alignment = *cfg.get_alignment_horizontal(pos);
+ let available_width = width - pad.left.size - pad.right.size;
+ let (left, right) = calculate_indent(alignment, text_width, available_width);
+
+ print_padding(f, &pad.left, pad_color.left.as_ref())?;
+
+ print_indent(f, space, left, space_color)?;
+ print_text(f, &text, color)?;
+ print_indent(f, space, right, space_color)?;
+
+ print_padding(f, &pad.right, pad_color.right.as_ref())?;
+
+ Ok(())
+}
+
+#[allow(clippy::too_many_arguments)]
+fn print_columns_lines<T, F: Write, C: Color>(
+ f: &mut F,
+ buf: &mut [Cell<T, C>],
+ height: usize,
+ cfg: &SpannedConfig,
+ line: usize,
+ row: usize,
+ totalh: Option<usize>,
+ shape: (usize, usize),
+) -> fmt::Result {
+ for i in 0..height {
+ let exact_line = line + i;
+
+ print_margin_left(f, cfg, exact_line, totalh)?;
+
+ for (col, cell) in buf.iter_mut().enumerate() {
+ print_vertical_char(f, cfg, (row, col), i, height, shape.1)?;
+ cell.display(f)?;
+ }
+
+ print_vertical_char(f, cfg, (row, shape.1), i, height, shape.1)?;
+
+ print_margin_right(f, cfg, exact_line, totalh)?;
+
+ if i + 1 != height {
+ f.write_char('\n')?;
+ }
+ }
+
+ Ok(())
+}
+
+fn collect_columns<'a, I, D, C>(
+ buf: &mut Vec<Cell<I::Item, &'a C::Color>>,
+ iter: I,
+ cfg: &SpannedConfig,
+ colors: &'a C,
+ dimension: &D,
+ height: usize,
+ row: usize,
+) where
+ I: Iterator,
+ I::Item: AsRef<str>,
+ C: Colors,
+ D: Dimension,
+{
+ let iter = iter.enumerate().map(|(col, cell)| {
+ let pos = (row, col);
+ let width = dimension.get_width(col);
+ let color = colors.get_color(pos);
+ Cell::new(cell, width, height, cfg, color, pos)
+ });
+
+ buf.extend(iter);
+}
+
+fn print_split_line<F: Write, D: Dimension>(
+ f: &mut F,
+ cfg: &SpannedConfig,
+ dimension: &D,
+ row: usize,
+ shape: (usize, usize),
+) -> fmt::Result {
+ let mut used_color = None;
+ print_vertical_intersection(f, cfg, (row, 0), shape, &mut used_color)?;
+
+ for col in 0..shape.1 {
+ let width = dimension.get_width(col);
+
+ // general case
+ if width > 0 {
+ let pos = (row, col);
+ let main = cfg.get_horizontal(pos, shape.0);
+ match main {
+ Some(c) => {
+ let clr = cfg.get_horizontal_color(pos, shape.0);
+ prepare_coloring(f, clr, &mut used_color)?;
+ print_horizontal_border(f, cfg, pos, width, c, &used_color)?;
+ }
+ None => repeat_char(f, ' ', width)?,
+ }
+ }
+
+ print_vertical_intersection(f, cfg, (row, col + 1), shape, &mut used_color)?;
+ }
+
+ if let Some(clr) = used_color.take() {
+ clr.fmt_suffix(f)?;
+ }
+
+ Ok(())
+}
+
+fn print_grid_spanned<F: Write, R: Records, D: Dimension, C: Colors>(
+ f: &mut F,
+ records: R,
+ cfg: &SpannedConfig,
+ dims: &D,
+ colors: &C,
+) -> fmt::Result {
+ let count_columns = records.count_columns();
+
+ let total_width = total_width(cfg, dims, count_columns);
+ let margin = cfg.get_margin();
+ let total_width_with_margin = total_width + margin.left.size + margin.right.size;
+
+ let totalh = records
+ .hint_count_rows()
+ .map(|rows| total_height(cfg, dims, rows));
+
+ if margin.top.size > 0 {
+ print_margin_top(f, cfg, total_width_with_margin)?;
+ f.write_char('\n')?;
+ }
+
+ let mut buf = BTreeMap::new();
+
+ let mut records_iter = records.iter_rows().into_iter();
+ let mut next_columns = records_iter.next();
+
+ let mut need_new_line = false;
+ let mut line = 0;
+ let mut row = 0;
+ while let Some(columns) = next_columns {
+ let columns = columns.into_iter();
+ next_columns = records_iter.next();
+ let is_last_row = next_columns.is_none();
+
+ let height = dims.get_height(row);
+ let count_rows = convert_count_rows(row, is_last_row);
+ let shape = (count_rows, count_columns);
+
+ let has_horizontal = cfg.has_horizontal(row, count_rows);
+ if need_new_line && (has_horizontal || height > 0) {
+ f.write_char('\n')?;
+ need_new_line = false;
+ }
+
+ if has_horizontal {
+ print_margin_left(f, cfg, line, totalh)?;
+ print_split_line_spanned(f, &mut buf, cfg, dims, row, shape)?;
+ print_margin_right(f, cfg, line, totalh)?;
+
+ line += 1;
+
+ if height > 0 {
+ f.write_char('\n')?;
+ }
+ }
+
+ print_spanned_columns(
+ f, &mut buf, columns, cfg, colors, dims, height, row, line, totalh, shape,
+ )?;
+
+ if has_horizontal || height > 0 {
+ need_new_line = true;
+ }
+
+ line += height;
+ row += 1;
+ }
+
+ if row > 0 {
+ if cfg.has_horizontal(row, row) {
+ f.write_char('\n')?;
+ let shape = (row, count_columns);
+ print_horizontal_line(f, cfg, line, totalh, dims, row, shape)?;
+ }
+
+ if margin.bottom.size > 0 {
+ f.write_char('\n')?;
+ print_margin_bottom(f, cfg, total_width_with_margin)?;
+ }
+ }
+
+ Ok(())
+}
+
+fn print_split_line_spanned<S, F: Write, D: Dimension, C: Color>(
+ f: &mut F,
+ buf: &mut BTreeMap<usize, (Cell<S, C>, usize, usize)>,
+ cfg: &SpannedConfig,
+ dimension: &D,
+ row: usize,
+ shape: (usize, usize),
+) -> fmt::Result {
+ let mut used_color = None;
+ print_vertical_intersection(f, cfg, (row, 0), shape, &mut used_color)?;
+
+ for col in 0..shape.1 {
+ let pos = (row, col);
+ if cfg.is_cell_covered_by_both_spans(pos) {
+ continue;
+ }
+
+ let width = dimension.get_width(col);
+ let mut col = col;
+ if cfg.is_cell_covered_by_row_span(pos) {
+ // means it's part of other a spanned cell
+ // so. we just need to use line from other cell.
+
+ let (cell, _, _) = buf.get_mut(&col).unwrap();
+ cell.display(f)?;
+
+ // We need to use a correct right split char.
+ let original_row = closest_visible_row(cfg, pos).unwrap();
+ if let Some(span) = cfg.get_column_span((original_row, col)) {
+ col += span - 1;
+ }
+ } else if width > 0 {
+ // general case
+ let main = cfg.get_horizontal(pos, shape.0);
+ match main {
+ Some(c) => {
+ let clr = cfg.get_horizontal_color(pos, shape.0);
+ prepare_coloring(f, clr, &mut used_color)?;
+ print_horizontal_border(f, cfg, pos, width, c, &used_color)?;
+ }
+ None => repeat_char(f, ' ', width)?,
+ }
+ }
+
+ print_vertical_intersection(f, cfg, (row, col + 1), shape, &mut used_color)?;
+ }
+
+ if let Some(clr) = used_color.take() {
+ clr.fmt_suffix(f)?;
+ }
+
+ Ok(())
+}
+
+fn print_vertical_intersection<'a, F: fmt::Write>(
+ f: &mut F,
+ cfg: &'a SpannedConfig,
+ pos: Position,
+ shape: (usize, usize),
+ used_color: &mut Option<&'a AnsiColor<'static>>,
+) -> fmt::Result {
+ match cfg.get_intersection(pos, shape) {
+ Some(c) => {
+ let clr = cfg.get_intersection_color(pos, shape);
+ prepare_coloring(f, clr, used_color)?;
+ f.write_char(c)
+ }
+ None => Ok(()),
+ }
+}
+
+#[allow(clippy::too_many_arguments, clippy::type_complexity)]
+fn print_spanned_columns<'a, F, I, D, C>(
+ f: &mut F,
+ buf: &mut BTreeMap<usize, (Cell<I::Item, &'a C::Color>, usize, usize)>,
+ iter: I,
+ cfg: &SpannedConfig,
+ colors: &'a C,
+ dimension: &D,
+ this_height: usize,
+ row: usize,
+ line: usize,
+ totalh: Option<usize>,
+ shape: (usize, usize),
+) -> fmt::Result
+where
+ F: Write,
+ I: Iterator,
+ I::Item: AsRef<str>,
+ D: Dimension,
+ C: Colors,
+{
+ if this_height == 0 {
+ // it's possible that we dont show row but it contains an actual cell which will be
+ // rendered after all cause it's a rowspanned
+
+ let mut skip = 0;
+ for (col, cell) in iter.enumerate() {
+ if skip > 0 {
+ skip -= 1;
+ continue;
+ }
+
+ if let Some((_, _, colspan)) = buf.get(&col) {
+ skip = *colspan - 1;
+ continue;
+ }
+
+ let pos = (row, col);
+ let rowspan = cfg.get_row_span(pos).unwrap_or(1);
+ if rowspan < 2 {
+ continue;
+ }
+
+ let height = if rowspan > 1 {
+ range_height(cfg, dimension, row, row + rowspan, shape.0)
+ } else {
+ this_height
+ };
+
+ let colspan = cfg.get_column_span(pos).unwrap_or(1);
+ skip = colspan - 1;
+ let width = if colspan > 1 {
+ range_width(cfg, dimension, col, col + colspan, shape.1)
+ } else {
+ dimension.get_width(col)
+ };
+
+ let color = colors.get_color(pos);
+ let cell = Cell::new(cell, width, height, cfg, color, pos);
+
+ buf.insert(col, (cell, rowspan, colspan));
+ }
+
+ buf.retain(|_, (_, rowspan, _)| {
+ *rowspan -= 1;
+ *rowspan != 0
+ });
+
+ return Ok(());
+ }
+
+ let mut skip = 0;
+ for (col, cell) in iter.enumerate() {
+ if skip > 0 {
+ skip -= 1;
+ continue;
+ }
+
+ if let Some((_, _, colspan)) = buf.get(&col) {
+ skip = *colspan - 1;
+ continue;
+ }
+
+ let pos = (row, col);
+ let colspan = cfg.get_column_span(pos).unwrap_or(1);
+ skip = colspan - 1;
+
+ let width = if colspan > 1 {
+ range_width(cfg, dimension, col, col + colspan, shape.1)
+ } else {
+ dimension.get_width(col)
+ };
+
+ let rowspan = cfg.get_row_span(pos).unwrap_or(1);
+ let height = if rowspan > 1 {
+ range_height(cfg, dimension, row, row + rowspan, shape.0)
+ } else {
+ this_height
+ };
+
+ let color = colors.get_color(pos);
+ let cell = Cell::new(cell, width, height, cfg, color, pos);
+
+ buf.insert(col, (cell, rowspan, colspan));
+ }
+
+ for i in 0..this_height {
+ let exact_line = line + i;
+ let cell_line = i;
+
+ print_margin_left(f, cfg, exact_line, totalh)?;
+
+ for (&col, (cell, _, _)) in buf.iter_mut() {
+ print_vertical_char(f, cfg, (row, col), cell_line, this_height, shape.1)?;
+ cell.display(f)?;
+ }
+
+ print_vertical_char(f, cfg, (row, shape.1), cell_line, this_height, shape.1)?;
+
+ print_margin_right(f, cfg, exact_line, totalh)?;
+
+ if i + 1 != this_height {
+ f.write_char('\n')?;
+ }
+ }
+
+ buf.retain(|_, (_, rowspan, _)| {
+ *rowspan -= 1;
+ *rowspan != 0
+ });
+
+ Ok(())
+}
+
+fn print_horizontal_border<F: Write>(
+ f: &mut F,
+ cfg: &SpannedConfig,
+ pos: Position,
+ width: usize,
+ c: char,
+ used_color: &Option<&AnsiColor<'static>>,
+) -> fmt::Result {
+ if !cfg.is_overridden_horizontal(pos) {
+ return repeat_char(f, c, width);
+ }
+
+ for i in 0..width {
+ let c = cfg.lookup_horizontal_char(pos, i, width).unwrap_or(c);
+ match cfg.lookup_horizontal_color(pos, i, width) {
+ Some(color) => match used_color {
+ Some(clr) => {
+ clr.fmt_suffix(f)?;
+ color.fmt_prefix(f)?;
+ f.write_char(c)?;
+ color.fmt_suffix(f)?;
+ clr.fmt_prefix(f)?;
+ }
+ None => {
+ color.fmt_prefix(f)?;
+ f.write_char(c)?;
+ color.fmt_suffix(f)?;
+ }
+ },
+ _ => f.write_char(c)?,
+ }
+ }
+
+ Ok(())
+}
+
+struct Cell<T, C> {
+ lines: LinesIter<T>,
+ width: usize,
+ indent_top: usize,
+ indent_left: Option<usize>,
+ alignh: AlignmentHorizontal,
+ fmt: Formatting,
+ pad: Sides<Indent>,
+ pad_color: Sides<Option<AnsiColor<'static>>>,
+ color: Option<C>,
+ justification: (char, Option<AnsiColor<'static>>),
+}
+
+impl<T, C> Cell<T, C>
+where
+ T: AsRef<str>,
+{
+ fn new(
+ text: T,
+ width: usize,
+ height: usize,
+ cfg: &SpannedConfig,
+ color: Option<C>,
+ pos: Position,
+ ) -> Cell<T, C> {
+ let fmt = *cfg.get_formatting(pos.into());
+ let pad = cfg.get_padding(pos.into());
+ let pad_color = cfg.get_padding_color(pos.into()).clone();
+ let alignh = *cfg.get_alignment_horizontal(pos.into());
+ let alignv = *cfg.get_alignment_vertical(pos.into());
+ let justification = (
+ cfg.get_justification(pos.into()),
+ cfg.get_justification_color(pos.into()).cloned(),
+ );
+
+ let (count_lines, skip) = if fmt.vertical_trim {
+ let (len, top, _) = count_empty_lines(text.as_ref());
+ (len, top)
+ } else {
+ (count_lines(text.as_ref()), 0)
+ };
+
+ let indent_top = top_indent(&pad, alignv, count_lines, height);
+
+ let mut indent_left = None;
+ if !fmt.allow_lines_alignment {
+ let text_width = get_text_width(text.as_ref(), fmt.horizontal_trim);
+ let available = width - pad.left.size - pad.right.size;
+ indent_left = Some(calculate_indent(alignh, text_width, available).0);
+ }
+
+ let mut lines = LinesIter::new(text);
+ for _ in 0..skip {
+ let _ = lines.lines.next();
+ }
+
+ Self {
+ lines,
+ indent_left,
+ indent_top,
+ width,
+ alignh,
+ fmt,
+ pad,
+ pad_color,
+ color,
+ justification,
+ }
+ }
+}
+
+impl<T, C> Cell<T, C>
+where
+ C: Color,
+{
+ fn display<F: Write>(&mut self, f: &mut F) -> fmt::Result {
+ if self.indent_top > 0 {
+ self.indent_top -= 1;
+ print_padding_n(f, &self.pad.top, self.pad_color.top.as_ref(), self.width)?;
+ return Ok(());
+ }
+
+ let line = match self.lines.lines.next() {
+ Some(line) => line,
+ None => {
+ let color = self.pad_color.bottom.as_ref();
+ print_padding_n(f, &self.pad.bottom, color, self.width)?;
+ return Ok(());
+ }
+ };
+
+ let line = if self.fmt.horizontal_trim && !line.is_empty() {
+ string_trim(&line)
+ } else {
+ line
+ };
+
+ let line_width = string_width(&line);
+ let available_width = self.width - self.pad.left.size - self.pad.right.size;
+
+ let (left, right) = if self.fmt.allow_lines_alignment {
+ calculate_indent(self.alignh, line_width, available_width)
+ } else {
+ let left = self.indent_left.expect("must be here");
+ (left, available_width - line_width - left)
+ };
+
+ let (justification, justification_color) =
+ (self.justification.0, self.justification.1.as_ref());
+
+ print_padding(f, &self.pad.left, self.pad_color.left.as_ref())?;
+
+ print_indent(f, justification, left, justification_color)?;
+ print_text(f, &line, self.color.as_ref())?;
+ print_indent(f, justification, right, justification_color)?;
+
+ print_padding(f, &self.pad.right, self.pad_color.right.as_ref())?;
+
+ Ok(())
+ }
+}
+
+struct LinesIter<C> {
+ _cell: C,
+ /// SAFETY: IT'S NOT SAFE TO KEEP THE 'static REFERENCES AROUND AS THEY ARE NOT 'static in reality AND WILL BE DROPPED
+ _text: &'static str,
+ /// SAFETY: IT'S NOT SAFE TO KEEP THE 'static REFERENCES AROUND AS THEY ARE NOT 'static in reality AND WILL BE DROPPED
+ lines: Lines<'static>,
+}
+
+impl<C> LinesIter<C> {
+ fn new(cell: C) -> Self
+ where
+ C: AsRef<str>,
+ {
+ // We want to not allocate a String/Vec.
+ // It's currently not possible due to a lifetime issues. (It's known as self-referential struct)
+ //
+ // Here we change the lifetime of text.
+ //
+ // # Safety
+ //
+ // It must be safe because the referenced string and the references are dropped at the same time.
+ // And the referenced String is guaranteed to not be changed.
+ let text = cell.as_ref();
+ let text = unsafe {
+ std::str::from_utf8_unchecked(std::slice::from_raw_parts(text.as_ptr(), text.len()))
+ };
+
+ let lines = get_lines(text);
+
+ Self {
+ _cell: cell,
+ _text: text,
+ lines,
+ }
+ }
+}
+
+fn print_text<F: Write>(f: &mut F, text: &str, clr: Option<impl Color>) -> fmt::Result {
+ match clr {
+ Some(color) => {
+ color.fmt_prefix(f)?;
+ f.write_str(text)?;
+ color.fmt_suffix(f)
+ }
+ None => f.write_str(text),
+ }
+}
+
+fn prepare_coloring<'a, 'b, F: Write>(
+ f: &mut F,
+ clr: Option<&'a AnsiColor<'b>>,
+ used_color: &mut Option<&'a AnsiColor<'b>>,
+) -> fmt::Result {
+ match clr {
+ Some(clr) => match used_color.as_mut() {
+ Some(used_clr) => {
+ if **used_clr != *clr {
+ used_clr.fmt_suffix(f)?;
+ clr.fmt_prefix(f)?;
+ *used_clr = clr;
+ }
+ }
+ None => {
+ clr.fmt_prefix(f)?;
+ *used_color = Some(clr);
+ }
+ },
+ None => {
+ if let Some(clr) = used_color.take() {
+ clr.fmt_suffix(f)?
+ }
+ }
+ }
+
+ Ok(())
+}
+
+fn top_indent(
+ padding: &Sides<Indent>,
+ alignment: AlignmentVertical,
+ cell_height: usize,
+ available: usize,
+) -> usize {
+ let height = available - padding.top.size;
+ let indent = indent_from_top(alignment, height, cell_height);
+
+ indent + padding.top.size
+}
+
+fn indent_from_top(alignment: AlignmentVertical, available: usize, real: usize) -> usize {
+ match alignment {
+ AlignmentVertical::Top => 0,
+ AlignmentVertical::Bottom => available - real,
+ AlignmentVertical::Center => (available - real) / 2,
+ }
+}
+
+fn calculate_indent(
+ alignment: AlignmentHorizontal,
+ text_width: usize,
+ available: usize,
+) -> (usize, usize) {
+ let diff = available - text_width;
+ match alignment {
+ AlignmentHorizontal::Left => (0, diff),
+ AlignmentHorizontal::Right => (diff, 0),
+ AlignmentHorizontal::Center => {
+ let left = diff / 2;
+ let rest = diff - left;
+ (left, rest)
+ }
+ }
+}
+
+fn repeat_char<F: Write>(f: &mut F, c: char, n: usize) -> fmt::Result {
+ for _ in 0..n {
+ f.write_char(c)?;
+ }
+
+ Ok(())
+}
+
+fn print_vertical_char<F: Write>(
+ f: &mut F,
+ cfg: &SpannedConfig,
+ pos: Position,
+ line: usize,
+ count_lines: usize,
+ count_columns: usize,
+) -> fmt::Result {
+ let symbol = match cfg.get_vertical(pos, count_columns) {
+ Some(c) => c,
+ None => return Ok(()),
+ };
+
+ let symbol = cfg
+ .is_overridden_vertical(pos)
+ .then(|| cfg.lookup_vertical_char(pos, line, count_lines))
+ .flatten()
+ .unwrap_or(symbol);
+
+ match cfg.get_vertical_color(pos, count_columns) {
+ Some(clr) => {
+ clr.fmt_prefix(f)?;
+ f.write_char(symbol)?;
+ clr.fmt_suffix(f)?;
+ }
+ None => f.write_char(symbol)?,
+ }
+
+ Ok(())
+}
+
+fn print_margin_top<F: Write>(f: &mut F, cfg: &SpannedConfig, width: usize) -> fmt::Result {
+ let indent = cfg.get_margin().top;
+ let offset = cfg.get_margin_offset().top;
+ let color = cfg.get_margin_color();
+ let color = color.top.as_ref();
+ print_indent_lines(f, &indent, &offset, color, width)
+}
+
+fn print_margin_bottom<F: Write>(f: &mut F, cfg: &SpannedConfig, width: usize) -> fmt::Result {
+ let indent = cfg.get_margin().bottom;
+ let offset = cfg.get_margin_offset().bottom;
+ let color = cfg.get_margin_color();
+ let color = color.bottom.as_ref();
+ print_indent_lines(f, &indent, &offset, color, width)
+}
+
+fn print_margin_left<F: Write>(
+ f: &mut F,
+ cfg: &SpannedConfig,
+ line: usize,
+ height: Option<usize>,
+) -> fmt::Result {
+ let indent = cfg.get_margin().left;
+ let offset = cfg.get_margin_offset().left;
+ let color = cfg.get_margin_color();
+ let color = color.left.as_ref();
+ print_margin_vertical(f, indent, offset, color, line, height)
+}
+
+fn print_margin_right<F: Write>(
+ f: &mut F,
+ cfg: &SpannedConfig,
+ line: usize,
+ height: Option<usize>,
+) -> fmt::Result {
+ let indent = cfg.get_margin().right;
+ let offset = cfg.get_margin_offset().right;
+ let color = cfg.get_margin_color();
+ let color = color.right.as_ref();
+ print_margin_vertical(f, indent, offset, color, line, height)
+}
+
+fn print_margin_vertical<F: Write>(
+ f: &mut F,
+ indent: Indent,
+ offset: Offset,
+ color: Option<&AnsiColor<'_>>,
+ line: usize,
+ height: Option<usize>,
+) -> fmt::Result {
+ if indent.size == 0 {
+ return Ok(());
+ }
+
+ match offset {
+ Offset::Begin(mut offset) => {
+ if let Some(max) = height {
+ offset = cmp::min(offset, max);
+ }
+
+ if line >= offset {
+ print_indent(f, indent.fill, indent.size, color)?;
+ } else {
+ repeat_char(f, ' ', indent.size)?;
+ }
+ }
+ Offset::End(mut offset) => {
+ if let Some(max) = height {
+ offset = cmp::min(offset, max);
+ let pos = max - offset;
+
+ if line >= pos {
+ repeat_char(f, ' ', indent.size)?;
+ } else {
+ print_indent(f, indent.fill, indent.size, color)?;
+ }
+ } else {
+ print_indent(f, indent.fill, indent.size, color)?;
+ }
+ }
+ }
+
+ Ok(())
+}
+
+fn print_indent_lines<F: Write>(
+ f: &mut F,
+ indent: &Indent,
+ offset: &Offset,
+ color: Option<&AnsiColor<'_>>,
+ width: usize,
+) -> fmt::Result {
+ if indent.size == 0 {
+ return Ok(());
+ }
+
+ let (start_offset, end_offset) = match offset {
+ Offset::Begin(start) => (*start, 0),
+ Offset::End(end) => (0, *end),
+ };
+
+ let start_offset = std::cmp::min(start_offset, width);
+ let end_offset = std::cmp::min(end_offset, width);
+ let indent_size = width - start_offset - end_offset;
+
+ for i in 0..indent.size {
+ if start_offset > 0 {
+ repeat_char(f, ' ', start_offset)?;
+ }
+
+ if indent_size > 0 {
+ print_indent(f, indent.fill, indent_size, color)?;
+ }
+
+ if end_offset > 0 {
+ repeat_char(f, ' ', end_offset)?;
+ }
+
+ if i + 1 != indent.size {
+ f.write_char('\n')?;
+ }
+ }
+
+ Ok(())
+}
+
+fn print_padding<F: Write>(f: &mut F, pad: &Indent, color: Option<&AnsiColor<'_>>) -> fmt::Result {
+ print_indent(f, pad.fill, pad.size, color)
+}
+
+fn print_padding_n<F: Write>(
+ f: &mut F,
+ pad: &Indent,
+ color: Option<&AnsiColor<'_>>,
+ n: usize,
+) -> fmt::Result {
+ print_indent(f, pad.fill, n, color)
+}
+
+fn print_indent<F: Write>(
+ f: &mut F,
+ c: char,
+ n: usize,
+ color: Option<&AnsiColor<'_>>,
+) -> fmt::Result {
+ if n == 0 {
+ return Ok(());
+ }
+
+ match color {
+ Some(color) => {
+ color.fmt_prefix(f)?;
+ repeat_char(f, c, n)?;
+ color.fmt_suffix(f)
+ }
+ None => repeat_char(f, c, n),
+ }
+}
+
+fn range_width(
+ cfg: &SpannedConfig,
+ d: impl Dimension,
+ start: usize,
+ end: usize,
+ max: usize,
+) -> usize {
+ let count_borders = count_verticals_in_range(cfg, start, end, max);
+ let range_width = (start..end).map(|col| d.get_width(col)).sum::<usize>();
+
+ count_borders + range_width
+}
+
+fn range_height(
+ cfg: &SpannedConfig,
+ d: impl Dimension,
+ from: usize,
+ end: usize,
+ max: usize,
+) -> usize {
+ let count_borders = count_horizontals_in_range(cfg, from, end, max);
+ let range_width = (from..end).map(|col| d.get_height(col)).sum::<usize>();
+
+ count_borders + range_width
+}
+
+fn count_horizontals_in_range(cfg: &SpannedConfig, from: usize, end: usize, max: usize) -> usize {
+ (from + 1..end)
+ .map(|i| cfg.has_horizontal(i, max) as usize)
+ .sum()
+}
+
+fn count_verticals_in_range(cfg: &SpannedConfig, start: usize, end: usize, max: usize) -> usize {
+ (start..end)
+ .skip(1)
+ .map(|i| cfg.has_vertical(i, max) as usize)
+ .sum()
+}
+
+fn closest_visible_row(cfg: &SpannedConfig, mut pos: Position) -> Option<usize> {
+ loop {
+ if cfg.is_cell_visible(pos) {
+ return Some(pos.0);
+ }
+
+ if pos.0 == 0 {
+ return None;
+ }
+
+ pos.0 -= 1;
+ }
+}
+
+fn convert_count_rows(row: usize, is_last: bool) -> usize {
+ if is_last {
+ row + 1
+ } else {
+ row + 2
+ }
+}
+
+/// Trims a string.
+fn string_trim(text: &str) -> Cow<'_, str> {
+ #[cfg(feature = "color")]
+ {
+ ansi_str::AnsiStr::ansi_trim(text)
+ }
+
+ #[cfg(not(feature = "color"))]
+ {
+ text.trim().into()
+ }
+}
+
+fn total_width<D: Dimension>(cfg: &SpannedConfig, dimension: &D, count_columns: usize) -> usize {
+ (0..count_columns)
+ .map(|i| dimension.get_width(i))
+ .sum::<usize>()
+ + cfg.count_vertical(count_columns)
+}
+
+fn total_height<D: Dimension>(cfg: &SpannedConfig, dimension: &D, count_rows: usize) -> usize {
+ (0..count_rows)
+ .map(|i| dimension.get_height(i))
+ .sum::<usize>()
+ + cfg.count_horizontal(count_rows)
+}
+
+fn count_empty_lines(cell: &str) -> (usize, usize, usize) {
+ let mut len = 0;
+ let mut top = 0;
+ let mut bottom = 0;
+ let mut top_check = true;
+
+ for line in get_lines(cell) {
+ let is_empty = line.trim().is_empty();
+ if top_check {
+ if is_empty {
+ top += 1;
+ } else {
+ len = 1;
+ top_check = false;
+ }
+
+ continue;
+ }
+
+ if is_empty {
+ bottom += 1;
+ } else {
+ len += bottom + 1;
+ bottom = 0;
+ }
+ }
+
+ (len, top, bottom)
+}
+
+fn get_text_width(text: &str, trim: bool) -> usize {
+ if trim {
+ get_lines(text)
+ .map(|line| string_width(line.trim()))
+ .max()
+ .unwrap_or(0)
+ } else {
+ string_width_multiline(text)
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ // use crate::util::string_width;
+
+ use super::*;
+
+ // #[test]
+ // fn horizontal_alignment_test() {
+ // use std::fmt;
+
+ // struct F<'a>(&'a str, AlignmentHorizontal, usize);
+
+ // impl fmt::Display for F<'_> {
+ // fn fmt(&self, f: &mut impl fmt::Write) -> fmt::Result {
+ // let (left, right) = calculate_indent(self.1, string_width(self.0), self.2);
+ // print_text_formatted(f, &self.0, 4, Option::<&AnsiColor<'_>>::None)
+ // }
+ // }
+
+ // assert_eq!(F("AAA", AlignmentHorizontal::Right, 4).to_string(), " AAA");
+ // assert_eq!(F("AAA", AlignmentHorizontal::Left, 4).to_string(), "AAA ");
+ // assert_eq!(F("AAA", AlignmentHorizontal::Center, 4).to_string(), "AAA ");
+ // assert_eq!(F("🎩", AlignmentHorizontal::Center, 4).to_string(), " 🎩 ");
+ // assert_eq!(F("🎩", AlignmentHorizontal::Center, 3).to_string(), "🎩 ");
+
+ // #[cfg(feature = "color")]
+ // {
+ // use owo_colors::OwoColorize;
+ // let text = "Colored Text".red().to_string();
+ // assert_eq!(
+ // F(&text, AlignmentHorizontal::Center, 15).to_string(),
+ // format!(" {} ", text)
+ // );
+ // }
+ // }
+
+ #[test]
+ fn vertical_alignment_test() {
+ use AlignmentVertical::*;
+
+ assert_eq!(indent_from_top(Bottom, 1, 1), 0);
+ assert_eq!(indent_from_top(Top, 1, 1), 0);
+ assert_eq!(indent_from_top(Center, 1, 1), 0);
+ assert_eq!(indent_from_top(Bottom, 3, 1), 2);
+ assert_eq!(indent_from_top(Top, 3, 1), 0);
+ assert_eq!(indent_from_top(Center, 3, 1), 1);
+ assert_eq!(indent_from_top(Center, 4, 1), 1);
+ }
+
+ #[test]
+ fn count_empty_lines_test() {
+ assert_eq!(count_empty_lines("\n\nsome text\n\n\n"), (1, 2, 3));
+ assert_eq!(count_empty_lines("\n\nsome\ntext\n\n\n"), (2, 2, 3));
+ assert_eq!(count_empty_lines("\n\nsome\nsome\ntext\n\n\n"), (3, 2, 3));
+ assert_eq!(count_empty_lines("\n\n\n\n"), (0, 5, 0));
+ }
+}
diff --git a/vendor/papergrid/src/grid/mod.rs b/vendor/papergrid/src/grid/mod.rs
new file mode 100644
index 000000000..ba3db33bd
--- /dev/null
+++ b/vendor/papergrid/src/grid/mod.rs
@@ -0,0 +1,9 @@
+//! Module contains a list of backends for pretty print tables.
+
+pub mod compact;
+
+#[cfg(feature = "std")]
+pub mod iterable;
+
+#[cfg(feature = "std")]
+pub mod peekable;
diff --git a/vendor/papergrid/src/grid/peekable.rs b/vendor/papergrid/src/grid/peekable.rs
new file mode 100644
index 000000000..ee7877293
--- /dev/null
+++ b/vendor/papergrid/src/grid/peekable.rs
@@ -0,0 +1,976 @@
+//! The module contains a [`PeekableGrid`] structure.
+
+use core::borrow::Borrow;
+use std::{
+ borrow::Cow,
+ cmp,
+ fmt::{self, Write},
+};
+
+use crate::{
+ color::{AnsiColor, Color},
+ colors::Colors,
+ config::spanned::{Formatting, Offset, SpannedConfig},
+ config::{AlignmentHorizontal, AlignmentVertical, Indent, Position, Sides},
+ dimension::Dimension,
+ records::{ExactRecords, PeekableRecords, Records},
+ util::string::string_width,
+};
+
+/// Grid provides a set of methods for building a text-based table.
+#[derive(Debug, Clone)]
+pub struct PeekableGrid<R, G, D, C> {
+ records: R,
+ config: G,
+ dimension: D,
+ colors: C,
+}
+
+impl<R, G, D, C> PeekableGrid<R, G, D, C> {
+ /// The new method creates a grid instance with default styles.
+ pub fn new(records: R, config: G, dimension: D, colors: C) -> Self {
+ PeekableGrid {
+ records,
+ config,
+ dimension,
+ colors,
+ }
+ }
+}
+
+impl<R, G, D, C> PeekableGrid<R, G, D, C> {
+ /// Builds a table.
+ pub fn build<F>(self, mut f: F) -> fmt::Result
+ where
+ R: Records + PeekableRecords + ExactRecords,
+ D: Dimension,
+ C: Colors,
+ G: Borrow<SpannedConfig>,
+ F: Write,
+ {
+ if self.records.count_columns() == 0 || self.records.hint_count_rows() == Some(0) {
+ return Ok(());
+ }
+
+ let config = self.config.borrow();
+ print_grid(&mut f, self.records, config, &self.dimension, &self.colors)
+ }
+
+ /// Builds a table into string.
+ ///
+ /// Notice that it consumes self.
+ #[allow(clippy::inherent_to_string)]
+ pub fn to_string(self) -> String
+ where
+ R: Records + PeekableRecords + ExactRecords,
+ D: Dimension,
+ G: Borrow<SpannedConfig>,
+ C: Colors,
+ {
+ let mut buf = String::new();
+ self.build(&mut buf).expect("It's guaranteed to never happen otherwise it's considered an stdlib error or impl error");
+ buf
+ }
+}
+
+fn print_grid<F: Write, R: Records + PeekableRecords + ExactRecords, D: Dimension, C: Colors>(
+ f: &mut F,
+ records: R,
+ cfg: &SpannedConfig,
+ dimension: &D,
+ colors: &C,
+) -> fmt::Result {
+ if cfg.has_column_spans() || cfg.has_row_spans() {
+ build_grid_spanned(f, &records, cfg, dimension, colors)
+ } else {
+ build_grid(f, &records, cfg, dimension, colors)
+ }
+}
+
+fn build_grid<F: Write, R: Records + PeekableRecords + ExactRecords, D: Dimension, C: Colors>(
+ f: &mut F,
+ records: &R,
+ cfg: &SpannedConfig,
+ dimension: &D,
+ colors: &C,
+) -> fmt::Result {
+ let shape = (records.count_rows(), records.count_columns());
+
+ let total_width = total_width(cfg, dimension, shape.1);
+ let total_width_with_margin =
+ total_width + cfg.get_margin().left.size + cfg.get_margin().right.size;
+
+ let total_height = total_height(cfg, dimension, shape.0);
+
+ if cfg.get_margin().top.size > 0 {
+ print_margin_top(f, cfg, total_width_with_margin)?;
+ f.write_char('\n')?;
+ }
+
+ let mut table_line = 0;
+ let mut prev_empty_horizontal = false;
+ for row in 0..shape.0 {
+ let height = dimension.get_height(row);
+
+ if cfg.has_horizontal(row, shape.0) {
+ if prev_empty_horizontal {
+ f.write_char('\n')?;
+ }
+
+ print_margin_left(f, cfg, table_line, total_height)?;
+ print_split_line(f, cfg, dimension, row, shape)?;
+ print_margin_right(f, cfg, table_line, total_height)?;
+
+ if height > 0 {
+ f.write_char('\n')?;
+ prev_empty_horizontal = false;
+ } else {
+ prev_empty_horizontal = true;
+ }
+
+ table_line += 1;
+ } else if height > 0 && prev_empty_horizontal {
+ f.write_char('\n')?;
+ prev_empty_horizontal = false;
+ }
+
+ for i in 0..height {
+ print_margin_left(f, cfg, table_line, total_height)?;
+
+ for col in 0..records.count_columns() {
+ print_vertical_char(f, cfg, (row, col), i, height, shape.1)?;
+
+ let width = dimension.get_width(col);
+ print_cell_line(f, records, cfg, colors, width, height, (row, col), i)?;
+
+ let is_last_column = col + 1 == records.count_columns();
+ if is_last_column {
+ print_vertical_char(f, cfg, (row, col + 1), i, height, shape.1)?;
+ }
+ }
+
+ print_margin_right(f, cfg, table_line, total_height)?;
+
+ let is_last_line = i + 1 == height;
+ let is_last_row = row + 1 == records.count_rows();
+ if !(is_last_line && is_last_row) {
+ f.write_char('\n')?;
+ }
+
+ table_line += 1;
+ }
+ }
+
+ if cfg.has_horizontal(shape.0, shape.0) {
+ f.write_char('\n')?;
+ print_margin_left(f, cfg, table_line, total_height)?;
+ print_split_line(f, cfg, dimension, records.count_rows(), shape)?;
+ print_margin_right(f, cfg, table_line, total_height)?;
+ }
+
+ if cfg.get_margin().bottom.size > 0 {
+ f.write_char('\n')?;
+ print_margin_bottom(f, cfg, total_width_with_margin)?;
+ }
+
+ Ok(())
+}
+
+fn print_split_line<F: Write, D: Dimension>(
+ f: &mut F,
+ cfg: &SpannedConfig,
+ dimension: &D,
+ row: usize,
+ shape: (usize, usize),
+) -> fmt::Result {
+ let mut used_color = None;
+ print_vertical_intersection(f, cfg, (row, 0), shape, &mut used_color)?;
+
+ for col in 0..shape.1 {
+ let width = dimension.get_width(col);
+
+ // general case
+ if width > 0 {
+ let pos = (row, col);
+ let main = cfg.get_horizontal(pos, shape.0);
+ match main {
+ Some(c) => {
+ let clr = cfg.get_horizontal_color(pos, shape.0);
+ prepare_coloring(f, clr, &mut used_color)?;
+ print_horizontal_border(f, cfg, pos, width, c, &used_color)?;
+ }
+ None => repeat_char(f, ' ', width)?,
+ }
+ }
+
+ print_vertical_intersection(f, cfg, (row, col + 1), shape, &mut used_color)?;
+ }
+
+ if let Some(clr) = used_color.take() {
+ clr.fmt_suffix(f)?;
+ }
+
+ Ok(())
+}
+
+fn print_vertical_intersection<'a, F: fmt::Write>(
+ f: &mut F,
+ cfg: &'a SpannedConfig,
+ pos: Position,
+ shape: (usize, usize),
+ used_color: &mut Option<&'a AnsiColor<'static>>,
+) -> fmt::Result {
+ match cfg.get_intersection(pos, shape) {
+ Some(c) => {
+ let clr = cfg.get_intersection_color(pos, shape);
+ prepare_coloring(f, clr, used_color)?;
+ f.write_char(c)
+ }
+ None => Ok(()),
+ }
+}
+
+fn prepare_coloring<'a, 'b, F: Write>(
+ f: &mut F,
+ clr: Option<&'a AnsiColor<'b>>,
+ used_color: &mut Option<&'a AnsiColor<'b>>,
+) -> fmt::Result {
+ match clr {
+ Some(clr) => match used_color.as_mut() {
+ Some(used_clr) => {
+ if **used_clr != *clr {
+ used_clr.fmt_suffix(f)?;
+ clr.fmt_prefix(f)?;
+ *used_clr = clr;
+ }
+ }
+ None => {
+ clr.fmt_prefix(f)?;
+ *used_color = Some(clr);
+ }
+ },
+ None => {
+ if let Some(clr) = used_color.take() {
+ clr.fmt_suffix(f)?
+ }
+ }
+ }
+
+ Ok(())
+}
+
+fn print_vertical_char<F: Write>(
+ f: &mut F,
+ cfg: &SpannedConfig,
+ pos: Position,
+ line: usize,
+ count_lines: usize,
+ count_columns: usize,
+) -> fmt::Result {
+ let symbol = match cfg.get_vertical(pos, count_columns) {
+ Some(c) => c,
+ None => return Ok(()),
+ };
+
+ let symbol = cfg
+ .is_overridden_vertical(pos)
+ .then(|| cfg.lookup_vertical_char(pos, line, count_lines))
+ .flatten()
+ .unwrap_or(symbol);
+
+ match cfg.get_vertical_color(pos, count_columns) {
+ Some(clr) => {
+ clr.fmt_prefix(f)?;
+ f.write_char(symbol)?;
+ clr.fmt_suffix(f)?;
+ }
+ None => f.write_char(symbol)?,
+ }
+
+ Ok(())
+}
+
+fn build_grid_spanned<
+ F: Write,
+ R: Records + PeekableRecords + ExactRecords,
+ D: Dimension,
+ C: Colors,
+>(
+ f: &mut F,
+ records: &R,
+ cfg: &SpannedConfig,
+ dims: &D,
+ colors: &C,
+) -> fmt::Result {
+ let shape = (records.count_rows(), records.count_columns());
+
+ let total_width = total_width(cfg, dims, shape.1);
+ let total_width_with_margin =
+ total_width + cfg.get_margin().left.size + cfg.get_margin().right.size;
+
+ let total_height = total_height(cfg, dims, shape.0);
+
+ if cfg.get_margin().top.size > 0 {
+ print_margin_top(f, cfg, total_width_with_margin)?;
+ f.write_char('\n')?;
+ }
+
+ let mut table_line = 0;
+ let mut prev_empty_horizontal = false;
+ for row in 0..records.count_rows() {
+ let count_lines = dims.get_height(row);
+
+ if cfg.has_horizontal(row, shape.0) {
+ if prev_empty_horizontal {
+ f.write_char('\n')?;
+ }
+
+ print_margin_left(f, cfg, table_line, total_height)?;
+ print_split_line_spanned(f, records, cfg, dims, colors, row, shape)?;
+ print_margin_right(f, cfg, table_line, total_height)?;
+
+ if count_lines > 0 {
+ f.write_char('\n')?;
+ prev_empty_horizontal = false;
+ } else {
+ prev_empty_horizontal = true;
+ }
+
+ table_line += 1;
+ } else if count_lines > 0 && prev_empty_horizontal {
+ f.write_char('\n')?;
+ prev_empty_horizontal = false;
+ }
+
+ for i in 0..count_lines {
+ print_margin_left(f, cfg, table_line, total_height)?;
+
+ for col in 0..records.count_columns() {
+ if cfg.is_cell_covered_by_both_spans((row, col)) {
+ continue;
+ }
+
+ if cfg.is_cell_covered_by_column_span((row, col)) {
+ let is_last_column = col + 1 == records.count_columns();
+ if is_last_column {
+ print_vertical_char(f, cfg, (row, col + 1), i, count_lines, shape.1)?;
+ }
+
+ continue;
+ }
+
+ print_vertical_char(f, cfg, (row, col), i, count_lines, shape.1)?;
+
+ if cfg.is_cell_covered_by_row_span((row, col)) {
+ // means it's part of other a spanned cell
+ // so. we just need to use line from other cell.
+ let original_row = closest_visible_row(cfg, (row, col)).unwrap();
+
+ // considering that the content will be printed instead horizontal lines so we can skip some lines.
+ let mut skip_lines = (original_row..row)
+ .map(|i| dims.get_height(i))
+ .sum::<usize>();
+
+ skip_lines += (original_row + 1..=row)
+ .map(|row| cfg.has_horizontal(row, shape.0) as usize)
+ .sum::<usize>();
+
+ let line = i + skip_lines;
+ let pos = (original_row, col);
+
+ let width = get_cell_width(cfg, dims, pos, shape.1);
+ let height = get_cell_height(cfg, dims, pos, shape.0);
+
+ print_cell_line(f, records, cfg, colors, width, height, pos, line)?;
+ } else {
+ let width = get_cell_width(cfg, dims, (row, col), shape.1);
+ let height = get_cell_height(cfg, dims, (row, col), shape.0);
+ print_cell_line(f, records, cfg, colors, width, height, (row, col), i)?;
+ }
+
+ let is_last_column = col + 1 == records.count_columns();
+ if is_last_column {
+ print_vertical_char(f, cfg, (row, col + 1), i, count_lines, shape.1)?;
+ }
+ }
+
+ print_margin_right(f, cfg, table_line, total_height)?;
+
+ let is_last_line = i + 1 == count_lines;
+ let is_last_row = row + 1 == records.count_rows();
+ if !(is_last_line && is_last_row) {
+ f.write_char('\n')?;
+ }
+
+ table_line += 1;
+ }
+ }
+
+ if cfg.has_horizontal(shape.0, shape.0) {
+ f.write_char('\n')?;
+ print_margin_left(f, cfg, table_line, total_height)?;
+ print_split_line(f, cfg, dims, records.count_rows(), shape)?;
+ print_margin_right(f, cfg, table_line, total_height)?;
+ }
+
+ if cfg.get_margin().bottom.size > 0 {
+ f.write_char('\n')?;
+ print_margin_bottom(f, cfg, total_width_with_margin)?;
+ }
+
+ Ok(())
+}
+
+fn print_split_line_spanned<
+ F: Write,
+ R: Records + ExactRecords + PeekableRecords,
+ D: Dimension,
+ C: Colors,
+>(
+ f: &mut F,
+ records: &R,
+ cfg: &SpannedConfig,
+ dims: &D,
+ colors: &C,
+ row: usize,
+ shape: (usize, usize),
+) -> fmt::Result {
+ let mut used_color = None;
+ print_vertical_intersection(f, cfg, (row, 0), shape, &mut used_color)?;
+
+ for col in 0..shape.1 {
+ let pos = (row, col);
+ if cfg.is_cell_covered_by_both_spans(pos) {
+ continue;
+ }
+
+ if cfg.is_cell_covered_by_row_span(pos) {
+ // means it's part of other a spanned cell
+ // so. we just need to use line from other cell.
+
+ let original_row = closest_visible_row(cfg, (row, col)).unwrap();
+
+ // considering that the content will be printed instead horizontal lines so we can skip some lines.
+ let mut skip_lines = (original_row..row)
+ .map(|i| dims.get_height(i))
+ .sum::<usize>();
+
+ // skip horizontal lines
+ if row > 0 {
+ skip_lines += (original_row..row - 1)
+ .map(|row| cfg.has_horizontal(row + 1, shape.0) as usize)
+ .sum::<usize>();
+ }
+
+ let pos = (original_row, col);
+ let height = get_cell_height(cfg, dims, pos, shape.0);
+ let width = get_cell_width(cfg, dims, pos, shape.1);
+ let line = skip_lines;
+
+ print_cell_line(f, records, cfg, colors, width, height, pos, line)?;
+
+ // We need to use a correct right split char.
+ let mut col = col;
+ if let Some(span) = cfg.get_column_span(pos) {
+ col += span - 1;
+ }
+
+ print_vertical_intersection(f, cfg, (row, col + 1), shape, &mut used_color)?;
+
+ continue;
+ }
+
+ let width = dims.get_width(col);
+ if width > 0 {
+ // general case
+ let main = cfg.get_horizontal(pos, shape.0);
+ match main {
+ Some(c) => {
+ let clr = cfg.get_horizontal_color(pos, shape.0);
+ prepare_coloring(f, clr, &mut used_color)?;
+ print_horizontal_border(f, cfg, pos, width, c, &used_color)?;
+ }
+ None => repeat_char(f, ' ', width)?,
+ }
+ }
+
+ print_vertical_intersection(f, cfg, (row, col + 1), shape, &mut used_color)?;
+ }
+
+ if let Some(clr) = used_color {
+ clr.fmt_suffix(f)?;
+ }
+
+ Ok(())
+}
+
+fn print_horizontal_border<F: Write>(
+ f: &mut F,
+ cfg: &SpannedConfig,
+ pos: Position,
+ width: usize,
+ c: char,
+ used_color: &Option<&AnsiColor<'static>>,
+) -> fmt::Result {
+ if !cfg.is_overridden_horizontal(pos) {
+ return repeat_char(f, c, width);
+ }
+
+ for i in 0..width {
+ let c = cfg.lookup_horizontal_char(pos, i, width).unwrap_or(c);
+ match cfg.lookup_horizontal_color(pos, i, width) {
+ Some(color) => match used_color {
+ Some(clr) => {
+ clr.fmt_suffix(f)?;
+ color.fmt_prefix(f)?;
+ f.write_char(c)?;
+ color.fmt_suffix(f)?;
+ clr.fmt_prefix(f)?;
+ }
+ None => {
+ color.fmt_prefix(f)?;
+ f.write_char(c)?;
+ color.fmt_suffix(f)?;
+ }
+ },
+ _ => f.write_char(c)?,
+ }
+ }
+
+ Ok(())
+}
+
+#[allow(clippy::too_many_arguments)]
+fn print_cell_line<F: Write, R: Records + PeekableRecords + ExactRecords, C: Colors>(
+ f: &mut F,
+ records: &R,
+ cfg: &SpannedConfig,
+ colors: &C,
+ width: usize,
+ height: usize,
+ pos: Position,
+ line: usize,
+) -> fmt::Result {
+ let entity = pos.into();
+
+ let mut cell_height = records.count_lines(pos);
+ let formatting = *cfg.get_formatting(entity);
+ if formatting.vertical_trim {
+ cell_height -=
+ count_empty_lines_at_start(records, pos) + count_empty_lines_at_end(records, pos);
+ }
+
+ if cell_height > height {
+ // it may happen if the height estimation decide so
+ cell_height = height;
+ }
+
+ let pad = cfg.get_padding(entity);
+ let pad_color = cfg.get_padding_color(entity);
+ let alignment = cfg.get_alignment_vertical(entity);
+ let indent = top_indent(&pad, *alignment, cell_height, height);
+ if indent > line {
+ return print_indent(f, pad.top.fill, width, pad_color.top.as_ref());
+ }
+
+ let mut index = line - indent;
+ let cell_has_this_line = cell_height > index;
+ if !cell_has_this_line {
+ // happens when other cells have bigger height
+ return print_indent(f, pad.bottom.fill, width, pad_color.bottom.as_ref());
+ }
+
+ if formatting.vertical_trim {
+ let empty_lines = count_empty_lines_at_start(records, pos);
+ index += empty_lines;
+
+ if index > records.count_lines(pos) {
+ return print_indent(f, pad.top.fill, width, pad_color.top.as_ref());
+ }
+ }
+
+ print_indent(f, pad.left.fill, pad.left.size, pad_color.left.as_ref())?;
+
+ let width = width - pad.left.size - pad.right.size;
+ let alignment = *cfg.get_alignment_horizontal(entity);
+ let justification = (
+ cfg.get_justification(entity),
+ cfg.get_justification_color(entity),
+ );
+ let color = colors.get_color(pos);
+ print_line(
+ f,
+ records,
+ pos,
+ index,
+ alignment,
+ formatting,
+ color,
+ justification,
+ width,
+ )?;
+
+ print_indent(f, pad.right.fill, pad.right.size, pad_color.right.as_ref())?;
+
+ Ok(())
+}
+
+#[allow(clippy::too_many_arguments)]
+fn print_line<F: Write, R: Records + PeekableRecords, C: Color>(
+ f: &mut F,
+ records: &R,
+ pos: Position,
+ index: usize,
+ alignment: AlignmentHorizontal,
+ formatting: Formatting,
+ color: Option<C>,
+ justification: (char, Option<&AnsiColor<'_>>),
+ available: usize,
+) -> fmt::Result {
+ let line = records.get_line(pos, index);
+ let (line, line_width) = if formatting.horizontal_trim {
+ let line = string_trim(line);
+ let width = string_width(&line);
+ (line, width)
+ } else {
+ let width = records.get_line_width(pos, index);
+ (Cow::Borrowed(line), width)
+ };
+
+ if formatting.allow_lines_alignment {
+ let (left, right) = calculate_indent(alignment, line_width, available);
+ return print_text_with_pad(f, &line, color, justification, left, right);
+ }
+
+ let cell_width = if formatting.horizontal_trim {
+ (0..records.count_lines(pos))
+ .map(|i| records.get_line(pos, i))
+ .map(|line| string_width(line.trim()))
+ .max()
+ .unwrap_or_default()
+ } else {
+ records.get_width(pos)
+ };
+
+ let (left, right) = calculate_indent(alignment, cell_width, available);
+ print_text_with_pad(f, &line, color, justification, left, right)?;
+
+ // todo: remove me
+ let rest_width = cell_width - line_width;
+ repeat_char(f, ' ', rest_width)?;
+
+ Ok(())
+}
+
+fn print_text_with_pad<F: Write, C: Color>(
+ f: &mut F,
+ text: &str,
+ color: Option<C>,
+ justification: (char, Option<&AnsiColor<'_>>),
+ left: usize,
+ right: usize,
+) -> fmt::Result {
+ print_indent(f, justification.0, left, justification.1)?;
+ print_text(f, text, color)?;
+ print_indent(f, justification.0, right, justification.1)?;
+ Ok(())
+}
+
+fn print_text<F: Write, C: Color>(f: &mut F, text: &str, clr: Option<C>) -> fmt::Result {
+ match clr {
+ Some(color) => {
+ color.fmt_prefix(f)?;
+ f.write_str(text)?;
+ color.fmt_suffix(f)
+ }
+ None => f.write_str(text),
+ }
+}
+
+fn top_indent(
+ pad: &Sides<Indent>,
+ alignment: AlignmentVertical,
+ cell_height: usize,
+ available: usize,
+) -> usize {
+ let height = available - pad.top.size;
+ let indent = indent_from_top(alignment, height, cell_height);
+
+ indent + pad.top.size
+}
+
+fn indent_from_top(alignment: AlignmentVertical, available: usize, real: usize) -> usize {
+ match alignment {
+ AlignmentVertical::Top => 0,
+ AlignmentVertical::Bottom => available - real,
+ AlignmentVertical::Center => (available - real) / 2,
+ }
+}
+
+fn calculate_indent(
+ alignment: AlignmentHorizontal,
+ text_width: usize,
+ available: usize,
+) -> (usize, usize) {
+ let diff = available - text_width;
+ match alignment {
+ AlignmentHorizontal::Left => (0, diff),
+ AlignmentHorizontal::Right => (diff, 0),
+ AlignmentHorizontal::Center => {
+ let left = diff / 2;
+ let rest = diff - left;
+ (left, rest)
+ }
+ }
+}
+
+fn repeat_char<F: Write>(f: &mut F, c: char, n: usize) -> fmt::Result {
+ for _ in 0..n {
+ f.write_char(c)?;
+ }
+
+ Ok(())
+}
+
+fn count_empty_lines_at_end<R>(records: &R, pos: Position) -> usize
+where
+ R: Records + PeekableRecords,
+{
+ (0..records.count_lines(pos))
+ .map(|i| records.get_line(pos, i))
+ .rev()
+ .take_while(|l| l.trim().is_empty())
+ .count()
+}
+
+fn count_empty_lines_at_start<R>(records: &R, pos: Position) -> usize
+where
+ R: Records + PeekableRecords,
+{
+ (0..records.count_lines(pos))
+ .map(|i| records.get_line(pos, i))
+ .take_while(|s| s.trim().is_empty())
+ .count()
+}
+
+fn total_width<D: Dimension>(cfg: &SpannedConfig, dimension: &D, count_columns: usize) -> usize {
+ (0..count_columns)
+ .map(|i| dimension.get_width(i))
+ .sum::<usize>()
+ + cfg.count_vertical(count_columns)
+}
+
+fn total_height<D: Dimension>(cfg: &SpannedConfig, dimension: &D, count_rows: usize) -> usize {
+ (0..count_rows)
+ .map(|i| dimension.get_height(i))
+ .sum::<usize>()
+ + cfg.count_horizontal(count_rows)
+}
+
+fn print_margin_top<F: Write>(f: &mut F, cfg: &SpannedConfig, width: usize) -> fmt::Result {
+ let indent = cfg.get_margin().top;
+ let offset = cfg.get_margin_offset().top;
+ let color = cfg.get_margin_color();
+ let color = color.top.as_ref();
+ print_indent_lines(f, &indent, &offset, color, width)
+}
+
+fn print_margin_bottom<F: Write>(f: &mut F, cfg: &SpannedConfig, width: usize) -> fmt::Result {
+ let indent = cfg.get_margin().bottom;
+ let offset = cfg.get_margin_offset().bottom;
+ let color = cfg.get_margin_color();
+ let color = color.bottom.as_ref();
+ print_indent_lines(f, &indent, &offset, color, width)
+}
+
+fn print_margin_left<F: Write>(
+ f: &mut F,
+ cfg: &SpannedConfig,
+ line: usize,
+ height: usize,
+) -> fmt::Result {
+ let indent = cfg.get_margin().left;
+ let offset = cfg.get_margin_offset().left;
+ let color = cfg.get_margin_color();
+ let color = color.left.as_ref();
+ print_margin_vertical(f, indent, offset, color, line, height)
+}
+
+fn print_margin_right<F: Write>(
+ f: &mut F,
+ cfg: &SpannedConfig,
+ line: usize,
+ height: usize,
+) -> fmt::Result {
+ let indent = cfg.get_margin().right;
+ let offset = cfg.get_margin_offset().right;
+ let color = cfg.get_margin_color();
+ let color = color.right.as_ref();
+ print_margin_vertical(f, indent, offset, color, line, height)
+}
+
+fn print_margin_vertical<F: Write>(
+ f: &mut F,
+ indent: Indent,
+ offset: Offset,
+ color: Option<&AnsiColor<'_>>,
+ line: usize,
+ height: usize,
+) -> fmt::Result {
+ if indent.size == 0 {
+ return Ok(());
+ }
+
+ match offset {
+ Offset::Begin(offset) => {
+ let offset = cmp::min(offset, height);
+ if line >= offset {
+ print_indent(f, indent.fill, indent.size, color)?;
+ } else {
+ repeat_char(f, ' ', indent.size)?;
+ }
+ }
+ Offset::End(offset) => {
+ let offset = cmp::min(offset, height);
+ let pos = height - offset;
+
+ if line >= pos {
+ repeat_char(f, ' ', indent.size)?;
+ } else {
+ print_indent(f, indent.fill, indent.size, color)?;
+ }
+ }
+ }
+
+ Ok(())
+}
+
+fn print_indent_lines<F: Write>(
+ f: &mut F,
+ indent: &Indent,
+ offset: &Offset,
+ color: Option<&AnsiColor<'_>>,
+ width: usize,
+) -> fmt::Result {
+ if indent.size == 0 {
+ return Ok(());
+ }
+
+ let (start_offset, end_offset) = match offset {
+ Offset::Begin(start) => (*start, 0),
+ Offset::End(end) => (0, *end),
+ };
+
+ let start_offset = std::cmp::min(start_offset, width);
+ let end_offset = std::cmp::min(end_offset, width);
+ let indent_size = width - start_offset - end_offset;
+
+ for i in 0..indent.size {
+ if start_offset > 0 {
+ repeat_char(f, ' ', start_offset)?;
+ }
+
+ if indent_size > 0 {
+ print_indent(f, indent.fill, indent_size, color)?;
+ }
+
+ if end_offset > 0 {
+ repeat_char(f, ' ', end_offset)?;
+ }
+
+ if i + 1 != indent.size {
+ f.write_char('\n')?;
+ }
+ }
+
+ Ok(())
+}
+
+fn print_indent<F: Write, C: Color>(f: &mut F, c: char, n: usize, color: Option<C>) -> fmt::Result {
+ if n == 0 {
+ return Ok(());
+ }
+
+ match color {
+ Some(color) => {
+ color.fmt_prefix(f)?;
+ repeat_char(f, c, n)?;
+ color.fmt_suffix(f)
+ }
+ None => repeat_char(f, c, n),
+ }
+}
+
+fn get_cell_width<D: Dimension>(cfg: &SpannedConfig, dims: &D, pos: Position, max: usize) -> usize {
+ match cfg.get_column_span(pos) {
+ Some(span) => {
+ let start = pos.1;
+ let end = pos.1 + span;
+ range_width(dims, start, end) + count_verticals_range(cfg, start, end, max)
+ }
+ None => dims.get_width(pos.1),
+ }
+}
+
+fn range_width<D: Dimension>(dims: &D, start: usize, end: usize) -> usize {
+ (start..end).map(|col| dims.get_width(col)).sum::<usize>()
+}
+
+fn count_verticals_range(cfg: &SpannedConfig, start: usize, end: usize, max: usize) -> usize {
+ (start + 1..end)
+ .map(|i| cfg.has_vertical(i, max) as usize)
+ .sum()
+}
+
+fn get_cell_height<D: Dimension>(
+ cfg: &SpannedConfig,
+ dims: &D,
+ pos: Position,
+ max: usize,
+) -> usize {
+ match cfg.get_row_span(pos) {
+ Some(span) => {
+ let start = pos.0;
+ let end = pos.0 + span;
+ range_height(dims, start, end) + count_horizontals_range(cfg, start, end, max)
+ }
+ None => dims.get_height(pos.0),
+ }
+}
+
+fn range_height<D: Dimension>(dims: &D, start: usize, end: usize) -> usize {
+ (start..end).map(|col| dims.get_height(col)).sum::<usize>()
+}
+
+fn count_horizontals_range(cfg: &SpannedConfig, start: usize, end: usize, max: usize) -> usize {
+ (start + 1..end)
+ .map(|i| cfg.has_horizontal(i, max) as usize)
+ .sum()
+}
+
+fn closest_visible_row(cfg: &SpannedConfig, mut pos: Position) -> Option<usize> {
+ loop {
+ if cfg.is_cell_visible(pos) {
+ return Some(pos.0);
+ }
+
+ if pos.0 == 0 {
+ return None;
+ }
+
+ pos.0 -= 1;
+ }
+}
+
+/// Trims a string.
+fn string_trim(text: &str) -> Cow<'_, str> {
+ #[cfg(feature = "color")]
+ {
+ ansi_str::AnsiStr::ansi_trim(text)
+ }
+
+ #[cfg(not(feature = "color"))]
+ {
+ text.trim().into()
+ }
+}
diff --git a/vendor/papergrid/src/lib.rs b/vendor/papergrid/src/lib.rs
new file mode 100644
index 000000000..8da4f14ba
--- /dev/null
+++ b/vendor/papergrid/src/lib.rs
@@ -0,0 +1,87 @@
+#![cfg_attr(not(any(feature = "std", test)), no_std)]
+#![warn(
+ rust_2018_idioms,
+ rust_2018_compatibility,
+ rust_2021_compatibility,
+ missing_debug_implementations,
+ unreachable_pub,
+ missing_docs
+)]
+#![allow(clippy::uninlined_format_args)]
+#![deny(unused_must_use)]
+#![doc(
+ html_logo_url = "https://raw.githubusercontent.com/zhiburt/tabled/86ac146e532ce9f7626608d7fd05072123603a2e/assets/tabled-gear.svg"
+)]
+
+//! Papergrid is a library for generating text-based tables.
+//!
+//! It has relatively low level API.
+//! If you're interested in a more friendly one take a look at [`tabled`](https://github.com/zhiburt/tabled).
+//!
+//! # Example
+//!
+#![cfg_attr(feature = "std", doc = "```")]
+#![cfg_attr(not(feature = "std"), doc = "```ignore")]
+//! use papergrid::{
+//! records::IterRecords,
+//! dimension::{Estimate},
+//! config::Borders,
+//! colors::NoColors,
+//! grid::iterable::Grid,
+//! config::spanned::SpannedConfig,
+//! dimension::spanned::SpannedGridDimension,
+//! };
+//!
+//! // Creating a borders structure of a grid.
+//! let borders = Borders {
+//! top: Some('-'),
+//! top_left: Some('+'),
+//! top_right: Some('+'),
+//! top_intersection: Some('+'),
+//! bottom: Some('-'),
+//! bottom_left: Some('+'),
+//! bottom_right: Some('+'),
+//! bottom_intersection: Some('+'),
+//! horizontal: Some('-'),
+//! vertical: Some('|'),
+//! left: Some('|'),
+//! right: Some('|'),
+//! intersection: Some('+'),
+//! left_intersection: Some('+'),
+//! right_intersection: Some('+'),
+//! };
+//!
+//! // Creating a grid config.
+//! let mut cfg = SpannedConfig::default();
+//! cfg.set_borders(borders);
+//!
+//! // Creating an actual data for grid.
+//! let records = vec![vec!["Hello", "World"], vec!["Hi", "World"]];
+//! let records = IterRecords::new(records, 2, None);
+//!
+//! // Estimate grid dimension.
+//! let mut dimension = SpannedGridDimension::default();
+//! dimension.estimate(&records, &cfg);
+//!
+//! // Creating a grid.
+//! let grid = Grid::new(&records, &dimension, &cfg, NoColors).to_string();
+//!
+//! assert_eq!(
+//! grid,
+//! concat!(
+//! "+-----+-----+\n",
+//! "|Hello|World|\n",
+//! "+-----+-----+\n",
+//! "|Hi |World|\n",
+//! "+-----+-----+",
+//! ),
+//! );
+//! ```
+
+pub mod color;
+pub mod colors;
+pub mod config;
+pub mod dimension;
+pub mod grid;
+pub mod records;
+pub mod util;
diff --git a/vendor/papergrid/src/records/exact_records.rs b/vendor/papergrid/src/records/exact_records.rs
new file mode 100644
index 000000000..9a564bc82
--- /dev/null
+++ b/vendor/papergrid/src/records/exact_records.rs
@@ -0,0 +1,31 @@
+/// [`Records`] extension which guarantees the amount of rows.
+///
+/// [`Records`]: crate::records::Records
+pub trait ExactRecords {
+ /// Returns an exact amount of rows in records.
+ ///
+ /// It must be guaranteed that an iterator will yield this amount.
+ fn count_rows(&self) -> usize;
+}
+
+impl<T> ExactRecords for &T
+where
+ T: ExactRecords,
+{
+ fn count_rows(&self) -> usize {
+ T::count_rows(self)
+ }
+}
+
+#[cfg(feature = "std")]
+impl<T> ExactRecords for Vec<T> {
+ fn count_rows(&self) -> usize {
+ self.len()
+ }
+}
+
+impl<T> ExactRecords for [T] {
+ fn count_rows(&self) -> usize {
+ self.len()
+ }
+}
diff --git a/vendor/papergrid/src/records/into_records.rs b/vendor/papergrid/src/records/into_records.rs
new file mode 100644
index 000000000..c1de73d9c
--- /dev/null
+++ b/vendor/papergrid/src/records/into_records.rs
@@ -0,0 +1,33 @@
+/// The representation of data, rows and columns of a [`Grid`].
+///
+/// [`Grid`]: crate::grid::iterable::Grid
+pub trait IntoRecords {
+ /// A string representation of a [`Grid`] cell.
+ ///
+ /// [`Grid`]: crate::grid::iterable::Grid
+ type Cell: AsRef<str>;
+
+ /// Cell iterator inside a row.
+ type IterColumns: IntoIterator<Item = Self::Cell>;
+
+ /// Rows iterator.
+ type IterRows: IntoIterator<Item = Self::IterColumns>;
+
+ /// Returns an iterator over rows.
+ fn iter_rows(self) -> Self::IterRows;
+}
+
+impl<T> IntoRecords for T
+where
+ T: IntoIterator,
+ <T as IntoIterator>::Item: IntoIterator,
+ <<T as IntoIterator>::Item as IntoIterator>::Item: AsRef<str>,
+{
+ type Cell = <<T as IntoIterator>::Item as IntoIterator>::Item;
+ type IterColumns = <T as IntoIterator>::Item;
+ type IterRows = <T as IntoIterator>::IntoIter;
+
+ fn iter_rows(self) -> Self::IterRows {
+ self.into_iter()
+ }
+}
diff --git a/vendor/papergrid/src/records/iter_records.rs b/vendor/papergrid/src/records/iter_records.rs
new file mode 100644
index 000000000..3d4f50754
--- /dev/null
+++ b/vendor/papergrid/src/records/iter_records.rs
@@ -0,0 +1,87 @@
+use super::{IntoRecords, Records};
+
+/// A [Records] implementation for any [IntoIterator].
+#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub struct IterRecords<I> {
+ iter: I,
+ count_columns: usize,
+ count_rows: Option<usize>,
+}
+
+impl<I> IterRecords<I> {
+ /// Returns a new [IterRecords] object.
+ pub const fn new(iter: I, count_columns: usize, count_rows: Option<usize>) -> Self {
+ Self {
+ iter,
+ count_columns,
+ count_rows,
+ }
+ }
+}
+
+impl<I> IntoRecords for IterRecords<I>
+where
+ I: IntoRecords,
+{
+ type Cell = I::Cell;
+ type IterColumns = I::IterColumns;
+ type IterRows = I::IterRows;
+
+ fn iter_rows(self) -> Self::IterRows {
+ self.iter.iter_rows()
+ }
+}
+
+// why this does not work?
+
+// impl<'a, I> IntoRecords for &'a IterRecords<I>
+// where
+// &'a I: IntoRecords,
+// {
+// type Cell = <&'a I as IntoRecords>::Cell;
+// type IterColumns = <&'a I as IntoRecords>::IterColumns;
+// type IterRows = <&'a I as IntoRecords>::IterRows;
+
+// fn iter_rows(self) -> Self::IterRows {
+// // (&self.iter).iter_rows()
+// todo!()
+// }
+// }
+
+impl<I> Records for IterRecords<I>
+where
+ I: IntoRecords,
+{
+ type Iter = I;
+
+ fn iter_rows(self) -> <Self::Iter as IntoRecords>::IterRows {
+ self.iter.iter_rows()
+ }
+
+ fn count_columns(&self) -> usize {
+ self.count_columns
+ }
+
+ fn hint_count_rows(&self) -> Option<usize> {
+ self.count_rows
+ }
+}
+
+impl<'a, I> Records for &'a IterRecords<I>
+where
+ &'a I: IntoRecords,
+{
+ type Iter = &'a I;
+
+ fn iter_rows(self) -> <Self::Iter as IntoRecords>::IterRows {
+ (&self.iter).iter_rows()
+ }
+
+ fn count_columns(&self) -> usize {
+ self.count_columns
+ }
+
+ fn hint_count_rows(&self) -> Option<usize> {
+ self.count_rows
+ }
+}
diff --git a/vendor/papergrid/src/records/mod.rs b/vendor/papergrid/src/records/mod.rs
new file mode 100644
index 000000000..149b6f55f
--- /dev/null
+++ b/vendor/papergrid/src/records/mod.rs
@@ -0,0 +1,31 @@
+//! The module contains a [Records] abstraction of a [`Grid`] trait and its implementers.
+//!
+//! [`Grid`]: crate::grid::iterable::Grid
+
+mod exact_records;
+mod into_records;
+mod iter_records;
+mod peekable_records;
+
+pub use exact_records::ExactRecords;
+pub use into_records::IntoRecords;
+pub use iter_records::IterRecords;
+pub use peekable_records::PeekableRecords;
+
+#[cfg(feature = "std")]
+pub mod vec_records;
+
+/// Records represents table data.
+pub trait Records {
+ /// Iterator which goes over rows.
+ type Iter: IntoRecords;
+
+ /// Returns a iterator over rows.
+ fn iter_rows(self) -> <Self::Iter as IntoRecords>::IterRows;
+
+ /// Returns count of columns in the records.
+ fn count_columns(&self) -> usize;
+
+ /// Hint amount of rows in the records.
+ fn hint_count_rows(&self) -> Option<usize>;
+}
diff --git a/vendor/papergrid/src/records/peekable_records.rs b/vendor/papergrid/src/records/peekable_records.rs
new file mode 100644
index 000000000..528ba5f0c
--- /dev/null
+++ b/vendor/papergrid/src/records/peekable_records.rs
@@ -0,0 +1,52 @@
+use crate::config::Position;
+
+/// The representation of data, rows and columns of a grid.
+pub trait PeekableRecords {
+ /// Returns a text of a cell by an index.
+ fn get_text(&self, pos: Position) -> &str;
+
+ /// Returns a line of a text of a cell by an index.
+ fn get_line(&self, pos: Position, line: usize) -> &str {
+ self.get_text(pos).lines().nth(line).unwrap()
+ }
+
+ /// Returns an amount of lines of a text of a cell by an index.
+ fn count_lines(&self, pos: Position) -> usize {
+ self.get_text(pos).lines().count()
+ }
+
+ /// Returns a width of a text of a cell by an index.
+ fn get_width(&self, pos: Position) -> usize {
+ crate::util::string::string_width_multiline(self.get_text(pos))
+ }
+
+ /// Returns a width of line of a text of a cell by an index.
+ fn get_line_width(&self, pos: Position, line: usize) -> usize {
+ crate::util::string::string_width(self.get_line(pos, line))
+ }
+}
+
+impl<R> PeekableRecords for &R
+where
+ R: PeekableRecords,
+{
+ fn get_text(&self, pos: Position) -> &str {
+ R::get_text(self, pos)
+ }
+
+ fn get_line(&self, pos: Position, line: usize) -> &str {
+ R::get_line(self, pos, line)
+ }
+
+ fn count_lines(&self, pos: Position) -> usize {
+ R::count_lines(self, pos)
+ }
+
+ fn get_width(&self, pos: Position) -> usize {
+ R::get_width(self, pos)
+ }
+
+ fn get_line_width(&self, pos: Position, line: usize) -> usize {
+ R::get_line_width(self, pos, line)
+ }
+}
diff --git a/vendor/papergrid/src/records/vec_records/cell.rs b/vendor/papergrid/src/records/vec_records/cell.rs
new file mode 100644
index 000000000..38a36b6e3
--- /dev/null
+++ b/vendor/papergrid/src/records/vec_records/cell.rs
@@ -0,0 +1,19 @@
+/// Cell implementation which can be used with [`VecRecords`].
+///
+/// [`VecRecords`]: crate::records::vec_records::VecRecords
+pub trait Cell {
+ /// Gets a text.
+ fn text(&self) -> &str;
+
+ /// Gets a line by index.
+ fn line(&self, line: usize) -> &str;
+
+ /// Returns a number of lines cell has.
+ fn count_lines(&self) -> usize;
+
+ /// Returns a width of cell.
+ fn width(&self) -> usize;
+
+ /// Returns a width of cell line.
+ fn line_width(&self, line: usize) -> usize;
+}
diff --git a/vendor/papergrid/src/records/vec_records/cell_info.rs b/vendor/papergrid/src/records/vec_records/cell_info.rs
new file mode 100644
index 000000000..d9b0ed71e
--- /dev/null
+++ b/vendor/papergrid/src/records/vec_records/cell_info.rs
@@ -0,0 +1,170 @@
+use std::{borrow::Cow, cmp::max};
+
+use crate::{
+ records::vec_records::Cell,
+ util::string::{self, count_lines, get_lines, string_width},
+};
+
+/// The struct is a [Cell] implementation which keeps width information pre allocated.
+#[derive(Debug, Default, PartialEq, Eq, PartialOrd, Ord)]
+pub struct CellInfo<S> {
+ text: S,
+ width: usize,
+ lines: Vec<StrWithWidth<'static>>,
+}
+
+impl<S> CellInfo<S> {
+ /// Creates a new instance of the structure.
+ pub fn new(text: S) -> Self
+ where
+ S: AsRef<str>,
+ {
+ create_cell_info(text)
+ }
+
+ /// Creates a new instance of the structure with a single line.
+ pub fn exact(text: S, width: usize, lines: Vec<StrWithWidth<'static>>) -> Self {
+ Self { text, width, lines }
+ }
+
+ /// Return a original text value.
+ pub fn into_inner(self) -> S {
+ self.text
+ }
+}
+
+impl<S> AsRef<str> for CellInfo<S>
+where
+ S: AsRef<str>,
+{
+ fn as_ref(&self) -> &str {
+ self.text()
+ }
+}
+
+impl<S> Cell for CellInfo<S>
+where
+ S: AsRef<str>,
+{
+ fn text(&self) -> &str {
+ self.text.as_ref()
+ }
+
+ fn line(&self, i: usize) -> &str {
+ if i == 0 && self.lines.is_empty() {
+ return self.text.as_ref();
+ }
+
+ &self.lines[i].text
+ }
+
+ fn count_lines(&self) -> usize {
+ std::cmp::max(1, self.lines.len())
+ }
+
+ fn width(&self) -> usize {
+ self.width
+ }
+
+ fn line_width(&self, i: usize) -> usize {
+ if i == 0 && self.lines.is_empty() {
+ return self.width;
+ }
+
+ self.lines[i].width
+ }
+}
+
+impl<S> Clone for CellInfo<S>
+where
+ S: Clone + AsRef<str>,
+{
+ fn clone(&self) -> Self {
+ let mut cell = Self {
+ text: self.text.clone(),
+ width: self.width,
+ lines: vec![StrWithWidth::default(); self.lines.len()],
+ };
+
+ for (i, line) in self.lines.iter().enumerate() {
+ // We need to redirect pointers to the original string.
+ //
+ // # Safety
+ //
+ // It must be safe because the referenced string and the references are dropped at the same time.
+ // And the referenced String is guaranteed to not be changed.
+ let text = unsafe {
+ let text_ptr = self.text.as_ref().as_ptr();
+ let line_ptr = line.text.as_ptr();
+ let text_shift = line_ptr as isize - text_ptr as isize;
+
+ let new_text_shifted_ptr = cell.text.as_ref().as_ptr().offset(text_shift);
+
+ std::str::from_utf8_unchecked(std::slice::from_raw_parts(
+ new_text_shifted_ptr,
+ line.text.len(),
+ ))
+ };
+
+ cell.lines[i].width = line.width;
+ cell.lines[i].text = Cow::Borrowed(text);
+ }
+
+ cell
+ }
+}
+
+/// StrWithWidth is a structure is responsible for a string and it's width.
+#[derive(Debug, Default, PartialEq, Eq, PartialOrd, Ord, Clone)]
+pub struct StrWithWidth<'a> {
+ text: Cow<'a, str>,
+ width: usize,
+}
+
+impl<'a> StrWithWidth<'a> {
+ /// Creates a new object.
+ pub fn new(text: Cow<'a, str>, width: usize) -> Self {
+ Self { text, width }
+ }
+}
+
+fn create_cell_info<S: AsRef<str>>(text: S) -> CellInfo<S> {
+ let mut info = CellInfo {
+ text,
+ lines: vec![],
+ width: 0,
+ };
+
+ // Here we do a small optimization.
+ // We check if there's only 1 line in which case we don't allocate lines Vec
+ let count_lines = count_lines(info.text.as_ref());
+ if count_lines < 2 {
+ info.width = string::string_width_multiline(info.text.as_ref());
+ return info;
+ }
+
+ // In case `Cow::Borrowed` we want to not allocate a String.
+ // It's currerently not possible due to a lifetime issues. (It's known as self-referential struct)
+ //
+ // Here we change the lifetime of text.
+ //
+ // # Safety
+ //
+ // It must be safe because the referenced string and the references are dropped at the same time.
+ // And the referenced String is guaranteed to not be changed.
+ let text = unsafe {
+ std::str::from_utf8_unchecked(std::slice::from_raw_parts(
+ info.text.as_ref().as_ptr(),
+ info.text.as_ref().len(),
+ ))
+ };
+
+ info.lines = vec![StrWithWidth::new(Cow::Borrowed(""), 0); count_lines];
+ for (line, i) in get_lines(text).zip(info.lines.iter_mut()) {
+ i.width = string_width(&line);
+ i.text = line;
+ info.width = max(info.width, i.width);
+ }
+
+ info
+}
diff --git a/vendor/papergrid/src/records/vec_records/mod.rs b/vendor/papergrid/src/records/vec_records/mod.rs
new file mode 100644
index 000000000..279eb3a7b
--- /dev/null
+++ b/vendor/papergrid/src/records/vec_records/mod.rs
@@ -0,0 +1,124 @@
+//! Module contains [`VecRecords`].
+
+mod cell;
+mod cell_info;
+
+use crate::{
+ config::Position,
+ records::{ExactRecords, IntoRecords, Records},
+};
+use std::ops::{Deref, DerefMut};
+
+use super::PeekableRecords;
+
+pub use cell::Cell;
+pub use cell_info::{CellInfo, StrWithWidth};
+
+/// A [Records] implementation based on allocated buffers.
+#[derive(Debug, Clone, Default, PartialEq, Eq, PartialOrd, Ord)]
+pub struct VecRecords<T> {
+ data: Vec<Vec<T>>,
+ shape: (usize, usize),
+}
+
+impl<T> VecRecords<T> {
+ /// Creates new [`VecRecords`] structure.
+ ///
+ /// It assumes that data vector has all rows has the same length().
+ pub fn new(data: Vec<Vec<T>>) -> Self {
+ let count_columns = data.get(0).map_or(0, |row| row.len());
+ let count_rows = data.len();
+ let shape = (count_rows, count_columns);
+
+ Self { data, shape }
+ }
+}
+
+impl<T> Records for VecRecords<T>
+where
+ T: AsRef<str>,
+{
+ type Iter = Vec<Vec<T>>;
+
+ fn iter_rows(self) -> <Self::Iter as IntoRecords>::IterRows {
+ self.data.iter_rows()
+ }
+
+ fn count_columns(&self) -> usize {
+ self.shape.1
+ }
+
+ fn hint_count_rows(&self) -> Option<usize> {
+ Some(self.shape.0)
+ }
+}
+
+impl<'a, T> Records for &'a VecRecords<T>
+where
+ T: AsRef<str>,
+{
+ type Iter = &'a [Vec<T>];
+
+ fn iter_rows(self) -> <Self::Iter as IntoRecords>::IterRows {
+ (&self.data).iter_rows()
+ }
+
+ fn count_columns(&self) -> usize {
+ self.shape.1
+ }
+
+ fn hint_count_rows(&self) -> Option<usize> {
+ Some(self.shape.0)
+ }
+}
+
+impl<T> ExactRecords for VecRecords<T> {
+ fn count_rows(&self) -> usize {
+ self.shape.0
+ }
+}
+
+impl<T> PeekableRecords for VecRecords<T>
+where
+ T: Cell,
+{
+ fn get_text(&self, (row, col): Position) -> &str {
+ self[row][col].text()
+ }
+
+ fn count_lines(&self, (row, col): Position) -> usize {
+ self[row][col].count_lines()
+ }
+
+ fn get_line(&self, (row, col): Position, line: usize) -> &str {
+ self[row][col].line(line)
+ }
+
+ fn get_line_width(&self, (row, col): Position, line: usize) -> usize {
+ self[row][col].line_width(line)
+ }
+
+ fn get_width(&self, (row, col): Position) -> usize {
+ self[row][col].width()
+ }
+}
+
+impl<T> Deref for VecRecords<T> {
+ type Target = Vec<Vec<T>>;
+
+ fn deref(&self) -> &Self::Target {
+ &self.data
+ }
+}
+
+impl<T> DerefMut for VecRecords<T> {
+ fn deref_mut(&mut self) -> &mut Self::Target {
+ &mut self.data
+ }
+}
+
+impl<T> From<VecRecords<T>> for Vec<Vec<T>> {
+ fn from(records: VecRecords<T>) -> Self {
+ records.data
+ }
+}
diff --git a/vendor/papergrid/src/util/mod.rs b/vendor/papergrid/src/util/mod.rs
new file mode 100644
index 000000000..8480ff9be
--- /dev/null
+++ b/vendor/papergrid/src/util/mod.rs
@@ -0,0 +1,3 @@
+//! A module contains utility functions which grid relay on.
+
+pub mod string;
diff --git a/vendor/papergrid/src/util/string.rs b/vendor/papergrid/src/util/string.rs
new file mode 100644
index 000000000..0017e6a91
--- /dev/null
+++ b/vendor/papergrid/src/util/string.rs
@@ -0,0 +1,270 @@
+//! This module contains a different functions which are used by the [`Grid`].
+//!
+//! You should use it if you want to comply with how [`Grid`].
+//!
+//! [`Grid`]: crate::grid::iterable::Grid
+
+/// Returns string width and count lines of a string. It's a combination of [`string_width_multiline`] and [`count_lines`].
+#[cfg(feature = "std")]
+pub fn string_dimension(text: &str) -> (usize, usize) {
+ #[cfg(not(feature = "color"))]
+ {
+ let (lines, acc, max) = text.chars().fold((1, 0, 0), |(lines, acc, max), c| {
+ if c == '\n' {
+ (lines + 1, 0, acc.max(max))
+ } else {
+ let w = unicode_width::UnicodeWidthChar::width(c).unwrap_or(0);
+ (lines, acc + w, max)
+ }
+ });
+
+ (lines, acc.max(max))
+ }
+
+ #[cfg(feature = "color")]
+ {
+ get_lines(text)
+ .map(|line| string_width(&line))
+ .fold((0, 0), |(i, acc), width| (i + 1, acc.max(width)))
+ }
+}
+
+/// Returns a string width.
+pub fn string_width(text: &str) -> usize {
+ #[cfg(not(feature = "color"))]
+ {
+ unicode_width::UnicodeWidthStr::width(text)
+ }
+
+ #[cfg(feature = "color")]
+ {
+ // we need to strip ansi because of terminal links
+ // and they're can't be stripped by ansi_str.
+
+ ansitok::parse_ansi(text)
+ .filter(|e| e.kind() == ansitok::ElementKind::Text)
+ .map(|e| &text[e.start()..e.end()])
+ .map(unicode_width::UnicodeWidthStr::width)
+ .sum()
+ }
+}
+
+/// Returns a max string width of a line.
+pub fn string_width_multiline(text: &str) -> usize {
+ #[cfg(not(feature = "color"))]
+ {
+ text.lines()
+ .map(unicode_width::UnicodeWidthStr::width)
+ .max()
+ .unwrap_or(0)
+ }
+
+ #[cfg(feature = "color")]
+ {
+ text.lines().map(string_width).max().unwrap_or(0)
+ }
+}
+
+/// Calculates a number of lines.
+pub fn count_lines(s: &str) -> usize {
+ if s.is_empty() {
+ return 1;
+ }
+
+ bytecount::count(s.as_bytes(), b'\n') + 1
+}
+
+/// Returns a list of tabs (`\t`) in a string..
+pub fn count_tabs(s: &str) -> usize {
+ bytecount::count(s.as_bytes(), b'\t')
+}
+
+/// Splits the string by lines.
+#[cfg(feature = "std")]
+pub fn get_lines(text: &str) -> Lines<'_> {
+ #[cfg(not(feature = "color"))]
+ {
+ // we call `split()` but not `lines()` in order to match colored implementation
+ // specifically how we treat a trailing '\n' character.
+ Lines {
+ inner: text.split('\n'),
+ }
+ }
+
+ #[cfg(feature = "color")]
+ {
+ Lines {
+ inner: ansi_str::AnsiStr::ansi_split(text, "\n"),
+ }
+ }
+}
+
+/// Iterator over lines.
+///
+/// In comparison to `std::str::Lines`, it treats trailing '\n' as a new line.
+#[allow(missing_debug_implementations)]
+#[cfg(feature = "std")]
+pub struct Lines<'a> {
+ #[cfg(not(feature = "color"))]
+ inner: std::str::Split<'a, char>,
+ #[cfg(feature = "color")]
+ inner: ansi_str::AnsiSplit<'a>,
+}
+#[cfg(feature = "std")]
+impl<'a> Iterator for Lines<'a> {
+ type Item = std::borrow::Cow<'a, str>;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ #[cfg(not(feature = "color"))]
+ {
+ self.inner.next().map(std::borrow::Cow::Borrowed)
+ }
+
+ #[cfg(feature = "color")]
+ {
+ self.inner.next()
+ }
+ }
+}
+
+#[cfg(feature = "std")]
+/// Replaces tabs in a string with a given width of spaces.
+pub fn replace_tab(text: &str, n: usize) -> std::borrow::Cow<'_, str> {
+ if !text.contains('\t') {
+ return std::borrow::Cow::Borrowed(text);
+ }
+
+ // it's a general case which probably must be faster?
+ let replaced = if n == 4 {
+ text.replace('\t', " ")
+ } else {
+ let mut text = text.to_owned();
+ replace_tab_range(&mut text, n);
+ text
+ };
+
+ std::borrow::Cow::Owned(replaced)
+}
+
+#[cfg(feature = "std")]
+fn replace_tab_range(cell: &mut String, n: usize) -> &str {
+ let mut skip = 0;
+ while let &Some(pos) = &cell[skip..].find('\t') {
+ let pos = skip + pos;
+
+ let is_escaped = pos > 0 && cell.get(pos - 1..pos) == Some("\\");
+ if is_escaped {
+ skip = pos + 1;
+ } else if n == 0 {
+ cell.remove(pos);
+ skip = pos;
+ } else {
+ // I'am not sure which version is faster a loop of 'replace'
+ // or allacation of a string for replacement;
+ cell.replace_range(pos..=pos, &" ".repeat(n));
+ skip = pos + 1;
+ }
+
+ if cell.is_empty() || skip >= cell.len() {
+ break;
+ }
+ }
+
+ cell
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn string_width_emojie_test() {
+ // ...emojis such as “joyâ€, which normally take up two columns when printed in a terminal
+ // https://github.com/mgeisler/textwrap/pull/276
+ assert_eq!(string_width("🎩"), 2);
+ assert_eq!(string_width("Rust 💕"), 7);
+ assert_eq!(string_width_multiline("Go ðŸ‘\nC 😎"), 5);
+ }
+
+ #[cfg(feature = "color")]
+ #[test]
+ fn colored_string_width_test() {
+ use owo_colors::OwoColorize;
+ assert_eq!(string_width(&"hello world".red().to_string()), 11);
+ assert_eq!(
+ string_width_multiline(&"hello\nworld".blue().to_string()),
+ 5
+ );
+ assert_eq!(string_width("\u{1b}[34m0\u{1b}[0m"), 1);
+ assert_eq!(string_width(&"0".red().to_string()), 1);
+ }
+
+ #[test]
+ fn count_lines_test() {
+ assert_eq!(
+ count_lines("\u{1b}[37mnow is the time for all good men\n\u{1b}[0m"),
+ 2
+ );
+ assert_eq!(count_lines("now is the time for all good men\n"), 2);
+ }
+
+ #[cfg(feature = "color")]
+ #[test]
+ fn string_width_multinline_for_link() {
+ assert_eq!(
+ string_width_multiline(
+ "\u{1b}]8;;file:///home/nushell/asd.zip\u{1b}\\asd.zip\u{1b}]8;;\u{1b}\\"
+ ),
+ 7
+ );
+ }
+
+ #[cfg(feature = "color")]
+ #[test]
+ fn string_width_for_link() {
+ assert_eq!(
+ string_width("\u{1b}]8;;file:///home/nushell/asd.zip\u{1b}\\asd.zip\u{1b}]8;;\u{1b}\\"),
+ 7
+ );
+ }
+
+ #[cfg(feature = "std")]
+ #[test]
+ fn string_dimension_test() {
+ assert_eq!(
+ string_dimension("\u{1b}[37mnow is the time for all good men\n\u{1b}[0m"),
+ {
+ #[cfg(feature = "color")]
+ {
+ (2, 32)
+ }
+ #[cfg(not(feature = "color"))]
+ {
+ (2, 36)
+ }
+ }
+ );
+ assert_eq!(
+ string_dimension("now is the time for all good men\n"),
+ (2, 32)
+ );
+ assert_eq!(string_dimension("asd"), (1, 3));
+ assert_eq!(string_dimension(""), (1, 0));
+ }
+
+ #[cfg(feature = "std")]
+ #[test]
+ fn replace_tab_test() {
+ assert_eq!(replace_tab("123\t\tabc\t", 3), "123 abc ");
+
+ assert_eq!(replace_tab("\t", 0), "");
+ assert_eq!(replace_tab("\t", 3), " ");
+ assert_eq!(replace_tab("123\tabc", 3), "123 abc");
+ assert_eq!(replace_tab("123\tabc\tzxc", 0), "123abczxc");
+
+ assert_eq!(replace_tab("\\t", 0), "\\t");
+ assert_eq!(replace_tab("\\t", 4), "\\t");
+ assert_eq!(replace_tab("123\\tabc", 0), "123\\tabc");
+ assert_eq!(replace_tab("123\\tabc", 4), "123\\tabc");
+ }
+}
diff --git a/vendor/papergrid/tests/grid/column_span.rs b/vendor/papergrid/tests/grid/column_span.rs
new file mode 100644
index 000000000..3ea8f8546
--- /dev/null
+++ b/vendor/papergrid/tests/grid/column_span.rs
@@ -0,0 +1,431 @@
+#![cfg(feature = "std")]
+
+use papergrid::config::{AlignmentHorizontal, Borders, Entity, Indent, Sides};
+
+use crate::util::grid;
+use testing_table::test_table;
+
+test_table!(
+ row_span,
+ grid(2, 2)
+ .config(|cfg|{
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_alignment_horizontal(Entity::Cell(0, 0), AlignmentHorizontal::Center);
+ })
+ .build(),
+ "+---+---+"
+ "| 0-0 |"
+ "+---+---+"
+ "|1-0|1-1|"
+ "+---+---+"
+);
+
+test_table!(
+ miltiline_span,
+ grid(2, 2)
+ .change_cell((0, 0), "0-0\n0-1")
+ .config(|cfg|{
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_alignment_horizontal(Entity::Cell(0, 0), AlignmentHorizontal::Center);
+ })
+ .build(),
+ "+---+---+"
+ "| 0-0 |"
+ "| 0-1 |"
+ "+---+---+"
+ "|1-0|1-1|"
+ "+---+---+"
+);
+
+test_table!(
+ row_span_multilane,
+ grid(4, 3)
+ .data([
+ ["first line", "", "e.g."],
+ ["0", "1", "2"],
+ ["0", "1", "2"],
+ ["full last line", "", ""],
+ ])
+ .config(|cfg|{
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_column_span((3, 0), 3);
+ })
+ .build(),
+ "+-----+----+----+"
+ "|first line|e.g.|"
+ "+-----+----+----+"
+ "|0 |1 |2 |"
+ "+-----+----+----+"
+ "|0 |1 |2 |"
+ "+-----+----+----+"
+ "|full last line |"
+ "+-----+----+----+"
+);
+
+test_table!(
+ row_span_with_horizontal_ident,
+ grid(3, 2)
+ .config(|cfg| {
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_padding(
+ Entity::Cell(1, 0),
+ Sides::new(
+ Indent::spaced(4),
+ Indent::spaced(4),
+ Indent::zero(),
+ Indent::zero(),
+ ),
+ );
+ })
+ .build(),
+ "+-----------+---+"
+ "|0-0 |"
+ "+-----------+---+"
+ "| 1-0 |1-1|"
+ "+-----------+---+"
+ "|2-0 |2-1|"
+ "+-----------+---+"
+);
+
+test_table!(
+ _row_span_3x3_with_horizontal_ident,
+ grid(3, 3)
+ .config(|cfg| {
+ cfg.set_column_span((0, 0), 3);
+ cfg.set_column_span((1, 0), 2);
+ cfg.set_column_span((2, 0), 2);
+ })
+ .build(),
+ "+-+-+---+"
+ "|0-0 |"
+ "+-+-+---+"
+ "|1-0|1-2|"
+ "+-+-+---+"
+ "|2-0|2-2|"
+ "+-+-+---+"
+);
+
+test_table!(
+ _3x3_with_2_colided_row_span_0,
+ grid(3, 3)
+ .change_cell((0, 0), "0-0xxxxxxx")
+ .config(|cfg| {
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_column_span((1, 1), 2);
+ })
+ .build(),
+ "+-----+----+---+"
+ "|0-0xxxxxxx|0-2|"
+ "+-----+----+---+"
+ "|1-0 |1-1 |"
+ "+-----+----+---+"
+ "|2-0 |2-1 |2-2|"
+ "+-----+----+---+"
+);
+
+test_table!(
+ _3x3_with_2_colided_row_span_1,
+ grid(3, 3)
+ .change_cell((1, 1), "1-1xxxxxxx")
+ .config(|cfg| {
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_column_span((1, 1), 2);
+ })
+ .build(),
+ "+---+-----+----+"
+ "|0-0 |0-2 |"
+ "+---+-----+----+"
+ "|1-0|1-1xxxxxxx|"
+ "+---+-----+----+"
+ "|2-0|2-1 |2-2 |"
+ "+---+-----+----+"
+);
+
+test_table!(
+ _3x3_with_2_colided_row_span_2,
+ grid(3, 3)
+ .change_cell((1, 1), "1-1xxxxxxx")
+ .change_cell((2, 0), "2-0xxxxxxxxxxxxx")
+ .config(|cfg| {
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_column_span((1, 1), 2);
+ })
+ .build(),
+ "+----------------+-----+----+"
+ "|0-0 |0-2 |"
+ "+----------------+-----+----+"
+ "|1-0 |1-1xxxxxxx|"
+ "+----------------+-----+----+"
+ "|2-0xxxxxxxxxxxxx|2-1 |2-2 |"
+ "+----------------+-----+----+"
+);
+
+test_table!(
+ _3x3_with_2_colided_row_span_3,
+ grid(3, 3)
+ .change_cell((2, 1), "2-1xxxxxxxxxxxxx")
+ .config(|cfg| {
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_column_span((1, 1), 2);
+ })
+ .build(),
+ "+---+----------------+---+"
+ "|0-0 |0-2|"
+ "+---+----------------+---+"
+ "|1-0|1-1 |"
+ "+---+----------------+---+"
+ "|2-0|2-1xxxxxxxxxxxxx|2-2|"
+ "+---+----------------+---+"
+);
+
+test_table!(
+ _3x3_with_2_colided_row_span_4,
+ grid(3, 3)
+ .change_cell((0, 2), "0-2xxxxxxxxxxxxx")
+ .config(|cfg| {
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_column_span((1, 1), 2);
+ })
+ .build(),
+ "+---+---+----------------+"
+ "|0-0 |0-2xxxxxxxxxxxxx|"
+ "+---+---+----------------+"
+ "|1-0|1-1 |"
+ "+---+---+----------------+"
+ "|2-0|2-1|2-2 |"
+ "+---+---+----------------+"
+);
+
+test_table!(
+ spaned_column_in_first_cell_3x3,
+ grid(3, 3)
+ .change_cell((0, 0), "0-0xxxxxxx")
+ .config(|cfg| cfg.set_column_span((0, 0), 2))
+ .build(),
+ "+-----+----+---+"
+ "|0-0xxxxxxx|0-2|"
+ "+-----+----+---+"
+ "|1-0 |1-1 |1-2|"
+ "+-----+----+---+"
+ "|2-0 |2-1 |2-2|"
+ "+-----+----+---+"
+);
+
+test_table!(
+ row_span_with_different_length,
+ grid(3, 2)
+ .data([["first row", ""], ["0", "1"], ["a longer second row", ""]])
+ .config(|cfg| {
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_column_span((2, 0), 2);
+ })
+ .build(),
+ "+---------+---------+"
+ "|first row |"
+ "+---------+---------+"
+ "|0 |1 |"
+ "+---------+---------+"
+ "|a longer second row|"
+ "+---------+---------+"
+);
+
+test_table!(
+ row_span_with_odd_length,
+ grid(2, 2)
+ .data([["3 ", ""], ["2", "4"]])
+ .config(|cfg| cfg.set_column_span((0, 0), 2))
+ .build(),
+ "+--+-+"
+ "|3 |"
+ "+--+-+"
+ "|2 |4|"
+ "+--+-+"
+);
+
+test_table!(
+ only_row_spaned,
+ grid(3, 2)
+ .config(|cfg| {
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_column_span((1, 0), 2);
+ cfg.set_column_span((2, 0), 2);
+ })
+ .build(),
+ "+-+-+"
+ "|0-0|"
+ "+-+-+"
+ "|1-0|"
+ "+-+-+"
+ "|2-0|"
+ "+-+-+"
+);
+
+test_table!(
+ grid_2x2_span_test,
+ grid(2, 2)
+ .data([["123", ""], ["asd", "asd"]])
+ .config(|cfg| cfg.set_column_span((0, 0), 2))
+ .build(),
+ "+---+---+"
+ "|123 |"
+ "+---+---+"
+ "|asd|asd|"
+ "+---+---+"
+);
+
+test_table!(
+ grid_2x2_span_2_test_0,
+ grid(2, 2)
+ .data([["1234", ""], ["asdw", ""]])
+ .config(|cfg| {
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_column_span((1, 0), 2);
+ })
+ .build(),
+ "+--+-+"
+ "|1234|"
+ "+--+-+"
+ "|asdw|"
+ "+--+-+"
+);
+
+test_table!(
+ grid_2x2_span_2_test_1,
+ grid(2, 2)
+ .data([["1", ""], ["a", ""]])
+ .config(|cfg| {
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_column_span((1, 0), 2);
+ })
+ .build(),
+ "+++"
+ "|1|"
+ "+++"
+ "|a|"
+ "+++"
+);
+
+test_table!(
+ row_span_with_no_split_style,
+ grid(2, 2)
+ .config(|cfg| {
+ cfg.set_borders(Borders::default());
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_alignment_horizontal(Entity::Cell(0, 0), AlignmentHorizontal::Center);
+ })
+ .build(),
+ " 0-0 "
+ "1-01-1"
+);
+
+test_table!(
+ _2x3_zero_span_between_cells_0,
+ grid(2, 3)
+ .config(|cfg| cfg.set_column_span((0, 0), 2))
+ .build(),
+ "+---+---+---+"
+ "|0-0 |0-2|"
+ "+---+---+---+"
+ "|1-0|1-1|1-2|"
+ "+---+---+---+"
+);
+
+test_table!(
+ _2x3_zero_span_between_cells_1,
+ grid(2, 3)
+ .config(|cfg| {
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_column_span((1, 0), 2);
+ })
+ .build(),
+ "+-+-+---+"
+ "|0-0|0-2|"
+ "+-+-+---+"
+ "|1-0|1-2|"
+ "+-+-+---+"
+);
+
+test_table!(
+ _2x3_zero_span_at_the_end_0,
+ grid(2, 3)
+ .config(|cfg| {
+ cfg.set_column_span((0, 0), 3);
+ })
+ .build(),
+ "+---+---+---+"
+ "|0-0 |"
+ "+---+---+---+"
+ "|1-0|1-1|1-2|"
+ "+---+---+---+"
+);
+
+test_table!(
+ _2x3_zero_span_at_the_end_1,
+ grid(2, 3)
+ .config(|cfg| {
+ cfg.set_column_span((0, 0), 3);
+ cfg.set_column_span((1, 0), 3);
+ })
+ .build(),
+ "+-+++"
+ "|0-0|"
+ "+-+++"
+ "|1-0|"
+ "+-+++"
+);
+
+test_table!(
+ zero_span_grid,
+ grid(2, 2)
+ .data([["123", ""], ["asd", "asd"]])
+ .config(|cfg| {
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_column_span((1, 0), 2);
+ })
+ .build(),
+ "+-+-+"
+ "|123|"
+ "+-+-+"
+ "|asd|"
+ "+-+-+"
+);
+
+test_table!(
+ zero_span_grid_1,
+ grid(2, 2)
+ .data([["123", ""], ["asd", "asd"]])
+ .config(|cfg| {
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 1), 2);
+ })
+ .build(),
+ "+---++"
+ "+123++"
+ "+---++"
+);
+
+test_table!(
+ zero_span_grid_2,
+ grid(2, 2)
+ .data([["123", "axc"], ["asd", "asd"]])
+ .config(|cfg| {
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 1), 2);
+ })
+ .build(),
+ "+---+---+"
+ "+123+axc+"
+ "+---+---+"
+);
+
+test_table!(
+ zero_span_is_not_handled,
+ grid(2, 2)
+ .config(|cfg| { cfg.set_column_span((0, 1), 0); })
+ .build(),
+ "+---+---+"
+ "|0-0|0-1|"
+ "+---+---+"
+ "|1-0|1-1|"
+ "+---+---+"
+);
diff --git a/vendor/papergrid/tests/grid/format_configuration.rs b/vendor/papergrid/tests/grid/format_configuration.rs
new file mode 100644
index 000000000..1abfaa34a
--- /dev/null
+++ b/vendor/papergrid/tests/grid/format_configuration.rs
@@ -0,0 +1,953 @@
+#![cfg(feature = "std")]
+
+use papergrid::config::{spanned::Formatting, AlignmentHorizontal, AlignmentVertical, Entity};
+
+use crate::util::grid;
+use testing_table::static_table;
+
+#[test]
+fn formatting_test() {
+ let tests = [
+ (
+ AlignmentHorizontal::Left,
+ AlignmentVertical::Top,
+ Formatting::new(false, false, true),
+ static_table!(
+ "+-------------+----------+"
+ "|A long string| |"
+ "| | |"
+ "| | |"
+ "| |A |"
+ "| | string|"
+ "| |with |"
+ "| | new |"
+ "| |line |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+-------------+----------+"
+ "|1-0 |1-1 |"
+ "+-------------+----------+"
+ "|A one more |... |"
+ "| string | |"
+ "|with | |"
+ "| new | |"
+ "|line | |"
+ "+-------------+----------+"
+ ),
+ ),
+ (
+ AlignmentHorizontal::Left,
+ AlignmentVertical::Top,
+ Formatting::new(true, false, true),
+ static_table!(
+ "+-------------+----------+"
+ "|A long string| |"
+ "| | |"
+ "| | |"
+ "| |A |"
+ "| |string |"
+ "| |with |"
+ "| |new |"
+ "| |line |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+-------------+----------+"
+ "|1-0 |1-1 |"
+ "+-------------+----------+"
+ "|A one more |... |"
+ "|string | |"
+ "|with | |"
+ "|new | |"
+ "|line | |"
+ "+-------------+----------+"
+ ),
+ ),
+ (
+ AlignmentHorizontal::Left,
+ AlignmentVertical::Top,
+ Formatting::new(true, true, true),
+ static_table!(
+ "+-------------+----------+"
+ "|A long string|A |"
+ "| |string |"
+ "| |with |"
+ "| |new |"
+ "| |line |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+-------------+----------+"
+ "|1-0 |1-1 |"
+ "+-------------+----------+"
+ "|A one more |... |"
+ "|string | |"
+ "|with | |"
+ "|new | |"
+ "|line | |"
+ "+-------------+----------+"
+ ),
+ ),
+ //
+ (
+ AlignmentHorizontal::Center,
+ AlignmentVertical::Top,
+ Formatting::new(false, false, true),
+ static_table!(
+ "+-------------+----------+"
+ "|A long string| |"
+ "| | |"
+ "| | |"
+ "| | A |"
+ "| | string|"
+ "| | with |"
+ "| | new |"
+ "| | line |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+-------------+----------+"
+ "| 1-0 | 1-1 |"
+ "+-------------+----------+"
+ "| A one more | ... |"
+ "| string | |"
+ "| with | |"
+ "| new | |"
+ "| line | |"
+ "+-------------+----------+"
+ ),
+ ),
+ (
+ AlignmentHorizontal::Center,
+ AlignmentVertical::Top,
+ Formatting::new(true, false, true),
+ static_table!(
+ "+-------------+----------+"
+ "|A long string| |"
+ "| | |"
+ "| | |"
+ "| | A |"
+ "| | string |"
+ "| | with |"
+ "| | new |"
+ "| | line |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+-------------+----------+"
+ "| 1-0 | 1-1 |"
+ "+-------------+----------+"
+ "| A one more | ... |"
+ "| string | |"
+ "| with | |"
+ "| new | |"
+ "| line | |"
+ "+-------------+----------+"
+ ),
+ ),
+ (
+ AlignmentHorizontal::Center,
+ AlignmentVertical::Top,
+ Formatting::new(true, true, true),
+ static_table!(
+ "+-------------+----------+"
+ "|A long string| A |"
+ "| | string |"
+ "| | with |"
+ "| | new |"
+ "| | line |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+-------------+----------+"
+ "| 1-0 | 1-1 |"
+ "+-------------+----------+"
+ "| A one more | ... |"
+ "| string | |"
+ "| with | |"
+ "| new | |"
+ "| line | |"
+ "+-------------+----------+"
+ ),
+ ),
+ //
+ (
+ AlignmentHorizontal::Right,
+ AlignmentVertical::Top,
+ Formatting::new(false, false, true),
+ static_table!(
+ "+-------------+----------+"
+ "|A long string| |"
+ "| | |"
+ "| | |"
+ "| | A|"
+ "| | string|"
+ "| | with|"
+ "| | new|"
+ "| | line|"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+-------------+----------+"
+ "| 1-0| 1-1|"
+ "+-------------+----------+"
+ "| A one more| ...|"
+ "| string| |"
+ "| with| |"
+ "| new| |"
+ "| line| |"
+ "+-------------+----------+"
+ ),
+ ),
+ (
+ AlignmentHorizontal::Right,
+ AlignmentVertical::Top,
+ Formatting::new(true, false, true),
+ static_table!(
+ "+-------------+----------+"
+ "|A long string| |"
+ "| | |"
+ "| | |"
+ "| | A|"
+ "| | string|"
+ "| | with|"
+ "| | new|"
+ "| | line|"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+-------------+----------+"
+ "| 1-0| 1-1|"
+ "+-------------+----------+"
+ "| A one more| ...|"
+ "| string| |"
+ "| with| |"
+ "| new| |"
+ "| line| |"
+ "+-------------+----------+"
+ ),
+ ),
+ (
+ AlignmentHorizontal::Right,
+ AlignmentVertical::Top,
+ Formatting::new(true, true, true),
+ static_table!(
+ "+-------------+----------+"
+ "|A long string| A|"
+ "| | string|"
+ "| | with|"
+ "| | new|"
+ "| | line|"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+-------------+----------+"
+ "| 1-0| 1-1|"
+ "+-------------+----------+"
+ "| A one more| ...|"
+ "| string| |"
+ "| with| |"
+ "| new| |"
+ "| line| |"
+ "+-------------+----------+"
+ ),
+ ),
+ // asd
+ (
+ AlignmentHorizontal::Left,
+ AlignmentVertical::Center,
+ Formatting::new(false, false, true),
+ static_table!(
+ "+-------------+----------+"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| |A |"
+ "| | string|"
+ "|A long string|with |"
+ "| | new |"
+ "| |line |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+-------------+----------+"
+ "|1-0 |1-1 |"
+ "+-------------+----------+"
+ "|A one more | |"
+ "| string | |"
+ "|with |... |"
+ "| new | |"
+ "|line | |"
+ "+-------------+----------+"
+ ),
+ ),
+ (
+ AlignmentHorizontal::Left,
+ AlignmentVertical::Center,
+ Formatting::new(true, false, true),
+ static_table!(
+ "+-------------+----------+"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| |A |"
+ "| |string |"
+ "|A long string|with |"
+ "| |new |"
+ "| |line |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+-------------+----------+"
+ "|1-0 |1-1 |"
+ "+-------------+----------+"
+ "|A one more | |"
+ "|string | |"
+ "|with |... |"
+ "|new | |"
+ "|line | |"
+ "+-------------+----------+"
+ ),
+ ),
+ (
+ AlignmentHorizontal::Left,
+ AlignmentVertical::Center,
+ Formatting::new(true, true, true),
+ static_table!(
+ "+-------------+----------+"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| |A |"
+ "| |string |"
+ "|A long string|with |"
+ "| |new |"
+ "| |line |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+-------------+----------+"
+ "|1-0 |1-1 |"
+ "+-------------+----------+"
+ "|A one more | |"
+ "|string | |"
+ "|with |... |"
+ "|new | |"
+ "|line | |"
+ "+-------------+----------+"
+ ),
+ ),
+ //
+ (
+ AlignmentHorizontal::Center,
+ AlignmentVertical::Center,
+ Formatting::new(false, false, true),
+ static_table!(
+ "+-------------+----------+"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | A |"
+ "| | string|"
+ "|A long string| with |"
+ "| | new |"
+ "| | line |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+-------------+----------+"
+ "| 1-0 | 1-1 |"
+ "+-------------+----------+"
+ "| A one more | |"
+ "| string | |"
+ "| with | ... |"
+ "| new | |"
+ "| line | |"
+ "+-------------+----------+"
+ ),
+ ),
+ (
+ AlignmentHorizontal::Center,
+ AlignmentVertical::Center,
+ Formatting::new(true, false, true),
+ static_table!(
+ "+-------------+----------+"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | A |"
+ "| | string |"
+ "|A long string| with |"
+ "| | new |"
+ "| | line |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+-------------+----------+"
+ "| 1-0 | 1-1 |"
+ "+-------------+----------+"
+ "| A one more | |"
+ "| string | |"
+ "| with | ... |"
+ "| new | |"
+ "| line | |"
+ "+-------------+----------+"
+ ),
+ ),
+ (
+ AlignmentHorizontal::Center,
+ AlignmentVertical::Center,
+ Formatting::new(true, true, true),
+ static_table!(
+ "+-------------+----------+"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | A |"
+ "| | string |"
+ "|A long string| with |"
+ "| | new |"
+ "| | line |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+-------------+----------+"
+ "| 1-0 | 1-1 |"
+ "+-------------+----------+"
+ "| A one more | |"
+ "| string | |"
+ "| with | ... |"
+ "| new | |"
+ "| line | |"
+ "+-------------+----------+"
+ ),
+ ),
+ //
+ (
+ AlignmentHorizontal::Right,
+ AlignmentVertical::Center,
+ Formatting::new(false, false, true),
+ static_table!(
+ "+-------------+----------+"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | A|"
+ "| | string|"
+ "|A long string| with|"
+ "| | new|"
+ "| | line|"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+-------------+----------+"
+ "| 1-0| 1-1|"
+ "+-------------+----------+"
+ "| A one more| |"
+ "| string| |"
+ "| with| ...|"
+ "| new| |"
+ "| line| |"
+ "+-------------+----------+"
+ ),
+ ),
+ (
+ AlignmentHorizontal::Right,
+ AlignmentVertical::Center,
+ Formatting::new(true, false, true),
+ static_table!(
+ "+-------------+----------+"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | A|"
+ "| | string|"
+ "|A long string| with|"
+ "| | new|"
+ "| | line|"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+-------------+----------+"
+ "| 1-0| 1-1|"
+ "+-------------+----------+"
+ "| A one more| |"
+ "| string| |"
+ "| with| ...|"
+ "| new| |"
+ "| line| |"
+ "+-------------+----------+"
+ ),
+ ),
+ (
+ AlignmentHorizontal::Right,
+ AlignmentVertical::Center,
+ Formatting::new(true, true, true),
+ static_table!(
+ "+-------------+----------+"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | A|"
+ "| | string|"
+ "|A long string| with|"
+ "| | new|"
+ "| | line|"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+-------------+----------+"
+ "| 1-0| 1-1|"
+ "+-------------+----------+"
+ "| A one more| |"
+ "| string| |"
+ "| with| ...|"
+ "| new| |"
+ "| line| |"
+ "+-------------+----------+"
+ ),
+ ),
+ //
+ // asd
+ (
+ AlignmentHorizontal::Left,
+ AlignmentVertical::Bottom,
+ Formatting::new(false, false, true),
+ static_table!(
+ "+-------------+----------+"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| |A |"
+ "| | string|"
+ "| |with |"
+ "| | new |"
+ "| |line |"
+ "| | |"
+ "| | |"
+ "|A long string| |"
+ "+-------------+----------+"
+ "|1-0 |1-1 |"
+ "+-------------+----------+"
+ "|A one more | |"
+ "| string | |"
+ "|with | |"
+ "| new | |"
+ "|line |... |"
+ "+-------------+----------+"
+ ),
+ ),
+ (
+ AlignmentHorizontal::Left,
+ AlignmentVertical::Bottom,
+ Formatting::new(true, false, true),
+ static_table!(
+ "+-------------+----------+"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| |A |"
+ "| |string |"
+ "| |with |"
+ "| |new |"
+ "| |line |"
+ "| | |"
+ "| | |"
+ "|A long string| |"
+ "+-------------+----------+"
+ "|1-0 |1-1 |"
+ "+-------------+----------+"
+ "|A one more | |"
+ "|string | |"
+ "|with | |"
+ "|new | |"
+ "|line |... |"
+ "+-------------+----------+"
+ ),
+ ),
+ (
+ AlignmentHorizontal::Left,
+ AlignmentVertical::Bottom,
+ Formatting::new(true, true, true),
+ static_table!(
+ "+-------------+----------+"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| |A |"
+ "| |string |"
+ "| |with |"
+ "| |new |"
+ "|A long string|line |"
+ "+-------------+----------+"
+ "|1-0 |1-1 |"
+ "+-------------+----------+"
+ "|A one more | |"
+ "|string | |"
+ "|with | |"
+ "|new | |"
+ "|line |... |"
+ "+-------------+----------+"
+ ),
+ ),
+ //
+ (
+ AlignmentHorizontal::Center,
+ AlignmentVertical::Bottom,
+ Formatting::new(false, false, true),
+ static_table!(
+ "+-------------+----------+"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | A |"
+ "| | string|"
+ "| | with |"
+ "| | new |"
+ "| | line |"
+ "| | |"
+ "| | |"
+ "|A long string| |"
+ "+-------------+----------+"
+ "| 1-0 | 1-1 |"
+ "+-------------+----------+"
+ "| A one more | |"
+ "| string | |"
+ "| with | |"
+ "| new | |"
+ "| line | ... |"
+ "+-------------+----------+"
+ ),
+ ),
+ (
+ AlignmentHorizontal::Center,
+ AlignmentVertical::Bottom,
+ Formatting::new(true, false, true),
+ static_table!(
+ "+-------------+----------+"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | A |"
+ "| | string |"
+ "| | with |"
+ "| | new |"
+ "| | line |"
+ "| | |"
+ "| | |"
+ "|A long string| |"
+ "+-------------+----------+"
+ "| 1-0 | 1-1 |"
+ "+-------------+----------+"
+ "| A one more | |"
+ "| string | |"
+ "| with | |"
+ "| new | |"
+ "| line | ... |"
+ "+-------------+----------+"
+ ),
+ ),
+ (
+ AlignmentHorizontal::Center,
+ AlignmentVertical::Bottom,
+ Formatting::new(true, true, true),
+ static_table!(
+ "+-------------+----------+"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | A |"
+ "| | string |"
+ "| | with |"
+ "| | new |"
+ "|A long string| line |"
+ "+-------------+----------+"
+ "| 1-0 | 1-1 |"
+ "+-------------+----------+"
+ "| A one more | |"
+ "| string | |"
+ "| with | |"
+ "| new | |"
+ "| line | ... |"
+ "+-------------+----------+"
+ ),
+ ),
+ //
+ (
+ AlignmentHorizontal::Right,
+ AlignmentVertical::Bottom,
+ Formatting::new(false, false, true),
+ static_table!(
+ "+-------------+----------+"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | A|"
+ "| | string|"
+ "| | with|"
+ "| | new|"
+ "| | line|"
+ "| | |"
+ "| | |"
+ "|A long string| |"
+ "+-------------+----------+"
+ "| 1-0| 1-1|"
+ "+-------------+----------+"
+ "| A one more| |"
+ "| string| |"
+ "| with| |"
+ "| new| |"
+ "| line| ...|"
+ "+-------------+----------+"
+ ),
+ ),
+ (
+ AlignmentHorizontal::Right,
+ AlignmentVertical::Bottom,
+ Formatting::new(true, false, true),
+ static_table!(
+ "+-------------+----------+"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | A|"
+ "| | string|"
+ "| | with|"
+ "| | new|"
+ "| | line|"
+ "| | |"
+ "| | |"
+ "|A long string| |"
+ "+-------------+----------+"
+ "| 1-0| 1-1|"
+ "+-------------+----------+"
+ "| A one more| |"
+ "| string| |"
+ "| with| |"
+ "| new| |"
+ "| line| ...|"
+ "+-------------+----------+"
+ ),
+ ),
+ (
+ AlignmentHorizontal::Right,
+ AlignmentVertical::Bottom,
+ Formatting::new(true, true, true),
+ static_table!(
+ "+-------------+----------+"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | |"
+ "| | A|"
+ "| | string|"
+ "| | with|"
+ "| | new|"
+ "|A long string| line|"
+ "+-------------+----------+"
+ "| 1-0| 1-1|"
+ "+-------------+----------+"
+ "| A one more| |"
+ "| string| |"
+ "| with| |"
+ "| new| |"
+ "| line| ...|"
+ "+-------------+----------+"
+ ),
+ ),
+ ];
+
+ let grid = grid(3, 2)
+ .change_cell((0, 0), "A long string")
+ .change_cell((0, 1), "\n\n\nA\n string\nwith\n new\nline\n\n\n")
+ .change_cell((2, 0), "A one more\n string\nwith\n new\nline")
+ .change_cell((2, 1), "...");
+
+ for (i, test) in tests.iter().enumerate() {
+ let table = grid
+ .clone()
+ .config(|cfg| {
+ cfg.set_alignment_horizontal(Entity::Global, test.0);
+ cfg.set_alignment_vertical(Entity::Global, test.1);
+ cfg.set_formatting(Entity::Global, test.2);
+ })
+ .clone()
+ .build();
+
+ let expected = test.3;
+ assert_eq!(table, expected, "test case #{i:?} failed");
+ }
+}
+
+#[test]
+fn formatting_empty_test() {
+ for (rows, cols) in [(0, 0), (0, 4), (4, 0)] {
+ let formatting = Formatting::new(true, true, true);
+ assert_eq!(
+ grid(rows, cols)
+ .config(|cfg| cfg.set_formatting(Entity::Global, formatting))
+ .build(),
+ ""
+ );
+ }
+}
+
+#[test]
+fn formatting_1x1_test() {
+ let json = r#"
+{
+ "id": "0001",
+ "batters": {
+ "batter": [
+ { "id": "1002", "type": "Chocolate" },
+ ]
+ },
+ "topping": [
+ { "id": "5003", "type": "Chocolate" },
+ { "id": "5004", "type": "Maple" }
+ ]
+}"#;
+
+ let grid = grid(1, 1).data([[json]]);
+
+ assert_eq!(
+ grid.clone()
+ .config(
+ |cfg| cfg.set_alignment_horizontal(Entity::Cell(0, 0), AlignmentHorizontal::Left)
+ )
+ .build(),
+ static_table!(
+ r#"+--------------------------------------------------+"#
+ r#"| |"#
+ r#"|{ |"#
+ r#"| "id": "0001", |"#
+ r#"| "batters": { |"#
+ r#"| "batter": [ |"#
+ r#"| { "id": "1002", "type": "Chocolate" },|"#
+ r#"| ] |"#
+ r#"| }, |"#
+ r#"| "topping": [ |"#
+ r#"| { "id": "5003", "type": "Chocolate" }, |"#
+ r#"| { "id": "5004", "type": "Maple" } |"#
+ r#"| ] |"#
+ r#"|} |"#
+ r#"+--------------------------------------------------+"#
+ ),
+ );
+
+ assert_eq!(
+ grid.clone()
+ .config(|cfg| cfg.set_formatting(Entity::Global, Formatting::new(false, false, true)))
+ .build(),
+ static_table!(
+ r#"+--------------------------------------------------+"#
+ r#"| |"#
+ r#"|{ |"#
+ r#"| "id": "0001", |"#
+ r#"| "batters": { |"#
+ r#"| "batter": [ |"#
+ r#"| { "id": "1002", "type": "Chocolate" },|"#
+ r#"| ] |"#
+ r#"| }, |"#
+ r#"| "topping": [ |"#
+ r#"| { "id": "5003", "type": "Chocolate" }, |"#
+ r#"| { "id": "5004", "type": "Maple" } |"#
+ r#"| ] |"#
+ r#"|} |"#
+ r#"+--------------------------------------------------+"#
+ ),
+ );
+
+ assert_eq!(
+ grid.clone()
+ .config(|cfg| cfg.set_formatting(Entity::Global, Formatting::new(true, false, true)))
+ .build(),
+ static_table!(
+ r#"+--------------------------------------------------+"#
+ r#"| |"#
+ r#"|{ |"#
+ r#"|"id": "0001", |"#
+ r#"|"batters": { |"#
+ r#"|"batter": [ |"#
+ r#"|{ "id": "1002", "type": "Chocolate" }, |"#
+ r#"|] |"#
+ r#"|}, |"#
+ r#"|"topping": [ |"#
+ r#"|{ "id": "5003", "type": "Chocolate" }, |"#
+ r#"|{ "id": "5004", "type": "Maple" } |"#
+ r#"|] |"#
+ r#"|} |"#
+ r#"+--------------------------------------------------+"#
+ ),
+ );
+
+ assert_eq!(
+ grid.config(|cfg| cfg.set_formatting(Entity::Global, Formatting::new(true, true, true)))
+ .build(),
+ static_table!(
+ r#"+--------------------------------------------------+"#
+ r#"|{ |"#
+ r#"|"id": "0001", |"#
+ r#"|"batters": { |"#
+ r#"|"batter": [ |"#
+ r#"|{ "id": "1002", "type": "Chocolate" }, |"#
+ r#"|] |"#
+ r#"|}, |"#
+ r#"|"topping": [ |"#
+ r#"|{ "id": "5003", "type": "Chocolate" }, |"#
+ r#"|{ "id": "5004", "type": "Maple" } |"#
+ r#"|] |"#
+ r#"|} |"#
+ r#"| |"#
+ r#"+--------------------------------------------------+"#
+ ),
+ );
+}
+
+#[test]
+fn tabs_arent_handled() {
+ let json = "{
+\t\t \"id\": \"1\",
+\t\t \"name\": \"Hello World\",
+\t\t \"list\": [
+\t\t\t\t [1, 2, 3],
+\t\t\t\t [4, 5, 6],
+\t\t ]
+}";
+
+ let grid = grid(1, 1).data([[json]]);
+
+ assert_eq!(
+ grid.build(),
+ static_table!(
+ "+-----------------------+"
+ "|{ |"
+ "|\t\t \"id\": \"1\", |"
+ "|\t\t \"name\": \"Hello World\",|"
+ "|\t\t \"list\": [ |"
+ "|\t\t\t\t [1, 2, 3], |"
+ "|\t\t\t\t [4, 5, 6], |"
+ "|\t\t ] |"
+ "|} |"
+ "+-----------------------+"
+ ),
+ );
+}
diff --git a/vendor/papergrid/tests/grid/mod.rs b/vendor/papergrid/tests/grid/mod.rs
new file mode 100644
index 000000000..e639d6728
--- /dev/null
+++ b/vendor/papergrid/tests/grid/mod.rs
@@ -0,0 +1,6 @@
+mod column_span;
+mod format_configuration;
+mod render;
+mod row_span;
+mod settings;
+mod styling;
diff --git a/vendor/papergrid/tests/grid/render.rs b/vendor/papergrid/tests/grid/render.rs
new file mode 100644
index 000000000..6c140c9ad
--- /dev/null
+++ b/vendor/papergrid/tests/grid/render.rs
@@ -0,0 +1,251 @@
+// Copyright (c) 2021 Maxim Zhiburt
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all
+// copies or substantial portions of the Software.
+
+#![cfg(feature = "std")]
+
+use std::vec;
+
+use papergrid::{
+ colors::NoColors,
+ config::spanned::SpannedConfig,
+ config::{AlignmentHorizontal, AlignmentVertical, Borders, Entity},
+ grid::iterable::Grid,
+ records::IterRecords,
+};
+
+use crate::util::{grid, ConstantDimension, DEFAULT_BORDERS};
+use testing_table::test_table;
+
+test_table!(render_0x0, grid(0, 0).build(), "");
+
+test_table!(
+ render_1x1,
+ grid(1, 1).change_cell((0, 0), "one line").build(),
+ "+--------+"
+ "|one line|"
+ "+--------+"
+);
+
+test_table!(
+ render_1x1_empty,
+ grid(1, 1).change_cell((0, 0), "").build(),
+ "++"
+ "||"
+ "++"
+);
+
+test_table!(
+ render_1x1_empty_with_height_0,
+ {
+ let data = vec![vec![""]];
+ let data = IterRecords::new(data, 1, Some(1));
+
+ let dims = ConstantDimension(vec![0], vec![0]);
+
+ let mut cfg = SpannedConfig::default();
+ cfg.set_borders(DEFAULT_BORDERS);
+
+ let grid = Grid::new(&data, &dims, &cfg, NoColors);
+ grid.to_string()
+ },
+ "++"
+ "++"
+);
+
+test_table!(
+ render_1x1_empty_with_height_with_width,
+ {
+ let data = vec![vec![String::from("")]];
+ let data = IterRecords::new(&data, 1, Some(1));
+
+ let dims = ConstantDimension(vec![10], vec![0]);
+ let mut cfg = SpannedConfig::default();
+ cfg.set_borders(Borders {
+ top_left: Some('┌'),
+ top_right: Some('â”'),
+ bottom_left: Some('â””'),
+ bottom_right: Some('┘'),
+ top: Some('─'),
+ bottom: Some('─'),
+ ..Default::default()
+ });
+
+ let grid = Grid::new(data, &dims, &cfg, NoColors);
+ grid.to_string()
+ },
+ "┌──────────â”"
+ "└──────────┘"
+);
+
+test_table!(
+ render_2x2,
+ grid(2, 2).build(),
+ "+---+---+"
+ "|0-0|0-1|"
+ "+---+---+"
+ "|1-0|1-1|"
+ "+---+---+"
+);
+
+test_table!(
+ render_3x2,
+ grid(3, 2).build(),
+ "+---+---+"
+ "|0-0|0-1|"
+ "+---+---+"
+ "|1-0|1-1|"
+ "+---+---+"
+ "|2-0|2-1|"
+ "+---+---+"
+);
+
+test_table!(
+ render_1x2,
+ grid(1, 2).data([["hello", "world"]]).build(),
+ "+-----+-----+"
+ "|hello|world|"
+ "+-----+-----+"
+);
+
+test_table!(
+ render_multilane,
+ grid(2, 2)
+ .data([
+ ["left\ncell", "right one"],
+ ["the second column got the beginning here", "and here\nwe\nsee\na\nlong\nstring"],
+ ])
+ .build(),
+ "+----------------------------------------+---------+"
+ "|left |right one|"
+ "|cell | |"
+ "+----------------------------------------+---------+"
+ "|the second column got the beginning here|and here |"
+ "| |we |"
+ "| |see |"
+ "| |a |"
+ "| |long |"
+ "| |string |"
+ "+----------------------------------------+---------+"
+);
+
+test_table!(
+ render_multilane_alignment,
+ grid(2, 2)
+ .config(|cfg|{
+ cfg.set_alignment_horizontal(Entity::Cell(0, 0), AlignmentHorizontal::Center);
+ cfg.set_alignment_horizontal(Entity::Cell(1, 1), AlignmentHorizontal::Right);
+ })
+ .data([
+ ["left\ncell", "right one"],
+ ["the second column got the beginning here", "and here\nwe\nsee\na\nlong\nstring"],
+ ])
+ .build(),
+ "+----------------------------------------+---------+"
+ "| left |right one|"
+ "| cell | |"
+ "+----------------------------------------+---------+"
+ "|the second column got the beginning here| and here|"
+ "| | we |"
+ "| | see |"
+ "| | a |"
+ "| | long |"
+ "| | string |"
+ "+----------------------------------------+---------+"
+);
+
+test_table!(
+ render_multilane_vertical_alignment,
+ grid(2, 2)
+ .data([
+ ["left\ncell", "right one"],
+ ["the second column got the beginning here", "and here\nwe\nsee\na\nlong\nstring"],
+ ])
+ .config(|cfg|{
+ cfg.set_alignment_horizontal(Entity::Cell(0, 0), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Entity::Cell(1, 0), AlignmentVertical::Center);
+ cfg.set_alignment_horizontal(Entity::Cell(1, 1), AlignmentHorizontal::Right);
+ })
+ .build(),
+ "+----------------------------------------+---------+"
+ "| left |right one|"
+ "| cell | |"
+ "+----------------------------------------+---------+"
+ "| | and here|"
+ "| | we |"
+ "|the second column got the beginning here| see |"
+ "| | a |"
+ "| | long |"
+ "| | string |"
+ "+----------------------------------------+---------+"
+);
+
+test_table!(
+ render_empty_cell,
+ grid(2, 2).change_cell((0, 1), "").build(),
+ "+---+---+"
+ "|0-0| |"
+ "+---+---+"
+ "|1-0|1-1|"
+ "+---+---+"
+);
+
+test_table!(
+ hieroglyph_multiline_handling,
+ grid(1, 2).data([["哈哈", "哈\n哈"]]).build(),
+ "+----+--+"
+ "|哈哈|哈|"
+ "| |哈|"
+ "+----+--+"
+);
+
+test_table!(
+ hieroglyph_handling_2,
+ grid(2, 1).data([["জী._ডি._বà§à¦²à¦•_সলà§à¦Ÿà¦²à§‡à¦•_দূরà§à¦—া_পà§à¦œà§‹_২০১৮.jpg"], ["Hello"]]).build(),
+ "+------------------------------------+"
+ "|জী._ডি._বà§à¦²à¦•_সলà§à¦Ÿà¦²à§‡à¦•_দূরà§à¦—া_পà§à¦œà§‹_২০১৮.jpg|"
+ "+------------------------------------+"
+ "|Hello |"
+ "+------------------------------------+"
+);
+
+test_table!(
+ doesnt_render_return_carige_0,
+ grid(2, 2).change_cell((0, 1), "123\r\r\r567").build(),
+ "+---+------+"
+ "|0-0|123\r\r\r567|"
+ "+---+------+"
+ "|1-0|1-1 |"
+ "+---+------+"
+);
+
+test_table!(
+ doesnt_render_return_carige_1,
+ grid(2, 2).change_cell((1, 1), "12345678").change_cell((0, 1), "123\r\r\r567").build(),
+ "+---+--------+"
+ "|0-0|123\r\r\r567 |"
+ "+---+--------+"
+ "|1-0|12345678|"
+ "+---+--------+"
+);
+
+// #[test]
+// #[ignore = "I am not sure what is the right behaiviour here"]
+// fn hieroglyph_handling() {
+// let grid = util::grid_from([["哈哈", "哈"]]);
+
+// assert_eq!(
+// grid,
+// "+----+--+\n\
+// |哈哈 |哈 |\n\
+// +----+--+",
+// )
+// }
diff --git a/vendor/papergrid/tests/grid/row_span.rs b/vendor/papergrid/tests/grid/row_span.rs
new file mode 100644
index 000000000..054ee2af3
--- /dev/null
+++ b/vendor/papergrid/tests/grid/row_span.rs
@@ -0,0 +1,1062 @@
+#![cfg(feature = "std")]
+
+use papergrid::config::{
+ AlignmentHorizontal, AlignmentVertical, Borders,
+ Entity::{self, *},
+ Indent, Sides,
+};
+
+use crate::util::grid;
+use testing_table::test_table;
+
+test_table!(
+ _2x2_vertical_alignment_center,
+ grid(2, 2)
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_alignment_vertical(Cell(0, 0), AlignmentVertical::Center);
+ })
+ .build(),
+ "+---+---+"
+ "| |0-1|"
+ "+0-0+---+"
+ "| |1-1|"
+ "+---+---+"
+);
+
+test_table!(
+ _2x2_vertical_alignment_bottom,
+ grid(2, 2)
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_alignment_vertical(Cell(0, 0), AlignmentVertical::Bottom);
+ })
+ .build(),
+ "+---+---+"
+ "| |0-1|"
+ "+ +---+"
+ "|0-0|1-1|"
+ "+---+---+"
+);
+
+test_table!(
+ _2x2_multiline,
+ grid(2, 2)
+ .change_cell((0, 0), "0-0\n0-1xxx")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_alignment_vertical(Cell(0, 0), AlignmentVertical::Center);
+ })
+ .build(),
+ "+------+---+"
+ "|0-0 |0-1|"
+ "+0-1xxx+---+"
+ "| |1-1|"
+ "+------+---+"
+);
+
+test_table!(
+ _2x2_multiline_vertical_alignment_bottom,
+ grid(2, 2)
+ .change_cell((0, 0), "0-0\n0-1xxx")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_alignment_vertical(Cell(0, 0), AlignmentVertical::Bottom);
+ })
+ .build(),
+ "+------+---+"
+ "| |0-1|"
+ "+0-0 +---+"
+ "|0-1xxx|1-1|"
+ "+------+---+"
+);
+
+test_table!(
+ _4x3_multiline_0,
+ grid(4, 3)
+ .data([
+ ["first line", "0-1", "full last line"],
+ ["", "1", ""],
+ ["0", "1", ""],
+ ["3-0", "3-1", ""],
+ ])
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 2), 4);
+ })
+ .build(),
+ "+----------+---+--------------+"
+ "|first line|0-1|full last line|"
+ "+ +---+ +"
+ "| |1 | |"
+ "+----------+---+ +"
+ "|0 |1 | |"
+ "+----------+---+ +"
+ "|3-0 |3-1| |"
+ "+----------+---+--------------+"
+);
+
+test_table!(
+ _3x2_with_horizontal_ident_on_spanned_cell,
+ grid(3, 2)
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_padding(Cell(1, 0), Sides::new(Indent::spaced(4), Indent::spaced(4), Indent::default(), Indent::default()));
+ })
+ .build(),
+ "+---+---+"
+ "|0-0|0-1|"
+ "+ +---+"
+ "| |1-1|"
+ "+---+---+"
+ "|2-0|2-1|"
+ "+---+---+"
+);
+
+test_table!(
+ _3x2_with_horizontal_ident,
+ grid(3, 2)
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_padding(Cell(0, 0), Sides::new(Indent::spaced(4), Indent::spaced(4), Indent::default(), Indent::default()));
+ })
+ .build(),
+ "+-----------+---+"
+ "| 0-0 |0-1|"
+ "+ +---+"
+ "| |1-1|"
+ "+-----------+---+"
+ "|2-0 |2-1|"
+ "+-----------+---+"
+);
+
+test_table!(
+ _3x2_with_vertical_ident,
+ grid(3, 2)
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_padding(Cell(0, 0), Sides::new(Indent::default(), Indent::default(), Indent::spaced(4), Indent::spaced(4)));
+ })
+ .build(),
+ "+---+---+"
+ "| |0-1|"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+0-0+---+"
+ "| |1-1|"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+---+---+"
+ "|2-0|2-1|"
+ "+---+---+"
+);
+
+test_table!(
+ _3x3_render_0,
+ grid(3, 3)
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 3);
+ cfg.set_row_span((0, 1), 2);
+ cfg.set_row_span((0, 2), 2);
+ })
+ .build(),
+ "+---+---+---+"
+ "+0-0+0-1+0-2+"
+ "+ +---+---+"
+ "| |2-1|2-2|"
+ "+---+---+---+"
+);
+
+test_table!(
+ _3x3_render_1,
+ grid(3, 3)
+ .change_cell((0, 1), "t\ne\nx\nt")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 3);
+ cfg.set_row_span((0, 1), 2);
+ cfg.set_row_span((0, 2), 2);
+ })
+ .build(),
+ "+---+---+---+"
+ "|0-0|t |0-2|"
+ "| |e | |"
+ "+ +x + +"
+ "| |t | |"
+ "+ +---+---+"
+ "| |2-1|2-2|"
+ "+---+---+---+"
+);
+
+test_table!(
+ _3x3_coliison_0,
+ grid(3, 3)
+ .change_cell((0, 0), "0-0xxxxxxx")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((1, 1), 2);
+ })
+ .build(),
+ "+----------+---+---+"
+ "|0-0xxxxxxx|0-1|0-2|"
+ "+ +---+---+"
+ "| |1-1|1-2|"
+ "+----------+ +---+"
+ "|2-0 | |2-2|"
+ "+----------+---+---+"
+);
+
+test_table!(
+ _3x3_coliison_1,
+ grid(3, 3)
+ .change_cell((1, 1), "1-1xxxxxxx")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((1, 1), 2);
+ })
+ .build(),
+ "+---+----------+---+"
+ "|0-0|0-1 |0-2|"
+ "+ +----------+---+"
+ "| |1-1xxxxxxx|1-2|"
+ "+---+ +---+"
+ "|2-0| |2-2|"
+ "+---+----------+---+"
+);
+
+test_table!(
+ _3x3_coliison_2,
+ grid(3, 3)
+ .change_cell((1, 1), "1-1\nx\nx\nxxxxx")
+ .change_cell((0, 2), "2-0x\nxxx\nxx\nxxxxxxx")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((1, 1), 2);
+ })
+ .build(),
+ "+---+-----+-------+"
+ "|0-0|0-1 |2-0x |"
+ "| | |xxx |"
+ "| | |xx |"
+ "| | |xxxxxxx|"
+ "+ +-----+-------+"
+ "| |1-1 |1-2 |"
+ "| |x | |"
+ "+---+x +-------+"
+ "|2-0|xxxxx|2-2 |"
+ "+---+-----+-------+"
+);
+
+test_table!(
+ _3x3_coliison_3,
+ grid(3, 3)
+ .change_cell((1, 2), "2-1\nxx\nxx\nxx\nxxxxxx\nx")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((1, 1), 2);
+ })
+ .build(),
+ "+---+---+------+"
+ "|0-0|0-1|0-2 |"
+ "+ +---+------+"
+ "| |1-1|2-1 |"
+ "| | |xx |"
+ "| | |xx |"
+ "| | |xx |"
+ "| | |xxxxxx|"
+ "| | |x |"
+ "+---+ +------+"
+ "|2-0| |2-2 |"
+ "+---+---+------+"
+);
+
+test_table!(
+ _3x3_coliison_4,
+ grid(3, 3)
+ .change_cell((2, 1), "0-2\nx\nx\nx\nx\nxxxxxxx\nx\nx")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((1, 2), 2);
+ })
+ .build(),
+ "+---+-------+---+"
+ "|0-0|0-1 |0-2|"
+ "+ +-------+---+"
+ "| |1-1 |1-2|"
+ "+---+-------+ +"
+ "|2-0|0-2 | |"
+ "| |x | |"
+ "| |x | |"
+ "| |x | |"
+ "| |x | |"
+ "| |xxxxxxx| |"
+ "| |x | |"
+ "| |x | |"
+ "+---+-------+---+"
+);
+
+test_table!(
+ _3x3_first_row,
+ grid(3, 3)
+ .change_cell((0, 0), "0-0\nxx\nx\nx\nx\nx\nx")
+ .config(|cfg|{ cfg.set_row_span((0, 0), 2); })
+ .build(),
+ "+---+---+---+"
+ "|0-0|0-1|0-2|"
+ "|xx | | |"
+ "|x | | |"
+ "+x +---+---+"
+ "|x |1-1|1-2|"
+ "|x | | |"
+ "|x | | |"
+ "+---+---+---+"
+ "|2-0|2-1|2-2|"
+ "+---+---+---+"
+);
+
+test_table!(
+ _2x3_with_different_length,
+ grid(2, 3)
+ .change_cell((0, 0), "f\nir\nst\n ro\nw")
+ .change_cell((0, 2), "a\n \nlonger\n \nsecond\n \nrow")
+ .change_cell((1, 0), "0")
+ .change_cell((1, 1), "1")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 2), 2);
+ })
+ .build(),
+ "+---+---+------+"
+ "|f |0-1|a |"
+ "|ir | | |"
+ "|st | |longer|"
+ "+ ro+---+ +"
+ "|w |1 |second|"
+ "| | | |"
+ "| | |row |"
+ "+---+---+------+"
+);
+
+test_table!(
+ _2x2_with_odd_length,
+ grid(2, 2)
+ .change_cell((0, 0), "3\n \n \n ")
+ .change_cell((0, 1), "2")
+ .change_cell((1, 1), "4")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ })
+ .build(),
+ "+-+-+"
+ "|3|2|"
+ "| | |"
+ "+ +-+"
+ "| |4|"
+ "+-+-+"
+);
+
+test_table!(
+ _2x3_only_col_spaned,
+ grid(2, 3)
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 1), 2);
+ cfg.set_row_span((0, 2), 2);
+ })
+ .build(),
+ "+---+---+---+"
+ "+0-0+0-1+0-2+"
+ "+---+---+---+"
+);
+
+test_table!(
+ _2x2_render_0,
+ grid(2, 2)
+ .change_cell((0, 0), "1\n\n\n\n\n\n\n23")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ })
+ .build(),
+ "+--+---+"
+ "|1 |0-1|"
+ "| | |"
+ "| | |"
+ "| | |"
+ "+ +---+"
+ "| |1-1|"
+ "| | |"
+ "|23| |"
+ "+--+---+"
+);
+
+test_table!(
+ _2x2_render_1,
+ grid(2, 2)
+ .data([["12\n3\n4", "a\ns\ndw"], ["asd", "asd"]])
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 1), 2);
+ })
+ .build(),
+ "+--+--+"
+ "|12|a |"
+ "+3 +s +"
+ "|4 |dw|"
+ "+--+--+"
+);
+
+test_table!(
+ _2x2_render_2,
+ grid(2, 2)
+ .data([["1", "a"], ["asd", "asd"]])
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 1), 2);
+ })
+ .build(),
+ "+-+-+"
+ "+1+a+"
+ "+-+-+"
+);
+
+test_table!(
+ _2x2_render_3,
+ grid(2, 2)
+ .data([["1as\nd\n", "a"], ["as\ndasdds\na", "asd"]])
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 1), 2);
+ })
+ .build(),
+ "+---+-+"
+ "|1as|a|"
+ "+d + +"
+ "| | |"
+ "+---+-+"
+);
+
+test_table!(
+ _2x2_render_4,
+ grid(2, 2)
+ .data([["1as\nd\n", "a"], ["as\ndasdds\na", "asd"]])
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 1), 2);
+ cfg.set_alignment_vertical(Entity::Global, AlignmentVertical::Center)
+ })
+ .build(),
+ "+---+-+"
+ "|1as| |"
+ "+d +a+"
+ "| | |"
+ "+---+-+"
+);
+
+test_table!(
+ _2x2_render_5,
+ grid(2, 2)
+ .data([["1a\ns\nd\n", "a"], ["as\ndasdds\na", "asd"]])
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 1), 2);
+ cfg.set_alignment_vertical(Entity::Global, AlignmentVertical::Center)
+ })
+ .build(),
+ "+--+-+"
+ "|1a| |"
+ "|s |a|"
+ "+d + +"
+ "| | |"
+ "+--+-+"
+);
+
+test_table!(
+ _2x2_render_6,
+ grid(2, 2)
+ .data([["1a\ns\nd", "a"], ["as\ndasdds\na", "asd"]])
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 1), 2);
+ cfg.set_alignment_vertical(Entity::Global, AlignmentVertical::Bottom)
+ })
+ .build(),
+ "+--+-+"
+ "|1a| |"
+ "+s + +"
+ "|d |a|"
+ "+--+-+"
+);
+
+test_table!(
+ _2x2_with_no_split_style,
+ grid(2, 2)
+ .change_cell((0, 0), "1\n2\n3")
+ .config(|cfg|{
+ cfg.set_borders(Borders::default());
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_alignment_vertical(Cell(0, 0), AlignmentVertical::Center);
+ })
+ .build(),
+ "10-1"
+ "2 "
+ "31-1"
+);
+
+test_table!(
+ _3x2_with_zero_row_span_0,
+ grid(3, 2)
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ })
+ .build(),
+ "+---+---+"
+ "|0-0|0-1|"
+ "+ +---+"
+ "| |1-1|"
+ "+---+---+"
+ "|2-0|2-1|"
+ "+---+---+"
+);
+
+test_table!(
+ _3x2_with_zero_row_span_1,
+ grid(3, 2)
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 1), 2);
+ })
+ .build(),
+ "+---+---+"
+ "+0-0+0-1+"
+ "+---+---+"
+ "|2-0|2-1|"
+ "+---+---+"
+);
+
+test_table!(
+ _3x2_with_zero_row_span_2,
+ grid(3, 2)
+ .config(|cfg|{
+ cfg.set_row_span((0, 1), 3);
+ })
+ .build(),
+ "+---+---+"
+ "|0-0|0-1|"
+ "+---+ +"
+ "|1-0| |"
+ "+---+ +"
+ "|2-0| |"
+ "+---+---+"
+);
+
+test_table!(
+ _3x2_with_zero_row_span_3,
+ grid(3, 2)
+ .config(|cfg|{
+ cfg.set_row_span((0, 1), 3);
+ cfg.set_row_span((0, 0), 3);
+ })
+ .build(),
+ "+---+---+"
+ "+0-0+0-1+"
+ "+ + +"
+ "+---+---+"
+);
+
+test_table!(
+ _2x2_with_zero_row_span_4,
+ grid(2, 2)
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 1), 2);
+ })
+ .build(),
+ "+---+---+"
+ "+0-0+0-1+"
+ "+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_0,
+ grid(4, 4)
+ .change_cell((1, 1), "123\n345\n555\n333")
+ .config(|cfg|{
+ cfg.set_row_span((1, 1), 2);
+ cfg.set_column_span((1, 1), 2);
+ cfg.set_alignment_horizontal(Cell(1, 1), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Cell(1, 1), AlignmentVertical::Center);
+ })
+ .build(),
+ "+---+---+---+---+"
+ "|0-0|0-1|0-2|0-3|"
+ "+---+---+---+---+"
+ "|1-0| 123 |1-3|"
+ "| | 345 | |"
+ "+---+ 555 +---+"
+ "|2-0| 333 |2-3|"
+ "+---+---+---+---+"
+ "|3-0|3-1|3-2|3-3|"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_1,
+ grid(4, 4)
+ .change_cell((0, 0), "123\n345\n555\n333")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_alignment_horizontal(Cell(0, 0), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Cell(0, 0), AlignmentVertical::Center);
+ })
+ .build(),
+ "+---+---+---+---+"
+ "| 123 |0-2|0-3|"
+ "| 345 | | |"
+ "+ 555 +---+---+"
+ "| 333 |1-2|1-3|"
+ "+---+---+---+---+"
+ "|2-0|2-1|2-2|2-3|"
+ "+---+---+---+---+"
+ "|3-0|3-1|3-2|3-3|"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_2,
+ grid(4, 4)
+ .change_cell((2, 0), "123\n345\n555\n333")
+ .config(|cfg|{
+ cfg.set_row_span((2, 0), 2);
+ cfg.set_column_span((2, 0), 2);
+ cfg.set_alignment_horizontal(Cell(2, 0), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Cell(2, 0), AlignmentVertical::Center);
+ })
+ .build(),
+ "+---+---+---+---+"
+ "|0-0|0-1|0-2|0-3|"
+ "+---+---+---+---+"
+ "|1-0|1-1|1-2|1-3|"
+ "+---+---+---+---+"
+ "| 123 |2-2|2-3|"
+ "| 345 | | |"
+ "+ 555 +---+---+"
+ "| 333 |3-2|3-3|"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_3,
+ grid(4, 4)
+ .change_cell((2, 2), "123\n345\n555\n333")
+ .config(|cfg|{
+ cfg.set_row_span((2, 2), 2);
+ cfg.set_column_span((2, 2), 2);
+ cfg.set_alignment_horizontal(Cell(2, 2), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Cell(2, 2), AlignmentVertical::Center);
+ })
+ .build(),
+ "+---+---+---+---+"
+ "|0-0|0-1|0-2|0-3|"
+ "+---+---+---+---+"
+ "|1-0|1-1|1-2|1-3|"
+ "+---+---+---+---+"
+ "|2-0|2-1| 123 |"
+ "| | | 345 |"
+ "+---+---+ 555 +"
+ "|3-0|3-1| 333 |"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_4,
+ grid(4, 4)
+ .change_cell((0, 2), "123\n345\n555\n333")
+ .config(|cfg|{
+ cfg.set_row_span((0, 2), 2);
+ cfg.set_column_span((0, 2), 2);
+ cfg.set_alignment_horizontal(Cell(0, 2), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Cell(0, 2), AlignmentVertical::Center);
+ })
+ .build(),
+ "+---+---+---+---+"
+ "|0-0|0-1| 123 |"
+ "| | | 345 |"
+ "+---+---+ 555 +"
+ "|1-0|1-1| 333 |"
+ "+---+---+---+---+"
+ "|2-0|2-1|2-2|2-3|"
+ "+---+---+---+---+"
+ "|3-0|3-1|3-2|3-3|"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_5,
+ grid(4, 4)
+ .change_cell((0, 1), "123\n345\n555\n333")
+ .config(|cfg|{
+ cfg.set_row_span((0, 1), 2);
+ cfg.set_column_span((0, 1), 2);
+ cfg.set_alignment_horizontal(Cell(0, 1), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Cell(0, 1), AlignmentVertical::Center);
+ })
+ .build(),
+ "+---+---+---+---+"
+ "|0-0| 123 |0-3|"
+ "| | 345 | |"
+ "+---+ 555 +---+"
+ "|1-0| 333 |1-3|"
+ "+---+---+---+---+"
+ "|2-0|2-1|2-2|2-3|"
+ "+---+---+---+---+"
+ "|3-0|3-1|3-2|3-3|"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_6,
+ grid(4, 4)
+ .change_cell((1, 1), "123\n345\n555\n333")
+ .config(|cfg|{
+ cfg.set_row_span((1, 1), 3);
+ cfg.set_column_span((1, 1), 3);
+ cfg.set_alignment_horizontal(Cell(1, 1), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Cell(1, 1), AlignmentVertical::Center);
+ })
+ .build(),
+ "+---+---+---+---+"
+ "|0-0|0-1|0-2|0-3|"
+ "+---+---+---+---+"
+ "|1-0| 123 |"
+ "+---+ 345 +"
+ "|2-0| 555 |"
+ "+---+ 333 +"
+ "|3-0| |"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_7,
+ grid(4, 4)
+ .change_cell((0, 0), "123\n345\n555\n333")
+ .config(|cfg|{
+ cfg.set_row_span((0, 0), 3);
+ cfg.set_column_span((0, 0), 3);
+ cfg.set_alignment_horizontal(Cell(0, 0), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Cell(0, 0), AlignmentVertical::Center);
+ })
+ .build(),
+ "+---+---+---+---+"
+ "| 123 |0-3|"
+ "+ 345 +---+"
+ "| 555 |1-3|"
+ "+ 333 +---+"
+ "| |2-3|"
+ "+---+---+---+---+"
+ "|3-0|3-1|3-2|3-3|"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_8,
+ grid(4, 4)
+ .change_cell((0, 1), "123\n345\n555\n333")
+ .config(|cfg|{
+ cfg.set_row_span((0, 1), 3);
+ cfg.set_column_span((0, 1), 3);
+ cfg.set_alignment_horizontal(Cell(0, 1), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Cell(0, 1), AlignmentVertical::Center);
+ })
+ .build(),
+ "+---+---+---+---+"
+ "|0-0| 123 |"
+ "+---+ 345 +"
+ "|1-0| 555 |"
+ "+---+ 333 +"
+ "|2-0| |"
+ "+---+---+---+---+"
+ "|3-0|3-1|3-2|3-3|"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_9,
+ grid(4, 4)
+ .change_cell((1, 0), "123\n345\n555\n333")
+ .config(|cfg|{
+ cfg.set_row_span((1, 0), 3);
+ cfg.set_column_span((1, 0), 3);
+ cfg.set_alignment_horizontal(Cell(1, 0), AlignmentHorizontal::Center);
+ cfg.set_alignment_vertical(Cell(1, 0), AlignmentVertical::Center);
+ })
+ .build(),
+ "+---+---+---+---+"
+ "|0-0|0-1|0-2|0-3|"
+ "+---+---+---+---+"
+ "| 123 |1-3|"
+ "+ 345 +---+"
+ "| 555 |2-3|"
+ "+ 333 +---+"
+ "| |3-3|"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_10,
+ grid(4, 4)
+ .change_cell((0, 0), "hello\nworld\n!\n!\n!\n!")
+ .config(|cfg|{
+ cfg.set_column_span((1, 1), 2);
+ cfg.set_column_span((3, 0), 3);
+ cfg.set_row_span((0, 0), 2);
+ cfg.set_row_span((0, 3), 3);
+ })
+ .build(),
+ "+-----+---+---+---+"
+ "|hello|0-1|0-2|0-3|"
+ "|world| | | |"
+ "|! | | | |"
+ "+! +---+---+ +"
+ "|! |1-1 | |"
+ "|! | | |"
+ "+-----+---+---+ +"
+ "|2-0 |2-1|2-2| |"
+ "+-----+---+---+---+"
+ "|3-0 |3-3|"
+ "+-----+---+---+---+"
+);
+
+test_table!(
+ _4x4_with_row_span_and_col_span_11,
+ grid(4, 4)
+ .change_cell((0, 2), "q\nw\ne\nr\nt")
+ .change_cell((0, 3), "q1\nw1\ne1\nr1\nt1")
+ .config(|cfg|{
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_row_span((0, 2), 2);
+ cfg.set_row_span((0, 3), 3);
+ })
+ .build(),
+ "+---+---+---+---+"
+ "|0-0 |q |q1 |"
+ "| |w |w1 |"
+ "+---+---+e +e1 +"
+ "|1-0|1-1|r |r1 |"
+ "| | |t |t1 |"
+ "+---+---+---+ +"
+ "|2-0|2-1|2-2| |"
+ "+---+---+---+---+"
+ "|3-0|3-1|3-2|3-3|"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ _3x5_with_row_span_and_col_span_12,
+ grid(3, 5)
+ .change_cell((0, 3), "q\nw\ne\nr\nt")
+ .change_cell((0, 4), "q1\nw1\ne1\nr1\nt1")
+ .config(|cfg|{
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_row_span((0, 3), 2);
+ cfg.set_row_span((0, 4), 3);
+ })
+ .build(),
+ "+---+---+---+---+--+"
+ "|0-0 |0-2|q |q1|"
+ "| | |w |w1|"
+ "+---+---+---+e +e1+"
+ "|1-0|1-1|1-2|r |r1|"
+ "| | | |t |t1|"
+ "+---+---+---+---+ +"
+ "|2-0|2-1|2-2|2-3| |"
+ "+---+---+---+---+--+"
+);
+
+test_table!(
+ _3x5_with_row_span_and_col_span_13,
+ grid(3, 5)
+ .change_cell((0, 3), "q\nw\ne\nr\nt\n")
+ .change_cell((0, 4), "q1\nw1\ne1\nr1\nt1\n")
+ .config(|cfg|{
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_row_span((0, 3), 2);
+ cfg.set_row_span((0, 4), 3);
+ })
+ .build(),
+ "+---+---+---+---+--+"
+ "|0-0 |0-2|q |q1|"
+ "| | |w |w1|"
+ "| | |e |e1|"
+ "+---+---+---+r +r1+"
+ "|1-0|1-1|1-2|t |t1|"
+ "| | | | | |"
+ "+---+---+---+---+ +"
+ "|2-0|2-1|2-2|2-3| |"
+ "+---+---+---+---+--+"
+);
+
+test_table!(
+ _3x5_with_row_span_and_col_span_14,
+ grid(3, 5)
+ .change_cell((0, 3), "q\nw\ne\nr\nt\n")
+ .change_cell((0, 4), "q1\nw1\ne1\nr1\nt1\n")
+ .config(|cfg|{
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_row_span((0, 3), 2);
+ cfg.set_row_span((0, 4), 3);
+ cfg.set_padding(
+ Cell(0, 0),
+ Sides::new(Indent::new(2, ' '), Indent::new(2, ' '), Indent::new(2, ' '), Indent::new(2, ' '))
+ );
+ cfg.set_padding(
+ Cell(0, 3),
+ Sides::new(Indent::new(2, ' '), Indent::new(2, ' '), Indent::new(2, ' '), Indent::new(2, ' '))
+ );
+ cfg.set_padding(
+ Cell(1, 2),
+ Sides::new(Indent::new(2, ' '), Indent::new(2, ' '), Indent::new(4, ' '), Indent::new(2, ' '))
+ );
+ })
+ .build(),
+ "+---+---+-------+-----+--+"
+ "| |0-2 | |q1|"
+ "| | | |w1|"
+ "| 0-0 | | q |e1|"
+ "| | | w |r1|"
+ "| | | e |t1|"
+ "+---+---+-------+ r + +"
+ "|1-0|1-1| | t | |"
+ "| | | | | |"
+ "| | | | | |"
+ "| | | | | |"
+ "| | | 1-2 | | |"
+ "| | | | | |"
+ "| | | | | |"
+ "+---+---+-------+-----+ +"
+ "|2-0|2-1|2-2 |2-3 | |"
+ "+---+---+-------+-----+--+"
+);
+
+// is this correct?
+test_table!(
+ _3x4_with_row_span_and_col_span_13,
+ grid(3, 5)
+ .config(|cfg|{
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_column_span((1, 0), 2);
+ cfg.set_row_span((1, 0), 2);
+ })
+ .build(),
+ "+-+-+---+---+---+"
+ "|0-0|0-2|0-3|0-4|"
+ "+-+-+---+---+---+"
+ "|1-0|1-2|1-3|1-4|"
+ "+ +---+---+---+"
+ "| |2-2|2-3|2-4|"
+ "+-+-+---+---+---+"
+);
+
+test_table!(
+ _5x2_render_0,
+ grid(5, 2)
+ .change_cell((1, 1), "1\n2\n3\n4")
+ .config(|cfg|{
+ cfg.set_row_span((1, 1), 4);
+ })
+ .build(),
+ "+---+---+"
+ "|0-0|0-1|"
+ "+---+---+"
+ "|1-0|1 |"
+ "+---+2 +"
+ "|2-0|3 |"
+ "+---+4 +"
+ "|3-0| |"
+ "+---+ +"
+ "|4-0| |"
+ "+---+---+"
+);
+
+test_table!(
+ _3x4_column_span_0,
+ grid(3, 4)
+ .config(|cfg|{
+ cfg.set_column_span((0, 0), 2);
+ cfg.set_column_span((1, 0), 2);
+ cfg.set_column_span((2, 0), 2);
+ })
+ .build(),
+ "+-+-+---+---+"
+ "|0-0|0-2|0-3|"
+ "+-+-+---+---+"
+ "|1-0|1-2|1-3|"
+ "+-+-+---+---+"
+ "|2-0|2-2|2-3|"
+ "+-+-+---+---+"
+);
+
+test_table!(
+ _3x4_column_span_1,
+ grid(3, 4)
+ .config(|cfg|{
+ cfg.set_column_span((0, 0), 3);
+ cfg.set_column_span((1, 0), 3);
+ cfg.set_column_span((2, 0), 3);
+ })
+ .build(),
+ "+-+++---+"
+ "|0-0|0-3|"
+ "+-+++---+"
+ "|1-0|1-3|"
+ "+-+++---+"
+ "|2-0|2-3|"
+ "+-+++---+"
+);
+
+test_table!(
+ _3x4_column_span_2,
+ grid(3, 4)
+ .change_cell((0, 0), "")
+ .change_cell((1, 0), "")
+ .change_cell((2, 0), "")
+ .config(|cfg|{
+ cfg.set_column_span((0, 0), 3);
+ cfg.set_column_span((1, 0), 3);
+ cfg.set_column_span((2, 0), 3);
+ })
+ .build(),
+ "++++---+"
+ "| |0-3|"
+ "++++---+"
+ "| |1-3|"
+ "++++---+"
+ "| |2-3|"
+ "++++---+"
+);
+
+// #[test]
+// #[ignore = "todo; create some logic of combining spans? or somehow resolving to not get the following"]
+// fn render_grid_with_row_3() {
+// let mut grid = util::new_grid::<3, 5>();
+
+// grid.set(Entity::Cell(0, 0), Settings::new().span(2));
+// grid.set(Entity::Cell(0, 1), Settings::new().span(2));
+// grid.set(Entity::Cell(0, 2), Settings::new().span(2));
+
+// assert_eq!(
+// grid.to_string(),
+// concat!(
+// "+---+---+---+---+--+\n",
+// "|0-0 |0-2|q |q1|\n",
+// "| | |w |w1|\n",
+// "+---+---+---+e +e1+\n",
+// "|1-0|1-1|1-2|r |r1|\n",
+// "| | | |t |t1|\n",
+// "+---+---+---+---+ +\n",
+// "|2-0|2-1|2-2|2-3| |\n",
+// "+---+---+---+---+--+\n",
+// )
+// );
+// }
diff --git a/vendor/papergrid/tests/grid/settings.rs b/vendor/papergrid/tests/grid/settings.rs
new file mode 100644
index 000000000..7e0446aab
--- /dev/null
+++ b/vendor/papergrid/tests/grid/settings.rs
@@ -0,0 +1,265 @@
+#![cfg(feature = "std")]
+
+use papergrid::color::AnsiColor;
+use papergrid::config::{AlignmentHorizontal, Border, Borders, Entity, Indent, Sides};
+
+use crate::util::grid;
+use testing_table::test_table;
+
+test_table!(
+ override_by_global_alignment_0,
+ grid(2, 2)
+ .data([["xxxxx", "xx"], ["y", "yyyyyyyyyy"]])
+ .config(|cfg| cfg.set_alignment_horizontal(Entity::Cell(0, 1), AlignmentHorizontal::Right))
+ .build(),
+ "+-----+----------+"
+ "|xxxxx| xx|"
+ "+-----+----------+"
+ "|y |yyyyyyyyyy|"
+ "+-----+----------+"
+);
+
+test_table!(
+ override_by_global_alignment_1,
+ grid(2, 2)
+ .data([["xxxxx", "xx"], ["y", "yyyyyyyyyy"]])
+ .config(|cfg| cfg.set_alignment_horizontal(Entity::Global, AlignmentHorizontal::Center))
+ .build(),
+ "+-----+----------+"
+ "|xxxxx| xx |"
+ "+-----+----------+"
+ "| y |yyyyyyyyyy|"
+ "+-----+----------+"
+);
+
+test_table!(
+ remove_border_test,
+ grid(2, 2)
+ .config(|cfg| {
+ cfg.set_borders(Borders::default());
+ cfg.set_border(
+ (0, 0),
+ Border {
+ top: Some('x'),
+ bottom: Some('o'),
+ left: Some('q'),
+ ..Default::default()
+ },
+ );
+
+ cfg.remove_border((0, 0), (2, 2));
+ })
+ .build(),
+ "0-00-1\n1-01-1"
+);
+
+test_table!(
+ entity_row_overrides_column_intersection_0,
+ grid(2, 2)
+ .config(|cfg| {
+ cfg.set_borders(Borders::default());
+ cfg.set_padding(
+ Entity::Column(0),
+ Sides {
+ bottom: Indent::new(3, '$'),
+ ..Default::default()
+ },
+ );
+ })
+ .build(),
+ "0-00-1"
+ "$$$ "
+ "$$$ "
+ "$$$ "
+ "1-01-1"
+ "$$$ "
+ "$$$ "
+ "$$$ "
+);
+
+test_table!(
+ entity_row_overrides_column_intersection_1,
+ grid(2, 2)
+ .config(|cfg| {
+ cfg.set_borders(Borders::default());
+ cfg.set_padding(
+ Entity::Column(0),
+ Sides {
+ bottom: Indent::new(3, '$'),
+ ..Default::default()
+ },
+ );
+ cfg.set_padding(
+ Entity::Row(1),
+ Sides {
+ bottom: Indent::new(2, '#'),
+ ..Default::default()
+ },
+ );
+ })
+ .build(),
+ "0-00-1"
+ "$$$ "
+ "$$$ "
+ "$$$ "
+ "1-01-1"
+ "######"
+ "######"
+);
+
+test_table!(
+ entity_column_overrides_row_intersection_0,
+ grid(2, 2)
+ .config(|cfg| {
+ cfg.set_borders(Borders::default());
+ cfg.set_padding(
+ Entity::Row(0),
+ Sides {
+ bottom: Indent::new(3, '$'),
+ ..Default::default()
+ },
+ );
+ })
+ .build(),
+ "0-00-1\n$$$$$$\n$$$$$$\n$$$$$$\n1-01-1"
+);
+
+test_table!(
+ entity_column_overrides_row_intersection_1,
+ grid(2, 2)
+ .config(|cfg| {
+ cfg.set_borders(Borders::default());
+ cfg.set_padding(
+ Entity::Row(0),
+ Sides::new(
+ Indent::default(),
+ Indent::default(),
+ Indent::default(),
+ Indent::new(3, '$'),
+ ),
+ );
+ cfg.set_padding(
+ Entity::Column(1),
+ Sides::new(
+ Indent::default(),
+ Indent::default(),
+ Indent::default(),
+ Indent::new(2, '#'),
+ ),
+ );
+ })
+ .build(),
+ "0-00-1\n$$$###\n$$$###\n$$$###\n1-01-1\n ###\n ###"
+);
+
+test_table!(
+ test_justification_char_left_alignment,
+ grid(2, 2)
+ .data([["Hello", "World"], ["", "Hello Hello Hello Hello Hello"]])
+ .config(|cfg| cfg.set_justification(Entity::Global, '$'))
+ .build(),
+ "+-----+-----------------------------+"
+ "|Hello|World$$$$$$$$$$$$$$$$$$$$$$$$|"
+ "+-----+-----------------------------+"
+ "|$$$$$|Hello Hello Hello Hello Hello|"
+ "+-----+-----------------------------+"
+);
+
+test_table!(
+ test_justification_char_right_alignment,
+ grid(2, 2)
+ .data([["Hello", "World"], ["", "Hello Hello Hello Hello Hello"]])
+ .config(|cfg| {
+ cfg.set_justification(Entity::Global, '$');
+ cfg.set_alignment_horizontal(Entity::Global, AlignmentHorizontal::Right);
+ })
+ .build(),
+ "+-----+-----------------------------+"
+ "|Hello|$$$$$$$$$$$$$$$$$$$$$$$$World|"
+ "+-----+-----------------------------+"
+ "|$$$$$|Hello Hello Hello Hello Hello|"
+ "+-----+-----------------------------+"
+);
+
+test_table!(
+ test_justification_char_center_alignment,
+ grid(2, 2)
+ .data([["Hello", "World"], ["", "Hello Hello Hello Hello Hello"]])
+ .config(|cfg| {
+ cfg.set_justification(Entity::Global, '$');
+ cfg.set_alignment_horizontal(Entity::Global, AlignmentHorizontal::Center);
+ })
+ .build(),
+ "+-----+-----------------------------+"
+ "|Hello|$$$$$$$$$$$$World$$$$$$$$$$$$|"
+ "+-----+-----------------------------+"
+ "|$$$$$|Hello Hello Hello Hello Hello|"
+ "+-----+-----------------------------+"
+);
+
+test_table!(
+ test_justification_color_left_alignment,
+ grid(2, 2)
+ .data([["Hello", "World"], ["", "Hello Hello Hello Hello Hello"]])
+ .config(|cfg| {
+ cfg.set_justification(Entity::Global, '$');
+ cfg.set_justification_color(Entity::Global, Some(AnsiColor::new("\u{1b}[34m".into(), "\u{1b}[39m".into())));
+ })
+ .build(),
+ "+-----+-----------------------------+"
+ "|Hello|World\u{1b}[34m$$$$$$$$$$$$$$$$$$$$$$$$\u{1b}[39m|"
+ "+-----+-----------------------------+"
+ "|\u{1b}[34m$$$$$\u{1b}[39m|Hello Hello Hello Hello Hello|"
+ "+-----+-----------------------------+"
+);
+
+test_table!(
+ test_justification_color_right_alignment,
+ grid(2, 2)
+ .data([["Hello", "World"], ["", "Hello Hello Hello Hello Hello"]])
+ .config(|cfg| {
+ cfg.set_justification(Entity::Global, '$');
+ cfg.set_justification_color(Entity::Global, Some(AnsiColor::new("\u{1b}[34m".into(), "\u{1b}[39m".into())));
+ cfg.set_alignment_horizontal(Entity::Global, AlignmentHorizontal::Right);
+ })
+ .build(),
+ "+-----+-----------------------------+"
+ "|Hello|\u{1b}[34m$$$$$$$$$$$$$$$$$$$$$$$$\u{1b}[39mWorld|"
+ "+-----+-----------------------------+"
+ "|\u{1b}[34m$$$$$\u{1b}[39m|Hello Hello Hello Hello Hello|"
+ "+-----+-----------------------------+"
+);
+
+test_table!(
+ test_justification_color_center_alignment,
+ grid(2, 2)
+ .data([["Hello", "World"], ["", "Hello Hello Hello Hello Hello"]])
+ .config(|cfg| {
+ cfg.set_justification(Entity::Global, '$');
+ cfg.set_justification_color(Entity::Global, Some(AnsiColor::new("\u{1b}[34m".into(), "\u{1b}[39m".into())));
+ cfg.set_alignment_horizontal(Entity::Global, AlignmentHorizontal::Center);
+ })
+ .build(),
+ "+-----+-----------------------------+"
+ "|Hello|\u{1b}[34m$$$$$$$$$$$$\u{1b}[39mWorld\u{1b}[34m$$$$$$$$$$$$\u{1b}[39m|"
+ "+-----+-----------------------------+"
+ "|\u{1b}[34m$$\u{1b}[39m\u{1b}[34m$$$\u{1b}[39m|Hello Hello Hello Hello Hello|"
+ "+-----+-----------------------------+"
+);
+
+test_table!(
+ test_justification_color_center_alignment_entity,
+ grid(2, 2)
+ .data([["Hello", "World"], ["", "Hello Hello Hello Hello Hello"]])
+ .config(|cfg| {
+ cfg.set_justification(Entity::Cell(0, 0), '$');
+ cfg.set_justification_color(Entity::Column(1), Some(AnsiColor::new("\u{1b}[34m".into(), "\u{1b}[39m".into())));
+ cfg.set_alignment_horizontal(Entity::Row(2), AlignmentHorizontal::Center);
+ })
+ .build(),
+ "+-----+-----------------------------+"
+ "|Hello|World\u{1b}[34m \u{1b}[39m|"
+ "+-----+-----------------------------+"
+ "| |Hello Hello Hello Hello Hello|"
+ "+-----+-----------------------------+"
+);
diff --git a/vendor/papergrid/tests/grid/styling.rs b/vendor/papergrid/tests/grid/styling.rs
new file mode 100644
index 000000000..b1886a8de
--- /dev/null
+++ b/vendor/papergrid/tests/grid/styling.rs
@@ -0,0 +1,334 @@
+#![cfg(feature = "std")]
+
+use papergrid::config::{AlignmentHorizontal, Border, Borders, Entity, Indent, Sides};
+
+use crate::util::grid;
+use testing_table::test_table;
+
+#[cfg(feature = "color")]
+use ::{owo_colors::OwoColorize, papergrid::color::AnsiColor, std::convert::TryFrom};
+
+test_table!(
+ grid_2x2_custom_frame_test,
+ grid(2, 2)
+ .config(|cfg| (0..2).for_each(|r| (0..2).for_each(|c| cfg.set_border((r, c), Border::full('*', '*', '|', '|', '#', '#', '#', '#')))))
+ .build(),
+ "#***#***#"
+ "|0-0|0-1|"
+ "#***#***#"
+ "|1-0|1-1|"
+ "#***#***#"
+);
+
+test_table!(
+ grid_2x2_custom_column_test_0,
+ grid(2, 2)
+ .config(|cfg| (0..2).for_each(|r| cfg.set_border((r, 1), Border::full('*', '*', '|', '|', '#', '#', '#', '#'))))
+ .build(),
+ "+---#***#"
+ "|0-0|0-1|"
+ "+---#***#"
+ "|1-0|1-1|"
+ "+---#***#"
+);
+
+test_table!(
+ grid_2x2_custom_column_test_1,
+ grid(2, 2)
+ .config(|cfg| (0..2).for_each(|r| cfg.set_border((r, 0), Border::full('*', '*', '|', '|', '#', '#', '#', '#'))))
+ .build(),
+ "#***#---+"
+ "|0-0|0-1|"
+ "#***#---+"
+ "|1-0|1-1|"
+ "#***#---+"
+);
+
+test_table!(
+ grid_2x2_custom_row_test_0,
+ grid(2, 2)
+ .config(|cfg| (0..2).for_each(|c| cfg.set_border((0, c), Border::full('*', '*', '|', '|', '#', '#', '#', '#'))))
+ .build(),
+ "#***#***#"
+ "|0-0|0-1|"
+ "#***#***#"
+ "|1-0|1-1|"
+ "+---+---+"
+);
+
+test_table!(
+ grid_2x2_custom_row_test_1,
+ grid(2, 2)
+ .config(|cfg| (0..2).for_each(|c| cfg.set_border((1, c), Border::full('*', '*', '|', '|', '#', '#', '#', '#'))))
+ .build(),
+ "+---+---+"
+ "|0-0|0-1|"
+ "#***#***#"
+ "|1-0|1-1|"
+ "#***#***#"
+);
+
+test_table!(
+ grid_2x2_change_cell_border_test_0,
+ grid(2, 2)
+ .config(|cfg| (0..2).for_each(|_| cfg.set_border((0, 1), Border::full('*', '^', '@', '#', '~', '!', '%', '&'))))
+ .build(),
+ "+---~***!"
+ "|0-0@0-1#"
+ "+---%^^^&"
+ "|1-0|1-1|"
+ "+---+---+"
+);
+
+test_table!(
+ grid_2x2_alignment_test_0,
+ grid(2, 2)
+ .change_cell((0, 0), "asd ")
+ .change_cell((0, 1), "asd ")
+ .config(|cfg| {
+ cfg.set_alignment_horizontal(Entity::Column(0), AlignmentHorizontal::Left);
+ cfg.set_alignment_horizontal(Entity::Column(1), AlignmentHorizontal::Right);
+ })
+ .build(),
+ "+-------+-------+"
+ "|asd |asd |"
+ "+-------+-------+"
+ "|1-0 | 1-1|"
+ "+-------+-------+"
+);
+
+test_table!(
+ grid_2x2_alignment_test_1,
+ grid(2, 2)
+ .data([["asd ", "asd "], ["asd ", "asd "]])
+ .config(|cfg| {
+ cfg.set_alignment_horizontal(Entity::Column(0), AlignmentHorizontal::Left);
+ cfg.set_alignment_horizontal(Entity::Column(1), AlignmentHorizontal::Right);
+ })
+ .build(),
+ "+-------+-------+"
+ "|asd |asd |"
+ "+-------+-------+"
+ "|asd |asd |"
+ "+-------+-------+"
+);
+
+test_table!(
+ grid_2x2_indent_test,
+ grid(2, 2)
+ .config(|cfg| {
+ cfg.set_padding(
+ Entity::Global,
+ Sides::new(
+ Indent::spaced(1),
+ Indent::spaced(1),
+ Indent::spaced(1),
+ Indent::spaced(1),
+ ),
+ );
+ cfg.set_padding(Entity::Column(0), Sides::new(
+ Indent::default(),
+ Indent::default(),
+ Indent::default(),
+ Indent::default(),
+ ));
+ })
+ .build(),
+ "+---+-----+"
+ "|0-0| |"
+ "| | 0-1 |"
+ "| | |"
+ "+---+-----+"
+ "|1-0| |"
+ "| | 1-1 |"
+ "| | |"
+ "+---+-----+"
+);
+
+test_table!(
+ grid_2x2_vertical_resize_test,
+ grid(2, 2).change_cell((1, 1), "asd ").build(),
+ "+---+--------+"
+ "|0-0|0-1 |"
+ "+---+--------+"
+ "|1-0|asd |"
+ "+---+--------+"
+);
+
+test_table!(
+ grid_2x2_without_frame_test_0,
+ grid(2, 2)
+ .config(|cfg| {
+ cfg.set_borders(Borders {
+ vertical: Some(' '),
+ ..Default::default()
+ });
+ })
+ .build(),
+ "0-0 0-1"
+ "1-0 1-1"
+);
+
+test_table!(
+ grid_2x2_without_frame_test_1,
+ grid(2, 2)
+ .config(|cfg| {
+ cfg.set_borders(Borders {
+ vertical: Some(' '),
+ horizontal: Some(' '),
+ intersection: Some(' '),
+ ..Default::default()
+ });
+ })
+ .build(),
+ "0-0 0-1"
+ " "
+ "1-0 1-1"
+);
+
+test_table!(
+ grid_2x2_custom_border_test,
+ grid(2, 2)
+ .config(|cfg| {
+ cfg.set_border(
+ (0, 0),
+ Border {
+ bottom: Some('-'),
+ top: Some('*'),
+ left: Some('$'),
+ left_top_corner: Some(' '),
+ left_bottom_corner: Some('+'),
+ ..Default::default()
+ },
+ );
+ cfg.set_border(
+ (0, 1),
+ Border::full('*', '-', '@', '%', ' ', ' ', '+', '+'),
+ );
+ cfg.set_border(
+ (1, 0),
+ Border {
+ bottom: Some('*'),
+ left: Some('#'),
+ left_top_corner: Some('+'),
+ left_bottom_corner: Some('\u{0020}'),
+ ..Default::default()
+ },
+ );
+ cfg.set_border(
+ (1, 1),
+ Border {
+ bottom: Some('*'),
+ left: Some('^'),
+ left_top_corner: Some('+'),
+ right_top_corner: Some('+'),
+ right: Some('!'),
+ left_bottom_corner: Some(' '),
+ right_bottom_corner: Some(' '),
+ ..Default::default()
+ },
+ );
+ })
+ .build(),
+ " *** *** "
+ "$0-0@0-1%"
+ "+---+---+"
+ "#1-0^1-1!"
+ "\u{0020}*** *** "
+);
+
+test_table!(
+ when_border_is_not_complete_default_char_is_used_test,
+ grid(2, 2)
+ .config(|cfg| {
+ cfg.set_borders(Borders {
+ vertical: Some(' '),
+ ..Default::default()
+ });
+ cfg.set_border(
+ (1, 1),
+ Border {
+ top: Some('*'),
+ ..Default::default()
+ },
+ );
+ })
+ .build(),
+ "0-0 0-1"
+ " ***"
+ "1-0 1-1"
+);
+
+test_table!(
+ when_1_vertical_is_set_second_must_use_default_test,
+ grid(2, 2)
+ .config(|cfg| {
+ cfg.set_borders(Borders::default());
+ cfg.set_border(
+ (1, 0),
+ Border {
+ right: Some('*'),
+ ..Default::default()
+ },
+ );
+ })
+ .build(),
+ "0-0 0-1"
+ "1-0*1-1"
+);
+
+#[cfg(feature = "color")]
+test_table!(
+ grid_2x2_ansi_border_test,
+ grid(2, 2)
+ .config(|cfg| {
+ (0..2).for_each(|r| (0..2).for_each(|c| {
+ let top = AnsiColor::try_from(" ".green().on_red().to_string()).unwrap();
+ let bottom = AnsiColor::try_from(" ".on_green().blue().to_string()).unwrap();
+ let left = AnsiColor::try_from(" ".on_red().white().to_string()).unwrap();
+ let right = AnsiColor::try_from(" ".on_red().green().to_string()).unwrap();
+ let tl = AnsiColor::try_from(" ".magenta().to_string()).unwrap();
+ let tr = AnsiColor::try_from(" ".on_blue().to_string()).unwrap();
+ let bl = AnsiColor::try_from(" ".yellow().to_string()).unwrap();
+ let br = AnsiColor::try_from(" ".on_yellow().to_string()).unwrap();
+
+ cfg.set_border((r, c), Border::full('*', '#', '~', '!', '@', '$', '%', '^'));
+ cfg.set_border_color((r, c), Border::full(top, bottom, left, right, tl, tr, bl, br));
+ }))
+ })
+ .build(),
+ "\u{1b}[35m@\u{1b}[39m\u{1b}[32m\u{1b}[41m***\u{1b}[39m\u{1b}[49m\u{1b}[35m@\u{1b}[39m\u{1b}[32m\u{1b}[41m***\u{1b}[39m\u{1b}[49m\u{1b}[44m$\u{1b}[49m"
+ "\u{1b}[37m\u{1b}[41m~\u{1b}[39m\u{1b}[49m0-0\u{1b}[37m\u{1b}[41m~\u{1b}[39m\u{1b}[49m0-1\u{1b}[32m\u{1b}[41m!\u{1b}[39m\u{1b}[49m"
+ "\u{1b}[35m@\u{1b}[39m\u{1b}[32m\u{1b}[41m***\u{1b}[39m\u{1b}[49m\u{1b}[35m@\u{1b}[39m\u{1b}[32m\u{1b}[41m***\u{1b}[39m\u{1b}[49m\u{1b}[44m$\u{1b}[49m"
+ "\u{1b}[37m\u{1b}[41m~\u{1b}[39m\u{1b}[49m1-0\u{1b}[37m\u{1b}[41m~\u{1b}[39m\u{1b}[49m1-1\u{1b}[32m\u{1b}[41m!\u{1b}[39m\u{1b}[49m"
+ "\u{1b}[33m%\u{1b}[39m\u{1b}[34m\u{1b}[42m###\u{1b}[39m\u{1b}[49m\u{1b}[33m%\u{1b}[39m\u{1b}[34m\u{1b}[42m###\u{1b}[39m\u{1b}[49m\u{1b}[43m^\u{1b}[49m"
+);
+
+#[cfg(feature = "color")]
+test_table!(
+ grid_2x2_ansi_global_set_test,
+ grid(2, 2)
+ .config(|cfg| {
+ let color = " ".on_blue().red().bold().to_string();
+ cfg.set_border_color_global(AnsiColor::try_from(color).unwrap());
+ })
+ .build(),
+ "\u{1b}[1m\u{1b}[31m\u{1b}[44m+---+---+\u{1b}[22m\u{1b}[39m\u{1b}[49m"
+ "\u{1b}[1m\u{1b}[31m\u{1b}[44m|\u{1b}[22m\u{1b}[39m\u{1b}[49m0-0\u{1b}[1m\u{1b}[31m\u{1b}[44m|\u{1b}[22m\u{1b}[39m\u{1b}[49m0-1\u{1b}[1m\u{1b}[31m\u{1b}[44m|\u{1b}[22m\u{1b}[39m\u{1b}[49m"
+ "\u{1b}[1m\u{1b}[31m\u{1b}[44m+---+---+\u{1b}[22m\u{1b}[39m\u{1b}[49m"
+ "\u{1b}[1m\u{1b}[31m\u{1b}[44m|\u{1b}[22m\u{1b}[39m\u{1b}[49m1-0\u{1b}[1m\u{1b}[31m\u{1b}[44m|\u{1b}[22m\u{1b}[39m\u{1b}[49m1-1\u{1b}[1m\u{1b}[31m\u{1b}[44m|\u{1b}[22m\u{1b}[39m\u{1b}[49m"
+ "\u{1b}[1m\u{1b}[31m\u{1b}[44m+---+---+\u{1b}[22m\u{1b}[39m\u{1b}[49m"
+);
+
+#[cfg(feature = "color")]
+#[test]
+fn grid_2x2_ansi_border_none_if_string_is_not_1_char_test() {
+ assert!(AnsiColor::try_from("12").is_ok());
+ assert!(AnsiColor::try_from("123").is_ok());
+ assert!(AnsiColor::try_from("").is_err());
+
+ assert!(AnsiColor::try_from("1").is_ok());
+ assert!(AnsiColor::try_from("1".on_red().to_string()).is_ok());
+ assert!(AnsiColor::try_from("1".on_red().blue().to_string()).is_ok());
+ assert!(AnsiColor::try_from("1".truecolor(0, 1, 3).on_truecolor(1, 2, 3).to_string()).is_ok());
+}
diff --git a/vendor/papergrid/tests/main.rs b/vendor/papergrid/tests/main.rs
new file mode 100644
index 000000000..e34e9e61c
--- /dev/null
+++ b/vendor/papergrid/tests/main.rs
@@ -0,0 +1,3 @@
+mod grid;
+
+mod util;
diff --git a/vendor/papergrid/tests/util/grid_builder.rs b/vendor/papergrid/tests/util/grid_builder.rs
new file mode 100644
index 000000000..c2a82b87a
--- /dev/null
+++ b/vendor/papergrid/tests/util/grid_builder.rs
@@ -0,0 +1,139 @@
+#![cfg(feature = "std")]
+#![allow(dead_code, unused_macros, unused_imports)]
+
+use std::collections::HashMap;
+
+use papergrid::{
+ colors::NoColors,
+ config::spanned::SpannedConfig,
+ config::{Borders, Position},
+ dimension::spanned::SpannedGridDimension,
+ dimension::{Dimension, Estimate},
+ grid::iterable::Grid,
+ records::{IterRecords, Records},
+};
+
+pub fn grid(rows: usize, cols: usize) -> GridBuilder {
+ GridBuilder::new(rows, cols)
+}
+
+#[derive(Debug, Default, Clone)]
+pub struct GridBuilder {
+ size: (usize, usize),
+ cfg: SpannedConfig,
+ data: HashMap<Position, String>,
+}
+
+impl GridBuilder {
+ pub fn new(rows: usize, cols: usize) -> Self {
+ let mut cfg = SpannedConfig::default();
+ cfg.set_borders(DEFAULT_BORDERS);
+
+ Self {
+ size: (rows, cols),
+ cfg,
+ ..Default::default()
+ }
+ }
+
+ pub fn config(mut self, mut f: impl FnMut(&mut SpannedConfig)) -> Self {
+ f(&mut self.cfg);
+ self
+ }
+
+ pub fn data(
+ mut self,
+ data: impl IntoIterator<Item = impl IntoIterator<Item = impl Into<String>>>,
+ ) -> Self {
+ for (i, rows) in data.into_iter().enumerate() {
+ for (j, text) in rows.into_iter().enumerate() {
+ let text = text.into();
+ self.data.insert((i, j), text);
+ }
+ }
+
+ self
+ }
+
+ pub fn change_cell(mut self, pos: Position, text: impl Into<String>) -> Self {
+ self.data.insert(pos, text.into());
+ self
+ }
+
+ pub fn build(self) -> String {
+ let mut data = records(self.size.0, self.size.1);
+ for ((row, col), text) in self.data {
+ data[row][col] = text;
+ }
+
+ let grid = build_grid(data, self.cfg, self.size);
+ grid.to_string()
+ }
+}
+
+fn build_grid(
+ data: Vec<Vec<String>>,
+ cfg: SpannedConfig,
+ shape: (usize, usize),
+) -> Grid<IterRecords<Vec<Vec<String>>>, SpannedGridDimension, SpannedConfig, NoColors> {
+ let records = IterRecords::new(data, shape.1, Some(shape.0));
+
+ let mut dims = SpannedGridDimension::default();
+ dims.estimate(&records, &cfg);
+
+ Grid::new(records, dims, cfg, NoColors)
+}
+
+fn records(rows: usize, cols: usize) -> Vec<Vec<String>> {
+ let mut records = vec![vec![String::new(); cols]; rows];
+ (0..rows).for_each(|row| {
+ (0..cols).for_each(|col| {
+ let text = format!("{row}-{col}");
+ records[row][col] = text;
+ });
+ });
+
+ records
+}
+
+pub const DEFAULT_BORDERS: Borders<char> = Borders {
+ top: Some('-'),
+ top_left: Some('+'),
+ top_right: Some('+'),
+ top_intersection: Some('+'),
+
+ bottom: Some('-'),
+ bottom_left: Some('+'),
+ bottom_right: Some('+'),
+ bottom_intersection: Some('+'),
+
+ horizontal: Some('-'),
+ left_intersection: Some('+'),
+ right_intersection: Some('+'),
+
+ left: Some('|'),
+ right: Some('|'),
+ vertical: Some('|'),
+
+ intersection: Some('+'),
+};
+
+/// A [`Estimate`]or of a width for a [`Grid`].
+///
+/// [`Grid`]: crate::grid::iterable::Grid
+#[derive(Debug, Default, Clone, PartialEq, Eq)]
+pub struct ConstantDimension(pub Vec<usize>, pub Vec<usize>);
+
+impl Dimension for ConstantDimension {
+ fn get_width(&self, column: usize) -> usize {
+ self.0[column]
+ }
+
+ fn get_height(&self, row: usize) -> usize {
+ self.1[row]
+ }
+}
+
+impl<R> Estimate<R, SpannedConfig> for ConstantDimension {
+ fn estimate(&mut self, _: R, _: &SpannedConfig) {}
+}
diff --git a/vendor/papergrid/tests/util/mod.rs b/vendor/papergrid/tests/util/mod.rs
new file mode 100644
index 000000000..26c629e14
--- /dev/null
+++ b/vendor/papergrid/tests/util/mod.rs
@@ -0,0 +1,4 @@
+mod grid_builder;
+
+#[cfg(feature = "std")]
+pub use grid_builder::*;
diff --git a/vendor/portable-atomic/.cargo-checksum.json b/vendor/portable-atomic/.cargo-checksum.json
index 6a7f4b85a..047319811 100644
--- a/vendor/portable-atomic/.cargo-checksum.json
+++ b/vendor/portable-atomic/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"177bc25d1b4814c79475079ac2f0ef99eff3c6c523526c3277800fc41d11e31b","Cargo.toml":"5555415edbd947cbe04d38ef6bda9f3850c2d80a42a012108d4120ef96110800","LICENSE-APACHE":"0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"430b60c39d42c184a1d84440030b5fcf6bb1d063b8addca73c0fc75567a469ef","build.rs":"d0ff60460a3e2b7b3ba88f16e1a4046a1d1d1ccb972190abfcd7a8097e10e758","no_atomic.rs":"df45d31c318f9ef3fdb23be74a099b0f92b767eb2be4fd042af7624f396d77ae","src/gen/utils.rs":"47bce86be869f36179c909fd5f64833f37518c2abfd4d0dfd50b40c54e48189f","src/imp/arm_linux.rs":"c0b4088b58e5452735839fc66fc3586656eb28b0ff28ee3f7f0f64450ebc3797","src/imp/atomic128/README.md":"8876cee63b3d1a43a2d8f33945b5a5214fae8c4fd6dfb7114e2b68c8276dd4b9","src/imp/atomic128/aarch64.rs":"29bb6e87a916ed56cdfe4fe14646833f2eebe8172be752604b8efaff1f68ef34","src/imp/atomic128/detect/aarch64_aa64reg.rs":"49a60028cd3a92d6ecfd3433f5ace9f990e4811145db3a8855315701c7059acb","src/imp/atomic128/detect/aarch64_fuchsia.rs":"a03822fb1c7b9902b8a49437eac1af3cc098ce0f51bbde25da46fa4687486689","src/imp/atomic128/detect/aarch64_macos.rs":"60fec5d72252adc16ac3cfc80d7aad023e91f3dc7cc5c3393ed0d2a2bb343ec5","src/imp/atomic128/detect/aarch64_windows.rs":"6d816dc3d8c3d25c894c9ae9261f26281089e1cb90e9f39bfceb7e2a49bb8ad7","src/imp/atomic128/detect/auxv.rs":"28eedc614f29b064160c2b1879d01fddcfe8fc782ac8928600f5ae57320d7247","src/imp/atomic128/detect/common.rs":"0032948a4ee51a82509560c26dc97b54728df000d3c60ae014c3a70c3811e7fc","src/imp/atomic128/detect/x86_64.rs":"11f55b37813288e14225fbbf43b347609275e11a8241d5e43bfadd670591412c","src/imp/atomic128/intrinsics.rs":"f4800de7ba2ca1928bede21eca97acb016d3734e0ceb212b58e79688bf657234","src/imp/atomic128/macros.rs":"6ddd9c5296b2d8cb1644ebd5e4d052ce7f03ec5483af392a45b8201bf4d38b55","src/imp/atomic128/powerpc64.rs":"37680ca2ca1b4e5bac62206d89c4a8b0d8a129ecdd7a17c902b6758fef39aea7","src/imp/atomic128/s390x.rs":"72b85f6eaef0afc85e0307587168be98a523e2c44acb622e612a8371c2dc3b6b","src/imp/atomic128/x86_64.rs":"8c511096f4400479d2fa686fb4493044653e72190717a5e20402f0830281c01e","src/imp/core_atomic.rs":"630a2aafda1f670a6367aa58e82f249b5cab3c9bdb539641c9561029212ee75b","src/imp/fallback/mod.rs":"81e9c535b1c63f0aac62f590d5d582492b1eac2960d9c4e029c88f6634b18a39","src/imp/fallback/outline_atomics.rs":"69238338020387e687b3f9ad17bf49f7e5d55003b4289cb7070c9f9904d7dc45","src/imp/fallback/seq_lock.rs":"e1c90fda080889dc6118ac7ea71103f951a2898a117a2ee3bf013e0eac8926c0","src/imp/fallback/seq_lock_wide.rs":"9daeb6609127a42b30625419184d676934e8548a954df22432b6e840c29268e6","src/imp/fallback/utils.rs":"3d1198c26e107bd809642bcf50fceb01d2ee9ff4bc1ae6d7cb3eb44f66e67eee","src/imp/float.rs":"2eeeee7aa731db8736b5993c6bf02e3fc8fb3bf5317bccf74762f4feefe71f5a","src/imp/interrupt/README.md":"574c690b7437de56ded65b4ee14e2d40fd037616d193ea1c02736c38ac1141ab","src/imp/interrupt/armv4t.rs":"d54d431cf05e5ab817e1cfda5e3b8304f1555cdab27937b717c8db65f987dd3c","src/imp/interrupt/armv6m.rs":"2202c1328f70e2ac858c0fb05bdd584c10f30cd0780a108c483185901fbc9dd8","src/imp/interrupt/avr.rs":"6aa6250fdc550293931da05b77436754788e16960325d945b1118dc3ae7898e7","src/imp/interrupt/mod.rs":"ff24cc9399949a9517f89bb420a536e9d1aa93f780740e0b89e95a9409ebacce","src/imp/interrupt/msp430.rs":"a8de3e2bffa8de3700e6fd0bf2209fdc853883385a5c03c858da15dff20ba610","src/imp/interrupt/riscv.rs":"63f45a0e229a1713955b14afc6a82a1fa8cdfcd33edf19c37968496527fd4135","src/imp/interrupt/xtensa.rs":"01ef724b8eb7b0b306f832418293b3523087693e1e6e4db5401e48aa468188c5","src/imp/mod.rs":"e32668b4b839a74ca27bf944d5250142557a3b846097f326eb349301e7e7e108","src/imp/msp430.rs":"4c7bf16c909b789788b4589de3d1afcc8d4ad512f737d3cd3fefce8056d749aa","src/imp/riscv.rs":"558a202bf1b49f86e236c549292b70fcda690356379784152098bf78a4da386d","src/imp/x86.rs":"ba8c7cc6a59640dc515819702b55e0b11233efc527a4896a55efb08f449dcfeb","src/lib.rs":"f1292c1be24d197479c1744102408af271c5ee1c9764159fbda591146e32c35c","src/tests/helper.rs":"0c01ca4ae2e3c2c4ee0cbd9781b9d76758eeaa307aab7f4ac8461270cbc76d02","src/tests/mod.rs":"7523d9d0debd162f709d72064e63eff2962af1cfa2ea0d4e2408157975f0b3c4","src/tests/serde.rs":"348eb2370eb3a7b4e5727ef9605e94e97adf6bd0a5c97798eb528301b43e40c5","src/utils.rs":"2bd5896e9820456bc01731599036a11c884cbf283e6b35ce88b5e70ecf366055","version.rs":"106a19a6ea56204abfcf58aac4be87676b049586af4247eb49c7fe55abe8aea3"},"package":"f32154ba0af3a075eefa1eda8bb414ee928f62303a54ea85b8d6638ff1a6ee9e"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"66c245f7f6a9328b9621f84fb3b48a582b606afab8461c24ec8bcb1336817e87","Cargo.toml":"292291011081baf8fbdcadc56ccb2c31b8903b97eb780bc254419782032e5015","LICENSE-APACHE":"0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"85091dd4fe4bd5a09ca7a32a8289814688803b3a42bbae49cb222912b20fe84f","build.rs":"fc5594461a43672bcdbe5ca79b38f572c16cfe1fa27bd060ef2edab506c7a8f9","no_atomic.rs":"3c8c8ad562d62cb394225b4ba7276bbd68d73ac521bf62c55fd38ef54c825e2d","src/gen/utils.rs":"c2fedb10f6ffaeaab452448035411d320b022ac8b40bd7d39a9915a1721bfd9c","src/imp/arm_linux.rs":"db5f26797ae08ca94ddefd70eb1686892ff337399f6d69febba9990a179b28cf","src/imp/atomic128/README.md":"5ced2e6e676d295e1e6393da2b21d22b126410fcb610428c7127db27671a4873","src/imp/atomic128/aarch64.rs":"97391aa4e91892ff907482558d93fc99d921f23262328de6e7e220a26dd3ddae","src/imp/atomic128/detect/aarch64_aa64reg.rs":"623cd4b1abd456394a11d9abd9fc0019aa872bbeaf24a1e03b1befa5a1432bd6","src/imp/atomic128/detect/aarch64_fuchsia.rs":"4fa7ca4676a26b832b128f56c8fdf89509ebf500c79fce3261559cb3fab8d96f","src/imp/atomic128/detect/aarch64_macos.rs":"f0fc115eafa758c4bbf67876e947292a7fe91705edaa66d4f801f7a3b6a8ab26","src/imp/atomic128/detect/aarch64_windows.rs":"67b4f758c1c12b8a3505d343339e0b9131d40ba63107d73c7fc2f73fb9a24b72","src/imp/atomic128/detect/auxv.rs":"2173b1276baf2041eb4234d906d516ccd4b4390230ec7274780a35690e74e3e4","src/imp/atomic128/detect/common.rs":"dfe6096fad93071f7a47d75cfdafc6c7e4075e4545a10ed69dd1f858511288b5","src/imp/atomic128/detect/x86_64.rs":"e07734056d5da7c6d44770b89218cb97aadc2a13edbcd8c3c90db09c8f7b262a","src/imp/atomic128/intrinsics.rs":"8abad68147053ed549501e9d945d1c81db0eac0889c8912edd60bfbdab911790","src/imp/atomic128/macros.rs":"41ee6ec2d04083306e2552b194ecd9557514618cd856bcf967f4f7a6ebf6f85a","src/imp/atomic128/powerpc64.rs":"7c424189ff981ba98fdcf27ac5d4ae27839a1ea77e275a70f0500fc2a346632b","src/imp/atomic128/s390x.rs":"341f33441149798a7fceb585326c6eb0541bf9594f6bdd926306af7b859f5b74","src/imp/atomic128/x86_64.rs":"5fecbefb4bb366e2811fdafab3d9dabb016577bd05240467cf82a4fde66558fc","src/imp/core_atomic.rs":"2e92240b4a2c6234eefe061f8dcd6c3d19bbe62451f6cc2be7df8bddc8d1f420","src/imp/fallback/mod.rs":"c464f4fa00d79c56da919ab11eaef91e4ecd771d5d75e95cb5de8e4633542505","src/imp/fallback/outline_atomics.rs":"0cf233a0b0d5861e90eb443c55352308659fda209bbb0eac3b7db30ea90e3d4d","src/imp/fallback/seq_lock.rs":"b591a77f202095e31c855f61932145e85206a489ee1a0b23b89e4411ef02807e","src/imp/fallback/seq_lock_wide.rs":"e8f22b7bda9eb7b55c4c216dd78a2c4e3ca3ba8fda3385d1a55605e302d39f53","src/imp/fallback/utils.rs":"f70d8f16f9f963c6efd8983a8c5fcadc85bbab964f93ace94fbe4cb54a6857b4","src/imp/float.rs":"20b9b64298e236cd86c930b9e40085688fa10b359a7cbe346d39c7202920a6ad","src/imp/interrupt/README.md":"396d099bf7519755780fef3933657022bd5e9f41210cc4177e18e29bac6fede1","src/imp/interrupt/armv4t.rs":"4aafd3341a806b9a72e26c6c1f8a64f0642c39f5aa8fa0913f45955555af4cb7","src/imp/interrupt/armv6m.rs":"21f500ffbfd801b20dfb14e192b995dd26c3031adb5c9d9523b6a62ef235b601","src/imp/interrupt/avr.rs":"19c3264f1be0d92b818c5f9ee0c331c3e67d6c11d4dd688f858bd1da99cc80b2","src/imp/interrupt/mod.rs":"9965cba53776c9364499cc94ce3dbde65283bb96376d99e98aa003c44de59035","src/imp/interrupt/msp430.rs":"18bc58601eb34ca19112b8ac08a239ccf9cdf49a1da24e402bcf554f18804b7e","src/imp/interrupt/riscv.rs":"cd17e5a75407aee29aa250104369eead10167d2d94073430e233f2e6b730bce0","src/imp/interrupt/xtensa.rs":"f339f16bb862c124f859ebc5dd42f31136360c0b976681bc33adbd899492ace9","src/imp/mod.rs":"7ea8bc9713f00dd6461ce7acc8b0ce6d50e2463f2383ee8b3ee1bcfca1a26d9e","src/imp/msp430.rs":"643d5da69adf4bd81f60dd08ee72e41489a9a89161866c56dc2dea26721713a1","src/imp/riscv.rs":"0ee8577971e2d5ed7d90f34836f942e9dab37c6b05281aa2cf14858f1f4f6d3b","src/imp/x86.rs":"52c4b2f39a9a853709e7d121ca071dfea628b9e69c15708fc7b1ad09d4e6ad24","src/lib.rs":"c779480f5f57c430d1b939303e6dbf7b7ee5c8357f7552a85e09ed422b4c8477","src/tests/helper.rs":"c72587a2753619202233e4031ad29901a7f5847b47b68563fa2f89eedb44881f","src/tests/mod.rs":"712ec445279532904b189cd81e8ccc72144ba4014d99062308c68fc0d1fda3a1","src/utils.rs":"57d9c157ac941491a839c679448153ba9d806c457377c01f899f8468a36db00d","version.rs":"48fd9039668ab1ff3162208d8883154d9be28e62a7cd19c52a04336742d6aa12"},"package":"3bccab0e7fd7cc19f820a1c8c91720af652d0c88dc9664dd72aef2614f04af3b"} \ No newline at end of file
diff --git a/vendor/portable-atomic/CHANGELOG.md b/vendor/portable-atomic/CHANGELOG.md
index 19ee42f1d..f36c9aefe 100644
--- a/vendor/portable-atomic/CHANGELOG.md
+++ b/vendor/portable-atomic/CHANGELOG.md
@@ -10,6 +10,46 @@ Note: In this file, do not use the hard wrap in the middle of a sentence for com
## [Unreleased]
+## [1.5.1] - 2023-10-29
+
+- Fix bug in `i{8,16}` `fetch_{or,xor}` on RISC-V without A-extension where `unsafe-assume-single-core` and `force-amo` are enabled.
+
+- Optimize `swap` for targets that do not have native atomic CAS instructions.
+
+## [1.5.0] - 2023-10-23
+
+**Note:** This release has been yanked due to a bug fixed in 1.5.1.
+
+- Add `from_ptr`.
+
+- Add `force-amo` feature (`portable_atomic_force_amo` cfg) for single-core RISC-V without A-extension. ([#124](https://github.com/taiki-e/portable-atomic/pull/124))
+
+- Support run-time detection on AArch64 on pre-1.61 rustc. ([#98](https://github.com/taiki-e/portable-atomic/pull/98))
+
+ This also solves [a compatibility issue with rustc_codegen_cranelift](https://github.com/rust-lang/rustc_codegen_cranelift/issues/1400).
+
+- Support run-time detection of FEAT_LSE2. ([#126](https://github.com/taiki-e/portable-atomic/pull/126))
+
+- Support run-time detection of FEAT_LSE on AArch64 NetBSD. ([#66](https://github.com/taiki-e/portable-atomic/pull/66))
+
+- Acknowledge ESP-IDF targets' 64-bit atomics are not lock-free. See [#122](https://github.com/taiki-e/portable-atomic/issues/122) for more.
+
+- Optimize 128-bit weak CAS on powerpc64.
+
+- Optimize interrupt disable on no-std pre-v6 ARM where `unsafe-assume-single-core` and `disable-fiq` are enabled. ([771c45d](https://github.com/taiki-e/portable-atomic/commit/771c45da2d2afc4f83df033dd4bdf3f976d14a74))
+
+- Improve detection of Apple hardware. ([5c3a43b](https://github.com/taiki-e/portable-atomic/commit/5c3a43b53f1c4188f9dd597599633bc1a315bf44))
+
+- Improve compatibility with the future version of Miri.
+
+## [1.4.3] - 2023-08-25
+
+- Optimize AArch64 128-bit atomic store/swap/fetch_and/fetch_or when the `lse128` target feature is enabled at compile-time. ([#68](https://github.com/taiki-e/portable-atomic/pull/68))
+
+- Optimize AArch64 128-bit atomic load/store when the `rcpc3` target feature is enabled at compile-time. ([#68](https://github.com/taiki-e/portable-atomic/pull/68))
+
+- Optimize inline assemblies on ARM, AArch64, and MSP430.
+
## [1.4.2] - 2023-07-27
- Optimize `AtomicBool` on RISC-V/LoongArch64. This is the same as [rust-lang/rust#114034](https://github.com/rust-lang/rust/pull/114034), but is available for all rustc versions.
@@ -73,7 +113,7 @@ Note: In this file, do not use the hard wrap in the middle of a sentence for com
- Optimize x86_64 128-bit outline-atomics. This improves performance by up to 15% in concurrent RMW/store for cases where the `cmpxchg16b` target feature is not available at compile-time. ([40c4cd4](https://github.com/taiki-e/portable-atomic/commit/40c4cd4f682f1cb153f18d4d6a88795bafaf5667))
- Optimize x86_64 128-bit load that uses cmpxchg16b. ([40c4cd4](https://github.com/taiki-e/portable-atomic/commit/40c4cd4f682f1cb153f18d4d6a88795bafaf5667))
- Optimize aarch64 128-bit load that uses FEAT_LSE. ([40c4cd4](https://github.com/taiki-e/portable-atomic/commit/40c4cd4f682f1cb153f18d4d6a88795bafaf5667))
- - Optimize pre-ARMv6 Linux/Android atomics. ([efacc89](https://github.com/taiki-e/portable-atomic/commit/efacc89c210d7a34ef5e879821112189da5d1901))
+ - Optimize pre-ARMv6 Linux/Android 64-bit atomics. ([efacc89](https://github.com/taiki-e/portable-atomic/commit/efacc89c210d7a34ef5e879821112189da5d1901))
- Support outline-atomics for powerpc64 128-bit atomics. This is currently disabled by default, and can be enabled by `--cfg portable_atomic_outline_atomics`. ([#90](https://github.com/taiki-e/portable-atomic/pull/90))
- Optimize aarch64 outline-atomics on linux-musl. On linux-musl, outline-atomics is enabled by default only when dynamic linking is enabled. When static linking is enabled, this can be enabled by `--cfg portable_atomic_outline_atomics`. See the [`atomic128` module's readme](https://github.com/taiki-e/portable-atomic/blob/HEAD/src/imp/atomic128/README.md#run-time-feature-detection) for more. ([8418235](https://github.com/taiki-e/portable-atomic/commit/84182354e4a149074e28bda4683d538e5fb617ce), [31d0862](https://github.com/taiki-e/portable-atomic/commit/31d08623d4e21af207ff2343f5553b9b5a030452))
@@ -354,7 +394,10 @@ The latest version of portable-atomic is 1.x. This release makes portable-atomic
Initial release
-[Unreleased]: https://github.com/taiki-e/portable-atomic/compare/v1.4.2...HEAD
+[Unreleased]: https://github.com/taiki-e/portable-atomic/compare/v1.5.1...HEAD
+[1.5.1]: https://github.com/taiki-e/portable-atomic/compare/v1.5.0...v1.5.1
+[1.5.0]: https://github.com/taiki-e/portable-atomic/compare/v1.4.3...v1.5.0
+[1.4.3]: https://github.com/taiki-e/portable-atomic/compare/v1.4.2...v1.4.3
[1.4.2]: https://github.com/taiki-e/portable-atomic/compare/v1.4.1...v1.4.2
[1.4.1]: https://github.com/taiki-e/portable-atomic/compare/v1.4.0...v1.4.1
[1.4.0]: https://github.com/taiki-e/portable-atomic/compare/v1.3.3...v1.4.0
diff --git a/vendor/portable-atomic/Cargo.toml b/vendor/portable-atomic/Cargo.toml
index c2e30ea38..7ce2be450 100644
--- a/vendor/portable-atomic/Cargo.toml
+++ b/vendor/portable-atomic/Cargo.toml
@@ -13,12 +13,11 @@
edition = "2018"
rust-version = "1.34"
name = "portable-atomic"
-version = "1.4.2"
+version = "1.5.1"
exclude = [
"/.*",
"/tools",
"/target-specs",
- "/Cross.toml",
"/DEVELOPMENT.md",
]
description = """
@@ -36,6 +35,9 @@ categories = [
license = "Apache-2.0 OR MIT"
repository = "https://github.com/taiki-e/portable-atomic"
+[package.metadata.cargo_check_external_types]
+allowed_external_types = ["serde::*"]
+
[package.metadata.docs.rs]
features = [
"float",
@@ -73,9 +75,6 @@ version = "2"
[dev-dependencies.paste]
version = "1"
-[dev-dependencies.serde_test]
-version = "1"
-
[dev-dependencies.sptr]
version = "0.3"
@@ -87,6 +86,7 @@ default = ["fallback"]
disable-fiq = []
fallback = []
float = []
+force-amo = []
require-cas = []
s-mode = []
std = []
diff --git a/vendor/portable-atomic/README.md b/vendor/portable-atomic/README.md
index dbc347e16..7d364feb2 100644
--- a/vendor/portable-atomic/README.md
+++ b/vendor/portable-atomic/README.md
@@ -16,7 +16,7 @@ Portable atomic types including support for 128-bit atomics, atomic float, etc.
- Provide atomic load/store for targets where atomic is not available at all in the standard library. (RISC-V without A-extension, MSP430, AVR)
- Provide atomic CAS for targets where atomic CAS is not available in the standard library. (thumbv6m, pre-v6 ARM, RISC-V without A-extension, MSP430, AVR, Xtensa, etc.) (always enabled for MSP430 and AVR, [optional](#optional-features-critical-section) otherwise)
- Provide stable equivalents of the standard library's atomic types' unstable APIs, such as [`AtomicPtr::fetch_*`](https://github.com/rust-lang/rust/issues/99108), [`AtomicBool::fetch_not`](https://github.com/rust-lang/rust/issues/98485).
-- Make features that require newer compilers, such as [`fetch_{max,min}`](https://doc.rust-lang.org/std/sync/atomic/struct.AtomicUsize.html#method.fetch_max), [`fetch_update`](https://doc.rust-lang.org/std/sync/atomic/struct.AtomicUsize.html#method.fetch_update), [`as_ptr`](https://doc.rust-lang.org/std/sync/atomic/struct.AtomicUsize.html#method.as_ptr), and [stronger CAS failure ordering](https://github.com/rust-lang/rust/pull/98383) available on Rust 1.34+.
+- Make features that require newer compilers, such as [`fetch_{max,min}`](https://doc.rust-lang.org/std/sync/atomic/struct.AtomicUsize.html#method.fetch_max), [`fetch_update`](https://doc.rust-lang.org/std/sync/atomic/struct.AtomicUsize.html#method.fetch_update), [`as_ptr`](https://doc.rust-lang.org/std/sync/atomic/struct.AtomicUsize.html#method.as_ptr), [`from_ptr`](https://doc.rust-lang.org/std/sync/atomic/struct.AtomicUsize.html#method.from_ptr) and [stronger CAS failure ordering](https://github.com/rust-lang/rust/pull/98383) available on Rust 1.34+.
- Provide workaround for bugs in the standard library's atomic-related APIs, such as [rust-lang/rust#100650], `fence`/`compiler_fence` on MSP430 that cause LLVM error, etc.
<!-- TODO:
@@ -170,7 +170,7 @@ RUSTFLAGS="--cfg portable_atomic_no_outline_atomics" cargo ...
If dynamic dispatching by run-time CPU feature detection is enabled, it allows maintaining support for older CPUs while using features that are not supported on older CPUs, such as CMPXCHG16B (x86_64) and FEAT_LSE (aarch64).
Note:
- - Dynamic detection is currently only enabled in Rust 1.61+ for aarch64, in Rust 1.59+ (AVX) or 1.69+ (CMPXCHG16B) for x86_64, nightly only for powerpc64 (disabled by default), otherwise it works the same as when this cfg is set.
+ - Dynamic detection is currently only enabled in Rust 1.59+ for aarch64, in Rust 1.59+ (AVX) or 1.69+ (CMPXCHG16B) for x86_64, nightly only for powerpc64 (disabled by default), otherwise it works the same as when this cfg is set.
- If the required target features are enabled at compile-time, the atomic operations are inlined.
- This is compatible with no-std (as with all features except `std`).
- On some targets, run-time detection is disabled by default mainly for compatibility with older versions of operating systems or incomplete build environments, and can be enabled by `--cfg portable_atomic_outline_atomics`. (When both cfg are enabled, `*_no_*` cfg is preferred.)
diff --git a/vendor/portable-atomic/build.rs b/vendor/portable-atomic/build.rs
index 3cf86ef93..b766752eb 100644
--- a/vendor/portable-atomic/build.rs
+++ b/vendor/portable-atomic/build.rs
@@ -1,6 +1,9 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// The rustc-cfg emitted by the build script are *not* public API.
-#![warn(rust_2018_idioms, single_use_lifetimes)]
+#![warn(rust_2018_idioms, single_use_lifetimes, clippy::pedantic)]
+#![allow(clippy::match_same_arms, clippy::single_match_else, clippy::too_many_lines)]
#[path = "version.rs"]
mod version;
@@ -19,6 +22,8 @@ fn main() {
println!("cargo:rustc-cfg=portable_atomic_unsafe_assume_single_core");
#[cfg(feature = "s-mode")]
println!("cargo:rustc-cfg=portable_atomic_s_mode");
+ #[cfg(feature = "force-amo")]
+ println!("cargo:rustc-cfg=portable_atomic_force_amo");
#[cfg(feature = "disable-fiq")]
println!("cargo:rustc-cfg=portable_atomic_disable_fiq");
@@ -77,6 +82,10 @@ fn main() {
if !version.probe(64, 2022, 7, 18) {
println!("cargo:rustc-cfg=portable_atomic_no_stronger_failure_ordering");
}
+ // https://github.com/rust-lang/rust/pull/114790 merged in nightly-2023-08-24
+ if !version.probe(74, 2023, 8, 23) {
+ println!("cargo:rustc-cfg=portable_atomic_no_asm_maybe_uninit");
+ }
// asm stabilized in Rust 1.59 (nightly-2021-12-16): https://github.com/rust-lang/rust/pull/91728
let no_asm = !version.probe(59, 2021, 12, 15);
@@ -130,21 +139,6 @@ fn main() {
println!("cargo:rustc-cfg=portable_atomic_llvm_16");
}
if version.nightly {
- // https://github.com/rust-lang/rust/pull/97423 merged in Rust 1.64 (nightly-2022-06-30).
- if version.probe(64, 2022, 6, 29) {
- println!("cargo:rustc-cfg=portable_atomic_new_atomic_intrinsics");
- }
- // https://github.com/rust-lang/rust/pull/100911 (includes https://github.com/rust-lang/stdarch/pull/1315) merged in Rust 1.65 (nightly-2022-08-26).
- if target_arch == "x86_64" && !version.probe(65, 2022, 8, 25) {
- println!(
- "cargo:rustc-cfg=portable_atomic_no_cmpxchg16b_intrinsic_stronger_failure_ordering"
- );
- }
- // feature(isa_attribute) stabilized in Rust 1.67 (nightly-2022-11-06): https://github.com/rust-lang/rust/pull/102458
- if target_arch == "arm" && !version.probe(67, 2022, 11, 5) {
- println!("cargo:rustc-cfg=portable_atomic_unstable_isa_attribute");
- }
-
// `cfg(sanitize = "..")` is not stabilized.
let sanitize = env::var("CARGO_CFG_SANITIZE").unwrap_or_default();
if sanitize.contains("thread") {
@@ -155,9 +149,6 @@ fn main() {
println!("cargo:rustc-cfg=portable_atomic_sanitize_thread");
}
- if version.llvm >= 15 {
- println!("cargo:rustc-cfg=portable_atomic_llvm_15");
- }
// https://github.com/rust-lang/rust/pull/93868 merged in Rust 1.60 (nightly-2022-02-13).
// https://github.com/rust-lang/rust/pull/111331 merged in Rust 1.71 (nightly-2023-05-09).
if !no_asm
@@ -169,8 +160,8 @@ fn main() {
}
}
- let is_apple =
- target_os == "macos" || target_os == "ios" || target_os == "tvos" || target_os == "watchos";
+ let is_macos = target_os == "macos";
+ let is_apple = is_macos || target_os == "ios" || target_os == "tvos" || target_os == "watchos";
match target_arch {
"x86_64" => {
// cmpxchg16b_target_feature stabilized in Rust 1.69 (nightly-2023-03-01): https://github.com/rust-lang/rust/pull/106774
@@ -185,6 +176,11 @@ fn main() {
println!("cargo:rustc-cfg=portable_atomic_no_cmpxchg16b_target_feature");
}
}
+ // For Miri and ThreadSanitizer.
+ // https://github.com/rust-lang/rust/pull/109359 (includes https://github.com/rust-lang/stdarch/pull/1358) merged in Rust 1.70 (nightly-2023-03-24).
+ if version.nightly && !version.probe(70, 2023, 3, 23) {
+ println!("cargo:rustc-cfg=portable_atomic_unstable_cmpxchg16b_intrinsic");
+ }
// x86_64 Apple targets always support CMPXCHG16B:
// https://github.com/rust-lang/rust/blob/1.70.0/compiler/rustc_target/src/spec/x86_64_apple_darwin.rs#L8
@@ -192,42 +188,46 @@ fn main() {
// Script to get targets that support cmpxchg16b by default:
// $ (for target in $(rustc --print target-list); do [[ "${target}" == "x86_64"* ]] && rustc --print cfg --target "${target}" | grep -q cmpxchg16b && echo "${target}"; done)
let has_cmpxchg16b = is_apple;
- // LLVM recognizes this also as cx16 target feature: https://godbolt.org/z/6dszGeYsf
- // It is unlikely that rustc will support that name, so we ignore it.
+ // LLVM recognizes this also as cx16 target feature: https://godbolt.org/z/r8zWGcMhd
+ // However, it is unlikely that rustc will support that name, so we ignore it.
// cmpxchg16b_target_feature stabilized in Rust 1.69.
target_feature_if("cmpxchg16b", has_cmpxchg16b, &version, Some(69), true);
}
"aarch64" => {
- // aarch64_target_feature stabilized in Rust 1.61 (nightly-2022-03-16): https://github.com/rust-lang/rust/pull/90621
- if !version.probe(61, 2022, 3, 15) {
- if version.nightly && is_allowed_feature("aarch64_target_feature") {
- // The part of this feature we use has not been changed since 1.27
- // (https://github.com/rust-lang/rust/commit/1217d70465edb2079880347fea4baaac56895f51)
- // until it was stabilized in nightly-2022-03-16, so it can be safely enabled in
- // nightly, which is older than nightly-2022-03-16.
- println!("cargo:rustc-cfg=portable_atomic_unstable_aarch64_target_feature");
- } else {
- // On aarch64, when aarch64_target_feature is not available, outline-atomics is also not available.
- println!("cargo:rustc-cfg=portable_atomic_no_outline_atomics");
- }
+ // For Miri and ThreadSanitizer.
+ // https://github.com/rust-lang/rust/pull/97423 merged in Rust 1.64 (nightly-2022-06-30).
+ if version.nightly && version.probe(64, 2022, 6, 29) {
+ println!("cargo:rustc-cfg=portable_atomic_new_atomic_intrinsics");
}
- // aarch64 macOS always support FEAT_LSE and FEAT_LSE2 because it is armv8.5-a:
- // https://github.com/llvm/llvm-project/blob/llvmorg-16.0.0/llvm/include/llvm/TargetParser/AArch64TargetParser.h#L458
- let is_macos = target_os == "macos";
- // aarch64_target_feature stabilized in Rust 1.61.
- target_feature_if("lse", is_macos, &version, Some(61), true);
- // As of rustc 1.70, target_feature "lse2" is not available on rustc side:
+ // aarch64 macOS always supports FEAT_LSE and FEAT_LSE2 because it is armv8.5-a:
+ // https://github.com/llvm/llvm-project/blob/llvmorg-17.0.0-rc2/llvm/include/llvm/TargetParser/AArch64TargetParser.h#L494
+ let mut has_lse = is_macos;
+ // FEAT_LSE2 doesn't imply FEAT_LSE. FEAT_LSE128 implies FEAT_LSE but not FEAT_LSE2.
+ // As of rustc 1.70, target_feature "lse2"/"lse128"/"rcpc3" is not available on rustc side:
// https://github.com/rust-lang/rust/blob/1.70.0/compiler/rustc_codegen_ssa/src/target_features.rs#L58
target_feature_if("lse2", is_macos, &version, None, false);
+ // LLVM supports FEAT_LRCPC3 and FEAT_LSE128 on LLVM 16+:
+ // https://github.com/llvm/llvm-project/commit/a6aaa969f7caec58a994142f8d855861cf3a1463
+ // https://github.com/llvm/llvm-project/commit/7fea6f2e0e606e5339c3359568f680eaf64aa306
+ has_lse |= target_feature_if("lse128", false, &version, None, false);
+ target_feature_if("rcpc3", false, &version, None, false);
+ // aarch64_target_feature stabilized in Rust 1.61.
+ target_feature_if("lse", has_lse, &version, Some(61), true);
// As of Apple M1/M1 Pro, on Apple hardware, CAS loop-based RMW is much slower than LL/SC
// loop-based RMW: https://github.com/taiki-e/portable-atomic/pull/89
- if is_apple {
+ if is_apple || target_cpu().map_or(false, |cpu| cpu.starts_with("apple-")) {
println!("cargo:rustc-cfg=portable_atomic_ll_sc_rmw");
}
}
"arm" => {
+ // For non-Linux/Android pre-v6 ARM (tier 3) with unsafe_assume_single_core enabled.
+ // feature(isa_attribute) stabilized in Rust 1.67 (nightly-2022-11-06): https://github.com/rust-lang/rust/pull/102458
+ if version.nightly && !version.probe(67, 2022, 11, 5) {
+ println!("cargo:rustc-cfg=portable_atomic_unstable_isa_attribute");
+ }
+
// #[cfg(target_feature = "v7")] and others don't work on stable.
// armv7-unknown-linux-gnueabihf
// ^^
@@ -246,6 +246,9 @@ fn main() {
// arm-linux-androideabi is v5te
// https://github.com/rust-lang/rust/blob/1.70.0/compiler/rustc_target/src/spec/arm_linux_androideabi.rs#L11-L12
_ if target == "arm-linux-androideabi" => subarch = "v5te",
+ // armeb-unknown-linux-gnueabi is v8 & aclass
+ // https://github.com/rust-lang/rust/blob/1.70.0/compiler/rustc_target/src/spec/armeb_unknown_linux_gnueabi.rs#L12
+ _ if target == "armeb-unknown-linux-gnueabi" => subarch = "v8",
// v6 targets other than v6m don't have *class target feature.
"" | "v6" | "v6k" => subarch = "v6",
// Other targets don't have *class target feature.
@@ -268,21 +271,27 @@ fn main() {
target_feature_if("v6", v6, &version, None, true);
}
"powerpc64" => {
+ // For Miri and ThreadSanitizer.
+ if version.nightly && version.llvm >= 15 {
+ println!("cargo:rustc-cfg=portable_atomic_llvm_15");
+ }
+
let target_endian =
env::var("CARGO_CFG_TARGET_ENDIAN").expect("CARGO_CFG_TARGET_ENDIAN not set");
- // powerpc64le is pwr8+ by default https://github.com/llvm/llvm-project/blob/llvmorg-16.0.0/llvm/lib/Target/PowerPC/PPC.td#L663
+ // powerpc64le is pwr8+ by default
+ // https://github.com/llvm/llvm-project/blob/llvmorg-17.0.0-rc2/llvm/lib/Target/PowerPC/PPC.td#L663
// See also https://github.com/rust-lang/rust/issues/59932
let mut has_pwr8_features = target_endian == "little";
// https://github.com/llvm/llvm-project/commit/549e118e93c666914a1045fde38a2cac33e1e445
- if let Some(cpu) = target_cpu().as_ref() {
+ if let Some(cpu) = &target_cpu() {
if let Some(mut cpu_version) = strip_prefix(cpu, "pwr") {
cpu_version = strip_suffix(cpu_version, "x").unwrap_or(cpu_version); // for pwr5x and pwr6x
if let Ok(cpu_version) = cpu_version.parse::<u32>() {
has_pwr8_features = cpu_version >= 8;
}
} else {
- // https://github.com/llvm/llvm-project/blob/llvmorg-16.0.0/llvm/lib/Target/PowerPC/PPC.td#L663
- // https://github.com/llvm/llvm-project/blob/llvmorg-16.0.0/llvm/lib/Target/PowerPC/PPC.td#L445-L447
+ // https://github.com/llvm/llvm-project/blob/llvmorg-17.0.0-rc2/llvm/lib/Target/PowerPC/PPC.td#L663
+ // https://github.com/llvm/llvm-project/blob/llvmorg-17.0.0-rc2/llvm/lib/Target/PowerPC/PPC.td#L445-L447
has_pwr8_features = cpu == "ppc64le" || cpu == "future";
}
}
@@ -292,18 +301,18 @@ fn main() {
target_feature_if("quadword-atomics", has_pwr8_features, &version, None, false);
}
"s390x" => {
- // https://github.com/llvm/llvm-project/blob/llvmorg-16.0.0/llvm/lib/Target/SystemZ/SystemZFeatures.td#L37
- let mut has_arch9_features = false; // z196+
- let mut has_arch13_features = false; // z15+
+ // https://github.com/llvm/llvm-project/blob/llvmorg-17.0.0-rc2/llvm/lib/Target/SystemZ/SystemZFeatures.td
+ let mut arch9_features = false; // z196+
+ let mut arch13_features = false; // z15+
if let Some(cpu) = target_cpu() {
- // https://github.com/llvm/llvm-project/blob/llvmorg-16.0.0/llvm/lib/Target/SystemZ/SystemZProcessors.td
+ // https://github.com/llvm/llvm-project/blob/llvmorg-17.0.0-rc2/llvm/lib/Target/SystemZ/SystemZProcessors.td
match &*cpu {
"arch9" | "z196" | "arch10" | "zEC12" | "arch11" | "z13" | "arch12" | "z14" => {
- has_arch9_features = true;
+ arch9_features = true;
}
"arch13" | "z15" | "arch14" | "z16" => {
- has_arch9_features = true;
- has_arch13_features = true;
+ arch9_features = true;
+ arch13_features = true;
}
_ => {}
}
@@ -311,19 +320,13 @@ fn main() {
// Note: As of rustc 1.70, target_feature "fast-serialization"/"load-store-on-cond"/"distinct-ops"/"miscellaneous-extensions-3" is not available on rustc side:
// https://github.com/rust-lang/rust/blob/1.70.0/compiler/rustc_codegen_ssa/src/target_features.rs
// bcr 14,0
- target_feature_if("fast-serialization", has_arch9_features, &version, None, false);
+ target_feature_if("fast-serialization", arch9_features, &version, None, false);
// {l,st}oc{,g}{,r}
- target_feature_if("load-store-on-cond", has_arch9_features, &version, None, false);
+ target_feature_if("load-store-on-cond", arch9_features, &version, None, false);
// {al,sl,n,o,x}{,g}rk
- target_feature_if("distinct-ops", has_arch9_features, &version, None, false);
+ target_feature_if("distinct-ops", arch9_features, &version, None, false);
// nand (nnr{,g}k), select (sel{,g}r), etc.
- target_feature_if(
- "miscellaneous-extensions-3",
- has_arch13_features,
- &version,
- None,
- false,
- );
+ target_feature_if("miscellaneous-extensions-3", arch13_features, &version, None, false);
}
_ => {}
}
@@ -335,7 +338,7 @@ fn target_feature_if(
version: &Version,
stabilized: Option<u32>,
is_rustc_target_feature: bool,
-) {
+) -> bool {
// HACK: Currently, it seems that the only way to handle unstable target
// features on the stable is to parse the `-C target-feature` in RUSTFLAGS.
//
@@ -343,14 +346,14 @@ fn target_feature_if(
// - CARGO_CFG_TARGET_FEATURE excludes unstable target features on stable.
//
// As mentioned in the [RFC2045], unstable target features are also passed to LLVM
- // (e.g., https://godbolt.org/z/8Eh3z5Wzb), so this hack works properly on stable.
+ // (e.g., https://godbolt.org/z/TfaEx95jc), so this hack works properly on stable.
//
// [RFC2045]: https://rust-lang.github.io/rfcs/2045-target-feature.html#backend-compilation-options
if is_rustc_target_feature
&& (version.nightly || stabilized.map_or(false, |stabilized| version.minor >= stabilized))
{
// In this case, cfg(target_feature = "...") would work, so skip emitting our own target_feature cfg.
- return;
+ return false;
} else if let Some(rustflags) = env::var_os("CARGO_ENCODED_RUSTFLAGS") {
for mut flag in rustflags.to_string_lossy().split('\x1f') {
flag = strip_prefix(flag, "-C").unwrap_or(flag);
@@ -370,6 +373,7 @@ fn target_feature_if(
if has_target_feature {
println!("cargo:rustc-cfg=portable_atomic_target_feature=\"{}\"", name);
}
+ has_target_feature
}
fn target_cpu() -> Option<String> {
diff --git a/vendor/portable-atomic/no_atomic.rs b/vendor/portable-atomic/no_atomic.rs
index 26850da95..b7e1ea239 100644
--- a/vendor/portable-atomic/no_atomic.rs
+++ b/vendor/portable-atomic/no_atomic.rs
@@ -1,8 +1,10 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
// This file is @generated by no_atomic.sh.
// It is not intended for manual editing.
// Note: This is the list as of nightly-2022-02-10. We don't refer to this in
// nightly-2022-02-11+ because feature(cfg_target_has_atomic) stabilized.
+#[rustfmt::skip]
static NO_ATOMIC_CAS: &[&str] = &[
"avr-unknown-gnu-atmega328",
"bpfeb-unknown-none",
@@ -16,6 +18,7 @@ static NO_ATOMIC_CAS: &[&str] = &[
// Note: This is the list as of nightly-2022-02-10. We don't refer to this in
// nightly-2022-02-11+ because feature(cfg_target_has_atomic) stabilized.
+#[rustfmt::skip]
static NO_ATOMIC_64: &[&str] = &[
"arm-linux-androideabi",
"armebv7r-none-eabi",
@@ -65,8 +68,8 @@ static NO_ATOMIC_64: &[&str] = &[
"thumbv8m.main-none-eabihf",
];
+#[rustfmt::skip]
static NO_ATOMIC: &[&str] = &[
- "avr-unknown-gnu-atmega328",
"bpfeb-unknown-none",
"bpfel-unknown-none",
"mipsel-sony-psx",
diff --git a/vendor/portable-atomic/src/gen/utils.rs b/vendor/portable-atomic/src/gen/utils.rs
index 1067e8821..61f6c99bf 100644
--- a/vendor/portable-atomic/src/gen/utils.rs
+++ b/vendor/portable-atomic/src/gen/utils.rs
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
// This file is @generated by target_spec.sh.
// It is not intended for manual editing.
@@ -45,7 +46,20 @@
macro_rules! ptr_reg {
($ptr:ident) => {{
let _: *const _ = $ptr; // ensure $ptr is a pointer (*mut _ or *const _)
- $ptr as u64
+ #[cfg(not(portable_atomic_no_asm_maybe_uninit))]
+ #[allow(clippy::ptr_as_ptr)]
+ {
+ // If we cast to u64 here, the provenance will be lost,
+ // so we convert to MaybeUninit<u64> via zero extend helper.
+ crate::utils::zero_extend64_ptr($ptr as *mut ())
+ }
+ #[cfg(portable_atomic_no_asm_maybe_uninit)]
+ {
+ // Use cast on old rustc because it does not support MaybeUninit
+ // registers. This is still permissive-provenance compatible and
+ // is sound.
+ $ptr as u64
+ }
}};
}
#[cfg(not(all(
diff --git a/vendor/portable-atomic/src/imp/arm_linux.rs b/vendor/portable-atomic/src/imp/arm_linux.rs
index e506254d9..623a28250 100644
--- a/vendor/portable-atomic/src/imp/arm_linux.rs
+++ b/vendor/portable-atomic/src/imp/arm_linux.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// 64-bit atomic implementation using kuser_cmpxchg64 on pre-v6 ARM Linux/Android.
//
// Refs:
@@ -14,26 +16,9 @@
#[path = "fallback/outline_atomics.rs"]
mod fallback;
-#[cfg(not(portable_atomic_no_asm))]
-use core::arch::asm;
-use core::{cell::UnsafeCell, mem, sync::atomic::Ordering};
-
-/// A 64-bit value represented as a pair of 32-bit values.
-///
-/// This type is `#[repr(C)]`, both fields have the same in-memory representation
-/// and are plain old datatypes, so access to the fields is always safe.
-#[derive(Clone, Copy)]
-#[repr(C)]
-union U64 {
- whole: u64,
- pair: Pair,
-}
-#[derive(Clone, Copy)]
-#[repr(C)]
-struct Pair {
- lo: u32,
- hi: u32,
-}
+use core::{arch::asm, cell::UnsafeCell, mem, sync::atomic::Ordering};
+
+use crate::utils::{Pair, U64};
// https://www.kernel.org/doc/Documentation/arm/kernel_user_helpers.txt
const KUSER_HELPER_VERSION: usize = 0xFFFF0FFC;
@@ -48,8 +33,8 @@ fn __kuser_helper_version() -> i32 {
if v != 0 {
return v;
}
- // SAFETY: core assumes that at least __kuser_cmpxchg (__kuser_helper_version >= 2) is available
- // on this platform. __kuser_helper_version is always available on such a platform.
+ // SAFETY: core assumes that at least __kuser_memory_barrier (__kuser_helper_version >= 3) is
+ // available on this platform. __kuser_helper_version is always available on such a platform.
v = unsafe { (KUSER_HELPER_VERSION as *const i32).read() };
CACHE.store(v, Ordering::Relaxed);
v
@@ -79,16 +64,16 @@ unsafe fn __kuser_cmpxchg64(old_val: *const u64, new_val: *const u64, ptr: *mut
unsafe fn byte_wise_atomic_load(src: *const u64) -> u64 {
// SAFETY: the caller must uphold the safety contract.
unsafe {
- let (prev_lo, prev_hi);
+ let (out_lo, out_hi);
asm!(
- "ldr {prev_lo}, [{src}]",
- "ldr {prev_hi}, [{src}, #4]",
+ "ldr {out_lo}, [{src}]",
+ "ldr {out_hi}, [{src}, #4]",
src = in(reg) src,
- prev_lo = out(reg) prev_lo,
- prev_hi = out(reg) prev_hi,
+ out_lo = out(reg) out_lo,
+ out_hi = out(reg) out_hi,
options(pure, nostack, preserves_flags, readonly),
);
- U64 { pair: Pair { lo: prev_lo, hi: prev_hi } }.whole
+ U64 { pair: Pair { lo: out_lo, hi: out_hi } }.whole
}
}
@@ -109,10 +94,10 @@ where
// so we must use inline assembly to implement byte_wise_atomic_load.
// (i.e., byte-wise atomic based on the standard library's atomic types
// cannot be used here).
- let old = byte_wise_atomic_load(dst);
- let next = f(old);
- if __kuser_cmpxchg64(&old, &next, dst) {
- return old;
+ let prev = byte_wise_atomic_load(dst);
+ let next = f(prev);
+ if __kuser_cmpxchg64(&prev, &next, dst) {
+ return prev;
}
}
}
@@ -169,8 +154,10 @@ atomic_with_ifunc! {
atomic_with_ifunc! {
unsafe fn atomic_compare_exchange(dst: *mut u64, old: u64, new: u64) -> (u64, bool) {
// SAFETY: the caller must uphold the safety contract.
- let res = unsafe { atomic_update_kuser_cmpxchg64(dst, |v| if v == old { new } else { v }) };
- (res, res == old)
+ let prev = unsafe {
+ atomic_update_kuser_cmpxchg64(dst, |v| if v == old { new } else { v })
+ };
+ (prev, prev == old)
}
fallback = atomic_compare_exchange_seqcst
}
@@ -343,15 +330,15 @@ macro_rules! atomic64 {
// SAFETY: any data races are prevented by the kernel user helper or the lock
// and the raw pointer passed in is valid because we got it from a reference.
unsafe {
- let (res, ok) = atomic_compare_exchange(
+ let (prev, ok) = atomic_compare_exchange(
self.v.get().cast::<u64>(),
current as u64,
new as u64,
);
if ok {
- Ok(res as $int_type)
+ Ok(prev as $int_type)
} else {
- Err(res as $int_type)
+ Err(prev as $int_type)
}
}
}
diff --git a/vendor/portable-atomic/src/imp/atomic128/README.md b/vendor/portable-atomic/src/imp/atomic128/README.md
index 6e0c87988..00a467e80 100644
--- a/vendor/portable-atomic/src/imp/atomic128/README.md
+++ b/vendor/portable-atomic/src/imp/atomic128/README.md
@@ -6,8 +6,8 @@ Here is the table of targets that support 128-bit atomics and the instructions u
| target_arch | load | store | CAS | RMW | note |
| ----------- | ---- | ----- | --- | --- | ---- |
-| x86_64 | cmpxchg16b or vmovdqa | cmpxchg16b or vmovdqa | cmpxchg16b | cmpxchg16b | cmpxchg16b target feature required. vmovdqa requires Intel or AMD CPU with AVX. <br> Both compile-time and run-time detection are supported for cmpxchg16b. vmovdqa is currently run-time detection only. <br> Requires rustc 1.59+ when cmpxchg16b target feature is enabled at compile-time, otherwise requires rustc 1.69+ |
-| aarch64 | ldxp/stxp or casp or ldp | ldxp/stxp or casp or stp | ldxp/stxp or casp | ldxp/stxp or casp | casp requires lse target feature, ldp/stp requires lse2 target feature. <br> Both compile-time and run-time detection are supported for lse. lse2 is currently compile-time detection only. <br> Requires rustc 1.59+ |
+| x86_64 | cmpxchg16b or vmovdqa | cmpxchg16b or vmovdqa | cmpxchg16b | cmpxchg16b | cmpxchg16b target feature required. vmovdqa requires Intel or AMD CPU with AVX. <br> Both compile-time and run-time detection are supported for cmpxchg16b. vmovdqa is currently run-time detection only. <br> Requires rustc 1.59+ when cmpxchg16b target feature is enabled at compile-time, otherwise requires rustc 1.69+ |
+| aarch64 | ldxp/stxp or casp or ldp/ldiapp | ldxp/stxp or casp or stp/stilp/swpp | ldxp/stxp or casp | ldxp/stxp or casp/swpp/ldclrp/ldsetp | casp requires lse target feature, ldp/stp requires lse2 target feature, ldiapp/stilp requires lse2 and rcpc3 target features, swpp/ldclrp/ldsetp requires lse128 target feature. <br> Both compile-time and run-time detection are supported for lse and lse2. Others are currently compile-time detection only. <br> Requires rustc 1.59+ |
| powerpc64 | lq | stq | lqarx/stqcx. | lqarx/stqcx. | Requires target-cpu pwr8+ (powerpc64le is pwr8 by default). Both compile-time and run-time detection are supported (run-time detection is currently disabled by default). <br> Requires nightly |
| s390x | lpq | stpq | cdsg | cdsg | Requires nightly |
@@ -40,6 +40,7 @@ Here is the table of targets that support run-time feature detection and the ins
| aarch64 | linux | getauxval | Only enabled by default on `*-linux-gnu*`, and `*-linux-musl*"` (default is static linking)/`*-linux-ohos*` (default is dynamic linking) with dynamic linking enabled. |
| aarch64 | android | getauxval | Enabled by default |
| aarch64 | freebsd | elf_aux_info | Enabled by default |
+| aarch64 | netbsd | sysctl | Enabled by default |
| aarch64 | openbsd | sysctl | Enabled by default |
| aarch64 | macos | sysctl | Currently only used in tests because FEAT_LSE and FEAT_LSE2 are always available at compile-time. |
| aarch64 | windows | IsProcessorFeaturePresent | Enabled by default |
diff --git a/vendor/portable-atomic/src/imp/atomic128/aarch64.rs b/vendor/portable-atomic/src/imp/atomic128/aarch64.rs
index 00418dfb0..32528a706 100644
--- a/vendor/portable-atomic/src/imp/atomic128/aarch64.rs
+++ b/vendor/portable-atomic/src/imp/atomic128/aarch64.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Atomic{I,U}128 implementation on AArch64.
//
// There are a few ways to implement 128-bit atomic operations in AArch64.
@@ -5,6 +7,8 @@
// - LDXP/STXP loop (DW LL/SC)
// - CASP (DWCAS) added as FEAT_LSE (mandatory from armv8.1-a)
// - LDP/STP (DW load/store) if FEAT_LSE2 (optional from armv8.2-a, mandatory from armv8.4-a) is available
+// - LDIAPP/STILP (DW acquire-load/release-store) added as FEAT_LRCPC3 (optional from armv8.9-a/armv9.4-a) (if FEAT_LSE2 is also available)
+// - LDCLRP/LDSETP/SWPP (DW RMW) added as FEAT_LSE128 (optional from armv9.4-a)
//
// If outline-atomics is not enabled and FEAT_LSE is not available at
// compile-time, we use LDXP/STXP loop.
@@ -15,8 +19,10 @@
// However, when portable_atomic_ll_sc_rmw cfg is set, use LDXP/STXP loop instead of CASP
// loop for RMW (by default, it is set on Apple hardware; see build script for details).
// If FEAT_LSE2 is available at compile-time, we use LDP/STP for load/store.
+// If FEAT_LSE128 is available at compile-time, we use LDCLRP/LDSETP/SWPP for fetch_and/fetch_or/swap/{release,seqcst}-store.
+// If FEAT_LSE2 and FEAT_LRCPC3 are available at compile-time, we use LDIAPP/STILP for acquire-load/release-store.
//
-// Note: FEAT_LSE2 doesn't imply FEAT_LSE.
+// Note: FEAT_LSE2 doesn't imply FEAT_LSE. FEAT_LSE128 implies FEAT_LSE but not FEAT_LSE2.
//
// Note that we do not separate LL and SC into separate functions, but handle
// them within a single asm block. This is because it is theoretically possible
@@ -48,18 +54,27 @@
// - atomic-maybe-uninit https://github.com/taiki-e/atomic-maybe-uninit
//
// Generated asm:
-// - aarch64 https://godbolt.org/z/nds1nWbnq
-// - aarch64 msvc https://godbolt.org/z/PTKdhbKqW
-// - aarch64 (+lse) https://godbolt.org/z/5GzssfTKc
-// - aarch64 msvc (+lse) https://godbolt.org/z/oYE87caM7
-// - aarch64 (+lse,+lse2) https://godbolt.org/z/36dPjMbaG
+// - aarch64 https://godbolt.org/z/5Mz1E33vz
+// - aarch64 msvc https://godbolt.org/z/P53d1MsGY
+// - aarch64 (+lse) https://godbolt.org/z/qvaE8n79K
+// - aarch64 msvc (+lse) https://godbolt.org/z/dj4aYerfr
+// - aarch64 (+lse,+lse2) https://godbolt.org/z/1E15jjxah
+// - aarch64 (+lse,+lse2,+rcpc3) https://godbolt.org/z/YreM4n84o
+// - aarch64 (+lse2,+lse128) https://godbolt.org/z/Kfeqs54ox
+// - aarch64 (+lse2,+lse128,+rcpc3) https://godbolt.org/z/n6zhjE77s
include!("macros.rs");
// On musl with static linking, it seems that getauxval is not always available.
// See detect/auxv.rs for more.
#[cfg(not(portable_atomic_no_outline_atomics))]
-#[cfg(any(test, not(any(target_feature = "lse", portable_atomic_target_feature = "lse"))))]
+#[cfg(any(
+ test,
+ not(all(
+ any(target_feature = "lse2", portable_atomic_target_feature = "lse2"),
+ any(target_feature = "lse", portable_atomic_target_feature = "lse"),
+ )),
+))]
#[cfg(any(
all(
target_os = "linux",
@@ -75,8 +90,21 @@ include!("macros.rs");
#[path = "detect/auxv.rs"]
mod detect;
#[cfg(not(portable_atomic_no_outline_atomics))]
-#[cfg(any(test, not(any(target_feature = "lse", portable_atomic_target_feature = "lse"))))]
-#[cfg(target_os = "openbsd")]
+#[cfg_attr(
+ target_os = "netbsd",
+ cfg(any(
+ test,
+ not(all(
+ any(target_feature = "lse2", portable_atomic_target_feature = "lse2"),
+ any(target_feature = "lse", portable_atomic_target_feature = "lse"),
+ )),
+ ))
+)]
+#[cfg_attr(
+ target_os = "openbsd",
+ cfg(any(test, not(any(target_feature = "lse", portable_atomic_target_feature = "lse"))))
+)]
+#[cfg(any(target_os = "netbsd", target_os = "openbsd"))]
#[path = "detect/aarch64_aa64reg.rs"]
mod detect;
#[cfg(not(portable_atomic_no_outline_atomics))]
@@ -108,6 +136,8 @@ mod detect_macos;
use core::arch::asm;
use core::sync::atomic::Ordering;
+use crate::utils::{Pair, U128};
+
#[cfg(any(
target_feature = "lse",
portable_atomic_target_feature = "lse",
@@ -131,6 +161,7 @@ macro_rules! debug_assert_lse {
),
target_os = "android",
target_os = "freebsd",
+ target_os = "netbsd",
target_os = "openbsd",
target_os = "fuchsia",
target_os = "windows",
@@ -142,6 +173,82 @@ macro_rules! debug_assert_lse {
}
};
}
+#[rustfmt::skip]
+#[cfg(any(
+ target_feature = "lse2",
+ portable_atomic_target_feature = "lse2",
+ not(portable_atomic_no_outline_atomics),
+))]
+macro_rules! debug_assert_lse2 {
+ () => {
+ #[cfg(all(
+ not(portable_atomic_no_outline_atomics),
+ any(
+ all(
+ target_os = "linux",
+ any(
+ target_env = "gnu",
+ all(
+ any(target_env = "musl", target_env = "ohos"),
+ not(target_feature = "crt-static"),
+ ),
+ portable_atomic_outline_atomics,
+ ),
+ ),
+ target_os = "android",
+ target_os = "freebsd",
+ target_os = "netbsd",
+ // These don't support detection of FEAT_LSE2.
+ // target_os = "openbsd",
+ // target_os = "fuchsia",
+ // target_os = "windows",
+ ),
+ ))]
+ #[cfg(not(any(target_feature = "lse2", portable_atomic_target_feature = "lse2")))]
+ {
+ debug_assert!(detect::detect().has_lse2());
+ }
+ };
+}
+
+// Refs: https://developer.arm.com/documentation/100067/0612/armclang-Integrated-Assembler/AArch32-Target-selection-directives?lang=en
+//
+// This is similar to #[target_feature(enable = "lse")], except that there are
+// no compiler guarantees regarding (un)inlining, and the scope is within an asm
+// block rather than a function. We use this directive to support outline-atomics
+// on pre-1.61 rustc (aarch64_target_feature stabilized in Rust 1.61).
+//
+// The .arch_extension directive is effective until the end of the assembly block and
+// is not propagated to subsequent code, so the end_lse macro is unneeded.
+// https://godbolt.org/z/4oMEW8vWc
+// https://github.com/torvalds/linux/commit/e0d5896bd356cd577f9710a02d7a474cdf58426b
+// https://github.com/torvalds/linux/commit/dd1f6308b28edf0452dd5dc7877992903ec61e69
+// (It seems GCC effectively ignores this directive and always allow FEAT_LSE instructions: https://godbolt.org/z/W9W6rensG)
+//
+// The .arch directive has a similar effect, but we don't use it due to the following issue:
+// https://github.com/torvalds/linux/commit/dd1f6308b28edf0452dd5dc7877992903ec61e69
+//
+// This is also needed for compatibility with rustc_codegen_cranelift:
+// https://github.com/rust-lang/rustc_codegen_cranelift/issues/1400#issuecomment-1774599775
+//
+// Note: If FEAT_LSE is not available at compile-time, we must guarantee that
+// the function that uses it is not inlined into a function where it is not
+// clear whether FEAT_LSE is available. Otherwise, (even if we checked whether
+// FEAT_LSE is available at run-time) optimizations that reorder its
+// instructions across the if condition might introduce undefined behavior.
+// (see also https://rust-lang.github.io/rfcs/2045-target-feature.html#safely-inlining-target_feature-functions-on-more-contexts)
+// However, our code uses the ifunc helper macro that works with function pointers,
+// so we don't have to worry about this unless calling without helper macro.
+#[cfg(any(
+ target_feature = "lse",
+ portable_atomic_target_feature = "lse",
+ not(portable_atomic_no_outline_atomics),
+))]
+macro_rules! start_lse {
+ () => {
+ ".arch_extension lse"
+ };
+}
#[cfg(target_endian = "little")]
macro_rules! select_le_or_be {
@@ -156,24 +263,6 @@ macro_rules! select_le_or_be {
};
}
-/// A 128-bit value represented as a pair of 64-bit values.
-///
-/// This type is `#[repr(C)]`, both fields have the same in-memory representation
-/// and are plain old datatypes, so access to the fields is always safe.
-#[derive(Clone, Copy)]
-#[repr(C)]
-union U128 {
- whole: u128,
- pair: Pair,
-}
-// A pair of 64-bit values in little-endian order (even on big-endian targets).
-#[derive(Clone, Copy)]
-#[repr(C)]
-struct Pair {
- lo: u64,
- hi: u64,
-}
-
macro_rules! atomic_rmw {
($op:ident, $order:ident) => {
atomic_rmw!($op, $order, write = $order)
@@ -195,16 +284,14 @@ macro_rules! atomic_rmw {
};
}
+// cfg guarantee that the CPU supports FEAT_LSE2.
+#[cfg(any(target_feature = "lse2", portable_atomic_target_feature = "lse2"))]
+use _atomic_load_ldp as atomic_load;
+#[cfg(not(any(target_feature = "lse2", portable_atomic_target_feature = "lse2")))]
#[inline]
unsafe fn atomic_load(src: *mut u128, order: Ordering) -> u128 {
- #[cfg(any(target_feature = "lse2", portable_atomic_target_feature = "lse2"))]
- // SAFETY: the caller must uphold the safety contract.
- // cfg guarantee that the CPU supports FEAT_LSE2.
- unsafe {
- atomic_load_ldp(src, order)
- }
- #[cfg(not(any(target_feature = "lse2", portable_atomic_target_feature = "lse2")))]
- {
+ #[inline]
+ unsafe fn atomic_load_no_lse2(src: *mut u128, order: Ordering) -> u128 {
#[cfg(any(target_feature = "lse", portable_atomic_target_feature = "lse"))]
// SAFETY: the caller must uphold the safety contract.
// cfg guarantee that the CPU supports FEAT_LSE.
@@ -217,14 +304,123 @@ unsafe fn atomic_load(src: *mut u128, order: Ordering) -> u128 {
_atomic_load_ldxp_stxp(src, order)
}
}
+ #[cfg(not(all(
+ not(portable_atomic_no_outline_atomics),
+ any(
+ all(
+ target_os = "linux",
+ any(
+ target_env = "gnu",
+ all(
+ any(target_env = "musl", target_env = "ohos"),
+ not(target_feature = "crt-static"),
+ ),
+ portable_atomic_outline_atomics,
+ ),
+ ),
+ target_os = "android",
+ target_os = "freebsd",
+ target_os = "netbsd",
+ // These don't support detection of FEAT_LSE2.
+ // target_os = "openbsd",
+ // target_os = "fuchsia",
+ // target_os = "windows",
+ ),
+ )))]
+ // SAFETY: the caller must uphold the safety contract.
+ unsafe {
+ atomic_load_no_lse2(src, order)
+ }
+ #[cfg(all(
+ not(portable_atomic_no_outline_atomics),
+ any(
+ all(
+ target_os = "linux",
+ any(
+ target_env = "gnu",
+ all(
+ any(target_env = "musl", target_env = "ohos"),
+ not(target_feature = "crt-static"),
+ ),
+ portable_atomic_outline_atomics,
+ ),
+ ),
+ target_os = "android",
+ target_os = "freebsd",
+ target_os = "netbsd",
+ // These don't support detection of FEAT_LSE2.
+ // target_os = "openbsd",
+ // target_os = "fuchsia",
+ // target_os = "windows",
+ ),
+ ))]
+ {
+ fn_alias! {
+ // inline(never) is just a hint and also not strictly necessary
+ // because we use ifunc helper macro, but used for clarity.
+ #[inline(never)]
+ unsafe fn(src: *mut u128) -> u128;
+ atomic_load_lse2_relaxed = _atomic_load_ldp(Ordering::Relaxed);
+ atomic_load_lse2_acquire = _atomic_load_ldp(Ordering::Acquire);
+ atomic_load_lse2_seqcst = _atomic_load_ldp(Ordering::SeqCst);
+ }
+ fn_alias! {
+ unsafe fn(src: *mut u128) -> u128;
+ atomic_load_no_lse2_relaxed = atomic_load_no_lse2(Ordering::Relaxed);
+ atomic_load_no_lse2_acquire = atomic_load_no_lse2(Ordering::Acquire);
+ atomic_load_no_lse2_seqcst = atomic_load_no_lse2(Ordering::SeqCst);
+ }
+ // SAFETY: the caller must uphold the safety contract.
+ // and we've checked if FEAT_LSE2 is available.
+ unsafe {
+ match order {
+ Ordering::Relaxed => {
+ ifunc!(unsafe fn(src: *mut u128) -> u128 {
+ let cpuinfo = detect::detect();
+ if cpuinfo.has_lse2() {
+ atomic_load_lse2_relaxed
+ } else {
+ atomic_load_no_lse2_relaxed
+ }
+ })
+ }
+ Ordering::Acquire => {
+ ifunc!(unsafe fn(src: *mut u128) -> u128 {
+ let cpuinfo = detect::detect();
+ if cpuinfo.has_lse2() {
+ atomic_load_lse2_acquire
+ } else {
+ atomic_load_no_lse2_acquire
+ }
+ })
+ }
+ Ordering::SeqCst => {
+ ifunc!(unsafe fn(src: *mut u128) -> u128 {
+ let cpuinfo = detect::detect();
+ if cpuinfo.has_lse2() {
+ atomic_load_lse2_seqcst
+ } else {
+ atomic_load_no_lse2_seqcst
+ }
+ })
+ }
+ _ => unreachable!("{:?}", order),
+ }
+ }
+ }
}
-// If CPU supports FEAT_LSE2, LDP is single-copy atomic reads,
+// If CPU supports FEAT_LSE2, LDP/LDIAPP is single-copy atomic reads,
// otherwise it is two single-copy atomic reads.
// Refs: B2.2.1 of the Arm Architecture Reference Manual Armv8, for Armv8-A architecture profile
-#[cfg(any(target_feature = "lse2", portable_atomic_target_feature = "lse2"))]
+#[cfg(any(
+ target_feature = "lse2",
+ portable_atomic_target_feature = "lse2",
+ not(portable_atomic_no_outline_atomics),
+))]
#[inline]
-unsafe fn atomic_load_ldp(src: *mut u128, order: Ordering) -> u128 {
+unsafe fn _atomic_load_ldp(src: *mut u128, order: Ordering) -> u128 {
debug_assert!(src as usize % 16 == 0);
+ debug_assert_lse2!();
// SAFETY: the caller must guarantee that `dst` is valid for reads,
// 16-byte aligned, that there are no concurrent non-atomic operations.
@@ -232,39 +428,52 @@ unsafe fn atomic_load_ldp(src: *mut u128, order: Ordering) -> u128 {
// Refs:
// - LDP: https://developer.arm.com/documentation/dui0801/l/A64-Data-Transfer-Instructions/LDP--A64-
unsafe {
- let (prev_lo, prev_hi);
+ let (out_lo, out_hi);
macro_rules! atomic_load_relaxed {
($acquire:tt $(, $readonly:tt)?) => {
asm!(
- "ldp {prev_lo}, {prev_hi}, [{src}]",
+ "ldp {out_lo}, {out_hi}, [{src}]",
$acquire,
src = in(reg) ptr_reg!(src),
- prev_hi = lateout(reg) prev_hi,
- prev_lo = lateout(reg) prev_lo,
+ out_hi = lateout(reg) out_hi,
+ out_lo = lateout(reg) out_lo,
options(nostack, preserves_flags $(, $readonly)?),
)
};
}
match order {
Ordering::Relaxed => atomic_load_relaxed!("", readonly),
+ #[cfg(any(target_feature = "rcpc3", portable_atomic_target_feature = "rcpc3"))]
+ Ordering::Acquire => {
+ // SAFETY: cfg guarantee that the CPU supports FEAT_LRCPC3.
+ // Refs: https://developer.arm.com/documentation/ddi0602/2023-03/Base-Instructions/LDIAPP--Load-Acquire-RCpc-ordered-Pair-of-registers-
+ asm!(
+ "ldiapp {out_lo}, {out_hi}, [{src}]",
+ src = in(reg) ptr_reg!(src),
+ out_hi = lateout(reg) out_hi,
+ out_lo = lateout(reg) out_lo,
+ options(nostack, preserves_flags),
+ );
+ }
+ #[cfg(not(any(target_feature = "rcpc3", portable_atomic_target_feature = "rcpc3")))]
Ordering::Acquire => atomic_load_relaxed!("dmb ishld"),
Ordering::SeqCst => {
asm!(
// ldar (or dmb ishld) is required to prevent reordering with preceding stlxp.
// See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108891 for details.
"ldar {tmp}, [{src}]",
- "ldp {prev_lo}, {prev_hi}, [{src}]",
+ "ldp {out_lo}, {out_hi}, [{src}]",
"dmb ishld",
src = in(reg) ptr_reg!(src),
- prev_hi = lateout(reg) prev_hi,
- prev_lo = lateout(reg) prev_lo,
+ out_hi = lateout(reg) out_hi,
+ out_lo = lateout(reg) out_lo,
tmp = out(reg) _,
options(nostack, preserves_flags),
);
}
_ => unreachable!("{:?}", order),
}
- U128 { pair: Pair { lo: prev_lo, hi: prev_hi } }.whole
+ U128 { pair: Pair { lo: out_lo, hi: out_hi } }.whole
}
}
// Do not use _atomic_compare_exchange_casp because it needs extra MOV to implement load.
@@ -278,15 +487,16 @@ unsafe fn _atomic_load_casp(src: *mut u128, order: Ordering) -> u128 {
// SAFETY: the caller must uphold the safety contract.
// cfg guarantee that the CPU supports FEAT_LSE.
unsafe {
- let (prev_lo, prev_hi);
+ let (out_lo, out_hi);
macro_rules! atomic_load {
($acquire:tt, $release:tt) => {
asm!(
+ start_lse!(),
concat!("casp", $acquire, $release, " x2, x3, x2, x3, [{src}]"),
src = in(reg) ptr_reg!(src),
// must be allocated to even/odd register pair
- inout("x2") 0_u64 => prev_lo,
- inout("x3") 0_u64 => prev_hi,
+ inout("x2") 0_u64 => out_lo,
+ inout("x3") 0_u64 => out_hi,
options(nostack, preserves_flags),
)
};
@@ -297,7 +507,7 @@ unsafe fn _atomic_load_casp(src: *mut u128, order: Ordering) -> u128 {
Ordering::SeqCst => atomic_load!("a", "l"),
_ => unreachable!("{:?}", order),
}
- U128 { pair: Pair { lo: prev_lo, hi: prev_hi } }.whole
+ U128 { pair: Pair { lo: out_lo, hi: out_hi } }.whole
}
}
#[cfg(any(
@@ -313,18 +523,18 @@ unsafe fn _atomic_load_ldxp_stxp(src: *mut u128, order: Ordering) -> u128 {
// SAFETY: the caller must uphold the safety contract.
unsafe {
- let (mut prev_lo, mut prev_hi);
+ let (mut out_lo, mut out_hi);
macro_rules! atomic_load {
($acquire:tt, $release:tt) => {
asm!(
"2:",
- concat!("ld", $acquire, "xp {prev_lo}, {prev_hi}, [{src}]"),
- concat!("st", $release, "xp {r:w}, {prev_lo}, {prev_hi}, [{src}]"),
+ concat!("ld", $acquire, "xp {out_lo}, {out_hi}, [{src}]"),
+ concat!("st", $release, "xp {r:w}, {out_lo}, {out_hi}, [{src}]"),
// 0 if the store was successful, 1 if no store was performed
"cbnz {r:w}, 2b",
src = in(reg) ptr_reg!(src),
- prev_lo = out(reg) prev_lo,
- prev_hi = out(reg) prev_hi,
+ out_lo = out(reg) out_lo,
+ out_hi = out(reg) out_hi,
r = out(reg) _,
options(nostack, preserves_flags),
)
@@ -336,31 +546,155 @@ unsafe fn _atomic_load_ldxp_stxp(src: *mut u128, order: Ordering) -> u128 {
Ordering::SeqCst => atomic_load!("a", "l"),
_ => unreachable!("{:?}", order),
}
- U128 { pair: Pair { lo: prev_lo, hi: prev_hi } }.whole
+ U128 { pair: Pair { lo: out_lo, hi: out_hi } }.whole
}
}
+// cfg guarantee that the CPU supports FEAT_LSE2.
+#[cfg(any(target_feature = "lse2", portable_atomic_target_feature = "lse2"))]
+use _atomic_store_stp as atomic_store;
+#[cfg(not(any(target_feature = "lse2", portable_atomic_target_feature = "lse2")))]
#[inline]
unsafe fn atomic_store(dst: *mut u128, val: u128, order: Ordering) {
- #[cfg(any(target_feature = "lse2", portable_atomic_target_feature = "lse2"))]
- // SAFETY: the caller must uphold the safety contract.
- // cfg guarantee that the CPU supports FEAT_LSE2.
- unsafe {
- atomic_store_stp(dst, val, order);
+ #[inline]
+ unsafe fn atomic_store_no_lse2(dst: *mut u128, val: u128, order: Ordering) {
+ // If FEAT_LSE is available at compile-time and portable_atomic_ll_sc_rmw cfg is not set,
+ // we use CAS-based atomic RMW.
+ #[cfg(all(
+ any(target_feature = "lse", portable_atomic_target_feature = "lse"),
+ not(portable_atomic_ll_sc_rmw),
+ ))]
+ // SAFETY: the caller must uphold the safety contract.
+ // cfg guarantee that the CPU supports FEAT_LSE.
+ unsafe {
+ _atomic_swap_casp(dst, val, order);
+ }
+ #[cfg(not(all(
+ any(target_feature = "lse", portable_atomic_target_feature = "lse"),
+ not(portable_atomic_ll_sc_rmw),
+ )))]
+ // SAFETY: the caller must uphold the safety contract.
+ unsafe {
+ _atomic_store_ldxp_stxp(dst, val, order);
+ }
}
- #[cfg(not(any(target_feature = "lse2", portable_atomic_target_feature = "lse2")))]
+ #[cfg(not(all(
+ not(portable_atomic_no_outline_atomics),
+ any(
+ all(
+ target_os = "linux",
+ any(
+ target_env = "gnu",
+ all(
+ any(target_env = "musl", target_env = "ohos"),
+ not(target_feature = "crt-static"),
+ ),
+ portable_atomic_outline_atomics,
+ ),
+ ),
+ target_os = "android",
+ target_os = "freebsd",
+ target_os = "netbsd",
+ // These don't support detection of FEAT_LSE2.
+ // target_os = "openbsd",
+ // target_os = "fuchsia",
+ // target_os = "windows",
+ ),
+ )))]
// SAFETY: the caller must uphold the safety contract.
unsafe {
- atomic_swap(dst, val, order);
+ atomic_store_no_lse2(dst, val, order);
+ }
+ #[cfg(all(
+ not(portable_atomic_no_outline_atomics),
+ any(
+ all(
+ target_os = "linux",
+ any(
+ target_env = "gnu",
+ all(
+ any(target_env = "musl", target_env = "ohos"),
+ not(target_feature = "crt-static"),
+ ),
+ portable_atomic_outline_atomics,
+ ),
+ ),
+ target_os = "android",
+ target_os = "freebsd",
+ target_os = "netbsd",
+ // These don't support detection of FEAT_LSE2.
+ // target_os = "openbsd",
+ // target_os = "fuchsia",
+ // target_os = "windows",
+ ),
+ ))]
+ {
+ fn_alias! {
+ // inline(never) is just a hint and also not strictly necessary
+ // because we use ifunc helper macro, but used for clarity.
+ #[inline(never)]
+ unsafe fn(dst: *mut u128, val: u128);
+ atomic_store_lse2_relaxed = _atomic_store_stp(Ordering::Relaxed);
+ atomic_store_lse2_release = _atomic_store_stp(Ordering::Release);
+ atomic_store_lse2_seqcst = _atomic_store_stp(Ordering::SeqCst);
+ }
+ fn_alias! {
+ unsafe fn(dst: *mut u128, val: u128);
+ atomic_store_no_lse2_relaxed = atomic_store_no_lse2(Ordering::Relaxed);
+ atomic_store_no_lse2_release = atomic_store_no_lse2(Ordering::Release);
+ atomic_store_no_lse2_seqcst = atomic_store_no_lse2(Ordering::SeqCst);
+ }
+ // SAFETY: the caller must uphold the safety contract.
+ // and we've checked if FEAT_LSE2 is available.
+ unsafe {
+ match order {
+ Ordering::Relaxed => {
+ ifunc!(unsafe fn(dst: *mut u128, val: u128) {
+ let cpuinfo = detect::detect();
+ if cpuinfo.has_lse2() {
+ atomic_store_lse2_relaxed
+ } else {
+ atomic_store_no_lse2_relaxed
+ }
+ });
+ }
+ Ordering::Release => {
+ ifunc!(unsafe fn(dst: *mut u128, val: u128) {
+ let cpuinfo = detect::detect();
+ if cpuinfo.has_lse2() {
+ atomic_store_lse2_release
+ } else {
+ atomic_store_no_lse2_release
+ }
+ });
+ }
+ Ordering::SeqCst => {
+ ifunc!(unsafe fn(dst: *mut u128, val: u128) {
+ let cpuinfo = detect::detect();
+ if cpuinfo.has_lse2() {
+ atomic_store_lse2_seqcst
+ } else {
+ atomic_store_no_lse2_seqcst
+ }
+ });
+ }
+ _ => unreachable!("{:?}", order),
+ }
+ }
}
}
-// If CPU supports FEAT_LSE2, STP is single-copy atomic writes,
+// If CPU supports FEAT_LSE2, STP/STILP is single-copy atomic writes,
// otherwise it is two single-copy atomic writes.
// Refs: B2.2.1 of the Arm Architecture Reference Manual Armv8, for Armv8-A architecture profile
-#[cfg(any(target_feature = "lse2", portable_atomic_target_feature = "lse2"))]
+#[cfg(any(
+ target_feature = "lse2",
+ portable_atomic_target_feature = "lse2",
+ not(portable_atomic_no_outline_atomics),
+))]
#[inline]
-unsafe fn atomic_store_stp(dst: *mut u128, val: u128, order: Ordering) {
+unsafe fn _atomic_store_stp(dst: *mut u128, val: u128, order: Ordering) {
debug_assert!(dst as usize % 16 == 0);
+ debug_assert_lse2!();
// SAFETY: the caller must guarantee that `dst` is valid for writes,
// 16-byte aligned, that there are no concurrent non-atomic operations.
@@ -368,9 +702,10 @@ unsafe fn atomic_store_stp(dst: *mut u128, val: u128, order: Ordering) {
// Refs:
// - STP: https://developer.arm.com/documentation/dui0801/l/A64-Data-Transfer-Instructions/STP--A64-
unsafe {
- let val = U128 { whole: val };
+ #[rustfmt::skip]
macro_rules! atomic_store {
- ($acquire:tt, $release:tt) => {
+ ($acquire:tt, $release:tt) => {{
+ let val = U128 { whole: val };
asm!(
$release,
"stp {val_lo}, {val_hi}, [{dst}]",
@@ -379,17 +714,83 @@ unsafe fn atomic_store_stp(dst: *mut u128, val: u128, order: Ordering) {
val_lo = in(reg) val.pair.lo,
val_hi = in(reg) val.pair.hi,
options(nostack, preserves_flags),
- )
- };
+ );
+ }};
}
match order {
Ordering::Relaxed => atomic_store!("", ""),
+ #[cfg(any(target_feature = "rcpc3", portable_atomic_target_feature = "rcpc3"))]
+ Ordering::Release => {
+ let val = U128 { whole: val };
+ // SAFETY: cfg guarantee that the CPU supports FEAT_LRCPC3.
+ // Refs: https://developer.arm.com/documentation/ddi0602/2023-03/Base-Instructions/STILP--Store-Release-ordered-Pair-of-registers-
+ asm!(
+ "stilp {val_lo}, {val_hi}, [{dst}]",
+ dst = in(reg) ptr_reg!(dst),
+ val_lo = in(reg) val.pair.lo,
+ val_hi = in(reg) val.pair.hi,
+ options(nostack, preserves_flags),
+ );
+ }
+ #[cfg(not(any(target_feature = "rcpc3", portable_atomic_target_feature = "rcpc3")))]
+ #[cfg(any(target_feature = "lse128", portable_atomic_target_feature = "lse128"))]
+ Ordering::Release => {
+ // Use swpp if stp requires fences.
+ // https://reviews.llvm.org/D143506
+ // SAFETY: cfg guarantee that the CPU supports FEAT_LSE128.
+ _atomic_swap_swpp(dst, val, order);
+ }
+ #[cfg(not(any(target_feature = "rcpc3", portable_atomic_target_feature = "rcpc3")))]
+ #[cfg(not(any(target_feature = "lse128", portable_atomic_target_feature = "lse128")))]
Ordering::Release => atomic_store!("", "dmb ish"),
+ #[cfg(any(target_feature = "lse128", portable_atomic_target_feature = "lse128"))]
+ Ordering::SeqCst => {
+ // Use swpp if stp requires fences.
+ // https://reviews.llvm.org/D143506
+ // SAFETY: cfg guarantee that the CPU supports FEAT_LSE128.
+ _atomic_swap_swpp(dst, val, order);
+ }
+ #[cfg(not(any(target_feature = "lse128", portable_atomic_target_feature = "lse128")))]
Ordering::SeqCst => atomic_store!("dmb ish", "dmb ish"),
_ => unreachable!("{:?}", order),
}
}
}
+// Do not use _atomic_swap_ldxp_stxp because it needs extra registers to implement store.
+#[cfg(any(
+ test,
+ not(all(
+ any(target_feature = "lse", portable_atomic_target_feature = "lse"),
+ not(portable_atomic_ll_sc_rmw),
+ ))
+))]
+#[inline]
+unsafe fn _atomic_store_ldxp_stxp(dst: *mut u128, val: u128, order: Ordering) {
+ debug_assert!(dst as usize % 16 == 0);
+
+ // SAFETY: the caller must uphold the safety contract.
+ unsafe {
+ let val = U128 { whole: val };
+ macro_rules! store {
+ ($acquire:tt, $release:tt, $fence:tt) => {
+ asm!(
+ "2:",
+ concat!("ld", $acquire, "xp xzr, {tmp}, [{dst}]"),
+ concat!("st", $release, "xp {tmp:w}, {val_lo}, {val_hi}, [{dst}]"),
+ // 0 if the store was successful, 1 if no store was performed
+ "cbnz {tmp:w}, 2b",
+ $fence,
+ dst = in(reg) ptr_reg!(dst),
+ val_lo = in(reg) val.pair.lo,
+ val_hi = in(reg) val.pair.hi,
+ tmp = out(reg) _,
+ options(nostack, preserves_flags),
+ )
+ };
+ }
+ atomic_rmw!(store, order);
+ }
+}
#[inline]
unsafe fn atomic_compare_exchange(
@@ -402,7 +803,7 @@ unsafe fn atomic_compare_exchange(
#[cfg(any(target_feature = "lse", portable_atomic_target_feature = "lse"))]
// SAFETY: the caller must uphold the safety contract.
// cfg guarantee that the CPU supports FEAT_LSE.
- let res = unsafe { _atomic_compare_exchange_casp(dst, old, new, success, failure) };
+ let prev = unsafe { _atomic_compare_exchange_casp(dst, old, new, success, failure) };
#[cfg(not(all(
not(portable_atomic_no_outline_atomics),
any(
@@ -419,6 +820,7 @@ unsafe fn atomic_compare_exchange(
),
target_os = "android",
target_os = "freebsd",
+ target_os = "netbsd",
target_os = "openbsd",
target_os = "fuchsia",
target_os = "windows",
@@ -426,7 +828,7 @@ unsafe fn atomic_compare_exchange(
)))]
#[cfg(not(any(target_feature = "lse", portable_atomic_target_feature = "lse")))]
// SAFETY: the caller must uphold the safety contract.
- let res = unsafe { _atomic_compare_exchange_ldxp_stxp(dst, old, new, success, failure) };
+ let prev = unsafe { _atomic_compare_exchange_ldxp_stxp(dst, old, new, success, failure) };
#[cfg(all(
not(portable_atomic_no_outline_atomics),
any(
@@ -443,15 +845,18 @@ unsafe fn atomic_compare_exchange(
),
target_os = "android",
target_os = "freebsd",
+ target_os = "netbsd",
target_os = "openbsd",
target_os = "fuchsia",
target_os = "windows",
),
))]
#[cfg(not(any(target_feature = "lse", portable_atomic_target_feature = "lse")))]
- let res = {
+ let prev = {
fn_alias! {
- #[target_feature(enable = "lse")]
+ // inline(never) is just a hint and also not strictly necessary
+ // because we use ifunc helper macro, but used for clarity.
+ #[inline(never)]
unsafe fn(dst: *mut u128, old: u128, new: u128) -> u128;
atomic_compare_exchange_casp_relaxed
= _atomic_compare_exchange_casp(Ordering::Relaxed, Ordering::Relaxed);
@@ -549,10 +954,10 @@ unsafe fn atomic_compare_exchange(
}
}
};
- if res == old {
- Ok(res)
+ if prev == old {
+ Ok(prev)
} else {
- Err(res)
+ Err(prev)
}
}
#[cfg(any(
@@ -560,10 +965,6 @@ unsafe fn atomic_compare_exchange(
portable_atomic_target_feature = "lse",
not(portable_atomic_no_outline_atomics),
))]
-#[cfg_attr(
- not(any(target_feature = "lse", portable_atomic_target_feature = "lse")),
- target_feature(enable = "lse")
-)]
#[inline]
unsafe fn _atomic_compare_exchange_casp(
dst: *mut u128,
@@ -590,6 +991,7 @@ unsafe fn _atomic_compare_exchange_casp(
macro_rules! cmpxchg {
($acquire:tt, $release:tt, $fence:tt) => {
asm!(
+ start_lse!(),
concat!("casp", $acquire, $release, " x6, x7, x4, x5, [{dst}]"),
$fence,
dst = in(reg) ptr_reg!(dst),
@@ -641,13 +1043,13 @@ unsafe fn _atomic_compare_exchange_ldxp_stxp(
($acquire:tt, $release:tt, $fence:tt) => {
asm!(
"2:",
- concat!("ld", $acquire, "xp {out_lo}, {out_hi}, [{dst}]"),
- "cmp {out_lo}, {old_lo}",
+ concat!("ld", $acquire, "xp {prev_lo}, {prev_hi}, [{dst}]"),
+ "cmp {prev_lo}, {old_lo}",
"cset {r:w}, ne",
- "cmp {out_hi}, {old_hi}",
+ "cmp {prev_hi}, {old_hi}",
"cinc {r:w}, {r:w}, ne",
"cbz {r:w}, 3f",
- concat!("st", $release, "xp {r:w}, {out_lo}, {out_hi}, [{dst}]"),
+ concat!("st", $release, "xp {r:w}, {prev_lo}, {prev_hi}, [{dst}]"),
// 0 if the store was successful, 1 if no store was performed
"cbnz {r:w}, 2b",
"b 4f",
@@ -662,8 +1064,8 @@ unsafe fn _atomic_compare_exchange_ldxp_stxp(
old_hi = in(reg) old.pair.hi,
new_lo = in(reg) new.pair.lo,
new_hi = in(reg) new.pair.hi,
- out_lo = out(reg) prev_lo,
- out_hi = out(reg) prev_hi,
+ prev_lo = out(reg) prev_lo,
+ prev_hi = out(reg) prev_hi,
r = out(reg) _,
// Do not use `preserves_flags` because CMP modifies the condition flags.
options(nostack),
@@ -682,24 +1084,52 @@ use self::atomic_compare_exchange as atomic_compare_exchange_weak;
// If FEAT_LSE is available at compile-time and portable_atomic_ll_sc_rmw cfg is not set,
// we use CAS-based atomic RMW.
+#[cfg(not(any(target_feature = "lse128", portable_atomic_target_feature = "lse128")))]
#[cfg(all(
any(target_feature = "lse", portable_atomic_target_feature = "lse"),
not(portable_atomic_ll_sc_rmw),
))]
use _atomic_swap_casp as atomic_swap;
+#[cfg(not(any(target_feature = "lse128", portable_atomic_target_feature = "lse128")))]
#[cfg(not(all(
any(target_feature = "lse", portable_atomic_target_feature = "lse"),
not(portable_atomic_ll_sc_rmw),
)))]
use _atomic_swap_ldxp_stxp as atomic_swap;
+#[cfg(any(target_feature = "lse128", portable_atomic_target_feature = "lse128"))]
+use _atomic_swap_swpp as atomic_swap;
+#[cfg(any(target_feature = "lse128", portable_atomic_target_feature = "lse128"))]
+#[inline]
+unsafe fn _atomic_swap_swpp(dst: *mut u128, val: u128, order: Ordering) -> u128 {
+ debug_assert!(dst as usize % 16 == 0);
+
+ // SAFETY: the caller must guarantee that `dst` is valid for both writes and
+ // reads, 16-byte aligned, that there are no concurrent non-atomic operations,
+ // and the CPU supports FEAT_LSE128.
+ //
+ // Refs:
+ // - https://developer.arm.com/documentation/ddi0602/2023-03/Base-Instructions/SWPP--SWPPA--SWPPAL--SWPPL--Swap-quadword-in-memory-?lang=en
+ unsafe {
+ let val = U128 { whole: val };
+ let (prev_lo, prev_hi);
+ macro_rules! swap {
+ ($acquire:tt, $release:tt, $fence:tt) => {
+ asm!(
+ concat!("swpp", $acquire, $release, " {val_lo}, {val_hi}, [{dst}]"),
+ $fence,
+ dst = in(reg) ptr_reg!(dst),
+ val_lo = inout(reg) val.pair.lo => prev_lo,
+ val_hi = inout(reg) val.pair.hi => prev_hi,
+ options(nostack, preserves_flags),
+ )
+ };
+ }
+ atomic_rmw!(swap, order);
+ U128 { pair: Pair { lo: prev_lo, hi: prev_hi } }.whole
+ }
+}
// Do not use atomic_rmw_cas_3 because it needs extra MOV to implement swap.
-#[cfg(any(
- test,
- all(
- any(target_feature = "lse", portable_atomic_target_feature = "lse"),
- not(portable_atomic_ll_sc_rmw),
- )
-))]
+#[cfg(any(test, not(portable_atomic_ll_sc_rmw)))]
#[cfg(any(target_feature = "lse", portable_atomic_target_feature = "lse"))]
#[inline]
unsafe fn _atomic_swap_casp(dst: *mut u128, val: u128, order: Ordering) -> u128 {
@@ -714,6 +1144,7 @@ unsafe fn _atomic_swap_casp(dst: *mut u128, val: u128, order: Ordering) -> u128
macro_rules! swap {
($acquire:tt, $release:tt, $fence:tt) => {
asm!(
+ start_lse!(),
// If FEAT_LSE2 is not supported, this works like byte-wise atomic.
// This is not single-copy atomic reads, but this is ok because subsequent
// CAS will check for consistency.
@@ -792,7 +1223,7 @@ unsafe fn _atomic_swap_ldxp_stxp(dst: *mut u128, val: u128, order: Ordering) ->
/// `$op` can use the following registers:
/// - val_lo/val_hi pair: val argument (read-only for `$op`)
/// - prev_lo/prev_hi pair: previous value loaded by ll (read-only for `$op`)
-/// - new_lo/new_hi pair: new value that will to stored by sc
+/// - new_lo/new_hi pair: new value that will be stored by sc
macro_rules! atomic_rmw_ll_sc_3 {
($name:ident as $reexport_name:ident $(($preserves_flags:tt))?, $($op:tt)*) => {
// If FEAT_LSE is available at compile-time and portable_atomic_ll_sc_rmw cfg is not set,
@@ -850,7 +1281,7 @@ macro_rules! atomic_rmw_ll_sc_3 {
/// `$op` can use the following registers:
/// - val_lo/val_hi pair: val argument (read-only for `$op`)
/// - x6/x7 pair: previous value loaded (read-only for `$op`)
-/// - x4/x5 pair: new value that will to stored
+/// - x4/x5 pair: new value that will be stored
macro_rules! atomic_rmw_cas_3 {
($name:ident as $reexport_name:ident, $($op:tt)*) => {
// If FEAT_LSE is not available at compile-time or portable_atomic_ll_sc_rmw cfg is set,
@@ -860,13 +1291,7 @@ macro_rules! atomic_rmw_cas_3 {
not(portable_atomic_ll_sc_rmw),
))]
use $name as $reexport_name;
- #[cfg(any(
- test,
- all(
- any(target_feature = "lse", portable_atomic_target_feature = "lse"),
- not(portable_atomic_ll_sc_rmw),
- )
- ))]
+ #[cfg(any(test, not(portable_atomic_ll_sc_rmw)))]
#[cfg(any(target_feature = "lse", portable_atomic_target_feature = "lse"))]
#[inline]
unsafe fn $name(dst: *mut u128, val: u128, order: Ordering) -> u128 {
@@ -880,6 +1305,7 @@ macro_rules! atomic_rmw_cas_3 {
macro_rules! op {
($acquire:tt, $release:tt, $fence:tt) => {
asm!(
+ start_lse!(),
// If FEAT_LSE2 is not supported, this works like byte-wise atomic.
// This is not single-copy atomic reads, but this is ok because subsequent
// CAS will check for consistency.
@@ -923,7 +1349,7 @@ macro_rules! atomic_rmw_cas_3 {
///
/// `$op` can use the following registers:
/// - prev_lo/prev_hi pair: previous value loaded by ll (read-only for `$op`)
-/// - new_lo/new_hi pair: new value that will to stored by sc
+/// - new_lo/new_hi pair: new value that will be stored by sc
macro_rules! atomic_rmw_ll_sc_2 {
($name:ident as $reexport_name:ident $(($preserves_flags:tt))?, $($op:tt)*) => {
// If FEAT_LSE is available at compile-time and portable_atomic_ll_sc_rmw cfg is not set,
@@ -977,7 +1403,7 @@ macro_rules! atomic_rmw_ll_sc_2 {
///
/// `$op` can use the following registers:
/// - x6/x7 pair: previous value loaded (read-only for `$op`)
-/// - x4/x5 pair: new value that will to stored
+/// - x4/x5 pair: new value that will be stored
macro_rules! atomic_rmw_cas_2 {
($name:ident as $reexport_name:ident, $($op:tt)*) => {
// If FEAT_LSE is not available at compile-time or portable_atomic_ll_sc_rmw cfg is set,
@@ -987,13 +1413,7 @@ macro_rules! atomic_rmw_cas_2 {
not(portable_atomic_ll_sc_rmw),
))]
use $name as $reexport_name;
- #[cfg(any(
- test,
- all(
- any(target_feature = "lse", portable_atomic_target_feature = "lse"),
- not(portable_atomic_ll_sc_rmw),
- )
- ))]
+ #[cfg(any(test, not(portable_atomic_ll_sc_rmw)))]
#[cfg(any(target_feature = "lse", portable_atomic_target_feature = "lse"))]
#[inline]
unsafe fn $name(dst: *mut u128, order: Ordering) -> u128 {
@@ -1006,6 +1426,7 @@ macro_rules! atomic_rmw_cas_2 {
macro_rules! op {
($acquire:tt, $release:tt, $fence:tt) => {
asm!(
+ start_lse!(),
// If FEAT_LSE2 is not supported, this works like byte-wise atomic.
// This is not single-copy atomic reads, but this is ok because subsequent
// CAS will check for consistency.
@@ -1066,16 +1487,48 @@ atomic_rmw_cas_3! {
select_le_or_be!("sbc x5, x7, {val_hi}", "sbc x4, x6, {val_lo}"),
}
+#[cfg(not(any(target_feature = "lse128", portable_atomic_target_feature = "lse128")))]
atomic_rmw_ll_sc_3! {
_atomic_and_ldxp_stxp as atomic_and (preserves_flags),
"and {new_lo}, {prev_lo}, {val_lo}",
"and {new_hi}, {prev_hi}, {val_hi}",
}
+#[cfg(not(any(target_feature = "lse128", portable_atomic_target_feature = "lse128")))]
atomic_rmw_cas_3! {
_atomic_and_casp as atomic_and,
"and x4, x6, {val_lo}",
"and x5, x7, {val_hi}",
}
+#[cfg(any(target_feature = "lse128", portable_atomic_target_feature = "lse128"))]
+#[inline]
+unsafe fn atomic_and(dst: *mut u128, val: u128, order: Ordering) -> u128 {
+ debug_assert!(dst as usize % 16 == 0);
+
+ // SAFETY: the caller must guarantee that `dst` is valid for both writes and
+ // reads, 16-byte aligned, that there are no concurrent non-atomic operations,
+ // and the CPU supports FEAT_LSE128.
+ //
+ // Refs:
+ // - https://developer.arm.com/documentation/ddi0602/2023-03/Base-Instructions/LDCLRP--LDCLRPA--LDCLRPAL--LDCLRPL--Atomic-bit-clear-on-quadword-in-memory-?lang=en
+ unsafe {
+ let val = U128 { whole: !val };
+ let (prev_lo, prev_hi);
+ macro_rules! and {
+ ($acquire:tt, $release:tt, $fence:tt) => {
+ asm!(
+ concat!("ldclrp", $acquire, $release, " {val_lo}, {val_hi}, [{dst}]"),
+ $fence,
+ dst = in(reg) ptr_reg!(dst),
+ val_lo = inout(reg) val.pair.lo => prev_lo,
+ val_hi = inout(reg) val.pair.hi => prev_hi,
+ options(nostack, preserves_flags),
+ )
+ };
+ }
+ atomic_rmw!(and, order);
+ U128 { pair: Pair { lo: prev_lo, hi: prev_hi } }.whole
+ }
+}
atomic_rmw_ll_sc_3! {
_atomic_nand_ldxp_stxp as atomic_nand (preserves_flags),
@@ -1092,16 +1545,48 @@ atomic_rmw_cas_3! {
"mvn x5, x5",
}
+#[cfg(not(any(target_feature = "lse128", portable_atomic_target_feature = "lse128")))]
atomic_rmw_ll_sc_3! {
_atomic_or_ldxp_stxp as atomic_or (preserves_flags),
"orr {new_lo}, {prev_lo}, {val_lo}",
"orr {new_hi}, {prev_hi}, {val_hi}",
}
+#[cfg(not(any(target_feature = "lse128", portable_atomic_target_feature = "lse128")))]
atomic_rmw_cas_3! {
_atomic_or_casp as atomic_or,
"orr x4, x6, {val_lo}",
"orr x5, x7, {val_hi}",
}
+#[cfg(any(target_feature = "lse128", portable_atomic_target_feature = "lse128"))]
+#[inline]
+unsafe fn atomic_or(dst: *mut u128, val: u128, order: Ordering) -> u128 {
+ debug_assert!(dst as usize % 16 == 0);
+
+ // SAFETY: the caller must guarantee that `dst` is valid for both writes and
+ // reads, 16-byte aligned, that there are no concurrent non-atomic operations,
+ // and the CPU supports FEAT_LSE128.
+ //
+ // Refs:
+ // - https://developer.arm.com/documentation/ddi0602/2023-03/Base-Instructions/LDSETP--LDSETPA--LDSETPAL--LDSETPL--Atomic-bit-set-on-quadword-in-memory-?lang=en
+ unsafe {
+ let val = U128 { whole: val };
+ let (prev_lo, prev_hi);
+ macro_rules! or {
+ ($acquire:tt, $release:tt, $fence:tt) => {
+ asm!(
+ concat!("ldsetp", $acquire, $release, " {val_lo}, {val_hi}, [{dst}]"),
+ $fence,
+ dst = in(reg) ptr_reg!(dst),
+ val_lo = inout(reg) val.pair.lo => prev_lo,
+ val_hi = inout(reg) val.pair.hi => prev_hi,
+ options(nostack, preserves_flags),
+ )
+ };
+ }
+ atomic_rmw!(or, order);
+ U128 { pair: Pair { lo: prev_lo, hi: prev_hi } }.whole
+ }
+}
atomic_rmw_ll_sc_3! {
_atomic_xor_ldxp_stxp as atomic_xor (preserves_flags),
diff --git a/vendor/portable-atomic/src/imp/atomic128/detect/aarch64_aa64reg.rs b/vendor/portable-atomic/src/imp/atomic128/detect/aarch64_aa64reg.rs
index f32c38837..4cbdb51ff 100644
--- a/vendor/portable-atomic/src/imp/atomic128/detect/aarch64_aa64reg.rs
+++ b/vendor/portable-atomic/src/imp/atomic128/detect/aarch64_aa64reg.rs
@@ -1,6 +1,8 @@
-// Run-time feature detection on aarch64 Linux/FreeBSD/OpenBSD by parsing system registers.
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
+// Run-time feature detection on aarch64 Linux/FreeBSD/NetBSD/OpenBSD by parsing system registers.
//
-// As of nightly-2023-01-23, is_aarch64_feature_detected doesn't support run-time detection on OpenBSD.
+// As of nightly-2023-01-23, is_aarch64_feature_detected doesn't support run-time detection on NetBSD/OpenBSD.
// https://github.com/rust-lang/stdarch/blob/a0c30f3e3c75adcd6ee7efc94014ebcead61c507/crates/std_detect/src/detect/mod.rs
// https://github.com/rust-lang/stdarch/pull/1374
//
@@ -14,10 +16,12 @@
// https://github.com/torvalds/linux/commit/77c97b4ee21290f5f083173d957843b615abbff2
// - FreeBSD 12.0+ (emulate mrs instruction)
// https://github.com/freebsd/freebsd-src/commit/398810619cb32abf349f8de23f29510b2ee0839b
+// - NetBSD 9.0+ (through sysctl)
+// https://github.com/NetBSD/src/commit/0e9d25528729f7fea53e78275d1bc5039dfe8ffb
// - OpenBSD 7.1+ (through sysctl)
// https://github.com/openbsd/src/commit/d335af936b9d7dd9cf655cae1ce19560c45de6c8
//
-// For now, this module is only used on OpenBSD.
+// For now, this module is only used on NetBSD/OpenBSD.
// On Linux/FreeBSD, this module is test-only:
// - On Linux, this approach requires a higher kernel version than Rust supports,
// and also does not work with qemu-user (as of QEMU 7.2) and Valgrind.
@@ -28,11 +32,14 @@
include!("common.rs");
+#[cfg_attr(test, derive(Debug, PartialEq))]
struct AA64Reg {
aa64isar0: u64,
#[cfg(test)]
aa64isar1: u64,
- #[cfg(test)]
+ // OpenBSD has an API to get this, but currently always returns 0.
+ // https://github.com/openbsd/src/blob/6a233889798dc3ecb18acc52dce1e57862af2957/sys/arch/arm64/arm64/machdep.c#L371-L377
+ #[cfg_attr(target_os = "openbsd", cfg(test))]
aa64mmfr2: u64,
}
@@ -42,7 +49,7 @@ fn _detect(info: &mut CpuInfo) {
aa64isar0,
#[cfg(test)]
aa64isar1,
- #[cfg(test)]
+ #[cfg_attr(target_os = "openbsd", cfg(test))]
aa64mmfr2,
} = imp::aa64reg();
@@ -51,7 +58,7 @@ fn _detect(info: &mut CpuInfo) {
let atomic = extract(aa64isar0, 23, 20);
if atomic >= 2 {
info.set(CpuInfo::HAS_LSE);
- // we currently only use FEAT_LSE in outline-atomics.
+ // we currently only use FEAT_LSE and FEAT_LSE2 in outline-atomics.
#[cfg(test)]
{
if atomic >= 3 {
@@ -59,7 +66,7 @@ fn _detect(info: &mut CpuInfo) {
}
}
}
- // we currently only use FEAT_LSE in outline-atomics.
+ // we currently only use FEAT_LSE and FEAT_LSE2 in outline-atomics.
#[cfg(test)]
{
// ID_AA64ISAR1_EL1, Instruction Set Attribute Register 1
@@ -67,6 +74,11 @@ fn _detect(info: &mut CpuInfo) {
if extract(aa64isar1, 23, 20) >= 3 {
info.set(CpuInfo::HAS_RCPC3);
}
+ }
+ // OpenBSD has an API to get this, but currently always returns 0.
+ // https://github.com/openbsd/src/blob/6a233889798dc3ecb18acc52dce1e57862af2957/sys/arch/arm64/arm64/machdep.c#L371-L377
+ #[cfg_attr(target_os = "openbsd", cfg(test))]
+ {
// ID_AA64MMFR2_EL1, AArch64 Memory Model Feature Register 2
// https://developer.arm.com/documentation/ddi0601/2023-06/AArch64-Registers/ID-AA64MMFR2-EL1--AArch64-Memory-Model-Feature-Register-2?lang=en
if extract(aa64mmfr2, 35, 32) >= 1 {
@@ -79,7 +91,7 @@ fn extract(x: u64, high: usize, low: usize) -> u64 {
(x >> low) & ((1 << (high - low + 1)) - 1)
}
-#[cfg(not(target_os = "openbsd"))]
+#[cfg(not(any(target_os = "netbsd", target_os = "openbsd")))]
mod imp {
// This module is test-only. See parent module docs for details.
@@ -95,7 +107,7 @@ mod imp {
unsafe {
let aa64isar0: u64;
asm!(
- "mrs {}, ID_AA64ISAR0_EL1",
+ "mrs {0}, ID_AA64ISAR0_EL1",
out(reg) aa64isar0,
options(pure, nomem, nostack, preserves_flags)
);
@@ -104,31 +116,140 @@ mod imp {
#[cfg(test)]
{
asm!(
- "mrs {}, ID_AA64ISAR1_EL1",
+ "mrs {0}, ID_AA64ISAR1_EL1",
out(reg) aa64isar1,
options(pure, nomem, nostack, preserves_flags)
);
}
- #[cfg(test)]
let aa64mmfr2: u64;
- #[cfg(test)]
- {
- asm!(
- "mrs {}, ID_AA64MMFR2_EL1",
- out(reg) aa64mmfr2,
- options(pure, nomem, nostack, preserves_flags)
- );
- }
+ asm!(
+ "mrs {0}, ID_AA64MMFR2_EL1",
+ out(reg) aa64mmfr2,
+ options(pure, nomem, nostack, preserves_flags)
+ );
AA64Reg {
aa64isar0,
#[cfg(test)]
aa64isar1,
- #[cfg(test)]
aa64mmfr2,
}
}
}
}
+#[cfg(target_os = "netbsd")]
+mod imp {
+ // NetBSD doesn't trap the mrs instruction, but exposes the system registers through sysctl.
+ // https://github.com/NetBSD/src/commit/0e9d25528729f7fea53e78275d1bc5039dfe8ffb
+ // https://github.com/golang/sys/commit/ef9fd89ba245e184bdd308f7f2b4f3c551fa5b0f
+
+ use core::ptr;
+
+ use super::AA64Reg;
+
+ // core::ffi::c_* (except c_void) requires Rust 1.64, libc will soon require Rust 1.47
+ #[allow(non_camel_case_types)]
+ pub(super) mod ffi {
+ pub(crate) use super::super::c_types::{c_char, c_int, c_size_t, c_void};
+
+ extern "C" {
+ // Defined in sys/sysctl.h.
+ // https://man.netbsd.org/sysctl.3
+ // https://github.com/NetBSD/src/blob/167403557cf60bed09a63fc84d941a1a4bd7d52e/sys/sys/sysctl.h
+ // https://github.com/rust-lang/libc/blob/0.2.139/src/unix/bsd/netbsdlike/netbsd/mod.rs#L2582
+ pub(crate) fn sysctlbyname(
+ name: *const c_char,
+ old_p: *mut c_void,
+ old_len_p: *mut c_size_t,
+ new_p: *const c_void,
+ new_len: c_size_t,
+ ) -> c_int;
+ }
+
+ // Defined in aarch64/armreg.h.
+ // https://github.com/NetBSD/src/blob/167403557cf60bed09a63fc84d941a1a4bd7d52e/sys/arch/aarch64/include/armreg.h#L1626
+ #[derive(Clone, Copy)]
+ #[repr(C)]
+ pub(crate) struct aarch64_sysctl_cpu_id {
+ // NetBSD 9.0+
+ // https://github.com/NetBSD/src/commit/0e9d25528729f7fea53e78275d1bc5039dfe8ffb
+ pub(crate) midr: u64,
+ pub(crate) revidr: u64,
+ pub(crate) mpidr: u64,
+ pub(crate) aa64dfr0: u64,
+ pub(crate) aa64dfr1: u64,
+ pub(crate) aa64isar0: u64,
+ pub(crate) aa64isar1: u64,
+ pub(crate) aa64mmfr0: u64,
+ pub(crate) aa64mmfr1: u64,
+ pub(crate) aa64mmfr2: u64,
+ pub(crate) aa64pfr0: u64,
+ pub(crate) aa64pfr1: u64,
+ pub(crate) aa64zfr0: u64,
+ pub(crate) mvfr0: u32,
+ pub(crate) mvfr1: u32,
+ pub(crate) mvfr2: u32,
+ // NetBSD 10.0+
+ // https://github.com/NetBSD/src/commit/0c7bdc13f0e332cccec56e307f023b4888638973
+ pub(crate) pad: u32,
+ pub(crate) clidr: u64,
+ pub(crate) ctr: u64,
+ }
+ }
+
+ pub(super) unsafe fn sysctl_cpu_id(name: &[u8]) -> Option<AA64Reg> {
+ const OUT_LEN: ffi::c_size_t =
+ core::mem::size_of::<ffi::aarch64_sysctl_cpu_id>() as ffi::c_size_t;
+
+ debug_assert_eq!(name.last(), Some(&0), "{:?}", name);
+ debug_assert_eq!(name.iter().filter(|&&v| v == 0).count(), 1, "{:?}", name);
+
+ // SAFETY: all fields of aarch64_sysctl_cpu_id are zero-able and we use
+ // the result when machdep.cpuN.cpu_id sysctl was successful.
+ let mut buf: ffi::aarch64_sysctl_cpu_id = unsafe { core::mem::zeroed() };
+ let mut out_len = OUT_LEN;
+ // SAFETY:
+ // - the caller must guarantee that `name` is ` machdep.cpuN.cpu_id` in a C string.
+ // - `out_len` does not exceed the size of the value at `buf`.
+ // - `sysctlbyname` is thread-safe.
+ let res = unsafe {
+ ffi::sysctlbyname(
+ name.as_ptr().cast::<ffi::c_char>(),
+ (&mut buf as *mut ffi::aarch64_sysctl_cpu_id).cast::<ffi::c_void>(),
+ &mut out_len,
+ ptr::null_mut(),
+ 0,
+ )
+ };
+ if res != 0 {
+ return None;
+ }
+ Some(AA64Reg {
+ aa64isar0: buf.aa64isar0,
+ #[cfg(test)]
+ aa64isar1: buf.aa64isar1,
+ aa64mmfr2: buf.aa64mmfr2,
+ })
+ }
+
+ pub(super) fn aa64reg() -> AA64Reg {
+ // Get system registers for cpu0.
+ // If failed, returns default because machdep.cpuN.cpu_id sysctl is not available.
+ // machdep.cpuN.cpu_id sysctl was added on NetBSD 9.0 so it is not available on older versions.
+ // SAFETY: we passed a valid name in a C string.
+ // It is ok to check only cpu0, even if there are more CPUs.
+ // https://github.com/NetBSD/src/commit/bd9707e06ea7d21b5c24df6dfc14cb37c2819416
+ // https://github.com/golang/sys/commit/ef9fd89ba245e184bdd308f7f2b4f3c551fa5b0f
+ match unsafe { sysctl_cpu_id(b"machdep.cpu0.cpu_id\0") } {
+ Some(cpu_id) => cpu_id,
+ None => AA64Reg {
+ aa64isar0: 0,
+ #[cfg(test)]
+ aa64isar1: 0,
+ aa64mmfr2: 0,
+ },
+ }
+ }
+}
#[cfg(target_os = "openbsd")]
mod imp {
// OpenBSD doesn't trap the mrs instruction, but exposes the system registers through sysctl.
@@ -152,6 +273,8 @@ mod imp {
pub(crate) const CPU_ID_AA64ISAR0: c_int = 2;
#[cfg(test)]
pub(crate) const CPU_ID_AA64ISAR1: c_int = 3;
+ // OpenBSD has an API to get this, but currently always returns 0.
+ // https://github.com/openbsd/src/blob/6a233889798dc3ecb18acc52dce1e57862af2957/sys/arch/arm64/arm64/machdep.c#L371-L377
#[cfg(test)]
pub(crate) const CPU_ID_AA64MMFR2: c_int = 7;
@@ -276,6 +399,145 @@ mod tests {
}
}
+ #[allow(clippy::cast_possible_wrap)]
+ #[cfg(target_os = "netbsd")]
+ #[test]
+ fn test_netbsd() {
+ use c_types::*;
+ use core::{arch::asm, mem, ptr};
+ use imp::ffi;
+ use test_helper::sys;
+
+ // Call syscall using asm instead of libc.
+ // Note that NetBSD does not guarantee the stability of raw syscall as
+ // much as Linux does (It may actually be stable enough, though: https://lists.llvm.org/pipermail/llvm-dev/2019-June/133393.html).
+ //
+ // This is currently used only for testing.
+ unsafe fn sysctl_cpu_id_asm_syscall(name: &[&[u8]]) -> Result<AA64Reg, c_int> {
+ // https://github.com/golang/go/blob/4badad8d477ffd7a6b762c35bc69aed82faface7/src/syscall/asm_netbsd_arm64.s
+ #[inline]
+ unsafe fn sysctl(
+ name: *const c_int,
+ name_len: c_uint,
+ old_p: *mut c_void,
+ old_len_p: *mut c_size_t,
+ new_p: *const c_void,
+ new_len: c_size_t,
+ ) -> Result<c_int, c_int> {
+ #[allow(clippy::cast_possible_truncation)]
+ // SAFETY: the caller must uphold the safety contract.
+ unsafe {
+ let mut n = sys::SYS___sysctl as u64;
+ let r: i64;
+ asm!(
+ "svc 0",
+ "b.cc 2f",
+ "mov x17, x0",
+ "mov x0, #-1",
+ "2:",
+ inout("x17") n,
+ inout("x0") ptr_reg!(name) => r,
+ inout("x1") name_len as u64 => _,
+ in("x2") ptr_reg!(old_p),
+ in("x3") ptr_reg!(old_len_p),
+ in("x4") ptr_reg!(new_p),
+ in("x5") new_len as u64,
+ options(nostack),
+ );
+ if r as c_int == -1 {
+ Err(n as c_int)
+ } else {
+ Ok(r as c_int)
+ }
+ }
+ }
+
+ // https://github.com/golang/sys/blob/4badad8d477ffd7a6b762c35bc69aed82faface7/cpu/cpu_netbsd_arm64.go.
+ use std::{vec, vec::Vec};
+ fn sysctl_nodes(mib: &mut Vec<i32>) -> Result<Vec<sys::sysctlnode>, i32> {
+ mib.push(sys::CTL_QUERY);
+ let mut q_node = sys::sysctlnode {
+ sysctl_flags: sys::SYSCTL_VERS_1,
+ ..unsafe { mem::zeroed() }
+ };
+ let qp = (&mut q_node as *mut sys::sysctlnode).cast::<ffi::c_void>();
+ let sz = mem::size_of::<sys::sysctlnode>();
+ let mut olen = 0;
+ #[allow(clippy::cast_possible_truncation)]
+ unsafe {
+ sysctl(mib.as_ptr(), mib.len() as c_uint, ptr::null_mut(), &mut olen, qp, sz)?;
+ }
+
+ let mut nodes = Vec::<sys::sysctlnode>::with_capacity(olen / sz);
+ let np = nodes.as_mut_ptr().cast::<ffi::c_void>();
+ #[allow(clippy::cast_possible_truncation)]
+ unsafe {
+ sysctl(mib.as_ptr(), mib.len() as c_uint, np, &mut olen, qp, sz)?;
+ nodes.set_len(olen / sz);
+ }
+
+ mib.pop(); // pop CTL_QUERY
+ Ok(nodes)
+ }
+ fn name_to_mib(parts: &[&[u8]]) -> Result<Vec<i32>, i32> {
+ let mut mib = vec![];
+ for (part_no, &part) in parts.iter().enumerate() {
+ let nodes = sysctl_nodes(&mut mib)?;
+ for node in nodes {
+ let mut n = vec![];
+ for b in node.sysctl_name {
+ if b != 0 {
+ n.push(b);
+ }
+ }
+ if n == part {
+ mib.push(node.sysctl_num);
+ break;
+ }
+ }
+ if mib.len() != part_no + 1 {
+ return Err(0);
+ }
+ }
+
+ Ok(mib)
+ }
+
+ const OUT_LEN: ffi::c_size_t =
+ core::mem::size_of::<ffi::aarch64_sysctl_cpu_id>() as ffi::c_size_t;
+
+ let mib = name_to_mib(name)?;
+
+ let mut buf: ffi::aarch64_sysctl_cpu_id = unsafe { core::mem::zeroed() };
+ let mut out_len = OUT_LEN;
+ #[allow(clippy::cast_possible_truncation)]
+ unsafe {
+ sysctl(
+ mib.as_ptr(),
+ mib.len() as c_uint,
+ (&mut buf as *mut ffi::aarch64_sysctl_cpu_id).cast::<ffi::c_void>(),
+ &mut out_len,
+ ptr::null_mut(),
+ 0,
+ )?;
+ }
+ Ok(AA64Reg {
+ aa64isar0: buf.aa64isar0,
+ #[cfg(test)]
+ aa64isar1: buf.aa64isar1,
+ #[cfg(test)]
+ aa64mmfr2: buf.aa64mmfr2,
+ })
+ }
+
+ unsafe {
+ assert_eq!(
+ imp::sysctl_cpu_id(b"machdep.cpu0.cpu_id\0").unwrap(),
+ sysctl_cpu_id_asm_syscall(&[b"machdep", b"cpu0", b"cpu_id"]).unwrap()
+ );
+ }
+ }
+
// Static assertions for FFI bindings.
// This checks that FFI bindings defined in this crate, FFI bindings defined
// in libc, and FFI bindings generated for the platform's latest header file
@@ -285,6 +547,56 @@ mod tests {
// without actually running tests on these platforms.
// See also tools/codegen/src/ffi.rs.
// TODO(codegen): auto-generate this test
+ #[cfg(target_os = "netbsd")]
+ #[allow(
+ clippy::cast_possible_wrap,
+ clippy::cast_sign_loss,
+ clippy::no_effect_underscore_binding,
+ clippy::used_underscore_binding
+ )]
+ const _: fn() = || {
+ use core::mem::size_of;
+ use imp::ffi;
+ use test_helper::{libc, sys};
+ let mut _sysctlbyname: unsafe extern "C" fn(
+ *const ffi::c_char,
+ *mut ffi::c_void,
+ *mut ffi::c_size_t,
+ *const ffi::c_void,
+ ffi::c_size_t,
+ ) -> ffi::c_int = ffi::sysctlbyname;
+ _sysctlbyname = libc::sysctlbyname;
+ _sysctlbyname = sys::sysctlbyname;
+ // libc doesn't have this
+ // static_assert!(
+ // size_of::<ffi::aarch64_sysctl_cpu_id>() == size_of::<libc::aarch64_sysctl_cpu_id>()
+ // );
+ static_assert!(
+ size_of::<ffi::aarch64_sysctl_cpu_id>() == size_of::<sys::aarch64_sysctl_cpu_id>()
+ );
+ let ffi: ffi::aarch64_sysctl_cpu_id = unsafe { core::mem::zeroed() };
+ let _ = sys::aarch64_sysctl_cpu_id {
+ ac_midr: ffi.midr,
+ ac_revidr: ffi.revidr,
+ ac_mpidr: ffi.mpidr,
+ ac_aa64dfr0: ffi.aa64dfr0,
+ ac_aa64dfr1: ffi.aa64dfr1,
+ ac_aa64isar0: ffi.aa64isar0,
+ ac_aa64isar1: ffi.aa64isar1,
+ ac_aa64mmfr0: ffi.aa64mmfr0,
+ ac_aa64mmfr1: ffi.aa64mmfr1,
+ ac_aa64mmfr2: ffi.aa64mmfr2,
+ ac_aa64pfr0: ffi.aa64pfr0,
+ ac_aa64pfr1: ffi.aa64pfr1,
+ ac_aa64zfr0: ffi.aa64zfr0,
+ ac_mvfr0: ffi.mvfr0,
+ ac_mvfr1: ffi.mvfr1,
+ ac_mvfr2: ffi.mvfr2,
+ ac_pad: ffi.pad,
+ ac_clidr: ffi.clidr,
+ ac_ctr: ffi.ctr,
+ };
+ };
#[cfg(target_os = "openbsd")]
#[allow(
clippy::cast_possible_wrap,
diff --git a/vendor/portable-atomic/src/imp/atomic128/detect/aarch64_fuchsia.rs b/vendor/portable-atomic/src/imp/atomic128/detect/aarch64_fuchsia.rs
index 69aa74ebd..978418c5b 100644
--- a/vendor/portable-atomic/src/imp/atomic128/detect/aarch64_fuchsia.rs
+++ b/vendor/portable-atomic/src/imp/atomic128/detect/aarch64_fuchsia.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Run-time feature detection on aarch64 Fuchsia by using zx_system_get_features.
//
// As of nightly-2023-01-23, is_aarch64_feature_detected doesn't support run-time detection on Fuchsia.
diff --git a/vendor/portable-atomic/src/imp/atomic128/detect/aarch64_macos.rs b/vendor/portable-atomic/src/imp/atomic128/detect/aarch64_macos.rs
index 0bf0e6b0f..d6bf9d002 100644
--- a/vendor/portable-atomic/src/imp/atomic128/detect/aarch64_macos.rs
+++ b/vendor/portable-atomic/src/imp/atomic128/detect/aarch64_macos.rs
@@ -1,10 +1,12 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Run-time feature detection on aarch64 macOS by using sysctl.
//
// This module is currently only enabled on tests because aarch64 macOS always supports FEAT_LSE and FEAT_LSE2.
-// https://github.com/llvm/llvm-project/blob/llvmorg-16.0.0/llvm/include/llvm/TargetParser/AArch64TargetParser.h#L458
+// https://github.com/llvm/llvm-project/blob/llvmorg-17.0.0-rc2/llvm/include/llvm/TargetParser/AArch64TargetParser.h#L494
//
// If macOS supporting Armv9.4-a becomes popular in the future, this module will
-// be used to support outline atomics for FEAT_LSE128/FEAT_LRCPC3.
+// be used to support outline-atomics for FEAT_LSE128/FEAT_LRCPC3.
//
// Refs: https://developer.apple.com/documentation/kernel/1387446-sysctlbyname/determining_instruction_set_characteristics
//
@@ -77,14 +79,14 @@ fn _detect(info: &mut CpuInfo) {
} {
info.set(CpuInfo::HAS_LSE);
}
- // we currently only use FEAT_LSE in outline-atomics.
+ // SAFETY: we passed a valid C string.
+ if unsafe { sysctlbyname32(b"hw.optional.arm.FEAT_LSE2\0").unwrap_or(0) != 0 } {
+ info.set(CpuInfo::HAS_LSE2);
+ }
+ // we currently only use FEAT_LSE and FEAT_LSE2 in outline-atomics.
#[cfg(test)]
{
// SAFETY: we passed a valid C string.
- if unsafe { sysctlbyname32(b"hw.optional.arm.FEAT_LSE2\0").unwrap_or(0) != 0 } {
- info.set(CpuInfo::HAS_LSE2);
- }
- // SAFETY: we passed a valid C string.
if unsafe { sysctlbyname32(b"hw.optional.arm.FEAT_LSE128\0").unwrap_or(0) != 0 } {
info.set(CpuInfo::HAS_LSE128);
}
diff --git a/vendor/portable-atomic/src/imp/atomic128/detect/aarch64_windows.rs b/vendor/portable-atomic/src/imp/atomic128/detect/aarch64_windows.rs
index 6922ce4a7..e19c4b8b7 100644
--- a/vendor/portable-atomic/src/imp/atomic128/detect/aarch64_windows.rs
+++ b/vendor/portable-atomic/src/imp/atomic128/detect/aarch64_windows.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Run-time feature detection on aarch64 Windows by using IsProcessorFeaturePresent.
//
// As of nightly-2023-01-23, is_aarch64_feature_detected doesn't support run-time detection of FEAT_LSE on Windows.
diff --git a/vendor/portable-atomic/src/imp/atomic128/detect/auxv.rs b/vendor/portable-atomic/src/imp/atomic128/detect/auxv.rs
index a80350e47..a4455911b 100644
--- a/vendor/portable-atomic/src/imp/atomic128/detect/auxv.rs
+++ b/vendor/portable-atomic/src/imp/atomic128/detect/auxv.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Run-time feature detection on aarch64/powerpc64 Linux/Android/FreeBSD by parsing ELF auxiliary vectors.
//
// # Linux/Android
@@ -24,11 +26,13 @@
//
// - On musl with static linking. See the above for more.
// Also, in this case, dlsym(getauxval) always returns null.
-// - On uClibc-ng (*-linux-uclibc*, *-l4re-uclibc*), [uClibc-ng 1.0.43 (released in 2023-04-05) added getauxval](https://repo.or.cz/uclibc-ng.git/commitdiff/d869bb1600942c01a77539128f9ba5b5b55ad647).
+// - On uClibc-ng (*-linux-uclibc*, *-l4re-uclibc*), [uClibc-ng 1.0.43 (released in 2023-04-05) added getauxval](https://github.com/wbx-github/uclibc-ng/commit/d869bb1600942c01a77539128f9ba5b5b55ad647).
// - On Picolibc, [Picolibc 1.4.6 added getauxval stub](https://github.com/picolibc/picolibc#picolibc-version-146).
//
// See also https://github.com/rust-lang/stdarch/pull/1375
//
+// See tests::test_linux_like and aarch64_aa64reg.rs for (test-only) alternative implementations.
+//
// # FreeBSD
//
// As of nightly-2023-01-23, is_aarch64_feature_detected always uses mrs on
@@ -47,6 +51,8 @@
// https://www.freebsd.org/security/unsupported
// See also https://github.com/rust-lang/stdarch/pull/611#issuecomment-445464613
//
+// See tests::test_freebsd and aarch64_aa64reg.rs for (test-only) alternative implementations.
+//
// # PowerPC64
//
// On PowerPC64, outline-atomics is currently disabled by default mainly for
@@ -69,7 +75,7 @@ mod os {
// https://man7.org/linux/man-pages/man3/getauxval.3.html
// https://github.com/bminor/glibc/blob/801af9fafd4689337ebf27260aa115335a0cb2bc/misc/sys/auxv.h
// https://github.com/bminor/musl/blob/7d756e1c04de6eb3f2b3d3e1141a218bb329fcfb/include/sys/auxv.h
- // https://repo.or.cz/uclibc-ng.git/blob/9d549d7bc6a1b78498ee8d1f39f6a324fdfc9e5d:/include/sys/auxv.h
+ // https://github.com/wbx-github/uclibc-ng/blob/cdb07d2cd52af39feb425e6d36c02b30916b9f0a/include/sys/auxv.h
// https://github.com/aosp-mirror/platform_bionic/blob/d3ebc2f7c49a9893b114124d4a6b315f3a328764/libc/include/sys/auxv.h
// https://github.com/picolibc/picolibc/blob/7a8a58aeaa5946cb662577a518051091b691af3a/newlib/libc/picolib/getauxval.c
// https://github.com/rust-lang/libc/blob/0.2.139/src/unix/linux_like/linux/gnu/mod.rs#L1201
@@ -181,7 +187,6 @@ mod arch {
// https://github.com/freebsd/freebsd-src/blob/release/13.0.0/sys/arm64/include/elf.h
// https://github.com/freebsd/freebsd-src/blob/release/12.2.0/sys/arm64/include/elf.h
pub(super) const HWCAP_ATOMICS: ffi::c_ulong = 1 << 8;
- #[cfg(test)]
pub(super) const HWCAP_USCAT: ffi::c_ulong = 1 << 25;
#[cold]
@@ -191,12 +196,8 @@ mod arch {
if hwcap & HWCAP_ATOMICS != 0 {
info.set(CpuInfo::HAS_LSE);
}
- // we currently only use FEAT_LSE in outline-atomics.
- #[cfg(test)]
- {
- if hwcap & HWCAP_USCAT != 0 {
- info.set(CpuInfo::HAS_LSE2);
- }
+ if hwcap & HWCAP_USCAT != 0 {
+ info.set(CpuInfo::HAS_LSE2);
}
}
}
@@ -235,6 +236,120 @@ mod arch {
mod tests {
use super::*;
+ #[cfg(any(target_os = "linux", target_os = "android"))]
+ #[cfg(target_pointer_width = "64")]
+ #[test]
+ fn test_linux_like() {
+ use c_types::*;
+ use core::{arch::asm, mem};
+ use std::vec;
+ use test_helper::{libc, sys};
+
+ // Linux kernel 6.4 has added a way to read auxv without depending on either libc or mrs trap.
+ // https://github.com/torvalds/linux/commit/ddc65971bb677aa9f6a4c21f76d3133e106f88eb
+ //
+ // This is currently used only for testing.
+ fn getauxval_pr_get_auxv(type_: ffi::c_ulong) -> Result<ffi::c_ulong, c_int> {
+ #[cfg(target_arch = "aarch64")]
+ unsafe fn prctl_get_auxv(out: *mut c_void, len: usize) -> Result<usize, c_int> {
+ let r: i64;
+ unsafe {
+ asm!(
+ "svc 0",
+ in("x8") sys::__NR_prctl as u64,
+ inout("x0") sys::PR_GET_AUXV as u64 => r,
+ in("x1") ptr_reg!(out),
+ in("x2") len as u64,
+ // arg4 and arg5 must be zero.
+ in("x3") 0_u64,
+ in("x4") 0_u64,
+ options(nostack, preserves_flags)
+ );
+ }
+ #[allow(clippy::cast_possible_truncation, clippy::cast_sign_loss)]
+ if (r as c_int) < 0 {
+ Err(r as c_int)
+ } else {
+ Ok(r as usize)
+ }
+ }
+ #[cfg(target_arch = "powerpc64")]
+ unsafe fn prctl_get_auxv(out: *mut c_void, len: usize) -> Result<usize, c_int> {
+ let r: i64;
+ unsafe {
+ asm!(
+ "sc",
+ "bns+ 2f",
+ "neg %r3, %r3",
+ "2:",
+ inout("r0") sys::__NR_prctl as u64 => _,
+ inout("r3") sys::PR_GET_AUXV as u64 => r,
+ inout("r4") ptr_reg!(out) => _,
+ inout("r5") len as u64 => _,
+ // arg4 and arg5 must be zero.
+ inout("r6") 0_u64 => _,
+ inout("r7") 0_u64 => _,
+ out("r8") _,
+ out("r9") _,
+ out("r10") _,
+ out("r11") _,
+ out("r12") _,
+ out("cr0") _,
+ options(nostack, preserves_flags)
+ );
+ }
+ #[allow(clippy::cast_possible_truncation, clippy::cast_sign_loss)]
+ if (r as c_int) < 0 {
+ Err(r as c_int)
+ } else {
+ Ok(r as usize)
+ }
+ }
+
+ let mut auxv = vec![unsafe { mem::zeroed::<sys::Elf64_auxv_t>() }; 38];
+
+ let old_len = auxv.len() * mem::size_of::<sys::Elf64_auxv_t>();
+
+ // SAFETY:
+ // - `out_len` does not exceed the size of `auxv`.
+ let _len = unsafe { prctl_get_auxv(auxv.as_mut_ptr().cast::<c_void>(), old_len)? };
+
+ for aux in &auxv {
+ if aux.a_type == type_ {
+ // SAFETY: aux.a_un is #[repr(C)] union and all fields have
+ // the same size and can be safely transmuted to integers.
+ return Ok(unsafe { aux.a_un.a_val });
+ }
+ }
+ Err(0)
+ }
+
+ unsafe {
+ let mut u = mem::zeroed();
+ assert_eq!(libc::uname(&mut u), 0);
+ let release = std::ffi::CStr::from_ptr(u.release.as_ptr());
+ let release = core::str::from_utf8(release.to_bytes()).unwrap();
+ let mut digits = release.split('.');
+ let major = digits.next().unwrap().parse::<u32>().unwrap();
+ let minor = digits.next().unwrap().parse::<u32>().unwrap();
+ if (major, minor) < (6, 4) {
+ std::eprintln!("kernel version: {major}.{minor} (no pr_get_auxv)");
+ assert_eq!(getauxval_pr_get_auxv(ffi::AT_HWCAP).unwrap_err(), -22);
+ assert_eq!(getauxval_pr_get_auxv(ffi::AT_HWCAP2).unwrap_err(), -22);
+ } else {
+ std::eprintln!("kernel version: {major}.{minor} (has pr_get_auxv)");
+ assert_eq!(
+ os::getauxval(ffi::AT_HWCAP),
+ getauxval_pr_get_auxv(ffi::AT_HWCAP).unwrap()
+ );
+ assert_eq!(
+ os::getauxval(ffi::AT_HWCAP2),
+ getauxval_pr_get_auxv(ffi::AT_HWCAP2).unwrap()
+ );
+ }
+ }
+ }
+
#[allow(clippy::cast_sign_loss)]
#[cfg(all(target_arch = "aarch64", target_os = "android"))]
#[test]
@@ -256,6 +371,262 @@ mod tests {
}
}
+ #[allow(clippy::cast_possible_wrap)]
+ #[cfg(target_os = "freebsd")]
+ #[test]
+ fn test_freebsd() {
+ use c_types::*;
+ use core::{arch::asm, mem, ptr};
+ use test_helper::sys;
+
+ // This is almost equivalent to what elf_aux_info does.
+ // https://man.freebsd.org/elf_aux_info(3)
+ // On FreeBSD, [aarch64 support is available on FreeBSD 11.0+](https://www.freebsd.org/releases/11.0R/relnotes/#hardware-arm),
+ // but elf_aux_info is available on FreeBSD 12.0+ and 11.4+:
+ // https://github.com/freebsd/freebsd-src/commit/0b08ae2120cdd08c20a2b806e2fcef4d0a36c470
+ // https://github.com/freebsd/freebsd-src/blob/release/11.4.0/sys/sys/auxv.h
+ // so use sysctl instead of elf_aux_info.
+ // Note that FreeBSD 11 (11.4) was EoL on 2021-09-30, and FreeBSD 11.3 was EoL on 2020-09-30:
+ // https://www.freebsd.org/security/unsupported
+ //
+ // std_detect uses this way, but it appears to be somewhat incorrect
+ // (the type of arg4 of sysctl, auxv is smaller than AT_COUNT, etc.).
+ // https://github.com/rust-lang/stdarch/blob/a0c30f3e3c75adcd6ee7efc94014ebcead61c507/crates/std_detect/src/detect/os/freebsd/auxvec.rs#L52
+ //
+ // This is currently used only for testing.
+ // If you want us to use this implementation for compatibility with the older FreeBSD
+ // version that came to EoL a few years ago, please open an issue.
+ fn getauxval_sysctl_libc(type_: ffi::c_int) -> ffi::c_ulong {
+ let mut auxv: [sys::Elf64_Auxinfo; sys::AT_COUNT as usize] = unsafe { mem::zeroed() };
+
+ let mut len = core::mem::size_of_val(&auxv) as c_size_t;
+
+ // SAFETY: calling getpid is safe.
+ let pid = unsafe { sys::getpid() };
+ let mib = [
+ sys::CTL_KERN as c_int,
+ sys::KERN_PROC as c_int,
+ sys::KERN_PROC_AUXV as c_int,
+ pid,
+ ];
+
+ #[allow(clippy::cast_possible_truncation)]
+ // SAFETY:
+ // - `mib.len()` does not exceed the size of `mib`.
+ // - `len` does not exceed the size of `auxv`.
+ // - `sysctl` is thread-safe.
+ let res = unsafe {
+ sys::sysctl(
+ mib.as_ptr(),
+ mib.len() as c_uint,
+ auxv.as_mut_ptr().cast::<c_void>(),
+ &mut len,
+ ptr::null_mut(),
+ 0,
+ )
+ };
+
+ if res != -1 {
+ for aux in &auxv {
+ if aux.a_type == type_ as c_long {
+ // SAFETY: aux.a_un is #[repr(C)] union and all fields have
+ // the same size and can be safely transmuted to integers.
+ return unsafe { aux.a_un.a_val as c_ulong };
+ }
+ }
+ }
+ 0
+ }
+ // Similar to the above, but call syscall using asm instead of libc.
+ // Note that FreeBSD does not guarantee the stability of raw syscall as
+ // much as Linux does (It may actually be stable enough, though:
+ // https://lists.llvm.org/pipermail/llvm-dev/2019-June/133393.html,
+ // https://github.com/ziglang/zig/issues/16590).
+ //
+ // This is currently used only for testing.
+ fn getauxval_sysctl_asm_syscall(type_: ffi::c_int) -> Result<ffi::c_ulong, c_int> {
+ #[allow(non_camel_case_types)]
+ type pid_t = c_int;
+
+ // https://github.com/freebsd/freebsd-src/blob/9888a79adad22ba06b5aff17d05abac0029c537a/lib/libc/aarch64/SYS.h
+ // https://github.com/golang/go/blob/4badad8d477ffd7a6b762c35bc69aed82faface7/src/syscall/asm_freebsd_arm64.s
+ #[cfg(target_arch = "aarch64")]
+ #[inline]
+ fn getpid() -> pid_t {
+ #[allow(clippy::cast_possible_truncation)]
+ // SAFETY: calling getpid is safe.
+ unsafe {
+ let n = sys::SYS_getpid;
+ let r: i64;
+ asm!(
+ "svc 0",
+ in("x8") n as u64,
+ out("x0") r,
+ options(nostack, readonly),
+ );
+ r as pid_t
+ }
+ }
+ #[cfg(target_arch = "aarch64")]
+ #[inline]
+ unsafe fn sysctl(
+ name: *const c_int,
+ name_len: c_uint,
+ old_p: *mut c_void,
+ old_len_p: *mut c_size_t,
+ new_p: *const c_void,
+ new_len: c_size_t,
+ ) -> Result<c_int, c_int> {
+ #[allow(clippy::cast_possible_truncation)]
+ // SAFETY: the caller must uphold the safety contract.
+ unsafe {
+ let mut n = sys::SYS___sysctl as u64;
+ let r: i64;
+ asm!(
+ "svc 0",
+ "b.cc 2f",
+ "mov x8, x0",
+ "mov x0, #-1",
+ "2:",
+ inout("x8") n,
+ inout("x0") ptr_reg!(name) => r,
+ inout("x1") name_len as u64 => _,
+ in("x2") ptr_reg!(old_p),
+ in("x3") ptr_reg!(old_len_p),
+ in("x4") ptr_reg!(new_p),
+ in("x5") new_len as u64,
+ options(nostack),
+ );
+ if r as c_int == -1 {
+ Err(n as c_int)
+ } else {
+ Ok(r as c_int)
+ }
+ }
+ }
+
+ // https://github.com/freebsd/freebsd-src/blob/9888a79adad22ba06b5aff17d05abac0029c537a/lib/libc/powerpc64/SYS.h
+ #[cfg(target_arch = "powerpc64")]
+ #[inline]
+ fn getpid() -> pid_t {
+ #[allow(clippy::cast_possible_truncation)]
+ // SAFETY: calling getpid is safe.
+ unsafe {
+ let n = sys::SYS_getpid;
+ let r: i64;
+ asm!(
+ "sc",
+ inout("r0") n as u64 => _,
+ out("r3") r,
+ out("r4") _,
+ out("r5") _,
+ out("r6") _,
+ out("r7") _,
+ out("r8") _,
+ out("r9") _,
+ out("r10") _,
+ out("r11") _,
+ out("r12") _,
+ out("cr0") _,
+ options(nostack, preserves_flags, readonly),
+ );
+ r as pid_t
+ }
+ }
+ #[cfg(target_arch = "powerpc64")]
+ #[inline]
+ unsafe fn sysctl(
+ name: *const c_int,
+ name_len: c_uint,
+ old_p: *mut c_void,
+ old_len_p: *mut c_size_t,
+ new_p: *const c_void,
+ new_len: c_size_t,
+ ) -> Result<c_int, c_int> {
+ #[allow(clippy::cast_possible_truncation)]
+ // SAFETY: the caller must uphold the safety contract.
+ unsafe {
+ let mut n = sys::SYS___sysctl as u64;
+ let r: i64;
+ asm!(
+ "sc",
+ "bns+ 2f",
+ "mr %r0, %r3",
+ "li %r3, -1",
+ "2:",
+ inout("r0") n,
+ inout("r3") ptr_reg!(name) => r,
+ inout("r4") name_len as u64 => _,
+ inout("r5") ptr_reg!(old_p) => _,
+ inout("r6") ptr_reg!(old_len_p) => _,
+ inout("r7") ptr_reg!(new_p) => _,
+ inout("r8") new_len as u64 => _,
+ out("r9") _,
+ out("r10") _,
+ out("r11") _,
+ out("r12") _,
+ out("cr0") _,
+ options(nostack, preserves_flags)
+ );
+ if r as c_int == -1 {
+ Err(n as c_int)
+ } else {
+ Ok(r as c_int)
+ }
+ }
+ }
+
+ let mut auxv: [sys::Elf64_Auxinfo; sys::AT_COUNT as usize] = unsafe { mem::zeroed() };
+
+ let mut len = core::mem::size_of_val(&auxv) as c_size_t;
+
+ let pid = getpid();
+ let mib = [
+ sys::CTL_KERN as c_int,
+ sys::KERN_PROC as c_int,
+ sys::KERN_PROC_AUXV as c_int,
+ pid,
+ ];
+
+ #[allow(clippy::cast_possible_truncation)]
+ // SAFETY:
+ // - `mib.len()` does not exceed the size of `mib`.
+ // - `len` does not exceed the size of `auxv`.
+ // - `sysctl` is thread-safe.
+ unsafe {
+ sysctl(
+ mib.as_ptr(),
+ mib.len() as c_uint,
+ auxv.as_mut_ptr().cast::<c_void>(),
+ &mut len,
+ ptr::null_mut(),
+ 0,
+ )?;
+ }
+
+ for aux in &auxv {
+ if aux.a_type == type_ as c_long {
+ // SAFETY: aux.a_un is #[repr(C)] union and all fields have
+ // the same size and can be safely transmuted to integers.
+ return Ok(unsafe { aux.a_un.a_val as c_ulong });
+ }
+ }
+ Err(0)
+ }
+
+ assert_eq!(os::getauxval(ffi::AT_HWCAP), getauxval_sysctl_libc(ffi::AT_HWCAP));
+ assert_eq!(os::getauxval(ffi::AT_HWCAP2), getauxval_sysctl_libc(ffi::AT_HWCAP2));
+ assert_eq!(
+ os::getauxval(ffi::AT_HWCAP),
+ getauxval_sysctl_asm_syscall(ffi::AT_HWCAP).unwrap()
+ );
+ assert_eq!(
+ os::getauxval(ffi::AT_HWCAP2),
+ // AT_HWCAP2 is only available on FreeBSD 13+, at least for aarch64.
+ getauxval_sysctl_asm_syscall(ffi::AT_HWCAP2).unwrap_or(0)
+ );
+ }
+
// Static assertions for FFI bindings.
// This checks that FFI bindings defined in this crate, FFI bindings defined
// in libc, and FFI bindings generated for the platform's latest header file
@@ -273,14 +644,15 @@ mod tests {
)]
const _: fn() = || {
use test_helper::{libc, sys};
+ #[cfg(not(target_os = "freebsd"))]
+ type AtType = ffi::c_ulong;
+ #[cfg(target_os = "freebsd")]
+ type AtType = ffi::c_int;
#[cfg(any(target_os = "linux", target_os = "android"))]
{
let mut _getauxval: unsafe extern "C" fn(ffi::c_ulong) -> ffi::c_ulong = ffi::getauxval;
_getauxval = libc::getauxval;
- #[cfg(any(target_env = "musl", target_os = "android"))] // TODO(codegen)
- {
- _getauxval = sys::getauxval;
- }
+ _getauxval = sys::getauxval;
}
#[cfg(all(target_arch = "aarch64", target_os = "android"))]
{
@@ -291,7 +663,7 @@ mod tests {
___system_property_get = libc::__system_property_get;
___system_property_get = sys::__system_property_get;
static_assert!(ffi::PROP_VALUE_MAX == libc::PROP_VALUE_MAX);
- static_assert!(ffi::PROP_VALUE_MAX == sys::PROP_VALUE_MAX as _);
+ static_assert!(ffi::PROP_VALUE_MAX == sys::PROP_VALUE_MAX as ffi::c_int);
}
#[cfg(target_os = "freebsd")]
{
@@ -305,10 +677,10 @@ mod tests {
}
#[cfg(not(target_os = "freebsd"))] // libc doesn't have this on FreeBSD
static_assert!(ffi::AT_HWCAP == libc::AT_HWCAP);
- static_assert!(ffi::AT_HWCAP == sys::AT_HWCAP as _);
+ static_assert!(ffi::AT_HWCAP == sys::AT_HWCAP as AtType);
#[cfg(not(target_os = "freebsd"))] // libc doesn't have this on FreeBSD
static_assert!(ffi::AT_HWCAP2 == libc::AT_HWCAP2);
- static_assert!(ffi::AT_HWCAP2 == sys::AT_HWCAP2 as _);
+ static_assert!(ffi::AT_HWCAP2 == sys::AT_HWCAP2 as AtType);
#[cfg(target_arch = "aarch64")]
{
// static_assert!(arch::HWCAP_ATOMICS == libc::HWCAP_ATOMICS); // libc doesn't have this
diff --git a/vendor/portable-atomic/src/imp/atomic128/detect/common.rs b/vendor/portable-atomic/src/imp/atomic128/detect/common.rs
index 504718718..b87caa351 100644
--- a/vendor/portable-atomic/src/imp/atomic128/detect/common.rs
+++ b/vendor/portable-atomic/src/imp/atomic128/detect/common.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
#[derive(Clone, Copy)]
pub(crate) struct CpuInfo(u32);
@@ -48,8 +50,7 @@ impl CpuInfo {
/// Whether FEAT_LSE is available
const HAS_LSE: u32 = 1;
/// Whether FEAT_LSE2 is available
- // This is currently only used in tests.
- #[cfg(test)]
+ #[cfg_attr(not(test), allow(dead_code))]
const HAS_LSE2: u32 = 2;
/// Whether FEAT_LSE128 is available
// This is currently only used in tests.
@@ -65,6 +66,22 @@ impl CpuInfo {
pub(crate) fn has_lse(self) -> bool {
self.test(CpuInfo::HAS_LSE)
}
+ #[cfg_attr(not(test), allow(dead_code))]
+ #[cfg(any(test, not(any(target_feature = "lse2", portable_atomic_target_feature = "lse2"))))]
+ #[inline]
+ pub(crate) fn has_lse2(self) -> bool {
+ self.test(CpuInfo::HAS_LSE2)
+ }
+ #[cfg(test)]
+ #[inline]
+ pub(crate) fn has_lse128(self) -> bool {
+ self.test(CpuInfo::HAS_LSE128)
+ }
+ #[cfg(test)]
+ #[inline]
+ pub(crate) fn has_rcpc3(self) -> bool {
+ self.test(CpuInfo::HAS_RCPC3)
+ }
}
#[cfg(target_arch = "x86_64")]
@@ -128,12 +145,17 @@ mod c_types {
pub(crate) type c_ulong = u64;
#[cfg(not(target_pointer_width = "64"))]
pub(crate) type c_ulong = u32;
- // c_size_t is usize
+ // c_size_t is currently always usize
// https://github.com/rust-lang/rust/blob/1.70.0/library/core/src/ffi/mod.rs#L88
pub(crate) type c_size_t = usize;
- // c_char is u8 on most non-Apple/non-Windows ARM/PowerPC/RISC-V targets
- // (Linux/Android/FreeBSD/NetBSD/OpenBSD/VxWorks/Fuchsia/QNX Neutrino/Horizon)
+ // c_char is u8 by default on most non-Apple/non-Windows ARM/PowerPC/RISC-V/s390x/Hexagon targets
+ // (Linux/Android/FreeBSD/NetBSD/OpenBSD/VxWorks/Fuchsia/QNX Neutrino/Horizon/AIX/z/OS)
// https://github.com/rust-lang/rust/blob/1.70.0/library/core/src/ffi/mod.rs#L104
+ // https://github.com/llvm/llvm-project/blob/9734b2256d89cb4c61a4dbf4a3c3f3f942fe9b8c/lldb/source/Utility/ArchSpec.cpp#L712
+ // RISC-V https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/HEAD/riscv-cc.adoc#cc-type-representations
+ // Hexagon https://lists.llvm.org/pipermail/llvm-dev/attachments/20190916/21516a52/attachment-0001.pdf
+ // AIX https://www.ibm.com/docs/en/xl-c-aix/13.1.2?topic=descriptions-qchars
+ // z/OS https://www.ibm.com/docs/en/zos/2.5.0?topic=specifiers-character-types
// (macOS is currently the only Apple target that uses this module, and Windows currently doesn't use this module)
#[cfg(not(target_os = "macos"))]
pub(crate) type c_char = u8;
@@ -328,7 +350,7 @@ mod tests_common {
assert!(!proc_cpuinfo.lse);
}
}
- if detect().test(CpuInfo::HAS_LSE2) {
+ if detect().has_lse2() {
assert!(detect().test(CpuInfo::HAS_LSE));
assert!(detect().test(CpuInfo::HAS_LSE2));
if let Ok(test_helper::cpuinfo::ProcCpuinfo { lse2: Some(lse2), .. }) = proc_cpuinfo {
@@ -340,14 +362,14 @@ mod tests_common {
assert!(!lse2);
}
}
- if detect().test(CpuInfo::HAS_LSE128) {
+ if detect().has_lse128() {
assert!(detect().test(CpuInfo::HAS_LSE));
assert!(detect().test(CpuInfo::HAS_LSE2));
assert!(detect().test(CpuInfo::HAS_LSE128));
} else {
assert!(!detect().test(CpuInfo::HAS_LSE128));
}
- if detect().test(CpuInfo::HAS_RCPC3) {
+ if detect().has_rcpc3() {
assert!(detect().test(CpuInfo::HAS_RCPC3));
} else {
assert!(!detect().test(CpuInfo::HAS_RCPC3));
diff --git a/vendor/portable-atomic/src/imp/atomic128/detect/x86_64.rs b/vendor/portable-atomic/src/imp/atomic128/detect/x86_64.rs
index d162d6599..80eefed53 100644
--- a/vendor/portable-atomic/src/imp/atomic128/detect/x86_64.rs
+++ b/vendor/portable-atomic/src/imp/atomic128/detect/x86_64.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Adapted from https://github.com/rust-lang/stdarch.
#![cfg_attr(any(not(target_feature = "sse"), portable_atomic_sanitize_thread), allow(dead_code))]
@@ -5,13 +7,13 @@
// Miri doesn't support inline assembly used in __cpuid: https://github.com/rust-lang/miri/issues/932
// SGX doesn't support CPUID: https://github.com/rust-lang/stdarch/blob/a0c30f3e3c75adcd6ee7efc94014ebcead61c507/crates/core_arch/src/x86/cpuid.rs#L102-L105
#[cfg(any(target_env = "sgx", miri))]
-compile_error!("internal error: this module is not supported on this target");
+compile_error!("internal error: this module is not supported on this environment");
include!("common.rs");
#[cfg(not(portable_atomic_no_asm))]
use core::arch::asm;
-use core::arch::x86_64::CpuidResult;
+use core::arch::x86_64::{CpuidResult, _xgetbv};
// Workaround for https://github.com/rust-lang/rust/issues/101346
// It is not clear if our use cases are affected, but we implement this just in case.
@@ -57,38 +59,31 @@ unsafe fn _vendor_id() -> [u8; 12] {
#[cold]
fn _detect(info: &mut CpuInfo) {
- // Miri doesn't support inline assembly used in __cpuid
- // SGX doesn't support CPUID: https://github.com/rust-lang/stdarch/blob/a0c30f3e3c75adcd6ee7efc94014ebcead61c507/crates/core_arch/src/x86/cpuid.rs#L102-L105
- #[cfg(not(any(target_env = "sgx", miri)))]
- {
- use core::arch::x86_64::_xgetbv;
-
- // SAFETY: Calling `_vendor_id`` is safe because the CPU has `cpuid` support.
- let vendor_id = unsafe { _vendor_id() };
+ // SAFETY: Calling `_vendor_id`` is safe because the CPU has `cpuid` support.
+ let vendor_id = unsafe { _vendor_id() };
- // SAFETY: Calling `__cpuid`` is safe because the CPU has `cpuid` support.
- let proc_info_ecx = unsafe { __cpuid(0x0000_0001_u32).ecx };
+ // SAFETY: Calling `__cpuid`` is safe because the CPU has `cpuid` support.
+ let proc_info_ecx = unsafe { __cpuid(0x0000_0001_u32).ecx };
- // https://github.com/rust-lang/stdarch/blob/a0c30f3e3c75adcd6ee7efc94014ebcead61c507/crates/std_detect/src/detect/os/x86.rs#L111
- if test(proc_info_ecx, 13) {
- info.set(CpuInfo::HAS_CMPXCHG16B);
- }
+ // https://github.com/rust-lang/stdarch/blob/a0c30f3e3c75adcd6ee7efc94014ebcead61c507/crates/std_detect/src/detect/os/x86.rs#L111
+ if test(proc_info_ecx, 13) {
+ info.set(CpuInfo::HAS_CMPXCHG16B);
+ }
- // VMOVDQA is atomic on Intel and AMD CPUs with AVX.
- // See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104688 for details.
- if vendor_id == VENDOR_ID_INTEL || vendor_id == VENDOR_ID_AMD {
- // https://github.com/rust-lang/stdarch/blob/a0c30f3e3c75adcd6ee7efc94014ebcead61c507/crates/std_detect/src/detect/os/x86.rs#L131-L224
- let cpu_xsave = test(proc_info_ecx, 26);
- if cpu_xsave {
- let cpu_osxsave = test(proc_info_ecx, 27);
- if cpu_osxsave {
- // SAFETY: Calling `_xgetbv`` is safe because the CPU has `xsave` support
- // and OS has set `osxsave`.
- let xcr0 = unsafe { _xgetbv(0) };
- let os_avx_support = xcr0 & 6 == 6;
- if os_avx_support && test(proc_info_ecx, 28) {
- info.set(CpuInfo::HAS_VMOVDQA_ATOMIC);
- }
+ // VMOVDQA is atomic on Intel and AMD CPUs with AVX.
+ // See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104688 for details.
+ if vendor_id == VENDOR_ID_INTEL || vendor_id == VENDOR_ID_AMD {
+ // https://github.com/rust-lang/stdarch/blob/a0c30f3e3c75adcd6ee7efc94014ebcead61c507/crates/std_detect/src/detect/os/x86.rs#L131-L224
+ let cpu_xsave = test(proc_info_ecx, 26);
+ if cpu_xsave {
+ let cpu_osxsave = test(proc_info_ecx, 27);
+ if cpu_osxsave {
+ // SAFETY: Calling `_xgetbv`` is safe because the CPU has `xsave` support
+ // and OS has set `osxsave`.
+ let xcr0 = unsafe { _xgetbv(0) };
+ let os_avx_support = xcr0 & 6 == 6;
+ if os_avx_support && test(proc_info_ecx, 28) {
+ info.set(CpuInfo::HAS_VMOVDQA_ATOMIC);
}
}
}
@@ -109,9 +104,6 @@ mod tests {
#[cfg(not(portable_atomic_test_outline_atomics_detect_false))]
#[test]
- // SGX doesn't support CPUID.
- // Miri doesn't support inline assembly used in __cpuid.
- #[cfg_attr(any(target_env = "sgx", miri), ignore)]
fn test_cpuid() {
assert_eq!(std::is_x86_feature_detected!("cmpxchg16b"), detect().has_cmpxchg16b());
let vendor_id = unsafe { _vendor_id() };
diff --git a/vendor/portable-atomic/src/imp/atomic128/intrinsics.rs b/vendor/portable-atomic/src/imp/atomic128/intrinsics.rs
index 0365da555..6982bd1fd 100644
--- a/vendor/portable-atomic/src/imp/atomic128/intrinsics.rs
+++ b/vendor/portable-atomic/src/imp/atomic128/intrinsics.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Atomic{I,U}128 implementation without inline assembly.
//
// Note: This module is currently only enabled on Miri and ThreadSanitizer which
@@ -10,19 +12,18 @@
// implementation with inline assembly.
//
// Note:
-// - This currently always needs nightly compilers. On x86_64, the stabilization
-// of `core::arch::x86_64::cmpxchg16b` has been recently merged to stdarch:
-// https://github.com/rust-lang/stdarch/pull/1358
+// - This currently needs Rust 1.70 on x86_64, otherwise nightly compilers.
// - On powerpc64, this requires LLVM 15+ and pwr8+ (quadword-atomics LLVM target feature):
// https://github.com/llvm/llvm-project/commit/549e118e93c666914a1045fde38a2cac33e1e445
-// - On aarch64 big-endian, LLVM (as of 15) generates broken code.
-// (on cfg(miri)/cfg(sanitize) it is fine though)
-// - On s390x, LLVM (as of 16) generates libcalls for operations other than load/store/cmpxchg:
+// - On aarch64 big-endian, LLVM (as of 17) generates broken code. (wrong result in stress test)
+// (on cfg(miri)/cfg(sanitize) it may be fine though)
+// - On s390x, LLVM (as of 17) generates libcalls for operations other than load/store/cmpxchg:
// https://godbolt.org/z/5a5T4hxMh
-// https://github.com/llvm/llvm-project/blob/2cc0c0de802178dc7e5408497e2ec53b6c9728fa/llvm/test/CodeGen/SystemZ/atomicrmw-ops-i128.ll
+// https://github.com/llvm/llvm-project/blob/llvmorg-17.0.0-rc2/llvm/test/CodeGen/SystemZ/atomicrmw-ops-i128.ll
// https://reviews.llvm.org/D146425
-// - On powerpc64, LLVM (as of 16) doesn't support 128-bit atomic min/max:
-// https://godbolt.org/z/3rebKcbdf
+// - On powerpc64, LLVM (as of 17) doesn't support 128-bit atomic min/max:
+// https://github.com/llvm/llvm-project/issues/68390
+// - On powerpc64le, LLVM (as of 17) generates broken code. (wrong result from fetch_add)
//
// Refs: https://github.com/rust-lang/rust/blob/1.70.0/library/core/src/sync/atomic.rs
@@ -130,10 +131,12 @@ unsafe fn atomic_compare_exchange(
// SAFETY: the caller must guarantee that `dst` is valid for both writes and
// reads, 16-byte aligned (required by CMPXCHG16B), that there are no
// concurrent non-atomic operations, and that the CPU supports CMPXCHG16B.
- let res = unsafe { core::arch::x86_64::cmpxchg16b(dst, old, new, success, failure) };
- (res, res == old)
+ let prev = unsafe { core::arch::x86_64::cmpxchg16b(dst, old, new, success, failure) };
+ (prev, prev == old)
}
- #[cfg(portable_atomic_no_cmpxchg16b_intrinsic_stronger_failure_ordering)]
+ // The stronger failure ordering in cmpxchg16b_intrinsic is actually supported
+ // before stabilization, but we do not have a specific cfg for it.
+ #[cfg(portable_atomic_unstable_cmpxchg16b_intrinsic)]
let success = crate::utils::upgrade_success_ordering(success, failure);
#[cfg(target_feature = "cmpxchg16b")]
// SAFETY: the caller must guarantee that `dst` is valid for both writes and
@@ -236,22 +239,22 @@ where
unsafe {
// This is a private function and all instances of `f` only operate on the value
// loaded, so there is no need to synchronize the first load/failed CAS.
- let mut old = atomic_load(dst, Ordering::Relaxed);
+ let mut prev = atomic_load(dst, Ordering::Relaxed);
loop {
- let next = f(old);
- match atomic_compare_exchange_weak(dst, old, next, order, Ordering::Relaxed) {
+ let next = f(prev);
+ match atomic_compare_exchange_weak(dst, prev, next, order, Ordering::Relaxed) {
Ok(x) => return x,
- Err(x) => old = x,
+ Err(x) => prev = x,
}
}
}
}
// On x86_64, we use core::arch::x86_64::cmpxchg16b instead of core::intrinsics.
-// On s390x, LLVM (as of 16) generates libcalls for operations other than load/store/cmpxchg: https://godbolt.org/z/5a5T4hxMh
+// On s390x, LLVM generates libcalls for operations other than load/store/cmpxchg (see also module-level comment).
#[cfg(any(target_arch = "x86_64", target_arch = "s390x"))]
atomic_rmw_by_atomic_update!();
-// On powerpc64, LLVM (as of 16) doesn't support 128-bit atomic min/max: https://godbolt.org/z/3rebKcbdf
+// On powerpc64, LLVM doesn't support 128-bit atomic min/max (see also module-level comment).
#[cfg(target_arch = "powerpc64")]
atomic_rmw_by_atomic_update!(cmp);
@@ -378,6 +381,7 @@ unsafe fn atomic_xor(dst: *mut u128, val: u128, order: Ordering) -> u128 {
#[inline]
#[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces
unsafe fn atomic_max(dst: *mut u128, val: u128, order: Ordering) -> i128 {
+ #[allow(clippy::cast_possible_wrap, clippy::cast_sign_loss)]
// SAFETY: the caller must uphold the safety contract.
unsafe {
match order {
@@ -395,6 +399,7 @@ unsafe fn atomic_max(dst: *mut u128, val: u128, order: Ordering) -> i128 {
#[inline]
#[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces
unsafe fn atomic_min(dst: *mut u128, val: u128, order: Ordering) -> i128 {
+ #[allow(clippy::cast_possible_wrap, clippy::cast_sign_loss)]
// SAFETY: the caller must uphold the safety contract.
unsafe {
match order {
@@ -447,7 +452,7 @@ unsafe fn atomic_umin(dst: *mut u128, val: u128, order: Ordering) -> u128 {
#[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces
unsafe fn atomic_not(dst: *mut u128, order: Ordering) -> u128 {
// SAFETY: the caller must uphold the safety contract.
- unsafe { atomic_xor(dst, core::u128::MAX, order) }
+ unsafe { atomic_xor(dst, u128::MAX, order) }
}
#[cfg(not(any(target_arch = "x86_64", target_arch = "s390x")))]
diff --git a/vendor/portable-atomic/src/imp/atomic128/macros.rs b/vendor/portable-atomic/src/imp/atomic128/macros.rs
index fd71ef63d..d32217e8a 100644
--- a/vendor/portable-atomic/src/imp/atomic128/macros.rs
+++ b/vendor/portable-atomic/src/imp/atomic128/macros.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
macro_rules! atomic128 {
($atomic_type:ident, $int_type:ident, $atomic_max:ident, $atomic_min:ident) => {
#[repr(C, align(16))]
diff --git a/vendor/portable-atomic/src/imp/atomic128/powerpc64.rs b/vendor/portable-atomic/src/imp/atomic128/powerpc64.rs
index 454f2097f..bb4164ecc 100644
--- a/vendor/portable-atomic/src/imp/atomic128/powerpc64.rs
+++ b/vendor/portable-atomic/src/imp/atomic128/powerpc64.rs
@@ -1,11 +1,13 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Atomic{I,U}128 implementation on PowerPC64.
//
// powerpc64 on pwr8+ support 128-bit atomics:
// https://github.com/llvm/llvm-project/commit/549e118e93c666914a1045fde38a2cac33e1e445
-// https://github.com/llvm/llvm-project/blob/llvmorg-16.0.0/llvm/test/CodeGen/PowerPC/atomics-i128-ldst.ll
-// https://github.com/llvm/llvm-project/blob/llvmorg-16.0.0/llvm/test/CodeGen/PowerPC/atomics-i128.ll
+// https://github.com/llvm/llvm-project/blob/llvmorg-17.0.0-rc2/llvm/test/CodeGen/PowerPC/atomics-i128-ldst.ll
+// https://github.com/llvm/llvm-project/blob/llvmorg-17.0.0-rc2/llvm/test/CodeGen/PowerPC/atomics-i128.ll
//
-// powerpc64le is pwr8+ by default https://github.com/llvm/llvm-project/blob/llvmorg-16.0.0/llvm/lib/Target/PowerPC/PPC.td#L663
+// powerpc64le is pwr8+ by default https://github.com/llvm/llvm-project/blob/llvmorg-17.0.0-rc2/llvm/lib/Target/PowerPC/PPC.td#L663
// See also https://github.com/rust-lang/rust/issues/59932
//
// Note that we do not separate LL and SC into separate functions, but handle
@@ -22,8 +24,8 @@
// - atomic-maybe-uninit https://github.com/taiki-e/atomic-maybe-uninit
//
// Generated asm:
-// - powerpc64 (pwr8) https://godbolt.org/z/sj9ao7qKd
-// - powerpc64le https://godbolt.org/z/hY7Wdf6aT
+// - powerpc64 (pwr8) https://godbolt.org/z/nG5dGa38a
+// - powerpc64le https://godbolt.org/z/6c99s75e4
include!("macros.rs");
@@ -50,10 +52,11 @@ mod fallback;
target_os = "linux",
any(
target_env = "gnu",
- all(target_env = "musl", not(target_feature = "crt-static")),
+ all(any(target_env = "musl", target_env = "ohos"), not(target_feature = "crt-static")),
portable_atomic_outline_atomics,
),
),
+ target_os = "android",
target_os = "freebsd",
))]
#[path = "detect/auxv.rs"]
@@ -61,6 +64,8 @@ mod detect;
use core::{arch::asm, sync::atomic::Ordering};
+use crate::utils::{Pair, U128};
+
macro_rules! debug_assert_pwr8 {
() => {
#[cfg(not(any(
@@ -89,64 +94,17 @@ macro_rules! debug_assert_pwr8 {
// instructions across the if condition might introduce undefined behavior.
// (see also https://rust-lang.github.io/rfcs/2045-target-feature.html#safely-inlining-target_feature-functions-on-more-contexts)
// However, our code uses the ifunc helper macro that works with function pointers,
-// so we usually don't have to worry about this.
-#[cfg(not(any(
- target_feature = "quadword-atomics",
- portable_atomic_target_feature = "quadword-atomics",
-)))]
+// so we don't have to worry about this unless calling without helper macro.
macro_rules! start_pwr8 {
() => {
".machine push\n.machine power8"
};
}
-#[cfg(not(any(
- target_feature = "quadword-atomics",
- portable_atomic_target_feature = "quadword-atomics",
-)))]
macro_rules! end_pwr8 {
() => {
".machine pop"
};
}
-#[cfg(any(
- target_feature = "quadword-atomics",
- portable_atomic_target_feature = "quadword-atomics",
-))]
-macro_rules! start_pwr8 {
- () => {
- ""
- };
-}
-#[cfg(any(
- target_feature = "quadword-atomics",
- portable_atomic_target_feature = "quadword-atomics",
-))]
-macro_rules! end_pwr8 {
- () => {
- ""
- };
-}
-
-/// A 128-bit value represented as a pair of 64-bit values.
-///
-/// This type is `#[repr(C)]`, both fields have the same in-memory representation
-/// and are plain old datatypes, so access to the fields is always safe.
-#[derive(Clone, Copy)]
-#[repr(C)]
-union U128 {
- whole: u128,
- pair: Pair,
-}
-// A pair of 64-bit values in native-endian order.
-#[derive(Clone, Copy)]
-#[repr(C)]
-struct Pair {
- #[cfg(target_endian = "big")]
- hi: u64,
- lo: u64,
- #[cfg(target_endian = "little")]
- hi: u64,
-}
macro_rules! atomic_rmw {
($op:ident, $order:ident) => {
@@ -161,31 +119,35 @@ macro_rules! atomic_rmw {
};
}
+// Extracts and checks the EQ bit of cr0.
+#[inline]
+fn extract_cr0(r: u64) -> bool {
+ r & 0x20000000 != 0
+}
+
+#[cfg(any(
+ target_feature = "quadword-atomics",
+ portable_atomic_target_feature = "quadword-atomics",
+))]
+use atomic_load_pwr8 as atomic_load;
+#[cfg(not(any(
+ target_feature = "quadword-atomics",
+ portable_atomic_target_feature = "quadword-atomics",
+)))]
#[inline]
unsafe fn atomic_load(src: *mut u128, order: Ordering) -> u128 {
- #[cfg(any(
- target_feature = "quadword-atomics",
- portable_atomic_target_feature = "quadword-atomics",
- ))]
- // SAFETY: the caller must uphold the safety contract.
- unsafe {
- atomic_load_pwr8(src, order)
+ fn_alias! {
+ // inline(never) is just a hint and also not strictly necessary
+ // because we use ifunc helper macro, but used for clarity.
+ #[inline(never)]
+ unsafe fn(src: *mut u128) -> u128;
+ atomic_load_pwr8_relaxed = atomic_load_pwr8(Ordering::Relaxed);
+ atomic_load_pwr8_acquire = atomic_load_pwr8(Ordering::Acquire);
+ atomic_load_pwr8_seqcst = atomic_load_pwr8(Ordering::SeqCst);
}
- #[cfg(not(any(
- target_feature = "quadword-atomics",
- portable_atomic_target_feature = "quadword-atomics",
- )))]
// SAFETY: the caller must uphold the safety contract.
+ // we only calls atomic_load_pwr8 if quadword-atomics is available.
unsafe {
- fn_alias! {
- // inline(never) is just a hint and also not strictly necessary
- // because we use ifunc helper macro, but used for clarity.
- #[inline(never)]
- unsafe fn(src: *mut u128) -> u128;
- atomic_load_pwr8_relaxed = atomic_load_pwr8(Ordering::Relaxed);
- atomic_load_pwr8_acquire = atomic_load_pwr8(Ordering::Acquire);
- atomic_load_pwr8_seqcst = atomic_load_pwr8(Ordering::SeqCst);
- }
match order {
Ordering::Relaxed => {
ifunc!(unsafe fn(src: *mut u128) -> u128 {
@@ -273,31 +235,29 @@ unsafe fn atomic_load_pwr8(src: *mut u128, order: Ordering) -> u128 {
}
}
+#[cfg(any(
+ target_feature = "quadword-atomics",
+ portable_atomic_target_feature = "quadword-atomics",
+))]
+use atomic_store_pwr8 as atomic_store;
+#[cfg(not(any(
+ target_feature = "quadword-atomics",
+ portable_atomic_target_feature = "quadword-atomics",
+)))]
#[inline]
unsafe fn atomic_store(dst: *mut u128, val: u128, order: Ordering) {
- #[cfg(any(
- target_feature = "quadword-atomics",
- portable_atomic_target_feature = "quadword-atomics",
- ))]
- // SAFETY: the caller must uphold the safety contract.
- unsafe {
- atomic_store_pwr8(dst, val, order);
+ fn_alias! {
+ // inline(never) is just a hint and also not strictly necessary
+ // because we use ifunc helper macro, but used for clarity.
+ #[inline(never)]
+ unsafe fn(dst: *mut u128, val: u128);
+ atomic_store_pwr8_relaxed = atomic_store_pwr8(Ordering::Relaxed);
+ atomic_store_pwr8_release = atomic_store_pwr8(Ordering::Release);
+ atomic_store_pwr8_seqcst = atomic_store_pwr8(Ordering::SeqCst);
}
- #[cfg(not(any(
- target_feature = "quadword-atomics",
- portable_atomic_target_feature = "quadword-atomics",
- )))]
// SAFETY: the caller must uphold the safety contract.
+ // we only calls atomic_store_pwr8 if quadword-atomics is available.
unsafe {
- fn_alias! {
- // inline(never) is just a hint and also not strictly necessary
- // because we use ifunc helper macro, but used for clarity.
- #[inline(never)]
- unsafe fn(dst: *mut u128, val: u128);
- atomic_store_pwr8_relaxed = atomic_store_pwr8(Ordering::Relaxed);
- atomic_store_pwr8_release = atomic_store_pwr8(Ordering::Release);
- atomic_store_pwr8_seqcst = atomic_store_pwr8(Ordering::SeqCst);
- }
match order {
Ordering::Relaxed => {
ifunc!(unsafe fn(dst: *mut u128, val: u128) {
@@ -380,17 +340,18 @@ unsafe fn atomic_compare_exchange(
portable_atomic_target_feature = "quadword-atomics",
))]
// SAFETY: the caller must uphold the safety contract.
- let (res, ok) = unsafe { atomic_compare_exchange_pwr8(dst, old, new, success) };
+ // cfg guarantees that quadword atomics instructions are available at compile-time.
+ let (prev, ok) = unsafe { atomic_compare_exchange_pwr8(dst, old, new, success) };
#[cfg(not(any(
target_feature = "quadword-atomics",
portable_atomic_target_feature = "quadword-atomics",
)))]
// SAFETY: the caller must uphold the safety contract.
- let (res, ok) = unsafe { atomic_compare_exchange_ifunc(dst, old, new, success) };
+ let (prev, ok) = unsafe { atomic_compare_exchange_ifunc(dst, old, new, success) };
if ok {
- Ok(res)
+ Ok(prev)
} else {
- Err(res)
+ Err(prev)
}
}
#[inline]
@@ -406,10 +367,11 @@ unsafe fn atomic_compare_exchange_pwr8(
// SAFETY: the caller must uphold the safety contract.
//
// Refs: "4.6.2.2 128-bit Load And Reserve and Store Conditional Instructions" of Power ISA
- let res = unsafe {
+ unsafe {
let old = U128 { whole: old };
let new = U128 { whole: new };
let (mut prev_hi, mut prev_lo);
+ let mut r;
macro_rules! cmpxchg {
($acquire:tt, $release:tt) => {
asm!(
@@ -420,17 +382,19 @@ unsafe fn atomic_compare_exchange_pwr8(
"xor {tmp_lo}, %r9, {old_lo}",
"xor {tmp_hi}, %r8, {old_hi}",
"or. {tmp_lo}, {tmp_lo}, {tmp_hi}",
- "bne %cr0, 3f",
+ "bne %cr0, 3f", // jump if compare failed
"stqcx. %r6, 0, {dst}",
- "bne %cr0, 2b",
+ "bne %cr0, 2b", // continue loop if store failed
"3:",
+ // if compare failed EQ bit is cleared, if stqcx succeeds EQ bit is set.
+ "mfcr {tmp_lo}",
$acquire,
end_pwr8!(),
dst = in(reg_nonzero) ptr_reg!(dst),
- old_hi = in(reg_nonzero) old.pair.hi,
- old_lo = in(reg_nonzero) old.pair.lo,
- tmp_hi = out(reg_nonzero) _,
- tmp_lo = out(reg_nonzero) _,
+ old_hi = in(reg) old.pair.hi,
+ old_lo = in(reg) old.pair.lo,
+ tmp_hi = out(reg) _,
+ tmp_lo = out(reg) r,
// Quadword atomic instructions work with even/odd pair of specified register and subsequent register.
// We cannot use r1 (sp) and r2 (system reserved), so start with r4 or grater.
in("r6") new.pair.hi,
@@ -443,14 +407,97 @@ unsafe fn atomic_compare_exchange_pwr8(
};
}
atomic_rmw!(cmpxchg, order);
- U128 { pair: Pair { hi: prev_hi, lo: prev_lo } }.whole
- };
- (res, res == old)
+ (U128 { pair: Pair { hi: prev_hi, lo: prev_lo } }.whole, extract_cr0(r))
+ }
}
-// TODO: LLVM appears to generate strong CAS for powerpc64 128-bit weak CAS,
-// so we always use strong CAS for now.
+// Always use strong CAS for outline-atomics.
+#[cfg(not(any(
+ target_feature = "quadword-atomics",
+ portable_atomic_target_feature = "quadword-atomics",
+)))]
use atomic_compare_exchange as atomic_compare_exchange_weak;
+#[cfg(any(
+ target_feature = "quadword-atomics",
+ portable_atomic_target_feature = "quadword-atomics",
+))]
+#[inline]
+unsafe fn atomic_compare_exchange_weak(
+ dst: *mut u128,
+ old: u128,
+ new: u128,
+ success: Ordering,
+ failure: Ordering,
+) -> Result<u128, u128> {
+ let success = crate::utils::upgrade_success_ordering(success, failure);
+
+ // SAFETY: the caller must uphold the safety contract.
+ // cfg guarantees that quadword atomics instructions are available at compile-time.
+ let (prev, ok) = unsafe { atomic_compare_exchange_weak_pwr8(dst, old, new, success) };
+ if ok {
+ Ok(prev)
+ } else {
+ Err(prev)
+ }
+}
+#[cfg(any(
+ target_feature = "quadword-atomics",
+ portable_atomic_target_feature = "quadword-atomics",
+))]
+#[inline]
+unsafe fn atomic_compare_exchange_weak_pwr8(
+ dst: *mut u128,
+ old: u128,
+ new: u128,
+ order: Ordering,
+) -> (u128, bool) {
+ debug_assert!(dst as usize % 16 == 0);
+ debug_assert_pwr8!();
+
+ // SAFETY: the caller must uphold the safety contract.
+ //
+ // Refs: "4.6.2.2 128-bit Load And Reserve and Store Conditional Instructions" of Power ISA
+ unsafe {
+ let old = U128 { whole: old };
+ let new = U128 { whole: new };
+ let (mut prev_hi, mut prev_lo);
+ let mut r;
+ macro_rules! cmpxchg_weak {
+ ($acquire:tt, $release:tt) => {
+ asm!(
+ start_pwr8!(),
+ $release,
+ "lqarx %r8, 0, {dst}",
+ "xor {tmp_lo}, %r9, {old_lo}",
+ "xor {tmp_hi}, %r8, {old_hi}",
+ "or. {tmp_lo}, {tmp_lo}, {tmp_hi}",
+ "bne %cr0, 3f", // jump if compare failed
+ "stqcx. %r6, 0, {dst}",
+ "3:",
+ // if compare or stqcx failed EQ bit is cleared, if stqcx succeeds EQ bit is set.
+ "mfcr {tmp_lo}",
+ $acquire,
+ end_pwr8!(),
+ dst = in(reg_nonzero) ptr_reg!(dst),
+ old_hi = in(reg) old.pair.hi,
+ old_lo = in(reg) old.pair.lo,
+ tmp_hi = out(reg) _,
+ tmp_lo = out(reg) r,
+ // Quadword atomic instructions work with even/odd pair of specified register and subsequent register.
+ // We cannot use r1 (sp) and r2 (system reserved), so start with r4 or grater.
+ in("r6") new.pair.hi,
+ in("r7") new.pair.lo,
+ out("r8") prev_hi,
+ out("r9") prev_lo,
+ out("cr0") _,
+ options(nostack, preserves_flags),
+ )
+ };
+ }
+ atomic_rmw!(cmpxchg_weak, order);
+ (U128 { pair: Pair { hi: prev_hi, lo: prev_lo } }.whole, extract_cr0(r))
+ }
+}
#[cfg(any(
target_feature = "quadword-atomics",
@@ -501,7 +548,7 @@ unsafe fn atomic_swap_pwr8(dst: *mut u128, val: u128, order: Ordering) -> u128 {
/// $op can use the following registers:
/// - val_hi/val_lo pair: val argument (read-only for `$op`)
/// - r6/r7 pair: previous value loaded by ll (read-only for `$op`)
-/// - r8/r9 pair: new value that will to stored by sc
+/// - r8/r9 pair: new value that will be stored by sc
macro_rules! atomic_rmw_ll_sc_3 {
($name:ident as $reexport_name:ident, [$($reg:tt)*], $($op:tt)*) => {
#[cfg(any(
@@ -530,8 +577,8 @@ macro_rules! atomic_rmw_ll_sc_3 {
$acquire,
end_pwr8!(),
dst = in(reg_nonzero) ptr_reg!(dst),
- val_hi = in(reg_nonzero) val.pair.hi,
- val_lo = in(reg_nonzero) val.pair.lo,
+ val_hi = in(reg) val.pair.hi,
+ val_lo = in(reg) val.pair.lo,
$($reg)*
// Quadword atomic instructions work with even/odd pair of specified register and subsequent register.
// We cannot use r1 (sp) and r2 (system reserved), so start with r4 or grater.
@@ -555,7 +602,7 @@ macro_rules! atomic_rmw_ll_sc_3 {
///
/// $op can use the following registers:
/// - r6/r7 pair: previous value loaded by ll (read-only for `$op`)
-/// - r8/r9 pair: new value that will to stored by sc
+/// - r8/r9 pair: new value that will be stored by sc
macro_rules! atomic_rmw_ll_sc_2 {
($name:ident as $reexport_name:ident, [$($reg:tt)*], $($op:tt)*) => {
#[cfg(any(
@@ -679,7 +726,7 @@ use atomic_not_pwr8 as atomic_not;
#[inline]
unsafe fn atomic_not_pwr8(dst: *mut u128, order: Ordering) -> u128 {
// SAFETY: the caller must uphold the safety contract.
- unsafe { atomic_xor_pwr8(dst, core::u128::MAX, order) }
+ unsafe { atomic_xor_pwr8(dst, u128::MAX, order) }
}
#[cfg(portable_atomic_llvm_16)]
@@ -691,7 +738,7 @@ atomic_rmw_ll_sc_2! {
// LLVM 15 miscompiles subfic.
#[cfg(not(portable_atomic_llvm_16))]
atomic_rmw_ll_sc_2! {
- atomic_neg_pwr8 as atomic_neg, [zero = in(reg_nonzero) 0_u64, out("xer") _,],
+ atomic_neg_pwr8 as atomic_neg, [zero = in(reg) 0_u64, out("xer") _,],
"subc %r9, {zero}, %r7",
"subfze %r8, %r6",
}
diff --git a/vendor/portable-atomic/src/imp/atomic128/s390x.rs b/vendor/portable-atomic/src/imp/atomic128/s390x.rs
index b6789aea5..37c2063aa 100644
--- a/vendor/portable-atomic/src/imp/atomic128/s390x.rs
+++ b/vendor/portable-atomic/src/imp/atomic128/s390x.rs
@@ -1,10 +1,12 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Atomic{I,U}128 implementation on s390x.
//
// s390x supports 128-bit atomic load/store/cmpxchg:
// https://github.com/llvm/llvm-project/commit/a11f63a952664f700f076fd754476a2b9eb158cc
//
-// As of LLVM 16, LLVM's minimal supported architecture level is z10:
-// https://github.com/llvm/llvm-project/blob/llvmorg-16.0.0/llvm/lib/Target/SystemZ/SystemZProcessors.td)
+// LLVM's minimal supported architecture level is z10:
+// https://github.com/llvm/llvm-project/blob/llvmorg-17.0.0-rc2/llvm/lib/Target/SystemZ/SystemZProcessors.td)
// This does not appear to have changed since the current s390x backend was added in LLVM 3.3:
// https://github.com/llvm/llvm-project/commit/5f613dfd1f7edb0ae95d521b7107b582d9df5103#diff-cbaef692b3958312e80fd5507a7e2aff071f1acb086f10e8a96bc06a7bb289db
//
@@ -17,31 +19,15 @@
// - atomic-maybe-uninit https://github.com/taiki-e/atomic-maybe-uninit
//
// Generated asm:
-// - s390x https://godbolt.org/z/q4cvbaEYh
-// - s390x (z196) https://godbolt.org/z/Tj3vonsoW
-// - s390x (z15) https://godbolt.org/z/Pz5sq8fTz
+// - s390x https://godbolt.org/z/b11znnEh4
+// - s390x (z196) https://godbolt.org/z/s5n9PGcv6
+// - s390x (z15) https://godbolt.org/z/Wf49h7bPf
include!("macros.rs");
use core::{arch::asm, sync::atomic::Ordering};
-/// A 128-bit value represented as a pair of 64-bit values.
-///
-/// This type is `#[repr(C)]`, both fields have the same in-memory representation
-/// and are plain old datatypes, so access to the fields is always safe.
-#[derive(Clone, Copy)]
-#[repr(C)]
-union U128 {
- whole: u128,
- pair: Pair,
-}
-// A pair of 64-bit values in native-endian (big-endian) order.
-#[derive(Clone, Copy)]
-#[repr(C)]
-struct Pair {
- hi: u64,
- lo: u64,
-}
+use crate::utils::{Pair, U128};
// Use distinct operands on z196 or later, otherwise split to lgr and $op.
#[cfg(any(target_feature = "distinct-ops", portable_atomic_target_feature = "distinct-ops"))]
@@ -155,7 +141,7 @@ unsafe fn atomic_compare_exchange(
debug_assert!(dst as usize % 16 == 0);
// SAFETY: the caller must uphold the safety contract.
- let res = unsafe {
+ let prev = unsafe {
// atomic CAS is always SeqCst.
let old = U128 { whole: old };
let new = U128 { whole: new };
@@ -168,14 +154,15 @@ unsafe fn atomic_compare_exchange(
inout("r1") old.pair.lo => prev_lo,
in("r12") new.pair.hi,
in("r13") new.pair.lo,
+ // Do not use `preserves_flags` because CDSG modifies the condition code.
options(nostack),
);
U128 { pair: Pair { hi: prev_hi, lo: prev_lo } }.whole
};
- if res == old {
- Ok(res)
+ if prev == old {
+ Ok(prev)
} else {
- Err(res)
+ Err(prev)
}
}
@@ -195,12 +182,12 @@ where
unsafe {
// This is a private function and all instances of `f` only operate on the value
// loaded, so there is no need to synchronize the first load/failed CAS.
- let mut old = atomic_load(dst, Ordering::Relaxed);
+ let mut prev = atomic_load(dst, Ordering::Relaxed);
loop {
- let next = f(old);
- match atomic_compare_exchange_weak(dst, old, next, order, Ordering::Relaxed) {
+ let next = f(prev);
+ match atomic_compare_exchange_weak(dst, prev, next, order, Ordering::Relaxed) {
Ok(x) => return x,
- Err(x) => old = x,
+ Err(x) => prev = x,
}
}
}
@@ -231,6 +218,7 @@ unsafe fn atomic_swap(dst: *mut u128, val: u128, _order: Ordering) -> u128 {
out("r1") prev_lo,
in("r12") val.pair.hi,
in("r13") val.pair.lo,
+ // Do not use `preserves_flags` because CDSG modifies the condition code.
options(nostack),
);
U128 { pair: Pair { hi: prev_hi, lo: prev_lo } }.whole
@@ -243,7 +231,7 @@ unsafe fn atomic_swap(dst: *mut u128, val: u128, _order: Ordering) -> u128 {
/// `$op` can use the following registers:
/// - val_hi/val_lo pair: val argument (read-only for `$op`)
/// - r0/r1 pair: previous value loaded (read-only for `$op`)
-/// - r12/r13 pair: new value that will to stored
+/// - r12/r13 pair: new value that will be stored
// We could use atomic_update here, but using an inline assembly allows omitting
// the comparison of results and the storing/comparing of condition flags.
macro_rules! atomic_rmw_cas_3 {
@@ -271,6 +259,7 @@ macro_rules! atomic_rmw_cas_3 {
out("r1") prev_lo,
out("r12") _,
out("r13") _,
+ // Do not use `preserves_flags` because CDSG modifies the condition code.
options(nostack),
);
U128 { pair: Pair { hi: prev_hi, lo: prev_lo } }.whole
@@ -283,7 +272,7 @@ macro_rules! atomic_rmw_cas_3 {
///
/// `$op` can use the following registers:
/// - r0/r1 pair: previous value loaded (read-only for `$op`)
-/// - r12/r13 pair: new value that will to stored
+/// - r12/r13 pair: new value that will be stored
// We could use atomic_update here, but using an inline assembly allows omitting
// the comparison of results and the storing/comparing of condition flags.
macro_rules! atomic_rmw_cas_2 {
@@ -307,6 +296,7 @@ macro_rules! atomic_rmw_cas_2 {
out("r1") prev_lo,
out("r12") _,
out("r13") _,
+ // Do not use `preserves_flags` because CDSG modifies the condition code.
options(nostack),
);
U128 { pair: Pair { hi: prev_hi, lo: prev_lo } }.whole
@@ -425,7 +415,7 @@ atomic_rmw_cas_3! {
// We use atomic_update for atomic min/max on pre-z196 because
// z10 doesn't seem to have a good way to implement 128-bit min/max.
// loc{,g}r requires z196 or later.
-// https://godbolt.org/z/qodPK45qz
+// https://godbolt.org/z/j8KG9q5oq
#[cfg(not(any(
target_feature = "load-store-on-cond",
portable_atomic_target_feature = "load-store-on-cond",
diff --git a/vendor/portable-atomic/src/imp/atomic128/x86_64.rs b/vendor/portable-atomic/src/imp/atomic128/x86_64.rs
index e75540cd1..3b9d141ab 100644
--- a/vendor/portable-atomic/src/imp/atomic128/x86_64.rs
+++ b/vendor/portable-atomic/src/imp/atomic128/x86_64.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Atomic{I,U}128 implementation on x86_64 using CMPXCHG16B (DWCAS).
//
// Note: On Miri and ThreadSanitizer which do not support inline assembly, we don't use
@@ -8,7 +10,7 @@
// - atomic-maybe-uninit https://github.com/taiki-e/atomic-maybe-uninit
//
// Generated asm:
-// - x86_64 (+cmpxchg16b) https://godbolt.org/z/WPvfn16sY
+// - x86_64 (+cmpxchg16b) https://godbolt.org/z/55n54WeKr
include!("macros.rs");
@@ -25,6 +27,8 @@ mod detect;
use core::arch::asm;
use core::sync::atomic::Ordering;
+use crate::utils::{Pair, U128};
+
// Asserts that the function is called in the correct context.
macro_rules! debug_assert_cmpxchg16b {
() => {
@@ -61,24 +65,6 @@ macro_rules! ptr_modifier {
};
}
-/// A 128-bit value represented as a pair of 64-bit values.
-///
-/// This type is `#[repr(C)]`, both fields have the same in-memory representation
-/// and are plain old datatypes, so access to the fields is always safe.
-#[derive(Clone, Copy)]
-#[repr(C)]
-union U128 {
- whole: u128,
- pair: Pair,
-}
-// A pair of 64-bit values in native-endian (little-endian) order.
-#[derive(Clone, Copy)]
-#[repr(C)]
-struct Pair {
- lo: u64,
- hi: u64,
-}
-
#[cfg_attr(
not(any(target_feature = "cmpxchg16b", portable_atomic_target_feature = "cmpxchg16b")),
target_feature(enable = "cmpxchg16b")
@@ -293,7 +279,7 @@ unsafe fn atomic_load_cmpxchg16b(src: *mut u128) -> u128 {
// omitting the storing of condition flags and avoid use of xchg to handle rbx.
unsafe {
// cmpxchg16b is always SeqCst.
- let (prev_lo, prev_hi);
+ let (out_lo, out_hi);
macro_rules! cmpxchg16b {
($rdi:tt) => {
asm!(
@@ -305,8 +291,8 @@ unsafe fn atomic_load_cmpxchg16b(src: *mut u128) -> u128 {
// set old/new args of cmpxchg16b to 0 (rbx is zeroed after saved to rbx_tmp, to avoid xchg)
rbx_tmp = out(reg) _,
in("rcx") 0_u64,
- inout("rax") 0_u64 => prev_lo,
- inout("rdx") 0_u64 => prev_hi,
+ inout("rax") 0_u64 => out_lo,
+ inout("rdx") 0_u64 => out_hi,
in($rdi) src,
// Do not use `preserves_flags` because CMPXCHG16B modifies the ZF flag.
options(nostack),
@@ -317,7 +303,7 @@ unsafe fn atomic_load_cmpxchg16b(src: *mut u128) -> u128 {
cmpxchg16b!("edi");
#[cfg(target_pointer_width = "64")]
cmpxchg16b!("rdi");
- U128 { pair: Pair { lo: prev_lo, hi: prev_hi } }.whole
+ U128 { pair: Pair { lo: out_lo, hi: out_hi } }.whole
}
}
@@ -401,11 +387,11 @@ unsafe fn atomic_compare_exchange(
// SAFETY: the caller must guarantee that `dst` is valid for both writes and
// reads, 16-byte aligned, that there are no concurrent non-atomic operations,
// and cfg guarantees that CMPXCHG16B is available at compile-time.
- let (res, ok) = unsafe { cmpxchg16b(dst, old, new) };
+ let (prev, ok) = unsafe { cmpxchg16b(dst, old, new) };
#[cfg(not(any(target_feature = "cmpxchg16b", portable_atomic_target_feature = "cmpxchg16b")))]
// SAFETY: the caller must guarantee that `dst` is valid for both writes and
// reads, 16-byte aligned, and that there are no different kinds of concurrent accesses.
- let (res, ok) = unsafe {
+ let (prev, ok) = unsafe {
ifunc!(unsafe fn(dst: *mut u128, old: u128, new: u128) -> (u128, bool) {
if detect::detect().has_cmpxchg16b() {
cmpxchg16b
@@ -416,9 +402,9 @@ unsafe fn atomic_compare_exchange(
})
};
if ok {
- Ok(res)
+ Ok(prev)
} else {
- Err(res)
+ Err(prev)
}
}
@@ -494,7 +480,7 @@ unsafe fn atomic_swap_cmpxchg16b(dst: *mut u128, val: u128, _order: Ordering) ->
/// `$op` can use the following registers:
/// - rsi/r8 pair: val argument (read-only for `$op`)
/// - rax/rdx pair: previous value loaded (read-only for `$op`)
-/// - rbx/rcx pair: new value that will to stored
+/// - rbx/rcx pair: new value that will be stored
// We could use CAS loop by atomic_compare_exchange here, but using an inline assembly allows
// omitting the storing/comparing of condition flags and reducing uses of xchg/mov to handle rbx.
macro_rules! atomic_rmw_cas_3 {
@@ -565,7 +551,7 @@ macro_rules! atomic_rmw_cas_3 {
///
/// `$op` can use the following registers:
/// - rax/rdx pair: previous value loaded (read-only for `$op`)
-/// - rbx/rcx pair: new value that will to stored
+/// - rbx/rcx pair: new value that will be stored
// We could use CAS loop by atomic_compare_exchange here, but using an inline assembly allows
// omitting the storing of condition flags and avoid use of xchg to handle rbx.
macro_rules! atomic_rmw_cas_2 {
diff --git a/vendor/portable-atomic/src/imp/core_atomic.rs b/vendor/portable-atomic/src/imp/core_atomic.rs
index 72da6fa2a..c7f713b53 100644
--- a/vendor/portable-atomic/src/imp/core_atomic.rs
+++ b/vendor/portable-atomic/src/imp/core_atomic.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Wrap the standard library's atomic types in newtype.
//
// This is not a reexport, because we want to backport changes like
@@ -136,9 +138,9 @@ macro_rules! atomic_int {
#[cfg_attr(not(portable_atomic_no_cfg_target_has_atomic), cfg(target_has_atomic = "ptr"))]
impl_default_no_fetch_ops!($atomic_type, $int_type);
#[cfg(not(all(
- not(any(miri, portable_atomic_sanitize_thread)),
- any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
any(target_arch = "x86", target_arch = "x86_64"),
+ not(any(miri, portable_atomic_sanitize_thread)),
+ not(portable_atomic_no_asm),
)))]
#[cfg_attr(
portable_atomic_no_cfg_target_has_atomic,
@@ -157,7 +159,12 @@ macro_rules! atomic_int {
}
#[inline]
pub(crate) const fn is_always_lock_free() -> bool {
- true
+ // ESP-IDF targets' 64-bit atomics are not lock-free.
+ // https://github.com/rust-lang/rust/pull/115577#issuecomment-1732259297
+ cfg!(not(all(
+ any(target_arch = "riscv32", target_arch = "xtensa"),
+ target_os = "espidf",
+ ))) | (core::mem::size_of::<$int_type>() < 8)
}
#[inline]
pub(crate) fn get_mut(&mut self) -> &mut $int_type {
@@ -273,9 +280,10 @@ macro_rules! atomic_int {
portable_atomic_target_feature = "v6",
)),
),
- // TODO: mips32r6, mips64r6?
target_arch = "mips",
+ target_arch = "mips32r6",
target_arch = "mips64",
+ target_arch = "mips64r6",
target_arch = "powerpc",
target_arch = "powerpc64",
))]
@@ -324,9 +332,10 @@ macro_rules! atomic_int {
portable_atomic_target_feature = "v6",
)),
),
- // TODO: mips32r6, mips64r6?
target_arch = "mips",
+ target_arch = "mips32r6",
target_arch = "mips64",
+ target_arch = "mips64r6",
target_arch = "powerpc",
target_arch = "powerpc64",
))]
@@ -365,9 +374,9 @@ macro_rules! atomic_int {
self.fetch_xor(NOT_MASK, order)
}
#[cfg(not(all(
- not(any(miri, portable_atomic_sanitize_thread)),
- any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
any(target_arch = "x86", target_arch = "x86_64"),
+ not(any(miri, portable_atomic_sanitize_thread)),
+ not(portable_atomic_no_asm),
)))]
#[inline]
#[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces
@@ -380,9 +389,9 @@ macro_rules! atomic_int {
self.fetch_update_(order, $int_type::wrapping_neg)
}
#[cfg(not(all(
- not(any(miri, portable_atomic_sanitize_thread)),
- any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
any(target_arch = "x86", target_arch = "x86_64"),
+ not(any(miri, portable_atomic_sanitize_thread)),
+ not(portable_atomic_no_asm),
)))]
#[inline]
#[cfg_attr(miri, track_caller)] // even without panics, this helps for Miri backtraces
diff --git a/vendor/portable-atomic/src/imp/fallback/mod.rs b/vendor/portable-atomic/src/imp/fallback/mod.rs
index e4875deac..283c98c01 100644
--- a/vendor/portable-atomic/src/imp/fallback/mod.rs
+++ b/vendor/portable-atomic/src/imp/fallback/mod.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Fallback implementation using global locks.
//
// This implementation uses seqlock for global locks.
@@ -27,17 +29,21 @@
target_os = "linux",
any(
target_env = "gnu",
- all(target_env = "musl", not(target_feature = "crt-static")),
+ all(
+ any(target_env = "musl", target_env = "ohos"),
+ not(target_feature = "crt-static"),
+ ),
portable_atomic_outline_atomics,
),
),
+ target_os = "android",
target_os = "freebsd",
),
not(any(miri, portable_atomic_sanitize_thread)),
),
all(
- any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
target_arch = "arm",
+ not(portable_atomic_no_asm),
any(target_os = "linux", target_os = "android"),
not(portable_atomic_no_outline_atomics),
),
@@ -144,40 +150,20 @@ macro_rules! atomic {
for i in 0..Self::LEN {
dst[i] = chunks[i].load(Ordering::Relaxed);
}
- // SAFETY: integers are plain old datatypes so we can always transmute to them.
+ // SAFETY: integers are plain old data types so we can always transmute to them.
unsafe { mem::transmute::<[Chunk; Self::LEN], $int_type>(dst) }
}
#[inline]
fn read(&self, _guard: &SeqLockWriteGuard<'static>) -> $int_type {
- // SAFETY:
- // - The guard guarantees that we hold the lock to write.
- // - The raw pointer is valid because we got it from a reference.
- //
- // Unlike optimistic_read/write, the atomic operation is not required,
- // because we hold the lock to write so that other threads cannot
- // perform concurrent write operations.
- //
- // At the hardware level, core::sync::atomic::Atomic*::load used in optimistic_read
- // may be lowered to atomic write operations by LLVM, but it is still considered a
- // read operation from the view of the (software) memory model, except that it is
- // not allowed in read-only memory (due to UnsafeCell, self.v is not read-only memory).
- // See also https://github.com/rust-lang/miri/issues/2463.
- // (Note that the above property is about the assembly generated by inline assembly
- // or LLVM's backend. Doing it using write operations written in normal Rust code
- // or LLVM IR is considered UB, even if it never mutates the value. See also the
- // above Miri issue and https://github.com/rust-lang/rust/issues/32976#issuecomment-446775360)
- //
- // Also, according to atomic-memcpy's asm test, there seems
- // to be no tier 1 or tier 2 platform that generates such code
- // for a pointer-width relaxed load + acquire fence:
- // https://github.com/taiki-e/atomic-memcpy/tree/v0.1.3/tests/asm-test/asm
- unsafe { self.v.get().read() }
+ // This calls optimistic_read that can return teared value, but the resulting value
+ // is guaranteed not to be teared because we hold the lock to write.
+ self.optimistic_read()
}
#[inline]
fn write(&self, val: $int_type, _guard: &SeqLockWriteGuard<'static>) {
- // SAFETY: integers are plain old datatypes so we can always transmute them to arrays of integers.
+ // SAFETY: integers are plain old data types so we can always transmute them to arrays of integers.
let val = unsafe { mem::transmute::<$int_type, [Chunk; Self::LEN]>(val) };
// SAFETY:
// - The guard guarantees that we hold the lock to write.
@@ -258,9 +244,9 @@ macro_rules! atomic {
#[inline]
pub(crate) fn swap(&self, val: $int_type, _order: Ordering) -> $int_type {
let guard = lock(self.v.get() as usize).write();
- let result = self.read(&guard);
+ let prev = self.read(&guard);
self.write(val, &guard);
- result
+ prev
}
#[inline]
@@ -274,14 +260,14 @@ macro_rules! atomic {
) -> Result<$int_type, $int_type> {
crate::utils::assert_compare_exchange_ordering(success, failure);
let guard = lock(self.v.get() as usize).write();
- let result = self.read(&guard);
- if result == current {
+ let prev = self.read(&guard);
+ if prev == current {
self.write(new, &guard);
- Ok(result)
+ Ok(prev)
} else {
// The value hasn't been changed. Drop the guard without incrementing the stamp.
guard.abort();
- Err(result)
+ Err(prev)
}
}
@@ -300,73 +286,73 @@ macro_rules! atomic {
#[inline]
pub(crate) fn fetch_add(&self, val: $int_type, _order: Ordering) -> $int_type {
let guard = lock(self.v.get() as usize).write();
- let result = self.read(&guard);
- self.write(result.wrapping_add(val), &guard);
- result
+ let prev = self.read(&guard);
+ self.write(prev.wrapping_add(val), &guard);
+ prev
}
#[inline]
pub(crate) fn fetch_sub(&self, val: $int_type, _order: Ordering) -> $int_type {
let guard = lock(self.v.get() as usize).write();
- let result = self.read(&guard);
- self.write(result.wrapping_sub(val), &guard);
- result
+ let prev = self.read(&guard);
+ self.write(prev.wrapping_sub(val), &guard);
+ prev
}
#[inline]
pub(crate) fn fetch_and(&self, val: $int_type, _order: Ordering) -> $int_type {
let guard = lock(self.v.get() as usize).write();
- let result = self.read(&guard);
- self.write(result & val, &guard);
- result
+ let prev = self.read(&guard);
+ self.write(prev & val, &guard);
+ prev
}
#[inline]
pub(crate) fn fetch_nand(&self, val: $int_type, _order: Ordering) -> $int_type {
let guard = lock(self.v.get() as usize).write();
- let result = self.read(&guard);
- self.write(!(result & val), &guard);
- result
+ let prev = self.read(&guard);
+ self.write(!(prev & val), &guard);
+ prev
}
#[inline]
pub(crate) fn fetch_or(&self, val: $int_type, _order: Ordering) -> $int_type {
let guard = lock(self.v.get() as usize).write();
- let result = self.read(&guard);
- self.write(result | val, &guard);
- result
+ let prev = self.read(&guard);
+ self.write(prev | val, &guard);
+ prev
}
#[inline]
pub(crate) fn fetch_xor(&self, val: $int_type, _order: Ordering) -> $int_type {
let guard = lock(self.v.get() as usize).write();
- let result = self.read(&guard);
- self.write(result ^ val, &guard);
- result
+ let prev = self.read(&guard);
+ self.write(prev ^ val, &guard);
+ prev
}
#[inline]
pub(crate) fn fetch_max(&self, val: $int_type, _order: Ordering) -> $int_type {
let guard = lock(self.v.get() as usize).write();
- let result = self.read(&guard);
- self.write(core::cmp::max(result, val), &guard);
- result
+ let prev = self.read(&guard);
+ self.write(core::cmp::max(prev, val), &guard);
+ prev
}
#[inline]
pub(crate) fn fetch_min(&self, val: $int_type, _order: Ordering) -> $int_type {
let guard = lock(self.v.get() as usize).write();
- let result = self.read(&guard);
- self.write(core::cmp::min(result, val), &guard);
- result
+ let prev = self.read(&guard);
+ self.write(core::cmp::min(prev, val), &guard);
+ prev
}
#[inline]
pub(crate) fn fetch_not(&self, _order: Ordering) -> $int_type {
let guard = lock(self.v.get() as usize).write();
- let result = self.read(&guard);
- self.write(!result, &guard);
- result
+ let prev = self.read(&guard);
+ self.write(!prev, &guard);
+ prev
}
#[inline]
pub(crate) fn not(&self, order: Ordering) {
@@ -376,9 +362,9 @@ macro_rules! atomic {
#[inline]
pub(crate) fn fetch_neg(&self, _order: Ordering) -> $int_type {
let guard = lock(self.v.get() as usize).write();
- let result = self.read(&guard);
- self.write(result.wrapping_neg(), &guard);
- result
+ let prev = self.read(&guard);
+ self.write(prev.wrapping_neg(), &guard);
+ prev
}
#[inline]
pub(crate) fn neg(&self, order: Ordering) {
diff --git a/vendor/portable-atomic/src/imp/fallback/outline_atomics.rs b/vendor/portable-atomic/src/imp/fallback/outline_atomics.rs
index 985d9ce83..895b60c85 100644
--- a/vendor/portable-atomic/src/imp/fallback/outline_atomics.rs
+++ b/vendor/portable-atomic/src/imp/fallback/outline_atomics.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Helper for outline-atomics.
//
// On architectures where DW atomics are not supported on older CPUs, we use
diff --git a/vendor/portable-atomic/src/imp/fallback/seq_lock.rs b/vendor/portable-atomic/src/imp/fallback/seq_lock.rs
index d86b02e10..fb6803f0b 100644
--- a/vendor/portable-atomic/src/imp/fallback/seq_lock.rs
+++ b/vendor/portable-atomic/src/imp/fallback/seq_lock.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Adapted from https://github.com/crossbeam-rs/crossbeam/blob/crossbeam-utils-0.8.7/crossbeam-utils/src/atomic/seq_lock.rs.
use core::{
diff --git a/vendor/portable-atomic/src/imp/fallback/seq_lock_wide.rs b/vendor/portable-atomic/src/imp/fallback/seq_lock_wide.rs
index 74b08d24f..e12996f56 100644
--- a/vendor/portable-atomic/src/imp/fallback/seq_lock_wide.rs
+++ b/vendor/portable-atomic/src/imp/fallback/seq_lock_wide.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Adapted from https://github.com/crossbeam-rs/crossbeam/blob/crossbeam-utils-0.8.7/crossbeam-utils/src/atomic/seq_lock_wide.rs.
use core::{
diff --git a/vendor/portable-atomic/src/imp/fallback/utils.rs b/vendor/portable-atomic/src/imp/fallback/utils.rs
index c78c625b0..760834058 100644
--- a/vendor/portable-atomic/src/imp/fallback/utils.rs
+++ b/vendor/portable-atomic/src/imp/fallback/utils.rs
@@ -1,7 +1,8 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
use core::ops;
-// TODO: mips32r6, mips64r6
-// Adapted from https://github.com/crossbeam-rs/crossbeam/blob/d49a0f8454499ced8af0b61aeb661379c4eb0588/crossbeam-utils/src/cache_padded.rs.
+// Adapted from https://github.com/crossbeam-rs/crossbeam/blob/9384f1eb2b356364e201ad38545e03c837d55f3a/crossbeam-utils/src/cache_padded.rs.
/// Pads and aligns a value to the length of a cache line.
// Starting from Intel's Sandy Bridge, spatial prefetcher is now pulling pairs of 64-byte cache
// lines at a time, so we have to align to 128 bytes rather than 64.
@@ -19,29 +20,27 @@ use core::ops;
//
// Sources:
// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_ppc64x.go#L9
+// - https://github.com/torvalds/linux/blob/3516bd729358a2a9b090c1905bd2a3fa926e24c6/arch/powerpc/include/asm/cache.h#L26
#[cfg_attr(
any(target_arch = "x86_64", target_arch = "aarch64", target_arch = "powerpc64"),
repr(align(128))
)]
-// arm, mips, mips64, riscv64, sparc, and hexagon have 32-byte cache line size.
+// arm, mips, mips64, sparc, and hexagon have 32-byte cache line size.
//
// Sources:
// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_arm.go#L7
// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_mips.go#L7
// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_mipsle.go#L7
// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_mips64x.go#L9
-// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_riscv64.go#L7
// - https://github.com/torvalds/linux/blob/3516bd729358a2a9b090c1905bd2a3fa926e24c6/arch/sparc/include/asm/cache.h#L17
// - https://github.com/torvalds/linux/blob/3516bd729358a2a9b090c1905bd2a3fa926e24c6/arch/hexagon/include/asm/cache.h#L12
-//
-// riscv32 is assumed not to exceed the cache line size of riscv64.
#[cfg_attr(
any(
target_arch = "arm",
target_arch = "mips",
+ target_arch = "mips32r6",
target_arch = "mips64",
- target_arch = "riscv32",
- target_arch = "riscv64",
+ target_arch = "mips64r6",
target_arch = "sparc",
target_arch = "hexagon",
),
@@ -58,11 +57,12 @@ use core::ops;
// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_s390x.go#L7
// - https://github.com/torvalds/linux/blob/3516bd729358a2a9b090c1905bd2a3fa926e24c6/arch/s390/include/asm/cache.h#L13
#[cfg_attr(target_arch = "s390x", repr(align(256)))]
-// x86, wasm, and sparc64 have 64-byte cache line size.
+// x86, wasm, riscv, and sparc64 have 64-byte cache line size.
//
// Sources:
// - https://github.com/golang/go/blob/dda2991c2ea0c5914714469c4defc2562a907230/src/internal/cpu/cpu_x86.go#L9
// - https://github.com/golang/go/blob/3dd58676054223962cd915bb0934d1f9f489d4d2/src/internal/cpu/cpu_wasm.go#L7
+// - https://github.com/torvalds/linux/blob/3516bd729358a2a9b090c1905bd2a3fa926e24c6/arch/riscv/include/asm/cache.h#L10
// - https://github.com/torvalds/linux/blob/3516bd729358a2a9b090c1905bd2a3fa926e24c6/arch/sparc/include/asm/cache.h#L19
//
// All others are assumed to have 64-byte cache line size.
@@ -73,9 +73,9 @@ use core::ops;
target_arch = "powerpc64",
target_arch = "arm",
target_arch = "mips",
+ target_arch = "mips32r6",
target_arch = "mips64",
- target_arch = "riscv32",
- target_arch = "riscv64",
+ target_arch = "mips64r6",
target_arch = "sparc",
target_arch = "hexagon",
target_arch = "m68k",
diff --git a/vendor/portable-atomic/src/imp/float.rs b/vendor/portable-atomic/src/imp/float.rs
index 6d6ac4b07..965f98387 100644
--- a/vendor/portable-atomic/src/imp/float.rs
+++ b/vendor/portable-atomic/src/imp/float.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// AtomicF{32,64} implementation based on AtomicU{32,64}.
//
// This module provides atomic float implementations using atomic integer.
@@ -18,10 +20,7 @@ use core::{cell::UnsafeCell, sync::atomic::Ordering};
macro_rules! atomic_float {
(
- $atomic_type:ident,
- $float_type:ident,
- $atomic_int_type:ident,
- $int_type:ident,
+ $atomic_type:ident, $float_type:ident, $atomic_int_type:ident, $int_type:ident,
$align:literal
) => {
#[repr(C, align($align))]
diff --git a/vendor/portable-atomic/src/imp/interrupt/README.md b/vendor/portable-atomic/src/imp/interrupt/README.md
index 32c202a8d..edc5fbf2e 100644
--- a/vendor/portable-atomic/src/imp/interrupt/README.md
+++ b/vendor/portable-atomic/src/imp/interrupt/README.md
@@ -17,10 +17,11 @@ For some targets, the implementation can be changed by explicitly enabling featu
- On pre-v6 ARM with the `disable-fiq` feature, this disables interrupts by modifying the I (IRQ mask) bit and F (FIQ mask) bit of the CPSR.
- On RISC-V (without A-extension), this disables interrupts by modifying the MIE (Machine Interrupt Enable) bit of the `mstatus` register.
- On RISC-V (without A-extension) with the `s-mode` feature, this disables interrupts by modifying the SIE (Supervisor Interrupt Enable) bit of the `sstatus` register.
+- On RISC-V (without A-extension) with the `force-amo` feature, this uses AMO instructions for RMWs that have corresponding AMO instructions even if A-extension is disabled. For other RMWs, this disables interrupts as usual.
- On MSP430, this disables interrupts by modifying the GIE (Global Interrupt Enable) bit of the status register (SR).
- On AVR, this disables interrupts by modifying the I (Global Interrupt Enable) bit of the status register (SREG).
- On Xtensa, this disables interrupts by modifying the PS special register.
-Some operations don't require disabling interrupts (loads and stores on targets except for AVR, but additionally on MSP430 `add`, `sub`, `and`, `or`, `xor`, `not`). However, when the `critical-section` feature is enabled, critical sections are taken for all atomic operations.
+Some operations don't require disabling interrupts (loads and stores on targets except for AVR, but additionally on MSP430 {8,16}-bit `add,sub,and,or,xor,not`, on RISC-V with the `force-amo` feature 32-bit(RV32)/{32,64}-bit(RV64) `swap,fetch_{add,sub,and,or,xor,not,max,min},add,sub,and,or,xor,not` and {8,16}-bit `fetch_{and,or,xor,not},and,or,xor,not`). However, when the `critical-section` feature is enabled, critical sections are taken for all atomic operations.
Feel free to submit an issue if your target is not supported yet.
diff --git a/vendor/portable-atomic/src/imp/interrupt/armv4t.rs b/vendor/portable-atomic/src/imp/interrupt/armv4t.rs
index 85c7ec1b5..20f7089ce 100644
--- a/vendor/portable-atomic/src/imp/interrupt/armv4t.rs
+++ b/vendor/portable-atomic/src/imp/interrupt/armv4t.rs
@@ -1,21 +1,26 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Refs: https://developer.arm.com/documentation/ddi0406/cb/System-Level-Architecture/The-System-Level-Programmers--Model/ARM-processor-modes-and-ARM-core-registers/Program-Status-Registers--PSRs-?lang=en
//
// Generated asm:
-// - armv5te https://godbolt.org/z/5arYrfzYc
+// - armv5te https://godbolt.org/z/Teh7WajMs
#[cfg(not(portable_atomic_no_asm))]
use core::arch::asm;
+// - 0x80 - I (IRQ mask) bit (1 << 7)
+// - 0x40 - F (FIQ mask) bit (1 << 6)
+// We disable only IRQs by default. See also https://github.com/taiki-e/portable-atomic/pull/28#issuecomment-1214146912.
#[cfg(not(portable_atomic_disable_fiq))]
-macro_rules! if_disable_fiq {
- ($tt:tt) => {
- ""
+macro_rules! mask {
+ () => {
+ "0x80"
};
}
#[cfg(portable_atomic_disable_fiq)]
-macro_rules! if_disable_fiq {
- ($tt:tt) => {
- $tt
+macro_rules! mask {
+ () => {
+ "0xC0" // 0x80 | 0x40
};
}
@@ -29,15 +34,13 @@ pub(super) fn disable() -> State {
// SAFETY: reading CPSR and disabling interrupts are safe.
// (see module-level comments of interrupt/mod.rs on the safety of using privileged instructions)
unsafe {
- // Do not use `nomem` and `readonly` because prevent subsequent memory accesses from being reordered before interrupts are disabled.
asm!(
"mrs {prev}, cpsr",
- "orr {new}, {prev}, 0x80", // I (IRQ mask) bit (1 << 7)
- // We disable only IRQs by default. See also https://github.com/taiki-e/portable-atomic/pull/28#issuecomment-1214146912.
- if_disable_fiq!("orr {new}, {new}, 0x40"), // F (FIQ mask) bit (1 << 6)
+ concat!("orr {new}, {prev}, ", mask!()),
"msr cpsr_c, {new}",
prev = out(reg) cpsr,
new = out(reg) _,
+ // Do not use `nomem` and `readonly` because prevent subsequent memory accesses from being reordered before interrupts are disabled.
options(nostack, preserves_flags),
);
}
@@ -53,11 +56,14 @@ pub(super) fn disable() -> State {
#[instruction_set(arm::a32)]
pub(super) unsafe fn restore(cpsr: State) {
// SAFETY: the caller must guarantee that the state was retrieved by the previous `disable`,
+ //
+ // This clobbers the control field mask byte of CPSR. See msp430.rs to safety on this.
+ // (preserves_flags is fine because we only clobber the I, F, T, and M bits of CPSR.)
+ //
+ // Refs: https://developer.arm.com/documentation/dui0473/m/arm-and-thumb-instructions/msr--general-purpose-register-to-psr-
unsafe {
- // This clobbers the entire CPSR. See msp430.rs to safety on this.
- //
// Do not use `nomem` and `readonly` because prevent preceding memory accesses from being reordered after interrupts are enabled.
- asm!("msr cpsr_c, {0}", in(reg) cpsr, options(nostack));
+ asm!("msr cpsr_c, {0}", in(reg) cpsr, options(nostack, preserves_flags));
}
}
@@ -66,7 +72,7 @@ pub(super) unsafe fn restore(cpsr: State) {
// have Data Memory Barrier).
//
// Generated asm:
-// - armv5te https://godbolt.org/z/a7zcs9hKa
+// - armv5te https://godbolt.org/z/bMxK7M8Ta
pub(crate) mod atomic {
#[cfg(not(portable_atomic_no_asm))]
use core::arch::asm;
diff --git a/vendor/portable-atomic/src/imp/interrupt/armv6m.rs b/vendor/portable-atomic/src/imp/interrupt/armv6m.rs
index 00413128c..85037a3ea 100644
--- a/vendor/portable-atomic/src/imp/interrupt/armv6m.rs
+++ b/vendor/portable-atomic/src/imp/interrupt/armv6m.rs
@@ -1,7 +1,9 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Adapted from https://github.com/rust-embedded/cortex-m.
//
// Generated asm:
-// - armv6-m https://godbolt.org/z/sTezYnaj9
+// - armv6-m https://godbolt.org/z/YxME38xcM
#[cfg(not(portable_atomic_no_asm))]
use core::arch::asm;
diff --git a/vendor/portable-atomic/src/imp/interrupt/avr.rs b/vendor/portable-atomic/src/imp/interrupt/avr.rs
index 7cc48c62e..76d99c142 100644
--- a/vendor/portable-atomic/src/imp/interrupt/avr.rs
+++ b/vendor/portable-atomic/src/imp/interrupt/avr.rs
@@ -1,4 +1,9 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Adapted from https://github.com/Rahix/avr-device.
+//
+// Refs:
+// - AVR Instruction Set Manual https://ww1.microchip.com/downloads/en/DeviceDoc/AVR-InstructionSet-Manual-DS40002198.pdf
#[cfg(not(portable_atomic_no_asm))]
use core::arch::asm;
diff --git a/vendor/portable-atomic/src/imp/interrupt/mod.rs b/vendor/portable-atomic/src/imp/interrupt/mod.rs
index a0ead68a6..e0ed0f6e6 100644
--- a/vendor/portable-atomic/src/imp/interrupt/mod.rs
+++ b/vendor/portable-atomic/src/imp/interrupt/mod.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Critical section based fallback implementations
//
// This module supports two different critical section implementations:
@@ -26,8 +28,8 @@
//
// See also README.md of this directory.
//
-// [^avr1]: https://github.com/llvm/llvm-project/blob/llvmorg-16.0.0/llvm/lib/Target/AVR/AVRExpandPseudoInsts.cpp#LL963
-// [^avr2]: https://github.com/llvm/llvm-project/blob/llvmorg-16.0.0/llvm/test/CodeGen/AVR/atomics/load16.ll#L5
+// [^avr1]: https://github.com/llvm/llvm-project/blob/llvmorg-17.0.0-rc2/llvm/lib/Target/AVR/AVRExpandPseudoInsts.cpp#L1074
+// [^avr2]: https://github.com/llvm/llvm-project/blob/llvmorg-17.0.0-rc2/llvm/test/CodeGen/AVR/atomics/load16.ll#L5
// On some platforms, atomic load/store can be implemented in a more efficient
// way than disabling interrupts. On MSP430, some RMWs that do not return the
@@ -173,11 +175,21 @@ impl<T> AtomicPtr<T> {
}
#[inline]
- pub(crate) fn swap(&self, ptr: *mut T, _order: Ordering) -> *mut T {
+ pub(crate) fn swap(&self, ptr: *mut T, order: Ordering) -> *mut T {
+ let _ = order;
+ #[cfg(portable_atomic_force_amo)]
+ {
+ self.as_native().swap(ptr, order)
+ }
+ #[cfg(not(portable_atomic_force_amo))]
// SAFETY: any data races are prevented by disabling interrupts (see
// module-level comments) and the raw pointer is valid because we got it
// from a reference.
- with(|| unsafe { self.p.get().replace(ptr) })
+ with(|| unsafe {
+ let prev = self.p.get().read();
+ self.p.get().write(ptr);
+ prev
+ })
}
#[inline]
@@ -194,12 +206,12 @@ impl<T> AtomicPtr<T> {
// module-level comments) and the raw pointer is valid because we got it
// from a reference.
with(|| unsafe {
- let result = self.p.get().read();
- if result == current {
+ let prev = self.p.get().read();
+ if prev == current {
self.p.get().write(new);
- Ok(result)
+ Ok(prev)
} else {
- Err(result)
+ Err(prev)
}
})
}
@@ -275,9 +287,12 @@ macro_rules! atomic_int {
}
}
};
- (load_store_atomic, $atomic_type:ident, $int_type:ident, $align:literal) => {
+ (load_store_atomic $([$kind:ident])?, $atomic_type:ident, $int_type:ident, $align:literal) => {
atomic_int!(base, $atomic_type, $int_type, $align);
- atomic_int!(cas, $atomic_type, $int_type);
+ #[cfg(not(portable_atomic_force_amo))]
+ atomic_int!(cas[emulate], $atomic_type, $int_type);
+ #[cfg(portable_atomic_force_amo)]
+ atomic_int!(cas $([$kind])?, $atomic_type, $int_type);
impl $atomic_type {
#[inline]
#[cfg_attr(all(debug_assertions, not(portable_atomic_no_track_caller)), track_caller)]
@@ -358,7 +373,7 @@ macro_rules! atomic_int {
};
(load_store_critical_session, $atomic_type:ident, $int_type:ident, $align:literal) => {
atomic_int!(base, $atomic_type, $int_type, $align);
- atomic_int!(cas, $atomic_type, $int_type);
+ atomic_int!(cas[emulate], $atomic_type, $int_type);
impl_default_no_fetch_ops!($atomic_type, $int_type);
impl_default_bit_opts!($atomic_type, $int_type);
impl $atomic_type {
@@ -388,14 +403,18 @@ macro_rules! atomic_int {
}
}
};
- (cas, $atomic_type:ident, $int_type:ident) => {
+ (cas[emulate], $atomic_type:ident, $int_type:ident) => {
impl $atomic_type {
#[inline]
pub(crate) fn swap(&self, val: $int_type, _order: Ordering) -> $int_type {
// SAFETY: any data races are prevented by disabling interrupts (see
// module-level comments) and the raw pointer is valid because we got it
// from a reference.
- with(|| unsafe { self.v.get().replace(val) })
+ with(|| unsafe {
+ let prev = self.v.get().read();
+ self.v.get().write(val);
+ prev
+ })
}
#[inline]
@@ -412,12 +431,12 @@ macro_rules! atomic_int {
// module-level comments) and the raw pointer is valid because we got it
// from a reference.
with(|| unsafe {
- let result = self.v.get().read();
- if result == current {
+ let prev = self.v.get().read();
+ if prev == current {
self.v.get().write(new);
- Ok(result)
+ Ok(prev)
} else {
- Err(result)
+ Err(prev)
}
})
}
@@ -440,9 +459,9 @@ macro_rules! atomic_int {
// module-level comments) and the raw pointer is valid because we got it
// from a reference.
with(|| unsafe {
- let result = self.v.get().read();
- self.v.get().write(result.wrapping_add(val));
- result
+ let prev = self.v.get().read();
+ self.v.get().write(prev.wrapping_add(val));
+ prev
})
}
@@ -452,9 +471,9 @@ macro_rules! atomic_int {
// module-level comments) and the raw pointer is valid because we got it
// from a reference.
with(|| unsafe {
- let result = self.v.get().read();
- self.v.get().write(result.wrapping_sub(val));
- result
+ let prev = self.v.get().read();
+ self.v.get().write(prev.wrapping_sub(val));
+ prev
})
}
@@ -464,9 +483,9 @@ macro_rules! atomic_int {
// module-level comments) and the raw pointer is valid because we got it
// from a reference.
with(|| unsafe {
- let result = self.v.get().read();
- self.v.get().write(result & val);
- result
+ let prev = self.v.get().read();
+ self.v.get().write(prev & val);
+ prev
})
}
@@ -476,9 +495,9 @@ macro_rules! atomic_int {
// module-level comments) and the raw pointer is valid because we got it
// from a reference.
with(|| unsafe {
- let result = self.v.get().read();
- self.v.get().write(!(result & val));
- result
+ let prev = self.v.get().read();
+ self.v.get().write(!(prev & val));
+ prev
})
}
@@ -488,9 +507,9 @@ macro_rules! atomic_int {
// module-level comments) and the raw pointer is valid because we got it
// from a reference.
with(|| unsafe {
- let result = self.v.get().read();
- self.v.get().write(result | val);
- result
+ let prev = self.v.get().read();
+ self.v.get().write(prev | val);
+ prev
})
}
@@ -500,9 +519,9 @@ macro_rules! atomic_int {
// module-level comments) and the raw pointer is valid because we got it
// from a reference.
with(|| unsafe {
- let result = self.v.get().read();
- self.v.get().write(result ^ val);
- result
+ let prev = self.v.get().read();
+ self.v.get().write(prev ^ val);
+ prev
})
}
@@ -512,9 +531,9 @@ macro_rules! atomic_int {
// module-level comments) and the raw pointer is valid because we got it
// from a reference.
with(|| unsafe {
- let result = self.v.get().read();
- self.v.get().write(core::cmp::max(result, val));
- result
+ let prev = self.v.get().read();
+ self.v.get().write(core::cmp::max(prev, val));
+ prev
})
}
@@ -524,9 +543,9 @@ macro_rules! atomic_int {
// module-level comments) and the raw pointer is valid because we got it
// from a reference.
with(|| unsafe {
- let result = self.v.get().read();
- self.v.get().write(core::cmp::min(result, val));
- result
+ let prev = self.v.get().read();
+ self.v.get().write(core::cmp::min(prev, val));
+ prev
})
}
@@ -536,21 +555,275 @@ macro_rules! atomic_int {
// module-level comments) and the raw pointer is valid because we got it
// from a reference.
with(|| unsafe {
- let result = self.v.get().read();
- self.v.get().write(!result);
- result
+ let prev = self.v.get().read();
+ self.v.get().write(!prev);
+ prev
+ })
+ }
+
+ #[inline]
+ pub(crate) fn fetch_neg(&self, _order: Ordering) -> $int_type {
+ // SAFETY: any data races are prevented by disabling interrupts (see
+ // module-level comments) and the raw pointer is valid because we got it
+ // from a reference.
+ with(|| unsafe {
+ let prev = self.v.get().read();
+ self.v.get().write(prev.wrapping_neg());
+ prev
+ })
+ }
+ #[inline]
+ pub(crate) fn neg(&self, order: Ordering) {
+ self.fetch_neg(order);
+ }
+ }
+ };
+ // cfg(portable_atomic_force_amo) 32-bit(RV32)/{32,64}-bit(RV64) RMW
+ (cas, $atomic_type:ident, $int_type:ident) => {
+ impl $atomic_type {
+ #[inline]
+ pub(crate) fn swap(&self, val: $int_type, order: Ordering) -> $int_type {
+ self.as_native().swap(val, order)
+ }
+
+ #[inline]
+ #[cfg_attr(all(debug_assertions, not(portable_atomic_no_track_caller)), track_caller)]
+ pub(crate) fn compare_exchange(
+ &self,
+ current: $int_type,
+ new: $int_type,
+ success: Ordering,
+ failure: Ordering,
+ ) -> Result<$int_type, $int_type> {
+ crate::utils::assert_compare_exchange_ordering(success, failure);
+ // SAFETY: any data races are prevented by disabling interrupts (see
+ // module-level comments) and the raw pointer is valid because we got it
+ // from a reference.
+ with(|| unsafe {
+ let prev = self.v.get().read();
+ if prev == current {
+ self.v.get().write(new);
+ Ok(prev)
+ } else {
+ Err(prev)
+ }
+ })
+ }
+
+ #[inline]
+ #[cfg_attr(all(debug_assertions, not(portable_atomic_no_track_caller)), track_caller)]
+ pub(crate) fn compare_exchange_weak(
+ &self,
+ current: $int_type,
+ new: $int_type,
+ success: Ordering,
+ failure: Ordering,
+ ) -> Result<$int_type, $int_type> {
+ self.compare_exchange(current, new, success, failure)
+ }
+
+ #[inline]
+ pub(crate) fn fetch_add(&self, val: $int_type, order: Ordering) -> $int_type {
+ self.as_native().fetch_add(val, order)
+ }
+ #[inline]
+ pub(crate) fn fetch_sub(&self, val: $int_type, order: Ordering) -> $int_type {
+ self.as_native().fetch_sub(val, order)
+ }
+ #[inline]
+ pub(crate) fn fetch_and(&self, val: $int_type, order: Ordering) -> $int_type {
+ self.as_native().fetch_and(val, order)
+ }
+
+ #[inline]
+ pub(crate) fn fetch_nand(&self, val: $int_type, _order: Ordering) -> $int_type {
+ // SAFETY: any data races are prevented by disabling interrupts (see
+ // module-level comments) and the raw pointer is valid because we got it
+ // from a reference.
+ with(|| unsafe {
+ let prev = self.v.get().read();
+ self.v.get().write(!(prev & val));
+ prev
+ })
+ }
+
+ #[inline]
+ pub(crate) fn fetch_or(&self, val: $int_type, order: Ordering) -> $int_type {
+ self.as_native().fetch_or(val, order)
+ }
+ #[inline]
+ pub(crate) fn fetch_xor(&self, val: $int_type, order: Ordering) -> $int_type {
+ self.as_native().fetch_xor(val, order)
+ }
+ #[inline]
+ pub(crate) fn fetch_max(&self, val: $int_type, order: Ordering) -> $int_type {
+ self.as_native().fetch_max(val, order)
+ }
+ #[inline]
+ pub(crate) fn fetch_min(&self, val: $int_type, order: Ordering) -> $int_type {
+ self.as_native().fetch_min(val, order)
+ }
+ #[inline]
+ pub(crate) fn fetch_not(&self, order: Ordering) -> $int_type {
+ self.as_native().fetch_not(order)
+ }
+
+ #[inline]
+ pub(crate) fn fetch_neg(&self, _order: Ordering) -> $int_type {
+ // SAFETY: any data races are prevented by disabling interrupts (see
+ // module-level comments) and the raw pointer is valid because we got it
+ // from a reference.
+ with(|| unsafe {
+ let prev = self.v.get().read();
+ self.v.get().write(prev.wrapping_neg());
+ prev
+ })
+ }
+ #[inline]
+ pub(crate) fn neg(&self, order: Ordering) {
+ self.fetch_neg(order);
+ }
+ }
+ };
+ // cfg(portable_atomic_force_amo) {8,16}-bit RMW
+ (cas[sub_word], $atomic_type:ident, $int_type:ident) => {
+ impl $atomic_type {
+ #[inline]
+ pub(crate) fn swap(&self, val: $int_type, _order: Ordering) -> $int_type {
+ // SAFETY: any data races are prevented by disabling interrupts (see
+ // module-level comments) and the raw pointer is valid because we got it
+ // from a reference.
+ with(|| unsafe {
+ let prev = self.v.get().read();
+ self.v.get().write(val);
+ prev
+ })
+ }
+
+ #[inline]
+ #[cfg_attr(all(debug_assertions, not(portable_atomic_no_track_caller)), track_caller)]
+ pub(crate) fn compare_exchange(
+ &self,
+ current: $int_type,
+ new: $int_type,
+ success: Ordering,
+ failure: Ordering,
+ ) -> Result<$int_type, $int_type> {
+ crate::utils::assert_compare_exchange_ordering(success, failure);
+ // SAFETY: any data races are prevented by disabling interrupts (see
+ // module-level comments) and the raw pointer is valid because we got it
+ // from a reference.
+ with(|| unsafe {
+ let prev = self.v.get().read();
+ if prev == current {
+ self.v.get().write(new);
+ Ok(prev)
+ } else {
+ Err(prev)
+ }
})
}
#[inline]
+ #[cfg_attr(all(debug_assertions, not(portable_atomic_no_track_caller)), track_caller)]
+ pub(crate) fn compare_exchange_weak(
+ &self,
+ current: $int_type,
+ new: $int_type,
+ success: Ordering,
+ failure: Ordering,
+ ) -> Result<$int_type, $int_type> {
+ self.compare_exchange(current, new, success, failure)
+ }
+
+ #[inline]
+ pub(crate) fn fetch_add(&self, val: $int_type, _order: Ordering) -> $int_type {
+ // SAFETY: any data races are prevented by disabling interrupts (see
+ // module-level comments) and the raw pointer is valid because we got it
+ // from a reference.
+ with(|| unsafe {
+ let prev = self.v.get().read();
+ self.v.get().write(prev.wrapping_add(val));
+ prev
+ })
+ }
+
+ #[inline]
+ pub(crate) fn fetch_sub(&self, val: $int_type, _order: Ordering) -> $int_type {
+ // SAFETY: any data races are prevented by disabling interrupts (see
+ // module-level comments) and the raw pointer is valid because we got it
+ // from a reference.
+ with(|| unsafe {
+ let prev = self.v.get().read();
+ self.v.get().write(prev.wrapping_sub(val));
+ prev
+ })
+ }
+
+ #[inline]
+ pub(crate) fn fetch_and(&self, val: $int_type, order: Ordering) -> $int_type {
+ self.as_native().fetch_and(val, order)
+ }
+
+ #[inline]
+ pub(crate) fn fetch_nand(&self, val: $int_type, _order: Ordering) -> $int_type {
+ // SAFETY: any data races are prevented by disabling interrupts (see
+ // module-level comments) and the raw pointer is valid because we got it
+ // from a reference.
+ with(|| unsafe {
+ let prev = self.v.get().read();
+ self.v.get().write(!(prev & val));
+ prev
+ })
+ }
+
+ #[inline]
+ pub(crate) fn fetch_or(&self, val: $int_type, order: Ordering) -> $int_type {
+ self.as_native().fetch_or(val, order)
+ }
+ #[inline]
+ pub(crate) fn fetch_xor(&self, val: $int_type, order: Ordering) -> $int_type {
+ self.as_native().fetch_xor(val, order)
+ }
+
+ #[inline]
+ pub(crate) fn fetch_max(&self, val: $int_type, _order: Ordering) -> $int_type {
+ // SAFETY: any data races are prevented by disabling interrupts (see
+ // module-level comments) and the raw pointer is valid because we got it
+ // from a reference.
+ with(|| unsafe {
+ let prev = self.v.get().read();
+ self.v.get().write(core::cmp::max(prev, val));
+ prev
+ })
+ }
+
+ #[inline]
+ pub(crate) fn fetch_min(&self, val: $int_type, _order: Ordering) -> $int_type {
+ // SAFETY: any data races are prevented by disabling interrupts (see
+ // module-level comments) and the raw pointer is valid because we got it
+ // from a reference.
+ with(|| unsafe {
+ let prev = self.v.get().read();
+ self.v.get().write(core::cmp::min(prev, val));
+ prev
+ })
+ }
+
+ #[inline]
+ pub(crate) fn fetch_not(&self, order: Ordering) -> $int_type {
+ self.as_native().fetch_not(order)
+ }
+
+ #[inline]
pub(crate) fn fetch_neg(&self, _order: Ordering) -> $int_type {
// SAFETY: any data races are prevented by disabling interrupts (see
// module-level comments) and the raw pointer is valid because we got it
// from a reference.
with(|| unsafe {
- let result = self.v.get().read();
- self.v.get().write(result.wrapping_neg());
- result
+ let prev = self.v.get().read();
+ self.v.get().write(prev.wrapping_neg());
+ prev
})
}
#[inline]
@@ -578,10 +851,10 @@ atomic_int!(load_store_atomic, AtomicIsize, isize, 16);
#[cfg(target_pointer_width = "128")]
atomic_int!(load_store_atomic, AtomicUsize, usize, 16);
-atomic_int!(load_store_atomic, AtomicI8, i8, 1);
-atomic_int!(load_store_atomic, AtomicU8, u8, 1);
-atomic_int!(load_store_atomic, AtomicI16, i16, 2);
-atomic_int!(load_store_atomic, AtomicU16, u16, 2);
+atomic_int!(load_store_atomic[sub_word], AtomicI8, i8, 1);
+atomic_int!(load_store_atomic[sub_word], AtomicU8, u8, 1);
+atomic_int!(load_store_atomic[sub_word], AtomicI16, i16, 2);
+atomic_int!(load_store_atomic[sub_word], AtomicU16, u16, 2);
#[cfg(not(target_pointer_width = "16"))]
atomic_int!(load_store_atomic, AtomicI32, i32, 4);
diff --git a/vendor/portable-atomic/src/imp/interrupt/msp430.rs b/vendor/portable-atomic/src/imp/interrupt/msp430.rs
index 020ed1023..8c1ca80ee 100644
--- a/vendor/portable-atomic/src/imp/interrupt/msp430.rs
+++ b/vendor/portable-atomic/src/imp/interrupt/msp430.rs
@@ -1,6 +1,10 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Adapted from https://github.com/rust-embedded/msp430.
//
// See also src/imp/msp430.rs.
+//
+// Refs: https://www.ti.com/lit/ug/slau208q/slau208q.pdf
#[cfg(not(portable_atomic_no_asm))]
use core::arch::asm;
@@ -18,7 +22,6 @@ pub(super) fn disable() -> State {
unsafe {
// Do not use `nomem` and `readonly` because prevent subsequent memory accesses from being reordered before interrupts are disabled.
// Do not use `preserves_flags` because DINT modifies the GIE (global interrupt enable) bit of the status register.
- // Refs: https://mspgcc.sourceforge.net/manual/x951.html
#[cfg(not(portable_atomic_no_asm))]
asm!(
"mov R2, {0}",
diff --git a/vendor/portable-atomic/src/imp/interrupt/riscv.rs b/vendor/portable-atomic/src/imp/interrupt/riscv.rs
index c08545e1d..65b1af2ff 100644
--- a/vendor/portable-atomic/src/imp/interrupt/riscv.rs
+++ b/vendor/portable-atomic/src/imp/interrupt/riscv.rs
@@ -1,9 +1,11 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Refs:
// - https://five-embeddev.com/riscv-isa-manual/latest/machine.html#machine-status-registers-mstatus-and-mstatush
// - https://five-embeddev.com/riscv-isa-manual/latest/supervisor.html#sstatus
//
// Generated asm:
-// - riscv64gc https://godbolt.org/z/a78zxf5sW
+// - riscv64gc https://godbolt.org/z/osbzsT679
#[cfg(not(portable_atomic_no_asm))]
use core::arch::asm;
diff --git a/vendor/portable-atomic/src/imp/interrupt/xtensa.rs b/vendor/portable-atomic/src/imp/interrupt/xtensa.rs
index 3593c25af..6cbb4cffb 100644
--- a/vendor/portable-atomic/src/imp/interrupt/xtensa.rs
+++ b/vendor/portable-atomic/src/imp/interrupt/xtensa.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Refs:
// - Xtensa Instruction Set Architecture (ISA) Reference Manual https://0x04.net/~mwk/doc/xtensa.pdf
// - Linux kernel's Xtensa atomic implementation https://github.com/torvalds/linux/blob/v6.1/arch/xtensa/include/asm/atomic.h
diff --git a/vendor/portable-atomic/src/imp/mod.rs b/vendor/portable-atomic/src/imp/mod.rs
index 3dbe8e6c2..cea71eb3f 100644
--- a/vendor/portable-atomic/src/imp/mod.rs
+++ b/vendor/portable-atomic/src/imp/mod.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// -----------------------------------------------------------------------------
// Lock-free implementations
@@ -12,7 +14,10 @@
)))]
#[cfg_attr(
portable_atomic_no_cfg_target_has_atomic,
- cfg(not(all(feature = "critical-section", portable_atomic_no_atomic_cas)))
+ cfg(not(all(
+ any(target_arch = "riscv32", target_arch = "riscv64", feature = "critical-section"),
+ portable_atomic_no_atomic_cas,
+ )))
)]
#[cfg_attr(
not(portable_atomic_no_cfg_target_has_atomic),
@@ -23,8 +28,11 @@
)]
mod core_atomic;
-#[cfg(any(not(portable_atomic_no_asm), portable_atomic_unstable_asm))]
-#[cfg(target_arch = "aarch64")]
+// aarch64 128-bit atomics
+#[cfg(all(
+ target_arch = "aarch64",
+ any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
+))]
// Use intrinsics.rs on Miri and Sanitizer that do not support inline assembly.
#[cfg_attr(
all(any(miri, portable_atomic_sanitize_thread), portable_atomic_new_atomic_intrinsics),
@@ -36,16 +44,19 @@ mod core_atomic;
)]
mod aarch64;
-#[cfg(any(not(portable_atomic_no_asm), portable_atomic_unstable_asm))]
-#[cfg(target_arch = "x86_64")]
-#[cfg(any(
- target_feature = "cmpxchg16b",
- portable_atomic_target_feature = "cmpxchg16b",
- all(
- feature = "fallback",
- not(portable_atomic_no_cmpxchg16b_target_feature),
- not(portable_atomic_no_outline_atomics),
- not(any(target_env = "sgx", miri)),
+// x86_64 128-bit atomics
+#[cfg(all(
+ target_arch = "x86_64",
+ any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
+ any(
+ target_feature = "cmpxchg16b",
+ portable_atomic_target_feature = "cmpxchg16b",
+ all(
+ feature = "fallback",
+ not(portable_atomic_no_cmpxchg16b_target_feature),
+ not(portable_atomic_no_outline_atomics),
+ not(any(target_env = "sgx", miri)),
+ ),
),
))]
// Use intrinsics.rs on Miri and Sanitizer that do not support inline assembly.
@@ -53,27 +64,34 @@ mod aarch64;
#[cfg_attr(not(any(miri, portable_atomic_sanitize_thread)), path = "atomic128/x86_64.rs")]
mod x86_64;
-#[cfg(portable_atomic_unstable_asm_experimental_arch)]
-#[cfg(target_arch = "powerpc64")]
-#[cfg(any(
- target_feature = "quadword-atomics",
- portable_atomic_target_feature = "quadword-atomics",
- all(
- feature = "fallback",
- not(portable_atomic_no_outline_atomics),
- any(test, portable_atomic_outline_atomics), // TODO(powerpc64): currently disabled by default
- any(
- all(
- target_os = "linux",
- any(
- target_env = "gnu",
- all(target_env = "musl", not(target_feature = "crt-static")),
- portable_atomic_outline_atomics,
+// powerpc64 128-bit atomics
+#[cfg(all(
+ target_arch = "powerpc64",
+ portable_atomic_unstable_asm_experimental_arch,
+ any(
+ target_feature = "quadword-atomics",
+ portable_atomic_target_feature = "quadword-atomics",
+ all(
+ feature = "fallback",
+ not(portable_atomic_no_outline_atomics),
+ any(test, portable_atomic_outline_atomics), // TODO(powerpc64): currently disabled by default
+ any(
+ all(
+ target_os = "linux",
+ any(
+ target_env = "gnu",
+ all(
+ any(target_env = "musl", target_env = "ohos"),
+ not(target_feature = "crt-static"),
+ ),
+ portable_atomic_outline_atomics,
+ ),
),
+ target_os = "android",
+ target_os = "freebsd",
),
- target_os = "freebsd",
+ not(any(miri, portable_atomic_sanitize_thread)),
),
- not(any(miri, portable_atomic_sanitize_thread)),
),
))]
// Use intrinsics.rs on Miri and Sanitizer that do not support inline assembly.
@@ -87,25 +105,20 @@ mod x86_64;
)]
mod powerpc64;
-#[cfg(portable_atomic_unstable_asm_experimental_arch)]
-#[cfg(target_arch = "s390x")]
+// s390x 128-bit atomics
+#[cfg(all(target_arch = "s390x", portable_atomic_unstable_asm_experimental_arch))]
// Use intrinsics.rs on Miri and Sanitizer that do not support inline assembly.
-#[cfg_attr(
- all(any(miri, portable_atomic_sanitize_thread), portable_atomic_new_atomic_intrinsics),
- path = "atomic128/intrinsics.rs"
-)]
-#[cfg_attr(
- not(all(any(miri, portable_atomic_sanitize_thread), portable_atomic_new_atomic_intrinsics)),
- path = "atomic128/s390x.rs"
-)]
+#[cfg_attr(any(miri, portable_atomic_sanitize_thread), path = "atomic128/intrinsics.rs")]
+#[cfg_attr(not(any(miri, portable_atomic_sanitize_thread)), path = "atomic128/s390x.rs")]
mod s390x;
-// Miri and Sanitizer do not support inline assembly.
+// pre-v6 ARM Linux 64-bit atomics
#[cfg(feature = "fallback")]
+// Miri and Sanitizer do not support inline assembly.
#[cfg(all(
- not(any(miri, portable_atomic_sanitize_thread)),
- any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
target_arch = "arm",
+ not(any(miri, portable_atomic_sanitize_thread)),
+ not(portable_atomic_no_asm),
any(target_os = "linux", target_os = "android"),
not(any(target_feature = "v6", portable_atomic_target_feature = "v6")),
not(portable_atomic_no_outline_atomics),
@@ -114,9 +127,11 @@ mod s390x;
#[cfg_attr(not(portable_atomic_no_cfg_target_has_atomic), cfg(not(target_has_atomic = "64")))]
mod arm_linux;
+// MSP430 atomics
#[cfg(target_arch = "msp430")]
pub(crate) mod msp430;
+// atomic load/store for RISC-V without A-extension
#[cfg(any(test, not(feature = "critical-section")))]
#[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(any(test, portable_atomic_no_atomic_cas)))]
#[cfg_attr(
@@ -126,11 +141,12 @@ pub(crate) mod msp430;
#[cfg(any(target_arch = "riscv32", target_arch = "riscv64"))]
mod riscv;
+// x86-specific optimizations
// Miri and Sanitizer do not support inline assembly.
#[cfg(all(
- not(any(miri, portable_atomic_sanitize_thread)),
- any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
any(target_arch = "x86", target_arch = "x86_64"),
+ not(any(miri, portable_atomic_sanitize_thread)),
+ not(portable_atomic_no_asm),
))]
mod x86;
@@ -138,31 +154,31 @@ mod x86;
// Lock-based fallback implementations
#[cfg(feature = "fallback")]
+#[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(not(portable_atomic_no_atomic_cas)))]
+#[cfg_attr(not(portable_atomic_no_cfg_target_has_atomic), cfg(target_has_atomic = "ptr"))]
#[cfg(any(
test,
not(any(
all(
- any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
target_arch = "aarch64",
+ any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
),
all(
+ target_arch = "x86_64",
any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
any(target_feature = "cmpxchg16b", portable_atomic_target_feature = "cmpxchg16b"),
- target_arch = "x86_64",
),
all(
+ target_arch = "powerpc64",
portable_atomic_unstable_asm_experimental_arch,
any(
target_feature = "quadword-atomics",
portable_atomic_target_feature = "quadword-atomics",
),
- target_arch = "powerpc64",
),
- all(portable_atomic_unstable_asm_experimental_arch, target_arch = "s390x"),
+ all(target_arch = "s390x", portable_atomic_unstable_asm_experimental_arch),
))
))]
-#[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(not(portable_atomic_no_atomic_cas)))]
-#[cfg_attr(not(portable_atomic_no_cfg_target_has_atomic), cfg(target_has_atomic = "ptr"))]
mod fallback;
// -----------------------------------------------------------------------------
@@ -170,7 +186,7 @@ mod fallback;
// On AVR, we always use critical section based fallback implementation.
// AVR can be safely assumed to be single-core, so this is sound.
-// https://github.com/llvm/llvm-project/blob/llvmorg-16.0.0/llvm/lib/Target/AVR/AVRExpandPseudoInsts.cpp#LL963
+// https://github.com/llvm/llvm-project/blob/llvmorg-17.0.0-rc2/llvm/lib/Target/AVR/AVRExpandPseudoInsts.cpp#L1074
// MSP430 as well.
#[cfg(any(
all(test, target_os = "none"),
@@ -185,13 +201,13 @@ mod fallback;
cfg(any(test, not(target_has_atomic = "ptr")))
)]
#[cfg(any(
- feature = "critical-section",
target_arch = "arm",
target_arch = "avr",
target_arch = "msp430",
target_arch = "riscv32",
target_arch = "riscv64",
target_arch = "xtensa",
+ feature = "critical-section",
))]
mod interrupt;
@@ -203,7 +219,6 @@ pub(crate) mod float;
// -----------------------------------------------------------------------------
-// Atomic{Isize,Usize,Bool,Ptr}, Atomic{I,U}{8,16}
#[cfg(not(any(
portable_atomic_no_atomic_load_store,
portable_atomic_unsafe_assume_single_core,
@@ -212,7 +227,10 @@ pub(crate) mod float;
)))]
#[cfg_attr(
portable_atomic_no_cfg_target_has_atomic,
- cfg(not(all(feature = "critical-section", portable_atomic_no_atomic_cas)))
+ cfg(not(all(
+ any(target_arch = "riscv32", target_arch = "riscv64", feature = "critical-section"),
+ portable_atomic_no_atomic_cas,
+ )))
)]
#[cfg_attr(
not(portable_atomic_no_cfg_target_has_atomic),
@@ -221,29 +239,27 @@ pub(crate) mod float;
not(target_has_atomic = "ptr"),
)))
)]
-pub(crate) use self::core_atomic::{
- AtomicI16, AtomicI8, AtomicIsize, AtomicPtr, AtomicU16, AtomicU8, AtomicUsize,
-};
-// RISC-V without A-extension
-#[cfg(not(any(portable_atomic_unsafe_assume_single_core, feature = "critical-section")))]
-#[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(portable_atomic_no_atomic_cas))]
-#[cfg_attr(not(portable_atomic_no_cfg_target_has_atomic), cfg(not(target_has_atomic = "ptr")))]
-#[cfg(any(target_arch = "riscv32", target_arch = "riscv64"))]
-pub(crate) use self::riscv::{
- AtomicI16, AtomicI8, AtomicIsize, AtomicPtr, AtomicU16, AtomicU8, AtomicUsize,
-};
-// no core Atomic{Isize,Usize,Bool,Ptr}/Atomic{I,U}{8,16} & assume single core => critical section based fallback
-#[cfg(any(
- portable_atomic_unsafe_assume_single_core,
- feature = "critical-section",
- target_arch = "avr",
- target_arch = "msp430",
-))]
-#[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(portable_atomic_no_atomic_cas))]
-#[cfg_attr(not(portable_atomic_no_cfg_target_has_atomic), cfg(not(target_has_atomic = "ptr")))]
-pub(crate) use self::interrupt::{
- AtomicI16, AtomicI8, AtomicIsize, AtomicPtr, AtomicU16, AtomicU8, AtomicUsize,
-};
+items! {
+ pub(crate) use self::core_atomic::{
+ AtomicI16, AtomicI32, AtomicI8, AtomicIsize, AtomicPtr, AtomicU16, AtomicU32, AtomicU8,
+ AtomicUsize,
+ };
+ #[cfg_attr(
+ portable_atomic_no_cfg_target_has_atomic,
+ cfg(any(
+ not(portable_atomic_no_atomic_64),
+ not(any(target_pointer_width = "16", target_pointer_width = "32")),
+ ))
+ )]
+ #[cfg_attr(
+ not(portable_atomic_no_cfg_target_has_atomic),
+ cfg(any(
+ target_has_atomic = "64",
+ not(any(target_pointer_width = "16", target_pointer_width = "32")),
+ ))
+ )]
+ pub(crate) use self::core_atomic::{AtomicI64, AtomicU64};
+}
// bpf
#[cfg(all(
target_arch = "bpf",
@@ -252,33 +268,21 @@ pub(crate) use self::interrupt::{
))]
pub(crate) use self::core_atomic::{AtomicI64, AtomicIsize, AtomicPtr, AtomicU64, AtomicUsize};
-// Atomic{I,U}32
-#[cfg(not(any(
- portable_atomic_no_atomic_load_store,
- portable_atomic_unsafe_assume_single_core,
- target_arch = "avr",
- target_arch = "msp430",
-)))]
-#[cfg_attr(
- portable_atomic_no_cfg_target_has_atomic,
- cfg(not(all(feature = "critical-section", portable_atomic_no_atomic_cas)))
-)]
-#[cfg_attr(
- not(portable_atomic_no_cfg_target_has_atomic),
- cfg(not(all(
- any(target_arch = "riscv32", target_arch = "riscv64", feature = "critical-section"),
- not(target_has_atomic = "ptr"),
- )))
-)]
-pub(crate) use self::core_atomic::{AtomicI32, AtomicU32};
-// RISC-V without A-extension
+// RISC-V without A-extension & !(assume single core | critical section)
#[cfg(not(any(portable_atomic_unsafe_assume_single_core, feature = "critical-section")))]
#[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(portable_atomic_no_atomic_cas))]
#[cfg_attr(not(portable_atomic_no_cfg_target_has_atomic), cfg(not(target_has_atomic = "ptr")))]
#[cfg(any(target_arch = "riscv32", target_arch = "riscv64"))]
-pub(crate) use self::riscv::{AtomicI32, AtomicU32};
-// no core Atomic{I,U}32 & no CAS & assume single core => critical section based fallback
-#[cfg(any(not(target_pointer_width = "16"), feature = "fallback"))]
+items! {
+ pub(crate) use self::riscv::{
+ AtomicI16, AtomicI32, AtomicI8, AtomicIsize, AtomicPtr, AtomicU16, AtomicU32, AtomicU8,
+ AtomicUsize,
+ };
+ #[cfg(target_arch = "riscv64")]
+ pub(crate) use self::riscv::{AtomicI64, AtomicU64};
+}
+
+// no core atomic CAS & (assume single core | critical section) => critical section based fallback
#[cfg(any(
portable_atomic_unsafe_assume_single_core,
feature = "critical-section",
@@ -287,53 +291,97 @@ pub(crate) use self::riscv::{AtomicI32, AtomicU32};
))]
#[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(portable_atomic_no_atomic_cas))]
#[cfg_attr(not(portable_atomic_no_cfg_target_has_atomic), cfg(not(target_has_atomic = "ptr")))]
-pub(crate) use self::interrupt::{AtomicI32, AtomicU32};
+items! {
+ pub(crate) use self::interrupt::{
+ AtomicI16, AtomicI8, AtomicIsize, AtomicPtr, AtomicU16, AtomicU8, AtomicUsize,
+ };
+ #[cfg(any(not(target_pointer_width = "16"), feature = "fallback"))]
+ pub(crate) use self::interrupt::{AtomicI32, AtomicU32};
+ #[cfg(any(
+ not(any(target_pointer_width = "16", target_pointer_width = "32")),
+ feature = "fallback",
+ ))]
+ pub(crate) use self::interrupt::{AtomicI64, AtomicU64};
+ #[cfg(feature = "fallback")]
+ pub(crate) use self::interrupt::{AtomicI128, AtomicU128};
+}
-// Atomic{I,U}64
-#[cfg(not(any(
- portable_atomic_no_atomic_load_store,
- portable_atomic_unsafe_assume_single_core,
-)))]
-#[cfg_attr(
- portable_atomic_no_cfg_target_has_atomic,
- cfg(any(
- not(portable_atomic_no_atomic_64),
+// no core (64-bit | 128-bit) atomic & has CAS => use lock-base fallback
+#[cfg(feature = "fallback")]
+#[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(not(portable_atomic_no_atomic_cas)))]
+#[cfg_attr(not(portable_atomic_no_cfg_target_has_atomic), cfg(target_has_atomic = "ptr"))]
+items! {
+ #[cfg(not(all(
+ target_arch = "arm",
+ not(any(miri, portable_atomic_sanitize_thread)),
+ not(portable_atomic_no_asm),
+ any(target_os = "linux", target_os = "android"),
+ not(any(target_feature = "v6", portable_atomic_target_feature = "v6")),
+ not(portable_atomic_no_outline_atomics),
+ )))]
+ #[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(portable_atomic_no_atomic_64))]
+ #[cfg_attr(not(portable_atomic_no_cfg_target_has_atomic), cfg(not(target_has_atomic = "64")))]
+ pub(crate) use self::fallback::{AtomicI64, AtomicU64};
+ #[cfg(not(any(
all(
- not(any(target_pointer_width = "16", target_pointer_width = "32")),
- not(all(feature = "critical-section", portable_atomic_no_atomic_cas)),
+ target_arch = "aarch64",
+ any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
),
- ))
-)]
-#[cfg_attr(
- not(portable_atomic_no_cfg_target_has_atomic),
- cfg(any(
- target_has_atomic = "64",
all(
- not(any(target_pointer_width = "16", target_pointer_width = "32")),
- not(all(
- any(
- target_arch = "riscv32",
- target_arch = "riscv64",
- feature = "critical-section",
+ target_arch = "x86_64",
+ any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
+ any(
+ target_feature = "cmpxchg16b",
+ portable_atomic_target_feature = "cmpxchg16b",
+ all(
+ feature = "fallback",
+ not(portable_atomic_no_cmpxchg16b_target_feature),
+ not(portable_atomic_no_outline_atomics),
+ not(any(target_env = "sgx", miri)),
),
- not(target_has_atomic = "ptr"),
- )),
+ ),
),
- ))
-)]
-pub(crate) use self::core_atomic::{AtomicI64, AtomicU64};
-// RISC-V without A-extension
-#[cfg(not(any(portable_atomic_unsafe_assume_single_core, feature = "critical-section")))]
-#[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(portable_atomic_no_atomic_cas))]
-#[cfg_attr(not(portable_atomic_no_cfg_target_has_atomic), cfg(not(target_has_atomic = "ptr")))]
-#[cfg(target_arch = "riscv64")]
-pub(crate) use self::riscv::{AtomicI64, AtomicU64};
+ all(
+ target_arch = "powerpc64",
+ portable_atomic_unstable_asm_experimental_arch,
+ any(
+ target_feature = "quadword-atomics",
+ portable_atomic_target_feature = "quadword-atomics",
+ all(
+ feature = "fallback",
+ not(portable_atomic_no_outline_atomics),
+ portable_atomic_outline_atomics, // TODO(powerpc64): currently disabled by default
+ any(
+ all(
+ target_os = "linux",
+ any(
+ target_env = "gnu",
+ all(
+ any(target_env = "musl", target_env = "ohos"),
+ not(target_feature = "crt-static"),
+ ),
+ portable_atomic_outline_atomics,
+ ),
+ ),
+ target_os = "android",
+ target_os = "freebsd",
+ ),
+ not(any(miri, portable_atomic_sanitize_thread)),
+ ),
+ ),
+ ),
+ all(target_arch = "s390x", portable_atomic_unstable_asm_experimental_arch),
+ )))]
+ pub(crate) use self::fallback::{AtomicI128, AtomicU128};
+}
+
+// 64-bit atomics (platform-specific)
// pre-v6 ARM Linux
#[cfg(feature = "fallback")]
#[cfg(all(
- not(any(miri, portable_atomic_sanitize_thread)),
- any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
target_arch = "arm",
+ not(any(miri, portable_atomic_sanitize_thread)),
+ not(portable_atomic_no_asm),
any(target_os = "linux", target_os = "android"),
not(any(target_feature = "v6", portable_atomic_target_feature = "v6")),
not(portable_atomic_no_outline_atomics),
@@ -341,49 +389,17 @@ pub(crate) use self::riscv::{AtomicI64, AtomicU64};
#[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(portable_atomic_no_atomic_64))]
#[cfg_attr(not(portable_atomic_no_cfg_target_has_atomic), cfg(not(target_has_atomic = "64")))]
pub(crate) use self::arm_linux::{AtomicI64, AtomicU64};
-// no core Atomic{I,U}64 & has CAS => use lock-base fallback
-#[cfg(feature = "fallback")]
-#[cfg(not(all(
- not(any(miri, portable_atomic_sanitize_thread)),
- any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
- target_arch = "arm",
- any(target_os = "linux", target_os = "android"),
- not(any(target_feature = "v6", portable_atomic_target_feature = "v6")),
- not(portable_atomic_no_outline_atomics),
-)))]
-#[cfg_attr(
- portable_atomic_no_cfg_target_has_atomic,
- cfg(all(portable_atomic_no_atomic_64, not(portable_atomic_no_atomic_cas)))
-)]
-#[cfg_attr(
- not(portable_atomic_no_cfg_target_has_atomic),
- cfg(all(not(target_has_atomic = "64"), target_has_atomic = "ptr"))
-)]
-pub(crate) use self::fallback::{AtomicI64, AtomicU64};
-// no core Atomic{I,U}64 & no CAS & assume single core => critical section based fallback
-#[cfg(any(
- not(any(target_pointer_width = "16", target_pointer_width = "32")),
- feature = "fallback",
-))]
-#[cfg(any(
- portable_atomic_unsafe_assume_single_core,
- feature = "critical-section",
- target_arch = "avr",
- target_arch = "msp430",
-))]
-#[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(portable_atomic_no_atomic_cas))]
-#[cfg_attr(not(portable_atomic_no_cfg_target_has_atomic), cfg(not(target_has_atomic = "ptr")))]
-pub(crate) use self::interrupt::{AtomicI64, AtomicU64};
-// Atomic{I,U}128
-// aarch64 stable
+// 128-bit atomics (platform-specific)
+// aarch64
#[cfg(all(
- any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
target_arch = "aarch64",
+ any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
))]
pub(crate) use self::aarch64::{AtomicI128, AtomicU128};
-// no core Atomic{I,U}128 & has cmpxchg16b => use cmpxchg16b
+// x86_64 & (cmpxchg16b | outline-atomics)
#[cfg(all(
+ target_arch = "x86_64",
any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
any(
target_feature = "cmpxchg16b",
@@ -395,94 +411,39 @@ pub(crate) use self::aarch64::{AtomicI128, AtomicU128};
not(any(target_env = "sgx", miri)),
),
),
- target_arch = "x86_64",
))]
pub(crate) use self::x86_64::{AtomicI128, AtomicU128};
-// powerpc64
-#[cfg(portable_atomic_unstable_asm_experimental_arch)]
-#[cfg(any(
- target_feature = "quadword-atomics",
- portable_atomic_target_feature = "quadword-atomics",
- all(
- feature = "fallback",
- not(portable_atomic_no_outline_atomics),
- portable_atomic_outline_atomics, // TODO(powerpc64): currently disabled by default
- any(
- all(
- target_os = "linux",
- any(
- target_env = "gnu",
- all(target_env = "musl", not(target_feature = "crt-static")),
- portable_atomic_outline_atomics,
+// powerpc64 & (pwr8 | outline-atomics)
+#[cfg(all(
+ target_arch = "powerpc64",
+ portable_atomic_unstable_asm_experimental_arch,
+ any(
+ target_feature = "quadword-atomics",
+ portable_atomic_target_feature = "quadword-atomics",
+ all(
+ feature = "fallback",
+ not(portable_atomic_no_outline_atomics),
+ portable_atomic_outline_atomics, // TODO(powerpc64): currently disabled by default
+ any(
+ all(
+ target_os = "linux",
+ any(
+ target_env = "gnu",
+ all(
+ any(target_env = "musl", target_env = "ohos"),
+ not(target_feature = "crt-static"),
+ ),
+ portable_atomic_outline_atomics,
+ ),
),
+ target_os = "android",
+ target_os = "freebsd",
),
- target_os = "freebsd",
+ not(any(miri, portable_atomic_sanitize_thread)),
),
- not(any(miri, portable_atomic_sanitize_thread)),
),
))]
-#[cfg(target_arch = "powerpc64")]
pub(crate) use self::powerpc64::{AtomicI128, AtomicU128};
// s390x
-#[cfg(portable_atomic_unstable_asm_experimental_arch)]
-#[cfg(target_arch = "s390x")]
+#[cfg(all(target_arch = "s390x", portable_atomic_unstable_asm_experimental_arch))]
pub(crate) use self::s390x::{AtomicI128, AtomicU128};
-// no core Atomic{I,U}128 & has CAS => use lock-base fallback
-#[cfg(feature = "fallback")]
-#[cfg(not(any(
- all(any(not(portable_atomic_no_asm), portable_atomic_unstable_asm), target_arch = "aarch64"),
- all(
- any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
- any(
- target_feature = "cmpxchg16b",
- portable_atomic_target_feature = "cmpxchg16b",
- all(
- feature = "fallback",
- not(portable_atomic_no_cmpxchg16b_target_feature),
- not(portable_atomic_no_outline_atomics),
- not(any(target_env = "sgx", miri)),
- ),
- ),
- target_arch = "x86_64",
- ),
- all(
- portable_atomic_unstable_asm_experimental_arch,
- any(
- target_feature = "quadword-atomics",
- portable_atomic_target_feature = "quadword-atomics",
- all(
- feature = "fallback",
- not(portable_atomic_no_outline_atomics),
- portable_atomic_outline_atomics, // TODO(powerpc64): currently disabled by default
- any(
- all(
- target_os = "linux",
- any(
- target_env = "gnu",
- all(target_env = "musl", not(target_feature = "crt-static")),
- portable_atomic_outline_atomics,
- ),
- ),
- target_os = "freebsd",
- ),
- not(any(miri, portable_atomic_sanitize_thread)),
- ),
- ),
- target_arch = "powerpc64",
- ),
- all(portable_atomic_unstable_asm_experimental_arch, target_arch = "s390x"),
-)))]
-#[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(not(portable_atomic_no_atomic_cas)))]
-#[cfg_attr(not(portable_atomic_no_cfg_target_has_atomic), cfg(target_has_atomic = "ptr"))]
-pub(crate) use self::fallback::{AtomicI128, AtomicU128};
-// no core Atomic{I,U}128 & no CAS & assume_single_core => critical section based fallback
-#[cfg(feature = "fallback")]
-#[cfg(any(
- portable_atomic_unsafe_assume_single_core,
- feature = "critical-section",
- target_arch = "avr",
- target_arch = "msp430",
-))]
-#[cfg_attr(portable_atomic_no_cfg_target_has_atomic, cfg(portable_atomic_no_atomic_cas))]
-#[cfg_attr(not(portable_atomic_no_cfg_target_has_atomic), cfg(not(target_has_atomic = "ptr")))]
-pub(crate) use self::interrupt::{AtomicI128, AtomicU128};
diff --git a/vendor/portable-atomic/src/imp/msp430.rs b/vendor/portable-atomic/src/imp/msp430.rs
index 4928549ab..f6990ddee 100644
--- a/vendor/portable-atomic/src/imp/msp430.rs
+++ b/vendor/portable-atomic/src/imp/msp430.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Atomic load/store implementation on MSP430.
//
// Adapted from https://github.com/pftbest/msp430-atomic.
@@ -8,6 +10,8 @@
// See also src/imp/interrupt/msp430.rs.
//
// Note: Ordering is always SeqCst.
+//
+// Refs: https://www.ti.com/lit/ug/slau208q/slau208q.pdf
#[cfg(not(portable_atomic_no_asm))]
use core::arch::asm;
@@ -165,6 +169,7 @@ macro_rules! atomic {
concat!("add", $asm_suffix, " {val}, 0({dst})"),
dst = in(reg) dst,
val = in(reg) val,
+ // Do not use `preserves_flags` because ADD modifies the V, N, Z, and C bits of the status register.
options(nostack),
);
#[cfg(portable_atomic_no_asm)]
@@ -186,6 +191,7 @@ macro_rules! atomic {
concat!("sub", $asm_suffix, " {val}, 0({dst})"),
dst = in(reg) dst,
val = in(reg) val,
+ // Do not use `preserves_flags` because SUB modifies the V, N, Z, and C bits of the status register.
options(nostack),
);
#[cfg(portable_atomic_no_asm)]
@@ -207,6 +213,7 @@ macro_rules! atomic {
concat!("and", $asm_suffix, " {val}, 0({dst})"),
dst = in(reg) dst,
val = in(reg) val,
+ // Do not use `preserves_flags` because AND modifies the V, N, Z, and C bits of the status register.
options(nostack),
);
#[cfg(portable_atomic_no_asm)]
@@ -228,7 +235,7 @@ macro_rules! atomic {
concat!("bis", $asm_suffix, " {val}, 0({dst})"),
dst = in(reg) dst,
val = in(reg) val,
- options(nostack),
+ options(nostack, preserves_flags),
);
#[cfg(portable_atomic_no_asm)]
llvm_asm!(
@@ -249,6 +256,7 @@ macro_rules! atomic {
concat!("xor", $asm_suffix, " {val}, 0({dst})"),
dst = in(reg) dst,
val = in(reg) val,
+ // Do not use `preserves_flags` because XOR modifies the V, N, Z, and C bits of the status register.
options(nostack),
);
#[cfg(portable_atomic_no_asm)]
@@ -269,6 +277,7 @@ macro_rules! atomic {
asm!(
concat!("inv", $asm_suffix, " 0({dst})"),
dst = in(reg) dst,
+ // Do not use `preserves_flags` because INV modifies the V, N, Z, and C bits of the status register.
options(nostack),
);
#[cfg(portable_atomic_no_asm)]
diff --git a/vendor/portable-atomic/src/imp/riscv.rs b/vendor/portable-atomic/src/imp/riscv.rs
index 9b4a5cbb7..373607757 100644
--- a/vendor/portable-atomic/src/imp/riscv.rs
+++ b/vendor/portable-atomic/src/imp/riscv.rs
@@ -1,18 +1,94 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Atomic load/store implementation on RISC-V.
//
// Refs:
+// - RISC-V Instruction Set Manual Volume I: Unprivileged ISA
+// https://riscv.org/wp-content/uploads/2019/12/riscv-spec-20191213.pdf
+// - RISC-V Atomics ABI Specification
+// https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/HEAD/riscv-atomic.adoc
// - "Mappings from C/C++ primitives to RISC-V primitives." table in RISC-V Instruction Set Manual:
// https://five-embeddev.com/riscv-isa-manual/latest/memory.html#sec:memory:porting
// - atomic-maybe-uninit https://github.com/taiki-e/atomic-maybe-uninit
//
// Generated asm:
-// - riscv64gc https://godbolt.org/z/hx4Krb91h
+// - riscv64gc https://godbolt.org/z/EETebx7TE
+// - riscv32imac https://godbolt.org/z/8zzv73bKh
#[cfg(not(portable_atomic_no_asm))]
use core::arch::asm;
use core::{cell::UnsafeCell, sync::atomic::Ordering};
-macro_rules! atomic {
+#[cfg(any(test, portable_atomic_force_amo))]
+macro_rules! atomic_rmw_amo_order {
+ ($op:ident, $order:ident) => {
+ match $order {
+ Ordering::Relaxed => $op!(""),
+ Ordering::Acquire => $op!(".aq"),
+ Ordering::Release => $op!(".rl"),
+ // AcqRel and SeqCst RMWs are equivalent.
+ Ordering::AcqRel | Ordering::SeqCst => $op!(".aqrl"),
+ _ => unreachable!("{:?}", $order),
+ }
+ };
+}
+#[cfg(any(test, portable_atomic_force_amo))]
+macro_rules! atomic_rmw_amo {
+ ($op:ident, $dst:ident, $val:ident, $order:ident, $asm_suffix:tt) => {{
+ let out;
+ macro_rules! op {
+ ($asm_order:tt) => {
+ // SAFETY: The user guaranteed that the AMO instruction is available in this
+ // system by setting the portable_atomic_force_amo and
+ // portable_atomic_unsafe_assume_single_core.
+ // The caller of this macro must guarantee the validity of the pointer.
+ asm!(
+ ".option push",
+ // https://github.com/riscv-non-isa/riscv-asm-manual/blob/HEAD/riscv-asm.md#arch
+ ".option arch, +a",
+ concat!("amo", stringify!($op), ".", $asm_suffix, $asm_order, " {out}, {val}, 0({dst})"),
+ ".option pop",
+ dst = in(reg) ptr_reg!($dst),
+ val = in(reg) $val,
+ out = lateout(reg) out,
+ options(nostack, preserves_flags),
+ )
+ };
+ }
+ atomic_rmw_amo_order!(op, $order);
+ out
+ }};
+}
+// 32-bit val.wrapping_shl(shift) but no extra `& (u32::BITS - 1)`
+#[cfg(any(test, portable_atomic_force_amo))]
+#[inline]
+fn sllw(val: u32, shift: u32) -> u32 {
+ // SAFETY: Calling sll{,w} is safe.
+ unsafe {
+ let out;
+ #[cfg(target_arch = "riscv32")]
+ asm!("sll {out}, {val}, {shift}", out = lateout(reg) out, val = in(reg) val, shift = in(reg) shift, options(pure, nomem, nostack, preserves_flags));
+ #[cfg(target_arch = "riscv64")]
+ asm!("sllw {out}, {val}, {shift}", out = lateout(reg) out, val = in(reg) val, shift = in(reg) shift, options(pure, nomem, nostack, preserves_flags));
+ out
+ }
+}
+// 32-bit val.wrapping_shr(shift) but no extra `& (u32::BITS - 1)`
+#[cfg(any(test, portable_atomic_force_amo))]
+#[inline]
+fn srlw(val: u32, shift: u32) -> u32 {
+ // SAFETY: Calling srl{,w} is safe.
+ unsafe {
+ let out;
+ #[cfg(target_arch = "riscv32")]
+ asm!("srl {out}, {val}, {shift}", out = lateout(reg) out, val = in(reg) val, shift = in(reg) shift, options(pure, nomem, nostack, preserves_flags));
+ #[cfg(target_arch = "riscv64")]
+ asm!("srlw {out}, {val}, {shift}", out = lateout(reg) out, val = in(reg) val, shift = in(reg) shift, options(pure, nomem, nostack, preserves_flags));
+ out
+ }
+}
+
+macro_rules! atomic_load_store {
($([$($generics:tt)*])? $atomic_type:ident, $value_type:ty, $asm_suffix:tt) => {
#[repr(transparent)]
pub(crate) struct $atomic_type $(<$($generics)*>)? {
@@ -137,28 +213,172 @@ macro_rules! atomic {
};
}
-atomic!(AtomicI8, i8, "b");
-atomic!(AtomicU8, u8, "b");
-atomic!(AtomicI16, i16, "h");
-atomic!(AtomicU16, u16, "h");
-atomic!(AtomicI32, i32, "w");
-atomic!(AtomicU32, u32, "w");
+macro_rules! atomic_ptr {
+ ($([$($generics:tt)*])? $atomic_type:ident, $value_type:ty, $asm_suffix:tt) => {
+ atomic_load_store!($([$($generics)*])? $atomic_type, $value_type, $asm_suffix);
+ #[cfg(portable_atomic_force_amo)]
+ impl $(<$($generics)*>)? $atomic_type $(<$($generics)*>)? {
+ #[inline]
+ pub(crate) fn swap(&self, val: $value_type, order: Ordering) -> $value_type {
+ let dst = self.v.get();
+ // SAFETY: any data races are prevented by atomic intrinsics and the raw
+ // pointer passed in is valid because we got it from a reference.
+ unsafe { atomic_rmw_amo!(swap, dst, val, order, $asm_suffix) }
+ }
+ }
+ };
+}
+
+macro_rules! atomic {
+ ($atomic_type:ident, $value_type:ty, $asm_suffix:tt, $max:tt, $min:tt) => {
+ atomic_load_store!($atomic_type, $value_type, $asm_suffix);
+ // There is no amo{sub,nand,neg}.
+ #[cfg(any(test, portable_atomic_force_amo))]
+ impl $atomic_type {
+ #[inline]
+ pub(crate) fn swap(&self, val: $value_type, order: Ordering) -> $value_type {
+ let dst = self.v.get();
+ // SAFETY: any data races are prevented by atomic intrinsics and the raw
+ // pointer passed in is valid because we got it from a reference.
+ unsafe { atomic_rmw_amo!(swap, dst, val, order, $asm_suffix) }
+ }
+
+ #[inline]
+ pub(crate) fn fetch_add(&self, val: $value_type, order: Ordering) -> $value_type {
+ let dst = self.v.get();
+ // SAFETY: any data races are prevented by atomic intrinsics and the raw
+ // pointer passed in is valid because we got it from a reference.
+ unsafe { atomic_rmw_amo!(add, dst, val, order, $asm_suffix) }
+ }
+
+ #[inline]
+ pub(crate) fn fetch_sub(&self, val: $value_type, order: Ordering) -> $value_type {
+ self.fetch_add(val.wrapping_neg(), order)
+ }
+
+ #[inline]
+ pub(crate) fn fetch_and(&self, val: $value_type, order: Ordering) -> $value_type {
+ let dst = self.v.get();
+ // SAFETY: any data races are prevented by atomic intrinsics and the raw
+ // pointer passed in is valid because we got it from a reference.
+ unsafe { atomic_rmw_amo!(and, dst, val, order, $asm_suffix) }
+ }
+
+ #[inline]
+ pub(crate) fn fetch_or(&self, val: $value_type, order: Ordering) -> $value_type {
+ let dst = self.v.get();
+ // SAFETY: any data races are prevented by atomic intrinsics and the raw
+ // pointer passed in is valid because we got it from a reference.
+ unsafe { atomic_rmw_amo!(or, dst, val, order, $asm_suffix) }
+ }
+
+ #[inline]
+ pub(crate) fn fetch_xor(&self, val: $value_type, order: Ordering) -> $value_type {
+ let dst = self.v.get();
+ // SAFETY: any data races are prevented by atomic intrinsics and the raw
+ // pointer passed in is valid because we got it from a reference.
+ unsafe { atomic_rmw_amo!(xor, dst, val, order, $asm_suffix) }
+ }
+
+ #[inline]
+ pub(crate) fn fetch_not(&self, order: Ordering) -> $value_type {
+ const NOT_MASK: $value_type = (0 as $value_type).wrapping_sub(1);
+ self.fetch_xor(NOT_MASK, order)
+ }
+
+ #[inline]
+ pub(crate) fn fetch_max(&self, val: $value_type, order: Ordering) -> $value_type {
+ let dst = self.v.get();
+ // SAFETY: any data races are prevented by atomic intrinsics and the raw
+ // pointer passed in is valid because we got it from a reference.
+ unsafe { atomic_rmw_amo!($max, dst, val, order, $asm_suffix) }
+ }
+
+ #[inline]
+ pub(crate) fn fetch_min(&self, val: $value_type, order: Ordering) -> $value_type {
+ let dst = self.v.get();
+ // SAFETY: any data races are prevented by atomic intrinsics and the raw
+ // pointer passed in is valid because we got it from a reference.
+ unsafe { atomic_rmw_amo!($min, dst, val, order, $asm_suffix) }
+ }
+ }
+ };
+}
+
+macro_rules! atomic_sub_word {
+ ($atomic_type:ident, $value_type:ty, $unsigned_type:ty, $asm_suffix:tt) => {
+ atomic_load_store!($atomic_type, $value_type, $asm_suffix);
+ #[cfg(any(test, portable_atomic_force_amo))]
+ impl $atomic_type {
+ #[inline]
+ pub(crate) fn fetch_and(&self, val: $value_type, order: Ordering) -> $value_type {
+ let dst = self.v.get();
+ let (dst, shift, mask) = crate::utils::create_sub_word_mask_values(dst);
+ let mask = !sllw(mask as u32, shift as u32);
+ // TODO: use zero_extend helper instead of cast for val.
+ let val = sllw(val as $unsigned_type as u32, shift as u32);
+ let val = val | mask;
+ // SAFETY: any data races are prevented by atomic intrinsics and the raw
+ // pointer passed in is valid because we got it from a reference.
+ let out: u32 = unsafe { atomic_rmw_amo!(and, dst, val, order, "w") };
+ srlw(out, shift as u32) as $unsigned_type as $value_type
+ }
+
+ #[inline]
+ pub(crate) fn fetch_or(&self, val: $value_type, order: Ordering) -> $value_type {
+ let dst = self.v.get();
+ let (dst, shift, _mask) = crate::utils::create_sub_word_mask_values(dst);
+ // TODO: use zero_extend helper instead of cast for val.
+ let val = sllw(val as $unsigned_type as u32, shift as u32);
+ // SAFETY: any data races are prevented by atomic intrinsics and the raw
+ // pointer passed in is valid because we got it from a reference.
+ let out: u32 = unsafe { atomic_rmw_amo!(or, dst, val, order, "w") };
+ srlw(out, shift as u32) as $unsigned_type as $value_type
+ }
+
+ #[inline]
+ pub(crate) fn fetch_xor(&self, val: $value_type, order: Ordering) -> $value_type {
+ let dst = self.v.get();
+ let (dst, shift, _mask) = crate::utils::create_sub_word_mask_values(dst);
+ // TODO: use zero_extend helper instead of cast for val.
+ let val = sllw(val as $unsigned_type as u32, shift as u32);
+ // SAFETY: any data races are prevented by atomic intrinsics and the raw
+ // pointer passed in is valid because we got it from a reference.
+ let out: u32 = unsafe { atomic_rmw_amo!(xor, dst, val, order, "w") };
+ srlw(out, shift as u32) as $unsigned_type as $value_type
+ }
+
+ #[inline]
+ pub(crate) fn fetch_not(&self, order: Ordering) -> $value_type {
+ const NOT_MASK: $value_type = (0 as $value_type).wrapping_sub(1);
+ self.fetch_xor(NOT_MASK, order)
+ }
+ }
+ };
+}
+
+atomic_sub_word!(AtomicI8, i8, u8, "b");
+atomic_sub_word!(AtomicU8, u8, u8, "b");
+atomic_sub_word!(AtomicI16, i16, u16, "h");
+atomic_sub_word!(AtomicU16, u16, u16, "h");
+atomic!(AtomicI32, i32, "w", max, min);
+atomic!(AtomicU32, u32, "w", maxu, minu);
#[cfg(target_arch = "riscv64")]
-atomic!(AtomicI64, i64, "d");
+atomic!(AtomicI64, i64, "d", max, min);
#[cfg(target_arch = "riscv64")]
-atomic!(AtomicU64, u64, "d");
+atomic!(AtomicU64, u64, "d", maxu, minu);
#[cfg(target_pointer_width = "32")]
-atomic!(AtomicIsize, isize, "w");
+atomic!(AtomicIsize, isize, "w", max, min);
#[cfg(target_pointer_width = "32")]
-atomic!(AtomicUsize, usize, "w");
+atomic!(AtomicUsize, usize, "w", maxu, minu);
#[cfg(target_pointer_width = "32")]
-atomic!([T] AtomicPtr, *mut T, "w");
+atomic_ptr!([T] AtomicPtr, *mut T, "w");
#[cfg(target_pointer_width = "64")]
-atomic!(AtomicIsize, isize, "d");
+atomic!(AtomicIsize, isize, "d", max, min);
#[cfg(target_pointer_width = "64")]
-atomic!(AtomicUsize, usize, "d");
+atomic!(AtomicUsize, usize, "d", maxu, minu);
#[cfg(target_pointer_width = "64")]
-atomic!([T] AtomicPtr, *mut T, "d");
+atomic_ptr!([T] AtomicPtr, *mut T, "d");
#[cfg(test)]
mod tests {
@@ -177,4 +397,305 @@ mod tests {
test_atomic_int_load_store!(u64);
test_atomic_int_load_store!(isize);
test_atomic_int_load_store!(usize);
+
+ macro_rules! test_atomic_int_amo {
+ ($int_type:ident) => {
+ paste::paste! {
+ #[allow(
+ clippy::alloc_instead_of_core,
+ clippy::std_instead_of_alloc,
+ clippy::std_instead_of_core,
+ clippy::undocumented_unsafe_blocks
+ )]
+ mod [<test_atomic_ $int_type _amo>] {
+ use super::*;
+ test_atomic_int_amo!([<Atomic $int_type:camel>], $int_type);
+ }
+ }
+ };
+ ($atomic_type:ty, $int_type:ident) => {
+ ::quickcheck::quickcheck! {
+ fn quickcheck_swap(x: $int_type, y: $int_type) -> bool {
+ for &order in &test_helper::SWAP_ORDERINGS {
+ let a = <$atomic_type>::new(x);
+ assert_eq!(a.swap(y, order), x);
+ assert_eq!(a.swap(x, order), y);
+ }
+ true
+ }
+ fn quickcheck_fetch_add(x: $int_type, y: $int_type) -> bool {
+ for &order in &test_helper::SWAP_ORDERINGS {
+ let a = <$atomic_type>::new(x);
+ assert_eq!(a.fetch_add(y, order), x);
+ assert_eq!(a.load(Ordering::Relaxed), x.wrapping_add(y));
+ let a = <$atomic_type>::new(y);
+ assert_eq!(a.fetch_add(x, order), y);
+ assert_eq!(a.load(Ordering::Relaxed), y.wrapping_add(x));
+ }
+ true
+ }
+ fn quickcheck_fetch_sub(x: $int_type, y: $int_type) -> bool {
+ for &order in &test_helper::SWAP_ORDERINGS {
+ let a = <$atomic_type>::new(x);
+ assert_eq!(a.fetch_sub(y, order), x);
+ assert_eq!(a.load(Ordering::Relaxed), x.wrapping_sub(y));
+ let a = <$atomic_type>::new(y);
+ assert_eq!(a.fetch_sub(x, order), y);
+ assert_eq!(a.load(Ordering::Relaxed), y.wrapping_sub(x));
+ }
+ true
+ }
+ fn quickcheck_fetch_and(x: $int_type, y: $int_type) -> bool {
+ for &order in &test_helper::SWAP_ORDERINGS {
+ let a = <$atomic_type>::new(x);
+ assert_eq!(a.fetch_and(y, order), x);
+ assert_eq!(a.load(Ordering::Relaxed), x & y);
+ let a = <$atomic_type>::new(y);
+ assert_eq!(a.fetch_and(x, order), y);
+ assert_eq!(a.load(Ordering::Relaxed), y & x);
+ }
+ true
+ }
+ fn quickcheck_fetch_or(x: $int_type, y: $int_type) -> bool {
+ for &order in &test_helper::SWAP_ORDERINGS {
+ let a = <$atomic_type>::new(x);
+ assert_eq!(a.fetch_or(y, order), x);
+ assert_eq!(a.load(Ordering::Relaxed), x | y);
+ let a = <$atomic_type>::new(y);
+ assert_eq!(a.fetch_or(x, order), y);
+ assert_eq!(a.load(Ordering::Relaxed), y | x);
+ }
+ true
+ }
+ fn quickcheck_fetch_xor(x: $int_type, y: $int_type) -> bool {
+ for &order in &test_helper::SWAP_ORDERINGS {
+ let a = <$atomic_type>::new(x);
+ assert_eq!(a.fetch_xor(y, order), x);
+ assert_eq!(a.load(Ordering::Relaxed), x ^ y);
+ let a = <$atomic_type>::new(y);
+ assert_eq!(a.fetch_xor(x, order), y);
+ assert_eq!(a.load(Ordering::Relaxed), y ^ x);
+ }
+ true
+ }
+ fn quickcheck_fetch_max(x: $int_type, y: $int_type) -> bool {
+ for &order in &test_helper::SWAP_ORDERINGS {
+ let a = <$atomic_type>::new(x);
+ assert_eq!(a.fetch_max(y, order), x);
+ assert_eq!(a.load(Ordering::Relaxed), core::cmp::max(x, y));
+ let a = <$atomic_type>::new(y);
+ assert_eq!(a.fetch_max(x, order), y);
+ assert_eq!(a.load(Ordering::Relaxed), core::cmp::max(y, x));
+ }
+ true
+ }
+ fn quickcheck_fetch_min(x: $int_type, y: $int_type) -> bool {
+ for &order in &test_helper::SWAP_ORDERINGS {
+ let a = <$atomic_type>::new(x);
+ assert_eq!(a.fetch_min(y, order), x);
+ assert_eq!(a.load(Ordering::Relaxed), core::cmp::min(x, y));
+ let a = <$atomic_type>::new(y);
+ assert_eq!(a.fetch_min(x, order), y);
+ assert_eq!(a.load(Ordering::Relaxed), core::cmp::min(y, x));
+ }
+ true
+ }
+ fn quickcheck_fetch_not(x: $int_type) -> bool {
+ for &order in &test_helper::SWAP_ORDERINGS {
+ let a = <$atomic_type>::new(x);
+ assert_eq!(a.fetch_not(order), x);
+ assert_eq!(a.load(Ordering::Relaxed), !x);
+ assert_eq!(a.fetch_not(order), !x);
+ assert_eq!(a.load(Ordering::Relaxed), x);
+ }
+ true
+ }
+ }
+ };
+ }
+ macro_rules! test_atomic_int_amo_sub_word {
+ ($int_type:ident) => {
+ paste::paste! {
+ #[allow(
+ clippy::alloc_instead_of_core,
+ clippy::std_instead_of_alloc,
+ clippy::std_instead_of_core,
+ clippy::undocumented_unsafe_blocks
+ )]
+ mod [<test_atomic_ $int_type _amo>] {
+ use super::*;
+ test_atomic_int_amo_sub_word!([<Atomic $int_type:camel>], $int_type);
+ }
+ }
+ };
+ ($atomic_type:ty, $int_type:ident) => {
+ use crate::tests::helper::*;
+ ::quickcheck::quickcheck! {
+ fn quickcheck_fetch_and(x: $int_type, y: $int_type) -> bool {
+ for &order in &test_helper::SWAP_ORDERINGS {
+ for base in [0, !0] {
+ let mut arr = Align16([
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ ]);
+ let a_idx = fastrand::usize(3..=6);
+ arr.0[a_idx] = <$atomic_type>::new(x);
+ let a = &arr.0[a_idx];
+ assert_eq!(a.fetch_and(y, order), x);
+ assert_eq!(a.load(Ordering::Relaxed), x & y);
+ for i in 0..a_idx {
+ assert_eq!(arr.0[i].load(Ordering::Relaxed), base, "invalid value written");
+ }
+ for i in a_idx + 1..arr.0.len() {
+ assert_eq!(arr.0[i].load(Ordering::Relaxed), base, "invalid value written");
+ }
+ arr.0[a_idx] = <$atomic_type>::new(y);
+ let a = &arr.0[a_idx];
+ assert_eq!(a.fetch_and(x, order), y);
+ assert_eq!(a.load(Ordering::Relaxed), y & x);
+ for i in 0..a_idx {
+ assert_eq!(arr.0[i].load(Ordering::Relaxed), base, "invalid value written");
+ }
+ for i in a_idx + 1..arr.0.len() {
+ assert_eq!(arr.0[i].load(Ordering::Relaxed), base, "invalid value written");
+ }
+ }
+ }
+ true
+ }
+ fn quickcheck_fetch_or(x: $int_type, y: $int_type) -> bool {
+ for &order in &test_helper::SWAP_ORDERINGS {
+ for base in [0, !0] {
+ let mut arr = Align16([
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ ]);
+ let a_idx = fastrand::usize(3..=6);
+ arr.0[a_idx] = <$atomic_type>::new(x);
+ let a = &arr.0[a_idx];
+ assert_eq!(a.fetch_or(y, order), x);
+ assert_eq!(a.load(Ordering::Relaxed), x | y);
+ for i in 0..a_idx {
+ assert_eq!(arr.0[i].load(Ordering::Relaxed), base, "invalid value written");
+ }
+ for i in a_idx + 1..arr.0.len() {
+ assert_eq!(arr.0[i].load(Ordering::Relaxed), base, "invalid value written");
+ }
+ arr.0[a_idx] = <$atomic_type>::new(y);
+ let a = &arr.0[a_idx];
+ assert_eq!(a.fetch_or(x, order), y);
+ assert_eq!(a.load(Ordering::Relaxed), y | x);
+ for i in 0..a_idx {
+ assert_eq!(arr.0[i].load(Ordering::Relaxed), base, "invalid value written");
+ }
+ for i in a_idx + 1..arr.0.len() {
+ assert_eq!(arr.0[i].load(Ordering::Relaxed), base, "invalid value written");
+ }
+ }
+ }
+ true
+ }
+ fn quickcheck_fetch_xor(x: $int_type, y: $int_type) -> bool {
+ for &order in &test_helper::SWAP_ORDERINGS {
+ for base in [0, !0] {
+ let mut arr = Align16([
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ ]);
+ let a_idx = fastrand::usize(3..=6);
+ arr.0[a_idx] = <$atomic_type>::new(x);
+ let a = &arr.0[a_idx];
+ assert_eq!(a.fetch_xor(y, order), x);
+ assert_eq!(a.load(Ordering::Relaxed), x ^ y);
+ for i in 0..a_idx {
+ assert_eq!(arr.0[i].load(Ordering::Relaxed), base, "invalid value written");
+ }
+ for i in a_idx + 1..arr.0.len() {
+ assert_eq!(arr.0[i].load(Ordering::Relaxed), base, "invalid value written");
+ }
+ arr.0[a_idx] = <$atomic_type>::new(y);
+ let a = &arr.0[a_idx];
+ assert_eq!(a.fetch_xor(x, order), y);
+ assert_eq!(a.load(Ordering::Relaxed), y ^ x);
+ for i in 0..a_idx {
+ assert_eq!(arr.0[i].load(Ordering::Relaxed), base, "invalid value written");
+ }
+ for i in a_idx + 1..arr.0.len() {
+ assert_eq!(arr.0[i].load(Ordering::Relaxed), base, "invalid value written");
+ }
+ }
+ }
+ true
+ }
+ fn quickcheck_fetch_not(x: $int_type) -> bool {
+ for &order in &test_helper::SWAP_ORDERINGS {
+ for base in [0, !0] {
+ let mut arr = Align16([
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ <$atomic_type>::new(base),
+ ]);
+ let a_idx = fastrand::usize(3..=6);
+ arr.0[a_idx] = <$atomic_type>::new(x);
+ let a = &arr.0[a_idx];
+ assert_eq!(a.fetch_not(order), x);
+ assert_eq!(a.load(Ordering::Relaxed), !x);
+ assert_eq!(a.fetch_not(order), !x);
+ assert_eq!(a.load(Ordering::Relaxed), x);
+ for i in 0..a_idx {
+ assert_eq!(arr.0[i].load(Ordering::Relaxed), base, "invalid value written");
+ }
+ for i in a_idx + 1..arr.0.len() {
+ assert_eq!(arr.0[i].load(Ordering::Relaxed), base, "invalid value written");
+ }
+ }
+ }
+ true
+ }
+ }
+ };
+ }
+ test_atomic_int_amo_sub_word!(i8);
+ test_atomic_int_amo_sub_word!(u8);
+ test_atomic_int_amo_sub_word!(i16);
+ test_atomic_int_amo_sub_word!(u16);
+ test_atomic_int_amo!(i32);
+ test_atomic_int_amo!(u32);
+ #[cfg(target_arch = "riscv64")]
+ test_atomic_int_amo!(i64);
+ #[cfg(target_arch = "riscv64")]
+ test_atomic_int_amo!(u64);
+ test_atomic_int_amo!(isize);
+ test_atomic_int_amo!(usize);
}
diff --git a/vendor/portable-atomic/src/imp/x86.rs b/vendor/portable-atomic/src/imp/x86.rs
index 82afee10b..7caa20301 100644
--- a/vendor/portable-atomic/src/imp/x86.rs
+++ b/vendor/portable-atomic/src/imp/x86.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
// Atomic operations implementation on x86/x86_64.
//
// This module provides atomic operations not supported by LLVM or optimizes
@@ -6,12 +8,13 @@
// Note: On Miri and ThreadSanitizer which do not support inline assembly, we don't use
// this module and use CAS loop instead.
//
+// Refs:
+// - x86 and amd64 instruction reference https://www.felixcloutier.com/x86
+//
// Generated asm:
-// - x86_64 https://godbolt.org/z/8fve4YP1G
+// - x86_64 https://godbolt.org/z/d17eTs5Ec
-#[cfg(not(portable_atomic_no_asm))]
-use core::arch::asm;
-use core::sync::atomic::Ordering;
+use core::{arch::asm, sync::atomic::Ordering};
use super::core_atomic::{
AtomicI16, AtomicI32, AtomicI64, AtomicI8, AtomicIsize, AtomicU16, AtomicU32, AtomicU64,
@@ -32,7 +35,7 @@ macro_rules! ptr_modifier {
}
macro_rules! atomic_int {
- ($atomic_type:ident, $int_type:ident, $ptr_size:tt) => {
+ ($atomic_type:ident, $ptr_size:tt) => {
impl $atomic_type {
#[inline]
pub(crate) fn not(&self, _order: Ordering) {
@@ -71,24 +74,24 @@ macro_rules! atomic_int {
};
}
-atomic_int!(AtomicI8, i8, "byte");
-atomic_int!(AtomicU8, u8, "byte");
-atomic_int!(AtomicI16, i16, "word");
-atomic_int!(AtomicU16, u16, "word");
-atomic_int!(AtomicI32, i32, "dword");
-atomic_int!(AtomicU32, u32, "dword");
+atomic_int!(AtomicI8, "byte");
+atomic_int!(AtomicU8, "byte");
+atomic_int!(AtomicI16, "word");
+atomic_int!(AtomicU16, "word");
+atomic_int!(AtomicI32, "dword");
+atomic_int!(AtomicU32, "dword");
#[cfg(target_arch = "x86_64")]
-atomic_int!(AtomicI64, i64, "qword");
+atomic_int!(AtomicI64, "qword");
#[cfg(target_arch = "x86_64")]
-atomic_int!(AtomicU64, u64, "qword");
+atomic_int!(AtomicU64, "qword");
#[cfg(target_pointer_width = "32")]
-atomic_int!(AtomicIsize, isize, "dword");
+atomic_int!(AtomicIsize, "dword");
#[cfg(target_pointer_width = "32")]
-atomic_int!(AtomicUsize, usize, "dword");
+atomic_int!(AtomicUsize, "dword");
#[cfg(target_pointer_width = "64")]
-atomic_int!(AtomicIsize, isize, "qword");
+atomic_int!(AtomicIsize, "qword");
#[cfg(target_pointer_width = "64")]
-atomic_int!(AtomicUsize, usize, "qword");
+atomic_int!(AtomicUsize, "qword");
#[cfg(target_arch = "x86")]
impl AtomicI64 {
@@ -116,11 +119,9 @@ impl AtomicU64 {
macro_rules! atomic_bit_opts {
($atomic_type:ident, $int_type:ident, $val_modifier:tt, $ptr_size:tt) => {
// LLVM 14 and older don't support generating `lock bt{s,r,c}`.
- // https://godbolt.org/z/G1TMKza97
// LLVM 15 only supports generating `lock bt{s,r,c}` for immediate bit offsets.
- // https://godbolt.org/z/dzzhr81z6
- // LLVM 16 can generate `lock bt{s,r,c}` for both immediate and register bit offsets.
- // https://godbolt.org/z/7YTvsorn1
+ // LLVM 16+ can generate `lock bt{s,r,c}` for both immediate and register bit offsets.
+ // https://godbolt.org/z/TGhr5z4ds
// So, use fetch_* based implementations on LLVM 16+, otherwise use asm based implementations.
#[cfg(portable_atomic_llvm_16)]
impl_default_bit_opts!($atomic_type, $int_type);
@@ -138,18 +139,18 @@ macro_rules! atomic_bit_opts {
//
// https://www.felixcloutier.com/x86/bts
unsafe {
- let out: u8;
+ let r: u8;
// atomic RMW is always SeqCst.
asm!(
concat!("lock bts ", $ptr_size, " ptr [{dst", ptr_modifier!(), "}], {bit", $val_modifier, "}"),
- "setb {out}",
+ "setb {r}",
dst = in(reg) dst,
bit = in(reg) (bit & (Self::BITS - 1)) as $int_type,
- out = out(reg_byte) out,
+ r = out(reg_byte) r,
// Do not use `preserves_flags` because BTS modifies the CF flag.
options(nostack),
);
- out != 0
+ r != 0
}
}
#[inline]
@@ -162,18 +163,18 @@ macro_rules! atomic_bit_opts {
//
// https://www.felixcloutier.com/x86/btr
unsafe {
- let out: u8;
+ let r: u8;
// atomic RMW is always SeqCst.
asm!(
concat!("lock btr ", $ptr_size, " ptr [{dst", ptr_modifier!(), "}], {bit", $val_modifier, "}"),
- "setb {out}",
+ "setb {r}",
dst = in(reg) dst,
bit = in(reg) (bit & (Self::BITS - 1)) as $int_type,
- out = out(reg_byte) out,
+ r = out(reg_byte) r,
// Do not use `preserves_flags` because BTR modifies the CF flag.
options(nostack),
);
- out != 0
+ r != 0
}
}
#[inline]
@@ -186,18 +187,18 @@ macro_rules! atomic_bit_opts {
//
// https://www.felixcloutier.com/x86/btc
unsafe {
- let out: u8;
+ let r: u8;
// atomic RMW is always SeqCst.
asm!(
concat!("lock btc ", $ptr_size, " ptr [{dst", ptr_modifier!(), "}], {bit", $val_modifier, "}"),
- "setb {out}",
+ "setb {r}",
dst = in(reg) dst,
bit = in(reg) (bit & (Self::BITS - 1)) as $int_type,
- out = out(reg_byte) out,
+ r = out(reg_byte) r,
// Do not use `preserves_flags` because BTC modifies the CF flag.
options(nostack),
);
- out != 0
+ r != 0
}
}
}
diff --git a/vendor/portable-atomic/src/lib.rs b/vendor/portable-atomic/src/lib.rs
index 4be988e8b..21d743d71 100644
--- a/vendor/portable-atomic/src/lib.rs
+++ b/vendor/portable-atomic/src/lib.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
/*!
<!-- tidy:crate-doc:start -->
Portable atomic types including support for 128-bit atomics, atomic float, etc.
@@ -8,7 +10,7 @@ Portable atomic types including support for 128-bit atomics, atomic float, etc.
- Provide atomic load/store for targets where atomic is not available at all in the standard library. (RISC-V without A-extension, MSP430, AVR)
- Provide atomic CAS for targets where atomic CAS is not available in the standard library. (thumbv6m, pre-v6 ARM, RISC-V without A-extension, MSP430, AVR, Xtensa, etc.) (always enabled for MSP430 and AVR, [optional](#optional-features-critical-section) otherwise)
- Provide stable equivalents of the standard library's atomic types' unstable APIs, such as [`AtomicPtr::fetch_*`](https://github.com/rust-lang/rust/issues/99108), [`AtomicBool::fetch_not`](https://github.com/rust-lang/rust/issues/98485).
-- Make features that require newer compilers, such as [`fetch_{max,min}`](https://doc.rust-lang.org/std/sync/atomic/struct.AtomicUsize.html#method.fetch_max), [`fetch_update`](https://doc.rust-lang.org/std/sync/atomic/struct.AtomicUsize.html#method.fetch_update), [`as_ptr`](https://doc.rust-lang.org/std/sync/atomic/struct.AtomicUsize.html#method.as_ptr), and [stronger CAS failure ordering](https://github.com/rust-lang/rust/pull/98383) available on Rust 1.34+.
+- Make features that require newer compilers, such as [`fetch_{max,min}`](https://doc.rust-lang.org/std/sync/atomic/struct.AtomicUsize.html#method.fetch_max), [`fetch_update`](https://doc.rust-lang.org/std/sync/atomic/struct.AtomicUsize.html#method.fetch_update), [`as_ptr`](https://doc.rust-lang.org/std/sync/atomic/struct.AtomicUsize.html#method.as_ptr), [`from_ptr`](https://doc.rust-lang.org/std/sync/atomic/struct.AtomicUsize.html#method.from_ptr) and [stronger CAS failure ordering](https://github.com/rust-lang/rust/pull/98383) available on Rust 1.34+.
- Provide workaround for bugs in the standard library's atomic-related APIs, such as [rust-lang/rust#100650], `fence`/`compiler_fence` on MSP430 that cause LLVM error, etc.
<!-- TODO:
@@ -162,7 +164,7 @@ RUSTFLAGS="--cfg portable_atomic_no_outline_atomics" cargo ...
If dynamic dispatching by run-time CPU feature detection is enabled, it allows maintaining support for older CPUs while using features that are not supported on older CPUs, such as CMPXCHG16B (x86_64) and FEAT_LSE (aarch64).
Note:
- - Dynamic detection is currently only enabled in Rust 1.61+ for aarch64, in Rust 1.59+ (AVX) or 1.69+ (CMPXCHG16B) for x86_64, nightly only for powerpc64 (disabled by default), otherwise it works the same as when this cfg is set.
+ - Dynamic detection is currently only enabled in Rust 1.59+ for aarch64, in Rust 1.59+ (AVX) or 1.69+ (CMPXCHG16B) for x86_64, nightly only for powerpc64 (disabled by default), otherwise it works the same as when this cfg is set.
- If the required target features are enabled at compile-time, the atomic operations are inlined.
- This is compatible with no-std (as with all features except `std`).
- On some targets, run-time detection is disabled by default mainly for compatibility with older versions of operating systems or incomplete build environments, and can be enabled by `--cfg portable_atomic_outline_atomics`. (When both cfg are enabled, `*_no_*` cfg is preferred.)
@@ -194,33 +196,33 @@ RUSTFLAGS="--cfg portable_atomic_no_outline_atomics" cargo ...
)
))]
#![warn(
- improper_ctypes,
- missing_debug_implementations,
- missing_docs,
rust_2018_idioms,
single_use_lifetimes,
- unreachable_pub
-)]
-#![cfg_attr(not(portable_atomic_no_unsafe_op_in_unsafe_fn), warn(unsafe_op_in_unsafe_fn))] // unsafe_op_in_unsafe_fn requires Rust 1.52
-#![cfg_attr(portable_atomic_no_unsafe_op_in_unsafe_fn, allow(unused_unsafe))]
-#![warn(
+ unreachable_pub,
clippy::pedantic,
- // lints for public library
+ // Lints that may help when writing public library.
+ missing_debug_implementations,
+ missing_docs,
clippy::alloc_instead_of_core,
clippy::exhaustive_enums,
clippy::exhaustive_structs,
+ clippy::impl_trait_in_params,
+ clippy::missing_inline_in_public_items,
clippy::std_instead_of_alloc,
clippy::std_instead_of_core,
- // lints that help writing unsafe code
+ // Lints that may help when writing unsafe code.
+ improper_ctypes,
+ // improper_ctypes_definitions, // requires Rust 1.46
+ // unsafe_op_in_unsafe_fn, // set conditionally since it requires Rust 1.52
clippy::as_ptr_cast_mut,
clippy::default_union_representation,
+ clippy::inline_asm_x86_att_syntax,
clippy::trailing_empty_array,
clippy::transmute_undefined_repr,
clippy::undocumented_unsafe_blocks,
- // misc
- clippy::inline_asm_x86_att_syntax,
- clippy::missing_inline_in_public_items,
)]
+#![cfg_attr(not(portable_atomic_no_unsafe_op_in_unsafe_fn), warn(unsafe_op_in_unsafe_fn))] // unsafe_op_in_unsafe_fn requires Rust 1.52
+#![cfg_attr(portable_atomic_no_unsafe_op_in_unsafe_fn, allow(unused_unsafe))]
#![allow(
clippy::cast_lossless,
clippy::doc_markdown,
@@ -246,8 +248,8 @@ RUSTFLAGS="--cfg portable_atomic_no_outline_atomics" cargo ...
target_arch = "avr",
target_arch = "msp430",
all(target_arch = "xtensa", portable_atomic_unsafe_assume_single_core),
- all(portable_atomic_unstable_asm_experimental_arch, target_arch = "powerpc64"),
- all(portable_atomic_unstable_asm_experimental_arch, target_arch = "s390x"),
+ all(target_arch = "powerpc64", portable_atomic_unstable_asm_experimental_arch),
+ all(target_arch = "s390x", portable_atomic_unstable_asm_experimental_arch),
),
),
feature(asm_experimental_arch)
@@ -256,22 +258,13 @@ RUSTFLAGS="--cfg portable_atomic_no_outline_atomics" cargo ...
// These features are already stabilized or have already been removed from compilers,
// and can safely be enabled for old nightly as long as version detection works.
// - cfg(target_has_atomic)
-// - #[target_feature(enable = "lse")] on AArch64
// - #[target_feature(enable = "cmpxchg16b")] on x86_64
// - asm! on ARM, AArch64, RISC-V, x86_64
// - llvm_asm! on AVR (tier 3) and MSP430 (tier 3)
-// - #[instruction_set] on non-Linux pre-v6 ARM (tier 3)
+// - #[instruction_set] on non-Linux/Android pre-v6 ARM (tier 3)
#![cfg_attr(portable_atomic_unstable_cfg_target_has_atomic, feature(cfg_target_has_atomic))]
#![cfg_attr(
all(
- target_arch = "aarch64",
- portable_atomic_unstable_aarch64_target_feature,
- not(portable_atomic_no_outline_atomics),
- ),
- feature(aarch64_target_feature)
-)]
-#![cfg_attr(
- all(
target_arch = "x86_64",
portable_atomic_unstable_cmpxchg16b_target_feature,
not(portable_atomic_no_outline_atomics),
@@ -284,13 +277,10 @@ RUSTFLAGS="--cfg portable_atomic_no_outline_atomics" cargo ...
all(
portable_atomic_unstable_asm,
any(
- all(
- any(target_arch = "arm", target_arch = "riscv32", target_arch = "riscv64"),
- not(target_has_atomic = "ptr"),
- ),
- all(target_arch = "arm", not(target_has_atomic = "64")),
target_arch = "aarch64",
- target_arch = "x86",
+ target_arch = "arm",
+ target_arch = "riscv32",
+ target_arch = "riscv64",
target_arch = "x86_64",
),
),
@@ -302,9 +292,9 @@ RUSTFLAGS="--cfg portable_atomic_no_outline_atomics" cargo ...
)]
#![cfg_attr(
all(
+ target_arch = "arm",
portable_atomic_unstable_isa_attribute,
any(test, portable_atomic_unsafe_assume_single_core),
- target_arch = "arm",
not(any(target_feature = "v6", portable_atomic_target_feature = "v6")),
not(target_has_atomic = "ptr"),
),
@@ -320,19 +310,28 @@ RUSTFLAGS="--cfg portable_atomic_no_outline_atomics" cargo ...
),
feature(core_intrinsics)
)]
-// This feature will be unnecessary once stdarch submodule in rust-lang/rust is
-// updated to include https://github.com/rust-lang/stdarch/pull/1358.
+// This feature is only enabled for old nightly because cmpxchg16b_intrinsic has been stabilized.
#![cfg_attr(
- all(target_arch = "x86_64", any(miri, portable_atomic_sanitize_thread)),
+ all(
+ target_arch = "x86_64",
+ portable_atomic_unstable_cmpxchg16b_intrinsic,
+ any(miri, portable_atomic_sanitize_thread),
+ ),
feature(stdsimd)
)]
// docs.rs only
#![cfg_attr(docsrs, feature(doc_cfg))]
#![cfg_attr(
all(
- target_arch = "mips",
portable_atomic_no_atomic_load_store,
- not(feature = "critical-section"),
+ not(any(
+ target_arch = "avr",
+ target_arch = "bpf",
+ target_arch = "msp430",
+ target_arch = "riscv32",
+ target_arch = "riscv64",
+ feature = "critical-section",
+ )),
),
allow(unused_imports, unused_macros)
)]
@@ -407,6 +406,9 @@ compile_error!("cfg(portable_atomic_disable_fiq) does not compatible with this t
#[cfg(portable_atomic_s_mode)]
#[cfg(not(any(target_arch = "riscv32", target_arch = "riscv64")))]
compile_error!("cfg(portable_atomic_s_mode) does not compatible with this target");
+#[cfg(portable_atomic_force_amo)]
+#[cfg(not(any(target_arch = "riscv32", target_arch = "riscv64")))]
+compile_error!("cfg(portable_atomic_force_amo) does not compatible with this target");
#[cfg(portable_atomic_disable_fiq)]
#[cfg(not(portable_atomic_unsafe_assume_single_core))]
@@ -418,6 +420,11 @@ compile_error!(
compile_error!(
"cfg(portable_atomic_s_mode) may only be used together with cfg(portable_atomic_unsafe_assume_single_core)"
);
+#[cfg(portable_atomic_force_amo)]
+#[cfg(not(portable_atomic_unsafe_assume_single_core))]
+compile_error!(
+ "cfg(portable_atomic_force_amo) may only be used together with cfg(portable_atomic_unsafe_assume_single_core)"
+);
#[cfg(all(portable_atomic_unsafe_assume_single_core, feature = "critical-section"))]
compile_error!(
@@ -526,7 +533,7 @@ cfg_has_atomic_8! {
cfg_has_atomic_cas! {
// See https://github.com/rust-lang/rust/pull/114034 for details.
// https://github.com/rust-lang/rust/blob/9339f446a5302cd5041d3f3b5e59761f36699167/library/core/src/sync/atomic.rs#L134
-// https://godbolt.org/z/EvPTfPh44
+// https://godbolt.org/z/5W85abT58
#[cfg(portable_atomic_no_cfg_target_has_atomic)]
const EMULATE_ATOMIC_BOOL: bool = cfg!(all(
not(portable_atomic_no_atomic_cas),
@@ -600,6 +607,39 @@ impl AtomicBool {
Self { v: core::cell::UnsafeCell::new(v as u8) }
}
+ /// Creates a new `AtomicBool` from a pointer.
+ ///
+ /// # Safety
+ ///
+ /// * `ptr` must be aligned to `align_of::<AtomicBool>()` (note that on some platforms this can
+ /// be bigger than `align_of::<bool>()`).
+ /// * `ptr` must be [valid] for both reads and writes for the whole lifetime `'a`.
+ /// * If this atomic type is [lock-free](Self::is_lock_free), non-atomic accesses to the value
+ /// behind `ptr` must have a happens-before relationship with atomic accesses via the returned
+ /// value (or vice-versa).
+ /// * In other words, time periods where the value is accessed atomically may not overlap
+ /// with periods where the value is accessed non-atomically.
+ /// * This requirement is trivially satisfied if `ptr` is never used non-atomically for the
+ /// duration of lifetime `'a`. Most use cases should be able to follow this guideline.
+ /// * This requirement is also trivially satisfied if all accesses (atomic or not) are done
+ /// from the same thread.
+ /// * If this atomic type is *not* lock-free:
+ /// * Any accesses to the value behind `ptr` must have a happens-before relationship
+ /// with accesses via the returned value (or vice-versa).
+ /// * Any concurrent accesses to the value behind `ptr` for the duration of lifetime `'a` must
+ /// be compatible with operations performed by this atomic type.
+ /// * This method must not be used to create overlapping or mixed-size atomic accesses, as
+ /// these are not supported by the memory model.
+ ///
+ /// [valid]: core::ptr#safety
+ #[inline]
+ #[must_use]
+ pub unsafe fn from_ptr<'a>(ptr: *mut bool) -> &'a Self {
+ #[allow(clippy::cast_ptr_alignment)]
+ // SAFETY: guaranteed by the caller
+ unsafe { &*(ptr as *mut Self) }
+ }
+
/// Returns `true` if operations on values of this type are lock-free.
///
/// If the compiler or the platform doesn't support the necessary
@@ -662,9 +702,8 @@ impl AtomicBool {
unsafe { &mut *(self.v.get() as *mut bool) }
}
- // TODO: Add from_mut/get_mut_slice/from_mut_slice/from_ptr once it is stable on std atomic types.
+ // TODO: Add from_mut/get_mut_slice/from_mut_slice once it is stable on std atomic types.
// https://github.com/rust-lang/rust/issues/76314
- // https://github.com/rust-lang/rust/issues/108652
/// Consumes the atomic and returns the contained value.
///
@@ -1425,6 +1464,39 @@ impl<T> AtomicPtr<T> {
Self { inner: imp::AtomicPtr::new(p) }
}
+ /// Creates a new `AtomicPtr` from a pointer.
+ ///
+ /// # Safety
+ ///
+ /// * `ptr` must be aligned to `align_of::<AtomicPtr<T>>()` (note that on some platforms this
+ /// can be bigger than `align_of::<*mut T>()`).
+ /// * `ptr` must be [valid] for both reads and writes for the whole lifetime `'a`.
+ /// * If this atomic type is [lock-free](Self::is_lock_free), non-atomic accesses to the value
+ /// behind `ptr` must have a happens-before relationship with atomic accesses via the returned
+ /// value (or vice-versa).
+ /// * In other words, time periods where the value is accessed atomically may not overlap
+ /// with periods where the value is accessed non-atomically.
+ /// * This requirement is trivially satisfied if `ptr` is never used non-atomically for the
+ /// duration of lifetime `'a`. Most use cases should be able to follow this guideline.
+ /// * This requirement is also trivially satisfied if all accesses (atomic or not) are done
+ /// from the same thread.
+ /// * If this atomic type is *not* lock-free:
+ /// * Any accesses to the value behind `ptr` must have a happens-before relationship
+ /// with accesses via the returned value (or vice-versa).
+ /// * Any concurrent accesses to the value behind `ptr` for the duration of lifetime `'a` must
+ /// be compatible with operations performed by this atomic type.
+ /// * This method must not be used to create overlapping or mixed-size atomic accesses, as
+ /// these are not supported by the memory model.
+ ///
+ /// [valid]: core::ptr#safety
+ #[inline]
+ #[must_use]
+ pub unsafe fn from_ptr<'a>(ptr: *mut *mut T) -> &'a Self {
+ #[allow(clippy::cast_ptr_alignment)]
+ // SAFETY: guaranteed by the caller
+ unsafe { &*(ptr as *mut Self) }
+ }
+
/// Returns `true` if operations on values of this type are lock-free.
///
/// If the compiler or the platform doesn't support the necessary
@@ -1487,9 +1559,8 @@ impl<T> AtomicPtr<T> {
self.inner.get_mut()
}
- // TODO: Add from_mut/get_mut_slice/from_mut_slice/from_ptr once it is stable on std atomic types.
+ // TODO: Add from_mut/get_mut_slice/from_mut_slice once it is stable on std atomic types.
// https://github.com/rust-lang/rust/issues/76314
- // https://github.com/rust-lang/rust/issues/108652
/// Consumes the atomic and returns the contained value.
///
@@ -2160,7 +2231,7 @@ impl<T> AtomicPtr<T> {
#[cfg(miri)]
{
let mask = 1_usize.wrapping_shl(bit);
- strict::addr(self.fetch_or(mask, order)) & mask != 0
+ self.fetch_or(mask, order) as usize & mask != 0
}
#[cfg(not(miri))]
{
@@ -2205,7 +2276,7 @@ impl<T> AtomicPtr<T> {
#[cfg(miri)]
{
let mask = 1_usize.wrapping_shl(bit);
- strict::addr(self.fetch_and(!mask, order)) & mask != 0
+ self.fetch_and(!mask, order) as usize & mask != 0
}
#[cfg(not(miri))]
{
@@ -2250,7 +2321,7 @@ impl<T> AtomicPtr<T> {
#[cfg(miri)]
{
let mask = 1_usize.wrapping_shl(bit);
- strict::addr(self.fetch_xor(mask, order)) & mask != 0
+ self.fetch_xor(mask, order) as usize & mask != 0
}
#[cfg(not(miri))]
{
@@ -2380,6 +2451,42 @@ let atomic_forty_two = ", stringify!($atomic_type), "::new(42);
}
doc_comment! {
+ concat!("Creates a new reference to an atomic integer from a pointer.
+
+# Safety
+
+* `ptr` must be aligned to `align_of::<", stringify!($atomic_type), ">()` (note that on some platforms this
+ can be bigger than `align_of::<", stringify!($int_type), ">()`).
+* `ptr` must be [valid] for both reads and writes for the whole lifetime `'a`.
+* If this atomic type is [lock-free](Self::is_lock_free), non-atomic accesses to the value
+ behind `ptr` must have a happens-before relationship with atomic accesses via
+ the returned value (or vice-versa).
+ * In other words, time periods where the value is accessed atomically may not
+ overlap with periods where the value is accessed non-atomically.
+ * This requirement is trivially satisfied if `ptr` is never used non-atomically
+ for the duration of lifetime `'a`. Most use cases should be able to follow
+ this guideline.
+ * This requirement is also trivially satisfied if all accesses (atomic or not) are
+ done from the same thread.
+* If this atomic type is *not* lock-free:
+ * Any accesses to the value behind `ptr` must have a happens-before relationship
+ with accesses via the returned value (or vice-versa).
+ * Any concurrent accesses to the value behind `ptr` for the duration of lifetime `'a` must
+ be compatible with operations performed by this atomic type.
+* This method must not be used to create overlapping or mixed-size atomic
+ accesses, as these are not supported by the memory model.
+
+[valid]: core::ptr#safety"),
+ #[inline]
+ #[must_use]
+ pub unsafe fn from_ptr<'a>(ptr: *mut $int_type) -> &'a Self {
+ #[allow(clippy::cast_ptr_alignment)]
+ // SAFETY: guaranteed by the caller
+ unsafe { &*(ptr as *mut Self) }
+ }
+ }
+
+ doc_comment! {
concat!("Returns `true` if operations on values of this type are lock-free.
If the compiler or the platform doesn't support the necessary
@@ -2445,9 +2552,8 @@ assert_eq!(some_var.load(Ordering::SeqCst), 5);
}
}
- // TODO: Add from_mut/get_mut_slice/from_mut_slice/from_ptr once it is stable on std atomic types.
+ // TODO: Add from_mut/get_mut_slice/from_mut_slice once it is stable on std atomic types.
// https://github.com/rust-lang/rust/issues/76314
- // https://github.com/rust-lang/rust/issues/108652
doc_comment! {
concat!("Consumes the atomic and returns the contained value.
@@ -3443,6 +3549,42 @@ This type has the same in-memory representation as the underlying floating point
Self { inner: imp::float::$atomic_type::new(v) }
}
+ doc_comment! {
+ concat!("Creates a new reference to an atomic float from a pointer.
+
+# Safety
+
+* `ptr` must be aligned to `align_of::<", stringify!($atomic_type), ">()` (note that on some platforms this
+ can be bigger than `align_of::<", stringify!($float_type), ">()`).
+* `ptr` must be [valid] for both reads and writes for the whole lifetime `'a`.
+* If this atomic type is [lock-free](Self::is_lock_free), non-atomic accesses to the value
+ behind `ptr` must have a happens-before relationship with atomic accesses via
+ the returned value (or vice-versa).
+ * In other words, time periods where the value is accessed atomically may not
+ overlap with periods where the value is accessed non-atomically.
+ * This requirement is trivially satisfied if `ptr` is never used non-atomically
+ for the duration of lifetime `'a`. Most use cases should be able to follow
+ this guideline.
+ * This requirement is also trivially satisfied if all accesses (atomic or not) are
+ done from the same thread.
+* If this atomic type is *not* lock-free:
+ * Any accesses to the value behind `ptr` must have a happens-before relationship
+ with accesses via the returned value (or vice-versa).
+ * Any concurrent accesses to the value behind `ptr` for the duration of lifetime `'a` must
+ be compatible with operations performed by this atomic type.
+* This method must not be used to create overlapping or mixed-size atomic
+ accesses, as these are not supported by the memory model.
+
+[valid]: core::ptr#safety"),
+ #[inline]
+ #[must_use]
+ pub unsafe fn from_ptr<'a>(ptr: *mut $float_type) -> &'a Self {
+ #[allow(clippy::cast_ptr_alignment)]
+ // SAFETY: guaranteed by the caller
+ unsafe { &*(ptr as *mut Self) }
+ }
+ }
+
/// Returns `true` if operations on values of this type are lock-free.
///
/// If the compiler or the platform doesn't support the necessary
@@ -3477,7 +3619,7 @@ This type has the same in-memory representation as the underlying floating point
self.inner.get_mut()
}
- // TODO: Add from_mut once it is stable on std atomic types.
+ // TODO: Add from_mut/get_mut_slice/from_mut_slice once it is stable on std atomic types.
// https://github.com/rust-lang/rust/issues/76314
/// Consumes the atomic and returns the contained value.
@@ -3752,7 +3894,7 @@ This type has the same in-memory representation as the underlying floating point
#[cfg(not(portable_atomic_no_const_raw_ptr_deref))]
doc_comment! {
- concat!("Raw transmutation to `", stringify!($atomic_int_type), "`.
+ concat!("Raw transmutation to `&", stringify!($atomic_int_type), "`.
See [`", stringify!($float_type) ,"::from_bits`] for some discussion of the
portability of this operation (there are almost no issues).
@@ -3765,7 +3907,7 @@ This is `const fn` on Rust 1.58+."),
}
#[cfg(portable_atomic_no_const_raw_ptr_deref)]
doc_comment! {
- concat!("Raw transmutation to `", stringify!($atomic_int_type), "`.
+ concat!("Raw transmutation to `&", stringify!($atomic_int_type), "`.
See [`", stringify!($float_type) ,"::from_bits`] for some discussion of the
portability of this operation (there are almost no issues).
diff --git a/vendor/portable-atomic/src/tests/helper.rs b/vendor/portable-atomic/src/tests/helper.rs
index 432b7bebf..ea87e84a2 100644
--- a/vendor/portable-atomic/src/tests/helper.rs
+++ b/vendor/portable-atomic/src/tests/helper.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
#![allow(unused_macros)]
use core::sync::atomic::Ordering;
@@ -1401,12 +1403,24 @@ macro_rules! __test_atomic_ptr {
macro_rules! __test_atomic_int_load_store_pub {
($atomic_type:ty, $int_type:ident) => {
__test_atomic_pub_common!($atomic_type, $int_type);
+ use std::{boxed::Box, mem};
#[test]
fn impls() {
let a = <$atomic_type>::default();
let b = <$atomic_type>::from(0);
assert_eq!(a.load(Ordering::SeqCst), b.load(Ordering::SeqCst));
assert_eq!(std::format!("{:?}", a), std::format!("{:?}", a.load(Ordering::SeqCst)));
+
+ unsafe {
+ let ptr: *mut Align16<$int_type> = Box::into_raw(Box::new(Align16(0)));
+ assert!(ptr as usize % mem::align_of::<$atomic_type>() == 0);
+ {
+ let a = <$atomic_type>::from_ptr(ptr.cast::<$int_type>());
+ *a.as_ptr() = 1;
+ }
+ assert_eq!((*ptr).0, 1);
+ drop(Box::from_raw(ptr));
+ }
}
};
}
@@ -1460,6 +1474,7 @@ macro_rules! __test_atomic_int_pub {
macro_rules! __test_atomic_float_pub {
($atomic_type:ty, $float_type:ident) => {
__test_atomic_pub_common!($atomic_type, $float_type);
+ use std::{boxed::Box, mem};
#[test]
fn fetch_update() {
let a = <$atomic_type>::new(7.0);
@@ -1478,12 +1493,24 @@ macro_rules! __test_atomic_float_pub {
let b = <$atomic_type>::from(0.0);
assert_eq!(a.load(Ordering::SeqCst), b.load(Ordering::SeqCst));
assert_eq!(std::format!("{:?}", a), std::format!("{:?}", a.load(Ordering::SeqCst)));
+
+ unsafe {
+ let ptr: *mut Align16<$float_type> = Box::into_raw(Box::new(Align16(0.0)));
+ assert!(ptr as usize % mem::align_of::<$atomic_type>() == 0);
+ {
+ let a = <$atomic_type>::from_ptr(ptr.cast::<$float_type>());
+ *a.as_ptr() = 1.0;
+ }
+ assert_eq!((*ptr).0, 1.0);
+ drop(Box::from_raw(ptr));
+ }
}
};
}
macro_rules! __test_atomic_bool_pub {
($atomic_type:ty) => {
__test_atomic_pub_common!($atomic_type, bool);
+ use std::{boxed::Box, mem};
#[test]
fn fetch_nand() {
let a = <$atomic_type>::new(true);
@@ -1548,6 +1575,17 @@ macro_rules! __test_atomic_bool_pub {
let b = <$atomic_type>::from(false);
assert_eq!(a.load(Ordering::SeqCst), b.load(Ordering::SeqCst));
assert_eq!(std::format!("{:?}", a), std::format!("{:?}", a.load(Ordering::SeqCst)));
+
+ unsafe {
+ let ptr: *mut bool = Box::into_raw(Box::new(false));
+ assert!(ptr as usize % mem::align_of::<$atomic_type>() == 0);
+ {
+ let a = <$atomic_type>::from_ptr(ptr);
+ *a.as_ptr() = true;
+ }
+ assert_eq!((*ptr), true);
+ drop(Box::from_raw(ptr));
+ }
}
};
}
@@ -1555,6 +1593,7 @@ macro_rules! __test_atomic_ptr_pub {
($atomic_type:ty) => {
__test_atomic_pub_common!($atomic_type, *mut u8);
use sptr::Strict;
+ use std::{boxed::Box, mem};
#[test]
fn fetch_update() {
let a = <$atomic_type>::new(ptr::null_mut());
@@ -1576,6 +1615,17 @@ macro_rules! __test_atomic_ptr_pub {
assert_eq!(a.load(Ordering::SeqCst), b.load(Ordering::SeqCst));
assert_eq!(std::format!("{:?}", a), std::format!("{:?}", a.load(Ordering::SeqCst)));
assert_eq!(std::format!("{:p}", a), std::format!("{:p}", a.load(Ordering::SeqCst)));
+
+ unsafe {
+ let ptr: *mut Align16<*mut u8> = Box::into_raw(Box::new(Align16(ptr::null_mut())));
+ assert!(ptr as usize % mem::align_of::<$atomic_type>() == 0);
+ {
+ let a = <$atomic_type>::from_ptr(ptr.cast::<*mut u8>());
+ *a.as_ptr() = ptr::null_mut::<u8>().wrapping_add(1);
+ }
+ assert_eq!((*ptr).0, ptr::null_mut::<u8>().wrapping_add(1));
+ drop(Box::from_raw(ptr));
+ }
}
// https://github.com/rust-lang/rust/blob/1.70.0/library/core/tests/atomic.rs#L130-L213
#[test]
@@ -2088,6 +2138,9 @@ fn is_panic_abort() -> bool {
build_context::PANIC.contains("abort")
}
+#[repr(C, align(16))]
+pub(crate) struct Align16<T>(pub(crate) T);
+
// Test the cases that should not fail if the memory ordering is implemented correctly.
// This is still not exhaustive and only tests a few cases.
// This currently only supports 32-bit or more integers.
@@ -2105,7 +2158,7 @@ macro_rules! __stress_test_acquire_release {
paste::paste! {
// Currently, to make this test work well enough outside of Miri, tens of thousands
// of iterations are needed, but this test is slow in some environments.
- // So, ignore on non-Miri environments by default.
+ // So, ignore on non-Miri environments by default. See also catch_unwind_on_weak_memory_arch.
#[test]
#[cfg_attr(not(miri), ignore)]
fn [<load_ $load_order:lower _ $write _ $store_order:lower>]() {
@@ -2168,7 +2221,7 @@ macro_rules! __stress_test_seqcst {
// Currently, to make this test work well enough outside of Miri, tens of thousands
// of iterations are needed, but this test is very slow in some environments because
// it creates two threads for each iteration.
- // So, ignore on non-Miri environments by default.
+ // So, ignore on non-Miri environments by default. See also catch_unwind_on_non_seqcst_arch.
#[test]
#[cfg_attr(not(miri), ignore)]
fn [<load_ $load_order:lower _ $write _ $store_order:lower>]() {
diff --git a/vendor/portable-atomic/src/tests/mod.rs b/vendor/portable-atomic/src/tests/mod.rs
index 8bb4c4053..e34aacea3 100644
--- a/vendor/portable-atomic/src/tests/mod.rs
+++ b/vendor/portable-atomic/src/tests/mod.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
#![allow(
clippy::alloc_instead_of_core,
clippy::std_instead_of_alloc,
@@ -10,9 +12,6 @@
#[macro_use]
pub(crate) mod helper;
-#[cfg(feature = "serde")]
-mod serde;
-
#[allow(dead_code)]
#[path = "../../version.rs"]
mod version;
@@ -83,9 +82,9 @@ fn test_is_lock_free() {
{
if cfg!(all(
feature = "fallback",
- not(any(miri, portable_atomic_sanitize_thread)),
- any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
target_arch = "arm",
+ not(any(miri, portable_atomic_sanitize_thread)),
+ not(portable_atomic_no_asm),
any(target_os = "linux", target_os = "android"),
not(any(target_feature = "v6", portable_atomic_target_feature = "v6")),
not(portable_atomic_no_outline_atomics),
@@ -116,6 +115,10 @@ fn test_is_lock_free() {
} else if cfg!(any(
target_arch = "aarch64",
all(
+ target_arch = "x86_64",
+ any(target_feature = "cmpxchg16b", portable_atomic_target_feature = "cmpxchg16b"),
+ ),
+ all(
target_arch = "powerpc64",
portable_atomic_unstable_asm_experimental_arch,
any(
@@ -124,10 +127,6 @@ fn test_is_lock_free() {
),
),
all(target_arch = "s390x", portable_atomic_unstable_asm_experimental_arch),
- all(
- target_arch = "x86_64",
- any(target_feature = "cmpxchg16b", portable_atomic_target_feature = "cmpxchg16b"),
- ),
)) {
assert!(AtomicI128::is_always_lock_free());
assert!(AtomicI128::is_lock_free());
@@ -317,3 +316,43 @@ LLVM version: 15.0.3",
.unwrap();
assert_eq!(v, Version::stable(64, 15));
}
+
+#[cfg(feature = "serde")]
+#[test]
+fn test_serde() {
+ use test_helper::serde::{assert_tokens, DebugPartialEq, Token};
+
+ macro_rules! t {
+ ($atomic_type:ty, $value_type:ident, $token_type:ident) => {
+ std::eprint!("test_serde {} ... ", stringify!($value_type));
+ assert_tokens(&DebugPartialEq(<$atomic_type>::new($value_type::MAX)), &[
+ Token::$token_type($value_type::MAX as _),
+ ]);
+ assert_tokens(&DebugPartialEq(<$atomic_type>::new($value_type::MIN)), &[
+ Token::$token_type($value_type::MIN as _),
+ ]);
+ std::eprintln!("ok");
+ };
+ }
+
+ assert_tokens(&DebugPartialEq(AtomicBool::new(true)), &[Token::Bool(true)]);
+ assert_tokens(&DebugPartialEq(AtomicBool::new(false)), &[Token::Bool(false)]);
+ t!(AtomicIsize, isize, I64);
+ t!(AtomicUsize, usize, U64);
+ t!(AtomicI8, i8, I8);
+ t!(AtomicU8, u8, U8);
+ t!(AtomicI16, i16, I16);
+ t!(AtomicU16, u16, U16);
+ t!(AtomicI32, i32, I32);
+ t!(AtomicU32, u32, U32);
+ t!(AtomicI64, i64, I64);
+ t!(AtomicU64, u64, U64);
+ // TODO: serde_test doesn't support Token::{I128,U128}: https://github.com/serde-rs/test/pull/6
+ // t!(AtomicI128, i128, I128);
+ // t!(AtomicU128, u128, U128);
+ #[cfg(feature = "float")]
+ t!(AtomicF32, f32, F32);
+ #[cfg(feature = "float")]
+ #[cfg(not(target_arch = "mips"))] // LLVM 17 (nightly-2023-08-09) bug: assertion failed at core/src/num/diy_float.rs:78:9
+ t!(AtomicF64, f64, F64);
+}
diff --git a/vendor/portable-atomic/src/tests/serde.rs b/vendor/portable-atomic/src/tests/serde.rs
deleted file mode 100644
index 3bd1dffaf..000000000
--- a/vendor/portable-atomic/src/tests/serde.rs
+++ /dev/null
@@ -1,38 +0,0 @@
-use crate::*;
-
-use serde_test::{assert_tokens, Token};
-use test_helper::serde::DebugPartialEq;
-
-macro_rules! t {
- ($atomic_type:ty, $value_type:ident, $token_type:ident) => {
- assert_tokens(&DebugPartialEq(<$atomic_type>::new($value_type::MAX)), &[
- Token::$token_type($value_type::MAX as _),
- ]);
- assert_tokens(&DebugPartialEq(<$atomic_type>::new($value_type::MIN)), &[
- Token::$token_type($value_type::MIN as _),
- ]);
- };
-}
-
-#[test]
-fn test() {
- assert_tokens(&DebugPartialEq(AtomicBool::new(true)), &[Token::Bool(true)]);
- assert_tokens(&DebugPartialEq(AtomicBool::new(false)), &[Token::Bool(false)]);
- t!(AtomicIsize, isize, I64);
- t!(AtomicUsize, usize, U64);
- t!(AtomicI8, i8, I8);
- t!(AtomicU8, u8, U8);
- t!(AtomicI16, i16, I16);
- t!(AtomicU16, u16, U16);
- t!(AtomicI32, i32, I32);
- t!(AtomicU32, u32, U32);
- t!(AtomicI64, i64, I64);
- t!(AtomicU64, u64, U64);
- // TODO: serde_test doesn't support Token::{I128,U128}
- // t!(AtomicI128, i128, I128);
- // t!(AtomicU128, u128, U128);
- #[cfg(feature = "float")]
- t!(AtomicF32, f32, F32);
- #[cfg(feature = "float")]
- t!(AtomicF64, f64, F64);
-}
diff --git a/vendor/portable-atomic/src/utils.rs b/vendor/portable-atomic/src/utils.rs
index f3c8d846c..c70533cc0 100644
--- a/vendor/portable-atomic/src/utils.rs
+++ b/vendor/portable-atomic/src/utils.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
#![cfg_attr(not(all(test, feature = "float")), allow(dead_code, unused_macros))]
#[macro_use]
@@ -136,11 +138,11 @@ macro_rules! impl_debug_and_serde {
}
#[cfg(feature = "serde")]
#[cfg_attr(docsrs, doc(cfg(feature = "serde")))]
- impl serde::Serialize for $atomic_type {
+ impl serde::ser::Serialize for $atomic_type {
#[allow(clippy::missing_inline_in_public_items)] // serde doesn't use inline on std atomic's Serialize/Deserialize impl
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
- S: serde::Serializer,
+ S: serde::ser::Serializer,
{
// https://github.com/serde-rs/serde/blob/v1.0.152/serde/src/ser/impls.rs#L958-L959
self.load(Ordering::Relaxed).serialize(serializer)
@@ -148,20 +150,20 @@ macro_rules! impl_debug_and_serde {
}
#[cfg(feature = "serde")]
#[cfg_attr(docsrs, doc(cfg(feature = "serde")))]
- impl<'de> serde::Deserialize<'de> for $atomic_type {
+ impl<'de> serde::de::Deserialize<'de> for $atomic_type {
#[allow(clippy::missing_inline_in_public_items)] // serde doesn't use inline on std atomic's Serialize/Deserialize impl
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
- D: serde::Deserializer<'de>,
+ D: serde::de::Deserializer<'de>,
{
- serde::Deserialize::deserialize(deserializer).map(Self::new)
+ serde::de::Deserialize::deserialize(deserializer).map(Self::new)
}
}
};
}
// We do not provide `nand` because it cannot be optimized on neither x86 nor MSP430.
-// https://godbolt.org/z/x88voWGov
+// https://godbolt.org/z/7TzjKqYvE
macro_rules! impl_default_no_fetch_ops {
($atomic_type:ident, bool) => {
impl $atomic_type {
@@ -237,10 +239,23 @@ macro_rules! impl_default_bit_opts {
};
}
+// This just outputs the input as is, but can be used like an item-level block by using it with cfg.
+macro_rules! items {
+ ($($tt:tt)*) => {
+ $($tt)*
+ };
+}
+
#[cfg(not(all(
- target_arch = "mips",
portable_atomic_no_atomic_load_store,
- not(feature = "critical-section"),
+ not(any(
+ target_arch = "avr",
+ target_arch = "bpf",
+ target_arch = "msp430",
+ target_arch = "riscv32",
+ target_arch = "riscv64",
+ feature = "critical-section",
+ )),
)))]
#[macro_use]
mod atomic_ptr_macros {
@@ -253,9 +268,15 @@ mod atomic_ptr_macros {
}
}
#[cfg(all(
- target_arch = "mips",
portable_atomic_no_atomic_load_store,
- not(feature = "critical-section"),
+ not(any(
+ target_arch = "avr",
+ target_arch = "bpf",
+ target_arch = "msp430",
+ target_arch = "riscv32",
+ target_arch = "riscv64",
+ feature = "critical-section",
+ )),
))]
#[macro_use]
mod atomic_ptr_macros {
@@ -267,9 +288,14 @@ mod atomic_ptr_macros {
}
#[cfg(not(all(
- any(target_arch = "mips", target_arch = "bpf"),
portable_atomic_no_atomic_load_store,
- not(feature = "critical-section"),
+ not(any(
+ target_arch = "avr",
+ target_arch = "msp430",
+ target_arch = "riscv32",
+ target_arch = "riscv64",
+ feature = "critical-section",
+ )),
)))]
#[macro_use]
mod atomic_8_16_macros {
@@ -289,9 +315,14 @@ mod atomic_8_16_macros {
}
}
#[cfg(all(
- any(target_arch = "mips", target_arch = "bpf"),
portable_atomic_no_atomic_load_store,
- not(feature = "critical-section"),
+ not(any(
+ target_arch = "avr",
+ target_arch = "msp430",
+ target_arch = "riscv32",
+ target_arch = "riscv64",
+ feature = "critical-section",
+ )),
))]
#[macro_use]
mod atomic_8_16_macros {
@@ -310,9 +341,14 @@ mod atomic_8_16_macros {
#[cfg(all(
any(not(target_pointer_width = "16"), feature = "fallback"),
not(all(
- any(target_arch = "mips", target_arch = "bpf"),
portable_atomic_no_atomic_load_store,
- not(feature = "critical-section"),
+ not(any(
+ target_arch = "avr",
+ target_arch = "msp430",
+ target_arch = "riscv32",
+ target_arch = "riscv64",
+ feature = "critical-section",
+ )),
)),
))]
#[macro_use]
@@ -328,9 +364,14 @@ mod atomic_32_macros {
#[cfg(not(all(
any(not(target_pointer_width = "16"), feature = "fallback"),
not(all(
- any(target_arch = "mips", target_arch = "bpf"),
portable_atomic_no_atomic_load_store,
- not(feature = "critical-section"),
+ not(any(
+ target_arch = "avr",
+ target_arch = "msp430",
+ target_arch = "riscv32",
+ target_arch = "riscv64",
+ feature = "critical-section",
+ )),
)),
)))]
#[macro_use]
@@ -433,10 +474,11 @@ mod atomic_64_macros {
not(feature = "fallback"),
cfg(any(
all(
- any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
target_arch = "aarch64",
+ any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
),
all(
+ target_arch = "x86_64",
any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
any(
target_feature = "cmpxchg16b",
@@ -448,9 +490,9 @@ mod atomic_64_macros {
not(any(target_env = "sgx", miri)),
),
),
- target_arch = "x86_64",
),
all(
+ target_arch = "powerpc64",
portable_atomic_unstable_asm_experimental_arch,
any(
target_feature = "quadword-atomics",
@@ -464,18 +506,21 @@ mod atomic_64_macros {
target_os = "linux",
any(
target_env = "gnu",
- all(target_env = "musl", not(target_feature = "crt-static")),
+ all(
+ any(target_env = "musl", target_env = "ohos"),
+ not(target_feature = "crt-static"),
+ ),
portable_atomic_outline_atomics,
),
),
+ target_os = "android",
target_os = "freebsd",
),
not(any(miri, portable_atomic_sanitize_thread)),
),
),
- target_arch = "powerpc64",
),
- all(portable_atomic_unstable_asm_experimental_arch, target_arch = "s390x"),
+ all(target_arch = "s390x", portable_atomic_unstable_asm_experimental_arch),
))
)]
#[cfg_attr(
@@ -512,10 +557,11 @@ mod atomic_128_macros {
not(feature = "fallback"),
cfg(not(any(
all(
- any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
target_arch = "aarch64",
+ any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
),
all(
+ target_arch = "x86_64",
any(not(portable_atomic_no_asm), portable_atomic_unstable_asm),
any(
target_feature = "cmpxchg16b",
@@ -527,9 +573,9 @@ mod atomic_128_macros {
not(any(target_env = "sgx", miri)),
),
),
- target_arch = "x86_64",
),
all(
+ target_arch = "powerpc64",
portable_atomic_unstable_asm_experimental_arch,
any(
target_feature = "quadword-atomics",
@@ -543,18 +589,21 @@ mod atomic_128_macros {
target_os = "linux",
any(
target_env = "gnu",
- all(target_env = "musl", not(target_feature = "crt-static")),
+ all(
+ any(target_env = "musl", target_env = "ohos"),
+ not(target_feature = "crt-static"),
+ ),
portable_atomic_outline_atomics,
),
),
+ target_os = "android",
target_os = "freebsd",
),
not(any(miri, portable_atomic_sanitize_thread)),
),
),
- target_arch = "powerpc64",
),
- all(portable_atomic_unstable_asm_experimental_arch, target_arch = "s390x"),
+ all(target_arch = "s390x", portable_atomic_unstable_asm_experimental_arch),
)))
)]
#[cfg_attr(
@@ -702,26 +751,117 @@ pub(crate) fn upgrade_success_ordering(success: Ordering, failure: Ordering) ->
}
}
-/// Emulate strict provenance.
+/// Zero-extends the given 32-bit pointer to `MaybeUninit<u64>`.
+/// This is used for 64-bit architecture's 32-bit ABI (e.g., AArch64 ILP32 ABI).
+/// See ptr_reg! macro in src/gen/utils.rs for details.
+#[cfg(not(portable_atomic_no_asm_maybe_uninit))]
+#[cfg(target_pointer_width = "32")]
+#[allow(dead_code)]
+#[inline]
+pub(crate) fn zero_extend64_ptr(v: *mut ()) -> core::mem::MaybeUninit<u64> {
+ #[repr(C)]
+ struct ZeroExtended {
+ #[cfg(target_endian = "big")]
+ pad: *mut (),
+ v: *mut (),
+ #[cfg(target_endian = "little")]
+ pad: *mut (),
+ }
+ // SAFETY: we can safely transmute any 64-bit value to MaybeUninit<u64>.
+ unsafe { core::mem::transmute(ZeroExtended { v, pad: core::ptr::null_mut() }) }
+}
+
+#[allow(dead_code)]
+#[cfg(any(
+ target_arch = "aarch64",
+ target_arch = "powerpc64",
+ target_arch = "s390x",
+ target_arch = "x86_64",
+))]
+/// A 128-bit value represented as a pair of 64-bit values.
///
-/// Once strict_provenance is stable, migrate to the standard library's APIs.
-#[cfg(miri)]
-#[allow(
- clippy::cast_possible_wrap,
- clippy::transmutes_expressible_as_ptr_casts,
- clippy::useless_transmute
-)]
-pub(crate) mod strict {
- use core::mem;
+/// This type is `#[repr(C)]`, both fields have the same in-memory representation
+/// and are plain old data types, so access to the fields is always safe.
+#[derive(Clone, Copy)]
+#[repr(C)]
+pub(crate) union U128 {
+ pub(crate) whole: u128,
+ pub(crate) pair: Pair<u64>,
+}
+#[allow(dead_code)]
+#[cfg(target_arch = "arm")]
+/// A 64-bit value represented as a pair of 32-bit values.
+///
+/// This type is `#[repr(C)]`, both fields have the same in-memory representation
+/// and are plain old data types, so access to the fields is always safe.
+#[derive(Clone, Copy)]
+#[repr(C)]
+pub(crate) union U64 {
+ pub(crate) whole: u64,
+ pub(crate) pair: Pair<u32>,
+}
+#[allow(dead_code)]
+#[derive(Clone, Copy)]
+#[repr(C)]
+pub(crate) struct Pair<T: Copy> {
+ // little endian order
+ #[cfg(any(target_endian = "little", target_arch = "aarch64", target_arch = "arm"))]
+ pub(crate) lo: T,
+ pub(crate) hi: T,
+ // big endian order
+ #[cfg(not(any(target_endian = "little", target_arch = "aarch64", target_arch = "arm")))]
+ pub(crate) lo: T,
+}
- /// Get the address of a pointer.
- #[inline]
- #[must_use]
- pub(crate) fn addr<T>(ptr: *mut T) -> usize {
- // SAFETY: Every sized pointer is a valid integer for the time being.
- unsafe { mem::transmute(ptr) }
+#[allow(dead_code)]
+type MinWord = u32;
+#[cfg(target_arch = "riscv32")]
+type RegSize = u32;
+#[cfg(target_arch = "riscv64")]
+type RegSize = u64;
+// Adapted from https://github.com/taiki-e/atomic-maybe-uninit/blob/v0.3.0/src/utils.rs#L210.
+// Helper for implementing sub-word atomic operations using word-sized LL/SC loop or CAS loop.
+//
+// Refs: https://github.com/llvm/llvm-project/blob/llvmorg-17.0.0-rc2/llvm/lib/CodeGen/AtomicExpandPass.cpp#L699
+// (aligned_ptr, shift, mask)
+#[cfg(any(target_arch = "riscv32", target_arch = "riscv64"))]
+#[allow(dead_code)]
+#[inline]
+pub(crate) fn create_sub_word_mask_values<T>(ptr: *mut T) -> (*mut MinWord, RegSize, RegSize) {
+ use core::mem;
+ const SHIFT_MASK: bool = !cfg!(any(
+ target_arch = "riscv32",
+ target_arch = "riscv64",
+ target_arch = "loongarch64",
+ target_arch = "s390x",
+ ));
+ let ptr_mask = mem::size_of::<MinWord>() - 1;
+ let aligned_ptr = strict::with_addr(ptr, ptr as usize & !ptr_mask) as *mut MinWord;
+ let ptr_lsb = if SHIFT_MASK {
+ ptr as usize & ptr_mask
+ } else {
+ // We use 32-bit wrapping shift instructions in asm on these platforms.
+ ptr as usize
+ };
+ let shift = if cfg!(any(target_endian = "little", target_arch = "s390x")) {
+ ptr_lsb.wrapping_mul(8)
+ } else {
+ (ptr_lsb ^ (mem::size_of::<MinWord>() - mem::size_of::<T>())).wrapping_mul(8)
+ };
+ let mut mask: RegSize = (1 << (mem::size_of::<T>() * 8)) - 1; // !(0 as T) as RegSize
+ if SHIFT_MASK {
+ mask <<= shift;
}
+ (aligned_ptr, shift as RegSize, mask)
+}
+/// Emulate strict provenance.
+///
+/// Once strict_provenance is stable, migrate to the standard library's APIs.
+#[cfg(any(miri, target_arch = "riscv32", target_arch = "riscv64"))]
+#[allow(dead_code)]
+#[allow(clippy::cast_possible_wrap)]
+pub(crate) mod strict {
/// Replace the address portion of this pointer with a new address.
#[inline]
#[must_use]
@@ -731,7 +871,7 @@ pub(crate) mod strict {
// In the mean-time, this operation is defined to be "as if" it was
// a wrapping_offset, so we can emulate it as such. This should properly
// restore pointer provenance even under today's compiler.
- let self_addr = self::addr(ptr) as isize;
+ let self_addr = ptr as usize as isize;
let dest_addr = addr as isize;
let offset = dest_addr.wrapping_sub(self_addr);
@@ -743,6 +883,6 @@ pub(crate) mod strict {
#[inline]
#[must_use]
pub(crate) fn map_addr<T>(ptr: *mut T, f: impl FnOnce(usize) -> usize) -> *mut T {
- self::with_addr(ptr, f(addr(ptr)))
+ with_addr(ptr, f(ptr as usize))
}
}
diff --git a/vendor/portable-atomic/version.rs b/vendor/portable-atomic/version.rs
index 7ebbd38e1..383dadf01 100644
--- a/vendor/portable-atomic/version.rs
+++ b/vendor/portable-atomic/version.rs
@@ -1,3 +1,5 @@
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+
use std::{env, process::Command, str};
pub(crate) fn rustc_version() -> Option<Version> {
@@ -21,8 +23,8 @@ impl Version {
// the rustc version, we assume this is the current version.
// It is no problem if this is older than the actual latest stable.
// LLVM version is assumed to be the minimum external LLVM version:
- // https://github.com/rust-lang/rust/blob/1.71.0/src/bootstrap/llvm.rs#L529
- pub(crate) const LATEST: Self = Self::stable(71, 14);
+ // https://github.com/rust-lang/rust/blob/1.73.0/src/bootstrap/llvm.rs#L551
+ pub(crate) const LATEST: Self = Self::stable(73, 15);
pub(crate) const fn stable(rustc_minor: u32, llvm_major: u32) -> Self {
Self { minor: rustc_minor, nightly: false, commit_date: Date::UNKNOWN, llvm: llvm_major }
@@ -87,14 +89,14 @@ impl Version {
}
Some(Date::new(year, month, day))
})();
- Some(Version {
+ Some(Self {
minor,
nightly,
commit_date: commit_date.unwrap_or(Date::UNKNOWN),
llvm: llvm_major,
})
} else {
- Some(Version::stable(minor, llvm_major))
+ Some(Self::stable(minor, llvm_major))
}
}
}
diff --git a/vendor/proc-macro2/.cargo-checksum.json b/vendor/proc-macro2/.cargo-checksum.json
index 48358b6ac..97be42e1e 100644
--- a/vendor/proc-macro2/.cargo-checksum.json
+++ b/vendor/proc-macro2/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"a60eadb453036fc5f0313f0a7bf0c973609209b3c9de07a166581cd3615302fe","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"690809ae2c2aa28e479bc38a7c296924b9a4c8b6a689c7b62a4f33ae834ffca9","build.rs":"6b0b19a3af5248513b186b9c28c133f5af34a1d11122c0268c68e89724aa40fa","rust-toolchain.toml":"6bbb61302978c736b2da03e4fb40e3beab908f85d533ab46fd541e637b5f3e0f","src/detection.rs":"ed9a5f9a979ab01247d7a68eeb1afa3c13209334c5bfff0f9289cb07e5bb4e8b","src/extra.rs":"d378a9e799e5c49933b067cd38f5364d16a152ef337eef86ce42fdc86005ddf3","src/fallback.rs":"2d3be80c4df730c2400f9b4fa953640c78b7701ac09823c0a007bfe0343dbc1e","src/lib.rs":"fb19025556ba827c8cc5dc4fe4840137e1ffe51476ead385e2b99d7939a1d733","src/location.rs":"f55d2e61f1bb1af65e14ed04c9e91eb1ddbf8430e8c05f2048d1cd538d27368e","src/marker.rs":"43f5a18f5059f1a16507c047b3b7387afee7f25ac45ba4eb1621ca7fa733eb01","src/parse.rs":"08af3478a0d9e5252c2e7a4968cb2837d3b8d23606cf67c662eb9e008c9e1cee","src/rcvec.rs":"1c3c48c4f819927cc445ae15ca3bb06775feff2fd1cb21901ae4c40c7e6b4e82","src/wrapper.rs":"06624150b94f4fd9ada30b2c9ad6936ea695d05c2138ceb14f2304e757133d52","tests/comments.rs":"31115b3a56c83d93eef2fb4c9566bf4543e302560732986161b98aef504785ed","tests/features.rs":"a86deb8644992a4eb64d9fd493eff16f9cf9c5cb6ade3a634ce0c990cf87d559","tests/marker.rs":"3190ee07dae510251f360db701ce257030f94a479b6689c3a9ef804bd5d8d099","tests/test.rs":"b6190b112f4fc15916d6ee6c9b51bbeff825e5fc807b37fd21cc1b119dd76a24","tests/test_fmt.rs":"b7743b612af65f2c88cbe109d50a093db7aa7e87f9e37bf45b7bbaeb240aa020","tests/test_size.rs":"acf05963c1e62052d769d237b50844a2c59b4182b491231b099a4f74e5456ab0"},"package":"18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"} \ No newline at end of file
+{"files":{"Cargo.toml":"3315c2de7940b42cace82f4ad91222e29fea708b2c624480d268e8ed2c18915f","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"c609b6865476d6c35879784e9155367a97a0da496aa5c3c61488440a20f59883","build.rs":"6b0b19a3af5248513b186b9c28c133f5af34a1d11122c0268c68e89724aa40fa","rust-toolchain.toml":"6bbb61302978c736b2da03e4fb40e3beab908f85d533ab46fd541e637b5f3e0f","src/detection.rs":"ed9a5f9a979ab01247d7a68eeb1afa3c13209334c5bfff0f9289cb07e5bb4e8b","src/extra.rs":"d378a9e799e5c49933b067cd38f5364d16a152ef337eef86ce42fdc86005ddf3","src/fallback.rs":"2d3be80c4df730c2400f9b4fa953640c78b7701ac09823c0a007bfe0343dbc1e","src/lib.rs":"d783053e150d9aad91876f2cf525b9d3492e521e44bd6d6705dd3ecd0096f055","src/location.rs":"f55d2e61f1bb1af65e14ed04c9e91eb1ddbf8430e8c05f2048d1cd538d27368e","src/marker.rs":"43f5a18f5059f1a16507c047b3b7387afee7f25ac45ba4eb1621ca7fa733eb01","src/parse.rs":"6ceaad0a6375af9a202cf8df6ebe72e1bce9543b1f0db71ea03929ac02c3a8b8","src/rcvec.rs":"1c3c48c4f819927cc445ae15ca3bb06775feff2fd1cb21901ae4c40c7e6b4e82","src/wrapper.rs":"06624150b94f4fd9ada30b2c9ad6936ea695d05c2138ceb14f2304e757133d52","tests/comments.rs":"31115b3a56c83d93eef2fb4c9566bf4543e302560732986161b98aef504785ed","tests/features.rs":"a86deb8644992a4eb64d9fd493eff16f9cf9c5cb6ade3a634ce0c990cf87d559","tests/marker.rs":"3190ee07dae510251f360db701ce257030f94a479b6689c3a9ef804bd5d8d099","tests/test.rs":"b6190b112f4fc15916d6ee6c9b51bbeff825e5fc807b37fd21cc1b119dd76a24","tests/test_fmt.rs":"b7743b612af65f2c88cbe109d50a093db7aa7e87f9e37bf45b7bbaeb240aa020","tests/test_size.rs":"acf05963c1e62052d769d237b50844a2c59b4182b491231b099a4f74e5456ab0"},"package":"3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"} \ No newline at end of file
diff --git a/vendor/proc-macro2/Cargo.toml b/vendor/proc-macro2/Cargo.toml
index 7612f21af..8887c242b 100644
--- a/vendor/proc-macro2/Cargo.toml
+++ b/vendor/proc-macro2/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.56"
name = "proc-macro2"
-version = "1.0.66"
+version = "1.0.67"
authors = [
"David Tolnay <dtolnay@gmail.com>",
"Alex Crichton <alex@alexcrichton.com>",
diff --git a/vendor/proc-macro2/README.md b/vendor/proc-macro2/README.md
index e48dd47c8..3a29ce8b8 100644
--- a/vendor/proc-macro2/README.md
+++ b/vendor/proc-macro2/README.md
@@ -52,7 +52,7 @@ pub fn my_derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
If parsing with [Syn], you'll use [`parse_macro_input!`] instead to propagate
parse errors correctly back to the compiler when parsing fails.
-[`parse_macro_input!`]: https://docs.rs/syn/1.0/syn/macro.parse_macro_input.html
+[`parse_macro_input!`]: https://docs.rs/syn/2.0/syn/macro.parse_macro_input.html
## Unstable features
diff --git a/vendor/proc-macro2/src/lib.rs b/vendor/proc-macro2/src/lib.rs
index 910d47b3b..42bb2be46 100644
--- a/vendor/proc-macro2/src/lib.rs
+++ b/vendor/proc-macro2/src/lib.rs
@@ -55,7 +55,7 @@
//! If parsing with [Syn], you'll use [`parse_macro_input!`] instead to
//! propagate parse errors correctly back to the compiler when parsing fails.
//!
-//! [`parse_macro_input!`]: https://docs.rs/syn/1.0/syn/macro.parse_macro_input.html
+//! [`parse_macro_input!`]: https://docs.rs/syn/2.0/syn/macro.parse_macro_input.html
//!
//! # Unstable features
//!
@@ -86,7 +86,7 @@
//! a different thread.
// Proc-macro2 types in rustdoc of other crates get linked to here.
-#![doc(html_root_url = "https://docs.rs/proc-macro2/1.0.66")]
+#![doc(html_root_url = "https://docs.rs/proc-macro2/1.0.67")]
#![cfg_attr(any(proc_macro_span, super_unstable), feature(proc_macro_span))]
#![cfg_attr(super_unstable, feature(proc_macro_def_site))]
#![cfg_attr(doc_cfg, feature(doc_cfg))]
@@ -98,6 +98,7 @@
clippy::let_underscore_untyped,
clippy::manual_assert,
clippy::manual_range_contains,
+ clippy::missing_safety_doc,
clippy::must_use_candidate,
clippy::needless_doctest_main,
clippy::new_without_default,
@@ -852,7 +853,7 @@ impl Debug for Punct {
/// Rust keywords. Use `input.call(Ident::parse_any)` when parsing to match the
/// behaviour of `Ident::new`.
///
-/// [`Parse`]: https://docs.rs/syn/1.0/syn/parse/trait.Parse.html
+/// [`Parse`]: https://docs.rs/syn/2.0/syn/parse/trait.Parse.html
///
/// # Examples
///
@@ -943,7 +944,7 @@ impl Ident {
/// Panics if the input string is neither a keyword nor a legal variable
/// name. If you are not sure whether the string contains an identifier and
/// need to handle an error case, use
- /// <a href="https://docs.rs/syn/1.0/syn/fn.parse_str.html"><code
+ /// <a href="https://docs.rs/syn/2.0/syn/fn.parse_str.html"><code
/// style="padding-right:0;">syn::parse_str</code></a><code
/// style="padding-left:0;">::&lt;Ident&gt;</code>
/// rather than `Ident::new`.
diff --git a/vendor/proc-macro2/src/parse.rs b/vendor/proc-macro2/src/parse.rs
index c084e4cb3..1430d736e 100644
--- a/vendor/proc-macro2/src/parse.rs
+++ b/vendor/proc-macro2/src/parse.rs
@@ -161,6 +161,10 @@ fn word_break(input: Cursor) -> Result<Cursor, Reject> {
}
}
+// Rustc's representation of a macro expansion error in expression position or
+// type position.
+const ERROR: &str = "(/*ERROR*/)";
+
pub(crate) fn token_stream(mut input: Cursor) -> Result<TokenStream, LexError> {
let mut trees = TokenStreamBuilder::new();
let mut stack = Vec::new();
@@ -192,7 +196,7 @@ pub(crate) fn token_stream(mut input: Cursor) -> Result<TokenStream, LexError> {
};
if let Some(open_delimiter) = match first {
- b'(' => Some(Delimiter::Parenthesis),
+ b'(' if !input.starts_with(ERROR) => Some(Delimiter::Parenthesis),
b'[' => Some(Delimiter::Bracket),
b'{' => Some(Delimiter::Brace),
_ => None,
@@ -267,6 +271,10 @@ fn leaf_token(input: Cursor) -> PResult<TokenTree> {
Ok((input, TokenTree::Punct(p)))
} else if let Ok((input, i)) = ident(input) {
Ok((input, TokenTree::Ident(i)))
+ } else if input.starts_with(ERROR) {
+ let rest = input.advance(ERROR.len());
+ let repr = crate::Literal::_new_fallback(Literal::_new(ERROR.to_owned()));
+ Ok((rest, TokenTree::Literal(repr)))
} else {
Err(Reject)
}
diff --git a/vendor/proptest/.cargo-checksum.json b/vendor/proptest/.cargo-checksum.json
index 08d5d8e4f..2ac682243 100644
--- a/vendor/proptest/.cargo-checksum.json
+++ b/vendor/proptest/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"7723c4eb327261d2dd8b7b273e90a67b5144cf3ea44f3fc25e0c36ce55054bc9","Cargo.lock":"3cf7f4fd75ebc7332453be0ce9898546eae54329ead013ab8dffc1cdad85ec48","Cargo.toml":"149a9dd8517abf124d8dc54beff8afb4315bfe798e2683813e3dd9f31e5618fe","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"d8e0806926ce9f0a5030c382ecc0ffdf6de6fbea5c69a458435fd443fa7a5b92","README.md":"866e4fe1252e36bdf5bd5d0317d2d147764c15d7ae1cc6866209cb0b7e11c3c4","examples/config-defaults.rs":"312ee1c5f98ee858d0401a092e0a87b4c3231095f87a5dd4e6ba3288600ef596","examples/dateparser_v1.rs":"5f91b684ce2d46d865f1f1c0e642efb351e4469067104213871d0fcb1b5a369a","examples/dateparser_v2.rs":"d91d93a7ae5fd7e18c535847bcb3e783f1bc461e9797c8f0b21bc0cec5dd812c","examples/fib.rs":"4740e33bbfb420648a6e49468c178083a7f4c04c8c7512653fed3fff3332edb0","examples/tutorial-simplify-play.rs":"2d048a86334589389b26416fc27f6154b20e182e3766125ffabaeb491dd9295f","examples/tutorial-strategy-play.rs":"3242ba366e52e6d8c66155c9545af3b8863589979fbc6623dd97f532c8fb5285","proptest-regressions/arbitrary/_std/env.txt":"3450a5867e58f6a6c4e5d50e4dce30283e2bf6d5389f48bfa1d535f1269c6516","proptest-regressions/test_runner/rng.txt":"978d8519044a3c6056fa3c99edfd1ff9dee184ff1e74a2592830d54be3f22e81","src/arbitrary/_alloc/alloc.rs":"bbbaf75f67a055ec9ffbe025e991d9138f2dcd462b69165e53d57964edbc053d","src/arbitrary/_alloc/borrow.rs":"0a3026aedc686a76eab6fef37673b13d87701c2a5c2d763615fd3283f89c552f","src/arbitrary/_alloc/boxed.rs":"54b0279c9e5acbff5b4a47f96d75ecf39b5209153b5b07f28437e8a2175a8ad9","src/arbitrary/_alloc/char.rs":"cf37be08bce70b9c38bd24036157097692c9b92d540b104fdd99c8ae751399a9","src/arbitrary/_alloc/collections.rs":"57322f54bdcb89c63a93eefe9f72830ea3d87c87fd51c00a6e151f7292a1c39d","src/arbitrary/_alloc/hash.rs":"266966af450e184e3461cdd09b0052c2c9cbaed0bf7534981cef95a239dacaff","src/arbitrary/_alloc/mod.rs":"b49db65bd88506b2b35cbed65c3da3d15c140214342d7d2bef6c180a22e503d4","src/arbitrary/_alloc/ops.rs":"6aa1c3a18bb8eb256a37e8db6e4398e368c9113b7018ecdc833d88ea8cf33b2c","src/arbitrary/_alloc/rc.rs":"a83680953b444454655cf15f3078838c4c1af4376f9b8482f3bb0e0c01825d92","src/arbitrary/_alloc/str.rs":"19b3d9739894f4f8fd51df8aa0dc5b856ae9283ce46b246887cf082ccfdb68e9","src/arbitrary/_alloc/sync.rs":"c5f8ca04acbb07102993acb6c1b718343201f1f4c44f59f679b853d00f059340","src/arbitrary/_core/ascii.rs":"f408be8715725de9b276eab3dd06c8cbe3320b16718bf632ded1a39fc45e05cf","src/arbitrary/_core/cell.rs":"c90aacfca33293fdd1d346590ac08766de8e84ced2248d4e67345a6f241fa965","src/arbitrary/_core/cmp.rs":"ea0bb9b99d3064f8749a744aaa40380eea12b267bd23cae6057bcc83bf57e921","src/arbitrary/_core/convert.rs":"830e889cf24e64d68d81706e45a33aef93450ee8430062817e1d288eb2e8b318","src/arbitrary/_core/fmt.rs":"e09f679e873b25f1d42e05daa189c802b48d639d83635c79d380a481afde27ce","src/arbitrary/_core/iter.rs":"721dbe2f741c1b6375604e22e9322cca03f31a4fb470d7b33f84e29687a97028","src/arbitrary/_core/marker.rs":"ba1368ff79549a84293b61652af0bd531941f5eacc9845b753edf221585b4430","src/arbitrary/_core/mem.rs":"23754b24a09d5ebfd5465f2b6d5674c3739d4da347075b067ed722d431ac1f70","src/arbitrary/_core/mod.rs":"06460f0d6b94f9e416df2def04f802a3f83de648de06dae384ddfc81e84f8d4a","src/arbitrary/_core/non_zero.rs":"67091b5fdbf6624a0c8ce40cf6574e26539d620af413ed006eb76085061dbb3f","src/arbitrary/_core/num.rs":"0753a5ae6bf902036b5f6c063043bef1da940fc2ba5603235b900fa54b521cd1","src/arbitrary/_core/option.rs":"7a292712a67bbecac0c766854c8dffc5c8c0cf4cbbd85c43e5233029d4210769","src/arbitrary/_core/result.rs":"4fa76363a4ccb888eeccb1bb4b32a3d314c1c3596137829f0ec886263cb5702f","src/arbitrary/_std/env.rs":"625c594ec669d8199920badc3b76e2f43ec5383a4a0b007083772fb3b35cb138","src/arbitrary/_std/ffi.rs":"cfe50e4a027fa3c7e6ff7a744bbc7b91b2de1f837c1dfba31cdbf90f44407478","src/arbitrary/_std/fs.rs":"1a6d6ded0212686e7b136dd36052ba34d954079ca7e3fc1a6d6e631476ecc2f1","src/arbitrary/_std/io.rs":"344610d93aea9557bfe8d2ca1993e384465aea40d6b0816c4267593aa953fd2a","src/arbitrary/_std/mod.rs":"73845b1e2e31d6fe820143d427f48d9955f67f28ecd5344d9ca0c74928f6ddb7","src/arbitrary/_std/net.rs":"a6249487a7589385373ceb963f830037abdf465d5932c9ec806d85c218c3e16b","src/arbitrary/_std/panic.rs":"20380439a655610d5f5011cc6c16c7e7acfbb7d314a219746fd174f46ea1320f","src/arbitrary/_std/path.rs":"af8fd327ff6bc73686a7bf796694294c418607141dea991c063c4422da4ccbc2","src/arbitrary/_std/string.rs":"cd3031befb486a3410b01c70b4c58871358170aad35e86cd7d8709993f2bd9bc","src/arbitrary/_std/sync.rs":"c493847b5f5a3e10966beb423416c1b0dfd8c989c7a8cec99f53789b3aa03834","src/arbitrary/_std/thread.rs":"f004f74ea78b502b7e4b41919160d40b0d1820652ba664ec3a32a0bbaa5ad965","src/arbitrary/_std/time.rs":"ed622cdf756a1a6f7770c99b7b45cfbf7402db31f4dcf8473c3227ed8b8b54bc","src/arbitrary/arrays.rs":"0e78dde28fdad71327a2e08ec1d79c09526ef327f4abb59f6fea7073cf5f4679","src/arbitrary/functor.rs":"85aa44e04e1e6bef5beaa683180a9b4fe5dd670586d87be026ecf96e2d39b90a","src/arbitrary/macros.rs":"a3fe075811c1e711cb8ffef0557604f70df5e0a75d4110ed2f8516c4e324a24b","src/arbitrary/mod.rs":"6e1ccaa5c389411dc5a4501da785f42f4439bdd28295be573507346daeef6a00","src/arbitrary/primitives.rs":"59d9a899853559d3eff1954e6d4c84e8d6999e0a8798fc9b152ea10accccb760","src/arbitrary/sample.rs":"45280f054eb04f7142a7afcc565d77534a78e626a76ad056569251a05d61f831","src/arbitrary/traits.rs":"bf3ce2f950ebbf359b592c5e39f8fbca2302cb2f45b93b185ccc1d81308a7d5b","src/arbitrary/tuples.rs":"5b92e767a74f11b25a262d6e6f9e54d13ca9e389ea42f2b78631b069a854c116","src/array.rs":"9b34119b364682ab383e2ed56210e95073f6d1af3d90e3064c9b527a37d30998","src/bits.rs":"4eeee066d9aa0c4c1921991a61e56338a5db4a4e8deffb0c5746e856569a0ed6","src/bool.rs":"3e91477b0a5c29539380fdc1c065bfe5829099e3cfa7e50b1f8cf7857a01918b","src/char.rs":"c72bcd375f8e3d17ff1766baed1680cdd912902c697a04035c1e72ef35d2588b","src/collection.rs":"9dbb3530383dc8ce566cbc2cdc0198e442ac1c19368d074dce9eba523d137b84","src/file-preamble":"a4a75492b40e467fa8d1bcf050e685ea4de56c3a76095d756488c554d76a4986","src/lib.rs":"d6ac1e34347bb76e3d6cee472023fc461331928806cae35ea13f118ee7ad4816","src/macros.rs":"4353f46ed0a68d20bca16ee261e375dd398b3415759710ac60bdcd281401e2d2","src/num.rs":"4fc9bb305f3a026f8907beae86c693240eeed07fc1d8d01c7a25f2f19ef36d71","src/num/float_samplers.rs":"894b5cff2fa57c3081b3f09421c74520347dda8b3d2fccf7ca4978fb0076e3f9","src/option.rs":"d817de4d217368ac402a803e35db57c3c2c0da2d863ca4058b579cf4175763ac","src/prelude.rs":"5f20305aa03047afa44da2fd220d689bcf6935e45edc0d9a9ee0497b603917a6","src/product_frunk.rs":"e7c2afc66c8e045105c4828e36ffcd17e6cb9b12a40ef99c7631854dab6d03c0","src/product_tuple.rs":"bdd2b8dcf05bc46eb6f3f331fa66b2a85106f1591046d1c3dc622a9aac3dd9bc","src/regex-contrib/README.md":"add72e2a9a34d4e67d647613970cbf5affc1d987ebe90858a487f3ee6e4032ce","src/regex-contrib/crates_regex.rs":"7812e91c25a2aad48ba024bcbeb8b922ffc1cfa3113a33615885d72d8a2cae64","src/result.rs":"51042be31c9a2a63f46c99f027b7d21ae17331c3c1250735870f0cc5b50e7cdb","src/sample.rs":"e7064f622263fae7da23c16e55cd1d847ad0e46a718402bc0ec3e6e513cb1ae6","src/std_facade.rs":"fec624264d5a849e99131fde58ff0ac8cc99e4e2c9672f9c031bb7b9c7d3e95c","src/strategy/filter.rs":"06b59ed9186d5d1459e9b3d73c1a8d873079af45c3faba1feacbd1c296108cec","src/strategy/filter_map.rs":"2f8f3cc5409077036e1b3f91c5ec40332001ac0fde354e87f679d289a4f1e9d6","src/strategy/flatten.rs":"2e933564191e05d619f0c1669000b1ec2af74bed6719856edbf8c21cb10deceb","src/strategy/fuse.rs":"c9f1c388150686d6f89e37c5ec95c2ac2991708c1d11427ad0c55de9ad96f155","src/strategy/just.rs":"a1b34f10d44c46b93bf399f8aae443a50f96a97d6150691444acffe26956dd86","src/strategy/lazy.rs":"4822adec0f3b24b865242c2b25799e7bca45963314092557494efa53cafd6e87","src/strategy/map.rs":"4dbc65fdb2c3d40c9e944d0234d984ba018899d342ef3f561013a0548849b09e","src/strategy/mod.rs":"20762d1ad18ef5f5a86fd2d2eb7fe286930a297ea448afffc7f3a22c3c5ef2a3","src/strategy/recursive.rs":"7922681623105fb5d1cc08e889081fb793be778195a6d104dffeed11a4da6d4c","src/strategy/shuffle.rs":"9eacb43e73178b8c1422442a6dfae18c1a0613056a34311f0411266d5c5aab39","src/strategy/statics.rs":"36978b39a6990892916f6d0d6b5fa3de02f84747ea7540c4c548863f4561eae2","src/strategy/traits.rs":"e7ddf04aab1a4c50b996e1eb67348f786e707089f6178707317a535eaf573a72","src/strategy/unions.rs":"5cd758fe6ce5aa11dae90b61795df69322b6a3ec8d60183893425aae92869959","src/string.rs":"aa3214c1fc3d9824bf84397384989348015840458e5491ac3fe04071591d7119","src/sugar.rs":"8e59dbc4804d2ec23362041c54b34fd60dffc3350d28a4b8f28ee64f867c09ea","src/test_runner/config.rs":"96e0ea2609efb9556a16f7a637ba568b8c85ff5a32003acb49179cbb3e881626","src/test_runner/errors.rs":"3256836e74da7b52168c173f396d03aea913dce581ac7d0065fa9621021bb755","src/test_runner/failure_persistence/file.rs":"87690cd6cc66cad86eed69ea957061a6a3ca11b807d9a4a9fef5fdad59350080","src/test_runner/failure_persistence/map.rs":"b00bc6cc1650cc9fb432d201c19bf0ba1f5b6255b8c7f1e067a184531da345f9","src/test_runner/failure_persistence/mod.rs":"42393d664c6171ae712cc534adbb1c4448a9196fac4acd87aa55f70d276ce911","src/test_runner/failure_persistence/noop.rs":"fada8a1f66ade1983d5cfd839da2726ee72b1b1a39927b484590be65cacd2ab8","src/test_runner/mod.rs":"738e90f1556b9ce98924da0699dc5ada59a44816aed3ca5069099d52e8b70c36","src/test_runner/reason.rs":"f3b62a8175fd3b91e216b0f607a2b5a36808a77642eeac207774e193894d7bbb","src/test_runner/replay.rs":"de8c3310af00ab27920416386d0e65870a32d6ef8f2eed1cfb8b0f8079ba7fcc","src/test_runner/result_cache.rs":"da685cb01657d247b2d49bb9101e2b9cef3f2c51f1754735eef62170d92896a1","src/test_runner/rng.rs":"863b784b3812c6bb68e4cab27baea8a92fbc3becac09bdbe356f35f761a8f2b8","src/test_runner/runner.rs":"3df3b056e0d0476a8ee44418577824941778f32d561864e6184c57b03451ed69","src/tuple.rs":"378da5204c9e14277dc5b1af29b49e1feaf508f67dec1a0493614df47034868b","test-persistence-location/README.md":"83c3b124b9203f711b8a7ecfb126db96d66bbe73831288c9ee1fb030acfe44a9","test-persistence-location/run-tests.bat":"ba04781900565fd1cec389dd0f9a1c67dd2d0e23b06e63de2b53365e3985c78f","test-persistence-location/run-tests.sh":"03f05cf0409baabf39b0aca33d659e6385306eaccf036fe47e0155a97dd64afb"},"package":"4e35c06b98bf36aba164cc17cb25f7e232f5c4aeea73baa14b8a9f0d92dbfa65"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"017d709fc8f8d6a73bf07ffba74da7d30fbb84e1cdbbcd695c394f2b26b79684","Cargo.lock":"ec98a80dd5c216b48f11f10a8fc724ffde41917cc67fd944a2d6df042e92c3e8","Cargo.toml":"fb80a8dd4f4cf57829b8789bc74e13a543aff180d1137fa5b4060f1282b4dff2","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"d8e0806926ce9f0a5030c382ecc0ffdf6de6fbea5c69a458435fd443fa7a5b92","README.md":"509ec231fe75b094d75aab3e3be44058e91f5b07c4823f124d05c5b36d5238fc","examples/config-defaults.rs":"312ee1c5f98ee858d0401a092e0a87b4c3231095f87a5dd4e6ba3288600ef596","examples/dateparser_v1.rs":"5f91b684ce2d46d865f1f1c0e642efb351e4469067104213871d0fcb1b5a369a","examples/dateparser_v2.rs":"d91d93a7ae5fd7e18c535847bcb3e783f1bc461e9797c8f0b21bc0cec5dd812c","examples/fib.rs":"4740e33bbfb420648a6e49468c178083a7f4c04c8c7512653fed3fff3332edb0","examples/tutorial-simplify-play.rs":"2d048a86334589389b26416fc27f6154b20e182e3766125ffabaeb491dd9295f","examples/tutorial-strategy-play.rs":"3242ba366e52e6d8c66155c9545af3b8863589979fbc6623dd97f532c8fb5285","proptest-regressions/arbitrary/_std/env.txt":"3450a5867e58f6a6c4e5d50e4dce30283e2bf6d5389f48bfa1d535f1269c6516","proptest-regressions/test_runner/rng.txt":"978d8519044a3c6056fa3c99edfd1ff9dee184ff1e74a2592830d54be3f22e81","src/arbitrary/_alloc/alloc.rs":"bbbaf75f67a055ec9ffbe025e991d9138f2dcd462b69165e53d57964edbc053d","src/arbitrary/_alloc/borrow.rs":"0a3026aedc686a76eab6fef37673b13d87701c2a5c2d763615fd3283f89c552f","src/arbitrary/_alloc/boxed.rs":"54b0279c9e5acbff5b4a47f96d75ecf39b5209153b5b07f28437e8a2175a8ad9","src/arbitrary/_alloc/char.rs":"d2aa48c5db502958fc1ed1e172fc4759c0e747dd626b04816882c711631df817","src/arbitrary/_alloc/collections.rs":"57322f54bdcb89c63a93eefe9f72830ea3d87c87fd51c00a6e151f7292a1c39d","src/arbitrary/_alloc/hash.rs":"266966af450e184e3461cdd09b0052c2c9cbaed0bf7534981cef95a239dacaff","src/arbitrary/_alloc/mod.rs":"b49db65bd88506b2b35cbed65c3da3d15c140214342d7d2bef6c180a22e503d4","src/arbitrary/_alloc/ops.rs":"6aa1c3a18bb8eb256a37e8db6e4398e368c9113b7018ecdc833d88ea8cf33b2c","src/arbitrary/_alloc/rc.rs":"a83680953b444454655cf15f3078838c4c1af4376f9b8482f3bb0e0c01825d92","src/arbitrary/_alloc/str.rs":"19b3d9739894f4f8fd51df8aa0dc5b856ae9283ce46b246887cf082ccfdb68e9","src/arbitrary/_alloc/sync.rs":"c5f8ca04acbb07102993acb6c1b718343201f1f4c44f59f679b853d00f059340","src/arbitrary/_core/ascii.rs":"f408be8715725de9b276eab3dd06c8cbe3320b16718bf632ded1a39fc45e05cf","src/arbitrary/_core/cell.rs":"c90aacfca33293fdd1d346590ac08766de8e84ced2248d4e67345a6f241fa965","src/arbitrary/_core/cmp.rs":"ea0bb9b99d3064f8749a744aaa40380eea12b267bd23cae6057bcc83bf57e921","src/arbitrary/_core/convert.rs":"830e889cf24e64d68d81706e45a33aef93450ee8430062817e1d288eb2e8b318","src/arbitrary/_core/fmt.rs":"e09f679e873b25f1d42e05daa189c802b48d639d83635c79d380a481afde27ce","src/arbitrary/_core/iter.rs":"721dbe2f741c1b6375604e22e9322cca03f31a4fb470d7b33f84e29687a97028","src/arbitrary/_core/marker.rs":"ba1368ff79549a84293b61652af0bd531941f5eacc9845b753edf221585b4430","src/arbitrary/_core/mem.rs":"23754b24a09d5ebfd5465f2b6d5674c3739d4da347075b067ed722d431ac1f70","src/arbitrary/_core/mod.rs":"06460f0d6b94f9e416df2def04f802a3f83de648de06dae384ddfc81e84f8d4a","src/arbitrary/_core/non_zero.rs":"67091b5fdbf6624a0c8ce40cf6574e26539d620af413ed006eb76085061dbb3f","src/arbitrary/_core/num.rs":"0753a5ae6bf902036b5f6c063043bef1da940fc2ba5603235b900fa54b521cd1","src/arbitrary/_core/option.rs":"7a292712a67bbecac0c766854c8dffc5c8c0cf4cbbd85c43e5233029d4210769","src/arbitrary/_core/result.rs":"4fa76363a4ccb888eeccb1bb4b32a3d314c1c3596137829f0ec886263cb5702f","src/arbitrary/_std/env.rs":"625c594ec669d8199920badc3b76e2f43ec5383a4a0b007083772fb3b35cb138","src/arbitrary/_std/ffi.rs":"cfe50e4a027fa3c7e6ff7a744bbc7b91b2de1f837c1dfba31cdbf90f44407478","src/arbitrary/_std/fs.rs":"1a6d6ded0212686e7b136dd36052ba34d954079ca7e3fc1a6d6e631476ecc2f1","src/arbitrary/_std/io.rs":"344610d93aea9557bfe8d2ca1993e384465aea40d6b0816c4267593aa953fd2a","src/arbitrary/_std/mod.rs":"73845b1e2e31d6fe820143d427f48d9955f67f28ecd5344d9ca0c74928f6ddb7","src/arbitrary/_std/net.rs":"a6249487a7589385373ceb963f830037abdf465d5932c9ec806d85c218c3e16b","src/arbitrary/_std/panic.rs":"20380439a655610d5f5011cc6c16c7e7acfbb7d314a219746fd174f46ea1320f","src/arbitrary/_std/path.rs":"d6bec5f4a3899f93e1c6b8a5b1e45be95f3dd8e5ab375c5cfa31a9c2d0746b73","src/arbitrary/_std/string.rs":"cd3031befb486a3410b01c70b4c58871358170aad35e86cd7d8709993f2bd9bc","src/arbitrary/_std/sync.rs":"c493847b5f5a3e10966beb423416c1b0dfd8c989c7a8cec99f53789b3aa03834","src/arbitrary/_std/thread.rs":"f004f74ea78b502b7e4b41919160d40b0d1820652ba664ec3a32a0bbaa5ad965","src/arbitrary/_std/time.rs":"ed622cdf756a1a6f7770c99b7b45cfbf7402db31f4dcf8473c3227ed8b8b54bc","src/arbitrary/arrays.rs":"0e78dde28fdad71327a2e08ec1d79c09526ef327f4abb59f6fea7073cf5f4679","src/arbitrary/functor.rs":"85aa44e04e1e6bef5beaa683180a9b4fe5dd670586d87be026ecf96e2d39b90a","src/arbitrary/macros.rs":"a3fe075811c1e711cb8ffef0557604f70df5e0a75d4110ed2f8516c4e324a24b","src/arbitrary/mod.rs":"6e1ccaa5c389411dc5a4501da785f42f4439bdd28295be573507346daeef6a00","src/arbitrary/primitives.rs":"59d9a899853559d3eff1954e6d4c84e8d6999e0a8798fc9b152ea10accccb760","src/arbitrary/sample.rs":"45280f054eb04f7142a7afcc565d77534a78e626a76ad056569251a05d61f831","src/arbitrary/traits.rs":"bf3ce2f950ebbf359b592c5e39f8fbca2302cb2f45b93b185ccc1d81308a7d5b","src/arbitrary/tuples.rs":"5b92e767a74f11b25a262d6e6f9e54d13ca9e389ea42f2b78631b069a854c116","src/array.rs":"9b34119b364682ab383e2ed56210e95073f6d1af3d90e3064c9b527a37d30998","src/bits.rs":"939c6eccc6d97ed241dff44c8aeb747e1d51989aeb9d5fb0635f9458cd47c405","src/bool.rs":"3e91477b0a5c29539380fdc1c065bfe5829099e3cfa7e50b1f8cf7857a01918b","src/char.rs":"c72bcd375f8e3d17ff1766baed1680cdd912902c697a04035c1e72ef35d2588b","src/collection.rs":"9dbb3530383dc8ce566cbc2cdc0198e442ac1c19368d074dce9eba523d137b84","src/file-preamble":"a4a75492b40e467fa8d1bcf050e685ea4de56c3a76095d756488c554d76a4986","src/lib.rs":"7b60ea458965fb029bc2ba2cc2fc5be3b951ff937f5b089e4e1451004643b60a","src/macros.rs":"4353f46ed0a68d20bca16ee261e375dd398b3415759710ac60bdcd281401e2d2","src/num.rs":"01c6eb456fa376e3d805a64d09af32daf4d0c835fede3c669e8f1aae2b7c38b1","src/num/float_samplers.rs":"894b5cff2fa57c3081b3f09421c74520347dda8b3d2fccf7ca4978fb0076e3f9","src/option.rs":"d817de4d217368ac402a803e35db57c3c2c0da2d863ca4058b579cf4175763ac","src/path.rs":"f8714f139cfc48ac20bc67db1ddcb2284be400753317d1b220310218f189568d","src/prelude.rs":"5f20305aa03047afa44da2fd220d689bcf6935e45edc0d9a9ee0497b603917a6","src/product_frunk.rs":"e7c2afc66c8e045105c4828e36ffcd17e6cb9b12a40ef99c7631854dab6d03c0","src/product_tuple.rs":"bdd2b8dcf05bc46eb6f3f331fa66b2a85106f1591046d1c3dc622a9aac3dd9bc","src/regex-contrib/README.md":"add72e2a9a34d4e67d647613970cbf5affc1d987ebe90858a487f3ee6e4032ce","src/regex-contrib/crates_regex.rs":"7812e91c25a2aad48ba024bcbeb8b922ffc1cfa3113a33615885d72d8a2cae64","src/result.rs":"51042be31c9a2a63f46c99f027b7d21ae17331c3c1250735870f0cc5b50e7cdb","src/sample.rs":"c93f1f9c977c0fb0ffa9ff1158ef40abc320e4433eea8178efbf46f93bfc1e56","src/std_facade.rs":"fec624264d5a849e99131fde58ff0ac8cc99e4e2c9672f9c031bb7b9c7d3e95c","src/strategy/filter.rs":"06b59ed9186d5d1459e9b3d73c1a8d873079af45c3faba1feacbd1c296108cec","src/strategy/filter_map.rs":"2f8f3cc5409077036e1b3f91c5ec40332001ac0fde354e87f679d289a4f1e9d6","src/strategy/flatten.rs":"2e933564191e05d619f0c1669000b1ec2af74bed6719856edbf8c21cb10deceb","src/strategy/fuse.rs":"c9f1c388150686d6f89e37c5ec95c2ac2991708c1d11427ad0c55de9ad96f155","src/strategy/just.rs":"a1b34f10d44c46b93bf399f8aae443a50f96a97d6150691444acffe26956dd86","src/strategy/lazy.rs":"4822adec0f3b24b865242c2b25799e7bca45963314092557494efa53cafd6e87","src/strategy/map.rs":"4dbc65fdb2c3d40c9e944d0234d984ba018899d342ef3f561013a0548849b09e","src/strategy/mod.rs":"20762d1ad18ef5f5a86fd2d2eb7fe286930a297ea448afffc7f3a22c3c5ef2a3","src/strategy/recursive.rs":"7922681623105fb5d1cc08e889081fb793be778195a6d104dffeed11a4da6d4c","src/strategy/shuffle.rs":"9eacb43e73178b8c1422442a6dfae18c1a0613056a34311f0411266d5c5aab39","src/strategy/statics.rs":"36978b39a6990892916f6d0d6b5fa3de02f84747ea7540c4c548863f4561eae2","src/strategy/traits.rs":"e7ddf04aab1a4c50b996e1eb67348f786e707089f6178707317a535eaf573a72","src/strategy/unions.rs":"5cd758fe6ce5aa11dae90b61795df69322b6a3ec8d60183893425aae92869959","src/string.rs":"9df2ec63c1fa74fb0db56ffe028bd6e3605570a0640a2c4b77ca6b738ebfb128","src/sugar.rs":"7572878423c001f8fb9968ae0e7a89df9dde0028cd50a7cecf9b697e009e6e54","src/test_runner/config.rs":"dcef57dea06a07e84b95812fa1c752a36939742e47916377ef2aed4b4a53abf7","src/test_runner/errors.rs":"3256836e74da7b52168c173f396d03aea913dce581ac7d0065fa9621021bb755","src/test_runner/failure_persistence/file.rs":"a3d3bafc0efd09955889dbef8fc2933187e87fcb293a8818c4da8a618e74a75f","src/test_runner/failure_persistence/map.rs":"b00bc6cc1650cc9fb432d201c19bf0ba1f5b6255b8c7f1e067a184531da345f9","src/test_runner/failure_persistence/mod.rs":"42393d664c6171ae712cc534adbb1c4448a9196fac4acd87aa55f70d276ce911","src/test_runner/failure_persistence/noop.rs":"fada8a1f66ade1983d5cfd839da2726ee72b1b1a39927b484590be65cacd2ab8","src/test_runner/mod.rs":"738e90f1556b9ce98924da0699dc5ada59a44816aed3ca5069099d52e8b70c36","src/test_runner/reason.rs":"f3b62a8175fd3b91e216b0f607a2b5a36808a77642eeac207774e193894d7bbb","src/test_runner/replay.rs":"de8c3310af00ab27920416386d0e65870a32d6ef8f2eed1cfb8b0f8079ba7fcc","src/test_runner/result_cache.rs":"da685cb01657d247b2d49bb9101e2b9cef3f2c51f1754735eef62170d92896a1","src/test_runner/rng.rs":"4dbe8376acccb656f9481986ed4ee151602e216287e51608b67031f84948721e","src/test_runner/runner.rs":"2b8148bf2ec1e7e61206bdf551f69a56ab08ea4c70e0fb3b8ec0be12bfefbad4","src/tuple.rs":"378da5204c9e14277dc5b1af29b49e1feaf508f67dec1a0493614df47034868b","test-persistence-location/README.md":"83c3b124b9203f711b8a7ecfb126db96d66bbe73831288c9ee1fb030acfe44a9","test-persistence-location/run-tests.bat":"ba04781900565fd1cec389dd0f9a1c67dd2d0e23b06e63de2b53365e3985c78f","test-persistence-location/run-tests.sh":"03f05cf0409baabf39b0aca33d659e6385306eaccf036fe47e0155a97dd64afb"},"package":"7c003ac8c77cb07bb74f5f198bce836a689bcd5a42574612bf14d17bfd08c20e"} \ No newline at end of file
diff --git a/vendor/proptest/CHANGELOG.md b/vendor/proptest/CHANGELOG.md
index 5ee6cc266..0dca677d3 100644
--- a/vendor/proptest/CHANGELOG.md
+++ b/vendor/proptest/CHANGELOG.md
@@ -1,5 +1,38 @@
## Unreleased
+## 1.3.1
+
+## Other Notes
+
+- `bit-set` updated from 0.5.0 to 0.5.2 to ensure minimum compatible version with bit-vec 0.6
+
+## 1.3.0
+
+### Breaking Changes
+
+- The minimum supported Rust version has been increased to 1.64.0.
+
+### New Features
+
+- Adds Arbitrary impl for PathBuf
+- Permit use of (?-u) in byte-regex strategies, allowing non-utf-8 bytes to be generated
+
+### Book
+
+- Various small fixes -- typos, formatting
+- Removal of custom theme
+- Add book page for Tips and Best Practices
+
+### Other Notes
+
+- `regex-syntax` version 0.7 is now used.
+- Print a seed to stderr for a failed test even when a regressions file is already present.
+- Fixed a performance issue with `VarBitSet::saturated` that can slow down `VecStrategy`
+- Remove use of rust feature `core_intrinsics`
+- Remove no longer needed "break-dead-code" feature
+- Disable `clippy::arc_with_non_send_sync`
+- Remove dependency on `byteorder`
+
## 1.2.0
### Breaking Changes
@@ -97,7 +130,7 @@
### New Features
-- Enabling the `hardware-rng` optional depndency (disabled by default) allows
+- Enabling the `hardware-rng` optional dependency (disabled by default) allows
obtaining non-deterministic random seeds even in `no_std` environments
provided the architecture is x86 or AMD64.
@@ -173,7 +206,7 @@
## 0.9.3
-This is a minor release to correct some packaging errors. The licence files are
+This is a minor release to correct some packaging errors. The license files are
now included in the files published to crates.io, and some unneeded files are
now excluded.
diff --git a/vendor/proptest/Cargo.lock b/vendor/proptest/Cargo.lock
index f62736d08..451a86757 100644
--- a/vendor/proptest/Cargo.lock
+++ b/vendor/proptest/Cargo.lock
@@ -4,9 +4,9 @@ version = 3
[[package]]
name = "aho-corasick"
-version = "0.7.19"
+version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e"
+checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41"
dependencies = [
"memchr",
]
@@ -34,9 +34,9 @@ checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
[[package]]
name = "bit_field"
-version = "0.10.1"
+version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dcb6dd1c2376d2e096796e234a70e17e94cc2d5d54ff8ce42b28cef1d0d359a4"
+checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61"
[[package]]
name = "bitflags"
@@ -45,10 +45,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
-name = "byteorder"
-version = "1.4.3"
+name = "bitflags"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635"
+
+[[package]]
+name = "cc"
+version = "1.0.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
[[package]]
name = "cfg-if"
@@ -57,10 +63,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
+name = "errno"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a"
+dependencies = [
+ "errno-dragonfly",
+ "libc",
+ "windows-sys",
+]
+
+[[package]]
+name = "errno-dragonfly"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+dependencies = [
+ "cc",
+ "libc",
+]
+
+[[package]]
name = "fastrand"
-version = "1.8.0"
+version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499"
+checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
dependencies = [
"instant",
]
@@ -73,9 +100,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
[[package]]
name = "getrandom"
-version = "0.2.8"
+version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
+checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
dependencies = [
"cfg-if",
"libc",
@@ -83,6 +110,12 @@ dependencies = [
]
[[package]]
+name = "hermit-abi"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
+
+[[package]]
name = "instant"
version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -92,6 +125,17 @@ dependencies = [
]
[[package]]
+name = "io-lifetimes"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
+dependencies = [
+ "hermit-abi",
+ "libc",
+ "windows-sys",
+]
+
+[[package]]
name = "lazy_static"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -99,15 +143,21 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
-version = "0.2.137"
+version = "0.2.147"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89"
+checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
[[package]]
name = "libm"
-version = "0.2.6"
+version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb"
+checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4"
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
[[package]]
name = "memchr"
@@ -133,11 +183,11 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
[[package]]
name = "proptest"
-version = "1.2.0"
+version = "1.3.1"
dependencies = [
"bit-set",
- "bitflags",
- "byteorder",
+ "bit-vec",
+ "bitflags 2.4.0",
"lazy_static",
"num-traits",
"rand",
@@ -198,27 +248,39 @@ dependencies = [
[[package]]
name = "raw-cpuid"
-version = "10.6.0"
+version = "10.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a6823ea29436221176fe662da99998ad3b4db2c7f31e7b6f5fe43adccd6320bb"
+checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332"
dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
]
[[package]]
name = "redox_syscall"
-version = "0.2.16"
+version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
]
[[package]]
name = "regex"
-version = "1.7.0"
+version = "1.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a"
+checksum = "83d3daa6976cffb758ec878f108ba0e062a45b2d6ca3a2cca965338855476caf"
dependencies = [
"aho-corasick",
"memchr",
@@ -227,17 +289,22 @@ dependencies = [
[[package]]
name = "regex-syntax"
-version = "0.6.28"
+version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
+checksum = "2ab07dc67230e4a4718e70fd5c20055a4334b121f1f9db8fe63ef39ce9b8c846"
[[package]]
-name = "remove_dir_all"
-version = "0.5.3"
+name = "rustix"
+version = "0.37.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
+checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06"
dependencies = [
- "winapi",
+ "bitflags 1.3.2",
+ "errno",
+ "io-lifetimes",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys",
]
[[package]]
@@ -254,16 +321,16 @@ dependencies = [
[[package]]
name = "tempfile"
-version = "3.3.0"
+version = "3.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"
+checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6"
dependencies = [
+ "autocfg",
"cfg-if",
"fastrand",
- "libc",
"redox_syscall",
- "remove_dir_all",
- "winapi",
+ "rustix",
+ "windows-sys",
]
[[package]]
@@ -288,26 +355,70 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
-name = "winapi"
-version = "0.3.9"
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f"
dependencies = [
- "winapi-i686-pc-windows-gnu",
- "winapi-x86_64-pc-windows-gnu",
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
]
[[package]]
-name = "winapi-i686-pc-windows-gnu"
-version = "0.4.0"
+name = "windows_aarch64_gnullvm"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
[[package]]
-name = "winapi-x86_64-pc-windows-gnu"
-version = "0.4.0"
+name = "windows_x86_64_msvc"
+version = "0.48.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
[[package]]
name = "x86"
@@ -316,6 +427,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2781db97787217ad2a2845c396a5efe286f87467a5810836db6d74926e94a385"
dependencies = [
"bit_field",
- "bitflags",
+ "bitflags 1.3.2",
"raw-cpuid",
]
diff --git a/vendor/proptest/Cargo.toml b/vendor/proptest/Cargo.toml
index e90054914..ef4276c1d 100644
--- a/vendor/proptest/Cargo.toml
+++ b/vendor/proptest/Cargo.toml
@@ -11,9 +11,9 @@
[package]
edition = "2018"
-rust-version = "1.60"
+rust-version = "1.64"
name = "proptest"
-version = "1.2.0"
+version = "1.3.1"
authors = ["Jason Lingle"]
exclude = [
"/gen-*.sh",
@@ -33,7 +33,7 @@ keywords = [
"hypothesis",
]
categories = ["development-tools::testing"]
-license = "MIT/Apache-2.0"
+license = "MIT OR Apache-2.0"
repository = "https://github.com/proptest-rs/proptest"
[package.metadata.docs.rs]
@@ -44,15 +44,15 @@ rustdoc-args = [
]
[dependencies.bit-set]
-version = "0.5.0"
+version = "0.5.2"
optional = true
-[dependencies.bitflags]
-version = "1.0.1"
+[dependencies.bit-vec]
+version = "0.6.0"
+optional = true
-[dependencies.byteorder]
-version = "1.2.3"
-default-features = false
+[dependencies.bitflags]
+version = "2"
[dependencies.lazy_static]
version = "1.2"
@@ -76,7 +76,7 @@ default-features = false
version = "0.3"
[dependencies.regex-syntax]
-version = "0.6.0"
+version = "0.7"
optional = true
[dependencies.rusty-fork]
@@ -96,18 +96,20 @@ version = "0.52.0"
optional = true
[dev-dependencies.regex]
-version = "1.0"
+version = "1"
[features]
alloc = []
atomic64bit = []
-break-dead-code = []
+bit-set = [
+ "dep:bit-set",
+ "dep:bit-vec",
+]
default = [
"std",
"fork",
"timeout",
"bit-set",
- "break-dead-code",
]
default-code-coverage = [
"std",
@@ -123,7 +125,6 @@ fork = [
hardware-rng = ["x86"]
std = [
"rand/std",
- "byteorder/std",
"lazy_static",
"regex-syntax",
"num-traits/std",
diff --git a/vendor/proptest/README.md b/vendor/proptest/README.md
index 6e75df06b..ac42d0764 100644
--- a/vendor/proptest/README.md
+++ b/vendor/proptest/README.md
@@ -1,7 +1,6 @@
# Proptest
[![Build Status](https://github.com/proptest-rs/proptest/workflows/Rust/badge.svg?branch=master)](https://github.com/proptest-rs/proptest/actions)
-[![Build status](https://ci.appveyor.com/api/projects/status/ofe98xfthbx1m608/branch/master?svg=true)](https://ci.appveyor.com/project/AltSysrq/proptest/branch/master)
[![](https://img.shields.io/crates/v/proptest.svg)](https://crates.io/crates/proptest)
[![](https://img.shields.io/website/https/proptest-rs.github.io/proptest.svg)][book]
[![](https://docs.rs/proptest/badge.svg)][api-docs]
@@ -34,8 +33,8 @@ for a full list of substantial historical changes, breaking and otherwise.
### MSRV
-The current MSRV of this crate is 1.60.
-The MSRV is guaranteed to not exceeed `<current stable release> - 7`, though in practice it may be lower than this - your mileage may vary.
+The current MSRV of this crate is 1.64.
+The MSRV is guaranteed to not exceed `<current stable release> - 7`, though in practice it may be lower than this - your mileage may vary.
If we change this policy in a backwards incompatible way (e.g. changing it to `<current stable release> - 1`), this constitutes a breaking change, and would be a major version bump (e.g. 1.1 -> 2.0).
### What is property testing?
diff --git a/vendor/proptest/src/arbitrary/_alloc/char.rs b/vendor/proptest/src/arbitrary/_alloc/char.rs
index fab9dd824..58a261e41 100644
--- a/vendor/proptest/src/arbitrary/_alloc/char.rs
+++ b/vendor/proptest/src/arbitrary/_alloc/char.rs
@@ -43,7 +43,6 @@ impl_wrap_char!(ToLowercase, char::to_lowercase);
#[cfg(feature = "unstable")]
impl_wrap_char!(ToUppercase, char::to_uppercase);
-#[cfg(feature = "break-dead-code")]
arbitrary!(DecodeUtf16<<Vec<u16> as IntoIterator>::IntoIter>,
SMapped<Vec<u16>, Self>;
static_map(vec(any::<u16>(), ..VEC_MAX), decode_utf16)
@@ -75,7 +74,6 @@ mod test {
decode_utf16_error => DecodeUtf16Error
);
- #[cfg(feature = "break-dead-code")]
no_panic_test!(
decode_utf16 => DecodeUtf16<<Vec<u16> as IntoIterator>::IntoIter>
);
diff --git a/vendor/proptest/src/arbitrary/_std/path.rs b/vendor/proptest/src/arbitrary/_std/path.rs
index e7d063c17..2e71b03db 100644
--- a/vendor/proptest/src/arbitrary/_std/path.rs
+++ b/vendor/proptest/src/arbitrary/_std/path.rs
@@ -11,13 +11,121 @@
use std::path::*;
-// TODO: Figure out PathBuf and then Box/Rc/Box<Path>.
+use crate::{
+ arbitrary::{SMapped, StrategyFor},
+ path::PathParams,
+ prelude::{any, any_with, Arbitrary, Strategy},
+ std_facade::{string::ToString, Arc, Box, Rc, String, Vec},
+ strategy::{statics::static_map, MapInto},
+};
arbitrary!(StripPrefixError; Path::new("").strip_prefix("a").unwrap_err());
+/// A private type (not actually pub) representing the output of [`PathParams`] that can't be
+/// referred to by API users.
+///
+/// The goal of this type is to encapsulate the output of `PathParams`. If this layer weren't
+/// present, the type of `<PathBuf as Arbitrary>::Strategy` would be `SMapped<(bool, Vec<String>),
+/// Self>`. This is a problem because it exposes the internal representation of `PathParams` as an
+/// API. For example, if an additional parameter of randomness (e.g. another bool) were added, the
+/// type of `Strategy` would change.
+///
+/// With `PathParamsOutput`, the type of `Strategy` is `SMapped<PathParamsOutput, Self>`, which is a
+/// type that can't be named directly---only via `<PathBuf as Arbitrary>::Strategy`. The internal
+/// representation of `PathParams` can be changed without affecting the API.
+#[derive(Debug)]
+pub struct PathParamsOutput {
+ is_absolute: bool,
+ components: Vec<String>,
+}
+
+impl Arbitrary for PathParamsOutput {
+ type Parameters = PathParams;
+ type Strategy = SMapped<(bool, Vec<String>), Self>;
+
+ fn arbitrary_with(args: Self::Parameters) -> Self::Strategy {
+ static_map(
+ (
+ any::<bool>(),
+ any_with::<Vec<String>>((
+ args.components(),
+ args.component_regex(),
+ )),
+ ),
+ |(is_absolute, components)| Self {
+ is_absolute,
+ components,
+ },
+ )
+ }
+}
+
+/// This implementation accepts as its argument a [`PathParams`] struct. It generates either a
+/// relative or an absolute path with equal probability.
+///
+/// Currently, this implementation does not generate:
+///
+/// * Paths that are not valid UTF-8 (this is unlikely to change)
+/// * Paths with a [`PrefixComponent`](std::path::PrefixComponent) on Windows, e.g. `C:\` (this may
+/// change in the future)
+impl Arbitrary for PathBuf {
+ type Parameters = PathParams;
+ type Strategy = SMapped<PathParamsOutput, Self>;
+
+ fn arbitrary_with(args: Self::Parameters) -> Self::Strategy {
+ static_map(
+ any_with::<PathParamsOutput>(args),
+ |PathParamsOutput {
+ is_absolute,
+ components,
+ }| {
+ let mut out = PathBuf::new();
+ if is_absolute {
+ out.push(&MAIN_SEPARATOR.to_string());
+ }
+
+ for component in components {
+ // If a component has an embedded / (or \ on Windows), remove it from the
+ // string.
+ let component = component
+ .chars()
+ .filter(|&c| !std::path::is_separator(c))
+ .collect::<String>();
+ out.push(&component);
+ }
+
+ out
+ },
+ )
+ }
+}
+
+macro_rules! dst_wrapped {
+ ($($w: ident),*) => {
+ $(
+ /// This implementation is identical to [the `Arbitrary` implementation for
+ /// `PathBuf`](trait.Arbitrary.html#impl-Arbitrary-for-PathBuf).
+ impl Arbitrary for $w<Path> {
+ type Parameters = PathParams;
+ type Strategy = MapInto<StrategyFor<PathBuf>, Self>;
+
+ fn arbitrary_with(args: Self::Parameters) -> Self::Strategy {
+ any_with::<PathBuf>(args).prop_map_into()
+ }
+ }
+ )*
+ }
+}
+
+dst_wrapped!(Box, Rc, Arc);
+
#[cfg(test)]
mod test {
no_panic_test!(
- strip_prefix_error => StripPrefixError
+ strip_prefix_error => StripPrefixError,
+ path_buf => PathBuf,
+ box_path => Box<Path>,
+ rc_path => Rc<Path>,
+ arc_path => Arc<Path>
);
}
diff --git a/vendor/proptest/src/bits.rs b/vendor/proptest/src/bits.rs
index 342eb28b1..89b183ed1 100644
--- a/vendor/proptest/src/bits.rs
+++ b/vendor/proptest/src/bits.rs
@@ -22,6 +22,8 @@ use core::mem;
#[cfg(feature = "bit-set")]
use bit_set::BitSet;
+#[cfg(feature = "bit-set")]
+use bit_vec::BitVec;
use rand::{self, seq::IteratorRandom, Rng};
use crate::collection::SizeRange;
@@ -450,8 +452,15 @@ pub(crate) mod varsize {
impl VarBitSet {
/// Create a bit set of `len` set values.
+ #[cfg(not(feature = "bit-set"))]
+ pub fn saturated(len: usize) -> Self {
+ Self(vec![true; len])
+ }
+
+ /// Create a bit set of `len` set values.
+ #[cfg(feature = "bit-set")]
pub fn saturated(len: usize) -> Self {
- (0..len).collect::<VarBitSet>()
+ Self(BitSet::from_bit_vec(BitVec::from_elem(len, true)))
}
#[cfg(not(feature = "bit-set"))]
@@ -492,8 +501,10 @@ pub(crate) mod varsize {
}
impl FromIterator<usize> for VarBitSet {
- fn from_iter<T: IntoIterator<Item = usize>>(iter: T) -> Self {
- let mut bits = VarBitSet::new_bitset(0);
+ fn from_iter<T: IntoIterator<Item = usize>>(into_iter: T) -> Self {
+ let iter = into_iter.into_iter();
+ let lower_bound = iter.size_hint().0;
+ let mut bits = VarBitSet::new_bitset(lower_bound);
for bit in iter {
bits.set(bit);
}
diff --git a/vendor/proptest/src/lib.rs b/vendor/proptest/src/lib.rs
index 818c32645..72b90ffbf 100644
--- a/vendor/proptest/src/lib.rs
+++ b/vendor/proptest/src/lib.rs
@@ -27,10 +27,6 @@
feature(allocator_api, try_trait_v2, generator_trait, never_type)
)]
#![cfg_attr(all(feature = "std", feature = "unstable"), feature(ip))]
-#![cfg_attr(
- all(feature = "alloc", not(feature = "std")),
- feature(core_intrinsics)
-)]
#![cfg_attr(docsrs, feature(doc_cfg))]
// std_facade is used in a few macros, so it needs to be public.
@@ -90,6 +86,9 @@ pub mod test_runner;
pub mod tuple;
pub mod option;
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub mod path;
pub mod result;
pub mod sample;
#[cfg(feature = "std")]
diff --git a/vendor/proptest/src/num.rs b/vendor/proptest/src/num.rs
index 3aa785db4..ebf8593a4 100644
--- a/vendor/proptest/src/num.rs
+++ b/vendor/proptest/src/num.rs
@@ -362,6 +362,7 @@ unsigned_integer_bin_search!(u128);
unsigned_integer_bin_search!(usize);
bitflags! {
+ #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub(crate) struct FloatTypes: u32 {
const POSITIVE = 0b0000_0001;
const NEGATIVE = 0b0000_0010;
@@ -372,13 +373,13 @@ bitflags! {
const QUIET_NAN = 0b0100_0000;
const SIGNALING_NAN = 0b1000_0000;
const ANY =
- Self::POSITIVE.bits |
- Self::NEGATIVE.bits |
- Self::NORMAL.bits |
- Self::SUBNORMAL.bits |
- Self::ZERO.bits |
- Self::INFINITE.bits |
- Self::QUIET_NAN.bits;
+ Self::POSITIVE.bits() |
+ Self::NEGATIVE.bits() |
+ Self::NORMAL.bits() |
+ Self::SUBNORMAL.bits() |
+ Self::ZERO.bits() |
+ Self::INFINITE.bits() |
+ Self::QUIET_NAN.bits();
}
}
diff --git a/vendor/proptest/src/path.rs b/vendor/proptest/src/path.rs
new file mode 100644
index 000000000..76242817d
--- /dev/null
+++ b/vendor/proptest/src/path.rs
@@ -0,0 +1,55 @@
+//! Strategies for generating [`PathBuf`] and related path types.
+//!
+//! [`PathParams`] in this module is used as the argument to the
+//! [`Arbitrary`](crate::arbitrary::Arbitrary) implementation for [`PathBuf`].
+
+use crate::{collection::SizeRange, string::StringParam};
+
+/// Parameters for the [`Arbitrary`] implementation for [`PathBuf`].
+///
+/// By default, this generates paths with 0 to 8 components uniformly at random, each of which is a
+/// default [`StringParam`].
+#[derive(Clone, Debug, PartialEq, Eq, Hash)]
+pub struct PathParams {
+ /// The number of components in the path.
+ components: SizeRange,
+ /// The regular expression to generate individual components.
+ component_regex: StringParam,
+}
+
+impl PathParams {
+ /// Gets the number of components in the path.
+ pub fn components(&self) -> SizeRange {
+ self.components.clone()
+ }
+
+ /// Sets the number of components in the path.
+ pub fn with_components(mut self, components: impl Into<SizeRange>) -> Self {
+ self.components = components.into();
+ self
+ }
+
+ /// Gets the regular expression to generate individual components.
+ pub fn component_regex(&self) -> StringParam {
+ self.component_regex
+ }
+
+ /// Sets the regular expression to generate individual components.
+ pub fn with_component_regex(
+ mut self,
+ component_regex: impl Into<StringParam>,
+ ) -> Self {
+ self.component_regex = component_regex.into();
+ self
+ }
+}
+
+impl Default for PathParams {
+ fn default() -> Self {
+ Self {
+ components: (0..8).into(),
+ // This is the default regex for `any::<String>()`.
+ component_regex: StringParam::default(),
+ }
+ }
+}
diff --git a/vendor/proptest/src/sample.rs b/vendor/proptest/src/sample.rs
index 9c464f132..86ba6818e 100644
--- a/vendor/proptest/src/sample.rs
+++ b/vendor/proptest/src/sample.rs
@@ -245,6 +245,14 @@ impl Index {
}
}
+// This impl is handy for generic code over any type that exposes an internal `Index` -- with it,
+// a plain `Index` can be passed in as well.
+impl AsRef<Index> for Index {
+ fn as_ref(&self) -> &Index {
+ self
+ }
+}
+
mapfn! {
[] fn UsizeToIndex[](raw: usize) -> Index {
Index(raw)
diff --git a/vendor/proptest/src/string.rs b/vendor/proptest/src/string.rs
index 8777388f5..935cb21ca 100644
--- a/vendor/proptest/src/string.rs
+++ b/vendor/proptest/src/string.rs
@@ -16,14 +16,8 @@ use core::mem;
use core::ops::RangeInclusive;
use core::u32;
-use regex_syntax::hir::{
- self, Hir,
- HirKind::*,
- Literal::*,
- RepetitionKind::{self, *},
- RepetitionRange::*,
-};
-use regex_syntax::{Error as ParseError, Parser};
+use regex_syntax::hir::{self, Hir, HirKind::*, Repetition};
+use regex_syntax::{Error as ParseError, ParserBuilder};
use crate::bool;
use crate::char;
@@ -33,7 +27,7 @@ use crate::test_runner::*;
/// Wraps the regex that forms the `Strategy` for `String` so that a sensible
/// `Default` can be given. The default is a string of non-control characters.
-#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
+#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct StringParam(&'static str);
impl From<StringParam> for &'static str {
@@ -150,7 +144,8 @@ impl StrategyFromRegex for Vec<u8> {
/// If you don't need error handling and aren't limited by setup time, it is
/// also possible to directly use a `&str` as a strategy with the same effect.
pub fn string_regex(regex: &str) -> ParseResult<String> {
- string_regex_parsed(&regex_to_hir(regex)?)
+ let hir = ParserBuilder::new().build().parse(regex)?;
+ string_regex_parsed(&hir)
}
/// Like `string_regex()`, but allows providing a pre-parsed expression.
@@ -167,8 +162,20 @@ pub fn string_regex_parsed(expr: &Hir) -> ParseResult<String> {
/// Creates a strategy which generates byte strings matching the given regular
/// expression.
+///
+/// By default, the byte strings generated by this strategy _will_ be valid
+/// UTF-8. If you wish to generate byte strings that aren't (necessarily)
+/// valid UTF-8, wrap your regex (or some subsection of it) in `(?-u: ... )`.
+/// You may want to turn on the `s` flag as well (`(?s-u: ... )`) so that `.`
+/// will generate newline characters (byte value `0x0A`). See the
+/// [`regex` crate's documentation](https://docs.rs/regex/*/regex/#opt-out-of-unicode-support)
+/// for more information.
pub fn bytes_regex(regex: &str) -> ParseResult<Vec<u8>> {
- bytes_regex_parsed(&regex_to_hir(regex)?)
+ let hir = ParserBuilder::new()
+ .utf8(false)
+ .build()
+ .parse(regex)?;
+ bytes_regex_parsed(&hir)
}
/// Like `bytes_regex()`, but allows providing a pre-parsed expression.
@@ -176,11 +183,7 @@ pub fn bytes_regex_parsed(expr: &Hir) -> ParseResult<Vec<u8>> {
match expr.kind() {
Empty => Ok(Just(vec![]).sboxed()),
- Literal(lit) => Ok(Just(match lit {
- Unicode(scalar) => to_bytes(*scalar),
- Byte(byte) => vec![*byte],
- })
- .sboxed()),
+ Literal(lit) => Ok(Just(lit.0.to_vec()).sboxed()),
Class(class) => Ok(match class {
hir::Class::Unicode(class) => {
@@ -192,19 +195,13 @@ pub fn bytes_regex_parsed(expr: &Hir) -> ParseResult<Vec<u8>> {
}
}),
- Repetition(rep) => Ok(vec(
- bytes_regex_parsed(&rep.hir)?,
- to_range(rep.kind.clone())?,
- )
- .prop_map(|parts| {
- parts.into_iter().fold(vec![], |mut acc, child| {
- acc.extend(child);
- acc
- })
- })
- .sboxed()),
+ Repetition(rep) => {
+ Ok(vec(bytes_regex_parsed(&rep.sub)?, to_range(rep)?)
+ .prop_map(|parts| parts.concat())
+ .sboxed())
+ }
- Group(group) => bytes_regex_parsed(&group.hir).map(|v| v.0),
+ Capture(capture) => bytes_regex_parsed(&capture.sub).map(|v| v.0),
Concat(subs) => {
let subs = ConcatIter {
@@ -232,12 +229,8 @@ pub fn bytes_regex_parsed(expr: &Hir) -> ParseResult<Vec<u8>> {
Ok(Union::try_new(subs.iter().map(bytes_regex_parsed))?.sboxed())
}
- Anchor(_) => {
- unsupported("line/text anchors not supported for string generation")
- }
-
- WordBoundary(_) => unsupported(
- "word boundary tests not supported for string generation",
+ Look(_) => unsupported(
+ "anchors/boundaries not supported for string generation",
),
}
.map(RegexGeneratorStrategy)
@@ -298,8 +291,7 @@ impl<'a, I: Iterator<Item = &'a Hir>> Iterator for ConcatIter<'a, I> {
while let Some(next) = self.iter.next() {
match next.kind() {
// A literal. Accumulate:
- Literal(Unicode(scalar)) => self.buf.extend(to_bytes(*scalar)),
- Literal(Byte(byte)) => self.buf.push(*byte),
+ Literal(literal) => self.buf.extend_from_slice(&literal.0),
// Encountered a non-literal.
_ => {
return if !self.buf.is_empty() {
@@ -324,31 +316,35 @@ impl<'a, I: Iterator<Item = &'a Hir>> Iterator for ConcatIter<'a, I> {
}
}
-fn to_range(kind: RepetitionKind) -> Result<SizeRange, Error> {
- Ok(match kind {
- ZeroOrOne => size_range(0..=1),
- ZeroOrMore => size_range(0..=32),
- OneOrMore => size_range(1..=32),
- Range(range) => match range {
- Exactly(count) if u32::MAX == count => {
- return unsupported(
- "Cannot have repetition of exactly u32::MAX",
- )
- }
- Exactly(count) => size_range(count as usize),
- AtLeast(min) => {
- let max = if min < u32::MAX as u32 / 2 {
- min as usize * 2
- } else {
- u32::MAX as usize
- };
- size_range((min as usize)..max)
- }
- Bounded(_, max) if u32::MAX == max => {
- return unsupported("Cannot have repetition max of u32::MAX")
- }
- Bounded(min, max) => size_range((min as usize)..(max as usize + 1)),
- },
+fn to_range(rep: &Repetition) -> Result<SizeRange, Error> {
+ Ok(match (rep.min, rep.max) {
+ // Zero or one
+ (0, Some(1)) => size_range(0..=1),
+ // Zero or more
+ (0, None) => size_range(0..=32),
+ // One or more
+ (1, None) => size_range(1..=32),
+ // Exact count of u32::MAX
+ (u32::MAX, Some(u32::MAX)) => {
+ return unsupported("Cannot have repetition of exactly u32::MAX");
+ }
+ // Exact count
+ (min, Some(max)) if min == max => size_range(min as usize),
+ // At least min
+ (min, None) => {
+ let max = if min < u32::MAX as u32 / 2 {
+ min as usize * 2
+ } else {
+ u32::MAX as usize
+ };
+ size_range((min as usize)..max)
+ }
+ // Bounded range with max of u32::MAX
+ (_, Some(u32::MAX)) => {
+ return unsupported("Cannot have repetition max of u32::MAX")
+ }
+ // Bounded range
+ (min, Some(max)) => size_range((min as usize)..(max as usize + 1)),
})
}
@@ -357,10 +353,6 @@ fn to_bytes(khar: char) -> Vec<u8> {
khar.encode_utf8(&mut buf).as_bytes().to_owned()
}
-fn regex_to_hir(pattern: &str) -> Result<Hir, Error> {
- Ok(Parser::new().parse(pattern)?)
-}
-
fn unsupported<T>(error: &'static str) -> Result<T, Error> {
Err(Error::UnsupportedRegex(error))
}
@@ -370,9 +362,17 @@ mod test {
use std::collections::HashSet;
use regex::Regex;
+ use regex::bytes::Regex as BytesRegex;
use super::*;
+ fn printable_ascii(v: &[u8]) -> String {
+ v.iter()
+ .flat_map(|c| std::ascii::escape_default(*c))
+ .map(|c| char::from_u32(c.into()).unwrap())
+ .collect()
+ }
+
fn do_test(
pattern: &str,
min_distinct: usize,
@@ -396,6 +396,29 @@ mod test {
);
}
+ fn do_test_bytes(
+ pattern: &str,
+ min_distinct: usize,
+ max_distinct: usize,
+ iterations: usize,
+ ) {
+ let generated = generate_byte_values_matching_regex(pattern, iterations);
+ assert!(
+ generated.len() >= min_distinct,
+ "Expected to generate at least {} strings, but only \
+ generated {}",
+ min_distinct,
+ generated.len()
+ );
+ assert!(
+ generated.len() <= max_distinct,
+ "Expected to generate at most {} strings, but \
+ generated {}",
+ max_distinct,
+ generated.len()
+ );
+ }
+
fn generate_values_matching_regex(
pattern: &str,
iterations: usize,
@@ -432,6 +455,42 @@ mod test {
generated
}
+ fn generate_byte_values_matching_regex(
+ pattern: &str,
+ iterations: usize,
+ ) -> HashSet<Vec<u8>> {
+ let rx = BytesRegex::new(pattern).unwrap();
+ let mut generated = HashSet::new();
+
+ let strategy = bytes_regex(pattern).unwrap();
+ let mut runner = TestRunner::deterministic();
+ for _ in 0..iterations {
+ let mut value = strategy.new_tree(&mut runner).unwrap();
+
+ loop {
+ let s = value.current();
+ let ok = if let Some(matsch) = rx.find(&s) {
+ 0 == matsch.start() && s.len() == matsch.end()
+ } else {
+ false
+ };
+ if !ok {
+ panic!(
+ "Generated string {:?} which does not match {:?}",
+ printable_ascii(&s), pattern
+ );
+ }
+
+ generated.insert(s);
+
+ if !value.simplify() {
+ break;
+ }
+ }
+ }
+ generated
+ }
+
#[test]
fn test_case_insensitive_produces_all_available_values() {
let mut expected: HashSet<String> = HashSet::new();
@@ -445,6 +504,7 @@ mod test {
#[test]
fn test_literal() {
do_test("foo", 1, 1, 8);
+ do_test_bytes("foo", 1, 1, 8);
}
#[test]
@@ -455,36 +515,43 @@ mod test {
#[test]
fn test_alternation() {
do_test("foo|bar|baz", 3, 3, 16);
+ do_test_bytes("foo|bar|baz", 3, 3, 16);
}
#[test]
- fn test_repitition() {
+ fn test_repetition() {
do_test("a{0,8}", 9, 9, 64);
+ do_test_bytes("a{0,8}", 9, 9, 64);
}
#[test]
fn test_question() {
do_test("a?", 2, 2, 16);
+ do_test_bytes("a?", 2, 2, 16);
}
#[test]
fn test_star() {
do_test("a*", 33, 33, 256);
+ do_test_bytes("a*", 33, 33, 256);
}
#[test]
fn test_plus() {
do_test("a+", 32, 32, 256);
+ do_test_bytes("a+", 32, 32, 256);
}
#[test]
fn test_n_to_range() {
do_test("a{4,}", 4, 4, 64);
+ do_test_bytes("a{4,}", 4, 4, 64);
}
#[test]
fn test_concatenation() {
do_test("(foo|bar)(xyzzy|plugh)", 4, 4, 32);
+ do_test_bytes("(foo|bar)(xyzzy|plugh)", 4, 4, 32);
}
#[test]
@@ -505,6 +572,7 @@ mod test {
#[test]
fn test_dot_s() {
do_test("(?s).", 200, 65536, 256);
+ do_test_bytes("(?s-u).", 256, 256, 2048);
}
#[test]
@@ -512,6 +580,16 @@ mod test {
do_test("\\d+", 1, 65536, 256);
}
+ #[test]
+ fn test_non_utf8_byte_strings() {
+ do_test_bytes(r"(?-u)[\xC0-\xFF]\x20", 64, 64, 512);
+ do_test_bytes(r"(?-u)\x20[\x80-\xBF]", 64, 64, 512);
+ do_test_bytes(r#"(?x-u)
+ \xed (( ( \xa0\x80 | \xad\xbf | \xae\x80 | \xaf\xbf )
+ ( \xed ( \xb0\x80 | \xbf\xbf ) )? )
+ | \xb0\x80 | \xbe\x80 | \xbf\xbf )"#, 15, 15, 120);
+ }
+
fn assert_send_and_sync<T: Send + Sync>(_: T) {}
#[test]
diff --git a/vendor/proptest/src/sugar.rs b/vendor/proptest/src/sugar.rs
index e16d2dda9..6b76b30cf 100644
--- a/vendor/proptest/src/sugar.rs
+++ b/vendor/proptest/src/sugar.rs
@@ -333,52 +333,64 @@ macro_rules! prop_oneof {
($_weight0:expr => $item0:expr $(,)?) => { $item0 };
+ // NOTE: The clippy::arc_with_non_send_sync lint is disabled here because
+ // the strategies passed into prop_oneof! are often not Send or Sync, such
+ // as BoxedStrategy.
+ //
+ // The double-curly-braces are not strictly required, but allow the expression
+ // to be annotated with an attribute.
+
($weight0:expr => $item0:expr,
- $weight1:expr => $item1:expr $(,)?) => {
+ $weight1:expr => $item1:expr $(,)?) => {{
+ #[allow(clippy::arc_with_non_send_sync)]
$crate::strategy::TupleUnion::new(
(($weight0, $crate::std_facade::Arc::new($item0)),
($weight1, $crate::std_facade::Arc::new($item1))))
- };
+ }};
($weight0:expr => $item0:expr,
$weight1:expr => $item1:expr,
- $weight2:expr => $item2:expr $(,)?) => {
+ $weight2:expr => $item2:expr $(,)?) => {{
+ #[allow(clippy::arc_with_non_send_sync)]
$crate::strategy::TupleUnion::new(
(($weight0, $crate::std_facade::Arc::new($item0)),
($weight1, $crate::std_facade::Arc::new($item1)),
($weight2, $crate::std_facade::Arc::new($item2))))
- };
+ }};
($weight0:expr => $item0:expr,
$weight1:expr => $item1:expr,
$weight2:expr => $item2:expr,
- $weight3:expr => $item3:expr $(,)?) => {
+ $weight3:expr => $item3:expr $(,)?) => {{
+ #[allow(clippy::arc_with_non_send_sync)]
$crate::strategy::TupleUnion::new(
(($weight0, $crate::std_facade::Arc::new($item0)),
($weight1, $crate::std_facade::Arc::new($item1)),
($weight2, $crate::std_facade::Arc::new($item2)),
($weight3, $crate::std_facade::Arc::new($item3))))
- };
+ }};
($weight0:expr => $item0:expr,
$weight1:expr => $item1:expr,
$weight2:expr => $item2:expr,
$weight3:expr => $item3:expr,
- $weight4:expr => $item4:expr $(,)?) => {
+ $weight4:expr => $item4:expr $(,)?) => {{
+ #[allow(clippy::arc_with_non_send_sync)]
$crate::strategy::TupleUnion::new(
(($weight0, $crate::std_facade::Arc::new($item0)),
($weight1, $crate::std_facade::Arc::new($item1)),
($weight2, $crate::std_facade::Arc::new($item2)),
($weight3, $crate::std_facade::Arc::new($item3)),
($weight4, $crate::std_facade::Arc::new($item4))))
- };
+ }};
($weight0:expr => $item0:expr,
$weight1:expr => $item1:expr,
$weight2:expr => $item2:expr,
$weight3:expr => $item3:expr,
$weight4:expr => $item4:expr,
- $weight5:expr => $item5:expr $(,)?) => {
+ $weight5:expr => $item5:expr $(,)?) => {{
+ #[allow(clippy::arc_with_non_send_sync)]
$crate::strategy::TupleUnion::new(
(($weight0, $crate::std_facade::Arc::new($item0)),
($weight1, $crate::std_facade::Arc::new($item1)),
@@ -386,7 +398,7 @@ macro_rules! prop_oneof {
($weight3, $crate::std_facade::Arc::new($item3)),
($weight4, $crate::std_facade::Arc::new($item4)),
($weight5, $crate::std_facade::Arc::new($item5))))
- };
+ }};
($weight0:expr => $item0:expr,
$weight1:expr => $item1:expr,
@@ -394,7 +406,8 @@ macro_rules! prop_oneof {
$weight3:expr => $item3:expr,
$weight4:expr => $item4:expr,
$weight5:expr => $item5:expr,
- $weight6:expr => $item6:expr $(,)?) => {
+ $weight6:expr => $item6:expr $(,)?) => {{
+ #[allow(clippy::arc_with_non_send_sync)]
$crate::strategy::TupleUnion::new(
(($weight0, $crate::std_facade::Arc::new($item0)),
($weight1, $crate::std_facade::Arc::new($item1)),
@@ -403,7 +416,7 @@ macro_rules! prop_oneof {
($weight4, $crate::std_facade::Arc::new($item4)),
($weight5, $crate::std_facade::Arc::new($item5)),
($weight6, $crate::std_facade::Arc::new($item6))))
- };
+ }};
($weight0:expr => $item0:expr,
$weight1:expr => $item1:expr,
@@ -412,7 +425,8 @@ macro_rules! prop_oneof {
$weight4:expr => $item4:expr,
$weight5:expr => $item5:expr,
$weight6:expr => $item6:expr,
- $weight7:expr => $item7:expr $(,)?) => {
+ $weight7:expr => $item7:expr $(,)?) => {{
+ #[allow(clippy::arc_with_non_send_sync)]
$crate::strategy::TupleUnion::new(
(($weight0, $crate::std_facade::Arc::new($item0)),
($weight1, $crate::std_facade::Arc::new($item1)),
@@ -422,7 +436,7 @@ macro_rules! prop_oneof {
($weight5, $crate::std_facade::Arc::new($item5)),
($weight6, $crate::std_facade::Arc::new($item6)),
($weight7, $crate::std_facade::Arc::new($item7))))
- };
+ }};
($weight0:expr => $item0:expr,
$weight1:expr => $item1:expr,
@@ -432,7 +446,8 @@ macro_rules! prop_oneof {
$weight5:expr => $item5:expr,
$weight6:expr => $item6:expr,
$weight7:expr => $item7:expr,
- $weight8:expr => $item8:expr $(,)?) => {
+ $weight8:expr => $item8:expr $(,)?) => {{
+ #[allow(clippy::arc_with_non_send_sync)]
$crate::strategy::TupleUnion::new(
(($weight0, $crate::std_facade::Arc::new($item0)),
($weight1, $crate::std_facade::Arc::new($item1)),
@@ -443,7 +458,7 @@ macro_rules! prop_oneof {
($weight6, $crate::std_facade::Arc::new($item6)),
($weight7, $crate::std_facade::Arc::new($item7)),
($weight8, $crate::std_facade::Arc::new($item8))))
- };
+ }};
($weight0:expr => $item0:expr,
$weight1:expr => $item1:expr,
@@ -454,7 +469,8 @@ macro_rules! prop_oneof {
$weight6:expr => $item6:expr,
$weight7:expr => $item7:expr,
$weight8:expr => $item8:expr,
- $weight9:expr => $item9:expr $(,)?) => {
+ $weight9:expr => $item9:expr $(,)?) => {{
+ #[allow(clippy::arc_with_non_send_sync)]
$crate::strategy::TupleUnion::new(
(($weight0, $crate::std_facade::Arc::new($item0)),
($weight1, $crate::std_facade::Arc::new($item1)),
@@ -466,7 +482,7 @@ macro_rules! prop_oneof {
($weight7, $crate::std_facade::Arc::new($item7)),
($weight8, $crate::std_facade::Arc::new($item8)),
($weight9, $crate::std_facade::Arc::new($item9))))
- };
+ }};
($($weight:expr => $item:expr),+ $(,)?) => {
$crate::strategy::Union::new_weighted(vec![
diff --git a/vendor/proptest/src/test_runner/config.rs b/vendor/proptest/src/test_runner/config.rs
index 04940abc4..232de951b 100644
--- a/vendor/proptest/src/test_runner/config.rs
+++ b/vendor/proptest/src/test_runner/config.rs
@@ -356,7 +356,8 @@ pub struct Config {
/// meaning of certain levels other than 0 is subject to change.
///
/// - 0: No extra output.
- /// - 1: Log test failure messages.
+ /// - 1: Log test failure messages. In state machine tests, this level is
+ /// used to print transitions.
/// - 2: Trace low-level details.
///
/// This is only available with the `std` feature (enabled by default)
diff --git a/vendor/proptest/src/test_runner/failure_persistence/file.rs b/vendor/proptest/src/test_runner/failure_persistence/file.rs
index 61d7dcf6a..21799adb2 100644
--- a/vendor/proptest/src/test_runner/failure_persistence/file.rs
+++ b/vendor/proptest/src/test_runner/failure_persistence/file.rs
@@ -39,12 +39,11 @@ pub enum FileFailurePersistence {
/// `Direct("NUL")` on Windows (though it is internally handled by simply
/// not doing any I/O).
Off,
- /// The path given to `TestRunner::set_source_file()` is parsed. The path
- /// is traversed up the directory tree until a directory containing a file
- /// named `lib.rs` or `main.rs` is found. A sibling to that directory with
- /// the name given by the string in this configuration is created, and a
- /// file with the same name and path relative to the source directory, but
- /// with the extension changed to `.txt`, is used.
+ /// The path of the source file under test is traversed up the directory tree
+ /// until a directory containing a file named `lib.rs` or `main.rs` is found.
+ /// A sibling to that directory with the name given by the string in this
+ /// configuration is created, and a file with the same name and path relative
+ /// to the source directory, but with the extension changed to `.txt`, is used.
///
/// For example, given a source path of
/// `/home/jsmith/code/project/src/foo/bar.rs` and a configuration of
@@ -58,9 +57,9 @@ pub enum FileFailurePersistence {
/// If no source file has been configured, a warning is printed and this
/// behaves like `Off`.
SourceParallel(&'static str),
- /// The path given to `TestRunner::set_source_file()` is parsed. The
- /// extension of the path is changed to the string given in this
- /// configuration, and that filename is used.
+ /// Failures are persisted in a file with the same path as the source file
+ /// under test, but the extension is changed to the string given in this
+ /// configuration.
///
/// For example, given a source path of
/// `/home/jsmith/code/project/src/foo/bar.rs` and a configuration of
@@ -151,7 +150,7 @@ impl FailurePersistence for FileFailurePersistence {
path.display(),
e
);
- } else if is_new {
+ } else {
eprintln!(
"proptest: Saving this and future failures in {}\n\
proptest: If this test was run on a CI system, you may \
diff --git a/vendor/proptest/src/test_runner/rng.rs b/vendor/proptest/src/test_runner/rng.rs
index 78c8d7a75..31dd3a354 100644
--- a/vendor/proptest/src/test_runner/rng.rs
+++ b/vendor/proptest/src/test_runner/rng.rs
@@ -9,9 +9,8 @@
use crate::std_facade::{Arc, String, ToOwned, Vec};
use core::result::Result;
-use core::{fmt, str, u8};
+use core::{fmt, str, u8, convert::TryInto};
-use byteorder::{ByteOrder, LittleEndian};
use rand::{self, Rng, RngCore, SeedableRng};
use rand_chacha::ChaChaRng;
use rand_xorshift::XorShiftRng;
@@ -137,7 +136,7 @@ impl RngCore for TestRng {
&mut TestRngImpl::PassThrough { .. } => {
let mut buf = [0; 4];
self.fill_bytes(&mut buf[..]);
- LittleEndian::read_u32(&buf[..])
+ u32::from_le_bytes(buf)
}
&mut TestRngImpl::Recorder {
@@ -160,7 +159,7 @@ impl RngCore for TestRng {
&mut TestRngImpl::PassThrough { .. } => {
let mut buf = [0; 8];
self.fill_bytes(&mut buf[..]);
- LittleEndian::read_u64(&buf[..])
+ u64::from_le_bytes(buf)
}
&mut TestRngImpl::Recorder {
@@ -302,7 +301,9 @@ impl Seed {
}
let mut seed = [0u8; 16];
- LittleEndian::write_u32_into(&dwords[..], &mut seed[..]);
+ for (chunk, dword) in seed.chunks_mut(4).zip(dwords) {
+ chunk.copy_from_slice(&dword.to_le_bytes());
+ }
Some(Seed::XorShift(seed))
}
@@ -354,8 +355,12 @@ impl Seed {
match *self {
Seed::XorShift(ref seed) => {
- let mut dwords = [0u32; 4];
- LittleEndian::read_u32_into(seed, &mut dwords[..]);
+ let dwords = [
+ u32::from_le_bytes(seed[0..4].try_into().unwrap()),
+ u32::from_le_bytes(seed[4..8].try_into().unwrap()),
+ u32::from_le_bytes(seed[8..12].try_into().unwrap()),
+ u32::from_le_bytes(seed[12..16].try_into().unwrap()),
+ ];
format!(
"{} {} {} {} {}",
RngAlgorithm::XorShift.persistence_key(),
diff --git a/vendor/proptest/src/test_runner/runner.rs b/vendor/proptest/src/test_runner/runner.rs
index ce540499e..27d0ddf82 100644
--- a/vendor/proptest/src/test_runner/runner.rs
+++ b/vendor/proptest/src/test_runner/runner.rs
@@ -39,7 +39,9 @@ use crate::test_runner::rng::TestRng;
const ENV_FORK_FILE: &'static str = "_PROPTEST_FORKFILE";
const ALWAYS: u32 = 0;
-const SHOW_FALURES: u32 = 1;
+/// Verbose level 1 to show failures. In state machine tests this level is used
+/// to print transitions.
+pub const INFO_LOG: u32 = 1;
const TRACE: u32 = 2;
#[cfg(feature = "std")]
@@ -279,18 +281,12 @@ where
match result {
Ok(()) => verbose_message!(runner, TRACE, "Test case passed"),
- Err(TestCaseError::Reject(ref reason)) => verbose_message!(
- runner,
- SHOW_FALURES,
- "Test case rejected: {}",
- reason
- ),
- Err(TestCaseError::Fail(ref reason)) => verbose_message!(
- runner,
- SHOW_FALURES,
- "Test case failed: {}",
- reason
- ),
+ Err(TestCaseError::Reject(ref reason)) => {
+ verbose_message!(runner, INFO_LOG, "Test case rejected: {}", reason)
+ }
+ Err(TestCaseError::Fail(ref reason)) => {
+ verbose_message!(runner, INFO_LOG, "Test case failed: {}", reason)
+ }
}
result.map(|_| {
diff --git a/vendor/rayon-core/.cargo-checksum.json b/vendor/rayon-core/.cargo-checksum.json
index aed02285f..1856d1966 100644
--- a/vendor/rayon-core/.cargo-checksum.json
+++ b/vendor/rayon-core/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"253950b73a1610997642b03671361a8846655d5a36ed019e8dd77d069b9914aa","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0621878e61f0d0fda054bcbe02df75192c28bde1ecc8289cbd86aeba2dd72720","README.md":"f964d2888146f80d5b0f2b42af405893c0f0187800e406c1f86f81334c08db1a","build.rs":"fa31cb198b772600d100a7c403ddedccef637d2e6b2da431fa7f02ca41307fc6","src/broadcast/mod.rs":"38bf2c713c3e05514f23a5db04d82a7f255eb53863d03eead33a9f5c82f878b7","src/broadcast/test.rs":"c42d5aa6a3d3a53614ac534811f0fe7a347f18912ecfd63d874a281dc215aca4","src/compile_fail/mod.rs":"4d70256295bd64691a8c1994b323559cda1888e85f0b45ca55711541c257dcb6","src/compile_fail/quicksort_race1.rs":"35f498cda38f4eb6e00117f78ed68e0fe5a3fa61c25303d9c08a19bda345bc6c","src/compile_fail/quicksort_race2.rs":"cbb40030c7867cae34bb373b6ec5d97c2ac6de39bc917f47879b30eb423924bc","src/compile_fail/quicksort_race3.rs":"8403643e64c969306b1a9b1243378e6ccdd313b57e1878dbd31393618082fd35","src/compile_fail/rc_return.rs":"197894803d8df58fc8005d90c86b90cd98f1972f1a4b57438516a565df35903f","src/compile_fail/rc_upvar.rs":"42d110429621f407ef0dada1306dab116583d2c782a99894204dd8e0ccd2312f","src/compile_fail/scope_join_bad.rs":"892959949f77cadfc07458473e7a290301182027ca64428df5a8ce887be0892b","src/job.rs":"06de0c2add2e303b6383bf11f5f0d75775c1efe6aa7bc16de3992117f1012f09","src/join/mod.rs":"7638c0fc1da1a2d2b14673c8a2e0f87d26c24232cebee26fd334bdc2caa80886","src/join/test.rs":"157db5306e8df89a8eea19dbba499f26c2f44d9803cb36a796c852a9a695821e","src/latch.rs":"2056effd8b1d71e1df2889c7a163570c975d25fff8404368b0e1554efeeab6c7","src/lib.rs":"9cf9ef2dd473a50bae8304be792a66204d6e9fc1e9de38902bc265643620d043","src/log.rs":"3f901d61125584a50b05892b7e690872bda15be2150b9c0595c6125664f4cf3e","src/private.rs":"152f6d65ce4741616a1dec796b9442f78a018d38bb040f76c4cd85008333a3bb","src/registry.rs":"39c3190ed74e340cc3d4c91838d2761450dd4e473c0059aa424036ccbbbfae65","src/scope/mod.rs":"acf475f32391843bbe297ce1d1e6d37ed951992ca26349fc65941255e31cdeb5","src/scope/test.rs":"d4f068cae4ee4483b41bd3054582d96e74ced46eb57361e7510ef62d4318d340","src/sleep/README.md":"e1ac1a5556cf257f38b7654feb0615c208d9186fefbe52a584d4fe6545d7c373","src/sleep/counters.rs":"2ce3052f05b3b75b1b96c6604fc0dfb6de867426981b37641410c068f92897bd","src/sleep/mod.rs":"94d36b5659657a0a4814228eb0538e41345de11b021e306382f14ebd501884ff","src/spawn/mod.rs":"745494a18fc4901c37ea2f45a1324abf5bd2a4d9c840620956e6633755116d88","src/spawn/test.rs":"a28f8943f28a4cef642b6429c538b1df879c9eb1db9927ce69b97c686bf81173","src/test.rs":"7d0dee06fcf41bddf77449a85cece44133f966a0622a31cf3ed110fbe83e094e","src/thread_pool/mod.rs":"392ad78a209826c4fb7257288dc082ace380220893d44559480045587e279202","src/thread_pool/test.rs":"cf63d45ae1f0e7fd3c6d5e4b2aafa8900338c141e04aba15711b02b4a71febb2","src/unwind.rs":"7baa4511467d008b14856ea8de7ced92b9251c9df4854f69c81f7efc3cf0cd6c","tests/double_init_fail.rs":"8c208ce45e83ab1dfc5890353d5b2f06fc8005684ae622827a65d05abb35a072","tests/init_zero_threads.rs":"5c7f7e0e13e9ead3733253e30d6b52ac5ee66fd6c105999d096bdf31cfccaf95","tests/scope_join.rs":"56f570c4b6a01704aacf93e7f17f89fe0f40f46ed6f9ede517abfe9adaf91f83","tests/scoped_threadpool.rs":"9753467b3de37dd1d19327fe0075d3c4ba768430b97e7aface39627592e9b09a","tests/simple_panic.rs":"916d40d36c1a0fad3e1dfb31550f0672641feab4b03d480f039143dbe2f2445f","tests/stack_overflow_crash.rs":"87b962c66f301ac44f808d992d4e8b861305db0c282f256761a5075c9f018243"},"package":"4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"} \ No newline at end of file
+{"files":{"Cargo.toml":"c25083c4b0fc46e0f63b88b4bc346a1c034698c16ece8f04ce72dd2af9cc7ffb","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0621878e61f0d0fda054bcbe02df75192c28bde1ecc8289cbd86aeba2dd72720","README.md":"7281273bea1d5fdc57731513cf9f0e3b911d06ac9905b03a8375a1324951c35b","build.rs":"fa31cb198b772600d100a7c403ddedccef637d2e6b2da431fa7f02ca41307fc6","src/broadcast/mod.rs":"2c9a84e7e6e5e8d8e23e28d6f2703825d7d6af59f0a16bc6125d5f0d25bd7598","src/broadcast/test.rs":"fe50fc868e67d855a9f71e078b0c3a7780e789652abb4b586accb4ccf035e872","src/compile_fail/mod.rs":"4d70256295bd64691a8c1994b323559cda1888e85f0b45ca55711541c257dcb6","src/compile_fail/quicksort_race1.rs":"35f498cda38f4eb6e00117f78ed68e0fe5a3fa61c25303d9c08a19bda345bc6c","src/compile_fail/quicksort_race2.rs":"cbb40030c7867cae34bb373b6ec5d97c2ac6de39bc917f47879b30eb423924bc","src/compile_fail/quicksort_race3.rs":"8403643e64c969306b1a9b1243378e6ccdd313b57e1878dbd31393618082fd35","src/compile_fail/rc_return.rs":"197894803d8df58fc8005d90c86b90cd98f1972f1a4b57438516a565df35903f","src/compile_fail/rc_upvar.rs":"42d110429621f407ef0dada1306dab116583d2c782a99894204dd8e0ccd2312f","src/compile_fail/scope_join_bad.rs":"892959949f77cadfc07458473e7a290301182027ca64428df5a8ce887be0892b","src/job.rs":"06de0c2add2e303b6383bf11f5f0d75775c1efe6aa7bc16de3992117f1012f09","src/join/mod.rs":"7638c0fc1da1a2d2b14673c8a2e0f87d26c24232cebee26fd334bdc2caa80886","src/join/test.rs":"157db5306e8df89a8eea19dbba499f26c2f44d9803cb36a796c852a9a695821e","src/latch.rs":"81da563b29b03455cd22073d243eaed081e953873c14ac202f6605cd3dac09a5","src/lib.rs":"53bb01b167d56c6ace035666b570fff648eedf03a5c8c415ec37136a0ef35697","src/private.rs":"152f6d65ce4741616a1dec796b9442f78a018d38bb040f76c4cd85008333a3bb","src/registry.rs":"c464c4fdb36c85cfe2a10d6196802b036bb76985d737ab9a67d708f908877672","src/scope/mod.rs":"421a5561093928b1d0081d34c2bff78377055d8f6de0689088f52fe476d3a56a","src/scope/test.rs":"d4f068cae4ee4483b41bd3054582d96e74ced46eb57361e7510ef62d4318d340","src/sleep/README.md":"e1ac1a5556cf257f38b7654feb0615c208d9186fefbe52a584d4fe6545d7c373","src/sleep/counters.rs":"e9eccc7d76d17415156c12d30cc7bf89a5c64ca5742965bb4e6c1ce23c2782e9","src/sleep/mod.rs":"23a9116f84653a5f68ab21c910f1dea5314a5332fdc9473a87710974f4b2c717","src/spawn/mod.rs":"745494a18fc4901c37ea2f45a1324abf5bd2a4d9c840620956e6633755116d88","src/spawn/test.rs":"a28f8943f28a4cef642b6429c538b1df879c9eb1db9927ce69b97c686bf81173","src/test.rs":"7d0dee06fcf41bddf77449a85cece44133f966a0622a31cf3ed110fbe83e094e","src/thread_pool/mod.rs":"392ad78a209826c4fb7257288dc082ace380220893d44559480045587e279202","src/thread_pool/test.rs":"657b1938993eb98fb5f3fd1d02a77728e37d0e833390b4ba82926b9107ce3170","src/unwind.rs":"7baa4511467d008b14856ea8de7ced92b9251c9df4854f69c81f7efc3cf0cd6c","tests/double_init_fail.rs":"8c208ce45e83ab1dfc5890353d5b2f06fc8005684ae622827a65d05abb35a072","tests/init_zero_threads.rs":"5c7f7e0e13e9ead3733253e30d6b52ac5ee66fd6c105999d096bdf31cfccaf95","tests/scope_join.rs":"56f570c4b6a01704aacf93e7f17f89fe0f40f46ed6f9ede517abfe9adaf91f83","tests/scoped_threadpool.rs":"24d1293fe65ad5f194bbff9d1ef0486c3440d0a3783f04eaaaae4929adef5cb8","tests/simple_panic.rs":"916d40d36c1a0fad3e1dfb31550f0672641feab4b03d480f039143dbe2f2445f","tests/stack_overflow_crash.rs":"87b962c66f301ac44f808d992d4e8b861305db0c282f256761a5075c9f018243","tests/use_current_thread.rs":"fe1b981e77e422e616c09502731a70fb2f1c023d2386ef32c9d47e5a6f5bc162"},"package":"5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"} \ No newline at end of file
diff --git a/vendor/rayon-core/Cargo.toml b/vendor/rayon-core/Cargo.toml
index d41715e65..d40cd14fd 100644
--- a/vendor/rayon-core/Cargo.toml
+++ b/vendor/rayon-core/Cargo.toml
@@ -11,9 +11,9 @@
[package]
edition = "2021"
-rust-version = "1.59"
+rust-version = "1.63"
name = "rayon-core"
-version = "1.11.0"
+version = "1.12.0"
authors = [
"Niko Matsakis <niko@alum.mit.edu>",
"Josh Stone <cuviper@gmail.com>",
@@ -58,8 +58,9 @@ path = "tests/simple_panic.rs"
name = "scoped_threadpool"
path = "tests/scoped_threadpool.rs"
-[dependencies.crossbeam-channel]
-version = "0.5.0"
+[[test]]
+name = "use_current_thread"
+path = "tests/use_current_thread.rs"
[dependencies.crossbeam-deque]
version = "0.8.1"
@@ -67,9 +68,6 @@ version = "0.8.1"
[dependencies.crossbeam-utils]
version = "0.8.0"
-[dependencies.num_cpus]
-version = "1.2"
-
[dev-dependencies.rand]
version = "0.8"
diff --git a/vendor/rayon-core/README.md b/vendor/rayon-core/README.md
index 448901bcd..6e2ebe2ee 100644
--- a/vendor/rayon-core/README.md
+++ b/vendor/rayon-core/README.md
@@ -8,4 +8,4 @@ Please see [Rayon Docs] for details about using Rayon.
[Rayon Docs]: https://docs.rs/rayon/
-Rayon-core currently requires `rustc 1.59.0` or greater.
+Rayon-core currently requires `rustc 1.63.0` or greater.
diff --git a/vendor/rayon-core/src/broadcast/mod.rs b/vendor/rayon-core/src/broadcast/mod.rs
index d991c5461..96611e470 100644
--- a/vendor/rayon-core/src/broadcast/mod.rs
+++ b/vendor/rayon-core/src/broadcast/mod.rs
@@ -1,7 +1,6 @@
use crate::job::{ArcJob, StackJob};
-use crate::latch::LatchRef;
+use crate::latch::{CountLatch, LatchRef};
use crate::registry::{Registry, WorkerThread};
-use crate::scope::ScopeLatch;
use std::fmt;
use std::marker::PhantomData;
use std::sync::Arc;
@@ -107,7 +106,7 @@ where
let n_threads = registry.num_threads();
let current_thread = WorkerThread::current().as_ref();
- let latch = ScopeLatch::with_count(n_threads, current_thread);
+ let latch = CountLatch::with_count(n_threads, current_thread);
let jobs: Vec<_> = (0..n_threads)
.map(|_| StackJob::new(&f, LatchRef::new(&latch)))
.collect();
diff --git a/vendor/rayon-core/src/broadcast/test.rs b/vendor/rayon-core/src/broadcast/test.rs
index 3ae11f7f6..00ab4ad7f 100644
--- a/vendor/rayon-core/src/broadcast/test.rs
+++ b/vendor/rayon-core/src/broadcast/test.rs
@@ -2,6 +2,7 @@
use crate::ThreadPoolBuilder;
use std::sync::atomic::{AtomicUsize, Ordering};
+use std::sync::mpsc::channel;
use std::sync::Arc;
use std::{thread, time};
@@ -14,7 +15,7 @@ fn broadcast_global() {
#[test]
#[cfg_attr(any(target_os = "emscripten", target_family = "wasm"), ignore)]
fn spawn_broadcast_global() {
- let (tx, rx) = crossbeam_channel::unbounded();
+ let (tx, rx) = channel();
crate::spawn_broadcast(move |ctx| tx.send(ctx.index()).unwrap());
let mut v: Vec<_> = rx.into_iter().collect();
@@ -33,7 +34,7 @@ fn broadcast_pool() {
#[test]
#[cfg_attr(any(target_os = "emscripten", target_family = "wasm"), ignore)]
fn spawn_broadcast_pool() {
- let (tx, rx) = crossbeam_channel::unbounded();
+ let (tx, rx) = channel();
let pool = ThreadPoolBuilder::new().num_threads(7).build().unwrap();
pool.spawn_broadcast(move |ctx| tx.send(ctx.index()).unwrap());
@@ -53,7 +54,7 @@ fn broadcast_self() {
#[test]
#[cfg_attr(any(target_os = "emscripten", target_family = "wasm"), ignore)]
fn spawn_broadcast_self() {
- let (tx, rx) = crossbeam_channel::unbounded();
+ let (tx, rx) = channel();
let pool = ThreadPoolBuilder::new().num_threads(7).build().unwrap();
pool.spawn(|| crate::spawn_broadcast(move |ctx| tx.send(ctx.index()).unwrap()));
@@ -81,7 +82,7 @@ fn broadcast_mutual() {
#[test]
#[cfg_attr(any(target_os = "emscripten", target_family = "wasm"), ignore)]
fn spawn_broadcast_mutual() {
- let (tx, rx) = crossbeam_channel::unbounded();
+ let (tx, rx) = channel();
let pool1 = Arc::new(ThreadPoolBuilder::new().num_threads(3).build().unwrap());
let pool2 = ThreadPoolBuilder::new().num_threads(7).build().unwrap();
pool1.spawn({
@@ -118,7 +119,7 @@ fn broadcast_mutual_sleepy() {
#[test]
#[cfg_attr(any(target_os = "emscripten", target_family = "wasm"), ignore)]
fn spawn_broadcast_mutual_sleepy() {
- let (tx, rx) = crossbeam_channel::unbounded();
+ let (tx, rx) = channel();
let pool1 = Arc::new(ThreadPoolBuilder::new().num_threads(3).build().unwrap());
let pool2 = ThreadPoolBuilder::new().num_threads(7).build().unwrap();
pool1.spawn({
@@ -158,8 +159,8 @@ fn broadcast_panic_one() {
#[test]
#[cfg_attr(not(panic = "unwind"), ignore)]
fn spawn_broadcast_panic_one() {
- let (tx, rx) = crossbeam_channel::unbounded();
- let (panic_tx, panic_rx) = crossbeam_channel::unbounded();
+ let (tx, rx) = channel();
+ let (panic_tx, panic_rx) = channel();
let pool = ThreadPoolBuilder::new()
.num_threads(7)
.panic_handler(move |e| panic_tx.send(e).unwrap())
@@ -196,8 +197,8 @@ fn broadcast_panic_many() {
#[test]
#[cfg_attr(not(panic = "unwind"), ignore)]
fn spawn_broadcast_panic_many() {
- let (tx, rx) = crossbeam_channel::unbounded();
- let (panic_tx, panic_rx) = crossbeam_channel::unbounded();
+ let (tx, rx) = channel();
+ let (panic_tx, panic_rx) = channel();
let pool = ThreadPoolBuilder::new()
.num_threads(7)
.panic_handler(move |e| panic_tx.send(e).unwrap())
@@ -231,7 +232,7 @@ fn broadcast_sleep_race() {
#[test]
fn broadcast_after_spawn_broadcast() {
- let (tx, rx) = crossbeam_channel::unbounded();
+ let (tx, rx) = channel();
// Queue a non-blocking spawn_broadcast.
crate::spawn_broadcast(move |ctx| tx.send(ctx.index()).unwrap());
@@ -247,7 +248,7 @@ fn broadcast_after_spawn_broadcast() {
#[test]
fn broadcast_after_spawn() {
- let (tx, rx) = crossbeam_channel::bounded(1);
+ let (tx, rx) = channel();
// Queue a regular spawn on a thread-local deque.
crate::registry::in_worker(move |_, _| {
diff --git a/vendor/rayon-core/src/latch.rs b/vendor/rayon-core/src/latch.rs
index de4327234..b0cbbd833 100644
--- a/vendor/rayon-core/src/latch.rs
+++ b/vendor/rayon-core/src/latch.rs
@@ -84,13 +84,6 @@ impl CoreLatch {
}
}
- /// Returns the address of this core latch as an integer. Used
- /// for logging.
- #[inline]
- pub(super) fn addr(&self) -> usize {
- self as *const CoreLatch as usize
- }
-
/// Invoked by owning thread as it prepares to sleep. Returns true
/// if the owning thread may proceed to fall asleep, false if the
/// latch was set in the meantime.
@@ -142,6 +135,13 @@ impl CoreLatch {
}
}
+impl AsCoreLatch for CoreLatch {
+ #[inline]
+ fn as_core_latch(&self) -> &CoreLatch {
+ self
+ }
+}
+
/// Spin latches are the simplest, most efficient kind, but they do
/// not support a `wait()` operation. They just have a boolean flag
/// that becomes true when `set()` is called.
@@ -269,62 +269,32 @@ impl Latch for LockLatch {
}
}
-/// Counting latches are used to implement scopes. They track a
-/// counter. Unlike other latches, calling `set()` does not
-/// necessarily make the latch be considered `set()`; instead, it just
-/// decrements the counter. The latch is only "set" (in the sense that
-/// `probe()` returns true) once the counter reaches zero.
+/// Once latches are used to implement one-time blocking, primarily
+/// for the termination flag of the threads in the pool.
///
-/// Note: like a `SpinLatch`, count laches are always associated with
+/// Note: like a `SpinLatch`, once-latches are always associated with
/// some registry that is probing them, which must be tickled when
/// they are set. *Unlike* a `SpinLatch`, they don't themselves hold a
/// reference to that registry. This is because in some cases the
-/// registry owns the count-latch, and that would create a cycle. So a
-/// `CountLatch` must be given a reference to its owning registry when
+/// registry owns the once-latch, and that would create a cycle. So a
+/// `OnceLatch` must be given a reference to its owning registry when
/// it is set. For this reason, it does not implement the `Latch`
/// trait (but it doesn't have to, as it is not used in those generic
/// contexts).
#[derive(Debug)]
-pub(super) struct CountLatch {
+pub(super) struct OnceLatch {
core_latch: CoreLatch,
- counter: AtomicUsize,
}
-impl CountLatch {
- #[inline]
- pub(super) fn new() -> CountLatch {
- Self::with_count(1)
- }
-
+impl OnceLatch {
#[inline]
- pub(super) fn with_count(n: usize) -> CountLatch {
- CountLatch {
+ pub(super) fn new() -> OnceLatch {
+ Self {
core_latch: CoreLatch::new(),
- counter: AtomicUsize::new(n),
- }
- }
-
- #[inline]
- pub(super) fn increment(&self) {
- debug_assert!(!self.core_latch.probe());
- self.counter.fetch_add(1, Ordering::Relaxed);
- }
-
- /// Decrements the latch counter by one. If this is the final
- /// count, then the latch is **set**, and calls to `probe()` will
- /// return true. Returns whether the latch was set.
- #[inline]
- pub(super) unsafe fn set(this: *const Self) -> bool {
- if (*this).counter.fetch_sub(1, Ordering::SeqCst) == 1 {
- CoreLatch::set(&(*this).core_latch);
- true
- } else {
- false
}
}
- /// Decrements the latch counter by one and possibly set it. If
- /// the latch is set, then the specific worker thread is tickled,
+ /// Set the latch, then tickle the specific worker thread,
/// which should be the one that owns this latch.
#[inline]
pub(super) unsafe fn set_and_tickle_one(
@@ -332,31 +302,81 @@ impl CountLatch {
registry: &Registry,
target_worker_index: usize,
) {
- if Self::set(this) {
+ if CoreLatch::set(&(*this).core_latch) {
registry.notify_worker_latch_is_set(target_worker_index);
}
}
}
-impl AsCoreLatch for CountLatch {
+impl AsCoreLatch for OnceLatch {
#[inline]
fn as_core_latch(&self) -> &CoreLatch {
&self.core_latch
}
}
+/// Counting latches are used to implement scopes. They track a
+/// counter. Unlike other latches, calling `set()` does not
+/// necessarily make the latch be considered `set()`; instead, it just
+/// decrements the counter. The latch is only "set" (in the sense that
+/// `probe()` returns true) once the counter reaches zero.
#[derive(Debug)]
-pub(super) struct CountLockLatch {
- lock_latch: LockLatch,
+pub(super) struct CountLatch {
counter: AtomicUsize,
+ kind: CountLatchKind,
}
-impl CountLockLatch {
- #[inline]
- pub(super) fn with_count(n: usize) -> CountLockLatch {
- CountLockLatch {
- lock_latch: LockLatch::new(),
- counter: AtomicUsize::new(n),
+enum CountLatchKind {
+ /// A latch for scopes created on a rayon thread which will participate in work-
+ /// stealing while it waits for completion. This thread is not necessarily part
+ /// of the same registry as the scope itself!
+ Stealing {
+ latch: CoreLatch,
+ /// If a worker thread in registry A calls `in_place_scope` on a ThreadPool
+ /// with registry B, when a job completes in a thread of registry B, we may
+ /// need to call `notify_worker_latch_is_set()` to wake the thread in registry A.
+ /// That means we need a reference to registry A (since at that point we will
+ /// only have a reference to registry B), so we stash it here.
+ registry: Arc<Registry>,
+ /// The index of the worker to wake in `registry`
+ worker_index: usize,
+ },
+
+ /// A latch for scopes created on a non-rayon thread which will block to wait.
+ Blocking { latch: LockLatch },
+}
+
+impl std::fmt::Debug for CountLatchKind {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ match self {
+ CountLatchKind::Stealing { latch, .. } => {
+ f.debug_tuple("Stealing").field(latch).finish()
+ }
+ CountLatchKind::Blocking { latch, .. } => {
+ f.debug_tuple("Blocking").field(latch).finish()
+ }
+ }
+ }
+}
+
+impl CountLatch {
+ pub(super) fn new(owner: Option<&WorkerThread>) -> Self {
+ Self::with_count(1, owner)
+ }
+
+ pub(super) fn with_count(count: usize, owner: Option<&WorkerThread>) -> Self {
+ Self {
+ counter: AtomicUsize::new(count),
+ kind: match owner {
+ Some(owner) => CountLatchKind::Stealing {
+ latch: CoreLatch::new(),
+ registry: Arc::clone(owner.registry()),
+ worker_index: owner.index(),
+ },
+ None => CountLatchKind::Blocking {
+ latch: LockLatch::new(),
+ },
+ },
}
}
@@ -366,16 +386,42 @@ impl CountLockLatch {
debug_assert!(old_counter != 0);
}
- pub(super) fn wait(&self) {
- self.lock_latch.wait();
+ pub(super) fn wait(&self, owner: Option<&WorkerThread>) {
+ match &self.kind {
+ CountLatchKind::Stealing {
+ latch,
+ registry,
+ worker_index,
+ } => unsafe {
+ let owner = owner.expect("owner thread");
+ debug_assert_eq!(registry.id(), owner.registry().id());
+ debug_assert_eq!(*worker_index, owner.index());
+ owner.wait_until(latch);
+ },
+ CountLatchKind::Blocking { latch } => latch.wait(),
+ }
}
}
-impl Latch for CountLockLatch {
+impl Latch for CountLatch {
#[inline]
unsafe fn set(this: *const Self) {
if (*this).counter.fetch_sub(1, Ordering::SeqCst) == 1 {
- LockLatch::set(&(*this).lock_latch);
+ // NOTE: Once we call `set` on the internal `latch`,
+ // the target may proceed and invalidate `this`!
+ match (*this).kind {
+ CountLatchKind::Stealing {
+ ref latch,
+ ref registry,
+ worker_index,
+ } => {
+ let registry = Arc::clone(registry);
+ if CoreLatch::set(latch) {
+ registry.notify_worker_latch_is_set(worker_index);
+ }
+ }
+ CountLatchKind::Blocking { ref latch } => LockLatch::set(latch),
+ }
}
}
}
diff --git a/vendor/rayon-core/src/lib.rs b/vendor/rayon-core/src/lib.rs
index c9694ee16..7001c8c1d 100644
--- a/vendor/rayon-core/src/lib.rs
+++ b/vendor/rayon-core/src/lib.rs
@@ -73,10 +73,9 @@ use std::fmt;
use std::io;
use std::marker::PhantomData;
use std::str::FromStr;
+use std::thread;
#[macro_use]
-mod log;
-#[macro_use]
mod private;
mod broadcast;
@@ -148,6 +147,7 @@ pub struct ThreadPoolBuildError {
#[derive(Debug)]
enum ErrorKind {
GlobalPoolAlreadyInitialized,
+ CurrentThreadAlreadyInPool,
IOError(io::Error),
}
@@ -175,6 +175,9 @@ pub struct ThreadPoolBuilder<S = DefaultSpawn> {
/// If RAYON_NUM_THREADS is invalid or zero will use the default.
num_threads: usize,
+ /// The thread we're building *from* will also be part of the pool.
+ use_current_thread: bool,
+
/// Custom closure, if any, to handle a panic that we cannot propagate
/// anywhere else.
panic_handler: Option<Box<PanicHandler>>,
@@ -228,6 +231,7 @@ impl Default for ThreadPoolBuilder {
fn default() -> Self {
ThreadPoolBuilder {
num_threads: 0,
+ use_current_thread: false,
panic_handler: None,
get_thread_name: None,
stack_size: None,
@@ -284,12 +288,12 @@ where
impl ThreadPoolBuilder {
/// Creates a scoped `ThreadPool` initialized using this configuration.
///
- /// This is a convenience function for building a pool using [`crossbeam::scope`]
+ /// This is a convenience function for building a pool using [`std::thread::scope`]
/// to spawn threads in a [`spawn_handler`](#method.spawn_handler).
/// The threads in this pool will start by calling `wrapper`, which should
/// do initialization and continue by calling `ThreadBuilder::run()`.
///
- /// [`crossbeam::scope`]: https://docs.rs/crossbeam/0.8/crossbeam/fn.scope.html
+ /// [`std::thread::scope`]: https://doc.rust-lang.org/std/thread/fn.scope.html
///
/// # Examples
///
@@ -324,28 +328,22 @@ impl ThreadPoolBuilder {
W: Fn(ThreadBuilder) + Sync, // expected to call `run()`
F: FnOnce(&ThreadPool) -> R,
{
- let result = crossbeam_utils::thread::scope(|scope| {
- let wrapper = &wrapper;
+ std::thread::scope(|scope| {
let pool = self
.spawn_handler(|thread| {
- let mut builder = scope.builder();
+ let mut builder = std::thread::Builder::new();
if let Some(name) = thread.name() {
builder = builder.name(name.to_string());
}
if let Some(size) = thread.stack_size() {
builder = builder.stack_size(size);
}
- builder.spawn(move |_| wrapper(thread))?;
+ builder.spawn_scoped(scope, || wrapper(thread))?;
Ok(())
})
.build()?;
Ok(with_pool(&pool))
- });
-
- match result {
- Ok(result) => result,
- Err(err) => unwind::resume_unwinding(err),
- }
+ })
}
}
@@ -354,13 +352,11 @@ impl<S> ThreadPoolBuilder<S> {
///
/// Note that the threads will not exit until after the pool is dropped. It
/// is up to the caller to wait for thread termination if that is important
- /// for any invariants. For instance, threads created in [`crossbeam::scope`]
+ /// for any invariants. For instance, threads created in [`std::thread::scope`]
/// will be joined before that scope returns, and this will block indefinitely
/// if the pool is leaked. Furthermore, the global thread pool doesn't terminate
/// until the entire process exits!
///
- /// [`crossbeam::scope`]: https://docs.rs/crossbeam/0.8/crossbeam/fn.scope.html
- ///
/// # Examples
///
/// A minimal spawn handler just needs to call `run()` from an independent thread.
@@ -409,6 +405,7 @@ impl<S> ThreadPoolBuilder<S> {
/// or [`std::thread::scope`] introduced in Rust 1.63, which is encapsulated in
/// [`build_scoped`](#method.build_scoped).
///
+ /// [`crossbeam::scope`]: https://docs.rs/crossbeam/0.8/crossbeam/fn.scope.html
/// [`std::thread::scope`]: https://doc.rust-lang.org/std/thread/fn.scope.html
///
/// ```
@@ -445,6 +442,7 @@ impl<S> ThreadPoolBuilder<S> {
spawn_handler: CustomSpawn::new(spawn),
// ..self
num_threads: self.num_threads,
+ use_current_thread: self.use_current_thread,
panic_handler: self.panic_handler,
get_thread_name: self.get_thread_name,
stack_size: self.stack_size,
@@ -465,12 +463,18 @@ impl<S> ThreadPoolBuilder<S> {
if self.num_threads > 0 {
self.num_threads
} else {
+ let default = || {
+ thread::available_parallelism()
+ .map(|n| n.get())
+ .unwrap_or(1)
+ };
+
match env::var("RAYON_NUM_THREADS")
.ok()
.and_then(|s| usize::from_str(&s).ok())
{
- Some(x) if x > 0 => return x,
- Some(x) if x == 0 => return num_cpus::get(),
+ Some(x @ 1..) => return x,
+ Some(0) => return default(),
_ => {}
}
@@ -479,8 +483,8 @@ impl<S> ThreadPoolBuilder<S> {
.ok()
.and_then(|s| usize::from_str(&s).ok())
{
- Some(x) if x > 0 => x,
- _ => num_cpus::get(),
+ Some(x @ 1..) => x,
+ _ => default(),
}
}
}
@@ -519,9 +523,8 @@ impl<S> ThreadPoolBuilder<S> {
/// may change in the future, if you wish to rely on a fixed
/// number of threads, you should use this function to specify
/// that number. To reproduce the current default behavior, you
- /// may wish to use the [`num_cpus`
- /// crate](https://crates.io/crates/num_cpus) to query the number
- /// of CPUs dynamically.
+ /// may wish to use [`std::thread::available_parallelism`]
+ /// to query the number of CPUs dynamically.
///
/// **Old environment variable:** `RAYON_NUM_THREADS` is a one-to-one
/// replacement of the now deprecated `RAYON_RS_NUM_CPUS` environment
@@ -532,6 +535,24 @@ impl<S> ThreadPoolBuilder<S> {
self
}
+ /// Use the current thread as one of the threads in the pool.
+ ///
+ /// The current thread is guaranteed to be at index 0, and since the thread is not managed by
+ /// rayon, the spawn and exit handlers do not run for that thread.
+ ///
+ /// Note that the current thread won't run the main work-stealing loop, so jobs spawned into
+ /// the thread-pool will generally not be picked up automatically by this thread unless you
+ /// yield to rayon in some way, like via [`yield_now()`], [`yield_local()`], or [`scope()`].
+ ///
+ /// # Local thread-pools
+ ///
+ /// Using this in a local thread-pool means the registry will be leaked. In future versions
+ /// there might be a way of cleaning up the current-thread state.
+ pub fn use_current_thread(mut self) -> Self {
+ self.use_current_thread = true;
+ self
+ }
+
/// Returns a copy of the current panic handler.
fn take_panic_handler(&mut self) -> Option<Box<PanicHandler>> {
self.panic_handler.take()
@@ -734,18 +755,22 @@ impl ThreadPoolBuildError {
const GLOBAL_POOL_ALREADY_INITIALIZED: &str =
"The global thread pool has already been initialized.";
+const CURRENT_THREAD_ALREADY_IN_POOL: &str =
+ "The current thread is already part of another thread pool.";
+
impl Error for ThreadPoolBuildError {
#[allow(deprecated)]
fn description(&self) -> &str {
match self.kind {
ErrorKind::GlobalPoolAlreadyInitialized => GLOBAL_POOL_ALREADY_INITIALIZED,
+ ErrorKind::CurrentThreadAlreadyInPool => CURRENT_THREAD_ALREADY_IN_POOL,
ErrorKind::IOError(ref e) => e.description(),
}
}
fn source(&self) -> Option<&(dyn Error + 'static)> {
match &self.kind {
- ErrorKind::GlobalPoolAlreadyInitialized => None,
+ ErrorKind::GlobalPoolAlreadyInitialized | ErrorKind::CurrentThreadAlreadyInPool => None,
ErrorKind::IOError(e) => Some(e),
}
}
@@ -754,6 +779,7 @@ impl Error for ThreadPoolBuildError {
impl fmt::Display for ThreadPoolBuildError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match &self.kind {
+ ErrorKind::CurrentThreadAlreadyInPool => CURRENT_THREAD_ALREADY_IN_POOL.fmt(f),
ErrorKind::GlobalPoolAlreadyInitialized => GLOBAL_POOL_ALREADY_INITIALIZED.fmt(f),
ErrorKind::IOError(e) => e.fmt(f),
}
@@ -771,6 +797,7 @@ impl<S> fmt::Debug for ThreadPoolBuilder<S> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let ThreadPoolBuilder {
ref num_threads,
+ ref use_current_thread,
ref get_thread_name,
ref panic_handler,
ref stack_size,
@@ -795,6 +822,7 @@ impl<S> fmt::Debug for ThreadPoolBuilder<S> {
f.debug_struct("ThreadPoolBuilder")
.field("num_threads", num_threads)
+ .field("use_current_thread", use_current_thread)
.field("get_thread_name", &get_thread_name)
.field("panic_handler", &panic_handler)
.field("stack_size", &stack_size)
diff --git a/vendor/rayon-core/src/log.rs b/vendor/rayon-core/src/log.rs
deleted file mode 100644
index 7b6daf0ab..000000000
--- a/vendor/rayon-core/src/log.rs
+++ /dev/null
@@ -1,413 +0,0 @@
-//! Debug Logging
-//!
-//! To use in a debug build, set the env var `RAYON_LOG` as
-//! described below. In a release build, logs are compiled out by
-//! default unless Rayon is built with `--cfg rayon_rs_log` (try
-//! `RUSTFLAGS="--cfg rayon_rs_log"`).
-//!
-//! Note that logs are an internally debugging tool and their format
-//! is considered unstable, as are the details of how to enable them.
-//!
-//! # Valid values for RAYON_LOG
-//!
-//! The `RAYON_LOG` variable can take on the following values:
-//!
-//! * `tail:<file>` -- dumps the last 10,000 events into the given file;
-//! useful for tracking down deadlocks
-//! * `profile:<file>` -- dumps only those events needed to reconstruct how
-//! many workers are active at a given time
-//! * `all:<file>` -- dumps every event to the file; useful for debugging
-
-use crossbeam_channel::{self, Receiver, Sender};
-use std::collections::VecDeque;
-use std::env;
-use std::fs::File;
-use std::io::{self, BufWriter, Write};
-
-/// True if logs are compiled in.
-pub(super) const LOG_ENABLED: bool = cfg!(any(rayon_rs_log, debug_assertions));
-
-#[derive(Copy, Clone, PartialOrd, Ord, PartialEq, Eq, Debug)]
-pub(super) enum Event {
- /// Flushes events to disk, used to terminate benchmarking.
- Flush,
-
- /// Indicates that a worker thread started execution.
- ThreadStart {
- worker: usize,
- terminate_addr: usize,
- },
-
- /// Indicates that a worker thread started execution.
- ThreadTerminate { worker: usize },
-
- /// Indicates that a worker thread became idle, blocked on `latch_addr`.
- ThreadIdle { worker: usize, latch_addr: usize },
-
- /// Indicates that an idle worker thread found work to do, after
- /// yield rounds. It should no longer be considered idle.
- ThreadFoundWork { worker: usize, yields: u32 },
-
- /// Indicates that a worker blocked on a latch observed that it was set.
- ///
- /// Internal debugging event that does not affect the state
- /// machine.
- ThreadSawLatchSet { worker: usize, latch_addr: usize },
-
- /// Indicates that an idle worker is getting sleepy. `sleepy_counter` is the internal
- /// sleep state that we saw at the time.
- ThreadSleepy { worker: usize, jobs_counter: usize },
-
- /// Indicates that the thread's attempt to fall asleep was
- /// interrupted because the latch was set. (This is not, in and of
- /// itself, a change to the thread state.)
- ThreadSleepInterruptedByLatch { worker: usize, latch_addr: usize },
-
- /// Indicates that the thread's attempt to fall asleep was
- /// interrupted because a job was posted. (This is not, in and of
- /// itself, a change to the thread state.)
- ThreadSleepInterruptedByJob { worker: usize },
-
- /// Indicates that an idle worker has gone to sleep.
- ThreadSleeping { worker: usize, latch_addr: usize },
-
- /// Indicates that a sleeping worker has awoken.
- ThreadAwoken { worker: usize, latch_addr: usize },
-
- /// Indicates that the given worker thread was notified it should
- /// awaken.
- ThreadNotify { worker: usize },
-
- /// The given worker has pushed a job to its local deque.
- JobPushed { worker: usize },
-
- /// The given worker has popped a job from its local deque.
- JobPopped { worker: usize },
-
- /// The given worker has stolen a job from the deque of another.
- JobStolen { worker: usize, victim: usize },
-
- /// N jobs were injected into the global queue.
- JobsInjected { count: usize },
-
- /// A job was removed from the global queue.
- JobUninjected { worker: usize },
-
- /// A job was broadcasted to N threads.
- JobBroadcast { count: usize },
-
- /// When announcing a job, this was the value of the counters we observed.
- ///
- /// No effect on thread state, just a debugging event.
- JobThreadCounts {
- worker: usize,
- num_idle: u16,
- num_sleepers: u16,
- },
-}
-
-/// Handle to the logging thread, if any. You can use this to deliver
-/// logs. You can also clone it freely.
-#[derive(Clone)]
-pub(super) struct Logger {
- sender: Option<Sender<Event>>,
-}
-
-impl Logger {
- pub(super) fn new(num_workers: usize) -> Logger {
- if !LOG_ENABLED {
- return Self::disabled();
- }
-
- // see the doc comment for the format
- let env_log = match env::var("RAYON_LOG") {
- Ok(s) => s,
- Err(_) => return Self::disabled(),
- };
-
- let (sender, receiver) = crossbeam_channel::unbounded();
-
- if let Some(filename) = env_log.strip_prefix("tail:") {
- let filename = filename.to_string();
- ::std::thread::spawn(move || {
- Self::tail_logger_thread(num_workers, filename, 10_000, receiver)
- });
- } else if env_log == "all" {
- ::std::thread::spawn(move || Self::all_logger_thread(num_workers, receiver));
- } else if let Some(filename) = env_log.strip_prefix("profile:") {
- let filename = filename.to_string();
- ::std::thread::spawn(move || {
- Self::profile_logger_thread(num_workers, filename, 10_000, receiver)
- });
- } else {
- panic!("RAYON_LOG should be 'tail:<file>' or 'profile:<file>'");
- }
-
- Logger {
- sender: Some(sender),
- }
- }
-
- fn disabled() -> Logger {
- Logger { sender: None }
- }
-
- #[inline]
- pub(super) fn log(&self, event: impl FnOnce() -> Event) {
- if !LOG_ENABLED {
- return;
- }
-
- if let Some(sender) = &self.sender {
- sender.send(event()).unwrap();
- }
- }
-
- fn profile_logger_thread(
- num_workers: usize,
- log_filename: String,
- capacity: usize,
- receiver: Receiver<Event>,
- ) {
- let file = File::create(&log_filename)
- .unwrap_or_else(|err| panic!("failed to open `{}`: {}", log_filename, err));
-
- let mut writer = BufWriter::new(file);
- let mut events = Vec::with_capacity(capacity);
- let mut state = SimulatorState::new(num_workers);
- let timeout = std::time::Duration::from_secs(30);
-
- loop {
- while let Ok(event) = receiver.recv_timeout(timeout) {
- if let Event::Flush = event {
- break;
- }
-
- events.push(event);
- if events.len() == capacity {
- break;
- }
- }
-
- for event in events.drain(..) {
- if state.simulate(&event) {
- state.dump(&mut writer, &event).unwrap();
- }
- }
-
- writer.flush().unwrap();
- }
- }
-
- fn tail_logger_thread(
- num_workers: usize,
- log_filename: String,
- capacity: usize,
- receiver: Receiver<Event>,
- ) {
- let file = File::create(&log_filename)
- .unwrap_or_else(|err| panic!("failed to open `{}`: {}", log_filename, err));
-
- let mut writer = BufWriter::new(file);
- let mut events: VecDeque<Event> = VecDeque::with_capacity(capacity);
- let mut state = SimulatorState::new(num_workers);
- let timeout = std::time::Duration::from_secs(30);
- let mut skipped = false;
-
- loop {
- while let Ok(event) = receiver.recv_timeout(timeout) {
- if let Event::Flush = event {
- // We ignore Flush events in tail mode --
- // we're really just looking for
- // deadlocks.
- continue;
- } else {
- if events.len() == capacity {
- let event = events.pop_front().unwrap();
- state.simulate(&event);
- skipped = true;
- }
-
- events.push_back(event);
- }
- }
-
- if skipped {
- writeln!(writer, "...").unwrap();
- skipped = false;
- }
-
- for event in events.drain(..) {
- // In tail mode, we dump *all* events out, whether or
- // not they were 'interesting' to the state machine.
- state.simulate(&event);
- state.dump(&mut writer, &event).unwrap();
- }
-
- writer.flush().unwrap();
- }
- }
-
- fn all_logger_thread(num_workers: usize, receiver: Receiver<Event>) {
- let stderr = std::io::stderr();
- let mut state = SimulatorState::new(num_workers);
-
- for event in receiver {
- let mut writer = BufWriter::new(stderr.lock());
- state.simulate(&event);
- state.dump(&mut writer, &event).unwrap();
- writer.flush().unwrap();
- }
- }
-}
-
-#[derive(Copy, Clone, PartialOrd, Ord, PartialEq, Eq, Debug)]
-enum State {
- Working,
- Idle,
- Notified,
- Sleeping,
- Terminated,
-}
-
-impl State {
- fn letter(&self) -> char {
- match self {
- State::Working => 'W',
- State::Idle => 'I',
- State::Notified => 'N',
- State::Sleeping => 'S',
- State::Terminated => 'T',
- }
- }
-}
-
-struct SimulatorState {
- local_queue_size: Vec<usize>,
- thread_states: Vec<State>,
- injector_size: usize,
-}
-
-impl SimulatorState {
- fn new(num_workers: usize) -> Self {
- Self {
- local_queue_size: (0..num_workers).map(|_| 0).collect(),
- thread_states: (0..num_workers).map(|_| State::Working).collect(),
- injector_size: 0,
- }
- }
-
- fn simulate(&mut self, event: &Event) -> bool {
- match *event {
- Event::ThreadIdle { worker, .. } => {
- assert_eq!(self.thread_states[worker], State::Working);
- self.thread_states[worker] = State::Idle;
- true
- }
-
- Event::ThreadStart { worker, .. } | Event::ThreadFoundWork { worker, .. } => {
- self.thread_states[worker] = State::Working;
- true
- }
-
- Event::ThreadTerminate { worker, .. } => {
- self.thread_states[worker] = State::Terminated;
- true
- }
-
- Event::ThreadSleeping { worker, .. } => {
- assert_eq!(self.thread_states[worker], State::Idle);
- self.thread_states[worker] = State::Sleeping;
- true
- }
-
- Event::ThreadAwoken { worker, .. } => {
- assert_eq!(self.thread_states[worker], State::Notified);
- self.thread_states[worker] = State::Idle;
- true
- }
-
- Event::JobPushed { worker } => {
- self.local_queue_size[worker] += 1;
- true
- }
-
- Event::JobPopped { worker } => {
- self.local_queue_size[worker] -= 1;
- true
- }
-
- Event::JobStolen { victim, .. } => {
- self.local_queue_size[victim] -= 1;
- true
- }
-
- Event::JobsInjected { count } => {
- self.injector_size += count;
- true
- }
-
- Event::JobUninjected { .. } => {
- self.injector_size -= 1;
- true
- }
-
- Event::ThreadNotify { worker } => {
- // Currently, this log event occurs while holding the
- // thread lock, so we should *always* see it before
- // the worker awakens.
- assert_eq!(self.thread_states[worker], State::Sleeping);
- self.thread_states[worker] = State::Notified;
- true
- }
-
- // remaining events are no-ops from pov of simulating the
- // thread state
- _ => false,
- }
- }
-
- fn dump(&mut self, w: &mut impl Write, event: &Event) -> io::Result<()> {
- let num_idle_threads = self
- .thread_states
- .iter()
- .filter(|s| **s == State::Idle)
- .count();
-
- let num_sleeping_threads = self
- .thread_states
- .iter()
- .filter(|s| **s == State::Sleeping)
- .count();
-
- let num_notified_threads = self
- .thread_states
- .iter()
- .filter(|s| **s == State::Notified)
- .count();
-
- let num_pending_jobs: usize = self.local_queue_size.iter().sum();
-
- write!(w, "{:2},", num_idle_threads)?;
- write!(w, "{:2},", num_sleeping_threads)?;
- write!(w, "{:2},", num_notified_threads)?;
- write!(w, "{:4},", num_pending_jobs)?;
- write!(w, "{:4},", self.injector_size)?;
-
- let event_str = format!("{:?}", event);
- write!(w, r#""{:60}","#, event_str)?;
-
- for ((i, state), queue_size) in (0..).zip(&self.thread_states).zip(&self.local_queue_size) {
- write!(w, " T{:02},{}", i, state.letter(),)?;
-
- if *queue_size > 0 {
- write!(w, ",{:03},", queue_size)?;
- } else {
- write!(w, ", ,")?;
- }
- }
-
- writeln!(w)?;
- Ok(())
- }
-}
diff --git a/vendor/rayon-core/src/registry.rs b/vendor/rayon-core/src/registry.rs
index 5d56ac927..e4f2ac7cd 100644
--- a/vendor/rayon-core/src/registry.rs
+++ b/vendor/rayon-core/src/registry.rs
@@ -1,7 +1,5 @@
use crate::job::{JobFifo, JobRef, StackJob};
-use crate::latch::{AsCoreLatch, CoreLatch, CountLatch, Latch, LatchRef, LockLatch, SpinLatch};
-use crate::log::Event::*;
-use crate::log::Logger;
+use crate::latch::{AsCoreLatch, CoreLatch, Latch, LatchRef, LockLatch, OnceLatch, SpinLatch};
use crate::sleep::Sleep;
use crate::unwind;
use crate::{
@@ -130,7 +128,6 @@ where
}
pub(super) struct Registry {
- logger: Logger,
thread_infos: Vec<ThreadInfo>,
sleep: Sleep,
injected_jobs: Injector<JobRef>,
@@ -210,26 +207,7 @@ fn default_global_registry() -> Result<Arc<Registry>, ThreadPoolBuildError> {
// is stubbed out, and we won't have to change anything if they do add real threading.
let unsupported = matches!(&result, Err(e) if e.is_unsupported());
if unsupported && WorkerThread::current().is_null() {
- let builder = ThreadPoolBuilder::new()
- .num_threads(1)
- .spawn_handler(|thread| {
- // Rather than starting a new thread, we're just taking over the current thread
- // *without* running the main loop, so we can still return from here.
- // The WorkerThread is leaked, but we never shutdown the global pool anyway.
- let worker_thread = Box::leak(Box::new(WorkerThread::from(thread)));
- let registry = &*worker_thread.registry;
- let index = worker_thread.index;
-
- unsafe {
- WorkerThread::set_current(worker_thread);
-
- // let registry know we are ready to do work
- Latch::set(&registry.thread_infos[index].primed);
- }
-
- Ok(())
- });
-
+ let builder = ThreadPoolBuilder::new().num_threads(1).use_current_thread();
let fallback_result = Registry::new(builder);
if fallback_result.is_ok() {
return fallback_result;
@@ -280,11 +258,9 @@ impl Registry {
})
.unzip();
- let logger = Logger::new(n_threads);
let registry = Arc::new(Registry {
- logger: logger.clone(),
thread_infos: stealers.into_iter().map(ThreadInfo::new).collect(),
- sleep: Sleep::new(logger, n_threads),
+ sleep: Sleep::new(n_threads),
injected_jobs: Injector::new(),
broadcasts: Mutex::new(broadcasts),
terminate_count: AtomicUsize::new(1),
@@ -305,6 +281,25 @@ impl Registry {
stealer,
index,
};
+
+ if index == 0 && builder.use_current_thread {
+ if !WorkerThread::current().is_null() {
+ return Err(ThreadPoolBuildError::new(
+ ErrorKind::CurrentThreadAlreadyInPool,
+ ));
+ }
+ // Rather than starting a new thread, we're just taking over the current thread
+ // *without* running the main loop, so we can still return from here.
+ // The WorkerThread is leaked, but we never shutdown the global pool anyway.
+ let worker_thread = Box::into_raw(Box::new(WorkerThread::from(thread)));
+
+ unsafe {
+ WorkerThread::set_current(worker_thread);
+ Latch::set(&registry.thread_infos[index].primed);
+ }
+ continue;
+ }
+
if let Err(e) = builder.get_spawn_handler().spawn(thread) {
return Err(ThreadPoolBuildError::new(ErrorKind::IOError(e)));
}
@@ -363,11 +358,6 @@ impl Registry {
}
}
- #[inline]
- pub(super) fn log(&self, event: impl FnOnce() -> crate::log::Event) {
- self.logger.log(event)
- }
-
pub(super) fn num_threads(&self) -> usize {
self.thread_infos.len()
}
@@ -426,8 +416,6 @@ impl Registry {
/// whatever worker has nothing to do. Use this if you know that
/// you are not on a worker of this registry.
pub(super) fn inject(&self, injected_job: JobRef) {
- self.log(|| JobsInjected { count: 1 });
-
// It should not be possible for `state.terminate` to be true
// here. It is only set to true when the user creates (and
// drops) a `ThreadPool`; and, in that case, they cannot be
@@ -442,22 +430,17 @@ impl Registry {
let queue_was_empty = self.injected_jobs.is_empty();
self.injected_jobs.push(injected_job);
- self.sleep.new_injected_jobs(usize::MAX, 1, queue_was_empty);
+ self.sleep.new_injected_jobs(1, queue_was_empty);
}
fn has_injected_job(&self) -> bool {
!self.injected_jobs.is_empty()
}
- fn pop_injected_job(&self, worker_index: usize) -> Option<JobRef> {
+ fn pop_injected_job(&self) -> Option<JobRef> {
loop {
match self.injected_jobs.steal() {
- Steal::Success(job) => {
- self.log(|| JobUninjected {
- worker: worker_index,
- });
- return Some(job);
- }
+ Steal::Success(job) => return Some(job),
Steal::Empty => return None,
Steal::Retry => {}
}
@@ -471,9 +454,6 @@ impl Registry {
/// **Panics** if not given exactly as many jobs as there are threads.
pub(super) fn inject_broadcast(&self, injected_jobs: impl ExactSizeIterator<Item = JobRef>) {
assert_eq!(self.num_threads(), injected_jobs.len());
- self.log(|| JobBroadcast {
- count: self.num_threads(),
- });
{
let broadcasts = self.broadcasts.lock().unwrap();
@@ -545,9 +525,6 @@ impl Registry {
self.inject(job.as_job_ref());
job.latch.wait_and_reset(); // Make sure we can use the same latch again next time.
- // flush accumulated logs as we exit the thread
- self.logger.log(|| Flush);
-
job.into_result()
})
}
@@ -610,7 +587,7 @@ impl Registry {
pub(super) fn terminate(&self) {
if self.terminate_count.fetch_sub(1, Ordering::AcqRel) == 1 {
for (i, thread_info) in self.thread_infos.iter().enumerate() {
- unsafe { CountLatch::set_and_tickle_one(&thread_info.terminate, self, i) };
+ unsafe { OnceLatch::set_and_tickle_one(&thread_info.terminate, self, i) };
}
}
}
@@ -640,10 +617,7 @@ struct ThreadInfo {
/// This latch is *set* by the `terminate` method on the
/// `Registry`, once the registry's main "terminate" counter
/// reaches zero.
- ///
- /// NB. We use a `CountLatch` here because it has no lifetimes and is
- /// meant for async use, but the count never gets higher than one.
- terminate: CountLatch,
+ terminate: OnceLatch,
/// the "stealer" half of the worker's deque
stealer: Stealer<JobRef>,
@@ -654,7 +628,7 @@ impl ThreadInfo {
ThreadInfo {
primed: LockLatch::new(),
stopped: LockLatch::new(),
- terminate: CountLatch::new(),
+ terminate: OnceLatch::new(),
stealer,
}
}
@@ -737,11 +711,6 @@ impl WorkerThread {
&self.registry
}
- #[inline]
- pub(super) fn log(&self, event: impl FnOnce() -> crate::log::Event) {
- self.registry.logger.log(event)
- }
-
/// Our index amongst the worker threads (ranges from `0..self.num_threads()`).
#[inline]
pub(super) fn index(&self) -> usize {
@@ -750,12 +719,9 @@ impl WorkerThread {
#[inline]
pub(super) unsafe fn push(&self, job: JobRef) {
- self.log(|| JobPushed { worker: self.index });
let queue_was_empty = self.worker.is_empty();
self.worker.push(job);
- self.registry
- .sleep
- .new_internal_jobs(self.index, 1, queue_was_empty);
+ self.registry.sleep.new_internal_jobs(1, queue_was_empty);
}
#[inline]
@@ -777,7 +743,6 @@ impl WorkerThread {
let popped_job = self.worker.pop();
if popped_job.is_some() {
- self.log(|| JobPopped { worker: self.index });
return popped_job;
}
@@ -813,31 +778,51 @@ impl WorkerThread {
// accesses, which would be *very bad*
let abort_guard = unwind::AbortIfPanic;
- let mut idle_state = self.registry.sleep.start_looking(self.index, latch);
- while !latch.probe() {
- if let Some(job) = self.find_work() {
- self.registry.sleep.work_found(idle_state);
+ 'outer: while !latch.probe() {
+ // Check for local work *before* we start marking ourself idle,
+ // especially to avoid modifying shared sleep state.
+ if let Some(job) = self.take_local_job() {
self.execute(job);
- idle_state = self.registry.sleep.start_looking(self.index, latch);
- } else {
- self.registry
- .sleep
- .no_work_found(&mut idle_state, latch, || self.has_injected_job())
+ continue;
+ }
+
+ let mut idle_state = self.registry.sleep.start_looking(self.index);
+ while !latch.probe() {
+ if let Some(job) = self.find_work() {
+ self.registry.sleep.work_found();
+ self.execute(job);
+ // The job might have injected local work, so go back to the outer loop.
+ continue 'outer;
+ } else {
+ self.registry
+ .sleep
+ .no_work_found(&mut idle_state, latch, || self.has_injected_job())
+ }
}
- }
- // If we were sleepy, we are not anymore. We "found work" --
- // whatever the surrounding thread was doing before it had to
- // wait.
- self.registry.sleep.work_found(idle_state);
+ // If we were sleepy, we are not anymore. We "found work" --
+ // whatever the surrounding thread was doing before it had to wait.
+ self.registry.sleep.work_found();
+ break;
+ }
- self.log(|| ThreadSawLatchSet {
- worker: self.index,
- latch_addr: latch.addr(),
- });
mem::forget(abort_guard); // successful execution, do not abort
}
+ unsafe fn wait_until_out_of_work(&self) {
+ debug_assert_eq!(self as *const _, WorkerThread::current());
+ let registry = &*self.registry;
+ let index = self.index;
+
+ self.wait_until(&registry.thread_infos[index].terminate);
+
+ // Should not be any work left in our queue.
+ debug_assert!(self.take_local_job().is_none());
+
+ // Let registry know we are done
+ Latch::set(&registry.thread_infos[index].stopped);
+ }
+
fn find_work(&self) -> Option<JobRef> {
// Try to find some work to do. We give preference first
// to things in our local deque, then in other workers
@@ -846,7 +831,7 @@ impl WorkerThread {
// we take on something new.
self.take_local_job()
.or_else(|| self.steal())
- .or_else(|| self.registry.pop_injected_job(self.index))
+ .or_else(|| self.registry.pop_injected_job())
}
pub(super) fn yield_now(&self) -> Yield {
@@ -898,13 +883,7 @@ impl WorkerThread {
.find_map(|victim_index| {
let victim = &thread_infos[victim_index];
match victim.stealer.steal() {
- Steal::Success(job) => {
- self.log(|| JobStolen {
- worker: self.index,
- victim: victim_index,
- });
- Some(job)
- }
+ Steal::Success(job) => Some(job),
Steal::Empty => None,
Steal::Retry => {
retry = true;
@@ -940,24 +919,11 @@ unsafe fn main_loop(thread: ThreadBuilder) {
registry.catch_unwind(|| handler(index));
}
- let my_terminate_latch = &registry.thread_infos[index].terminate;
- worker_thread.log(|| ThreadStart {
- worker: index,
- terminate_addr: my_terminate_latch.as_core_latch().addr(),
- });
- worker_thread.wait_until(my_terminate_latch);
-
- // Should not be any work left in our queue.
- debug_assert!(worker_thread.take_local_job().is_none());
-
- // let registry know we are done
- Latch::set(&registry.thread_infos[index].stopped);
+ worker_thread.wait_until_out_of_work();
// Normal termination, do not abort.
mem::forget(abort_guard);
- worker_thread.log(|| ThreadTerminate { worker: index });
-
// Inform a user callback that we exited a thread.
if let Some(ref handler) = registry.exit_handler {
registry.catch_unwind(|| handler(index));
diff --git a/vendor/rayon-core/src/scope/mod.rs b/vendor/rayon-core/src/scope/mod.rs
index f460dd79d..b7163d11c 100644
--- a/vendor/rayon-core/src/scope/mod.rs
+++ b/vendor/rayon-core/src/scope/mod.rs
@@ -7,7 +7,7 @@
use crate::broadcast::BroadcastContext;
use crate::job::{ArcJob, HeapJob, JobFifo, JobRef};
-use crate::latch::{CountLatch, CountLockLatch, Latch};
+use crate::latch::{CountLatch, Latch};
use crate::registry::{global_registry, in_worker, Registry, WorkerThread};
use crate::unwind;
use std::any::Any;
@@ -39,26 +39,6 @@ pub struct ScopeFifo<'scope> {
fifos: Vec<JobFifo>,
}
-pub(super) enum ScopeLatch {
- /// A latch for scopes created on a rayon thread which will participate in work-
- /// stealing while it waits for completion. This thread is not necessarily part
- /// of the same registry as the scope itself!
- Stealing {
- latch: CountLatch,
- /// If a worker thread in registry A calls `in_place_scope` on a ThreadPool
- /// with registry B, when a job completes in a thread of registry B, we may
- /// need to call `latch.set_and_tickle_one()` to wake the thread in registry A.
- /// That means we need a reference to registry A (since at that point we will
- /// only have a reference to registry B), so we stash it here.
- registry: Arc<Registry>,
- /// The index of the worker to wake in `registry`
- worker_index: usize,
- },
-
- /// A latch for scopes created on a non-rayon thread which will block to wait.
- Blocking { latch: CountLockLatch },
-}
-
struct ScopeBase<'scope> {
/// thread registry where `scope()` was executed or where `in_place_scope()`
/// should spawn jobs.
@@ -69,7 +49,7 @@ struct ScopeBase<'scope> {
panic: AtomicPtr<Box<dyn Any + Send + 'static>>,
/// latch to track job counts
- job_completed_latch: ScopeLatch,
+ job_completed_latch: CountLatch,
/// You can think of a scope as containing a list of closures to execute,
/// all of which outlive `'scope`. They're not actually required to be
@@ -650,21 +630,17 @@ impl<'scope> ScopeBase<'scope> {
ScopeBase {
registry: Arc::clone(registry),
panic: AtomicPtr::new(ptr::null_mut()),
- job_completed_latch: ScopeLatch::new(owner),
+ job_completed_latch: CountLatch::new(owner),
marker: PhantomData,
}
}
- fn increment(&self) {
- self.job_completed_latch.increment();
- }
-
fn heap_job_ref<FUNC>(&self, job: Box<HeapJob<FUNC>>) -> JobRef
where
FUNC: FnOnce() + Send + 'scope,
{
unsafe {
- self.increment();
+ self.job_completed_latch.increment();
job.into_job_ref()
}
}
@@ -675,7 +651,7 @@ impl<'scope> ScopeBase<'scope> {
{
let n_threads = self.registry.num_threads();
let job_refs = (0..n_threads).map(|_| unsafe {
- self.increment();
+ self.job_completed_latch.increment();
ArcJob::as_job_ref(&job)
});
@@ -710,17 +686,15 @@ impl<'scope> ScopeBase<'scope> {
where
FUNC: FnOnce() -> R,
{
- match unwind::halt_unwinding(func) {
- Ok(r) => {
- Latch::set(&(*this).job_completed_latch);
- Some(r)
- }
+ let result = match unwind::halt_unwinding(func) {
+ Ok(r) => Some(r),
Err(err) => {
(*this).job_panicked(err);
- Latch::set(&(*this).job_completed_latch);
None
}
- }
+ };
+ Latch::set(&(*this).job_completed_latch);
+ result
}
fn job_panicked(&self, err: Box<dyn Any + Send + 'static>) {
@@ -754,61 +728,6 @@ impl<'scope> ScopeBase<'scope> {
}
}
-impl ScopeLatch {
- fn new(owner: Option<&WorkerThread>) -> Self {
- Self::with_count(1, owner)
- }
-
- pub(super) fn with_count(count: usize, owner: Option<&WorkerThread>) -> Self {
- match owner {
- Some(owner) => ScopeLatch::Stealing {
- latch: CountLatch::with_count(count),
- registry: Arc::clone(owner.registry()),
- worker_index: owner.index(),
- },
- None => ScopeLatch::Blocking {
- latch: CountLockLatch::with_count(count),
- },
- }
- }
-
- fn increment(&self) {
- match self {
- ScopeLatch::Stealing { latch, .. } => latch.increment(),
- ScopeLatch::Blocking { latch } => latch.increment(),
- }
- }
-
- pub(super) fn wait(&self, owner: Option<&WorkerThread>) {
- match self {
- ScopeLatch::Stealing {
- latch,
- registry,
- worker_index,
- } => unsafe {
- let owner = owner.expect("owner thread");
- debug_assert_eq!(registry.id(), owner.registry().id());
- debug_assert_eq!(*worker_index, owner.index());
- owner.wait_until(latch);
- },
- ScopeLatch::Blocking { latch } => latch.wait(),
- }
- }
-}
-
-impl Latch for ScopeLatch {
- unsafe fn set(this: *const Self) {
- match &*this {
- ScopeLatch::Stealing {
- latch,
- registry,
- worker_index,
- } => CountLatch::set_and_tickle_one(latch, registry, *worker_index),
- ScopeLatch::Blocking { latch } => Latch::set(latch),
- }
- }
-}
-
impl<'scope> fmt::Debug for Scope<'scope> {
fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
fmt.debug_struct("Scope")
@@ -830,21 +749,6 @@ impl<'scope> fmt::Debug for ScopeFifo<'scope> {
}
}
-impl fmt::Debug for ScopeLatch {
- fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
- match self {
- ScopeLatch::Stealing { latch, .. } => fmt
- .debug_tuple("ScopeLatch::Stealing")
- .field(latch)
- .finish(),
- ScopeLatch::Blocking { latch } => fmt
- .debug_tuple("ScopeLatch::Blocking")
- .field(latch)
- .finish(),
- }
- }
-}
-
/// Used to capture a scope `&Self` pointer in jobs, without faking a lifetime.
///
/// Unsafe code is still required to dereference the pointer, but that's fine in
diff --git a/vendor/rayon-core/src/sleep/counters.rs b/vendor/rayon-core/src/sleep/counters.rs
index f2a3de3e1..53d2c5527 100644
--- a/vendor/rayon-core/src/sleep/counters.rs
+++ b/vendor/rayon-core/src/sleep/counters.rs
@@ -212,12 +212,12 @@ impl AtomicCounters {
#[inline]
fn select_thread(word: usize, shift: usize) -> usize {
- ((word >> shift) as usize) & THREADS_MAX
+ (word >> shift) & THREADS_MAX
}
#[inline]
fn select_jec(word: usize) -> usize {
- (word >> JEC_SHIFT) as usize
+ word >> JEC_SHIFT
}
impl Counters {
diff --git a/vendor/rayon-core/src/sleep/mod.rs b/vendor/rayon-core/src/sleep/mod.rs
index af7225a35..03d1077f7 100644
--- a/vendor/rayon-core/src/sleep/mod.rs
+++ b/vendor/rayon-core/src/sleep/mod.rs
@@ -2,8 +2,6 @@
//! for an overview.
use crate::latch::CoreLatch;
-use crate::log::Event::*;
-use crate::log::Logger;
use crossbeam_utils::CachePadded;
use std::sync::atomic::Ordering;
use std::sync::{Condvar, Mutex};
@@ -22,8 +20,6 @@ use self::counters::{AtomicCounters, JobsEventCounter};
///
/// [`README.md`] README.md
pub(super) struct Sleep {
- logger: Logger,
-
/// One "sleep state" per worker. Used to track if a worker is sleeping and to have
/// them block.
worker_sleep_states: Vec<CachePadded<WorkerSleepState>>,
@@ -62,22 +58,16 @@ const ROUNDS_UNTIL_SLEEPY: u32 = 32;
const ROUNDS_UNTIL_SLEEPING: u32 = ROUNDS_UNTIL_SLEEPY + 1;
impl Sleep {
- pub(super) fn new(logger: Logger, n_threads: usize) -> Sleep {
+ pub(super) fn new(n_threads: usize) -> Sleep {
assert!(n_threads <= THREADS_MAX);
Sleep {
- logger,
worker_sleep_states: (0..n_threads).map(|_| Default::default()).collect(),
counters: AtomicCounters::new(),
}
}
#[inline]
- pub(super) fn start_looking(&self, worker_index: usize, latch: &CoreLatch) -> IdleState {
- self.logger.log(|| ThreadIdle {
- worker: worker_index,
- latch_addr: latch.addr(),
- });
-
+ pub(super) fn start_looking(&self, worker_index: usize) -> IdleState {
self.counters.add_inactive_thread();
IdleState {
@@ -88,12 +78,7 @@ impl Sleep {
}
#[inline]
- pub(super) fn work_found(&self, idle_state: IdleState) {
- self.logger.log(|| ThreadFoundWork {
- worker: idle_state.worker_index,
- yields: idle_state.rounds,
- });
-
+ pub(super) fn work_found(&self) {
// If we were the last idle thread and other threads are still sleeping,
// then we should wake up another thread.
let threads_to_wake = self.counters.sub_inactive_thread();
@@ -111,7 +96,7 @@ impl Sleep {
thread::yield_now();
idle_state.rounds += 1;
} else if idle_state.rounds == ROUNDS_UNTIL_SLEEPY {
- idle_state.jobs_counter = self.announce_sleepy(idle_state.worker_index);
+ idle_state.jobs_counter = self.announce_sleepy();
idle_state.rounds += 1;
thread::yield_now();
} else if idle_state.rounds < ROUNDS_UNTIL_SLEEPING {
@@ -124,16 +109,10 @@ impl Sleep {
}
#[cold]
- fn announce_sleepy(&self, worker_index: usize) -> JobsEventCounter {
- let counters = self
- .counters
- .increment_jobs_event_counter_if(JobsEventCounter::is_active);
- let jobs_counter = counters.jobs_counter();
- self.logger.log(|| ThreadSleepy {
- worker: worker_index,
- jobs_counter: jobs_counter.as_usize(),
- });
- jobs_counter
+ fn announce_sleepy(&self) -> JobsEventCounter {
+ self.counters
+ .increment_jobs_event_counter_if(JobsEventCounter::is_active)
+ .jobs_counter()
}
#[cold]
@@ -146,11 +125,6 @@ impl Sleep {
let worker_index = idle_state.worker_index;
if !latch.get_sleepy() {
- self.logger.log(|| ThreadSleepInterruptedByLatch {
- worker: worker_index,
- latch_addr: latch.addr(),
- });
-
return;
}
@@ -161,11 +135,6 @@ impl Sleep {
// Our latch was signalled. We should wake back up fully as we
// will have some stuff to do.
if !latch.fall_asleep() {
- self.logger.log(|| ThreadSleepInterruptedByLatch {
- worker: worker_index,
- latch_addr: latch.addr(),
- });
-
idle_state.wake_fully();
return;
}
@@ -180,10 +149,6 @@ impl Sleep {
// we didn't see it. We should return to just before the SLEEPY
// state so we can do another search and (if we fail to find
// work) go back to sleep.
- self.logger.log(|| ThreadSleepInterruptedByJob {
- worker: worker_index,
- });
-
idle_state.wake_partly();
latch.wake_up();
return;
@@ -197,11 +162,6 @@ impl Sleep {
// Successfully registered as asleep.
- self.logger.log(|| ThreadSleeping {
- worker: worker_index,
- latch_addr: latch.addr(),
- });
-
// We have one last check for injected jobs to do. This protects against
// deadlock in the very unlikely event that
//
@@ -232,11 +192,6 @@ impl Sleep {
// Update other state:
idle_state.wake_fully();
latch.wake_up();
-
- self.logger.log(|| ThreadAwoken {
- worker: worker_index,
- latch_addr: latch.addr(),
- });
}
/// Notify the given thread that it should wake up (if it is
@@ -254,24 +209,16 @@ impl Sleep {
///
/// # Parameters
///
- /// - `source_worker_index` -- index of the thread that did the
- /// push, or `usize::MAX` if this came from outside the thread
- /// pool -- it is used only for logging.
/// - `num_jobs` -- lower bound on number of jobs available for stealing.
/// We'll try to get at least one thread per job.
#[inline]
- pub(super) fn new_injected_jobs(
- &self,
- source_worker_index: usize,
- num_jobs: u32,
- queue_was_empty: bool,
- ) {
+ pub(super) fn new_injected_jobs(&self, num_jobs: u32, queue_was_empty: bool) {
// This fence is needed to guarantee that threads
// as they are about to fall asleep, observe any
// new jobs that may have been injected.
std::sync::atomic::fence(Ordering::SeqCst);
- self.new_jobs(source_worker_index, num_jobs, queue_was_empty)
+ self.new_jobs(num_jobs, queue_was_empty)
}
/// Signals that `num_jobs` new jobs were pushed onto a thread's
@@ -284,24 +231,16 @@ impl Sleep {
///
/// # Parameters
///
- /// - `source_worker_index` -- index of the thread that did the
- /// push, or `usize::MAX` if this came from outside the thread
- /// pool -- it is used only for logging.
/// - `num_jobs` -- lower bound on number of jobs available for stealing.
/// We'll try to get at least one thread per job.
#[inline]
- pub(super) fn new_internal_jobs(
- &self,
- source_worker_index: usize,
- num_jobs: u32,
- queue_was_empty: bool,
- ) {
- self.new_jobs(source_worker_index, num_jobs, queue_was_empty)
+ pub(super) fn new_internal_jobs(&self, num_jobs: u32, queue_was_empty: bool) {
+ self.new_jobs(num_jobs, queue_was_empty)
}
/// Common helper for `new_injected_jobs` and `new_internal_jobs`.
#[inline]
- fn new_jobs(&self, source_worker_index: usize, num_jobs: u32, queue_was_empty: bool) {
+ fn new_jobs(&self, num_jobs: u32, queue_was_empty: bool) {
// Read the counters and -- if sleepy workers have announced themselves
// -- announce that there is now work available. The final value of `counters`
// with which we exit the loop thus corresponds to a state when
@@ -311,12 +250,6 @@ impl Sleep {
let num_awake_but_idle = counters.awake_but_idle_threads();
let num_sleepers = counters.sleeping_threads();
- self.logger.log(|| JobThreadCounts {
- worker: source_worker_index,
- num_idle: num_awake_but_idle as u16,
- num_sleepers: num_sleepers as u16,
- });
-
if num_sleepers == 0 {
// nobody to wake
return;
@@ -372,8 +305,6 @@ impl Sleep {
// do.
self.counters.sub_sleeping_thread();
- self.logger.log(|| ThreadNotify { worker: index });
-
true
} else {
false
diff --git a/vendor/rayon-core/src/thread_pool/test.rs b/vendor/rayon-core/src/thread_pool/test.rs
index 6143e5799..88b36282d 100644
--- a/vendor/rayon-core/src/thread_pool/test.rs
+++ b/vendor/rayon-core/src/thread_pool/test.rs
@@ -383,7 +383,7 @@ fn in_place_scope_fifo_no_deadlock() {
#[test]
fn yield_now_to_spawn() {
- let (tx, rx) = crossbeam_channel::bounded(1);
+ let (tx, rx) = channel();
// Queue a regular spawn.
crate::spawn(move || tx.send(22).unwrap());
@@ -401,7 +401,7 @@ fn yield_now_to_spawn() {
#[test]
fn yield_local_to_spawn() {
- let (tx, rx) = crossbeam_channel::bounded(1);
+ let (tx, rx) = channel();
// Queue a regular spawn.
crate::spawn(move || tx.send(22).unwrap());
diff --git a/vendor/rayon-core/tests/scoped_threadpool.rs b/vendor/rayon-core/tests/scoped_threadpool.rs
index 534e8bbf4..932147179 100644
--- a/vendor/rayon-core/tests/scoped_threadpool.rs
+++ b/vendor/rayon-core/tests/scoped_threadpool.rs
@@ -93,7 +93,7 @@ fn build_scoped_tls_threadpool() {
},
)
.expect("thread pool created");
- // Internally, `crossbeam::scope` will wait for the threads to exit before returning.
+ // Internally, `std::thread::scope` will wait for the threads to exit before returning.
});
});
}
diff --git a/vendor/rayon-core/tests/use_current_thread.rs b/vendor/rayon-core/tests/use_current_thread.rs
new file mode 100644
index 000000000..ec801c98d
--- /dev/null
+++ b/vendor/rayon-core/tests/use_current_thread.rs
@@ -0,0 +1,57 @@
+use rayon_core::ThreadPoolBuilder;
+use std::sync::{Arc, Condvar, Mutex};
+use std::thread::{self, JoinHandle};
+
+#[test]
+#[cfg_attr(any(target_os = "emscripten", target_family = "wasm"), ignore)]
+fn use_current_thread_basic() {
+ static JOIN_HANDLES: Mutex<Vec<JoinHandle<()>>> = Mutex::new(Vec::new());
+ let pool = ThreadPoolBuilder::new()
+ .num_threads(2)
+ .use_current_thread()
+ .spawn_handler(|builder| {
+ let handle = thread::Builder::new().spawn(|| builder.run())?;
+ JOIN_HANDLES.lock().unwrap().push(handle);
+ Ok(())
+ })
+ .build()
+ .unwrap();
+ assert_eq!(rayon_core::current_thread_index(), Some(0));
+ assert_eq!(
+ JOIN_HANDLES.lock().unwrap().len(),
+ 1,
+ "Should only spawn one extra thread"
+ );
+
+ let another_pool = ThreadPoolBuilder::new()
+ .num_threads(2)
+ .use_current_thread()
+ .build();
+ assert!(
+ another_pool.is_err(),
+ "Should error if the thread is already part of a pool"
+ );
+
+ let pair = Arc::new((Mutex::new(false), Condvar::new()));
+ let pair2 = Arc::clone(&pair);
+ pool.spawn(move || {
+ assert_ne!(rayon_core::current_thread_index(), Some(0));
+ // This should execute even if the current thread is blocked, since we have two threads in
+ // the pool.
+ let &(ref started, ref condvar) = &*pair2;
+ *started.lock().unwrap() = true;
+ condvar.notify_one();
+ });
+
+ let _guard = pair
+ .1
+ .wait_while(pair.0.lock().unwrap(), |ran| !*ran)
+ .unwrap();
+ std::mem::drop(pool); // Drop the pool.
+
+ // Wait until all threads have actually exited. This is not really needed, other than to
+ // reduce noise of leak-checking tools.
+ for handle in std::mem::take(&mut *JOIN_HANDLES.lock().unwrap()) {
+ let _ = handle.join();
+ }
+}
diff --git a/vendor/rayon/.cargo-checksum.json b/vendor/rayon/.cargo-checksum.json
index 1cb63555e..069bce26e 100644
--- a/vendor/rayon/.cargo-checksum.json
+++ b/vendor/rayon/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"8b7b43229d994b9691ffe41e411a8daea2adbd192dde9714eaef77d2c91c3a62","FAQ.md":"e963b051f6295a2944ff5abec368c7da914b913e21049978c2ef0017294abf8f","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0621878e61f0d0fda054bcbe02df75192c28bde1ecc8289cbd86aeba2dd72720","README.md":"a47993c64d3d3e85ac6c32d5a310b6b49305dd70be832e73d723cdea79c061c8","RELEASES.md":"0fa92841618538d1e4593351392dc1156f3be3110fdf6f69c04fd2baf183cb6d","src/array.rs":"0e1524d222baa8b64f67689b0dea3115f3befb8cc3b5aee9ace169c57b2d29d2","src/collections/binary_heap.rs":"58e2590ff52fa2cfe7b5797fdc37902d0c111cca844aac21a4024add2f28a8db","src/collections/btree_map.rs":"d3094ed5c54620f81a86133f52e74164bae9f0137745eb66e6d31db2e942bcab","src/collections/btree_set.rs":"7de12e388d36cb2f8672bc3b68aed5b44d047c9f5fe262a7260584634299480f","src/collections/hash_map.rs":"cdaf1aa3bedf9bde591fcb323d64bee9366feb35fee6886bedb5fec8d0018564","src/collections/hash_set.rs":"685690108fc20eca2cf346e74e48d6c751f5ceb6028996366d49f1f1ad6051e0","src/collections/linked_list.rs":"bef7f32da49b55db76cfefa0afa4789a6979e08a69427e49bab2874967163fef","src/collections/mod.rs":"3978222720a2df20be7fd0856d8515b6f9fa40f6556662bd3c0726b1392970ca","src/collections/vec_deque.rs":"d14aa4edc858cd3469fff3597fc35ab83c27f3bdf66ede06d1dd25021f383109","src/compile_fail/cannot_collect_filtermap_data.rs":"f76e6727ae8bd0dc8fff5f4a79df3fc598daf5d7371bdf8b2e730fba4ba82719","src/compile_fail/cannot_zip_filtered_data.rs":"3588fcf72e804ea867ea525b6dfa7a3d45fe14e28088e849fa9ddb029acc8a7a","src/compile_fail/cell_par_iter.rs":"ebf8804993c103f9d8228aba0bb2a5f0aadb957de9f1eb59cf546dbace285201","src/compile_fail/mod.rs":"2c346e4b52941fe0ac2667eeb753c0c21a1f998a544bb9d9167f200caba0a7bb","src/compile_fail/must_use.rs":"42ae57ed7cb909fad8d079ce6e3742a92ca7f72a9cc209b149d1d88df568d757","src/compile_fail/no_send_par_iter.rs":"b241446439c659f35060df12ba91590ea4267f373ddc688e4ffc203321db24b3","src/compile_fail/rc_par_iter.rs":"938776b08612e35c85b99962024d54af5a8c87d45a050a76375d16ef6fe4299f","src/delegate.rs":"aad2a11998240fb7dd96bd054b588cac469df3b716b8dffb05239102b6507d05","src/iter/chain.rs":"f82a25577ca36bac93b5a13e75dcd70e8cee381b9baa5993dd645f0714fb9eb6","src/iter/chunks.rs":"9b901441bd8684782d4e50bf24c261bdf3392f576e7ab25b2b83be2fc9361545","src/iter/cloned.rs":"35e1c864f99f7bc93c258c4976d15ccfc1d04df969dc878fd03d35f6799377f7","src/iter/collect/consumer.rs":"5f9728fdf2db728a3ea37849c2fc43c417b221e580860be4dfc6cab526e57f8e","src/iter/collect/mod.rs":"ede28d59713c3291709a842cd54b17760008f6854a3982404eca973bdc3d2f23","src/iter/collect/test.rs":"9afcf4c6cf6bbfe22aed42e5bb5a0dcbd4d7c9b060d80d3b01fad665b46e4952","src/iter/copied.rs":"1a3457f3b0fb020593049b8b1f1be2f7a6684c2fcc66c02c911cb14e0a1943d7","src/iter/empty.rs":"3cb2d05721aab1a4d9e9c5813473e1646116c1ea570e26d9ac81e083688a0b7d","src/iter/enumerate.rs":"3204255723a93b3275cf0f208939de8960b13a9b13b8c2ba6b664e65da21cd87","src/iter/extend.rs":"6b93885d0bce6b1e01d9e220083e421436142b003dbe21f914dcf6b08abe7f10","src/iter/filter.rs":"e48f317ee4d66dea6f19ac2607c6f764d20c023d847b66c6c01826e6a46f96ab","src/iter/filter_map.rs":"2530b726b27fe3a678a34722b1baf8e223a65a0770fa8ed5dca13786ea454580","src/iter/find.rs":"896ddb05b2fa7368462e0ff2a73982ced5f93266c0e0e8c27bb3fc4ec737af21","src/iter/find_first_last/mod.rs":"fa7d7692d81ecdbecb178606ad3b1b00c80e5e4159c57d34929b012b0bea0c82","src/iter/find_first_last/test.rs":"2052eb8b87c5a0a0d49a76c83d9d74f81be18aad52ceb1b06d7e209f4fefba94","src/iter/flat_map.rs":"4db54dcda5f1f916497d0162268e6cd554478bc7ea0190709cc7c73941a0e20f","src/iter/flat_map_iter.rs":"81886d1d71f4991963ec9b6d767d9ef391c9e84807d27f6135cd92a451dc1b32","src/iter/flatten.rs":"93407a8f44f4a265f47d7fe568508d6ef922597c4ca4558e8945cf1aacdd6b30","src/iter/flatten_iter.rs":"23cf3ddc25b6cad117932c4bac2e8b945c6b56626730fd3b1787f233495d15e6","src/iter/fold.rs":"874259b408d7f8cdc376d34276d37c1837950c035ff780de8281d1edf65ded9f","src/iter/fold_chunks.rs":"78c267cc341fa71206a587b548480038a7a9bbb29d341b43733515b34e4cec48","src/iter/fold_chunks_with.rs":"fc3a49dd6a2027ec8e0c78e459ed80da1185b365909694bf1395af12b22648a8","src/iter/for_each.rs":"7af0e21ed8479eec65831d1409f61a88d45a31764f2385ec759eda1a46d388b2","src/iter/from_par_iter.rs":"9439b1ae01db2c7545d6416108700dfbafcff3f584e81704cf985ab1d986b660","src/iter/inspect.rs":"d502b6e435a44f34ba49dfe46aa809a1bad3dbaefa048540a98e3026437b1016","src/iter/interleave.rs":"3c6d82fe13b52e2ce5e1b3dba93c47f479ff44d232059cd88523b422c51dea96","src/iter/interleave_shortest.rs":"a2b1f31ea4cb29f4761d3724feddcf5a96e1f21fd623f95c85a8659294a6745a","src/iter/intersperse.rs":"6b5d3d826ed3499ba78f0ff07468d96a0e104c7ee142a2ced6be8143b43241a5","src/iter/len.rs":"1d890dffb912134402c4778b1635af713df23df8bd2a98890209926a936d8407","src/iter/map.rs":"f778f1bd0a71c962375d2ce886b40ac365afed4a032e2b9dd6c385712d3d75eb","src/iter/map_with.rs":"f83950016bb02addecec049fda73663861c80232477a7b89b7e8718291a4b481","src/iter/mod.rs":"4777f488cc6fc4620ec4b6fe3ffcf1e310c7aafb59e41ebb8c268e194755d750","src/iter/multizip.rs":"10ec107f6673c9bc6d1d611e11b716c37e8601ab2f4257a460c4bc4962771347","src/iter/noop.rs":"5be6332ddfbb8fdbae1ffdb00983950a8b37a295bcb58e9a265b33806ee504e6","src/iter/once.rs":"fcebffc374dcdd206d13311dcc2e7d7a04da5687658b2f3ec3409f03ed12774b","src/iter/panic_fuse.rs":"2a4d43fa4e717629de7f69eb180f13db90ef95004975cfa20dcfaacc80435015","src/iter/par_bridge.rs":"7b78e0180a95b6a6d429d2923cd48c07f9ae3137c7e5c8706eceaec029f77b48","src/iter/plumbing/README.md":"da11d90143745b30efe99934bb5d8267d7b205c8096d0936ddb1bbba0b13ea17","src/iter/plumbing/mod.rs":"1156c55a15b651d161f463cb86b2f602f6246a3c7f8a82fb484db12aa6a60091","src/iter/positions.rs":"b7abfb59c12b6cceb5e539e85f9eca836054ae88225e16cfc0ba8e68177c7917","src/iter/product.rs":"da69f4781c2275c4a176432994c3fd80ea1f296afe47b329de61b1d733d990df","src/iter/reduce.rs":"2f5d6e07d7c0de2360505fa5d9198c31fd43ba7e58a6ec40f79edec19319e502","src/iter/repeat.rs":"ed46b17b79d8569f9d67b50585b116ee0293e1d6c17c0dc683c66644f6a58fd5","src/iter/rev.rs":"c4c796d7cb6398e74bef043a080403acccdf70f6a4e74b242e530d1718969b8f","src/iter/skip.rs":"93d54e17316ae15ff3cc30ca7144cb448569b18ea967dd2cd8913ac6f1334390","src/iter/skip_any.rs":"e827e1658aea906ab1045533d97476a91886dc6c41ab1fe9b6147f90385e45b8","src/iter/skip_any_while.rs":"88e8f5aea16cde70ae41f5eb32749e955861a476766ff678b8bbfca96ed80803","src/iter/splitter.rs":"0024db04b4430c2a1e8c921cec86af641f612f877f3675b15df0da9122de5f00","src/iter/step_by.rs":"be7abe2c2fba252a1b69c8cf18adfe510036c30f8ee2994404c18ae15dde317e","src/iter/sum.rs":"cf11d996507ceba39524a102559b84289e776f8fe5772114e00ae2112b38c47c","src/iter/take.rs":"e47eeca1249553b0dfaf54cd8f99026be68db76b42f1f29e09c07a98c165c50a","src/iter/take_any.rs":"51f5b39c3fb608fcf7d7b35592a28d95250d9cbb28dbc13a0dc01d22aa0023f9","src/iter/take_any_while.rs":"8327c019b4047d567d8fdae975049c9bc1e4422dddffd3196b62c938d1f5e1fc","src/iter/test.rs":"09b32380c3d9e64b66d14cb6d51660b1c5d008e7f31762476735c3f6742a4144","src/iter/try_fold.rs":"d4f40a00995273b8803031da4a4b139a5f462a174ef1d3c8ba54524b47ab8180","src/iter/try_reduce.rs":"12317a649f777e76e6ae610d205104d7946fbe45804fbf1caa0843118531baed","src/iter/try_reduce_with.rs":"9171563fc22110d7a359f19de7ca66a6823d8f712099d05d01560795781fdeec","src/iter/unzip.rs":"9a16ea1f3b3019a090b7189f6c42c75beb3537bc849bd4c51093120a907cea6b","src/iter/update.rs":"0362185a002cdda0e73b13237017ddc3d5e72390bba6cb2e2f021e947ed861dc","src/iter/while_some.rs":"a514891d7a07031354b48e377c239ff330d0955f184abc57a69d2a193e7fcb45","src/iter/zip.rs":"4d908f75a10b5e9b68d012bbba289f3e5e9d6a9570ce0f56fc1b4f9d96860499","src/iter/zip_eq.rs":"4c18d8f7a78e197a3268c9ef74d16690f8c960407c18bb63dc6905a2fe2bde62","src/lib.rs":"3e7bec5c34a7d2be7087fa79e8d9add939136adf9ce095907aed2851f269d55c","src/math.rs":"040e82a4ba7a6680eb65b65f4d1fc3dc477d902855d8651105b138ae2e71c8e8","src/option.rs":"00979a9bb8f42629f2b956a6cfbd286fc8a41ffbbec85f1b5d0f0da5615dac9c","src/par_either.rs":"afa4b04ba6ea1d37aed2d68eca44d7ba0d1d09ea985c9091540dd8d3c51974f1","src/prelude.rs":"b1af578abff57f9c8a285c39e3793125cf40d9901d0f2a4f0c5f1bb9252a08de","src/private.rs":"152f6d65ce4741616a1dec796b9442f78a018d38bb040f76c4cd85008333a3bb","src/range.rs":"93bd821b851d334a365211e14b60e0fc5052a7ee09e9a26ea7dd4f018c9bf7ae","src/range_inclusive.rs":"1f18ee155ab46e7398203163d49b4dfa87135e578de3d80e2641877c5b037126","src/result.rs":"0656f0000efcea10e571df90247925dfd00a0c2194043fcbc009711fb2f7af02","src/slice/chunks.rs":"2bf07a3522381e7747e40f787727747b62fbe1f1504eac6c383f0608a335ec91","src/slice/mergesort.rs":"effe59ecc40b330c364a3da868182b72b487025d9ba0256079f8a284b85a05ef","src/slice/mod.rs":"d293c9105edc3e51b11f873ac816f28232dd708120901ce3a518e03d5b748bcf","src/slice/quicksort.rs":"355506e39eac03b18cf35a6fa01d8f126267e01736e03c85f22414ebf894a9be","src/slice/rchunks.rs":"23229976840da07e8fff6657ca626810ed380682719e4d1f0693ac08839e1b7c","src/slice/test.rs":"fca5e5e6bb5464c9332d14e7d963098ad9a072801ea508ae9eabf5d278b66bb2","src/split_producer.rs":"2b143e16bc6540792f861e215a86cfea7f4ee500d4faca2476d4165619eac90d","src/str.rs":"fe3fca9218fd17a265619551602001addf80f83187b086b3c65b4edd7857abd2","src/string.rs":"6691dd31264bd93a0528fc584585415c12f56cfb4baebbfd31ea2f1b21550f77","src/vec.rs":"c80653f3040c07e04fa293fa0359e1f8e7faad13d67899e78780e855b6f9f63a","tests/chars.rs":"5a2bef1cd8a7d1740a4e5403830da7bbdd584e97d602a07645c4986ee34c2ad3","tests/clones.rs":"1a8a4c053d2f5154c527cfb3396de2b3d1b3712e31a74f8b5e79862ea91359ea","tests/collect.rs":"3ae066cd89eacc9d171ad99ec73335e8040748370e3a3f46845d5af12ce30cc2","tests/cross-pool.rs":"d2ce3b9013f77c955aa02313b27436c5bf760ab0e6a1e7d768effae69b5bdbfe","tests/debug.rs":"187e3ef1ada63a91db117c02ca4b351d31e8eb6b891ca651bfa60a51afe4ea7c","tests/drain_vec.rs":"305ca40ba41ed3b459a334386cd742c66586d62aadfb624278aabdf10b872a12","tests/intersperse.rs":"bda4fb2179086e32c77c8293b9bb85d55509c282441837ba1849c2d3aa3186a7","tests/issue671-unzip.rs":"d5eb38d8a6d8f66fdf1c40293abbf58f3ac42b5acfc5dca62b02c7ace5bfc1a4","tests/issue671.rs":"52914cac517074deaedcb81bd76b867f0b99cc7b65c3e01cfe12dc9fe38c0266","tests/iter_panic.rs":"2ca857b37b740528b2e8395b479a409227383b46e0ed012286dcdd1330dacd70","tests/named-threads.rs":"9bd7ea27b4f6cf9e3b3486311747e15a3beb9b9d4e48f115d66ed8288ca19d38","tests/octillion.rs":"756d3789300d6eb4d5f7690937e06f87714b6b0a62ac812f72b622bb6974ccd2","tests/par_bridge_recursion.rs":"6e7030de6d97d1db1c335f676dd2a6348cde2873520df290c4a16bf949c06f00","tests/producer_split_at.rs":"fbb28da59e85e4c253cc314f35f113ced8db2981ceda9977145af540f9996837","tests/sort-panic-safe.rs":"2746cf3bca0c3ae4645ab124ae8027be9670aa749cfbb6f4205b095f6f1dbcad","tests/str.rs":"49059384999be57994841652718cc048389380741be5c493423f8bd2206e4453"},"package":"1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"} \ No newline at end of file
+{"files":{"Cargo.toml":"54b5a097689382816f45f38ee882792638124881a18a723314cced55c0c6c7d5","FAQ.md":"e963b051f6295a2944ff5abec368c7da914b913e21049978c2ef0017294abf8f","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0621878e61f0d0fda054bcbe02df75192c28bde1ecc8289cbd86aeba2dd72720","README.md":"9437e6cfe68db330e13330db3035c7fd489752b1b49b9dabc87b6502073f7d35","RELEASES.md":"96a311d9a90b337345b7a275aee938e21ff0430ce464448ebdcde49c70560bb2","src/array.rs":"0e1524d222baa8b64f67689b0dea3115f3befb8cc3b5aee9ace169c57b2d29d2","src/collections/binary_heap.rs":"58e2590ff52fa2cfe7b5797fdc37902d0c111cca844aac21a4024add2f28a8db","src/collections/btree_map.rs":"d3094ed5c54620f81a86133f52e74164bae9f0137745eb66e6d31db2e942bcab","src/collections/btree_set.rs":"7de12e388d36cb2f8672bc3b68aed5b44d047c9f5fe262a7260584634299480f","src/collections/hash_map.rs":"cdaf1aa3bedf9bde591fcb323d64bee9366feb35fee6886bedb5fec8d0018564","src/collections/hash_set.rs":"685690108fc20eca2cf346e74e48d6c751f5ceb6028996366d49f1f1ad6051e0","src/collections/linked_list.rs":"bef7f32da49b55db76cfefa0afa4789a6979e08a69427e49bab2874967163fef","src/collections/mod.rs":"3978222720a2df20be7fd0856d8515b6f9fa40f6556662bd3c0726b1392970ca","src/collections/vec_deque.rs":"d14aa4edc858cd3469fff3597fc35ab83c27f3bdf66ede06d1dd25021f383109","src/compile_fail/cannot_collect_filtermap_data.rs":"f76e6727ae8bd0dc8fff5f4a79df3fc598daf5d7371bdf8b2e730fba4ba82719","src/compile_fail/cannot_zip_filtered_data.rs":"3588fcf72e804ea867ea525b6dfa7a3d45fe14e28088e849fa9ddb029acc8a7a","src/compile_fail/cell_par_iter.rs":"ebf8804993c103f9d8228aba0bb2a5f0aadb957de9f1eb59cf546dbace285201","src/compile_fail/mod.rs":"2c346e4b52941fe0ac2667eeb753c0c21a1f998a544bb9d9167f200caba0a7bb","src/compile_fail/must_use.rs":"42ae57ed7cb909fad8d079ce6e3742a92ca7f72a9cc209b149d1d88df568d757","src/compile_fail/no_send_par_iter.rs":"b241446439c659f35060df12ba91590ea4267f373ddc688e4ffc203321db24b3","src/compile_fail/rc_par_iter.rs":"938776b08612e35c85b99962024d54af5a8c87d45a050a76375d16ef6fe4299f","src/delegate.rs":"aad2a11998240fb7dd96bd054b588cac469df3b716b8dffb05239102b6507d05","src/iter/chain.rs":"f82a25577ca36bac93b5a13e75dcd70e8cee381b9baa5993dd645f0714fb9eb6","src/iter/chunks.rs":"9b901441bd8684782d4e50bf24c261bdf3392f576e7ab25b2b83be2fc9361545","src/iter/cloned.rs":"35e1c864f99f7bc93c258c4976d15ccfc1d04df969dc878fd03d35f6799377f7","src/iter/collect/consumer.rs":"5f9728fdf2db728a3ea37849c2fc43c417b221e580860be4dfc6cab526e57f8e","src/iter/collect/mod.rs":"ede28d59713c3291709a842cd54b17760008f6854a3982404eca973bdc3d2f23","src/iter/collect/test.rs":"9afcf4c6cf6bbfe22aed42e5bb5a0dcbd4d7c9b060d80d3b01fad665b46e4952","src/iter/copied.rs":"1a3457f3b0fb020593049b8b1f1be2f7a6684c2fcc66c02c911cb14e0a1943d7","src/iter/empty.rs":"3cb2d05721aab1a4d9e9c5813473e1646116c1ea570e26d9ac81e083688a0b7d","src/iter/enumerate.rs":"3204255723a93b3275cf0f208939de8960b13a9b13b8c2ba6b664e65da21cd87","src/iter/extend.rs":"211dcb0615e4a2eb00f85391c9c1c1a74754b998badc15b517c28a392595eab4","src/iter/filter.rs":"e48f317ee4d66dea6f19ac2607c6f764d20c023d847b66c6c01826e6a46f96ab","src/iter/filter_map.rs":"2530b726b27fe3a678a34722b1baf8e223a65a0770fa8ed5dca13786ea454580","src/iter/find.rs":"896ddb05b2fa7368462e0ff2a73982ced5f93266c0e0e8c27bb3fc4ec737af21","src/iter/find_first_last/mod.rs":"fa7d7692d81ecdbecb178606ad3b1b00c80e5e4159c57d34929b012b0bea0c82","src/iter/find_first_last/test.rs":"2052eb8b87c5a0a0d49a76c83d9d74f81be18aad52ceb1b06d7e209f4fefba94","src/iter/flat_map.rs":"4db54dcda5f1f916497d0162268e6cd554478bc7ea0190709cc7c73941a0e20f","src/iter/flat_map_iter.rs":"81886d1d71f4991963ec9b6d767d9ef391c9e84807d27f6135cd92a451dc1b32","src/iter/flatten.rs":"93407a8f44f4a265f47d7fe568508d6ef922597c4ca4558e8945cf1aacdd6b30","src/iter/flatten_iter.rs":"23cf3ddc25b6cad117932c4bac2e8b945c6b56626730fd3b1787f233495d15e6","src/iter/fold.rs":"874259b408d7f8cdc376d34276d37c1837950c035ff780de8281d1edf65ded9f","src/iter/fold_chunks.rs":"78c267cc341fa71206a587b548480038a7a9bbb29d341b43733515b34e4cec48","src/iter/fold_chunks_with.rs":"fc3a49dd6a2027ec8e0c78e459ed80da1185b365909694bf1395af12b22648a8","src/iter/for_each.rs":"7af0e21ed8479eec65831d1409f61a88d45a31764f2385ec759eda1a46d388b2","src/iter/from_par_iter.rs":"3f443878c95def492047b92ee2e3946179e21a8198330860927d5692611b4b79","src/iter/inspect.rs":"d502b6e435a44f34ba49dfe46aa809a1bad3dbaefa048540a98e3026437b1016","src/iter/interleave.rs":"3c6d82fe13b52e2ce5e1b3dba93c47f479ff44d232059cd88523b422c51dea96","src/iter/interleave_shortest.rs":"a2b1f31ea4cb29f4761d3724feddcf5a96e1f21fd623f95c85a8659294a6745a","src/iter/intersperse.rs":"6b5d3d826ed3499ba78f0ff07468d96a0e104c7ee142a2ced6be8143b43241a5","src/iter/len.rs":"1d890dffb912134402c4778b1635af713df23df8bd2a98890209926a936d8407","src/iter/map.rs":"f778f1bd0a71c962375d2ce886b40ac365afed4a032e2b9dd6c385712d3d75eb","src/iter/map_with.rs":"f83950016bb02addecec049fda73663861c80232477a7b89b7e8718291a4b481","src/iter/mod.rs":"db985d0c24bed56897bdc5771d4dc092a31eb42987380feba655b25ff415c01f","src/iter/multizip.rs":"10ec107f6673c9bc6d1d611e11b716c37e8601ab2f4257a460c4bc4962771347","src/iter/noop.rs":"5be6332ddfbb8fdbae1ffdb00983950a8b37a295bcb58e9a265b33806ee504e6","src/iter/once.rs":"fcebffc374dcdd206d13311dcc2e7d7a04da5687658b2f3ec3409f03ed12774b","src/iter/panic_fuse.rs":"2a4d43fa4e717629de7f69eb180f13db90ef95004975cfa20dcfaacc80435015","src/iter/par_bridge.rs":"11fc22a1bc90e290697d62d9f4929d4bf1bb9c643a6839ff56fda3e3be9d0f62","src/iter/plumbing/README.md":"da11d90143745b30efe99934bb5d8267d7b205c8096d0936ddb1bbba0b13ea17","src/iter/plumbing/mod.rs":"1156c55a15b651d161f463cb86b2f602f6246a3c7f8a82fb484db12aa6a60091","src/iter/positions.rs":"b7abfb59c12b6cceb5e539e85f9eca836054ae88225e16cfc0ba8e68177c7917","src/iter/product.rs":"eaddbf216b068d33cb92f594cf57522f6ea1e2d7699887a086484843bdec3585","src/iter/reduce.rs":"2f5d6e07d7c0de2360505fa5d9198c31fd43ba7e58a6ec40f79edec19319e502","src/iter/repeat.rs":"ed46b17b79d8569f9d67b50585b116ee0293e1d6c17c0dc683c66644f6a58fd5","src/iter/rev.rs":"c4c796d7cb6398e74bef043a080403acccdf70f6a4e74b242e530d1718969b8f","src/iter/skip.rs":"93d54e17316ae15ff3cc30ca7144cb448569b18ea967dd2cd8913ac6f1334390","src/iter/skip_any.rs":"e827e1658aea906ab1045533d97476a91886dc6c41ab1fe9b6147f90385e45b8","src/iter/skip_any_while.rs":"88e8f5aea16cde70ae41f5eb32749e955861a476766ff678b8bbfca96ed80803","src/iter/splitter.rs":"0024db04b4430c2a1e8c921cec86af641f612f877f3675b15df0da9122de5f00","src/iter/step_by.rs":"be7abe2c2fba252a1b69c8cf18adfe510036c30f8ee2994404c18ae15dde317e","src/iter/sum.rs":"073a886b8d6b0d7ca5621449a20e9980c90c6d39de56f074371fb075d9df2bed","src/iter/take.rs":"e47eeca1249553b0dfaf54cd8f99026be68db76b42f1f29e09c07a98c165c50a","src/iter/take_any.rs":"51f5b39c3fb608fcf7d7b35592a28d95250d9cbb28dbc13a0dc01d22aa0023f9","src/iter/take_any_while.rs":"8327c019b4047d567d8fdae975049c9bc1e4422dddffd3196b62c938d1f5e1fc","src/iter/test.rs":"09b32380c3d9e64b66d14cb6d51660b1c5d008e7f31762476735c3f6742a4144","src/iter/try_fold.rs":"d4f40a00995273b8803031da4a4b139a5f462a174ef1d3c8ba54524b47ab8180","src/iter/try_reduce.rs":"12317a649f777e76e6ae610d205104d7946fbe45804fbf1caa0843118531baed","src/iter/try_reduce_with.rs":"9171563fc22110d7a359f19de7ca66a6823d8f712099d05d01560795781fdeec","src/iter/unzip.rs":"9a16ea1f3b3019a090b7189f6c42c75beb3537bc849bd4c51093120a907cea6b","src/iter/update.rs":"0362185a002cdda0e73b13237017ddc3d5e72390bba6cb2e2f021e947ed861dc","src/iter/while_some.rs":"a514891d7a07031354b48e377c239ff330d0955f184abc57a69d2a193e7fcb45","src/iter/zip.rs":"4d908f75a10b5e9b68d012bbba289f3e5e9d6a9570ce0f56fc1b4f9d96860499","src/iter/zip_eq.rs":"4c18d8f7a78e197a3268c9ef74d16690f8c960407c18bb63dc6905a2fe2bde62","src/lib.rs":"74e9dc639f5319859280c4d35575550420274769652f58fe78e47ab050f211a5","src/math.rs":"040e82a4ba7a6680eb65b65f4d1fc3dc477d902855d8651105b138ae2e71c8e8","src/option.rs":"00979a9bb8f42629f2b956a6cfbd286fc8a41ffbbec85f1b5d0f0da5615dac9c","src/par_either.rs":"afa4b04ba6ea1d37aed2d68eca44d7ba0d1d09ea985c9091540dd8d3c51974f1","src/prelude.rs":"b1af578abff57f9c8a285c39e3793125cf40d9901d0f2a4f0c5f1bb9252a08de","src/private.rs":"152f6d65ce4741616a1dec796b9442f78a018d38bb040f76c4cd85008333a3bb","src/range.rs":"93bd821b851d334a365211e14b60e0fc5052a7ee09e9a26ea7dd4f018c9bf7ae","src/range_inclusive.rs":"1f18ee155ab46e7398203163d49b4dfa87135e578de3d80e2641877c5b037126","src/result.rs":"0656f0000efcea10e571df90247925dfd00a0c2194043fcbc009711fb2f7af02","src/slice/chunks.rs":"2bf07a3522381e7747e40f787727747b62fbe1f1504eac6c383f0608a335ec91","src/slice/mergesort.rs":"effe59ecc40b330c364a3da868182b72b487025d9ba0256079f8a284b85a05ef","src/slice/mod.rs":"d293c9105edc3e51b11f873ac816f28232dd708120901ce3a518e03d5b748bcf","src/slice/quicksort.rs":"a7e5dd9f86e9292ccf6b2ca1668c93b8789eb85b7a9d3c9cb9fbe0ed49046e9b","src/slice/rchunks.rs":"23229976840da07e8fff6657ca626810ed380682719e4d1f0693ac08839e1b7c","src/slice/test.rs":"fca5e5e6bb5464c9332d14e7d963098ad9a072801ea508ae9eabf5d278b66bb2","src/split_producer.rs":"2b143e16bc6540792f861e215a86cfea7f4ee500d4faca2476d4165619eac90d","src/str.rs":"fe3fca9218fd17a265619551602001addf80f83187b086b3c65b4edd7857abd2","src/string.rs":"6691dd31264bd93a0528fc584585415c12f56cfb4baebbfd31ea2f1b21550f77","src/vec.rs":"c80653f3040c07e04fa293fa0359e1f8e7faad13d67899e78780e855b6f9f63a","tests/chars.rs":"5a2bef1cd8a7d1740a4e5403830da7bbdd584e97d602a07645c4986ee34c2ad3","tests/clones.rs":"1a8a4c053d2f5154c527cfb3396de2b3d1b3712e31a74f8b5e79862ea91359ea","tests/collect.rs":"3ae066cd89eacc9d171ad99ec73335e8040748370e3a3f46845d5af12ce30cc2","tests/cross-pool.rs":"d2ce3b9013f77c955aa02313b27436c5bf760ab0e6a1e7d768effae69b5bdbfe","tests/debug.rs":"187e3ef1ada63a91db117c02ca4b351d31e8eb6b891ca651bfa60a51afe4ea7c","tests/drain_vec.rs":"305ca40ba41ed3b459a334386cd742c66586d62aadfb624278aabdf10b872a12","tests/intersperse.rs":"bda4fb2179086e32c77c8293b9bb85d55509c282441837ba1849c2d3aa3186a7","tests/issue671-unzip.rs":"d5eb38d8a6d8f66fdf1c40293abbf58f3ac42b5acfc5dca62b02c7ace5bfc1a4","tests/issue671.rs":"52914cac517074deaedcb81bd76b867f0b99cc7b65c3e01cfe12dc9fe38c0266","tests/iter_panic.rs":"2ca857b37b740528b2e8395b479a409227383b46e0ed012286dcdd1330dacd70","tests/named-threads.rs":"9bd7ea27b4f6cf9e3b3486311747e15a3beb9b9d4e48f115d66ed8288ca19d38","tests/octillion.rs":"756d3789300d6eb4d5f7690937e06f87714b6b0a62ac812f72b622bb6974ccd2","tests/par_bridge_recursion.rs":"6e7030de6d97d1db1c335f676dd2a6348cde2873520df290c4a16bf949c06f00","tests/producer_split_at.rs":"fbb28da59e85e4c253cc314f35f113ced8db2981ceda9977145af540f9996837","tests/sort-panic-safe.rs":"2746cf3bca0c3ae4645ab124ae8027be9670aa749cfbb6f4205b095f6f1dbcad","tests/str.rs":"49059384999be57994841652718cc048389380741be5c493423f8bd2206e4453"},"package":"9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"} \ No newline at end of file
diff --git a/vendor/rayon/Cargo.toml b/vendor/rayon/Cargo.toml
index 9b0e7b676..d9f8345ed 100644
--- a/vendor/rayon/Cargo.toml
+++ b/vendor/rayon/Cargo.toml
@@ -11,9 +11,9 @@
[package]
edition = "2021"
-rust-version = "1.59"
+rust-version = "1.63"
name = "rayon"
-version = "1.7.0"
+version = "1.8.0"
authors = [
"Niko Matsakis <niko@alum.mit.edu>",
"Josh Stone <cuviper@gmail.com>",
@@ -43,7 +43,7 @@ version = "1.0"
default-features = false
[dependencies.rayon-core]
-version = "1.11.0"
+version = "1.12.0"
[dev-dependencies.rand]
version = "0.8"
diff --git a/vendor/rayon/README.md b/vendor/rayon/README.md
index 7f925bca5..4949bb148 100644
--- a/vendor/rayon/README.md
+++ b/vendor/rayon/README.md
@@ -2,7 +2,7 @@
[![Rayon crate](https://img.shields.io/crates/v/rayon.svg)](https://crates.io/crates/rayon)
[![Rayon documentation](https://docs.rs/rayon/badge.svg)](https://docs.rs/rayon)
-![minimum rustc 1.59](https://img.shields.io/badge/rustc-1.59+-red.svg)
+![minimum rustc 1.63](https://img.shields.io/badge/rustc-1.63+-red.svg)
[![build status](https://github.com/rayon-rs/rayon/workflows/master/badge.svg)](https://github.com/rayon-rs/rayon/actions)
[![Join the chat at https://gitter.im/rayon-rs/Lobby](https://badges.gitter.im/rayon-rs/Lobby.svg)](https://gitter.im/rayon-rs/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
@@ -84,7 +84,7 @@ just add:
use rayon::prelude::*;
```
-Rayon currently requires `rustc 1.59.0` or greater.
+Rayon currently requires `rustc 1.63.0` or greater.
### Usage with WebAssembly
diff --git a/vendor/rayon/RELEASES.md b/vendor/rayon/RELEASES.md
index 28b476d47..c1e42de9e 100644
--- a/vendor/rayon/RELEASES.md
+++ b/vendor/rayon/RELEASES.md
@@ -1,3 +1,18 @@
+# Release rayon 1.8.0 / rayon-core 1.12.0 (2023-09-20)
+
+- The minimum supported `rustc` is now 1.63.
+- Added `ThreadPoolBuilder::use_current_thread` to use the builder thread as
+ part of the new thread pool. That thread does not run the pool's main loop,
+ but it may participate in work-stealing if it yields to rayon in some way.
+- Implemented `FromParallelIterator<T>` for `Box<[T]>`, `Rc<[T]>`, and
+ `Arc<[T]>`, as well as `FromParallelIterator<Box<str>>` and
+ `ParallelExtend<Box<str>>` for `String`.
+- `ThreadPoolBuilder::build_scoped` now uses `std::thread::scope`.
+- The default number of threads is now determined using
+ `std::thread::available_parallelism` instead of the `num_cpus` crate.
+- The internal logging facility has been removed, reducing bloat for all users.
+- Many smaller performance tweaks and documentation updates.
+
# Release rayon 1.7.0 / rayon-core 1.11.0 (2023-03-03)
- The minimum supported `rustc` is now 1.59.
diff --git a/vendor/rayon/src/iter/extend.rs b/vendor/rayon/src/iter/extend.rs
index 1769d476b..a2645280f 100644
--- a/vendor/rayon/src/iter/extend.rs
+++ b/vendor/rayon/src/iter/extend.rs
@@ -500,6 +500,16 @@ impl ParallelExtend<String> for String {
}
}
+/// Extends a string with boxed strings from a parallel iterator.
+impl ParallelExtend<Box<str>> for String {
+ fn par_extend<I>(&mut self, par_iter: I)
+ where
+ I: IntoParallelIterator<Item = Box<str>>,
+ {
+ extend!(self, par_iter, string_extend);
+ }
+}
+
/// Extends a string with string slices from a parallel iterator.
impl<'a> ParallelExtend<Cow<'a, str>> for String {
fn par_extend<I>(&mut self, par_iter: I)
diff --git a/vendor/rayon/src/iter/from_par_iter.rs b/vendor/rayon/src/iter/from_par_iter.rs
index 3240f32e2..49afd6cb8 100644
--- a/vendor/rayon/src/iter/from_par_iter.rs
+++ b/vendor/rayon/src/iter/from_par_iter.rs
@@ -6,6 +6,8 @@ use std::collections::LinkedList;
use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet};
use std::collections::{BinaryHeap, VecDeque};
use std::hash::{BuildHasher, Hash};
+use std::rc::Rc;
+use std::sync::Arc;
/// Creates an empty default collection and extends it.
fn collect_extended<C, I>(par_iter: I) -> C
@@ -31,6 +33,45 @@ where
}
}
+/// Collects items from a parallel iterator into a boxed slice.
+impl<T> FromParallelIterator<T> for Box<[T]>
+where
+ T: Send,
+{
+ fn from_par_iter<I>(par_iter: I) -> Self
+ where
+ I: IntoParallelIterator<Item = T>,
+ {
+ Vec::from_par_iter(par_iter).into()
+ }
+}
+
+/// Collects items from a parallel iterator into a reference-counted slice.
+impl<T> FromParallelIterator<T> for Rc<[T]>
+where
+ T: Send,
+{
+ fn from_par_iter<I>(par_iter: I) -> Self
+ where
+ I: IntoParallelIterator<Item = T>,
+ {
+ Vec::from_par_iter(par_iter).into()
+ }
+}
+
+/// Collects items from a parallel iterator into an atomically-reference-counted slice.
+impl<T> FromParallelIterator<T> for Arc<[T]>
+where
+ T: Send,
+{
+ fn from_par_iter<I>(par_iter: I) -> Self
+ where
+ I: IntoParallelIterator<Item = T>,
+ {
+ Vec::from_par_iter(par_iter).into()
+ }
+}
+
/// Collects items from a parallel iterator into a vecdeque.
impl<T> FromParallelIterator<T> for VecDeque<T>
where
@@ -174,6 +215,16 @@ impl FromParallelIterator<String> for String {
}
}
+/// Collects boxed strings from a parallel iterator into one large string.
+impl FromParallelIterator<Box<str>> for String {
+ fn from_par_iter<I>(par_iter: I) -> Self
+ where
+ I: IntoParallelIterator<Item = Box<str>>,
+ {
+ collect_extended(par_iter)
+ }
+}
+
/// Collects string slices from a parallel iterator into a string.
impl<'a> FromParallelIterator<Cow<'a, str>> for String {
fn from_par_iter<I>(par_iter: I) -> Self
diff --git a/vendor/rayon/src/iter/mod.rs b/vendor/rayon/src/iter/mod.rs
index e60ea1633..7b5a29aeb 100644
--- a/vendor/rayon/src/iter/mod.rs
+++ b/vendor/rayon/src/iter/mod.rs
@@ -1547,7 +1547,7 @@ pub trait ParallelIterator: Sized + Send {
/// Computes the maximum of all the items in the iterator with respect to
/// the given comparison function. If the iterator is empty, `None` is
- /// returned; otherwise, `Some(min)` is returned.
+ /// returned; otherwise, `Some(max)` is returned.
///
/// Note that the order in which the items will be reduced is not
/// specified, so if the comparison function is not associative, then
@@ -2392,7 +2392,7 @@ impl<T: ParallelIterator> IntoParallelIterator for T {
#[allow(clippy::len_without_is_empty)]
pub trait IndexedParallelIterator: ParallelIterator {
/// Collects the results of the iterator into the specified
- /// vector. The vector is always truncated before execution
+ /// vector. The vector is always cleared before execution
/// begins. If possible, reusing the vector across calls can lead
/// to better performance since it reuses the same backing buffer.
///
@@ -2401,7 +2401,7 @@ pub trait IndexedParallelIterator: ParallelIterator {
/// ```
/// use rayon::prelude::*;
///
- /// // any prior data will be truncated
+ /// // any prior data will be cleared
/// let mut vec = vec![-1, -2, -3];
///
/// (0..5).into_par_iter()
@@ -2414,7 +2414,7 @@ pub trait IndexedParallelIterator: ParallelIterator {
}
/// Unzips the results of the iterator into the specified
- /// vectors. The vectors are always truncated before execution
+ /// vectors. The vectors are always cleared before execution
/// begins. If possible, reusing the vectors across calls can lead
/// to better performance since they reuse the same backing buffer.
///
@@ -2423,7 +2423,7 @@ pub trait IndexedParallelIterator: ParallelIterator {
/// ```
/// use rayon::prelude::*;
///
- /// // any prior data will be truncated
+ /// // any prior data will be cleared
/// let mut left = vec![42; 10];
/// let mut right = vec![-1; 10];
///
diff --git a/vendor/rayon/src/iter/par_bridge.rs b/vendor/rayon/src/iter/par_bridge.rs
index 8398274b3..eb058d3e6 100644
--- a/vendor/rayon/src/iter/par_bridge.rs
+++ b/vendor/rayon/src/iter/par_bridge.rs
@@ -13,6 +13,11 @@ use crate::{current_num_threads, current_thread_index};
/// `par_iter` instead. However, it can still be useful for iterators that are difficult to
/// parallelize by other means, like channels or file or network I/O.
///
+/// Iterator items are pulled by `next()` one at a time, synchronized from each thread that is
+/// ready for work, so this may become a bottleneck if the serial iterator can't keep up with the
+/// parallel demand. The items are not buffered by `IterBridge`, so it's fine to use this with
+/// large or even unbounded iterators.
+///
/// The resulting iterator is not guaranteed to keep the order of the original iterator.
///
/// # Examples
diff --git a/vendor/rayon/src/iter/product.rs b/vendor/rayon/src/iter/product.rs
index a3d0727f9..e081be06b 100644
--- a/vendor/rayon/src/iter/product.rs
+++ b/vendor/rayon/src/iter/product.rs
@@ -13,7 +13,7 @@ where
}
fn mul<T: Product>(left: T, right: T) -> T {
- iter::once(left).chain(iter::once(right)).product()
+ [left, right].into_iter().product()
}
struct ProductConsumer<P: Send> {
diff --git a/vendor/rayon/src/iter/sum.rs b/vendor/rayon/src/iter/sum.rs
index a73e0bf3d..ddae810f9 100644
--- a/vendor/rayon/src/iter/sum.rs
+++ b/vendor/rayon/src/iter/sum.rs
@@ -13,7 +13,7 @@ where
}
fn add<T: Sum>(left: T, right: T) -> T {
- iter::once(left).chain(iter::once(right)).sum()
+ [left, right].into_iter().sum()
}
struct SumConsumer<S: Send> {
diff --git a/vendor/rayon/src/lib.rs b/vendor/rayon/src/lib.rs
index 86f997b36..dc7fcc0a7 100644
--- a/vendor/rayon/src/lib.rs
+++ b/vendor/rayon/src/lib.rs
@@ -152,7 +152,7 @@ impl<T> SendPtr<T> {
// Implement Clone without the T: Clone bound from the derive
impl<T> Clone for SendPtr<T> {
fn clone(&self) -> Self {
- Self(self.0)
+ *self
}
}
diff --git a/vendor/rayon/src/slice/quicksort.rs b/vendor/rayon/src/slice/quicksort.rs
index d71079ec3..2bfc35032 100644
--- a/vendor/rayon/src/slice/quicksort.rs
+++ b/vendor/rayon/src/slice/quicksort.rs
@@ -5,16 +5,34 @@
//! `rayon_core::join`.
use std::cmp;
+use std::marker::PhantomData;
use std::mem::{self, MaybeUninit};
use std::ptr;
/// When dropped, copies from `src` into `dest`.
-struct CopyOnDrop<T> {
+#[must_use]
+struct CopyOnDrop<'a, T> {
src: *const T,
dest: *mut T,
+ /// `src` is often a local pointer here, make sure we have appropriate
+ /// PhantomData so that dropck can protect us.
+ marker: PhantomData<&'a mut T>,
}
-impl<T> Drop for CopyOnDrop<T> {
+impl<'a, T> CopyOnDrop<'a, T> {
+ /// Construct from a source pointer and a destination
+ /// Assumes dest lives longer than src, since there is no easy way to
+ /// copy down lifetime information from another pointer
+ unsafe fn new(src: &'a T, dest: *mut T) -> Self {
+ CopyOnDrop {
+ src,
+ dest,
+ marker: PhantomData,
+ }
+ }
+}
+
+impl<T> Drop for CopyOnDrop<'_, T> {
fn drop(&mut self) {
// SAFETY: This is a helper class.
// Please refer to its usage for correctness.
@@ -54,10 +72,7 @@ where
// into the slice.
let tmp = mem::ManuallyDrop::new(ptr::read(v.get_unchecked(0)));
let v = v.as_mut_ptr();
- let mut hole = CopyOnDrop {
- src: &*tmp,
- dest: v.add(1),
- };
+ let mut hole = CopyOnDrop::new(&*tmp, v.add(1));
ptr::copy_nonoverlapping(v.add(1), v.add(0), 1);
for i in 2..len {
@@ -103,10 +118,7 @@ where
// into the slice.
let tmp = mem::ManuallyDrop::new(ptr::read(v.get_unchecked(len - 1)));
let v = v.as_mut_ptr();
- let mut hole = CopyOnDrop {
- src: &*tmp,
- dest: v.add(len - 2),
- };
+ let mut hole = CopyOnDrop::new(&*tmp, v.add(len - 2));
ptr::copy_nonoverlapping(v.add(len - 2), v.add(len - 1), 1);
for i in (0..len - 2).rev() {
@@ -510,10 +522,7 @@ where
// SAFETY: `pivot` is a reference to the first element of `v`, so `ptr::read` is safe.
let tmp = mem::ManuallyDrop::new(unsafe { ptr::read(pivot) });
- let _pivot_guard = CopyOnDrop {
- src: &*tmp,
- dest: pivot,
- };
+ let _pivot_guard = unsafe { CopyOnDrop::new(&*tmp, pivot) };
let pivot = &*tmp;
// Find the first pair of out-of-order elements.
@@ -569,10 +578,7 @@ where
// operation panics, the pivot will be automatically written back into the slice.
// SAFETY: The pointer here is valid because it is obtained from a reference to a slice.
let tmp = mem::ManuallyDrop::new(unsafe { ptr::read(pivot) });
- let _pivot_guard = CopyOnDrop {
- src: &*tmp,
- dest: pivot,
- };
+ let _pivot_guard = unsafe { CopyOnDrop::new(&*tmp, pivot) };
let pivot = &*tmp;
// Now partition the slice.
diff --git a/vendor/redox_syscall-0.3.5/.cargo-checksum.json b/vendor/redox_syscall-0.3.5/.cargo-checksum.json
new file mode 100644
index 000000000..72e27feeb
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"80db3d7e545f9b8a04804e634948c6e80c712f051680b2e7a39ddb848c200151","LICENSE":"efcfee7981ff72431fffb06925cad00a23dce079ed4354f61030ad5abdb78829","README.md":"9161f18ba7f69b4ca51e844aee8ffb8237513a468c5c3b1f3a5f989044f895ac","src/arch/aarch64.rs":"9b4cf7da1f001ce54bfd01b7a001dbc8043c1ef89823781a2a1070e2c096a9ce","src/arch/nonredox.rs":"1055cd441f4b95c9ec428222a7796c7fac953a8a500ca08173743ea95220aab3","src/arch/riscv64.rs":"20bf9a8db779059773b113643d0cb3737fbb5d57f45ee39b8ae9d3396b6ef636","src/arch/x86.rs":"cf01f4d798e8861ad5b9429714c947e2d7c53a3cb9a13d53dc7a38e4bdad4101","src/arch/x86_64.rs":"fd80c9a412d07c85f2b942f36de364edfff7cd49f6c00c043e69becb7c76119f","src/call.rs":"141bdb2cb64dc118beadf40fc8180cd32e41841c8d7db71aed646a5a8ab9fac3","src/data.rs":"bd4545d4c2fcc59ff26ae52ad7f773a697d5ccf639a2ffc253cece6b31e94d51","src/error.rs":"ef20f3817f997a1aeb7114628407f19cb8bc13c555d4e093918f38a5d098f798","src/flag.rs":"aad91126a0bb3413cd103fc38b457aa4d1f6b949605e3ae249aea0dfec8504ff","src/io/dma.rs":"85577342547afaac0dc46740dfeb9d2e4239d8809b86748c3fcaa12f922b1c9d","src/io/io.rs":"e1d454ff47efac70fdaa709251a5a9c1c5637f931994ba3bf6a38c6db9145822","src/io/mmio.rs":"12d0fb4d4f45097bf2c14f73cb1ce21325eae193b537e9f18af73ed5281b5e63","src/io/mod.rs":"79c2fce4fd6d75f3b9169df64b7a605feff31fab2e5ed81984ae085a1d07c0c4","src/io/pio.rs":"9ee6f2229b700d1c45b4c8c6242bd99fe69634e16dcd5843d9e8d1c958047406","src/lib.rs":"25c9f35cf709e7e50336ae12f0390f968cc11515f93b6d757825a7b7725eeadb","src/number.rs":"773d9f55a98c6ae5b4cb08b396568f05f8d9b187a7609b7a1c5dd940f6ee674a","src/scheme/generate.sh":"dde4e30f4e0223fb1a24ed486a6c36e624c854dbf890862cb6866f4fa3c7a6eb","src/scheme/mod.rs":"cb622405deb0aef4ab04499ea1adfd338c9c5dd9c31a1fe9989786dbf69b49d8","src/scheme/scheme.rs":"2e27e08e3b9005a5705fadd10a6160a570322c873d1b6477f269e0beae35f046","src/scheme/scheme_block.rs":"a8d0137e106dcb605367bfc6a22b83317142996b7e410c832de0f63a423d5305","src/scheme/scheme_block_mut.rs":"b6cea44a3e79dd6c30b4280b6913a215628918978451efe11f31b0d7eddd44a5","src/scheme/scheme_mut.rs":"e77da9d5208de101c126eca9fa685f2b78a5ddc4890ad5f5f4d79ded3bbd8fbd","src/scheme/seek.rs":"94e044de47b0f00eb0c2aea3fb21001ac2b9aa1e4b20d73fd54163fe92fa63f7","src/tests.rs":"b44de69251d6bcc1cb796147a1212fffd3ac7d5796d9a0d2265db0aac8a909df"},"package":"567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"} \ No newline at end of file
diff --git a/vendor/redox_syscall-0.3.5/Cargo.toml b/vendor/redox_syscall-0.3.5/Cargo.toml
new file mode 100644
index 000000000..ab14e3fe8
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/Cargo.toml
@@ -0,0 +1,38 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2018"
+name = "redox_syscall"
+version = "0.3.5"
+authors = ["Jeremy Soller <jackpot51@gmail.com>"]
+description = "A Rust library to access raw Redox system calls"
+documentation = "https://docs.rs/redox_syscall"
+readme = "README.md"
+license = "MIT"
+repository = "https://gitlab.redox-os.org/redox-os/syscall"
+
+[lib]
+name = "syscall"
+
+[dependencies.bitflags]
+version = "1.1.0"
+
+[dependencies.core]
+version = "1.0.0"
+optional = true
+package = "rustc-std-workspace-core"
+
+[features]
+rustc-dep-of-std = [
+ "core",
+ "bitflags/rustc-dep-of-std",
+]
diff --git a/vendor/redox_syscall-0.3.5/LICENSE b/vendor/redox_syscall-0.3.5/LICENSE
new file mode 100644
index 000000000..1292bb7fb
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/LICENSE
@@ -0,0 +1,22 @@
+Copyright (c) 2017 Redox OS Developers
+
+MIT License
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/redox_syscall-0.3.5/README.md b/vendor/redox_syscall-0.3.5/README.md
new file mode 100644
index 000000000..244c90861
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/README.md
@@ -0,0 +1,6 @@
+# syscall
+[Redox OS](https://gitlab.redox-os.org/redox-os/redox)'s syscall API
+
+[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
+[![crates.io](http://meritbadge.herokuapp.com/redox_syscall)](https://crates.io/crates/redox_syscall)
+[![docs.rs](https://docs.rs/redox_syscall/badge.svg)](https://docs.rs/redox_syscall)
diff --git a/vendor/redox_syscall-0.3.5/src/arch/aarch64.rs b/vendor/redox_syscall-0.3.5/src/arch/aarch64.rs
new file mode 100644
index 000000000..e792427cf
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/arch/aarch64.rs
@@ -0,0 +1,150 @@
+use core::{mem, slice};
+use core::ops::{Deref, DerefMut};
+
+use super::error::{Error, Result};
+
+pub const PAGE_SIZE: usize = 4096;
+
+macro_rules! syscall {
+ ($($name:ident($a:ident, $($b:ident, $($c:ident, $($d:ident, $($e:ident, $($f:ident, )?)?)?)?)?);)+) => {
+ $(
+ pub unsafe fn $name($a: usize, $($b: usize, $($c: usize, $($d: usize, $($e: usize, $($f: usize)?)?)?)?)?) -> Result<usize> {
+ let ret: usize;
+
+ core::arch::asm!(
+ "svc 0",
+ in("x8") $a,
+ $(
+ in("x0") $b,
+ $(
+ in("x1") $c,
+ $(
+ in("x2") $d,
+ $(
+ in("x3") $e,
+ $(
+ in("x4") $f,
+ )?
+ )?
+ )?
+ )?
+ )?
+ lateout("x0") ret,
+ options(nostack),
+ );
+
+ Error::demux(ret)
+ }
+ )+
+ };
+}
+
+syscall! {
+ syscall0(a,);
+ syscall1(a, b,);
+ syscall2(a, b, c,);
+ syscall3(a, b, c, d,);
+ syscall4(a, b, c, d, e,);
+ syscall5(a, b, c, d, e, f,);
+}
+
+#[derive(Copy, Clone, Debug, Default)]
+#[repr(C)]
+pub struct IntRegisters {
+ pub x30: usize,
+ pub x29: usize,
+ pub x28: usize,
+ pub x27: usize,
+ pub x26: usize,
+ pub x25: usize,
+ pub x24: usize,
+ pub x23: usize,
+ pub x22: usize,
+ pub x21: usize,
+ pub x20: usize,
+ pub x19: usize,
+ pub x18: usize,
+ pub x17: usize,
+ pub x16: usize,
+ pub x15: usize,
+ pub x14: usize,
+ pub x13: usize,
+ pub x12: usize,
+ pub x11: usize,
+ pub x10: usize,
+ pub x9: usize,
+ pub x8: usize,
+ pub x7: usize,
+ pub x6: usize,
+ pub x5: usize,
+ pub x4: usize,
+ pub x3: usize,
+ pub x2: usize,
+ pub x1: usize,
+ pub x0: usize
+}
+
+impl Deref for IntRegisters {
+ type Target = [u8];
+ fn deref(&self) -> &[u8] {
+ unsafe {
+ slice::from_raw_parts(self as *const IntRegisters as *const u8, mem::size_of::<IntRegisters>())
+ }
+ }
+}
+
+impl DerefMut for IntRegisters {
+ fn deref_mut(&mut self) -> &mut [u8] {
+ unsafe {
+ slice::from_raw_parts_mut(self as *mut IntRegisters as *mut u8, mem::size_of::<IntRegisters>())
+ }
+ }
+}
+
+#[derive(Clone, Copy, Debug, Default)]
+#[repr(packed)]
+pub struct FloatRegisters {
+ pub fp_simd_regs: [u128; 32],
+ pub fpsr: u32,
+ pub fpcr: u32
+}
+
+impl Deref for FloatRegisters {
+ type Target = [u8];
+ fn deref(&self) -> &[u8] {
+ unsafe {
+ slice::from_raw_parts(self as *const FloatRegisters as *const u8, mem::size_of::<FloatRegisters>())
+ }
+ }
+}
+
+impl DerefMut for FloatRegisters {
+ fn deref_mut(&mut self) -> &mut [u8] {
+ unsafe {
+ slice::from_raw_parts_mut(self as *mut FloatRegisters as *mut u8, mem::size_of::<FloatRegisters>())
+ }
+ }
+}
+
+#[derive(Clone, Copy, Debug, Default)]
+#[repr(packed)]
+pub struct EnvRegisters {
+ pub tpidr_el0: usize,
+ pub tpidrro_el0: usize,
+}
+impl Deref for EnvRegisters {
+ type Target = [u8];
+ fn deref(&self) -> &[u8] {
+ unsafe {
+ slice::from_raw_parts(self as *const EnvRegisters as *const u8, mem::size_of::<EnvRegisters>())
+ }
+ }
+}
+
+impl DerefMut for EnvRegisters {
+ fn deref_mut(&mut self) -> &mut [u8] {
+ unsafe {
+ slice::from_raw_parts_mut(self as *mut EnvRegisters as *mut u8, mem::size_of::<EnvRegisters>())
+ }
+ }
+}
diff --git a/vendor/redox_syscall-0.3.5/src/arch/nonredox.rs b/vendor/redox_syscall-0.3.5/src/arch/nonredox.rs
new file mode 100644
index 000000000..65c44fcd8
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/arch/nonredox.rs
@@ -0,0 +1,29 @@
+use super::error::{Error, Result, ENOSYS};
+
+// Doesn't really matter, but since we will most likely run on an x86_64 host, why not 4096?
+pub const PAGE_SIZE: usize = 4096;
+
+pub unsafe fn syscall0(_a: usize) -> Result<usize> {
+ Err(Error::new(ENOSYS))
+}
+
+pub unsafe fn syscall1(_a: usize, _b: usize) -> Result<usize> {
+ Err(Error::new(ENOSYS))
+}
+
+pub unsafe fn syscall2(_a: usize, _b: usize, _c: usize) -> Result<usize> {
+ Err(Error::new(ENOSYS))
+}
+
+pub unsafe fn syscall3(_a: usize, _b: usize, _c: usize, _d: usize) -> Result<usize> {
+ Err(Error::new(ENOSYS))
+}
+
+pub unsafe fn syscall4(_a: usize, _b: usize, _c: usize, _d: usize, _e: usize) -> Result<usize> {
+ Err(Error::new(ENOSYS))
+}
+
+pub unsafe fn syscall5(_a: usize, _b: usize, _c: usize, _d: usize, _e: usize, _f: usize)
+ -> Result<usize> {
+ Err(Error::new(ENOSYS))
+}
diff --git a/vendor/redox_syscall-0.3.5/src/arch/riscv64.rs b/vendor/redox_syscall-0.3.5/src/arch/riscv64.rs
new file mode 100644
index 000000000..2a90260da
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/arch/riscv64.rs
@@ -0,0 +1,93 @@
+use core::{mem, slice};
+use core::ops::{Deref, DerefMut};
+
+use super::error::{Error, Result};
+
+macro_rules! syscall {
+ ($($name:ident($a:ident, $($b:ident, $($c:ident, $($d:ident, $($e:ident, $($f:ident, )?)?)?)?)?);)+) => {
+ $(
+ pub unsafe fn $name($a: usize, $($b: usize, $($c: usize, $($d: usize, $($e: usize, $($f: usize)?)?)?)?)?) -> Result<usize> {
+ let ret: usize;
+
+ asm!(
+ "ecall",
+ in("a7") $a,
+ $(
+ in("a0") $b,
+ $(
+ in("a1") $c,
+ $(
+ in("a2") $d,
+ $(
+ in("a3") $e,
+ $(
+ in("a4") $f,
+ )?
+ )?
+ )?
+ )?
+ )?
+ lateout("a0") ret,
+ options(nostack),
+ );
+
+ Error::demux(ret)
+ }
+ )+
+ };
+}
+
+syscall! {
+ syscall0(a,);
+ syscall1(a, b,);
+ syscall2(a, b, c,);
+ syscall3(a, b, c, d,);
+ syscall4(a, b, c, d, e,);
+ syscall5(a, b, c, d, e, f,);
+}
+
+#[derive(Copy, Clone, Debug, Default)]
+#[repr(C)]
+pub struct IntRegisters {
+ //TODO
+}
+
+impl Deref for IntRegisters {
+ type Target = [u8];
+ fn deref(&self) -> &[u8] {
+ unsafe {
+ slice::from_raw_parts(self as *const IntRegisters as *const u8, mem::size_of::<IntRegisters>())
+ }
+ }
+}
+
+impl DerefMut for IntRegisters {
+ fn deref_mut(&mut self) -> &mut [u8] {
+ unsafe {
+ slice::from_raw_parts_mut(self as *mut IntRegisters as *mut u8, mem::size_of::<IntRegisters>())
+ }
+ }
+}
+
+#[derive(Clone, Copy, Debug, Default)]
+#[repr(packed)]
+pub struct FloatRegisters {
+ //TODO
+}
+
+impl Deref for FloatRegisters {
+ type Target = [u8];
+ fn deref(&self) -> &[u8] {
+ unsafe {
+ slice::from_raw_parts(self as *const FloatRegisters as *const u8, mem::size_of::<FloatRegisters>())
+ }
+ }
+}
+
+impl DerefMut for FloatRegisters {
+ fn deref_mut(&mut self) -> &mut [u8] {
+ unsafe {
+ slice::from_raw_parts_mut(self as *mut FloatRegisters as *mut u8, mem::size_of::<FloatRegisters>())
+ }
+ }
+}
diff --git a/vendor/redox_syscall-0.3.5/src/arch/x86.rs b/vendor/redox_syscall-0.3.5/src/arch/x86.rs
new file mode 100644
index 000000000..54d8c0a93
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/arch/x86.rs
@@ -0,0 +1,184 @@
+use core::{mem, slice};
+use core::arch::asm;
+use core::ops::{Deref, DerefMut};
+
+use super::error::{Error, Result};
+
+pub const PAGE_SIZE: usize = 4096;
+
+macro_rules! syscall {
+ ($($name:ident($a:ident, $($b:ident, $($c:ident, $($d:ident, $($e:ident, $($f:ident, )?)?)?)?)?);)+) => {
+ $(
+ pub unsafe fn $name(mut $a: usize, $($b: usize, $($c: usize, $($d: usize, $($e: usize, $($f: usize)?)?)?)?)?) -> Result<usize> {
+ asm!(
+ "int 0x80",
+ inout("eax") $a,
+ $(
+ in("ebx") $b,
+ $(
+ in("ecx") $c,
+ $(
+ in("edx") $d,
+ $(
+ in("esi") $e,
+ $(
+ in("edi") $f,
+ )?
+ )?
+ )?
+ )?
+ )?
+ options(nostack),
+ );
+
+ Error::demux($a)
+ }
+ )+
+ };
+}
+
+syscall! {
+ syscall0(a,);
+ syscall1(a, b,);
+ syscall2(a, b, c,);
+ syscall3(a, b, c, d,);
+ // Must be done custom because LLVM reserves ESI
+ //syscall4(a, b, c, d, e,);
+ //syscall5(a, b, c, d, e, f,);
+}
+
+pub unsafe fn syscall4(mut a: usize, b: usize, c: usize, d: usize, e: usize)
+ -> Result<usize> {
+ asm!(
+ "xchg esi, {e}
+ int 0x80
+ xchg esi, {e}",
+ e = in(reg) e,
+ inout("eax") a,
+ in("ebx") b,
+ in("ecx") c,
+ in("edx") d,
+ options(nostack),
+ );
+
+ Error::demux(a)
+}
+
+pub unsafe fn syscall5(mut a: usize, b: usize, c: usize, d: usize, e: usize, f: usize)
+ -> Result<usize> {
+ asm!(
+ "xchg esi, {e}
+ int 0x80
+ xchg esi, {e}",
+ e = in(reg) e,
+ inout("eax") a,
+ in("ebx") b,
+ in("ecx") c,
+ in("edx") d,
+ in("edi") f,
+ options(nostack),
+ );
+
+ Error::demux(a)
+}
+
+#[derive(Copy, Clone, Debug, Default)]
+#[repr(C)]
+pub struct IntRegisters {
+ // TODO: Some of these don't get set by Redox yet. Should they?
+
+ pub ebp: usize,
+ pub esi: usize,
+ pub edi: usize,
+ pub ebx: usize,
+ pub eax: usize,
+ pub ecx: usize,
+ pub edx: usize,
+ // pub orig_rax: usize,
+ pub eip: usize,
+ pub cs: usize,
+ pub eflags: usize,
+ pub esp: usize,
+ pub ss: usize,
+ // pub fs_base: usize,
+ // pub gs_base: usize,
+ // pub ds: usize,
+ // pub es: usize,
+ pub fs: usize,
+ // pub gs: usize
+}
+
+impl Deref for IntRegisters {
+ type Target = [u8];
+ fn deref(&self) -> &[u8] {
+ unsafe {
+ slice::from_raw_parts(self as *const IntRegisters as *const u8, mem::size_of::<IntRegisters>())
+ }
+ }
+}
+
+impl DerefMut for IntRegisters {
+ fn deref_mut(&mut self) -> &mut [u8] {
+ unsafe {
+ slice::from_raw_parts_mut(self as *mut IntRegisters as *mut u8, mem::size_of::<IntRegisters>())
+ }
+ }
+}
+
+#[derive(Clone, Copy, Debug, Default)]
+#[repr(packed)]
+pub struct FloatRegisters {
+ pub fcw: u16,
+ pub fsw: u16,
+ pub ftw: u8,
+ pub _reserved: u8,
+ pub fop: u16,
+ pub fip: u64,
+ pub fdp: u64,
+ pub mxcsr: u32,
+ pub mxcsr_mask: u32,
+ pub st_space: [u128; 8],
+ pub xmm_space: [u128; 16],
+ // TODO: YMM/ZMM
+}
+
+impl Deref for FloatRegisters {
+ type Target = [u8];
+ fn deref(&self) -> &[u8] {
+ unsafe {
+ slice::from_raw_parts(self as *const FloatRegisters as *const u8, mem::size_of::<FloatRegisters>())
+ }
+ }
+}
+
+impl DerefMut for FloatRegisters {
+ fn deref_mut(&mut self) -> &mut [u8] {
+ unsafe {
+ slice::from_raw_parts_mut(self as *mut FloatRegisters as *mut u8, mem::size_of::<FloatRegisters>())
+ }
+ }
+}
+
+#[derive(Clone, Copy, Debug, Default)]
+#[repr(packed)]
+pub struct EnvRegisters {
+ pub fsbase: u32,
+ pub gsbase: u32,
+}
+
+impl Deref for EnvRegisters {
+ type Target = [u8];
+ fn deref(&self) -> &[u8] {
+ unsafe {
+ slice::from_raw_parts(self as *const EnvRegisters as *const u8, mem::size_of::<EnvRegisters>())
+ }
+ }
+}
+
+impl DerefMut for EnvRegisters {
+ fn deref_mut(&mut self) -> &mut [u8] {
+ unsafe {
+ slice::from_raw_parts_mut(self as *mut EnvRegisters as *mut u8, mem::size_of::<EnvRegisters>())
+ }
+ }
+}
diff --git a/vendor/redox_syscall-0.3.5/src/arch/x86_64.rs b/vendor/redox_syscall-0.3.5/src/arch/x86_64.rs
new file mode 100644
index 000000000..2ff57bb2d
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/arch/x86_64.rs
@@ -0,0 +1,157 @@
+use core::{mem, slice};
+use core::arch::asm;
+use core::ops::{Deref, DerefMut};
+
+use super::error::{Error, Result};
+
+pub const PAGE_SIZE: usize = 4096;
+
+macro_rules! syscall {
+ ($($name:ident($a:ident, $($b:ident, $($c:ident, $($d:ident, $($e:ident, $($f:ident, )?)?)?)?)?);)+) => {
+ $(
+ pub unsafe fn $name(mut $a: usize, $($b: usize, $($c: usize, $($d: usize, $($e: usize, $($f: usize)?)?)?)?)?) -> Result<usize> {
+ asm!(
+ "syscall",
+ inout("rax") $a,
+ $(
+ in("rdi") $b,
+ $(
+ in("rsi") $c,
+ $(
+ in("rdx") $d,
+ $(
+ in("r10") $e,
+ $(
+ in("r8") $f,
+ )?
+ )?
+ )?
+ )?
+ )?
+ out("rcx") _,
+ out("r11") _,
+ options(nostack),
+ );
+
+ Error::demux($a)
+ }
+ )+
+ };
+}
+
+syscall! {
+ syscall0(a,);
+ syscall1(a, b,);
+ syscall2(a, b, c,);
+ syscall3(a, b, c, d,);
+ syscall4(a, b, c, d, e,);
+ syscall5(a, b, c, d, e, f,);
+}
+
+#[derive(Copy, Clone, Debug, Default)]
+#[repr(C)]
+pub struct IntRegisters {
+ // TODO: Some of these don't get set by Redox yet. Should they?
+
+ pub r15: usize,
+ pub r14: usize,
+ pub r13: usize,
+ pub r12: usize,
+ pub rbp: usize,
+ pub rbx: usize,
+ pub r11: usize,
+ pub r10: usize,
+ pub r9: usize,
+ pub r8: usize,
+ pub rax: usize,
+ pub rcx: usize,
+ pub rdx: usize,
+ pub rsi: usize,
+ pub rdi: usize,
+ // pub orig_rax: usize,
+ pub rip: usize,
+ pub cs: usize,
+ pub rflags: usize,
+ pub rsp: usize,
+ pub ss: usize,
+ // pub fs_base: usize,
+ // pub gs_base: usize,
+ // pub ds: usize,
+ // pub es: usize,
+ pub fs: usize,
+ // pub gs: usize
+}
+
+impl Deref for IntRegisters {
+ type Target = [u8];
+ fn deref(&self) -> &[u8] {
+ unsafe {
+ slice::from_raw_parts(self as *const IntRegisters as *const u8, mem::size_of::<IntRegisters>())
+ }
+ }
+}
+
+impl DerefMut for IntRegisters {
+ fn deref_mut(&mut self) -> &mut [u8] {
+ unsafe {
+ slice::from_raw_parts_mut(self as *mut IntRegisters as *mut u8, mem::size_of::<IntRegisters>())
+ }
+ }
+}
+
+#[derive(Clone, Copy, Debug, Default)]
+#[repr(packed)]
+pub struct FloatRegisters {
+ pub fcw: u16,
+ pub fsw: u16,
+ pub ftw: u8,
+ pub _reserved: u8,
+ pub fop: u16,
+ pub fip: u64,
+ pub fdp: u64,
+ pub mxcsr: u32,
+ pub mxcsr_mask: u32,
+ pub st_space: [u128; 8],
+ pub xmm_space: [u128; 16],
+ // TODO: YMM/ZMM
+}
+
+impl Deref for FloatRegisters {
+ type Target = [u8];
+ fn deref(&self) -> &[u8] {
+ unsafe {
+ slice::from_raw_parts(self as *const FloatRegisters as *const u8, mem::size_of::<FloatRegisters>())
+ }
+ }
+}
+
+impl DerefMut for FloatRegisters {
+ fn deref_mut(&mut self) -> &mut [u8] {
+ unsafe {
+ slice::from_raw_parts_mut(self as *mut FloatRegisters as *mut u8, mem::size_of::<FloatRegisters>())
+ }
+ }
+}
+#[derive(Clone, Copy, Debug, Default)]
+#[repr(packed)]
+pub struct EnvRegisters {
+ pub fsbase: u64,
+ pub gsbase: u64,
+ // TODO: PKRU?
+}
+impl Deref for EnvRegisters {
+ type Target = [u8];
+ fn deref(&self) -> &[u8] {
+ unsafe {
+ slice::from_raw_parts(self as *const EnvRegisters as *const u8, mem::size_of::<EnvRegisters>())
+ }
+ }
+}
+
+impl DerefMut for EnvRegisters {
+ fn deref_mut(&mut self) -> &mut [u8] {
+ unsafe {
+ slice::from_raw_parts_mut(self as *mut EnvRegisters as *mut u8, mem::size_of::<EnvRegisters>())
+ }
+ }
+}
diff --git a/vendor/redox_syscall-0.3.5/src/call.rs b/vendor/redox_syscall-0.3.5/src/call.rs
new file mode 100644
index 000000000..bc1af0dc2
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/call.rs
@@ -0,0 +1,379 @@
+use super::arch::*;
+use super::data::{Map, SigAction, Stat, StatVfs, TimeSpec};
+use super::error::Result;
+use super::flag::*;
+use super::number::*;
+
+use core::{mem, ptr};
+
+// Signal restorer
+extern "C" fn restorer() -> ! {
+ sigreturn().unwrap();
+ unreachable!();
+}
+
+/// Close a file
+pub fn close(fd: usize) -> Result<usize> {
+ unsafe { syscall1(SYS_CLOSE, fd) }
+}
+
+/// Get the current system time
+pub fn clock_gettime(clock: usize, tp: &mut TimeSpec) -> Result<usize> {
+ unsafe { syscall2(SYS_CLOCK_GETTIME, clock, tp as *mut TimeSpec as usize) }
+}
+
+/// Copy and transform a file descriptor
+pub fn dup(fd: usize, buf: &[u8]) -> Result<usize> {
+ unsafe { syscall3(SYS_DUP, fd, buf.as_ptr() as usize, buf.len()) }
+}
+
+/// Copy and transform a file descriptor
+pub fn dup2(fd: usize, newfd: usize, buf: &[u8]) -> Result<usize> {
+ unsafe { syscall4(SYS_DUP2, fd, newfd, buf.as_ptr() as usize, buf.len()) }
+}
+
+/// Exit the current process
+pub fn exit(status: usize) -> Result<usize> {
+ unsafe { syscall1(SYS_EXIT, status) }
+}
+
+/// Change file permissions
+pub fn fchmod(fd: usize, mode: u16) -> Result<usize> {
+ unsafe { syscall2(SYS_FCHMOD, fd, mode as usize) }
+
+}
+
+/// Change file ownership
+pub fn fchown(fd: usize, uid: u32, gid: u32) -> Result<usize> {
+ unsafe { syscall3(SYS_FCHOWN, fd, uid as usize, gid as usize) }
+
+}
+
+/// Change file descriptor flags
+pub fn fcntl(fd: usize, cmd: usize, arg: usize) -> Result<usize> {
+ unsafe { syscall3(SYS_FCNTL, fd, cmd, arg) }
+}
+
+/// Map a file into memory, but with the ability to set the address to map into, either as a hint
+/// or as a requirement of the map.
+///
+/// # Errors
+/// `EACCES` - the file descriptor was not open for reading
+/// `EBADF` - if the file descriptor was invalid
+/// `ENODEV` - mmapping was not supported
+/// `EINVAL` - invalid combination of flags
+/// `EEXIST` - if [`MapFlags::MAP_FIXED`] was set, and the address specified was already in use.
+///
+pub unsafe fn fmap(fd: usize, map: &Map) -> Result<usize> {
+ syscall3(SYS_FMAP, fd, map as *const Map as usize, mem::size_of::<Map>())
+}
+
+/// Unmap whole (or partial) continous memory-mapped files
+pub unsafe fn funmap(addr: usize, len: usize) -> Result<usize> {
+ syscall2(SYS_FUNMAP, addr, len)
+}
+
+/// Retrieve the canonical path of a file
+pub fn fpath(fd: usize, buf: &mut [u8]) -> Result<usize> {
+ unsafe { syscall3(SYS_FPATH, fd, buf.as_mut_ptr() as usize, buf.len()) }
+}
+
+/// Rename a file
+pub fn frename<T: AsRef<str>>(fd: usize, path: T) -> Result<usize> {
+ unsafe { syscall3(SYS_FRENAME, fd, path.as_ref().as_ptr() as usize, path.as_ref().len()) }
+}
+
+/// Get metadata about a file
+pub fn fstat(fd: usize, stat: &mut Stat) -> Result<usize> {
+ unsafe { syscall3(SYS_FSTAT, fd, stat as *mut Stat as usize, mem::size_of::<Stat>()) }
+}
+
+/// Get metadata about a filesystem
+pub fn fstatvfs(fd: usize, stat: &mut StatVfs) -> Result<usize> {
+ unsafe { syscall3(SYS_FSTATVFS, fd, stat as *mut StatVfs as usize, mem::size_of::<StatVfs>()) }
+}
+
+/// Sync a file descriptor to its underlying medium
+pub fn fsync(fd: usize) -> Result<usize> {
+ unsafe { syscall1(SYS_FSYNC, fd) }
+}
+
+/// Truncate or extend a file to a specified length
+pub fn ftruncate(fd: usize, len: usize) -> Result<usize> {
+ unsafe { syscall2(SYS_FTRUNCATE, fd, len) }
+}
+
+// Change modify and/or access times
+pub fn futimens(fd: usize, times: &[TimeSpec]) -> Result<usize> {
+ unsafe { syscall3(SYS_FUTIMENS, fd, times.as_ptr() as usize, times.len() * mem::size_of::<TimeSpec>()) }
+}
+
+/// Fast userspace mutex
+pub unsafe fn futex(addr: *mut i32, op: usize, val: i32, val2: usize, addr2: *mut i32)
+ -> Result<usize> {
+ syscall5(SYS_FUTEX, addr as usize, op, (val as isize) as usize, val2, addr2 as usize)
+}
+
+/// Get the effective group ID
+pub fn getegid() -> Result<usize> {
+ unsafe { syscall0(SYS_GETEGID) }
+}
+
+/// Get the effective namespace
+pub fn getens() -> Result<usize> {
+ unsafe { syscall0(SYS_GETENS) }
+}
+
+/// Get the effective user ID
+pub fn geteuid() -> Result<usize> {
+ unsafe { syscall0(SYS_GETEUID) }
+}
+
+/// Get the current group ID
+pub fn getgid() -> Result<usize> {
+ unsafe { syscall0(SYS_GETGID) }
+}
+
+/// Get the current namespace
+pub fn getns() -> Result<usize> {
+ unsafe { syscall0(SYS_GETNS) }
+}
+
+/// Get the current process ID
+pub fn getpid() -> Result<usize> {
+ unsafe { syscall0(SYS_GETPID) }
+}
+
+/// Get the process group ID
+pub fn getpgid(pid: usize) -> Result<usize> {
+ unsafe { syscall1(SYS_GETPGID, pid) }
+}
+
+/// Get the parent process ID
+pub fn getppid() -> Result<usize> {
+ unsafe { syscall0(SYS_GETPPID) }
+}
+
+/// Get the current user ID
+pub fn getuid() -> Result<usize> {
+ unsafe { syscall0(SYS_GETUID) }
+}
+
+/// Set the I/O privilege level
+///
+/// # Errors
+///
+/// * `EPERM` - `uid != 0`
+/// * `EINVAL` - `level > 3`
+pub unsafe fn iopl(level: usize) -> Result<usize> {
+ syscall1(SYS_IOPL, level)
+}
+
+/// Send a signal `sig` to the process identified by `pid`
+pub fn kill(pid: usize, sig: usize) -> Result<usize> {
+ unsafe { syscall2(SYS_KILL, pid, sig) }
+}
+
+/// Create a link to a file
+pub unsafe fn link(old: *const u8, new: *const u8) -> Result<usize> {
+ syscall2(SYS_LINK, old as usize, new as usize)
+}
+
+/// Seek to `offset` bytes in a file descriptor
+pub fn lseek(fd: usize, offset: isize, whence: usize) -> Result<usize> {
+ unsafe { syscall3(SYS_LSEEK, fd, offset as usize, whence) }
+}
+
+/// Make a new scheme namespace
+pub fn mkns(schemes: &[[usize; 2]]) -> Result<usize> {
+ unsafe { syscall2(SYS_MKNS, schemes.as_ptr() as usize, schemes.len()) }
+}
+
+/// Change mapping flags
+pub unsafe fn mprotect(addr: usize, size: usize, flags: MapFlags) -> Result<usize> {
+ syscall3(SYS_MPROTECT, addr, size, flags.bits())
+}
+
+/// Sleep for the time specified in `req`
+pub fn nanosleep(req: &TimeSpec, rem: &mut TimeSpec) -> Result<usize> {
+ unsafe { syscall2(SYS_NANOSLEEP, req as *const TimeSpec as usize,
+ rem as *mut TimeSpec as usize) }
+}
+
+/// Open a file
+pub fn open<T: AsRef<str>>(path: T, flags: usize) -> Result<usize> {
+ unsafe { syscall3(SYS_OPEN, path.as_ref().as_ptr() as usize, path.as_ref().len(), flags) }
+}
+
+/// Allocate frames, linearly in physical memory.
+///
+/// # Errors
+///
+/// * `EPERM` - `uid != 0`
+/// * `ENOMEM` - the system has run out of available memory
+pub unsafe fn physalloc(size: usize) -> Result<usize> {
+ syscall1(SYS_PHYSALLOC, size)
+}
+
+/// Allocate frames, linearly in physical memory, with an extra set of flags. If the flags contain
+/// [`PARTIAL_ALLOC`], this will result in `physalloc3` with `min = 1`.
+///
+/// Refer to the simpler [`physalloc`] and the more complex [`physalloc3`], that this convenience
+/// function is based on.
+///
+/// # Errors
+///
+/// * `EPERM` - `uid != 0`
+/// * `ENOMEM` - the system has run out of available memory
+pub unsafe fn physalloc2(size: usize, flags: usize) -> Result<usize> {
+ let mut ret = 1usize;
+ physalloc3(size, flags, &mut ret)
+}
+
+/// Allocate frames, linearly in physical memory, with an extra set of flags. If the flags contain
+/// [`PARTIAL_ALLOC`], the `min` parameter specifies the number of frames that have to be allocated
+/// for this operation to succeed. The return value is the offset of the first frame, and `min` is
+/// overwritten with the number of frames actually allocated.
+///
+/// Refer to the simpler [`physalloc`] and the simpler library function [`physalloc2`].
+///
+/// # Errors
+///
+/// * `EPERM` - `uid != 0`
+/// * `ENOMEM` - the system has run out of available memory
+/// * `EINVAL` - `min = 0`
+pub unsafe fn physalloc3(size: usize, flags: usize, min: &mut usize) -> Result<usize> {
+ syscall3(SYS_PHYSALLOC3, size, flags, min as *mut usize as usize)
+}
+
+/// Free physically allocated pages
+///
+/// # Errors
+///
+/// * `EPERM` - `uid != 0`
+pub unsafe fn physfree(physical_address: usize, size: usize) -> Result<usize> {
+ syscall2(SYS_PHYSFREE, physical_address, size)
+}
+
+/// Map physical memory to virtual memory
+///
+/// # Errors
+///
+/// * `EPERM` - `uid != 0`
+pub unsafe fn physmap(physical_address: usize, size: usize, flags: PhysmapFlags) -> Result<usize> {
+ syscall3(SYS_PHYSMAP, physical_address, size, flags.bits())
+}
+
+/// Unmap previously mapped physical memory
+///
+/// # Errors
+///
+/// * `EPERM` - `uid != 0`
+/// * `EFAULT` - `virtual_address` has not been mapped
+pub unsafe fn physunmap(virtual_address: usize) -> Result<usize> {
+ syscall1(SYS_PHYSUNMAP, virtual_address)
+}
+
+/// Create a pair of file descriptors referencing the read and write ends of a pipe
+pub fn pipe2(fds: &mut [usize; 2], flags: usize) -> Result<usize> {
+ unsafe { syscall2(SYS_PIPE2, fds.as_ptr() as usize, flags) }
+}
+
+/// Read from a file descriptor into a buffer
+pub fn read(fd: usize, buf: &mut [u8]) -> Result<usize> {
+ unsafe { syscall3(SYS_READ, fd, buf.as_mut_ptr() as usize, buf.len()) }
+}
+
+/// Remove a directory
+pub fn rmdir<T: AsRef<str>>(path: T) -> Result<usize> {
+ unsafe { syscall2(SYS_RMDIR, path.as_ref().as_ptr() as usize, path.as_ref().len()) }
+}
+
+/// Set the process group ID
+pub fn setpgid(pid: usize, pgid: usize) -> Result<usize> {
+ unsafe { syscall2(SYS_SETPGID, pid, pgid) }
+}
+
+/// Set the current process group IDs
+pub fn setregid(rgid: usize, egid: usize) -> Result<usize> {
+ unsafe { syscall2(SYS_SETREGID, rgid, egid) }
+}
+
+/// Make a new scheme namespace
+pub fn setrens(rns: usize, ens: usize) -> Result<usize> {
+ unsafe { syscall2(SYS_SETRENS, rns, ens) }
+}
+
+/// Set the current process user IDs
+pub fn setreuid(ruid: usize, euid: usize) -> Result<usize> {
+ unsafe { syscall2(SYS_SETREUID, ruid, euid) }
+}
+
+/// Set up a signal handler
+pub fn sigaction(sig: usize, act: Option<&SigAction>, oldact: Option<&mut SigAction>) -> Result<usize> {
+ unsafe { syscall4(SYS_SIGACTION, sig,
+ act.map(|x| x as *const _).unwrap_or_else(ptr::null) as usize,
+ oldact.map(|x| x as *mut _).unwrap_or_else(ptr::null_mut) as usize,
+ restorer as usize) }
+}
+
+/// Get and/or set signal masks
+pub fn sigprocmask(how: usize, set: Option<&[u64; 2]>, oldset: Option<&mut [u64; 2]>) -> Result<usize> {
+ unsafe { syscall3(SYS_SIGPROCMASK, how,
+ set.map(|x| x as *const _).unwrap_or_else(ptr::null) as usize,
+ oldset.map(|x| x as *mut _).unwrap_or_else(ptr::null_mut) as usize) }
+}
+
+// Return from signal handler
+pub fn sigreturn() -> Result<usize> {
+ unsafe { syscall0(SYS_SIGRETURN) }
+}
+
+/// Set the file mode creation mask
+pub fn umask(mask: usize) -> Result<usize> {
+ unsafe { syscall1(SYS_UMASK, mask) }
+}
+
+/// Remove a file
+pub fn unlink<T: AsRef<str>>(path: T) -> Result<usize> {
+ unsafe { syscall2(SYS_UNLINK, path.as_ref().as_ptr() as usize, path.as_ref().len()) }
+}
+
+/// Convert a virtual address to a physical one
+///
+/// # Errors
+///
+/// * `EPERM` - `uid != 0`
+pub unsafe fn virttophys(virtual_address: usize) -> Result<usize> {
+ syscall1(SYS_VIRTTOPHYS, virtual_address)
+}
+
+/// Check if a child process has exited or received a signal
+pub fn waitpid(pid: usize, status: &mut usize, options: WaitFlags) -> Result<usize> {
+ unsafe { syscall3(SYS_WAITPID, pid, status as *mut usize as usize, options.bits()) }
+}
+
+/// Write a buffer to a file descriptor
+///
+/// The kernel will attempt to write the bytes in `buf` to the file descriptor `fd`, returning
+/// either an `Err`, explained below, or `Ok(count)` where `count` is the number of bytes which
+/// were written.
+///
+/// # Errors
+///
+/// * `EAGAIN` - the file descriptor was opened with `O_NONBLOCK` and writing would block
+/// * `EBADF` - the file descriptor is not valid or is not open for writing
+/// * `EFAULT` - `buf` does not point to the process's addressible memory
+/// * `EIO` - an I/O error occurred
+/// * `ENOSPC` - the device containing the file descriptor has no room for data
+/// * `EPIPE` - the file descriptor refers to a pipe or socket whose reading end is closed
+pub fn write(fd: usize, buf: &[u8]) -> Result<usize> {
+ unsafe { syscall3(SYS_WRITE, fd, buf.as_ptr() as usize, buf.len()) }
+}
+
+/// Yield the process's time slice to the kernel
+///
+/// This function will return Ok(0) on success
+pub fn sched_yield() -> Result<usize> {
+ unsafe { syscall0(SYS_YIELD) }
+}
diff --git a/vendor/redox_syscall-0.3.5/src/data.rs b/vendor/redox_syscall-0.3.5/src/data.rs
new file mode 100644
index 000000000..45d2dd862
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/data.rs
@@ -0,0 +1,297 @@
+use core::ops::{Deref, DerefMut};
+use core::{mem, slice};
+use crate::flag::{EventFlags, MapFlags, PtraceFlags, SigActionFlags};
+
+#[derive(Copy, Clone, Debug, Default)]
+#[repr(C)]
+pub struct Event {
+ pub id: usize,
+ pub flags: EventFlags,
+ pub data: usize
+}
+
+impl Deref for Event {
+ type Target = [u8];
+ fn deref(&self) -> &[u8] {
+ unsafe {
+ slice::from_raw_parts(self as *const Event as *const u8, mem::size_of::<Event>())
+ }
+ }
+}
+
+impl DerefMut for Event {
+ fn deref_mut(&mut self) -> &mut [u8] {
+ unsafe {
+ slice::from_raw_parts_mut(self as *mut Event as *mut u8, mem::size_of::<Event>())
+ }
+ }
+}
+
+#[derive(Copy, Clone, Debug, Default)]
+#[repr(C)]
+pub struct ITimerSpec {
+ pub it_interval: TimeSpec,
+ pub it_value: TimeSpec,
+}
+
+impl Deref for ITimerSpec {
+ type Target = [u8];
+ fn deref(&self) -> &[u8] {
+ unsafe {
+ slice::from_raw_parts(self as *const ITimerSpec as *const u8,
+ mem::size_of::<ITimerSpec>())
+ }
+ }
+}
+
+impl DerefMut for ITimerSpec {
+ fn deref_mut(&mut self) -> &mut [u8] {
+ unsafe {
+ slice::from_raw_parts_mut(self as *mut ITimerSpec as *mut u8,
+ mem::size_of::<ITimerSpec>())
+ }
+ }
+}
+
+#[derive(Copy, Clone, Debug, Default)]
+#[repr(C)]
+pub struct OldMap {
+ pub offset: usize,
+ pub size: usize,
+ pub flags: MapFlags,
+}
+
+impl Deref for OldMap {
+ type Target = [u8];
+ fn deref(&self) -> &[u8] {
+ unsafe {
+ slice::from_raw_parts(self as *const OldMap as *const u8, mem::size_of::<OldMap>())
+ }
+ }
+}
+
+impl DerefMut for OldMap {
+ fn deref_mut(&mut self) -> &mut [u8] {
+ unsafe {
+ slice::from_raw_parts_mut(self as *mut OldMap as *mut u8, mem::size_of::<OldMap>())
+ }
+ }
+}
+#[derive(Copy, Clone, Debug, Default)]
+#[repr(C)]
+pub struct Map {
+ /// The offset inside the file that is being mapped.
+ pub offset: usize,
+
+ /// The size of the memory map.
+ pub size: usize,
+
+ /// Contains both prot and map flags.
+ pub flags: MapFlags,
+
+ /// Functions as a hint to where in the virtual address space of the running process, to place
+ /// the memory map. If [`MapFlags::MAP_FIXED`] is set, then this address must be the address to
+ /// map to.
+ pub address: usize,
+}
+
+impl Deref for Map {
+ type Target = [u8];
+ fn deref(&self) -> &[u8] {
+ unsafe {
+ slice::from_raw_parts(self as *const Map as *const u8, mem::size_of::<Map>())
+ }
+ }
+}
+
+impl DerefMut for Map {
+ fn deref_mut(&mut self) -> &mut [u8] {
+ unsafe {
+ slice::from_raw_parts_mut(self as *mut Map as *mut u8, mem::size_of::<Map>())
+ }
+ }
+}
+
+#[derive(Copy, Clone, Debug, Default)]
+#[repr(C)]
+pub struct Packet {
+ pub id: u64,
+ pub pid: usize,
+ pub uid: u32,
+ pub gid: u32,
+ pub a: usize,
+ pub b: usize,
+ pub c: usize,
+ pub d: usize
+}
+
+impl Deref for Packet {
+ type Target = [u8];
+ fn deref(&self) -> &[u8] {
+ unsafe {
+ slice::from_raw_parts(self as *const Packet as *const u8, mem::size_of::<Packet>())
+ }
+ }
+}
+
+impl DerefMut for Packet {
+ fn deref_mut(&mut self) -> &mut [u8] {
+ unsafe {
+ slice::from_raw_parts_mut(self as *mut Packet as *mut u8, mem::size_of::<Packet>())
+ }
+ }
+}
+
+#[derive(Copy, Clone, Debug, Default, PartialEq)]
+#[repr(C)]
+pub struct SigAction {
+ pub sa_handler: Option<extern "C" fn(usize)>,
+ pub sa_mask: [u64; 2],
+ pub sa_flags: SigActionFlags,
+}
+
+#[allow(dead_code)]
+unsafe fn _assert_size_of_function_is_sane() {
+ // Transmuting will complain *at compile time* if sizes differ.
+ // Rust forbids a fn-pointer from being 0 so to allow SIG_DFL to
+ // exist, we use Option<extern "C" fn(usize)> which will mean 0
+ // becomes None
+ let _ = mem::transmute::<Option<extern "C" fn(usize)>, usize>(None);
+}
+
+#[derive(Copy, Clone, Debug, Default, PartialEq)]
+#[repr(C)]
+pub struct Stat {
+ pub st_dev: u64,
+ pub st_ino: u64,
+ pub st_mode: u16,
+ pub st_nlink: u32,
+ pub st_uid: u32,
+ pub st_gid: u32,
+ pub st_size: u64,
+ pub st_blksize: u32,
+ pub st_blocks: u64,
+ pub st_mtime: u64,
+ pub st_mtime_nsec: u32,
+ pub st_atime: u64,
+ pub st_atime_nsec: u32,
+ pub st_ctime: u64,
+ pub st_ctime_nsec: u32,
+}
+
+impl Deref for Stat {
+ type Target = [u8];
+ fn deref(&self) -> &[u8] {
+ unsafe {
+ slice::from_raw_parts(self as *const Stat as *const u8,
+ mem::size_of::<Stat>())
+ }
+ }
+}
+
+impl DerefMut for Stat {
+ fn deref_mut(&mut self) -> &mut [u8] {
+ unsafe {
+ slice::from_raw_parts_mut(self as *mut Stat as *mut u8,
+ mem::size_of::<Stat>())
+ }
+ }
+}
+
+#[derive(Copy, Clone, Debug, Default, PartialEq)]
+#[repr(C)]
+pub struct StatVfs {
+ pub f_bsize: u32,
+ pub f_blocks: u64,
+ pub f_bfree: u64,
+ pub f_bavail: u64,
+}
+
+impl Deref for StatVfs {
+ type Target = [u8];
+ fn deref(&self) -> &[u8] {
+ unsafe {
+ slice::from_raw_parts(self as *const StatVfs as *const u8,
+ mem::size_of::<StatVfs>())
+ }
+ }
+}
+
+impl DerefMut for StatVfs {
+ fn deref_mut(&mut self) -> &mut [u8] {
+ unsafe {
+ slice::from_raw_parts_mut(self as *mut StatVfs as *mut u8,
+ mem::size_of::<StatVfs>())
+ }
+ }
+}
+
+#[derive(Copy, Clone, Debug, Default, PartialEq)]
+#[repr(C)]
+pub struct TimeSpec {
+ pub tv_sec: i64,
+ pub tv_nsec: i32,
+}
+
+impl Deref for TimeSpec {
+ type Target = [u8];
+ fn deref(&self) -> &[u8] {
+ unsafe {
+ slice::from_raw_parts(self as *const TimeSpec as *const u8,
+ mem::size_of::<TimeSpec>())
+ }
+ }
+}
+
+impl DerefMut for TimeSpec {
+ fn deref_mut(&mut self) -> &mut [u8] {
+ unsafe {
+ slice::from_raw_parts_mut(self as *mut TimeSpec as *mut u8,
+ mem::size_of::<TimeSpec>())
+ }
+ }
+}
+
+#[derive(Clone, Copy, Debug, Default)]
+#[repr(C)]
+pub struct PtraceEvent {
+ pub cause: PtraceFlags,
+ pub a: usize,
+ pub b: usize,
+ pub c: usize,
+ pub d: usize,
+ pub e: usize,
+ pub f: usize
+}
+
+impl Deref for PtraceEvent {
+ type Target = [u8];
+ fn deref(&self) -> &[u8] {
+ unsafe {
+ slice::from_raw_parts(self as *const PtraceEvent as *const u8, mem::size_of::<PtraceEvent>())
+ }
+ }
+}
+
+impl DerefMut for PtraceEvent {
+ fn deref_mut(&mut self) -> &mut [u8] {
+ unsafe {
+ slice::from_raw_parts_mut(self as *mut PtraceEvent as *mut u8, mem::size_of::<PtraceEvent>())
+ }
+ }
+}
+
+#[macro_export]
+macro_rules! ptrace_event {
+ ($cause:expr $(, $a:expr $(, $b:expr $(, $c:expr)?)?)?) => {
+ $crate::data::PtraceEvent {
+ cause: $cause,
+ $(a: $a,
+ $(b: $b,
+ $(c: $c,)?
+ )?
+ )?
+ ..Default::default()
+ }
+ }
+}
diff --git a/vendor/redox_syscall-0.3.5/src/error.rs b/vendor/redox_syscall-0.3.5/src/error.rs
new file mode 100644
index 000000000..9a4b0b5ad
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/error.rs
@@ -0,0 +1,311 @@
+use core::{fmt, result};
+
+#[derive(Eq, PartialEq)]
+pub struct Error {
+ pub errno: i32,
+}
+
+pub type Result<T, E = Error> = result::Result<T, E>;
+
+impl Error {
+ pub fn new(errno: i32) -> Error {
+ Error { errno: errno }
+ }
+
+ pub fn mux(result: Result<usize>) -> usize {
+ match result {
+ Ok(value) => value,
+ Err(error) => -error.errno as usize,
+ }
+ }
+
+ pub fn demux(value: usize) -> Result<usize> {
+ let errno = -(value as i32);
+ if errno >= 1 && errno < STR_ERROR.len() as i32 {
+ Err(Error::new(errno))
+ } else {
+ Ok(value)
+ }
+ }
+
+ pub fn text(&self) -> &'static str {
+ STR_ERROR.get(self.errno as usize).map(|&x| x).unwrap_or("Unknown Error")
+ }
+}
+
+impl fmt::Debug for Error {
+ fn fmt(&self, f: &mut fmt::Formatter) -> result::Result<(), fmt::Error> {
+ f.write_str(self.text())
+ }
+}
+
+impl fmt::Display for Error {
+ fn fmt(&self, f: &mut fmt::Formatter) -> result::Result<(), fmt::Error> {
+ f.write_str(self.text())
+ }
+}
+
+pub const EPERM: i32 = 1; /* Operation not permitted */
+pub const ENOENT: i32 = 2; /* No such file or directory */
+pub const ESRCH: i32 = 3; /* No such process */
+pub const EINTR: i32 = 4; /* Interrupted system call */
+pub const EIO: i32 = 5; /* I/O error */
+pub const ENXIO: i32 = 6; /* No such device or address */
+pub const E2BIG: i32 = 7; /* Argument list too long */
+pub const ENOEXEC: i32 = 8; /* Exec format error */
+pub const EBADF: i32 = 9; /* Bad file number */
+pub const ECHILD: i32 = 10; /* No child processes */
+pub const EAGAIN: i32 = 11; /* Try again */
+pub const ENOMEM: i32 = 12; /* Out of memory */
+pub const EACCES: i32 = 13; /* Permission denied */
+pub const EFAULT: i32 = 14; /* Bad address */
+pub const ENOTBLK: i32 = 15; /* Block device required */
+pub const EBUSY: i32 = 16; /* Device or resource busy */
+pub const EEXIST: i32 = 17; /* File exists */
+pub const EXDEV: i32 = 18; /* Cross-device link */
+pub const ENODEV: i32 = 19; /* No such device */
+pub const ENOTDIR: i32 = 20; /* Not a directory */
+pub const EISDIR: i32 = 21; /* Is a directory */
+pub const EINVAL: i32 = 22; /* Invalid argument */
+pub const ENFILE: i32 = 23; /* File table overflow */
+pub const EMFILE: i32 = 24; /* Too many open files */
+pub const ENOTTY: i32 = 25; /* Not a typewriter */
+pub const ETXTBSY: i32 = 26; /* Text file busy */
+pub const EFBIG: i32 = 27; /* File too large */
+pub const ENOSPC: i32 = 28; /* No space left on device */
+pub const ESPIPE: i32 = 29; /* Illegal seek */
+pub const EROFS: i32 = 30; /* Read-only file system */
+pub const EMLINK: i32 = 31; /* Too many links */
+pub const EPIPE: i32 = 32; /* Broken pipe */
+pub const EDOM: i32 = 33; /* Math argument out of domain of func */
+pub const ERANGE: i32 = 34; /* Math result not representable */
+pub const EDEADLK: i32 = 35; /* Resource deadlock would occur */
+pub const ENAMETOOLONG: i32 = 36; /* File name too long */
+pub const ENOLCK: i32 = 37; /* No record locks available */
+pub const ENOSYS: i32 = 38; /* Function not implemented */
+pub const ENOTEMPTY: i32 = 39; /* Directory not empty */
+pub const ELOOP: i32 = 40; /* Too many symbolic links encountered */
+pub const EWOULDBLOCK: i32 = 41; /* Operation would block */
+pub const ENOMSG: i32 = 42; /* No message of desired type */
+pub const EIDRM: i32 = 43; /* Identifier removed */
+pub const ECHRNG: i32 = 44; /* Channel number out of range */
+pub const EL2NSYNC: i32 = 45; /* Level 2 not synchronized */
+pub const EL3HLT: i32 = 46; /* Level 3 halted */
+pub const EL3RST: i32 = 47; /* Level 3 reset */
+pub const ELNRNG: i32 = 48; /* Link number out of range */
+pub const EUNATCH: i32 = 49; /* Protocol driver not attached */
+pub const ENOCSI: i32 = 50; /* No CSI structure available */
+pub const EL2HLT: i32 = 51; /* Level 2 halted */
+pub const EBADE: i32 = 52; /* Invalid exchange */
+pub const EBADR: i32 = 53; /* Invalid request descriptor */
+pub const EXFULL: i32 = 54; /* Exchange full */
+pub const ENOANO: i32 = 55; /* No anode */
+pub const EBADRQC: i32 = 56; /* Invalid request code */
+pub const EBADSLT: i32 = 57; /* Invalid slot */
+pub const EDEADLOCK: i32 = 58; /* Resource deadlock would occur */
+pub const EBFONT: i32 = 59; /* Bad font file format */
+pub const ENOSTR: i32 = 60; /* Device not a stream */
+pub const ENODATA: i32 = 61; /* No data available */
+pub const ETIME: i32 = 62; /* Timer expired */
+pub const ENOSR: i32 = 63; /* Out of streams resources */
+pub const ENONET: i32 = 64; /* Machine is not on the network */
+pub const ENOPKG: i32 = 65; /* Package not installed */
+pub const EREMOTE: i32 = 66; /* Object is remote */
+pub const ENOLINK: i32 = 67; /* Link has been severed */
+pub const EADV: i32 = 68; /* Advertise error */
+pub const ESRMNT: i32 = 69; /* Srmount error */
+pub const ECOMM: i32 = 70; /* Communication error on send */
+pub const EPROTO: i32 = 71; /* Protocol error */
+pub const EMULTIHOP: i32 = 72; /* Multihop attempted */
+pub const EDOTDOT: i32 = 73; /* RFS specific error */
+pub const EBADMSG: i32 = 74; /* Not a data message */
+pub const EOVERFLOW: i32 = 75; /* Value too large for defined data type */
+pub const ENOTUNIQ: i32 = 76; /* Name not unique on network */
+pub const EBADFD: i32 = 77; /* File descriptor in bad state */
+pub const EREMCHG: i32 = 78; /* Remote address changed */
+pub const ELIBACC: i32 = 79; /* Can not access a needed shared library */
+pub const ELIBBAD: i32 = 80; /* Accessing a corrupted shared library */
+pub const ELIBSCN: i32 = 81; /* .lib section in a.out corrupted */
+pub const ELIBMAX: i32 = 82; /* Attempting to link in too many shared libraries */
+pub const ELIBEXEC: i32 = 83; /* Cannot exec a shared library directly */
+pub const EILSEQ: i32 = 84; /* Illegal byte sequence */
+pub const ERESTART: i32 = 85; /* Interrupted system call should be restarted */
+pub const ESTRPIPE: i32 = 86; /* Streams pipe error */
+pub const EUSERS: i32 = 87; /* Too many users */
+pub const ENOTSOCK: i32 = 88; /* Socket operation on non-socket */
+pub const EDESTADDRREQ: i32 = 89; /* Destination address required */
+pub const EMSGSIZE: i32 = 90; /* Message too long */
+pub const EPROTOTYPE: i32 = 91; /* Protocol wrong type for socket */
+pub const ENOPROTOOPT: i32 = 92; /* Protocol not available */
+pub const EPROTONOSUPPORT: i32 = 93; /* Protocol not supported */
+pub const ESOCKTNOSUPPORT: i32 = 94; /* Socket type not supported */
+pub const EOPNOTSUPP: i32 = 95; /* Operation not supported on transport endpoint */
+pub const EPFNOSUPPORT: i32 = 96; /* Protocol family not supported */
+pub const EAFNOSUPPORT: i32 = 97; /* Address family not supported by protocol */
+pub const EADDRINUSE: i32 = 98; /* Address already in use */
+pub const EADDRNOTAVAIL: i32 = 99; /* Cannot assign requested address */
+pub const ENETDOWN: i32 = 100; /* Network is down */
+pub const ENETUNREACH: i32 = 101; /* Network is unreachable */
+pub const ENETRESET: i32 = 102; /* Network dropped connection because of reset */
+pub const ECONNABORTED: i32 = 103; /* Software caused connection abort */
+pub const ECONNRESET: i32 = 104; /* Connection reset by peer */
+pub const ENOBUFS: i32 = 105; /* No buffer space available */
+pub const EISCONN: i32 = 106; /* Transport endpoint is already connected */
+pub const ENOTCONN: i32 = 107; /* Transport endpoint is not connected */
+pub const ESHUTDOWN: i32 = 108; /* Cannot send after transport endpoint shutdown */
+pub const ETOOMANYREFS: i32 = 109; /* Too many references: cannot splice */
+pub const ETIMEDOUT: i32 = 110; /* Connection timed out */
+pub const ECONNREFUSED: i32 = 111; /* Connection refused */
+pub const EHOSTDOWN: i32 = 112; /* Host is down */
+pub const EHOSTUNREACH: i32 = 113; /* No route to host */
+pub const EALREADY: i32 = 114; /* Operation already in progress */
+pub const EINPROGRESS: i32 = 115; /* Operation now in progress */
+pub const ESTALE: i32 = 116; /* Stale NFS file handle */
+pub const EUCLEAN: i32 = 117; /* Structure needs cleaning */
+pub const ENOTNAM: i32 = 118; /* Not a XENIX named type file */
+pub const ENAVAIL: i32 = 119; /* No XENIX semaphores available */
+pub const EISNAM: i32 = 120; /* Is a named type file */
+pub const EREMOTEIO: i32 = 121; /* Remote I/O error */
+pub const EDQUOT: i32 = 122; /* Quota exceeded */
+pub const ENOMEDIUM: i32 = 123; /* No medium found */
+pub const EMEDIUMTYPE: i32 = 124; /* Wrong medium type */
+pub const ECANCELED: i32 = 125; /* Operation Canceled */
+pub const ENOKEY: i32 = 126; /* Required key not available */
+pub const EKEYEXPIRED: i32 = 127; /* Key has expired */
+pub const EKEYREVOKED: i32 = 128; /* Key has been revoked */
+pub const EKEYREJECTED: i32 = 129; /* Key was rejected by service */
+pub const EOWNERDEAD: i32 = 130; /* Owner died */
+pub const ENOTRECOVERABLE: i32 = 131; /* State not recoverable */
+
+pub static STR_ERROR: [&'static str; 132] = ["Success",
+ "Operation not permitted",
+ "No such file or directory",
+ "No such process",
+ "Interrupted system call",
+ "I/O error",
+ "No such device or address",
+ "Argument list too long",
+ "Exec format error",
+ "Bad file number",
+ "No child processes",
+ "Try again",
+ "Out of memory",
+ "Permission denied",
+ "Bad address",
+ "Block device required",
+ "Device or resource busy",
+ "File exists",
+ "Cross-device link",
+ "No such device",
+ "Not a directory",
+ "Is a directory",
+ "Invalid argument",
+ "File table overflow",
+ "Too many open files",
+ "Not a typewriter",
+ "Text file busy",
+ "File too large",
+ "No space left on device",
+ "Illegal seek",
+ "Read-only file system",
+ "Too many links",
+ "Broken pipe",
+ "Math argument out of domain of func",
+ "Math result not representable",
+ "Resource deadlock would occur",
+ "File name too long",
+ "No record locks available",
+ "Function not implemented",
+ "Directory not empty",
+ "Too many symbolic links encountered",
+ "Operation would block",
+ "No message of desired type",
+ "Identifier removed",
+ "Channel number out of range",
+ "Level 2 not synchronized",
+ "Level 3 halted",
+ "Level 3 reset",
+ "Link number out of range",
+ "Protocol driver not attached",
+ "No CSI structure available",
+ "Level 2 halted",
+ "Invalid exchange",
+ "Invalid request descriptor",
+ "Exchange full",
+ "No anode",
+ "Invalid request code",
+ "Invalid slot",
+ "Resource deadlock would occur",
+ "Bad font file format",
+ "Device not a stream",
+ "No data available",
+ "Timer expired",
+ "Out of streams resources",
+ "Machine is not on the network",
+ "Package not installed",
+ "Object is remote",
+ "Link has been severed",
+ "Advertise error",
+ "Srmount error",
+ "Communication error on send",
+ "Protocol error",
+ "Multihop attempted",
+ "RFS specific error",
+ "Not a data message",
+ "Value too large for defined data type",
+ "Name not unique on network",
+ "File descriptor in bad state",
+ "Remote address changed",
+ "Can not access a needed shared library",
+ "Accessing a corrupted shared library",
+ ".lib section in a.out corrupted",
+ "Attempting to link in too many shared libraries",
+ "Cannot exec a shared library directly",
+ "Illegal byte sequence",
+ "Interrupted system call should be restarted",
+ "Streams pipe error",
+ "Too many users",
+ "Socket operation on non-socket",
+ "Destination address required",
+ "Message too long",
+ "Protocol wrong type for socket",
+ "Protocol not available",
+ "Protocol not supported",
+ "Socket type not supported",
+ "Operation not supported on transport endpoint",
+ "Protocol family not supported",
+ "Address family not supported by protocol",
+ "Address already in use",
+ "Cannot assign requested address",
+ "Network is down",
+ "Network is unreachable",
+ "Network dropped connection because of reset",
+ "Software caused connection abort",
+ "Connection reset by peer",
+ "No buffer space available",
+ "Transport endpoint is already connected",
+ "Transport endpoint is not connected",
+ "Cannot send after transport endpoint shutdown",
+ "Too many references: cannot splice",
+ "Connection timed out",
+ "Connection refused",
+ "Host is down",
+ "No route to host",
+ "Operation already in progress",
+ "Operation now in progress",
+ "Stale NFS file handle",
+ "Structure needs cleaning",
+ "Not a XENIX named type file",
+ "No XENIX semaphores available",
+ "Is a named type file",
+ "Remote I/O error",
+ "Quota exceeded",
+ "No medium found",
+ "Wrong medium type",
+ "Operation Canceled",
+ "Required key not available",
+ "Key has expired",
+ "Key has been revoked",
+ "Key was rejected by service",
+ "Owner died",
+ "State not recoverable"];
diff --git a/vendor/redox_syscall-0.3.5/src/flag.rs b/vendor/redox_syscall-0.3.5/src/flag.rs
new file mode 100644
index 000000000..341104856
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/flag.rs
@@ -0,0 +1,336 @@
+use bitflags::bitflags as inner_bitflags;
+use core::{mem, ops::Deref, slice};
+
+macro_rules! bitflags {
+ (
+ $(#[$outer:meta])*
+ pub struct $BitFlags:ident: $T:ty {
+ $(
+ $(#[$inner:ident $($args:tt)*])*
+ const $Flag:ident = $value:expr;
+ )+
+ }
+ ) => {
+ // First, use the inner bitflags
+ inner_bitflags! {
+ #[derive(Default)]
+ $(#[$outer])*
+ pub struct $BitFlags: $T {
+ $(
+ $(#[$inner $($args)*])*
+ const $Flag = $value;
+ )+
+ }
+ }
+
+ // Secondly, re-export all inner constants
+ // (`pub use self::Struct::*` doesn't work)
+ $(
+ $(#[$inner $($args)*])*
+ pub const $Flag: $BitFlags = $BitFlags::$Flag;
+ )+
+ }
+}
+
+pub const CLOCK_REALTIME: usize = 1;
+pub const CLOCK_MONOTONIC: usize = 4;
+
+bitflags! {
+ pub struct EventFlags: usize {
+ const EVENT_NONE = 0;
+ const EVENT_READ = 1;
+ const EVENT_WRITE = 2;
+ }
+}
+
+pub const F_DUPFD: usize = 0;
+pub const F_GETFD: usize = 1;
+pub const F_SETFD: usize = 2;
+pub const F_GETFL: usize = 3;
+pub const F_SETFL: usize = 4;
+
+pub const FUTEX_WAIT: usize = 0;
+pub const FUTEX_WAKE: usize = 1;
+pub const FUTEX_REQUEUE: usize = 2;
+pub const FUTEX_WAIT64: usize = 3;
+
+bitflags! {
+ pub struct MapFlags: usize {
+ const PROT_NONE = 0x0000_0000;
+ const PROT_EXEC = 0x0001_0000;
+ const PROT_WRITE = 0x0002_0000;
+ const PROT_READ = 0x0004_0000;
+
+ const MAP_SHARED = 0x0001;
+ const MAP_PRIVATE = 0x0002;
+
+ /// Only accepted for mmap2(2).
+ const MAP_FIXED = 0x0004;
+ const MAP_FIXED_NOREPLACE = 0x000C;
+ }
+}
+
+pub const MODE_TYPE: u16 = 0xF000;
+pub const MODE_DIR: u16 = 0x4000;
+pub const MODE_FILE: u16 = 0x8000;
+pub const MODE_SYMLINK: u16 = 0xA000;
+pub const MODE_FIFO: u16 = 0x1000;
+pub const MODE_CHR: u16 = 0x2000;
+
+pub const MODE_PERM: u16 = 0x0FFF;
+pub const MODE_SETUID: u16 = 0o4000;
+pub const MODE_SETGID: u16 = 0o2000;
+
+pub const O_RDONLY: usize = 0x0001_0000;
+pub const O_WRONLY: usize = 0x0002_0000;
+pub const O_RDWR: usize = 0x0003_0000;
+pub const O_NONBLOCK: usize = 0x0004_0000;
+pub const O_APPEND: usize = 0x0008_0000;
+pub const O_SHLOCK: usize = 0x0010_0000;
+pub const O_EXLOCK: usize = 0x0020_0000;
+pub const O_ASYNC: usize = 0x0040_0000;
+pub const O_FSYNC: usize = 0x0080_0000;
+pub const O_CLOEXEC: usize = 0x0100_0000;
+pub const O_CREAT: usize = 0x0200_0000;
+pub const O_TRUNC: usize = 0x0400_0000;
+pub const O_EXCL: usize = 0x0800_0000;
+pub const O_DIRECTORY: usize = 0x1000_0000;
+pub const O_STAT: usize = 0x2000_0000;
+pub const O_SYMLINK: usize = 0x4000_0000;
+pub const O_NOFOLLOW: usize = 0x8000_0000;
+pub const O_ACCMODE: usize = O_RDONLY | O_WRONLY | O_RDWR;
+
+bitflags! {
+ pub struct PhysmapFlags: usize {
+ const PHYSMAP_WRITE = 0x0000_0001;
+ const PHYSMAP_WRITE_COMBINE = 0x0000_0002;
+ const PHYSMAP_NO_CACHE = 0x0000_0004;
+ }
+}
+bitflags! {
+ /// Extra flags for [`physalloc2`] or [`physalloc3`].
+ ///
+ /// [`physalloc2`]: ../call/fn.physalloc2.html
+ /// [`physalloc3`]: ../call/fn.physalloc3.html
+ pub struct PhysallocFlags: usize {
+ /// Only allocate memory within the 32-bit physical memory space. This is necessary for
+ /// some devices may not support 64-bit memory.
+ const SPACE_32 = 0x0000_0001;
+
+ /// The frame that will be allocated, is going to reside anywhere in 64-bit space. This
+ /// flag is redundant for the most part, except when overriding some other default.
+ const SPACE_64 = 0x0000_0002;
+
+ /// Do a "partial allocation", which means that not all of the frames specified in the
+ /// frame count `size` actually have to be allocated. This means that if the allocator was
+ /// unable to find a physical memory range large enough, it can instead return whatever
+ /// range it decides is optimal. Thus, instead of letting one driver get an expensive
+ /// 128MiB physical memory range when the physical memory has become fragmented, and
+ /// failing, it can instead be given a more optimal range. If the device supports
+ /// scatter-gather lists, then the driver only has to allocate more ranges, and the device
+ /// will do vectored I/O.
+ ///
+ /// PARTIAL_ALLOC supports different allocation strategies, refer to
+ /// [`Optimal`], [`GreatestRange`].
+ ///
+ /// [`Optimal`]: ./enum.PartialAllocStrategy.html
+ /// [`GreatestRange`]: ./enum.PartialAllocStrategy.html
+ const PARTIAL_ALLOC = 0x0000_0004;
+ }
+}
+
+/// The bitmask of the partial allocation strategy. Currently four different strategies are
+/// supported. If [`PARTIAL_ALLOC`] is not set, this bitmask is no longer reserved.
+pub const PARTIAL_ALLOC_STRATEGY_MASK: usize = 0x0003_0000;
+
+#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
+#[repr(usize)]
+pub enum PartialAllocStrategy {
+ /// The allocator decides itself the size of the memory range, based on e.g. free memory ranges
+ /// and other processes which require large physical memory chunks.
+ Optimal = 0x0001_0000,
+
+ /// The allocator returns the absolute greatest range it can find.
+ GreatestRange = 0x0002_0000,
+
+ /// The allocator returns the first range that fits the minimum count, without searching extra.
+ Greedy = 0x0003_0000,
+}
+impl Default for PartialAllocStrategy {
+ fn default() -> Self {
+ Self::Optimal
+ }
+}
+
+impl PartialAllocStrategy {
+ pub fn from_raw(raw: usize) -> Option<Self> {
+ match raw {
+ 0x0001_0000 => Some(Self::Optimal),
+ 0x0002_0000 => Some(Self::GreatestRange),
+ 0x0003_0000 => Some(Self::Greedy),
+ _ => None,
+ }
+ }
+}
+
+// The top 48 bits of PTRACE_* are reserved, for now
+
+bitflags! {
+ pub struct PtraceFlags: u64 {
+ /// Stop before a syscall is handled. Send PTRACE_FLAG_IGNORE to not
+ /// handle the syscall.
+ const PTRACE_STOP_PRE_SYSCALL = 0x0000_0000_0000_0001;
+ /// Stop after a syscall is handled.
+ const PTRACE_STOP_POST_SYSCALL = 0x0000_0000_0000_0002;
+ /// Stop after exactly one instruction. TODO: This may not handle
+ /// fexec/signal boundaries. Should it?
+ const PTRACE_STOP_SINGLESTEP = 0x0000_0000_0000_0004;
+ /// Stop before a signal is handled. Send PTRACE_FLAG_IGNORE to not
+ /// handle signal.
+ const PTRACE_STOP_SIGNAL = 0x0000_0000_0000_0008;
+ /// Stop on a software breakpoint, such as the int3 instruction for
+ /// x86_64.
+ const PTRACE_STOP_BREAKPOINT = 0x0000_0000_0000_0010;
+ /// Stop just before exiting for good.
+ const PTRACE_STOP_EXIT = 0x0000_0000_0000_0020;
+
+ const PTRACE_STOP_MASK = 0x0000_0000_0000_00FF;
+
+
+ /// Sent when a child is cloned, giving you the opportunity to trace it.
+ /// If you don't catch this, the child is started as normal.
+ const PTRACE_EVENT_CLONE = 0x0000_0000_0000_0100;
+
+ /// Sent when current-addrspace is changed, allowing the tracer to reopen the memory file.
+ const PTRACE_EVENT_ADDRSPACE_SWITCH = 0x0000_0000_0000_0200;
+
+ const PTRACE_EVENT_MASK = 0x0000_0000_0000_0F00;
+
+ /// Special meaning, depending on the event. Usually, when fired before
+ /// an action, it will skip performing that action.
+ const PTRACE_FLAG_IGNORE = 0x0000_0000_0000_1000;
+
+ const PTRACE_FLAG_MASK = 0x0000_0000_0000_F000;
+ }
+}
+impl Deref for PtraceFlags {
+ type Target = [u8];
+ fn deref(&self) -> &Self::Target {
+ // Same as to_ne_bytes but in-place
+ unsafe {
+ slice::from_raw_parts(
+ &self.bits as *const _ as *const u8,
+ mem::size_of::<u64>()
+ )
+ }
+ }
+}
+
+pub const SEEK_SET: usize = 0;
+pub const SEEK_CUR: usize = 1;
+pub const SEEK_END: usize = 2;
+
+pub const SIGHUP: usize = 1;
+pub const SIGINT: usize = 2;
+pub const SIGQUIT: usize = 3;
+pub const SIGILL: usize = 4;
+pub const SIGTRAP: usize = 5;
+pub const SIGABRT: usize = 6;
+pub const SIGBUS: usize = 7;
+pub const SIGFPE: usize = 8;
+pub const SIGKILL: usize = 9;
+pub const SIGUSR1: usize = 10;
+pub const SIGSEGV: usize = 11;
+pub const SIGUSR2: usize = 12;
+pub const SIGPIPE: usize = 13;
+pub const SIGALRM: usize = 14;
+pub const SIGTERM: usize = 15;
+pub const SIGSTKFLT: usize= 16;
+pub const SIGCHLD: usize = 17;
+pub const SIGCONT: usize = 18;
+pub const SIGSTOP: usize = 19;
+pub const SIGTSTP: usize = 20;
+pub const SIGTTIN: usize = 21;
+pub const SIGTTOU: usize = 22;
+pub const SIGURG: usize = 23;
+pub const SIGXCPU: usize = 24;
+pub const SIGXFSZ: usize = 25;
+pub const SIGVTALRM: usize= 26;
+pub const SIGPROF: usize = 27;
+pub const SIGWINCH: usize = 28;
+pub const SIGIO: usize = 29;
+pub const SIGPWR: usize = 30;
+pub const SIGSYS: usize = 31;
+
+pub const SIG_DFL: usize = 0;
+pub const SIG_IGN: usize = 1;
+
+pub const SIG_BLOCK: usize = 0;
+pub const SIG_UNBLOCK: usize = 1;
+pub const SIG_SETMASK: usize = 2;
+
+bitflags! {
+ pub struct SigActionFlags: usize {
+ const SA_NOCLDSTOP = 0x00000001;
+ const SA_NOCLDWAIT = 0x00000002;
+ const SA_SIGINFO = 0x00000004;
+ const SA_RESTORER = 0x04000000;
+ const SA_ONSTACK = 0x08000000;
+ const SA_RESTART = 0x10000000;
+ const SA_NODEFER = 0x40000000;
+ const SA_RESETHAND = 0x80000000;
+ }
+}
+
+bitflags! {
+ pub struct WaitFlags: usize {
+ const WNOHANG = 0x01;
+ const WUNTRACED = 0x02;
+ const WCONTINUED = 0x08;
+ }
+}
+
+pub const ADDRSPACE_OP_MMAP: usize = 0;
+pub const ADDRSPACE_OP_MUNMAP: usize = 1;
+pub const ADDRSPACE_OP_MPROTECT: usize = 2;
+pub const ADDRSPACE_OP_TRANSFER: usize = 3;
+
+/// True if status indicates the child is stopped.
+pub fn wifstopped(status: usize) -> bool {
+ (status & 0xff) == 0x7f
+}
+
+/// If wifstopped(status), the signal that stopped the child.
+pub fn wstopsig(status: usize) -> usize {
+ (status >> 8) & 0xff
+}
+
+/// True if status indicates the child continued after a stop.
+pub fn wifcontinued(status: usize) -> bool {
+ status == 0xffff
+}
+
+/// True if STATUS indicates termination by a signal.
+pub fn wifsignaled(status: usize) -> bool {
+ ((status & 0x7f) + 1) as i8 >= 2
+}
+
+/// If wifsignaled(status), the terminating signal.
+pub fn wtermsig(status: usize) -> usize {
+ status & 0x7f
+}
+
+/// True if status indicates normal termination.
+pub fn wifexited(status: usize) -> bool {
+ wtermsig(status) == 0
+}
+
+/// If wifexited(status), the exit status.
+pub fn wexitstatus(status: usize) -> usize {
+ (status >> 8) & 0xff
+}
+
+/// True if status indicates a core dump was created.
+pub fn wcoredump(status: usize) -> bool {
+ (status & 0x80) != 0
+}
diff --git a/vendor/redox_syscall-0.3.5/src/io/dma.rs b/vendor/redox_syscall-0.3.5/src/io/dma.rs
new file mode 100644
index 000000000..0613fc9fc
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/io/dma.rs
@@ -0,0 +1,219 @@
+use core::mem::{self, MaybeUninit};
+use core::ops::{Deref, DerefMut};
+use core::{ptr, slice};
+
+use crate::Result;
+use crate::{PartialAllocStrategy, PhysallocFlags, PhysmapFlags};
+use crate::arch::PAGE_SIZE;
+
+/// An RAII guard of a physical memory allocation. Currently all physically allocated memory are
+/// page-aligned and take up at least 4k of space (on x86_64).
+#[derive(Debug)]
+pub struct PhysBox {
+ address: usize,
+ size: usize
+}
+
+const fn round_up(x: usize) -> usize {
+ (x + PAGE_SIZE - 1) / PAGE_SIZE * PAGE_SIZE
+}
+fn assert_aligned(x: usize) {
+ assert_eq!(x % PAGE_SIZE, 0);
+}
+
+#[cfg(target_arch = "aarch64")]
+fn physmap_flags() -> PhysmapFlags {
+ // aarch64 currently must map DMA memory without caching to ensure coherence
+ crate::PHYSMAP_NO_CACHE | crate::PHYSMAP_WRITE
+}
+
+#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
+fn physmap_flags() -> PhysmapFlags {
+ // x86 ensures cache coherence with DMA memory
+ crate::PHYSMAP_WRITE
+}
+
+impl PhysBox {
+ /// Construct a PhysBox from an address and a size. The address must be page-aligned, and the
+ /// size must similarly be a multiple of the page size.
+ ///
+ /// # Safety
+ /// This function is unsafe because when dropping, Self has to a valid allocation.
+ pub unsafe fn from_raw_parts(address: usize, size: usize) -> Self {
+ assert_aligned(address);
+ assert_aligned(size);
+
+ Self {
+ address,
+ size,
+ }
+ }
+
+ /// Retrieve the byte address in physical memory, of this allocation.
+ pub fn address(&self) -> usize {
+ self.address
+ }
+
+ /// Retrieve the size in bytes of the alloc.
+ pub fn size(&self) -> usize {
+ self.size
+ }
+
+ /// Allocate physical memory that must reside in 32-bit space.
+ pub fn new_in_32bit_space(size: usize) -> Result<Self> {
+ Self::new_with_flags(size, PhysallocFlags::SPACE_32)
+ }
+
+ pub fn new_with_flags(size: usize, flags: PhysallocFlags) -> Result<Self> {
+ assert!(!flags.contains(PhysallocFlags::PARTIAL_ALLOC));
+ assert_aligned(size);
+
+ let address = unsafe { crate::physalloc2(size, flags.bits())? };
+ Ok(unsafe { Self::from_raw_parts(address, size) })
+ }
+
+ /// "Partially" allocate physical memory, in the sense that the allocation may be smaller than
+ /// expected, but still with a minimum limit. This is particularly useful when the physical
+ /// memory space is fragmented, and a device supports scatter-gather I/O. In that case, the
+ /// driver can optimistically request e.g. 1 alloc of 1 MiB, with the minimum of 512 KiB. If
+ /// that first allocation only returns half the size, the driver can do another allocation
+ /// and then let the device use both buffers.
+ pub fn new_partial_allocation(size: usize, flags: PhysallocFlags, strategy: Option<PartialAllocStrategy>, mut min: usize) -> Result<Self> {
+ assert_aligned(size);
+ debug_assert!(!(flags.contains(PhysallocFlags::PARTIAL_ALLOC) && strategy.is_none()));
+
+ let address = unsafe { crate::physalloc3(size, flags.bits() | strategy.map_or(0, |s| s as usize), &mut min)? };
+ Ok(unsafe { Self::from_raw_parts(address, size) })
+ }
+
+ pub fn new(size: usize) -> Result<Self> {
+ assert_aligned(size);
+
+ let address = unsafe { crate::physalloc(size)? };
+ Ok(unsafe { Self::from_raw_parts(address, size) })
+ }
+}
+
+impl Drop for PhysBox {
+ fn drop(&mut self) {
+ let _ = unsafe { crate::physfree(self.address, self.size) };
+ }
+}
+
+pub struct Dma<T: ?Sized> {
+ phys: PhysBox,
+ virt: *mut T,
+}
+
+impl<T> Dma<T> {
+ pub fn from_physbox_uninit(phys: PhysBox) -> Result<Dma<MaybeUninit<T>>> {
+ let virt = unsafe { crate::physmap(phys.address, phys.size, physmap_flags())? } as *mut MaybeUninit<T>;
+
+ Ok(Dma {
+ phys,
+ virt,
+ })
+ }
+ pub fn from_physbox_zeroed(phys: PhysBox) -> Result<Dma<MaybeUninit<T>>> {
+ let this = Self::from_physbox_uninit(phys)?;
+ unsafe { ptr::write_bytes(this.virt as *mut MaybeUninit<u8>, 0, this.phys.size) }
+ Ok(this)
+ }
+
+ pub fn from_physbox(phys: PhysBox, value: T) -> Result<Self> {
+ let this = Self::from_physbox_uninit(phys)?;
+
+ Ok(unsafe {
+ ptr::write(this.virt, MaybeUninit::new(value));
+ this.assume_init()
+ })
+ }
+
+ pub fn new(value: T) -> Result<Self> {
+ let phys = PhysBox::new(round_up(mem::size_of::<T>()))?;
+ Self::from_physbox(phys, value)
+ }
+ pub fn zeroed() -> Result<Dma<MaybeUninit<T>>> {
+ let phys = PhysBox::new(round_up(mem::size_of::<T>()))?;
+ Self::from_physbox_zeroed(phys)
+ }
+}
+
+impl<T> Dma<MaybeUninit<T>> {
+ pub unsafe fn assume_init(self) -> Dma<T> {
+ let &Dma { phys: PhysBox { address, size }, virt } = &self;
+ mem::forget(self);
+
+ Dma {
+ phys: PhysBox { address, size },
+ virt: virt as *mut T,
+ }
+ }
+}
+impl<T: ?Sized> Dma<T> {
+ pub fn physical(&self) -> usize {
+ self.phys.address()
+ }
+ pub fn size(&self) -> usize {
+ self.phys.size()
+ }
+ pub fn phys(&self) -> &PhysBox {
+ &self.phys
+ }
+}
+
+impl<T> Dma<[T]> {
+ pub fn from_physbox_uninit_unsized(phys: PhysBox, len: usize) -> Result<Dma<[MaybeUninit<T>]>> {
+ let max_len = phys.size() / mem::size_of::<T>();
+ assert!(len <= max_len);
+
+ Ok(Dma {
+ virt: unsafe { slice::from_raw_parts_mut(crate::physmap(phys.address, phys.size, physmap_flags())? as *mut MaybeUninit<T>, len) } as *mut [MaybeUninit<T>],
+ phys,
+ })
+ }
+ pub fn from_physbox_zeroed_unsized(phys: PhysBox, len: usize) -> Result<Dma<[MaybeUninit<T>]>> {
+ let this = Self::from_physbox_uninit_unsized(phys, len)?;
+ unsafe { ptr::write_bytes(this.virt as *mut MaybeUninit<u8>, 0, this.phys.size()) }
+ Ok(this)
+ }
+ /// Creates a new DMA buffer with a size only known at runtime.
+ /// ## Safety
+ /// * `T` must be properly aligned.
+ /// * `T` must be valid as zeroed (i.e. no NonNull pointers).
+ pub unsafe fn zeroed_unsized(count: usize) -> Result<Self> {
+ let phys = PhysBox::new(round_up(mem::size_of::<T>() * count))?;
+ Ok(Self::from_physbox_zeroed_unsized(phys, count)?.assume_init())
+ }
+}
+impl<T> Dma<[MaybeUninit<T>]> {
+ pub unsafe fn assume_init(self) -> Dma<[T]> {
+ let &Dma { phys: PhysBox { address, size }, virt } = &self;
+ mem::forget(self);
+
+ Dma {
+ phys: PhysBox { address, size },
+ virt: virt as *mut [T],
+ }
+ }
+}
+
+impl<T: ?Sized> Deref for Dma<T> {
+ type Target = T;
+ fn deref(&self) -> &T {
+ unsafe { &*self.virt }
+ }
+}
+
+impl<T: ?Sized> DerefMut for Dma<T> {
+ fn deref_mut(&mut self) -> &mut T {
+ unsafe { &mut *self.virt }
+ }
+}
+
+impl<T: ?Sized> Drop for Dma<T> {
+ fn drop(&mut self) {
+ unsafe { ptr::drop_in_place(self.virt) }
+ let _ = unsafe { crate::funmap(self.virt as *mut u8 as usize, self.phys.size) };
+ }
+}
diff --git a/vendor/redox_syscall-0.3.5/src/io/io.rs b/vendor/redox_syscall-0.3.5/src/io/io.rs
new file mode 100644
index 000000000..2c4acd388
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/io/io.rs
@@ -0,0 +1,71 @@
+use core::cmp::PartialEq;
+use core::ops::{BitAnd, BitOr, Not};
+
+pub trait Io {
+ type Value: Copy + PartialEq + BitAnd<Output = Self::Value> + BitOr<Output = Self::Value> + Not<Output = Self::Value>;
+
+ fn read(&self) -> Self::Value;
+ fn write(&mut self, value: Self::Value);
+
+ #[inline(always)]
+ fn readf(&self, flags: Self::Value) -> bool {
+ (self.read() & flags) as Self::Value == flags
+ }
+
+ #[inline(always)]
+ fn writef(&mut self, flags: Self::Value, value: bool) {
+ let tmp: Self::Value = match value {
+ true => self.read() | flags,
+ false => self.read() & !flags,
+ };
+ self.write(tmp);
+ }
+}
+
+pub struct ReadOnly<I> {
+ inner: I
+}
+
+impl<I> ReadOnly<I> {
+ pub const fn new(inner: I) -> ReadOnly<I> {
+ ReadOnly {
+ inner: inner
+ }
+ }
+}
+
+impl<I: Io> ReadOnly<I> {
+ #[inline(always)]
+ pub fn read(&self) -> I::Value {
+ self.inner.read()
+ }
+
+ #[inline(always)]
+ pub fn readf(&self, flags: I::Value) -> bool {
+ self.inner.readf(flags)
+ }
+}
+
+pub struct WriteOnly<I> {
+ inner: I
+}
+
+impl<I> WriteOnly<I> {
+ pub const fn new(inner: I) -> WriteOnly<I> {
+ WriteOnly {
+ inner: inner
+ }
+ }
+}
+
+impl<I: Io> WriteOnly<I> {
+ #[inline(always)]
+ pub fn write(&mut self, value: I::Value) {
+ self.inner.write(value)
+ }
+
+ #[inline(always)]
+ pub fn writef(&mut self, flags: I::Value, value: bool) {
+ self.inner.writef(flags, value)
+ }
+}
diff --git a/vendor/redox_syscall-0.3.5/src/io/mmio.rs b/vendor/redox_syscall-0.3.5/src/io/mmio.rs
new file mode 100644
index 000000000..3966ab454
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/io/mmio.rs
@@ -0,0 +1,45 @@
+use core::ptr::{read_volatile, write_volatile, addr_of, addr_of_mut};
+use core::mem::MaybeUninit;
+use core::ops::{BitAnd, BitOr, Not};
+
+use super::io::Io;
+
+#[repr(packed)]
+pub struct Mmio<T> {
+ value: MaybeUninit<T>,
+}
+
+impl<T> Mmio<T> {
+ /// Create a new Mmio without initializing
+ #[deprecated = "unsound because it's possible to read even though it's uninitialized"]
+ pub fn new() -> Self {
+ unsafe { Self::uninit() }
+ }
+ pub unsafe fn zeroed() -> Self {
+ Self {
+ value: MaybeUninit::zeroed(),
+ }
+ }
+ pub unsafe fn uninit() -> Self {
+ Self {
+ value: MaybeUninit::uninit(),
+ }
+ }
+ pub const fn from(value: T) -> Self {
+ Self {
+ value: MaybeUninit::new(value),
+ }
+ }
+}
+
+impl<T> Io for Mmio<T> where T: Copy + PartialEq + BitAnd<Output = T> + BitOr<Output = T> + Not<Output = T> {
+ type Value = T;
+
+ fn read(&self) -> T {
+ unsafe { read_volatile(addr_of!(self.value).cast::<T>()) }
+ }
+
+ fn write(&mut self, value: T) {
+ unsafe { write_volatile(addr_of_mut!(self.value).cast::<T>(), value) };
+ }
+}
diff --git a/vendor/redox_syscall-0.3.5/src/io/mod.rs b/vendor/redox_syscall-0.3.5/src/io/mod.rs
new file mode 100644
index 000000000..a225f0650
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/io/mod.rs
@@ -0,0 +1,15 @@
+//! I/O functions
+
+pub use self::dma::*;
+pub use self::io::*;
+pub use self::mmio::*;
+
+#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
+pub use self::pio::*;
+
+mod dma;
+mod io;
+mod mmio;
+
+#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
+mod pio;
diff --git a/vendor/redox_syscall-0.3.5/src/io/pio.rs b/vendor/redox_syscall-0.3.5/src/io/pio.rs
new file mode 100644
index 000000000..8b837bcdf
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/io/pio.rs
@@ -0,0 +1,90 @@
+use core::arch::asm;
+use core::marker::PhantomData;
+
+use super::io::Io;
+
+/// Generic PIO
+#[derive(Copy, Clone)]
+pub struct Pio<T> {
+ port: u16,
+ value: PhantomData<T>,
+}
+
+impl<T> Pio<T> {
+ /// Create a PIO from a given port
+ pub const fn new(port: u16) -> Self {
+ Pio::<T> {
+ port,
+ value: PhantomData,
+ }
+ }
+}
+
+/// Read/Write for byte PIO
+impl Io for Pio<u8> {
+ type Value = u8;
+
+ /// Read
+ #[inline(always)]
+ fn read(&self) -> u8 {
+ let value: u8;
+ unsafe {
+ asm!("in al, dx", in("dx") self.port, out("al") value, options(nostack, nomem, preserves_flags));
+ }
+ value
+ }
+
+ /// Write
+ #[inline(always)]
+ fn write(&mut self, value: u8) {
+ unsafe {
+ asm!("out dx, al", in("dx") self.port, in("al") value, options(nostack, nomem, preserves_flags));
+ }
+ }
+}
+
+/// Read/Write for word PIO
+impl Io for Pio<u16> {
+ type Value = u16;
+
+ /// Read
+ #[inline(always)]
+ fn read(&self) -> u16 {
+ let value: u16;
+ unsafe {
+ asm!("in ax, dx", in("dx") self.port, out("ax") value, options(nostack, nomem, preserves_flags));
+ }
+ value
+ }
+
+ /// Write
+ #[inline(always)]
+ fn write(&mut self, value: u16) {
+ unsafe {
+ asm!("out dx, ax", in("dx") self.port, in("ax") value, options(nostack, nomem, preserves_flags));
+ }
+ }
+}
+
+/// Read/Write for doubleword PIO
+impl Io for Pio<u32> {
+ type Value = u32;
+
+ /// Read
+ #[inline(always)]
+ fn read(&self) -> u32 {
+ let value: u32;
+ unsafe {
+ asm!("in eax, dx", in("dx") self.port, out("eax") value, options(nostack, nomem, preserves_flags));
+ }
+ value
+ }
+
+ /// Write
+ #[inline(always)]
+ fn write(&mut self, value: u32) {
+ unsafe {
+ asm!("out dx, eax", in("dx") self.port, in("eax") value, options(nostack, nomem, preserves_flags));
+ }
+ }
+}
diff --git a/vendor/redox_syscall-0.3.5/src/lib.rs b/vendor/redox_syscall-0.3.5/src/lib.rs
new file mode 100644
index 000000000..3f6d88479
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/lib.rs
@@ -0,0 +1,61 @@
+#![cfg_attr(not(test), no_std)]
+
+#[cfg(test)]
+extern crate core;
+
+pub use self::arch::*;
+pub use self::call::*;
+pub use self::data::*;
+pub use self::error::*;
+pub use self::flag::*;
+pub use self::io::*;
+pub use self::number::*;
+pub use self::scheme::*;
+
+#[cfg(all(any(target_os = "none", target_os = "redox"), target_arch = "arm"))]
+#[path="arch/nonredox.rs"]
+mod arch;
+
+#[cfg(all(any(target_os = "none", target_os = "redox"), target_arch = "aarch64"))]
+#[path="arch/aarch64.rs"]
+mod arch;
+
+#[cfg(all(any(target_os = "none", target_os = "redox"), target_arch = "riscv64"))]
+#[path="arch/riscv64.rs"]
+mod arch;
+
+#[cfg(all(any(target_os = "none", target_os = "redox"), target_arch = "x86"))]
+#[path="arch/x86.rs"]
+mod arch;
+
+#[cfg(all(any(target_os = "none", target_os = "redox"), target_arch = "x86_64"))]
+#[path="arch/x86_64.rs"]
+mod arch;
+
+#[cfg(not(any(target_os = "none", target_os = "redox")))]
+#[path="arch/nonredox.rs"]
+mod arch;
+
+/// Function definitions
+pub mod call;
+
+/// Complex structures that are used for some system calls
+pub mod data;
+
+/// All errors that can be generated by a system call
+pub mod error;
+
+/// Flags used as an argument to many system calls
+pub mod flag;
+
+/// Functions for low level hardware control
+pub mod io;
+
+/// Call numbers used by each system call
+pub mod number;
+
+/// A trait useful for scheme handlers
+pub mod scheme;
+
+#[cfg(test)]
+mod tests;
diff --git a/vendor/redox_syscall-0.3.5/src/number.rs b/vendor/redox_syscall-0.3.5/src/number.rs
new file mode 100644
index 000000000..2b9205a26
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/number.rs
@@ -0,0 +1,73 @@
+pub const SYS_CLASS: usize = 0xF000_0000;
+pub const SYS_CLASS_PATH: usize=0x1000_0000;
+pub const SYS_CLASS_FILE: usize=0x2000_0000;
+
+pub const SYS_ARG: usize = 0x0F00_0000;
+pub const SYS_ARG_SLICE: usize =0x0100_0000;
+pub const SYS_ARG_MSLICE: usize=0x0200_0000;
+pub const SYS_ARG_PATH: usize = 0x0300_0000;
+
+pub const SYS_RET: usize = 0x00F0_0000;
+pub const SYS_RET_FILE: usize = 0x0010_0000;
+
+pub const SYS_LINK: usize = SYS_CLASS_PATH | SYS_ARG_PATH | 9;
+pub const SYS_OPEN: usize = SYS_CLASS_PATH | SYS_RET_FILE | 5;
+pub const SYS_RMDIR: usize = SYS_CLASS_PATH | 84;
+pub const SYS_UNLINK: usize = SYS_CLASS_PATH | 10;
+
+pub const SYS_CLOSE: usize = SYS_CLASS_FILE | 6;
+pub const SYS_DUP: usize = SYS_CLASS_FILE | SYS_RET_FILE | 41;
+pub const SYS_DUP2: usize = SYS_CLASS_FILE | SYS_RET_FILE | 63;
+pub const SYS_READ: usize = SYS_CLASS_FILE | SYS_ARG_MSLICE | 3;
+pub const SYS_WRITE: usize = SYS_CLASS_FILE | SYS_ARG_SLICE | 4;
+pub const SYS_LSEEK: usize = SYS_CLASS_FILE | 19;
+pub const SYS_FCHMOD: usize = SYS_CLASS_FILE | 94;
+pub const SYS_FCHOWN: usize = SYS_CLASS_FILE | 207;
+pub const SYS_FCNTL: usize = SYS_CLASS_FILE | 55;
+pub const SYS_FEVENT: usize = SYS_CLASS_FILE | 927;
+pub const SYS_FMAP_OLD: usize = SYS_CLASS_FILE | SYS_ARG_SLICE | 90;
+pub const SYS_FMAP: usize = SYS_CLASS_FILE | SYS_ARG_SLICE | 900;
+pub const SYS_FUNMAP_OLD: usize = SYS_CLASS_FILE | 91;
+pub const SYS_FUNMAP: usize = SYS_CLASS_FILE | 92;
+pub const SYS_FPATH: usize = SYS_CLASS_FILE | SYS_ARG_MSLICE | 928;
+pub const SYS_FRENAME: usize = SYS_CLASS_FILE | SYS_ARG_PATH | 38;
+pub const SYS_FSTAT: usize = SYS_CLASS_FILE | SYS_ARG_MSLICE | 28;
+pub const SYS_FSTATVFS: usize = SYS_CLASS_FILE | SYS_ARG_MSLICE | 100;
+pub const SYS_FSYNC: usize = SYS_CLASS_FILE | 118;
+pub const SYS_FTRUNCATE: usize = SYS_CLASS_FILE | 93;
+pub const SYS_FUTIMENS: usize = SYS_CLASS_FILE | SYS_ARG_SLICE | 320;
+
+pub const SYS_CLOCK_GETTIME: usize = 265;
+pub const SYS_EXIT: usize = 1;
+pub const SYS_FUTEX: usize = 240;
+pub const SYS_GETEGID: usize = 202;
+pub const SYS_GETENS: usize = 951;
+pub const SYS_GETEUID: usize = 201;
+pub const SYS_GETGID: usize = 200;
+pub const SYS_GETNS: usize = 950;
+pub const SYS_GETPID: usize = 20;
+pub const SYS_GETPGID: usize = 132;
+pub const SYS_GETPPID: usize = 64;
+pub const SYS_GETUID: usize = 199;
+pub const SYS_IOPL: usize = 110;
+pub const SYS_KILL: usize = 37;
+pub const SYS_MPROTECT: usize = 125;
+pub const SYS_MKNS: usize = 984;
+pub const SYS_NANOSLEEP: usize =162;
+pub const SYS_PHYSALLOC: usize =945;
+pub const SYS_PHYSALLOC3: usize=9453;
+pub const SYS_PHYSFREE: usize = 946;
+pub const SYS_PHYSMAP: usize = 947;
+pub const SYS_PHYSUNMAP: usize =948;
+pub const SYS_VIRTTOPHYS: usize=949;
+pub const SYS_PIPE2: usize = 331;
+pub const SYS_SETPGID: usize = 57;
+pub const SYS_SETREGID: usize = 204;
+pub const SYS_SETRENS: usize = 952;
+pub const SYS_SETREUID: usize = 203;
+pub const SYS_SIGACTION: usize =67;
+pub const SYS_SIGPROCMASK:usize=126;
+pub const SYS_SIGRETURN: usize =119;
+pub const SYS_UMASK: usize = 60;
+pub const SYS_WAITPID: usize = 7;
+pub const SYS_YIELD: usize = 158;
diff --git a/vendor/redox_syscall-0.3.5/src/scheme/generate.sh b/vendor/redox_syscall-0.3.5/src/scheme/generate.sh
new file mode 100755
index 000000000..a877cda92
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/scheme/generate.sh
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+
+set -e
+
+echo "Generating SchemeMut from Scheme"
+sed 's/trait Scheme/trait SchemeMut/' scheme.rs \
+| sed 's/\&self/\&mut self/g' \
+> scheme_mut.rs
+
+echo "Generating SchemeBlock from Scheme"
+sed 's/trait Scheme/trait SchemeBlock/' scheme.rs \
+| sed 's/fn handle(\&self, packet: \&mut Packet)/fn handle(\&self, packet: \&Packet) -> Option<usize>/' \
+| sed 's/packet.a = Error::mux(res);/res.transpose().map(Error::mux)/' \
+| sed 's/\.map(|f| f\.bits())/\.map(|f| f.map(|f| f.bits()))/' \
+| sed 's/\.map(|o| o as usize)/.map(|o| o.map(|o| o as usize))/' \
+| sed 's/Ok(0)/Ok(Some(0))/g' \
+| sed 's/Result<\([^>]\+\)>/Result<Option<\1>>/g' \
+> scheme_block.rs
+
+echo "Generating SchemeBlockMut from SchemeBlock"
+sed 's/trait SchemeBlock/trait SchemeBlockMut/' scheme_block.rs \
+| sed 's/\&self/\&mut self/g' \
+> scheme_block_mut.rs
diff --git a/vendor/redox_syscall-0.3.5/src/scheme/mod.rs b/vendor/redox_syscall-0.3.5/src/scheme/mod.rs
new file mode 100644
index 000000000..f65d1e2c0
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/scheme/mod.rs
@@ -0,0 +1,18 @@
+use core::{slice, str};
+
+pub use self::scheme::Scheme;
+pub use self::scheme_mut::SchemeMut;
+pub use self::scheme_block::SchemeBlock;
+pub use self::scheme_block_mut::SchemeBlockMut;
+pub use self::seek::*;
+
+unsafe fn str_from_raw_parts(ptr: *const u8, len: usize) -> Option<&'static str> {
+ let slice = slice::from_raw_parts(ptr, len);
+ str::from_utf8(slice).ok()
+}
+
+mod scheme;
+mod scheme_mut;
+mod scheme_block;
+mod scheme_block_mut;
+mod seek;
diff --git a/vendor/redox_syscall-0.3.5/src/scheme/scheme.rs b/vendor/redox_syscall-0.3.5/src/scheme/scheme.rs
new file mode 100644
index 000000000..6bf36172c
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/scheme/scheme.rs
@@ -0,0 +1,206 @@
+use core::{mem, slice};
+
+use crate::data::*;
+use crate::error::*;
+use crate::flag::*;
+use crate::number::*;
+use crate::scheme::str_from_raw_parts;
+
+pub trait Scheme {
+ fn handle(&self, packet: &mut Packet) {
+ let res = match packet.a {
+ SYS_OPEN => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } {
+ self.open(path, packet.d, packet.uid, packet.gid)
+ } else {
+ Err(Error::new(EINVAL))
+ },
+ SYS_RMDIR => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } {
+ self.rmdir(path, packet.uid, packet.gid)
+ } else {
+ Err(Error::new(EINVAL))
+ },
+ SYS_UNLINK => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } {
+ self.unlink(path, packet.uid, packet.gid)
+ } else {
+ Err(Error::new(EINVAL))
+ },
+
+ SYS_DUP => self.dup(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }),
+ SYS_READ => self.read(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }),
+ SYS_WRITE => self.write(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }),
+ SYS_LSEEK => self.seek(packet.b, packet.c as isize, packet.d).map(|o| o as usize),
+ SYS_FCHMOD => self.fchmod(packet.b, packet.c as u16),
+ SYS_FCHOWN => self.fchown(packet.b, packet.c as u32, packet.d as u32),
+ SYS_FCNTL => self.fcntl(packet.b, packet.c, packet.d),
+ SYS_FEVENT => self.fevent(packet.b, EventFlags::from_bits_truncate(packet.c)).map(|f| f.bits()),
+ SYS_FMAP_OLD => if packet.d >= mem::size_of::<OldMap>() {
+ self.fmap_old(packet.b, unsafe { &*(packet.c as *const OldMap) })
+ } else {
+ Err(Error::new(EFAULT))
+ },
+ SYS_FMAP => if packet.d >= mem::size_of::<Map>() {
+ self.fmap(packet.b, unsafe { &*(packet.c as *const Map) })
+ } else {
+ Err(Error::new(EFAULT))
+ },
+ SYS_FUNMAP_OLD => self.funmap_old(packet.b),
+ SYS_FUNMAP => self.funmap(packet.b, packet.c),
+ SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }),
+ SYS_FRENAME => if let Some(path) = unsafe { str_from_raw_parts(packet.c as *const u8, packet.d) } {
+ self.frename(packet.b, path, packet.uid, packet.gid)
+ } else {
+ Err(Error::new(EINVAL))
+ },
+ SYS_FSTAT => if packet.d >= mem::size_of::<Stat>() {
+ self.fstat(packet.b, unsafe { &mut *(packet.c as *mut Stat) })
+ } else {
+ Err(Error::new(EFAULT))
+ },
+ SYS_FSTATVFS => if packet.d >= mem::size_of::<StatVfs>() {
+ self.fstatvfs(packet.b, unsafe { &mut *(packet.c as *mut StatVfs) })
+ } else {
+ Err(Error::new(EFAULT))
+ },
+ SYS_FSYNC => self.fsync(packet.b),
+ SYS_FTRUNCATE => self.ftruncate(packet.b, packet.c),
+ SYS_FUTIMENS => if packet.d >= mem::size_of::<TimeSpec>() {
+ self.futimens(packet.b, unsafe { slice::from_raw_parts(packet.c as *const TimeSpec, packet.d / mem::size_of::<TimeSpec>()) })
+ } else {
+ Err(Error::new(EFAULT))
+ },
+ SYS_CLOSE => self.close(packet.b),
+ _ => Err(Error::new(ENOSYS))
+ };
+
+ packet.a = Error::mux(res);
+ }
+
+ /* Scheme operations */
+
+ #[allow(unused_variables)]
+ fn open(&self, path: &str, flags: usize, uid: u32, gid: u32) -> Result<usize> {
+ Err(Error::new(ENOENT))
+ }
+
+ #[allow(unused_variables)]
+ fn chmod(&self, path: &str, mode: u16, uid: u32, gid: u32) -> Result<usize> {
+ Err(Error::new(ENOENT))
+ }
+
+ #[allow(unused_variables)]
+ fn rmdir(&self, path: &str, uid: u32, gid: u32) -> Result<usize> {
+ Err(Error::new(ENOENT))
+ }
+
+ #[allow(unused_variables)]
+ fn unlink(&self, path: &str, uid: u32, gid: u32) -> Result<usize> {
+ Err(Error::new(ENOENT))
+ }
+
+ /* Resource operations */
+ #[allow(unused_variables)]
+ fn dup(&self, old_id: usize, buf: &[u8]) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn read(&self, id: usize, buf: &mut [u8]) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn write(&self, id: usize, buf: &[u8]) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn seek(&self, id: usize, pos: isize, whence: usize) -> Result<isize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fchmod(&self, id: usize, mode: u16) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fchown(&self, id: usize, uid: u32, gid: u32) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fcntl(&self, id: usize, cmd: usize, arg: usize) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fevent(&self, id: usize, flags: EventFlags) -> Result<EventFlags> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fmap_old(&self, id: usize, map: &OldMap) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+ #[allow(unused_variables)]
+ fn fmap(&self, id: usize, map: &Map) -> Result<usize> {
+ if map.flags.contains(MapFlags::MAP_FIXED) {
+ return Err(Error::new(EINVAL));
+ }
+ self.fmap_old(id, &OldMap {
+ offset: map.offset,
+ size: map.size,
+ flags: map.flags,
+ })
+ }
+
+ #[allow(unused_variables)]
+ fn funmap_old(&self, address: usize) -> Result<usize> {
+ Ok(0)
+ }
+
+ #[allow(unused_variables)]
+ fn funmap(&self, address: usize, length: usize) -> Result<usize> {
+ Ok(0)
+ }
+
+ #[allow(unused_variables)]
+ fn fpath(&self, id: usize, buf: &mut [u8]) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn frename(&self, id: usize, path: &str, uid: u32, gid: u32) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fstat(&self, id: usize, stat: &mut Stat) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fstatvfs(&self, id: usize, stat: &mut StatVfs) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fsync(&self, id: usize) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn ftruncate(&self, id: usize, len: usize) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn futimens(&self, id: usize, times: &[TimeSpec]) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn close(&self, id: usize) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+}
diff --git a/vendor/redox_syscall-0.3.5/src/scheme/scheme_block.rs b/vendor/redox_syscall-0.3.5/src/scheme/scheme_block.rs
new file mode 100644
index 000000000..3b3de4bc9
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/scheme/scheme_block.rs
@@ -0,0 +1,206 @@
+use core::{mem, slice};
+
+use crate::data::*;
+use crate::error::*;
+use crate::flag::*;
+use crate::number::*;
+use crate::scheme::str_from_raw_parts;
+
+pub trait SchemeBlock {
+ fn handle(&self, packet: &Packet) -> Option<usize> {
+ let res = match packet.a {
+ SYS_OPEN => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } {
+ self.open(path, packet.d, packet.uid, packet.gid)
+ } else {
+ Err(Error::new(EINVAL))
+ },
+ SYS_RMDIR => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } {
+ self.rmdir(path, packet.uid, packet.gid)
+ } else {
+ Err(Error::new(EINVAL))
+ },
+ SYS_UNLINK => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } {
+ self.unlink(path, packet.uid, packet.gid)
+ } else {
+ Err(Error::new(EINVAL))
+ },
+
+ SYS_DUP => self.dup(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }),
+ SYS_READ => self.read(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }),
+ SYS_WRITE => self.write(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }),
+ SYS_LSEEK => self.seek(packet.b, packet.c as isize, packet.d).map(|o| o.map(|o| o as usize)),
+ SYS_FCHMOD => self.fchmod(packet.b, packet.c as u16),
+ SYS_FCHOWN => self.fchown(packet.b, packet.c as u32, packet.d as u32),
+ SYS_FCNTL => self.fcntl(packet.b, packet.c, packet.d),
+ SYS_FEVENT => self.fevent(packet.b, EventFlags::from_bits_truncate(packet.c)).map(|f| f.map(|f| f.bits())),
+ SYS_FMAP_OLD => if packet.d >= mem::size_of::<OldMap>() {
+ self.fmap_old(packet.b, unsafe { &*(packet.c as *const OldMap) })
+ } else {
+ Err(Error::new(EFAULT))
+ },
+ SYS_FMAP => if packet.d >= mem::size_of::<Map>() {
+ self.fmap(packet.b, unsafe { &*(packet.c as *const Map) })
+ } else {
+ Err(Error::new(EFAULT))
+ },
+ SYS_FUNMAP_OLD => self.funmap_old(packet.b),
+ SYS_FUNMAP => self.funmap(packet.b, packet.c),
+ SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }),
+ SYS_FRENAME => if let Some(path) = unsafe { str_from_raw_parts(packet.c as *const u8, packet.d) } {
+ self.frename(packet.b, path, packet.uid, packet.gid)
+ } else {
+ Err(Error::new(EINVAL))
+ },
+ SYS_FSTAT => if packet.d >= mem::size_of::<Stat>() {
+ self.fstat(packet.b, unsafe { &mut *(packet.c as *mut Stat) })
+ } else {
+ Err(Error::new(EFAULT))
+ },
+ SYS_FSTATVFS => if packet.d >= mem::size_of::<StatVfs>() {
+ self.fstatvfs(packet.b, unsafe { &mut *(packet.c as *mut StatVfs) })
+ } else {
+ Err(Error::new(EFAULT))
+ },
+ SYS_FSYNC => self.fsync(packet.b),
+ SYS_FTRUNCATE => self.ftruncate(packet.b, packet.c),
+ SYS_FUTIMENS => if packet.d >= mem::size_of::<TimeSpec>() {
+ self.futimens(packet.b, unsafe { slice::from_raw_parts(packet.c as *const TimeSpec, packet.d / mem::size_of::<TimeSpec>()) })
+ } else {
+ Err(Error::new(EFAULT))
+ },
+ SYS_CLOSE => self.close(packet.b),
+ _ => Err(Error::new(ENOSYS))
+ };
+
+ res.transpose().map(Error::mux)
+ }
+
+ /* Scheme operations */
+
+ #[allow(unused_variables)]
+ fn open(&self, path: &str, flags: usize, uid: u32, gid: u32) -> Result<Option<usize>> {
+ Err(Error::new(ENOENT))
+ }
+
+ #[allow(unused_variables)]
+ fn chmod(&self, path: &str, mode: u16, uid: u32, gid: u32) -> Result<Option<usize>> {
+ Err(Error::new(ENOENT))
+ }
+
+ #[allow(unused_variables)]
+ fn rmdir(&self, path: &str, uid: u32, gid: u32) -> Result<Option<usize>> {
+ Err(Error::new(ENOENT))
+ }
+
+ #[allow(unused_variables)]
+ fn unlink(&self, path: &str, uid: u32, gid: u32) -> Result<Option<usize>> {
+ Err(Error::new(ENOENT))
+ }
+
+ /* Resource operations */
+ #[allow(unused_variables)]
+ fn dup(&self, old_id: usize, buf: &[u8]) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn read(&self, id: usize, buf: &mut [u8]) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn write(&self, id: usize, buf: &[u8]) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn seek(&self, id: usize, pos: isize, whence: usize) -> Result<Option<isize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fchmod(&self, id: usize, mode: u16) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fchown(&self, id: usize, uid: u32, gid: u32) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fcntl(&self, id: usize, cmd: usize, arg: usize) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fevent(&self, id: usize, flags: EventFlags) -> Result<Option<EventFlags>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fmap_old(&self, id: usize, map: &OldMap) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+ #[allow(unused_variables)]
+ fn fmap(&self, id: usize, map: &Map) -> Result<Option<usize>> {
+ if map.flags.contains(MapFlags::MAP_FIXED) {
+ return Err(Error::new(EINVAL));
+ }
+ self.fmap_old(id, &OldMap {
+ offset: map.offset,
+ size: map.size,
+ flags: map.flags,
+ })
+ }
+
+ #[allow(unused_variables)]
+ fn funmap_old(&self, address: usize) -> Result<Option<usize>> {
+ Ok(Some(0))
+ }
+
+ #[allow(unused_variables)]
+ fn funmap(&self, address: usize, length: usize) -> Result<Option<usize>> {
+ Ok(Some(0))
+ }
+
+ #[allow(unused_variables)]
+ fn fpath(&self, id: usize, buf: &mut [u8]) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn frename(&self, id: usize, path: &str, uid: u32, gid: u32) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fstat(&self, id: usize, stat: &mut Stat) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fstatvfs(&self, id: usize, stat: &mut StatVfs) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fsync(&self, id: usize) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn ftruncate(&self, id: usize, len: usize) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn futimens(&self, id: usize, times: &[TimeSpec]) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn close(&self, id: usize) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+}
diff --git a/vendor/redox_syscall-0.3.5/src/scheme/scheme_block_mut.rs b/vendor/redox_syscall-0.3.5/src/scheme/scheme_block_mut.rs
new file mode 100644
index 000000000..1fae3a0e5
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/scheme/scheme_block_mut.rs
@@ -0,0 +1,206 @@
+use core::{mem, slice};
+
+use crate::data::*;
+use crate::error::*;
+use crate::flag::*;
+use crate::number::*;
+use crate::scheme::str_from_raw_parts;
+
+pub trait SchemeBlockMut {
+ fn handle(&mut self, packet: &Packet) -> Option<usize> {
+ let res = match packet.a {
+ SYS_OPEN => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } {
+ self.open(path, packet.d, packet.uid, packet.gid)
+ } else {
+ Err(Error::new(EINVAL))
+ },
+ SYS_RMDIR => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } {
+ self.rmdir(path, packet.uid, packet.gid)
+ } else {
+ Err(Error::new(EINVAL))
+ },
+ SYS_UNLINK => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } {
+ self.unlink(path, packet.uid, packet.gid)
+ } else {
+ Err(Error::new(EINVAL))
+ },
+
+ SYS_DUP => self.dup(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }),
+ SYS_READ => self.read(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }),
+ SYS_WRITE => self.write(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }),
+ SYS_LSEEK => self.seek(packet.b, packet.c as isize, packet.d).map(|o| o.map(|o| o as usize)),
+ SYS_FCHMOD => self.fchmod(packet.b, packet.c as u16),
+ SYS_FCHOWN => self.fchown(packet.b, packet.c as u32, packet.d as u32),
+ SYS_FCNTL => self.fcntl(packet.b, packet.c, packet.d),
+ SYS_FEVENT => self.fevent(packet.b, EventFlags::from_bits_truncate(packet.c)).map(|f| f.map(|f| f.bits())),
+ SYS_FMAP_OLD => if packet.d >= mem::size_of::<OldMap>() {
+ self.fmap_old(packet.b, unsafe { &*(packet.c as *const OldMap) })
+ } else {
+ Err(Error::new(EFAULT))
+ },
+ SYS_FMAP => if packet.d >= mem::size_of::<Map>() {
+ self.fmap(packet.b, unsafe { &*(packet.c as *const Map) })
+ } else {
+ Err(Error::new(EFAULT))
+ },
+ SYS_FUNMAP_OLD => self.funmap_old(packet.b),
+ SYS_FUNMAP => self.funmap(packet.b, packet.c),
+ SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }),
+ SYS_FRENAME => if let Some(path) = unsafe { str_from_raw_parts(packet.c as *const u8, packet.d) } {
+ self.frename(packet.b, path, packet.uid, packet.gid)
+ } else {
+ Err(Error::new(EINVAL))
+ },
+ SYS_FSTAT => if packet.d >= mem::size_of::<Stat>() {
+ self.fstat(packet.b, unsafe { &mut *(packet.c as *mut Stat) })
+ } else {
+ Err(Error::new(EFAULT))
+ },
+ SYS_FSTATVFS => if packet.d >= mem::size_of::<StatVfs>() {
+ self.fstatvfs(packet.b, unsafe { &mut *(packet.c as *mut StatVfs) })
+ } else {
+ Err(Error::new(EFAULT))
+ },
+ SYS_FSYNC => self.fsync(packet.b),
+ SYS_FTRUNCATE => self.ftruncate(packet.b, packet.c),
+ SYS_FUTIMENS => if packet.d >= mem::size_of::<TimeSpec>() {
+ self.futimens(packet.b, unsafe { slice::from_raw_parts(packet.c as *const TimeSpec, packet.d / mem::size_of::<TimeSpec>()) })
+ } else {
+ Err(Error::new(EFAULT))
+ },
+ SYS_CLOSE => self.close(packet.b),
+ _ => Err(Error::new(ENOSYS))
+ };
+
+ res.transpose().map(Error::mux)
+ }
+
+ /* Scheme operations */
+
+ #[allow(unused_variables)]
+ fn open(&mut self, path: &str, flags: usize, uid: u32, gid: u32) -> Result<Option<usize>> {
+ Err(Error::new(ENOENT))
+ }
+
+ #[allow(unused_variables)]
+ fn chmod(&mut self, path: &str, mode: u16, uid: u32, gid: u32) -> Result<Option<usize>> {
+ Err(Error::new(ENOENT))
+ }
+
+ #[allow(unused_variables)]
+ fn rmdir(&mut self, path: &str, uid: u32, gid: u32) -> Result<Option<usize>> {
+ Err(Error::new(ENOENT))
+ }
+
+ #[allow(unused_variables)]
+ fn unlink(&mut self, path: &str, uid: u32, gid: u32) -> Result<Option<usize>> {
+ Err(Error::new(ENOENT))
+ }
+
+ /* Resource operations */
+ #[allow(unused_variables)]
+ fn dup(&mut self, old_id: usize, buf: &[u8]) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn read(&mut self, id: usize, buf: &mut [u8]) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn write(&mut self, id: usize, buf: &[u8]) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn seek(&mut self, id: usize, pos: isize, whence: usize) -> Result<Option<isize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fchmod(&mut self, id: usize, mode: u16) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fchown(&mut self, id: usize, uid: u32, gid: u32) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fcntl(&mut self, id: usize, cmd: usize, arg: usize) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fevent(&mut self, id: usize, flags: EventFlags) -> Result<Option<EventFlags>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fmap_old(&mut self, id: usize, map: &OldMap) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+ #[allow(unused_variables)]
+ fn fmap(&mut self, id: usize, map: &Map) -> Result<Option<usize>> {
+ if map.flags.contains(MapFlags::MAP_FIXED) {
+ return Err(Error::new(EINVAL));
+ }
+ self.fmap_old(id, &OldMap {
+ offset: map.offset,
+ size: map.size,
+ flags: map.flags,
+ })
+ }
+
+ #[allow(unused_variables)]
+ fn funmap_old(&mut self, address: usize) -> Result<Option<usize>> {
+ Ok(Some(0))
+ }
+
+ #[allow(unused_variables)]
+ fn funmap(&mut self, address: usize, length: usize) -> Result<Option<usize>> {
+ Ok(Some(0))
+ }
+
+ #[allow(unused_variables)]
+ fn fpath(&mut self, id: usize, buf: &mut [u8]) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn frename(&mut self, id: usize, path: &str, uid: u32, gid: u32) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fstat(&mut self, id: usize, stat: &mut Stat) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fstatvfs(&mut self, id: usize, stat: &mut StatVfs) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fsync(&mut self, id: usize) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn ftruncate(&mut self, id: usize, len: usize) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn futimens(&mut self, id: usize, times: &[TimeSpec]) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn close(&mut self, id: usize) -> Result<Option<usize>> {
+ Err(Error::new(EBADF))
+ }
+}
diff --git a/vendor/redox_syscall-0.3.5/src/scheme/scheme_mut.rs b/vendor/redox_syscall-0.3.5/src/scheme/scheme_mut.rs
new file mode 100644
index 000000000..b364b62aa
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/scheme/scheme_mut.rs
@@ -0,0 +1,206 @@
+use core::{mem, slice};
+
+use crate::data::*;
+use crate::error::*;
+use crate::flag::*;
+use crate::number::*;
+use crate::scheme::str_from_raw_parts;
+
+pub trait SchemeMut {
+ fn handle(&mut self, packet: &mut Packet) {
+ let res = match packet.a {
+ SYS_OPEN => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } {
+ self.open(path, packet.d, packet.uid, packet.gid)
+ } else {
+ Err(Error::new(EINVAL))
+ },
+ SYS_RMDIR => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } {
+ self.rmdir(path, packet.uid, packet.gid)
+ } else {
+ Err(Error::new(EINVAL))
+ },
+ SYS_UNLINK => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } {
+ self.unlink(path, packet.uid, packet.gid)
+ } else {
+ Err(Error::new(EINVAL))
+ },
+
+ SYS_DUP => self.dup(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }),
+ SYS_READ => self.read(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }),
+ SYS_WRITE => self.write(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }),
+ SYS_LSEEK => self.seek(packet.b, packet.c as isize, packet.d).map(|o| o as usize),
+ SYS_FCHMOD => self.fchmod(packet.b, packet.c as u16),
+ SYS_FCHOWN => self.fchown(packet.b, packet.c as u32, packet.d as u32),
+ SYS_FCNTL => self.fcntl(packet.b, packet.c, packet.d),
+ SYS_FEVENT => self.fevent(packet.b, EventFlags::from_bits_truncate(packet.c)).map(|f| f.bits()),
+ SYS_FMAP_OLD => if packet.d >= mem::size_of::<OldMap>() {
+ self.fmap_old(packet.b, unsafe { &*(packet.c as *const OldMap) })
+ } else {
+ Err(Error::new(EFAULT))
+ },
+ SYS_FMAP => if packet.d >= mem::size_of::<Map>() {
+ self.fmap(packet.b, unsafe { &*(packet.c as *const Map) })
+ } else {
+ Err(Error::new(EFAULT))
+ },
+ SYS_FUNMAP_OLD => self.funmap_old(packet.b),
+ SYS_FUNMAP => self.funmap(packet.b, packet.c),
+ SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }),
+ SYS_FRENAME => if let Some(path) = unsafe { str_from_raw_parts(packet.c as *const u8, packet.d) } {
+ self.frename(packet.b, path, packet.uid, packet.gid)
+ } else {
+ Err(Error::new(EINVAL))
+ },
+ SYS_FSTAT => if packet.d >= mem::size_of::<Stat>() {
+ self.fstat(packet.b, unsafe { &mut *(packet.c as *mut Stat) })
+ } else {
+ Err(Error::new(EFAULT))
+ },
+ SYS_FSTATVFS => if packet.d >= mem::size_of::<StatVfs>() {
+ self.fstatvfs(packet.b, unsafe { &mut *(packet.c as *mut StatVfs) })
+ } else {
+ Err(Error::new(EFAULT))
+ },
+ SYS_FSYNC => self.fsync(packet.b),
+ SYS_FTRUNCATE => self.ftruncate(packet.b, packet.c),
+ SYS_FUTIMENS => if packet.d >= mem::size_of::<TimeSpec>() {
+ self.futimens(packet.b, unsafe { slice::from_raw_parts(packet.c as *const TimeSpec, packet.d / mem::size_of::<TimeSpec>()) })
+ } else {
+ Err(Error::new(EFAULT))
+ },
+ SYS_CLOSE => self.close(packet.b),
+ _ => Err(Error::new(ENOSYS))
+ };
+
+ packet.a = Error::mux(res);
+ }
+
+ /* Scheme operations */
+
+ #[allow(unused_variables)]
+ fn open(&mut self, path: &str, flags: usize, uid: u32, gid: u32) -> Result<usize> {
+ Err(Error::new(ENOENT))
+ }
+
+ #[allow(unused_variables)]
+ fn chmod(&mut self, path: &str, mode: u16, uid: u32, gid: u32) -> Result<usize> {
+ Err(Error::new(ENOENT))
+ }
+
+ #[allow(unused_variables)]
+ fn rmdir(&mut self, path: &str, uid: u32, gid: u32) -> Result<usize> {
+ Err(Error::new(ENOENT))
+ }
+
+ #[allow(unused_variables)]
+ fn unlink(&mut self, path: &str, uid: u32, gid: u32) -> Result<usize> {
+ Err(Error::new(ENOENT))
+ }
+
+ /* Resource operations */
+ #[allow(unused_variables)]
+ fn dup(&mut self, old_id: usize, buf: &[u8]) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn read(&mut self, id: usize, buf: &mut [u8]) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn write(&mut self, id: usize, buf: &[u8]) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn seek(&mut self, id: usize, pos: isize, whence: usize) -> Result<isize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fchmod(&mut self, id: usize, mode: u16) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fchown(&mut self, id: usize, uid: u32, gid: u32) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fcntl(&mut self, id: usize, cmd: usize, arg: usize) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fevent(&mut self, id: usize, flags: EventFlags) -> Result<EventFlags> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fmap_old(&mut self, id: usize, map: &OldMap) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+ #[allow(unused_variables)]
+ fn fmap(&mut self, id: usize, map: &Map) -> Result<usize> {
+ if map.flags.contains(MapFlags::MAP_FIXED) {
+ return Err(Error::new(EINVAL));
+ }
+ self.fmap_old(id, &OldMap {
+ offset: map.offset,
+ size: map.size,
+ flags: map.flags,
+ })
+ }
+
+ #[allow(unused_variables)]
+ fn funmap_old(&mut self, address: usize) -> Result<usize> {
+ Ok(0)
+ }
+
+ #[allow(unused_variables)]
+ fn funmap(&mut self, address: usize, length: usize) -> Result<usize> {
+ Ok(0)
+ }
+
+ #[allow(unused_variables)]
+ fn fpath(&mut self, id: usize, buf: &mut [u8]) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn frename(&mut self, id: usize, path: &str, uid: u32, gid: u32) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fstat(&mut self, id: usize, stat: &mut Stat) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fstatvfs(&mut self, id: usize, stat: &mut StatVfs) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn fsync(&mut self, id: usize) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn ftruncate(&mut self, id: usize, len: usize) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn futimens(&mut self, id: usize, times: &[TimeSpec]) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+
+ #[allow(unused_variables)]
+ fn close(&mut self, id: usize) -> Result<usize> {
+ Err(Error::new(EBADF))
+ }
+}
diff --git a/vendor/redox_syscall-0.3.5/src/scheme/seek.rs b/vendor/redox_syscall-0.3.5/src/scheme/seek.rs
new file mode 100644
index 000000000..09a45186a
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/scheme/seek.rs
@@ -0,0 +1,33 @@
+use core::cmp;
+use core::convert::TryFrom;
+use crate::error::*;
+use crate::flag::*;
+
+/// Helper for seek calls
+/// In most cases it's easier to use a usize to track the offset and buffer size internally,
+/// but the seek interface uses isize. This wrapper ensures EOVERFLOW errors are returned
+/// as appropriate if the value in the usize can't fit in the isize.
+pub fn calc_seek_offset_usize(cur_offset: usize, pos: isize, whence: usize, buf_len: usize) -> Result<isize> {
+ let cur_offset = isize::try_from(cur_offset).or_else(|_| Err(Error::new(EOVERFLOW)))?;
+ let buf_len = isize::try_from(buf_len).or_else(|_| Err(Error::new(EOVERFLOW)))?;
+ calc_seek_offset_isize(cur_offset, pos, whence, buf_len)
+}
+
+/// Helper for seek calls
+/// Result is guaranteed to be positive.
+/// EOVERFLOW returned if the arguments would cause an overflow.
+/// EINVAL returned if the new offset is out of bounds.
+pub fn calc_seek_offset_isize(cur_offset: isize, pos: isize, whence: usize, buf_len: isize) -> Result<isize> {
+ let new_offset = match whence {
+ SEEK_CUR => pos.checked_add(cur_offset),
+ SEEK_END => pos.checked_add(buf_len),
+ SEEK_SET => Some(pos),
+ _ => None,
+ };
+
+ match new_offset {
+ Some(new_offset) if new_offset < 0 => Err(Error::new(EINVAL)),
+ Some(new_offset) => Ok(cmp::min(new_offset, buf_len)),
+ None => Err(Error::new(EOVERFLOW))
+ }
+} \ No newline at end of file
diff --git a/vendor/redox_syscall-0.3.5/src/tests.rs b/vendor/redox_syscall-0.3.5/src/tests.rs
new file mode 100644
index 000000000..fdff89b4b
--- /dev/null
+++ b/vendor/redox_syscall-0.3.5/src/tests.rs
@@ -0,0 +1,442 @@
+#[test]
+fn clone() {
+ let expected_status = 42;
+ let pid_res = unsafe { crate::clone(crate::CloneFlags::empty()) };
+ if pid_res == Ok(0) {
+ crate::exit(expected_status).unwrap();
+ panic!("failed to exit");
+ } else {
+ let pid = dbg!(pid_res).unwrap();
+ let mut status = 0;
+ assert_eq!(dbg!(crate::waitpid(pid, &mut status, crate::WaitFlags::empty())), Ok(pid));
+ assert_eq!(dbg!(crate::wifexited(status)), true);
+ assert_eq!(dbg!(crate::wexitstatus(status)), expected_status);
+ }
+}
+
+//TODO: close
+
+#[test]
+fn clock_gettime() {
+ let mut tp = crate::TimeSpec::default();
+ assert_eq!(dbg!(
+ crate::clock_gettime(crate::CLOCK_MONOTONIC, &mut tp)
+ ), Ok(0));
+ assert_ne!(dbg!(tp), crate::TimeSpec::default());
+
+ tp = crate::TimeSpec::default();
+ assert_eq!(dbg!(
+ crate::clock_gettime(crate::CLOCK_REALTIME, &mut tp)
+ ), Ok(0));
+ assert_ne!(dbg!(tp), crate::TimeSpec::default());
+}
+
+//TODO: dup
+
+//TODO: dup2
+
+//TODO: exit (handled by clone?)
+
+//TODO: fchmod
+
+//TODO: fcntl
+
+#[test]
+fn fexec() {
+ let name = "file:/bin/ls";
+
+ let fd = dbg!(
+ crate::open(name, crate::O_RDONLY | crate::O_CLOEXEC)
+ ).unwrap();
+
+ let args = &[
+ [name.as_ptr() as usize, name.len()]
+ ];
+
+ let vars = &[];
+
+ let pid_res = unsafe { crate::clone(crate::CloneFlags::empty()) };
+ if pid_res == Ok(0) {
+ crate::fexec(fd, args, vars).unwrap();
+ panic!("failed to fexec");
+ } else {
+ assert_eq!(dbg!(crate::close(fd)), Ok(0));
+
+ let pid = dbg!(pid_res).unwrap();
+ let mut status = 0;
+ assert_eq!(dbg!(crate::waitpid(pid, &mut status, crate::WaitFlags::empty())), Ok(pid));
+ assert_eq!(dbg!(crate::wifexited(status)), true);
+ assert_eq!(dbg!(crate::wexitstatus(status)), 0);
+ }
+}
+
+#[test]
+fn fmap() {
+ use std::slice;
+
+ let fd = dbg!(
+ crate::open(
+ "file:/tmp/syscall-tests-fmap",
+ crate::O_CREAT | crate::O_RDWR | crate::O_CLOEXEC
+ )
+ ).unwrap();
+
+ let size = 128;
+
+ let map = unsafe {
+ slice::from_raw_parts_mut(
+ dbg!(
+ crate::fmap(fd, &crate::Map {
+ address: 0,
+ offset: 0,
+ size,
+ flags: crate::PROT_READ | crate::PROT_WRITE
+ })
+ ).unwrap() as *mut u8,
+ 128
+ )
+ };
+
+ // Maps should be available after closing
+ assert_eq!(dbg!(crate::close(fd)), Ok(0));
+
+ for i in 0..128 {
+ map[i as usize] = i;
+ assert_eq!(map[i as usize], i);
+ }
+
+ //TODO: add msync
+ unsafe {
+ assert_eq!(dbg!(
+ crate::funmap(map.as_mut_ptr() as usize, size)
+ ), Ok(0));
+ }
+}
+
+// funmap tested by fmap
+
+#[test]
+fn fpath() {
+ use std::str;
+
+ let path = "file:/tmp/syscall-tests-fpath";
+ let fd = dbg!(
+ crate::open(
+ dbg!(path),
+ crate::O_CREAT | crate::O_RDWR | crate::O_CLOEXEC
+ )
+ ).unwrap();
+
+ let mut buf = [0; 4096];
+ let count = dbg!(
+ crate::fpath(fd, &mut buf)
+ ).unwrap();
+
+ assert_eq!(dbg!(str::from_utf8(&buf[..count])), Ok(path));
+
+ assert_eq!(dbg!(crate::close(fd)), Ok(0));
+}
+
+//TODO: frename
+
+#[test]
+fn fstat() {
+ let path = "file:/tmp/syscall-tests-fstat";
+ let fd = dbg!(
+ crate::open(
+ dbg!(path),
+ crate::O_CREAT | crate::O_RDWR | crate::O_CLOEXEC
+ )
+ ).unwrap();
+
+ let mut stat = crate::Stat::default();
+ assert_eq!(dbg!(crate::fstat(fd, &mut stat)), Ok(0));
+ assert_ne!(dbg!(stat), crate::Stat::default());
+
+ assert_eq!(dbg!(crate::close(fd)), Ok(0));
+}
+
+#[test]
+fn fstatvfs() {
+ let path = "file:/tmp/syscall-tests-fstatvfs";
+ let fd = dbg!(
+ crate::open(
+ dbg!(path),
+ crate::O_CREAT | crate::O_RDWR | crate::O_CLOEXEC
+ )
+ ).unwrap();
+
+ let mut statvfs = crate::StatVfs::default();
+ assert_eq!(dbg!(crate::fstatvfs(fd, &mut statvfs)), Ok(0));
+ assert_ne!(dbg!(statvfs), crate::StatVfs::default());
+
+ assert_eq!(dbg!(crate::close(fd)), Ok(0));
+}
+
+//TODO: fsync
+
+//TODO: ftruncate
+
+//TODO: futimens
+
+//TODO: futex
+
+#[test]
+fn getegid() {
+ assert_eq!(crate::getegid(), Ok(0));
+}
+
+#[test]
+fn getens() {
+ assert_eq!(crate::getens(), Ok(1));
+}
+
+#[test]
+fn geteuid() {
+ assert_eq!(crate::geteuid(), Ok(0));
+}
+
+#[test]
+fn getgid() {
+ assert_eq!(crate::getgid(), Ok(0));
+}
+
+#[test]
+fn getns() {
+ assert_eq!(crate::getns(), Ok(1));
+}
+
+//TODO: getpid
+
+//TODO: getpgid
+
+//TODO: getppid
+
+#[test]
+fn getuid() {
+ assert_eq!(crate::getuid(), Ok(0));
+}
+
+//TODO: iopl
+
+//TODO: kill
+
+//TODO: link (probably will not work)
+
+#[test]
+fn lseek() {
+ let path = "file:/tmp/syscall-tests-lseek";
+ let fd = dbg!(
+ crate::open(
+ dbg!(path),
+ crate::O_CREAT | crate::O_RDWR | crate::O_CLOEXEC
+ )
+ ).unwrap();
+
+ {
+ let mut buf = [0; 256];
+ for i in 0..buf.len() {
+ buf[i] = i as u8;
+ }
+ assert_eq!(dbg!(crate::write(fd, &buf)), Ok(buf.len()));
+
+ assert_eq!(dbg!(crate::lseek(fd, 0, crate::SEEK_CUR)), Ok(buf.len()));
+ assert_eq!(dbg!(crate::lseek(fd, 0, crate::SEEK_SET)), Ok(0));
+ assert_eq!(dbg!(crate::lseek(fd, 0, crate::SEEK_END)), Ok(buf.len()));
+ assert_eq!(dbg!(crate::lseek(fd, 0, crate::SEEK_SET)), Ok(0));
+ }
+
+ {
+ let mut buf = [0; 256];
+ assert_eq!(dbg!(crate::read(fd, &mut buf)), Ok(buf.len()));
+ for i in 0..buf.len() {
+ assert_eq!(buf[i], i as u8);
+ }
+
+ assert_eq!(dbg!(crate::lseek(fd, 0, crate::SEEK_CUR)), Ok(buf.len()));
+ assert_eq!(dbg!(crate::lseek(fd, 0, crate::SEEK_SET)), Ok(0));
+ assert_eq!(dbg!(crate::lseek(fd, 0, crate::SEEK_END)), Ok(buf.len()));
+ assert_eq!(dbg!(crate::lseek(fd, 0, crate::SEEK_SET)), Ok(0));
+ }
+
+ assert_eq!(dbg!(crate::close(fd)), Ok(0));
+}
+
+//TODO: mkns
+
+//TODO: mprotect
+
+#[test]
+fn nanosleep() {
+ let req = crate::TimeSpec {
+ tv_sec: 0,
+ tv_nsec: 0,
+ };
+ let mut rem = crate::TimeSpec::default();
+ assert_eq!(crate::nanosleep(&req, &mut rem), Ok(0));
+ assert_eq!(rem, crate::TimeSpec::default());
+}
+
+//TODO: open
+
+//TODO: physalloc
+
+//TODO: physfree
+
+//TODO: physmap
+
+//TODO: physunmap
+
+#[test]
+fn pipe2() {
+ let mut fds = [0, 0];
+ assert_eq!(dbg!(crate::pipe2(&mut fds, crate::O_CLOEXEC)), Ok(0));
+ assert_ne!(dbg!(fds), [0, 0]);
+
+ {
+ let mut buf = [0; 256];
+ for i in 0..buf.len() {
+ buf[i] = i as u8;
+ }
+ assert_eq!(dbg!(crate::write(fds[1], &buf)), Ok(buf.len()));
+ }
+
+ {
+ let mut buf = [0; 256];
+ assert_eq!(dbg!(crate::read(fds[0], &mut buf)), Ok(buf.len()));
+ for i in 0..buf.len() {
+ assert_eq!(buf[i], i as u8);
+ }
+ }
+
+ assert_eq!(dbg!(crate::close(fds[0])), Ok(0));
+ assert_eq!(dbg!(crate::close(fds[1])), Ok(0));
+}
+
+//TODO: read
+
+#[test]
+fn rmdir() {
+ let path = "file:/tmp/syscall-tests-rmdir";
+ let fd = dbg!(
+ crate::open(
+ dbg!(path),
+ crate::O_CREAT | crate::O_DIRECTORY | crate::O_CLOEXEC
+ )
+ ).unwrap();
+
+ assert_eq!(dbg!(crate::close(fd)), Ok(0));
+
+ assert_eq!(dbg!(crate::rmdir(path)), Ok(0));
+}
+
+//TODO: setpgid
+
+//TODO: setregid
+
+//TODO: setrens
+
+//TODO: setreuid
+
+//TODO: sigaction
+
+//TODO: sigprocmask
+
+//TODO: sigreturn
+
+#[test]
+fn umask() {
+ let old = dbg!(crate::umask(0o244)).unwrap();
+ assert_eq!(dbg!(crate::umask(old)), Ok(0o244));
+}
+
+#[test]
+fn unlink() {
+ let path = "file:/tmp/syscall-tests-unlink";
+ let fd = dbg!(
+ crate::open(
+ dbg!(path),
+ crate::O_CREAT | crate::O_RDWR | crate::O_CLOEXEC
+ )
+ ).unwrap();
+
+ assert_eq!(dbg!(crate::close(fd)), Ok(0));
+
+ assert_eq!(dbg!(crate::unlink(path)), Ok(0));
+}
+
+//TODO: virttophys
+
+// waitpid tested by clone
+
+//TODO: write
+
+#[test]
+fn sched_yield() {
+ assert_eq!(dbg!(crate::sched_yield()), Ok(0));
+}
+
+#[test]
+fn sigaction() {
+ use std::{
+ mem,
+ sync::atomic::{AtomicBool, Ordering}
+ };
+
+ static SA_HANDLER_WAS_RAN: AtomicBool = AtomicBool::new(false);
+ static SA_HANDLER_2_WAS_IGNORED: AtomicBool = AtomicBool::new(false);
+
+ let child = unsafe { crate::clone(crate::CLONE_VM).unwrap() };
+
+ if child == 0 {
+ let pid = crate::getpid().unwrap();
+
+ extern "C" fn hello_im_a_signal_handler(signal: usize) {
+ assert_eq!(signal, crate::SIGUSR1);
+ SA_HANDLER_WAS_RAN.store(true, Ordering::SeqCst);
+ }
+
+ let my_signal_handler = crate::SigAction {
+ sa_handler: Some(hello_im_a_signal_handler),
+ ..Default::default()
+ };
+ crate::sigaction(crate::SIGUSR1, Some(&my_signal_handler), None).unwrap();
+
+ crate::kill(pid, crate::SIGUSR1).unwrap(); // calls handler
+
+ let mut old_signal_handler = crate::SigAction::default();
+ crate::sigaction(
+ crate::SIGUSR1,
+ Some(&crate::SigAction {
+ sa_handler: unsafe { mem::transmute::<usize, Option<extern "C" fn(usize)>>(crate::SIG_IGN) },
+ ..Default::default()
+ }),
+ Some(&mut old_signal_handler)
+ ).unwrap();
+ assert_eq!(my_signal_handler, old_signal_handler);
+
+ crate::kill(pid, crate::SIGUSR1).unwrap(); // does nothing
+
+ SA_HANDLER_2_WAS_IGNORED.store(true, Ordering::SeqCst);
+
+ crate::sigaction(
+ crate::SIGUSR1,
+ Some(&crate::SigAction {
+ sa_handler: unsafe { mem::transmute::<usize, Option<extern "C" fn(usize)>>(crate::SIG_DFL) },
+ ..Default::default()
+ }),
+ Some(&mut old_signal_handler)
+ ).unwrap();
+
+ crate::kill(pid, crate::SIGUSR1).unwrap(); // actually exits
+ } else {
+ let mut status = 0;
+ dbg!(crate::waitpid(child, &mut status, crate::WaitFlags::empty())).unwrap();
+
+ assert!(crate::wifsignaled(status));
+ assert_eq!(crate::wtermsig(status), crate::SIGUSR1);
+
+ assert!(SA_HANDLER_WAS_RAN.load(Ordering::SeqCst));
+ assert!(SA_HANDLER_2_WAS_IGNORED.load(Ordering::SeqCst));
+ }
+}
diff --git a/vendor/redox_syscall/.cargo-checksum.json b/vendor/redox_syscall/.cargo-checksum.json
index 72e27feeb..5f5e9d559 100644
--- a/vendor/redox_syscall/.cargo-checksum.json
+++ b/vendor/redox_syscall/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"80db3d7e545f9b8a04804e634948c6e80c712f051680b2e7a39ddb848c200151","LICENSE":"efcfee7981ff72431fffb06925cad00a23dce079ed4354f61030ad5abdb78829","README.md":"9161f18ba7f69b4ca51e844aee8ffb8237513a468c5c3b1f3a5f989044f895ac","src/arch/aarch64.rs":"9b4cf7da1f001ce54bfd01b7a001dbc8043c1ef89823781a2a1070e2c096a9ce","src/arch/nonredox.rs":"1055cd441f4b95c9ec428222a7796c7fac953a8a500ca08173743ea95220aab3","src/arch/riscv64.rs":"20bf9a8db779059773b113643d0cb3737fbb5d57f45ee39b8ae9d3396b6ef636","src/arch/x86.rs":"cf01f4d798e8861ad5b9429714c947e2d7c53a3cb9a13d53dc7a38e4bdad4101","src/arch/x86_64.rs":"fd80c9a412d07c85f2b942f36de364edfff7cd49f6c00c043e69becb7c76119f","src/call.rs":"141bdb2cb64dc118beadf40fc8180cd32e41841c8d7db71aed646a5a8ab9fac3","src/data.rs":"bd4545d4c2fcc59ff26ae52ad7f773a697d5ccf639a2ffc253cece6b31e94d51","src/error.rs":"ef20f3817f997a1aeb7114628407f19cb8bc13c555d4e093918f38a5d098f798","src/flag.rs":"aad91126a0bb3413cd103fc38b457aa4d1f6b949605e3ae249aea0dfec8504ff","src/io/dma.rs":"85577342547afaac0dc46740dfeb9d2e4239d8809b86748c3fcaa12f922b1c9d","src/io/io.rs":"e1d454ff47efac70fdaa709251a5a9c1c5637f931994ba3bf6a38c6db9145822","src/io/mmio.rs":"12d0fb4d4f45097bf2c14f73cb1ce21325eae193b537e9f18af73ed5281b5e63","src/io/mod.rs":"79c2fce4fd6d75f3b9169df64b7a605feff31fab2e5ed81984ae085a1d07c0c4","src/io/pio.rs":"9ee6f2229b700d1c45b4c8c6242bd99fe69634e16dcd5843d9e8d1c958047406","src/lib.rs":"25c9f35cf709e7e50336ae12f0390f968cc11515f93b6d757825a7b7725eeadb","src/number.rs":"773d9f55a98c6ae5b4cb08b396568f05f8d9b187a7609b7a1c5dd940f6ee674a","src/scheme/generate.sh":"dde4e30f4e0223fb1a24ed486a6c36e624c854dbf890862cb6866f4fa3c7a6eb","src/scheme/mod.rs":"cb622405deb0aef4ab04499ea1adfd338c9c5dd9c31a1fe9989786dbf69b49d8","src/scheme/scheme.rs":"2e27e08e3b9005a5705fadd10a6160a570322c873d1b6477f269e0beae35f046","src/scheme/scheme_block.rs":"a8d0137e106dcb605367bfc6a22b83317142996b7e410c832de0f63a423d5305","src/scheme/scheme_block_mut.rs":"b6cea44a3e79dd6c30b4280b6913a215628918978451efe11f31b0d7eddd44a5","src/scheme/scheme_mut.rs":"e77da9d5208de101c126eca9fa685f2b78a5ddc4890ad5f5f4d79ded3bbd8fbd","src/scheme/seek.rs":"94e044de47b0f00eb0c2aea3fb21001ac2b9aa1e4b20d73fd54163fe92fa63f7","src/tests.rs":"b44de69251d6bcc1cb796147a1212fffd3ac7d5796d9a0d2265db0aac8a909df"},"package":"567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"} \ No newline at end of file
+{"files":{"Cargo.toml":"91d2cdde6f3eaad21dc8f0d8879b0572d92b0eca34fd2dcac26ccc00c50b6839","LICENSE":"efcfee7981ff72431fffb06925cad00a23dce079ed4354f61030ad5abdb78829","README.md":"9161f18ba7f69b4ca51e844aee8ffb8237513a468c5c3b1f3a5f989044f895ac","src/arch/aarch64.rs":"9b4cf7da1f001ce54bfd01b7a001dbc8043c1ef89823781a2a1070e2c096a9ce","src/arch/nonredox.rs":"1055cd441f4b95c9ec428222a7796c7fac953a8a500ca08173743ea95220aab3","src/arch/riscv64.rs":"20bf9a8db779059773b113643d0cb3737fbb5d57f45ee39b8ae9d3396b6ef636","src/arch/x86.rs":"cf01f4d798e8861ad5b9429714c947e2d7c53a3cb9a13d53dc7a38e4bdad4101","src/arch/x86_64.rs":"fd80c9a412d07c85f2b942f36de364edfff7cd49f6c00c043e69becb7c76119f","src/call.rs":"1630ef687b0de538e19e7408d79c55177e61a7a7c8a2693da9bd01e5358a9a8e","src/data.rs":"cff635f60875977935e1b243aff638ef2193aa05a73fc1399964e55225eb3934","src/error.rs":"c8cacebca86e388e2ef12ac504818d7c1bc16df5d89fcabc1dfc9839e7c3aecf","src/flag.rs":"0505c4ed82970109d83ef01100c40d0fee344919d10f5a78957fc20706f8e228","src/io/dma.rs":"85577342547afaac0dc46740dfeb9d2e4239d8809b86748c3fcaa12f922b1c9d","src/io/io.rs":"e1d454ff47efac70fdaa709251a5a9c1c5637f931994ba3bf6a38c6db9145822","src/io/mmio.rs":"ab64f0bee9d13ebcfc21d0125f6c973f460f582cbc3d566d00491fe1ac714127","src/io/mod.rs":"79c2fce4fd6d75f3b9169df64b7a605feff31fab2e5ed81984ae085a1d07c0c4","src/io/pio.rs":"9ee6f2229b700d1c45b4c8c6242bd99fe69634e16dcd5843d9e8d1c958047406","src/lib.rs":"25c9f35cf709e7e50336ae12f0390f968cc11515f93b6d757825a7b7725eeadb","src/number.rs":"c0463c7f8eb3f3d16062efb0e65472b22f81821329af2ed8271fdddfa70f3e8b","src/scheme/generate.sh":"2eed5d6a382cd3daa31ccaa7c80b1995258f9126462228191b41f32e7af958a2","src/scheme/mod.rs":"acdd7526d6477288c47efc2a4c310d9a9fef8795cad4358c54aba0763ae2fcd2","src/scheme/scheme.rs":"860526f02cb8cab0d1a996079c9ef5d9440b45796429c4376e00d253b4d3ba51","src/scheme/scheme_block.rs":"6afebd8f3d6dd2716236e63bfd3943f5d6725e29aac392ce0e21101fd4578a82","src/scheme/scheme_block_mut.rs":"ed2d27e7519f437a42d32cbd80e33c4b9446cd90d3e6dbd82e3509a41e92acb7","src/scheme/scheme_mut.rs":"1d2e2ad31da6622ef80493c3670909fe8179306081bbc7f450b24528e6ef23d8","src/scheme/seek.rs":"94e044de47b0f00eb0c2aea3fb21001ac2b9aa1e4b20d73fd54163fe92fa63f7","src/tests.rs":"0fb2355fe625188a348fbae8c23fa622d4a08c6378a56ff40d3ef54ed78884b9"},"package":"4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"} \ No newline at end of file
diff --git a/vendor/redox_syscall/Cargo.toml b/vendor/redox_syscall/Cargo.toml
index ab14e3fe8..c9fda075e 100644
--- a/vendor/redox_syscall/Cargo.toml
+++ b/vendor/redox_syscall/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2018"
name = "redox_syscall"
-version = "0.3.5"
+version = "0.4.1"
authors = ["Jeremy Soller <jackpot51@gmail.com>"]
description = "A Rust library to access raw Redox system calls"
documentation = "https://docs.rs/redox_syscall"
diff --git a/vendor/redox_syscall/src/call.rs b/vendor/redox_syscall/src/call.rs
index bc1af0dc2..87ba8a980 100644
--- a/vendor/redox_syscall/src/call.rs
+++ b/vendor/redox_syscall/src/call.rs
@@ -264,21 +264,6 @@ pub unsafe fn physmap(physical_address: usize, size: usize, flags: PhysmapFlags)
syscall3(SYS_PHYSMAP, physical_address, size, flags.bits())
}
-/// Unmap previously mapped physical memory
-///
-/// # Errors
-///
-/// * `EPERM` - `uid != 0`
-/// * `EFAULT` - `virtual_address` has not been mapped
-pub unsafe fn physunmap(virtual_address: usize) -> Result<usize> {
- syscall1(SYS_PHYSUNMAP, virtual_address)
-}
-
-/// Create a pair of file descriptors referencing the read and write ends of a pipe
-pub fn pipe2(fds: &mut [usize; 2], flags: usize) -> Result<usize> {
- unsafe { syscall2(SYS_PIPE2, fds.as_ptr() as usize, flags) }
-}
-
/// Read from a file descriptor into a buffer
pub fn read(fd: usize, buf: &mut [u8]) -> Result<usize> {
unsafe { syscall3(SYS_READ, fd, buf.as_mut_ptr() as usize, buf.len()) }
diff --git a/vendor/redox_syscall/src/data.rs b/vendor/redox_syscall/src/data.rs
index 45d2dd862..c93869793 100644
--- a/vendor/redox_syscall/src/data.rs
+++ b/vendor/redox_syscall/src/data.rs
@@ -149,6 +149,24 @@ pub struct SigAction {
pub sa_mask: [u64; 2],
pub sa_flags: SigActionFlags,
}
+impl Deref for SigAction {
+ type Target = [u8];
+ fn deref(&self) -> &[u8] {
+ unsafe {
+ slice::from_raw_parts(self as *const SigAction as *const u8,
+ mem::size_of::<SigAction>())
+ }
+ }
+}
+
+impl DerefMut for SigAction {
+ fn deref_mut(&mut self) -> &mut [u8] {
+ unsafe {
+ slice::from_raw_parts_mut(self as *mut SigAction as *mut u8,
+ mem::size_of::<SigAction>())
+ }
+ }
+}
#[allow(dead_code)]
unsafe fn _assert_size_of_function_is_sane() {
@@ -295,3 +313,44 @@ macro_rules! ptrace_event {
}
}
}
+
+bitflags::bitflags! {
+ #[derive(Default)]
+ pub struct GrantFlags: usize {
+ const GRANT_READ = 0x0000_0001;
+ const GRANT_WRITE = 0x0000_0002;
+ const GRANT_EXEC = 0x0000_0004;
+
+ const GRANT_SHARED = 0x0000_0008;
+ const GRANT_LAZY = 0x0000_0010;
+ const GRANT_SCHEME = 0x0000_0020;
+ const GRANT_PHYS = 0x0000_0040;
+ const GRANT_PINNED = 0x0000_0080;
+ }
+}
+
+#[derive(Clone, Copy, Debug, Default)]
+#[repr(C)]
+pub struct GrantDesc {
+ pub base: usize,
+ pub size: usize,
+ pub flags: GrantFlags,
+ pub offset: u64,
+}
+
+impl Deref for GrantDesc {
+ type Target = [u8];
+ fn deref(&self) -> &[u8] {
+ unsafe {
+ slice::from_raw_parts(self as *const GrantDesc as *const u8, mem::size_of::<GrantDesc>())
+ }
+ }
+}
+
+impl DerefMut for GrantDesc {
+ fn deref_mut(&mut self) -> &mut [u8] {
+ unsafe {
+ slice::from_raw_parts_mut(self as *mut GrantDesc as *mut u8, mem::size_of::<GrantDesc>())
+ }
+ }
+}
diff --git a/vendor/redox_syscall/src/error.rs b/vendor/redox_syscall/src/error.rs
index 9a4b0b5ad..5cc0bfc33 100644
--- a/vendor/redox_syscall/src/error.rs
+++ b/vendor/redox_syscall/src/error.rs
@@ -176,8 +176,9 @@ pub const EKEYREVOKED: i32 = 128; /* Key has been revoked */
pub const EKEYREJECTED: i32 = 129; /* Key was rejected by service */
pub const EOWNERDEAD: i32 = 130; /* Owner died */
pub const ENOTRECOVERABLE: i32 = 131; /* State not recoverable */
+pub const ESKMSG: i32 = 132; /* Scheme-kernel message code */
-pub static STR_ERROR: [&'static str; 132] = ["Success",
+pub static STR_ERROR: [&'static str; 133] = ["Success",
"Operation not permitted",
"No such file or directory",
"No such process",
@@ -308,4 +309,5 @@ pub static STR_ERROR: [&'static str; 132] = ["Success",
"Key has been revoked",
"Key was rejected by service",
"Owner died",
- "State not recoverable"];
+ "State not recoverable",
+ "Scheme-kernel message code"];
diff --git a/vendor/redox_syscall/src/flag.rs b/vendor/redox_syscall/src/flag.rs
index 341104856..45a6e42e8 100644
--- a/vendor/redox_syscall/src/flag.rs
+++ b/vendor/redox_syscall/src/flag.rs
@@ -54,9 +54,18 @@ pub const FUTEX_WAKE: usize = 1;
pub const FUTEX_REQUEUE: usize = 2;
pub const FUTEX_WAIT64: usize = 3;
+// packet.c = fd
+pub const SKMSG_FRETURNFD: usize = 0;
+
+// packet.uid:packet.gid = offset, packet.c = base address, packet.d = page count
+pub const SKMSG_PROVIDE_MMAP: usize = 1;
+
bitflags! {
pub struct MapFlags: usize {
+ // TODO: Downgrade PROT_NONE to global constant? (bitflags specifically states zero flags
+ // can cause buggy behavior).
const PROT_NONE = 0x0000_0000;
+
const PROT_EXEC = 0x0001_0000;
const PROT_WRITE = 0x0002_0000;
const PROT_READ = 0x0004_0000;
@@ -64,9 +73,30 @@ bitflags! {
const MAP_SHARED = 0x0001;
const MAP_PRIVATE = 0x0002;
- /// Only accepted for mmap2(2).
const MAP_FIXED = 0x0004;
const MAP_FIXED_NOREPLACE = 0x000C;
+
+ /// For *userspace-backed mmaps*, return from the mmap call before all pages have been
+ /// provided by the scheme. This requires the scheme to be trusted, as the current context
+ /// can block indefinitely, if the scheme does not respond to the page fault handler's
+ /// request, as it tries to map the page by requesting it from the scheme.
+ ///
+ /// In some cases however, such as the program loader, the data needs to be trusted as much
+ /// with or without MAP_LAZY, and if so, mapping lazily will not cause insecureness by
+ /// itself.
+ ///
+ /// For kernel-backed mmaps, this flag has no effect at all. It is unspecified whether
+ /// kernel mmaps are lazy or not.
+ const MAP_LAZY = 0x0010;
+ }
+}
+bitflags! {
+ pub struct MunmapFlags: usize {
+ /// Indicates whether the funmap call must implicitly do an msync, for the changes to
+ /// become visible later.
+ ///
+ /// This flag will currently be set if and only if MAP_SHARED | PROT_WRITE are set.
+ const NEEDS_SYNC = 1;
}
}
@@ -334,3 +364,11 @@ pub fn wexitstatus(status: usize) -> usize {
pub fn wcoredump(status: usize) -> bool {
(status & 0x80) != 0
}
+
+bitflags! {
+ pub struct MremapFlags: usize {
+ const FIXED = 1;
+ const FIXED_REPLACE = 3;
+ // TODO: MAYMOVE, DONTUNMAP
+ }
+}
diff --git a/vendor/redox_syscall/src/io/mmio.rs b/vendor/redox_syscall/src/io/mmio.rs
index 3966ab454..ef8f60391 100644
--- a/vendor/redox_syscall/src/io/mmio.rs
+++ b/vendor/redox_syscall/src/io/mmio.rs
@@ -1,5 +1,6 @@
-use core::ptr::{read_volatile, write_volatile, addr_of, addr_of_mut};
use core::mem::MaybeUninit;
+use core::ptr;
+#[cfg(not(any(target_arch = "x86", target_arch = "x86_64")))]
use core::ops::{BitAnd, BitOr, Not};
use super::io::Io;
@@ -32,14 +33,136 @@ impl<T> Mmio<T> {
}
}
+// Generic implementation (WARNING: requires aligned pointers!)
+#[cfg(not(any(target_arch = "x86", target_arch = "x86_64")))]
impl<T> Io for Mmio<T> where T: Copy + PartialEq + BitAnd<Output = T> + BitOr<Output = T> + Not<Output = T> {
type Value = T;
fn read(&self) -> T {
- unsafe { read_volatile(addr_of!(self.value).cast::<T>()) }
+ unsafe { ptr::read_volatile(ptr::addr_of!(self.value).cast::<T>()) }
}
fn write(&mut self, value: T) {
- unsafe { write_volatile(addr_of_mut!(self.value).cast::<T>(), value) };
+ unsafe { ptr::write_volatile(ptr::addr_of_mut!(self.value).cast::<T>(), value) };
+ }
+}
+
+// x86 u8 implementation
+#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
+impl Io for Mmio<u8> {
+ type Value = u8;
+
+ fn read(&self) -> Self::Value {
+ unsafe {
+ let value: Self::Value;
+ let ptr: *const Self::Value = ptr::addr_of!(self.value).cast::<Self::Value>();
+ core::arch::asm!(
+ "mov {}, [{}]",
+ out(reg_byte) value,
+ in(reg) ptr
+ );
+ value
+ }
+ }
+
+ fn write(&mut self, value: Self::Value) {
+ unsafe {
+ let ptr: *mut Self::Value = ptr::addr_of_mut!(self.value).cast::<Self::Value>();
+ core::arch::asm!(
+ "mov [{}], {}",
+ in(reg) ptr,
+ in(reg_byte) value,
+ );
+ }
+ }
+}
+
+// x86 u16 implementation
+#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
+impl Io for Mmio<u16> {
+ type Value = u16;
+
+ fn read(&self) -> Self::Value {
+ unsafe {
+ let value: Self::Value;
+ let ptr: *const Self::Value = ptr::addr_of!(self.value).cast::<Self::Value>();
+ core::arch::asm!(
+ "mov {:x}, [{}]",
+ out(reg) value,
+ in(reg) ptr
+ );
+ value
+ }
+ }
+
+ fn write(&mut self, value: Self::Value) {
+ unsafe {
+ let ptr: *mut Self::Value = ptr::addr_of_mut!(self.value).cast::<Self::Value>();
+ core::arch::asm!(
+ "mov [{}], {:x}",
+ in(reg) ptr,
+ in(reg) value,
+ );
+ }
+ }
+}
+
+// x86 u32 implementation
+#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
+impl Io for Mmio<u32> {
+ type Value = u32;
+
+ fn read(&self) -> Self::Value {
+ unsafe {
+ let value: Self::Value;
+ let ptr: *const Self::Value = ptr::addr_of!(self.value).cast::<Self::Value>();
+ core::arch::asm!(
+ "mov {:e}, [{}]",
+ out(reg) value,
+ in(reg) ptr
+ );
+ value
+ }
+ }
+
+ fn write(&mut self, value: Self::Value) {
+ unsafe {
+ let ptr: *mut Self::Value = ptr::addr_of_mut!(self.value).cast::<Self::Value>();
+ core::arch::asm!(
+ "mov [{}], {:e}",
+ in(reg) ptr,
+ in(reg) value,
+ );
+ }
+ }
+}
+
+// x86 u64 implementation (x86_64 only)
+#[cfg(target_arch = "x86_64")]
+impl Io for Mmio<u64> {
+ type Value = u64;
+
+ fn read(&self) -> Self::Value {
+ unsafe {
+ let value: Self::Value;
+ let ptr: *const Self::Value = ptr::addr_of!(self.value).cast::<Self::Value>();
+ core::arch::asm!(
+ "mov {:r}, [{}]",
+ out(reg) value,
+ in(reg) ptr
+ );
+ value
+ }
+ }
+
+ fn write(&mut self, value: Self::Value) {
+ unsafe {
+ let ptr: *mut Self::Value = ptr::addr_of_mut!(self.value).cast::<Self::Value>();
+ core::arch::asm!(
+ "mov [{}], {:r}",
+ in(reg) ptr,
+ in(reg) value,
+ );
+ }
}
}
diff --git a/vendor/redox_syscall/src/number.rs b/vendor/redox_syscall/src/number.rs
index 2b9205a26..056cfc76a 100644
--- a/vendor/redox_syscall/src/number.rs
+++ b/vendor/redox_syscall/src/number.rs
@@ -25,10 +25,16 @@ pub const SYS_FCHMOD: usize = SYS_CLASS_FILE | 94;
pub const SYS_FCHOWN: usize = SYS_CLASS_FILE | 207;
pub const SYS_FCNTL: usize = SYS_CLASS_FILE | 55;
pub const SYS_FEVENT: usize = SYS_CLASS_FILE | 927;
+
+// TODO: Rename FMAP/FUNMAP to MMAP/MUNMAP
pub const SYS_FMAP_OLD: usize = SYS_CLASS_FILE | SYS_ARG_SLICE | 90;
pub const SYS_FMAP: usize = SYS_CLASS_FILE | SYS_ARG_SLICE | 900;
+// TODO: SYS_FUNMAP should be SYS_CLASS_FILE
+// TODO: Remove FMAP/FMAP_OLD
pub const SYS_FUNMAP_OLD: usize = SYS_CLASS_FILE | 91;
pub const SYS_FUNMAP: usize = SYS_CLASS_FILE | 92;
+pub const SYS_MREMAP: usize = 155;
+
pub const SYS_FPATH: usize = SYS_CLASS_FILE | SYS_ARG_MSLICE | 928;
pub const SYS_FRENAME: usize = SYS_CLASS_FILE | SYS_ARG_PATH | 38;
pub const SYS_FSTAT: usize = SYS_CLASS_FILE | SYS_ARG_MSLICE | 28;
@@ -37,6 +43,18 @@ pub const SYS_FSYNC: usize = SYS_CLASS_FILE | 118;
pub const SYS_FTRUNCATE: usize = SYS_CLASS_FILE | 93;
pub const SYS_FUTIMENS: usize = SYS_CLASS_FILE | SYS_ARG_SLICE | 320;
+// b = file, c = flags, d = required_page_count, uid:gid = offset
+pub const KSMSG_MMAP: usize = SYS_CLASS_FILE | 72;
+
+// b = file, c = flags, d = page_count, uid:gid = offset
+pub const KSMSG_MSYNC: usize = SYS_CLASS_FILE | 73;
+
+// b = file, c = page_count, uid:gid = offset
+pub const KSMSG_MUNMAP: usize = SYS_CLASS_FILE | 74;
+
+// b = file, c = flags, d = page_count, uid:gid = offset
+pub const KSMSG_MMAP_PREP: usize = SYS_CLASS_FILE | 75;
+
pub const SYS_CLOCK_GETTIME: usize = 265;
pub const SYS_EXIT: usize = 1;
pub const SYS_FUTEX: usize = 240;
@@ -58,9 +76,7 @@ pub const SYS_PHYSALLOC: usize =945;
pub const SYS_PHYSALLOC3: usize=9453;
pub const SYS_PHYSFREE: usize = 946;
pub const SYS_PHYSMAP: usize = 947;
-pub const SYS_PHYSUNMAP: usize =948;
pub const SYS_VIRTTOPHYS: usize=949;
-pub const SYS_PIPE2: usize = 331;
pub const SYS_SETPGID: usize = 57;
pub const SYS_SETREGID: usize = 204;
pub const SYS_SETRENS: usize = 952;
diff --git a/vendor/redox_syscall/src/scheme/generate.sh b/vendor/redox_syscall/src/scheme/generate.sh
index a877cda92..be851f57b 100755
--- a/vendor/redox_syscall/src/scheme/generate.sh
+++ b/vendor/redox_syscall/src/scheme/generate.sh
@@ -15,6 +15,8 @@ sed 's/trait Scheme/trait SchemeBlock/' scheme.rs \
| sed 's/\.map(|o| o as usize)/.map(|o| o.map(|o| o as usize))/' \
| sed 's/Ok(0)/Ok(Some(0))/g' \
| sed 's/Result<\([^>]\+\)>/Result<Option<\1>>/g' \
+| sed 's/convert_to_this_scheme/convert_to_this_scheme_block/g' \
+| sed 's/convert_in_scheme_handle/convert_in_scheme_handle_block/g' \
> scheme_block.rs
echo "Generating SchemeBlockMut from SchemeBlock"
diff --git a/vendor/redox_syscall/src/scheme/mod.rs b/vendor/redox_syscall/src/scheme/mod.rs
index f65d1e2c0..61655dabf 100644
--- a/vendor/redox_syscall/src/scheme/mod.rs
+++ b/vendor/redox_syscall/src/scheme/mod.rs
@@ -1,5 +1,7 @@
use core::{slice, str};
+use crate::{Error, Result, EOPNOTSUPP, ESKMSG, Packet, SKMSG_FRETURNFD};
+
pub use self::scheme::Scheme;
pub use self::scheme_mut::SchemeMut;
pub use self::scheme_block::SchemeBlock;
@@ -16,3 +18,51 @@ mod scheme_mut;
mod scheme_block;
mod scheme_block_mut;
mod seek;
+
+pub struct CallerCtx {
+ pub pid: usize,
+ pub uid: u32,
+ pub gid: u32,
+}
+
+pub enum OpenResult {
+ ThisScheme { number: usize },
+ OtherScheme { fd: usize },
+}
+
+// TODO: Find a better solution than generate.sh
+pub(crate) fn convert_to_this_scheme(r: Result<usize>) -> Result<OpenResult> {
+ r.map(|number| OpenResult::ThisScheme { number })
+}
+pub(crate) fn convert_to_this_scheme_block(r: Result<Option<usize>>) -> Result<Option<OpenResult>> {
+ r.map(|o| o.map(|number| OpenResult::ThisScheme { number }))
+}
+pub(crate) fn convert_in_scheme_handle_block(_: &Packet, result: Result<Option<OpenResult>>) -> Result<Option<usize>> {
+ match result {
+ Ok(Some(OpenResult::ThisScheme { number })) => Ok(Some(number)),
+ Ok(Some(OpenResult::OtherScheme { .. })) => Err(Error::new(EOPNOTSUPP)),
+ Ok(None) => Ok(None),
+ Err(err) => Err(err),
+ }
+}
+pub(crate) fn convert_in_scheme_handle(packet: &mut Packet, result: Result<OpenResult>) -> Result<usize> {
+ match result {
+ Ok(OpenResult::ThisScheme { number }) => Ok(number),
+ Ok(OpenResult::OtherScheme { fd }) => {
+ packet.b = SKMSG_FRETURNFD;
+ packet.c = fd;
+ Err(Error::new(ESKMSG))
+ }
+ Err(err) => Err(err),
+ }
+}
+
+impl CallerCtx {
+ pub fn from_packet(packet: &Packet) -> Self {
+ Self {
+ pid: packet.pid,
+ uid: packet.uid,
+ gid: packet.gid,
+ }
+ }
+}
diff --git a/vendor/redox_syscall/src/scheme/scheme.rs b/vendor/redox_syscall/src/scheme/scheme.rs
index 6bf36172c..ee09d697b 100644
--- a/vendor/redox_syscall/src/scheme/scheme.rs
+++ b/vendor/redox_syscall/src/scheme/scheme.rs
@@ -1,17 +1,20 @@
use core::{mem, slice};
+use crate::CallerCtx;
+use crate::OpenResult;
use crate::data::*;
use crate::error::*;
use crate::flag::*;
use crate::number::*;
-use crate::scheme::str_from_raw_parts;
+use crate::scheme::*;
pub trait Scheme {
fn handle(&self, packet: &mut Packet) {
let res = match packet.a {
SYS_OPEN => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } {
- self.open(path, packet.d, packet.uid, packet.gid)
- } else {
+ convert_in_scheme_handle(packet, self.xopen(path, packet.d, &CallerCtx::from_packet(&packet)))
+ }
+ else {
Err(Error::new(EINVAL))
},
SYS_RMDIR => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } {
@@ -25,7 +28,7 @@ pub trait Scheme {
Err(Error::new(EINVAL))
},
- SYS_DUP => self.dup(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }),
+ SYS_DUP => convert_in_scheme_handle(packet, self.xdup(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }, &CallerCtx::from_packet(&packet))),
SYS_READ => self.read(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }),
SYS_WRITE => self.write(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }),
SYS_LSEEK => self.seek(packet.b, packet.c as isize, packet.d).map(|o| o as usize),
@@ -33,18 +36,6 @@ pub trait Scheme {
SYS_FCHOWN => self.fchown(packet.b, packet.c as u32, packet.d as u32),
SYS_FCNTL => self.fcntl(packet.b, packet.c, packet.d),
SYS_FEVENT => self.fevent(packet.b, EventFlags::from_bits_truncate(packet.c)).map(|f| f.bits()),
- SYS_FMAP_OLD => if packet.d >= mem::size_of::<OldMap>() {
- self.fmap_old(packet.b, unsafe { &*(packet.c as *const OldMap) })
- } else {
- Err(Error::new(EFAULT))
- },
- SYS_FMAP => if packet.d >= mem::size_of::<Map>() {
- self.fmap(packet.b, unsafe { &*(packet.c as *const Map) })
- } else {
- Err(Error::new(EFAULT))
- },
- SYS_FUNMAP_OLD => self.funmap_old(packet.b),
- SYS_FUNMAP => self.funmap(packet.b, packet.c),
SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }),
SYS_FRENAME => if let Some(path) = unsafe { str_from_raw_parts(packet.c as *const u8, packet.d) } {
self.frename(packet.b, path, packet.uid, packet.gid)
@@ -69,6 +60,10 @@ pub trait Scheme {
Err(Error::new(EFAULT))
},
SYS_CLOSE => self.close(packet.b),
+
+ KSMSG_MMAP_PREP => self.mmap_prep(packet.b, u64::from(packet.uid) | (u64::from(packet.gid) << 32), packet.c, MapFlags::from_bits_truncate(packet.d)),
+ KSMSG_MUNMAP => self.munmap(packet.b, u64::from(packet.uid) | (u64::from(packet.gid) << 32), packet.c, MunmapFlags::from_bits_truncate(packet.d)),
+
_ => Err(Error::new(ENOSYS))
};
@@ -81,6 +76,10 @@ pub trait Scheme {
fn open(&self, path: &str, flags: usize, uid: u32, gid: u32) -> Result<usize> {
Err(Error::new(ENOENT))
}
+ #[allow(unused_variables)]
+ fn xopen(&self, path: &str, flags: usize, ctx: &CallerCtx) -> Result<OpenResult> {
+ convert_to_this_scheme(self.open(path, flags, ctx.uid, ctx.gid))
+ }
#[allow(unused_variables)]
fn chmod(&self, path: &str, mode: u16, uid: u32, gid: u32) -> Result<usize> {
@@ -104,6 +103,11 @@ pub trait Scheme {
}
#[allow(unused_variables)]
+ fn xdup(&self, old_id: usize, buf: &[u8], ctx: &CallerCtx) -> Result<OpenResult> {
+ convert_to_this_scheme(self.dup(old_id, buf))
+ }
+
+ #[allow(unused_variables)]
fn read(&self, id: usize, buf: &mut [u8]) -> Result<usize> {
Err(Error::new(EBADF))
}
@@ -139,32 +143,6 @@ pub trait Scheme {
}
#[allow(unused_variables)]
- fn fmap_old(&self, id: usize, map: &OldMap) -> Result<usize> {
- Err(Error::new(EBADF))
- }
- #[allow(unused_variables)]
- fn fmap(&self, id: usize, map: &Map) -> Result<usize> {
- if map.flags.contains(MapFlags::MAP_FIXED) {
- return Err(Error::new(EINVAL));
- }
- self.fmap_old(id, &OldMap {
- offset: map.offset,
- size: map.size,
- flags: map.flags,
- })
- }
-
- #[allow(unused_variables)]
- fn funmap_old(&self, address: usize) -> Result<usize> {
- Ok(0)
- }
-
- #[allow(unused_variables)]
- fn funmap(&self, address: usize, length: usize) -> Result<usize> {
- Ok(0)
- }
-
- #[allow(unused_variables)]
fn fpath(&self, id: usize, buf: &mut [u8]) -> Result<usize> {
Err(Error::new(EBADF))
}
@@ -203,4 +181,14 @@ pub trait Scheme {
fn close(&self, id: usize) -> Result<usize> {
Err(Error::new(EBADF))
}
+
+ #[allow(unused_variables)]
+ fn mmap_prep(&self, id: usize, offset: u64, size: usize, flags: MapFlags) -> Result<usize> {
+ Err(Error::new(EOPNOTSUPP))
+ }
+
+ #[allow(unused_variables)]
+ fn munmap(&self, id: usize, offset: u64, size: usize, flags: MunmapFlags) -> Result<usize> {
+ Err(Error::new(EOPNOTSUPP))
+ }
}
diff --git a/vendor/redox_syscall/src/scheme/scheme_block.rs b/vendor/redox_syscall/src/scheme/scheme_block.rs
index 3b3de4bc9..e74e3b7e2 100644
--- a/vendor/redox_syscall/src/scheme/scheme_block.rs
+++ b/vendor/redox_syscall/src/scheme/scheme_block.rs
@@ -1,17 +1,20 @@
use core::{mem, slice};
+use crate::CallerCtx;
+use crate::OpenResult;
use crate::data::*;
use crate::error::*;
use crate::flag::*;
use crate::number::*;
-use crate::scheme::str_from_raw_parts;
+use crate::scheme::*;
pub trait SchemeBlock {
fn handle(&self, packet: &Packet) -> Option<usize> {
let res = match packet.a {
SYS_OPEN => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } {
- self.open(path, packet.d, packet.uid, packet.gid)
- } else {
+ convert_in_scheme_handle_block(packet, self.xopen(path, packet.d, &CallerCtx::from_packet(&packet)))
+ }
+ else {
Err(Error::new(EINVAL))
},
SYS_RMDIR => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } {
@@ -25,7 +28,7 @@ pub trait SchemeBlock {
Err(Error::new(EINVAL))
},
- SYS_DUP => self.dup(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }),
+ SYS_DUP => convert_in_scheme_handle_block(packet, self.xdup(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }, &CallerCtx::from_packet(&packet))),
SYS_READ => self.read(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }),
SYS_WRITE => self.write(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }),
SYS_LSEEK => self.seek(packet.b, packet.c as isize, packet.d).map(|o| o.map(|o| o as usize)),
@@ -33,18 +36,6 @@ pub trait SchemeBlock {
SYS_FCHOWN => self.fchown(packet.b, packet.c as u32, packet.d as u32),
SYS_FCNTL => self.fcntl(packet.b, packet.c, packet.d),
SYS_FEVENT => self.fevent(packet.b, EventFlags::from_bits_truncate(packet.c)).map(|f| f.map(|f| f.bits())),
- SYS_FMAP_OLD => if packet.d >= mem::size_of::<OldMap>() {
- self.fmap_old(packet.b, unsafe { &*(packet.c as *const OldMap) })
- } else {
- Err(Error::new(EFAULT))
- },
- SYS_FMAP => if packet.d >= mem::size_of::<Map>() {
- self.fmap(packet.b, unsafe { &*(packet.c as *const Map) })
- } else {
- Err(Error::new(EFAULT))
- },
- SYS_FUNMAP_OLD => self.funmap_old(packet.b),
- SYS_FUNMAP => self.funmap(packet.b, packet.c),
SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }),
SYS_FRENAME => if let Some(path) = unsafe { str_from_raw_parts(packet.c as *const u8, packet.d) } {
self.frename(packet.b, path, packet.uid, packet.gid)
@@ -69,6 +60,10 @@ pub trait SchemeBlock {
Err(Error::new(EFAULT))
},
SYS_CLOSE => self.close(packet.b),
+
+ KSMSG_MMAP_PREP => self.mmap_prep(packet.b, u64::from(packet.uid) | (u64::from(packet.gid) << 32), packet.c, MapFlags::from_bits_truncate(packet.d)),
+ KSMSG_MUNMAP => self.munmap(packet.b, u64::from(packet.uid) | (u64::from(packet.gid) << 32), packet.c, MunmapFlags::from_bits_truncate(packet.d)),
+
_ => Err(Error::new(ENOSYS))
};
@@ -81,6 +76,10 @@ pub trait SchemeBlock {
fn open(&self, path: &str, flags: usize, uid: u32, gid: u32) -> Result<Option<usize>> {
Err(Error::new(ENOENT))
}
+ #[allow(unused_variables)]
+ fn xopen(&self, path: &str, flags: usize, ctx: &CallerCtx) -> Result<Option<OpenResult>> {
+ convert_to_this_scheme_block(self.open(path, flags, ctx.uid, ctx.gid))
+ }
#[allow(unused_variables)]
fn chmod(&self, path: &str, mode: u16, uid: u32, gid: u32) -> Result<Option<usize>> {
@@ -104,6 +103,11 @@ pub trait SchemeBlock {
}
#[allow(unused_variables)]
+ fn xdup(&self, old_id: usize, buf: &[u8], ctx: &CallerCtx) -> Result<Option<OpenResult>> {
+ convert_to_this_scheme_block(self.dup(old_id, buf))
+ }
+
+ #[allow(unused_variables)]
fn read(&self, id: usize, buf: &mut [u8]) -> Result<Option<usize>> {
Err(Error::new(EBADF))
}
@@ -139,32 +143,6 @@ pub trait SchemeBlock {
}
#[allow(unused_variables)]
- fn fmap_old(&self, id: usize, map: &OldMap) -> Result<Option<usize>> {
- Err(Error::new(EBADF))
- }
- #[allow(unused_variables)]
- fn fmap(&self, id: usize, map: &Map) -> Result<Option<usize>> {
- if map.flags.contains(MapFlags::MAP_FIXED) {
- return Err(Error::new(EINVAL));
- }
- self.fmap_old(id, &OldMap {
- offset: map.offset,
- size: map.size,
- flags: map.flags,
- })
- }
-
- #[allow(unused_variables)]
- fn funmap_old(&self, address: usize) -> Result<Option<usize>> {
- Ok(Some(0))
- }
-
- #[allow(unused_variables)]
- fn funmap(&self, address: usize, length: usize) -> Result<Option<usize>> {
- Ok(Some(0))
- }
-
- #[allow(unused_variables)]
fn fpath(&self, id: usize, buf: &mut [u8]) -> Result<Option<usize>> {
Err(Error::new(EBADF))
}
@@ -203,4 +181,14 @@ pub trait SchemeBlock {
fn close(&self, id: usize) -> Result<Option<usize>> {
Err(Error::new(EBADF))
}
+
+ #[allow(unused_variables)]
+ fn mmap_prep(&self, id: usize, offset: u64, size: usize, flags: MapFlags) -> Result<Option<usize>> {
+ Err(Error::new(EOPNOTSUPP))
+ }
+
+ #[allow(unused_variables)]
+ fn munmap(&self, id: usize, offset: u64, size: usize, flags: MunmapFlags) -> Result<Option<usize>> {
+ Err(Error::new(EOPNOTSUPP))
+ }
}
diff --git a/vendor/redox_syscall/src/scheme/scheme_block_mut.rs b/vendor/redox_syscall/src/scheme/scheme_block_mut.rs
index 1fae3a0e5..fd2c59069 100644
--- a/vendor/redox_syscall/src/scheme/scheme_block_mut.rs
+++ b/vendor/redox_syscall/src/scheme/scheme_block_mut.rs
@@ -1,17 +1,20 @@
use core::{mem, slice};
+use crate::CallerCtx;
+use crate::OpenResult;
use crate::data::*;
use crate::error::*;
use crate::flag::*;
use crate::number::*;
-use crate::scheme::str_from_raw_parts;
+use crate::scheme::*;
pub trait SchemeBlockMut {
fn handle(&mut self, packet: &Packet) -> Option<usize> {
let res = match packet.a {
SYS_OPEN => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } {
- self.open(path, packet.d, packet.uid, packet.gid)
- } else {
+ convert_in_scheme_handle_block(packet, self.xopen(path, packet.d, &CallerCtx::from_packet(&packet)))
+ }
+ else {
Err(Error::new(EINVAL))
},
SYS_RMDIR => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } {
@@ -25,7 +28,7 @@ pub trait SchemeBlockMut {
Err(Error::new(EINVAL))
},
- SYS_DUP => self.dup(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }),
+ SYS_DUP => convert_in_scheme_handle_block(packet, self.xdup(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }, &CallerCtx::from_packet(&packet))),
SYS_READ => self.read(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }),
SYS_WRITE => self.write(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }),
SYS_LSEEK => self.seek(packet.b, packet.c as isize, packet.d).map(|o| o.map(|o| o as usize)),
@@ -33,18 +36,6 @@ pub trait SchemeBlockMut {
SYS_FCHOWN => self.fchown(packet.b, packet.c as u32, packet.d as u32),
SYS_FCNTL => self.fcntl(packet.b, packet.c, packet.d),
SYS_FEVENT => self.fevent(packet.b, EventFlags::from_bits_truncate(packet.c)).map(|f| f.map(|f| f.bits())),
- SYS_FMAP_OLD => if packet.d >= mem::size_of::<OldMap>() {
- self.fmap_old(packet.b, unsafe { &*(packet.c as *const OldMap) })
- } else {
- Err(Error::new(EFAULT))
- },
- SYS_FMAP => if packet.d >= mem::size_of::<Map>() {
- self.fmap(packet.b, unsafe { &*(packet.c as *const Map) })
- } else {
- Err(Error::new(EFAULT))
- },
- SYS_FUNMAP_OLD => self.funmap_old(packet.b),
- SYS_FUNMAP => self.funmap(packet.b, packet.c),
SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }),
SYS_FRENAME => if let Some(path) = unsafe { str_from_raw_parts(packet.c as *const u8, packet.d) } {
self.frename(packet.b, path, packet.uid, packet.gid)
@@ -69,6 +60,10 @@ pub trait SchemeBlockMut {
Err(Error::new(EFAULT))
},
SYS_CLOSE => self.close(packet.b),
+
+ KSMSG_MMAP_PREP => self.mmap_prep(packet.b, u64::from(packet.uid) | (u64::from(packet.gid) << 32), packet.c, MapFlags::from_bits_truncate(packet.d)),
+ KSMSG_MUNMAP => self.munmap(packet.b, u64::from(packet.uid) | (u64::from(packet.gid) << 32), packet.c, MunmapFlags::from_bits_truncate(packet.d)),
+
_ => Err(Error::new(ENOSYS))
};
@@ -81,6 +76,10 @@ pub trait SchemeBlockMut {
fn open(&mut self, path: &str, flags: usize, uid: u32, gid: u32) -> Result<Option<usize>> {
Err(Error::new(ENOENT))
}
+ #[allow(unused_variables)]
+ fn xopen(&mut self, path: &str, flags: usize, ctx: &CallerCtx) -> Result<Option<OpenResult>> {
+ convert_to_this_scheme_block(self.open(path, flags, ctx.uid, ctx.gid))
+ }
#[allow(unused_variables)]
fn chmod(&mut self, path: &str, mode: u16, uid: u32, gid: u32) -> Result<Option<usize>> {
@@ -104,6 +103,11 @@ pub trait SchemeBlockMut {
}
#[allow(unused_variables)]
+ fn xdup(&mut self, old_id: usize, buf: &[u8], ctx: &CallerCtx) -> Result<Option<OpenResult>> {
+ convert_to_this_scheme_block(self.dup(old_id, buf))
+ }
+
+ #[allow(unused_variables)]
fn read(&mut self, id: usize, buf: &mut [u8]) -> Result<Option<usize>> {
Err(Error::new(EBADF))
}
@@ -139,32 +143,6 @@ pub trait SchemeBlockMut {
}
#[allow(unused_variables)]
- fn fmap_old(&mut self, id: usize, map: &OldMap) -> Result<Option<usize>> {
- Err(Error::new(EBADF))
- }
- #[allow(unused_variables)]
- fn fmap(&mut self, id: usize, map: &Map) -> Result<Option<usize>> {
- if map.flags.contains(MapFlags::MAP_FIXED) {
- return Err(Error::new(EINVAL));
- }
- self.fmap_old(id, &OldMap {
- offset: map.offset,
- size: map.size,
- flags: map.flags,
- })
- }
-
- #[allow(unused_variables)]
- fn funmap_old(&mut self, address: usize) -> Result<Option<usize>> {
- Ok(Some(0))
- }
-
- #[allow(unused_variables)]
- fn funmap(&mut self, address: usize, length: usize) -> Result<Option<usize>> {
- Ok(Some(0))
- }
-
- #[allow(unused_variables)]
fn fpath(&mut self, id: usize, buf: &mut [u8]) -> Result<Option<usize>> {
Err(Error::new(EBADF))
}
@@ -203,4 +181,14 @@ pub trait SchemeBlockMut {
fn close(&mut self, id: usize) -> Result<Option<usize>> {
Err(Error::new(EBADF))
}
+
+ #[allow(unused_variables)]
+ fn mmap_prep(&mut self, id: usize, offset: u64, size: usize, flags: MapFlags) -> Result<Option<usize>> {
+ Err(Error::new(EOPNOTSUPP))
+ }
+
+ #[allow(unused_variables)]
+ fn munmap(&mut self, id: usize, offset: u64, size: usize, flags: MunmapFlags) -> Result<Option<usize>> {
+ Err(Error::new(EOPNOTSUPP))
+ }
}
diff --git a/vendor/redox_syscall/src/scheme/scheme_mut.rs b/vendor/redox_syscall/src/scheme/scheme_mut.rs
index b364b62aa..2eea4dcbc 100644
--- a/vendor/redox_syscall/src/scheme/scheme_mut.rs
+++ b/vendor/redox_syscall/src/scheme/scheme_mut.rs
@@ -1,17 +1,20 @@
use core::{mem, slice};
+use crate::CallerCtx;
+use crate::OpenResult;
use crate::data::*;
use crate::error::*;
use crate::flag::*;
use crate::number::*;
-use crate::scheme::str_from_raw_parts;
+use crate::scheme::*;
pub trait SchemeMut {
fn handle(&mut self, packet: &mut Packet) {
let res = match packet.a {
SYS_OPEN => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } {
- self.open(path, packet.d, packet.uid, packet.gid)
- } else {
+ convert_in_scheme_handle(packet, self.xopen(path, packet.d, &CallerCtx::from_packet(&packet)))
+ }
+ else {
Err(Error::new(EINVAL))
},
SYS_RMDIR => if let Some(path) = unsafe { str_from_raw_parts(packet.b as *const u8, packet.c) } {
@@ -25,7 +28,7 @@ pub trait SchemeMut {
Err(Error::new(EINVAL))
},
- SYS_DUP => self.dup(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }),
+ SYS_DUP => convert_in_scheme_handle(packet, self.xdup(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }, &CallerCtx::from_packet(&packet))),
SYS_READ => self.read(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }),
SYS_WRITE => self.write(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }),
SYS_LSEEK => self.seek(packet.b, packet.c as isize, packet.d).map(|o| o as usize),
@@ -33,18 +36,6 @@ pub trait SchemeMut {
SYS_FCHOWN => self.fchown(packet.b, packet.c as u32, packet.d as u32),
SYS_FCNTL => self.fcntl(packet.b, packet.c, packet.d),
SYS_FEVENT => self.fevent(packet.b, EventFlags::from_bits_truncate(packet.c)).map(|f| f.bits()),
- SYS_FMAP_OLD => if packet.d >= mem::size_of::<OldMap>() {
- self.fmap_old(packet.b, unsafe { &*(packet.c as *const OldMap) })
- } else {
- Err(Error::new(EFAULT))
- },
- SYS_FMAP => if packet.d >= mem::size_of::<Map>() {
- self.fmap(packet.b, unsafe { &*(packet.c as *const Map) })
- } else {
- Err(Error::new(EFAULT))
- },
- SYS_FUNMAP_OLD => self.funmap_old(packet.b),
- SYS_FUNMAP => self.funmap(packet.b, packet.c),
SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }),
SYS_FRENAME => if let Some(path) = unsafe { str_from_raw_parts(packet.c as *const u8, packet.d) } {
self.frename(packet.b, path, packet.uid, packet.gid)
@@ -69,6 +60,10 @@ pub trait SchemeMut {
Err(Error::new(EFAULT))
},
SYS_CLOSE => self.close(packet.b),
+
+ KSMSG_MMAP_PREP => self.mmap_prep(packet.b, u64::from(packet.uid) | (u64::from(packet.gid) << 32), packet.c, MapFlags::from_bits_truncate(packet.d)),
+ KSMSG_MUNMAP => self.munmap(packet.b, u64::from(packet.uid) | (u64::from(packet.gid) << 32), packet.c, MunmapFlags::from_bits_truncate(packet.d)),
+
_ => Err(Error::new(ENOSYS))
};
@@ -81,6 +76,10 @@ pub trait SchemeMut {
fn open(&mut self, path: &str, flags: usize, uid: u32, gid: u32) -> Result<usize> {
Err(Error::new(ENOENT))
}
+ #[allow(unused_variables)]
+ fn xopen(&mut self, path: &str, flags: usize, ctx: &CallerCtx) -> Result<OpenResult> {
+ convert_to_this_scheme(self.open(path, flags, ctx.uid, ctx.gid))
+ }
#[allow(unused_variables)]
fn chmod(&mut self, path: &str, mode: u16, uid: u32, gid: u32) -> Result<usize> {
@@ -104,6 +103,11 @@ pub trait SchemeMut {
}
#[allow(unused_variables)]
+ fn xdup(&mut self, old_id: usize, buf: &[u8], ctx: &CallerCtx) -> Result<OpenResult> {
+ convert_to_this_scheme(self.dup(old_id, buf))
+ }
+
+ #[allow(unused_variables)]
fn read(&mut self, id: usize, buf: &mut [u8]) -> Result<usize> {
Err(Error::new(EBADF))
}
@@ -139,32 +143,6 @@ pub trait SchemeMut {
}
#[allow(unused_variables)]
- fn fmap_old(&mut self, id: usize, map: &OldMap) -> Result<usize> {
- Err(Error::new(EBADF))
- }
- #[allow(unused_variables)]
- fn fmap(&mut self, id: usize, map: &Map) -> Result<usize> {
- if map.flags.contains(MapFlags::MAP_FIXED) {
- return Err(Error::new(EINVAL));
- }
- self.fmap_old(id, &OldMap {
- offset: map.offset,
- size: map.size,
- flags: map.flags,
- })
- }
-
- #[allow(unused_variables)]
- fn funmap_old(&mut self, address: usize) -> Result<usize> {
- Ok(0)
- }
-
- #[allow(unused_variables)]
- fn funmap(&mut self, address: usize, length: usize) -> Result<usize> {
- Ok(0)
- }
-
- #[allow(unused_variables)]
fn fpath(&mut self, id: usize, buf: &mut [u8]) -> Result<usize> {
Err(Error::new(EBADF))
}
@@ -203,4 +181,14 @@ pub trait SchemeMut {
fn close(&mut self, id: usize) -> Result<usize> {
Err(Error::new(EBADF))
}
+
+ #[allow(unused_variables)]
+ fn mmap_prep(&mut self, id: usize, offset: u64, size: usize, flags: MapFlags) -> Result<usize> {
+ Err(Error::new(EOPNOTSUPP))
+ }
+
+ #[allow(unused_variables)]
+ fn munmap(&mut self, id: usize, offset: u64, size: usize, flags: MunmapFlags) -> Result<usize> {
+ Err(Error::new(EOPNOTSUPP))
+ }
}
diff --git a/vendor/redox_syscall/src/tests.rs b/vendor/redox_syscall/src/tests.rs
index fdff89b4b..06a3c011b 100644
--- a/vendor/redox_syscall/src/tests.rs
+++ b/vendor/redox_syscall/src/tests.rs
@@ -287,32 +287,6 @@ fn nanosleep() {
//TODO: physunmap
-#[test]
-fn pipe2() {
- let mut fds = [0, 0];
- assert_eq!(dbg!(crate::pipe2(&mut fds, crate::O_CLOEXEC)), Ok(0));
- assert_ne!(dbg!(fds), [0, 0]);
-
- {
- let mut buf = [0; 256];
- for i in 0..buf.len() {
- buf[i] = i as u8;
- }
- assert_eq!(dbg!(crate::write(fds[1], &buf)), Ok(buf.len()));
- }
-
- {
- let mut buf = [0; 256];
- assert_eq!(dbg!(crate::read(fds[0], &mut buf)), Ok(buf.len()));
- for i in 0..buf.len() {
- assert_eq!(buf[i], i as u8);
- }
- }
-
- assert_eq!(dbg!(crate::close(fds[0])), Ok(0));
- assert_eq!(dbg!(crate::close(fds[1])), Ok(0));
-}
-
//TODO: read
#[test]
diff --git a/vendor/rustix-0.37.6/.cargo-checksum.json b/vendor/rustix-0.37.6/.cargo-checksum.json
deleted file mode 100644
index 4145db8aa..000000000
--- a/vendor/rustix-0.37.6/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"CODE_OF_CONDUCT.md":"f210602311e3f74b32f46237fd55f4ce36d798e85e3db1432ec667f63a7ffc44","CONTRIBUTING.md":"fb570c76cf924cd75b77bed52b0dbe1e87ce224dc3428c48d98301710dcc331e","COPYRIGHT":"377c2e7c53250cc5905c0b0532d35973392af16ffb9596a41d99d202cf3617c9","Cargo.toml":"fa9a45195a5d4c17b332061c4d236dc6ab2799e19467612efb062ed21e94907e","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-Apache-2.0_WITH_LLVM-exception":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","ORG_CODE_OF_CONDUCT.md":"a62b69bf86e605ee1bcbb2f0a12ba79e4cebb6983a7b6491949750aecc4f2178","README.md":"158b3959b00e6c1536a767014c0e916a6a063a5b36d693e9e3c93aac901ccd55","SECURITY.md":"4d75afb09dd28eb5982e3a1f768ee398d90204669ceef3240a16b31dcf04148a","benches/mod.rs":"55b71073e5681b309bc4f439435ac05d1e052bba2ea6accf05bca9bf496d4bd0","build.rs":"9ea13f3871d03ae28f6abc9b1aa73667a3fd56063793a79545221cb2cbf1ad30","src/backend/libc/c.rs":"e91631918772a752429b53fb7674f288e27af0d133a583bd9d50af7af7802328","src/backend/libc/conv.rs":"a94f5937ad41d7c13e4554481ea1d8ac10c2954b22e55ca0ccd93dedaeb6f1d6","src/backend/libc/fs/dir.rs":"96482bacfeef73d7da7d370750e821ce2ed85d61ff47f8d98ac27dc8e54c0e0d","src/backend/libc/fs/inotify.rs":"4a1a3c0504982d2743a9c83e4cea3ec81ba0777d574ddf8ce76af67f29d0b9a4","src/backend/libc/fs/makedev.rs":"06513503ffdd35276eb7c3aed437c2362c32dd224d8c06df589bce28ad2e68b4","src/backend/libc/fs/mod.rs":"d8765bfbbd3c0f02c278a7bfef547607c7085ae14704824cc2fe7eaa64430e8c","src/backend/libc/fs/syscalls.rs":"0d1ad473a6607eca1d92e3a35d10c9c672becb052857aa9fec5a8d3371e97a31","src/backend/libc/fs/types.rs":"8a79b8532009b23aaca78446a48322be092d1bf17e3868e8328853bad6ba2fb6","src/backend/libc/io/epoll.rs":"0e95f0c887938ca2014492f26d282f756c9f2d4111e58b516830cb98bd8d3b1b","src/backend/libc/io/errno.rs":"8c6491590339a21c732b325904ece24ac39b1cd1a2b04728a9ff90ec904c01aa","src/backend/libc/io/io_slice.rs":"34da1bcc17993318fa93b7e71ff36116044ac12a031963710af84c3ed1bc443a","src/backend/libc/io/mod.rs":"a76e0071a887a6bdb1a3edc4887f91889d4beab1426e73417958257467f3c602","src/backend/libc/io/poll_fd.rs":"5ce78059ec307ec6ffbe02f2beb15f889bf652f0258f4531931062d507a3389e","src/backend/libc/io/syscalls.rs":"c85270ed0f7a6cb4258ff85611f86497c3e14ba1de1849b1203f8bcaa48202c7","src/backend/libc/io/types.rs":"fa3d65018b9feba2eef280f1ae739d85753742cdb602643d5920ff4c0f18bff7","src/backend/libc/io/windows_syscalls.rs":"741f524b384d59e703b278739563ab04273dbb48c062349353dd9b7cf9ed2332","src/backend/libc/io_lifetimes.rs":"eebc6adc10593933e9ab14c59d29793f4ec6e4403a00bbcaaf3ee81373ae924d","src/backend/libc/io_uring/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/libc/io_uring/syscalls.rs":"0f7ffc079f511b200d536e348d6c6945eeb4908db721e5ca0db6cc5fe96eccc4","src/backend/libc/mm/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/libc/mm/syscalls.rs":"5141375b2b678c66a165de74a54e01bdb5efae8a81a38891f00da7206e686927","src/backend/libc/mm/types.rs":"bdadba2113f2a88a2b856497d411aa18eb0c7086361f72c2853ea8b09b006841","src/backend/libc/mod.rs":"8aad42f4cc53bfe9952101a314cd89d8c8600c523d699a43de8f64f48f3e4caf","src/backend/libc/net/addr.rs":"93b3f86d737c1c643663acf9f335e822cad5574067f63bda3c58af918dd1e57b","src/backend/libc/net/ext.rs":"99e1b5023b152ab278b281e26006e4ed6916d303f5d9a24d94f02a2195a25243","src/backend/libc/net/mod.rs":"772c788c60141e41044b59c4812c4208f52838da1effe1d476ab1d99304d9f9d","src/backend/libc/net/read_sockaddr.rs":"d7a98c80d2e7b47663db596a7f65980b21983c514eff54b1a8323e14164fe40d","src/backend/libc/net/send_recv.rs":"55f0ce6df7aa93f359aec2131fb3f6946d1b086e7172c096501611d0662da907","src/backend/libc/net/syscalls.rs":"f40e55d8ef9acae7834ba1bc54ff02b08d3f57fe0694bb69b5124b24cbaf1a78","src/backend/libc/net/types.rs":"b7097d3c998eb0bcb31205f69ba1f73d4c2537e706eda6bd8548d564377070af","src/backend/libc/net/write_sockaddr.rs":"33c3d7304713cb63f8fa398f5f7c084fc1d9fbb6907dd19902a90e8ec64ad41f","src/backend/libc/offset.rs":"37056027c114fab9f4054803b95d2efbe3d1c663936def3498df0e671664697a","src/backend/libc/param/auxv.rs":"7d71f224f7d9c547b6b5e1425cad03466328b7b8ad2a62f49d9e29e075061e43","src/backend/libc/param/mod.rs":"5234b8f1bcb886cca6ea003d411d75eaeebe58deedd80e3441354bf46ed85d4d","src/backend/libc/process/cpu_set.rs":"88ba2fc71dea5b8ae3b1bb3d8e64f7b7aa08882d198695e5f95d5478b6e73e75","src/backend/libc/process/mod.rs":"45a9979d6bc7c669ffe212c55ffbf6ea8f4bdb9a711c894b9e93b52a05e611d7","src/backend/libc/process/syscalls.rs":"8d0a63f224cbbd5e8fe816350a6bc50553073b6b59e86a84f89a52112d5f8c70","src/backend/libc/process/types.rs":"58f8eb2d4cda05924e97145006ac16793307182f3c1ffb5484fd4546513e863a","src/backend/libc/process/wait.rs":"36e84c05ae3a27b96da9521678b72ab004fe37a8b0d092a0b6f810015806c4d2","src/backend/libc/rand/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/libc/rand/syscalls.rs":"21aa7aab15de5ff8e9c50c2c2a4d49cc309be3e97feeb17f875a0a9dc6b5cf44","src/backend/libc/rand/types.rs":"85f72babe82857d4e47067ddc11525ab290208050fb8f5e5190975c0fdda9b7c","src/backend/libc/termios/mod.rs":"63a1e559981848581bbacad2adb567e5eb62d17caa2d8f826e977dc053ce26bb","src/backend/libc/termios/syscalls.rs":"026559db31e470a4409f45a0f2bab5a0941c39b458968c5f6fdf224b653e59a0","src/backend/libc/termios/types.rs":"57e87b2d5ec31203b87137a787daee9bf8f133898d8eb5bb0716c81380d9ac7a","src/backend/libc/thread/mod.rs":"0de5f67a684b9fd7628d3009d2ea5fd51b8770e8b387eed14f59152157844287","src/backend/libc/thread/syscalls.rs":"b016611a1e2fb6af073c485b0a9efa992067b4d2dd6d213d77a731d5108d574f","src/backend/libc/time/mod.rs":"38563ea68829ca5a4b1b0695ac8a5c05718e85bdc88a36dc805efdfce45d3909","src/backend/libc/time/syscalls.rs":"a6668a9005da2e15671d4c917973bc68ef611998c0a584a53343fd5aeadade63","src/backend/libc/time/types.rs":"1ed8de272c573cd9bf10d413be8b47029e3461fe39ee33168f4442cfbf2ae128","src/backend/libc/weak.rs":"cb7dfb5c2ad37d7a5be6a2aa99a28969559493ca5b649753484e0b1fd978e410","src/backend/libc/winsock_c.rs":"addce03c242c70d10411fb9728c743bdc3b635107bd58aabbb360f2379127064","src/backend/linux_raw/arch/inline/aarch64.rs":"67011427b3cecd29ee716113d952e70d63574c96d1d3ea3c75d46250bde9ca44","src/backend/linux_raw/arch/inline/arm.rs":"7760d51aef17a69a797eb96fd61f7fade0d55bc87ec9a3e77fa6bb6aebaecdbb","src/backend/linux_raw/arch/inline/mips.rs":"d00c84cfdb4e37bdee9a2daa0a7b3298afbb4ebe288702203cb43d9c2617012d","src/backend/linux_raw/arch/inline/mips64.rs":"ab5455c9b2511ba6b67a66873cd8b53bf77471249fd2779d6437ebb4934087b5","src/backend/linux_raw/arch/inline/mod.rs":"48e60ed847f1fe7bcf561d3dd04217589698b576649d17094da98bbfcb826e8a","src/backend/linux_raw/arch/inline/powerpc64.rs":"dcd12314184441f5f7705bea6b829103c7abc9062db366ae5584023a38252a36","src/backend/linux_raw/arch/inline/riscv64.rs":"58a58203e9cac2ed21e4a7b26692c5d56d3c2bcddb3f60a648efd18a02129f3c","src/backend/linux_raw/arch/inline/thumb.rs":"82b88c9a3b6837f28a738cc760fc2403e7014abdb2c35d2bdbc8073235ae2863","src/backend/linux_raw/arch/inline/x86.rs":"459cca47f3300418de9945858ba42009e66e4be3c8da268481f30ae4e815b3db","src/backend/linux_raw/arch/inline/x86_64.rs":"7c893ca306b3b8a5980c525dc5fa23187a0526bc9f7ac637204d88a1d596df5d","src/backend/linux_raw/arch/mod.rs":"2f2e26f5742c302bb44f367ad265de573d89494eae0789fa44b5a39248e354e3","src/backend/linux_raw/arch/outline/aarch64.s":"84f066b6fe3cf25ed61c7aa420408c6d5a0b33a7c91b748ed81e47737567975f","src/backend/linux_raw/arch/outline/arm.s":"fa266bf9f4533da1e96c27c4ae5418c86f44074ac0c6afcff0404738e11365da","src/backend/linux_raw/arch/outline/debug/librustix_outline_aarch64.a":"aa3a37d9ad312881968d40c48bd3c960fb3ac0eba232a5f1979cb809d081c340","src/backend/linux_raw/arch/outline/debug/librustix_outline_arm.a":"9991ea0ccd16a175ef4b82916b6cd4b45cf67f4388eb58567b0a6e520bda3740","src/backend/linux_raw/arch/outline/debug/librustix_outline_mips.a":"b14f87994e526c3f5976487223183b284ffa70e3b4322cece3917033635573a2","src/backend/linux_raw/arch/outline/debug/librustix_outline_mips64.a":"a9200542c6de647e31ba2cf3649490a50904ae66716c1b6c50ac123fac83f68e","src/backend/linux_raw/arch/outline/debug/librustix_outline_powerpc64.a":"355db5c83dda1074636c40fa6fee6564c668c492a71e149bcb444ea896e8167e","src/backend/linux_raw/arch/outline/debug/librustix_outline_riscv64.a":"c4fd54d0fcab2e28b1b18df77a7814b145a4c2d13fc04b937a55bf0abf420227","src/backend/linux_raw/arch/outline/debug/librustix_outline_x86.a":"7ae3635dd3fbc2049e09d4218224e1eaaa4dd2ddd78d3901fb444d481abf2a33","src/backend/linux_raw/arch/outline/debug/librustix_outline_x86_64.a":"039c928213bd0b67c899412084a30eb9a51526e64a01e1901cd4905ef8d7cf6d","src/backend/linux_raw/arch/outline/mips.s":"e265e8fa0b9785a9f2779d6ba70ce982b954b802862b0026dc70fd79b12968bb","src/backend/linux_raw/arch/outline/mips64.s":"c79de202f0eb00e2d9cf1fce2b9a2cabfe4ff2f5cc1476bcfd6c3d139570d447","src/backend/linux_raw/arch/outline/mod.rs":"d97b3657e828a40553677469887b1efab0544812ca592ef359a2d4230a0dd621","src/backend/linux_raw/arch/outline/nr_last.rs":"82d92b9ca8307c19d74ced1ae2c0b31f2a7c5db70fa31fdedb55d38a90601455","src/backend/linux_raw/arch/outline/powerpc64.s":"0847fa3f160846ee02771550667913734ba9773e2221f2279c4f296d6f5b7bd4","src/backend/linux_raw/arch/outline/release/librustix_outline_aarch64.a":"fa8d31702cafb24d9799c162d3319c522892e91c58fbbff2b09950a0fa81b46f","src/backend/linux_raw/arch/outline/release/librustix_outline_arm.a":"0f7c8c5c02d5329d884f800da70aaf6b5b67c14000b12afb708f3e4758aa1f7a","src/backend/linux_raw/arch/outline/release/librustix_outline_mips.a":"c9254760fa993e88662c5e1e8911d994f29e203b37a0fc9b550be193125f5031","src/backend/linux_raw/arch/outline/release/librustix_outline_mips64.a":"224f9ac5196833491bee67fd287a53b7e88111731e2eaaa3ebefba31faea373b","src/backend/linux_raw/arch/outline/release/librustix_outline_powerpc64.a":"1f04e44c3d863bac066520c787444c314f2aa2f8d8d3cae38990ecc008b9b6e1","src/backend/linux_raw/arch/outline/release/librustix_outline_riscv64.a":"beb0eb046d36545a04ad7f264ed1173062f9f85ba7f4215bef64a98f30a74dce","src/backend/linux_raw/arch/outline/release/librustix_outline_x86.a":"691d867358475c701c20b816b99bab2a4c90c3796a302ccaa56d5983be1ba8b2","src/backend/linux_raw/arch/outline/release/librustix_outline_x86_64.a":"434a79197510876c5a49f594e7886c95cf4c15e876c3404ed136846c95d6ee30","src/backend/linux_raw/arch/outline/riscv64.s":"ca5303c0c8af6de1f246d658003e270d4e29d6c68dd90c6eee372d045bdf7305","src/backend/linux_raw/arch/outline/x86.rs":"f7e12a0f3fe8e97acb1ade2c9e61d82542f00ad4d8fe684a8dcd9f30fd9ab5d4","src/backend/linux_raw/arch/outline/x86.s":"4604e3b41161802343e2e4c890fd2042098a901d95893ebe4c436f97fd47cad3","src/backend/linux_raw/arch/outline/x86_64.s":"a530084cd42ad8d4b2d36526f4e04f45a6e29ea49882e2c561ac2eeac16272bf","src/backend/linux_raw/c.rs":"cb66dbed604eefdafd8a8efd277ddad51bb5280c4e26ca0608176abcd6309a52","src/backend/linux_raw/conv.rs":"6731a2d06683575d7ce89eb83ef8a1993ce39125c30703ed8a4a69afc1e7559f","src/backend/linux_raw/elf.rs":"a257fbc3f22e4970605cf72a3b301dc2eaee2f5f1b3b0ea434fa192db3c3164e","src/backend/linux_raw/fs/dir.rs":"d54842a373968da54bdae73e10ccab7a8bc19c1bc75b6dca2bb70818c5b275ea","src/backend/linux_raw/fs/inotify.rs":"11c058269bc96972ad7bdeaa3a938a8b51b4264d9f80d7dcf0518ac9314a261d","src/backend/linux_raw/fs/makedev.rs":"c6b4505c4bcbbc2460e80f3097eb15e2c8ef38d6c6e7abd78e39c53c372139e2","src/backend/linux_raw/fs/mod.rs":"e22bf30f312f6a05f1e79f7834c33a3c9821514da05fa4786fc31867203a4c74","src/backend/linux_raw/fs/syscalls.rs":"6900d438f535e586ae8e396aeb52426e1040e4397c942546edada6ff0c121b54","src/backend/linux_raw/fs/types.rs":"a244c59670d65442143b875cccc219bacd0739d35b7f2c1731b15d2c4bf2e900","src/backend/linux_raw/io/epoll.rs":"75de5fe04ed8f85a345ae5b54dc6106268bc05817a4e4abe9cf0bca08e2b1fb3","src/backend/linux_raw/io/errno.rs":"ac32725b1686d42b02d18363c4c44a42ea8c6a20b2422c1fea8f8c39f633f7c4","src/backend/linux_raw/io/io_slice.rs":"5ba992f3fe701184841006588b35f2452156b73e3bef9e07460e4b1f61ac889f","src/backend/linux_raw/io/mod.rs":"6ea805b91d571217c9649364121d0824bbdf4635b36c9150e5968fbeb75c0892","src/backend/linux_raw/io/poll_fd.rs":"9f5a15c80094cc3334acd171c0621d033b44d5d9a987a57acbdcd62cb17d871b","src/backend/linux_raw/io/syscalls.rs":"31bc1a2d74d574923b50aaed3d0d10c2892e7bf6ebf0ccc9bebb42be96b460a0","src/backend/linux_raw/io/types.rs":"11a677499b6b0491f4088f9f87574fe40134bce8042eac0f207b7df905a1f47e","src/backend/linux_raw/io_uring/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/linux_raw/io_uring/syscalls.rs":"2522327e229d85ce207546b802f63fcad49a0ce41b7b881e13a1c2637fdb6095","src/backend/linux_raw/mm/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/linux_raw/mm/syscalls.rs":"647c1846793c386f6babae898686604a4808344ec3e2d1e71071bbfd04079357","src/backend/linux_raw/mm/types.rs":"a5d0ea04a85df5e196d68a8524c4325963c7b2ded3d7d48713c8e855273b60d4","src/backend/linux_raw/mod.rs":"87423ad0e8280081a548e8182139d9e5960258d469951516ca4e8029953daeee","src/backend/linux_raw/net/addr.rs":"9c2b4bc0836618f4b7d997892e5b3980e454bba72fe4d82205d7553ba74ec228","src/backend/linux_raw/net/mod.rs":"4ffd3f6f9cad722e4c29b9bad4912a69f521d737b9e637599a1c60436651d4ae","src/backend/linux_raw/net/read_sockaddr.rs":"0357ae643c384b08578aa0b148ac9b236953da9b36b2e387a40d5b87ae9eccef","src/backend/linux_raw/net/send_recv.rs":"42834cf8148abd02021115a61d57b23bb323dd8ad0d1b9a91d17fb8f7defab01","src/backend/linux_raw/net/syscalls.rs":"aedc536ac96d32bf6e15a9f02f3fe7a1bf48195e9af3afd0a0124636ece8f8b9","src/backend/linux_raw/net/types.rs":"c61b689d7f4b9b68d065935d70926d47b5ac7246b2fbe4f20d144a0c2f417fc2","src/backend/linux_raw/net/write_sockaddr.rs":"ec0bf20a354cb86e2b5646bfc79297a378f11fcdf5641c16e4dd13e305011dc6","src/backend/linux_raw/param/auxv.rs":"9ed73ebd83dd9001dfdecd19b813c6845dad142f79de286993eb520acc7016bc","src/backend/linux_raw/param/libc_auxv.rs":"79fd1b7452f87382fb3a9c8fa892c5adbcc24d3b505bd9ea73e17d37494e749a","src/backend/linux_raw/param/mod.rs":"db21fc1b0ea5568b8649890fa38a878bfcdcf7398f6cf1640176b37bcc6ce990","src/backend/linux_raw/param/mustang_auxv.rs":"016a691236064a9cc28688d4ff5dbd0e37dccfc07b25b943b47762ba1da33b83","src/backend/linux_raw/process/cpu_set.rs":"a333938a4356d117199bf4078688f0a9b876dc65da1bbff7649482f4f0180813","src/backend/linux_raw/process/mod.rs":"fb393c70a9c63ef9a6bf1fb5a2dc94f07d6b0b6987cc5231c15c607015dafd68","src/backend/linux_raw/process/syscalls.rs":"a9c115ae09def33321f266ab3f85cf19fa72fc3b9f425aaa8c517b6da0bce04b","src/backend/linux_raw/process/types.rs":"fba10dc8ca9eaf4d481cb82bd1540cf5c05620533c44f917c09a22ea55ef408c","src/backend/linux_raw/process/wait.rs":"d6c37b9ebca16b447b0bc0d1be4b56486619618e8fc613d10ff9c0ccff13c7ac","src/backend/linux_raw/rand/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/linux_raw/rand/syscalls.rs":"b1d8b2fea0c792bd1e7c24ee59429d178dc0ad442ac817b12c7abcb38d71497b","src/backend/linux_raw/rand/types.rs":"271416d5241d70932b8a17f3b67eefd1b9c360f217f807de3d73192e9b620552","src/backend/linux_raw/reg.rs":"f9ab26b045150894b98c741f9e80ac2734bf7598f5cf166ab080938febe7af20","src/backend/linux_raw/runtime/mod.rs":"b2cae8cce3822c3c92942f06ea0b68464040dcac33c6f0f7ee392c6269993347","src/backend/linux_raw/runtime/syscalls.rs":"6488160051a991e6d385abbf8a08ccd6498acf525906d512b3f89bf3a33fca6a","src/backend/linux_raw/runtime/tls.rs":"2913858a8fe4696f9c3f9a4921f776258a6d1c54b471f813471d57db23fd22ee","src/backend/linux_raw/termios/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/linux_raw/termios/syscalls.rs":"e4476718035ff7520f9014aa0e99954ec741c0dd114ec50ff4900591ee067132","src/backend/linux_raw/termios/types.rs":"5cee3735957db2fdaab341a0c58e438305d6402dc7d23622f4999934d4511b5f","src/backend/linux_raw/thread/futex.rs":"e4ca5be060c52538b97df3781d84e2eb4d8241a7f647b2874412bc0fe6061efa","src/backend/linux_raw/thread/mod.rs":"f7132a68c9db1b4a796781b9e8d0ac268a1ddb713e510bfd43425564ec9b39c4","src/backend/linux_raw/thread/syscalls.rs":"936e0a02027b8f252538781eea7fb9f35bfd23bdd50a1f099172dac2da7d3fde","src/backend/linux_raw/time/mod.rs":"672724f55b7b7be6a7452bb1cc2d28b5f0aaa840a2856fe363acce624e1beefc","src/backend/linux_raw/time/syscalls.rs":"777d22d6e3ab7c5fe1d5921a91644543173bb4f783fd308b5886fca68500f98c","src/backend/linux_raw/time/types.rs":"865d968a6d2903344982f94c69868031cd1fea582318659ca4c69a11d8a53e33","src/backend/linux_raw/vdso.rs":"3305a5f3c2846440161fa69dde3aafb9f36b361ae2ddae1d12cd54503b0657cf","src/backend/linux_raw/vdso_wrappers.rs":"b7e6b75bf25b0143ec471a7e0af3fd4f4125dcbc6d2c9c0957ec29c428d9d9c5","src/backend/linux_raw/weak.rs":"72ddca9849461a725e5ccd6e2190c12fb9e296c8b8a47533acb9c8cd4f9a2b07","src/const_assert.rs":"ff08ab91f11f2ad29883096f4468bd9a65060d5a9e6681e9282bb081f8bdac27","src/cstr.rs":"976027b6c5cf2c82e369ab7ad9e97fa79d7823ded929c1816f37f97134e51fec","src/ffi/mod.rs":"1990dae8190991142bef24220f02b99c96c5bfa7dda2a7974d9dcac265d58945","src/fs/abs.rs":"16798a8a24be20500bb56a01e05ca4eeccd6f3adb0b3a4bbf1a0369a8e546104","src/fs/at.rs":"035238b63a31aa32cfc7e9ff6bb577e7075dfbeb97d22e67430b7a2bf5432e22","src/fs/constants.rs":"f0153ba1107267e58ee605fdbbeb80e5df56715d8e79c9d6536efe53608b729b","src/fs/copy_file_range.rs":"d3b644374390d482b2ff749a2459458872b57d0dcf9670368739b7833509a7c2","src/fs/cwd.rs":"b2d7fbb27e23704e3367ede9916cc233f76d912be21c2aee8a635eeca627977f","src/fs/dir.rs":"347a52f4ca9ac6321c52e802e97ec90d1b4c62ec955c8996fc17f8f5aed69966","src/fs/fadvise.rs":"beef66ebe1310fb92628240b2cde68f744c78e50f6ff61bb1404bd4868d9cae8","src/fs/fcntl.rs":"43e191732d72a9513f4fbecfee8cbe45b0b1ed0d0097398681a03a8fe2596495","src/fs/fcntl_apple.rs":"07f07b2ac75dc28bc9e08200f72eb95550a87ff3d69c1204f49ecb63a0c4fd20","src/fs/fcopyfile.rs":"ec95929cbbe02cf49233a785e5238931bb107b7903cc5bc95e4231de960995f2","src/fs/fd.rs":"25296739f1063c0e2b4701ff9ce078949a58f62029f57a93cc415d2ded296100","src/fs/file_type.rs":"fefd865f91011f66126213b0994773d99e373b468c31e866002228c98c64ad85","src/fs/getpath.rs":"28f6970fc1bbc37bb35c84724b59eac436ea7407a4522e18c2bdacb1fdd2edd9","src/fs/makedev.rs":"a56b9fa872e5fbf0f358ca14625b050077f45e8e265ba0c8eaeea22c421e0f92","src/fs/memfd_create.rs":"3f1d809e81fe479a82a454a04ea1219a11969d75d0c8b9ddacb09c630a9af896","src/fs/mod.rs":"d396b665d23553f32d148331184df18dd84496979b9e257637881b31e2523a5d","src/fs/mount.rs":"8ab26dcb422825bbd2df2e1f68e6b4f7cf08ce11387c688442ee1b4683b33d4f","src/fs/openat2.rs":"4a95c15dab533a41201b5fa25c8a212956b7571d58cad696bdaf45af8aef96db","src/fs/raw_dir.rs":"d32627abded4cdafa083c579d6f4d9c42e41d2a82749a34e70225e55ff76d246","src/fs/sendfile.rs":"ac053f03608656bb675228ba61079b774498c0233d17e5816ac72538bb12b70e","src/fs/statx.rs":"c7b56787aa0579cfcde230952d87b42256e8b6e85c2da68f78cf31f17ddf5514","src/fs/sync.rs":"a3b23543834281f347b0f873bd38154d31d404871188ac08f2b20b9196234cfd","src/io/close.rs":"c59bf90183625da1b1e87975739469440dcddc7b5b2b6ff3a6fd12b2d399a783","src/io/dup.rs":"92e2121d7fcef657a2bce546dafc9635f97c628c53bb971e8ee08255b77eea80","src/io/errno.rs":"733f8e9246a319db137740e8dca29d7b3c7474a715e066568b1dc82f0944f692","src/io/eventfd.rs":"163aebe29b5a0e21dd9d121d39c71e82bc6569a4bb658026cfef8ee61809066b","src/io/fcntl.rs":"fe73d5593c011b6ac851e608e1776c4483924e19a9f82f5fc8759c498a4e483a","src/io/fd/mod.rs":"a1eab9ce9a2c4454053afdfd3f3705e4cb971e94cc453e4f13690f2f0d83dc2c","src/io/fd/owned.rs":"b3d1ac775461b9206f36df62495604a48820c0284276200101fd1847b0e9e756","src/io/fd/raw.rs":"9bcd00be7df3d9f4e6c49ca2d18ef25aee3d6f0ed5ee6b73df5a9beacefb6031","src/io/ioctl.rs":"98f77d30ca4eebc16454c5307ca4afab2dfdb91b8e90e54d9300f79a2f1ac814","src/io/is_read_write.rs":"072b5ea6ddb2339fc6c7e90dfc5a0a5354d926d0f2ac4df06cadafe823425c47","src/io/kqueue.rs":"b92106e4b1cd2582f8fc37a1ec0dd0aa00b320c8f5b1b91cb487e3620485cbc3","src/io/mod.rs":"646b358718353d7380718a09e87312abfce4d1d48accf6b42c941617f60ca5eb","src/io/pipe.rs":"8f8e3c3557edf13a1e4f05a8a9c2aa5e9ee97e393e02eacc8e8bf60e73e32047","src/io/poll.rs":"41dab55365df215739dcf71815bfc4c2344828d8056ab200564f75210dbc56bd","src/io/port.rs":"8be17096cdfd2425bb2f800d129913e2ed2032c02049d45b7dcda8d4189b1af2","src/io/procfs.rs":"d7b21900416ca54b9bbe683257dd4da1857f56edc25dd78a954dbafed4914ab9","src/io/read_write.rs":"263818a606de191320524972f7c9c22b6f79ddc59c5b0a443b4b726853b00b9f","src/io/seek_from.rs":"d7616a45e8a449df28b075ddded4d7c95d6c4575d6fe0cf0ca7b6625e9dc7eeb","src/io/stdio.rs":"6462b94d1ccd8cff38c6fb6b04199fa9decca91aca63287b0136539d73107bd5","src/io_uring.rs":"26048678d3862cee58bb75e43ad2dc8cae0b9bc79adcd8913cda1fa42af77efd","src/lib.rs":"a221853e71fca50cb6b0b066e3ee8f626cac1fce61fc297458e15bbc8fa1d835","src/mm/madvise.rs":"cdc61b39d8abeea184575ca21e14483c335ce373a86007439fad6e72f58e4e24","src/mm/mmap.rs":"ac25cf39d215c93b539f20a60b107ea15dc8a0faa8d25e0de05d1415e698c742","src/mm/mod.rs":"1a46082151c2ef319667078923df74b01d4a94d25d3777083775179bda8bf3bf","src/mm/msync.rs":"a7f61abe4cb5e96f95ae8229c62b9ecc08382080ed99d76278be7001cfcf82f2","src/mm/userfaultfd.rs":"8073443bd181ff0b3ba4d0b1ae67370b4864035a0c8b4898cd709dc47c518ae7","src/net/addr.rs":"6fce66cd0ccac3bcc2339f32faf2ed1bac94a6d8824acb55bffdfaa43090675a","src/net/ip.rs":"080dd17c44b395b46b0d9e70da76f376540f92ece65f79e3d242c0a272d3b451","src/net/mod.rs":"03e600b3890f94e06f10120ca8dc9251920eec4aabe7d983d24e800faa079aa7","src/net/send_recv.rs":"f1fb0b9be750b1949b54054b3195904123cfb96f2ee0ebcedef86fc7175c63e9","src/net/socket.rs":"c510a2b619b8c91c9ee15b1a9b29d6fe89a97e83143a38bea017af7522b7e8b9","src/net/socket_addr_any.rs":"d95c7002972fa98d4133e10ad6c404399494374d568816217edcb9f4fd93aad8","src/net/socketpair.rs":"b005b019f8ae0f022fd0e730dafb258606f1f537e4448078175fc192d002dc81","src/net/sockopt.rs":"dde47b9d5d6de9749bdddb1498920f2f592582b11b508389bf78d0d5f0c4af00","src/net/wsa.rs":"6e546b42f50a851fc833c57cda76cfb347203ed4b0dea574a3d325bf5a2ebf80","src/param/auxv.rs":"988872f9bec2e12f35765ae8963cbb9535d4acaedd4c9a4d07ced6feb70e0aaa","src/param/init.rs":"671d8974f0d9b82e79076d1f4deabe0273a874a329f74b8aad26e07b86791ba3","src/param/mod.rs":"959d6bd6c7abb85e042f86047fb902891c5deb74c550ce21dac96fb9a9f16d36","src/path/arg.rs":"eb45cea7b5b21af36fef130cc02cbbf7fcceb965815b66c95c46979e0cbe2875","src/path/dec_int.rs":"a512618714fc3309253f65de605121c2aa056a780f9ab1de55f5a86469895295","src/path/mod.rs":"513fea21b1ba0226c3c5da769ded06a7cd7abe9f49cec9d165bc62a15da126a8","src/process/chdir.rs":"4c63c351e207b1bbefdd7c001e85fed383d5ac2147894d5a09fbd8b302d7c728","src/process/exit.rs":"79f6c0dd45dca0a2bea919ac920c4a56cea23608a345961e4d027aee6624783c","src/process/id.rs":"f04877bfd49fb8eda89e12ca44f271dfe92c1661f97b304c2dd234671cfbaabc","src/process/kill.rs":"e4b4dcc7e5b2a1e3e68ce03ce9a5dde43108dae4ddbc443488c464194738d06f","src/process/membarrier.rs":"19f42cb66f211e8b23f4586bf29fdfa29c29e4e9169a06f3cc7b54aad4ef94e6","src/process/mod.rs":"17abc24217e8b48d623d02b1a2955e6b62aab496362ba312122caf90500576a1","src/process/pidfd.rs":"88517949097414b77540b1c0801bdd034c28667b9386c0676cdaa1b637129ffa","src/process/prctl.rs":"7f4f2870eddcb19829b29ba139492d0f8b5006a42047f4e733e105b82afaef8b","src/process/priority.rs":"ddfdeda52acbca8566dd3517f167f7e29e3daa7e71c3ebae4183f8cf4f309b0a","src/process/procctl.rs":"4d48638f4d39a20aa073798778f431bbb944ed184777960ef1f80bebbc7fc72b","src/process/rlimit.rs":"97c1e41533c74b5b71e471d1ed0a83a847b804da9e53be76c50f0187ac5d3eec","src/process/sched.rs":"ea8b20942ef09dbcd7a54d8218435129dfece427e4960055bcdf81c997e80f5f","src/process/sched_yield.rs":"6565faa3928b66ddc74a65e893e15edfa4b9be4f7e5f5f68527501a7f6bc3350","src/process/umask.rs":"f664e46dc6990a550d5ead5e394bfd90767bcb875c53722a5fb92823e15d8882","src/process/uname.rs":"3bcc278449d6b83aa8747bfde85d696293c50a3fa60d88c4a5570b38ef8af25b","src/process/wait.rs":"2f8716a58594df9c8cfd5a712d68f7dc9b3131fefdf80e868a4360336954e2e5","src/rand/getrandom.rs":"7ad1be6a5b0dc25030bb2434bdc00f3a0c410b7ebc24c136b9839410bf6c5a97","src/rand/mod.rs":"bd6839924ebfb7092f27f2ad42323768f39f76df157e7b8aa42f5bc17f700c9c","src/runtime.rs":"7c60353f240f1bda8b0fbfb7c570b7577cc5076a0d2f74083d8d878a2d69bf2d","src/termios/cf.rs":"cb13ee88cba541cbd683c7a5da034a126fd9e09dc6b5f25c9f32382f8318ffc0","src/termios/constants.rs":"7855cebd1e2169a2a760c6752138b3de1be00fd3b907b049d32ad5d6bdb0426e","src/termios/mod.rs":"b4d28ebeeae6782b4060d3e6f0156ed63bafa155d1bbdae9e28d06e574d69cb7","src/termios/tc.rs":"ae5d8799123747950c7f20ca3abaa3ec1918462ed95d1e78d07bcb491aedcccf","src/termios/tty.rs":"409ddcc795ed1e644d302cdcfdffff8713657bf8777548e628f0b1149acb18af","src/thread/clock.rs":"4e3f54aa5b50443bf502a81ee4814b3522e928e3b06241d24f924a6f69953662","src/thread/futex.rs":"4e78c84589b535ca9ca633633696ef212393a98f2890b181acaa8f908fbc5ae2","src/thread/id.rs":"708ee7701a0811586717de147365ed2f496e1aad3fd6208fe08edacc63a40c78","src/thread/libcap.rs":"43a05e127ae57ecd8b93752571d1cac3359bebe265c964f1825eefe1cee25a42","src/thread/mod.rs":"a3839e32f920fa4be0812f6d40b677968cb3d9e99aa0af65c87ceb8ce015fdc9","src/thread/prctl.rs":"32d9b6c8854547ba5d509af39e3f690588d761f254875a8054827aa815750b3c","src/thread/setns.rs":"5e08f98300e2ca8fc99272cf5408f0b27cb4c8ece54d76b92ede656982f11e69","src/time/clock.rs":"fcaa5a68d31d1cb1cee20c9ffc2c223f16036810b45234da97716d7f0e34f773","src/time/mod.rs":"b8b7c5d2bdba60a69e8a557ce7017e4251a41f5633aec928da059c49bc080cfa","src/time/timerfd.rs":"f17092b84553741aa2d2b44c6992b5d2c8c96cc2c2007fc9a2c6b2064485e53f","src/utils.rs":"6ed86e62ac05d6279b664a97fd62878a4c1811ab66a1a2920b169eb74c0c1fcd"},"package":"d097081ed288dfe45699b72f5b5d648e5f15d64d900c7080273baa20c16a6849"} \ No newline at end of file
diff --git a/vendor/rustix-0.37.6/CODE_OF_CONDUCT.md b/vendor/rustix-0.37.6/CODE_OF_CONDUCT.md
deleted file mode 100644
index 32ff0288e..000000000
--- a/vendor/rustix-0.37.6/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,49 +0,0 @@
-# Contributor Covenant Code of Conduct
-
-*Note*: this Code of Conduct pertains to individuals' behavior. Please also see the [Organizational Code of Conduct][OCoC].
-
-## Our Pledge
-
-In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
-
-## Our Standards
-
-Examples of behavior that contributes to creating a positive environment include:
-
-* Using welcoming and inclusive language
-* Being respectful of differing viewpoints and experiences
-* Gracefully accepting constructive criticism
-* Focusing on what is best for the community
-* Showing empathy towards other community members
-
-Examples of unacceptable behavior by participants include:
-
-* The use of sexualized language or imagery and unwelcome sexual attention or advances
-* Trolling, insulting/derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or electronic address, without explicit permission
-* Other conduct which could reasonably be considered inappropriate in a professional setting
-
-## Our Responsibilities
-
-Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
-
-Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
-
-## Scope
-
-This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
-
-## Enforcement
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the Bytecode Alliance CoC team at [report@bytecodealliance.org](mailto:report@bytecodealliance.org). The CoC team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The CoC team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
-
-Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the Bytecode Alliance's leadership.
-
-## Attribution
-
-This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
-
-[OCoC]: https://github.com/bytecodealliance/rustix/blob/main/ORG_CODE_OF_CONDUCT.md
-[homepage]: https://www.contributor-covenant.org
-[version]: https://www.contributor-covenant.org/version/1/4/
diff --git a/vendor/rustix-0.37.6/CONTRIBUTING.md b/vendor/rustix-0.37.6/CONTRIBUTING.md
deleted file mode 100644
index c3c48521d..000000000
--- a/vendor/rustix-0.37.6/CONTRIBUTING.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# Contributing to rustix
-
-Rustix is a [Bytecode Alliance] project. It follows the Bytecode Alliance's
-[Code of Conduct] and [Organizational Code of Conduct].
-
-## Testing
-
-To keep compile times low, most features in rustix's API are behind cargo
-features. A special feature, `all-apis` enables all APIs, which is useful
-for testing.
-
-```
-cargo test --features=all-apis
-```
-
-And, rustix has two backends, linux_raw and libc, and only one is used in
-any given build. To test with the libc backend explicitly, additionally
-enable the `use-libc` feature:
-
-```
-cargo test --features=all-apis,use-libc
-```
-
-Beyond that, rustix's CI tests many targets and configurations. Asking for
-help is always welcome, and it's especially encouraged when the issue is
-getting all the `cfg`s lined up to get everything compiling on all the
-configurations on CI.
diff --git a/vendor/rustix-0.37.6/COPYRIGHT b/vendor/rustix-0.37.6/COPYRIGHT
deleted file mode 100644
index a841525ef..000000000
--- a/vendor/rustix-0.37.6/COPYRIGHT
+++ /dev/null
@@ -1,29 +0,0 @@
-Short version for non-lawyers:
-
-`rustix` is triple-licensed under Apache 2.0 with the LLVM Exception,
-Apache 2.0, and MIT terms.
-
-
-Longer version:
-
-Copyrights in the `rustix` project are retained by their contributors.
-No copyright assignment is required to contribute to the `rustix`
-project.
-
-Some files include code derived from Rust's `libstd`; see the comments in
-the code for details.
-
-Except as otherwise noted (below and/or in individual files), `rustix`
-is licensed under:
-
- - the Apache License, Version 2.0, with the LLVM Exception
- <LICENSE-Apache-2.0_WITH_LLVM-exception> or
- <http://llvm.org/foundation/relicensing/LICENSE.txt>
- - the Apache License, Version 2.0
- <LICENSE-APACHE> or
- <http://www.apache.org/licenses/LICENSE-2.0>,
- - or the MIT license
- <LICENSE-MIT> or
- <http://opensource.org/licenses/MIT>,
-
-at your option.
diff --git a/vendor/rustix-0.37.6/Cargo.toml b/vendor/rustix-0.37.6/Cargo.toml
deleted file mode 100644
index b560499a8..000000000
--- a/vendor/rustix-0.37.6/Cargo.toml
+++ /dev/null
@@ -1,247 +0,0 @@
-# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
-#
-# When uploading crates to the registry Cargo will automatically
-# "normalize" Cargo.toml files for maximal compatibility
-# with all versions of Cargo and also rewrite `path` dependencies
-# to registry (e.g., crates.io) dependencies.
-#
-# If you are reading this file be aware that the original Cargo.toml
-# will likely look very different (and much more reasonable).
-# See Cargo.toml.orig for the original contents.
-
-[package]
-edition = "2018"
-rust-version = "1.48"
-name = "rustix"
-version = "0.37.6"
-authors = [
- "Dan Gohman <dev@sunfishcode.online>",
- "Jakub Konka <kubkon@jakubkonka.com>",
-]
-include = [
- "src",
- "build.rs",
- "Cargo.toml",
- "COPYRIGHT",
- "LICENSE*",
- "/*.md",
- "benches",
-]
-description = "Safe Rust bindings to POSIX/Unix/Linux/Winsock2-like syscalls"
-documentation = "https://docs.rs/rustix"
-readme = "README.md"
-keywords = [
- "api",
- "file",
- "network",
- "safe",
- "syscall",
-]
-categories = [
- "os::unix-apis",
- "date-and-time",
- "filesystem",
- "network-programming",
-]
-license = "Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT"
-repository = "https://github.com/bytecodealliance/rustix"
-
-[package.metadata.docs.rs]
-features = ["all-apis"]
-rustdoc-args = [
- "--cfg",
- "doc_cfg",
-]
-targets = [
- "x86_64-unknown-linux-gnu",
- "i686-unknown-linux-gnu",
- "x86_64-apple-darwin",
- "x86_64-pc-windows-msvc",
- "x86_64-unknown-freebsd",
- "x86_64-unknown-openbsd",
- "x86_64-unknown-netbsd",
- "x86_64-unknown-dragonfly",
- "x86_64-unknown-illumos",
- "x86_64-unknown-redox",
- "x86_64-unknown-haiku",
- "wasm32-unknown-emscripten",
- "wasm32-wasi",
-]
-
-[[bench]]
-name = "mod"
-harness = false
-
-[dependencies.alloc]
-version = "1.0.0"
-optional = true
-package = "rustc-std-workspace-alloc"
-
-[dependencies.bitflags]
-version = "1.2.1"
-
-[dependencies.compiler_builtins]
-version = "0.1.49"
-optional = true
-
-[dependencies.core]
-version = "1.0.0"
-optional = true
-package = "rustc-std-workspace-core"
-
-[dependencies.io-lifetimes]
-version = "1.0.0"
-features = ["close"]
-optional = true
-default-features = false
-
-[dependencies.itoa]
-version = "1.0.1"
-optional = true
-default-features = false
-
-[dev-dependencies.flate2]
-version = "1.0"
-
-[dev-dependencies.io-lifetimes]
-version = "1.0.0"
-features = ["close"]
-default-features = false
-
-[dev-dependencies.libc]
-version = "0.2.140"
-
-[dev-dependencies.libc_errno]
-version = "0.3.0"
-default-features = false
-package = "errno"
-
-[dev-dependencies.memoffset]
-version = "0.8.0"
-
-[dev-dependencies.serial_test]
-version = "0.6"
-
-[dev-dependencies.tempfile]
-version = "3.4.0"
-
-[build-dependencies.cc]
-version = "1.0.68"
-optional = true
-
-[features]
-all-apis = [
- "fs",
- "io_uring",
- "mm",
- "net",
- "param",
- "process",
- "procfs",
- "rand",
- "runtime",
- "termios",
- "thread",
- "time",
-]
-all-impls = [
- "os_pipe",
- "fs-err",
-]
-default = [
- "std",
- "use-libc-auxv",
-]
-fs = []
-fs-err = ["io-lifetimes/fs-err"]
-io_uring = [
- "fs",
- "net",
-]
-linux_4_11 = []
-linux_latest = ["linux_4_11"]
-mm = []
-net = []
-os_pipe = ["io-lifetimes/os_pipe"]
-param = ["fs"]
-process = []
-procfs = [
- "once_cell",
- "itoa",
- "fs",
-]
-rand = []
-runtime = []
-rustc-dep-of-std = [
- "core",
- "alloc",
- "compiler_builtins",
- "linux-raw-sys/rustc-dep-of-std",
- "bitflags/rustc-dep-of-std",
-]
-std = ["io-lifetimes"]
-termios = []
-thread = []
-time = []
-use-libc = [
- "libc_errno",
- "libc",
-]
-use-libc-auxv = ["libc"]
-
-[target."cfg(all(any(target_os = \"android\", target_os = \"linux\"), any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\"))))))))".dependencies.linux-raw-sys]
-version = "0.3.0"
-features = [
- "general",
- "no_std",
-]
-default-features = false
-
-[target."cfg(all(criterion, not(any(target_os = \"emscripten\", target_os = \"wasi\"))))".dev-dependencies.criterion]
-version = "0.4"
-
-[target."cfg(all(not(rustix_use_libc), not(miri), target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\")))))".dependencies.libc]
-version = "0.2.140"
-features = ["extra_traits"]
-optional = true
-
-[target."cfg(all(not(rustix_use_libc), not(miri), target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\")))))".dependencies.libc_errno]
-version = "0.3.0"
-optional = true
-default-features = false
-package = "errno"
-
-[target."cfg(all(not(rustix_use_libc), not(miri), target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\")))))".dependencies.linux-raw-sys]
-version = "0.3.0"
-features = [
- "general",
- "errno",
- "ioctl",
- "no_std",
-]
-default-features = false
-
-[target."cfg(any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\")))))))".dependencies.libc]
-version = "0.2.140"
-features = ["extra_traits"]
-
-[target."cfg(any(rustix_use_libc, miri, not(all(target_os = \"linux\", any(target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"), all(target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"powerpc64\", target_arch = \"riscv64\", target_arch = \"mips\", target_arch = \"mips64\")))))))".dependencies.libc_errno]
-version = "0.3.0"
-default-features = false
-package = "errno"
-
-[target."cfg(any(target_os = \"android\", target_os = \"linux\"))".dependencies.once_cell]
-version = "1.5.2"
-optional = true
-
-[target."cfg(windows)".dependencies.windows-sys]
-version = "0.45.0"
-features = [
- "Win32_Foundation",
- "Win32_Networking_WinSock",
- "Win32_NetworkManagement_IpHelper",
- "Win32_System_Threading",
-]
-
-[target."cfg(windows)".dev-dependencies.ctor]
-version = "0.1.21"
diff --git a/vendor/rustix-0.37.6/ORG_CODE_OF_CONDUCT.md b/vendor/rustix-0.37.6/ORG_CODE_OF_CONDUCT.md
deleted file mode 100644
index 6f4fb3f53..000000000
--- a/vendor/rustix-0.37.6/ORG_CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,143 +0,0 @@
-# Bytecode Alliance Organizational Code of Conduct (OCoC)
-
-*Note*: this Code of Conduct pertains to organizations' behavior. Please also see the [Individual Code of Conduct](CODE_OF_CONDUCT.md).
-
-## Preamble
-
-The Bytecode Alliance (BA) welcomes involvement from organizations,
-including commercial organizations. This document is an
-*organizational* code of conduct, intended particularly to provide
-guidance to commercial organizations. It is distinct from the
-[Individual Code of Conduct (ICoC)](CODE_OF_CONDUCT.md), and does not
-replace the ICoC. This OCoC applies to any group of people acting in
-concert as a BA member or as a participant in BA activities, whether
-or not that group is formally incorporated in some jurisdiction.
-
-The code of conduct described below is not a set of rigid rules, and
-we did not write it to encompass every conceivable scenario that might
-arise. For example, it is theoretically possible there would be times
-when asserting patents is in the best interest of the BA community as
-a whole. In such instances, consult with the BA, strive for
-consensus, and interpret these rules with an intent that is generous
-to the community the BA serves.
-
-While we may revise these guidelines from time to time based on
-real-world experience, overall they are based on a simple principle:
-
-*Bytecode Alliance members should observe the distinction between
- public community functions and private functions — especially
- commercial ones — and should ensure that the latter support, or at
- least do not harm, the former.*
-
-## Guidelines
-
- * **Do not cause confusion about Wasm standards or interoperability.**
-
- Having an interoperable WebAssembly core is a high priority for
- the BA, and members should strive to preserve that core. It is fine
- to develop additional non-standard features or APIs, but they
- should always be clearly distinguished from the core interoperable
- Wasm.
-
- Treat the WebAssembly name and any BA-associated names with
- respect, and follow BA trademark and branding guidelines. If you
- distribute a customized version of software originally produced by
- the BA, or if you build a product or service using BA-derived
- software, use names that clearly distinguish your work from the
- original. (You should still provide proper attribution to the
- original, of course, wherever such attribution would normally be
- given.)
-
- Further, do not use the WebAssembly name or BA-associated names in
- other public namespaces in ways that could cause confusion, e.g.,
- in company names, names of commercial service offerings, domain
- names, publicly-visible social media accounts or online service
- accounts, etc. It may sometimes be reasonable, however, to
- register such a name in a new namespace and then immediately donate
- control of that account to the BA, because that would help the project
- maintain its identity.
-
- For further guidance, see the BA Trademark and Branding Policy
- [TODO: create policy, then insert link].
-
- * **Do not restrict contributors.** If your company requires
- employees or contractors to sign non-compete agreements, those
- agreements must not prevent people from participating in the BA or
- contributing to related projects.
-
- This does not mean that all non-compete agreements are incompatible
- with this code of conduct. For example, a company may restrict an
- employee's ability to solicit the company's customers. However, an
- agreement must not block any form of technical or social
- participation in BA activities, including but not limited to the
- implementation of particular features.
-
- The accumulation of experience and expertise in individual persons,
- who are ultimately free to direct their energy and attention as
- they decide, is one of the most important drivers of progress in
- open source projects. A company that limits this freedom may hinder
- the success of the BA's efforts.
-
- * **Do not use patents as offensive weapons.** If any BA participant
- prevents the adoption or development of BA technologies by
- asserting its patents, that undermines the purpose of the
- coalition. The collaboration fostered by the BA cannot include
- members who act to undermine its work.
-
- * **Practice responsible disclosure** for security vulnerabilities.
- Use designated, non-public reporting channels to disclose technical
- vulnerabilities, and give the project a reasonable period to
- respond, remediate, and patch. [TODO: optionally include the
- security vulnerability reporting URL here.]
-
- Vulnerability reporters may patch their company's own offerings, as
- long as that patching does not significantly delay the reporting of
- the vulnerability. Vulnerability information should never be used
- for unilateral commercial advantage. Vendors may legitimately
- compete on the speed and reliability with which they deploy
- security fixes, but withholding vulnerability information damages
- everyone in the long run by risking harm to the BA project's
- reputation and to the security of all users.
-
- * **Respect the letter and spirit of open source practice.** While
- there is not space to list here all possible aspects of standard
- open source practice, some examples will help show what we mean:
-
- * Abide by all applicable open source license terms. Do not engage
- in copyright violation or misattribution of any kind.
-
- * Do not claim others' ideas or designs as your own.
-
- * When others engage in publicly visible work (e.g., an upcoming
- demo that is coordinated in a public issue tracker), do not
- unilaterally announce early releases or early demonstrations of
- that work ahead of their schedule in order to secure private
- advantage (such as marketplace advantage) for yourself.
-
- The BA reserves the right to determine what constitutes good open
- source practices and to take action as it deems appropriate to
- encourage, and if necessary enforce, such practices.
-
-## Enforcement
-
-Instances of organizational behavior in violation of the OCoC may
-be reported by contacting the Bytecode Alliance CoC team at
-[report@bytecodealliance.org](mailto:report@bytecodealliance.org). The
-CoC team will review and investigate all complaints, and will respond
-in a way that it deems appropriate to the circumstances. The CoC team
-is obligated to maintain confidentiality with regard to the reporter of
-an incident. Further details of specific enforcement policies may be
-posted separately.
-
-When the BA deems an organization in violation of this OCoC, the BA
-will, at its sole discretion, determine what action to take. The BA
-will decide what type, degree, and duration of corrective action is
-needed, if any, before a violating organization can be considered for
-membership (if it was not already a member) or can have its membership
-reinstated (if it was a member and the BA canceled its membership due
-to the violation).
-
-In practice, the BA's first approach will be to start a conversation,
-with punitive enforcement used only as a last resort. Violations
-often turn out to be unintentional and swiftly correctable with all
-parties acting in good faith.
diff --git a/vendor/rustix-0.37.6/README.md b/vendor/rustix-0.37.6/README.md
deleted file mode 100644
index 792dd1197..000000000
--- a/vendor/rustix-0.37.6/README.md
+++ /dev/null
@@ -1,168 +0,0 @@
-<div align="center">
- <h1><code>rustix</code></h1>
-
- <p>
- <strong>Safe Rust bindings to POSIX/Unix/Linux/Winsock2 syscalls</strong>
- </p>
-
- <strong>A <a href="https://bytecodealliance.org/">Bytecode Alliance</a> project</strong>
-
- <p>
- <a href="https://github.com/bytecodealliance/rustix/actions?query=workflow%3ACI"><img src="https://github.com/bytecodealliance/rustix/workflows/CI/badge.svg" alt="Github Actions CI Status" /></a>
- <a href="https://bytecodealliance.zulipchat.com/#narrow/stream/206238-general"><img src="https://img.shields.io/badge/zulip-join_chat-brightgreen.svg" alt="zulip chat" /></a>
- <a href="https://crates.io/crates/rustix"><img src="https://img.shields.io/crates/v/rustix.svg" alt="crates.io page" /></a>
- <a href="https://docs.rs/rustix"><img src="https://docs.rs/rustix/badge.svg" alt="docs.rs docs" /></a>
- </p>
-</div>
-
-`rustix` provides efficient memory-safe and [I/O-safe] wrappers to POSIX-like,
-Unix-like, Linux, and Winsock2 syscall-like APIs, with configurable backends.
-It uses Rust references, slices, and return values instead of raw pointers, and
-[`io-lifetimes`] instead of raw file descriptors, providing memory safety,
-[I/O safety], and [provenance]. It uses `Result`s for reporting errors,
-[`bitflags`] instead of bare integer flags, an [`Arg`] trait with optimizations
-to efficiently accept any Rust string type, and several other efficient
-conveniences.
-
-`rustix` is low-level and, and while the `net` API supports Winsock2 on
-Windows, the rest of the APIs do not support Windows; for higher-level and more
-portable APIs built on this functionality, see the [`cap-std`], [`memfd`],
-[`timerfd`], and [`io-streams`] crates, for example.
-
-`rustix` currently has two backends available:
-
- * linux_raw, which uses raw Linux system calls and vDSO calls, and is
- supported on Linux on x86-64, x86, aarch64, riscv64gc, powerpc64le,
- arm (v5 onwards), mipsel, and mips64el, with stable, nightly, and 1.48 Rust.
- - By being implemented entirely in Rust, avoiding `libc`, `errno`, and pthread
- cancellation, and employing some specialized optimizations, most functions
- compile down to very efficient code. On nightly Rust, they can often be
- fully inlined into user code.
- - Most functions in `linux_raw` preserve memory, I/O safety, and pointer
- provenance all the way down to the syscalls.
-
- * libc, which uses the [`libc`] crate which provides bindings to native `libc`
- libraries on Unix-family platforms, and [`windows-sys`] for Winsock2 on
- Windows, and is portable to many OS's.
-
-The linux_raw backend is enabled by default on platforms which support it. To
-enable the libc backend instead, either enable the "use-libc" cargo feature,
-or set the `RUSTFLAGS` environment variable to `--cfg=rustix_use_libc` when
-building.
-
-## Cargo features
-
-The modules [`rustix::io`], [`rustix::fd`], and [`rustix::ffi`] are enabled
-by default. The rest of the API is conditional with cargo feature flags:
-
-| Name | Description
-| ---------- | ---------------------
-| `fs` | [`rustix::fs`] and [`rustix::path`]—Filesystem operations.
-| `io_uring` | [`rustix::io_uring`]—Linux io_uring.
-| `mm` | [`rustix::mm`]—Memory map operations.
-| `net` | [`rustix::net`] and [`rustix::path`]—Network-related operations.
-| `param` | [`rustix::param`]—Process parameters.
-| `process` | [`rustix::process`]—Process-associated operations.
-| `rand` | [`rustix::rand`]—Random-related operations.
-| `termios` | [`rustix::termios`]—Terminal I/O stream operations.
-| `thread` | [`rustix::thread`]—Thread-associated operations.
-| `time` | [`rustix::time`]—Time-related operations.
-| |
-| `use-libc` | Enable the libc backend.
-
-[`rustix::fs`]: https://docs.rs/rustix/*/rustix/fs/index.html
-[`rustix::io_uring`]: https://docs.rs/rustix/*/rustix/io_uring/index.html
-[`rustix::mm`]: https://docs.rs/rustix/*/rustix/mm/index.html
-[`rustix::net`]: https://docs.rs/rustix/*/rustix/net/index.html
-[`rustix::param`]: https://docs.rs/rustix/*/rustix/param/index.html
-[`rustix::process`]: https://docs.rs/rustix/*/rustix/process/index.html
-[`rustix::rand`]: https://docs.rs/rustix/*/rustix/rand/index.html
-[`rustix::termios`]: https://docs.rs/rustix/*/rustix/termios/index.html
-[`rustix::thread`]: https://docs.rs/rustix/*/rustix/thread/index.html
-[`rustix::time`]: https://docs.rs/rustix/*/rustix/time/index.html
-[`rustix::io`]: https://docs.rs/rustix/*/rustix/io/index.html
-[`rustix::fd`]: https://docs.rs/rustix/*/rustix/fd/index.html
-[`rustix::ffi`]: https://docs.rs/rustix/*/rustix/ffi/index.html
-[`rustix::path`]: https://docs.rs/rustix/*/rustix/path/index.html
-
-## 64-bit Large File Support (LFS) and Year 2038 (y2038) support
-
-`rustix` automatically uses 64-bit APIs when available, and avoids exposing
-32-bit APIs that would have the year-2038 problem or fail to support large
-files. For instance, `rustix::fstatvfs` calls `fstatvfs64`, and returns a
-struct that's 64-bit even on 32-bit platforms.
-
-## Similar crates
-
-`rustix` is similar to [`nix`], [`simple_libc`], [`unix`], [`nc`], and
-[`uapi`]. `rustix` is architected for [I/O safety] with most APIs using
-[`OwnedFd`] and [`AsFd`] to manipulate file descriptors rather than `File` or
-even `c_int`, and supporting multiple backends so that it can use direct
-syscalls while still being usable on all platforms `libc` supports. Like `nix`,
-`rustix` has an optimized and flexible filename argument mechanism that allows
-users to use a variety of string types, including non-UTF-8 string types.
-
-[`relibc`] is a similar project which aims to be a full "libc", including
-C-compatible interfaces and higher-level C/POSIX standard-library
-functionality; `rustix` just aims to provide safe and idiomatic Rust interfaces
-to low-level syscalls. `relibc` also doesn't tend to support features not
-supported on Redox, such as `*at` functions like `openat`, which are important
-features for `rustix`.
-
-`rustix` has its own code for making direct syscalls, similar to the [`sc`] and
-[`scall`] crates, though `rustix` can use either the Rust `asm!` macro or
-out-of-line `.s` files so it supports Rust versions from 1.48 through Nightly.
-`rustix` can also use Linux's vDSO mechanism to optimize Linux `clock_gettime`
-on all architectures, and all Linux system calls on x86. And `rustix`'s
-syscalls report errors using an optimized `Errno` type.
-
-`rustix`'s `*at` functions are similar to the [`openat`] crate, but `rustix`
-provides them as free functions rather than associated functions of a `Dir`
-type. `rustix`'s `cwd()` function exposes the special `AT_FDCWD` value in a safe
-way, so users don't need to open `.` to get a current-directory handle.
-
-`rustix`'s `openat2` function is similar to the [`openat2`] crate, but uses I/O
-safety types rather than `RawFd`. `rustix` does not provide dynamic feature
-detection, so users must handle the [`NOSYS`] error themselves.
-
-`rustix`'s `termios` module is similar to the [`termios`] crate, but uses I/O
-safety types rather than `RawFd`, and the flags parameters to functions such as
-`tcsetattr` are `enum`s rather than bare integers. And, rustix calls its
-`tcgetattr` function `tcgetattr`, rather than `Termios::from_fd`.
-
-## Minimum Supported Rust Version (MSRV)
-
-This crate currently works on the version of [Rust on Debian stable], which is
-currently Rust 1.48. This policy may change in the future, in minor version
-releases, so users using a fixed version of Rust should pin to a specific
-version of this crate.
-
-[Rust on Debian stable]: https://packages.debian.org/stable/rust/rustc
-[`nix`]: https://crates.io/crates/nix
-[`unix`]: https://crates.io/crates/unix
-[`nc`]: https://crates.io/crates/nc
-[`simple_libc`]: https://crates.io/crates/simple_libc
-[`uapi`]: https://crates.io/crates/uapi
-[`relibc`]: https://github.com/redox-os/relibc
-[`syscall`]: https://crates.io/crates/syscall
-[`sc`]: https://crates.io/crates/sc
-[`scall`]: https://crates.io/crates/scall
-[`openat`]: https://crates.io/crates/openat
-[`openat2`]: https://crates.io/crates/openat2
-[`fs-set-times`]: https://crates.io/crates/fs-set-times
-[`io-lifetimes`]: https://crates.io/crates/io-lifetimes
-[`termios`]: https://crates.io/crates/termios
-[`libc`]: https://crates.io/crates/libc
-[`windows-sys`]: https://crates.io/crates/windows-sys
-[`cap-std`]: https://crates.io/crates/cap-std
-[`memfd`]: https://crates.io/crates/memfd
-[`timerfd`]: https://crates.io/crates/timerfd
-[`io-streams`]: https://crates.io/crates/io-streams
-[`bitflags`]: https://crates.io/crates/bitflags
-[`Arg`]: https://docs.rs/rustix/*/rustix/path/trait.Arg.html
-[I/O-safe]: https://github.com/rust-lang/rfcs/blob/master/text/3128-io-safety.md
-[I/O safety]: https://github.com/rust-lang/rfcs/blob/master/text/3128-io-safety.md
-[provenance]: https://github.com/rust-lang/rust/issues/95228
-[`OwnedFd`]: https://docs.rs/io-lifetimes/*/io_lifetimes/struct.OwnedFd.html
-[`AsFd`]: https://docs.rs/io-lifetimes/*/io_lifetimes/trait.AsFd.html
-[`NOSYS`]: https://docs.rs/rustix/*/rustix/io/struct.Errno.html#associatedconstant.NOSYS
diff --git a/vendor/rustix-0.37.6/SECURITY.md b/vendor/rustix-0.37.6/SECURITY.md
deleted file mode 100644
index 3513b9cb3..000000000
--- a/vendor/rustix-0.37.6/SECURITY.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# Security Policy
-
-Building secure foundations for software development is at the core of what we do in the Bytecode Alliance. Contributions of external security researchers are a vital part of that.
-
-## Scope
-
-If you believe you've found a security issue in any website, service, or software owned or operated by the Bytecode Alliance, we encourage you to notify us.
-
-## How to Submit a Report
-
-To submit a vulnerability report to the Bytecode Alliance, please contact us at [security@bytecodealliance.org](mailto:security@bytecodealliance.org). Your submission will be reviewed and validated by a member of our security team.
-
-## Safe Harbor
-
-The Bytecode Alliance supports safe harbor for security researchers who:
-
-* Make a good faith effort to avoid privacy violations, destruction of data, and interruption or degradation of our services.
-* Only interact with accounts you own or with explicit permission of the account holder. If you do encounter Personally Identifiable Information (PII) contact us immediately, do not proceed with access, and immediately purge any local information.
-* Provide us with a reasonable amount of time to resolve vulnerabilities prior to any disclosure to the public or a third-party.
-
-We will consider activities conducted consistent with this policy to constitute "authorized" conduct and will not pursue civil action or initiate a complaint to law enforcement. We will help to the extent we can if legal action is initiated by a third party against you.
-
-Please submit a report to us before engaging in conduct that may be inconsistent with or unaddressed by this policy.
-
-## Preferences
-
-* Please provide detailed reports with reproducible steps and a clearly defined impact.
-* Submit one vulnerability per report.
-* Social engineering (e.g. phishing, vishing, smishing) is prohibited.
diff --git a/vendor/rustix-0.37.6/benches/mod.rs b/vendor/rustix-0.37.6/benches/mod.rs
deleted file mode 100644
index ee7358cc2..000000000
--- a/vendor/rustix-0.37.6/benches/mod.rs
+++ /dev/null
@@ -1,186 +0,0 @@
-//! Benchmarks for rustix.
-//!
-//! To enable these benchmarks, add `--cfg=criterion` to RUSTFLAGS and enable
-//! the "fs", "time", and "process" cargo features.
-//!
-//! ```sh
-//! RUSTFLAGS=--cfg=criterion cargo bench --features=fs,time,process
-//! ```
-
-#[cfg(any(
- not(criterion),
- not(feature = "fs"),
- not(feature = "process"),
- not(feature = "time"),
- windows,
- target_os = "emscripten",
- target_os = "redox",
- target_os = "wasi",
-))]
-fn main() {
- unimplemented!("Add --cfg=criterion to RUSTFLAGS and enable the \"fs\", \"time\", and \"process\" cargo features.")
-}
-
-#[cfg(not(any(
- not(criterion),
- not(feature = "fs"),
- not(feature = "process"),
- not(feature = "time"),
- windows,
- target_os = "emscripten",
- target_os = "redox",
- target_os = "wasi",
-)))]
-use criterion::{criterion_group, criterion_main};
-
-#[cfg(not(any(
- not(criterion),
- not(feature = "fs"),
- not(feature = "process"),
- not(feature = "time"),
- windows,
- target_os = "emscripten",
- target_os = "redox",
- target_os = "wasi",
-)))]
-mod suite {
- use criterion::Criterion;
-
- pub(super) fn simple_statat(c: &mut Criterion) {
- use rustix::fs::{cwd, statat, AtFlags};
-
- c.bench_function("simple statat", |b| {
- b.iter(|| {
- statat(cwd(), "/", AtFlags::empty()).unwrap();
- })
- });
- }
-
- pub(super) fn simple_statat_libc(c: &mut Criterion) {
- c.bench_function("simple statat libc", |b| {
- b.iter(|| {
- let mut s = std::mem::MaybeUninit::<libc::stat>::uninit();
- unsafe {
- assert_eq!(
- libc::fstatat(
- libc::AT_FDCWD,
- std::ffi::CString::new("/").unwrap().as_c_str().as_ptr() as _,
- s.as_mut_ptr(),
- 0
- ),
- 0
- );
- }
- })
- });
- }
-
- pub(super) fn simple_statat_libc_cstr(c: &mut Criterion) {
- c.bench_function("simple statat libc cstr", |b| {
- b.iter(|| {
- let mut s = std::mem::MaybeUninit::<libc::stat>::uninit();
- unsafe {
- assert_eq!(
- libc::fstatat(
- libc::AT_FDCWD,
- rustix::cstr!("/").as_ptr() as _,
- s.as_mut_ptr(),
- 0
- ),
- 0
- );
- }
- })
- });
- }
-
- pub(super) fn simple_statat_cstr(c: &mut Criterion) {
- use rustix::fs::{cwd, statat, AtFlags};
-
- c.bench_function("simple statat cstr", |b| {
- b.iter(|| {
- statat(cwd(), rustix::cstr!("/"), AtFlags::empty()).unwrap();
- })
- });
- }
-
- #[cfg(not(target_os = "wasi"))]
- pub(super) fn simple_clock_gettime(c: &mut Criterion) {
- use rustix::time::{clock_gettime, ClockId};
-
- c.bench_function("simple clock_gettime", |b| {
- b.iter(|| {
- let _ = clock_gettime(ClockId::Monotonic);
- })
- });
- }
-
- #[cfg(not(target_os = "wasi"))]
- pub(super) fn simple_clock_gettime_libc(c: &mut Criterion) {
- c.bench_function("simple clock_gettime libc", |b| {
- b.iter(|| {
- let mut s = std::mem::MaybeUninit::<libc::timespec>::uninit();
- unsafe {
- assert_eq!(
- libc::clock_gettime(libc::CLOCK_MONOTONIC, s.as_mut_ptr()),
- 0
- );
- let _ = s.assume_init();
- }
- })
- });
- }
-
- #[cfg(not(target_os = "wasi"))]
- pub(super) fn simple_getpid(c: &mut Criterion) {
- use rustix::process::getpid;
-
- c.bench_function("simple getpid", |b| {
- b.iter(|| {
- let _ = getpid();
- })
- });
- }
-
- #[cfg(not(target_os = "wasi"))]
- pub(super) fn simple_getpid_libc(c: &mut Criterion) {
- c.bench_function("simple getpid libc", |b| {
- b.iter(|| unsafe {
- let _ = libc::getpid();
- })
- });
- }
-}
-
-#[cfg(not(any(
- not(criterion),
- not(feature = "fs"),
- not(feature = "process"),
- not(feature = "time"),
- windows,
- target_os = "emscripten",
- target_os = "redox",
- target_os = "wasi",
-)))]
-criterion_group!(
- benches,
- suite::simple_statat,
- suite::simple_statat_libc,
- suite::simple_statat_libc_cstr,
- suite::simple_statat_cstr,
- suite::simple_clock_gettime,
- suite::simple_clock_gettime_libc,
- suite::simple_getpid,
- suite::simple_getpid_libc
-);
-#[cfg(not(any(
- not(criterion),
- not(feature = "fs"),
- not(feature = "process"),
- not(feature = "time"),
- windows,
- target_os = "emscripten",
- target_os = "redox",
- target_os = "wasi",
-)))]
-criterion_main!(benches);
diff --git a/vendor/rustix-0.37.6/build.rs b/vendor/rustix-0.37.6/build.rs
deleted file mode 100644
index d8d1c8bd6..000000000
--- a/vendor/rustix-0.37.6/build.rs
+++ /dev/null
@@ -1,280 +0,0 @@
-#[cfg(feature = "cc")]
-use cc::Build;
-use std::env::var;
-use std::io::Write;
-
-/// The directory for out-of-line ("outline") libraries.
-const OUTLINE_PATH: &str = "src/backend/linux_raw/arch/outline";
-
-fn main() {
- // Don't rerun this on changes other than build.rs, as we only depend on
- // the rustc version.
- println!("cargo:rerun-if-changed=build.rs");
-
- use_feature_or_nothing("rustc_attrs");
-
- // Features only used in no-std configurations.
- #[cfg(not(feature = "std"))]
- {
- use_feature_or_nothing("const_raw_ptr_deref");
- use_feature_or_nothing("core_ffi_c");
- use_feature_or_nothing("core_c_str");
- use_feature_or_nothing("alloc_c_string");
- }
-
- // Gather target information.
- let arch = var("CARGO_CFG_TARGET_ARCH").unwrap();
- let asm_name = format!("{}/{}.s", OUTLINE_PATH, arch);
- let asm_name_present = std::fs::metadata(&asm_name).is_ok();
- let target_os = var("CARGO_CFG_TARGET_OS").unwrap();
- let pointer_width = var("CARGO_CFG_TARGET_POINTER_WIDTH").unwrap();
- let endian = var("CARGO_CFG_TARGET_ENDIAN").unwrap();
-
- // Check for special target variants.
- let is_x32 = arch == "x86_64" && pointer_width == "32";
- let is_arm64_ilp32 = arch == "aarch64" && pointer_width == "32";
- let is_powerpc64be = arch == "powerpc64" && endian == "big";
- let is_mipseb = arch == "mips" && endian == "big";
- let is_mips64eb = arch == "mips64" && endian == "big";
- let is_unsupported_abi = is_x32 || is_arm64_ilp32 || is_powerpc64be || is_mipseb || is_mips64eb;
-
- // Check for `--features=use-libc`. This allows crate users to enable the
- // libc backend.
- let feature_use_libc = var("CARGO_FEATURE_USE_LIBC").is_ok();
-
- // Check for `--features=rustc-dep-of-std`. This is used when rustix is
- // being used to build std, in which case `can_compile` doesn't work
- // because `core` isn't available yet, but also, we can assume we have a
- // recent compiler.
- let feature_rustc_dep_of_std = var("CARGO_FEATURE_RUSTC_DEP_OF_STD").is_ok();
-
- // Check for `RUSTFLAGS=--cfg=rustix_use_libc`. This allows end users to
- // enable the libc backend even if rustix is depended on transitively.
- let cfg_use_libc = var("CARGO_CFG_RUSTIX_USE_LIBC").is_ok();
-
- // Check for eg. `RUSTFLAGS=--cfg=rustix_use_experimental_asm`. This is a
- // rustc flag rather than a cargo feature flag because it's experimental
- // and not something we want accidentally enabled via `--all-features`.
- let rustix_use_experimental_asm = var("CARGO_CFG_RUSTIX_USE_EXPERIMENTAL_ASM").is_ok();
-
- // Miri doesn't support inline asm, and has builtin support for recognizing
- // libc FFI calls, so if we're running under miri, use the libc backend.
- let miri = var("CARGO_CFG_MIRI").is_ok();
-
- // If the libc backend is requested, or if we're not on a platform for
- // which we have linux_raw support, use the libc backend.
- //
- // For now Android uses the libc backend; in theory it could use the
- // linux_raw backend, but to do that we'll need to figure out how to
- // install the toolchain for it.
- if feature_use_libc
- || cfg_use_libc
- || target_os != "linux"
- || !asm_name_present
- || is_unsupported_abi
- || miri
- {
- // Use the libc backend.
- use_feature("libc");
- } else {
- // Use the linux_raw backend.
- use_feature("linux_raw");
- use_feature_or_nothing("core_intrinsics");
-
- // Use inline asm if we have it, or outline asm otherwise. On PowerPC
- // and MIPS, Rust's inline asm is considered experimental, so only use
- // it if `--cfg=rustix_use_experimental_asm` is given.
- if (feature_rustc_dep_of_std || can_compile("use std::arch::asm;"))
- && (arch != "x86" || has_feature("naked_functions"))
- && ((arch != "powerpc64" && arch != "mips" && arch != "mips64")
- || rustix_use_experimental_asm)
- {
- use_feature("asm");
- if arch == "x86" {
- use_feature("naked_functions");
- }
- if rustix_use_experimental_asm {
- use_feature("asm_experimental_arch");
- }
- } else {
- link_in_librustix_outline(&arch, &asm_name);
- }
- }
-
- // Detect whether the compiler requires us to use thumb mode on ARM.
- if arch == "arm" && use_thumb_mode() {
- use_feature("thumb_mode");
- }
-
- // Rust's libc crate groups some OS's together which have similar APIs;
- // create similarly-named features to make `cfg` tests more concise.
- if target_os == "freebsd" || target_os == "dragonfly" {
- use_feature("freebsdlike");
- }
- if target_os == "openbsd" || target_os == "netbsd" {
- use_feature("netbsdlike");
- }
- if target_os == "macos" || target_os == "ios" || target_os == "tvos" || target_os == "watchos" {
- use_feature("apple");
- }
- if target_os == "linux"
- || target_os == "l4re"
- || target_os == "android"
- || target_os == "emscripten"
- {
- use_feature("linux_like");
- }
- if target_os == "solaris" || target_os == "illumos" {
- use_feature("solarish");
- }
- if target_os == "macos"
- || target_os == "ios"
- || target_os == "tvos"
- || target_os == "watchos"
- || target_os == "freebsd"
- || target_os == "dragonfly"
- || target_os == "openbsd"
- || target_os == "netbsd"
- {
- use_feature("bsd");
- }
-
- println!("cargo:rerun-if-env-changed=CARGO_CFG_RUSTIX_USE_EXPERIMENTAL_ASM");
- println!("cargo:rerun-if-env-changed=CARGO_CFG_RUSTIX_USE_LIBC");
-
- // Rerun this script if any of our features or configuration flags change,
- // or if the toolchain we used for feature detection changes.
- println!("cargo:rerun-if-env-changed=CARGO_FEATURE_USE_LIBC");
- println!("cargo:rerun-if-env-changed=CARGO_FEATURE_RUSTC_DEP_OF_STD");
- println!("cargo:rerun-if-env-changed=CARGO_CFG_MIRI");
-}
-
-/// Link in the desired version of librustix_outline_{arch}.a, containing the
-/// outline assembly code for making syscalls.
-fn link_in_librustix_outline(arch: &str, asm_name: &str) {
- let name = format!("rustix_outline_{}", arch);
- let profile = var("PROFILE").unwrap();
- let to = format!("{}/{}/lib{}.a", OUTLINE_PATH, profile, name);
- println!("cargo:rerun-if-changed={}", to);
-
- // If "cc" is not enabled, use a pre-built library.
- #[cfg(not(feature = "cc"))]
- {
- let _ = asm_name;
- println!("cargo:rustc-link-search={}/{}", OUTLINE_PATH, profile);
- println!("cargo:rustc-link-lib=static={}", name);
- }
-
- // If "cc" is enabled, build the library from source, update the pre-built
- // version, and assert that the pre-built version is checked in.
- #[cfg(feature = "cc")]
- {
- let out_dir = var("OUT_DIR").unwrap();
- // Add `-gdwarf-3` so that we always get the same output, regardless of
- // the Rust version we're using. DWARF3 is the version used in
- // Rust 1.48 and is entirely adequate for our simple needs here.
- let mut build = Build::new();
- if profile == "debug" {
- build.flag("-gdwarf-3");
- }
- build.file(&asm_name);
- build.compile(&name);
- println!("cargo:rerun-if-changed={}", asm_name);
- if std::fs::metadata(".git").is_ok() {
- let from = format!("{}/lib{}.a", out_dir, name);
- let prev_metadata = std::fs::metadata(&to);
- std::fs::copy(&from, &to).unwrap();
- assert!(
- prev_metadata.is_ok(),
- "{} didn't previously exist; please inspect the new file and `git add` it",
- to
- );
- assert!(
- std::process::Command::new("git")
- .arg("diff")
- .arg("--quiet")
- .arg(&to)
- .status()
- .unwrap()
- .success(),
- "{} changed; please inspect the change and `git commit` it",
- to
- );
- }
- }
-}
-
-fn use_thumb_mode() -> bool {
- // In thumb mode, r7 is reserved.
- !can_compile("pub unsafe fn f() { core::arch::asm!(\"udf #16\", in(\"r7\") 0); }")
-}
-
-fn use_feature_or_nothing(feature: &str) {
- if has_feature(feature) {
- use_feature(feature);
- }
-}
-
-fn use_feature(feature: &str) {
- println!("cargo:rustc-cfg={}", feature);
-}
-
-/// Test whether the rustc at `var("RUSTC")` supports the given feature.
-fn has_feature(feature: &str) -> bool {
- can_compile(format!(
- "#![allow(stable_features)]\n#![feature({})]",
- feature
- ))
-}
-
-/// Test whether the rustc at `var("RUSTC")` can compile the given code.
-fn can_compile<T: AsRef<str>>(test: T) -> bool {
- use std::process::Stdio;
-
- let out_dir = var("OUT_DIR").unwrap();
- let rustc = var("RUSTC").unwrap();
- let target = var("TARGET").unwrap();
-
- // Use `RUSTC_WRAPPER` if it's set, unless it's set to an empty string,
- // as documented [here].
- // [here]: https://doc.rust-lang.org/cargo/reference/environment-variables.html#environment-variables-cargo-reads
- let wrapper = var("RUSTC_WRAPPER")
- .ok()
- .and_then(|w| if w.is_empty() { None } else { Some(w) });
-
- let mut cmd = if let Some(wrapper) = wrapper {
- let mut cmd = std::process::Command::new(wrapper);
- // The wrapper's first argument is supposed to be the path to rustc.
- cmd.arg(rustc);
- cmd
- } else {
- std::process::Command::new(rustc)
- };
-
- cmd.arg("--crate-type=rlib") // Don't require `main`.
- .arg("--emit=metadata") // Do as little as possible but still parse.
- .arg("--target")
- .arg(target)
- .arg("--out-dir")
- .arg(out_dir); // Put the output somewhere inconsequential.
-
- // If Cargo wants to set RUSTFLAGS, use that.
- if let Ok(rustflags) = var("CARGO_ENCODED_RUSTFLAGS") {
- if !rustflags.is_empty() {
- for arg in rustflags.split('\x1f') {
- cmd.arg(arg);
- }
- }
- }
-
- let mut child = cmd
- .arg("-") // Read from stdin.
- .stdin(Stdio::piped()) // Stdin is a pipe.
- .stderr(Stdio::null()) // Errors from feature detection aren't interesting and can be confusing.
- .spawn()
- .unwrap();
-
- writeln!(child.stdin.take().unwrap(), "{}", test.as_ref()).unwrap();
-
- child.wait().unwrap().success()
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/c.rs b/vendor/rustix-0.37.6/src/backend/libc/c.rs
deleted file mode 100644
index 35d24d893..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/c.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-pub(crate) use libc::*;
-
-/// `PROC_SUPER_MAGIC`—The magic number for the procfs filesystem.
-#[cfg(all(any(target_os = "android", target_os = "linux"), target_env = "musl"))]
-pub(crate) const PROC_SUPER_MAGIC: u32 = 0x0000_9fa0;
-
-/// `NFS_SUPER_MAGIC`—The magic number for the NFS filesystem.
-#[cfg(all(any(target_os = "android", target_os = "linux"), target_env = "musl"))]
-pub(crate) const NFS_SUPER_MAGIC: u32 = 0x0000_6969;
diff --git a/vendor/rustix-0.37.6/src/backend/libc/conv.rs b/vendor/rustix-0.37.6/src/backend/libc/conv.rs
deleted file mode 100644
index 1e74ea9ba..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/conv.rs
+++ /dev/null
@@ -1,222 +0,0 @@
-//! Libc call arguments and return values are often things like `c_int`,
-//! `c_uint`, or libc-specific pointer types. This module provides functions
-//! for converting between rustix's types and libc types.
-
-#![allow(dead_code)]
-
-use super::c;
-use super::fd::{AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, LibcFd, OwnedFd, RawFd};
-#[cfg(not(windows))]
-#[cfg(feature = "fs")]
-use super::offset::libc_off_t;
-#[cfg(not(windows))]
-use crate::ffi::CStr;
-use crate::io;
-#[cfg(windows)]
-use core::convert::TryInto;
-
-#[cfg(not(windows))]
-#[inline]
-pub(super) fn c_str(c: &CStr) -> *const c::c_char {
- c.as_ptr()
-}
-
-#[cfg(not(windows))]
-#[inline]
-pub(super) fn no_fd() -> LibcFd {
- -1
-}
-
-#[inline]
-pub(super) fn borrowed_fd(fd: BorrowedFd<'_>) -> LibcFd {
- fd.as_raw_fd() as LibcFd
-}
-
-#[inline]
-pub(super) fn owned_fd(fd: OwnedFd) -> LibcFd {
- fd.into_raw_fd() as LibcFd
-}
-
-#[inline]
-pub(super) fn ret(raw: c::c_int) -> io::Result<()> {
- if raw == 0 {
- Ok(())
- } else {
- Err(io::Errno::last_os_error())
- }
-}
-
-#[inline]
-pub(super) fn syscall_ret(raw: c::c_long) -> io::Result<()> {
- if raw == 0 {
- Ok(())
- } else {
- Err(io::Errno::last_os_error())
- }
-}
-
-#[inline]
-pub(super) fn nonnegative_ret(raw: c::c_int) -> io::Result<()> {
- if raw >= 0 {
- Ok(())
- } else {
- Err(io::Errno::last_os_error())
- }
-}
-
-#[inline]
-pub(super) unsafe fn ret_infallible(raw: c::c_int) {
- debug_assert_eq!(raw, 0, "unexpected error: {:?}", io::Errno::last_os_error());
-}
-
-#[inline]
-pub(super) fn ret_c_int(raw: c::c_int) -> io::Result<c::c_int> {
- if raw == -1 {
- Err(io::Errno::last_os_error())
- } else {
- Ok(raw)
- }
-}
-
-#[inline]
-pub(super) fn ret_u32(raw: c::c_int) -> io::Result<u32> {
- if raw == -1 {
- Err(io::Errno::last_os_error())
- } else {
- Ok(raw as u32)
- }
-}
-
-#[inline]
-pub(super) fn ret_ssize_t(raw: c::ssize_t) -> io::Result<c::ssize_t> {
- if raw == -1 {
- Err(io::Errno::last_os_error())
- } else {
- Ok(raw)
- }
-}
-
-#[inline]
-pub(super) fn syscall_ret_ssize_t(raw: c::c_long) -> io::Result<c::ssize_t> {
- if raw == -1 {
- Err(io::Errno::last_os_error())
- } else {
- Ok(raw as c::ssize_t)
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub(super) fn syscall_ret_u32(raw: c::c_long) -> io::Result<u32> {
- if raw == -1 {
- Err(io::Errno::last_os_error())
- } else {
- let r32 = raw as u32;
-
- // Converting `raw` to `u32` should be lossless.
- debug_assert_eq!(r32 as c::c_long, raw);
-
- Ok(r32)
- }
-}
-
-#[cfg(not(windows))]
-#[cfg(feature = "fs")]
-#[inline]
-pub(super) fn ret_off_t(raw: libc_off_t) -> io::Result<libc_off_t> {
- if raw == -1 {
- Err(io::Errno::last_os_error())
- } else {
- Ok(raw)
- }
-}
-
-#[cfg(not(windows))]
-#[inline]
-pub(super) fn ret_pid_t(raw: c::pid_t) -> io::Result<c::pid_t> {
- if raw == -1 {
- Err(io::Errno::last_os_error())
- } else {
- Ok(raw)
- }
-}
-
-/// Convert a `c_int` returned from a libc function to an `OwnedFd`, if valid.
-///
-/// # Safety
-///
-/// The caller must ensure that this is the return value of a libc function
-/// which returns an owned file descriptor.
-#[inline]
-pub(super) unsafe fn ret_owned_fd(raw: LibcFd) -> io::Result<OwnedFd> {
- if raw == !0 {
- Err(io::Errno::last_os_error())
- } else {
- Ok(OwnedFd::from_raw_fd(raw as RawFd))
- }
-}
-
-#[inline]
-pub(super) fn ret_discarded_fd(raw: LibcFd) -> io::Result<()> {
- if raw == !0 {
- Err(io::Errno::last_os_error())
- } else {
- Ok(())
- }
-}
-
-#[inline]
-pub(super) fn ret_discarded_char_ptr(raw: *mut c::c_char) -> io::Result<()> {
- if raw.is_null() {
- Err(io::Errno::last_os_error())
- } else {
- Ok(())
- }
-}
-
-/// Convert a `c_long` returned from `syscall` to an `OwnedFd`, if valid.
-///
-/// # Safety
-///
-/// The caller must ensure that this is the return value of a `syscall` call
-/// which returns an owned file descriptor.
-#[cfg(not(windows))]
-#[inline]
-pub(super) unsafe fn syscall_ret_owned_fd(raw: c::c_long) -> io::Result<OwnedFd> {
- if raw == -1 {
- Err(io::Errno::last_os_error())
- } else {
- Ok(OwnedFd::from_raw_fd(raw as RawFd))
- }
-}
-
-/// Convert the buffer-length argument value of a `send` or `recv` call.
-#[cfg(not(windows))]
-#[inline]
-pub(super) fn send_recv_len(len: usize) -> usize {
- len
-}
-
-/// Convert the buffer-length argument value of a `send` or `recv` call.
-#[cfg(windows)]
-#[inline]
-pub(super) fn send_recv_len(len: usize) -> i32 {
- // On Windows, the length argument has type `i32`; saturate the length,
- // since `send` and `recv` are allowed to send and recv less data than
- // requested.
- len.try_into().unwrap_or(i32::MAX)
-}
-
-/// Convert the return value of a `send` or `recv` call.
-#[cfg(not(windows))]
-#[inline]
-pub(super) fn ret_send_recv(len: isize) -> io::Result<c::ssize_t> {
- ret_ssize_t(len)
-}
-
-/// Convert the return value of a `send` or `recv` call.
-#[cfg(windows)]
-#[inline]
-pub(super) fn ret_send_recv(len: i32) -> io::Result<c::ssize_t> {
- ret_ssize_t(len as isize)
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/fs/dir.rs b/vendor/rustix-0.37.6/src/backend/libc/fs/dir.rs
deleted file mode 100644
index d1c901323..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/fs/dir.rs
+++ /dev/null
@@ -1,405 +0,0 @@
-use super::super::c;
-use super::super::conv::owned_fd;
-#[cfg(not(any(solarish, target_os = "haiku")))]
-use super::types::FileType;
-use crate::fd::{AsFd, BorrowedFd};
-use crate::ffi::CStr;
-#[cfg(target_os = "wasi")]
-use crate::ffi::CString;
-use crate::fs::{fcntl_getfl, fstat, openat, Mode, OFlags, Stat};
-#[cfg(not(any(
- solarish,
- target_os = "haiku",
- target_os = "netbsd",
- target_os = "redox",
- target_os = "wasi",
-)))]
-use crate::fs::{fstatfs, StatFs};
-#[cfg(not(any(solarish, target_os = "haiku", target_os = "redox", target_os = "wasi")))]
-use crate::fs::{fstatvfs, StatVfs};
-use crate::io;
-#[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))]
-use crate::process::fchdir;
-#[cfg(target_os = "wasi")]
-use alloc::borrow::ToOwned;
-#[cfg(not(any(linux_like, target_os = "openbsd")))]
-use c::dirent as libc_dirent;
-#[cfg(not(linux_like))]
-use c::readdir as libc_readdir;
-#[cfg(linux_like)]
-use c::{dirent64 as libc_dirent, readdir64 as libc_readdir};
-use core::fmt;
-use core::mem::zeroed;
-use core::ptr::NonNull;
-use libc_errno::{errno, set_errno, Errno};
-
-/// `DIR*`
-#[repr(transparent)]
-pub struct Dir(NonNull<c::DIR>);
-
-impl Dir {
- /// Construct a `Dir` that reads entries from the given directory
- /// file descriptor.
- #[inline]
- pub fn read_from<Fd: AsFd>(fd: Fd) -> io::Result<Self> {
- Self::_read_from(fd.as_fd())
- }
-
- #[inline]
- fn _read_from(fd: BorrowedFd<'_>) -> io::Result<Self> {
- // Given an arbitrary `OwnedFd`, it's impossible to know whether the
- // user holds a `dup`'d copy which could continue to modify the
- // file description state, which would cause Undefined Behavior after
- // our call to `fdopendir`. To prevent this, we obtain an independent
- // `OwnedFd`.
- let flags = fcntl_getfl(fd)?;
- let fd_for_dir = openat(fd, cstr!("."), flags | OFlags::CLOEXEC, Mode::empty())?;
-
- let raw = owned_fd(fd_for_dir);
- unsafe {
- let libc_dir = c::fdopendir(raw);
-
- if let Some(libc_dir) = NonNull::new(libc_dir) {
- Ok(Self(libc_dir))
- } else {
- let err = io::Errno::last_os_error();
- let _ = c::close(raw);
- Err(err)
- }
- }
- }
-
- /// `rewinddir(self)`
- #[inline]
- pub fn rewind(&mut self) {
- unsafe { c::rewinddir(self.0.as_ptr()) }
- }
-
- /// `readdir(self)`, where `None` means the end of the directory.
- pub fn read(&mut self) -> Option<io::Result<DirEntry>> {
- set_errno(Errno(0));
- let dirent_ptr = unsafe { libc_readdir(self.0.as_ptr()) };
- if dirent_ptr.is_null() {
- let curr_errno = errno().0;
- if curr_errno == 0 {
- // We successfully reached the end of the stream.
- None
- } else {
- // `errno` is unknown or non-zero, so an error occurred.
- Some(Err(io::Errno(curr_errno)))
- }
- } else {
- // We successfully read an entry.
- unsafe {
- // We have our own copy of OpenBSD's dirent; check that the
- // layout minimally matches libc's.
- #[cfg(target_os = "openbsd")]
- check_dirent_layout(&*dirent_ptr);
-
- let result = DirEntry {
- dirent: read_dirent(&*dirent_ptr.cast()),
-
- #[cfg(target_os = "wasi")]
- name: CStr::from_ptr((*dirent_ptr).d_name.as_ptr()).to_owned(),
- };
-
- Some(Ok(result))
- }
- }
- }
-
- /// `fstat(self)`
- #[inline]
- pub fn stat(&self) -> io::Result<Stat> {
- fstat(unsafe { BorrowedFd::borrow_raw(c::dirfd(self.0.as_ptr())) })
- }
-
- /// `fstatfs(self)`
- #[cfg(not(any(
- solarish,
- target_os = "haiku",
- target_os = "netbsd",
- target_os = "redox",
- target_os = "wasi",
- )))]
- #[inline]
- pub fn statfs(&self) -> io::Result<StatFs> {
- fstatfs(unsafe { BorrowedFd::borrow_raw(c::dirfd(self.0.as_ptr())) })
- }
-
- /// `fstatvfs(self)`
- #[cfg(not(any(solarish, target_os = "haiku", target_os = "redox", target_os = "wasi")))]
- #[inline]
- pub fn statvfs(&self) -> io::Result<StatVfs> {
- fstatvfs(unsafe { BorrowedFd::borrow_raw(c::dirfd(self.0.as_ptr())) })
- }
-
- /// `fchdir(self)`
- #[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))]
- #[inline]
- pub fn chdir(&self) -> io::Result<()> {
- fchdir(unsafe { BorrowedFd::borrow_raw(c::dirfd(self.0.as_ptr())) })
- }
-}
-
-// A `dirent` pointer returned from `readdir` may not point to a full `dirent`
-// struct, as the name is NUL-terminated and memory may not be allocated for
-// the full extent of the struct. Copy the fields one at a time.
-unsafe fn read_dirent(input: &libc_dirent) -> libc_dirent {
- #[cfg(not(any(solarish, target_os = "aix", target_os = "haiku")))]
- let d_type = input.d_type;
-
- #[cfg(not(any(
- apple,
- freebsdlike,
- target_os = "aix",
- target_os = "haiku",
- target_os = "netbsd",
- target_os = "wasi",
- )))]
- let d_off = input.d_off;
-
- #[cfg(target_os = "aix")]
- let d_offset = input.d_offset;
-
- #[cfg(not(any(freebsdlike, netbsdlike)))]
- let d_ino = input.d_ino;
-
- #[cfg(any(freebsdlike, netbsdlike))]
- let d_fileno = input.d_fileno;
-
- #[cfg(not(any(target_os = "dragonfly", target_os = "wasi")))]
- let d_reclen = input.d_reclen;
-
- #[cfg(any(bsd, target_os = "aix"))]
- let d_namlen = input.d_namlen;
-
- #[cfg(apple)]
- let d_seekoff = input.d_seekoff;
-
- #[cfg(target_os = "haiku")]
- let d_dev = input.d_dev;
- #[cfg(target_os = "haiku")]
- let d_pdev = input.d_pdev;
- #[cfg(target_os = "haiku")]
- let d_pino = input.d_pino;
-
- // Construct the input. Rust will give us an error if any OS has a input
- // with a field that we missed here. And we can avoid blindly copying the
- // whole `d_name` field, which may not be entirely allocated.
- #[cfg_attr(target_os = "wasi", allow(unused_mut))]
- #[cfg(not(freebsdlike))]
- let mut dirent = libc_dirent {
- #[cfg(not(any(solarish, target_os = "aix", target_os = "haiku")))]
- d_type,
- #[cfg(not(any(
- apple,
- target_os = "aix",
- target_os = "freebsd", // Until FreeBSD 12
- target_os = "haiku",
- target_os = "netbsd",
- target_os = "wasi",
- )))]
- d_off,
- #[cfg(target_os = "aix")]
- d_offset,
- #[cfg(not(any(netbsdlike, target_os = "freebsd")))]
- d_ino,
- #[cfg(any(netbsdlike, target_os = "freebsd"))]
- d_fileno,
- #[cfg(not(target_os = "wasi"))]
- d_reclen,
- #[cfg(any(apple, netbsdlike, target_os = "aix", target_os = "freebsd"))]
- d_namlen,
- #[cfg(apple)]
- d_seekoff,
- // The `d_name` field is NUL-terminated, and we need to be careful not
- // to read bytes past the NUL, even though they're within the nominal
- // extent of the `struct dirent`, because they may not be allocated. So
- // don't read it from `dirent_ptr`.
- //
- // In theory this could use `MaybeUninit::uninit().assume_init()`, but
- // that [invokes undefined behavior].
- //
- // [invokes undefined behavior]: https://doc.rust-lang.org/stable/core/mem/union.MaybeUninit.html#initialization-invariant
- d_name: zeroed(),
- #[cfg(target_os = "openbsd")]
- __d_padding: zeroed(),
- #[cfg(target_os = "haiku")]
- d_dev,
- #[cfg(target_os = "haiku")]
- d_pdev,
- #[cfg(target_os = "haiku")]
- d_pino,
- };
- /*
- pub d_ino: ino_t,
- pub d_pino: i64,
- pub d_reclen: ::c_ushort,
- pub d_name: [::c_char; 1024], // Max length is _POSIX_PATH_MAX
- */
-
- // On dragonfly and FreeBSD 12, `dirent` has some non-public padding fields
- // so we can't directly initialize it.
- #[cfg(freebsdlike)]
- let mut dirent = {
- let mut dirent: libc_dirent = zeroed();
- dirent.d_fileno = d_fileno;
- dirent.d_namlen = d_namlen;
- dirent.d_type = d_type;
- #[cfg(target_os = "freebsd")]
- {
- dirent.d_reclen = d_reclen;
- }
- dirent
- };
-
- // Copy from d_name, reading up to and including the first NUL.
- #[cfg(not(target_os = "wasi"))]
- {
- let name_len = CStr::from_ptr(input.d_name.as_ptr())
- .to_bytes_with_nul()
- .len();
- dirent.d_name[..name_len].copy_from_slice(&input.d_name[..name_len]);
- }
-
- dirent
-}
-
-/// `Dir` implements `Send` but not `Sync`, because we use `readdir` which is
-/// not guaranteed to be thread-safe. Users can wrap this in a `Mutex` if they
-/// need `Sync`, which is effectively what'd need to do to implement `Sync`
-/// ourselves.
-unsafe impl Send for Dir {}
-
-impl Drop for Dir {
- #[inline]
- fn drop(&mut self) {
- unsafe { c::closedir(self.0.as_ptr()) };
- }
-}
-
-impl Iterator for Dir {
- type Item = io::Result<DirEntry>;
-
- #[inline]
- fn next(&mut self) -> Option<Self::Item> {
- Self::read(self)
- }
-}
-
-impl fmt::Debug for Dir {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.debug_struct("Dir")
- .field("fd", unsafe { &c::dirfd(self.0.as_ptr()) })
- .finish()
- }
-}
-
-/// `struct dirent`
-#[derive(Debug)]
-pub struct DirEntry {
- dirent: libc_dirent,
-
- #[cfg(target_os = "wasi")]
- name: CString,
-}
-
-impl DirEntry {
- /// Returns the file name of this directory entry.
- #[inline]
- pub fn file_name(&self) -> &CStr {
- #[cfg(not(target_os = "wasi"))]
- unsafe {
- CStr::from_ptr(self.dirent.d_name.as_ptr())
- }
-
- #[cfg(target_os = "wasi")]
- &self.name
- }
-
- /// Returns the type of this directory entry.
- #[cfg(not(any(solarish, target_os = "aix", target_os = "haiku")))]
- #[inline]
- pub fn file_type(&self) -> FileType {
- FileType::from_dirent_d_type(self.dirent.d_type)
- }
-
- /// Return the inode number of this directory entry.
- #[cfg(not(any(freebsdlike, netbsdlike)))]
- #[inline]
- pub fn ino(&self) -> u64 {
- self.dirent.d_ino as u64
- }
-
- /// Return the inode number of this directory entry.
- #[cfg(any(freebsdlike, netbsdlike))]
- #[inline]
- pub fn ino(&self) -> u64 {
- #[allow(clippy::useless_conversion)]
- self.dirent.d_fileno.into()
- }
-}
-
-/// libc's OpenBSD `dirent` has a private field so we can't construct it
-/// directly, so we declare it ourselves to make all fields accessible.
-#[cfg(target_os = "openbsd")]
-#[repr(C)]
-#[derive(Debug)]
-struct libc_dirent {
- d_fileno: c::ino_t,
- d_off: c::off_t,
- d_reclen: u16,
- d_type: u8,
- d_namlen: u8,
- __d_padding: [u8; 4],
- d_name: [c::c_char; 256],
-}
-
-/// We have our own copy of OpenBSD's dirent; check that the layout
-/// minimally matches libc's.
-#[cfg(target_os = "openbsd")]
-fn check_dirent_layout(dirent: &c::dirent) {
- use crate::utils::as_ptr;
- use core::mem::{align_of, size_of};
-
- // Check that the basic layouts match.
- assert_eq!(size_of::<libc_dirent>(), size_of::<c::dirent>());
- assert_eq!(align_of::<libc_dirent>(), align_of::<c::dirent>());
-
- // Check that the field offsets match.
- assert_eq!(
- {
- let z = libc_dirent {
- d_fileno: 0_u64,
- d_off: 0_i64,
- d_reclen: 0_u16,
- d_type: 0_u8,
- d_namlen: 0_u8,
- __d_padding: [0_u8; 4],
- d_name: [0 as c::c_char; 256],
- };
- let base = as_ptr(&z) as usize;
- (
- (as_ptr(&z.d_fileno) as usize) - base,
- (as_ptr(&z.d_off) as usize) - base,
- (as_ptr(&z.d_reclen) as usize) - base,
- (as_ptr(&z.d_type) as usize) - base,
- (as_ptr(&z.d_namlen) as usize) - base,
- (as_ptr(&z.d_name) as usize) - base,
- )
- },
- {
- let z = dirent;
- let base = as_ptr(z) as usize;
- (
- (as_ptr(&z.d_fileno) as usize) - base,
- (as_ptr(&z.d_off) as usize) - base,
- (as_ptr(&z.d_reclen) as usize) - base,
- (as_ptr(&z.d_type) as usize) - base,
- (as_ptr(&z.d_namlen) as usize) - base,
- (as_ptr(&z.d_name) as usize) - base,
- )
- }
- );
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/fs/inotify.rs b/vendor/rustix-0.37.6/src/backend/libc/fs/inotify.rs
deleted file mode 100644
index 8a42e0583..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/fs/inotify.rs
+++ /dev/null
@@ -1,121 +0,0 @@
-//! inotify support for working with inotifies
-
-use super::super::c;
-use super::super::conv::{borrowed_fd, c_str, ret, ret_c_int, ret_owned_fd};
-use crate::fd::{BorrowedFd, OwnedFd};
-use crate::io;
-use bitflags::bitflags;
-
-bitflags! {
- /// `IN_*` for use with [`inotify_init`].
- ///
- /// [`inotify_init`]: crate::fs::inotify::inotify_init
- pub struct CreateFlags: c::c_int {
- /// `IN_CLOEXEC`
- const CLOEXEC = c::IN_CLOEXEC;
- /// `IN_NONBLOCK`
- const NONBLOCK = c::IN_NONBLOCK;
- }
-}
-
-bitflags! {
- /// `IN*` for use with [`inotify_add_watch`].
- ///
- /// [`inotify_add_watch`]: crate::fs::inotify::inotify_add_watch
- #[derive(Default)]
- pub struct WatchFlags: u32 {
- /// `IN_ACCESS`
- const ACCESS = c::IN_ACCESS;
- /// `IN_ATTRIB`
- const ATTRIB = c::IN_ATTRIB;
- /// `IN_CLOSE_NOWRITE`
- const CLOSE_NOWRITE = c::IN_CLOSE_NOWRITE;
- /// `IN_CLOSE_WRITE`
- const CLOSE_WRITE = c::IN_CLOSE_WRITE;
- /// `IN_CREATE `
- const CREATE = c::IN_CREATE;
- /// `IN_DELETE`
- const DELETE = c::IN_DELETE;
- /// `IN_DELETE_SELF`
- const DELETE_SELF = c::IN_DELETE_SELF;
- /// `IN_MODIFY`
- const MODIFY = c::IN_MODIFY;
- /// `IN_MOVE_SELF`
- const MOVE_SELF = c::IN_MOVE_SELF;
- /// `IN_MOVED_FROM`
- const MOVED_FROM = c::IN_MOVED_FROM;
- /// `IN_MOVED_TO`
- const MOVED_TO = c::IN_MOVED_TO;
- /// `IN_OPEN`
- const OPEN = c::IN_OPEN;
-
- /// `IN_CLOSE`
- const CLOSE = c::IN_CLOSE;
- /// `IN_MOVE`
- const MOVE = c::IN_MOVE;
- /// `IN_ALL_EVENTS`
- const ALL_EVENTS = c::IN_ALL_EVENTS;
-
- /// `IN_DONT_FOLLOW`
- const DONT_FOLLOW = c::IN_DONT_FOLLOW;
- /// `IN_EXCL_UNLINK`
- const EXCL_UNLINK = 1;
- /// `IN_MASK_ADD`
- const MASK_ADD = 1;
- /// `IN_MASK_CREATE`
- const MASK_CREATE = 1;
- /// `IN_ONESHOT`
- const ONESHOT = c::IN_ONESHOT;
- /// `IN_ONLYDIR`
- const ONLYDIR = c::IN_ONLYDIR;
- }
-}
-
-/// `inotify_init1(flags)`—Creates a new inotify object.
-///
-/// Use the [`CreateFlags::CLOEXEC`] flag to prevent the resulting file
-/// descriptor from being implicitly passed across `exec` boundaries.
-#[doc(alias = "inotify_init1")]
-pub fn inotify_init(flags: CreateFlags) -> io::Result<OwnedFd> {
- // SAFETY: `inotify_init1` has no safety preconditions.
- unsafe { ret_owned_fd(c::inotify_init1(flags.bits())) }
-}
-
-/// `inotify_add_watch(self, path, flags)`—Adds a watch to inotify
-///
-/// This registers or updates a watch for the filesystem path `path`
-/// and returns a watch descriptor corresponding to this watch.
-///
-/// Note: Due to the existence of hardlinks, providing two
-/// different paths to this method may result in it returning
-/// the same watch descriptor. An application should keep track of this
-/// externally to avoid logic errors.
-pub fn inotify_add_watch<P: crate::path::Arg>(
- inot: BorrowedFd<'_>,
- path: P,
- flags: WatchFlags,
-) -> io::Result<i32> {
- let path = path.as_cow_c_str().unwrap();
- // SAFETY: The fd and path we are passing is guaranteed valid by the type
- // system.
- unsafe {
- ret_c_int(c::inotify_add_watch(
- borrowed_fd(inot),
- c_str(&path),
- flags.bits(),
- ))
- }
-}
-
-/// `inotify_rm_watch(self, wd)`—Removes a watch from this inotify
-///
-/// The watch descriptor provided should have previously been returned
-/// by [`inotify_add_watch`] and not previously have been removed.
-#[doc(alias = "inotify_rm_watch")]
-pub fn inotify_remove_watch(inot: BorrowedFd<'_>, wd: i32) -> io::Result<()> {
- // Android's `inotify_rm_watch` takes u32 despite `inotify_add_watch` is i32.
- #[cfg(target_os = "android")]
- let wd = wd as u32;
- // SAFETY: The fd is valid and closing an arbitrary wd is valid.
- unsafe { ret(c::inotify_rm_watch(borrowed_fd(inot), wd)) }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/fs/makedev.rs b/vendor/rustix-0.37.6/src/backend/libc/fs/makedev.rs
deleted file mode 100644
index afe942a59..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/fs/makedev.rs
+++ /dev/null
@@ -1,120 +0,0 @@
-#[cfg(not(all(target_os = "android", target_pointer_width = "32")))]
-use super::super::c;
-use crate::fs::Dev;
-
-#[cfg(not(any(
- apple,
- target_os = "aix",
- target_os = "android",
- target_os = "emscripten",
-)))]
-#[inline]
-pub(crate) fn makedev(maj: u32, min: u32) -> Dev {
- c::makedev(maj, min)
-}
-
-#[cfg(all(target_os = "android", not(target_pointer_width = "32")))]
-#[inline]
-pub(crate) fn makedev(maj: u32, min: u32) -> Dev {
- c::makedev(maj, min)
-}
-
-#[cfg(all(target_os = "android", target_pointer_width = "32"))]
-#[inline]
-pub(crate) fn makedev(maj: u32, min: u32) -> Dev {
- // 32-bit Android's `dev_t` is 32-bit, but its `st_dev` is 64-bit,
- // so we do it ourselves.
- ((u64::from(maj) & 0xffff_f000_u64) << 32)
- | ((u64::from(maj) & 0x0000_0fff_u64) << 8)
- | ((u64::from(min) & 0xffff_ff00_u64) << 12)
- | (u64::from(min) & 0x0000_00ff_u64)
-}
-
-#[cfg(target_os = "emscripten")]
-#[inline]
-pub(crate) fn makedev(maj: u32, min: u32) -> Dev {
- // Emscripten's `makedev` has a 32-bit return value.
- Dev::from(c::makedev(maj, min))
-}
-
-#[cfg(apple)]
-#[inline]
-pub(crate) fn makedev(maj: u32, min: u32) -> Dev {
- // Apple's `makedev` oddly has signed argument types and is `unsafe`.
- unsafe { c::makedev(maj as i32, min as i32) }
-}
-
-#[cfg(target_os = "aix")]
-#[inline]
-pub(crate) fn makedev(maj: u32, min: u32) -> Dev {
- // AIX's `makedev` oddly is `unsafe`.
- unsafe { c::makedev(maj, min) }
-}
-
-#[cfg(not(any(
- apple,
- freebsdlike,
- netbsdlike,
- target_os = "android",
- target_os = "emscripten",
-)))]
-#[inline]
-pub(crate) fn major(dev: Dev) -> u32 {
- unsafe { c::major(dev) }
-}
-
-#[cfg(all(target_os = "android", not(target_pointer_width = "32")))]
-#[inline]
-pub(crate) fn major(dev: Dev) -> u32 {
- // Android's `major` oddly has signed return types.
- (unsafe { c::major(dev) }) as u32
-}
-
-#[cfg(all(target_os = "android", target_pointer_width = "32"))]
-#[inline]
-pub(crate) fn major(dev: Dev) -> u32 {
- // 32-bit Android's `dev_t` is 32-bit, but its `st_dev` is 64-bit,
- // so we do it ourselves.
- (((dev >> 31 >> 1) & 0xffff_f000) | ((dev >> 8) & 0x0000_0fff)) as u32
-}
-
-#[cfg(target_os = "emscripten")]
-#[inline]
-pub(crate) fn major(dev: Dev) -> u32 {
- // Emscripten's `major` has a 32-bit argument value.
- unsafe { c::major(dev as u32) }
-}
-
-#[cfg(not(any(
- apple,
- freebsdlike,
- netbsdlike,
- target_os = "android",
- target_os = "emscripten",
-)))]
-#[inline]
-pub(crate) fn minor(dev: Dev) -> u32 {
- unsafe { c::minor(dev) }
-}
-
-#[cfg(all(target_os = "android", not(target_pointer_width = "32")))]
-#[inline]
-pub(crate) fn minor(dev: Dev) -> u32 {
- // Android's `minor` oddly has signed return types.
- (unsafe { c::minor(dev) }) as u32
-}
-
-#[cfg(all(target_os = "android", target_pointer_width = "32"))]
-#[inline]
-pub(crate) fn minor(dev: Dev) -> u32 {
- // 32-bit Android's `dev_t` is 32-bit, but its `st_dev` is 64-bit,
- // so we do it ourselves.
- (((dev >> 12) & 0xffff_ff00) | (dev & 0x0000_00ff)) as u32
-}
-
-#[cfg(target_os = "emscripten")]
-#[inline]
-pub(crate) fn minor(dev: Dev) -> u32 {
- // Emscripten's `minor` has a 32-bit argument value.
- unsafe { c::minor(dev as u32) }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/fs/mod.rs b/vendor/rustix-0.37.6/src/backend/libc/fs/mod.rs
deleted file mode 100644
index 54a48103c..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/fs/mod.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-#[cfg(not(target_os = "redox"))]
-pub(crate) mod dir;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub mod inotify;
-#[cfg(not(any(solarish, target_os = "haiku", target_os = "redox", target_os = "wasi")))]
-pub(crate) mod makedev;
-#[cfg(not(windows))]
-pub(crate) mod syscalls;
-pub(crate) mod types;
diff --git a/vendor/rustix-0.37.6/src/backend/libc/fs/syscalls.rs b/vendor/rustix-0.37.6/src/backend/libc/fs/syscalls.rs
deleted file mode 100644
index 77b49ee3e..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/fs/syscalls.rs
+++ /dev/null
@@ -1,1810 +0,0 @@
-//! libc syscalls supporting `rustix::fs`.
-
-use super::super::c;
-use super::super::conv::{
- borrowed_fd, c_str, ret, ret_c_int, ret_off_t, ret_owned_fd, ret_ssize_t,
-};
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use super::super::conv::{syscall_ret, syscall_ret_owned_fd, syscall_ret_ssize_t};
-#[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))]
-use super::super::offset::libc_fallocate;
-#[cfg(not(any(
- apple,
- netbsdlike,
- solarish,
- target_os = "dragonfly",
- target_os = "haiku",
- target_os = "redox",
-)))]
-use super::super::offset::libc_posix_fadvise;
-#[cfg(not(any(
- apple,
- netbsdlike,
- solarish,
- target_os = "aix",
- target_os = "android",
- target_os = "dragonfly",
- target_os = "fuchsia",
- target_os = "linux",
- target_os = "redox",
-)))]
-use super::super::offset::libc_posix_fallocate;
-use super::super::offset::{libc_fstat, libc_fstatat, libc_ftruncate, libc_lseek, libc_off_t};
-#[cfg(not(any(
- solarish,
- target_os = "haiku",
- target_os = "netbsd",
- target_os = "redox",
- target_os = "wasi",
-)))]
-use super::super::offset::{libc_fstatfs, libc_statfs};
-#[cfg(not(any(solarish, target_os = "haiku", target_os = "redox", target_os = "wasi")))]
-use super::super::offset::{libc_fstatvfs, libc_statvfs};
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-use super::super::time::types::LibcTimespec;
-use crate::fd::{BorrowedFd, OwnedFd};
-use crate::ffi::CStr;
-#[cfg(apple)]
-use crate::ffi::CString;
-#[cfg(not(solarish))]
-use crate::fs::Access;
-#[cfg(not(any(
- apple,
- netbsdlike,
- solarish,
- target_os = "dragonfly",
- target_os = "haiku",
- target_os = "redox",
-)))]
-use crate::fs::Advice;
-#[cfg(not(any(
- netbsdlike,
- solarish,
- target_os = "aix",
- target_os = "dragonfly",
- target_os = "redox",
-)))]
-use crate::fs::FallocateFlags;
-#[cfg(not(target_os = "wasi"))]
-use crate::fs::FlockOperation;
-#[cfg(any(target_os = "android", target_os = "freebsd", target_os = "linux"))]
-use crate::fs::MemfdFlags;
-#[cfg(any(
- target_os = "android",
- target_os = "freebsd",
- target_os = "fuchsia",
- target_os = "linux",
-))]
-use crate::fs::SealFlags;
-#[cfg(not(any(
- solarish,
- target_os = "haiku",
- target_os = "netbsd",
- target_os = "redox",
- target_os = "wasi",
-)))]
-use crate::fs::StatFs;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use crate::fs::{cwd, RenameFlags, ResolveFlags, Statx, StatxFlags};
-#[cfg(not(any(apple, target_os = "redox", target_os = "wasi")))]
-use crate::fs::{Dev, FileType};
-use crate::fs::{Mode, OFlags, Stat, Timestamps};
-#[cfg(not(any(solarish, target_os = "haiku", target_os = "redox", target_os = "wasi")))]
-use crate::fs::{StatVfs, StatVfsMountFlags};
-use crate::io::{self, SeekFrom};
-#[cfg(not(target_os = "wasi"))]
-use crate::process::{Gid, Uid};
-#[cfg(not(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-)))]
-use crate::utils::as_ptr;
-use core::convert::TryInto;
-#[cfg(any(apple, target_os = "android", target_os = "linux"))]
-use core::mem::size_of;
-use core::mem::MaybeUninit;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use core::ptr::null;
-#[cfg(any(apple, target_os = "android", target_os = "linux"))]
-use core::ptr::null_mut;
-#[cfg(apple)]
-use {
- super::super::conv::nonnegative_ret,
- crate::fs::{copyfile_state_t, CloneFlags, CopyfileFlags},
-};
-#[cfg(not(target_os = "redox"))]
-use {super::super::offset::libc_openat, crate::fs::AtFlags};
-
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-weak!(fn __utimensat64(c::c_int, *const c::c_char, *const LibcTimespec, c::c_int) -> c::c_int);
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-weak!(fn __futimens64(c::c_int, *const LibcTimespec) -> c::c_int);
-
-/// Use a direct syscall (via libc) for `openat`.
-///
-/// This is only currently necessary as a workaround for old glibc; see below.
-#[cfg(all(unix, target_env = "gnu"))]
-fn openat_via_syscall(
- dirfd: BorrowedFd<'_>,
- path: &CStr,
- oflags: OFlags,
- mode: Mode,
-) -> io::Result<OwnedFd> {
- unsafe {
- let dirfd = borrowed_fd(dirfd);
- let path = c_str(path);
- let oflags = oflags.bits();
- let mode = c::c_uint::from(mode.bits());
- ret_owned_fd(c::syscall(
- c::SYS_openat,
- c::c_long::from(dirfd),
- path,
- c::c_long::from(oflags),
- mode as c::c_long,
- ) as c::c_int)
- }
-}
-
-#[cfg(not(target_os = "redox"))]
-pub(crate) fn openat(
- dirfd: BorrowedFd<'_>,
- path: &CStr,
- oflags: OFlags,
- mode: Mode,
-) -> io::Result<OwnedFd> {
- // Work around <https://sourceware.org/bugzilla/show_bug.cgi?id=17523>.
- // GLIBC versions before 2.25 don't handle `O_TMPFILE` correctly.
- #[cfg(all(unix, target_env = "gnu"))]
- if oflags.contains(OFlags::TMPFILE) && crate::backend::if_glibc_is_less_than_2_25() {
- return openat_via_syscall(dirfd, path, oflags, mode);
- }
- unsafe {
- // Pass `mode` as a `c_uint` even if `mode_t` is narrower, since
- // `libc_openat` is declared as a variadic function and narrower
- // arguments are promoted.
- ret_owned_fd(libc_openat(
- borrowed_fd(dirfd),
- c_str(path),
- oflags.bits(),
- c::c_uint::from(mode.bits()),
- ))
- }
-}
-
-#[cfg(not(any(
- solarish,
- target_os = "haiku",
- target_os = "netbsd",
- target_os = "redox",
- target_os = "wasi",
-)))]
-#[inline]
-pub(crate) fn statfs(filename: &CStr) -> io::Result<StatFs> {
- unsafe {
- let mut result = MaybeUninit::<StatFs>::uninit();
- ret(libc_statfs(c_str(filename), result.as_mut_ptr()))?;
- Ok(result.assume_init())
- }
-}
-
-#[cfg(not(any(solarish, target_os = "haiku", target_os = "redox", target_os = "wasi")))]
-#[inline]
-pub(crate) fn statvfs(filename: &CStr) -> io::Result<StatVfs> {
- unsafe {
- let mut result = MaybeUninit::<libc_statvfs>::uninit();
- ret(libc_statvfs(c_str(filename), result.as_mut_ptr()))?;
- Ok(libc_statvfs_to_statvfs(result.assume_init()))
- }
-}
-
-#[cfg(not(target_os = "redox"))]
-#[inline]
-pub(crate) fn readlinkat(dirfd: BorrowedFd<'_>, path: &CStr, buf: &mut [u8]) -> io::Result<usize> {
- unsafe {
- ret_ssize_t(c::readlinkat(
- borrowed_fd(dirfd),
- c_str(path),
- buf.as_mut_ptr().cast::<c::c_char>(),
- buf.len(),
- ))
- .map(|nread| nread as usize)
- }
-}
-
-#[cfg(not(target_os = "redox"))]
-pub(crate) fn mkdirat(dirfd: BorrowedFd<'_>, path: &CStr, mode: Mode) -> io::Result<()> {
- unsafe {
- ret(c::mkdirat(
- borrowed_fd(dirfd),
- c_str(path),
- mode.bits() as c::mode_t,
- ))
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub(crate) fn getdents_uninit(
- fd: BorrowedFd<'_>,
- buf: &mut [MaybeUninit<u8>],
-) -> io::Result<usize> {
- unsafe {
- syscall_ret_ssize_t(c::syscall(
- c::SYS_getdents64,
- fd,
- buf.as_mut_ptr().cast::<c::c_char>(),
- buf.len(),
- ))
- }
- .map(|nread| nread as usize)
-}
-
-#[cfg(not(target_os = "redox"))]
-pub(crate) fn linkat(
- old_dirfd: BorrowedFd<'_>,
- old_path: &CStr,
- new_dirfd: BorrowedFd<'_>,
- new_path: &CStr,
- flags: AtFlags,
-) -> io::Result<()> {
- unsafe {
- ret(c::linkat(
- borrowed_fd(old_dirfd),
- c_str(old_path),
- borrowed_fd(new_dirfd),
- c_str(new_path),
- flags.bits(),
- ))
- }
-}
-
-#[cfg(not(target_os = "redox"))]
-pub(crate) fn unlinkat(dirfd: BorrowedFd<'_>, path: &CStr, flags: AtFlags) -> io::Result<()> {
- unsafe { ret(c::unlinkat(borrowed_fd(dirfd), c_str(path), flags.bits())) }
-}
-
-#[cfg(not(target_os = "redox"))]
-pub(crate) fn renameat(
- old_dirfd: BorrowedFd<'_>,
- old_path: &CStr,
- new_dirfd: BorrowedFd<'_>,
- new_path: &CStr,
-) -> io::Result<()> {
- unsafe {
- ret(c::renameat(
- borrowed_fd(old_dirfd),
- c_str(old_path),
- borrowed_fd(new_dirfd),
- c_str(new_path),
- ))
- }
-}
-
-#[cfg(all(target_os = "linux", target_env = "gnu"))]
-pub(crate) fn renameat2(
- old_dirfd: BorrowedFd<'_>,
- old_path: &CStr,
- new_dirfd: BorrowedFd<'_>,
- new_path: &CStr,
- flags: RenameFlags,
-) -> io::Result<()> {
- // `getrandom` wasn't supported in glibc until 2.28.
- weak_or_syscall! {
- fn renameat2(
- olddirfd: c::c_int,
- oldpath: *const c::c_char,
- newdirfd: c::c_int,
- newpath: *const c::c_char,
- flags: c::c_uint
- ) via SYS_renameat2 -> c::c_int
- }
-
- unsafe {
- ret(renameat2(
- borrowed_fd(old_dirfd),
- c_str(old_path),
- borrowed_fd(new_dirfd),
- c_str(new_path),
- flags.bits(),
- ))
- }
-}
-
-/// At present, `libc` only has `renameat2` defined for glibc. On other
-/// ABIs, `RenameFlags` has no flags defined, and we use plain `renameat`.
-#[cfg(any(
- target_os = "android",
- all(target_os = "linux", not(target_env = "gnu")),
-))]
-#[inline]
-pub(crate) fn renameat2(
- old_dirfd: BorrowedFd<'_>,
- old_path: &CStr,
- new_dirfd: BorrowedFd<'_>,
- new_path: &CStr,
- flags: RenameFlags,
-) -> io::Result<()> {
- assert!(flags.is_empty());
- renameat(old_dirfd, old_path, new_dirfd, new_path)
-}
-
-#[cfg(not(target_os = "redox"))]
-pub(crate) fn symlinkat(
- old_path: &CStr,
- new_dirfd: BorrowedFd<'_>,
- new_path: &CStr,
-) -> io::Result<()> {
- unsafe {
- ret(c::symlinkat(
- c_str(old_path),
- borrowed_fd(new_dirfd),
- c_str(new_path),
- ))
- }
-}
-
-#[cfg(not(target_os = "redox"))]
-pub(crate) fn statat(dirfd: BorrowedFd<'_>, path: &CStr, flags: AtFlags) -> io::Result<Stat> {
- // 32-bit and mips64 Linux: `struct stat64` is not y2038 compatible; use
- // `statx`.
- #[cfg(all(
- any(target_os = "android", target_os = "linux"),
- any(target_pointer_width = "32", target_arch = "mips64"),
- ))]
- {
- match statx(dirfd, path, flags, StatxFlags::BASIC_STATS) {
- Ok(x) => statx_to_stat(x),
- Err(io::Errno::NOSYS) => statat_old(dirfd, path, flags),
- Err(err) => Err(err),
- }
- }
-
- // Main version: libc is y2038 safe. Or, the platform is not y2038 safe and
- // there's nothing practical we can do.
- #[cfg(not(all(
- any(target_os = "android", target_os = "linux"),
- any(target_pointer_width = "32", target_arch = "mips64"),
- )))]
- unsafe {
- let mut stat = MaybeUninit::<Stat>::uninit();
- ret(libc_fstatat(
- borrowed_fd(dirfd),
- c_str(path),
- stat.as_mut_ptr(),
- flags.bits(),
- ))?;
- Ok(stat.assume_init())
- }
-}
-
-#[cfg(all(
- any(target_os = "android", target_os = "linux"),
- any(target_pointer_width = "32", target_arch = "mips64"),
-))]
-fn statat_old(dirfd: BorrowedFd<'_>, path: &CStr, flags: AtFlags) -> io::Result<Stat> {
- unsafe {
- let mut result = MaybeUninit::<c::stat64>::uninit();
- ret(libc_fstatat(
- borrowed_fd(dirfd),
- c_str(path),
- result.as_mut_ptr(),
- flags.bits(),
- ))?;
- stat64_to_stat(result.assume_init())
- }
-}
-
-#[cfg(not(any(solarish, target_os = "emscripten", target_os = "redox")))]
-pub(crate) fn accessat(
- dirfd: BorrowedFd<'_>,
- path: &CStr,
- access: Access,
- flags: AtFlags,
-) -> io::Result<()> {
- unsafe {
- ret(c::faccessat(
- borrowed_fd(dirfd),
- c_str(path),
- access.bits(),
- flags.bits(),
- ))
- }
-}
-
-#[cfg(target_os = "emscripten")]
-pub(crate) fn accessat(
- _dirfd: BorrowedFd<'_>,
- _path: &CStr,
- _access: Access,
- _flags: AtFlags,
-) -> io::Result<()> {
- Ok(())
-}
-
-#[cfg(not(target_os = "redox"))]
-pub(crate) fn utimensat(
- dirfd: BorrowedFd<'_>,
- path: &CStr,
- times: &Timestamps,
- flags: AtFlags,
-) -> io::Result<()> {
- // 32-bit gnu version: libc has `utimensat` but it is not y2038 safe by
- // default.
- #[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
- ))]
- unsafe {
- if let Some(libc_utimensat) = __utimensat64.get() {
- let libc_times: [LibcTimespec; 2] = [
- times.last_access.clone().into(),
- times.last_modification.clone().into(),
- ];
-
- ret(libc_utimensat(
- borrowed_fd(dirfd),
- c_str(path),
- libc_times.as_ptr(),
- flags.bits(),
- ))
- } else {
- utimensat_old(dirfd, path, times, flags)
- }
- }
-
- // Main version: libc is y2038 safe and has `utimensat`. Or, the platform
- // is not y2038 safe and there's nothing practical we can do.
- #[cfg(not(any(
- apple,
- all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
- )
- )))]
- unsafe {
- // Assert that `Timestamps` has the expected layout.
- let _ = core::mem::transmute::<Timestamps, [c::timespec; 2]>(times.clone());
-
- ret(c::utimensat(
- borrowed_fd(dirfd),
- c_str(path),
- as_ptr(times).cast(),
- flags.bits(),
- ))
- }
-
- // `utimensat` was introduced in macOS 10.13.
- #[cfg(apple)]
- unsafe {
- // ABI details
- weak! {
- fn utimensat(
- c::c_int,
- *const c::c_char,
- *const c::timespec,
- c::c_int
- ) -> c::c_int
- }
- extern "C" {
- fn setattrlist(
- path: *const c::c_char,
- attr_list: *const Attrlist,
- attr_buf: *const c::c_void,
- attr_buf_size: c::size_t,
- options: c::c_ulong,
- ) -> c::c_int;
- }
- const FSOPT_NOFOLLOW: c::c_ulong = 0x0000_0001;
-
- // If we have `utimensat`, use it.
- if let Some(have_utimensat) = utimensat.get() {
- // Assert that `Timestamps` has the expected layout.
- let _ = core::mem::transmute::<Timestamps, [c::timespec; 2]>(times.clone());
-
- return ret(have_utimensat(
- borrowed_fd(dirfd),
- c_str(path),
- as_ptr(times).cast(),
- flags.bits(),
- ));
- }
-
- // `setattrlistat` was introduced in 10.13 along with `utimensat`, so if
- // we don't have `utimensat`, we don't have `setattrlistat` either.
- // Emulate it using `fork`, and `fchdir` and [`setattrlist`].
- //
- // [`setattrlist`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setattrlist.2.html
- match c::fork() {
- -1 => Err(io::Errno::IO),
- 0 => {
- if c::fchdir(borrowed_fd(dirfd)) != 0 {
- let code = match libc_errno::errno().0 {
- c::EACCES => 2,
- c::ENOTDIR => 3,
- _ => 1,
- };
- c::_exit(code);
- }
-
- let mut flags_arg = 0;
- if flags.contains(AtFlags::SYMLINK_NOFOLLOW) {
- flags_arg |= FSOPT_NOFOLLOW;
- }
-
- let (attrbuf_size, times, attrs) = times_to_attrlist(times);
-
- if setattrlist(
- c_str(path),
- &attrs,
- as_ptr(&times).cast(),
- attrbuf_size,
- flags_arg,
- ) != 0
- {
- // Translate expected errno codes into ad-hoc integer
- // values suitable for exit statuses.
- let code = match libc_errno::errno().0 {
- c::EACCES => 2,
- c::ENOTDIR => 3,
- c::EPERM => 4,
- c::EROFS => 5,
- c::ELOOP => 6,
- c::ENOENT => 7,
- c::ENAMETOOLONG => 8,
- c::EINVAL => 9,
- c::ESRCH => 10,
- c::ENOTSUP => 11,
- _ => 1,
- };
- c::_exit(code);
- }
-
- c::_exit(0);
- }
- child_pid => {
- let mut wstatus = 0;
- let _ = ret_c_int(c::waitpid(child_pid, &mut wstatus, 0))?;
- if c::WIFEXITED(wstatus) {
- // Translate our ad-hoc exit statuses back to errno codes.
- match c::WEXITSTATUS(wstatus) {
- 0 => Ok(()),
- 2 => Err(io::Errno::ACCESS),
- 3 => Err(io::Errno::NOTDIR),
- 4 => Err(io::Errno::PERM),
- 5 => Err(io::Errno::ROFS),
- 6 => Err(io::Errno::LOOP),
- 7 => Err(io::Errno::NOENT),
- 8 => Err(io::Errno::NAMETOOLONG),
- 9 => Err(io::Errno::INVAL),
- 10 => Err(io::Errno::SRCH),
- 11 => Err(io::Errno::NOTSUP),
- _ => Err(io::Errno::IO),
- }
- } else {
- Err(io::Errno::IO)
- }
- }
- }
- }
-}
-
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-unsafe fn utimensat_old(
- dirfd: BorrowedFd<'_>,
- path: &CStr,
- times: &Timestamps,
- flags: AtFlags,
-) -> io::Result<()> {
- let old_times = [
- c::timespec {
- tv_sec: times
- .last_access
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- tv_nsec: times.last_access.tv_nsec,
- },
- c::timespec {
- tv_sec: times
- .last_modification
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- tv_nsec: times.last_modification.tv_nsec,
- },
- ];
- ret(c::utimensat(
- borrowed_fd(dirfd),
- c_str(path),
- old_times.as_ptr(),
- flags.bits(),
- ))
-}
-
-#[cfg(not(any(
- target_os = "android",
- target_os = "linux",
- target_os = "redox",
- target_os = "wasi",
-)))]
-pub(crate) fn chmodat(
- dirfd: BorrowedFd<'_>,
- path: &CStr,
- mode: Mode,
- flags: AtFlags,
-) -> io::Result<()> {
- unsafe {
- ret(c::fchmodat(
- borrowed_fd(dirfd),
- c_str(path),
- mode.bits() as c::mode_t,
- flags.bits(),
- ))
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub(crate) fn chmodat(
- dirfd: BorrowedFd<'_>,
- path: &CStr,
- mode: Mode,
- flags: AtFlags,
-) -> io::Result<()> {
- // Linux's `fchmodat` does not have a flags argument.
- //
- // Use `c::syscall` rather than `c::fchmodat` because some libc
- // implementations, such as musl, add extra logic to `fchmod` to emulate
- // support for `AT_SYMLINK_NOFOLLOW`, which uses `/proc` outside our
- // control.
- if flags == AtFlags::SYMLINK_NOFOLLOW {
- return Err(io::Errno::OPNOTSUPP);
- }
- if !flags.is_empty() {
- return Err(io::Errno::INVAL);
- }
- unsafe {
- // Pass `mode` as a `c_uint` even if `mode_t` is narrower, since
- // `libc_openat` is declared as a variadic function and narrower
- // arguments are promoted.
- syscall_ret(c::syscall(
- c::SYS_fchmodat,
- borrowed_fd(dirfd),
- c_str(path),
- c::c_uint::from(mode.bits()),
- ))
- }
-}
-
-#[cfg(apple)]
-pub(crate) fn fclonefileat(
- srcfd: BorrowedFd<'_>,
- dst_dirfd: BorrowedFd<'_>,
- dst: &CStr,
- flags: CloneFlags,
-) -> io::Result<()> {
- syscall! {
- fn fclonefileat(
- srcfd: BorrowedFd<'_>,
- dst_dirfd: BorrowedFd<'_>,
- dst: *const c::c_char,
- flags: c::c_int
- ) via SYS_fclonefileat -> c::c_int
- }
-
- unsafe { ret(fclonefileat(srcfd, dst_dirfd, c_str(dst), flags.bits())) }
-}
-
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-pub(crate) fn chownat(
- dirfd: BorrowedFd<'_>,
- path: &CStr,
- owner: Option<Uid>,
- group: Option<Gid>,
- flags: AtFlags,
-) -> io::Result<()> {
- unsafe {
- let (ow, gr) = crate::process::translate_fchown_args(owner, group);
- ret(c::fchownat(
- borrowed_fd(dirfd),
- c_str(path),
- ow,
- gr,
- flags.bits(),
- ))
- }
-}
-
-#[cfg(not(any(apple, target_os = "redox", target_os = "wasi")))]
-pub(crate) fn mknodat(
- dirfd: BorrowedFd<'_>,
- path: &CStr,
- file_type: FileType,
- mode: Mode,
- dev: Dev,
-) -> io::Result<()> {
- unsafe {
- ret(c::mknodat(
- borrowed_fd(dirfd),
- c_str(path),
- (mode.bits() | file_type.as_raw_mode()) as c::mode_t,
- dev.try_into().map_err(|_e| io::Errno::PERM)?,
- ))
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub(crate) fn copy_file_range(
- fd_in: BorrowedFd<'_>,
- off_in: Option<&mut u64>,
- fd_out: BorrowedFd<'_>,
- off_out: Option<&mut u64>,
- len: usize,
-) -> io::Result<usize> {
- assert_eq!(size_of::<c::loff_t>(), size_of::<u64>());
-
- let mut off_in_val: c::loff_t = 0;
- let mut off_out_val: c::loff_t = 0;
- // Silently cast; we'll get `EINVAL` if the value is negative.
- let off_in_ptr = if let Some(off_in) = &off_in {
- off_in_val = (**off_in) as i64;
- &mut off_in_val
- } else {
- null_mut()
- };
- let off_out_ptr = if let Some(off_out) = &off_out {
- off_out_val = (**off_out) as i64;
- &mut off_out_val
- } else {
- null_mut()
- };
- let copied = unsafe {
- syscall_ret_ssize_t(c::syscall(
- c::SYS_copy_file_range,
- borrowed_fd(fd_in),
- off_in_ptr,
- borrowed_fd(fd_out),
- off_out_ptr,
- len,
- 0, // no flags are defined yet
- ))?
- };
- if let Some(off_in) = off_in {
- *off_in = off_in_val as u64;
- }
- if let Some(off_out) = off_out {
- *off_out = off_out_val as u64;
- }
- Ok(copied as usize)
-}
-
-#[cfg(not(any(
- apple,
- netbsdlike,
- solarish,
- target_os = "dragonfly",
- target_os = "haiku",
- target_os = "redox",
-)))]
-pub(crate) fn fadvise(fd: BorrowedFd<'_>, offset: u64, len: u64, advice: Advice) -> io::Result<()> {
- let offset = offset as i64;
- let len = len as i64;
-
- // FreeBSD returns `EINVAL` on invalid offsets; emulate the POSIX behavior.
- #[cfg(target_os = "freebsd")]
- let offset = if (offset as i64) < 0 {
- i64::MAX
- } else {
- offset
- };
-
- // FreeBSD returns `EINVAL` on overflow; emulate the POSIX behavior.
- #[cfg(target_os = "freebsd")]
- let len = if len > 0 && offset.checked_add(len).is_none() {
- i64::MAX - offset
- } else {
- len
- };
-
- let err = unsafe { libc_posix_fadvise(borrowed_fd(fd), offset, len, advice as c::c_int) };
-
- // `posix_fadvise` returns its error status rather than using `errno`.
- if err == 0 {
- Ok(())
- } else {
- Err(io::Errno(err))
- }
-}
-
-pub(crate) fn fcntl_getfl(fd: BorrowedFd<'_>) -> io::Result<OFlags> {
- unsafe { ret_c_int(c::fcntl(borrowed_fd(fd), c::F_GETFL)).map(OFlags::from_bits_truncate) }
-}
-
-pub(crate) fn fcntl_setfl(fd: BorrowedFd<'_>, flags: OFlags) -> io::Result<()> {
- unsafe { ret(c::fcntl(borrowed_fd(fd), c::F_SETFL, flags.bits())) }
-}
-
-#[cfg(any(
- target_os = "android",
- target_os = "freebsd",
- target_os = "fuchsia",
- target_os = "linux",
-))]
-pub(crate) fn fcntl_get_seals(fd: BorrowedFd<'_>) -> io::Result<SealFlags> {
- unsafe {
- ret_c_int(c::fcntl(borrowed_fd(fd), c::F_GET_SEALS))
- .map(|flags| SealFlags::from_bits_unchecked(flags))
- }
-}
-
-#[cfg(any(
- target_os = "android",
- target_os = "freebsd",
- target_os = "fuchsia",
- target_os = "linux",
-))]
-pub(crate) fn fcntl_add_seals(fd: BorrowedFd<'_>, seals: SealFlags) -> io::Result<()> {
- unsafe { ret(c::fcntl(borrowed_fd(fd), c::F_ADD_SEALS, seals.bits())) }
-}
-
-#[cfg(not(any(
- target_os = "emscripten",
- target_os = "fuchsia",
- target_os = "redox",
- target_os = "wasi"
-)))]
-#[inline]
-pub(crate) fn fcntl_lock(fd: BorrowedFd<'_>, operation: FlockOperation) -> io::Result<()> {
- use c::{flock, F_RDLCK, F_SETLK, F_SETLKW, F_UNLCK, F_WRLCK, SEEK_SET};
-
- let (cmd, l_type) = match operation {
- FlockOperation::LockShared => (F_SETLKW, F_RDLCK),
- FlockOperation::LockExclusive => (F_SETLKW, F_WRLCK),
- FlockOperation::Unlock => (F_SETLKW, F_UNLCK),
- FlockOperation::NonBlockingLockShared => (F_SETLK, F_RDLCK),
- FlockOperation::NonBlockingLockExclusive => (F_SETLK, F_WRLCK),
- FlockOperation::NonBlockingUnlock => (F_SETLK, F_UNLCK),
- };
-
- unsafe {
- let mut lock: flock = core::mem::zeroed();
- lock.l_type = l_type as _;
-
- // When `l_len` is zero, this locks all the bytes from
- // `l_whence`/`l_start` to the end of the file, even as the
- // file grows dynamically.
- lock.l_whence = SEEK_SET as _;
- lock.l_start = 0;
- lock.l_len = 0;
-
- ret(c::fcntl(borrowed_fd(fd), cmd, &lock))
- }
-}
-
-pub(crate) fn seek(fd: BorrowedFd<'_>, pos: SeekFrom) -> io::Result<u64> {
- let (whence, offset): (c::c_int, libc_off_t) = match pos {
- SeekFrom::Start(pos) => {
- let pos: u64 = pos;
- // Silently cast; we'll get `EINVAL` if the value is negative.
- (c::SEEK_SET, pos as i64)
- }
- SeekFrom::End(offset) => (c::SEEK_END, offset),
- SeekFrom::Current(offset) => (c::SEEK_CUR, offset),
- #[cfg(any(freebsdlike, target_os = "linux", target_os = "solaris"))]
- SeekFrom::Data(offset) => (c::SEEK_DATA, offset),
- #[cfg(any(freebsdlike, target_os = "linux", target_os = "solaris"))]
- SeekFrom::Hole(offset) => (c::SEEK_HOLE, offset),
- };
- let offset = unsafe { ret_off_t(libc_lseek(borrowed_fd(fd), offset, whence))? };
- Ok(offset as u64)
-}
-
-pub(crate) fn tell(fd: BorrowedFd<'_>) -> io::Result<u64> {
- let offset = unsafe { ret_off_t(libc_lseek(borrowed_fd(fd), 0, c::SEEK_CUR))? };
- Ok(offset as u64)
-}
-
-#[cfg(not(any(target_os = "android", target_os = "linux", target_os = "wasi")))]
-pub(crate) fn fchmod(fd: BorrowedFd<'_>, mode: Mode) -> io::Result<()> {
- unsafe { ret(c::fchmod(borrowed_fd(fd), mode.bits())) }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub(crate) fn fchmod(fd: BorrowedFd<'_>, mode: Mode) -> io::Result<()> {
- // Use `c::syscall` rather than `c::fchmod` because some libc
- // implementations, such as musl, add extra logic to `fchmod` to emulate
- // support for `O_PATH`, which uses `/proc` outside our control and
- // interferes with our own use of `O_PATH`.
- unsafe {
- syscall_ret(c::syscall(
- c::SYS_fchmod,
- borrowed_fd(fd),
- c::c_uint::from(mode.bits()),
- ))
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub(crate) fn fchown(fd: BorrowedFd<'_>, owner: Option<Uid>, group: Option<Gid>) -> io::Result<()> {
- // Use `c::syscall` rather than `c::fchown` because some libc
- // implementations, such as musl, add extra logic to `fchown` to emulate
- // support for `O_PATH`, which uses `/proc` outside our control and
- // interferes with our own use of `O_PATH`.
- unsafe {
- let (ow, gr) = crate::process::translate_fchown_args(owner, group);
- syscall_ret(c::syscall(c::SYS_fchown, borrowed_fd(fd), ow, gr))
- }
-}
-
-#[cfg(not(any(target_os = "android", target_os = "linux", target_os = "wasi")))]
-pub(crate) fn fchown(fd: BorrowedFd<'_>, owner: Option<Uid>, group: Option<Gid>) -> io::Result<()> {
- unsafe {
- let (ow, gr) = crate::process::translate_fchown_args(owner, group);
- ret(c::fchown(borrowed_fd(fd), ow, gr))
- }
-}
-
-#[cfg(not(any(target_os = "solaris", target_os = "wasi")))]
-pub(crate) fn flock(fd: BorrowedFd<'_>, operation: FlockOperation) -> io::Result<()> {
- unsafe { ret(c::flock(borrowed_fd(fd), operation as c::c_int)) }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub(crate) fn syncfs(fd: BorrowedFd<'_>) -> io::Result<()> {
- unsafe { ret(c::syncfs(borrowed_fd(fd))) }
-}
-
-#[cfg(not(any(solarish, target_os = "redox", target_os = "wasi")))]
-pub(crate) fn sync() {
- // TODO: Remove this when upstream libc adds `sync`.
- #[cfg(target_os = "android")]
- unsafe {
- syscall_ret(c::syscall(c::SYS_sync)).ok();
- }
-
- #[cfg(not(target_os = "android"))]
- unsafe {
- c::sync()
- }
-}
-
-pub(crate) fn fstat(fd: BorrowedFd<'_>) -> io::Result<Stat> {
- // 32-bit and mips64 Linux: `struct stat64` is not y2038 compatible; use
- // `statx`.
- #[cfg(all(
- any(target_os = "android", target_os = "linux"),
- any(target_pointer_width = "32", target_arch = "mips64"),
- ))]
- {
- match statx(fd, cstr!(""), AtFlags::EMPTY_PATH, StatxFlags::BASIC_STATS) {
- Ok(x) => statx_to_stat(x),
- Err(io::Errno::NOSYS) => fstat_old(fd),
- Err(err) => Err(err),
- }
- }
-
- // Main version: libc is y2038 safe. Or, the platform is not y2038 safe and
- // there's nothing practical we can do.
- #[cfg(not(all(
- any(target_os = "android", target_os = "linux"),
- any(target_pointer_width = "32", target_arch = "mips64"),
- )))]
- unsafe {
- let mut stat = MaybeUninit::<Stat>::uninit();
- ret(libc_fstat(borrowed_fd(fd), stat.as_mut_ptr()))?;
- Ok(stat.assume_init())
- }
-}
-
-#[cfg(all(
- any(target_os = "android", target_os = "linux"),
- any(target_pointer_width = "32", target_arch = "mips64"),
-))]
-fn fstat_old(fd: BorrowedFd<'_>) -> io::Result<Stat> {
- unsafe {
- let mut result = MaybeUninit::<c::stat64>::uninit();
- ret(libc_fstat(borrowed_fd(fd), result.as_mut_ptr()))?;
- stat64_to_stat(result.assume_init())
- }
-}
-
-#[cfg(not(any(
- solarish,
- target_os = "haiku",
- target_os = "netbsd",
- target_os = "redox",
- target_os = "wasi",
-)))]
-pub(crate) fn fstatfs(fd: BorrowedFd<'_>) -> io::Result<StatFs> {
- let mut statfs = MaybeUninit::<StatFs>::uninit();
- unsafe {
- ret(libc_fstatfs(borrowed_fd(fd), statfs.as_mut_ptr()))?;
- Ok(statfs.assume_init())
- }
-}
-
-#[cfg(not(any(solarish, target_os = "haiku", target_os = "redox", target_os = "wasi")))]
-pub(crate) fn fstatvfs(fd: BorrowedFd<'_>) -> io::Result<StatVfs> {
- let mut statvfs = MaybeUninit::<libc_statvfs>::uninit();
- unsafe {
- ret(libc_fstatvfs(borrowed_fd(fd), statvfs.as_mut_ptr()))?;
- Ok(libc_statvfs_to_statvfs(statvfs.assume_init()))
- }
-}
-
-#[cfg(not(any(solarish, target_os = "haiku", target_os = "redox", target_os = "wasi")))]
-fn libc_statvfs_to_statvfs(from: libc_statvfs) -> StatVfs {
- StatVfs {
- f_bsize: from.f_bsize as u64,
- f_frsize: from.f_frsize as u64,
- f_blocks: from.f_blocks as u64,
- f_bfree: from.f_bfree as u64,
- f_bavail: from.f_bavail as u64,
- f_files: from.f_files as u64,
- f_ffree: from.f_ffree as u64,
- f_favail: from.f_ffree as u64,
- f_fsid: from.f_fsid as u64,
- f_flag: unsafe { StatVfsMountFlags::from_bits_unchecked(from.f_flag as u64) },
- f_namemax: from.f_namemax as u64,
- }
-}
-
-pub(crate) fn futimens(fd: BorrowedFd<'_>, times: &Timestamps) -> io::Result<()> {
- // 32-bit gnu version: libc has `futimens` but it is not y2038 safe by default.
- #[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
- ))]
- unsafe {
- if let Some(libc_futimens) = __futimens64.get() {
- let libc_times: [LibcTimespec; 2] = [
- times.last_access.clone().into(),
- times.last_modification.clone().into(),
- ];
-
- ret(libc_futimens(borrowed_fd(fd), libc_times.as_ptr()))
- } else {
- futimens_old(fd, times)
- }
- }
-
- // Main version: libc is y2038 safe and has `futimens`. Or, the platform
- // is not y2038 safe and there's nothing practical we can do.
- #[cfg(not(any(
- apple,
- all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
- )
- )))]
- unsafe {
- // Assert that `Timestamps` has the expected layout.
- let _ = core::mem::transmute::<Timestamps, [c::timespec; 2]>(times.clone());
-
- ret(c::futimens(borrowed_fd(fd), as_ptr(times).cast()))
- }
-
- // `futimens` was introduced in macOS 10.13.
- #[cfg(apple)]
- unsafe {
- // ABI details.
- weak! {
- fn futimens(c::c_int, *const c::timespec) -> c::c_int
- }
- extern "C" {
- fn fsetattrlist(
- fd: c::c_int,
- attr_list: *const Attrlist,
- attr_buf: *const c::c_void,
- attr_buf_size: c::size_t,
- options: c::c_ulong,
- ) -> c::c_int;
- }
-
- // If we have `futimens`, use it.
- if let Some(have_futimens) = futimens.get() {
- // Assert that `Timestamps` has the expected layout.
- let _ = core::mem::transmute::<Timestamps, [c::timespec; 2]>(times.clone());
-
- return ret(have_futimens(borrowed_fd(fd), as_ptr(times).cast()));
- }
-
- // Otherwise use `fsetattrlist`.
- let (attrbuf_size, times, attrs) = times_to_attrlist(times);
-
- ret(fsetattrlist(
- borrowed_fd(fd),
- &attrs,
- as_ptr(&times).cast(),
- attrbuf_size,
- 0,
- ))
- }
-}
-
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-unsafe fn futimens_old(fd: BorrowedFd<'_>, times: &Timestamps) -> io::Result<()> {
- let old_times = [
- c::timespec {
- tv_sec: times
- .last_access
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- tv_nsec: times.last_access.tv_nsec,
- },
- c::timespec {
- tv_sec: times
- .last_modification
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- tv_nsec: times.last_modification.tv_nsec,
- },
- ];
-
- ret(c::futimens(borrowed_fd(fd), old_times.as_ptr()))
-}
-
-#[cfg(not(any(
- apple,
- netbsdlike,
- solarish,
- target_os = "aix",
- target_os = "dragonfly",
- target_os = "redox",
-)))]
-pub(crate) fn fallocate(
- fd: BorrowedFd<'_>,
- mode: FallocateFlags,
- offset: u64,
- len: u64,
-) -> io::Result<()> {
- // Silently cast; we'll get `EINVAL` if the value is negative.
- let offset = offset as i64;
- let len = len as i64;
-
- #[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))]
- unsafe {
- ret(libc_fallocate(borrowed_fd(fd), mode.bits(), offset, len))
- }
-
- #[cfg(not(any(target_os = "android", target_os = "fuchsia", target_os = "linux")))]
- {
- assert!(mode.is_empty());
- let err = unsafe { libc_posix_fallocate(borrowed_fd(fd), offset, len) };
-
- // `posix_fallocate` returns its error status rather than using `errno`.
- if err == 0 {
- Ok(())
- } else {
- Err(io::Errno(err))
- }
- }
-}
-
-#[cfg(apple)]
-pub(crate) fn fallocate(
- fd: BorrowedFd<'_>,
- mode: FallocateFlags,
- offset: u64,
- len: u64,
-) -> io::Result<()> {
- let offset: i64 = offset.try_into().map_err(|_e| io::Errno::INVAL)?;
- let len = len as i64;
-
- assert!(mode.is_empty());
-
- let new_len = offset.checked_add(len).ok_or(io::Errno::FBIG)?;
- let mut store = c::fstore_t {
- fst_flags: c::F_ALLOCATECONTIG,
- fst_posmode: c::F_PEOFPOSMODE,
- fst_offset: 0,
- fst_length: new_len,
- fst_bytesalloc: 0,
- };
- unsafe {
- if c::fcntl(borrowed_fd(fd), c::F_PREALLOCATE, &store) == -1 {
- // Unable to allocate contiguous disk space; attempt to allocate
- // non-contiguously.
- store.fst_flags = c::F_ALLOCATEALL;
- let _ = ret_c_int(c::fcntl(borrowed_fd(fd), c::F_PREALLOCATE, &store))?;
- }
- ret(c::ftruncate(borrowed_fd(fd), new_len))
- }
-}
-
-pub(crate) fn fsync(fd: BorrowedFd<'_>) -> io::Result<()> {
- unsafe { ret(c::fsync(borrowed_fd(fd))) }
-}
-
-#[cfg(not(any(
- apple,
- target_os = "dragonfly",
- target_os = "haiku",
- target_os = "redox",
-)))]
-pub(crate) fn fdatasync(fd: BorrowedFd<'_>) -> io::Result<()> {
- unsafe { ret(c::fdatasync(borrowed_fd(fd))) }
-}
-
-pub(crate) fn ftruncate(fd: BorrowedFd<'_>, length: u64) -> io::Result<()> {
- let length = length.try_into().map_err(|_overflow_err| io::Errno::FBIG)?;
- unsafe { ret(libc_ftruncate(borrowed_fd(fd), length)) }
-}
-
-#[cfg(any(target_os = "android", target_os = "freebsd", target_os = "linux"))]
-pub(crate) fn memfd_create(path: &CStr, flags: MemfdFlags) -> io::Result<OwnedFd> {
- #[cfg(target_os = "freebsd")]
- weakcall! {
- fn memfd_create(
- name: *const c::c_char,
- flags: c::c_uint
- ) -> c::c_int
- }
-
- #[cfg(any(target_os = "android", target_os = "linux"))]
- weak_or_syscall! {
- fn memfd_create(
- name: *const c::c_char,
- flags: c::c_uint
- ) via SYS_memfd_create -> c::c_int
- }
-
- unsafe { ret_owned_fd(memfd_create(c_str(path), flags.bits())) }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub(crate) fn openat2(
- dirfd: BorrowedFd<'_>,
- path: &CStr,
- oflags: OFlags,
- mode: Mode,
- resolve: ResolveFlags,
-) -> io::Result<OwnedFd> {
- let oflags: i32 = oflags.bits();
- let open_how = OpenHow {
- oflag: u64::from(oflags as u32),
- mode: u64::from(mode.bits()),
- resolve: resolve.bits(),
- };
-
- unsafe {
- syscall_ret_owned_fd(c::syscall(
- SYS_OPENAT2,
- borrowed_fd(dirfd),
- c_str(path),
- &open_how,
- SIZEOF_OPEN_HOW,
- ))
- }
-}
-#[cfg(all(
- target_pointer_width = "32",
- any(target_os = "android", target_os = "linux"),
-))]
-const SYS_OPENAT2: i32 = 437;
-#[cfg(all(
- target_pointer_width = "64",
- any(target_os = "android", target_os = "linux"),
-))]
-const SYS_OPENAT2: i64 = 437;
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[repr(C)]
-#[derive(Debug)]
-struct OpenHow {
- oflag: u64,
- mode: u64,
- resolve: u64,
-}
-#[cfg(any(target_os = "android", target_os = "linux"))]
-const SIZEOF_OPEN_HOW: usize = size_of::<OpenHow>();
-
-#[cfg(target_os = "linux")]
-pub(crate) fn sendfile(
- out_fd: BorrowedFd<'_>,
- in_fd: BorrowedFd<'_>,
- offset: Option<&mut u64>,
- count: usize,
-) -> io::Result<usize> {
- unsafe {
- let nsent = ret_ssize_t(c::sendfile64(
- borrowed_fd(out_fd),
- borrowed_fd(in_fd),
- offset.map_or(null_mut(), crate::utils::as_mut_ptr).cast(),
- count,
- ))?;
- Ok(nsent as usize)
- }
-}
-
-/// Convert from a Linux `statx` value to rustix's `Stat`.
-#[cfg(all(
- any(target_os = "android", target_os = "linux"),
- target_pointer_width = "32",
-))]
-fn statx_to_stat(x: crate::fs::Statx) -> io::Result<Stat> {
- Ok(Stat {
- st_dev: crate::fs::makedev(x.stx_dev_major, x.stx_dev_minor).into(),
- st_mode: x.stx_mode.into(),
- st_nlink: x.stx_nlink.into(),
- st_uid: x.stx_uid.into(),
- st_gid: x.stx_gid.into(),
- st_rdev: crate::fs::makedev(x.stx_rdev_major, x.stx_rdev_minor).into(),
- st_size: x.stx_size.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_blksize: x.stx_blksize.into(),
- st_blocks: x.stx_blocks.into(),
- st_atime: x
- .stx_atime
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- st_atime_nsec: x.stx_atime.tv_nsec as _,
- st_mtime: x
- .stx_mtime
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- st_mtime_nsec: x.stx_mtime.tv_nsec as _,
- st_ctime: x
- .stx_ctime
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- st_ctime_nsec: x.stx_ctime.tv_nsec as _,
- st_ino: x.stx_ino.into(),
- })
-}
-
-/// Convert from a Linux `statx` value to rustix's `Stat`.
-///
-/// mips64' `struct stat64` in libc has private fields, and `stx_blocks`
-#[cfg(all(
- any(target_os = "android", target_os = "linux"),
- target_arch = "mips64",
-))]
-fn statx_to_stat(x: crate::fs::Statx) -> io::Result<Stat> {
- let mut result: Stat = unsafe { core::mem::zeroed() };
-
- result.st_dev = crate::fs::makedev(x.stx_dev_major, x.stx_dev_minor);
- result.st_mode = x.stx_mode.into();
- result.st_nlink = x.stx_nlink.into();
- result.st_uid = x.stx_uid.into();
- result.st_gid = x.stx_gid.into();
- result.st_rdev = crate::fs::makedev(x.stx_rdev_major, x.stx_rdev_minor);
- result.st_size = x.stx_size.try_into().map_err(|_| io::Errno::OVERFLOW)?;
- result.st_blksize = x.stx_blksize.into();
- result.st_blocks = x.stx_blocks.try_into().map_err(|_e| io::Errno::OVERFLOW)?;
- result.st_atime = x
- .stx_atime
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?;
- result.st_atime_nsec = x.stx_atime.tv_nsec as _;
- result.st_mtime = x
- .stx_mtime
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?;
- result.st_mtime_nsec = x.stx_mtime.tv_nsec as _;
- result.st_ctime = x
- .stx_ctime
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?;
- result.st_ctime_nsec = x.stx_ctime.tv_nsec as _;
- result.st_ino = x.stx_ino.into();
-
- Ok(result)
-}
-
-/// Convert from a Linux `stat64` value to rustix's `Stat`.
-#[cfg(all(
- any(target_os = "android", target_os = "linux"),
- target_pointer_width = "32",
-))]
-fn stat64_to_stat(s64: c::stat64) -> io::Result<Stat> {
- Ok(Stat {
- st_dev: s64.st_dev.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_mode: s64.st_mode.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_nlink: s64.st_nlink.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_uid: s64.st_uid.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_gid: s64.st_gid.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_rdev: s64.st_rdev.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_size: s64.st_size.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_blksize: s64.st_blksize.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_blocks: s64.st_blocks.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_atime: s64.st_atime.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_atime_nsec: s64
- .st_atime_nsec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- st_mtime: s64.st_mtime.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_mtime_nsec: s64
- .st_mtime_nsec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- st_ctime: s64.st_ctime.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_ctime_nsec: s64
- .st_ctime_nsec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- st_ino: s64.st_ino.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- })
-}
-
-/// Convert from a Linux `stat64` value to rustix's `Stat`.
-///
-/// mips64' `struct stat64` in libc has private fields, and `st_blocks` has
-/// type `i64`.
-#[cfg(all(
- any(target_os = "android", target_os = "linux"),
- target_arch = "mips64",
-))]
-fn stat64_to_stat(s64: c::stat64) -> io::Result<Stat> {
- let mut result: Stat = unsafe { core::mem::zeroed() };
-
- result.st_dev = s64.st_dev.try_into().map_err(|_| io::Errno::OVERFLOW)?;
- result.st_mode = s64.st_mode.try_into().map_err(|_| io::Errno::OVERFLOW)?;
- result.st_nlink = s64.st_nlink.try_into().map_err(|_| io::Errno::OVERFLOW)?;
- result.st_uid = s64.st_uid.try_into().map_err(|_| io::Errno::OVERFLOW)?;
- result.st_gid = s64.st_gid.try_into().map_err(|_| io::Errno::OVERFLOW)?;
- result.st_rdev = s64.st_rdev.try_into().map_err(|_| io::Errno::OVERFLOW)?;
- result.st_size = s64.st_size.try_into().map_err(|_| io::Errno::OVERFLOW)?;
- result.st_blksize = s64.st_blksize.try_into().map_err(|_| io::Errno::OVERFLOW)?;
- result.st_blocks = s64.st_blocks.try_into().map_err(|_| io::Errno::OVERFLOW)?;
- result.st_atime = s64.st_atime.try_into().map_err(|_| io::Errno::OVERFLOW)?;
- result.st_atime_nsec = s64
- .st_atime_nsec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?;
- result.st_mtime = s64.st_mtime.try_into().map_err(|_| io::Errno::OVERFLOW)?;
- result.st_mtime_nsec = s64
- .st_mtime_nsec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?;
- result.st_ctime = s64.st_ctime.try_into().map_err(|_| io::Errno::OVERFLOW)?;
- result.st_ctime_nsec = s64
- .st_ctime_nsec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?;
- result.st_ino = s64.st_ino.try_into().map_err(|_| io::Errno::OVERFLOW)?;
-
- Ok(result)
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[allow(non_upper_case_globals)]
-mod sys {
- use super::{c, BorrowedFd, Statx};
-
- weak_or_syscall! {
- pub(super) fn statx(
- dirfd_: BorrowedFd<'_>,
- path: *const c::c_char,
- flags: c::c_int,
- mask: c::c_uint,
- buf: *mut Statx
- ) via SYS_statx -> c::c_int
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[allow(non_upper_case_globals)]
-pub(crate) fn statx(
- dirfd: BorrowedFd<'_>,
- path: &CStr,
- flags: AtFlags,
- mask: StatxFlags,
-) -> io::Result<Statx> {
- // If a future Linux kernel adds more fields to `struct statx` and users
- // passing flags unknown to rustix in `StatxFlags`, we could end up
- // writing outside of the buffer. To prevent this possibility, we mask off
- // any flags that we don't know about.
- //
- // This includes `STATX__RESERVED`, which has a value that we know, but
- // which could take on arbitrary new meaning in the future. Linux currently
- // rejects this flag with `EINVAL`, so we do the same.
- //
- // This doesn't rely on `STATX_ALL` because [it's deprecated] and already
- // doesn't represent all the known flags.
- //
- // [it's deprecated]: https://patchwork.kernel.org/project/linux-fsdevel/patch/20200505095915.11275-7-mszeredi@redhat.com/
- #[cfg(not(any(target_os = "android", target_env = "musl")))]
- const STATX__RESERVED: u32 = libc::STATX__RESERVED as u32;
- #[cfg(any(target_os = "android", target_env = "musl"))]
- const STATX__RESERVED: u32 = linux_raw_sys::general::STATX__RESERVED;
- if (mask.bits() & STATX__RESERVED) == STATX__RESERVED {
- return Err(io::Errno::INVAL);
- }
- let mask = mask & StatxFlags::all();
-
- let mut statx_buf = MaybeUninit::<Statx>::uninit();
- unsafe {
- ret(sys::statx(
- dirfd,
- c_str(path),
- flags.bits(),
- mask.bits(),
- statx_buf.as_mut_ptr(),
- ))?;
- Ok(statx_buf.assume_init())
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub(crate) fn is_statx_available() -> bool {
- unsafe {
- // Call `statx` with null pointers so that if it fails for any reason
- // other than `EFAULT`, we know it's not supported.
- matches!(
- ret(sys::statx(cwd(), null(), 0, 0, null_mut())),
- Err(io::Errno::FAULT)
- )
- }
-}
-
-#[cfg(apple)]
-pub(crate) unsafe fn fcopyfile(
- from: BorrowedFd<'_>,
- to: BorrowedFd<'_>,
- state: copyfile_state_t,
- flags: CopyfileFlags,
-) -> io::Result<()> {
- extern "C" {
- fn fcopyfile(
- from: c::c_int,
- to: c::c_int,
- state: copyfile_state_t,
- flags: c::c_uint,
- ) -> c::c_int;
- }
-
- nonnegative_ret(fcopyfile(
- borrowed_fd(from),
- borrowed_fd(to),
- state,
- flags.bits(),
- ))
-}
-
-#[cfg(apple)]
-pub(crate) fn copyfile_state_alloc() -> io::Result<copyfile_state_t> {
- extern "C" {
- fn copyfile_state_alloc() -> copyfile_state_t;
- }
-
- let result = unsafe { copyfile_state_alloc() };
- if result.0.is_null() {
- Err(io::Errno::last_os_error())
- } else {
- Ok(result)
- }
-}
-
-#[cfg(apple)]
-pub(crate) unsafe fn copyfile_state_free(state: copyfile_state_t) -> io::Result<()> {
- extern "C" {
- fn copyfile_state_free(state: copyfile_state_t) -> c::c_int;
- }
-
- nonnegative_ret(copyfile_state_free(state))
-}
-
-#[cfg(apple)]
-const COPYFILE_STATE_COPIED: u32 = 8;
-
-#[cfg(apple)]
-pub(crate) unsafe fn copyfile_state_get_copied(state: copyfile_state_t) -> io::Result<u64> {
- let mut copied = MaybeUninit::<u64>::uninit();
- copyfile_state_get(state, COPYFILE_STATE_COPIED, copied.as_mut_ptr().cast())?;
- Ok(copied.assume_init())
-}
-
-#[cfg(apple)]
-pub(crate) unsafe fn copyfile_state_get(
- state: copyfile_state_t,
- flag: u32,
- dst: *mut c::c_void,
-) -> io::Result<()> {
- extern "C" {
- fn copyfile_state_get(state: copyfile_state_t, flag: u32, dst: *mut c::c_void) -> c::c_int;
- }
-
- nonnegative_ret(copyfile_state_get(state, flag, dst))
-}
-
-#[cfg(apple)]
-pub(crate) fn getpath(fd: BorrowedFd<'_>) -> io::Result<CString> {
- // The use of `PATH_MAX` is generally not encouraged, but it
- // is inevitable in this case because macOS defines `fcntl` with
- // `F_GETPATH` in terms of `MAXPATHLEN`, and there are no
- // alternatives. If a better method is invented, it should be used
- // instead.
- let mut buf = alloc::vec![0; c::PATH_MAX as usize];
-
- // From the [macOS `fcntl` man page]:
- // `F_GETPATH` - Get the path of the file descriptor `Fildes`. The argument
- // must be a buffer of size `MAXPATHLEN` or greater.
- //
- // [macOS `fcntl` man page]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/fcntl.2.html
- unsafe {
- ret(c::fcntl(borrowed_fd(fd), c::F_GETPATH, buf.as_mut_ptr()))?;
- }
-
- let l = buf.iter().position(|&c| c == 0).unwrap();
- buf.truncate(l);
-
- // TODO: On Rust 1.56, we can use `shrink_to` here.
- //buf.shrink_to(l + 1);
- buf.shrink_to_fit();
-
- Ok(CString::new(buf).unwrap())
-}
-
-#[cfg(apple)]
-pub(crate) fn fcntl_rdadvise(fd: BorrowedFd<'_>, offset: u64, len: u64) -> io::Result<()> {
- // From the [macOS `fcntl` man page]:
- // `F_RDADVISE` - Issue an advisory read async with no copy to user.
- //
- // The `F_RDADVISE` command operates on the following structure which holds
- // information passed from the user to the system:
- //
- // ```c
- // struct radvisory {
- // off_t ra_offset; /* offset into the file */
- // int ra_count; /* size of the read */
- // };
- // ```
- //
- // [macOS `fcntl` man page]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/fcntl.2.html
- let ra_offset = match offset.try_into() {
- Ok(len) => len,
- // If this conversion fails, the user is providing an offset outside
- // any possible file extent, so just ignore it.
- Err(_) => return Ok(()),
- };
- let ra_count = match len.try_into() {
- Ok(len) => len,
- // If this conversion fails, the user is providing a dubiously large
- // hint which is unlikely to improve performance.
- Err(_) => return Ok(()),
- };
- unsafe {
- let radvisory = c::radvisory {
- ra_offset,
- ra_count,
- };
- ret(c::fcntl(borrowed_fd(fd), c::F_RDADVISE, &radvisory))
- }
-}
-
-#[cfg(apple)]
-pub(crate) fn fcntl_fullfsync(fd: BorrowedFd<'_>) -> io::Result<()> {
- unsafe { ret(c::fcntl(borrowed_fd(fd), c::F_FULLFSYNC)) }
-}
-
-/// Convert `times` from a `futimens`/`utimensat` argument into `setattrlist`
-/// arguments.
-#[cfg(apple)]
-fn times_to_attrlist(times: &Timestamps) -> (c::size_t, [c::timespec; 2], Attrlist) {
- // ABI details.
- const ATTR_CMN_MODTIME: u32 = 0x0000_0400;
- const ATTR_CMN_ACCTIME: u32 = 0x0000_1000;
- const ATTR_BIT_MAP_COUNT: u16 = 5;
-
- let mut times = times.clone();
-
- // If we have any `UTIME_NOW` elements, replace them with the current time.
- if times.last_access.tv_nsec == c::UTIME_NOW || times.last_modification.tv_nsec == c::UTIME_NOW
- {
- let now = {
- let mut tv = c::timeval {
- tv_sec: 0,
- tv_usec: 0,
- };
- unsafe {
- let r = c::gettimeofday(&mut tv, null_mut());
- assert_eq!(r, 0);
- }
- c::timespec {
- tv_sec: tv.tv_sec,
- tv_nsec: (tv.tv_usec * 1000) as _,
- }
- };
- if times.last_access.tv_nsec == c::UTIME_NOW {
- times.last_access = now;
- }
- if times.last_modification.tv_nsec == c::UTIME_NOW {
- times.last_modification = now;
- }
- }
-
- // Pack the return values following the rules for [`getattrlist`].
- //
- // [`getattrlist`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getattrlist.2.html
- let mut times_size = 0;
- let mut attrs = Attrlist {
- bitmapcount: ATTR_BIT_MAP_COUNT,
- reserved: 0,
- commonattr: 0,
- volattr: 0,
- dirattr: 0,
- fileattr: 0,
- forkattr: 0,
- };
- let mut return_times = [c::timespec {
- tv_sec: 0,
- tv_nsec: 0,
- }; 2];
- let mut times_index = 0;
- if times.last_modification.tv_nsec != c::UTIME_OMIT {
- attrs.commonattr |= ATTR_CMN_MODTIME;
- return_times[times_index] = times.last_modification;
- times_index += 1;
- times_size += size_of::<c::timespec>();
- }
- if times.last_access.tv_nsec != c::UTIME_OMIT {
- attrs.commonattr |= ATTR_CMN_ACCTIME;
- return_times[times_index] = times.last_access;
- times_size += size_of::<c::timespec>();
- }
-
- (times_size, return_times, attrs)
-}
-
-/// Support type for `Attrlist`.
-#[cfg(apple)]
-type Attrgroup = u32;
-
-/// Attribute list for use with `setattrlist`.
-#[cfg(apple)]
-#[repr(C)]
-struct Attrlist {
- bitmapcount: u16,
- reserved: u16,
- commonattr: Attrgroup,
- volattr: Attrgroup,
- dirattr: Attrgroup,
- fileattr: Attrgroup,
- forkattr: Attrgroup,
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub(crate) fn mount(
- source: Option<&CStr>,
- target: &CStr,
- file_system_type: Option<&CStr>,
- flags: super::types::MountFlagsArg,
- data: Option<&CStr>,
-) -> io::Result<()> {
- unsafe {
- ret(c::mount(
- source.map_or_else(null, CStr::as_ptr),
- target.as_ptr(),
- file_system_type.map_or_else(null, CStr::as_ptr),
- flags.0,
- data.map_or_else(null, CStr::as_ptr).cast(),
- ))
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub(crate) fn unmount(target: &CStr, flags: super::types::UnmountFlags) -> io::Result<()> {
- unsafe { ret(c::umount2(target.as_ptr(), flags.bits())) }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/fs/types.rs b/vendor/rustix-0.37.6/src/backend/libc/fs/types.rs
deleted file mode 100644
index f635f2cca..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/fs/types.rs
+++ /dev/null
@@ -1,1150 +0,0 @@
-use super::super::c;
-use bitflags::bitflags;
-
-bitflags! {
- /// `*_OK` constants for use with [`accessat`].
- ///
- /// [`accessat`]: fn.accessat.html
- pub struct Access: c::c_int {
- /// `R_OK`
- const READ_OK = c::R_OK;
-
- /// `W_OK`
- const WRITE_OK = c::W_OK;
-
- /// `X_OK`
- const EXEC_OK = c::X_OK;
-
- /// `F_OK`
- const EXISTS = c::F_OK;
- }
-}
-
-#[cfg(not(target_os = "redox"))]
-bitflags! {
- /// `AT_*` constants for use with [`openat`], [`statat`], and other `*at`
- /// functions.
- ///
- /// [`openat`]: crate::fs::openat
- /// [`statat`]: crate::fs::statat
- pub struct AtFlags: c::c_int {
- /// `AT_REMOVEDIR`
- const REMOVEDIR = c::AT_REMOVEDIR;
-
- /// `AT_SYMLINK_FOLLOW`
- const SYMLINK_FOLLOW = c::AT_SYMLINK_FOLLOW;
-
- /// `AT_SYMLINK_NOFOLLOW`
- const SYMLINK_NOFOLLOW = c::AT_SYMLINK_NOFOLLOW;
-
- /// `AT_EMPTY_PATH`
- #[cfg(any(
- target_os = "android",
- target_os = "freebsd",
- target_os = "fuchsia",
- target_os = "linux",
- ))]
- const EMPTY_PATH = c::AT_EMPTY_PATH;
-
- /// `AT_RESOLVE_BENEATH`
- #[cfg(target_os = "freebsd")]
- const RESOLVE_BENEATH = c::AT_RESOLVE_BENEATH;
-
- /// `AT_EACCESS`
- #[cfg(not(any(target_os = "emscripten", target_os = "android")))]
- const EACCESS = c::AT_EACCESS;
-
- /// `AT_STATX_SYNC_AS_STAT`
- #[cfg(all(target_os = "linux", target_env = "gnu"))]
- const STATX_SYNC_AS_STAT = c::AT_STATX_SYNC_AS_STAT;
-
- /// `AT_STATX_FORCE_SYNC`
- #[cfg(all(target_os = "linux", target_env = "gnu"))]
- const STATX_FORCE_SYNC = c::AT_STATX_FORCE_SYNC;
-
- /// `AT_STATX_DONT_SYNC`
- #[cfg(all(target_os = "linux", target_env = "gnu"))]
- const STATX_DONT_SYNC = c::AT_STATX_DONT_SYNC;
- }
-}
-
-bitflags! {
- /// `S_I*` constants for use with [`openat`], [`chmodat`], and [`fchmod`].
- ///
- /// [`openat`]: crate::fs::openat
- /// [`chmodat`]: crate::fs::chmodat
- /// [`fchmod`]: crate::fs::fchmod
- pub struct Mode: RawMode {
- /// `S_IRWXU`
- #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags.
- const RWXU = c::S_IRWXU as RawMode;
-
- /// `S_IRUSR`
- #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags.
- const RUSR = c::S_IRUSR as RawMode;
-
- /// `S_IWUSR`
- #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags.
- const WUSR = c::S_IWUSR as RawMode;
-
- /// `S_IXUSR`
- #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags.
- const XUSR = c::S_IXUSR as RawMode;
-
- /// `S_IRWXG`
- #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags.
- const RWXG = c::S_IRWXG as RawMode;
-
- /// `S_IRGRP`
- #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags.
- const RGRP = c::S_IRGRP as RawMode;
-
- /// `S_IWGRP`
- #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags.
- const WGRP = c::S_IWGRP as RawMode;
-
- /// `S_IXGRP`
- #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags.
- const XGRP = c::S_IXGRP as RawMode;
-
- /// `S_IRWXO`
- #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags.
- const RWXO = c::S_IRWXO as RawMode;
-
- /// `S_IROTH`
- #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags.
- const ROTH = c::S_IROTH as RawMode;
-
- /// `S_IWOTH`
- #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags.
- const WOTH = c::S_IWOTH as RawMode;
-
- /// `S_IXOTH`
- #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags.
- const XOTH = c::S_IXOTH as RawMode;
-
- /// `S_ISUID`
- #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags.
- const SUID = c::S_ISUID as RawMode;
-
- /// `S_ISGID`
- #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags.
- const SGID = c::S_ISGID as RawMode;
-
- /// `S_ISVTX`
- #[cfg(not(target_os = "wasi"))] // WASI doesn't have Unix-style mode flags.
- const SVTX = c::S_ISVTX as RawMode;
- }
-}
-
-impl Mode {
- /// Construct a `Mode` from the mode bits of the `st_mode` field of
- /// a `Stat`.
- #[inline]
- pub const fn from_raw_mode(st_mode: RawMode) -> Self {
- Self::from_bits_truncate(st_mode)
- }
-
- /// Construct an `st_mode` value from `Stat`.
- #[inline]
- pub const fn as_raw_mode(self) -> RawMode {
- self.bits()
- }
-}
-
-impl From<RawMode> for Mode {
- /// Support conversions from raw mode values to `Mode`.
- ///
- /// ```
- /// use rustix::fs::{Mode, RawMode};
- /// assert_eq!(Mode::from(0o700), Mode::RWXU);
- /// ```
- #[inline]
- fn from(st_mode: RawMode) -> Self {
- Self::from_raw_mode(st_mode)
- }
-}
-
-impl From<Mode> for RawMode {
- /// Support conversions from `Mode to raw mode values.
- ///
- /// ```
- /// use rustix::fs::{Mode, RawMode};
- /// assert_eq!(RawMode::from(Mode::RWXU), 0o700);
- /// ```
- #[inline]
- fn from(mode: Mode) -> Self {
- mode.as_raw_mode()
- }
-}
-
-bitflags! {
- /// `O_*` constants for use with [`openat`].
- ///
- /// [`openat`]: crate::fs::openat
- pub struct OFlags: c::c_int {
- /// `O_ACCMODE`
- const ACCMODE = c::O_ACCMODE;
-
- /// Similar to `ACCMODE`, but just includes the read/write flags, and
- /// no other flags.
- ///
- /// Some implementations include `O_PATH` in `O_ACCMODE`, when
- /// sometimes we really just want the read/write bits. Caution is
- /// indicated, as the presence of `O_PATH` may mean that the read/write
- /// bits don't have their usual meaning.
- const RWMODE = c::O_RDONLY | c::O_WRONLY | c::O_RDWR;
-
- /// `O_APPEND`
- const APPEND = c::O_APPEND;
-
- /// `O_CREAT`
- #[doc(alias = "CREAT")]
- const CREATE = c::O_CREAT;
-
- /// `O_DIRECTORY`
- const DIRECTORY = c::O_DIRECTORY;
-
- /// `O_DSYNC`
- #[cfg(not(any(target_os = "dragonfly", target_os = "redox")))]
- const DSYNC = c::O_DSYNC;
-
- /// `O_EXCL`
- const EXCL = c::O_EXCL;
-
- /// `O_FSYNC`
- #[cfg(any(
- bsd,
- all(target_os = "linux", not(target_env = "musl")),
- ))]
- const FSYNC = c::O_FSYNC;
-
- /// `O_NOFOLLOW`
- const NOFOLLOW = c::O_NOFOLLOW;
-
- /// `O_NONBLOCK`
- const NONBLOCK = c::O_NONBLOCK;
-
- /// `O_RDONLY`
- const RDONLY = c::O_RDONLY;
-
- /// `O_WRONLY`
- const WRONLY = c::O_WRONLY;
-
- /// `O_RDWR`
- const RDWR = c::O_RDWR;
-
- /// `O_NOCTTY`
- #[cfg(not(target_os = "redox"))]
- const NOCTTY = c::O_NOCTTY;
-
- /// `O_RSYNC`
- #[cfg(any(
- netbsdlike,
- target_os = "android",
- target_os = "emscripten",
- target_os = "linux",
- target_os = "wasi",
- ))]
- const RSYNC = c::O_RSYNC;
-
- /// `O_SYNC`
- #[cfg(not(target_os = "redox"))]
- const SYNC = c::O_SYNC;
-
- /// `O_TRUNC`
- const TRUNC = c::O_TRUNC;
-
- /// `O_PATH`
- #[cfg(any(
- target_os = "android",
- target_os = "emscripten",
- target_os = "freebsd",
- target_os = "fuchsia",
- target_os = "linux",
- target_os = "redox",
- ))]
- const PATH = c::O_PATH;
-
- /// `O_CLOEXEC`
- const CLOEXEC = c::O_CLOEXEC;
-
- /// `O_TMPFILE`
- #[cfg(any(
- target_os = "android",
- target_os = "emscripten",
- target_os = "fuchsia",
- target_os = "linux",
- ))]
- const TMPFILE = c::O_TMPFILE;
-
- /// `O_NOATIME`
- #[cfg(any(
- target_os = "android",
- target_os = "fuchsia",
- target_os = "linux",
- ))]
- const NOATIME = c::O_NOATIME;
-
- /// `O_DIRECT`
- #[cfg(any(
- target_os = "android",
- target_os = "emscripten",
- target_os = "freebsd",
- target_os = "fuchsia",
- target_os = "linux",
- target_os = "netbsd",
- ))]
- const DIRECT = c::O_DIRECT;
-
- /// `O_RESOLVE_BENEATH`
- #[cfg(target_os = "freebsd")]
- const RESOLVE_BENEATH = c::O_RESOLVE_BENEATH;
-
- /// `O_EMPTY_PATH`
- #[cfg(target_os = "freebsd")]
- const EMPTY_PATH = c::O_EMPTY_PATH;
- }
-}
-
-#[cfg(apple)]
-bitflags! {
- /// `CLONE_*` constants for use with [`fclonefileat`].
- ///
- /// [`fclonefileat`]: crate::fs::fclonefileat
- pub struct CloneFlags: c::c_int {
- /// `CLONE_NOFOLLOW`
- const NOFOLLOW = 1;
-
- /// `CLONE_NOOWNERCOPY`
- const NOOWNERCOPY = 2;
- }
-}
-
-#[cfg(apple)]
-mod copyfile {
- pub(super) const ACL: u32 = 1 << 0;
- pub(super) const STAT: u32 = 1 << 1;
- pub(super) const XATTR: u32 = 1 << 2;
- pub(super) const DATA: u32 = 1 << 3;
- pub(super) const SECURITY: u32 = STAT | ACL;
- pub(super) const METADATA: u32 = SECURITY | XATTR;
- pub(super) const ALL: u32 = METADATA | DATA;
-}
-
-#[cfg(apple)]
-bitflags! {
- /// `COPYFILE_*` constants.
- pub struct CopyfileFlags: c::c_uint {
- /// `COPYFILE_ACL`
- const ACL = copyfile::ACL;
-
- /// `COPYFILE_STAT`
- const STAT = copyfile::STAT;
-
- /// `COPYFILE_XATTR`
- const XATTR = copyfile::XATTR;
-
- /// `COPYFILE_DATA`
- const DATA = copyfile::DATA;
-
- /// `COPYFILE_SECURITY`
- const SECURITY = copyfile::SECURITY;
-
- /// `COPYFILE_METADATA`
- const METADATA = copyfile::METADATA;
-
- /// `COPYFILE_ALL`
- const ALL = copyfile::ALL;
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-bitflags! {
- /// `RESOLVE_*` constants for use with [`openat2`].
- ///
- /// [`openat2`]: crate::fs::openat2
- #[derive(Default)]
- pub struct ResolveFlags: u64 {
- /// `RESOLVE_NO_XDEV`
- const NO_XDEV = 0x01;
-
- /// `RESOLVE_NO_MAGICLINKS`
- const NO_MAGICLINKS = 0x02;
-
- /// `RESOLVE_NO_SYMLINKS`
- const NO_SYMLINKS = 0x04;
-
- /// `RESOLVE_BENEATH`
- const BENEATH = 0x08;
-
- /// `RESOLVE_IN_ROOT`
- const IN_ROOT = 0x10;
-
- /// `RESOLVE_CACHED` (since Linux 5.12)
- const CACHED = 0x20;
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-bitflags! {
- /// `RENAME_*` constants for use with [`renameat_with`].
- ///
- /// [`renameat_with`]: crate::fs::renameat_with
- pub struct RenameFlags: c::c_uint {
- /// `RENAME_EXCHANGE`
- const EXCHANGE = c::RENAME_EXCHANGE as _;
-
- /// `RENAME_NOREPLACE`
- const NOREPLACE = c::RENAME_NOREPLACE as _;
-
- /// `RENAME_WHITEOUT`
- const WHITEOUT = c::RENAME_WHITEOUT as _;
- }
-}
-
-/// `S_IF*` constants for use with [`mknodat`] and [`Stat`]'s `st_mode` field.
-///
-/// [`mknodat`]: crate::fs::mknodat
-/// [`Stat`]: crate::fs::Stat
-#[derive(Clone, Copy, Debug, PartialEq, Eq)]
-pub enum FileType {
- /// `S_IFREG`
- RegularFile = c::S_IFREG as isize,
-
- /// `S_IFDIR`
- Directory = c::S_IFDIR as isize,
-
- /// `S_IFLNK`
- Symlink = c::S_IFLNK as isize,
-
- /// `S_IFIFO`
- #[cfg(not(target_os = "wasi"))] // TODO: Use WASI's `S_IFIFO`.
- #[doc(alias = "IFO")]
- Fifo = c::S_IFIFO as isize,
-
- /// `S_IFSOCK`
- #[cfg(not(target_os = "wasi"))] // TODO: Use WASI's `S_IFSOCK`.
- Socket = c::S_IFSOCK as isize,
-
- /// `S_IFCHR`
- CharacterDevice = c::S_IFCHR as isize,
-
- /// `S_IFBLK`
- BlockDevice = c::S_IFBLK as isize,
-
- /// An unknown filesystem object.
- Unknown,
-}
-
-impl FileType {
- /// Construct a `FileType` from the `S_IFMT` bits of the `st_mode` field of
- /// a `Stat`.
- pub const fn from_raw_mode(st_mode: RawMode) -> Self {
- match (st_mode as c::mode_t) & c::S_IFMT {
- c::S_IFREG => Self::RegularFile,
- c::S_IFDIR => Self::Directory,
- c::S_IFLNK => Self::Symlink,
- #[cfg(not(target_os = "wasi"))] // TODO: Use WASI's `S_IFIFO`.
- c::S_IFIFO => Self::Fifo,
- #[cfg(not(target_os = "wasi"))] // TODO: Use WASI's `S_IFSOCK`.
- c::S_IFSOCK => Self::Socket,
- c::S_IFCHR => Self::CharacterDevice,
- c::S_IFBLK => Self::BlockDevice,
- _ => Self::Unknown,
- }
- }
-
- /// Construct an `st_mode` value from `Stat`.
- pub const fn as_raw_mode(self) -> RawMode {
- match self {
- Self::RegularFile => c::S_IFREG as RawMode,
- Self::Directory => c::S_IFDIR as RawMode,
- Self::Symlink => c::S_IFLNK as RawMode,
- #[cfg(not(target_os = "wasi"))] // TODO: Use WASI's `S_IFIFO`.
- Self::Fifo => c::S_IFIFO as RawMode,
- #[cfg(not(target_os = "wasi"))] // TODO: Use WASI's `S_IFSOCK`.
- Self::Socket => c::S_IFSOCK as RawMode,
- Self::CharacterDevice => c::S_IFCHR as RawMode,
- Self::BlockDevice => c::S_IFBLK as RawMode,
- Self::Unknown => c::S_IFMT as RawMode,
- }
- }
-
- /// Construct a `FileType` from the `d_type` field of a `c::dirent`.
- #[cfg(not(any(solarish, target_os = "haiku", target_os = "redox")))]
- pub(crate) const fn from_dirent_d_type(d_type: u8) -> Self {
- match d_type {
- c::DT_REG => Self::RegularFile,
- c::DT_DIR => Self::Directory,
- c::DT_LNK => Self::Symlink,
- #[cfg(not(target_os = "wasi"))] // TODO: Use WASI's `DT_SOCK`.
- c::DT_SOCK => Self::Socket,
- #[cfg(not(target_os = "wasi"))] // TODO: Use WASI's `DT_FIFO`.
- c::DT_FIFO => Self::Fifo,
- c::DT_CHR => Self::CharacterDevice,
- c::DT_BLK => Self::BlockDevice,
- // c::DT_UNKNOWN |
- _ => Self::Unknown,
- }
- }
-}
-
-/// `POSIX_FADV_*` constants for use with [`fadvise`].
-///
-/// [`fadvise`]: crate::fs::fadvise
-#[cfg(not(any(
- apple,
- netbsdlike,
- solarish,
- target_os = "dragonfly",
- target_os = "haiku",
- target_os = "redox",
-)))]
-#[derive(Debug, Copy, Clone, Eq, PartialEq)]
-#[repr(u32)]
-pub enum Advice {
- /// `POSIX_FADV_NORMAL`
- Normal = c::POSIX_FADV_NORMAL as c::c_uint,
-
- /// `POSIX_FADV_SEQUENTIAL`
- Sequential = c::POSIX_FADV_SEQUENTIAL as c::c_uint,
-
- /// `POSIX_FADV_RANDOM`
- Random = c::POSIX_FADV_RANDOM as c::c_uint,
-
- /// `POSIX_FADV_NOREUSE`
- NoReuse = c::POSIX_FADV_NOREUSE as c::c_uint,
-
- /// `POSIX_FADV_WILLNEED`
- WillNeed = c::POSIX_FADV_WILLNEED as c::c_uint,
-
- /// `POSIX_FADV_DONTNEED`
- DontNeed = c::POSIX_FADV_DONTNEED as c::c_uint,
-}
-
-#[cfg(any(target_os = "android", target_os = "freebsd", target_os = "linux"))]
-bitflags! {
- /// `MFD_*` constants for use with [`memfd_create`].
- ///
- /// [`memfd_create`]: crate::fs::memfd_create
- pub struct MemfdFlags: c::c_uint {
- /// `MFD_CLOEXEC`
- const CLOEXEC = c::MFD_CLOEXEC;
-
- /// `MFD_ALLOW_SEALING`
- const ALLOW_SEALING = c::MFD_ALLOW_SEALING;
-
- /// `MFD_HUGETLB` (since Linux 4.14)
- const HUGETLB = c::MFD_HUGETLB;
-
- /// `MFD_HUGE_64KB`
- const HUGE_64KB = c::MFD_HUGE_64KB;
- /// `MFD_HUGE_512JB`
- const HUGE_512KB = c::MFD_HUGE_512KB;
- /// `MFD_HUGE_1MB`
- const HUGE_1MB = c::MFD_HUGE_1MB;
- /// `MFD_HUGE_2MB`
- const HUGE_2MB = c::MFD_HUGE_2MB;
- /// `MFD_HUGE_8MB`
- const HUGE_8MB = c::MFD_HUGE_8MB;
- /// `MFD_HUGE_16MB`
- const HUGE_16MB = c::MFD_HUGE_16MB;
- /// `MFD_HUGE_32MB`
- const HUGE_32MB = c::MFD_HUGE_32MB;
- /// `MFD_HUGE_256MB`
- const HUGE_256MB = c::MFD_HUGE_256MB;
- /// `MFD_HUGE_512MB`
- const HUGE_512MB = c::MFD_HUGE_512MB;
- /// `MFD_HUGE_1GB`
- const HUGE_1GB = c::MFD_HUGE_1GB;
- /// `MFD_HUGE_2GB`
- const HUGE_2GB = c::MFD_HUGE_2GB;
- /// `MFD_HUGE_16GB`
- const HUGE_16GB = c::MFD_HUGE_16GB;
- }
-}
-
-#[cfg(any(
- target_os = "android",
- target_os = "freebsd",
- target_os = "fuchsia",
- target_os = "linux",
-))]
-bitflags! {
- /// `F_SEAL_*` constants for use with [`fcntl_add_seals`] and
- /// [`fcntl_get_seals`].
- ///
- /// [`fcntl_add_seals`]: crate::fs::fcntl_add_seals
- /// [`fcntl_get_seals`]: crate::fs::fcntl_get_seals
- pub struct SealFlags: i32 {
- /// `F_SEAL_SEAL`.
- const SEAL = c::F_SEAL_SEAL;
- /// `F_SEAL_SHRINK`.
- const SHRINK = c::F_SEAL_SHRINK;
- /// `F_SEAL_GROW`.
- const GROW = c::F_SEAL_GROW;
- /// `F_SEAL_WRITE`.
- const WRITE = c::F_SEAL_WRITE;
- /// `F_SEAL_FUTURE_WRITE` (since Linux 5.1)
- #[cfg(any(target_os = "android", target_os = "linux"))]
- const FUTURE_WRITE = c::F_SEAL_FUTURE_WRITE;
- }
-}
-
-#[cfg(all(target_os = "linux", target_env = "gnu"))]
-bitflags! {
- /// `STATX_*` constants for use with [`statx`].
- ///
- /// [`statx`]: crate::fs::statx
- pub struct StatxFlags: u32 {
- /// `STATX_TYPE`
- const TYPE = c::STATX_TYPE;
-
- /// `STATX_MODE`
- const MODE = c::STATX_MODE;
-
- /// `STATX_NLINK`
- const NLINK = c::STATX_NLINK;
-
- /// `STATX_UID`
- const UID = c::STATX_UID;
-
- /// `STATX_GID`
- const GID = c::STATX_GID;
-
- /// `STATX_ATIME`
- const ATIME = c::STATX_ATIME;
-
- /// `STATX_MTIME`
- const MTIME = c::STATX_MTIME;
-
- /// `STATX_CTIME`
- const CTIME = c::STATX_CTIME;
-
- /// `STATX_INO`
- const INO = c::STATX_INO;
-
- /// `STATX_SIZE`
- const SIZE = c::STATX_SIZE;
-
- /// `STATX_BLOCKS`
- const BLOCKS = c::STATX_BLOCKS;
-
- /// `STATX_BASIC_STATS`
- const BASIC_STATS = c::STATX_BASIC_STATS;
-
- /// `STATX_BTIME`
- const BTIME = c::STATX_BTIME;
-
- /// `STATX_MNT_ID` (since Linux 5.8)
- const MNT_ID = c::STATX_MNT_ID;
-
- /// `STATX_ALL`
- const ALL = c::STATX_ALL;
- }
-}
-
-#[cfg(any(
- target_os = "android",
- all(target_os = "linux", not(target_env = "gnu")),
-))]
-bitflags! {
- /// `STATX_*` constants for use with [`statx`].
- ///
- /// [`statx`]: crate::fs::statx
- pub struct StatxFlags: u32 {
- /// `STATX_TYPE`
- const TYPE = 0x0001;
-
- /// `STATX_MODE`
- const MODE = 0x0002;
-
- /// `STATX_NLINK`
- const NLINK = 0x0004;
-
- /// `STATX_UID`
- const UID = 0x0008;
-
- /// `STATX_GID`
- const GID = 0x0010;
-
- /// `STATX_ATIME`
- const ATIME = 0x0020;
-
- /// `STATX_MTIME`
- const MTIME = 0x0040;
-
- /// `STATX_CTIME`
- const CTIME = 0x0080;
-
- /// `STATX_INO`
- const INO = 0x0100;
-
- /// `STATX_SIZE`
- const SIZE = 0x0200;
-
- /// `STATX_BLOCKS`
- const BLOCKS = 0x0400;
-
- /// `STATX_BASIC_STATS`
- const BASIC_STATS = 0x07ff;
-
- /// `STATX_BTIME`
- const BTIME = 0x800;
-
- /// `STATX_MNT_ID` (since Linux 5.8)
- const MNT_ID = 0x1000;
-
- /// `STATX_ALL`
- const ALL = 0xfff;
- }
-}
-
-#[cfg(not(any(netbsdlike, solarish, target_os = "aix", target_os = "redox")))]
-bitflags! {
- /// `FALLOC_FL_*` constants for use with [`fallocate`].
- ///
- /// [`fallocate`]: crate::fs::fallocate
- pub struct FallocateFlags: i32 {
- /// `FALLOC_FL_KEEP_SIZE`
- #[cfg(not(any(
- bsd,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- const KEEP_SIZE = c::FALLOC_FL_KEEP_SIZE;
- /// `FALLOC_FL_PUNCH_HOLE`
- #[cfg(not(any(
- bsd,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- const PUNCH_HOLE = c::FALLOC_FL_PUNCH_HOLE;
- /// `FALLOC_FL_NO_HIDE_STALE`
- #[cfg(not(any(
- bsd,
- target_os = "aix",
- target_os = "haiku",
- target_os = "linux",
- target_os = "emscripten",
- target_os = "fuchsia",
- target_os = "wasi",
- )))]
- const NO_HIDE_STALE = c::FALLOC_FL_NO_HIDE_STALE;
- /// `FALLOC_FL_COLLAPSE_RANGE`
- #[cfg(not(any(
- bsd,
- target_os = "aix",
- target_os = "haiku",
- target_os = "emscripten",
- target_os = "wasi",
- )))]
- const COLLAPSE_RANGE = c::FALLOC_FL_COLLAPSE_RANGE;
- /// `FALLOC_FL_ZERO_RANGE`
- #[cfg(not(any(
- bsd,
- target_os = "aix",
- target_os = "haiku",
- target_os = "emscripten",
- target_os = "wasi",
- )))]
- const ZERO_RANGE = c::FALLOC_FL_ZERO_RANGE;
- /// `FALLOC_FL_INSERT_RANGE`
- #[cfg(not(any(
- bsd,
- target_os = "aix",
- target_os = "haiku",
- target_os = "emscripten",
- target_os = "wasi",
- )))]
- const INSERT_RANGE = c::FALLOC_FL_INSERT_RANGE;
- /// `FALLOC_FL_UNSHARE_RANGE`
- #[cfg(not(any(
- bsd,
- target_os = "aix",
- target_os = "haiku",
- target_os = "emscripten",
- target_os = "wasi",
- )))]
- const UNSHARE_RANGE = c::FALLOC_FL_UNSHARE_RANGE;
- }
-}
-
-#[cfg(not(any(solarish, target_os = "haiku", target_os = "redox", target_os = "wasi")))]
-bitflags! {
- /// `ST_*` constants for use with [`StatVfs`].
- pub struct StatVfsMountFlags: u64 {
- /// `ST_MANDLOCK`
- #[cfg(any(target_os = "android", target_os = "emscripten", target_os = "fuchsia", target_os = "linux"))]
- const MANDLOCK = libc::ST_MANDLOCK as u64;
-
- /// `ST_NOATIME`
- #[cfg(any(target_os = "android", target_os = "emscripten", target_os = "fuchsia", target_os = "linux"))]
- const NOATIME = libc::ST_NOATIME as u64;
-
- /// `ST_NODEV`
- #[cfg(any(target_os = "aix", target_os = "android", target_os = "emscripten", target_os = "fuchsia", target_os = "linux"))]
- const NODEV = libc::ST_NODEV as u64;
-
- /// `ST_NODIRATIME`
- #[cfg(any(target_os = "android", target_os = "emscripten", target_os = "fuchsia", target_os = "linux"))]
- const NODIRATIME = libc::ST_NODIRATIME as u64;
-
- /// `ST_NOEXEC`
- #[cfg(any(target_os = "android", target_os = "emscripten", target_os = "fuchsia", target_os = "linux"))]
- const NOEXEC = libc::ST_NOEXEC as u64;
-
- /// `ST_NOSUID`
- const NOSUID = libc::ST_NOSUID as u64;
-
- /// `ST_RDONLY`
- const RDONLY = libc::ST_RDONLY as u64;
-
- /// `ST_RELATIME`
- #[cfg(any(target_os = "android", all(target_os = "linux", target_env = "gnu")))]
- const RELATIME = libc::ST_RELATIME as u64;
-
- /// `ST_SYNCHRONOUS`
- #[cfg(any(target_os = "android", target_os = "emscripten", target_os = "fuchsia", target_os = "linux"))]
- const SYNCHRONOUS = libc::ST_SYNCHRONOUS as u64;
- }
-}
-
-/// `LOCK_*` constants for use with [`flock`] and [`fcntl_lock`].
-///
-/// [`flock`]: crate::fs::flock
-/// [`fcntl_lock`]: crate::fs::fcntl_lock
-#[cfg(not(target_os = "wasi"))]
-#[derive(Clone, Copy, Debug, PartialEq, Eq)]
-#[repr(i32)]
-pub enum FlockOperation {
- /// `LOCK_SH`
- LockShared = c::LOCK_SH,
- /// `LOCK_EX`
- LockExclusive = c::LOCK_EX,
- /// `LOCK_UN`
- Unlock = c::LOCK_UN,
- /// `LOCK_SH | LOCK_NB`
- NonBlockingLockShared = c::LOCK_SH | c::LOCK_NB,
- /// `LOCK_EX | LOCK_NB`
- NonBlockingLockExclusive = c::LOCK_EX | c::LOCK_NB,
- /// `LOCK_UN | LOCK_NB`
- NonBlockingUnlock = c::LOCK_UN | c::LOCK_NB,
-}
-
-/// `struct stat` for use with [`statat`] and [`fstat`].
-///
-/// [`statat`]: crate::fs::statat
-/// [`fstat`]: crate::fs::fstat
-#[cfg(not(linux_like))]
-pub type Stat = c::stat;
-
-/// `struct stat` for use with [`statat`] and [`fstat`].
-///
-/// [`statat`]: crate::fs::statat
-/// [`fstat`]: crate::fs::fstat
-#[cfg(any(
- all(
- any(target_os = "android", target_os = "linux"),
- target_pointer_width = "64",
- ),
- target_os = "emscripten",
- target_os = "l4re",
-))]
-pub type Stat = c::stat64;
-
-/// `struct stat` for use with [`statat`] and [`fstat`].
-///
-/// [`statat`]: crate::fs::statat
-/// [`fstat`]: crate::fs::fstat
-// On 32-bit, Linux's `struct stat64` has a 32-bit `st_mtime` and friends, so
-// we use our own struct, populated from `statx` where possible, to avoid the
-// y2038 bug.
-#[cfg(all(
- any(target_os = "android", target_os = "linux"),
- target_pointer_width = "32",
-))]
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-#[allow(missing_docs)]
-pub struct Stat {
- pub st_dev: u64,
- pub st_mode: u32,
- pub st_nlink: u32,
- pub st_uid: u32,
- pub st_gid: u32,
- pub st_rdev: u64,
- pub st_size: i64,
- pub st_blksize: u32,
- pub st_blocks: u64,
- pub st_atime: u64,
- pub st_atime_nsec: u32,
- pub st_mtime: u64,
- pub st_mtime_nsec: u32,
- pub st_ctime: u64,
- pub st_ctime_nsec: u32,
- pub st_ino: u64,
-}
-
-/// `struct statfs` for use with [`statfs`] and [`fstatfs`].
-///
-/// [`statfs`]: crate::fs::statfs
-/// [`fstatfs`]: crate::fs::fstatfs
-#[cfg(not(any(
- linux_like,
- solarish,
- target_os = "haiku",
- target_os = "netbsd",
- target_os = "redox",
- target_os = "wasi",
-)))]
-#[allow(clippy::module_name_repetitions)]
-pub type StatFs = c::statfs;
-
-/// `struct statfs` for use with [`statfs`] and [`fstatfs`].
-///
-/// [`statfs`]: crate::fs::statfs
-/// [`fstatfs`]: crate::fs::fstatfs
-#[cfg(linux_like)]
-pub type StatFs = c::statfs64;
-
-/// `struct statvfs` for use with [`statvfs`] and [`fstatvfs`].
-///
-/// [`statvfs`]: crate::fs::statvfs
-/// [`fstatvfs`]: crate::fs::fstatvfs
-#[cfg(not(any(solarish, target_os = "haiku", target_os = "redox", target_os = "wasi")))]
-#[allow(missing_docs)]
-pub struct StatVfs {
- pub f_bsize: u64,
- pub f_frsize: u64,
- pub f_blocks: u64,
- pub f_bfree: u64,
- pub f_bavail: u64,
- pub f_files: u64,
- pub f_ffree: u64,
- pub f_favail: u64,
- pub f_fsid: u64,
- pub f_flag: StatVfsMountFlags,
- pub f_namemax: u64,
-}
-
-/// `struct statx` for use with [`statx`].
-///
-/// [`statx`]: crate::fs::statx
-#[cfg(all(target_os = "linux", target_env = "gnu"))]
-// Use the glibc `struct statx`.
-pub type Statx = c::statx;
-
-/// `struct statx_timestamp` for use with [`Statx`].
-#[cfg(all(target_os = "linux", target_env = "gnu"))]
-// Use the glibc `struct statx_timestamp`.
-pub type StatxTimestamp = c::statx;
-
-/// `struct statx` for use with [`statx`].
-///
-/// [`statx`]: crate::fs::statx
-// Non-glibc ABIs don't currently declare a `struct statx`, so we declare it
-// ourselves.
-#[cfg(any(
- target_os = "android",
- all(target_os = "linux", not(target_env = "gnu")),
-))]
-#[repr(C)]
-#[allow(missing_docs)]
-pub struct Statx {
- pub stx_mask: u32,
- pub stx_blksize: u32,
- pub stx_attributes: u64,
- pub stx_nlink: u32,
- pub stx_uid: u32,
- pub stx_gid: u32,
- pub stx_mode: u16,
- __statx_pad1: [u16; 1],
- pub stx_ino: u64,
- pub stx_size: u64,
- pub stx_blocks: u64,
- pub stx_attributes_mask: u64,
- pub stx_atime: StatxTimestamp,
- pub stx_btime: StatxTimestamp,
- pub stx_ctime: StatxTimestamp,
- pub stx_mtime: StatxTimestamp,
- pub stx_rdev_major: u32,
- pub stx_rdev_minor: u32,
- pub stx_dev_major: u32,
- pub stx_dev_minor: u32,
- pub stx_mnt_id: u64,
- __statx_pad2: u64,
- __statx_pad3: [u64; 12],
-}
-
-/// `struct statx_timestamp` for use with [`Statx`].
-// Non-glibc ABIs don't currently declare a `struct statx_timestamp`, so we
-// declare it ourselves.
-#[cfg(any(
- target_os = "android",
- all(target_os = "linux", not(target_env = "gnu")),
-))]
-#[repr(C)]
-#[allow(missing_docs)]
-pub struct StatxTimestamp {
- pub tv_sec: i64,
- pub tv_nsec: u32,
- pub __statx_timestamp_pad1: [i32; 1],
-}
-
-/// `mode_t`
-#[cfg(not(all(target_os = "android", target_pointer_width = "32")))]
-pub type RawMode = c::mode_t;
-
-/// `mode_t`
-#[cfg(all(target_os = "android", target_pointer_width = "32"))]
-pub type RawMode = c::c_uint;
-
-/// `dev_t`
-#[cfg(not(all(target_os = "android", target_pointer_width = "32")))]
-pub type Dev = c::dev_t;
-
-/// `dev_t`
-#[cfg(all(target_os = "android", target_pointer_width = "32"))]
-pub type Dev = c::c_ulonglong;
-
-/// `__fsword_t`
-#[cfg(all(
- target_os = "linux",
- not(target_env = "musl"),
- not(target_arch = "s390x"),
-))]
-pub type FsWord = c::__fsword_t;
-
-/// `__fsword_t`
-#[cfg(all(
- any(target_os = "android", all(target_os = "linux", target_env = "musl")),
- target_pointer_width = "32",
-))]
-pub type FsWord = u32;
-
-/// `__fsword_t`
-#[cfg(all(
- any(target_os = "android", all(target_os = "linux", target_env = "musl")),
- not(target_arch = "s390x"),
- target_pointer_width = "64",
-))]
-pub type FsWord = u64;
-
-/// `__fsword_t`
-// s390x uses `u32` for `statfs` entries, even though `__fsword_t` is `u64`.
-#[cfg(all(target_os = "linux", target_arch = "s390x"))]
-pub type FsWord = u32;
-
-/// `copyfile_state_t`—State for use with [`fcopyfile`].
-///
-/// [`fcopyfile`]: crate::fs::fcopyfile
-#[cfg(apple)]
-#[allow(non_camel_case_types)]
-#[repr(transparent)]
-#[derive(Copy, Clone)]
-pub struct copyfile_state_t(pub(crate) *mut c::c_void);
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-bitflags! {
- /// `MS_*` constants for use with [`mount`].
- ///
- /// [`mount`]: crate::fs::mount
- pub struct MountFlags: c::c_ulong {
- /// `MS_BIND`
- const BIND = c::MS_BIND;
-
- /// `MS_DIRSYNC`
- const DIRSYNC = c::MS_DIRSYNC;
-
- /// `MS_LAZYTIME`
- const LAZYTIME = c::MS_LAZYTIME;
-
- /// `MS_MANDLOCK`
- #[doc(alias = "MANDLOCK")]
- const PERMIT_MANDATORY_FILE_LOCKING = c::MS_MANDLOCK;
-
- /// `MS_NOATIME`
- const NOATIME = c::MS_NOATIME;
-
- /// `MS_NODEV`
- const NODEV = c::MS_NODEV;
-
- /// `MS_NODIRATIME`
- const NODIRATIME = c::MS_NODIRATIME;
-
- /// `MS_NOEXEC`
- const NOEXEC = c::MS_NOEXEC;
-
- /// `MS_NOSUID`
- const NOSUID = c::MS_NOSUID;
-
- /// `MS_RDONLY`
- const RDONLY = c::MS_RDONLY;
-
- /// `MS_REC`
- const REC = c::MS_REC;
-
- /// `MS_RELATIME`
- const RELATIME = c::MS_RELATIME;
-
- /// `MS_SILENT`
- const SILENT = c::MS_SILENT;
-
- /// `MS_STRICTATIME`
- const STRICTATIME = c::MS_STRICTATIME;
-
- /// `MS_SYNCHRONOUS`
- const SYNCHRONOUS = c::MS_SYNCHRONOUS;
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-bitflags! {
- /// `MS_*` constants for use with [`change_mount`].
- ///
- /// [`change_mount`]: crate::fs::mount::change_mount.
- pub struct MountPropagationFlags: c::c_ulong {
- /// `MS_SHARED`
- const SHARED = c::MS_SHARED;
- /// `MS_PRIVATE`
- const PRIVATE = c::MS_PRIVATE;
- /// `MS_SLAVE`
- const SLAVE = c::MS_SLAVE;
- /// `MS_UNBINDABLE`
- const UNBINDABLE = c::MS_UNBINDABLE;
- /// `MS_REC`
- const REC = c::MS_REC;
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-bitflags! {
- pub(crate) struct InternalMountFlags: c::c_ulong {
- const REMOUNT = c::MS_REMOUNT;
- const MOVE = c::MS_MOVE;
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub(crate) struct MountFlagsArg(pub(crate) c::c_ulong);
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-bitflags! {
- /// `MNT_*` constants for use with [`unmount`].
- ///
- /// [`unmount`]: crate::fs::mount::unmount
- pub struct UnmountFlags: c::c_int {
- /// `MNT_FORCE`
- const FORCE = c::MNT_FORCE;
- /// `MNT_DETACH`
- const DETACH = c::MNT_DETACH;
- /// `MNT_EXPIRE`
- const EXPIRE = c::MNT_EXPIRE;
- /// `UMOUNT_NOFOLLOW`
- const NOFOLLOW = c::UMOUNT_NOFOLLOW;
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/io/epoll.rs b/vendor/rustix-0.37.6/src/backend/libc/io/epoll.rs
deleted file mode 100644
index 62a3c742b..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/io/epoll.rs
+++ /dev/null
@@ -1,366 +0,0 @@
-//! epoll support.
-//!
-//! This is an experiment, and it isn't yet clear whether epoll is the right
-//! level of abstraction at which to introduce safety. But it works fairly well
-//! in simple examples 🙂.
-//!
-//! # Examples
-//!
-//! ```no_run
-//! # #![cfg_attr(io_lifetimes_use_std, feature(io_safety))]
-//! # #[cfg(feature = "net")]
-//! # fn main() -> std::io::Result<()> {
-//! use io_lifetimes::AsFd;
-//! use rustix::io::{epoll, ioctl_fionbio, read, write};
-//! use rustix::net::{
-//! accept, bind_v4, listen, socket, AddressFamily, Ipv4Addr, Protocol, SocketAddrV4,
-//! SocketType,
-//! };
-//! use std::collections::HashMap;
-//! use std::os::unix::io::AsRawFd;
-//!
-//! // Create a socket and listen on it.
-//! let listen_sock = socket(AddressFamily::INET, SocketType::STREAM, Protocol::default())?;
-//! bind_v4(&listen_sock, &SocketAddrV4::new(Ipv4Addr::LOCALHOST, 0))?;
-//! listen(&listen_sock, 1)?;
-//!
-//! // Create an epoll object. Using `Owning` here means the epoll object will
-//! // take ownership of the file descriptors registered with it.
-//! let epoll = epoll::epoll_create(epoll::CreateFlags::CLOEXEC)?;
-//!
-//! // Register the socket with the epoll object.
-//! epoll::epoll_add(&epoll, &listen_sock, 1, epoll::EventFlags::IN)?;
-//!
-//! // Keep track of the sockets we've opened.
-//! let mut next_id = 2;
-//! let mut sockets = HashMap::new();
-//!
-//! // Process events.
-//! let mut event_list = epoll::EventVec::with_capacity(4);
-//! loop {
-//! epoll::epoll_wait(&epoll, &mut event_list, -1)?;
-//! for (_event_flags, target) in &event_list {
-//! if target == 1 {
-//! // Accept a new connection, set it to non-blocking, and
-//! // register to be notified when it's ready to write to.
-//! let conn_sock = accept(&listen_sock)?;
-//! ioctl_fionbio(&conn_sock, true)?;
-//! epoll::epoll_add(
-//! &epoll,
-//! &conn_sock,
-//! next_id,
-//! epoll::EventFlags::OUT | epoll::EventFlags::ET,
-//! )?;
-//!
-//! // Keep track of the socket.
-//! sockets.insert(next_id, conn_sock);
-//! next_id += 1;
-//! } else {
-//! // Write a message to the stream and then unregister it.
-//! let target = sockets.remove(&target).unwrap();
-//! write(&target, b"hello\n")?;
-//! let _ = epoll::epoll_del(&epoll, &target)?;
-//! }
-//! }
-//! }
-//! # }
-//! # #[cfg(not(feature = "net"))]
-//! # fn main() {}
-//! ```
-
-use super::super::c;
-use super::super::conv::{ret, ret_owned_fd, ret_u32};
-use crate::fd::{AsFd, AsRawFd, OwnedFd};
-use crate::io;
-use alloc::vec::Vec;
-use bitflags::bitflags;
-use core::convert::TryInto;
-use core::ptr::null_mut;
-
-bitflags! {
- /// `EPOLL_*` for use with [`Epoll::new`].
- pub struct CreateFlags: c::c_int {
- /// `EPOLL_CLOEXEC`
- const CLOEXEC = c::EPOLL_CLOEXEC;
- }
-}
-
-bitflags! {
- /// `EPOLL*` for use with [`Epoll::add`].
- #[derive(Default)]
- pub struct EventFlags: u32 {
- /// `EPOLLIN`
- const IN = c::EPOLLIN as u32;
-
- /// `EPOLLOUT`
- const OUT = c::EPOLLOUT as u32;
-
- /// `EPOLLPRI`
- const PRI = c::EPOLLPRI as u32;
-
- /// `EPOLLERR`
- const ERR = c::EPOLLERR as u32;
-
- /// `EPOLLHUP`
- const HUP = c::EPOLLHUP as u32;
-
- /// `EPOLLRDNORM`
- const RDNORM = c::EPOLLRDNORM as u32;
-
- /// `EPOLLRDBAND`
- const RDBAND = c::EPOLLRDBAND as u32;
-
- /// `EPOLLWRNORM`
- const WRNORM = c::EPOLLWRNORM as u32;
-
- /// `EPOLLWRBAND`
- const WRBAND = c::EPOLLWRBAND as u32;
-
- /// `EPOLLMSG`
- const MSG = c::EPOLLMSG as u32;
-
- /// `EPOLLRDHUP`
- const RDHUP = c::EPOLLRDHUP as u32;
-
- /// `EPOLLET`
- const ET = c::EPOLLET as u32;
-
- /// `EPOLLONESHOT`
- const ONESHOT = c::EPOLLONESHOT as u32;
-
- /// `EPOLLWAKEUP`
- const WAKEUP = c::EPOLLWAKEUP as u32;
-
- /// `EPOLLEXCLUSIVE`
- #[cfg(not(target_os = "android"))]
- const EXCLUSIVE = c::EPOLLEXCLUSIVE as u32;
- }
-}
-
-/// `epoll_create1(flags)`—Creates a new `Epoll`.
-///
-/// Use the [`CreateFlags::CLOEXEC`] flag to prevent the resulting file
-/// descriptor from being implicitly passed across `exec` boundaries.
-#[inline]
-#[doc(alias = "epoll_create1")]
-pub fn epoll_create(flags: CreateFlags) -> io::Result<OwnedFd> {
- // SAFETY: We're calling `epoll_create1` via FFI and we know how it
- // behaves.
- unsafe { ret_owned_fd(c::epoll_create1(flags.bits())) }
-}
-
-/// `epoll_ctl(self, EPOLL_CTL_ADD, data, event)`—Adds an element to an
-/// `Epoll`.
-///
-/// Note that if `epoll_del` is not called on the I/O source passed into
-/// this function before the I/O source is `close`d, then the `epoll` will
-/// act as if the I/O source is still registered with it. This can lead to
-/// spurious events being returned from `epoll_wait`. If a file descriptor
-/// is an `Arc<dyn SystemResource>`, then `epoll` can be thought to maintain
-/// a `Weak<dyn SystemResource>` to the file descriptor.
-#[doc(alias = "epoll_ctl")]
-pub fn epoll_add(
- epoll: impl AsFd,
- source: impl AsFd,
- data: u64,
- event_flags: EventFlags,
-) -> io::Result<()> {
- // SAFETY: We're calling `epoll_ctl` via FFI and we know how it
- // behaves.
- unsafe {
- let raw_fd = source.as_fd().as_raw_fd();
- ret(c::epoll_ctl(
- epoll.as_fd().as_raw_fd(),
- c::EPOLL_CTL_ADD,
- raw_fd,
- &mut c::epoll_event {
- events: event_flags.bits(),
- r#u64: data,
- },
- ))
- }
-}
-
-/// `epoll_ctl(self, EPOLL_CTL_MOD, target, event)`—Modifies an element in
-/// this `Epoll`.
-///
-/// This sets the events of interest with `target` to `events`.
-#[doc(alias = "epoll_ctl")]
-pub fn epoll_mod(
- epoll: impl AsFd,
- source: impl AsFd,
- data: u64,
- event_flags: EventFlags,
-) -> io::Result<()> {
- let raw_fd = source.as_fd().as_raw_fd();
-
- // SAFETY: We're calling `epoll_ctl` via FFI and we know how it
- // behaves.
- unsafe {
- ret(c::epoll_ctl(
- epoll.as_fd().as_raw_fd(),
- c::EPOLL_CTL_MOD,
- raw_fd,
- &mut c::epoll_event {
- events: event_flags.bits(),
- r#u64: data,
- },
- ))
- }
-}
-
-/// `epoll_ctl(self, EPOLL_CTL_DEL, target, NULL)`—Removes an element in
-/// this `Epoll`.
-#[doc(alias = "epoll_ctl")]
-pub fn epoll_del(epoll: impl AsFd, source: impl AsFd) -> io::Result<()> {
- // SAFETY: We're calling `epoll_ctl` via FFI and we know how it
- // behaves.
- unsafe {
- let raw_fd = source.as_fd().as_raw_fd();
- ret(c::epoll_ctl(
- epoll.as_fd().as_raw_fd(),
- c::EPOLL_CTL_DEL,
- raw_fd,
- null_mut(),
- ))
- }
-}
-
-/// `epoll_wait(self, events, timeout)`—Waits for registered events of
-/// interest.
-///
-/// For each event of interest, an element is written to `events`. On
-/// success, this returns the number of written elements.
-pub fn epoll_wait(
- epoll: impl AsFd,
- event_list: &mut EventVec,
- timeout: c::c_int,
-) -> io::Result<()> {
- // SAFETY: We're calling `epoll_wait` via FFI and we know how it
- // behaves.
- unsafe {
- event_list.events.set_len(0);
- let nfds = ret_u32(c::epoll_wait(
- epoll.as_fd().as_raw_fd(),
- event_list.events.as_mut_ptr().cast::<c::epoll_event>(),
- event_list.events.capacity().try_into().unwrap_or(i32::MAX),
- timeout,
- ))?;
- event_list.events.set_len(nfds as usize);
- }
-
- Ok(())
-}
-
-/// An iterator over the `Event`s in an `EventVec`.
-pub struct Iter<'a> {
- iter: core::slice::Iter<'a, Event>,
-}
-
-impl<'a> Iterator for Iter<'a> {
- type Item = (EventFlags, u64);
-
- fn next(&mut self) -> Option<Self::Item> {
- // SAFETY: `self.context` is guaranteed to be valid because we hold
- // `'context` for it. And we know this event is associated with this
- // context because `wait` sets both.
- self.iter
- .next()
- .map(|event| (event.event_flags, event.data))
- }
-}
-
-/// A record of an event that occurred.
-#[repr(C)]
-#[cfg_attr(
- any(
- all(
- target_arch = "x86",
- not(target_env = "musl"),
- not(target_os = "android"),
- ),
- target_arch = "x86_64",
- ),
- repr(packed)
-)]
-struct Event {
- // Match the layout of `c::epoll_event`. We just use a `u64` instead of
- // the full union.
- event_flags: EventFlags,
- data: u64,
-}
-
-/// A vector of `Event`s, plus context for interpreting them.
-pub struct EventVec {
- events: Vec<Event>,
-}
-
-impl EventVec {
- /// Constructs an `EventVec` with memory for `capacity` `Event`s.
- #[inline]
- pub fn with_capacity(capacity: usize) -> Self {
- Self {
- events: Vec::with_capacity(capacity),
- }
- }
-
- /// Returns the current `Event` capacity of this `EventVec`.
- #[inline]
- pub fn capacity(&self) -> usize {
- self.events.capacity()
- }
-
- /// Reserves enough memory for at least `additional` more `Event`s.
- #[inline]
- pub fn reserve(&mut self, additional: usize) {
- self.events.reserve(additional);
- }
-
- /// Reserves enough memory for exactly `additional` more `Event`s.
- #[inline]
- pub fn reserve_exact(&mut self, additional: usize) {
- self.events.reserve_exact(additional);
- }
-
- /// Clears all the `Events` out of this `EventVec`.
- #[inline]
- pub fn clear(&mut self) {
- self.events.clear();
- }
-
- /// Shrinks the capacity of this `EventVec` as much as possible.
- #[inline]
- pub fn shrink_to_fit(&mut self) {
- self.events.shrink_to_fit();
- }
-
- /// Returns an iterator over the `Event`s in this `EventVec`.
- #[inline]
- pub fn iter(&self) -> Iter<'_> {
- Iter {
- iter: self.events.iter(),
- }
- }
-
- /// Returns the number of `Event`s logically contained in this `EventVec`.
- #[inline]
- pub fn len(&mut self) -> usize {
- self.events.len()
- }
-
- /// Tests whether this `EventVec` is logically empty.
- #[inline]
- pub fn is_empty(&mut self) -> bool {
- self.events.is_empty()
- }
-}
-
-impl<'a> IntoIterator for &'a EventVec {
- type IntoIter = Iter<'a>;
- type Item = (EventFlags, u64);
-
- #[inline]
- fn into_iter(self) -> Self::IntoIter {
- self.iter()
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/io/errno.rs b/vendor/rustix-0.37.6/src/backend/libc/io/errno.rs
deleted file mode 100644
index 9e808c0b4..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/io/errno.rs
+++ /dev/null
@@ -1,731 +0,0 @@
-//! The `rustix` `Errno` type.
-//!
-//! This type holds an OS error code, which conceptually corresponds to an
-//! `errno` value.
-
-use super::super::c;
-use libc_errno::errno;
-
-/// The error type for `rustix` APIs.
-///
-/// This is similar to `std::io::Error`, but only holds an OS error code,
-/// and no extra error value.
-#[repr(transparent)]
-#[doc(alias = "errno")]
-#[derive(Eq, PartialEq, Hash, Copy, Clone)]
-pub struct Errno(pub(crate) c::c_int);
-
-impl Errno {
- /// `EACCES`
- #[doc(alias = "ACCES")]
- pub const ACCESS: Self = Self(c::EACCES);
- /// `EADDRINUSE`
- pub const ADDRINUSE: Self = Self(c::EADDRINUSE);
- /// `EADDRNOTAVAIL`
- pub const ADDRNOTAVAIL: Self = Self(c::EADDRNOTAVAIL);
- /// `EADV`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const ADV: Self = Self(c::EADV);
- /// `EAFNOSUPPORT`
- pub const AFNOSUPPORT: Self = Self(c::EAFNOSUPPORT);
- /// `EAGAIN`
- pub const AGAIN: Self = Self(c::EAGAIN);
- /// `EALREADY`
- pub const ALREADY: Self = Self(c::EALREADY);
- /// `EAUTH`
- #[cfg(bsd)]
- pub const AUTH: Self = Self(c::EAUTH);
- /// `EBADE`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const BADE: Self = Self(c::EBADE);
- /// `EBADF`
- pub const BADF: Self = Self(c::EBADF);
- /// `EBADFD`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const BADFD: Self = Self(c::EBADFD);
- /// `EBADMSG`
- #[cfg(not(windows))]
- pub const BADMSG: Self = Self(c::EBADMSG);
- /// `EBADR`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const BADR: Self = Self(c::EBADR);
- /// `EBADRPC`
- #[cfg(bsd)]
- pub const BADRPC: Self = Self(c::EBADRPC);
- /// `EBADRQC`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const BADRQC: Self = Self(c::EBADRQC);
- /// `EBADSLT`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const BADSLT: Self = Self(c::EBADSLT);
- /// `EBFONT`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const BFONT: Self = Self(c::EBFONT);
- /// `EBUSY`
- #[cfg(not(windows))]
- pub const BUSY: Self = Self(c::EBUSY);
- /// `ECANCELED`
- pub const CANCELED: Self = Self(c::ECANCELED);
- /// `ECAPMODE`
- #[cfg(target_os = "freebsd")]
- pub const CAPMODE: Self = Self(c::ECAPMODE);
- /// `ECHILD`
- #[cfg(not(windows))]
- pub const CHILD: Self = Self(c::ECHILD);
- /// `ECHRNG`
- #[cfg(not(any(bsd, windows, target_os = "haiku", target_os = "wasi")))]
- pub const CHRNG: Self = Self(c::ECHRNG);
- /// `ECOMM`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const COMM: Self = Self(c::ECOMM);
- /// `ECONNABORTED`
- pub const CONNABORTED: Self = Self(c::ECONNABORTED);
- /// `ECONNREFUSED`
- pub const CONNREFUSED: Self = Self(c::ECONNREFUSED);
- /// `ECONNRESET`
- pub const CONNRESET: Self = Self(c::ECONNRESET);
- /// `EDEADLK`
- #[cfg(not(windows))]
- pub const DEADLK: Self = Self(c::EDEADLK);
- /// `EDEADLOCK`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "aix",
- target_os = "android",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const DEADLOCK: Self = Self(c::EDEADLOCK);
- /// `EDESTADDRREQ`
- pub const DESTADDRREQ: Self = Self(c::EDESTADDRREQ);
- /// `EDISCON`
- #[cfg(windows)]
- pub const DISCON: Self = Self(c::EDISCON);
- /// `EDOM`
- #[cfg(not(windows))]
- pub const DOM: Self = Self(c::EDOM);
- /// `EDOOFUS`
- #[cfg(freebsdlike)]
- pub const DOOFUS: Self = Self(c::EDOOFUS);
- /// `EDOTDOT`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const DOTDOT: Self = Self(c::EDOTDOT);
- /// `EDQUOT`
- pub const DQUOT: Self = Self(c::EDQUOT);
- /// `EEXIST`
- #[cfg(not(windows))]
- pub const EXIST: Self = Self(c::EEXIST);
- /// `EFAULT`
- pub const FAULT: Self = Self(c::EFAULT);
- /// `EFBIG`
- #[cfg(not(windows))]
- pub const FBIG: Self = Self(c::EFBIG);
- /// `EFTYPE`
- #[cfg(any(bsd, target_env = "newlib"))]
- pub const FTYPE: Self = Self(c::EFTYPE);
- /// `EHOSTDOWN`
- #[cfg(not(target_os = "wasi"))]
- pub const HOSTDOWN: Self = Self(c::EHOSTDOWN);
- /// `EHOSTUNREACH`
- pub const HOSTUNREACH: Self = Self(c::EHOSTUNREACH);
- /// `EHWPOISON`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "aix",
- target_os = "android",
- target_os = "haiku",
- target_os = "redox",
- target_os = "wasi",
- )))]
- pub const HWPOISON: Self = Self(c::EHWPOISON);
- /// `EIDRM`
- #[cfg(not(windows))]
- pub const IDRM: Self = Self(c::EIDRM);
- /// `EILSEQ`
- #[cfg(not(windows))]
- pub const ILSEQ: Self = Self(c::EILSEQ);
- /// `EINPROGRESS`
- pub const INPROGRESS: Self = Self(c::EINPROGRESS);
- /// `EINTR`
- ///
- /// For a convenient way to retry system calls that exit with `INTR`, use
- /// [`retry_on_intr`].
- ///
- /// [`retry_on_intr`]: crate::io::retry_on_intr
- pub const INTR: Self = Self(c::EINTR);
- /// `EINVAL`
- pub const INVAL: Self = Self(c::EINVAL);
- /// `EINVALIDPROCTABLE`
- #[cfg(windows)]
- pub const INVALIDPROCTABLE: Self = Self(c::EINVALIDPROCTABLE);
- /// `EINVALIDPROVIDER`
- #[cfg(windows)]
- pub const INVALIDPROVIDER: Self = Self(c::EINVALIDPROVIDER);
- /// `EIO`
- #[cfg(not(windows))]
- pub const IO: Self = Self(c::EIO);
- /// `EISCONN`
- pub const ISCONN: Self = Self(c::EISCONN);
- /// `EISDIR`
- #[cfg(not(windows))]
- pub const ISDIR: Self = Self(c::EISDIR);
- /// `EISNAM`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const ISNAM: Self = Self(c::EISNAM);
- /// `EKEYEXPIRED`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const KEYEXPIRED: Self = Self(c::EKEYEXPIRED);
- /// `EKEYREJECTED`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const KEYREJECTED: Self = Self(c::EKEYREJECTED);
- /// `EKEYREVOKED`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const KEYREVOKED: Self = Self(c::EKEYREVOKED);
- /// `EL2HLT`
- #[cfg(not(any(bsd, windows, target_os = "haiku", target_os = "wasi")))]
- pub const L2HLT: Self = Self(c::EL2HLT);
- /// `EL2NSYNC`
- #[cfg(not(any(bsd, windows, target_os = "haiku", target_os = "wasi")))]
- pub const L2NSYNC: Self = Self(c::EL2NSYNC);
- /// `EL3HLT`
- #[cfg(not(any(bsd, windows, target_os = "haiku", target_os = "wasi")))]
- pub const L3HLT: Self = Self(c::EL3HLT);
- /// `EL3RST`
- #[cfg(not(any(bsd, windows, target_os = "haiku", target_os = "wasi")))]
- pub const L3RST: Self = Self(c::EL3RST);
- /// `ELIBACC`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const LIBACC: Self = Self(c::ELIBACC);
- /// `ELIBBAD`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const LIBBAD: Self = Self(c::ELIBBAD);
- /// `ELIBEXEC`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const LIBEXEC: Self = Self(c::ELIBEXEC);
- /// `ELIBMAX`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const LIBMAX: Self = Self(c::ELIBMAX);
- /// `ELIBSCN`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const LIBSCN: Self = Self(c::ELIBSCN);
- /// `ELNRNG`
- #[cfg(not(any(bsd, windows, target_os = "haiku", target_os = "wasi")))]
- pub const LNRNG: Self = Self(c::ELNRNG);
- /// `ELOOP`
- pub const LOOP: Self = Self(c::ELOOP);
- /// `EMEDIUMTYPE`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const MEDIUMTYPE: Self = Self(c::EMEDIUMTYPE);
- /// `EMFILE`
- pub const MFILE: Self = Self(c::EMFILE);
- /// `EMLINK`
- #[cfg(not(windows))]
- pub const MLINK: Self = Self(c::EMLINK);
- /// `EMSGSIZE`
- pub const MSGSIZE: Self = Self(c::EMSGSIZE);
- /// `EMULTIHOP`
- #[cfg(not(any(windows, target_os = "openbsd")))]
- pub const MULTIHOP: Self = Self(c::EMULTIHOP);
- /// `ENAMETOOLONG`
- pub const NAMETOOLONG: Self = Self(c::ENAMETOOLONG);
- /// `ENAVAIL`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const NAVAIL: Self = Self(c::ENAVAIL);
- /// `ENEEDAUTH`
- #[cfg(bsd)]
- pub const NEEDAUTH: Self = Self(c::ENEEDAUTH);
- /// `ENETDOWN`
- pub const NETDOWN: Self = Self(c::ENETDOWN);
- /// `ENETRESET`
- pub const NETRESET: Self = Self(c::ENETRESET);
- /// `ENETUNREACH`
- pub const NETUNREACH: Self = Self(c::ENETUNREACH);
- /// `ENFILE`
- #[cfg(not(windows))]
- pub const NFILE: Self = Self(c::ENFILE);
- /// `ENOANO`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const NOANO: Self = Self(c::ENOANO);
- /// `ENOATTR`
- #[cfg(any(bsd, target_os = "haiku"))]
- pub const NOATTR: Self = Self(c::ENOATTR);
- /// `ENOBUFS`
- pub const NOBUFS: Self = Self(c::ENOBUFS);
- /// `ENOCSI`
- #[cfg(not(any(bsd, windows, target_os = "haiku", target_os = "wasi")))]
- pub const NOCSI: Self = Self(c::ENOCSI);
- /// `ENODATA`
- #[cfg(not(any(
- freebsdlike,
- windows,
- target_os = "haiku",
- target_os = "openbsd",
- target_os = "wasi",
- )))]
- pub const NODATA: Self = Self(c::ENODATA);
- /// `ENODEV`
- #[cfg(not(windows))]
- pub const NODEV: Self = Self(c::ENODEV);
- /// `ENOENT`
- #[cfg(not(windows))]
- pub const NOENT: Self = Self(c::ENOENT);
- /// `ENOEXEC`
- #[cfg(not(windows))]
- pub const NOEXEC: Self = Self(c::ENOEXEC);
- /// `ENOKEY`
- #[cfg(not(any(
- solarish,
- bsd,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const NOKEY: Self = Self(c::ENOKEY);
- /// `ENOLCK`
- #[cfg(not(windows))]
- pub const NOLCK: Self = Self(c::ENOLCK);
- /// `ENOLINK`
- #[cfg(not(any(windows, target_os = "openbsd")))]
- pub const NOLINK: Self = Self(c::ENOLINK);
- /// `ENOMEDIUM`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const NOMEDIUM: Self = Self(c::ENOMEDIUM);
- /// `ENOMEM`
- #[cfg(not(windows))]
- pub const NOMEM: Self = Self(c::ENOMEM);
- /// `ENOMORE`
- #[cfg(windows)]
- pub const NOMORE: Self = Self(c::ENOMORE);
- /// `ENOMSG`
- #[cfg(not(windows))]
- pub const NOMSG: Self = Self(c::ENOMSG);
- /// `ENONET`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const NONET: Self = Self(c::ENONET);
- /// `ENOPKG`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const NOPKG: Self = Self(c::ENOPKG);
- /// `ENOPROTOOPT`
- pub const NOPROTOOPT: Self = Self(c::ENOPROTOOPT);
- /// `ENOSPC`
- #[cfg(not(windows))]
- pub const NOSPC: Self = Self(c::ENOSPC);
- /// `ENOSR`
- #[cfg(not(any(
- freebsdlike,
- windows,
- target_os = "haiku",
- target_os = "openbsd",
- target_os = "wasi",
- )))]
- pub const NOSR: Self = Self(c::ENOSR);
- /// `ENOSTR`
- #[cfg(not(any(
- freebsdlike,
- windows,
- target_os = "haiku",
- target_os = "openbsd",
- target_os = "wasi",
- )))]
- pub const NOSTR: Self = Self(c::ENOSTR);
- /// `ENOSYS`
- #[cfg(not(windows))]
- pub const NOSYS: Self = Self(c::ENOSYS);
- /// `ENOTBLK`
- #[cfg(not(any(windows, target_os = "haiku", target_os = "wasi")))]
- pub const NOTBLK: Self = Self(c::ENOTBLK);
- /// `ENOTCAPABLE`
- #[cfg(any(target_os = "freebsd", target_os = "wasi"))]
- pub const NOTCAPABLE: Self = Self(c::ENOTCAPABLE);
- /// `ENOTCONN`
- pub const NOTCONN: Self = Self(c::ENOTCONN);
- /// `ENOTDIR`
- #[cfg(not(windows))]
- pub const NOTDIR: Self = Self(c::ENOTDIR);
- /// `ENOTEMPTY`
- pub const NOTEMPTY: Self = Self(c::ENOTEMPTY);
- /// `ENOTNAM`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const NOTNAM: Self = Self(c::ENOTNAM);
- /// `ENOTRECOVERABLE`
- #[cfg(not(any(freebsdlike, netbsdlike, windows, target_os = "haiku")))]
- pub const NOTRECOVERABLE: Self = Self(c::ENOTRECOVERABLE);
- /// `ENOTSOCK`
- pub const NOTSOCK: Self = Self(c::ENOTSOCK);
- /// `ENOTSUP`
- #[cfg(not(any(windows, target_os = "haiku", target_os = "redox")))]
- pub const NOTSUP: Self = Self(c::ENOTSUP);
- /// `ENOTTY`
- #[cfg(not(windows))]
- pub const NOTTY: Self = Self(c::ENOTTY);
- /// `ENOTUNIQ`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const NOTUNIQ: Self = Self(c::ENOTUNIQ);
- /// `ENXIO`
- #[cfg(not(windows))]
- pub const NXIO: Self = Self(c::ENXIO);
- /// `EOPNOTSUPP`
- pub const OPNOTSUPP: Self = Self(c::EOPNOTSUPP);
- /// `EOVERFLOW`
- #[cfg(not(windows))]
- pub const OVERFLOW: Self = Self(c::EOVERFLOW);
- /// `EOWNERDEAD`
- #[cfg(not(any(freebsdlike, netbsdlike, windows, target_os = "haiku")))]
- pub const OWNERDEAD: Self = Self(c::EOWNERDEAD);
- /// `EPERM`
- #[cfg(not(windows))]
- pub const PERM: Self = Self(c::EPERM);
- /// `EPFNOSUPPORT`
- #[cfg(not(target_os = "wasi"))]
- pub const PFNOSUPPORT: Self = Self(c::EPFNOSUPPORT);
- /// `EPIPE`
- #[cfg(not(windows))]
- pub const PIPE: Self = Self(c::EPIPE);
- /// `EPROCLIM`
- #[cfg(bsd)]
- pub const PROCLIM: Self = Self(c::EPROCLIM);
- /// `EPROCUNAVAIL`
- #[cfg(bsd)]
- pub const PROCUNAVAIL: Self = Self(c::EPROCUNAVAIL);
- /// `EPROGMISMATCH`
- #[cfg(bsd)]
- pub const PROGMISMATCH: Self = Self(c::EPROGMISMATCH);
- /// `EPROGUNAVAIL`
- #[cfg(bsd)]
- pub const PROGUNAVAIL: Self = Self(c::EPROGUNAVAIL);
- /// `EPROTO`
- #[cfg(not(windows))]
- pub const PROTO: Self = Self(c::EPROTO);
- /// `EPROTONOSUPPORT`
- pub const PROTONOSUPPORT: Self = Self(c::EPROTONOSUPPORT);
- /// `EPROTOTYPE`
- pub const PROTOTYPE: Self = Self(c::EPROTOTYPE);
- /// `EPROVIDERFAILEDINIT`
- #[cfg(windows)]
- pub const PROVIDERFAILEDINIT: Self = Self(c::EPROVIDERFAILEDINIT);
- /// `ERANGE`
- #[cfg(not(windows))]
- pub const RANGE: Self = Self(c::ERANGE);
- /// `EREFUSED`
- #[cfg(windows)]
- pub const REFUSED: Self = Self(c::EREFUSED);
- /// `EREMCHG`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const REMCHG: Self = Self(c::EREMCHG);
- /// `EREMOTE`
- #[cfg(not(any(target_os = "haiku", target_os = "wasi")))]
- pub const REMOTE: Self = Self(c::EREMOTE);
- /// `EREMOTEIO`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const REMOTEIO: Self = Self(c::EREMOTEIO);
- /// `ERESTART`
- #[cfg(not(any(bsd, windows, target_os = "haiku", target_os = "wasi")))]
- pub const RESTART: Self = Self(c::ERESTART);
- /// `ERFKILL`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "aix",
- target_os = "android",
- target_os = "haiku",
- target_os = "redox",
- target_os = "wasi",
- )))]
- pub const RFKILL: Self = Self(c::ERFKILL);
- /// `EROFS`
- #[cfg(not(windows))]
- pub const ROFS: Self = Self(c::EROFS);
- /// `ERPCMISMATCH`
- #[cfg(bsd)]
- pub const RPCMISMATCH: Self = Self(c::ERPCMISMATCH);
- /// `ESHUTDOWN`
- #[cfg(not(target_os = "wasi"))]
- pub const SHUTDOWN: Self = Self(c::ESHUTDOWN);
- /// `ESOCKTNOSUPPORT`
- #[cfg(not(any(target_os = "haiku", target_os = "wasi")))]
- pub const SOCKTNOSUPPORT: Self = Self(c::ESOCKTNOSUPPORT);
- /// `ESPIPE`
- #[cfg(not(windows))]
- pub const SPIPE: Self = Self(c::ESPIPE);
- /// `ESRCH`
- #[cfg(not(windows))]
- pub const SRCH: Self = Self(c::ESRCH);
- /// `ESRMNT`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const SRMNT: Self = Self(c::ESRMNT);
- /// `ESTALE`
- pub const STALE: Self = Self(c::ESTALE);
- /// `ESTRPIPE`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const STRPIPE: Self = Self(c::ESTRPIPE);
- /// `ETIME`
- #[cfg(not(any(freebsdlike, windows, target_os = "openbsd", target_os = "wasi")))]
- pub const TIME: Self = Self(c::ETIME);
- /// `ETIMEDOUT`
- pub const TIMEDOUT: Self = Self(c::ETIMEDOUT);
- /// `E2BIG`
- #[cfg(not(windows))]
- #[doc(alias = "2BIG")]
- pub const TOOBIG: Self = Self(c::E2BIG);
- /// `ETOOMANYREFS`
- #[cfg(not(any(target_os = "haiku", target_os = "wasi")))]
- pub const TOOMANYREFS: Self = Self(c::ETOOMANYREFS);
- /// `ETXTBSY`
- #[cfg(not(windows))]
- pub const TXTBSY: Self = Self(c::ETXTBSY);
- /// `EUCLEAN`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const UCLEAN: Self = Self(c::EUCLEAN);
- /// `EUNATCH`
- #[cfg(not(any(bsd, windows, target_os = "haiku", target_os = "wasi")))]
- pub const UNATCH: Self = Self(c::EUNATCH);
- /// `EUSERS`
- #[cfg(not(any(target_os = "haiku", target_os = "wasi")))]
- pub const USERS: Self = Self(c::EUSERS);
- /// `EWOULDBLOCK`
- pub const WOULDBLOCK: Self = Self(c::EWOULDBLOCK);
- /// `EXDEV`
- #[cfg(not(windows))]
- pub const XDEV: Self = Self(c::EXDEV);
- /// `EXFULL`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "aix",
- target_os = "haiku",
- target_os = "wasi",
- )))]
- pub const XFULL: Self = Self(c::EXFULL);
-}
-
-impl Errno {
- /// Extract an `Errno` value from a `std::io::Error`.
- ///
- /// This isn't a `From` conversion because it's expected to be relatively
- /// uncommon.
- #[cfg(feature = "std")]
- #[inline]
- pub fn from_io_error(io_err: &std::io::Error) -> Option<Self> {
- io_err
- .raw_os_error()
- .and_then(|raw| if raw != 0 { Some(Self(raw)) } else { None })
- }
-
- /// Extract the raw OS error number from this error.
- #[inline]
- pub const fn raw_os_error(self) -> i32 {
- self.0
- }
-
- /// Construct an `Errno` from a raw OS error number.
- #[inline]
- pub const fn from_raw_os_error(raw: i32) -> Self {
- Self(raw)
- }
-
- pub(crate) fn last_os_error() -> Self {
- Self(errno().0)
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/io/io_slice.rs b/vendor/rustix-0.37.6/src/backend/libc/io/io_slice.rs
deleted file mode 100644
index de1ef434c..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/io/io_slice.rs
+++ /dev/null
@@ -1,87 +0,0 @@
-//! The following is derived from Rust's
-//! library/std/src/sys/unix/io.rs
-//! dca3f1b786efd27be3b325ed1e01e247aa589c3b.
-
-#![allow(missing_docs)]
-
-use super::super::c;
-use core::marker::PhantomData;
-use core::slice;
-
-#[derive(Copy, Clone)]
-#[repr(transparent)]
-pub struct IoSlice<'a> {
- vec: c::iovec,
- _p: PhantomData<&'a [u8]>,
-}
-
-impl<'a> IoSlice<'a> {
- #[inline]
- pub fn new(buf: &'a [u8]) -> IoSlice<'a> {
- IoSlice {
- vec: c::iovec {
- iov_base: buf.as_ptr() as *mut u8 as *mut c::c_void,
- iov_len: buf.len(),
- },
- _p: PhantomData,
- }
- }
-
- #[inline]
- pub fn advance(&mut self, n: usize) {
- if self.vec.iov_len < n {
- panic!("advancing IoSlice beyond its length");
- }
-
- unsafe {
- self.vec.iov_len -= n;
- self.vec.iov_base = self.vec.iov_base.add(n);
- }
- }
-
- #[inline]
- pub fn as_slice(&self) -> &[u8] {
- unsafe { slice::from_raw_parts(self.vec.iov_base as *mut u8, self.vec.iov_len) }
- }
-}
-
-#[repr(transparent)]
-pub struct IoSliceMut<'a> {
- vec: c::iovec,
- _p: PhantomData<&'a mut [u8]>,
-}
-
-impl<'a> IoSliceMut<'a> {
- #[inline]
- pub fn new(buf: &'a mut [u8]) -> IoSliceMut<'a> {
- IoSliceMut {
- vec: c::iovec {
- iov_base: buf.as_mut_ptr() as *mut c::c_void,
- iov_len: buf.len(),
- },
- _p: PhantomData,
- }
- }
-
- #[inline]
- pub fn advance(&mut self, n: usize) {
- if self.vec.iov_len < n {
- panic!("advancing IoSliceMut beyond its length");
- }
-
- unsafe {
- self.vec.iov_len -= n;
- self.vec.iov_base = self.vec.iov_base.add(n);
- }
- }
-
- #[inline]
- pub fn as_slice(&self) -> &[u8] {
- unsafe { slice::from_raw_parts(self.vec.iov_base as *mut u8, self.vec.iov_len) }
- }
-
- #[inline]
- pub fn as_mut_slice(&mut self) -> &mut [u8] {
- unsafe { slice::from_raw_parts_mut(self.vec.iov_base as *mut u8, self.vec.iov_len) }
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/io/mod.rs b/vendor/rustix-0.37.6/src/backend/libc/io/mod.rs
deleted file mode 100644
index 1378adf3d..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/io/mod.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-pub(crate) mod errno;
-#[cfg(not(windows))]
-#[cfg(not(feature = "std"))]
-pub(crate) mod io_slice;
-pub(crate) mod poll_fd;
-#[cfg(not(windows))]
-pub(crate) mod types;
-
-#[cfg_attr(windows, path = "windows_syscalls.rs")]
-pub(crate) mod syscalls;
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub mod epoll;
diff --git a/vendor/rustix-0.37.6/src/backend/libc/io/poll_fd.rs b/vendor/rustix-0.37.6/src/backend/libc/io/poll_fd.rs
deleted file mode 100644
index a0568c60a..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/io/poll_fd.rs
+++ /dev/null
@@ -1,136 +0,0 @@
-use super::super::c;
-use super::super::conv::borrowed_fd;
-#[cfg(windows)]
-use super::super::fd::RawFd;
-use super::super::fd::{AsFd, AsRawFd, BorrowedFd, LibcFd};
-use bitflags::bitflags;
-use core::marker::PhantomData;
-#[cfg(windows)]
-use std::fmt;
-
-bitflags! {
- /// `POLL*` flags for use with [`poll`].
- ///
- /// [`poll`]: crate::io::poll
- pub struct PollFlags: c::c_short {
- /// `POLLIN`
- const IN = c::POLLIN;
- /// `POLLPRI`
- #[cfg(not(target_os = "wasi"))]
- const PRI = c::POLLPRI;
- /// `POLLOUT`
- const OUT = c::POLLOUT;
- /// `POLLRDNORM`
- #[cfg(not(target_os = "redox"))]
- const RDNORM = c::POLLRDNORM;
- /// `POLLWRNORM`
- #[cfg(not(target_os = "redox"))]
- const WRNORM = c::POLLWRNORM;
- /// `POLLRDBAND`
- #[cfg(not(any(target_os = "redox", target_os = "wasi")))]
- const RDBAND = c::POLLRDBAND;
- /// `POLLWRBAND`
- #[cfg(not(any(target_os = "redox", target_os = "wasi")))]
- const WRBAND = c::POLLWRBAND;
- /// `POLLERR`
- const ERR = c::POLLERR;
- /// `POLLHUP`
- const HUP = c::POLLHUP;
- /// `POLLNVAL`
- const NVAL = c::POLLNVAL;
- /// `POLLRDHUP`
- #[cfg(all(
- any(target_os = "android", target_os = "linux"),
- not(any(target_arch = "sparc", target_arch = "sparc64"))),
- )]
- const RDHUP = c::POLLRDHUP;
- }
-}
-
-/// `struct pollfd`—File descriptor and flags for use with [`poll`].
-///
-/// [`poll`]: crate::io::poll
-#[doc(alias = "pollfd")]
-#[derive(Clone)]
-#[cfg_attr(not(windows), derive(Debug))]
-#[repr(transparent)]
-pub struct PollFd<'fd> {
- pollfd: c::pollfd,
- _phantom: PhantomData<BorrowedFd<'fd>>,
-}
-
-#[cfg(windows)]
-impl<'fd> fmt::Debug for PollFd<'fd> {
- fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
- fmt.debug_struct("pollfd")
- .field("fd", &self.pollfd.fd)
- .field("events", &self.pollfd.events)
- .field("revents", &self.pollfd.revents)
- .finish()
- }
-}
-
-impl<'fd> PollFd<'fd> {
- /// Constructs a new `PollFd` holding `fd` and `events`.
- #[inline]
- pub fn new<Fd: AsFd>(fd: &'fd Fd, events: PollFlags) -> Self {
- Self::from_borrowed_fd(fd.as_fd(), events)
- }
-
- /// Sets the contained file descriptor to `fd`.
- #[inline]
- pub fn set_fd<Fd: AsFd>(&mut self, fd: &'fd Fd) {
- self.pollfd.fd = fd.as_fd().as_raw_fd() as LibcFd;
- }
-
- /// Clears the ready events.
- #[inline]
- pub fn clear_revents(&mut self) {
- self.pollfd.revents = 0;
- }
-
- /// Constructs a new `PollFd` holding `fd` and `events`.
- ///
- /// This is the same as `new`, but can be used to avoid borrowing the
- /// `BorrowedFd`, which can be tricky in situations where the `BorrowedFd`
- /// is a temporary.
- #[inline]
- pub fn from_borrowed_fd(fd: BorrowedFd<'fd>, events: PollFlags) -> Self {
- Self {
- pollfd: c::pollfd {
- fd: borrowed_fd(fd),
- events: events.bits(),
- revents: 0,
- },
- _phantom: PhantomData,
- }
- }
-
- /// Returns the ready events.
- #[inline]
- pub fn revents(&self) -> PollFlags {
- // Use `unwrap()` here because in theory we know we know all the bits
- // the OS might set here, but OS's have added extensions in the past.
- PollFlags::from_bits(self.pollfd.revents).unwrap()
- }
-}
-
-#[cfg(not(windows))]
-impl<'fd> AsFd for PollFd<'fd> {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- // SAFETY: Our constructors and `set_fd` require `pollfd.fd` to be
- // valid for the `fd lifetime.
- unsafe { BorrowedFd::borrow_raw(self.pollfd.fd) }
- }
-}
-
-#[cfg(windows)]
-impl<'fd> io_lifetimes::AsSocket for PollFd<'fd> {
- #[inline]
- fn as_socket(&self) -> BorrowedFd<'_> {
- // SAFETY: Our constructors and `set_fd` require `pollfd.fd` to be
- // valid for the `fd lifetime.
- unsafe { BorrowedFd::borrow_raw(self.pollfd.fd as RawFd) }
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/io/syscalls.rs b/vendor/rustix-0.37.6/src/backend/libc/io/syscalls.rs
deleted file mode 100644
index 03f9294d9..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/io/syscalls.rs
+++ /dev/null
@@ -1,677 +0,0 @@
-//! libc syscalls supporting `rustix::io`.
-
-use super::super::c;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use super::super::conv::syscall_ret_owned_fd;
-use super::super::conv::{
- borrowed_fd, ret, ret_c_int, ret_discarded_fd, ret_owned_fd, ret_ssize_t,
-};
-use super::super::offset::{libc_pread, libc_pwrite};
-#[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "solaris")))]
-use super::super::offset::{libc_preadv, libc_pwritev};
-#[cfg(all(target_os = "linux", target_env = "gnu"))]
-use super::super::offset::{libc_preadv2, libc_pwritev2};
-use crate::fd::{AsFd, BorrowedFd, OwnedFd, RawFd};
-#[cfg(bsd)]
-use crate::io::kqueue::Event;
-#[cfg(solarish)]
-use crate::io::port::Event;
-#[cfg(not(any(target_os = "aix", target_os = "wasi")))]
-use crate::io::DupFlags;
-#[cfg(not(any(apple, target_os = "aix", target_os = "haiku", target_os = "wasi")))]
-use crate::io::PipeFlags;
-use crate::io::{self, FdFlags, IoSlice, IoSliceMut, PollFd};
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use crate::io::{EventfdFlags, IoSliceRaw, ReadWriteFlags, SpliceFlags};
-use core::cmp::min;
-use core::convert::TryInto;
-use core::mem::MaybeUninit;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use core::ptr;
-#[cfg(all(feature = "fs", feature = "net"))]
-use libc_errno::errno;
-
-pub(crate) fn read(fd: BorrowedFd<'_>, buf: &mut [u8]) -> io::Result<usize> {
- let nread = unsafe {
- ret_ssize_t(c::read(
- borrowed_fd(fd),
- buf.as_mut_ptr().cast(),
- min(buf.len(), READ_LIMIT),
- ))?
- };
- Ok(nread as usize)
-}
-
-pub(crate) fn write(fd: BorrowedFd<'_>, buf: &[u8]) -> io::Result<usize> {
- let nwritten = unsafe {
- ret_ssize_t(c::write(
- borrowed_fd(fd),
- buf.as_ptr().cast(),
- min(buf.len(), READ_LIMIT),
- ))?
- };
- Ok(nwritten as usize)
-}
-
-pub(crate) fn pread(fd: BorrowedFd<'_>, buf: &mut [u8], offset: u64) -> io::Result<usize> {
- let len = min(buf.len(), READ_LIMIT);
-
- // Silently cast; we'll get `EINVAL` if the value is negative.
- let offset = offset as i64;
-
- let nread = unsafe {
- ret_ssize_t(libc_pread(
- borrowed_fd(fd),
- buf.as_mut_ptr().cast(),
- len,
- offset,
- ))?
- };
- Ok(nread as usize)
-}
-
-pub(crate) fn pwrite(fd: BorrowedFd<'_>, buf: &[u8], offset: u64) -> io::Result<usize> {
- let len = min(buf.len(), READ_LIMIT);
-
- // Silently cast; we'll get `EINVAL` if the value is negative.
- let offset = offset as i64;
-
- let nwritten = unsafe {
- ret_ssize_t(libc_pwrite(
- borrowed_fd(fd),
- buf.as_ptr().cast(),
- len,
- offset,
- ))?
- };
- Ok(nwritten as usize)
-}
-
-pub(crate) fn readv(fd: BorrowedFd<'_>, bufs: &mut [IoSliceMut]) -> io::Result<usize> {
- let nread = unsafe {
- ret_ssize_t(c::readv(
- borrowed_fd(fd),
- bufs.as_ptr().cast::<c::iovec>(),
- min(bufs.len(), max_iov()) as c::c_int,
- ))?
- };
- Ok(nread as usize)
-}
-
-pub(crate) fn writev(fd: BorrowedFd<'_>, bufs: &[IoSlice]) -> io::Result<usize> {
- let nwritten = unsafe {
- ret_ssize_t(c::writev(
- borrowed_fd(fd),
- bufs.as_ptr().cast::<c::iovec>(),
- min(bufs.len(), max_iov()) as c::c_int,
- ))?
- };
- Ok(nwritten as usize)
-}
-
-#[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "solaris")))]
-pub(crate) fn preadv(
- fd: BorrowedFd<'_>,
- bufs: &mut [IoSliceMut],
- offset: u64,
-) -> io::Result<usize> {
- // Silently cast; we'll get `EINVAL` if the value is negative.
- let offset = offset as i64;
- let nread = unsafe {
- ret_ssize_t(libc_preadv(
- borrowed_fd(fd),
- bufs.as_ptr().cast::<c::iovec>(),
- min(bufs.len(), max_iov()) as c::c_int,
- offset,
- ))?
- };
- Ok(nread as usize)
-}
-
-#[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "solaris")))]
-pub(crate) fn pwritev(fd: BorrowedFd<'_>, bufs: &[IoSlice], offset: u64) -> io::Result<usize> {
- // Silently cast; we'll get `EINVAL` if the value is negative.
- let offset = offset as i64;
- let nwritten = unsafe {
- ret_ssize_t(libc_pwritev(
- borrowed_fd(fd),
- bufs.as_ptr().cast::<c::iovec>(),
- min(bufs.len(), max_iov()) as c::c_int,
- offset,
- ))?
- };
- Ok(nwritten as usize)
-}
-
-#[cfg(all(target_os = "linux", target_env = "gnu"))]
-pub(crate) fn preadv2(
- fd: BorrowedFd<'_>,
- bufs: &mut [IoSliceMut],
- offset: u64,
- flags: ReadWriteFlags,
-) -> io::Result<usize> {
- // Silently cast; we'll get `EINVAL` if the value is negative.
- let offset = offset as i64;
- let nread = unsafe {
- ret_ssize_t(libc_preadv2(
- borrowed_fd(fd),
- bufs.as_ptr().cast::<c::iovec>(),
- min(bufs.len(), max_iov()) as c::c_int,
- offset,
- flags.bits(),
- ))?
- };
- Ok(nread as usize)
-}
-
-/// At present, `libc` only has `preadv2` defined for glibc. On other
-/// ABIs, use `libc::syscall`.
-#[cfg(any(
- target_os = "android",
- all(target_os = "linux", not(target_env = "gnu")),
-))]
-#[inline]
-pub(crate) fn preadv2(
- fd: BorrowedFd<'_>,
- bufs: &mut [IoSliceMut],
- offset: u64,
- flags: ReadWriteFlags,
-) -> io::Result<usize> {
- // Silently cast; we'll get `EINVAL` if the value is negative.
- let offset = offset as i64;
- let nread = unsafe {
- ret_ssize_t(libc::syscall(
- libc::SYS_preadv2,
- borrowed_fd(fd),
- bufs.as_ptr().cast::<c::iovec>(),
- min(bufs.len(), max_iov()) as c::c_int,
- offset,
- flags.bits(),
- ) as c::ssize_t)?
- };
- Ok(nread as usize)
-}
-
-#[cfg(all(target_os = "linux", target_env = "gnu"))]
-pub(crate) fn pwritev2(
- fd: BorrowedFd<'_>,
- bufs: &[IoSlice],
- offset: u64,
- flags: ReadWriteFlags,
-) -> io::Result<usize> {
- // Silently cast; we'll get `EINVAL` if the value is negative.
- let offset = offset as i64;
- let nwritten = unsafe {
- ret_ssize_t(libc_pwritev2(
- borrowed_fd(fd),
- bufs.as_ptr().cast::<c::iovec>(),
- min(bufs.len(), max_iov()) as c::c_int,
- offset,
- flags.bits(),
- ))?
- };
- Ok(nwritten as usize)
-}
-
-/// At present, `libc` only has `pwritev2` defined for glibc. On other
-/// ABIs, use `libc::syscall`.
-#[cfg(any(
- target_os = "android",
- all(target_os = "linux", not(target_env = "gnu")),
-))]
-#[inline]
-pub(crate) fn pwritev2(
- fd: BorrowedFd<'_>,
- bufs: &[IoSlice],
- offset: u64,
- flags: ReadWriteFlags,
-) -> io::Result<usize> {
- // Silently cast; we'll get `EINVAL` if the value is negative.
- let offset = offset as i64;
- let nwritten = unsafe {
- ret_ssize_t(libc::syscall(
- libc::SYS_pwritev2,
- borrowed_fd(fd),
- bufs.as_ptr().cast::<c::iovec>(),
- min(bufs.len(), max_iov()) as c::c_int,
- offset,
- flags.bits(),
- ) as c::ssize_t)?
- };
- Ok(nwritten as usize)
-}
-
-// These functions are derived from Rust's library/std/src/sys/unix/fd.rs at
-// revision 326ef470a8b379a180d6dc4bbef08990698a737a.
-
-// The maximum read limit on most POSIX-like systems is `SSIZE_MAX`, with the
-// man page quoting that if the count of bytes to read is greater than
-// `SSIZE_MAX` the result is "unspecified".
-//
-// On macOS, however, apparently the 64-bit libc is either buggy or
-// intentionally showing odd behavior by rejecting any read with a size larger
-// than or equal to `INT_MAX`. To handle both of these the read size is capped
-// on both platforms.
-#[cfg(target_os = "macos")]
-const READ_LIMIT: usize = c::c_int::MAX as usize - 1;
-#[cfg(not(target_os = "macos"))]
-const READ_LIMIT: usize = c::ssize_t::MAX as usize;
-
-#[cfg(bsd)]
-const fn max_iov() -> usize {
- c::IOV_MAX as usize
-}
-
-#[cfg(any(
- target_os = "android",
- target_os = "emscripten",
- target_os = "linux",
- target_os = "nto"
-))]
-const fn max_iov() -> usize {
- c::UIO_MAXIOV as usize
-}
-
-#[cfg(not(any(
- bsd,
- target_os = "android",
- target_os = "emscripten",
- target_os = "linux",
- target_os = "nto",
- target_os = "horizon",
-)))]
-const fn max_iov() -> usize {
- 16 // The minimum value required by POSIX.
-}
-
-pub(crate) unsafe fn close(raw_fd: RawFd) {
- let _ = c::close(raw_fd as c::c_int);
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub(crate) fn eventfd(initval: u32, flags: EventfdFlags) -> io::Result<OwnedFd> {
- unsafe { syscall_ret_owned_fd(c::syscall(c::SYS_eventfd2, initval, flags.bits())) }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub(crate) fn ioctl_blksszget(fd: BorrowedFd) -> io::Result<u32> {
- let mut result = MaybeUninit::<c::c_uint>::uninit();
- unsafe {
- ret(c::ioctl(borrowed_fd(fd), c::BLKSSZGET, result.as_mut_ptr()))?;
- Ok(result.assume_init() as u32)
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub(crate) fn ioctl_blkpbszget(fd: BorrowedFd) -> io::Result<u32> {
- let mut result = MaybeUninit::<c::c_uint>::uninit();
- unsafe {
- ret(c::ioctl(
- borrowed_fd(fd),
- c::BLKPBSZGET,
- result.as_mut_ptr(),
- ))?;
- Ok(result.assume_init() as u32)
- }
-}
-
-#[cfg(not(target_os = "redox"))]
-pub(crate) fn ioctl_fionread(fd: BorrowedFd<'_>) -> io::Result<u64> {
- let mut nread = MaybeUninit::<c::c_int>::uninit();
- unsafe {
- ret(c::ioctl(borrowed_fd(fd), c::FIONREAD, nread.as_mut_ptr()))?;
- // `FIONREAD` returns the number of bytes silently casted to a `c_int`,
- // even when this is lossy. The best we can do is convert it back to a
- // `u64` without sign-extending it back first.
- Ok(u64::from(nread.assume_init() as c::c_uint))
- }
-}
-
-pub(crate) fn ioctl_fionbio(fd: BorrowedFd<'_>, value: bool) -> io::Result<()> {
- unsafe {
- let data = value as c::c_int;
- ret(c::ioctl(borrowed_fd(fd), c::FIONBIO, &data))
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub(crate) fn ioctl_ficlone(fd: BorrowedFd<'_>, src_fd: BorrowedFd<'_>) -> io::Result<()> {
- // TODO: Enable `ioctl_ficlone` for android when upstream is updated.
- // TODO: Enable `ioctl_ficlone` for more architectures when upstream is
- // updated.
- #[cfg(all(
- target_os = "linux",
- any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64")
- ))]
- unsafe {
- ret(c::ioctl(
- borrowed_fd(fd),
- c::FICLONE as _,
- borrowed_fd(src_fd),
- ))
- }
- #[cfg(not(all(
- target_os = "linux",
- any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64")
- )))]
- {
- let _ = fd;
- let _ = src_fd;
- Err(io::Errno::NOSYS)
- }
-}
-
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-#[cfg(all(feature = "fs", feature = "net"))]
-pub(crate) fn is_read_write(fd: BorrowedFd<'_>) -> io::Result<(bool, bool)> {
- let (mut read, mut write) = crate::fs::fd::_is_file_read_write(fd)?;
- let mut not_socket = false;
- if read {
- // Do a `recv` with `PEEK` and `DONTWAIT` for 1 byte. A 0 indicates
- // the read side is shut down; an `EWOULDBLOCK` indicates the read
- // side is still open.
- match unsafe {
- c::recv(
- borrowed_fd(fd),
- MaybeUninit::<[u8; 1]>::uninit()
- .as_mut_ptr()
- .cast::<c::c_void>(),
- 1,
- c::MSG_PEEK | c::MSG_DONTWAIT,
- )
- } {
- 0 => read = false,
- -1 => {
- #[allow(unreachable_patterns)] // `EAGAIN` may equal `EWOULDBLOCK`
- match errno().0 {
- c::EAGAIN | c::EWOULDBLOCK => (),
- c::ENOTSOCK => not_socket = true,
- err => return Err(io::Errno(err)),
- }
- }
- _ => (),
- }
- }
- if write && !not_socket {
- // Do a `send` with `DONTWAIT` for 0 bytes. An `EPIPE` indicates
- // the write side is shut down.
- if unsafe { c::send(borrowed_fd(fd), [].as_ptr(), 0, c::MSG_DONTWAIT) } == -1 {
- #[allow(unreachable_patterns)] // `EAGAIN` may equal `EWOULDBLOCK`
- match errno().0 {
- c::EAGAIN | c::EWOULDBLOCK => (),
- c::ENOTSOCK => (),
- c::EPIPE => write = false,
- err => return Err(io::Errno(err)),
- }
- }
- }
- Ok((read, write))
-}
-
-#[cfg(target_os = "wasi")]
-#[cfg(all(feature = "fs", feature = "net"))]
-pub(crate) fn is_read_write(_fd: BorrowedFd<'_>) -> io::Result<(bool, bool)> {
- todo!("Implement is_read_write for WASI in terms of fd_fdstat_get");
-}
-
-pub(crate) fn fcntl_getfd(fd: BorrowedFd<'_>) -> io::Result<FdFlags> {
- unsafe { ret_c_int(c::fcntl(borrowed_fd(fd), c::F_GETFD)).map(FdFlags::from_bits_truncate) }
-}
-
-pub(crate) fn fcntl_setfd(fd: BorrowedFd<'_>, flags: FdFlags) -> io::Result<()> {
- unsafe { ret(c::fcntl(borrowed_fd(fd), c::F_SETFD, flags.bits())) }
-}
-
-#[cfg(not(target_os = "wasi"))]
-pub(crate) fn fcntl_dupfd_cloexec(fd: BorrowedFd<'_>, min: RawFd) -> io::Result<OwnedFd> {
- unsafe { ret_owned_fd(c::fcntl(borrowed_fd(fd), c::F_DUPFD_CLOEXEC, min)) }
-}
-
-#[cfg(not(target_os = "wasi"))]
-pub(crate) fn dup(fd: BorrowedFd<'_>) -> io::Result<OwnedFd> {
- unsafe { ret_owned_fd(c::dup(borrowed_fd(fd))) }
-}
-
-#[cfg(not(target_os = "wasi"))]
-pub(crate) fn dup2(fd: BorrowedFd<'_>, new: &mut OwnedFd) -> io::Result<()> {
- unsafe { ret_discarded_fd(c::dup2(borrowed_fd(fd), borrowed_fd(new.as_fd()))) }
-}
-
-#[cfg(not(any(
- apple,
- target_os = "aix",
- target_os = "android",
- target_os = "dragonfly",
- target_os = "haiku",
- target_os = "redox",
- target_os = "wasi",
-)))]
-pub(crate) fn dup3(fd: BorrowedFd<'_>, new: &mut OwnedFd, flags: DupFlags) -> io::Result<()> {
- unsafe {
- ret_discarded_fd(c::dup3(
- borrowed_fd(fd),
- borrowed_fd(new.as_fd()),
- flags.bits(),
- ))
- }
-}
-
-#[cfg(any(
- apple,
- target_os = "android",
- target_os = "dragonfly",
- target_os = "haiku",
- target_os = "redox",
-))]
-pub(crate) fn dup3(fd: BorrowedFd<'_>, new: &mut OwnedFd, _flags: DupFlags) -> io::Result<()> {
- // Android 5.0 has `dup3`, but libc doesn't have bindings. Emulate it
- // using `dup2`. We don't need to worry about the difference between
- // `dup2` and `dup3` when the file descriptors are equal because we
- // have an `&mut OwnedFd` which means `fd` doesn't alias it.
- dup2(fd, new)
-}
-
-#[cfg(apple)]
-pub(crate) fn ioctl_fioclex(fd: BorrowedFd<'_>) -> io::Result<()> {
- unsafe { ret(c::ioctl(borrowed_fd(fd), c::FIOCLEX)) }
-}
-
-#[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "wasi")))]
-pub(crate) fn ioctl_tiocexcl(fd: BorrowedFd) -> io::Result<()> {
- unsafe { ret(c::ioctl(borrowed_fd(fd), c::TIOCEXCL as _)) }
-}
-
-#[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "wasi")))]
-pub(crate) fn ioctl_tiocnxcl(fd: BorrowedFd) -> io::Result<()> {
- unsafe { ret(c::ioctl(borrowed_fd(fd), c::TIOCNXCL as _)) }
-}
-
-#[cfg(bsd)]
-pub(crate) fn kqueue() -> io::Result<OwnedFd> {
- unsafe { ret_owned_fd(c::kqueue()) }
-}
-
-#[cfg(bsd)]
-pub(crate) unsafe fn kevent(
- kq: BorrowedFd<'_>,
- changelist: &[Event],
- eventlist: &mut [MaybeUninit<Event>],
- timeout: Option<&c::timespec>,
-) -> io::Result<c::c_int> {
- ret_c_int(c::kevent(
- borrowed_fd(kq),
- changelist.as_ptr() as *const _,
- changelist
- .len()
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- eventlist.as_mut_ptr() as *mut _,
- eventlist
- .len()
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- timeout.map_or(core::ptr::null(), |t| t as *const _),
- ))
-}
-
-#[cfg(not(target_os = "wasi"))]
-pub(crate) fn pipe() -> io::Result<(OwnedFd, OwnedFd)> {
- unsafe {
- let mut result = MaybeUninit::<[OwnedFd; 2]>::uninit();
- ret(c::pipe(result.as_mut_ptr().cast::<i32>()))?;
- let [p0, p1] = result.assume_init();
- Ok((p0, p1))
- }
-}
-
-#[cfg(not(any(apple, target_os = "aix", target_os = "haiku", target_os = "wasi")))]
-pub(crate) fn pipe_with(flags: PipeFlags) -> io::Result<(OwnedFd, OwnedFd)> {
- unsafe {
- let mut result = MaybeUninit::<[OwnedFd; 2]>::uninit();
- ret(c::pipe2(result.as_mut_ptr().cast::<i32>(), flags.bits()))?;
- let [p0, p1] = result.assume_init();
- Ok((p0, p1))
- }
-}
-
-#[inline]
-pub(crate) fn poll(fds: &mut [PollFd<'_>], timeout: c::c_int) -> io::Result<usize> {
- let nfds = fds
- .len()
- .try_into()
- .map_err(|_convert_err| io::Errno::INVAL)?;
-
- ret_c_int(unsafe { c::poll(fds.as_mut_ptr().cast(), nfds, timeout) })
- .map(|nready| nready as usize)
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub fn splice(
- fd_in: BorrowedFd,
- off_in: Option<&mut u64>,
- fd_out: BorrowedFd,
- off_out: Option<&mut u64>,
- len: usize,
- flags: SpliceFlags,
-) -> io::Result<usize> {
- let off_in = off_in
- .map(|off| (off as *mut u64).cast())
- .unwrap_or(ptr::null_mut());
-
- let off_out = off_out
- .map(|off| (off as *mut u64).cast())
- .unwrap_or(ptr::null_mut());
-
- ret_ssize_t(unsafe {
- c::splice(
- borrowed_fd(fd_in),
- off_in,
- borrowed_fd(fd_out),
- off_out,
- len,
- flags.bits(),
- )
- })
- .map(|spliced| spliced as usize)
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub unsafe fn vmsplice(
- fd: BorrowedFd,
- bufs: &[IoSliceRaw],
- flags: SpliceFlags,
-) -> io::Result<usize> {
- ret_ssize_t(c::vmsplice(
- borrowed_fd(fd),
- bufs.as_ptr().cast::<c::iovec>(),
- min(bufs.len(), max_iov()),
- flags.bits(),
- ))
- .map(|spliced| spliced as usize)
-}
-
-#[cfg(solarish)]
-pub(crate) fn port_create() -> io::Result<OwnedFd> {
- unsafe { ret_owned_fd(c::port_create()) }
-}
-
-#[cfg(solarish)]
-pub(crate) unsafe fn port_associate(
- port: BorrowedFd<'_>,
- source: c::c_int,
- object: c::uintptr_t,
- events: c::c_int,
- user: *mut c::c_void,
-) -> io::Result<()> {
- ret(c::port_associate(
- borrowed_fd(port),
- source,
- object,
- events,
- user,
- ))
-}
-
-#[cfg(solarish)]
-pub(crate) unsafe fn port_dissociate(
- port: BorrowedFd<'_>,
- source: c::c_int,
- object: c::uintptr_t,
-) -> io::Result<()> {
- ret(c::port_dissociate(borrowed_fd(port), source, object))
-}
-
-#[cfg(solarish)]
-pub(crate) fn port_get(
- port: BorrowedFd<'_>,
- timeout: Option<&mut c::timespec>,
-) -> io::Result<Event> {
- let mut event = MaybeUninit::<c::port_event>::uninit();
- let timeout = timeout.map_or(core::ptr::null_mut(), |t| t as *mut _);
-
- unsafe {
- ret(c::port_get(borrowed_fd(port), event.as_mut_ptr(), timeout))?;
- }
-
- // If we're done, initialize the event and return it.
- Ok(Event(unsafe { event.assume_init() }))
-}
-
-#[cfg(solarish)]
-pub(crate) fn port_getn(
- port: BorrowedFd<'_>,
- timeout: Option<&mut c::timespec>,
- events: &mut Vec<Event>,
- mut nget: u32,
-) -> io::Result<()> {
- let timeout = timeout.map_or(core::ptr::null_mut(), |t| t as *mut _);
- unsafe {
- ret(c::port_getn(
- borrowed_fd(port),
- events.as_mut_ptr().cast(),
- events.len().try_into().unwrap(),
- &mut nget,
- timeout,
- ))?;
- }
-
- // Update the vector length.
- unsafe {
- events.set_len(nget.try_into().unwrap());
- }
-
- Ok(())
-}
-
-#[cfg(solarish)]
-pub(crate) fn port_send(
- port: BorrowedFd<'_>,
- events: c::c_int,
- userdata: *mut c::c_void,
-) -> io::Result<()> {
- unsafe { ret(c::port_send(borrowed_fd(port), events, userdata)) }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/io/types.rs b/vendor/rustix-0.37.6/src/backend/libc/io/types.rs
deleted file mode 100644
index cbdd734b9..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/io/types.rs
+++ /dev/null
@@ -1,153 +0,0 @@
-use super::super::c;
-use bitflags::bitflags;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use core::marker::PhantomData;
-
-bitflags! {
- /// `FD_*` constants for use with [`fcntl_getfd`] and [`fcntl_setfd`].
- ///
- /// [`fcntl_getfd`]: crate::io::fcntl_getfd
- /// [`fcntl_setfd`]: crate::io::fcntl_setfd
- pub struct FdFlags: c::c_int {
- /// `FD_CLOEXEC`
- const CLOEXEC = c::FD_CLOEXEC;
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-bitflags! {
- /// `RWF_*` constants for use with [`preadv2`] and [`pwritev2`].
- ///
- /// [`preadv2`]: crate::io::preadv2
- /// [`pwritev2`]: crate::io::pwritev
- pub struct ReadWriteFlags: c::c_int {
- /// `RWF_DSYNC` (since Linux 4.7)
- const DSYNC = linux_raw_sys::general::RWF_DSYNC as c::c_int;
- /// `RWF_HIPRI` (since Linux 4.6)
- const HIPRI = linux_raw_sys::general::RWF_HIPRI as c::c_int;
- /// `RWF_SYNC` (since Linux 4.7)
- const SYNC = linux_raw_sys::general::RWF_SYNC as c::c_int;
- /// `RWF_NOWAIT` (since Linux 4.14)
- const NOWAIT = linux_raw_sys::general::RWF_NOWAIT as c::c_int;
- /// `RWF_APPEND` (since Linux 4.16)
- const APPEND = linux_raw_sys::general::RWF_APPEND as c::c_int;
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-bitflags! {
- /// `SPLICE_F_*` constants for use with [`splice`] and [`vmsplice`].
- pub struct SpliceFlags: c::c_uint {
- /// `SPLICE_F_MOVE`
- const MOVE = c::SPLICE_F_MOVE;
- /// `SPLICE_F_NONBLOCK`
- const NONBLOCK = c::SPLICE_F_NONBLOCK;
- /// `SPLICE_F_MORE`
- const MORE = c::SPLICE_F_MORE;
- /// `SPLICE_F_GIFT`
- const GIFT = c::SPLICE_F_GIFT;
- }
-}
-
-#[cfg(not(target_os = "wasi"))]
-bitflags! {
- /// `O_*` constants for use with [`dup2`].
- ///
- /// [`dup2`]: crate::io::dup2
- pub struct DupFlags: c::c_int {
- /// `O_CLOEXEC`
- #[cfg(not(any(
- apple,
- target_os = "aix",
- target_os = "android",
- target_os = "redox",
- )))] // Android 5.0 has dup3, but libc doesn't have bindings
- const CLOEXEC = c::O_CLOEXEC;
- }
-}
-
-#[cfg(not(any(apple, target_os = "wasi")))]
-bitflags! {
- /// `O_*` constants for use with [`pipe_with`].
- ///
- /// [`pipe_with`]: crate::io::pipe_with
- pub struct PipeFlags: c::c_int {
- /// `O_CLOEXEC`
- const CLOEXEC = c::O_CLOEXEC;
- /// `O_DIRECT`
- #[cfg(not(any(
- solarish,
- target_os = "haiku",
- target_os = "openbsd",
- target_os = "redox",
- )))]
- const DIRECT = c::O_DIRECT;
- /// `O_NONBLOCK`
- const NONBLOCK = c::O_NONBLOCK;
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-bitflags! {
- /// `EFD_*` flags for use with [`eventfd`].
- ///
- /// [`eventfd`]: crate::io::eventfd
- pub struct EventfdFlags: c::c_int {
- /// `EFD_CLOEXEC`
- const CLOEXEC = c::EFD_CLOEXEC;
- /// `EFD_NONBLOCK`
- const NONBLOCK = c::EFD_NONBLOCK;
- /// `EFD_SEMAPHORE`
- const SEMAPHORE = c::EFD_SEMAPHORE;
- }
-}
-
-/// `PIPE_BUF`—The maximum size of a write to a pipe guaranteed to be atomic.
-#[cfg(not(any(solarish, target_os = "haiku", target_os = "redox", target_os = "wasi")))]
-pub const PIPE_BUF: usize = c::PIPE_BUF;
-
-#[cfg(not(any(windows, target_os = "redox")))]
-pub(crate) const AT_FDCWD: c::c_int = c::AT_FDCWD;
-#[cfg(not(windows))]
-pub(crate) const STDIN_FILENO: c::c_int = c::STDIN_FILENO;
-#[cfg(not(windows))]
-pub(crate) const STDOUT_FILENO: c::c_int = c::STDOUT_FILENO;
-#[cfg(not(windows))]
-pub(crate) const STDERR_FILENO: c::c_int = c::STDERR_FILENO;
-
-/// A buffer type used with `vmsplice`.
-/// It is guaranteed to be ABI compatible with the iovec type on Unix platforms
-/// and `WSABUF` on Windows. Unlike `IoSlice` and `IoSliceMut` it is
-/// semantically like a raw pointer, and therefore can be shared or mutated as
-/// needed.
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[repr(transparent)]
-pub struct IoSliceRaw<'a> {
- _buf: c::iovec,
- _lifetime: PhantomData<&'a ()>,
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-impl<'a> IoSliceRaw<'a> {
- /// Creates a new IoSlice wrapping a byte slice.
- pub fn from_slice(buf: &'a [u8]) -> Self {
- IoSliceRaw {
- _buf: c::iovec {
- iov_base: buf.as_ptr() as *mut u8 as *mut c::c_void,
- iov_len: buf.len() as _,
- },
- _lifetime: PhantomData,
- }
- }
-
- /// Creates a new IoSlice wrapping a mutable byte slice.
- pub fn from_slice_mut(buf: &'a mut [u8]) -> Self {
- IoSliceRaw {
- _buf: c::iovec {
- iov_base: buf.as_mut_ptr() as *mut c::c_void,
- iov_len: buf.len() as _,
- },
- _lifetime: PhantomData,
- }
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/io/windows_syscalls.rs b/vendor/rustix-0.37.6/src/backend/libc/io/windows_syscalls.rs
deleted file mode 100644
index 4c6e86f94..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/io/windows_syscalls.rs
+++ /dev/null
@@ -1,39 +0,0 @@
-//! Windows system calls in the `io` module.
-
-use super::super::c;
-use super::super::conv::{borrowed_fd, ret, ret_c_int};
-use super::super::fd::LibcFd;
-use crate::fd::{BorrowedFd, RawFd};
-use crate::io;
-use crate::io::PollFd;
-use core::convert::TryInto;
-use core::mem::MaybeUninit;
-
-pub(crate) unsafe fn close(raw_fd: RawFd) {
- let _ = c::close(raw_fd as LibcFd);
-}
-
-pub(crate) fn ioctl_fionread(fd: BorrowedFd<'_>) -> io::Result<u64> {
- let mut nread = MaybeUninit::<c::c_ulong>::uninit();
- unsafe {
- ret(c::ioctl(borrowed_fd(fd), c::FIONREAD, nread.as_mut_ptr()))?;
- Ok(u64::from(nread.assume_init()))
- }
-}
-
-pub(crate) fn ioctl_fionbio(fd: BorrowedFd<'_>, value: bool) -> io::Result<()> {
- unsafe {
- let mut data = value as c::c_uint;
- ret(c::ioctl(borrowed_fd(fd), c::FIONBIO, &mut data))
- }
-}
-
-pub(crate) fn poll(fds: &mut [PollFd<'_>], timeout: c::c_int) -> io::Result<usize> {
- let nfds = fds
- .len()
- .try_into()
- .map_err(|_convert_err| io::Errno::INVAL)?;
-
- ret_c_int(unsafe { c::poll(fds.as_mut_ptr().cast(), nfds, timeout) })
- .map(|nready| nready as usize)
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/io_lifetimes.rs b/vendor/rustix-0.37.6/src/backend/libc/io_lifetimes.rs
deleted file mode 100644
index 993365c0c..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/io_lifetimes.rs
+++ /dev/null
@@ -1,82 +0,0 @@
-//! `io_lifetimes` types for Windows assuming that Fd is Socket.
-//!
-//! We can make this assumption since `rustix` supports only `rustix::net` on
-//! Windows.
-
-pub use io_lifetimes::{BorrowedSocket as BorrowedFd, OwnedSocket as OwnedFd};
-#[cfg(feature = "std")]
-pub use std::os::windows::io::RawSocket as RawFd;
-pub(crate) use windows_sys::Win32::Networking::WinSock::SOCKET as LibcFd;
-
-// Re-export the `Socket` traits so that users can implement them.
-pub use io_lifetimes::AsSocket;
-
-/// A version of [`AsRawFd`] for use with Winsock2 API.
-///
-/// [`AsRawFd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.AsRawFd.html
-pub trait AsRawFd {
- /// A version of [`as_raw_fd`] for use with Winsock2 API.
- ///
- /// [`as_raw_fd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.FromRawFd.html#tymethod.as_raw_fd
- fn as_raw_fd(&self) -> RawFd;
-}
-#[cfg(feature = "std")]
-impl<T: std::os::windows::io::AsRawSocket> AsRawFd for T {
- #[inline]
- fn as_raw_fd(&self) -> RawFd {
- self.as_raw_socket()
- }
-}
-
-/// A version of [`IntoRawFd`] for use with Winsock2 API.
-///
-/// [`IntoRawFd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.IntoRawFd.html
-pub trait IntoRawFd {
- /// A version of [`into_raw_fd`] for use with Winsock2 API.
- ///
- /// [`into_raw_fd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.FromRawFd.html#tymethod.into_raw_fd
- fn into_raw_fd(self) -> RawFd;
-}
-#[cfg(feature = "std")]
-impl<T: std::os::windows::io::IntoRawSocket> IntoRawFd for T {
- #[inline]
- fn into_raw_fd(self) -> RawFd {
- self.into_raw_socket()
- }
-}
-
-/// A version of [`FromRawFd`] for use with Winsock2 API.
-///
-/// [`FromRawFd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.FromRawFd.html
-pub trait FromRawFd {
- /// A version of [`from_raw_fd`] for use with Winsock2 API.
- ///
- /// # Safety
- ///
- /// See the [safety requirements] for [`from_raw_fd`].
- ///
- /// [`from_raw_fd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.FromRawFd.html#tymethod.from_raw_fd
- /// [safety requirements]: https://doc.rust-lang.org/stable/std/os/fd/trait.FromRawFd.html#safety
- unsafe fn from_raw_fd(raw_fd: RawFd) -> Self;
-}
-#[cfg(feature = "std")]
-impl<T: std::os::windows::io::FromRawSocket> FromRawFd for T {
- #[inline]
- unsafe fn from_raw_fd(raw_fd: RawFd) -> Self {
- Self::from_raw_socket(raw_fd)
- }
-}
-
-/// A version of [`AsFd`] for use with Winsock2 API.
-///
-/// [`AsFd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.AsFd.html
-pub trait AsFd {
- /// An `as_fd` function for Winsock2, where a `Fd` is a `Socket`.
- fn as_fd(&self) -> BorrowedFd;
-}
-impl<T: AsSocket> AsFd for T {
- #[inline]
- fn as_fd(&self) -> BorrowedFd {
- self.as_socket()
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/io_uring/mod.rs b/vendor/rustix-0.37.6/src/backend/libc/io_uring/mod.rs
deleted file mode 100644
index ef944f04d..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/io_uring/mod.rs
+++ /dev/null
@@ -1 +0,0 @@
-pub(crate) mod syscalls;
diff --git a/vendor/rustix-0.37.6/src/backend/libc/io_uring/syscalls.rs b/vendor/rustix-0.37.6/src/backend/libc/io_uring/syscalls.rs
deleted file mode 100644
index 17d3eb10c..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/io_uring/syscalls.rs
+++ /dev/null
@@ -1,55 +0,0 @@
-//! libc syscalls supporting `rustix::io_uring`.
-
-use super::super::c;
-use super::super::conv::{borrowed_fd, syscall_ret_owned_fd, syscall_ret_u32};
-use crate::fd::{BorrowedFd, OwnedFd};
-use crate::io;
-use crate::io_uring::{io_uring_params, IoringEnterFlags, IoringRegisterOp};
-use linux_raw_sys::general::{__NR_io_uring_enter, __NR_io_uring_register, __NR_io_uring_setup};
-
-#[inline]
-pub(crate) fn io_uring_setup(entries: u32, params: &mut io_uring_params) -> io::Result<OwnedFd> {
- unsafe {
- syscall_ret_owned_fd(c::syscall(
- __NR_io_uring_setup as _,
- entries as usize,
- params,
- ))
- }
-}
-
-#[inline]
-pub(crate) unsafe fn io_uring_register(
- fd: BorrowedFd<'_>,
- opcode: IoringRegisterOp,
- arg: *const c::c_void,
- nr_args: u32,
-) -> io::Result<u32> {
- syscall_ret_u32(c::syscall(
- __NR_io_uring_register as _,
- borrowed_fd(fd),
- opcode as u32 as usize,
- arg,
- nr_args as usize,
- ))
-}
-
-#[inline]
-pub(crate) unsafe fn io_uring_enter(
- fd: BorrowedFd<'_>,
- to_submit: u32,
- min_complete: u32,
- flags: IoringEnterFlags,
- arg: *const c::c_void,
- size: usize,
-) -> io::Result<u32> {
- syscall_ret_u32(c::syscall(
- __NR_io_uring_enter as _,
- borrowed_fd(fd),
- to_submit as usize,
- min_complete as usize,
- flags.bits() as usize,
- arg,
- size,
- ))
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/mm/syscalls.rs b/vendor/rustix-0.37.6/src/backend/libc/mm/syscalls.rs
deleted file mode 100644
index 16636f1b9..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/mm/syscalls.rs
+++ /dev/null
@@ -1,218 +0,0 @@
-//! libc syscalls supporting `rustix::mm`.
-
-use super::super::c;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use super::super::conv::syscall_ret_owned_fd;
-use super::super::conv::{borrowed_fd, no_fd, ret};
-use super::super::offset::libc_mmap;
-#[cfg(not(target_os = "redox"))]
-use super::types::Advice;
-#[cfg(any(target_os = "emscripten", target_os = "linux"))]
-use super::types::MremapFlags;
-use super::types::{MapFlags, MprotectFlags, MsyncFlags, ProtFlags};
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use super::types::{MlockFlags, UserfaultfdFlags};
-use crate::fd::BorrowedFd;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use crate::fd::OwnedFd;
-use crate::io;
-
-#[cfg(not(target_os = "redox"))]
-pub(crate) fn madvise(addr: *mut c::c_void, len: usize, advice: Advice) -> io::Result<()> {
- // On Linux platforms, `MADV_DONTNEED` has the same value as
- // `POSIX_MADV_DONTNEED` but different behavior. We remap it to a different
- // value, and check for it here.
- #[cfg(target_os = "linux")]
- if let Advice::LinuxDontNeed = advice {
- return unsafe { ret(c::madvise(addr, len, c::MADV_DONTNEED)) };
- }
-
- #[cfg(not(target_os = "android"))]
- {
- let err = unsafe { c::posix_madvise(addr, len, advice as c::c_int) };
-
- // `posix_madvise` returns its error status rather than using `errno`.
- if err == 0 {
- Ok(())
- } else {
- Err(io::Errno(err))
- }
- }
-
- #[cfg(target_os = "android")]
- {
- if let Advice::DontNeed = advice {
- // Do nothing. Linux's `MADV_DONTNEED` isn't the same as
- // `POSIX_MADV_DONTNEED`, so just discard `MADV_DONTNEED`.
- Ok(())
- } else {
- unsafe { ret(c::madvise(addr, len, advice as c::c_int)) }
- }
- }
-}
-
-pub(crate) unsafe fn msync(addr: *mut c::c_void, len: usize, flags: MsyncFlags) -> io::Result<()> {
- let err = c::msync(addr, len, flags.bits());
-
- // `msync` returns its error status rather than using `errno`.
- if err == 0 {
- Ok(())
- } else {
- Err(io::Errno(err))
- }
-}
-
-/// # Safety
-///
-/// `mmap` is primarily unsafe due to the `addr` parameter, as anything working
-/// with memory pointed to by raw pointers is unsafe.
-pub(crate) unsafe fn mmap(
- ptr: *mut c::c_void,
- len: usize,
- prot: ProtFlags,
- flags: MapFlags,
- fd: BorrowedFd<'_>,
- offset: u64,
-) -> io::Result<*mut c::c_void> {
- let res = libc_mmap(
- ptr,
- len,
- prot.bits(),
- flags.bits(),
- borrowed_fd(fd),
- offset as i64,
- );
- if res == c::MAP_FAILED {
- Err(io::Errno::last_os_error())
- } else {
- Ok(res)
- }
-}
-
-/// # Safety
-///
-/// `mmap` is primarily unsafe due to the `addr` parameter, as anything working
-/// with memory pointed to by raw pointers is unsafe.
-pub(crate) unsafe fn mmap_anonymous(
- ptr: *mut c::c_void,
- len: usize,
- prot: ProtFlags,
- flags: MapFlags,
-) -> io::Result<*mut c::c_void> {
- let res = libc_mmap(
- ptr,
- len,
- prot.bits(),
- flags.bits() | c::MAP_ANONYMOUS,
- no_fd(),
- 0,
- );
- if res == c::MAP_FAILED {
- Err(io::Errno::last_os_error())
- } else {
- Ok(res)
- }
-}
-
-pub(crate) unsafe fn mprotect(
- ptr: *mut c::c_void,
- len: usize,
- flags: MprotectFlags,
-) -> io::Result<()> {
- ret(c::mprotect(ptr, len, flags.bits()))
-}
-
-pub(crate) unsafe fn munmap(ptr: *mut c::c_void, len: usize) -> io::Result<()> {
- ret(c::munmap(ptr, len))
-}
-
-/// # Safety
-///
-/// `mremap` is primarily unsafe due to the `old_address` parameter, as
-/// anything working with memory pointed to by raw pointers is unsafe.
-#[cfg(any(target_os = "emscripten", target_os = "linux"))]
-pub(crate) unsafe fn mremap(
- old_address: *mut c::c_void,
- old_size: usize,
- new_size: usize,
- flags: MremapFlags,
-) -> io::Result<*mut c::c_void> {
- let res = c::mremap(old_address, old_size, new_size, flags.bits());
- if res == c::MAP_FAILED {
- Err(io::Errno::last_os_error())
- } else {
- Ok(res)
- }
-}
-
-/// # Safety
-///
-/// `mremap_fixed` is primarily unsafe due to the `old_address` and
-/// `new_address` parameters, as anything working with memory pointed to by raw
-/// pointers is unsafe.
-#[cfg(any(target_os = "emscripten", target_os = "linux"))]
-pub(crate) unsafe fn mremap_fixed(
- old_address: *mut c::c_void,
- old_size: usize,
- new_size: usize,
- flags: MremapFlags,
- new_address: *mut c::c_void,
-) -> io::Result<*mut c::c_void> {
- let res = c::mremap(
- old_address,
- old_size,
- new_size,
- flags.bits() | c::MAP_FIXED,
- new_address,
- );
- if res == c::MAP_FAILED {
- Err(io::Errno::last_os_error())
- } else {
- Ok(res)
- }
-}
-
-/// # Safety
-///
-/// `mlock` operates on raw pointers and may round out to the nearest page
-/// boundaries.
-#[inline]
-pub(crate) unsafe fn mlock(addr: *mut c::c_void, length: usize) -> io::Result<()> {
- ret(c::mlock(addr, length))
-}
-
-/// # Safety
-///
-/// `mlock_with` operates on raw pointers and may round out to the nearest page
-/// boundaries.
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub(crate) unsafe fn mlock_with(
- addr: *mut c::c_void,
- length: usize,
- flags: MlockFlags,
-) -> io::Result<()> {
- weak_or_syscall! {
- fn mlock2(
- addr: *const c::c_void,
- len: c::size_t,
- flags: c::c_int
- ) via SYS_mlock2 -> c::c_int
- }
-
- ret(mlock2(addr, length, flags.bits()))
-}
-
-/// # Safety
-///
-/// `munlock` operates on raw pointers and may round out to the nearest page
-/// boundaries.
-#[inline]
-pub(crate) unsafe fn munlock(addr: *mut c::c_void, length: usize) -> io::Result<()> {
- ret(c::munlock(addr, length))
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub(crate) unsafe fn userfaultfd(flags: UserfaultfdFlags) -> io::Result<OwnedFd> {
- syscall_ret_owned_fd(c::syscall(c::SYS_userfaultfd, flags.bits()))
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/mm/types.rs b/vendor/rustix-0.37.6/src/backend/libc/mm/types.rs
deleted file mode 100644
index cd6e521d2..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/mm/types.rs
+++ /dev/null
@@ -1,366 +0,0 @@
-use super::super::c;
-use bitflags::bitflags;
-
-bitflags! {
- /// `PROT_*` flags for use with [`mmap`].
- ///
- /// For `PROT_NONE`, use `ProtFlags::empty()`.
- ///
- /// [`mmap`]: crate::io::mmap
- pub struct ProtFlags: c::c_int {
- /// `PROT_READ`
- const READ = c::PROT_READ;
- /// `PROT_WRITE`
- const WRITE = c::PROT_WRITE;
- /// `PROT_EXEC`
- const EXEC = c::PROT_EXEC;
- }
-}
-
-bitflags! {
- /// `PROT_*` flags for use with [`mprotect`].
- ///
- /// For `PROT_NONE`, use `MprotectFlags::empty()`.
- ///
- /// [`mprotect`]: crate::io::mprotect
- pub struct MprotectFlags: c::c_int {
- /// `PROT_READ`
- const READ = c::PROT_READ;
- /// `PROT_WRITE`
- const WRITE = c::PROT_WRITE;
- /// `PROT_EXEC`
- const EXEC = c::PROT_EXEC;
- /// `PROT_GROWSUP`
- #[cfg(any(target_os = "android", target_os = "linux"))]
- const GROWSUP = c::PROT_GROWSUP;
- /// `PROT_GROWSDOWN`
- #[cfg(any(target_os = "android", target_os = "linux"))]
- const GROWSDOWN = c::PROT_GROWSDOWN;
- }
-}
-
-bitflags! {
- /// `MAP_*` flags for use with [`mmap`].
- ///
- /// For `MAP_ANONYMOUS` (aka `MAP_ANON`), see [`mmap_anonymous`].
- ///
- /// [`mmap`]: crate::io::mmap
- /// [`mmap_anonymous`]: crates::io::mmap_anonymous
- pub struct MapFlags: c::c_int {
- /// `MAP_SHARED`
- const SHARED = c::MAP_SHARED;
- /// `MAP_SHARED_VALIDATE`
- #[cfg(not(any(
- bsd,
- solarish,
- target_os = "android",
- target_os = "emscripten",
- target_os = "fuchsia",
- target_os = "haiku",
- target_os = "redox",
- )))]
- const SHARED_VALIDATE = c::MAP_SHARED_VALIDATE;
- /// `MAP_PRIVATE`
- const PRIVATE = c::MAP_PRIVATE;
- /// `MAP_DENYWRITE`
- #[cfg(not(any(
- bsd,
- solarish,
- target_os = "haiku",
- target_os = "redox",
- )))]
- const DENYWRITE = c::MAP_DENYWRITE;
- /// `MAP_FIXED`
- const FIXED = c::MAP_FIXED;
- /// `MAP_FIXED_NOREPLACE`
- #[cfg(not(any(
- bsd,
- solarish,
- target_os = "android",
- target_os = "emscripten",
- target_os = "fuchsia",
- target_os = "haiku",
- target_os = "redox",
- )))]
- const FIXED_NOREPLACE = c::MAP_FIXED_NOREPLACE;
- /// `MAP_GROWSDOWN`
- #[cfg(not(any(
- bsd,
- solarish,
- target_os = "haiku",
- target_os = "redox",
- )))]
- const GROWSDOWN = c::MAP_GROWSDOWN;
- /// `MAP_HUGETLB`
- #[cfg(not(any(
- bsd,
- solarish,
- target_os = "haiku",
- target_os = "redox",
- )))]
- const HUGETLB = c::MAP_HUGETLB;
- /// `MAP_HUGE_2MB`
- #[cfg(not(any(
- bsd,
- solarish,
- target_os = "android",
- target_os = "emscripten",
- target_os = "fuchsia",
- target_os = "haiku",
- target_os = "redox",
- )))]
- const HUGE_2MB = c::MAP_HUGE_2MB;
- /// `MAP_HUGE_1GB`
- #[cfg(not(any(
- bsd,
- solarish,
- target_os = "android",
- target_os = "emscripten",
- target_os = "fuchsia",
- target_os = "haiku",
- target_os = "redox",
- )))]
- const HUGE_1GB = c::MAP_HUGE_1GB;
- /// `MAP_LOCKED`
- #[cfg(not(any(
- bsd,
- solarish,
- target_os = "haiku",
- target_os = "redox",
- )))]
- const LOCKED = c::MAP_LOCKED;
- /// `MAP_NOCORE`
- #[cfg(freebsdlike)]
- const NOCORE = c::MAP_NOCORE;
- /// `MAP_NORESERVE`
- #[cfg(not(any(freebsdlike, target_os = "redox")))]
- const NORESERVE = c::MAP_NORESERVE;
- /// `MAP_NOSYNC`
- #[cfg(freebsdlike)]
- const NOSYNC = c::MAP_NOSYNC;
- /// `MAP_POPULATE`
- #[cfg(not(any(
- bsd,
- solarish,
- target_os = "haiku",
- target_os = "redox",
- )))]
- const POPULATE = c::MAP_POPULATE;
- /// `MAP_STACK`
- #[cfg(not(any(
- apple,
- solarish,
- target_os = "dragonfly",
- target_os = "haiku",
- target_os = "netbsd",
- target_os = "redox",
- )))]
- const STACK = c::MAP_STACK;
- /// `MAP_PREFAULT_READ`
- #[cfg(target_os = "freebsd")]
- const PREFAULT_READ = c::MAP_PREFAULT_READ;
- /// `MAP_SYNC`
- #[cfg(not(any(
- bsd,
- solarish,
- target_os = "android",
- target_os = "emscripten",
- target_os = "fuchsia",
- target_os = "haiku",
- target_os = "redox",
- all(
- any(target_os = "android", target_os = "linux"),
- any(target_arch = "mips", target_arch = "mips64"),
- )
- )))]
- const SYNC = c::MAP_SYNC;
- /// `MAP_UNINITIALIZED`
- #[cfg(any())]
- const UNINITIALIZED = c::MAP_UNINITIALIZED;
- }
-}
-
-#[cfg(any(target_os = "emscripten", target_os = "linux"))]
-bitflags! {
- /// `MREMAP_*` flags for use with [`mremap`].
- ///
- /// For `MREMAP_FIXED`, see [`mremap_fixed`].
- ///
- /// [`mremap`]: crate::io::mremap
- /// [`mremap_fixed`]: crate::io::mremap_fixed
- pub struct MremapFlags: i32 {
- /// `MREMAP_MAYMOVE`
- const MAYMOVE = c::MREMAP_MAYMOVE;
- }
-}
-
-bitflags! {
- /// `MS_*` flags for use with [`msync`].
- ///
- /// [`msync`]: crate::io::msync
- pub struct MsyncFlags: i32 {
- /// `MS_SYNC`—Requests an update and waits for it to complete.
- const SYNC = c::MS_SYNC;
- /// `MS_ASYNC`—Specifies that an update be scheduled, but the call
- /// returns immediately.
- const ASYNC = c::MS_ASYNC;
- /// `MS_INVALIDATE`—Asks to invalidate other mappings of the same
- /// file (so that they can be updated with the fresh values just
- /// written).
- const INVALIDATE = c::MS_INVALIDATE;
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-bitflags! {
- /// `MLOCK_*` flags for use with [`mlock_with`].
- ///
- /// [`mlock_with`]: crate::io::mlock_with
- pub struct MlockFlags: i32 {
- /// `MLOCK_ONFAULT`
- const ONFAULT = c::MLOCK_ONFAULT as _;
- }
-}
-
-/// `POSIX_MADV_*` constants for use with [`madvise`].
-///
-/// [`madvise`]: crate::mm::madvise
-#[cfg(not(target_os = "redox"))]
-#[derive(Debug, Copy, Clone, Eq, PartialEq)]
-#[repr(i32)]
-#[non_exhaustive]
-pub enum Advice {
- /// `POSIX_MADV_NORMAL`
- #[cfg(not(any(target_os = "android", target_os = "haiku")))]
- Normal = c::POSIX_MADV_NORMAL,
-
- /// `POSIX_MADV_NORMAL`
- #[cfg(any(target_os = "android", target_os = "haiku"))]
- Normal = c::MADV_NORMAL,
-
- /// `POSIX_MADV_SEQUENTIAL`
- #[cfg(not(any(target_os = "android", target_os = "haiku")))]
- Sequential = c::POSIX_MADV_SEQUENTIAL,
-
- /// `POSIX_MADV_SEQUENTIAL`
- #[cfg(any(target_os = "android", target_os = "haiku"))]
- Sequential = c::MADV_SEQUENTIAL,
-
- /// `POSIX_MADV_RANDOM`
- #[cfg(not(any(target_os = "android", target_os = "haiku")))]
- Random = c::POSIX_MADV_RANDOM,
-
- /// `POSIX_MADV_RANDOM`
- #[cfg(any(target_os = "android", target_os = "haiku"))]
- Random = c::MADV_RANDOM,
-
- /// `POSIX_MADV_WILLNEED`
- #[cfg(not(any(target_os = "android", target_os = "haiku")))]
- WillNeed = c::POSIX_MADV_WILLNEED,
-
- /// `POSIX_MADV_WILLNEED`
- #[cfg(any(target_os = "android", target_os = "haiku"))]
- WillNeed = c::MADV_WILLNEED,
-
- /// `POSIX_MADV_DONTNEED`
- #[cfg(not(any(target_os = "android", target_os = "emscripten", target_os = "haiku")))]
- DontNeed = c::POSIX_MADV_DONTNEED,
-
- /// `POSIX_MADV_DONTNEED`
- #[cfg(any(target_os = "android", target_os = "haiku"))]
- DontNeed = i32::MAX - 1,
-
- /// `MADV_DONTNEED`
- // `MADV_DONTNEED` has the same value as `POSIX_MADV_DONTNEED`. We don't
- // have a separate `posix_madvise` from `madvise`, so we expose a special
- // value which we special-case.
- #[cfg(target_os = "linux")]
- LinuxDontNeed = i32::MAX,
-
- /// `MADV_DONTNEED`
- #[cfg(target_os = "android")]
- LinuxDontNeed = c::MADV_DONTNEED,
- /// `MADV_FREE`
- #[cfg(any(target_os = "android", target_os = "linux"))]
- LinuxFree = c::MADV_FREE,
- /// `MADV_REMOVE`
- #[cfg(any(target_os = "android", target_os = "linux"))]
- LinuxRemove = c::MADV_REMOVE,
- /// `MADV_DONTFORK`
- #[cfg(any(target_os = "android", target_os = "linux"))]
- LinuxDontFork = c::MADV_DONTFORK,
- /// `MADV_DOFORK`
- #[cfg(any(target_os = "android", target_os = "linux"))]
- LinuxDoFork = c::MADV_DOFORK,
- /// `MADV_HWPOISON`
- #[cfg(any(target_os = "android", target_os = "linux"))]
- LinuxHwPoison = c::MADV_HWPOISON,
- /// `MADV_SOFT_OFFLINE`
- #[cfg(all(
- any(target_os = "android", target_os = "linux"),
- not(any(target_arch = "mips", target_arch = "mips64")),
- ))]
- LinuxSoftOffline = c::MADV_SOFT_OFFLINE,
- /// `MADV_MERGEABLE`
- #[cfg(any(target_os = "android", target_os = "linux"))]
- LinuxMergeable = c::MADV_MERGEABLE,
- /// `MADV_UNMERGEABLE`
- #[cfg(any(target_os = "android", target_os = "linux"))]
- LinuxUnmergeable = c::MADV_UNMERGEABLE,
- /// `MADV_HUGEPAGE` (since Linux 2.6.38)
- #[cfg(any(target_os = "android", target_os = "linux"))]
- LinuxHugepage = c::MADV_HUGEPAGE,
- /// `MADV_NOHUGEPAGE` (since Linux 2.6.38)
- #[cfg(any(target_os = "android", target_os = "linux"))]
- LinuxNoHugepage = c::MADV_NOHUGEPAGE,
- /// `MADV_DONTDUMP` (since Linux 3.4)
- #[cfg(any(target_os = "android", target_os = "linux"))]
- LinuxDontDump = c::MADV_DONTDUMP,
- /// `MADV_DODUMP` (since Linux 3.4)
- #[cfg(any(target_os = "android", target_os = "linux"))]
- LinuxDoDump = c::MADV_DODUMP,
- /// `MADV_WIPEONFORK` (since Linux 4.14)
- #[cfg(any(target_os = "android", target_os = "linux"))]
- #[cfg(feature = "mm")]
- LinuxWipeOnFork = linux_raw_sys::general::MADV_WIPEONFORK as i32,
- /// `MADV_KEEPONFORK` (since Linux 4.14)
- #[cfg(any(target_os = "android", target_os = "linux"))]
- #[cfg(feature = "mm")]
- LinuxKeepOnFork = linux_raw_sys::general::MADV_KEEPONFORK as i32,
- /// `MADV_COLD` (since Linux 5.4)
- #[cfg(any(target_os = "android", target_os = "linux"))]
- #[cfg(feature = "mm")]
- LinuxCold = linux_raw_sys::general::MADV_COLD as i32,
- /// `MADV_PAGEOUT` (since Linux 5.4)
- #[cfg(any(target_os = "android", target_os = "linux"))]
- #[cfg(feature = "mm")]
- LinuxPageOut = linux_raw_sys::general::MADV_PAGEOUT as i32,
- /// `MADV_POPULATE_READ` (since Linux 5.14)
- #[cfg(any(target_os = "android", target_os = "linux"))]
- #[cfg(feature = "mm")]
- LinuxPopulateRead = linux_raw_sys::general::MADV_POPULATE_READ as i32,
- /// `MADV_POPULATE_WRITE` (since Linux 5.14)
- #[cfg(any(target_os = "android", target_os = "linux"))]
- #[cfg(feature = "mm")]
- LinuxPopulateWrite = linux_raw_sys::general::MADV_POPULATE_WRITE as i32,
-}
-
-#[cfg(target_os = "emscripten")]
-impl Advice {
- /// `POSIX_MADV_DONTNEED`
- #[allow(non_upper_case_globals)]
- pub const DontNeed: Self = Self::Normal;
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-bitflags! {
- /// `O_*` flags for use with [`userfaultfd`].
- ///
- /// [`userfaultfd`]: crate::io::userfaultfd
- pub struct UserfaultfdFlags: c::c_int {
- /// `O_CLOEXEC`
- const CLOEXEC = c::O_CLOEXEC;
- /// `O_NONBLOCK`
- const NONBLOCK = c::O_NONBLOCK;
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/mod.rs b/vendor/rustix-0.37.6/src/backend/libc/mod.rs
deleted file mode 100644
index 1961d1291..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/mod.rs
+++ /dev/null
@@ -1,107 +0,0 @@
-//! The libc backend.
-//!
-//! On most platforms, this uses the `libc` crate to make system calls. On
-//! Windows, this uses the Winsock2 API in `windows-sys`, which can be adapted
-//! to have a very `libc`-like interface.
-
-// Every FFI call requires an unsafe block, and there are a lot of FFI
-// calls. For now, set this to allow for the libc backend.
-#![allow(clippy::undocumented_unsafe_blocks)]
-// Lots of libc types vary between platforms, so we often need a `.into()` on
-// one platform where it's redundant on another.
-#![allow(clippy::useless_conversion)]
-
-#[cfg(not(any(windows, target_os = "wasi")))]
-#[macro_use]
-mod weak;
-
-mod conv;
-mod offset;
-
-#[cfg(windows)]
-mod io_lifetimes;
-#[cfg(not(windows))]
-#[cfg(not(feature = "std"))]
-pub(crate) mod fd {
- pub(crate) use super::c::c_int as LibcFd;
- pub use crate::io::fd::*;
-}
-#[cfg(windows)]
-pub(crate) mod fd {
- pub use super::io_lifetimes::*;
-}
-#[cfg(not(windows))]
-#[cfg(feature = "std")]
-pub(crate) mod fd {
- pub use io_lifetimes::*;
-
- #[cfg(target_os = "wasi")]
- #[allow(unused_imports)]
- pub(crate) use super::c::c_int as LibcFd;
- #[cfg(unix)]
- #[allow(unused_imports)]
- pub(crate) use std::os::unix::io::RawFd as LibcFd;
- #[cfg(unix)]
- pub use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd};
- #[cfg(target_os = "wasi")]
- pub use std::os::wasi::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd};
-}
-
-// On Windows we emulate selected libc-compatible interfaces. On non-Windows,
-// we just use libc here, since this is the libc backend.
-#[cfg_attr(windows, path = "winsock_c.rs")]
-pub(crate) mod c;
-
-#[cfg(not(windows))]
-#[cfg(feature = "fs")]
-pub(crate) mod fs;
-pub(crate) mod io;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[cfg(feature = "io_uring")]
-pub(crate) mod io_uring;
-#[cfg(not(any(windows, target_os = "wasi")))]
-#[cfg(feature = "mm")]
-pub(crate) mod mm;
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-#[cfg(feature = "net")]
-pub(crate) mod net;
-#[cfg(not(windows))]
-#[cfg(any(
- feature = "param",
- feature = "runtime",
- feature = "time",
- target_arch = "x86",
-))]
-pub(crate) mod param;
-#[cfg(not(windows))]
-pub(crate) mod process;
-#[cfg(not(windows))]
-#[cfg(feature = "rand")]
-pub(crate) mod rand;
-#[cfg(not(windows))]
-#[cfg(feature = "termios")]
-pub(crate) mod termios;
-#[cfg(not(windows))]
-#[cfg(feature = "thread")]
-pub(crate) mod thread;
-#[cfg(not(windows))]
-pub(crate) mod time;
-
-/// If the host libc is glibc, return `true` if it is less than version 2.25.
-///
-/// To restate and clarify, this function returning true does not mean the libc
-/// is glibc just that if it is glibc, it is less than version 2.25.
-///
-/// For now, this function is only available on Linux, but if it ends up being
-/// used beyond that, this could be changed to e.g. `#[cfg(unix)]`.
-#[cfg(all(unix, target_env = "gnu"))]
-pub(crate) fn if_glibc_is_less_than_2_25() -> bool {
- // This is also defined inside `weak_or_syscall!` in
- // backend/libc/rand/syscalls.rs, but it's not convenient to re-export the weak
- // symbol from that macro, so we duplicate it at a small cost here.
- weak! { fn getrandom(*mut c::c_void, c::size_t, c::c_uint) -> c::ssize_t }
-
- // glibc 2.25 has `getrandom`, which is how we satisfy the API contract of
- // this function. But, there are likely other libc versions which have it.
- getrandom.get().is_none()
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/net/addr.rs b/vendor/rustix-0.37.6/src/backend/libc/net/addr.rs
deleted file mode 100644
index d00a48626..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/net/addr.rs
+++ /dev/null
@@ -1,226 +0,0 @@
-//! IPv4, IPv6, and Socket addresses.
-
-use super::super::c;
-#[cfg(unix)]
-use crate::ffi::CStr;
-#[cfg(unix)]
-use crate::io;
-#[cfg(unix)]
-use crate::path;
-#[cfg(not(windows))]
-use core::convert::TryInto;
-#[cfg(unix)]
-use core::fmt;
-#[cfg(unix)]
-use core::slice;
-
-/// `struct sockaddr_un`
-#[cfg(unix)]
-#[derive(Clone)]
-#[doc(alias = "sockaddr_un")]
-pub struct SocketAddrUnix {
- pub(crate) unix: c::sockaddr_un,
- #[cfg(not(any(bsd, target_os = "haiku")))]
- len: c::socklen_t,
-}
-
-#[cfg(unix)]
-impl SocketAddrUnix {
- /// Construct a new Unix-domain address from a filesystem path.
- #[inline]
- pub fn new<P: path::Arg>(path: P) -> io::Result<Self> {
- path.into_with_c_str(Self::_new)
- }
-
- #[inline]
- fn _new(path: &CStr) -> io::Result<Self> {
- let mut unix = Self::init();
- let bytes = path.to_bytes_with_nul();
- if bytes.len() > unix.sun_path.len() {
- return Err(io::Errno::NAMETOOLONG);
- }
- for (i, b) in bytes.iter().enumerate() {
- unix.sun_path[i] = *b as c::c_char;
- }
-
- #[cfg(any(bsd, target_os = "haiku"))]
- {
- unix.sun_len = (offsetof_sun_path() + bytes.len()).try_into().unwrap();
- }
-
- Ok(Self {
- unix,
- #[cfg(not(any(bsd, target_os = "haiku")))]
- len: (offsetof_sun_path() + bytes.len()).try_into().unwrap(),
- })
- }
-
- /// Construct a new abstract Unix-domain address from a byte slice.
- #[cfg(any(target_os = "android", target_os = "linux"))]
- #[inline]
- pub fn new_abstract_name(name: &[u8]) -> io::Result<Self> {
- let mut unix = Self::init();
- if 1 + name.len() > unix.sun_path.len() {
- return Err(io::Errno::NAMETOOLONG);
- }
- unix.sun_path[0] = b'\0' as c::c_char;
- for (i, b) in name.iter().enumerate() {
- unix.sun_path[1 + i] = *b as c::c_char;
- }
- let len = offsetof_sun_path() + 1 + name.len();
- let len = len.try_into().unwrap();
- Ok(Self {
- unix,
- #[cfg(not(any(bsd, target_os = "haiku")))]
- len,
- })
- }
-
- fn init() -> c::sockaddr_un {
- c::sockaddr_un {
- #[cfg(any(bsd, target_os = "haiku"))]
- sun_len: 0,
- sun_family: c::AF_UNIX as _,
- #[cfg(bsd)]
- sun_path: [0; 104],
- #[cfg(not(any(bsd, target_os = "haiku")))]
- sun_path: [0; 108],
- #[cfg(target_os = "haiku")]
- sun_path: [0; 126],
- }
- }
-
- /// For a filesystem path address, return the path.
- #[inline]
- pub fn path(&self) -> Option<&CStr> {
- let len = self.len();
- if len != 0 && self.unix.sun_path[0] != b'\0' as c::c_char {
- let end = len as usize - offsetof_sun_path();
- let bytes = &self.unix.sun_path[..end];
- // SAFETY: `from_raw_parts` to convert from `&[c_char]` to `&[u8]`. And
- // `from_bytes_with_nul_unchecked` since the string is NUL-terminated.
- unsafe {
- Some(CStr::from_bytes_with_nul_unchecked(slice::from_raw_parts(
- bytes.as_ptr().cast(),
- bytes.len(),
- )))
- }
- } else {
- None
- }
- }
-
- /// For an abstract address, return the identifier.
- #[cfg(any(target_os = "android", target_os = "linux"))]
- #[inline]
- pub fn abstract_name(&self) -> Option<&[u8]> {
- let len = self.len();
- if len != 0 && self.unix.sun_path[0] == b'\0' as c::c_char {
- let end = len as usize - offsetof_sun_path();
- let bytes = &self.unix.sun_path[1..end];
- // SAFETY: `from_raw_parts` to convert from `&[c_char]` to `&[u8]`.
- unsafe { Some(slice::from_raw_parts(bytes.as_ptr().cast(), bytes.len())) }
- } else {
- None
- }
- }
-
- #[inline]
- pub(crate) fn addr_len(&self) -> c::socklen_t {
- #[cfg(not(any(bsd, target_os = "haiku")))]
- {
- self.len
- }
- #[cfg(any(bsd, target_os = "haiku"))]
- {
- c::socklen_t::from(self.unix.sun_len)
- }
- }
-
- #[inline]
- pub(crate) fn len(&self) -> usize {
- self.addr_len() as usize
- }
-}
-
-#[cfg(unix)]
-impl PartialEq for SocketAddrUnix {
- #[inline]
- fn eq(&self, other: &Self) -> bool {
- let self_len = self.len() - offsetof_sun_path();
- let other_len = other.len() - offsetof_sun_path();
- self.unix.sun_path[..self_len].eq(&other.unix.sun_path[..other_len])
- }
-}
-
-#[cfg(unix)]
-impl Eq for SocketAddrUnix {}
-
-#[cfg(unix)]
-impl PartialOrd for SocketAddrUnix {
- #[inline]
- fn partial_cmp(&self, other: &Self) -> Option<core::cmp::Ordering> {
- let self_len = self.len() - offsetof_sun_path();
- let other_len = other.len() - offsetof_sun_path();
- self.unix.sun_path[..self_len].partial_cmp(&other.unix.sun_path[..other_len])
- }
-}
-
-#[cfg(unix)]
-impl Ord for SocketAddrUnix {
- #[inline]
- fn cmp(&self, other: &Self) -> core::cmp::Ordering {
- let self_len = self.len() - offsetof_sun_path();
- let other_len = other.len() - offsetof_sun_path();
- self.unix.sun_path[..self_len].cmp(&other.unix.sun_path[..other_len])
- }
-}
-
-#[cfg(unix)]
-impl core::hash::Hash for SocketAddrUnix {
- #[inline]
- fn hash<H: core::hash::Hasher>(&self, state: &mut H) {
- let self_len = self.len() - offsetof_sun_path();
- self.unix.sun_path[..self_len].hash(state)
- }
-}
-
-#[cfg(unix)]
-impl fmt::Debug for SocketAddrUnix {
- fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
- if let Some(path) = self.path() {
- path.fmt(fmt)
- } else {
- #[cfg(any(target_os = "android", target_os = "linux"))]
- if let Some(name) = self.abstract_name() {
- return name.fmt(fmt);
- }
-
- "(unnamed)".fmt(fmt)
- }
- }
-}
-
-/// `struct sockaddr_storage` as a raw struct.
-pub type SocketAddrStorage = c::sockaddr_storage;
-
-/// Return the offset of the `sun_path` field of `sockaddr_un`.
-#[cfg(not(windows))]
-#[inline]
-pub(crate) fn offsetof_sun_path() -> usize {
- let z = c::sockaddr_un {
- #[cfg(any(bsd, target_os = "haiku"))]
- sun_len: 0_u8,
- #[cfg(any(bsd, target_os = "haiku"))]
- sun_family: 0_u8,
- #[cfg(not(any(bsd, target_os = "haiku")))]
- sun_family: 0_u16,
- #[cfg(bsd)]
- sun_path: [0; 104],
- #[cfg(not(any(bsd, target_os = "haiku")))]
- sun_path: [0; 108],
- #[cfg(target_os = "haiku")]
- sun_path: [0; 126],
- };
- (crate::utils::as_ptr(&z.sun_path) as usize) - (crate::utils::as_ptr(&z) as usize)
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/net/ext.rs b/vendor/rustix-0.37.6/src/backend/libc/net/ext.rs
deleted file mode 100644
index f4ad316dd..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/net/ext.rs
+++ /dev/null
@@ -1,193 +0,0 @@
-use super::super::c;
-
-/// The windows `sockaddr_in6` type is a union with accessor functions which
-/// are not `const fn`. Define our own layout-compatible version so that we
-/// can transmute in and out of it.
-#[cfg(windows)]
-#[repr(C)]
-struct sockaddr_in6 {
- sin6_family: u16,
- sin6_port: u16,
- sin6_flowinfo: u32,
- sin6_addr: c::in6_addr,
- sin6_scope_id: u32,
-}
-
-#[cfg(not(windows))]
-#[inline]
-pub(crate) const fn in_addr_s_addr(addr: c::in_addr) -> u32 {
- addr.s_addr
-}
-
-#[cfg(not(feature = "std"))]
-#[cfg(windows)]
-#[inline]
-pub(crate) const fn in_addr_s_addr(addr: c::in_addr) -> u32 {
- // This should be `*addr.S_un.S_addr()`, except that isn't a `const fn`.
- unsafe { core::mem::transmute(addr) }
-}
-
-// TODO: With Rust 1.55, we can use the above `in_addr_s_addr` definition that
-// uses a const-fn transmute.
-#[cfg(feature = "std")]
-#[cfg(windows)]
-#[inline]
-pub(crate) fn in_addr_s_addr(addr: c::in_addr) -> u32 {
- // This should be `*addr.S_un.S_addr()`, except that isn't a `const fn`.
- unsafe { core::mem::transmute(addr) }
-}
-
-#[cfg(not(windows))]
-#[inline]
-pub(crate) const fn in_addr_new(s_addr: u32) -> c::in_addr {
- c::in_addr { s_addr }
-}
-
-#[cfg(not(feature = "std"))]
-#[cfg(windows)]
-#[inline]
-pub(crate) const fn in_addr_new(s_addr: u32) -> c::in_addr {
- unsafe { core::mem::transmute(s_addr) }
-}
-
-// TODO: With Rust 1.55, we can use the above `in_addr_new` definition that
-// uses a const-fn transmute.
-#[cfg(feature = "std")]
-#[cfg(windows)]
-#[inline]
-pub(crate) fn in_addr_new(s_addr: u32) -> c::in_addr {
- unsafe { core::mem::transmute(s_addr) }
-}
-
-#[cfg(not(windows))]
-#[inline]
-pub(crate) const fn in6_addr_s6_addr(addr: c::in6_addr) -> [u8; 16] {
- addr.s6_addr
-}
-
-#[cfg(not(feature = "std"))]
-#[cfg(windows)]
-#[inline]
-pub(crate) const fn in6_addr_s6_addr(addr: c::in6_addr) -> [u8; 16] {
- unsafe { core::mem::transmute(addr) }
-}
-
-// TODO: With Rust 1.55, we can use the above `in6_addr_s6_addr` definition
-// that uses a const-fn transmute.
-#[cfg(feature = "std")]
-#[cfg(windows)]
-#[inline]
-pub(crate) fn in6_addr_s6_addr(addr: c::in6_addr) -> [u8; 16] {
- unsafe { core::mem::transmute(addr) }
-}
-
-#[cfg(not(windows))]
-#[inline]
-pub(crate) const fn in6_addr_new(s6_addr: [u8; 16]) -> c::in6_addr {
- c::in6_addr { s6_addr }
-}
-
-#[cfg(not(feature = "std"))]
-#[cfg(windows)]
-#[inline]
-pub(crate) const fn in6_addr_new(s6_addr: [u8; 16]) -> c::in6_addr {
- unsafe { core::mem::transmute(s6_addr) }
-}
-
-// TODO: With Rust 1.55, we can use the above `in6_addr_new` definition that
-// uses a const-fn transmute.
-#[cfg(feature = "std")]
-#[cfg(windows)]
-#[inline]
-pub(crate) fn in6_addr_new(s6_addr: [u8; 16]) -> c::in6_addr {
- unsafe { core::mem::transmute(s6_addr) }
-}
-
-#[cfg(not(windows))]
-#[inline]
-pub(crate) const fn sockaddr_in6_sin6_scope_id(addr: c::sockaddr_in6) -> u32 {
- addr.sin6_scope_id
-}
-
-#[cfg(not(feature = "std"))]
-#[cfg(windows)]
-#[inline]
-pub(crate) const fn sockaddr_in6_sin6_scope_id(addr: c::sockaddr_in6) -> u32 {
- let addr: sockaddr_in6 = unsafe { core::mem::transmute(addr) };
- addr.sin6_scope_id
-}
-
-// TODO: With Rust 1.55, we can use the above `sockaddr_in6_sin6_scope_id`
-// definition that uses a const-fn transmute.
-#[cfg(feature = "std")]
-#[cfg(windows)]
-#[inline]
-pub(crate) fn sockaddr_in6_sin6_scope_id(addr: c::sockaddr_in6) -> u32 {
- let addr: sockaddr_in6 = unsafe { core::mem::transmute(addr) };
- addr.sin6_scope_id
-}
-
-#[cfg(not(windows))]
-#[inline]
-pub(crate) const fn sockaddr_in6_new(
- #[cfg(any(bsd, target_os = "haiku"))] sin6_len: u8,
- sin6_family: c::sa_family_t,
- sin6_port: u16,
- sin6_flowinfo: u32,
- sin6_addr: c::in6_addr,
- sin6_scope_id: u32,
-) -> c::sockaddr_in6 {
- c::sockaddr_in6 {
- #[cfg(any(bsd, target_os = "haiku"))]
- sin6_len,
- sin6_family,
- sin6_port,
- sin6_flowinfo,
- sin6_addr,
- sin6_scope_id,
- #[cfg(solarish)]
- __sin6_src_id: 0,
- }
-}
-
-#[cfg(not(feature = "std"))]
-#[cfg(windows)]
-#[inline]
-pub(crate) const fn sockaddr_in6_new(
- sin6_family: u16,
- sin6_port: u16,
- sin6_flowinfo: u32,
- sin6_addr: c::in6_addr,
- sin6_scope_id: u32,
-) -> c::sockaddr_in6 {
- let addr = sockaddr_in6 {
- sin6_family,
- sin6_port,
- sin6_flowinfo,
- sin6_addr,
- sin6_scope_id,
- };
- unsafe { core::mem::transmute(addr) }
-}
-
-// TODO: With Rust 1.55, we can use the above `sockaddr_in6_new` definition
-// that uses a const-fn transmute.
-#[cfg(feature = "std")]
-#[cfg(windows)]
-#[inline]
-pub(crate) fn sockaddr_in6_new(
- sin6_family: u16,
- sin6_port: u16,
- sin6_flowinfo: u32,
- sin6_addr: c::in6_addr,
- sin6_scope_id: u32,
-) -> c::sockaddr_in6 {
- let addr = sockaddr_in6 {
- sin6_family,
- sin6_port,
- sin6_flowinfo,
- sin6_addr,
- sin6_scope_id,
- };
- unsafe { core::mem::transmute(addr) }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/net/mod.rs b/vendor/rustix-0.37.6/src/backend/libc/net/mod.rs
deleted file mode 100644
index f7196ae4f..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/net/mod.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-pub(crate) mod addr;
-pub(crate) mod ext;
-pub(crate) mod read_sockaddr;
-pub(crate) mod send_recv;
-pub(crate) mod syscalls;
-pub(crate) mod types;
-pub(crate) mod write_sockaddr;
diff --git a/vendor/rustix-0.37.6/src/backend/libc/net/read_sockaddr.rs b/vendor/rustix-0.37.6/src/backend/libc/net/read_sockaddr.rs
deleted file mode 100644
index 575102c27..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/net/read_sockaddr.rs
+++ /dev/null
@@ -1,210 +0,0 @@
-use super::super::c;
-#[cfg(unix)]
-use super::addr::SocketAddrUnix;
-use super::ext::{in6_addr_s6_addr, in_addr_s_addr, sockaddr_in6_sin6_scope_id};
-#[cfg(not(windows))]
-use crate::ffi::CStr;
-use crate::io;
-use crate::net::{Ipv4Addr, Ipv6Addr, SocketAddrAny, SocketAddrV4, SocketAddrV6};
-#[cfg(not(windows))]
-use alloc::vec::Vec;
-use core::mem::size_of;
-
-// This must match the header of `sockaddr`.
-#[repr(C)]
-struct sockaddr_header {
- #[cfg(any(bsd, target_os = "haiku"))]
- sa_len: u8,
- #[cfg(any(bsd, target_os = "haiku"))]
- ss_family: u8,
- #[cfg(not(any(bsd, target_os = "haiku")))]
- ss_family: u16,
-}
-
-#[inline]
-unsafe fn read_ss_family(storage: *const c::sockaddr_storage) -> u16 {
- // Assert that we know the layout of `sockaddr`.
- let _ = c::sockaddr {
- #[cfg(any(bsd, target_os = "haiku"))]
- sa_len: 0_u8,
- #[cfg(any(bsd, target_os = "haiku"))]
- sa_family: 0_u8,
- #[cfg(not(any(bsd, target_os = "haiku")))]
- sa_family: 0_u16,
- #[cfg(not(target_os = "haiku"))]
- sa_data: [0; 14],
- #[cfg(target_os = "haiku")]
- sa_data: [0; 30],
- };
-
- (*storage.cast::<sockaddr_header>()).ss_family.into()
-}
-
-/// Set the `ss_family` field of a socket address to `AF_UNSPEC`, so that we
-/// can test for `AF_UNSPEC` to test whether it was stored to.
-pub(crate) unsafe fn initialize_family_to_unspec(storage: *mut c::sockaddr_storage) {
- (*storage.cast::<sockaddr_header>()).ss_family = c::AF_UNSPEC as _;
-}
-
-pub(crate) unsafe fn read_sockaddr(
- storage: *const c::sockaddr_storage,
- len: usize,
-) -> io::Result<SocketAddrAny> {
- #[cfg(unix)]
- let offsetof_sun_path = super::addr::offsetof_sun_path();
-
- if len < size_of::<c::sa_family_t>() {
- return Err(io::Errno::INVAL);
- }
- match read_ss_family(storage).into() {
- c::AF_INET => {
- if len < size_of::<c::sockaddr_in>() {
- return Err(io::Errno::INVAL);
- }
- let decode = *storage.cast::<c::sockaddr_in>();
- Ok(SocketAddrAny::V4(SocketAddrV4::new(
- Ipv4Addr::from(u32::from_be(in_addr_s_addr(decode.sin_addr))),
- u16::from_be(decode.sin_port),
- )))
- }
- c::AF_INET6 => {
- if len < size_of::<c::sockaddr_in6>() {
- return Err(io::Errno::INVAL);
- }
- let decode = *storage.cast::<c::sockaddr_in6>();
- #[cfg(not(windows))]
- let s6_addr = decode.sin6_addr.s6_addr;
- #[cfg(windows)]
- let s6_addr = decode.sin6_addr.u.Byte;
- #[cfg(not(windows))]
- let sin6_scope_id = decode.sin6_scope_id;
- #[cfg(windows)]
- let sin6_scope_id = decode.Anonymous.sin6_scope_id;
- Ok(SocketAddrAny::V6(SocketAddrV6::new(
- Ipv6Addr::from(s6_addr),
- u16::from_be(decode.sin6_port),
- u32::from_be(decode.sin6_flowinfo),
- sin6_scope_id,
- )))
- }
- #[cfg(unix)]
- c::AF_UNIX => {
- if len < offsetof_sun_path {
- return Err(io::Errno::INVAL);
- }
- if len == offsetof_sun_path {
- Ok(SocketAddrAny::Unix(SocketAddrUnix::new(&[][..]).unwrap()))
- } else {
- let decode = *storage.cast::<c::sockaddr_un>();
-
- // Trim off unused bytes from the end of `path_bytes`.
- let path_bytes = if cfg!(target_os = "freebsd") {
- // FreeBSD sometimes sets the length to longer than the length
- // of the NUL-terminated string. Find the NUL and truncate the
- // string accordingly.
- &decode.sun_path[..decode.sun_path.iter().position(|b| *b == 0).unwrap()]
- } else {
- // Otherwise, use the provided length.
- let provided_len = len - 1 - offsetof_sun_path;
- if decode.sun_path[provided_len] != b'\0' as c::c_char {
- return Err(io::Errno::INVAL);
- }
- debug_assert_eq!(
- CStr::from_ptr(decode.sun_path.as_ptr()).to_bytes().len(),
- provided_len
- );
- &decode.sun_path[..provided_len]
- };
-
- Ok(SocketAddrAny::Unix(
- SocketAddrUnix::new(path_bytes.iter().map(|c| *c as u8).collect::<Vec<u8>>())
- .unwrap(),
- ))
- }
- }
- _ => Err(io::Errno::INVAL),
- }
-}
-
-pub(crate) unsafe fn maybe_read_sockaddr_os(
- storage: *const c::sockaddr_storage,
- len: usize,
-) -> Option<SocketAddrAny> {
- if len == 0 {
- return None;
- }
-
- assert!(len >= size_of::<c::sa_family_t>());
- let family = read_ss_family(storage).into();
- if family == c::AF_UNSPEC {
- None
- } else {
- Some(inner_read_sockaddr_os(family, storage, len))
- }
-}
-
-pub(crate) unsafe fn read_sockaddr_os(
- storage: *const c::sockaddr_storage,
- len: usize,
-) -> SocketAddrAny {
- assert!(len >= size_of::<c::sa_family_t>());
- let family = read_ss_family(storage).into();
- inner_read_sockaddr_os(family, storage, len)
-}
-
-unsafe fn inner_read_sockaddr_os(
- family: c::c_int,
- storage: *const c::sockaddr_storage,
- len: usize,
-) -> SocketAddrAny {
- #[cfg(unix)]
- let offsetof_sun_path = super::addr::offsetof_sun_path();
-
- assert!(len >= size_of::<c::sa_family_t>());
- match family {
- c::AF_INET => {
- assert!(len >= size_of::<c::sockaddr_in>());
- let decode = *storage.cast::<c::sockaddr_in>();
- SocketAddrAny::V4(SocketAddrV4::new(
- Ipv4Addr::from(u32::from_be(in_addr_s_addr(decode.sin_addr))),
- u16::from_be(decode.sin_port),
- ))
- }
- c::AF_INET6 => {
- assert!(len >= size_of::<c::sockaddr_in6>());
- let decode = *storage.cast::<c::sockaddr_in6>();
- SocketAddrAny::V6(SocketAddrV6::new(
- Ipv6Addr::from(in6_addr_s6_addr(decode.sin6_addr)),
- u16::from_be(decode.sin6_port),
- u32::from_be(decode.sin6_flowinfo),
- sockaddr_in6_sin6_scope_id(decode),
- ))
- }
- #[cfg(unix)]
- c::AF_UNIX => {
- assert!(len >= offsetof_sun_path);
- if len == offsetof_sun_path {
- SocketAddrAny::Unix(SocketAddrUnix::new(&[][..]).unwrap())
- } else {
- let decode = *storage.cast::<c::sockaddr_un>();
- assert_eq!(
- decode.sun_path[len - 1 - offsetof_sun_path],
- b'\0' as c::c_char
- );
- let path_bytes = &decode.sun_path[..len - 1 - offsetof_sun_path];
-
- // FreeBSD sometimes sets the length to longer than the length
- // of the NUL-terminated string. Find the NUL and truncate the
- // string accordingly.
- #[cfg(target_os = "freebsd")]
- let path_bytes = &path_bytes[..path_bytes.iter().position(|b| *b == 0).unwrap()];
-
- SocketAddrAny::Unix(
- SocketAddrUnix::new(path_bytes.iter().map(|c| *c as u8).collect::<Vec<u8>>())
- .unwrap(),
- )
- }
- }
- other => unimplemented!("{:?}", other),
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/net/send_recv.rs b/vendor/rustix-0.37.6/src/backend/libc/net/send_recv.rs
deleted file mode 100644
index 114807808..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/net/send_recv.rs
+++ /dev/null
@@ -1,65 +0,0 @@
-use super::super::c;
-use bitflags::bitflags;
-
-bitflags! {
- /// `MSG_*`
- pub struct SendFlags: i32 {
- /// `MSG_CONFIRM`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- const CONFIRM = c::MSG_CONFIRM;
- /// `MSG_DONTROUTE`
- const DONTROUTE = c::MSG_DONTROUTE;
- /// `MSG_DONTWAIT`
- #[cfg(not(windows))]
- const DONTWAIT = c::MSG_DONTWAIT;
- /// `MSG_EOR`
- #[cfg(not(windows))]
- const EOT = c::MSG_EOR;
- /// `MSG_MORE`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- const MORE = c::MSG_MORE;
- #[cfg(not(any(apple, windows)))]
- /// `MSG_NOSIGNAL`
- const NOSIGNAL = c::MSG_NOSIGNAL;
- /// `MSG_OOB`
- const OOB = c::MSG_OOB;
- }
-}
-
-bitflags! {
- /// `MSG_*`
- pub struct RecvFlags: i32 {
- #[cfg(not(any(apple, solarish, windows, target_os = "haiku")))]
- /// `MSG_CMSG_CLOEXEC`
- const CMSG_CLOEXEC = c::MSG_CMSG_CLOEXEC;
- /// `MSG_DONTWAIT`
- #[cfg(not(windows))]
- const DONTWAIT = c::MSG_DONTWAIT;
- /// `MSG_ERRQUEUE`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- const ERRQUEUE = c::MSG_ERRQUEUE;
- /// `MSG_OOB`
- const OOB = c::MSG_OOB;
- /// `MSG_PEEK`
- const PEEK = c::MSG_PEEK;
- /// `MSG_TRUNC`
- const TRUNC = c::MSG_TRUNC as c::c_int;
- /// `MSG_WAITALL`
- const WAITALL = c::MSG_WAITALL;
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/net/syscalls.rs b/vendor/rustix-0.37.6/src/backend/libc/net/syscalls.rs
deleted file mode 100644
index ed4494394..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/net/syscalls.rs
+++ /dev/null
@@ -1,863 +0,0 @@
-//! libc syscalls supporting `rustix::net`.
-
-use super::super::c;
-use super::super::conv::{borrowed_fd, ret, ret_owned_fd, ret_send_recv, send_recv_len};
-#[cfg(unix)]
-use super::addr::SocketAddrUnix;
-use super::ext::{in6_addr_new, in_addr_new};
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-use super::read_sockaddr::initialize_family_to_unspec;
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-use super::read_sockaddr::{maybe_read_sockaddr_os, read_sockaddr_os};
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-use super::send_recv::{RecvFlags, SendFlags};
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-use super::types::{AcceptFlags, AddressFamily, Protocol, Shutdown, SocketFlags, SocketType};
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-use super::write_sockaddr::{encode_sockaddr_v4, encode_sockaddr_v6};
-use crate::fd::{BorrowedFd, OwnedFd};
-use crate::io;
-use crate::net::{SocketAddrAny, SocketAddrV4, SocketAddrV6};
-use crate::utils::as_ptr;
-use core::convert::TryInto;
-use core::mem::{size_of, MaybeUninit};
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-use core::ptr::null_mut;
-
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-pub(crate) fn recv(fd: BorrowedFd<'_>, buf: &mut [u8], flags: RecvFlags) -> io::Result<usize> {
- let nrecv = unsafe {
- ret_send_recv(c::recv(
- borrowed_fd(fd),
- buf.as_mut_ptr().cast(),
- send_recv_len(buf.len()),
- flags.bits(),
- ))?
- };
- Ok(nrecv as usize)
-}
-
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-pub(crate) fn send(fd: BorrowedFd<'_>, buf: &[u8], flags: SendFlags) -> io::Result<usize> {
- let nwritten = unsafe {
- ret_send_recv(c::send(
- borrowed_fd(fd),
- buf.as_ptr().cast(),
- send_recv_len(buf.len()),
- flags.bits(),
- ))?
- };
- Ok(nwritten as usize)
-}
-
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-pub(crate) fn recvfrom(
- fd: BorrowedFd<'_>,
- buf: &mut [u8],
- flags: RecvFlags,
-) -> io::Result<(usize, Option<SocketAddrAny>)> {
- unsafe {
- let mut storage = MaybeUninit::<c::sockaddr_storage>::uninit();
- let mut len = size_of::<c::sockaddr_storage>() as c::socklen_t;
-
- // `recvfrom` does not write to the storage if the socket is
- // connection-oriented sockets, so we initialize the family field to
- // `AF_UNSPEC` so that we can detect this case.
- initialize_family_to_unspec(storage.as_mut_ptr());
-
- let nread = ret_send_recv(c::recvfrom(
- borrowed_fd(fd),
- buf.as_mut_ptr().cast(),
- send_recv_len(buf.len()),
- flags.bits(),
- storage.as_mut_ptr().cast(),
- &mut len,
- ))?;
- Ok((
- nread as usize,
- maybe_read_sockaddr_os(storage.as_ptr(), len.try_into().unwrap()),
- ))
- }
-}
-
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-pub(crate) fn sendto_v4(
- fd: BorrowedFd<'_>,
- buf: &[u8],
- flags: SendFlags,
- addr: &SocketAddrV4,
-) -> io::Result<usize> {
- let nwritten = unsafe {
- ret_send_recv(c::sendto(
- borrowed_fd(fd),
- buf.as_ptr().cast(),
- send_recv_len(buf.len()),
- flags.bits(),
- as_ptr(&encode_sockaddr_v4(addr)).cast::<c::sockaddr>(),
- size_of::<SocketAddrV4>() as _,
- ))?
- };
- Ok(nwritten as usize)
-}
-
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-pub(crate) fn sendto_v6(
- fd: BorrowedFd<'_>,
- buf: &[u8],
- flags: SendFlags,
- addr: &SocketAddrV6,
-) -> io::Result<usize> {
- let nwritten = unsafe {
- ret_send_recv(c::sendto(
- borrowed_fd(fd),
- buf.as_ptr().cast(),
- send_recv_len(buf.len()),
- flags.bits(),
- as_ptr(&encode_sockaddr_v6(addr)).cast::<c::sockaddr>(),
- size_of::<SocketAddrV6>() as _,
- ))?
- };
- Ok(nwritten as usize)
-}
-
-#[cfg(not(any(windows, target_os = "redox", target_os = "wasi")))]
-pub(crate) fn sendto_unix(
- fd: BorrowedFd<'_>,
- buf: &[u8],
- flags: SendFlags,
- addr: &SocketAddrUnix,
-) -> io::Result<usize> {
- let nwritten = unsafe {
- ret_send_recv(c::sendto(
- borrowed_fd(fd),
- buf.as_ptr().cast(),
- send_recv_len(buf.len()),
- flags.bits(),
- as_ptr(&addr.unix).cast(),
- addr.addr_len(),
- ))?
- };
- Ok(nwritten as usize)
-}
-
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-pub(crate) fn socket(
- domain: AddressFamily,
- type_: SocketType,
- protocol: Protocol,
-) -> io::Result<OwnedFd> {
- unsafe {
- ret_owned_fd(c::socket(
- domain.0 as c::c_int,
- type_.0 as c::c_int,
- protocol.0,
- ))
- }
-}
-
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-pub(crate) fn socket_with(
- domain: AddressFamily,
- type_: SocketType,
- flags: SocketFlags,
- protocol: Protocol,
-) -> io::Result<OwnedFd> {
- unsafe {
- ret_owned_fd(c::socket(
- domain.0 as c::c_int,
- type_.0 as c::c_int | flags.bits(),
- protocol.0,
- ))
- }
-}
-
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-pub(crate) fn bind_v4(sockfd: BorrowedFd<'_>, addr: &SocketAddrV4) -> io::Result<()> {
- unsafe {
- ret(c::bind(
- borrowed_fd(sockfd),
- as_ptr(&encode_sockaddr_v4(addr)).cast(),
- size_of::<c::sockaddr_in>() as c::socklen_t,
- ))
- }
-}
-
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-pub(crate) fn bind_v6(sockfd: BorrowedFd<'_>, addr: &SocketAddrV6) -> io::Result<()> {
- unsafe {
- ret(c::bind(
- borrowed_fd(sockfd),
- as_ptr(&encode_sockaddr_v6(addr)).cast(),
- size_of::<c::sockaddr_in6>() as c::socklen_t,
- ))
- }
-}
-
-#[cfg(not(any(windows, target_os = "redox", target_os = "wasi")))]
-pub(crate) fn bind_unix(sockfd: BorrowedFd<'_>, addr: &SocketAddrUnix) -> io::Result<()> {
- unsafe {
- ret(c::bind(
- borrowed_fd(sockfd),
- as_ptr(&addr.unix).cast(),
- addr.addr_len(),
- ))
- }
-}
-
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-pub(crate) fn connect_v4(sockfd: BorrowedFd<'_>, addr: &SocketAddrV4) -> io::Result<()> {
- unsafe {
- ret(c::connect(
- borrowed_fd(sockfd),
- as_ptr(&encode_sockaddr_v4(addr)).cast(),
- size_of::<c::sockaddr_in>() as c::socklen_t,
- ))
- }
-}
-
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-pub(crate) fn connect_v6(sockfd: BorrowedFd<'_>, addr: &SocketAddrV6) -> io::Result<()> {
- unsafe {
- ret(c::connect(
- borrowed_fd(sockfd),
- as_ptr(&encode_sockaddr_v6(addr)).cast(),
- size_of::<c::sockaddr_in6>() as c::socklen_t,
- ))
- }
-}
-
-#[cfg(not(any(windows, target_os = "redox", target_os = "wasi")))]
-pub(crate) fn connect_unix(sockfd: BorrowedFd<'_>, addr: &SocketAddrUnix) -> io::Result<()> {
- unsafe {
- ret(c::connect(
- borrowed_fd(sockfd),
- as_ptr(&addr.unix).cast(),
- addr.addr_len(),
- ))
- }
-}
-
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-pub(crate) fn listen(sockfd: BorrowedFd<'_>, backlog: c::c_int) -> io::Result<()> {
- unsafe { ret(c::listen(borrowed_fd(sockfd), backlog)) }
-}
-
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-pub(crate) fn accept(sockfd: BorrowedFd<'_>) -> io::Result<OwnedFd> {
- unsafe {
- let owned_fd = ret_owned_fd(c::accept(borrowed_fd(sockfd), null_mut(), null_mut()))?;
- Ok(owned_fd)
- }
-}
-
-#[cfg(not(any(
- apple,
- windows,
- target_os = "haiku",
- target_os = "redox",
- target_os = "wasi",
-)))]
-pub(crate) fn accept_with(sockfd: BorrowedFd<'_>, flags: AcceptFlags) -> io::Result<OwnedFd> {
- unsafe {
- let owned_fd = ret_owned_fd(c::accept4(
- borrowed_fd(sockfd),
- null_mut(),
- null_mut(),
- flags.bits(),
- ))?;
- Ok(owned_fd)
- }
-}
-
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-pub(crate) fn acceptfrom(sockfd: BorrowedFd<'_>) -> io::Result<(OwnedFd, Option<SocketAddrAny>)> {
- unsafe {
- let mut storage = MaybeUninit::<c::sockaddr_storage>::uninit();
- let mut len = size_of::<c::sockaddr_storage>() as c::socklen_t;
- let owned_fd = ret_owned_fd(c::accept(
- borrowed_fd(sockfd),
- storage.as_mut_ptr().cast(),
- &mut len,
- ))?;
- Ok((
- owned_fd,
- maybe_read_sockaddr_os(storage.as_ptr(), len.try_into().unwrap()),
- ))
- }
-}
-
-#[cfg(not(any(
- apple,
- windows,
- target_os = "haiku",
- target_os = "redox",
- target_os = "wasi",
-)))]
-pub(crate) fn acceptfrom_with(
- sockfd: BorrowedFd<'_>,
- flags: AcceptFlags,
-) -> io::Result<(OwnedFd, Option<SocketAddrAny>)> {
- unsafe {
- let mut storage = MaybeUninit::<c::sockaddr_storage>::uninit();
- let mut len = size_of::<c::sockaddr_storage>() as c::socklen_t;
- let owned_fd = ret_owned_fd(c::accept4(
- borrowed_fd(sockfd),
- storage.as_mut_ptr().cast(),
- &mut len,
- flags.bits(),
- ))?;
- Ok((
- owned_fd,
- maybe_read_sockaddr_os(storage.as_ptr(), len.try_into().unwrap()),
- ))
- }
-}
-
-/// Darwin lacks `accept4`, but does have `accept`. We define
-/// `AcceptFlags` to have no flags, so we can discard it here.
-#[cfg(any(apple, windows, target_os = "haiku"))]
-pub(crate) fn accept_with(sockfd: BorrowedFd<'_>, _flags: AcceptFlags) -> io::Result<OwnedFd> {
- accept(sockfd)
-}
-
-/// Darwin lacks `accept4`, but does have `accept`. We define
-/// `AcceptFlags` to have no flags, so we can discard it here.
-#[cfg(any(apple, windows, target_os = "haiku"))]
-pub(crate) fn acceptfrom_with(
- sockfd: BorrowedFd<'_>,
- _flags: AcceptFlags,
-) -> io::Result<(OwnedFd, Option<SocketAddrAny>)> {
- acceptfrom(sockfd)
-}
-
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-pub(crate) fn shutdown(sockfd: BorrowedFd<'_>, how: Shutdown) -> io::Result<()> {
- unsafe { ret(c::shutdown(borrowed_fd(sockfd), how as c::c_int)) }
-}
-
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-pub(crate) fn getsockname(sockfd: BorrowedFd<'_>) -> io::Result<SocketAddrAny> {
- unsafe {
- let mut storage = MaybeUninit::<c::sockaddr_storage>::uninit();
- let mut len = size_of::<c::sockaddr_storage>() as c::socklen_t;
- ret(c::getsockname(
- borrowed_fd(sockfd),
- storage.as_mut_ptr().cast(),
- &mut len,
- ))?;
- Ok(read_sockaddr_os(storage.as_ptr(), len.try_into().unwrap()))
- }
-}
-
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-pub(crate) fn getpeername(sockfd: BorrowedFd<'_>) -> io::Result<Option<SocketAddrAny>> {
- unsafe {
- let mut storage = MaybeUninit::<c::sockaddr_storage>::uninit();
- let mut len = size_of::<c::sockaddr_storage>() as c::socklen_t;
- ret(c::getpeername(
- borrowed_fd(sockfd),
- storage.as_mut_ptr().cast(),
- &mut len,
- ))?;
- Ok(maybe_read_sockaddr_os(
- storage.as_ptr(),
- len.try_into().unwrap(),
- ))
- }
-}
-
-#[cfg(not(any(windows, target_os = "redox", target_os = "wasi")))]
-pub(crate) fn socketpair(
- domain: AddressFamily,
- type_: SocketType,
- flags: SocketFlags,
- protocol: Protocol,
-) -> io::Result<(OwnedFd, OwnedFd)> {
- unsafe {
- let mut fds = MaybeUninit::<[OwnedFd; 2]>::uninit();
- ret(c::socketpair(
- c::c_int::from(domain.0),
- type_.0 as c::c_int | flags.bits(),
- protocol.0,
- fds.as_mut_ptr().cast::<c::c_int>(),
- ))?;
-
- let [fd0, fd1] = fds.assume_init();
- Ok((fd0, fd1))
- }
-}
-
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-pub(crate) mod sockopt {
- use super::{c, in6_addr_new, in_addr_new, BorrowedFd};
- use crate::io;
- use crate::net::sockopt::Timeout;
- use crate::net::{Ipv4Addr, Ipv6Addr, SocketType};
- use crate::utils::as_mut_ptr;
- use core::convert::TryInto;
- use core::time::Duration;
- #[cfg(windows)]
- use windows_sys::Win32::Foundation::BOOL;
-
- // TODO: With Rust 1.53 we can use `Duration::ZERO` instead.
- const DURATION_ZERO: Duration = Duration::from_secs(0);
-
- #[inline]
- fn getsockopt<T: Copy>(fd: BorrowedFd<'_>, level: i32, optname: i32) -> io::Result<T> {
- use super::*;
-
- let mut optlen = core::mem::size_of::<T>().try_into().unwrap();
- debug_assert!(
- optlen as usize >= core::mem::size_of::<c::c_int>(),
- "Socket APIs don't ever use `bool` directly"
- );
-
- unsafe {
- let mut value = core::mem::zeroed::<T>();
- ret(c::getsockopt(
- borrowed_fd(fd),
- level,
- optname,
- as_mut_ptr(&mut value).cast(),
- &mut optlen,
- ))?;
- // On Windows at least, `getsockopt` has been observed writing 1
- // byte on at least (`IPPROTO_TCP`, `TCP_NODELAY`), even though
- // Windows' documentation says that should write a 4-byte `BOOL`.
- // So, we initialize the memory to zeros above, and just assert
- // that `getsockopt` doesn't write too many bytes here.
- assert!(
- optlen as usize <= size_of::<T>(),
- "unexpected getsockopt size"
- );
- Ok(value)
- }
- }
-
- #[inline]
- fn setsockopt<T: Copy>(
- fd: BorrowedFd<'_>,
- level: i32,
- optname: i32,
- value: T,
- ) -> io::Result<()> {
- use super::*;
-
- let optlen = core::mem::size_of::<T>().try_into().unwrap();
- debug_assert!(
- optlen as usize >= core::mem::size_of::<c::c_int>(),
- "Socket APIs don't ever use `bool` directly"
- );
-
- unsafe {
- ret(c::setsockopt(
- borrowed_fd(fd),
- level,
- optname,
- as_ptr(&value).cast(),
- optlen,
- ))
- }
- }
-
- #[inline]
- pub(crate) fn get_socket_type(fd: BorrowedFd<'_>) -> io::Result<SocketType> {
- getsockopt(fd, c::SOL_SOCKET as _, c::SO_TYPE)
- }
-
- #[inline]
- pub(crate) fn set_socket_reuseaddr(fd: BorrowedFd<'_>, reuseaddr: bool) -> io::Result<()> {
- setsockopt(
- fd,
- c::SOL_SOCKET as _,
- c::SO_REUSEADDR,
- from_bool(reuseaddr),
- )
- }
-
- #[inline]
- pub(crate) fn set_socket_broadcast(fd: BorrowedFd<'_>, broadcast: bool) -> io::Result<()> {
- setsockopt(
- fd,
- c::SOL_SOCKET as _,
- c::SO_BROADCAST,
- from_bool(broadcast),
- )
- }
-
- #[inline]
- pub(crate) fn get_socket_broadcast(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::SOL_SOCKET as _, c::SO_BROADCAST).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_socket_linger(
- fd: BorrowedFd<'_>,
- linger: Option<Duration>,
- ) -> io::Result<()> {
- // Convert `linger` to seconds, rounding up.
- let l_linger = if let Some(linger) = linger {
- let mut l_linger = linger.as_secs();
- if linger.subsec_nanos() != 0 {
- l_linger = l_linger.checked_add(1).ok_or(io::Errno::INVAL)?;
- }
- l_linger.try_into().map_err(|_e| io::Errno::INVAL)?
- } else {
- 0
- };
- let linger = c::linger {
- l_onoff: linger.is_some() as _,
- l_linger,
- };
- setsockopt(fd, c::SOL_SOCKET as _, c::SO_LINGER, linger)
- }
-
- #[inline]
- pub(crate) fn get_socket_linger(fd: BorrowedFd<'_>) -> io::Result<Option<Duration>> {
- let linger: c::linger = getsockopt(fd, c::SOL_SOCKET as _, c::SO_LINGER)?;
- // TODO: With Rust 1.50, this could use `.then`.
- Ok(if linger.l_onoff != 0 {
- Some(Duration::from_secs(linger.l_linger as u64))
- } else {
- None
- })
- }
-
- #[cfg(any(target_os = "android", target_os = "linux"))]
- #[inline]
- pub(crate) fn set_socket_passcred(fd: BorrowedFd<'_>, passcred: bool) -> io::Result<()> {
- setsockopt(fd, c::SOL_SOCKET as _, c::SO_PASSCRED, from_bool(passcred))
- }
-
- #[cfg(any(target_os = "android", target_os = "linux"))]
- #[inline]
- pub(crate) fn get_socket_passcred(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::SOL_SOCKET as _, c::SO_PASSCRED).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_socket_timeout(
- fd: BorrowedFd<'_>,
- id: Timeout,
- timeout: Option<Duration>,
- ) -> io::Result<()> {
- let optname = match id {
- Timeout::Recv => c::SO_RCVTIMEO,
- Timeout::Send => c::SO_SNDTIMEO,
- };
-
- #[cfg(not(windows))]
- let timeout = match timeout {
- Some(timeout) => {
- if timeout == DURATION_ZERO {
- return Err(io::Errno::INVAL);
- }
-
- // Rust's musl libc bindings deprecated `time_t` while they
- // transition to 64-bit `time_t`. What we want here is just
- // "whatever type `timeval`'s `tv_sec` is", so we're ok using
- // the deprecated type.
- #[allow(deprecated)]
- let tv_sec = timeout.as_secs().try_into().unwrap_or(c::time_t::MAX);
-
- // `subsec_micros` rounds down, so we use `subsec_nanos` and
- // manually round up.
- let mut timeout = c::timeval {
- tv_sec,
- tv_usec: ((timeout.subsec_nanos() + 999) / 1000) as _,
- };
- if timeout.tv_sec == 0 && timeout.tv_usec == 0 {
- timeout.tv_usec = 1;
- }
- timeout
- }
- None => c::timeval {
- tv_sec: 0,
- tv_usec: 0,
- },
- };
-
- #[cfg(windows)]
- let timeout: u32 = match timeout {
- Some(timeout) => {
- if timeout == DURATION_ZERO {
- return Err(io::Errno::INVAL);
- }
-
- // `as_millis` rounds down, so we use `as_nanos` and
- // manually round up.
- let mut timeout: u32 = ((timeout.as_nanos() + 999_999) / 1_000_000)
- .try_into()
- .map_err(|_convert_err| io::Errno::INVAL)?;
- if timeout == 0 {
- timeout = 1;
- }
- timeout
- }
- None => 0,
- };
-
- setsockopt(fd, c::SOL_SOCKET, optname, timeout)
- }
-
- #[inline]
- pub(crate) fn get_socket_timeout(
- fd: BorrowedFd<'_>,
- id: Timeout,
- ) -> io::Result<Option<Duration>> {
- let optname = match id {
- Timeout::Recv => c::SO_RCVTIMEO,
- Timeout::Send => c::SO_SNDTIMEO,
- };
-
- #[cfg(not(windows))]
- {
- let timeout: c::timeval = getsockopt(fd, c::SOL_SOCKET, optname)?;
- if timeout.tv_sec == 0 && timeout.tv_usec == 0 {
- Ok(None)
- } else {
- Ok(Some(
- Duration::from_secs(timeout.tv_sec as u64)
- + Duration::from_micros(timeout.tv_usec as u64),
- ))
- }
- }
-
- #[cfg(windows)]
- {
- let timeout: u32 = getsockopt(fd, c::SOL_SOCKET, optname)?;
- if timeout == 0 {
- Ok(None)
- } else {
- Ok(Some(Duration::from_millis(timeout as u64)))
- }
- }
- }
-
- #[cfg(any(apple, target_os = "freebsd"))]
- #[inline]
- pub(crate) fn getsockopt_nosigpipe(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::SOL_SOCKET, c::SO_NOSIGPIPE).map(to_bool)
- }
-
- #[cfg(any(apple, target_os = "freebsd"))]
- #[inline]
- pub(crate) fn setsockopt_nosigpipe(fd: BorrowedFd<'_>, val: bool) -> io::Result<()> {
- setsockopt(fd, c::SOL_SOCKET, c::SO_NOSIGPIPE, from_bool(val))
- }
-
- #[inline]
- pub(crate) fn get_socket_error(fd: BorrowedFd<'_>) -> io::Result<Result<(), crate::io::Errno>> {
- let err: c::c_int = getsockopt(fd, c::SOL_SOCKET as _, c::SO_ERROR)?;
- Ok(if err == 0 {
- Ok(())
- } else {
- Err(crate::io::Errno::from_raw_os_error(err))
- })
- }
-
- #[inline]
- pub(crate) fn set_ip_ttl(fd: BorrowedFd<'_>, ttl: u32) -> io::Result<()> {
- setsockopt(fd, c::IPPROTO_IP as _, c::IP_TTL, ttl)
- }
-
- #[inline]
- pub(crate) fn get_ip_ttl(fd: BorrowedFd<'_>) -> io::Result<u32> {
- getsockopt(fd, c::IPPROTO_IP as _, c::IP_TTL)
- }
-
- #[inline]
- pub(crate) fn set_ipv6_v6only(fd: BorrowedFd<'_>, only_v6: bool) -> io::Result<()> {
- setsockopt(fd, c::IPPROTO_IPV6 as _, c::IPV6_V6ONLY, from_bool(only_v6))
- }
-
- #[inline]
- pub(crate) fn get_ipv6_v6only(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::IPPROTO_IPV6 as _, c::IPV6_V6ONLY).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_ip_multicast_loop(
- fd: BorrowedFd<'_>,
- multicast_loop: bool,
- ) -> io::Result<()> {
- setsockopt(
- fd,
- c::IPPROTO_IP as _,
- c::IP_MULTICAST_LOOP,
- from_bool(multicast_loop),
- )
- }
-
- #[inline]
- pub(crate) fn get_ip_multicast_loop(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::IPPROTO_IP as _, c::IP_MULTICAST_LOOP).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_ip_multicast_ttl(fd: BorrowedFd<'_>, multicast_ttl: u32) -> io::Result<()> {
- setsockopt(fd, c::IPPROTO_IP as _, c::IP_MULTICAST_TTL, multicast_ttl)
- }
-
- #[inline]
- pub(crate) fn get_ip_multicast_ttl(fd: BorrowedFd<'_>) -> io::Result<u32> {
- getsockopt(fd, c::IPPROTO_IP as _, c::IP_MULTICAST_TTL)
- }
-
- #[inline]
- pub(crate) fn set_ipv6_multicast_loop(
- fd: BorrowedFd<'_>,
- multicast_loop: bool,
- ) -> io::Result<()> {
- setsockopt(
- fd,
- c::IPPROTO_IPV6 as _,
- c::IPV6_MULTICAST_LOOP,
- from_bool(multicast_loop),
- )
- }
-
- #[inline]
- pub(crate) fn get_ipv6_multicast_loop(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::IPPROTO_IPV6 as _, c::IPV6_MULTICAST_LOOP).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_ipv6_multicast_hops(
- fd: BorrowedFd<'_>,
- multicast_hops: u32,
- ) -> io::Result<()> {
- setsockopt(
- fd,
- c::IPPROTO_IP as _,
- c::IPV6_MULTICAST_LOOP,
- multicast_hops,
- )
- }
-
- #[inline]
- pub(crate) fn get_ipv6_multicast_hops(fd: BorrowedFd<'_>) -> io::Result<u32> {
- getsockopt(fd, c::IPPROTO_IP as _, c::IPV6_MULTICAST_LOOP)
- }
-
- #[inline]
- pub(crate) fn set_ip_add_membership(
- fd: BorrowedFd<'_>,
- multiaddr: &Ipv4Addr,
- interface: &Ipv4Addr,
- ) -> io::Result<()> {
- let mreq = to_imr(multiaddr, interface);
- setsockopt(fd, c::IPPROTO_IP as _, c::IP_ADD_MEMBERSHIP, mreq)
- }
-
- #[inline]
- pub(crate) fn set_ipv6_add_membership(
- fd: BorrowedFd<'_>,
- multiaddr: &Ipv6Addr,
- interface: u32,
- ) -> io::Result<()> {
- #[cfg(not(any(bsd, solarish, target_os = "haiku", target_os = "l4re")))]
- use c::IPV6_ADD_MEMBERSHIP;
- #[cfg(any(bsd, solarish, target_os = "haiku", target_os = "l4re"))]
- use c::IPV6_JOIN_GROUP as IPV6_ADD_MEMBERSHIP;
-
- let mreq = to_ipv6mr(multiaddr, interface);
- setsockopt(fd, c::IPPROTO_IPV6 as _, IPV6_ADD_MEMBERSHIP, mreq)
- }
-
- #[inline]
- pub(crate) fn set_ip_drop_membership(
- fd: BorrowedFd<'_>,
- multiaddr: &Ipv4Addr,
- interface: &Ipv4Addr,
- ) -> io::Result<()> {
- let mreq = to_imr(multiaddr, interface);
- setsockopt(fd, c::IPPROTO_IP as _, c::IP_DROP_MEMBERSHIP, mreq)
- }
-
- #[inline]
- pub(crate) fn set_ipv6_drop_membership(
- fd: BorrowedFd<'_>,
- multiaddr: &Ipv6Addr,
- interface: u32,
- ) -> io::Result<()> {
- #[cfg(not(any(bsd, solarish, target_os = "haiku", target_os = "l4re")))]
- use c::IPV6_DROP_MEMBERSHIP;
- #[cfg(any(bsd, solarish, target_os = "haiku", target_os = "l4re"))]
- use c::IPV6_LEAVE_GROUP as IPV6_DROP_MEMBERSHIP;
-
- let mreq = to_ipv6mr(multiaddr, interface);
- setsockopt(fd, c::IPPROTO_IPV6 as _, IPV6_DROP_MEMBERSHIP, mreq)
- }
-
- #[inline]
- pub(crate) fn set_tcp_nodelay(fd: BorrowedFd<'_>, nodelay: bool) -> io::Result<()> {
- setsockopt(fd, c::IPPROTO_TCP as _, c::TCP_NODELAY, from_bool(nodelay))
- }
-
- #[inline]
- pub(crate) fn get_tcp_nodelay(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::IPPROTO_TCP as _, c::TCP_NODELAY).map(to_bool)
- }
-
- #[inline]
- fn to_imr(multiaddr: &Ipv4Addr, interface: &Ipv4Addr) -> c::ip_mreq {
- c::ip_mreq {
- imr_multiaddr: to_imr_addr(multiaddr),
- imr_interface: to_imr_addr(interface),
- }
- }
-
- #[inline]
- fn to_imr_addr(addr: &Ipv4Addr) -> c::in_addr {
- in_addr_new(u32::from_ne_bytes(addr.octets()))
- }
-
- #[inline]
- fn to_ipv6mr(multiaddr: &Ipv6Addr, interface: u32) -> c::ipv6_mreq {
- c::ipv6_mreq {
- ipv6mr_multiaddr: to_ipv6mr_multiaddr(multiaddr),
- ipv6mr_interface: to_ipv6mr_interface(interface),
- }
- }
-
- #[inline]
- fn to_ipv6mr_multiaddr(multiaddr: &Ipv6Addr) -> c::in6_addr {
- in6_addr_new(multiaddr.octets())
- }
-
- #[cfg(target_os = "android")]
- #[inline]
- fn to_ipv6mr_interface(interface: u32) -> c::c_int {
- interface as c::c_int
- }
-
- #[cfg(not(target_os = "android"))]
- #[inline]
- fn to_ipv6mr_interface(interface: u32) -> c::c_uint {
- interface as c::c_uint
- }
-
- // `getsockopt` and `setsockopt` represent boolean values as integers.
- #[cfg(not(windows))]
- type RawSocketBool = c::c_int;
- #[cfg(windows)]
- type RawSocketBool = BOOL;
-
- // Wrap `RawSocketBool` in a newtype to discourage misuse.
- #[repr(transparent)]
- #[derive(Copy, Clone)]
- struct SocketBool(RawSocketBool);
-
- // Convert from a `bool` to a `SocketBool`.
- #[inline]
- fn from_bool(value: bool) -> SocketBool {
- SocketBool(value as _)
- }
-
- // Convert from a `SocketBool` to a `bool`.
- #[inline]
- fn to_bool(value: SocketBool) -> bool {
- value.0 != 0
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/net/types.rs b/vendor/rustix-0.37.6/src/backend/libc/net/types.rs
deleted file mode 100644
index 54f60ca50..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/net/types.rs
+++ /dev/null
@@ -1,510 +0,0 @@
-use super::super::c;
-use bitflags::bitflags;
-
-/// A type for holding raw integer socket types.
-#[doc(hidden)]
-pub type RawSocketType = u32;
-
-/// `SOCK_*` constants for use with [`socket`].
-///
-/// [`socket`]: crate::net::socket
-#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
-#[repr(transparent)]
-pub struct SocketType(pub(crate) RawSocketType);
-
-#[rustfmt::skip]
-impl SocketType {
- /// `SOCK_STREAM`
- pub const STREAM: Self = Self(c::SOCK_STREAM as u32);
-
- /// `SOCK_DGRAM`
- pub const DGRAM: Self = Self(c::SOCK_DGRAM as u32);
-
- /// `SOCK_SEQPACKET`
- pub const SEQPACKET: Self = Self(c::SOCK_SEQPACKET as u32);
-
- /// `SOCK_RAW`
- pub const RAW: Self = Self(c::SOCK_RAW as u32);
-
- /// `SOCK_RDM`
- #[cfg(not(target_os = "haiku"))]
- pub const RDM: Self = Self(c::SOCK_RDM as u32);
-
- /// Constructs a `SocketType` from a raw integer.
- #[inline]
- pub const fn from_raw(raw: RawSocketType) -> Self {
- Self(raw)
- }
-
- /// Returns the raw integer for this `SocketType`.
- #[inline]
- pub const fn as_raw(self) -> RawSocketType {
- self.0
- }
-}
-
-/// A type for holding raw integer address families.
-#[doc(hidden)]
-pub type RawAddressFamily = c::sa_family_t;
-
-/// `AF_*` constants.
-#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
-#[repr(transparent)]
-pub struct AddressFamily(pub(crate) RawAddressFamily);
-
-#[rustfmt::skip]
-impl AddressFamily {
- /// `AF_UNSPEC`
- pub const UNSPEC: Self = Self(c::AF_UNSPEC as _);
- /// `AF_INET`
- pub const INET: Self = Self(c::AF_INET as _);
- /// `AF_INET6`
- pub const INET6: Self = Self(c::AF_INET6 as _);
- /// `AF_NETLINK`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- pub const NETLINK: Self = Self(c::AF_NETLINK as _);
- /// `AF_UNIX`, aka `AF_LOCAL`
- #[doc(alias = "LOCAL")]
- pub const UNIX: Self = Self(c::AF_UNIX as _);
- /// `AF_AX25`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- pub const AX25: Self = Self(c::AF_AX25 as _);
- /// `AF_IPX`
- pub const IPX: Self = Self(c::AF_IPX as _);
- /// `AF_APPLETALK`
- pub const APPLETALK: Self = Self(c::AF_APPLETALK as _);
- /// `AF_NETROM`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- pub const NETROM: Self = Self(c::AF_NETROM as _);
- /// `AF_BRIDGE`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- pub const BRIDGE: Self = Self(c::AF_BRIDGE as _);
- /// `AF_ATMPVC`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- pub const ATMPVC: Self = Self(c::AF_ATMPVC as _);
- /// `AF_X25`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "haiku",
- )))]
- pub const X25: Self = Self(c::AF_X25 as _);
- /// `AF_ROSE`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- pub const ROSE: Self = Self(c::AF_ROSE as _);
- /// `AF_DECnet`
- #[allow(non_upper_case_globals)]
- #[cfg(not(target_os = "haiku"))]
- pub const DECnet: Self = Self(c::AF_DECnet as _);
- /// `AF_NETBEUI`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- pub const NETBEUI: Self = Self(c::AF_NETBEUI as _);
- /// `AF_SECURITY`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- pub const SECURITY: Self = Self(c::AF_SECURITY as _);
- /// `AF_KEY`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "haiku",
- )))]
- pub const KEY: Self = Self(c::AF_KEY as _);
- /// `AF_PACKET`
- #[cfg(not(any(
- bsd,
- windows,
- target_os = "haiku",
- )))]
- pub const PACKET: Self = Self(c::AF_PACKET as _);
- /// `AF_ASH`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- pub const ASH: Self = Self(c::AF_ASH as _);
- /// `AF_ECONET`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- pub const ECONET: Self = Self(c::AF_ECONET as _);
- /// `AF_ATMSVC`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- pub const ATMSVC: Self = Self(c::AF_ATMSVC as _);
- /// `AF_RDS`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- pub const RDS: Self = Self(c::AF_RDS as _);
- /// `AF_SNA`
- #[cfg(not(target_os = "haiku"))]
- pub const SNA: Self = Self(c::AF_SNA as _);
- /// `AF_IRDA`
- #[cfg(not(any(
- bsd,
- solarish,
- target_os = "haiku",
- )))]
- pub const IRDA: Self = Self(c::AF_IRDA as _);
- /// `AF_PPPOX`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- pub const PPPOX: Self = Self(c::AF_PPPOX as _);
- /// `AF_WANPIPE`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- pub const WANPIPE: Self = Self(c::AF_WANPIPE as _);
- /// `AF_LLC`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- pub const LLC: Self = Self(c::AF_LLC as _);
- /// `AF_CAN`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- pub const CAN: Self = Self(c::AF_CAN as _);
- /// `AF_TIPC`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- pub const TIPC: Self = Self(c::AF_TIPC as _);
- /// `AF_BLUETOOTH`
- #[cfg(not(any(apple, solarish, windows)))]
- pub const BLUETOOTH: Self = Self(c::AF_BLUETOOTH as _);
- /// `AF_IUCV`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- pub const IUCV: Self = Self(c::AF_IUCV as _);
- /// `AF_RXRPC`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- pub const RXRPC: Self = Self(c::AF_RXRPC as _);
- /// `AF_ISDN`
- #[cfg(not(any(solarish, windows, target_os = "haiku")))]
- pub const ISDN: Self = Self(c::AF_ISDN as _);
- /// `AF_PHONET`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- pub const PHONET: Self = Self(c::AF_PHONET as _);
- /// `AF_IEEE802154`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- pub const IEEE802154: Self = Self(c::AF_IEEE802154 as _);
-
- /// Constructs a `AddressFamily` from a raw integer.
- #[inline]
- pub const fn from_raw(raw: RawAddressFamily) -> Self {
- Self(raw)
- }
-
- /// Returns the raw integer for this `AddressFamily`.
- #[inline]
- pub const fn as_raw(self) -> RawAddressFamily {
- self.0
- }
-}
-
-/// A type for holding raw integer protocols.
-#[doc(hidden)]
-pub type RawProtocol = i32;
-
-/// `IPPROTO_*`
-#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
-#[repr(transparent)]
-pub struct Protocol(pub(crate) RawProtocol);
-
-#[rustfmt::skip]
-impl Protocol {
- /// `IPPROTO_IP`
- pub const IP: Self = Self(c::IPPROTO_IP as _);
- /// `IPPROTO_ICMP`
- pub const ICMP: Self = Self(c::IPPROTO_ICMP as _);
- /// `IPPROTO_IGMP`
- #[cfg(not(any(solarish, target_os = "haiku")))]
- pub const IGMP: Self = Self(c::IPPROTO_IGMP as _);
- /// `IPPROTO_IPIP`
- #[cfg(not(any(solarish, windows, target_os = "haiku")))]
- pub const IPIP: Self = Self(c::IPPROTO_IPIP as _);
- /// `IPPROTO_TCP`
- pub const TCP: Self = Self(c::IPPROTO_TCP as _);
- /// `IPPROTO_EGP`
- #[cfg(not(any(solarish, target_os = "haiku")))]
- pub const EGP: Self = Self(c::IPPROTO_EGP as _);
- /// `IPPROTO_PUP`
- #[cfg(not(any(solarish, target_os = "haiku")))]
- pub const PUP: Self = Self(c::IPPROTO_PUP as _);
- /// `IPPROTO_UDP`
- pub const UDP: Self = Self(c::IPPROTO_UDP as _);
- /// `IPPROTO_IDP`
- #[cfg(not(any(solarish, target_os = "haiku")))]
- pub const IDP: Self = Self(c::IPPROTO_IDP as _);
- /// `IPPROTO_TP`
- #[cfg(not(any(solarish, windows, target_os = "haiku")))]
- pub const TP: Self = Self(c::IPPROTO_TP as _);
- /// `IPPROTO_DCCP`
- #[cfg(not(any(
- apple,
- solarish,
- windows,
- target_os = "dragonfly",
- target_os = "haiku",
- target_os = "openbsd",
- )))]
- pub const DCCP: Self = Self(c::IPPROTO_DCCP as _);
- /// `IPPROTO_IPV6`
- pub const IPV6: Self = Self(c::IPPROTO_IPV6 as _);
- /// `IPPROTO_RSVP`
- #[cfg(not(any(solarish, windows, target_os = "haiku")))]
- pub const RSVP: Self = Self(c::IPPROTO_RSVP as _);
- /// `IPPROTO_GRE`
- #[cfg(not(any(solarish, windows, target_os = "haiku")))]
- pub const GRE: Self = Self(c::IPPROTO_GRE as _);
- /// `IPPROTO_ESP`
- #[cfg(not(any(solarish, target_os = "haiku")))]
- pub const ESP: Self = Self(c::IPPROTO_ESP as _);
- /// `IPPROTO_AH`
- #[cfg(not(any(solarish, target_os = "haiku")))]
- pub const AH: Self = Self(c::IPPROTO_AH as _);
- /// `IPPROTO_MTP`
- #[cfg(not(any(
- solarish,
- netbsdlike,
- windows,
- target_os = "haiku",
- )))]
- pub const MTP: Self = Self(c::IPPROTO_MTP as _);
- /// `IPPROTO_BEETPH`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- pub const BEETPH: Self = Self(c::IPPROTO_BEETPH as _);
- /// `IPPROTO_ENCAP`
- #[cfg(not(any(solarish, windows, target_os = "haiku")))]
- pub const ENCAP: Self = Self(c::IPPROTO_ENCAP as _);
- /// `IPPROTO_PIM`
- #[cfg(not(any(solarish, target_os = "haiku")))]
- pub const PIM: Self = Self(c::IPPROTO_PIM as _);
- /// `IPPROTO_COMP`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "haiku",
- )))]
- pub const COMP: Self = Self(c::IPPROTO_COMP as _);
- /// `IPPROTO_SCTP`
- #[cfg(not(any(solarish, target_os = "dragonfly", target_os = "haiku", target_os = "openbsd")))]
- pub const SCTP: Self = Self(c::IPPROTO_SCTP as _);
- /// `IPPROTO_UDPLITE`
- #[cfg(not(any(
- apple,
- netbsdlike,
- solarish,
- windows,
- target_os = "dragonfly",
- target_os = "haiku",
- )))]
- pub const UDPLITE: Self = Self(c::IPPROTO_UDPLITE as _);
- /// `IPPROTO_MPLS`
- #[cfg(not(any(
- apple,
- solarish,
- windows,
- target_os = "dragonfly",
- target_os = "haiku",
- target_os = "netbsd",
- )))]
- pub const MPLS: Self = Self(c::IPPROTO_MPLS as _);
- /// `IPPROTO_RAW`
- pub const RAW: Self = Self(c::IPPROTO_RAW as _);
- /// `IPPROTO_MPTCP`
- #[cfg(not(any(
- bsd,
- solarish,
- windows,
- target_os = "android",
- target_os = "emscripten",
- target_os = "fuchsia",
- target_os = "haiku",
- )))]
- pub const MPTCP: Self = Self(c::IPPROTO_MPTCP as _);
- /// `IPPROTO_FRAGMENT`
- #[cfg(not(any(solarish, target_os = "haiku")))]
- pub const FRAGMENT: Self = Self(c::IPPROTO_FRAGMENT as _);
- /// `IPPROTO_ICMPV6`
- pub const ICMPV6: Self = Self(c::IPPROTO_ICMPV6 as _);
- /// `IPPROTO_MH`
- #[cfg(not(any(
- apple,
- netbsdlike,
- solarish,
- windows,
- target_os = "dragonfly",
- target_os = "haiku",
- )))]
- pub const MH: Self = Self(c::IPPROTO_MH as _);
- /// `IPPROTO_ROUTING`
- #[cfg(not(any(solarish, target_os = "haiku")))]
- pub const ROUTING: Self = Self(c::IPPROTO_ROUTING as _);
-
- /// Constructs a `Protocol` from a raw integer.
- #[inline]
- pub const fn from_raw(raw: RawProtocol) -> Self {
- Self(raw)
- }
-
- /// Returns the raw integer for this `Protocol`.
- #[inline]
- pub const fn as_raw(self) -> RawProtocol {
- self.0
- }
-}
-
-/// `SHUT_*` constants for use with [`shutdown`].
-///
-/// [`shutdown`]: crate::net::shutdown
-#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
-#[repr(i32)]
-pub enum Shutdown {
- /// `SHUT_RD`—Disable further read operations.
- Read = c::SHUT_RD,
- /// `SHUT_WR`—Disable further write operations.
- Write = c::SHUT_WR,
- /// `SHUT_RDWR`—Disable further read and write operations.
- ReadWrite = c::SHUT_RDWR,
-}
-
-bitflags! {
- /// `SOCK_*` constants for use with [`accept_with`] and [`acceptfrom_with`].
- ///
- /// [`accept_with`]: crate::net::accept_with
- /// [`acceptfrom_with`]: crate::net::acceptfrom_with
- pub struct AcceptFlags: c::c_int {
- /// `SOCK_NONBLOCK`
- #[cfg(not(any(apple, windows, target_os = "haiku")))]
- const NONBLOCK = c::SOCK_NONBLOCK;
-
- /// `SOCK_CLOEXEC`
- #[cfg(not(any(apple, windows, target_os = "haiku")))]
- const CLOEXEC = c::SOCK_CLOEXEC;
- }
-}
-
-bitflags! {
- /// `SOCK_*` constants for use with [`socket`].
- ///
- /// [`socket`]: crate::net::socket
- pub struct SocketFlags: c::c_int {
- /// `SOCK_NONBLOCK`
- #[cfg(not(any(apple, windows, target_os = "haiku")))]
- const NONBLOCK = c::SOCK_NONBLOCK;
-
- /// `SOCK_CLOEXEC`
- #[cfg(not(any(apple, windows, target_os = "haiku")))]
- const CLOEXEC = c::SOCK_CLOEXEC;
- }
-}
-
-/// Timeout identifier for use with [`set_socket_timeout`] and
-/// [`get_socket_timeout`].
-///
-/// [`set_socket_timeout`]: crate::net::sockopt::set_socket_timeout.
-/// [`get_socket_timeout`]: crate::net::sockopt::get_socket_timeout.
-#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
-#[repr(i32)]
-pub enum Timeout {
- /// `SO_RCVTIMEO`—Timeout for receiving.
- Recv = c::SO_RCVTIMEO,
-
- /// `SO_SNDTIMEO`—Timeout for sending.
- Send = c::SO_SNDTIMEO,
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/net/write_sockaddr.rs b/vendor/rustix-0.37.6/src/backend/libc/net/write_sockaddr.rs
deleted file mode 100644
index f8ab62966..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/net/write_sockaddr.rs
+++ /dev/null
@@ -1,78 +0,0 @@
-//! The BSD sockets API requires us to read the `ss_family` field before
-//! we can interpret the rest of a `sockaddr` produced by the kernel.
-
-use super::super::c;
-use super::addr::SocketAddrStorage;
-#[cfg(unix)]
-use super::addr::SocketAddrUnix;
-use super::ext::{in6_addr_new, in_addr_new, sockaddr_in6_new};
-use crate::net::{SocketAddrAny, SocketAddrV4, SocketAddrV6};
-use core::mem::size_of;
-
-pub(crate) unsafe fn write_sockaddr(
- addr: &SocketAddrAny,
- storage: *mut SocketAddrStorage,
-) -> usize {
- match addr {
- SocketAddrAny::V4(v4) => write_sockaddr_v4(v4, storage),
- SocketAddrAny::V6(v6) => write_sockaddr_v6(v6, storage),
- #[cfg(unix)]
- SocketAddrAny::Unix(unix) => write_sockaddr_unix(unix, storage),
- }
-}
-
-pub(crate) unsafe fn encode_sockaddr_v4(v4: &SocketAddrV4) -> c::sockaddr_in {
- c::sockaddr_in {
- #[cfg(any(bsd, target_os = "haiku"))]
- sin_len: size_of::<c::sockaddr_in>() as _,
- sin_family: c::AF_INET as _,
- sin_port: u16::to_be(v4.port()),
- sin_addr: in_addr_new(u32::from_ne_bytes(v4.ip().octets())),
- #[cfg(not(target_os = "haiku"))]
- sin_zero: [0; 8_usize],
- #[cfg(target_os = "haiku")]
- sin_zero: [0; 24_usize],
- }
-}
-
-unsafe fn write_sockaddr_v4(v4: &SocketAddrV4, storage: *mut SocketAddrStorage) -> usize {
- let encoded = encode_sockaddr_v4(v4);
- core::ptr::write(storage.cast(), encoded);
- size_of::<c::sockaddr_in>()
-}
-
-pub(crate) unsafe fn encode_sockaddr_v6(v6: &SocketAddrV6) -> c::sockaddr_in6 {
- #[cfg(any(bsd, target_os = "haiku"))]
- {
- sockaddr_in6_new(
- size_of::<c::sockaddr_in6>() as _,
- c::AF_INET6 as _,
- u16::to_be(v6.port()),
- u32::to_be(v6.flowinfo()),
- in6_addr_new(v6.ip().octets()),
- v6.scope_id(),
- )
- }
- #[cfg(not(any(bsd, target_os = "haiku")))]
- {
- sockaddr_in6_new(
- c::AF_INET6 as _,
- u16::to_be(v6.port()),
- u32::to_be(v6.flowinfo()),
- in6_addr_new(v6.ip().octets()),
- v6.scope_id(),
- )
- }
-}
-
-unsafe fn write_sockaddr_v6(v6: &SocketAddrV6, storage: *mut SocketAddrStorage) -> usize {
- let encoded = encode_sockaddr_v6(v6);
- core::ptr::write(storage.cast(), encoded);
- size_of::<c::sockaddr_in6>()
-}
-
-#[cfg(unix)]
-unsafe fn write_sockaddr_unix(unix: &SocketAddrUnix, storage: *mut SocketAddrStorage) -> usize {
- core::ptr::write(storage.cast(), unix.unix);
- unix.len()
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/offset.rs b/vendor/rustix-0.37.6/src/backend/libc/offset.rs
deleted file mode 100644
index 9747eb954..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/offset.rs
+++ /dev/null
@@ -1,412 +0,0 @@
-//! Automatically enable “large file†support features.
-
-#[cfg(not(windows))]
-use super::c;
-
-#[cfg(not(any(linux_like, windows)))]
-#[cfg(feature = "fs")]
-pub(super) use c::{
- fstat as libc_fstat, fstatat as libc_fstatat, ftruncate as libc_ftruncate, lseek as libc_lseek,
- off_t as libc_off_t,
-};
-
-#[cfg(linux_like)]
-#[cfg(feature = "fs")]
-pub(super) use c::{
- fstat64 as libc_fstat, fstatat64 as libc_fstatat, ftruncate64 as libc_ftruncate,
- lseek64 as libc_lseek, off64_t as libc_off_t,
-};
-
-#[cfg(linux_like)]
-pub(super) use c::rlimit64 as libc_rlimit;
-
-#[cfg(not(any(linux_like, windows, target_os = "wasi")))]
-#[cfg(feature = "mm")]
-pub(super) use c::mmap as libc_mmap;
-
-#[cfg(not(any(
- linux_like,
- windows,
- target_os = "fuchsia",
- target_os = "redox",
- target_os = "wasi",
-)))]
-pub(super) use c::{rlimit as libc_rlimit, RLIM_INFINITY as LIBC_RLIM_INFINITY};
-
-#[cfg(not(any(linux_like, windows, target_os = "fuchsia", target_os = "wasi")))]
-pub(super) use c::{getrlimit as libc_getrlimit, setrlimit as libc_setrlimit};
-
-// TODO: Add `RLIM64_INFINITY` to upstream libc.
-#[cfg(linux_like)]
-pub(super) const LIBC_RLIM_INFINITY: u64 = !0_u64;
-
-#[cfg(linux_like)]
-pub(super) use c::{getrlimit64 as libc_getrlimit, setrlimit64 as libc_setrlimit};
-
-#[cfg(linux_like)]
-#[cfg(feature = "mm")]
-pub(super) use c::mmap64 as libc_mmap;
-
-// `prlimit64` wasn't supported in glibc until 2.13.
-#[cfg(all(target_os = "linux", target_env = "gnu"))]
-weak_or_syscall! {
- fn prlimit64(
- pid: c::pid_t,
- resource: c::__rlimit_resource_t,
- new_limit: *const c::rlimit64,
- old_limit: *mut c::rlimit64
- ) via SYS_prlimit64 -> c::c_int
-}
-#[cfg(all(target_os = "linux", target_env = "musl"))]
-weak_or_syscall! {
- fn prlimit64(
- pid: c::pid_t,
- resource: c::c_int,
- new_limit: *const c::rlimit64,
- old_limit: *mut c::rlimit64
- ) via SYS_prlimit64 -> c::c_int
-}
-#[cfg(target_os = "android")]
-weak_or_syscall! {
- fn prlimit64(
- pid: c::pid_t,
- resource: c::c_int,
- new_limit: *const c::rlimit64,
- old_limit: *mut c::rlimit64
- ) via SYS_prlimit64 -> c::c_int
-}
-#[cfg(all(target_os = "linux", target_env = "gnu"))]
-pub(super) unsafe fn libc_prlimit(
- pid: c::pid_t,
- resource: c::__rlimit_resource_t,
- new_limit: *const c::rlimit64,
- old_limit: *mut c::rlimit64,
-) -> c::c_int {
- prlimit64(pid, resource, new_limit, old_limit)
-}
-#[cfg(all(target_os = "linux", target_env = "musl"))]
-pub(super) unsafe fn libc_prlimit(
- pid: c::pid_t,
- resource: c::c_int,
- new_limit: *const c::rlimit64,
- old_limit: *mut c::rlimit64,
-) -> c::c_int {
- prlimit64(pid, resource, new_limit, old_limit)
-}
-#[cfg(target_os = "android")]
-pub(super) unsafe fn libc_prlimit(
- pid: c::pid_t,
- resource: c::c_int,
- new_limit: *const c::rlimit64,
- old_limit: *mut c::rlimit64,
-) -> c::c_int {
- prlimit64(pid, resource, new_limit, old_limit)
-}
-
-#[cfg(not(any(linux_like, windows, target_os = "redox")))]
-#[cfg(feature = "fs")]
-pub(super) use c::openat as libc_openat;
-#[cfg(linux_like)]
-#[cfg(feature = "fs")]
-pub(super) use c::openat64 as libc_openat;
-
-#[cfg(target_os = "fuchsia")]
-#[cfg(feature = "fs")]
-pub(super) use c::fallocate as libc_fallocate;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[cfg(feature = "fs")]
-pub(super) use c::fallocate64 as libc_fallocate;
-#[cfg(not(any(
- apple,
- linux_like,
- netbsdlike,
- solarish,
- windows,
- target_os = "dragonfly",
- target_os = "haiku",
- target_os = "redox",
-)))]
-#[cfg(feature = "fs")]
-pub(super) use c::posix_fadvise as libc_posix_fadvise;
-#[cfg(linux_like)]
-#[cfg(feature = "fs")]
-pub(super) use c::posix_fadvise64 as libc_posix_fadvise;
-
-#[cfg(all(not(any(
- windows,
- target_os = "android",
- target_os = "linux",
- target_os = "emscripten",
-))))]
-pub(super) use c::{pread as libc_pread, pwrite as libc_pwrite};
-#[cfg(any(target_os = "android", target_os = "linux", target_os = "emscripten"))]
-pub(super) use c::{pread64 as libc_pread, pwrite64 as libc_pwrite};
-#[cfg(not(any(
- apple,
- windows,
- target_os = "android",
- target_os = "emscripten",
- target_os = "haiku",
- target_os = "linux",
- target_os = "redox",
- target_os = "solaris",
-)))]
-pub(super) use c::{preadv as libc_preadv, pwritev as libc_pwritev};
-#[cfg(any(target_os = "linux", target_os = "emscripten"))]
-pub(super) use c::{preadv64 as libc_preadv, pwritev64 as libc_pwritev};
-
-#[cfg(target_os = "android")]
-mod readwrite_pv64 {
- use super::c;
-
- // 64-bit offsets on 32-bit platforms are passed in endianness-specific
- // lo/hi pairs. See src/backend/linux_raw/conv.rs for details.
- #[cfg(all(target_endian = "little", target_pointer_width = "32"))]
- fn lo(x: u64) -> usize {
- (x >> 32) as usize
- }
- #[cfg(all(target_endian = "little", target_pointer_width = "32"))]
- fn hi(x: u64) -> usize {
- (x & 0xffff_ffff) as usize
- }
- #[cfg(all(target_endian = "big", target_pointer_width = "32"))]
- fn lo(x: u64) -> usize {
- (x & 0xffff_ffff) as usize
- }
- #[cfg(all(target_endian = "big", target_pointer_width = "32"))]
- fn hi(x: u64) -> usize {
- (x >> 32) as usize
- }
-
- pub(in super::super) unsafe fn preadv64(
- fd: c::c_int,
- iov: *const c::iovec,
- iovcnt: c::c_int,
- offset: c::off64_t,
- ) -> c::ssize_t {
- // Older Android libc lacks `preadv64`, so use the `weak!` mechanism to
- // test for it, and call back to `c::syscall`. We don't use
- // `weak_or_syscall` here because we need to pass the 64-bit offset
- // specially.
- weak! {
- fn preadv64(c::c_int, *const c::iovec, c::c_int, c::off64_t) -> c::ssize_t
- }
- if let Some(fun) = preadv64.get() {
- fun(fd, iov, iovcnt, offset)
- } else {
- #[cfg(target_pointer_width = "32")]
- {
- c::syscall(
- c::SYS_preadv,
- fd,
- iov,
- iovcnt,
- hi(offset as u64),
- lo(offset as u64),
- ) as c::ssize_t
- }
- #[cfg(target_pointer_width = "64")]
- {
- c::syscall(c::SYS_preadv, fd, iov, iovcnt, offset) as c::ssize_t
- }
- }
- }
- pub(in super::super) unsafe fn pwritev64(
- fd: c::c_int,
- iov: *const c::iovec,
- iovcnt: c::c_int,
- offset: c::off64_t,
- ) -> c::ssize_t {
- // See the comments in `preadv64`.
- weak! {
- fn pwritev64(c::c_int, *const c::iovec, c::c_int, c::off64_t) -> c::ssize_t
- }
- if let Some(fun) = pwritev64.get() {
- fun(fd, iov, iovcnt, offset)
- } else {
- #[cfg(target_pointer_width = "32")]
- {
- c::syscall(
- c::SYS_pwritev,
- fd,
- iov,
- iovcnt,
- hi(offset as u64),
- lo(offset as u64),
- ) as c::ssize_t
- }
- #[cfg(target_pointer_width = "64")]
- {
- c::syscall(c::SYS_pwritev, fd, iov, iovcnt, offset) as c::ssize_t
- }
- }
- }
-}
-#[cfg(target_os = "android")]
-pub(super) use readwrite_pv64::{preadv64 as libc_preadv, pwritev64 as libc_pwritev};
-
-// macOS added preadv and pwritev in version 11.0
-#[cfg(apple)]
-mod readwrite_pv {
- use super::c;
-
- weakcall! {
- pub(in super::super) fn preadv(
- fd: c::c_int,
- iov: *const c::iovec,
- iovcnt: c::c_int,
- offset: c::off_t
- ) -> c::ssize_t
- }
- weakcall! {
- pub(in super::super) fn pwritev(
- fd: c::c_int,
- iov: *const c::iovec,
- iovcnt: c::c_int, offset: c::off_t
- ) -> c::ssize_t
- }
-}
-#[cfg(apple)]
-pub(super) use readwrite_pv::{preadv as libc_preadv, pwritev as libc_pwritev};
-
-// GLIBC added `preadv64v2` and `pwritev64v2` in version 2.26.
-#[cfg(all(target_os = "linux", target_env = "gnu"))]
-mod readwrite_pv64v2 {
- use super::c;
-
- // 64-bit offsets on 32-bit platforms are passed in endianness-specific
- // lo/hi pairs. See src/backend/linux_raw/conv.rs for details.
- #[cfg(all(target_endian = "little", target_pointer_width = "32"))]
- fn lo(x: u64) -> usize {
- (x >> 32) as usize
- }
- #[cfg(all(target_endian = "little", target_pointer_width = "32"))]
- fn hi(x: u64) -> usize {
- (x & 0xffff_ffff) as usize
- }
- #[cfg(all(target_endian = "big", target_pointer_width = "32"))]
- fn lo(x: u64) -> usize {
- (x & 0xffff_ffff) as usize
- }
- #[cfg(all(target_endian = "big", target_pointer_width = "32"))]
- fn hi(x: u64) -> usize {
- (x >> 32) as usize
- }
-
- pub(in super::super) unsafe fn preadv64v2(
- fd: c::c_int,
- iov: *const c::iovec,
- iovcnt: c::c_int,
- offset: c::off64_t,
- flags: c::c_int,
- ) -> c::ssize_t {
- // Older GLIBC lacks `preadv64v2`, so use the `weak!` mechanism to
- // test for it, and call back to `c::syscall`. We don't use
- // `weak_or_syscall` here because we need to pass the 64-bit offset
- // specially.
- weak! {
- fn preadv64v2(c::c_int, *const c::iovec, c::c_int, c::off64_t, c::c_int) -> c::ssize_t
- }
- if let Some(fun) = preadv64v2.get() {
- fun(fd, iov, iovcnt, offset, flags)
- } else {
- #[cfg(target_pointer_width = "32")]
- {
- c::syscall(
- c::SYS_preadv,
- fd,
- iov,
- iovcnt,
- hi(offset as u64),
- lo(offset as u64),
- flags,
- ) as c::ssize_t
- }
- #[cfg(target_pointer_width = "64")]
- {
- c::syscall(c::SYS_preadv2, fd, iov, iovcnt, offset, flags) as c::ssize_t
- }
- }
- }
- pub(in super::super) unsafe fn pwritev64v2(
- fd: c::c_int,
- iov: *const c::iovec,
- iovcnt: c::c_int,
- offset: c::off64_t,
- flags: c::c_int,
- ) -> c::ssize_t {
- // See the comments in `preadv64v2`.
- weak! {
- fn pwritev64v2(c::c_int, *const c::iovec, c::c_int, c::off64_t, c::c_int) -> c::ssize_t
- }
- if let Some(fun) = pwritev64v2.get() {
- fun(fd, iov, iovcnt, offset, flags)
- } else {
- #[cfg(target_pointer_width = "32")]
- {
- c::syscall(
- c::SYS_pwritev,
- fd,
- iov,
- iovcnt,
- hi(offset as u64),
- lo(offset as u64),
- flags,
- ) as c::ssize_t
- }
- #[cfg(target_pointer_width = "64")]
- {
- c::syscall(c::SYS_pwritev2, fd, iov, iovcnt, offset, flags) as c::ssize_t
- }
- }
- }
-}
-#[cfg(all(target_os = "linux", target_env = "gnu"))]
-pub(super) use readwrite_pv64v2::{preadv64v2 as libc_preadv2, pwritev64v2 as libc_pwritev2};
-
-#[cfg(not(any(
- apple,
- netbsdlike,
- solarish,
- windows,
- target_os = "aix",
- target_os = "android",
- target_os = "dragonfly",
- target_os = "fuchsia",
- target_os = "linux",
- target_os = "l4re",
- target_os = "redox",
-)))]
-#[cfg(feature = "fs")]
-pub(super) use c::posix_fallocate as libc_posix_fallocate;
-#[cfg(target_os = "l4re")]
-#[cfg(feature = "fs")]
-pub(super) use c::posix_fallocate64 as libc_posix_fallocate;
-#[cfg(not(any(
- linux_like,
- solarish,
- windows,
- target_os = "haiku",
- target_os = "netbsd",
- target_os = "redox",
- target_os = "wasi",
-)))]
-#[cfg(feature = "fs")]
-pub(super) use {c::fstatfs as libc_fstatfs, c::statfs as libc_statfs};
-#[cfg(not(any(
- linux_like,
- solarish,
- windows,
- target_os = "haiku",
- target_os = "redox",
- target_os = "wasi",
-)))]
-#[cfg(feature = "fs")]
-pub(super) use {c::fstatvfs as libc_fstatvfs, c::statvfs as libc_statvfs};
-
-#[cfg(linux_like)]
-#[cfg(feature = "fs")]
-pub(super) use {
- c::fstatfs64 as libc_fstatfs, c::fstatvfs64 as libc_fstatvfs, c::statfs64 as libc_statfs,
- c::statvfs64 as libc_statvfs,
-};
diff --git a/vendor/rustix-0.37.6/src/backend/libc/param/auxv.rs b/vendor/rustix-0.37.6/src/backend/libc/param/auxv.rs
deleted file mode 100644
index a770c60d8..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/param/auxv.rs
+++ /dev/null
@@ -1,54 +0,0 @@
-use super::super::c;
-#[cfg(any(
- all(target_os = "android", target_pointer_width = "64"),
- target_os = "linux",
-))]
-use crate::ffi::CStr;
-
-// `getauxval` wasn't supported in glibc until 2.16.
-#[cfg(any(
- all(target_os = "android", target_pointer_width = "64"),
- target_os = "linux",
-))]
-weak!(fn getauxval(c::c_ulong) -> *mut c::c_void);
-
-#[inline]
-pub(crate) fn page_size() -> usize {
- unsafe { c::sysconf(c::_SC_PAGESIZE) as usize }
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-pub(crate) fn clock_ticks_per_second() -> u64 {
- unsafe { c::sysconf(c::_SC_CLK_TCK) as u64 }
-}
-
-#[cfg(any(
- all(target_os = "android", target_pointer_width = "64"),
- target_os = "linux",
-))]
-#[inline]
-pub(crate) fn linux_hwcap() -> (usize, usize) {
- if let Some(libc_getauxval) = getauxval.get() {
- unsafe {
- let hwcap = libc_getauxval(c::AT_HWCAP) as usize;
- let hwcap2 = libc_getauxval(c::AT_HWCAP2) as usize;
- (hwcap, hwcap2)
- }
- } else {
- (0, 0)
- }
-}
-
-#[cfg(any(
- all(target_os = "android", target_pointer_width = "64"),
- target_os = "linux",
-))]
-#[inline]
-pub(crate) fn linux_execfn() -> &'static CStr {
- if let Some(libc_getauxval) = getauxval.get() {
- unsafe { CStr::from_ptr(libc_getauxval(c::AT_EXECFN).cast()) }
- } else {
- cstr!("")
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/param/mod.rs b/vendor/rustix-0.37.6/src/backend/libc/param/mod.rs
deleted file mode 100644
index 2cb2fe78a..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/param/mod.rs
+++ /dev/null
@@ -1 +0,0 @@
-pub(crate) mod auxv;
diff --git a/vendor/rustix-0.37.6/src/backend/libc/process/cpu_set.rs b/vendor/rustix-0.37.6/src/backend/libc/process/cpu_set.rs
deleted file mode 100644
index a9d6d89c2..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/process/cpu_set.rs
+++ /dev/null
@@ -1,51 +0,0 @@
-//! Rust implementation of the `CPU_*` macro API.
-
-#![allow(non_snake_case)]
-
-use super::super::c;
-use super::types::{RawCpuSet, CPU_SETSIZE};
-
-#[inline]
-pub(crate) fn CPU_SET(cpu: usize, cpuset: &mut RawCpuSet) {
- assert!(
- cpu < CPU_SETSIZE,
- "cpu out of bounds: the cpu max is {} but the cpu is {}",
- CPU_SETSIZE,
- cpu
- );
- unsafe { c::CPU_SET(cpu, cpuset) }
-}
-
-#[inline]
-pub(crate) fn CPU_ZERO(cpuset: &mut RawCpuSet) {
- unsafe { c::CPU_ZERO(cpuset) }
-}
-
-#[inline]
-pub(crate) fn CPU_CLR(cpu: usize, cpuset: &mut RawCpuSet) {
- assert!(
- cpu < CPU_SETSIZE,
- "cpu out of bounds: the cpu max is {} but the cpu is {}",
- CPU_SETSIZE,
- cpu
- );
- unsafe { c::CPU_CLR(cpu, cpuset) }
-}
-
-#[inline]
-pub(crate) fn CPU_ISSET(cpu: usize, cpuset: &RawCpuSet) -> bool {
- assert!(
- cpu < CPU_SETSIZE,
- "cpu out of bounds: the cpu max is {} but the cpu is {}",
- CPU_SETSIZE,
- cpu
- );
- unsafe { c::CPU_ISSET(cpu, cpuset) }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub(crate) fn CPU_COUNT(cpuset: &RawCpuSet) -> u32 {
- use core::convert::TryInto;
- unsafe { c::CPU_COUNT(cpuset).try_into().unwrap() }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/process/mod.rs b/vendor/rustix-0.37.6/src/backend/libc/process/mod.rs
deleted file mode 100644
index 8675c1af9..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/process/mod.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-#[cfg(any(
- target_os = "android",
- target_os = "dragonfly",
- target_os = "fuchsia",
- target_os = "linux",
-))]
-pub(crate) mod cpu_set;
-#[cfg(not(windows))]
-pub(crate) mod syscalls;
-pub(crate) mod types;
-#[cfg(not(target_os = "wasi"))]
-pub(crate) mod wait;
diff --git a/vendor/rustix-0.37.6/src/backend/libc/process/syscalls.rs b/vendor/rustix-0.37.6/src/backend/libc/process/syscalls.rs
deleted file mode 100644
index d208bda7a..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/process/syscalls.rs
+++ /dev/null
@@ -1,570 +0,0 @@
-//! libc syscalls supporting `rustix::process`.
-
-use super::super::c;
-#[cfg(not(any(target_os = "wasi", target_os = "fuchsia")))]
-use super::super::conv::borrowed_fd;
-use super::super::conv::{c_str, ret, ret_c_int, ret_discarded_char_ptr};
-#[cfg(not(target_os = "wasi"))]
-use super::super::conv::{ret_infallible, ret_pid_t};
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use super::super::conv::{syscall_ret, syscall_ret_u32};
-#[cfg(any(
- target_os = "android",
- target_os = "dragonfly",
- target_os = "fuchsia",
- target_os = "linux",
-))]
-use super::types::RawCpuSet;
-#[cfg(not(any(target_os = "wasi", target_os = "fuchsia")))]
-use crate::fd::BorrowedFd;
-#[cfg(target_os = "linux")]
-use crate::fd::{AsRawFd, OwnedFd};
-use crate::ffi::CStr;
-#[cfg(feature = "fs")]
-use crate::fs::Mode;
-use crate::io;
-#[cfg(not(any(target_os = "wasi", target_os = "redox", target_os = "openbsd")))]
-use crate::process::{WaitId, WaitidOptions, WaitidStatus};
-use core::mem::MaybeUninit;
-#[cfg(target_os = "linux")]
-use {super::super::conv::syscall_ret_owned_fd, crate::process::PidfdFlags};
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use {
- super::super::offset::libc_prlimit,
- crate::process::{Cpuid, MembarrierCommand, MembarrierQuery},
-};
-#[cfg(not(any(target_os = "fuchsia", target_os = "redox", target_os = "wasi")))]
-use {
- super::super::offset::{libc_getrlimit, libc_rlimit, libc_setrlimit, LIBC_RLIM_INFINITY},
- crate::process::{Resource, Rlimit},
- core::convert::TryInto,
-};
-#[cfg(not(target_os = "wasi"))]
-use {
- super::types::RawUname,
- crate::process::{Gid, Pid, RawNonZeroPid, RawPid, Signal, Uid, WaitOptions, WaitStatus},
-};
-
-#[cfg(not(target_os = "wasi"))]
-pub(crate) fn chdir(path: &CStr) -> io::Result<()> {
- unsafe { ret(c::chdir(c_str(path))) }
-}
-
-#[cfg(not(any(target_os = "wasi", target_os = "fuchsia")))]
-pub(crate) fn fchdir(dirfd: BorrowedFd<'_>) -> io::Result<()> {
- unsafe { ret(c::fchdir(borrowed_fd(dirfd))) }
-}
-
-#[cfg(not(target_os = "wasi"))]
-pub(crate) fn getcwd(buf: &mut [u8]) -> io::Result<()> {
- unsafe { ret_discarded_char_ptr(c::getcwd(buf.as_mut_ptr().cast(), buf.len())) }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub(crate) fn membarrier_query() -> MembarrierQuery {
- // GLIBC does not have a wrapper for `membarrier`; [the documentation]
- // says to use `syscall`.
- //
- // [the documentation]: https://man7.org/linux/man-pages/man2/membarrier.2.html#NOTES
- const MEMBARRIER_CMD_QUERY: u32 = 0;
- unsafe {
- match syscall_ret_u32(c::syscall(c::SYS_membarrier, MEMBARRIER_CMD_QUERY, 0)) {
- Ok(query) => MembarrierQuery::from_bits_unchecked(query),
- Err(_) => MembarrierQuery::empty(),
- }
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub(crate) fn membarrier(cmd: MembarrierCommand) -> io::Result<()> {
- unsafe { syscall_ret(c::syscall(c::SYS_membarrier, cmd as u32, 0)) }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub(crate) fn membarrier_cpu(cmd: MembarrierCommand, cpu: Cpuid) -> io::Result<()> {
- const MEMBARRIER_CMD_FLAG_CPU: u32 = 1;
- unsafe {
- syscall_ret(c::syscall(
- c::SYS_membarrier,
- cmd as u32,
- MEMBARRIER_CMD_FLAG_CPU,
- cpu.as_raw(),
- ))
- }
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-#[must_use]
-pub(crate) fn getuid() -> Uid {
- unsafe {
- let uid = c::getuid();
- Uid::from_raw(uid)
- }
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-#[must_use]
-pub(crate) fn geteuid() -> Uid {
- unsafe {
- let uid = c::geteuid();
- Uid::from_raw(uid)
- }
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-#[must_use]
-pub(crate) fn getgid() -> Gid {
- unsafe {
- let gid = c::getgid();
- Gid::from_raw(gid)
- }
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-#[must_use]
-pub(crate) fn getegid() -> Gid {
- unsafe {
- let gid = c::getegid();
- Gid::from_raw(gid)
- }
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-#[must_use]
-pub(crate) fn getpid() -> Pid {
- unsafe {
- let pid = c::getpid();
- debug_assert_ne!(pid, 0);
- Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(pid))
- }
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-#[must_use]
-pub(crate) fn getppid() -> Option<Pid> {
- unsafe {
- let pid: i32 = c::getppid();
- Pid::from_raw(pid)
- }
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-pub(crate) fn getpgid(pid: Option<Pid>) -> io::Result<Pid> {
- unsafe {
- let pgid = ret_pid_t(c::getpgid(Pid::as_raw(pid) as _))?;
- debug_assert_ne!(pgid, 0);
- Ok(Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(pgid)))
- }
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-#[must_use]
-pub(crate) fn getpgrp() -> Pid {
- unsafe {
- let pgid = c::getpgrp();
- debug_assert_ne!(pgid, 0);
- Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(pgid))
- }
-}
-
-#[cfg(any(
- target_os = "android",
- target_os = "dragonfly",
- target_os = "fuchsia",
- target_os = "linux",
-))]
-#[inline]
-pub(crate) fn sched_getaffinity(pid: Option<Pid>, cpuset: &mut RawCpuSet) -> io::Result<()> {
- unsafe {
- ret(c::sched_getaffinity(
- Pid::as_raw(pid) as _,
- core::mem::size_of::<RawCpuSet>(),
- cpuset,
- ))
- }
-}
-
-#[cfg(any(
- target_os = "android",
- target_os = "dragonfly",
- target_os = "fuchsia",
- target_os = "linux",
-))]
-#[inline]
-pub(crate) fn sched_setaffinity(pid: Option<Pid>, cpuset: &RawCpuSet) -> io::Result<()> {
- unsafe {
- ret(c::sched_setaffinity(
- Pid::as_raw(pid) as _,
- core::mem::size_of::<RawCpuSet>(),
- cpuset,
- ))
- }
-}
-
-#[inline]
-pub(crate) fn sched_yield() {
- unsafe {
- let _ = c::sched_yield();
- }
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-pub(crate) fn uname() -> RawUname {
- let mut uname = MaybeUninit::<RawUname>::uninit();
- unsafe {
- ret_infallible(c::uname(uname.as_mut_ptr()));
- uname.assume_init()
- }
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[cfg(feature = "fs")]
-#[inline]
-pub(crate) fn umask(mask: Mode) -> Mode {
- // TODO: Use `from_bits_retain` when we switch to bitflags 2.0.
- unsafe { Mode::from_bits_truncate(c::umask(mask.bits() as _) as _) }
-}
-
-#[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))]
-#[inline]
-pub(crate) fn nice(inc: i32) -> io::Result<i32> {
- libc_errno::set_errno(libc_errno::Errno(0));
- let r = unsafe { c::nice(inc) };
- if libc_errno::errno().0 != 0 {
- ret_c_int(r)
- } else {
- Ok(r)
- }
-}
-
-#[cfg(not(any(target_os = "fuchsia", target_os = "redox", target_os = "wasi")))]
-#[inline]
-pub(crate) fn getpriority_user(uid: Uid) -> io::Result<i32> {
- libc_errno::set_errno(libc_errno::Errno(0));
- let r = unsafe { c::getpriority(c::PRIO_USER, uid.as_raw() as _) };
- if libc_errno::errno().0 != 0 {
- ret_c_int(r)
- } else {
- Ok(r)
- }
-}
-
-#[cfg(not(any(target_os = "fuchsia", target_os = "redox", target_os = "wasi")))]
-#[inline]
-pub(crate) fn getpriority_pgrp(pgid: Option<Pid>) -> io::Result<i32> {
- libc_errno::set_errno(libc_errno::Errno(0));
- let r = unsafe { c::getpriority(c::PRIO_PGRP, Pid::as_raw(pgid) as _) };
- if libc_errno::errno().0 != 0 {
- ret_c_int(r)
- } else {
- Ok(r)
- }
-}
-
-#[cfg(not(any(target_os = "fuchsia", target_os = "redox", target_os = "wasi")))]
-#[inline]
-pub(crate) fn getpriority_process(pid: Option<Pid>) -> io::Result<i32> {
- libc_errno::set_errno(libc_errno::Errno(0));
- let r = unsafe { c::getpriority(c::PRIO_PROCESS, Pid::as_raw(pid) as _) };
- if libc_errno::errno().0 != 0 {
- ret_c_int(r)
- } else {
- Ok(r)
- }
-}
-
-#[cfg(not(any(target_os = "fuchsia", target_os = "redox", target_os = "wasi")))]
-#[inline]
-pub(crate) fn setpriority_user(uid: Uid, priority: i32) -> io::Result<()> {
- unsafe { ret(c::setpriority(c::PRIO_USER, uid.as_raw() as _, priority)) }
-}
-
-#[cfg(not(any(target_os = "fuchsia", target_os = "redox", target_os = "wasi")))]
-#[inline]
-pub(crate) fn setpriority_pgrp(pgid: Option<Pid>, priority: i32) -> io::Result<()> {
- unsafe {
- ret(c::setpriority(
- c::PRIO_PGRP,
- Pid::as_raw(pgid) as _,
- priority,
- ))
- }
-}
-
-#[cfg(not(any(target_os = "fuchsia", target_os = "redox", target_os = "wasi")))]
-#[inline]
-pub(crate) fn setpriority_process(pid: Option<Pid>, priority: i32) -> io::Result<()> {
- unsafe {
- ret(c::setpriority(
- c::PRIO_PROCESS,
- Pid::as_raw(pid) as _,
- priority,
- ))
- }
-}
-
-#[cfg(not(any(target_os = "fuchsia", target_os = "redox", target_os = "wasi")))]
-#[inline]
-pub(crate) fn getrlimit(limit: Resource) -> Rlimit {
- let mut result = MaybeUninit::<libc_rlimit>::uninit();
- unsafe {
- ret_infallible(libc_getrlimit(limit as _, result.as_mut_ptr()));
- rlimit_from_libc(result.assume_init())
- }
-}
-
-#[cfg(not(any(target_os = "fuchsia", target_os = "redox", target_os = "wasi")))]
-#[inline]
-pub(crate) fn setrlimit(limit: Resource, new: Rlimit) -> io::Result<()> {
- let lim = rlimit_to_libc(new)?;
- unsafe { ret(libc_setrlimit(limit as _, &lim)) }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub(crate) fn prlimit(pid: Option<Pid>, limit: Resource, new: Rlimit) -> io::Result<Rlimit> {
- let lim = rlimit_to_libc(new)?;
- let mut result = MaybeUninit::<libc_rlimit>::uninit();
- unsafe {
- ret(libc_prlimit(
- Pid::as_raw(pid),
- limit as _,
- &lim,
- result.as_mut_ptr(),
- ))?;
- Ok(rlimit_from_libc(result.assume_init()))
- }
-}
-
-/// Convert a Rust [`Rlimit`] to a C `libc_rlimit`.
-#[cfg(not(any(target_os = "fuchsia", target_os = "redox", target_os = "wasi")))]
-fn rlimit_from_libc(lim: libc_rlimit) -> Rlimit {
- let current = if lim.rlim_cur == LIBC_RLIM_INFINITY {
- None
- } else {
- Some(lim.rlim_cur.try_into().unwrap())
- };
- let maximum = if lim.rlim_max == LIBC_RLIM_INFINITY {
- None
- } else {
- Some(lim.rlim_max.try_into().unwrap())
- };
- Rlimit { current, maximum }
-}
-
-/// Convert a C `libc_rlimit` to a Rust `Rlimit`.
-#[cfg(not(any(target_os = "fuchsia", target_os = "redox", target_os = "wasi")))]
-fn rlimit_to_libc(lim: Rlimit) -> io::Result<libc_rlimit> {
- let Rlimit { current, maximum } = lim;
- let rlim_cur = match current {
- Some(r) => r.try_into().map_err(|_e| io::Errno::INVAL)?,
- None => LIBC_RLIM_INFINITY as _,
- };
- let rlim_max = match maximum {
- Some(r) => r.try_into().map_err(|_e| io::Errno::INVAL)?,
- None => LIBC_RLIM_INFINITY as _,
- };
- Ok(libc_rlimit { rlim_cur, rlim_max })
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-pub(crate) fn wait(waitopts: WaitOptions) -> io::Result<Option<(Pid, WaitStatus)>> {
- _waitpid(!0, waitopts)
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-pub(crate) fn waitpid(
- pid: Option<Pid>,
- waitopts: WaitOptions,
-) -> io::Result<Option<(Pid, WaitStatus)>> {
- _waitpid(Pid::as_raw(pid), waitopts)
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-pub(crate) fn _waitpid(
- pid: RawPid,
- waitopts: WaitOptions,
-) -> io::Result<Option<(Pid, WaitStatus)>> {
- unsafe {
- let mut status: c::c_int = 0;
- let pid = ret_c_int(c::waitpid(pid as _, &mut status, waitopts.bits() as _))?;
- Ok(RawNonZeroPid::new(pid).map(|non_zero| {
- (
- Pid::from_raw_nonzero(non_zero),
- WaitStatus::new(status as _),
- )
- }))
- }
-}
-
-#[cfg(not(any(target_os = "wasi", target_os = "redox", target_os = "openbsd")))]
-#[inline]
-pub(crate) fn waitid(id: WaitId<'_>, options: WaitidOptions) -> io::Result<Option<WaitidStatus>> {
- // Get the id to wait on.
- match id {
- WaitId::All => _waitid_all(options),
- WaitId::Pid(pid) => _waitid_pid(pid, options),
- #[cfg(target_os = "linux")]
- WaitId::PidFd(fd) => _waitid_pidfd(fd, options),
- #[cfg(not(target_os = "linux"))]
- WaitId::__EatLifetime(_) => unreachable!(),
- }
-}
-
-#[cfg(not(any(target_os = "wasi", target_os = "redox", target_os = "openbsd")))]
-#[inline]
-fn _waitid_all(options: WaitidOptions) -> io::Result<Option<WaitidStatus>> {
- let mut status = MaybeUninit::<c::siginfo_t>::uninit();
- unsafe {
- ret(c::waitid(
- c::P_ALL,
- 0,
- status.as_mut_ptr(),
- options.bits() as _,
- ))?
- };
-
- Ok(unsafe { cvt_waitid_status(status) })
-}
-
-#[cfg(not(any(target_os = "wasi", target_os = "redox", target_os = "openbsd")))]
-#[inline]
-fn _waitid_pid(pid: Pid, options: WaitidOptions) -> io::Result<Option<WaitidStatus>> {
- let mut status = MaybeUninit::<c::siginfo_t>::uninit();
- unsafe {
- ret(c::waitid(
- c::P_PID,
- Pid::as_raw(Some(pid)) as _,
- status.as_mut_ptr(),
- options.bits() as _,
- ))?
- };
-
- Ok(unsafe { cvt_waitid_status(status) })
-}
-
-#[cfg(target_os = "linux")]
-#[inline]
-fn _waitid_pidfd(fd: BorrowedFd<'_>, options: WaitidOptions) -> io::Result<Option<WaitidStatus>> {
- let mut status = MaybeUninit::<c::siginfo_t>::uninit();
- unsafe {
- ret(c::waitid(
- c::P_PIDFD,
- fd.as_raw_fd() as _,
- status.as_mut_ptr(),
- options.bits() as _,
- ))?
- };
-
- Ok(unsafe { cvt_waitid_status(status) })
-}
-
-/// Convert a `siginfo_t` to a `WaitidStatus`.
-///
-/// # Safety
-///
-/// The caller must ensure that `status` is initialized and that `waitid`
-/// returned successfully.
-#[cfg(not(any(target_os = "wasi", target_os = "redox", target_os = "openbsd")))]
-#[inline]
-unsafe fn cvt_waitid_status(status: MaybeUninit<c::siginfo_t>) -> Option<WaitidStatus> {
- let status = status.assume_init();
- if status.si_signo == 0 {
- None
- } else {
- Some(WaitidStatus(status))
- }
-}
-
-#[inline]
-pub(crate) fn exit_group(code: c::c_int) -> ! {
- // `_exit` and `_Exit` are the same; it's just a matter of which ones
- // the libc bindings expose.
- #[cfg(any(target_os = "wasi", target_os = "solid"))]
- unsafe {
- c::_Exit(code)
- }
- #[cfg(unix)]
- unsafe {
- c::_exit(code)
- }
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-pub(crate) fn setsid() -> io::Result<Pid> {
- unsafe {
- let pid = ret_c_int(c::setsid())?;
- debug_assert_ne!(pid, 0);
- Ok(Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(pid)))
- }
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-pub(crate) fn kill_process(pid: Pid, sig: Signal) -> io::Result<()> {
- unsafe { ret(c::kill(pid.as_raw_nonzero().get(), sig as i32)) }
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-pub(crate) fn kill_process_group(pid: Pid, sig: Signal) -> io::Result<()> {
- unsafe {
- ret(c::kill(
- pid.as_raw_nonzero().get().wrapping_neg(),
- sig as i32,
- ))
- }
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-pub(crate) fn kill_current_process_group(sig: Signal) -> io::Result<()> {
- unsafe { ret(c::kill(0, sig as i32)) }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub(crate) unsafe fn prctl(
- option: c::c_int,
- arg2: *mut c::c_void,
- arg3: *mut c::c_void,
- arg4: *mut c::c_void,
- arg5: *mut c::c_void,
-) -> io::Result<c::c_int> {
- ret_c_int(c::prctl(option, arg2, arg3, arg4, arg5))
-}
-
-#[cfg(freebsdlike)]
-#[inline]
-pub(crate) unsafe fn procctl(
- idtype: c::idtype_t,
- id: c::id_t,
- option: c::c_int,
- data: *mut c::c_void,
-) -> io::Result<()> {
- ret(c::procctl(idtype, id, option, data))
-}
-
-#[cfg(target_os = "linux")]
-pub(crate) fn pidfd_open(pid: Pid, flags: PidfdFlags) -> io::Result<OwnedFd> {
- unsafe {
- syscall_ret_owned_fd(libc::syscall(
- c::SYS_pidfd_open,
- pid.as_raw_nonzero().get(),
- flags.bits(),
- ))
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/process/types.rs b/vendor/rustix-0.37.6/src/backend/libc/process/types.rs
deleted file mode 100644
index 203186b20..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/process/types.rs
+++ /dev/null
@@ -1,335 +0,0 @@
-use super::super::c;
-
-/// A command for use with [`membarrier`] and [`membarrier_cpu`].
-///
-/// For `MEMBARRIER_CMD_QUERY`, see [`membarrier_query`].
-///
-/// [`membarrier`]: crate::process::membarrier
-/// [`membarrier_cpu`]: crate::process::membarrier_cpu
-/// [`membarrier_query`]: crate::process::membarrier_query
-// TODO: These are not yet exposed through libc, so we define the
-// constants ourselves.
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[derive(Copy, Clone, Eq, PartialEq, Debug)]
-#[repr(u32)]
-pub enum MembarrierCommand {
- /// `MEMBARRIER_CMD_GLOBAL`
- #[doc(alias = "Shared")]
- #[doc(alias = "MEMBARRIER_CMD_SHARED")]
- Global = 1,
- /// `MEMBARRIER_CMD_GLOBAL_EXPEDITED`
- GlobalExpedited = 2,
- /// `MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED`
- RegisterGlobalExpedited = 4,
- /// `MEMBARRIER_CMD_PRIVATE_EXPEDITED`
- PrivateExpedited = 8,
- /// `MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED`
- RegisterPrivateExpedited = 16,
- /// `MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE`
- PrivateExpeditedSyncCore = 32,
- /// `MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE`
- RegisterPrivateExpeditedSyncCore = 64,
- /// `MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ` (since Linux 5.10)
- PrivateExpeditedRseq = 128,
- /// `MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ` (since Linux 5.10)
- RegisterPrivateExpeditedRseq = 256,
-}
-
-/// A resource value for use with [`getrlimit`], [`setrlimit`], and
-/// [`prlimit`].
-///
-/// [`getrlimit`]: crate::process::getrlimit
-/// [`setrlimit`]: crate::process::setrlimit
-/// [`prlimit`]: crate::process::prlimit
-#[cfg(not(any(target_os = "fuchsia", target_os = "redox", target_os = "wasi")))]
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-#[repr(i32)]
-pub enum Resource {
- /// `RLIMIT_CPU`
- Cpu = c::RLIMIT_CPU as c::c_int,
- /// `RLIMIT_FSIZE`
- Fsize = c::RLIMIT_FSIZE as c::c_int,
- /// `RLIMIT_DATA`
- Data = c::RLIMIT_DATA as c::c_int,
- /// `RLIMIT_STACK`
- Stack = c::RLIMIT_STACK as c::c_int,
- /// `RLIMIT_CORE`
- #[cfg(not(target_os = "haiku"))]
- Core = c::RLIMIT_CORE as c::c_int,
- /// `RLIMIT_RSS`
- #[cfg(not(any(apple, solarish, target_os = "haiku")))]
- Rss = c::RLIMIT_RSS as c::c_int,
- /// `RLIMIT_NPROC`
- #[cfg(not(any(solarish, target_os = "haiku")))]
- Nproc = c::RLIMIT_NPROC as c::c_int,
- /// `RLIMIT_NOFILE`
- Nofile = c::RLIMIT_NOFILE as c::c_int,
- /// `RLIMIT_MEMLOCK`
- #[cfg(not(any(solarish, target_os = "aix", target_os = "haiku")))]
- Memlock = c::RLIMIT_MEMLOCK as c::c_int,
- /// `RLIMIT_AS`
- #[cfg(not(target_os = "openbsd"))]
- As = c::RLIMIT_AS as c::c_int,
- /// `RLIMIT_LOCKS`
- #[cfg(not(any(bsd, solarish, target_os = "aix", target_os = "haiku")))]
- Locks = c::RLIMIT_LOCKS as c::c_int,
- /// `RLIMIT_SIGPENDING`
- #[cfg(not(any(bsd, solarish, target_os = "aix", target_os = "haiku")))]
- Sigpending = c::RLIMIT_SIGPENDING as c::c_int,
- /// `RLIMIT_MSGQUEUE`
- #[cfg(not(any(bsd, solarish, target_os = "aix", target_os = "haiku")))]
- Msgqueue = c::RLIMIT_MSGQUEUE as c::c_int,
- /// `RLIMIT_NICE`
- #[cfg(not(any(bsd, solarish, target_os = "aix", target_os = "haiku")))]
- Nice = c::RLIMIT_NICE as c::c_int,
- /// `RLIMIT_RTPRIO`
- #[cfg(not(any(bsd, solarish, target_os = "aix", target_os = "haiku")))]
- Rtprio = c::RLIMIT_RTPRIO as c::c_int,
- /// `RLIMIT_RTTIME`
- #[cfg(not(any(
- bsd,
- solarish,
- target_os = "aix",
- target_os = "android",
- target_os = "emscripten",
- target_os = "haiku",
- )))]
- Rttime = c::RLIMIT_RTTIME as c::c_int,
-}
-
-#[cfg(apple)]
-impl Resource {
- /// `RLIMIT_RSS`
- #[allow(non_upper_case_globals)]
- pub const Rss: Self = Self::As;
-}
-
-/// A signal number for use with [`kill_process`], [`kill_process_group`],
-/// and [`kill_current_process_group`].
-///
-/// [`kill_process`]: crate::process::kill_process
-/// [`kill_process_group`]: crate::process::kill_process_group
-/// [`kill_current_process_group`]: crate::process::kill_current_process_group
-#[cfg(not(target_os = "wasi"))]
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-#[repr(i32)]
-pub enum Signal {
- /// `SIGHUP`
- Hup = c::SIGHUP,
- /// `SIGINT`
- Int = c::SIGINT,
- /// `SIGQUIT`
- Quit = c::SIGQUIT,
- /// `SIGILL`
- Ill = c::SIGILL,
- /// `SIGTRAP`
- Trap = c::SIGTRAP,
- /// `SIGABRT`, aka `SIGIOT`
- #[doc(alias = "Iot")]
- #[doc(alias = "Abrt")]
- Abort = c::SIGABRT,
- /// `SIGBUS`
- Bus = c::SIGBUS,
- /// `SIGFPE`
- Fpe = c::SIGFPE,
- /// `SIGKILL`
- Kill = c::SIGKILL,
- /// `SIGUSR1`
- Usr1 = c::SIGUSR1,
- /// `SIGSEGV`
- Segv = c::SIGSEGV,
- /// `SIGUSR2`
- Usr2 = c::SIGUSR2,
- /// `SIGPIPE`
- Pipe = c::SIGPIPE,
- /// `SIGALRM`
- #[doc(alias = "Alrm")]
- Alarm = c::SIGALRM,
- /// `SIGTERM`
- Term = c::SIGTERM,
- /// `SIGSTKFLT`
- #[cfg(not(any(
- bsd,
- solarish,
- target_os = "aix",
- target_os = "haiku",
- all(
- any(target_os = "android", target_os = "linux"),
- any(
- target_arch = "mips",
- target_arch = "mips64",
- target_arch = "sparc",
- target_arch = "sparc64"
- ),
- )
- )))]
- Stkflt = c::SIGSTKFLT,
- /// `SIGCHLD`
- #[doc(alias = "Chld")]
- Child = c::SIGCHLD,
- /// `SIGCONT`
- Cont = c::SIGCONT,
- /// `SIGSTOP`
- Stop = c::SIGSTOP,
- /// `SIGTSTP`
- Tstp = c::SIGTSTP,
- /// `SIGTTIN`
- Ttin = c::SIGTTIN,
- /// `SIGTTOU`
- Ttou = c::SIGTTOU,
- /// `SIGURG`
- Urg = c::SIGURG,
- /// `SIGXCPU`
- Xcpu = c::SIGXCPU,
- /// `SIGXFSZ`
- Xfsz = c::SIGXFSZ,
- /// `SIGVTALRM`
- #[doc(alias = "Vtalrm")]
- Vtalarm = c::SIGVTALRM,
- /// `SIGPROF`
- Prof = c::SIGPROF,
- /// `SIGWINCH`
- Winch = c::SIGWINCH,
- /// `SIGIO`, aka `SIGPOLL`
- #[doc(alias = "Poll")]
- #[cfg(not(target_os = "haiku"))]
- Io = c::SIGIO,
- /// `SIGPWR`
- #[cfg(not(any(bsd, target_os = "haiku")))]
- #[doc(alias = "Pwr")]
- Power = c::SIGPWR,
- /// `SIGSYS`, aka `SIGUNUSED`
- #[doc(alias = "Unused")]
- Sys = c::SIGSYS,
- /// `SIGEMT`
- #[cfg(bsd)]
- Emt = c::SIGEMT,
- /// `SIGINFO`
- #[cfg(bsd)]
- Info = c::SIGINFO,
- /// `SIGTHR`
- #[cfg(target_os = "freebsd")]
- #[doc(alias = "Lwp")]
- Thr = c::SIGTHR,
- /// `SIGLIBRT`
- #[cfg(target_os = "freebsd")]
- Librt = c::SIGLIBRT,
-}
-
-#[cfg(not(target_os = "wasi"))]
-impl Signal {
- /// Convert a raw signal number into a `Signal`, if possible.
- pub fn from_raw(sig: i32) -> Option<Self> {
- match sig as _ {
- c::SIGHUP => Some(Self::Hup),
- c::SIGINT => Some(Self::Int),
- c::SIGQUIT => Some(Self::Quit),
- c::SIGILL => Some(Self::Ill),
- c::SIGTRAP => Some(Self::Trap),
- c::SIGABRT => Some(Self::Abort),
- c::SIGBUS => Some(Self::Bus),
- c::SIGFPE => Some(Self::Fpe),
- c::SIGKILL => Some(Self::Kill),
- c::SIGUSR1 => Some(Self::Usr1),
- c::SIGSEGV => Some(Self::Segv),
- c::SIGUSR2 => Some(Self::Usr2),
- c::SIGPIPE => Some(Self::Pipe),
- c::SIGALRM => Some(Self::Alarm),
- c::SIGTERM => Some(Self::Term),
- #[cfg(not(any(
- bsd,
- solarish,
- target_os = "aix",
- target_os = "haiku",
- all(
- any(target_os = "android", target_os = "linux"),
- any(
- target_arch = "mips",
- target_arch = "mips64",
- target_arch = "sparc",
- target_arch = "sparc64"
- ),
- )
- )))]
- c::SIGSTKFLT => Some(Self::Stkflt),
- c::SIGCHLD => Some(Self::Child),
- c::SIGCONT => Some(Self::Cont),
- c::SIGSTOP => Some(Self::Stop),
- c::SIGTSTP => Some(Self::Tstp),
- c::SIGTTIN => Some(Self::Ttin),
- c::SIGTTOU => Some(Self::Ttou),
- c::SIGURG => Some(Self::Urg),
- c::SIGXCPU => Some(Self::Xcpu),
- c::SIGXFSZ => Some(Self::Xfsz),
- c::SIGVTALRM => Some(Self::Vtalarm),
- c::SIGPROF => Some(Self::Prof),
- c::SIGWINCH => Some(Self::Winch),
- #[cfg(not(target_os = "haiku"))]
- c::SIGIO => Some(Self::Io),
- #[cfg(not(any(bsd, target_os = "haiku")))]
- c::SIGPWR => Some(Self::Power),
- c::SIGSYS => Some(Self::Sys),
- #[cfg(bsd)]
- c::SIGEMT => Some(Self::Emt),
- #[cfg(bsd)]
- c::SIGINFO => Some(Self::Info),
- #[cfg(target_os = "freebsd")]
- c::SIGTHR => Some(Self::Thr),
- #[cfg(target_os = "freebsd")]
- c::SIGLIBRT => Some(Self::Librt),
- _ => None,
- }
- }
-}
-
-pub const EXIT_SUCCESS: c::c_int = c::EXIT_SUCCESS;
-pub const EXIT_FAILURE: c::c_int = c::EXIT_FAILURE;
-#[cfg(not(target_os = "wasi"))]
-pub const EXIT_SIGNALED_SIGABRT: c::c_int = 128 + c::SIGABRT;
-
-/// A process identifier as a raw integer.
-#[cfg(not(target_os = "wasi"))]
-pub type RawPid = c::pid_t;
-/// A non-zero process identifier as a raw non-zero integer.
-#[cfg(not(target_os = "wasi"))]
-pub type RawNonZeroPid = core::num::NonZeroI32;
-/// A group identifier as a raw integer.
-#[cfg(not(target_os = "wasi"))]
-pub type RawGid = c::gid_t;
-/// A user identifier as a raw integer.
-#[cfg(not(target_os = "wasi"))]
-pub type RawUid = c::uid_t;
-/// A CPU identifier as a raw integer.
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub type RawCpuid = u32;
-#[cfg(target_os = "freebsd")]
-pub type RawId = c::id_t;
-
-#[cfg(not(target_os = "wasi"))]
-pub(crate) type RawUname = c::utsname;
-
-#[cfg(any(
- target_os = "android",
- target_os = "dragonfly",
- target_os = "fuchsia",
- target_os = "linux",
-))]
-pub(crate) type RawCpuSet = c::cpu_set_t;
-
-#[cfg(any(
- target_os = "android",
- target_os = "dragonfly",
- target_os = "fuchsia",
- target_os = "linux",
-))]
-#[inline]
-pub(crate) fn raw_cpu_set_new() -> RawCpuSet {
- let mut set = unsafe { core::mem::zeroed() };
- super::cpu_set::CPU_ZERO(&mut set);
- set
-}
-
-#[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))]
-pub(crate) const CPU_SETSIZE: usize = c::CPU_SETSIZE as usize;
-#[cfg(target_os = "dragonfly")]
-pub(crate) const CPU_SETSIZE: usize = 256;
diff --git a/vendor/rustix-0.37.6/src/backend/libc/process/wait.rs b/vendor/rustix-0.37.6/src/backend/libc/process/wait.rs
deleted file mode 100644
index c09ee1002..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/process/wait.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-use super::super::c;
-
-pub(crate) use c::{
- WCONTINUED, WEXITSTATUS, WIFCONTINUED, WIFEXITED, WIFSIGNALED, WIFSTOPPED, WNOHANG, WSTOPSIG,
- WTERMSIG, WUNTRACED,
-};
-
-#[cfg(not(any(target_os = "openbsd", target_os = "redox", target_os = "wasi")))]
-pub(crate) use c::{WEXITED, WNOWAIT, WSTOPPED};
diff --git a/vendor/rustix-0.37.6/src/backend/libc/rand/syscalls.rs b/vendor/rustix-0.37.6/src/backend/libc/rand/syscalls.rs
deleted file mode 100644
index ce1746055..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/rand/syscalls.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-//! libc syscalls supporting `rustix::rand`.
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use {super::super::c, super::super::conv::ret_ssize_t, crate::io, crate::rand::GetRandomFlags};
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub(crate) fn getrandom(buf: &mut [u8], flags: GetRandomFlags) -> io::Result<usize> {
- // `getrandom` wasn't supported in glibc until 2.25.
- weak_or_syscall! {
- fn getrandom(buf: *mut c::c_void, buflen: c::size_t, flags: c::c_uint) via SYS_getrandom -> c::ssize_t
- }
-
- let nread =
- unsafe { ret_ssize_t(getrandom(buf.as_mut_ptr().cast(), buf.len(), flags.bits()))? };
- Ok(nread as usize)
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/rand/types.rs b/vendor/rustix-0.37.6/src/backend/libc/rand/types.rs
deleted file mode 100644
index e12bd9cbd..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/rand/types.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use super::super::c;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use bitflags::bitflags;
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-bitflags! {
- /// `GRND_*` flags for use with [`getrandom`].
- ///
- /// [`getrandom`]: crate::rand::getrandom
- pub struct GetRandomFlags: u32 {
- /// `GRND_RANDOM`
- const RANDOM = c::GRND_RANDOM;
- /// `GRND_NONBLOCK`
- const NONBLOCK = c::GRND_NONBLOCK;
- /// `GRND_INSECURE`
- const INSECURE = c::GRND_INSECURE;
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/termios/mod.rs b/vendor/rustix-0.37.6/src/backend/libc/termios/mod.rs
deleted file mode 100644
index c82c95958..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/termios/mod.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-pub(crate) mod syscalls;
-#[cfg(not(target_os = "wasi"))]
-pub(crate) mod types;
diff --git a/vendor/rustix-0.37.6/src/backend/libc/termios/syscalls.rs b/vendor/rustix-0.37.6/src/backend/libc/termios/syscalls.rs
deleted file mode 100644
index 097d368ed..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/termios/syscalls.rs
+++ /dev/null
@@ -1,211 +0,0 @@
-//! libc syscalls supporting `rustix::termios`.
-//!
-//! # Safety
-//!
-//! See the `rustix::backend::syscalls` module documentation for details.
-
-use super::super::c;
-use super::super::conv::{borrowed_fd, ret, ret_pid_t};
-use crate::fd::BorrowedFd;
-#[cfg(feature = "procfs")]
-#[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))]
-use crate::ffi::CStr;
-#[cfg(not(target_os = "wasi"))]
-use crate::io;
-#[cfg(not(target_os = "wasi"))]
-use crate::process::{Pid, RawNonZeroPid};
-#[cfg(not(target_os = "wasi"))]
-use crate::termios::{Action, OptionalActions, QueueSelector, Speed, Termios, Winsize};
-use core::mem::MaybeUninit;
-
-#[cfg(not(target_os = "wasi"))]
-pub(crate) fn tcgetattr(fd: BorrowedFd<'_>) -> io::Result<Termios> {
- let mut result = MaybeUninit::<Termios>::uninit();
- unsafe {
- ret(c::tcgetattr(borrowed_fd(fd), result.as_mut_ptr()))?;
- Ok(result.assume_init())
- }
-}
-
-#[cfg(all(
- any(target_os = "android", target_os = "linux"),
- any(
- target_arch = "x86",
- target_arch = "x86_64",
- target_arch = "x32",
- target_arch = "riscv64",
- target_arch = "aarch64",
- target_arch = "arm",
- target_arch = "mips",
- target_arch = "mips64",
- )
-))]
-pub(crate) fn tcgetattr2(fd: BorrowedFd<'_>) -> io::Result<crate::termios::Termios2> {
- let mut result = MaybeUninit::<crate::termios::Termios2>::uninit();
- unsafe {
- ret(c::ioctl(borrowed_fd(fd), c::TCGETS2, result.as_mut_ptr()))?;
- Ok(result.assume_init())
- }
-}
-
-#[cfg(not(target_os = "wasi"))]
-pub(crate) fn tcgetpgrp(fd: BorrowedFd<'_>) -> io::Result<Pid> {
- unsafe {
- let pid = ret_pid_t(c::tcgetpgrp(borrowed_fd(fd)))?;
- debug_assert_ne!(pid, 0);
- Ok(Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(pid)))
- }
-}
-
-#[cfg(not(target_os = "wasi"))]
-pub(crate) fn tcsetpgrp(fd: BorrowedFd<'_>, pid: Pid) -> io::Result<()> {
- unsafe { ret(c::tcsetpgrp(borrowed_fd(fd), pid.as_raw_nonzero().get())) }
-}
-
-#[cfg(not(target_os = "wasi"))]
-pub(crate) fn tcsetattr(
- fd: BorrowedFd,
- optional_actions: OptionalActions,
- termios: &Termios,
-) -> io::Result<()> {
- unsafe {
- ret(c::tcsetattr(
- borrowed_fd(fd),
- optional_actions as _,
- termios,
- ))
- }
-}
-
-#[cfg(all(
- any(target_os = "android", target_os = "linux"),
- any(
- target_arch = "x86",
- target_arch = "x86_64",
- target_arch = "x32",
- target_arch = "riscv64",
- target_arch = "aarch64",
- target_arch = "arm",
- target_arch = "mips",
- target_arch = "mips64",
- )
-))]
-pub(crate) fn tcsetattr2(
- fd: BorrowedFd,
- optional_actions: OptionalActions,
- termios: &crate::termios::Termios2,
-) -> io::Result<()> {
- unsafe {
- ret(c::ioctl(
- borrowed_fd(fd),
- (c::TCSETS2 as u32 + optional_actions as u32) as _,
- termios,
- ))
- }
-}
-
-#[cfg(not(target_os = "wasi"))]
-pub(crate) fn tcsendbreak(fd: BorrowedFd) -> io::Result<()> {
- unsafe { ret(c::tcsendbreak(borrowed_fd(fd), 0)) }
-}
-
-#[cfg(not(target_os = "wasi"))]
-pub(crate) fn tcdrain(fd: BorrowedFd) -> io::Result<()> {
- unsafe { ret(c::tcdrain(borrowed_fd(fd))) }
-}
-
-#[cfg(not(target_os = "wasi"))]
-pub(crate) fn tcflush(fd: BorrowedFd, queue_selector: QueueSelector) -> io::Result<()> {
- unsafe { ret(c::tcflush(borrowed_fd(fd), queue_selector as _)) }
-}
-
-#[cfg(not(target_os = "wasi"))]
-pub(crate) fn tcflow(fd: BorrowedFd, action: Action) -> io::Result<()> {
- unsafe { ret(c::tcflow(borrowed_fd(fd), action as _)) }
-}
-
-#[cfg(not(target_os = "wasi"))]
-pub(crate) fn tcgetsid(fd: BorrowedFd) -> io::Result<Pid> {
- unsafe {
- let pid = ret_pid_t(c::tcgetsid(borrowed_fd(fd)))?;
- debug_assert_ne!(pid, 0);
- Ok(Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(pid)))
- }
-}
-
-#[cfg(not(target_os = "wasi"))]
-pub(crate) fn tcsetwinsize(fd: BorrowedFd, winsize: Winsize) -> io::Result<()> {
- unsafe { ret(c::ioctl(borrowed_fd(fd), c::TIOCSWINSZ, &winsize)) }
-}
-
-#[cfg(not(target_os = "wasi"))]
-pub(crate) fn tcgetwinsize(fd: BorrowedFd) -> io::Result<Winsize> {
- unsafe {
- let mut buf = MaybeUninit::<Winsize>::uninit();
- ret(c::ioctl(
- borrowed_fd(fd),
- c::TIOCGWINSZ.into(),
- buf.as_mut_ptr(),
- ))?;
- Ok(buf.assume_init())
- }
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-#[must_use]
-pub(crate) fn cfgetospeed(termios: &Termios) -> Speed {
- unsafe { c::cfgetospeed(termios) }
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-#[must_use]
-pub(crate) fn cfgetispeed(termios: &Termios) -> Speed {
- unsafe { c::cfgetispeed(termios) }
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-pub(crate) fn cfmakeraw(termios: &mut Termios) {
- unsafe { c::cfmakeraw(termios) }
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-pub(crate) fn cfsetospeed(termios: &mut Termios, speed: Speed) -> io::Result<()> {
- unsafe { ret(c::cfsetospeed(termios, speed)) }
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-pub(crate) fn cfsetispeed(termios: &mut Termios, speed: Speed) -> io::Result<()> {
- unsafe { ret(c::cfsetispeed(termios, speed)) }
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-pub(crate) fn cfsetspeed(termios: &mut Termios, speed: Speed) -> io::Result<()> {
- unsafe { ret(c::cfsetspeed(termios, speed)) }
-}
-
-pub(crate) fn isatty(fd: BorrowedFd<'_>) -> bool {
- // Use the return value of `isatty` alone. We don't check `errno` because
- // we return `bool` rather than `io::Result<bool>`, because we assume
- // `BorrrowedFd` protects us from `EBADF`, and any other reasonably
- // anticipated errno value would end up interpreted as "assume it's not a
- // terminal" anyway.
- unsafe { c::isatty(borrowed_fd(fd)) != 0 }
-}
-
-#[cfg(feature = "procfs")]
-#[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))]
-pub(crate) fn ttyname(dirfd: BorrowedFd<'_>, buf: &mut [u8]) -> io::Result<usize> {
- unsafe {
- // `ttyname_r` returns its error status rather than using `errno`.
- match c::ttyname_r(borrowed_fd(dirfd), buf.as_mut_ptr().cast(), buf.len()) {
- 0 => Ok(CStr::from_ptr(buf.as_ptr().cast()).to_bytes().len()),
- err => Err(io::Errno::from_raw_os_error(err)),
- }
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/termios/types.rs b/vendor/rustix-0.37.6/src/backend/libc/termios/types.rs
deleted file mode 100644
index bbacdbea0..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/termios/types.rs
+++ /dev/null
@@ -1,780 +0,0 @@
-use super::super::c;
-
-/// `TCSA*` values for use with [`tcsetattr`].
-///
-/// [`tcsetattr`]: crate::termios::tcsetattr
-#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
-#[repr(i32)]
-pub enum OptionalActions {
- /// `TCSANOW`—Make the change immediately.
- #[doc(alias = "TCSANOW")]
- Now = c::TCSANOW,
-
- /// `TCSADRAIN`—Make the change after all output has been transmitted.
- #[doc(alias = "TCSADRAIN")]
- Drain = c::TCSADRAIN,
-
- /// `TCSAFLUSH`—Discard any pending input and then make the change
- /// after all output has been transmitted.
- #[doc(alias = "TCSAFLUSH")]
- Flush = c::TCSAFLUSH,
-}
-
-/// `TC*` values for use with [`tcflush`].
-///
-/// [`tcflush`]: crate::termios::tcflush
-#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
-#[repr(i32)]
-pub enum QueueSelector {
- /// `TCIFLUSH`—Flush data received but not read.
- #[doc(alias = "TCIFLUSH")]
- IFlush = c::TCIFLUSH,
-
- /// `TCOFLUSH`—Flush data written but not transmitted.
- #[doc(alias = "TCOFLUSH")]
- OFlush = c::TCOFLUSH,
-
- /// `TCIOFLUSH`—`IFlush` and `OFlush` combined.
- #[doc(alias = "TCIOFLUSH")]
- IOFlush = c::TCIOFLUSH,
-}
-
-/// `TC*` values for use with [`tcflow`].
-///
-/// [`tcflow`]: crate::termios::tcflow
-#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
-#[repr(i32)]
-pub enum Action {
- /// `TCOOFF`—Suspend output.
- #[doc(alias = "TCOOFF")]
- OOff = c::TCOOFF,
-
- /// `TCOON`—Restart suspended output.
- #[doc(alias = "TCOON")]
- OOn = c::TCOON,
-
- /// `TCIOFF`—Transmits a STOP byte.
- #[doc(alias = "TCIOFF")]
- IOff = c::TCIOFF,
-
- /// `TCION`—Transmits a START byte.
- #[doc(alias = "TCION")]
- IOn = c::TCION,
-}
-
-/// `struct termios` for use with [`tcgetattr`] and [`tcsetattr`].
-///
-/// [`tcgetattr`]: crate::termios::tcgetattr
-/// [`tcsetattr`]: crate::termios::tcsetattr
-#[doc(alias = "termios")]
-pub type Termios = c::termios;
-
-/// `struct termios2` for use with [`tcgetattr2`] and [`tcsetattr2`].
-///
-/// [`tcgetattr2`]: crate::termios::tcgetattr2
-/// [`tcsetattr2`]: crate::termios::tcsetattr2
-#[cfg(all(
- any(target_os = "android", target_os = "linux"),
- any(
- target_arch = "x86",
- target_arch = "x86_64",
- target_arch = "x32",
- target_arch = "riscv64",
- target_arch = "aarch64",
- target_arch = "arm",
- target_arch = "mips",
- target_arch = "mips64",
- )
-))]
-#[doc(alias = "termios2")]
-pub type Termios2 = c::termios2;
-
-/// `struct winsize` for use with [`tcgetwinsize`].
-///
-/// [`tcgetwinsize`]: crate::termios::tcgetwinsize
-#[doc(alias = "winsize")]
-pub type Winsize = c::winsize;
-
-/// `tcflag_t`—A type for the flags fields of [`Termios`].
-#[doc(alias = "tcflag_t")]
-pub type Tcflag = c::tcflag_t;
-
-/// `speed_t`—A return type for [`cfsetspeed`] and similar.
-///
-/// [`cfsetspeed`]: crate::termios::cfsetspeed
-#[doc(alias = "speed_t")]
-pub type Speed = c::speed_t;
-
-/// `VINTR`
-pub const VINTR: usize = c::VINTR as usize;
-
-/// `VQUIT`
-pub const VQUIT: usize = c::VQUIT as usize;
-
-/// `VERASE`
-pub const VERASE: usize = c::VERASE as usize;
-
-/// `VKILL`
-pub const VKILL: usize = c::VKILL as usize;
-
-/// `VEOF`
-pub const VEOF: usize = c::VEOF as usize;
-
-/// `VTIME`
-pub const VTIME: usize = c::VTIME as usize;
-
-/// `VMIN`
-pub const VMIN: usize = c::VMIN as usize;
-
-/// `VSWTC`
-#[cfg(not(any(
- apple,
- solarish,
- target_os = "aix",
- target_os = "dragonfly",
- target_os = "freebsd",
- target_os = "haiku",
- target_os = "netbsd",
- target_os = "openbsd",
-)))]
-pub const VSWTC: usize = c::VSWTC as usize;
-
-/// `VSTART`
-pub const VSTART: usize = c::VSTART as usize;
-
-/// `VSTOP`
-pub const VSTOP: usize = c::VSTOP as usize;
-
-/// `VSUSP`
-pub const VSUSP: usize = c::VSUSP as usize;
-
-/// `VEOL`
-pub const VEOL: usize = c::VEOL as usize;
-
-/// `VREPRINT`
-#[cfg(not(target_os = "haiku"))]
-pub const VREPRINT: usize = c::VREPRINT as usize;
-
-/// `VDISCARD`
-#[cfg(not(any(target_os = "aix", target_os = "haiku")))]
-pub const VDISCARD: usize = c::VDISCARD as usize;
-
-/// `VWERASE`
-#[cfg(not(any(target_os = "aix", target_os = "haiku")))]
-pub const VWERASE: usize = c::VWERASE as usize;
-
-/// `VLNEXT`
-#[cfg(not(target_os = "haiku"))]
-pub const VLNEXT: usize = c::VLNEXT as usize;
-
-/// `VEOL2`
-pub const VEOL2: usize = c::VEOL2 as usize;
-
-/// `IGNBRK`
-#[cfg(not(apple))]
-pub const IGNBRK: c::c_uint = c::IGNBRK;
-
-/// `BRKINT`
-#[cfg(not(apple))]
-pub const BRKINT: c::c_uint = c::BRKINT;
-
-/// `IGNPAR`
-#[cfg(not(apple))]
-pub const IGNPAR: c::c_uint = c::IGNPAR;
-
-/// `PARMRK`
-#[cfg(not(apple))]
-pub const PARMRK: c::c_uint = c::PARMRK;
-
-/// `INPCK`
-#[cfg(not(apple))]
-pub const INPCK: c::c_uint = c::INPCK;
-
-/// `ISTRIP`
-#[cfg(not(apple))]
-pub const ISTRIP: c::c_uint = c::ISTRIP;
-
-/// `INLCR`
-#[cfg(not(apple))]
-pub const INLCR: c::c_uint = c::INLCR;
-
-/// `IGNCR`
-#[cfg(not(apple))]
-pub const IGNCR: c::c_uint = c::IGNCR;
-
-/// `ICRNL`
-#[cfg(not(apple))]
-pub const ICRNL: c::c_uint = c::ICRNL;
-
-/// `IUCLC`
-#[cfg(any(solarish, target_os = "haiku"))]
-pub const IUCLC: c::c_uint = c::IUCLC;
-
-/// `IXON`
-#[cfg(not(apple))]
-pub const IXON: c::c_uint = c::IXON;
-
-/// `IXANY`
-#[cfg(not(any(apple, target_os = "redox")))]
-pub const IXANY: c::c_uint = c::IXANY;
-
-/// `IXOFF`
-#[cfg(not(apple))]
-pub const IXOFF: c::c_uint = c::IXOFF;
-
-/// `IMAXBEL`
-#[cfg(not(any(apple, target_os = "haiku", target_os = "redox")))]
-pub const IMAXBEL: c::c_uint = c::IMAXBEL;
-
-/// `IUTF8`
-#[cfg(not(any(
- apple,
- solarish,
- target_os = "aix",
- target_os = "dragonfly",
- target_os = "emscripten",
- target_os = "freebsd",
- target_os = "haiku",
- target_os = "netbsd",
- target_os = "openbsd",
- target_os = "redox",
-)))]
-pub const IUTF8: c::c_uint = c::IUTF8;
-
-/// `OPOST`
-#[cfg(not(apple))]
-pub const OPOST: c::c_uint = c::OPOST;
-
-/// `OLCUC`
-#[cfg(not(any(
- apple,
- target_os = "aix",
- target_os = "dragonfly",
- target_os = "freebsd",
- target_os = "netbsd",
- target_os = "redox",
-)))]
-pub const OLCUC: c::c_uint = c::OLCUC;
-
-/// `ONLCR`
-#[cfg(not(apple))]
-pub const ONLCR: c::c_uint = c::ONLCR;
-
-/// `OCRNL`
-#[cfg(not(apple))]
-pub const OCRNL: c::c_uint = c::OCRNL;
-
-/// `ONOCR`
-#[cfg(not(apple))]
-pub const ONOCR: c::c_uint = c::ONOCR;
-
-/// `ONLRET`
-#[cfg(not(apple))]
-pub const ONLRET: c::c_uint = c::ONLRET;
-
-/// `OFILL`
-#[cfg(not(bsd))]
-pub const OFILL: c::c_uint = c::OFILL;
-
-/// `OFDEL`
-#[cfg(not(bsd))]
-pub const OFDEL: c::c_uint = c::OFDEL;
-
-/// `NLDLY`
-#[cfg(not(any(bsd, solarish, target_os = "redox")))]
-pub const NLDLY: c::c_uint = c::NLDLY;
-
-/// `NL0`
-#[cfg(not(any(bsd, solarish, target_os = "fuchsia", target_os = "redox")))]
-pub const NL0: c::c_uint = c::NL0;
-
-/// `NL1`
-#[cfg(not(any(bsd, solarish, target_os = "fuchsia", target_os = "redox")))]
-pub const NL1: c::c_uint = c::NL1;
-
-/// `CRDLY`
-#[cfg(not(any(bsd, solarish, target_os = "redox")))]
-pub const CRDLY: c::c_uint = c::CRDLY;
-
-/// `CR0`
-#[cfg(not(any(bsd, solarish, target_os = "fuchsia", target_os = "redox")))]
-pub const CR0: c::c_uint = c::CR0;
-
-/// `CR1`
-#[cfg(not(any(
- target_env = "musl",
- bsd,
- solarish,
- target_os = "emscripten",
- target_os = "fuchsia",
- target_os = "redox",
-)))]
-pub const CR1: c::c_uint = c::CR1;
-
-/// `CR2`
-#[cfg(not(any(
- target_env = "musl",
- bsd,
- solarish,
- target_os = "emscripten",
- target_os = "fuchsia",
- target_os = "redox",
-)))]
-pub const CR2: c::c_uint = c::CR2;
-
-/// `CR3`
-#[cfg(not(any(
- target_env = "musl",
- bsd,
- solarish,
- target_os = "emscripten",
- target_os = "fuchsia",
- target_os = "redox",
-)))]
-pub const CR3: c::c_uint = c::CR3;
-
-/// `TABDLY`
-#[cfg(not(any(
- apple,
- netbsdlike,
- solarish,
- target_os = "dragonfly",
- target_os = "redox",
-)))]
-pub const TABDLY: c::c_uint = c::TABDLY;
-
-/// `TAB0`
-#[cfg(not(any(
- apple,
- netbsdlike,
- solarish,
- target_os = "dragonfly",
- target_os = "fuchsia",
- target_os = "redox",
-)))]
-pub const TAB0: c::c_uint = c::TAB0;
-
-/// `TAB1`
-#[cfg(not(any(
- target_env = "musl",
- bsd,
- solarish,
- target_os = "emscripten",
- target_os = "fuchsia",
- target_os = "redox",
-)))]
-pub const TAB1: c::c_uint = c::TAB1;
-
-/// `TAB2`
-#[cfg(not(any(
- target_env = "musl",
- bsd,
- solarish,
- target_os = "emscripten",
- target_os = "fuchsia",
- target_os = "redox",
-)))]
-pub const TAB2: c::c_uint = c::TAB2;
-
-/// `TAB3`
-#[cfg(not(any(
- target_env = "musl",
- bsd,
- solarish,
- target_os = "emscripten",
- target_os = "fuchsia",
- target_os = "redox",
-)))]
-pub const TAB3: c::c_uint = c::TAB3;
-
-/// `BSDLY`
-#[cfg(not(any(bsd, solarish, target_os = "redox")))]
-pub const BSDLY: c::c_uint = c::BSDLY;
-
-/// `BS0`
-#[cfg(not(any(bsd, solarish, target_os = "fuchsia", target_os = "redox")))]
-pub const BS0: c::c_uint = c::BS0;
-
-/// `BS1`
-#[cfg(not(any(
- target_env = "musl",
- bsd,
- solarish,
- target_os = "emscripten",
- target_os = "fuchsia",
- target_os = "redox",
-)))]
-pub const BS1: c::c_uint = c::BS1;
-
-/// `FFDLY`
-#[cfg(not(any(target_env = "musl", bsd, solarish, target_os = "redox")))]
-pub const FFDLY: c::c_uint = c::FFDLY;
-
-/// `FF0`
-#[cfg(not(any(bsd, solarish, target_os = "fuchsia", target_os = "redox")))]
-pub const FF0: c::c_uint = c::FF0;
-
-/// `FF1`
-#[cfg(not(any(
- target_env = "musl",
- bsd,
- solarish,
- target_os = "emscripten",
- target_os = "fuchsia",
- target_os = "redox",
-)))]
-pub const FF1: c::c_uint = c::FF1;
-
-/// `VTDLY`
-#[cfg(not(any(target_env = "musl", bsd, solarish, target_os = "redox")))]
-pub const VTDLY: c::c_uint = c::VTDLY;
-
-/// `VT0`
-#[cfg(not(any(bsd, solarish, target_os = "fuchsia", target_os = "redox")))]
-pub const VT0: c::c_uint = c::VT0;
-
-/// `VT1`
-#[cfg(not(any(
- target_env = "musl",
- bsd,
- solarish,
- target_os = "emscripten",
- target_os = "fuchsia",
- target_os = "redox",
-)))]
-pub const VT1: c::c_uint = c::VT1;
-
-/// `B0`
-pub const B0: Speed = c::B0;
-
-/// `B50`
-pub const B50: Speed = c::B50;
-
-/// `B75`
-pub const B75: Speed = c::B75;
-
-/// `B110`
-pub const B110: Speed = c::B110;
-
-/// `B134`
-pub const B134: Speed = c::B134;
-
-/// `B150`
-pub const B150: Speed = c::B150;
-
-/// `B200`
-pub const B200: Speed = c::B200;
-
-/// `B300`
-pub const B300: Speed = c::B300;
-
-/// `B600`
-pub const B600: Speed = c::B600;
-
-/// `B1200`
-pub const B1200: Speed = c::B1200;
-
-/// `B1800`
-pub const B1800: Speed = c::B1800;
-
-/// `B2400`
-pub const B2400: Speed = c::B2400;
-
-/// `B4800`
-pub const B4800: Speed = c::B4800;
-
-/// `B9600`
-pub const B9600: Speed = c::B9600;
-
-/// `B19200`
-pub const B19200: Speed = c::B19200;
-
-/// `B38400`
-pub const B38400: Speed = c::B38400;
-
-/// `B57600`
-#[cfg(not(target_os = "aix"))]
-pub const B57600: Speed = c::B57600;
-
-/// `B115200`
-#[cfg(not(target_os = "aix"))]
-pub const B115200: Speed = c::B115200;
-
-/// `B230400`
-#[cfg(not(target_os = "aix"))]
-pub const B230400: Speed = c::B230400;
-
-/// `B460800`
-#[cfg(not(any(
- apple,
- target_os = "aix",
- target_os = "dragonfly",
- target_os = "haiku",
- target_os = "openbsd"
-)))]
-pub const B460800: Speed = c::B460800;
-
-/// `B500000`
-#[cfg(not(any(bsd, solarish, target_os = "aix", target_os = "haiku")))]
-pub const B500000: Speed = c::B500000;
-
-/// `B576000`
-#[cfg(not(any(bsd, solarish, target_os = "aix", target_os = "haiku")))]
-pub const B576000: Speed = c::B576000;
-
-/// `B921600`
-#[cfg(not(any(
- apple,
- target_os = "aix",
- target_os = "dragonfly",
- target_os = "haiku",
- target_os = "openbsd"
-)))]
-pub const B921600: Speed = c::B921600;
-
-/// `B1000000`
-#[cfg(not(any(bsd, target_os = "aix", target_os = "haiku", target_os = "solaris")))]
-pub const B1000000: Speed = c::B1000000;
-
-/// `B1152000`
-#[cfg(not(any(bsd, target_os = "aix", target_os = "haiku", target_os = "solaris")))]
-pub const B1152000: Speed = c::B1152000;
-
-/// `B1500000`
-#[cfg(not(any(bsd, target_os = "aix", target_os = "haiku", target_os = "solaris")))]
-pub const B1500000: Speed = c::B1500000;
-
-/// `B2000000`
-#[cfg(not(any(bsd, target_os = "aix", target_os = "haiku", target_os = "solaris")))]
-pub const B2000000: Speed = c::B2000000;
-
-/// `B2500000`
-#[cfg(not(any(
- target_arch = "sparc",
- target_arch = "sparc64",
- bsd,
- target_os = "aix",
- target_os = "haiku",
- target_os = "solaris",
-)))]
-pub const B2500000: Speed = c::B2500000;
-
-/// `B3000000`
-#[cfg(not(any(
- target_arch = "sparc",
- target_arch = "sparc64",
- bsd,
- target_os = "aix",
- target_os = "haiku",
- target_os = "solaris",
-)))]
-pub const B3000000: Speed = c::B3000000;
-
-/// `B3500000`
-#[cfg(not(any(
- target_arch = "sparc",
- target_arch = "sparc64",
- bsd,
- target_os = "aix",
- target_os = "haiku",
- target_os = "solaris",
-)))]
-pub const B3500000: Speed = c::B3500000;
-
-/// `B4000000`
-#[cfg(not(any(
- target_arch = "sparc",
- target_arch = "sparc64",
- bsd,
- target_os = "aix",
- target_os = "haiku",
- target_os = "solaris",
-)))]
-pub const B4000000: Speed = c::B4000000;
-
-/// `BOTHER`
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub const BOTHER: c::c_uint = c::BOTHER;
-
-/// `CSIZE`
-#[cfg(not(apple))]
-pub const CSIZE: c::c_uint = c::CSIZE;
-
-/// `CS5`
-#[cfg(not(apple))]
-pub const CS5: c::c_uint = c::CS5;
-
-/// `CS6`
-#[cfg(not(apple))]
-pub const CS6: c::c_uint = c::CS6;
-
-/// `CS7`
-#[cfg(not(apple))]
-pub const CS7: c::c_uint = c::CS7;
-
-/// `CS8`
-#[cfg(not(apple))]
-pub const CS8: c::c_uint = c::CS8;
-
-/// `CSTOPB`
-#[cfg(not(apple))]
-pub const CSTOPB: c::c_uint = c::CSTOPB;
-
-/// `CREAD`
-#[cfg(not(apple))]
-pub const CREAD: c::c_uint = c::CREAD;
-
-/// `PARENB`
-#[cfg(not(apple))]
-pub const PARENB: c::c_uint = c::PARENB;
-
-/// `PARODD`
-#[cfg(not(apple))]
-pub const PARODD: c::c_uint = c::PARODD;
-
-/// `HUPCL`
-#[cfg(not(apple))]
-pub const HUPCL: c::c_uint = c::HUPCL;
-
-/// `CLOCAL`
-#[cfg(not(apple))]
-pub const CLOCAL: c::c_uint = c::CLOCAL;
-
-/// `ISIG`
-#[cfg(not(apple))]
-pub const ISIG: c::c_uint = c::ISIG;
-
-/// `ICANON`—A flag for the `c_lflag` field of [`Termios`] indicating
-/// canonical mode.
-pub const ICANON: Tcflag = c::ICANON;
-
-/// `ECHO`
-#[cfg(not(apple))]
-pub const ECHO: c::c_uint = c::ECHO;
-
-/// `ECHOE`
-#[cfg(not(apple))]
-pub const ECHOE: c::c_uint = c::ECHOE;
-
-/// `ECHOK`
-#[cfg(not(apple))]
-pub const ECHOK: c::c_uint = c::ECHOK;
-
-/// `ECHONL`
-#[cfg(not(apple))]
-pub const ECHONL: c::c_uint = c::ECHONL;
-
-/// `NOFLSH`
-#[cfg(not(apple))]
-pub const NOFLSH: c::c_uint = c::NOFLSH;
-
-/// `TOSTOP`
-#[cfg(not(apple))]
-pub const TOSTOP: c::c_uint = c::TOSTOP;
-
-/// `IEXTEN`
-#[cfg(not(apple))]
-pub const IEXTEN: c::c_uint = c::IEXTEN;
-
-/// `EXTA`
-#[cfg(not(any(
- apple,
- solarish,
- target_os = "emscripten",
- target_os = "haiku",
- target_os = "redox",
-)))]
-pub const EXTA: c::c_uint = c::EXTA;
-
-/// `EXTB`
-#[cfg(not(any(
- apple,
- solarish,
- target_os = "emscripten",
- target_os = "haiku",
- target_os = "redox",
-)))]
-pub const EXTB: c::c_uint = c::EXTB;
-
-/// `CBAUD`
-#[cfg(not(any(bsd, target_os = "haiku", target_os = "redox")))]
-pub const CBAUD: c::c_uint = c::CBAUD;
-
-/// `CBAUDEX`
-#[cfg(not(any(
- bsd,
- solarish,
- target_os = "aix",
- target_os = "haiku",
- target_os = "redox",
-)))]
-pub const CBAUDEX: c::c_uint = c::CBAUDEX;
-
-/// `CIBAUD`
-#[cfg(not(any(
- target_arch = "powerpc",
- target_arch = "powerpc64",
- bsd,
- target_os = "emscripten",
- target_os = "haiku",
- target_os = "redox",
-)))]
-pub const CIBAUD: c::tcflag_t = c::CIBAUD;
-
-/// `CIBAUD`
-// TODO: Upstream this.
-#[cfg(any(target_arch = "powerpc", target_arch = "powerpc64"))]
-pub const CIBAUD: c::tcflag_t = 0o77600000;
-
-/// `CMSPAR`
-#[cfg(not(any(
- bsd,
- solarish,
- target_os = "aix",
- target_os = "emscripten",
- target_os = "haiku",
- target_os = "redox",
-)))]
-pub const CMSPAR: c::c_uint = c::CMSPAR;
-
-/// `CRTSCTS`
-#[cfg(not(any(apple, target_os = "aix", target_os = "redox")))]
-pub const CRTSCTS: c::c_uint = c::CRTSCTS;
-
-/// `XCASE`
-#[cfg(any(target_arch = "s390x", target_os = "haiku"))]
-pub const XCASE: c::c_uint = c::XCASE;
-
-/// `ECHOCTL`
-#[cfg(not(any(apple, target_os = "redox")))]
-pub const ECHOCTL: c::c_uint = c::ECHOCTL;
-
-/// `ECHOPRT`
-#[cfg(not(any(apple, target_os = "redox")))]
-pub const ECHOPRT: c::c_uint = c::ECHOPRT;
-
-/// `ECHOKE`
-#[cfg(not(any(apple, target_os = "redox")))]
-pub const ECHOKE: c::c_uint = c::ECHOKE;
-
-/// `FLUSHO`
-#[cfg(not(any(apple, target_os = "redox")))]
-pub const FLUSHO: c::c_uint = c::FLUSHO;
-
-/// `PENDIN`
-#[cfg(not(any(apple, target_os = "redox")))]
-pub const PENDIN: c::c_uint = c::PENDIN;
-
-/// `EXTPROC`
-#[cfg(not(any(apple, target_os = "aix", target_os = "haiku", target_os = "redox")))]
-pub const EXTPROC: c::c_uint = c::EXTPROC;
-
-/// `XTABS`
-#[cfg(not(any(
- bsd,
- solarish,
- target_os = "aix",
- target_os = "haiku",
- target_os = "redox",
-)))]
-pub const XTABS: c::c_uint = c::XTABS;
diff --git a/vendor/rustix-0.37.6/src/backend/libc/thread/mod.rs b/vendor/rustix-0.37.6/src/backend/libc/thread/mod.rs
deleted file mode 100644
index 40e0d1135..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/thread/mod.rs
+++ /dev/null
@@ -1,2 +0,0 @@
-#[cfg(not(windows))]
-pub(crate) mod syscalls;
diff --git a/vendor/rustix-0.37.6/src/backend/libc/thread/syscalls.rs b/vendor/rustix-0.37.6/src/backend/libc/thread/syscalls.rs
deleted file mode 100644
index adf4bb700..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/thread/syscalls.rs
+++ /dev/null
@@ -1,363 +0,0 @@
-//! libc syscalls supporting `rustix::thread`.
-
-use super::super::c;
-use super::super::conv::ret;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use super::super::conv::{borrowed_fd, ret_c_int, syscall_ret};
-use super::super::time::types::LibcTimespec;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use crate::fd::BorrowedFd;
-use crate::io;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use crate::process::{Pid, RawNonZeroPid};
-#[cfg(not(target_os = "redox"))]
-use crate::thread::{NanosleepRelativeResult, Timespec};
-use core::mem::MaybeUninit;
-#[cfg(not(any(
- apple,
- freebsdlike,
- target_os = "emscripten",
- target_os = "haiku",
- target_os = "openbsd",
- target_os = "redox",
- target_os = "wasi",
-)))]
-use {crate::thread::ClockId, core::ptr::null_mut};
-
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-weak!(fn __clock_nanosleep_time64(c::clockid_t, c::c_int, *const LibcTimespec, *mut LibcTimespec) -> c::c_int);
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-weak!(fn __nanosleep64(*const LibcTimespec, *mut LibcTimespec) -> c::c_int);
-
-#[cfg(not(any(
- apple,
- target_os = "dragonfly",
- target_os = "emscripten",
- target_os = "freebsd", // FreeBSD 12 has clock_nanosleep, but libc targets FreeBSD 11.
- target_os = "haiku",
- target_os = "openbsd",
- target_os = "redox",
- target_os = "wasi",
-)))]
-#[inline]
-pub(crate) fn clock_nanosleep_relative(id: ClockId, request: &Timespec) -> NanosleepRelativeResult {
- let mut remain = MaybeUninit::<LibcTimespec>::uninit();
- let flags = 0;
-
- // 32-bit gnu version: libc has `clock_nanosleep` but it is not y2038 safe by
- // default.
- #[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
- ))]
- unsafe {
- if let Some(libc_clock_nanosleep) = __clock_nanosleep_time64.get() {
- match libc_clock_nanosleep(
- id as c::clockid_t,
- flags,
- &request.clone().into(),
- remain.as_mut_ptr(),
- ) {
- 0 => NanosleepRelativeResult::Ok,
- err if err == io::Errno::INTR.0 => {
- NanosleepRelativeResult::Interrupted(remain.assume_init().into())
- }
- err => NanosleepRelativeResult::Err(io::Errno(err)),
- }
- } else {
- clock_nanosleep_relative_old(id, request)
- }
- }
-
- // Main version: libc is y2038 safe and has `clock_nanosleep`.
- #[cfg(not(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
- )))]
- unsafe {
- match c::clock_nanosleep(id as c::clockid_t, flags, request, remain.as_mut_ptr()) {
- 0 => NanosleepRelativeResult::Ok,
- err if err == io::Errno::INTR.0 => {
- NanosleepRelativeResult::Interrupted(remain.assume_init())
- }
- err => NanosleepRelativeResult::Err(io::Errno(err)),
- }
- }
-}
-
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-unsafe fn clock_nanosleep_relative_old(id: ClockId, request: &Timespec) -> NanosleepRelativeResult {
- use core::convert::TryInto;
- let tv_sec = match request.tv_sec.try_into() {
- Ok(tv_sec) => tv_sec,
- Err(_) => return NanosleepRelativeResult::Err(io::Errno::OVERFLOW),
- };
- let tv_nsec = match request.tv_nsec.try_into() {
- Ok(tv_nsec) => tv_nsec,
- Err(_) => return NanosleepRelativeResult::Err(io::Errno::INVAL),
- };
- let old_request = c::timespec { tv_sec, tv_nsec };
- let mut old_remain = MaybeUninit::<c::timespec>::uninit();
- let flags = 0;
-
- match c::clock_nanosleep(
- id as c::clockid_t,
- flags,
- &old_request,
- old_remain.as_mut_ptr(),
- ) {
- 0 => NanosleepRelativeResult::Ok,
- err if err == io::Errno::INTR.0 => {
- let old_remain = old_remain.assume_init();
- let remain = Timespec {
- tv_sec: old_remain.tv_sec.into(),
- tv_nsec: old_remain.tv_nsec.into(),
- };
- NanosleepRelativeResult::Interrupted(remain)
- }
- err => NanosleepRelativeResult::Err(io::Errno(err)),
- }
-}
-
-#[cfg(not(any(
- apple,
- target_os = "dragonfly",
- target_os = "emscripten",
- target_os = "freebsd", // FreeBSD 12 has clock_nanosleep, but libc targets FreeBSD 11.
- target_os = "haiku",
- target_os = "openbsd",
- target_os = "redox",
- target_os = "wasi",
-)))]
-#[inline]
-pub(crate) fn clock_nanosleep_absolute(id: ClockId, request: &Timespec) -> io::Result<()> {
- let flags = c::TIMER_ABSTIME;
-
- // 32-bit gnu version: libc has `clock_nanosleep` but it is not y2038 safe by
- // default.
- #[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
- ))]
- {
- if let Some(libc_clock_nanosleep) = __clock_nanosleep_time64.get() {
- match unsafe {
- libc_clock_nanosleep(
- id as c::clockid_t,
- flags,
- &request.clone().into(),
- null_mut(),
- )
- } {
- 0 => Ok(()),
- err => Err(io::Errno(err)),
- }
- } else {
- clock_nanosleep_absolute_old(id, request)
- }
- }
-
- // Main version: libc is y2038 safe and has `clock_nanosleep`.
- #[cfg(not(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
- )))]
- match unsafe { c::clock_nanosleep(id as c::clockid_t, flags, request, null_mut()) } {
- 0 => Ok(()),
- err => Err(io::Errno(err)),
- }
-}
-
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-fn clock_nanosleep_absolute_old(id: ClockId, request: &Timespec) -> io::Result<()> {
- use core::convert::TryInto;
-
- let flags = c::TIMER_ABSTIME;
-
- let old_request = c::timespec {
- tv_sec: request.tv_sec.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- tv_nsec: request.tv_nsec.try_into().map_err(|_| io::Errno::INVAL)?,
- };
- match unsafe { c::clock_nanosleep(id as c::clockid_t, flags, &old_request, null_mut()) } {
- 0 => Ok(()),
- err => Err(io::Errno(err)),
- }
-}
-
-#[cfg(not(target_os = "redox"))]
-#[inline]
-pub(crate) fn nanosleep(request: &Timespec) -> NanosleepRelativeResult {
- let mut remain = MaybeUninit::<LibcTimespec>::uninit();
-
- // 32-bit gnu version: libc has `nanosleep` but it is not y2038 safe by
- // default.
- #[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
- ))]
- unsafe {
- if let Some(libc_nanosleep) = __nanosleep64.get() {
- match ret(libc_nanosleep(&request.clone().into(), remain.as_mut_ptr())) {
- Ok(()) => NanosleepRelativeResult::Ok,
- Err(io::Errno::INTR) => {
- NanosleepRelativeResult::Interrupted(remain.assume_init().into())
- }
- Err(err) => NanosleepRelativeResult::Err(err),
- }
- } else {
- nanosleep_old(request)
- }
- }
-
- // Main version: libc is y2038 safe and has `nanosleep`.
- #[cfg(not(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
- )))]
- unsafe {
- match ret(c::nanosleep(request, remain.as_mut_ptr())) {
- Ok(()) => NanosleepRelativeResult::Ok,
- Err(io::Errno::INTR) => NanosleepRelativeResult::Interrupted(remain.assume_init()),
- Err(err) => NanosleepRelativeResult::Err(err),
- }
- }
-}
-
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-unsafe fn nanosleep_old(request: &Timespec) -> NanosleepRelativeResult {
- use core::convert::TryInto;
- let tv_sec = match request.tv_sec.try_into() {
- Ok(tv_sec) => tv_sec,
- Err(_) => return NanosleepRelativeResult::Err(io::Errno::OVERFLOW),
- };
- let tv_nsec = match request.tv_nsec.try_into() {
- Ok(tv_nsec) => tv_nsec,
- Err(_) => return NanosleepRelativeResult::Err(io::Errno::INVAL),
- };
- let old_request = c::timespec { tv_sec, tv_nsec };
- let mut old_remain = MaybeUninit::<c::timespec>::uninit();
-
- match ret(c::nanosleep(&old_request, old_remain.as_mut_ptr())) {
- Ok(()) => NanosleepRelativeResult::Ok,
- Err(io::Errno::INTR) => {
- let old_remain = old_remain.assume_init();
- let remain = Timespec {
- tv_sec: old_remain.tv_sec.into(),
- tv_nsec: old_remain.tv_nsec.into(),
- };
- NanosleepRelativeResult::Interrupted(remain)
- }
- Err(err) => NanosleepRelativeResult::Err(err),
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-#[must_use]
-pub(crate) fn gettid() -> Pid {
- // `gettid` wasn't supported in glibc until 2.30, and musl until 1.2.2,
- // so use `syscall`.
- // <https://sourceware.org/bugzilla/show_bug.cgi?id=6399#c62>
- weak_or_syscall! {
- fn gettid() via SYS_gettid -> c::pid_t
- }
-
- unsafe {
- let tid = gettid();
- debug_assert_ne!(tid, 0);
- Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(tid))
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub(crate) fn setns(fd: BorrowedFd, nstype: c::c_int) -> io::Result<c::c_int> {
- // `setns` wasn't supported in glibc until 2.14, and musl until 0.9.5,
- // so use `syscall`.
- weak_or_syscall! {
- fn setns(fd: c::c_int, nstype: c::c_int) via SYS_setns -> c::c_int
- }
-
- unsafe { ret_c_int(setns(borrowed_fd(fd), nstype)) }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub(crate) fn unshare(flags: crate::thread::UnshareFlags) -> io::Result<()> {
- unsafe { ret(c::unshare(flags.bits() as i32)) }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub(crate) fn capget(
- header: &mut linux_raw_sys::general::__user_cap_header_struct,
- data: &mut [MaybeUninit<linux_raw_sys::general::__user_cap_data_struct>],
-) -> io::Result<()> {
- let header: *mut _ = header;
- unsafe { syscall_ret(c::syscall(c::SYS_capget, header, data.as_mut_ptr())) }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub(crate) fn capset(
- header: &mut linux_raw_sys::general::__user_cap_header_struct,
- data: &[linux_raw_sys::general::__user_cap_data_struct],
-) -> io::Result<()> {
- let header: *mut _ = header;
- unsafe { syscall_ret(c::syscall(c::SYS_capset, header, data.as_ptr())) }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub(crate) fn setuid_thread(uid: crate::process::Uid) -> io::Result<()> {
- unsafe { syscall_ret(c::syscall(c::SYS_setuid, uid.as_raw())) }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub(crate) fn setresuid_thread(
- ruid: crate::process::Uid,
- euid: crate::process::Uid,
- suid: crate::process::Uid,
-) -> io::Result<()> {
- #[cfg(any(target_arch = "x86", target_arch = "arm", target_arch = "sparc"))]
- const SYS: c::c_long = c::SYS_setresuid32 as c::c_long;
- #[cfg(not(any(target_arch = "x86", target_arch = "arm", target_arch = "sparc")))]
- const SYS: c::c_long = c::SYS_setresuid as c::c_long;
- unsafe { syscall_ret(c::syscall(SYS, ruid.as_raw(), euid.as_raw(), suid.as_raw())) }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub(crate) fn setgid_thread(gid: crate::process::Gid) -> io::Result<()> {
- unsafe { syscall_ret(c::syscall(c::SYS_setgid, gid.as_raw())) }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub(crate) fn setresgid_thread(
- rgid: crate::process::Gid,
- egid: crate::process::Gid,
- sgid: crate::process::Gid,
-) -> io::Result<()> {
- #[cfg(any(target_arch = "x86", target_arch = "arm", target_arch = "sparc"))]
- const SYS: c::c_long = c::SYS_setresgid32 as c::c_long;
- #[cfg(not(any(target_arch = "x86", target_arch = "arm", target_arch = "sparc")))]
- const SYS: c::c_long = c::SYS_setresgid as c::c_long;
- unsafe { syscall_ret(c::syscall(SYS, rgid.as_raw(), egid.as_raw(), sgid.as_raw())) }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/time/mod.rs b/vendor/rustix-0.37.6/src/backend/libc/time/mod.rs
deleted file mode 100644
index bff7fd564..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/time/mod.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-#[cfg(not(windows))]
-pub(crate) mod syscalls;
-pub(crate) mod types;
diff --git a/vendor/rustix-0.37.6/src/backend/libc/time/syscalls.rs b/vendor/rustix-0.37.6/src/backend/libc/time/syscalls.rs
deleted file mode 100644
index 9d341d886..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/time/syscalls.rs
+++ /dev/null
@@ -1,472 +0,0 @@
-//! libc syscalls supporting `rustix::time`.
-
-use super::super::c;
-use super::super::conv::ret;
-#[cfg(feature = "time")]
-#[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))]
-use super::super::time::types::LibcItimerspec;
-use super::super::time::types::LibcTimespec;
-use super::types::Timespec;
-#[cfg(not(target_os = "wasi"))]
-use super::types::{ClockId, DynamicClockId};
-use crate::io;
-use core::mem::MaybeUninit;
-#[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))]
-#[cfg(feature = "time")]
-use {
- super::super::conv::{borrowed_fd, ret_owned_fd},
- crate::fd::{BorrowedFd, OwnedFd},
- crate::time::{Itimerspec, TimerfdClockId, TimerfdFlags, TimerfdTimerFlags},
-};
-
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-weak!(fn __clock_gettime64(c::clockid_t, *mut LibcTimespec) -> c::c_int);
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-weak!(fn __clock_settime64(c::clockid_t, *const LibcTimespec) -> c::c_int);
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-weak!(fn __clock_getres64(c::clockid_t, *mut LibcTimespec) -> c::c_int);
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-#[cfg(feature = "time")]
-weak!(fn __timerfd_gettime64(c::c_int, *mut LibcItimerspec) -> c::c_int);
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-#[cfg(feature = "time")]
-weak!(fn __timerfd_settime64(c::c_int, c::c_int, *const LibcItimerspec, *mut LibcItimerspec) -> c::c_int);
-
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-#[inline]
-#[must_use]
-pub(crate) fn clock_getres(id: ClockId) -> Timespec {
- let mut timespec = MaybeUninit::<LibcTimespec>::uninit();
-
- // 32-bit gnu version: libc has `clock_getres` but it is not y2038 safe by
- // default.
- #[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
- ))]
- unsafe {
- if let Some(libc_clock_getres) = __clock_getres64.get() {
- ret(libc_clock_getres(id as c::clockid_t, timespec.as_mut_ptr())).unwrap();
- timespec.assume_init().into()
- } else {
- clock_getres_old(id)
- }
- }
-
- // Main version: libc is y2038 safe and has `clock_getres`.
- #[cfg(not(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
- )))]
- unsafe {
- let _ = c::clock_getres(id as c::clockid_t, timespec.as_mut_ptr());
- timespec.assume_init()
- }
-}
-
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-#[must_use]
-unsafe fn clock_getres_old(id: ClockId) -> Timespec {
- let mut old_timespec = MaybeUninit::<c::timespec>::uninit();
- ret(c::clock_getres(
- id as c::clockid_t,
- old_timespec.as_mut_ptr(),
- ))
- .unwrap();
- let old_timespec = old_timespec.assume_init();
- Timespec {
- tv_sec: old_timespec.tv_sec.into(),
- tv_nsec: old_timespec.tv_nsec.into(),
- }
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-#[must_use]
-pub(crate) fn clock_gettime(id: ClockId) -> Timespec {
- let mut timespec = MaybeUninit::<LibcTimespec>::uninit();
-
- #[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
- ))]
- unsafe {
- if let Some(libc_clock_gettime) = __clock_gettime64.get() {
- ret(libc_clock_gettime(
- id as c::clockid_t,
- timespec.as_mut_ptr(),
- ))
- .unwrap();
- timespec.assume_init().into()
- } else {
- clock_gettime_old(id)
- }
- }
-
- // Use `unwrap()` here because `clock_getres` can fail if the clock itself
- // overflows a number of seconds, but if that happens, the monotonic clocks
- // can't maintain their invariants, or the realtime clocks aren't properly
- // configured.
- #[cfg(not(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
- )))]
- unsafe {
- ret(c::clock_gettime(id as c::clockid_t, timespec.as_mut_ptr())).unwrap();
- timespec.assume_init()
- }
-}
-
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-#[must_use]
-unsafe fn clock_gettime_old(id: ClockId) -> Timespec {
- let mut old_timespec = MaybeUninit::<c::timespec>::uninit();
- ret(c::clock_gettime(
- id as c::clockid_t,
- old_timespec.as_mut_ptr(),
- ))
- .unwrap();
- let old_timespec = old_timespec.assume_init();
- Timespec {
- tv_sec: old_timespec.tv_sec.into(),
- tv_nsec: old_timespec.tv_nsec.into(),
- }
-}
-
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-pub(crate) fn clock_gettime_dynamic(id: DynamicClockId<'_>) -> io::Result<Timespec> {
- let mut timespec = MaybeUninit::<LibcTimespec>::uninit();
- unsafe {
- let id: c::clockid_t = match id {
- DynamicClockId::Known(id) => id as c::clockid_t,
-
- #[cfg(any(target_os = "android", target_os = "linux"))]
- DynamicClockId::Dynamic(fd) => {
- use crate::fd::AsRawFd;
- const CLOCKFD: i32 = 3;
- (!fd.as_raw_fd() << 3) | CLOCKFD
- }
-
- #[cfg(not(any(target_os = "android", target_os = "linux")))]
- DynamicClockId::Dynamic(_fd) => {
- // Dynamic clocks are not supported on this platform.
- return Err(io::Errno::INVAL);
- }
-
- #[cfg(any(target_os = "android", target_os = "linux"))]
- DynamicClockId::RealtimeAlarm => c::CLOCK_REALTIME_ALARM,
-
- #[cfg(any(target_os = "android", target_os = "linux"))]
- DynamicClockId::Tai => c::CLOCK_TAI,
-
- #[cfg(any(target_os = "android", target_os = "linux"))]
- DynamicClockId::Boottime => c::CLOCK_BOOTTIME,
-
- #[cfg(any(target_os = "android", target_os = "linux"))]
- DynamicClockId::BoottimeAlarm => c::CLOCK_BOOTTIME_ALARM,
- };
-
- #[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
- ))]
- {
- if let Some(libc_clock_gettime) = __clock_gettime64.get() {
- ret(libc_clock_gettime(
- id as c::clockid_t,
- timespec.as_mut_ptr(),
- ))?;
-
- Ok(timespec.assume_init().into())
- } else {
- clock_gettime_dynamic_old(id)
- }
- }
-
- #[cfg(not(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
- )))]
- {
- ret(c::clock_gettime(id as c::clockid_t, timespec.as_mut_ptr()))?;
-
- Ok(timespec.assume_init())
- }
- }
-}
-
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-#[inline]
-unsafe fn clock_gettime_dynamic_old(id: c::clockid_t) -> io::Result<Timespec> {
- let mut old_timespec = MaybeUninit::<c::timespec>::uninit();
-
- ret(c::clock_gettime(
- id as c::clockid_t,
- old_timespec.as_mut_ptr(),
- ))?;
-
- let old_timespec = old_timespec.assume_init();
- Ok(Timespec {
- tv_sec: old_timespec.tv_sec.into(),
- tv_nsec: old_timespec.tv_nsec.into(),
- })
-}
-
-#[cfg(not(any(
- target_os = "redox",
- target_os = "wasi",
- all(apple, not(target_os = "macos"))
-)))]
-#[inline]
-pub(crate) fn clock_settime(id: ClockId, timespec: Timespec) -> io::Result<()> {
- #[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
- ))]
- unsafe {
- if let Some(libc_clock_settime) = __clock_settime64.get() {
- let mut new_timespec = core::mem::zeroed::<LibcTimespec>();
- new_timespec.tv_sec = timespec.tv_sec;
- new_timespec.tv_nsec = timespec.tv_nsec as _;
- ret(libc_clock_settime(id as c::clockid_t, &new_timespec))
- } else {
- clock_settime_old(id, timespec)
- }
- }
-
- #[cfg(not(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
- )))]
- unsafe {
- ret(c::clock_settime(id as c::clockid_t, &timespec))
- }
-}
-
-#[cfg(not(any(
- target_os = "redox",
- target_os = "wasi",
- all(apple, not(target_os = "macos"))
-)))]
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-#[must_use]
-unsafe fn clock_settime_old(id: ClockId, timespec: Timespec) -> io::Result<()> {
- use core::convert::TryInto;
- let old_timespec = c::timespec {
- tv_sec: timespec
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- tv_nsec: timespec.tv_nsec as _,
- };
- ret(c::clock_settime(id as c::clockid_t, &old_timespec))
-}
-
-#[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))]
-#[cfg(feature = "time")]
-pub(crate) fn timerfd_create(id: TimerfdClockId, flags: TimerfdFlags) -> io::Result<OwnedFd> {
- unsafe { ret_owned_fd(c::timerfd_create(id as c::clockid_t, flags.bits())) }
-}
-
-#[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))]
-#[cfg(feature = "time")]
-pub(crate) fn timerfd_settime(
- fd: BorrowedFd<'_>,
- flags: TimerfdTimerFlags,
- new_value: &Itimerspec,
-) -> io::Result<Itimerspec> {
- let mut result = MaybeUninit::<LibcItimerspec>::uninit();
-
- #[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
- ))]
- unsafe {
- if let Some(libc_timerfd_settime) = __timerfd_settime64.get() {
- ret(libc_timerfd_settime(
- borrowed_fd(fd),
- flags.bits(),
- &new_value.clone().into(),
- result.as_mut_ptr(),
- ))?;
- Ok(result.assume_init().into())
- } else {
- timerfd_settime_old(fd, flags, new_value)
- }
- }
-
- #[cfg(not(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
- )))]
- unsafe {
- ret(c::timerfd_settime(
- borrowed_fd(fd),
- flags.bits(),
- new_value,
- result.as_mut_ptr(),
- ))?;
- Ok(result.assume_init())
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))]
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-#[cfg(feature = "time")]
-unsafe fn timerfd_settime_old(
- fd: BorrowedFd<'_>,
- flags: TimerfdTimerFlags,
- new_value: &Itimerspec,
-) -> io::Result<Itimerspec> {
- use core::convert::TryInto;
-
- let mut old_result = MaybeUninit::<c::itimerspec>::uninit();
-
- // Convert `new_value` to the old `itimerspec` format.
- let old_new_value = c::itimerspec {
- it_interval: c::timespec {
- tv_sec: new_value
- .it_interval
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- tv_nsec: new_value
- .it_interval
- .tv_nsec
- .try_into()
- .map_err(|_| io::Errno::INVAL)?,
- },
- it_value: c::timespec {
- tv_sec: new_value
- .it_value
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- tv_nsec: new_value
- .it_value
- .tv_nsec
- .try_into()
- .map_err(|_| io::Errno::INVAL)?,
- },
- };
-
- ret(c::timerfd_settime(
- borrowed_fd(fd),
- flags.bits(),
- &old_new_value,
- old_result.as_mut_ptr(),
- ))?;
-
- let old_result = old_result.assume_init();
- Ok(Itimerspec {
- it_interval: Timespec {
- tv_sec: old_result
- .it_interval
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- tv_nsec: old_result.it_interval.tv_nsec as _,
- },
- it_value: Timespec {
- tv_sec: old_result
- .it_interval
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- tv_nsec: old_result.it_interval.tv_nsec as _,
- },
- })
-}
-
-#[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))]
-#[cfg(feature = "time")]
-pub(crate) fn timerfd_gettime(fd: BorrowedFd<'_>) -> io::Result<Itimerspec> {
- let mut result = MaybeUninit::<LibcItimerspec>::uninit();
-
- #[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
- ))]
- unsafe {
- if let Some(libc_timerfd_gettime) = __timerfd_gettime64.get() {
- ret(libc_timerfd_gettime(borrowed_fd(fd), result.as_mut_ptr()))?;
- Ok(result.assume_init().into())
- } else {
- timerfd_gettime_old(fd)
- }
- }
-
- #[cfg(not(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
- )))]
- unsafe {
- ret(c::timerfd_gettime(borrowed_fd(fd), result.as_mut_ptr()))?;
- Ok(result.assume_init())
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))]
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-#[cfg(feature = "time")]
-unsafe fn timerfd_gettime_old(fd: BorrowedFd<'_>) -> io::Result<Itimerspec> {
- use core::convert::TryInto;
-
- let mut old_result = MaybeUninit::<c::itimerspec>::uninit();
-
- ret(c::timerfd_gettime(borrowed_fd(fd), old_result.as_mut_ptr()))?;
-
- let old_result = old_result.assume_init();
- Ok(Itimerspec {
- it_interval: Timespec {
- tv_sec: old_result
- .it_interval
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- tv_nsec: old_result.it_interval.tv_nsec as _,
- },
- it_value: Timespec {
- tv_sec: old_result
- .it_interval
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- tv_nsec: old_result.it_interval.tv_nsec as _,
- },
- })
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/time/types.rs b/vendor/rustix-0.37.6/src/backend/libc/time/types.rs
deleted file mode 100644
index 47cd85701..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/time/types.rs
+++ /dev/null
@@ -1,356 +0,0 @@
-use super::super::c;
-#[cfg(not(target_os = "wasi"))]
-use crate::fd::BorrowedFd;
-#[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))]
-use bitflags::bitflags;
-
-/// `struct timespec`
-#[cfg(not(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-)))]
-pub type Timespec = c::timespec;
-
-/// `struct timespec`
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-#[derive(Debug, Clone, Copy)]
-#[repr(C)]
-pub struct Timespec {
- /// Seconds.
- pub tv_sec: Secs,
-
- /// Nanoseconds. Must be less than 1_000_000_000.
- pub tv_nsec: Nsecs,
-}
-
-/// A type for the `tv_sec` field of [`Timespec`].
-#[cfg(not(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-)))]
-#[allow(deprecated)]
-pub type Secs = c::time_t;
-
-/// A type for the `tv_sec` field of [`Timespec`].
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-pub type Secs = i64;
-
-/// A type for the `tv_nsec` field of [`Timespec`].
-#[cfg(all(target_arch = "x86_64", target_pointer_width = "32"))]
-pub type Nsecs = i64;
-
-/// A type for the `tv_nsec` field of [`Timespec`].
-#[cfg(not(all(target_arch = "x86_64", target_pointer_width = "32")))]
-pub type Nsecs = c::c_long;
-
-/// On most platforms, `LibcTimespec` is just `Timespec`.
-#[cfg(not(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-)))]
-pub(crate) type LibcTimespec = Timespec;
-
-/// On 32-bit glibc platforms, `timespec` has anonymous padding fields, which
-/// Rust doesn't support yet (see `unnamed_fields`), so we define our own
-/// struct with explicit padding, with bidirectional `From` impls.
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-#[repr(C)]
-#[derive(Debug, Clone)]
-pub(crate) struct LibcTimespec {
- pub(crate) tv_sec: Secs,
-
- #[cfg(target_endian = "big")]
- padding: core::mem::MaybeUninit<u32>,
-
- pub(crate) tv_nsec: Nsecs,
-
- #[cfg(target_endian = "little")]
- padding: core::mem::MaybeUninit<u32>,
-}
-
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-impl From<LibcTimespec> for Timespec {
- #[inline]
- fn from(t: LibcTimespec) -> Self {
- Self {
- tv_sec: t.tv_sec,
- tv_nsec: t.tv_nsec,
- }
- }
-}
-
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-impl From<Timespec> for LibcTimespec {
- #[inline]
- fn from(t: Timespec) -> Self {
- Self {
- tv_sec: t.tv_sec,
- tv_nsec: t.tv_nsec,
- padding: core::mem::MaybeUninit::uninit(),
- }
- }
-}
-
-/// `CLOCK_*` constants for use with [`clock_gettime`].
-///
-/// These constants are always supported at runtime so `clock_gettime` never
-/// has to fail with `INVAL` due to an unsupported clock. See
-/// [`DynamicClockId`] for a greater set of clocks, with the caveat that not
-/// all of them are always supported.
-///
-/// [`clock_gettime`]: crate::time::clock_gettime
-#[cfg(not(any(apple, target_os = "wasi")))]
-#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
-#[cfg_attr(not(target_os = "dragonfly"), repr(i32))]
-#[cfg_attr(target_os = "dragonfly", repr(u64))]
-#[non_exhaustive]
-pub enum ClockId {
- /// `CLOCK_REALTIME`
- Realtime = c::CLOCK_REALTIME,
-
- /// `CLOCK_MONOTONIC`
- Monotonic = c::CLOCK_MONOTONIC,
-
- /// `CLOCK_UPTIME`
- #[cfg(any(freebsdlike))]
- Uptime = c::CLOCK_UPTIME,
-
- /// `CLOCK_PROCESS_CPUTIME_ID`
- #[cfg(not(any(netbsdlike, solarish, target_os = "redox")))]
- ProcessCPUTime = c::CLOCK_PROCESS_CPUTIME_ID,
-
- /// `CLOCK_THREAD_CPUTIME_ID`
- #[cfg(not(any(netbsdlike, solarish, target_os = "redox")))]
- ThreadCPUTime = c::CLOCK_THREAD_CPUTIME_ID,
-
- /// `CLOCK_REALTIME_COARSE`
- #[cfg(any(target_os = "android", target_os = "linux", target_os = "freebsd"))]
- RealtimeCoarse = c::CLOCK_REALTIME_COARSE,
-
- /// `CLOCK_MONOTONIC_COARSE`
- #[cfg(any(target_os = "android", target_os = "linux", target_os = "freebsd"))]
- MonotonicCoarse = c::CLOCK_MONOTONIC_COARSE,
-
- /// `CLOCK_MONOTONIC_RAW`
- #[cfg(any(target_os = "android", target_os = "linux"))]
- MonotonicRaw = c::CLOCK_MONOTONIC_RAW,
-}
-
-/// `CLOCK_*` constants for use with [`clock_gettime`].
-///
-/// These constants are always supported at runtime so `clock_gettime` never
-/// has to fail with `INVAL` due to an unsupported clock. See
-/// [`DynamicClockId`] for a greater set of clocks, with the caveat that not
-/// all of them are always supported.
-#[cfg(apple)]
-#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
-#[repr(u32)]
-#[non_exhaustive]
-pub enum ClockId {
- /// `CLOCK_REALTIME`
- Realtime = c::CLOCK_REALTIME,
-
- /// `CLOCK_MONOTONIC`
- Monotonic = c::CLOCK_MONOTONIC,
-
- /// `CLOCK_PROCESS_CPUTIME_ID`
- ProcessCPUTime = c::CLOCK_PROCESS_CPUTIME_ID,
-
- /// `CLOCK_THREAD_CPUTIME_ID`
- ThreadCPUTime = c::CLOCK_THREAD_CPUTIME_ID,
-}
-
-/// `CLOCK_*` constants for use with [`clock_gettime_dynamic`].
-///
-/// These constants may be unsupported at runtime, depending on the OS version,
-/// and `clock_gettime_dynamic` may fail with `INVAL`. See [`ClockId`] for
-/// clocks which are always supported at runtime.
-///
-/// [`clock_gettime_dynamic`]: crate::time::clock_gettime_dynamic
-#[cfg(not(target_os = "wasi"))]
-#[derive(Debug, Copy, Clone)]
-#[non_exhaustive]
-pub enum DynamicClockId<'a> {
- /// `ClockId` values that are always supported at runtime.
- Known(ClockId),
-
- /// Linux dynamic clocks.
- Dynamic(BorrowedFd<'a>),
-
- /// `CLOCK_REALTIME_ALARM`, available on Linux >= 3.0
- #[cfg(any(target_os = "android", target_os = "linux"))]
- RealtimeAlarm,
-
- /// `CLOCK_TAI`, available on Linux >= 3.10
- #[cfg(any(target_os = "android", target_os = "linux"))]
- Tai,
-
- /// `CLOCK_BOOTTIME`, available on Linux >= 2.6.39
- #[cfg(any(target_os = "android", target_os = "linux"))]
- Boottime,
-
- /// `CLOCK_BOOTTIME_ALARM`, available on Linux >= 2.6.39
- #[cfg(any(target_os = "android", target_os = "linux"))]
- BoottimeAlarm,
-}
-
-/// `struct itimerspec`
-#[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))]
-#[cfg(not(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-)))]
-pub type Itimerspec = c::itimerspec;
-
-/// `struct itimerspec`
-#[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))]
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Debug, Clone)]
-pub struct Itimerspec {
- pub it_interval: Timespec,
- pub it_value: Timespec,
-}
-
-/// On most platforms, `LibcItimerspec` is just `Itimerspec`.
-#[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))]
-#[cfg(not(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-)))]
-pub(crate) type LibcItimerspec = Itimerspec;
-
-/// On 32-bit glibc platforms, `LibcTimespec` differs from `Timespec`, so we
-/// define our own struct, with bidirectional `From` impls.
-#[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))]
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-#[repr(C)]
-#[derive(Debug, Clone)]
-pub(crate) struct LibcItimerspec {
- pub it_interval: LibcTimespec,
- pub it_value: LibcTimespec,
-}
-
-#[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))]
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-impl From<LibcItimerspec> for Itimerspec {
- #[inline]
- fn from(t: LibcItimerspec) -> Self {
- Self {
- it_interval: t.it_interval.into(),
- it_value: t.it_value.into(),
- }
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))]
-#[cfg(all(
- any(target_arch = "arm", target_arch = "mips", target_arch = "x86"),
- target_env = "gnu",
-))]
-impl From<Itimerspec> for LibcItimerspec {
- #[inline]
- fn from(t: Itimerspec) -> Self {
- Self {
- it_interval: t.it_interval.into(),
- it_value: t.it_value.into(),
- }
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))]
-bitflags! {
- /// `TFD_*` flags for use with [`timerfd_create`].
- pub struct TimerfdFlags: c::c_int {
- /// `TFD_NONBLOCK`
- const NONBLOCK = c::TFD_NONBLOCK;
-
- /// `TFD_CLOEXEC`
- const CLOEXEC = c::TFD_CLOEXEC;
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))]
-bitflags! {
- /// `TFD_TIMER_*` flags for use with [`timerfd_settime`].
- pub struct TimerfdTimerFlags: c::c_int {
- /// `TFD_TIMER_ABSTIME`
- const ABSTIME = c::TFD_TIMER_ABSTIME;
-
- /// `TFD_TIMER_CANCEL_ON_SET`
- #[cfg(any(target_os = "android", target_os = "linux"))]
- const CANCEL_ON_SET = c::TFD_TIMER_CANCEL_ON_SET;
- }
-}
-
-/// `CLOCK_*` constants for use with [`timerfd_create`].
-///
-/// [`timerfd_create`]: crate::time::timerfd_create
-#[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))]
-#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
-#[repr(i32)]
-#[non_exhaustive]
-pub enum TimerfdClockId {
- /// `CLOCK_REALTIME`—A clock that tells the "real" time.
- ///
- /// This is a clock that tells the amount of time elapsed since the
- /// Unix epoch, 1970-01-01T00:00:00Z. The clock is externally settable, so
- /// it is not monotonic. Successive reads may see decreasing times, so it
- /// isn't reliable for measuring durations.
- Realtime = c::CLOCK_REALTIME,
-
- /// `CLOCK_MONOTONIC`—A clock that tells an abstract time.
- ///
- /// Unlike `Realtime`, this clock is not based on a fixed known epoch, so
- /// individual times aren't meaningful. However, since it isn't settable,
- /// it is reliable for measuring durations.
- ///
- /// This clock does not advance while the system is suspended; see
- /// `Boottime` for a clock that does.
- Monotonic = c::CLOCK_MONOTONIC,
-
- /// `CLOCK_BOOTTIME`—Like `Monotonic`, but advances while suspended.
- ///
- /// This clock is similar to `Monotonic`, but does advance while the system
- /// is suspended.
- Boottime = c::CLOCK_BOOTTIME,
-
- /// `CLOCK_REALTIME_ALARM`—Like `Realtime`, but wakes a suspended system.
- ///
- /// This clock is like `Realtime`, but can wake up a suspended system.
- ///
- /// Use of this clock requires the `CAP_WAKE_ALARM` Linux capability.
- RealtimeAlarm = c::CLOCK_REALTIME_ALARM,
-
- /// `CLOCK_BOOTTIME_ALARM`—Like `Boottime`, but wakes a suspended system.
- ///
- /// This clock is like `Boottime`, but can wake up a suspended system.
- ///
- /// Use of this clock requires the `CAP_WAKE_ALARM` Linux capability.
- BoottimeAlarm = c::CLOCK_BOOTTIME_ALARM,
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/weak.rs b/vendor/rustix-0.37.6/src/backend/libc/weak.rs
deleted file mode 100644
index b7f185da3..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/weak.rs
+++ /dev/null
@@ -1,226 +0,0 @@
-// Implementation derived from `weak` in Rust's
-// library/std/src/sys/unix/weak.rs at revision
-// fd0cb0cdc21dd9c06025277d772108f8d42cb25f.
-
-//! Support for "weak linkage" to symbols on Unix
-//!
-//! Some I/O operations we do in libstd require newer versions of OSes but we
-//! need to maintain binary compatibility with older releases for now. In order
-//! to use the new functionality when available we use this module for
-//! detection.
-//!
-//! One option to use here is weak linkage, but that is unfortunately only
-//! really workable on Linux. Hence, use dlsym to get the symbol value at
-//! runtime. This is also done for compatibility with older versions of glibc,
-//! and to avoid creating dependencies on `GLIBC_PRIVATE` symbols. It assumes
-//! that we've been dynamically linked to the library the symbol comes from,
-//! but that is currently always the case for things like libpthread/libc.
-//!
-//! A long time ago this used weak linkage for the `__pthread_get_minstack`
-//! symbol, but that caused Debian to detect an unnecessarily strict versioned
-//! dependency on libc6 (#23628).
-
-// There are a variety of `#[cfg]`s controlling which targets are involved in
-// each instance of `weak!` and `syscall!`. Rather than trying to unify all of
-// that, we'll just allow that some unix targets don't use this module at all.
-#![allow(dead_code, unused_macros)]
-#![allow(clippy::doc_markdown)]
-
-use crate::ffi::CStr;
-use core::ffi::c_void;
-use core::ptr::null_mut;
-use core::sync::atomic::{self, AtomicPtr, Ordering};
-use core::{marker, mem};
-
-const NULL: *mut c_void = null_mut();
-const INVALID: *mut c_void = 1 as *mut c_void;
-
-macro_rules! weak {
- ($vis:vis fn $name:ident($($t:ty),*) -> $ret:ty) => (
- #[allow(non_upper_case_globals)]
- $vis static $name: $crate::backend::weak::Weak<unsafe extern fn($($t),*) -> $ret> =
- $crate::backend::weak::Weak::new(concat!(stringify!($name), '\0'));
- )
-}
-
-pub(crate) struct Weak<F> {
- name: &'static str,
- addr: AtomicPtr<c_void>,
- _marker: marker::PhantomData<F>,
-}
-
-impl<F> Weak<F> {
- pub(crate) const fn new(name: &'static str) -> Self {
- Self {
- name,
- addr: AtomicPtr::new(INVALID),
- _marker: marker::PhantomData,
- }
- }
-
- pub(crate) fn get(&self) -> Option<F> {
- assert_eq!(mem::size_of::<F>(), mem::size_of::<usize>());
- unsafe {
- // Relaxed is fine here because we fence before reading through the
- // pointer (see the comment below).
- match self.addr.load(Ordering::Relaxed) {
- INVALID => self.initialize(),
- NULL => None,
- addr => {
- let func = mem::transmute_copy::<*mut c_void, F>(&addr);
- // The caller is presumably going to read through this value
- // (by calling the function we've dlsymed). This means we'd
- // need to have loaded it with at least C11's consume
- // ordering in order to be guaranteed that the data we read
- // from the pointer isn't from before the pointer was
- // stored. Rust has no equivalent to memory_order_consume,
- // so we use an acquire fence (sorry, ARM).
- //
- // Now, in practice this likely isn't needed even on CPUs
- // where relaxed and consume mean different things. The
- // symbols we're loading are probably present (or not) at
- // init, and even if they aren't the runtime dynamic loader
- // is extremely likely have sufficient barriers internally
- // (possibly implicitly, for example the ones provided by
- // invoking `mprotect`).
- //
- // That said, none of that's *guaranteed*, and so we fence.
- atomic::fence(Ordering::Acquire);
- Some(func)
- }
- }
- }
- }
-
- // Cold because it should only happen during first-time initialization.
- #[cold]
- unsafe fn initialize(&self) -> Option<F> {
- let val = fetch(self.name);
- // This synchronizes with the acquire fence in `get`.
- self.addr.store(val, Ordering::Release);
-
- match val {
- NULL => None,
- addr => Some(mem::transmute_copy::<*mut c_void, F>(&addr)),
- }
- }
-}
-
-unsafe fn fetch(name: &str) -> *mut c_void {
- let name = match CStr::from_bytes_with_nul(name.as_bytes()) {
- Ok(c_str) => c_str,
- Err(..) => return null_mut(),
- };
- libc::dlsym(libc::RTLD_DEFAULT, name.as_ptr())
-}
-
-#[cfg(not(any(target_os = "android", target_os = "linux")))]
-macro_rules! syscall {
- (fn $name:ident($($arg_name:ident: $t:ty),*) via $_sys_name:ident -> $ret:ty) => (
- unsafe fn $name($($arg_name: $t),*) -> $ret {
- weak! { fn $name($($t),*) -> $ret }
-
- if let Some(fun) = $name.get() {
- fun($($arg_name),*)
- } else {
- libc_errno::set_errno(libc_errno::Errno(libc::ENOSYS));
- -1
- }
- }
- )
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-macro_rules! syscall {
- (fn $name:ident($($arg_name:ident: $t:ty),*) via $sys_name:ident -> $ret:ty) => (
- unsafe fn $name($($arg_name:$t),*) -> $ret {
- // This looks like a hack, but concat_idents only accepts idents
- // (not paths).
- use libc::*;
-
- trait AsSyscallArg {
- type SyscallArgType;
- fn into_syscall_arg(self) -> Self::SyscallArgType;
- }
-
- // Pass pointer types as pointers, to preserve provenance.
- impl<T> AsSyscallArg for *mut T {
- type SyscallArgType = *mut T;
- fn into_syscall_arg(self) -> Self::SyscallArgType { self }
- }
- impl<T> AsSyscallArg for *const T {
- type SyscallArgType = *const T;
- fn into_syscall_arg(self) -> Self::SyscallArgType { self }
- }
-
- // Pass `BorrowedFd` values as the integer value.
- impl AsSyscallArg for $crate::fd::BorrowedFd<'_> {
- type SyscallArgType = c::c_long;
- fn into_syscall_arg(self) -> Self::SyscallArgType {
- $crate::fd::AsRawFd::as_raw_fd(&self) as _
- }
- }
-
- // Coerce integer values into `c_long`.
- impl AsSyscallArg for i32 {
- type SyscallArgType = c::c_long;
- fn into_syscall_arg(self) -> Self::SyscallArgType { self as _ }
- }
- impl AsSyscallArg for u32 {
- type SyscallArgType = c::c_long;
- fn into_syscall_arg(self) -> Self::SyscallArgType { self as _ }
- }
- impl AsSyscallArg for usize {
- type SyscallArgType = c::c_long;
- fn into_syscall_arg(self) -> Self::SyscallArgType { self as _ }
- }
-
- // `concat_idents is unstable, so we take an extra `sys_name`
- // parameter and have our users do the concat for us for now.
- /*
- syscall(
- concat_idents!(SYS_, $name),
- $($arg_name.into_syscall_arg()),*
- ) as $ret
- */
-
- syscall($sys_name, $($arg_name.into_syscall_arg()),*) as $ret
- }
- )
-}
-
-macro_rules! weakcall {
- ($vis:vis fn $name:ident($($arg_name:ident: $t:ty),*) -> $ret:ty) => (
- $vis unsafe fn $name($($arg_name: $t),*) -> $ret {
- weak! { fn $name($($t),*) -> $ret }
-
- // Use a weak symbol from libc when possible, allowing `LD_PRELOAD`
- // interposition, but if it's not found just fail.
- if let Some(fun) = $name.get() {
- fun($($arg_name),*)
- } else {
- libc_errno::set_errno(libc_errno::Errno(libc::ENOSYS));
- -1
- }
- }
- )
-}
-
-/// A combination of `weakcall` and `syscall`. Use the libc function if it's
-/// available, and fall back to `libc::syscall` otherwise.
-macro_rules! weak_or_syscall {
- ($vis:vis fn $name:ident($($arg_name:ident: $t:ty),*) via $sys_name:ident -> $ret:ty) => (
- $vis unsafe fn $name($($arg_name: $t),*) -> $ret {
- weak! { fn $name($($t),*) -> $ret }
-
- // Use a weak symbol from libc when possible, allowing `LD_PRELOAD`
- // interposition, but if it's not found just fail.
- if let Some(fun) = $name.get() {
- fun($($arg_name),*)
- } else {
- syscall! { fn $name($($arg_name: $t),*) via $sys_name -> $ret }
- $name($($arg_name),*)
- }
- }
- )
-}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/winsock_c.rs b/vendor/rustix-0.37.6/src/backend/libc/winsock_c.rs
deleted file mode 100644
index 521a7bbb1..000000000
--- a/vendor/rustix-0.37.6/src/backend/libc/winsock_c.rs
+++ /dev/null
@@ -1,83 +0,0 @@
-//! Adapt the Winsock2 API to resemble a POSIX-style libc API.
-
-#![allow(unused_imports)]
-#![allow(non_camel_case_types)]
-
-use windows_sys::Win32::Networking::WinSock;
-
-pub(crate) use libc::{
- c_char, c_int, c_long, c_longlong, c_schar, c_short, c_uchar, c_uint, c_ulong, c_ulonglong,
- c_ushort, c_void, ssize_t,
-};
-pub(crate) type socklen_t = i32;
-
-// windows-sys declares these constants as unsigned. For better compatibility
-// with Unix-family APIs, redeclare them as signed. Filed upstream:
-// <https://github.com/microsoft/windows-rs/issues/1718>
-pub(crate) const AF_INET: i32 = WinSock::AF_INET as _;
-pub(crate) const AF_INET6: i32 = WinSock::AF_INET6 as _;
-pub(crate) const AF_UNSPEC: i32 = WinSock::AF_UNSPEC as _;
-pub(crate) const SO_TYPE: i32 = WinSock::SO_TYPE as _;
-pub(crate) const SO_REUSEADDR: i32 = WinSock::SO_REUSEADDR as _;
-pub(crate) const SO_BROADCAST: i32 = WinSock::SO_BROADCAST as _;
-pub(crate) const SO_LINGER: i32 = WinSock::SO_LINGER as _;
-pub(crate) const SOL_SOCKET: i32 = WinSock::SOL_SOCKET as _;
-pub(crate) const SO_RCVTIMEO: i32 = WinSock::SO_RCVTIMEO as _;
-pub(crate) const SO_SNDTIMEO: i32 = WinSock::SO_SNDTIMEO as _;
-pub(crate) const SO_ERROR: i32 = WinSock::SO_ERROR as _;
-pub(crate) const IP_TTL: i32 = WinSock::IP_TTL as _;
-pub(crate) const TCP_NODELAY: i32 = WinSock::TCP_NODELAY as _;
-pub(crate) const IP_ADD_MEMBERSHIP: i32 = WinSock::IP_ADD_MEMBERSHIP as _;
-pub(crate) const IP_DROP_MEMBERSHIP: i32 = WinSock::IP_DROP_MEMBERSHIP as _;
-pub(crate) const IP_MULTICAST_TTL: i32 = WinSock::IP_MULTICAST_TTL as _;
-pub(crate) const IP_MULTICAST_LOOP: i32 = WinSock::IP_MULTICAST_LOOP as _;
-pub(crate) const IPV6_ADD_MEMBERSHIP: i32 = WinSock::IPV6_ADD_MEMBERSHIP as _;
-pub(crate) const IPV6_DROP_MEMBERSHIP: i32 = WinSock::IPV6_DROP_MEMBERSHIP as _;
-pub(crate) const IPV6_MULTICAST_LOOP: i32 = WinSock::IPV6_MULTICAST_LOOP as _;
-pub(crate) const IPV6_V6ONLY: i32 = WinSock::IPV6_V6ONLY as _;
-pub(crate) const POLLERR: i16 = WinSock::POLLERR as _;
-pub(crate) const POLLIN: i16 = WinSock::POLLIN as _;
-pub(crate) const POLLNVAL: i16 = WinSock::POLLNVAL as _;
-pub(crate) const POLLHUP: i16 = WinSock::POLLHUP as _;
-pub(crate) const POLLPRI: i16 = WinSock::POLLPRI as _;
-pub(crate) const POLLOUT: i16 = WinSock::POLLOUT as _;
-pub(crate) const POLLRDNORM: i16 = WinSock::POLLRDNORM as _;
-pub(crate) const POLLWRNORM: i16 = WinSock::POLLWRNORM as _;
-pub(crate) const POLLRDBAND: i16 = WinSock::POLLRDBAND as _;
-pub(crate) const POLLWRBAND: i16 = WinSock::POLLWRBAND as _;
-
-// As above, cast the types for better compatibility, and also rename these to
-// their Unix names.
-pub(crate) const SHUT_RDWR: i32 = WinSock::SD_BOTH as _;
-pub(crate) const SHUT_RD: i32 = WinSock::SD_RECEIVE as _;
-pub(crate) const SHUT_WR: i32 = WinSock::SD_SEND as _;
-
-// Include the contents of `WinSock`, renaming as needed to match POSIX.
-//
-// Use `WSA_E_CANCELLED` for `ECANCELED` instead of `WSAECANCELLED`, because
-// `WSAECANCELLED` will be removed in the future.
-// <https://docs.microsoft.com/en-us/windows/win32/api/ws2spi/nc-ws2spi-lpnsplookupserviceend#remarks>
-pub(crate) use WinSock::{
- closesocket as close, ioctlsocket as ioctl, WSAPoll as poll, ADDRESS_FAMILY as sa_family_t,
- ADDRINFOA as addrinfo, IN6_ADDR as in6_addr, IN_ADDR as in_addr, IPV6_MREQ as ipv6_mreq,
- IP_MREQ as ip_mreq, LINGER as linger, SOCKADDR as sockaddr, SOCKADDR_IN as sockaddr_in,
- SOCKADDR_IN6 as sockaddr_in6, SOCKADDR_STORAGE as sockaddr_storage, WSAEACCES as EACCES,
- WSAEADDRINUSE as EADDRINUSE, WSAEADDRNOTAVAIL as EADDRNOTAVAIL,
- WSAEAFNOSUPPORT as EAFNOSUPPORT, WSAEALREADY as EALREADY, WSAEBADF as EBADF,
- WSAECONNABORTED as ECONNABORTED, WSAECONNREFUSED as ECONNREFUSED, WSAECONNRESET as ECONNRESET,
- WSAEDESTADDRREQ as EDESTADDRREQ, WSAEDISCON as EDISCON, WSAEDQUOT as EDQUOT,
- WSAEFAULT as EFAULT, WSAEHOSTDOWN as EHOSTDOWN, WSAEHOSTUNREACH as EHOSTUNREACH,
- WSAEINPROGRESS as EINPROGRESS, WSAEINTR as EINTR, WSAEINVAL as EINVAL,
- WSAEINVALIDPROCTABLE as EINVALIDPROCTABLE, WSAEINVALIDPROVIDER as EINVALIDPROVIDER,
- WSAEISCONN as EISCONN, WSAELOOP as ELOOP, WSAEMFILE as EMFILE, WSAEMSGSIZE as EMSGSIZE,
- WSAENAMETOOLONG as ENAMETOOLONG, WSAENETDOWN as ENETDOWN, WSAENETRESET as ENETRESET,
- WSAENETUNREACH as ENETUNREACH, WSAENOBUFS as ENOBUFS, WSAENOMORE as ENOMORE,
- WSAENOPROTOOPT as ENOPROTOOPT, WSAENOTCONN as ENOTCONN, WSAENOTEMPTY as ENOTEMPTY,
- WSAENOTSOCK as ENOTSOCK, WSAEOPNOTSUPP as EOPNOTSUPP, WSAEPFNOSUPPORT as EPFNOSUPPORT,
- WSAEPROCLIM as EPROCLIM, WSAEPROTONOSUPPORT as EPROTONOSUPPORT, WSAEPROTOTYPE as EPROTOTYPE,
- WSAEPROVIDERFAILEDINIT as EPROVIDERFAILEDINIT, WSAEREFUSED as EREFUSED, WSAEREMOTE as EREMOTE,
- WSAESHUTDOWN as ESHUTDOWN, WSAESOCKTNOSUPPORT as ESOCKTNOSUPPORT, WSAESTALE as ESTALE,
- WSAETIMEDOUT as ETIMEDOUT, WSAETOOMANYREFS as ETOOMANYREFS, WSAEUSERS as EUSERS,
- WSAEWOULDBLOCK as EWOULDBLOCK, WSAEWOULDBLOCK as EAGAIN, WSAPOLLFD as pollfd,
- WSA_E_CANCELLED as ECANCELED, *,
-};
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/aarch64.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/aarch64.rs
deleted file mode 100644
index 0f4465d51..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/aarch64.rs
+++ /dev/null
@@ -1,268 +0,0 @@
-//! aarch64 Linux system calls.
-
-use crate::backend::reg::{
- ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0,
-};
-use core::arch::asm;
-
-#[cfg(target_pointer_width = "32")]
-compile_error!("arm64-ilp32 is not supported yet");
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber<'_>) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("x8") nr.to_asm(),
- lateout("x0") r0,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("x8") nr.to_asm(),
- inlateout("x0") a0.to_asm() => r0,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("x8") nr.to_asm(),
- inlateout("x0") a0.to_asm() => r0,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! {
- asm!(
- "svc 0",
- in("x8") nr.to_asm(),
- in("x0") a0.to_asm(),
- options(noreturn)
- )
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall2(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("x8") nr.to_asm(),
- inlateout("x0") a0.to_asm() => r0,
- in("x1") a1.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall2_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("x8") nr.to_asm(),
- inlateout("x0") a0.to_asm() => r0,
- in("x1") a1.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall3(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("x8") nr.to_asm(),
- inlateout("x0") a0.to_asm() => r0,
- in("x1") a1.to_asm(),
- in("x2") a2.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall3_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("x8") nr.to_asm(),
- inlateout("x0") a0.to_asm() => r0,
- in("x1") a1.to_asm(),
- in("x2") a2.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall4(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("x8") nr.to_asm(),
- inlateout("x0") a0.to_asm() => r0,
- in("x1") a1.to_asm(),
- in("x2") a2.to_asm(),
- in("x3") a3.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall4_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("x8") nr.to_asm(),
- inlateout("x0") a0.to_asm() => r0,
- in("x1") a1.to_asm(),
- in("x2") a2.to_asm(),
- in("x3") a3.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall5(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("x8") nr.to_asm(),
- inlateout("x0") a0.to_asm() => r0,
- in("x1") a1.to_asm(),
- in("x2") a2.to_asm(),
- in("x3") a3.to_asm(),
- in("x4") a4.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall5_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("x8") nr.to_asm(),
- inlateout("x0") a0.to_asm() => r0,
- in("x1") a1.to_asm(),
- in("x2") a2.to_asm(),
- in("x3") a3.to_asm(),
- in("x4") a4.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall6(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("x8") nr.to_asm(),
- inlateout("x0") a0.to_asm() => r0,
- in("x1") a1.to_asm(),
- in("x2") a2.to_asm(),
- in("x3") a3.to_asm(),
- in("x4") a4.to_asm(),
- in("x5") a5.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall6_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("x8") nr.to_asm(),
- inlateout("x0") a0.to_asm() => r0,
- in("x1") a1.to_asm(),
- in("x2") a2.to_asm(),
- in("x3") a3.to_asm(),
- in("x4") a4.to_asm(),
- in("x5") a5.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/arm.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/arm.rs
deleted file mode 100644
index 9695c6028..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/arm.rs
+++ /dev/null
@@ -1,265 +0,0 @@
-//! arm Linux system calls.
-
-use crate::backend::reg::{
- ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0,
-};
-use core::arch::asm;
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber<'_>) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("r7") nr.to_asm(),
- lateout("r0") r0,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("r7") nr.to_asm(),
- inlateout("r0") a0.to_asm() => r0,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("r7") nr.to_asm(),
- inlateout("r0") a0.to_asm() => r0,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! {
- asm!(
- "svc 0",
- in("r7") nr.to_asm(),
- in("r0") a0.to_asm(),
- options(noreturn)
- )
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall2(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("r7") nr.to_asm(),
- inlateout("r0") a0.to_asm() => r0,
- in("r1") a1.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall2_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("r7") nr.to_asm(),
- inlateout("r0") a0.to_asm() => r0,
- in("r1") a1.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall3(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("r7") nr.to_asm(),
- inlateout("r0") a0.to_asm() => r0,
- in("r1") a1.to_asm(),
- in("r2") a2.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall3_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("r7") nr.to_asm(),
- inlateout("r0") a0.to_asm() => r0,
- in("r1") a1.to_asm(),
- in("r2") a2.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall4(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("r7") nr.to_asm(),
- inlateout("r0") a0.to_asm() => r0,
- in("r1") a1.to_asm(),
- in("r2") a2.to_asm(),
- in("r3") a3.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall4_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("r7") nr.to_asm(),
- inlateout("r0") a0.to_asm() => r0,
- in("r1") a1.to_asm(),
- in("r2") a2.to_asm(),
- in("r3") a3.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall5(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("r7") nr.to_asm(),
- inlateout("r0") a0.to_asm() => r0,
- in("r1") a1.to_asm(),
- in("r2") a2.to_asm(),
- in("r3") a3.to_asm(),
- in("r4") a4.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall5_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("r7") nr.to_asm(),
- inlateout("r0") a0.to_asm() => r0,
- in("r1") a1.to_asm(),
- in("r2") a2.to_asm(),
- in("r3") a3.to_asm(),
- in("r4") a4.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall6(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("r7") nr.to_asm(),
- inlateout("r0") a0.to_asm() => r0,
- in("r1") a1.to_asm(),
- in("r2") a2.to_asm(),
- in("r3") a3.to_asm(),
- in("r4") a4.to_asm(),
- in("r5") a5.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall6_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "svc 0",
- in("r7") nr.to_asm(),
- inlateout("r0") a0.to_asm() => r0,
- in("r1") a1.to_asm(),
- in("r2") a2.to_asm(),
- in("r3") a3.to_asm(),
- in("r4") a4.to_asm(),
- in("r5") a5.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/mips.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/mips.rs
deleted file mode 100644
index b39a16847..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/mips.rs
+++ /dev/null
@@ -1,543 +0,0 @@
-//! mipsel Linux system calls.
-//!
-//! On mipsel, Linux indicates success or failure using `$a3` rather
-//! than by returning a negative error code as most other architectures do.
-//!
-//! Mips-family platforms have a special calling convention for `__NR_pipe`,
-//! however we use `__NR_pipe2` instead to avoid having to implement it.
-
-use crate::backend::reg::{
- ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, A6, R0,
-};
-use core::arch::asm;
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- "syscall",
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- lateout("$7" /*$a3*/) err,
- lateout("$8" /*$t0*/) _,
- lateout("$9" /*$t1*/) _,
- lateout("$10" /*$t2*/) _,
- lateout("$11" /*$t3*/) _,
- lateout("$12" /*$t4*/) _,
- lateout("$13" /*$t5*/) _,
- lateout("$14" /*$t6*/) _,
- lateout("$15" /*$t7*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- "syscall",
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- lateout("$7" /*$a3*/) err,
- lateout("$8" /*$t0*/) _,
- lateout("$9" /*$t1*/) _,
- lateout("$10" /*$t2*/) _,
- lateout("$11" /*$t3*/) _,
- lateout("$12" /*$t4*/) _,
- lateout("$13" /*$t5*/) _,
- lateout("$14" /*$t6*/) _,
- lateout("$15" /*$t7*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
-) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- "syscall",
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- lateout("$7" /*$a3*/) err,
- lateout("$8" /*$t0*/) _,
- lateout("$9" /*$t1*/) _,
- lateout("$10" /*$t2*/) _,
- lateout("$11" /*$t3*/) _,
- lateout("$12" /*$t4*/) _,
- lateout("$13" /*$t5*/) _,
- lateout("$14" /*$t6*/) _,
- lateout("$15" /*$t7*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! {
- asm!(
- "syscall",
- in("$2" /*$v0*/) nr.to_asm(),
- in("$4" /*$a0*/) a0.to_asm(),
- options(noreturn)
- )
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall2(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
-) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- "syscall",
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- in("$5" /*$a1*/) a1.to_asm(),
- lateout("$7" /*$a3*/) err,
- lateout("$8" /*$t0*/) _,
- lateout("$9" /*$t1*/) _,
- lateout("$10" /*$t2*/) _,
- lateout("$11" /*$t3*/) _,
- lateout("$12" /*$t4*/) _,
- lateout("$13" /*$t5*/) _,
- lateout("$14" /*$t6*/) _,
- lateout("$15" /*$t7*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall2_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
-) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- "syscall",
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- in("$5" /*$a1*/) a1.to_asm(),
- lateout("$7" /*$a3*/) err,
- lateout("$8" /*$t0*/) _,
- lateout("$9" /*$t1*/) _,
- lateout("$10" /*$t2*/) _,
- lateout("$11" /*$t3*/) _,
- lateout("$12" /*$t4*/) _,
- lateout("$13" /*$t5*/) _,
- lateout("$14" /*$t6*/) _,
- lateout("$15" /*$t7*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall3(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
-) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- "syscall",
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- in("$5" /*$a1*/) a1.to_asm(),
- in("$6" /*$a2*/) a2.to_asm(),
- lateout("$7" /*$a3*/) err,
- lateout("$8" /*$t0*/) _,
- lateout("$9" /*$t1*/) _,
- lateout("$10" /*$t2*/) _,
- lateout("$11" /*$t3*/) _,
- lateout("$12" /*$t4*/) _,
- lateout("$13" /*$t5*/) _,
- lateout("$14" /*$t6*/) _,
- lateout("$15" /*$t7*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall3_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
-) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- "syscall",
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- in("$5" /*$a1*/) a1.to_asm(),
- in("$6" /*$a2*/) a2.to_asm(),
- lateout("$7" /*$a3*/) err,
- lateout("$8" /*$t0*/) _,
- lateout("$9" /*$t1*/) _,
- lateout("$10" /*$t2*/) _,
- lateout("$11" /*$t3*/) _,
- lateout("$12" /*$t4*/) _,
- lateout("$13" /*$t5*/) _,
- lateout("$14" /*$t6*/) _,
- lateout("$15" /*$t7*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall4(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
-) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- "syscall",
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- in("$5" /*$a1*/) a1.to_asm(),
- in("$6" /*$a2*/) a2.to_asm(),
- inlateout("$7" /*$a3*/) a3.to_asm() => err,
- lateout("$8" /*$t0*/) _,
- lateout("$9" /*$t1*/) _,
- lateout("$10" /*$t2*/) _,
- lateout("$11" /*$t3*/) _,
- lateout("$12" /*$t4*/) _,
- lateout("$13" /*$t5*/) _,
- lateout("$14" /*$t6*/) _,
- lateout("$15" /*$t7*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall4_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
-) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- "syscall",
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- in("$5" /*$a1*/) a1.to_asm(),
- in("$6" /*$a2*/) a2.to_asm(),
- inlateout("$7" /*$a3*/) a3.to_asm() => err,
- lateout("$8" /*$t0*/) _,
- lateout("$9" /*$t1*/) _,
- lateout("$10" /*$t2*/) _,
- lateout("$11" /*$t3*/) _,
- lateout("$12" /*$t4*/) _,
- lateout("$13" /*$t5*/) _,
- lateout("$14" /*$t6*/) _,
- lateout("$15" /*$t7*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall5(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
-) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- ".set noat",
- "subu $sp, 32",
- "sw {}, 16($sp)",
- "syscall",
- "addu $sp, 32",
- ".set at",
- in(reg) a4.to_asm(),
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- in("$5" /*$a1*/) a1.to_asm(),
- in("$6" /*$a2*/) a2.to_asm(),
- inlateout("$7" /*$a3*/) a3.to_asm() => err,
- lateout("$8" /*$t0*/) _,
- lateout("$9" /*$t1*/) _,
- lateout("$10" /*$t2*/) _,
- lateout("$11" /*$t3*/) _,
- lateout("$12" /*$t4*/) _,
- lateout("$13" /*$t5*/) _,
- lateout("$14" /*$t6*/) _,
- lateout("$15" /*$t7*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(preserves_flags)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall5_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
-) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- ".set noat",
- "subu $sp, 32",
- "sw {}, 16($sp)",
- "syscall",
- "addu $sp, 32",
- ".set at",
- in(reg) a4.to_asm(),
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- in("$5" /*$a1*/) a1.to_asm(),
- in("$6" /*$a2*/) a2.to_asm(),
- inlateout("$7" /*$a3*/) a3.to_asm() => err,
- lateout("$8" /*$t0*/) _,
- lateout("$9" /*$t1*/) _,
- lateout("$10" /*$t2*/) _,
- lateout("$11" /*$t3*/) _,
- lateout("$12" /*$t4*/) _,
- lateout("$13" /*$t5*/) _,
- lateout("$14" /*$t6*/) _,
- lateout("$15" /*$t7*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(preserves_flags, readonly)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall6(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
-) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- ".set noat",
- "subu $sp, 32",
- "sw {}, 16($sp)",
- "sw {}, 20($sp)",
- "syscall",
- "addu $sp, 32",
- ".set at",
- in(reg) a4.to_asm(),
- in(reg) a5.to_asm(),
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- in("$5" /*$a1*/) a1.to_asm(),
- in("$6" /*$a2*/) a2.to_asm(),
- inlateout("$7" /*$a3*/) a3.to_asm() => err,
- lateout("$8" /*$t0*/) _,
- lateout("$9" /*$t1*/) _,
- lateout("$10" /*$t2*/) _,
- lateout("$11" /*$t3*/) _,
- lateout("$12" /*$t4*/) _,
- lateout("$13" /*$t5*/) _,
- lateout("$14" /*$t6*/) _,
- lateout("$15" /*$t7*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(preserves_flags)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall6_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
-) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- ".set noat",
- "subu $sp, 32",
- "sw {}, 16($sp)",
- "sw {}, 20($sp)",
- "syscall",
- "addu $sp, 32",
- ".set at",
- in(reg) a4.to_asm(),
- in(reg) a5.to_asm(),
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- in("$5" /*$a1*/) a1.to_asm(),
- in("$6" /*$a2*/) a2.to_asm(),
- inlateout("$7" /*$a3*/) a3.to_asm() => err,
- lateout("$8" /*$t0*/) _,
- lateout("$9" /*$t1*/) _,
- lateout("$10" /*$t2*/) _,
- lateout("$11" /*$t3*/) _,
- lateout("$12" /*$t4*/) _,
- lateout("$13" /*$t5*/) _,
- lateout("$14" /*$t6*/) _,
- lateout("$15" /*$t7*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(preserves_flags, readonly)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall7_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
- a6: ArgReg<'_, A6>,
-) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- ".set noat",
- "subu $sp, 32",
- "sw {}, 16($sp)",
- "sw {}, 20($sp)",
- "sw {}, 24($sp)",
- "syscall",
- "addu $sp, 32",
- ".set at",
- in(reg) a4.to_asm(),
- in(reg) a5.to_asm(),
- in(reg) a6.to_asm(),
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- in("$5" /*$a1*/) a1.to_asm(),
- in("$6" /*$a2*/) a2.to_asm(),
- inlateout("$7" /*$a3*/) a3.to_asm() => err,
- lateout("$8" /*$t0*/) _,
- lateout("$9" /*$t1*/) _,
- lateout("$10" /*$t2*/) _,
- lateout("$11" /*$t3*/) _,
- lateout("$12" /*$t4*/) _,
- lateout("$13" /*$t5*/) _,
- lateout("$14" /*$t6*/) _,
- lateout("$15" /*$t7*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(preserves_flags, readonly)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/mips64.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/mips64.rs
deleted file mode 100644
index d3c7d341f..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/mips64.rs
+++ /dev/null
@@ -1,466 +0,0 @@
-//! mips64el Linux system calls.
-//!
-//! On mips64el, Linux indicates success or failure using `$a3` (`$7`) rather
-//! than by returning a negative error code as most other architectures do.
-//!
-//! Mips-family platforms have a special calling convention for `__NR_pipe`,
-//! however we use `__NR_pipe2` instead to avoid having to implement it.
-
-use crate::backend::reg::{
- ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0,
-};
-use core::arch::asm;
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- "syscall",
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- lateout("$7" /*$a3*/) err,
- lateout("$8" /*$a4*/) _,
- lateout("$9" /*$a5*/) _,
- lateout("$10" /*$a6*/) _,
- lateout("$11" /*$a7*/) _,
- lateout("$12" /*$t0*/) _,
- lateout("$13" /*$t1*/) _,
- lateout("$14" /*$t2*/) _,
- lateout("$15" /*$t3*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- "syscall",
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- lateout("$7" /*$a3*/) err,
- lateout("$8" /*$a4*/) _,
- lateout("$9" /*$a5*/) _,
- lateout("$10" /*$a6*/) _,
- lateout("$11" /*$a7*/) _,
- lateout("$12" /*$t0*/) _,
- lateout("$13" /*$t1*/) _,
- lateout("$14" /*$t2*/) _,
- lateout("$15" /*$t3*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
-) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- "syscall",
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- lateout("$7" /*$a3*/) err,
- lateout("$8" /*$a4*/) _,
- lateout("$9" /*$a5*/) _,
- lateout("$10" /*$a6*/) _,
- lateout("$11" /*$a7*/) _,
- lateout("$12" /*$t0*/) _,
- lateout("$13" /*$t1*/) _,
- lateout("$14" /*$t2*/) _,
- lateout("$15" /*$t3*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! {
- asm!(
- "syscall",
- in("$2" /*$v0*/) nr.to_asm(),
- in("$4" /*$a0*/) a0.to_asm(),
- options(noreturn)
- )
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall2(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
-) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- "syscall",
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- in("$5" /*$a1*/) a1.to_asm(),
- lateout("$7" /*$a3*/) err,
- lateout("$8" /*$a4*/) _,
- lateout("$9" /*$a5*/) _,
- lateout("$10" /*$a6*/) _,
- lateout("$11" /*$a7*/) _,
- lateout("$12" /*$t0*/) _,
- lateout("$13" /*$t1*/) _,
- lateout("$14" /*$t2*/) _,
- lateout("$15" /*$t3*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall2_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
-) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- "syscall",
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- in("$5" /*$a1*/) a1.to_asm(),
- lateout("$7" /*$a3*/) err,
- lateout("$8" /*$a4*/) _,
- lateout("$9" /*$a5*/) _,
- lateout("$10" /*$a6*/) _,
- lateout("$11" /*$a7*/) _,
- lateout("$12" /*$t0*/) _,
- lateout("$13" /*$t1*/) _,
- lateout("$14" /*$t2*/) _,
- lateout("$15" /*$t3*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall3(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
-) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- "syscall",
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- in("$5" /*$a1*/) a1.to_asm(),
- in("$6" /*$a2*/) a2.to_asm(),
- lateout("$7" /*$a3*/) err,
- lateout("$8" /*$a4*/) _,
- lateout("$9" /*$a5*/) _,
- lateout("$10" /*$a6*/) _,
- lateout("$11" /*$a7*/) _,
- lateout("$12" /*$t0*/) _,
- lateout("$13" /*$t1*/) _,
- lateout("$14" /*$t2*/) _,
- lateout("$15" /*$t3*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall3_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
-) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- "syscall",
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- in("$5" /*$a1*/) a1.to_asm(),
- in("$6" /*$a2*/) a2.to_asm(),
- lateout("$7" /*$a3*/) err,
- lateout("$8" /*$a4*/) _,
- lateout("$9" /*$a5*/) _,
- lateout("$10" /*$a6*/) _,
- lateout("$11" /*$a7*/) _,
- lateout("$12" /*$t0*/) _,
- lateout("$13" /*$t1*/) _,
- lateout("$14" /*$t2*/) _,
- lateout("$15" /*$t3*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall4(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
-) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- "syscall",
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- in("$5" /*$a1*/) a1.to_asm(),
- in("$6" /*$a2*/) a2.to_asm(),
- inlateout("$7" /*$a3*/) a3.to_asm() => err,
- lateout("$8" /*$a4*/) _,
- lateout("$9" /*$a5*/) _,
- lateout("$10" /*$a6*/) _,
- lateout("$11" /*$a7*/) _,
- lateout("$12" /*$t0*/) _,
- lateout("$13" /*$t1*/) _,
- lateout("$14" /*$t2*/) _,
- lateout("$15" /*$t3*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall4_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
-) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- "syscall",
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- in("$5" /*$a1*/) a1.to_asm(),
- in("$6" /*$a2*/) a2.to_asm(),
- inlateout("$7" /*$a3*/) a3.to_asm() => err,
- lateout("$8" /*$a4*/) _,
- lateout("$9" /*$a5*/) _,
- lateout("$10" /*$a6*/) _,
- lateout("$11" /*$a7*/) _,
- lateout("$12" /*$t0*/) _,
- lateout("$13" /*$t1*/) _,
- lateout("$14" /*$t2*/) _,
- lateout("$15" /*$t3*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall5(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
-) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- "syscall",
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- in("$5" /*$a1*/) a1.to_asm(),
- in("$6" /*$a2*/) a2.to_asm(),
- inlateout("$7" /*$a3*/) a3.to_asm() => err,
- inlateout("$8" /*$a4*/) a4.to_asm() => _,
- lateout("$9" /*$a5*/) _,
- lateout("$10" /*$a6*/) _,
- lateout("$11" /*$a7*/) _,
- lateout("$12" /*$t0*/) _,
- lateout("$13" /*$t1*/) _,
- lateout("$14" /*$t2*/) _,
- lateout("$15" /*$t3*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall5_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
-) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- "syscall",
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- in("$5" /*$a1*/) a1.to_asm(),
- in("$6" /*$a2*/) a2.to_asm(),
- inlateout("$7" /*$a3*/) a3.to_asm() => err,
- inlateout("$8" /*$a4*/) a4.to_asm() => _,
- lateout("$9" /*$a5*/) _,
- lateout("$10" /*$a6*/) _,
- lateout("$11" /*$a7*/) _,
- lateout("$12" /*$t0*/) _,
- lateout("$13" /*$t1*/) _,
- lateout("$14" /*$t2*/) _,
- lateout("$15" /*$t3*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall6(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
-) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- "syscall",
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- in("$5" /*$a1*/) a1.to_asm(),
- in("$6" /*$a2*/) a2.to_asm(),
- inlateout("$7" /*$a3*/) a3.to_asm() => err,
- inlateout("$8" /*$a4*/) a4.to_asm() => _,
- inlateout("$9" /*$a5*/) a5.to_asm() => _,
- lateout("$10" /*$a6*/) _,
- lateout("$11" /*$a7*/) _,
- lateout("$12" /*$t0*/) _,
- lateout("$13" /*$t1*/) _,
- lateout("$14" /*$t2*/) _,
- lateout("$15" /*$t3*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall6_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
-) -> RetReg<R0> {
- let x0;
- let err: usize;
- asm!(
- "syscall",
- inlateout("$2" /*$v0*/) nr.to_asm() => x0,
- in("$4" /*$a0*/) a0.to_asm(),
- in("$5" /*$a1*/) a1.to_asm(),
- in("$6" /*$a2*/) a2.to_asm(),
- inlateout("$7" /*$a3*/) a3.to_asm() => err,
- inlateout("$8" /*$a4*/) a4.to_asm() => _,
- inlateout("$9" /*$a5*/) a5.to_asm() => _,
- lateout("$10" /*$a6*/) _,
- lateout("$11" /*$a7*/) _,
- lateout("$12" /*$t0*/) _,
- lateout("$13" /*$t1*/) _,
- lateout("$14" /*$t2*/) _,
- lateout("$15" /*$t3*/) _,
- lateout("$24" /*$t8*/) _,
- lateout("$25" /*$t9*/) _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(if err != 0 {
- (x0 as usize).wrapping_neg() as *mut _
- } else {
- x0
- })
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/mod.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/mod.rs
deleted file mode 100644
index 524c449d9..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/mod.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-//! Inline asm for making system calls.
-//!
-//! Compilers should really have intrinsics for making system calls. They're
-//! much like regular calls, with custom calling conventions, and calling
-//! conventions are otherwise the compiler's job. But for now, use inline asm.
-
-#[cfg_attr(target_arch = "aarch64", path = "aarch64.rs")]
-#[cfg_attr(all(target_arch = "arm", not(thumb_mode)), path = "arm.rs")]
-#[cfg_attr(all(target_arch = "arm", thumb_mode), path = "thumb.rs")]
-#[cfg_attr(target_arch = "mips", path = "mips.rs")]
-#[cfg_attr(target_arch = "mips64", path = "mips64.rs")]
-#[cfg_attr(target_arch = "powerpc64", path = "powerpc64.rs")]
-#[cfg_attr(target_arch = "riscv64", path = "riscv64.rs")]
-#[cfg_attr(target_arch = "x86", path = "x86.rs")]
-#[cfg_attr(target_arch = "x86_64", path = "x86_64.rs")]
-mod target_arch;
-
-pub(in crate::backend) use self::target_arch::*;
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/powerpc64.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/powerpc64.rs
deleted file mode 100644
index 8cca7dca7..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/powerpc64.rs
+++ /dev/null
@@ -1,413 +0,0 @@
-//! powerpc64le Linux system calls.
-//!
-//! On powerpc64le, Linux indicates success or failure using `cr0.SO` rather
-//! than by returning a negative error code as most other architectures do. In
-//! theory we could immediately translate this into a `Result`, and it'd save a
-//! few branches. And in theory we could have specialized sequences for use
-//! with syscalls that are known to never fail. However, those would require
-//! more extensive changes in rustix's platform-independent code. For now, we
-//! check the flag and negate the error value to make PowerPC64 look like other
-//! architectures.
-
-use crate::backend::reg::{
- ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0,
-};
-use core::arch::asm;
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber) -> RetReg<R0> {
- let r0;
- asm!(
- "sc",
- "bns 0f",
- "neg 3, 3",
- "0:",
- inlateout("r0") nr.to_asm() => _,
- lateout("r3") r0,
- lateout("r4") _,
- lateout("r5") _,
- lateout("r6") _,
- lateout("r7") _,
- lateout("r8") _,
- lateout("r9") _,
- lateout("r10") _,
- lateout("r11") _,
- lateout("r12") _,
- lateout("cr0") _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg<R0> {
- let r0;
- asm!(
- "sc",
- "bns 0f",
- "neg 3, 3",
- "0:",
- inlateout("r0") nr.to_asm() => _,
- inlateout("r3") a0.to_asm() => r0,
- lateout("r4") _,
- lateout("r5") _,
- lateout("r6") _,
- lateout("r7") _,
- lateout("r8") _,
- lateout("r9") _,
- lateout("r10") _,
- lateout("r11") _,
- lateout("r12") _,
- lateout("cr0") _,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "sc",
- "bns 0f",
- "neg 3, 3",
- "0:",
- inlateout("r0") nr.to_asm() => _,
- inlateout("r3") a0.to_asm() => r0,
- lateout("r4") _,
- lateout("r5") _,
- lateout("r6") _,
- lateout("r7") _,
- lateout("r8") _,
- lateout("r9") _,
- lateout("r10") _,
- lateout("r11") _,
- lateout("r12") _,
- lateout("cr0") _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! {
- asm!(
- "sc",
- in("r0") nr.to_asm(),
- in("r3") a0.to_asm(),
- options(noreturn)
- )
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall2(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "sc",
- "bns 0f",
- "neg 3, 3",
- "0:",
- inlateout("r0") nr.to_asm() => _,
- inlateout("r3") a0.to_asm() => r0,
- inlateout("r4") a1.to_asm() => _,
- lateout("r5") _,
- lateout("r6") _,
- lateout("r7") _,
- lateout("r8") _,
- lateout("r9") _,
- lateout("r10") _,
- lateout("r11") _,
- lateout("r12") _,
- lateout("cr0") _,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall2_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "sc",
- "bns 0f",
- "neg 3, 3",
- "0:",
- inlateout("r0") nr.to_asm() => _,
- inlateout("r3") a0.to_asm() => r0,
- inlateout("r4") a1.to_asm() => _,
- lateout("r5") _,
- lateout("r6") _,
- lateout("r7") _,
- lateout("r8") _,
- lateout("r9") _,
- lateout("r10") _,
- lateout("r11") _,
- lateout("r12") _,
- lateout("cr0") _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall3(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "sc",
- "bns 0f",
- "neg 3, 3",
- "0:",
- inlateout("r0") nr.to_asm() => _,
- inlateout("r3") a0.to_asm() => r0,
- inlateout("r4") a1.to_asm() => _,
- inlateout("r5") a2.to_asm() => _,
- lateout("r6") _,
- lateout("r7") _,
- lateout("r8") _,
- lateout("r9") _,
- lateout("r10") _,
- lateout("r11") _,
- lateout("r12") _,
- lateout("cr0") _,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall3_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "sc",
- "bns 0f",
- "neg 3, 3",
- "0:",
- inlateout("r0") nr.to_asm() => _,
- inlateout("r3") a0.to_asm() => r0,
- inlateout("r4") a1.to_asm() => _,
- inlateout("r5") a2.to_asm() => _,
- lateout("r6") _,
- lateout("r7") _,
- lateout("r8") _,
- lateout("r9") _,
- lateout("r10") _,
- lateout("r11") _,
- lateout("r12") _,
- lateout("cr0") _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall4(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "sc",
- "bns 0f",
- "neg 3, 3",
- "0:",
- inlateout("r0") nr.to_asm() => _,
- inlateout("r3") a0.to_asm() => r0,
- inlateout("r4") a1.to_asm() => _,
- inlateout("r5") a2.to_asm() => _,
- inlateout("r6") a3.to_asm() => _,
- lateout("r7") _,
- lateout("r8") _,
- lateout("r9") _,
- lateout("r10") _,
- lateout("r11") _,
- lateout("r12") _,
- lateout("cr0") _,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall4_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "sc",
- "bns 0f",
- "neg 3, 3",
- "0:",
- inlateout("r0") nr.to_asm() => _,
- inlateout("r3") a0.to_asm() => r0,
- inlateout("r4") a1.to_asm() => _,
- inlateout("r5") a2.to_asm() => _,
- inlateout("r6") a3.to_asm() => _,
- lateout("r7") _,
- lateout("r8") _,
- lateout("r9") _,
- lateout("r10") _,
- lateout("r11") _,
- lateout("r12") _,
- lateout("cr0") _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall5(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "sc",
- "bns 0f",
- "neg 3, 3",
- "0:",
- inlateout("r0") nr.to_asm() => _,
- inlateout("r3") a0.to_asm() => r0,
- inlateout("r4") a1.to_asm() => _,
- inlateout("r5") a2.to_asm() => _,
- inlateout("r6") a3.to_asm() => _,
- inlateout("r7") a4.to_asm() => _,
- lateout("r8") _,
- lateout("r9") _,
- lateout("r10") _,
- lateout("r11") _,
- lateout("r12") _,
- lateout("cr0") _,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall5_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "sc",
- "bns 0f",
- "neg 3, 3",
- "0:",
- inlateout("r0") nr.to_asm() => _,
- inlateout("r3") a0.to_asm() => r0,
- inlateout("r4") a1.to_asm() => _,
- inlateout("r5") a2.to_asm() => _,
- inlateout("r6") a3.to_asm() => _,
- inlateout("r7") a4.to_asm() => _,
- lateout("r8") _,
- lateout("r9") _,
- lateout("r10") _,
- lateout("r11") _,
- lateout("r12") _,
- lateout("cr0") _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall6(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "sc",
- "bns 0f",
- "neg 3, 3",
- "0:",
- inlateout("r0") nr.to_asm() => _,
- inlateout("r3") a0.to_asm() => r0,
- inlateout("r4") a1.to_asm() => _,
- inlateout("r5") a2.to_asm() => _,
- inlateout("r6") a3.to_asm() => _,
- inlateout("r7") a4.to_asm() => _,
- inlateout("r8") a5.to_asm() => _,
- lateout("r9") _,
- lateout("r10") _,
- lateout("r11") _,
- lateout("r12") _,
- lateout("cr0") _,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall6_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "sc",
- "bns 0f",
- "neg 3, 3",
- "0:",
- inlateout("r0") nr.to_asm() => _,
- inlateout("r3") a0.to_asm() => r0,
- inlateout("r4") a1.to_asm() => _,
- inlateout("r5") a2.to_asm() => _,
- inlateout("r6") a3.to_asm() => _,
- inlateout("r7") a4.to_asm() => _,
- inlateout("r8") a5.to_asm() => _,
- lateout("r9") _,
- lateout("r10") _,
- lateout("r11") _,
- lateout("r12") _,
- lateout("cr0") _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/riscv64.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/riscv64.rs
deleted file mode 100644
index b1e306266..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/riscv64.rs
+++ /dev/null
@@ -1,265 +0,0 @@
-//! riscv64 Linux system calls.
-
-use crate::backend::reg::{
- ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0,
-};
-use core::arch::asm;
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber<'_>) -> RetReg<R0> {
- let r0;
- asm!(
- "ecall",
- in("a7") nr.to_asm(),
- lateout("a0") r0,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg<R0> {
- let r0;
- asm!(
- "ecall",
- in("a7") nr.to_asm(),
- inlateout("a0") a0.to_asm() => r0,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "ecall",
- in("a7") nr.to_asm(),
- inlateout("a0") a0.to_asm() => r0,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! {
- asm!(
- "ecall",
- in("a7") nr.to_asm(),
- in("a0") a0.to_asm(),
- options(noreturn)
- );
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall2(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "ecall",
- in("a7") nr.to_asm(),
- inlateout("a0") a0.to_asm() => r0,
- in("a1") a1.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall2_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "ecall",
- in("a7") nr.to_asm(),
- inlateout("a0") a0.to_asm() => r0,
- in("a1") a1.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall3(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "ecall",
- in("a7") nr.to_asm(),
- inlateout("a0") a0.to_asm() => r0,
- in("a1") a1.to_asm(),
- in("a2") a2.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall3_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "ecall",
- in("a7") nr.to_asm(),
- inlateout("a0") a0.to_asm() => r0,
- in("a1") a1.to_asm(),
- in("a2") a2.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall4(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "ecall",
- in("a7") nr.to_asm(),
- inlateout("a0") a0.to_asm() => r0,
- in("a1") a1.to_asm(),
- in("a2") a2.to_asm(),
- in("a3") a3.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall4_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "ecall",
- in("a7") nr.to_asm(),
- inlateout("a0") a0.to_asm() => r0,
- in("a1") a1.to_asm(),
- in("a2") a2.to_asm(),
- in("a3") a3.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall5(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "ecall",
- in("a7") nr.to_asm(),
- inlateout("a0") a0.to_asm() => r0,
- in("a1") a1.to_asm(),
- in("a2") a2.to_asm(),
- in("a3") a3.to_asm(),
- in("a4") a4.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall5_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "ecall",
- in("a7") nr.to_asm(),
- inlateout("a0") a0.to_asm() => r0,
- in("a1") a1.to_asm(),
- in("a2") a2.to_asm(),
- in("a3") a3.to_asm(),
- in("a4") a4.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall6(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "ecall",
- in("a7") nr.to_asm(),
- inlateout("a0") a0.to_asm() => r0,
- in("a1") a1.to_asm(),
- in("a2") a2.to_asm(),
- in("a3") a3.to_asm(),
- in("a4") a4.to_asm(),
- in("a5") a5.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall6_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "ecall",
- in("a7") nr.to_asm(),
- inlateout("a0") a0.to_asm() => r0,
- in("a1") a1.to_asm(),
- in("a2") a2.to_asm(),
- in("a3") a3.to_asm(),
- in("a4") a4.to_asm(),
- in("a5") a5.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/thumb.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/thumb.rs
deleted file mode 100644
index 398a73dfe..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/thumb.rs
+++ /dev/null
@@ -1,322 +0,0 @@
-//! arm Linux system calls, using thumb-mode.
-//!
-//! In thumb-mode, r7 is the frame pointer and is not permitted to be used in
-//! an inline asm operand, so we have to use a different register and copy it
-//! into r7 inside the inline asm.
-
-use crate::backend::reg::{
- ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0,
-};
-use core::arch::asm;
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber<'_>) -> RetReg<R0> {
- let r0;
- asm!(
- "mov {tmp}, r7",
- "mov r7, {nr}",
- "svc 0",
- "mov r7, {tmp}",
- nr = in(reg) nr.to_asm(),
- tmp = out(reg) _,
- lateout("r0") r0,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg<R0> {
- let r0;
- asm!(
- "mov {tmp}, r7",
- "mov r7, {nr}",
- "svc 0",
- "mov r7, {tmp}",
- nr = in(reg) nr.to_asm(),
- tmp = out(reg) _,
- inlateout("r0") a0.to_asm() => r0,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "mov {tmp}, r7",
- "mov r7, {nr}",
- "svc 0",
- "mov r7, {tmp}",
- nr = in(reg) nr.to_asm(),
- tmp = out(reg) _,
- inlateout("r0") a0.to_asm() => r0,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! {
- asm!(
- "mov r7, {nr}",
- "svc 0",
- nr = in(reg) nr.to_asm(),
- in("r0") a0.to_asm(),
- options(noreturn)
- )
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall2(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "mov {tmp}, r7",
- "mov r7, {nr}",
- "svc 0",
- "mov r7, {tmp}",
- nr = in(reg) nr.to_asm(),
- tmp = out(reg) _,
- inlateout("r0") a0.to_asm() => r0,
- in("r1") a1.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall2_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "mov {tmp}, r7",
- "mov r7, {nr}",
- "svc 0",
- "mov r7, {tmp}",
- nr = in(reg) nr.to_asm(),
- tmp = out(reg) _,
- inlateout("r0") a0.to_asm() => r0,
- in("r1") a1.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall3(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "mov {tmp}, r7",
- "mov r7, {nr}",
- "svc 0",
- "mov r7, {tmp}",
- nr = in(reg) nr.to_asm(),
- tmp = out(reg) _,
- inlateout("r0") a0.to_asm() => r0,
- in("r1") a1.to_asm(),
- in("r2") a2.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall3_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "mov {tmp}, r7",
- "mov r7, {nr}",
- "svc 0",
- "mov r7, {tmp}",
- nr = in(reg) nr.to_asm(),
- tmp = out(reg) _,
- inlateout("r0") a0.to_asm() => r0,
- in("r1") a1.to_asm(),
- in("r2") a2.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall4(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "mov {tmp}, r7",
- "mov r7, {nr}",
- "svc 0",
- "mov r7, {tmp}",
- nr = in(reg) nr.to_asm(),
- tmp = out(reg) _,
- inlateout("r0") a0.to_asm() => r0,
- in("r1") a1.to_asm(),
- in("r2") a2.to_asm(),
- in("r3") a3.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall4_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "mov {tmp}, r7",
- "mov r7, {nr}",
- "svc 0",
- "mov r7, {tmp}",
- nr = in(reg) nr.to_asm(),
- tmp = out(reg) _,
- inlateout("r0") a0.to_asm() => r0,
- in("r1") a1.to_asm(),
- in("r2") a2.to_asm(),
- in("r3") a3.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall5(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "mov {tmp}, r7",
- "mov r7, {nr}",
- "svc 0",
- "mov r7, {tmp}",
- nr = in(reg) nr.to_asm(),
- tmp = out(reg) _,
- inlateout("r0") a0.to_asm() => r0,
- in("r1") a1.to_asm(),
- in("r2") a2.to_asm(),
- in("r3") a3.to_asm(),
- in("r4") a4.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall5_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "mov {tmp}, r7",
- "mov r7, {nr}",
- "svc 0",
- "mov r7, {tmp}",
- nr = in(reg) nr.to_asm(),
- tmp = out(reg) _,
- inlateout("r0") a0.to_asm() => r0,
- in("r1") a1.to_asm(),
- in("r2") a2.to_asm(),
- in("r3") a3.to_asm(),
- in("r4") a4.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall6(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "mov {tmp}, r7",
- "mov r7, {nr}",
- "svc 0",
- "mov r7, {tmp}",
- nr = in(reg) nr.to_asm(),
- tmp = out(reg) _,
- inlateout("r0") a0.to_asm() => r0,
- in("r1") a1.to_asm(),
- in("r2") a2.to_asm(),
- in("r3") a3.to_asm(),
- in("r4") a4.to_asm(),
- in("r5") a5.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall6_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "mov {tmp}, r7",
- "mov r7, {nr}",
- "svc 0",
- "mov r7, {tmp}",
- nr = in(reg) nr.to_asm(),
- tmp = out(reg) _,
- inlateout("r0") a0.to_asm() => r0,
- in("r1") a1.to_asm(),
- in("r2") a2.to_asm(),
- in("r3") a3.to_asm(),
- in("r4") a4.to_asm(),
- in("r5") a5.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/x86.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/x86.rs
deleted file mode 100644
index 8e115148d..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/x86.rs
+++ /dev/null
@@ -1,494 +0,0 @@
-//! 32-bit x86 Linux system calls.
-//!
-//! There are two forms; `indirect_*` which take a callee, which allow calling
-//! through the vDSO when possible, and plain forms, which use the `int 0x80`
-//! instruction.
-//!
-//! Most `rustix` syscalls use the vsyscall mechanism rather than going using
-//! `int 0x80` sequences.
-
-#![allow(dead_code)]
-
-use crate::backend::reg::{
- ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0,
-};
-use crate::backend::vdso_wrappers::SyscallType;
-use core::arch::asm;
-
-#[inline]
-pub(in crate::backend) unsafe fn indirect_syscall0(
- callee: SyscallType,
- nr: SyscallNumber<'_>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "call {callee}",
- callee = in(reg) callee,
- inlateout("eax") nr.to_asm() => r0,
- options(preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn indirect_syscall1(
- callee: SyscallType,
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "call {callee}",
- callee = in(reg) callee,
- inlateout("eax") nr.to_asm() => r0,
- in("ebx") a0.to_asm(),
- options(preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn indirect_syscall1_noreturn(
- callee: SyscallType,
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
-) -> ! {
- asm!(
- "call {callee}",
- callee = in(reg) callee,
- in("eax") nr.to_asm(),
- in("ebx") a0.to_asm(),
- options(noreturn)
- )
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn indirect_syscall2(
- callee: SyscallType,
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "call {callee}",
- callee = in(reg) callee,
- inlateout("eax") nr.to_asm() => r0,
- in("ebx") a0.to_asm(),
- in("ecx") a1.to_asm(),
- options(preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn indirect_syscall3(
- callee: SyscallType,
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "call {callee}",
- callee = in(reg) callee,
- inlateout("eax") nr.to_asm() => r0,
- in("ebx") a0.to_asm(),
- in("ecx") a1.to_asm(),
- in("edx") a2.to_asm(),
- options(preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn indirect_syscall4(
- callee: SyscallType,
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
-) -> RetReg<R0> {
- let r0;
- // a3 should go in esi, but `asm!` won't let us use it as an operand.
- // temporarily swap it into place, and then swap it back afterward.
- //
- // We hard-code the callee operand to use edi instead of `in(reg)` because
- // even though we can't name esi as an operand, the compiler can use esi to
- // satisfy `in(reg)`.
- asm!(
- "xchg esi, {a3}",
- "call edi",
- "xchg esi, {a3}",
- a3 = in(reg) a3.to_asm(),
- in("edi") callee,
- inlateout("eax") nr.to_asm() => r0,
- in("ebx") a0.to_asm(),
- in("ecx") a1.to_asm(),
- in("edx") a2.to_asm(),
- options(preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn indirect_syscall5(
- callee: SyscallType,
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
-) -> RetReg<R0> {
- let r0;
- // Oof. a3 should go in esi, and `asm!` won't let us use that register as
- // an operand. And we can't request stack slots. And there are no other
- // registers free. Use eax as a temporary pointer to a slice, since it
- // gets clobbered as the return value anyway.
- asm!(
- "push esi",
- "push DWORD PTR [eax + 0]",
- "mov esi, DWORD PTR [eax + 4]",
- "mov eax, DWORD PTR [eax + 8]",
- "call DWORD PTR [esp]",
- "pop esi",
- "pop esi",
- inout("eax") &[callee as _, a3.to_asm(), nr.to_asm()] => r0,
- in("ebx") a0.to_asm(),
- in("ecx") a1.to_asm(),
- in("edx") a2.to_asm(),
- in("edi") a4.to_asm(),
- options(preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[allow(clippy::too_many_arguments)]
-#[inline]
-pub(in crate::backend) unsafe fn indirect_syscall6(
- callee: SyscallType,
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
-) -> RetReg<R0> {
- let r0;
- // Oof again. a3 should go in esi, and a5 should go in ebp, and `asm!`
- // won't let us use either of those registers as operands. And we can't
- // request stack slots. And there are no other registers free. Use eax as a
- // temporary pointer to a slice, since it gets clobbered as the return
- // value anyway.
- //
- // This is another reason that syscalls should be compiler intrinsics
- // rather than inline asm.
- asm!(
- "push ebp",
- "push esi",
- "push DWORD PTR [eax + 0]",
- "mov esi, DWORD PTR [eax + 4]",
- "mov ebp, DWORD PTR [eax + 8]",
- "mov eax, DWORD PTR [eax + 12]",
- "call DWORD PTR [esp]",
- "pop esi",
- "pop esi",
- "pop ebp",
- inout("eax") &[callee as _, a3.to_asm(), a5.to_asm(), nr.to_asm()] => r0,
- in("ebx") a0.to_asm(),
- in("ecx") a1.to_asm(),
- in("edx") a2.to_asm(),
- in("edi") a4.to_asm(),
- options(preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber<'_>) -> RetReg<R0> {
- let r0;
- asm!(
- "int $$0x80",
- inlateout("eax") nr.to_asm() => r0,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg<R0> {
- let r0;
- asm!(
- "int $$0x80",
- inlateout("eax") nr.to_asm() => r0,
- in("ebx") a0.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "int $$0x80",
- inlateout("eax") nr.to_asm() => r0,
- in("ebx") a0.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! {
- asm!(
- "int $$0x80",
- in("eax") nr.to_asm(),
- in("ebx") a0.to_asm(),
- options(noreturn)
- )
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall2(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "int $$0x80",
- inlateout("eax") nr.to_asm() => r0,
- in("ebx") a0.to_asm(),
- in("ecx") a1.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall2_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "int $$0x80",
- inlateout("eax") nr.to_asm() => r0,
- in("ebx") a0.to_asm(),
- in("ecx") a1.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall3(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "int $$0x80",
- inlateout("eax") nr.to_asm() => r0,
- in("ebx") a0.to_asm(),
- in("ecx") a1.to_asm(),
- in("edx") a2.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall3_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "int $$0x80",
- inlateout("eax") nr.to_asm() => r0,
- in("ebx") a0.to_asm(),
- in("ecx") a1.to_asm(),
- in("edx") a2.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall4(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
-) -> RetReg<R0> {
- let r0;
- // a3 should go in esi, but `asm!` won't let us use it as an operand.
- // Temporarily swap it into place, and then swap it back afterward.
- asm!(
- "xchg esi, {a3}",
- "int $$0x80",
- "xchg esi, {a3}",
- a3 = in(reg) a3.to_asm(),
- inlateout("eax") nr.to_asm() => r0,
- in("ebx") a0.to_asm(),
- in("ecx") a1.to_asm(),
- in("edx") a2.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall4_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "xchg esi, {a3}",
- "int $$0x80",
- "xchg esi, {a3}",
- a3 = in(reg) a3.to_asm(),
- inlateout("eax") nr.to_asm() => r0,
- in("ebx") a0.to_asm(),
- in("ecx") a1.to_asm(),
- in("edx") a2.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall5(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
-) -> RetReg<R0> {
- let r0;
- // As in `syscall4`, use xchg to handle a3. a4 should go in edi, and we can
- // use that register as an operand. Unlike in `indirect_syscall5`, we don't
- // have a `callee` operand taking up a register, so we have enough
- // registers and don't need to use a slice.
- asm!(
- "xchg esi, {a3}",
- "int $$0x80",
- "xchg esi, {a3}",
- a3 = in(reg) a3.to_asm(),
- inlateout("eax") nr.to_asm() => r0,
- in("ebx") a0.to_asm(),
- in("ecx") a1.to_asm(),
- in("edx") a2.to_asm(),
- in("edi") a4.to_asm(),
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall5_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
-) -> RetReg<R0> {
- let r0;
- // See the comments in `syscall5`.
- asm!(
- "xchg esi, {a3}",
- "int $$0x80",
- "xchg esi, {a3}",
- a3 = in(reg) a3.to_asm(),
- inlateout("eax") nr.to_asm() => r0,
- in("ebx") a0.to_asm(),
- in("ecx") a1.to_asm(),
- in("edx") a2.to_asm(),
- in("edi") a4.to_asm(),
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall6(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
-) -> RetReg<R0> {
- let r0;
- // See the comments in `indirect_syscall6`.
- asm!(
- "push ebp",
- "push esi",
- "mov esi, DWORD PTR [eax + 0]",
- "mov ebp, DWORD PTR [eax + 4]",
- "mov eax, DWORD PTR [eax + 8]",
- "int $$0x80",
- "pop esi",
- "pop ebp",
- inout("eax") &[a3.to_asm(), a5.to_asm(), nr.to_asm()] => r0,
- in("ebx") a0.to_asm(),
- in("ecx") a1.to_asm(),
- in("edx") a2.to_asm(),
- in("edi") a4.to_asm(),
- options(preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall6_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
-) -> RetReg<R0> {
- let r0;
- // See the comments in `indirect_syscall6`.
- asm!(
- "push ebp",
- "push esi",
- "mov esi, DWORD PTR [eax + 0]",
- "mov ebp, DWORD PTR [eax + 4]",
- "mov eax, DWORD PTR [eax + 8]",
- "int $$0x80",
- "pop esi",
- "pop ebp",
- inout("eax") &[a3.to_asm(), a5.to_asm(), nr.to_asm()] => r0,
- in("ebx") a0.to_asm(),
- in("ecx") a1.to_asm(),
- in("edx") a2.to_asm(),
- in("edi") a4.to_asm(),
- options(preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/x86_64.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/x86_64.rs
deleted file mode 100644
index 084f5fee4..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/inline/x86_64.rs
+++ /dev/null
@@ -1,293 +0,0 @@
-//! x86-64 Linux system calls.
-
-use crate::backend::reg::{
- ArgReg, FromAsm, RetReg, SyscallNumber, ToAsm, A0, A1, A2, A3, A4, A5, R0,
-};
-use core::arch::asm;
-
-#[cfg(target_pointer_width = "32")]
-compile_error!("x32 is not yet supported");
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall0_readonly(nr: SyscallNumber<'_>) -> RetReg<R0> {
- let r0;
- asm!(
- "syscall",
- inlateout("rax") nr.to_asm() => r0,
- lateout("rcx") _,
- lateout("r11") _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg<R0> {
- let r0;
- asm!(
- "syscall",
- inlateout("rax") nr.to_asm() => r0,
- in("rdi") a0.to_asm(),
- lateout("rcx") _,
- lateout("r11") _,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "syscall",
- inlateout("rax") nr.to_asm() => r0,
- in("rdi") a0.to_asm(),
- lateout("rcx") _,
- lateout("r11") _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! {
- asm!(
- "syscall",
- in("rax") nr.to_asm(),
- in("rdi") a0.to_asm(),
- options(noreturn)
- )
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall2(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "syscall",
- inlateout("rax") nr.to_asm() => r0,
- in("rdi") a0.to_asm(),
- in("rsi") a1.to_asm(),
- lateout("rcx") _,
- lateout("r11") _,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall2_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "syscall",
- inlateout("rax") nr.to_asm() => r0,
- in("rdi") a0.to_asm(),
- in("rsi") a1.to_asm(),
- lateout("rcx") _,
- lateout("r11") _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall3(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "syscall",
- inlateout("rax") nr.to_asm() => r0,
- in("rdi") a0.to_asm(),
- in("rsi") a1.to_asm(),
- in("rdx") a2.to_asm(),
- lateout("rcx") _,
- lateout("r11") _,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall3_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "syscall",
- inlateout("rax") nr.to_asm() => r0,
- in("rdi") a0.to_asm(),
- in("rsi") a1.to_asm(),
- in("rdx") a2.to_asm(),
- lateout("rcx") _,
- lateout("r11") _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall4(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "syscall",
- inlateout("rax") nr.to_asm() => r0,
- in("rdi") a0.to_asm(),
- in("rsi") a1.to_asm(),
- in("rdx") a2.to_asm(),
- in("r10") a3.to_asm(),
- lateout("rcx") _,
- lateout("r11") _,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall4_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "syscall",
- inlateout("rax") nr.to_asm() => r0,
- in("rdi") a0.to_asm(),
- in("rsi") a1.to_asm(),
- in("rdx") a2.to_asm(),
- in("r10") a3.to_asm(),
- lateout("rcx") _,
- lateout("r11") _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall5(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "syscall",
- inlateout("rax") nr.to_asm() => r0,
- in("rdi") a0.to_asm(),
- in("rsi") a1.to_asm(),
- in("rdx") a2.to_asm(),
- in("r10") a3.to_asm(),
- in("r8") a4.to_asm(),
- lateout("rcx") _,
- lateout("r11") _,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall5_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "syscall",
- inlateout("rax") nr.to_asm() => r0,
- in("rdi") a0.to_asm(),
- in("rsi") a1.to_asm(),
- in("rdx") a2.to_asm(),
- in("r10") a3.to_asm(),
- in("r8") a4.to_asm(),
- lateout("rcx") _,
- lateout("r11") _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall6(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "syscall",
- inlateout("rax") nr.to_asm() => r0,
- in("rdi") a0.to_asm(),
- in("rsi") a1.to_asm(),
- in("rdx") a2.to_asm(),
- in("r10") a3.to_asm(),
- in("r8") a4.to_asm(),
- in("r9") a5.to_asm(),
- lateout("rcx") _,
- lateout("r11") _,
- options(nostack, preserves_flags)
- );
- FromAsm::from_asm(r0)
-}
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall6_readonly(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
-) -> RetReg<R0> {
- let r0;
- asm!(
- "syscall",
- inlateout("rax") nr.to_asm() => r0,
- in("rdi") a0.to_asm(),
- in("rsi") a1.to_asm(),
- in("rdx") a2.to_asm(),
- in("r10") a3.to_asm(),
- in("r8") a4.to_asm(),
- in("r9") a5.to_asm(),
- lateout("rcx") _,
- lateout("r11") _,
- options(nostack, preserves_flags, readonly)
- );
- FromAsm::from_asm(r0)
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/mod.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/arch/mod.rs
deleted file mode 100644
index e13f675fd..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/mod.rs
+++ /dev/null
@@ -1,222 +0,0 @@
-//! Architecture-specific syscall code.
-//!
-//! `rustix` has inline assembly sequences using `asm!`, but that requires
-//! nightly Rust, so it also has out-of-line ("outline") assembly sequences
-//! in .s files. And 32-bit x86 is special (see comments below).
-//!
-//! This module also has a `choose` submodule which chooses a scheme and is
-//! what most of the `rustix` syscalls use.
-//!
-//! # Safety
-//!
-//! This contains the inline `asm` statements performing the syscall
-//! instructions and FFI declarations declaring the out-of-line ("outline")
-//! syscall instructions.
-
-#![allow(unsafe_code)]
-#![cfg_attr(not(feature = "all-apis"), allow(unused_imports))]
-// We'll use as many arguments as syscalls need.
-#![allow(clippy::too_many_arguments)]
-
-// When inline asm is available, use it. Otherwise, use out-of-line asm. These
-// functions always use the machine's syscall instruction, even when it isn't
-// the fastest option available.
-#[cfg_attr(asm, path = "inline/mod.rs")]
-#[cfg_attr(not(asm), path = "outline/mod.rs")]
-pub(in crate::backend) mod asm;
-
-// On most architectures, the architecture syscall instruction is fast, so use
-// it directly.
-#[cfg(any(
- target_arch = "arm",
- target_arch = "aarch64",
- target_arch = "mips",
- target_arch = "mips64",
- target_arch = "powerpc64",
- target_arch = "riscv64",
- target_arch = "x86_64",
-))]
-pub(in crate::backend) use self::asm as choose;
-
-// On 32-bit x86, use vDSO wrappers for all syscalls. We could use the
-// architecture syscall instruction (`int 0x80`), but the vDSO kernel_vsyscall
-// mechanism is much faster.
-#[cfg(target_arch = "x86")]
-pub(in crate::backend) use super::vdso_wrappers::x86_via_vdso as choose;
-
-// This would be the code for always using `int 0x80` on 32-bit x86.
-//#[cfg(target_arch = "x86")]
-//pub(in crate::backend) use self::asm as choose;
-
-// Macros for invoking system calls.
-//
-// These factor out:
-// - Calling `nr` on the syscall number to convert it into `SyscallNumber`.
-// - Calling `.into()` on each of the arguments to convert them into `ArgReg`.
-// - Qualifying the `syscall*` and `__NR_*` identifiers.
-// - Counting the number of arguments.
-macro_rules! syscall {
- ($nr:ident) => {
- $crate::backend::arch::choose::syscall0($crate::backend::reg::nr(
- linux_raw_sys::general::$nr,
- ))
- };
-
- ($nr:ident, $a0:expr) => {
- $crate::backend::arch::choose::syscall1(
- $crate::backend::reg::nr(linux_raw_sys::general::$nr),
- $a0.into(),
- )
- };
-
- ($nr:ident, $a0:expr, $a1:expr) => {
- $crate::backend::arch::choose::syscall2(
- $crate::backend::reg::nr(linux_raw_sys::general::$nr),
- $a0.into(),
- $a1.into(),
- )
- };
-
- ($nr:ident, $a0:expr, $a1:expr, $a2:expr) => {
- $crate::backend::arch::choose::syscall3(
- $crate::backend::reg::nr(linux_raw_sys::general::$nr),
- $a0.into(),
- $a1.into(),
- $a2.into(),
- )
- };
-
- ($nr:ident, $a0:expr, $a1:expr, $a2:expr, $a3:expr) => {
- $crate::backend::arch::choose::syscall4(
- $crate::backend::reg::nr(linux_raw_sys::general::$nr),
- $a0.into(),
- $a1.into(),
- $a2.into(),
- $a3.into(),
- )
- };
-
- ($nr:ident, $a0:expr, $a1:expr, $a2:expr, $a3:expr, $a4:expr) => {
- $crate::backend::arch::choose::syscall5(
- $crate::backend::reg::nr(linux_raw_sys::general::$nr),
- $a0.into(),
- $a1.into(),
- $a2.into(),
- $a3.into(),
- $a4.into(),
- )
- };
-
- ($nr:ident, $a0:expr, $a1:expr, $a2:expr, $a3:expr, $a4:expr, $a5:expr) => {
- $crate::backend::arch::choose::syscall6(
- $crate::backend::reg::nr(linux_raw_sys::general::$nr),
- $a0.into(),
- $a1.into(),
- $a2.into(),
- $a3.into(),
- $a4.into(),
- $a5.into(),
- )
- };
-
- ($nr:ident, $a0:expr, $a1:expr, $a2:expr, $a3:expr, $a4:expr, $a5:expr, $a6:expr) => {
- $crate::backend::arch::choose::syscall7(
- $crate::backend::reg::nr(linux_raw_sys::general::$nr),
- $a0.into(),
- $a1.into(),
- $a2.into(),
- $a3.into(),
- $a4.into(),
- $a5.into(),
- $a6.into(),
- )
- };
-}
-
-macro_rules! syscall_readonly {
- ($nr:ident) => {
- $crate::backend::arch::choose::syscall0_readonly($crate::backend::reg::nr(
- linux_raw_sys::general::$nr,
- ))
- };
-
- ($nr:ident, $a0:expr) => {
- $crate::backend::arch::choose::syscall1_readonly(
- $crate::backend::reg::nr(linux_raw_sys::general::$nr),
- $a0.into(),
- )
- };
-
- ($nr:ident, $a0:expr, $a1:expr) => {
- $crate::backend::arch::choose::syscall2_readonly(
- $crate::backend::reg::nr(linux_raw_sys::general::$nr),
- $a0.into(),
- $a1.into(),
- )
- };
-
- ($nr:ident, $a0:expr, $a1:expr, $a2:expr) => {
- $crate::backend::arch::choose::syscall3_readonly(
- $crate::backend::reg::nr(linux_raw_sys::general::$nr),
- $a0.into(),
- $a1.into(),
- $a2.into(),
- )
- };
-
- ($nr:ident, $a0:expr, $a1:expr, $a2:expr, $a3:expr) => {
- $crate::backend::arch::choose::syscall4_readonly(
- $crate::backend::reg::nr(linux_raw_sys::general::$nr),
- $a0.into(),
- $a1.into(),
- $a2.into(),
- $a3.into(),
- )
- };
-
- ($nr:ident, $a0:expr, $a1:expr, $a2:expr, $a3:expr, $a4:expr) => {
- $crate::backend::arch::choose::syscall5_readonly(
- $crate::backend::reg::nr(linux_raw_sys::general::$nr),
- $a0.into(),
- $a1.into(),
- $a2.into(),
- $a3.into(),
- $a4.into(),
- )
- };
-
- ($nr:ident, $a0:expr, $a1:expr, $a2:expr, $a3:expr, $a4:expr, $a5:expr) => {
- $crate::backend::arch::choose::syscall6_readonly(
- $crate::backend::reg::nr(linux_raw_sys::general::$nr),
- $a0.into(),
- $a1.into(),
- $a2.into(),
- $a3.into(),
- $a4.into(),
- $a5.into(),
- )
- };
-
- ($nr:ident, $a0:expr, $a1:expr, $a2:expr, $a3:expr, $a4:expr, $a5:expr, $a6:expr) => {
- $crate::backend::arch::choose::syscall7_readonly(
- $crate::backend::reg::nr(linux_raw_sys::general::$nr),
- $a0.into(),
- $a1.into(),
- $a2.into(),
- $a3.into(),
- $a4.into(),
- $a5.into(),
- $a6.into(),
- )
- };
-}
-
-#[cfg(feature = "runtime")]
-macro_rules! syscall_noreturn {
- ($nr:ident, $a0:expr) => {
- $crate::backend::arch::choose::syscall1_noreturn(
- $crate::backend::reg::nr(linux_raw_sys::general::$nr),
- $a0.into(),
- )
- };
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/aarch64.s b/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/aarch64.s
deleted file mode 100644
index 1fad2fa6d..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/aarch64.s
+++ /dev/null
@@ -1,119 +0,0 @@
-// Assembly code for making aarch64 syscalls.
-//
-// aarch64 syscall argument register ordering is the same as the aarch64
-// userspace argument register ordering except that the syscall number
-// (nr) is passed in w8.
-//
-// outline.rs takes care of reordering the nr argument to the end for us,
-// so we only need to move nr into w8.
-//
-// arm64-ilp32 is not yet supported.
-
- .file "aarch64.s"
- .arch armv8-a
-
- .section .text.rustix_syscall0_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall0_nr_last
- .hidden rustix_syscall0_nr_last
- .type rustix_syscall0_nr_last, @function
-rustix_syscall0_nr_last:
- .cfi_startproc
- mov w8, w0
- svc #0
- ret
- .cfi_endproc
- .size rustix_syscall0_nr_last, .-rustix_syscall0_nr_last
-
- .section .text.rustix_syscall1_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall1_nr_last
- .hidden rustix_syscall1_nr_last
- .type rustix_syscall1_nr_last, @function
-rustix_syscall1_nr_last:
- .cfi_startproc
- mov w8, w1
- svc #0
- ret
- .cfi_endproc
- .size rustix_syscall1_nr_last, .-rustix_syscall1_nr_last
-
- .section .text.rustix_syscall1_noreturn_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall1_noreturn_nr_last
- .hidden rustix_syscall1_noreturn_nr_last
- .type rustix_syscall1_noreturn_nr_last, @function
-rustix_syscall1_noreturn_nr_last:
- .cfi_startproc
- mov w8, w1
- svc #0
- brk #0x1
- .cfi_endproc
- .size rustix_syscall1_noreturn_nr_last, .-rustix_syscall1_noreturn_nr_last
-
- .section .text.rustix_syscall2_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall2_nr_last
- .hidden rustix_syscall2_nr_last
- .type rustix_syscall2_nr_last, @function
-rustix_syscall2_nr_last:
- .cfi_startproc
- mov w8, w2
- svc #0
- ret
- .cfi_endproc
- .size rustix_syscall2_nr_last, .-rustix_syscall2_nr_last
-
- .section .text.rustix_syscall3_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall3_nr_last
- .hidden rustix_syscall3_nr_last
- .type rustix_syscall3_nr_last, @function
-rustix_syscall3_nr_last:
- .cfi_startproc
- mov w8, w3
- svc #0
- ret
- .cfi_endproc
- .size rustix_syscall3_nr_last, .-rustix_syscall3_nr_last
-
- .section .text.rustix_syscall4_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall4_nr_last
- .hidden rustix_syscall4_nr_last
- .type rustix_syscall4_nr_last, @function
-rustix_syscall4_nr_last:
- .cfi_startproc
- mov w8, w4
- svc #0
- ret
- .cfi_endproc
- .size rustix_syscall4_nr_last, .-rustix_syscall4_nr_last
-
- .section .text.rustix_syscall5_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall5_nr_last
- .hidden rustix_syscall5_nr_last
- .type rustix_syscall5_nr_last, @function
-rustix_syscall5_nr_last:
- .cfi_startproc
- mov w8, w5
- svc #0
- ret
- .cfi_endproc
- .size rustix_syscall5_nr_last, .-rustix_syscall5_nr_last
-
- .section .text.rustix_syscall6_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall6_nr_last
- .hidden rustix_syscall6_nr_last
- .type rustix_syscall6_nr_last, @function
-rustix_syscall6_nr_last:
- .cfi_startproc
- mov w8, w6
- svc #0
- ret
- .cfi_endproc
- .size rustix_syscall6_nr_last, .-rustix_syscall6_nr_last
-
- .section .note.GNU-stack,"",@progbits
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/arm.s b/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/arm.s
deleted file mode 100644
index 7001686f1..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/arm.s
+++ /dev/null
@@ -1,135 +0,0 @@
-// Assembly code for making arm syscalls.
-//
-// arm syscall argument register ordering is the similar to the arm
-// userspace argument register ordering except that the syscall number
-// (nr) is passed in r7.
-//
-// nr_last.rs takes care of reordering the nr argument to the end for us,
-// so we only need to move nr into r7 and take care of r4 and r5 if needed.
-
- .file "arm.s"
- .arch armv5t
-
- .section .text.rustix_syscall0_nr_last,"ax",%progbits
- .p2align 4
- .weak rustix_syscall0_nr_last
- .hidden rustix_syscall0_nr_last
- .type rustix_syscall0_nr_last, %function
-rustix_syscall0_nr_last:
- .fnstart
- .cantunwind
- push {r7, lr}
- mov r7, r0
- svc #0
- pop {r7, pc}
- .fnend
- .size rustix_syscall0_nr_last, .-rustix_syscall0_nr_last
-
- .section .text.rustix_syscall1_nr_last,"ax",%progbits
- .p2align 4
- .weak rustix_syscall1_nr_last
- .hidden rustix_syscall1_nr_last
- .type rustix_syscall1_nr_last, %function
-rustix_syscall1_nr_last:
- .fnstart
- .cantunwind
- push {r7, lr}
- mov r7, r1
- svc #0
- pop {r7, pc}
- .fnend
- .size rustix_syscall1_nr_last, .-rustix_syscall1_nr_last
-
- .section .text.rustix_syscall1_noreturn_nr_last,"ax",%progbits
- .p2align 4
- .weak rustix_syscall1_noreturn_nr_last
- .hidden rustix_syscall1_noreturn_nr_last
- .type rustix_syscall1_noreturn_nr_last, %function
-rustix_syscall1_noreturn_nr_last:
- .fnstart
- .cantunwind
- // Don't save r7 and lr; this is noreturn, so we'll never restore them.
- mov r7, r1
- svc #0
- udf #16 // Trap instruction
- .fnend
- .size rustix_syscall1_noreturn_nr_last, .-rustix_syscall1_noreturn_nr_last
-
- .section .text.rustix_syscall2_nr_last,"ax",%progbits
- .p2align 4
- .weak rustix_syscall2_nr_last
- .hidden rustix_syscall2_nr_last
- .type rustix_syscall2_nr_last, %function
-rustix_syscall2_nr_last:
- .fnstart
- .cantunwind
- push {r7, lr}
- mov r7, r2
- svc #0
- pop {r7, pc}
- .fnend
- .size rustix_syscall2_nr_last, .-rustix_syscall2_nr_last
-
- .section .text.rustix_syscall3_nr_last,"ax",%progbits
- .p2align 4
- .weak rustix_syscall3_nr_last
- .hidden rustix_syscall3_nr_last
- .type rustix_syscall3_nr_last, %function
-rustix_syscall3_nr_last:
- .fnstart
- .cantunwind
- push {r7, lr}
- mov r7, r3
- svc #0
- pop {r7, pc}
- .fnend
- .size rustix_syscall3_nr_last, .-rustix_syscall3_nr_last
-
- .section .text.rustix_syscall4_nr_last,"ax",%progbits
- .p2align 4
- .weak rustix_syscall4_nr_last
- .hidden rustix_syscall4_nr_last
- .type rustix_syscall4_nr_last, %function
-rustix_syscall4_nr_last:
- .fnstart
- .cantunwind
- push {r7, lr}
- ldr r7, [sp, #8]
- svc #0
- pop {r7, pc}
- .fnend
- .size rustix_syscall4_nr_last, .-rustix_syscall4_nr_last
-
- .section .text.rustix_syscall5_nr_last,"ax",%progbits
- .p2align 4
- .weak rustix_syscall5_nr_last
- .hidden rustix_syscall5_nr_last
- .type rustix_syscall5_nr_last, %function
-rustix_syscall5_nr_last:
- .fnstart
- .cantunwind
- push {r4, r7, r11, lr}
- ldr r7, [sp, #20]
- ldr r4, [sp, #16]
- svc #0
- pop {r4, r7, r11, pc}
- .fnend
- .size rustix_syscall5_nr_last, .-rustix_syscall5_nr_last
-
- .section .text.rustix_syscall6_nr_last,"ax",%progbits
- .p2align 4
- .weak rustix_syscall6_nr_last
- .hidden rustix_syscall6_nr_last
- .type rustix_syscall6_nr_last, %function
-rustix_syscall6_nr_last:
- .fnstart
- .cantunwind
- push {r4, r5, r7, lr}
- add r7, sp, #16
- ldm r7, {r4, r5, r7}
- svc #0
- pop {r4, r5, r7, pc}
- .fnend
- .size rustix_syscall6_nr_last, .-rustix_syscall6_nr_last
-
- .section .note.GNU-stack,"",%progbits
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/mips.s b/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/mips.s
deleted file mode 100644
index ab1bbfa2d..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/mips.s
+++ /dev/null
@@ -1,213 +0,0 @@
-# Assembly code for making mips64 syscalls.
-#
-# mips64 syscall argument register ordering is the same as the mips64
-# userspace argument register ordering except that the syscall number
-# (nr) is passed in v0.
-#
-# outline.rs takes care of reordering the nr argument to the end for us,
-# so we only need to move nr into v0.
-
- .file "mips.s"
- .section .mdebug.abi32
- .previous
- .abicalls
-
- .section .text.rustix_syscall0_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall0_nr_last
- .hidden rustix_syscall0_nr_last
- .type rustix_syscall0_nr_last, @function
- .set nomips16
- .set nomicromips
- .ent rustix_syscall0_nr_last
-rustix_syscall0_nr_last:
- .frame $sp,0,$31
- .mask 0x00000000,0
- .fmask 0x00000000,0
- .set noreorder
- .set nomacro
- move $2, $4
- syscall
- negu $8, $2
- jr $31
- movn $2, $8, $7
- .end rustix_syscall0_nr_last
- .size rustix_syscall0_nr_last, .-rustix_syscall0_nr_last
-
- .section .text.rustix_syscall1_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall1_nr_last
- .hidden rustix_syscall1_nr_last
- .type rustix_syscall1_nr_last, @function
- .set nomips16
- .set nomicromips
- .ent rustix_syscall1_nr_last
-rustix_syscall1_nr_last:
- .frame $sp,0,$31
- .mask 0x00000000,0
- .fmask 0x00000000,0
- .set noreorder
- .set nomacro
- move $2, $5
- syscall
- negu $8, $2
- jr $31
- movn $2, $8, $7
- .end rustix_syscall1_nr_last
- .size rustix_syscall1_nr_last, .-rustix_syscall1_nr_last
-
- .section .text.rustix_syscall1_noreturn_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall1_noreturn_nr_last
- .hidden rustix_syscall1_noreturn_nr_last
- .type rustix_syscall1_noreturn_nr_last, @function
- .set nomips16
- .set nomicromips
- .ent rustix_syscall1_noreturn_nr_last
-rustix_syscall1_noreturn_nr_last:
- .frame $sp,0,$31
- .mask 0x00000000,0
- .fmask 0x00000000,0
- .set noreorder
- .set nomacro
- move $2, $5
- syscall
- teq $zero, $zero
- .end rustix_syscall1_noreturn_nr_last
- .size rustix_syscall1_noreturn_nr_last, .-rustix_syscall1_noreturn_nr_last
-
- .section .text.rustix_syscall2_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall2_nr_last
- .hidden rustix_syscall2_nr_last
- .type rustix_syscall2_nr_last, @function
- .set nomips16
- .set nomicromips
- .ent rustix_syscall2_nr_last
-rustix_syscall2_nr_last:
- .frame $sp,0,$31
- .mask 0x00000000,0
- .fmask 0x00000000,0
- .set noreorder
- .set nomacro
- move $2, $6
- syscall
- negu $8, $2
- jr $31
- movn $2, $8, $7
- .end rustix_syscall2_nr_last
- .size rustix_syscall2_nr_last, .-rustix_syscall2_nr_last
-
- .section .text.rustix_syscall3_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall3_nr_last
- .hidden rustix_syscall3_nr_last
- .type rustix_syscall3_nr_last, @function
- .set nomips16
- .set nomicromips
- .ent rustix_syscall3_nr_last
-rustix_syscall3_nr_last:
- .frame $sp,0,$31
- .mask 0x00000000,0
- .fmask 0x00000000,0
- .set noreorder
- .set nomacro
- move $2, $7
- syscall
- negu $8, $2
- jr $31
- movn $2, $8, $7
- .end rustix_syscall3_nr_last
- .size rustix_syscall3_nr_last, .-rustix_syscall3_nr_last
-
- .section .text.rustix_syscall4_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall4_nr_last
- .hidden rustix_syscall4_nr_last
- .type rustix_syscall4_nr_last, @function
- .set nomips16
- .set nomicromips
- .ent rustix_syscall4_nr_last
-rustix_syscall4_nr_last:
- .frame $sp,0,$31
- .mask 0x00000000,0
- .fmask 0x00000000,0
- .set noreorder
- .set nomacro
- lw $2, 16($sp)
- syscall
- negu $8, $2
- jr $31
- movn $2, $8, $7
- .end rustix_syscall4_nr_last
- .size rustix_syscall4_nr_last, .-rustix_syscall4_nr_last
-
- .section .text.rustix_syscall5_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall5_nr_last
- .hidden rustix_syscall5_nr_last
- .type rustix_syscall5_nr_last, @function
- .set nomips16
- .set nomicromips
- .ent rustix_syscall5_nr_last
-rustix_syscall5_nr_last:
- .frame $sp,0,$31
- .mask 0x00000000,0
- .fmask 0x00000000,0
- .set noreorder
- .set nomacro
- lw $2, 20($sp)
- syscall
- negu $8, $2
- jr $31
- movn $2, $8, $7
- .end rustix_syscall5_nr_last
- .size rustix_syscall5_nr_last, .-rustix_syscall5_nr_last
-
- .section .text.rustix_syscall6_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall6_nr_last
- .hidden rustix_syscall6_nr_last
- .type rustix_syscall6_nr_last, @function
- .set nomips16
- .set nomicromips
- .ent rustix_syscall6_nr_last
-rustix_syscall6_nr_last:
- .frame $sp,0,$31
- .mask 0x00000000,0
- .fmask 0x00000000,0
- .set noreorder
- .set nomacro
- lw $2, 24($sp)
- syscall
- negu $8, $2
- jr $31
- movn $2, $8, $7
- .end rustix_syscall6_nr_last
- .size rustix_syscall6_nr_last, .-rustix_syscall6_nr_last
-
- .section .note.GNU-stack,"",@progbits
-
- .section .text.rustix_syscall7_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall7_nr_last
- .hidden rustix_syscall7_nr_last
- .type rustix_syscall7_nr_last, @function
- .set nomips16
- .set nomicromips
- .ent rustix_syscall7_nr_last
-rustix_syscall7_nr_last:
- .frame $sp,0,$31
- .mask 0x00000000,0
- .fmask 0x00000000,0
- .set noreorder
- .set nomacro
- lw $2, 28($sp)
- syscall
- negu $8, $2
- jr $31
- movn $2, $8, $7
- .end rustix_syscall7_nr_last
- .size rustix_syscall7_nr_last, .-rustix_syscall7_nr_last
-
- .section .note.GNU-stack,"",@progbits
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/mips64.s b/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/mips64.s
deleted file mode 100644
index 3c5e76e36..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/mips64.s
+++ /dev/null
@@ -1,189 +0,0 @@
-# Assembly code for making mips64 syscalls.
-#
-# mips64 syscall argument register ordering is the same as the mips64
-# userspace argument register ordering except that the syscall number
-# (nr) is passed in v0.
-#
-# outline.rs takes care of reordering the nr argument to the end for us,
-# so we only need to move nr into v0.
-
- .file "mips.s"
- .section .mdebug.abi64
- .previous
- .abicalls
-
- .section .text.rustix_syscall0_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall0_nr_last
- .hidden rustix_syscall0_nr_last
- .type rustix_syscall0_nr_last, @function
- .set nomips16
- .set nomicromips
- .ent rustix_syscall0_nr_last
-rustix_syscall0_nr_last:
- .frame $sp,0,$31
- .mask 0x00000000,0
- .fmask 0x00000000,0
- .set noreorder
- .set nomacro
- move $2, $4
- syscall
- dnegu $12, $2
- jr $31
- movn $2, $12, $7
- .end rustix_syscall0_nr_last
- .size rustix_syscall0_nr_last, .-rustix_syscall0_nr_last
-
- .section .text.rustix_syscall1_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall1_nr_last
- .hidden rustix_syscall1_nr_last
- .type rustix_syscall1_nr_last, @function
- .set nomips16
- .set nomicromips
- .ent rustix_syscall1_nr_last
-rustix_syscall1_nr_last:
- .frame $sp,0,$31
- .mask 0x00000000,0
- .fmask 0x00000000,0
- .set noreorder
- .set nomacro
- move $2, $5
- syscall
- dnegu $12, $2
- jr $31
- movn $2, $12, $7
- .end rustix_syscall1_nr_last
- .size rustix_syscall1_nr_last, .-rustix_syscall1_nr_last
-
- .section .text.rustix_syscall1_noreturn_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall1_noreturn_nr_last
- .hidden rustix_syscall1_noreturn_nr_last
- .type rustix_syscall1_noreturn_nr_last, @function
- .set nomips16
- .set nomicromips
- .ent rustix_syscall1_noreturn_nr_last
-rustix_syscall1_noreturn_nr_last:
- .frame $sp,0,$31
- .mask 0x00000000,0
- .fmask 0x00000000,0
- .set noreorder
- .set nomacro
- move $2, $5
- syscall
- teq $0, $0
- .end rustix_syscall1_noreturn_nr_last
- .size rustix_syscall1_noreturn_nr_last, .-rustix_syscall1_noreturn_nr_last
-
- .section .text.rustix_syscall2_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall2_nr_last
- .hidden rustix_syscall2_nr_last
- .type rustix_syscall2_nr_last, @function
- .set nomips16
- .set nomicromips
- .ent rustix_syscall2_nr_last
-rustix_syscall2_nr_last:
- .frame $sp,0,$31
- .mask 0x00000000,0
- .fmask 0x00000000,0
- .set noreorder
- .set nomacro
- move $2, $6
- syscall
- dnegu $12, $2
- jr $31
- movn $2, $12, $7
- .end rustix_syscall2_nr_last
- .size rustix_syscall2_nr_last, .-rustix_syscall2_nr_last
-
- .section .text.rustix_syscall3_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall3_nr_last
- .hidden rustix_syscall3_nr_last
- .type rustix_syscall3_nr_last, @function
- .set nomips16
- .set nomicromips
- .ent rustix_syscall3_nr_last
-rustix_syscall3_nr_last:
- .frame $sp,0,$31
- .mask 0x00000000,0
- .fmask 0x00000000,0
- .set noreorder
- .set nomacro
- move $2, $7
- syscall
- dnegu $12, $2
- jr $31
- movn $2, $12, $7
- .end rustix_syscall3_nr_last
- .size rustix_syscall3_nr_last, .-rustix_syscall3_nr_last
-
- .section .text.rustix_syscall4_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall4_nr_last
- .hidden rustix_syscall4_nr_last
- .type rustix_syscall4_nr_last, @function
- .set nomips16
- .set nomicromips
- .ent rustix_syscall4_nr_last
-rustix_syscall4_nr_last:
- .frame $sp,0,$31
- .mask 0x00000000,0
- .fmask 0x00000000,0
- .set noreorder
- .set nomacro
- move $2, $8
- syscall
- dnegu $12, $2
- jr $31
- movn $2, $12, $7
- .end rustix_syscall4_nr_last
- .size rustix_syscall4_nr_last, .-rustix_syscall4_nr_last
-
- .section .text.rustix_syscall5_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall5_nr_last
- .hidden rustix_syscall5_nr_last
- .type rustix_syscall5_nr_last, @function
- .set nomips16
- .set nomicromips
- .ent rustix_syscall5_nr_last
-rustix_syscall5_nr_last:
- .frame $sp,0,$31
- .mask 0x00000000,0
- .fmask 0x00000000,0
- .set noreorder
- .set nomacro
- move $2, $9
- syscall
- dnegu $12, $2
- jr $31
- movn $2, $12, $7
- .end rustix_syscall5_nr_last
- .size rustix_syscall5_nr_last, .-rustix_syscall5_nr_last
-
- .section .text.rustix_syscall6_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall6_nr_last
- .hidden rustix_syscall6_nr_last
- .type rustix_syscall6_nr_last, @function
- .set nomips16
- .set nomicromips
- .ent rustix_syscall6_nr_last
-rustix_syscall6_nr_last:
- .frame $sp,0,$31
- .mask 0x00000000,0
- .fmask 0x00000000,0
- .set noreorder
- .set nomacro
- move $2, $10
- syscall
- dnegu $12, $2
- jr $31
- movn $2, $12, $7
- .end rustix_syscall6_nr_last
- .size rustix_syscall6_nr_last, .-rustix_syscall6_nr_last
-
- .section .note.GNU-stack,"",@progbits
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/mod.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/mod.rs
deleted file mode 100644
index a6a5f270d..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/mod.rs
+++ /dev/null
@@ -1,33 +0,0 @@
-//! Declare functions defined in out-of-line ("outline") asm files.
-//!
-//! Kernel calling conventions differ from userspace calling conventions,
-//! so we also define inline function wrappers which reorder the arguments
-//! so that they match with the kernel convention as closely as possible,
-//! to minimize the amount of out-of-line code we need.
-
-#[cfg(target_arch = "x86")]
-mod x86;
-// For these architectures, pass the `nr` argument last.
-#[cfg(any(
- target_arch = "arm",
- target_arch = "aarch64",
- target_arch = "mips",
- target_arch = "mips64",
- target_arch = "powerpc64",
- target_arch = "riscv64",
- target_arch = "x86_64",
-))]
-mod nr_last;
-
-#[cfg(any(
- target_arch = "arm",
- target_arch = "aarch64",
- target_arch = "mips",
- target_arch = "mips64",
- target_arch = "powerpc64",
- target_arch = "riscv64",
- target_arch = "x86_64",
-))]
-pub(in crate::backend) use nr_last::*;
-#[cfg(target_arch = "x86")]
-pub(in crate::backend) use x86::*;
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/nr_last.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/nr_last.rs
deleted file mode 100644
index 4af64d6c4..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/nr_last.rs
+++ /dev/null
@@ -1,166 +0,0 @@
-//! Syscall wrappers for platforms which pass the syscall number specially.
-//!
-//! Rustix aims to minimize the amount of assembly code it needs. To that end,
-//! this code reorders syscall arguments as close as feasible to the actual
-//! syscall convention before calling the assembly functions.
-//!
-//! Many architectures use a convention where the syscall number is passed in a
-//! special register, with the regular syscall arguments passed in either the
-//! same or similar registers as the platform C convention. This code
-//! approximates that order by passing the regular syscall arguments first, and
-//! the syscall number last. That way, the outline assembly code typically just
-//! needs to move the syscall number to its special register, and leave the
-//! other arguments mostly as they are.
-
-#[cfg(target_arch = "mips")]
-use crate::backend::reg::A6;
-use crate::backend::reg::{ArgReg, RetReg, SyscallNumber, A0, A1, A2, A3, A4, A5, R0};
-
-// First we declare the actual assembly routines with `*_nr_last` names and
-// reordered arguments. If the signatures or calling conventions are ever
-// changed, the symbol names should also be updated accordingly, to avoid
-// collisions with other versions of this crate.
-//
-// We don't define `_readonly` versions of these because we have no way to tell
-// Rust that calls to our outline assembly are readonly.
-extern "C" {
- fn rustix_syscall0_nr_last(nr: SyscallNumber<'_>) -> RetReg<R0>;
- fn rustix_syscall1_nr_last(a0: ArgReg<'_, A0>, nr: SyscallNumber<'_>) -> RetReg<R0>;
- fn rustix_syscall1_noreturn_nr_last(a0: ArgReg<'_, A0>, nr: SyscallNumber<'_>) -> !;
- fn rustix_syscall2_nr_last(
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- nr: SyscallNumber<'_>,
- ) -> RetReg<R0>;
- fn rustix_syscall3_nr_last(
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- nr: SyscallNumber<'_>,
- ) -> RetReg<R0>;
- fn rustix_syscall4_nr_last(
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- nr: SyscallNumber<'_>,
- ) -> RetReg<R0>;
- fn rustix_syscall5_nr_last(
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- nr: SyscallNumber<'_>,
- ) -> RetReg<R0>;
- fn rustix_syscall6_nr_last(
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
- nr: SyscallNumber<'_>,
- ) -> RetReg<R0>;
- #[cfg(target_arch = "mips")]
- fn rustix_syscall7_nr_last(
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
- a6: ArgReg<'_, A6>,
- nr: SyscallNumber<'_>,
- ) -> RetReg<R0>;
-}
-
-// Then we define inline wrapper functions that do the reordering.
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall0(nr: SyscallNumber<'_>) -> RetReg<R0> {
- rustix_syscall0_nr_last(nr)
-}
-#[inline]
-pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg<R0> {
- rustix_syscall1_nr_last(a0, nr)
-}
-#[inline]
-pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! {
- rustix_syscall1_noreturn_nr_last(a0, nr)
-}
-#[inline]
-pub(in crate::backend) unsafe fn syscall2(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
-) -> RetReg<R0> {
- rustix_syscall2_nr_last(a0, a1, nr)
-}
-#[inline]
-pub(in crate::backend) unsafe fn syscall3(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
-) -> RetReg<R0> {
- rustix_syscall3_nr_last(a0, a1, a2, nr)
-}
-#[inline]
-pub(in crate::backend) unsafe fn syscall4(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
-) -> RetReg<R0> {
- rustix_syscall4_nr_last(a0, a1, a2, a3, nr)
-}
-#[inline]
-pub(in crate::backend) unsafe fn syscall5(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
-) -> RetReg<R0> {
- rustix_syscall5_nr_last(a0, a1, a2, a3, a4, nr)
-}
-#[inline]
-pub(in crate::backend) unsafe fn syscall6(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
-) -> RetReg<R0> {
- rustix_syscall6_nr_last(a0, a1, a2, a3, a4, a5, nr)
-}
-#[cfg(target_arch = "mips")]
-#[inline]
-pub(in crate::backend) unsafe fn syscall7(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
- a6: ArgReg<'_, A6>,
-) -> RetReg<R0> {
- rustix_syscall7_nr_last(a0, a1, a2, a3, a4, a5, a6, nr)
-}
-
-// Then we define the `_readonly` versions of the wrappers. We don't have
-// separate `_readonly` implementations, so these can just be aliases to
-// their non-`_readonly` counterparts.
-#[cfg(target_arch = "mips")]
-pub(in crate::backend) use syscall7 as syscall7_readonly;
-pub(in crate::backend) use {
- syscall0 as syscall0_readonly, syscall1 as syscall1_readonly, syscall2 as syscall2_readonly,
- syscall3 as syscall3_readonly, syscall4 as syscall4_readonly, syscall5 as syscall5_readonly,
- syscall6 as syscall6_readonly,
-};
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/powerpc64.s b/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/powerpc64.s
deleted file mode 100644
index 29d4c0a95..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/powerpc64.s
+++ /dev/null
@@ -1,132 +0,0 @@
-# Assembly code for making powerpc64le syscalls.
-#
-# powerpc64le syscall argument register ordering is the same as the
-# powerpc64le userspace argument register ordering except that the syscall
-# number (nr) is passed in r0.
-#
-# outline.rs takes care of reordering the nr argument to the end for us,
-# so we only need to move nr into r0.
-
- .file "powerpc64le.s"
- .machine power8
- .abiversion 2
-
- .section .text.rustix_syscall0_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall0_nr_last
- .hidden rustix_syscall0_nr_last
- .type rustix_syscall0_nr_last, @function
-rustix_syscall0_nr_last:
- .cfi_startproc
- mr 0, 3
- sc
- bnslr
- neg 3, 3
- blr
- .cfi_endproc
- .size rustix_syscall0_nr_last, .-rustix_syscall0_nr_last
-
- .section .text.rustix_syscall1_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall1_nr_last
- .hidden rustix_syscall1_nr_last
- .type rustix_syscall1_nr_last, @function
-rustix_syscall1_nr_last:
- .cfi_startproc
- mr 0, 4
- sc
- bnslr
- neg 3, 3
- blr
- .cfi_endproc
- .size rustix_syscall1_nr_last, .-rustix_syscall1_nr_last
-
- .section .text.rustix_syscall1_noreturn_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall1_noreturn_nr_last
- .hidden rustix_syscall1_noreturn_nr_last
- .type rustix_syscall1_noreturn_nr_last, @function
-rustix_syscall1_noreturn_nr_last:
- .cfi_startproc
- mr 0, 4
- sc
- trap
- .cfi_endproc
- .size rustix_syscall1_noreturn_nr_last, .-rustix_syscall1_noreturn_nr_last
-
- .section .text.rustix_syscall2_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall2_nr_last
- .hidden rustix_syscall2_nr_last
- .type rustix_syscall2_nr_last, @function
-rustix_syscall2_nr_last:
- .cfi_startproc
- mr 0, 5
- sc
- bnslr
- neg 3, 3
- blr
- .cfi_endproc
- .size rustix_syscall2_nr_last, .-rustix_syscall2_nr_last
-
- .section .text.rustix_syscall3_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall3_nr_last
- .hidden rustix_syscall3_nr_last
- .type rustix_syscall3_nr_last, @function
-rustix_syscall3_nr_last:
- .cfi_startproc
- mr 0, 6
- sc
- bnslr
- neg 3, 3
- blr
- .cfi_endproc
- .size rustix_syscall3_nr_last, .-rustix_syscall3_nr_last
-
- .section .text.rustix_syscall4_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall4_nr_last
- .hidden rustix_syscall4_nr_last
- .type rustix_syscall4_nr_last, @function
-rustix_syscall4_nr_last:
- .cfi_startproc
- mr 0, 7
- sc
- bnslr
- neg 3, 3
- blr
- .cfi_endproc
- .size rustix_syscall4_nr_last, .-rustix_syscall4_nr_last
-
- .section .text.rustix_syscall5_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall5_nr_last
- .hidden rustix_syscall5_nr_last
- .type rustix_syscall5_nr_last, @function
-rustix_syscall5_nr_last:
- .cfi_startproc
- mr 0, 8
- sc
- bnslr
- neg 3, 3
- blr
- .cfi_endproc
- .size rustix_syscall5_nr_last, .-rustix_syscall5_nr_last
-
- .section .text.rustix_syscall6_nr_last,"ax",@progbits
- .p2align 2
- .weak rustix_syscall6_nr_last
- .hidden rustix_syscall6_nr_last
- .type rustix_syscall6_nr_last, @function
-rustix_syscall6_nr_last:
- .cfi_startproc
- mr 0, 9
- sc
- bnslr
- neg 3, 3
- blr
- .cfi_endproc
- .size rustix_syscall6_nr_last, .-rustix_syscall6_nr_last
-
- .section .note.GNU-stack,"",@progbits
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/riscv64.s b/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/riscv64.s
deleted file mode 100644
index 28d692f7c..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/riscv64.s
+++ /dev/null
@@ -1,116 +0,0 @@
-# Assembly code for making riscv64 syscalls.
-#
-# riscv64 syscall argument register ordering is the same as the riscv64
-# userspace argument register ordering except that the syscall number
-# (nr) is passed in a7.
-#
-# nr_last.rs takes care of reordering the nr argument to the end for us,
-# so we only need to move nr into a7.
-
- .file "riscv64.s"
-
- .section .text.rustix_syscall0_nr_last,"ax",@progbits
- .p2align 4
- .weak rustix_syscall0_nr_last
- .hidden rustix_syscall0_nr_last
- .type rustix_syscall0_nr_last, @function
-rustix_syscall0_nr_last:
- .cfi_startproc
- mv a7, a0
- ecall
- ret
- .cfi_endproc
- .size rustix_syscall0_nr_last, .-rustix_syscall0_nr_last
-
- .section .text.rustix_syscall1_nr_last,"ax",@progbits
- .p2align 4
- .weak rustix_syscall1_nr_last
- .hidden rustix_syscall1_nr_last
- .type rustix_syscall1_nr_last, @function
-rustix_syscall1_nr_last:
- .cfi_startproc
- mv a7, a1
- ecall
- ret
- .cfi_endproc
- .size rustix_syscall1_nr_last, .-rustix_syscall1_nr_last
-
- .section .text.rustix_syscall1_noreturn_nr_last,"ax",@progbits
- .p2align 4
- .weak rustix_syscall1_noreturn_nr_last
- .hidden rustix_syscall1_noreturn_nr_last
- .type rustix_syscall1_noreturn_nr_last, @function
-rustix_syscall1_noreturn_nr_last:
- .cfi_startproc
- mv a7, a1
- ecall
- unimp
- .cfi_endproc
- .size rustix_syscall1_noreturn_nr_last, .-rustix_syscall1_noreturn_nr_last
-
- .section .text.rustix_syscall2_nr_last,"ax",@progbits
- .p2align 4
- .weak rustix_syscall2_nr_last
- .hidden rustix_syscall2_nr_last
- .type rustix_syscall2_nr_last, @function
-rustix_syscall2_nr_last:
- .cfi_startproc
- mv a7, a2
- ecall
- ret
- .cfi_endproc
- .size rustix_syscall2_nr_last, .-rustix_syscall2_nr_last
-
- .section .text.rustix_syscall3_nr_last,"ax",@progbits
- .p2align 4
- .weak rustix_syscall3_nr_last
- .hidden rustix_syscall3_nr_last
- .type rustix_syscall3_nr_last, @function
-rustix_syscall3_nr_last:
- .cfi_startproc
- mv a7, a3
- ecall
- ret
- .cfi_endproc
- .size rustix_syscall3_nr_last, .-rustix_syscall3_nr_last
-
- .section .text.rustix_syscall4_nr_last,"ax",@progbits
- .p2align 4
- .weak rustix_syscall4_nr_last
- .hidden rustix_syscall4_nr_last
- .type rustix_syscall4_nr_last, @function
-rustix_syscall4_nr_last:
- .cfi_startproc
- mv a7, a4
- ecall
- ret
- .cfi_endproc
- .size rustix_syscall4_nr_last, .-rustix_syscall4_nr_last
-
- .section .text.rustix_syscall5_nr_last,"ax",@progbits
- .p2align 4
- .weak rustix_syscall5_nr_last
- .hidden rustix_syscall5_nr_last
- .type rustix_syscall5_nr_last, @function
-rustix_syscall5_nr_last:
- .cfi_startproc
- mv a7, a5
- ecall
- ret
- .cfi_endproc
- .size rustix_syscall5_nr_last, .-rustix_syscall5_nr_last
-
- .section .text.rustix_syscall6_nr_last,"ax",@progbits
- .p2align 4
- .weak rustix_syscall6_nr_last
- .hidden rustix_syscall6_nr_last
- .type rustix_syscall6_nr_last, @function
-rustix_syscall6_nr_last:
- .cfi_startproc
- mv a7, a6
- ecall
- ret
- .cfi_endproc
- .size rustix_syscall6_nr_last, .-rustix_syscall6_nr_last
-
- .section .note.GNU-stack,"",@progbits
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/x86.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/x86.rs
deleted file mode 100644
index e74b8d2aa..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/x86.rs
+++ /dev/null
@@ -1,285 +0,0 @@
-//! Syscall wrappers for 32-bit x86.
-//!
-//! This module is similar to the `nr_last` module, except specialized for
-//! 32-bit x86.
-//!
-//! The syscall convention passes all arguments in registers. The closest we
-//! can easily get to that from Rust is to use the fastcall convention which
-//! passes the first two arguments in `ecx` and `edx`, which are the second
-//! and third Linux syscall arguments. To line them up, this function passes
-//! the second and third syscall argument as the first and second argument to
-//! the outline assembly, followed by the first syscall argument, and then the
-//! rest of the syscall arguments. The assembly code still has to do some work,
-//! but at least we can get up to two arguments into the right place for it.
-
-#![allow(dead_code, unused_imports)]
-
-use crate::backend::reg::{ArgReg, RetReg, SyscallNumber, A0, A1, A2, A3, A4, A5, R0};
-use crate::backend::vdso_wrappers::SyscallType;
-
-// First we declare the actual assembly routines with `*_nr_last_fastcall`
-// names and reordered arguments. If the signatures or calling conventions are
-// ever changed, the symbol names should also be updated accordingly, to avoid
-// collisions with other versions of this crate.
-//
-// We don't define `_readonly` versions of these because we have no way to tell
-// Rust that calls to our outline assembly are readonly.
-extern "fastcall" {
- fn rustix_syscall0_nr_last_fastcall(nr: SyscallNumber<'_>) -> RetReg<R0>;
- fn rustix_syscall1_nr_last_fastcall(a0: ArgReg<'_, A0>, nr: SyscallNumber<'_>) -> RetReg<R0>;
- fn rustix_syscall1_noreturn_nr_last_fastcall(a0: ArgReg<'_, A0>, nr: SyscallNumber<'_>) -> !;
- fn rustix_syscall2_nr_last_fastcall(
- a1: ArgReg<'_, A1>,
- a0: ArgReg<'_, A0>,
- nr: SyscallNumber<'_>,
- ) -> RetReg<R0>;
- fn rustix_syscall3_nr_last_fastcall(
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a0: ArgReg<'_, A0>,
- nr: SyscallNumber<'_>,
- ) -> RetReg<R0>;
- fn rustix_syscall4_nr_last_fastcall(
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a0: ArgReg<'_, A0>,
- a3: ArgReg<'_, A3>,
- nr: SyscallNumber<'_>,
- ) -> RetReg<R0>;
- fn rustix_syscall5_nr_last_fastcall(
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a0: ArgReg<'_, A0>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- nr: SyscallNumber<'_>,
- ) -> RetReg<R0>;
- fn rustix_syscall6_nr_last_fastcall(
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a0: ArgReg<'_, A0>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
- nr: SyscallNumber<'_>,
- ) -> RetReg<R0>;
-}
-
-// Then we define inline wrapper functions that do the reordering.
-
-#[inline]
-pub(in crate::backend) unsafe fn syscall0(nr: SyscallNumber<'_>) -> RetReg<R0> {
- rustix_syscall0_nr_last_fastcall(nr)
-}
-#[inline]
-pub(in crate::backend) unsafe fn syscall1(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> RetReg<R0> {
- rustix_syscall1_nr_last_fastcall(a0, nr)
-}
-#[inline]
-pub(in crate::backend) unsafe fn syscall1_noreturn(nr: SyscallNumber<'_>, a0: ArgReg<'_, A0>) -> ! {
- rustix_syscall1_noreturn_nr_last_fastcall(a0, nr)
-}
-#[inline]
-pub(in crate::backend) unsafe fn syscall2(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
-) -> RetReg<R0> {
- rustix_syscall2_nr_last_fastcall(a1, a0, nr)
-}
-#[inline]
-pub(in crate::backend) unsafe fn syscall3(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
-) -> RetReg<R0> {
- rustix_syscall3_nr_last_fastcall(a1, a2, a0, nr)
-}
-#[inline]
-pub(in crate::backend) unsafe fn syscall4(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
-) -> RetReg<R0> {
- rustix_syscall4_nr_last_fastcall(a1, a2, a0, a3, nr)
-}
-#[inline]
-pub(in crate::backend) unsafe fn syscall5(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
-) -> RetReg<R0> {
- rustix_syscall5_nr_last_fastcall(a1, a2, a0, a3, a4, nr)
-}
-#[inline]
-pub(in crate::backend) unsafe fn syscall6(
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
-) -> RetReg<R0> {
- rustix_syscall6_nr_last_fastcall(a1, a2, a0, a3, a4, a5, nr)
-}
-
-// Then we define the `_readonly` versions of the wrappers. We don't have
-// separate `_readonly` implementations, so these can just be aliases to
-// their non-`_readonly` counterparts.
-pub(in crate::backend) use {
- syscall0 as syscall0_readonly, syscall1 as syscall1_readonly, syscall2 as syscall2_readonly,
- syscall3 as syscall3_readonly, syscall4 as syscall4_readonly, syscall5 as syscall5_readonly,
- syscall6 as syscall6_readonly,
-};
-
-// x86 prefers to route all syscalls through the vDSO, though this isn't
-// always possible, so it also has a special form for doing the dispatch.
-//
-// First we declare the actual assembly routines with `*_nr_last_fastcall`
-// names and reordered arguments. If the signatures or calling conventions are
-// ever changed, the symbol names should also be updated accordingly, to avoid
-// collisions with other versions of this crate.
-extern "fastcall" {
- fn rustix_indirect_syscall0_nr_last_fastcall(
- nr: SyscallNumber<'_>,
- callee: SyscallType,
- ) -> RetReg<R0>;
- fn rustix_indirect_syscall1_nr_last_fastcall(
- a0: ArgReg<'_, A0>,
- nr: SyscallNumber<'_>,
- callee: SyscallType,
- ) -> RetReg<R0>;
- fn rustix_indirect_syscall1_noreturn_nr_last_fastcall(
- a0: ArgReg<'_, A0>,
- nr: SyscallNumber<'_>,
- callee: SyscallType,
- ) -> !;
- fn rustix_indirect_syscall2_nr_last_fastcall(
- a1: ArgReg<'_, A1>,
- a0: ArgReg<'_, A0>,
- nr: SyscallNumber<'_>,
- callee: SyscallType,
- ) -> RetReg<R0>;
- fn rustix_indirect_syscall3_nr_last_fastcall(
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a0: ArgReg<'_, A0>,
- nr: SyscallNumber<'_>,
- callee: SyscallType,
- ) -> RetReg<R0>;
- fn rustix_indirect_syscall4_nr_last_fastcall(
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a0: ArgReg<'_, A0>,
- a3: ArgReg<'_, A3>,
- nr: SyscallNumber<'_>,
- callee: SyscallType,
- ) -> RetReg<R0>;
- fn rustix_indirect_syscall5_nr_last_fastcall(
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a0: ArgReg<'_, A0>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- nr: SyscallNumber<'_>,
- callee: SyscallType,
- ) -> RetReg<R0>;
- fn rustix_indirect_syscall6_nr_last_fastcall(
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a0: ArgReg<'_, A0>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
- nr: SyscallNumber<'_>,
- callee: SyscallType,
- ) -> RetReg<R0>;
-}
-
-// Then we define inline wrapper functions that do the reordering.
-
-#[inline]
-pub(in crate::backend) unsafe fn indirect_syscall0(
- callee: SyscallType,
- nr: SyscallNumber<'_>,
-) -> RetReg<R0> {
- rustix_indirect_syscall0_nr_last_fastcall(nr, callee)
-}
-#[inline]
-pub(in crate::backend) unsafe fn indirect_syscall1(
- callee: SyscallType,
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
-) -> RetReg<R0> {
- rustix_indirect_syscall1_nr_last_fastcall(a0, nr, callee)
-}
-#[inline]
-pub(in crate::backend) unsafe fn indirect_syscall1_noreturn(
- callee: SyscallType,
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
-) -> ! {
- rustix_indirect_syscall1_noreturn_nr_last_fastcall(a0, nr, callee)
-}
-#[inline]
-pub(in crate::backend) unsafe fn indirect_syscall2(
- callee: SyscallType,
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
-) -> RetReg<R0> {
- rustix_indirect_syscall2_nr_last_fastcall(a1, a0, nr, callee)
-}
-#[inline]
-pub(in crate::backend) unsafe fn indirect_syscall3(
- callee: SyscallType,
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
-) -> RetReg<R0> {
- rustix_indirect_syscall3_nr_last_fastcall(a1, a2, a0, nr, callee)
-}
-#[inline]
-pub(in crate::backend) unsafe fn indirect_syscall4(
- callee: SyscallType,
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
-) -> RetReg<R0> {
- rustix_indirect_syscall4_nr_last_fastcall(a1, a2, a0, a3, nr, callee)
-}
-#[inline]
-pub(in crate::backend) unsafe fn indirect_syscall5(
- callee: SyscallType,
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
-) -> RetReg<R0> {
- rustix_indirect_syscall5_nr_last_fastcall(a1, a2, a0, a3, a4, nr, callee)
-}
-#[inline]
-pub(in crate::backend) unsafe fn indirect_syscall6(
- callee: SyscallType,
- nr: SyscallNumber<'_>,
- a0: ArgReg<'_, A0>,
- a1: ArgReg<'_, A1>,
- a2: ArgReg<'_, A2>,
- a3: ArgReg<'_, A3>,
- a4: ArgReg<'_, A4>,
- a5: ArgReg<'_, A5>,
-) -> RetReg<R0> {
- rustix_indirect_syscall6_nr_last_fastcall(a1, a2, a0, a3, a4, a5, nr, callee)
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/x86.s b/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/x86.s
deleted file mode 100644
index bda234e1a..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/x86.s
+++ /dev/null
@@ -1,381 +0,0 @@
-// Assembly code for making x86 syscalls.
-//
-// On x86 we use the "fastcall" convention which passes the first two
-// arguments in ecx and edx. Outline.rs reorders the arguments to put
-// a1 and a2 in those registers so they we don't have to move them to
-// set up the kernel convention.
-//
-// "fastcall" expects callee to pop argument stack space, so we use
-// `ret imm` instructions to clean up the stack. We don't need callee
-// cleanup per se, it just comes along with using "fastcall".
-
- .file "x86.s"
- .intel_syntax noprefix
-
- .section .text.rustix_indirect_syscall0_nr_last_fastcall,"ax",@progbits
- .p2align 4
- .weak rustix_indirect_syscall0_nr_last_fastcall
- .hidden rustix_indirect_syscall0_nr_last_fastcall
- .type rustix_indirect_syscall0_nr_last_fastcall, @function
-rustix_indirect_syscall0_nr_last_fastcall:
- .cfi_startproc
- mov eax,ecx
- call edx
- ret
- .cfi_endproc
- .size rustix_indirect_syscall0_nr_last_fastcall, .-rustix_indirect_syscall0_nr_last_fastcall
-
- .section .text.rustix_indirect_syscall1_nr_last_fastcall,"ax",@progbits
- .p2align 4
- .weak rustix_indirect_syscall1_nr_last_fastcall
- .hidden rustix_indirect_syscall1_nr_last_fastcall
- .type rustix_indirect_syscall1_nr_last_fastcall, @function
-rustix_indirect_syscall1_nr_last_fastcall:
- .cfi_startproc
- push ebx
- .cfi_def_cfa_offset 8
- .cfi_offset ebx, -8
- mov ebx,ecx
- mov eax,edx
- call DWORD PTR [esp+0x8]
- pop ebx
- .cfi_def_cfa_offset 4
- ret 0x4
- .cfi_endproc
- .size rustix_indirect_syscall1_nr_last_fastcall, .-rustix_indirect_syscall1_nr_last_fastcall
-
- .section .text.rustix_indirect_syscall1_noreturn_nr_last_fastcall,"ax",@progbits
- .p2align 4
- .weak rustix_indirect_syscall1_noreturn_nr_last_fastcall
- .hidden rustix_indirect_syscall1_noreturn_nr_last_fastcall
- .type rustix_indirect_syscall1_noreturn_nr_last_fastcall, @function
-rustix_indirect_syscall1_noreturn_nr_last_fastcall:
- .cfi_startproc
- mov ebx,ecx
- mov eax,edx
- call DWORD PTR [esp+0x4]
- ud2
- .cfi_endproc
- .size rustix_indirect_syscall1_noreturn_nr_last_fastcall, .-rustix_indirect_syscall1_noreturn_nr_last_fastcall
-
- .section .text.rustix_indirect_syscall2_nr_last_fastcall,"ax",@progbits
- .p2align 4
- .weak rustix_indirect_syscall2_nr_last_fastcall
- .hidden rustix_indirect_syscall2_nr_last_fastcall
- .type rustix_indirect_syscall2_nr_last_fastcall, @function
-rustix_indirect_syscall2_nr_last_fastcall:
- .cfi_startproc
- push ebx
- .cfi_def_cfa_offset 8
- .cfi_offset ebx, -8
- mov ebx,edx
- mov eax,DWORD PTR [esp+0x8]
- call DWORD PTR [esp+0xc]
- pop ebx
- .cfi_def_cfa_offset 4
- ret 0x8
- .cfi_endproc
- .size rustix_indirect_syscall2_nr_last_fastcall, .-rustix_indirect_syscall2_nr_last_fastcall
-
- .section .text.rustix_indirect_syscall3_nr_last_fastcall,"ax",@progbits
- .p2align 4
- .weak rustix_indirect_syscall3_nr_last_fastcall
- .hidden rustix_indirect_syscall3_nr_last_fastcall
- .type rustix_indirect_syscall3_nr_last_fastcall, @function
-rustix_indirect_syscall3_nr_last_fastcall:
- .cfi_startproc
- push ebx
- .cfi_def_cfa_offset 8
- .cfi_offset ebx, -8
- mov ebx,DWORD PTR [esp+0x8]
- mov eax,DWORD PTR [esp+0xc]
- call DWORD PTR [esp+0x10]
- pop ebx
- .cfi_def_cfa_offset 4
- ret 0xc
- .cfi_endproc
- .size rustix_indirect_syscall3_nr_last_fastcall, .-rustix_indirect_syscall3_nr_last_fastcall
-
- .section .text.rustix_indirect_syscall4_nr_last_fastcall,"ax",@progbits
- .p2align 4
- .weak rustix_indirect_syscall4_nr_last_fastcall
- .hidden rustix_indirect_syscall4_nr_last_fastcall
- .type rustix_indirect_syscall4_nr_last_fastcall, @function
-rustix_indirect_syscall4_nr_last_fastcall:
- .cfi_startproc
- push ebx
- .cfi_def_cfa_offset 8
- push esi
- .cfi_def_cfa_offset 12
- .cfi_offset esi, -12
- .cfi_offset ebx, -8
- mov ebx,DWORD PTR [esp+0xc]
- mov esi,DWORD PTR [esp+0x10]
- mov eax,DWORD PTR [esp+0x14]
- call DWORD PTR [esp+0x18]
- pop esi
- .cfi_def_cfa_offset 8
- pop ebx
- .cfi_def_cfa_offset 4
- ret 0x10
- .cfi_endproc
- .size rustix_indirect_syscall4_nr_last_fastcall, .-rustix_indirect_syscall4_nr_last_fastcall
-
- .section .text.rustix_indirect_syscall5_nr_last_fastcall,"ax",@progbits
- .p2align 4
- .weak rustix_indirect_syscall5_nr_last_fastcall
- .hidden rustix_indirect_syscall5_nr_last_fastcall
- .type rustix_indirect_syscall5_nr_last_fastcall, @function
-rustix_indirect_syscall5_nr_last_fastcall:
- .cfi_startproc
- push ebx
- .cfi_def_cfa_offset 8
- push esi
- .cfi_def_cfa_offset 12
- push edi
- .cfi_def_cfa_offset 16
- .cfi_offset edi, -16
- .cfi_offset esi, -12
- .cfi_offset ebx, -8
- mov ebx,DWORD PTR [esp+0x10]
- mov esi,DWORD PTR [esp+0x14]
- mov edi,DWORD PTR [esp+0x18]
- mov eax,DWORD PTR [esp+0x1c]
- call DWORD PTR [esp+0x20]
- pop edi
- .cfi_def_cfa_offset 12
- pop esi
- .cfi_def_cfa_offset 8
- pop ebx
- .cfi_def_cfa_offset 4
- ret 0x14
- .cfi_endproc
- .size rustix_indirect_syscall5_nr_last_fastcall, .-rustix_indirect_syscall5_nr_last_fastcall
-
- .section .text.rustix_indirect_syscall6_nr_last_fastcall,"ax",@progbits
- .p2align 4
- .weak rustix_indirect_syscall6_nr_last_fastcall
- .hidden rustix_indirect_syscall6_nr_last_fastcall
- .type rustix_indirect_syscall6_nr_last_fastcall, @function
-rustix_indirect_syscall6_nr_last_fastcall:
- .cfi_startproc
- push ebx
- .cfi_def_cfa_offset 8
- push esi
- .cfi_def_cfa_offset 12
- push edi
- .cfi_def_cfa_offset 16
- push ebp
- .cfi_def_cfa_offset 20
- .cfi_offset ebp, -20
- .cfi_offset edi, -16
- .cfi_offset esi, -12
- .cfi_offset ebx, -8
- mov ebx,DWORD PTR [esp+0x14]
- mov esi,DWORD PTR [esp+0x18]
- mov edi,DWORD PTR [esp+0x1c]
- mov ebp,DWORD PTR [esp+0x20]
- mov eax,DWORD PTR [esp+0x24]
- call DWORD PTR [esp+0x28]
- pop ebp
- .cfi_def_cfa_offset 16
- pop edi
- .cfi_def_cfa_offset 12
- pop esi
- .cfi_def_cfa_offset 8
- pop ebx
- .cfi_def_cfa_offset 4
- ret 0x18
- .cfi_endproc
- .size rustix_indirect_syscall6_nr_last_fastcall, .-rustix_indirect_syscall6_nr_last_fastcall
-
- .section .text.rustix_syscall0_nr_last_fastcall,"ax",@progbits
- .p2align 4
- .weak rustix_syscall0_nr_last_fastcall
- .hidden rustix_syscall0_nr_last_fastcall
- .type rustix_syscall0_nr_last_fastcall, @function
-rustix_syscall0_nr_last_fastcall:
- .cfi_startproc
- mov eax,ecx
- int 0x80
- ret
- .cfi_endproc
- .size rustix_syscall0_nr_last_fastcall, .-rustix_syscall0_nr_last_fastcall
-
- .section .text.rustix_syscall1_nr_last_fastcall,"ax",@progbits
- .p2align 4
- .weak rustix_syscall1_nr_last_fastcall
- .hidden rustix_syscall1_nr_last_fastcall
- .type rustix_syscall1_nr_last_fastcall, @function
-rustix_syscall1_nr_last_fastcall:
- .cfi_startproc
- push ebx
- .cfi_def_cfa_offset 8
- .cfi_offset ebx, -8
- mov eax,edx
- mov ebx,ecx
- int 0x80
- pop ebx
- .cfi_def_cfa_offset 4
- ret
- .cfi_endproc
- .size rustix_syscall1_nr_last_fastcall, .-rustix_syscall1_nr_last_fastcall
-
- .section .text.rustix_syscall1_noreturn_nr_last_fastcall,"ax",@progbits
- .p2align 4
- .weak rustix_syscall1_noreturn_nr_last_fastcall
- .hidden rustix_syscall1_noreturn_nr_last_fastcall
- .type rustix_syscall1_noreturn_nr_last_fastcall, @function
-rustix_syscall1_noreturn_nr_last_fastcall:
- .cfi_startproc
- mov eax,edx
- mov ebx,ecx
- int 0x80
- ud2
- .cfi_endproc
- .size rustix_syscall1_noreturn_nr_last_fastcall, .-rustix_syscall1_noreturn_nr_last_fastcall
-
- .section .text.rustix_syscall2_nr_last_fastcall,"ax",@progbits
- .p2align 4
- .weak rustix_syscall2_nr_last_fastcall
- .hidden rustix_syscall2_nr_last_fastcall
- .type rustix_syscall2_nr_last_fastcall, @function
-rustix_syscall2_nr_last_fastcall:
- .cfi_startproc
- push ebx
- .cfi_def_cfa_offset 8
- .cfi_offset ebx, -8
- mov ebx,edx
- mov eax,DWORD PTR [esp+0x8]
- int 0x80
- pop ebx
- .cfi_def_cfa_offset 4
- ret 0x4
- .cfi_endproc
- .size rustix_syscall2_nr_last_fastcall, .-rustix_syscall2_nr_last_fastcall
-
- .section .text.rustix_syscall3_nr_last_fastcall,"ax",@progbits
- .p2align 4
- .weak rustix_syscall3_nr_last_fastcall
- .hidden rustix_syscall3_nr_last_fastcall
- .type rustix_syscall3_nr_last_fastcall, @function
-rustix_syscall3_nr_last_fastcall:
- .cfi_startproc
- push ebx
- .cfi_def_cfa_offset 8
- .cfi_offset ebx, -8
- mov ebx,DWORD PTR [esp+0x8]
- mov eax,DWORD PTR [esp+0xc]
- int 0x80
- pop ebx
- .cfi_def_cfa_offset 4
- ret 0x8
- .cfi_endproc
- .size rustix_syscall3_nr_last_fastcall, .-rustix_syscall3_nr_last_fastcall
-
- .section .text.rustix_syscall4_nr_last_fastcall,"ax",@progbits
- .p2align 4
- .weak rustix_syscall4_nr_last_fastcall
- .hidden rustix_syscall4_nr_last_fastcall
- .type rustix_syscall4_nr_last_fastcall, @function
-rustix_syscall4_nr_last_fastcall:
- .cfi_startproc
- push ebx
- .cfi_def_cfa_offset 8
- push esi
- .cfi_def_cfa_offset 12
- .cfi_offset esi, -12
- .cfi_offset ebx, -8
- mov ebx,DWORD PTR [esp+0xc]
- mov esi,DWORD PTR [esp+0x10]
- mov eax,DWORD PTR [esp+0x14]
- int 0x80
- pop esi
- .cfi_def_cfa_offset 8
- pop ebx
- .cfi_def_cfa_offset 4
- ret 0xc
- .cfi_endproc
- .size rustix_syscall4_nr_last_fastcall, .-rustix_syscall4_nr_last_fastcall
-
- .section .text.rustix_syscall5_nr_last_fastcall,"ax",@progbits
- .p2align 4
- .weak rustix_syscall5_nr_last_fastcall
- .hidden rustix_syscall5_nr_last_fastcall
- .type rustix_syscall5_nr_last_fastcall, @function
-rustix_syscall5_nr_last_fastcall:
- .cfi_startproc
- push ebx
- .cfi_def_cfa_offset 8
- push edi
- .cfi_def_cfa_offset 12
- push esi
- .cfi_def_cfa_offset 16
- .cfi_offset esi, -16
- .cfi_offset edi, -12
- .cfi_offset ebx, -8
- mov ebx,DWORD PTR [esp+0x10]
- mov esi,DWORD PTR [esp+0x14]
- mov edi,DWORD PTR [esp+0x18]
- mov eax,DWORD PTR [esp+0x1c]
- int 0x80
- pop esi
- .cfi_def_cfa_offset 12
- pop edi
- .cfi_def_cfa_offset 8
- pop ebx
- .cfi_def_cfa_offset 4
- ret 0x10
- .cfi_endproc
- .size rustix_syscall5_nr_last_fastcall, .-rustix_syscall5_nr_last_fastcall
-
- .section .text.rustix_syscall6_nr_last_fastcall,"ax",@progbits
- .p2align 4
- .weak rustix_syscall6_nr_last_fastcall
- .hidden rustix_syscall6_nr_last_fastcall
- .type rustix_syscall6_nr_last_fastcall, @function
-rustix_syscall6_nr_last_fastcall:
- .cfi_startproc
- push ebp
- .cfi_def_cfa_offset 8
- push ebx
- .cfi_def_cfa_offset 12
- push edi
- .cfi_def_cfa_offset 16
- push esi
- .cfi_def_cfa_offset 20
- .cfi_offset esi, -20
- .cfi_offset edi, -16
- .cfi_offset ebx, -12
- .cfi_offset ebp, -8
- mov ebx,DWORD PTR [esp+0x14]
- mov esi,DWORD PTR [esp+0x18]
- mov edi,DWORD PTR [esp+0x1c]
- mov ebp,DWORD PTR [esp+0x20]
- mov eax,DWORD PTR [esp+0x24]
- int 0x80
- pop esi
- .cfi_def_cfa_offset 16
- pop edi
- .cfi_def_cfa_offset 12
- pop ebx
- .cfi_def_cfa_offset 8
- pop ebp
- .cfi_def_cfa_offset 4
- ret 0x14
- .cfi_endproc
- .size rustix_syscall6_nr_last_fastcall, .-rustix_syscall6_nr_last_fastcall
-
- .section .text.rustix_int_0x80,"ax",@progbits
- .p2align 4
- .weak rustix_int_0x80
- .hidden rustix_int_0x80
- .type rustix_int_0x80, @function
-rustix_int_0x80:
- .cfi_startproc
- int 0x80
- ret
- .cfi_endproc
- .size rustix_int_0x80, .-rustix_int_0x80
-
- .section .note.GNU-stack,"",@progbits
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/x86_64.s b/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/x86_64.s
deleted file mode 100644
index 2beda323b..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/arch/outline/x86_64.s
+++ /dev/null
@@ -1,122 +0,0 @@
-// Assembly code for making x86-64 syscalls.
-//
-// x86-64 syscall argument register ordering is the same as the x86-64
-// userspace argument register ordering except that a3 is passed in r10
-// instead of rcx, and the syscall number (nr) is passed in eax.
-//
-// outline.rs takes care of reordering the nr argument to the end for us,
-// so we only need to move nr into eax and move rcx into r10 as needed.
-//
-// x32 is not yet supported.
-
- .file "x86_64.s"
- .intel_syntax noprefix
-
- .section .text.rustix_syscall0_nr_last,"ax",@progbits
- .p2align 4
- .weak rustix_syscall0_nr_last
- .hidden rustix_syscall0_nr_last
- .type rustix_syscall0_nr_last, @function
-rustix_syscall0_nr_last:
- .cfi_startproc
- mov eax,edi
- syscall
- ret
- .cfi_endproc
- .size rustix_syscall0_nr_last, .-rustix_syscall0_nr_last
-
- .section .text.rustix_syscall1_nr_last,"ax",@progbits
- .p2align 4
- .weak rustix_syscall1_nr_last
- .hidden rustix_syscall1_nr_last
- .type rustix_syscall1_nr_last, @function
-rustix_syscall1_nr_last:
- .cfi_startproc
- mov eax,esi
- syscall
- ret
- .cfi_endproc
- .size rustix_syscall1_nr_last, .-rustix_syscall1_nr_last
-
- .section .text.rustix_syscall1_noreturn_nr_last,"ax",@progbits
- .p2align 4
- .weak rustix_syscall1_noreturn_nr_last
- .hidden rustix_syscall1_noreturn_nr_last
- .type rustix_syscall1_noreturn_nr_last, @function
-rustix_syscall1_noreturn_nr_last:
- .cfi_startproc
- mov eax,esi
- syscall
- ud2
- .cfi_endproc
- .size rustix_syscall1_noreturn_nr_last, .-rustix_syscall1_noreturn_nr_last
-
- .section .text.rustix_syscall2_nr_last,"ax",@progbits
- .p2align 4
- .weak rustix_syscall2_nr_last
- .hidden rustix_syscall2_nr_last
- .type rustix_syscall2_nr_last, @function
-rustix_syscall2_nr_last:
- .cfi_startproc
- mov eax,edx
- syscall
- ret
- .cfi_endproc
- .size rustix_syscall2_nr_last, .-rustix_syscall2_nr_last
-
- .section .text.rustix_syscall3_nr_last,"ax",@progbits
- .p2align 4
- .weak rustix_syscall3_nr_last
- .hidden rustix_syscall3_nr_last
- .type rustix_syscall3_nr_last, @function
-rustix_syscall3_nr_last:
- .cfi_startproc
- mov eax,ecx
- syscall
- ret
- .cfi_endproc
- .size rustix_syscall3_nr_last, .-rustix_syscall3_nr_last
-
- .section .text.rustix_syscall4_nr_last,"ax",@progbits
- .p2align 4
- .weak rustix_syscall4_nr_last
- .hidden rustix_syscall4_nr_last
- .type rustix_syscall4_nr_last, @function
-rustix_syscall4_nr_last:
- .cfi_startproc
- mov eax,r8d
- mov r10,rcx
- syscall
- ret
- .cfi_endproc
- .size rustix_syscall4_nr_last, .-rustix_syscall4_nr_last
-
- .section .text.rustix_syscall5_nr_last,"ax",@progbits
- .p2align 4
- .weak rustix_syscall5_nr_last
- .hidden rustix_syscall5_nr_last
- .type rustix_syscall5_nr_last, @function
-rustix_syscall5_nr_last:
- .cfi_startproc
- mov eax,r9d
- mov r10,rcx
- syscall
- ret
- .cfi_endproc
- .size rustix_syscall5_nr_last, .-rustix_syscall5_nr_last
-
- .section .text.rustix_syscall6_nr_last,"ax",@progbits
- .p2align 4
- .weak rustix_syscall6_nr_last
- .hidden rustix_syscall6_nr_last
- .type rustix_syscall6_nr_last, @function
-rustix_syscall6_nr_last:
- .cfi_startproc
- mov eax,DWORD PTR [rsp+0x8]
- mov r10,rcx
- syscall
- ret
- .cfi_endproc
- .size rustix_syscall6_nr_last, .-rustix_syscall6_nr_last
-
- .section .note.GNU-stack,"",@progbits
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/c.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/c.rs
deleted file mode 100644
index e7263305a..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/c.rs
+++ /dev/null
@@ -1,31 +0,0 @@
-//! Adapt the Linux API to resemble a POSIX-style libc API.
-//!
-//! The linux_raw backend doesn't use actual libc; this just defines certain
-//! types that are convenient to have defined.
-
-#![allow(unused_imports)]
-
-pub(crate) use linux_raw_sys::ctypes::*;
-pub(crate) use linux_raw_sys::errno::EINVAL;
-pub(crate) use linux_raw_sys::general::{
- AF_DECnet, __kernel_sa_family_t as sa_family_t, __kernel_sockaddr_storage as sockaddr_storage,
- in6_addr, in_addr, iovec, ip_mreq, ipv6_mreq, linger, siginfo_t, sockaddr, sockaddr_in,
- sockaddr_in6, sockaddr_un, socklen_t, AF_APPLETALK, AF_ASH, AF_ATMPVC, AF_ATMSVC, AF_AX25,
- AF_BLUETOOTH, AF_BRIDGE, AF_CAN, AF_ECONET, AF_IEEE802154, AF_INET, AF_INET6, AF_IPX, AF_IRDA,
- AF_ISDN, AF_IUCV, AF_KEY, AF_LLC, AF_NETBEUI, AF_NETLINK, AF_NETROM, AF_PACKET, AF_PHONET,
- AF_PPPOX, AF_RDS, AF_ROSE, AF_RXRPC, AF_SECURITY, AF_SNA, AF_TIPC, AF_UNIX, AF_UNSPEC,
- AF_WANPIPE, AF_X25, IPPROTO_AH, IPPROTO_BEETPH, IPPROTO_COMP, IPPROTO_DCCP, IPPROTO_EGP,
- IPPROTO_ENCAP, IPPROTO_ESP, IPPROTO_ETHERNET, IPPROTO_FRAGMENT, IPPROTO_GRE, IPPROTO_ICMP,
- IPPROTO_ICMPV6, IPPROTO_IDP, IPPROTO_IGMP, IPPROTO_IP, IPPROTO_IPIP, IPPROTO_IPV6, IPPROTO_MH,
- IPPROTO_MPLS, IPPROTO_MPTCP, IPPROTO_MTP, IPPROTO_PIM, IPPROTO_PUP, IPPROTO_RAW,
- IPPROTO_ROUTING, IPPROTO_RSVP, IPPROTO_SCTP, IPPROTO_TCP, IPPROTO_TP, IPPROTO_UDP,
- IPPROTO_UDPLITE, IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP, IPV6_MULTICAST_LOOP, IPV6_V6ONLY,
- IP_ADD_MEMBERSHIP, IP_DROP_MEMBERSHIP, IP_MULTICAST_LOOP, IP_MULTICAST_TTL, IP_TTL,
- MSG_CMSG_CLOEXEC, MSG_CONFIRM, MSG_DONTROUTE, MSG_DONTWAIT, MSG_EOR, MSG_ERRQUEUE, MSG_MORE,
- MSG_NOSIGNAL, MSG_OOB, MSG_PEEK, MSG_TRUNC, MSG_WAITALL, O_CLOEXEC, O_NONBLOCK,
- O_NONBLOCK as PIDFD_NONBLOCK, P_ALL, P_PID, P_PIDFD, SHUT_RD, SHUT_RDWR, SHUT_WR, SOCK_DGRAM,
- SOCK_RAW, SOCK_RDM, SOCK_SEQPACKET, SOCK_STREAM, SOL_SOCKET, SO_BROADCAST, SO_ERROR, SO_LINGER,
- SO_PASSCRED, SO_RCVTIMEO_NEW, SO_RCVTIMEO_OLD, SO_REUSEADDR, SO_SNDTIMEO_NEW, SO_SNDTIMEO_OLD,
- SO_TYPE, TCP_NODELAY,
-};
-pub(crate) use linux_raw_sys::general::{NFS_SUPER_MAGIC, PROC_SUPER_MAGIC, UTIME_NOW, UTIME_OMIT};
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/conv.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/conv.rs
deleted file mode 100644
index b9fe725bb..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/conv.rs
+++ /dev/null
@@ -1,857 +0,0 @@
-//! Convert values to [`ArgReg`] and from [`RetReg`].
-//!
-//! System call arguments and return values are all communicated with inline
-//! asm and FFI as `*mut Opaque`. To protect these raw pointers from escaping
-//! or being accidentally misused as they travel through the code, we wrap
-//! them in [`ArgReg`] and [`RetReg`] structs. This file provides `From`
-//! implementations and explicit conversion functions for converting values
-//! into and out of these wrapper structs.
-//!
-//! # Safety
-//!
-//! Some of this code is `unsafe` in order to work with raw file descriptors,
-//! and some is `unsafe` to interpret the values in a `RetReg`.
-#![allow(unsafe_code)]
-
-use super::c;
-use super::fd::{AsRawFd, BorrowedFd, FromRawFd, RawFd};
-#[cfg(feature = "runtime")]
-use super::io::errno::try_decode_error;
-#[cfg(target_pointer_width = "64")]
-use super::io::errno::try_decode_u64;
-#[cfg(not(debug_assertions))]
-use super::io::errno::{decode_c_uint_infallible, decode_usize_infallible};
-use super::io::errno::{
- try_decode_c_int, try_decode_c_uint, try_decode_raw_fd, try_decode_usize, try_decode_void,
- try_decode_void_star,
-};
-use super::reg::{raw_arg, ArgNumber, ArgReg, RetReg, R0};
-#[cfg(any(feature = "thread", feature = "time", target_arch = "x86"))]
-use super::time::types::ClockId;
-#[cfg(feature = "time")]
-use super::time::types::TimerfdClockId;
-use crate::fd::OwnedFd;
-use crate::ffi::CStr;
-#[cfg(feature = "fs")]
-use crate::fs::{FileType, Mode, OFlags};
-use crate::io;
-use crate::process::{Pid, Resource, Signal};
-use crate::utils::{as_mut_ptr, as_ptr};
-use core::mem::MaybeUninit;
-use core::ptr::null_mut;
-#[cfg(any(feature = "thread", feature = "time", target_arch = "x86"))]
-use linux_raw_sys::general::__kernel_clockid_t;
-#[cfg(target_pointer_width = "64")]
-use linux_raw_sys::general::__kernel_loff_t;
-#[cfg(feature = "net")]
-use linux_raw_sys::general::socklen_t;
-#[cfg(target_pointer_width = "32")]
-#[cfg(feature = "fs")]
-use linux_raw_sys::general::O_LARGEFILE;
-
-/// Convert `SYS_*` constants for socketcall.
-#[cfg(target_arch = "x86")]
-#[inline]
-pub(super) fn x86_sys<'a, Num: ArgNumber>(sys: u32) -> ArgReg<'a, Num> {
- pass_usize(sys as usize)
-}
-
-/// Pass the "low" half of the endian-specific memory encoding of a `u64`, for
-/// 32-bit architectures.
-#[cfg(target_pointer_width = "32")]
-#[inline]
-pub(super) fn lo<'a, Num: ArgNumber>(x: u64) -> ArgReg<'a, Num> {
- #[cfg(target_endian = "little")]
- let x = x >> 32;
- #[cfg(target_endian = "big")]
- let x = x & 0xffff_ffff;
-
- pass_usize(x as usize)
-}
-
-/// Pass the "high" half of the endian-specific memory encoding of a `u64`, for
-/// 32-bit architectures.
-#[cfg(target_pointer_width = "32")]
-#[inline]
-pub(super) fn hi<'a, Num: ArgNumber>(x: u64) -> ArgReg<'a, Num> {
- #[cfg(target_endian = "little")]
- let x = x & 0xffff_ffff;
- #[cfg(target_endian = "big")]
- let x = x >> 32;
-
- pass_usize(x as usize)
-}
-
-/// Pass a zero, or null, argument.
-#[inline]
-pub(super) fn zero<'a, Num: ArgNumber>() -> ArgReg<'a, Num> {
- raw_arg(null_mut())
-}
-
-/// Pass the `mem::size_of` of a type.
-#[inline]
-pub(super) fn size_of<'a, T: Sized, Num: ArgNumber>() -> ArgReg<'a, Num> {
- pass_usize(core::mem::size_of::<T>())
-}
-
-/// Pass an arbitrary `usize` value.
-///
-/// For passing pointers, use `void_star` or other functions which take a raw
-/// pointer instead of casting to `usize`, so that provenance is preserved.
-#[inline]
-pub(super) fn pass_usize<'a, Num: ArgNumber>(t: usize) -> ArgReg<'a, Num> {
- raw_arg(t as *mut _)
-}
-
-impl<'a, Num: ArgNumber, T> From<*mut T> for ArgReg<'a, Num> {
- #[inline]
- fn from(c: *mut T) -> ArgReg<'a, Num> {
- raw_arg(c.cast())
- }
-}
-
-impl<'a, Num: ArgNumber, T> From<*const T> for ArgReg<'a, Num> {
- #[inline]
- fn from(c: *const T) -> ArgReg<'a, Num> {
- let mut_ptr = c as *mut T;
- raw_arg(mut_ptr.cast())
- }
-}
-
-impl<'a, Num: ArgNumber> From<&'a CStr> for ArgReg<'a, Num> {
- #[inline]
- fn from(c: &'a CStr) -> Self {
- let mut_ptr = c.as_ptr() as *mut u8;
- raw_arg(mut_ptr.cast())
- }
-}
-
-impl<'a, Num: ArgNumber> From<Option<&'a CStr>> for ArgReg<'a, Num> {
- #[inline]
- fn from(t: Option<&'a CStr>) -> Self {
- raw_arg(match t {
- Some(s) => {
- let mut_ptr = s.as_ptr() as *mut u8;
- mut_ptr.cast()
- }
- None => null_mut(),
- })
- }
-}
-
-/// Pass a borrowed file-descriptor argument.
-impl<'a, Num: ArgNumber> From<BorrowedFd<'a>> for ArgReg<'a, Num> {
- #[inline]
- fn from(fd: BorrowedFd<'a>) -> Self {
- // SAFETY: `BorrowedFd` ensures that the file descriptor is valid, and the
- // lifetime parameter on the resulting `ArgReg` ensures that the result is
- // bounded by the `BorrowedFd`'s lifetime.
- unsafe { raw_fd(fd.as_raw_fd()) }
- }
-}
-
-/// Pass a raw file-descriptor argument. Most users should use [`ArgReg::from`]
-/// instead, to preserve I/O safety as long as possible.
-///
-/// # Safety
-///
-/// `fd` must be a valid open file descriptor.
-#[inline]
-pub(super) unsafe fn raw_fd<'a, Num: ArgNumber>(fd: RawFd) -> ArgReg<'a, Num> {
- // Use `no_fd` when passing `-1` is intended.
- #[cfg(feature = "fs")]
- debug_assert!(fd == crate::fs::cwd().as_raw_fd() || fd >= 0);
-
- // Don't pass the `io_uring_register_files_skip` sentry value this way.
- #[cfg(feature = "io_uring")]
- debug_assert_ne!(
- fd,
- crate::io_uring::io_uring_register_files_skip().as_raw_fd()
- );
-
- // Linux doesn't look at the high bits beyond the `c_int`, so use
- // zero-extension rather than sign-extension because it's a smaller
- // instruction.
- let fd: c::c_int = fd;
- pass_usize(fd as c::c_uint as usize)
-}
-
-/// Deliberately pass `-1` to a file-descriptor argument, for system calls
-/// like `mmap` where this indicates the argument is omitted.
-#[inline]
-pub(super) fn no_fd<'a, Num: ArgNumber>() -> ArgReg<'a, Num> {
- pass_usize(!0_usize)
-}
-
-#[inline]
-pub(super) fn slice_just_addr<T: Sized, Num: ArgNumber>(v: &[T]) -> ArgReg<Num> {
- let mut_ptr = v.as_ptr() as *mut T;
- raw_arg(mut_ptr.cast())
-}
-
-#[inline]
-pub(super) fn slice<T: Sized, Num0: ArgNumber, Num1: ArgNumber>(
- v: &[T],
-) -> (ArgReg<Num0>, ArgReg<Num1>) {
- (slice_just_addr(v), pass_usize(v.len()))
-}
-
-#[inline]
-pub(super) fn slice_mut<T: Sized, Num0: ArgNumber, Num1: ArgNumber>(
- v: &mut [T],
-) -> (ArgReg<Num0>, ArgReg<Num1>) {
- (raw_arg(v.as_mut_ptr().cast()), pass_usize(v.len()))
-}
-
-#[inline]
-pub(super) fn by_ref<T: Sized, Num: ArgNumber>(t: &T) -> ArgReg<Num> {
- let mut_ptr = as_ptr(t) as *mut T;
- raw_arg(mut_ptr.cast())
-}
-
-#[inline]
-pub(super) fn by_mut<T: Sized, Num: ArgNumber>(t: &mut T) -> ArgReg<Num> {
- raw_arg(as_mut_ptr(t).cast())
-}
-
-/// Convert an optional mutable reference into a `usize` for passing to a
-/// syscall.
-#[inline]
-pub(super) fn opt_mut<T: Sized, Num: ArgNumber>(t: Option<&mut T>) -> ArgReg<Num> {
- // This optimizes into the equivalent of `transmute(t)`, and has the
- // advantage of not requiring `unsafe`.
- match t {
- Some(t) => by_mut(t),
- None => raw_arg(null_mut()),
- }
-}
-
-/// Convert an optional immutable reference into a `usize` for passing to a
-/// syscall.
-#[cfg(any(target_arch = "aarch64", target_arch = "riscv64"))]
-#[inline]
-pub(super) fn opt_ref<T: Sized, Num: ArgNumber>(t: Option<&T>) -> ArgReg<Num> {
- // This optimizes into the equivalent of `transmute(t)`, and has the
- // advantage of not requiring `unsafe`.
- match t {
- Some(t) => by_ref(t),
- None => raw_arg(null_mut()),
- }
-}
-
-/// Convert a `c_int` into an `ArgReg`.
-///
-/// Be sure to use `raw_fd` to pass `RawFd` values.
-#[inline]
-pub(super) fn c_int<'a, Num: ArgNumber>(i: c::c_int) -> ArgReg<'a, Num> {
- pass_usize(i as usize)
-}
-
-/// Convert a `c_uint` into an `ArgReg`.
-#[inline]
-pub(super) fn c_uint<'a, Num: ArgNumber>(i: c::c_uint) -> ArgReg<'a, Num> {
- pass_usize(i as usize)
-}
-
-#[cfg(target_pointer_width = "64")]
-#[inline]
-pub(super) fn loff_t<'a, Num: ArgNumber>(i: __kernel_loff_t) -> ArgReg<'a, Num> {
- pass_usize(i as usize)
-}
-
-#[cfg(target_pointer_width = "64")]
-#[inline]
-pub(super) fn loff_t_from_u64<'a, Num: ArgNumber>(i: u64) -> ArgReg<'a, Num> {
- // `loff_t` is signed, but syscalls which expect `loff_t` return `EINVAL`
- // if it's outside the signed `i64` range, so we can silently cast.
- pass_usize(i as usize)
-}
-
-#[cfg(any(feature = "thread", feature = "time", target_arch = "x86"))]
-impl<'a, Num: ArgNumber> From<ClockId> for ArgReg<'a, Num> {
- #[inline]
- fn from(i: ClockId) -> Self {
- pass_usize(i as __kernel_clockid_t as usize)
- }
-}
-
-#[cfg(feature = "time")]
-impl<'a, Num: ArgNumber> From<TimerfdClockId> for ArgReg<'a, Num> {
- #[inline]
- fn from(i: TimerfdClockId) -> Self {
- pass_usize(i as __kernel_clockid_t as usize)
- }
-}
-
-#[cfg(feature = "net")]
-#[inline]
-pub(super) fn socklen_t<'a, Num: ArgNumber>(i: socklen_t) -> ArgReg<'a, Num> {
- pass_usize(i as usize)
-}
-
-#[cfg(feature = "fs")]
-impl<'a, Num: ArgNumber> From<Mode> for ArgReg<'a, Num> {
- #[inline]
- fn from(mode: Mode) -> Self {
- pass_usize(mode.bits() as usize)
- }
-}
-
-#[cfg(feature = "fs")]
-impl<'a, Num: ArgNumber> From<(Mode, FileType)> for ArgReg<'a, Num> {
- #[inline]
- fn from(pair: (Mode, FileType)) -> Self {
- pass_usize(pair.0.as_raw_mode() as usize | pair.1.as_raw_mode() as usize)
- }
-}
-
-#[cfg(feature = "fs")]
-impl<'a, Num: ArgNumber> From<crate::fs::AtFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::fs::AtFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-#[cfg(feature = "fs")]
-impl<'a, Num: ArgNumber> From<crate::fs::inotify::CreateFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::fs::inotify::CreateFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-#[cfg(feature = "fs")]
-impl<'a, Num: ArgNumber> From<crate::fs::inotify::WatchFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::fs::inotify::WatchFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-#[cfg(feature = "fs")]
-impl<'a, Num: ArgNumber> From<crate::fs::MemfdFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::fs::MemfdFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-#[cfg(feature = "fs")]
-impl<'a, Num: ArgNumber> From<crate::fs::RenameFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::fs::RenameFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-#[cfg(feature = "fs")]
-impl<'a, Num: ArgNumber> From<crate::fs::StatxFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::fs::StatxFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-impl<'a, Num: ArgNumber> From<crate::io::FdFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::io::FdFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-impl<'a, Num: ArgNumber> From<crate::io::PipeFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::io::PipeFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-impl<'a, Num: ArgNumber> From<crate::io::DupFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::io::DupFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-impl<'a, Num: ArgNumber> From<crate::io::ReadWriteFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::io::ReadWriteFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-impl<'a, Num: ArgNumber> From<crate::io::EventfdFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::io::EventfdFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-impl<'a, Num: ArgNumber> From<crate::io::epoll::CreateFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::io::epoll::CreateFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-#[cfg(feature = "mm")]
-impl<'a, Num: ArgNumber> From<crate::backend::mm::types::ProtFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::backend::mm::types::ProtFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-#[cfg(feature = "mm")]
-impl<'a, Num: ArgNumber> From<crate::backend::mm::types::MsyncFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::backend::mm::types::MsyncFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-#[cfg(feature = "mm")]
-impl<'a, Num: ArgNumber> From<crate::backend::mm::types::MremapFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::backend::mm::types::MremapFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-#[cfg(feature = "mm")]
-impl<'a, Num: ArgNumber> From<crate::backend::mm::types::MlockFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::backend::mm::types::MlockFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-#[cfg(feature = "mm")]
-impl<'a, Num: ArgNumber> From<crate::backend::mm::types::MapFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::backend::mm::types::MapFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-#[cfg(feature = "mm")]
-impl<'a, Num: ArgNumber> From<crate::backend::mm::types::MprotectFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::backend::mm::types::MprotectFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-#[cfg(feature = "mm")]
-impl<'a, Num: ArgNumber> From<crate::backend::mm::types::UserfaultfdFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::backend::mm::types::UserfaultfdFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-impl<'a, Num: ArgNumber> From<crate::backend::process::types::MembarrierCommand>
- for ArgReg<'a, Num>
-{
- #[inline]
- fn from(cmd: crate::backend::process::types::MembarrierCommand) -> Self {
- c_uint(cmd as u32)
- }
-}
-
-impl<'a, Num: ArgNumber> From<crate::process::Cpuid> for ArgReg<'a, Num> {
- #[inline]
- fn from(cpuid: crate::process::Cpuid) -> Self {
- c_uint(cpuid.as_raw())
- }
-}
-
-#[cfg(target_pointer_width = "64")]
-#[inline]
-pub(super) fn dev_t<'a, Num: ArgNumber>(dev: u64) -> ArgReg<'a, Num> {
- pass_usize(dev as usize)
-}
-
-#[cfg(target_pointer_width = "32")]
-#[inline]
-pub(super) fn dev_t<'a, Num: ArgNumber>(dev: u64) -> io::Result<ArgReg<'a, Num>> {
- use core::convert::TryInto;
- Ok(pass_usize(dev.try_into().map_err(|_err| io::Errno::INVAL)?))
-}
-
-#[cfg(target_pointer_width = "32")]
-#[cfg(feature = "fs")]
-#[inline]
-fn oflags_bits(oflags: OFlags) -> c::c_uint {
- let mut bits = oflags.bits();
- // Add `O_LARGEFILE`, unless `O_PATH` is set, as Linux returns `EINVAL`
- // when both are set.
- if !oflags.contains(OFlags::PATH) {
- bits |= O_LARGEFILE;
- }
- bits
-}
-
-#[cfg(target_pointer_width = "64")]
-#[cfg(feature = "fs")]
-#[inline]
-const fn oflags_bits(oflags: OFlags) -> c::c_uint {
- oflags.bits()
-}
-
-#[cfg(feature = "fs")]
-impl<'a, Num: ArgNumber> From<OFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(oflags: OFlags) -> Self {
- pass_usize(oflags_bits(oflags) as usize)
- }
-}
-
-/// Convert an `OFlags` into a `u64` for use in the `open_how` struct.
-#[cfg(feature = "fs")]
-#[inline]
-pub(super) fn oflags_for_open_how(oflags: OFlags) -> u64 {
- u64::from(oflags_bits(oflags))
-}
-
-#[cfg(feature = "fs")]
-impl<'a, Num: ArgNumber> From<crate::fs::FallocateFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::fs::FallocateFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-/// Convert a `Resource` into a syscall argument.
-impl<'a, Num: ArgNumber> From<Resource> for ArgReg<'a, Num> {
- #[inline]
- fn from(resource: Resource) -> Self {
- c_uint(resource as c::c_uint)
- }
-}
-
-impl<'a, Num: ArgNumber> From<Pid> for ArgReg<'a, Num> {
- #[inline]
- fn from(pid: Pid) -> Self {
- pass_usize(pid.as_raw_nonzero().get() as usize)
- }
-}
-
-#[inline]
-pub(super) fn negative_pid<'a, Num: ArgNumber>(pid: Pid) -> ArgReg<'a, Num> {
- pass_usize(pid.as_raw_nonzero().get().wrapping_neg() as usize)
-}
-
-impl<'a, Num: ArgNumber> From<Signal> for ArgReg<'a, Num> {
- #[inline]
- fn from(sig: Signal) -> Self {
- pass_usize(sig as usize)
- }
-}
-
-#[cfg(feature = "fs")]
-impl<'a, Num: ArgNumber> From<crate::fs::Advice> for ArgReg<'a, Num> {
- #[inline]
- fn from(advice: crate::fs::Advice) -> Self {
- c_uint(advice as c::c_uint)
- }
-}
-
-#[cfg(feature = "fs")]
-impl<'a, Num: ArgNumber> From<crate::fs::SealFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::fs::SealFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-#[cfg(feature = "io_uring")]
-impl<'a, Num: ArgNumber> From<crate::io_uring::IoringEnterFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::io_uring::IoringEnterFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-#[cfg(feature = "time")]
-impl<'a, Num: ArgNumber> From<crate::time::TimerfdFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::time::TimerfdFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-#[cfg(feature = "time")]
-impl<'a, Num: ArgNumber> From<crate::time::TimerfdTimerFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::time::TimerfdTimerFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-#[cfg(feature = "rand")]
-impl<'a, Num: ArgNumber> From<crate::rand::GetRandomFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::rand::GetRandomFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-#[cfg(feature = "net")]
-impl<'a, Num: ArgNumber> From<crate::net::RecvFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::net::RecvFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-#[cfg(feature = "net")]
-impl<'a, Num: ArgNumber> From<crate::net::SendFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::net::SendFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-#[cfg(feature = "net")]
-impl<'a, Num: ArgNumber> From<crate::net::AcceptFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::net::AcceptFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-#[cfg(feature = "net")]
-impl<'a, Num: ArgNumber> From<crate::net::AddressFamily> for ArgReg<'a, Num> {
- #[inline]
- fn from(family: crate::net::AddressFamily) -> Self {
- c_uint(family.0.into())
- }
-}
-
-#[cfg(feature = "net")]
-impl<'a, Num: ArgNumber> From<(crate::net::SocketType, crate::net::SocketFlags)>
- for ArgReg<'a, Num>
-{
- #[inline]
- fn from(pair: (crate::net::SocketType, crate::net::SocketFlags)) -> Self {
- c_uint(pair.0 .0 | pair.1.bits())
- }
-}
-
-#[cfg(feature = "thread")]
-impl<'a, Num: ArgNumber> From<(crate::thread::FutexOperation, crate::thread::FutexFlags)>
- for ArgReg<'a, Num>
-{
- #[inline]
- fn from(pair: (crate::thread::FutexOperation, crate::thread::FutexFlags)) -> Self {
- c_uint(pair.0 as u32 | pair.1.bits())
- }
-}
-
-#[cfg(feature = "fs")]
-impl<'a, Num: ArgNumber> From<crate::fs::Access> for ArgReg<'a, Num> {
- #[inline]
- fn from(access: crate::fs::Access) -> Self {
- c_uint(access.bits())
- }
-}
-
-#[cfg(feature = "net")]
-impl<'a, Num: ArgNumber> From<crate::net::SocketType> for ArgReg<'a, Num> {
- #[inline]
- fn from(type_: crate::net::SocketType) -> Self {
- c_uint(type_.0)
- }
-}
-
-#[cfg(feature = "net")]
-impl<'a, Num: ArgNumber> From<crate::net::Protocol> for ArgReg<'a, Num> {
- #[inline]
- fn from(protocol: crate::net::Protocol) -> Self {
- c_uint(protocol.0)
- }
-}
-
-impl<'a, Num: ArgNumber, T> From<&'a mut MaybeUninit<T>> for ArgReg<'a, Num> {
- #[inline]
- fn from(t: &'a mut MaybeUninit<T>) -> Self {
- raw_arg(t.as_mut_ptr().cast())
- }
-}
-
-#[cfg(feature = "fs")]
-#[cfg(any(target_os = "android", target_os = "linux"))]
-impl<'a, Num: ArgNumber> From<crate::backend::fs::types::MountFlagsArg> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::backend::fs::types::MountFlagsArg) -> Self {
- c_uint(flags.0)
- }
-}
-
-#[cfg(feature = "fs")]
-#[cfg(any(target_os = "android", target_os = "linux"))]
-impl<'a, Num: ArgNumber> From<crate::backend::fs::types::UnmountFlags> for ArgReg<'a, Num> {
- #[inline]
- fn from(flags: crate::backend::fs::types::UnmountFlags) -> Self {
- c_uint(flags.bits())
- }
-}
-
-impl<'a, Num: ArgNumber> From<crate::process::Uid> for ArgReg<'a, Num> {
- #[inline]
- fn from(t: crate::process::Uid) -> Self {
- c_uint(t.as_raw())
- }
-}
-
-impl<'a, Num: ArgNumber> From<crate::process::Gid> for ArgReg<'a, Num> {
- #[inline]
- fn from(t: crate::process::Gid) -> Self {
- c_uint(t.as_raw())
- }
-}
-
-/// Convert a `usize` returned from a syscall that effectively returns `()` on
-/// success.
-///
-/// # Safety
-///
-/// The caller must ensure that this is the return value of a syscall which
-/// just returns 0 on success.
-#[inline]
-pub(super) unsafe fn ret(raw: RetReg<R0>) -> io::Result<()> {
- try_decode_void(raw)
-}
-
-/// Convert a `usize` returned from a syscall that doesn't return on success.
-///
-/// # Safety
-///
-/// The caller must ensure that this is the return value of a syscall which
-/// doesn't return on success.
-#[cfg(feature = "runtime")]
-#[inline]
-pub(super) unsafe fn ret_error(raw: RetReg<R0>) -> io::Errno {
- try_decode_error(raw)
-}
-
-/// Convert a `usize` returned from a syscall that effectively always returns
-/// `()`.
-///
-/// # Safety
-///
-/// The caller must ensure that this is the return value of a syscall which
-/// always returns `()`.
-#[inline]
-pub(super) unsafe fn ret_infallible(raw: RetReg<R0>) {
- #[cfg(debug_assertions)]
- {
- try_decode_void(raw).unwrap()
- }
- #[cfg(not(debug_assertions))]
- drop(raw);
-}
-
-/// Convert a `usize` returned from a syscall that effectively returns a
-/// `c_int` on success.
-#[inline]
-pub(super) fn ret_c_int(raw: RetReg<R0>) -> io::Result<c::c_int> {
- try_decode_c_int(raw)
-}
-
-/// Convert a `usize` returned from a syscall that effectively returns a
-/// `c_uint` on success.
-#[inline]
-pub(super) fn ret_c_uint(raw: RetReg<R0>) -> io::Result<c::c_uint> {
- try_decode_c_uint(raw)
-}
-
-/// Convert a `usize` returned from a syscall that effectively returns a `u64`
-/// on success.
-#[cfg(target_pointer_width = "64")]
-#[inline]
-pub(super) fn ret_u64(raw: RetReg<R0>) -> io::Result<u64> {
- try_decode_u64(raw)
-}
-
-/// Convert a `usize` returned from a syscall that effectively returns a
-/// `usize` on success.
-#[inline]
-pub(super) fn ret_usize(raw: RetReg<R0>) -> io::Result<usize> {
- try_decode_usize(raw)
-}
-
-/// Convert a `usize` returned from a syscall that effectively always
-/// returns a `usize`.
-///
-/// # Safety
-///
-/// This function must only be used with return values from infallible
-/// syscalls.
-#[inline]
-pub(super) unsafe fn ret_usize_infallible(raw: RetReg<R0>) -> usize {
- #[cfg(debug_assertions)]
- {
- try_decode_usize(raw).unwrap()
- }
- #[cfg(not(debug_assertions))]
- {
- decode_usize_infallible(raw)
- }
-}
-
-/// Convert a `c_uint` returned from a syscall that effectively always
-/// returns a `c_uint`.
-///
-/// # Safety
-///
-/// This function must only be used with return values from infallible
-/// syscalls.
-#[inline]
-pub(super) unsafe fn ret_c_uint_infallible(raw: RetReg<R0>) -> c::c_uint {
- #[cfg(debug_assertions)]
- {
- try_decode_c_uint(raw).unwrap()
- }
- #[cfg(not(debug_assertions))]
- {
- decode_c_uint_infallible(raw)
- }
-}
-
-/// Convert a `usize` returned from a syscall that effectively returns an
-/// `OwnedFd` on success.
-///
-/// # Safety
-///
-/// The caller must ensure that this is the return value of a syscall which
-/// returns an owned file descriptor.
-#[inline]
-pub(super) unsafe fn ret_owned_fd(raw: RetReg<R0>) -> io::Result<OwnedFd> {
- let raw_fd = try_decode_raw_fd(raw)?;
- Ok(crate::backend::fd::OwnedFd::from_raw_fd(raw_fd))
-}
-
-/// Convert the return value of `dup2` and `dup3`.
-///
-/// When these functions succeed, they return the same value as their second
-/// argument, so we don't construct a new `OwnedFd`.
-///
-/// # Safety
-///
-/// The caller must ensure that this is the return value of a syscall which
-/// returns a file descriptor.
-#[inline]
-pub(super) unsafe fn ret_discarded_fd(raw: RetReg<R0>) -> io::Result<()> {
- let _raw_fd = try_decode_raw_fd(raw)?;
- Ok(())
-}
-
-/// Convert a `usize` returned from a syscall that effectively returns a
-/// `*mut c_void` on success.
-#[inline]
-pub(super) fn ret_void_star(raw: RetReg<R0>) -> io::Result<*mut c::c_void> {
- try_decode_void_star(raw)
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/elf.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/elf.rs
deleted file mode 100644
index 87fb5fa0f..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/elf.rs
+++ /dev/null
@@ -1,176 +0,0 @@
-//! The ELF ABI.
-
-#![allow(non_snake_case)]
-#![cfg_attr(
- all(not(target_vendor = "mustang"), feature = "use-libc-auxv"),
- allow(dead_code)
-)]
-
-pub(super) const SELFMAG: usize = 4;
-pub(super) const ELFMAG: [u8; SELFMAG] = [0x7f, b'E', b'L', b'F'];
-pub(super) const EI_CLASS: usize = 4;
-pub(super) const EI_DATA: usize = 5;
-pub(super) const EI_VERSION: usize = 6;
-pub(super) const EI_OSABI: usize = 7;
-pub(super) const EI_ABIVERSION: usize = 8;
-pub(super) const EV_CURRENT: u8 = 1;
-#[cfg(target_pointer_width = "32")]
-pub(super) const ELFCLASS: u8 = 1; // ELFCLASS32
-#[cfg(target_pointer_width = "64")]
-pub(super) const ELFCLASS: u8 = 2; // ELFCLASS64
-#[cfg(target_endian = "little")]
-pub(super) const ELFDATA: u8 = 1; // ELFDATA2LSB
-#[cfg(target_endian = "big")]
-pub(super) const ELFDATA: u8 = 2; // ELFDATA2MSB
-pub(super) const ELFOSABI_SYSV: u8 = 0;
-pub(super) const ELFOSABI_LINUX: u8 = 3;
-// At present all of our supported platforms use 0.
-pub(super) const ELFABIVERSION: u8 = 0;
-pub(super) const ET_DYN: u16 = 3;
-pub(super) const EI_NIDENT: usize = 16;
-pub(super) const SHN_UNDEF: u16 = 0;
-pub(super) const SHN_ABS: u16 = 0xfff1;
-pub(super) const PN_XNUM: u16 = 0xffff;
-pub(super) const PT_LOAD: u32 = 1;
-pub(super) const PT_DYNAMIC: u32 = 2;
-pub(super) const PT_INTERP: u32 = 3;
-pub(super) const PT_PHDR: u32 = 6;
-pub(super) const PT_TLS: u32 = 7;
-pub(super) const PT_GNU_STACK: u32 = 0x6474_e551;
-pub(super) const PT_GNU_RELRO: u32 = 0x6474_e552;
-pub(super) const PF_X: u32 = 1;
-pub(super) const PF_W: u32 = 2;
-pub(super) const PF_R: u32 = 4;
-pub(super) const DT_NULL: i32 = 0;
-pub(super) const DT_HASH: i32 = 4;
-pub(super) const DT_STRTAB: i32 = 5;
-pub(super) const DT_SYMTAB: i32 = 6;
-pub(super) const DT_SYMENT: i32 = 11;
-pub(super) const DT_VERSYM: i32 = 0x6fff_fff0;
-pub(super) const DT_VERDEF: i32 = 0x6fff_fffc;
-pub(super) const STB_WEAK: u8 = 2;
-pub(super) const STB_GLOBAL: u8 = 1;
-pub(super) const STT_NOTYPE: u8 = 0;
-pub(super) const STT_FUNC: u8 = 2;
-pub(super) const STN_UNDEF: u32 = 0;
-pub(super) const VER_FLG_BASE: u16 = 0x1;
-pub(super) const VER_DEF_CURRENT: u16 = 1;
-pub(super) const STV_DEFAULT: u8 = 0;
-#[cfg(target_arch = "arm")]
-pub(super) const EM_CURRENT: u16 = 40; // EM_ARM
-#[cfg(target_arch = "x86")]
-pub(super) const EM_CURRENT: u16 = 3; // EM_386
-#[cfg(target_arch = "powerpc64")]
-pub(super) const EM_CURRENT: u16 = 21; // EM_PPC64
-#[cfg(any(target_arch = "mips", target_arch = "mips64"))]
-pub(super) const EM_CURRENT: u16 = 8; // EM_MIPS
-#[cfg(target_arch = "x86_64")]
-pub(super) const EM_CURRENT: u16 = 62; // EM_X86_64
-#[cfg(target_arch = "aarch64")]
-pub(super) const EM_CURRENT: u16 = 183; // EM_AARCH64
-#[cfg(target_arch = "riscv64")]
-pub(super) const EM_CURRENT: u16 = 243; // EM_RISCV
-
-#[inline]
-pub(super) const fn ELF_ST_VISIBILITY(o: u8) -> u8 {
- o & 0x03
-}
-
-#[inline]
-pub(super) const fn ELF_ST_BIND(val: u8) -> u8 {
- val >> 4
-}
-
-#[inline]
-pub(super) const fn ELF_ST_TYPE(val: u8) -> u8 {
- val & 0xf
-}
-
-#[repr(C)]
-pub(super) struct Elf_Ehdr {
- pub(super) e_ident: [u8; EI_NIDENT],
- pub(super) e_type: u16,
- pub(super) e_machine: u16,
- pub(super) e_version: u32,
- pub(super) e_entry: usize,
- pub(super) e_phoff: usize,
- pub(super) e_shoff: usize,
- pub(super) e_flags: u32,
- pub(super) e_ehsize: u16,
- pub(super) e_phentsize: u16,
- pub(super) e_phnum: u16,
- pub(super) e_shentsize: u16,
- pub(super) e_shnum: u16,
- pub(super) e_shstrndx: u16,
-}
-
-#[cfg(target_pointer_width = "32")]
-#[repr(C)]
-pub(super) struct Elf_Phdr {
- pub(super) p_type: u32,
- pub(super) p_offset: usize,
- pub(super) p_vaddr: usize,
- pub(super) p_paddr: usize,
- pub(super) p_filesz: usize,
- pub(super) p_memsz: usize,
- pub(super) p_flags: u32,
- pub(super) p_align: usize,
-}
-
-#[cfg(target_pointer_width = "64")]
-#[repr(C)]
-pub(super) struct Elf_Phdr {
- pub(super) p_type: u32,
- pub(super) p_flags: u32,
- pub(super) p_offset: usize,
- pub(super) p_vaddr: usize,
- pub(super) p_paddr: usize,
- pub(super) p_filesz: usize,
- pub(super) p_memsz: usize,
- pub(super) p_align: usize,
-}
-
-#[cfg(target_pointer_width = "32")]
-#[repr(C)]
-pub(super) struct Elf_Sym {
- pub(super) st_name: u32,
- pub(super) st_value: usize,
- pub(super) st_size: usize,
- pub(super) st_info: u8,
- pub(super) st_other: u8,
- pub(super) st_shndx: u16,
-}
-
-#[cfg(target_pointer_width = "64")]
-#[repr(C)]
-pub(super) struct Elf_Sym {
- pub(super) st_name: u32,
- pub(super) st_info: u8,
- pub(super) st_other: u8,
- pub(super) st_shndx: u16,
- pub(super) st_value: usize,
- pub(super) st_size: usize,
-}
-
-#[repr(C)]
-pub(super) struct Elf_Dyn {
- pub(super) d_tag: i32,
- pub(super) d_val: usize,
-}
-
-#[repr(C)]
-pub(super) struct Elf_Verdef {
- pub(super) vd_version: u16,
- pub(super) vd_flags: u16,
- pub(super) vd_ndx: u16,
- pub(super) vd_cnt: u16,
- pub(super) vd_hash: u32,
- pub(super) vd_aux: u32,
- pub(super) vd_next: u32,
-}
-
-#[repr(C)]
-pub(super) struct Elf_Verdaux {
- pub(super) vda_name: u32,
- pub(super) _vda_next: u32,
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/fs/dir.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/fs/dir.rs
deleted file mode 100644
index cfa347d03..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/fs/dir.rs
+++ /dev/null
@@ -1,225 +0,0 @@
-use crate::fd::{AsFd, BorrowedFd, OwnedFd};
-use crate::ffi::{CStr, CString};
-use crate::fs::{
- fcntl_getfl, fstat, fstatfs, fstatvfs, openat, FileType, Mode, OFlags, Stat, StatFs, StatVfs,
-};
-use crate::io;
-use crate::process::fchdir;
-use crate::utils::as_ptr;
-use alloc::borrow::ToOwned;
-use alloc::vec::Vec;
-use core::fmt;
-use core::mem::size_of;
-use linux_raw_sys::general::{linux_dirent64, SEEK_SET};
-
-/// `DIR*`
-pub struct Dir {
- /// The `OwnedFd` that we read directory entries from.
- fd: OwnedFd,
-
- buf: Vec<u8>,
- pos: usize,
- next: Option<u64>,
-}
-
-impl Dir {
- /// Construct a `Dir` that reads entries from the given directory
- /// file descriptor.
- #[inline]
- pub fn read_from<Fd: AsFd>(fd: Fd) -> io::Result<Self> {
- Self::_read_from(fd.as_fd())
- }
-
- #[inline]
- fn _read_from(fd: BorrowedFd<'_>) -> io::Result<Self> {
- let flags = fcntl_getfl(fd)?;
- let fd_for_dir = openat(fd, cstr!("."), flags | OFlags::CLOEXEC, Mode::empty())?;
-
- Ok(Self {
- fd: fd_for_dir,
- buf: Vec::new(),
- pos: 0,
- next: None,
- })
- }
-
- /// `rewinddir(self)`
- #[inline]
- pub fn rewind(&mut self) {
- self.pos = self.buf.len();
- self.next = Some(0);
- }
-
- /// `readdir(self)`, where `None` means the end of the directory.
- pub fn read(&mut self) -> Option<io::Result<DirEntry>> {
- if let Some(next) = self.next.take() {
- match crate::backend::fs::syscalls::_seek(self.fd.as_fd(), next as i64, SEEK_SET) {
- Ok(_) => (),
- Err(err) => return Some(Err(err)),
- }
- }
-
- // Compute linux_dirent64 field offsets.
- let z = linux_dirent64 {
- d_ino: 0_u64,
- d_off: 0_i64,
- d_type: 0_u8,
- d_reclen: 0_u16,
- d_name: Default::default(),
- };
- let base = as_ptr(&z) as usize;
- let offsetof_d_reclen = (as_ptr(&z.d_reclen) as usize) - base;
- let offsetof_d_name = (as_ptr(&z.d_name) as usize) - base;
- let offsetof_d_ino = (as_ptr(&z.d_ino) as usize) - base;
- let offsetof_d_type = (as_ptr(&z.d_type) as usize) - base;
-
- // Test if we need more entries, and if so, read more.
- if self.buf.len() - self.pos < size_of::<linux_dirent64>() {
- match self.read_more()? {
- Ok(()) => (),
- Err(e) => return Some(Err(e)),
- }
- }
-
- // We successfully read an entry. Extract the fields.
- let pos = self.pos;
-
- // Do an unaligned u16 load.
- let d_reclen = u16::from_ne_bytes([
- self.buf[pos + offsetof_d_reclen],
- self.buf[pos + offsetof_d_reclen + 1],
- ]);
- assert!(self.buf.len() - pos >= d_reclen as usize);
- self.pos += d_reclen as usize;
-
- // Read the NUL-terminated name from the `d_name` field. Without
- // `unsafe`, we need to scan for the NUL twice: once to obtain a size
- // for the slice, and then once within `CStr::from_bytes_with_nul`.
- let name_start = pos + offsetof_d_name;
- let name_len = self.buf[name_start..]
- .iter()
- .position(|x| *x == b'\0')
- .unwrap();
- let name =
- CStr::from_bytes_with_nul(&self.buf[name_start..name_start + name_len + 1]).unwrap();
- let name = name.to_owned();
- assert!(name.as_bytes().len() <= self.buf.len() - name_start);
-
- // Do an unaligned u64 load.
- let d_ino = u64::from_ne_bytes([
- self.buf[pos + offsetof_d_ino],
- self.buf[pos + offsetof_d_ino + 1],
- self.buf[pos + offsetof_d_ino + 2],
- self.buf[pos + offsetof_d_ino + 3],
- self.buf[pos + offsetof_d_ino + 4],
- self.buf[pos + offsetof_d_ino + 5],
- self.buf[pos + offsetof_d_ino + 6],
- self.buf[pos + offsetof_d_ino + 7],
- ]);
-
- let d_type = self.buf[pos + offsetof_d_type];
-
- // Check that our types correspond to the `linux_dirent64` types.
- let _ = linux_dirent64 {
- d_ino,
- d_off: 0,
- d_type,
- d_reclen,
- d_name: Default::default(),
- };
-
- Some(Ok(DirEntry {
- d_ino,
- d_type,
- name,
- }))
- }
-
- fn read_more(&mut self) -> Option<io::Result<()>> {
- let og_len = self.buf.len();
- // Capacity increment currently chosen by wild guess.
- self.buf
- .resize(self.buf.capacity() + 32 * size_of::<linux_dirent64>(), 0);
- let nread = match crate::backend::fs::syscalls::getdents(self.fd.as_fd(), &mut self.buf) {
- Ok(nread) => nread,
- Err(err) => {
- self.buf.resize(og_len, 0);
- return Some(Err(err));
- }
- };
- self.buf.resize(nread, 0);
- self.pos = 0;
- if nread == 0 {
- None
- } else {
- Some(Ok(()))
- }
- }
-
- /// `fstat(self)`
- #[inline]
- pub fn stat(&self) -> io::Result<Stat> {
- fstat(&self.fd)
- }
-
- /// `fstatfs(self)`
- #[inline]
- pub fn statfs(&self) -> io::Result<StatFs> {
- fstatfs(&self.fd)
- }
-
- /// `fstatvfs(self)`
- #[inline]
- pub fn statvfs(&self) -> io::Result<StatVfs> {
- fstatvfs(&self.fd)
- }
-
- /// `fchdir(self)`
- #[inline]
- pub fn chdir(&self) -> io::Result<()> {
- fchdir(&self.fd)
- }
-}
-
-impl Iterator for Dir {
- type Item = io::Result<DirEntry>;
-
- #[inline]
- fn next(&mut self) -> Option<Self::Item> {
- Self::read(self)
- }
-}
-
-impl fmt::Debug for Dir {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.debug_struct("Dir").field("fd", &self.fd).finish()
- }
-}
-
-/// `struct dirent`
-#[derive(Debug)]
-pub struct DirEntry {
- d_ino: u64,
- d_type: u8,
- name: CString,
-}
-
-impl DirEntry {
- /// Returns the file name of this directory entry.
- #[inline]
- pub fn file_name(&self) -> &CStr {
- &self.name
- }
-
- /// Returns the type of this directory entry.
- #[inline]
- pub fn file_type(&self) -> FileType {
- FileType::from_dirent_d_type(self.d_type)
- }
-
- /// Return the inode number of this directory entry.
- #[inline]
- pub fn ino(&self) -> u64 {
- self.d_ino
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/fs/inotify.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/fs/inotify.rs
deleted file mode 100644
index 4221565a6..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/fs/inotify.rs
+++ /dev/null
@@ -1,108 +0,0 @@
-//! inotify support for working with inotifies
-
-use super::super::c;
-use crate::backend::fs::syscalls;
-use crate::fd::{BorrowedFd, OwnedFd};
-use crate::io;
-use bitflags::bitflags;
-
-bitflags! {
- /// `IN_*` for use with [`inotify_init`].
- ///
- /// [`inotify_init`]: crate::fs::inotify::inotify_init
- pub struct CreateFlags: c::c_uint {
- /// `IN_CLOEXEC`
- const CLOEXEC = linux_raw_sys::general::IN_CLOEXEC;
- /// `IN_NONBLOCK`
- const NONBLOCK = linux_raw_sys::general::IN_NONBLOCK;
- }
-}
-
-bitflags! {
- /// `IN*` for use with [`inotify_add_watch`].
- ///
- /// [`inotify_add_watch`]: crate::fs::inotify::inotify_add_watch
- #[derive(Default)]
- pub struct WatchFlags: c::c_uint {
- /// `IN_ACCESS`
- const ACCESS = linux_raw_sys::general::IN_ACCESS;
- /// `IN_ATTRIB`
- const ATTRIB = linux_raw_sys::general::IN_ATTRIB;
- /// `IN_CLOSE_NOWRITE`
- const CLOSE_NOWRITE = linux_raw_sys::general::IN_CLOSE_NOWRITE;
- /// `IN_CLOSE_WRITE`
- const CLOSE_WRITE = linux_raw_sys::general::IN_CLOSE_WRITE;
- /// `IN_CREATE `
- const CREATE = linux_raw_sys::general::IN_CREATE;
- /// `IN_DELETE`
- const DELETE = linux_raw_sys::general::IN_DELETE;
- /// `IN_DELETE_SELF`
- const DELETE_SELF = linux_raw_sys::general::IN_DELETE_SELF;
- /// `IN_MODIFY`
- const MODIFY = linux_raw_sys::general::IN_MODIFY;
- /// `IN_MOVE_SELF`
- const MOVE_SELF = linux_raw_sys::general::IN_MOVE_SELF;
- /// `IN_MOVED_FROM`
- const MOVED_FROM = linux_raw_sys::general::IN_MOVED_FROM;
- /// `IN_MOVED_TO`
- const MOVED_TO = linux_raw_sys::general::IN_MOVED_TO;
- /// `IN_OPEN`
- const OPEN = linux_raw_sys::general::IN_OPEN;
-
- /// `IN_CLOSE`
- const CLOSE = linux_raw_sys::general::IN_CLOSE;
- /// `IN_MOVE`
- const MOVE = linux_raw_sys::general::IN_MOVE;
- /// `IN_ALL_EVENTS`
- const ALL_EVENTS = linux_raw_sys::general::IN_ALL_EVENTS;
-
- /// `IN_DONT_FOLLOW`
- const DONT_FOLLOW = linux_raw_sys::general::IN_DONT_FOLLOW;
- /// `IN_EXCL_UNLINK`
- const EXCL_UNLINK = linux_raw_sys::general::IN_EXCL_UNLINK;
- /// `IN_MASK_ADD`
- const MASK_ADD = linux_raw_sys::general::IN_MASK_ADD;
- /// `IN_MASK_CREATE`
- const MASK_CREATE = linux_raw_sys::general::IN_MASK_CREATE;
- /// `IN_ONESHOT`
- const ONESHOT = linux_raw_sys::general::IN_ONESHOT;
- /// `IN_ONLYDIR`
- const ONLYDIR = linux_raw_sys::general::IN_ONLYDIR;
- }
-}
-
-/// `inotify_init1(flags)`—Creates a new inotify object.
-///
-/// Use the [`CreateFlags::CLOEXEC`] flag to prevent the resulting file
-/// descriptor from being implicitly passed across `exec` boundaries.
-#[doc(alias = "inotify_init1")]
-pub fn inotify_init(flags: CreateFlags) -> io::Result<OwnedFd> {
- syscalls::inotify_init1(flags)
-}
-
-/// `inotify_add_watch(self, path, flags)`—Adds a watch to inotify
-///
-/// This registers or updates a watch for the filesystem path `path`
-/// and returns a watch descriptor corresponding to this watch.
-///
-/// Note: Due to the existence of hardlinks, providing two
-/// different paths to this method may result in it returning
-/// the same watch descriptor. An application should keep track of this
-/// externally to avoid logic errors.
-pub fn inotify_add_watch<P: crate::path::Arg>(
- inot: BorrowedFd<'_>,
- path: P,
- flags: WatchFlags,
-) -> io::Result<i32> {
- let path = path.as_cow_c_str().unwrap();
- syscalls::inotify_add_watch(inot, &path, flags)
-}
-
-/// `inotify_rm_watch(self, wd)`—Removes a watch from this inotify
-///
-/// The watch descriptor provided should have previously been returned
-/// by [`inotify_add_watch`] and not previously have been removed.
-#[doc(alias = "inotify_rm_watch")]
-pub fn inotify_remove_watch(inot: BorrowedFd<'_>, wd: i32) -> io::Result<()> {
- syscalls::inotify_rm_watch(inot, wd)
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/fs/makedev.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/fs/makedev.rs
deleted file mode 100644
index 284ba2f10..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/fs/makedev.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-use crate::fs::Dev;
-
-#[inline]
-pub(crate) fn makedev(maj: u32, min: u32) -> Dev {
- ((u64::from(maj) & 0xffff_f000_u64) << 32)
- | ((u64::from(maj) & 0x0000_0fff_u64) << 8)
- | ((u64::from(min) & 0xffff_ff00_u64) << 12)
- | (u64::from(min) & 0x0000_00ff_u64)
-}
-
-#[inline]
-pub(crate) fn major(dev: Dev) -> u32 {
- (((dev >> 31 >> 1) & 0xffff_f000) | ((dev >> 8) & 0x0000_0fff)) as u32
-}
-
-#[inline]
-pub(crate) fn minor(dev: Dev) -> u32 {
- (((dev >> 12) & 0xffff_ff00) | (dev & 0x0000_00ff)) as u32
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/fs/mod.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/fs/mod.rs
deleted file mode 100644
index acf43ce4f..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/fs/mod.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-pub(crate) mod dir;
-pub mod inotify;
-pub(crate) mod makedev;
-pub(crate) mod syscalls;
-pub(crate) mod types;
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/fs/syscalls.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/fs/syscalls.rs
deleted file mode 100644
index 8bd9ccc27..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/fs/syscalls.rs
+++ /dev/null
@@ -1,1512 +0,0 @@
-//! linux_raw syscalls supporting `rustix::fs`.
-//!
-//! # Safety
-//!
-//! See the `rustix::backend` module documentation for details.
-#![allow(unsafe_code)]
-#![allow(dead_code)]
-#![allow(clippy::undocumented_unsafe_blocks)]
-
-use super::super::c;
-use super::super::conv::{
- by_ref, c_int, c_uint, dev_t, oflags_for_open_how, opt_mut, pass_usize, raw_fd, ret, ret_c_int,
- ret_c_uint, ret_infallible, ret_owned_fd, ret_usize, size_of, slice_mut, zero,
-};
-#[cfg(target_pointer_width = "64")]
-use super::super::conv::{loff_t, loff_t_from_u64, ret_u64};
-#[cfg(any(
- target_arch = "aarch64",
- target_arch = "riscv64",
- target_arch = "mips64",
- target_pointer_width = "32",
-))]
-use crate::fd::AsFd;
-use crate::fd::{BorrowedFd, OwnedFd};
-use crate::ffi::CStr;
-use crate::fs::{
- inotify, Access, Advice, AtFlags, FallocateFlags, FileType, FlockOperation, MemfdFlags, Mode,
- OFlags, RenameFlags, ResolveFlags, SealFlags, Stat, StatFs, StatVfs, StatVfsMountFlags,
- StatxFlags, Timestamps,
-};
-use crate::io::{self, SeekFrom};
-use crate::process::{Gid, Uid};
-#[cfg(any(target_pointer_width = "32", target_arch = "mips64"))]
-use core::convert::TryInto;
-use core::mem::MaybeUninit;
-#[cfg(target_arch = "mips64")]
-use linux_raw_sys::general::stat as linux_stat64;
-use linux_raw_sys::general::{
- __kernel_fsid_t, __kernel_timespec, open_how, statx, AT_EACCESS, AT_FDCWD, AT_REMOVEDIR,
- AT_SYMLINK_NOFOLLOW, F_ADD_SEALS, F_GETFL, F_GETLEASE, F_GETOWN, F_GETPIPE_SZ, F_GETSIG,
- F_GET_SEALS, F_SETFL, F_SETPIPE_SZ, SEEK_CUR, SEEK_DATA, SEEK_END, SEEK_HOLE, SEEK_SET,
- STATX__RESERVED,
-};
-#[cfg(target_pointer_width = "32")]
-use {
- super::super::conv::{hi, lo, slice_just_addr},
- linux_raw_sys::general::stat64 as linux_stat64,
- linux_raw_sys::general::timespec as __kernel_old_timespec,
-};
-
-#[inline]
-pub(crate) fn open(filename: &CStr, flags: OFlags, mode: Mode) -> io::Result<OwnedFd> {
- #[cfg(any(target_arch = "aarch64", target_arch = "riscv64"))]
- {
- openat(crate::fs::cwd().as_fd(), filename, flags, mode)
- }
- #[cfg(all(
- target_pointer_width = "32",
- not(any(target_arch = "aarch64", target_arch = "riscv64")),
- ))]
- unsafe {
- ret_owned_fd(syscall_readonly!(__NR_open, filename, flags, mode))
- }
- #[cfg(all(
- target_pointer_width = "64",
- not(any(target_arch = "aarch64", target_arch = "riscv64")),
- ))]
- unsafe {
- ret_owned_fd(syscall_readonly!(__NR_open, filename, flags, mode))
- }
-}
-
-#[inline]
-pub(crate) fn openat(
- dirfd: BorrowedFd<'_>,
- filename: &CStr,
- flags: OFlags,
- mode: Mode,
-) -> io::Result<OwnedFd> {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret_owned_fd(syscall_readonly!(__NR_openat, dirfd, filename, flags, mode))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret_owned_fd(syscall_readonly!(__NR_openat, dirfd, filename, flags, mode))
- }
-}
-
-#[inline]
-pub(crate) fn openat2(
- dirfd: BorrowedFd<'_>,
- pathname: &CStr,
- flags: OFlags,
- mode: Mode,
- resolve: ResolveFlags,
-) -> io::Result<OwnedFd> {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret_owned_fd(syscall_readonly!(
- __NR_openat2,
- dirfd,
- pathname,
- by_ref(&open_how {
- flags: oflags_for_open_how(flags),
- mode: u64::from(mode.bits()),
- resolve: resolve.bits(),
- }),
- size_of::<open_how, _>()
- ))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret_owned_fd(syscall_readonly!(
- __NR_openat2,
- dirfd,
- pathname,
- by_ref(&open_how {
- flags: oflags_for_open_how(flags),
- mode: u64::from(mode.bits()),
- resolve: resolve.bits(),
- }),
- size_of::<open_how, _>()
- ))
- }
-}
-
-#[inline]
-pub(crate) fn chmod(filename: &CStr, mode: Mode) -> io::Result<()> {
- unsafe {
- ret(syscall_readonly!(
- __NR_fchmodat,
- raw_fd(AT_FDCWD),
- filename,
- mode
- ))
- }
-}
-
-#[inline]
-pub(crate) fn chmodat(
- dirfd: BorrowedFd<'_>,
- filename: &CStr,
- mode: Mode,
- flags: AtFlags,
-) -> io::Result<()> {
- if flags == AtFlags::SYMLINK_NOFOLLOW {
- return Err(io::Errno::OPNOTSUPP);
- }
- if !flags.is_empty() {
- return Err(io::Errno::INVAL);
- }
- unsafe { ret(syscall_readonly!(__NR_fchmodat, dirfd, filename, mode)) }
-}
-
-#[inline]
-pub(crate) fn fchmod(fd: BorrowedFd<'_>, mode: Mode) -> io::Result<()> {
- unsafe { ret(syscall_readonly!(__NR_fchmod, fd, mode)) }
-}
-
-#[inline]
-pub(crate) fn chownat(
- dirfd: BorrowedFd<'_>,
- filename: &CStr,
- owner: Option<Uid>,
- group: Option<Gid>,
- flags: AtFlags,
-) -> io::Result<()> {
- unsafe {
- let (ow, gr) = crate::process::translate_fchown_args(owner, group);
- ret(syscall_readonly!(
- __NR_fchownat,
- dirfd,
- filename,
- c_uint(ow),
- c_uint(gr),
- flags
- ))
- }
-}
-
-#[inline]
-pub(crate) fn fchown(fd: BorrowedFd<'_>, owner: Option<Uid>, group: Option<Gid>) -> io::Result<()> {
- unsafe {
- let (ow, gr) = crate::process::translate_fchown_args(owner, group);
- ret(syscall_readonly!(__NR_fchown, fd, c_uint(ow), c_uint(gr)))
- }
-}
-
-#[inline]
-pub(crate) fn mknodat(
- dirfd: BorrowedFd<'_>,
- filename: &CStr,
- file_type: FileType,
- mode: Mode,
- dev: u64,
-) -> io::Result<()> {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret(syscall_readonly!(
- __NR_mknodat,
- dirfd,
- filename,
- (mode, file_type),
- dev_t(dev)?
- ))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret(syscall_readonly!(
- __NR_mknodat,
- dirfd,
- filename,
- (mode, file_type),
- dev_t(dev)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn seek(fd: BorrowedFd<'_>, pos: SeekFrom) -> io::Result<u64> {
- let (whence, offset) = match pos {
- SeekFrom::Start(pos) => {
- let pos: u64 = pos;
- // Silently cast; we'll get `EINVAL` if the value is negative.
- (SEEK_SET, pos as i64)
- }
- SeekFrom::End(offset) => (SEEK_END, offset),
- SeekFrom::Current(offset) => (SEEK_CUR, offset),
- #[cfg(any(freebsdlike, target_os = "linux", target_os = "solaris"))]
- SeekFrom::Data(offset) => (SEEK_DATA, offset),
- #[cfg(any(freebsdlike, target_os = "linux", target_os = "solaris"))]
- SeekFrom::Hole(offset) => (SEEK_HOLE, offset),
- };
- _seek(fd, offset, whence)
-}
-
-#[inline]
-pub(crate) fn _seek(fd: BorrowedFd<'_>, offset: i64, whence: c::c_uint) -> io::Result<u64> {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- let mut result = MaybeUninit::<u64>::uninit();
- ret(syscall!(
- __NR__llseek,
- fd,
- // Don't use the hi/lo functions here because Linux's llseek
- // takes its 64-bit argument differently from everything else.
- pass_usize((offset >> 32) as usize),
- pass_usize(offset as usize),
- &mut result,
- c_uint(whence)
- ))?;
- Ok(result.assume_init())
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret_u64(syscall_readonly!(
- __NR_lseek,
- fd,
- loff_t(offset),
- c_uint(whence)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn tell(fd: BorrowedFd<'_>) -> io::Result<u64> {
- _seek(fd, 0, SEEK_CUR).map(|x| x as u64)
-}
-
-#[inline]
-pub(crate) fn ftruncate(fd: BorrowedFd<'_>, length: u64) -> io::Result<()> {
- // <https://github.com/torvalds/linux/blob/fcadab740480e0e0e9fa9bd272acd409884d431a/arch/arm64/kernel/sys32.c#L81-L83>
- #[cfg(all(
- target_pointer_width = "32",
- any(target_arch = "arm", target_arch = "mips", target_arch = "powerpc"),
- ))]
- unsafe {
- ret(syscall_readonly!(
- __NR_ftruncate64,
- fd,
- zero(),
- hi(length),
- lo(length)
- ))
- }
- #[cfg(all(
- target_pointer_width = "32",
- not(any(target_arch = "arm", target_arch = "mips", target_arch = "powerpc")),
- ))]
- unsafe {
- ret(syscall_readonly!(
- __NR_ftruncate64,
- fd,
- hi(length),
- lo(length)
- ))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret(syscall_readonly!(
- __NR_ftruncate,
- fd,
- loff_t_from_u64(length)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn fallocate(
- fd: BorrowedFd<'_>,
- mode: FallocateFlags,
- offset: u64,
- len: u64,
-) -> io::Result<()> {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret(syscall_readonly!(
- __NR_fallocate,
- fd,
- mode,
- hi(offset),
- lo(offset),
- hi(len),
- lo(len)
- ))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret(syscall_readonly!(
- __NR_fallocate,
- fd,
- mode,
- loff_t_from_u64(offset),
- loff_t_from_u64(len)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn fadvise(fd: BorrowedFd<'_>, pos: u64, len: u64, advice: Advice) -> io::Result<()> {
- // On ARM, the arguments are reordered so that the len and pos argument
- // pairs are aligned. And ARM has a custom syscall code for this.
- #[cfg(target_arch = "arm")]
- unsafe {
- ret(syscall_readonly!(
- __NR_arm_fadvise64_64,
- fd,
- advice,
- hi(pos),
- lo(pos),
- hi(len),
- lo(len)
- ))
- }
-
- // On powerpc, the arguments are reordered as on ARM.
- #[cfg(target_arch = "powerpc")]
- unsafe {
- ret(syscall_readonly!(
- __NR_fadvise64_64,
- fd,
- advice,
- hi(pos),
- lo(pos),
- hi(len),
- lo(len)
- ))
- }
- // On mips, the arguments are not reordered, and padding is inserted
- // instead to ensure alignment.
- #[cfg(target_arch = "mips")]
- unsafe {
- ret(syscall_readonly!(
- __NR_fadvise64,
- fd,
- zero(),
- hi(pos),
- lo(pos),
- hi(len),
- lo(len),
- advice
- ))
- }
- #[cfg(all(
- target_pointer_width = "32",
- not(any(target_arch = "arm", target_arch = "mips", target_arch = "powerpc")),
- ))]
- unsafe {
- ret(syscall_readonly!(
- __NR_fadvise64_64,
- fd,
- hi(pos),
- lo(pos),
- hi(len),
- lo(len),
- advice
- ))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret(syscall_readonly!(
- __NR_fadvise64,
- fd,
- loff_t_from_u64(pos),
- loff_t_from_u64(len),
- advice
- ))
- }
-}
-
-#[inline]
-pub(crate) fn fsync(fd: BorrowedFd<'_>) -> io::Result<()> {
- unsafe { ret(syscall_readonly!(__NR_fsync, fd)) }
-}
-
-#[inline]
-pub(crate) fn fdatasync(fd: BorrowedFd<'_>) -> io::Result<()> {
- unsafe { ret(syscall_readonly!(__NR_fdatasync, fd)) }
-}
-
-#[inline]
-pub(crate) fn flock(fd: BorrowedFd<'_>, operation: FlockOperation) -> io::Result<()> {
- unsafe {
- ret(syscall_readonly!(
- __NR_flock,
- fd,
- c_uint(operation as c::c_uint)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn syncfs(fd: BorrowedFd<'_>) -> io::Result<()> {
- unsafe { ret(syscall_readonly!(__NR_syncfs, fd)) }
-}
-
-#[inline]
-pub(crate) fn sync() {
- unsafe { ret_infallible(syscall_readonly!(__NR_sync)) }
-}
-
-#[inline]
-pub(crate) fn fstat(fd: BorrowedFd<'_>) -> io::Result<Stat> {
- #[cfg(any(target_pointer_width = "32", target_arch = "mips64"))]
- {
- match statx(fd, cstr!(""), AtFlags::EMPTY_PATH, StatxFlags::BASIC_STATS) {
- Ok(x) => statx_to_stat(x),
- Err(io::Errno::NOSYS) => fstat_old(fd),
- Err(err) => Err(err),
- }
- }
-
- #[cfg(all(target_pointer_width = "64", not(target_arch = "mips64")))]
- unsafe {
- let mut result = MaybeUninit::<Stat>::uninit();
- ret(syscall!(__NR_fstat, fd, &mut result))?;
- Ok(result.assume_init())
- }
-}
-
-#[cfg(any(target_pointer_width = "32", target_arch = "mips64"))]
-fn fstat_old(fd: BorrowedFd<'_>) -> io::Result<Stat> {
- let mut result = MaybeUninit::<linux_stat64>::uninit();
-
- #[cfg(target_arch = "mips64")]
- unsafe {
- ret(syscall!(__NR_fstat, fd, &mut result))?;
- stat_to_stat(result.assume_init())
- }
-
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret(syscall!(__NR_fstat64, fd, &mut result))?;
- stat_to_stat(result.assume_init())
- }
-}
-
-#[inline]
-pub(crate) fn stat(filename: &CStr) -> io::Result<Stat> {
- #[cfg(any(target_pointer_width = "32", target_arch = "mips64"))]
- {
- match statx(
- crate::fs::cwd().as_fd(),
- filename,
- AtFlags::empty(),
- StatxFlags::BASIC_STATS,
- ) {
- Ok(x) => statx_to_stat(x),
- Err(io::Errno::NOSYS) => stat_old(filename),
- Err(err) => Err(err),
- }
- }
-
- #[cfg(all(target_pointer_width = "64", not(target_arch = "mips64")))]
- unsafe {
- let mut result = MaybeUninit::<Stat>::uninit();
- ret(syscall!(
- __NR_newfstatat,
- raw_fd(AT_FDCWD),
- filename,
- &mut result,
- c_uint(0)
- ))?;
- Ok(result.assume_init())
- }
-}
-
-#[cfg(any(target_pointer_width = "32", target_arch = "mips64"))]
-fn stat_old(filename: &CStr) -> io::Result<Stat> {
- let mut result = MaybeUninit::<linux_stat64>::uninit();
-
- #[cfg(target_arch = "mips64")]
- unsafe {
- ret(syscall!(
- __NR_newfstatat,
- raw_fd(AT_FDCWD),
- filename,
- &mut result,
- c_uint(0)
- ))?;
- stat_to_stat(result.assume_init())
- }
-
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret(syscall!(
- __NR_fstatat64,
- raw_fd(AT_FDCWD),
- filename,
- &mut result,
- c_uint(0)
- ))?;
- stat_to_stat(result.assume_init())
- }
-}
-
-#[inline]
-pub(crate) fn statat(dirfd: BorrowedFd<'_>, filename: &CStr, flags: AtFlags) -> io::Result<Stat> {
- #[cfg(any(target_pointer_width = "32", target_arch = "mips64"))]
- {
- match statx(dirfd, filename, flags, StatxFlags::BASIC_STATS) {
- Ok(x) => statx_to_stat(x),
- Err(io::Errno::NOSYS) => statat_old(dirfd, filename, flags),
- Err(err) => Err(err),
- }
- }
-
- #[cfg(all(target_pointer_width = "64", not(target_arch = "mips64")))]
- unsafe {
- let mut result = MaybeUninit::<Stat>::uninit();
- ret(syscall!(
- __NR_newfstatat,
- dirfd,
- filename,
- &mut result,
- flags
- ))?;
- Ok(result.assume_init())
- }
-}
-
-#[cfg(any(target_pointer_width = "32", target_arch = "mips64"))]
-fn statat_old(dirfd: BorrowedFd<'_>, filename: &CStr, flags: AtFlags) -> io::Result<Stat> {
- let mut result = MaybeUninit::<linux_stat64>::uninit();
-
- #[cfg(target_arch = "mips64")]
- unsafe {
- ret(syscall!(
- __NR_newfstatat,
- dirfd,
- filename,
- &mut result,
- flags
- ))?;
- stat_to_stat(result.assume_init())
- }
-
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret(syscall!(
- __NR_fstatat64,
- dirfd,
- filename,
- &mut result,
- flags
- ))?;
- stat_to_stat(result.assume_init())
- }
-}
-
-#[inline]
-pub(crate) fn lstat(filename: &CStr) -> io::Result<Stat> {
- #[cfg(any(target_pointer_width = "32", target_arch = "mips64"))]
- {
- match statx(
- crate::fs::cwd().as_fd(),
- filename,
- AtFlags::SYMLINK_NOFOLLOW,
- StatxFlags::BASIC_STATS,
- ) {
- Ok(x) => statx_to_stat(x),
- Err(io::Errno::NOSYS) => lstat_old(filename),
- Err(err) => Err(err),
- }
- }
-
- #[cfg(all(target_pointer_width = "64", not(target_arch = "mips64")))]
- unsafe {
- let mut result = MaybeUninit::<Stat>::uninit();
- ret(syscall!(
- __NR_newfstatat,
- raw_fd(AT_FDCWD),
- filename,
- &mut result,
- c_uint(AT_SYMLINK_NOFOLLOW)
- ))?;
- Ok(result.assume_init())
- }
-}
-
-#[cfg(any(target_pointer_width = "32", target_arch = "mips64"))]
-fn lstat_old(filename: &CStr) -> io::Result<Stat> {
- let mut result = MaybeUninit::<linux_stat64>::uninit();
-
- #[cfg(target_arch = "mips64")]
- unsafe {
- ret(syscall!(
- __NR_newfstatat,
- raw_fd(AT_FDCWD),
- filename,
- &mut result,
- c_uint(AT_SYMLINK_NOFOLLOW)
- ))?;
- stat_to_stat(result.assume_init())
- }
-
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret(syscall!(
- __NR_fstatat64,
- raw_fd(AT_FDCWD),
- filename,
- &mut result,
- c_uint(AT_SYMLINK_NOFOLLOW)
- ))?;
- stat_to_stat(result.assume_init())
- }
-}
-
-/// Convert from a Linux `statx` value to rustix's `Stat`.
-#[cfg(any(target_pointer_width = "32", target_arch = "mips64"))]
-fn statx_to_stat(x: crate::fs::Statx) -> io::Result<Stat> {
- Ok(Stat {
- st_dev: crate::fs::makedev(x.stx_dev_major, x.stx_dev_minor),
- st_mode: x.stx_mode.into(),
- st_nlink: x.stx_nlink.into(),
- st_uid: x.stx_uid.into(),
- st_gid: x.stx_gid.into(),
- st_rdev: crate::fs::makedev(x.stx_rdev_major, x.stx_rdev_minor),
- st_size: x.stx_size.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_blksize: x.stx_blksize.into(),
- st_blocks: x.stx_blocks.into(),
- st_atime: x
- .stx_atime
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- st_atime_nsec: x.stx_atime.tv_nsec.into(),
- st_mtime: x
- .stx_mtime
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- st_mtime_nsec: x.stx_mtime.tv_nsec.into(),
- st_ctime: x
- .stx_ctime
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- st_ctime_nsec: x.stx_ctime.tv_nsec.into(),
- st_ino: x.stx_ino.into(),
- })
-}
-
-/// Convert from a Linux `stat64` value to rustix's `Stat`.
-#[cfg(target_pointer_width = "32")]
-fn stat_to_stat(s64: linux_raw_sys::general::stat64) -> io::Result<Stat> {
- Ok(Stat {
- st_dev: s64.st_dev.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_mode: s64.st_mode.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_nlink: s64.st_nlink.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_uid: s64.st_uid.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_gid: s64.st_gid.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_rdev: s64.st_rdev.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_size: s64.st_size.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_blksize: s64.st_blksize.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_blocks: s64.st_blocks.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_atime: s64.st_atime.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_atime_nsec: s64
- .st_atime_nsec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- st_mtime: s64.st_mtime.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_mtime_nsec: s64
- .st_mtime_nsec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- st_ctime: s64.st_ctime.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_ctime_nsec: s64
- .st_ctime_nsec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- st_ino: s64.st_ino.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- })
-}
-
-/// Convert from a Linux `stat` value to rustix's `Stat`.
-#[cfg(target_arch = "mips64")]
-fn stat_to_stat(s: linux_raw_sys::general::stat) -> io::Result<Stat> {
- Ok(Stat {
- st_dev: s.st_dev.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_mode: s.st_mode.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_nlink: s.st_nlink.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_uid: s.st_uid.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_gid: s.st_gid.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_rdev: s.st_rdev.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_size: s.st_size.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_blksize: s.st_blksize.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_blocks: s.st_blocks.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_atime: s.st_atime.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_atime_nsec: s
- .st_atime_nsec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- st_mtime: s.st_mtime.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_mtime_nsec: s
- .st_mtime_nsec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- st_ctime: s.st_ctime.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- st_ctime_nsec: s
- .st_ctime_nsec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- st_ino: s.st_ino.try_into().map_err(|_| io::Errno::OVERFLOW)?,
- })
-}
-
-#[inline]
-pub(crate) fn statx(
- dirfd: BorrowedFd<'_>,
- pathname: &CStr,
- flags: AtFlags,
- mask: StatxFlags,
-) -> io::Result<statx> {
- // If a future Linux kernel adds more fields to `struct statx` and users
- // passing flags unknown to rustix in `StatxFlags`, we could end up
- // writing outside of the buffer. To prevent this possibility, we mask off
- // any flags that we don't know about.
- //
- // This includes `STATX__RESERVED`, which has a value that we know, but
- // which could take on arbitrary new meaning in the future. Linux currently
- // rejects this flag with `EINVAL`, so we do the same.
- //
- // This doesn't rely on `STATX_ALL` because [it's deprecated] and already
- // doesn't represent all the known flags.
- //
- // [it's deprecated]: https://patchwork.kernel.org/project/linux-fsdevel/patch/20200505095915.11275-7-mszeredi@redhat.com/
- if (mask.bits() & STATX__RESERVED) == STATX__RESERVED {
- return Err(io::Errno::INVAL);
- }
- let mask = mask & StatxFlags::all();
-
- unsafe {
- let mut statx_buf = MaybeUninit::<statx>::uninit();
- ret(syscall!(
- __NR_statx,
- dirfd,
- pathname,
- flags,
- mask,
- &mut statx_buf
- ))?;
- Ok(statx_buf.assume_init())
- }
-}
-
-#[inline]
-pub(crate) fn is_statx_available() -> bool {
- unsafe {
- // Call `statx` with null pointers so that if it fails for any reason
- // other than `EFAULT`, we know it's not supported.
- matches!(
- ret(syscall!(
- __NR_statx,
- raw_fd(AT_FDCWD),
- zero(),
- zero(),
- zero(),
- zero()
- )),
- Err(io::Errno::FAULT)
- )
- }
-}
-
-#[inline]
-pub(crate) fn fstatfs(fd: BorrowedFd<'_>) -> io::Result<StatFs> {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- let mut result = MaybeUninit::<StatFs>::uninit();
- ret(syscall!(
- __NR_fstatfs64,
- fd,
- size_of::<StatFs, _>(),
- &mut result
- ))?;
- Ok(result.assume_init())
- }
-
- #[cfg(target_pointer_width = "64")]
- unsafe {
- let mut result = MaybeUninit::<StatFs>::uninit();
- ret(syscall!(__NR_fstatfs, fd, &mut result))?;
- Ok(result.assume_init())
- }
-}
-
-#[inline]
-pub(crate) fn fstatvfs(fd: BorrowedFd<'_>) -> io::Result<StatVfs> {
- // Linux doesn't have an `fstatvfs` syscall; we have to do `fstatfs` and
- // translate the fields as best we can.
- let statfs = fstatfs(fd)?;
-
- Ok(statfs_to_statvfs(statfs))
-}
-
-#[inline]
-pub(crate) fn statfs(filename: &CStr) -> io::Result<StatFs> {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- let mut result = MaybeUninit::<StatFs>::uninit();
- ret(syscall!(
- __NR_statfs64,
- filename,
- size_of::<StatFs, _>(),
- &mut result
- ))?;
- Ok(result.assume_init())
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- let mut result = MaybeUninit::<StatFs>::uninit();
- ret(syscall!(__NR_statfs, filename, &mut result))?;
- Ok(result.assume_init())
- }
-}
-
-#[inline]
-pub(crate) fn statvfs(filename: &CStr) -> io::Result<StatVfs> {
- // Linux doesn't have a `statvfs` syscall; we have to do `statfs` and
- // translate the fields as best we can.
- let statfs = statfs(filename)?;
-
- Ok(statfs_to_statvfs(statfs))
-}
-
-fn statfs_to_statvfs(statfs: StatFs) -> StatVfs {
- let __kernel_fsid_t { val } = statfs.f_fsid;
- let [f_fsid_val0, f_fsid_val1]: [i32; 2] = val;
-
- StatVfs {
- f_bsize: statfs.f_bsize as u64,
- f_frsize: if statfs.f_frsize != 0 {
- statfs.f_frsize
- } else {
- statfs.f_bsize
- } as u64,
- f_blocks: statfs.f_blocks as u64,
- f_bfree: statfs.f_bfree as u64,
- f_bavail: statfs.f_bavail as u64,
- f_files: statfs.f_files as u64,
- f_ffree: statfs.f_ffree as u64,
- f_favail: statfs.f_ffree as u64,
- f_fsid: f_fsid_val0 as u32 as u64 | ((f_fsid_val1 as u32 as u64) << 32),
- f_flag: unsafe { StatVfsMountFlags::from_bits_unchecked(statfs.f_flags as u64) },
- f_namemax: statfs.f_namelen as u64,
- }
-}
-
-#[inline]
-pub(crate) fn readlink(path: &CStr, buf: &mut [u8]) -> io::Result<usize> {
- let (buf_addr_mut, buf_len) = slice_mut(buf);
- unsafe {
- ret_usize(syscall!(
- __NR_readlinkat,
- raw_fd(AT_FDCWD),
- path,
- buf_addr_mut,
- buf_len
- ))
- }
-}
-
-#[inline]
-pub(crate) fn readlinkat(dirfd: BorrowedFd<'_>, path: &CStr, buf: &mut [u8]) -> io::Result<usize> {
- let (buf_addr_mut, buf_len) = slice_mut(buf);
- unsafe {
- ret_usize(syscall!(
- __NR_readlinkat,
- dirfd,
- path,
- buf_addr_mut,
- buf_len
- ))
- }
-}
-
-#[inline]
-pub(crate) fn fcntl_getfl(fd: BorrowedFd<'_>) -> io::Result<OFlags> {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret_c_uint(syscall_readonly!(__NR_fcntl64, fd, c_uint(F_GETFL)))
- .map(OFlags::from_bits_truncate)
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret_c_uint(syscall_readonly!(__NR_fcntl, fd, c_uint(F_GETFL)))
- .map(OFlags::from_bits_truncate)
- }
-}
-
-#[inline]
-pub(crate) fn fcntl_setfl(fd: BorrowedFd<'_>, flags: OFlags) -> io::Result<()> {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret(syscall_readonly!(__NR_fcntl64, fd, c_uint(F_SETFL), flags))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret(syscall_readonly!(__NR_fcntl, fd, c_uint(F_SETFL), flags))
- }
-}
-
-#[inline]
-pub(crate) fn fcntl_getlease(fd: BorrowedFd<'_>) -> io::Result<c::c_int> {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret_c_int(syscall_readonly!(__NR_fcntl64, fd, c_uint(F_GETLEASE)))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret_c_int(syscall_readonly!(__NR_fcntl, fd, c_uint(F_GETLEASE)))
- }
-}
-
-#[inline]
-pub(crate) fn fcntl_getown(fd: BorrowedFd<'_>) -> io::Result<c::c_int> {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret_c_int(syscall_readonly!(__NR_fcntl64, fd, c_uint(F_GETOWN)))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret_c_int(syscall_readonly!(__NR_fcntl, fd, c_uint(F_GETOWN)))
- }
-}
-
-#[inline]
-pub(crate) fn fcntl_getsig(fd: BorrowedFd<'_>) -> io::Result<c::c_int> {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret_c_int(syscall_readonly!(__NR_fcntl64, fd, c_uint(F_GETSIG)))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret_c_int(syscall_readonly!(__NR_fcntl, fd, c_uint(F_GETSIG)))
- }
-}
-
-#[inline]
-pub(crate) fn fcntl_getpipe_sz(fd: BorrowedFd<'_>) -> io::Result<usize> {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret_usize(syscall_readonly!(__NR_fcntl64, fd, c_uint(F_GETPIPE_SZ)))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret_usize(syscall_readonly!(__NR_fcntl, fd, c_uint(F_GETPIPE_SZ)))
- }
-}
-
-#[inline]
-pub(crate) fn fcntl_setpipe_sz(fd: BorrowedFd<'_>, size: c::c_int) -> io::Result<usize> {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret_usize(syscall_readonly!(
- __NR_fcntl64,
- fd,
- c_uint(F_SETPIPE_SZ),
- c_int(size)
- ))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret_usize(syscall_readonly!(
- __NR_fcntl,
- fd,
- c_uint(F_SETPIPE_SZ),
- c_int(size)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn fcntl_get_seals(fd: BorrowedFd<'_>) -> io::Result<SealFlags> {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret_c_int(syscall_readonly!(__NR_fcntl64, fd, c_uint(F_GET_SEALS)))
- .map(|seals| SealFlags::from_bits_unchecked(seals as u32))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret_c_int(syscall_readonly!(__NR_fcntl, fd, c_uint(F_GET_SEALS)))
- .map(|seals| SealFlags::from_bits_unchecked(seals as u32))
- }
-}
-
-#[inline]
-pub(crate) fn fcntl_add_seals(fd: BorrowedFd<'_>, seals: SealFlags) -> io::Result<()> {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret(syscall_readonly!(
- __NR_fcntl64,
- fd,
- c_uint(F_ADD_SEALS),
- seals
- ))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret(syscall_readonly!(
- __NR_fcntl,
- fd,
- c_uint(F_ADD_SEALS),
- seals
- ))
- }
-}
-
-#[inline]
-pub(crate) fn fcntl_lock(fd: BorrowedFd<'_>, operation: FlockOperation) -> io::Result<()> {
- #[cfg(target_pointer_width = "64")]
- use linux_raw_sys::general::{flock, F_SETLK, F_SETLKW};
- #[cfg(target_pointer_width = "32")]
- use linux_raw_sys::general::{flock64 as flock, F_SETLK64 as F_SETLK, F_SETLKW64 as F_SETLKW};
- use linux_raw_sys::general::{F_RDLCK, F_UNLCK, F_WRLCK};
-
- let (cmd, l_type) = match operation {
- FlockOperation::LockShared => (F_SETLKW, F_RDLCK),
- FlockOperation::LockExclusive => (F_SETLKW, F_WRLCK),
- FlockOperation::Unlock => (F_SETLKW, F_UNLCK),
- FlockOperation::NonBlockingLockShared => (F_SETLK, F_RDLCK),
- FlockOperation::NonBlockingLockExclusive => (F_SETLK, F_WRLCK),
- FlockOperation::NonBlockingUnlock => (F_SETLK, F_UNLCK),
- };
-
- unsafe {
- let lock = flock {
- l_type: l_type as _,
-
- // When `l_len` is zero, this locks all the bytes from
- // `l_whence`/`l_start` to the end of the file, even as the
- // file grows dynamically.
- l_whence: SEEK_SET as _,
- l_start: 0,
- l_len: 0,
-
- ..core::mem::zeroed()
- };
-
- #[cfg(target_pointer_width = "32")]
- {
- ret(syscall_readonly!(
- __NR_fcntl64,
- fd,
- c_uint(cmd),
- by_ref(&lock)
- ))
- }
- #[cfg(target_pointer_width = "64")]
- {
- ret(syscall_readonly!(
- __NR_fcntl,
- fd,
- c_uint(cmd),
- by_ref(&lock)
- ))
- }
- }
-}
-
-#[inline]
-pub(crate) fn rename(oldname: &CStr, newname: &CStr) -> io::Result<()> {
- #[cfg(target_arch = "riscv64")]
- unsafe {
- ret(syscall_readonly!(
- __NR_renameat2,
- raw_fd(AT_FDCWD),
- oldname,
- raw_fd(AT_FDCWD),
- newname,
- c_uint(0)
- ))
- }
- #[cfg(not(target_arch = "riscv64"))]
- unsafe {
- ret(syscall_readonly!(
- __NR_renameat,
- raw_fd(AT_FDCWD),
- oldname,
- raw_fd(AT_FDCWD),
- newname
- ))
- }
-}
-
-#[inline]
-pub(crate) fn renameat(
- old_dirfd: BorrowedFd<'_>,
- oldname: &CStr,
- new_dirfd: BorrowedFd<'_>,
- newname: &CStr,
-) -> io::Result<()> {
- #[cfg(target_arch = "riscv64")]
- unsafe {
- ret(syscall_readonly!(
- __NR_renameat2,
- old_dirfd,
- oldname,
- new_dirfd,
- newname,
- c_uint(0)
- ))
- }
- #[cfg(not(target_arch = "riscv64"))]
- unsafe {
- ret(syscall_readonly!(
- __NR_renameat,
- old_dirfd,
- oldname,
- new_dirfd,
- newname
- ))
- }
-}
-
-#[inline]
-pub(crate) fn renameat2(
- old_dirfd: BorrowedFd<'_>,
- oldname: &CStr,
- new_dirfd: BorrowedFd<'_>,
- newname: &CStr,
- flags: RenameFlags,
-) -> io::Result<()> {
- unsafe {
- ret(syscall_readonly!(
- __NR_renameat2,
- old_dirfd,
- oldname,
- new_dirfd,
- newname,
- flags
- ))
- }
-}
-
-#[inline]
-pub(crate) fn unlink(pathname: &CStr) -> io::Result<()> {
- unsafe {
- ret(syscall_readonly!(
- __NR_unlinkat,
- raw_fd(AT_FDCWD),
- pathname,
- c_uint(0)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn unlinkat(dirfd: BorrowedFd<'_>, pathname: &CStr, flags: AtFlags) -> io::Result<()> {
- unsafe { ret(syscall_readonly!(__NR_unlinkat, dirfd, pathname, flags)) }
-}
-
-#[inline]
-pub(crate) fn rmdir(pathname: &CStr) -> io::Result<()> {
- unsafe {
- ret(syscall_readonly!(
- __NR_unlinkat,
- raw_fd(AT_FDCWD),
- pathname,
- c_uint(AT_REMOVEDIR)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn link(oldname: &CStr, newname: &CStr) -> io::Result<()> {
- unsafe {
- ret(syscall_readonly!(
- __NR_linkat,
- raw_fd(AT_FDCWD),
- oldname,
- raw_fd(AT_FDCWD),
- newname,
- c_uint(0)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn linkat(
- old_dirfd: BorrowedFd<'_>,
- oldname: &CStr,
- new_dirfd: BorrowedFd<'_>,
- newname: &CStr,
- flags: AtFlags,
-) -> io::Result<()> {
- unsafe {
- ret(syscall_readonly!(
- __NR_linkat,
- old_dirfd,
- oldname,
- new_dirfd,
- newname,
- flags
- ))
- }
-}
-
-#[inline]
-pub(crate) fn symlink(oldname: &CStr, newname: &CStr) -> io::Result<()> {
- unsafe {
- ret(syscall_readonly!(
- __NR_symlinkat,
- oldname,
- raw_fd(AT_FDCWD),
- newname
- ))
- }
-}
-
-#[inline]
-pub(crate) fn symlinkat(oldname: &CStr, dirfd: BorrowedFd<'_>, newname: &CStr) -> io::Result<()> {
- unsafe { ret(syscall_readonly!(__NR_symlinkat, oldname, dirfd, newname)) }
-}
-
-#[inline]
-pub(crate) fn mkdir(pathname: &CStr, mode: Mode) -> io::Result<()> {
- unsafe {
- ret(syscall_readonly!(
- __NR_mkdirat,
- raw_fd(AT_FDCWD),
- pathname,
- mode
- ))
- }
-}
-
-#[inline]
-pub(crate) fn mkdirat(dirfd: BorrowedFd<'_>, pathname: &CStr, mode: Mode) -> io::Result<()> {
- unsafe { ret(syscall_readonly!(__NR_mkdirat, dirfd, pathname, mode)) }
-}
-
-#[inline]
-pub(crate) fn getdents(fd: BorrowedFd<'_>, dirent: &mut [u8]) -> io::Result<usize> {
- let (dirent_addr_mut, dirent_len) = slice_mut(dirent);
-
- unsafe { ret_usize(syscall!(__NR_getdents64, fd, dirent_addr_mut, dirent_len)) }
-}
-
-#[inline]
-pub(crate) fn getdents_uninit(
- fd: BorrowedFd<'_>,
- dirent: &mut [MaybeUninit<u8>],
-) -> io::Result<usize> {
- let (dirent_addr_mut, dirent_len) = slice_mut(dirent);
-
- unsafe { ret_usize(syscall!(__NR_getdents64, fd, dirent_addr_mut, dirent_len)) }
-}
-
-#[inline]
-pub(crate) fn utimensat(
- dirfd: BorrowedFd<'_>,
- pathname: &CStr,
- times: &Timestamps,
- flags: AtFlags,
-) -> io::Result<()> {
- _utimensat(dirfd, Some(pathname), times, flags)
-}
-
-#[inline]
-fn _utimensat(
- dirfd: BorrowedFd<'_>,
- pathname: Option<&CStr>,
- times: &Timestamps,
- flags: AtFlags,
-) -> io::Result<()> {
- // Assert that `Timestamps` has the expected layout.
- let _ = unsafe { core::mem::transmute::<Timestamps, [__kernel_timespec; 2]>(times.clone()) };
-
- #[cfg(target_pointer_width = "32")]
- unsafe {
- match ret(syscall_readonly!(
- __NR_utimensat_time64,
- dirfd,
- pathname,
- by_ref(times),
- flags
- )) {
- Err(io::Errno::NOSYS) => _utimensat_old(dirfd, pathname, times, flags),
- otherwise => otherwise,
- }
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret(syscall_readonly!(
- __NR_utimensat,
- dirfd,
- pathname,
- by_ref(times),
- flags
- ))
- }
-}
-
-#[cfg(target_pointer_width = "32")]
-unsafe fn _utimensat_old(
- dirfd: BorrowedFd<'_>,
- pathname: Option<&CStr>,
- times: &Timestamps,
- flags: AtFlags,
-) -> io::Result<()> {
- // See the comments in `rustix_clock_gettime_via_syscall` about
- // emulation.
- let old_times = [
- __kernel_old_timespec {
- tv_sec: times
- .last_access
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- tv_nsec: times
- .last_access
- .tv_nsec
- .try_into()
- .map_err(|_| io::Errno::INVAL)?,
- },
- __kernel_old_timespec {
- tv_sec: times
- .last_modification
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- tv_nsec: times
- .last_modification
- .tv_nsec
- .try_into()
- .map_err(|_| io::Errno::INVAL)?,
- },
- ];
- // The length of the array is fixed and not passed into the syscall.
- let old_times_addr = slice_just_addr(&old_times);
- ret(syscall_readonly!(
- __NR_utimensat,
- dirfd,
- pathname,
- old_times_addr,
- flags
- ))
-}
-
-#[inline]
-pub(crate) fn futimens(fd: BorrowedFd<'_>, times: &Timestamps) -> io::Result<()> {
- _utimensat(fd, None, times, AtFlags::empty())
-}
-
-pub(crate) fn accessat(
- dirfd: BorrowedFd<'_>,
- path: &CStr,
- access: Access,
- flags: AtFlags,
-) -> io::Result<()> {
- // Linux's `faccessat` doesn't have a flags parameter. If we have
- // `AT_EACCESS` and we're not setuid or setgid, we can emulate it.
- if flags.is_empty()
- || (flags.bits() == AT_EACCESS
- && crate::process::getuid() == crate::process::geteuid()
- && crate::process::getgid() == crate::process::getegid())
- {
- return unsafe { ret(syscall_readonly!(__NR_faccessat, dirfd, path, access)) };
- }
-
- if flags.bits() != AT_EACCESS {
- return Err(io::Errno::INVAL);
- }
-
- // TODO: Use faccessat2 in newer Linux versions.
- Err(io::Errno::NOSYS)
-}
-
-#[inline]
-pub(crate) fn copy_file_range(
- fd_in: BorrowedFd<'_>,
- off_in: Option<&mut u64>,
- fd_out: BorrowedFd<'_>,
- off_out: Option<&mut u64>,
- len: usize,
-) -> io::Result<usize> {
- unsafe {
- ret_usize(syscall!(
- __NR_copy_file_range,
- fd_in,
- opt_mut(off_in),
- fd_out,
- opt_mut(off_out),
- pass_usize(len),
- c_uint(0)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn memfd_create(name: &CStr, flags: MemfdFlags) -> io::Result<OwnedFd> {
- unsafe { ret_owned_fd(syscall_readonly!(__NR_memfd_create, name, flags)) }
-}
-
-#[inline]
-pub(crate) fn sendfile(
- out_fd: BorrowedFd<'_>,
- in_fd: BorrowedFd<'_>,
- offset: Option<&mut u64>,
- count: usize,
-) -> io::Result<usize> {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret_usize(syscall!(
- __NR_sendfile64,
- out_fd,
- in_fd,
- opt_mut(offset),
- pass_usize(count)
- ))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret_usize(syscall!(
- __NR_sendfile,
- out_fd,
- in_fd,
- opt_mut(offset),
- pass_usize(count)
- ))
- }
-}
-
-#[inline]
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub(crate) fn mount(
- source: Option<&CStr>,
- target: &CStr,
- file_system_type: Option<&CStr>,
- flags: super::types::MountFlagsArg,
- data: Option<&CStr>,
-) -> io::Result<()> {
- unsafe {
- ret(syscall_readonly!(
- __NR_mount,
- source,
- target,
- file_system_type,
- flags,
- data
- ))
- }
-}
-
-#[inline]
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub(crate) fn unmount(target: &CStr, flags: super::types::UnmountFlags) -> io::Result<()> {
- unsafe { ret(syscall_readonly!(__NR_umount2, target, flags)) }
-}
-
-#[inline]
-pub(crate) fn inotify_init1(flags: inotify::CreateFlags) -> io::Result<OwnedFd> {
- unsafe { ret_owned_fd(syscall_readonly!(__NR_inotify_init1, flags)) }
-}
-
-#[inline]
-pub(crate) fn inotify_add_watch(
- infd: BorrowedFd<'_>,
- path: &CStr,
- flags: inotify::WatchFlags,
-) -> io::Result<i32> {
- unsafe { ret_c_int(syscall_readonly!(__NR_inotify_add_watch, infd, path, flags)) }
-}
-
-#[inline]
-pub(crate) fn inotify_rm_watch(infd: BorrowedFd<'_>, wfd: i32) -> io::Result<()> {
- unsafe { ret(syscall_readonly!(__NR_inotify_rm_watch, infd, c_int(wfd))) }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/fs/types.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/fs/types.rs
deleted file mode 100644
index 9bafb8ac0..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/fs/types.rs
+++ /dev/null
@@ -1,772 +0,0 @@
-use super::super::c;
-use bitflags::bitflags;
-
-bitflags! {
- /// `*_OK` constants for use with [`accessat`].
- ///
- /// [`accessat`]: fn.accessat.html
- pub struct Access: c::c_uint {
- /// `R_OK`
- const READ_OK = linux_raw_sys::general::R_OK;
-
- /// `W_OK`
- const WRITE_OK = linux_raw_sys::general::W_OK;
-
- /// `X_OK`
- const EXEC_OK = linux_raw_sys::general::X_OK;
-
- /// `F_OK`
- const EXISTS = linux_raw_sys::general::F_OK;
- }
-}
-
-bitflags! {
- /// `AT_*` constants for use with [`openat`], [`statat`], and other `*at`
- /// functions.
- ///
- /// [`openat`]: crate::fs::openat
- /// [`statat`]: crate::fs::statat
- pub struct AtFlags: c::c_uint {
- /// `AT_REMOVEDIR`
- const REMOVEDIR = linux_raw_sys::general::AT_REMOVEDIR;
-
- /// `AT_SYMLINK_FOLLOW`
- const SYMLINK_FOLLOW = linux_raw_sys::general::AT_SYMLINK_FOLLOW;
-
- /// `AT_SYMLINK_NOFOLLOW`
- const SYMLINK_NOFOLLOW = linux_raw_sys::general::AT_SYMLINK_NOFOLLOW;
-
- /// `AT_EMPTY_PATH`
- const EMPTY_PATH = linux_raw_sys::general::AT_EMPTY_PATH;
-
- /// `AT_EACCESS`
- const EACCESS = linux_raw_sys::general::AT_EACCESS;
-
- /// `AT_STATX_SYNC_AS_STAT`
- const STATX_SYNC_AS_STAT = linux_raw_sys::general::AT_STATX_SYNC_AS_STAT;
-
- /// `AT_STATX_FORCE_SYNC`
- const STATX_FORCE_SYNC = linux_raw_sys::general::AT_STATX_FORCE_SYNC;
-
- /// `AT_STATX_DONT_SYNC`
- const STATX_DONT_SYNC = linux_raw_sys::general::AT_STATX_DONT_SYNC;
- }
-}
-
-bitflags! {
- /// `S_I*` constants for use with [`openat`], [`chmodat`], and [`fchmod`].
- ///
- /// [`openat`]: crate::fs::openat
- /// [`chmodat`]: crate::fs::chmodat
- /// [`fchmod`]: crate::fs::fchmod
- pub struct Mode: RawMode {
- /// `S_IRWXU`
- const RWXU = linux_raw_sys::general::S_IRWXU;
-
- /// `S_IRUSR`
- const RUSR = linux_raw_sys::general::S_IRUSR;
-
- /// `S_IWUSR`
- const WUSR = linux_raw_sys::general::S_IWUSR;
-
- /// `S_IXUSR`
- const XUSR = linux_raw_sys::general::S_IXUSR;
-
- /// `S_IRWXG`
- const RWXG = linux_raw_sys::general::S_IRWXG;
-
- /// `S_IRGRP`
- const RGRP = linux_raw_sys::general::S_IRGRP;
-
- /// `S_IWGRP`
- const WGRP = linux_raw_sys::general::S_IWGRP;
-
- /// `S_IXGRP`
- const XGRP = linux_raw_sys::general::S_IXGRP;
-
- /// `S_IRWXO`
- const RWXO = linux_raw_sys::general::S_IRWXO;
-
- /// `S_IROTH`
- const ROTH = linux_raw_sys::general::S_IROTH;
-
- /// `S_IWOTH`
- const WOTH = linux_raw_sys::general::S_IWOTH;
-
- /// `S_IXOTH`
- const XOTH = linux_raw_sys::general::S_IXOTH;
-
- /// `S_ISUID`
- const SUID = linux_raw_sys::general::S_ISUID;
-
- /// `S_ISGID`
- const SGID = linux_raw_sys::general::S_ISGID;
-
- /// `S_ISVTX`
- const SVTX = linux_raw_sys::general::S_ISVTX;
- }
-}
-
-impl Mode {
- /// Construct a `Mode` from the mode bits of the `st_mode` field of a
- /// `Stat`.
- #[inline]
- pub const fn from_raw_mode(st_mode: RawMode) -> Self {
- Self::from_bits_truncate(st_mode)
- }
-
- /// Construct an `st_mode` value from `Stat`.
- #[inline]
- pub const fn as_raw_mode(self) -> RawMode {
- self.bits()
- }
-}
-
-impl From<RawMode> for Mode {
- /// Support conversions from raw mode values to `Mode`.
- ///
- /// ```
- /// use rustix::fs::{Mode, RawMode};
- /// assert_eq!(Mode::from(0o700), Mode::RWXU);
- /// ```
- #[inline]
- fn from(st_mode: RawMode) -> Self {
- Self::from_raw_mode(st_mode)
- }
-}
-
-impl From<Mode> for RawMode {
- /// Support conversions from `Mode to raw mode values.
- ///
- /// ```
- /// use rustix::fs::{Mode, RawMode};
- /// assert_eq!(RawMode::from(Mode::RWXU), 0o700);
- /// ```
- #[inline]
- fn from(mode: Mode) -> Self {
- mode.as_raw_mode()
- }
-}
-
-bitflags! {
- /// `O_*` constants for use with [`openat`].
- ///
- /// [`openat`]: crate::fs::openat
- pub struct OFlags: c::c_uint {
- /// `O_ACCMODE`
- const ACCMODE = linux_raw_sys::general::O_ACCMODE;
-
- /// Similar to `ACCMODE`, but just includes the read/write flags, and
- /// no other flags.
- ///
- /// Some implementations include `O_PATH` in `O_ACCMODE`, when
- /// sometimes we really just want the read/write bits. Caution is
- /// indicated, as the presence of `O_PATH` may mean that the read/write
- /// bits don't have their usual meaning.
- const RWMODE = linux_raw_sys::general::O_RDONLY |
- linux_raw_sys::general::O_WRONLY |
- linux_raw_sys::general::O_RDWR;
-
- /// `O_APPEND`
- const APPEND = linux_raw_sys::general::O_APPEND;
-
- /// `O_CREAT`
- #[doc(alias = "CREAT")]
- const CREATE = linux_raw_sys::general::O_CREAT;
-
- /// `O_DIRECTORY`
- const DIRECTORY = linux_raw_sys::general::O_DIRECTORY;
-
- /// `O_DSYNC`. Linux 2.6.32 only supports `O_SYNC`.
- const DSYNC = linux_raw_sys::general::O_SYNC;
-
- /// `O_EXCL`
- const EXCL = linux_raw_sys::general::O_EXCL;
-
- /// `O_FSYNC`. Linux 2.6.32 only supports `O_SYNC`.
- const FSYNC = linux_raw_sys::general::O_SYNC;
-
- /// `O_NOFOLLOW`
- const NOFOLLOW = linux_raw_sys::general::O_NOFOLLOW;
-
- /// `O_NONBLOCK`
- const NONBLOCK = linux_raw_sys::general::O_NONBLOCK;
-
- /// `O_RDONLY`
- const RDONLY = linux_raw_sys::general::O_RDONLY;
-
- /// `O_WRONLY`
- const WRONLY = linux_raw_sys::general::O_WRONLY;
-
- /// `O_RDWR`
- const RDWR = linux_raw_sys::general::O_RDWR;
-
- /// `O_NOCTTY`
- const NOCTTY = linux_raw_sys::general::O_NOCTTY;
-
- /// `O_RSYNC`. Linux 2.6.32 only supports `O_SYNC`.
- const RSYNC = linux_raw_sys::general::O_SYNC;
-
- /// `O_SYNC`
- const SYNC = linux_raw_sys::general::O_SYNC;
-
- /// `O_TRUNC`
- const TRUNC = linux_raw_sys::general::O_TRUNC;
-
- /// `O_PATH`
- const PATH = linux_raw_sys::general::O_PATH;
-
- /// `O_CLOEXEC`
- const CLOEXEC = linux_raw_sys::general::O_CLOEXEC;
-
- /// `O_TMPFILE`
- const TMPFILE = linux_raw_sys::general::O_TMPFILE;
-
- /// `O_NOATIME`
- const NOATIME = linux_raw_sys::general::O_NOATIME;
-
- /// `O_DIRECT`
- const DIRECT = linux_raw_sys::general::O_DIRECT;
- }
-}
-
-bitflags! {
- /// `RESOLVE_*` constants for use with [`openat2`].
- ///
- /// [`openat2`]: crate::fs::openat2
- #[derive(Default)]
- pub struct ResolveFlags: u64 {
- /// `RESOLVE_NO_XDEV`
- const NO_XDEV = linux_raw_sys::general::RESOLVE_NO_XDEV as u64;
-
- /// `RESOLVE_NO_MAGICLINKS`
- const NO_MAGICLINKS = linux_raw_sys::general::RESOLVE_NO_MAGICLINKS as u64;
-
- /// `RESOLVE_NO_SYMLINKS`
- const NO_SYMLINKS = linux_raw_sys::general::RESOLVE_NO_SYMLINKS as u64;
-
- /// `RESOLVE_BENEATH`
- const BENEATH = linux_raw_sys::general::RESOLVE_BENEATH as u64;
-
- /// `RESOLVE_IN_ROOT`
- const IN_ROOT = linux_raw_sys::general::RESOLVE_IN_ROOT as u64;
-
- /// `RESOLVE_CACHED` (since Linux 5.12)
- const CACHED = linux_raw_sys::general::RESOLVE_CACHED as u64;
- }
-}
-
-bitflags! {
- /// `RENAME_*` constants for use with [`renameat_with`].
- ///
- /// [`renameat_with`]: crate::fs::renameat_with
- pub struct RenameFlags: c::c_uint {
- /// `RENAME_EXCHANGE`
- const EXCHANGE = linux_raw_sys::general::RENAME_EXCHANGE;
-
- /// `RENAME_NOREPLACE`
- const NOREPLACE = linux_raw_sys::general::RENAME_NOREPLACE;
-
- /// `RENAME_WHITEOUT`
- const WHITEOUT = linux_raw_sys::general::RENAME_WHITEOUT;
- }
-}
-
-/// `S_IF*` constants for use with [`mknodat`] and [`Stat`]'s `st_mode` field.
-///
-/// [`mknodat`]: crate::fs::mknodat
-/// [`Stat`]: crate::fs::Stat
-#[derive(Clone, Copy, Debug, PartialEq, Eq)]
-pub enum FileType {
- /// `S_IFREG`
- RegularFile = linux_raw_sys::general::S_IFREG as isize,
-
- /// `S_IFDIR`
- Directory = linux_raw_sys::general::S_IFDIR as isize,
-
- /// `S_IFLNK`
- Symlink = linux_raw_sys::general::S_IFLNK as isize,
-
- /// `S_IFIFO`
- Fifo = linux_raw_sys::general::S_IFIFO as isize,
-
- /// `S_IFSOCK`
- Socket = linux_raw_sys::general::S_IFSOCK as isize,
-
- /// `S_IFCHR`
- CharacterDevice = linux_raw_sys::general::S_IFCHR as isize,
-
- /// `S_IFBLK`
- BlockDevice = linux_raw_sys::general::S_IFBLK as isize,
-
- /// An unknown filesystem object.
- Unknown,
-}
-
-impl FileType {
- /// Construct a `FileType` from the `S_IFMT` bits of the `st_mode` field of
- /// a `Stat`.
- #[inline]
- pub const fn from_raw_mode(st_mode: RawMode) -> Self {
- match st_mode & linux_raw_sys::general::S_IFMT {
- linux_raw_sys::general::S_IFREG => Self::RegularFile,
- linux_raw_sys::general::S_IFDIR => Self::Directory,
- linux_raw_sys::general::S_IFLNK => Self::Symlink,
- linux_raw_sys::general::S_IFIFO => Self::Fifo,
- linux_raw_sys::general::S_IFSOCK => Self::Socket,
- linux_raw_sys::general::S_IFCHR => Self::CharacterDevice,
- linux_raw_sys::general::S_IFBLK => Self::BlockDevice,
- _ => Self::Unknown,
- }
- }
-
- /// Construct an `st_mode` value from `Stat`.
- #[inline]
- pub const fn as_raw_mode(self) -> RawMode {
- match self {
- Self::RegularFile => linux_raw_sys::general::S_IFREG,
- Self::Directory => linux_raw_sys::general::S_IFDIR,
- Self::Symlink => linux_raw_sys::general::S_IFLNK,
- Self::Fifo => linux_raw_sys::general::S_IFIFO,
- Self::Socket => linux_raw_sys::general::S_IFSOCK,
- Self::CharacterDevice => linux_raw_sys::general::S_IFCHR,
- Self::BlockDevice => linux_raw_sys::general::S_IFBLK,
- Self::Unknown => linux_raw_sys::general::S_IFMT,
- }
- }
-
- /// Construct a `FileType` from the `d_type` field of a `dirent`.
- #[inline]
- pub(crate) const fn from_dirent_d_type(d_type: u8) -> Self {
- match d_type as u32 {
- linux_raw_sys::general::DT_REG => Self::RegularFile,
- linux_raw_sys::general::DT_DIR => Self::Directory,
- linux_raw_sys::general::DT_LNK => Self::Symlink,
- linux_raw_sys::general::DT_SOCK => Self::Socket,
- linux_raw_sys::general::DT_FIFO => Self::Fifo,
- linux_raw_sys::general::DT_CHR => Self::CharacterDevice,
- linux_raw_sys::general::DT_BLK => Self::BlockDevice,
- // linux_raw_sys::general::DT_UNKNOWN |
- _ => Self::Unknown,
- }
- }
-}
-
-/// `POSIX_FADV_*` constants for use with [`fadvise`].
-///
-/// [`fadvise`]: crate::fs::fadvise
-#[derive(Debug, Copy, Clone, Eq, PartialEq)]
-#[repr(u32)]
-pub enum Advice {
- /// `POSIX_FADV_NORMAL`
- Normal = linux_raw_sys::general::POSIX_FADV_NORMAL,
-
- /// `POSIX_FADV_SEQUENTIAL`
- Sequential = linux_raw_sys::general::POSIX_FADV_SEQUENTIAL,
-
- /// `POSIX_FADV_RANDOM`
- Random = linux_raw_sys::general::POSIX_FADV_RANDOM,
-
- /// `POSIX_FADV_NOREUSE`
- NoReuse = linux_raw_sys::general::POSIX_FADV_NOREUSE,
-
- /// `POSIX_FADV_WILLNEED`
- WillNeed = linux_raw_sys::general::POSIX_FADV_WILLNEED,
-
- /// `POSIX_FADV_DONTNEED`
- DontNeed = linux_raw_sys::general::POSIX_FADV_DONTNEED,
-}
-
-bitflags! {
- /// `MFD_*` constants for use with [`memfd_create`].
- ///
- /// [`memfd_create`]: crate::fs::memfd_create
- pub struct MemfdFlags: c::c_uint {
- /// `MFD_CLOEXEC`
- const CLOEXEC = linux_raw_sys::general::MFD_CLOEXEC;
-
- /// `MFD_ALLOW_SEALING`
- const ALLOW_SEALING = linux_raw_sys::general::MFD_ALLOW_SEALING;
-
- /// `MFD_HUGETLB` (since Linux 4.14)
- const HUGETLB = linux_raw_sys::general::MFD_HUGETLB;
-
- /// `MFD_HUGE_64KB`
- const HUGE_64KB = linux_raw_sys::general::MFD_HUGE_64KB;
- /// `MFD_HUGE_512JB`
- const HUGE_512KB = linux_raw_sys::general::MFD_HUGE_512KB;
- /// `MFD_HUGE_1MB`
- const HUGE_1MB = linux_raw_sys::general::MFD_HUGE_1MB;
- /// `MFD_HUGE_2MB`
- const HUGE_2MB = linux_raw_sys::general::MFD_HUGE_2MB;
- /// `MFD_HUGE_8MB`
- const HUGE_8MB = linux_raw_sys::general::MFD_HUGE_8MB;
- /// `MFD_HUGE_16MB`
- const HUGE_16MB = linux_raw_sys::general::MFD_HUGE_16MB;
- /// `MFD_HUGE_32MB`
- const HUGE_32MB = linux_raw_sys::general::MFD_HUGE_32MB;
- /// `MFD_HUGE_256MB`
- const HUGE_256MB = linux_raw_sys::general::MFD_HUGE_256MB;
- /// `MFD_HUGE_512MB`
- const HUGE_512MB = linux_raw_sys::general::MFD_HUGE_512MB;
- /// `MFD_HUGE_1GB`
- const HUGE_1GB = linux_raw_sys::general::MFD_HUGE_1GB;
- /// `MFD_HUGE_2GB`
- const HUGE_2GB = linux_raw_sys::general::MFD_HUGE_2GB;
- /// `MFD_HUGE_16GB`
- const HUGE_16GB = linux_raw_sys::general::MFD_HUGE_16GB;
- }
-}
-
-bitflags! {
- /// `F_SEAL_*` constants for use with [`fcntl_add_seals`] and
- /// [`fcntl_get_seals`].
- ///
- /// [`fcntl_add_seals`]: crate::fs::fcntl_add_seals
- /// [`fcntl_get_seals`]: crate::fs::fcntl_get_seals
- pub struct SealFlags: u32 {
- /// `F_SEAL_SEAL`.
- const SEAL = linux_raw_sys::general::F_SEAL_SEAL;
- /// `F_SEAL_SHRINK`.
- const SHRINK = linux_raw_sys::general::F_SEAL_SHRINK;
- /// `F_SEAL_GROW`.
- const GROW = linux_raw_sys::general::F_SEAL_GROW;
- /// `F_SEAL_WRITE`.
- const WRITE = linux_raw_sys::general::F_SEAL_WRITE;
- /// `F_SEAL_FUTURE_WRITE` (since Linux 5.1)
- const FUTURE_WRITE = linux_raw_sys::general::F_SEAL_FUTURE_WRITE;
- }
-}
-
-bitflags! {
- /// `STATX_*` constants for use with [`statx`].
- ///
- /// [`statx`]: crate::fs::statx
- pub struct StatxFlags: u32 {
- /// `STATX_TYPE`
- const TYPE = linux_raw_sys::general::STATX_TYPE;
-
- /// `STATX_MODE`
- const MODE = linux_raw_sys::general::STATX_MODE;
-
- /// `STATX_NLINK`
- const NLINK = linux_raw_sys::general::STATX_NLINK;
-
- /// `STATX_UID`
- const UID = linux_raw_sys::general::STATX_UID;
-
- /// `STATX_GID`
- const GID = linux_raw_sys::general::STATX_GID;
-
- /// `STATX_ATIME`
- const ATIME = linux_raw_sys::general::STATX_ATIME;
-
- /// `STATX_MTIME`
- const MTIME = linux_raw_sys::general::STATX_MTIME;
-
- /// `STATX_CTIME`
- const CTIME = linux_raw_sys::general::STATX_CTIME;
-
- /// `STATX_INO`
- const INO = linux_raw_sys::general::STATX_INO;
-
- /// `STATX_SIZE`
- const SIZE = linux_raw_sys::general::STATX_SIZE;
-
- /// `STATX_BLOCKS`
- const BLOCKS = linux_raw_sys::general::STATX_BLOCKS;
-
- /// `STATX_BASIC_STATS`
- const BASIC_STATS = linux_raw_sys::general::STATX_BASIC_STATS;
-
- /// `STATX_BTIME`
- const BTIME = linux_raw_sys::general::STATX_BTIME;
-
- /// `STATX_MNT_ID` (since Linux 5.8)
- const MNT_ID = linux_raw_sys::general::STATX_MNT_ID;
-
- /// `STATX_ALL`
- const ALL = linux_raw_sys::general::STATX_ALL;
- }
-}
-
-bitflags! {
- /// `FALLOC_FL_*` constants for use with [`fallocate`].
- ///
- /// [`fallocate`]: crate::fs::fallocate
- pub struct FallocateFlags: u32 {
- /// `FALLOC_FL_KEEP_SIZE`
- const KEEP_SIZE = linux_raw_sys::general::FALLOC_FL_KEEP_SIZE;
- /// `FALLOC_FL_PUNCH_HOLE`
- const PUNCH_HOLE = linux_raw_sys::general::FALLOC_FL_PUNCH_HOLE;
- /// `FALLOC_FL_NO_HIDE_STALE`
- const NO_HIDE_STALE = linux_raw_sys::general::FALLOC_FL_NO_HIDE_STALE;
- /// `FALLOC_FL_COLLAPSE_RANGE`
- const COLLAPSE_RANGE = linux_raw_sys::general::FALLOC_FL_COLLAPSE_RANGE;
- /// `FALLOC_FL_ZERO_RANGE`
- const ZERO_RANGE = linux_raw_sys::general::FALLOC_FL_ZERO_RANGE;
- /// `FALLOC_FL_INSERT_RANGE`
- const INSERT_RANGE = linux_raw_sys::general::FALLOC_FL_INSERT_RANGE;
- /// `FALLOC_FL_UNSHARE_RANGE`
- const UNSHARE_RANGE = linux_raw_sys::general::FALLOC_FL_UNSHARE_RANGE;
- }
-}
-
-bitflags! {
- /// `ST_*` constants for use with [`StatVfs`].
- pub struct StatVfsMountFlags: u64 {
- /// `ST_MANDLOCK`
- const MANDLOCK = linux_raw_sys::general::MS_MANDLOCK as u64;
-
- /// `ST_NOATIME`
- const NOATIME = linux_raw_sys::general::MS_NOATIME as u64;
-
- /// `ST_NODEV`
- const NODEV = linux_raw_sys::general::MS_NODEV as u64;
-
- /// `ST_NODIRATIME`
- const NODIRATIME = linux_raw_sys::general::MS_NODIRATIME as u64;
-
- /// `ST_NOEXEC`
- const NOEXEC = linux_raw_sys::general::MS_NOEXEC as u64;
-
- /// `ST_NOSUID`
- const NOSUID = linux_raw_sys::general::MS_NOSUID as u64;
-
- /// `ST_RDONLY`
- const RDONLY = linux_raw_sys::general::MS_RDONLY as u64;
-
- /// `ST_RELATIME`
- const RELATIME = linux_raw_sys::general::MS_RELATIME as u64;
-
- /// `ST_SYNCHRONOUS`
- const SYNCHRONOUS = linux_raw_sys::general::MS_SYNCHRONOUS as u64;
- }
-}
-
-/// `LOCK_*` constants for use with [`flock`] and [`fcntl_lock`].
-///
-/// [`flock`]: crate::fs::flock
-/// [`fcntl_lock`]: crate::fs::fcntl_lock
-#[derive(Clone, Copy, Debug, PartialEq, Eq)]
-#[repr(u32)]
-pub enum FlockOperation {
- /// `LOCK_SH`
- LockShared = linux_raw_sys::general::LOCK_SH,
- /// `LOCK_EX`
- LockExclusive = linux_raw_sys::general::LOCK_EX,
- /// `LOCK_UN`
- Unlock = linux_raw_sys::general::LOCK_UN,
- /// `LOCK_SH | LOCK_NB`
- NonBlockingLockShared = linux_raw_sys::general::LOCK_SH | linux_raw_sys::general::LOCK_NB,
- /// `LOCK_EX | LOCK_NB`
- NonBlockingLockExclusive = linux_raw_sys::general::LOCK_EX | linux_raw_sys::general::LOCK_NB,
- /// `LOCK_UN | LOCK_NB`
- NonBlockingUnlock = linux_raw_sys::general::LOCK_UN | linux_raw_sys::general::LOCK_NB,
-}
-
-/// `struct stat` for use with [`statat`] and [`fstat`].
-///
-/// [`statat`]: crate::fs::statat
-/// [`fstat`]: crate::fs::fstat
-// On 32-bit, and mips64, Linux's `struct stat64` has a 32-bit `st_mtime` and
-// friends, so we use our own struct, populated from `statx` where possible, to
-// avoid the y2038 bug.
-#[cfg(any(target_pointer_width = "32", target_arch = "mips64"))]
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-#[allow(missing_docs)]
-pub struct Stat {
- pub st_dev: u64,
- pub st_mode: u32,
- pub st_nlink: u32,
- pub st_uid: u32,
- pub st_gid: u32,
- pub st_rdev: u64,
- pub st_size: i64,
- pub st_blksize: u32,
- pub st_blocks: u64,
- pub st_atime: u64,
- pub st_atime_nsec: u32,
- pub st_mtime: u64,
- pub st_mtime_nsec: u32,
- pub st_ctime: u64,
- pub st_ctime_nsec: u32,
- pub st_ino: u64,
-}
-
-/// `struct stat` for use with [`statat`] and [`fstat`].
-///
-/// [`statat`]: crate::fs::statat
-/// [`fstat`]: crate::fs::fstat
-#[cfg(all(target_pointer_width = "64", not(target_arch = "mips64")))]
-pub type Stat = linux_raw_sys::general::stat;
-
-/// `struct statfs` for use with [`statfs`] and [`fstatfs`].
-///
-/// [`statfs`]: crate::fs::statfs
-/// [`fstatfs`]: crate::fs::fstatfs
-#[allow(clippy::module_name_repetitions)]
-pub type StatFs = linux_raw_sys::general::statfs64;
-
-/// `struct statvfs` for use with [`statvfs`] and [`fstatvfs`].
-///
-/// [`statvfs`]: crate::fs::statvfs
-/// [`fstatvfs`]: crate::fs::fstatvfs
-#[allow(missing_docs)]
-pub struct StatVfs {
- pub f_bsize: u64,
- pub f_frsize: u64,
- pub f_blocks: u64,
- pub f_bfree: u64,
- pub f_bavail: u64,
- pub f_files: u64,
- pub f_ffree: u64,
- pub f_favail: u64,
- pub f_fsid: u64,
- pub f_flag: StatVfsMountFlags,
- pub f_namemax: u64,
-}
-
-/// `struct statx` for use with [`statx`].
-///
-/// [`statx`]: crate::fs::statx
-pub type Statx = linux_raw_sys::general::statx;
-
-/// `struct statx_timestamp` for use with [`Statx`].
-pub type StatxTimestamp = linux_raw_sys::general::statx_timestamp;
-
-/// `mode_t`
-#[cfg(not(any(
- target_arch = "x86",
- target_arch = "sparc",
- target_arch = "avr",
- target_arch = "arm",
-)))]
-pub type RawMode = linux_raw_sys::general::__kernel_mode_t;
-
-/// `mode_t
-#[cfg(any(
- target_arch = "x86",
- target_arch = "sparc",
- target_arch = "avr",
- target_arch = "arm",
-))]
-// Don't use `__kernel_mode_t` since it's `u16` which differs from `st_size`.
-pub type RawMode = c::c_uint;
-
-/// `dev_t`
-// Within the kernel the dev_t is 32-bit, but userspace uses a 64-bit field.
-pub type Dev = u64;
-
-/// `__fsword_t`
-#[cfg(not(target_arch = "mips64"))]
-pub type FsWord = linux_raw_sys::general::__fsword_t;
-
-/// `__fsword_t`
-#[cfg(target_arch = "mips64")]
-pub type FsWord = i64;
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-bitflags! {
- /// `MS_*` constants for use with [`mount`].
- ///
- /// [`mount`]: crate::fs::mount
- pub struct MountFlags: c::c_uint {
- /// `MS_BIND`
- const BIND = linux_raw_sys::general::MS_BIND;
-
- /// `MS_DIRSYNC`
- const DIRSYNC = linux_raw_sys::general::MS_DIRSYNC;
-
- /// `MS_LAZYTIME`
- const LAZYTIME = linux_raw_sys::general::MS_LAZYTIME;
-
- /// `MS_MANDLOCK`
- #[doc(alias = "MANDLOCK")]
- const PERMIT_MANDATORY_FILE_LOCKING = linux_raw_sys::general::MS_MANDLOCK;
-
- /// `MS_NOATIME`
- const NOATIME = linux_raw_sys::general::MS_NOATIME;
-
- /// `MS_NODEV`
- const NODEV = linux_raw_sys::general::MS_NODEV;
-
- /// `MS_NODIRATIME`
- const NODIRATIME = linux_raw_sys::general::MS_NODIRATIME;
-
- /// `MS_NOEXEC`
- const NOEXEC = linux_raw_sys::general::MS_NOEXEC;
-
- /// `MS_NOSUID`
- const NOSUID = linux_raw_sys::general::MS_NOSUID;
-
- /// `MS_RDONLY`
- const RDONLY = linux_raw_sys::general::MS_RDONLY;
-
- /// `MS_REC`
- const REC = linux_raw_sys::general::MS_REC;
-
- /// `MS_RELATIME`
- const RELATIME = linux_raw_sys::general::MS_RELATIME;
-
- /// `MS_SILENT`
- const SILENT = linux_raw_sys::general::MS_SILENT;
-
- /// `MS_STRICTATIME`
- const STRICTATIME = linux_raw_sys::general::MS_STRICTATIME;
-
- /// `MS_SYNCHRONOUS`
- const SYNCHRONOUS = linux_raw_sys::general::MS_SYNCHRONOUS;
-
- /// `MS_NOSYMFOLLOW`
- const NOSYMFOLLOW = linux_raw_sys::general::MS_NOSYMFOLLOW;
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-bitflags! {
- /// `MS_*` constants for use with [`change_mount`].
- ///
- /// [`change_mount`]: crate::fs::mount::change_mount
- pub struct MountPropagationFlags: c::c_uint {
- /// `MS_SHARED`
- const SHARED = linux_raw_sys::general::MS_SHARED;
- /// `MS_PRIVATE`
- const PRIVATE = linux_raw_sys::general::MS_PRIVATE;
- /// `MS_SLAVE`
- const SLAVE = linux_raw_sys::general::MS_SLAVE;
- /// `MS_UNBINDABLE`
- const UNBINDABLE = linux_raw_sys::general::MS_UNBINDABLE;
- /// `MS_REC`
- const REC = linux_raw_sys::general::MS_REC;
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-bitflags! {
- pub(crate) struct InternalMountFlags: c::c_uint {
- const REMOUNT = linux_raw_sys::general::MS_REMOUNT;
- const MOVE = linux_raw_sys::general::MS_MOVE;
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub(crate) struct MountFlagsArg(pub(crate) c::c_uint);
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-bitflags! {
- /// `MNT_*` constants for use with [`unmount`].
- ///
- /// [`unmount`]: crate::fs::mount::unmount
- pub struct UnmountFlags: c::c_uint {
- /// `MNT_FORCE`
- const FORCE = linux_raw_sys::general::MNT_FORCE;
- /// `MNT_DETACH`
- const DETACH = linux_raw_sys::general::MNT_DETACH;
- /// `MNT_EXPIRE`
- const EXPIRE = linux_raw_sys::general::MNT_EXPIRE;
- /// `UMOUNT_NOFOLLOW`
- const NOFOLLOW = linux_raw_sys::general::UMOUNT_NOFOLLOW;
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/io/epoll.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/io/epoll.rs
deleted file mode 100644
index 3fc6462a2..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/io/epoll.rs
+++ /dev/null
@@ -1,346 +0,0 @@
-//! epoll support.
-//!
-//! This is an experiment, and it isn't yet clear whether epoll is the right
-//! level of abstraction at which to introduce safety. But it works fairly well
-//! in simple examples 🙂.
-//!
-//! # Examples
-//!
-//! ```no_run
-//! # #![cfg_attr(io_lifetimes_use_std, feature(io_safety))]
-//! # #[cfg(feature = "net")]
-//! # fn main() -> std::io::Result<()> {
-//! use io_lifetimes::AsFd;
-//! use rustix::io::{epoll, ioctl_fionbio, read, write};
-//! use rustix::net::{
-//! accept, bind_v4, listen, socket, AddressFamily, Ipv4Addr, Protocol, SocketAddrV4,
-//! SocketType,
-//! };
-//! use std::collections::HashMap;
-//! use std::os::unix::io::AsRawFd;
-//!
-//! // Create a socket and listen on it.
-//! let listen_sock = socket(AddressFamily::INET, SocketType::STREAM, Protocol::default())?;
-//! bind_v4(&listen_sock, &SocketAddrV4::new(Ipv4Addr::LOCALHOST, 0))?;
-//! listen(&listen_sock, 1)?;
-//!
-//! // Create an epoll object. Using `Owning` here means the epoll object will
-//! // take ownership of the file descriptors registered with it.
-//! let epoll = epoll::epoll_create(epoll::CreateFlags::CLOEXEC)?;
-//!
-//! // Register the socket with the epoll object.
-//! epoll::epoll_add(&epoll, &listen_sock, 1, epoll::EventFlags::IN)?;
-//!
-//! // Keep track of the sockets we've opened.
-//! let mut next_id = 2;
-//! let mut sockets = HashMap::new();
-//!
-//! // Process events.
-//! let mut event_list = epoll::EventVec::with_capacity(4);
-//! loop {
-//! epoll::epoll_wait(&epoll, &mut event_list, -1)?;
-//! for (_event_flags, target) in &event_list {
-//! if target == 1 {
-//! // Accept a new connection, set it to non-blocking, and
-//! // register to be notified when it's ready to write to.
-//! let conn_sock = accept(&listen_sock)?;
-//! ioctl_fionbio(&conn_sock, true)?;
-//! epoll::epoll_add(
-//! &epoll,
-//! &conn_sock,
-//! next_id,
-//! epoll::EventFlags::OUT | epoll::EventFlags::ET,
-//! )?;
-//!
-//! // Keep track of the socket.
-//! sockets.insert(next_id, conn_sock);
-//! next_id += 1;
-//! } else {
-//! // Write a message to the stream and then unregister it.
-//! let target = sockets.remove(&target).unwrap();
-//! write(&target, b"hello\n")?;
-//! let _ = epoll::epoll_del(&epoll, &target)?;
-//! }
-//! }
-//! }
-//! # }
-//! # #[cfg(not(feature = "net"))]
-//! # fn main() {}
-//! ```
-
-#![allow(unsafe_code)]
-
-use super::super::c;
-use crate::backend::io::syscalls;
-use crate::fd::{AsFd, AsRawFd, OwnedFd};
-use crate::io;
-use alloc::vec::Vec;
-use bitflags::bitflags;
-
-bitflags! {
- /// `EPOLL_*` for use with [`Epoll::new`].
- pub struct CreateFlags: c::c_uint {
- /// `EPOLL_CLOEXEC`
- const CLOEXEC = linux_raw_sys::general::EPOLL_CLOEXEC;
- }
-}
-
-bitflags! {
- /// `EPOLL*` for use with [`Epoll::add`].
- #[derive(Default)]
- pub struct EventFlags: u32 {
- /// `EPOLLIN`
- const IN = linux_raw_sys::general::EPOLLIN as u32;
-
- /// `EPOLLOUT`
- const OUT = linux_raw_sys::general::EPOLLOUT as u32;
-
- /// `EPOLLPRI`
- const PRI = linux_raw_sys::general::EPOLLPRI as u32;
-
- /// `EPOLLERR`
- const ERR = linux_raw_sys::general::EPOLLERR as u32;
-
- /// `EPOLLHUP`
- const HUP = linux_raw_sys::general::EPOLLHUP as u32;
-
- /// `EPOLLRDNORM`
- const RDNORM = linux_raw_sys::general::EPOLLRDNORM as u32;
-
- /// `EPOLLRDBAND`
- const RDBAND = linux_raw_sys::general::EPOLLRDBAND as u32;
-
- /// `EPOLLWRNORM`
- const WRNORM = linux_raw_sys::general::EPOLLWRNORM as u32;
-
- /// `EPOLLWRBAND`
- const WRBAND = linux_raw_sys::general::EPOLLWRBAND as u32;
-
- /// `EPOLLMSG`
- const MSG = linux_raw_sys::general::EPOLLMSG as u32;
-
- /// `EPOLLRDHUP`
- const RDHUP = linux_raw_sys::general::EPOLLRDHUP as u32;
-
- /// `EPOLLET`
- const ET = linux_raw_sys::general::EPOLLET as u32;
-
- /// `EPOLLONESHOT`
- const ONESHOT = linux_raw_sys::general::EPOLLONESHOT as u32;
-
- /// `EPOLLWAKEUP`
- const WAKEUP = linux_raw_sys::general::EPOLLWAKEUP as u32;
-
- /// `EPOLLEXCLUSIVE`
- const EXCLUSIVE = linux_raw_sys::general::EPOLLEXCLUSIVE as u32;
- }
-}
-
-/// `epoll_create1(flags)`—Creates a new `Epoll`.
-///
-/// Use the [`CreateFlags::CLOEXEC`] flag to prevent the resulting file
-/// descriptor from being implicitly passed across `exec` boundaries.
-#[inline]
-#[doc(alias = "epoll_create1")]
-pub fn epoll_create(flags: CreateFlags) -> io::Result<OwnedFd> {
- syscalls::epoll_create(flags)
-}
-
-/// `epoll_ctl(self, EPOLL_CTL_ADD, data, event)`—Adds an element to an
-/// `Epoll`.
-///
-/// This registers interest in any of the events set in `events` occurring
-/// on the file descriptor associated with `data`.
-///
-/// Note that if `epoll_del` is not called on the I/O source passed into
-/// this function before the I/O source is `close`d, then the `epoll` will
-/// act as if the I/O source is still registered with it. This can lead to
-/// spurious events being returned from `epoll_wait`. If a file descriptor
-/// is an `Arc<dyn SystemResource>`, then `epoll` can be thought to maintain
-/// a `Weak<dyn SystemResource>` to the file descriptor.
-#[doc(alias = "epoll_ctl")]
-pub fn epoll_add(
- epoll: impl AsFd,
- source: impl AsFd,
- data: u64,
- event_flags: EventFlags,
-) -> io::Result<()> {
- // SAFETY: We're calling `epoll_ctl` via FFI and we know how it
- // behaves.
- unsafe {
- syscalls::epoll_add(
- epoll.as_fd(),
- source.as_fd().as_raw_fd(),
- &linux_raw_sys::general::epoll_event {
- events: event_flags.bits(),
- data,
- },
- )
- }
-}
-
-/// `epoll_ctl(self, EPOLL_CTL_MOD, target, event)`—Modifies an element in
-/// this `Epoll`.
-///
-/// This sets the events of interest with `target` to `events`.
-#[doc(alias = "epoll_ctl")]
-pub fn epoll_mod(
- epoll: impl AsFd,
- source: impl AsFd,
- data: u64,
- event_flags: EventFlags,
-) -> io::Result<()> {
- // SAFETY: We're calling `epoll_ctl` via FFI and we know how it
- // behaves.
- unsafe {
- let raw_fd = source.as_fd().as_raw_fd();
- syscalls::epoll_mod(
- epoll.as_fd(),
- raw_fd,
- &linux_raw_sys::general::epoll_event {
- events: event_flags.bits(),
- data,
- },
- )
- }
-}
-
-/// `epoll_ctl(self, EPOLL_CTL_DEL, target, NULL)`—Removes an element in
-/// this `Epoll`.
-///
-/// This also returns the owning `Data`.
-#[doc(alias = "epoll_ctl")]
-pub fn epoll_del(epoll: impl AsFd, source: impl AsFd) -> io::Result<()> {
- // SAFETY: We're calling `epoll_ctl` via FFI and we know how it
- // behaves.
- unsafe {
- let raw_fd = source.as_fd().as_raw_fd();
- syscalls::epoll_del(epoll.as_fd(), raw_fd)
- }
-}
-
-/// `epoll_wait(self, events, timeout)`—Waits for registered events of
-/// interest.
-///
-/// For each event of interest, an element is written to `events`. On
-/// success, this returns the number of written elements.
-pub fn epoll_wait(
- epoll: impl AsFd,
- event_list: &mut EventVec,
- timeout: c::c_int,
-) -> io::Result<()> {
- // SAFETY: We're calling `epoll_wait` via FFI and we know how it
- // behaves.
- unsafe {
- event_list.events.set_len(0);
- let nfds = syscalls::epoll_wait(
- epoll.as_fd(),
- event_list.events[..].as_mut_ptr().cast(),
- event_list.events.capacity(),
- timeout,
- )?;
- event_list.events.set_len(nfds);
- }
-
- Ok(())
-}
-
-/// An iterator over the `Event`s in an `EventVec`.
-pub struct Iter<'a> {
- iter: core::slice::Iter<'a, Event>,
-}
-
-impl<'a> Iterator for Iter<'a> {
- type Item = (EventFlags, u64);
-
- fn next(&mut self) -> Option<Self::Item> {
- self.iter
- .next()
- .map(|event| (event.event_flags, event.data))
- }
-}
-
-/// A record of an event that occurred.
-#[repr(C)]
-#[cfg_attr(target_arch = "x86_64", repr(packed))]
-struct Event {
- // Match the layout of `linux_raw_sys::general::epoll_event`. We just use a
- // `u64` instead of the full union.
- event_flags: EventFlags,
- data: u64,
-}
-
-/// A vector of `Event`s, plus context for interpreting them.
-pub struct EventVec {
- events: Vec<Event>,
-}
-
-impl EventVec {
- /// Constructs an `EventVec` with memory for `capacity` `Event`s.
- #[inline]
- pub fn with_capacity(capacity: usize) -> Self {
- Self {
- events: Vec::with_capacity(capacity),
- }
- }
-
- /// Returns the current `Event` capacity of this `EventVec`.
- #[inline]
- pub fn capacity(&self) -> usize {
- self.events.capacity()
- }
-
- /// Reserves enough memory for at least `additional` more `Event`s.
- #[inline]
- pub fn reserve(&mut self, additional: usize) {
- self.events.reserve(additional);
- }
-
- /// Reserves enough memory for exactly `additional` more `Event`s.
- #[inline]
- pub fn reserve_exact(&mut self, additional: usize) {
- self.events.reserve_exact(additional);
- }
-
- /// Clears all the `Events` out of this `EventVec`.
- #[inline]
- pub fn clear(&mut self) {
- self.events.clear();
- }
-
- /// Shrinks the capacity of this `EventVec` as much as possible.
- #[inline]
- pub fn shrink_to_fit(&mut self) {
- self.events.shrink_to_fit();
- }
-
- /// Returns an iterator over the `Event`s in this `EventVec`.
- #[inline]
- pub fn iter(&self) -> Iter<'_> {
- Iter {
- iter: self.events.iter(),
- }
- }
-
- /// Returns the number of `Event`s logically contained in this `EventVec`.
- #[inline]
- pub fn len(&mut self) -> usize {
- self.events.len()
- }
-
- /// Tests whether this `EventVec` is logically empty.
- #[inline]
- pub fn is_empty(&mut self) -> bool {
- self.events.is_empty()
- }
-}
-
-impl<'a> IntoIterator for &'a EventVec {
- type IntoIter = Iter<'a>;
- type Item = (EventFlags, u64);
-
- #[inline]
- fn into_iter(self) -> Self::IntoIter {
- self.iter()
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/io/errno.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/io/errno.rs
deleted file mode 100644
index b01910138..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/io/errno.rs
+++ /dev/null
@@ -1,524 +0,0 @@
-//! The `rustix` `Errno` type.
-//!
-//! This type holds an OS error code, which conceptually corresponds to an
-//! `errno` value.
-//!
-//! # Safety
-//!
-//! Linux uses error codes in `-4095..0`; we use rustc attributes to describe
-//! this restricted range of values.
-#![allow(unsafe_code)]
-#![cfg_attr(not(rustc_attrs), allow(unused_unsafe))]
-
-use super::super::c;
-use crate::backend::fd::RawFd;
-use crate::backend::reg::{RetNumber, RetReg};
-use crate::io;
-use linux_raw_sys::errno;
-
-/// The error type for `rustix` APIs.
-///
-/// This is similar to `std::io::Error`, but only holds an OS error code,
-/// and no extra error value.
-#[repr(transparent)]
-#[doc(alias = "errno")]
-#[derive(Eq, PartialEq, Hash, Copy, Clone)]
-// Linux returns negated error codes, and we leave them in negated form, so
-// error codes are in `-4095..0`.
-#[cfg_attr(rustc_attrs, rustc_layout_scalar_valid_range_start(0xf001))]
-#[cfg_attr(rustc_attrs, rustc_layout_scalar_valid_range_end(0xffff))]
-pub struct Errno(u16);
-
-impl Errno {
- /// Extract an `Errno` value from a `std::io::Error`.
- ///
- /// This isn't a `From` conversion because it's expected to be relatively
- /// uncommon.
- #[cfg(feature = "std")]
- #[inline]
- pub fn from_io_error(io_err: &std::io::Error) -> Option<Self> {
- io_err.raw_os_error().and_then(|raw| {
- // `std::io::Error` could theoretically have arbitrary "OS error"
- // values, so check that they're in Linux's range.
- if (1..4096).contains(&raw) {
- Some(Self::from_errno(raw as u32))
- } else {
- None
- }
- })
- }
-
- /// Extract the raw OS error number from this error.
- #[inline]
- pub const fn raw_os_error(self) -> i32 {
- (self.0 as i16 as i32).wrapping_neg()
- }
-
- /// Construct an `Errno` from a raw OS error number.
- #[inline]
- pub const fn from_raw_os_error(raw: i32) -> Self {
- Self::from_errno(raw as u32)
- }
-
- /// Convert from a C errno value (which is positive) to an `Errno`.
- const fn from_errno(raw: u32) -> Self {
- // We store error values in negated form, so that we don't have to negate
- // them after every syscall.
- let encoded = raw.wrapping_neg() as u16;
-
- // TODO: Use Range::contains, once that's `const`.
- const_assert!(encoded >= 0xf001);
-
- // SAFETY: Linux syscalls return negated error values in the range
- // `-4095..0`, which we just asserted.
- unsafe { Self(encoded) }
- }
-}
-
-/// Check for an error from the result of a syscall which encodes a
-/// `c::c_int` on success.
-#[inline]
-pub(in crate::backend) fn try_decode_c_int<Num: RetNumber>(
- raw: RetReg<Num>,
-) -> io::Result<c::c_int> {
- if raw.is_in_range(-4095..0) {
- // SAFETY: `raw` must be in `-4095..0`, and we just checked that raw is
- // in that range.
- return Err(unsafe { Errno(raw.decode_error_code()) });
- }
-
- Ok(raw.decode_c_int())
-}
-
-/// Check for an error from the result of a syscall which encodes a
-/// `c::c_uint` on success.
-#[inline]
-pub(in crate::backend) fn try_decode_c_uint<Num: RetNumber>(
- raw: RetReg<Num>,
-) -> io::Result<c::c_uint> {
- if raw.is_in_range(-4095..0) {
- // SAFETY: `raw` must be in `-4095..0`, and we just checked that raw is
- // in that range.
- return Err(unsafe { Errno(raw.decode_error_code()) });
- }
-
- Ok(raw.decode_c_uint())
-}
-
-/// Check for an error from the result of a syscall which encodes a `usize` on
-/// success.
-#[inline]
-pub(in crate::backend) fn try_decode_usize<Num: RetNumber>(raw: RetReg<Num>) -> io::Result<usize> {
- if raw.is_in_range(-4095..0) {
- // SAFETY: `raw` must be in `-4095..0`, and we just checked that raw is
- // in that range.
- return Err(unsafe { Errno(raw.decode_error_code()) });
- }
-
- Ok(raw.decode_usize())
-}
-
-/// Check for an error from the result of a syscall which encodes a
-/// `*mut c_void` on success.
-#[inline]
-pub(in crate::backend) fn try_decode_void_star<Num: RetNumber>(
- raw: RetReg<Num>,
-) -> io::Result<*mut c::c_void> {
- if raw.is_in_range(-4095..0) {
- // SAFETY: `raw` must be in `-4095..0`, and we just checked that raw is
- // in that range.
- return Err(unsafe { Errno(raw.decode_error_code()) });
- }
-
- Ok(raw.decode_void_star())
-}
-
-/// Check for an error from the result of a syscall which encodes a
-/// `u64` on success.
-#[cfg(target_pointer_width = "64")]
-#[inline]
-pub(in crate::backend) fn try_decode_u64<Num: RetNumber>(raw: RetReg<Num>) -> io::Result<u64> {
- if raw.is_in_range(-4095..0) {
- // SAFETY: `raw` must be in `-4095..0`, and we just checked that raw is
- // in that range.
- return Err(unsafe { Errno(raw.decode_error_code()) });
- }
-
- Ok(raw.decode_u64())
-}
-
-/// Check for an error from the result of a syscall which encodes a file
-/// descriptor on success.
-///
-/// # Safety
-///
-/// This must only be used with syscalls which return file descriptors on
-/// success.
-#[inline]
-pub(in crate::backend) unsafe fn try_decode_raw_fd<Num: RetNumber>(
- raw: RetReg<Num>,
-) -> io::Result<RawFd> {
- // Instead of using `check_result` here, we just check for negative, since
- // this function is only used for system calls which return file
- // descriptors, and this produces smaller code.
- if raw.is_negative() {
- debug_assert!(raw.is_in_range(-4095..0));
-
- // Tell the optimizer that we know the value is in the error range.
- // This helps it avoid unnecessary integer conversions.
- #[cfg(core_intrinsics)]
- {
- core::intrinsics::assume(raw.is_in_range(-4095..0));
- }
-
- return Err(Errno(raw.decode_error_code()));
- }
-
- Ok(raw.decode_raw_fd())
-}
-
-/// Check for an error from the result of a syscall which encodes no value on
-/// success. On success, return the unconsumed `raw` value.
-///
-/// # Safety
-///
-/// This must only be used with syscalls which return no value on success.
-#[inline]
-pub(in crate::backend) unsafe fn try_decode_void<Num: RetNumber>(
- raw: RetReg<Num>,
-) -> io::Result<()> {
- // Instead of using `check_result` here, we just check for zero, since this
- // function is only used for system calls which have no other return value,
- // and this produces smaller code.
- if raw.is_nonzero() {
- debug_assert!(raw.is_in_range(-4095..0));
-
- // Tell the optimizer that we know the value is in the error range.
- // This helps it avoid unnecessary integer conversions.
- #[cfg(core_intrinsics)]
- {
- core::intrinsics::assume(raw.is_in_range(-4095..0));
- }
-
- return Err(Errno(raw.decode_error_code()));
- }
-
- raw.decode_void();
-
- Ok(())
-}
-
-/// Check for an error from the result of a syscall which does not return on
-/// success. On success, return the unconsumed `raw` value.
-///
-/// # Safety
-///
-/// This must only be used with syscalls which do not return on success.
-#[cfg(feature = "runtime")]
-#[inline]
-pub(in crate::backend) unsafe fn try_decode_error<Num: RetNumber>(raw: RetReg<Num>) -> io::Errno {
- debug_assert!(raw.is_in_range(-4095..0));
-
- // Tell the optimizer that we know the value is in the error range.
- // This helps it avoid unnecessary integer conversions.
- #[cfg(core_intrinsics)]
- {
- core::intrinsics::assume(raw.is_in_range(-4095..0));
- }
-
- Errno(raw.decode_error_code())
-}
-
-/// Return the contained `usize` value.
-#[cfg(not(debug_assertions))]
-#[inline]
-pub(in crate::backend) fn decode_usize_infallible<Num: RetNumber>(raw: RetReg<Num>) -> usize {
- raw.decode_usize()
-}
-
-/// Return the contained `c_int` value.
-#[cfg(not(debug_assertions))]
-#[inline]
-pub(in crate::backend) fn decode_c_uint_infallible<Num: RetNumber>(raw: RetReg<Num>) -> c::c_uint {
- raw.decode_c_uint()
-}
-
-impl Errno {
- /// `EACCES`
- #[doc(alias = "ACCES")]
- pub const ACCESS: Self = Self::from_errno(errno::EACCES);
- /// `EADDRINUSE`
- pub const ADDRINUSE: Self = Self::from_errno(errno::EADDRINUSE);
- /// `EADDRNOTAVAIL`
- pub const ADDRNOTAVAIL: Self = Self::from_errno(errno::EADDRNOTAVAIL);
- /// `EADV`
- pub const ADV: Self = Self::from_errno(errno::EADV);
- /// `EAFNOSUPPORT`
- pub const AFNOSUPPORT: Self = Self::from_errno(errno::EAFNOSUPPORT);
- /// `EAGAIN`
- pub const AGAIN: Self = Self::from_errno(errno::EAGAIN);
- /// `EALREADY`
- pub const ALREADY: Self = Self::from_errno(errno::EALREADY);
- /// `EBADE`
- pub const BADE: Self = Self::from_errno(errno::EBADE);
- /// `EBADF`
- pub const BADF: Self = Self::from_errno(errno::EBADF);
- /// `EBADFD`
- pub const BADFD: Self = Self::from_errno(errno::EBADFD);
- /// `EBADMSG`
- pub const BADMSG: Self = Self::from_errno(errno::EBADMSG);
- /// `EBADR`
- pub const BADR: Self = Self::from_errno(errno::EBADR);
- /// `EBADRQC`
- pub const BADRQC: Self = Self::from_errno(errno::EBADRQC);
- /// `EBADSLT`
- pub const BADSLT: Self = Self::from_errno(errno::EBADSLT);
- /// `EBFONT`
- pub const BFONT: Self = Self::from_errno(errno::EBFONT);
- /// `EBUSY`
- pub const BUSY: Self = Self::from_errno(errno::EBUSY);
- /// `ECANCELED`
- pub const CANCELED: Self = Self::from_errno(errno::ECANCELED);
- /// `ECHILD`
- pub const CHILD: Self = Self::from_errno(errno::ECHILD);
- /// `ECHRNG`
- pub const CHRNG: Self = Self::from_errno(errno::ECHRNG);
- /// `ECOMM`
- pub const COMM: Self = Self::from_errno(errno::ECOMM);
- /// `ECONNABORTED`
- pub const CONNABORTED: Self = Self::from_errno(errno::ECONNABORTED);
- /// `ECONNREFUSED`
- pub const CONNREFUSED: Self = Self::from_errno(errno::ECONNREFUSED);
- /// `ECONNRESET`
- pub const CONNRESET: Self = Self::from_errno(errno::ECONNRESET);
- /// `EDEADLK`
- pub const DEADLK: Self = Self::from_errno(errno::EDEADLK);
- /// `EDEADLOCK`
- pub const DEADLOCK: Self = Self::from_errno(errno::EDEADLOCK);
- /// `EDESTADDRREQ`
- pub const DESTADDRREQ: Self = Self::from_errno(errno::EDESTADDRREQ);
- /// `EDOM`
- pub const DOM: Self = Self::from_errno(errno::EDOM);
- /// `EDOTDOT`
- pub const DOTDOT: Self = Self::from_errno(errno::EDOTDOT);
- /// `EDQUOT`
- pub const DQUOT: Self = Self::from_errno(errno::EDQUOT);
- /// `EEXIST`
- pub const EXIST: Self = Self::from_errno(errno::EEXIST);
- /// `EFAULT`
- pub const FAULT: Self = Self::from_errno(errno::EFAULT);
- /// `EFBIG`
- pub const FBIG: Self = Self::from_errno(errno::EFBIG);
- /// `EHOSTDOWN`
- pub const HOSTDOWN: Self = Self::from_errno(errno::EHOSTDOWN);
- /// `EHOSTUNREACH`
- pub const HOSTUNREACH: Self = Self::from_errno(errno::EHOSTUNREACH);
- /// `EHWPOISON`
- pub const HWPOISON: Self = Self::from_errno(errno::EHWPOISON);
- /// `EIDRM`
- pub const IDRM: Self = Self::from_errno(errno::EIDRM);
- /// `EILSEQ`
- pub const ILSEQ: Self = Self::from_errno(errno::EILSEQ);
- /// `EINPROGRESS`
- pub const INPROGRESS: Self = Self::from_errno(errno::EINPROGRESS);
- /// `EINTR`.
- ///
- /// For a convenient way to retry system calls that exit with `INTR`, use
- /// [`retry_on_intr`].
- ///
- /// [`retry_on_intr`]: io::retry_on_intr
- pub const INTR: Self = Self::from_errno(errno::EINTR);
- /// `EINVAL`
- pub const INVAL: Self = Self::from_errno(errno::EINVAL);
- /// `EIO`
- pub const IO: Self = Self::from_errno(errno::EIO);
- /// `EISCONN`
- pub const ISCONN: Self = Self::from_errno(errno::EISCONN);
- /// `EISDIR`
- pub const ISDIR: Self = Self::from_errno(errno::EISDIR);
- /// `EISNAM`
- pub const ISNAM: Self = Self::from_errno(errno::EISNAM);
- /// `EKEYEXPIRED`
- pub const KEYEXPIRED: Self = Self::from_errno(errno::EKEYEXPIRED);
- /// `EKEYREJECTED`
- pub const KEYREJECTED: Self = Self::from_errno(errno::EKEYREJECTED);
- /// `EKEYREVOKED`
- pub const KEYREVOKED: Self = Self::from_errno(errno::EKEYREVOKED);
- /// `EL2HLT`
- pub const L2HLT: Self = Self::from_errno(errno::EL2HLT);
- /// `EL2NSYNC`
- pub const L2NSYNC: Self = Self::from_errno(errno::EL2NSYNC);
- /// `EL3HLT`
- pub const L3HLT: Self = Self::from_errno(errno::EL3HLT);
- /// `EL3RST`
- pub const L3RST: Self = Self::from_errno(errno::EL3RST);
- /// `ELIBACC`
- pub const LIBACC: Self = Self::from_errno(errno::ELIBACC);
- /// `ELIBBAD`
- pub const LIBBAD: Self = Self::from_errno(errno::ELIBBAD);
- /// `ELIBEXEC`
- pub const LIBEXEC: Self = Self::from_errno(errno::ELIBEXEC);
- /// `ELIBMAX`
- pub const LIBMAX: Self = Self::from_errno(errno::ELIBMAX);
- /// `ELIBSCN`
- pub const LIBSCN: Self = Self::from_errno(errno::ELIBSCN);
- /// `ELNRNG`
- pub const LNRNG: Self = Self::from_errno(errno::ELNRNG);
- /// `ELOOP`
- pub const LOOP: Self = Self::from_errno(errno::ELOOP);
- /// `EMEDIUMTYPE`
- pub const MEDIUMTYPE: Self = Self::from_errno(errno::EMEDIUMTYPE);
- /// `EMFILE`
- pub const MFILE: Self = Self::from_errno(errno::EMFILE);
- /// `EMLINK`
- pub const MLINK: Self = Self::from_errno(errno::EMLINK);
- /// `EMSGSIZE`
- pub const MSGSIZE: Self = Self::from_errno(errno::EMSGSIZE);
- /// `EMULTIHOP`
- pub const MULTIHOP: Self = Self::from_errno(errno::EMULTIHOP);
- /// `ENAMETOOLONG`
- pub const NAMETOOLONG: Self = Self::from_errno(errno::ENAMETOOLONG);
- /// `ENAVAIL`
- pub const NAVAIL: Self = Self::from_errno(errno::ENAVAIL);
- /// `ENETDOWN`
- pub const NETDOWN: Self = Self::from_errno(errno::ENETDOWN);
- /// `ENETRESET`
- pub const NETRESET: Self = Self::from_errno(errno::ENETRESET);
- /// `ENETUNREACH`
- pub const NETUNREACH: Self = Self::from_errno(errno::ENETUNREACH);
- /// `ENFILE`
- pub const NFILE: Self = Self::from_errno(errno::ENFILE);
- /// `ENOANO`
- pub const NOANO: Self = Self::from_errno(errno::ENOANO);
- /// `ENOBUFS`
- pub const NOBUFS: Self = Self::from_errno(errno::ENOBUFS);
- /// `ENOCSI`
- pub const NOCSI: Self = Self::from_errno(errno::ENOCSI);
- /// `ENODATA`
- #[doc(alias = "NOATTR")]
- pub const NODATA: Self = Self::from_errno(errno::ENODATA);
- /// `ENODEV`
- pub const NODEV: Self = Self::from_errno(errno::ENODEV);
- /// `ENOENT`
- pub const NOENT: Self = Self::from_errno(errno::ENOENT);
- /// `ENOEXEC`
- pub const NOEXEC: Self = Self::from_errno(errno::ENOEXEC);
- /// `ENOKEY`
- pub const NOKEY: Self = Self::from_errno(errno::ENOKEY);
- /// `ENOLCK`
- pub const NOLCK: Self = Self::from_errno(errno::ENOLCK);
- /// `ENOLINK`
- pub const NOLINK: Self = Self::from_errno(errno::ENOLINK);
- /// `ENOMEDIUM`
- pub const NOMEDIUM: Self = Self::from_errno(errno::ENOMEDIUM);
- /// `ENOMEM`
- pub const NOMEM: Self = Self::from_errno(errno::ENOMEM);
- /// `ENOMSG`
- pub const NOMSG: Self = Self::from_errno(errno::ENOMSG);
- /// `ENONET`
- pub const NONET: Self = Self::from_errno(errno::ENONET);
- /// `ENOPKG`
- pub const NOPKG: Self = Self::from_errno(errno::ENOPKG);
- /// `ENOPROTOOPT`
- pub const NOPROTOOPT: Self = Self::from_errno(errno::ENOPROTOOPT);
- /// `ENOSPC`
- pub const NOSPC: Self = Self::from_errno(errno::ENOSPC);
- /// `ENOSR`
- pub const NOSR: Self = Self::from_errno(errno::ENOSR);
- /// `ENOSTR`
- pub const NOSTR: Self = Self::from_errno(errno::ENOSTR);
- /// `ENOSYS`
- pub const NOSYS: Self = Self::from_errno(errno::ENOSYS);
- /// `ENOTBLK`
- pub const NOTBLK: Self = Self::from_errno(errno::ENOTBLK);
- /// `ENOTCONN`
- pub const NOTCONN: Self = Self::from_errno(errno::ENOTCONN);
- /// `ENOTDIR`
- pub const NOTDIR: Self = Self::from_errno(errno::ENOTDIR);
- /// `ENOTEMPTY`
- pub const NOTEMPTY: Self = Self::from_errno(errno::ENOTEMPTY);
- /// `ENOTNAM`
- pub const NOTNAM: Self = Self::from_errno(errno::ENOTNAM);
- /// `ENOTRECOVERABLE`
- pub const NOTRECOVERABLE: Self = Self::from_errno(errno::ENOTRECOVERABLE);
- /// `ENOTSOCK`
- pub const NOTSOCK: Self = Self::from_errno(errno::ENOTSOCK);
- /// `ENOTSUP`
- // On Linux, `ENOTSUP` has the same value as `EOPNOTSUPP`.
- pub const NOTSUP: Self = Self::from_errno(errno::EOPNOTSUPP);
- /// `ENOTTY`
- pub const NOTTY: Self = Self::from_errno(errno::ENOTTY);
- /// `ENOTUNIQ`
- pub const NOTUNIQ: Self = Self::from_errno(errno::ENOTUNIQ);
- /// `ENXIO`
- pub const NXIO: Self = Self::from_errno(errno::ENXIO);
- /// `EOPNOTSUPP`
- pub const OPNOTSUPP: Self = Self::from_errno(errno::EOPNOTSUPP);
- /// `EOVERFLOW`
- pub const OVERFLOW: Self = Self::from_errno(errno::EOVERFLOW);
- /// `EOWNERDEAD`
- pub const OWNERDEAD: Self = Self::from_errno(errno::EOWNERDEAD);
- /// `EPERM`
- pub const PERM: Self = Self::from_errno(errno::EPERM);
- /// `EPFNOSUPPORT`
- pub const PFNOSUPPORT: Self = Self::from_errno(errno::EPFNOSUPPORT);
- /// `EPIPE`
- pub const PIPE: Self = Self::from_errno(errno::EPIPE);
- /// `EPROTO`
- pub const PROTO: Self = Self::from_errno(errno::EPROTO);
- /// `EPROTONOSUPPORT`
- pub const PROTONOSUPPORT: Self = Self::from_errno(errno::EPROTONOSUPPORT);
- /// `EPROTOTYPE`
- pub const PROTOTYPE: Self = Self::from_errno(errno::EPROTOTYPE);
- /// `ERANGE`
- pub const RANGE: Self = Self::from_errno(errno::ERANGE);
- /// `EREMCHG`
- pub const REMCHG: Self = Self::from_errno(errno::EREMCHG);
- /// `EREMOTE`
- pub const REMOTE: Self = Self::from_errno(errno::EREMOTE);
- /// `EREMOTEIO`
- pub const REMOTEIO: Self = Self::from_errno(errno::EREMOTEIO);
- /// `ERESTART`
- pub const RESTART: Self = Self::from_errno(errno::ERESTART);
- /// `ERFKILL`
- pub const RFKILL: Self = Self::from_errno(errno::ERFKILL);
- /// `EROFS`
- pub const ROFS: Self = Self::from_errno(errno::EROFS);
- /// `ESHUTDOWN`
- pub const SHUTDOWN: Self = Self::from_errno(errno::ESHUTDOWN);
- /// `ESOCKTNOSUPPORT`
- pub const SOCKTNOSUPPORT: Self = Self::from_errno(errno::ESOCKTNOSUPPORT);
- /// `ESPIPE`
- pub const SPIPE: Self = Self::from_errno(errno::ESPIPE);
- /// `ESRCH`
- pub const SRCH: Self = Self::from_errno(errno::ESRCH);
- /// `ESRMNT`
- pub const SRMNT: Self = Self::from_errno(errno::ESRMNT);
- /// `ESTALE`
- pub const STALE: Self = Self::from_errno(errno::ESTALE);
- /// `ESTRPIPE`
- pub const STRPIPE: Self = Self::from_errno(errno::ESTRPIPE);
- /// `ETIME`
- pub const TIME: Self = Self::from_errno(errno::ETIME);
- /// `ETIMEDOUT`
- pub const TIMEDOUT: Self = Self::from_errno(errno::ETIMEDOUT);
- /// `E2BIG`
- #[doc(alias = "2BIG")]
- pub const TOOBIG: Self = Self::from_errno(errno::E2BIG);
- /// `ETOOMANYREFS`
- pub const TOOMANYREFS: Self = Self::from_errno(errno::ETOOMANYREFS);
- /// `ETXTBSY`
- pub const TXTBSY: Self = Self::from_errno(errno::ETXTBSY);
- /// `EUCLEAN`
- pub const UCLEAN: Self = Self::from_errno(errno::EUCLEAN);
- /// `EUNATCH`
- pub const UNATCH: Self = Self::from_errno(errno::EUNATCH);
- /// `EUSERS`
- pub const USERS: Self = Self::from_errno(errno::EUSERS);
- /// `EWOULDBLOCK`
- pub const WOULDBLOCK: Self = Self::from_errno(errno::EWOULDBLOCK);
- /// `EXDEV`
- pub const XDEV: Self = Self::from_errno(errno::EXDEV);
- /// `EXFULL`
- pub const XFULL: Self = Self::from_errno(errno::EXFULL);
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/io/io_slice.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/io/io_slice.rs
deleted file mode 100644
index fc8e64698..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/io/io_slice.rs
+++ /dev/null
@@ -1,98 +0,0 @@
-//! The following is derived from Rust's
-//! library/std/src/sys/unix/io.rs
-//! dca3f1b786efd27be3b325ed1e01e247aa589c3b.
-
-#![allow(unsafe_code)]
-use super::super::c;
-use core::marker::PhantomData;
-use core::slice;
-use linux_raw_sys::general::__kernel_size_t;
-
-/// <https://doc.rust-lang.org/nightly/std/io/struct.IoSlice.html>
-#[derive(Copy, Clone)]
-#[repr(transparent)]
-pub struct IoSlice<'a> {
- vec: c::iovec,
- _p: PhantomData<&'a [u8]>,
-}
-
-impl<'a> IoSlice<'a> {
- /// <https://doc.rust-lang.org/nightly/std/io/struct.IoSlice.html#method.new>
- #[inline]
- pub fn new(buf: &'a [u8]) -> IoSlice<'a> {
- IoSlice {
- vec: c::iovec {
- iov_base: buf.as_ptr() as *mut u8 as *mut c::c_void,
- iov_len: buf.len() as _,
- },
- _p: PhantomData,
- }
- }
-
- /// <https://doc.rust-lang.org/nightly/std/io/struct.IoSlice.html#method.advance>
- #[inline]
- pub fn advance(&mut self, n: usize) {
- if self.vec.iov_len < n as _ {
- panic!("advancing IoSlice beyond its length");
- }
-
- unsafe {
- self.vec.iov_len -= n as __kernel_size_t;
- self.vec.iov_base = self.vec.iov_base.add(n);
- }
- }
-
- /// <https://doc.rust-lang.org/nightly/std/io/struct.IoSlice.html#method.as_slice>
- #[inline]
- pub fn as_slice(&self) -> &[u8] {
- unsafe { slice::from_raw_parts(self.vec.iov_base as *mut u8, self.vec.iov_len as usize) }
- }
-}
-
-/// <https://doc.rust-lang.org/nightly/std/io/struct.IoSliceMut.html>
-#[repr(transparent)]
-pub struct IoSliceMut<'a> {
- vec: c::iovec,
- _p: PhantomData<&'a mut [u8]>,
-}
-
-impl<'a> IoSliceMut<'a> {
- /// <https://doc.rust-lang.org/nightly/std/io/struct.IoSliceMut.html#method.new>
- #[inline]
- pub fn new(buf: &'a mut [u8]) -> IoSliceMut<'a> {
- IoSliceMut {
- vec: c::iovec {
- iov_base: buf.as_mut_ptr() as *mut c::c_void,
- iov_len: buf.len() as _,
- },
- _p: PhantomData,
- }
- }
-
- /// <https://doc.rust-lang.org/nightly/std/io/struct.IoSliceMut.html#method.advance>
- #[inline]
- pub fn advance(&mut self, n: usize) {
- if self.vec.iov_len < n as _ {
- panic!("advancing IoSliceMut beyond its length");
- }
-
- unsafe {
- self.vec.iov_len -= n as __kernel_size_t;
- self.vec.iov_base = self.vec.iov_base.add(n);
- }
- }
-
- /// <https://doc.rust-lang.org/nightly/std/io/struct.IoSliceMut.html#method.as_slice>
- #[inline]
- pub fn as_slice(&self) -> &[u8] {
- unsafe { slice::from_raw_parts(self.vec.iov_base as *mut u8, self.vec.iov_len as usize) }
- }
-
- /// <https://doc.rust-lang.org/nightly/std/io/struct.IoSliceMut.html#method.as_slice_mut>
- #[inline]
- pub fn as_mut_slice(&mut self) -> &mut [u8] {
- unsafe {
- slice::from_raw_parts_mut(self.vec.iov_base as *mut u8, self.vec.iov_len as usize)
- }
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/io/mod.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/io/mod.rs
deleted file mode 100644
index f5c2bf3c0..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/io/mod.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-pub mod epoll;
-pub(crate) mod errno;
-#[cfg(not(feature = "std"))]
-pub(crate) mod io_slice;
-pub(crate) mod poll_fd;
-pub(crate) mod syscalls;
-pub(crate) mod types;
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/io/poll_fd.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/io/poll_fd.rs
deleted file mode 100644
index 252358331..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/io/poll_fd.rs
+++ /dev/null
@@ -1,93 +0,0 @@
-use crate::fd::{AsFd, BorrowedFd};
-use bitflags::bitflags;
-
-bitflags! {
- /// `POLL*` flags for use with [`poll`].
- ///
- /// [`poll`]: crate::io::poll
- pub struct PollFlags: u16 {
- /// `POLLIN`
- const IN = linux_raw_sys::general::POLLIN as u16;
- /// `POLLPRI`
- const PRI = linux_raw_sys::general::POLLPRI as u16;
- /// `POLLOUT`
- const OUT = linux_raw_sys::general::POLLOUT as u16;
- /// `POLLRDNORM`
- const RDNORM = linux_raw_sys::general::POLLRDNORM as u16;
- /// `POLLWRNORM`
- const WRNORM = linux_raw_sys::general::POLLWRNORM as u16;
- /// `POLLRDBAND`
- const RDBAND = linux_raw_sys::general::POLLRDBAND as u16;
- /// `POLLWRBAND`
- const WRBAND = linux_raw_sys::general::POLLWRBAND as u16;
- /// `POLLERR`
- const ERR = linux_raw_sys::general::POLLERR as u16;
- /// `POLLHUP`
- const HUP = linux_raw_sys::general::POLLHUP as u16;
- /// `POLLNVAL`
- const NVAL = linux_raw_sys::general::POLLNVAL as u16;
- /// `POLLRDHUP`
- const RDHUP = linux_raw_sys::general::POLLRDHUP as u16;
- }
-}
-
-/// `struct pollfd`—File descriptor and flags for use with [`poll`].
-///
-/// [`poll`]: crate::io::poll
-#[doc(alias = "pollfd")]
-#[repr(C)]
-#[derive(Debug, Clone)]
-pub struct PollFd<'fd> {
- pub(crate) fd: BorrowedFd<'fd>,
- pub(crate) events: u16,
- pub(crate) revents: u16,
-}
-
-impl<'fd> PollFd<'fd> {
- /// Constructs a new `PollFd` holding `fd` and `events`.
- #[inline]
- pub fn new<Fd: AsFd>(fd: &'fd Fd, events: PollFlags) -> Self {
- Self::from_borrowed_fd(fd.as_fd(), events)
- }
-
- /// Sets the contained file descriptor to `fd`.
- #[inline]
- pub fn set_fd<Fd: AsFd>(&mut self, fd: &'fd Fd) {
- self.fd = fd.as_fd();
- }
-
- /// Clears the ready events.
- #[inline]
- pub fn clear_revents(&mut self) {
- self.revents = 0;
- }
-
- /// Constructs a new `PollFd` holding `fd` and `events`.
- ///
- /// This is the same as `new`, but can be used to avoid borrowing the
- /// `BorrowedFd`, which can be tricky in situations where the `BorrowedFd`
- /// is a temporary.
- #[inline]
- pub fn from_borrowed_fd(fd: BorrowedFd<'fd>, events: PollFlags) -> Self {
- Self {
- fd,
- events: events.bits(),
- revents: 0,
- }
- }
-
- /// Returns the ready events.
- #[inline]
- pub fn revents(&self) -> PollFlags {
- // Use `unwrap()` here because in theory we know we know all the bits
- // the OS might set here, but OS's have added extensions in the past.
- PollFlags::from_bits(self.revents).unwrap()
- }
-}
-
-impl<'fd> AsFd for PollFd<'fd> {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- self.fd.as_fd()
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/io/syscalls.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/io/syscalls.rs
deleted file mode 100644
index 3acf9ffdb..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/io/syscalls.rs
+++ /dev/null
@@ -1,681 +0,0 @@
-//! linux_raw syscalls supporting `rustix::io`.
-//!
-//! # Safety
-//!
-//! See the `rustix::backend` module documentation for details.
-#![allow(unsafe_code)]
-#![allow(clippy::undocumented_unsafe_blocks)]
-
-use super::super::c;
-#[cfg(target_pointer_width = "64")]
-use super::super::conv::loff_t_from_u64;
-use super::super::conv::{
- by_ref, c_int, c_uint, opt_mut, pass_usize, raw_fd, ret, ret_c_uint, ret_discarded_fd,
- ret_owned_fd, ret_usize, slice, slice_mut, zero,
-};
-#[cfg(target_pointer_width = "32")]
-use super::super::conv::{hi, lo};
-use crate::fd::{AsFd, BorrowedFd, OwnedFd, RawFd};
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use crate::io::SpliceFlags;
-use crate::io::{
- self, epoll, DupFlags, EventfdFlags, FdFlags, IoSlice, IoSliceMut, IoSliceRaw, PipeFlags,
- PollFd, ReadWriteFlags,
-};
-#[cfg(all(feature = "fs", feature = "net"))]
-use crate::net::{RecvFlags, SendFlags};
-use core::cmp;
-use core::mem::MaybeUninit;
-#[cfg(target_os = "espidf")]
-use linux_raw_sys::general::F_DUPFD;
-use linux_raw_sys::general::{
- epoll_event, EPOLL_CTL_ADD, EPOLL_CTL_DEL, EPOLL_CTL_MOD, F_DUPFD_CLOEXEC, F_GETFD, F_SETFD,
- UIO_MAXIOV,
-};
-use linux_raw_sys::ioctl::{BLKPBSZGET, BLKSSZGET, FICLONE, FIONBIO, FIONREAD, TIOCEXCL, TIOCNXCL};
-#[cfg(any(target_arch = "aarch64", target_arch = "riscv64"))]
-use {
- super::super::conv::{opt_ref, size_of},
- linux_raw_sys::general::{__kernel_timespec, sigset_t},
-};
-
-#[inline]
-pub(crate) fn read(fd: BorrowedFd<'_>, buf: &mut [u8]) -> io::Result<usize> {
- let (buf_addr_mut, buf_len) = slice_mut(buf);
-
- unsafe { ret_usize(syscall!(__NR_read, fd, buf_addr_mut, buf_len)) }
-}
-
-#[inline]
-pub(crate) fn pread(fd: BorrowedFd<'_>, buf: &mut [u8], pos: u64) -> io::Result<usize> {
- let (buf_addr_mut, buf_len) = slice_mut(buf);
-
- // <https://github.com/torvalds/linux/blob/fcadab740480e0e0e9fa9bd272acd409884d431a/arch/arm64/kernel/sys32.c#L75>
- #[cfg(all(
- target_pointer_width = "32",
- any(target_arch = "arm", target_arch = "mips", target_arch = "power"),
- ))]
- unsafe {
- ret_usize(syscall!(
- __NR_pread64,
- fd,
- buf_addr_mut,
- buf_len,
- zero(),
- hi(pos),
- lo(pos)
- ))
- }
- #[cfg(all(
- target_pointer_width = "32",
- not(any(target_arch = "arm", target_arch = "mips", target_arch = "power")),
- ))]
- unsafe {
- ret_usize(syscall!(
- __NR_pread64,
- fd,
- buf_addr_mut,
- buf_len,
- hi(pos),
- lo(pos)
- ))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret_usize(syscall!(
- __NR_pread64,
- fd,
- buf_addr_mut,
- buf_len,
- loff_t_from_u64(pos)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn readv(fd: BorrowedFd<'_>, bufs: &mut [IoSliceMut<'_>]) -> io::Result<usize> {
- let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), max_iov())]);
-
- unsafe { ret_usize(syscall!(__NR_readv, fd, bufs_addr, bufs_len)) }
-}
-
-#[inline]
-pub(crate) fn preadv(
- fd: BorrowedFd<'_>,
- bufs: &mut [IoSliceMut<'_>],
- pos: u64,
-) -> io::Result<usize> {
- let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), max_iov())]);
-
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret_usize(syscall!(
- __NR_preadv,
- fd,
- bufs_addr,
- bufs_len,
- hi(pos),
- lo(pos)
- ))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret_usize(syscall!(
- __NR_preadv,
- fd,
- bufs_addr,
- bufs_len,
- loff_t_from_u64(pos)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn preadv2(
- fd: BorrowedFd<'_>,
- bufs: &mut [IoSliceMut<'_>],
- pos: u64,
- flags: ReadWriteFlags,
-) -> io::Result<usize> {
- let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), max_iov())]);
-
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret_usize(syscall!(
- __NR_preadv2,
- fd,
- bufs_addr,
- bufs_len,
- hi(pos),
- lo(pos),
- flags
- ))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret_usize(syscall!(
- __NR_preadv2,
- fd,
- bufs_addr,
- bufs_len,
- loff_t_from_u64(pos),
- flags
- ))
- }
-}
-
-#[inline]
-pub(crate) fn write(fd: BorrowedFd<'_>, buf: &[u8]) -> io::Result<usize> {
- let (buf_addr, buf_len) = slice(buf);
-
- unsafe { ret_usize(syscall_readonly!(__NR_write, fd, buf_addr, buf_len)) }
-}
-
-#[inline]
-pub(crate) fn pwrite(fd: BorrowedFd<'_>, buf: &[u8], pos: u64) -> io::Result<usize> {
- let (buf_addr, buf_len) = slice(buf);
-
- // <https://github.com/torvalds/linux/blob/fcadab740480e0e0e9fa9bd272acd409884d431a/arch/arm64/kernel/sys32.c#L81-L83>
- #[cfg(all(
- target_pointer_width = "32",
- any(target_arch = "arm", target_arch = "mips", target_arch = "power"),
- ))]
- unsafe {
- ret_usize(syscall_readonly!(
- __NR_pwrite64,
- fd,
- buf_addr,
- buf_len,
- zero(),
- hi(pos),
- lo(pos)
- ))
- }
- #[cfg(all(
- target_pointer_width = "32",
- not(any(target_arch = "arm", target_arch = "mips", target_arch = "power")),
- ))]
- unsafe {
- ret_usize(syscall_readonly!(
- __NR_pwrite64,
- fd,
- buf_addr,
- buf_len,
- hi(pos),
- lo(pos)
- ))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret_usize(syscall_readonly!(
- __NR_pwrite64,
- fd,
- buf_addr,
- buf_len,
- loff_t_from_u64(pos)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn writev(fd: BorrowedFd<'_>, bufs: &[IoSlice<'_>]) -> io::Result<usize> {
- let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), max_iov())]);
-
- unsafe { ret_usize(syscall_readonly!(__NR_writev, fd, bufs_addr, bufs_len)) }
-}
-
-#[inline]
-pub(crate) fn pwritev(fd: BorrowedFd<'_>, bufs: &[IoSlice<'_>], pos: u64) -> io::Result<usize> {
- let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), max_iov())]);
-
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret_usize(syscall_readonly!(
- __NR_pwritev,
- fd,
- bufs_addr,
- bufs_len,
- hi(pos),
- lo(pos)
- ))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret_usize(syscall_readonly!(
- __NR_pwritev,
- fd,
- bufs_addr,
- bufs_len,
- loff_t_from_u64(pos)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn pwritev2(
- fd: BorrowedFd<'_>,
- bufs: &[IoSlice<'_>],
- pos: u64,
- flags: ReadWriteFlags,
-) -> io::Result<usize> {
- let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), max_iov())]);
-
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret_usize(syscall_readonly!(
- __NR_pwritev2,
- fd,
- bufs_addr,
- bufs_len,
- hi(pos),
- lo(pos),
- flags
- ))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret_usize(syscall_readonly!(
- __NR_pwritev2,
- fd,
- bufs_addr,
- bufs_len,
- loff_t_from_u64(pos),
- flags
- ))
- }
-}
-
-/// The maximum number of buffers that can be passed into a vectored I/O system
-/// call on the current platform.
-const fn max_iov() -> usize {
- UIO_MAXIOV as usize
-}
-
-#[inline]
-pub(crate) unsafe fn close(fd: RawFd) {
- // See the documentation for [`io::close`] for why errors are ignored.
- syscall_readonly!(__NR_close, raw_fd(fd)).decode_void();
-}
-
-#[inline]
-pub(crate) fn eventfd(initval: u32, flags: EventfdFlags) -> io::Result<OwnedFd> {
- unsafe { ret_owned_fd(syscall_readonly!(__NR_eventfd2, c_uint(initval), flags)) }
-}
-
-#[inline]
-pub(crate) fn ioctl_fionread(fd: BorrowedFd<'_>) -> io::Result<u64> {
- unsafe {
- let mut result = MaybeUninit::<c::c_int>::uninit();
- ret(syscall!(__NR_ioctl, fd, c_uint(FIONREAD), &mut result))?;
- Ok(result.assume_init() as u64)
- }
-}
-
-#[inline]
-pub(crate) fn ioctl_fionbio(fd: BorrowedFd<'_>, value: bool) -> io::Result<()> {
- unsafe {
- let data = c::c_int::from(value);
- ret(syscall_readonly!(
- __NR_ioctl,
- fd,
- c_uint(FIONBIO),
- by_ref(&data)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn ioctl_tiocexcl(fd: BorrowedFd<'_>) -> io::Result<()> {
- unsafe { ret(syscall_readonly!(__NR_ioctl, fd, c_uint(TIOCEXCL))) }
-}
-
-#[inline]
-pub(crate) fn ioctl_tiocnxcl(fd: BorrowedFd<'_>) -> io::Result<()> {
- unsafe { ret(syscall_readonly!(__NR_ioctl, fd, c_uint(TIOCNXCL))) }
-}
-
-#[inline]
-pub(crate) fn ioctl_blksszget(fd: BorrowedFd) -> io::Result<u32> {
- let mut result = MaybeUninit::<c::c_uint>::uninit();
- unsafe {
- ret(syscall!(__NR_ioctl, fd, c_uint(BLKSSZGET), &mut result))?;
- Ok(result.assume_init() as u32)
- }
-}
-
-#[inline]
-pub(crate) fn ioctl_blkpbszget(fd: BorrowedFd) -> io::Result<u32> {
- let mut result = MaybeUninit::<c::c_uint>::uninit();
- unsafe {
- ret(syscall!(__NR_ioctl, fd, c_uint(BLKPBSZGET), &mut result))?;
- Ok(result.assume_init() as u32)
- }
-}
-
-#[inline]
-pub(crate) fn ioctl_ficlone(fd: BorrowedFd<'_>, src_fd: BorrowedFd<'_>) -> io::Result<()> {
- unsafe { ret(syscall_readonly!(__NR_ioctl, fd, c_uint(FICLONE), src_fd)) }
-}
-
-#[cfg(all(feature = "fs", feature = "net"))]
-pub(crate) fn is_read_write(fd: BorrowedFd<'_>) -> io::Result<(bool, bool)> {
- let (mut read, mut write) = crate::fs::fd::_is_file_read_write(fd)?;
- let mut not_socket = false;
- if read {
- // Do a `recv` with `PEEK` and `DONTWAIT` for 1 byte. A 0 indicates
- // the read side is shut down; an `EWOULDBLOCK` indicates the read
- // side is still open.
- //
- // TODO: This code would benefit from having a better way to read into
- // uninitialized memory.
- let mut buf = [0];
- match super::super::net::syscalls::recv(fd, &mut buf, RecvFlags::PEEK | RecvFlags::DONTWAIT)
- {
- Ok(0) => read = false,
- Err(err) => {
- #[allow(unreachable_patterns)] // `EAGAIN` may equal `EWOULDBLOCK`
- match err {
- io::Errno::AGAIN | io::Errno::WOULDBLOCK => (),
- io::Errno::NOTSOCK => not_socket = true,
- _ => return Err(err),
- }
- }
- Ok(_) => (),
- }
- }
- if write && !not_socket {
- // Do a `send` with `DONTWAIT` for 0 bytes. An `EPIPE` indicates
- // the write side is shut down.
- #[allow(unreachable_patterns)] // `EAGAIN` equals `EWOULDBLOCK`
- match super::super::net::syscalls::send(fd, &[], SendFlags::DONTWAIT) {
- // TODO or-patterns when we don't need 1.51
- Err(io::Errno::AGAIN) => (),
- Err(io::Errno::WOULDBLOCK) => (),
- Err(io::Errno::NOTSOCK) => (),
- Err(io::Errno::PIPE) => write = false,
- Err(err) => return Err(err),
- Ok(_) => (),
- }
- }
- Ok((read, write))
-}
-
-#[inline]
-pub(crate) fn dup(fd: BorrowedFd<'_>) -> io::Result<OwnedFd> {
- unsafe { ret_owned_fd(syscall_readonly!(__NR_dup, fd)) }
-}
-
-#[inline]
-pub(crate) fn dup2(fd: BorrowedFd<'_>, new: &mut OwnedFd) -> io::Result<()> {
- #[cfg(any(target_arch = "aarch64", target_arch = "riscv64"))]
- {
- // We don't need to worry about the difference between `dup2` and
- // `dup3` when the file descriptors are equal because we have an
- // `&mut OwnedFd` which means `fd` doesn't alias it.
- dup3(fd, new, DupFlags::empty())
- }
-
- #[cfg(not(any(target_arch = "aarch64", target_arch = "riscv64")))]
- unsafe {
- ret_discarded_fd(syscall_readonly!(__NR_dup2, fd, new.as_fd()))
- }
-}
-
-#[inline]
-pub(crate) fn dup3(fd: BorrowedFd<'_>, new: &mut OwnedFd, flags: DupFlags) -> io::Result<()> {
- unsafe { ret_discarded_fd(syscall_readonly!(__NR_dup3, fd, new.as_fd(), flags)) }
-}
-
-#[inline]
-pub(crate) fn fcntl_getfd(fd: BorrowedFd<'_>) -> io::Result<FdFlags> {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret_c_uint(syscall_readonly!(__NR_fcntl64, fd, c_uint(F_GETFD)))
- .map(FdFlags::from_bits_truncate)
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret_c_uint(syscall_readonly!(__NR_fcntl, fd, c_uint(F_GETFD)))
- .map(FdFlags::from_bits_truncate)
- }
-}
-
-#[inline]
-pub(crate) fn fcntl_setfd(fd: BorrowedFd<'_>, flags: FdFlags) -> io::Result<()> {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret(syscall_readonly!(__NR_fcntl64, fd, c_uint(F_SETFD), flags))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret(syscall_readonly!(__NR_fcntl, fd, c_uint(F_SETFD), flags))
- }
-}
-
-#[cfg(target_os = "espidf")]
-#[inline]
-pub(crate) fn fcntl_dupfd(fd: BorrowedFd<'_>, min: RawFd) -> io::Result<OwnedFd> {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret_owned_fd(syscall_readonly!(
- __NR_fcntl64,
- fd,
- c_uint(F_DUPFD),
- raw_fd(min)
- ))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret_owned_fd(syscall_readonly!(
- __NR_fcntl,
- fd,
- c_uint(F_DUPFD),
- raw_fd(min)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn fcntl_dupfd_cloexec(fd: BorrowedFd<'_>, min: RawFd) -> io::Result<OwnedFd> {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret_owned_fd(syscall_readonly!(
- __NR_fcntl64,
- fd,
- c_uint(F_DUPFD_CLOEXEC),
- raw_fd(min)
- ))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret_owned_fd(syscall_readonly!(
- __NR_fcntl,
- fd,
- c_uint(F_DUPFD_CLOEXEC),
- raw_fd(min)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn pipe_with(flags: PipeFlags) -> io::Result<(OwnedFd, OwnedFd)> {
- unsafe {
- let mut result = MaybeUninit::<[OwnedFd; 2]>::uninit();
- ret(syscall!(__NR_pipe2, &mut result, flags))?;
- let [p0, p1] = result.assume_init();
- Ok((p0, p1))
- }
-}
-
-#[inline]
-pub(crate) fn pipe() -> io::Result<(OwnedFd, OwnedFd)> {
- // aarch64 and risc64 omit `__NR_pipe`. On mips, `__NR_pipe` uses a special
- // calling convention, but using it is not worth complicating our syscall
- // wrapping infrastructure at this time.
- #[cfg(any(
- target_arch = "aarch64",
- target_arch = "mips",
- target_arch = "mips64",
- target_arch = "riscv64",
- ))]
- {
- pipe_with(PipeFlags::empty())
- }
- #[cfg(not(any(
- target_arch = "aarch64",
- target_arch = "mips",
- target_arch = "mips64",
- target_arch = "riscv64",
- )))]
- unsafe {
- let mut result = MaybeUninit::<[OwnedFd; 2]>::uninit();
- ret(syscall!(__NR_pipe, &mut result))?;
- let [p0, p1] = result.assume_init();
- Ok((p0, p1))
- }
-}
-
-#[inline]
-pub(crate) fn poll(fds: &mut [PollFd<'_>], timeout: c::c_int) -> io::Result<usize> {
- let (fds_addr_mut, fds_len) = slice_mut(fds);
-
- #[cfg(any(target_arch = "aarch64", target_arch = "riscv64"))]
- unsafe {
- let timeout = if timeout >= 0 {
- Some(__kernel_timespec {
- tv_sec: (timeout as i64) / 1000,
- tv_nsec: (timeout as i64) % 1000 * 1_000_000,
- })
- } else {
- None
- };
- ret_usize(syscall!(
- __NR_ppoll,
- fds_addr_mut,
- fds_len,
- opt_ref(timeout.as_ref()),
- zero(),
- size_of::<sigset_t, _>()
- ))
- }
- #[cfg(not(any(target_arch = "aarch64", target_arch = "riscv64")))]
- unsafe {
- ret_usize(syscall!(__NR_poll, fds_addr_mut, fds_len, c_int(timeout)))
- }
-}
-
-#[inline]
-pub(crate) fn epoll_create(flags: epoll::CreateFlags) -> io::Result<OwnedFd> {
- unsafe { ret_owned_fd(syscall_readonly!(__NR_epoll_create1, flags)) }
-}
-
-#[inline]
-pub(crate) unsafe fn epoll_add(
- epfd: BorrowedFd<'_>,
- fd: c::c_int,
- event: &epoll_event,
-) -> io::Result<()> {
- ret(syscall_readonly!(
- __NR_epoll_ctl,
- epfd,
- c_uint(EPOLL_CTL_ADD),
- raw_fd(fd),
- by_ref(event)
- ))
-}
-
-#[inline]
-pub(crate) unsafe fn epoll_mod(
- epfd: BorrowedFd<'_>,
- fd: c::c_int,
- event: &epoll_event,
-) -> io::Result<()> {
- ret(syscall_readonly!(
- __NR_epoll_ctl,
- epfd,
- c_uint(EPOLL_CTL_MOD),
- raw_fd(fd),
- by_ref(event)
- ))
-}
-
-#[inline]
-pub(crate) unsafe fn epoll_del(epfd: BorrowedFd<'_>, fd: c::c_int) -> io::Result<()> {
- ret(syscall_readonly!(
- __NR_epoll_ctl,
- epfd,
- c_uint(EPOLL_CTL_DEL),
- raw_fd(fd),
- zero()
- ))
-}
-
-#[inline]
-pub(crate) fn epoll_wait(
- epfd: BorrowedFd<'_>,
- events: *mut epoll_event,
- num_events: usize,
- timeout: c::c_int,
-) -> io::Result<usize> {
- #[cfg(not(any(target_arch = "aarch64", target_arch = "riscv64")))]
- unsafe {
- ret_usize(syscall!(
- __NR_epoll_wait,
- epfd,
- events,
- pass_usize(num_events),
- c_int(timeout)
- ))
- }
- #[cfg(any(target_arch = "aarch64", target_arch = "riscv64"))]
- unsafe {
- ret_usize(syscall!(
- __NR_epoll_pwait,
- epfd,
- events,
- pass_usize(num_events),
- c_int(timeout),
- zero()
- ))
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub fn splice(
- fd_in: BorrowedFd,
- off_in: Option<&mut u64>,
- fd_out: BorrowedFd,
- off_out: Option<&mut u64>,
- len: usize,
- flags: SpliceFlags,
-) -> io::Result<usize> {
- unsafe {
- ret_usize(syscall!(
- __NR_splice,
- fd_in,
- opt_mut(off_in),
- fd_out,
- opt_mut(off_out),
- pass_usize(len),
- c_uint(flags.bits())
- ))
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub unsafe fn vmsplice(
- fd: BorrowedFd,
- bufs: &[IoSliceRaw],
- flags: SpliceFlags,
-) -> io::Result<usize> {
- let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), max_iov())]);
- ret_usize(syscall!(
- __NR_vmsplice,
- fd,
- bufs_addr,
- bufs_len,
- c_uint(flags.bits())
- ))
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/io/types.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/io/types.rs
deleted file mode 100644
index cb6c6acef..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/io/types.rs
+++ /dev/null
@@ -1,129 +0,0 @@
-use super::super::c;
-use bitflags::bitflags;
-use core::marker::PhantomData;
-
-bitflags! {
- /// `FD_*` constants for use with [`fcntl_getfd`] and [`fcntl_setfd`].
- ///
- /// [`fcntl_getfd`]: crate::io::fcntl_getfd
- /// [`fcntl_setfd`]: crate::io::fcntl_setfd
- pub struct FdFlags: c::c_uint {
- /// `FD_CLOEXEC`
- const CLOEXEC = linux_raw_sys::general::FD_CLOEXEC;
- }
-}
-
-bitflags! {
- /// `RWF_*` constants for use with [`preadv2`] and [`pwritev2`].
- ///
- /// [`preadv2`]: crate::io::preadv2
- /// [`pwritev2`]: crate::io::pwritev
- pub struct ReadWriteFlags: c::c_uint {
- /// `RWF_DSYNC` (since Linux 4.7)
- const DSYNC = linux_raw_sys::general::RWF_DSYNC;
- /// `RWF_HIPRI` (since Linux 4.6)
- const HIPRI = linux_raw_sys::general::RWF_HIPRI;
- /// `RWF_SYNC` (since Linux 4.7)
- const SYNC = linux_raw_sys::general::RWF_SYNC;
- /// `RWF_NOWAIT` (since Linux 4.14)
- const NOWAIT = linux_raw_sys::general::RWF_NOWAIT;
- /// `RWF_APPEND` (since Linux 4.16)
- const APPEND = linux_raw_sys::general::RWF_APPEND;
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-bitflags! {
- /// `SPLICE_F_*` constants for use with [`splice`] and [`vmsplice`].
- pub struct SpliceFlags: c::c_uint {
- /// `SPLICE_F_MOVE`
- const MOVE = linux_raw_sys::general::SPLICE_F_MOVE;
- /// `SPLICE_F_NONBLOCK`
- const NONBLOCK = linux_raw_sys::general::SPLICE_F_NONBLOCK;
- /// `SPLICE_F_MORE`
- const MORE = linux_raw_sys::general::SPLICE_F_MORE;
- /// `SPLICE_F_GIFT`
- const GIFT = linux_raw_sys::general::SPLICE_F_GIFT;
- }
-}
-
-bitflags! {
- /// `O_*` constants for use with [`dup2`].
- ///
- /// [`dup2`]: crate::io::dup2
- pub struct DupFlags: c::c_uint {
- /// `O_CLOEXEC`
- const CLOEXEC = linux_raw_sys::general::O_CLOEXEC;
- }
-}
-
-bitflags! {
- /// `O_*` constants for use with [`pipe_with`].
- ///
- /// [`pipe_with`]: crate::io::pipe_with
- pub struct PipeFlags: c::c_uint {
- /// `O_CLOEXEC`
- const CLOEXEC = linux_raw_sys::general::O_CLOEXEC;
- /// `O_DIRECT`
- const DIRECT = linux_raw_sys::general::O_DIRECT;
- /// `O_NONBLOCK`
- const NONBLOCK = linux_raw_sys::general::O_NONBLOCK;
- }
-}
-
-bitflags! {
- /// `EFD_*` flags for use with [`eventfd`].
- ///
- /// [`eventfd`]: crate::io::eventfd
- pub struct EventfdFlags: c::c_uint {
- /// `EFD_CLOEXEC`
- const CLOEXEC = linux_raw_sys::general::EFD_CLOEXEC;
- /// `EFD_NONBLOCK`
- const NONBLOCK = linux_raw_sys::general::EFD_NONBLOCK;
- /// `EFD_SEMAPHORE`
- const SEMAPHORE = linux_raw_sys::general::EFD_SEMAPHORE;
- }
-}
-
-/// `PIPE_BUF`—The maximum size of a write to a pipe guaranteed to be atomic.
-pub const PIPE_BUF: usize = linux_raw_sys::general::PIPE_BUF as usize;
-
-pub(crate) const AT_FDCWD: c::c_int = linux_raw_sys::general::AT_FDCWD;
-pub(crate) const STDIN_FILENO: c::c_uint = linux_raw_sys::general::STDIN_FILENO;
-pub(crate) const STDOUT_FILENO: c::c_uint = linux_raw_sys::general::STDOUT_FILENO;
-pub(crate) const STDERR_FILENO: c::c_uint = linux_raw_sys::general::STDERR_FILENO;
-
-/// A buffer type used with `vmsplice`.
-/// It is guaranteed to be ABI compatible with the iovec type on Unix platforms
-/// and `WSABUF` on Windows. Unlike `IoSlice` and `IoSliceMut` it is
-/// semantically like a raw pointer, and therefore can be shared or mutated as
-/// needed.
-#[repr(transparent)]
-pub struct IoSliceRaw<'a> {
- _buf: c::iovec,
- _lifetime: PhantomData<&'a ()>,
-}
-
-impl<'a> IoSliceRaw<'a> {
- /// Creates a new `IoSlice` wrapping a byte slice.
- pub fn from_slice(buf: &'a [u8]) -> Self {
- IoSliceRaw {
- _buf: c::iovec {
- iov_base: buf.as_ptr() as *mut u8 as *mut c::c_void,
- iov_len: buf.len() as _,
- },
- _lifetime: PhantomData,
- }
- }
-
- /// Creates a new `IoSlice` wrapping a mutable byte slice.
- pub fn from_slice_mut(buf: &'a mut [u8]) -> Self {
- IoSliceRaw {
- _buf: c::iovec {
- iov_base: buf.as_mut_ptr() as *mut c::c_void,
- iov_len: buf.len() as _,
- },
- _lifetime: PhantomData,
- }
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/io_uring/mod.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/io_uring/mod.rs
deleted file mode 100644
index ef944f04d..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/io_uring/mod.rs
+++ /dev/null
@@ -1 +0,0 @@
-pub(crate) mod syscalls;
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/io_uring/syscalls.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/io_uring/syscalls.rs
deleted file mode 100644
index 16655fe77..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/io_uring/syscalls.rs
+++ /dev/null
@@ -1,63 +0,0 @@
-//! linux_raw syscalls supporting `rustix::io_uring`.
-//!
-//! # Safety
-//!
-//! See the `rustix::backend::syscalls` module documentation for details.
-#![allow(unsafe_code)]
-#![allow(clippy::undocumented_unsafe_blocks)]
-
-use super::super::conv::{by_mut, c_uint, pass_usize, ret_c_uint, ret_owned_fd};
-use crate::fd::{BorrowedFd, OwnedFd};
-use crate::io;
-use crate::io_uring::{io_uring_params, IoringEnterFlags, IoringRegisterOp};
-use core::ffi::c_void;
-
-#[inline]
-pub(crate) fn io_uring_setup(entries: u32, params: &mut io_uring_params) -> io::Result<OwnedFd> {
- unsafe {
- ret_owned_fd(syscall!(
- __NR_io_uring_setup,
- c_uint(entries),
- by_mut(params)
- ))
- }
-}
-
-#[inline]
-pub(crate) unsafe fn io_uring_register(
- fd: BorrowedFd<'_>,
- opcode: IoringRegisterOp,
- arg: *const c_void,
- nr_args: u32,
-) -> io::Result<u32> {
- ret_c_uint(syscall_readonly!(
- __NR_io_uring_register,
- fd,
- c_uint(opcode as u32),
- arg,
- c_uint(nr_args)
- ))
-}
-
-#[inline]
-pub(crate) unsafe fn io_uring_enter(
- fd: BorrowedFd<'_>,
- to_submit: u32,
- min_complete: u32,
- flags: IoringEnterFlags,
- arg: *const c_void,
- size: usize,
-) -> io::Result<u32> {
- // This is not `_readonly` because `io_uring_enter` waits for I/O to
- // complete, and I/O could involve writing to memory buffers, which
- // could be a side effect depended on by the caller.
- ret_c_uint(syscall!(
- __NR_io_uring_enter,
- fd,
- c_uint(to_submit),
- c_uint(min_complete),
- flags,
- arg,
- pass_usize(size)
- ))
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/mm/mod.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/mm/mod.rs
deleted file mode 100644
index 1e0181a99..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/mm/mod.rs
+++ /dev/null
@@ -1,2 +0,0 @@
-pub(crate) mod syscalls;
-pub(crate) mod types;
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/mm/syscalls.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/mm/syscalls.rs
deleted file mode 100644
index 8fa6a3ec3..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/mm/syscalls.rs
+++ /dev/null
@@ -1,214 +0,0 @@
-//! linux_raw syscalls supporting `rustix::io`.
-//!
-//! # Safety
-//!
-//! See the `rustix::backend` module documentation for details.
-#![allow(unsafe_code)]
-#![allow(clippy::undocumented_unsafe_blocks)]
-
-use super::super::c;
-#[cfg(target_pointer_width = "64")]
-use super::super::conv::loff_t_from_u64;
-use super::super::conv::{c_uint, no_fd, pass_usize, ret, ret_owned_fd, ret_void_star};
-use super::types::{
- Advice, MapFlags, MlockFlags, MprotectFlags, MremapFlags, MsyncFlags, ProtFlags,
- UserfaultfdFlags,
-};
-use crate::fd::{BorrowedFd, OwnedFd};
-use crate::io;
-#[cfg(target_pointer_width = "32")]
-use core::convert::TryInto;
-use linux_raw_sys::general::MAP_ANONYMOUS;
-
-#[inline]
-pub(crate) fn madvise(addr: *mut c::c_void, len: usize, advice: Advice) -> io::Result<()> {
- unsafe {
- ret(syscall!(
- __NR_madvise,
- addr,
- pass_usize(len),
- c_uint(advice as c::c_uint)
- ))
- }
-}
-
-#[inline]
-pub(crate) unsafe fn msync(addr: *mut c::c_void, len: usize, flags: MsyncFlags) -> io::Result<()> {
- ret(syscall!(__NR_msync, addr, pass_usize(len), flags))
-}
-
-/// # Safety
-///
-/// `mmap` is primarily unsafe due to the `addr` parameter, as anything working
-/// with memory pointed to by raw pointers is unsafe.
-#[inline]
-pub(crate) unsafe fn mmap(
- addr: *mut c::c_void,
- length: usize,
- prot: ProtFlags,
- flags: MapFlags,
- fd: BorrowedFd<'_>,
- offset: u64,
-) -> io::Result<*mut c::c_void> {
- #[cfg(target_pointer_width = "32")]
- {
- ret_void_star(syscall!(
- __NR_mmap2,
- addr,
- pass_usize(length),
- prot,
- flags,
- fd,
- (offset / 4096)
- .try_into()
- .map(pass_usize)
- .map_err(|_| io::Errno::INVAL)?
- ))
- }
- #[cfg(target_pointer_width = "64")]
- {
- ret_void_star(syscall!(
- __NR_mmap,
- addr,
- pass_usize(length),
- prot,
- flags,
- fd,
- loff_t_from_u64(offset)
- ))
- }
-}
-
-/// # Safety
-///
-/// `mmap` is primarily unsafe due to the `addr` parameter, as anything working
-/// with memory pointed to by raw pointers is unsafe.
-#[inline]
-pub(crate) unsafe fn mmap_anonymous(
- addr: *mut c::c_void,
- length: usize,
- prot: ProtFlags,
- flags: MapFlags,
-) -> io::Result<*mut c::c_void> {
- #[cfg(target_pointer_width = "32")]
- {
- ret_void_star(syscall!(
- __NR_mmap2,
- addr,
- pass_usize(length),
- prot,
- c_uint(flags.bits() | MAP_ANONYMOUS),
- no_fd(),
- pass_usize(0)
- ))
- }
- #[cfg(target_pointer_width = "64")]
- {
- ret_void_star(syscall!(
- __NR_mmap,
- addr,
- pass_usize(length),
- prot,
- c_uint(flags.bits() | MAP_ANONYMOUS),
- no_fd(),
- loff_t_from_u64(0)
- ))
- }
-}
-
-#[inline]
-pub(crate) unsafe fn mprotect(
- ptr: *mut c::c_void,
- len: usize,
- flags: MprotectFlags,
-) -> io::Result<()> {
- ret(syscall!(__NR_mprotect, ptr, pass_usize(len), flags))
-}
-
-/// # Safety
-///
-/// `munmap` is primarily unsafe due to the `addr` parameter, as anything
-/// working with memory pointed to by raw pointers is unsafe.
-#[inline]
-pub(crate) unsafe fn munmap(addr: *mut c::c_void, length: usize) -> io::Result<()> {
- ret(syscall!(__NR_munmap, addr, pass_usize(length)))
-}
-
-/// # Safety
-///
-/// `mremap` is primarily unsafe due to the `old_address` parameter, as
-/// anything working with memory pointed to by raw pointers is unsafe.
-#[inline]
-pub(crate) unsafe fn mremap(
- old_address: *mut c::c_void,
- old_size: usize,
- new_size: usize,
- flags: MremapFlags,
-) -> io::Result<*mut c::c_void> {
- ret_void_star(syscall!(
- __NR_mremap,
- old_address,
- pass_usize(old_size),
- pass_usize(new_size),
- flags
- ))
-}
-
-/// # Safety
-///
-/// `mremap_fixed` is primarily unsafe due to the `old_address` and
-/// `new_address` parameters, as anything working with memory pointed to by raw
-/// pointers is unsafe.
-#[inline]
-pub(crate) unsafe fn mremap_fixed(
- old_address: *mut c::c_void,
- old_size: usize,
- new_size: usize,
- flags: MremapFlags,
- new_address: *mut c::c_void,
-) -> io::Result<*mut c::c_void> {
- ret_void_star(syscall!(
- __NR_mremap,
- old_address,
- pass_usize(old_size),
- pass_usize(new_size),
- flags,
- new_address
- ))
-}
-
-/// # Safety
-///
-/// `mlock` operates on raw pointers and may round out to the nearest page
-/// boundaries.
-#[inline]
-pub(crate) unsafe fn mlock(addr: *mut c::c_void, length: usize) -> io::Result<()> {
- ret(syscall!(__NR_mlock, addr, pass_usize(length)))
-}
-
-/// # Safety
-///
-/// `mlock_with` operates on raw pointers and may round out to the nearest page
-/// boundaries.
-#[inline]
-pub(crate) unsafe fn mlock_with(
- addr: *mut c::c_void,
- length: usize,
- flags: MlockFlags,
-) -> io::Result<()> {
- ret(syscall!(__NR_mlock2, addr, pass_usize(length), flags))
-}
-
-/// # Safety
-///
-/// `munlock` operates on raw pointers and may round out to the nearest page
-/// boundaries.
-#[inline]
-pub(crate) unsafe fn munlock(addr: *mut c::c_void, length: usize) -> io::Result<()> {
- ret(syscall!(__NR_munlock, addr, pass_usize(length)))
-}
-
-#[inline]
-pub(crate) unsafe fn userfaultfd(flags: UserfaultfdFlags) -> io::Result<OwnedFd> {
- ret_owned_fd(syscall_readonly!(__NR_userfaultfd, flags))
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/mm/types.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/mm/types.rs
deleted file mode 100644
index a58dd76be..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/mm/types.rs
+++ /dev/null
@@ -1,208 +0,0 @@
-use super::super::c;
-use bitflags::bitflags;
-
-bitflags! {
- /// `PROT_*` flags for use with [`mmap`].
- ///
- /// For `PROT_NONE`, use `ProtFlags::empty()`.
- ///
- /// [`mmap`]: crate::io::mmap
- pub struct ProtFlags: u32 {
- /// `PROT_READ`
- const READ = linux_raw_sys::general::PROT_READ;
- /// `PROT_WRITE`
- const WRITE = linux_raw_sys::general::PROT_WRITE;
- /// `PROT_EXEC`
- const EXEC = linux_raw_sys::general::PROT_EXEC;
- }
-}
-
-bitflags! {
- /// `PROT_*` flags for use with [`mprotect`].
- ///
- /// For `PROT_NONE`, use `MprotectFlags::empty()`.
- ///
- /// [`mprotect`]: crate::io::mprotect
- pub struct MprotectFlags: u32 {
- /// `PROT_READ`
- const READ = linux_raw_sys::general::PROT_READ;
- /// `PROT_WRITE`
- const WRITE = linux_raw_sys::general::PROT_WRITE;
- /// `PROT_EXEC`
- const EXEC = linux_raw_sys::general::PROT_EXEC;
- /// `PROT_GROWSUP`
- const GROWSUP = linux_raw_sys::general::PROT_GROWSUP;
- /// `PROT_GROWSDOWN`
- const GROWSDOWN = linux_raw_sys::general::PROT_GROWSDOWN;
- }
-}
-
-bitflags! {
- /// `MAP_*` flags for use with [`mmap`].
- ///
- /// For `MAP_ANONYMOUS` (aka `MAP_ANON`), see [`mmap_anonymous`].
- ///
- /// [`mmap`]: crate::io::mmap
- /// [`mmap_anonymous`]: crates::io::mmap_anonymous
- pub struct MapFlags: u32 {
- /// `MAP_SHARED`
- const SHARED = linux_raw_sys::general::MAP_SHARED;
- /// `MAP_SHARED_VALIDATE` (since Linux 4.15)
- const SHARED_VALIDATE = linux_raw_sys::general::MAP_SHARED_VALIDATE;
- /// `MAP_PRIVATE`
- const PRIVATE = linux_raw_sys::general::MAP_PRIVATE;
- /// `MAP_DENYWRITE`
- const DENYWRITE = linux_raw_sys::general::MAP_DENYWRITE;
- /// `MAP_FIXED`
- const FIXED = linux_raw_sys::general::MAP_FIXED;
- /// `MAP_FIXED_NOREPLACE` (since Linux 4.17)
- const FIXED_NOREPLACE = linux_raw_sys::general::MAP_FIXED_NOREPLACE;
- /// `MAP_GROWSDOWN`
- const GROWSDOWN = linux_raw_sys::general::MAP_GROWSDOWN;
- /// `MAP_HUGETLB`
- const HUGETLB = linux_raw_sys::general::MAP_HUGETLB;
- /// `MAP_HUGE_2MB` (since Linux 3.8)
- const HUGE_2MB = linux_raw_sys::general::MAP_HUGE_2MB;
- /// `MAP_HUGE_1GB` (since Linux 3.8)
- const HUGE_1GB = linux_raw_sys::general::MAP_HUGE_1GB;
- /// `MAP_LOCKED`
- const LOCKED = linux_raw_sys::general::MAP_LOCKED;
- /// `MAP_NORESERVE`
- const NORESERVE = linux_raw_sys::general::MAP_NORESERVE;
- /// `MAP_POPULATE`
- const POPULATE = linux_raw_sys::general::MAP_POPULATE;
- /// `MAP_STACK`
- const STACK = linux_raw_sys::general::MAP_STACK;
- /// `MAP_SYNC` (since Linux 4.15)
- #[cfg(not(any(target_arch = "mips", target_arch = "mips64")))]
- const SYNC = linux_raw_sys::general::MAP_SYNC;
- /// `MAP_UNINITIALIZED`
- #[cfg(not(any(target_arch = "mips", target_arch = "mips64")))]
- const UNINITIALIZED = linux_raw_sys::general::MAP_UNINITIALIZED;
- }
-}
-
-bitflags! {
- /// `MREMAP_*` flags for use with [`mremap`].
- ///
- /// For `MREMAP_FIXED`, see [`mremap_fixed`].
- ///
- /// [`mremap`]: crate::io::mremap
- /// [`mremap_fixed`]: crate::io::mremap_fixed
- pub struct MremapFlags: u32 {
- /// `MREMAP_MAYMOVE`
- const MAYMOVE = linux_raw_sys::general::MREMAP_MAYMOVE;
- /// `MREMAP_DONTUNMAP` (since Linux 5.7)
- const DONTUNMAP = linux_raw_sys::general::MREMAP_DONTUNMAP;
- }
-}
-
-bitflags! {
- /// `MLOCK_*` flags for use with [`mlock_with`].
- ///
- /// [`mlock_with`]: crate::io::mlock_with
- pub struct MlockFlags: u32 {
- /// `MLOCK_ONFAULT`
- const ONFAULT = linux_raw_sys::general::MLOCK_ONFAULT;
- }
-}
-
-bitflags! {
- /// `MS_*` flags for use with [`msync`].
- ///
- /// [`msync`]: crate::io::msync
- pub struct MsyncFlags: u32 {
- /// `MS_SYNC`—Requests an update and waits for it to complete.
- const SYNC = linux_raw_sys::general::MS_SYNC;
- /// `MS_ASYNC`—Specifies that an update be scheduled, but the call
- /// returns immediately.
- const ASYNC = linux_raw_sys::general::MS_ASYNC;
- /// `MS_INVALIDATE`—Asks to invalidate other mappings of the same
- /// file (so that they can be updated with the fresh values just
- /// written).
- const INVALIDATE = linux_raw_sys::general::MS_INVALIDATE;
- }
-}
-
-bitflags! {
- /// `O_*` flags for use with [`userfaultfd`].
- ///
- /// [`userfaultfd`]: crate::io::userfaultfd
- pub struct UserfaultfdFlags: c::c_uint {
- /// `O_CLOEXEC`
- const CLOEXEC = linux_raw_sys::general::O_CLOEXEC;
- /// `O_NONBLOCK`
- const NONBLOCK = linux_raw_sys::general::O_NONBLOCK;
- }
-}
-
-/// `POSIX_MADV_*` constants for use with [`madvise`].
-///
-/// [`madvise`]: crate::mm::madvise
-#[derive(Debug, Copy, Clone, Eq, PartialEq)]
-#[repr(u32)]
-#[non_exhaustive]
-pub enum Advice {
- /// `POSIX_MADV_NORMAL`
- Normal = linux_raw_sys::general::MADV_NORMAL,
-
- /// `POSIX_MADV_SEQUENTIAL`
- Sequential = linux_raw_sys::general::MADV_SEQUENTIAL,
-
- /// `POSIX_MADV_RANDOM`
- Random = linux_raw_sys::general::MADV_RANDOM,
-
- /// `POSIX_MADV_WILLNEED`
- WillNeed = linux_raw_sys::general::MADV_WILLNEED,
-
- /// `MADV_DONTNEED`
- LinuxDontNeed = linux_raw_sys::general::MADV_DONTNEED,
-
- /// `MADV_FREE` (since Linux 4.5)
- LinuxFree = linux_raw_sys::general::MADV_FREE,
- /// `MADV_REMOVE`
- LinuxRemove = linux_raw_sys::general::MADV_REMOVE,
- /// `MADV_DONTFORK`
- LinuxDontFork = linux_raw_sys::general::MADV_DONTFORK,
- /// `MADV_DOFORK`
- LinuxDoFork = linux_raw_sys::general::MADV_DOFORK,
- /// `MADV_HWPOISON`
- LinuxHwPoison = linux_raw_sys::general::MADV_HWPOISON,
- /// `MADV_SOFT_OFFLINE`
- #[cfg(not(any(target_arch = "mips", target_arch = "mips64")))]
- LinuxSoftOffline = linux_raw_sys::general::MADV_SOFT_OFFLINE,
- /// `MADV_MERGEABLE`
- LinuxMergeable = linux_raw_sys::general::MADV_MERGEABLE,
- /// `MADV_UNMERGEABLE`
- LinuxUnmergeable = linux_raw_sys::general::MADV_UNMERGEABLE,
- /// `MADV_HUGEPAGE` (since Linux 2.6.38)
- LinuxHugepage = linux_raw_sys::general::MADV_HUGEPAGE,
- /// `MADV_NOHUGEPAGE` (since Linux 2.6.38)
- LinuxNoHugepage = linux_raw_sys::general::MADV_NOHUGEPAGE,
- /// `MADV_DONTDUMP` (since Linux 3.4)
- LinuxDontDump = linux_raw_sys::general::MADV_DONTDUMP,
- /// `MADV_DODUMP` (since Linux 3.4)
- LinuxDoDump = linux_raw_sys::general::MADV_DODUMP,
- /// `MADV_WIPEONFORK` (since Linux 4.14)
- LinuxWipeOnFork = linux_raw_sys::general::MADV_WIPEONFORK,
- /// `MADV_KEEPONFORK` (since Linux 4.14)
- LinuxKeepOnFork = linux_raw_sys::general::MADV_KEEPONFORK,
- /// `MADV_COLD` (since Linux 5.4)
- LinuxCold = linux_raw_sys::general::MADV_COLD,
- /// `MADV_PAGEOUT` (since Linux 5.4)
- LinuxPageOut = linux_raw_sys::general::MADV_PAGEOUT,
- /// `MADV_POPULATE_READ` (since Linux 5.14)
- LinuxPopulateRead = linux_raw_sys::general::MADV_POPULATE_READ,
- /// `MADV_POPULATE_WRITE` (since Linux 5.14)
- LinuxPopulateWrite = linux_raw_sys::general::MADV_POPULATE_WRITE,
-}
-
-impl Advice {
- /// `POSIX_MADV_DONTNEED`
- ///
- /// On Linux, this is mapped to `POSIX_MADV_NORMAL` because
- /// Linux's `MADV_DONTNEED` differs from `POSIX_MADV_DONTNEED`. See
- /// `LinuxDontNeed` for the Linux behavior.
- #[allow(non_upper_case_globals)]
- pub const DontNeed: Self = Self::Normal;
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/mod.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/mod.rs
deleted file mode 100644
index 1b91fc3ab..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/mod.rs
+++ /dev/null
@@ -1,72 +0,0 @@
-//! The linux_raw backend.
-//!
-//! This makes Linux syscalls directly, without going through libc.
-//!
-//! # Safety
-//!
-//! These files performs raw system calls, and sometimes passes them
-//! uninitialized memory buffers. The signatures in this file are currently
-//! manually maintained and must correspond with the signatures of the actual
-//! Linux syscalls.
-//!
-//! Some of this could be auto-generated from the Linux header file
-//! <linux/syscalls.h>, but we often need more information than it provides,
-//! such as which pointers are array slices, out parameters, or in-out
-//! parameters, which integers are owned or borrowed file descriptors, etc.
-
-// Weak symbols used by the use-libc-auxv feature for glibc 2.15 support.
-#[cfg(feature = "use-libc-auxv")]
-#[macro_use]
-mod weak;
-
-#[macro_use]
-mod arch;
-mod conv;
-mod elf;
-mod reg;
-#[cfg(any(feature = "time", target_arch = "x86"))]
-mod vdso;
-#[cfg(any(feature = "time", target_arch = "x86"))]
-mod vdso_wrappers;
-
-#[cfg(feature = "fs")]
-pub(crate) mod fs;
-pub(crate) mod io;
-#[cfg(feature = "io_uring")]
-pub(crate) mod io_uring;
-#[cfg(feature = "mm")]
-pub(crate) mod mm;
-#[cfg(feature = "net")]
-pub(crate) mod net;
-#[cfg(any(
- feature = "param",
- feature = "runtime",
- feature = "time",
- target_arch = "x86",
-))]
-pub(crate) mod param;
-pub(crate) mod process;
-#[cfg(feature = "rand")]
-pub(crate) mod rand;
-#[cfg(feature = "runtime")]
-pub(crate) mod runtime;
-#[cfg(feature = "termios")]
-pub(crate) mod termios;
-#[cfg(feature = "thread")]
-pub(crate) mod thread;
-pub(crate) mod time;
-
-#[cfg(feature = "std")]
-pub(crate) mod fd {
- pub use io_lifetimes::*;
- #[allow(unused_imports)]
- pub(crate) use std::os::unix::io::RawFd as LibcFd;
- pub use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd};
-}
-
-#[cfg(not(feature = "std"))]
-pub(crate) use crate::io::fd;
-
-// The linux_raw backend doesn't use actual libc, so we define selected
-// libc-like definitions in a module called `c`.
-pub(crate) mod c;
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/net/addr.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/net/addr.rs
deleted file mode 100644
index b69c6deca..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/net/addr.rs
+++ /dev/null
@@ -1,172 +0,0 @@
-//! IPv4, IPv6, and Socket addresses.
-//!
-//! # Safety
-//!
-//! Linux's IPv6 type contains a union.
-#![allow(unsafe_code)]
-
-use super::super::c;
-use crate::ffi::CStr;
-use crate::{io, path};
-use core::convert::TryInto;
-use core::{fmt, slice};
-
-/// `struct sockaddr_un`
-#[derive(Clone)]
-#[doc(alias = "sockaddr_un")]
-pub struct SocketAddrUnix {
- pub(crate) unix: c::sockaddr_un,
- len: c::socklen_t,
-}
-
-impl SocketAddrUnix {
- /// Construct a new Unix-domain address from a filesystem path.
- #[inline]
- pub fn new<P: path::Arg>(path: P) -> io::Result<Self> {
- path.into_with_c_str(Self::_new)
- }
-
- #[inline]
- fn _new(path: &CStr) -> io::Result<Self> {
- let mut unix = Self::init();
- let bytes = path.to_bytes_with_nul();
- if bytes.len() > unix.sun_path.len() {
- return Err(io::Errno::NAMETOOLONG);
- }
- for (i, b) in bytes.iter().enumerate() {
- unix.sun_path[i] = *b as c::c_char;
- }
- let len = offsetof_sun_path() + bytes.len();
- let len = len.try_into().unwrap();
- Ok(Self { unix, len })
- }
-
- /// Construct a new abstract Unix-domain address from a byte slice.
- #[inline]
- pub fn new_abstract_name(name: &[u8]) -> io::Result<Self> {
- let mut unix = Self::init();
- if 1 + name.len() > unix.sun_path.len() {
- return Err(io::Errno::NAMETOOLONG);
- }
- unix.sun_path[0] = b'\0' as c::c_char;
- for (i, b) in name.iter().enumerate() {
- unix.sun_path[1 + i] = *b as c::c_char;
- }
- let len = offsetof_sun_path() + 1 + name.len();
- let len = len.try_into().unwrap();
- Ok(Self { unix, len })
- }
-
- fn init() -> c::sockaddr_un {
- c::sockaddr_un {
- sun_family: c::AF_UNIX as _,
- sun_path: [0; 108],
- }
- }
-
- /// For a filesystem path address, return the path.
- #[inline]
- pub fn path(&self) -> Option<&CStr> {
- let len = self.len();
- if len != 0 && self.unix.sun_path[0] != b'\0' as c::c_char {
- let end = len as usize - offsetof_sun_path();
- let bytes = &self.unix.sun_path[..end];
- // SAFETY: `from_raw_parts` to convert from `&[c_char]` to `&[u8]`. And
- // `from_bytes_with_nul_unchecked` since the string is NUL-terminated.
- unsafe {
- Some(CStr::from_bytes_with_nul_unchecked(slice::from_raw_parts(
- bytes.as_ptr().cast(),
- bytes.len(),
- )))
- }
- } else {
- None
- }
- }
-
- /// For an abstract address, return the identifier.
- #[inline]
- pub fn abstract_name(&self) -> Option<&[u8]> {
- let len = self.len();
- if len != 0 && self.unix.sun_path[0] == b'\0' as c::c_char {
- let end = len as usize - offsetof_sun_path();
- let bytes = &self.unix.sun_path[1..end];
- // SAFETY: `from_raw_parts` to convert from `&[c_char]` to `&[u8]`.
- unsafe { Some(slice::from_raw_parts(bytes.as_ptr().cast(), bytes.len())) }
- } else {
- None
- }
- }
-
- #[inline]
- pub(crate) fn addr_len(&self) -> c::socklen_t {
- self.len
- }
-
- #[inline]
- pub(crate) fn len(&self) -> usize {
- self.addr_len() as usize
- }
-}
-
-impl PartialEq for SocketAddrUnix {
- #[inline]
- fn eq(&self, other: &Self) -> bool {
- let self_len = self.len() - offsetof_sun_path();
- let other_len = other.len() - offsetof_sun_path();
- self.unix.sun_path[..self_len].eq(&other.unix.sun_path[..other_len])
- }
-}
-
-impl Eq for SocketAddrUnix {}
-
-impl PartialOrd for SocketAddrUnix {
- #[inline]
- fn partial_cmp(&self, other: &Self) -> Option<core::cmp::Ordering> {
- let self_len = self.len() - offsetof_sun_path();
- let other_len = other.len() - offsetof_sun_path();
- self.unix.sun_path[..self_len].partial_cmp(&other.unix.sun_path[..other_len])
- }
-}
-
-impl Ord for SocketAddrUnix {
- #[inline]
- fn cmp(&self, other: &Self) -> core::cmp::Ordering {
- let self_len = self.len() - offsetof_sun_path();
- let other_len = other.len() - offsetof_sun_path();
- self.unix.sun_path[..self_len].cmp(&other.unix.sun_path[..other_len])
- }
-}
-
-impl core::hash::Hash for SocketAddrUnix {
- #[inline]
- fn hash<H: core::hash::Hasher>(&self, state: &mut H) {
- let self_len = self.len() - offsetof_sun_path();
- self.unix.sun_path[..self_len].hash(state)
- }
-}
-
-impl fmt::Debug for SocketAddrUnix {
- fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
- if let Some(path) = self.path() {
- path.fmt(fmt)
- } else if let Some(name) = self.abstract_name() {
- name.fmt(fmt)
- } else {
- "(unnamed)".fmt(fmt)
- }
- }
-}
-
-/// `struct sockaddr_storage` as a raw struct.
-pub type SocketAddrStorage = c::sockaddr;
-
-/// Return the offset of the `sun_path` field of `sockaddr_un`.
-#[inline]
-pub(crate) fn offsetof_sun_path() -> usize {
- let z = c::sockaddr_un {
- sun_family: 0_u16,
- sun_path: [0; 108],
- };
- (crate::utils::as_ptr(&z.sun_path) as usize) - (crate::utils::as_ptr(&z) as usize)
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/net/mod.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/net/mod.rs
deleted file mode 100644
index f2273db1b..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/net/mod.rs
+++ /dev/null
@@ -1,6 +0,0 @@
-pub(crate) mod addr;
-pub(crate) mod read_sockaddr;
-pub(crate) mod send_recv;
-pub(crate) mod syscalls;
-pub(crate) mod types;
-pub(crate) mod write_sockaddr;
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/net/read_sockaddr.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/net/read_sockaddr.rs
deleted file mode 100644
index b9bc09b96..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/net/read_sockaddr.rs
+++ /dev/null
@@ -1,175 +0,0 @@
-//! The BSD sockets API requires us to read the `ss_family` field before
-//! we can interpret the rest of a `sockaddr` produced by the kernel.
-#![allow(unsafe_code)]
-
-use super::super::c;
-use crate::io;
-use crate::net::{Ipv4Addr, Ipv6Addr, SocketAddrAny, SocketAddrUnix, SocketAddrV4, SocketAddrV6};
-use alloc::vec::Vec;
-use core::mem::size_of;
-
-// This must match the header of `sockaddr`.
-#[repr(C)]
-struct sockaddr_header {
- ss_family: u16,
-}
-
-/// Read the `ss_family` field from a socket address returned from the OS.
-///
-/// # Safety
-///
-/// `storage` must point to a valid socket address returned from the OS.
-#[inline]
-unsafe fn read_ss_family(storage: *const c::sockaddr) -> u16 {
- // Assert that we know the layout of `sockaddr`.
- let _ = c::sockaddr {
- __storage: c::sockaddr_storage {
- __bindgen_anon_1: linux_raw_sys::general::__kernel_sockaddr_storage__bindgen_ty_1 {
- __bindgen_anon_1:
- linux_raw_sys::general::__kernel_sockaddr_storage__bindgen_ty_1__bindgen_ty_1 {
- ss_family: 0_u16,
- __data: [0; 126_usize],
- },
- },
- },
- };
-
- (*storage.cast::<sockaddr_header>()).ss_family
-}
-
-/// Set the `ss_family` field of a socket address to `AF_UNSPEC`, so that we
-/// can test for `AF_UNSPEC` to test whether it was stored to.
-#[inline]
-pub(crate) unsafe fn initialize_family_to_unspec(storage: *mut c::sockaddr) {
- (*storage.cast::<sockaddr_header>()).ss_family = c::AF_UNSPEC as _;
-}
-
-/// Read a socket address encoded in a platform-specific format.
-///
-/// # Safety
-///
-/// `storage` must point to valid socket address storage.
-pub(crate) unsafe fn read_sockaddr(
- storage: *const c::sockaddr,
- len: usize,
-) -> io::Result<SocketAddrAny> {
- let offsetof_sun_path = super::addr::offsetof_sun_path();
-
- if len < size_of::<c::sa_family_t>() {
- return Err(io::Errno::INVAL);
- }
- match read_ss_family(storage).into() {
- c::AF_INET => {
- if len < size_of::<c::sockaddr_in>() {
- return Err(io::Errno::INVAL);
- }
- let decode = *storage.cast::<c::sockaddr_in>();
- Ok(SocketAddrAny::V4(SocketAddrV4::new(
- Ipv4Addr::from(u32::from_be(decode.sin_addr.s_addr)),
- u16::from_be(decode.sin_port),
- )))
- }
- c::AF_INET6 => {
- if len < size_of::<c::sockaddr_in6>() {
- return Err(io::Errno::INVAL);
- }
- let decode = *storage.cast::<c::sockaddr_in6>();
- Ok(SocketAddrAny::V6(SocketAddrV6::new(
- Ipv6Addr::from(decode.sin6_addr.in6_u.u6_addr8),
- u16::from_be(decode.sin6_port),
- u32::from_be(decode.sin6_flowinfo),
- decode.sin6_scope_id,
- )))
- }
- c::AF_UNIX => {
- if len < offsetof_sun_path {
- return Err(io::Errno::INVAL);
- }
- if len == offsetof_sun_path {
- Ok(SocketAddrAny::Unix(SocketAddrUnix::new(&[][..])?))
- } else {
- let decode = *storage.cast::<c::sockaddr_un>();
- assert_eq!(
- decode.sun_path[len - 1 - offsetof_sun_path],
- b'\0' as c::c_char
- );
- Ok(SocketAddrAny::Unix(SocketAddrUnix::new(
- decode.sun_path[..len - 1 - offsetof_sun_path]
- .iter()
- .map(|c| *c as u8)
- .collect::<Vec<u8>>(),
- )?))
- }
- }
- _ => Err(io::Errno::NOTSUP),
- }
-}
-
-/// Read a socket address returned from the OS.
-///
-/// # Safety
-///
-/// `storage` must point to a valid socket address returned from the OS.
-pub(crate) unsafe fn maybe_read_sockaddr_os(
- storage: *const c::sockaddr,
- len: usize,
-) -> Option<SocketAddrAny> {
- if len == 0 {
- None
- } else {
- Some(read_sockaddr_os(storage, len))
- }
-}
-
-/// Read a socket address returned from the OS.
-///
-/// # Safety
-///
-/// `storage` must point to a valid socket address returned from the OS.
-pub(crate) unsafe fn read_sockaddr_os(storage: *const c::sockaddr, len: usize) -> SocketAddrAny {
- let offsetof_sun_path = super::addr::offsetof_sun_path();
-
- assert!(len >= size_of::<c::sa_family_t>());
- match read_ss_family(storage).into() {
- c::AF_INET => {
- assert!(len >= size_of::<c::sockaddr_in>());
- let decode = *storage.cast::<c::sockaddr_in>();
- SocketAddrAny::V4(SocketAddrV4::new(
- Ipv4Addr::from(u32::from_be(decode.sin_addr.s_addr)),
- u16::from_be(decode.sin_port),
- ))
- }
- c::AF_INET6 => {
- assert!(len >= size_of::<c::sockaddr_in6>());
- let decode = *storage.cast::<c::sockaddr_in6>();
- SocketAddrAny::V6(SocketAddrV6::new(
- Ipv6Addr::from(decode.sin6_addr.in6_u.u6_addr8),
- u16::from_be(decode.sin6_port),
- u32::from_be(decode.sin6_flowinfo),
- decode.sin6_scope_id,
- ))
- }
- c::AF_UNIX => {
- assert!(len >= offsetof_sun_path);
- if len == offsetof_sun_path {
- SocketAddrAny::Unix(SocketAddrUnix::new(&[][..]).unwrap())
- } else {
- let decode = *storage.cast::<c::sockaddr_un>();
- assert_eq!(
- decode.sun_path[len - 1 - offsetof_sun_path],
- b'\0' as c::c_char
- );
- SocketAddrAny::Unix(
- SocketAddrUnix::new(
- decode.sun_path[..len - 1 - offsetof_sun_path]
- .iter()
- .map(|c| *c as u8)
- .collect::<Vec<u8>>(),
- )
- .unwrap(),
- )
- }
- }
- other => unimplemented!("{:?}", other),
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/net/send_recv.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/net/send_recv.rs
deleted file mode 100644
index 888e81e2b..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/net/send_recv.rs
+++ /dev/null
@@ -1,42 +0,0 @@
-use super::super::c;
-use bitflags::bitflags;
-
-bitflags! {
- /// `MSG_*`
- pub struct SendFlags: u32 {
- /// `MSG_CONFIRM`
- const CONFIRM = c::MSG_CONFIRM;
- /// `MSG_DONTROUTE`
- const DONTROUTE = c::MSG_DONTROUTE;
- /// `MSG_DONTWAIT`
- const DONTWAIT = c::MSG_DONTWAIT;
- /// `MSG_EOT`
- const EOT = c::MSG_EOR;
- /// `MSG_MORE`
- const MORE = c::MSG_MORE;
- /// `MSG_NOSIGNAL`
- const NOSIGNAL = c::MSG_NOSIGNAL;
- /// `MSG_OOB`
- const OOB = c::MSG_OOB;
- }
-}
-
-bitflags! {
- /// `MSG_*`
- pub struct RecvFlags: u32 {
- /// `MSG_CMSG_CLOEXEC`
- const CMSG_CLOEXEC = c::MSG_CMSG_CLOEXEC;
- /// `MSG_DONTWAIT`
- const DONTWAIT = c::MSG_DONTWAIT;
- /// `MSG_ERRQUEUE`
- const ERRQUEUE = c::MSG_ERRQUEUE;
- /// `MSG_OOB`
- const OOB = c::MSG_OOB;
- /// `MSG_PEEK`
- const PEEK = c::MSG_PEEK;
- /// `MSG_TRUNC`
- const TRUNC = c::MSG_TRUNC;
- /// `MSG_WAITALL`
- const WAITALL = c::MSG_WAITALL;
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/net/syscalls.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/net/syscalls.rs
deleted file mode 100644
index 6093cd3a5..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/net/syscalls.rs
+++ /dev/null
@@ -1,1258 +0,0 @@
-//! linux_raw syscalls supporting `rustix::net`.
-//!
-//! # Safety
-//!
-//! See the `rustix::backend` module documentation for details.
-#![allow(unsafe_code)]
-#![allow(clippy::undocumented_unsafe_blocks)]
-
-use super::super::c;
-use super::super::conv::{
- by_mut, by_ref, c_int, c_uint, ret, ret_owned_fd, ret_usize, size_of, slice, slice_mut,
- socklen_t, zero,
-};
-use super::read_sockaddr::{initialize_family_to_unspec, maybe_read_sockaddr_os, read_sockaddr_os};
-use super::send_recv::{RecvFlags, SendFlags};
-use super::types::{AcceptFlags, AddressFamily, Protocol, Shutdown, SocketFlags, SocketType};
-use super::write_sockaddr::{encode_sockaddr_v4, encode_sockaddr_v6};
-use crate::fd::{BorrowedFd, OwnedFd};
-use crate::io;
-use crate::net::{SocketAddrAny, SocketAddrUnix, SocketAddrV4, SocketAddrV6};
-use c::{sockaddr, sockaddr_in, sockaddr_in6, socklen_t};
-use core::convert::TryInto;
-use core::mem::MaybeUninit;
-#[cfg(target_arch = "x86")]
-use {
- super::super::conv::{slice_just_addr, x86_sys},
- super::super::reg::{ArgReg, SocketArg},
- linux_raw_sys::general::{
- SYS_ACCEPT, SYS_ACCEPT4, SYS_BIND, SYS_CONNECT, SYS_GETPEERNAME, SYS_GETSOCKNAME,
- SYS_GETSOCKOPT, SYS_LISTEN, SYS_RECV, SYS_RECVFROM, SYS_SEND, SYS_SENDTO, SYS_SETSOCKOPT,
- SYS_SHUTDOWN, SYS_SOCKET, SYS_SOCKETPAIR,
- },
-};
-
-#[inline]
-pub(crate) fn socket(
- family: AddressFamily,
- type_: SocketType,
- protocol: Protocol,
-) -> io::Result<OwnedFd> {
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- ret_owned_fd(syscall_readonly!(__NR_socket, family, type_, protocol))
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- ret_owned_fd(syscall_readonly!(
- __NR_socketcall,
- x86_sys(SYS_SOCKET),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[
- family.into(),
- type_.into(),
- protocol.into(),
- ])
- ))
- }
-}
-
-#[inline]
-pub(crate) fn socket_with(
- family: AddressFamily,
- type_: SocketType,
- flags: SocketFlags,
- protocol: Protocol,
-) -> io::Result<OwnedFd> {
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- ret_owned_fd(syscall_readonly!(
- __NR_socket,
- family,
- (type_, flags),
- protocol
- ))
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- ret_owned_fd(syscall_readonly!(
- __NR_socketcall,
- x86_sys(SYS_SOCKET),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[
- family.into(),
- (type_, flags).into(),
- protocol.into(),
- ])
- ))
- }
-}
-
-#[inline]
-pub(crate) fn socketpair(
- family: AddressFamily,
- type_: SocketType,
- flags: SocketFlags,
- protocol: Protocol,
-) -> io::Result<(OwnedFd, OwnedFd)> {
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- let mut result = MaybeUninit::<[OwnedFd; 2]>::uninit();
- ret(syscall!(
- __NR_socketpair,
- family,
- (type_, flags),
- protocol,
- &mut result
- ))?;
- let [fd0, fd1] = result.assume_init();
- Ok((fd0, fd1))
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- let mut result = MaybeUninit::<[OwnedFd; 2]>::uninit();
- ret(syscall!(
- __NR_socketcall,
- x86_sys(SYS_SOCKETPAIR),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[
- family.into(),
- (type_, flags).into(),
- protocol.into(),
- (&mut result).into(),
- ])
- ))?;
- let [fd0, fd1] = result.assume_init();
- Ok((fd0, fd1))
- }
-}
-
-#[inline]
-pub(crate) fn accept(fd: BorrowedFd<'_>) -> io::Result<OwnedFd> {
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- let fd = ret_owned_fd(syscall_readonly!(__NR_accept, fd, zero(), zero()))?;
- Ok(fd)
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- let fd = ret_owned_fd(syscall_readonly!(
- __NR_socketcall,
- x86_sys(SYS_ACCEPT),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[fd.into(), zero(), zero()])
- ))?;
- Ok(fd)
- }
-}
-
-#[inline]
-pub(crate) fn accept_with(fd: BorrowedFd<'_>, flags: AcceptFlags) -> io::Result<OwnedFd> {
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- let fd = ret_owned_fd(syscall_readonly!(__NR_accept4, fd, zero(), zero(), flags))?;
- Ok(fd)
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- let fd = ret_owned_fd(syscall_readonly!(
- __NR_socketcall,
- x86_sys(SYS_ACCEPT4),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[fd.into(), zero(), zero(), flags.into()])
- ))?;
- Ok(fd)
- }
-}
-
-#[inline]
-pub(crate) fn acceptfrom(fd: BorrowedFd<'_>) -> io::Result<(OwnedFd, Option<SocketAddrAny>)> {
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- let mut addrlen = core::mem::size_of::<sockaddr>() as socklen_t;
- let mut storage = MaybeUninit::<sockaddr>::uninit();
- let fd = ret_owned_fd(syscall!(
- __NR_accept,
- fd,
- &mut storage,
- by_mut(&mut addrlen)
- ))?;
- Ok((
- fd,
- maybe_read_sockaddr_os(&storage.assume_init(), addrlen.try_into().unwrap()),
- ))
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- let mut addrlen = core::mem::size_of::<sockaddr>() as socklen_t;
- let mut storage = MaybeUninit::<sockaddr>::uninit();
- let fd = ret_owned_fd(syscall!(
- __NR_socketcall,
- x86_sys(SYS_ACCEPT),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[
- fd.into(),
- (&mut storage).into(),
- by_mut(&mut addrlen),
- ])
- ))?;
- Ok((
- fd,
- maybe_read_sockaddr_os(&storage.assume_init(), addrlen.try_into().unwrap()),
- ))
- }
-}
-
-#[inline]
-pub(crate) fn acceptfrom_with(
- fd: BorrowedFd<'_>,
- flags: AcceptFlags,
-) -> io::Result<(OwnedFd, Option<SocketAddrAny>)> {
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- let mut addrlen = core::mem::size_of::<sockaddr>() as socklen_t;
- let mut storage = MaybeUninit::<sockaddr>::uninit();
- let fd = ret_owned_fd(syscall!(
- __NR_accept4,
- fd,
- &mut storage,
- by_mut(&mut addrlen),
- flags
- ))?;
- Ok((
- fd,
- maybe_read_sockaddr_os(&storage.assume_init(), addrlen.try_into().unwrap()),
- ))
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- let mut addrlen = core::mem::size_of::<sockaddr>() as socklen_t;
- let mut storage = MaybeUninit::<sockaddr>::uninit();
- let fd = ret_owned_fd(syscall!(
- __NR_socketcall,
- x86_sys(SYS_ACCEPT4),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[
- fd.into(),
- (&mut storage).into(),
- by_mut(&mut addrlen),
- flags.into(),
- ])
- ))?;
- Ok((
- fd,
- maybe_read_sockaddr_os(&storage.assume_init(), addrlen.try_into().unwrap()),
- ))
- }
-}
-
-#[inline]
-pub(crate) fn shutdown(fd: BorrowedFd<'_>, how: Shutdown) -> io::Result<()> {
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- ret(syscall_readonly!(
- __NR_shutdown,
- fd,
- c_uint(how as c::c_uint)
- ))
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- ret(syscall_readonly!(
- __NR_socketcall,
- x86_sys(SYS_SHUTDOWN),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[fd.into(), c_uint(how as c::c_uint)])
- ))
- }
-}
-
-#[inline]
-pub(crate) fn send(fd: BorrowedFd<'_>, buf: &[u8], flags: SendFlags) -> io::Result<usize> {
- let (buf_addr, buf_len) = slice(buf);
-
- #[cfg(not(any(
- target_arch = "aarch64",
- target_arch = "mips64",
- target_arch = "riscv64",
- target_arch = "x86",
- target_arch = "x86_64",
- )))]
- unsafe {
- ret_usize(syscall_readonly!(__NR_send, fd, buf_addr, buf_len, flags))
- }
- #[cfg(any(
- target_arch = "aarch64",
- target_arch = "mips64",
- target_arch = "riscv64",
- target_arch = "x86_64",
- ))]
- unsafe {
- ret_usize(syscall_readonly!(
- __NR_sendto,
- fd,
- buf_addr,
- buf_len,
- flags,
- zero(),
- zero()
- ))
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- ret_usize(syscall_readonly!(
- __NR_socketcall,
- x86_sys(SYS_SEND),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[fd.into(), buf_addr, buf_len, flags.into()])
- ))
- }
-}
-
-#[inline]
-pub(crate) fn sendto_v4(
- fd: BorrowedFd<'_>,
- buf: &[u8],
- flags: SendFlags,
- addr: &SocketAddrV4,
-) -> io::Result<usize> {
- let (buf_addr, buf_len) = slice(buf);
-
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- ret_usize(syscall_readonly!(
- __NR_sendto,
- fd,
- buf_addr,
- buf_len,
- flags,
- by_ref(&encode_sockaddr_v4(addr)),
- size_of::<sockaddr_in, _>()
- ))
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- ret_usize(syscall_readonly!(
- __NR_socketcall,
- x86_sys(SYS_SENDTO),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[
- fd.into(),
- buf_addr,
- buf_len,
- flags.into(),
- by_ref(&encode_sockaddr_v4(addr)),
- size_of::<sockaddr_in, _>(),
- ])
- ))
- }
-}
-
-#[inline]
-pub(crate) fn sendto_v6(
- fd: BorrowedFd<'_>,
- buf: &[u8],
- flags: SendFlags,
- addr: &SocketAddrV6,
-) -> io::Result<usize> {
- let (buf_addr, buf_len) = slice(buf);
-
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- ret_usize(syscall_readonly!(
- __NR_sendto,
- fd,
- buf_addr,
- buf_len,
- flags,
- by_ref(&encode_sockaddr_v6(addr)),
- size_of::<sockaddr_in6, _>()
- ))
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- ret_usize(syscall_readonly!(
- __NR_socketcall,
- x86_sys(SYS_SENDTO),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[
- fd.into(),
- buf_addr,
- buf_len,
- flags.into(),
- by_ref(&encode_sockaddr_v6(addr)),
- size_of::<sockaddr_in6, _>(),
- ])
- ))
- }
-}
-
-#[inline]
-pub(crate) fn sendto_unix(
- fd: BorrowedFd<'_>,
- buf: &[u8],
- flags: SendFlags,
- addr: &SocketAddrUnix,
-) -> io::Result<usize> {
- let (buf_addr, buf_len) = slice(buf);
-
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- ret_usize(syscall_readonly!(
- __NR_sendto,
- fd,
- buf_addr,
- buf_len,
- flags,
- by_ref(&addr.unix),
- socklen_t(addr.addr_len())
- ))
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- ret_usize(syscall_readonly!(
- __NR_socketcall,
- x86_sys(SYS_SENDTO),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[
- fd.into(),
- buf_addr,
- buf_len,
- flags.into(),
- by_ref(&addr.unix),
- socklen_t(addr.addr_len()),
- ])
- ))
- }
-}
-
-#[inline]
-pub(crate) fn recv(fd: BorrowedFd<'_>, buf: &mut [u8], flags: RecvFlags) -> io::Result<usize> {
- let (buf_addr_mut, buf_len) = slice_mut(buf);
-
- #[cfg(not(any(
- target_arch = "aarch64",
- target_arch = "mips64",
- target_arch = "riscv64",
- target_arch = "x86",
- target_arch = "x86_64",
- )))]
- unsafe {
- ret_usize(syscall!(__NR_recv, fd, buf_addr_mut, buf_len, flags))
- }
- #[cfg(any(
- target_arch = "aarch64",
- target_arch = "mips64",
- target_arch = "riscv64",
- target_arch = "x86_64",
- ))]
- unsafe {
- ret_usize(syscall!(
- __NR_recvfrom,
- fd,
- buf_addr_mut,
- buf_len,
- flags,
- zero(),
- zero()
- ))
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- ret_usize(syscall!(
- __NR_socketcall,
- x86_sys(SYS_RECV),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[
- fd.into(),
- buf_addr_mut,
- buf_len,
- flags.into(),
- ])
- ))
- }
-}
-
-#[inline]
-pub(crate) fn recvfrom(
- fd: BorrowedFd<'_>,
- buf: &mut [u8],
- flags: RecvFlags,
-) -> io::Result<(usize, Option<SocketAddrAny>)> {
- let (buf_addr_mut, buf_len) = slice_mut(buf);
-
- let mut addrlen = core::mem::size_of::<sockaddr>() as socklen_t;
- let mut storage = MaybeUninit::<sockaddr>::uninit();
-
- unsafe {
- // `recvfrom` does not write to the storage if the socket is
- // connection-oriented sockets, so we initialize the family field to
- // `AF_UNSPEC` so that we can detect this case.
- initialize_family_to_unspec(storage.as_mut_ptr());
-
- #[cfg(not(target_arch = "x86"))]
- let nread = ret_usize(syscall!(
- __NR_recvfrom,
- fd,
- buf_addr_mut,
- buf_len,
- flags,
- &mut storage,
- by_mut(&mut addrlen)
- ))?;
- #[cfg(target_arch = "x86")]
- let nread = ret_usize(syscall!(
- __NR_socketcall,
- x86_sys(SYS_RECVFROM),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[
- fd.into(),
- buf_addr_mut,
- buf_len,
- flags.into(),
- (&mut storage).into(),
- by_mut(&mut addrlen),
- ])
- ))?;
-
- Ok((
- nread,
- maybe_read_sockaddr_os(&storage.assume_init(), addrlen.try_into().unwrap()),
- ))
- }
-}
-
-#[inline]
-pub(crate) fn getpeername(fd: BorrowedFd<'_>) -> io::Result<Option<SocketAddrAny>> {
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- let mut addrlen = core::mem::size_of::<sockaddr>() as socklen_t;
- let mut storage = MaybeUninit::<sockaddr>::uninit();
- ret(syscall!(
- __NR_getpeername,
- fd,
- &mut storage,
- by_mut(&mut addrlen)
- ))?;
- Ok(maybe_read_sockaddr_os(
- &storage.assume_init(),
- addrlen.try_into().unwrap(),
- ))
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- let mut addrlen = core::mem::size_of::<sockaddr>() as socklen_t;
- let mut storage = MaybeUninit::<sockaddr>::uninit();
- ret(syscall!(
- __NR_socketcall,
- x86_sys(SYS_GETPEERNAME),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[
- fd.into(),
- (&mut storage).into(),
- by_mut(&mut addrlen),
- ])
- ))?;
- Ok(maybe_read_sockaddr_os(
- &storage.assume_init(),
- addrlen.try_into().unwrap(),
- ))
- }
-}
-
-#[inline]
-pub(crate) fn getsockname(fd: BorrowedFd<'_>) -> io::Result<SocketAddrAny> {
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- let mut addrlen = core::mem::size_of::<sockaddr>() as socklen_t;
- let mut storage = MaybeUninit::<sockaddr>::uninit();
- ret(syscall!(
- __NR_getsockname,
- fd,
- &mut storage,
- by_mut(&mut addrlen)
- ))?;
- Ok(read_sockaddr_os(
- &storage.assume_init(),
- addrlen.try_into().unwrap(),
- ))
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- let mut addrlen = core::mem::size_of::<sockaddr>() as socklen_t;
- let mut storage = MaybeUninit::<sockaddr>::uninit();
- ret(syscall!(
- __NR_socketcall,
- x86_sys(SYS_GETSOCKNAME),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[
- fd.into(),
- (&mut storage).into(),
- by_mut(&mut addrlen),
- ])
- ))?;
- Ok(read_sockaddr_os(
- &storage.assume_init(),
- addrlen.try_into().unwrap(),
- ))
- }
-}
-
-#[inline]
-pub(crate) fn bind_v4(fd: BorrowedFd<'_>, addr: &SocketAddrV4) -> io::Result<()> {
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- ret(syscall_readonly!(
- __NR_bind,
- fd,
- by_ref(&encode_sockaddr_v4(addr)),
- size_of::<sockaddr_in, _>()
- ))
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- ret(syscall_readonly!(
- __NR_socketcall,
- x86_sys(SYS_BIND),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[
- fd.into(),
- by_ref(&encode_sockaddr_v4(addr)),
- size_of::<sockaddr_in, _>(),
- ])
- ))
- }
-}
-
-#[inline]
-pub(crate) fn bind_v6(fd: BorrowedFd<'_>, addr: &SocketAddrV6) -> io::Result<()> {
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- ret(syscall_readonly!(
- __NR_bind,
- fd,
- by_ref(&encode_sockaddr_v6(addr)),
- size_of::<sockaddr_in6, _>()
- ))
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- ret(syscall_readonly!(
- __NR_socketcall,
- x86_sys(SYS_BIND),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[
- fd.into(),
- by_ref(&encode_sockaddr_v6(addr)),
- size_of::<sockaddr_in6, _>(),
- ])
- ))
- }
-}
-
-#[inline]
-pub(crate) fn bind_unix(fd: BorrowedFd<'_>, addr: &SocketAddrUnix) -> io::Result<()> {
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- ret(syscall_readonly!(
- __NR_bind,
- fd,
- by_ref(&addr.unix),
- socklen_t(addr.addr_len())
- ))
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- ret(syscall_readonly!(
- __NR_socketcall,
- x86_sys(SYS_BIND),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[
- fd.into(),
- by_ref(&addr.unix),
- socklen_t(addr.addr_len()),
- ])
- ))
- }
-}
-
-#[inline]
-pub(crate) fn connect_v4(fd: BorrowedFd<'_>, addr: &SocketAddrV4) -> io::Result<()> {
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- ret(syscall_readonly!(
- __NR_connect,
- fd,
- by_ref(&encode_sockaddr_v4(addr)),
- size_of::<sockaddr_in, _>()
- ))
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- ret(syscall_readonly!(
- __NR_socketcall,
- x86_sys(SYS_CONNECT),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[
- fd.into(),
- by_ref(&encode_sockaddr_v4(addr)),
- size_of::<sockaddr_in, _>(),
- ])
- ))
- }
-}
-
-#[inline]
-pub(crate) fn connect_v6(fd: BorrowedFd<'_>, addr: &SocketAddrV6) -> io::Result<()> {
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- ret(syscall_readonly!(
- __NR_connect,
- fd,
- by_ref(&encode_sockaddr_v6(addr)),
- size_of::<sockaddr_in6, _>()
- ))
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- ret(syscall_readonly!(
- __NR_socketcall,
- x86_sys(SYS_CONNECT),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[
- fd.into(),
- by_ref(&encode_sockaddr_v6(addr)),
- size_of::<sockaddr_in6, _>(),
- ])
- ))
- }
-}
-
-#[inline]
-pub(crate) fn connect_unix(fd: BorrowedFd<'_>, addr: &SocketAddrUnix) -> io::Result<()> {
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- ret(syscall_readonly!(
- __NR_connect,
- fd,
- by_ref(&addr.unix),
- socklen_t(addr.addr_len())
- ))
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- ret(syscall_readonly!(
- __NR_socketcall,
- x86_sys(SYS_CONNECT),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[
- fd.into(),
- by_ref(&addr.unix),
- socklen_t(addr.addr_len()),
- ])
- ))
- }
-}
-
-#[inline]
-pub(crate) fn listen(fd: BorrowedFd<'_>, backlog: c::c_int) -> io::Result<()> {
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- ret(syscall_readonly!(__NR_listen, fd, c_int(backlog)))
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- ret(syscall_readonly!(
- __NR_socketcall,
- x86_sys(SYS_LISTEN),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[fd.into(), c_int(backlog)])
- ))
- }
-}
-
-pub(crate) mod sockopt {
- use super::{c, BorrowedFd};
- use crate::io;
- use crate::net::sockopt::Timeout;
- use crate::net::{Ipv4Addr, Ipv6Addr, SocketType};
- use c::{SO_RCVTIMEO_NEW, SO_RCVTIMEO_OLD, SO_SNDTIMEO_NEW, SO_SNDTIMEO_OLD};
- use core::convert::TryInto;
- use core::time::Duration;
- use linux_raw_sys::general::{__kernel_timespec, timeval};
-
- // TODO: With Rust 1.53 we can use `Duration::ZERO` instead.
- const DURATION_ZERO: Duration = Duration::from_secs(0);
-
- #[inline]
- fn getsockopt<T: Copy>(fd: BorrowedFd<'_>, level: u32, optname: u32) -> io::Result<T> {
- use super::*;
-
- let mut optlen = core::mem::size_of::<T>();
- debug_assert!(
- optlen as usize >= core::mem::size_of::<c::c_int>(),
- "Socket APIs don't ever use `bool` directly"
- );
-
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- let mut value = MaybeUninit::<T>::uninit();
- ret(syscall!(
- __NR_getsockopt,
- fd,
- c_uint(level),
- c_uint(optname),
- &mut value,
- by_mut(&mut optlen)
- ))?;
-
- assert_eq!(
- optlen as usize,
- core::mem::size_of::<T>(),
- "unexpected getsockopt size"
- );
- Ok(value.assume_init())
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- let mut value = MaybeUninit::<T>::uninit();
- ret(syscall!(
- __NR_socketcall,
- x86_sys(SYS_GETSOCKOPT),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[
- fd.into(),
- c_uint(level),
- c_uint(optname),
- (&mut value).into(),
- by_mut(&mut optlen),
- ])
- ))?;
- assert_eq!(
- optlen as usize,
- core::mem::size_of::<T>(),
- "unexpected getsockopt size"
- );
- Ok(value.assume_init())
- }
- }
-
- #[inline]
- fn setsockopt<T: Copy>(
- fd: BorrowedFd<'_>,
- level: u32,
- optname: u32,
- value: T,
- ) -> io::Result<()> {
- use super::*;
-
- let optlen = core::mem::size_of::<T>().try_into().unwrap();
- debug_assert!(
- optlen as usize >= core::mem::size_of::<c::c_int>(),
- "Socket APIs don't ever use `bool` directly"
- );
-
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- ret(syscall_readonly!(
- __NR_setsockopt,
- fd,
- c_uint(level),
- c_uint(optname),
- by_ref(&value),
- socklen_t(optlen)
- ))
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- ret(syscall_readonly!(
- __NR_socketcall,
- x86_sys(SYS_SETSOCKOPT),
- slice_just_addr::<ArgReg<SocketArg>, _>(&[
- fd.into(),
- c_uint(level),
- c_uint(optname),
- by_ref(&value),
- socklen_t(optlen),
- ])
- ))
- }
- }
-
- #[inline]
- pub(crate) fn get_socket_type(fd: BorrowedFd<'_>) -> io::Result<SocketType> {
- getsockopt(fd, c::SOL_SOCKET as _, c::SO_TYPE)
- }
-
- #[inline]
- pub(crate) fn set_socket_reuseaddr(fd: BorrowedFd<'_>, reuseaddr: bool) -> io::Result<()> {
- setsockopt(
- fd,
- c::SOL_SOCKET as _,
- c::SO_REUSEADDR,
- from_bool(reuseaddr),
- )
- }
-
- #[inline]
- pub(crate) fn set_socket_broadcast(fd: BorrowedFd<'_>, broadcast: bool) -> io::Result<()> {
- setsockopt(
- fd,
- c::SOL_SOCKET as _,
- c::SO_BROADCAST,
- from_bool(broadcast),
- )
- }
-
- #[inline]
- pub(crate) fn get_socket_broadcast(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::SOL_SOCKET as _, c::SO_BROADCAST).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_socket_linger(
- fd: BorrowedFd<'_>,
- linger: Option<Duration>,
- ) -> io::Result<()> {
- // Convert `linger` to seconds, rounding up.
- let l_linger = if let Some(linger) = linger {
- let mut l_linger = linger.as_secs();
- if linger.subsec_nanos() != 0 {
- l_linger = l_linger.checked_add(1).ok_or(io::Errno::INVAL)?;
- }
- l_linger.try_into().map_err(|_e| io::Errno::INVAL)?
- } else {
- 0
- };
- let linger = c::linger {
- l_onoff: c::c_int::from(linger.is_some()),
- l_linger,
- };
- setsockopt(fd, c::SOL_SOCKET as _, c::SO_LINGER, linger)
- }
-
- #[inline]
- pub(crate) fn get_socket_linger(fd: BorrowedFd<'_>) -> io::Result<Option<Duration>> {
- let linger: c::linger = getsockopt(fd, c::SOL_SOCKET as _, c::SO_LINGER)?;
- // TODO: With Rust 1.50, this could use `.then`.
- Ok(if linger.l_onoff != 0 {
- Some(Duration::from_secs(linger.l_linger as u64))
- } else {
- None
- })
- }
-
- #[inline]
- pub(crate) fn set_socket_passcred(fd: BorrowedFd<'_>, passcred: bool) -> io::Result<()> {
- setsockopt(fd, c::SOL_SOCKET as _, c::SO_PASSCRED, from_bool(passcred))
- }
-
- #[inline]
- pub(crate) fn get_socket_passcred(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::SOL_SOCKET as _, c::SO_PASSCRED).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_socket_timeout(
- fd: BorrowedFd<'_>,
- id: Timeout,
- timeout: Option<Duration>,
- ) -> io::Result<()> {
- let time = duration_to_linux(timeout)?;
- let optname = match id {
- Timeout::Recv => SO_RCVTIMEO_NEW,
- Timeout::Send => SO_SNDTIMEO_NEW,
- };
- match setsockopt(fd, c::SOL_SOCKET, optname, time) {
- Err(io::Errno::NOPROTOOPT) if SO_RCVTIMEO_NEW != SO_RCVTIMEO_OLD => {
- set_socket_timeout_old(fd, id, timeout)
- }
- otherwise => otherwise,
- }
- }
-
- /// Same as `set_socket_timeout` but uses `timeval` instead of
- /// `__kernel_timespec` and `_OLD` constants instead of `_NEW`.
- fn set_socket_timeout_old(
- fd: BorrowedFd<'_>,
- id: Timeout,
- timeout: Option<Duration>,
- ) -> io::Result<()> {
- let time = duration_to_linux_old(timeout)?;
- let optname = match id {
- Timeout::Recv => SO_RCVTIMEO_OLD,
- Timeout::Send => SO_SNDTIMEO_OLD,
- };
- setsockopt(fd, c::SOL_SOCKET, optname, time)
- }
-
- #[inline]
- pub(crate) fn get_socket_timeout(
- fd: BorrowedFd<'_>,
- id: Timeout,
- ) -> io::Result<Option<Duration>> {
- let optname = match id {
- Timeout::Recv => SO_RCVTIMEO_NEW,
- Timeout::Send => SO_SNDTIMEO_NEW,
- };
- let time: __kernel_timespec = match getsockopt(fd, c::SOL_SOCKET, optname) {
- Err(io::Errno::NOPROTOOPT) if SO_RCVTIMEO_NEW != SO_RCVTIMEO_OLD => {
- return get_socket_timeout_old(fd, id)
- }
- otherwise => otherwise?,
- };
- Ok(duration_from_linux(time))
- }
-
- /// Same as `get_socket_timeout` but uses `timeval` instead of
- /// `__kernel_timespec` and `_OLD` constants instead of `_NEW`.
- fn get_socket_timeout_old(fd: BorrowedFd<'_>, id: Timeout) -> io::Result<Option<Duration>> {
- let optname = match id {
- Timeout::Recv => SO_RCVTIMEO_OLD,
- Timeout::Send => SO_SNDTIMEO_OLD,
- };
- let time: timeval = getsockopt(fd, c::SOL_SOCKET, optname)?;
- Ok(duration_from_linux_old(time))
- }
-
- /// Convert a C `timespec` to a Rust `Option<Duration>`.
- #[inline]
- fn duration_from_linux(time: __kernel_timespec) -> Option<Duration> {
- if time.tv_sec == 0 && time.tv_nsec == 0 {
- None
- } else {
- Some(
- Duration::from_secs(time.tv_sec as u64) + Duration::from_nanos(time.tv_nsec as u64),
- )
- }
- }
-
- /// Like `duration_from_linux` but uses Linux's old 32-bit `timeval`.
- fn duration_from_linux_old(time: timeval) -> Option<Duration> {
- if time.tv_sec == 0 && time.tv_usec == 0 {
- None
- } else {
- Some(
- Duration::from_secs(time.tv_sec as u64)
- + Duration::from_micros(time.tv_usec as u64),
- )
- }
- }
-
- /// Convert a Rust `Option<Duration>` to a C `timespec`.
- #[inline]
- fn duration_to_linux(timeout: Option<Duration>) -> io::Result<__kernel_timespec> {
- Ok(match timeout {
- Some(timeout) => {
- if timeout == DURATION_ZERO {
- return Err(io::Errno::INVAL);
- }
- let mut timeout = __kernel_timespec {
- tv_sec: timeout.as_secs().try_into().unwrap_or(i64::MAX),
- tv_nsec: timeout.subsec_nanos().into(),
- };
- if timeout.tv_sec == 0 && timeout.tv_nsec == 0 {
- timeout.tv_nsec = 1;
- }
- timeout
- }
- None => __kernel_timespec {
- tv_sec: 0,
- tv_nsec: 0,
- },
- })
- }
-
- /// Like `duration_to_linux` but uses Linux's old 32-bit `timeval`.
- fn duration_to_linux_old(timeout: Option<Duration>) -> io::Result<timeval> {
- Ok(match timeout {
- Some(timeout) => {
- if timeout == DURATION_ZERO {
- return Err(io::Errno::INVAL);
- }
-
- // `subsec_micros` rounds down, so we use `subsec_nanos` and
- // manually round up.
- let mut timeout = timeval {
- tv_sec: timeout.as_secs().try_into().unwrap_or(c::c_long::MAX),
- tv_usec: ((timeout.subsec_nanos() + 999) / 1000) as _,
- };
- if timeout.tv_sec == 0 && timeout.tv_usec == 0 {
- timeout.tv_usec = 1;
- }
- timeout
- }
- None => timeval {
- tv_sec: 0,
- tv_usec: 0,
- },
- })
- }
-
- #[inline]
- pub(crate) fn get_socket_error(fd: BorrowedFd<'_>) -> io::Result<Result<(), crate::io::Errno>> {
- let err: c::c_int = getsockopt(fd, c::SOL_SOCKET as _, c::SO_ERROR)?;
- Ok(if err == 0 {
- Ok(())
- } else {
- Err(crate::io::Errno::from_raw_os_error(err))
- })
- }
-
- #[inline]
- pub(crate) fn set_ip_ttl(fd: BorrowedFd<'_>, ttl: u32) -> io::Result<()> {
- setsockopt(fd, c::IPPROTO_IP as _, c::IP_TTL, ttl)
- }
-
- #[inline]
- pub(crate) fn get_ip_ttl(fd: BorrowedFd<'_>) -> io::Result<u32> {
- getsockopt(fd, c::IPPROTO_IP as _, c::IP_TTL)
- }
-
- #[inline]
- pub(crate) fn set_ipv6_v6only(fd: BorrowedFd<'_>, only_v6: bool) -> io::Result<()> {
- setsockopt(fd, c::IPPROTO_IPV6 as _, c::IPV6_V6ONLY, from_bool(only_v6))
- }
-
- #[inline]
- pub(crate) fn get_ipv6_v6only(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::IPPROTO_IPV6 as _, c::IPV6_V6ONLY).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_ip_multicast_loop(
- fd: BorrowedFd<'_>,
- multicast_loop: bool,
- ) -> io::Result<()> {
- setsockopt(
- fd,
- c::IPPROTO_IP as _,
- c::IP_MULTICAST_LOOP,
- from_bool(multicast_loop),
- )
- }
-
- #[inline]
- pub(crate) fn get_ip_multicast_loop(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::IPPROTO_IP as _, c::IP_MULTICAST_LOOP).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_ip_multicast_ttl(fd: BorrowedFd<'_>, multicast_ttl: u32) -> io::Result<()> {
- setsockopt(fd, c::IPPROTO_IP as _, c::IP_MULTICAST_TTL, multicast_ttl)
- }
-
- #[inline]
- pub(crate) fn get_ip_multicast_ttl(fd: BorrowedFd<'_>) -> io::Result<u32> {
- getsockopt(fd, c::IPPROTO_IP as _, c::IP_MULTICAST_TTL)
- }
-
- #[inline]
- pub(crate) fn set_ipv6_multicast_loop(
- fd: BorrowedFd<'_>,
- multicast_loop: bool,
- ) -> io::Result<()> {
- setsockopt(
- fd,
- c::IPPROTO_IPV6 as _,
- c::IPV6_MULTICAST_LOOP,
- from_bool(multicast_loop),
- )
- }
-
- #[inline]
- pub(crate) fn get_ipv6_multicast_loop(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::IPPROTO_IPV6 as _, c::IPV6_MULTICAST_LOOP).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_ipv6_multicast_hops(
- fd: BorrowedFd<'_>,
- multicast_hops: u32,
- ) -> io::Result<()> {
- setsockopt(
- fd,
- c::IPPROTO_IP as _,
- c::IPV6_MULTICAST_LOOP,
- multicast_hops,
- )
- }
-
- #[inline]
- pub(crate) fn get_ipv6_multicast_hops(fd: BorrowedFd<'_>) -> io::Result<u32> {
- getsockopt(fd, c::IPPROTO_IP as _, c::IPV6_MULTICAST_LOOP)
- }
-
- #[inline]
- pub(crate) fn set_ip_add_membership(
- fd: BorrowedFd<'_>,
- multiaddr: &Ipv4Addr,
- interface: &Ipv4Addr,
- ) -> io::Result<()> {
- let mreq = to_imr(multiaddr, interface);
- setsockopt(fd, c::IPPROTO_IP as _, c::IP_ADD_MEMBERSHIP, mreq)
- }
-
- #[inline]
- pub(crate) fn set_ipv6_add_membership(
- fd: BorrowedFd<'_>,
- multiaddr: &Ipv6Addr,
- interface: u32,
- ) -> io::Result<()> {
- let mreq = to_ipv6mr(multiaddr, interface);
- setsockopt(fd, c::IPPROTO_IPV6 as _, c::IPV6_ADD_MEMBERSHIP, mreq)
- }
-
- #[inline]
- pub(crate) fn set_ip_drop_membership(
- fd: BorrowedFd<'_>,
- multiaddr: &Ipv4Addr,
- interface: &Ipv4Addr,
- ) -> io::Result<()> {
- let mreq = to_imr(multiaddr, interface);
- setsockopt(fd, c::IPPROTO_IP as _, c::IP_DROP_MEMBERSHIP, mreq)
- }
-
- #[inline]
- pub(crate) fn set_ipv6_drop_membership(
- fd: BorrowedFd<'_>,
- multiaddr: &Ipv6Addr,
- interface: u32,
- ) -> io::Result<()> {
- let mreq = to_ipv6mr(multiaddr, interface);
- setsockopt(fd, c::IPPROTO_IPV6 as _, c::IPV6_DROP_MEMBERSHIP, mreq)
- }
-
- #[inline]
- pub(crate) fn set_tcp_nodelay(fd: BorrowedFd<'_>, nodelay: bool) -> io::Result<()> {
- setsockopt(fd, c::IPPROTO_TCP as _, c::TCP_NODELAY, from_bool(nodelay))
- }
-
- #[inline]
- pub(crate) fn get_tcp_nodelay(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::IPPROTO_TCP as _, c::TCP_NODELAY).map(to_bool)
- }
-
- #[inline]
- fn to_imr(multiaddr: &Ipv4Addr, interface: &Ipv4Addr) -> c::ip_mreq {
- c::ip_mreq {
- imr_multiaddr: to_imr_addr(multiaddr),
- imr_interface: to_imr_addr(interface),
- }
- }
-
- #[inline]
- fn to_imr_addr(addr: &Ipv4Addr) -> c::in_addr {
- c::in_addr {
- s_addr: u32::from_ne_bytes(addr.octets()),
- }
- }
-
- #[inline]
- fn to_ipv6mr(multiaddr: &Ipv6Addr, interface: u32) -> c::ipv6_mreq {
- c::ipv6_mreq {
- ipv6mr_multiaddr: to_ipv6mr_multiaddr(multiaddr),
- ipv6mr_ifindex: to_ipv6mr_interface(interface),
- }
- }
-
- #[inline]
- fn to_ipv6mr_multiaddr(multiaddr: &Ipv6Addr) -> c::in6_addr {
- c::in6_addr {
- in6_u: linux_raw_sys::general::in6_addr__bindgen_ty_1 {
- u6_addr8: multiaddr.octets(),
- },
- }
- }
-
- #[inline]
- fn to_ipv6mr_interface(interface: u32) -> c::c_int {
- interface as c::c_int
- }
-
- #[inline]
- fn from_bool(value: bool) -> c::c_uint {
- c::c_uint::from(value)
- }
-
- #[inline]
- fn to_bool(value: c::c_uint) -> bool {
- value != 0
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/net/types.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/net/types.rs
deleted file mode 100644
index b8f786b3f..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/net/types.rs
+++ /dev/null
@@ -1,282 +0,0 @@
-use super::super::c;
-use bitflags::bitflags;
-
-/// A type for holding raw integer socket types.
-#[doc(hidden)]
-pub type RawSocketType = u32;
-
-/// `SOCK_*` constants for use with [`socket`].
-///
-/// [`socket`]: crate::net::socket
-#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
-#[repr(transparent)]
-pub struct SocketType(pub(crate) RawSocketType);
-
-#[rustfmt::skip]
-impl SocketType {
- /// `SOCK_STREAM`
- pub const STREAM: Self = Self(c::SOCK_STREAM);
-
- /// `SOCK_DGRAM`
- pub const DGRAM: Self = Self(c::SOCK_DGRAM);
-
- /// `SOCK_SEQPACKET`
- pub const SEQPACKET: Self = Self(c::SOCK_SEQPACKET);
-
- /// `SOCK_RAW`
- pub const RAW: Self = Self(c::SOCK_RAW);
-
- /// `SOCK_RDM`
- pub const RDM: Self = Self(c::SOCK_RDM);
-
- /// Constructs a `SocketType` from a raw integer.
- #[inline]
- pub const fn from_raw(raw: RawSocketType) -> Self {
- Self(raw)
- }
-
- /// Returns the raw integer for this `SocketType`.
- #[inline]
- pub const fn as_raw(self) -> RawSocketType {
- self.0
- }
-}
-
-/// A type for holding raw integer address families.
-#[doc(hidden)]
-pub type RawAddressFamily = c::sa_family_t;
-
-/// `AF_*` constants.
-#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
-#[repr(transparent)]
-pub struct AddressFamily(pub(crate) RawAddressFamily);
-
-#[rustfmt::skip]
-impl AddressFamily {
- /// `AF_UNSPEC`
- pub const UNSPEC: Self = Self(c::AF_UNSPEC as _);
- /// `AF_INET`
- pub const INET: Self = Self(c::AF_INET as _);
- /// `AF_INET6`
- pub const INET6: Self = Self(c::AF_INET6 as _);
- /// `AF_NETLINK`
- pub const NETLINK: Self = Self(c::AF_NETLINK as _);
- /// `AF_UNIX`, aka `AF_LOCAL`
- #[doc(alias = "LOCAL")]
- pub const UNIX: Self = Self(c::AF_UNIX as _);
- /// `AF_AX25`
- pub const AX25: Self = Self(c::AF_AX25 as _);
- /// `AF_IPX`
- pub const IPX: Self = Self(c::AF_IPX as _);
- /// `AF_APPLETALK`
- pub const APPLETALK: Self = Self(c::AF_APPLETALK as _);
- /// `AF_NETROM`
- pub const NETROM: Self = Self(c::AF_NETROM as _);
- /// `AF_BRIDGE`
- pub const BRIDGE: Self = Self(c::AF_BRIDGE as _);
- /// `AF_ATMPVC`
- pub const ATMPVC: Self = Self(c::AF_ATMPVC as _);
- /// `AF_X25`
- pub const X25: Self = Self(c::AF_X25 as _);
- /// `AF_ROSE`
- pub const ROSE: Self = Self(c::AF_ROSE as _);
- /// `AF_DECnet`
- #[allow(non_upper_case_globals)]
- pub const DECnet: Self = Self(c::AF_DECnet as _);
- /// `AF_NETBEUI`
- pub const NETBEUI: Self = Self(c::AF_NETBEUI as _);
- /// `AF_SECURITY`
- pub const SECURITY: Self = Self(c::AF_SECURITY as _);
- /// `AF_KEY`
- pub const KEY: Self = Self(c::AF_KEY as _);
- /// `AF_PACKET`
- pub const PACKET: Self = Self(c::AF_PACKET as _);
- /// `AF_ASH`
- pub const ASH: Self = Self(c::AF_ASH as _);
- /// `AF_ECONET`
- pub const ECONET: Self = Self(c::AF_ECONET as _);
- /// `AF_ATMSVC`
- pub const ATMSVC: Self = Self(c::AF_ATMSVC as _);
- /// `AF_RDS`
- pub const RDS: Self = Self(c::AF_RDS as _);
- /// `AF_SNA`
- pub const SNA: Self = Self(c::AF_SNA as _);
- /// `AF_IRDA`
- pub const IRDA: Self = Self(c::AF_IRDA as _);
- /// `AF_PPPOX`
- pub const PPPOX: Self = Self(c::AF_PPPOX as _);
- /// `AF_WANPIPE`
- pub const WANPIPE: Self = Self(c::AF_WANPIPE as _);
- /// `AF_LLC`
- pub const LLC: Self = Self(c::AF_LLC as _);
- /// `AF_CAN`
- pub const CAN: Self = Self(c::AF_CAN as _);
- /// `AF_TIPC`
- pub const TIPC: Self = Self(c::AF_TIPC as _);
- /// `AF_BLUETOOTH`
- pub const BLUETOOTH: Self = Self(c::AF_BLUETOOTH as _);
- /// `AF_IUCV`
- pub const IUCV: Self = Self(c::AF_IUCV as _);
- /// `AF_RXRPC`
- pub const RXRPC: Self = Self(c::AF_RXRPC as _);
- /// `AF_ISDN`
- pub const ISDN: Self = Self(c::AF_ISDN as _);
- /// `AF_PHONET`
- pub const PHONET: Self = Self(c::AF_PHONET as _);
- /// `AF_IEEE802154`
- pub const IEEE802154: Self = Self(c::AF_IEEE802154 as _);
-
- /// Constructs a `AddressFamily` from a raw integer.
- #[inline]
- pub const fn from_raw(raw: RawAddressFamily) -> Self {
- Self(raw)
- }
-
- /// Returns the raw integer for this `AddressFamily`.
- #[inline]
- pub const fn as_raw(self) -> RawAddressFamily {
- self.0
- }
-}
-
-/// A type for holding raw integer protocols.
-#[doc(hidden)]
-pub type RawProtocol = u32;
-
-/// `IPPROTO_*`
-#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
-#[repr(transparent)]
-pub struct Protocol(pub(crate) RawProtocol);
-
-#[rustfmt::skip]
-impl Protocol {
- /// `IPPROTO_IP`
- pub const IP: Self = Self(c::IPPROTO_IP as _);
- /// `IPPROTO_ICMP`
- pub const ICMP: Self = Self(c::IPPROTO_ICMP as _);
- /// `IPPROTO_IGMP`
- pub const IGMP: Self = Self(c::IPPROTO_IGMP as _);
- /// `IPPROTO_IPIP`
- pub const IPIP: Self = Self(c::IPPROTO_IPIP as _);
- /// `IPPROTO_TCP`
- pub const TCP: Self = Self(c::IPPROTO_TCP as _);
- /// `IPPROTO_EGP`
- pub const EGP: Self = Self(c::IPPROTO_EGP as _);
- /// `IPPROTO_PUP`
- pub const PUP: Self = Self(c::IPPROTO_PUP as _);
- /// `IPPROTO_UDP`
- pub const UDP: Self = Self(c::IPPROTO_UDP as _);
- /// `IPPROTO_IDP`
- pub const IDP: Self = Self(c::IPPROTO_IDP as _);
- /// `IPPROTO_TP`
- pub const TP: Self = Self(c::IPPROTO_TP as _);
- /// `IPPROTO_DCCP`
- pub const DCCP: Self = Self(c::IPPROTO_DCCP as _);
- /// `IPPROTO_IPV6`
- pub const IPV6: Self = Self(c::IPPROTO_IPV6 as _);
- /// `IPPROTO_RSVP`
- pub const RSVP: Self = Self(c::IPPROTO_RSVP as _);
- /// `IPPROTO_GRE`
- pub const GRE: Self = Self(c::IPPROTO_GRE as _);
- /// `IPPROTO_ESP`
- pub const ESP: Self = Self(c::IPPROTO_ESP as _);
- /// `IPPROTO_AH`
- pub const AH: Self = Self(c::IPPROTO_AH as _);
- /// `IPPROTO_MTP`
- pub const MTP: Self = Self(c::IPPROTO_MTP as _);
- /// `IPPROTO_BEETPH`
- pub const BEETPH: Self = Self(c::IPPROTO_BEETPH as _);
- /// `IPPROTO_ENCAP`
- pub const ENCAP: Self = Self(c::IPPROTO_ENCAP as _);
- /// `IPPROTO_PIM`
- pub const PIM: Self = Self(c::IPPROTO_PIM as _);
- /// `IPPROTO_COMP`
- pub const COMP: Self = Self(c::IPPROTO_COMP as _);
- /// `IPPROTO_SCTP`
- pub const SCTP: Self = Self(c::IPPROTO_SCTP as _);
- /// `IPPROTO_UDPLITE`
- pub const UDPLITE: Self = Self(c::IPPROTO_UDPLITE as _);
- /// `IPPROTO_MPLS`
- pub const MPLS: Self = Self(c::IPPROTO_MPLS as _);
- /// `IPPROTO_ETHERNET`
- pub const ETHERNET: Self = Self(c::IPPROTO_ETHERNET as _);
- /// `IPPROTO_RAW`
- pub const RAW: Self = Self(c::IPPROTO_RAW as _);
- /// `IPPROTO_MPTCP`
- pub const MPTCP: Self = Self(c::IPPROTO_MPTCP as _);
- /// `IPPROTO_FRAGMENT`
- pub const FRAGMENT: Self = Self(c::IPPROTO_FRAGMENT as _);
- /// `IPPROTO_ICMPV6`
- pub const ICMPV6: Self = Self(c::IPPROTO_ICMPV6 as _);
- /// `IPPROTO_MH`
- pub const MH: Self = Self(c::IPPROTO_MH as _);
- /// `IPPROTO_ROUTING`
- pub const ROUTING: Self = Self(c::IPPROTO_ROUTING as _);
-
- /// Constructs a `Protocol` from a raw integer.
- #[inline]
- pub const fn from_raw(raw: RawProtocol) -> Self {
- Self(raw)
- }
-
- /// Returns the raw integer for this `Protocol`.
- #[inline]
- pub const fn as_raw(self) -> RawProtocol {
- self.0
- }
-}
-
-/// `SHUT_*` constants for use with [`shutdown`].
-///
-/// [`shutdown`]: crate::net::shutdown
-#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
-#[repr(u32)]
-pub enum Shutdown {
- /// `SHUT_WR`—Disable further read operations.
- Read = c::SHUT_RD,
- /// `SHUT_WR`—Disable further write operations.
- Write = c::SHUT_WR,
- /// `SHUT_RDWR`—Disable further read and write operations.
- ReadWrite = c::SHUT_RDWR,
-}
-
-bitflags! {
- /// `SOCK_*` constants for use with [`accept_with`] and [`acceptfrom_with`].
- ///
- /// [`accept_with`]: crate::net::accept_with
- /// [`acceptfrom_with`]: crate::net::acceptfrom_with
- pub struct AcceptFlags: c::c_uint {
- /// `SOCK_NONBLOCK`
- const NONBLOCK = c::O_NONBLOCK;
- /// `SOCK_CLOEXEC`
- const CLOEXEC = c::O_CLOEXEC;
- }
-}
-
-bitflags! {
- /// `SOCK_*` constants for use with [`socket`].
- ///
- /// [`socket`]: crate::net::socket
- pub struct SocketFlags: c::c_uint {
- /// `SOCK_NONBLOCK`
- const NONBLOCK = c::O_NONBLOCK;
-
- /// `SOCK_CLOEXEC`
- const CLOEXEC = c::O_CLOEXEC;
- }
-}
-
-/// Timeout identifier for use with [`set_socket_timeout`] and
-/// [`get_socket_timeout`].
-///
-/// [`set_socket_timeout`]: crate::net::sockopt::set_socket_timeout.
-/// [`get_socket_timeout`]: crate::net::sockopt::get_socket_timeout.
-#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
-#[repr(u32)]
-pub enum Timeout {
- /// `SO_RCVTIMEO`—Timeout for receiving.
- Recv = c::SO_RCVTIMEO_NEW,
-
- /// `SO_SNDTIMEO`—Timeout for sending.
- Send = c::SO_SNDTIMEO_NEW,
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/net/write_sockaddr.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/net/write_sockaddr.rs
deleted file mode 100644
index 17abd96a0..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/net/write_sockaddr.rs
+++ /dev/null
@@ -1,60 +0,0 @@
-//! The BSD sockets API requires us to read the `ss_family` field before
-//! we can interpret the rest of a `sockaddr` produced by the kernel.
-#![allow(unsafe_code)]
-
-use super::super::c;
-use crate::net::{SocketAddrAny, SocketAddrStorage, SocketAddrUnix, SocketAddrV4, SocketAddrV6};
-use core::mem::size_of;
-
-pub(crate) unsafe fn write_sockaddr(
- addr: &SocketAddrAny,
- storage: *mut SocketAddrStorage,
-) -> usize {
- match addr {
- SocketAddrAny::V4(v4) => write_sockaddr_v4(v4, storage),
- SocketAddrAny::V6(v6) => write_sockaddr_v6(v6, storage),
- SocketAddrAny::Unix(unix) => write_sockaddr_unix(unix, storage),
- }
-}
-
-pub(crate) unsafe fn encode_sockaddr_v4(v4: &SocketAddrV4) -> c::sockaddr_in {
- c::sockaddr_in {
- sin_family: c::AF_INET as _,
- sin_port: u16::to_be(v4.port()),
- sin_addr: c::in_addr {
- s_addr: u32::from_ne_bytes(v4.ip().octets()),
- },
- __pad: [0_u8; 8],
- }
-}
-
-unsafe fn write_sockaddr_v4(v4: &SocketAddrV4, storage: *mut SocketAddrStorage) -> usize {
- let encoded = encode_sockaddr_v4(v4);
- core::ptr::write(storage.cast(), encoded);
- size_of::<c::sockaddr_in>()
-}
-
-pub(crate) unsafe fn encode_sockaddr_v6(v6: &SocketAddrV6) -> c::sockaddr_in6 {
- c::sockaddr_in6 {
- sin6_family: c::AF_INET6 as _,
- sin6_port: u16::to_be(v6.port()),
- sin6_flowinfo: u32::to_be(v6.flowinfo()),
- sin6_addr: c::in6_addr {
- in6_u: linux_raw_sys::general::in6_addr__bindgen_ty_1 {
- u6_addr8: v6.ip().octets(),
- },
- },
- sin6_scope_id: v6.scope_id(),
- }
-}
-
-unsafe fn write_sockaddr_v6(v6: &SocketAddrV6, storage: *mut SocketAddrStorage) -> usize {
- let encoded = encode_sockaddr_v6(v6);
- core::ptr::write(storage.cast(), encoded);
- size_of::<c::sockaddr_in6>()
-}
-
-unsafe fn write_sockaddr_unix(unix: &SocketAddrUnix, storage: *mut SocketAddrStorage) -> usize {
- core::ptr::write(storage.cast(), unix.unix);
- unix.len()
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/param/auxv.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/param/auxv.rs
deleted file mode 100644
index 741a0564f..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/param/auxv.rs
+++ /dev/null
@@ -1,377 +0,0 @@
-//! Linux auxv support.
-//!
-//! # Safety
-//!
-//! This uses raw pointers to locate and read the kernel-provided auxv array.
-#![allow(unsafe_code)]
-
-use super::super::c;
-use super::super::elf::*;
-use crate::fd::OwnedFd;
-#[cfg(feature = "param")]
-use crate::ffi::CStr;
-#[cfg(not(target_vendor = "mustang"))]
-use crate::fs::{Mode, OFlags};
-use crate::utils::{as_ptr, check_raw_pointer};
-use alloc::vec::Vec;
-use core::ffi::c_void;
-use core::mem::size_of;
-use core::ptr::{null_mut, read_unaligned, NonNull};
-#[cfg(feature = "runtime")]
-use core::slice;
-use core::sync::atomic::Ordering::Relaxed;
-use core::sync::atomic::{AtomicPtr, AtomicUsize};
-use linux_raw_sys::general::{
- AT_BASE, AT_CLKTCK, AT_EXECFN, AT_HWCAP, AT_HWCAP2, AT_NULL, AT_PAGESZ, AT_PHDR, AT_PHENT,
- AT_PHNUM, AT_SYSINFO_EHDR,
-};
-
-#[cfg(feature = "param")]
-#[inline]
-pub(crate) fn page_size() -> usize {
- let mut page_size = PAGE_SIZE.load(Relaxed);
-
- if page_size == 0 {
- init_from_proc_self_auxv();
- page_size = PAGE_SIZE.load(Relaxed);
- }
-
- page_size
-}
-
-#[cfg(feature = "param")]
-#[inline]
-pub(crate) fn clock_ticks_per_second() -> u64 {
- let mut ticks = CLOCK_TICKS_PER_SECOND.load(Relaxed);
-
- if ticks == 0 {
- init_from_proc_self_auxv();
- ticks = CLOCK_TICKS_PER_SECOND.load(Relaxed);
- }
-
- ticks as u64
-}
-
-#[cfg(feature = "param")]
-#[inline]
-pub(crate) fn linux_hwcap() -> (usize, usize) {
- let mut hwcap = HWCAP.load(Relaxed);
- let mut hwcap2 = HWCAP2.load(Relaxed);
-
- if hwcap == 0 || hwcap2 == 0 {
- init_from_proc_self_auxv();
- hwcap = HWCAP.load(Relaxed);
- hwcap2 = HWCAP2.load(Relaxed);
- }
-
- (hwcap, hwcap2)
-}
-
-#[cfg(feature = "param")]
-#[inline]
-pub(crate) fn linux_execfn() -> &'static CStr {
- let mut execfn = EXECFN.load(Relaxed);
-
- if execfn.is_null() {
- init_from_proc_self_auxv();
- execfn = EXECFN.load(Relaxed);
- }
-
- // SAFETY: We assume the `AT_EXECFN` value provided by the kernel is a
- // valid pointer to a valid NUL-terminated array of bytes.
- unsafe { CStr::from_ptr(execfn.cast()) }
-}
-
-#[cfg(feature = "runtime")]
-#[inline]
-pub(crate) fn exe_phdrs() -> (*const c::c_void, usize) {
- let mut phdr = PHDR.load(Relaxed);
- let mut phnum = PHNUM.load(Relaxed);
-
- if phdr.is_null() || phnum == 0 {
- init_from_proc_self_auxv();
- phdr = PHDR.load(Relaxed);
- phnum = PHNUM.load(Relaxed);
- }
-
- (phdr.cast(), phnum)
-}
-
-#[cfg(feature = "runtime")]
-#[inline]
-pub(in super::super) fn exe_phdrs_slice() -> &'static [Elf_Phdr] {
- let (phdr, phnum) = exe_phdrs();
-
- // SAFETY: We assume the `AT_PHDR` and `AT_PHNUM` values provided by the
- // kernel form a valid slice.
- unsafe { slice::from_raw_parts(phdr.cast(), phnum) }
-}
-
-/// `AT_SYSINFO_EHDR` isn't present on all platforms in all configurations,
-/// so if we don't see it, this function returns a null pointer.
-#[inline]
-pub(in super::super) fn sysinfo_ehdr() -> *const Elf_Ehdr {
- let mut ehdr = SYSINFO_EHDR.load(Relaxed);
-
- if ehdr.is_null() {
- init_from_proc_self_auxv();
- ehdr = SYSINFO_EHDR.load(Relaxed);
- }
-
- ehdr
-}
-
-static PAGE_SIZE: AtomicUsize = AtomicUsize::new(0);
-static CLOCK_TICKS_PER_SECOND: AtomicUsize = AtomicUsize::new(0);
-static HWCAP: AtomicUsize = AtomicUsize::new(0);
-static HWCAP2: AtomicUsize = AtomicUsize::new(0);
-static SYSINFO_EHDR: AtomicPtr<Elf_Ehdr> = AtomicPtr::new(null_mut());
-static PHDR: AtomicPtr<Elf_Phdr> = AtomicPtr::new(null_mut());
-static PHNUM: AtomicUsize = AtomicUsize::new(0);
-static EXECFN: AtomicPtr<c::c_char> = AtomicPtr::new(null_mut());
-
-/// On non-Mustang platforms, we read the aux vector from /proc/self/auxv.
-#[cfg(not(target_vendor = "mustang"))]
-fn init_from_proc_self_auxv() {
- // Open "/proc/self/auxv", either because we trust "/proc", or because
- // we're running inside QEMU and `proc_self_auxv`'s extra checking foils
- // QEMU's emulation so we need to do a plain open to get the right
- // auxv records.
- let file = crate::fs::openat(
- crate::fs::cwd(),
- "/proc/self/auxv",
- OFlags::empty(),
- Mode::empty(),
- )
- .unwrap();
-
- let _ = init_from_auxv_file(file);
-}
-
-#[cfg(target_vendor = "mustang")]
-fn init_from_proc_self_auxv() {
- panic!("mustang should have initialized the auxv values");
-}
-
-/// Process auxv entries from the open file `auxv`.
-fn init_from_auxv_file(auxv: OwnedFd) -> Option<()> {
- let mut buffer = Vec::<u8>::with_capacity(512);
- loop {
- let cur = buffer.len();
-
- // Request one extra byte; `Vec` will often allocate more.
- buffer.reserve(1);
-
- // Use all the space it allocated.
- buffer.resize(buffer.capacity(), 0);
-
- // Read up to that many bytes.
- let n = match crate::io::read(&auxv, &mut buffer[cur..]) {
- Err(crate::io::Errno::INTR) => 0,
- Err(_err) => panic!(),
- Ok(0) => break,
- Ok(n) => n,
- };
-
- // Account for the number of bytes actually read.
- buffer.resize(cur + n, 0_u8);
- }
-
- // SAFETY: We loaded from an auxv file into the buffer.
- unsafe { init_from_auxp(buffer.as_ptr().cast()) }
-}
-
-/// Process auxv entries from the auxv array pointed to by `auxp`.
-///
-/// # Safety
-///
-/// This must be passed a pointer to an auxv array.
-///
-/// The buffer contains `Elf_aux_t` elements, though it need not be aligned;
-/// function uses `read_unaligned` to read from it.
-unsafe fn init_from_auxp(mut auxp: *const Elf_auxv_t) -> Option<()> {
- let mut pagesz = 0;
- let mut clktck = 0;
- let mut hwcap = 0;
- let mut hwcap2 = 0;
- let mut phdr = null_mut();
- let mut phnum = 0;
- let mut execfn = null_mut();
- let mut sysinfo_ehdr = null_mut();
- let mut phent = 0;
-
- loop {
- let Elf_auxv_t { a_type, a_val } = read_unaligned(auxp);
-
- match a_type as _ {
- AT_PAGESZ => pagesz = a_val as usize,
- AT_CLKTCK => clktck = a_val as usize,
- AT_HWCAP => hwcap = a_val as usize,
- AT_HWCAP2 => hwcap2 = a_val as usize,
- AT_PHDR => phdr = check_raw_pointer::<Elf_Phdr>(a_val as *mut _)?.as_ptr(),
- AT_PHNUM => phnum = a_val as usize,
- AT_PHENT => phent = a_val as usize,
- AT_EXECFN => execfn = check_raw_pointer::<c::c_char>(a_val as *mut _)?.as_ptr(),
- AT_BASE => check_interpreter_base(a_val.cast())?,
- AT_SYSINFO_EHDR => sysinfo_ehdr = check_vdso_base(a_val as *mut _)?.as_ptr(),
- AT_NULL => break,
- _ => (),
- }
- auxp = auxp.add(1);
- }
-
- assert_eq!(phent, size_of::<Elf_Phdr>());
-
- // The base and sysinfo_ehdr (if present) matches our platform. Accept
- // the aux values.
- PAGE_SIZE.store(pagesz, Relaxed);
- CLOCK_TICKS_PER_SECOND.store(clktck, Relaxed);
- HWCAP.store(hwcap, Relaxed);
- HWCAP2.store(hwcap2, Relaxed);
- PHDR.store(phdr, Relaxed);
- PHNUM.store(phnum, Relaxed);
- EXECFN.store(execfn, Relaxed);
- SYSINFO_EHDR.store(sysinfo_ehdr, Relaxed);
-
- Some(())
-}
-
-/// Check that `base` is a valid pointer to the program interpreter.
-///
-/// `base` is some value we got from a `AT_BASE` aux record somewhere,
-/// which hopefully holds the value of the program interpreter in memory. Do a
-/// series of checks to be as sure as we can that it's safe to use.
-unsafe fn check_interpreter_base(base: *const Elf_Ehdr) -> Option<()> {
- check_elf_base(base)?;
- Some(())
-}
-
-/// Check that `base` is a valid pointer to the kernel-provided vDSO.
-///
-/// `base` is some value we got from a `AT_SYSINFO_EHDR` aux record somewhere,
-/// which hopefully holds the value of the kernel-provided vDSO in memory. Do a
-/// series of checks to be as sure as we can that it's safe to use.
-unsafe fn check_vdso_base(base: *const Elf_Ehdr) -> Option<NonNull<Elf_Ehdr>> {
- // In theory, we could check that we're not attempting to parse our own ELF
- // image, as an additional check. However, older Linux toolchains don't
- // support this, and Rust's `#[linkage = "extern_weak"]` isn't stable yet,
- // so just disable this for now.
- /*
- {
- extern "C" {
- static __ehdr_start: c::c_void;
- }
-
- let ehdr_start: *const c::c_void = &__ehdr_start;
- if base == ehdr_start {
- return None;
- }
- }
- */
-
- let hdr = check_elf_base(base)?;
-
- // Check that the ELF is not writable, since that would indicate that this
- // isn't the ELF we think it is. Here we're just using `clock_getres` just
- // as an arbitrary system call which writes to a buffer and fails with
- // `EFAULT` if the buffer is not writable.
- {
- use super::super::conv::{c_uint, ret};
- if ret(syscall!(
- __NR_clock_getres,
- c_uint(linux_raw_sys::general::CLOCK_MONOTONIC),
- base
- )) != Err(crate::io::Errno::FAULT)
- {
- // We can't gracefully fail here because we would seem to have just
- // mutated some unknown memory.
- #[cfg(feature = "std")]
- {
- std::process::abort();
- }
- #[cfg(all(not(feature = "std"), feature = "rustc-dep-of-std"))]
- {
- core::intrinsics::abort();
- }
- }
- }
-
- Some(hdr)
-}
-
-/// Check that `base` is a valid pointer to an ELF image.
-unsafe fn check_elf_base(base: *const Elf_Ehdr) -> Option<NonNull<Elf_Ehdr>> {
- // If we're reading a 64-bit auxv on a 32-bit platform, we'll see
- // a zero `a_val` because `AT_*` values are never greater than
- // `u32::MAX`. Zero is used by libc's `getauxval` to indicate
- // errors, so it should never be a valid value.
- if base.is_null() {
- return None;
- }
-
- let hdr = match check_raw_pointer::<Elf_Ehdr>(base as *mut _) {
- Some(hdr) => hdr,
- None => return None,
- };
-
- let hdr = hdr.as_ref();
- if hdr.e_ident[..SELFMAG] != ELFMAG {
- return None; // Wrong ELF magic
- }
- if !matches!(hdr.e_ident[EI_OSABI], ELFOSABI_SYSV | ELFOSABI_LINUX) {
- return None; // Unrecognized ELF OS ABI
- }
- if hdr.e_ident[EI_ABIVERSION] != ELFABIVERSION {
- return None; // Unrecognized ELF ABI version
- }
- if hdr.e_type != ET_DYN {
- return None; // Wrong ELF type
- }
-
- // If ELF is extended, we'll need to adjust.
- if hdr.e_ident[EI_VERSION] != EV_CURRENT
- || hdr.e_ehsize as usize != size_of::<Elf_Ehdr>()
- || hdr.e_phentsize as usize != size_of::<Elf_Phdr>()
- {
- return None;
- }
- // We don't currently support extra-large numbers of segments.
- if hdr.e_phnum == PN_XNUM {
- return None;
- }
-
- // If `e_phoff` is zero, it's more likely that we're looking at memory that
- // has been zeroed than that the kernel has somehow aliased the `Ehdr` and
- // the `Phdr`.
- if hdr.e_phoff < size_of::<Elf_Ehdr>() {
- return None;
- }
-
- // Verify that the `EI_CLASS`/`EI_DATA`/`e_machine` fields match the
- // architecture we're running as. This helps catch cases where we're
- // running under QEMU.
- if hdr.e_ident[EI_CLASS] != ELFCLASS {
- return None; // Wrong ELF class
- }
- if hdr.e_ident[EI_DATA] != ELFDATA {
- return None; // Wrong ELF data
- }
- if hdr.e_machine != EM_CURRENT {
- return None; // Wrong machine type
- }
-
- Some(NonNull::new_unchecked(as_ptr(hdr) as *mut _))
-}
-
-// ELF ABI
-
-#[repr(C)]
-#[derive(Copy, Clone)]
-struct Elf_auxv_t {
- a_type: usize,
-
- // Some of the values in the auxv array are pointers, so we make `a_val` a
- // pointer, in order to preserve their provenance. For the values which are
- // integers, we cast this to `usize`.
- a_val: *const c_void,
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/param/libc_auxv.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/param/libc_auxv.rs
deleted file mode 100644
index a8e291ff6..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/param/libc_auxv.rs
+++ /dev/null
@@ -1,83 +0,0 @@
-//! Linux auxv support, using libc.
-//!
-//! # Safety
-//!
-//! This uses raw pointers to locate and read the kernel-provided auxv array.
-#![allow(unsafe_code)]
-
-use super::super::elf::*;
-#[cfg(feature = "param")]
-use crate::ffi::CStr;
-#[cfg(feature = "runtime")]
-use core::slice;
-
-// `getauxval` wasn't supported in glibc until 2.16.
-weak!(fn getauxval(libc::c_ulong) -> *mut libc::c_void);
-
-#[cfg(feature = "param")]
-#[inline]
-pub(crate) fn page_size() -> usize {
- unsafe { libc::sysconf(libc::_SC_PAGESIZE) as usize }
-}
-
-#[cfg(feature = "param")]
-#[inline]
-pub(crate) fn clock_ticks_per_second() -> u64 {
- unsafe { libc::sysconf(libc::_SC_CLK_TCK) as u64 }
-}
-
-#[cfg(feature = "param")]
-#[inline]
-pub(crate) fn linux_hwcap() -> (usize, usize) {
- if let Some(libc_getauxval) = getauxval.get() {
- unsafe {
- let hwcap = libc_getauxval(libc::AT_HWCAP) as usize;
- let hwcap2 = libc_getauxval(libc::AT_HWCAP2) as usize;
- (hwcap, hwcap2)
- }
- } else {
- (0, 0)
- }
-}
-
-#[cfg(feature = "param")]
-#[inline]
-pub(crate) fn linux_execfn() -> &'static CStr {
- if let Some(libc_getauxval) = getauxval.get() {
- unsafe { CStr::from_ptr(libc_getauxval(libc::AT_EXECFN).cast()) }
- } else {
- cstr!("")
- }
-}
-
-#[cfg(feature = "runtime")]
-#[inline]
-pub(crate) fn exe_phdrs() -> (*const libc::c_void, usize) {
- unsafe {
- (
- libc::getauxval(libc::AT_PHDR) as *const libc::c_void,
- libc::getauxval(libc::AT_PHNUM) as usize,
- )
- }
-}
-
-#[cfg(feature = "runtime")]
-#[inline]
-pub(in super::super) fn exe_phdrs_slice() -> &'static [Elf_Phdr] {
- let (phdr, phnum) = exe_phdrs();
-
- // SAFETY: We assume the `AT_PHDR` and `AT_PHNUM` values provided by the
- // kernel form a valid slice.
- unsafe { slice::from_raw_parts(phdr.cast(), phnum) }
-}
-
-/// `AT_SYSINFO_EHDR` isn't present on all platforms in all configurations,
-/// so if we don't see it, this function returns a null pointer.
-#[inline]
-pub(in super::super) fn sysinfo_ehdr() -> *const Elf_Ehdr {
- if let Some(libc_getauxval) = getauxval.get() {
- unsafe { libc_getauxval(linux_raw_sys::general::AT_SYSINFO_EHDR.into()) as *const Elf_Ehdr }
- } else {
- core::ptr::null()
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/param/mod.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/param/mod.rs
deleted file mode 100644
index 956282074..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/param/mod.rs
+++ /dev/null
@@ -1,12 +0,0 @@
-// On Mustang, origin is in control of program startup and can access the
-// incoming aux values on the stack.
-//
-// With "use-libc-auxv" enabled, use libc's `getauxval`.
-//
-// Otherwise, we read aux values from /proc/self/auxv.
-#[cfg_attr(target_vendor = "mustang", path = "mustang_auxv.rs")]
-#[cfg_attr(
- all(not(target_vendor = "mustang"), feature = "use-libc-auxv"),
- path = "libc_auxv.rs"
-)]
-pub(crate) mod auxv;
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/param/mustang_auxv.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/param/mustang_auxv.rs
deleted file mode 100644
index 49cb1457c..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/param/mustang_auxv.rs
+++ /dev/null
@@ -1,159 +0,0 @@
-//! Linux auxv support, for Mustang.
-//!
-//! # Safety
-//!
-//! This uses raw pointers to locate and read the kernel-provided auxv array.
-#![allow(unsafe_code)]
-
-use super::super::c;
-use super::super::elf::*;
-#[cfg(feature = "param")]
-use crate::ffi::CStr;
-use core::ffi::c_void;
-use core::mem::size_of;
-use core::ptr::{null, read};
-#[cfg(feature = "runtime")]
-use core::slice;
-use linux_raw_sys::general::{
- AT_CLKTCK, AT_EXECFN, AT_HWCAP, AT_HWCAP2, AT_NULL, AT_PAGESZ, AT_PHDR, AT_PHENT, AT_PHNUM,
- AT_SYSINFO_EHDR,
-};
-
-#[cfg(feature = "param")]
-#[inline]
-pub(crate) fn page_size() -> usize {
- // SAFETY: This is initialized during program startup.
- unsafe { PAGE_SIZE }
-}
-
-#[cfg(feature = "param")]
-#[inline]
-pub(crate) fn clock_ticks_per_second() -> u64 {
- // SAFETY: This is initialized during program startup.
- unsafe { CLOCK_TICKS_PER_SECOND as u64 }
-}
-
-#[cfg(feature = "param")]
-#[inline]
-pub(crate) fn linux_hwcap() -> (usize, usize) {
- // SAFETY: This is initialized during program startup.
- unsafe { (HWCAP, HWCAP2) }
-}
-
-#[cfg(feature = "param")]
-#[inline]
-pub(crate) fn linux_execfn() -> &'static CStr {
- // SAFETY: This is initialized during program startup. And we
- // assume it's a valid pointer to a NUL-terminated string.
- unsafe { CStr::from_ptr(EXECFN.0.cast()) }
-}
-
-#[cfg(feature = "runtime")]
-#[inline]
-pub(crate) fn exe_phdrs() -> (*const c_void, usize) {
- // SAFETY: This is initialized during program startup.
- unsafe { (PHDR.0.cast(), PHNUM) }
-}
-
-#[cfg(feature = "runtime")]
-#[inline]
-pub(in super::super) fn exe_phdrs_slice() -> &'static [Elf_Phdr] {
- let (phdr, phnum) = exe_phdrs();
-
- // SAFETY: We assume the `AT_PHDR` and `AT_PHNUM` values provided by the
- // kernel form a valid slice.
- unsafe { slice::from_raw_parts(phdr.cast(), phnum) }
-}
-
-/// `AT_SYSINFO_EHDR` isn't present on all platforms in all configurations,
-/// so if we don't see it, this function returns a null pointer.
-#[inline]
-pub(in super::super) fn sysinfo_ehdr() -> *const Elf_Ehdr {
- // SAFETY: This is initialized during program startup.
- unsafe { SYSINFO_EHDR.0 }
-}
-
-/// A const pointer to `T` that implements [`Sync`].
-#[repr(transparent)]
-#[derive(Clone, Copy, Debug, PartialEq, Eq)]
-pub struct SyncConstPtr<T>(*const T);
-unsafe impl<T> Sync for SyncConstPtr<T> {}
-
-impl<T> SyncConstPtr<T> {
- /// Creates a `SyncConstPointer` from a raw pointer.
- ///
- /// Behavior is undefined if `ptr` is actually not
- /// safe to share across threads.
- pub const unsafe fn new(ptr: *const T) -> Self {
- Self(ptr)
- }
-}
-
-static mut PAGE_SIZE: usize = 0;
-static mut CLOCK_TICKS_PER_SECOND: usize = 0;
-static mut HWCAP: usize = 0;
-static mut HWCAP2: usize = 0;
-static mut SYSINFO_EHDR: SyncConstPtr<Elf_Ehdr> = unsafe { SyncConstPtr::new(null()) };
-static mut PHDR: SyncConstPtr<Elf_Phdr> = unsafe { SyncConstPtr::new(null()) };
-static mut PHNUM: usize = 0;
-static mut EXECFN: SyncConstPtr<c::c_char> = unsafe { SyncConstPtr::new(null()) };
-
-/// On mustang, we export a function to be called during initialization, and
-/// passed a pointer to the original environment variable block set up by the
-/// OS.
-pub(crate) unsafe fn init(envp: *mut *mut u8) {
- init_from_envp(envp);
-}
-
-/// # Safety
-///
-/// This must be passed a pointer to the environment variable buffer
-/// provided by the kernel, which is followed in memory by the auxv array.
-unsafe fn init_from_envp(mut envp: *mut *mut u8) {
- while !(*envp).is_null() {
- envp = envp.add(1);
- }
- init_from_auxp(envp.add(1).cast())
-}
-
-/// Process auxv entries from the auxv array pointed to by `auxp`.
-///
-/// # Safety
-///
-/// This must be passed a pointer to an auxv array.
-///
-/// The buffer contains `Elf_aux_t` elements, though it need not be aligned;
-/// function uses `read_unaligned` to read from it.
-unsafe fn init_from_auxp(mut auxp: *const Elf_auxv_t) {
- loop {
- let Elf_auxv_t { a_type, a_val } = read(auxp);
-
- match a_type as _ {
- AT_PAGESZ => PAGE_SIZE = a_val as usize,
- AT_CLKTCK => CLOCK_TICKS_PER_SECOND = a_val as usize,
- AT_HWCAP => HWCAP = a_val as usize,
- AT_HWCAP2 => HWCAP2 = a_val as usize,
- AT_PHDR => PHDR = SyncConstPtr::new(a_val.cast::<Elf_Phdr>()),
- AT_PHNUM => PHNUM = a_val as usize,
- AT_PHENT => assert_eq!(a_val as usize, size_of::<Elf_Phdr>()),
- AT_EXECFN => EXECFN = SyncConstPtr::new(a_val.cast::<c::c_char>()),
- AT_SYSINFO_EHDR => SYSINFO_EHDR = SyncConstPtr::new(a_val.cast::<Elf_Ehdr>()),
- AT_NULL => break,
- _ => (),
- }
- auxp = auxp.add(1);
- }
-}
-
-// ELF ABI
-
-#[repr(C)]
-#[derive(Copy, Clone)]
-struct Elf_auxv_t {
- a_type: usize,
-
- // Some of the values in the auxv array are pointers, so we make `a_val` a
- // pointer, in order to preserve their provenance. For the values which are
- // integers, we cast this to `usize`.
- a_val: *const c_void,
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/process/cpu_set.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/process/cpu_set.rs
deleted file mode 100644
index fc81859d8..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/process/cpu_set.rs
+++ /dev/null
@@ -1,49 +0,0 @@
-//! Rust implementation of the `CPU_*` macro API.
-
-#![allow(non_snake_case)]
-
-use super::types::RawCpuSet;
-use core::mem::size_of_val;
-
-#[inline]
-pub(crate) fn CPU_SET(cpu: usize, cpuset: &mut RawCpuSet) {
- let size_in_bits = 8 * size_of_val(&cpuset.bits[0]); // 32, 64 etc
- let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits);
- cpuset.bits[idx] |= 1 << offset
-}
-
-#[inline]
-pub(crate) fn CPU_ZERO(cpuset: &mut RawCpuSet) {
- // TODO: With, Rust 1.50, use `cpuset.bits.fill(0)` instead.
- for element in &mut cpuset.bits {
- *element = 0;
- }
-}
-
-#[inline]
-pub(crate) fn CPU_CLR(cpu: usize, cpuset: &mut RawCpuSet) {
- let size_in_bits = 8 * size_of_val(&cpuset.bits[0]); // 32, 64 etc
- let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits);
- cpuset.bits[idx] &= !(1 << offset)
-}
-
-#[inline]
-pub(crate) fn CPU_ISSET(cpu: usize, cpuset: &RawCpuSet) -> bool {
- let size_in_bits = 8 * size_of_val(&cpuset.bits[0]);
- let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits);
- (cpuset.bits[idx] & (1 << offset)) != 0
-}
-
-#[inline]
-pub(crate) fn CPU_COUNT_S(size_in_bytes: usize, cpuset: &RawCpuSet) -> u32 {
- let size_of_mask = size_of_val(&cpuset.bits[0]);
- let idx = size_in_bytes / size_of_mask;
- cpuset.bits[..idx]
- .iter()
- .fold(0, |acc, i| acc + i.count_ones())
-}
-
-#[inline]
-pub(crate) fn CPU_COUNT(cpuset: &RawCpuSet) -> u32 {
- CPU_COUNT_S(core::mem::size_of::<RawCpuSet>(), cpuset)
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/process/mod.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/process/mod.rs
deleted file mode 100644
index 9b2c25f91..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/process/mod.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-pub(crate) mod cpu_set;
-pub(crate) mod syscalls;
-pub(crate) mod types;
-pub(crate) mod wait;
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/process/syscalls.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/process/syscalls.rs
deleted file mode 100644
index f86f8e5b9..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/process/syscalls.rs
+++ /dev/null
@@ -1,661 +0,0 @@
-//! linux_raw syscalls supporting `rustix::process`.
-//!
-//! # Safety
-//!
-//! See the `rustix::backend` module documentation for details.
-#![allow(unsafe_code)]
-#![allow(clippy::undocumented_unsafe_blocks)]
-
-use super::super::c;
-use super::super::conv::{
- by_mut, by_ref, c_int, c_uint, negative_pid, pass_usize, ret, ret_c_int, ret_c_uint,
- ret_infallible, ret_usize, ret_usize_infallible, size_of, slice_just_addr, slice_mut, zero,
-};
-use super::types::{RawCpuSet, RawUname};
-use crate::backend::conv::ret_owned_fd;
-use crate::fd::{AsRawFd, BorrowedFd, OwnedFd};
-use crate::ffi::CStr;
-use crate::io;
-use crate::process::{
- Cpuid, Gid, MembarrierCommand, MembarrierQuery, Pid, PidfdFlags, RawNonZeroPid, RawPid,
- Resource, Rlimit, Signal, Uid, WaitId, WaitOptions, WaitStatus, WaitidOptions, WaitidStatus,
-};
-use core::convert::TryInto;
-use core::mem::MaybeUninit;
-use core::num::NonZeroU32;
-use core::ptr::{null, null_mut};
-use linux_raw_sys::general::{
- __kernel_gid_t, __kernel_pid_t, __kernel_uid_t, membarrier_cmd, membarrier_cmd_flag, rlimit,
- rlimit64, PRIO_PGRP, PRIO_PROCESS, PRIO_USER, RLIM64_INFINITY, RLIM_INFINITY,
-};
-#[cfg(not(target_os = "wasi"))]
-#[cfg(feature = "fs")]
-use {super::super::conv::ret_c_uint_infallible, crate::fs::Mode};
-
-#[inline]
-pub(crate) fn chdir(filename: &CStr) -> io::Result<()> {
- unsafe { ret(syscall_readonly!(__NR_chdir, filename)) }
-}
-
-#[inline]
-pub(crate) fn fchdir(fd: BorrowedFd<'_>) -> io::Result<()> {
- unsafe { ret(syscall_readonly!(__NR_fchdir, fd)) }
-}
-
-#[inline]
-pub(crate) fn getcwd(buf: &mut [u8]) -> io::Result<usize> {
- let (buf_addr_mut, buf_len) = slice_mut(buf);
- unsafe { ret_usize(syscall!(__NR_getcwd, buf_addr_mut, buf_len)) }
-}
-
-#[inline]
-pub(crate) fn membarrier_query() -> MembarrierQuery {
- unsafe {
- match ret_c_uint(syscall!(
- __NR_membarrier,
- c_int(membarrier_cmd::MEMBARRIER_CMD_QUERY as _),
- c_uint(0)
- )) {
- Ok(query) => {
- // SAFETY: The safety of `from_bits_unchecked` is discussed
- // [here]. Our "source of truth" is Linux, and here, the
- // `query` value is coming from Linux, so we know it only
- // contains "source of truth" valid bits.
- //
- // [here]: https://github.com/bitflags/bitflags/pull/207#issuecomment-671668662
- MembarrierQuery::from_bits_unchecked(query)
- }
- Err(_) => MembarrierQuery::empty(),
- }
- }
-}
-
-#[inline]
-pub(crate) fn membarrier(cmd: MembarrierCommand) -> io::Result<()> {
- unsafe { ret(syscall!(__NR_membarrier, cmd, c_uint(0))) }
-}
-
-#[inline]
-pub(crate) fn membarrier_cpu(cmd: MembarrierCommand, cpu: Cpuid) -> io::Result<()> {
- unsafe {
- ret(syscall!(
- __NR_membarrier,
- cmd,
- c_uint(membarrier_cmd_flag::MEMBARRIER_CMD_FLAG_CPU as _),
- cpu
- ))
- }
-}
-
-#[inline]
-pub(crate) fn getpid() -> Pid {
- unsafe {
- let pid: i32 = ret_usize_infallible(syscall_readonly!(__NR_getpid)) as __kernel_pid_t;
- debug_assert!(pid > 0);
- Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(pid as u32))
- }
-}
-
-#[inline]
-pub(crate) fn getppid() -> Option<Pid> {
- unsafe {
- let ppid: i32 = ret_usize_infallible(syscall_readonly!(__NR_getppid)) as __kernel_pid_t;
- Pid::from_raw(ppid as u32)
- }
-}
-
-#[inline]
-pub(crate) fn getpgid(pid: Option<Pid>) -> io::Result<Pid> {
- unsafe {
- let pgid: i32 =
- ret_usize(syscall_readonly!(__NR_getpgid, c_uint(Pid::as_raw(pid))))? as __kernel_pid_t;
- Ok(Pid::from_raw_nonzero(NonZeroU32::new_unchecked(
- pgid as u32,
- )))
- }
-}
-
-#[inline]
-pub(crate) fn getpgrp() -> Pid {
- // Use the `getpgrp` syscall if available.
- #[cfg(not(any(target_arch = "aarch64", target_arch = "riscv64")))]
- unsafe {
- let pgid: i32 = ret_usize_infallible(syscall_readonly!(__NR_getpgrp)) as __kernel_pid_t;
- debug_assert!(pgid > 0);
- Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(pgid as u32))
- }
-
- // Otherwise use `getpgrp` and pass it zero.
- #[cfg(any(target_arch = "aarch64", target_arch = "riscv64"))]
- unsafe {
- let pgid: i32 =
- ret_usize_infallible(syscall_readonly!(__NR_getpgid, c_uint(0))) as __kernel_pid_t;
- debug_assert!(pgid > 0);
- Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(pgid as u32))
- }
-}
-
-#[inline]
-pub(crate) fn getgid() -> Gid {
- #[cfg(any(target_arch = "x86", target_arch = "sparc", target_arch = "arm"))]
- unsafe {
- let gid: i32 =
- (ret_usize_infallible(syscall_readonly!(__NR_getgid32)) as __kernel_gid_t).into();
- Gid::from_raw(gid as u32)
- }
- #[cfg(not(any(target_arch = "x86", target_arch = "sparc", target_arch = "arm")))]
- unsafe {
- let gid = ret_usize_infallible(syscall_readonly!(__NR_getgid)) as __kernel_gid_t;
- Gid::from_raw(gid as u32)
- }
-}
-
-#[inline]
-pub(crate) fn getegid() -> Gid {
- #[cfg(any(target_arch = "x86", target_arch = "sparc", target_arch = "arm"))]
- unsafe {
- let gid: i32 =
- (ret_usize_infallible(syscall_readonly!(__NR_getegid32)) as __kernel_gid_t).into();
- Gid::from_raw(gid as u32)
- }
- #[cfg(not(any(target_arch = "x86", target_arch = "sparc", target_arch = "arm")))]
- unsafe {
- let gid = ret_usize_infallible(syscall_readonly!(__NR_getegid)) as __kernel_gid_t;
- Gid::from_raw(gid as u32)
- }
-}
-
-#[inline]
-pub(crate) fn getuid() -> Uid {
- #[cfg(any(target_arch = "x86", target_arch = "sparc", target_arch = "arm"))]
- unsafe {
- let uid = (ret_usize_infallible(syscall_readonly!(__NR_getuid32)) as __kernel_uid_t).into();
- Uid::from_raw(uid)
- }
- #[cfg(not(any(target_arch = "x86", target_arch = "sparc", target_arch = "arm")))]
- unsafe {
- let uid = ret_usize_infallible(syscall_readonly!(__NR_getuid)) as __kernel_uid_t;
- Uid::from_raw(uid as u32)
- }
-}
-
-#[inline]
-pub(crate) fn geteuid() -> Uid {
- #[cfg(any(target_arch = "x86", target_arch = "sparc", target_arch = "arm"))]
- unsafe {
- let uid: i32 =
- (ret_usize_infallible(syscall_readonly!(__NR_geteuid32)) as __kernel_uid_t).into();
- Uid::from_raw(uid as u32)
- }
- #[cfg(not(any(target_arch = "x86", target_arch = "sparc", target_arch = "arm")))]
- unsafe {
- let uid = ret_usize_infallible(syscall_readonly!(__NR_geteuid)) as __kernel_uid_t;
- Uid::from_raw(uid as u32)
- }
-}
-
-#[inline]
-pub(crate) fn sched_getaffinity(pid: Option<Pid>, cpuset: &mut RawCpuSet) -> io::Result<()> {
- unsafe {
- // The raw linux syscall returns the size (in bytes) of the `cpumask_t`
- // data type that is used internally by the kernel to represent the CPU
- // set bit mask.
- let size = ret_usize(syscall!(
- __NR_sched_getaffinity,
- c_uint(Pid::as_raw(pid)),
- size_of::<RawCpuSet, _>(),
- by_mut(&mut cpuset.bits)
- ))?;
- let bytes = (cpuset as *mut RawCpuSet).cast::<u8>();
- let rest = bytes.wrapping_add(size);
- // Zero every byte in the cpuset not set by the kernel.
- rest.write_bytes(0, core::mem::size_of::<RawCpuSet>() - size);
- Ok(())
- }
-}
-
-#[inline]
-pub(crate) fn sched_setaffinity(pid: Option<Pid>, cpuset: &RawCpuSet) -> io::Result<()> {
- unsafe {
- ret(syscall_readonly!(
- __NR_sched_setaffinity,
- c_uint(Pid::as_raw(pid)),
- size_of::<RawCpuSet, _>(),
- slice_just_addr(&cpuset.bits)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn sched_yield() {
- unsafe {
- // See the documentation for [`crate::process::sched_yield`] for why
- // errors are ignored.
- syscall_readonly!(__NR_sched_yield).decode_void();
- }
-}
-
-#[inline]
-pub(crate) fn uname() -> RawUname {
- let mut uname = MaybeUninit::<RawUname>::uninit();
- unsafe {
- ret_infallible(syscall!(__NR_uname, &mut uname));
- uname.assume_init()
- }
-}
-
-#[cfg(feature = "fs")]
-#[inline]
-pub(crate) fn umask(mode: Mode) -> Mode {
- unsafe {
- // TODO: Use `from_bits_retain` when we switch to bitflags 2.0.
- Mode::from_bits_truncate(ret_c_uint_infallible(syscall_readonly!(__NR_umask, mode)))
- }
-}
-
-#[inline]
-pub(crate) fn nice(inc: i32) -> io::Result<i32> {
- let priority = if inc > -40 && inc < 40 {
- inc + getpriority_process(None)?
- } else {
- inc
- }
- // TODO: With Rust 1.50, use `.clamp` instead of `.min` and `.max`.
- //.clamp(-20, 19);
- .min(19)
- .max(-20);
- setpriority_process(None, priority)?;
- Ok(priority)
-}
-
-#[inline]
-pub(crate) fn getpriority_user(uid: Uid) -> io::Result<i32> {
- unsafe {
- Ok(20
- - ret_c_int(syscall_readonly!(
- __NR_getpriority,
- c_uint(PRIO_USER),
- c_uint(uid.as_raw())
- ))?)
- }
-}
-
-#[inline]
-pub(crate) fn getpriority_pgrp(pgid: Option<Pid>) -> io::Result<i32> {
- unsafe {
- Ok(20
- - ret_c_int(syscall_readonly!(
- __NR_getpriority,
- c_uint(PRIO_PGRP),
- c_uint(Pid::as_raw(pgid))
- ))?)
- }
-}
-
-#[inline]
-pub(crate) fn getpriority_process(pid: Option<Pid>) -> io::Result<i32> {
- unsafe {
- Ok(20
- - ret_c_int(syscall_readonly!(
- __NR_getpriority,
- c_uint(PRIO_PROCESS),
- c_uint(Pid::as_raw(pid))
- ))?)
- }
-}
-
-#[inline]
-pub(crate) fn setpriority_user(uid: Uid, priority: i32) -> io::Result<()> {
- unsafe {
- ret(syscall_readonly!(
- __NR_setpriority,
- c_uint(PRIO_USER),
- c_uint(uid.as_raw()),
- c_int(priority)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn setpriority_pgrp(pgid: Option<Pid>, priority: i32) -> io::Result<()> {
- unsafe {
- ret(syscall_readonly!(
- __NR_setpriority,
- c_uint(PRIO_PGRP),
- c_uint(Pid::as_raw(pgid)),
- c_int(priority)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn setpriority_process(pid: Option<Pid>, priority: i32) -> io::Result<()> {
- unsafe {
- ret(syscall_readonly!(
- __NR_setpriority,
- c_uint(PRIO_PROCESS),
- c_uint(Pid::as_raw(pid)),
- c_int(priority)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn getrlimit(limit: Resource) -> Rlimit {
- let mut result = MaybeUninit::<rlimit64>::uninit();
- unsafe {
- match ret(syscall!(
- __NR_prlimit64,
- c_uint(0),
- limit,
- null::<c::c_void>(),
- &mut result
- )) {
- Ok(()) => rlimit_from_linux(result.assume_init()),
- Err(err) => {
- debug_assert_eq!(err, io::Errno::NOSYS);
- getrlimit_old(limit)
- }
- }
- }
-}
-
-/// The old 32-bit-only `getrlimit` syscall, for when we lack the new
-/// `prlimit64`.
-unsafe fn getrlimit_old(limit: Resource) -> Rlimit {
- let mut result = MaybeUninit::<rlimit>::uninit();
-
- // On these platforms, `__NR_getrlimit` is called `__NR_ugetrlimit`.
- #[cfg(any(
- target_arch = "arm",
- target_arch = "powerpc",
- target_arch = "powerpc64",
- target_arch = "x86",
- ))]
- {
- ret_infallible(syscall!(__NR_ugetrlimit, limit, &mut result));
- }
-
- // On these platforms, it's just `__NR_getrlimit`.
- #[cfg(not(any(
- target_arch = "arm",
- target_arch = "powerpc",
- target_arch = "powerpc64",
- target_arch = "x86",
- )))]
- {
- ret_infallible(syscall!(__NR_getrlimit, limit, &mut result));
- }
-
- rlimit_from_linux_old(result.assume_init())
-}
-
-#[inline]
-pub(crate) fn setrlimit(limit: Resource, new: Rlimit) -> io::Result<()> {
- unsafe {
- let lim = rlimit_to_linux(new.clone());
- match ret(syscall_readonly!(
- __NR_prlimit64,
- c_uint(0),
- limit,
- by_ref(&lim),
- null_mut::<c::c_void>()
- )) {
- Ok(()) => Ok(()),
- Err(io::Errno::NOSYS) => setrlimit_old(limit, new),
- Err(err) => Err(err),
- }
- }
-}
-
-/// The old 32-bit-only `setrlimit` syscall, for when we lack the new
-/// `prlimit64`.
-unsafe fn setrlimit_old(limit: Resource, new: Rlimit) -> io::Result<()> {
- let lim = rlimit_to_linux_old(new)?;
- ret(syscall_readonly!(__NR_setrlimit, limit, by_ref(&lim)))
-}
-
-#[inline]
-pub(crate) fn prlimit(pid: Option<Pid>, limit: Resource, new: Rlimit) -> io::Result<Rlimit> {
- let lim = rlimit_to_linux(new);
- let mut result = MaybeUninit::<rlimit64>::uninit();
- unsafe {
- match ret(syscall!(
- __NR_prlimit64,
- c_uint(Pid::as_raw(pid)),
- limit,
- by_ref(&lim),
- &mut result
- )) {
- Ok(()) => Ok(rlimit_from_linux(result.assume_init())),
- Err(err) => Err(err),
- }
- }
-}
-
-/// Convert a Rust [`Rlimit`] to a C `rlimit64`.
-#[inline]
-fn rlimit_from_linux(lim: rlimit64) -> Rlimit {
- let current = if lim.rlim_cur == RLIM64_INFINITY as _ {
- None
- } else {
- Some(lim.rlim_cur)
- };
- let maximum = if lim.rlim_max == RLIM64_INFINITY as _ {
- None
- } else {
- Some(lim.rlim_max)
- };
- Rlimit { current, maximum }
-}
-
-/// Convert a C `rlimit64` to a Rust `Rlimit`.
-#[inline]
-fn rlimit_to_linux(lim: Rlimit) -> rlimit64 {
- let rlim_cur = match lim.current {
- Some(r) => r,
- None => RLIM64_INFINITY as _,
- };
- let rlim_max = match lim.maximum {
- Some(r) => r,
- None => RLIM64_INFINITY as _,
- };
- rlimit64 { rlim_cur, rlim_max }
-}
-
-/// Like `rlimit_from_linux` but uses Linux's old 32-bit `rlimit`.
-#[allow(clippy::useless_conversion)]
-fn rlimit_from_linux_old(lim: rlimit) -> Rlimit {
- let current = if lim.rlim_cur == RLIM_INFINITY as _ {
- None
- } else {
- Some(lim.rlim_cur.into())
- };
- let maximum = if lim.rlim_max == RLIM_INFINITY as _ {
- None
- } else {
- Some(lim.rlim_max.into())
- };
- Rlimit { current, maximum }
-}
-
-/// Like `rlimit_to_linux` but uses Linux's old 32-bit `rlimit`.
-#[allow(clippy::useless_conversion)]
-fn rlimit_to_linux_old(lim: Rlimit) -> io::Result<rlimit> {
- let rlim_cur = match lim.current {
- Some(r) => r.try_into().map_err(|_e| io::Errno::INVAL)?,
- None => RLIM_INFINITY as _,
- };
- let rlim_max = match lim.maximum {
- Some(r) => r.try_into().map_err(|_e| io::Errno::INVAL)?,
- None => RLIM_INFINITY as _,
- };
- Ok(rlimit { rlim_cur, rlim_max })
-}
-
-#[inline]
-pub(crate) fn wait(waitopts: WaitOptions) -> io::Result<Option<(Pid, WaitStatus)>> {
- _waitpid(!0, waitopts)
-}
-
-#[inline]
-pub(crate) fn waitpid(
- pid: Option<Pid>,
- waitopts: WaitOptions,
-) -> io::Result<Option<(Pid, WaitStatus)>> {
- _waitpid(Pid::as_raw(pid), waitopts)
-}
-
-#[inline]
-pub(crate) fn _waitpid(
- pid: RawPid,
- waitopts: WaitOptions,
-) -> io::Result<Option<(Pid, WaitStatus)>> {
- unsafe {
- let mut status = MaybeUninit::<u32>::uninit();
- let pid = ret_c_uint(syscall!(
- __NR_wait4,
- c_int(pid as _),
- &mut status,
- c_int(waitopts.bits() as _),
- zero()
- ))?;
- Ok(RawNonZeroPid::new(pid).map(|non_zero| {
- (
- Pid::from_raw_nonzero(non_zero),
- WaitStatus::new(status.assume_init()),
- )
- }))
- }
-}
-
-#[inline]
-pub(crate) fn waitid(id: WaitId<'_>, options: WaitidOptions) -> io::Result<Option<WaitidStatus>> {
- // Get the id to wait on.
- match id {
- WaitId::All => _waitid_all(options),
- WaitId::Pid(pid) => _waitid_pid(pid, options),
- WaitId::PidFd(fd) => _waitid_pidfd(fd, options),
- }
-}
-
-#[inline]
-fn _waitid_all(options: WaitidOptions) -> io::Result<Option<WaitidStatus>> {
- let mut status = MaybeUninit::<c::siginfo_t>::uninit();
- unsafe {
- ret(syscall!(
- __NR_waitid,
- c_uint(c::P_ALL),
- c_uint(0),
- by_mut(&mut status),
- c_int(options.bits() as _),
- zero()
- ))?
- };
-
- Ok(unsafe { cvt_waitid_status(status) })
-}
-
-#[inline]
-fn _waitid_pid(pid: Pid, options: WaitidOptions) -> io::Result<Option<WaitidStatus>> {
- let mut status = MaybeUninit::<c::siginfo_t>::uninit();
- unsafe {
- ret(syscall!(
- __NR_waitid,
- c_uint(c::P_PID),
- c_uint(Pid::as_raw(Some(pid))),
- by_mut(&mut status),
- c_int(options.bits() as _),
- zero()
- ))?
- };
-
- Ok(unsafe { cvt_waitid_status(status) })
-}
-
-#[inline]
-fn _waitid_pidfd(fd: BorrowedFd<'_>, options: WaitidOptions) -> io::Result<Option<WaitidStatus>> {
- let mut status = MaybeUninit::<c::siginfo_t>::uninit();
- unsafe {
- ret(syscall!(
- __NR_waitid,
- c_uint(c::P_PIDFD),
- c_uint(fd.as_raw_fd() as _),
- by_mut(&mut status),
- c_int(options.bits() as _),
- zero()
- ))?
- };
-
- Ok(unsafe { cvt_waitid_status(status) })
-}
-
-/// Convert a `siginfo_t` to a `WaitidStatus`.
-///
-/// # Safety
-///
-/// The caller must ensure that `status` is initialized and that `waitid`
-/// returned successfully.
-#[inline]
-unsafe fn cvt_waitid_status(status: MaybeUninit<c::siginfo_t>) -> Option<WaitidStatus> {
- let status = status.assume_init();
- if status.__bindgen_anon_1.__bindgen_anon_1.si_signo == 0 {
- None
- } else {
- Some(WaitidStatus(status))
- }
-}
-
-#[cfg(feature = "runtime")]
-#[inline]
-pub(crate) fn exit_group(code: c::c_int) -> ! {
- unsafe { syscall_noreturn!(__NR_exit_group, c_int(code)) }
-}
-
-#[inline]
-pub(crate) fn setsid() -> io::Result<Pid> {
- unsafe {
- let pid = ret_usize(syscall_readonly!(__NR_setsid))?;
- debug_assert!(pid > 0);
- Ok(Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(
- pid as u32,
- )))
- }
-}
-
-#[inline]
-pub(crate) fn kill_process(pid: Pid, sig: Signal) -> io::Result<()> {
- unsafe { ret(syscall_readonly!(__NR_kill, pid, sig)) }
-}
-
-#[inline]
-pub(crate) fn kill_process_group(pid: Pid, sig: Signal) -> io::Result<()> {
- unsafe { ret(syscall_readonly!(__NR_kill, negative_pid(pid), sig)) }
-}
-
-#[inline]
-pub(crate) fn kill_current_process_group(sig: Signal) -> io::Result<()> {
- unsafe { ret(syscall_readonly!(__NR_kill, pass_usize(0), sig)) }
-}
-
-#[inline]
-pub(crate) unsafe fn prctl(
- option: c::c_int,
- arg2: *mut c::c_void,
- arg3: *mut c::c_void,
- arg4: *mut c::c_void,
- arg5: *mut c::c_void,
-) -> io::Result<c::c_int> {
- ret_c_int(syscall!(__NR_prctl, c_int(option), arg2, arg3, arg4, arg5))
-}
-
-#[inline]
-pub(crate) fn pidfd_open(pid: Pid, flags: PidfdFlags) -> io::Result<OwnedFd> {
- unsafe {
- ret_owned_fd(syscall_readonly!(
- __NR_pidfd_open,
- pid,
- c_int(flags.bits() as _)
- ))
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/process/types.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/process/types.rs
deleted file mode 100644
index 53e2c7db1..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/process/types.rs
+++ /dev/null
@@ -1,246 +0,0 @@
-use super::super::c;
-use linux_raw_sys::general::membarrier_cmd;
-
-/// A command for use with [`membarrier`] and [`membarrier_cpu`].
-///
-/// For `MEMBARRIER_CMD_QUERY`, see [`membarrier_query`].
-///
-/// [`membarrier`]: crate::process::membarrier
-/// [`membarrier_cpu`]: crate::process::membarrier_cpu
-/// [`membarrier_query`]: crate::process::membarrier_query
-#[derive(Copy, Clone, Eq, PartialEq, Debug)]
-#[repr(u32)]
-pub enum MembarrierCommand {
- /// `MEMBARRIER_CMD_GLOBAL`
- #[doc(alias = "Shared")]
- #[doc(alias = "MEMBARRIER_CMD_SHARED")]
- Global = membarrier_cmd::MEMBARRIER_CMD_GLOBAL as _,
- /// `MEMBARRIER_CMD_GLOBAL_EXPEDITED`
- GlobalExpedited = membarrier_cmd::MEMBARRIER_CMD_GLOBAL_EXPEDITED as _,
- /// `MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED`
- RegisterGlobalExpedited = membarrier_cmd::MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED as _,
- /// `MEMBARRIER_CMD_PRIVATE_EXPEDITED`
- PrivateExpedited = membarrier_cmd::MEMBARRIER_CMD_PRIVATE_EXPEDITED as _,
- /// `MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED`
- RegisterPrivateExpedited = membarrier_cmd::MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED as _,
- /// `MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE`
- PrivateExpeditedSyncCore = membarrier_cmd::MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE as _,
- /// `MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE`
- RegisterPrivateExpeditedSyncCore =
- membarrier_cmd::MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE as _,
- /// `MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ` (since Linux 5.10)
- PrivateExpeditedRseq = membarrier_cmd::MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ as _,
- /// `MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ` (since Linux 5.10)
- RegisterPrivateExpeditedRseq =
- membarrier_cmd::MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ as _,
-}
-
-/// A resource value for use with [`getrlimit`], [`setrlimit`], and
-/// [`prlimit`].
-///
-/// [`getrlimit`]: crate::process::getrlimit
-/// [`setrlimit`]: crate::process::setrlimit
-/// [`prlimit`]: crate::process::prlimit
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-#[repr(u32)]
-pub enum Resource {
- /// `RLIMIT_CPU`
- Cpu = linux_raw_sys::general::RLIMIT_CPU,
- /// `RLIMIT_FSIZE`
- Fsize = linux_raw_sys::general::RLIMIT_FSIZE,
- /// `RLIMIT_DATA`
- Data = linux_raw_sys::general::RLIMIT_DATA,
- /// `RLIMIT_STACK`
- Stack = linux_raw_sys::general::RLIMIT_STACK,
- /// `RLIMIT_CORE`
- Core = linux_raw_sys::general::RLIMIT_CORE,
- /// `RLIMIT_RSS`
- Rss = linux_raw_sys::general::RLIMIT_RSS,
- /// `RLIMIT_NPROC`
- Nproc = linux_raw_sys::general::RLIMIT_NPROC,
- /// `RLIMIT_NOFILE`
- Nofile = linux_raw_sys::general::RLIMIT_NOFILE,
- /// `RLIMIT_MEMLOCK`
- Memlock = linux_raw_sys::general::RLIMIT_MEMLOCK,
- /// `RLIMIT_AS`
- As = linux_raw_sys::general::RLIMIT_AS,
- /// `RLIMIT_LOCKS`
- Locks = linux_raw_sys::general::RLIMIT_LOCKS,
- /// `RLIMIT_SIGPENDING`
- Sigpending = linux_raw_sys::general::RLIMIT_SIGPENDING,
- /// `RLIMIT_MSGQUEUE`
- Msgqueue = linux_raw_sys::general::RLIMIT_MSGQUEUE,
- /// `RLIMIT_NICE`
- Nice = linux_raw_sys::general::RLIMIT_NICE,
- /// `RLIMIT_RTPRIO`
- Rtprio = linux_raw_sys::general::RLIMIT_RTPRIO,
- /// `RLIMIT_RTTIME`
- Rttime = linux_raw_sys::general::RLIMIT_RTTIME,
-}
-
-/// A signal number for use with [`kill_process`] and [`kill_process_group`].
-///
-/// [`kill_process`]: crate::process::kill_process
-/// [`kill_process_group`]: crate::process::kill_process_group
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-#[repr(u32)]
-pub enum Signal {
- /// `SIGHUP`
- Hup = linux_raw_sys::general::SIGHUP,
- /// `SIGINT`
- Int = linux_raw_sys::general::SIGINT,
- /// `SIGQUIT`
- Quit = linux_raw_sys::general::SIGQUIT,
- /// `SIGILL`
- Ill = linux_raw_sys::general::SIGILL,
- /// `SIGTRAP`
- Trap = linux_raw_sys::general::SIGTRAP,
- /// `SIGABRT`, aka `SIGIOT`
- #[doc(alias = "Iot")]
- #[doc(alias = "Abrt")]
- Abort = linux_raw_sys::general::SIGABRT,
- /// `SIGBUS`
- Bus = linux_raw_sys::general::SIGBUS,
- /// `SIGFPE`
- Fpe = linux_raw_sys::general::SIGFPE,
- /// `SIGKILL`
- Kill = linux_raw_sys::general::SIGKILL,
- /// `SIGUSR1`
- Usr1 = linux_raw_sys::general::SIGUSR1,
- /// `SIGSEGV`
- Segv = linux_raw_sys::general::SIGSEGV,
- /// `SIGUSR2`
- Usr2 = linux_raw_sys::general::SIGUSR2,
- /// `SIGPIPE`
- Pipe = linux_raw_sys::general::SIGPIPE,
- /// `SIGALRM`
- #[doc(alias = "Alrm")]
- Alarm = linux_raw_sys::general::SIGALRM,
- /// `SIGTERM`
- Term = linux_raw_sys::general::SIGTERM,
- /// `SIGSTKFLT`
- #[cfg(not(any(target_arch = "mips", target_arch = "mips64")))]
- Stkflt = linux_raw_sys::general::SIGSTKFLT,
- /// `SIGCHLD`
- #[doc(alias = "Chld")]
- Child = linux_raw_sys::general::SIGCHLD,
- /// `SIGCONT`
- Cont = linux_raw_sys::general::SIGCONT,
- /// `SIGSTOP`
- Stop = linux_raw_sys::general::SIGSTOP,
- /// `SIGTSTP`
- Tstp = linux_raw_sys::general::SIGTSTP,
- /// `SIGTTIN`
- Ttin = linux_raw_sys::general::SIGTTIN,
- /// `SIGTTOU`
- Ttou = linux_raw_sys::general::SIGTTOU,
- /// `SIGURG`
- Urg = linux_raw_sys::general::SIGURG,
- /// `SIGXCPU`
- Xcpu = linux_raw_sys::general::SIGXCPU,
- /// `SIGXFSZ`
- Xfsz = linux_raw_sys::general::SIGXFSZ,
- /// `SIGVTALRM`
- #[doc(alias = "Vtalrm")]
- Vtalarm = linux_raw_sys::general::SIGVTALRM,
- /// `SIGPROF`
- Prof = linux_raw_sys::general::SIGPROF,
- /// `SIGWINCH`
- Winch = linux_raw_sys::general::SIGWINCH,
- /// `SIGIO`, aka `SIGPOLL`
- #[doc(alias = "Poll")]
- Io = linux_raw_sys::general::SIGIO,
- /// `SIGPWR`
- #[doc(alias = "Pwr")]
- Power = linux_raw_sys::general::SIGPWR,
- /// `SIGSYS`, aka `SIGUNUSED`
- #[doc(alias = "Unused")]
- Sys = linux_raw_sys::general::SIGSYS,
- /// `SIGRTMIN`
- Rtmin = linux_raw_sys::general::SIGRTMIN,
-}
-
-impl Signal {
- /// Convert a raw signal number into a `Signal`, if possible.
- pub fn from_raw(sig: i32) -> Option<Self> {
- match sig as _ {
- linux_raw_sys::general::SIGHUP => Some(Self::Hup),
- linux_raw_sys::general::SIGINT => Some(Self::Int),
- linux_raw_sys::general::SIGQUIT => Some(Self::Quit),
- linux_raw_sys::general::SIGILL => Some(Self::Ill),
- linux_raw_sys::general::SIGTRAP => Some(Self::Trap),
- linux_raw_sys::general::SIGABRT => Some(Self::Abort),
- linux_raw_sys::general::SIGBUS => Some(Self::Bus),
- linux_raw_sys::general::SIGFPE => Some(Self::Fpe),
- linux_raw_sys::general::SIGKILL => Some(Self::Kill),
- linux_raw_sys::general::SIGUSR1 => Some(Self::Usr1),
- linux_raw_sys::general::SIGSEGV => Some(Self::Segv),
- linux_raw_sys::general::SIGUSR2 => Some(Self::Usr2),
- linux_raw_sys::general::SIGPIPE => Some(Self::Pipe),
- linux_raw_sys::general::SIGALRM => Some(Self::Alarm),
- linux_raw_sys::general::SIGTERM => Some(Self::Term),
- #[cfg(not(any(target_arch = "mips", target_arch = "mips64")))]
- linux_raw_sys::general::SIGSTKFLT => Some(Self::Stkflt),
- linux_raw_sys::general::SIGCHLD => Some(Self::Child),
- linux_raw_sys::general::SIGCONT => Some(Self::Cont),
- linux_raw_sys::general::SIGSTOP => Some(Self::Stop),
- linux_raw_sys::general::SIGTSTP => Some(Self::Tstp),
- linux_raw_sys::general::SIGTTIN => Some(Self::Ttin),
- linux_raw_sys::general::SIGTTOU => Some(Self::Ttou),
- linux_raw_sys::general::SIGURG => Some(Self::Urg),
- linux_raw_sys::general::SIGXCPU => Some(Self::Xcpu),
- linux_raw_sys::general::SIGXFSZ => Some(Self::Xfsz),
- linux_raw_sys::general::SIGVTALRM => Some(Self::Vtalarm),
- linux_raw_sys::general::SIGPROF => Some(Self::Prof),
- linux_raw_sys::general::SIGWINCH => Some(Self::Winch),
- linux_raw_sys::general::SIGIO => Some(Self::Io),
- linux_raw_sys::general::SIGPWR => Some(Self::Power),
- linux_raw_sys::general::SIGSYS => Some(Self::Sys),
- linux_raw_sys::general::SIGRTMIN => Some(Self::Rtmin),
- _ => None,
- }
- }
-}
-
-/// `EXIT_SUCCESS`
-pub const EXIT_SUCCESS: c::c_int = 0;
-/// `EXIT_FAILURE`
-pub const EXIT_FAILURE: c::c_int = 1;
-/// The status value of a child terminated with `SIGABRT`.
-pub const EXIT_SIGNALED_SIGABRT: c::c_int = 128 + linux_raw_sys::general::SIGABRT as i32;
-
-/// A process identifier as a raw integer.
-pub type RawPid = u32;
-/// A non-zero process identifier as a raw non-zero integer.
-pub type RawNonZeroPid = core::num::NonZeroU32;
-/// A group identifier as a raw integer.
-pub type RawGid = u32;
-/// A user identifier as a raw integer.
-pub type RawUid = u32;
-/// A CPU identifier as a raw integer.
-pub type RawCpuid = u32;
-
-pub(crate) type RawUname = linux_raw_sys::general::new_utsname;
-
-#[repr(C)]
-#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
-pub(crate) struct RawCpuSet {
- #[cfg(all(target_pointer_width = "32", not(target_arch = "x86_64")))]
- pub(crate) bits: [u32; 32],
- #[cfg(not(all(target_pointer_width = "32", not(target_arch = "x86_64"))))]
- pub(crate) bits: [u64; 16],
-}
-
-#[inline]
-pub(crate) fn raw_cpu_set_new() -> RawCpuSet {
- #[cfg(all(target_pointer_width = "32", not(target_arch = "x86_64")))]
- {
- RawCpuSet { bits: [0; 32] }
- }
- #[cfg(not(all(target_pointer_width = "32", not(target_arch = "x86_64"))))]
- {
- RawCpuSet { bits: [0; 16] }
- }
-}
-
-pub(crate) const CPU_SETSIZE: usize = 8 * core::mem::size_of::<RawCpuSet>();
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/process/wait.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/process/wait.rs
deleted file mode 100644
index edc564a9f..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/process/wait.rs
+++ /dev/null
@@ -1,41 +0,0 @@
-// The functions replacing the C macros use the same names as in libc.
-#![allow(non_snake_case)]
-
-pub(crate) use linux_raw_sys::general::{
- WCONTINUED, WEXITED, WNOHANG, WNOWAIT, WSTOPPED, WUNTRACED,
-};
-
-#[inline]
-pub(crate) fn WIFSTOPPED(status: u32) -> bool {
- (status & 0xff) == 0x7f
-}
-
-#[inline]
-pub(crate) fn WSTOPSIG(status: u32) -> u32 {
- (status >> 8) & 0xff
-}
-
-#[inline]
-pub(crate) fn WIFCONTINUED(status: u32) -> bool {
- status == 0xffff
-}
-
-#[inline]
-pub(crate) fn WIFSIGNALED(status: u32) -> bool {
- ((status & 0x7f) + 1) as i8 >= 2
-}
-
-#[inline]
-pub(crate) fn WTERMSIG(status: u32) -> u32 {
- status & 0x7f
-}
-
-#[inline]
-pub(crate) fn WIFEXITED(status: u32) -> bool {
- (status & 0x7f) == 0
-}
-
-#[inline]
-pub(crate) fn WEXITSTATUS(status: u32) -> u32 {
- (status >> 8) & 0xff
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/rand/mod.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/rand/mod.rs
deleted file mode 100644
index 1e0181a99..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/rand/mod.rs
+++ /dev/null
@@ -1,2 +0,0 @@
-pub(crate) mod syscalls;
-pub(crate) mod types;
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/rand/syscalls.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/rand/syscalls.rs
deleted file mode 100644
index 5533f75e0..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/rand/syscalls.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-//! linux_raw syscalls supporting `rustix::rand`.
-//!
-//! # Safety
-//!
-//! See the `rustix::backend` module documentation for details.
-#![allow(unsafe_code)]
-#![allow(clippy::undocumented_unsafe_blocks)]
-
-use super::super::conv::{ret_usize, slice_mut};
-use crate::io;
-use crate::rand::GetRandomFlags;
-
-#[inline]
-pub(crate) fn getrandom(buf: &mut [u8], flags: GetRandomFlags) -> io::Result<usize> {
- let (buf_addr_mut, buf_len) = slice_mut(buf);
- unsafe { ret_usize(syscall!(__NR_getrandom, buf_addr_mut, buf_len, flags)) }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/rand/types.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/rand/types.rs
deleted file mode 100644
index 75f17443e..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/rand/types.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-use bitflags::bitflags;
-
-bitflags! {
- /// `GRND_*` flags for use with [`getrandom`].
- ///
- /// [`getrandom`]: crate::rand::getrandom
- pub struct GetRandomFlags: u32 {
- /// `GRND_RANDOM`
- const RANDOM = linux_raw_sys::general::GRND_RANDOM;
- /// `GRND_NONBLOCK`
- const NONBLOCK = linux_raw_sys::general::GRND_NONBLOCK;
- /// `GRND_INSECURE`
- const INSECURE = linux_raw_sys::general::GRND_INSECURE;
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/reg.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/reg.rs
deleted file mode 100644
index afe99c5f4..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/reg.rs
+++ /dev/null
@@ -1,258 +0,0 @@
-//! Encapsulation for system call arguments and return values.
-//!
-//! The inline-asm and outline-asm code paths do some amount of reordering
-//! of arguments; to ensure that we don't accidentally misroute an argument
-//! or return value, we use distinct types for each argument index and
-//! return value.
-//!
-//! # Safety
-//!
-//! The `ToAsm` and `FromAsm` traits are unsafe to use; they should only be
-//! used by the syscall code which executes actual syscall machine
-//! instructions.
-
-#![allow(unsafe_code)]
-
-use super::c;
-use super::fd::RawFd;
-use core::marker::PhantomData;
-
-pub(super) trait ToAsm: private::Sealed {
- /// Convert `self` to a `usize` ready to be passed to a syscall
- /// machine instruction.
- ///
- /// # Safety
- ///
- /// This should be used immediately before the syscall instruction, and
- /// the returned value shouldn't be used for any other purpose.
- #[must_use]
- unsafe fn to_asm(self) -> *mut Opaque;
-}
-
-pub(super) trait FromAsm: private::Sealed {
- /// Convert `raw` from a value produced by a syscall machine instruction
- /// into a `Self`.
- ///
- /// # Safety
- ///
- /// This should be used immediately after the syscall instruction, and
- /// the operand value shouldn't be used for any other purpose.
- #[must_use]
- unsafe fn from_asm(raw: *mut Opaque) -> Self;
-}
-
-/// To preserve provenance, syscall arguments and return values are passed as
-/// pointer types. They need a type to point to, so we define a custom private
-/// type, to prevent it from being used for anything else.
-#[repr(transparent)]
-pub(super) struct Opaque(c::c_void);
-
-// Argument numbers.
-pub(super) struct A0(());
-pub(super) struct A1(());
-pub(super) struct A2(());
-pub(super) struct A3(());
-pub(super) struct A4(());
-pub(super) struct A5(());
-#[cfg(target_arch = "mips")]
-pub(super) struct A6(());
-#[cfg(target_arch = "x86")]
-pub(super) struct SocketArg;
-
-pub(super) trait ArgNumber: private::Sealed {}
-impl ArgNumber for A0 {}
-impl ArgNumber for A1 {}
-impl ArgNumber for A2 {}
-impl ArgNumber for A3 {}
-impl ArgNumber for A4 {}
-impl ArgNumber for A5 {}
-#[cfg(target_arch = "mips")]
-impl ArgNumber for A6 {}
-#[cfg(target_arch = "x86")]
-impl ArgNumber for SocketArg {}
-
-// Return value numbers.
-pub(super) struct R0(());
-
-pub(super) trait RetNumber: private::Sealed {}
-impl RetNumber for R0 {}
-
-/// Syscall arguments use register-sized types. We use a newtype to
-/// discourage accidental misuse of the raw integer values.
-///
-/// This type doesn't implement `Clone` or `Copy`; it should be used exactly
-/// once. And it has a lifetime to ensure that it doesn't outlive any resources
-/// it might be pointing to.
-#[repr(transparent)]
-#[must_use]
-pub(super) struct ArgReg<'a, Num: ArgNumber> {
- raw: *mut Opaque,
- _phantom: PhantomData<(&'a (), Num)>,
-}
-
-impl<'a, Num: ArgNumber> ToAsm for ArgReg<'a, Num> {
- #[inline]
- unsafe fn to_asm(self) -> *mut Opaque {
- self.raw
- }
-}
-
-/// Syscall return values use register-sized types. We use a newtype to
-/// discourage accidental misuse of the raw integer values.
-///
-/// This type doesn't implement `Clone` or `Copy`; it should be used exactly
-/// once.
-#[repr(transparent)]
-#[must_use]
-pub(super) struct RetReg<Num: RetNumber> {
- raw: *mut Opaque,
- _phantom: PhantomData<Num>,
-}
-
-impl<Num: RetNumber> RetReg<Num> {
- #[inline]
- pub(super) fn decode_usize(self) -> usize {
- debug_assert!(!(-4095..0).contains(&(self.raw as isize)));
- self.raw as usize
- }
-
- #[inline]
- pub(super) fn decode_raw_fd(self) -> RawFd {
- let bits = self.decode_usize();
- let raw_fd = bits as RawFd;
-
- // Converting `raw` to `RawFd` should be lossless.
- debug_assert_eq!(raw_fd as usize, bits);
-
- raw_fd
- }
-
- #[inline]
- pub(super) fn decode_c_int(self) -> c::c_int {
- let bits = self.decode_usize();
- let c_int_ = bits as c::c_int;
-
- // Converting `raw` to `c_int` should be lossless.
- debug_assert_eq!(c_int_ as usize, bits);
-
- c_int_
- }
-
- #[inline]
- pub(super) fn decode_c_uint(self) -> c::c_uint {
- let bits = self.decode_usize();
- let c_uint_ = bits as c::c_uint;
-
- // Converting `raw` to `c_uint` should be lossless.
- debug_assert_eq!(c_uint_ as usize, bits);
-
- c_uint_
- }
-
- #[inline]
- pub(super) fn decode_void_star(self) -> *mut c::c_void {
- self.raw.cast()
- }
-
- #[cfg(target_pointer_width = "64")]
- #[inline]
- pub(super) fn decode_u64(self) -> u64 {
- self.decode_usize() as u64
- }
-
- #[inline]
- pub(super) fn decode_void(self) {
- let ignore = self.decode_usize();
- debug_assert_eq!(ignore, 0);
- }
-
- #[inline]
- pub(super) fn decode_error_code(self) -> u16 {
- let bits = self.raw as usize;
-
- // `raw` must be in `-4095..0`. Linux always returns errors in
- // `-4095..0`, and we double-check it here.
- debug_assert!((-4095..0).contains(&(bits as isize)));
-
- bits as u16
- }
-
- #[inline]
- pub(super) fn is_nonzero(&self) -> bool {
- !self.raw.is_null()
- }
-
- #[inline]
- pub(super) fn is_negative(&self) -> bool {
- (self.raw as isize) < 0
- }
-
- #[inline]
- pub(super) fn is_in_range(&self, range: core::ops::Range<isize>) -> bool {
- range.contains(&(self.raw as isize))
- }
-}
-
-impl<Num: RetNumber> FromAsm for RetReg<Num> {
- #[inline]
- unsafe fn from_asm(raw: *mut Opaque) -> Self {
- Self {
- raw,
- _phantom: PhantomData,
- }
- }
-}
-
-#[repr(transparent)]
-pub(super) struct SyscallNumber<'a> {
- nr: usize,
- _phantom: PhantomData<&'a ()>,
-}
-
-impl<'a> ToAsm for SyscallNumber<'a> {
- #[inline]
- unsafe fn to_asm(self) -> *mut Opaque {
- self.nr as usize as *mut Opaque
- }
-}
-
-/// Encode a system call argument as an `ArgReg`.
-#[inline]
-pub(super) fn raw_arg<'a, Num: ArgNumber>(raw: *mut Opaque) -> ArgReg<'a, Num> {
- ArgReg {
- raw,
- _phantom: PhantomData,
- }
-}
-
-/// Encode a system call number (a `__NR_*` constant) as a `SyscallNumber`.
-#[inline]
-pub(super) const fn nr<'a>(nr: u32) -> SyscallNumber<'a> {
- SyscallNumber {
- nr: nr as usize,
- _phantom: PhantomData,
- }
-}
-
-/// Seal our various traits using the technique documented [here].
-///
-/// [here]: https://rust-lang.github.io/api-guidelines/future-proofing.html
-mod private {
- pub trait Sealed {}
-
- // Implement for those same types, but no others.
- impl<'a, Num: super::ArgNumber> Sealed for super::ArgReg<'a, Num> {}
- impl<Num: super::RetNumber> Sealed for super::RetReg<Num> {}
- impl<'a> Sealed for super::SyscallNumber<'a> {}
- impl Sealed for super::A0 {}
- impl Sealed for super::A1 {}
- impl Sealed for super::A2 {}
- impl Sealed for super::A3 {}
- impl Sealed for super::A4 {}
- impl Sealed for super::A5 {}
- #[cfg(target_arch = "mips")]
- impl Sealed for super::A6 {}
- #[cfg(target_arch = "x86")]
- impl Sealed for super::SocketArg {}
- impl Sealed for super::R0 {}
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/runtime/mod.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/runtime/mod.rs
deleted file mode 100644
index 0b48649ce..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/runtime/mod.rs
+++ /dev/null
@@ -1,2 +0,0 @@
-pub(crate) mod syscalls;
-pub(crate) mod tls;
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/runtime/syscalls.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/runtime/syscalls.rs
deleted file mode 100644
index a331786f9..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/runtime/syscalls.rs
+++ /dev/null
@@ -1,107 +0,0 @@
-//! linux_raw syscalls supporting `rustix::runtime`.
-//!
-//! # Safety
-//!
-//! See the `rustix::backend` module documentation for details.
-#![allow(unsafe_code)]
-#![allow(clippy::undocumented_unsafe_blocks)]
-
-use super::super::c;
-#[cfg(target_arch = "x86")]
-use super::super::conv::by_mut;
-use super::super::conv::{c_int, c_uint, ret, ret_c_uint, ret_error, ret_usize_infallible, zero};
-#[cfg(feature = "fs")]
-use crate::fd::BorrowedFd;
-use crate::ffi::CStr;
-#[cfg(feature = "fs")]
-use crate::fs::AtFlags;
-use crate::io;
-use crate::process::{Pid, RawNonZeroPid};
-use linux_raw_sys::general::{__kernel_pid_t, PR_SET_NAME, SIGCHLD};
-#[cfg(target_arch = "x86_64")]
-use {super::super::conv::ret_infallible, linux_raw_sys::general::ARCH_SET_FS};
-
-#[inline]
-pub(crate) unsafe fn fork() -> io::Result<Option<Pid>> {
- let pid = ret_c_uint(syscall_readonly!(
- __NR_clone,
- c_uint(SIGCHLD),
- zero(),
- zero(),
- zero(),
- zero()
- ))?;
- Ok(Pid::from_raw(pid))
-}
-
-#[cfg(feature = "fs")]
-pub(crate) unsafe fn execveat(
- dirfd: BorrowedFd<'_>,
- path: &CStr,
- args: *const *const u8,
- env_vars: *const *const u8,
- flags: AtFlags,
-) -> io::Errno {
- ret_error(syscall_readonly!(
- __NR_execveat,
- dirfd,
- path,
- args,
- env_vars,
- flags
- ))
-}
-
-pub(crate) unsafe fn execve(
- path: &CStr,
- args: *const *const u8,
- env_vars: *const *const u8,
-) -> io::Errno {
- ret_error(syscall_readonly!(__NR_execve, path, args, env_vars))
-}
-
-pub(crate) mod tls {
- #[cfg(target_arch = "x86")]
- use super::super::tls::UserDesc;
- use super::*;
-
- #[cfg(target_arch = "x86")]
- #[inline]
- pub(crate) unsafe fn set_thread_area(u_info: &mut UserDesc) -> io::Result<()> {
- ret(syscall!(__NR_set_thread_area, by_mut(u_info)))
- }
-
- #[cfg(target_arch = "arm")]
- #[inline]
- pub(crate) unsafe fn arm_set_tls(data: *mut c::c_void) -> io::Result<()> {
- ret(syscall_readonly!(__ARM_NR_set_tls, data))
- }
-
- #[cfg(target_arch = "x86_64")]
- #[inline]
- pub(crate) unsafe fn set_fs(data: *mut c::c_void) {
- ret_infallible(syscall_readonly!(
- __NR_arch_prctl,
- c_uint(ARCH_SET_FS),
- data
- ))
- }
-
- #[inline]
- pub(crate) unsafe fn set_tid_address(data: *mut c::c_void) -> Pid {
- let tid: i32 =
- ret_usize_infallible(syscall_readonly!(__NR_set_tid_address, data)) as __kernel_pid_t;
- debug_assert_ne!(tid, 0);
- Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(tid as u32))
- }
-
- #[inline]
- pub(crate) unsafe fn set_thread_name(name: &CStr) -> io::Result<()> {
- ret(syscall_readonly!(__NR_prctl, c_uint(PR_SET_NAME), name))
- }
-
- #[inline]
- pub(crate) fn exit_thread(code: c::c_int) -> ! {
- unsafe { syscall_noreturn!(__NR_exit, c_int(code)) }
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/runtime/tls.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/runtime/tls.rs
deleted file mode 100644
index 8cc156a71..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/runtime/tls.rs
+++ /dev/null
@@ -1,63 +0,0 @@
-//! TLS utilities.
-//!
-//! # Safety
-//!
-//! This file contains code that reads the raw phdr array pointed to by the
-//! kernel-provided AUXV values.
-#![allow(unsafe_code)]
-
-use super::super::c;
-use super::super::elf::*;
-use super::super::param::auxv::exe_phdrs_slice;
-use core::ptr::null;
-
-/// For use with [`set_thread_area`].
-///
-/// [`set_thread_area`]: crate::runtime::set_thread_area
-#[cfg(target_arch = "x86")]
-pub type UserDesc = linux_raw_sys::general::user_desc;
-
-pub(crate) fn startup_tls_info() -> StartupTlsInfo {
- let mut base = null();
- let mut tls_phdr = null();
- let mut stack_size = 0;
-
- let phdrs = exe_phdrs_slice();
-
- // SAFETY: We assume the phdr array pointer and length the kernel provided
- // to the process describe a valid phdr array.
- unsafe {
- for phdr in phdrs {
- match phdr.p_type {
- PT_PHDR => base = phdrs.as_ptr().cast::<u8>().offset(-(phdr.p_vaddr as isize)),
- PT_TLS => tls_phdr = phdr,
- PT_GNU_STACK => stack_size = phdr.p_memsz,
- _ => {}
- }
- }
-
- StartupTlsInfo {
- addr: base.cast::<u8>().add((*tls_phdr).p_vaddr).cast(),
- mem_size: (*tls_phdr).p_memsz,
- file_size: (*tls_phdr).p_filesz,
- align: (*tls_phdr).p_align,
- stack_size,
- }
- }
-}
-
-/// The values returned from [`startup_tls_info`].
-///
-/// [`startup_tls_info`]: crate::runtime::startup_tls_info
-pub struct StartupTlsInfo {
- /// The base address of the TLS segment.
- pub addr: *const c::c_void,
- /// The size of the memory region.
- pub mem_size: usize,
- /// The size beyond which all memory is zero-initialized.
- pub file_size: usize,
- /// The required alignment for the TLS segment.
- pub align: usize,
- /// The requested minimum size for stacks.
- pub stack_size: usize,
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/termios/mod.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/termios/mod.rs
deleted file mode 100644
index 1e0181a99..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/termios/mod.rs
+++ /dev/null
@@ -1,2 +0,0 @@
-pub(crate) mod syscalls;
-pub(crate) mod types;
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/termios/syscalls.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/termios/syscalls.rs
deleted file mode 100644
index f5643f3c3..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/termios/syscalls.rs
+++ /dev/null
@@ -1,302 +0,0 @@
-//! linux_raw syscalls supporting `rustix::termios`.
-//!
-//! # Safety
-//!
-//! See the `rustix::backend` module documentation for details.
-#![allow(unsafe_code)]
-#![allow(clippy::undocumented_unsafe_blocks)]
-
-use super::super::conv::{by_ref, c_uint, ret};
-use crate::fd::BorrowedFd;
-use crate::io;
-use crate::process::{Pid, RawNonZeroPid};
-use crate::termios::{
- Action, OptionalActions, QueueSelector, Termios, Winsize, BRKINT, CBAUD, CS8, CSIZE, ECHO,
- ECHONL, ICANON, ICRNL, IEXTEN, IGNBRK, IGNCR, INLCR, ISIG, ISTRIP, IXON, OPOST, PARENB, PARMRK,
- VMIN, VTIME,
-};
-#[cfg(feature = "procfs")]
-use crate::{ffi::CStr, fs::FileType, path::DecInt};
-use core::mem::MaybeUninit;
-use linux_raw_sys::general::__kernel_pid_t;
-use linux_raw_sys::ioctl::{
- TCFLSH, TCGETS, TCSBRK, TCSETS, TCXONC, TIOCGPGRP, TIOCGSID, TIOCGWINSZ, TIOCSPGRP, TIOCSWINSZ,
-};
-
-#[inline]
-pub(crate) fn tcgetwinsize(fd: BorrowedFd<'_>) -> io::Result<Winsize> {
- unsafe {
- let mut result = MaybeUninit::<Winsize>::uninit();
- ret(syscall!(__NR_ioctl, fd, c_uint(TIOCGWINSZ), &mut result))?;
- Ok(result.assume_init())
- }
-}
-
-#[inline]
-pub(crate) fn tcgetattr(fd: BorrowedFd<'_>) -> io::Result<Termios> {
- unsafe {
- let mut result = MaybeUninit::<Termios>::uninit();
- ret(syscall!(__NR_ioctl, fd, c_uint(TCGETS), &mut result))?;
- Ok(result.assume_init())
- }
-}
-
-#[inline]
-#[cfg(any(
- target_arch = "x86",
- target_arch = "x86_64",
- target_arch = "x32",
- target_arch = "riscv64",
- target_arch = "aarch64",
- target_arch = "arm",
- target_arch = "mips",
- target_arch = "mips64",
-))]
-pub(crate) fn tcgetattr2(fd: BorrowedFd<'_>) -> io::Result<crate::termios::Termios2> {
- unsafe {
- let mut result = MaybeUninit::<crate::termios::Termios2>::uninit();
- ret(syscall!(
- __NR_ioctl,
- fd,
- c_uint(linux_raw_sys::ioctl::TCGETS2),
- &mut result
- ))?;
- Ok(result.assume_init())
- }
-}
-
-#[inline]
-pub(crate) fn tcgetpgrp(fd: BorrowedFd<'_>) -> io::Result<Pid> {
- unsafe {
- let mut result = MaybeUninit::<__kernel_pid_t>::uninit();
- ret(syscall!(__NR_ioctl, fd, c_uint(TIOCGPGRP), &mut result))?;
- let pid = result.assume_init();
- debug_assert!(pid > 0);
- Ok(Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(
- pid as u32,
- )))
- }
-}
-
-#[inline]
-pub(crate) fn tcsetattr(
- fd: BorrowedFd,
- optional_actions: OptionalActions,
- termios: &Termios,
-) -> io::Result<()> {
- // Translate from `optional_actions` into an ioctl request code. On MIPS,
- // `optional_actions` already has `TCGETS` added to it.
- let request = if cfg!(any(target_arch = "mips", target_arch = "mips64")) {
- optional_actions as u32
- } else {
- TCSETS + optional_actions as u32
- };
- unsafe {
- ret(syscall_readonly!(
- __NR_ioctl,
- fd,
- c_uint(request as u32),
- by_ref(termios)
- ))
- }
-}
-
-#[inline]
-#[cfg(any(
- target_arch = "x86",
- target_arch = "x86_64",
- target_arch = "x32",
- target_arch = "riscv64",
- target_arch = "aarch64",
- target_arch = "arm",
- target_arch = "mips",
- target_arch = "mips64",
-))]
-pub(crate) fn tcsetattr2(
- fd: BorrowedFd,
- optional_actions: OptionalActions,
- termios: &crate::termios::Termios2,
-) -> io::Result<()> {
- unsafe {
- ret(syscall_readonly!(
- __NR_ioctl,
- fd,
- c_uint(linux_raw_sys::ioctl::TCSETS2 + optional_actions as u32),
- by_ref(termios)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn tcsendbreak(fd: BorrowedFd) -> io::Result<()> {
- unsafe { ret(syscall_readonly!(__NR_ioctl, fd, c_uint(TCSBRK), c_uint(0))) }
-}
-
-#[inline]
-pub(crate) fn tcdrain(fd: BorrowedFd) -> io::Result<()> {
- unsafe { ret(syscall_readonly!(__NR_ioctl, fd, c_uint(TCSBRK), c_uint(1))) }
-}
-
-#[inline]
-pub(crate) fn tcflush(fd: BorrowedFd, queue_selector: QueueSelector) -> io::Result<()> {
- unsafe {
- ret(syscall_readonly!(
- __NR_ioctl,
- fd,
- c_uint(TCFLSH),
- c_uint(queue_selector as u32)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn tcflow(fd: BorrowedFd, action: Action) -> io::Result<()> {
- unsafe {
- ret(syscall_readonly!(
- __NR_ioctl,
- fd,
- c_uint(TCXONC),
- c_uint(action as u32)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn tcgetsid(fd: BorrowedFd) -> io::Result<Pid> {
- unsafe {
- let mut result = MaybeUninit::<__kernel_pid_t>::uninit();
- ret(syscall!(__NR_ioctl, fd, c_uint(TIOCGSID), &mut result))?;
- let pid = result.assume_init();
- debug_assert!(pid > 0);
- Ok(Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(
- pid as u32,
- )))
- }
-}
-
-#[inline]
-pub(crate) fn tcsetwinsize(fd: BorrowedFd, winsize: Winsize) -> io::Result<()> {
- unsafe {
- ret(syscall!(
- __NR_ioctl,
- fd,
- c_uint(TIOCSWINSZ),
- by_ref(&winsize)
- ))
- }
-}
-
-#[inline]
-pub(crate) fn tcsetpgrp(fd: BorrowedFd<'_>, pid: Pid) -> io::Result<()> {
- unsafe { ret(syscall!(__NR_ioctl, fd, c_uint(TIOCSPGRP), pid)) }
-}
-
-#[inline]
-#[must_use]
-#[allow(clippy::missing_const_for_fn)]
-pub(crate) fn cfgetospeed(termios: &Termios) -> u32 {
- termios.c_cflag & CBAUD
-}
-
-#[inline]
-#[must_use]
-#[allow(clippy::missing_const_for_fn)]
-pub(crate) fn cfgetispeed(termios: &Termios) -> u32 {
- termios.c_cflag & CBAUD
-}
-
-#[inline]
-pub(crate) fn cfmakeraw(termios: &mut Termios) {
- // From the Linux [`cfmakeraw` man page]:
- //
- // [`cfmakeraw` man page]: https://man7.org/linux/man-pages/man3/cfmakeraw.3.html
- termios.c_iflag &= !(IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON);
- termios.c_oflag &= !OPOST;
- termios.c_lflag &= !(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
- termios.c_cflag &= !(CSIZE | PARENB);
- termios.c_cflag |= CS8;
-
- // Musl and glibc also do these:
- termios.c_cc[VMIN] = 1;
- termios.c_cc[VTIME] = 0;
-}
-
-#[inline]
-pub(crate) fn cfsetospeed(termios: &mut Termios, speed: u32) -> io::Result<()> {
- if (speed & !CBAUD) != 0 {
- return Err(io::Errno::INVAL);
- }
- termios.c_cflag &= !CBAUD;
- termios.c_cflag |= speed;
- Ok(())
-}
-
-#[inline]
-pub(crate) fn cfsetispeed(termios: &mut Termios, speed: u32) -> io::Result<()> {
- if speed == 0 {
- return Ok(());
- }
- if (speed & !CBAUD) != 0 {
- return Err(io::Errno::INVAL);
- }
- termios.c_cflag &= !CBAUD;
- termios.c_cflag |= speed;
- Ok(())
-}
-
-#[inline]
-pub(crate) fn cfsetspeed(termios: &mut Termios, speed: u32) -> io::Result<()> {
- if (speed & !CBAUD) != 0 {
- return Err(io::Errno::INVAL);
- }
- termios.c_cflag &= !CBAUD;
- termios.c_cflag |= speed;
- Ok(())
-}
-
-#[inline]
-pub(crate) fn isatty(fd: BorrowedFd<'_>) -> bool {
- // On error, Linux will return either `EINVAL` (2.6.32) or `ENOTTY`
- // (otherwise), because we assume we're never passing an invalid
- // file descriptor (which would get `EBADF`). Either way, an error
- // means we don't have a tty.
- tcgetwinsize(fd).is_ok()
-}
-
-#[cfg(feature = "procfs")]
-pub(crate) fn ttyname(fd: BorrowedFd<'_>, buf: &mut [u8]) -> io::Result<usize> {
- let fd_stat = super::super::fs::syscalls::fstat(fd)?;
-
- // Quick check: if `fd` isn't a character device, it's not a tty.
- if FileType::from_raw_mode(fd_stat.st_mode) != FileType::CharacterDevice {
- return Err(crate::io::Errno::NOTTY);
- }
-
- // Check that `fd` is really a tty.
- tcgetwinsize(fd)?;
-
- // Get a fd to '/proc/self/fd'.
- let proc_self_fd = io::proc_self_fd()?;
-
- // Gather the ttyname by reading the 'fd' file inside 'proc_self_fd'.
- let r =
- super::super::fs::syscalls::readlinkat(proc_self_fd, DecInt::from_fd(fd).as_c_str(), buf)?;
-
- // If the number of bytes is equal to the buffer length, truncation may
- // have occurred. This check also ensures that we have enough space for
- // adding a NUL terminator.
- if r == buf.len() {
- return Err(io::Errno::RANGE);
- }
- buf[r] = b'\0';
-
- // Check that the path we read refers to the same file as `fd`.
- let path = CStr::from_bytes_with_nul(&buf[..=r]).unwrap();
-
- let path_stat = super::super::fs::syscalls::stat(path)?;
- if path_stat.st_dev != fd_stat.st_dev || path_stat.st_ino != fd_stat.st_ino {
- return Err(crate::io::Errno::NODEV);
- }
-
- Ok(r)
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/termios/types.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/termios/types.rs
deleted file mode 100644
index 3fe45af98..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/termios/types.rs
+++ /dev/null
@@ -1,495 +0,0 @@
-use super::super::c;
-
-/// `TCSA*` values for use with [`tcsetattr`].
-///
-/// [`tcsetattr`]: crate::termios::tcsetattr
-#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
-#[repr(u32)]
-pub enum OptionalActions {
- /// `TCSANOW`—Make the change immediately.
- #[doc(alias = "TCSANOW")]
- Now = linux_raw_sys::general::TCSANOW,
-
- /// `TCSADRAIN`—Make the change after all output has been transmitted.
- #[doc(alias = "TCSADRAIN")]
- Drain = linux_raw_sys::general::TCSADRAIN,
-
- /// `TCSAFLUSH`—Discard any pending input and then make the change
- /// after all output has been transmitted.
- #[doc(alias = "TCSAFLUSH")]
- Flush = linux_raw_sys::general::TCSAFLUSH,
-}
-
-/// `TC*` values for use with [`tcflush`].
-///
-/// [`tcflush`]: crate::termios::tcflush
-#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
-#[repr(u32)]
-pub enum QueueSelector {
- /// `TCIFLUSH`—Flush data received but not read.
- #[doc(alias = "TCIFLUSH")]
- IFlush = linux_raw_sys::general::TCIFLUSH,
-
- /// `TCOFLUSH`—Flush data written but not transmitted.
- #[doc(alias = "TCOFLUSH")]
- OFlush = linux_raw_sys::general::TCOFLUSH,
-
- /// `TCIOFLUSH`—`IFlush` and `OFlush` combined.
- #[doc(alias = "TCIOFLUSH")]
- IOFlush = linux_raw_sys::general::TCIOFLUSH,
-}
-
-/// `TC*` values for use with [`tcflow`].
-///
-/// [`tcflow`]: crate::termios::tcflow
-#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
-#[repr(u32)]
-pub enum Action {
- /// `TCOOFF`—Suspend output.
- #[doc(alias = "TCOOFF")]
- OOff = linux_raw_sys::general::TCOOFF,
-
- /// `TCOON`—Restart suspended output.
- #[doc(alias = "TCOON")]
- OOn = linux_raw_sys::general::TCOON,
-
- /// `TCIOFF`—Transmits a STOP byte.
- #[doc(alias = "TCIOFF")]
- IOff = linux_raw_sys::general::TCIOFF,
-
- /// `TCION`—Transmits a START byte.
- #[doc(alias = "TCION")]
- IOn = linux_raw_sys::general::TCION,
-}
-
-/// `struct termios` for use with [`tcgetattr`] and [`tcsetattr`].
-///
-/// [`tcgetattr`]: crate::termios::tcgetattr
-/// [`tcsetattr`]: crate::termios::tcsetattr
-#[doc(alias = "termios")]
-pub type Termios = linux_raw_sys::general::termios;
-
-/// `struct termios2` for use with [`tcgetattr2`] and [`tcsetattr2`].
-///
-/// [`tcgetattr2`]: crate::termios::tcgetattr2
-/// [`tcsetattr2`]: crate::termios::tcsetattr2
-#[cfg(any(
- target_arch = "x86",
- target_arch = "x86_64",
- target_arch = "x32",
- target_arch = "riscv64",
- target_arch = "aarch64",
- target_arch = "arm",
- target_arch = "mips",
- target_arch = "mips64",
-))]
-#[doc(alias = "termios2")]
-pub type Termios2 = linux_raw_sys::general::termios2;
-
-/// `struct winsize` for use with [`tcgetwinsize`].
-///
-/// [`tcgetwinsize`]: crate::termios::tcgetwinsize
-#[doc(alias = "winsize")]
-pub type Winsize = linux_raw_sys::general::winsize;
-
-/// `tcflag_t`—A type for the flags fields of [`Termios`].
-#[doc(alias = "tcflag_t")]
-pub type Tcflag = linux_raw_sys::general::tcflag_t;
-
-/// `speed_t`—A return type for [`cfsetspeed`] and similar.
-///
-/// [`cfsetspeed`]: crate::termios::cfsetspeed
-#[doc(alias = "speed_t")]
-pub type Speed = linux_raw_sys::general::speed_t;
-
-/// `VINTR`
-pub const VINTR: usize = linux_raw_sys::general::VINTR as usize;
-
-/// `VQUIT`
-pub const VQUIT: usize = linux_raw_sys::general::VQUIT as usize;
-
-/// `VERASE`
-pub const VERASE: usize = linux_raw_sys::general::VERASE as usize;
-
-/// `VKILL`
-pub const VKILL: usize = linux_raw_sys::general::VKILL as usize;
-
-/// `VEOF`
-pub const VEOF: usize = linux_raw_sys::general::VEOF as usize;
-
-/// `VTIME`
-pub const VTIME: usize = linux_raw_sys::general::VTIME as usize;
-
-/// `VMIN`
-pub const VMIN: usize = linux_raw_sys::general::VMIN as usize;
-
-/// `VSWTC`
-pub const VSWTC: usize = linux_raw_sys::general::VSWTC as usize;
-
-/// `VSTART`
-pub const VSTART: usize = linux_raw_sys::general::VSTART as usize;
-
-/// `VSTOP`
-pub const VSTOP: usize = linux_raw_sys::general::VSTOP as usize;
-
-/// `VSUSP`
-pub const VSUSP: usize = linux_raw_sys::general::VSUSP as usize;
-
-/// `VEOL`
-pub const VEOL: usize = linux_raw_sys::general::VEOL as usize;
-
-/// `VREPRINT`
-pub const VREPRINT: usize = linux_raw_sys::general::VREPRINT as usize;
-
-/// `VDISCARD`
-pub const VDISCARD: usize = linux_raw_sys::general::VDISCARD as usize;
-
-/// `VWERASE`
-pub const VWERASE: usize = linux_raw_sys::general::VWERASE as usize;
-
-/// `VLNEXT`
-pub const VLNEXT: usize = linux_raw_sys::general::VLNEXT as usize;
-
-/// `VEOL2`
-pub const VEOL2: usize = linux_raw_sys::general::VEOL2 as usize;
-
-/// `IGNBRK`
-pub const IGNBRK: c::c_uint = linux_raw_sys::general::IGNBRK;
-
-/// `BRKINT`
-pub const BRKINT: c::c_uint = linux_raw_sys::general::BRKINT;
-
-/// `IGNPAR`
-pub const IGNPAR: c::c_uint = linux_raw_sys::general::IGNPAR;
-
-/// `PARMRK`
-pub const PARMRK: c::c_uint = linux_raw_sys::general::PARMRK;
-
-/// `INPCK`
-pub const INPCK: c::c_uint = linux_raw_sys::general::INPCK;
-
-/// `ISTRIP`
-pub const ISTRIP: c::c_uint = linux_raw_sys::general::ISTRIP;
-
-/// `INLCR`
-pub const INLCR: c::c_uint = linux_raw_sys::general::INLCR;
-
-/// `IGNCR`
-pub const IGNCR: c::c_uint = linux_raw_sys::general::IGNCR;
-
-/// `ICRNL`
-pub const ICRNL: c::c_uint = linux_raw_sys::general::ICRNL;
-
-/// `IUCLC`
-pub const IUCLC: c::c_uint = linux_raw_sys::general::IUCLC;
-
-/// `IXON`
-pub const IXON: c::c_uint = linux_raw_sys::general::IXON;
-
-/// `IXANY`
-pub const IXANY: c::c_uint = linux_raw_sys::general::IXANY;
-
-/// `IXOFF`
-pub const IXOFF: c::c_uint = linux_raw_sys::general::IXOFF;
-
-/// `IMAXBEL`
-pub const IMAXBEL: c::c_uint = linux_raw_sys::general::IMAXBEL;
-
-/// `IUTF8`
-pub const IUTF8: c::c_uint = linux_raw_sys::general::IUTF8;
-
-/// `OPOST`
-pub const OPOST: c::c_uint = linux_raw_sys::general::OPOST;
-
-/// `OLCUC`
-pub const OLCUC: c::c_uint = linux_raw_sys::general::OLCUC;
-
-/// `ONLCR`
-pub const ONLCR: c::c_uint = linux_raw_sys::general::ONLCR;
-
-/// `OCRNL`
-pub const OCRNL: c::c_uint = linux_raw_sys::general::OCRNL;
-
-/// `ONOCR`
-pub const ONOCR: c::c_uint = linux_raw_sys::general::ONOCR;
-
-/// `ONLRET`
-pub const ONLRET: c::c_uint = linux_raw_sys::general::ONLRET;
-
-/// `OFILL`
-pub const OFILL: c::c_uint = linux_raw_sys::general::OFILL;
-
-/// `OFDEL`
-pub const OFDEL: c::c_uint = linux_raw_sys::general::OFDEL;
-
-/// `NLDLY`
-pub const NLDLY: c::c_uint = linux_raw_sys::general::NLDLY;
-
-/// `NL0`
-pub const NL0: c::c_uint = linux_raw_sys::general::NL0;
-
-/// `NL1`
-pub const NL1: c::c_uint = linux_raw_sys::general::NL1;
-
-/// `CRDLY`
-pub const CRDLY: c::c_uint = linux_raw_sys::general::CRDLY;
-
-/// `CR0`
-pub const CR0: c::c_uint = linux_raw_sys::general::CR0;
-
-/// `CR1`
-pub const CR1: c::c_uint = linux_raw_sys::general::CR1;
-
-/// `CR2`
-pub const CR2: c::c_uint = linux_raw_sys::general::CR2;
-
-/// `CR3`
-pub const CR3: c::c_uint = linux_raw_sys::general::CR3;
-
-/// `TABDLY`
-pub const TABDLY: c::c_uint = linux_raw_sys::general::TABDLY;
-
-/// `TAB0`
-pub const TAB0: c::c_uint = linux_raw_sys::general::TAB0;
-
-/// `TAB1`
-pub const TAB1: c::c_uint = linux_raw_sys::general::TAB1;
-
-/// `TAB2`
-pub const TAB2: c::c_uint = linux_raw_sys::general::TAB2;
-
-/// `TAB3`
-pub const TAB3: c::c_uint = linux_raw_sys::general::TAB3;
-
-/// `BSDLY`
-pub const BSDLY: c::c_uint = linux_raw_sys::general::BSDLY;
-
-/// `BS0`
-pub const BS0: c::c_uint = linux_raw_sys::general::BS0;
-
-/// `BS1`
-pub const BS1: c::c_uint = linux_raw_sys::general::BS1;
-
-/// `FFDLY`
-pub const FFDLY: c::c_uint = linux_raw_sys::general::FFDLY;
-
-/// `FF0`
-pub const FF0: c::c_uint = linux_raw_sys::general::FF0;
-
-/// `FF1`
-pub const FF1: c::c_uint = linux_raw_sys::general::FF1;
-
-/// `VTDLY`
-pub const VTDLY: c::c_uint = linux_raw_sys::general::VTDLY;
-
-/// `VT0`
-pub const VT0: c::c_uint = linux_raw_sys::general::VT0;
-
-/// `VT1`
-pub const VT1: c::c_uint = linux_raw_sys::general::VT1;
-
-/// `B0`
-pub const B0: Speed = linux_raw_sys::general::B0;
-
-/// `B50`
-pub const B50: Speed = linux_raw_sys::general::B50;
-
-/// `B75`
-pub const B75: Speed = linux_raw_sys::general::B75;
-
-/// `B110`
-pub const B110: Speed = linux_raw_sys::general::B110;
-
-/// `B134`
-pub const B134: Speed = linux_raw_sys::general::B134;
-
-/// `B150`
-pub const B150: Speed = linux_raw_sys::general::B150;
-
-/// `B200`
-pub const B200: Speed = linux_raw_sys::general::B200;
-
-/// `B300`
-pub const B300: Speed = linux_raw_sys::general::B300;
-
-/// `B600`
-pub const B600: Speed = linux_raw_sys::general::B600;
-
-/// `B1200`
-pub const B1200: Speed = linux_raw_sys::general::B1200;
-
-/// `B1800`
-pub const B1800: Speed = linux_raw_sys::general::B1800;
-
-/// `B2400`
-pub const B2400: Speed = linux_raw_sys::general::B2400;
-
-/// `B4800`
-pub const B4800: Speed = linux_raw_sys::general::B4800;
-
-/// `B9600`
-pub const B9600: Speed = linux_raw_sys::general::B9600;
-
-/// `B19200`
-pub const B19200: Speed = linux_raw_sys::general::B19200;
-
-/// `B38400`
-pub const B38400: Speed = linux_raw_sys::general::B38400;
-
-/// `B57600`
-pub const B57600: Speed = linux_raw_sys::general::B57600;
-
-/// `B115200`
-pub const B115200: Speed = linux_raw_sys::general::B115200;
-
-/// `B230400`
-pub const B230400: Speed = linux_raw_sys::general::B230400;
-
-/// `B460800`
-pub const B460800: Speed = linux_raw_sys::general::B460800;
-
-/// `B500000`
-pub const B500000: Speed = linux_raw_sys::general::B500000;
-
-/// `B576000`
-pub const B576000: Speed = linux_raw_sys::general::B576000;
-
-/// `B921600`
-pub const B921600: Speed = linux_raw_sys::general::B921600;
-
-/// `B1000000`
-pub const B1000000: Speed = linux_raw_sys::general::B1000000;
-
-/// `B1152000`
-pub const B1152000: Speed = linux_raw_sys::general::B1152000;
-
-/// `B1500000`
-pub const B1500000: Speed = linux_raw_sys::general::B1500000;
-
-/// `B2000000`
-pub const B2000000: Speed = linux_raw_sys::general::B2000000;
-
-/// `B2500000`
-#[cfg(not(any(target_arch = "sparc", target_arch = "sparc64")))]
-pub const B2500000: Speed = linux_raw_sys::general::B2500000;
-
-/// `B3000000`
-#[cfg(not(any(target_arch = "sparc", target_arch = "sparc64")))]
-pub const B3000000: Speed = linux_raw_sys::general::B3000000;
-
-/// `B3500000`
-#[cfg(not(any(target_arch = "sparc", target_arch = "sparc64")))]
-pub const B3500000: Speed = linux_raw_sys::general::B3500000;
-
-/// `B4000000`
-#[cfg(not(any(target_arch = "sparc", target_arch = "sparc64")))]
-pub const B4000000: Speed = linux_raw_sys::general::B4000000;
-
-/// `BOTHER`
-pub const BOTHER: c::c_uint = linux_raw_sys::general::BOTHER;
-
-/// `CSIZE`
-pub const CSIZE: c::c_uint = linux_raw_sys::general::CSIZE;
-
-/// `CS5`
-pub const CS5: c::c_uint = linux_raw_sys::general::CS5;
-
-/// `CS6`
-pub const CS6: c::c_uint = linux_raw_sys::general::CS6;
-
-/// `CS7`
-pub const CS7: c::c_uint = linux_raw_sys::general::CS7;
-
-/// `CS8`
-pub const CS8: c::c_uint = linux_raw_sys::general::CS8;
-
-/// `CSTOPB`
-pub const CSTOPB: c::c_uint = linux_raw_sys::general::CSTOPB;
-
-/// `CREAD`
-pub const CREAD: c::c_uint = linux_raw_sys::general::CREAD;
-
-/// `PARENB`
-pub const PARENB: c::c_uint = linux_raw_sys::general::PARENB;
-
-/// `PARODD`
-pub const PARODD: c::c_uint = linux_raw_sys::general::PARODD;
-
-/// `HUPCL`
-pub const HUPCL: c::c_uint = linux_raw_sys::general::HUPCL;
-
-/// `CLOCAL`
-pub const CLOCAL: c::c_uint = linux_raw_sys::general::CLOCAL;
-
-/// `ISIG`
-pub const ISIG: c::c_uint = linux_raw_sys::general::ISIG;
-
-/// `ICANON`—A flag for the `c_lflag` field of [`Termios`] indicating
-/// canonical mode.
-pub const ICANON: Tcflag = linux_raw_sys::general::ICANON;
-
-/// `ECHO`
-pub const ECHO: c::c_uint = linux_raw_sys::general::ECHO;
-
-/// `ECHOE`
-pub const ECHOE: c::c_uint = linux_raw_sys::general::ECHOE;
-
-/// `ECHOK`
-pub const ECHOK: c::c_uint = linux_raw_sys::general::ECHOK;
-
-/// `ECHONL`
-pub const ECHONL: c::c_uint = linux_raw_sys::general::ECHONL;
-
-/// `NOFLSH`
-pub const NOFLSH: c::c_uint = linux_raw_sys::general::NOFLSH;
-
-/// `TOSTOP`
-pub const TOSTOP: c::c_uint = linux_raw_sys::general::TOSTOP;
-
-/// `IEXTEN`
-pub const IEXTEN: c::c_uint = linux_raw_sys::general::IEXTEN;
-
-/// `EXTA`
-pub const EXTA: c::c_uint = linux_raw_sys::general::EXTA;
-
-/// `EXTB`
-pub const EXTB: c::c_uint = linux_raw_sys::general::EXTB;
-
-/// `CBAUD`
-pub const CBAUD: c::c_uint = linux_raw_sys::general::CBAUD;
-
-/// `CBAUDEX`
-pub const CBAUDEX: c::c_uint = linux_raw_sys::general::CBAUDEX;
-
-/// `CIBAUD`
-pub const CIBAUD: c::c_uint = linux_raw_sys::general::CIBAUD;
-
-/// `CMSPAR`
-pub const CMSPAR: c::c_uint = linux_raw_sys::general::CMSPAR;
-
-/// `CRTSCTS`
-pub const CRTSCTS: c::c_uint = linux_raw_sys::general::CRTSCTS;
-
-/// `XCASE`
-pub const XCASE: c::c_uint = linux_raw_sys::general::XCASE;
-
-/// `ECHOCTL`
-pub const ECHOCTL: c::c_uint = linux_raw_sys::general::ECHOCTL;
-
-/// `ECHOPRT`
-pub const ECHOPRT: c::c_uint = linux_raw_sys::general::ECHOPRT;
-
-/// `ECHOKE`
-pub const ECHOKE: c::c_uint = linux_raw_sys::general::ECHOKE;
-
-/// `FLUSHO`
-pub const FLUSHO: c::c_uint = linux_raw_sys::general::FLUSHO;
-
-/// `PENDIN`
-pub const PENDIN: c::c_uint = linux_raw_sys::general::PENDIN;
-
-/// `EXTPROC`
-pub const EXTPROC: c::c_uint = linux_raw_sys::general::EXTPROC;
-
-/// `XTABS`
-pub const XTABS: c::c_uint = linux_raw_sys::general::XTABS;
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/thread/futex.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/thread/futex.rs
deleted file mode 100644
index 9e087f9f1..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/thread/futex.rs
+++ /dev/null
@@ -1,39 +0,0 @@
-bitflags::bitflags! {
- /// Flags for use with [`futex`].
- ///
- /// [`futex`]: crate::thread::futex
- pub struct FutexFlags: u32 {
- /// `FUTEX_PRIVATE_FLAG`
- const PRIVATE = linux_raw_sys::general::FUTEX_PRIVATE_FLAG;
- /// `FUTEX_CLOCK_REALTIME`
- const CLOCK_REALTIME = linux_raw_sys::general::FUTEX_CLOCK_REALTIME;
- }
-}
-
-/// Operations for use with [`futex`].
-///
-/// [`futex`]: crate::thread::futex
-#[derive(Debug, Copy, Clone, Eq, PartialEq)]
-#[repr(u32)]
-pub enum FutexOperation {
- /// `FUTEX_WAIT`
- Wait = linux_raw_sys::general::FUTEX_WAIT,
- /// `FUTEX_WAKE`
- Wake = linux_raw_sys::general::FUTEX_WAKE,
- /// `FUTEX_FD`
- Fd = linux_raw_sys::general::FUTEX_FD,
- /// `FUTEX_REQUEUE`
- Requeue = linux_raw_sys::general::FUTEX_REQUEUE,
- /// `FUTEX_CMP_REQUEUE`
- CmpRequeue = linux_raw_sys::general::FUTEX_CMP_REQUEUE,
- /// `FUTEX_WAKE_OP`
- WakeOp = linux_raw_sys::general::FUTEX_WAKE_OP,
- /// `FUTEX_LOCK_PI`
- LockPi = linux_raw_sys::general::FUTEX_LOCK_PI,
- /// `FUTEX_UNLOCK_PI`
- UnlockPi = linux_raw_sys::general::FUTEX_UNLOCK_PI,
- /// `FUTEX_TRYLOCK_PI`
- TrylockPi = linux_raw_sys::general::FUTEX_TRYLOCK_PI,
- /// `FUTEX_WAIT_BITSET`
- WaitBitset = linux_raw_sys::general::FUTEX_WAIT_BITSET,
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/thread/mod.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/thread/mod.rs
deleted file mode 100644
index 8bb80c33a..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/thread/mod.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-mod futex;
-pub(crate) mod syscalls;
-
-pub use futex::{FutexFlags, FutexOperation};
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/thread/syscalls.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/thread/syscalls.rs
deleted file mode 100644
index af2c9ee8a..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/thread/syscalls.rs
+++ /dev/null
@@ -1,358 +0,0 @@
-//! linux_raw syscalls supporting `rustix::thread`.
-//!
-//! # Safety
-//!
-//! See the `rustix::backend` module documentation for details.
-#![allow(unsafe_code)]
-#![allow(clippy::undocumented_unsafe_blocks)]
-
-use super::super::c;
-use super::super::conv::{
- by_ref, c_int, c_uint, ret, ret_c_int, ret_usize, ret_usize_infallible, zero,
-};
-use crate::fd::BorrowedFd;
-use crate::io;
-use crate::process::{Pid, RawNonZeroPid};
-use crate::thread::{ClockId, FutexFlags, FutexOperation, NanosleepRelativeResult, Timespec};
-use core::mem::MaybeUninit;
-use linux_raw_sys::general::{__kernel_pid_t, __kernel_timespec, TIMER_ABSTIME};
-#[cfg(target_pointer_width = "32")]
-use {
- core::convert::TryInto, core::ptr, linux_raw_sys::general::timespec as __kernel_old_timespec,
-};
-
-#[inline]
-pub(crate) fn clock_nanosleep_relative(
- id: ClockId,
- req: &__kernel_timespec,
-) -> NanosleepRelativeResult {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- let mut rem = MaybeUninit::<__kernel_timespec>::uninit();
- match ret(syscall!(
- __NR_clock_nanosleep_time64,
- id,
- c_int(0),
- by_ref(req),
- &mut rem
- ))
- .or_else(|err| {
- // See the comments in `rustix_clock_gettime_via_syscall` about
- // emulation.
- if err == io::Errno::NOSYS {
- clock_nanosleep_relative_old(id, req, &mut rem)
- } else {
- Err(err)
- }
- }) {
- Ok(()) => NanosleepRelativeResult::Ok,
- Err(io::Errno::INTR) => NanosleepRelativeResult::Interrupted(rem.assume_init()),
- Err(err) => NanosleepRelativeResult::Err(err),
- }
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- let mut rem = MaybeUninit::<__kernel_timespec>::uninit();
- match ret(syscall!(
- __NR_clock_nanosleep,
- id,
- c_int(0),
- by_ref(req),
- &mut rem
- )) {
- Ok(()) => NanosleepRelativeResult::Ok,
- Err(io::Errno::INTR) => NanosleepRelativeResult::Interrupted(rem.assume_init()),
- Err(err) => NanosleepRelativeResult::Err(err),
- }
- }
-}
-
-#[cfg(target_pointer_width = "32")]
-unsafe fn clock_nanosleep_relative_old(
- id: ClockId,
- req: &__kernel_timespec,
- rem: &mut MaybeUninit<__kernel_timespec>,
-) -> io::Result<()> {
- let old_req = __kernel_old_timespec {
- tv_sec: req.tv_sec.try_into().map_err(|_| io::Errno::INVAL)?,
- tv_nsec: req.tv_nsec.try_into().map_err(|_| io::Errno::INVAL)?,
- };
- let mut old_rem = MaybeUninit::<__kernel_old_timespec>::uninit();
- ret(syscall!(
- __NR_clock_nanosleep,
- id,
- c_int(0),
- by_ref(&old_req),
- &mut old_rem
- ))?;
- let old_rem = old_rem.assume_init();
- // TODO: With Rust 1.55, we can use MaybeUninit::write here.
- ptr::write(
- rem.as_mut_ptr(),
- __kernel_timespec {
- tv_sec: old_rem.tv_sec.into(),
- tv_nsec: old_rem.tv_nsec.into(),
- },
- );
- Ok(())
-}
-
-#[inline]
-pub(crate) fn clock_nanosleep_absolute(id: ClockId, req: &__kernel_timespec) -> io::Result<()> {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret(syscall_readonly!(
- __NR_clock_nanosleep_time64,
- id,
- c_uint(TIMER_ABSTIME),
- by_ref(req),
- zero()
- ))
- .or_else(|err| {
- // See the comments in `rustix_clock_gettime_via_syscall` about
- // emulation.
- if err == io::Errno::NOSYS {
- clock_nanosleep_absolute_old(id, req)
- } else {
- Err(err)
- }
- })
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret(syscall_readonly!(
- __NR_clock_nanosleep,
- id,
- c_uint(TIMER_ABSTIME),
- by_ref(req),
- zero()
- ))
- }
-}
-
-#[cfg(target_pointer_width = "32")]
-unsafe fn clock_nanosleep_absolute_old(id: ClockId, req: &__kernel_timespec) -> io::Result<()> {
- let old_req = __kernel_old_timespec {
- tv_sec: req.tv_sec.try_into().map_err(|_| io::Errno::INVAL)?,
- tv_nsec: req.tv_nsec.try_into().map_err(|_| io::Errno::INVAL)?,
- };
- ret(syscall_readonly!(
- __NR_clock_nanosleep,
- id,
- c_int(0),
- by_ref(&old_req),
- zero()
- ))
-}
-
-#[inline]
-pub(crate) fn nanosleep(req: &__kernel_timespec) -> NanosleepRelativeResult {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- let mut rem = MaybeUninit::<__kernel_timespec>::uninit();
- match ret(syscall!(
- __NR_clock_nanosleep_time64,
- ClockId::Realtime,
- c_int(0),
- by_ref(req),
- &mut rem
- ))
- .or_else(|err| {
- // See the comments in `rustix_clock_gettime_via_syscall` about
- // emulation.
- if err == io::Errno::NOSYS {
- nanosleep_old(req, &mut rem)
- } else {
- Err(err)
- }
- }) {
- Ok(()) => NanosleepRelativeResult::Ok,
- Err(io::Errno::INTR) => NanosleepRelativeResult::Interrupted(rem.assume_init()),
- Err(err) => NanosleepRelativeResult::Err(err),
- }
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- let mut rem = MaybeUninit::<__kernel_timespec>::uninit();
- match ret(syscall!(__NR_nanosleep, by_ref(req), &mut rem)) {
- Ok(()) => NanosleepRelativeResult::Ok,
- Err(io::Errno::INTR) => NanosleepRelativeResult::Interrupted(rem.assume_init()),
- Err(err) => NanosleepRelativeResult::Err(err),
- }
- }
-}
-
-#[cfg(target_pointer_width = "32")]
-unsafe fn nanosleep_old(
- req: &__kernel_timespec,
- rem: &mut MaybeUninit<__kernel_timespec>,
-) -> io::Result<()> {
- let old_req = __kernel_old_timespec {
- tv_sec: req.tv_sec.try_into().map_err(|_| io::Errno::INVAL)?,
- tv_nsec: req.tv_nsec.try_into().map_err(|_| io::Errno::INVAL)?,
- };
- let mut old_rem = MaybeUninit::<__kernel_old_timespec>::uninit();
- ret(syscall!(__NR_nanosleep, by_ref(&old_req), &mut old_rem))?;
- let old_rem = old_rem.assume_init();
- // TODO: With Rust 1.55, we can use MaybeUninit::write here.
- ptr::write(
- rem.as_mut_ptr(),
- __kernel_timespec {
- tv_sec: old_rem.tv_sec.into(),
- tv_nsec: old_rem.tv_nsec.into(),
- },
- );
- Ok(())
-}
-
-#[inline]
-pub(crate) fn gettid() -> Pid {
- unsafe {
- let tid: i32 = ret_usize_infallible(syscall_readonly!(__NR_gettid)) as __kernel_pid_t;
- debug_assert_ne!(tid, 0);
- Pid::from_raw_nonzero(RawNonZeroPid::new_unchecked(tid as u32))
- }
-}
-
-// TODO: This could be de-multiplexed.
-#[inline]
-pub(crate) unsafe fn futex(
- uaddr: *mut u32,
- op: FutexOperation,
- flags: FutexFlags,
- val: u32,
- utime: *const Timespec,
- uaddr2: *mut u32,
- val3: u32,
-) -> io::Result<usize> {
- #[cfg(target_pointer_width = "32")]
- {
- ret_usize(syscall!(
- __NR_futex_time64,
- uaddr,
- (op, flags),
- c_uint(val),
- utime,
- uaddr2,
- c_uint(val3)
- ))
- .or_else(|err| {
- // See the comments in `rustix_clock_gettime_via_syscall` about
- // emulation.
- if err == io::Errno::NOSYS {
- futex_old(uaddr, op, flags, val, utime, uaddr2, val3)
- } else {
- Err(err)
- }
- })
- }
- #[cfg(target_pointer_width = "64")]
- ret_usize(syscall!(
- __NR_futex,
- uaddr,
- (op, flags),
- c_uint(val),
- utime,
- uaddr2,
- c_uint(val3)
- ))
-}
-
-#[cfg(target_pointer_width = "32")]
-unsafe fn futex_old(
- uaddr: *mut u32,
- op: FutexOperation,
- flags: FutexFlags,
- val: u32,
- utime: *const Timespec,
- uaddr2: *mut u32,
- val3: u32,
-) -> io::Result<usize> {
- let old_utime = __kernel_old_timespec {
- tv_sec: (*utime).tv_sec.try_into().map_err(|_| io::Errno::INVAL)?,
- tv_nsec: (*utime).tv_nsec.try_into().map_err(|_| io::Errno::INVAL)?,
- };
- ret_usize(syscall!(
- __NR_futex,
- uaddr,
- (op, flags),
- c_uint(val),
- by_ref(&old_utime),
- uaddr2,
- c_uint(val3)
- ))
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub(crate) fn setns(fd: BorrowedFd, nstype: c::c_int) -> io::Result<c::c_int> {
- unsafe { ret_c_int(syscall_readonly!(__NR_setns, fd, c_int(nstype))) }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub(crate) fn unshare(flags: crate::thread::UnshareFlags) -> io::Result<()> {
- unsafe { ret(syscall_readonly!(__NR_unshare, c_uint(flags.bits()))) }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub(crate) fn capget(
- header: &mut linux_raw_sys::general::__user_cap_header_struct,
- data: &mut [MaybeUninit<linux_raw_sys::general::__user_cap_data_struct>],
-) -> io::Result<()> {
- let header: *mut _ = header;
- unsafe { ret(syscall!(__NR_capget, header, data.as_mut_ptr())) }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub(crate) fn capset(
- header: &mut linux_raw_sys::general::__user_cap_header_struct,
- data: &[linux_raw_sys::general::__user_cap_data_struct],
-) -> io::Result<()> {
- let header: *mut _ = header;
- unsafe { ret(syscall!(__NR_capset, header, data.as_ptr())) }
-}
-
-#[inline]
-pub(crate) fn setuid_thread(uid: crate::process::Uid) -> io::Result<()> {
- unsafe { ret(syscall_readonly!(__NR_setuid, uid)) }
-}
-
-#[inline]
-pub(crate) fn setresuid_thread(
- ruid: crate::process::Uid,
- euid: crate::process::Uid,
- suid: crate::process::Uid,
-) -> io::Result<()> {
- #[cfg(any(target_arch = "x86", target_arch = "arm", target_arch = "sparc"))]
- unsafe {
- ret(syscall_readonly!(__NR_setresuid32, ruid, euid, suid))
- }
- #[cfg(not(any(target_arch = "x86", target_arch = "arm", target_arch = "sparc")))]
- unsafe {
- ret(syscall_readonly!(__NR_setresuid, ruid, euid, suid))
- }
-}
-
-#[inline]
-pub(crate) fn setgid_thread(gid: crate::process::Gid) -> io::Result<()> {
- unsafe { ret(syscall_readonly!(__NR_setgid, gid)) }
-}
-
-#[inline]
-pub(crate) fn setresgid_thread(
- rgid: crate::process::Gid,
- egid: crate::process::Gid,
- sgid: crate::process::Gid,
-) -> io::Result<()> {
- #[cfg(any(target_arch = "x86", target_arch = "arm", target_arch = "sparc"))]
- unsafe {
- ret(syscall_readonly!(__NR_setresgid32, rgid, egid, sgid))
- }
- #[cfg(not(any(target_arch = "x86", target_arch = "arm", target_arch = "sparc")))]
- unsafe {
- ret(syscall_readonly!(__NR_setresgid, rgid, egid, sgid))
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/time/mod.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/time/mod.rs
deleted file mode 100644
index c42592c4f..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/time/mod.rs
+++ /dev/null
@@ -1,3 +0,0 @@
-#[cfg(any(feature = "time", target_arch = "x86"))]
-pub(crate) mod syscalls;
-pub(crate) mod types;
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/time/syscalls.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/time/syscalls.rs
deleted file mode 100644
index c039393ef..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/time/syscalls.rs
+++ /dev/null
@@ -1,270 +0,0 @@
-//! linux_raw syscalls supporting `rustix::time`.
-//!
-//! # Safety
-//!
-//! See the `rustix::backend` module documentation for details.
-#![allow(unsafe_code)]
-#![allow(clippy::undocumented_unsafe_blocks)]
-
-#[cfg(feature = "time")]
-use super::super::conv::{by_ref, ret_owned_fd};
-use super::super::conv::{ret, ret_infallible};
-use super::types::ClockId;
-#[cfg(feature = "time")]
-use crate::fd::BorrowedFd;
-#[cfg(feature = "time")]
-use crate::fd::OwnedFd;
-use crate::io;
-#[cfg(feature = "time")]
-use crate::time::{Itimerspec, TimerfdClockId, TimerfdFlags, TimerfdTimerFlags};
-use core::mem::MaybeUninit;
-use linux_raw_sys::general::__kernel_timespec;
-#[cfg(feature = "time")]
-#[cfg(target_pointer_width = "32")]
-use {core::convert::TryInto, linux_raw_sys::general::itimerspec as __kernel_old_itimerspec};
-#[cfg(target_pointer_width = "32")]
-use {core::ptr, linux_raw_sys::general::timespec as __kernel_old_timespec};
-
-// `clock_gettime` has special optimizations via the vDSO.
-#[cfg(feature = "time")]
-pub(crate) use super::super::vdso_wrappers::{clock_gettime, clock_gettime_dynamic};
-
-#[inline]
-pub(crate) fn clock_getres(which_clock: ClockId) -> __kernel_timespec {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- let mut result = MaybeUninit::<__kernel_timespec>::uninit();
- if let Err(err) = ret(syscall!(__NR_clock_getres_time64, which_clock, &mut result)) {
- // See the comments in `rustix_clock_gettime_via_syscall` about
- // emulation.
- debug_assert_eq!(err, io::Errno::NOSYS);
- clock_getres_old(which_clock, &mut result);
- }
- result.assume_init()
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- let mut result = MaybeUninit::<__kernel_timespec>::uninit();
- ret_infallible(syscall!(__NR_clock_getres, which_clock, &mut result));
- result.assume_init()
- }
-}
-
-#[cfg(target_pointer_width = "32")]
-unsafe fn clock_getres_old(which_clock: ClockId, result: &mut MaybeUninit<__kernel_timespec>) {
- let mut old_result = MaybeUninit::<__kernel_old_timespec>::uninit();
- ret_infallible(syscall!(__NR_clock_getres, which_clock, &mut old_result));
- let old_result = old_result.assume_init();
- // TODO: With Rust 1.55, we can use MaybeUninit::write here.
- ptr::write(
- result.as_mut_ptr(),
- __kernel_timespec {
- tv_sec: old_result.tv_sec.into(),
- tv_nsec: old_result.tv_nsec.into(),
- },
- );
-}
-
-#[cfg(feature = "time")]
-#[inline]
-pub(crate) fn clock_settime(which_clock: ClockId, timespec: __kernel_timespec) -> io::Result<()> {
- #[cfg(target_pointer_width = "32")]
- unsafe {
- match ret(syscall_readonly!(
- __NR_clock_settime64,
- which_clock,
- by_ref(&timespec)
- )) {
- Err(io::Errno::NOSYS) => clock_settime_old(which_clock, timespec),
- otherwise => otherwise,
- }
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret(syscall_readonly!(
- __NR_clock_settime,
- which_clock,
- by_ref(&timespec)
- ))
- }
-}
-
-#[cfg(feature = "time")]
-#[cfg(target_pointer_width = "32")]
-unsafe fn clock_settime_old(which_clock: ClockId, timespec: __kernel_timespec) -> io::Result<()> {
- let old_timespec = __kernel_old_timespec {
- tv_sec: timespec
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- tv_nsec: timespec.tv_nsec as _,
- };
- ret(syscall_readonly!(
- __NR_clock_settime,
- which_clock,
- by_ref(&old_timespec)
- ))
-}
-
-#[cfg(feature = "time")]
-#[inline]
-pub(crate) fn timerfd_create(clockid: TimerfdClockId, flags: TimerfdFlags) -> io::Result<OwnedFd> {
- unsafe { ret_owned_fd(syscall!(__NR_timerfd_create, clockid, flags)) }
-}
-
-#[cfg(feature = "time")]
-#[inline]
-pub(crate) fn timerfd_settime(
- fd: BorrowedFd<'_>,
- flags: TimerfdTimerFlags,
- new_value: &Itimerspec,
-) -> io::Result<Itimerspec> {
- let mut result = MaybeUninit::<Itimerspec>::uninit();
-
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret(syscall!(
- __NR_timerfd_settime,
- fd,
- flags,
- by_ref(new_value),
- &mut result
- ))?;
- Ok(result.assume_init())
- }
-
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret(syscall!(
- __NR_timerfd_settime64,
- fd,
- flags,
- by_ref(new_value),
- &mut result
- ))
- .or_else(|err| {
- // See the comments in `rustix_clock_gettime_via_syscall` about
- // emulation.
- if err == io::Errno::NOSYS {
- timerfd_settime_old(fd, flags, new_value, &mut result)
- } else {
- Err(err)
- }
- })?;
- Ok(result.assume_init())
- }
-}
-
-#[cfg(feature = "time")]
-#[cfg(target_pointer_width = "32")]
-unsafe fn timerfd_settime_old(
- fd: BorrowedFd<'_>,
- flags: TimerfdTimerFlags,
- new_value: &Itimerspec,
- result: &mut MaybeUninit<Itimerspec>,
-) -> io::Result<()> {
- let mut old_result = MaybeUninit::<__kernel_old_itimerspec>::uninit();
-
- // Convert `new_value` to the old `__kernel_old_itimerspec` format.
- let old_new_value = __kernel_old_itimerspec {
- it_interval: __kernel_old_timespec {
- tv_sec: new_value
- .it_interval
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- tv_nsec: new_value
- .it_interval
- .tv_nsec
- .try_into()
- .map_err(|_| io::Errno::INVAL)?,
- },
- it_value: __kernel_old_timespec {
- tv_sec: new_value
- .it_value
- .tv_sec
- .try_into()
- .map_err(|_| io::Errno::OVERFLOW)?,
- tv_nsec: new_value
- .it_value
- .tv_nsec
- .try_into()
- .map_err(|_| io::Errno::INVAL)?,
- },
- };
- ret(syscall!(
- __NR_timerfd_settime,
- fd,
- flags,
- by_ref(&old_new_value),
- &mut old_result
- ))?;
- let old_result = old_result.assume_init();
- // TODO: With Rust 1.55, we can use MaybeUninit::write here.
- ptr::write(
- result.as_mut_ptr(),
- Itimerspec {
- it_interval: __kernel_timespec {
- tv_sec: old_result.it_interval.tv_sec.into(),
- tv_nsec: old_result.it_interval.tv_nsec.into(),
- },
- it_value: __kernel_timespec {
- tv_sec: old_result.it_value.tv_sec.into(),
- tv_nsec: old_result.it_value.tv_nsec.into(),
- },
- },
- );
- Ok(())
-}
-
-#[cfg(feature = "time")]
-#[inline]
-pub(crate) fn timerfd_gettime(fd: BorrowedFd<'_>) -> io::Result<Itimerspec> {
- let mut result = MaybeUninit::<Itimerspec>::uninit();
-
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret(syscall!(__NR_timerfd_gettime, fd, &mut result))?;
- Ok(result.assume_init())
- }
-
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret(syscall!(__NR_timerfd_gettime64, fd, &mut result)).or_else(|err| {
- // See the comments in `rustix_clock_gettime_via_syscall` about
- // emulation.
- if err == io::Errno::NOSYS {
- timerfd_gettime_old(fd, &mut result)
- } else {
- Err(err)
- }
- })?;
- Ok(result.assume_init())
- }
-}
-
-#[cfg(feature = "time")]
-#[cfg(target_pointer_width = "32")]
-unsafe fn timerfd_gettime_old(
- fd: BorrowedFd<'_>,
- result: &mut MaybeUninit<Itimerspec>,
-) -> io::Result<()> {
- let mut old_result = MaybeUninit::<__kernel_old_itimerspec>::uninit();
- ret(syscall!(__NR_timerfd_gettime, fd, &mut old_result))?;
- let old_result = old_result.assume_init();
- // TODO: With Rust 1.55, we can use MaybeUninit::write here.
- ptr::write(
- result.as_mut_ptr(),
- Itimerspec {
- it_interval: __kernel_timespec {
- tv_sec: old_result.it_interval.tv_sec.into(),
- tv_nsec: old_result.it_interval.tv_nsec.into(),
- },
- it_value: __kernel_timespec {
- tv_sec: old_result.it_value.tv_sec.into(),
- tv_nsec: old_result.it_value.tv_nsec.into(),
- },
- },
- );
- Ok(())
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/time/types.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/time/types.rs
deleted file mode 100644
index 5a0fcc6f5..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/time/types.rs
+++ /dev/null
@@ -1,154 +0,0 @@
-use super::super::c;
-use crate::fd::BorrowedFd;
-use bitflags::bitflags;
-
-/// `struct timespec`
-pub type Timespec = linux_raw_sys::general::__kernel_timespec;
-
-/// A type for the `tv_sec` field of [`Timespec`].
-pub type Secs = linux_raw_sys::general::__kernel_time64_t;
-
-/// A type for the `tv_nsec` field of [`Timespec`].
-pub type Nsecs = i64;
-
-/// `struct itimerspec` for use with [`timerfd_gettime`] and
-/// [`timerfd_settime`].
-///
-/// [`timerfd_gettime`]: crate::time::timerfd_gettime
-/// [`timerfd_settime`]: crate::time::timerfd_settime
-pub type Itimerspec = linux_raw_sys::general::__kernel_itimerspec;
-
-/// `CLOCK_*` constants for use with [`clock_gettime`].
-///
-/// These constants are always supported at runtime, so `clock_gettime` never
-/// has to fail with `INVAL` due to an unsupported clock. See
-/// [`DynamicClockId`] for a greater set of clocks, with the caveat that not
-/// all of them are always supported.
-///
-/// [`clock_gettime`]: crate::time::clock_gettime
-#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
-#[repr(u32)]
-#[non_exhaustive]
-pub enum ClockId {
- /// `CLOCK_REALTIME`
- Realtime = linux_raw_sys::general::CLOCK_REALTIME,
-
- /// `CLOCK_MONOTONIC`
- Monotonic = linux_raw_sys::general::CLOCK_MONOTONIC,
-
- /// `CLOCK_PROCESS_CPUTIME_ID`
- ProcessCPUTime = linux_raw_sys::general::CLOCK_PROCESS_CPUTIME_ID,
-
- /// `CLOCK_THREAD_CPUTIME_ID`
- ThreadCPUTime = linux_raw_sys::general::CLOCK_THREAD_CPUTIME_ID,
-
- /// `CLOCK_REALTIME_COARSE`
- RealtimeCoarse = linux_raw_sys::general::CLOCK_REALTIME_COARSE,
-
- /// `CLOCK_MONOTONIC_COARSE`
- MonotonicCoarse = linux_raw_sys::general::CLOCK_MONOTONIC_COARSE,
-
- /// `CLOCK_MONOTONIC_RAW`
- MonotonicRaw = linux_raw_sys::general::CLOCK_MONOTONIC_RAW,
-}
-
-/// `CLOCK_*` constants for use with [`clock_gettime_dynamic`].
-///
-/// These constants may be unsupported at runtime, depending on the OS version,
-/// and `clock_gettime_dynamic` may fail with `INVAL`. See [`ClockId`] for
-/// clocks which are always supported at runtime.
-///
-/// [`clock_gettime_dynamic`]: crate::time::clock_gettime_dynamic
-#[derive(Debug, Copy, Clone)]
-#[non_exhaustive]
-pub enum DynamicClockId<'a> {
- /// `ClockId` values that are always supported at runtime.
- Known(ClockId),
-
- /// Linux dynamic clocks.
- Dynamic(BorrowedFd<'a>),
-
- /// `CLOCK_REALTIME_ALARM`, available on Linux >= 3.0
- RealtimeAlarm,
-
- /// `CLOCK_TAI`, available on Linux >= 3.10
- Tai,
-
- /// `CLOCK_BOOTTIME`, available on Linux >= 2.6.39
- Boottime,
-
- /// `CLOCK_BOOTTIME_ALARM`, available on Linux >= 2.6.39
- BoottimeAlarm,
-}
-
-bitflags! {
- /// `TFD_*` flags for use with [`timerfd_create`].
- ///
- /// [`timerfd_create`]: crate::time::timerfd_create
- pub struct TimerfdFlags: c::c_uint {
- /// `TFD_NONBLOCK`
- const NONBLOCK = linux_raw_sys::general::TFD_NONBLOCK;
-
- /// `TFD_CLOEXEC`
- const CLOEXEC = linux_raw_sys::general::TFD_CLOEXEC;
- }
-}
-
-bitflags! {
- /// `TFD_TIMER_*` flags for use with [`timerfd_settime`].
- ///
- /// [`timerfd_settime`]: crate::time::timerfd_settime
- pub struct TimerfdTimerFlags: c::c_uint {
- /// `TFD_TIMER_ABSTIME`
- const ABSTIME = linux_raw_sys::general::TFD_TIMER_ABSTIME;
-
- /// `TFD_TIMER_CANCEL_ON_SET`
- const CANCEL_ON_SET = linux_raw_sys::general::TFD_TIMER_CANCEL_ON_SET;
- }
-}
-
-/// `CLOCK_*` constants for use with [`timerfd_create`].
-///
-/// [`timerfd_create`]: crate::time::timerfd_create
-#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)]
-#[repr(u32)]
-#[non_exhaustive]
-pub enum TimerfdClockId {
- /// `CLOCK_REALTIME`—A clock that tells the "real" time.
- ///
- /// This is a clock that tells the amount of time elapsed since the
- /// Unix epoch, 1970-01-01T00:00:00Z. The clock is externally settable, so
- /// it is not monotonic. Successive reads may see decreasing times, so it
- /// isn't reliable for measuring durations.
- Realtime = linux_raw_sys::general::CLOCK_REALTIME,
-
- /// `CLOCK_MONOTONIC`—A clock that tells an abstract time.
- ///
- /// Unlike `Realtime`, this clock is not based on a fixed known epoch, so
- /// individual times aren't meaningful. However, since it isn't settable,
- /// it is reliable for measuring durations.
- ///
- /// This clock does not advance while the system is suspended; see
- /// `Boottime` for a clock that does.
- Monotonic = linux_raw_sys::general::CLOCK_MONOTONIC,
-
- /// `CLOCK_BOOTTIME`—Like `Monotonic`, but advances while suspended.
- ///
- /// This clock is similar to `Monotonic`, but does advance while the system
- /// is suspended.
- Boottime = linux_raw_sys::general::CLOCK_BOOTTIME,
-
- /// `CLOCK_REALTIME_ALARM`—Like `Realtime`, but wakes a suspended system.
- ///
- /// This clock is like `Realtime`, but can wake up a suspended system.
- ///
- /// Use of this clock requires the `CAP_WAKE_ALARM` Linux capability.
- RealtimeAlarm = linux_raw_sys::general::CLOCK_REALTIME_ALARM,
-
- /// `CLOCK_BOOTTIME_ALARM`—Like `Boottime`, but wakes a suspended system.
- ///
- /// This clock is like `Boottime`, but can wake up a suspended system.
- ///
- /// Use of this clock requires the `CAP_WAKE_ALARM` Linux capability.
- BoottimeAlarm = linux_raw_sys::general::CLOCK_BOOTTIME_ALARM,
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/vdso.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/vdso.rs
deleted file mode 100644
index 480378b50..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/vdso.rs
+++ /dev/null
@@ -1,310 +0,0 @@
-//! Parse the Linux vDSO.
-//!
-//! The following code is transliterated from
-//! tools/testing/selftests/vDSO/parse_vdso.c in Linux 5.11, which is licensed
-//! with Creative Commons Zero License, version 1.0,
-//! available at <https://creativecommons.org/publicdomain/zero/1.0/legalcode>
-//!
-//! # Safety
-//!
-//! Parsing the vDSO involves a lot of raw pointer manipulation. This
-//! implementation follows Linux's reference implementation, and adds several
-//! additional safety checks.
-#![allow(unsafe_code)]
-
-use super::c;
-use super::elf::*;
-use crate::ffi::CStr;
-use crate::utils::check_raw_pointer;
-use core::ffi::c_void;
-use core::mem::size_of;
-use core::ptr::{null, null_mut};
-
-pub(super) struct Vdso {
- // Load information
- load_addr: *const Elf_Ehdr,
- load_end: *const c_void, // the end of the `PT_LOAD` segment
- pv_offset: usize, // recorded paddr - recorded vaddr
-
- // Symbol table
- symtab: *const Elf_Sym,
- symstrings: *const u8,
- bucket: *const u32,
- chain: *const u32,
- nbucket: u32,
- //nchain: u32,
-
- // Version table
- versym: *const u16,
- verdef: *const Elf_Verdef,
-}
-
-// Straight from the ELF specification.
-fn elf_hash(name: &CStr) -> u32 {
- let mut h: u32 = 0;
- for b in name.to_bytes() {
- h = (h << 4).wrapping_add(u32::from(*b));
- let g = h & 0xf000_0000;
- if g != 0 {
- h ^= g >> 24;
- }
- h &= !g;
- }
- h
-}
-
-/// Create a `Vdso` value by parsing the vDSO at the `sysinfo_ehdr` address.
-fn init_from_sysinfo_ehdr() -> Option<Vdso> {
- // SAFETY: the auxv initialization code does extensive checks to ensure
- // that the value we get really is an `AT_SYSINFO_EHDR` value from the
- // kernel.
- unsafe {
- let hdr = super::param::auxv::sysinfo_ehdr();
-
- // If the platform doesn't provide a `AT_SYSINFO_EHDR`, we can't locate
- // the vDSO.
- if hdr.is_null() {
- return None;
- }
-
- let mut vdso = Vdso {
- load_addr: hdr,
- load_end: hdr.cast(),
- pv_offset: 0,
- symtab: null(),
- symstrings: null(),
- bucket: null(),
- chain: null(),
- nbucket: 0,
- //nchain: 0,
- versym: null(),
- verdef: null(),
- };
-
- let hdr = &*hdr;
- let pt = check_raw_pointer::<Elf_Phdr>(vdso.base_plus(hdr.e_phoff)? as *mut _)?.as_ptr();
- let mut dyn_: *const Elf_Dyn = null();
- let mut num_dyn = 0;
-
- // We need two things from the segment table: the load offset
- // and the dynamic table.
- let mut found_vaddr = false;
- for i in 0..hdr.e_phnum {
- let phdr = &*pt.add(i as usize);
- if phdr.p_flags & PF_W != 0 {
- // Don't trust any vDSO that claims to be loading writable
- // segments into memory.
- return None;
- }
- if phdr.p_type == PT_LOAD && !found_vaddr {
- // The segment should be readable and executable, because it
- // contains the symbol table and the function bodies.
- if phdr.p_flags & (PF_R | PF_X) != (PF_R | PF_X) {
- return None;
- }
- found_vaddr = true;
- vdso.load_end = vdso.base_plus(phdr.p_offset.checked_add(phdr.p_memsz)?)?;
- vdso.pv_offset = phdr.p_offset.wrapping_sub(phdr.p_vaddr);
- } else if phdr.p_type == PT_DYNAMIC {
- // If `p_offset` is zero, it's more likely that we're looking at memory
- // that has been zeroed than that the kernel has somehow aliased the
- // `Ehdr` and the `Elf_Dyn` array.
- if phdr.p_offset < size_of::<Elf_Ehdr>() {
- return None;
- }
-
- dyn_ = check_raw_pointer::<Elf_Dyn>(vdso.base_plus(phdr.p_offset)? as *mut _)?
- .as_ptr();
- num_dyn = phdr.p_memsz / size_of::<Elf_Dyn>();
- } else if phdr.p_type == PT_INTERP || phdr.p_type == PT_GNU_RELRO {
- // Don't trust any ELF image that has an "interpreter" or that uses
- // RELRO, which is likely to be a user ELF image rather and not the
- // kernel vDSO.
- return None;
- }
- }
-
- if !found_vaddr || dyn_.is_null() {
- return None; // Failed
- }
-
- // Fish out the useful bits of the dynamic table.
- let mut hash: *const u32 = null();
- vdso.symstrings = null();
- vdso.symtab = null();
- vdso.versym = null();
- vdso.verdef = null();
- let mut i = 0;
- loop {
- if i == num_dyn {
- return None;
- }
- let d = &*dyn_.add(i);
- match d.d_tag {
- DT_STRTAB => {
- vdso.symstrings =
- check_raw_pointer::<u8>(vdso.addr_from_elf(d.d_val)? as *mut _)?.as_ptr();
- }
- DT_SYMTAB => {
- vdso.symtab =
- check_raw_pointer::<Elf_Sym>(vdso.addr_from_elf(d.d_val)? as *mut _)?
- .as_ptr();
- }
- DT_HASH => {
- hash =
- check_raw_pointer::<u32>(vdso.addr_from_elf(d.d_val)? as *mut _)?.as_ptr();
- }
- DT_VERSYM => {
- vdso.versym =
- check_raw_pointer::<u16>(vdso.addr_from_elf(d.d_val)? as *mut _)?.as_ptr();
- }
- DT_VERDEF => {
- vdso.verdef =
- check_raw_pointer::<Elf_Verdef>(vdso.addr_from_elf(d.d_val)? as *mut _)?
- .as_ptr();
- }
- DT_SYMENT => {
- if d.d_val != size_of::<Elf_Sym>() {
- return None; // Failed
- }
- }
- DT_NULL => break,
- _ => {}
- }
- i = i.checked_add(1)?;
- }
- // The upstream code checks `symstrings`, `symtab`, and `hash` for null;
- // here, `check_raw_pointer` has already done that.
-
- if vdso.verdef.is_null() {
- vdso.versym = null();
- }
-
- // Parse the hash table header.
- vdso.nbucket = *hash.add(0);
- //vdso.nchain = *hash.add(1);
- vdso.bucket = hash.add(2);
- vdso.chain = hash.add(vdso.nbucket as usize + 2);
-
- // That's all we need.
- Some(vdso)
- }
-}
-
-impl Vdso {
- /// Parse the vDSO.
- ///
- /// Returns `None` if the vDSO can't be located or if it doesn't conform
- /// to our expectations.
- #[inline]
- pub(super) fn new() -> Option<Self> {
- init_from_sysinfo_ehdr()
- }
-
- /// Check the version for a symbol.
- ///
- /// # Safety
- ///
- /// The raw pointers inside `self` must be valid.
- unsafe fn match_version(&self, mut ver: u16, name: &CStr, hash: u32) -> bool {
- // This is a helper function to check if the version indexed by
- // ver matches name (which hashes to hash).
- //
- // The version definition table is a mess, and I don't know how
- // to do this in better than linear time without allocating memory
- // to build an index. I also don't know why the table has
- // variable size entries in the first place.
- //
- // For added fun, I can't find a comprehensible specification of how
- // to parse all the weird flags in the table.
- //
- // So I just parse the whole table every time.
-
- // First step: find the version definition
- ver &= 0x7fff; // Apparently bit 15 means "hidden"
- let mut def = self.verdef;
- loop {
- if (*def).vd_version != VER_DEF_CURRENT {
- return false; // Failed
- }
-
- if ((*def).vd_flags & VER_FLG_BASE) == 0 && ((*def).vd_ndx & 0x7fff) == ver {
- break;
- }
-
- if (*def).vd_next == 0 {
- return false; // No definition.
- }
-
- def = def
- .cast::<u8>()
- .add((*def).vd_next as usize)
- .cast::<Elf_Verdef>();
- }
-
- // Now figure out whether it matches.
- let aux = &*(def.cast::<u8>())
- .add((*def).vd_aux as usize)
- .cast::<Elf_Verdaux>();
- (*def).vd_hash == hash
- && (name == CStr::from_ptr(self.symstrings.add(aux.vda_name as usize).cast()))
- }
-
- /// Look up a symbol in the vDSO.
- pub(super) fn sym(&self, version: &CStr, name: &CStr) -> *mut c::c_void {
- let ver_hash = elf_hash(version);
- let name_hash = elf_hash(name);
-
- // SAFETY: The pointers in `self` must be valid.
- unsafe {
- let mut chain = *self.bucket.add((name_hash % self.nbucket) as usize);
-
- while chain != STN_UNDEF {
- let sym = &*self.symtab.add(chain as usize);
-
- // Check for a defined global or weak function w/ right name.
- //
- // The reference parser in Linux's parse_vdso.c requires
- // symbols to have type `STT_FUNC`, but on powerpc64, the vDSO
- // uses `STT_NOTYPE`, so allow that too.
- if (ELF_ST_TYPE(sym.st_info) != STT_FUNC &&
- ELF_ST_TYPE(sym.st_info) != STT_NOTYPE)
- || (ELF_ST_BIND(sym.st_info) != STB_GLOBAL
- && ELF_ST_BIND(sym.st_info) != STB_WEAK)
- || sym.st_shndx == SHN_UNDEF
- || sym.st_shndx == SHN_ABS
- || ELF_ST_VISIBILITY(sym.st_other) != STV_DEFAULT
- || (name != CStr::from_ptr(self.symstrings.add(sym.st_name as usize).cast()))
- // Check symbol version.
- || (!self.versym.is_null()
- && !self.match_version(*self.versym.add(chain as usize), version, ver_hash))
- {
- chain = *self.chain.add(chain as usize);
- continue;
- }
-
- let sum = self.addr_from_elf(sym.st_value).unwrap();
- assert!(
- sum as usize >= self.load_addr as usize
- && sum as usize <= self.load_end as usize
- );
- return sum as *mut c::c_void;
- }
- }
-
- null_mut()
- }
-
- /// Add the given address to the vDSO base address.
- unsafe fn base_plus(&self, offset: usize) -> Option<*const c_void> {
- // Check for overflow.
- let _ = (self.load_addr as usize).checked_add(offset)?;
- // Add the offset to the base.
- Some(self.load_addr.cast::<u8>().add(offset).cast())
- }
-
- /// Translate an ELF-address-space address into a usable virtual address.
- unsafe fn addr_from_elf(&self, elf_addr: usize) -> Option<*const c_void> {
- self.base_plus(elf_addr.wrapping_add(self.pv_offset))
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/vdso_wrappers.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/vdso_wrappers.rs
deleted file mode 100644
index 5b2e084ea..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/vdso_wrappers.rs
+++ /dev/null
@@ -1,399 +0,0 @@
-//! Implement syscalls using the vDSO.
-//!
-//! <https://man7.org/linux/man-pages/man7/vdso.7.html>
-//!
-//! # Safety
-//!
-//! Similar to syscalls.rs, this file performs raw system calls, and sometimes
-//! passes them uninitialized memory buffers. This file also calls vDSO
-//! functions.
-#![allow(unsafe_code)]
-
-use super::conv::{c_int, ret};
-#[cfg(target_arch = "x86")]
-use super::reg::{ArgReg, RetReg, SyscallNumber, A0, A1, A2, A3, A4, A5, R0};
-use super::time::types::{ClockId, DynamicClockId, Timespec};
-use super::{c, vdso};
-use crate::io;
-#[cfg(all(asm, target_arch = "x86"))]
-use core::arch::asm;
-use core::mem::{transmute, MaybeUninit};
-use core::ptr::null_mut;
-use core::sync::atomic::AtomicPtr;
-use core::sync::atomic::Ordering::Relaxed;
-#[cfg(target_pointer_width = "32")]
-use linux_raw_sys::general::timespec as __kernel_old_timespec;
-use linux_raw_sys::general::{__kernel_clockid_t, __kernel_timespec};
-
-#[inline]
-pub(crate) fn clock_gettime(which_clock: ClockId) -> __kernel_timespec {
- // SAFETY: `CLOCK_GETTIME` contains either null or the address of a
- // function with an ABI like libc `clock_gettime`, and calling it has
- // the side effect of writing to the result buffer, and no others.
- unsafe {
- let mut result = MaybeUninit::<__kernel_timespec>::uninit();
- let callee = match transmute(CLOCK_GETTIME.load(Relaxed)) {
- Some(callee) => callee,
- None => init_clock_gettime(),
- };
- let r0 = callee(which_clock as c::c_int, result.as_mut_ptr());
- assert_eq!(r0, 0);
- result.assume_init()
- }
-}
-
-#[inline]
-pub(crate) fn clock_gettime_dynamic(which_clock: DynamicClockId<'_>) -> io::Result<Timespec> {
- let id = match which_clock {
- DynamicClockId::Known(id) => id as __kernel_clockid_t,
-
- DynamicClockId::Dynamic(fd) => {
- // See `FD_TO_CLOCKID` in Linux's `clock_gettime` documentation.
- use crate::backend::fd::AsRawFd;
- const CLOCKFD: i32 = 3;
- ((!fd.as_raw_fd() << 3) | CLOCKFD) as __kernel_clockid_t
- }
-
- DynamicClockId::RealtimeAlarm => {
- linux_raw_sys::general::CLOCK_REALTIME_ALARM as __kernel_clockid_t
- }
- DynamicClockId::Tai => linux_raw_sys::general::CLOCK_TAI as __kernel_clockid_t,
- DynamicClockId::Boottime => linux_raw_sys::general::CLOCK_BOOTTIME as __kernel_clockid_t,
- DynamicClockId::BoottimeAlarm => {
- linux_raw_sys::general::CLOCK_BOOTTIME_ALARM as __kernel_clockid_t
- }
- };
-
- // SAFETY: `CLOCK_GETTIME` contains either null or the address of a
- // function with an ABI like libc `clock_gettime`, and calling it has
- // the side effect of writing to the result buffer, and no others.
- unsafe {
- const EINVAL: c::c_int = -(c::EINVAL as c::c_int);
- let mut timespec = MaybeUninit::<Timespec>::uninit();
- let callee = match transmute(CLOCK_GETTIME.load(Relaxed)) {
- Some(callee) => callee,
- None => init_clock_gettime(),
- };
- match callee(id, timespec.as_mut_ptr()) {
- 0 => (),
- EINVAL => return Err(io::Errno::INVAL),
- _ => _rustix_clock_gettime_via_syscall(id, timespec.as_mut_ptr())?,
- }
- Ok(timespec.assume_init())
- }
-}
-
-#[cfg(target_arch = "x86")]
-pub(super) mod x86_via_vdso {
- use super::{transmute, ArgReg, Relaxed, RetReg, SyscallNumber, A0, A1, A2, A3, A4, A5, R0};
- use crate::backend::arch::asm;
-
- #[inline]
- pub(in crate::backend) unsafe fn syscall0(nr: SyscallNumber<'_>) -> RetReg<R0> {
- let callee = match transmute(super::SYSCALL.load(Relaxed)) {
- Some(callee) => callee,
- None => super::init_syscall(),
- };
- asm::indirect_syscall0(callee, nr)
- }
-
- #[inline]
- pub(in crate::backend) unsafe fn syscall1<'a>(
- nr: SyscallNumber<'a>,
- a0: ArgReg<'a, A0>,
- ) -> RetReg<R0> {
- let callee = match transmute(super::SYSCALL.load(Relaxed)) {
- Some(callee) => callee,
- None => super::init_syscall(),
- };
- asm::indirect_syscall1(callee, nr, a0)
- }
-
- #[inline]
- pub(in crate::backend) unsafe fn syscall1_noreturn<'a>(
- nr: SyscallNumber<'a>,
- a0: ArgReg<'a, A0>,
- ) -> ! {
- let callee = match transmute(super::SYSCALL.load(Relaxed)) {
- Some(callee) => callee,
- None => super::init_syscall(),
- };
- asm::indirect_syscall1_noreturn(callee, nr, a0)
- }
-
- #[inline]
- pub(in crate::backend) unsafe fn syscall2<'a>(
- nr: SyscallNumber<'a>,
- a0: ArgReg<'a, A0>,
- a1: ArgReg<'a, A1>,
- ) -> RetReg<R0> {
- let callee = match transmute(super::SYSCALL.load(Relaxed)) {
- Some(callee) => callee,
- None => super::init_syscall(),
- };
- asm::indirect_syscall2(callee, nr, a0, a1)
- }
-
- #[inline]
- pub(in crate::backend) unsafe fn syscall3<'a>(
- nr: SyscallNumber<'a>,
- a0: ArgReg<'a, A0>,
- a1: ArgReg<'a, A1>,
- a2: ArgReg<'a, A2>,
- ) -> RetReg<R0> {
- let callee = match transmute(super::SYSCALL.load(Relaxed)) {
- Some(callee) => callee,
- None => super::init_syscall(),
- };
- asm::indirect_syscall3(callee, nr, a0, a1, a2)
- }
-
- #[inline]
- pub(in crate::backend) unsafe fn syscall4<'a>(
- nr: SyscallNumber<'a>,
- a0: ArgReg<'a, A0>,
- a1: ArgReg<'a, A1>,
- a2: ArgReg<'a, A2>,
- a3: ArgReg<'a, A3>,
- ) -> RetReg<R0> {
- let callee = match transmute(super::SYSCALL.load(Relaxed)) {
- Some(callee) => callee,
- None => super::init_syscall(),
- };
- asm::indirect_syscall4(callee, nr, a0, a1, a2, a3)
- }
-
- #[inline]
- pub(in crate::backend) unsafe fn syscall5<'a>(
- nr: SyscallNumber<'a>,
- a0: ArgReg<'a, A0>,
- a1: ArgReg<'a, A1>,
- a2: ArgReg<'a, A2>,
- a3: ArgReg<'a, A3>,
- a4: ArgReg<'a, A4>,
- ) -> RetReg<R0> {
- let callee = match transmute(super::SYSCALL.load(Relaxed)) {
- Some(callee) => callee,
- None => super::init_syscall(),
- };
- asm::indirect_syscall5(callee, nr, a0, a1, a2, a3, a4)
- }
-
- #[inline]
- pub(in crate::backend) unsafe fn syscall6<'a>(
- nr: SyscallNumber<'a>,
- a0: ArgReg<'a, A0>,
- a1: ArgReg<'a, A1>,
- a2: ArgReg<'a, A2>,
- a3: ArgReg<'a, A3>,
- a4: ArgReg<'a, A4>,
- a5: ArgReg<'a, A5>,
- ) -> RetReg<R0> {
- let callee = match transmute(super::SYSCALL.load(Relaxed)) {
- Some(callee) => callee,
- None => super::init_syscall(),
- };
- asm::indirect_syscall6(callee, nr, a0, a1, a2, a3, a4, a5)
- }
-
- // With the indirect call, it isn't meaningful to do a separate
- // `_readonly` optimization.
- pub(in crate::backend) use {
- syscall0 as syscall0_readonly, syscall1 as syscall1_readonly,
- syscall2 as syscall2_readonly, syscall3 as syscall3_readonly,
- syscall4 as syscall4_readonly, syscall5 as syscall5_readonly,
- syscall6 as syscall6_readonly,
- };
-}
-
-type ClockGettimeType = unsafe extern "C" fn(c::c_int, *mut Timespec) -> c::c_int;
-
-/// The underlying syscall functions are only called from asm, using the
-/// special syscall calling convention to pass arguments and return values,
-/// which the signature here doesn't reflect.
-#[cfg(target_arch = "x86")]
-pub(super) type SyscallType = unsafe extern "C" fn();
-
-/// Initialize `CLOCK_GETTIME` and return its value.
-fn init_clock_gettime() -> ClockGettimeType {
- init();
- // SAFETY: Load the function address from static storage that we
- // just initialized.
- unsafe { transmute(CLOCK_GETTIME.load(Relaxed)) }
-}
-
-/// Initialize `SYSCALL` and return its value.
-#[cfg(target_arch = "x86")]
-fn init_syscall() -> SyscallType {
- init();
- // SAFETY: Load the function address from static storage that we
- // just initialized.
- unsafe { transmute(SYSCALL.load(Relaxed)) }
-}
-
-/// `AtomicPtr` can't hold a `fn` pointer, so we use a `*` pointer to this
-/// placeholder type, and cast it as needed.
-struct Function;
-static mut CLOCK_GETTIME: AtomicPtr<Function> = AtomicPtr::new(null_mut());
-#[cfg(target_arch = "x86")]
-static mut SYSCALL: AtomicPtr<Function> = AtomicPtr::new(null_mut());
-
-unsafe extern "C" fn rustix_clock_gettime_via_syscall(
- clockid: c::c_int,
- res: *mut Timespec,
-) -> c::c_int {
- match _rustix_clock_gettime_via_syscall(clockid, res) {
- Ok(()) => 0,
- Err(err) => err.raw_os_error().wrapping_neg(),
- }
-}
-
-#[cfg(target_pointer_width = "32")]
-unsafe fn _rustix_clock_gettime_via_syscall(
- clockid: c::c_int,
- res: *mut Timespec,
-) -> io::Result<()> {
- let r0 = syscall!(__NR_clock_gettime64, c_int(clockid), res);
- match ret(r0) {
- Err(io::Errno::NOSYS) => _rustix_clock_gettime_via_syscall_old(clockid, res),
- otherwise => otherwise,
- }
-}
-
-#[cfg(target_pointer_width = "32")]
-unsafe fn _rustix_clock_gettime_via_syscall_old(
- clockid: c::c_int,
- res: *mut Timespec,
-) -> io::Result<()> {
- // Ordinarily `rustix` doesn't like to emulate system calls, but in
- // the case of time APIs, it's specific to Linux, specific to
- // 32-bit architectures *and* specific to old kernel versions, and
- // it's not that hard to fix up here, so that no other code needs
- // to worry about this.
- let mut old_result = MaybeUninit::<__kernel_old_timespec>::uninit();
- let r0 = syscall!(__NR_clock_gettime, c_int(clockid), &mut old_result);
- match ret(r0) {
- Ok(()) => {
- let old_result = old_result.assume_init();
- *res = Timespec {
- tv_sec: old_result.tv_sec.into(),
- tv_nsec: old_result.tv_nsec.into(),
- };
- Ok(())
- }
- otherwise => otherwise,
- }
-}
-
-#[cfg(target_pointer_width = "64")]
-unsafe fn _rustix_clock_gettime_via_syscall(
- clockid: c::c_int,
- res: *mut Timespec,
-) -> io::Result<()> {
- ret(syscall!(__NR_clock_gettime, c_int(clockid), res))
-}
-
-/// A symbol pointing to an `int 0x80` instruction. This "function" is only
-/// called from assembly, and only with the x86 syscall calling convention,
-/// so its signature here is not its true signature.
-#[cfg(all(asm, target_arch = "x86"))]
-#[naked]
-unsafe extern "C" fn rustix_int_0x80() {
- asm!("int $$0x80", "ret", options(noreturn))
-}
-
-// The outline version of the `rustix_int_0x80` above.
-#[cfg(all(not(asm), target_arch = "x86"))]
-extern "C" {
- fn rustix_int_0x80();
-}
-
-fn minimal_init() {
- // SAFETY: Store default function addresses in static storage so that if we
- // end up making any system calls while we read the vDSO, they'll work.
- // If the memory happens to already be initialized, this is redundant, but
- // not harmful.
- unsafe {
- CLOCK_GETTIME
- .compare_exchange(
- null_mut(),
- rustix_clock_gettime_via_syscall as *mut Function,
- Relaxed,
- Relaxed,
- )
- .ok();
- #[cfg(target_arch = "x86")]
- {
- SYSCALL
- .compare_exchange(
- null_mut(),
- rustix_int_0x80 as *mut Function,
- Relaxed,
- Relaxed,
- )
- .ok();
- }
- }
-}
-
-fn init() {
- minimal_init();
-
- if let Some(vdso) = vdso::Vdso::new() {
- // Look up the platform-specific `clock_gettime` symbol as documented
- // [here], except on 32-bit platforms where we look up the
- // `64`-suffixed variant and fail if we don't find it.
- //
- // [here]: https://man7.org/linux/man-pages/man7/vdso.7.html
- #[cfg(target_arch = "x86_64")]
- let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime"));
- #[cfg(target_arch = "arm")]
- let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime64"));
- #[cfg(target_arch = "aarch64")]
- let ptr = vdso.sym(cstr!("LINUX_2.6.39"), cstr!("__kernel_clock_gettime"));
- #[cfg(target_arch = "x86")]
- let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime64"));
- #[cfg(target_arch = "riscv64")]
- let ptr = vdso.sym(cstr!("LINUX_4.15"), cstr!("__vdso_clock_gettime"));
- #[cfg(target_arch = "powerpc64")]
- let ptr = vdso.sym(cstr!("LINUX_2.6.15"), cstr!("__kernel_clock_gettime"));
- #[cfg(target_arch = "mips")]
- let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime64"));
- #[cfg(target_arch = "mips64")]
- let ptr = vdso.sym(cstr!("LINUX_2.6"), cstr!("__vdso_clock_gettime"));
-
- // On all 64-bit platforms, the 64-bit `clock_gettime` symbols are
- // always available.
- #[cfg(target_pointer_width = "64")]
- let ok = true;
-
- // On some 32-bit platforms, the 64-bit `clock_gettime` symbols are not
- // available on older kernel versions.
- #[cfg(any(target_arch = "arm", target_arch = "mips", target_arch = "x86"))]
- let ok = !ptr.is_null();
-
- if ok {
- assert!(!ptr.is_null());
-
- // SAFETY: Store the computed function addresses in static storage
- // so that we don't need to compute it again (but if we do, it doesn't
- // hurt anything).
- unsafe {
- CLOCK_GETTIME.store(ptr.cast(), Relaxed);
- }
- }
-
- // On x86, also look up the vsyscall entry point.
- #[cfg(target_arch = "x86")]
- {
- let ptr = vdso.sym(cstr!("LINUX_2.5"), cstr!("__kernel_vsyscall"));
- assert!(!ptr.is_null());
-
- // SAFETY: As above, store the computed function addresses in
- // static storage.
- unsafe {
- SYSCALL.store(ptr.cast(), Relaxed);
- }
- }
- }
-}
diff --git a/vendor/rustix-0.37.6/src/backend/linux_raw/weak.rs b/vendor/rustix-0.37.6/src/backend/linux_raw/weak.rs
deleted file mode 100644
index ae7d6832e..000000000
--- a/vendor/rustix-0.37.6/src/backend/linux_raw/weak.rs
+++ /dev/null
@@ -1,228 +0,0 @@
-// Implementation derived from `weak` in Rust's
-// library/std/src/sys/unix/weak.rs at revision
-// fd0cb0cdc21dd9c06025277d772108f8d42cb25f.
-
-#![allow(unsafe_code)]
-
-//! Support for "weak linkage" to symbols on Unix
-//!
-//! Some I/O operations we do in libstd require newer versions of OSes but we
-//! need to maintain binary compatibility with older releases for now. In order
-//! to use the new functionality when available we use this module for
-//! detection.
-//!
-//! One option to use here is weak linkage, but that is unfortunately only
-//! really workable on Linux. Hence, use dlsym to get the symbol value at
-//! runtime. This is also done for compatibility with older versions of glibc,
-//! and to avoid creating dependencies on `GLIBC_PRIVATE` symbols. It assumes
-//! that we've been dynamically linked to the library the symbol comes from,
-//! but that is currently always the case for things like libpthread/libc.
-//!
-//! A long time ago this used weak linkage for the `__pthread_get_minstack`
-//! symbol, but that caused Debian to detect an unnecessarily strict versioned
-//! dependency on libc6 (#23628).
-
-// There are a variety of `#[cfg]`s controlling which targets are involved in
-// each instance of `weak!` and `syscall!`. Rather than trying to unify all of
-// that, we'll just allow that some unix targets don't use this module at all.
-#![allow(dead_code, unused_macros)]
-#![allow(clippy::doc_markdown)]
-
-use crate::ffi::CStr;
-use core::ffi::c_void;
-use core::ptr::null_mut;
-use core::sync::atomic::{self, AtomicPtr, Ordering};
-use core::{marker, mem};
-
-const NULL: *mut c_void = null_mut();
-const INVALID: *mut c_void = 1 as *mut c_void;
-
-macro_rules! weak {
- ($vis:vis fn $name:ident($($t:ty),*) -> $ret:ty) => (
- #[allow(non_upper_case_globals)]
- $vis static $name: $crate::backend::weak::Weak<unsafe extern fn($($t),*) -> $ret> =
- $crate::backend::weak::Weak::new(concat!(stringify!($name), '\0'));
- )
-}
-
-pub(crate) struct Weak<F> {
- name: &'static str,
- addr: AtomicPtr<c_void>,
- _marker: marker::PhantomData<F>,
-}
-
-impl<F> Weak<F> {
- pub(crate) const fn new(name: &'static str) -> Self {
- Self {
- name,
- addr: AtomicPtr::new(INVALID),
- _marker: marker::PhantomData,
- }
- }
-
- pub(crate) fn get(&self) -> Option<F> {
- assert_eq!(mem::size_of::<F>(), mem::size_of::<usize>());
- unsafe {
- // Relaxed is fine here because we fence before reading through the
- // pointer (see the comment below).
- match self.addr.load(Ordering::Relaxed) {
- INVALID => self.initialize(),
- NULL => None,
- addr => {
- let func = mem::transmute_copy::<*mut c_void, F>(&addr);
- // The caller is presumably going to read through this value
- // (by calling the function we've dlsymed). This means we'd
- // need to have loaded it with at least C11's consume
- // ordering in order to be guaranteed that the data we read
- // from the pointer isn't from before the pointer was
- // stored. Rust has no equivalent to memory_order_consume,
- // so we use an acquire fence (sorry, ARM).
- //
- // Now, in practice this likely isn't needed even on CPUs
- // where relaxed and consume mean different things. The
- // symbols we're loading are probably present (or not) at
- // init, and even if they aren't the runtime dynamic loader
- // is extremely likely have sufficient barriers internally
- // (possibly implicitly, for example the ones provided by
- // invoking `mprotect`).
- //
- // That said, none of that's *guaranteed*, and so we fence.
- atomic::fence(Ordering::Acquire);
- Some(func)
- }
- }
- }
- }
-
- // Cold because it should only happen during first-time initialization.
- #[cold]
- unsafe fn initialize(&self) -> Option<F> {
- let val = fetch(self.name);
- // This synchronizes with the acquire fence in `get`.
- self.addr.store(val, Ordering::Release);
-
- match val {
- NULL => None,
- addr => Some(mem::transmute_copy::<*mut c_void, F>(&addr)),
- }
- }
-}
-
-unsafe fn fetch(name: &str) -> *mut c_void {
- let name = match CStr::from_bytes_with_nul(name.as_bytes()) {
- Ok(c_str) => c_str,
- Err(..) => return null_mut(),
- };
- libc::dlsym(libc::RTLD_DEFAULT, name.as_ptr())
-}
-
-#[cfg(not(any(target_os = "android", target_os = "linux")))]
-macro_rules! syscall {
- (fn $name:ident($($arg_name:ident: $t:ty),*) via $_sys_name:ident -> $ret:ty) => (
- unsafe fn $name($($arg_name: $t),*) -> $ret {
- weak! { fn $name($($t),*) -> $ret }
-
- if let Some(fun) = $name.get() {
- fun($($arg_name),*)
- } else {
- libc_errno::set_errno(libc_errno::Errno(libc::ENOSYS));
- -1
- }
- }
- )
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-macro_rules! syscall {
- (fn $name:ident($($arg_name:ident: $t:ty),*) via $sys_name:ident -> $ret:ty) => (
- unsafe fn $name($($arg_name:$t),*) -> $ret {
- // This looks like a hack, but concat_idents only accepts idents
- // (not paths).
- use libc::*;
-
- trait AsSyscallArg {
- type SyscallArgType;
- fn into_syscall_arg(self) -> Self::SyscallArgType;
- }
-
- // Pass pointer types as pointers, to preserve provenance.
- impl<T> AsSyscallArg for *mut T {
- type SyscallArgType = *mut T;
- fn into_syscall_arg(self) -> Self::SyscallArgType { self }
- }
- impl<T> AsSyscallArg for *const T {
- type SyscallArgType = *const T;
- fn into_syscall_arg(self) -> Self::SyscallArgType { self }
- }
-
- // Pass `BorrowedFd` values as the integer value.
- impl AsSyscallArg for $crate::fd::BorrowedFd<'_> {
- type SyscallArgType = c::c_long;
- fn into_syscall_arg(self) -> Self::SyscallArgType {
- $crate::fd::AsRawFd::as_raw_fd(&self) as _
- }
- }
-
- // Coerce integer values into `c_long`.
- impl AsSyscallArg for i32 {
- type SyscallArgType = c::c_long;
- fn into_syscall_arg(self) -> Self::SyscallArgType { self as _ }
- }
- impl AsSyscallArg for u32 {
- type SyscallArgType = c::c_long;
- fn into_syscall_arg(self) -> Self::SyscallArgType { self as _ }
- }
- impl AsSyscallArg for usize {
- type SyscallArgType = c::c_long;
- fn into_syscall_arg(self) -> Self::SyscallArgType { self as _ }
- }
-
- // `concat_idents is unstable, so we take an extra `sys_name`
- // parameter and have our users do the concat for us for now.
- /*
- syscall(
- concat_idents!(SYS_, $name),
- $($arg_name.into_syscall_arg()),*
- ) as $ret
- */
-
- syscall($sys_name, $($arg_name.into_syscall_arg()),*) as $ret
- }
- )
-}
-
-macro_rules! weakcall {
- ($vis:vis fn $name:ident($($arg_name:ident: $t:ty),*) -> $ret:ty) => (
- $vis unsafe fn $name($($arg_name: $t),*) -> $ret {
- weak! { fn $name($($t),*) -> $ret }
-
- // Use a weak symbol from libc when possible, allowing `LD_PRELOAD`
- // interposition, but if it's not found just fail.
- if let Some(fun) = $name.get() {
- fun($($arg_name),*)
- } else {
- libc_errno::set_errno(libc_errno::Errno(libc::ENOSYS));
- -1
- }
- }
- )
-}
-
-/// A combination of `weakcall` and `syscall`. Use the libc function if it's
-/// available, and fall back to `libc::syscall` otherwise.
-macro_rules! weak_or_syscall {
- ($vis:vis fn $name:ident($($arg_name:ident: $t:ty),*) via $sys_name:ident -> $ret:ty) => (
- $vis unsafe fn $name($($arg_name: $t),*) -> $ret {
- weak! { fn $name($($t),*) -> $ret }
-
- // Use a weak symbol from libc when possible, allowing `LD_PRELOAD`
- // interposition, but if it's not found just fail.
- if let Some(fun) = $name.get() {
- fun($($arg_name),*)
- } else {
- syscall! { fn $name($($arg_name: $t),*) via $sys_name -> $ret }
- $name($($arg_name),*)
- }
- }
- )
-}
diff --git a/vendor/rustix-0.37.6/src/const_assert.rs b/vendor/rustix-0.37.6/src/const_assert.rs
deleted file mode 100644
index c1dd5498c..000000000
--- a/vendor/rustix-0.37.6/src/const_assert.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-/// A simple `assert` macro that works in `const fn`, for use until the
-/// standard `assert` macro works in `const fn`.
-///
-/// TODO: Replace this with just `assert!`, once that's stable for use in
-/// a `const fn` context.
-#[allow(unused_macros)]
-macro_rules! const_assert {
- ($x:expr) => {
- let b: bool = $x;
- let _ = [()][!b as usize];
- };
-}
-
-#[test]
-#[allow(clippy::missing_const_for_fn)]
-fn test_const_assert() {
- const_assert!(true);
-}
-
-#[test]
-const fn test_const_assert_in_const_fn() {
- const_assert!(true);
-}
diff --git a/vendor/rustix-0.37.6/src/cstr.rs b/vendor/rustix-0.37.6/src/cstr.rs
deleted file mode 100644
index 01dbe7e2f..000000000
--- a/vendor/rustix-0.37.6/src/cstr.rs
+++ /dev/null
@@ -1,76 +0,0 @@
-/// A macro for [`CStr`] literals.
-///
-/// This can make passing string literals to rustix APIs more efficient, since
-/// most underlying system calls with string arguments expect NUL-terminated
-/// strings, and passing strings to rustix as `CStr`s means that rustix doesn't
-/// need to copy them into a separate buffer to NUL-terminate them.
-///
-/// [`CStr`]: crate::ffi::CStr
-///
-/// # Examples
-///
-/// ```no_run
-/// # #[cfg(feature = "fs")]
-/// # fn main() -> rustix::io::Result<()> {
-/// use rustix::cstr;
-/// use rustix::fs::{cwd, statat, AtFlags};
-///
-/// let metadata = statat(cwd(), cstr!("test.txt"), AtFlags::empty())?;
-/// # Ok(())
-/// # }
-/// # #[cfg(not(feature = "fs"))]
-/// # fn main() {}
-/// ```
-#[allow(unused_macros)]
-#[macro_export]
-macro_rules! cstr {
- ($str:literal) => {{
- // Check for NUL manually, to ensure safety.
- //
- // In release builds, with strings that don't contain NULs, this
- // constant-folds away.
- //
- // We don't use std's `CStr::from_bytes_with_nul`; as of this writing,
- // that function isn't defined as `#[inline]` in std and doesn't
- // constant-fold away.
- assert!(
- !$str.bytes().any(|b| b == b'\0'),
- "cstr argument contains embedded NUL bytes",
- );
-
- #[allow(unsafe_code, unused_unsafe)]
- {
- // Now that we know the string doesn't have embedded NULs, we can call
- // `from_bytes_with_nul_unchecked`, which as of this writing is defined
- // as `#[inline]` and completely optimizes away.
- //
- // SAFETY: We have manually checked that the string does not contain
- // embedded NULs above, and we append or own NUL terminator here.
- unsafe {
- $crate::ffi::CStr::from_bytes_with_nul_unchecked(concat!($str, "\0").as_bytes())
- }
- }
- }};
-}
-
-#[test]
-fn test_cstr() {
- use crate::ffi::CString;
- use alloc::borrow::ToOwned;
- assert_eq!(cstr!(""), &*CString::new("").unwrap());
- assert_eq!(cstr!("").to_owned(), CString::new("").unwrap());
- assert_eq!(cstr!("hello"), &*CString::new("hello").unwrap());
- assert_eq!(cstr!("hello").to_owned(), CString::new("hello").unwrap());
-}
-
-#[test]
-#[should_panic]
-fn test_invalid_cstr() {
- let _ = cstr!("hello\0world");
-}
-
-#[test]
-#[should_panic]
-fn test_invalid_empty_cstr() {
- let _ = cstr!("\0");
-}
diff --git a/vendor/rustix-0.37.6/src/ffi/mod.rs b/vendor/rustix-0.37.6/src/ffi/mod.rs
deleted file mode 100644
index eb9983610..000000000
--- a/vendor/rustix-0.37.6/src/ffi/mod.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-//! Utilities related to FFI bindings.
-
-// If we have std, use it.
-#[cfg(feature = "std")]
-pub use {
- std::ffi::{CStr, CString, FromBytesWithNulError, NulError},
- std::os::raw::c_char,
-};
-
-// If we don't have std, we can depend on core and alloc having these features
-// in new versions of Rust.
-#[cfg(not(feature = "std"))]
-pub use {
- alloc::ffi::{CString, NulError},
- core::ffi::{c_char, CStr, FromBytesWithNulError},
-};
diff --git a/vendor/rustix-0.37.6/src/fs/abs.rs b/vendor/rustix-0.37.6/src/fs/abs.rs
deleted file mode 100644
index cffcf709b..000000000
--- a/vendor/rustix-0.37.6/src/fs/abs.rs
+++ /dev/null
@@ -1,55 +0,0 @@
-//! POSIX-style filesystem functions which operate on bare paths.
-
-#[cfg(not(any(
- solarish,
- target_os = "haiku",
- target_os = "netbsd",
- target_os = "redox",
- target_os = "wasi",
-)))]
-use crate::fs::StatFs;
-#[cfg(not(any(solarish, target_os = "haiku", target_os = "redox", target_os = "wasi")))]
-use {
- crate::fs::StatVfs,
- crate::{backend, io, path},
-};
-
-/// `statfs`—Queries filesystem metadata.
-///
-/// Compared to [`statvfs`], this function often provides more information,
-/// though it's less portable.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/statfs.2.html
-#[cfg(not(any(
- solarish,
- target_os = "haiku",
- target_os = "netbsd",
- target_os = "redox",
- target_os = "wasi",
-)))]
-#[inline]
-pub fn statfs<P: path::Arg>(path: P) -> io::Result<StatFs> {
- path.into_with_c_str(backend::fs::syscalls::statfs)
-}
-
-/// `statvfs`—Queries filesystem metadata, POSIX version.
-///
-/// Compared to [`statfs`], this function often provides less information,
-/// but it is more portable. But even so, filesystems are very diverse and not
-/// all the fields are meaningful for every filesystem. And `f_fsid` doesn't
-/// seem to have a clear meaning anywhere.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/statvfs.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/statvfs.2.html
-#[cfg(not(any(solarish, target_os = "haiku", target_os = "redox", target_os = "wasi")))]
-#[inline]
-pub fn statvfs<P: path::Arg>(path: P) -> io::Result<StatVfs> {
- path.into_with_c_str(backend::fs::syscalls::statvfs)
-}
diff --git a/vendor/rustix-0.37.6/src/fs/at.rs b/vendor/rustix-0.37.6/src/fs/at.rs
deleted file mode 100644
index 42bc5f807..000000000
--- a/vendor/rustix-0.37.6/src/fs/at.rs
+++ /dev/null
@@ -1,408 +0,0 @@
-//! POSIX-style `*at` functions.
-//!
-//! The `dirfd` argument to these functions may be a file descriptor for a
-//! directory, or the special value returned by [`cwd`].
-//!
-//! [`cwd`]: crate::fs::cwd
-
-use crate::fd::OwnedFd;
-use crate::ffi::{CStr, CString};
-#[cfg(not(solarish))]
-use crate::fs::Access;
-#[cfg(apple)]
-use crate::fs::CloneFlags;
-#[cfg(not(any(apple, target_os = "wasi")))]
-use crate::fs::FileType;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use crate::fs::RenameFlags;
-use crate::fs::{AtFlags, Mode, OFlags, Stat, Timestamps};
-use crate::path::SMALL_PATH_BUFFER_SIZE;
-#[cfg(not(target_os = "wasi"))]
-use crate::process::{Gid, Uid};
-use crate::{backend, io, path};
-use alloc::vec::Vec;
-use backend::fd::{AsFd, BorrowedFd};
-use backend::time::types::Nsecs;
-
-pub use backend::fs::types::{Dev, RawMode};
-
-/// `UTIME_NOW` for use with [`utimensat`].
-///
-/// [`utimensat`]: crate::fs::utimensat
-#[cfg(not(target_os = "redox"))]
-pub const UTIME_NOW: Nsecs = backend::c::UTIME_NOW as Nsecs;
-
-/// `UTIME_OMIT` for use with [`utimensat`].
-///
-/// [`utimensat`]: crate::fs::utimensat
-#[cfg(not(target_os = "redox"))]
-pub const UTIME_OMIT: Nsecs = backend::c::UTIME_OMIT as Nsecs;
-
-/// `openat(dirfd, path, oflags, mode)`—Opens a file.
-///
-/// POSIX guarantees that `openat` will use the lowest unused file descriptor,
-/// however it is not safe in general to rely on this, as file descriptors may
-/// be unexpectedly allocated on other threads or in libraries.
-///
-/// The `Mode` argument is only significant when creating a file.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/openat.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/open.2.html
-#[inline]
-pub fn openat<P: path::Arg, Fd: AsFd>(
- dirfd: Fd,
- path: P,
- oflags: OFlags,
- create_mode: Mode,
-) -> io::Result<OwnedFd> {
- path.into_with_c_str(|path| {
- backend::fs::syscalls::openat(dirfd.as_fd(), path, oflags, create_mode)
- })
-}
-
-/// `readlinkat(fd, path)`—Reads the contents of a symlink.
-///
-/// If `reuse` is non-empty, reuse its buffer to store the result if possible.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/readlinkat.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/readlinkat.2.html
-#[inline]
-pub fn readlinkat<P: path::Arg, Fd: AsFd, B: Into<Vec<u8>>>(
- dirfd: Fd,
- path: P,
- reuse: B,
-) -> io::Result<CString> {
- path.into_with_c_str(|path| _readlinkat(dirfd.as_fd(), path, reuse.into()))
-}
-
-fn _readlinkat(dirfd: BorrowedFd<'_>, path: &CStr, mut buffer: Vec<u8>) -> io::Result<CString> {
- // This code would benefit from having a better way to read into
- // uninitialized memory, but that requires `unsafe`.
- buffer.clear();
- buffer.reserve(SMALL_PATH_BUFFER_SIZE);
- buffer.resize(buffer.capacity(), 0_u8);
-
- loop {
- let nread = backend::fs::syscalls::readlinkat(dirfd.as_fd(), path, &mut buffer)?;
-
- let nread = nread as usize;
- assert!(nread <= buffer.len());
- if nread < buffer.len() {
- buffer.resize(nread, 0_u8);
- return Ok(CString::new(buffer).unwrap());
- }
- buffer.reserve(1); // use `Vec` reallocation strategy to grow capacity exponentially
- buffer.resize(buffer.capacity(), 0_u8);
- }
-}
-
-/// `mkdirat(fd, path, mode)`—Creates a directory.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/mkdirat.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/mkdirat.2.html
-#[inline]
-pub fn mkdirat<P: path::Arg, Fd: AsFd>(dirfd: Fd, path: P, mode: Mode) -> io::Result<()> {
- path.into_with_c_str(|path| backend::fs::syscalls::mkdirat(dirfd.as_fd(), path, mode))
-}
-
-/// `linkat(old_dirfd, old_path, new_dirfd, new_path, flags)`—Creates a hard
-/// link.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/linkat.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/linkat.2.html
-#[inline]
-pub fn linkat<P: path::Arg, Q: path::Arg, PFd: AsFd, QFd: AsFd>(
- old_dirfd: PFd,
- old_path: P,
- new_dirfd: QFd,
- new_path: Q,
- flags: AtFlags,
-) -> io::Result<()> {
- old_path.into_with_c_str(|old_path| {
- new_path.into_with_c_str(|new_path| {
- backend::fs::syscalls::linkat(
- old_dirfd.as_fd(),
- old_path,
- new_dirfd.as_fd(),
- new_path,
- flags,
- )
- })
- })
-}
-
-/// `unlinkat(fd, path, flags)`—Unlinks a file or remove a directory.
-///
-/// With the [`REMOVEDIR`] flag, this removes a directory. This is in place
-/// of a `rmdirat` function.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [`REMOVEDIR`]: AtFlags::REMOVEDIR
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/unlinkat.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/unlinkat.2.html
-#[inline]
-pub fn unlinkat<P: path::Arg, Fd: AsFd>(dirfd: Fd, path: P, flags: AtFlags) -> io::Result<()> {
- path.into_with_c_str(|path| backend::fs::syscalls::unlinkat(dirfd.as_fd(), path, flags))
-}
-
-/// `renameat(old_dirfd, old_path, new_dirfd, new_path)`—Renames a file or
-/// directory.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/renameat.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/renameat.2.html
-#[inline]
-pub fn renameat<P: path::Arg, Q: path::Arg, PFd: AsFd, QFd: AsFd>(
- old_dirfd: PFd,
- old_path: P,
- new_dirfd: QFd,
- new_path: Q,
-) -> io::Result<()> {
- old_path.into_with_c_str(|old_path| {
- new_path.into_with_c_str(|new_path| {
- backend::fs::syscalls::renameat(
- old_dirfd.as_fd(),
- old_path,
- new_dirfd.as_fd(),
- new_path,
- )
- })
- })
-}
-
-/// `renameat2(old_dirfd, old_path, new_dirfd, new_path, flags)`—Renames a
-/// file or directory.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/renameat2.2.html
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-#[doc(alias = "renameat2")]
-pub fn renameat_with<P: path::Arg, Q: path::Arg, PFd: AsFd, QFd: AsFd>(
- old_dirfd: PFd,
- old_path: P,
- new_dirfd: QFd,
- new_path: Q,
- flags: RenameFlags,
-) -> io::Result<()> {
- old_path.into_with_c_str(|old_path| {
- new_path.into_with_c_str(|new_path| {
- backend::fs::syscalls::renameat2(
- old_dirfd.as_fd(),
- old_path,
- new_dirfd.as_fd(),
- new_path,
- flags,
- )
- })
- })
-}
-
-/// `symlinkat(old_path, new_dirfd, new_path)`—Creates a symlink.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/symlinkat.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/symlinkat.2.html
-#[inline]
-pub fn symlinkat<P: path::Arg, Q: path::Arg, Fd: AsFd>(
- old_path: P,
- new_dirfd: Fd,
- new_path: Q,
-) -> io::Result<()> {
- old_path.into_with_c_str(|old_path| {
- new_path.into_with_c_str(|new_path| {
- backend::fs::syscalls::symlinkat(old_path, new_dirfd.as_fd(), new_path)
- })
- })
-}
-
-/// `fstatat(dirfd, path, flags)`—Queries metadata for a file or directory.
-///
-/// [`Mode::from_raw_mode`] and [`FileType::from_raw_mode`] may be used to
-/// interpret the `st_mode` field.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/fstatat.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/fstatat.2.html
-/// [`Mode::from_raw_mode`]: crate::fs::Mode::from_raw_mode
-/// [`FileType::from_raw_mode`]: crate::fs::FileType::from_raw_mode
-#[inline]
-#[doc(alias = "fstatat")]
-pub fn statat<P: path::Arg, Fd: AsFd>(dirfd: Fd, path: P, flags: AtFlags) -> io::Result<Stat> {
- path.into_with_c_str(|path| backend::fs::syscalls::statat(dirfd.as_fd(), path, flags))
-}
-
-/// `faccessat(dirfd, path, access, flags)`—Tests permissions for a file or
-/// directory.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/faccessat.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/faccessat.2.html
-#[cfg(not(solarish))]
-#[inline]
-#[doc(alias = "faccessat")]
-pub fn accessat<P: path::Arg, Fd: AsFd>(
- dirfd: Fd,
- path: P,
- access: Access,
- flags: AtFlags,
-) -> io::Result<()> {
- path.into_with_c_str(|path| backend::fs::syscalls::accessat(dirfd.as_fd(), path, access, flags))
-}
-
-/// `utimensat(dirfd, path, times, flags)`—Sets file or directory timestamps.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/utimensat.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/utimensat.2.html
-#[inline]
-pub fn utimensat<P: path::Arg, Fd: AsFd>(
- dirfd: Fd,
- path: P,
- times: &Timestamps,
- flags: AtFlags,
-) -> io::Result<()> {
- path.into_with_c_str(|path| backend::fs::syscalls::utimensat(dirfd.as_fd(), path, times, flags))
-}
-
-/// `fchmodat(dirfd, path, mode, 0)`—Sets file or directory permissions.
-///
-/// See `fchmodat_with` for a version that does take flags.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/fchmodat.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/fchmodat.2.html
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-#[doc(alias = "fchmodat")]
-pub fn chmodat<P: path::Arg, Fd: AsFd>(dirfd: Fd, path: P, mode: Mode) -> io::Result<()> {
- chmodat_with(dirfd, path, mode, AtFlags::empty())
-}
-
-/// `fchmodat(dirfd, path, mode, flags)`—Sets file or directory permissions.
-///
-/// Platform support for flags varies widely, for example on Linux
-/// [`AtFlags::SYMLINK_NOFOLLOW`] is not implemented and therefore
-/// [`io::Errno::OPNOTSUPP`] will be returned.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/fchmodat.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/fchmodat.2.html
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-#[doc(alias = "fchmodat_with")]
-pub fn chmodat_with<P: path::Arg, Fd: AsFd>(
- dirfd: Fd,
- path: P,
- mode: Mode,
- flags: AtFlags,
-) -> io::Result<()> {
- path.into_with_c_str(|path| backend::fs::syscalls::chmodat(dirfd.as_fd(), path, mode, flags))
-}
-
-/// `fclonefileat(src, dst_dir, dst, flags)`—Efficiently copies between files.
-///
-/// # References
-/// - [Apple]
-///
-/// [Apple]: https://opensource.apple.com/source/xnu/xnu-3789.21.4/bsd/man/man2/clonefile.2.auto.html
-#[cfg(apple)]
-#[inline]
-pub fn fclonefileat<Fd: AsFd, DstFd: AsFd, P: path::Arg>(
- src: Fd,
- dst_dir: DstFd,
- dst: P,
- flags: CloneFlags,
-) -> io::Result<()> {
- dst.into_with_c_str(|dst| {
- backend::fs::syscalls::fclonefileat(src.as_fd(), dst_dir.as_fd(), dst, flags)
- })
-}
-
-/// `mknodat(dirfd, path, mode, dev)`—Creates special or normal files.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/mknodat.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/mknodat.2.html
-#[cfg(not(any(apple, target_os = "wasi")))]
-#[inline]
-pub fn mknodat<P: path::Arg, Fd: AsFd>(
- dirfd: Fd,
- path: P,
- file_type: FileType,
- mode: Mode,
- dev: Dev,
-) -> io::Result<()> {
- path.into_with_c_str(|path| {
- backend::fs::syscalls::mknodat(dirfd.as_fd(), path, file_type, mode, dev)
- })
-}
-
-/// `fchownat(dirfd, path, owner, group, flags)`—Sets file or directory
-/// ownership.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/fchownat.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/fchownat.2.html
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-#[doc(alias = "fchownat")]
-pub fn chownat<P: path::Arg, Fd: AsFd>(
- dirfd: Fd,
- path: P,
- owner: Option<Uid>,
- group: Option<Gid>,
- flags: AtFlags,
-) -> io::Result<()> {
- path.into_with_c_str(|path| {
- backend::fs::syscalls::chownat(dirfd.as_fd(), path, owner, group, flags)
- })
-}
diff --git a/vendor/rustix-0.37.6/src/fs/constants.rs b/vendor/rustix-0.37.6/src/fs/constants.rs
deleted file mode 100644
index c8e261e66..000000000
--- a/vendor/rustix-0.37.6/src/fs/constants.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-//! Filesystem API constants, translated into `bitflags` constants.
-
-use crate::backend;
-
-pub use crate::io::FdFlags;
-pub use backend::fs::types::{Access, Mode, OFlags};
-
-#[cfg(not(target_os = "redox"))]
-pub use backend::fs::types::AtFlags;
-
-#[cfg(apple)]
-pub use backend::fs::types::{CloneFlags, CopyfileFlags};
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub use backend::fs::types::*;
-
-#[cfg(not(target_os = "redox"))]
-pub use backend::fs::types::Dev;
-
-pub use backend::time::types::{Nsecs, Secs, Timespec};
diff --git a/vendor/rustix-0.37.6/src/fs/copy_file_range.rs b/vendor/rustix-0.37.6/src/fs/copy_file_range.rs
deleted file mode 100644
index b927d572b..000000000
--- a/vendor/rustix-0.37.6/src/fs/copy_file_range.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-use crate::{backend, io};
-use backend::fd::AsFd;
-
-/// `copy_file_range(fd_in, off_in, fd_out, off_out, len, 0)`—Copies data
-/// from one file to another.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/copy_file_range.2.html
-#[inline]
-pub fn copy_file_range<InFd: AsFd, OutFd: AsFd>(
- fd_in: InFd,
- off_in: Option<&mut u64>,
- fd_out: OutFd,
- off_out: Option<&mut u64>,
- len: usize,
-) -> io::Result<usize> {
- backend::fs::syscalls::copy_file_range(fd_in.as_fd(), off_in, fd_out.as_fd(), off_out, len)
-}
diff --git a/vendor/rustix-0.37.6/src/fs/cwd.rs b/vendor/rustix-0.37.6/src/fs/cwd.rs
deleted file mode 100644
index 0abd75df6..000000000
--- a/vendor/rustix-0.37.6/src/fs/cwd.rs
+++ /dev/null
@@ -1,32 +0,0 @@
-//! The `cwd` function, representing the current working directory.
-//!
-//! # Safety
-//!
-//! This file uses `AT_FDCWD`, which is a raw file descriptor, but which is
-//! always valid.
-
-#![allow(unsafe_code)]
-
-use crate::backend;
-use backend::fd::{BorrowedFd, RawFd};
-
-/// `AT_FDCWD`—Returns a handle representing the current working directory.
-///
-/// This returns a file descriptor which refers to the process current
-/// directory which can be used as the directory argument in `*at`
-/// functions such as [`openat`].
-///
-/// # References
-/// - [POSIX]
-///
-/// [`openat`]: crate::fs::openat
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/fcntl.h.html
-#[inline]
-#[doc(alias = "AT_FDCWD")]
-pub const fn cwd() -> BorrowedFd<'static> {
- let at_fdcwd = backend::io::types::AT_FDCWD as RawFd;
-
- // SAFETY: `AT_FDCWD` is a reserved value that is never dynamically
- // allocated, so it'll remain valid for the duration of `'static`.
- unsafe { BorrowedFd::<'static>::borrow_raw(at_fdcwd) }
-}
diff --git a/vendor/rustix-0.37.6/src/fs/dir.rs b/vendor/rustix-0.37.6/src/fs/dir.rs
deleted file mode 100644
index b3e1e3b99..000000000
--- a/vendor/rustix-0.37.6/src/fs/dir.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-//! `Dir` and `DirEntry`.
-
-use crate::backend;
-
-pub use backend::fs::dir::{Dir, DirEntry};
diff --git a/vendor/rustix-0.37.6/src/fs/fadvise.rs b/vendor/rustix-0.37.6/src/fs/fadvise.rs
deleted file mode 100644
index 5bc3a588a..000000000
--- a/vendor/rustix-0.37.6/src/fs/fadvise.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-use crate::{backend, io};
-use backend::fd::AsFd;
-
-pub use backend::fs::types::Advice;
-
-/// `posix_fadvise(fd, offset, len, advice)`—Declares an expected access
-/// pattern for a file.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_fadvise.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/posix_fadvise.2.html
-#[inline]
-#[doc(alias = "posix_fadvise")]
-pub fn fadvise<Fd: AsFd>(fd: Fd, offset: u64, len: u64, advice: Advice) -> io::Result<()> {
- backend::fs::syscalls::fadvise(fd.as_fd(), offset, len, advice)
-}
diff --git a/vendor/rustix-0.37.6/src/fs/fcntl.rs b/vendor/rustix-0.37.6/src/fs/fcntl.rs
deleted file mode 100644
index 0f557ef7f..000000000
--- a/vendor/rustix-0.37.6/src/fs/fcntl.rs
+++ /dev/null
@@ -1,123 +0,0 @@
-//! The Unix `fcntl` function is effectively lots of different functions
-//! hidden behind a single dynamic dispatch interface. In order to provide
-//! a type-safe API, rustix makes them all separate functions so that they
-//! can have dedicated static type signatures.
-
-#[cfg(not(any(
- target_os = "emscripten",
- target_os = "fuchsia",
- target_os = "redox",
- target_os = "wasi"
-)))]
-use crate::fs::FlockOperation;
-use crate::{backend, io};
-use backend::fd::AsFd;
-use backend::fs::types::OFlags;
-
-// These `fcntl` functions like in the `io` module because they're not specific
-// to files, directories, or memfd objects. We re-export them here in the `fs`
-// module because the other the `fcntl` functions are here.
-#[cfg(not(target_os = "wasi"))]
-pub use crate::io::fcntl_dupfd_cloexec;
-pub use crate::io::{fcntl_getfd, fcntl_setfd};
-
-/// `fcntl(fd, F_GETFL)`—Returns a file descriptor's access mode and status.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/fcntl.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/fcntl.2.html
-#[inline]
-#[doc(alias = "F_GETFL")]
-pub fn fcntl_getfl<Fd: AsFd>(fd: Fd) -> io::Result<OFlags> {
- backend::fs::syscalls::fcntl_getfl(fd.as_fd())
-}
-
-/// `fcntl(fd, F_SETFL, flags)`—Sets a file descriptor's status.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/fcntl.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/fcntl.2.html
-#[inline]
-#[doc(alias = "F_SETFL")]
-pub fn fcntl_setfl<Fd: AsFd>(fd: Fd, flags: OFlags) -> io::Result<()> {
- backend::fs::syscalls::fcntl_setfl(fd.as_fd(), flags)
-}
-
-/// `fcntl(fd, F_GET_SEALS)`
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/fcntl.2.html
-#[cfg(any(
- target_os = "android",
- target_os = "freebsd",
- target_os = "fuchsia",
- target_os = "linux",
-))]
-#[inline]
-#[doc(alias = "F_GET_SEALS")]
-pub fn fcntl_get_seals<Fd: AsFd>(fd: Fd) -> io::Result<SealFlags> {
- backend::fs::syscalls::fcntl_get_seals(fd.as_fd())
-}
-
-#[cfg(any(
- target_os = "android",
- target_os = "freebsd",
- target_os = "fuchsia",
- target_os = "linux",
-))]
-pub use backend::fs::types::SealFlags;
-
-/// `fcntl(fd, F_ADD_SEALS)`
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/fcntl.2.html
-#[cfg(any(
- target_os = "android",
- target_os = "freebsd",
- target_os = "fuchsia",
- target_os = "linux",
-))]
-#[inline]
-#[doc(alias = "F_ADD_SEALS")]
-pub fn fcntl_add_seals<Fd: AsFd>(fd: Fd, seals: SealFlags) -> io::Result<()> {
- backend::fs::syscalls::fcntl_add_seals(fd.as_fd(), seals)
-}
-
-/// `fcntl(fd, F_SETLK)`—Acquire or release an `fcntl`-style lock.
-///
-/// This function doesn't currently have an offset or len; it currently always
-/// sets the `l_len` field to 0, which is a special case that means the entire
-/// file should be locked.
-///
-/// Unlike `flock`-style locks, `fcntl`-style locks are process-associated,
-/// meaning that they don't guard against being acquired by two threads in
-/// the same process.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/fcntl.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/fcntl.2.html
-#[cfg(not(any(
- target_os = "emscripten",
- target_os = "fuchsia",
- target_os = "redox",
- target_os = "wasi"
-)))]
-#[inline]
-#[doc(alias = "F_SETLK")]
-#[doc(alias = "F_SETLKW")]
-pub fn fcntl_lock<Fd: AsFd>(fd: Fd, operation: FlockOperation) -> io::Result<()> {
- backend::fs::syscalls::fcntl_lock(fd.as_fd(), operation)
-}
diff --git a/vendor/rustix-0.37.6/src/fs/fcntl_apple.rs b/vendor/rustix-0.37.6/src/fs/fcntl_apple.rs
deleted file mode 100644
index 6d624ee47..000000000
--- a/vendor/rustix-0.37.6/src/fs/fcntl_apple.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-use crate::{backend, io};
-use backend::fd::AsFd;
-
-/// `fcntl(fd, F_RDADVISE, radvisory { offset, len })`
-///
-/// # References
-/// - [Apple]
-///
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/fcntl.2.html
-#[inline]
-pub fn fcntl_rdadvise<Fd: AsFd>(fd: Fd, offset: u64, len: u64) -> io::Result<()> {
- backend::fs::syscalls::fcntl_rdadvise(fd.as_fd(), offset, len)
-}
-
-/// `fcntl(fd, F_FULLFSYNC)`
-///
-/// # References
-/// - [Apple]
-///
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/fcntl.2.html
-#[inline]
-pub fn fcntl_fullfsync<Fd: AsFd>(fd: Fd) -> io::Result<()> {
- backend::fs::syscalls::fcntl_fullfsync(fd.as_fd())
-}
diff --git a/vendor/rustix-0.37.6/src/fs/fcopyfile.rs b/vendor/rustix-0.37.6/src/fs/fcopyfile.rs
deleted file mode 100644
index d8931733f..000000000
--- a/vendor/rustix-0.37.6/src/fs/fcopyfile.rs
+++ /dev/null
@@ -1,90 +0,0 @@
-use crate::fs::CopyfileFlags;
-use crate::{backend, io};
-use backend::fd::AsFd;
-
-/// `copyfile_state_t`
-pub use backend::fs::types::copyfile_state_t;
-
-/// `fcopyfile(from, to, state, flags)`
-///
-/// # Safety
-///
-/// The `state` operand must be allocated with `copyfile_state_alloc` and not
-/// yet freed with `copyfile_state_free`.
-///
-/// # References
-/// - [Apple]
-///
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/fcopyfile.3.html
-#[inline]
-pub unsafe fn fcopyfile<FromFd: AsFd, ToFd: AsFd>(
- from: FromFd,
- to: ToFd,
- state: copyfile_state_t,
- flags: CopyfileFlags,
-) -> io::Result<()> {
- backend::fs::syscalls::fcopyfile(from.as_fd(), to.as_fd(), state, flags)
-}
-
-/// `copyfile_state_alloc()`
-///
-/// # References
-/// - [Apple]
-///
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/fcopyfile.3.html
-#[inline]
-pub fn copyfile_state_alloc() -> io::Result<copyfile_state_t> {
- backend::fs::syscalls::copyfile_state_alloc()
-}
-
-/// `copyfile_state_free(state)`
-///
-/// # Safety
-///
-/// The `state` operand must be allocated with `copyfile_state_alloc` and not
-/// yet freed with `copyfile_state_free`.
-///
-/// # References
-/// - [Apple]
-///
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/fcopyfile.3.html
-#[inline]
-pub unsafe fn copyfile_state_free(state: copyfile_state_t) -> io::Result<()> {
- backend::fs::syscalls::copyfile_state_free(state)
-}
-
-/// `copyfile_state_get(state, COPYFILE_STATE_COPIED)`
-///
-/// # Safety
-///
-/// The `state` operand must be allocated with `copyfile_state_alloc` and not
-/// yet freed with `copyfile_state_free`.
-///
-/// # References
-/// - [Apple]
-///
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/fcopyfile.3.html
-#[inline]
-pub unsafe fn copyfile_state_get_copied(state: copyfile_state_t) -> io::Result<u64> {
- backend::fs::syscalls::copyfile_state_get_copied(state)
-}
-
-/// `copyfile_state_get(state, flags, dst)`
-///
-/// # Safety
-///
-/// The `state` operand must be allocated with `copyfile_state_alloc` and not
-/// yet freed with `copyfile_state_free`.
-///
-/// # References
-/// - [Apple]
-///
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/fcopyfile.3.html
-#[inline]
-pub unsafe fn copyfile_state_get(
- state: copyfile_state_t,
- flag: u32,
- dst: *mut core::ffi::c_void,
-) -> io::Result<()> {
- backend::fs::syscalls::copyfile_state_get(state, flag, dst)
-}
diff --git a/vendor/rustix-0.37.6/src/fs/fd.rs b/vendor/rustix-0.37.6/src/fs/fd.rs
deleted file mode 100644
index 6ce8410b2..000000000
--- a/vendor/rustix-0.37.6/src/fs/fd.rs
+++ /dev/null
@@ -1,343 +0,0 @@
-//! Functions which operate on file descriptors.
-
-#[cfg(not(target_os = "wasi"))]
-use crate::fs::Mode;
-use crate::io::SeekFrom;
-#[cfg(not(target_os = "wasi"))]
-use crate::process::{Gid, Uid};
-use crate::{backend, io};
-use backend::fd::{AsFd, BorrowedFd};
-
-#[cfg(not(target_os = "wasi"))]
-pub use backend::fs::types::FlockOperation;
-
-#[cfg(not(any(
- netbsdlike,
- solarish,
- target_os = "aix",
- target_os = "dragonfly",
- target_os = "redox",
-)))]
-pub use backend::fs::types::FallocateFlags;
-
-pub use backend::fs::types::Stat;
-
-#[cfg(not(any(
- solarish,
- target_os = "haiku",
- target_os = "netbsd",
- target_os = "redox",
- target_os = "wasi",
-)))]
-pub use backend::fs::types::StatFs;
-
-#[cfg(not(any(solarish, target_os = "haiku", target_os = "redox", target_os = "wasi")))]
-pub use backend::fs::types::{StatVfs, StatVfsMountFlags};
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub use backend::fs::types::FsWord;
-
-/// Timestamps used by [`utimensat`] and [`futimens`].
-///
-/// [`utimensat`]: crate::fs::utimensat
-/// [`futimens`]: crate::fs::futimens
-// This is `repr(C)` and specifically laid out to match the representation used
-// by `utimensat` and `futimens`, which expect 2-element arrays of timestamps.
-#[repr(C)]
-#[derive(Clone, Debug)]
-pub struct Timestamps {
- /// The timestamp of the last access to a filesystem object.
- pub last_access: crate::fs::Timespec,
-
- /// The timestamp of the last modification of a filesystem object.
- pub last_modification: crate::fs::Timespec,
-}
-
-/// The filesystem magic number for procfs.
-///
-/// See [the `fstatfs` man page] for more information.
-///
-/// [the `fstatfs` man page]: https://man7.org/linux/man-pages/man2/fstatfs.2.html#DESCRIPTION
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub const PROC_SUPER_MAGIC: FsWord = backend::c::PROC_SUPER_MAGIC as FsWord;
-
-/// The filesystem magic number for NFS.
-///
-/// See [the `fstatfs` man page] for more information.
-///
-/// [the `fstatfs` man page]: https://man7.org/linux/man-pages/man2/fstatfs.2.html#DESCRIPTION
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub const NFS_SUPER_MAGIC: FsWord = backend::c::NFS_SUPER_MAGIC as FsWord;
-
-/// `lseek(fd, offset, whence)`—Repositions a file descriptor within a file.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/lseek.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/lseek.2.html
-#[inline]
-#[doc(alias = "lseek")]
-pub fn seek<Fd: AsFd>(fd: Fd, pos: SeekFrom) -> io::Result<u64> {
- backend::fs::syscalls::seek(fd.as_fd(), pos)
-}
-
-/// `lseek(fd, 0, SEEK_CUR)`—Returns the current position within a file.
-///
-/// Return the current position of the file descriptor. This is a subset of
-/// the functionality of `seek`, but this interface makes it easier for users
-/// to declare their intent not to mutate any state.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/lseek.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/lseek.2.html
-#[inline]
-#[doc(alias = "lseek")]
-pub fn tell<Fd: AsFd>(fd: Fd) -> io::Result<u64> {
- backend::fs::syscalls::tell(fd.as_fd())
-}
-
-/// `fchmod(fd)`—Sets open file or directory permissions.
-///
-/// This implementation does not support `O_PATH` file descriptors, even on
-/// platforms where the host libc emulates it.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/fchmod.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/fchmod.2.html
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-pub fn fchmod<Fd: AsFd>(fd: Fd, mode: Mode) -> io::Result<()> {
- backend::fs::syscalls::fchmod(fd.as_fd(), mode)
-}
-
-/// `fchown(fd)`—Sets open file or directory ownership.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/fchown.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/fchown.2.html
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-pub fn fchown<Fd: AsFd>(fd: Fd, owner: Option<Uid>, group: Option<Gid>) -> io::Result<()> {
- backend::fs::syscalls::fchown(fd.as_fd(), owner, group)
-}
-
-/// `fstat(fd)`—Queries metadata for an open file or directory.
-///
-/// [`Mode::from_raw_mode`] and [`FileType::from_raw_mode`] may be used to
-/// interpret the `st_mode` field.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/fstat.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/fstat.2.html
-/// [`Mode::from_raw_mode`]: crate::fs::Mode::from_raw_mode
-/// [`FileType::from_raw_mode`]: crate::fs::FileType::from_raw_mode
-#[inline]
-pub fn fstat<Fd: AsFd>(fd: Fd) -> io::Result<Stat> {
- backend::fs::syscalls::fstat(fd.as_fd())
-}
-
-/// `fstatfs(fd)`—Queries filesystem statistics for an open file or directory.
-///
-/// Compared to [`fstatvfs`], this function often provides more information,
-/// though it's less portable.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/fstatfs.2.html
-#[cfg(not(any(
- solarish,
- target_os = "haiku",
- target_os = "netbsd",
- target_os = "redox",
- target_os = "wasi",
-)))]
-#[inline]
-pub fn fstatfs<Fd: AsFd>(fd: Fd) -> io::Result<StatFs> {
- backend::fs::syscalls::fstatfs(fd.as_fd())
-}
-
-/// `fstatvfs(fd)`—Queries filesystem statistics for an open file or
-/// directory, POSIX version.
-///
-/// Compared to [`fstatfs`], this function often provides less information,
-/// but it is more portable. But even so, filesystems are very diverse and not
-/// all the fields are meaningful for every filesystem. And `f_fsid` doesn't
-/// seem to have a clear meaning anywhere.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/fstatvfs.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/fstatvfs.2.html
-#[cfg(not(any(solarish, target_os = "haiku", target_os = "redox", target_os = "wasi")))]
-#[inline]
-pub fn fstatvfs<Fd: AsFd>(fd: Fd) -> io::Result<StatVfs> {
- backend::fs::syscalls::fstatvfs(fd.as_fd())
-}
-
-/// `futimens(fd, times)`—Sets timestamps for an open file or directory.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/futimens.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/utimensat.2.html
-#[inline]
-pub fn futimens<Fd: AsFd>(fd: Fd, times: &Timestamps) -> io::Result<()> {
- backend::fs::syscalls::futimens(fd.as_fd(), times)
-}
-
-/// `fallocate(fd, mode, offset, len)`—Adjusts file allocation.
-///
-/// This is a more general form of `posix_fallocate`, adding a `mode` argument
-/// which modifies the behavior. On platforms which only support
-/// `posix_fallocate` and not the more general form, no `FallocateFlags` values
-/// are defined so it will always be empty.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux `fallocate`]
-/// - [Linux `posix_fallocate`]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_fallocate.html
-/// [Linux `fallocate`]: https://man7.org/linux/man-pages/man2/fallocate.2.html
-/// [Linux `posix_fallocate`]: https://man7.org/linux/man-pages/man3/posix_fallocate.3.html
-#[cfg(not(any(
- netbsdlike,
- solarish,
- target_os = "aix",
- target_os = "dragonfly",
- target_os = "redox",
-)))] // not implemented in libc for netbsd yet
-#[inline]
-#[doc(alias = "posix_fallocate")]
-pub fn fallocate<Fd: AsFd>(fd: Fd, mode: FallocateFlags, offset: u64, len: u64) -> io::Result<()> {
- backend::fs::syscalls::fallocate(fd.as_fd(), mode, offset, len)
-}
-
-/// `fcntl(fd, F_GETFL) & O_ACCMODE`
-///
-/// Returns a pair of booleans indicating whether the file descriptor is
-/// readable and/or writable, respectively. This is only reliable on files; for
-/// example, it doesn't reflect whether sockets have been shut down; for
-/// general I/O handle support, use [`io::is_read_write`].
-#[inline]
-pub fn is_file_read_write<Fd: AsFd>(fd: Fd) -> io::Result<(bool, bool)> {
- _is_file_read_write(fd.as_fd())
-}
-
-pub(crate) fn _is_file_read_write(fd: BorrowedFd<'_>) -> io::Result<(bool, bool)> {
- let mode = backend::fs::syscalls::fcntl_getfl(fd)?;
-
- // Check for `O_PATH`.
- #[cfg(any(
- target_os = "android",
- target_os = "fuchsia",
- target_os = "linux",
- target_os = "emscripten",
- ))]
- if mode.contains(crate::fs::OFlags::PATH) {
- return Ok((false, false));
- }
-
- // Use `RWMODE` rather than `ACCMODE` as `ACCMODE` may include `O_PATH`.
- // We handled `O_PATH` above.
- match mode & crate::fs::OFlags::RWMODE {
- crate::fs::OFlags::RDONLY => Ok((true, false)),
- crate::fs::OFlags::RDWR => Ok((true, true)),
- crate::fs::OFlags::WRONLY => Ok((false, true)),
- _ => unreachable!(),
- }
-}
-
-/// `fsync(fd)`—Ensures that file data and metadata is written to the
-/// underlying storage device.
-///
-/// On iOS and macOS this isn't sufficient to ensure that data has reached
-/// persistent storage; use [`fcntl_fullfsync`] to ensure that.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/fsync.2.html
-/// [`fcntl_fullfsync`]: https://docs.rs/rustix/*/x86_64-apple-darwin/rustix/fs/fn.fcntl_fullfsync.html
-#[inline]
-pub fn fsync<Fd: AsFd>(fd: Fd) -> io::Result<()> {
- backend::fs::syscalls::fsync(fd.as_fd())
-}
-
-/// `fdatasync(fd)`—Ensures that file data is written to the underlying
-/// storage device.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/fdatasync.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/fdatasync.2.html
-#[cfg(not(any(
- apple,
- target_os = "dragonfly",
- target_os = "haiku",
- target_os = "redox",
-)))]
-#[inline]
-pub fn fdatasync<Fd: AsFd>(fd: Fd) -> io::Result<()> {
- backend::fs::syscalls::fdatasync(fd.as_fd())
-}
-
-/// `ftruncate(fd, length)`—Sets the length of a file.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/ftruncate.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/ftruncate.2.html
-#[inline]
-pub fn ftruncate<Fd: AsFd>(fd: Fd, length: u64) -> io::Result<()> {
- backend::fs::syscalls::ftruncate(fd.as_fd(), length)
-}
-
-/// `flock(fd, operation)`—Acquire or release an advisory lock on an open file.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/flock.2.html
-#[cfg(not(any(target_os = "solaris", target_os = "wasi")))]
-#[inline]
-pub fn flock<Fd: AsFd>(fd: Fd, operation: FlockOperation) -> io::Result<()> {
- backend::fs::syscalls::flock(fd.as_fd(), operation)
-}
-
-/// `syncfs(fd)`—Flush cached filesystem data.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/syncfs.2.html
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub fn syncfs<Fd: AsFd>(fd: Fd) -> io::Result<()> {
- backend::fs::syscalls::syncfs(fd.as_fd())
-}
diff --git a/vendor/rustix-0.37.6/src/fs/file_type.rs b/vendor/rustix-0.37.6/src/fs/file_type.rs
deleted file mode 100644
index cf8fc1d38..000000000
--- a/vendor/rustix-0.37.6/src/fs/file_type.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-use crate::backend;
-
-/// `S_IF*` constants.
-pub use backend::fs::types::FileType;
diff --git a/vendor/rustix-0.37.6/src/fs/getpath.rs b/vendor/rustix-0.37.6/src/fs/getpath.rs
deleted file mode 100644
index 8e14ff2f2..000000000
--- a/vendor/rustix-0.37.6/src/fs/getpath.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-use crate::ffi::CString;
-use crate::{backend, io};
-use backend::fd::AsFd;
-
-/// `fcntl(fd, F_GETPATH)`
-///
-/// # References
-/// - [Apple]
-///
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/fcntl.2.html
-#[inline]
-pub fn getpath<Fd: AsFd>(fd: Fd) -> io::Result<CString> {
- backend::fs::syscalls::getpath(fd.as_fd())
-}
diff --git a/vendor/rustix-0.37.6/src/fs/makedev.rs b/vendor/rustix-0.37.6/src/fs/makedev.rs
deleted file mode 100644
index 36aef6d66..000000000
--- a/vendor/rustix-0.37.6/src/fs/makedev.rs
+++ /dev/null
@@ -1,37 +0,0 @@
-use crate::backend;
-use crate::fs::Dev;
-
-/// `makedev(maj, min)`
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man3/makedev.3.html
-#[inline]
-pub fn makedev(maj: u32, min: u32) -> Dev {
- backend::fs::makedev::makedev(maj, min)
-}
-
-/// `minor(dev)`
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man3/minor.3.html
-#[cfg(not(bsd))]
-#[inline]
-pub fn minor(dev: Dev) -> u32 {
- backend::fs::makedev::minor(dev)
-}
-
-/// `major(dev)`
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man3/major.3.html
-#[cfg(not(bsd))]
-#[inline]
-pub fn major(dev: Dev) -> u32 {
- backend::fs::makedev::major(dev)
-}
diff --git a/vendor/rustix-0.37.6/src/fs/memfd_create.rs b/vendor/rustix-0.37.6/src/fs/memfd_create.rs
deleted file mode 100644
index dad964777..000000000
--- a/vendor/rustix-0.37.6/src/fs/memfd_create.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-use crate::fd::OwnedFd;
-use crate::{backend, io, path};
-
-pub use backend::fs::types::MemfdFlags;
-
-/// `memfd_create(path, flags)`
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/memfd_create.2.html
-#[inline]
-pub fn memfd_create<P: path::Arg>(path: P, flags: MemfdFlags) -> io::Result<OwnedFd> {
- path.into_with_c_str(|path| backend::fs::syscalls::memfd_create(path, flags))
-}
diff --git a/vendor/rustix-0.37.6/src/fs/mod.rs b/vendor/rustix-0.37.6/src/fs/mod.rs
deleted file mode 100644
index 9588cebe0..000000000
--- a/vendor/rustix-0.37.6/src/fs/mod.rs
+++ /dev/null
@@ -1,102 +0,0 @@
-//! Filesystem operations.
-
-mod abs;
-#[cfg(not(target_os = "redox"))]
-mod at;
-mod constants;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-mod copy_file_range;
-#[cfg(not(target_os = "redox"))]
-mod cwd;
-#[cfg(not(target_os = "redox"))]
-mod dir;
-#[cfg(not(any(
- apple,
- netbsdlike,
- solarish,
- target_os = "dragonfly",
- target_os = "haiku",
- target_os = "redox",
-)))]
-mod fadvise;
-pub(crate) mod fcntl;
-#[cfg(apple)]
-mod fcntl_apple;
-#[cfg(apple)]
-mod fcopyfile;
-pub(crate) mod fd;
-mod file_type;
-#[cfg(apple)]
-mod getpath;
-#[cfg(not(any(solarish, target_os = "haiku", target_os = "redox", target_os = "wasi")))]
-mod makedev;
-#[cfg(any(target_os = "android", target_os = "freebsd", target_os = "linux"))]
-mod memfd_create;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-mod mount;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-mod openat2;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-mod raw_dir;
-#[cfg(target_os = "linux")]
-mod sendfile;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-mod statx;
-// TODO: Enable `sync` for solarish when upstream is updated.
-#[cfg(not(any(solarish, target_os = "redox", target_os = "wasi")))]
-mod sync;
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub use crate::backend::fs::inotify;
-pub use abs::*;
-#[cfg(not(target_os = "redox"))]
-pub use at::*;
-pub use constants::*;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub use copy_file_range::copy_file_range;
-#[cfg(not(target_os = "redox"))]
-pub use cwd::cwd;
-#[cfg(not(target_os = "redox"))]
-pub use dir::{Dir, DirEntry};
-#[cfg(not(any(
- apple,
- solarish,
- netbsdlike,
- target_os = "dragonfly",
- target_os = "haiku",
- target_os = "redox",
-)))]
-pub use fadvise::{fadvise, Advice};
-pub use fcntl::*;
-#[cfg(apple)]
-pub use fcntl_apple::{fcntl_fullfsync, fcntl_rdadvise};
-#[cfg(apple)]
-pub use fcopyfile::*;
-pub use fd::*;
-pub use file_type::FileType;
-#[cfg(apple)]
-pub use getpath::getpath;
-#[cfg(not(any(solarish, target_os = "haiku", target_os = "redox", target_os = "wasi")))]
-pub use makedev::*;
-#[cfg(any(target_os = "android", target_os = "freebsd", target_os = "linux"))]
-pub use memfd_create::{memfd_create, MemfdFlags};
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub use mount::*;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub use openat2::openat2;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub use raw_dir::{RawDir, RawDirEntry};
-#[cfg(target_os = "linux")]
-pub use sendfile::sendfile;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub use statx::{statx, Statx, StatxFlags, StatxTimestamp};
-#[cfg(not(any(solarish, target_os = "redox", target_os = "wasi")))]
-pub use sync::sync;
-
-/// Re-export types common to POSIX-ish platforms.
-#[cfg(feature = "std")]
-#[cfg(unix)]
-pub use std::os::unix::fs::{DirEntryExt, FileExt, FileTypeExt, MetadataExt, OpenOptionsExt};
-#[cfg(feature = "std")]
-#[cfg(target_os = "wasi")]
-pub use std::os::wasi::fs::{DirEntryExt, FileExt, FileTypeExt, MetadataExt, OpenOptionsExt};
diff --git a/vendor/rustix-0.37.6/src/fs/mount.rs b/vendor/rustix-0.37.6/src/fs/mount.rs
deleted file mode 100644
index 1439b1f32..000000000
--- a/vendor/rustix-0.37.6/src/fs/mount.rs
+++ /dev/null
@@ -1,166 +0,0 @@
-//! Linux `mount`.
-
-use crate::backend::fs::types::{
- InternalMountFlags, MountFlags, MountFlagsArg, MountPropagationFlags, UnmountFlags,
-};
-use crate::{backend, io, path};
-
-/// `mount(source, target, filesystemtype, mountflags, data)`
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/mount.2.html
-#[inline]
-pub fn mount<Source: path::Arg, Target: path::Arg, Fs: path::Arg, Data: path::Arg>(
- source: Source,
- target: Target,
- file_system_type: Fs,
- flags: MountFlags,
- data: Data,
-) -> io::Result<()> {
- source.into_with_c_str(|source| {
- target.into_with_c_str(|target| {
- file_system_type.into_with_c_str(|file_system_type| {
- data.into_with_c_str(|data| {
- backend::fs::syscalls::mount(
- Some(source),
- target,
- Some(file_system_type),
- MountFlagsArg(flags.bits()),
- Some(data),
- )
- })
- })
- })
- })
-}
-
-/// `mount(NULL, target, NULL, MS_REMOUNT | mountflags, data)`
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/mount.2.html
-#[inline]
-#[doc(alias = "mount")]
-pub fn remount<Target: path::Arg, Data: path::Arg>(
- target: Target,
- flags: MountFlags,
- data: Data,
-) -> io::Result<()> {
- target.into_with_c_str(|target| {
- data.into_with_c_str(|data| {
- backend::fs::syscalls::mount(
- None,
- target,
- None,
- MountFlagsArg(InternalMountFlags::REMOUNT.bits() | flags.bits()),
- Some(data),
- )
- })
- })
-}
-
-/// `mount(source, target, NULL, MS_BIND, NULL)`
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/mount.2.html
-#[inline]
-#[doc(alias = "mount")]
-pub fn bind_mount<Source: path::Arg, Target: path::Arg>(
- source: Source,
- target: Target,
-) -> io::Result<()> {
- source.into_with_c_str(|source| {
- target.into_with_c_str(|target| {
- backend::fs::syscalls::mount(
- Some(source),
- target,
- None,
- MountFlagsArg(MountFlags::BIND.bits()),
- None,
- )
- })
- })
-}
-
-/// `mount(source, target, NULL, MS_BIND | MS_REC, NULL)`
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/mount.2.html
-#[inline]
-#[doc(alias = "mount")]
-pub fn recursive_bind_mount<Source: path::Arg, Target: path::Arg>(
- source: Source,
- target: Target,
-) -> io::Result<()> {
- source.into_with_c_str(|source| {
- target.into_with_c_str(|target| {
- backend::fs::syscalls::mount(
- Some(source),
- target,
- None,
- MountFlagsArg(MountFlags::BIND.bits() | MountPropagationFlags::REC.bits()),
- None,
- )
- })
- })
-}
-
-/// `mount(NULL, target, NULL, mountflags, NULL)`
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/mount.2.html
-#[inline]
-#[doc(alias = "mount")]
-pub fn change_mount<Target: path::Arg>(
- target: Target,
- flags: MountPropagationFlags,
-) -> io::Result<()> {
- target.into_with_c_str(|target| {
- backend::fs::syscalls::mount(None, target, None, MountFlagsArg(flags.bits()), None)
- })
-}
-
-/// `mount(source, target, NULL, MS_MOVE, NULL)`
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/mount.2.html
-#[inline]
-#[doc(alias = "mount")]
-pub fn move_mount<Source: path::Arg, Target: path::Arg>(
- source: Source,
- target: Target,
-) -> io::Result<()> {
- source.into_with_c_str(|source| {
- target.into_with_c_str(|target| {
- backend::fs::syscalls::mount(
- Some(source),
- target,
- None,
- MountFlagsArg(InternalMountFlags::MOVE.bits()),
- None,
- )
- })
- })
-}
-
-/// `umount2(target, flags)`
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/umount.2.html
-#[doc(alias = "umount", alias = "umount2")]
-pub fn unmount<Target: path::Arg>(target: Target, flags: UnmountFlags) -> io::Result<()> {
- target.into_with_c_str(|target| backend::fs::syscalls::unmount(target, flags))
-}
diff --git a/vendor/rustix-0.37.6/src/fs/openat2.rs b/vendor/rustix-0.37.6/src/fs/openat2.rs
deleted file mode 100644
index 4918e0034..000000000
--- a/vendor/rustix-0.37.6/src/fs/openat2.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-use crate::fd::OwnedFd;
-use crate::{backend, io, path};
-use backend::fd::AsFd;
-use backend::fs::types::{Mode, OFlags, ResolveFlags};
-
-/// `openat2(dirfd, path, OpenHow { oflags, mode, resolve }, sizeof(OpenHow))`
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/openat2.2.html
-#[inline]
-pub fn openat2<Fd: AsFd, P: path::Arg>(
- dirfd: Fd,
- path: P,
- oflags: OFlags,
- mode: Mode,
- resolve: ResolveFlags,
-) -> io::Result<OwnedFd> {
- path.into_with_c_str(|path| {
- backend::fs::syscalls::openat2(dirfd.as_fd(), path, oflags, mode, resolve)
- })
-}
diff --git a/vendor/rustix-0.37.6/src/fs/raw_dir.rs b/vendor/rustix-0.37.6/src/fs/raw_dir.rs
deleted file mode 100644
index 780ff0e89..000000000
--- a/vendor/rustix-0.37.6/src/fs/raw_dir.rs
+++ /dev/null
@@ -1,224 +0,0 @@
-//! `RawDir` and `RawDirEntry`.
-
-use core::fmt;
-use core::mem::{align_of, MaybeUninit};
-use linux_raw_sys::general::linux_dirent64;
-
-use crate::backend::fs::syscalls::getdents_uninit;
-use crate::fd::AsFd;
-use crate::ffi::CStr;
-use crate::fs::FileType;
-use crate::io;
-
-/// A directory iterator implemented with getdents.
-///
-/// Note: This implementation does not handle growing the buffer. If this
-/// functionality is necessary, you'll need to drop the current iterator,
-/// resize the buffer, and then re-create the iterator. The iterator is
-/// guaranteed to continue where it left off provided the file descriptor isn't
-/// changed. See the example in [`RawDir::new`].
-pub struct RawDir<'buf, Fd: AsFd> {
- fd: Fd,
- buf: &'buf mut [MaybeUninit<u8>],
- initialized: usize,
- offset: usize,
-}
-
-impl<'buf, Fd: AsFd> RawDir<'buf, Fd> {
- /// Create a new iterator from the given file descriptor and buffer.
- ///
- /// Note: the buffer size may be trimmed to accommodate alignment
- /// requirements.
- ///
- /// # Examples
- ///
- /// ## Simple but non-portable
- ///
- /// These examples are non-portable, because file systems may not have a
- /// maximum file name length. If you can make assumptions that bound
- /// this length, then these examples may suffice.
- ///
- /// Using the heap:
- ///
- /// ```notrust
- /// # // The `notrust` above can be removed when we can depend on Rust 1.60.
- /// # use std::mem::MaybeUninit;
- /// # use rustix::fs::{cwd, Mode, OFlags, openat, RawDir};
- ///
- /// let fd = openat(cwd(), ".", OFlags::RDONLY | OFlags::DIRECTORY, Mode::empty()).unwrap();
- ///
- /// let mut buf = Vec::with_capacity(8192);
- /// let mut iter = RawDir::new(fd, buf.spare_capacity_mut());
- /// while let Some(entry) = iter.next() {
- /// let entry = entry.unwrap();
- /// dbg!(&entry);
- /// }
- /// ```
- ///
- /// Using the stack:
- ///
- /// ```
- /// # use std::mem::MaybeUninit;
- /// # use rustix::fs::{cwd, Mode, OFlags, openat, RawDir};
- ///
- /// let fd = openat(
- /// cwd(),
- /// ".",
- /// OFlags::RDONLY | OFlags::DIRECTORY,
- /// Mode::empty(),
- /// )
- /// .unwrap();
- ///
- /// let mut buf = [MaybeUninit::uninit(); 2048];
- /// let mut iter = RawDir::new(fd, &mut buf);
- /// while let Some(entry) = iter.next() {
- /// let entry = entry.unwrap();
- /// dbg!(&entry);
- /// }
- /// ```
- ///
- /// ## Portable
- ///
- /// Heap allocated growing buffer for supporting directory entries with
- /// arbitrarily large file names:
- ///
- /// ```notrust
- /// # // The `notrust` above can be removed when we can depend on Rust 1.60.
- /// # use std::mem::MaybeUninit;
- /// # use rustix::fs::{cwd, Mode, OFlags, openat, RawDir};
- /// # use rustix::io::Errno;
- ///
- /// let fd = openat(cwd(), ".", OFlags::RDONLY | OFlags::DIRECTORY, Mode::empty()).unwrap();
- ///
- /// let mut buf = Vec::with_capacity(8192);
- /// 'read: loop {
- /// 'resize: {
- /// let mut iter = RawDir::new(&fd, buf.spare_capacity_mut());
- /// while let Some(entry) = iter.next() {
- /// let entry = match entry {
- /// Err(Errno::INVAL) => break 'resize,
- /// r => r.unwrap(),
- /// };
- /// dbg!(&entry);
- /// }
- /// break 'read;
- /// }
- ///
- /// let new_capacity = buf.capacity() * 2;
- /// buf.reserve(new_capacity);
- /// }
- /// ```
- pub fn new(fd: Fd, buf: &'buf mut [MaybeUninit<u8>]) -> Self {
- Self {
- fd,
- buf: {
- let offset = buf.as_ptr().align_offset(align_of::<linux_dirent64>());
- if offset < buf.len() {
- &mut buf[offset..]
- } else {
- &mut []
- }
- },
- initialized: 0,
- offset: 0,
- }
- }
-}
-
-/// A raw directory entry, similar to `std::fs::DirEntry`.
-///
-/// Note that unlike the std version, this may represent the `.` or `..`
-/// entries.
-pub struct RawDirEntry<'a> {
- file_name: &'a CStr,
- file_type: u8,
- inode_number: u64,
- next_entry_cookie: i64,
-}
-
-impl<'a> fmt::Debug for RawDirEntry<'a> {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- let mut f = f.debug_struct("RawDirEntry");
- f.field("file_name", &self.file_name());
- f.field("file_type", &self.file_type());
- f.field("ino", &self.ino());
- f.field("next_entry_cookie", &self.next_entry_cookie());
- f.finish()
- }
-}
-
-impl<'a> RawDirEntry<'a> {
- /// Returns the file name of this directory entry.
- #[inline]
- pub fn file_name(&self) -> &CStr {
- self.file_name
- }
-
- /// Returns the type of this directory entry.
- #[inline]
- pub fn file_type(&self) -> FileType {
- FileType::from_dirent_d_type(self.file_type)
- }
-
- /// Returns the inode number of this directory entry.
- #[inline]
- #[doc(alias = "inode_number")]
- pub fn ino(&self) -> u64 {
- self.inode_number
- }
-
- /// Returns the seek cookie to the next directory entry.
- #[inline]
- #[doc(alias = "off")]
- pub fn next_entry_cookie(&self) -> u64 {
- self.next_entry_cookie as u64
- }
-}
-
-impl<'buf, Fd: AsFd> RawDir<'buf, Fd> {
- /// Identical to [Iterator::next] except that [Iterator::Item] borrows from
- /// self.
- ///
- /// Note: this interface will be broken to implement a stdlib iterator API
- /// with GAT support once one becomes available.
- #[allow(unsafe_code)]
- #[allow(clippy::should_implement_trait)]
- pub fn next(&mut self) -> Option<io::Result<RawDirEntry>> {
- if self.is_buffer_empty() {
- match getdents_uninit(self.fd.as_fd(), self.buf) {
- Ok(bytes_read) if bytes_read == 0 => return None,
- Ok(bytes_read) => {
- self.initialized = bytes_read;
- self.offset = 0;
- }
- Err(e) => return Some(Err(e)),
- }
- }
-
- let dirent_ptr = self.buf[self.offset..].as_ptr();
- // SAFETY:
- // - This data is initialized by the check above.
- // - Assumption: the kernel will not give us partial structs.
- // - Assumption: the kernel uses proper alignment between structs.
- // - The starting pointer is aligned (performed in RawDir::new)
- let dirent = unsafe { &*dirent_ptr.cast::<linux_dirent64>() };
-
- self.offset += usize::from(dirent.d_reclen);
-
- Some(Ok(RawDirEntry {
- file_type: dirent.d_type,
- inode_number: dirent.d_ino.into(),
- next_entry_cookie: dirent.d_off.into(),
- // SAFETY: the kernel guarantees a NUL terminated string.
- file_name: unsafe { CStr::from_ptr(dirent.d_name.as_ptr().cast()) },
- }))
- }
-
- /// Returns true if the internal buffer is empty and will be refilled when
- /// calling [`next`].
- ///
- /// [`next`]: Self::next
- pub fn is_buffer_empty(&self) -> bool {
- self.offset >= self.initialized
- }
-}
diff --git a/vendor/rustix-0.37.6/src/fs/sendfile.rs b/vendor/rustix-0.37.6/src/fs/sendfile.rs
deleted file mode 100644
index 472ad37b2..000000000
--- a/vendor/rustix-0.37.6/src/fs/sendfile.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-use crate::{backend, io};
-use backend::fd::AsFd;
-
-/// `sendfile(out_fd, in_fd, offset, count)`
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/sendfile.2.html
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub fn sendfile<OutFd: AsFd, InFd: AsFd>(
- out_fd: OutFd,
- in_fd: InFd,
- offset: Option<&mut u64>,
- count: usize,
-) -> io::Result<usize> {
- backend::fs::syscalls::sendfile(out_fd.as_fd(), in_fd.as_fd(), offset, count)
-}
diff --git a/vendor/rustix-0.37.6/src/fs/statx.rs b/vendor/rustix-0.37.6/src/fs/statx.rs
deleted file mode 100644
index 716c66212..000000000
--- a/vendor/rustix-0.37.6/src/fs/statx.rs
+++ /dev/null
@@ -1,105 +0,0 @@
-//! Linux `statx`.
-
-use crate::fd::AsFd;
-use crate::fs::AtFlags;
-use crate::{backend, io, path};
-
-pub use backend::fs::types::{Statx, StatxFlags, StatxTimestamp};
-
-#[cfg(feature = "linux_4_11")]
-use backend::fs::syscalls::statx as _statx;
-#[cfg(not(feature = "linux_4_11"))]
-use compat::statx as _statx;
-
-/// `statx(dirfd, path, flags, mask, statxbuf)`
-///
-/// This function returns [`io::Errno::NOSYS`] if `statx` is not available on
-/// the platform, such as Linux before 4.11. This also includes older Docker
-/// versions where the actual syscall fails with different error codes; Rustix
-/// handles this and translates them into `NOSYS`.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/statx.2.html
-#[inline]
-pub fn statx<P: path::Arg, Fd: AsFd>(
- dirfd: Fd,
- path: P,
- flags: AtFlags,
- mask: StatxFlags,
-) -> io::Result<Statx> {
- path.into_with_c_str(|path| _statx(dirfd.as_fd(), path, flags, mask))
-}
-
-#[cfg(not(feature = "linux_4_11"))]
-mod compat {
- use crate::fd::BorrowedFd;
- use crate::ffi::CStr;
- use crate::fs::AtFlags;
- use crate::{backend, io};
- use core::sync::atomic::{AtomicU8, Ordering};
-
- use backend::fs::types::{Statx, StatxFlags};
-
- // Linux kernel prior to 4.11 old versions of Docker don't support `statx`. We
- // store the availability in a global to avoid unnecessary syscalls.
- //
- // 0: Unknown
- // 1: Not available
- // 2: Available
- static STATX_STATE: AtomicU8 = AtomicU8::new(0);
-
- #[inline]
- pub fn statx(
- dirfd: BorrowedFd<'_>,
- path: &CStr,
- flags: AtFlags,
- mask: StatxFlags,
- ) -> io::Result<Statx> {
- match STATX_STATE.load(Ordering::Relaxed) {
- 0 => statx_init(dirfd, path, flags, mask),
- 1 => Err(io::Errno::NOSYS),
- _ => backend::fs::syscalls::statx(dirfd, path, flags, mask),
- }
- }
-
- /// The first `statx` call. We don't know if `statx` is available yet.
- fn statx_init(
- dirfd: BorrowedFd<'_>,
- path: &CStr,
- flags: AtFlags,
- mask: StatxFlags,
- ) -> io::Result<Statx> {
- match backend::fs::syscalls::statx(dirfd, path, flags, mask) {
- Err(io::Errno::NOSYS) => statx_error_nosys(),
- Err(io::Errno::PERM) => statx_error_perm(),
- result => {
- STATX_STATE.store(2, Ordering::Relaxed);
- result
- }
- }
- }
-
- /// The first `statx` call failed with `NOSYS` (or something we're treating
- /// like `NOSYS`).
- #[cold]
- fn statx_error_nosys() -> io::Result<Statx> {
- STATX_STATE.store(1, Ordering::Relaxed);
- Err(io::Errno::NOSYS)
- }
-
- /// The first `statx` call failed with `PERM`.
- #[cold]
- fn statx_error_perm() -> io::Result<Statx> {
- // Some old versions of Docker have `statx` fail with `PERM` when it isn't
- // recognized. Check whether `statx` really is available, and if so, fail
- // with `PERM`, and if not, treat it like `NOSYS`.
- if backend::fs::syscalls::is_statx_available() {
- STATX_STATE.store(2, Ordering::Relaxed);
- Err(io::Errno::PERM)
- } else {
- statx_error_nosys()
- }
- }
-}
diff --git a/vendor/rustix-0.37.6/src/fs/sync.rs b/vendor/rustix-0.37.6/src/fs/sync.rs
deleted file mode 100644
index 3d2d08920..000000000
--- a/vendor/rustix-0.37.6/src/fs/sync.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-use crate::backend;
-
-/// `sync`—Flush cached filesystem data for all filesystems.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/sync.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/sync.2.html
-#[inline]
-pub fn sync() {
- backend::fs::syscalls::sync();
-}
diff --git a/vendor/rustix-0.37.6/src/io/close.rs b/vendor/rustix-0.37.6/src/io/close.rs
deleted file mode 100644
index b286d2368..000000000
--- a/vendor/rustix-0.37.6/src/io/close.rs
+++ /dev/null
@@ -1,41 +0,0 @@
-//! The unsafe `close` for raw file descriptors.
-//!
-//! # Safety
-//!
-//! Operating on raw file descriptors is unsafe.
-#![allow(unsafe_code)]
-
-use crate::backend;
-use backend::fd::RawFd;
-
-/// `close(raw_fd)`—Closes a `RawFd` directly.
-///
-/// Most users won't need to use this, as `OwnedFd` automatically closes its
-/// file descriptor on `Drop`.
-///
-/// This function does not return a `Result`, as it is the [responsibility] of
-/// filesystem designers to not return errors from `close`. Users who chose to
-/// use NFS or similar filesystems should take care to monitor for problems
-/// externally.
-///
-/// [responsibility]: https://lwn.net/Articles/576518/
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/close.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/close.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/close.2.html#//apple_ref/doc/man/2/close
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-closesocket
-///
-/// # Safety
-///
-/// This function takes a `RawFd`, which must be valid before the call, and is
-/// not valid after the call.
-#[inline]
-pub unsafe fn close(raw_fd: RawFd) {
- backend::io::syscalls::close(raw_fd)
-}
diff --git a/vendor/rustix-0.37.6/src/io/dup.rs b/vendor/rustix-0.37.6/src/io/dup.rs
deleted file mode 100644
index 97a11f35c..000000000
--- a/vendor/rustix-0.37.6/src/io/dup.rs
+++ /dev/null
@@ -1,83 +0,0 @@
-//! Functions which duplicate file descriptors.
-
-use crate::fd::OwnedFd;
-use crate::{backend, io};
-use backend::fd::AsFd;
-
-#[cfg(not(target_os = "wasi"))]
-pub use backend::io::types::DupFlags;
-
-/// `dup(fd)`—Creates a new `OwnedFd` instance that shares the same
-/// underlying [file description] as `fd`.
-///
-/// This function does not set the `O_CLOEXEC` flag. To do a `dup` that does
-/// set `O_CLOEXEC`, use [`fcntl_dupfd_cloexec`].
-///
-/// POSIX guarantees that `dup` will use the lowest unused file descriptor,
-/// however it is not safe in general to rely on this, as file descriptors may
-/// be unexpectedly allocated on other threads or in libraries.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-///
-/// [file description]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_258
-/// [`fcntl_dupfd_cloexec`]: crate::io::fcntl_dupfd_cloexec
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/dup.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/dup.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/dup.2.html
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-pub fn dup<Fd: AsFd>(fd: Fd) -> io::Result<OwnedFd> {
- backend::io::syscalls::dup(fd.as_fd())
-}
-
-/// `dup2(fd, new)`—Changes the [file description] of a file descriptor.
-///
-/// `dup2` conceptually closes `new` and then sets the file description for
-/// `new` to be the same as the one for `fd`. This is a very unusual operation,
-/// and should only be used on file descriptors where you know how `new` will
-/// be subsequently used.
-///
-/// This function does not set the `O_CLOEXEC` flag. To do a `dup2` that does
-/// set `O_CLOEXEC`, use [`dup3`] with [`DupFlags::CLOEXEC`] on platforms which
-/// support it, or [`fcntl_dupfd_cloexec`]
-///
-/// For `dup2` to stdin, stdout, and stderr, see [`io::dup2_stdin`],
-/// [`io::dup2_stdout`], and [`io::dup2_stderr`].
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-///
-/// [file description]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_258
-/// [`fcntl_dupfd_cloexec`]: crate::io::fcntl_dupfd_cloexec
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/dup2.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/dup2.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/dup2.2.html
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-pub fn dup2<Fd: AsFd>(fd: Fd, new: &mut OwnedFd) -> io::Result<()> {
- backend::io::syscalls::dup2(fd.as_fd(), new)
-}
-
-/// `dup3(fd, new, flags)`—Changes the [file description] of a file
-/// descriptor, with flags.
-///
-/// `dup3` is the same as [`dup2`] but adds an additional flags operand, and it
-/// fails in the case that `fd` and `new` have the same file descriptor value.
-/// This additional difference is the reason this function isn't named
-/// `dup2_with`.
-///
-/// # References
-/// - [Linux]
-///
-/// [file description]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_258
-/// [Linux]: https://man7.org/linux/man-pages/man2/dup3.2.html
-#[cfg(not(any(target_os = "aix", target_os = "wasi")))]
-#[inline]
-pub fn dup3<Fd: AsFd>(fd: Fd, new: &mut OwnedFd, flags: DupFlags) -> io::Result<()> {
- backend::io::syscalls::dup3(fd.as_fd(), new, flags)
-}
diff --git a/vendor/rustix-0.37.6/src/io/errno.rs b/vendor/rustix-0.37.6/src/io/errno.rs
deleted file mode 100644
index f39573797..000000000
--- a/vendor/rustix-0.37.6/src/io/errno.rs
+++ /dev/null
@@ -1,85 +0,0 @@
-//! The `Errno` type, which is a minimal wrapper around an error code.
-//!
-//! We define the error constants as individual `const`s instead of an
-//! enum because we may not know about all of the host's error values
-//! and we don't want unrecognized values to create UB.
-
-use crate::backend;
-use core::{fmt, result};
-#[cfg(feature = "std")]
-use std::error;
-
-/// A specialized [`Result`] type for `rustix` APIs.
-///
-/// [`Result`]: core::result::Result
-pub type Result<T> = result::Result<T, Errno>;
-
-/// `errno`—An error code.
-///
-/// The error type for `rustix` APIs. This is similar to `std::io::Error`, but
-/// only holds an OS error code, and no extra error value.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/errno.html
-/// [Linux]: https://man7.org/linux/man-pages/man3/errno.3.html
-pub use backend::io::errno::Errno;
-
-impl Errno {
- /// Shorthand for `std::io::Error::from(self).kind()`.
- #[cfg(feature = "std")]
- #[inline]
- pub fn kind(self) -> std::io::ErrorKind {
- std::io::Error::from(self).kind()
- }
-}
-
-impl fmt::Display for Errno {
- fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
- #[cfg(feature = "std")]
- {
- std::io::Error::from(*self).fmt(fmt)
- }
- #[cfg(not(feature = "std"))]
- {
- write!(fmt, "os error {}", self.raw_os_error())
- }
- }
-}
-
-impl fmt::Debug for Errno {
- fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
- #[cfg(feature = "std")]
- {
- std::io::Error::from(*self).fmt(fmt)
- }
- #[cfg(not(feature = "std"))]
- {
- write!(fmt, "os error {}", self.raw_os_error())
- }
- }
-}
-
-#[cfg(feature = "std")]
-impl error::Error for Errno {}
-
-#[cfg(feature = "std")]
-impl From<Errno> for std::io::Error {
- #[inline]
- fn from(err: Errno) -> Self {
- Self::from_raw_os_error(err.raw_os_error() as _)
- }
-}
-
-/// Call `f` until it either succeeds or fails other than [`Errno::INTR`].
-#[inline]
-pub fn retry_on_intr<T, F: FnMut() -> Result<T>>(mut f: F) -> Result<T> {
- loop {
- match f() {
- Err(Errno::INTR) => (),
- result => return result,
- }
- }
-}
diff --git a/vendor/rustix-0.37.6/src/io/eventfd.rs b/vendor/rustix-0.37.6/src/io/eventfd.rs
deleted file mode 100644
index 22ffc627c..000000000
--- a/vendor/rustix-0.37.6/src/io/eventfd.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-use crate::fd::OwnedFd;
-use crate::{backend, io};
-
-pub use backend::io::types::EventfdFlags;
-
-/// `eventfd(initval, flags)`—Creates a file descriptor for event
-/// notification.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/eventfd.2.html
-#[inline]
-pub fn eventfd(initval: u32, flags: EventfdFlags) -> io::Result<OwnedFd> {
- backend::io::syscalls::eventfd(initval, flags)
-}
diff --git a/vendor/rustix-0.37.6/src/io/fcntl.rs b/vendor/rustix-0.37.6/src/io/fcntl.rs
deleted file mode 100644
index ba79149ff..000000000
--- a/vendor/rustix-0.37.6/src/io/fcntl.rs
+++ /dev/null
@@ -1,85 +0,0 @@
-//! The Unix `fcntl` function is effectively lots of different functions
-//! hidden behind a single dynamic dispatch interface. In order to provide
-//! a type-safe API, rustix makes them all separate functions so that they
-//! can have dedicated static type signatures.
-//!
-//! `fcntl` functions which are not specific to files or directories live
-//! in the [`io`] module instead.
-//!
-//! [`io`]: crate::io
-
-use crate::{backend, io};
-use backend::fd::{AsFd, OwnedFd, RawFd};
-
-pub use backend::io::types::FdFlags;
-
-/// `fcntl(fd, F_GETFD)`—Returns a file descriptor's flags.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/fcntl.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/fcntl.2.html
-#[inline]
-#[doc(alias = "F_GETFD")]
-pub fn fcntl_getfd<Fd: AsFd>(fd: Fd) -> io::Result<FdFlags> {
- backend::io::syscalls::fcntl_getfd(fd.as_fd())
-}
-
-/// `fcntl(fd, F_SETFD, flags)`—Sets a file descriptor's flags.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/fcntl.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/fcntl.2.html
-#[inline]
-#[doc(alias = "F_SETFD")]
-pub fn fcntl_setfd<Fd: AsFd>(fd: Fd, flags: FdFlags) -> io::Result<()> {
- backend::io::syscalls::fcntl_setfd(fd.as_fd(), flags)
-}
-
-/// `fcntl(fd, F_DUPFD_CLOEXEC)`—Creates a new `OwnedFd` instance, with value
-/// at least `min`, that has `O_CLOEXEC` set and that shares the same
-/// underlying [file description] as `fd`.
-///
-/// POSIX guarantees that `F_DUPFD_CLOEXEC` will use the lowest unused file
-/// descriptor which is at least `min`, however it is not safe in general to
-/// rely on this, as file descriptors may be unexpectedly allocated on other
-/// threads or in libraries.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/fcntl.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/fcntl.2.html
-#[cfg(not(any(target_os = "wasi", target_os = "espidf")))]
-#[inline]
-#[doc(alias = "F_DUPFD_CLOEXEC")]
-pub fn fcntl_dupfd_cloexec<Fd: AsFd>(fd: Fd, min: RawFd) -> io::Result<OwnedFd> {
- backend::io::syscalls::fcntl_dupfd_cloexec(fd.as_fd(), min)
-}
-
-/// `fcntl(fd, F_DUPFD)`—Creates a new `OwnedFd` instance, with value at least
-/// `min`, that shares the same underlying [file description] as `fd`.
-///
-/// POSIX guarantees that `F_DUPFD` will use the lowest unused file descriptor
-/// which is at least `min`, however it is not safe in general to rely on this,
-/// as file descriptors may be unexpectedly allocated on other threads or in
-/// libraries.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/fcntl.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/fcntl.2.html
-#[cfg(target_os = "espidf")]
-#[inline]
-#[doc(alias = "F_DUPFD")]
-pub fn fcntl_dupfd<Fd: AsFd>(fd: Fd, min: RawFd) -> io::Result<OwnedFd> {
- backend::io::syscalls::fcntl_dupfd(fd.as_fd(), min)
-}
diff --git a/vendor/rustix-0.37.6/src/io/fd/mod.rs b/vendor/rustix-0.37.6/src/io/fd/mod.rs
deleted file mode 100644
index 0978b5421..000000000
--- a/vendor/rustix-0.37.6/src/io/fd/mod.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-//! The following is derived from Rust's
-//! library/std/src/os/fd/mod.rs at revision
-//! fa68e73e9947be8ffc5b3b46d899e4953a44e7e9.
-//!
-//! Owned and borrowed Unix-like file descriptors.
-
-#![cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))]
-#![deny(unsafe_op_in_unsafe_fn)]
-
-// `RawFd`, `AsRawFd`, etc.
-mod raw;
-
-// `OwnedFd`, `AsFd`, etc.
-mod owned;
-
-pub use owned::*;
-pub use raw::*;
diff --git a/vendor/rustix-0.37.6/src/io/fd/owned.rs b/vendor/rustix-0.37.6/src/io/fd/owned.rs
deleted file mode 100644
index 2b9238ca7..000000000
--- a/vendor/rustix-0.37.6/src/io/fd/owned.rs
+++ /dev/null
@@ -1,252 +0,0 @@
-//! The following is derived from Rust's
-//! library/std/src/os/fd/owned.rs at revision
-//! fa68e73e9947be8ffc5b3b46d899e4953a44e7e9.
-//!
-//! Owned and borrowed Unix-like file descriptors.
-
-#![cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))]
-#![deny(unsafe_op_in_unsafe_fn)]
-#![allow(unsafe_code)]
-
-use super::raw::{AsRawFd, FromRawFd, IntoRawFd, RawFd};
-use crate::io::close;
-use core::fmt;
-use core::marker::PhantomData;
-use core::mem::forget;
-
-/// A borrowed file descriptor.
-///
-/// This has a lifetime parameter to tie it to the lifetime of something that
-/// owns the file descriptor.
-///
-/// This uses `repr(transparent)` and has the representation of a host file
-/// descriptor, so it can be used in FFI in places where a file descriptor is
-/// passed as an argument, it is not captured or consumed, and it never has the
-/// value `-1`.
-///
-/// This type's `.to_owned()` implementation returns another `BorrowedFd`
-/// rather than an `OwnedFd`. It just makes a trivial copy of the raw file
-/// descriptor, which is then borrowed under the same lifetime.
-#[derive(Copy, Clone)]
-#[repr(transparent)]
-#[cfg_attr(rustc_attrs, rustc_layout_scalar_valid_range_start(0))]
-// libstd/os/raw/mod.rs assures me that every libstd-supported platform has a
-// 32-bit c_int. Below is -2, in two's complement, but that only works out
-// because c_int is 32 bits.
-#[cfg_attr(rustc_attrs, rustc_layout_scalar_valid_range_end(0xFF_FF_FF_FE))]
-#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))]
-#[cfg_attr(rustc_attrs, rustc_nonnull_optimization_guaranteed)]
-pub struct BorrowedFd<'fd> {
- fd: RawFd,
- _phantom: PhantomData<&'fd OwnedFd>,
-}
-
-/// An owned file descriptor.
-///
-/// This closes the file descriptor on drop.
-///
-/// This uses `repr(transparent)` and has the representation of a host file
-/// descriptor, so it can be used in FFI in places where a file descriptor is
-/// passed as a consumed argument or returned as an owned value, and it never
-/// has the value `-1`.
-#[repr(transparent)]
-#[cfg_attr(rustc_attrs, rustc_layout_scalar_valid_range_start(0))]
-// libstd/os/raw/mod.rs assures me that every libstd-supported platform has a
-// 32-bit c_int. Below is -2, in two's complement, but that only works out
-// because c_int is 32 bits.
-#[cfg_attr(rustc_attrs, rustc_layout_scalar_valid_range_end(0xFF_FF_FF_FE))]
-#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))]
-#[cfg_attr(rustc_attrs, rustc_nonnull_optimization_guaranteed)]
-pub struct OwnedFd {
- fd: RawFd,
-}
-
-impl BorrowedFd<'_> {
- /// Return a `BorrowedFd` holding the given raw file descriptor.
- ///
- /// # Safety
- ///
- /// The resource pointed to by `fd` must remain open for the duration of
- /// the returned `BorrowedFd`, and it must not have the value `-1`.
- #[inline]
- #[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))]
- pub const unsafe fn borrow_raw(fd: RawFd) -> Self {
- assert!(fd != u32::MAX as RawFd);
- // SAFETY: we just asserted that the value is in the valid range and isn't `-1` (the only value bigger than `0xFF_FF_FF_FE` unsigned)
- #[allow(unused_unsafe)]
- unsafe {
- Self {
- fd,
- _phantom: PhantomData,
- }
- }
- }
-}
-
-impl OwnedFd {
- /// Creates a new `OwnedFd` instance that shares the same underlying file handle
- /// as the existing `OwnedFd` instance.
- #[cfg(not(target_arch = "wasm32"))]
- pub fn try_clone(&self) -> crate::io::Result<Self> {
- // We want to atomically duplicate this file descriptor and set the
- // CLOEXEC flag, and currently that's done via F_DUPFD_CLOEXEC. This
- // is a POSIX flag that was added to Linux in 2.6.24.
- #[cfg(not(target_os = "espidf"))]
- let fd = crate::io::fcntl_dupfd_cloexec(self, 0)?;
-
- // For ESP-IDF, F_DUPFD is used instead, because the CLOEXEC semantics
- // will never be supported, as this is a bare metal framework with
- // no capabilities for multi-process execution. While F_DUPFD is also
- // not supported yet, it might be (currently it returns ENOSYS).
- #[cfg(target_os = "espidf")]
- let fd = crate::io::fcntl_dupfd(self)?;
-
- Ok(fd.into())
- }
-
- #[cfg(target_arch = "wasm32")]
- pub fn try_clone(&self) -> crate::io::Result<Self> {
- Err(crate::io::const_io_error!(
- crate::io::ErrorKind::Unsupported,
- "operation not supported on WASI yet",
- ))
- }
-}
-
-#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))]
-impl AsRawFd for BorrowedFd<'_> {
- #[inline]
- fn as_raw_fd(&self) -> RawFd {
- self.fd
- }
-}
-
-#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))]
-impl AsRawFd for OwnedFd {
- #[inline]
- fn as_raw_fd(&self) -> RawFd {
- self.fd
- }
-}
-
-#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))]
-impl IntoRawFd for OwnedFd {
- #[inline]
- fn into_raw_fd(self) -> RawFd {
- let fd = self.fd;
- forget(self);
- fd
- }
-}
-
-#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))]
-impl FromRawFd for OwnedFd {
- /// Constructs a new instance of `Self` from the given raw file descriptor.
- ///
- /// # Safety
- ///
- /// The resource pointed to by `fd` must be open and suitable for assuming
- /// ownership. The resource must not require any cleanup other than `close`.
- #[inline]
- unsafe fn from_raw_fd(fd: RawFd) -> Self {
- assert_ne!(fd, u32::MAX as RawFd);
- // SAFETY: we just asserted that the value is in the valid range and isn't `-1` (the only value bigger than `0xFF_FF_FF_FE` unsigned)
- #[allow(unused_unsafe)]
- unsafe {
- Self { fd }
- }
- }
-}
-
-#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))]
-impl Drop for OwnedFd {
- #[inline]
- fn drop(&mut self) {
- unsafe {
- // Errors are ignored when closing a file descriptor. The reason
- // for this is that if an error occurs we don't actually know if
- // the file descriptor was closed or not, and if we retried (for
- // something like EINTR), we might close another valid file
- // descriptor opened after we closed ours.
- close(self.fd as _);
- }
- }
-}
-
-#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))]
-impl fmt::Debug for BorrowedFd<'_> {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.debug_struct("BorrowedFd").field("fd", &self.fd).finish()
- }
-}
-
-#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))]
-impl fmt::Debug for OwnedFd {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.debug_struct("OwnedFd").field("fd", &self.fd).finish()
- }
-}
-
-/// A trait to borrow the file descriptor from an underlying object.
-///
-/// This is only available on unix platforms and must be imported in order to
-/// call the method. Windows platforms have a corresponding `AsHandle` and
-/// `AsSocket` set of traits.
-#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))]
-pub trait AsFd {
- /// Borrows the file descriptor.
- ///
- /// # Example
- ///
- /// ```no_run
- /// # #![feature(io_safety)]
- /// use std::fs::File;
- /// # use std::io;
- /// # #[cfg(target_os = "wasi")]
- /// # use std::os::wasi::io::{AsFd, BorrowedFd};
- /// # #[cfg(unix)]
- /// # use std::os::unix::io::{AsFd, BorrowedFd};
- ///
- /// let mut f = File::open("foo.txt")?;
- /// # #[cfg(any(unix, target_os = "wasi"))]
- /// let borrowed_fd: BorrowedFd<'_> = f.as_fd();
- /// # Ok::<(), io::Error>(())
- /// ```
- #[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))]
- fn as_fd(&self) -> BorrowedFd<'_>;
-}
-
-#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))]
-impl<T: AsFd> AsFd for &T {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- T::as_fd(self)
- }
-}
-
-#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))]
-impl<T: AsFd> AsFd for &mut T {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- T::as_fd(self)
- }
-}
-
-#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))]
-impl AsFd for BorrowedFd<'_> {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- *self
- }
-}
-
-#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))]
-impl AsFd for OwnedFd {
- #[inline]
- fn as_fd(&self) -> BorrowedFd<'_> {
- // SAFETY: `OwnedFd` and `BorrowedFd` have the same validity
- // invariants, and the `BorrowedFd` is bounded by the lifetime
- // of `&self`.
- unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
- }
-}
diff --git a/vendor/rustix-0.37.6/src/io/fd/raw.rs b/vendor/rustix-0.37.6/src/io/fd/raw.rs
deleted file mode 100644
index a522c9794..000000000
--- a/vendor/rustix-0.37.6/src/io/fd/raw.rs
+++ /dev/null
@@ -1,159 +0,0 @@
-//! The following is derived from Rust's
-//! library/std/src/os/fd/raw.rs at revision
-//! fa68e73e9947be8ffc5b3b46d899e4953a44e7e9.
-//!
-//! Raw Unix-like file descriptors.
-
-#![cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
-#![allow(unsafe_code)]
-
-use crate::backend::c;
-
-/// Raw file descriptors.
-#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
-pub type RawFd = c::c_int;
-
-/// A trait to extract the raw file descriptor from an underlying object.
-///
-/// This is only available on unix and WASI platforms and must be imported in
-/// order to call the method. Windows platforms have a corresponding
-/// `AsRawHandle` and `AsRawSocket` set of traits.
-#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
-pub trait AsRawFd {
- /// Extracts the raw file descriptor.
- ///
- /// This function is typically used to **borrow** an owned file descriptor.
- /// When used in this way, this method does **not** pass ownership of the
- /// raw file descriptor to the caller, and the file descriptor is only
- /// guaranteed to be valid while the original object has not yet been
- /// destroyed.
- ///
- /// However, borrowing is not strictly required. See [`AsFd::as_fd`]
- /// for an API which strictly borrows a file descriptor.
- ///
- /// # Example
- ///
- /// ```no_run
- /// use std::fs::File;
- /// # use std::io;
- /// #[cfg(unix)]
- /// use std::os::unix::io::{AsRawFd, RawFd};
- /// #[cfg(target_os = "wasi")]
- /// use std::os::wasi::io::{AsRawFd, RawFd};
- ///
- /// let mut f = File::open("foo.txt")?;
- /// // `raw_fd` is only valid as long as `f` exists.
- /// #[cfg(any(unix, target_os = "wasi"))]
- /// let raw_fd: RawFd = f.as_raw_fd();
- /// # Ok::<(), io::Error>(())
- /// ```
- #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
- fn as_raw_fd(&self) -> RawFd;
-}
-
-/// A trait to express the ability to construct an object from a raw file
-/// descriptor.
-#[cfg_attr(staged_api, stable(feature = "from_raw_os", since = "1.1.0"))]
-pub trait FromRawFd {
- /// Constructs a new instance of `Self` from the given raw file
- /// descriptor.
- ///
- /// This function is typically used to **consume ownership** of the
- /// specified file descriptor. When used in this way, the returned object
- /// will take responsibility for closing it when the object goes out of
- /// scope.
- ///
- /// However, consuming ownership is not strictly required. Use a
- /// [`From<OwnedFd>::from`] implementation for an API which strictly
- /// consumes ownership.
- ///
- /// # Safety
- ///
- /// The `fd` passed in must be a valid an open file descriptor.
- ///
- /// # Example
- ///
- /// ```no_run
- /// use std::fs::File;
- /// # use std::io;
- /// #[cfg(unix)]
- /// use std::os::unix::io::{FromRawFd, IntoRawFd, RawFd};
- /// #[cfg(target_os = "wasi")]
- /// use std::os::wasi::io::{FromRawFd, IntoRawFd, RawFd};
- ///
- /// let f = File::open("foo.txt")?;
- /// # #[cfg(any(unix, target_os = "wasi"))]
- /// let raw_fd: RawFd = f.into_raw_fd();
- /// // SAFETY: no other functions should call `from_raw_fd`, so there
- /// // is only one owner for the file descriptor.
- /// # #[cfg(any(unix, target_os = "wasi"))]
- /// let f = unsafe { File::from_raw_fd(raw_fd) };
- /// # Ok::<(), io::Error>(())
- /// ```
- #[cfg_attr(staged_api, stable(feature = "from_raw_os", since = "1.1.0"))]
- unsafe fn from_raw_fd(fd: RawFd) -> Self;
-}
-
-/// A trait to express the ability to consume an object and acquire ownership of
-/// its raw file descriptor.
-#[cfg_attr(staged_api, stable(feature = "into_raw_os", since = "1.4.0"))]
-pub trait IntoRawFd {
- /// Consumes this object, returning the raw underlying file descriptor.
- ///
- /// This function is typically used to **transfer ownership** of the underlying
- /// file descriptor to the caller. When used in this way, callers are then the unique
- /// owners of the file descriptor and must close it once it's no longer needed.
- ///
- /// However, transferring ownership is not strictly required. Use a
- /// [`Into<OwnedFd>::into`] implementation for an API which strictly
- /// transfers ownership.
- ///
- /// # Example
- ///
- /// ```no_run
- /// use std::fs::File;
- /// # use std::io;
- /// #[cfg(unix)]
- /// use std::os::unix::io::{IntoRawFd, RawFd};
- /// #[cfg(target_os = "wasi")]
- /// use std::os::wasi::io::{IntoRawFd, RawFd};
- ///
- /// let f = File::open("foo.txt")?;
- /// #[cfg(any(unix, target_os = "wasi"))]
- /// let raw_fd: RawFd = f.into_raw_fd();
- /// # Ok::<(), io::Error>(())
- /// ```
- #[cfg_attr(staged_api, stable(feature = "into_raw_os", since = "1.4.0"))]
- fn into_raw_fd(self) -> RawFd;
-}
-
-#[cfg_attr(
- staged_api,
- stable(feature = "raw_fd_reflexive_traits", since = "1.48.0")
-)]
-impl AsRawFd for RawFd {
- #[inline]
- fn as_raw_fd(&self) -> RawFd {
- *self
- }
-}
-#[cfg_attr(
- staged_api,
- stable(feature = "raw_fd_reflexive_traits", since = "1.48.0")
-)]
-impl IntoRawFd for RawFd {
- #[inline]
- fn into_raw_fd(self) -> RawFd {
- self
- }
-}
-#[cfg_attr(
- staged_api,
- stable(feature = "raw_fd_reflexive_traits", since = "1.48.0")
-)]
-impl FromRawFd for RawFd {
- #[inline]
- unsafe fn from_raw_fd(fd: RawFd) -> RawFd {
- fd
- }
-}
diff --git a/vendor/rustix-0.37.6/src/io/ioctl.rs b/vendor/rustix-0.37.6/src/io/ioctl.rs
deleted file mode 100644
index 429b4f8db..000000000
--- a/vendor/rustix-0.37.6/src/io/ioctl.rs
+++ /dev/null
@@ -1,112 +0,0 @@
-//! The Unix `ioctl` function is effectively lots of different functions
-//! hidden behind a single dynamic dispatch interface. In order to provide
-//! a type-safe API, rustix makes them all separate functions so that they
-//! can have dedicated static type signatures.
-
-use crate::{backend, io};
-use backend::fd::AsFd;
-
-/// `ioctl(fd, TIOCEXCL)`—Enables exclusive mode on a terminal.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html
-#[cfg(not(any(windows, target_os = "haiku", target_os = "redox", target_os = "wasi")))]
-#[inline]
-#[doc(alias = "TIOCEXCL")]
-pub fn ioctl_tiocexcl<Fd: AsFd>(fd: Fd) -> io::Result<()> {
- backend::io::syscalls::ioctl_tiocexcl(fd.as_fd())
-}
-
-/// `ioctl(fd, TIOCNXCL)`—Disables exclusive mode on a terminal.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html
-#[cfg(not(any(windows, target_os = "haiku", target_os = "redox", target_os = "wasi")))]
-#[inline]
-#[doc(alias = "TIOCNXCL")]
-pub fn ioctl_tiocnxcl<Fd: AsFd>(fd: Fd) -> io::Result<()> {
- backend::io::syscalls::ioctl_tiocnxcl(fd.as_fd())
-}
-
-/// `ioctl(fd, FIOCLEX)`—Set the close-on-exec flag.
-///
-/// Also known as `fcntl(fd, F_SETFD, FD_CLOEXEC)`.
-///
-/// # References
-/// - [Linux]
-/// - [Winsock2]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/ioctl.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-ioctlsocket
-#[cfg(apple)]
-#[inline]
-#[doc(alias = "FIOCLEX")]
-#[doc(alias = "FD_CLOEXEC")]
-pub fn ioctl_fioclex<Fd: AsFd>(fd: Fd) -> io::Result<()> {
- backend::io::syscalls::ioctl_fioclex(fd.as_fd())
-}
-
-/// `ioctl(fd, FIONBIO, &value)`—Enables or disables non-blocking mode.
-///
-/// # References
-/// - [Linux]
-/// - [Winsock2]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/ioctl.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/winsock/winsock-ioctls#unix-ioctl-codes
-#[inline]
-#[doc(alias = "FIONBIO")]
-pub fn ioctl_fionbio<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
- backend::io::syscalls::ioctl_fionbio(fd.as_fd(), value)
-}
-
-/// `ioctl(fd, FIONREAD)`—Returns the number of bytes ready to be read.
-///
-/// The result of this function gets silently coerced into a C `int`
-/// by the OS, so it may contain a wrapped value.
-///
-/// # References
-/// - [Linux]
-/// - [Winsock2]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/ioctl_tty.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/winsock/winsock-ioctls#unix-ioctl-codes
-#[cfg(not(target_os = "redox"))]
-#[inline]
-#[doc(alias = "FIONREAD")]
-pub fn ioctl_fionread<Fd: AsFd>(fd: Fd) -> io::Result<u64> {
- backend::io::syscalls::ioctl_fionread(fd.as_fd())
-}
-
-/// `ioctl(fd, BLKSSZGET)`—Returns the logical block size of a block device.
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-#[doc(alias = "BLKSSZGET")]
-pub fn ioctl_blksszget<Fd: AsFd>(fd: Fd) -> io::Result<u32> {
- backend::io::syscalls::ioctl_blksszget(fd.as_fd())
-}
-
-/// `ioctl(fd, BLKPBSZGET)`—Returns the physical block size of a block device.
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-#[doc(alias = "BLKPBSZGET")]
-pub fn ioctl_blkpbszget<Fd: AsFd>(fd: Fd) -> io::Result<u32> {
- backend::io::syscalls::ioctl_blkpbszget(fd.as_fd())
-}
-
-/// `ioctl(fd, FICLONE, src_fd)`—Share data between open files.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/ioctl_ficlone.2.html
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-#[doc(alias = "FICLONE")]
-pub fn ioctl_ficlone<Fd: AsFd, SrcFd: AsFd>(fd: Fd, src_fd: SrcFd) -> io::Result<()> {
- backend::io::syscalls::ioctl_ficlone(fd.as_fd(), src_fd.as_fd())
-}
diff --git a/vendor/rustix-0.37.6/src/io/is_read_write.rs b/vendor/rustix-0.37.6/src/io/is_read_write.rs
deleted file mode 100644
index 74007e7f9..000000000
--- a/vendor/rustix-0.37.6/src/io/is_read_write.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-//! The [`is_read_write`] function.
-
-#[cfg(all(feature = "fs", feature = "net"))]
-use crate::{backend, io};
-#[cfg(all(feature = "fs", feature = "net"))]
-use backend::fd::AsFd;
-
-/// Returns a pair of booleans indicating whether the file descriptor is
-/// readable and/or writable, respectively.
-///
-/// Unlike [`is_file_read_write`], this correctly detects whether sockets
-/// have been shutdown, partially or completely.
-///
-/// [`is_file_read_write`]: crate::fs::is_file_read_write
-#[inline]
-#[cfg(all(feature = "fs", feature = "net"))]
-#[cfg_attr(doc_cfg, doc(cfg(all(feature = "fs", feature = "net"))))]
-pub fn is_read_write<Fd: AsFd>(fd: Fd) -> io::Result<(bool, bool)> {
- backend::io::syscalls::is_read_write(fd.as_fd())
-}
diff --git a/vendor/rustix-0.37.6/src/io/kqueue.rs b/vendor/rustix-0.37.6/src/io/kqueue.rs
deleted file mode 100644
index 09fa0a4e2..000000000
--- a/vendor/rustix-0.37.6/src/io/kqueue.rs
+++ /dev/null
@@ -1,421 +0,0 @@
-//! An API for interfacing with `kqueue`.
-
-use crate::fd::{AsFd, AsRawFd, OwnedFd, RawFd};
-use crate::{backend, io};
-
-use backend::c::{self, kevent as kevent_t, uintptr_t};
-use backend::io::syscalls;
-
-#[cfg(any(apple, freebsdlike))]
-use backend::c::intptr_t;
-
-use alloc::vec::Vec;
-use core::ptr::slice_from_raw_parts_mut;
-use core::time::Duration;
-
-/// A `kqueue` event.
-#[repr(transparent)]
-#[derive(Copy, Clone)]
-pub struct Event {
- // The layout varies between BSDs and macOS.
- inner: kevent_t,
-}
-
-impl Event {
- /// Create a new `Event`.
- #[allow(clippy::needless_update)]
- pub fn new(filter: EventFilter, flags: EventFlags, udata: isize) -> Event {
- let (ident, filter, fflags) = match filter {
- EventFilter::Read(fd) => (fd.as_raw_fd() as uintptr_t, c::EVFILT_READ, 0),
- EventFilter::Write(fd) => (fd.as_raw_fd() as _, c::EVFILT_WRITE, 0),
- #[cfg(target_os = "freebsd")]
- EventFilter::Empty(fd) => (fd.as_raw_fd() as _, c::EVFILT_EMPTY, 0),
- EventFilter::Vnode { vnode, flags } => {
- (vnode.as_raw_fd() as _, c::EVFILT_VNODE, flags.bits())
- }
- #[cfg(feature = "process")]
- EventFilter::Proc { pid, flags } => (
- crate::process::Pid::as_raw(Some(pid)) as _,
- c::EVFILT_PROC,
- flags.bits(),
- ),
- #[cfg(feature = "process")]
- EventFilter::Signal { signal, times: _ } => (signal as _, c::EVFILT_SIGNAL, 0),
- EventFilter::Timer(timer) => {
- #[cfg(any(apple, target_os = "freebsd", target_os = "netbsd"))]
- let (data, fflags) = match timer {
- Some(timer) => {
- if timer.subsec_millis() == 0 {
- (timer.as_secs() as _, c::NOTE_SECONDS)
- } else if timer.subsec_nanos() == 0 {
- (timer.as_micros() as _, c::NOTE_USECONDS)
- } else {
- (timer.as_nanos() as _, c::NOTE_NSECONDS)
- }
- }
- None => (uintptr_t::MAX, c::NOTE_SECONDS),
- };
- #[cfg(any(target_os = "dragonfly", target_os = "openbsd"))]
- let (data, fflags) = match timer {
- Some(timer) => (timer.as_millis() as _, 0),
- None => (uintptr_t::MAX, 0),
- };
-
- (data, c::EVFILT_TIMER, fflags)
- }
- #[cfg(any(apple, freebsdlike))]
- EventFilter::User {
- ident,
- flags,
- user_flags,
- } => (ident as _, c::EVFILT_USER, flags.bits() | user_flags.0),
- EventFilter::Unknown => panic!("unknown filter"),
- };
-
- Event {
- inner: kevent_t {
- ident,
- filter: filter as _,
- flags: flags.bits() as _,
- fflags,
- data: 0,
- udata: {
- // On netbsd, udata is an isize and not a pointer.
- // TODO: Strict provenance, prevent int-to-ptr cast.
- udata as _
- },
- ..unsafe { core::mem::zeroed() }
- },
- }
- }
-
- /// Get the event flags for this event.
- pub fn flags(&self) -> EventFlags {
- EventFlags::from_bits_truncate(self.inner.flags as _)
- }
-
- /// Get the user data for this event.
- pub fn udata(&self) -> isize {
- // On netbsd, udata is an isize and not a pointer.
- // TODO: Strict provenance, prevent ptr-to-int cast.
-
- self.inner.udata as _
- }
-
- /// Get the filter of this event.
- pub fn filter(&self) -> EventFilter {
- match self.inner.filter as _ {
- c::EVFILT_READ => EventFilter::Read(self.inner.ident as _),
- c::EVFILT_WRITE => EventFilter::Write(self.inner.ident as _),
- #[cfg(target_os = "freebsd")]
- c::EVFILT_EMPTY => EventFilter::Empty(self.inner.ident as _),
- c::EVFILT_VNODE => EventFilter::Vnode {
- vnode: self.inner.ident as _,
- flags: VnodeEvents::from_bits_truncate(self.inner.fflags),
- },
- #[cfg(feature = "process")]
- c::EVFILT_PROC => EventFilter::Proc {
- pid: unsafe { crate::process::Pid::from_raw(self.inner.ident as _) }.unwrap(),
- flags: ProcessEvents::from_bits_truncate(self.inner.fflags),
- },
- #[cfg(feature = "process")]
- c::EVFILT_SIGNAL => EventFilter::Signal {
- signal: crate::process::Signal::from_raw(self.inner.ident as _).unwrap(),
- times: self.inner.data as _,
- },
- c::EVFILT_TIMER => EventFilter::Timer({
- let (data, fflags) = (self.inner.data, self.inner.fflags);
- #[cfg(any(apple, target_os = "freebsd", target_os = "netbsd"))]
- match fflags as _ {
- c::NOTE_SECONDS => Some(Duration::from_secs(data as _)),
- c::NOTE_USECONDS => Some(Duration::from_micros(data as _)),
- c::NOTE_NSECONDS => Some(Duration::from_nanos(data as _)),
- _ => {
- // Unknown timer flags.
- None
- }
- }
- #[cfg(any(target_os = "dragonfly", target_os = "openbsd"))]
- Some(Duration::from_millis(data as _))
- }),
- #[cfg(any(apple, freebsdlike))]
- c::EVFILT_USER => EventFilter::User {
- ident: self.inner.ident as _,
- flags: UserFlags::from_bits_truncate(self.inner.fflags),
- user_flags: UserDefinedFlags(self.inner.fflags & EVFILT_USER_FLAGS),
- },
- _ => EventFilter::Unknown,
- }
- }
-}
-
-/// Bottom 24 bits of a u32.
-#[cfg(any(apple, freebsdlike))]
-const EVFILT_USER_FLAGS: u32 = 0x00ff_ffff;
-
-/// The possible filters for a `kqueue`.
-#[repr(i16)]
-#[non_exhaustive]
-pub enum EventFilter {
- /// A read filter.
- Read(RawFd),
-
- /// A write filter.
- Write(RawFd),
-
- /// An empty filter.
- #[cfg(target_os = "freebsd")]
- Empty(RawFd),
-
- /// A VNode filter.
- Vnode {
- /// The file descriptor we looked for events in.
- vnode: RawFd,
-
- /// The flags for this event.
- flags: VnodeEvents,
- },
-
- /// A process filter.
- #[cfg(feature = "process")]
- Proc {
- /// The process ID we waited on.
- pid: crate::process::Pid,
-
- /// The flags for this event.
- flags: ProcessEvents,
- },
-
- /// A signal filter.
- #[cfg(feature = "process")]
- Signal {
- /// The signal number we waited on.
- signal: crate::process::Signal,
-
- /// The number of times the signal has been
- /// received since the last call to kevent.
- times: usize,
- },
-
- /// A timer filter.
- Timer(Option<Duration>),
-
- /// A user filter.
- #[cfg(any(apple, freebsdlike))]
- User {
- /// The identifier for this event.
- ident: intptr_t,
-
- /// The flags for this event.
- flags: UserFlags,
-
- /// The user-defined flags for this event.
- user_flags: UserDefinedFlags,
- },
-
- /// This filter is unknown.
- ///
- /// # Panics
- ///
- /// Passing this into `Event::new()` will result in a panic.
- Unknown,
-}
-
-bitflags::bitflags! {
- /// The flags for a `kqueue` event.
- pub struct EventFlags: u16 {
- /// Add the event to the `kqueue`.
- const ADD = c::EV_ADD as _;
-
- /// Enable the event.
- const ENABLE = c::EV_ENABLE as _;
-
- /// Disable the event.
- const DISABLE = c::EV_DISABLE as _;
-
- /// Delete the event from the `kqueue`.
- const DELETE = c::EV_DELETE as _;
-
- /// TODO
- const RECEIPT = c::EV_RECEIPT as _;
-
- /// Clear the event after it is triggered.
- const ONESHOT = c::EV_ONESHOT as _;
-
- /// TODO
- const CLEAR = c::EV_CLEAR as _;
-
- /// TODO
- const EOF = c::EV_EOF as _;
-
- /// TODO
- const ERROR = c::EV_ERROR as _;
- }
-}
-
-bitflags::bitflags! {
- /// The flags for a virtual node event.
- pub struct VnodeEvents: u32 {
- /// The file was deleted.
- const DELETE = c::NOTE_DELETE;
-
- /// The file was written to.
- const WRITE = c::NOTE_WRITE;
-
- /// The file was extended.
- const EXTEND = c::NOTE_EXTEND;
-
- /// The file had its attributes changed.
- const ATTRIBUTES = c::NOTE_ATTRIB;
-
- /// The file was renamed.
- const RENAME = c::NOTE_RENAME;
-
- /// Access to the file was revoked.
- const REVOKE = c::NOTE_REVOKE;
-
- /// The link count of the file has changed.
- const LINK = c::NOTE_LINK;
- }
-}
-
-#[cfg(feature = "process")]
-bitflags::bitflags! {
- /// The flags for a process event.
- pub struct ProcessEvents: u32 {
- /// The process exited.
- const EXIT = c::NOTE_EXIT;
-
- /// The process forked itself.
- const FORK = c::NOTE_FORK;
-
- /// The process executed a new process.
- const EXEC = c::NOTE_EXEC;
-
- /// Follow the process through fork() calls (write only).
- const TRACK = c::NOTE_TRACK;
-
- /// An error has occurred with following the process.
- const TRACKERR = c::NOTE_TRACKERR;
- }
-}
-
-#[cfg(any(apple, freebsdlike))]
-bitflags::bitflags! {
- /// The flags for a user event.
- pub struct UserFlags: u32 {
- /// Ignore the user input flags.
- const NOINPUT = c::NOTE_FFNOP;
-
- /// Bitwise AND fflags.
- const AND = c::NOTE_FFAND;
-
- /// Bitwise OR fflags.
- const OR = c::NOTE_FFOR;
-
- /// Copy fflags.
- const COPY = c::NOTE_FFCOPY;
-
- /// Control mask for operations.
- const CTRLMASK = c::NOTE_FFCTRLMASK;
-
- /// User defined flags for masks.
- const UDFMASK = c::NOTE_FFLAGSMASK;
-
- /// Trigger the event.
- const TRIGGER = c::NOTE_TRIGGER;
- }
-}
-
-/// User-defined flags.
-///
-/// Only the lower 24 bits are used in this struct.
-#[repr(transparent)]
-#[cfg(any(apple, freebsdlike))]
-#[derive(Clone, Copy, Debug, Eq, PartialEq)]
-pub struct UserDefinedFlags(u32);
-
-#[cfg(any(apple, freebsdlike))]
-impl UserDefinedFlags {
- /// Create a new `UserDefinedFlags` from a `u32`.
- pub fn new(flags: u32) -> Self {
- Self(flags & EVFILT_USER_FLAGS)
- }
-
- /// Get the underlying `u32`.
- pub fn get(self) -> u32 {
- self.0
- }
-}
-
-/// `kqueue()`—Create a new `kqueue` file descriptor.
-///
-/// # References
-/// - [Apple]
-/// - [FreeBSD]
-/// - [OpenBSD]
-/// - [NetBSD]
-/// - [DragonflyBSD]
-///
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/kqueue.2.html
-/// [FreeBSD]: https://www.freebsd.org/cgi/man.cgi?query=kqueue&sektion=2
-/// [OpenBSD]: https://man.openbsd.org/kqueue.2
-/// [NetBSD]: https://man.netbsd.org/kqueue.2
-/// [DragonflyBSD]: https://www.dragonflybsd.org/cgi/web-man/?command=kqueue
-pub fn kqueue() -> io::Result<OwnedFd> {
- syscalls::kqueue()
-}
-
-/// `kevent(kqueue, changelist, eventlist, timeout)`—Wait for events on a
-/// `kqueue`.
-///
-/// Note: in order to receive events, make sure to allocate capacity in the
-/// eventlist! Otherwise, the function will return immediately.
-///
-/// # Safety
-///
-/// The file descriptors referred to by the `Event` structs must be valid for
-/// the lifetime of the `kqueue` file descriptor.
-///
-/// # References
-/// - [Apple]
-/// - [FreeBSD]
-/// - [OpenBSD]
-/// - [NetBSD]
-/// - [DragonflyBSD]
-///
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/kevent.2.html
-/// [FreeBSD]: https://www.freebsd.org/cgi/man.cgi?query=kevent&sektion=2
-/// [OpenBSD]: https://man.openbsd.org/kevent.2
-/// [NetBSD]: https://man.netbsd.org/kevent.2
-/// [DragonflyBSD]: https://www.dragonflybsd.org/cgi/web-man/?command=kevent
-pub unsafe fn kevent(
- kqueue: impl AsFd,
- changelist: &[Event],
- eventlist: &mut Vec<Event>,
- timeout: Option<Duration>,
-) -> io::Result<usize> {
- let timeout = timeout.map(|timeout| crate::backend::c::timespec {
- tv_sec: timeout.as_secs() as _,
- tv_nsec: timeout.subsec_nanos() as _,
- });
-
- // Populate the event list with events.
- eventlist.set_len(0);
- let out_slice =
- slice_from_raw_parts_mut(eventlist.as_mut_ptr() as *mut _, eventlist.capacity());
- let res = syscalls::kevent(
- kqueue.as_fd(),
- changelist,
- &mut *out_slice,
- timeout.as_ref(),
- )
- .map(|res| res as _);
-
- // Update the event list.
- if let Ok(len) = res {
- eventlist.set_len(len);
- }
-
- res
-}
diff --git a/vendor/rustix-0.37.6/src/io/mod.rs b/vendor/rustix-0.37.6/src/io/mod.rs
deleted file mode 100644
index 4e9b3e23a..000000000
--- a/vendor/rustix-0.37.6/src/io/mod.rs
+++ /dev/null
@@ -1,54 +0,0 @@
-//! I/O operations.
-
-mod close;
-#[cfg(not(windows))]
-mod dup;
-mod errno;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-mod eventfd;
-#[cfg(not(windows))]
-mod fcntl;
-#[cfg(not(feature = "std"))]
-pub(crate) mod fd;
-mod ioctl;
-#[cfg(not(any(windows, target_os = "redox")))]
-mod is_read_write;
-#[cfg(bsd)]
-pub mod kqueue;
-#[cfg(not(any(windows, target_os = "wasi")))]
-mod pipe;
-mod poll;
-#[cfg(solarish)]
-pub mod port;
-#[cfg(all(feature = "procfs", any(target_os = "android", target_os = "linux")))]
-mod procfs;
-#[cfg(not(windows))]
-mod read_write;
-mod seek_from;
-#[cfg(not(windows))]
-mod stdio;
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub use crate::backend::io::epoll;
-pub use close::close;
-#[cfg(not(windows))]
-pub use dup::*;
-pub use errno::{retry_on_intr, Errno, Result};
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub use eventfd::{eventfd, EventfdFlags};
-#[cfg(not(windows))]
-pub use fcntl::*;
-pub use ioctl::*;
-#[cfg(not(any(windows, target_os = "redox")))]
-#[cfg(all(feature = "fs", feature = "net"))]
-pub use is_read_write::is_read_write;
-#[cfg(not(any(windows, target_os = "wasi")))]
-pub use pipe::*;
-pub use poll::{poll, PollFd, PollFlags};
-#[cfg(all(feature = "procfs", any(target_os = "android", target_os = "linux")))]
-pub use procfs::*;
-#[cfg(not(windows))]
-pub use read_write::*;
-pub use seek_from::SeekFrom;
-#[cfg(not(windows))]
-pub use stdio::*;
diff --git a/vendor/rustix-0.37.6/src/io/pipe.rs b/vendor/rustix-0.37.6/src/io/pipe.rs
deleted file mode 100644
index 9d4b081c5..000000000
--- a/vendor/rustix-0.37.6/src/io/pipe.rs
+++ /dev/null
@@ -1,132 +0,0 @@
-//! `pipe` and related APIs.
-//!
-//! # Safety
-//!
-//! `vmsplice` is an unsafe function.
-
-#![allow(unsafe_code)]
-
-use crate::fd::OwnedFd;
-use crate::{backend, io};
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use backend::fd::AsFd;
-
-#[cfg(not(apple))]
-pub use backend::io::types::PipeFlags;
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub use backend::io::types::{IoSliceRaw, SpliceFlags};
-
-/// `PIPE_BUF`—The maximum length at which writes to a pipe are atomic.
-///
-/// # References
-/// - [Linux]
-/// - [POSIX]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man7/pipe.7.html
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html
-#[cfg(not(any(
- solarish,
- windows,
- target_os = "haiku",
- target_os = "redox",
- target_os = "wasi",
-)))]
-pub const PIPE_BUF: usize = backend::io::types::PIPE_BUF;
-
-/// `pipe()`—Creates a pipe.
-///
-/// This function creates a pipe and returns two file descriptors, for the
-/// reading and writing ends of the pipe, respectively.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/pipe.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/pipe.2.html
-#[inline]
-pub fn pipe() -> io::Result<(OwnedFd, OwnedFd)> {
- backend::io::syscalls::pipe()
-}
-
-/// `pipe2(flags)`—Creates a pipe, with flags.
-///
-/// This function creates a pipe and returns two file descriptors, for the
-/// reading and writing ends of the pipe, respectively.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/pipe2.2.html
-#[cfg(not(any(apple, target_os = "aix", target_os = "haiku")))]
-#[inline]
-#[doc(alias = "pipe2")]
-pub fn pipe_with(flags: PipeFlags) -> io::Result<(OwnedFd, OwnedFd)> {
- backend::io::syscalls::pipe_with(flags)
-}
-
-/// `splice(fd_in, off_in, fd_out, off_out, len, flags)`—Transfer data between
-/// a file and a pipe.
-///
-/// This function transfers up to `len` bytes of data from the file descriptor
-/// `fd_in` to the file descriptor `fd_out`, where one of the file descriptors
-/// must refer to a pipe.
-///
-/// `off_*` must be `None` if the corresponding fd refers to a pipe.
-/// Otherwise its value points to the starting offset to the file,
-/// from which the data is read/written.
-/// on success the number of bytes read/written is added to the offset.
-///
-/// passing `None` causes the read/write to start from the file offset,
-/// and the file offset is adjusted appropriately.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/splice.2.html
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub fn splice<FdIn: AsFd, FdOut: AsFd>(
- fd_in: FdIn,
- off_in: Option<&mut u64>,
- fd_out: FdOut,
- off_out: Option<&mut u64>,
- len: usize,
- flags: SpliceFlags,
-) -> io::Result<usize> {
- backend::io::syscalls::splice(fd_in.as_fd(), off_in, fd_out.as_fd(), off_out, len, flags)
-}
-
-/// `vmsplice(fd, bufs, flags)`—Transfer data between memory and a pipe.
-///
-/// If `fd` is the write end of the pipe,
-/// the function maps the memory pointer at by `bufs` to the pipe.
-///
-/// If `fd` is the read end of the pipe,
-/// the function writes data from the pipe to said memory.
-///
-/// # Safety
-///
-/// If the memory must not be mutated (such as when `bufs` were originally
-/// immutable slices), it is up to the caller to ensure that the write end of
-/// the pipe is placed in `fd`.
-///
-/// Additionally if `SpliceFlags::GIFT` is set, the caller must also ensure
-/// that the contents of `bufs` in never modified following the call,
-/// and that all of the pointers in `bufs` are page aligned,
-/// and the lengths are multiples of a page size in bytes.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/vmsplice.2.html
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub unsafe fn vmsplice<PipeFd: AsFd>(
- fd: PipeFd,
- bufs: &[io::IoSliceRaw],
- flags: SpliceFlags,
-) -> io::Result<usize> {
- backend::io::syscalls::vmsplice(fd.as_fd(), bufs, flags)
-}
diff --git a/vendor/rustix-0.37.6/src/io/poll.rs b/vendor/rustix-0.37.6/src/io/poll.rs
deleted file mode 100644
index 01f625af2..000000000
--- a/vendor/rustix-0.37.6/src/io/poll.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-use crate::{backend, io};
-
-pub use backend::io::poll_fd::{PollFd, PollFlags};
-
-/// `poll(self.fds, timeout)`
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/poll.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/poll.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/poll.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsapoll
-#[inline]
-pub fn poll(fds: &mut [PollFd<'_>], timeout: i32) -> io::Result<usize> {
- backend::io::syscalls::poll(fds, timeout)
-}
diff --git a/vendor/rustix-0.37.6/src/io/port.rs b/vendor/rustix-0.37.6/src/io/port.rs
deleted file mode 100644
index 4eb0bcd9e..000000000
--- a/vendor/rustix-0.37.6/src/io/port.rs
+++ /dev/null
@@ -1,151 +0,0 @@
-//! Solaris/illumos event ports.
-
-use crate::backend::c;
-use crate::backend::io::syscalls;
-use crate::fd::{AsFd, AsRawFd, OwnedFd};
-use crate::io;
-
-use super::PollFlags;
-
-use core::convert::TryInto;
-use core::time::Duration;
-
-/// The structure representing a port event.
-#[repr(transparent)]
-pub struct Event(pub(crate) c::port_event);
-
-impl Event {
- /// Get the events associated with this event.
- pub fn events(&self) -> i32 {
- self.0.portev_events
- }
-
- /// Get the event source associated with this event.
- pub fn object(&self) -> usize {
- self.0.portev_object
- }
-
- /// Get the userdata associated with this event.
- pub fn userdata(&self) -> *mut c::c_void {
- self.0.portev_user
- }
-}
-
-/// `port_create()`—Creates a new port.
-///
-/// # References
-/// - [OpenSolaris]
-/// - [illumos]
-///
-/// [OpenSolaris]: https://www.unix.com/man-page/opensolaris/3C/port_create/
-/// [illumos]: https://illumos.org/man/3C/port_create
-pub fn port_create() -> io::Result<OwnedFd> {
- syscalls::port_create()
-}
-
-/// `port_associate(_, PORT_SOURCE_FD, _, _, _)`—Associates a file descriptor
-/// with a port.
-///
-/// # Safety
-///
-/// Any `object`s passed into the `port` must be valid for the lifetime of the
-/// `port`. Logically, `port` keeps a borrowed reference to the `object` until
-/// it is removed via `port_dissociate_fd`.
-///
-/// # References
-/// - [OpenSolaris]
-/// - [illumos]
-///
-/// [OpenSolaris]: https://www.unix.com/man-page/opensolaris/3C/port_associate/
-/// [illumos]: https://illumos.org/man/3C/port_associate
-pub unsafe fn port_associate_fd(
- port: impl AsFd,
- object: impl AsRawFd,
- events: PollFlags,
- userdata: *mut c::c_void,
-) -> io::Result<()> {
- syscalls::port_associate(
- port.as_fd(),
- c::PORT_SOURCE_FD,
- object.as_raw_fd() as _,
- events.bits() as _,
- userdata.cast(),
- )
-}
-
-/// `port_dissociate(_, PORT_SOURCE_FD, _)`—Dissociates a file descriptor from
-/// a port.
-///
-/// # Safety
-///
-/// The file descriptor passed into this function must have been previously
-/// associated with the port via [`port_associate_fd`].
-///
-/// # References
-/// - [OpenSolaris]
-/// - [illumos]
-///
-/// [OpenSolaris]: https://www.unix.com/man-page/opensolaris/3C/port_dissociate
-/// [illumos]: https://illumos.org/man/3C/port_dissociate
-pub unsafe fn port_dissociate_fd(port: impl AsFd, object: impl AsRawFd) -> io::Result<()> {
- syscalls::port_dissociate(port.as_fd(), c::PORT_SOURCE_FD, object.as_raw_fd() as _)
-}
-
-/// `port_get(port, timeout)`—Gets an event from a port.
-///
-/// # References
-/// - [OpenSolaris]
-/// - [illumos]
-///
-/// [OpenSolaris]: https://www.unix.com/man-page/opensolaris/3C/port_get/
-/// [illumos]: https://illumos.org/man/3C/port_get
-pub fn port_get(port: impl AsFd, timeout: Option<Duration>) -> io::Result<Event> {
- let mut timeout = timeout.map(|timeout| c::timespec {
- tv_sec: timeout.as_secs().try_into().unwrap(),
- tv_nsec: timeout.subsec_nanos() as _,
- });
-
- syscalls::port_get(port.as_fd(), timeout.as_mut())
-}
-
-/// `port_getn(port, events, min_events, timeout)`—Gets multiple events from a
-/// port.
-///
-/// # References
-/// - [OpenSolaris]
-/// - [illumos]
-///
-/// [OpenSolaris]: https://www.unix.com/man-page/opensolaris/3C/port_getn/
-/// [illumos]: https://illumos.org/man/3C/port_getn
-pub fn port_getn(
- port: impl AsFd,
- events: &mut Vec<Event>,
- min_events: usize,
- timeout: Option<Duration>,
-) -> io::Result<()> {
- events.clear();
-
- let mut timeout = timeout.map(|timeout| c::timespec {
- tv_sec: timeout.as_secs().try_into().unwrap(),
- tv_nsec: timeout.subsec_nanos() as _,
- });
-
- syscalls::port_getn(
- port.as_fd(),
- timeout.as_mut(),
- events,
- min_events.try_into().unwrap(),
- )
-}
-
-/// `port_send(port, events, userdata)`—Sends an event to a port.
-///
-/// # References
-/// - [OpenSolaris]
-/// - [illumos]
-///
-/// [OpenSolaris]: https://www.unix.com/man-page/opensolaris/3C/port_send/
-/// [illumos]: https://illumos.org/man/3C/port_send
-pub fn port_send(port: impl AsFd, events: i32, userdata: *mut c::c_void) -> io::Result<()> {
- syscalls::port_send(port.as_fd(), events, userdata.cast())
-}
diff --git a/vendor/rustix-0.37.6/src/io/procfs.rs b/vendor/rustix-0.37.6/src/io/procfs.rs
deleted file mode 100644
index c6eeb08e0..000000000
--- a/vendor/rustix-0.37.6/src/io/procfs.rs
+++ /dev/null
@@ -1,464 +0,0 @@
-//! Utilities for working with `/proc`, where Linux's `procfs` is typically
-//! mounted. `/proc` serves as an adjunct to Linux's main syscall surface area,
-//! providing additional features with an awkward interface.
-//!
-//! This module does a considerable amount of work to determine whether `/proc`
-//! is mounted, with actual `procfs`, and without any additional mount points
-//! on top of the paths we open.
-//!
-//! Why all the effort to detect bind mount points? People are doing all kinds
-//! of things with Linux containers these days, with many different privilege
-//! schemes, and we want to avoid making any unnecessary assumptions. Rustix
-//! and its users will sometimes use procfs *implicitly* (when Linux gives them
-//! no better options), in ways that aren't obvious from their public APIs.
-//! These filesystem accesses might not be visible to someone auditing the main
-//! code of an application for places which may be influenced by the filesystem
-//! namespace. So with the checking here, they may fail, but they won't be able
-//! to succeed with bogus results.
-
-use crate::fd::{AsFd, BorrowedFd, OwnedFd};
-use crate::ffi::CStr;
-use crate::fs::{
- cwd, fstat, fstatfs, major, openat, renameat, Dir, FileType, Mode, OFlags, Stat,
- PROC_SUPER_MAGIC,
-};
-use crate::io;
-use crate::path::DecInt;
-use crate::process::getpid;
-#[cfg(feature = "rustc-dep-of-std")]
-use core::lazy::OnceCell;
-#[cfg(not(feature = "rustc-dep-of-std"))]
-use once_cell::sync::OnceCell;
-
-/// Linux's procfs always uses inode 1 for its root directory.
-const PROC_ROOT_INO: u64 = 1;
-
-// Identify an entry within "/proc", to determine which anomalies to check for.
-#[derive(Copy, Clone, Debug)]
-enum Kind {
- Proc,
- Pid,
- Fd,
- File,
-}
-
-/// Check a subdirectory of "/proc" for anomalies.
-fn check_proc_entry(
- kind: Kind,
- entry: BorrowedFd<'_>,
- proc_stat: Option<&Stat>,
-) -> io::Result<Stat> {
- let entry_stat = fstat(entry)?;
- check_proc_entry_with_stat(kind, entry, entry_stat, proc_stat)
-}
-
-/// Check a subdirectory of "/proc" for anomalies, using the provided `Stat`.
-fn check_proc_entry_with_stat(
- kind: Kind,
- entry: BorrowedFd<'_>,
- entry_stat: Stat,
- proc_stat: Option<&Stat>,
-) -> io::Result<Stat> {
- // Check the filesystem magic.
- check_procfs(entry)?;
-
- match kind {
- Kind::Proc => check_proc_root(entry, &entry_stat)?,
- Kind::Pid | Kind::Fd => check_proc_subdir(entry, &entry_stat, proc_stat)?,
- Kind::File => check_proc_file(&entry_stat, proc_stat)?,
- }
-
- // "/proc" directories are typically mounted r-xr-xr-x.
- // "/proc/self/fd" is r-x------. Allow them to have fewer permissions, but
- // not more.
- let expected_mode = if let Kind::Fd = kind { 0o500 } else { 0o555 };
- if entry_stat.st_mode & 0o777 & !expected_mode != 0 {
- return Err(io::Errno::NOTSUP);
- }
-
- match kind {
- Kind::Fd => {
- // Check that the "/proc/self/fd" directory doesn't have any extraneous
- // links into it (which might include unexpected subdirectories).
- if entry_stat.st_nlink != 2 {
- return Err(io::Errno::NOTSUP);
- }
- }
- Kind::Pid | Kind::Proc => {
- // Check that the "/proc" and "/proc/self" directories aren't empty.
- if entry_stat.st_nlink <= 2 {
- return Err(io::Errno::NOTSUP);
- }
- }
- Kind::File => {
- // Check that files in procfs don't have extraneous hard links to
- // them (which might indicate hard links to other things).
- if entry_stat.st_nlink != 1 {
- return Err(io::Errno::NOTSUP);
- }
- }
- }
-
- Ok(entry_stat)
-}
-
-fn check_proc_root(entry: BorrowedFd<'_>, stat: &Stat) -> io::Result<()> {
- // We use `O_DIRECTORY` for proc directories, so open should fail if we
- // don't get a directory when we expect one.
- assert_eq!(FileType::from_raw_mode(stat.st_mode), FileType::Directory);
-
- // Check the root inode number.
- if stat.st_ino != PROC_ROOT_INO {
- return Err(io::Errno::NOTSUP);
- }
-
- // Proc is a non-device filesystem, so check for major number 0.
- // <https://www.kernel.org/doc/Documentation/admin-guide/devices.txt>
- if major(stat.st_dev) != 0 {
- return Err(io::Errno::NOTSUP);
- }
-
- // Check that "/proc" is a mountpoint.
- if !is_mountpoint(entry) {
- return Err(io::Errno::NOTSUP);
- }
-
- Ok(())
-}
-
-fn check_proc_subdir(
- entry: BorrowedFd<'_>,
- stat: &Stat,
- proc_stat: Option<&Stat>,
-) -> io::Result<()> {
- // We use `O_DIRECTORY` for proc directories, so open should fail if we
- // don't get a directory when we expect one.
- assert_eq!(FileType::from_raw_mode(stat.st_mode), FileType::Directory);
-
- check_proc_nonroot(stat, proc_stat)?;
-
- // Check that subdirectories of "/proc" are not mount points.
- if is_mountpoint(entry) {
- return Err(io::Errno::NOTSUP);
- }
-
- Ok(())
-}
-
-fn check_proc_file(stat: &Stat, proc_stat: Option<&Stat>) -> io::Result<()> {
- // Check that we have a regular file.
- if FileType::from_raw_mode(stat.st_mode) != FileType::RegularFile {
- return Err(io::Errno::NOTSUP);
- }
-
- check_proc_nonroot(stat, proc_stat)?;
-
- Ok(())
-}
-
-fn check_proc_nonroot(stat: &Stat, proc_stat: Option<&Stat>) -> io::Result<()> {
- // Check that we haven't been linked back to the root of "/proc".
- if stat.st_ino == PROC_ROOT_INO {
- return Err(io::Errno::NOTSUP);
- }
-
- // Check that we're still in procfs.
- if stat.st_dev != proc_stat.unwrap().st_dev {
- return Err(io::Errno::NOTSUP);
- }
-
- Ok(())
-}
-
-/// Check that `file` is opened on a `procfs` filesystem.
-fn check_procfs(file: BorrowedFd<'_>) -> io::Result<()> {
- let statfs = fstatfs(file)?;
- let f_type = statfs.f_type;
- if f_type != PROC_SUPER_MAGIC {
- return Err(io::Errno::NOTSUP);
- }
-
- Ok(())
-}
-
-/// Check whether the given directory handle is a mount point. We use a
-/// `renameat` call that would otherwise fail, but which fails with `EXDEV`
-/// first if it would cross a mount point.
-fn is_mountpoint(file: BorrowedFd<'_>) -> bool {
- let err = renameat(file, cstr!("../."), file, cstr!(".")).unwrap_err();
- match err {
- io::Errno::XDEV => true, // the rename failed due to crossing a mount point
- io::Errno::BUSY => false, // the rename failed normally
- _ => panic!("Unexpected error from `renameat`: {:?}", err),
- }
-}
-
-/// Open a directory in `/proc`, mapping all errors to `io::Errno::NOTSUP`.
-fn proc_opendirat<P: crate::path::Arg, Fd: AsFd>(dirfd: Fd, path: P) -> io::Result<OwnedFd> {
- // We could add `PATH`|`NOATIME` here but Linux 2.6.32 doesn't support it.
- // Also for `NOATIME` see the comment in `open_and_check_file`.
- let oflags = OFlags::NOFOLLOW | OFlags::DIRECTORY | OFlags::CLOEXEC | OFlags::NOCTTY;
- openat(dirfd, path, oflags, Mode::empty()).map_err(|_err| io::Errno::NOTSUP)
-}
-
-/// Returns a handle to Linux's `/proc` directory.
-///
-/// This ensures that `/proc` is procfs, that nothing is mounted on top of it,
-/// and that it looks normal. It also returns the `Stat` of `/proc`.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html
-fn proc() -> io::Result<(BorrowedFd<'static>, &'static Stat)> {
- static PROC: StaticFd = StaticFd::new();
-
- // `OnceBox` is "racey" in that the initialization function may run
- // multiple times. We're ok with that, since the initialization function
- // has no side effects.
- PROC.get_or_try_init(|| {
- // Open "/proc".
- let proc = proc_opendirat(cwd(), cstr!("/proc"))?;
- let proc_stat =
- check_proc_entry(Kind::Proc, proc.as_fd(), None).map_err(|_err| io::Errno::NOTSUP)?;
-
- Ok(new_static_fd(proc, proc_stat))
- })
- .map(|(fd, stat)| (fd.as_fd(), stat))
-}
-
-/// Returns a handle to Linux's `/proc/self` directory.
-///
-/// This ensures that `/proc/self` is procfs, that nothing is mounted on top of
-/// it, and that it looks normal. It also returns the `Stat` of `/proc/self`.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html
-fn proc_self() -> io::Result<(BorrowedFd<'static>, &'static Stat)> {
- static PROC_SELF: StaticFd = StaticFd::new();
-
- // The init function here may run multiple times; see above.
- PROC_SELF
- .get_or_try_init(|| {
- let (proc, proc_stat) = proc()?;
-
- let pid = getpid();
-
- // Open "/proc/self". Use our pid to compute the name rather than literally
- // using "self", as "self" is a symlink.
- let proc_self = proc_opendirat(proc, DecInt::new(pid.as_raw_nonzero().get()))?;
- let proc_self_stat = check_proc_entry(Kind::Pid, proc_self.as_fd(), Some(proc_stat))
- .map_err(|_err| io::Errno::NOTSUP)?;
-
- Ok(new_static_fd(proc_self, proc_self_stat))
- })
- .map(|(owned, stat)| (owned.as_fd(), stat))
-}
-
-/// Returns a handle to Linux's `/proc/self/fd` directory.
-///
-/// This ensures that `/proc/self/fd` is `procfs`, that nothing is mounted on
-/// top of it, and that it looks normal.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html
-#[cfg_attr(doc_cfg, doc(cfg(feature = "procfs")))]
-pub fn proc_self_fd() -> io::Result<BorrowedFd<'static>> {
- static PROC_SELF_FD: StaticFd = StaticFd::new();
-
- // The init function here may run multiple times; see above.
- PROC_SELF_FD
- .get_or_try_init(|| {
- let (_, proc_stat) = proc()?;
-
- let (proc_self, _proc_self_stat) = proc_self()?;
-
- // Open "/proc/self/fd".
- let proc_self_fd = proc_opendirat(proc_self, cstr!("fd"))?;
- let proc_self_fd_stat =
- check_proc_entry(Kind::Fd, proc_self_fd.as_fd(), Some(proc_stat))
- .map_err(|_err| io::Errno::NOTSUP)?;
-
- Ok(new_static_fd(proc_self_fd, proc_self_fd_stat))
- })
- .map(|(owned, _stat)| owned.as_fd())
-}
-
-type StaticFd = OnceCell<(OwnedFd, Stat)>;
-
-#[inline]
-fn new_static_fd(fd: OwnedFd, stat: Stat) -> (OwnedFd, Stat) {
- (fd, stat)
-}
-
-/// Returns a handle to Linux's `/proc/self/fdinfo` directory.
-///
-/// This ensures that `/proc/self/fdinfo` is `procfs`, that nothing is mounted
-/// on top of it, and that it looks normal. It also returns the `Stat` of
-/// `/proc/self/fd`.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html
-fn proc_self_fdinfo() -> io::Result<(BorrowedFd<'static>, &'static Stat)> {
- static PROC_SELF_FDINFO: StaticFd = StaticFd::new();
-
- PROC_SELF_FDINFO
- .get_or_try_init(|| {
- let (_, proc_stat) = proc()?;
-
- let (proc_self, _proc_self_stat) = proc_self()?;
-
- // Open "/proc/self/fdinfo".
- let proc_self_fdinfo = proc_opendirat(proc_self, cstr!("fdinfo"))?;
- let proc_self_fdinfo_stat =
- check_proc_entry(Kind::Fd, proc_self_fdinfo.as_fd(), Some(proc_stat))
- .map_err(|_err| io::Errno::NOTSUP)?;
-
- Ok((proc_self_fdinfo, proc_self_fdinfo_stat))
- })
- .map(|(owned, stat)| (owned.as_fd(), stat))
-}
-
-/// Returns a handle to a Linux `/proc/self/fdinfo/<fd>` file.
-///
-/// This ensures that `/proc/self/fdinfo/<fd>` is `procfs`, that nothing is
-/// mounted on top of it, and that it looks normal.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html
-#[inline]
-#[cfg_attr(doc_cfg, doc(cfg(feature = "procfs")))]
-pub fn proc_self_fdinfo_fd<Fd: AsFd>(fd: Fd) -> io::Result<OwnedFd> {
- _proc_self_fdinfo(fd.as_fd())
-}
-
-fn _proc_self_fdinfo(fd: BorrowedFd<'_>) -> io::Result<OwnedFd> {
- let (proc_self_fdinfo, proc_self_fdinfo_stat) = proc_self_fdinfo()?;
- let fd_str = DecInt::from_fd(fd);
- open_and_check_file(proc_self_fdinfo, proc_self_fdinfo_stat, fd_str.as_c_str())
-}
-
-/// Returns a handle to a Linux `/proc/self/pagemap` file.
-///
-/// This ensures that `/proc/self/pagemap` is `procfs`, that nothing is
-/// mounted on top of it, and that it looks normal.
-///
-/// # References
-/// - [Linux]
-/// - [Linux pagemap]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html
-/// [Linux pagemap]: https://www.kernel.org/doc/Documentation/vm/pagemap.txt
-#[inline]
-#[cfg_attr(doc_cfg, doc(cfg(feature = "procfs")))]
-pub fn proc_self_pagemap() -> io::Result<OwnedFd> {
- proc_self_file(cstr!("pagemap"))
-}
-
-/// Returns a handle to a Linux `/proc/self/maps` file.
-///
-/// This ensures that `/proc/self/maps` is `procfs`, that nothing is
-/// mounted on top of it, and that it looks normal.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html
-#[inline]
-#[cfg_attr(doc_cfg, doc(cfg(feature = "procfs")))]
-pub fn proc_self_maps() -> io::Result<OwnedFd> {
- proc_self_file(cstr!("maps"))
-}
-
-/// Returns a handle to a Linux `/proc/self/status` file.
-///
-/// This ensures that `/proc/self/status` is `procfs`, that nothing is
-/// mounted on top of it, and that it looks normal.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html
-#[inline]
-#[cfg_attr(doc_cfg, doc(cfg(feature = "procfs")))]
-pub fn proc_self_status() -> io::Result<OwnedFd> {
- proc_self_file(cstr!("status"))
-}
-
-/// Open a file under `/proc/self`.
-fn proc_self_file(name: &CStr) -> io::Result<OwnedFd> {
- let (proc_self, proc_self_stat) = proc_self()?;
- open_and_check_file(proc_self, proc_self_stat, name)
-}
-
-/// Open a procfs file within in `dir` and check it for bind mounts.
-fn open_and_check_file(dir: BorrowedFd, dir_stat: &Stat, name: &CStr) -> io::Result<OwnedFd> {
- let (_, proc_stat) = proc()?;
-
- // Don't use `NOATIME`, because it [requires us to own the file], and when
- // a process sets itself non-dumpable Linux changes the user:group of its
- // `/proc/<pid>` files [to root:root].
- //
- // [requires us to own the file]: https://man7.org/linux/man-pages/man2/openat.2.html
- // [to root:root]: https://man7.org/linux/man-pages/man5/proc.5.html
- let oflags = OFlags::RDONLY | OFlags::CLOEXEC | OFlags::NOFOLLOW | OFlags::NOCTTY;
- let file = openat(dir, name, oflags, Mode::empty()).map_err(|_err| io::Errno::NOTSUP)?;
- let file_stat = fstat(&file)?;
-
- // `is_mountpoint` only works on directory mount points, not file mount
- // points. To detect file mount points, scan the parent directory to see
- // if we can find a regular file with an inode and name that matches the
- // file we just opened. If we can't find it, there could be a file bind
- // mount on top of the file we want.
- //
- // As we scan, we also check for ".", to make sure it's the same directory
- // as our original directory, to detect mount points, since
- // `Dir::read_from` reopens ".".
- //
- // TODO: With Linux 5.8 we might be able to use `statx` and
- // `STATX_ATTR_MOUNT_ROOT` to detect mountpoints directly instead of doing
- // this scanning.
- let dir = Dir::read_from(dir).map_err(|_err| io::Errno::NOTSUP)?;
-
- // Confirm that we got the same inode.
- let dot_stat = dir.stat().map_err(|_err| io::Errno::NOTSUP)?;
- if (dot_stat.st_dev, dot_stat.st_ino) != (dir_stat.st_dev, dir_stat.st_ino) {
- return Err(io::Errno::NOTSUP);
- }
-
- let mut found_file = false;
- let mut found_dot = false;
- for entry in dir {
- let entry = entry.map_err(|_err| io::Errno::NOTSUP)?;
- if entry.ino() == file_stat.st_ino
- && entry.file_type() == FileType::RegularFile
- && entry.file_name() == name
- {
- // We found the file. Proceed to check the file handle.
- let _ =
- check_proc_entry_with_stat(Kind::File, file.as_fd(), file_stat, Some(proc_stat))?;
-
- found_file = true;
- } else if entry.ino() == dir_stat.st_ino
- && entry.file_type() == FileType::Directory
- && entry.file_name() == cstr!(".")
- {
- // We found ".", and it's the right ".".
- found_dot = true;
- }
- }
-
- if found_file && found_dot {
- Ok(file)
- } else {
- Err(io::Errno::NOTSUP)
- }
-}
diff --git a/vendor/rustix-0.37.6/src/io/read_write.rs b/vendor/rustix-0.37.6/src/io/read_write.rs
deleted file mode 100644
index d89ce7c7d..000000000
--- a/vendor/rustix-0.37.6/src/io/read_write.rs
+++ /dev/null
@@ -1,177 +0,0 @@
-//! `read` and `write`, optionally positioned, optionally vectored
-
-use crate::{backend, io};
-use backend::fd::AsFd;
-
-// Declare `IoSlice` and `IoSliceMut`.
-#[cfg(not(windows))]
-#[cfg(not(feature = "std"))]
-pub use backend::io::io_slice::{IoSlice, IoSliceMut};
-#[cfg(not(windows))]
-#[cfg(feature = "std")]
-pub use std::io::{IoSlice, IoSliceMut};
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub use backend::io::types::ReadWriteFlags;
-
-/// `read(fd, buf)`—Reads from a stream.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/read.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/read.2.html
-#[inline]
-pub fn read<Fd: AsFd>(fd: Fd, buf: &mut [u8]) -> io::Result<usize> {
- backend::io::syscalls::read(fd.as_fd(), buf)
-}
-
-/// `write(fd, buf)`—Writes to a stream.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/write.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/write.2.html
-#[inline]
-pub fn write<Fd: AsFd>(fd: Fd, buf: &[u8]) -> io::Result<usize> {
- backend::io::syscalls::write(fd.as_fd(), buf)
-}
-
-/// `pread(fd, buf, offset)`—Reads from a file at a given position.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/pread.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/pread.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/pread.2.html
-#[inline]
-pub fn pread<Fd: AsFd>(fd: Fd, buf: &mut [u8], offset: u64) -> io::Result<usize> {
- backend::io::syscalls::pread(fd.as_fd(), buf, offset)
-}
-
-/// `pwrite(fd, bufs)`—Writes to a file at a given position.
-///
-/// Contrary to POSIX, on many popular platforms including Linux and FreeBSD,
-/// if the file is opened in append mode, this ignores the offset appends the
-/// data to the end of the file.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/pwrite.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/pwrite.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/pwrite.2.html
-#[inline]
-pub fn pwrite<Fd: AsFd>(fd: Fd, buf: &[u8], offset: u64) -> io::Result<usize> {
- backend::io::syscalls::pwrite(fd.as_fd(), buf, offset)
-}
-
-/// `readv(fd, bufs)`—Reads from a stream into multiple buffers.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/readv.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/readv.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/readv.2.html
-#[inline]
-pub fn readv<Fd: AsFd>(fd: Fd, bufs: &mut [IoSliceMut<'_>]) -> io::Result<usize> {
- backend::io::syscalls::readv(fd.as_fd(), bufs)
-}
-
-/// `writev(fd, bufs)`—Writes to a stream from multiple buffers.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/writev.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/writev.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/writev.2.html
-#[inline]
-pub fn writev<Fd: AsFd>(fd: Fd, bufs: &[IoSlice<'_>]) -> io::Result<usize> {
- backend::io::syscalls::writev(fd.as_fd(), bufs)
-}
-
-/// `preadv(fd, bufs, offset)`—Reads from a file at a given position into
-/// multiple buffers.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/preadv.2.html
-#[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "solaris")))]
-#[inline]
-pub fn preadv<Fd: AsFd>(fd: Fd, bufs: &mut [IoSliceMut<'_>], offset: u64) -> io::Result<usize> {
- backend::io::syscalls::preadv(fd.as_fd(), bufs, offset)
-}
-
-/// `pwritev(fd, bufs, offset)`—Writes to a file at a given position from
-/// multiple buffers.
-///
-/// Contrary to POSIX, on many popular platforms including Linux and FreeBSD,
-/// if the file is opened in append mode, this ignores the offset appends the
-/// data to the end of the file.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/pwritev.2.html
-#[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "solaris")))]
-#[inline]
-pub fn pwritev<Fd: AsFd>(fd: Fd, bufs: &[IoSlice<'_>], offset: u64) -> io::Result<usize> {
- backend::io::syscalls::pwritev(fd.as_fd(), bufs, offset)
-}
-
-/// `preadv2(fd, bufs, offset, flags)`—Reads data, with several options.
-///
-/// An `offset` of `u64::MAX` means to use and update the current file offset.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/preadv2.2.html
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub fn preadv2<Fd: AsFd>(
- fd: Fd,
- bufs: &mut [IoSliceMut<'_>],
- offset: u64,
- flags: ReadWriteFlags,
-) -> io::Result<usize> {
- backend::io::syscalls::preadv2(fd.as_fd(), bufs, offset, flags)
-}
-
-/// `pwritev2(fd, bufs, offset, flags)`—Writes data, with several options.
-///
-/// An `offset` of `u64::MAX` means to use and update the current file offset.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/pwritev2.2.html
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub fn pwritev2<Fd: AsFd>(
- fd: Fd,
- bufs: &[IoSlice<'_>],
- offset: u64,
- flags: ReadWriteFlags,
-) -> io::Result<usize> {
- backend::io::syscalls::pwritev2(fd.as_fd(), bufs, offset, flags)
-}
diff --git a/vendor/rustix-0.37.6/src/io/seek_from.rs b/vendor/rustix-0.37.6/src/io/seek_from.rs
deleted file mode 100644
index cca23ed62..000000000
--- a/vendor/rustix-0.37.6/src/io/seek_from.rs
+++ /dev/null
@@ -1,48 +0,0 @@
-//! The following is derived from Rust's
-//! library/std/src/io/mod.rs at revision
-//! dca3f1b786efd27be3b325ed1e01e247aa589c3b.
-
-/// Enumeration of possible methods to seek within an I/O object.
-///
-/// It is used by the [`Seek`] trait.
-///
-/// [`Seek`]: std::io::Seek
-#[derive(Copy, PartialEq, Eq, Clone, Debug)]
-#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
-pub enum SeekFrom {
- /// Sets the offset to the provided number of bytes.
- #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
- Start(#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] u64),
-
- /// Sets the offset to the size of this object plus the specified number of
- /// bytes.
- ///
- /// It is possible to seek beyond the end of an object, but it's an error
- /// to seek before byte 0.
- #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
- End(#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] i64),
-
- /// Sets the offset to the current position plus the specified number of
- /// bytes.
- ///
- /// It is possible to seek beyond the end of an object, but it's an error
- /// to seek before byte 0.
- #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
- Current(#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] i64),
-
- /// Sets the offset to the current position plus the specified number of bytes,
- /// plus the distance to the next byte which is not in a hole.
- ///
- /// If the offset is in a hole at the end of the file, the seek will produce
- /// an `NXIO` error.
- #[cfg(any(freebsdlike, target_os = "linux", target_os = "solaris"))]
- Data(i64),
-
- /// Sets the offset to the current position plus the specified number of bytes,
- /// plus the distance to the next byte which is in a hole.
- ///
- /// If there is no hole past the offset, it will be set to the end of the file
- /// i.e. there is an implicit hole at the end of any file.
- #[cfg(any(freebsdlike, target_os = "linux", target_os = "solaris"))]
- Hole(i64),
-}
diff --git a/vendor/rustix-0.37.6/src/io/stdio.rs b/vendor/rustix-0.37.6/src/io/stdio.rs
deleted file mode 100644
index 15af6b005..000000000
--- a/vendor/rustix-0.37.6/src/io/stdio.rs
+++ /dev/null
@@ -1,365 +0,0 @@
-//! Functions returning the stdio file descriptors.
-//!
-//! # Safety
-//!
-//! These access the file descriptors by absolute index value, and nothing
-//! prevents them from being closed and reused. They should only be used in
-//! `main` or other situations where one is in control of the process'
-//! stdio streams.
-#![allow(unsafe_code)]
-
-use crate::backend;
-use crate::fd::OwnedFd;
-use backend::fd::{BorrowedFd, FromRawFd, RawFd};
-
-#[cfg(not(any(windows, target_os = "wasi")))]
-use crate::io;
-#[cfg(not(any(windows, target_os = "wasi")))]
-use backend::fd::AsFd;
-
-/// `STDIN_FILENO`—Standard input, borrowed.
-///
-/// In `std`-using configurations, this is a safe function, because the
-/// standard library already assumes that the stdin file descriptor is always
-/// valid. In `no_std` configurations, it is `unsafe`.
-///
-/// # Warning
-///
-/// This function allows reading directly from stdin without coordinating
-/// with the buffering performed by [`std::io::Stdin`], so it could cause
-/// corrupted input.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdin.html
-/// [Linux]: https://man7.org/linux/man-pages/man3/stdin.3.html
-#[cfg(feature = "std")]
-#[doc(alias = "STDIN_FILENO")]
-#[inline]
-pub const fn stdin() -> BorrowedFd<'static> {
- // SAFETY: When "std" is enabled, the standard library assumes that the stdio
- // file descriptors are all valid.
- unsafe { BorrowedFd::borrow_raw(backend::io::types::STDIN_FILENO as RawFd) }
-}
-
-/// `STDIN_FILENO`—Standard input, borrowed.
-///
-/// In `std`-using configurations, this is a safe function, because the
-/// standard library already assumes that the stdin file descriptor is always
-/// valid. In `no_std` configurations, it is `unsafe`.
-///
-/// # Safety
-///
-/// In `no_std` configurations, the stdin file descriptor can be closed,
-/// potentially on other threads, in which case the file descriptor index
-/// value could be dynamically reused for other purposes, potentially on
-/// different threads.
-///
-/// # Warning
-///
-/// This function allows reading directly from stdin without coordinating
-/// with the buffering performed by [`std::io::Stdin`], so it could cause
-/// corrupted input.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdin.html
-/// [Linux]: https://man7.org/linux/man-pages/man3/stdin.3.html
-#[cfg(not(feature = "std"))]
-#[doc(alias = "STDIN_FILENO")]
-#[inline]
-pub const unsafe fn stdin() -> BorrowedFd<'static> {
- BorrowedFd::borrow_raw(backend::io::types::STDIN_FILENO as RawFd)
-}
-
-/// `STDIN_FILENO`—Standard input, owned.
-///
-/// This is similar to [`stdin`], however it returns an `OwnedFd` which closes
-/// standard input when it is dropped.
-///
-/// # Safety
-///
-/// Safe `std`-using Rust code is permitted to assume that the stdin file
-/// descriptor is always valid. This function returns an `OwnedFd` which will
-/// close the stdin file descriptor when dropped.
-///
-/// # Warning
-///
-/// This has the same hazards as [`stdin`].
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdin.html
-/// [Linux]: https://man7.org/linux/man-pages/man3/stdin.3.html
-#[doc(alias = "STDIN_FILENO")]
-#[inline]
-pub unsafe fn take_stdin() -> OwnedFd {
- backend::fd::OwnedFd::from_raw_fd(backend::io::types::STDIN_FILENO as RawFd)
-}
-
-/// `STDOUT_FILENO`—Standard output, borrowed.
-///
-/// In `std`-using configurations, this is a safe function, because the
-/// standard library already assumes that the stdout file descriptor is always
-/// valid. In `no_std` configurations, it is `unsafe`.
-///
-/// # Warning
-///
-/// This function allows reading directly from stdout without coordinating
-/// with the buffering performed by [`std::io::Stdout`], so it could cause
-/// corrupted input.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdout.html
-/// [Linux]: https://man7.org/linux/man-pages/man3/stdout.3.html
-#[cfg(feature = "std")]
-#[doc(alias = "STDOUT_FILENO")]
-#[inline]
-pub const fn stdout() -> BorrowedFd<'static> {
- // SAFETY: When "std" is enabled, the standard library assumes that the stdio
- // file descriptors are all valid.
- unsafe { BorrowedFd::borrow_raw(backend::io::types::STDOUT_FILENO as RawFd) }
-}
-
-/// `STDOUT_FILENO`—Standard output, borrowed.
-///
-/// In `std`-using configurations, this is a safe function, because the
-/// standard library already assumes that the stdin file descriptor is always
-/// valid. In `no_std` configurations, it is `unsafe`.
-///
-/// # Safety
-///
-/// In `no_std` configurations, the stdout file descriptor can be closed,
-/// potentially on other threads, in which case the file descriptor index
-/// value could be dynamically reused for other purposes, potentially on
-/// different threads.
-///
-/// # Warning
-///
-/// This function allows reading directly from stdout without coordinating
-/// with the buffering performed by [`std::io::Stdout`], so it could cause
-/// corrupted input.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdout.html
-/// [Linux]: https://man7.org/linux/man-pages/man3/stdout.3.html
-#[cfg(not(feature = "std"))]
-#[doc(alias = "STDOUT_FILENO")]
-#[inline]
-pub const unsafe fn stdout() -> BorrowedFd<'static> {
- BorrowedFd::borrow_raw(backend::io::types::STDOUT_FILENO as RawFd)
-}
-
-/// `STDOUT_FILENO`—Standard output, owned.
-///
-/// This is similar to [`stdout`], however it returns an `OwnedFd` which closes
-/// standard output when it is dropped.
-///
-/// # Safety
-///
-/// Safe `std`-using Rust code is permitted to assume that the stdout file
-/// descriptor is always valid. This function returns an `OwnedFd` which will
-/// close the stdout file descriptor when dropped.
-///
-/// # Warning
-///
-/// This has the same hazards as [`stdout`].
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdout.html
-/// [Linux]: https://man7.org/linux/man-pages/man3/stdout.3.html
-#[doc(alias = "STDOUT_FILENO")]
-#[inline]
-pub unsafe fn take_stdout() -> OwnedFd {
- backend::fd::OwnedFd::from_raw_fd(backend::io::types::STDOUT_FILENO as RawFd)
-}
-
-/// `STDERR_FILENO`—Standard error, borrowed.
-///
-/// In `std`-using configurations, this is a safe function, because the
-/// standard library already assumes that the stderr file descriptor is always
-/// valid. In `no_std` configurations, it is `unsafe`.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stderr.html
-/// [Linux]: https://man7.org/linux/man-pages/man3/stderr.3.html
-#[cfg(feature = "std")]
-#[doc(alias = "STDERR_FILENO")]
-#[inline]
-pub const fn stderr() -> BorrowedFd<'static> {
- // SAFETY: When "std" is enabled, the standard library assumes that the stdio
- // file descriptors are all valid.
- unsafe { BorrowedFd::borrow_raw(backend::io::types::STDERR_FILENO as RawFd) }
-}
-
-/// `STDERR_FILENO`—Standard error, borrowed.
-///
-/// In `std`-using configurations, this is a safe function, because the
-/// standard library already assumes that the stderr file descriptor is always
-/// valid. In `no_std` configurations, it is `unsafe`.
-///
-/// # Safety
-///
-/// In `no_std` configurations, the stderr file descriptor can be closed,
-/// potentially on other threads, in which case the file descriptor index
-/// value could be dynamically reused for other purposes, potentially on
-/// different threads.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stderr.html
-/// [Linux]: https://man7.org/linux/man-pages/man3/stderr.3.html
-#[cfg(not(feature = "std"))]
-#[doc(alias = "STDERR_FILENO")]
-#[inline]
-pub const unsafe fn stderr() -> BorrowedFd<'static> {
- BorrowedFd::borrow_raw(backend::io::types::STDERR_FILENO as RawFd)
-}
-
-/// `STDERR_FILENO`—Standard error, owned.
-///
-/// This is similar to [`stdout`], however it returns an `OwnedFd` which closes
-/// standard output when it is dropped.
-///
-/// # Safety
-///
-/// Safe std-using Rust code is permitted to assume that the stderr file
-/// descriptor is always valid. This function returns an `OwnedFd` which will
-/// close the stderr file descriptor when dropped.
-///
-/// # Other hazards
-///
-/// This has the same hazards as [`stderr`].
-///
-/// And, when the `OwnedFd` is dropped, subsequent newly created file
-/// descriptors may unknowingly reuse the stderr file descriptor number, which
-/// may break common assumptions, so it should typically only be dropped at the
-/// end of a program when no more file descriptors will be created.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stderr.html
-/// [Linux]: https://man7.org/linux/man-pages/man3/stderr.3.html
-#[doc(alias = "STDERR_FILENO")]
-#[inline]
-pub unsafe fn take_stderr() -> OwnedFd {
- backend::fd::OwnedFd::from_raw_fd(backend::io::types::STDERR_FILENO as RawFd)
-}
-
-/// `STDIN_FILENO`—Standard input, raw.
-///
-/// This is similar to [`stdin`], however it returns a `RawFd`.
-///
-/// # Other hazards
-///
-/// This has the same hazards as [`stdin`].
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdin.html
-/// [Linux]: https://man7.org/linux/man-pages/man3/stdin.3.html
-#[doc(alias = "STDIN_FILENO")]
-#[inline]
-pub const fn raw_stdin() -> RawFd {
- backend::io::types::STDIN_FILENO as RawFd
-}
-
-/// `STDOUT_FILENO`—Standard output, raw.
-///
-/// This is similar to [`stdout`], however it returns a `RawFd`.
-///
-/// # Other hazards
-///
-/// This has the same hazards as [`stdout`].
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stdout.html
-/// [Linux]: https://man7.org/linux/man-pages/man3/stdout.3.html
-#[doc(alias = "STDOUT_FILENO")]
-#[inline]
-pub const fn raw_stdout() -> RawFd {
- backend::io::types::STDOUT_FILENO as RawFd
-}
-
-/// `STDERR_FILENO`—Standard error, raw.
-///
-/// This is similar to [`stderr`], however it returns a `RawFd`.
-///
-/// # Other hazards
-///
-/// This has the same hazards as [`stderr`].
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/stderr.html
-/// [Linux]: https://man7.org/linux/man-pages/man3/stderr.3.html
-#[doc(alias = "STDERR_FILENO")]
-#[inline]
-pub const fn raw_stderr() -> RawFd {
- backend::io::types::STDERR_FILENO as RawFd
-}
-
-/// Utility function to safely `dup2` over stdin (fd 0).
-#[cfg(not(any(windows, target_os = "wasi")))]
-#[inline]
-pub fn dup2_stdin<Fd: AsFd>(fd: Fd) -> io::Result<()> {
- // SAFETY: We pass the returned `OwnedFd` to `forget` so that it isn't
- // dropped.
- let mut target = unsafe { io::take_stdin() };
- backend::io::syscalls::dup2(fd.as_fd(), &mut target)?;
- core::mem::forget(target);
- Ok(())
-}
-
-/// Utility function to safely `dup2` over stdout (fd 1).
-#[cfg(not(any(windows, target_os = "wasi")))]
-#[inline]
-pub fn dup2_stdout<Fd: AsFd>(fd: Fd) -> io::Result<()> {
- // SAFETY: We pass the returned `OwnedFd` to `forget` so that it isn't
- // dropped.
- let mut target = unsafe { io::take_stdout() };
- backend::io::syscalls::dup2(fd.as_fd(), &mut target)?;
- core::mem::forget(target);
- Ok(())
-}
-
-/// Utility function to safely `dup2` over stderr (fd 2).
-#[cfg(not(any(windows, target_os = "wasi")))]
-#[inline]
-pub fn dup2_stderr<Fd: AsFd>(fd: Fd) -> io::Result<()> {
- // SAFETY: We pass the returned `OwnedFd` to `forget` so that it isn't
- // dropped.
- let mut target = unsafe { io::take_stderr() };
- backend::io::syscalls::dup2(fd.as_fd(), &mut target)?;
- core::mem::forget(target);
- Ok(())
-}
diff --git a/vendor/rustix-0.37.6/src/io_uring.rs b/vendor/rustix-0.37.6/src/io_uring.rs
deleted file mode 100644
index 0a7dc0872..000000000
--- a/vendor/rustix-0.37.6/src/io_uring.rs
+++ /dev/null
@@ -1,1439 +0,0 @@
-//! Linux [io_uring].
-//!
-//! This API is very low-level. The main adaptations it makes from the raw
-//! Linux io_uring API are the use of appropriately-sized `bitflags`, `enum`,
-//! `Result`, `OwnedFd`, `AsFd`, `RawFd`, and `*mut c_void` in place of plain
-//! integers.
-//!
-//! # Safety
-//!
-//! io_uring operates on raw pointers and raw file descriptors. Rustix does not
-//! attempt to provide a safe API for these, because the abstraction level is
-//! too low for this to be practical. Safety should be introduced in
-//! higher-level abstraction layers.
-//!
-//! # References
-//! - [Linux]
-//! - [io_uring header]
-//!
-//! [Linux]: https://man.archlinux.org/man/io_uring.7.en
-//! [io_uring]: https://en.wikipedia.org/wiki/Io_uring
-//! [io_uring header]: https://github.com/torvalds/linux/blob/master/include/uapi/linux/io_uring.h
-#![allow(unsafe_code)]
-
-use crate::fd::{AsFd, BorrowedFd, OwnedFd, RawFd};
-use crate::{backend, io};
-use core::ffi::c_void;
-use core::ptr::null_mut;
-use linux_raw_sys::general as sys;
-
-/// `io_uring_setup(entries, params)`—Setup a context for performing
-/// asynchronous I/O.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man.archlinux.org/man/io_uring_setup.2.en
-#[inline]
-pub fn io_uring_setup(entries: u32, params: &mut io_uring_params) -> io::Result<OwnedFd> {
- backend::io_uring::syscalls::io_uring_setup(entries, params)
-}
-
-/// `io_uring_register(fd, opcode, arg, nr_args)`—Register files or user
-/// buffers for asynchronous I/O.
-///
-/// # Safety
-///
-/// io_uring operates on raw pointers and raw file descriptors. Users are
-/// responsible for ensuring that memory and resources are only accessed in
-/// valid ways.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man.archlinux.org/man/io_uring_register.2.en
-#[inline]
-pub unsafe fn io_uring_register<Fd: AsFd>(
- fd: Fd,
- opcode: IoringRegisterOp,
- arg: *const c_void,
- nr_args: u32,
-) -> io::Result<u32> {
- backend::io_uring::syscalls::io_uring_register(fd.as_fd(), opcode, arg, nr_args)
-}
-
-/// `io_uring_enter(fd, to_submit, min_complete, flags, arg, size)`—Initiate
-/// and/or complete asynchronous I/O.
-///
-/// # Safety
-///
-/// io_uring operates on raw pointers and raw file descriptors. Users are
-/// responsible for ensuring that memory and resources are only accessed in
-/// valid ways.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man.archlinux.org/man/io_uring_enter.2.en
-#[inline]
-pub unsafe fn io_uring_enter<Fd: AsFd>(
- fd: Fd,
- to_submit: u32,
- min_complete: u32,
- flags: IoringEnterFlags,
- arg: *const c_void,
- size: usize,
-) -> io::Result<u32> {
- backend::io_uring::syscalls::io_uring_enter(
- fd.as_fd(),
- to_submit,
- min_complete,
- flags,
- arg,
- size,
- )
-}
-
-bitflags::bitflags! {
- /// `IORING_ENTER_*` flags for use with [`io_uring_enter`].
- #[derive(Default)]
- pub struct IoringEnterFlags: u32 {
- /// `IORING_ENTER_GETEVENTS`
- const GETEVENTS = sys::IORING_ENTER_GETEVENTS;
-
- /// `IORING_ENTER_SQ_WAKEUP`
- const SQ_WAKEUP = sys::IORING_ENTER_SQ_WAKEUP;
-
- /// `IORING_ENTER_SQ_WAIT`
- const SQ_WAIT = sys::IORING_ENTER_SQ_WAIT;
-
- /// `IORING_ENTER_EXT_ARG`
- const EXT_ARG = sys::IORING_ENTER_EXT_ARG;
- }
-}
-
-/// `IORING_REGISTER_*` and `IORING_UNREGISTER_*` constants for use with
-/// [`io_uring_register`].
-#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
-#[repr(u8)]
-#[non_exhaustive]
-pub enum IoringRegisterOp {
- /// `IORING_REGISTER_BUFFERS`
- RegisterBuffers = sys::IORING_REGISTER_BUFFERS as _,
-
- /// `IORING_UNREGISTER_BUFFERS`
- UnregisterBuffers = sys::IORING_UNREGISTER_BUFFERS as _,
-
- /// `IORING_REGISTER_FILES`
- RegisterFiles = sys::IORING_REGISTER_FILES as _,
-
- /// `IORING_UNREGISTER_FILES`
- UnregisterFiles = sys::IORING_UNREGISTER_FILES as _,
-
- /// `IORING_REGISTER_EVENTFD`
- RegisterEventfd = sys::IORING_REGISTER_EVENTFD as _,
-
- /// `IORING_UNREGISTER_EVENTFD`
- UnregisterEventfd = sys::IORING_UNREGISTER_EVENTFD as _,
-
- /// `IORING_REGISTER_FILES_UPDATE`
- RegisterFilesUpdate = sys::IORING_REGISTER_FILES_UPDATE as _,
-
- /// `IORING_REGISTER_EVENTFD_ASYNC`
- RegisterEventfdAsync = sys::IORING_REGISTER_EVENTFD_ASYNC as _,
-
- /// `IORING_REGISTER_PROBE`
- RegisterProbe = sys::IORING_REGISTER_PROBE as _,
-
- /// `IORING_REGISTER_PERSONALITY`
- RegisterPersonality = sys::IORING_REGISTER_PERSONALITY as _,
-
- /// `IORING_UNREGISTER_PERSONALITY`
- UnregisterPersonality = sys::IORING_UNREGISTER_PERSONALITY as _,
-
- /// `IORING_REGISTER_RESTRICTIONS`
- RegisterRestrictions = sys::IORING_REGISTER_RESTRICTIONS as _,
-
- /// `IORING_REGISTER_ENABLE_RINGS`
- RegisterEnableRings = sys::IORING_REGISTER_ENABLE_RINGS as _,
-
- /// `IORING_REGISTER_BUFFERS2`
- RegisterBuffers2 = sys::IORING_REGISTER_BUFFERS2 as _,
-
- /// `IORING_REGISTER_BUFFERS_UPDATE`
- RegisterBuffersUpdate = sys::IORING_REGISTER_BUFFERS_UPDATE as _,
-
- /// `IORING_REGISTER_FILES2`
- RegisterFiles2 = sys::IORING_REGISTER_FILES2 as _,
-
- /// `IORING_REGISTER_FILES_SKIP`
- RegisterFilesSkip = sys::IORING_REGISTER_FILES_SKIP as _,
-
- /// `IORING_REGISTER_FILES_UPDATE2`
- RegisterFilesUpdate2 = sys::IORING_REGISTER_FILES_UPDATE2 as _,
-
- /// `IORING_REGISTER_IOWQ_AFF`
- RegisterIowqAff = sys::IORING_REGISTER_IOWQ_AFF as _,
-
- /// `IORING_UNREGISTER_IOWQ_AFF`
- UnregisterIowqAff = sys::IORING_UNREGISTER_IOWQ_AFF as _,
-
- /// `IORING_REGISTER_IOWQ_MAX_WORKERS`
- RegisterIowqMaxWorkers = sys::IORING_REGISTER_IOWQ_MAX_WORKERS as _,
-
- /// `IORING_REGISTER_RING_FDS`
- RegisterRingFds = sys::IORING_REGISTER_RING_FDS as _,
-
- /// `IORING_UNREGISTER_RING_FDS`
- UnregisterRingFds = sys::IORING_UNREGISTER_RING_FDS as _,
-
- /// `IORING_REGISTER_PBUF_RING`
- RegisterPbufRing = sys::IORING_REGISTER_PBUF_RING as _,
-
- /// `IORING_UNREGISTER_PBUF_RING`
- UnregisterPbufRing = sys::IORING_UNREGISTER_PBUF_RING as _,
-
- /// `IORING_REGISTER_SYNC_CANCEL`
- RegisterSyncCancel = sys::IORING_REGISTER_SYNC_CANCEL as _,
-
- /// `IORING_REGISTER_FILE_ALLOC_RANGE`
- RegisterFileAllocRange = sys::IORING_REGISTER_FILE_ALLOC_RANGE as _,
-}
-
-/// `IORING_OP_*` constants for use with [`io_uring_sqe`].
-#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
-#[repr(u8)]
-#[non_exhaustive]
-pub enum IoringOp {
- /// `IORING_OP_NOP`
- Nop = sys::io_uring_op::IORING_OP_NOP as _,
-
- /// `IORING_OP_ACCEPT`
- Accept = sys::io_uring_op::IORING_OP_ACCEPT as _,
-
- /// `IORING_OP_ASYNC_CANCEL`
- AsyncCancel = sys::io_uring_op::IORING_OP_ASYNC_CANCEL as _,
-
- /// `IORING_OP_CLOSE`
- Close = sys::io_uring_op::IORING_OP_CLOSE as _,
-
- /// `IORING_OP_CONNECT`
- Connect = sys::io_uring_op::IORING_OP_CONNECT as _,
-
- /// `IORING_OP_EPOLL_CTL`
- EpollCtl = sys::io_uring_op::IORING_OP_EPOLL_CTL as _,
-
- /// `IORING_OP_FADVISE`
- Fadvise = sys::io_uring_op::IORING_OP_FADVISE as _,
-
- /// `IORING_OP_FALLOCATE`
- Fallocate = sys::io_uring_op::IORING_OP_FALLOCATE as _,
-
- /// `IORING_OP_FILES_UPDATE`
- FilesUpdate = sys::io_uring_op::IORING_OP_FILES_UPDATE as _,
-
- /// `IORING_OP_FSYNC`
- Fsync = sys::io_uring_op::IORING_OP_FSYNC as _,
-
- /// `IORING_OP_LINKAT`
- Linkat = sys::io_uring_op::IORING_OP_LINKAT as _,
-
- /// `IORING_OP_LINK_TIMEOUT`
- LinkTimeout = sys::io_uring_op::IORING_OP_LINK_TIMEOUT as _,
-
- /// `IORING_OP_MADVISE`
- Madvise = sys::io_uring_op::IORING_OP_MADVISE as _,
-
- /// `IORING_OP_MKDIRAT`
- Mkdirat = sys::io_uring_op::IORING_OP_MKDIRAT as _,
-
- /// `IORING_OP_OPENAT`
- Openat = sys::io_uring_op::IORING_OP_OPENAT as _,
-
- /// `IORING_OP_OPENAT2`
- Openat2 = sys::io_uring_op::IORING_OP_OPENAT2 as _,
-
- /// `IORING_OP_POLL_ADD`
- PollAdd = sys::io_uring_op::IORING_OP_POLL_ADD as _,
-
- /// `IORING_OP_POLL_REMOVE`
- PollRemove = sys::io_uring_op::IORING_OP_POLL_REMOVE as _,
-
- /// `IORING_OP_PROVIDE_BUFFERS`
- ProvideBuffers = sys::io_uring_op::IORING_OP_PROVIDE_BUFFERS as _,
-
- /// `IORING_OP_READ`
- Read = sys::io_uring_op::IORING_OP_READ as _,
-
- /// `IORING_OP_READV`
- Readv = sys::io_uring_op::IORING_OP_READV as _,
-
- /// `IORING_OP_READ_FIXED`
- ReadFixed = sys::io_uring_op::IORING_OP_READ_FIXED as _,
-
- /// `IORING_OP_RECV`
- Recv = sys::io_uring_op::IORING_OP_RECV as _,
-
- /// `IORING_OP_RECVMSG`
- Recvmsg = sys::io_uring_op::IORING_OP_RECVMSG as _,
-
- /// `IORING_OP_REMOVE_BUFFERS`
- RemoveBuffers = sys::io_uring_op::IORING_OP_REMOVE_BUFFERS as _,
-
- /// `IORING_OP_RENAMEAT`
- Renameat = sys::io_uring_op::IORING_OP_RENAMEAT as _,
-
- /// `IORING_OP_SEND`
- Send = sys::io_uring_op::IORING_OP_SEND as _,
-
- /// `IORING_OP_SENDMSG`
- Sendmsg = sys::io_uring_op::IORING_OP_SENDMSG as _,
-
- /// `IORING_OP_SHUTDOWN`
- Shutdown = sys::io_uring_op::IORING_OP_SHUTDOWN as _,
-
- /// `IORING_OP_SPLICE`
- Splice = sys::io_uring_op::IORING_OP_SPLICE as _,
-
- /// `IORING_OP_STATX`
- Statx = sys::io_uring_op::IORING_OP_STATX as _,
-
- /// `IORING_OP_SYMLINKAT`
- Symlinkat = sys::io_uring_op::IORING_OP_SYMLINKAT as _,
-
- /// `IORING_OP_SYNC_FILE_RANGE`
- SyncFileRange = sys::io_uring_op::IORING_OP_SYNC_FILE_RANGE as _,
-
- /// `IORING_OP_TEE`
- Tee = sys::io_uring_op::IORING_OP_TEE as _,
-
- /// `IORING_OP_TIMEOUT`
- Timeout = sys::io_uring_op::IORING_OP_TIMEOUT as _,
-
- /// `IORING_OP_TIMEOUT_REMOVE`
- TimeoutRemove = sys::io_uring_op::IORING_OP_TIMEOUT_REMOVE as _,
-
- /// `IORING_OP_UNLINKAT`
- Unlinkat = sys::io_uring_op::IORING_OP_UNLINKAT as _,
-
- /// `IORING_OP_WRITE`
- Write = sys::io_uring_op::IORING_OP_WRITE as _,
-
- /// `IORING_OP_WRITEV`
- Writev = sys::io_uring_op::IORING_OP_WRITEV as _,
-
- /// `IORING_OP_WRITE_FIXED`
- WriteFixed = sys::io_uring_op::IORING_OP_WRITE_FIXED as _,
-
- /// `IORING_OP_MSG_RING`
- MsgRing = sys::io_uring_op::IORING_OP_MSG_RING as _,
-
- /// `IORING_OP_FSETXATTR`
- Fsetxattr = sys::io_uring_op::IORING_OP_FSETXATTR as _,
-
- /// `IORING_OP_SETXATTR`
- Setxattr = sys::io_uring_op::IORING_OP_SETXATTR as _,
-
- /// `IORING_OP_FGETXATTR`
- Fgetxattr = sys::io_uring_op::IORING_OP_FGETXATTR as _,
-
- /// `IORING_OP_GETXATTR`
- Getxattr = sys::io_uring_op::IORING_OP_GETXATTR as _,
-
- /// `IORING_OP_SOCKET`
- Socket = sys::io_uring_op::IORING_OP_SOCKET as _,
-
- /// `IORING_OP_URING_CMD`
- UringCmd = sys::io_uring_op::IORING_OP_URING_CMD as _,
-
- /// `IORING_OP_SEND_ZC`
- SendZc = sys::io_uring_op::IORING_OP_SEND_ZC as _,
-
- /// `IORING_OP_SENDMSG_ZC`
- SendmsgZc = sys::io_uring_op::IORING_OP_SENDMSG_ZC as _,
-}
-
-impl Default for IoringOp {
- #[inline]
- fn default() -> Self {
- Self::Nop
- }
-}
-
-/// `IORING_RESTRICTION_*` constants for use with [`io_uring_restriction`].
-#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
-#[repr(u16)]
-#[non_exhaustive]
-pub enum IoringRestrictionOp {
- /// `IORING_RESTRICTION_REGISTER_OP`
- RegisterOp = sys::IORING_RESTRICTION_REGISTER_OP as _,
-
- /// `IORING_RESTRICTION_SQE_FLAGS_ALLOWED`
- SqeFlagsAllowed = sys::IORING_RESTRICTION_SQE_FLAGS_ALLOWED as _,
-
- /// `IORING_RESTRICTION_SQE_FLAGS_REQUIRED`
- SqeFlagsRequired = sys::IORING_RESTRICTION_SQE_FLAGS_REQUIRED as _,
-
- /// `IORING_RESTRICTION_SQE_OP`
- SqeOp = sys::IORING_RESTRICTION_SQE_OP as _,
-}
-
-impl Default for IoringRestrictionOp {
- #[inline]
- fn default() -> Self {
- Self::RegisterOp
- }
-}
-
-/// `IORING_MSG_*` constants which represent commands for use with
-/// [`IoringOp::MsgRing`], (`seq.addr`)
-#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
-#[repr(u64)]
-#[non_exhaustive]
-pub enum IoringMsgringCmds {
- /// `IORING_MSG_DATA`
- Data = sys::IORING_MSG_DATA as _,
-
- /// `IORING_MSG_SEND_FD`
- SendFd = sys::IORING_MSG_SEND_FD as _,
-}
-
-bitflags::bitflags! {
- /// `IORING_SETUP_*` flags for use with [`io_uring_params`].
- #[derive(Default)]
- pub struct IoringSetupFlags: u32 {
- /// `IORING_SETUP_ATTACH_WQ`
- const ATTACH_WQ = sys::IORING_SETUP_ATTACH_WQ;
-
- /// `IORING_SETUP_CLAMP`
- const CLAMP = sys::IORING_SETUP_CLAMP;
-
- /// `IORING_SETUP_CQSIZE`
- const CQSIZE = sys::IORING_SETUP_CQSIZE;
-
- /// `IORING_SETUP_IOPOLL`
- const IOPOLL = sys::IORING_SETUP_IOPOLL;
-
- /// `IORING_SETUP_R_DISABLED`
- const R_DISABLED = sys::IORING_SETUP_R_DISABLED;
-
- /// `IORING_SETUP_SQPOLL`
- const SQPOLL = sys::IORING_SETUP_SQPOLL;
-
- /// `IORING_SETUP_SQ_AFF`
- const SQ_AFF = sys::IORING_SETUP_SQ_AFF;
-
- /// `IORING_SETUP_SQE128`
- const SQE128 = sys::IORING_SETUP_SQE128;
-
- /// `IORING_SETUP_CQE32`
- const CQE32 = sys::IORING_SETUP_CQE32;
-
- /// `IORING_SETUP_SUBMIT_ALL`
- const SUBMIT_ALL = sys::IORING_SETUP_SUBMIT_ALL;
-
- /// `IORING_SETUP_COOP_TRASKRUN`
- const COOP_TASKRUN = sys::IORING_SETUP_COOP_TASKRUN;
-
- /// `IORING_SETUP_TASKRUN_FLAG`
- const TASKRUN_FLAG = sys::IORING_SETUP_TASKRUN_FLAG;
-
- /// `IORING_SETUP_SINGLE_ISSUER`
- const SINGLE_ISSUER = sys::IORING_SETUP_SINGLE_ISSUER;
-
- /// `IORING_SETUP_DEFER_TASKRUN`
- const DEFER_TASKRUN = sys::IORING_SETUP_DEFER_TASKRUN;
- }
-}
-
-bitflags::bitflags! {
- /// `IOSQE_*` flags for use with [`io_uring_sqe`].
- #[derive(Default)]
- pub struct IoringSqeFlags: u8 {
- /// `1 << IOSQE_ASYNC_BIT`
- const ASYNC = 1 << sys::IOSQE_ASYNC_BIT as u8;
-
- /// `1 << IOSQE_BUFFER_SELECT_BIT`
- const BUFFER_SELECT = 1 << sys::IOSQE_BUFFER_SELECT_BIT as u8;
-
- /// `1 << IOSQE_FIXED_FILE_BIT`
- const FIXED_FILE = 1 << sys::IOSQE_FIXED_FILE_BIT as u8;
-
- /// 1 << `IOSQE_IO_DRAIN_BIT`
- const IO_DRAIN = 1 << sys::IOSQE_IO_DRAIN_BIT as u8;
-
- /// `1 << IOSQE_IO_HARDLINK_BIT`
- const IO_HARDLINK = 1 << sys::IOSQE_IO_HARDLINK_BIT as u8;
-
- /// `1 << IOSQE_IO_LINK_BIT`
- const IO_LINK = 1 << sys::IOSQE_IO_LINK_BIT as u8;
-
- /// `1 << IOSQE_CQE_SKIP_SUCCESS_BIT`
- const CQE_SKIP_SUCCESS = 1 << sys::IOSQE_CQE_SKIP_SUCCESS_BIT as u8;
- }
-}
-
-bitflags::bitflags! {
- /// `IORING_CQE_F_*` flags for use with [`io_uring_cqe`].
- #[derive(Default)]
- pub struct IoringCqeFlags: u32 {
- /// `IORING_CQE_F_BUFFER`
- const BUFFER = sys::IORING_CQE_F_BUFFER as _;
-
- /// `IORING_CQE_F_MORE`
- const MORE = sys::IORING_CQE_F_MORE as _;
-
- /// `IORING_CQE_F_SOCK_NONEMPTY`
- const SOCK_NONEMPTY = sys::IORING_CQE_F_SOCK_NONEMPTY as _;
-
- /// `IORING_CQE_F_NOTIF`
- const NOTIF = sys::IORING_CQE_F_NOTIF as _;
- }
-}
-
-bitflags::bitflags! {
- /// `IORING_FSYNC_*` flags for use with [`io_uring_sqe`].
- #[derive(Default)]
- pub struct IoringFsyncFlags: u32 {
- /// `IORING_FSYNC_DATASYNC`
- const DATASYNC = sys::IORING_FSYNC_DATASYNC;
- }
-}
-
-bitflags::bitflags! {
- /// `IORING_TIMEOUT_*` and `IORING_LINK_TIMEOUT_UPDATE` flags for use with
- /// [`io_uring_sqe`].
- #[derive(Default)]
- pub struct IoringTimeoutFlags: u32 {
- /// `IORING_TIMEOUT_ABS`
- const ABS = sys::IORING_TIMEOUT_ABS;
-
- /// `IORING_TIMEOUT_UPDATE`
- const UPDATE = sys::IORING_TIMEOUT_UPDATE;
-
- /// `IORING_TIMEOUT_BOOTTIME`
- const BOOTTIME = sys::IORING_TIMEOUT_BOOTTIME;
-
- /// `IORING_TIMEOUT_ETIME_SUCCESS`
- const ETIME_SUCCESS = sys::IORING_TIMEOUT_ETIME_SUCCESS;
-
- /// `IORING_TIMEOUT_REALTIME`
- const REALTIME = sys::IORING_TIMEOUT_REALTIME;
-
- /// `IORING_TIMEOUT_CLOCK_MASK`
- const CLOCK_MASK = sys::IORING_TIMEOUT_CLOCK_MASK;
-
- /// `IORING_TIMEOUT_UPDATE_MASK`
- const UPDATE_MASK = sys::IORING_TIMEOUT_UPDATE_MASK;
-
- /// `IORING_LINK_TIMEOUT_UPDATE`
- const LINK_TIMEOUT_UPDATE = sys::IORING_LINK_TIMEOUT_UPDATE;
- }
-}
-
-bitflags::bitflags! {
- /// `SPLICE_F_*` flags for use with [`io_uring_sqe`].
- #[derive(Default)]
- pub struct SpliceFlags: u32 {
- /// `SPLICE_F_FD_IN_FIXED`
- const FD_IN_FIXED = sys::SPLICE_F_FD_IN_FIXED;
- }
-}
-
-bitflags::bitflags! {
- /// `IORING_MSG_RING_*` flags for use with [`io_uring_sqe`].
- #[derive(Default)]
- pub struct IoringMsgringFlags: u32 {
- /// `IORING_MSG_RING_CQE_SKIP`
- const CQE_SKIP = sys::IORING_MSG_RING_CQE_SKIP;
- }
-}
-
-bitflags::bitflags! {
- /// `IORING_ASYNC_CANCEL_*` flags for use with [`io_uring_sqe`].
- #[derive(Default)]
- pub struct IoringAsyncCancelFlags: u32 {
- /// `IORING_ASYNC_CANCEL_ALL`
- const ALL = sys::IORING_ASYNC_CANCEL_ALL;
-
- /// `IORING_ASYNC_CANCEL_FD`
- const FD = sys::IORING_ASYNC_CANCEL_FD;
-
- /// `IORING_ASYNC_CANCEL_FD`
- const ANY = sys::IORING_ASYNC_CANCEL_ANY;
-
- /// `IORING_ASYNC_CANCEL_FD`
- const FD_FIXED = sys::IORING_ASYNC_CANCEL_FD_FIXED;
- }
-}
-
-bitflags::bitflags! {
- /// `IORING_FEAT_*` flags for use with [`io_uring_params`].
- #[derive(Default)]
- pub struct IoringFeatureFlags: u32 {
- /// `IORING_FEAT_CQE_SKIP`
- const CQE_SKIP = sys::IORING_FEAT_CQE_SKIP;
-
- /// `IORING_FEAT_CUR_PERSONALITY`
- const CUR_PERSONALITY = sys::IORING_FEAT_CUR_PERSONALITY;
-
- /// `IORING_FEAT_EXT_ARG`
- const EXT_ARG = sys::IORING_FEAT_EXT_ARG;
-
- /// `IORING_FEAT_FAST_POLL`
- const FAST_POLL = sys::IORING_FEAT_FAST_POLL;
-
- /// `IORING_FEAT_NATIVE_WORKERS`
- const NATIVE_WORKERS = sys::IORING_FEAT_NATIVE_WORKERS;
-
- /// `IORING_FEAT_NODROP`
- const NODROP = sys::IORING_FEAT_NODROP;
-
- /// `IORING_FEAT_POLL_32BITS`
- const POLL_32BITS = sys::IORING_FEAT_POLL_32BITS;
-
- /// `IORING_FEAT_RSRC_TAGS`
- const RSRC_TAGS = sys::IORING_FEAT_RSRC_TAGS;
-
- /// `IORING_FEAT_RW_CUR_POS`
- const RW_CUR_POS = sys::IORING_FEAT_RW_CUR_POS;
-
- /// `IORING_FEAT_SINGLE_MMAP`
- const SINGLE_MMAP = sys::IORING_FEAT_SINGLE_MMAP;
-
- /// `IORING_FEAT_SQPOLL_NONFIXED`
- const SQPOLL_NONFIXED = sys::IORING_FEAT_SQPOLL_NONFIXED;
-
- /// `IORING_FEAT_SUBMIT_STABLE`
- const SUBMIT_STABLE = sys::IORING_FEAT_SUBMIT_STABLE;
-
- /// `IORING_FEAT_LINKED_FILE`
- const LINKED_FILE = sys::IORING_FEAT_LINKED_FILE;
- }
-}
-
-bitflags::bitflags! {
- /// `IO_URING_OP_*` flags for use with [`io_uring_probe_op`].
- #[derive(Default)]
- pub struct IoringOpFlags: u16 {
- /// `IO_URING_OP_SUPPORTED`
- const SUPPORTED = sys::IO_URING_OP_SUPPORTED as _;
- }
-}
-
-bitflags::bitflags! {
- /// `IORING_RSRC_*` flags for use with [`io_uring_rsrc_register`].
- #[derive(Default)]
- pub struct IoringRsrcFlags: u32 {
- /// `IORING_RSRC_REGISTER_SPARSE`
- const REGISTER_SPARSE = sys::IORING_RSRC_REGISTER_SPARSE as _;
- }
-}
-
-bitflags::bitflags! {
- /// `IORING_SQ_*` flags.
- #[derive(Default)]
- pub struct IoringSqFlags: u32 {
- /// `IORING_SQ_NEED_WAKEUP`
- const NEED_WAKEUP = sys::IORING_SQ_NEED_WAKEUP;
-
- /// `IORING_SQ_CQ_OVERFLOW`
- const CQ_OVERFLOW = sys::IORING_SQ_CQ_OVERFLOW;
-
- /// `IORING_SQ_TASKRUN`
- const TASKRUN = sys::IORING_SQ_TASKRUN;
- }
-}
-
-bitflags::bitflags! {
- /// `IORING_CQ_*` flags.
- #[derive(Default)]
- pub struct IoringCqFlags: u32 {
- /// `IORING_CQ_EVENTFD_DISABLED`
- const EVENTFD_DISABLED = sys::IORING_CQ_EVENTFD_DISABLED;
- }
-}
-
-bitflags::bitflags! {
- /// `IORING_POLL_*` flags.
- #[derive(Default)]
- pub struct IoringPollFlags: u32 {
- /// `IORING_POLL_ADD_MULTI`
- const ADD_MULTI = sys::IORING_POLL_ADD_MULTI;
-
- /// `IORING_POLL_UPDATE_EVENTS`
- const UPDATE_EVENTS = sys::IORING_POLL_UPDATE_EVENTS;
-
- /// `IORING_POLL_UPDATE_USER_DATA`
- const UPDATE_USER_DATA = sys::IORING_POLL_UPDATE_USER_DATA;
-
- /// `IORING_POLL_ADD_LEVEL`
- const ADD_LEVEL = sys::IORING_POLL_ADD_LEVEL;
- }
-}
-
-bitflags::bitflags! {
- /// send/sendmsg flags (`sqe.ioprio`)
- #[derive(Default)]
- pub struct IoringSendFlags: u16 {
- /// `IORING_RECVSEND_POLL_FIRST`.
- ///
- /// See also [`IoringRecvFlags::POLL_FIRST`].
- const POLL_FIRST = sys::IORING_RECVSEND_POLL_FIRST as _;
-
- /// `IORING_RECVSEND_FIXED_BUF`
- ///
- /// See also [`IoringRecvFlags::FIXED_BUF`].
- const FIXED_BUF = sys::IORING_RECVSEND_FIXED_BUF as _;
-
- /// `IORING_SEND_ZC_REPORT_USAGE` (since Linux 6.2)
- const ZC_REPORT_USAGE = sys::IORING_SEND_ZC_REPORT_USAGE as _;
- }
-}
-
-bitflags::bitflags! {
- /// recv/recvmsg flags (`sqe.ioprio`)
- #[derive(Default)]
- pub struct IoringRecvFlags: u16 {
- /// `IORING_RECVSEND_POLL_FIRST`
- ///
- /// See also [`IoringSendFlags::POLL_FIRST`].
- const POLL_FIRST = sys::IORING_RECVSEND_POLL_FIRST as _;
-
- /// `IORING_RECV_MULTISHOT`
- const MULTISHOT = sys::IORING_RECV_MULTISHOT as _;
-
- /// `IORING_RECVSEND_FIXED_BUF`
- ///
- /// See also [`IoringSendFlags::FIXED_BUF`].
- const FIXED_BUF = sys::IORING_RECVSEND_FIXED_BUF as _;
- }
-}
-
-bitflags::bitflags! {
- /// accept flags (`sqe.ioprio`)
- #[derive(Default)]
- pub struct IoringAcceptFlags: u16 {
- /// `IORING_ACCEPT_MULTISHOT`
- const MULTISHOT = sys::IORING_ACCEPT_MULTISHOT as _;
- }
-}
-
-bitflags::bitflags! {
- /// recvmsg out flags
- #[derive(Default)]
- pub struct RecvmsgOutFlags: u32 {
- /// `MSG_EOR`
- const EOR = sys::MSG_EOR;
-
- /// `MSG_TRUNC`
- const TRUNC = sys::MSG_TRUNC;
-
- /// `MSG_CTRUNC`
- const CTRUNC = sys::MSG_CTRUNC;
-
- /// `MSG_OOB`
- const OOB = sys::MSG_OOB;
-
- /// `MSG_ERRQUEUE`
- const ERRQUEUE = sys::MSG_ERRQUEUE;
- }
-}
-
-#[allow(missing_docs)]
-pub const IORING_CQE_BUFFER_SHIFT: u32 = sys::IORING_CQE_BUFFER_SHIFT as _;
-#[allow(missing_docs)]
-pub const IORING_FILE_INDEX_ALLOC: i32 = sys::IORING_FILE_INDEX_ALLOC as _;
-
-// Re-export these as `u64`, which is the `offset` type in `rustix::io::mmap`.
-#[allow(missing_docs)]
-pub const IORING_OFF_SQ_RING: u64 = sys::IORING_OFF_SQ_RING as _;
-#[allow(missing_docs)]
-pub const IORING_OFF_CQ_RING: u64 = sys::IORING_OFF_CQ_RING as _;
-#[allow(missing_docs)]
-pub const IORING_OFF_SQES: u64 = sys::IORING_OFF_SQES as _;
-
-/// `IORING_REGISTER_FILES_SKIP`
-#[inline]
-#[doc(alias = "IORING_REGISTER_FILES_SKIP")]
-pub const fn io_uring_register_files_skip() -> BorrowedFd<'static> {
- let files_skip = sys::IORING_REGISTER_FILES_SKIP as RawFd;
-
- // SAFETY: `IORING_REGISTER_FILES_SKIP` is a reserved value that is never
- // dynamically allocated, so it'll remain valid for the duration of
- // `'static`.
- unsafe { BorrowedFd::<'static>::borrow_raw(files_skip) }
-}
-
-/// `IORING_NOTIF_USAGE_ZC_COPIED` (since Linux 6.2)
-pub const IORING_NOTIF_USAGE_ZC_COPIED: i32 = sys::IORING_NOTIF_USAGE_ZC_COPIED as _;
-
-/// A pointer in the io_uring API.
-///
-/// `io_uring`'s native API represents pointers as `u64` values. In order to
-/// preserve strict-provenance, use a `*mut c_void`. On platforms where
-/// pointers are narrower than 64 bits, this requires additional padding.
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct io_uring_ptr {
- #[cfg(all(target_pointer_width = "32", target_endian = "big"))]
- #[doc(hidden)]
- pub __pad32: u32,
- #[cfg(all(target_pointer_width = "16", target_endian = "big"))]
- #[doc(hidden)]
- pub __pad16: u16,
-
- /// The pointer value.
- pub ptr: *mut c_void,
-
- #[cfg(all(target_pointer_width = "16", target_endian = "little"))]
- #[doc(hidden)]
- pub __pad16: u16,
- #[cfg(all(target_pointer_width = "32", target_endian = "little"))]
- #[doc(hidden)]
- pub __pad32: u32,
-}
-
-impl From<*mut c_void> for io_uring_ptr {
- #[inline]
- fn from(ptr: *mut c_void) -> Self {
- Self {
- ptr,
-
- #[cfg(target_pointer_width = "16")]
- __pad16: Default::default(),
- #[cfg(any(target_pointer_width = "16", target_pointer_width = "32"))]
- __pad32: Default::default(),
- }
- }
-}
-
-impl Default for io_uring_ptr {
- #[inline]
- fn default() -> Self {
- Self::from(null_mut())
- }
-}
-
-/// User data in the io_uring API.
-///
-/// `io_uring`'s native API represents `user_data` fields as `u64` values. In
-/// order to preserve strict-provenance, use a union which allows users to
-/// optionally store pointers.
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union io_uring_user_data {
- /// An arbitrary `u64`.
- pub u64_: u64,
-
- /// A pointer.
- pub ptr: io_uring_ptr,
-}
-
-impl io_uring_user_data {
- /// Return the `u64` value.
- #[inline]
- pub fn u64_(self) -> u64 {
- // SAFETY: All the fields have the same underlying representation.
- unsafe { self.u64_ }
- }
-
- /// Create a `Self` from a `u64` value.
- #[inline]
- pub fn from_u64(u64_: u64) -> Self {
- Self { u64_ }
- }
-
- /// Return the `ptr` pointer value.
- #[inline]
- pub fn ptr(self) -> *mut c_void {
- // SAFETY: All the fields have the same underlying representation.
- unsafe { self.ptr }.ptr
- }
-
- /// Create a `Self` from a pointer value.
- #[inline]
- pub fn from_ptr(ptr: *mut c_void) -> Self {
- Self {
- ptr: io_uring_ptr::from(ptr),
- }
- }
-}
-
-impl Default for io_uring_user_data {
- #[inline]
- fn default() -> Self {
- let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
- // SAFETY: All of Linux's io_uring structs may be zero-initialized.
- unsafe {
- ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
- s.assume_init()
- }
- }
-}
-
-impl core::fmt::Debug for io_uring_user_data {
- fn fmt(&self, fmt: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
- // SAFETY: Just format as a `u64`, since formatting doesn't preserve
- // provenance, and we don't have a discriminant.
- unsafe { self.u64_.fmt(fmt) }
- }
-}
-
-/// An io_uring Submission Queue Entry.
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Copy, Clone, Default)]
-pub struct io_uring_sqe {
- pub opcode: IoringOp,
- pub flags: IoringSqeFlags,
- pub ioprio: ioprio_union,
- pub fd: RawFd,
- pub off_or_addr2: off_or_addr2_union,
- pub addr_or_splice_off_in: addr_or_splice_off_in_union,
- pub len: len_union,
- pub op_flags: op_flags_union,
- pub user_data: io_uring_user_data,
- pub buf: buf_union,
- pub personality: u16,
- pub splice_fd_in_or_file_index: splice_fd_in_or_file_index_union,
- pub addr3_or_cmd: addr3_or_cmd_union,
-}
-
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union ioprio_union {
- pub recv_flags: IoringRecvFlags,
- pub send_flags: IoringSendFlags,
- pub accept_flags: IoringAcceptFlags,
- pub ioprio: u16,
-}
-
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union len_union {
- pub poll_flags: IoringPollFlags,
- pub len: u32,
-}
-
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union addr3_or_cmd_union {
- pub addr3: addr3_struct,
- pub cmd: [u8; 0],
-}
-
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Copy, Clone, Default)]
-pub struct addr3_struct {
- pub addr3: u64,
- pub __pad2: [u64; 1],
-}
-
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union off_or_addr2_union {
- pub off: u64,
- pub addr2: io_uring_ptr,
- pub cmd_op: cmd_op_struct,
- pub user_data: io_uring_user_data,
-}
-
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct cmd_op_struct {
- pub cmd_op: u32,
- pub __pad1: u32,
-}
-
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union addr_or_splice_off_in_union {
- pub addr: io_uring_ptr,
- pub splice_off_in: u64,
- pub msgring_cmd: IoringMsgringCmds,
- pub user_data: io_uring_user_data,
-}
-
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union op_flags_union {
- pub rw_flags: crate::io::ReadWriteFlags,
- pub fsync_flags: IoringFsyncFlags,
- pub poll_events: u16,
- pub poll32_events: u32,
- pub sync_range_flags: u32,
- /// `msg_flags` is split into `send_flags` and `recv_flags`.
- #[doc(alias = "msg_flags")]
- pub send_flags: crate::net::SendFlags,
- /// `msg_flags` is split into `send_flags` and `recv_flags`.
- #[doc(alias = "msg_flags")]
- pub recv_flags: crate::net::RecvFlags,
- pub timeout_flags: IoringTimeoutFlags,
- pub accept_flags: crate::net::AcceptFlags,
- pub cancel_flags: IoringAsyncCancelFlags,
- pub open_flags: crate::fs::OFlags,
- pub statx_flags: crate::fs::AtFlags,
- pub fadvise_advice: crate::fs::Advice,
- pub splice_flags: SpliceFlags,
- pub rename_flags: crate::fs::RenameFlags,
- pub unlink_flags: crate::fs::AtFlags,
- pub hardlink_flags: crate::fs::AtFlags,
- pub msg_ring_flags: IoringMsgringFlags,
-}
-
-#[allow(missing_docs)]
-#[repr(C, packed)]
-#[derive(Copy, Clone)]
-pub union buf_union {
- pub buf_index: u16,
- pub buf_group: u16,
-}
-
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union splice_fd_in_or_file_index_union {
- pub splice_fd_in: i32,
- pub file_index: u32,
-}
-
-/// An io_uring Completion Queue Entry.
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Debug, Copy, Clone, Default)]
-pub struct io_uring_cqe {
- pub user_data: io_uring_user_data,
- pub res: i32,
- pub flags: IoringCqeFlags,
-}
-
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Copy, Clone, Default)]
-pub struct io_uring_restriction {
- pub opcode: IoringRestrictionOp,
- pub register_or_sqe_op_or_sqe_flags: register_or_sqe_op_or_sqe_flags_union,
- pub resv: u8,
- pub resv2: [u32; 3],
-}
-
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union register_or_sqe_op_or_sqe_flags_union {
- pub register_op: IoringRegisterOp,
- pub sqe_op: IoringOp,
- pub sqe_flags: IoringSqeFlags,
-}
-
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Debug, Copy, Clone, Default)]
-pub struct io_uring_params {
- pub sq_entries: u32,
- pub cq_entries: u32,
- pub flags: IoringSetupFlags,
- pub sq_thread_cpu: u32,
- pub sq_thread_idle: u32,
- pub features: IoringFeatureFlags,
- pub wq_fd: u32,
- pub resv: [u32; 3],
- pub sq_off: io_sqring_offsets,
- pub cq_off: io_cqring_offsets,
-}
-
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Debug, Copy, Clone, Default)]
-pub struct io_sqring_offsets {
- pub head: u32,
- pub tail: u32,
- pub ring_mask: u32,
- pub ring_entries: u32,
- pub flags: u32,
- pub dropped: u32,
- pub array: u32,
- pub resv1: u32,
- pub resv2: u64,
-}
-
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Debug, Copy, Clone, Default)]
-pub struct io_cqring_offsets {
- pub head: u32,
- pub tail: u32,
- pub ring_mask: u32,
- pub ring_entries: u32,
- pub overflow: u32,
- pub cqes: u32,
- pub flags: u32,
- pub resv1: u32,
- pub resv2: u64,
-}
-
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Debug, Default)]
-pub struct io_uring_probe {
- pub last_op: IoringOp,
- pub ops_len: u8,
- pub resv: u16,
- pub resv2: [u32; 3],
- pub ops: sys::__IncompleteArrayField<io_uring_probe_op>,
-}
-
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Debug, Copy, Clone, Default)]
-pub struct io_uring_probe_op {
- pub op: IoringOp,
- pub resv: u8,
- pub flags: IoringOpFlags,
- pub resv2: u32,
-}
-
-#[allow(missing_docs)]
-#[repr(C, align(8))]
-#[derive(Debug, Copy, Clone, Default)]
-pub struct io_uring_files_update {
- pub offset: u32,
- pub resv: u32,
- pub fds: u64,
-}
-
-#[allow(missing_docs)]
-#[repr(C, align(8))]
-#[derive(Debug, Copy, Clone, Default)]
-pub struct io_uring_rsrc_register {
- pub nr: u32,
- pub flags: IoringRsrcFlags,
- pub resv2: u64,
- pub data: u64,
- pub tags: u64,
-}
-
-#[allow(missing_docs)]
-#[repr(C, align(8))]
-#[derive(Debug, Copy, Clone, Default)]
-pub struct io_uring_rsrc_update {
- pub offset: u32,
- pub resv: u32,
- pub data: u64,
-}
-
-#[allow(missing_docs)]
-#[repr(C, align(8))]
-#[derive(Debug, Copy, Clone, Default)]
-pub struct io_uring_rsrc_update2 {
- pub offset: u32,
- pub resv: u32,
- pub data: u64,
- pub tags: u64,
- pub nr: u32,
- pub resv2: u32,
-}
-
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Debug, Copy, Clone, Default)]
-pub struct io_uring_getevents_arg {
- pub sigmask: u64,
- pub sigmask_sz: u32,
- pub pad: u32,
- pub ts: u64,
-}
-
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Debug, Default, Copy, Clone)]
-pub struct io_uring_recvmsg_out {
- pub namelen: u32,
- pub controllen: u32,
- pub payloadlen: u32,
- pub flags: RecvmsgOutFlags,
-}
-
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Debug, Copy, Clone)]
-pub struct iovec {
- pub iov_base: *mut c_void,
- pub iov_len: usize,
-}
-
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Debug, Copy, Clone, Default)]
-pub struct open_how {
- /// An [`OFlags`] value represented as a `u64`.
- ///
- /// [`OFlags`]: crate::fs::OFlags
- pub flags: u64,
-
- /// A [`Mode`] value represented as a `u64`.
- ///
- /// [`Mode`]: crate::fs::Mode
- pub mode: u64,
-
- pub resolve: crate::fs::ResolveFlags,
-}
-
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Debug, Copy, Clone, Default)]
-pub struct io_uring_buf_reg {
- pub ring_addr: u64,
- pub ring_entries: u32,
- pub bgid: u16,
- pub pad: u16,
- pub resv: [u64; 3_usize],
-}
-
-#[allow(missing_docs)]
-#[repr(C)]
-#[derive(Debug, Copy, Clone, Default)]
-pub struct io_uring_buf {
- pub addr: u64,
- pub len: u32,
- pub bid: u16,
- pub resv: u16,
-}
-
-impl Default for ioprio_union {
- #[inline]
- fn default() -> Self {
- // SAFETY: All of Linux's io_uring structs may be zero-initialized.
- unsafe { ::core::mem::zeroed::<Self>() }
- }
-}
-
-impl Default for len_union {
- #[inline]
- fn default() -> Self {
- // SAFETY: All of Linux's io_uring structs may be zero-initialized.
- unsafe { ::core::mem::zeroed::<Self>() }
- }
-}
-
-impl Default for off_or_addr2_union {
- #[inline]
- fn default() -> Self {
- // SAFETY: All of Linux's io_uring structs may be zero-initialized.
- unsafe { ::core::mem::zeroed::<Self>() }
- }
-}
-
-impl Default for addr_or_splice_off_in_union {
- #[inline]
- fn default() -> Self {
- // SAFETY: All of Linux's io_uring structs may be zero-initialized.
- unsafe { ::core::mem::zeroed::<Self>() }
- }
-}
-
-impl Default for addr3_or_cmd_union {
- #[inline]
- fn default() -> Self {
- // SAFETY: All of Linux's io_uring structs may be zero-initialized.
- unsafe { ::core::mem::zeroed::<Self>() }
- }
-}
-
-impl Default for op_flags_union {
- #[inline]
- fn default() -> Self {
- // SAFETY: All of Linux's io_uring structs may be zero-initialized.
- unsafe { ::core::mem::zeroed::<Self>() }
- }
-}
-
-impl Default for buf_union {
- #[inline]
- fn default() -> Self {
- // SAFETY: All of Linux's io_uring structs may be zero-initialized.
- unsafe { ::core::mem::zeroed::<Self>() }
- }
-}
-
-impl Default for splice_fd_in_or_file_index_union {
- #[inline]
- fn default() -> Self {
- // SAFETY: All of Linux's io_uring structs may be zero-initialized.
- unsafe { ::core::mem::zeroed::<Self>() }
- }
-}
-
-impl Default for register_or_sqe_op_or_sqe_flags_union {
- #[inline]
- fn default() -> Self {
- // SAFETY: All of Linux's io_uring structs may be zero-initialized.
- unsafe { ::core::mem::zeroed::<Self>() }
- }
-}
-
-/// Check that our custom structs and unions have the same layout as the
-/// kernel's versions.
-#[test]
-fn io_uring_layouts() {
- use core::mem::{align_of, size_of};
- use memoffset::{offset_of, span_of};
-
- // Check that the size and alignment of a type match the `sys` bindings.
- macro_rules! check_type {
- ($struct:ident) => {
- assert_eq!(
- (size_of::<$struct>(), align_of::<$struct>()),
- (size_of::<sys::$struct>(), align_of::<sys::$struct>())
- );
- };
- }
-
- // The same as `check_type`, but for unions and anonymous structs we've
- // renamed to avoid having types like "bindgen_ty_1" in the API.
- macro_rules! check_renamed_type {
- ($to:ident, $from:ident) => {
- assert_eq!(
- (size_of::<$to>(), align_of::<$to>()),
- (size_of::<sys::$from>(), align_of::<sys::$from>())
- );
- };
- }
-
- // Check that the field of a struct has the same offset as the
- // corresponding field in the `sys` bindings.
- macro_rules! check_struct_field {
- ($struct:ident, $field:ident) => {
- assert_eq!(
- offset_of!($struct, $field),
- offset_of!(sys::$struct, $field)
- );
- assert_eq!(span_of!($struct, $field), span_of!(sys::$struct, $field));
- };
- }
-
- // The same as `check_struct_field`, but for unions and anonymous structs
- // we've renamed to avoid having types like "bindgen_ty_1" in the API.
- macro_rules! check_struct_renamed_field {
- ($struct:ident, $to:ident, $from:ident) => {
- assert_eq!(offset_of!($struct, $to), offset_of!(sys::$struct, $from));
- assert_eq!(span_of!($struct, $to), span_of!(sys::$struct, $from));
- };
- }
-
- // For the common case of no renaming, check all fields of a struct.
- macro_rules! check_struct {
- ($name:ident, $($field:ident),*) => {
- // Check the size and alignment.
- check_type!($name);
-
- // Check that we have all the fields.
- let _test = $name {
- // SAFETY: All of io_uring's types can be zero-initialized.
- $($field: unsafe { core::mem::zeroed() }),*
- };
-
- // Check that the fields have the right sizes and offsets.
- $(check_struct_field!($name, $field));*
- };
- }
-
- check_renamed_type!(off_or_addr2_union, io_uring_sqe__bindgen_ty_1);
- check_renamed_type!(addr_or_splice_off_in_union, io_uring_sqe__bindgen_ty_2);
- check_renamed_type!(addr3_or_cmd_union, io_uring_sqe__bindgen_ty_6);
- check_renamed_type!(op_flags_union, io_uring_sqe__bindgen_ty_3);
- check_renamed_type!(buf_union, io_uring_sqe__bindgen_ty_4);
- check_renamed_type!(splice_fd_in_or_file_index_union, io_uring_sqe__bindgen_ty_5);
- check_renamed_type!(
- register_or_sqe_op_or_sqe_flags_union,
- io_uring_restriction__bindgen_ty_1
- );
-
- check_renamed_type!(addr3_struct, io_uring_sqe__bindgen_ty_6__bindgen_ty_1);
- check_renamed_type!(cmd_op_struct, io_uring_sqe__bindgen_ty_1__bindgen_ty_1);
-
- check_type!(io_uring_sqe);
- check_struct_field!(io_uring_sqe, opcode);
- check_struct_field!(io_uring_sqe, flags);
- check_struct_field!(io_uring_sqe, ioprio);
- check_struct_field!(io_uring_sqe, fd);
- check_struct_renamed_field!(io_uring_sqe, off_or_addr2, __bindgen_anon_1);
- check_struct_renamed_field!(io_uring_sqe, addr_or_splice_off_in, __bindgen_anon_2);
- check_struct_field!(io_uring_sqe, len);
- check_struct_renamed_field!(io_uring_sqe, op_flags, __bindgen_anon_3);
- check_struct_field!(io_uring_sqe, user_data);
- check_struct_renamed_field!(io_uring_sqe, buf, __bindgen_anon_4);
- check_struct_field!(io_uring_sqe, personality);
- check_struct_renamed_field!(io_uring_sqe, splice_fd_in_or_file_index, __bindgen_anon_5);
- check_struct_renamed_field!(io_uring_sqe, addr3_or_cmd, __bindgen_anon_6);
-
- check_type!(io_uring_restriction);
- check_struct_field!(io_uring_restriction, opcode);
- check_struct_renamed_field!(
- io_uring_restriction,
- register_or_sqe_op_or_sqe_flags,
- __bindgen_anon_1
- );
- check_struct_field!(io_uring_restriction, resv);
- check_struct_field!(io_uring_restriction, resv2);
-
- check_struct!(io_uring_cqe, user_data, res, flags);
- check_struct!(
- io_uring_params,
- sq_entries,
- cq_entries,
- flags,
- sq_thread_cpu,
- sq_thread_idle,
- features,
- wq_fd,
- resv,
- sq_off,
- cq_off
- );
- check_struct!(
- io_sqring_offsets,
- head,
- tail,
- ring_mask,
- ring_entries,
- flags,
- dropped,
- array,
- resv1,
- resv2
- );
- check_struct!(
- io_cqring_offsets,
- head,
- tail,
- ring_mask,
- ring_entries,
- overflow,
- cqes,
- flags,
- resv1,
- resv2
- );
- check_struct!(io_uring_recvmsg_out, namelen, controllen, payloadlen, flags);
- check_struct!(io_uring_probe, last_op, ops_len, resv, resv2, ops);
- check_struct!(io_uring_probe_op, op, resv, flags, resv2);
- check_struct!(io_uring_files_update, offset, resv, fds);
- check_struct!(io_uring_rsrc_register, nr, flags, resv2, data, tags);
- check_struct!(io_uring_rsrc_update, offset, resv, data);
- check_struct!(io_uring_rsrc_update2, offset, resv, data, tags, nr, resv2);
- check_struct!(io_uring_getevents_arg, sigmask, sigmask_sz, pad, ts);
- check_struct!(iovec, iov_base, iov_len);
- check_struct!(open_how, flags, mode, resolve);
- check_struct!(io_uring_buf_reg, ring_addr, ring_entries, bgid, pad, resv);
- check_struct!(io_uring_buf, addr, len, bid, resv);
-}
diff --git a/vendor/rustix-0.37.6/src/lib.rs b/vendor/rustix-0.37.6/src/lib.rs
deleted file mode 100644
index 9e62b1594..000000000
--- a/vendor/rustix-0.37.6/src/lib.rs
+++ /dev/null
@@ -1,225 +0,0 @@
-//! `rustix` provides efficient memory-safe and [I/O-safe] wrappers to
-//! POSIX-like, Unix-like, Linux, and Winsock2 syscall-like APIs, with
-//! configurable backends.
-//!
-//! With rustix, you can write code like this:
-//!
-//! ```
-//! # #[cfg(feature = "net")]
-//! # fn read(sock: std::net::TcpStream, buf: &mut [u8]) -> std::io::Result<()> {
-//! # use rustix::net::RecvFlags;
-//! let nread: usize = rustix::net::recv(&sock, buf, RecvFlags::PEEK)?;
-//! # let _ = nread;
-//! # Ok(())
-//! # }
-//! ```
-//!
-//! instead of like this:
-//!
-//! ```
-//! # #[cfg(feature = "net")]
-//! # fn read(sock: std::net::TcpStream, buf: &mut [u8]) -> std::io::Result<()> {
-//! # use std::convert::TryInto;
-//! # #[cfg(unix)]
-//! # use std::os::unix::io::AsRawFd;
-//! # #[cfg(target_os = "wasi")]
-//! # use std::os::wasi::io::AsRawFd;
-//! # #[cfg(windows)]
-//! # use windows_sys::Win32::Networking::WinSock as libc;
-//! # #[cfg(windows)]
-//! # use std::os::windows::io::AsRawSocket;
-//! # const MSG_PEEK: i32 = libc::MSG_PEEK;
-//! let nread: usize = unsafe {
-//! #[cfg(any(unix, target_os = "wasi"))]
-//! let raw = sock.as_raw_fd();
-//! #[cfg(windows)]
-//! let raw = sock.as_raw_socket();
-//! match libc::recv(
-//! raw as _,
-//! buf.as_mut_ptr().cast(),
-//! buf.len().try_into().unwrap_or(i32::MAX as _),
-//! MSG_PEEK,
-//! ) {
-//! -1 => return Err(std::io::Error::last_os_error()),
-//! nread => nread as usize,
-//! }
-//! };
-//! # let _ = nread;
-//! # Ok(())
-//! # }
-//! ```
-//!
-//! rustix's APIs perform the following tasks:
-//! - Error values are translated to [`Result`]s.
-//! - Buffers are passed as Rust slices.
-//! - Out-parameters are presented as return values.
-//! - Path arguments use [`Arg`], so they accept any string type.
-//! - File descriptors are passed and returned via [`AsFd`] and [`OwnedFd`]
-//! instead of bare integers, ensuring I/O safety.
-//! - Constants use `enum`s and [`bitflags`] types.
-//! - Multiplexed functions (eg. `fcntl`, `ioctl`, etc.) are de-multiplexed.
-//! - Variadic functions (eg. `openat`, etc.) are presented as non-variadic.
-//! - Functions and types which need `l` prefixes or `64` suffixes to enable
-//! large-file support (LFS) are used automatically. File sizes and offsets
-//! are always presented as `u64` and `i64`.
-//! - Behaviors that depend on the sizes of C types like `long` are hidden.
-//! - In some places, more human-friendly and less historical-accident names
-//! are used (and documentation aliases are used so that the original names
-//! can still be searched for).
-//! - Provide y2038 compatibility, on platforms which support this.
-//! - Correct selected platform bugs, such as behavioral differences when
-//! running under seccomp.
-//!
-//! Things they don't do include:
-//! - Detecting whether functions are supported at runtime.
-//! - Hiding significant differences between platforms.
-//! - Restricting ambient authorities.
-//! - Imposing sandboxing features such as filesystem path or network address
-//! sandboxing.
-//!
-//! See [`cap-std`], [`system-interface`], and [`io-streams`] for libraries
-//! which do hide significant differences between platforms, and [`cap-std`]
-//! which does perform sandboxing and restricts ambient authorities.
-//!
-//! [`cap-std`]: https://crates.io/crates/cap-std
-//! [`system-interface`]: https://crates.io/crates/system-interface
-//! [`io-streams`]: https://crates.io/crates/io-streams
-//! [`getrandom`]: https://crates.io/crates/getrandom
-//! [`bitflags`]: https://crates.io/crates/bitflags
-//! [`AsFd`]: https://doc.rust-lang.org/stable/std/os/fd/trait.AsFd.html
-//! [`OwnedFd`]: https://doc.rust-lang.org/stable/std/os/fd/struct.OwnedFd.html
-//! [I/O-safe]: https://github.com/rust-lang/rfcs/blob/master/text/3128-io-safety.md
-//! [`Result`]: https://doc.rust-lang.org/stable/std/result/enum.Result.html
-//! [`Arg`]: https://docs.rs/rustix/*/rustix/path/trait.Arg.html
-
-#![deny(missing_docs)]
-#![allow(stable_features)]
-#![cfg_attr(linux_raw, deny(unsafe_code))]
-#![cfg_attr(rustc_attrs, feature(rustc_attrs))]
-#![cfg_attr(doc_cfg, feature(doc_cfg))]
-#![cfg_attr(all(target_os = "wasi", feature = "std"), feature(wasi_ext))]
-#![cfg_attr(
- all(linux_raw, naked_functions, target_arch = "x86"),
- feature(naked_functions)
-)]
-#![cfg_attr(io_lifetimes_use_std, feature(io_safety))]
-#![cfg_attr(core_ffi_c, feature(core_ffi_c))]
-#![cfg_attr(core_c_str, feature(core_c_str))]
-#![cfg_attr(alloc_c_string, feature(alloc_ffi))]
-#![cfg_attr(alloc_c_string, feature(alloc_c_string))]
-#![cfg_attr(not(feature = "std"), no_std)]
-#![cfg_attr(feature = "rustc-dep-of-std", feature(core_intrinsics))]
-#![cfg_attr(feature = "rustc-dep-of-std", feature(ip))]
-#![cfg_attr(
- all(not(feature = "rustc-dep-of-std"), core_intrinsics),
- feature(core_intrinsics)
-)]
-#![cfg_attr(asm_experimental_arch, feature(asm_experimental_arch))]
-#![cfg_attr(not(feature = "all-apis"), allow(dead_code))]
-// Clamp depends on Rust 1.50 which is newer than our MSRV.
-#![allow(clippy::manual_clamp)]
-// It is common in linux and libc APIs for types to vary between platforms.
-#![allow(clippy::unnecessary_cast)]
-// It is common in linux and libc APIs for types to vary between platforms.
-#![allow(clippy::useless_conversion)]
-
-#[cfg(not(feature = "rustc-dep-of-std"))]
-extern crate alloc;
-
-// Internal utilities.
-#[cfg(not(windows))]
-#[macro_use]
-pub(crate) mod cstr;
-#[macro_use]
-pub(crate) mod const_assert;
-pub(crate) mod utils;
-
-// Pick the backend implementation to use.
-#[cfg_attr(libc, path = "backend/libc/mod.rs")]
-#[cfg_attr(linux_raw, path = "backend/linux_raw/mod.rs")]
-#[cfg_attr(wasi, path = "backend/wasi/mod.rs")]
-mod backend;
-
-/// Export the `*Fd` types and traits that are used in rustix's public API.
-///
-/// Users can use this to avoid needing to import anything else to use the same
-/// versions of these types and traits.
-pub mod fd {
- use super::backend;
- #[cfg(windows)]
- pub use backend::fd::AsSocket;
- pub use backend::fd::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, OwnedFd, RawFd};
-}
-
-// The public API modules.
-#[cfg(not(windows))]
-pub mod ffi;
-#[cfg(not(windows))]
-#[cfg(feature = "fs")]
-#[cfg_attr(doc_cfg, doc(cfg(feature = "fs")))]
-pub mod fs;
-pub mod io;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[cfg(feature = "io_uring")]
-#[cfg_attr(doc_cfg, doc(cfg(feature = "io_uring")))]
-pub mod io_uring;
-#[cfg(not(any(windows, target_os = "wasi")))]
-#[cfg(feature = "mm")]
-#[cfg_attr(doc_cfg, doc(cfg(feature = "mm")))]
-pub mod mm;
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-#[cfg(feature = "net")]
-#[cfg_attr(doc_cfg, doc(cfg(feature = "net")))]
-pub mod net;
-#[cfg(not(windows))]
-#[cfg(feature = "param")]
-#[cfg_attr(doc_cfg, doc(cfg(feature = "param")))]
-pub mod param;
-#[cfg(not(windows))]
-#[cfg(any(feature = "fs", feature = "net"))]
-#[cfg_attr(doc_cfg, doc(cfg(any(feature = "fs", feature = "net"))))]
-pub mod path;
-#[cfg(not(windows))]
-#[cfg(feature = "process")]
-#[cfg_attr(doc_cfg, doc(cfg(feature = "process")))]
-pub mod process;
-#[cfg(not(windows))]
-#[cfg(feature = "rand")]
-#[cfg_attr(doc_cfg, doc(cfg(feature = "rand")))]
-pub mod rand;
-#[cfg(not(windows))]
-#[cfg(feature = "termios")]
-#[cfg_attr(doc_cfg, doc(cfg(feature = "termios")))]
-pub mod termios;
-#[cfg(not(windows))]
-#[cfg(feature = "thread")]
-#[cfg_attr(doc_cfg, doc(cfg(feature = "thread")))]
-pub mod thread;
-#[cfg(not(windows))]
-#[cfg(feature = "time")]
-#[cfg_attr(doc_cfg, doc(cfg(feature = "time")))]
-pub mod time;
-
-// "runtime" is also a public API module, but it's only for libc-like users.
-#[cfg(not(windows))]
-#[cfg(feature = "runtime")]
-#[doc(hidden)]
-#[cfg_attr(doc_cfg, doc(cfg(feature = "runtime")))]
-pub mod runtime;
-
-// We have some internal interdependencies in the API features, so for now,
-// for API features that aren't enabled, declare them as `pub(crate)` so
-// that they're not public, but still available for internal use.
-
-#[cfg(not(windows))]
-#[cfg(all(
- not(feature = "param"),
- any(feature = "runtime", feature = "time", target_arch = "x86"),
-))]
-pub(crate) mod param;
-#[cfg(not(windows))]
-#[cfg(not(any(feature = "fs", feature = "net")))]
-pub(crate) mod path;
-#[cfg(not(windows))]
-#[cfg(not(feature = "process"))]
-pub(crate) mod process;
diff --git a/vendor/rustix-0.37.6/src/mm/madvise.rs b/vendor/rustix-0.37.6/src/mm/madvise.rs
deleted file mode 100644
index cf13f951b..000000000
--- a/vendor/rustix-0.37.6/src/mm/madvise.rs
+++ /dev/null
@@ -1,35 +0,0 @@
-//! The `madvise` function.
-//!
-//! # Safety
-//!
-//! `madvise` operates on a raw pointer. Some forms of `madvise` may
-//! mutate the memory or have other side effects.
-#![allow(unsafe_code)]
-
-use crate::{backend, io};
-use core::ffi::c_void;
-
-pub use backend::mm::types::Advice;
-
-/// `posix_madvise(addr, len, advice)`—Declares an expected access pattern
-/// for a memory-mapped file.
-///
-/// # Safety
-///
-/// `addr` must be a valid pointer to memory that is appropriate to
-/// call `posix_madvise` on. Some forms of `advice` may mutate the memory
-/// or evoke a variety of side-effects on the mapping and/or the file.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux `madvise`]
-/// - [Linux `posix_madvise`]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/posix_madvise.html
-/// [Linux `madvise`]: https://man7.org/linux/man-pages/man2/madvise.2.html
-/// [Linux `posix_madvise`]: https://man7.org/linux/man-pages/man3/posix_madvise.3.html
-#[inline]
-#[doc(alias = "posix_madvise")]
-pub unsafe fn madvise(addr: *mut c_void, len: usize, advice: Advice) -> io::Result<()> {
- backend::mm::syscalls::madvise(addr, len, advice)
-}
diff --git a/vendor/rustix-0.37.6/src/mm/mmap.rs b/vendor/rustix-0.37.6/src/mm/mmap.rs
deleted file mode 100644
index 715c662ec..000000000
--- a/vendor/rustix-0.37.6/src/mm/mmap.rs
+++ /dev/null
@@ -1,231 +0,0 @@
-//! The `mmap` API.
-//!
-//! # Safety
-//!
-//! `mmap` and related functions manipulate raw pointers and have special
-//! semantics and are wildly unsafe.
-#![allow(unsafe_code)]
-
-use crate::{backend, io};
-use backend::fd::AsFd;
-use core::ffi::c_void;
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub use backend::mm::types::MlockFlags;
-#[cfg(any(target_os = "emscripten", target_os = "linux"))]
-pub use backend::mm::types::MremapFlags;
-pub use backend::mm::types::{MapFlags, MprotectFlags, ProtFlags};
-
-/// `mmap(ptr, len, prot, flags, fd, offset)`—Create a file-backed memory
-/// mapping.
-///
-/// For anonymous mappings (`MAP_ANON`/`MAP_ANONYMOUS`), see
-/// [`mmap_anonymous`].
-///
-/// # Safety
-///
-/// Raw pointers and lots of special semantics.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/mmap.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/mmap.2.html
-#[inline]
-pub unsafe fn mmap<Fd: AsFd>(
- ptr: *mut c_void,
- len: usize,
- prot: ProtFlags,
- flags: MapFlags,
- fd: Fd,
- offset: u64,
-) -> io::Result<*mut c_void> {
- backend::mm::syscalls::mmap(ptr, len, prot, flags, fd.as_fd(), offset)
-}
-
-/// `mmap(ptr, len, prot, MAP_ANONYMOUS | flags, -1, 0)`—Create an anonymous
-/// memory mapping.
-///
-/// For file-backed mappings, see [`mmap`].
-///
-/// # Safety
-///
-/// Raw pointers and lots of special semantics.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/mmap.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/mmap.2.html
-#[inline]
-#[doc(alias = "mmap")]
-pub unsafe fn mmap_anonymous(
- ptr: *mut c_void,
- len: usize,
- prot: ProtFlags,
- flags: MapFlags,
-) -> io::Result<*mut c_void> {
- backend::mm::syscalls::mmap_anonymous(ptr, len, prot, flags)
-}
-
-/// `munmap(ptr, len)`
-///
-/// # Safety
-///
-/// Raw pointers and lots of special semantics.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/munmap.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/munmap.2.html
-#[inline]
-pub unsafe fn munmap(ptr: *mut c_void, len: usize) -> io::Result<()> {
- backend::mm::syscalls::munmap(ptr, len)
-}
-
-/// `mremap(old_address, old_size, new_size, flags)`—Resize, modify,
-/// and/or move a memory mapping.
-///
-/// For moving a mapping to a fixed address (`MREMAP_FIXED`), see
-/// [`mremap_fixed`].
-///
-/// # Safety
-///
-/// Raw pointers and lots of special semantics.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/mremap.2.html
-#[cfg(any(target_os = "emscripten", target_os = "linux"))]
-#[inline]
-pub unsafe fn mremap(
- old_address: *mut c_void,
- old_size: usize,
- new_size: usize,
- flags: MremapFlags,
-) -> io::Result<*mut c_void> {
- backend::mm::syscalls::mremap(old_address, old_size, new_size, flags)
-}
-
-/// `mremap(old_address, old_size, new_size, MREMAP_FIXED | flags)`—Resize,
-/// modify, and/or move a memory mapping to a specific address.
-///
-/// For `mremap` without moving to a specific address, see [`mremap`].
-/// [`mremap_fixed`].
-///
-/// # Safety
-///
-/// Raw pointers and lots of special semantics.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/mremap.2.html
-#[cfg(any(target_os = "emscripten", target_os = "linux"))]
-#[inline]
-#[doc(alias = "mremap")]
-pub unsafe fn mremap_fixed(
- old_address: *mut c_void,
- old_size: usize,
- new_size: usize,
- flags: MremapFlags,
- new_address: *mut c_void,
-) -> io::Result<*mut c_void> {
- backend::mm::syscalls::mremap_fixed(old_address, old_size, new_size, flags, new_address)
-}
-
-/// `mprotect(ptr, len, flags)`
-///
-/// # Safety
-///
-/// Raw pointers and lots of special semantics.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/mprotect.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/mprotect.2.html
-#[inline]
-pub unsafe fn mprotect(ptr: *mut c_void, len: usize, flags: MprotectFlags) -> io::Result<()> {
- backend::mm::syscalls::mprotect(ptr, len, flags)
-}
-
-/// `mlock(ptr, len)`—Lock memory into RAM.
-///
-/// # Safety
-///
-/// This function operates on raw pointers, but it should only be used on
-/// memory which the caller owns. Technically, locking memory shouldn't violate
-/// any invariants, but since unlocking it can violate invariants, this
-/// function is also unsafe for symmetry.
-///
-/// Some implementations implicitly round the memory region out to the nearest
-/// page boundaries, so this function may lock more memory than explicitly
-/// requested if the memory isn't page-aligned.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/mlock.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/mlock.2.html
-#[inline]
-pub unsafe fn mlock(ptr: *mut c_void, len: usize) -> io::Result<()> {
- backend::mm::syscalls::mlock(ptr, len)
-}
-
-/// `mlock2(ptr, len, flags)`—Lock memory into RAM, with
-/// flags.
-///
-/// `mlock_with` is the same as [`mlock`] but adds an additional flags operand.
-///
-/// # Safety
-///
-/// This function operates on raw pointers, but it should only be used on
-/// memory which the caller owns. Technically, locking memory shouldn't violate
-/// any invariants, but since unlocking it can violate invariants, this
-/// function is also unsafe for symmetry.
-///
-/// Some implementations implicitly round the memory region out to the nearest
-/// page boundaries, so this function may lock more memory than explicitly
-/// requested if the memory isn't page-aligned.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/mlock2.2.html
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-#[doc(alias = "mlock2")]
-pub unsafe fn mlock_with(ptr: *mut c_void, len: usize, flags: MlockFlags) -> io::Result<()> {
- backend::mm::syscalls::mlock_with(ptr, len, flags)
-}
-
-/// `munlock(ptr, len)`—Unlock memory.
-///
-/// # Safety
-///
-/// This function operates on raw pointers, but it should only be used on
-/// memory which the caller owns, to avoid compromising the `mlock` invariants
-/// of other unrelated code in the process.
-///
-/// Some implementations implicitly round the memory region out to the nearest
-/// page boundaries, so this function may unlock more memory than explicitly
-/// requested if the memory isn't page-aligned.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/munlock.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/munlock.2.html
-#[inline]
-pub unsafe fn munlock(ptr: *mut c_void, len: usize) -> io::Result<()> {
- backend::mm::syscalls::munlock(ptr, len)
-}
diff --git a/vendor/rustix-0.37.6/src/mm/mod.rs b/vendor/rustix-0.37.6/src/mm/mod.rs
deleted file mode 100644
index 5a439b34b..000000000
--- a/vendor/rustix-0.37.6/src/mm/mod.rs
+++ /dev/null
@@ -1,15 +0,0 @@
-//! Memory map operations.
-
-#[cfg(not(target_os = "redox"))]
-mod madvise;
-mod mmap;
-mod msync;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-mod userfaultfd;
-
-#[cfg(not(target_os = "redox"))]
-pub use madvise::{madvise, Advice};
-pub use mmap::*;
-pub use msync::{msync, MsyncFlags};
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub use userfaultfd::{userfaultfd, UserfaultfdFlags};
diff --git a/vendor/rustix-0.37.6/src/mm/msync.rs b/vendor/rustix-0.37.6/src/mm/msync.rs
deleted file mode 100644
index 3ca418fc4..000000000
--- a/vendor/rustix-0.37.6/src/mm/msync.rs
+++ /dev/null
@@ -1,32 +0,0 @@
-//! The `msync` function.
-//!
-//! # Safety
-//!
-//! `msync` operates on a raw pointer. Some forms of `msync` may mutate the
-//! memory or have other side effects.
-#![allow(unsafe_code)]
-
-use crate::{backend, io};
-use core::ffi::c_void;
-
-pub use backend::mm::types::MsyncFlags;
-
-/// `msync(addr, len, flags)`—Synchronizes a memory-mapping with its backing
-/// storage.
-///
-/// # Safety
-///
-/// `addr` must be a valid pointer to memory that is appropriate to
-/// call `msync` on. Some forms of `msync` may mutate the memory
-/// or evoke a variety of side-effects on the mapping and/or the file.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux `msync`]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/msync.html
-/// [Linux `msync`]: https://man7.org/linux/man-pages/man2/msync.2.html
-#[inline]
-pub unsafe fn msync(addr: *mut c_void, len: usize, flags: MsyncFlags) -> io::Result<()> {
- backend::mm::syscalls::msync(addr, len, flags)
-}
diff --git a/vendor/rustix-0.37.6/src/mm/userfaultfd.rs b/vendor/rustix-0.37.6/src/mm/userfaultfd.rs
deleted file mode 100644
index 201d54772..000000000
--- a/vendor/rustix-0.37.6/src/mm/userfaultfd.rs
+++ /dev/null
@@ -1,30 +0,0 @@
-//! The Linux `userfaultfd` API.
-//!
-//! # Safety
-//!
-//! Calling `userfaultfd` is safe, but the returned file descriptor lets users
-//! observe and manipulate process memory in magical ways.
-#![allow(unsafe_code)]
-
-use crate::fd::OwnedFd;
-use crate::{backend, io};
-
-pub use backend::mm::types::UserfaultfdFlags;
-
-/// `userfaultfd(flags)`
-///
-/// # Safety
-///
-/// The call itself is safe, but the returned file descriptor lets users
-/// observe and manipulate process memory in magical ways.
-///
-/// # References
-/// - [Linux]
-/// - [Linux userfaultfd]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/userfaultfd.2.html
-/// [Linux userfaultfd]: https://www.kernel.org/doc/Documentation/vm/userfaultfd.txt
-#[inline]
-pub unsafe fn userfaultfd(flags: UserfaultfdFlags) -> io::Result<OwnedFd> {
- backend::mm::syscalls::userfaultfd(flags)
-}
diff --git a/vendor/rustix-0.37.6/src/net/addr.rs b/vendor/rustix-0.37.6/src/net/addr.rs
deleted file mode 100644
index ca87298e9..000000000
--- a/vendor/rustix-0.37.6/src/net/addr.rs
+++ /dev/null
@@ -1,641 +0,0 @@
-//! The following is derived from Rust's
-//! library/std/src/net/socket_addr.rs at revision
-//! bd20fc1fd657b32f7aa1d70d8723f04c87f21606.
-//!
-//! All code in this file is licensed MIT or Apache 2.0 at your option.
-//!
-//! This defines `SocketAddr`, `SocketAddrV4`, and `SocketAddrV6` in a
-//! platform-independent way. It is not the native representation.
-
-use crate::net::ip::{IpAddr, Ipv4Addr, Ipv6Addr};
-use core::cmp::Ordering;
-use core::hash;
-
-/// An internet socket address, either IPv4 or IPv6.
-///
-/// Internet socket addresses consist of an [IP address], a 16-bit port number, as well
-/// as possibly some version-dependent additional information. See [`SocketAddrV4`]'s and
-/// [`SocketAddrV6`]'s respective documentation for more details.
-///
-/// The size of a `SocketAddr` instance may vary depending on the target operating
-/// system.
-///
-/// [IP address]: IpAddr
-///
-/// # Examples
-///
-/// ```
-/// use std::net::{IpAddr, Ipv4Addr, SocketAddr};
-///
-/// let socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080);
-///
-/// assert_eq!("127.0.0.1:8080".parse(), Ok(socket));
-/// assert_eq!(socket.port(), 8080);
-/// assert_eq!(socket.is_ipv4(), true);
-/// ```
-#[derive(Copy, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
-#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
-pub enum SocketAddr {
- /// An IPv4 socket address.
- #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
- V4(#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] SocketAddrV4),
- /// An IPv6 socket address.
- #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
- V6(#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))] SocketAddrV6),
-}
-
-/// An IPv4 socket address.
-///
-/// IPv4 socket addresses consist of an [`IPv4` address] and a 16-bit port number, as
-/// stated in [IETF RFC 793].
-///
-/// See [`SocketAddr`] for a type encompassing both IPv4 and IPv6 socket addresses.
-///
-/// The size of a `SocketAddrV4` struct may vary depending on the target operating
-/// system. Do not assume that this type has the same memory layout as the underlying
-/// system representation.
-///
-/// [IETF RFC 793]: https://tools.ietf.org/html/rfc793
-/// [`IPv4` address]: Ipv4Addr
-///
-/// # Examples
-///
-/// ```
-/// use std::net::{Ipv4Addr, SocketAddrV4};
-///
-/// let socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080);
-///
-/// assert_eq!("127.0.0.1:8080".parse(), Ok(socket));
-/// assert_eq!(socket.ip(), &Ipv4Addr::new(127, 0, 0, 1));
-/// assert_eq!(socket.port(), 8080);
-/// ```
-#[derive(Copy, Clone, Eq, PartialEq)]
-#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
-pub struct SocketAddrV4 {
- ip: Ipv4Addr,
- port: u16,
-}
-
-/// An IPv6 socket address.
-///
-/// IPv6 socket addresses consist of an [`IPv6` address], a 16-bit port number, as well
-/// as fields containing the traffic class, the flow label, and a scope identifier
-/// (see [IETF RFC 2553, Section 3.3] for more details).
-///
-/// See [`SocketAddr`] for a type encompassing both IPv4 and IPv6 socket addresses.
-///
-/// The size of a `SocketAddrV6` struct may vary depending on the target operating
-/// system. Do not assume that this type has the same memory layout as the underlying
-/// system representation.
-///
-/// [IETF RFC 2553, Section 3.3]: https://tools.ietf.org/html/rfc2553#section-3.3
-/// [`IPv6` address]: Ipv6Addr
-///
-/// # Examples
-///
-/// ```
-/// use std::net::{Ipv6Addr, SocketAddrV6};
-///
-/// let socket = SocketAddrV6::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
-///
-/// assert_eq!("[2001:db8::1]:8080".parse(), Ok(socket));
-/// assert_eq!(socket.ip(), &Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 1));
-/// assert_eq!(socket.port(), 8080);
-/// ```
-#[derive(Copy, Clone, Eq, PartialEq)]
-#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
-pub struct SocketAddrV6 {
- ip: Ipv6Addr,
- port: u16,
- flowinfo: u32,
- scope_id: u32,
-}
-
-impl SocketAddr {
- /// Creates a new socket address from an [IP address] and a port number.
- ///
- /// [IP address]: IpAddr
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{IpAddr, Ipv4Addr, SocketAddr};
- ///
- /// let socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080);
- /// assert_eq!(socket.ip(), IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)));
- /// assert_eq!(socket.port(), 8080);
- /// ```
- #[cfg_attr(staged_api, stable(feature = "ip_addr", since = "1.7.0"))]
- #[must_use]
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_socketaddr", issue = "82485")
- )]
- pub const fn new(ip: IpAddr, port: u16) -> SocketAddr {
- match ip {
- IpAddr::V4(a) => SocketAddr::V4(SocketAddrV4::new(a, port)),
- IpAddr::V6(a) => SocketAddr::V6(SocketAddrV6::new(a, port, 0, 0)),
- }
- }
-
- /// Returns the IP address associated with this socket address.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{IpAddr, Ipv4Addr, SocketAddr};
- ///
- /// let socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080);
- /// assert_eq!(socket.ip(), IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)));
- /// ```
- #[must_use]
- #[cfg_attr(staged_api, stable(feature = "ip_addr", since = "1.7.0"))]
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_socketaddr", issue = "82485")
- )]
- pub const fn ip(&self) -> IpAddr {
- match *self {
- SocketAddr::V4(ref a) => IpAddr::V4(*a.ip()),
- SocketAddr::V6(ref a) => IpAddr::V6(*a.ip()),
- }
- }
-
- /// Changes the IP address associated with this socket address.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{IpAddr, Ipv4Addr, SocketAddr};
- ///
- /// let mut socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080);
- /// socket.set_ip(IpAddr::V4(Ipv4Addr::new(10, 10, 0, 1)));
- /// assert_eq!(socket.ip(), IpAddr::V4(Ipv4Addr::new(10, 10, 0, 1)));
- /// ```
- #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))]
- pub fn set_ip(&mut self, new_ip: IpAddr) {
- // `match (*self, new_ip)` would have us mutate a copy of self only to throw it away.
- match (self, new_ip) {
- (&mut SocketAddr::V4(ref mut a), IpAddr::V4(new_ip)) => a.set_ip(new_ip),
- (&mut SocketAddr::V6(ref mut a), IpAddr::V6(new_ip)) => a.set_ip(new_ip),
- (self_, new_ip) => *self_ = Self::new(new_ip, self_.port()),
- }
- }
-
- /// Returns the port number associated with this socket address.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{IpAddr, Ipv4Addr, SocketAddr};
- ///
- /// let socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080);
- /// assert_eq!(socket.port(), 8080);
- /// ```
- #[must_use]
- #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_socketaddr", issue = "82485")
- )]
- pub const fn port(&self) -> u16 {
- match *self {
- SocketAddr::V4(ref a) => a.port(),
- SocketAddr::V6(ref a) => a.port(),
- }
- }
-
- /// Changes the port number associated with this socket address.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{IpAddr, Ipv4Addr, SocketAddr};
- ///
- /// let mut socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080);
- /// socket.set_port(1025);
- /// assert_eq!(socket.port(), 1025);
- /// ```
- #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))]
- pub fn set_port(&mut self, new_port: u16) {
- match *self {
- SocketAddr::V4(ref mut a) => a.set_port(new_port),
- SocketAddr::V6(ref mut a) => a.set_port(new_port),
- }
- }
-
- /// Returns [`true`] if the [IP address] in this `SocketAddr` is an
- /// [`IPv4` address], and [`false`] otherwise.
- ///
- /// [IP address]: IpAddr
- /// [`IPv4` address]: IpAddr::V4
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{IpAddr, Ipv4Addr, SocketAddr};
- ///
- /// let socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080);
- /// assert_eq!(socket.is_ipv4(), true);
- /// assert_eq!(socket.is_ipv6(), false);
- /// ```
- #[must_use]
- #[cfg_attr(staged_api, stable(feature = "sockaddr_checker", since = "1.16.0"))]
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_socketaddr", issue = "82485")
- )]
- pub const fn is_ipv4(&self) -> bool {
- matches!(*self, SocketAddr::V4(_))
- }
-
- /// Returns [`true`] if the [IP address] in this `SocketAddr` is an
- /// [`IPv6` address], and [`false`] otherwise.
- ///
- /// [IP address]: IpAddr
- /// [`IPv6` address]: IpAddr::V6
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{IpAddr, Ipv6Addr, SocketAddr};
- ///
- /// let socket = SocketAddr::new(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 65535, 0, 1)), 8080);
- /// assert_eq!(socket.is_ipv4(), false);
- /// assert_eq!(socket.is_ipv6(), true);
- /// ```
- #[must_use]
- #[cfg_attr(staged_api, stable(feature = "sockaddr_checker", since = "1.16.0"))]
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_socketaddr", issue = "82485")
- )]
- pub const fn is_ipv6(&self) -> bool {
- matches!(*self, SocketAddr::V6(_))
- }
-}
-
-impl SocketAddrV4 {
- /// Creates a new socket address from an [`IPv4` address] and a port number.
- ///
- /// [`IPv4` address]: Ipv4Addr
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{SocketAddrV4, Ipv4Addr};
- ///
- /// let socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080);
- /// ```
- #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
- #[must_use]
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_socketaddr", issue = "82485")
- )]
- pub const fn new(ip: Ipv4Addr, port: u16) -> SocketAddrV4 {
- SocketAddrV4 { ip, port }
- }
-
- /// Returns the IP address associated with this socket address.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{SocketAddrV4, Ipv4Addr};
- ///
- /// let socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080);
- /// assert_eq!(socket.ip(), &Ipv4Addr::new(127, 0, 0, 1));
- /// ```
- #[must_use]
- #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_socketaddr", issue = "82485")
- )]
- pub const fn ip(&self) -> &Ipv4Addr {
- &self.ip
- }
-
- /// Changes the IP address associated with this socket address.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{SocketAddrV4, Ipv4Addr};
- ///
- /// let mut socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080);
- /// socket.set_ip(Ipv4Addr::new(192, 168, 0, 1));
- /// assert_eq!(socket.ip(), &Ipv4Addr::new(192, 168, 0, 1));
- /// ```
- #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))]
- pub fn set_ip(&mut self, new_ip: Ipv4Addr) {
- self.ip = new_ip;
- }
-
- /// Returns the port number associated with this socket address.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{SocketAddrV4, Ipv4Addr};
- ///
- /// let socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080);
- /// assert_eq!(socket.port(), 8080);
- /// ```
- #[must_use]
- #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_socketaddr", issue = "82485")
- )]
- pub const fn port(&self) -> u16 {
- self.port
- }
-
- /// Changes the port number associated with this socket address.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{SocketAddrV4, Ipv4Addr};
- ///
- /// let mut socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080);
- /// socket.set_port(4242);
- /// assert_eq!(socket.port(), 4242);
- /// ```
- #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))]
- pub fn set_port(&mut self, new_port: u16) {
- self.port = new_port;
- }
-}
-
-impl SocketAddrV6 {
- /// Creates a new socket address from an [`IPv6` address], a 16-bit port number,
- /// and the `flowinfo` and `scope_id` fields.
- ///
- /// For more information on the meaning and layout of the `flowinfo` and `scope_id`
- /// parameters, see [IETF RFC 2553, Section 3.3].
- ///
- /// [IETF RFC 2553, Section 3.3]: https://tools.ietf.org/html/rfc2553#section-3.3
- /// [`IPv6` address]: Ipv6Addr
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{SocketAddrV6, Ipv6Addr};
- ///
- /// let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
- /// ```
- #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
- #[must_use]
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_socketaddr", issue = "82485")
- )]
- pub const fn new(ip: Ipv6Addr, port: u16, flowinfo: u32, scope_id: u32) -> SocketAddrV6 {
- SocketAddrV6 {
- ip,
- port,
- flowinfo,
- scope_id,
- }
- }
-
- /// Returns the IP address associated with this socket address.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{SocketAddrV6, Ipv6Addr};
- ///
- /// let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
- /// assert_eq!(socket.ip(), &Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1));
- /// ```
- #[must_use]
- #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_socketaddr", issue = "82485")
- )]
- pub const fn ip(&self) -> &Ipv6Addr {
- &self.ip
- }
-
- /// Changes the IP address associated with this socket address.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{SocketAddrV6, Ipv6Addr};
- ///
- /// let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
- /// socket.set_ip(Ipv6Addr::new(76, 45, 0, 0, 0, 0, 0, 0));
- /// assert_eq!(socket.ip(), &Ipv6Addr::new(76, 45, 0, 0, 0, 0, 0, 0));
- /// ```
- #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))]
- pub fn set_ip(&mut self, new_ip: Ipv6Addr) {
- self.ip = new_ip;
- }
-
- /// Returns the port number associated with this socket address.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{SocketAddrV6, Ipv6Addr};
- ///
- /// let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
- /// assert_eq!(socket.port(), 8080);
- /// ```
- #[must_use]
- #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_socketaddr", issue = "82485")
- )]
- pub const fn port(&self) -> u16 {
- self.port
- }
-
- /// Changes the port number associated with this socket address.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{SocketAddrV6, Ipv6Addr};
- ///
- /// let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
- /// socket.set_port(4242);
- /// assert_eq!(socket.port(), 4242);
- /// ```
- #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))]
- pub fn set_port(&mut self, new_port: u16) {
- self.port = new_port;
- }
-
- /// Returns the flow information associated with this address.
- ///
- /// This information corresponds to the `sin6_flowinfo` field in C's `netinet/in.h`,
- /// as specified in [IETF RFC 2553, Section 3.3].
- /// It combines information about the flow label and the traffic class as specified
- /// in [IETF RFC 2460], respectively [Section 6] and [Section 7].
- ///
- /// [IETF RFC 2553, Section 3.3]: https://tools.ietf.org/html/rfc2553#section-3.3
- /// [IETF RFC 2460]: https://tools.ietf.org/html/rfc2460
- /// [Section 6]: https://tools.ietf.org/html/rfc2460#section-6
- /// [Section 7]: https://tools.ietf.org/html/rfc2460#section-7
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{SocketAddrV6, Ipv6Addr};
- ///
- /// let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 10, 0);
- /// assert_eq!(socket.flowinfo(), 10);
- /// ```
- #[must_use]
- #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_socketaddr", issue = "82485")
- )]
- pub const fn flowinfo(&self) -> u32 {
- self.flowinfo
- }
-
- /// Changes the flow information associated with this socket address.
- ///
- /// See [`SocketAddrV6::flowinfo`]'s documentation for more details.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{SocketAddrV6, Ipv6Addr};
- ///
- /// let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 10, 0);
- /// socket.set_flowinfo(56);
- /// assert_eq!(socket.flowinfo(), 56);
- /// ```
- #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))]
- pub fn set_flowinfo(&mut self, new_flowinfo: u32) {
- self.flowinfo = new_flowinfo;
- }
-
- /// Returns the scope ID associated with this address.
- ///
- /// This information corresponds to the `sin6_scope_id` field in C's `netinet/in.h`,
- /// as specified in [IETF RFC 2553, Section 3.3].
- ///
- /// [IETF RFC 2553, Section 3.3]: https://tools.ietf.org/html/rfc2553#section-3.3
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{SocketAddrV6, Ipv6Addr};
- ///
- /// let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 78);
- /// assert_eq!(socket.scope_id(), 78);
- /// ```
- #[must_use]
- #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_socketaddr", issue = "82485")
- )]
- pub const fn scope_id(&self) -> u32 {
- self.scope_id
- }
-
- /// Changes the scope ID associated with this socket address.
- ///
- /// See [`SocketAddrV6::scope_id`]'s documentation for more details.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{SocketAddrV6, Ipv6Addr};
- ///
- /// let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 78);
- /// socket.set_scope_id(42);
- /// assert_eq!(socket.scope_id(), 42);
- /// ```
- #[cfg_attr(staged_api, stable(feature = "sockaddr_setters", since = "1.9.0"))]
- pub fn set_scope_id(&mut self, new_scope_id: u32) {
- self.scope_id = new_scope_id;
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "ip_from_ip", since = "1.16.0"))]
-impl From<SocketAddrV4> for SocketAddr {
- /// Converts a [`SocketAddrV4`] into a [`SocketAddr::V4`].
- fn from(sock4: SocketAddrV4) -> SocketAddr {
- SocketAddr::V4(sock4)
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "ip_from_ip", since = "1.16.0"))]
-impl From<SocketAddrV6> for SocketAddr {
- /// Converts a [`SocketAddrV6`] into a [`SocketAddr::V6`].
- fn from(sock6: SocketAddrV6) -> SocketAddr {
- SocketAddr::V6(sock6)
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "addr_from_into_ip", since = "1.17.0"))]
-impl<I: Into<IpAddr>> From<(I, u16)> for SocketAddr {
- /// Converts a tuple struct (Into<[`IpAddr`]>, `u16`) into a [`SocketAddr`].
- ///
- /// This conversion creates a [`SocketAddr::V4`] for an [`IpAddr::V4`]
- /// and creates a [`SocketAddr::V6`] for an [`IpAddr::V6`].
- ///
- /// `u16` is treated as port of the newly created [`SocketAddr`].
- fn from(pieces: (I, u16)) -> SocketAddr {
- SocketAddr::new(pieces.0.into(), pieces.1)
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "socketaddr_ordering", since = "1.45.0"))]
-impl PartialOrd for SocketAddrV4 {
- fn partial_cmp(&self, other: &SocketAddrV4) -> Option<Ordering> {
- Some(self.cmp(other))
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "socketaddr_ordering", since = "1.45.0"))]
-impl PartialOrd for SocketAddrV6 {
- fn partial_cmp(&self, other: &SocketAddrV6) -> Option<Ordering> {
- Some(self.cmp(other))
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "socketaddr_ordering", since = "1.45.0"))]
-impl Ord for SocketAddrV4 {
- fn cmp(&self, other: &SocketAddrV4) -> Ordering {
- self.ip()
- .cmp(other.ip())
- .then(self.port().cmp(&other.port()))
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "socketaddr_ordering", since = "1.45.0"))]
-impl Ord for SocketAddrV6 {
- fn cmp(&self, other: &SocketAddrV6) -> Ordering {
- self.ip()
- .cmp(other.ip())
- .then(self.port().cmp(&other.port()))
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
-impl hash::Hash for SocketAddrV4 {
- fn hash<H: hash::Hasher>(&self, s: &mut H) {
- (self.port, self.ip).hash(s)
- }
-}
-#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
-impl hash::Hash for SocketAddrV6 {
- fn hash<H: hash::Hasher>(&self, s: &mut H) {
- (self.port, &self.ip, self.flowinfo, self.scope_id).hash(s)
- }
-}
diff --git a/vendor/rustix-0.37.6/src/net/ip.rs b/vendor/rustix-0.37.6/src/net/ip.rs
deleted file mode 100644
index ffa5302e3..000000000
--- a/vendor/rustix-0.37.6/src/net/ip.rs
+++ /dev/null
@@ -1,2068 +0,0 @@
-//! The following is derived from Rust's
-//! library/std/src/net/ip_addr.rs at revision
-//! bd20fc1fd657b32f7aa1d70d8723f04c87f21606.
-//!
-//! All code in this file is licensed MIT or Apache 2.0 at your option.
-//!
-//! This defines `IpAddr`, `Ipv4Addr`, and `Ipv6Addr`. Ideally, these should be
-//! defined in `core`. See [RFC 2832].
-//!
-//! [RFC 2832]: https://github.com/rust-lang/rfcs/pull/2832
-
-#![allow(unsafe_code)]
-
-use core::cmp::Ordering;
-use core::mem::transmute;
-
-/// An IP address, either IPv4 or IPv6.
-///
-/// This enum can contain either an [`Ipv4Addr`] or an [`Ipv6Addr`], see their
-/// respective documentation for more details.
-///
-/// # Examples
-///
-/// ```
-/// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
-///
-/// let localhost_v4 = IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1));
-/// let localhost_v6 = IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1));
-///
-/// assert_eq!("127.0.0.1".parse(), Ok(localhost_v4));
-/// assert_eq!("::1".parse(), Ok(localhost_v6));
-///
-/// assert_eq!(localhost_v4.is_ipv6(), false);
-/// assert_eq!(localhost_v4.is_ipv4(), true);
-/// ```
-#[cfg_attr(staged_api, stable(feature = "ip_addr", since = "1.7.0"))]
-#[derive(Copy, Clone, Eq, PartialEq, Hash, PartialOrd, Ord)]
-pub enum IpAddr {
- /// An IPv4 address.
- #[cfg_attr(staged_api, stable(feature = "ip_addr", since = "1.7.0"))]
- V4(#[cfg_attr(staged_api, stable(feature = "ip_addr", since = "1.7.0"))] Ipv4Addr),
- /// An IPv6 address.
- #[cfg_attr(staged_api, stable(feature = "ip_addr", since = "1.7.0"))]
- V6(#[cfg_attr(staged_api, stable(feature = "ip_addr", since = "1.7.0"))] Ipv6Addr),
-}
-
-/// An IPv4 address.
-///
-/// IPv4 addresses are defined as 32-bit integers in [IETF RFC 791].
-/// They are usually represented as four octets.
-///
-/// See [`IpAddr`] for a type encompassing both IPv4 and IPv6 addresses.
-///
-/// [IETF RFC 791]: https://tools.ietf.org/html/rfc791
-///
-/// # Textual representation
-///
-/// `Ipv4Addr` provides a [`FromStr`] implementation. The four octets are in decimal
-/// notation, divided by `.` (this is called "dot-decimal notation").
-/// Notably, octal numbers (which are indicated with a leading `0`) and hexadecimal numbers (which
-/// are indicated with a leading `0x`) are not allowed per [IETF RFC 6943].
-///
-/// [IETF RFC 6943]: https://tools.ietf.org/html/rfc6943#section-3.1.1
-/// [`FromStr`]: core::str::FromStr
-///
-/// # Examples
-///
-/// ```
-/// use std::net::Ipv4Addr;
-///
-/// let localhost = Ipv4Addr::new(127, 0, 0, 1);
-/// assert_eq!("127.0.0.1".parse(), Ok(localhost));
-/// assert_eq!(localhost.is_loopback(), true);
-/// assert!("012.004.002.000".parse::<Ipv4Addr>().is_err()); // all octets are in octal
-/// assert!("0000000.0.0.0".parse::<Ipv4Addr>().is_err()); // first octet is a zero in octal
-/// assert!("0xcb.0x0.0x71.0x00".parse::<Ipv4Addr>().is_err()); // all octets are in hex
-/// ```
-#[derive(Copy, Clone, PartialEq, Eq, Hash)]
-#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
-pub struct Ipv4Addr {
- octets: [u8; 4],
-}
-
-/// An IPv6 address.
-///
-/// IPv6 addresses are defined as 128-bit integers in [IETF RFC 4291].
-/// They are usually represented as eight 16-bit segments.
-///
-/// [IETF RFC 4291]: https://tools.ietf.org/html/rfc4291
-///
-/// # Embedding IPv4 Addresses
-///
-/// See [`IpAddr`] for a type encompassing both IPv4 and IPv6 addresses.
-///
-/// To assist in the transition from IPv4 to IPv6 two types of IPv6 addresses that embed an IPv4 address were defined:
-/// IPv4-compatible and IPv4-mapped addresses. Of these IPv4-compatible addresses have been officially deprecated.
-///
-/// Both types of addresses are not assigned any special meaning by this implementation,
-/// other than what the relevant standards prescribe. This means that an address like `::ffff:127.0.0.1`,
-/// while representing an IPv4 loopback address, is not itself an IPv6 loopback address; only `::1` is.
-/// To handle these so called "IPv4-in-IPv6" addresses, they have to first be converted to their canonical IPv4 address.
-///
-/// ### IPv4-Compatible IPv6 Addresses
-///
-/// IPv4-compatible IPv6 addresses are defined in [IETF RFC 4291 Section 2.5.5.1], and have been officially deprecated.
-/// The RFC describes the format of an "IPv4-Compatible IPv6 address" as follows:
-///
-/// ```text
-/// | 80 bits | 16 | 32 bits |
-/// +--------------------------------------+--------------------------+
-/// |0000..............................0000|0000| IPv4 address |
-/// +--------------------------------------+----+---------------------+
-/// ```
-/// So `::a.b.c.d` would be an IPv4-compatible IPv6 address representing the IPv4 address `a.b.c.d`.
-///
-/// To convert from an IPv4 address to an IPv4-compatible IPv6 address, use [`Ipv4Addr::to_ipv6_compatible`].
-/// Use [`Ipv6Addr::to_ipv4`] to convert an IPv4-compatible IPv6 address to the canonical IPv4 address.
-///
-/// [IETF RFC 4291 Section 2.5.5.1]: https://datatracker.ietf.org/doc/html/rfc4291#section-2.5.5.1
-///
-/// ### IPv4-Mapped IPv6 Addresses
-///
-/// IPv4-mapped IPv6 addresses are defined in [IETF RFC 4291 Section 2.5.5.2].
-/// The RFC describes the format of an "IPv4-Mapped IPv6 address" as follows:
-///
-/// ```text
-/// | 80 bits | 16 | 32 bits |
-/// +--------------------------------------+--------------------------+
-/// |0000..............................0000|FFFF| IPv4 address |
-/// +--------------------------------------+----+---------------------+
-/// ```
-/// So `::ffff:a.b.c.d` would be an IPv4-mapped IPv6 address representing the IPv4 address `a.b.c.d`.
-///
-/// To convert from an IPv4 address to an IPv4-mapped IPv6 address, use [`Ipv4Addr::to_ipv6_mapped`].
-/// Use [`Ipv6Addr::to_ipv4`] to convert an IPv4-mapped IPv6 address to the canonical IPv4 address.
-/// Note that this will also convert the IPv6 loopback address `::1` to `0.0.0.1`. Use
-/// [`Ipv6Addr::to_ipv4_mapped`] to avoid this.
-///
-/// [IETF RFC 4291 Section 2.5.5.2]: https://datatracker.ietf.org/doc/html/rfc4291#section-2.5.5.2
-///
-/// # Textual representation
-///
-/// `Ipv6Addr` provides a [`FromStr`] implementation. There are many ways to represent
-/// an IPv6 address in text, but in general, each segments is written in hexadecimal
-/// notation, and segments are separated by `:`. For more information, see
-/// [IETF RFC 5952].
-///
-/// [`FromStr`]: core::str::FromStr
-/// [IETF RFC 5952]: https://tools.ietf.org/html/rfc5952
-///
-/// # Examples
-///
-/// ```
-/// use std::net::Ipv6Addr;
-///
-/// let localhost = Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1);
-/// assert_eq!("::1".parse(), Ok(localhost));
-/// assert_eq!(localhost.is_loopback(), true);
-/// ```
-#[derive(Copy, Clone, PartialEq, Eq, Hash)]
-#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
-pub struct Ipv6Addr {
- octets: [u8; 16],
-}
-
-/// Scope of an [IPv6 multicast address] as defined in [IETF RFC 7346 section 2].
-///
-/// # Stability Guarantees
-///
-/// Not all possible values for a multicast scope have been assigned.
-/// Future RFCs may introduce new scopes, which will be added as variants to this enum;
-/// because of this the enum is marked as `#[non_exhaustive]`.
-///
-/// # Examples
-/// ```
-/// #![feature(ip)]
-///
-/// use std::net::Ipv6Addr;
-/// use std::net::Ipv6MulticastScope::*;
-///
-/// // An IPv6 multicast address with global scope (`ff0e::`).
-/// let address = Ipv6Addr::new(0xff0e, 0, 0, 0, 0, 0, 0, 0);
-///
-/// // Will print "Global scope".
-/// match address.multicast_scope() {
-/// Some(InterfaceLocal) => println!("Interface-Local scope"),
-/// Some(LinkLocal) => println!("Link-Local scope"),
-/// Some(RealmLocal) => println!("Realm-Local scope"),
-/// Some(AdminLocal) => println!("Admin-Local scope"),
-/// Some(SiteLocal) => println!("Site-Local scope"),
-/// Some(OrganizationLocal) => println!("Organization-Local scope"),
-/// Some(Global) => println!("Global scope"),
-/// Some(_) => println!("Unknown scope"),
-/// None => println!("Not a multicast address!")
-/// }
-///
-/// ```
-///
-/// [IPv6 multicast address]: Ipv6Addr
-/// [IETF RFC 7346 section 2]: https://tools.ietf.org/html/rfc7346#section-2
-#[derive(Copy, PartialEq, Eq, Clone, Hash, Debug)]
-#[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))]
-#[non_exhaustive]
-pub enum Ipv6MulticastScope {
- /// Interface-Local scope.
- InterfaceLocal,
- /// Link-Local scope.
- LinkLocal,
- /// Realm-Local scope.
- RealmLocal,
- /// Admin-Local scope.
- AdminLocal,
- /// Site-Local scope.
- SiteLocal,
- /// Organization-Local scope.
- OrganizationLocal,
- /// Global scope.
- Global,
-}
-
-impl IpAddr {
- /// Returns [`true`] for the special 'unspecified' address.
- ///
- /// See the documentation for [`Ipv4Addr::is_unspecified()`] and
- /// [`Ipv6Addr::is_unspecified()`] for more details.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
- ///
- /// assert_eq!(IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0)).is_unspecified(), true);
- /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0)).is_unspecified(), true);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_stable(feature = "const_ip_50", since = "1.50.0")
- )]
- #[cfg_attr(staged_api, stable(feature = "ip_shared", since = "1.12.0"))]
- #[must_use]
- #[inline]
- pub const fn is_unspecified(&self) -> bool {
- match self {
- IpAddr::V4(ip) => ip.is_unspecified(),
- IpAddr::V6(ip) => ip.is_unspecified(),
- }
- }
-
- /// Returns [`true`] if this is a loopback address.
- ///
- /// See the documentation for [`Ipv4Addr::is_loopback()`] and
- /// [`Ipv6Addr::is_loopback()`] for more details.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
- ///
- /// assert_eq!(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)).is_loopback(), true);
- /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0x1)).is_loopback(), true);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_stable(feature = "const_ip_50", since = "1.50.0")
- )]
- #[cfg_attr(staged_api, stable(feature = "ip_shared", since = "1.12.0"))]
- #[must_use]
- #[inline]
- pub const fn is_loopback(&self) -> bool {
- match self {
- IpAddr::V4(ip) => ip.is_loopback(),
- IpAddr::V6(ip) => ip.is_loopback(),
- }
- }
-
- /// Returns [`true`] if the address appears to be globally routable.
- ///
- /// See the documentation for [`Ipv4Addr::is_global()`] and
- /// [`Ipv6Addr::is_global()`] for more details.
- ///
- /// # Examples
- ///
- /// ```
- /// #![feature(ip)]
- ///
- /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
- ///
- /// assert_eq!(IpAddr::V4(Ipv4Addr::new(80, 9, 12, 3)).is_global(), true);
- /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0, 0, 0x1c9, 0, 0, 0xafc8, 0, 0x1)).is_global(), true);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_ip", issue = "76205")
- )]
- #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))]
- #[must_use]
- #[inline]
- pub const fn is_global(&self) -> bool {
- match self {
- IpAddr::V4(ip) => ip.is_global(),
- IpAddr::V6(ip) => ip.is_global(),
- }
- }
-
- /// Returns [`true`] if this is a multicast address.
- ///
- /// See the documentation for [`Ipv4Addr::is_multicast()`] and
- /// [`Ipv6Addr::is_multicast()`] for more details.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
- ///
- /// assert_eq!(IpAddr::V4(Ipv4Addr::new(224, 254, 0, 0)).is_multicast(), true);
- /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0xff00, 0, 0, 0, 0, 0, 0, 0)).is_multicast(), true);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_stable(feature = "const_ip_50", since = "1.50.0")
- )]
- #[cfg_attr(staged_api, stable(feature = "ip_shared", since = "1.12.0"))]
- #[must_use]
- #[inline]
- pub const fn is_multicast(&self) -> bool {
- match self {
- IpAddr::V4(ip) => ip.is_multicast(),
- IpAddr::V6(ip) => ip.is_multicast(),
- }
- }
-
- /// Returns [`true`] if this address is in a range designated for documentation.
- ///
- /// See the documentation for [`Ipv4Addr::is_documentation()`] and
- /// [`Ipv6Addr::is_documentation()`] for more details.
- ///
- /// # Examples
- ///
- /// ```
- /// #![feature(ip)]
- ///
- /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
- ///
- /// assert_eq!(IpAddr::V4(Ipv4Addr::new(203, 0, 113, 6)).is_documentation(), true);
- /// assert_eq!(
- /// IpAddr::V6(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0)).is_documentation(),
- /// true
- /// );
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_ip", issue = "76205")
- )]
- #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))]
- #[must_use]
- #[inline]
- pub const fn is_documentation(&self) -> bool {
- match self {
- IpAddr::V4(ip) => ip.is_documentation(),
- IpAddr::V6(ip) => ip.is_documentation(),
- }
- }
-
- /// Returns [`true`] if this address is in a range designated for benchmarking.
- ///
- /// See the documentation for [`Ipv4Addr::is_benchmarking()`] and
- /// [`Ipv6Addr::is_benchmarking()`] for more details.
- ///
- /// # Examples
- ///
- /// ```
- /// #![feature(ip)]
- ///
- /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
- ///
- /// assert_eq!(IpAddr::V4(Ipv4Addr::new(198, 19, 255, 255)).is_benchmarking(), true);
- /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0x2001, 0x2, 0, 0, 0, 0, 0, 0)).is_benchmarking(), true);
- /// ```
- #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))]
- #[must_use]
- #[inline]
- pub const fn is_benchmarking(&self) -> bool {
- match self {
- IpAddr::V4(ip) => ip.is_benchmarking(),
- IpAddr::V6(ip) => ip.is_benchmarking(),
- }
- }
-
- /// Returns [`true`] if this address is an [`IPv4` address], and [`false`]
- /// otherwise.
- ///
- /// [`IPv4` address]: IpAddr::V4
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
- ///
- /// assert_eq!(IpAddr::V4(Ipv4Addr::new(203, 0, 113, 6)).is_ipv4(), true);
- /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0)).is_ipv4(), false);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_stable(feature = "const_ip_50", since = "1.50.0")
- )]
- #[cfg_attr(staged_api, stable(feature = "ipaddr_checker", since = "1.16.0"))]
- #[must_use]
- #[inline]
- pub const fn is_ipv4(&self) -> bool {
- matches!(self, IpAddr::V4(_))
- }
-
- /// Returns [`true`] if this address is an [`IPv6` address], and [`false`]
- /// otherwise.
- ///
- /// [`IPv6` address]: IpAddr::V6
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
- ///
- /// assert_eq!(IpAddr::V4(Ipv4Addr::new(203, 0, 113, 6)).is_ipv6(), false);
- /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0)).is_ipv6(), true);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_stable(feature = "const_ip_50", since = "1.50.0")
- )]
- #[cfg_attr(staged_api, stable(feature = "ipaddr_checker", since = "1.16.0"))]
- #[must_use]
- #[inline]
- pub const fn is_ipv6(&self) -> bool {
- matches!(self, IpAddr::V6(_))
- }
-
- /// Converts this address to an `IpAddr::V4` if it is an IPv4-mapped IPv6 addresses, otherwise it
- /// return `self` as-is.
- ///
- /// # Examples
- ///
- /// ```
- /// #![feature(ip)]
- /// use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
- ///
- /// assert_eq!(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)).to_canonical().is_loopback(), true);
- /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0x7f00, 0x1)).is_loopback(), false);
- /// assert_eq!(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0x7f00, 0x1)).to_canonical().is_loopback(), true);
- /// ```
- #[inline]
- #[must_use = "this returns the result of the operation, \
- without modifying the original"]
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_ip", issue = "76205")
- )]
- #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))]
- pub const fn to_canonical(&self) -> IpAddr {
- match self {
- &v4 @ IpAddr::V4(_) => v4,
- IpAddr::V6(v6) => v6.to_canonical(),
- }
- }
-}
-
-impl Ipv4Addr {
- /// Creates a new IPv4 address from four eight-bit octets.
- ///
- /// The result will represent the IP address `a`.`b`.`c`.`d`.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv4Addr;
- ///
- /// let addr = Ipv4Addr::new(127, 0, 0, 1);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_stable(feature = "const_ip_32", since = "1.32.0")
- )]
- #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
- #[must_use]
- #[inline]
- pub const fn new(a: u8, b: u8, c: u8, d: u8) -> Ipv4Addr {
- Ipv4Addr {
- octets: [a, b, c, d],
- }
- }
-
- /// An IPv4 address with the address pointing to localhost: `127.0.0.1`
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv4Addr;
- ///
- /// let addr = Ipv4Addr::LOCALHOST;
- /// assert_eq!(addr, Ipv4Addr::new(127, 0, 0, 1));
- /// ```
- #[cfg_attr(staged_api, stable(feature = "ip_constructors", since = "1.30.0"))]
- pub const LOCALHOST: Self = Ipv4Addr::new(127, 0, 0, 1);
-
- /// An IPv4 address representing an unspecified address: `0.0.0.0`
- ///
- /// This corresponds to the constant `INADDR_ANY` in other languages.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv4Addr;
- ///
- /// let addr = Ipv4Addr::UNSPECIFIED;
- /// assert_eq!(addr, Ipv4Addr::new(0, 0, 0, 0));
- /// ```
- #[doc(alias = "INADDR_ANY")]
- #[cfg_attr(staged_api, stable(feature = "ip_constructors", since = "1.30.0"))]
- pub const UNSPECIFIED: Self = Ipv4Addr::new(0, 0, 0, 0);
-
- /// An IPv4 address representing the broadcast address: `255.255.255.255`
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv4Addr;
- ///
- /// let addr = Ipv4Addr::BROADCAST;
- /// assert_eq!(addr, Ipv4Addr::new(255, 255, 255, 255));
- /// ```
- #[cfg_attr(staged_api, stable(feature = "ip_constructors", since = "1.30.0"))]
- pub const BROADCAST: Self = Ipv4Addr::new(255, 255, 255, 255);
-
- /// Returns the four eight-bit integers that make up this address.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv4Addr;
- ///
- /// let addr = Ipv4Addr::new(127, 0, 0, 1);
- /// assert_eq!(addr.octets(), [127, 0, 0, 1]);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_stable(feature = "const_ip_50", since = "1.50.0")
- )]
- #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
- #[must_use]
- #[inline]
- pub const fn octets(&self) -> [u8; 4] {
- self.octets
- }
-
- /// Returns [`true`] for the special 'unspecified' address (`0.0.0.0`).
- ///
- /// This property is defined in _UNIX Network Programming, Second Edition_,
- /// W. Richard Stevens, p. 891; see also [ip7].
- ///
- /// [ip7]: https://man7.org/linux/man-pages/man7/ip.7.html
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv4Addr;
- ///
- /// assert_eq!(Ipv4Addr::new(0, 0, 0, 0).is_unspecified(), true);
- /// assert_eq!(Ipv4Addr::new(45, 22, 13, 197).is_unspecified(), false);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_stable(feature = "const_ip_32", since = "1.32.0")
- )]
- #[cfg_attr(staged_api, stable(feature = "ip_shared", since = "1.12.0"))]
- #[must_use]
- #[inline]
- pub const fn is_unspecified(&self) -> bool {
- u32::from_be_bytes(self.octets) == 0
- }
-
- /// Returns [`true`] if this is a loopback address (`127.0.0.0/8`).
- ///
- /// This property is defined by [IETF RFC 1122].
- ///
- /// [IETF RFC 1122]: https://tools.ietf.org/html/rfc1122
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv4Addr;
- ///
- /// assert_eq!(Ipv4Addr::new(127, 0, 0, 1).is_loopback(), true);
- /// assert_eq!(Ipv4Addr::new(45, 22, 13, 197).is_loopback(), false);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_stable(feature = "const_ip_50", since = "1.50.0")
- )]
- #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))]
- #[must_use]
- #[inline]
- pub const fn is_loopback(&self) -> bool {
- self.octets()[0] == 127
- }
-
- /// Returns [`true`] if this is a private address.
- ///
- /// The private address ranges are defined in [IETF RFC 1918] and include:
- ///
- /// - `10.0.0.0/8`
- /// - `172.16.0.0/12`
- /// - `192.168.0.0/16`
- ///
- /// [IETF RFC 1918]: https://tools.ietf.org/html/rfc1918
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv4Addr;
- ///
- /// assert_eq!(Ipv4Addr::new(10, 0, 0, 1).is_private(), true);
- /// assert_eq!(Ipv4Addr::new(10, 10, 10, 10).is_private(), true);
- /// assert_eq!(Ipv4Addr::new(172, 16, 10, 10).is_private(), true);
- /// assert_eq!(Ipv4Addr::new(172, 29, 45, 14).is_private(), true);
- /// assert_eq!(Ipv4Addr::new(172, 32, 0, 2).is_private(), false);
- /// assert_eq!(Ipv4Addr::new(192, 168, 0, 2).is_private(), true);
- /// assert_eq!(Ipv4Addr::new(192, 169, 0, 2).is_private(), false);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_stable(feature = "const_ip_50", since = "1.50.0")
- )]
- #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))]
- #[must_use]
- #[inline]
- pub const fn is_private(&self) -> bool {
- match self.octets() {
- [10, ..] => true,
- [172, b, ..] if b >= 16 && b <= 31 => true,
- [192, 168, ..] => true,
- _ => false,
- }
- }
-
- /// Returns [`true`] if the address is link-local (`169.254.0.0/16`).
- ///
- /// This property is defined by [IETF RFC 3927].
- ///
- /// [IETF RFC 3927]: https://tools.ietf.org/html/rfc3927
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv4Addr;
- ///
- /// assert_eq!(Ipv4Addr::new(169, 254, 0, 0).is_link_local(), true);
- /// assert_eq!(Ipv4Addr::new(169, 254, 10, 65).is_link_local(), true);
- /// assert_eq!(Ipv4Addr::new(16, 89, 10, 65).is_link_local(), false);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_stable(feature = "const_ip_50", since = "1.50.0")
- )]
- #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))]
- #[must_use]
- #[inline]
- pub const fn is_link_local(&self) -> bool {
- matches!(self.octets(), [169, 254, ..])
- }
-
- /// Returns [`true`] if the address appears to be globally reachable
- /// as specified by the [IANA IPv4 Special-Purpose Address Registry].
- /// Whether or not an address is practically reachable will depend on your network configuration.
- ///
- /// Most IPv4 addresses are globally reachable;
- /// unless they are specifically defined as *not* globally reachable.
- ///
- /// Non-exhaustive list of notable addresses that are not globally reachable:
- ///
- /// - The [unspecified address] ([`is_unspecified`](Ipv4Addr::is_unspecified))
- /// - Addresses reserved for private use ([`is_private`](Ipv4Addr::is_private))
- /// - Addresses in the shared address space ([`is_shared`](Ipv4Addr::is_shared))
- /// - Loopback addresses ([`is_loopback`](Ipv4Addr::is_loopback))
- /// - Link-local addresses ([`is_link_local`](Ipv4Addr::is_link_local))
- /// - Addresses reserved for documentation ([`is_documentation`](Ipv4Addr::is_documentation))
- /// - Addresses reserved for benchmarking ([`is_benchmarking`](Ipv4Addr::is_benchmarking))
- /// - Reserved addresses ([`is_reserved`](Ipv4Addr::is_reserved))
- /// - The [broadcast address] ([`is_broadcast`](Ipv4Addr::is_broadcast))
- ///
- /// For the complete overview of which addresses are globally reachable, see the table at the [IANA IPv4 Special-Purpose Address Registry].
- ///
- /// [IANA IPv4 Special-Purpose Address Registry]: https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml
- /// [unspecified address]: Ipv4Addr::UNSPECIFIED
- /// [broadcast address]: Ipv4Addr::BROADCAST
-
- ///
- /// # Examples
- ///
- /// ```
- /// #![feature(ip)]
- ///
- /// use std::net::Ipv4Addr;
- ///
- /// // Most IPv4 addresses are globally reachable:
- /// assert_eq!(Ipv4Addr::new(80, 9, 12, 3).is_global(), true);
- ///
- /// // However some addresses have been assigned a special meaning
- /// // that makes them not globally reachable. Some examples are:
- ///
- /// // The unspecified address (`0.0.0.0`)
- /// assert_eq!(Ipv4Addr::UNSPECIFIED.is_global(), false);
- ///
- /// // Addresses reserved for private use (`10.0.0.0/8`, `172.16.0.0/12`, 192.168.0.0/16)
- /// assert_eq!(Ipv4Addr::new(10, 254, 0, 0).is_global(), false);
- /// assert_eq!(Ipv4Addr::new(192, 168, 10, 65).is_global(), false);
- /// assert_eq!(Ipv4Addr::new(172, 16, 10, 65).is_global(), false);
- ///
- /// // Addresses in the shared address space (`100.64.0.0/10`)
- /// assert_eq!(Ipv4Addr::new(100, 100, 0, 0).is_global(), false);
- ///
- /// // The loopback addresses (`127.0.0.0/8`)
- /// assert_eq!(Ipv4Addr::LOCALHOST.is_global(), false);
- ///
- /// // Link-local addresses (`169.254.0.0/16`)
- /// assert_eq!(Ipv4Addr::new(169, 254, 45, 1).is_global(), false);
- ///
- /// // Addresses reserved for documentation (`192.0.2.0/24`, `198.51.100.0/24`, `203.0.113.0/24`)
- /// assert_eq!(Ipv4Addr::new(192, 0, 2, 255).is_global(), false);
- /// assert_eq!(Ipv4Addr::new(198, 51, 100, 65).is_global(), false);
- /// assert_eq!(Ipv4Addr::new(203, 0, 113, 6).is_global(), false);
- ///
- /// // Addresses reserved for benchmarking (`198.18.0.0/15`)
- /// assert_eq!(Ipv4Addr::new(198, 18, 0, 0).is_global(), false);
- ///
- /// // Reserved addresses (`240.0.0.0/4`)
- /// assert_eq!(Ipv4Addr::new(250, 10, 20, 30).is_global(), false);
- ///
- /// // The broadcast address (`255.255.255.255`)
- /// assert_eq!(Ipv4Addr::BROADCAST.is_global(), false);
- ///
- /// // For a complete overview see the IANA IPv4 Special-Purpose Address Registry.
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_ipv4", issue = "76205")
- )]
- #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))]
- #[must_use]
- #[inline]
- pub const fn is_global(&self) -> bool {
- !(self.octets()[0] == 0 // "This network"
- || self.is_private()
- || self.is_shared()
- || self.is_loopback()
- || self.is_link_local()
- // addresses reserved for future protocols (`192.0.0.0/24`)
- ||(self.octets()[0] == 192 && self.octets()[1] == 0 && self.octets()[2] == 0)
- || self.is_documentation()
- || self.is_benchmarking()
- || self.is_reserved()
- || self.is_broadcast())
- }
-
- /// Returns [`true`] if this address is part of the Shared Address Space defined in
- /// [IETF RFC 6598] (`100.64.0.0/10`).
- ///
- /// [IETF RFC 6598]: https://tools.ietf.org/html/rfc6598
- ///
- /// # Examples
- ///
- /// ```
- /// #![feature(ip)]
- /// use std::net::Ipv4Addr;
- ///
- /// assert_eq!(Ipv4Addr::new(100, 64, 0, 0).is_shared(), true);
- /// assert_eq!(Ipv4Addr::new(100, 127, 255, 255).is_shared(), true);
- /// assert_eq!(Ipv4Addr::new(100, 128, 0, 0).is_shared(), false);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_ipv4", issue = "76205")
- )]
- #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))]
- #[must_use]
- #[inline]
- pub const fn is_shared(&self) -> bool {
- self.octets()[0] == 100 && (self.octets()[1] & 0b1100_0000 == 0b0100_0000)
- }
-
- /// Returns [`true`] if this address part of the `198.18.0.0/15` range, which is reserved for
- /// network devices benchmarking. This range is defined in [IETF RFC 2544] as `192.18.0.0`
- /// through `198.19.255.255` but [errata 423] corrects it to `198.18.0.0/15`.
- ///
- /// [IETF RFC 2544]: https://tools.ietf.org/html/rfc2544
- /// [errata 423]: https://www.rfc-editor.org/errata/eid423
- ///
- /// # Examples
- ///
- /// ```
- /// #![feature(ip)]
- /// use std::net::Ipv4Addr;
- ///
- /// assert_eq!(Ipv4Addr::new(198, 17, 255, 255).is_benchmarking(), false);
- /// assert_eq!(Ipv4Addr::new(198, 18, 0, 0).is_benchmarking(), true);
- /// assert_eq!(Ipv4Addr::new(198, 19, 255, 255).is_benchmarking(), true);
- /// assert_eq!(Ipv4Addr::new(198, 20, 0, 0).is_benchmarking(), false);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_ipv4", issue = "76205")
- )]
- #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))]
- #[must_use]
- #[inline]
- pub const fn is_benchmarking(&self) -> bool {
- self.octets()[0] == 198 && (self.octets()[1] & 0xfe) == 18
- }
-
- /// Returns [`true`] if this address is reserved by IANA for future use. [IETF RFC 1112]
- /// defines the block of reserved addresses as `240.0.0.0/4`. This range normally includes the
- /// broadcast address `255.255.255.255`, but this implementation explicitly excludes it, since
- /// it is obviously not reserved for future use.
- ///
- /// [IETF RFC 1112]: https://tools.ietf.org/html/rfc1112
- ///
- /// # Warning
- ///
- /// As IANA assigns new addresses, this method will be
- /// updated. This may result in non-reserved addresses being
- /// treated as reserved in code that relies on an outdated version
- /// of this method.
- ///
- /// # Examples
- ///
- /// ```
- /// #![feature(ip)]
- /// use std::net::Ipv4Addr;
- ///
- /// assert_eq!(Ipv4Addr::new(240, 0, 0, 0).is_reserved(), true);
- /// assert_eq!(Ipv4Addr::new(255, 255, 255, 254).is_reserved(), true);
- ///
- /// assert_eq!(Ipv4Addr::new(239, 255, 255, 255).is_reserved(), false);
- /// // The broadcast address is not considered as reserved for future use by this implementation
- /// assert_eq!(Ipv4Addr::new(255, 255, 255, 255).is_reserved(), false);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_ipv4", issue = "76205")
- )]
- #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))]
- #[must_use]
- #[inline]
- pub const fn is_reserved(&self) -> bool {
- self.octets()[0] & 240 == 240 && !self.is_broadcast()
- }
-
- /// Returns [`true`] if this is a multicast address (`224.0.0.0/4`).
- ///
- /// Multicast addresses have a most significant octet between `224` and `239`,
- /// and is defined by [IETF RFC 5771].
- ///
- /// [IETF RFC 5771]: https://tools.ietf.org/html/rfc5771
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv4Addr;
- ///
- /// assert_eq!(Ipv4Addr::new(224, 254, 0, 0).is_multicast(), true);
- /// assert_eq!(Ipv4Addr::new(236, 168, 10, 65).is_multicast(), true);
- /// assert_eq!(Ipv4Addr::new(172, 16, 10, 65).is_multicast(), false);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_stable(feature = "const_ip_50", since = "1.50.0")
- )]
- #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))]
- #[must_use]
- #[inline]
- pub const fn is_multicast(&self) -> bool {
- self.octets()[0] >= 224 && self.octets()[0] <= 239
- }
-
- /// Returns [`true`] if this is a broadcast address (`255.255.255.255`).
- ///
- /// A broadcast address has all octets set to `255` as defined in [IETF RFC 919].
- ///
- /// [IETF RFC 919]: https://tools.ietf.org/html/rfc919
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv4Addr;
- ///
- /// assert_eq!(Ipv4Addr::new(255, 255, 255, 255).is_broadcast(), true);
- /// assert_eq!(Ipv4Addr::new(236, 168, 10, 65).is_broadcast(), false);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_stable(feature = "const_ip_50", since = "1.50.0")
- )]
- #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))]
- #[must_use]
- #[inline]
- pub const fn is_broadcast(&self) -> bool {
- u32::from_be_bytes(self.octets()) == u32::from_be_bytes(Self::BROADCAST.octets())
- }
-
- /// Returns [`true`] if this address is in a range designated for documentation.
- ///
- /// This is defined in [IETF RFC 5737]:
- ///
- /// - `192.0.2.0/24` (TEST-NET-1)
- /// - `198.51.100.0/24` (TEST-NET-2)
- /// - `203.0.113.0/24` (TEST-NET-3)
- ///
- /// [IETF RFC 5737]: https://tools.ietf.org/html/rfc5737
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv4Addr;
- ///
- /// assert_eq!(Ipv4Addr::new(192, 0, 2, 255).is_documentation(), true);
- /// assert_eq!(Ipv4Addr::new(198, 51, 100, 65).is_documentation(), true);
- /// assert_eq!(Ipv4Addr::new(203, 0, 113, 6).is_documentation(), true);
- /// assert_eq!(Ipv4Addr::new(193, 34, 17, 19).is_documentation(), false);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_stable(feature = "const_ip_50", since = "1.50.0")
- )]
- #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))]
- #[must_use]
- #[inline]
- pub const fn is_documentation(&self) -> bool {
- matches!(
- self.octets(),
- [192, 0, 2, _] | [198, 51, 100, _] | [203, 0, 113, _]
- )
- }
-
- /// Converts this address to an [IPv4-compatible] [`IPv6` address].
- ///
- /// `a.b.c.d` becomes `::a.b.c.d`
- ///
- /// Note that IPv4-compatible addresses have been officially deprecated.
- /// If you don't explicitly need an IPv4-compatible address for legacy reasons, consider using `to_ipv6_mapped` instead.
- ///
- /// [IPv4-compatible]: Ipv6Addr#ipv4-compatible-ipv6-addresses
- /// [`IPv6` address]: Ipv6Addr
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{Ipv4Addr, Ipv6Addr};
- ///
- /// assert_eq!(
- /// Ipv4Addr::new(192, 0, 2, 255).to_ipv6_compatible(),
- /// Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0xc000, 0x2ff)
- /// );
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_stable(feature = "const_ip_50", since = "1.50.0")
- )]
- #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
- #[must_use = "this returns the result of the operation, \
- without modifying the original"]
- #[inline]
- pub const fn to_ipv6_compatible(&self) -> Ipv6Addr {
- let [a, b, c, d] = self.octets();
- Ipv6Addr {
- octets: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, a, b, c, d],
- }
- }
-
- /// Converts this address to an [IPv4-mapped] [`IPv6` address].
- ///
- /// `a.b.c.d` becomes `::ffff:a.b.c.d`
- ///
- /// [IPv4-mapped]: Ipv6Addr#ipv4-mapped-ipv6-addresses
- /// [`IPv6` address]: Ipv6Addr
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{Ipv4Addr, Ipv6Addr};
- ///
- /// assert_eq!(Ipv4Addr::new(192, 0, 2, 255).to_ipv6_mapped(),
- /// Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc000, 0x2ff));
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_stable(feature = "const_ip_50", since = "1.50.0")
- )]
- #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
- #[must_use = "this returns the result of the operation, \
- without modifying the original"]
- #[inline]
- pub const fn to_ipv6_mapped(&self) -> Ipv6Addr {
- let [a, b, c, d] = self.octets();
- Ipv6Addr {
- octets: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xFF, 0xFF, a, b, c, d],
- }
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "ip_from_ip", since = "1.16.0"))]
-impl From<Ipv4Addr> for IpAddr {
- /// Copies this address to a new `IpAddr::V4`.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{IpAddr, Ipv4Addr};
- ///
- /// let addr = Ipv4Addr::new(127, 0, 0, 1);
- ///
- /// assert_eq!(
- /// IpAddr::V4(addr),
- /// IpAddr::from(addr)
- /// )
- /// ```
- #[inline]
- fn from(ipv4: Ipv4Addr) -> IpAddr {
- IpAddr::V4(ipv4)
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "ip_from_ip", since = "1.16.0"))]
-impl From<Ipv6Addr> for IpAddr {
- /// Copies this address to a new `IpAddr::V6`.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{IpAddr, Ipv6Addr};
- ///
- /// let addr = Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff);
- ///
- /// assert_eq!(
- /// IpAddr::V6(addr),
- /// IpAddr::from(addr)
- /// );
- /// ```
- #[inline]
- fn from(ipv6: Ipv6Addr) -> IpAddr {
- IpAddr::V6(ipv6)
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))]
-impl PartialEq<Ipv4Addr> for IpAddr {
- #[inline]
- fn eq(&self, other: &Ipv4Addr) -> bool {
- match self {
- IpAddr::V4(v4) => v4 == other,
- IpAddr::V6(_) => false,
- }
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))]
-impl PartialEq<IpAddr> for Ipv4Addr {
- #[inline]
- fn eq(&self, other: &IpAddr) -> bool {
- match other {
- IpAddr::V4(v4) => self == v4,
- IpAddr::V6(_) => false,
- }
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
-impl PartialOrd for Ipv4Addr {
- #[inline]
- fn partial_cmp(&self, other: &Ipv4Addr) -> Option<Ordering> {
- Some(self.cmp(other))
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))]
-impl PartialOrd<Ipv4Addr> for IpAddr {
- #[inline]
- fn partial_cmp(&self, other: &Ipv4Addr) -> Option<Ordering> {
- match self {
- IpAddr::V4(v4) => v4.partial_cmp(other),
- IpAddr::V6(_) => Some(Ordering::Greater),
- }
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))]
-impl PartialOrd<IpAddr> for Ipv4Addr {
- #[inline]
- fn partial_cmp(&self, other: &IpAddr) -> Option<Ordering> {
- match other {
- IpAddr::V4(v4) => self.partial_cmp(v4),
- IpAddr::V6(_) => Some(Ordering::Less),
- }
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
-impl Ord for Ipv4Addr {
- #[inline]
- fn cmp(&self, other: &Ipv4Addr) -> Ordering {
- self.octets.cmp(&other.octets)
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "ip_u32", since = "1.1.0"))]
-impl From<Ipv4Addr> for u32 {
- /// Converts an `Ipv4Addr` into a host byte order `u32`.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv4Addr;
- ///
- /// let addr = Ipv4Addr::new(0x12, 0x34, 0x56, 0x78);
- /// assert_eq!(0x12345678, u32::from(addr));
- /// ```
- #[inline]
- fn from(ip: Ipv4Addr) -> u32 {
- u32::from_be_bytes(ip.octets)
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "ip_u32", since = "1.1.0"))]
-impl From<u32> for Ipv4Addr {
- /// Converts a host byte order `u32` into an `Ipv4Addr`.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv4Addr;
- ///
- /// let addr = Ipv4Addr::from(0x12345678);
- /// assert_eq!(Ipv4Addr::new(0x12, 0x34, 0x56, 0x78), addr);
- /// ```
- #[inline]
- fn from(ip: u32) -> Ipv4Addr {
- Ipv4Addr {
- octets: ip.to_be_bytes(),
- }
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "from_slice_v4", since = "1.9.0"))]
-impl From<[u8; 4]> for Ipv4Addr {
- /// Creates an `Ipv4Addr` from a four element byte array.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv4Addr;
- ///
- /// let addr = Ipv4Addr::from([13u8, 12u8, 11u8, 10u8]);
- /// assert_eq!(Ipv4Addr::new(13, 12, 11, 10), addr);
- /// ```
- #[inline]
- fn from(octets: [u8; 4]) -> Ipv4Addr {
- Ipv4Addr { octets }
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "ip_from_slice", since = "1.17.0"))]
-impl From<[u8; 4]> for IpAddr {
- /// Creates an `IpAddr::V4` from a four element byte array.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{IpAddr, Ipv4Addr};
- ///
- /// let addr = IpAddr::from([13u8, 12u8, 11u8, 10u8]);
- /// assert_eq!(IpAddr::V4(Ipv4Addr::new(13, 12, 11, 10)), addr);
- /// ```
- #[inline]
- fn from(octets: [u8; 4]) -> IpAddr {
- IpAddr::V4(Ipv4Addr::from(octets))
- }
-}
-
-impl Ipv6Addr {
- /// Creates a new IPv6 address from eight 16-bit segments.
- ///
- /// The result will represent the IP address `a:b:c:d:e:f:g:h`.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv6Addr;
- ///
- /// let addr = Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_stable(feature = "const_ip_32", since = "1.32.0")
- )]
- #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
- #[allow(clippy::too_many_arguments)]
- #[must_use]
- #[inline]
- pub const fn new(a: u16, b: u16, c: u16, d: u16, e: u16, f: u16, g: u16, h: u16) -> Ipv6Addr {
- let addr16 = [
- a.to_be(),
- b.to_be(),
- c.to_be(),
- d.to_be(),
- e.to_be(),
- f.to_be(),
- g.to_be(),
- h.to_be(),
- ];
- Ipv6Addr {
- // All elements in `addr16` are big endian.
- // SAFETY: `[u16; 8]` is always safe to transmute to `[u8; 16]`.
- octets: unsafe { transmute::<_, [u8; 16]>(addr16) },
- }
- }
-
- /// An IPv6 address representing localhost: `::1`.
- ///
- /// This corresponds to constant `IN6ADDR_LOOPBACK_INIT` or `in6addr_loopback` in other
- /// languages.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv6Addr;
- ///
- /// let addr = Ipv6Addr::LOCALHOST;
- /// assert_eq!(addr, Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1));
- /// ```
- #[doc(alias = "IN6ADDR_LOOPBACK_INIT")]
- #[doc(alias = "in6addr_loopback")]
- #[cfg_attr(staged_api, stable(feature = "ip_constructors", since = "1.30.0"))]
- pub const LOCALHOST: Self = Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1);
-
- /// An IPv6 address representing the unspecified address: `::`
- ///
- /// This corresponds to constant `IN6ADDR_ANY_INIT` or `in6addr_any` in other languages.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv6Addr;
- ///
- /// let addr = Ipv6Addr::UNSPECIFIED;
- /// assert_eq!(addr, Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0));
- /// ```
- #[doc(alias = "IN6ADDR_ANY_INIT")]
- #[doc(alias = "in6addr_any")]
- #[cfg_attr(staged_api, stable(feature = "ip_constructors", since = "1.30.0"))]
- pub const UNSPECIFIED: Self = Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0);
-
- /// Returns the eight 16-bit segments that make up this address.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv6Addr;
- ///
- /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).segments(),
- /// [0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff]);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_stable(feature = "const_ip_50", since = "1.50.0")
- )]
- #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
- #[must_use]
- #[inline]
- pub const fn segments(&self) -> [u16; 8] {
- // All elements in `self.octets` must be big endian.
- // SAFETY: `[u8; 16]` is always safe to transmute to `[u16; 8]`.
- let [a, b, c, d, e, f, g, h] = unsafe { transmute::<_, [u16; 8]>(self.octets) };
- // We want native endian u16
- [
- u16::from_be(a),
- u16::from_be(b),
- u16::from_be(c),
- u16::from_be(d),
- u16::from_be(e),
- u16::from_be(f),
- u16::from_be(g),
- u16::from_be(h),
- ]
- }
-
- /// Returns [`true`] for the special 'unspecified' address (`::`).
- ///
- /// This property is defined in [IETF RFC 4291].
- ///
- /// [IETF RFC 4291]: https://tools.ietf.org/html/rfc4291
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv6Addr;
- ///
- /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).is_unspecified(), false);
- /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0).is_unspecified(), true);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_stable(feature = "const_ip_50", since = "1.50.0")
- )]
- #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))]
- #[must_use]
- #[inline]
- pub const fn is_unspecified(&self) -> bool {
- u128::from_be_bytes(self.octets()) == u128::from_be_bytes(Ipv6Addr::UNSPECIFIED.octets())
- }
-
- /// Returns [`true`] if this is the [loopback address] (`::1`),
- /// as defined in [IETF RFC 4291 section 2.5.3].
- ///
- /// Contrary to IPv4, in IPv6 there is only one loopback address.
- ///
- /// [loopback address]: Ipv6Addr::LOCALHOST
- /// [IETF RFC 4291 section 2.5.3]: https://tools.ietf.org/html/rfc4291#section-2.5.3
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv6Addr;
- ///
- /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).is_loopback(), false);
- /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0x1).is_loopback(), true);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_stable(feature = "const_ip_50", since = "1.50.0")
- )]
- #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))]
- #[must_use]
- #[inline]
- pub const fn is_loopback(&self) -> bool {
- u128::from_be_bytes(self.octets()) == u128::from_be_bytes(Ipv6Addr::LOCALHOST.octets())
- }
-
- /// Returns [`true`] if the address appears to be globally reachable
- /// as specified by the [IANA IPv6 Special-Purpose Address Registry].
- /// Whether or not an address is practically reachable will depend on your network configuration.
- ///
- /// Most IPv6 addresses are globally reachable;
- /// unless they are specifically defined as *not* globally reachable.
- ///
- /// Non-exhaustive list of notable addresses that are not globally reachable:
- /// - The [unspecified address] ([`is_unspecified`](Ipv6Addr::is_unspecified))
- /// - The [loopback address] ([`is_loopback`](Ipv6Addr::is_loopback))
- /// - IPv4-mapped addresses
- /// - Addresses reserved for benchmarking
- /// - Addresses reserved for documentation ([`is_documentation`](Ipv6Addr::is_documentation))
- /// - Unique local addresses ([`is_unique_local`](Ipv6Addr::is_unique_local))
- /// - Unicast addresses with link-local scope ([`is_unicast_link_local`](Ipv6Addr::is_unicast_link_local))
- ///
- /// For the complete overview of which addresses are globally reachable, see the table at the [IANA IPv6 Special-Purpose Address Registry].
- ///
- /// Note that an address having global scope is not the same as being globally reachable,
- /// and there is no direct relation between the two concepts: There exist addresses with global scope
- /// that are not globally reachable (for example unique local addresses),
- /// and addresses that are globally reachable without having global scope
- /// (multicast addresses with non-global scope).
- ///
- /// [IANA IPv6 Special-Purpose Address Registry]: https://www.iana.org/assignments/iana-ipv6-special-registry/iana-ipv6-special-registry.xhtml
- /// [unspecified address]: Ipv6Addr::UNSPECIFIED
- /// [loopback address]: Ipv6Addr::LOCALHOST
- ///
- /// # Examples
- ///
- /// ```
- /// #![feature(ip)]
- ///
- /// use std::net::Ipv6Addr;
- ///
- /// // Most IPv6 addresses are globally reachable:
- /// assert_eq!(Ipv6Addr::new(0x26, 0, 0x1c9, 0, 0, 0xafc8, 0x10, 0x1).is_global(), true);
- ///
- /// // However some addresses have been assigned a special meaning
- /// // that makes them not globally reachable. Some examples are:
- ///
- /// // The unspecified address (`::`)
- /// assert_eq!(Ipv6Addr::UNSPECIFIED.is_global(), false);
- ///
- /// // The loopback address (`::1`)
- /// assert_eq!(Ipv6Addr::LOCALHOST.is_global(), false);
- ///
- /// // IPv4-mapped addresses (`::ffff:0:0/96`)
- /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).is_global(), false);
- ///
- /// // Addresses reserved for benchmarking (`2001:2::/48`)
- /// assert_eq!(Ipv6Addr::new(0x2001, 2, 0, 0, 0, 0, 0, 1,).is_global(), false);
- ///
- /// // Addresses reserved for documentation (`2001:db8::/32`)
- /// assert_eq!(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 1).is_global(), false);
- ///
- /// // Unique local addresses (`fc00::/7`)
- /// assert_eq!(Ipv6Addr::new(0xfc02, 0, 0, 0, 0, 0, 0, 1).is_global(), false);
- ///
- /// // Unicast addresses with link-local scope (`fe80::/10`)
- /// assert_eq!(Ipv6Addr::new(0xfe81, 0, 0, 0, 0, 0, 0, 1).is_global(), false);
- ///
- /// // For a complete overview see the IANA IPv6 Special-Purpose Address Registry.
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_ipv6", issue = "76205")
- )]
- #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))]
- #[must_use]
- #[inline]
- pub const fn is_global(&self) -> bool {
- !(self.is_unspecified()
- || self.is_loopback()
- // IPv4-mapped Address (`::ffff:0:0/96`)
- || matches!(self.segments(), [0, 0, 0, 0, 0, 0xffff, _, _])
- // IPv4-IPv6 Translat. (`64:ff9b:1::/48`)
- || matches!(self.segments(), [0x64, 0xff9b, 1, _, _, _, _, _])
- // Discard-Only Address Block (`100::/64`)
- || matches!(self.segments(), [0x100, 0, 0, 0, _, _, _, _])
- // IETF Protocol Assignments (`2001::/23`)
- || (matches!(self.segments(), [0x2001, b, _, _, _, _, _, _] if b < 0x200)
- && !(
- // Port Control Protocol Anycast (`2001:1::1`)
- u128::from_be_bytes(self.octets()) == 0x2001_0001_0000_0000_0000_0000_0000_0001
- // Traversal Using Relays around NAT Anycast (`2001:1::2`)
- || u128::from_be_bytes(self.octets()) == 0x2001_0001_0000_0000_0000_0000_0000_0002
- // AMT (`2001:3::/32`)
- || matches!(self.segments(), [0x2001, 3, _, _, _, _, _, _])
- // AS112-v6 (`2001:4:112::/48`)
- || matches!(self.segments(), [0x2001, 4, 0x112, _, _, _, _, _])
- // ORCHIDv2 (`2001:20::/28`)
- || matches!(self.segments(), [0x2001, b, _, _, _, _, _, _] if b >= 0x20 && b <= 0x2F)
- ))
- || self.is_documentation()
- || self.is_unique_local()
- || self.is_unicast_link_local())
- }
-
- /// Returns [`true`] if this is a unique local address (`fc00::/7`).
- ///
- /// This property is defined in [IETF RFC 4193].
- ///
- /// [IETF RFC 4193]: https://tools.ietf.org/html/rfc4193
- ///
- /// # Examples
- ///
- /// ```
- /// #![feature(ip)]
- ///
- /// use std::net::Ipv6Addr;
- ///
- /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).is_unique_local(), false);
- /// assert_eq!(Ipv6Addr::new(0xfc02, 0, 0, 0, 0, 0, 0, 0).is_unique_local(), true);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_ipv6", issue = "76205")
- )]
- #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))]
- #[must_use]
- #[inline]
- pub const fn is_unique_local(&self) -> bool {
- (self.segments()[0] & 0xfe00) == 0xfc00
- }
-
- /// Returns [`true`] if this is a unicast address, as defined by [IETF RFC 4291].
- /// Any address that is not a [multicast address] (`ff00::/8`) is unicast.
- ///
- /// [IETF RFC 4291]: https://tools.ietf.org/html/rfc4291
- /// [multicast address]: Ipv6Addr::is_multicast
- ///
- /// # Examples
- ///
- /// ```
- /// #![feature(ip)]
- ///
- /// use std::net::Ipv6Addr;
- ///
- /// // The unspecified and loopback addresses are unicast.
- /// assert_eq!(Ipv6Addr::UNSPECIFIED.is_unicast(), true);
- /// assert_eq!(Ipv6Addr::LOCALHOST.is_unicast(), true);
- ///
- /// // Any address that is not a multicast address (`ff00::/8`) is unicast.
- /// assert_eq!(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0).is_unicast(), true);
- /// assert_eq!(Ipv6Addr::new(0xff00, 0, 0, 0, 0, 0, 0, 0).is_unicast(), false);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_ipv6", issue = "76205")
- )]
- #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))]
- #[must_use]
- #[inline]
- pub const fn is_unicast(&self) -> bool {
- !self.is_multicast()
- }
-
- /// Returns `true` if the address is a unicast address with link-local scope,
- /// as defined in [RFC 4291].
- ///
- /// A unicast address has link-local scope if it has the prefix `fe80::/10`, as per [RFC 4291 section 2.4].
- /// Note that this encompasses more addresses than those defined in [RFC 4291 section 2.5.6],
- /// which describes "Link-Local IPv6 Unicast Addresses" as having the following stricter format:
- ///
- /// ```text
- /// | 10 bits | 54 bits | 64 bits |
- /// +----------+-------------------------+----------------------------+
- /// |1111111010| 0 | interface ID |
- /// +----------+-------------------------+----------------------------+
- /// ```
- /// So while currently the only addresses with link-local scope an application will encounter are all in `fe80::/64`,
- /// this might change in the future with the publication of new standards. More addresses in `fe80::/10` could be allocated,
- /// and those addresses will have link-local scope.
- ///
- /// Also note that while [RFC 4291 section 2.5.3] mentions about the [loopback address] (`::1`) that "it is treated as having Link-Local scope",
- /// this does not mean that the loopback address actually has link-local scope and this method will return `false` on it.
- ///
- /// [RFC 4291]: https://tools.ietf.org/html/rfc4291
- /// [RFC 4291 section 2.4]: https://tools.ietf.org/html/rfc4291#section-2.4
- /// [RFC 4291 section 2.5.3]: https://tools.ietf.org/html/rfc4291#section-2.5.3
- /// [RFC 4291 section 2.5.6]: https://tools.ietf.org/html/rfc4291#section-2.5.6
- /// [loopback address]: Ipv6Addr::LOCALHOST
- ///
- /// # Examples
- ///
- /// ```
- /// #![feature(ip)]
- ///
- /// use std::net::Ipv6Addr;
- ///
- /// // The loopback address (`::1`) does not actually have link-local scope.
- /// assert_eq!(Ipv6Addr::LOCALHOST.is_unicast_link_local(), false);
- ///
- /// // Only addresses in `fe80::/10` have link-local scope.
- /// assert_eq!(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0).is_unicast_link_local(), false);
- /// assert_eq!(Ipv6Addr::new(0xfe80, 0, 0, 0, 0, 0, 0, 0).is_unicast_link_local(), true);
- ///
- /// // Addresses outside the stricter `fe80::/64` also have link-local scope.
- /// assert_eq!(Ipv6Addr::new(0xfe80, 0, 0, 1, 0, 0, 0, 0).is_unicast_link_local(), true);
- /// assert_eq!(Ipv6Addr::new(0xfe81, 0, 0, 0, 0, 0, 0, 0).is_unicast_link_local(), true);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_ipv6", issue = "76205")
- )]
- #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))]
- #[must_use]
- #[inline]
- pub const fn is_unicast_link_local(&self) -> bool {
- (self.segments()[0] & 0xffc0) == 0xfe80
- }
-
- /// Returns [`true`] if this is an address reserved for documentation
- /// (`2001:db8::/32`).
- ///
- /// This property is defined in [IETF RFC 3849].
- ///
- /// [IETF RFC 3849]: https://tools.ietf.org/html/rfc3849
- ///
- /// # Examples
- ///
- /// ```
- /// #![feature(ip)]
- ///
- /// use std::net::Ipv6Addr;
- ///
- /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).is_documentation(), false);
- /// assert_eq!(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0).is_documentation(), true);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_ipv6", issue = "76205")
- )]
- #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))]
- #[must_use]
- #[inline]
- pub const fn is_documentation(&self) -> bool {
- (self.segments()[0] == 0x2001) && (self.segments()[1] == 0xdb8)
- }
-
- /// Returns [`true`] if this is an address reserved for benchmarking (`2001:2::/48`).
- ///
- /// This property is defined in [IETF RFC 5180], where it is mistakenly specified as covering the range `2001:0200::/48`.
- /// This is corrected in [IETF RFC Errata 1752] to `2001:0002::/48`.
- ///
- /// [IETF RFC 5180]: https://tools.ietf.org/html/rfc5180
- /// [IETF RFC Errata 1752]: https://www.rfc-editor.org/errata_search.php?eid=1752
- ///
- /// ```
- /// #![feature(ip)]
- ///
- /// use std::net::Ipv6Addr;
- ///
- /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc613, 0x0).is_benchmarking(), false);
- /// assert_eq!(Ipv6Addr::new(0x2001, 0x2, 0, 0, 0, 0, 0, 0).is_benchmarking(), true);
- /// ```
- #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))]
- #[must_use]
- #[inline]
- pub const fn is_benchmarking(&self) -> bool {
- (self.segments()[0] == 0x2001) && (self.segments()[1] == 0x2) && (self.segments()[2] == 0)
- }
-
- /// Returns [`true`] if the address is a globally routable unicast address.
- ///
- /// The following return false:
- ///
- /// - the loopback address
- /// - the link-local addresses
- /// - unique local addresses
- /// - the unspecified address
- /// - the address range reserved for documentation
- ///
- /// This method returns [`true`] for site-local addresses as per [RFC 4291 section 2.5.7]
- ///
- /// ```no_rust
- /// The special behavior of [the site-local unicast] prefix defined in [RFC3513] must no longer
- /// be supported in new implementations (i.e., new implementations must treat this prefix as
- /// Global Unicast).
- /// ```
- ///
- /// [RFC 4291 section 2.5.7]: https://tools.ietf.org/html/rfc4291#section-2.5.7
- ///
- /// # Examples
- ///
- /// ```
- /// #![feature(ip)]
- ///
- /// use std::net::Ipv6Addr;
- ///
- /// assert_eq!(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 0).is_unicast_global(), false);
- /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).is_unicast_global(), true);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_ipv6", issue = "76205")
- )]
- #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))]
- #[must_use]
- #[inline]
- pub const fn is_unicast_global(&self) -> bool {
- self.is_unicast()
- && !self.is_loopback()
- && !self.is_unicast_link_local()
- && !self.is_unique_local()
- && !self.is_unspecified()
- && !self.is_documentation()
- && !self.is_benchmarking()
- }
-
- /// Returns the address's multicast scope if the address is multicast.
- ///
- /// # Examples
- ///
- /// ```
- /// #![feature(ip)]
- ///
- /// use std::net::{Ipv6Addr, Ipv6MulticastScope};
- ///
- /// assert_eq!(
- /// Ipv6Addr::new(0xff0e, 0, 0, 0, 0, 0, 0, 0).multicast_scope(),
- /// Some(Ipv6MulticastScope::Global)
- /// );
- /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).multicast_scope(), None);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_ipv6", issue = "76205")
- )]
- #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))]
- #[must_use]
- #[inline]
- pub const fn multicast_scope(&self) -> Option<Ipv6MulticastScope> {
- if self.is_multicast() {
- match self.segments()[0] & 0x000f {
- 1 => Some(Ipv6MulticastScope::InterfaceLocal),
- 2 => Some(Ipv6MulticastScope::LinkLocal),
- 3 => Some(Ipv6MulticastScope::RealmLocal),
- 4 => Some(Ipv6MulticastScope::AdminLocal),
- 5 => Some(Ipv6MulticastScope::SiteLocal),
- 8 => Some(Ipv6MulticastScope::OrganizationLocal),
- 14 => Some(Ipv6MulticastScope::Global),
- _ => None,
- }
- } else {
- None
- }
- }
-
- /// Returns [`true`] if this is a multicast address (`ff00::/8`).
- ///
- /// This property is defined by [IETF RFC 4291].
- ///
- /// [IETF RFC 4291]: https://tools.ietf.org/html/rfc4291
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv6Addr;
- ///
- /// assert_eq!(Ipv6Addr::new(0xff00, 0, 0, 0, 0, 0, 0, 0).is_multicast(), true);
- /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).is_multicast(), false);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_stable(feature = "const_ip_50", since = "1.50.0")
- )]
- #[cfg_attr(staged_api, stable(since = "1.7.0", feature = "ip_17"))]
- #[must_use]
- #[inline]
- pub const fn is_multicast(&self) -> bool {
- (self.segments()[0] & 0xff00) == 0xff00
- }
-
- /// Converts this address to an [`IPv4` address] if it's an [IPv4-mapped] address,
- /// as defined in [IETF RFC 4291 section 2.5.5.2], otherwise returns [`None`].
- ///
- /// `::ffff:a.b.c.d` becomes `a.b.c.d`.
- /// All addresses *not* starting with `::ffff` will return `None`.
- ///
- /// [`IPv4` address]: Ipv4Addr
- /// [IPv4-mapped]: Ipv6Addr
- /// [IETF RFC 4291 section 2.5.5.2]: https://tools.ietf.org/html/rfc4291#section-2.5.5.2
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{Ipv4Addr, Ipv6Addr};
- ///
- /// assert_eq!(Ipv6Addr::new(0xff00, 0, 0, 0, 0, 0, 0, 0).to_ipv4_mapped(), None);
- /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).to_ipv4_mapped(),
- /// Some(Ipv4Addr::new(192, 10, 2, 255)));
- /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1).to_ipv4_mapped(), None);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_ipv6", issue = "76205")
- )]
- #[cfg_attr(staged_api, stable(feature = "ipv6_to_ipv4_mapped", since = "1.63.0"))]
- #[must_use = "this returns the result of the operation, \
- without modifying the original"]
- #[inline]
- pub const fn to_ipv4_mapped(&self) -> Option<Ipv4Addr> {
- match self.octets() {
- [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, a, b, c, d] => {
- Some(Ipv4Addr::new(a, b, c, d))
- }
- _ => None,
- }
- }
-
- /// Converts this address to an [`IPv4` address] if it is either
- /// an [IPv4-compatible] address as defined in [IETF RFC 4291 section 2.5.5.1],
- /// or an [IPv4-mapped] address as defined in [IETF RFC 4291 section 2.5.5.2],
- /// otherwise returns [`None`].
- ///
- /// Note that this will return an [`IPv4` address] for the IPv6 loopback address `::1`. Use
- /// [`Ipv6Addr::to_ipv4_mapped`] to avoid this.
- ///
- /// `::a.b.c.d` and `::ffff:a.b.c.d` become `a.b.c.d`. `::1` becomes `0.0.0.1`.
- /// All addresses *not* starting with either all zeroes or `::ffff` will return `None`.
- ///
- /// [`IPv4` address]: Ipv4Addr
- /// [IPv4-compatible]: Ipv6Addr#ipv4-compatible-ipv6-addresses
- /// [IPv4-mapped]: Ipv6Addr#ipv4-mapped-ipv6-addresses
- /// [IETF RFC 4291 section 2.5.5.1]: https://tools.ietf.org/html/rfc4291#section-2.5.5.1
- /// [IETF RFC 4291 section 2.5.5.2]: https://tools.ietf.org/html/rfc4291#section-2.5.5.2
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{Ipv4Addr, Ipv6Addr};
- ///
- /// assert_eq!(Ipv6Addr::new(0xff00, 0, 0, 0, 0, 0, 0, 0).to_ipv4(), None);
- /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff).to_ipv4(),
- /// Some(Ipv4Addr::new(192, 10, 2, 255)));
- /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1).to_ipv4(),
- /// Some(Ipv4Addr::new(0, 0, 0, 1)));
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_stable(feature = "const_ip_50", since = "1.50.0")
- )]
- #[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
- #[must_use = "this returns the result of the operation, \
- without modifying the original"]
- #[inline]
- pub const fn to_ipv4(&self) -> Option<Ipv4Addr> {
- if let [0, 0, 0, 0, 0, 0 | 0xffff, ab, cd] = self.segments() {
- let [a, b] = ab.to_be_bytes();
- let [c, d] = cd.to_be_bytes();
- Some(Ipv4Addr::new(a, b, c, d))
- } else {
- None
- }
- }
-
- /// Converts this address to an `IpAddr::V4` if it is an IPv4-mapped addresses, otherwise it
- /// returns self wrapped in an `IpAddr::V6`.
- ///
- /// # Examples
- ///
- /// ```
- /// #![feature(ip)]
- /// use std::net::Ipv6Addr;
- ///
- /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0x7f00, 0x1).is_loopback(), false);
- /// assert_eq!(Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0x7f00, 0x1).to_canonical().is_loopback(), true);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_unstable(feature = "const_ipv6", issue = "76205")
- )]
- #[cfg_attr(staged_api, unstable(feature = "ip", issue = "27709"))]
- #[must_use = "this returns the result of the operation, \
- without modifying the original"]
- #[inline]
- pub const fn to_canonical(&self) -> IpAddr {
- if let Some(mapped) = self.to_ipv4_mapped() {
- return IpAddr::V4(mapped);
- }
- IpAddr::V6(*self)
- }
-
- /// Returns the sixteen eight-bit integers the IPv6 address consists of.
- ///
- /// ```
- /// use std::net::Ipv6Addr;
- ///
- /// assert_eq!(Ipv6Addr::new(0xff00, 0, 0, 0, 0, 0, 0, 0).octets(),
- /// [255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
- /// ```
- #[cfg_attr(
- staged_api,
- rustc_const_stable(feature = "const_ip_32", since = "1.32.0")
- )]
- #[cfg_attr(staged_api, stable(feature = "ipv6_to_octets", since = "1.12.0"))]
- #[must_use]
- #[inline]
- pub const fn octets(&self) -> [u8; 16] {
- self.octets
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))]
-impl PartialEq<IpAddr> for Ipv6Addr {
- #[inline]
- fn eq(&self, other: &IpAddr) -> bool {
- match other {
- IpAddr::V4(_) => false,
- IpAddr::V6(v6) => self == v6,
- }
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))]
-impl PartialEq<Ipv6Addr> for IpAddr {
- #[inline]
- fn eq(&self, other: &Ipv6Addr) -> bool {
- match self {
- IpAddr::V4(_) => false,
- IpAddr::V6(v6) => v6 == other,
- }
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
-impl PartialOrd for Ipv6Addr {
- #[inline]
- fn partial_cmp(&self, other: &Ipv6Addr) -> Option<Ordering> {
- Some(self.cmp(other))
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))]
-impl PartialOrd<Ipv6Addr> for IpAddr {
- #[inline]
- fn partial_cmp(&self, other: &Ipv6Addr) -> Option<Ordering> {
- match self {
- IpAddr::V4(_) => Some(Ordering::Less),
- IpAddr::V6(v6) => v6.partial_cmp(other),
- }
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "ip_cmp", since = "1.16.0"))]
-impl PartialOrd<IpAddr> for Ipv6Addr {
- #[inline]
- fn partial_cmp(&self, other: &IpAddr) -> Option<Ordering> {
- match other {
- IpAddr::V4(_) => Some(Ordering::Greater),
- IpAddr::V6(v6) => self.partial_cmp(v6),
- }
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "rust1", since = "1.0.0"))]
-impl Ord for Ipv6Addr {
- #[inline]
- fn cmp(&self, other: &Ipv6Addr) -> Ordering {
- self.segments().cmp(&other.segments())
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "i128", since = "1.26.0"))]
-impl From<Ipv6Addr> for u128 {
- /// Convert an `Ipv6Addr` into a host byte order `u128`.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv6Addr;
- ///
- /// let addr = Ipv6Addr::new(
- /// 0x1020, 0x3040, 0x5060, 0x7080,
- /// 0x90A0, 0xB0C0, 0xD0E0, 0xF00D,
- /// );
- /// assert_eq!(0x102030405060708090A0B0C0D0E0F00D_u128, u128::from(addr));
- /// ```
- #[inline]
- fn from(ip: Ipv6Addr) -> u128 {
- u128::from_be_bytes(ip.octets)
- }
-}
-#[cfg_attr(staged_api, stable(feature = "i128", since = "1.26.0"))]
-impl From<u128> for Ipv6Addr {
- /// Convert a host byte order `u128` into an `Ipv6Addr`.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv6Addr;
- ///
- /// let addr = Ipv6Addr::from(0x102030405060708090A0B0C0D0E0F00D_u128);
- /// assert_eq!(
- /// Ipv6Addr::new(
- /// 0x1020, 0x3040, 0x5060, 0x7080,
- /// 0x90A0, 0xB0C0, 0xD0E0, 0xF00D,
- /// ),
- /// addr);
- /// ```
- #[inline]
- fn from(ip: u128) -> Ipv6Addr {
- Ipv6Addr::from(ip.to_be_bytes())
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "ipv6_from_octets", since = "1.9.0"))]
-impl From<[u8; 16]> for Ipv6Addr {
- /// Creates an `Ipv6Addr` from a sixteen element byte array.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv6Addr;
- ///
- /// let addr = Ipv6Addr::from([
- /// 25u8, 24u8, 23u8, 22u8, 21u8, 20u8, 19u8, 18u8,
- /// 17u8, 16u8, 15u8, 14u8, 13u8, 12u8, 11u8, 10u8,
- /// ]);
- /// assert_eq!(
- /// Ipv6Addr::new(
- /// 0x1918, 0x1716,
- /// 0x1514, 0x1312,
- /// 0x1110, 0x0f0e,
- /// 0x0d0c, 0x0b0a
- /// ),
- /// addr
- /// );
- /// ```
- #[inline]
- fn from(octets: [u8; 16]) -> Ipv6Addr {
- Ipv6Addr { octets }
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "ipv6_from_segments", since = "1.16.0"))]
-impl From<[u16; 8]> for Ipv6Addr {
- /// Creates an `Ipv6Addr` from an eight element 16-bit array.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::Ipv6Addr;
- ///
- /// let addr = Ipv6Addr::from([
- /// 525u16, 524u16, 523u16, 522u16,
- /// 521u16, 520u16, 519u16, 518u16,
- /// ]);
- /// assert_eq!(
- /// Ipv6Addr::new(
- /// 0x20d, 0x20c,
- /// 0x20b, 0x20a,
- /// 0x209, 0x208,
- /// 0x207, 0x206
- /// ),
- /// addr
- /// );
- /// ```
- #[inline]
- fn from(segments: [u16; 8]) -> Ipv6Addr {
- let [a, b, c, d, e, f, g, h] = segments;
- Ipv6Addr::new(a, b, c, d, e, f, g, h)
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "ip_from_slice", since = "1.17.0"))]
-impl From<[u8; 16]> for IpAddr {
- /// Creates an `IpAddr::V6` from a sixteen element byte array.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{IpAddr, Ipv6Addr};
- ///
- /// let addr = IpAddr::from([
- /// 25u8, 24u8, 23u8, 22u8, 21u8, 20u8, 19u8, 18u8,
- /// 17u8, 16u8, 15u8, 14u8, 13u8, 12u8, 11u8, 10u8,
- /// ]);
- /// assert_eq!(
- /// IpAddr::V6(Ipv6Addr::new(
- /// 0x1918, 0x1716,
- /// 0x1514, 0x1312,
- /// 0x1110, 0x0f0e,
- /// 0x0d0c, 0x0b0a
- /// )),
- /// addr
- /// );
- /// ```
- #[inline]
- fn from(octets: [u8; 16]) -> IpAddr {
- IpAddr::V6(Ipv6Addr::from(octets))
- }
-}
-
-#[cfg_attr(staged_api, stable(feature = "ip_from_slice", since = "1.17.0"))]
-impl From<[u16; 8]> for IpAddr {
- /// Creates an `IpAddr::V6` from an eight element 16-bit array.
- ///
- /// # Examples
- ///
- /// ```
- /// use std::net::{IpAddr, Ipv6Addr};
- ///
- /// let addr = IpAddr::from([
- /// 525u16, 524u16, 523u16, 522u16,
- /// 521u16, 520u16, 519u16, 518u16,
- /// ]);
- /// assert_eq!(
- /// IpAddr::V6(Ipv6Addr::new(
- /// 0x20d, 0x20c,
- /// 0x20b, 0x20a,
- /// 0x209, 0x208,
- /// 0x207, 0x206
- /// )),
- /// addr
- /// );
- /// ```
- #[inline]
- fn from(segments: [u16; 8]) -> IpAddr {
- IpAddr::V6(Ipv6Addr::from(segments))
- }
-}
diff --git a/vendor/rustix-0.37.6/src/net/mod.rs b/vendor/rustix-0.37.6/src/net/mod.rs
deleted file mode 100644
index 4a3419737..000000000
--- a/vendor/rustix-0.37.6/src/net/mod.rs
+++ /dev/null
@@ -1,42 +0,0 @@
-//! Network-related operations.
-//!
-//! On Windows, one must call [`wsa_startup`] in the process before calling any
-//! of these APIs. [`wsa_cleanup`] may be used in the process if these APIs are
-//! no longer needed.
-//!
-//! [`wsa_startup`]: https://docs.rs/rustix/*/x86_64-pc-windows-msvc/rustix/net/fn.wsa_startup.html
-//! [`wsa_cleanup`]: https://docs.rs/rustix/*/x86_64-pc-windows-msvc/rustix/net/fn.wsa_cleanup.html
-
-#[cfg(not(feature = "std"))]
-mod addr;
-#[cfg(not(feature = "std"))]
-mod ip;
-mod send_recv;
-mod socket;
-mod socket_addr_any;
-#[cfg(not(any(windows, target_os = "wasi")))]
-mod socketpair;
-#[cfg(windows)]
-mod wsa;
-
-pub mod sockopt;
-
-pub use send_recv::*;
-pub use socket::*;
-pub use socket_addr_any::{SocketAddrAny, SocketAddrStorage};
-#[cfg(not(any(windows, target_os = "wasi")))]
-pub use socketpair::socketpair;
-#[cfg(feature = "std")]
-pub use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, SocketAddrV4, SocketAddrV6};
-#[cfg(windows)]
-pub use wsa::{wsa_cleanup, wsa_startup};
-#[cfg(not(feature = "std"))]
-pub use {
- addr::{SocketAddr, SocketAddrV4, SocketAddrV6},
- ip::{IpAddr, Ipv4Addr, Ipv6Addr, Ipv6MulticastScope},
-};
-#[cfg(unix)]
-pub use {
- send_recv::sendto_unix,
- socket::{bind_unix, connect_unix, SocketAddrUnix},
-};
diff --git a/vendor/rustix-0.37.6/src/net/send_recv.rs b/vendor/rustix-0.37.6/src/net/send_recv.rs
deleted file mode 100644
index 041077266..000000000
--- a/vendor/rustix-0.37.6/src/net/send_recv.rs
+++ /dev/null
@@ -1,210 +0,0 @@
-//! `recv` and `send`, and variants.
-
-#[cfg(unix)]
-use crate::net::SocketAddrUnix;
-use crate::net::{SocketAddr, SocketAddrAny, SocketAddrV4, SocketAddrV6};
-use crate::{backend, io};
-use backend::fd::{AsFd, BorrowedFd};
-
-pub use backend::net::send_recv::{RecvFlags, SendFlags};
-
-/// `recv(fd, buf, flags)`—Reads data from a socket.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/recv.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/recv.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/recv.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-recv
-#[inline]
-pub fn recv<Fd: AsFd>(fd: Fd, buf: &mut [u8], flags: RecvFlags) -> io::Result<usize> {
- backend::net::syscalls::recv(fd.as_fd(), buf, flags)
-}
-
-/// `send(fd, buf, flags)`—Writes data to a socket.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/send.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/send.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/send.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-send
-#[inline]
-pub fn send<Fd: AsFd>(fd: Fd, buf: &[u8], flags: SendFlags) -> io::Result<usize> {
- backend::net::syscalls::send(fd.as_fd(), buf, flags)
-}
-
-/// `recvfrom(fd, buf, flags, addr, len)`—Reads data from a socket and
-/// returns the sender address.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/recvfrom.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/recvfrom.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/recvfrom.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-recvfrom
-#[inline]
-pub fn recvfrom<Fd: AsFd>(
- fd: Fd,
- buf: &mut [u8],
- flags: RecvFlags,
-) -> io::Result<(usize, Option<SocketAddrAny>)> {
- backend::net::syscalls::recvfrom(fd.as_fd(), buf, flags)
-}
-
-/// `sendto(fd, buf, flags, addr)`—Writes data to a socket to a specific IP
-/// address.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/sendto.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/sendto.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/sendto.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-sendto
-pub fn sendto<Fd: AsFd>(
- fd: Fd,
- buf: &[u8],
- flags: SendFlags,
- addr: &SocketAddr,
-) -> io::Result<usize> {
- _sendto(fd.as_fd(), buf, flags, addr)
-}
-
-fn _sendto(
- fd: BorrowedFd<'_>,
- buf: &[u8],
- flags: SendFlags,
- addr: &SocketAddr,
-) -> io::Result<usize> {
- match addr {
- SocketAddr::V4(v4) => backend::net::syscalls::sendto_v4(fd, buf, flags, v4),
- SocketAddr::V6(v6) => backend::net::syscalls::sendto_v6(fd, buf, flags, v6),
- }
-}
-
-/// `sendto(fd, buf, flags, addr)`—Writes data to a socket to a specific
-/// address.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/sendto.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/sendto.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/sendto.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-sendto
-pub fn sendto_any<Fd: AsFd>(
- fd: Fd,
- buf: &[u8],
- flags: SendFlags,
- addr: &SocketAddrAny,
-) -> io::Result<usize> {
- _sendto_any(fd.as_fd(), buf, flags, addr)
-}
-
-fn _sendto_any(
- fd: BorrowedFd<'_>,
- buf: &[u8],
- flags: SendFlags,
- addr: &SocketAddrAny,
-) -> io::Result<usize> {
- match addr {
- SocketAddrAny::V4(v4) => backend::net::syscalls::sendto_v4(fd, buf, flags, v4),
- SocketAddrAny::V6(v6) => backend::net::syscalls::sendto_v6(fd, buf, flags, v6),
- #[cfg(unix)]
- SocketAddrAny::Unix(unix) => backend::net::syscalls::sendto_unix(fd, buf, flags, unix),
- }
-}
-
-/// `sendto(fd, buf, flags, addr, sizeof(struct sockaddr_in))`—Writes data to
-/// a socket to a specific IPv4 address.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/sendto.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/sendto.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/sendto.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-sendto
-#[inline]
-#[doc(alias = "sendto")]
-pub fn sendto_v4<Fd: AsFd>(
- fd: Fd,
- buf: &[u8],
- flags: SendFlags,
- addr: &SocketAddrV4,
-) -> io::Result<usize> {
- backend::net::syscalls::sendto_v4(fd.as_fd(), buf, flags, addr)
-}
-
-/// `sendto(fd, buf, flags, addr, sizeof(struct sockaddr_in6))`—Writes data
-/// to a socket to a specific IPv6 address.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/sendto.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/sendto.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/sendto.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-sendto
-#[inline]
-#[doc(alias = "sendto")]
-pub fn sendto_v6<Fd: AsFd>(
- fd: Fd,
- buf: &[u8],
- flags: SendFlags,
- addr: &SocketAddrV6,
-) -> io::Result<usize> {
- backend::net::syscalls::sendto_v6(fd.as_fd(), buf, flags, addr)
-}
-
-/// `sendto(fd, buf, flags, addr, sizeof(struct sockaddr_un))`—Writes data to
-/// a socket to a specific Unix-domain socket address.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/sendto.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/sendto.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/sendto.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-sendto
-#[cfg(unix)]
-#[inline]
-#[doc(alias = "sendto")]
-pub fn sendto_unix<Fd: AsFd>(
- fd: Fd,
- buf: &[u8],
- flags: SendFlags,
- addr: &SocketAddrUnix,
-) -> io::Result<usize> {
- backend::net::syscalls::sendto_unix(fd.as_fd(), buf, flags, addr)
-}
-
-// TODO: `recvmsg`, `sendmsg`
diff --git a/vendor/rustix-0.37.6/src/net/socket.rs b/vendor/rustix-0.37.6/src/net/socket.rs
deleted file mode 100644
index 5840d39ff..000000000
--- a/vendor/rustix-0.37.6/src/net/socket.rs
+++ /dev/null
@@ -1,441 +0,0 @@
-use crate::fd::OwnedFd;
-use crate::net::{SocketAddr, SocketAddrAny, SocketAddrV4, SocketAddrV6};
-use crate::{backend, io};
-use backend::fd::{AsFd, BorrowedFd};
-
-#[cfg(unix)]
-pub use backend::net::addr::SocketAddrUnix;
-pub use backend::net::types::{
- AcceptFlags, AddressFamily, Protocol, Shutdown, SocketFlags, SocketType,
-};
-
-impl Default for Protocol {
- #[inline]
- fn default() -> Self {
- Self::IP
- }
-}
-
-/// `socket(domain, type_, protocol)`—Creates a socket.
-///
-/// POSIX guarantees that `socket` will use the lowest unused file descriptor,
-/// however it is not safe in general to rely on this, as file descriptors may
-/// be unexpectedly allocated on other threads or in libraries.
-///
-/// To pass extra flags such as [`SocketFlags::CLOEXEC`], use [`socket_with`].
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/socket.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/socket.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/socket.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-socket
-#[inline]
-pub fn socket(domain: AddressFamily, type_: SocketType, protocol: Protocol) -> io::Result<OwnedFd> {
- backend::net::syscalls::socket(domain, type_, protocol)
-}
-
-/// `socket_with(domain, type_ | flags, protocol)`—Creates a socket, with
-/// flags.
-///
-/// POSIX guarantees that `socket` will use the lowest unused file descriptor,
-/// however it is not safe in general to rely on this, as file descriptors may
-/// be unexpectedly allocated on other threads or in libraries.
-///
-/// `socket_with` is the same as [`socket`] but adds an additional flags
-/// operand.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/socket.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/socket.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/socket.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-socket
-#[inline]
-pub fn socket_with(
- domain: AddressFamily,
- type_: SocketType,
- flags: SocketFlags,
- protocol: Protocol,
-) -> io::Result<OwnedFd> {
- backend::net::syscalls::socket_with(domain, type_, flags, protocol)
-}
-
-/// `bind(sockfd, addr)`—Binds a socket to an IP address.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/bind.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/bind.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/bind.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-bind
-pub fn bind<Fd: AsFd>(sockfd: Fd, addr: &SocketAddr) -> io::Result<()> {
- _bind(sockfd.as_fd(), addr)
-}
-
-fn _bind(sockfd: BorrowedFd<'_>, addr: &SocketAddr) -> io::Result<()> {
- match addr {
- SocketAddr::V4(v4) => backend::net::syscalls::bind_v4(sockfd, v4),
- SocketAddr::V6(v6) => backend::net::syscalls::bind_v6(sockfd, v6),
- }
-}
-
-/// `bind(sockfd, addr)`—Binds a socket to an address.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/bind.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/bind.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/bind.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-bind
-#[doc(alias = "bind")]
-pub fn bind_any<Fd: AsFd>(sockfd: Fd, addr: &SocketAddrAny) -> io::Result<()> {
- _bind_any(sockfd.as_fd(), addr)
-}
-
-fn _bind_any(sockfd: BorrowedFd<'_>, addr: &SocketAddrAny) -> io::Result<()> {
- match addr {
- SocketAddrAny::V4(v4) => backend::net::syscalls::bind_v4(sockfd, v4),
- SocketAddrAny::V6(v6) => backend::net::syscalls::bind_v6(sockfd, v6),
- #[cfg(unix)]
- SocketAddrAny::Unix(unix) => backend::net::syscalls::bind_unix(sockfd, unix),
- }
-}
-
-/// `bind(sockfd, addr, sizeof(struct sockaddr_in))`—Binds a socket to an
-/// IPv4 address.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/bind.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/bind.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/bind.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-bind
-#[inline]
-#[doc(alias = "bind")]
-pub fn bind_v4<Fd: AsFd>(sockfd: Fd, addr: &SocketAddrV4) -> io::Result<()> {
- backend::net::syscalls::bind_v4(sockfd.as_fd(), addr)
-}
-
-/// `bind(sockfd, addr, sizeof(struct sockaddr_in6))`—Binds a socket to an
-/// IPv6 address.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/bind.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/bind.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/bind.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-bind
-#[inline]
-#[doc(alias = "bind")]
-pub fn bind_v6<Fd: AsFd>(sockfd: Fd, addr: &SocketAddrV6) -> io::Result<()> {
- backend::net::syscalls::bind_v6(sockfd.as_fd(), addr)
-}
-
-/// `bind(sockfd, addr, sizeof(struct sockaddr_un))`—Binds a socket to a
-/// Unix-domain address.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/bind.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/bind.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/bind.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-bind
-#[cfg(unix)]
-#[inline]
-#[doc(alias = "bind")]
-pub fn bind_unix<Fd: AsFd>(sockfd: Fd, addr: &SocketAddrUnix) -> io::Result<()> {
- backend::net::syscalls::bind_unix(sockfd.as_fd(), addr)
-}
-
-/// `connect(sockfd, addr)`—Initiates a connection to an IP address.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/connect.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/connect.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/connect.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-connect
-pub fn connect<Fd: AsFd>(sockfd: Fd, addr: &SocketAddr) -> io::Result<()> {
- _connect(sockfd.as_fd(), addr)
-}
-
-fn _connect(sockfd: BorrowedFd<'_>, addr: &SocketAddr) -> io::Result<()> {
- match addr {
- SocketAddr::V4(v4) => backend::net::syscalls::connect_v4(sockfd, v4),
- SocketAddr::V6(v6) => backend::net::syscalls::connect_v6(sockfd, v6),
- }
-}
-
-/// `connect(sockfd, addr)`—Initiates a connection.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/connect.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/connect.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/connect.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-connect
-#[doc(alias = "connect")]
-pub fn connect_any<Fd: AsFd>(sockfd: Fd, addr: &SocketAddrAny) -> io::Result<()> {
- _connect_any(sockfd.as_fd(), addr)
-}
-
-fn _connect_any(sockfd: BorrowedFd<'_>, addr: &SocketAddrAny) -> io::Result<()> {
- match addr {
- SocketAddrAny::V4(v4) => backend::net::syscalls::connect_v4(sockfd, v4),
- SocketAddrAny::V6(v6) => backend::net::syscalls::connect_v6(sockfd, v6),
- #[cfg(unix)]
- SocketAddrAny::Unix(unix) => backend::net::syscalls::connect_unix(sockfd, unix),
- }
-}
-
-/// `connect(sockfd, addr, sizeof(struct sockaddr_in))`—Initiates a
-/// connection to an IPv4 address.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/connect.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/connect.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/connect.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-connect
-#[inline]
-#[doc(alias = "connect")]
-pub fn connect_v4<Fd: AsFd>(sockfd: Fd, addr: &SocketAddrV4) -> io::Result<()> {
- backend::net::syscalls::connect_v4(sockfd.as_fd(), addr)
-}
-
-/// `connect(sockfd, addr, sizeof(struct sockaddr_in6))`—Initiates a
-/// connection to an IPv6 address.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/connect.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/connect.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/connect.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-connect
-#[inline]
-#[doc(alias = "connect")]
-pub fn connect_v6<Fd: AsFd>(sockfd: Fd, addr: &SocketAddrV6) -> io::Result<()> {
- backend::net::syscalls::connect_v6(sockfd.as_fd(), addr)
-}
-
-/// `connect(sockfd, addr, sizeof(struct sockaddr_un))`—Initiates a
-/// connection to a Unix-domain address.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/connect.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/connect.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/connect.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-connect
-#[cfg(unix)]
-#[inline]
-#[doc(alias = "connect")]
-pub fn connect_unix<Fd: AsFd>(sockfd: Fd, addr: &SocketAddrUnix) -> io::Result<()> {
- backend::net::syscalls::connect_unix(sockfd.as_fd(), addr)
-}
-
-/// `listen(fd, backlog)`—Enables listening for incoming connections.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/listen.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/listen.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/listen.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-listen
-#[inline]
-pub fn listen<Fd: AsFd>(sockfd: Fd, backlog: i32) -> io::Result<()> {
- backend::net::syscalls::listen(sockfd.as_fd(), backlog)
-}
-
-/// `accept(fd, NULL, NULL)`—Accepts an incoming connection.
-///
-/// Use [`acceptfrom`] to retrieve the peer address.
-///
-/// POSIX guarantees that `accept` will use the lowest unused file descriptor,
-/// however it is not safe in general to rely on this, as file descriptors may
-/// be unexpectedly allocated on other threads or in libraries.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/accept.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/accept.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/accept.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-accept
-#[inline]
-#[doc(alias = "accept4")]
-pub fn accept<Fd: AsFd>(sockfd: Fd) -> io::Result<OwnedFd> {
- backend::net::syscalls::accept(sockfd.as_fd())
-}
-
-/// `accept4(fd, NULL, NULL, flags)`—Accepts an incoming connection, with
-/// flags.
-///
-/// Use [`acceptfrom_with`] to retrieve the peer address.
-///
-/// Even though POSIX guarantees that this will use the lowest unused file
-/// descriptor, it is not safe in general to rely on this, as file descriptors
-/// may be unexpectedly allocated on other threads or in libraries.
-///
-/// `accept_with` is the same as [`accept`] but adds an additional flags
-/// operand.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/accept4.2.html
-#[inline]
-#[doc(alias = "accept4")]
-pub fn accept_with<Fd: AsFd>(sockfd: Fd, flags: AcceptFlags) -> io::Result<OwnedFd> {
- backend::net::syscalls::accept_with(sockfd.as_fd(), flags)
-}
-
-/// `accept(fd, &addr, &len)`—Accepts an incoming connection and returns the
-/// peer address.
-///
-/// Use [`accept`] if the peer address isn't needed.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/accept.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/accept.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/accept.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-accept
-#[inline]
-#[doc(alias = "accept4")]
-pub fn acceptfrom<Fd: AsFd>(sockfd: Fd) -> io::Result<(OwnedFd, Option<SocketAddrAny>)> {
- backend::net::syscalls::acceptfrom(sockfd.as_fd())
-}
-
-/// `accept4(fd, &addr, &len, flags)`—Accepts an incoming connection and
-/// returns the peer address, with flags.
-///
-/// Use [`accept_with`] if the peer address isn't needed.
-///
-/// `acceptfrom_with` is the same as [`acceptfrom`] but adds an additional
-/// flags operand.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/accept4.2.html
-#[inline]
-#[doc(alias = "accept4")]
-pub fn acceptfrom_with<Fd: AsFd>(
- sockfd: Fd,
- flags: AcceptFlags,
-) -> io::Result<(OwnedFd, Option<SocketAddrAny>)> {
- backend::net::syscalls::acceptfrom_with(sockfd.as_fd(), flags)
-}
-
-/// `shutdown(fd, how)`—Closes the read and/or write sides of a stream.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/shutdown.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/shutdown.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/shutdown.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-shutdown
-#[inline]
-pub fn shutdown<Fd: AsFd>(sockfd: Fd, how: Shutdown) -> io::Result<()> {
- backend::net::syscalls::shutdown(sockfd.as_fd(), how)
-}
-
-/// `getsockname(fd, addr, len)`—Returns the address a socket is bound to.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockname.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/getsockname.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockname.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockname
-#[inline]
-pub fn getsockname<Fd: AsFd>(sockfd: Fd) -> io::Result<SocketAddrAny> {
- backend::net::syscalls::getsockname(sockfd.as_fd())
-}
-
-/// `getpeername(fd, addr, len)`—Returns the address a socket is connected
-/// to.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-/// - [Winsock2]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getpeername.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/getpeername.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getpeername.2.html
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getpeername
-#[inline]
-pub fn getpeername<Fd: AsFd>(sockfd: Fd) -> io::Result<Option<SocketAddrAny>> {
- backend::net::syscalls::getpeername(sockfd.as_fd())
-}
diff --git a/vendor/rustix-0.37.6/src/net/socket_addr_any.rs b/vendor/rustix-0.37.6/src/net/socket_addr_any.rs
deleted file mode 100644
index 403ad11c2..000000000
--- a/vendor/rustix-0.37.6/src/net/socket_addr_any.rs
+++ /dev/null
@@ -1,103 +0,0 @@
-//! A socket address for any kind of socket.
-//!
-//! This is similar to [`std::net::SocketAddr`], but also supports Unix-domain
-//! socket addresses.
-//!
-//! # Safety
-//!
-//! The `read` and `write` functions allow decoding and encoding from and to
-//! OS-specific socket address representations in memory.
-#![allow(unsafe_code)]
-
-#[cfg(unix)]
-use crate::net::SocketAddrUnix;
-use crate::net::{AddressFamily, SocketAddrV4, SocketAddrV6};
-use crate::{backend, io};
-#[cfg(feature = "std")]
-use core::fmt;
-
-pub use backend::net::addr::SocketAddrStorage;
-
-/// `struct sockaddr_storage` as a Rust enum.
-#[derive(Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
-#[doc(alias = "sockaddr")]
-#[non_exhaustive]
-pub enum SocketAddrAny {
- /// `struct sockaddr_in`
- V4(SocketAddrV4),
- /// `struct sockaddr_in6`
- V6(SocketAddrV6),
- /// `struct sockaddr_un`
- #[cfg(unix)]
- Unix(SocketAddrUnix),
-}
-
-impl From<SocketAddrV4> for SocketAddrAny {
- #[inline]
- fn from(from: SocketAddrV4) -> Self {
- Self::V4(from)
- }
-}
-
-impl From<SocketAddrV6> for SocketAddrAny {
- #[inline]
- fn from(from: SocketAddrV6) -> Self {
- Self::V6(from)
- }
-}
-
-#[cfg(unix)]
-impl From<SocketAddrUnix> for SocketAddrAny {
- #[inline]
- fn from(from: SocketAddrUnix) -> Self {
- Self::Unix(from)
- }
-}
-
-impl SocketAddrAny {
- /// Return the address family of this socket address.
- #[inline]
- pub const fn address_family(&self) -> AddressFamily {
- match self {
- Self::V4(_) => AddressFamily::INET,
- Self::V6(_) => AddressFamily::INET6,
- #[cfg(unix)]
- Self::Unix(_) => AddressFamily::UNIX,
- }
- }
-
- /// Writes a platform-specific encoding of this socket address to
- /// the memory pointed to by `storage`, and returns the number of
- /// bytes used.
- ///
- /// # Safety
- ///
- /// `storage` must point to valid memory for encoding the socket
- /// address.
- pub unsafe fn write(&self, storage: *mut SocketAddrStorage) -> usize {
- backend::net::write_sockaddr::write_sockaddr(self, storage)
- }
-
- /// Reads a platform-specific encoding of a socket address from
- /// the memory pointed to by `storage`, which uses `len` bytes.
- ///
- /// # Safety
- ///
- /// `storage` must point to valid memory for decoding a socket
- /// address.
- pub unsafe fn read(storage: *const SocketAddrStorage, len: usize) -> io::Result<Self> {
- backend::net::read_sockaddr::read_sockaddr(storage, len)
- }
-}
-
-#[cfg(feature = "std")]
-impl fmt::Debug for SocketAddrAny {
- fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
- match self {
- Self::V4(v4) => v4.fmt(fmt),
- Self::V6(v6) => v6.fmt(fmt),
- #[cfg(unix)]
- Self::Unix(unix) => unix.fmt(fmt),
- }
- }
-}
diff --git a/vendor/rustix-0.37.6/src/net/socketpair.rs b/vendor/rustix-0.37.6/src/net/socketpair.rs
deleted file mode 100644
index 4a9568ce7..000000000
--- a/vendor/rustix-0.37.6/src/net/socketpair.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-use crate::fd::OwnedFd;
-use crate::net::{AddressFamily, Protocol, SocketFlags, SocketType};
-use crate::{backend, io};
-
-/// `socketpair(domain, type_ | accept_flags, protocol)`
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/socketpair.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/socketpair.2.html
-#[inline]
-pub fn socketpair(
- domain: AddressFamily,
- type_: SocketType,
- flags: SocketFlags,
- protocol: Protocol,
-) -> io::Result<(OwnedFd, OwnedFd)> {
- backend::net::syscalls::socketpair(domain, type_, flags, protocol)
-}
diff --git a/vendor/rustix-0.37.6/src/net/sockopt.rs b/vendor/rustix-0.37.6/src/net/sockopt.rs
deleted file mode 100644
index ffdc67942..000000000
--- a/vendor/rustix-0.37.6/src/net/sockopt.rs
+++ /dev/null
@@ -1,712 +0,0 @@
-//! `getsockopt` and `setsockopt` functions.
-//!
-//! In the rustix API, there is a separate function for each option, so that
-//! it can be given an option-specific type signature.
-
-#![doc(alias = "getsockopt")]
-#![doc(alias = "setsockopt")]
-
-use crate::net::{Ipv4Addr, Ipv6Addr, SocketType};
-use crate::{backend, io};
-use backend::fd::AsFd;
-use core::time::Duration;
-
-pub use backend::net::types::Timeout;
-
-/// `getsockopt(fd, SOL_SOCKET, SO_TYPE)`—Returns the type of a socket.
-///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-#[inline]
-#[doc(alias = "SO_TYPE")]
-pub fn get_socket_type<Fd: AsFd>(fd: Fd) -> io::Result<SocketType> {
- backend::net::syscalls::sockopt::get_socket_type(fd.as_fd())
-}
-
-/// `setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, value)`
-///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-#[inline]
-#[doc(alias = "SO_REUSEADDR")]
-pub fn set_socket_reuseaddr<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_socket_reuseaddr(fd.as_fd(), value)
-}
-
-/// `setsockopt(fd, SOL_SOCKET, SO_BROADCAST, broadcast)`
-///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-#[inline]
-#[doc(alias = "SO_BROADCAST")]
-pub fn set_socket_broadcast<Fd: AsFd>(fd: Fd, broadcast: bool) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_socket_broadcast(fd.as_fd(), broadcast)
-}
-
-/// `getsockopt(fd, SOL_SOCKET, SO_BROADCAST)`
-///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-#[inline]
-#[doc(alias = "SO_BROADCAST")]
-pub fn get_socket_broadcast<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
- backend::net::syscalls::sockopt::get_socket_broadcast(fd.as_fd())
-}
-
-/// `setsockopt(fd, SOL_SOCKET, SO_LINGER, linger)`
-///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-#[inline]
-#[doc(alias = "SO_LINGER")]
-pub fn set_socket_linger<Fd: AsFd>(fd: Fd, linger: Option<Duration>) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_socket_linger(fd.as_fd(), linger)
-}
-
-/// `getsockopt(fd, SOL_SOCKET, SO_LINGER)`
-///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-#[inline]
-#[doc(alias = "SO_LINGER")]
-pub fn get_socket_linger<Fd: AsFd>(fd: Fd) -> io::Result<Option<Duration>> {
- backend::net::syscalls::sockopt::get_socket_linger(fd.as_fd())
-}
-
-/// `setsockopt(fd, SOL_SOCKET, SO_PASSCRED, passcred)`
-///
-/// # References
-/// - [Linux `setsockopt`]
-/// - [Linux `socket`]
-///
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-#[doc(alias = "SO_PASSCRED")]
-pub fn set_socket_passcred<Fd: AsFd>(fd: Fd, passcred: bool) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_socket_passcred(fd.as_fd(), passcred)
-}
-
-/// `getsockopt(fd, SOL_SOCKET, SO_PASSCRED)`
-///
-/// # References
-/// - [Linux `getsockopt`]
-/// - [Linux `socket`]
-///
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-#[doc(alias = "SO_PASSCRED")]
-pub fn get_socket_passcred<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
- backend::net::syscalls::sockopt::get_socket_passcred(fd.as_fd())
-}
-
-/// `setsockopt(fd, SOL_SOCKET, id, timeout)`—Set the sending
-/// or receiving timeout.
-///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-#[inline]
-#[doc(alias = "SO_RCVTIMEO")]
-#[doc(alias = "SO_SNDTIMEO")]
-pub fn set_socket_timeout<Fd: AsFd>(
- fd: Fd,
- id: Timeout,
- timeout: Option<Duration>,
-) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_socket_timeout(fd.as_fd(), id, timeout)
-}
-
-/// `getsockopt(fd, SOL_SOCKET, id)`—Get the sending or receiving timeout.
-///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-#[inline]
-#[doc(alias = "SO_RCVTIMEO")]
-#[doc(alias = "SO_SNDTIMEO")]
-pub fn get_socket_timeout<Fd: AsFd>(fd: Fd, id: Timeout) -> io::Result<Option<Duration>> {
- backend::net::syscalls::sockopt::get_socket_timeout(fd.as_fd(), id)
-}
-
-/// `getsockopt(fd, SOL_SOCKET, SO_ERROR)`
-///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-#[inline]
-#[doc(alias = "SO_ERROR")]
-pub fn get_socket_error<Fd: AsFd>(fd: Fd) -> io::Result<Result<(), crate::io::Errno>> {
- backend::net::syscalls::sockopt::get_socket_error(fd.as_fd())
-}
-
-/// `setsockopt(fd, IPPROTO_IP, IP_TTL, ttl)`
-///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `ip`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `IPPROTO_IP` options]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `ip`]: https://man7.org/linux/man-pages/man7/ip.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_IP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options
-#[inline]
-#[doc(alias = "IP_TTL")]
-pub fn set_ip_ttl<Fd: AsFd>(fd: Fd, ttl: u32) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_ip_ttl(fd.as_fd(), ttl)
-}
-
-/// `getsockopt(fd, IPPROTO_IP, IP_TTL)`
-///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `ip`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `IPPROTO_IPV6` options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `ip`]: https://man7.org/linux/man-pages/man7/ip.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `IPPROTO_IP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options
-#[inline]
-#[doc(alias = "IP_TTL")]
-pub fn get_ip_ttl<Fd: AsFd>(fd: Fd) -> io::Result<u32> {
- backend::net::syscalls::sockopt::get_ip_ttl(fd.as_fd())
-}
-
-/// `setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, only_v6)`
-///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `ipv6`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `IPPROTO_IPV6` options]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `ipv6`]: https://man7.org/linux/man-pages/man7/ipv6.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_IPV6` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-options
-#[inline]
-#[doc(alias = "IPV6_V6ONLY")]
-pub fn set_ipv6_v6only<Fd: AsFd>(fd: Fd, only_v6: bool) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_ipv6_v6only(fd.as_fd(), only_v6)
-}
-
-/// `getsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY)`
-///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `ipv6`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `IPPROTO_IPV6` options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `ipv6`]: https://man7.org/linux/man-pages/man7/ipv6.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `IPPROTO_IPV6` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-options
-#[inline]
-#[doc(alias = "IPV6_V6ONLY")]
-pub fn get_ipv6_v6only<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
- backend::net::syscalls::sockopt::get_ipv6_v6only(fd.as_fd())
-}
-
-/// `setsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP, multicast_loop)`
-///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `ip`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `IPPROTO_IP` options]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `ip`]: https://man7.org/linux/man-pages/man7/ip.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_IP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options
-#[inline]
-#[doc(alias = "IP_MULTICAST_LOOP")]
-pub fn set_ip_multicast_loop<Fd: AsFd>(fd: Fd, multicast_loop: bool) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_ip_multicast_loop(fd.as_fd(), multicast_loop)
-}
-
-/// `getsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP)`
-///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `ip`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `IPPROTO_IP` options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `ip`]: https://man7.org/linux/man-pages/man7/ip.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `IPPROTO_IP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options
-#[inline]
-#[doc(alias = "IP_MULTICAST_LOOP")]
-pub fn get_ip_multicast_loop<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
- backend::net::syscalls::sockopt::get_ip_multicast_loop(fd.as_fd())
-}
-
-/// `setsockopt(fd, IPPROTO_IP, IP_MULTICAST_TTL, multicast_ttl)`
-///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `ip`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `IPPROTO_IP` options]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `ip`]: https://man7.org/linux/man-pages/man7/ip.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_IP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options
-#[inline]
-#[doc(alias = "IP_MULTICAST_TTL")]
-pub fn set_ip_multicast_ttl<Fd: AsFd>(fd: Fd, multicast_ttl: u32) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_ip_multicast_ttl(fd.as_fd(), multicast_ttl)
-}
-
-/// `getsockopt(fd, IPPROTO_IP, IP_MULTICAST_TTL)`
-///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `ip`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `IPPROTO_IP` options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `ip`]: https://man7.org/linux/man-pages/man7/ip.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `IPPROTO_IP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options
-#[inline]
-#[doc(alias = "IP_MULTICAST_TTL")]
-pub fn get_ip_multicast_ttl<Fd: AsFd>(fd: Fd) -> io::Result<u32> {
- backend::net::syscalls::sockopt::get_ip_multicast_ttl(fd.as_fd())
-}
-
-/// `setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, multicast_loop)`
-///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `ipv6`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `IPPROTO_IPV6` options]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `ipv6`]: https://man7.org/linux/man-pages/man7/ipv6.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_IPV6` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-options
-#[inline]
-#[doc(alias = "IPV6_MULTICAST_LOOP")]
-pub fn set_ipv6_multicast_loop<Fd: AsFd>(fd: Fd, multicast_loop: bool) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_ipv6_multicast_loop(fd.as_fd(), multicast_loop)
-}
-
-/// `getsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP)`
-///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `ipv6`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `IPPROTO_IPV6` options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `ipv6`]: https://man7.org/linux/man-pages/man7/ipv6.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `IPPROTO_IPV6` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-options
-#[inline]
-#[doc(alias = "IPV6_MULTICAST_LOOP")]
-pub fn get_ipv6_multicast_loop<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
- backend::net::syscalls::sockopt::get_ipv6_multicast_loop(fd.as_fd())
-}
-
-/// `setsockopt(fd, IPPROTO_IP, IPV6_MULTICAST_HOPS, multicast_hops)`
-///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `ipv6`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `IPPROTO_IPV6` options]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `ipv6`]: https://man7.org/linux/man-pages/man7/ipv6.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_IPV6` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-options
-#[inline]
-#[doc(alias = "IP_MULTICAST_TTL")]
-pub fn set_ipv6_multicast_hops<Fd: AsFd>(fd: Fd, multicast_hops: u32) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_ipv6_multicast_hops(fd.as_fd(), multicast_hops)
-}
-
-/// `getsockopt(fd, IPPROTO_IP, IPV6_MULTICAST_HOPS)`
-///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `ipv6`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `IPPROTO_IPV6` options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `ipv6`]: https://man7.org/linux/man-pages/man7/ipv6.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `IPPROTO_IPV6` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-options
-#[inline]
-#[doc(alias = "IP_MULTICAST_TTL")]
-pub fn get_ipv6_multicast_hops<Fd: AsFd>(fd: Fd) -> io::Result<u32> {
- backend::net::syscalls::sockopt::get_ipv6_multicast_hops(fd.as_fd())
-}
-
-/// `setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, multiaddr, interface)`
-///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `ip`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `IPPROTO_IP` options]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `ip`]: https://man7.org/linux/man-pages/man7/ip.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_IP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options
-#[inline]
-#[doc(alias = "IP_ADD_MEMBERSHIP")]
-pub fn set_ip_add_membership<Fd: AsFd>(
- fd: Fd,
- multiaddr: &Ipv4Addr,
- interface: &Ipv4Addr,
-) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_ip_add_membership(fd.as_fd(), multiaddr, interface)
-}
-
-/// `setsockopt(fd, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP, multiaddr, interface)`
-///
-/// `IPV6_ADD_MEMBERSHIP` is the same as `IPV6_JOIN_GROUP` in POSIX.
-///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `ipv6]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `IPPROTO_IPV6` options]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `ipv6`]: https://man7.org/linux/man-pages/man7/ipv6.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_IPV6` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-options
-#[inline]
-#[doc(alias = "IPV6_JOIN_GROUP")]
-#[doc(alias = "IPV6_ADD_MEMBERSHIP")]
-pub fn set_ipv6_add_membership<Fd: AsFd>(
- fd: Fd,
- multiaddr: &Ipv6Addr,
- interface: u32,
-) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_ipv6_add_membership(fd.as_fd(), multiaddr, interface)
-}
-
-/// `setsockopt(fd, IPPROTO_IP, IP_DROP_MEMBERSHIP, multiaddr, interface)`
-///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `ip`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `IPPROTO_IP` options]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `ip`]: https://man7.org/linux/man-pages/man7/ip.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_IP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options
-#[inline]
-#[doc(alias = "IP_DROP_MEMBERSHIP")]
-pub fn set_ip_drop_membership<Fd: AsFd>(
- fd: Fd,
- multiaddr: &Ipv4Addr,
- interface: &Ipv4Addr,
-) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_ip_drop_membership(fd.as_fd(), multiaddr, interface)
-}
-
-/// `setsockopt(fd, IPPROTO_IPV6, IPV6_DROP_MEMBERSHIP, multiaddr, interface)`
-///
-/// `IPV6_DROP_MEMBERSHIP` is the same as `IPV6_LEAVE_GROUP` in POSIX.
-///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `ipv6`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `IPPROTO_IPV6` options]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `ipv6`]: https://man7.org/linux/man-pages/man7/ipv6.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_IPV6` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-options
-#[inline]
-#[doc(alias = "IPV6_LEAVE_GROUP")]
-#[doc(alias = "IPV6_DROP_MEMBERSHIP")]
-pub fn set_ipv6_drop_membership<Fd: AsFd>(
- fd: Fd,
- multiaddr: &Ipv6Addr,
- interface: u32,
-) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_ipv6_drop_membership(fd.as_fd(), multiaddr, interface)
-}
-
-/// `setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, nodelay)`
-///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `netinet/tcp.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `tcp`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `IPPROTO_TCP` options]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `netinet/tcp.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_tcp.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `tcp`]: https://man7.org/linux/man-pages/man7/tcp.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_TCP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-tcp-socket-options
-#[inline]
-#[doc(alias = "TCP_NODELAY")]
-pub fn set_tcp_nodelay<Fd: AsFd>(fd: Fd, nodelay: bool) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_tcp_nodelay(fd.as_fd(), nodelay)
-}
-
-/// `getsockopt(fd, IPPROTO_TCP, TCP_NODELAY)`
-///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `netinet/tcp.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `tcp`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `IPPROTO_TCP` options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `netinet/tcp.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_tcp.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `tcp`]: https://man7.org/linux/man-pages/man7/tcp.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_TCP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-tcp-socket-options
-#[inline]
-#[doc(alias = "TCP_NODELAY")]
-pub fn get_tcp_nodelay<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
- backend::net::syscalls::sockopt::get_tcp_nodelay(fd.as_fd())
-}
-
-/// `getsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE)`
-///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `netinet/tcp.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `tcp`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `IPPROTO_TCP` options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `netinet/tcp.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_tcp.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `tcp`]: https://man7.org/linux/man-pages/man7/tcp.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_TCP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-tcp-socket-options
-#[cfg(any(apple, target_os = "freebsd"))]
-#[doc(alias = "SO_NOSIGPIPE")]
-#[inline]
-pub fn getsockopt_nosigpipe<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
- backend::net::syscalls::sockopt::getsockopt_nosigpipe(fd.as_fd())
-}
-
-/// `setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, val)`
-///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `netinet/tcp.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `tcp`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `IPPROTO_TCP` options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `netinet/tcp.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_tcp.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `tcp`]: https://man7.org/linux/man-pages/man7/tcp.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_TCP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-tcp-socket-options
-#[cfg(any(apple, target_os = "freebsd"))]
-#[doc(alias = "SO_NOSIGPIPE")]
-#[inline]
-pub fn setsockopt_nosigpipe<Fd: AsFd>(fd: Fd, val: bool) -> io::Result<()> {
- backend::net::syscalls::sockopt::setsockopt_nosigpipe(fd.as_fd(), val)
-}
diff --git a/vendor/rustix-0.37.6/src/net/wsa.rs b/vendor/rustix-0.37.6/src/net/wsa.rs
deleted file mode 100644
index 3367ca95c..000000000
--- a/vendor/rustix-0.37.6/src/net/wsa.rs
+++ /dev/null
@@ -1,49 +0,0 @@
-use crate::io;
-use core::mem::MaybeUninit;
-use windows_sys::Win32::Networking::WinSock::{WSACleanup, WSAGetLastError, WSAStartup, WSADATA};
-
-/// `WSAStartup()`—Initialize process-wide Windows support for sockets.
-///
-/// On Windows, it's necessary to initialize the sockets subsystem before
-/// using sockets APIs. The function performs the necessary initialization.
-///
-/// # References
-/// - [Winsock2]
-///
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsastartup
-pub fn wsa_startup() -> io::Result<WSADATA> {
- // Request version 2.2, which has been the latest version since far older
- // versions of Windows than we support here. For more information about
- // the version, see [here].
- //
- // [here]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsastartup#remarks
- let version = 0x202;
- let mut data = MaybeUninit::uninit();
- unsafe {
- let ret = WSAStartup(version, data.as_mut_ptr());
- if ret == 0 {
- Ok(data.assume_init())
- } else {
- Err(io::Errno::from_raw_os_error(WSAGetLastError()))
- }
- }
-}
-
-/// `WSACleanup()`—Clean up process-wide Windows support for sockets.
-///
-/// In a program where `init` is called, if sockets are no longer necessary,
-/// this function releases associated resources.
-///
-/// # References
-/// - [Winsock2]
-///
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsacleanup
-pub fn wsa_cleanup() -> io::Result<()> {
- unsafe {
- if WSACleanup() == 0 {
- Ok(())
- } else {
- Err(io::Errno::from_raw_os_error(WSAGetLastError()))
- }
- }
-}
diff --git a/vendor/rustix-0.37.6/src/param/auxv.rs b/vendor/rustix-0.37.6/src/param/auxv.rs
deleted file mode 100644
index 03be2a29d..000000000
--- a/vendor/rustix-0.37.6/src/param/auxv.rs
+++ /dev/null
@@ -1,96 +0,0 @@
-use crate::backend;
-#[cfg(any(
- linux_raw,
- all(
- libc,
- any(
- all(target_os = "android", target_pointer_width = "64"),
- target_os = "linux",
- )
- )
-))]
-use crate::ffi::CStr;
-
-/// `sysconf(_SC_PAGESIZE)`—Returns the process' page size.
-///
-/// Also known as `getpagesize`.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux `sysconf`]
-/// - [Linux `getpagesize`]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/sysconf.html
-/// [Linux `sysconf`]: https://man7.org/linux/man-pages/man3/sysconf.3.html
-/// [Linux `getpagesize`]: https://man7.org/linux/man-pages/man2/getpagesize.2.html
-#[inline]
-#[doc(alias = "_SC_PAGESIZE")]
-#[doc(alias = "_SC_PAGE_SIZE")]
-#[doc(alias = "getpagesize")]
-pub fn page_size() -> usize {
- backend::param::auxv::page_size()
-}
-
-/// `sysconf(_SC_CLK_TCK)`—Returns the process' clock ticks per second.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/sysconf.html
-/// [Linux]: https://man7.org/linux/man-pages/man3/sysconf.3.html
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-#[doc(alias = "_SC_CLK_TCK")]
-pub fn clock_ticks_per_second() -> u64 {
- backend::param::auxv::clock_ticks_per_second()
-}
-
-/// `(getauxval(AT_HWCAP), getauxval(AT_HWCAP2)`—Returns the Linux "hwcap"
-/// data.
-///
-/// Return the Linux `AT_HWCAP` and `AT_HWCAP2` values passed to the
-/// current process. Returns 0 for each value if it is not available.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man3/getauxval.3.html
-#[cfg(any(
- linux_raw,
- all(
- libc,
- any(
- all(target_os = "android", target_pointer_width = "64"),
- target_os = "linux",
- )
- )
-))]
-#[inline]
-pub fn linux_hwcap() -> (usize, usize) {
- backend::param::auxv::linux_hwcap()
-}
-
-/// `getauxval(AT_EXECFN)`—Returns the Linux "execfn" string.
-///
-/// Return the string that Linux has recorded as the filesystem path to the
-/// executable. Returns an empty string if the string is not available.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man3/getauxval.3.html
-#[cfg(any(
- linux_raw,
- all(
- libc,
- any(
- all(target_os = "android", target_pointer_width = "64"),
- target_os = "linux",
- )
- )
-))]
-#[inline]
-pub fn linux_execfn() -> &'static CStr {
- backend::param::auxv::linux_execfn()
-}
diff --git a/vendor/rustix-0.37.6/src/param/init.rs b/vendor/rustix-0.37.6/src/param/init.rs
deleted file mode 100644
index d261fabd2..000000000
--- a/vendor/rustix-0.37.6/src/param/init.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-//! rustix's `init` function.
-//!
-//! # Safety
-//!
-//! On mustang, or on any non-glibc non-musl platform, the `init` function must
-//! be called before any other function in this module. It is unsafe because it
-//! operates on raw pointers.
-#![allow(unsafe_code)]
-
-use crate::backend;
-
-/// Initialize process-wide state.
-///
-/// # Safety
-///
-/// This must be passed a pointer to the original environment variable block
-/// set up by the OS at process startup, and it must be called before any
-/// other rustix functions are called.
-#[inline]
-#[doc(hidden)]
-pub unsafe fn init(envp: *mut *mut u8) {
- backend::param::auxv::init(envp)
-}
diff --git a/vendor/rustix-0.37.6/src/param/mod.rs b/vendor/rustix-0.37.6/src/param/mod.rs
deleted file mode 100644
index c3838b62e..000000000
--- a/vendor/rustix-0.37.6/src/param/mod.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-//! Process parameters.
-//!
-//! These values correspond to `sysconf` in POSIX, and the auxv array in Linux.
-//! Despite the POSIX name “sysconfâ€, these aren't *system* configuration
-//! parameters; they're *process* configuration parameters, as they may differ
-//! between different processes on the same system.
-
-#[cfg(feature = "param")]
-mod auxv;
-#[cfg(target_vendor = "mustang")]
-mod init;
-
-#[cfg(feature = "param")]
-pub use auxv::*;
-#[cfg(target_vendor = "mustang")]
-pub use init::init;
diff --git a/vendor/rustix-0.37.6/src/path/arg.rs b/vendor/rustix-0.37.6/src/path/arg.rs
deleted file mode 100644
index 3d976ce3e..000000000
--- a/vendor/rustix-0.37.6/src/path/arg.rs
+++ /dev/null
@@ -1,983 +0,0 @@
-//! Convenient and efficient string argument passing.
-//!
-//! This module defines the `Arg` trait and implements it for several common
-//! string types. This allows users to pass any of these string types directly
-//! to rustix APIs with string arguments, and it allows rustix to implement
-//! NUL-termination without the need for copying where possible.
-
-use crate::ffi::{CStr, CString};
-use crate::io;
-#[cfg(feature = "itoa")]
-use crate::path::DecInt;
-use crate::path::SMALL_PATH_BUFFER_SIZE;
-use alloc::borrow::Cow;
-#[cfg(feature = "itoa")]
-use alloc::borrow::ToOwned;
-use alloc::string::String;
-use alloc::vec::Vec;
-use core::mem::MaybeUninit;
-use core::{ptr, slice, str};
-#[cfg(feature = "std")]
-use std::ffi::{OsStr, OsString};
-#[cfg(feature = "std")]
-#[cfg(target_os = "hermit")]
-use std::os::hermit::ext::ffi::{OsStrExt, OsStringExt};
-#[cfg(feature = "std")]
-#[cfg(unix)]
-use std::os::unix::ffi::{OsStrExt, OsStringExt};
-#[cfg(feature = "std")]
-#[cfg(target_os = "vxworks")]
-use std::os::vxworks::ext::ffi::{OsStrExt, OsStringExt};
-#[cfg(feature = "std")]
-#[cfg(target_os = "wasi")]
-use std::os::wasi::ffi::{OsStrExt, OsStringExt};
-#[cfg(feature = "std")]
-use std::path::{Component, Components, Iter, Path, PathBuf};
-
-/// A trait for passing path arguments.
-///
-/// This is similar to [`AsRef`]`<`[`Path`]`>`, but is implemented for more
-/// kinds of strings and can convert into more kinds of strings.
-///
-/// # Example
-///
-/// ```
-/// # #[cfg(any(feature = "fs", feature = "net"))]
-/// use rustix::ffi::CStr;
-/// use rustix::io;
-/// # #[cfg(any(feature = "fs", feature = "net"))]
-/// use rustix::path::Arg;
-///
-/// # #[cfg(any(feature = "fs", feature = "net"))]
-/// pub fn touch<P: Arg>(path: P) -> io::Result<()> {
-/// let path = path.into_c_str()?;
-/// _touch(&path)
-/// }
-///
-/// # #[cfg(any(feature = "fs", feature = "net"))]
-/// fn _touch(path: &CStr) -> io::Result<()> {
-/// // implementation goes here
-/// Ok(())
-/// }
-/// ```
-///
-/// Users can then call `touch("foo")`, `touch(cstr!("foo"))`,
-/// `touch(Path::new("foo"))`, or many other things.
-///
-/// [`AsRef`]: std::convert::AsRef
-pub trait Arg {
- /// Returns a view of this string as a string slice.
- fn as_str(&self) -> io::Result<&str>;
-
- /// Returns a potentially-lossy rendering of this string as a `Cow<'_,
- /// str>`.
- fn to_string_lossy(&self) -> Cow<'_, str>;
-
- /// Returns a view of this string as a maybe-owned [`CStr`].
- fn as_cow_c_str(&self) -> io::Result<Cow<'_, CStr>>;
-
- /// Consumes `self` and returns a view of this string as a maybe-owned
- /// [`CStr`].
- fn into_c_str<'b>(self) -> io::Result<Cow<'b, CStr>>
- where
- Self: 'b;
-
- /// Runs a closure with `self` passed in as a `&CStr`.
- fn into_with_c_str<T, F>(self, f: F) -> io::Result<T>
- where
- Self: Sized,
- F: FnOnce(&CStr) -> io::Result<T>;
-}
-
-impl Arg for &str {
- #[inline]
- fn as_str(&self) -> io::Result<&str> {
- Ok(self)
- }
-
- #[inline]
- fn to_string_lossy(&self) -> Cow<'_, str> {
- Cow::Borrowed(self)
- }
-
- #[inline]
- fn as_cow_c_str(&self) -> io::Result<Cow<'_, CStr>> {
- Ok(Cow::Owned(
- CString::new(*self).map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_c_str<'b>(self) -> io::Result<Cow<'b, CStr>>
- where
- Self: 'b,
- {
- Ok(Cow::Owned(
- CString::new(self).map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_with_c_str<T, F>(self, f: F) -> io::Result<T>
- where
- Self: Sized,
- F: FnOnce(&CStr) -> io::Result<T>,
- {
- with_c_str(self.as_bytes(), f)
- }
-}
-
-impl Arg for &String {
- #[inline]
- fn as_str(&self) -> io::Result<&str> {
- Ok(self)
- }
-
- #[inline]
- fn to_string_lossy(&self) -> Cow<'_, str> {
- Cow::Borrowed(self)
- }
-
- #[inline]
- fn as_cow_c_str(&self) -> io::Result<Cow<'_, CStr>> {
- Ok(Cow::Owned(
- CString::new(String::as_str(self)).map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_c_str<'b>(self) -> io::Result<Cow<'b, CStr>>
- where
- Self: 'b,
- {
- self.as_str().into_c_str()
- }
-
- #[inline]
- fn into_with_c_str<T, F>(self, f: F) -> io::Result<T>
- where
- Self: Sized,
- F: FnOnce(&CStr) -> io::Result<T>,
- {
- with_c_str(self.as_bytes(), f)
- }
-}
-
-impl Arg for String {
- #[inline]
- fn as_str(&self) -> io::Result<&str> {
- Ok(self)
- }
-
- #[inline]
- fn to_string_lossy(&self) -> Cow<'_, str> {
- Cow::Borrowed(self)
- }
-
- #[inline]
- fn as_cow_c_str(&self) -> io::Result<Cow<'_, CStr>> {
- Ok(Cow::Owned(
- CString::new(self.as_str()).map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_c_str<'b>(self) -> io::Result<Cow<'b, CStr>>
- where
- Self: 'b,
- {
- Ok(Cow::Owned(
- CString::new(self).map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_with_c_str<T, F>(self, f: F) -> io::Result<T>
- where
- Self: Sized,
- F: FnOnce(&CStr) -> io::Result<T>,
- {
- f(&CString::new(self).map_err(|_cstr_err| io::Errno::INVAL)?)
- }
-}
-
-#[cfg(feature = "std")]
-impl Arg for &OsStr {
- #[inline]
- fn as_str(&self) -> io::Result<&str> {
- self.to_str().ok_or(io::Errno::INVAL)
- }
-
- #[inline]
- fn to_string_lossy(&self) -> Cow<'_, str> {
- OsStr::to_string_lossy(self)
- }
-
- #[inline]
- fn as_cow_c_str(&self) -> io::Result<Cow<'_, CStr>> {
- Ok(Cow::Owned(
- CString::new(self.as_bytes()).map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_c_str<'b>(self) -> io::Result<Cow<'b, CStr>>
- where
- Self: 'b,
- {
- Ok(Cow::Owned(
- CString::new(self.as_bytes()).map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_with_c_str<T, F>(self, f: F) -> io::Result<T>
- where
- Self: Sized,
- F: FnOnce(&CStr) -> io::Result<T>,
- {
- with_c_str(self.as_bytes(), f)
- }
-}
-
-#[cfg(feature = "std")]
-impl Arg for &OsString {
- #[inline]
- fn as_str(&self) -> io::Result<&str> {
- OsString::as_os_str(self).to_str().ok_or(io::Errno::INVAL)
- }
-
- #[inline]
- fn to_string_lossy(&self) -> Cow<'_, str> {
- self.as_os_str().to_string_lossy()
- }
-
- #[inline]
- fn as_cow_c_str(&self) -> io::Result<Cow<'_, CStr>> {
- Ok(Cow::Owned(
- CString::new(OsString::as_os_str(self).as_bytes())
- .map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_c_str<'b>(self) -> io::Result<Cow<'b, CStr>>
- where
- Self: 'b,
- {
- self.as_os_str().into_c_str()
- }
-
- #[inline]
- fn into_with_c_str<T, F>(self, f: F) -> io::Result<T>
- where
- Self: Sized,
- F: FnOnce(&CStr) -> io::Result<T>,
- {
- with_c_str(self.as_bytes(), f)
- }
-}
-
-#[cfg(feature = "std")]
-impl Arg for OsString {
- #[inline]
- fn as_str(&self) -> io::Result<&str> {
- self.as_os_str().to_str().ok_or(io::Errno::INVAL)
- }
-
- #[inline]
- fn to_string_lossy(&self) -> Cow<'_, str> {
- self.as_os_str().to_string_lossy()
- }
-
- #[inline]
- fn as_cow_c_str(&self) -> io::Result<Cow<'_, CStr>> {
- Ok(Cow::Owned(
- CString::new(self.as_bytes()).map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_c_str<'b>(self) -> io::Result<Cow<'b, CStr>>
- where
- Self: 'b,
- {
- Ok(Cow::Owned(
- CString::new(self.into_vec()).map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_with_c_str<T, F>(self, f: F) -> io::Result<T>
- where
- Self: Sized,
- F: FnOnce(&CStr) -> io::Result<T>,
- {
- f(&CString::new(self.into_vec()).map_err(|_cstr_err| io::Errno::INVAL)?)
- }
-}
-
-#[cfg(feature = "std")]
-impl Arg for &Path {
- #[inline]
- fn as_str(&self) -> io::Result<&str> {
- self.as_os_str().to_str().ok_or(io::Errno::INVAL)
- }
-
- #[inline]
- fn to_string_lossy(&self) -> Cow<'_, str> {
- Path::to_string_lossy(self)
- }
-
- #[inline]
- fn as_cow_c_str(&self) -> io::Result<Cow<'_, CStr>> {
- Ok(Cow::Owned(
- CString::new(self.as_os_str().as_bytes()).map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_c_str<'b>(self) -> io::Result<Cow<'b, CStr>>
- where
- Self: 'b,
- {
- Ok(Cow::Owned(
- CString::new(self.as_os_str().as_bytes()).map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_with_c_str<T, F>(self, f: F) -> io::Result<T>
- where
- Self: Sized,
- F: FnOnce(&CStr) -> io::Result<T>,
- {
- with_c_str(self.as_os_str().as_bytes(), f)
- }
-}
-
-#[cfg(feature = "std")]
-impl Arg for &PathBuf {
- #[inline]
- fn as_str(&self) -> io::Result<&str> {
- PathBuf::as_path(self)
- .as_os_str()
- .to_str()
- .ok_or(io::Errno::INVAL)
- }
-
- #[inline]
- fn to_string_lossy(&self) -> Cow<'_, str> {
- self.as_path().to_string_lossy()
- }
-
- #[inline]
- fn as_cow_c_str(&self) -> io::Result<Cow<'_, CStr>> {
- Ok(Cow::Owned(
- CString::new(PathBuf::as_path(self).as_os_str().as_bytes())
- .map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_c_str<'b>(self) -> io::Result<Cow<'b, CStr>>
- where
- Self: 'b,
- {
- self.as_path().into_c_str()
- }
-
- #[inline]
- fn into_with_c_str<T, F>(self, f: F) -> io::Result<T>
- where
- Self: Sized,
- F: FnOnce(&CStr) -> io::Result<T>,
- {
- with_c_str(self.as_os_str().as_bytes(), f)
- }
-}
-
-#[cfg(feature = "std")]
-impl Arg for PathBuf {
- #[inline]
- fn as_str(&self) -> io::Result<&str> {
- self.as_os_str().to_str().ok_or(io::Errno::INVAL)
- }
-
- #[inline]
- fn to_string_lossy(&self) -> Cow<'_, str> {
- self.as_os_str().to_string_lossy()
- }
-
- #[inline]
- fn as_cow_c_str(&self) -> io::Result<Cow<'_, CStr>> {
- Ok(Cow::Owned(
- CString::new(self.as_os_str().as_bytes()).map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_c_str<'b>(self) -> io::Result<Cow<'b, CStr>>
- where
- Self: 'b,
- {
- Ok(Cow::Owned(
- CString::new(self.into_os_string().into_vec()).map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_with_c_str<T, F>(self, f: F) -> io::Result<T>
- where
- Self: Sized,
- F: FnOnce(&CStr) -> io::Result<T>,
- {
- f(
- &CString::new(self.into_os_string().into_vec())
- .map_err(|_cstr_err| io::Errno::INVAL)?,
- )
- }
-}
-
-impl Arg for &CStr {
- #[inline]
- fn as_str(&self) -> io::Result<&str> {
- self.to_str().map_err(|_utf8_err| io::Errno::INVAL)
- }
-
- #[inline]
- fn to_string_lossy(&self) -> Cow<'_, str> {
- CStr::to_string_lossy(self)
- }
-
- #[inline]
- fn as_cow_c_str(&self) -> io::Result<Cow<'_, CStr>> {
- Ok(Cow::Borrowed(self))
- }
-
- #[inline]
- fn into_c_str<'b>(self) -> io::Result<Cow<'b, CStr>>
- where
- Self: 'b,
- {
- Ok(Cow::Borrowed(self))
- }
-
- #[inline]
- fn into_with_c_str<T, F>(self, f: F) -> io::Result<T>
- where
- Self: Sized,
- F: FnOnce(&CStr) -> io::Result<T>,
- {
- f(self)
- }
-}
-
-impl Arg for &CString {
- #[inline]
- fn as_str(&self) -> io::Result<&str> {
- unimplemented!()
- }
-
- #[inline]
- fn to_string_lossy(&self) -> Cow<'_, str> {
- unimplemented!()
- }
-
- #[inline]
- fn as_cow_c_str(&self) -> io::Result<Cow<'_, CStr>> {
- Ok(Cow::Borrowed(self))
- }
-
- #[inline]
- fn into_c_str<'b>(self) -> io::Result<Cow<'b, CStr>>
- where
- Self: 'b,
- {
- Ok(Cow::Borrowed(self))
- }
-
- #[inline]
- fn into_with_c_str<T, F>(self, f: F) -> io::Result<T>
- where
- Self: Sized,
- F: FnOnce(&CStr) -> io::Result<T>,
- {
- f(self)
- }
-}
-
-impl Arg for CString {
- #[inline]
- fn as_str(&self) -> io::Result<&str> {
- self.to_str().map_err(|_utf8_err| io::Errno::INVAL)
- }
-
- #[inline]
- fn to_string_lossy(&self) -> Cow<'_, str> {
- CStr::to_string_lossy(self)
- }
-
- #[inline]
- fn as_cow_c_str(&self) -> io::Result<Cow<'_, CStr>> {
- Ok(Cow::Borrowed(self))
- }
-
- #[inline]
- fn into_c_str<'b>(self) -> io::Result<Cow<'b, CStr>>
- where
- Self: 'b,
- {
- Ok(Cow::Owned(self))
- }
-
- #[inline]
- fn into_with_c_str<T, F>(self, f: F) -> io::Result<T>
- where
- Self: Sized,
- F: FnOnce(&CStr) -> io::Result<T>,
- {
- f(&self)
- }
-}
-
-impl<'a> Arg for Cow<'a, str> {
- #[inline]
- fn as_str(&self) -> io::Result<&str> {
- Ok(self)
- }
-
- #[inline]
- fn to_string_lossy(&self) -> Cow<'_, str> {
- Cow::Borrowed(self)
- }
-
- #[inline]
- fn as_cow_c_str(&self) -> io::Result<Cow<'_, CStr>> {
- Ok(Cow::Owned(
- CString::new(self.as_ref()).map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_c_str<'b>(self) -> io::Result<Cow<'b, CStr>>
- where
- Self: 'b,
- {
- Ok(Cow::Owned(
- match self {
- Cow::Owned(s) => CString::new(s),
- Cow::Borrowed(s) => CString::new(s),
- }
- .map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_with_c_str<T, F>(self, f: F) -> io::Result<T>
- where
- Self: Sized,
- F: FnOnce(&CStr) -> io::Result<T>,
- {
- with_c_str(self.as_bytes(), f)
- }
-}
-
-#[cfg(feature = "std")]
-impl<'a> Arg for Cow<'a, OsStr> {
- #[inline]
- fn as_str(&self) -> io::Result<&str> {
- (**self).to_str().ok_or(io::Errno::INVAL)
- }
-
- #[inline]
- fn to_string_lossy(&self) -> Cow<'_, str> {
- (**self).to_string_lossy()
- }
-
- #[inline]
- fn as_cow_c_str(&self) -> io::Result<Cow<'_, CStr>> {
- Ok(Cow::Owned(
- CString::new(self.as_bytes()).map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_c_str<'b>(self) -> io::Result<Cow<'b, CStr>>
- where
- Self: 'b,
- {
- Ok(Cow::Owned(
- match self {
- Cow::Owned(os) => CString::new(os.into_vec()),
- Cow::Borrowed(os) => CString::new(os.as_bytes()),
- }
- .map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_with_c_str<T, F>(self, f: F) -> io::Result<T>
- where
- Self: Sized,
- F: FnOnce(&CStr) -> io::Result<T>,
- {
- with_c_str(self.as_bytes(), f)
- }
-}
-
-impl<'a> Arg for Cow<'a, CStr> {
- #[inline]
- fn as_str(&self) -> io::Result<&str> {
- self.to_str().map_err(|_utf8_err| io::Errno::INVAL)
- }
-
- #[inline]
- fn to_string_lossy(&self) -> Cow<'_, str> {
- let borrow: &CStr = core::borrow::Borrow::borrow(self);
- borrow.to_string_lossy()
- }
-
- #[inline]
- fn as_cow_c_str(&self) -> io::Result<Cow<'_, CStr>> {
- Ok(Cow::Borrowed(self))
- }
-
- #[inline]
- fn into_c_str<'b>(self) -> io::Result<Cow<'b, CStr>>
- where
- Self: 'b,
- {
- Ok(self)
- }
-
- #[inline]
- fn into_with_c_str<T, F>(self, f: F) -> io::Result<T>
- where
- Self: Sized,
- F: FnOnce(&CStr) -> io::Result<T>,
- {
- f(&self)
- }
-}
-
-#[cfg(feature = "std")]
-impl<'a> Arg for Component<'a> {
- #[inline]
- fn as_str(&self) -> io::Result<&str> {
- self.as_os_str().to_str().ok_or(io::Errno::INVAL)
- }
-
- #[inline]
- fn to_string_lossy(&self) -> Cow<'_, str> {
- self.as_os_str().to_string_lossy()
- }
-
- #[inline]
- fn as_cow_c_str(&self) -> io::Result<Cow<'_, CStr>> {
- Ok(Cow::Owned(
- CString::new(self.as_os_str().as_bytes()).map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_c_str<'b>(self) -> io::Result<Cow<'b, CStr>>
- where
- Self: 'b,
- {
- Ok(Cow::Owned(
- CString::new(self.as_os_str().as_bytes()).map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_with_c_str<T, F>(self, f: F) -> io::Result<T>
- where
- Self: Sized,
- F: FnOnce(&CStr) -> io::Result<T>,
- {
- with_c_str(self.as_os_str().as_bytes(), f)
- }
-}
-
-#[cfg(feature = "std")]
-impl<'a> Arg for Components<'a> {
- #[inline]
- fn as_str(&self) -> io::Result<&str> {
- self.as_path().to_str().ok_or(io::Errno::INVAL)
- }
-
- #[inline]
- fn to_string_lossy(&self) -> Cow<'_, str> {
- self.as_path().to_string_lossy()
- }
-
- #[inline]
- fn as_cow_c_str(&self) -> io::Result<Cow<'_, CStr>> {
- Ok(Cow::Owned(
- CString::new(self.as_path().as_os_str().as_bytes())
- .map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_c_str<'b>(self) -> io::Result<Cow<'b, CStr>>
- where
- Self: 'b,
- {
- Ok(Cow::Owned(
- CString::new(self.as_path().as_os_str().as_bytes())
- .map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_with_c_str<T, F>(self, f: F) -> io::Result<T>
- where
- Self: Sized,
- F: FnOnce(&CStr) -> io::Result<T>,
- {
- with_c_str(self.as_path().as_os_str().as_bytes(), f)
- }
-}
-
-#[cfg(feature = "std")]
-impl<'a> Arg for Iter<'a> {
- #[inline]
- fn as_str(&self) -> io::Result<&str> {
- self.as_path().to_str().ok_or(io::Errno::INVAL)
- }
-
- #[inline]
- fn to_string_lossy(&self) -> Cow<'_, str> {
- self.as_path().to_string_lossy()
- }
-
- #[inline]
- fn as_cow_c_str(&self) -> io::Result<Cow<'_, CStr>> {
- Ok(Cow::Owned(
- CString::new(self.as_path().as_os_str().as_bytes())
- .map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_c_str<'b>(self) -> io::Result<Cow<'b, CStr>>
- where
- Self: 'b,
- {
- Ok(Cow::Owned(
- CString::new(self.as_path().as_os_str().as_bytes())
- .map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_with_c_str<T, F>(self, f: F) -> io::Result<T>
- where
- Self: Sized,
- F: FnOnce(&CStr) -> io::Result<T>,
- {
- with_c_str(self.as_path().as_os_str().as_bytes(), f)
- }
-}
-
-impl Arg for &[u8] {
- #[inline]
- fn as_str(&self) -> io::Result<&str> {
- str::from_utf8(self).map_err(|_utf8_err| io::Errno::INVAL)
- }
-
- #[inline]
- fn to_string_lossy(&self) -> Cow<'_, str> {
- String::from_utf8_lossy(self)
- }
-
- #[inline]
- fn as_cow_c_str(&self) -> io::Result<Cow<'_, CStr>> {
- Ok(Cow::Owned(
- CString::new(*self).map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_c_str<'b>(self) -> io::Result<Cow<'b, CStr>>
- where
- Self: 'b,
- {
- Ok(Cow::Owned(
- CString::new(self).map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_with_c_str<T, F>(self, f: F) -> io::Result<T>
- where
- Self: Sized,
- F: FnOnce(&CStr) -> io::Result<T>,
- {
- with_c_str(self, f)
- }
-}
-
-impl Arg for &Vec<u8> {
- #[inline]
- fn as_str(&self) -> io::Result<&str> {
- str::from_utf8(self).map_err(|_utf8_err| io::Errno::INVAL)
- }
-
- #[inline]
- fn to_string_lossy(&self) -> Cow<'_, str> {
- String::from_utf8_lossy(self)
- }
-
- #[inline]
- fn as_cow_c_str(&self) -> io::Result<Cow<'_, CStr>> {
- Ok(Cow::Owned(
- CString::new(self.as_slice()).map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_c_str<'b>(self) -> io::Result<Cow<'b, CStr>>
- where
- Self: 'b,
- {
- Ok(Cow::Owned(
- CString::new(self.as_slice()).map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_with_c_str<T, F>(self, f: F) -> io::Result<T>
- where
- Self: Sized,
- F: FnOnce(&CStr) -> io::Result<T>,
- {
- with_c_str(self, f)
- }
-}
-
-impl Arg for Vec<u8> {
- #[inline]
- fn as_str(&self) -> io::Result<&str> {
- str::from_utf8(self).map_err(|_utf8_err| io::Errno::INVAL)
- }
-
- #[inline]
- fn to_string_lossy(&self) -> Cow<'_, str> {
- String::from_utf8_lossy(self)
- }
-
- #[inline]
- fn as_cow_c_str(&self) -> io::Result<Cow<'_, CStr>> {
- Ok(Cow::Owned(
- CString::new(self.as_slice()).map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_c_str<'b>(self) -> io::Result<Cow<'b, CStr>>
- where
- Self: 'b,
- {
- Ok(Cow::Owned(
- CString::new(self).map_err(|_cstr_err| io::Errno::INVAL)?,
- ))
- }
-
- #[inline]
- fn into_with_c_str<T, F>(self, f: F) -> io::Result<T>
- where
- Self: Sized,
- F: FnOnce(&CStr) -> io::Result<T>,
- {
- f(&CString::new(self).map_err(|_cstr_err| io::Errno::INVAL)?)
- }
-}
-
-#[cfg(feature = "itoa")]
-impl Arg for DecInt {
- #[inline]
- fn as_str(&self) -> io::Result<&str> {
- Ok(self.as_str())
- }
-
- #[inline]
- fn to_string_lossy(&self) -> Cow<'_, str> {
- Cow::Borrowed(self.as_str())
- }
-
- #[inline]
- fn as_cow_c_str(&self) -> io::Result<Cow<'_, CStr>> {
- Ok(Cow::Borrowed(self.as_c_str()))
- }
-
- #[inline]
- fn into_c_str<'b>(self) -> io::Result<Cow<'b, CStr>>
- where
- Self: 'b,
- {
- Ok(Cow::Owned(self.as_c_str().to_owned()))
- }
-
- #[inline]
- fn into_with_c_str<T, F>(self, f: F) -> io::Result<T>
- where
- Self: Sized,
- F: FnOnce(&CStr) -> io::Result<T>,
- {
- f(self.as_c_str())
- }
-}
-
-/// Runs a closure with `bytes` passed in as a `&CStr`.
-#[allow(unsafe_code, clippy::int_plus_one)]
-#[inline]
-fn with_c_str<T, F>(bytes: &[u8], f: F) -> io::Result<T>
-where
- F: FnOnce(&CStr) -> io::Result<T>,
-{
- // Most paths are less than `SMALL_PATH_BUFFER_SIZE` long. The rest can go
- // through the dynamic allocation path. If you're opening many files in a
- // directory with a long path, consider opening the directory and using
- // `openat` to open the files under it, which will avoid this, and is often
- // faster in the OS as well.
-
- // Test with >= so that we have room for the trailing NUL.
- if bytes.len() >= SMALL_PATH_BUFFER_SIZE {
- return with_c_str_slow_path(bytes, f);
- }
-
- // Taken from
- // <https://github.com/rust-lang/rust/blob/a00f8ba7fcac1b27341679c51bf5a3271fa82df3/library/std/src/sys/common/small_c_string.rs>
- let mut buf = MaybeUninit::<[u8; SMALL_PATH_BUFFER_SIZE]>::uninit();
- let buf_ptr = buf.as_mut_ptr() as *mut u8;
-
- // This helps test our safety condition below.
- debug_assert!(bytes.len() + 1 <= SMALL_PATH_BUFFER_SIZE);
-
- // SAFETY: bytes.len() < SMALL_PATH_BUFFER_SIZE which means we have space for
- // bytes.len() + 1 u8s:
- unsafe {
- ptr::copy_nonoverlapping(bytes.as_ptr(), buf_ptr, bytes.len());
- buf_ptr.add(bytes.len()).write(0);
- }
-
- // SAFETY: we just wrote the bytes above and they will remain valid for the
- // duration of f b/c buf doesn't get dropped until the end of the function.
- match CStr::from_bytes_with_nul(unsafe { slice::from_raw_parts(buf_ptr, bytes.len() + 1) }) {
- Ok(s) => f(s),
- Err(_) => Err(io::Errno::INVAL),
- }
-}
-
-/// The slow path which handles any length. In theory OS's only support up
-/// to `PATH_MAX`, but we let the OS enforce that.
-#[cold]
-fn with_c_str_slow_path<T, F>(bytes: &[u8], f: F) -> io::Result<T>
-where
- F: FnOnce(&CStr) -> io::Result<T>,
-{
- f(&CString::new(bytes).map_err(|_cstr_err| io::Errno::INVAL)?)
-}
diff --git a/vendor/rustix-0.37.6/src/path/dec_int.rs b/vendor/rustix-0.37.6/src/path/dec_int.rs
deleted file mode 100644
index 5ba8be4fc..000000000
--- a/vendor/rustix-0.37.6/src/path/dec_int.rs
+++ /dev/null
@@ -1,126 +0,0 @@
-//! Efficient decimal integer formatting.
-//!
-//! # Safety
-//!
-//! This uses `CStr::from_bytes_with_nul_unchecked` and
-//! `str::from_utf8_unchecked`on the buffer that it filled itself.
-#![allow(unsafe_code)]
-
-use crate::backend::fd::{AsFd, AsRawFd};
-use crate::ffi::CStr;
-#[cfg(feature = "std")]
-use core::fmt;
-use core::fmt::Write;
-use itoa::{Buffer, Integer};
-#[cfg(feature = "std")]
-use std::ffi::OsStr;
-#[cfg(feature = "std")]
-#[cfg(unix)]
-use std::os::unix::ffi::OsStrExt;
-#[cfg(feature = "std")]
-#[cfg(target_os = "wasi")]
-use std::os::wasi::ffi::OsStrExt;
-#[cfg(feature = "std")]
-use std::path::Path;
-
-/// Format an integer into a decimal `Path` component, without constructing a
-/// temporary `PathBuf` or `String`.
-///
-/// This is used for opening paths such as `/proc/self/fd/<fd>` on Linux.
-///
-/// # Example
-///
-/// ```
-/// # #[cfg(feature = "path")]
-/// use rustix::path::DecInt;
-///
-/// # #[cfg(feature = "path")]
-/// assert_eq!(
-/// format!("hello {}", DecInt::new(9876).as_ref().display()),
-/// "hello 9876"
-/// );
-/// ```
-#[derive(Clone)]
-pub struct DecInt {
- // 20 `u8`s is enough to hold the decimal ASCII representation of any
- // `u64`, and we add one for a NUL terminator for `as_c_str`.
- buf: [u8; 20 + 1],
- len: usize,
-}
-
-impl DecInt {
- /// Construct a new path component from an integer.
- #[inline]
- pub fn new<Int: Integer>(i: Int) -> Self {
- let mut me = DecIntWriter(Self {
- buf: [0; 20 + 1],
- len: 0,
- });
- let mut buf = Buffer::new();
- me.write_str(buf.format(i)).unwrap();
- me.0
- }
-
- /// Construct a new path component from a file descriptor.
- #[inline]
- pub fn from_fd<Fd: AsFd>(fd: Fd) -> Self {
- Self::new(fd.as_fd().as_raw_fd())
- }
-
- /// Return the raw byte buffer as a `&str`.
- #[inline]
- pub fn as_str(&self) -> &str {
- // SAFETY: `DecInt` always holds a formatted decimal number, so it's
- // always valid UTF-8.
- unsafe { core::str::from_utf8_unchecked(self.as_bytes()) }
- }
-
- /// Return the raw byte buffer as a `&CStr`.
- #[inline]
- pub fn as_c_str(&self) -> &CStr {
- let bytes_with_nul = &self.buf[..=self.len];
- debug_assert!(CStr::from_bytes_with_nul(bytes_with_nul).is_ok());
-
- // SAFETY: `self.buf` holds a single decimal ASCII representation and
- // at least one extra NUL byte.
- unsafe { CStr::from_bytes_with_nul_unchecked(bytes_with_nul) }
- }
-
- /// Return the raw byte buffer.
- #[inline]
- pub fn as_bytes(&self) -> &[u8] {
- &self.buf[..self.len]
- }
-}
-
-struct DecIntWriter(DecInt);
-
-impl core::fmt::Write for DecIntWriter {
- #[inline]
- fn write_str(&mut self, s: &str) -> core::fmt::Result {
- match self.0.buf.get_mut(self.0.len..self.0.len + s.len()) {
- Some(slice) => {
- slice.copy_from_slice(s.as_bytes());
- self.0.len += s.len();
- Ok(())
- }
- None => Err(core::fmt::Error),
- }
- }
-}
-
-#[cfg(feature = "std")]
-impl AsRef<Path> for DecInt {
- #[inline]
- fn as_ref(&self) -> &Path {
- let as_os_str: &OsStr = OsStrExt::from_bytes(&self.buf[..self.len]);
- Path::new(as_os_str)
- }
-}
-
-#[cfg(feature = "std")]
-impl fmt::Debug for DecInt {
- fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
- self.as_str().fmt(fmt)
- }
-}
diff --git a/vendor/rustix-0.37.6/src/path/mod.rs b/vendor/rustix-0.37.6/src/path/mod.rs
deleted file mode 100644
index bd6e9fc8b..000000000
--- a/vendor/rustix-0.37.6/src/path/mod.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-//! Filesystem path operations.
-
-mod arg;
-#[cfg(feature = "itoa")]
-mod dec_int;
-
-pub use arg::Arg;
-#[cfg(feature = "itoa")]
-pub use dec_int::DecInt;
-
-pub(crate) const SMALL_PATH_BUFFER_SIZE: usize = 256;
diff --git a/vendor/rustix-0.37.6/src/process/chdir.rs b/vendor/rustix-0.37.6/src/process/chdir.rs
deleted file mode 100644
index 4951e5670..000000000
--- a/vendor/rustix-0.37.6/src/process/chdir.rs
+++ /dev/null
@@ -1,72 +0,0 @@
-use crate::ffi::CString;
-use crate::path::SMALL_PATH_BUFFER_SIZE;
-use crate::{backend, io, path};
-use alloc::vec::Vec;
-#[cfg(not(target_os = "fuchsia"))]
-use backend::fd::AsFd;
-
-/// `chdir(path)`—Change the current working directory.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/chdir.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/chdir.2.html
-#[inline]
-pub fn chdir<P: path::Arg>(path: P) -> io::Result<()> {
- path.into_with_c_str(backend::process::syscalls::chdir)
-}
-
-/// `fchdir(fd)`—Change the current working directory.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/fchdir.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/fchdir.2.html
-#[cfg(not(target_os = "fuchsia"))]
-#[inline]
-pub fn fchdir<Fd: AsFd>(fd: Fd) -> io::Result<()> {
- backend::process::syscalls::fchdir(fd.as_fd())
-}
-
-/// `getcwd()`—Return the current working directory.
-///
-/// If `reuse` is non-empty, reuse its buffer to store the result if possible.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getcwd.html
-/// [Linux]: https://man7.org/linux/man-pages/man3/getcwd.3.html
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-pub fn getcwd<B: Into<Vec<u8>>>(reuse: B) -> io::Result<CString> {
- _getcwd(reuse.into())
-}
-
-fn _getcwd(mut buffer: Vec<u8>) -> io::Result<CString> {
- // This code would benefit from having a better way to read into
- // uninitialized memory, but that requires `unsafe`.
- buffer.clear();
- buffer.reserve(SMALL_PATH_BUFFER_SIZE);
- buffer.resize(buffer.capacity(), 0_u8);
-
- loop {
- match backend::process::syscalls::getcwd(&mut buffer) {
- Err(io::Errno::RANGE) => {
- buffer.reserve(1); // use `Vec` reallocation strategy to grow capacity exponentially
- buffer.resize(buffer.capacity(), 0_u8);
- }
- Ok(_) => {
- let len = buffer.iter().position(|x| *x == b'\0').unwrap();
- buffer.resize(len, 0_u8);
- return Ok(CString::new(buffer).unwrap());
- }
- Err(errno) => return Err(errno),
- }
- }
-}
diff --git a/vendor/rustix-0.37.6/src/process/exit.rs b/vendor/rustix-0.37.6/src/process/exit.rs
deleted file mode 100644
index 56db99b4f..000000000
--- a/vendor/rustix-0.37.6/src/process/exit.rs
+++ /dev/null
@@ -1,34 +0,0 @@
-use crate::backend;
-
-/// `EXIT_SUCCESS` for use with [`exit`].
-///
-/// [`exit`]: std::process::exit
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stdlib.h.html
-/// [Linux]: https://man7.org/linux/man-pages/man3/exit.3.html
-pub const EXIT_SUCCESS: i32 = backend::process::types::EXIT_SUCCESS;
-
-/// `EXIT_FAILURE` for use with [`exit`].
-///
-/// [`exit`]: std::process::exit
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stdlib.h.html
-/// [Linux]: https://man7.org/linux/man-pages/man3/exit.3.html
-pub const EXIT_FAILURE: i32 = backend::process::types::EXIT_FAILURE;
-
-/// The exit status used by a process terminated with `SIGABRT` signal.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://tldp.org/LDP/abs/html/exitcodes.html
-#[cfg(not(target_os = "wasi"))]
-pub const EXIT_SIGNALED_SIGABRT: i32 = backend::process::types::EXIT_SIGNALED_SIGABRT;
diff --git a/vendor/rustix-0.37.6/src/process/id.rs b/vendor/rustix-0.37.6/src/process/id.rs
deleted file mode 100644
index 04f1b879c..000000000
--- a/vendor/rustix-0.37.6/src/process/id.rs
+++ /dev/null
@@ -1,325 +0,0 @@
-//! Unix user, group, and process identifiers.
-//!
-//! # Safety
-//!
-//! The `Uid`, `Gid`, and `Pid` types can be constructed from raw integers,
-//! which is marked unsafe because actual OS's assign special meaning to some
-//! integer values.
-#![allow(unsafe_code)]
-
-use crate::{backend, io};
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use backend::process::types::RawCpuid;
-
-/// The raw integer value of a Unix user ID.
-pub use backend::process::types::RawUid;
-
-/// The raw integer value of a Unix group ID.
-pub use backend::process::types::RawGid;
-
-/// The raw integer value of a Unix process ID.
-pub use backend::process::types::RawPid;
-
-/// The raw integer value of a Unix process ID.
-pub use backend::process::types::RawNonZeroPid;
-
-/// `uid_t`—A Unix user ID.
-#[repr(transparent)]
-#[derive(Copy, Clone, Eq, PartialEq, Debug, Hash)]
-pub struct Uid(RawUid);
-
-/// `gid_t`—A Unix group ID.
-#[repr(transparent)]
-#[derive(Copy, Clone, Eq, PartialEq, Debug, Hash)]
-pub struct Gid(RawGid);
-
-/// `pid_t`—A non-zero Unix process ID.
-///
-/// This is a pid, and not a pidfd. It is not a file descriptor, and the
-/// process it refers to could disappear at any time and be replaced by
-/// another, unrelated, process.
-#[repr(transparent)]
-#[derive(Copy, Clone, Eq, PartialEq, Debug, Hash)]
-pub struct Pid(RawNonZeroPid);
-
-/// A Linux CPU ID.
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[repr(transparent)]
-#[derive(Copy, Clone, Eq, PartialEq, Debug, Hash)]
-pub struct Cpuid(RawCpuid);
-
-impl Uid {
- /// A `Uid` corresponding to the root user (uid 0).
- pub const ROOT: Self = Self(0);
-
- /// Converts a `RawUid` into a `Uid`.
- ///
- /// # Safety
- ///
- /// `raw` must be the value of a valid Unix user ID.
- #[inline]
- pub const unsafe fn from_raw(raw: RawUid) -> Self {
- Self(raw)
- }
-
- /// Converts a `Uid` into a `RawUid`.
- #[inline]
- pub const fn as_raw(self) -> RawUid {
- self.0
- }
-
- /// Test whether this uid represents the root user (uid 0).
- #[inline]
- pub const fn is_root(self) -> bool {
- self.0 == Self::ROOT.0
- }
-}
-
-impl Gid {
- /// A `Gid` corresponding to the root group (gid 0).
- pub const ROOT: Self = Self(0);
-
- /// Converts a `RawGid` into a `Gid`.
- ///
- /// # Safety
- ///
- /// `raw` must be the value of a valid Unix group ID.
- #[inline]
- pub const unsafe fn from_raw(raw: RawGid) -> Self {
- Self(raw)
- }
-
- /// Converts a `Gid` into a `RawGid`.
- #[inline]
- pub const fn as_raw(self) -> RawGid {
- self.0
- }
-
- /// Test whether this gid represents the root group (gid 0).
- #[inline]
- pub const fn is_root(self) -> bool {
- self.0 == Self::ROOT.0
- }
-}
-
-impl Pid {
- /// A `Pid` corresponding to the init process (pid 1).
- pub const INIT: Self = Self(
- // SAFETY: The init process' pid is always valid.
- unsafe { RawNonZeroPid::new_unchecked(1) },
- );
-
- /// Converts a `RawPid` into a `Pid`.
- ///
- /// # Safety
- ///
- /// `raw` must be the value of a valid Unix process ID, or zero.
- #[inline]
- pub const unsafe fn from_raw(raw: RawPid) -> Option<Self> {
- match RawNonZeroPid::new(raw) {
- Some(pid) => Some(Self(pid)),
- None => None,
- }
- }
-
- /// Converts a known non-zero `RawPid` into a `Pid`.
- ///
- /// # Safety
- ///
- /// `raw` must be the value of a valid Unix process ID. It must not be
- /// zero.
- #[inline]
- pub const unsafe fn from_raw_nonzero(raw: RawNonZeroPid) -> Self {
- Self(raw)
- }
-
- /// Creates a `Pid` holding the ID of the given child process.
- #[cfg(feature = "std")]
- #[inline]
- pub fn from_child(child: &std::process::Child) -> Self {
- let id = child.id();
- debug_assert_ne!(id, 0);
-
- // SAFETY: We know the returned ID is valid because it came directly
- // from an OS API.
- unsafe { Self::from_raw_nonzero(RawNonZeroPid::new_unchecked(id as _)) }
- }
-
- /// Converts a `Pid` into a `RawNonZeroPid`.
- #[inline]
- pub const fn as_raw_nonzero(self) -> RawNonZeroPid {
- self.0
- }
-
- /// Converts an `Option<Pid>` into a `RawPid`.
- #[inline]
- pub fn as_raw(pid: Option<Self>) -> RawPid {
- pid.map_or(0, |pid| pid.0.get())
- }
-
- /// Test whether this pid represents the init process (pid 0).
- #[inline]
- pub const fn is_init(self) -> bool {
- self.0.get() == Self::INIT.0.get()
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-impl Cpuid {
- /// Converts a `RawCpuid` into a `Cpuid`.
- ///
- /// # Safety
- ///
- /// `raw` must be the value of a valid Linux CPU ID.
- #[inline]
- pub const unsafe fn from_raw(raw: RawCpuid) -> Self {
- Self(raw)
- }
-
- /// Converts a `Cpuid` into a `RawCpuid`.
- #[inline]
- pub const fn as_raw(self) -> RawCpuid {
- self.0
- }
-}
-
-/// `getuid()`—Returns the process' real user ID.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getuid.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/getuid.2.html
-#[inline]
-#[must_use]
-pub fn getuid() -> Uid {
- backend::process::syscalls::getuid()
-}
-
-/// `geteuid()`—Returns the process' effective user ID.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/geteuid.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/geteuid.2.html
-#[inline]
-#[must_use]
-pub fn geteuid() -> Uid {
- backend::process::syscalls::geteuid()
-}
-
-/// `getgid()`—Returns the process' real group ID.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getgid.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/getgid.2.html
-#[inline]
-#[must_use]
-pub fn getgid() -> Gid {
- backend::process::syscalls::getgid()
-}
-
-/// `getegid()`—Returns the process' effective group ID.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getegid.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/getegid.2.html
-#[inline]
-#[must_use]
-pub fn getegid() -> Gid {
- backend::process::syscalls::getegid()
-}
-
-/// `getpid()`—Returns the process' ID.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getpid.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/getpid.2.html
-#[inline]
-#[must_use]
-pub fn getpid() -> Pid {
- backend::process::syscalls::getpid()
-}
-
-/// `getppid()`—Returns the parent process' ID.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getppid.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/getppid.2.html
-#[inline]
-#[must_use]
-pub fn getppid() -> Option<Pid> {
- backend::process::syscalls::getppid()
-}
-
-/// `getpgid(pid)`—Returns the process group ID of the given process.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getpgid.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/getpgid.2.html
-#[inline]
-pub fn getpgid(pid: Option<Pid>) -> io::Result<Pid> {
- backend::process::syscalls::getpgid(pid)
-}
-
-/// `getpgrp()`—Returns the process' group ID.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getpgrp.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/getpgrp.2.html
-#[inline]
-#[must_use]
-pub fn getpgrp() -> Pid {
- backend::process::syscalls::getpgrp()
-}
-
-/// `setsid()`—Create a new session.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsid.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/setsid.2.html
-#[inline]
-pub fn setsid() -> io::Result<Pid> {
- backend::process::syscalls::setsid()
-}
-
-// translate_fchown_args returns the raw value of the IDs. In case of `None`
-// it returns `u32::MAX` since it has the same bit pattern as `-1` indicating
-// no change to the owner/group ID.
-pub(crate) fn translate_fchown_args(owner: Option<Uid>, group: Option<Gid>) -> (u32, u32) {
- let ow = match owner {
- Some(o) => o.as_raw(),
- None => u32::MAX,
- };
-
- let gr = match group {
- Some(g) => g.as_raw(),
- None => u32::MAX,
- };
-
- (ow, gr)
-}
diff --git a/vendor/rustix-0.37.6/src/process/kill.rs b/vendor/rustix-0.37.6/src/process/kill.rs
deleted file mode 100644
index 69cfba261..000000000
--- a/vendor/rustix-0.37.6/src/process/kill.rs
+++ /dev/null
@@ -1,51 +0,0 @@
-use crate::process::Pid;
-use crate::{backend, io};
-
-pub use backend::process::types::Signal;
-
-/// `kill(pid, sig)`—Sends a signal to a process.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/kill.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/kill.2.html
-#[inline]
-#[doc(alias = "kill")]
-pub fn kill_process(pid: Pid, sig: Signal) -> io::Result<()> {
- backend::process::syscalls::kill_process(pid, sig)
-}
-
-/// `kill(-pid, sig)`—Sends a signal to all processes in a process group.
-///
-/// If `pid` is 1, this sends a signal to all processes the current process
-/// has permission to send signals to, except process `1`, possibly other
-/// system-specific processes, and on some systems, the current process.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/kill.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/kill.2.html
-#[inline]
-#[doc(alias = "kill")]
-pub fn kill_process_group(pid: Pid, sig: Signal) -> io::Result<()> {
- backend::process::syscalls::kill_process_group(pid, sig)
-}
-
-/// `kill(0, sig)`—Sends a signal to all processes in the current process
-/// group.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/kill.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/kill.2.html
-#[inline]
-#[doc(alias = "kill")]
-pub fn kill_current_process_group(sig: Signal) -> io::Result<()> {
- backend::process::syscalls::kill_current_process_group(sig)
-}
diff --git a/vendor/rustix-0.37.6/src/process/membarrier.rs b/vendor/rustix-0.37.6/src/process/membarrier.rs
deleted file mode 100644
index 8709337bc..000000000
--- a/vendor/rustix-0.37.6/src/process/membarrier.rs
+++ /dev/null
@@ -1,93 +0,0 @@
-//! The Linux `membarrier` syscall.
-//!
-//! # Safety
-//!
-//! This file defines an enum and a bitflags type that represent the same
-//! set of values and are kept in sync.
-#![allow(unsafe_code)]
-
-use crate::process::Cpuid;
-use crate::{backend, io};
-
-pub use backend::process::types::MembarrierCommand;
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-bitflags::bitflags! {
- /// A result from [`membarrier_query`].
- ///
- /// These flags correspond to values of [`MembarrierCommand`] which are
- /// supported in the OS.
- pub struct MembarrierQuery: u32 {
- /// `MEMBARRIER_CMD_GLOBAL`
- #[doc(alias = "SHARED")]
- #[doc(alias = "MEMBARRIER_CMD_SHARED")]
- const GLOBAL = MembarrierCommand::Global as _;
- /// `MEMBARRIER_CMD_GLOBAL_EXPEDITED`
- const GLOBAL_EXPEDITED = MembarrierCommand::GlobalExpedited as _;
- /// `MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED`
- const REGISTER_GLOBAL_EXPEDITED = MembarrierCommand::RegisterGlobalExpedited as _;
- /// `MEMBARRIER_CMD_PRIVATE_EXPEDITED`
- const PRIVATE_EXPEDITED = MembarrierCommand::PrivateExpedited as _;
- /// `MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED`
- const REGISTER_PRIVATE_EXPEDITED = MembarrierCommand::RegisterPrivateExpedited as _;
- /// `MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE`
- const PRIVATE_EXPEDITED_SYNC_CORE = MembarrierCommand::PrivateExpeditedSyncCore as _;
- /// `MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE`
- const REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = MembarrierCommand::RegisterPrivateExpeditedSyncCore as _;
- /// `MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ` (since Linux 5.10)
- const PRIVATE_EXPEDITED_RSEQ = MembarrierCommand::PrivateExpeditedRseq as _;
- /// `MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ` (since Linux 5.10)
- const REGISTER_PRIVATE_EXPEDITED_RSEQ = MembarrierCommand::RegisterPrivateExpeditedRseq as _;
- }
-}
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-impl MembarrierQuery {
- /// Test whether this query result contains the given command.
- #[inline]
- pub fn contains_command(self, cmd: MembarrierCommand) -> bool {
- // SAFETY: `MembarrierCommand` is an enum that only contains values
- // also valid in `MembarrierQuery`.
- self.contains(unsafe { Self::from_bits_unchecked(cmd as _) })
- }
-}
-
-/// `membarrier(MEMBARRIER_CMD_QUERY, 0, 0)`—Query the supported `membarrier`
-/// commands.
-///
-/// This function doesn't return a `Result` because it always succeeds; if
-/// the underlying OS doesn't support the `membarrier` syscall, it returns
-/// an empty `MembarrierQuery` value.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/membarrier.2.html
-#[inline]
-#[doc(alias = "MEMBARRIER_CMD_QUERY")]
-pub fn membarrier_query() -> MembarrierQuery {
- backend::process::syscalls::membarrier_query()
-}
-
-/// `membarrier(cmd, 0, 0)`—Perform a memory barrier.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/membarrier.2.html
-#[inline]
-pub fn membarrier(cmd: MembarrierCommand) -> io::Result<()> {
- backend::process::syscalls::membarrier(cmd)
-}
-
-/// `membarrier(cmd, MEMBARRIER_CMD_FLAG_CPU, cpu)`—Perform a memory barrier
-/// with a specific CPU.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/membarrier.2.html
-#[inline]
-pub fn membarrier_cpu(cmd: MembarrierCommand, cpu: Cpuid) -> io::Result<()> {
- backend::process::syscalls::membarrier_cpu(cmd, cpu)
-}
diff --git a/vendor/rustix-0.37.6/src/process/mod.rs b/vendor/rustix-0.37.6/src/process/mod.rs
deleted file mode 100644
index 3ae976439..000000000
--- a/vendor/rustix-0.37.6/src/process/mod.rs
+++ /dev/null
@@ -1,73 +0,0 @@
-//! Process-associated operations.
-
-#[cfg(not(target_os = "wasi"))]
-mod chdir;
-mod exit;
-#[cfg(not(target_os = "wasi"))] // WASI doesn't have get[gpu]id.
-mod id;
-#[cfg(not(target_os = "wasi"))]
-mod kill;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-mod membarrier;
-#[cfg(target_os = "linux")]
-mod pidfd;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-mod prctl;
-#[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))] // WASI doesn't have [gs]etpriority.
-mod priority;
-#[cfg(target_os = "freebsd")]
-mod procctl;
-#[cfg(not(any(target_os = "fuchsia", target_os = "redox", target_os = "wasi")))]
-mod rlimit;
-#[cfg(any(
- target_os = "android",
- target_os = "dragonfly",
- target_os = "fuchsia",
- target_os = "linux",
-))]
-mod sched;
-mod sched_yield;
-#[cfg(not(target_os = "wasi"))] // WASI doesn't have umask.
-mod umask;
-#[cfg(not(target_os = "wasi"))] // WASI doesn't have uname.
-mod uname;
-#[cfg(not(target_os = "wasi"))]
-mod wait;
-
-#[cfg(not(target_os = "wasi"))]
-pub use chdir::*;
-pub use exit::*;
-#[cfg(not(target_os = "wasi"))]
-pub use id::*;
-#[cfg(not(target_os = "wasi"))]
-pub use kill::*;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub use membarrier::*;
-#[cfg(target_os = "linux")]
-pub use pidfd::*;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub use prctl::*;
-#[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))]
-pub use priority::*;
-#[cfg(target_os = "freebsd")]
-pub use procctl::*;
-#[cfg(not(any(target_os = "fuchsia", target_os = "redox", target_os = "wasi")))]
-pub use rlimit::*;
-#[cfg(any(
- target_os = "android",
- target_os = "dragonfly",
- target_os = "fuchsia",
- target_os = "linux",
-))]
-pub use sched::*;
-pub use sched_yield::sched_yield;
-#[cfg(not(target_os = "wasi"))]
-pub use umask::*;
-#[cfg(not(target_os = "wasi"))]
-pub use uname::{uname, Uname};
-#[cfg(not(target_os = "wasi"))]
-pub use wait::*;
-
-#[cfg(not(target_os = "wasi"))]
-#[cfg(feature = "fs")]
-pub(crate) use id::translate_fchown_args;
diff --git a/vendor/rustix-0.37.6/src/process/pidfd.rs b/vendor/rustix-0.37.6/src/process/pidfd.rs
deleted file mode 100644
index c9ddb591f..000000000
--- a/vendor/rustix-0.37.6/src/process/pidfd.rs
+++ /dev/null
@@ -1,25 +0,0 @@
-use crate::fd::OwnedFd;
-use crate::process::Pid;
-use crate::{backend, io};
-
-bitflags::bitflags! {
- /// `PIDFD_*` flags for use with [`pidfd_open`].
- ///
- /// [`pidfd_open`]: crate::process::pidfd_open
- pub struct PidfdFlags: backend::c::c_uint {
- /// `PIDFD_NONBLOCK`.
- const NONBLOCK = backend::c::PIDFD_NONBLOCK;
- }
-}
-
-/// `syscall(SYS_pidfd_open, pid, flags)`—Creates a file descriptor for
-/// a process.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/pidfd_open.2.html
-#[inline]
-pub fn pidfd_open(pid: Pid, flags: PidfdFlags) -> io::Result<OwnedFd> {
- backend::process::syscalls::pidfd_open(pid, flags)
-}
diff --git a/vendor/rustix-0.37.6/src/process/prctl.rs b/vendor/rustix-0.37.6/src/process/prctl.rs
deleted file mode 100644
index 34eef7aa4..000000000
--- a/vendor/rustix-0.37.6/src/process/prctl.rs
+++ /dev/null
@@ -1,1129 +0,0 @@
-//! Bindings for the Linux `prctl` system call.
-//!
-//! There are similarities (but also differences) with FreeBSD's `procctl`
-//! system call, whose interface is located in the `procctl.rs` file.
-
-#![allow(unsafe_code)]
-
-use core::convert::{TryFrom, TryInto};
-use core::mem::MaybeUninit;
-use core::ptr::NonNull;
-use core::{mem, ptr};
-
-use bitflags::bitflags;
-
-use crate::backend::c::{c_int, c_uint, c_void};
-use crate::backend::process::syscalls;
-use crate::backend::process::types::Signal;
-use crate::fd::{AsRawFd, BorrowedFd};
-use crate::ffi::CStr;
-use crate::io;
-use crate::process::{Pid, RawPid};
-
-//
-// Helper functions.
-//
-
-#[inline]
-pub(crate) unsafe fn prctl_1arg(option: c_int) -> io::Result<c_int> {
- const NULL: *mut c_void = ptr::null_mut();
- syscalls::prctl(option, NULL, NULL, NULL, NULL)
-}
-
-#[inline]
-pub(crate) unsafe fn prctl_2args(option: c_int, arg2: *mut c_void) -> io::Result<c_int> {
- const NULL: *mut c_void = ptr::null_mut();
- syscalls::prctl(option, arg2, NULL, NULL, NULL)
-}
-
-#[inline]
-pub(crate) unsafe fn prctl_3args(
- option: c_int,
- arg2: *mut c_void,
- arg3: *mut c_void,
-) -> io::Result<c_int> {
- syscalls::prctl(option, arg2, arg3, ptr::null_mut(), ptr::null_mut())
-}
-
-#[inline]
-pub(crate) unsafe fn prctl_get_at_arg2_optional<P>(option: i32) -> io::Result<P> {
- let mut value: MaybeUninit<P> = MaybeUninit::uninit();
- prctl_2args(option, value.as_mut_ptr().cast())?;
- Ok(value.assume_init())
-}
-
-#[inline]
-pub(crate) unsafe fn prctl_get_at_arg2<P, T>(option: i32) -> io::Result<T>
-where
- P: Default,
- T: TryFrom<P, Error = io::Errno>,
-{
- let mut value: P = Default::default();
- prctl_2args(option, ((&mut value) as *mut P).cast())?;
- TryFrom::try_from(value)
-}
-
-//
-// PR_GET_PDEATHSIG/PR_SET_PDEATHSIG
-//
-
-const PR_GET_PDEATHSIG: c_int = 2;
-
-/// Get the current value of the parent process death signal.
-///
-/// # References
-/// - [Linux: `prctl(PR_GET_PDEATHSIG,...)`]
-/// - [FreeBSD: `procctl(PROC_PDEATHSIG_STATUS,...)`]
-///
-/// [Linux: `prctl(PR_GET_PDEATHSIG,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-/// [FreeBSD: `procctl(PROC_PDEATHSIG_STATUS,...)`]: https://www.freebsd.org/cgi/man.cgi?query=procctl&sektion=2
-#[inline]
-pub fn parent_process_death_signal() -> io::Result<Option<Signal>> {
- unsafe { prctl_get_at_arg2_optional::<c_int>(PR_GET_PDEATHSIG) }.map(Signal::from_raw)
-}
-
-const PR_SET_PDEATHSIG: c_int = 1;
-
-/// Set the parent-death signal of the calling process.
-///
-/// # References
-/// - [Linux: `prctl(PR_SET_PDEATHSIG,...)`]
-/// - [FreeBSD: `procctl(PROC_PDEATHSIG_CTL,...)`]
-///
-/// [Linux: `prctl(PR_SET_PDEATHSIG,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-/// [FreeBSD: `procctl(PROC_PDEATHSIG_CTL,...)`]: https://www.freebsd.org/cgi/man.cgi?query=procctl&sektion=2
-#[inline]
-pub fn set_parent_process_death_signal(signal: Option<Signal>) -> io::Result<()> {
- let signal = signal.map_or(0_usize, |signal| signal as usize);
- unsafe { prctl_2args(PR_SET_PDEATHSIG, signal as *mut _) }.map(|_r| ())
-}
-
-//
-// PR_GET_DUMPABLE/PR_SET_DUMPABLE
-//
-
-const PR_GET_DUMPABLE: c_int = 3;
-
-const SUID_DUMP_DISABLE: i32 = 0;
-const SUID_DUMP_USER: i32 = 1;
-const SUID_DUMP_ROOT: i32 = 2;
-
-/// `SUID_DUMP_*`.
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-#[repr(i32)]
-pub enum DumpableBehavior {
- /// Not dumpable.
- NotDumpable = SUID_DUMP_DISABLE,
- /// Dumpable.
- Dumpable = SUID_DUMP_USER,
- /// Dumpable but only readable by root.
- DumpableReadableOnlyByRoot = SUID_DUMP_ROOT,
-}
-
-impl TryFrom<i32> for DumpableBehavior {
- type Error = io::Errno;
-
- fn try_from(value: i32) -> Result<Self, Self::Error> {
- match value {
- SUID_DUMP_DISABLE => Ok(Self::NotDumpable),
- SUID_DUMP_USER => Ok(Self::Dumpable),
- SUID_DUMP_ROOT => Ok(Self::DumpableReadableOnlyByRoot),
- _ => Err(io::Errno::RANGE),
- }
- }
-}
-
-/// Get the current state of the calling process's `dumpable` attribute.
-///
-/// # References
-/// - [`prctl(PR_GET_DUMPABLE,...)`]
-///
-/// [`prctl(PR_GET_DUMPABLE,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn dumpable_behavior() -> io::Result<DumpableBehavior> {
- unsafe { prctl_1arg(PR_GET_DUMPABLE) }.and_then(TryInto::try_into)
-}
-
-const PR_SET_DUMPABLE: c_int = 4;
-
-/// Set the state of the `dumpable` attribute, which determines whether the
-/// process can be traced and whether core dumps are produced for the calling
-/// process upon delivery of a signal whose default behavior is to produce a
-/// core dump.
-///
-/// A similar function with the same name is available on FreeBSD (as part of
-/// the `procctl` interface), but it has an extra argument which allows to
-/// select a process other then the current process.
-///
-/// # References
-/// - [`prctl(PR_SET_DUMPABLE,...)`]
-///
-/// [`prctl(PR_SET_DUMPABLE,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn set_dumpable_behavior(config: DumpableBehavior) -> io::Result<()> {
- unsafe { prctl_2args(PR_SET_DUMPABLE, config as usize as *mut _) }.map(|_r| ())
-}
-
-//
-// PR_GET_UNALIGN/PR_SET_UNALIGN
-//
-
-const PR_GET_UNALIGN: c_int = 5;
-
-bitflags! {
- /// `PR_UNALIGN_*`.
- pub struct UnalignedAccessControl: u32 {
- /// Silently fix up unaligned user accesses.
- const NO_PRINT = 1;
- /// Generate `SIGBUS` on unaligned user access.
- const SIGBUS = 2;
- }
-}
-
-/// Get unaligned access control bits.
-///
-/// # References
-/// - [`prctl(PR_GET_UNALIGN,...)`]
-///
-/// [`prctl(PR_GET_UNALIGN,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn unaligned_access_control() -> io::Result<UnalignedAccessControl> {
- let r = unsafe { prctl_get_at_arg2_optional::<c_uint>(PR_GET_UNALIGN)? };
- UnalignedAccessControl::from_bits(r).ok_or(io::Errno::RANGE)
-}
-
-const PR_SET_UNALIGN: c_int = 6;
-
-/// Set unaligned access control bits.
-///
-/// # References
-/// - [`prctl(PR_SET_UNALIGN,...)`]
-///
-/// [`prctl(PR_SET_UNALIGN,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn set_unaligned_access_control(config: UnalignedAccessControl) -> io::Result<()> {
- unsafe { prctl_2args(PR_SET_UNALIGN, config.bits() as usize as *mut _) }.map(|_r| ())
-}
-
-//
-// PR_GET_FPEMU/PR_SET_FPEMU
-//
-
-const PR_GET_FPEMU: c_int = 9;
-
-bitflags! {
- /// `PR_FPEMU_*`.
- pub struct FloatingPointEmulationControl: u32 {
- /// Silently emulate floating point operations accesses.
- const NO_PRINT = 1;
- /// Don't emulate floating point operations, send `SIGFPE` instead.
- const SIGFPE = 2;
- }
-}
-
-/// Get floating point emulation control bits.
-///
-/// # References
-/// - [`prctl(PR_GET_FPEMU,...)`]
-///
-/// [`prctl(PR_GET_FPEMU,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn floating_point_emulation_control() -> io::Result<FloatingPointEmulationControl> {
- let r = unsafe { prctl_get_at_arg2_optional::<c_uint>(PR_GET_FPEMU)? };
- FloatingPointEmulationControl::from_bits(r).ok_or(io::Errno::RANGE)
-}
-
-const PR_SET_FPEMU: c_int = 10;
-
-/// Set floating point emulation control bits.
-///
-/// # References
-/// - [`prctl(PR_SET_FPEMU,...)`]
-///
-/// [`prctl(PR_SET_FPEMU,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn set_floating_point_emulation_control(
- config: FloatingPointEmulationControl,
-) -> io::Result<()> {
- unsafe { prctl_2args(PR_SET_FPEMU, config.bits() as usize as *mut _) }.map(|_r| ())
-}
-
-//
-// PR_GET_FPEXC/PR_SET_FPEXC
-//
-
-const PR_GET_FPEXC: c_int = 11;
-
-bitflags! {
- /// Zero means floating point exceptions are disabled.
- pub struct FloatingPointExceptionMode: u32 {
- /// Async non-recoverable exception mode.
- const NONRECOV = 1;
- /// Async recoverable exception mode.
- const ASYNC = 2;
- /// Precise exception mode.
- const PRECISE = 3;
-
- /// Use FPEXC for floating point exception enables.
- const SW_ENABLE = 0x80;
- /// Floating point divide by zero.
- const DIV = 0x01_0000;
- /// Floating point overflow.
- const OVF = 0x02_0000;
- /// Floating point underflow.
- const UND = 0x04_0000;
- /// Floating point inexact result.
- const RES = 0x08_0000;
- /// Floating point invalid operation.
- const INV = 0x10_0000;
- }
-}
-
-/// Get floating point exception mode.
-///
-/// # References
-/// - [`prctl(PR_GET_FPEXC,...)`]
-///
-/// [`prctl(PR_GET_FPEXC,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn floating_point_exception_mode() -> io::Result<Option<FloatingPointExceptionMode>> {
- unsafe { prctl_get_at_arg2_optional::<c_uint>(PR_GET_FPEXC) }
- .map(FloatingPointExceptionMode::from_bits)
-}
-
-const PR_SET_FPEXC: c_int = 12;
-
-/// Set floating point exception mode.
-///
-/// # References
-/// - [`prctl(PR_SET_FPEXC,...)`]
-///
-/// [`prctl(PR_SET_FPEXC,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn set_floating_point_exception_mode(
- config: Option<FloatingPointExceptionMode>,
-) -> io::Result<()> {
- let config = config.as_ref().map_or(0, FloatingPointExceptionMode::bits);
- unsafe { prctl_2args(PR_SET_FPEXC, config as usize as *mut _) }.map(|_r| ())
-}
-
-//
-// PR_GET_TIMING/PR_SET_TIMING
-//
-
-const PR_GET_TIMING: c_int = 13;
-
-const PR_TIMING_STATISTICAL: i32 = 0;
-const PR_TIMING_TIMESTAMP: i32 = 1;
-
-/// `PR_TIMING_*`.
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-#[repr(i32)]
-pub enum TimingMethod {
- /// Normal, traditional, statistical process timing.
- Statistical = PR_TIMING_STATISTICAL,
- /// Accurate timestamp based process timing.
- TimeStamp = PR_TIMING_TIMESTAMP,
-}
-
-impl TryFrom<i32> for TimingMethod {
- type Error = io::Errno;
-
- fn try_from(value: i32) -> Result<Self, Self::Error> {
- match value {
- PR_TIMING_STATISTICAL => Ok(Self::Statistical),
- PR_TIMING_TIMESTAMP => Ok(Self::TimeStamp),
- _ => Err(io::Errno::RANGE),
- }
- }
-}
-
-/// Get which process timing method is currently in use.
-///
-/// # References
-/// - [`prctl(PR_GET_TIMING,...)`]
-///
-/// [`prctl(PR_GET_TIMING,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn timing_method() -> io::Result<TimingMethod> {
- unsafe { prctl_1arg(PR_GET_TIMING) }.and_then(TryInto::try_into)
-}
-
-const PR_SET_TIMING: c_int = 14;
-
-/// Set whether to use (normal, traditional) statistical process timing or
-/// accurate timestamp-based process timing.
-///
-/// # References
-/// - [`prctl(PR_SET_TIMING,...)`]
-///
-/// [`prctl(PR_SET_TIMING,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn set_timing_method(method: TimingMethod) -> io::Result<()> {
- unsafe { prctl_2args(PR_SET_TIMING, method as usize as *mut _) }.map(|_r| ())
-}
-
-//
-// PR_GET_ENDIAN/PR_SET_ENDIAN
-//
-
-const PR_GET_ENDIAN: c_int = 19;
-
-const PR_ENDIAN_BIG: u32 = 0;
-const PR_ENDIAN_LITTLE: u32 = 1;
-const PR_ENDIAN_PPC_LITTLE: u32 = 2;
-
-/// `PR_ENDIAN_*`.
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-#[repr(u32)]
-pub enum EndianMode {
- /// Big endian mode.
- Big = PR_ENDIAN_BIG,
- /// True little endian mode.
- Little = PR_ENDIAN_LITTLE,
- /// `PowerPC` pseudo little endian.
- PowerPCLittle = PR_ENDIAN_PPC_LITTLE,
-}
-
-impl TryFrom<u32> for EndianMode {
- type Error = io::Errno;
-
- fn try_from(value: u32) -> Result<Self, Self::Error> {
- match value {
- PR_ENDIAN_BIG => Ok(Self::Big),
- PR_ENDIAN_LITTLE => Ok(Self::Little),
- PR_ENDIAN_PPC_LITTLE => Ok(Self::PowerPCLittle),
- _ => Err(io::Errno::RANGE),
- }
- }
-}
-
-/// Get the endianness of the calling process.
-///
-/// # References
-/// - [`prctl(PR_GET_ENDIAN,...)`]
-///
-/// [`prctl(PR_GET_ENDIAN,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn endian_mode() -> io::Result<EndianMode> {
- unsafe { prctl_get_at_arg2::<c_uint, _>(PR_GET_ENDIAN) }
-}
-
-const PR_SET_ENDIAN: c_int = 20;
-
-/// Set the endianness of the calling process.
-///
-/// # References
-/// - [`prctl(PR_SET_ENDIAN,...)`]
-///
-/// # Safety
-///
-/// Please ensure the conditions necessary to safely call this function,
-/// as detailed in the references above.
-///
-/// [`prctl(PR_SET_ENDIAN,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub unsafe fn set_endian_mode(mode: EndianMode) -> io::Result<()> {
- prctl_2args(PR_SET_ENDIAN, mode as usize as *mut _).map(|_r| ())
-}
-
-//
-// PR_GET_TSC/PR_SET_TSC
-//
-
-const PR_GET_TSC: c_int = 25;
-
-const PR_TSC_ENABLE: u32 = 1;
-const PR_TSC_SIGSEGV: u32 = 2;
-
-/// `PR_TSC_*`.
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-#[repr(u32)]
-pub enum TimeStampCounterReadability {
- /// Allow the use of the timestamp counter.
- Readable = PR_TSC_ENABLE,
- /// Throw a `SIGSEGV` instead of reading the TSC.
- RaiseSIGSEGV = PR_TSC_SIGSEGV,
-}
-
-impl TryFrom<u32> for TimeStampCounterReadability {
- type Error = io::Errno;
-
- fn try_from(value: u32) -> Result<Self, Self::Error> {
- match value {
- PR_TSC_ENABLE => Ok(Self::Readable),
- PR_TSC_SIGSEGV => Ok(Self::RaiseSIGSEGV),
- _ => Err(io::Errno::RANGE),
- }
- }
-}
-
-/// Get the state of the flag determining if the timestamp counter can be read.
-///
-/// # References
-/// - [`prctl(PR_GET_TSC,...)`]
-///
-/// [`prctl(PR_GET_TSC,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn time_stamp_counter_readability() -> io::Result<TimeStampCounterReadability> {
- unsafe { prctl_get_at_arg2::<c_uint, _>(PR_GET_TSC) }
-}
-
-const PR_SET_TSC: c_int = 26;
-
-/// Set the state of the flag determining if the timestamp counter can be read
-/// by the process.
-///
-/// # References
-/// - [`prctl(PR_SET_TSC,...)`]
-///
-/// [`prctl(PR_SET_TSC,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn set_time_stamp_counter_readability(
- readability: TimeStampCounterReadability,
-) -> io::Result<()> {
- unsafe { prctl_2args(PR_SET_TSC, readability as usize as *mut _) }.map(|_r| ())
-}
-
-//
-// PR_TASK_PERF_EVENTS_DISABLE/PR_TASK_PERF_EVENTS_ENABLE
-//
-
-const PR_TASK_PERF_EVENTS_DISABLE: c_int = 31;
-const PR_TASK_PERF_EVENTS_ENABLE: c_int = 32;
-
-/// Enable or disable all performance counters attached to the calling process.
-///
-/// # References
-/// - [`prctl(PR_TASK_PERF_EVENTS_ENABLE,...)`]
-/// - [`prctl(PR_TASK_PERF_EVENTS_DISABLE,...)`]
-///
-/// [`prctl(PR_TASK_PERF_EVENTS_ENABLE,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-/// [`prctl(PR_TASK_PERF_EVENTS_DISABLE,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn configure_performance_counters(enable: bool) -> io::Result<()> {
- let option = if enable {
- PR_TASK_PERF_EVENTS_ENABLE
- } else {
- PR_TASK_PERF_EVENTS_DISABLE
- };
-
- unsafe { prctl_1arg(option) }.map(|_r| ())
-}
-
-//
-// PR_MCE_KILL_GET/PR_MCE_KILL
-//
-
-const PR_MCE_KILL_GET: c_int = 34;
-
-const PR_MCE_KILL_LATE: u32 = 0;
-const PR_MCE_KILL_EARLY: u32 = 1;
-const PR_MCE_KILL_DEFAULT: u32 = 2;
-
-/// `PR_MCE_KILL_*`.
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-#[repr(u32)]
-pub enum MachineCheckMemoryCorruptionKillPolicy {
- /// Late kill policy.
- Late = PR_MCE_KILL_LATE,
- /// Early kill policy.
- Early = PR_MCE_KILL_EARLY,
- /// System-wide default policy.
- Default = PR_MCE_KILL_DEFAULT,
-}
-
-impl TryFrom<u32> for MachineCheckMemoryCorruptionKillPolicy {
- type Error = io::Errno;
-
- fn try_from(value: u32) -> Result<Self, Self::Error> {
- match value {
- PR_MCE_KILL_LATE => Ok(Self::Late),
- PR_MCE_KILL_EARLY => Ok(Self::Early),
- PR_MCE_KILL_DEFAULT => Ok(Self::Default),
- _ => Err(io::Errno::RANGE),
- }
- }
-}
-
-/// Get the current per-process machine check kill policy.
-///
-/// # References
-/// - [`prctl(PR_MCE_KILL_GET,...)`]
-///
-/// [`prctl(PR_MCE_KILL_GET,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn machine_check_memory_corruption_kill_policy(
-) -> io::Result<MachineCheckMemoryCorruptionKillPolicy> {
- let r = unsafe { prctl_1arg(PR_MCE_KILL_GET)? } as c_uint;
- MachineCheckMemoryCorruptionKillPolicy::try_from(r)
-}
-
-const PR_MCE_KILL: c_int = 33;
-
-const PR_MCE_KILL_CLEAR: usize = 0;
-const PR_MCE_KILL_SET: usize = 1;
-
-/// Set the machine check memory corruption kill policy for the calling thread.
-///
-/// # References
-/// - [`prctl(PR_MCE_KILL,...)`]
-///
-/// [`prctl(PR_MCE_KILL,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn set_machine_check_memory_corruption_kill_policy(
- policy: Option<MachineCheckMemoryCorruptionKillPolicy>,
-) -> io::Result<()> {
- let (sub_operation, policy) = if let Some(policy) = policy {
- (PR_MCE_KILL_SET, policy as usize as *mut _)
- } else {
- (PR_MCE_KILL_CLEAR, ptr::null_mut())
- };
-
- unsafe { prctl_3args(PR_MCE_KILL, sub_operation as *mut _, policy) }.map(|_r| ())
-}
-
-//
-// PR_SET_MM
-//
-
-const PR_SET_MM: c_int = 35;
-
-const PR_SET_MM_START_CODE: u32 = 1;
-const PR_SET_MM_END_CODE: u32 = 2;
-const PR_SET_MM_START_DATA: u32 = 3;
-const PR_SET_MM_END_DATA: u32 = 4;
-const PR_SET_MM_START_STACK: u32 = 5;
-const PR_SET_MM_START_BRK: u32 = 6;
-const PR_SET_MM_BRK: u32 = 7;
-const PR_SET_MM_ARG_START: u32 = 8;
-const PR_SET_MM_ARG_END: u32 = 9;
-const PR_SET_MM_ENV_START: u32 = 10;
-const PR_SET_MM_ENV_END: u32 = 11;
-const PR_SET_MM_AUXV: usize = 12;
-const PR_SET_MM_EXE_FILE: usize = 13;
-const PR_SET_MM_MAP: usize = 14;
-const PR_SET_MM_MAP_SIZE: usize = 15;
-
-/// `PR_SET_MM_*`.
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-#[repr(u32)]
-pub enum VirtualMemoryMapAddress {
- /// Set the address above which the program text can run.
- CodeStart = PR_SET_MM_START_CODE,
- /// Set the address below which the program text can run.
- CodeEnd = PR_SET_MM_END_CODE,
- /// Set the address above which initialized and uninitialized (bss) data
- /// are placed.
- DataStart = PR_SET_MM_START_DATA,
- /// Set the address below which initialized and uninitialized (bss) data
- /// are placed.
- DataEnd = PR_SET_MM_END_DATA,
- /// Set the start address of the stack.
- StackStart = PR_SET_MM_START_STACK,
- /// Set the address above which the program heap can be expanded with `brk`
- /// call.
- BrkStart = PR_SET_MM_START_BRK,
- /// Set the current `brk` value.
- BrkCurrent = PR_SET_MM_BRK,
- /// Set the address above which the program command line is placed.
- ArgStart = PR_SET_MM_ARG_START,
- /// Set the address below which the program command line is placed.
- ArgEnd = PR_SET_MM_ARG_END,
- /// Set the address above which the program environment is placed.
- EnvironmentStart = PR_SET_MM_ENV_START,
- /// Set the address below which the program environment is placed.
- EnvironmentEnd = PR_SET_MM_ENV_END,
-}
-
-/// Modify certain kernel memory map descriptor addresses of the calling
-/// process.
-///
-/// # References
-/// - [`prctl(PR_SET_MM,...)`]
-///
-/// # Safety
-///
-/// Please ensure the conditions necessary to safely call this function,
-/// as detailed in the references above.
-///
-/// [`prctl(PR_SET_MM,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub unsafe fn set_virtual_memory_map_address(
- option: VirtualMemoryMapAddress,
- address: Option<NonNull<c_void>>,
-) -> io::Result<()> {
- let address = address.map_or_else(ptr::null_mut, NonNull::as_ptr);
- prctl_3args(PR_SET_MM, option as usize as *mut _, address).map(|_r| ())
-}
-
-/// Supersede the `/proc/pid/exe` symbolic link with a new one pointing to a
-/// new executable file.
-///
-/// # References
-/// - [`prctl(PR_SET_MM,PR_SET_MM_EXE_FILE,...)`]
-///
-/// [`prctl(PR_SET_MM,PR_SET_MM_EXE_FILE,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn set_executable_file(fd: BorrowedFd) -> io::Result<()> {
- let fd = usize::try_from(fd.as_raw_fd()).map_err(|_r| io::Errno::RANGE)?;
- unsafe { prctl_3args(PR_SET_MM, PR_SET_MM_EXE_FILE as *mut _, fd as *mut _) }.map(|_r| ())
-}
-
-/// Set a new auxiliary vector.
-///
-/// # References
-/// - [`prctl(PR_SET_MM,PR_SET_MM_AUXV,...)`]
-///
-/// # Safety
-///
-/// Please ensure the conditions necessary to safely call this function,
-/// as detailed in the references above.
-///
-/// [`prctl(PR_SET_MM,PR_SET_MM_AUXV,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub unsafe fn set_auxiliary_vector(auxv: &[*const c_void]) -> io::Result<()> {
- syscalls::prctl(
- PR_SET_MM,
- PR_SET_MM_AUXV as *mut _,
- auxv.as_ptr() as *mut _,
- auxv.len() as *mut _,
- ptr::null_mut(),
- )
- .map(|_r| ())
-}
-
-/// Get the size of the [`PrctlMmMap`] the kernel expects.
-///
-/// # References
-/// - [`prctl(PR_SET_MM,PR_SET_MM_MAP_SIZE,...)`]
-///
-/// [`prctl(PR_SET_MM,PR_SET_MM_MAP_SIZE,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn virtual_memory_map_config_struct_size() -> io::Result<usize> {
- let mut value: c_uint = 0;
- let value_ptr = (&mut value) as *mut c_uint;
- unsafe { prctl_3args(PR_SET_MM, PR_SET_MM_MAP_SIZE as *mut _, value_ptr.cast())? };
- Ok(value as usize)
-}
-
-/// This structure provides new memory descriptor map which mostly modifies
-/// `/proc/pid/stat[m]` output for a task.
-/// This mostly done in a sake of checkpoint/restore functionality.
-#[repr(C)]
-#[derive(Debug, Clone)]
-pub struct PrctlMmMap {
- /// Code section start address.
- pub start_code: u64,
- /// Code section end address.
- pub end_code: u64,
- /// Data section start address.
- pub start_data: u64,
- /// Data section end address.
- pub end_data: u64,
- /// brk() start address.
- pub start_brk: u64,
- /// brk() current address.
- pub brk: u64,
- /// Stack start address.
- pub start_stack: u64,
- /// Program command line start address.
- pub arg_start: u64,
- /// Program command line end address.
- pub arg_end: u64,
- /// Program environment start address.
- pub env_start: u64,
- /// Program environment end address.
- pub env_end: u64,
- /// Auxiliary vector start address.
- pub auxv: *mut u64,
- /// Auxiliary vector size.
- pub auxv_size: u32,
- /// File descriptor of executable file that was used to create this
- /// process.
- pub exe_fd: u32,
-}
-
-/// Provides one-shot access to all the addresses by passing in a
-/// [`PrctlMmMap`].
-///
-/// # References
-/// - [`prctl(PR_SET_MM,PR_SET_MM_MAP,...)`]
-///
-/// # Safety
-///
-/// Please ensure the conditions necessary to safely call this function,
-/// as detailed in the references above.
-///
-/// [`prctl(PR_SET_MM,PR_SET_MM_MAP,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub unsafe fn configure_virtual_memory_map(config: &PrctlMmMap) -> io::Result<()> {
- syscalls::prctl(
- PR_SET_MM,
- PR_SET_MM_MAP as *mut _,
- config as *const PrctlMmMap as *mut _,
- mem::size_of::<PrctlMmMap>() as *mut _,
- ptr::null_mut(),
- )
- .map(|_r| ())
-}
-
-//
-// PR_SET_PTRACER
-//
-
-const PR_SET_PTRACER: c_int = 0x59_61_6d_61;
-
-const PR_SET_PTRACER_ANY: usize = usize::MAX;
-
-/// Process ptracer.
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-pub enum PTracer {
- /// None.
- None,
- /// Disable `ptrace` restrictions for the calling process.
- Any,
- /// Specific process.
- ProcessID(Pid),
-}
-
-/// Declare that the ptracer process can `ptrace` the calling process as if it
-/// were a direct process ancestor.
-///
-/// # References
-/// - [`prctl(PR_SET_PTRACER,...)`]
-///
-/// [`prctl(PR_SET_PTRACER,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn set_ptracer(tracer: PTracer) -> io::Result<()> {
- let pid = match tracer {
- PTracer::None => ptr::null_mut(),
- PTracer::Any => PR_SET_PTRACER_ANY as *mut _,
- PTracer::ProcessID(pid) => pid.as_raw_nonzero().get() as usize as *mut _,
- };
-
- unsafe { prctl_2args(PR_SET_PTRACER, pid) }.map(|_r| ())
-}
-
-//
-// PR_GET_CHILD_SUBREAPER/PR_SET_CHILD_SUBREAPER
-//
-
-const PR_GET_CHILD_SUBREAPER: c_int = 37;
-
-/// Get the `child subreaper` setting of the calling process.
-///
-/// # References
-/// - [`prctl(PR_GET_CHILD_SUBREAPER,...)`]
-///
-/// [`prctl(PR_GET_CHILD_SUBREAPER,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn child_subreaper() -> io::Result<Option<Pid>> {
- unsafe {
- let r = prctl_get_at_arg2_optional::<c_uint>(PR_GET_CHILD_SUBREAPER)?;
- Ok(Pid::from_raw(r as RawPid))
- }
-}
-
-const PR_SET_CHILD_SUBREAPER: c_int = 36;
-
-/// Set the `child subreaper` attribute of the calling process.
-///
-/// # References
-/// - [`prctl(PR_SET_CHILD_SUBREAPER,...)`]
-///
-/// [`prctl(PR_SET_CHILD_SUBREAPER,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn set_child_subreaper(pid: Option<Pid>) -> io::Result<()> {
- let pid = pid.map_or(0_usize, |pid| pid.as_raw_nonzero().get() as usize);
- unsafe { prctl_2args(PR_SET_CHILD_SUBREAPER, pid as *mut _) }.map(|_r| ())
-}
-
-//
-// PR_GET_FP_MODE/PR_SET_FP_MODE
-//
-
-const PR_GET_FP_MODE: c_int = 46;
-
-const PR_FP_MODE_FR: u32 = 1_u32 << 0;
-const PR_FP_MODE_FRE: u32 = 1_u32 << 1;
-
-/// `PR_FP_MODE_*`.
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-#[repr(u32)]
-pub enum FloatingPointMode {
- /// 64-bit floating point registers.
- FloatingPointRegisters = PR_FP_MODE_FR,
- /// Enable emulation of 32-bit floating-point mode.
- FloatingPointEmulation = PR_FP_MODE_FRE,
-}
-
-impl TryFrom<u32> for FloatingPointMode {
- type Error = io::Errno;
-
- fn try_from(value: u32) -> Result<Self, Self::Error> {
- match value {
- PR_FP_MODE_FR => Ok(Self::FloatingPointRegisters),
- PR_FP_MODE_FRE => Ok(Self::FloatingPointEmulation),
- _ => Err(io::Errno::RANGE),
- }
- }
-}
-
-/// Get the current floating point mode.
-///
-/// # References
-/// - [`prctl(PR_GET_FP_MODE,...)`]
-///
-/// [`prctl(PR_GET_FP_MODE,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn floating_point_mode() -> io::Result<FloatingPointMode> {
- let r = unsafe { prctl_1arg(PR_GET_FP_MODE)? } as c_uint;
- FloatingPointMode::try_from(r)
-}
-
-const PR_SET_FP_MODE: c_int = 45;
-
-/// Allow control of the floating point mode from user space.
-///
-/// # References
-/// - [`prctl(PR_SET_FP_MODE,...)`]
-///
-/// [`prctl(PR_SET_FP_MODE,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn set_floating_point_mode(mode: FloatingPointMode) -> io::Result<()> {
- unsafe { prctl_2args(PR_SET_FP_MODE, mode as usize as *mut _) }.map(|_r| ())
-}
-
-//
-// PR_GET_SPECULATION_CTRL/PR_SET_SPECULATION_CTRL
-//
-
-const PR_GET_SPECULATION_CTRL: c_int = 52;
-
-const PR_SPEC_STORE_BYPASS: u32 = 0;
-const PR_SPEC_INDIRECT_BRANCH: u32 = 1;
-const PR_SPEC_L1D_FLUSH: u32 = 2;
-
-/// `PR_SPEC_*`.
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-#[repr(u32)]
-pub enum SpeculationFeature {
- /// Set the state of the speculative store bypass misfeature.
- SpeculativeStoreBypass = PR_SPEC_STORE_BYPASS,
- /// Set the state of the indirect branch speculation misfeature.
- IndirectBranchSpeculation = PR_SPEC_INDIRECT_BRANCH,
- /// Flush L1D Cache on context switch out of the task.
- FlushL1DCacheOnContextSwitchOutOfTask = PR_SPEC_L1D_FLUSH,
-}
-
-impl TryFrom<u32> for SpeculationFeature {
- type Error = io::Errno;
-
- fn try_from(value: u32) -> Result<Self, Self::Error> {
- match value {
- PR_SPEC_STORE_BYPASS => Ok(Self::SpeculativeStoreBypass),
- PR_SPEC_INDIRECT_BRANCH => Ok(Self::IndirectBranchSpeculation),
- PR_SPEC_L1D_FLUSH => Ok(Self::FlushL1DCacheOnContextSwitchOutOfTask),
- _ => Err(io::Errno::RANGE),
- }
- }
-}
-
-bitflags! {
- /// `PR_SPEC_*`.
- pub struct SpeculationFeatureControl: u32 {
- /// The speculation feature is enabled, mitigation is disabled.
- const ENABLE = 1_u32 << 1;
- /// The speculation feature is disabled, mitigation is enabled.
- const DISABLE = 1_u32 << 2;
- /// The speculation feature is disabled, mitigation is enabled, and it cannot be undone.
- const FORCE_DISABLE = 1_u32 << 3;
- /// The speculation feature is disabled, mitigation is enabled, and the state will be cleared on `execve`.
- const DISABLE_NOEXEC = 1_u32 << 4;
- }
-}
-
-bitflags! {
- /// Zero means the processors are not vulnerable.
- pub struct SpeculationFeatureState: u32 {
- /// Mitigation can be controlled per thread by `PR_SET_SPECULATION_CTRL`.
- const PRCTL = 1_u32 << 0;
- /// The speculation feature is enabled, mitigation is disabled.
- const ENABLE = 1_u32 << 1;
- /// The speculation feature is disabled, mitigation is enabled.
- const DISABLE = 1_u32 << 2;
- /// The speculation feature is disabled, mitigation is enabled, and it cannot be undone.
- const FORCE_DISABLE = 1_u32 << 3;
- /// The speculation feature is disabled, mitigation is enabled, and the state will be cleared on `execve`.
- const DISABLE_NOEXEC = 1_u32 << 4;
- }
-}
-
-/// Get the state of the speculation misfeature.
-///
-/// # References
-/// - [`prctl(PR_GET_SPECULATION_CTRL,...)`]
-///
-/// [`prctl(PR_GET_SPECULATION_CTRL,...)`]: https://www.kernel.org/doc/html/v5.18/userspace-api/spec_ctrl.html
-#[inline]
-pub fn speculative_feature_state(
- feature: SpeculationFeature,
-) -> io::Result<Option<SpeculationFeatureState>> {
- let r = unsafe { prctl_2args(PR_GET_SPECULATION_CTRL, feature as usize as *mut _)? } as c_uint;
- Ok(SpeculationFeatureState::from_bits(r))
-}
-
-const PR_SET_SPECULATION_CTRL: c_int = 53;
-
-/// Sets the state of the speculation misfeature.
-///
-/// # References
-/// - [`prctl(PR_SET_SPECULATION_CTRL,...)`]
-///
-/// [`prctl(PR_SET_SPECULATION_CTRL,...)`]: https://www.kernel.org/doc/html/v5.18/userspace-api/spec_ctrl.html
-#[inline]
-pub fn control_speculative_feature(
- feature: SpeculationFeature,
- config: SpeculationFeatureControl,
-) -> io::Result<()> {
- let feature = feature as usize as *mut _;
- let config = config.bits() as usize as *mut _;
- unsafe { prctl_3args(PR_SET_SPECULATION_CTRL, feature, config) }.map(|_r| ())
-}
-
-//
-// PR_GET_IO_FLUSHER/PR_SET_IO_FLUSHER
-//
-
-const PR_GET_IO_FLUSHER: c_int = 58;
-
-/// Get the `IO_FLUSHER` state of the caller.
-///
-/// # References
-/// - [`prctl(PR_GET_IO_FLUSHER,...)`]
-///
-/// [`prctl(PR_GET_IO_FLUSHER,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn is_io_flusher() -> io::Result<bool> {
- unsafe { prctl_1arg(PR_GET_IO_FLUSHER) }.map(|r| r != 0)
-}
-
-const PR_SET_IO_FLUSHER: c_int = 57;
-
-/// Put the process in the `IO_FLUSHER` state, allowing it to make progress
-/// when allocating memory.
-///
-/// # References
-/// - [`prctl(PR_SET_IO_FLUSHER,...)`]
-///
-/// [`prctl(PR_SET_IO_FLUSHER,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn configure_io_flusher_behavior(enable: bool) -> io::Result<()> {
- unsafe { prctl_2args(PR_SET_IO_FLUSHER, enable as usize as *mut _) }.map(|_r| ())
-}
-
-//
-// PR_PAC_GET_ENABLED_KEYS/PR_PAC_SET_ENABLED_KEYS
-//
-
-const PR_PAC_GET_ENABLED_KEYS: c_int = 61;
-
-bitflags! {
- /// `PR_PAC_AP*`.
- pub struct PointerAuthenticationKeys: u32 {
- /// Instruction authentication key `A`.
- const INSTRUCTION_AUTHENTICATION_KEY_A = 1_u32 << 0;
- /// Instruction authentication key `B`.
- const INSTRUCTION_AUTHENTICATION_KEY_B = 1_u32 << 1;
- /// Data authentication key `A`.
- const DATA_AUTHENTICATION_KEY_A = 1_u32 << 2;
- /// Data authentication key `B`.
- const DATA_AUTHENTICATION_KEY_B = 1_u32 << 3;
- /// Generic authentication `A` key.
- const GENERIC_AUTHENTICATION_KEY_A = 1_u32 << 4;
- }
-}
-
-/// Get enabled pointer authentication keys.
-///
-/// # References
-/// - [`prctl(PR_PAC_GET_ENABLED_KEYS,...)`]
-///
-/// [`prctl(PR_PAC_GET_ENABLED_KEYS,...)`]: https://www.kernel.org/doc/html/v5.18/arm64/pointer-authentication.html
-#[inline]
-pub fn enabled_pointer_authentication_keys() -> io::Result<PointerAuthenticationKeys> {
- let r = unsafe { prctl_1arg(PR_PAC_GET_ENABLED_KEYS)? } as c_uint;
- PointerAuthenticationKeys::from_bits(r).ok_or(io::Errno::RANGE)
-}
-
-const PR_PAC_SET_ENABLED_KEYS: c_int = 60;
-
-/// Set enabled pointer authentication keys.
-///
-/// # References
-/// - [`prctl(PR_PAC_SET_ENABLED_KEYS,...)`]
-///
-/// # Safety
-///
-/// Please ensure the conditions necessary to safely call this function,
-/// as detailed in the references above.
-///
-/// [`prctl(PR_PAC_SET_ENABLED_KEYS,...)`]: https://www.kernel.org/doc/html/v5.18/arm64/pointer-authentication.html
-#[inline]
-pub unsafe fn configure_pointer_authentication_keys(
- config: impl Iterator<Item = (PointerAuthenticationKeys, bool)>,
-) -> io::Result<()> {
- let mut affected_keys: u32 = 0;
- let mut enabled_keys: u32 = 0;
-
- for (key, enable) in config {
- let key = key.bits();
- affected_keys |= key;
-
- if enable {
- enabled_keys |= key;
- } else {
- enabled_keys &= !key;
- }
- }
-
- if affected_keys == 0 {
- return Ok(()); // Nothing to do.
- }
-
- prctl_3args(
- PR_PAC_SET_ENABLED_KEYS,
- affected_keys as usize as *mut _,
- enabled_keys as usize as *mut _,
- )
- .map(|_r| ())
-}
-
-//
-// PR_SET_VMA
-//
-
-const PR_SET_VMA: c_int = 0x53_56_4d_41;
-
-const PR_SET_VMA_ANON_NAME: usize = 0;
-
-/// Set the name for a virtual memory region.
-///
-/// # References
-/// - [`prctl(PR_SET_VMA,PR_SET_VMA_ANON_NAME,...)`]
-///
-/// [`prctl(PR_SET_VMA,PR_SET_VMA_ANON_NAME,...)`]: https://lwn.net/Articles/867818/
-#[inline]
-pub fn set_virtual_memory_region_name(region: &[u8], name: Option<&CStr>) -> io::Result<()> {
- unsafe {
- syscalls::prctl(
- PR_SET_VMA,
- PR_SET_VMA_ANON_NAME as *mut _,
- region.as_ptr() as *mut _,
- region.len() as *mut _,
- name.map_or_else(ptr::null, CStr::as_ptr) as *mut _,
- )
- .map(|_r| ())
- }
-}
diff --git a/vendor/rustix-0.37.6/src/process/priority.rs b/vendor/rustix-0.37.6/src/process/priority.rs
deleted file mode 100644
index f8d061c6b..000000000
--- a/vendor/rustix-0.37.6/src/process/priority.rs
+++ /dev/null
@@ -1,131 +0,0 @@
-use crate::process::{Pid, Uid};
-use crate::{backend, io};
-
-/// `nice(inc)`—Adjust the scheduling priority of the current process.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/nice.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/nice.2.html
-#[inline]
-pub fn nice(inc: i32) -> io::Result<i32> {
- backend::process::syscalls::nice(inc)
-}
-
-/// `getpriority(PRIO_USER, uid)`—Get the scheduling priority of the given
-/// user.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getpriority.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/getpriority.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setpriority.2.html
-#[cfg(not(target_os = "redox"))]
-#[inline]
-#[doc(alias = "getpriority")]
-pub fn getpriority_user(uid: Uid) -> io::Result<i32> {
- backend::process::syscalls::getpriority_user(uid)
-}
-
-/// `getpriority(PRIO_PGRP, gid)`—Get the scheduling priority of the given
-/// process group.
-///
-/// A `pgid` of `None` means the process group of the calling process.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getpriority.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/getpriority.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setpriority.2.html
-#[cfg(not(target_os = "redox"))]
-#[inline]
-#[doc(alias = "getpriority")]
-pub fn getpriority_pgrp(pgid: Option<Pid>) -> io::Result<i32> {
- backend::process::syscalls::getpriority_pgrp(pgid)
-}
-
-/// `getpriority(PRIO_PROCESS, pid)`—Get the scheduling priority of the given
-/// process.
-///
-/// A `pid` of `None` means the calling process.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getpriority.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/getpriority.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setpriority.2.html
-#[cfg(not(target_os = "redox"))]
-#[inline]
-#[doc(alias = "getpriority")]
-pub fn getpriority_process(pid: Option<Pid>) -> io::Result<i32> {
- backend::process::syscalls::getpriority_process(pid)
-}
-
-/// `setpriority(PRIO_USER, uid)`—Get the scheduling priority of the given
-/// user.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setpriority.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/setpriority.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setpriority.2.html
-#[cfg(not(target_os = "redox"))]
-#[inline]
-#[doc(alias = "setpriority")]
-pub fn setpriority_user(uid: Uid, priority: i32) -> io::Result<()> {
- backend::process::syscalls::setpriority_user(uid, priority)
-}
-
-/// `setpriority(PRIO_PGRP, pgid)`—Get the scheduling priority of the given
-/// process group.
-///
-/// A `pgid` of `None` means the process group of the calling process.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setpriority.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/setpriority.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setpriority.2.html
-#[cfg(not(target_os = "redox"))]
-#[inline]
-#[doc(alias = "setpriority")]
-pub fn setpriority_pgrp(pgid: Option<Pid>, priority: i32) -> io::Result<()> {
- backend::process::syscalls::setpriority_pgrp(pgid, priority)
-}
-
-/// `setpriority(PRIO_PROCESS, pid)`—Get the scheduling priority of the given
-/// process.
-///
-/// A `pid` of `None` means the calling process.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-/// - [Apple]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setpriority.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/setpriority.2.html
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setpriority.2.html
-#[cfg(not(target_os = "redox"))]
-#[inline]
-#[doc(alias = "setpriority")]
-pub fn setpriority_process(pid: Option<Pid>, priority: i32) -> io::Result<()> {
- backend::process::syscalls::setpriority_process(pid, priority)
-}
diff --git a/vendor/rustix-0.37.6/src/process/procctl.rs b/vendor/rustix-0.37.6/src/process/procctl.rs
deleted file mode 100644
index 9e2b3c6e6..000000000
--- a/vendor/rustix-0.37.6/src/process/procctl.rs
+++ /dev/null
@@ -1,520 +0,0 @@
-//! Bindings for the FreeBSD `procctl` system call.
-//!
-//! There are similarities (but also differences) with Linux's `prctl` system
-//! call, whose interface is located in the `prctl.rs` file.
-
-#![allow(unsafe_code)]
-
-use core::mem::MaybeUninit;
-use core::ptr;
-
-use bitflags::bitflags;
-
-use crate::backend::c::{c_int, c_uint, c_void};
-use crate::backend::process::syscalls;
-use crate::backend::process::types::{RawId, Signal};
-use crate::io;
-use crate::process::{Pid, RawPid};
-
-//
-// Helper functions.
-//
-
-/// Subset of `idtype_t` C enum, with only the values allowed by `procctl`.
-#[repr(i32)]
-pub enum IdType {
- /// Process id.
- Pid = 0,
- /// Process group id.
- Pgid = 2,
-}
-
-/// A process selector for use with the `procctl` interface.
-///
-/// `None` represents the current process. `Some((IdType::Pid, pid))`
-/// represents the process with pid `pid`. `Some((IdType::Pgid, pgid))`
-/// represents the control processes belonging to the process group with id
-/// `pgid`.
-pub type ProcSelector = Option<(IdType, Pid)>;
-fn proc_selector_to_raw(selector: ProcSelector) -> (IdType, RawPid) {
- match selector {
- Some((idtype, id)) => (idtype, id.as_raw_nonzero().get()),
- None => (IdType::Pid, 0),
- }
-}
-
-#[inline]
-pub(crate) unsafe fn procctl(
- option: c_int,
- process: ProcSelector,
- data: *mut c_void,
-) -> io::Result<()> {
- let (idtype, id) = proc_selector_to_raw(process);
- syscalls::procctl(idtype as c_uint, id as RawId, option, data)
-}
-
-#[inline]
-pub(crate) unsafe fn procctl_set<P>(
- option: c_int,
- process: ProcSelector,
- data: &P,
-) -> io::Result<()> {
- procctl(option, process, (data as *const P as *mut P).cast())
-}
-
-#[inline]
-pub(crate) unsafe fn procctl_get_optional<P>(
- option: c_int,
- process: ProcSelector,
-) -> io::Result<P> {
- let mut value: MaybeUninit<P> = MaybeUninit::uninit();
- procctl(option, process, value.as_mut_ptr().cast())?;
- Ok(value.assume_init())
-}
-
-//
-// PROC_PDEATHSIG_STATUS/PROC_PDEATHSIG_CTL
-//
-
-const PROC_PDEATHSIG_STATUS: c_int = 12;
-
-/// Get the current value of the parent process death signal.
-///
-/// # References
-/// - [Linux: `prctl(PR_GET_PDEATHSIG,...)`]
-/// - [FreeBSD: `procctl(PROC_PDEATHSIG_STATUS,...)`]
-///
-/// [Linux: `prctl(PR_GET_PDEATHSIG,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-/// [FreeBSD: `procctl(PROC_PDEATHSIG_STATUS,...)`]: https://www.freebsd.org/cgi/man.cgi?query=procctl&sektion=2
-#[inline]
-pub fn parent_process_death_signal() -> io::Result<Option<Signal>> {
- unsafe { procctl_get_optional::<c_int>(PROC_PDEATHSIG_STATUS, None) }.map(Signal::from_raw)
-}
-
-const PROC_PDEATHSIG_CTL: c_int = 11;
-
-/// Set the parent-death signal of the calling process.
-///
-/// # References
-/// - [Linux: `prctl(PR_SET_PDEATHSIG,...)`]
-/// - [FreeBSD: `procctl(PROC_PDEATHSIG_CTL,...)`]
-///
-/// [Linux: `prctl(PR_SET_PDEATHSIG,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-/// [FreeBSD: `procctl(PROC_PDEATHSIG_CTL,...)`]: https://www.freebsd.org/cgi/man.cgi?query=procctl&sektion=2
-#[inline]
-pub fn set_parent_process_death_signal(signal: Option<Signal>) -> io::Result<()> {
- let signal = signal.map_or(0, |signal| signal as c_int);
- unsafe { procctl_set::<c_int>(PROC_PDEATHSIG_CTL, None, &signal) }
-}
-
-//
-// PROC_TRACE_CTL
-//
-
-const PROC_TRACE_CTL: c_int = 7;
-
-const PROC_TRACE_CTL_ENABLE: i32 = 1;
-const PROC_TRACE_CTL_DISABLE: i32 = 2;
-const PROC_TRACE_CTL_DISABLE_EXEC: i32 = 3;
-
-/// `PROC_TRACE_CTL_*`.
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-#[repr(i32)]
-pub enum DumpableBehavior {
- /// Not dumpable.
- NotDumpable = PROC_TRACE_CTL_DISABLE,
- /// Dumpable.
- Dumpable = PROC_TRACE_CTL_ENABLE,
- /// Not dumpable, and this behaviour is preserved across `execve` calls.
- NotDumpableExecPreserved = PROC_TRACE_CTL_DISABLE_EXEC,
-}
-
-/// Set the state of the `dumpable` attribute for the process indicated by
-/// `idtype` and `id`. This determines whether the process can be traced and
-/// whether core dumps are produced for the process upon delivery of a signal
-/// whose default behavior is to produce a core dump.
-///
-/// This is similar to `set_dumpable_behavior` on Linux, with the exception
-/// that on FreeBSD there is an extra argument `process`. When `process` is set
-/// to `None`, the operation is performed for the current process, like on
-/// Linux.
-///
-/// # References
-/// - [`procctl(PROC_TRACE_CTL,...)`]
-///
-/// [`procctl(PROC_TRACE_CTL,...)`]: https://www.freebsd.org/cgi/man.cgi?query=procctl&sektion=2
-#[inline]
-pub fn set_dumpable_behavior(process: ProcSelector, config: DumpableBehavior) -> io::Result<()> {
- unsafe { procctl(PROC_TRACE_CTL, process, config as usize as *mut _) }
-}
-
-//
-// PROC_TRACE_STATUS
-//
-
-const PROC_TRACE_STATUS: c_int = 8;
-
-/// Tracing status as returned by [`trace_status`].
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-pub enum TracingStatus {
- /// Tracing is disabled for the process.
- NotTraceble,
- /// Tracing is not disabled for the process, but not debugger/tracer is
- /// attached.
- Tracable,
- /// The process is being traced by the process whose pid is stored in the
- /// first component of this variant.
- BeingTraced(Pid),
-}
-
-/// Get the tracing status of the process indicated by `idtype` and `id`.
-///
-/// # References
-/// - [`procctl(PROC_TRACE_STATUS,...)`]
-///
-/// [`procctl(PROC_TRACE_STATUS,...)`]: https://www.freebsd.org/cgi/man.cgi?query=procctl&sektion=2
-#[inline]
-pub fn trace_status(process: ProcSelector) -> io::Result<TracingStatus> {
- let val = unsafe { procctl_get_optional::<c_int>(PROC_TRACE_STATUS, process) }?;
- match val {
- -1 => Ok(TracingStatus::NotTraceble),
- 0 => Ok(TracingStatus::Tracable),
- pid => {
- let pid = unsafe { Pid::from_raw(pid as RawPid) }.ok_or(io::Errno::RANGE)?;
- Ok(TracingStatus::BeingTraced(pid))
- }
- }
-}
-
-//
-// PROC_REAP_*
-//
-
-const PROC_REAP_ACQUIRE: c_int = 2;
-const PROC_REAP_RELEASE: c_int = 3;
-
-/// Acquire or release the reaper status of the calling process.
-///
-/// # References
-/// - [FreeBSD: `procctl(PROC_REAP_ACQUIRE/RELEASE,...)`]
-///
-/// [FreeBSD: `procctl(PROC_REAP_ACQUIRE/RELEASE,...)`]: https://www.freebsd.org/cgi/man.cgi?query=procctl&sektion=2
-#[inline]
-pub fn set_reaper_status(reaper: bool) -> io::Result<()> {
- unsafe {
- procctl(
- if reaper {
- PROC_REAP_ACQUIRE
- } else {
- PROC_REAP_RELEASE
- },
- None,
- ptr::null_mut(),
- )
- }
-}
-
-const PROC_REAP_STATUS: c_int = 4;
-
-bitflags! {
- /// `REAPER_STATUS_*`.
- pub struct ReaperStatusFlags: c_uint {
- /// The process has acquired reaper status.
- const OWNED = 1;
- /// The process is the root of the reaper tree (pid 1).
- const REALINIT = 2;
- }
-}
-
-#[repr(C)]
-struct procctl_reaper_status {
- rs_flags: c_uint,
- rs_children: c_uint,
- rs_descendants: c_uint,
- rs_reaper: RawPid,
- rs_pid: RawPid,
- rs_pad0: [c_uint; 15],
-}
-
-/// Reaper status as returned by [`get_reaper_status`].
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-pub struct ReaperStatus {
- /// The flags.
- pub flags: ReaperStatusFlags,
- /// The number of children of the reaper among the descendants.
- pub children: usize,
- /// The total number of descendants of the reaper(s), not counting
- /// descendants of the reaper in the subtree.
- pub descendants: usize,
- /// The pid of the reaper for the specified process id.
- pub reaper: Pid,
- /// The pid of one reaper child if there are any descendants.
- pub pid: Pid,
-}
-
-/// Get information about the reaper of the specified process (or the process
-/// itself if it is a reaper).
-///
-/// # References
-/// - [FreeBSD: `procctl(PROC_REAP_STATUS,...)`]
-///
-/// [FreeBSD: `procctl(PROC_REAP_STATUS,...)`]: https://www.freebsd.org/cgi/man.cgi?query=procctl&sektion=2
-#[inline]
-pub fn get_reaper_status(process: ProcSelector) -> io::Result<ReaperStatus> {
- let raw = unsafe { procctl_get_optional::<procctl_reaper_status>(PROC_REAP_STATUS, process) }?;
- Ok(ReaperStatus {
- flags: ReaperStatusFlags::from_bits_truncate(raw.rs_flags),
- children: raw.rs_children as _,
- descendants: raw.rs_descendants as _,
- reaper: unsafe { Pid::from_raw(raw.rs_reaper) }.ok_or(io::Errno::RANGE)?,
- pid: unsafe { Pid::from_raw(raw.rs_pid) }.ok_or(io::Errno::RANGE)?,
- })
-}
-
-const PROC_REAP_GETPIDS: c_int = 5;
-
-bitflags! {
- /// `REAPER_PIDINFO_*`.
- pub struct PidInfoFlags: c_uint {
- /// This structure was filled by the kernel.
- const VALID = 1;
- /// The pid field identifies a direct child of the reaper.
- const CHILD = 2;
- /// The reported process is itself a reaper. Descendants of a subordinate reaper are not reported.
- const REAPER = 4;
- }
-}
-
-#[repr(C)]
-#[derive(Default, Clone)]
-struct procctl_reaper_pidinfo {
- pi_pid: RawPid,
- pi_subtree: RawPid,
- pi_flags: c_uint,
- pi_pad0: [c_uint; 15],
-}
-
-#[repr(C)]
-struct procctl_reaper_pids {
- rp_count: c_uint,
- rp_pad0: [c_uint; 15],
- rp_pids: *mut procctl_reaper_pidinfo,
-}
-
-/// A child process of a reaper.
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-pub struct PidInfo {
- /// The flags of the process.
- pub flags: PidInfoFlags,
- /// The pid of the process.
- pub pid: Pid,
- /// The pid of the child of the reaper which is the (grand-..)parent of the
- /// process.
- pub subtree: Pid,
-}
-
-/// Get the list of descendants of the specified reaper process.
-///
-/// # References
-/// - [FreeBSD: `procctl(PROC_REAP_GETPIDS,...)`]
-///
-/// [FreeBSD: `procctl(PROC_REAP_GETPIDS,...)`]: https://www.freebsd.org/cgi/man.cgi?query=procctl&sektion=2
-pub fn get_reaper_pids(process: ProcSelector) -> io::Result<Vec<PidInfo>> {
- // Sadly no better way to guarantee that we get all the results than to
- // allocate ~8MB of memory..
- const PID_MAX: usize = 99999;
- let mut pids: Vec<procctl_reaper_pidinfo> = vec![Default::default(); PID_MAX];
- let mut pinfo = procctl_reaper_pids {
- rp_count: PID_MAX as _,
- rp_pad0: [0; 15],
- rp_pids: pids.as_mut_slice().as_mut_ptr(),
- };
- unsafe {
- procctl(
- PROC_REAP_GETPIDS,
- process,
- (&mut pinfo as *mut procctl_reaper_pids).cast(),
- )?
- };
- let mut result = Vec::new();
- for raw in pids.into_iter() {
- let flags = PidInfoFlags::from_bits_truncate(raw.pi_flags);
- if !flags.contains(PidInfoFlags::VALID) {
- break;
- }
- result.push(PidInfo {
- flags,
- subtree: unsafe { Pid::from_raw(raw.pi_subtree) }.ok_or(io::Errno::RANGE)?,
- pid: unsafe { Pid::from_raw(raw.pi_pid) }.ok_or(io::Errno::RANGE)?,
- });
- }
- Ok(result)
-}
-
-const PROC_REAP_KILL: c_int = 6;
-
-bitflags! {
- /// `REAPER_KILL_*`.
- struct KillFlags: c_uint {
- const CHILDREN = 1;
- const SUBTREE = 2;
- }
-}
-
-#[repr(C)]
-struct procctl_reaper_kill {
- rk_sig: c_int,
- rk_flags: c_uint,
- rk_subtree: RawPid,
- rk_killed: c_uint,
- rk_fpid: RawPid,
- rk_pad0: [c_uint; 15],
-}
-
-/// Reaper status as returned by [`get_reaper_status`].
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-pub struct KillResult {
- /// The number of processes that were signalled.
- pub killed: usize,
- /// The pid of the first process that wasn't successfully signalled.
- pub first_failed: Option<Pid>,
-}
-
-/// Deliver a signal to some subset of
-///
-/// # References
-/// - [FreeBSD: `procctl(PROC_REAP_KILL,...)`]
-///
-/// [FreeBSD: `procctl(PROC_REAP_KILL,...)`]: https://www.freebsd.org/cgi/man.cgi?query=procctl&sektion=2
-pub fn reaper_kill(
- process: ProcSelector,
- signal: Signal,
- direct_children: bool,
- subtree: Option<Pid>,
-) -> io::Result<KillResult> {
- let mut flags = KillFlags::empty();
- flags.set(KillFlags::CHILDREN, direct_children);
- flags.set(KillFlags::SUBTREE, subtree.is_some());
- let mut req = procctl_reaper_kill {
- rk_sig: signal as c_int,
- rk_flags: flags.bits(),
- rk_subtree: subtree.map(|p| p.as_raw_nonzero().into()).unwrap_or(0),
- rk_killed: 0,
- rk_fpid: 0,
- rk_pad0: [0; 15],
- };
- unsafe {
- procctl(
- PROC_REAP_KILL,
- process,
- (&mut req as *mut procctl_reaper_kill).cast(),
- )?
- };
- Ok(KillResult {
- killed: req.rk_killed as _,
- first_failed: if req.rk_fpid == -1 {
- None
- } else {
- unsafe { Pid::from_raw(req.rk_fpid) }
- },
- })
-}
-
-//
-// PROC_TRAPCAP_STATUS/PROC_TRAPCAP_CTL
-//
-
-const PROC_TRAPCAP_CTL: c_int = 9;
-
-const PROC_TRAPCAP_CTL_ENABLE: i32 = 1;
-const PROC_TRAPCAP_CTL_DISABLE: i32 = 2;
-
-/// `PROC_TRAPCAP_CTL_*`.
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-#[repr(i32)]
-pub enum TrapCapBehavior {
- /// Disable the SIGTRAP signal delivery on capability mode access
- /// violations.
- Disable = PROC_TRAPCAP_CTL_DISABLE,
- /// Enable the SIGTRAP signal delivery on capability mode access
- /// violations.
- Enable = PROC_TRAPCAP_CTL_ENABLE,
-}
-
-/// Set the current value of the capability mode violation trapping behavior.
-/// If this behavior is enabled, the kernel would deliver a SIGTRAP signal on
-/// any return from a system call that would result in a `ENOTCAPABLE` or
-/// `ECAPMODE` error.
-///
-/// This behavior is inherited by the children of the process and is kept
-/// across `execve` calls.
-///
-/// # References
-/// - [FreeBSD: `procctl(PROC_TRAPCAP_CTL,...)`]
-///
-/// [FreeBSD: `procctl(PROC_TRAPCAP_CTL,...)`]: https://www.freebsd.org/cgi/man.cgi?query=procctl&sektion=2
-#[inline]
-pub fn set_trap_cap_behavior(process: ProcSelector, config: TrapCapBehavior) -> io::Result<()> {
- let config = config as c_int;
- unsafe { procctl_set::<c_int>(PROC_TRAPCAP_CTL, process, &config) }
-}
-
-const PROC_TRAPCAP_STATUS: c_int = 10;
-
-/// Get the current value of the capability mode violation trapping behavior.
-///
-/// # References
-/// - [FreeBSD: `procctl(PROC_TRAPCAP_STATUS,...)`]
-///
-/// [FreeBSD: `procctl(PROC_TRAPCAP_STATUS,...)`]: https://www.freebsd.org/cgi/man.cgi?query=procctl&sektion=2
-#[inline]
-pub fn trap_cap_behavior(process: ProcSelector) -> io::Result<TrapCapBehavior> {
- let val = unsafe { procctl_get_optional::<c_int>(PROC_TRAPCAP_STATUS, process) }?;
- match val {
- PROC_TRAPCAP_CTL_DISABLE => Ok(TrapCapBehavior::Disable),
- PROC_TRAPCAP_CTL_ENABLE => Ok(TrapCapBehavior::Enable),
- _ => Err(io::Errno::RANGE),
- }
-}
-
-//
-// PROC_NO_NEW_PRIVS_STATUS/PROC_NO_NEW_PRIVS_CTL
-//
-
-const PROC_NO_NEW_PRIVS_CTL: c_int = 19;
-
-const PROC_NO_NEW_PRIVS_ENABLE: c_int = 1;
-
-/// Enable the `no_new_privs` mode that ignores SUID and SGID bits
-/// on `execve` in the specified process and its future descendants.
-///
-/// This is similar to `set_no_new_privs` on Linux, with the exception
-/// that on FreeBSD there is no argument `no_new_privs` argument as it's
-/// only possible to enable this mode and there's no going back.
-///
-/// # References
-/// - [Linux: `prctl(PR_SET_NO_NEW_PRIVS,...)`]
-/// - [FreeBSD: `procctl(PROC_NO_NEW_PRIVS_CTL,...)`]
-///
-/// [Linux: `prctl(PR_SET_NO_NEW_PRIVS,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-/// [FreeBSD: `procctl(PROC_NO_NEW_PRIVS_CTL,...)`]: https://www.freebsd.org/cgi/man.cgi?query=procctl&sektion=2
-#[inline]
-pub fn set_no_new_privs(process: ProcSelector) -> io::Result<()> {
- unsafe { procctl_set::<c_int>(PROC_NO_NEW_PRIVS_CTL, process, &PROC_NO_NEW_PRIVS_ENABLE) }
-}
-
-const PROC_NO_NEW_PRIVS_STATUS: c_int = 20;
-
-/// Check the `no_new_privs` mode of the specified process.
-///
-/// # References
-/// - [Linux: `prctl(PR_GET_NO_NEW_PRIVS,...)`]
-/// - [FreeBSD: `procctl(PROC_NO_NEW_PRIVS_STATUS,...)`]
-///
-/// [Linux: `prctl(PR_GET_NO_NEW_PRIVS,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-/// [FreeBSD: `procctl(PROC_NO_NEW_PRIVS_STATUS,...)`]: https://www.freebsd.org/cgi/man.cgi?query=procctl&sektion=2
-#[inline]
-pub fn no_new_privs(process: ProcSelector) -> io::Result<bool> {
- unsafe { procctl_get_optional::<c_int>(PROC_NO_NEW_PRIVS_STATUS, process) }
- .map(|x| x == PROC_NO_NEW_PRIVS_ENABLE)
-}
diff --git a/vendor/rustix-0.37.6/src/process/rlimit.rs b/vendor/rustix-0.37.6/src/process/rlimit.rs
deleted file mode 100644
index 089f6b4bb..000000000
--- a/vendor/rustix-0.37.6/src/process/rlimit.rs
+++ /dev/null
@@ -1,53 +0,0 @@
-#[cfg(any(target_os = "android", target_os = "linux"))]
-use crate::process::Pid;
-use crate::{backend, io};
-
-pub use backend::process::types::Resource;
-
-/// `struct rlimit`—Current and maximum values used in [`getrlimit`],
-/// [`setrlimit`], and [`prlimit`].
-#[derive(Debug, Clone, PartialEq, Eq)]
-pub struct Rlimit {
- /// Current effective, “softâ€, limit.
- pub current: Option<u64>,
- /// Maximum, “hardâ€, value that `current` may be dynamically increased to.
- pub maximum: Option<u64>,
-}
-
-/// `getrlimit(resource)`—Get a process resource limit value.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getrlimit.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/getrlimit.2.html
-#[inline]
-pub fn getrlimit(resource: Resource) -> Rlimit {
- backend::process::syscalls::getrlimit(resource)
-}
-
-/// `setrlimit(resource, new)`—Set a process resource limit value.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setrlimit.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/setrlimit.2.html
-#[inline]
-pub fn setrlimit(resource: Resource, new: Rlimit) -> io::Result<()> {
- backend::process::syscalls::setrlimit(resource, new)
-}
-
-/// `prlimit(pid, resource, new)`—Get and set a process resource limit value.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/prlimit.2.html
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub fn prlimit(pid: Option<Pid>, resource: Resource, new: Rlimit) -> io::Result<Rlimit> {
- backend::process::syscalls::prlimit(pid, resource, new)
-}
diff --git a/vendor/rustix-0.37.6/src/process/sched.rs b/vendor/rustix-0.37.6/src/process/sched.rs
deleted file mode 100644
index 88e661670..000000000
--- a/vendor/rustix-0.37.6/src/process/sched.rs
+++ /dev/null
@@ -1,110 +0,0 @@
-use crate::process::Pid;
-use crate::{backend, io};
-
-/// `CpuSet` represents a bit-mask of CPUs.
-///
-/// `CpuSet`s are used by [`sched_setaffinity`] and [`sched_getaffinity`], for
-/// example.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man3/CPU_SET.3.html
-/// [`sched_setaffinity`]: crate::process::sched_setaffinity
-/// [`sched_getaffinity`]: crate::process::sched_getaffinity
-#[repr(C)]
-#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
-pub struct CpuSet {
- cpu_set: backend::process::types::RawCpuSet,
-}
-
-impl CpuSet {
- /// The maximum number of CPU in `CpuSet`.
- pub const MAX_CPU: usize = backend::process::types::CPU_SETSIZE;
-
- /// Create a new and empty `CpuSet`.
- #[inline]
- pub fn new() -> Self {
- Self {
- cpu_set: backend::process::types::raw_cpu_set_new(),
- }
- }
-
- /// Test to see if a CPU is in the `CpuSet`.
- ///
- /// `field` is the CPU id to test.
- #[inline]
- pub fn is_set(&self, field: usize) -> bool {
- backend::process::cpu_set::CPU_ISSET(field, &self.cpu_set)
- }
-
- /// Add a CPU to `CpuSet`.
- ///
- /// `field` is the CPU id to add.
- #[inline]
- pub fn set(&mut self, field: usize) {
- backend::process::cpu_set::CPU_SET(field, &mut self.cpu_set)
- }
-
- /// Remove a CPU from `CpuSet`.
- ///
- /// `field` is the CPU id to remove.
- #[inline]
- pub fn unset(&mut self, field: usize) {
- backend::process::cpu_set::CPU_CLR(field, &mut self.cpu_set)
- }
-
- /// Count the number of CPUs set in the `CpuSet`.
- #[cfg(any(target_os = "android", target_os = "linux"))]
- #[inline]
- pub fn count(&self) -> u32 {
- backend::process::cpu_set::CPU_COUNT(&self.cpu_set)
- }
-
- /// Zeroes the `CpuSet`.
- #[inline]
- pub fn clear(&mut self) {
- backend::process::cpu_set::CPU_ZERO(&mut self.cpu_set)
- }
-}
-
-impl Default for CpuSet {
- #[inline]
- fn default() -> Self {
- Self::new()
- }
-}
-
-/// `sched_setaffinity(pid, cpuset)`—Set a thread's CPU affinity mask.
-///
-/// `pid` is the thread ID to update. If pid is `None`, then the current thread
-/// is updated.
-///
-/// The `CpuSet` argument specifies the set of CPUs on which the thread will
-/// be eligible to run.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/sched_setaffinity.2.html
-#[inline]
-pub fn sched_setaffinity(pid: Option<Pid>, cpuset: &CpuSet) -> io::Result<()> {
- backend::process::syscalls::sched_setaffinity(pid, &cpuset.cpu_set)
-}
-
-/// `sched_getaffinity(pid)`—Get a thread's CPU affinity mask.
-///
-/// `pid` is the thread ID to check. If pid is `None`, then the current thread
-/// is checked.
-///
-/// Returns the set of CPUs on which the thread is eligible to run.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/sched_getaffinity.2.html
-#[inline]
-pub fn sched_getaffinity(pid: Option<Pid>) -> io::Result<CpuSet> {
- let mut cpuset = CpuSet::new();
- backend::process::syscalls::sched_getaffinity(pid, &mut cpuset.cpu_set).and(Ok(cpuset))
-}
diff --git a/vendor/rustix-0.37.6/src/process/sched_yield.rs b/vendor/rustix-0.37.6/src/process/sched_yield.rs
deleted file mode 100644
index 0324f67cb..000000000
--- a/vendor/rustix-0.37.6/src/process/sched_yield.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-use crate::backend;
-
-/// `sched_yield()`—Hints to the OS that other processes should run.
-///
-/// This function always succeeds.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/sched_yield.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/sched_yield.2.html
-#[inline]
-pub fn sched_yield() {
- backend::process::syscalls::sched_yield()
-}
diff --git a/vendor/rustix-0.37.6/src/process/umask.rs b/vendor/rustix-0.37.6/src/process/umask.rs
deleted file mode 100644
index 7d83d6686..000000000
--- a/vendor/rustix-0.37.6/src/process/umask.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-//! Umask support.
-
-#[cfg(feature = "fs")]
-use crate::backend;
-#[cfg(feature = "fs")]
-use crate::fs::Mode;
-
-/// `umask(mask)`—Set the process file creation mask.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/umask.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/umask.2.html
-#[inline]
-#[cfg_attr(doc_cfg, doc(cfg(feature = "fs")))]
-#[cfg(feature = "fs")]
-pub fn umask(mask: Mode) -> Mode {
- backend::process::syscalls::umask(mask)
-}
diff --git a/vendor/rustix-0.37.6/src/process/uname.rs b/vendor/rustix-0.37.6/src/process/uname.rs
deleted file mode 100644
index 904532a99..000000000
--- a/vendor/rustix-0.37.6/src/process/uname.rs
+++ /dev/null
@@ -1,101 +0,0 @@
-//! Uname support.
-//!
-//! # Safety
-//!
-//! This function converts from `struct utsname` fields provided from the
-//! kernel into `&str` references, which assumes that they're NUL-terminated.
-#![allow(unsafe_code)]
-
-use crate::backend;
-use crate::ffi::CStr;
-use core::fmt;
-
-/// `uname()`—Returns high-level information about the runtime OS and
-/// hardware.
-#[inline]
-pub fn uname() -> Uname {
- Uname(backend::process::syscalls::uname())
-}
-
-/// `struct utsname`—Return type for [`uname`].
-#[doc(alias = "utsname")]
-pub struct Uname(backend::process::types::RawUname);
-
-impl Uname {
- /// `sysname`—Operating system release name
- #[inline]
- pub fn sysname(&self) -> &CStr {
- Self::to_cstr(self.0.sysname.as_ptr().cast())
- }
-
- /// `nodename`—Name with vague meaning
- ///
- /// This is intended to be a network name, however it's unable to convey
- /// information about hosts that have multiple names, or any information
- /// about where the names are visible.
- #[inline]
- pub fn nodename(&self) -> &CStr {
- Self::to_cstr(self.0.nodename.as_ptr().cast())
- }
-
- /// `release`—Operating system release version string
- #[inline]
- pub fn release(&self) -> &CStr {
- Self::to_cstr(self.0.release.as_ptr().cast())
- }
-
- /// `version`—Operating system build identifiers
- #[inline]
- pub fn version(&self) -> &CStr {
- Self::to_cstr(self.0.version.as_ptr().cast())
- }
-
- /// `machine`—Hardware architecture identifier
- #[inline]
- pub fn machine(&self) -> &CStr {
- Self::to_cstr(self.0.machine.as_ptr().cast())
- }
-
- /// `domainname`—NIS or YP domain identifier
- #[cfg(any(target_os = "android", target_os = "linux"))]
- #[inline]
- pub fn domainname(&self) -> &CStr {
- Self::to_cstr(self.0.domainname.as_ptr().cast())
- }
-
- #[inline]
- fn to_cstr<'a>(ptr: *const u8) -> &'a CStr {
- // SAFETY: Strings returned from the kernel are always NUL-terminated.
- unsafe { CStr::from_ptr(ptr.cast()) }
- }
-}
-
-impl fmt::Debug for Uname {
- fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
- #[cfg(not(any(target_os = "android", target_os = "linux")))]
- {
- write!(
- fmt,
- "{} {} {} {} {}",
- self.sysname().to_string_lossy(),
- self.nodename().to_string_lossy(),
- self.release().to_string_lossy(),
- self.version().to_string_lossy(),
- self.machine().to_string_lossy(),
- )
- }
- #[cfg(any(target_os = "android", target_os = "linux"))]
- {
- write!(
- fmt,
- "{} {} {} {} {} {}",
- self.sysname().to_string_lossy(),
- self.nodename().to_string_lossy(),
- self.release().to_string_lossy(),
- self.version().to_string_lossy(),
- self.machine().to_string_lossy(),
- self.domainname().to_string_lossy(),
- )
- }
- }
-}
diff --git a/vendor/rustix-0.37.6/src/process/wait.rs b/vendor/rustix-0.37.6/src/process/wait.rs
deleted file mode 100644
index 784e6627c..000000000
--- a/vendor/rustix-0.37.6/src/process/wait.rs
+++ /dev/null
@@ -1,187 +0,0 @@
-use crate::process::Pid;
-use crate::{backend, io};
-use bitflags::bitflags;
-
-#[cfg(target_os = "linux")]
-use crate::fd::BorrowedFd;
-
-bitflags! {
- /// Options for modifying the behavior of wait/waitpid
- pub struct WaitOptions: u32 {
- /// Return immediately if no child has exited.
- const NOHANG = backend::process::wait::WNOHANG as _;
- /// Return if a child has stopped (but not traced via `ptrace(2)`)
- const UNTRACED = backend::process::wait::WUNTRACED as _;
- /// Return if a stopped child has been resumed by delivery of `SIGCONT`
- const CONTINUED = backend::process::wait::WCONTINUED as _;
- }
-}
-
-#[cfg(not(any(target_os = "wasi", target_os = "redox", target_os = "openbsd")))]
-bitflags! {
- /// Options for modifying the behavior of waitid
- pub struct WaitidOptions: u32 {
- /// Return immediately if no child has exited.
- const NOHANG = backend::process::wait::WNOHANG as _;
- /// Return if a stopped child has been resumed by delivery of `SIGCONT`
- const CONTINUED = backend::process::wait::WCONTINUED as _;
- /// Wait for processed that have exited.
- const EXITED = backend::process::wait::WEXITED as _;
- /// Keep processed in a waitable state.
- const NOWAIT = backend::process::wait::WNOWAIT as _;
- /// Wait for processes that have been stopped.
- const STOPPED = backend::process::wait::WSTOPPED as _;
- }
-}
-
-/// the status of the child processes the caller waited on
-#[derive(Debug, Clone, Copy)]
-pub struct WaitStatus(u32);
-
-impl WaitStatus {
- /// create a `WaitStatus` out of an integer.
- #[inline]
- pub(crate) fn new(status: u32) -> Self {
- Self(status)
- }
-
- /// Converts a `WaitStatus` into its raw representation as an integer.
- #[inline]
- pub const fn as_raw(self) -> u32 {
- self.0
- }
-
- /// Returns whether the process is currently stopped.
- #[inline]
- pub fn stopped(self) -> bool {
- backend::process::wait::WIFSTOPPED(self.0 as _)
- }
-
- /// Returns whether the process has continued from a job control stop.
- #[inline]
- pub fn continued(self) -> bool {
- backend::process::wait::WIFCONTINUED(self.0 as _)
- }
-
- /// Returns the number of the signal that stopped the process,
- /// if the process was stopped by a signal.
- #[inline]
- pub fn stopping_signal(self) -> Option<u32> {
- if self.stopped() {
- Some(backend::process::wait::WSTOPSIG(self.0 as _) as _)
- } else {
- None
- }
- }
-
- /// Returns the exit status number returned by the process,
- /// if it exited normally.
- #[inline]
- pub fn exit_status(self) -> Option<u32> {
- if backend::process::wait::WIFEXITED(self.0 as _) {
- Some(backend::process::wait::WEXITSTATUS(self.0 as _) as _)
- } else {
- None
- }
- }
-
- /// Returns the number of the signal that terminated the process,
- /// if the process was terminated by a signal.
- #[inline]
- pub fn terminating_signal(self) -> Option<u32> {
- if backend::process::wait::WIFSIGNALED(self.0 as _) {
- Some(backend::process::wait::WTERMSIG(self.0 as _) as _)
- } else {
- None
- }
- }
-}
-
-/// The status of a process after calling [`waitid`].
-#[derive(Clone, Copy)]
-#[cfg(not(any(target_os = "wasi", target_os = "redox", target_os = "openbsd")))]
-pub struct WaitidStatus(pub(crate) backend::c::siginfo_t);
-
-/// The identifier to wait on in a call to [`waitid`].
-#[cfg(not(any(target_os = "wasi", target_os = "redox", target_os = "openbsd")))]
-#[derive(Debug, Clone)]
-#[non_exhaustive]
-pub enum WaitId<'a> {
- /// Wait on all processes.
- All,
-
- /// Wait for a specific process ID.
- Pid(Pid),
-
- /// Wait for a specific process file descriptor.
- #[cfg(target_os = "linux")]
- PidFd(BorrowedFd<'a>),
-
- /// Eat the lifetime for non-Linux platforms.
- #[doc(hidden)]
- #[cfg(not(target_os = "linux"))]
- __EatLifetime(std::marker::PhantomData<&'a ()>),
- // TODO(notgull): Once this crate has the concept of PGIDs, add a WaitId::Pgid
-}
-
-/// `waitpid(pid, waitopts)`—Wait for a specific process to change state.
-///
-/// If the pid is `None`, the call will wait for any child process whose
-/// process group id matches that of the calling process.
-///
-/// If the pid is equal to `RawPid::MAX`, the call will wait for any child
-/// process.
-///
-/// Otherwise if the `wrapping_neg` of pid is less than pid, the call will wait
-/// for any child process with a group ID equal to the `wrapping_neg` of `pid`.
-///
-/// Otherwise, the call will wait for the child process with the given pid.
-///
-/// On Success, returns the status of the selected process.
-///
-/// If `NOHANG` was specified in the options, and the selected child process
-/// didn't change state, returns `None`.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/wait.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/waitpid.2.html
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-pub fn waitpid(pid: Option<Pid>, waitopts: WaitOptions) -> io::Result<Option<WaitStatus>> {
- Ok(backend::process::syscalls::waitpid(pid, waitopts)?.map(|(_, status)| status))
-}
-
-/// `wait(waitopts)`—Wait for any of the children of calling process to
-/// change state.
-///
-/// On success, returns the pid of the child process whose state changed, and
-/// the status of said process.
-///
-/// If `NOHANG` was specified in the options, and the selected child process
-/// didn't change state, returns `None`.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/wait.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/waitpid.2.html
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-pub fn wait(waitopts: WaitOptions) -> io::Result<Option<(Pid, WaitStatus)>> {
- backend::process::syscalls::wait(waitopts)
-}
-
-/// `waitid(_, _, _, opts)`—Wait for the specified child process to change
-/// state.
-#[cfg(not(any(target_os = "wasi", target_os = "redox", target_os = "openbsd")))]
-#[inline]
-pub fn waitid<'a>(
- id: impl Into<WaitId<'a>>,
- options: WaitidOptions,
-) -> io::Result<Option<WaitidStatus>> {
- backend::process::syscalls::waitid(id.into(), options)
-}
diff --git a/vendor/rustix-0.37.6/src/rand/getrandom.rs b/vendor/rustix-0.37.6/src/rand/getrandom.rs
deleted file mode 100644
index 83043800d..000000000
--- a/vendor/rustix-0.37.6/src/rand/getrandom.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-use crate::{backend, io};
-
-/// `GRND_*`
-pub use backend::rand::types::GetRandomFlags;
-
-/// `getrandom(buf, flags)`—Reads a sequence of random bytes.
-///
-/// This is a very low-level API which may be difficult to use correctly. Most
-/// users should prefer to use [`getrandom`] or [`rand`] APIs instead.
-///
-/// [`getrandom`]: https://crates.io/crates/getrandom
-/// [`rand`]: https://crates.io/crates/rand
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/getrandom.2.html
-#[inline]
-pub fn getrandom(buf: &mut [u8], flags: GetRandomFlags) -> io::Result<usize> {
- backend::rand::syscalls::getrandom(buf, flags)
-}
diff --git a/vendor/rustix-0.37.6/src/rand/mod.rs b/vendor/rustix-0.37.6/src/rand/mod.rs
deleted file mode 100644
index 4a0936d6c..000000000
--- a/vendor/rustix-0.37.6/src/rand/mod.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-//! Random-related operations.
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-mod getrandom;
-
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub use getrandom::{getrandom, GetRandomFlags};
diff --git a/vendor/rustix-0.37.6/src/runtime.rs b/vendor/rustix-0.37.6/src/runtime.rs
deleted file mode 100644
index af3c98ff9..000000000
--- a/vendor/rustix-0.37.6/src/runtime.rs
+++ /dev/null
@@ -1,269 +0,0 @@
-//! Low-level implementation details for libc-like runtime libraries such as
-//! [origin].
-//!
-//! These functions are for implementing thread-local storage (TLS), managing
-//! threads, loaded libraries, and other process-wide resources. Most of
-//! `rustix` doesn't care about what other libraries are linked into the
-//! program or what they're doing, but the features in this module generally
-//! can only be used by one entity within a process.
-//!
-//! The API for these functions is not stable, and this module is
-//! `doc(hidden)`.
-//!
-//! [origin]: https://github.com/sunfishcode/mustang/tree/main/origin
-//!
-//! # Safety
-//!
-//! This module is intended to be used for implementing a runtime library such
-//! as libc. Use of these features for any other purpose is likely to create
-//! serious problems.
-#![allow(unsafe_code)]
-
-use crate::backend;
-#[cfg(linux_raw)]
-use crate::ffi::CStr;
-#[cfg(linux_raw)]
-#[cfg(feature = "fs")]
-use crate::fs::AtFlags;
-#[cfg(linux_raw)]
-use crate::io;
-#[cfg(linux_raw)]
-use crate::process::Pid;
-#[cfg(linux_raw)]
-#[cfg(feature = "fs")]
-use backend::fd::AsFd;
-#[cfg(linux_raw)]
-use core::ffi::c_void;
-
-#[cfg(linux_raw)]
-#[cfg(target_arch = "x86")]
-#[inline]
-pub unsafe fn set_thread_area(u_info: &mut UserDesc) -> io::Result<()> {
- backend::runtime::syscalls::tls::set_thread_area(u_info)
-}
-
-#[cfg(linux_raw)]
-#[cfg(target_arch = "arm")]
-#[inline]
-pub unsafe fn arm_set_tls(data: *mut c_void) -> io::Result<()> {
- backend::runtime::syscalls::tls::arm_set_tls(data)
-}
-
-#[cfg(linux_raw)]
-#[cfg(target_arch = "x86_64")]
-#[inline]
-pub unsafe fn set_fs(data: *mut c_void) {
- backend::runtime::syscalls::tls::set_fs(data)
-}
-
-#[cfg(linux_raw)]
-#[inline]
-pub unsafe fn set_tid_address(data: *mut c_void) -> Pid {
- backend::runtime::syscalls::tls::set_tid_address(data)
-}
-
-/// `prctl(PR_SET_NAME, name)`
-///
-/// # References
-/// - [Linux]
-///
-/// # Safety
-///
-/// This is a very low-level feature for implementing threading libraries.
-/// See the references links above.
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[cfg(linux_raw)]
-#[inline]
-pub unsafe fn set_thread_name(name: &CStr) -> io::Result<()> {
- backend::runtime::syscalls::tls::set_thread_name(name)
-}
-
-#[cfg(linux_raw)]
-#[cfg(target_arch = "x86")]
-pub use backend::runtime::tls::UserDesc;
-
-/// `syscall(SYS_exit, status)`—Exit the current thread.
-///
-/// # Safety
-///
-/// This is a very low-level feature for implementing threading libraries.
-#[cfg(linux_raw)]
-#[inline]
-pub unsafe fn exit_thread(status: i32) -> ! {
- backend::runtime::syscalls::tls::exit_thread(status)
-}
-
-/// Exit all the threads in the current process' thread group.
-///
-/// This is equivalent to `_exit` and `_Exit` in libc.
-///
-/// This does not all any `__cxa_atexit`, `atexit`, or any other destructors.
-/// Most programs should use [`std::process::exit`] instead of calling this
-/// directly.
-///
-/// # References
-/// - [POSIX `_Exit`]
-/// - [Linux `exit_group`]
-/// - [Linux `_Exit`]
-///
-/// [POSIX `_Exit`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/_Exit.html
-/// [Linux `exit_group`]: https://man7.org/linux/man-pages/man2/exit_group.2.html
-/// [Linux `_Exit`]: https://man7.org/linux/man-pages/man2/exit.2.html
-#[doc(alias = "_exit")]
-#[doc(alias = "_Exit")]
-#[inline]
-pub fn exit_group(status: i32) -> ! {
- backend::process::syscalls::exit_group(status)
-}
-
-/// Return fields from the main executable segment headers ("phdrs") relevant
-/// to initializing TLS provided to the program at startup.
-#[cfg(linux_raw)]
-#[inline]
-pub fn startup_tls_info() -> StartupTlsInfo {
- backend::runtime::tls::startup_tls_info()
-}
-
-/// `(getauxval(AT_PHDR), getauxval(AT_PHNUM))`—Returns the address and
-/// number of ELF segment headers for the main executable.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man3/getauxval.3.html
-#[cfg(linux_raw)]
-#[cfg(any(target_os = "android", target_os = "linux"))]
-#[inline]
-pub fn exe_phdrs() -> (*const c_void, usize) {
- backend::param::auxv::exe_phdrs()
-}
-
-#[cfg(linux_raw)]
-pub use backend::runtime::tls::StartupTlsInfo;
-
-/// `fork()`—Creates a new process by duplicating the calling process.
-///
-/// On success, the pid of the child process is returned in the parent, and
-/// `None` is returned in the child.
-///
-/// Unlike its POSIX and libc counterparts, this `fork` does not invoke any
-/// handlers (such as those registered with `pthread_atfork`).
-///
-/// The program environment in the child after a `fork` and before an `execve`
-/// is very special. All code that executes in this environment must avoid:
-///
-/// - Acquiring any other locks that are held in other threads on the parent
-/// at the time of the `fork`, as the child only contains one thread, and
-/// attempting to acquire such locks will deadlock (though this is [not
-/// considered unsafe]).
-///
-/// - Performing any dynamic allocation using the global allocator, since
-/// global allocators may use locks to ensure thread safety, and their locks
-/// may not be released in the child process, so attempts to allocate may
-/// deadlock (as described in the previous point).
-///
-/// - Accessing any external state which the parent assumes it has exclusive
-/// access to, such as a file protected by a file lock, as this could
-/// corrupt the external state.
-///
-/// - Accessing any random-number-generator state inherited from the parent,
-/// as the parent may have the same state and generate the same random
-/// numbers, which may violate security invariants.
-///
-/// - Accessing any thread runtime state, since this function does not update
-/// the thread id in the thread runtime, so thread runtime functions could
-/// cause undefined behavior.
-///
-/// - Accessing any memory shared with the parent, such as a [`MAP_SHARED`]
-/// mapping, even with anonymous or [`memfd_create`] mappings, as this could
-/// cause undefined behavior.
-///
-/// - Calling any C function which isn't known to be [async-signal-safe], as
-/// that could cause undefined behavior. The extent to which this also
-/// applies to Rust functions is unclear at this time.
-///
-/// # Safety
-///
-/// The child must avoid accessing any memory shared with the parent in a
-/// way that invokes undefined behavior. It must avoid accessing any threading
-/// runtime functions in a way that invokes undefined behavior. And it must
-/// avoid invoking any undefined behavior through any function that is not
-/// guaranteed to be async-signal-safe.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// # Literary interlude
-///
-/// > Do not jump on ancient uncles.
-/// > Do not yell at average mice.
-/// > Do not wear a broom to breakfast.
-/// > Do not ask a snake’s advice.
-/// > Do not bathe in chocolate pudding.
-/// > Do not talk to bearded bears.
-/// > Do not smoke cigars on sofas.
-/// > Do not dance on velvet chairs.
-/// > Do not take a whale to visit
-/// > Russell’s mother’s cousin’s yacht.
-/// > And whatever else you do do
-/// > It is better you
-/// > Do not.
-///
-/// - "Rules", by Karla Kuskin
-///
-/// [`MAP_SHARED`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/mmap.html
-/// [not considered unsafe]: https://doc.rust-lang.org/reference/behavior-not-considered-unsafe.html#deadlocks
-/// [`memfd_create`]: https://man7.org/linux/man-pages/man2/memfd_create.2.html
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/fork.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/fork.2.html
-/// [async-signal-safe]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_04_03
-#[cfg(linux_raw)]
-pub unsafe fn fork() -> io::Result<Option<Pid>> {
- backend::runtime::syscalls::fork()
-}
-
-/// `execveat(dirfd, path.as_c_str(), argv, envp, flags)`—Execute a new
-/// command using the current process.
-///
-/// # Safety
-///
-/// The `argv` and `envp` pointers must point to NUL-terminated arrays, and
-/// their contents must be pointers to NUL-terminated byte arrays.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/execveat.2.html
-#[cfg(linux_raw)]
-#[inline]
-#[cfg(feature = "fs")]
-#[cfg_attr(doc_cfg, doc(cfg(feature = "fs")))]
-pub unsafe fn execveat<Fd: AsFd>(
- dirfd: Fd,
- path: &CStr,
- argv: *const *const u8,
- envp: *const *const u8,
- flags: AtFlags,
-) -> io::Errno {
- backend::runtime::syscalls::execveat(dirfd.as_fd(), path, argv, envp, flags)
-}
-
-/// `execve(path.as_c_str(), argv, envp)`—Execute a new command using the
-/// current process.
-///
-/// # Safety
-///
-/// The `argv` and `envp` pointers must point to NUL-terminated arrays, and
-/// their contents must be pointers to NUL-terminated byte arrays.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/execve.2.html
-#[cfg(linux_raw)]
-#[inline]
-pub unsafe fn execve(path: &CStr, argv: *const *const u8, envp: *const *const u8) -> io::Errno {
- backend::runtime::syscalls::execve(path, argv, envp)
-}
diff --git a/vendor/rustix-0.37.6/src/termios/cf.rs b/vendor/rustix-0.37.6/src/termios/cf.rs
deleted file mode 100644
index d79eab5c8..000000000
--- a/vendor/rustix-0.37.6/src/termios/cf.rs
+++ /dev/null
@@ -1,40 +0,0 @@
-use crate::termios::{Speed, Termios};
-use crate::{backend, io};
-
-/// `cfgetospeed(termios)`
-#[inline]
-#[must_use]
-pub fn cfgetospeed(termios: &Termios) -> Speed {
- backend::termios::syscalls::cfgetospeed(termios)
-}
-
-/// `cfgetispeed(termios)`
-#[inline]
-#[must_use]
-pub fn cfgetispeed(termios: &Termios) -> Speed {
- backend::termios::syscalls::cfgetispeed(termios)
-}
-
-/// `cfmakeraw(termios)`
-#[inline]
-pub fn cfmakeraw(termios: &mut Termios) {
- backend::termios::syscalls::cfmakeraw(termios)
-}
-
-/// `cfsetospeed(termios, speed)`
-#[inline]
-pub fn cfsetospeed(termios: &mut Termios, speed: Speed) -> io::Result<()> {
- backend::termios::syscalls::cfsetospeed(termios, speed)
-}
-
-/// `cfsetispeed(termios, speed)`
-#[inline]
-pub fn cfsetispeed(termios: &mut Termios, speed: Speed) -> io::Result<()> {
- backend::termios::syscalls::cfsetispeed(termios, speed)
-}
-
-/// `cfsetspeed(termios, speed)`
-#[inline]
-pub fn cfsetspeed(termios: &mut Termios, speed: Speed) -> io::Result<()> {
- backend::termios::syscalls::cfsetspeed(termios, speed)
-}
diff --git a/vendor/rustix-0.37.6/src/termios/constants.rs b/vendor/rustix-0.37.6/src/termios/constants.rs
deleted file mode 100644
index 99b75c06e..000000000
--- a/vendor/rustix-0.37.6/src/termios/constants.rs
+++ /dev/null
@@ -1,101 +0,0 @@
-use crate::backend;
-
-pub use backend::termios::types::*;
-
-/// Translate from a `Speed` code to a speed value `u32`.
-///
-/// ```
-/// let speed = rustix::termios::speed_value(rustix::termios::B57600);
-/// assert_eq!(speed, Some(57600));
-/// ```
-pub fn speed_value(speed: backend::termios::types::Speed) -> Option<u32> {
- match speed {
- backend::termios::types::B0 => Some(0),
- backend::termios::types::B50 => Some(50),
- backend::termios::types::B75 => Some(75),
- backend::termios::types::B110 => Some(110),
- backend::termios::types::B134 => Some(134),
- backend::termios::types::B150 => Some(150),
- backend::termios::types::B200 => Some(200),
- backend::termios::types::B300 => Some(300),
- backend::termios::types::B600 => Some(600),
- backend::termios::types::B1200 => Some(1200),
- backend::termios::types::B1800 => Some(1800),
- backend::termios::types::B2400 => Some(2400),
- backend::termios::types::B4800 => Some(4800),
- backend::termios::types::B9600 => Some(9600),
- backend::termios::types::B19200 => Some(19200),
- backend::termios::types::B38400 => Some(38400),
- #[cfg(not(target_os = "aix"))]
- backend::termios::types::B57600 => Some(57600),
- #[cfg(not(target_os = "aix"))]
- backend::termios::types::B115200 => Some(115_200),
- #[cfg(not(target_os = "aix"))]
- backend::termios::types::B230400 => Some(230_400),
- #[cfg(not(any(
- apple,
- target_os = "aix",
- target_os = "dragonfly",
- target_os = "haiku",
- target_os = "openbsd"
- )))]
- backend::termios::types::B460800 => Some(460_800),
- #[cfg(not(any(bsd, solarish, target_os = "aix", target_os = "haiku")))]
- backend::termios::types::B500000 => Some(500_000),
- #[cfg(not(any(bsd, solarish, target_os = "aix", target_os = "haiku")))]
- backend::termios::types::B576000 => Some(576_000),
- #[cfg(not(any(
- apple,
- target_os = "aix",
- target_os = "dragonfly",
- target_os = "haiku",
- target_os = "openbsd"
- )))]
- backend::termios::types::B921600 => Some(921_600),
- #[cfg(not(any(bsd, target_os = "aix", target_os = "haiku", target_os = "solaris")))]
- backend::termios::types::B1000000 => Some(1_000_000),
- #[cfg(not(any(bsd, target_os = "aix", target_os = "haiku", target_os = "solaris")))]
- backend::termios::types::B1152000 => Some(1_152_000),
- #[cfg(not(any(bsd, target_os = "aix", target_os = "haiku", target_os = "solaris")))]
- backend::termios::types::B1500000 => Some(1_500_000),
- #[cfg(not(any(bsd, target_os = "aix", target_os = "haiku", target_os = "solaris")))]
- backend::termios::types::B2000000 => Some(2_000_000),
- #[cfg(not(any(
- target_arch = "sparc",
- target_arch = "sparc64",
- bsd,
- target_os = "aix",
- target_os = "haiku",
- target_os = "solaris",
- )))]
- backend::termios::types::B2500000 => Some(2_500_000),
- #[cfg(not(any(
- target_arch = "sparc",
- target_arch = "sparc64",
- bsd,
- target_os = "aix",
- target_os = "haiku",
- target_os = "solaris",
- )))]
- backend::termios::types::B3000000 => Some(3_000_000),
- #[cfg(not(any(
- target_arch = "sparc",
- target_arch = "sparc64",
- bsd,
- target_os = "aix",
- target_os = "haiku",
- target_os = "solaris",
- )))]
- backend::termios::types::B3500000 => Some(3_500_000),
- #[cfg(not(any(
- target_arch = "sparc",
- target_arch = "sparc64",
- bsd,
- target_os = "aix",
- target_os = "haiku",
- target_os = "solaris",
- )))]
- backend::termios::types::B4000000 => Some(4_000_000),
- _ => None,
- }
-}
diff --git a/vendor/rustix-0.37.6/src/termios/mod.rs b/vendor/rustix-0.37.6/src/termios/mod.rs
deleted file mode 100644
index ffbb1b663..000000000
--- a/vendor/rustix-0.37.6/src/termios/mod.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-//! Terminal I/O stream operations.
-
-#[cfg(not(target_os = "wasi"))]
-mod cf;
-#[cfg(not(target_os = "wasi"))]
-mod constants;
-#[cfg(not(target_os = "wasi"))]
-mod tc;
-#[cfg(not(windows))]
-mod tty;
-
-#[cfg(not(target_os = "wasi"))]
-pub use cf::*;
-#[cfg(not(target_os = "wasi"))]
-pub use constants::*;
-#[cfg(not(target_os = "wasi"))]
-pub use tc::*;
-#[cfg(not(windows))]
-pub use tty::*;
diff --git a/vendor/rustix-0.37.6/src/termios/tc.rs b/vendor/rustix-0.37.6/src/termios/tc.rs
deleted file mode 100644
index 12f7f543c..000000000
--- a/vendor/rustix-0.37.6/src/termios/tc.rs
+++ /dev/null
@@ -1,276 +0,0 @@
-use crate::fd::AsFd;
-use crate::process::Pid;
-use crate::{backend, io};
-
-#[cfg(all(
- any(target_os = "android", target_os = "linux"),
- any(
- target_arch = "x86",
- target_arch = "x86_64",
- target_arch = "x32",
- target_arch = "riscv64",
- target_arch = "aarch64",
- target_arch = "arm",
- target_arch = "mips",
- target_arch = "mips64",
- )
-))]
-pub use backend::termios::types::Termios2;
-pub use backend::termios::types::{
- Action, OptionalActions, QueueSelector, Speed, Tcflag, Termios, Winsize,
-};
-
-/// `tcgetattr(fd)`—Get terminal attributes.
-///
-/// Also known as the `TCGETS` operation with `ioctl`.
-///
-/// # References
-/// - [POSIX `tcgetattr`]
-/// - [Linux `ioctl_tty`]
-/// - [Linux `termios`]
-///
-/// [POSIX `tcgetattr`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcgetattr.html
-/// [Linux `ioctl_tty`]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html
-/// [Linux `termios`]: https://man7.org/linux/man-pages/man3/termios.3.html
-#[cfg(not(any(windows, target_os = "wasi")))]
-#[inline]
-#[doc(alias = "TCGETS")]
-pub fn tcgetattr<Fd: AsFd>(fd: Fd) -> io::Result<Termios> {
- backend::termios::syscalls::tcgetattr(fd.as_fd())
-}
-
-/// `tcgetattr2(fd)`—Get terminal attributes.
-///
-/// Also known as the `TCGETS2` operation with `ioctl`.
-///
-/// # References
-/// - [POSIX `tcgetattr`]
-/// - [Linux `ioctl_tty`]
-/// - [Linux `termios`]
-///
-/// [POSIX `tcgetattr`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcgetattr.html
-/// [Linux `ioctl_tty`]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html
-/// [Linux `termios`]: https://man7.org/linux/man-pages/man3/termios.3.html
-#[inline]
-#[doc(alias = "TCGETS2")]
-#[cfg(all(
- any(target_os = "android", target_os = "linux"),
- any(
- target_arch = "x86",
- target_arch = "x86_64",
- target_arch = "x32",
- target_arch = "riscv64",
- target_arch = "aarch64",
- target_arch = "arm",
- target_arch = "mips",
- target_arch = "mips64",
- )
-))]
-pub fn tcgetattr2<Fd: AsFd>(fd: Fd) -> io::Result<Termios2> {
- backend::termios::syscalls::tcgetattr2(fd.as_fd())
-}
-
-/// `tcgetwinsize(fd)`—Get the current terminal window size.
-///
-/// Also known as the `TIOCGWINSZ` operation with `ioctl`.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html
-#[cfg(not(any(windows, target_os = "wasi")))]
-#[inline]
-#[doc(alias = "TIOCGWINSZ")]
-pub fn tcgetwinsize<Fd: AsFd>(fd: Fd) -> io::Result<Winsize> {
- backend::termios::syscalls::tcgetwinsize(fd.as_fd())
-}
-
-/// `tcgetpgrp(fd)`—Get the terminal foreground process group.
-///
-/// Also known as the `TIOCGPGRP` operation with `ioctl`.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcgetpgrp.html
-/// [Linux]: https://man7.org/linux/man-pages/man3/tcgetpgrp.3.html
-#[cfg(not(any(windows, target_os = "wasi")))]
-#[inline]
-#[doc(alias = "TIOCGPGRP")]
-pub fn tcgetpgrp<Fd: AsFd>(fd: Fd) -> io::Result<Pid> {
- backend::termios::syscalls::tcgetpgrp(fd.as_fd())
-}
-
-/// `tcsetpgrp(fd, pid)`—Set the terminal foreground process group.
-///
-/// Also known as the `TIOCSPGRP` operation with `ioctl`.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcsetpgrp.html
-/// [Linux]: https://man7.org/linux/man-pages/man3/tcsetpgrp.3.html
-#[cfg(not(any(windows, target_os = "wasi")))]
-#[inline]
-#[doc(alias = "TIOCSPGRP")]
-pub fn tcsetpgrp<Fd: AsFd>(fd: Fd, pid: Pid) -> io::Result<()> {
- backend::termios::syscalls::tcsetpgrp(fd.as_fd(), pid)
-}
-
-/// `tcsetattr(fd)`—Set terminal attributes.
-///
-/// Also known as the `TCSETS` operation with `ioctl`.
-///
-/// # References
-/// - [POSIX `tcsetattr`]
-/// - [Linux `ioctl_tty`]
-/// - [Linux `termios`]
-///
-/// [POSIX `tcsetattr`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcsetattr.html
-/// [Linux `ioctl_tty`]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html
-/// [Linux `termios`]: https://man7.org/linux/man-pages/man3/termios.3.html
-#[inline]
-#[doc(alias = "TCSETS")]
-pub fn tcsetattr<Fd: AsFd>(
- fd: Fd,
- optional_actions: OptionalActions,
- termios: &Termios,
-) -> io::Result<()> {
- backend::termios::syscalls::tcsetattr(fd.as_fd(), optional_actions, termios)
-}
-
-/// `tcsetattr2(fd)`—Set terminal attributes.
-///
-/// Also known as the `TCSETS2` operation with `ioctl`.
-///
-/// # References
-/// - [POSIX `tcsetattr`]
-/// - [Linux `ioctl_tty`]
-/// - [Linux `termios`]
-///
-/// [POSIX `tcsetattr`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcsetattr.html
-/// [Linux `ioctl_tty`]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html
-/// [Linux `termios`]: https://man7.org/linux/man-pages/man3/termios.3.html
-#[inline]
-#[doc(alias = "TCSETS2")]
-#[cfg(all(
- any(target_os = "android", target_os = "linux"),
- any(
- target_arch = "x86",
- target_arch = "x86_64",
- target_arch = "x32",
- target_arch = "riscv64",
- target_arch = "aarch64",
- target_arch = "arm",
- target_arch = "mips",
- target_arch = "mips64",
- )
-))]
-pub fn tcsetattr2<Fd: AsFd>(
- fd: Fd,
- optional_actions: OptionalActions,
- termios: &Termios2,
-) -> io::Result<()> {
- backend::termios::syscalls::tcsetattr2(fd.as_fd(), optional_actions, termios)
-}
-
-/// `tcsendbreak(fd, 0)`—Transmit zero-valued bits.
-///
-/// Also known as the `TCSBRK` operation with `ioctl`, with a duration of 0.
-///
-/// This function always uses an effective duration parameter of zero. For the
-/// equivalent of a `tcsendbreak` with a non-zero duration parameter, use
-/// `tcdrain`.
-///
-/// # References
-/// - [POSIX `tcsendbreak`]
-/// - [Linux `ioctl_tty`]
-/// - [Linux `termios`]
-///
-/// [POSIX `tcsendbreak`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcsendbreak.html
-/// [Linux `ioctl_tty`]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html
-/// [Linux `termios`]: https://man7.org/linux/man-pages/man3/termios.3.html
-#[inline]
-#[doc(alias = "TCSBRK")]
-pub fn tcsendbreak<Fd: AsFd>(fd: Fd) -> io::Result<()> {
- backend::termios::syscalls::tcsendbreak(fd.as_fd())
-}
-
-/// `tcdrain(fd, duration)`—Wait until all pending output has been written.
-///
-/// # References
-/// - [POSIX `tcdrain`]
-/// - [Linux `ioctl_tty`]
-/// - [Linux `termios`]
-///
-/// [POSIX `tcsetattr`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcdrain.html
-/// [Linux `ioctl_tty`]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html
-/// [Linux `termios`]: https://man7.org/linux/man-pages/man3/termios.3.html
-#[inline]
-pub fn tcdrain<Fd: AsFd>(fd: Fd) -> io::Result<()> {
- backend::termios::syscalls::tcdrain(fd.as_fd())
-}
-
-/// `tcflush(fd, queue_selector)`—Wait until all pending output has been
-/// written.
-///
-/// # References
-/// - [POSIX `tcflush`]
-/// - [Linux `ioctl_tty`]
-/// - [Linux `termios`]
-///
-/// [POSIX `tcflush`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcflush.html
-/// [Linux `ioctl_tty`]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html
-/// [Linux `termios`]: https://man7.org/linux/man-pages/man3/termios.3.html
-#[inline]
-#[doc(alias = "TCFLSH")]
-pub fn tcflush<Fd: AsFd>(fd: Fd, queue_selector: QueueSelector) -> io::Result<()> {
- backend::termios::syscalls::tcflush(fd.as_fd(), queue_selector)
-}
-
-/// `tcflow(fd, action)`—Suspend or resume transmission or reception.
-///
-/// # References
-/// - [POSIX `tcflow`]
-/// - [Linux `ioctl_tty`]
-/// - [Linux `termios`]
-///
-/// [POSIX `tcflow`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcflow.html
-/// [Linux `ioctl_tty`]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html
-/// [Linux `termios`]: https://man7.org/linux/man-pages/man3/termios.3.html
-#[inline]
-#[doc(alias = "TCXONC")]
-pub fn tcflow<Fd: AsFd>(fd: Fd, action: Action) -> io::Result<()> {
- backend::termios::syscalls::tcflow(fd.as_fd(), action)
-}
-
-/// `tcgetsid(fd)`—Return the session ID of the current session with `fd` as
-/// its controlling terminal.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/tcgetsid.html
-/// [Linux]: https://man7.org/linux/man-pages/man3/tcgetsid.3.html
-#[inline]
-#[doc(alias = "TIOCGSID")]
-pub fn tcgetsid<Fd: AsFd>(fd: Fd) -> io::Result<Pid> {
- backend::termios::syscalls::tcgetsid(fd.as_fd())
-}
-
-/// `tcsetwinsize(fd)`—Set the current terminal window size.
-///
-/// Also known as the `TIOCSWINSZ` operation with `ioctl`.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man4/tty_ioctl.4.html
-#[inline]
-#[doc(alias = "TIOCSWINSZ")]
-pub fn tcsetwinsize<Fd: AsFd>(fd: Fd, winsize: Winsize) -> io::Result<()> {
- backend::termios::syscalls::tcsetwinsize(fd.as_fd(), winsize)
-}
diff --git a/vendor/rustix-0.37.6/src/termios/tty.rs b/vendor/rustix-0.37.6/src/termios/tty.rs
deleted file mode 100644
index 2bf5d3ceb..000000000
--- a/vendor/rustix-0.37.6/src/termios/tty.rs
+++ /dev/null
@@ -1,72 +0,0 @@
-//! Functions which operate on file descriptors which might be terminals.
-
-use crate::backend;
-#[cfg(any(
- all(linux_raw, feature = "procfs"),
- all(libc, not(any(target_os = "fuchsia", target_os = "wasi"))),
-))]
-use crate::io;
-use backend::fd::AsFd;
-#[cfg(any(
- all(linux_raw, feature = "procfs"),
- all(libc, not(any(target_os = "fuchsia", target_os = "wasi"))),
-))]
-use {
- crate::ffi::CString, crate::path::SMALL_PATH_BUFFER_SIZE, alloc::vec::Vec,
- backend::fd::BorrowedFd,
-};
-
-/// `isatty(fd)`—Tests whether a file descriptor refers to a terminal.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/isatty.html
-/// [Linux]: https://man7.org/linux/man-pages/man3/isatty.3.html
-#[inline]
-pub fn isatty<Fd: AsFd>(fd: Fd) -> bool {
- backend::termios::syscalls::isatty(fd.as_fd())
-}
-
-/// `ttyname_r(fd)`
-///
-/// If `reuse` is non-empty, reuse its buffer to store the result if possible.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/ttyname.html
-/// [Linux]: https://man7.org/linux/man-pages/man3/ttyname.3.html
-#[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))]
-#[cfg(feature = "procfs")]
-#[cfg_attr(doc_cfg, doc(cfg(feature = "procfs")))]
-#[inline]
-pub fn ttyname<Fd: AsFd, B: Into<Vec<u8>>>(dirfd: Fd, reuse: B) -> io::Result<CString> {
- _ttyname(dirfd.as_fd(), reuse.into())
-}
-
-#[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))]
-#[cfg(feature = "procfs")]
-fn _ttyname(dirfd: BorrowedFd<'_>, mut buffer: Vec<u8>) -> io::Result<CString> {
- // This code would benefit from having a better way to read into
- // uninitialized memory, but that requires `unsafe`.
- buffer.clear();
- buffer.reserve(SMALL_PATH_BUFFER_SIZE);
- buffer.resize(buffer.capacity(), 0_u8);
-
- loop {
- match backend::termios::syscalls::ttyname(dirfd, &mut buffer) {
- Err(io::Errno::RANGE) => {
- buffer.reserve(1); // use `Vec` reallocation strategy to grow capacity exponentially
- buffer.resize(buffer.capacity(), 0_u8);
- }
- Ok(len) => {
- buffer.resize(len, 0_u8);
- return Ok(CString::new(buffer).unwrap());
- }
- Err(errno) => return Err(errno),
- }
- }
-}
diff --git a/vendor/rustix-0.37.6/src/thread/clock.rs b/vendor/rustix-0.37.6/src/thread/clock.rs
deleted file mode 100644
index 620cb4ec0..000000000
--- a/vendor/rustix-0.37.6/src/thread/clock.rs
+++ /dev/null
@@ -1,95 +0,0 @@
-use crate::{backend, io};
-
-pub use backend::time::types::Timespec;
-
-#[cfg(not(any(
- apple,
- target_os = "dragonfly",
- target_os = "emscripten",
- target_os = "freebsd", // FreeBSD 12 has clock_nanosleep, but libc targets FreeBSD 11.
- target_os = "openbsd",
- target_os = "redox",
- target_os = "wasi",
-)))]
-pub use backend::time::types::ClockId;
-
-/// `clock_nanosleep(id, 0, request, remain)`—Sleeps for a duration on a
-/// given clock.
-///
-/// This is `clock_nanosleep` specialized for the case of a relative sleep
-/// interval. See [`clock_nanosleep_absolute`] for absolute intervals.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/clock_nanosleep.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/clock_nanosleep.2.html
-#[cfg(not(any(
- apple,
- target_os = "dragonfly",
- target_os = "emscripten",
- target_os = "freebsd", // FreeBSD 12 has clock_nanosleep, but libc targets FreeBSD 11.
- target_os = "haiku",
- target_os = "openbsd",
- target_os = "redox",
- target_os = "wasi",
-)))]
-#[inline]
-pub fn clock_nanosleep_relative(id: ClockId, request: &Timespec) -> NanosleepRelativeResult {
- backend::thread::syscalls::clock_nanosleep_relative(id, request)
-}
-
-/// `clock_nanosleep(id, TIMER_ABSTIME, request, NULL)`—Sleeps until an
-/// absolute time on a given clock.
-///
-/// This is `clock_nanosleep` specialized for the case of an absolute sleep
-/// interval. See [`clock_nanosleep_relative`] for relative intervals.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/clock_nanosleep.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/clock_nanosleep.2.html
-#[cfg(not(any(
- apple,
- target_os = "dragonfly",
- target_os = "emscripten",
- target_os = "freebsd", // FreeBSD 12 has clock_nanosleep, but libc targets FreeBSD 11.
- target_os = "haiku",
- target_os = "openbsd",
- target_os = "redox",
- target_os = "wasi",
-)))]
-#[inline]
-pub fn clock_nanosleep_absolute(id: ClockId, request: &Timespec) -> io::Result<()> {
- backend::thread::syscalls::clock_nanosleep_absolute(id, request)
-}
-
-/// `nanosleep(request, remain)`—Sleeps for a duration.
-///
-/// This effectively uses the system monotonic clock.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/nanosleep.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/nanosleep.2.html
-#[inline]
-pub fn nanosleep(request: &Timespec) -> NanosleepRelativeResult {
- backend::thread::syscalls::nanosleep(request)
-}
-
-/// A return type for `nanosleep` and `clock_nanosleep_relative`.
-#[derive(Debug, Clone)]
-#[must_use]
-pub enum NanosleepRelativeResult {
- /// The sleep completed normally.
- Ok,
- /// The sleep was interrupted, the remaining time is returned.
- Interrupted(Timespec),
- /// An invalid time value was provided.
- Err(io::Errno),
-}
diff --git a/vendor/rustix-0.37.6/src/thread/futex.rs b/vendor/rustix-0.37.6/src/thread/futex.rs
deleted file mode 100644
index 7c4399f7a..000000000
--- a/vendor/rustix-0.37.6/src/thread/futex.rs
+++ /dev/null
@@ -1,38 +0,0 @@
-//! Linux `futex`.
-//!
-//! # Safety
-//!
-//! Futex is a very low-level mechanism for implementing concurrency
-//! primitives.
-#![allow(unsafe_code)]
-
-use crate::thread::Timespec;
-use crate::{backend, io};
-
-pub use backend::thread::{FutexFlags, FutexOperation};
-
-/// `futex(uaddr, op, val, utime, uaddr2, val3)`
-///
-/// # References
-/// - [Linux `futex` system call]
-/// - [Linux `futex` feature]
-///
-/// # Safety
-///
-/// This is a very low-level feature for implementing synchronization
-/// primitives. See the references links above.
-///
-/// [Linux `futex` system call]: https://man7.org/linux/man-pages/man2/futex.2.html
-/// [Linux `futex` feature]: https://man7.org/linux/man-pages/man7/futex.7.html
-#[inline]
-pub unsafe fn futex(
- uaddr: *mut u32,
- op: FutexOperation,
- flags: FutexFlags,
- val: u32,
- utime: *const Timespec,
- uaddr2: *mut u32,
- val3: u32,
-) -> io::Result<usize> {
- backend::thread::syscalls::futex(uaddr, op, flags, val, utime, uaddr2, val3)
-}
diff --git a/vendor/rustix-0.37.6/src/thread/id.rs b/vendor/rustix-0.37.6/src/thread/id.rs
deleted file mode 100644
index 59610ff03..000000000
--- a/vendor/rustix-0.37.6/src/thread/id.rs
+++ /dev/null
@@ -1,111 +0,0 @@
-use crate::process::{Gid, Pid, Uid};
-use crate::{backend, io};
-
-/// `gettid()`—Returns the thread ID.
-///
-/// This returns the OS thread ID, which is not necessarily the same as the
-/// `rust::thread::Thread::id` or the pthread ID.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/gettid.2.html
-#[inline]
-#[must_use]
-pub fn gettid() -> Pid {
- backend::thread::syscalls::gettid()
-}
-
-/// `setuid(uid)`
-///
-/// # Warning
-///
-/// This is not the setxid you are looking for... POSIX requires xids to be
-/// process granular, but on Linux they are per-thread. Thus, this call only
-/// changes the xid for the current *thread*, not the entire process even
-/// though that is in violation of the POSIX standard.
-///
-/// For details on this distinction, see the C library vs. kernel differences
-/// in the [man page][linux_notes]. This call implements the kernel behavior.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setuid.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/setuid.2.html
-/// [linux_notes]: https://man7.org/linux/man-pages/man2/setuid.2.html#NOTES
-#[inline]
-pub fn set_thread_uid(uid: Uid) -> io::Result<()> {
- backend::thread::syscalls::setuid_thread(uid)
-}
-
-/// `setresuid(ruid, euid, suid)`
-///
-/// # Warning
-///
-/// This is not the setresxid you are looking for... POSIX requires xids to be
-/// process granular, but on Linux they are per-thread. Thus, this call only
-/// changes the xid for the current *thread*, not the entire process even
-/// though that is in violation of the POSIX standard.
-///
-/// For details on this distinction, see the C library vs. kernel differences
-/// in the [man page][linux_notes] and the notes in [`set_thread_uid`]. This
-/// call implements the kernel behavior.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/setresuid.2.html
-/// [linux_notes]: https://man7.org/linux/man-pages/man2/setresuid.2.html#NOTES
-#[inline]
-pub fn set_thread_res_uid(ruid: Uid, euid: Uid, suid: Uid) -> io::Result<()> {
- backend::thread::syscalls::setresuid_thread(ruid, euid, suid)
-}
-
-/// `setgid(gid)`
-///
-/// # Warning
-///
-/// This is not the setxid you are looking for... POSIX requires xids to be
-/// process granular, but on Linux they are per-thread. Thus, this call only
-/// changes the xid for the current *thread*, not the entire process even
-/// though that is in violation of the POSIX standard.
-///
-/// For details on this distinction, see the C library vs. kernel differences
-/// in the [man page][linux_notes]. This call implements the kernel behavior.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setgid.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/setgid.2.html
-/// [linux_notes]: https://man7.org/linux/man-pages/man2/setgid.2.html#NOTES
-#[inline]
-pub fn set_thread_gid(gid: Gid) -> io::Result<()> {
- backend::thread::syscalls::setgid_thread(gid)
-}
-
-/// `setresgid(rgid, egid, sgid)`
-///
-/// # Warning
-///
-/// This is not the setresxid you are looking for... POSIX requires xids to be
-/// process granular, but on Linux they are per-thread. Thus, this call only
-/// changes the xid for the current *thread*, not the entire process even
-/// though that is in violation of the POSIX standard.
-///
-/// For details on this distinction, see the C library vs. kernel differences
-/// in the [man page][linux_notes] and the notes in [`set_thread_gid`]. This
-/// call implements the kernel behavior.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/setresgid.2.html
-/// [linux_notes]: https://man7.org/linux/man-pages/man2/setresgid.2.html#NOTES
-#[inline]
-pub fn set_thread_res_gid(rgid: Gid, egid: Gid, sgid: Gid) -> io::Result<()> {
- backend::thread::syscalls::setresgid_thread(rgid, egid, sgid)
-}
diff --git a/vendor/rustix-0.37.6/src/thread/libcap.rs b/vendor/rustix-0.37.6/src/thread/libcap.rs
deleted file mode 100644
index f4798b8f4..000000000
--- a/vendor/rustix-0.37.6/src/thread/libcap.rs
+++ /dev/null
@@ -1,187 +0,0 @@
-use bitflags::bitflags;
-use core::mem::MaybeUninit;
-
-use crate::process::Pid;
-use crate::{backend, io};
-
-/// `__user_cap_data_struct`
-#[derive(Clone, Copy, Debug, PartialEq, Eq)]
-pub struct CapabilitySets {
- /// `__user_cap_data_struct.effective`
- pub effective: CapabilityFlags,
- /// `__user_cap_data_struct.permitted`
- pub permitted: CapabilityFlags,
- /// `__user_cap_data_struct.inheritable`
- pub inheritable: CapabilityFlags,
-}
-
-bitflags! {
- /// `CAP_*` constants.
- pub struct CapabilityFlags: u64 {
- /// `CAP_CHOWN`
- const CHOWN = 1 << linux_raw_sys::general::CAP_CHOWN;
- /// `CAP_DAC_OVERRIDE`
- const DAC_OVERRIDE = 1 << linux_raw_sys::general::CAP_DAC_OVERRIDE;
- /// `CAP_DAC_READ_SEARCH`
- const DAC_READ_SEARCH = 1 << linux_raw_sys::general::CAP_DAC_READ_SEARCH;
- /// `CAP_FOWNER`
- const FOWNER = 1 << linux_raw_sys::general::CAP_FOWNER;
- /// `CAP_FSETID`
- const FSETID = 1 << linux_raw_sys::general::CAP_FSETID;
- /// `CAP_KILL`
- const KILL = 1 << linux_raw_sys::general::CAP_KILL;
- /// `CAP_SETGID`
- const SETGID = 1 << linux_raw_sys::general::CAP_SETGID;
- /// `CAP_SETUID`
- const SETUID = 1 << linux_raw_sys::general::CAP_SETUID;
- /// `CAP_SETPCAP`
- const SETPCAP = 1 << linux_raw_sys::general::CAP_SETPCAP;
- /// `CAP_LINUX_IMMUTABLE`
- const LINUX_IMMUTABLE = 1 << linux_raw_sys::general::CAP_LINUX_IMMUTABLE;
- /// `CAP_NET_BIND_SERVICE`
- const NET_BIND_SERVICE = 1 << linux_raw_sys::general::CAP_NET_BIND_SERVICE;
- /// `CAP_NET_BROADCAST`
- const NET_BROADCAST = 1 << linux_raw_sys::general::CAP_NET_BROADCAST;
- /// `CAP_NET_ADMIN`
- const NET_ADMIN = 1 << linux_raw_sys::general::CAP_NET_ADMIN;
- /// `CAP_NET_RAW`
- const NET_RAW = 1 << linux_raw_sys::general::CAP_NET_RAW;
- /// `CAP_IPC_LOCK`
- const IPC_LOCK = 1 << linux_raw_sys::general::CAP_IPC_LOCK;
- /// `CAP_IPC_OWNER`
- const IPC_OWNER = 1 << linux_raw_sys::general::CAP_IPC_OWNER;
- /// `CAP_SYS_MODULE`
- const SYS_MODULE = 1 << linux_raw_sys::general::CAP_SYS_MODULE;
- /// `CAP_SYS_RAWIO`
- const SYS_RAWIO = 1 << linux_raw_sys::general::CAP_SYS_RAWIO;
- /// `CAP_SYS_CHROOT`
- const SYS_CHROOT = 1 << linux_raw_sys::general::CAP_SYS_CHROOT;
- /// `CAP_SYS_PTRACE`
- const SYS_PTRACE = 1 << linux_raw_sys::general::CAP_SYS_PTRACE;
- /// `CAP_SYS_PACCT`
- const SYS_PACCT = 1 << linux_raw_sys::general::CAP_SYS_PACCT;
- /// `CAP_SYS_ADMIN`
- const SYS_ADMIN = 1 << linux_raw_sys::general::CAP_SYS_ADMIN;
- /// `CAP_SYS_BOOT`
- const SYS_BOOT = 1 << linux_raw_sys::general::CAP_SYS_BOOT;
- /// `CAP_SYS_NICE`
- const SYS_NICE = 1 << linux_raw_sys::general::CAP_SYS_NICE;
- /// `CAP_SYS_RESOURCE`
- const SYS_RESOURCE = 1 << linux_raw_sys::general::CAP_SYS_RESOURCE;
- /// `CAP_SYS_TIME`
- const SYS_TIME = 1 << linux_raw_sys::general::CAP_SYS_TIME;
- /// `CAP_SYS_TTY_CONFIG`
- const SYS_TTY_CONFIG = 1 << linux_raw_sys::general::CAP_SYS_TTY_CONFIG;
- /// `CAP_MKNOD`
- const MKNOD = 1 << linux_raw_sys::general::CAP_MKNOD;
- /// `CAP_LEASE`
- const LEASE = 1 << linux_raw_sys::general::CAP_LEASE;
- /// `CAP_AUDIT_WRITE`
- const AUDIT_WRITE = 1 << linux_raw_sys::general::CAP_AUDIT_WRITE;
- /// `CAP_AUDIT_CONTROL`
- const AUDIT_CONTROL = 1 << linux_raw_sys::general::CAP_AUDIT_CONTROL;
- /// `CAP_SETFCAP`
- const SETFCAP = 1 << linux_raw_sys::general::CAP_SETFCAP;
- /// `CAP_MAC_OVERRIDE`
- const MAC_OVERRIDE = 1 << linux_raw_sys::general::CAP_MAC_OVERRIDE;
- /// `CAP_MAC_ADMIN`
- const MAC_ADMIN = 1 << linux_raw_sys::general::CAP_MAC_ADMIN;
- /// `CAP_SYSLOG`
- const SYSLOG = 1 << linux_raw_sys::general::CAP_SYSLOG;
- /// `CAP_WAKE_ALARM`
- const WAKE_ALARM = 1 << linux_raw_sys::general::CAP_WAKE_ALARM;
- /// `CAP_BLOCK_SUSPEND`
- const BLOCK_SUSPEND = 1 << linux_raw_sys::general::CAP_BLOCK_SUSPEND;
- /// `CAP_AUDIT_READ`
- const AUDIT_READ = 1 << linux_raw_sys::general::CAP_AUDIT_READ;
- /// `CAP_PERFMON`
- const PERFMON = 1 << linux_raw_sys::general::CAP_PERFMON;
- /// `CAP_BPF`
- const BPF = 1 << linux_raw_sys::general::CAP_BPF;
- /// `CAP_CHECKPOINT_RESTORE`
- const CHECKPOINT_RESTORE = 1 << linux_raw_sys::general::CAP_CHECKPOINT_RESTORE;
- }
-}
-
-/// `capget(_LINUX_CAPABILITY_VERSION_3, pid)`
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/capget.2.html
-#[inline]
-#[doc(alias = "capget")]
-pub fn capabilities(pid: Option<Pid>) -> io::Result<CapabilitySets> {
- capget(pid)
-}
-
-/// `capset(_LINUX_CAPABILITY_VERSION_3, pid, effective, permitted,
-/// inheritable)`
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/capget.2.html
-#[inline]
-#[doc(alias = "capset")]
-pub fn set_capabilities(pid: Option<Pid>, sets: CapabilitySets) -> io::Result<()> {
- capset(pid, sets)
-}
-
-#[inline]
-#[allow(unsafe_code)]
-fn capget(pid: Option<Pid>) -> io::Result<CapabilitySets> {
- let mut data = [MaybeUninit::<linux_raw_sys::general::__user_cap_data_struct>::uninit(); 2];
-
- let data = {
- let mut header = linux_raw_sys::general::__user_cap_header_struct {
- version: linux_raw_sys::general::_LINUX_CAPABILITY_VERSION_3,
- pid: Pid::as_raw(pid) as backend::c::c_int,
- };
-
- backend::thread::syscalls::capget(&mut header, &mut data)?;
- // SAFETY: v3 is a 64-bit implementation, so the kernel filled in both data
- // structs.
- unsafe { (data[0].assume_init(), data[1].assume_init()) }
- };
-
- {
- // TODO: With Rust 1.53, we can use u32::BITS in the shifts.
- const BITS: u32 = 32;
- let effective = u64::from(data.0.effective) | (u64::from(data.1.effective) << BITS);
- let permitted = u64::from(data.0.permitted) | (u64::from(data.1.permitted) << BITS);
- let inheritable = u64::from(data.0.inheritable) | (u64::from(data.1.inheritable) << BITS);
-
- // SAFETY: the kernel returns a partitioned bitset that we just combined above
- Ok(CapabilitySets {
- effective: unsafe { CapabilityFlags::from_bits_unchecked(effective) },
- permitted: unsafe { CapabilityFlags::from_bits_unchecked(permitted) },
- inheritable: unsafe { CapabilityFlags::from_bits_unchecked(inheritable) },
- })
- }
-}
-
-#[inline]
-fn capset(pid: Option<Pid>, sets: CapabilitySets) -> io::Result<()> {
- // TODO: With Rust 1.53, we can use u32::BITS in the shifts.
- const BITS: u32 = 32;
-
- let mut header = linux_raw_sys::general::__user_cap_header_struct {
- version: linux_raw_sys::general::_LINUX_CAPABILITY_VERSION_3,
- pid: Pid::as_raw(pid) as backend::c::c_int,
- };
- let data = [
- linux_raw_sys::general::__user_cap_data_struct {
- effective: sets.effective.bits() as u32,
- permitted: sets.permitted.bits() as u32,
- inheritable: sets.inheritable.bits() as u32,
- },
- linux_raw_sys::general::__user_cap_data_struct {
- effective: (sets.effective.bits() >> BITS) as u32,
- permitted: (sets.permitted.bits() >> BITS) as u32,
- inheritable: (sets.inheritable.bits() >> BITS) as u32,
- },
- ];
-
- backend::thread::syscalls::capset(&mut header, &data)
-}
diff --git a/vendor/rustix-0.37.6/src/thread/mod.rs b/vendor/rustix-0.37.6/src/thread/mod.rs
deleted file mode 100644
index 86f231bcb..000000000
--- a/vendor/rustix-0.37.6/src/thread/mod.rs
+++ /dev/null
@@ -1,27 +0,0 @@
-//! Thread-associated operations.
-
-#[cfg(not(target_os = "redox"))]
-mod clock;
-#[cfg(linux_raw)]
-mod futex;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-mod id;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-mod libcap;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-mod prctl;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-mod setns;
-
-#[cfg(not(target_os = "redox"))]
-pub use clock::*;
-#[cfg(linux_raw)]
-pub use futex::{futex, FutexFlags, FutexOperation};
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub use id::{gettid, set_thread_gid, set_thread_res_gid, set_thread_res_uid, set_thread_uid};
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub use libcap::{capabilities, set_capabilities, CapabilityFlags, CapabilitySets};
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub use prctl::*;
-#[cfg(any(target_os = "android", target_os = "linux"))]
-pub use setns::*;
diff --git a/vendor/rustix-0.37.6/src/thread/prctl.rs b/vendor/rustix-0.37.6/src/thread/prctl.rs
deleted file mode 100644
index f1ddf7d36..000000000
--- a/vendor/rustix-0.37.6/src/thread/prctl.rs
+++ /dev/null
@@ -1,982 +0,0 @@
-//! Linux `prctl` wrappers.
-//!
-//! Rustix wraps variadic/dynamic-dispatch functions like `prctl` in
-//! type-safe wrappers.
-//!
-//! # Safety
-//!
-//! The inner `prctl` calls are dynamically typed and must be called
-//! correctly.
-#![allow(unsafe_code)]
-
-use core::convert::TryFrom;
-use core::mem::MaybeUninit;
-use core::num::NonZeroU64;
-use core::ptr;
-use core::ptr::NonNull;
-use core::sync::atomic::AtomicU8;
-
-use bitflags::bitflags;
-
-use crate::backend::c::{c_int, c_uint, c_void};
-use crate::backend::process::syscalls;
-use crate::ffi::{CStr, CString};
-use crate::io;
-use crate::process::{
- prctl_1arg, prctl_2args, prctl_3args, prctl_get_at_arg2_optional, Pid,
- PointerAuthenticationKeys,
-};
-
-//
-// PR_GET_KEEPCAPS/PR_SET_KEEPCAPS
-//
-
-const PR_GET_KEEPCAPS: c_int = 7;
-
-/// Get the current state of the calling thread's `keep capabilities` flag.
-///
-/// # References
-/// - [`prctl(PR_GET_KEEPCAPS,...)`]
-///
-/// [`prctl(PR_GET_KEEPCAPS,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn get_keep_capabilities() -> io::Result<bool> {
- unsafe { prctl_1arg(PR_GET_KEEPCAPS) }.map(|r| r != 0)
-}
-
-const PR_SET_KEEPCAPS: c_int = 8;
-
-/// Set the state of the calling thread's `keep capabilities` flag.
-///
-/// # References
-/// - [`prctl(PR_SET_KEEPCAPS,...)`]
-///
-/// [`prctl(PR_SET_KEEPCAPS,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn set_keep_capabilities(enable: bool) -> io::Result<()> {
- unsafe { prctl_2args(PR_SET_KEEPCAPS, enable as usize as *mut _) }.map(|_r| ())
-}
-
-//
-// PR_GET_NAME/PR_SET_NAME
-//
-
-const PR_GET_NAME: c_int = 16;
-
-/// Get the name of the calling thread.
-///
-/// # References
-/// - [`prctl(PR_GET_NAME,...)`]
-///
-/// [`prctl(PR_GET_NAME,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn name() -> io::Result<CString> {
- let mut buffer = [0_u8; 16];
- unsafe { prctl_2args(PR_GET_NAME, buffer.as_mut_ptr().cast())? };
-
- let len = buffer.iter().position(|&x| x == 0_u8).unwrap_or(0);
- CString::new(&buffer[..len]).map_err(|_r| io::Errno::ILSEQ)
-}
-
-const PR_SET_NAME: c_int = 15;
-
-/// Set the name of the calling thread.
-///
-/// # References
-/// - [`prctl(PR_SET_NAME,...)`]
-///
-/// [`prctl(PR_SET_NAME,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn set_name(name: &CStr) -> io::Result<()> {
- unsafe { prctl_2args(PR_SET_NAME, name.as_ptr() as *mut _) }.map(|_r| ())
-}
-
-//
-// PR_GET_SECCOMP/PR_SET_SECCOMP
-//
-
-//const PR_GET_SECCOMP: c_int = 21;
-
-const SECCOMP_MODE_DISABLED: i32 = 0;
-const SECCOMP_MODE_STRICT: i32 = 1;
-const SECCOMP_MODE_FILTER: i32 = 2;
-
-/// `SECCOMP_MODE_*`.
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-#[repr(i32)]
-pub enum SecureComputingMode {
- /// Secure computing is not in use.
- Disabled = SECCOMP_MODE_DISABLED,
- /// Use hard-coded filter.
- Strict = SECCOMP_MODE_STRICT,
- /// Use user-supplied filter.
- Filter = SECCOMP_MODE_FILTER,
-}
-
-impl TryFrom<i32> for SecureComputingMode {
- type Error = io::Errno;
-
- fn try_from(value: i32) -> Result<Self, Self::Error> {
- match value {
- SECCOMP_MODE_DISABLED => Ok(Self::Disabled),
- SECCOMP_MODE_STRICT => Ok(Self::Strict),
- SECCOMP_MODE_FILTER => Ok(Self::Filter),
- _ => Err(io::Errno::RANGE),
- }
- }
-}
-
-/*
-/// Get the secure computing mode of the calling thread.
-///
-/// If the caller is not in secure computing mode, this returns [`SecureComputingMode::Disabled`].
-/// If the caller is in strict secure computing mode, then this call will cause a `SIGKILL` signal
-/// to be sent to the process.
-/// If the caller is in filter mode, and this system call is allowed by the seccomp filters,
-/// it returns [`SecureComputingMode::Filter`]; otherwise, the process is killed with
-/// a `SIGKILL` signal.
-///
-/// Since Linux 3.8, the Seccomp field of the `/proc/[pid]/status` file provides a method
-/// of obtaining the same information, without the risk that the process is killed; see `proc(5)`.
-///
-/// # References
-/// - [`prctl(PR_GET_SECCOMP,...)`]
-///
-/// [`prctl(PR_GET_SECCOMP,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn secure_computing_mode() -> io::Result<SecureComputingMode> {
- unsafe { prctl_1arg(PR_GET_SECCOMP) }.and_then(TryInto::try_into)
-}
-*/
-
-const PR_SET_SECCOMP: c_int = 22;
-
-/// Set the secure computing mode for the calling thread, to limit the
-/// available system calls.
-///
-/// # References
-/// - [`prctl(PR_SET_SECCOMP,...)`]
-///
-/// [`prctl(PR_SET_SECCOMP,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn set_secure_computing_mode(mode: SecureComputingMode) -> io::Result<()> {
- unsafe { prctl_2args(PR_SET_SECCOMP, mode as usize as *mut _) }.map(|_r| ())
-}
-
-//
-// PR_CAPBSET_READ/PR_CAPBSET_DROP
-//
-
-const PR_CAPBSET_READ: c_int = 23;
-
-/// Linux per-thread capability.
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-#[repr(u32)]
-pub enum Capability {
- /// In a system with the `_POSIX_CHOWN_RESTRICTED` option defined, this
- /// overrides the restriction of changing file ownership and group
- /// ownership.
- ChangeOwnership = linux_raw_sys::general::CAP_CHOWN,
- /// Override all DAC access, including ACL execute access if `_POSIX_ACL`
- /// is defined. Excluding DAC access covered by
- /// [`Capability::LinuxImmutable`].
- DACOverride = linux_raw_sys::general::CAP_DAC_OVERRIDE,
- /// Overrides all DAC restrictions regarding read and search on files and
- /// directories, including ACL restrictions if `_POSIX_ACL` is defined.
- /// Excluding DAC access covered by [`Capability::LinuxImmutable`].
- DACReadSearch = linux_raw_sys::general::CAP_DAC_READ_SEARCH,
- /// Overrides all restrictions about allowed operations on files, where
- /// file owner ID must be equal to the user ID, except where
- /// [`Capability::FileSetID`] is applicable. It doesn't override MAC
- /// and DAC restrictions.
- FileOwner = linux_raw_sys::general::CAP_FOWNER,
- /// Overrides the following restrictions that the effective user ID shall
- /// match the file owner ID when setting the `S_ISUID` and `S_ISGID`
- /// bits on that file; that the effective group ID (or one of the
- /// supplementary group IDs) shall match the file owner ID when setting the
- /// `S_ISGID` bit on that file; that the `S_ISUID` and `S_ISGID` bits are
- /// cleared on successful return from `chown` (not implemented).
- FileSetID = linux_raw_sys::general::CAP_FSETID,
- /// Overrides the restriction that the real or effective user ID of a
- /// process sending a signal must match the real or effective user ID
- /// of the process receiving the signal.
- Kill = linux_raw_sys::general::CAP_KILL,
- /// Allows `setgid` manipulation. Allows `setgroups`. Allows forged gids on
- /// socket credentials passing.
- SetGroupID = linux_raw_sys::general::CAP_SETGID,
- /// Allows `set*uid` manipulation (including fsuid). Allows forged pids on
- /// socket credentials passing.
- SetUserID = linux_raw_sys::general::CAP_SETUID,
- /// Without VFS support for capabilities:
- /// - Transfer any capability in your permitted set to any pid.
- /// - remove any capability in your permitted set from any pid. With VFS
- /// support for capabilities (neither of above, but)
- /// - Add any capability from current's capability bounding set to the
- /// current process' inheritable set.
- /// - Allow taking bits out of capability bounding set.
- /// - Allow modification of the securebits for a process.
- SetPermittedCapabilities = linux_raw_sys::general::CAP_SETPCAP,
- /// Allow modification of `S_IMMUTABLE` and `S_APPEND` file attributes.
- LinuxImmutable = linux_raw_sys::general::CAP_LINUX_IMMUTABLE,
- /// Allows binding to TCP/UDP sockets below 1024. Allows binding to ATM
- /// VCIs below 32.
- NetBindService = linux_raw_sys::general::CAP_NET_BIND_SERVICE,
- /// Allow broadcasting, listen to multicast.
- NetBroadcast = linux_raw_sys::general::CAP_NET_BROADCAST,
- /// Allow interface configuration. Allow administration of IP firewall,
- /// masquerading and accounting. Allow setting debug option on sockets.
- /// Allow modification of routing tables. Allow setting arbitrary
- /// process / process group ownership on sockets. Allow binding to any
- /// address for transparent proxying (also via [`Capability::NetRaw`]).
- /// Allow setting TOS (type of service). Allow setting promiscuous
- /// mode. Allow clearing driver statistics. Allow multicasting. Allow
- /// read/write of device-specific registers. Allow activation of ATM
- /// control sockets.
- NetAdmin = linux_raw_sys::general::CAP_NET_ADMIN,
- /// Allow use of `RAW` sockets. Allow use of `PACKET` sockets. Allow
- /// binding to any address for transparent proxying (also via
- /// [`Capability::NetAdmin`]).
- NetRaw = linux_raw_sys::general::CAP_NET_RAW,
- /// Allow locking of shared memory segments. Allow mlock and mlockall
- /// (which doesn't really have anything to do with IPC).
- IPCLock = linux_raw_sys::general::CAP_IPC_LOCK,
- /// Override IPC ownership checks.
- IPCOwner = linux_raw_sys::general::CAP_IPC_OWNER,
- /// Insert and remove kernel modules - modify kernel without limit.
- SystemModule = linux_raw_sys::general::CAP_SYS_MODULE,
- /// Allow ioperm/iopl access. Allow sending USB messages to any device via
- /// `/dev/bus/usb`.
- SystemRawIO = linux_raw_sys::general::CAP_SYS_RAWIO,
- /// Allow use of `chroot`.
- SystemChangeRoot = linux_raw_sys::general::CAP_SYS_CHROOT,
- /// Allow `ptrace` of any process.
- SystemProcessTrace = linux_raw_sys::general::CAP_SYS_PTRACE,
- /// Allow configuration of process accounting.
- SystemProcessAccounting = linux_raw_sys::general::CAP_SYS_PACCT,
- /// Allow configuration of the secure attention key. Allow administration
- /// of the random device. Allow examination and configuration of disk
- /// quotas. Allow setting the domainname. Allow setting the hostname.
- /// Allow `mount` and `umount`, setting up new smb connection.
- /// Allow some autofs root ioctls. Allow nfsservctl. Allow
- /// `VM86_REQUEST_IRQ`. Allow to read/write pci config on alpha. Allow
- /// `irix_prctl` on mips (setstacksize). Allow flushing all cache on
- /// m68k (`sys_cacheflush`). Allow removing semaphores. Used instead of
- /// [`Capability::ChangeOwnership`] to "chown" IPC message queues,
- /// semaphores and shared memory. Allow locking/unlocking of shared
- /// memory segment. Allow turning swap on/off. Allow forged pids on
- /// socket credentials passing. Allow setting readahead and
- /// flushing buffers on block devices. Allow setting geometry in floppy
- /// driver. Allow turning DMA on/off in `xd` driver. Allow
- /// administration of md devices (mostly the above, but some
- /// extra ioctls). Allow tuning the ide driver. Allow access to the nvram
- /// device. Allow administration of `apm_bios`, serial and bttv (TV)
- /// device. Allow manufacturer commands in isdn CAPI support driver.
- /// Allow reading non-standardized portions of pci configuration space.
- /// Allow DDI debug ioctl on sbpcd driver. Allow setting up serial ports.
- /// Allow sending raw qic-117 commands. Allow enabling/disabling tagged
- /// queuing on SCSI controllers and sending arbitrary SCSI commands.
- /// Allow setting encryption key on loopback filesystem. Allow setting
- /// zone reclaim policy. Allow everything under
- /// [`Capability::BerkeleyPacketFilters`] and
- /// [`Capability::PerformanceMonitoring`] for backward compatibility.
- SystemAdmin = linux_raw_sys::general::CAP_SYS_ADMIN,
- /// Allow use of `reboot`.
- SystemBoot = linux_raw_sys::general::CAP_SYS_BOOT,
- /// Allow raising priority and setting priority on other (different UID)
- /// processes. Allow use of FIFO and round-robin (realtime) scheduling
- /// on own processes and setting the scheduling algorithm used by
- /// another process. Allow setting cpu affinity on other processes.
- /// Allow setting realtime ioprio class. Allow setting ioprio class on
- /// other processes.
- SystemNice = linux_raw_sys::general::CAP_SYS_NICE,
- /// Override resource limits. Set resource limits. Override quota limits.
- /// Override reserved space on ext2 filesystem. Modify data journaling
- /// mode on ext3 filesystem (uses journaling resources). NOTE: ext2
- /// honors fsuid when checking for resource overrides, so you can
- /// override using fsuid too. Override size restrictions on IPC message
- /// queues. Allow more than 64hz interrupts from the real-time clock.
- /// Override max number of consoles on console allocation. Override max
- /// number of keymaps. Control memory reclaim behavior.
- SystemResource = linux_raw_sys::general::CAP_SYS_RESOURCE,
- /// Allow manipulation of system clock. Allow `irix_stime` on mips. Allow
- /// setting the real-time clock.
- SystemTime = linux_raw_sys::general::CAP_SYS_TIME,
- /// Allow configuration of tty devices. Allow `vhangup` of tty.
- SystemTTYConfig = linux_raw_sys::general::CAP_SYS_TTY_CONFIG,
- /// Allow the privileged aspects of `mknod`.
- MakeNode = linux_raw_sys::general::CAP_MKNOD,
- /// Allow taking of leases on files.
- Lease = linux_raw_sys::general::CAP_LEASE,
- /// Allow writing the audit log via unicast netlink socket.
- AuditWrite = linux_raw_sys::general::CAP_AUDIT_WRITE,
- /// Allow configuration of audit via unicast netlink socket.
- AuditControl = linux_raw_sys::general::CAP_AUDIT_CONTROL,
- /// Set or remove capabilities on files. Map `uid=0` into a child user
- /// namespace.
- SetFileCapabilities = linux_raw_sys::general::CAP_SETFCAP,
- /// Override MAC access. The base kernel enforces no MAC policy. An LSM may
- /// enforce a MAC policy, and if it does and it chooses to implement
- /// capability based overrides of that policy, this is the capability
- /// it should use to do so.
- MACOverride = linux_raw_sys::general::CAP_MAC_OVERRIDE,
- /// Allow MAC configuration or state changes. The base kernel requires no
- /// MAC configuration. An LSM may enforce a MAC policy, and if it does
- /// and it chooses to implement capability based
- /// checks on modifications to that policy or the data required to maintain
- /// it, this is the capability it should use to do so.
- MACAdmin = linux_raw_sys::general::CAP_MAC_ADMIN,
- /// Allow configuring the kernel's `syslog` (`printk` behaviour).
- SystemLog = linux_raw_sys::general::CAP_SYSLOG,
- /// Allow triggering something that will wake the system.
- WakeAlarm = linux_raw_sys::general::CAP_WAKE_ALARM,
- /// Allow preventing system suspends.
- BlockSuspend = linux_raw_sys::general::CAP_BLOCK_SUSPEND,
- /// Allow reading the audit log via multicast netlink socket.
- AuditRead = linux_raw_sys::general::CAP_AUDIT_READ,
- /// Allow system performance and observability privileged operations using
- /// `perf_events`, `i915_perf` and other kernel subsystems.
- PerformanceMonitoring = linux_raw_sys::general::CAP_PERFMON,
- /// This capability allows the following BPF operations:
- /// - Creating all types of BPF maps
- /// - Advanced verifier features
- /// - Indirect variable access
- /// - Bounded loops
- /// - BPF to BPF function calls
- /// - Scalar precision tracking
- /// - Larger complexity limits
- /// - Dead code elimination
- /// - And potentially other features
- /// - Loading BPF Type Format (BTF) data
- /// - Retrieve `xlated` and JITed code of BPF programs
- /// - Use `bpf_spin_lock` helper
- ///
- /// [`Capability::PerformanceMonitoring`] relaxes the verifier checks
- /// further:
- /// - BPF progs can use of pointer-to-integer conversions
- /// - speculation attack hardening measures are bypassed
- /// - `bpf_probe_read` to read arbitrary kernel memory is allowed
- /// - `bpf_trace_printk` to print kernel memory is allowed
- ///
- /// [`Capability::SystemAdmin`] is required to use bpf_probe_write_user.
- ///
- /// [`Capability::SystemAdmin`] is required to iterate system wide loaded
- /// programs, maps, links, BTFs and convert their IDs to file descriptors.
- ///
- /// [`Capability::PerformanceMonitoring`] and
- /// [`Capability::BerkeleyPacketFilters`] are required to load tracing
- /// programs. [`Capability::NetAdmin`] and
- /// [`Capability::BerkeleyPacketFilters`] are required to load
- /// networking programs.
- BerkeleyPacketFilters = linux_raw_sys::general::CAP_BPF,
- /// Allow checkpoint/restore related operations. Allow PID selection during
- /// `clone3`. Allow writing to `ns_last_pid`.
- CheckpointRestore = linux_raw_sys::general::CAP_CHECKPOINT_RESTORE,
-}
-
-/// Check if the specified capability is in the calling thread's capability
-/// bounding set.
-///
-/// # References
-/// - [`prctl(PR_CAPBSET_READ,...)`]
-///
-/// [`prctl(PR_CAPBSET_READ,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn capability_is_in_bounding_set(capability: Capability) -> io::Result<bool> {
- unsafe { prctl_2args(PR_CAPBSET_READ, capability as usize as *mut _) }.map(|r| r != 0)
-}
-
-const PR_CAPBSET_DROP: c_int = 24;
-
-/// If the calling thread has the [`Capability::SetPermittedCapabilities`]
-/// capability within its user namespace, then drop the specified capability
-/// from the thread's capability bounding set.
-///
-/// # References
-/// - [`prctl(PR_CAPBSET_DROP,...)`]
-///
-/// [`prctl(PR_CAPBSET_DROP,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn remove_capability_from_bounding_set(capability: Capability) -> io::Result<()> {
- unsafe { prctl_2args(PR_CAPBSET_DROP, capability as usize as *mut _) }.map(|_r| ())
-}
-
-//
-// PR_GET_SECUREBITS/PR_SET_SECUREBITS
-//
-
-const PR_GET_SECUREBITS: c_int = 27;
-
-bitflags! {
- /// `SECBIT_*`.
- pub struct CapabilitiesSecureBits: u32 {
- /// If this bit is set, then the kernel does not grant capabilities when
- /// a `set-user-ID-root` program is executed, or when a process with an effective or real
- /// UID of 0 calls `execve`.
- const NO_ROOT = 1_u32 << 0;
- /// Set [`NO_ROOT`] irreversibly.
- const NO_ROOT_LOCKED = 1_u32 << 1;
- /// Setting this flag stops the kernel from adjusting the process's permitted, effective,
- /// and ambient capability sets when the thread's effective and filesystem UIDs are switched
- /// between zero and nonzero values.
- const NO_SETUID_FIXUP = 1_u32 << 2;
- /// Set [`NO_SETUID_FIXUP`] irreversibly.
- const NO_SETUID_FIXUP_LOCKED = 1_u32 << 3;
- /// Setting this flag allows a thread that has one or more 0 UIDs to retain capabilities in
- /// its permitted set when it switches all of its UIDs to nonzero values.
- const KEEP_CAPS = 1_u32 << 4;
- /// Set [`KEEP_CAPS`] irreversibly.
- const KEEP_CAPS_LOCKED = 1_u32 << 5;
- /// Setting this flag disallows raising ambient capabilities via the `prctl`'s
- /// `PR_CAP_AMBIENT_RAISE` operation.
- const NO_CAP_AMBIENT_RAISE = 1_u32 << 6;
- /// Set [`NO_CAP_AMBIENT_RAISE`] irreversibly.
- const NO_CAP_AMBIENT_RAISE_LOCKED = 1_u32 << 7;
- }
-}
-
-/// Get the `securebits` flags of the calling thread.
-///
-/// # References
-/// - [`prctl(PR_GET_SECUREBITS,...)`]
-///
-/// [`prctl(PR_GET_SECUREBITS,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn capabilities_secure_bits() -> io::Result<CapabilitiesSecureBits> {
- let r = unsafe { prctl_1arg(PR_GET_SECUREBITS)? } as c_uint;
- CapabilitiesSecureBits::from_bits(r).ok_or(io::Errno::RANGE)
-}
-
-const PR_SET_SECUREBITS: c_int = 28;
-
-/// Set the `securebits` flags of the calling thread.
-///
-/// # References
-/// - [`prctl(PR_SET_SECUREBITS,...)`]
-///
-/// [`prctl(PR_SET_SECUREBITS,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn set_capabilities_secure_bits(bits: CapabilitiesSecureBits) -> io::Result<()> {
- unsafe { prctl_2args(PR_SET_SECUREBITS, bits.bits() as usize as *mut _) }.map(|_r| ())
-}
-
-//
-// PR_GET_TIMERSLACK/PR_SET_TIMERSLACK
-//
-
-const PR_GET_TIMERSLACK: c_int = 30;
-
-/// Get the `current` timer slack value of the calling thread.
-///
-/// # References
-/// - [`prctl(PR_GET_TIMERSLACK,...)`]
-///
-/// [`prctl(PR_GET_TIMERSLACK,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn current_timer_slack() -> io::Result<u64> {
- unsafe { prctl_1arg(PR_GET_TIMERSLACK) }.map(|r| r as u64)
-}
-
-const PR_SET_TIMERSLACK: c_int = 29;
-
-/// Sets the `current` timer slack value for the calling thread.
-///
-/// # References
-/// - [`prctl(PR_SET_TIMERSLACK,...)`]
-///
-/// [`prctl(PR_SET_TIMERSLACK,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn set_current_timer_slack(value: Option<NonZeroU64>) -> io::Result<()> {
- let value = usize::try_from(value.map_or(0, NonZeroU64::get)).map_err(|_r| io::Errno::RANGE)?;
- unsafe { prctl_2args(PR_SET_TIMERSLACK, value as *mut _) }.map(|_r| ())
-}
-
-//
-// PR_GET_NO_NEW_PRIVS/PR_SET_NO_NEW_PRIVS
-//
-
-const PR_GET_NO_NEW_PRIVS: c_int = 39;
-
-/// Get the value of the `no_new_privs` attribute for the calling thread.
-///
-/// # References
-/// - [`prctl(PR_GET_NO_NEW_PRIVS,...)`]
-///
-/// [`prctl(PR_GET_NO_NEW_PRIVS,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn no_new_privs() -> io::Result<bool> {
- unsafe { prctl_1arg(PR_GET_NO_NEW_PRIVS) }.map(|r| r != 0)
-}
-
-const PR_SET_NO_NEW_PRIVS: c_int = 38;
-
-/// Set the calling thread's `no_new_privs` attribute.
-///
-/// # References
-/// - [`prctl(PR_SET_NO_NEW_PRIVS,...)`]
-///
-/// [`prctl(PR_SET_NO_NEW_PRIVS,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn set_no_new_privs(no_new_privs: bool) -> io::Result<()> {
- unsafe { prctl_2args(PR_SET_NO_NEW_PRIVS, no_new_privs as usize as *mut _) }.map(|_r| ())
-}
-
-//
-// PR_GET_TID_ADDRESS
-//
-
-const PR_GET_TID_ADDRESS: c_int = 40;
-
-/// Get the `clear_child_tid` address set by `set_tid_address`
-/// and `clone`'s `CLONE_CHILD_CLEARTID` flag.
-///
-/// # References
-/// - [`prctl(PR_GET_TID_ADDRESS,...)`]
-///
-/// [`prctl(PR_GET_TID_ADDRESS,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn get_clear_child_tid_address() -> io::Result<Option<NonNull<c_void>>> {
- unsafe { prctl_get_at_arg2_optional::<*mut c_void>(PR_GET_TID_ADDRESS) }.map(NonNull::new)
-}
-
-//
-// PR_GET_THP_DISABLE/PR_SET_THP_DISABLE
-//
-
-const PR_GET_THP_DISABLE: c_int = 42;
-
-/// Get the current setting of the `THP disable` flag for the calling thread.
-///
-/// # References
-/// - [`prctl(PR_GET_THP_DISABLE,...)`]
-///
-/// [`prctl(PR_GET_THP_DISABLE,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn transparent_huge_pages_are_disabled() -> io::Result<bool> {
- unsafe { prctl_1arg(PR_GET_THP_DISABLE) }.map(|r| r != 0)
-}
-
-const PR_SET_THP_DISABLE: c_int = 41;
-
-/// Set the state of the `THP disable` flag for the calling thread.
-///
-/// # References
-/// - [`prctl(PR_SET_THP_DISABLE,...)`]
-///
-/// [`prctl(PR_SET_THP_DISABLE,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn disable_transparent_huge_pages(thp_disable: bool) -> io::Result<()> {
- unsafe { prctl_2args(PR_SET_THP_DISABLE, thp_disable as usize as *mut _) }.map(|_r| ())
-}
-
-//
-// PR_CAP_AMBIENT
-//
-
-const PR_CAP_AMBIENT: c_int = 47;
-
-const PR_CAP_AMBIENT_IS_SET: usize = 1;
-
-/// Check if the specified capability is in the ambient set.
-///
-/// # References
-/// - [`prctl(PR_CAP_AMBIENT,PR_CAP_AMBIENT_IS_SET,...)`]
-///
-/// [`prctl(PR_CAP_AMBIENT,PR_CAP_AMBIENT_IS_SET,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn capability_is_in_ambient_set(capability: Capability) -> io::Result<bool> {
- let cap = capability as usize as *mut _;
- unsafe { prctl_3args(PR_CAP_AMBIENT, PR_CAP_AMBIENT_IS_SET as *mut _, cap) }.map(|r| r != 0)
-}
-
-const PR_CAP_AMBIENT_CLEAR_ALL: usize = 4;
-
-/// Remove all capabilities from the ambient set.
-///
-/// # References
-/// - [`prctl(PR_CAP_AMBIENT,PR_CAP_AMBIENT_CLEAR_ALL,...)`]
-///
-/// [`prctl(PR_CAP_AMBIENT,PR_CAP_AMBIENT_CLEAR_ALL,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn clear_ambient_capability_set() -> io::Result<()> {
- unsafe { prctl_2args(PR_CAP_AMBIENT, PR_CAP_AMBIENT_CLEAR_ALL as *mut _) }.map(|_r| ())
-}
-
-const PR_CAP_AMBIENT_RAISE: usize = 2;
-const PR_CAP_AMBIENT_LOWER: usize = 3;
-
-/// Add or remove the specified capability to the ambient set.
-///
-/// # References
-/// - [`prctl(PR_CAP_AMBIENT,...)`]
-///
-/// [`prctl(PR_CAP_AMBIENT,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn configure_capability_in_ambient_set(capability: Capability, enable: bool) -> io::Result<()> {
- let sub_operation = if enable {
- PR_CAP_AMBIENT_RAISE
- } else {
- PR_CAP_AMBIENT_LOWER
- };
- let cap = capability as usize as *mut _;
-
- unsafe { prctl_3args(PR_CAP_AMBIENT, sub_operation as *mut _, cap) }.map(|_r| ())
-}
-
-//
-// PR_SVE_GET_VL/PR_SVE_SET_VL
-//
-
-const PR_SVE_GET_VL: c_int = 51;
-
-const PR_SVE_VL_LEN_MASK: u32 = 0xffff;
-const PR_SVE_VL_INHERIT: u32 = 1_u32 << 17;
-
-/// Scalable Vector Extension vector length configuration.
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-pub struct SVEVectorLengthConfig {
- /// Vector length in bytes.
- pub vector_length_in_bytes: u32,
- /// Vector length inherited across `execve`.
- pub vector_length_inherited_across_execve: bool,
-}
-
-/// Get the thread's current SVE vector length configuration.
-///
-/// # References
-/// - [`prctl(PR_SVE_GET_VL,...)`]
-///
-/// [`prctl(PR_SVE_GET_VL,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn sve_vector_length_configuration() -> io::Result<SVEVectorLengthConfig> {
- let bits = unsafe { prctl_1arg(PR_SVE_GET_VL)? } as c_uint;
- Ok(SVEVectorLengthConfig {
- vector_length_in_bytes: bits & PR_SVE_VL_LEN_MASK,
- vector_length_inherited_across_execve: (bits & PR_SVE_VL_INHERIT) != 0,
- })
-}
-
-const PR_SVE_SET_VL: c_int = 50;
-
-const PR_SVE_SET_VL_ONEXEC: u32 = 1_u32 << 18;
-
-/// Configure the thread's vector length of Scalable Vector Extension.
-///
-/// # References
-/// - [`prctl(PR_SVE_SET_VL,...)`]
-///
-/// # Safety
-///
-/// Please ensure the conditions necessary to safely call this function,
-/// as detailed in the references above.
-///
-/// [`prctl(PR_SVE_SET_VL,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub unsafe fn set_sve_vector_length_configuration(
- vector_length_in_bytes: usize,
- vector_length_inherited_across_execve: bool,
- defer_change_to_next_execve: bool,
-) -> io::Result<()> {
- let vector_length_in_bytes =
- u32::try_from(vector_length_in_bytes).map_err(|_r| io::Errno::RANGE)?;
-
- let mut bits = vector_length_in_bytes & PR_SVE_VL_LEN_MASK;
-
- if vector_length_inherited_across_execve {
- bits |= PR_SVE_VL_INHERIT;
- }
-
- if defer_change_to_next_execve {
- bits |= PR_SVE_SET_VL_ONEXEC;
- }
-
- prctl_2args(PR_SVE_SET_VL, bits as usize as *mut _).map(|_r| ())
-}
-
-//
-// PR_PAC_RESET_KEYS
-//
-
-const PR_PAC_RESET_KEYS: c_int = 54;
-
-/// Securely reset the thread's pointer authentication keys to fresh random
-/// values generated by the kernel.
-///
-/// # References
-/// - [`prctl(PR_PAC_RESET_KEYS,...)`]
-///
-/// # Safety
-///
-/// Please ensure the conditions necessary to safely call this function,
-/// as detailed in the references above.
-///
-/// [`prctl(PR_PAC_RESET_KEYS,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub unsafe fn reset_pointer_authentication_keys(
- keys: Option<PointerAuthenticationKeys>,
-) -> io::Result<()> {
- let keys = keys.as_ref().map_or(0_u32, PointerAuthenticationKeys::bits);
- prctl_2args(PR_PAC_RESET_KEYS, keys as usize as *mut _).map(|_r| ())
-}
-
-//
-// PR_GET_TAGGED_ADDR_CTRL/PR_SET_TAGGED_ADDR_CTRL
-//
-
-const PR_GET_TAGGED_ADDR_CTRL: c_int = 56;
-
-const PR_MTE_TAG_SHIFT: u32 = 3;
-const PR_MTE_TAG_MASK: u32 = 0xffff_u32 << PR_MTE_TAG_SHIFT;
-
-bitflags! {
- /// Zero means addresses that are passed for the purpose of being dereferenced by the kernel must be untagged.
- pub struct TaggedAddressMode: u32 {
- /// Addresses that are passed for the purpose of being dereferenced by the kernel may be tagged.
- const ENABLED = 1_u32 << 0;
- /// Synchronous tag check fault mode.
- const TCF_SYNC = 1_u32 << 1;
- /// Asynchronous tag check fault mode.
- const TCF_ASYNC = 1_u32 << 2;
- }
-}
-
-/// Get the current tagged address mode for the calling thread.
-///
-/// # References
-/// - [`prctl(PR_GET_TAGGED_ADDR_CTRL,...)`]
-///
-/// [`prctl(PR_GET_TAGGED_ADDR_CTRL,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub fn current_tagged_address_mode() -> io::Result<(Option<TaggedAddressMode>, u32)> {
- let r = unsafe { prctl_1arg(PR_GET_TAGGED_ADDR_CTRL)? } as c_uint;
- let mode = r & 0b111_u32;
- let mte_tag = (r & PR_MTE_TAG_MASK) >> PR_MTE_TAG_SHIFT;
- Ok((TaggedAddressMode::from_bits(mode), mte_tag))
-}
-
-const PR_SET_TAGGED_ADDR_CTRL: c_int = 55;
-
-/// Controls support for passing tagged user-space addresses to the kernel.
-///
-/// # References
-/// - [`prctl(PR_SET_TAGGED_ADDR_CTRL,...)`]
-///
-/// # Safety
-///
-/// Please ensure the conditions necessary to safely call this function,
-/// as detailed in the references above.
-///
-/// [`prctl(PR_SET_TAGGED_ADDR_CTRL,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub unsafe fn set_current_tagged_address_mode(
- mode: Option<TaggedAddressMode>,
- mte_tag: u32,
-) -> io::Result<()> {
- let config = mode.as_ref().map_or(0_u32, TaggedAddressMode::bits)
- | ((mte_tag << PR_MTE_TAG_SHIFT) & PR_MTE_TAG_MASK);
- prctl_2args(PR_SET_TAGGED_ADDR_CTRL, config as usize as *mut _).map(|_r| ())
-}
-
-//
-// PR_SET_SYSCALL_USER_DISPATCH
-//
-
-const PR_SET_SYSCALL_USER_DISPATCH: c_int = 59;
-
-const PR_SYS_DISPATCH_OFF: usize = 0;
-
-/// Disable Syscall User Dispatch mechanism.
-///
-/// # References
-/// - [`prctl(PR_SET_SYSCALL_USER_DISPATCH,PR_SYS_DISPATCH_OFF,...)`]
-///
-/// # Safety
-///
-/// Please ensure the conditions necessary to safely call this function,
-/// as detailed in the references above.
-///
-/// [`prctl(PR_SET_SYSCALL_USER_DISPATCH,PR_SYS_DISPATCH_OFF,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub unsafe fn disable_syscall_user_dispatch() -> io::Result<()> {
- prctl_2args(PR_SET_SYSCALL_USER_DISPATCH, PR_SYS_DISPATCH_OFF as *mut _).map(|_r| ())
-}
-
-const PR_SYS_DISPATCH_ON: usize = 1;
-
-/// Allow system calls to be executed.
-const SYSCALL_DISPATCH_FILTER_ALLOW: u8 = 0;
-/// Block system calls from executing.
-const SYSCALL_DISPATCH_FILTER_BLOCK: u8 = 1;
-
-/// Value of the fast switch flag controlling system calls user dispatch
-/// mechanism without the need to issue a syscall.
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-#[repr(u8)]
-pub enum SysCallUserDispatchFastSwitch {
- /// System calls are allowed to execute.
- Allow = SYSCALL_DISPATCH_FILTER_ALLOW,
- /// System calls are blocked from executing.
- Block = SYSCALL_DISPATCH_FILTER_BLOCK,
-}
-
-impl TryFrom<u8> for SysCallUserDispatchFastSwitch {
- type Error = io::Errno;
-
- fn try_from(value: u8) -> Result<Self, Self::Error> {
- match value {
- SYSCALL_DISPATCH_FILTER_ALLOW => Ok(Self::Allow),
- SYSCALL_DISPATCH_FILTER_BLOCK => Ok(Self::Block),
- _ => Err(io::Errno::RANGE),
- }
- }
-}
-
-/// Enable Syscall User Dispatch mechanism.
-///
-/// # References
-/// - [`prctl(PR_SET_SYSCALL_USER_DISPATCH,PR_SYS_DISPATCH_ON,...)`]
-///
-/// # Safety
-///
-/// Please ensure the conditions necessary to safely call this function,
-/// as detailed in the references above.
-///
-/// [`prctl(PR_SET_SYSCALL_USER_DISPATCH,PR_SYS_DISPATCH_ON,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
-#[inline]
-pub unsafe fn enable_syscall_user_dispatch(
- always_allowed_region: &[u8],
- fast_switch_flag: &AtomicU8,
-) -> io::Result<()> {
- syscalls::prctl(
- PR_SET_SYSCALL_USER_DISPATCH,
- PR_SYS_DISPATCH_ON as *mut _,
- always_allowed_region.as_ptr() as *mut _,
- always_allowed_region.len() as *mut _,
- fast_switch_flag as *const AtomicU8 as *mut _,
- )
- .map(|_r| ())
-}
-
-//
-// PR_SCHED_CORE
-//
-
-const PR_SCHED_CORE: c_int = 62;
-
-const PR_SCHED_CORE_GET: usize = 0;
-
-const PR_SCHED_CORE_SCOPE_THREAD: u32 = 0;
-const PR_SCHED_CORE_SCOPE_THREAD_GROUP: u32 = 1;
-const PR_SCHED_CORE_SCOPE_PROCESS_GROUP: u32 = 2;
-
-/// `PR_SCHED_CORE_SCOPE_*`.
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-#[repr(u32)]
-pub enum CoreSchedulingScope {
- /// Operation will be performed for the thread.
- Thread = PR_SCHED_CORE_SCOPE_THREAD,
- /// Operation will be performed for all tasks in the task group of the
- /// process.
- ThreadGroup = PR_SCHED_CORE_SCOPE_THREAD_GROUP,
- /// Operation will be performed for all processes in the process group.
- ProcessGroup = PR_SCHED_CORE_SCOPE_PROCESS_GROUP,
-}
-
-impl TryFrom<u32> for CoreSchedulingScope {
- type Error = io::Errno;
-
- fn try_from(value: u32) -> Result<Self, Self::Error> {
- match value {
- PR_SCHED_CORE_SCOPE_THREAD => Ok(Self::Thread),
- PR_SCHED_CORE_SCOPE_THREAD_GROUP => Ok(Self::ThreadGroup),
- PR_SCHED_CORE_SCOPE_PROCESS_GROUP => Ok(Self::ProcessGroup),
- _ => Err(io::Errno::RANGE),
- }
- }
-}
-
-/// Get core scheduling cookie of a process.
-///
-/// # References
-/// - [`prctl(PR_SCHED_CORE,PR_SCHED_CORE_GET,...)`]
-///
-/// [`prctl(PR_SCHED_CORE,PR_SCHED_CORE_GET,...)`]: https://www.kernel.org/doc/html/v5.18/admin-guide/hw-vuln/core-scheduling.html
-#[inline]
-pub fn core_scheduling_cookie(pid: Pid, scope: CoreSchedulingScope) -> io::Result<u64> {
- let mut value: MaybeUninit<u64> = MaybeUninit::uninit();
- unsafe {
- syscalls::prctl(
- PR_SCHED_CORE,
- PR_SCHED_CORE_GET as *mut _,
- pid.as_raw_nonzero().get() as usize as *mut _,
- scope as usize as *mut _,
- value.as_mut_ptr().cast(),
- )?;
- Ok(value.assume_init())
- }
-}
-
-const PR_SCHED_CORE_CREATE: usize = 1;
-
-/// Create unique core scheduling cookie.
-///
-/// # References
-/// - [`prctl(PR_SCHED_CORE,PR_SCHED_CORE_CREATE,...)`]
-///
-/// [`prctl(PR_SCHED_CORE,PR_SCHED_CORE_CREATE,...)`]: https://www.kernel.org/doc/html/v5.18/admin-guide/hw-vuln/core-scheduling.html
-#[inline]
-pub fn create_core_scheduling_cookie(pid: Pid, scope: CoreSchedulingScope) -> io::Result<()> {
- unsafe {
- syscalls::prctl(
- PR_SCHED_CORE,
- PR_SCHED_CORE_CREATE as *mut _,
- pid.as_raw_nonzero().get() as usize as *mut _,
- scope as usize as *mut _,
- ptr::null_mut(),
- )
- .map(|_r| ())
- }
-}
-
-const PR_SCHED_CORE_SHARE_TO: usize = 2;
-
-/// Push core scheduling cookie to a process.
-///
-/// # References
-/// - [`prctl(PR_SCHED_CORE,PR_SCHED_CORE_SHARE_TO,...)`]
-///
-/// [`prctl(PR_SCHED_CORE,PR_SCHED_CORE_SHARE_TO,...)`]: https://www.kernel.org/doc/html/v5.18/admin-guide/hw-vuln/core-scheduling.html
-#[inline]
-pub fn push_core_scheduling_cookie(pid: Pid, scope: CoreSchedulingScope) -> io::Result<()> {
- unsafe {
- syscalls::prctl(
- PR_SCHED_CORE,
- PR_SCHED_CORE_SHARE_TO as *mut _,
- pid.as_raw_nonzero().get() as usize as *mut _,
- scope as usize as *mut _,
- ptr::null_mut(),
- )
- .map(|_r| ())
- }
-}
-
-const PR_SCHED_CORE_SHARE_FROM: usize = 3;
-
-/// Pull core scheduling cookie from a process.
-///
-/// # References
-/// - [`prctl(PR_SCHED_CORE,PR_SCHED_CORE_SHARE_FROM,...)`]
-///
-/// [`prctl(PR_SCHED_CORE,PR_SCHED_CORE_SHARE_FROM,...)`]: https://www.kernel.org/doc/html/v5.18/admin-guide/hw-vuln/core-scheduling.html
-#[inline]
-pub fn pull_core_scheduling_cookie(pid: Pid, scope: CoreSchedulingScope) -> io::Result<()> {
- unsafe {
- syscalls::prctl(
- PR_SCHED_CORE,
- PR_SCHED_CORE_SHARE_FROM as *mut _,
- pid.as_raw_nonzero().get() as usize as *mut _,
- scope as usize as *mut _,
- ptr::null_mut(),
- )
- .map(|_r| ())
- }
-}
diff --git a/vendor/rustix-0.37.6/src/thread/setns.rs b/vendor/rustix-0.37.6/src/thread/setns.rs
deleted file mode 100644
index 81c9225e3..000000000
--- a/vendor/rustix-0.37.6/src/thread/setns.rs
+++ /dev/null
@@ -1,125 +0,0 @@
-use bitflags::bitflags;
-use linux_raw_sys::general::{
- CLONE_FILES, CLONE_FS, CLONE_NEWCGROUP, CLONE_NEWIPC, CLONE_NEWNET, CLONE_NEWNS, CLONE_NEWPID,
- CLONE_NEWTIME, CLONE_NEWUSER, CLONE_NEWUTS, CLONE_SYSVSEM,
-};
-
-use crate::backend::c::c_int;
-use crate::backend::thread::syscalls;
-use crate::fd::BorrowedFd;
-use crate::io;
-
-bitflags! {
- /// Thread name space type.
- pub struct ThreadNameSpaceType: u32 {
- /// Time name space.
- const TIME = CLONE_NEWTIME;
- /// Mount name space.
- const MOUNT = CLONE_NEWNS;
- /// Control group (CGroup) name space.
- const CONTROL_GROUP = CLONE_NEWCGROUP;
- /// `Host name` and `NIS domain name` (UTS) name space.
- const HOST_NAME_AND_NIS_DOMAIN_NAME = CLONE_NEWUTS;
- /// Inter-process communication (IPC) name space.
- const INTER_PROCESS_COMMUNICATION = CLONE_NEWIPC;
- /// User name space.
- const USER = CLONE_NEWUSER;
- /// Process ID name space.
- const PROCESS_ID = CLONE_NEWPID;
- /// Network name space.
- const NETWORK = CLONE_NEWNET;
- }
-}
-
-/// Type of name space referred to by a link.
-#[derive(Copy, Clone, Debug, Eq, PartialEq)]
-#[repr(u32)]
-pub enum LinkNameSpaceType {
- /// Time name space.
- Time = CLONE_NEWTIME,
- /// Mount name space.
- Mount = CLONE_NEWNS,
- /// Control group (CGroup) name space.
- ControlGroup = CLONE_NEWCGROUP,
- /// `Host name` and `NIS domain name` (UTS) name space.
- HostNameAndNISDomainName = CLONE_NEWUTS,
- /// Inter-process communication (IPC) name space.
- InterProcessCommunication = CLONE_NEWIPC,
- /// User name space.
- User = CLONE_NEWUSER,
- /// Process ID name space.
- ProcessID = CLONE_NEWPID,
- /// Network name space.
- Network = CLONE_NEWNET,
-}
-
-bitflags! {
- /// `CLONE_*` for use with [`unshare`].
- pub struct UnshareFlags: u32 {
- /// `CLONE_FILES`.
- const FILES = CLONE_FILES;
- /// `CLONE_FS`.
- const FS = CLONE_FS;
- /// `CLONE_NEWCGROUP`.
- const NWCGROUP = CLONE_NEWCGROUP;
- /// `CLONE_NEWIPC`.
- const NEWIPC = CLONE_NEWIPC;
- /// `CLONE_NEWNET`.
- const NEWNET = CLONE_NEWNET;
- /// `CLONE_NEWNS`.
- const NEWNS = CLONE_NEWNS;
- /// `CLONE_NEWPID`.
- const NEWPID = CLONE_NEWPID;
- /// `CLONE_NEWTIME`.
- const NEWTIME = CLONE_NEWTIME;
- /// `CLONE_NEWUSER`.
- const NEWUSER = CLONE_NEWUSER;
- /// `CLONE_SYSVSEM`.
- const SYSVSEM = CLONE_SYSVSEM;
- }
-}
-
-/// Reassociate the calling thread with the namespace associated with link
-/// referred to by `fd`.
-///
-/// `fd` must refer to one of the magic links in a `/proc/[pid]/ns/` directory,
-/// or a bind mount to such a link.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/setns.2.html
-pub fn move_into_link_name_space(
- fd: BorrowedFd,
- allowed_type: Option<LinkNameSpaceType>,
-) -> io::Result<()> {
- let allowed_type = allowed_type.map_or(0, |t| t as c_int);
- syscalls::setns(fd, allowed_type).map(|_r| ())
-}
-
-/// Atomically move the calling thread into one or more of the same namespaces
-/// as the thread referred to by `fd`.
-///
-/// `fd` must refer to a thread ID. See: `pidfd_open` and `clone`.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/setns.2.html
-pub fn move_into_thread_name_spaces(
- fd: BorrowedFd,
- allowed_types: ThreadNameSpaceType,
-) -> io::Result<()> {
- syscalls::setns(fd, allowed_types.bits() as c_int).map(|_r| ())
-}
-
-/// `unshare(flags)`—Disassociate parts of the current thread's execution
-/// context with other threads.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/unshare.2.html
-pub fn unshare(flags: UnshareFlags) -> io::Result<()> {
- syscalls::unshare(flags)
-}
diff --git a/vendor/rustix-0.37.6/src/time/clock.rs b/vendor/rustix-0.37.6/src/time/clock.rs
deleted file mode 100644
index 1bf74d60b..000000000
--- a/vendor/rustix-0.37.6/src/time/clock.rs
+++ /dev/null
@@ -1,78 +0,0 @@
-use crate::{backend, io};
-
-pub use backend::time::types::{Nsecs, Secs, Timespec};
-
-/// `clockid_t`
-#[cfg(not(target_os = "wasi"))]
-pub use backend::time::types::{ClockId, DynamicClockId};
-
-/// `clock_getres(id)`—Returns the resolution of a clock.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/clock_getres.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/clock_getres.2.html
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-#[inline]
-#[must_use]
-pub fn clock_getres(id: ClockId) -> Timespec {
- backend::time::syscalls::clock_getres(id)
-}
-
-/// `clock_gettime(id)`—Returns the current value of a clock.
-///
-/// This function uses `ClockId` which only contains clocks which are known to
-/// always be supported at runtime, allowing this function to be infallible.
-/// For a greater set of clocks and dynamic clock support, see
-/// [`clock_gettime_dynamic`].
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/clock_gettime.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/clock_gettime.2.html
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-#[must_use]
-pub fn clock_gettime(id: ClockId) -> Timespec {
- backend::time::syscalls::clock_gettime(id)
-}
-
-/// Like [`clock_gettime`] but with support for dynamic clocks.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/clock_gettime.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/clock_gettime.2.html
-#[cfg(not(target_os = "wasi"))]
-#[inline]
-pub fn clock_gettime_dynamic(id: DynamicClockId<'_>) -> io::Result<Timespec> {
- backend::time::syscalls::clock_gettime_dynamic(id)
-}
-
-/// `clock_settime(id, timespec)`—Sets the current value of a settable clock.
-///
-/// This fails with [`io::Errno::INVAL`] if the clock is not settable, and
-/// [`io::Errno::ACCESS`] if the current process does not have permission to
-/// set it.
-///
-/// # References
-/// - [POSIX]
-/// - [Linux]
-///
-/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/clock_settime.html
-/// [Linux]: https://man7.org/linux/man-pages/man2/clock_settime.2.html
-#[cfg(not(any(
- target_os = "redox",
- target_os = "wasi",
- all(apple, not(target_os = "macos"))
-)))]
-#[inline]
-pub fn clock_settime(id: ClockId, timespec: Timespec) -> io::Result<()> {
- backend::time::syscalls::clock_settime(id, timespec)
-}
diff --git a/vendor/rustix-0.37.6/src/time/mod.rs b/vendor/rustix-0.37.6/src/time/mod.rs
deleted file mode 100644
index 9a0dcb4d7..000000000
--- a/vendor/rustix-0.37.6/src/time/mod.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-//! Time-related operations.
-
-mod clock;
-#[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))]
-#[cfg(feature = "time")]
-mod timerfd;
-
-// TODO: Convert WASI'S clock APIs to use handles rather than ambient clock
-// identifiers, update `wasi-libc`, and then add support in `rustix`.
-pub use clock::*;
-#[cfg(any(target_os = "android", target_os = "fuchsia", target_os = "linux"))]
-#[cfg(feature = "time")]
-pub use timerfd::*;
diff --git a/vendor/rustix-0.37.6/src/time/timerfd.rs b/vendor/rustix-0.37.6/src/time/timerfd.rs
deleted file mode 100644
index 7f661f7d9..000000000
--- a/vendor/rustix-0.37.6/src/time/timerfd.rs
+++ /dev/null
@@ -1,41 +0,0 @@
-use crate::fd::{AsFd, OwnedFd};
-use crate::{backend, io};
-
-pub use backend::time::types::{Itimerspec, TimerfdClockId, TimerfdFlags, TimerfdTimerFlags};
-
-/// `timerfd_create(clockid, flags)`—Create a timer.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/timerfd_create.2.html
-#[inline]
-pub fn timerfd_create(clockid: TimerfdClockId, flags: TimerfdFlags) -> io::Result<OwnedFd> {
- backend::time::syscalls::timerfd_create(clockid, flags)
-}
-
-/// `timerfd_settime(clockid, flags, new_value)`—Set the time on a timer.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/timerfd_settime.2.html
-#[inline]
-pub fn timerfd_settime<Fd: AsFd>(
- fd: Fd,
- flags: TimerfdTimerFlags,
- new_value: &Itimerspec,
-) -> io::Result<Itimerspec> {
- backend::time::syscalls::timerfd_settime(fd.as_fd(), flags, new_value)
-}
-
-/// `timerfd_gettime(clockid, flags)`—Query a timer.
-///
-/// # References
-/// - [Linux]
-///
-/// [Linux]: https://man7.org/linux/man-pages/man2/timerfd_gettime.2.html
-#[inline]
-pub fn timerfd_gettime<Fd: AsFd>(fd: Fd) -> io::Result<Itimerspec> {
- backend::time::syscalls::timerfd_gettime(fd.as_fd())
-}
diff --git a/vendor/rustix-0.37.6/src/utils.rs b/vendor/rustix-0.37.6/src/utils.rs
deleted file mode 100644
index dcbadb260..000000000
--- a/vendor/rustix-0.37.6/src/utils.rs
+++ /dev/null
@@ -1,29 +0,0 @@
-/// Convert a `&T` into a `*const T` without using an `as`.
-#[inline]
-#[allow(dead_code)]
-pub(crate) const fn as_ptr<T>(t: &T) -> *const T {
- t
-}
-
-/// Convert a `&mut T` into a `*mut T` without using an `as`.
-#[inline]
-#[allow(dead_code)]
-pub(crate) fn as_mut_ptr<T>(t: &mut T) -> *mut T {
- t
-}
-
-/// Convert a `*mut c_void` to a `*mut T`, checking that it is not null,
-/// misaligned, or pointing to a region of memory that wraps around the address
-/// space.
-#[allow(dead_code)]
-pub(crate) fn check_raw_pointer<T>(value: *mut core::ffi::c_void) -> Option<core::ptr::NonNull<T>> {
- if (value as usize)
- .checked_add(core::mem::size_of::<T>())
- .is_none()
- || (value as usize) % core::mem::align_of::<T>() != 0
- {
- return None;
- }
-
- core::ptr::NonNull::new(value.cast())
-}
diff --git a/vendor/rustix/.cargo-checksum.json b/vendor/rustix/.cargo-checksum.json
index 5c53c42f8..525291af2 100644
--- a/vendor/rustix/.cargo-checksum.json
+++ b/vendor/rustix/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CODE_OF_CONDUCT.md":"f210602311e3f74b32f46237fd55f4ce36d798e85e3db1432ec667f63a7ffc44","CONTRIBUTING.md":"fb570c76cf924cd75b77bed52b0dbe1e87ce224dc3428c48d98301710dcc331e","COPYRIGHT":"377c2e7c53250cc5905c0b0532d35973392af16ffb9596a41d99d202cf3617c9","Cargo.toml":"7a5aed49d976d82bee1f69df0c99e9c5ef0995c4b8a6bb9d50de9ec52019ce99","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-Apache-2.0_WITH_LLVM-exception":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","ORG_CODE_OF_CONDUCT.md":"a62b69bf86e605ee1bcbb2f0a12ba79e4cebb6983a7b6491949750aecc4f2178","README.md":"cbf71e9852fbab808eca12411e9dea24f898c6c259422c75f0afc5840db8f22e","SECURITY.md":"4d75afb09dd28eb5982e3a1f768ee398d90204669ceef3240a16b31dcf04148a","benches/mod.rs":"e260e67273aa0a37cffdc5cd451699335b8ee656c17275a0d0f2b4563c6018ca","build.rs":"15fa8ef2de968e5efba61f6017dfb2bbe2c14e5a647014c0b57d0de860af3e5c","src/backend/libc/c.rs":"112c419aa77ed4dae188f9b1df9822b6984a77e48fd9a7dbfca2ee44bd8e12d3","src/backend/libc/conv.rs":"c4b4a6fdcf2f9295ab0498229a780942b031a2847ddf2466f90884bfb30255f8","src/backend/libc/event/epoll.rs":"b74f268a6c189f6617abb7683a0c8b40834fd80de9b60efca4b6823887f396b7","src/backend/libc/event/mod.rs":"4514349e9b409aaa0cdc5a6485507eb03f531a065a6fe142c6dc07b538541532","src/backend/libc/event/poll_fd.rs":"06e2ce2fb30a45b90279ae753a67085e9f818a1b16d99cc92c525e2c46d61d51","src/backend/libc/event/syscalls.rs":"295a930521b345192caaf916b39189299f81f5f7c9f1aaed235baf3bf6f2f5fa","src/backend/libc/event/types.rs":"09e813690f44752708485e5a5ee59a43834a4a3e9577f2739b310c3ea8b4b64e","src/backend/libc/event/windows_syscalls.rs":"ebfac665c6676c4b803134ab8806be8aa2e96bdbc7799a19c544cd9069b35787","src/backend/libc/fs/dir.rs":"4ff9b5f3b6fad06cfb641cf74511c4b80186b426e8c2d67a1b6cba08466b5d4f","src/backend/libc/fs/inotify.rs":"5f56d6a98fbba82369d392680f2e4750f2985b44979aa6356b906ad21e828619","src/backend/libc/fs/makedev.rs":"89c679a0ef18dd41b3c6223bce0f329ad35bf6cadbf16e47b33fad3f312ba4a6","src/backend/libc/fs/mod.rs":"576b6fcce723fcd5fc76637abd3b3565b00ca0bac309b63aecd6b8ee005fa81d","src/backend/libc/fs/syscalls.rs":"95182e261d01245b2b803ae7cbddb6b13a852e39499e73b27f7e133faecf174c","src/backend/libc/fs/types.rs":"1b7ccb8a7908e9250b79d82cc5347ed61dd1cd46059ff305cba299676b3c34ce","src/backend/libc/io/errno.rs":"74a28780c2c570c0dd3bf36258115c071f6c94cc4912cbc71c469f630f3575d0","src/backend/libc/io/mod.rs":"746647bd864e4ec7717925b6d176cebdb392b7d015070244cc48d92780351dd6","src/backend/libc/io/syscalls.rs":"380d9be17ec7e46fdc24682aeae6410dcd8b10fd129090b479bb8ee405d9b5c6","src/backend/libc/io/types.rs":"8df53d41d72a39f334ed124707cb501e83b3624b769c80b78c62bd45179bc04a","src/backend/libc/io/windows_syscalls.rs":"fab3fa099aa89cea56a6edc651dd37750e581534f4f45b04a7e425f130b08468","src/backend/libc/io_uring/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/libc/io_uring/syscalls.rs":"5af8146d5971c833e6fd657f652c618b31f854e1b0811864fba9b658cb633e19","src/backend/libc/mm/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/libc/mm/syscalls.rs":"858e5bb3bc850b6a2d5ce69b3c8e40ab7cf75d392fe3a022119e5edd0c538db5","src/backend/libc/mm/types.rs":"118d7febf1dd559fccbb1275fc450216f2b7c8901fc393a4684a2a86b554af26","src/backend/libc/mod.rs":"e572b4461d4fe9a399b5db9c8395d6559ffe69586c76506d53d5d7fb37bb87cf","src/backend/libc/mount/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/libc/mount/syscalls.rs":"1bc87501a078616d0190d2e85de55f3f968b8cb79d49bd9eb839a350eed26089","src/backend/libc/mount/types.rs":"8e2b66822cd1148e5fe4023f5608f36afb0d47bad454db9560fbca4b0dbd2b6f","src/backend/libc/net/addr.rs":"b6644e0169c6681084704e9ca231863364d81e3d3cb5d3689e0df8acf7b4ec16","src/backend/libc/net/ext.rs":"0ec74196ace553c9bff355e2e35ad3b70cab46e32f8f7194715e4528fe1f54bc","src/backend/libc/net/mod.rs":"605b818c6f4c536c96e052d9b843eeca79dccd1d3cf1c8b87e60c8539b8122b4","src/backend/libc/net/msghdr.rs":"f82825d40d8872e2e804cde32bbcc68bef43a5f48ad857fb1030550c4eb44838","src/backend/libc/net/read_sockaddr.rs":"4f9998daed06db74ddd25148c56b0a2b0636e0cfe457e19279f7f044b8b8bbdc","src/backend/libc/net/send_recv.rs":"1487ddff61de085915d9ac2e721a15a39307110b3008acffd2653810f00474a3","src/backend/libc/net/syscalls.rs":"bf19b7a9eaf67366e738f1c8f4535bfe097033ca326628529c83d62075125ec9","src/backend/libc/net/write_sockaddr.rs":"14e941b5a11e4d7a17182860c47b1ee972b56ff7f0aadbcc6ab2c8740b13cea9","src/backend/libc/param/auxv.rs":"fdc85b7c33bcd05a16471e42eb4228c48c98c642443635ba5fc3e9a45438d6d3","src/backend/libc/param/mod.rs":"5234b8f1bcb886cca6ea003d411d75eaeebe58deedd80e3441354bf46ed85d4d","src/backend/libc/pid/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/libc/pid/syscalls.rs":"49ea679b96c0741d048e82964038f9a931bc3cf3a0b59c7db3df89629b9c49e6","src/backend/libc/pipe/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/libc/pipe/syscalls.rs":"8affde100f6a9dfc762b79d1e48be5c1039be414f8ef7d5a6acaba882a68d259","src/backend/libc/pipe/types.rs":"1e797beb383bb2e4038f1de21bea204caec4a4922b25a6ef84dbbe6e953e78b0","src/backend/libc/prctl/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/libc/prctl/syscalls.rs":"8a2684f444a7555098dce2b92270d81cefdae902716c6e5d59bd7b0657e8a29d","src/backend/libc/process/cpu_set.rs":"b3d36b01b53b0b6c61a20ed8a69d48eccdd90cc17f82f2926ef1e844f002d0b7","src/backend/libc/process/mod.rs":"d7dc401255bad2e55ffff365339cdc3aad306861d269ad727a817d3cd7763166","src/backend/libc/process/syscalls.rs":"b0b66f4ab88bf92fa906a2691de932fcc5ca6d29052e8cc782ba293318845c24","src/backend/libc/process/types.rs":"5b2d6ba1ba1e5f0db9dc07335df140f957fbe8ce9db5ddb74d2341fc986fe962","src/backend/libc/process/wait.rs":"0cc556aed976b4bbb3965f74fd76b8216c755fce25043b7b21ce54afa07c9773","src/backend/libc/pty/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/libc/pty/syscalls.rs":"ff7068696e23103bbb75fc7e32db09941b864f132e9fbab407e7a5216d0059c4","src/backend/libc/rand/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/libc/rand/syscalls.rs":"78c7201e6bcb75e9cab9486d1878861319f865de2b2c46437be68690bd17bf13","src/backend/libc/rand/types.rs":"7763e6b40e4b9df825fdd2aa5ba1770da999137d04776561167116c58f8fa618","src/backend/libc/system/mod.rs":"38563ea68829ca5a4b1b0695ac8a5c05718e85bdc88a36dc805efdfce45d3909","src/backend/libc/system/syscalls.rs":"846dfb59afe40bbfc78e57afa76f0616d62d25da2daadcd872aea6fa32aafc3b","src/backend/libc/system/types.rs":"6871e16aee14fe2ae03cea798c3e509ffe44778a9c0e5608fd73e2e015876d7e","src/backend/libc/termios/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/libc/termios/syscalls.rs":"94ac755d74b93fd2904a25862e74585848713770d15038c6b29ed743f565b0ab","src/backend/libc/thread/futex.rs":"b666828653b12634bbd7fd709acf69641b648ec40962a1d4f904c5db14d2eff5","src/backend/libc/thread/mod.rs":"fa710053974d7f16a6c49242ee6c10a3b9e1143452b9daeaed8837302a679fff","src/backend/libc/thread/syscalls.rs":"120cb13fe7ffdef7a52ca1d141d31bf189176e9f5862f87bb171d54370a682a9","src/backend/libc/time/mod.rs":"38563ea68829ca5a4b1b0695ac8a5c05718e85bdc88a36dc805efdfce45d3909","src/backend/libc/time/syscalls.rs":"f82e0725c5af8a52e61ee83aad2c77694f2f7a72ac1e6eb284109a70ac6edc38","src/backend/libc/time/types.rs":"d4e55d2b9fb8de772c8bf5bba157472c49a12c25502e62a9c599a2e6d3196a5b","src/backend/libc/ugid/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/libc/ugid/syscalls.rs":"8edf91b8790add23902c9f5418da6b0723a371677f29f490e0c8af852f0f1a0c","src/backend/libc/winsock_c.rs":"3bf3884fd250eca806ffdf96da68e29c133a697810b78b333ea449e523e58562","src/backend/linux_raw/arch/aarch64.rs":"2a255c9135bc8a321c180f52b88eb2b158bc9170cd222149caeae63c24587d44","src/backend/linux_raw/arch/arm.rs":"165bccb5883d0136e55d42091183765f83d86e9d37a7cb2cec9ae8af32774db6","src/backend/linux_raw/arch/mips.rs":"24af364aa93fd4b9917639d473336490a143f0d1723b09f388e72d534160ee51","src/backend/linux_raw/arch/mips32r6.rs":"e436a2ade34f2f7c58b8924462b07a2499dfc951e1e1318d51759444fb8b658e","src/backend/linux_raw/arch/mips64.rs":"897da9ddc877963ad59464d7f81dc59df8a7e91251e6adea14cfd946e2740a1c","src/backend/linux_raw/arch/mips64r6.rs":"3c08aea13c1139fb0dfbe74ca3d0147f007c3aa2eda641afb82c46f6aa4f6cd1","src/backend/linux_raw/arch/mod.rs":"37eaeea601d39be00d170856a31a8ec6a27b0d3ac22ab3ee642ab0e45dee237d","src/backend/linux_raw/arch/powerpc64.rs":"dfb001f8636a5e46d728900b0804fe6c374e5e18a6f0e76d7d62e0c07da74477","src/backend/linux_raw/arch/riscv64.rs":"41d33242d941030f46077dc2b1bc4c7913fe7630d693a5a7eef966bcf38f9d8b","src/backend/linux_raw/arch/thumb.rs":"2fd979ab421248c0a4c592bc0cefee63edc26528f469b71b63eaed35356e42e8","src/backend/linux_raw/arch/x86.rs":"81c73c0a13925854b54db754f533dec565b1db2d9586e210a2450c6f5915171d","src/backend/linux_raw/arch/x86_64.rs":"e929036a1f3cf93ba538f4523b241605cc7b5e61f84ffe6d9d5cdbcb6f73e543","src/backend/linux_raw/c.rs":"a75bef457e00f9584389bc670ced30c3153fce290c0660674b55b1bcc49eef72","src/backend/linux_raw/conv.rs":"bd1a3254b0d540536443fe73c2be2d2b4f955a282026bd028de3dfc387e7821e","src/backend/linux_raw/event/epoll.rs":"9a53e7e0fdb3c1ece8b1fae75e7a11578fd3495122a7e00dc6debd67f4dfa2f4","src/backend/linux_raw/event/mod.rs":"8ae516c22aa6c1a8a7f568a3c95329d6a4b4fe26ba19aa5cf075a92ffdee9d75","src/backend/linux_raw/event/poll_fd.rs":"78d040f7ce0574fc18cebf6b7766c210a3254abdbafe175f51c6b460fa19c514","src/backend/linux_raw/event/syscalls.rs":"52a784855ede12e5e1ccacc7a39fd2e2712ab3270c757924dbf488432d7b7d03","src/backend/linux_raw/event/types.rs":"2ffdcb728587dbc25d302527f4a52296b96013d5199c946291b059ba4f7d466f","src/backend/linux_raw/fs/dir.rs":"d871468c08ea22868f308ce53feb1dbab8740d577441a4f3aadd358baa843d27","src/backend/linux_raw/fs/inotify.rs":"d1c79249e2faddff46ac1c2c460f6e00032d7629c17e294acb00d5914fa09ffc","src/backend/linux_raw/fs/makedev.rs":"c6b4505c4bcbbc2460e80f3097eb15e2c8ef38d6c6e7abd78e39c53c372139e2","src/backend/linux_raw/fs/mod.rs":"8689e46f9c4c3e1190ae5fe39176c573cccac10b3739472128ca237f41e2686a","src/backend/linux_raw/fs/syscalls.rs":"cdaef997f619da52866e7428cc24f9e5c815fdc0ff53a381a9857dc39e9c2e90","src/backend/linux_raw/fs/types.rs":"0012ca496df786dc0e53f31d29e7c5505702aa89effe8d614a6299f707fbdd1f","src/backend/linux_raw/io/errno.rs":"8f15d735435b722466696094aed8b612b8526658ab7e079f386037cf8a3b1a6e","src/backend/linux_raw/io/mod.rs":"7ae2324427892cca6f5ab53858d847b165f790a72ec25f3d99fb15f0506c9f27","src/backend/linux_raw/io/syscalls.rs":"026f99b397ae521ac4b2ba41acec6547018073a9da5fa355aa8f9ac61298c172","src/backend/linux_raw/io/types.rs":"0cfffdc2fc9c33faa4055f9686db5922676f17d5c069362bae3745f39da3594a","src/backend/linux_raw/io_uring/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/linux_raw/io_uring/syscalls.rs":"0f7c9cb7ccddf5687e4b9e5b23558871a452a29ac6095a0184a06c47b9b18eb6","src/backend/linux_raw/mm/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/linux_raw/mm/syscalls.rs":"369abe984aa972d8083fee20d764a8d57df242c66f897066367416f2fcc832a3","src/backend/linux_raw/mm/types.rs":"9aca15c809df0322bd7a3e7b47b63220bb2727a34b38ce599d69e684d867da68","src/backend/linux_raw/mod.rs":"a0a14bac204a57ea0bb2937f74f22f5bd5992288287727cea7c7c7c4d930f2ca","src/backend/linux_raw/mount/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/linux_raw/mount/syscalls.rs":"3947261b5d46b9737f02dc5352c3a3a35c63c461fd75bcd8ae6619dfc0bfb54d","src/backend/linux_raw/mount/types.rs":"8d39c4d6e555c88de5da3115a301562fafdcb3942aa69a0e01d42de8edb1c78f","src/backend/linux_raw/net/addr.rs":"fbb6c071a8ebc2c557c7013d36d4b540c1ff6ed63103d0a8abcacd8977fbf5c8","src/backend/linux_raw/net/mod.rs":"bc9c9c4a8c06b1fb8c57555261176dfb1f3e858a1d89cd2f88e1f31fc126c001","src/backend/linux_raw/net/msghdr.rs":"3198339ccd00224aefdba74e9144818fe387222066a387a9dfd95fd8c48cf9d9","src/backend/linux_raw/net/read_sockaddr.rs":"24075ac4c05fab5fe44aae4445cdd12ec7e474f047150baa9b768741d6b9693d","src/backend/linux_raw/net/send_recv.rs":"0ae37eac8b545cc1cdc149c601ed831d5c9acc3d229f9436029f3ba443a880f8","src/backend/linux_raw/net/syscalls.rs":"2e0532ade90118af2c1c6f48d01d90df06d719fdaf3d356df567927f2a47dabb","src/backend/linux_raw/net/write_sockaddr.rs":"0eeeb7ec8dadf95503a2f89fdc933b8f9c7e45e03fdb343ce490b6cc8eec0f96","src/backend/linux_raw/param/auxv.rs":"ed9e040cc3fbdd39862ab7388d33d6598e1ac72ba3350d1356d4c09e3e641c7e","src/backend/linux_raw/param/init.rs":"8616665e4db7d8b44fe8f8552c4ef16164bbdc0354e285f72372cabb90fe47a3","src/backend/linux_raw/param/libc_auxv.rs":"6f6aa41d463554a6fba09aa7b32e328c3ce70b74739fca0c8437610f1d923362","src/backend/linux_raw/param/mod.rs":"2e6a1a1c00351b9c88bd615aa923f71d76208df5626dd9bea03067f28f81dc31","src/backend/linux_raw/pid/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/linux_raw/pid/syscalls.rs":"eef6aa01830ddd510b83f507da2002c03e58318b73744be2c06ebbe33c4f194f","src/backend/linux_raw/pipe/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/linux_raw/pipe/syscalls.rs":"366c730fc3e991bddb9f5a15b8c3917a8e6ace6d1d5a9113b2749e476faf6f83","src/backend/linux_raw/pipe/types.rs":"9d4bd3da7cd078d42574ad7d6b7554e301a1a7e97b292a77993a6d263726ef1e","src/backend/linux_raw/prctl/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/linux_raw/prctl/syscalls.rs":"a18b224307e0d27bda9b7b85c75cd6c7ddfe39f5ce52efb7bb0bf0585b757343","src/backend/linux_raw/process/cpu_set.rs":"dfdcbdf35aff6a3e08e7d38193bf18c12ca8aa64eb0dc417667be82dcc0f7c55","src/backend/linux_raw/process/mod.rs":"fb393c70a9c63ef9a6bf1fb5a2dc94f07d6b0b6987cc5231c15c607015dafd68","src/backend/linux_raw/process/syscalls.rs":"375d0a61b1c8099d82bf75c9652abb766c6ed8963a292c83e1b6473573eae241","src/backend/linux_raw/process/types.rs":"6811ba822bc12a1a6336649151b4adb1f5d3365684a31c07f01953ea9547743d","src/backend/linux_raw/process/wait.rs":"921aee4b0048746087f52615a98edc2aa0fb4b53d6df44be4533098df55d1b05","src/backend/linux_raw/pty/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/linux_raw/pty/syscalls.rs":"ae09c4aecc0ae87b1ca58d82efc58007b9dddaae78460d615f48da19d1cd0f89","src/backend/linux_raw/rand/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/linux_raw/rand/syscalls.rs":"a84f70251672e92f253838bf05e989434f67373233e88d21d8835cbb792b1fe3","src/backend/linux_raw/rand/types.rs":"b7217c98f2da4ecf89225f36eb52c396ba2a73debdeca739ba864a9030b6a23d","src/backend/linux_raw/reg.rs":"39b6234971122d247054bda8c2dc3b44493be30482635baa9e2fcbe048e78cbd","src/backend/linux_raw/runtime/mod.rs":"b2cae8cce3822c3c92942f06ea0b68464040dcac33c6f0f7ee392c6269993347","src/backend/linux_raw/runtime/syscalls.rs":"fc9c9edbe07dd7644ab75c51a1597a31467a3421301503a072bef93e6df07643","src/backend/linux_raw/runtime/tls.rs":"8d3c5c1e84fce4e3808997176fd40110afd9ce7589f5291ef682caa81549210f","src/backend/linux_raw/system/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/linux_raw/system/syscalls.rs":"4689360343c414bbf99516478076b512bcdad8c9a33aa76756185eae81c84412","src/backend/linux_raw/system/types.rs":"1ceab8d738a71043473b26e97fa3fd79d588a86d4774cbc9b9e1d4f1447a016e","src/backend/linux_raw/termios/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/linux_raw/termios/syscalls.rs":"c8bcd3cd180ea4a78842551a4095e5d18f4c5ea029c2286f636e1237f22bfd0f","src/backend/linux_raw/thread/futex.rs":"0aa0f9f5be6a79de81e82c9f11f1bf8831f682a4b2f6cb29669e1591636f084e","src/backend/linux_raw/thread/mod.rs":"6ad4a4b90b9234e79900b27ebbe8837e3a7a36aec532912e3e253edce5225067","src/backend/linux_raw/thread/syscalls.rs":"0e3dca63be7322e1e9c58456b28eb8548abb9f08b4436b87b139e891c01c446d","src/backend/linux_raw/time/mod.rs":"672724f55b7b7be6a7452bb1cc2d28b5f0aaa840a2856fe363acce624e1beefc","src/backend/linux_raw/time/syscalls.rs":"451da0bbb66accdf58ee7f2f8746a93b22ee985907a08717a3d3b1650457d878","src/backend/linux_raw/time/types.rs":"56cb936dc36af759e06d0b7bcfa7db02818dff6084c1d1d9a538a6d5945032d5","src/backend/linux_raw/ugid/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/linux_raw/ugid/syscalls.rs":"8c86d251db33b399a1d1cbb8e87afe650b78db84f444d3251309b7a0480b54f7","src/backend/linux_raw/vdso.rs":"d6daee00f7b790970b490a4182a24c143372faa8ccbbfde56db570519481a3a7","src/backend/linux_raw/vdso_wrappers.rs":"60bbde4bed863e067e7c6804b03f2620d06d7459fb3cd1560d4ab1a0cd99df69","src/bitcast.rs":"67b2d5b65afa37730003e96c37b3e890fe51eb2438a69673d75bae7d9b036aa2","src/check_types.rs":"bc31f9b293bfbf272284ed4d0da24e941206a1ac3f18d3abb0b1a61f1ede1dae","src/clockid.rs":"1d2e1cfcf23160b55d6b046d235edf2eb2408f072a8bdef3e3a3871885abdd5a","src/cstr.rs":"9e3fcd57d6af382a9a4f24b97a29eeb05a3ccd5c8fefd666884f6e4438b3c4a3","src/event/eventfd.rs":"81cbd08f7bdf40a6ce1ca692b63da1dc8ba925282990668d9d68f1203e839fa1","src/event/kqueue.rs":"f13f40b97c4413902115408fc2f340e7c82bba42d2468015b007e8ac6ef23132","src/event/mod.rs":"c581952b280963c685473ea36cbf156d5c0c0b74eab80a6ce4f1de42bda4f9be","src/event/poll.rs":"0ee583dbd457a573a82a06c04a2a24bd2c76e751d27a435507d55338e2871327","src/event/port.rs":"4e51ff150e5d17cbd44aa64a38b99c15e26eaaf2e350768b5dcacdfde4fa5212","src/ffi.rs":"c2b8b38c02d72749aceb715c496726caba1f1fa989ad3856d0103a2fafed89ed","src/fs/abs.rs":"d5cd89622f45386dc6a44356dfa5cce7a493a2a69b398c22096e5426b73a6cca","src/fs/at.rs":"dc65a4a70c718e56b3f1d7e8520a99ef57aecb0f2b0fe7e2d9248f9648729ba5","src/fs/constants.rs":"24076a01f8bfc126b0905e9bc0521d2c3a3abc6c3b8c86ddb1e545070d097127","src/fs/copy_file_range.rs":"d3b644374390d482b2ff749a2459458872b57d0dcf9670368739b7833509a7c2","src/fs/cwd.rs":"9f429a79ace6e17455634da09216ee0ad3d067a4541518b3193ae6a8d9ff1e26","src/fs/dir.rs":"347a52f4ca9ac6321c52e802e97ec90d1b4c62ec955c8996fc17f8f5aed69966","src/fs/fadvise.rs":"beef66ebe1310fb92628240b2cde68f744c78e50f6ff61bb1404bd4868d9cae8","src/fs/fcntl.rs":"2085102d05d0ba963e100ab3e3f19dac4ff27d142fbf798626d20a2a596ba96d","src/fs/fcntl_apple.rs":"e2f23f038083621bcdecc98d02ce1023508afaecdb2ed0fba5c8b70f955301e5","src/fs/fcopyfile.rs":"ec95929cbbe02cf49233a785e5238931bb107b7903cc5bc95e4231de960995f2","src/fs/fd.rs":"7ea8cc7da291004d3f19ce6b91af1245d7c385807217076747533e9768a5c1ed","src/fs/file_type.rs":"fefd865f91011f66126213b0994773d99e373b468c31e866002228c98c64ad85","src/fs/getpath.rs":"28f6970fc1bbc37bb35c84724b59eac436ea7407a4522e18c2bdacb1fdd2edd9","src/fs/id.rs":"1b5c8a8baf9a9bb1f895f97189cea4e5982a0d35b192afeec6340a6c6222e0cb","src/fs/ioctl.rs":"e798eb41bbc201c375bc295ad2928c2467b45b4fbbff3c82236dccbc0d6391a5","src/fs/makedev.rs":"85520b484cb7c15ab71ea1c368578ea3b7e484d82f8510db92b6ce9f7ca341ae","src/fs/memfd_create.rs":"15a8f28e040cffd8c24c7903483440f88853b2e538ad48d80f3c00b4b2befdea","src/fs/mod.rs":"ecd20bf01d651b1866b198c4fc0dc8e7d681eb581e28708c8a0abd062de137ce","src/fs/mount.rs":"c96cacbe65aff4c43fc2f5be03baf2b523bda151ade1828b691de1d040d3b2e6","src/fs/openat2.rs":"4a95c15dab533a41201b5fa25c8a212956b7571d58cad696bdaf45af8aef96db","src/fs/raw_dir.rs":"c24d1f963a753397a52fb2f8c49650e067dfc3a297988c0737e458f33a454b3a","src/fs/seek_from.rs":"a9efa0feb9ac789cf47667e91efee2e3f2dcde16cb3b7a928c99da640fa0e0d6","src/fs/sendfile.rs":"e3b2058741cf4b1698f34d84bb37130cf2b72806d522a16fe541e832cde136cb","src/fs/statx.rs":"2884f75e77f9a1c59dbf55cdcd38429104af0364cbbadc550f4840c6fcf19c54","src/fs/sync.rs":"a3b23543834281f347b0f873bd38154d31d404871188ac08f2b20b9196234cfd","src/fs/xattr.rs":"b976eece822f69e768d91e61d86ee990ea18097b20f7ebeedaaf718c61b48962","src/io/close.rs":"0aa3cd05a8fed8e5244f97b8b6c2e7f65ed93a4e5435c6329852bb3da7514440","src/io/dup.rs":"a8a59c5d345dc54c57ded890720c33eb78c4d53917c71e8bb6317f7ed122cb87","src/io/errno.rs":"58a4d20ba0924e4d514e3c876fbe08982f1623187642ae14780815e65989c8c8","src/io/fcntl.rs":"c0f7bd7fce1119b0c1d0085b7ab77d5df02470ae3e06035428a2452dacbec296","src/io/ioctl.rs":"a47a5ec14607142f2c2ffcb93d016b8e86c8b15ba94b56b35382b545db62ea34","src/io/is_read_write.rs":"1bfb9ee5d58e0b29b44af12fe2668c7bccc841358698dcde47f1519ff9bb73b4","src/io/mod.rs":"75f1d0646be1d4c7c08b5887d8119b0103be8c25c43ccd4e0e97015508c0bb8f","src/io/read_write.rs":"54ba528b11601af1338bb0c71a41b256a0033076d30b3946c3fd0bdfa61dd021","src/io_uring.rs":"9ac767310d9bf50a7419c212180b0a0bcc4c7f25903fb6e4c31161be277f6fb7","src/ioctl/bsd.rs":"e33772530b1b2d1e7d61ce53d9267e68d88f7f5df13301f90412d89a46c6faaa","src/ioctl/linux.rs":"286833dd01aa72c0b06e1d734e2d84303455626f5d7ea4a71619411e75a1e965","src/ioctl/mod.rs":"f90f5e91a7362ba94261f2e1c75ecf1f21722a722cc279bc1dddcb840b72cd42","src/ioctl/patterns.rs":"ce7a10d1d4f6bc96c054871f383937ccec5452866ff1ef524a7a811a37b28702","src/lib.rs":"0e8f18006a86e69bee387c91f7598c4b81ca33425dee7c97fa433dd7a7c729e2","src/maybe_polyfill/no_std/io/mod.rs":"77889bb5c5a4f2e50e38379cdaa5d0fef4b0cafc3da056735df01f6deae75747","src/maybe_polyfill/no_std/mod.rs":"ec94a4aab4bc475785e469d10fd6bc95667e1d47d958e9cff3a19049d88c8c80","src/maybe_polyfill/no_std/net/ip_addr.rs":"046327ee244f758f2bc31d3be305d8cd0dfd8342aac1add8259e999b4b46c4a7","src/maybe_polyfill/no_std/net/mod.rs":"b0ee611c454679226a15bf647e7779995f3fe9c8e0507930a0d0613eb414b7c2","src/maybe_polyfill/no_std/net/socket_addr.rs":"bfeb32d32c176cde76323abcffebfc47e9898fb8d7ce3668c602dc8451086a2d","src/maybe_polyfill/no_std/os/fd/mod.rs":"d9dfe2a2c25be727847bcdfe6f4898685af2521850298178ca8d46a8e2ceee88","src/maybe_polyfill/no_std/os/fd/owned.rs":"283c656a4d40b60d137c9412a04d22878e9849056311a7464061af8523c81c08","src/maybe_polyfill/no_std/os/fd/raw.rs":"9cedb353580b932879ddc4dee9936212fefb6d42530dc5cec519a0779d5dee33","src/maybe_polyfill/no_std/os/mod.rs":"27dab639a765827644005d5f2fcc7c825310606b889cc8dd83f54c9528350dc0","src/maybe_polyfill/no_std/os/windows/io/mod.rs":"5bbcc05c83fee5026dd744a994e0458469466d5be39081baa62df07753b92fd2","src/maybe_polyfill/no_std/os/windows/io/raw.rs":"4c32609a489dd938a49328b5637cb3bafb96437f2f9f269ab66d7d3cb90247f6","src/maybe_polyfill/no_std/os/windows/io/socket.rs":"c658f42f24eff44a661f2adfd24a11af80fe9897f3e2af4dc5d2c64808308d65","src/maybe_polyfill/no_std/os/windows/mod.rs":"fdb416f8f231a4e778b5f985b9ae712ece5e1a1402963ad1a5f6a8b9843795f4","src/maybe_polyfill/std/mod.rs":"7c16c86cc73e226e65ead598e4018238b22000a345040b706bf1e1b3eba115fc","src/mm/madvise.rs":"3c262b3713a73fafcedf1b04bb12c048bb11d47ca43c959e5dfa48c27651f4f0","src/mm/mmap.rs":"fc32e308a24c6f351d74306943d67a68093a0b6555b4bdf6cd755bf43795f406","src/mm/mod.rs":"b3a6cb838986d45825b912355cedead761211a494ca6f89b2367a2d2157e340e","src/mm/msync.rs":"9dcfe5f54235e9314a595edb8d548ac79d222bbcc58bb3263cf7e96d603b23ad","src/mm/userfaultfd.rs":"8073443bd181ff0b3ba4d0b1ae67370b4864035a0c8b4898cd709dc47c518ae7","src/mount/fsopen.rs":"160e384e9175fd98669cda1cf3590bb195c2ba7e1c724e9ea06e692595e58ba1","src/mount/mod.rs":"5f0c9df4727592695deb1cd63ae1de021b03dcd9d0d1b68e1f34d12a7136cb19","src/mount/mount_unmount.rs":"8ad11675e5d762d33fbefbed06a6a9f9e52a9b689bd06662446152614321ab77","src/mount/types.rs":"601ae3e10b7dc496fed7f3b40a80e81c6edd7bf13189d7be45c3212d4c684c39","src/net/mod.rs":"a6bc55f9e086caf46a7c00783498d73a328a66f2a991f1ec65d5f13931377b0f","src/net/send_recv/mod.rs":"f33e39c7b228cd8109823b0a0a1aa397cddad504d49e69b36f74c5b84e5070e5","src/net/send_recv/msg.rs":"19caae23209c8de1939687055c230d832a3e45c1dc92cc4fc785edcd7789e849","src/net/socket.rs":"bc825a94831557bf4c2cabd8ef5ae21ffe0986c24f9ada564eefa66270f69ae9","src/net/socket_addr_any.rs":"d07f9e9ef8873aa5bfd85f669952299286ef6f2cc5b9fea383856432e61b850f","src/net/socketpair.rs":"56f4885c31d2664cd16e18a9a88792a4912fedd953cec36dba67e8581fd57921","src/net/sockopt.rs":"3587396e3a595d5e0b5335506b1f506ccfe00219b3ae34092c12f0a4b4a822db","src/net/types.rs":"efe80f74de928ef88f57adcf65310db165eb58015e34d3d9c4e13fec81c4061a","src/net/wsa.rs":"6e546b42f50a851fc833c57cda76cfb347203ed4b0dea574a3d325bf5a2ebf80","src/param/auxv.rs":"988872f9bec2e12f35765ae8963cbb9535d4acaedd4c9a4d07ced6feb70e0aaa","src/param/init.rs":"a31c0e5cea61a1a999767fe74f87c0d59eeb6bce66578b842fe0e0c32be27a55","src/param/mod.rs":"25b10acd5b1da8faa6f5204e6b0379b38bfab667916e886cca64bea01a42dec2","src/path/arg.rs":"ca42e3283e52461b048923f527473847094d61c8f900a090cdef8a220d04e3d5","src/path/dec_int.rs":"fad9793b89eac526953b994cbed6b614f01c25108f9763e19fb98029feda93a4","src/path/mod.rs":"6b1b949c94bcc47e0f08a3f8e8db5b61ff497d0dfd3e0655f51c01d3e4b7dfd6","src/pid.rs":"26bddad73b279de3e496d2ae8d3304e652a0072da82558f688a702c8b05e5c95","src/pipe.rs":"84b90fc1c7f657738c40ffe10715054b69b6f5294015e49a9bb31afa6975e137","src/prctl.rs":"c9daa9397460a27ed6e31fc454fc40dff83720312a002b66f4c178fc005379ec","src/process/chdir.rs":"2c1ebf9bcf8141a98fca814fa88a659674b54f3b6325276fdd52e4f97746b0b0","src/process/chroot.rs":"2b5f6124eb19f26ad2705174f7ad50cdc0a5d15abd59ffcf55421228d82130b4","src/process/exit.rs":"48de66e5504a00cb375d8f415ce63b6225a3f5204268d40726a7d0fbba43f587","src/process/id.rs":"d815b4985336cb0d56efe27e329b9979d7891fba0f32ee52b6732105c593658c","src/process/ioctl.rs":"5b920ab0a7c9e7b5d50235ce4065304ee272f4edb3252bd7d625f1c0d9d78a10","src/process/kill.rs":"7b879e5cff8a064acd0e7488f4e21bd4e4a8506ce380688b72cc48d283ff9c89","src/process/membarrier.rs":"d6c8821ec73019040c926f4e1018f399c286e87074ab9c6692370c88772af044","src/process/mod.rs":"0ef104be820068409648ed83739a51a7dcf07612088f9a6ed6c7ebdb6ad54092","src/process/pidfd.rs":"4be2fba21430ba84244e11c636c91201bc1d1dffff3e63a4da84cc96f501786b","src/process/pidfd_getfd.rs":"cbc42a1548280ae76c3c66e851fd53cc2a3d4c089cb5798c17a2cdf654f0e229","src/process/prctl.rs":"818c7512af581e933d0136b5034966be790fef1bd007c0f0519ebab360ea8da7","src/process/priority.rs":"f135482e71ea8aa0daf92b9f238051178a4c904070fa8409622f94155df3c544","src/process/procctl.rs":"3a1c705ea6405dd1d653f6fec374167c3228ff85cbf8de38629ac32b1e9babbb","src/process/rlimit.rs":"10b79de3ced0e64059a94c879742d46a35a6176c776d8eed75031d5e6340283d","src/process/sched.rs":"7c3bfc5be624e7d7f5e043c3ee0b0566fcab3d684d61c272e7b4233410ab1c42","src/process/sched_yield.rs":"6565faa3928b66ddc74a65e893e15edfa4b9be4f7e5f5f68527501a7f6bc3350","src/process/umask.rs":"1a0f31a842303c978e3f05ec191e2b5e96104c09c6596473b42b1fac34898a50","src/process/wait.rs":"1af98ca39d8816233d2ff8b2ba562afff23265e31fcff2fdd4b2556fdc0cb505","src/procfs.rs":"be94a10adf18c57b555f89814471f598426d2c1be09aad3b4bafc95330ebf174","src/pty.rs":"b68e7420b993c2c454a1b965e9852fc546c6f1b6e63f9cfecf81be50935d502c","src/rand/getrandom.rs":"1c8166a02a74f5593bb4673ef907524df04cbc1568020a5ab2ff7f4aa1283f8b","src/rand/mod.rs":"cab59332aadd9b679f5b22cbb222d48ee028af5eb9fd4a4d43922da659b895d7","src/runtime.rs":"3d3707d74d56520a8317a4f2b0fc0b3dcaed4d18e4bdb3a431015702893d535a","src/signal.rs":"c071b4f011deef19a679d7a832d5408a3cd68627161d6510008d6312266a2611","src/static_assertions.rs":"39986672f489949be1d6469f0c30fb7d2eaa21bdaa2702a8c150b2b150bf5535","src/stdio.rs":"a5de2d7d9c3c5a901f88b6acf4754687c958a2f3a93c7945c2b8fcb948d468af","src/system.rs":"714bcc2a26ea19ac3f019198d7a25e455aaeaec850c1d173706a082fed3ee031","src/termios/ioctl.rs":"a1ac967f7811a482f8bb53847c37c8359f518cd26da9df7b816ba678a0139623","src/termios/mod.rs":"b44b7caa60b6f458657ed58a0e0eca41bb4e6d6be4b0f042bbb8ab7056cebe4b","src/termios/tc.rs":"e41312d15464b83b2457c2502fc3f3b9998cfb02ba68739026dd4285cc7130ac","src/termios/tty.rs":"d59d1fd32dd1db4ad9492d9d55da563bd0477919ee954260d2be274e4516749e","src/termios/types.rs":"8b76a0eeecdd36f2f2056b73d4ecd9ddc22da205d8c87b85e8a4f957c37e511e","src/thread/clock.rs":"469326c822dfb63405ee8537552cedde0b344978280e6645bbadd47dedc71e18","src/thread/futex.rs":"985f9a0dce1e2a4892ae7f26bd1bf119ceae3f9fa6b4707e166624fc1cee76d4","src/thread/id.rs":"ad72db4fea9fccb728310bbfd01ef8c00f6cc60fa2a750f6349646a134f7009b","src/thread/libcap.rs":"a3e316e6d0f58b075125fa939b9b824e1595de20a23d341a36999416b0d10d36","src/thread/mod.rs":"98634ece0b882f123ad887017692f2a4d94a23a1dec278ed660b3497cac5cceb","src/thread/prctl.rs":"ebb271914bcf4f9bf4251434e283e4f06c52a3a38628462dadf02bec84a81b99","src/thread/setns.rs":"730badd8db8ce7b905767b341211f1226eeeb38019727bf994eb64f2531b7b7f","src/time/clock.rs":"e59a29f1bed8c31c3d5b6fad60f2d4fa6cab8dd8e86148bb3693a5e3a1ce735f","src/time/mod.rs":"43afee938c80d124d04d4ba190c03f4d21d1e3bfc154fff309211e4f6eabe940","src/time/timerfd.rs":"f17092b84553741aa2d2b44c6992b5d2c8c96cc2c2007fc9a2c6b2064485e53f","src/timespec.rs":"79c7af1bfb12b56fd482b778dd783d82c6f3233b26bb11ae3dceb454036b1da7","src/ugid.rs":"6616c6e35b7e43aee5b150f1efae7a50711e0947943c9a96833dbe214ad9e85f","src/utils.rs":"9ae76f8a41d6cc350cdd58c9084b5c3a5a708eeecd769783debdbcbaef442182","src/weak.rs":"c7cf03bf2aeba494b1999ab32183fa8c603ab72e254c0e312a67f168877e410d"},"package":"747c788e9ce8e92b12cd485c49ddf90723550b654b32508f979b71a7b1ecda4f"} \ No newline at end of file
+{"files":{"CODE_OF_CONDUCT.md":"f210602311e3f74b32f46237fd55f4ce36d798e85e3db1432ec667f63a7ffc44","CONTRIBUTING.md":"3fd57de5c678db1c972da676a8231d2fde9820695ef1f0d53f1e55a3e81d9de0","COPYRIGHT":"377c2e7c53250cc5905c0b0532d35973392af16ffb9596a41d99d202cf3617c9","Cargo.toml":"5a6eafc41863c968362a1b8424dd0a5e1ce6502496b2999ef97ceac81f30fbcd","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-Apache-2.0_WITH_LLVM-exception":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","ORG_CODE_OF_CONDUCT.md":"a62b69bf86e605ee1bcbb2f0a12ba79e4cebb6983a7b6491949750aecc4f2178","README.md":"0acc443488c1d6f7a0a80a91385d06c7a1920c1f5c847214dd6c23a6bd027f75","SECURITY.md":"4d75afb09dd28eb5982e3a1f768ee398d90204669ceef3240a16b31dcf04148a","benches/mod.rs":"e260e67273aa0a37cffdc5cd451699335b8ee656c17275a0d0f2b4563c6018ca","build.rs":"5f93559819ca7fe233f01579d51ff5b58cb6e96ef9e7817a3358a9b410d5bbf6","src/backend/libc/c.rs":"9a929ab2bff99843e8c663b92b93def5c752e96d2e6228520cb50eeec483586b","src/backend/libc/conv.rs":"b66d080db3a4c2756fe722462b543982bf88e5bc8071b9dc98d28ec2aee3dbfc","src/backend/libc/event/epoll.rs":"b6f00ec602f9a6b9a2b7a66a242efda088b67ed66053692dcbba683df4fdaf19","src/backend/libc/event/mod.rs":"7f8547c599b8263eb791890bbe4a0b22fe2676d007ffdcc3e07b2e48d1c994db","src/backend/libc/event/poll_fd.rs":"1186dd69fc78d474975f1b8c55c9dd261229cb0c53a0dd2a88754ef62529a917","src/backend/libc/event/syscalls.rs":"295a930521b345192caaf916b39189299f81f5f7c9f1aaed235baf3bf6f2f5fa","src/backend/libc/event/types.rs":"e81130bc07e8f762ea2942bca1bde048ade0df24aac619907f3055d2dda7d522","src/backend/libc/event/windows_syscalls.rs":"ebfac665c6676c4b803134ab8806be8aa2e96bdbc7799a19c544cd9069b35787","src/backend/libc/fs/dir.rs":"71332c794f4e2438e7c700a0d2206fe0088cf98473030e3f8ccddf252ad7f5b2","src/backend/libc/fs/inotify.rs":"a027a718db8bf6ff9a778c2cfa706850b466240b0a2296d72b9834c0096968e8","src/backend/libc/fs/makedev.rs":"89c679a0ef18dd41b3c6223bce0f329ad35bf6cadbf16e47b33fad3f312ba4a6","src/backend/libc/fs/mod.rs":"3d28b803011b57da6315bb747daf0117218687c0cc610358f5dafddf0b7d44d3","src/backend/libc/fs/syscalls.rs":"229d1c27d53bfbd35310b05aaf8b3307d6b6e9948faf0655713bc662f901bd02","src/backend/libc/fs/types.rs":"ca25c8271e1fd2ff6c28082884ca112fd5e0523b2aa3cd289cd9a399c962a172","src/backend/libc/io/errno.rs":"d33978855c2e0e97d5e1f7a04ab10894f9f2c3e329e949f259a757f89942074e","src/backend/libc/io/mod.rs":"746647bd864e4ec7717925b6d176cebdb392b7d015070244cc48d92780351dd6","src/backend/libc/io/syscalls.rs":"cbd9e9db566597de0a709247c8ba3bd1e6ce266a128d639273353c706f0592b7","src/backend/libc/io/types.rs":"2efd39bb3df19a9db5496217284f3d2235ddb354fac81dd71861109a56bede0b","src/backend/libc/io/windows_syscalls.rs":"fab3fa099aa89cea56a6edc651dd37750e581534f4f45b04a7e425f130b08468","src/backend/libc/io_uring/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/libc/io_uring/syscalls.rs":"5af8146d5971c833e6fd657f652c618b31f854e1b0811864fba9b658cb633e19","src/backend/libc/mm/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/libc/mm/syscalls.rs":"c04c61ad3d7f3b24d13f89144d7fa0a05658cea4763207f9250db4f9362de2fe","src/backend/libc/mm/types.rs":"48406d44d79b102ae9d17860749611d26c1f04e3630e9680dfcb20e2efc148a8","src/backend/libc/mod.rs":"778083f85aaca00aa5c8ec36b541e0e8a3e693660a6acf4722b4508f015c278c","src/backend/libc/mount/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/libc/mount/syscalls.rs":"1bc87501a078616d0190d2e85de55f3f968b8cb79d49bd9eb839a350eed26089","src/backend/libc/mount/types.rs":"1b0d527ae5a272ae441fa35192616a867090204404324a341a7864ae1f5ea3fd","src/backend/libc/net/addr.rs":"9bdc2febb20785bc26a820eaba52cb546c67c79cb547f08105087cd0f79d5861","src/backend/libc/net/ext.rs":"0dd64877abe1ba86b47a2ab34340e3f6cc7b53b22d0bb5e237daf6a82edd46b0","src/backend/libc/net/mod.rs":"5f0bd80a6575aba4a714443ca99af76ad15b053f1f8029aa1d9c7fa10e6d9242","src/backend/libc/net/msghdr.rs":"64825203c09cb60ac4e869cd27a44697f1efe53455c41684279d50d8f0a96701","src/backend/libc/net/read_sockaddr.rs":"b1a72b7bd56cd152ed0731f571e4d9411b2974f860fc045319dc74b5b077e569","src/backend/libc/net/send_recv.rs":"1450ca958431a5bf3a85cdeef88b387f30d5c1215de2c56d164ccda38f21b36c","src/backend/libc/net/sockopt.rs":"178a6622bab25bf1813d6c17151f48d820e238db8cbd05be3aae563902d6c53e","src/backend/libc/net/syscalls.rs":"1c703ea3d7a1d0bfa43ffe07425882f310260589d513e1a936de434fa653cf3a","src/backend/libc/net/write_sockaddr.rs":"6f06f6cf6089fbc43f93f4f3830468735c92277595769867cb6c89e1fe1c299a","src/backend/libc/param/auxv.rs":"fc9476c85482b1d44190289224ccf40c96fbf3a2fe3d8554ddb42acb2e97a8ae","src/backend/libc/param/mod.rs":"5234b8f1bcb886cca6ea003d411d75eaeebe58deedd80e3441354bf46ed85d4d","src/backend/libc/pid/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/libc/pid/syscalls.rs":"49ea679b96c0741d048e82964038f9a931bc3cf3a0b59c7db3df89629b9c49e6","src/backend/libc/pipe/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/libc/pipe/syscalls.rs":"8affde100f6a9dfc762b79d1e48be5c1039be414f8ef7d5a6acaba882a68d259","src/backend/libc/pipe/types.rs":"bcf2751691748b5084a6d8d8851b496bc2ee9011fc1c717839b09b07d423eb7f","src/backend/libc/prctl/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/libc/prctl/syscalls.rs":"8a2684f444a7555098dce2b92270d81cefdae902716c6e5d59bd7b0657e8a29d","src/backend/libc/process/cpu_set.rs":"b3d36b01b53b0b6c61a20ed8a69d48eccdd90cc17f82f2926ef1e844f002d0b7","src/backend/libc/process/mod.rs":"3f376060815d2ed78081ddf6fb0cddc97dff5dac2f4934f0672cb09736e16377","src/backend/libc/process/syscalls.rs":"278c87df6321cad2bd37049a7cfeecad7dd54f5e3a8449368da4c3409637e6af","src/backend/libc/process/types.rs":"c011d60d93130e1233ee1d69de1e834a6ce05628220a1c0bea9b5c6eb4c853a2","src/backend/libc/process/wait.rs":"0cc556aed976b4bbb3965f74fd76b8216c755fce25043b7b21ce54afa07c9773","src/backend/libc/pty/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/libc/pty/syscalls.rs":"699a4c325fc590b8b5dabfe5a9ff386809be14dd24bf35aa6ef581b2bd75457b","src/backend/libc/rand/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/libc/rand/syscalls.rs":"78c7201e6bcb75e9cab9486d1878861319f865de2b2c46437be68690bd17bf13","src/backend/libc/rand/types.rs":"4eb0b4cdd0a9b089d1c9f6a25ad1ca97be28a38b7b07a705ec605b773f63f880","src/backend/libc/shm/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/libc/shm/syscalls.rs":"60d797d4e85e08e6330e6b8d80094356ce377e5484952f88ae2a6e49231c268c","src/backend/libc/shm/types.rs":"2206eac8ee74951b995e1e80f10bf235cc6b04e0a099f4adefce546378838233","src/backend/libc/system/mod.rs":"38563ea68829ca5a4b1b0695ac8a5c05718e85bdc88a36dc805efdfce45d3909","src/backend/libc/system/syscalls.rs":"abe1093f3495668d8576ae55073c74976cffb04d2e1bc20583d7ec12ac848b06","src/backend/libc/system/types.rs":"6871e16aee14fe2ae03cea798c3e509ffe44778a9c0e5608fd73e2e015876d7e","src/backend/libc/termios/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/libc/termios/syscalls.rs":"77c4c6fdfe036251ee1540df5b398a38d87597a5e7e94abaf9b983419ae4ca24","src/backend/libc/thread/futex.rs":"b666828653b12634bbd7fd709acf69641b648ec40962a1d4f904c5db14d2eff5","src/backend/libc/thread/mod.rs":"fa710053974d7f16a6c49242ee6c10a3b9e1143452b9daeaed8837302a679fff","src/backend/libc/thread/syscalls.rs":"c8e84ad232ec1317be989529c24e204c51bb4e1e0212de2c1937b00bc92e5483","src/backend/libc/time/mod.rs":"38563ea68829ca5a4b1b0695ac8a5c05718e85bdc88a36dc805efdfce45d3909","src/backend/libc/time/syscalls.rs":"f82e0725c5af8a52e61ee83aad2c77694f2f7a72ac1e6eb284109a70ac6edc38","src/backend/libc/time/types.rs":"47ab4178a51c246ecc5f2a2fcca7f6ad9c8a1a45d11dadcb95ee0e4f82e8dfe2","src/backend/libc/ugid/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/libc/ugid/syscalls.rs":"8edf91b8790add23902c9f5418da6b0723a371677f29f490e0c8af852f0f1a0c","src/backend/libc/winsock_c.rs":"3bf3884fd250eca806ffdf96da68e29c133a697810b78b333ea449e523e58562","src/backend/linux_raw/arch/aarch64.rs":"2a255c9135bc8a321c180f52b88eb2b158bc9170cd222149caeae63c24587d44","src/backend/linux_raw/arch/arm.rs":"165bccb5883d0136e55d42091183765f83d86e9d37a7cb2cec9ae8af32774db6","src/backend/linux_raw/arch/mips.rs":"24af364aa93fd4b9917639d473336490a143f0d1723b09f388e72d534160ee51","src/backend/linux_raw/arch/mips32r6.rs":"e436a2ade34f2f7c58b8924462b07a2499dfc951e1e1318d51759444fb8b658e","src/backend/linux_raw/arch/mips64.rs":"897da9ddc877963ad59464d7f81dc59df8a7e91251e6adea14cfd946e2740a1c","src/backend/linux_raw/arch/mips64r6.rs":"3c08aea13c1139fb0dfbe74ca3d0147f007c3aa2eda641afb82c46f6aa4f6cd1","src/backend/linux_raw/arch/mod.rs":"37eaeea601d39be00d170856a31a8ec6a27b0d3ac22ab3ee642ab0e45dee237d","src/backend/linux_raw/arch/powerpc64.rs":"dfb001f8636a5e46d728900b0804fe6c374e5e18a6f0e76d7d62e0c07da74477","src/backend/linux_raw/arch/riscv64.rs":"41d33242d941030f46077dc2b1bc4c7913fe7630d693a5a7eef966bcf38f9d8b","src/backend/linux_raw/arch/thumb.rs":"2fd979ab421248c0a4c592bc0cefee63edc26528f469b71b63eaed35356e42e8","src/backend/linux_raw/arch/x86.rs":"81c73c0a13925854b54db754f533dec565b1db2d9586e210a2450c6f5915171d","src/backend/linux_raw/arch/x86_64.rs":"e929036a1f3cf93ba538f4523b241605cc7b5e61f84ffe6d9d5cdbcb6f73e543","src/backend/linux_raw/c.rs":"74cdf34fcd5bba9628c04585fa13721073e2bffe6740315c7655d1a55150230f","src/backend/linux_raw/conv.rs":"fd339c2e78e6470cb03614540bea2958eec83f1b6cbecc68696a2d2061365f90","src/backend/linux_raw/event/epoll.rs":"4ae8f9de28c6875ab29cde7da9b4b01a6578e905c7a0e0b461d26025cb24ab52","src/backend/linux_raw/event/mod.rs":"72e46b04637e2d1d2a6b97af616144995399e489d1fe916faf835d72fc8c64cd","src/backend/linux_raw/event/poll_fd.rs":"fe1c289980384edf7334a4afe92f92cb6f51b7c0431ecb19930426a3bdb89fa5","src/backend/linux_raw/event/syscalls.rs":"8782cdf978bff0773bf5f35c1056d5c29a40742cf6f99d9606d951b52596cd34","src/backend/linux_raw/event/types.rs":"9538403f2e2c5ffcc939769d83fbfcc2db03874b45c36a2858ba07a05a3e3635","src/backend/linux_raw/fs/dir.rs":"c675dc5413428d2defd6752e99d210da83639779e853db209de6a1c08d35e0e7","src/backend/linux_raw/fs/inotify.rs":"9fc5edea36e347041a39e583cb473dd84af40c63fff3dfbb85a1a97d2833d8e5","src/backend/linux_raw/fs/makedev.rs":"c6b4505c4bcbbc2460e80f3097eb15e2c8ef38d6c6e7abd78e39c53c372139e2","src/backend/linux_raw/fs/mod.rs":"8689e46f9c4c3e1190ae5fe39176c573cccac10b3739472128ca237f41e2686a","src/backend/linux_raw/fs/syscalls.rs":"a4512f58e2ef01bf0799c96fa7821284866b6826594642565f46d93e566e2e12","src/backend/linux_raw/fs/types.rs":"ccbce0b7971064c71b16a341b7f39bf2c375262ea199d6fcf9d1b073b032ccf1","src/backend/linux_raw/io/errno.rs":"2681fe1f7da132414606a7c0dbc1c2cbc43e45f326f00d06cdff51d9724c8c5e","src/backend/linux_raw/io/mod.rs":"7ae2324427892cca6f5ab53858d847b165f790a72ec25f3d99fb15f0506c9f27","src/backend/linux_raw/io/syscalls.rs":"831ce424f0032e6891d46503e972313fd7a46f15cb2fbb1f87e40fb05a018e9a","src/backend/linux_raw/io/types.rs":"d0df5a62248e1ba19af0f89f86da7ba2312d97065c2814ddf6b08a4a0db23bad","src/backend/linux_raw/io_uring/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/linux_raw/io_uring/syscalls.rs":"0f7c9cb7ccddf5687e4b9e5b23558871a452a29ac6095a0184a06c47b9b18eb6","src/backend/linux_raw/mm/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/linux_raw/mm/syscalls.rs":"ac77ee94bb26bc959d3b077ef60e72863ef845c1438646b61755bdb861467bc6","src/backend/linux_raw/mm/types.rs":"46abdd2492301b7fe542ea3949eef2cfe28959cdd1f571ee1350e35b6517349b","src/backend/linux_raw/mod.rs":"bb26fe4783f834a4624c99ecf9e4ea8fa4d1c7fe9adfb6d7310fac689e7797bc","src/backend/linux_raw/mount/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/linux_raw/mount/syscalls.rs":"3947261b5d46b9737f02dc5352c3a3a35c63c461fd75bcd8ae6619dfc0bfb54d","src/backend/linux_raw/mount/types.rs":"af364e3f054b0fa55562827944235055beb752716347645cd1775d1a4d5615c1","src/backend/linux_raw/net/addr.rs":"fbb6c071a8ebc2c557c7013d36d4b540c1ff6ed63103d0a8abcacd8977fbf5c8","src/backend/linux_raw/net/mod.rs":"904b2ccd4228ebcda25db0223b92fb03e4042bcc7b0a202f19410a8a5ff517a5","src/backend/linux_raw/net/msghdr.rs":"a88e8395dd5a25c103dc2172d4e7013e5104a6d70091ad78efd286ebc8284acf","src/backend/linux_raw/net/read_sockaddr.rs":"4ab5d470f03f19a928327603e1d55de8b9e21cbe4bfc6ed65d856803092b1c90","src/backend/linux_raw/net/send_recv.rs":"6d5d2aec61a3c1b4a5fef1a8a487dc8e163da8988d1237541ed008baa01128cc","src/backend/linux_raw/net/sockopt.rs":"2ea8625ecd68a799c14ed48dec2f3e01f085222b6cc36f4916b20143e08ae575","src/backend/linux_raw/net/syscalls.rs":"b231754af1c94f61d206839b45f51516e0210761bbbcc1ef68c1fe6fc8a1bbbb","src/backend/linux_raw/net/write_sockaddr.rs":"a9374256cb47b3f4d5fec308986a109ce51a521abab31590df1f66c04c07d437","src/backend/linux_raw/param/auxv.rs":"c6a74c0b41aa28c850a80aad7cbad677df65c1f3eb78415872f6f3d1166716f4","src/backend/linux_raw/param/init.rs":"a5024f9afe361884f22fb4d65e632ccd8a60f1138ff6bd526df600d40e0d9b7e","src/backend/linux_raw/param/libc_auxv.rs":"167621c0b1bfd06c91c1201e9404d6624aa0a702ade17c6e37d9370c636be589","src/backend/linux_raw/param/mod.rs":"2e6a1a1c00351b9c88bd615aa923f71d76208df5626dd9bea03067f28f81dc31","src/backend/linux_raw/pid/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/linux_raw/pid/syscalls.rs":"eef6aa01830ddd510b83f507da2002c03e58318b73744be2c06ebbe33c4f194f","src/backend/linux_raw/pipe/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/linux_raw/pipe/syscalls.rs":"366c730fc3e991bddb9f5a15b8c3917a8e6ace6d1d5a9113b2749e476faf6f83","src/backend/linux_raw/pipe/types.rs":"caee78eaf13af02e5c4024c7459f23287dfd2c544ebab1dc5f728106fafe24da","src/backend/linux_raw/prctl/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/linux_raw/prctl/syscalls.rs":"a18b224307e0d27bda9b7b85c75cd6c7ddfe39f5ce52efb7bb0bf0585b757343","src/backend/linux_raw/process/cpu_set.rs":"dfdcbdf35aff6a3e08e7d38193bf18c12ca8aa64eb0dc417667be82dcc0f7c55","src/backend/linux_raw/process/mod.rs":"fb393c70a9c63ef9a6bf1fb5a2dc94f07d6b0b6987cc5231c15c607015dafd68","src/backend/linux_raw/process/syscalls.rs":"a2e446ba4e09727d11fc3b3d4bb316a659399aad186c08aa5bba80e62741265a","src/backend/linux_raw/process/types.rs":"6811ba822bc12a1a6336649151b4adb1f5d3365684a31c07f01953ea9547743d","src/backend/linux_raw/process/wait.rs":"921aee4b0048746087f52615a98edc2aa0fb4b53d6df44be4533098df55d1b05","src/backend/linux_raw/pty/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/linux_raw/pty/syscalls.rs":"ae09c4aecc0ae87b1ca58d82efc58007b9dddaae78460d615f48da19d1cd0f89","src/backend/linux_raw/rand/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/linux_raw/rand/syscalls.rs":"a84f70251672e92f253838bf05e989434f67373233e88d21d8835cbb792b1fe3","src/backend/linux_raw/rand/types.rs":"a21dbb1ab31eed6b59a57520be5a3c603c36d18ea74e67f7527f40835ba209a3","src/backend/linux_raw/reg.rs":"def5f88730bd625b2298c86559b5a378fce4bf6ce225204740ba087e034abce6","src/backend/linux_raw/runtime/mod.rs":"b2cae8cce3822c3c92942f06ea0b68464040dcac33c6f0f7ee392c6269993347","src/backend/linux_raw/runtime/syscalls.rs":"90849c8e429f215c225d430e7f550b5da0bb96054ef01745d3184f6c890ba8cf","src/backend/linux_raw/runtime/tls.rs":"6316060560a112c2e9cd9807cdba6e8c91414113a04a739160929ae9a67bba1f","src/backend/linux_raw/shm/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/linux_raw/shm/syscalls.rs":"3ebf91610b02de0312e1f0f0cc5d56e12b4d93794540087b3182cbdf3cb9c8db","src/backend/linux_raw/shm/types.rs":"b831b474aba7eb97167c9289f5257776a72b39134b44e67a0ecfcef2394dcd47","src/backend/linux_raw/system/mod.rs":"8aa966faf3853d1a93d0ed91f7e5f4a53539b0287b25a5bfe489fa1d07f7cfd7","src/backend/linux_raw/system/syscalls.rs":"2af6c2672a6528b404b52f501d9803a63e9f47886d3b5d2d2dc5a71cefa7327a","src/backend/linux_raw/system/types.rs":"1ceab8d738a71043473b26e97fa3fd79d588a86d4774cbc9b9e1d4f1447a016e","src/backend/linux_raw/termios/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/linux_raw/termios/syscalls.rs":"151f03b938aec36a38fbf4e4b507ddc84d0999a246ee48abd5893464daa736a8","src/backend/linux_raw/thread/futex.rs":"0aa0f9f5be6a79de81e82c9f11f1bf8831f682a4b2f6cb29669e1591636f084e","src/backend/linux_raw/thread/mod.rs":"6ad4a4b90b9234e79900b27ebbe8837e3a7a36aec532912e3e253edce5225067","src/backend/linux_raw/thread/syscalls.rs":"0e3dca63be7322e1e9c58456b28eb8548abb9f08b4436b87b139e891c01c446d","src/backend/linux_raw/time/mod.rs":"672724f55b7b7be6a7452bb1cc2d28b5f0aaa840a2856fe363acce624e1beefc","src/backend/linux_raw/time/syscalls.rs":"451da0bbb66accdf58ee7f2f8746a93b22ee985907a08717a3d3b1650457d878","src/backend/linux_raw/time/types.rs":"028d2993df8fffe5581f7082b8849381bb21928930dc93e4a536a9c7a316c71d","src/backend/linux_raw/ugid/mod.rs":"2c6478857a0751625edabd61acb841819bfba1093b1faeded15693c805d84952","src/backend/linux_raw/ugid/syscalls.rs":"8c86d251db33b399a1d1cbb8e87afe650b78db84f444d3251309b7a0480b54f7","src/backend/linux_raw/vdso.rs":"056314f72c71d4b041739337ca2098afb7fe070f844327f462c293f43481b75b","src/backend/linux_raw/vdso_wrappers.rs":"3bec7ee7daacc93b26c15e829e3ecdea62f9fc62244841ec80ee47a55806a69e","src/bitcast.rs":"e21c87c292c781b27256c6f5dcf9fd52dd69ed6e21016cbd67ac31a8219ebf8e","src/check_types.rs":"e52f710e1cfc12ca13a495f2b43c227b293ff295e1ce3ab332935b28a7579872","src/clockid.rs":"e41172c87401ef7b8ad37ec09b5b690c55c51b37009414a2089b34dcac9d93a9","src/cstr.rs":"41af2a4429fe6c67a8883f8a8f63d66c90df566abda74fd2b03bcef7b9f24218","src/event/eventfd.rs":"81cbd08f7bdf40a6ce1ca692b63da1dc8ba925282990668d9d68f1203e839fa1","src/event/kqueue.rs":"222842df22e66f41d93dacd3cba933810d9313d5ca9959fddabedda9c4312bf2","src/event/mod.rs":"326a7ddfeb33bb95dd31391d65f400fa622e5d0ab827c096cab16af4b6843b51","src/event/poll.rs":"0ee583dbd457a573a82a06c04a2a24bd2c76e751d27a435507d55338e2871327","src/event/port.rs":"4e51ff150e5d17cbd44aa64a38b99c15e26eaaf2e350768b5dcacdfde4fa5212","src/ffi.rs":"c2b8b38c02d72749aceb715c496726caba1f1fa989ad3856d0103a2fafed89ed","src/fs/abs.rs":"10e1a148a5b05476efbb591dcc969c1a6caf3d2d9592741eef22341a97c8f4a3","src/fs/at.rs":"a12f382f7b544ae4bbb7a967de43178dad796e05fd6eb8136e1a34236b48f9dc","src/fs/constants.rs":"23923e0fce3221bdac371fe2d05028f30a87dba4f9b4a573b69dc2d6d39320b2","src/fs/copy_file_range.rs":"d3b644374390d482b2ff749a2459458872b57d0dcf9670368739b7833509a7c2","src/fs/cwd.rs":"9f429a79ace6e17455634da09216ee0ad3d067a4541518b3193ae6a8d9ff1e26","src/fs/dir.rs":"347a52f4ca9ac6321c52e802e97ec90d1b4c62ec955c8996fc17f8f5aed69966","src/fs/fadvise.rs":"1220e2cf5cf58fc7cc950d48738050a052c504f745ca67130daa6410e248230a","src/fs/fcntl.rs":"1d1ee1e0bc962779e1cc1b8b76f39c820746240557daa9e14b47b1799120dc39","src/fs/fcntl_apple.rs":"e2f23f038083621bcdecc98d02ce1023508afaecdb2ed0fba5c8b70f955301e5","src/fs/fcopyfile.rs":"ce565f61e1fbf2e31086077c2f1d01b6bb3b048915edda87fe9a4a4f5e8ff7e4","src/fs/fd.rs":"fe53f211e91352d522ac4f3b553a9366506458e2158295a93c5e746618f7a5fe","src/fs/getpath.rs":"28f6970fc1bbc37bb35c84724b59eac436ea7407a4522e18c2bdacb1fdd2edd9","src/fs/id.rs":"1b5c8a8baf9a9bb1f895f97189cea4e5982a0d35b192afeec6340a6c6222e0cb","src/fs/ioctl.rs":"e798eb41bbc201c375bc295ad2928c2467b45b4fbbff3c82236dccbc0d6391a5","src/fs/makedev.rs":"85520b484cb7c15ab71ea1c368578ea3b7e484d82f8510db92b6ce9f7ca341ae","src/fs/memfd_create.rs":"00df492a3afdfc65a07d6849422596bf6cd4608a653d5d25ba54d6640eacda11","src/fs/mod.rs":"2192ea7f6f81a18d892d3526df00c43d83669f1a1734957ba94cf8269980792e","src/fs/mount.rs":"8f6ea2b997dd83c50c90291b9ada3ed77a9ce1ad701c9b0d533b5113b317be5b","src/fs/openat2.rs":"4a95c15dab533a41201b5fa25c8a212956b7571d58cad696bdaf45af8aef96db","src/fs/raw_dir.rs":"18ad797876d6230c38d4cacbed081c4028e03ace477d0520d9b226b40de942f0","src/fs/seek_from.rs":"a9efa0feb9ac789cf47667e91efee2e3f2dcde16cb3b7a928c99da640fa0e0d6","src/fs/sendfile.rs":"e3b2058741cf4b1698f34d84bb37130cf2b72806d522a16fe541e832cde136cb","src/fs/statx.rs":"f925be3d9a179a903549b3ac18038d004f4f2021e46dad4aa2757907aebefeca","src/fs/sync.rs":"a3b23543834281f347b0f873bd38154d31d404871188ac08f2b20b9196234cfd","src/fs/xattr.rs":"5e222adb52caf69d949ab3f944fb2a482dd6ca3a47200532ca6e72d44cbe8334","src/io/close.rs":"0aa3cd05a8fed8e5244f97b8b6c2e7f65ed93a4e5435c6329852bb3da7514440","src/io/dup.rs":"bbebf4633120e21c7c49ecb93576cffa7e908f8089deb260f8d97426b469a0d4","src/io/errno.rs":"58a4d20ba0924e4d514e3c876fbe08982f1623187642ae14780815e65989c8c8","src/io/fcntl.rs":"5b7696e40757615940745ecc7f33d84678d24f55eba978a8efdd0805cba7b1c1","src/io/ioctl.rs":"3dffbda413fd380f1580e2e75c531a5f4a0487417ea1c235c23fe46b70e46bd9","src/io/is_read_write.rs":"1bfb9ee5d58e0b29b44af12fe2668c7bccc841358698dcde47f1519ff9bb73b4","src/io/mod.rs":"75f1d0646be1d4c7c08b5887d8119b0103be8c25c43ccd4e0e97015508c0bb8f","src/io/read_write.rs":"77b8058769dc0bf5a88d73acd7ce70af1a89c549b00b790e281dc20364bcb6af","src/io_uring.rs":"4e641c9aaeba14890e4a354ad8b1fda8fe617923b4d3d685da22721d66a14bdf","src/ioctl/bsd.rs":"e33772530b1b2d1e7d61ce53d9267e68d88f7f5df13301f90412d89a46c6faaa","src/ioctl/linux.rs":"96df90bbc926783f387e8fe1656841d4c7a857fd4e9f41f95492f7dcece33074","src/ioctl/mod.rs":"d2233ba2a81738828d28d4297f8dafaf254c475174de48bd0fe3891d29a71bfe","src/ioctl/patterns.rs":"af24c47597e619a8e0fd3ca071f21db1963a629b511d9279ef9d36a8030a6fe8","src/lib.rs":"ee2b60b7b29c9f4e0f474534a76961c2ce5c9f3640eea67fa395e633b64efa6e","src/maybe_polyfill/no_std/io/mod.rs":"77889bb5c5a4f2e50e38379cdaa5d0fef4b0cafc3da056735df01f6deae75747","src/maybe_polyfill/no_std/mod.rs":"ec94a4aab4bc475785e469d10fd6bc95667e1d47d958e9cff3a19049d88c8c80","src/maybe_polyfill/no_std/net/ip_addr.rs":"046327ee244f758f2bc31d3be305d8cd0dfd8342aac1add8259e999b4b46c4a7","src/maybe_polyfill/no_std/net/mod.rs":"486555be5c56cf3e049e65a1ea73aa60839c6f6ca667833e88ee4f360f9606dd","src/maybe_polyfill/no_std/net/socket_addr.rs":"bfeb32d32c176cde76323abcffebfc47e9898fb8d7ce3668c602dc8451086a2d","src/maybe_polyfill/no_std/os/fd/mod.rs":"27ef0afbcb0695cbb15101070f417eb51e0ef85ae66ec967d95e80771d507c47","src/maybe_polyfill/no_std/os/fd/owned.rs":"ab86ffa2693a04f3085770faf395f95e5303001711be8b19c44a47a0ac574091","src/maybe_polyfill/no_std/os/fd/raw.rs":"f3648c7bd4a6ff94bd823ed9e0d99d398e02f24875cf9b25962736999e7c6943","src/maybe_polyfill/no_std/os/mod.rs":"27dab639a765827644005d5f2fcc7c825310606b889cc8dd83f54c9528350dc0","src/maybe_polyfill/no_std/os/windows/io/mod.rs":"5bbcc05c83fee5026dd744a994e0458469466d5be39081baa62df07753b92fd2","src/maybe_polyfill/no_std/os/windows/io/raw.rs":"4c32609a489dd938a49328b5637cb3bafb96437f2f9f269ab66d7d3cb90247f6","src/maybe_polyfill/no_std/os/windows/io/socket.rs":"c658f42f24eff44a661f2adfd24a11af80fe9897f3e2af4dc5d2c64808308d65","src/maybe_polyfill/no_std/os/windows/mod.rs":"fdb416f8f231a4e778b5f985b9ae712ece5e1a1402963ad1a5f6a8b9843795f4","src/maybe_polyfill/std/mod.rs":"7c16c86cc73e226e65ead598e4018238b22000a345040b706bf1e1b3eba115fc","src/mm/madvise.rs":"69481cd3354dbffe6cd93b234448e59de6d0fe6440bcf8b12f951f37745bc1dc","src/mm/mmap.rs":"8cd1a8278e138d0805726474bb3016fdaa09a8074bbc8f20d1e842e7fc17efa3","src/mm/mod.rs":"b3a6cb838986d45825b912355cedead761211a494ca6f89b2367a2d2157e340e","src/mm/msync.rs":"a9092be024ecbfa9c14edb935404513498b0da2ac6c99fc31fe4e58196a95f02","src/mm/userfaultfd.rs":"8073443bd181ff0b3ba4d0b1ae67370b4864035a0c8b4898cd709dc47c518ae7","src/mount/fsopen.rs":"160e384e9175fd98669cda1cf3590bb195c2ba7e1c724e9ea06e692595e58ba1","src/mount/mod.rs":"5f0c9df4727592695deb1cd63ae1de021b03dcd9d0d1b68e1f34d12a7136cb19","src/mount/mount_unmount.rs":"8ad11675e5d762d33fbefbed06a6a9f9e52a9b689bd06662446152614321ab77","src/mount/types.rs":"601ae3e10b7dc496fed7f3b40a80e81c6edd7bf13189d7be45c3212d4c684c39","src/net/mod.rs":"a6bc55f9e086caf46a7c00783498d73a328a66f2a991f1ec65d5f13931377b0f","src/net/send_recv/mod.rs":"7b77a70c0ad2601b5da30e8b202e34c6bfc9e10df4ce2b1a35b111522ae123a3","src/net/send_recv/msg.rs":"f100a88648b9eba88272aca77d76351432636022a1d4b0e9485e002a3489d05a","src/net/socket.rs":"1296706d964d110be7cd46b61a0a06dabf382a2377907ba41badfe94807cb50f","src/net/socket_addr_any.rs":"a9af81e967a91b45e51aec4f46a068fade7035c5d19dfaf05bfdcd3b3c32e9bf","src/net/socketpair.rs":"56f4885c31d2664cd16e18a9a88792a4912fedd953cec36dba67e8581fd57921","src/net/sockopt.rs":"4f00ff76d3cd3fd2e915f51eba59827fb60885d6b0c6d37b32ca4306cb8fe836","src/net/types.rs":"35878a8ff12cd7252ed735cb640bad03e4e13c6016769c2d154c0fab08505248","src/net/wsa.rs":"6e546b42f50a851fc833c57cda76cfb347203ed4b0dea574a3d325bf5a2ebf80","src/param/auxv.rs":"8602af47a39bb340d319807bdecdb9be8b467101a9ed96061277b90234801913","src/param/init.rs":"a31c0e5cea61a1a999767fe74f87c0d59eeb6bce66578b842fe0e0c32be27a55","src/param/mod.rs":"25b10acd5b1da8faa6f5204e6b0379b38bfab667916e886cca64bea01a42dec2","src/path/arg.rs":"d87117157ec21f61a5e50b2779b4284fd13dd7db11b20a6bc9e475d0e4a25357","src/path/dec_int.rs":"8ff8e14442c46f8e7a9b80d73973619b4271549b9defd538479bf8c2d93aa72e","src/path/mod.rs":"6b1b949c94bcc47e0f08a3f8e8db5b61ff497d0dfd3e0655f51c01d3e4b7dfd6","src/pid.rs":"f1c486000c5b1311b2d720cee88f089c17ef9a171709673dd06e6f35f4ff98a3","src/pipe.rs":"cec0a831237ab2652556b149767d1b382e9739a1bb21ea401a35b36df7f7a3e7","src/prctl.rs":"19aa584895874ea48b9bbe1bf695b81257b0281df64dfdd91e1b4bfa298661b7","src/process/chdir.rs":"911216459aa429fe9f125f1357d6900b43b0007835b85c719875d00f79a74664","src/process/chroot.rs":"2b5f6124eb19f26ad2705174f7ad50cdc0a5d15abd59ffcf55421228d82130b4","src/process/exit.rs":"48de66e5504a00cb375d8f415ce63b6225a3f5204268d40726a7d0fbba43f587","src/process/id.rs":"e4733f9e8e4b5f50e98ef7a23802e126f1f14ece8b3d7ae7446c6a66affc6bc1","src/process/ioctl.rs":"23ad0285671e8d7ca71a63c50655dbf732ccea8af11d754a0558e0236db37e76","src/process/kill.rs":"96d5ce432c19cf2b600d5248c681c117abf53ae94bbfca7e75ac533a40e3968e","src/process/membarrier.rs":"1c4c39b359d1d0e9bbe16352eedfca9278d9ef298ade8ec00e998617bbcbfed8","src/process/mod.rs":"70e7fc79e4edf3ffd56c20643707cafdc595330db68e4ff8f75dcb3756ad5b1d","src/process/pidfd.rs":"39de2dc7919eeeb53a5980622616140327671cd7e36bcf597aee1749df3a5b5b","src/process/pidfd_getfd.rs":"1faace75bdbcda57a296806dcfa5487811f8d11dad9e6199c98df72feae66724","src/process/prctl.rs":"0130d05362a17a9282f3391189095e1f4f51fb56d7a5205906a0011842df4576","src/process/priority.rs":"f135482e71ea8aa0daf92b9f238051178a4c904070fa8409622f94155df3c544","src/process/procctl.rs":"430ec397782772d5a028903c2813d3e11f7e577af144b9effd9c42629ac8d3d2","src/process/rlimit.rs":"10b79de3ced0e64059a94c879742d46a35a6176c776d8eed75031d5e6340283d","src/process/sched.rs":"b49ef463f44b5e90a04e9a08569d0ae20eecb8667f38f31c786df1eb099db466","src/process/sched_yield.rs":"6565faa3928b66ddc74a65e893e15edfa4b9be4f7e5f5f68527501a7f6bc3350","src/process/umask.rs":"1a0f31a842303c978e3f05ec191e2b5e96104c09c6596473b42b1fac34898a50","src/process/wait.rs":"612920489b5618bf82a9a615947e0acbed6eb310acbb9bb70e934d457dd1dd49","src/procfs.rs":"63b286dd3302be7f426841eb3b9261ef4785c3159ed78c24734bd5094c9b0b2e","src/pty.rs":"652c412e7280d0344b3f9bfe376c106a7f1b42b898b7af344e6e72da268e2bf0","src/rand/getrandom.rs":"1c8166a02a74f5593bb4673ef907524df04cbc1568020a5ab2ff7f4aa1283f8b","src/rand/mod.rs":"cab59332aadd9b679f5b22cbb222d48ee028af5eb9fd4a4d43922da659b895d7","src/runtime.rs":"695e60b9cc22755ce0e653fd63a0c73024a14eb8f576c6071dad6806c32f5552","src/shm.rs":"b96fe8a05ee5d4536464a8843a776d43a938abaf22c772fc35b5373d95644a8d","src/signal.rs":"a294b49d487dafaa42e534f8b1d93e87bec135087676b2ba2ef865cf2fccdaf2","src/static_assertions.rs":"504cf66f0d5b8e335be02f9ae8b0a355abc98c2c82eec0098bdf0988e662e260","src/stdio.rs":"a5de2d7d9c3c5a901f88b6acf4754687c958a2f3a93c7945c2b8fcb948d468af","src/system.rs":"4d7d1eff18094ec85a8ead70a7ccbe8ef78fd7f5705b7dfe3fa52541e9494887","src/termios/ioctl.rs":"a1ac967f7811a482f8bb53847c37c8359f518cd26da9df7b816ba678a0139623","src/termios/mod.rs":"b44b7caa60b6f458657ed58a0e0eca41bb4e6d6be4b0f042bbb8ab7056cebe4b","src/termios/tc.rs":"e41312d15464b83b2457c2502fc3f3b9998cfb02ba68739026dd4285cc7130ac","src/termios/tty.rs":"35a5fc2d26501e0e6dde1a755eeccf7b4f3b4702c5bac30e0953220808ef7034","src/termios/types.rs":"38167a38fb83e84f2845f86b373ecaaa3ebf6c2f91dccd07c10539201d6f5070","src/thread/clock.rs":"f49eb7271eb3e6831d9b0c3a01bfddbe4bd69dee237bbaa059884de452b29e79","src/thread/futex.rs":"985f9a0dce1e2a4892ae7f26bd1bf119ceae3f9fa6b4707e166624fc1cee76d4","src/thread/id.rs":"ad72db4fea9fccb728310bbfd01ef8c00f6cc60fa2a750f6349646a134f7009b","src/thread/libcap.rs":"4c51b7df566d38dd0f85f81ef53279a745a39f0f4e1154791fd38438e2ca7db1","src/thread/mod.rs":"98634ece0b882f123ad887017692f2a4d94a23a1dec278ed660b3497cac5cceb","src/thread/prctl.rs":"6caec7eb4fe122e80ba1ecafc56b710c79ab8b3c97529d5beba74d87af356875","src/thread/setns.rs":"ea9142b1f3a5b3f329683be185f960c50e5c1636149e91fbf59e88a897fc607d","src/time/clock.rs":"e59a29f1bed8c31c3d5b6fad60f2d4fa6cab8dd8e86148bb3693a5e3a1ce735f","src/time/mod.rs":"43afee938c80d124d04d4ba190c03f4d21d1e3bfc154fff309211e4f6eabe940","src/time/timerfd.rs":"f17092b84553741aa2d2b44c6992b5d2c8c96cc2c2007fc9a2c6b2064485e53f","src/timespec.rs":"32a4d930cbc0f6dbd23153290db920671cf4ce65a4a127e176f897c1cde42d7d","src/ugid.rs":"6616c6e35b7e43aee5b150f1efae7a50711e0947943c9a96833dbe214ad9e85f","src/utils.rs":"9ae76f8a41d6cc350cdd58c9084b5c3a5a708eeecd769783debdbcbaef442182","src/weak.rs":"c7cf03bf2aeba494b1999ab32183fa8c603ab72e254c0e312a67f168877e410d"},"package":"2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3"} \ No newline at end of file
diff --git a/vendor/rustix/CONTRIBUTING.md b/vendor/rustix/CONTRIBUTING.md
index c3c48521d..fca1cf15a 100644
--- a/vendor/rustix/CONTRIBUTING.md
+++ b/vendor/rustix/CONTRIBUTING.md
@@ -9,7 +9,7 @@ To keep compile times low, most features in rustix's API are behind cargo
features. A special feature, `all-apis` enables all APIs, which is useful
for testing.
-```
+```console
cargo test --features=all-apis
```
@@ -17,7 +17,7 @@ And, rustix has two backends, linux_raw and libc, and only one is used in
any given build. To test with the libc backend explicitly, additionally
enable the `use-libc` feature:
-```
+```console
cargo test --features=all-apis,use-libc
```
diff --git a/vendor/rustix/Cargo.toml b/vendor/rustix/Cargo.toml
index 728c75d8c..78cdf495f 100644
--- a/vendor/rustix/Cargo.toml
+++ b/vendor/rustix/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.63"
name = "rustix"
-version = "0.38.14"
+version = "0.38.21"
authors = [
"Dan Gohman <dev@sunfishcode.online>",
"Jakub Konka <kubkon@jakubkonka.com>",
@@ -133,8 +133,9 @@ all-apis = [
"pty",
"rand",
"runtime",
- "system",
+ "shm",
"stdio",
+ "system",
"termios",
"thread",
"time",
@@ -148,6 +149,7 @@ default = [
event = []
fs = []
io_uring = [
+ "event",
"fs",
"net",
"linux-raw-sys/io_uring",
@@ -183,6 +185,7 @@ rustc-dep-of-std = [
"bitflags/rustc-dep-of-std",
"compiler_builtins?/rustc-dep-of-std",
]
+shm = ["fs"]
std = [
"bitflags/std",
"alloc",
@@ -202,7 +205,7 @@ use-libc = [
use-libc-auxv = []
[target."cfg(all(any(target_os = \"android\", target_os = \"linux\"), any(rustix_use_libc, miri, not(all(target_os = \"linux\", target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\")))))))".dependencies.linux-raw-sys]
-version = "0.4.3"
+version = "0.4.8"
features = [
"general",
"ioctl",
@@ -226,7 +229,7 @@ default-features = false
package = "errno"
[target."cfg(all(not(rustix_use_libc), not(miri), target_os = \"linux\", target_endian = \"little\", any(target_arch = \"arm\", all(target_arch = \"aarch64\", target_pointer_width = \"64\"), target_arch = \"riscv64\", all(rustix_use_experimental_asm, target_arch = \"powerpc64\"), all(rustix_use_experimental_asm, target_arch = \"mips\"), all(rustix_use_experimental_asm, target_arch = \"mips32r6\"), all(rustix_use_experimental_asm, target_arch = \"mips64\"), all(rustix_use_experimental_asm, target_arch = \"mips64r6\"), target_arch = \"x86\", all(target_arch = \"x86_64\", target_pointer_width = \"64\"))))".dependencies.linux-raw-sys]
-version = "0.4.7"
+version = "0.4.8"
features = [
"general",
"errno",
diff --git a/vendor/rustix/README.md b/vendor/rustix/README.md
index 96def6e1f..8ec1a5e14 100644
--- a/vendor/rustix/README.md
+++ b/vendor/rustix/README.md
@@ -55,27 +55,28 @@ building.
The modules [`rustix::io`], [`rustix::fd`], and [`rustix::ffi`] are enabled
by default. The rest of the API is conditional with cargo feature flags:
-| Name | Description
-| ---------- | ---------------------
-| `event` | [`rustix::event`]—Polling and event operations.
-| `fs` | [`rustix::fs`]—Filesystem operations.
-| `io_uring` | [`rustix::io_uring`]—Linux io_uring.
-| `mm` | [`rustix::mm`]—Memory map operations.
-| `mount` | [`rustix::mount`]—Linux mount API.
-| `net` | [`rustix::net`]—Network-related operations.
-| `param` | [`rustix::param`]—Process parameters.
-| `pipe` | [`rustix::pipe`]—Pipe operations.
-| `process` | [`rustix::process`]—Process-associated operations.
-| `procfs` | [`rustix::procfs`]—Utilities for reading `/proc` on Linux.
-| `pty` | [`rustix::pty`]—Pseudoterminal operations.
-| `rand` | [`rustix::rand`]—Random-related operations.
-| `stdio` | [`rustix::stdio`]—Stdio-related operations.
-| `system` | [`rustix::system`]—System-related operations.
-| `termios` | [`rustix::termios`]—Terminal I/O stream operations.
-| `thread` | [`rustix::thread`]—Thread-associated operations.
-| `time` | [`rustix::time`]—Time-related operations.
-| |
-| `use-libc` | Enable the libc backend.
+| Name | Description |
+| ---------- | -------------------------------------------------------------- |
+| `event` | [`rustix::event`]—Polling and event operations. |
+| `fs` | [`rustix::fs`]—Filesystem operations. |
+| `io_uring` | [`rustix::io_uring`]—Linux io_uring. |
+| `mm` | [`rustix::mm`]—Memory map operations. |
+| `mount` | [`rustix::mount`]—Linux mount API. |
+| `net` | [`rustix::net`]—Network-related operations. |
+| `param` | [`rustix::param`]—Process parameters. |
+| `pipe` | [`rustix::pipe`]—Pipe operations. |
+| `process` | [`rustix::process`]—Process-associated operations. |
+| `procfs` | [`rustix::procfs`]—Utilities for reading `/proc` on Linux. |
+| `pty` | [`rustix::pty`]—Pseudoterminal operations. |
+| `rand` | [`rustix::rand`]—Random-related operations. |
+| `shm` | [`rustix::shm`]—POSIX shared memory. |
+| `stdio` | [`rustix::stdio`]—Stdio-related operations. |
+| `system` | [`rustix::system`]—System-related operations. |
+| `termios` | [`rustix::termios`]—Terminal I/O stream operations. |
+| `thread` | [`rustix::thread`]—Thread-associated operations. |
+| `time` | [`rustix::time`]—Time-related operations. |
+| | |
+| `use-libc` | Enable the libc backend. |
[`rustix::event`]: https://docs.rs/rustix/*/rustix/event/index.html
[`rustix::fs`]: https://docs.rs/rustix/*/rustix/fs/index.html
@@ -89,6 +90,7 @@ by default. The rest of the API is conditional with cargo feature flags:
[`rustix::procfs`]: https://docs.rs/rustix/*/rustix/procfs/index.html
[`rustix::pty`]: https://docs.rs/rustix/*/rustix/pty/index.html
[`rustix::rand`]: https://docs.rs/rustix/*/rustix/rand/index.html
+[`rustix::shm`]: https://docs.rs/rustix/*/rustix/shm/index.html
[`rustix::stdio`]: https://docs.rs/rustix/*/rustix/stdio/index.html
[`rustix::system`]: https://docs.rs/rustix/*/rustix/system/index.html
[`rustix::termios`]: https://docs.rs/rustix/*/rustix/termios/index.html
diff --git a/vendor/rustix/build.rs b/vendor/rustix/build.rs
index 28891caea..d95f9a906 100644
--- a/vendor/rustix/build.rs
+++ b/vendor/rustix/build.rs
@@ -94,8 +94,7 @@ fn main() {
|| !inline_asm_name_present
|| is_unsupported_abi
|| miri
- || ((arch == "powerpc64" || arch == "mips" || arch == "mips64" || arch == "mips64r6")
- && !rustix_use_experimental_asm);
+ || ((arch == "powerpc64" || arch.starts_with("mips")) && !rustix_use_experimental_asm);
if libc {
// Use the libc backend.
use_feature("libc");
diff --git a/vendor/rustix/src/backend/libc/c.rs b/vendor/rustix/src/backend/libc/c.rs
index eb89fa43a..f788cb120 100644
--- a/vendor/rustix/src/backend/libc/c.rs
+++ b/vendor/rustix/src/backend/libc/c.rs
@@ -86,6 +86,11 @@ pub(crate) const XCASE: tcflag_t = linux_raw_sys::general::XCASE as _;
#[cfg(target_os = "aix")]
pub(crate) const MSG_DONTWAIT: c_int = libc::MSG_NONBLOCK;
+// TODO: Remove once https://github.com/rust-lang/libc/pull/3377 is merged and released.
+#[cfg(target_os = "netbsd")]
+#[cfg(feature = "net")]
+pub(crate) const SO_NOSIGPIPE: c_int = 0x0800;
+
// On PowerPC, the regular `termios` has the `termios2` fields and there is no
// `termios2`. linux-raw-sys has aliases `termios2` to `termios` to cover this
// difference, but we still need to manually import it since `libc` doesn't
@@ -109,7 +114,12 @@ pub(super) use libc::fallocate64 as fallocate;
#[cfg(not(any(target_arch = "aarch64", target_arch = "riscv64")))]
#[cfg(any(linux_like, target_os = "aix"))]
pub(super) use libc::open64 as open;
-#[cfg(any(linux_kernel, target_os = "aix", target_os = "l4re"))]
+#[cfg(any(
+ linux_kernel,
+ target_os = "aix",
+ target_os = "hurd",
+ target_os = "l4re"
+))]
pub(super) use libc::posix_fallocate64 as posix_fallocate;
#[cfg(any(all(linux_like, not(target_os = "android")), target_os = "aix"))]
pub(super) use libc::{blkcnt64_t as blkcnt_t, rlim64_t as rlim_t};
@@ -123,7 +133,7 @@ pub(super) use libc::{
rlimit64 as rlimit, setrlimit64 as setrlimit, statfs64 as statfs, statvfs64 as statvfs,
RLIM_INFINITY,
};
-#[cfg(linux_like)]
+#[cfg(any(linux_like, target_os = "hurd"))]
pub(super) use libc::{
fstat64 as fstat, fstatat64 as fstatat, fstatfs64 as fstatfs, fstatvfs64 as fstatvfs,
ftruncate64 as ftruncate, getrlimit64 as getrlimit, ino64_t as ino_t, lseek64 as lseek,
@@ -144,11 +154,16 @@ pub(super) use libc::{
target_arch = "mips64r6"
)
)))]
-#[cfg(any(linux_like, target_os = "aix"))]
+#[cfg(any(linux_like, target_os = "aix", target_os = "hurd"))]
pub(super) use libc::{lstat64 as lstat, stat64 as stat};
-#[cfg(any(linux_kernel, target_os = "aix", target_os = "emscripten"))]
+#[cfg(any(
+ linux_kernel,
+ target_os = "aix",
+ target_os = "hurd",
+ target_os = "emscripten"
+))]
pub(super) use libc::{pread64 as pread, pwrite64 as pwrite};
-#[cfg(any(target_os = "linux", target_os = "emscripten"))]
+#[cfg(any(target_os = "linux", target_os = "hurd", target_os = "emscripten"))]
pub(super) use libc::{preadv64 as preadv, pwritev64 as pwritev};
#[cfg(all(target_os = "linux", target_env = "gnu"))]
@@ -209,25 +224,6 @@ pub(super) unsafe fn prlimit(
prlimit64(pid, resource, new_limit, old_limit)
}
-// 64-bit offsets on 32-bit platforms are passed in endianness-specific
-// lo/hi pairs. See src/backend/linux_raw/conv.rs for details.
-#[cfg(all(linux_kernel, target_endian = "little", target_pointer_width = "32"))]
-fn lo(x: i64) -> usize {
- (x >> 32) as usize
-}
-#[cfg(all(linux_kernel, target_endian = "little", target_pointer_width = "32"))]
-fn hi(x: i64) -> usize {
- x as usize
-}
-#[cfg(all(linux_kernel, target_endian = "big", target_pointer_width = "32"))]
-fn lo(x: i64) -> usize {
- x as usize
-}
-#[cfg(all(linux_kernel, target_endian = "big", target_pointer_width = "32"))]
-fn hi(x: i64) -> usize {
- (x >> 32) as usize
-}
-
#[cfg(target_os = "android")]
mod readwrite_pv64 {
use super::*;
@@ -248,31 +244,18 @@ mod readwrite_pv64 {
if let Some(fun) = preadv64.get() {
fun(fd, iov, iovcnt, offset)
} else {
- #[cfg(target_pointer_width = "32")]
- {
- syscall! {
- fn preadv(
- fd: libc::c_int,
- iov: *const libc::iovec,
- iovcnt: libc::c_int,
- offset_hi: usize,
- offset_lo: usize
- ) via SYS_preadv -> libc::ssize_t
- }
- preadv(fd, iov, iovcnt, hi(offset), lo(offset))
- }
- #[cfg(target_pointer_width = "64")]
- {
- syscall! {
- fn preadv(
- fd: libc::c_int,
- iov: *const libc::iovec,
- iovcnt: libc::c_int,
- offset: libc::off_t
- ) via SYS_preadv -> libc::ssize_t
- }
- preadv(fd, iov, iovcnt, offset)
+ // Unlike the plain "p" functions, the "pv" functions pass their
+ // offset in an endian-independent way, and always in two registers.
+ syscall! {
+ fn preadv(
+ fd: libc::c_int,
+ iov: *const libc::iovec,
+ iovcnt: libc::c_int,
+ offset_lo: usize,
+ offset_hi: usize
+ ) via SYS_preadv -> libc::ssize_t
}
+ preadv(fd, iov, iovcnt, offset as usize, (offset >> 32) as usize)
}
}
pub(in super::super) unsafe fn pwritev64(
@@ -288,38 +271,25 @@ mod readwrite_pv64 {
if let Some(fun) = pwritev64.get() {
fun(fd, iov, iovcnt, offset)
} else {
- #[cfg(target_pointer_width = "32")]
- {
- syscall! {
- fn pwritev(
- fd: libc::c_int,
- iov: *const libc::iovec,
- iovcnt: libc::c_int,
- offset_hi: usize,
- offset_lo: usize
- ) via SYS_pwritev -> libc::ssize_t
- }
- pwritev(fd, iov, iovcnt, hi(offset), lo(offset))
- }
- #[cfg(target_pointer_width = "64")]
- {
- syscall! {
- fn pwritev(
- fd: libc::c_int,
- iov: *const libc::iovec,
- iovcnt: libc::c_int,
- offset: libc::off_t
- ) via SYS_pwritev -> libc::ssize_t
- }
- pwritev(fd, iov, iovcnt, offset)
+ // Unlike the plain "p" functions, the "pv" functions pass their
+ // offset in an endian-independent way, and always in two registers.
+ syscall! {
+ fn pwritev(
+ fd: libc::c_int,
+ iov: *const libc::iovec,
+ iovcnt: libc::c_int,
+ offset_lo: usize,
+ offset_hi: usize
+ ) via SYS_pwritev -> libc::ssize_t
}
+ pwritev(fd, iov, iovcnt, offset as usize, (offset >> 32) as usize)
}
}
}
#[cfg(target_os = "android")]
pub(super) use readwrite_pv64::{preadv64 as preadv, pwritev64 as pwritev};
-// macOS added preadv and pwritev in version 11.0
+// macOS added `preadv` and `pwritev` in version 11.0.
#[cfg(apple)]
mod readwrite_pv {
weakcall! {
@@ -363,33 +333,26 @@ mod readwrite_pv64v2 {
if let Some(fun) = preadv64v2.get() {
fun(fd, iov, iovcnt, offset, flags)
} else {
- #[cfg(target_pointer_width = "32")]
- {
- syscall! {
- fn preadv2(
- fd: libc::c_int,
- iov: *const libc::iovec,
- iovcnt: libc::c_int,
- offset_hi: usize,
- offset_lo: usize,
- flags: libc::c_int
- ) via SYS_preadv2 -> libc::ssize_t
- }
- preadv2(fd, iov, iovcnt, hi(offset), lo(offset), flags)
- }
- #[cfg(target_pointer_width = "64")]
- {
- syscall! {
- fn preadv2(
- fd: libc::c_int,
- iov: *const libc::iovec,
- iovcnt: libc::c_int,
- offset: libc::off_t,
- flags: libc::c_int
- ) via SYS_preadv2 -> libc::ssize_t
- }
- preadv2(fd, iov, iovcnt, offset, flags)
+ // Unlike the plain "p" functions, the "pv" functions pass their
+ // offset in an endian-independent way, and always in two registers.
+ syscall! {
+ fn preadv2(
+ fd: libc::c_int,
+ iov: *const libc::iovec,
+ iovcnt: libc::c_int,
+ offset_lo: usize,
+ offset_hi: usize,
+ flags: libc::c_int
+ ) via SYS_preadv2 -> libc::ssize_t
}
+ preadv2(
+ fd,
+ iov,
+ iovcnt,
+ offset as usize,
+ (offset >> 32) as usize,
+ flags,
+ )
}
}
pub(in super::super) unsafe fn pwritev64v2(
@@ -406,33 +369,26 @@ mod readwrite_pv64v2 {
if let Some(fun) = pwritev64v2.get() {
fun(fd, iov, iovcnt, offset, flags)
} else {
- #[cfg(target_pointer_width = "32")]
- {
- syscall! {
- fn pwritev2(
- fd: libc::c_int,
- iov: *const libc::iovec,
- iovec: libc::c_int,
- offset_hi: usize,
- offset_lo: usize,
- flags: libc::c_int
- ) via SYS_pwritev2 -> libc::ssize_t
- }
- pwritev2(fd, iov, iovcnt, hi(offset), lo(offset), flags)
- }
- #[cfg(target_pointer_width = "64")]
- {
- syscall! {
- fn pwritev2(
- fd: libc::c_int,
- iov:*const libc::iovec,
- iovcnt: libc::c_int,
- offset: libc::off_t,
- flags: libc::c_int
- ) via SYS_pwritev2 -> libc::ssize_t
- }
- pwritev2(fd, iov, iovcnt, offset, flags)
+ // Unlike the plain "p" functions, the "pv" functions pass their
+ // offset in an endian-independent way, and always in two registers.
+ syscall! {
+ fn pwritev2(
+ fd: libc::c_int,
+ iov: *const libc::iovec,
+ iovec: libc::c_int,
+ offset_lo: usize,
+ offset_hi: usize,
+ flags: libc::c_int
+ ) via SYS_pwritev2 -> libc::ssize_t
}
+ pwritev2(
+ fd,
+ iov,
+ iovcnt,
+ offset as usize,
+ (offset >> 32) as usize,
+ flags,
+ )
}
}
}
@@ -455,33 +411,26 @@ mod readwrite_pv64v2 {
offset: libc::off64_t,
flags: libc::c_int,
) -> libc::ssize_t {
- #[cfg(target_pointer_width = "32")]
- {
- syscall! {
- fn preadv2(
- fd: libc::c_int,
- iov: *const libc::iovec,
- iovcnt: libc::c_int,
- offset_hi: usize,
- offset_lo: usize,
- flags: libc::c_int
- ) via SYS_preadv2 -> libc::ssize_t
- }
- preadv2(fd, iov, iovcnt, hi(offset), lo(offset), flags)
- }
- #[cfg(target_pointer_width = "64")]
- {
- syscall! {
- fn preadv2(
- fd: libc::c_int,
- iov: *const libc::iovec,
- iovcnt: libc::c_int,
- offset: libc::off_t,
- flags: libc::c_int
- ) via SYS_preadv2 -> libc::ssize_t
- }
- preadv2(fd, iov, iovcnt, offset, flags)
+ // Unlike the plain "p" functions, the "pv" functions pass their offset
+ // in an endian-independent way, and always in two registers.
+ syscall! {
+ fn preadv2(
+ fd: libc::c_int,
+ iov: *const libc::iovec,
+ iovcnt: libc::c_int,
+ offset_lo: usize,
+ offset_hi: usize,
+ flags: libc::c_int
+ ) via SYS_preadv2 -> libc::ssize_t
}
+ preadv2(
+ fd,
+ iov,
+ iovcnt,
+ offset as usize,
+ (offset >> 32) as usize,
+ flags,
+ )
}
pub(in super::super) unsafe fn pwritev64v2(
fd: libc::c_int,
@@ -490,33 +439,26 @@ mod readwrite_pv64v2 {
offset: libc::off64_t,
flags: libc::c_int,
) -> libc::ssize_t {
- #[cfg(target_pointer_width = "32")]
- {
- syscall! {
- fn pwritev2(
- fd: libc::c_int,
- iov: *const libc::iovec,
- iovcnt: libc::c_int,
- offset_hi: usize,
- offset_lo: usize,
- flags: libc::c_int
- ) via SYS_pwritev2 -> libc::ssize_t
- }
- pwritev2(fd, iov, iovcnt, hi(offset), lo(offset), flags)
- }
- #[cfg(target_pointer_width = "64")]
- {
- syscall! {
- fn pwritev2(
- fd: libc::c_int,
- iov:*const libc::iovec,
- iovcnt: libc::c_int,
- offset: libc::off_t,
- flags: libc::c_int
- ) via SYS_pwritev2 -> libc::ssize_t
- }
- pwritev2(fd, iov, iovcnt, offset, flags)
+ // Unlike the plain "p" functions, the "pv" functions pass their offset
+ // in an endian-independent way, and always in two registers.
+ syscall! {
+ fn pwritev2(
+ fd: libc::c_int,
+ iov: *const libc::iovec,
+ iovcnt: libc::c_int,
+ offset_lo: usize,
+ offset_hi: usize,
+ flags: libc::c_int
+ ) via SYS_pwritev2 -> libc::ssize_t
}
+ pwritev2(
+ fd,
+ iov,
+ iovcnt,
+ offset as usize,
+ (offset >> 32) as usize,
+ flags,
+ )
}
}
#[cfg(any(
diff --git a/vendor/rustix/src/backend/libc/conv.rs b/vendor/rustix/src/backend/libc/conv.rs
index 19bf0a7db..253951002 100644
--- a/vendor/rustix/src/backend/libc/conv.rs
+++ b/vendor/rustix/src/backend/libc/conv.rs
@@ -16,7 +16,7 @@ pub(super) fn c_str(c: &CStr) -> *const c::c_char {
c.as_ptr()
}
-#[cfg(not(any(windows, target_os = "espidf", target_os = "wasi")))]
+#[cfg(not(any(windows, target_os = "espidf", target_os = "vita", target_os = "wasi")))]
#[inline]
pub(super) fn no_fd() -> LibcFd {
-1
@@ -192,7 +192,13 @@ pub(super) fn msg_iov_len(len: usize) -> c::size_t {
/// Convert the value to the `msg_iovlen` field of a `msghdr` struct.
#[cfg(all(
- not(any(windows, target_os = "espidf", target_os = "redox", target_os = "wasi")),
+ not(any(
+ windows,
+ target_os = "espidf",
+ target_os = "redox",
+ target_os = "vita",
+ target_os = "wasi"
+ )),
not(any(
target_os = "android",
all(target_os = "linux", not(target_env = "musl"))
@@ -232,6 +238,7 @@ pub(crate) fn msg_control_len(len: usize) -> c::socklen_t {
target_os = "haiku",
target_os = "nto",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi",
)))]
#[inline]
diff --git a/vendor/rustix/src/backend/libc/event/epoll.rs b/vendor/rustix/src/backend/libc/event/epoll.rs
index a6087a167..b41b05711 100644
--- a/vendor/rustix/src/backend/libc/event/epoll.rs
+++ b/vendor/rustix/src/backend/libc/event/epoll.rs
@@ -1,8 +1,4 @@
-//! epoll support.
-//!
-//! This is an experiment, and it isn't yet clear whether epoll is the right
-//! level of abstraction at which to introduce safety. But it works fairly well
-//! in simple examples 🙂.
+//! Linux `epoll` support.
//!
//! # Examples
//!
@@ -74,10 +70,13 @@
//! ```
use crate::backend::c;
-use crate::backend::conv::{ret, ret_owned_fd, ret_u32};
+#[cfg(feature = "alloc")]
+use crate::backend::conv::ret_u32;
+use crate::backend::conv::{ret, ret_owned_fd};
use crate::fd::{AsFd, AsRawFd, OwnedFd};
use crate::io;
use crate::utils::as_mut_ptr;
+#[cfg(feature = "alloc")]
use alloc::vec::Vec;
use bitflags::bitflags;
use core::ffi::c_void;
@@ -93,7 +92,7 @@ bitflags! {
/// `EPOLL_CLOEXEC`
const CLOEXEC = bitcast!(c::EPOLL_CLOEXEC);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -149,7 +148,7 @@ bitflags! {
#[cfg(not(target_os = "android"))]
const EXCLUSIVE = bitcast!(c::EPOLLEXCLUSIVE);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -257,6 +256,8 @@ pub fn delete(epoll: impl AsFd, source: impl AsFd) -> io::Result<()> {
///
/// For each event of interest, an element is written to `events`. On
/// success, this returns the number of written elements.
+#[cfg(feature = "alloc")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "alloc")))]
pub fn wait(epoll: impl AsFd, event_list: &mut EventVec, timeout: c::c_int) -> io::Result<()> {
// SAFETY: We're calling `epoll_wait` via FFI and we know how it
// behaves.
@@ -312,8 +313,8 @@ pub struct Event {
pub data: EventData,
}
-/// Data assocated with an [`Event`]. This can either be a 64-bit integer value
-/// or a pointer which preserves pointer provenance.
+/// Data associated with an [`Event`]. This can either be a 64-bit integer
+/// value or a pointer which preserves pointer provenance.
#[repr(C)]
#[derive(Copy, Clone)]
pub union EventData {
@@ -395,10 +396,12 @@ struct SixtyFourBitPointer {
}
/// A vector of `Event`s, plus context for interpreting them.
+#[cfg(feature = "alloc")]
pub struct EventVec {
events: Vec<Event>,
}
+#[cfg(feature = "alloc")]
impl EventVec {
/// Constructs an `EventVec` from raw pointer, length, and capacity.
///
@@ -473,6 +476,7 @@ impl EventVec {
}
}
+#[cfg(feature = "alloc")]
impl<'a> IntoIterator for &'a EventVec {
type IntoIter = Iter<'a>;
type Item = Event;
diff --git a/vendor/rustix/src/backend/libc/event/mod.rs b/vendor/rustix/src/backend/libc/event/mod.rs
index 44e8a090a..6aed4612a 100644
--- a/vendor/rustix/src/backend/libc/event/mod.rs
+++ b/vendor/rustix/src/backend/libc/event/mod.rs
@@ -5,5 +5,5 @@ pub(crate) mod types;
#[cfg_attr(windows, path = "windows_syscalls.rs")]
pub(crate) mod syscalls;
-#[cfg(all(feature = "alloc", linux_kernel))]
+#[cfg(linux_kernel)]
pub mod epoll;
diff --git a/vendor/rustix/src/backend/libc/event/poll_fd.rs b/vendor/rustix/src/backend/libc/event/poll_fd.rs
index 3f795d5aa..42f94f3c7 100644
--- a/vendor/rustix/src/backend/libc/event/poll_fd.rs
+++ b/vendor/rustix/src/backend/libc/event/poll_fd.rs
@@ -48,7 +48,7 @@ bitflags! {
)]
const RDHUP = c::POLLRDHUP;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/backend/libc/event/types.rs b/vendor/rustix/src/backend/libc/event/types.rs
index af052a434..ea4776667 100644
--- a/vendor/rustix/src/backend/libc/event/types.rs
+++ b/vendor/rustix/src/backend/libc/event/types.rs
@@ -31,7 +31,7 @@ bitflags! {
#[cfg(not(target_os = "espidf"))]
const SEMAPHORE = bitcast!(c::EFD_SEMAPHORE);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/backend/libc/fs/dir.rs b/vendor/rustix/src/backend/libc/fs/dir.rs
index 6cfeb242b..0df1ea1b5 100644
--- a/vendor/rustix/src/backend/libc/fs/dir.rs
+++ b/vendor/rustix/src/backend/libc/fs/dir.rs
@@ -1,37 +1,51 @@
-#[cfg(not(any(solarish, target_os = "haiku", target_os = "nto")))]
+#[cfg(not(any(solarish, target_os = "haiku", target_os = "nto", target_os = "vita")))]
use super::types::FileType;
use crate::backend::c;
use crate::backend::conv::owned_fd;
use crate::fd::{AsFd, BorrowedFd};
use crate::ffi::{CStr, CString};
-use crate::fs::{fcntl_getfl, fstat, openat, Mode, OFlags, Stat};
+use crate::fs::{fcntl_getfl, openat, Mode, OFlags};
+#[cfg(not(target_os = "vita"))]
+use crate::fs::{fstat, Stat};
#[cfg(not(any(
solarish,
target_os = "haiku",
target_os = "netbsd",
target_os = "nto",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi",
)))]
use crate::fs::{fstatfs, StatFs};
-#[cfg(not(any(solarish, target_os = "haiku", target_os = "redox", target_os = "wasi")))]
+#[cfg(not(any(
+ solarish,
+ target_os = "haiku",
+ target_os = "redox",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
use crate::fs::{fstatvfs, StatVfs};
use crate::io;
-#[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))]
+#[cfg(not(any(target_os = "fuchsia", target_os = "vita", target_os = "wasi")))]
#[cfg(feature = "process")]
use crate::process::fchdir;
use alloc::borrow::ToOwned;
-#[cfg(not(linux_like))]
+#[cfg(not(any(linux_like, target_os = "hurd")))]
use c::readdir as libc_readdir;
-#[cfg(linux_like)]
+#[cfg(any(linux_like, target_os = "hurd"))]
use c::readdir64 as libc_readdir;
use core::fmt;
use core::ptr::NonNull;
use libc_errno::{errno, set_errno, Errno};
/// `DIR*`
-#[repr(transparent)]
-pub struct Dir(NonNull<c::DIR>);
+pub struct Dir {
+ /// The `libc` `DIR` pointer.
+ libc_dir: NonNull<c::DIR>,
+
+ /// Have we seen any errors in this iteration?
+ any_errors: bool,
+}
impl Dir {
/// Construct a `Dir` that reads entries from the given directory
@@ -42,21 +56,38 @@ impl Dir {
}
#[inline]
+ #[allow(unused_mut)]
fn _read_from(fd: BorrowedFd<'_>) -> io::Result<Self> {
+ let mut any_errors = false;
+
// Given an arbitrary `OwnedFd`, it's impossible to know whether the
// user holds a `dup`'d copy which could continue to modify the
// file description state, which would cause Undefined Behavior after
// our call to `fdopendir`. To prevent this, we obtain an independent
// `OwnedFd`.
let flags = fcntl_getfl(fd)?;
- let fd_for_dir = openat(fd, cstr!("."), flags | OFlags::CLOEXEC, Mode::empty())?;
+ let fd_for_dir = match openat(fd, cstr!("."), flags | OFlags::CLOEXEC, Mode::empty()) {
+ Ok(fd) => fd,
+ #[cfg(not(target_os = "wasi"))]
+ Err(io::Errno::NOENT) => {
+ // If "." doesn't exist, it means the directory was removed.
+ // We treat that as iterating through a directory with no
+ // entries.
+ any_errors = true;
+ crate::io::dup(fd)?
+ }
+ Err(err) => return Err(err),
+ };
let raw = owned_fd(fd_for_dir);
unsafe {
let libc_dir = c::fdopendir(raw);
if let Some(libc_dir) = NonNull::new(libc_dir) {
- Ok(Self(libc_dir))
+ Ok(Self {
+ libc_dir,
+ any_errors,
+ })
} else {
let err = io::Errno::last_os_error();
let _ = c::close(raw);
@@ -68,13 +99,19 @@ impl Dir {
/// `rewinddir(self)`
#[inline]
pub fn rewind(&mut self) {
- unsafe { c::rewinddir(self.0.as_ptr()) }
+ self.any_errors = false;
+ unsafe { c::rewinddir(self.libc_dir.as_ptr()) }
}
/// `readdir(self)`, where `None` means the end of the directory.
pub fn read(&mut self) -> Option<io::Result<DirEntry>> {
+ // If we've seen errors, don't continue to try to read anyting further.
+ if self.any_errors {
+ return None;
+ }
+
set_errno(Errno(0));
- let dirent_ptr = unsafe { libc_readdir(self.0.as_ptr()) };
+ let dirent_ptr = unsafe { libc_readdir(self.libc_dir.as_ptr()) };
if dirent_ptr.is_null() {
let curr_errno = errno().0;
if curr_errno == 0 {
@@ -82,6 +119,7 @@ impl Dir {
None
} else {
// `errno` is unknown or non-zero, so an error occurred.
+ self.any_errors = true;
Some(Err(io::Errno(curr_errno)))
}
} else {
@@ -99,11 +137,12 @@ impl Dir {
solarish,
target_os = "aix",
target_os = "haiku",
- target_os = "nto"
+ target_os = "nto",
+ target_os = "vita"
)))]
d_type: dirent.d_type,
- #[cfg(not(any(freebsdlike, netbsdlike)))]
+ #[cfg(not(any(freebsdlike, netbsdlike, target_os = "vita")))]
d_ino: dirent.d_ino,
#[cfg(any(freebsdlike, netbsdlike))]
@@ -118,9 +157,10 @@ impl Dir {
}
/// `fstat(self)`
+ #[cfg(not(target_os = "vita"))]
#[inline]
pub fn stat(&self) -> io::Result<Stat> {
- fstat(unsafe { BorrowedFd::borrow_raw(c::dirfd(self.0.as_ptr())) })
+ fstat(unsafe { BorrowedFd::borrow_raw(c::dirfd(self.libc_dir.as_ptr())) })
}
/// `fstatfs(self)`
@@ -130,27 +170,34 @@ impl Dir {
target_os = "netbsd",
target_os = "nto",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi",
)))]
#[inline]
pub fn statfs(&self) -> io::Result<StatFs> {
- fstatfs(unsafe { BorrowedFd::borrow_raw(c::dirfd(self.0.as_ptr())) })
+ fstatfs(unsafe { BorrowedFd::borrow_raw(c::dirfd(self.libc_dir.as_ptr())) })
}
/// `fstatvfs(self)`
- #[cfg(not(any(solarish, target_os = "haiku", target_os = "redox", target_os = "wasi")))]
+ #[cfg(not(any(
+ solarish,
+ target_os = "haiku",
+ target_os = "redox",
+ target_os = "vita",
+ target_os = "wasi"
+ )))]
#[inline]
pub fn statvfs(&self) -> io::Result<StatVfs> {
- fstatvfs(unsafe { BorrowedFd::borrow_raw(c::dirfd(self.0.as_ptr())) })
+ fstatvfs(unsafe { BorrowedFd::borrow_raw(c::dirfd(self.libc_dir.as_ptr())) })
}
/// `fchdir(self)`
#[cfg(feature = "process")]
- #[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))]
+ #[cfg(not(any(target_os = "fuchsia", target_os = "vita", target_os = "wasi")))]
#[cfg_attr(doc_cfg, doc(cfg(feature = "process")))]
#[inline]
pub fn chdir(&self) -> io::Result<()> {
- fchdir(unsafe { BorrowedFd::borrow_raw(c::dirfd(self.0.as_ptr())) })
+ fchdir(unsafe { BorrowedFd::borrow_raw(c::dirfd(self.libc_dir.as_ptr())) })
}
}
@@ -163,7 +210,7 @@ unsafe impl Send for Dir {}
impl Drop for Dir {
#[inline]
fn drop(&mut self) {
- unsafe { c::closedir(self.0.as_ptr()) };
+ unsafe { c::closedir(self.libc_dir.as_ptr()) };
}
}
@@ -178,19 +225,26 @@ impl Iterator for Dir {
impl fmt::Debug for Dir {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.debug_struct("Dir")
- .field("fd", unsafe { &c::dirfd(self.0.as_ptr()) })
- .finish()
+ let mut s = f.debug_struct("Dir");
+ #[cfg(not(target_os = "vita"))]
+ s.field("fd", unsafe { &c::dirfd(self.libc_dir.as_ptr()) });
+ s.finish()
}
}
/// `struct dirent`
#[derive(Debug)]
pub struct DirEntry {
- #[cfg(not(any(solarish, target_os = "aix", target_os = "haiku", target_os = "nto")))]
+ #[cfg(not(any(
+ solarish,
+ target_os = "aix",
+ target_os = "haiku",
+ target_os = "nto",
+ target_os = "vita"
+ )))]
d_type: u8,
- #[cfg(not(any(freebsdlike, netbsdlike)))]
+ #[cfg(not(any(freebsdlike, netbsdlike, target_os = "vita")))]
d_ino: c::ino_t,
#[cfg(any(freebsdlike, netbsdlike))]
@@ -207,14 +261,20 @@ impl DirEntry {
}
/// Returns the type of this directory entry.
- #[cfg(not(any(solarish, target_os = "aix", target_os = "haiku", target_os = "nto")))]
+ #[cfg(not(any(
+ solarish,
+ target_os = "aix",
+ target_os = "haiku",
+ target_os = "nto",
+ target_os = "vita"
+ )))]
#[inline]
pub fn file_type(&self) -> FileType {
FileType::from_dirent_d_type(self.d_type)
}
/// Return the inode number of this directory entry.
- #[cfg(not(any(freebsdlike, netbsdlike)))]
+ #[cfg(not(any(freebsdlike, netbsdlike, target_os = "vita")))]
#[inline]
pub fn ino(&self) -> u64 {
self.d_ino as u64
@@ -293,3 +353,45 @@ fn check_dirent_layout(dirent: &c::dirent) {
}
);
}
+
+#[test]
+fn dir_iterator_handles_io_errors() {
+ // create a dir, keep the FD, then delete the dir
+ let tmp = tempfile::tempdir().unwrap();
+ let fd = crate::fs::openat(
+ crate::fs::CWD,
+ tmp.path(),
+ crate::fs::OFlags::RDONLY | crate::fs::OFlags::CLOEXEC,
+ crate::fs::Mode::empty(),
+ )
+ .unwrap();
+
+ let file_fd = crate::fs::openat(
+ &fd,
+ tmp.path().join("test.txt"),
+ crate::fs::OFlags::WRONLY | crate::fs::OFlags::CREATE,
+ crate::fs::Mode::RWXU,
+ )
+ .unwrap();
+
+ let mut dir = Dir::read_from(&fd).unwrap();
+
+ // Reach inside the `Dir` and replace its directory with a file, which
+ // will cause the subsequent `readdir` to fail.
+ unsafe {
+ let raw_fd = c::dirfd(dir.libc_dir.as_ptr());
+ let mut owned_fd: crate::fd::OwnedFd = crate::fd::FromRawFd::from_raw_fd(raw_fd);
+ crate::io::dup2(&file_fd, &mut owned_fd).unwrap();
+ core::mem::forget(owned_fd);
+ }
+
+ // FreeBSD and macOS seem to read some directory entries before we call
+ // `.next()`.
+ #[cfg(any(apple, freebsdlike))]
+ {
+ dir.rewind();
+ }
+
+ assert!(matches!(dir.next(), Some(Err(_))));
+ assert!(matches!(dir.next(), None));
+}
diff --git a/vendor/rustix/src/backend/libc/fs/inotify.rs b/vendor/rustix/src/backend/libc/fs/inotify.rs
index fea2fad06..2044bd945 100644
--- a/vendor/rustix/src/backend/libc/fs/inotify.rs
+++ b/vendor/rustix/src/backend/libc/fs/inotify.rs
@@ -18,7 +18,7 @@ bitflags! {
/// `IN_NONBLOCK`
const NONBLOCK = bitcast!(c::IN_NONBLOCK);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -38,7 +38,7 @@ bitflags! {
const CLOSE_NOWRITE = c::IN_CLOSE_NOWRITE;
/// `IN_CLOSE_WRITE`
const CLOSE_WRITE = c::IN_CLOSE_WRITE;
- /// `IN_CREATE `
+ /// `IN_CREATE`
const CREATE = c::IN_CREATE;
/// `IN_DELETE`
const DELETE = c::IN_DELETE;
@@ -75,7 +75,7 @@ bitflags! {
/// `IN_ONLYDIR`
const ONLYDIR = c::IN_ONLYDIR;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -90,23 +90,22 @@ pub fn inotify_init(flags: CreateFlags) -> io::Result<OwnedFd> {
unsafe { ret_owned_fd(c::inotify_init1(bitflags_bits!(flags))) }
}
-/// `inotify_add_watch(self, path, flags)`—Adds a watch to inotify
+/// `inotify_add_watch(self, path, flags)`—Adds a watch to inotify.
///
-/// This registers or updates a watch for the filesystem path `path`
-/// and returns a watch descriptor corresponding to this watch.
+/// This registers or updates a watch for the filesystem path `path` and
+/// returns a watch descriptor corresponding to this watch.
///
-/// Note: Due to the existence of hardlinks, providing two
-/// different paths to this method may result in it returning
-/// the same watch descriptor. An application should keep track of this
-/// externally to avoid logic errors.
+/// Note: Due to the existence of hardlinks, providing two different paths to
+/// this method may result in it returning the same watch descriptor. An
+/// application should keep track of this externally to avoid logic errors.
pub fn inotify_add_watch<P: crate::path::Arg>(
inot: BorrowedFd<'_>,
path: P,
flags: WatchFlags,
) -> io::Result<i32> {
path.into_with_c_str(|path| {
- // SAFETY: The fd and path we are passing is guaranteed valid by the type
- // system.
+ // SAFETY: The fd and path we are passing is guaranteed valid by the
+ // type system.
unsafe {
ret_c_int(c::inotify_add_watch(
borrowed_fd(inot),
@@ -117,7 +116,7 @@ pub fn inotify_add_watch<P: crate::path::Arg>(
})
}
-/// `inotify_rm_watch(self, wd)`—Removes a watch from this inotify
+/// `inotify_rm_watch(self, wd)`—Removes a watch from this inotify.
///
/// The watch descriptor provided should have previously been returned by
/// [`inotify_add_watch`] and not previously have been removed.
diff --git a/vendor/rustix/src/backend/libc/fs/mod.rs b/vendor/rustix/src/backend/libc/fs/mod.rs
index 9a0b1d3e5..c17e8636f 100644
--- a/vendor/rustix/src/backend/libc/fs/mod.rs
+++ b/vendor/rustix/src/backend/libc/fs/mod.rs
@@ -6,6 +6,7 @@ pub mod inotify;
target_os = "espidf",
target_os = "haiku",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi"
)))]
pub(crate) mod makedev;
diff --git a/vendor/rustix/src/backend/libc/fs/syscalls.rs b/vendor/rustix/src/backend/libc/fs/syscalls.rs
index 5df25daa9..5e0b62f8e 100644
--- a/vendor/rustix/src/backend/libc/fs/syscalls.rs
+++ b/vendor/rustix/src/backend/libc/fs/syscalls.rs
@@ -1,13 +1,20 @@
//! libc syscalls supporting `rustix::fs`.
use crate::backend::c;
-#[cfg(any(apple, linux_kernel, feature = "alloc"))]
+#[cfg(any(
+ apple,
+ linux_kernel,
+ feature = "alloc",
+ all(linux_kernel, feature = "procfs")
+))]
use crate::backend::conv::ret_usize;
use crate::backend::conv::{borrowed_fd, c_str, ret, ret_c_int, ret_off_t, ret_owned_fd};
use crate::fd::{BorrowedFd, OwnedFd};
use crate::ffi::CStr;
#[cfg(apple)]
use crate::ffi::CString;
+#[cfg(not(any(target_os = "espidf", target_os = "vita")))]
+use crate::fs::Access;
#[cfg(not(any(
apple,
netbsdlike,
@@ -16,6 +23,7 @@ use crate::ffi::CString;
target_os = "espidf",
target_os = "haiku",
target_os = "redox",
+ target_os = "vita",
)))]
use crate::fs::Advice;
#[cfg(not(any(target_os = "espidf", target_os = "redox")))]
@@ -28,9 +36,10 @@ use crate::fs::AtFlags;
target_os = "espidf",
target_os = "nto",
target_os = "redox",
+ target_os = "vita",
)))]
use crate::fs::FallocateFlags;
-#[cfg(not(any(target_os = "espidf", target_os = "wasi")))]
+#[cfg(not(any(target_os = "espidf", target_os = "vita", target_os = "wasi")))]
use crate::fs::FlockOperation;
#[cfg(any(linux_kernel, target_os = "freebsd"))]
use crate::fs::MemfdFlags;
@@ -43,12 +52,19 @@ use crate::fs::SealFlags;
target_os = "netbsd",
target_os = "nto",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi",
)))]
use crate::fs::StatFs;
-#[cfg(not(target_os = "espidf"))]
-use crate::fs::{Access, Timestamps};
-#[cfg(not(any(apple, target_os = "espidf", target_os = "redox", target_os = "wasi")))]
+#[cfg(not(any(target_os = "espidf", target_os = "vita")))]
+use crate::fs::Timestamps;
+#[cfg(not(any(
+ apple,
+ target_os = "espidf",
+ target_os = "redox",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
use crate::fs::{Dev, FileType};
use crate::fs::{Mode, OFlags, SeekFrom, Stat};
#[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "wasi")))]
@@ -125,7 +141,7 @@ fn open_via_syscall(path: &CStr, oflags: OFlags, mode: Mode) -> io::Result<Owned
pub(crate) fn open(path: &CStr, oflags: OFlags, mode: Mode) -> io::Result<OwnedFd> {
// Work around <https://sourceware.org/bugzilla/show_bug.cgi?id=17523>.
// glibc versions before 2.25 don't handle `O_TMPFILE` correctly.
- #[cfg(all(unix, target_env = "gnu"))]
+ #[cfg(all(unix, target_env = "gnu", not(target_os = "hurd")))]
if oflags.contains(OFlags::TMPFILE) && crate::backend::if_glibc_is_less_than_2_25() {
return open_via_syscall(path, oflags, mode);
}
@@ -153,7 +169,7 @@ pub(crate) fn open(path: &CStr, oflags: OFlags, mode: Mode) -> io::Result<OwnedF
/// Use a direct syscall (via libc) for `openat`.
///
/// This is only currently necessary as a workaround for old glibc; see below.
-#[cfg(all(unix, target_env = "gnu"))]
+#[cfg(all(unix, target_env = "gnu", not(target_os = "hurd")))]
fn openat_via_syscall(
dirfd: BorrowedFd<'_>,
path: &CStr,
@@ -188,7 +204,7 @@ pub(crate) fn openat(
) -> io::Result<OwnedFd> {
// Work around <https://sourceware.org/bugzilla/show_bug.cgi?id=17523>.
// glibc versions before 2.25 don't handle `O_TMPFILE` correctly.
- #[cfg(all(unix, target_env = "gnu"))]
+ #[cfg(all(unix, target_env = "gnu", not(target_os = "hurd")))]
if oflags.contains(OFlags::TMPFILE) && crate::backend::if_glibc_is_less_than_2_25() {
return openat_via_syscall(dirfd, path, oflags, mode);
}
@@ -227,6 +243,7 @@ pub(crate) fn openat(
target_os = "netbsd",
target_os = "nto",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi",
)))]
#[inline]
@@ -258,7 +275,10 @@ pub(crate) fn readlink(path: &CStr, buf: &mut [u8]) -> io::Result<usize> {
}
}
-#[cfg(all(feature = "alloc", not(target_os = "redox")))]
+#[cfg(all(
+ any(feature = "alloc", all(linux_kernel, feature = "procfs")),
+ not(target_os = "redox")
+))]
#[inline]
pub(crate) fn readlinkat(
dirfd: BorrowedFd<'_>,
@@ -501,8 +521,6 @@ pub(crate) fn renameat2(
}
}
-/// At present, `libc` only has `renameat2` defined for glibc. On other
-/// ABIs, `RenameFlags` has no flags defined, and we use plain `renameat`.
#[cfg(any(
target_os = "android",
all(target_os = "linux", not(target_env = "gnu")),
@@ -515,8 +533,32 @@ pub(crate) fn renameat2(
new_path: &CStr,
flags: RenameFlags,
) -> io::Result<()> {
- assert!(flags.is_empty());
- renameat(old_dirfd, old_path, new_dirfd, new_path)
+ // At present, `libc` only has `renameat2` defined for glibc. If we have
+ // no flags, we can use plain `renameat`, but otherwise we use `syscall!`.
+ // to call `renameat2` ourselves.
+ if flags.is_empty() {
+ renameat(old_dirfd, old_path, new_dirfd, new_path)
+ } else {
+ syscall! {
+ fn renameat2(
+ olddirfd: c::c_int,
+ oldpath: *const c::c_char,
+ newdirfd: c::c_int,
+ newpath: *const c::c_char,
+ flags: c::c_uint
+ ) via SYS_renameat2 -> c::c_int
+ }
+
+ unsafe {
+ ret(renameat2(
+ borrowed_fd(old_dirfd),
+ c_str(old_path),
+ borrowed_fd(new_dirfd),
+ c_str(new_path),
+ flags.bits(),
+ ))
+ }
+ }
}
pub(crate) fn symlink(old_path: &CStr, new_path: &CStr) -> io::Result<()> {
@@ -680,12 +722,17 @@ fn statat_old(dirfd: BorrowedFd<'_>, path: &CStr, flags: AtFlags) -> io::Result<
}
}
-#[cfg(not(any(target_os = "espidf", target_os = "emscripten")))]
+#[cfg(not(any(target_os = "espidf", target_os = "emscripten", target_os = "vita")))]
pub(crate) fn access(path: &CStr, access: Access) -> io::Result<()> {
unsafe { ret(c::access(c_str(path), access.bits())) }
}
-#[cfg(not(any(target_os = "emscripten", target_os = "espidf", target_os = "redox")))]
+#[cfg(not(any(
+ target_os = "emscripten",
+ target_os = "espidf",
+ target_os = "redox",
+ target_os = "vita"
+)))]
pub(crate) fn accessat(
dirfd: BorrowedFd<'_>,
path: &CStr,
@@ -751,7 +798,7 @@ pub(crate) fn accessat(
Ok(())
}
-#[cfg(not(any(target_os = "espidf", target_os = "redox")))]
+#[cfg(not(any(target_os = "espidf", target_os = "redox", target_os = "vita")))]
pub(crate) fn utimensat(
dirfd: BorrowedFd<'_>,
path: &CStr,
@@ -831,8 +878,8 @@ pub(crate) fn utimensat(
));
}
- // `setattrlistat` was introduced in 10.13 along with `utimensat`, so if
- // we don't have `utimensat`, we don't have `setattrlistat` either.
+ // `setattrlistat` was introduced in 10.13 along with `utimensat`, so
+ // if we don't have `utimensat`, we don't have `setattrlistat` either.
// Emulate it using `fork`, and `fchdir` and [`setattrlist`].
//
// [`setattrlist`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setattrlist.2.html
@@ -925,7 +972,11 @@ fn utimensat_old(
.tv_sec
.try_into()
.map_err(|_| io::Errno::OVERFLOW)?,
- tv_nsec: times.last_access.tv_nsec,
+ tv_nsec: times
+ .last_access
+ .tv_nsec
+ .try_into()
+ .map_err(|_| io::Errno::OVERFLOW)?,
},
c::timespec {
tv_sec: times
@@ -933,7 +984,11 @@ fn utimensat_old(
.tv_sec
.try_into()
.map_err(|_| io::Errno::OVERFLOW)?,
- tv_nsec: times.last_modification.tv_nsec,
+ tv_nsec: times
+ .last_modification
+ .tv_nsec
+ .try_into()
+ .map_err(|_| io::Errno::OVERFLOW)?,
},
];
unsafe {
@@ -1054,7 +1109,13 @@ pub(crate) fn chownat(
}
}
-#[cfg(not(any(apple, target_os = "espidf", target_os = "redox", target_os = "wasi")))]
+#[cfg(not(any(
+ apple,
+ target_os = "espidf",
+ target_os = "redox",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
pub(crate) fn mknodat(
dirfd: BorrowedFd<'_>,
path: &CStr,
@@ -1133,6 +1194,7 @@ pub(crate) fn copy_file_range(
target_os = "espidf",
target_os = "haiku",
target_os = "redox",
+ target_os = "vita",
)))]
pub(crate) fn fadvise(fd: BorrowedFd<'_>, offset: u64, len: u64, advice: Advice) -> io::Result<()> {
let offset = offset as i64;
@@ -1189,6 +1251,7 @@ pub(crate) fn fcntl_add_seals(fd: BorrowedFd<'_>, seals: SealFlags) -> io::Resul
target_os = "espidf",
target_os = "fuchsia",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi"
)))]
#[inline]
@@ -1234,8 +1297,8 @@ pub(crate) fn seek(fd: BorrowedFd<'_>, pos: SeekFrom) -> io::Result<u64> {
SeekFrom::Hole(offset) => (c::SEEK_HOLE, offset),
};
- // ESP-IDF doesn't support 64-bit offsets.
- #[cfg(target_os = "espidf")]
+ // ESP-IDF and Vita don't support 64-bit offsets.
+ #[cfg(any(target_os = "espidf", target_os = "vita"))]
let offset: i32 = offset.try_into().map_err(|_| io::Errno::OVERFLOW)?;
let offset = unsafe { ret_off_t(c::lseek(borrowed_fd(fd), offset, whence))? };
@@ -1302,7 +1365,12 @@ pub(crate) fn fchown(fd: BorrowedFd<'_>, owner: Option<Uid>, group: Option<Gid>)
}
}
-#[cfg(not(any(target_os = "espidf", target_os = "solaris", target_os = "wasi")))]
+#[cfg(not(any(
+ target_os = "espidf",
+ target_os = "solaris",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
pub(crate) fn flock(fd: BorrowedFd<'_>, operation: FlockOperation) -> io::Result<()> {
unsafe { ret(c::flock(borrowed_fd(fd), operation as c::c_int)) }
}
@@ -1324,7 +1392,12 @@ pub(crate) fn syncfs(fd: BorrowedFd<'_>) -> io::Result<()> {
unsafe { ret(syncfs(borrowed_fd(fd))) }
}
-#[cfg(not(any(target_os = "espidf", target_os = "redox", target_os = "wasi")))]
+#[cfg(not(any(
+ target_os = "espidf",
+ target_os = "redox",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
pub(crate) fn sync() {
unsafe { c::sync() }
}
@@ -1392,6 +1465,7 @@ fn fstat_old(fd: BorrowedFd<'_>) -> io::Result<Stat> {
target_os = "netbsd",
target_os = "nto",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi",
)))]
pub(crate) fn fstatfs(fd: BorrowedFd<'_>) -> io::Result<StatFs> {
@@ -1431,7 +1505,7 @@ fn libc_statvfs_to_statvfs(from: c::statvfs) -> StatVfs {
}
}
-#[cfg(not(target_os = "espidf"))]
+#[cfg(not(any(target_os = "espidf", target_os = "vita")))]
pub(crate) fn futimens(fd: BorrowedFd<'_>, times: &Timestamps) -> io::Result<()> {
// Old 32-bit version: libc has `futimens` but it is not y2038 safe by
// default. But there may be a `__futimens64` we can use.
@@ -1507,7 +1581,11 @@ fn futimens_old(fd: BorrowedFd<'_>, times: &Timestamps) -> io::Result<()> {
.tv_sec
.try_into()
.map_err(|_| io::Errno::OVERFLOW)?,
- tv_nsec: times.last_access.tv_nsec,
+ tv_nsec: times
+ .last_access
+ .tv_nsec
+ .try_into()
+ .map_err(|_| io::Errno::OVERFLOW)?,
},
c::timespec {
tv_sec: times
@@ -1515,7 +1593,11 @@ fn futimens_old(fd: BorrowedFd<'_>, times: &Timestamps) -> io::Result<()> {
.tv_sec
.try_into()
.map_err(|_| io::Errno::OVERFLOW)?,
- tv_nsec: times.last_modification.tv_nsec,
+ tv_nsec: times
+ .last_modification
+ .tv_nsec
+ .try_into()
+ .map_err(|_| io::Errno::OVERFLOW)?,
},
];
@@ -1531,6 +1613,7 @@ fn futimens_old(fd: BorrowedFd<'_>, times: &Timestamps) -> io::Result<()> {
target_os = "espidf",
target_os = "nto",
target_os = "redox",
+ target_os = "vita",
)))]
pub(crate) fn fallocate(
fd: BorrowedFd<'_>,
@@ -1557,7 +1640,8 @@ pub(crate) fn fallocate(
assert!(mode.is_empty());
let err = unsafe { c::posix_fallocate(borrowed_fd(fd), offset, len) };
- // `posix_fallocate` returns its error status rather than using `errno`.
+ // `posix_fallocate` returns its error status rather than using
+ // `errno`.
if err == 0 {
Ok(())
} else {
@@ -1607,6 +1691,7 @@ pub(crate) fn fsync(fd: BorrowedFd<'_>) -> io::Result<()> {
target_os = "espidf",
target_os = "haiku",
target_os = "redox",
+ target_os = "vita",
)))]
pub(crate) fn fdatasync(fd: BorrowedFd<'_>) -> io::Result<()> {
unsafe { ret(c::fdatasync(borrowed_fd(fd))) }
diff --git a/vendor/rustix/src/backend/libc/fs/types.rs b/vendor/rustix/src/backend/libc/fs/types.rs
index cf86861dc..876757715 100644
--- a/vendor/rustix/src/backend/libc/fs/types.rs
+++ b/vendor/rustix/src/backend/libc/fs/types.rs
@@ -1,7 +1,7 @@
use crate::backend::c;
use bitflags::bitflags;
-#[cfg(not(target_os = "espidf"))]
+#[cfg(not(any(target_os = "espidf", target_os = "vita")))]
bitflags! {
/// `*_OK` constants for use with [`accessat`].
///
@@ -21,7 +21,7 @@ bitflags! {
/// `F_OK`
const EXISTS = c::F_OK;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -77,7 +77,7 @@ bitflags! {
#[cfg(all(target_os = "linux", target_env = "gnu"))]
const STATX_DONT_SYNC = bitcast!(c::AT_STATX_DONT_SYNC);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -92,66 +92,66 @@ bitflags! {
#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
pub struct Mode: RawMode {
/// `S_IRWXU`
- #[cfg(not(target_os = "espidf"))]
+ #[cfg(not(any(target_os = "espidf", target_os = "vita")))]
const RWXU = c::S_IRWXU as RawMode;
/// `S_IRUSR`
- #[cfg(not(target_os = "espidf"))]
+ #[cfg(not(any(target_os = "espidf", target_os = "vita")))]
const RUSR = c::S_IRUSR as RawMode;
/// `S_IWUSR`
- #[cfg(not(target_os = "espidf"))]
+ #[cfg(not(any(target_os = "espidf", target_os = "vita")))]
const WUSR = c::S_IWUSR as RawMode;
/// `S_IXUSR`
- #[cfg(not(target_os = "espidf"))]
+ #[cfg(not(any(target_os = "espidf", target_os = "vita")))]
const XUSR = c::S_IXUSR as RawMode;
/// `S_IRWXG`
- #[cfg(not(target_os = "espidf"))]
+ #[cfg(not(any(target_os = "espidf", target_os = "vita")))]
const RWXG = c::S_IRWXG as RawMode;
/// `S_IRGRP`
- #[cfg(not(target_os = "espidf"))]
+ #[cfg(not(any(target_os = "espidf", target_os = "vita")))]
const RGRP = c::S_IRGRP as RawMode;
/// `S_IWGRP`
- #[cfg(not(target_os = "espidf"))]
+ #[cfg(not(any(target_os = "espidf", target_os = "vita")))]
const WGRP = c::S_IWGRP as RawMode;
/// `S_IXGRP`
- #[cfg(not(target_os = "espidf"))]
+ #[cfg(not(any(target_os = "espidf", target_os = "vita")))]
const XGRP = c::S_IXGRP as RawMode;
/// `S_IRWXO`
- #[cfg(not(target_os = "espidf"))]
+ #[cfg(not(any(target_os = "espidf", target_os = "vita")))]
const RWXO = c::S_IRWXO as RawMode;
/// `S_IROTH`
- #[cfg(not(target_os = "espidf"))]
+ #[cfg(not(any(target_os = "espidf", target_os = "vita")))]
const ROTH = c::S_IROTH as RawMode;
/// `S_IWOTH`
- #[cfg(not(target_os = "espidf"))]
+ #[cfg(not(any(target_os = "espidf", target_os = "vita")))]
const WOTH = c::S_IWOTH as RawMode;
/// `S_IXOTH`
- #[cfg(not(target_os = "espidf"))]
+ #[cfg(not(any(target_os = "espidf", target_os = "vita")))]
const XOTH = c::S_IXOTH as RawMode;
/// `S_ISUID`
- #[cfg(not(target_os = "espidf"))]
+ #[cfg(not(any(target_os = "espidf", target_os = "vita")))]
const SUID = c::S_ISUID as RawMode;
/// `S_ISGID`
- #[cfg(not(target_os = "espidf"))]
+ #[cfg(not(any(target_os = "espidf", target_os = "vita")))]
const SGID = c::S_ISGID as RawMode;
/// `S_ISVTX`
- #[cfg(not(target_os = "espidf"))]
+ #[cfg(not(any(target_os = "espidf", target_os = "vita")))]
const SVTX = c::S_ISVTX as RawMode;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -213,9 +213,9 @@ bitflags! {
/// Similar to `ACCMODE`, but just includes the read/write flags, and
/// no other flags.
///
- /// Some implementations include `O_PATH` in `O_ACCMODE`, when
+ /// On some platforms, `PATH` may be included in `ACCMODE`, when
/// sometimes we really just want the read/write bits. Caution is
- /// indicated, as the presence of `O_PATH` may mean that the read/write
+ /// indicated, as the presence of `PATH` may mean that the read/write
/// bits don't have their usual meaning.
const RWMODE = bitcast!(c::O_RDONLY | c::O_WRONLY | c::O_RDWR);
@@ -231,7 +231,7 @@ bitflags! {
const DIRECTORY = bitcast!(c::O_DIRECTORY);
/// `O_DSYNC`
- #[cfg(not(any(target_os = "dragonfly", target_os = "espidf", target_os = "l4re", target_os = "redox")))]
+ #[cfg(not(any(target_os = "dragonfly", target_os = "espidf", target_os = "l4re", target_os = "redox", target_os = "vita")))]
const DSYNC = bitcast!(c::O_DSYNC);
/// `O_EXCL`
@@ -263,7 +263,7 @@ bitflags! {
const RDWR = bitcast!(c::O_RDWR);
/// `O_NOCTTY`
- #[cfg(not(any(target_os = "espidf", target_os = "l4re", target_os = "redox")))]
+ #[cfg(not(any(target_os = "espidf", target_os = "l4re", target_os = "redox", target_os = "vita")))]
const NOCTTY = bitcast!(c::O_NOCTTY);
/// `O_RSYNC`
@@ -328,7 +328,7 @@ bitflags! {
#[cfg(target_os = "freebsd")]
const EMPTY_PATH = bitcast!(c::O_EMPTY_PATH);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -347,7 +347,7 @@ bitflags! {
/// `CLONE_NOOWNERCOPY`
const NOOWNERCOPY = 2;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -392,7 +392,7 @@ bitflags! {
/// `COPYFILE_ALL`
const ALL = copyfile::ALL;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -423,7 +423,7 @@ bitflags! {
/// `RESOLVE_CACHED` (since Linux 5.12)
const CACHED = 0x20;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -445,7 +445,7 @@ bitflags! {
/// `RENAME_WHITEOUT`
const WHITEOUT = bitcast!(c::RENAME_WHITEOUT);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -527,7 +527,8 @@ impl FileType {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
- target_os = "redox"
+ target_os = "redox",
+ target_os = "vita"
)))]
#[inline]
pub(crate) const fn from_dirent_d_type(d_type: u8) -> Self {
@@ -558,6 +559,7 @@ impl FileType {
target_os = "espidf",
target_os = "haiku",
target_os = "redox",
+ target_os = "vita",
)))]
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
#[repr(u32)]
@@ -623,7 +625,7 @@ bitflags! {
/// `MFD_HUGE_16GB`
const HUGE_16GB = c::MFD_HUGE_16GB;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -638,19 +640,19 @@ bitflags! {
#[repr(transparent)]
#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
pub struct SealFlags: u32 {
- /// `F_SEAL_SEAL`.
+ /// `F_SEAL_SEAL`
const SEAL = bitcast!(c::F_SEAL_SEAL);
- /// `F_SEAL_SHRINK`.
+ /// `F_SEAL_SHRINK`
const SHRINK = bitcast!(c::F_SEAL_SHRINK);
- /// `F_SEAL_GROW`.
+ /// `F_SEAL_GROW`
const GROW = bitcast!(c::F_SEAL_GROW);
- /// `F_SEAL_WRITE`.
+ /// `F_SEAL_WRITE`
const WRITE = bitcast!(c::F_SEAL_WRITE);
/// `F_SEAL_FUTURE_WRITE` (since Linux 5.1)
#[cfg(linux_kernel)]
const FUTURE_WRITE = bitcast!(c::F_SEAL_FUTURE_WRITE);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -711,7 +713,7 @@ bitflags! {
/// `STATX_ALL`
const ALL = c::STATX_ALL;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -772,7 +774,7 @@ bitflags! {
/// `STATX_ALL`
const ALL = 0xfff;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -783,7 +785,8 @@ bitflags! {
target_os = "aix",
target_os = "espidf",
target_os = "nto",
- target_os = "redox"
+ target_os = "redox",
+ target_os = "vita"
)))]
bitflags! {
/// `FALLOC_FL_*` constants for use with [`fallocate`].
@@ -797,6 +800,7 @@ bitflags! {
bsd,
target_os = "aix",
target_os = "haiku",
+ target_os = "hurd",
target_os = "wasi",
)))]
const KEEP_SIZE = bitcast!(c::FALLOC_FL_KEEP_SIZE);
@@ -805,6 +809,7 @@ bitflags! {
bsd,
target_os = "aix",
target_os = "haiku",
+ target_os = "hurd",
target_os = "wasi",
)))]
const PUNCH_HOLE = bitcast!(c::FALLOC_FL_PUNCH_HOLE);
@@ -815,6 +820,7 @@ bitflags! {
target_os = "emscripten",
target_os = "fuchsia",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
target_os = "linux",
target_os = "wasi",
@@ -825,6 +831,7 @@ bitflags! {
bsd,
target_os = "aix",
target_os = "haiku",
+ target_os = "hurd",
target_os = "emscripten",
target_os = "wasi",
)))]
@@ -834,6 +841,7 @@ bitflags! {
bsd,
target_os = "aix",
target_os = "haiku",
+ target_os = "hurd",
target_os = "emscripten",
target_os = "wasi",
)))]
@@ -843,6 +851,7 @@ bitflags! {
bsd,
target_os = "aix",
target_os = "haiku",
+ target_os = "hurd",
target_os = "emscripten",
target_os = "wasi",
)))]
@@ -852,12 +861,13 @@ bitflags! {
bsd,
target_os = "aix",
target_os = "haiku",
+ target_os = "hurd",
target_os = "emscripten",
target_os = "wasi",
)))]
const UNSHARE_RANGE = bitcast!(c::FALLOC_FL_UNSHARE_RANGE);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -894,11 +904,11 @@ bitflags! {
const NOEXEC = c::ST_NOEXEC as u64;
/// `ST_NOSUID`
- #[cfg(not(target_os = "espidf"))]
+ #[cfg(not(any(target_os = "espidf", target_os = "vita")))]
const NOSUID = c::ST_NOSUID as u64;
/// `ST_RDONLY`
- #[cfg(not(target_os = "espidf"))]
+ #[cfg(not(any(target_os = "espidf", target_os = "vita")))]
const RDONLY = c::ST_RDONLY as u64;
/// `ST_RELATIME`
@@ -909,7 +919,7 @@ bitflags! {
#[cfg(any(linux_kernel, target_os = "emscripten", target_os = "fuchsia"))]
const SYNCHRONOUS = c::ST_SYNCHRONOUS as u64;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -918,7 +928,7 @@ bitflags! {
///
/// [`flock`]: crate::fs::flock
/// [`fcntl_lock`]: crate::fs::fcntl_lock
-#[cfg(not(any(target_os = "espidf", target_os = "wasi")))]
+#[cfg(not(any(target_os = "espidf", target_os = "vita", target_os = "wasi")))]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[repr(u32)]
pub enum FlockOperation {
@@ -940,7 +950,7 @@ pub enum FlockOperation {
///
/// [`statat`]: crate::fs::statat
/// [`fstat`]: crate::fs::fstat
-#[cfg(not(linux_like))]
+#[cfg(not(any(linux_like, target_os = "hurd")))]
pub type Stat = c::stat;
/// `struct stat` for use with [`statat`] and [`fstat`].
@@ -949,6 +959,7 @@ pub type Stat = c::stat;
/// [`fstat`]: crate::fs::fstat
#[cfg(any(
all(linux_kernel, target_pointer_width = "64"),
+ target_os = "hurd",
target_os = "emscripten",
target_os = "l4re",
))]
@@ -996,6 +1007,7 @@ pub struct Stat {
target_os = "netbsd",
target_os = "nto",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi",
)))]
#[allow(clippy::module_name_repetitions)]
diff --git a/vendor/rustix/src/backend/libc/io/errno.rs b/vendor/rustix/src/backend/libc/io/errno.rs
index 1448fe7bd..731086b4f 100644
--- a/vendor/rustix/src/backend/libc/io/errno.rs
+++ b/vendor/rustix/src/backend/libc/io/errno.rs
@@ -52,7 +52,9 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const ADV: Self = Self(c::EADV);
@@ -74,7 +76,9 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const BADE: Self = Self(c::EBADE);
@@ -87,7 +91,9 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const BADFD: Self = Self(c::EBADFD);
@@ -101,7 +107,9 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const BADR: Self = Self(c::EBADR);
@@ -115,7 +123,9 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const BADRQC: Self = Self(c::EBADRQC);
@@ -126,7 +136,9 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const BADSLT: Self = Self(c::EBADSLT);
@@ -137,7 +149,9 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const BFONT: Self = Self(c::EBFONT);
@@ -159,7 +173,9 @@ impl Errno {
windows,
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi"
)))]
pub const CHRNG: Self = Self(c::ECHRNG);
@@ -170,7 +186,9 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const COMM: Self = Self(c::ECOMM);
@@ -191,6 +209,8 @@ impl Errno {
target_os = "android",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const DEADLOCK: Self = Self(c::EDEADLOCK);
@@ -214,8 +234,10 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
target_os = "nto",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const DOTDOT: Self = Self(c::EDOTDOT);
@@ -246,9 +268,11 @@ impl Errno {
target_os = "android",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
target_os = "nto",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const HWPOISON: Self = Self(c::EHWPOISON);
@@ -293,8 +317,10 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
target_os = "nto",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const ISNAM: Self = Self(c::EISNAM);
@@ -306,8 +332,10 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
target_os = "nto",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const KEYEXPIRED: Self = Self(c::EKEYEXPIRED);
@@ -319,8 +347,10 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
target_os = "nto",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const KEYREJECTED: Self = Self(c::EKEYREJECTED);
@@ -332,8 +362,10 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
target_os = "nto",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const KEYREVOKED: Self = Self(c::EKEYREVOKED);
@@ -343,7 +375,9 @@ impl Errno {
windows,
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi"
)))]
pub const L2HLT: Self = Self(c::EL2HLT);
@@ -353,7 +387,9 @@ impl Errno {
windows,
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi"
)))]
pub const L2NSYNC: Self = Self(c::EL2NSYNC);
@@ -363,7 +399,9 @@ impl Errno {
windows,
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi"
)))]
pub const L3HLT: Self = Self(c::EL3HLT);
@@ -373,7 +411,9 @@ impl Errno {
windows,
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi"
)))]
pub const L3RST: Self = Self(c::EL3RST);
@@ -384,7 +424,9 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const LIBACC: Self = Self(c::ELIBACC);
@@ -395,7 +437,9 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const LIBBAD: Self = Self(c::ELIBBAD);
@@ -407,6 +451,7 @@ impl Errno {
target_os = "espidf",
target_os = "haiku",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const LIBEXEC: Self = Self(c::ELIBEXEC);
@@ -417,7 +462,9 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const LIBMAX: Self = Self(c::ELIBMAX);
@@ -428,7 +475,9 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const LIBSCN: Self = Self(c::ELIBSCN);
@@ -438,7 +487,9 @@ impl Errno {
windows,
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi"
)))]
pub const LNRNG: Self = Self(c::ELNRNG);
@@ -452,8 +503,10 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
target_os = "nto",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const MEDIUMTYPE: Self = Self(c::EMEDIUMTYPE);
@@ -478,8 +531,10 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
target_os = "nto",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const NAVAIL: Self = Self(c::ENAVAIL);
@@ -503,7 +558,9 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const NOANO: Self = Self(c::ENOANO);
@@ -519,7 +576,9 @@ impl Errno {
windows,
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi"
)))]
pub const NOCSI: Self = Self(c::ENOCSI);
@@ -549,8 +608,10 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
target_os = "nto",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const NOKEY: Self = Self(c::ENOKEY);
@@ -568,8 +629,10 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
target_os = "nto",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const NOMEDIUM: Self = Self(c::ENOMEDIUM);
@@ -589,7 +652,9 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const NONET: Self = Self(c::ENONET);
@@ -600,7 +665,9 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const NOPKG: Self = Self(c::ENOPKG);
@@ -634,7 +701,13 @@ impl Errno {
#[cfg(not(windows))]
pub const NOSYS: Self = Self(c::ENOSYS);
/// `ENOTBLK`
- #[cfg(not(any(windows, target_os = "espidf", target_os = "haiku", target_os = "wasi")))]
+ #[cfg(not(any(
+ windows,
+ target_os = "espidf",
+ target_os = "haiku",
+ target_os = "vita",
+ target_os = "wasi"
+ )))]
pub const NOTBLK: Self = Self(c::ENOTBLK);
/// `ENOTCAPABLE`
#[cfg(any(target_os = "freebsd", target_os = "wasi"))]
@@ -654,8 +727,10 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
target_os = "nto",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const NOTNAM: Self = Self(c::ENOTNAM);
@@ -684,7 +759,9 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const NOTUNIQ: Self = Self(c::ENOTUNIQ);
@@ -751,7 +828,9 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const REMCHG: Self = Self(c::EREMCHG);
@@ -760,6 +839,7 @@ impl Errno {
target_os = "espidf",
target_os = "haiku",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi"
)))]
pub const REMOTE: Self = Self(c::EREMOTE);
@@ -771,8 +851,10 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
target_os = "nto",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const REMOTEIO: Self = Self(c::EREMOTEIO);
@@ -782,7 +864,9 @@ impl Errno {
windows,
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi"
)))]
pub const RESTART: Self = Self(c::ERESTART);
@@ -795,9 +879,11 @@ impl Errno {
target_os = "android",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
target_os = "nto",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const RFKILL: Self = Self(c::ERFKILL);
@@ -808,13 +894,19 @@ impl Errno {
#[cfg(bsd)]
pub const RPCMISMATCH: Self = Self(c::ERPCMISMATCH);
/// `ESHUTDOWN`
- #[cfg(not(any(target_os = "espidf", target_os = "l4re", target_os = "wasi")))]
+ #[cfg(not(any(
+ target_os = "espidf",
+ target_os = "l4re",
+ target_os = "vita",
+ target_os = "wasi"
+ )))]
pub const SHUTDOWN: Self = Self(c::ESHUTDOWN);
/// `ESOCKTNOSUPPORT`
#[cfg(not(any(
target_os = "espidf",
target_os = "haiku",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi"
)))]
pub const SOCKTNOSUPPORT: Self = Self(c::ESOCKTNOSUPPORT);
@@ -831,7 +923,9 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const SRMNT: Self = Self(c::ESRMNT);
@@ -844,7 +938,9 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const STRPIPE: Self = Self(c::ESTRPIPE);
@@ -877,8 +973,10 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
target_os = "nto",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const UCLEAN: Self = Self(c::EUCLEAN);
@@ -888,7 +986,9 @@ impl Errno {
windows,
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi"
)))]
pub const UNATCH: Self = Self(c::EUNATCH);
@@ -897,6 +997,7 @@ impl Errno {
target_os = "espidf",
target_os = "haiku",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi"
)))]
pub const USERS: Self = Self(c::EUSERS);
@@ -912,7 +1013,9 @@ impl Errno {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "l4re",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const XFULL: Self = Self(c::EXFULL);
diff --git a/vendor/rustix/src/backend/libc/io/syscalls.rs b/vendor/rustix/src/backend/libc/io/syscalls.rs
index 19ecfa9b6..8d5aefadc 100644
--- a/vendor/rustix/src/backend/libc/io/syscalls.rs
+++ b/vendor/rustix/src/backend/libc/io/syscalls.rs
@@ -9,6 +9,7 @@ use crate::fd::{AsFd, BorrowedFd, OwnedFd, RawFd};
target_os = "aix",
target_os = "espidf",
target_os = "nto",
+ target_os = "vita",
target_os = "wasi"
)))]
use crate::io::DupFlags;
@@ -51,8 +52,8 @@ pub(crate) fn pread(fd: BorrowedFd<'_>, buf: &mut [u8], offset: u64) -> io::Resu
// Silently cast; we'll get `EINVAL` if the value is negative.
let offset = offset as i64;
- // ESP-IDF doesn't support 64-bit offsets.
- #[cfg(target_os = "espidf")]
+ // ESP-IDF and Vita don't support 64-bit offsets.
+ #[cfg(any(target_os = "espidf", target_os = "vita"))]
let offset: i32 = offset.try_into().map_err(|_| io::Errno::OVERFLOW)?;
unsafe {
@@ -71,8 +72,8 @@ pub(crate) fn pwrite(fd: BorrowedFd<'_>, buf: &[u8], offset: u64) -> io::Result<
// Silently cast; we'll get `EINVAL` if the value is negative.
let offset = offset as i64;
- // ESP-IDF doesn't support 64-bit offsets.
- #[cfg(target_os = "espidf")]
+ // ESP-IDF and Vita don't support 64-bit offsets.
+ #[cfg(any(target_os = "espidf", target_os = "vita"))]
let offset: i32 = offset.try_into().map_err(|_| io::Errno::OVERFLOW)?;
unsafe { ret_usize(c::pwrite(borrowed_fd(fd), buf.as_ptr().cast(), len, offset)) }
@@ -105,7 +106,8 @@ pub(crate) fn writev(fd: BorrowedFd<'_>, bufs: &[IoSlice<'_>]) -> io::Result<usi
target_os = "haiku",
target_os = "nto",
target_os = "redox",
- target_os = "solaris"
+ target_os = "solaris",
+ target_os = "vita"
)))]
pub(crate) fn preadv(
fd: BorrowedFd<'_>,
@@ -129,7 +131,8 @@ pub(crate) fn preadv(
target_os = "haiku",
target_os = "nto",
target_os = "redox",
- target_os = "solaris"
+ target_os = "solaris",
+ target_os = "vita"
)))]
pub(crate) fn pwritev(fd: BorrowedFd<'_>, bufs: &[IoSlice<'_>], offset: u64) -> io::Result<usize> {
// Silently cast; we'll get `EINVAL` if the value is negative.
@@ -316,6 +319,7 @@ pub(crate) fn dup2(fd: BorrowedFd<'_>, new: &mut OwnedFd) -> io::Result<()> {
target_os = "haiku",
target_os = "nto",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi",
)))]
pub(crate) fn dup3(fd: BorrowedFd<'_>, new: &mut OwnedFd, flags: DupFlags) -> io::Result<()> {
diff --git a/vendor/rustix/src/backend/libc/io/types.rs b/vendor/rustix/src/backend/libc/io/types.rs
index eaf3eae71..510206f98 100644
--- a/vendor/rustix/src/backend/libc/io/types.rs
+++ b/vendor/rustix/src/backend/libc/io/types.rs
@@ -12,7 +12,7 @@ bitflags! {
/// `FD_CLOEXEC`
const CLOEXEC = bitcast!(c::FD_CLOEXEC);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -37,7 +37,7 @@ bitflags! {
/// `RWF_APPEND` (since Linux 4.16)
const APPEND = linux_raw_sys::general::RWF_APPEND;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -59,7 +59,7 @@ bitflags! {
)))] // Android 5.0 has dup3, but libc doesn't have bindings
const CLOEXEC = bitcast!(c::O_CLOEXEC);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/backend/libc/mm/syscalls.rs b/vendor/rustix/src/backend/libc/mm/syscalls.rs
index 4b23a58b7..33bc9cac1 100644
--- a/vendor/rustix/src/backend/libc/mm/syscalls.rs
+++ b/vendor/rustix/src/backend/libc/mm/syscalls.rs
@@ -2,6 +2,8 @@
#[cfg(not(target_os = "redox"))]
use super::types::Advice;
+#[cfg(any(linux_kernel, freebsdlike, netbsdlike))]
+use super::types::MlockAllFlags;
#[cfg(any(target_os = "emscripten", target_os = "linux"))]
use super::types::MremapFlags;
use super::types::{MapFlags, MprotectFlags, MsyncFlags, ProtFlags};
@@ -220,3 +222,23 @@ pub(crate) unsafe fn userfaultfd(flags: UserfaultfdFlags) -> io::Result<OwnedFd>
}
ret_owned_fd(userfaultfd(bitflags_bits!(flags)))
}
+
+/// Locks all pages mapped into the address space of the calling process.
+///
+/// This includes the pages of the code, data, and stack segment, as well as
+/// shared libraries, user space kernel data, shared memory, and memory-mapped
+/// files. All mapped pages are guaranteed to be resident in RAM when the call
+/// returns successfully; the pages are guaranteed to stay in RAM until later
+/// unlocked.
+#[inline]
+#[cfg(any(linux_kernel, freebsdlike, netbsdlike))]
+pub(crate) fn mlockall(flags: MlockAllFlags) -> io::Result<()> {
+ unsafe { ret(c::mlockall(bitflags_bits!(flags))) }
+}
+
+/// Unlocks all pages mapped into the address space of the calling process.
+#[inline]
+#[cfg(any(linux_kernel, freebsdlike, netbsdlike))]
+pub(crate) fn munlockall() -> io::Result<()> {
+ unsafe { ret(c::munlockall()) }
+}
diff --git a/vendor/rustix/src/backend/libc/mm/types.rs b/vendor/rustix/src/backend/libc/mm/types.rs
index f0b4ad593..ef335d27a 100644
--- a/vendor/rustix/src/backend/libc/mm/types.rs
+++ b/vendor/rustix/src/backend/libc/mm/types.rs
@@ -17,7 +17,7 @@ bitflags! {
/// `PROT_EXEC`
const EXEC = bitcast!(c::PROT_EXEC);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -59,7 +59,7 @@ bitflags! {
#[cfg(all(linux_kernel, any(target_arch = "sparc", target_arch = "sparc64")))]
const ADI = linux_raw_sys::general::PROT_ADI;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -231,7 +231,7 @@ bitflags! {
#[cfg(any())]
const UNINITIALIZED = bitcast!(c::MAP_UNINITIALIZED);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -250,7 +250,7 @@ bitflags! {
/// `MREMAP_MAYMOVE`
const MAYMOVE = bitcast!(c::MREMAP_MAYMOVE);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -272,7 +272,7 @@ bitflags! {
/// written).
const INVALIDATE = bitcast!(c::MS_INVALIDATE);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -288,7 +288,7 @@ bitflags! {
/// `MLOCK_ONFAULT`
const ONFAULT = bitcast!(c::MLOCK_ONFAULT);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -438,7 +438,31 @@ bitflags! {
/// `O_NONBLOCK`
const NONBLOCK = bitcast!(c::O_NONBLOCK);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
+ const _ = !0;
+ }
+}
+
+#[cfg(any(linux_kernel, freebsdlike, netbsdlike))]
+bitflags! {
+ /// `MCL_*` flags for use with [`mlockall`].
+ ///
+ /// [`mlockall`]: crate::mm::mlockall
+ #[repr(transparent)]
+ #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
+ pub struct MlockAllFlags: u32 {
+ // libc doesn't define `MCL_ONFAULT` yet.
+ // const ONFAULT = libc::MCL_ONFAULT;
+ /// Lock all pages which will become mapped into the address space of
+ /// the process in the future. These could be, for instance, new pages
+ /// required by a growing heap and stack as well as new memory-mapped
+ /// files or shared memory regions.
+ const FUTURE = bitcast!(libc::MCL_FUTURE);
+ /// Lock all pages which are currently mapped into the address space of
+ /// the process.
+ const CURRENT = bitcast!(libc::MCL_CURRENT);
+
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/backend/libc/mod.rs b/vendor/rustix/src/backend/libc/mod.rs
index 59fc3bea1..729eb2489 100644
--- a/vendor/rustix/src/backend/libc/mod.rs
+++ b/vendor/rustix/src/backend/libc/mod.rs
@@ -111,7 +111,7 @@ pub(crate) mod io;
#[cfg(linux_kernel)]
#[cfg(feature = "io_uring")]
pub(crate) mod io_uring;
-#[cfg(not(any(windows, target_os = "espidf", target_os = "wasi")))]
+#[cfg(not(any(windows, target_os = "espidf", target_os = "vita", target_os = "wasi")))]
#[cfg(feature = "mm")]
pub(crate) mod mm;
#[cfg(linux_kernel)]
@@ -148,7 +148,7 @@ pub(crate) mod rand;
#[cfg(not(target_os = "wasi"))]
#[cfg(feature = "system")]
pub(crate) mod system;
-#[cfg(not(windows))]
+#[cfg(not(any(windows, target_os = "vita")))]
#[cfg(feature = "termios")]
pub(crate) mod termios;
#[cfg(not(windows))]
@@ -184,6 +184,15 @@ pub(crate) mod pid;
#[cfg(any(feature = "process", feature = "thread"))]
#[cfg(linux_kernel)]
pub(crate) mod prctl;
+#[cfg(not(any(
+ windows,
+ target_os = "android",
+ target_os = "espidf",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
+#[cfg(feature = "shm")]
+pub(crate) mod shm;
#[cfg(any(feature = "fs", feature = "thread", feature = "process"))]
#[cfg(not(any(windows, target_os = "wasi")))]
pub(crate) mod ugid;
diff --git a/vendor/rustix/src/backend/libc/mount/types.rs b/vendor/rustix/src/backend/libc/mount/types.rs
index 069a94444..d4f9c2da7 100644
--- a/vendor/rustix/src/backend/libc/mount/types.rs
+++ b/vendor/rustix/src/backend/libc/mount/types.rs
@@ -55,7 +55,7 @@ bitflags! {
/// `MS_SYNCHRONOUS`
const SYNCHRONOUS = c::MS_SYNCHRONOUS;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -77,7 +77,7 @@ bitflags! {
/// `UMOUNT_NOFOLLOW`
const NOFOLLOW = bitcast!(c::UMOUNT_NOFOLLOW);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -92,9 +92,9 @@ bitflags! {
#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
pub struct FsOpenFlags: c::c_uint {
/// `FSOPEN_CLOEXEC`
- const FSOPEN_CLOEXEC = 0x00000001;
+ const FSOPEN_CLOEXEC = 0x0000_0001;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -109,9 +109,9 @@ bitflags! {
#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
pub struct FsMountFlags: c::c_uint {
/// `FSMOUNT_CLOEXEC`
- const FSMOUNT_CLOEXEC = 0x00000001;
+ const FSMOUNT_CLOEXEC = 0x0000_0001;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -157,42 +157,42 @@ bitflags! {
#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
pub struct MountAttrFlags: c::c_uint {
/// `MOUNT_ATTR_RDONLY`
- const MOUNT_ATTR_RDONLY = 0x00000001;
+ const MOUNT_ATTR_RDONLY = 0x0000_0001;
/// `MOUNT_ATTR_NOSUID`
- const MOUNT_ATTR_NOSUID = 0x00000002;
+ const MOUNT_ATTR_NOSUID = 0x0000_0002;
/// `MOUNT_ATTR_NODEV`
- const MOUNT_ATTR_NODEV = 0x00000004;
+ const MOUNT_ATTR_NODEV = 0x0000_0004;
/// `MOUNT_ATTR_NOEXEC`
- const MOUNT_ATTR_NOEXEC = 0x00000008;
+ const MOUNT_ATTR_NOEXEC = 0x0000_0008;
/// `MOUNT_ATTR__ATIME`
- const MOUNT_ATTR__ATIME = 0x00000070;
+ const MOUNT_ATTR__ATIME = 0x0000_0070;
/// `MOUNT_ATTR_RELATIME`
- const MOUNT_ATTR_RELATIME = 0x00000000;
+ const MOUNT_ATTR_RELATIME = 0x0000_0000;
/// `MOUNT_ATTR_NOATIME`
- const MOUNT_ATTR_NOATIME = 0x00000010;
+ const MOUNT_ATTR_NOATIME = 0x0000_0010;
/// `MOUNT_ATTR_STRICTATIME`
- const MOUNT_ATTR_STRICTATIME = 0x00000020;
+ const MOUNT_ATTR_STRICTATIME = 0x0000_0020;
/// `MOUNT_ATTR_NODIRATIME`
- const MOUNT_ATTR_NODIRATIME = 0x00000080;
+ const MOUNT_ATTR_NODIRATIME = 0x0000_0080;
/// `MOUNT_ATTR_NOUSER`
- const MOUNT_ATTR_IDMAP = 0x00100000;
+ const MOUNT_ATTR_IDMAP = 0x0010_0000;
/// `MOUNT_ATTR__ATIME_FLAGS`
- const MOUNT_ATTR_NOSYMFOLLOW = 0x00200000;
+ const MOUNT_ATTR_NOSYMFOLLOW = 0x0020_0000;
/// `MOUNT_ATTR__ATIME_FLAGS`
const MOUNT_ATTR_SIZE_VER0 = 32;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -207,34 +207,34 @@ bitflags! {
#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
pub struct MoveMountFlags: c::c_uint {
/// `MOVE_MOUNT_F_EMPTY_PATH`
- const MOVE_MOUNT_F_SYMLINKS = 0x00000001;
+ const MOVE_MOUNT_F_SYMLINKS = 0x0000_0001;
/// `MOVE_MOUNT_F_AUTOMOUNTS`
- const MOVE_MOUNT_F_AUTOMOUNTS = 0x00000002;
+ const MOVE_MOUNT_F_AUTOMOUNTS = 0x0000_0002;
/// `MOVE_MOUNT_F_EMPTY_PATH`
- const MOVE_MOUNT_F_EMPTY_PATH = 0x00000004;
+ const MOVE_MOUNT_F_EMPTY_PATH = 0x0000_0004;
/// `MOVE_MOUNT_T_SYMLINKS`
- const MOVE_MOUNT_T_SYMLINKS = 0x00000010;
+ const MOVE_MOUNT_T_SYMLINKS = 0x0000_0010;
/// `MOVE_MOUNT_T_AUTOMOUNTS`
- const MOVE_MOUNT_T_AUTOMOUNTS = 0x00000020;
+ const MOVE_MOUNT_T_AUTOMOUNTS = 0x0000_0020;
/// `MOVE_MOUNT_T_EMPTY_PATH`
- const MOVE_MOUNT_T_EMPTY_PATH = 0x00000040;
+ const MOVE_MOUNT_T_EMPTY_PATH = 0x0000_0040;
/// `MOVE_MOUNT__MASK`
- const MOVE_MOUNT_SET_GROUP = 0x00000100;
+ const MOVE_MOUNT_SET_GROUP = 0x0000_0100;
// TODO: add when linux 6.5 is released
// /// `MOVE_MOUNT_BENEATH`
- // const MOVE_MOUNT_BENEATH = 0x00000200;
+ // const MOVE_MOUNT_BENEATH = 0x0000_0200;
/// `MOVE_MOUNT__MASK`
- const MOVE_MOUNT__MASK = 0x00000377;
+ const MOVE_MOUNT__MASK = 0x0000_0377;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -266,7 +266,7 @@ bitflags! {
/// `AT_SYMLINK_NOFOLLOW`
const AT_SYMLINK_NOFOLLOW = c::AT_SYMLINK_NOFOLLOW as c::c_uint;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -281,18 +281,18 @@ bitflags! {
#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
pub struct FsPickFlags: c::c_uint {
/// `FSPICK_CLOEXEC`
- const FSPICK_CLOEXEC = 0x00000001;
+ const FSPICK_CLOEXEC = 0x0000_0001;
/// `FSPICK_SYMLINK_NOFOLLOW`
- const FSPICK_SYMLINK_NOFOLLOW = 0x00000002;
+ const FSPICK_SYMLINK_NOFOLLOW = 0x0000_0002;
/// `FSPICK_NO_AUTOMOUNT`
- const FSPICK_NO_AUTOMOUNT = 0x00000004;
+ const FSPICK_NO_AUTOMOUNT = 0x0000_0004;
/// `FSPICK_EMPTY_PATH`
- const FSPICK_EMPTY_PATH = 0x00000008;
+ const FSPICK_EMPTY_PATH = 0x0000_0008;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -318,7 +318,7 @@ bitflags! {
/// `MS_REC`
const REC = c::MS_REC;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -331,7 +331,7 @@ bitflags! {
const REMOUNT = c::MS_REMOUNT;
const MOVE = c::MS_MOVE;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/backend/libc/net/addr.rs b/vendor/rustix/src/backend/libc/net/addr.rs
index 6a140d767..719a549b1 100644
--- a/vendor/rustix/src/backend/libc/net/addr.rs
+++ b/vendor/rustix/src/backend/libc/net/addr.rs
@@ -78,6 +78,8 @@ impl SocketAddrUnix {
c::sockaddr_un {
#[cfg(any(bsd, target_os = "aix", target_os = "haiku", target_os = "nto"))]
sun_len: 0,
+ #[cfg(target_os = "vita")]
+ ss_len: 0,
sun_family: c::AF_UNIX as _,
#[cfg(any(bsd, target_os = "nto"))]
sun_path: [0; 104],
@@ -210,12 +212,15 @@ pub(crate) fn offsetof_sun_path() -> usize {
let z = c::sockaddr_un {
#[cfg(any(bsd, target_os = "aix", target_os = "haiku", target_os = "nto"))]
sun_len: 0_u8,
+ #[cfg(target_os = "vita")]
+ ss_len: 0,
#[cfg(any(
bsd,
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
- target_os = "nto"
+ target_os = "nto",
+ target_os = "vita"
))]
sun_family: 0_u8,
#[cfg(not(any(
@@ -223,7 +228,8 @@ pub(crate) fn offsetof_sun_path() -> usize {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
- target_os = "nto"
+ target_os = "nto",
+ target_os = "vita"
)))]
sun_family: 0_u16,
#[cfg(any(bsd, target_os = "nto"))]
diff --git a/vendor/rustix/src/backend/libc/net/ext.rs b/vendor/rustix/src/backend/libc/net/ext.rs
index eb7c20d7d..2e11c051d 100644
--- a/vendor/rustix/src/backend/libc/net/ext.rs
+++ b/vendor/rustix/src/backend/libc/net/ext.rs
@@ -83,7 +83,8 @@ pub(crate) const fn sockaddr_in6_new(
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
- target_os = "nto"
+ target_os = "nto",
+ target_os = "vita"
))]
sin6_len: u8,
sin6_family: c::sa_family_t,
@@ -98,7 +99,8 @@ pub(crate) const fn sockaddr_in6_new(
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
- target_os = "nto"
+ target_os = "nto",
+ target_os = "vita"
))]
sin6_len,
sin6_family,
@@ -108,6 +110,8 @@ pub(crate) const fn sockaddr_in6_new(
sin6_scope_id,
#[cfg(solarish)]
__sin6_src_id: 0,
+ #[cfg(target_os = "vita")]
+ sin6_vport: 0,
}
}
diff --git a/vendor/rustix/src/backend/libc/net/mod.rs b/vendor/rustix/src/backend/libc/net/mod.rs
index 65c7d0654..d7ab68d52 100644
--- a/vendor/rustix/src/backend/libc/net/mod.rs
+++ b/vendor/rustix/src/backend/libc/net/mod.rs
@@ -1,8 +1,16 @@
pub(crate) mod addr;
pub(crate) mod ext;
-#[cfg(not(any(windows, target_os = "espidf", target_os = "redox", target_os = "wasi")))]
+#[cfg(not(any(
+ windows,
+ target_os = "espidf",
+ target_os = "redox",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
pub(crate) mod msghdr;
pub(crate) mod read_sockaddr;
pub(crate) mod send_recv;
+#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
+pub(crate) mod sockopt;
pub(crate) mod syscalls;
pub(crate) mod write_sockaddr;
diff --git a/vendor/rustix/src/backend/libc/net/msghdr.rs b/vendor/rustix/src/backend/libc/net/msghdr.rs
index 2ccd7f20c..dd9b156a5 100644
--- a/vendor/rustix/src/backend/libc/net/msghdr.rs
+++ b/vendor/rustix/src/backend/libc/net/msghdr.rs
@@ -114,7 +114,7 @@ pub(crate) fn with_unix_msghdr<R>(
) -> R {
f({
let mut h = zero_msghdr();
- h.msg_name = as_ptr(addr) as _;
+ h.msg_name = as_ptr(&addr.unix) as _;
h.msg_namelen = addr.addr_len();
h.msg_iov = iov.as_ptr() as _;
h.msg_iovlen = msg_iov_len(iov.len());
diff --git a/vendor/rustix/src/backend/libc/net/read_sockaddr.rs b/vendor/rustix/src/backend/libc/net/read_sockaddr.rs
index 604f24928..6da7a50dd 100644
--- a/vendor/rustix/src/backend/libc/net/read_sockaddr.rs
+++ b/vendor/rustix/src/backend/libc/net/read_sockaddr.rs
@@ -1,5 +1,5 @@
-//! The BSD sockets API requires us to read the `ss_family` field before
-//! we can interpret the rest of a `sockaddr` produced by the kernel.
+//! The BSD sockets API requires us to read the `ss_family` field before we can
+//! interpret the rest of a `sockaddr` produced by the kernel.
#[cfg(unix)]
use super::addr::SocketAddrUnix;
@@ -14,14 +14,40 @@ use core::mem::size_of;
// This must match the header of `sockaddr`.
#[repr(C)]
struct sockaddr_header {
- #[cfg(any(bsd, target_os = "haiku"))]
+ #[cfg(any(
+ bsd,
+ target_os = "aix",
+ target_os = "espidf",
+ target_os = "haiku",
+ target_os = "nto",
+ target_os = "vita"
+ ))]
sa_len: u8,
- #[cfg(any(bsd, target_os = "haiku"))]
+ #[cfg(any(
+ bsd,
+ target_os = "aix",
+ target_os = "espidf",
+ target_os = "haiku",
+ target_os = "nto",
+ target_os = "vita"
+ ))]
ss_family: u8,
- #[cfg(not(any(bsd, target_os = "haiku")))]
+ #[cfg(not(any(
+ bsd,
+ target_os = "aix",
+ target_os = "espidf",
+ target_os = "haiku",
+ target_os = "nto",
+ target_os = "vita"
+ )))]
ss_family: u16,
}
+/// Read the `ss_family` field from a socket address returned from the OS.
+///
+/// # Safety
+///
+/// `storage` must point to a valid socket address returned from the OS.
#[inline]
unsafe fn read_ss_family(storage: *const c::sockaddr_storage) -> u16 {
// Assert that we know the layout of `sockaddr`.
@@ -31,7 +57,8 @@ unsafe fn read_ss_family(storage: *const c::sockaddr_storage) -> u16 {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
- target_os = "nto"
+ target_os = "nto",
+ target_os = "vita"
))]
sa_len: 0_u8,
#[cfg(any(
@@ -39,7 +66,8 @@ unsafe fn read_ss_family(storage: *const c::sockaddr_storage) -> u16 {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
- target_os = "nto"
+ target_os = "nto",
+ target_os = "vita"
))]
sa_family: 0_u8,
#[cfg(not(any(
@@ -47,7 +75,8 @@ unsafe fn read_ss_family(storage: *const c::sockaddr_storage) -> u16 {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
- target_os = "nto"
+ target_os = "nto",
+ target_os = "vita"
)))]
sa_family: 0_u16,
#[cfg(not(target_os = "haiku"))]
@@ -138,10 +167,10 @@ pub(crate) unsafe fn read_sockaddr(
// Otherwise we expect a NUL-terminated filesystem path.
// Trim off unused bytes from the end of `path_bytes`.
- let path_bytes = if cfg!(target_os = "freebsd") {
- // FreeBSD sometimes sets the length to longer than the length
- // of the NUL-terminated string. Find the NUL and truncate the
- // string accordingly.
+ let path_bytes = if cfg!(any(solarish, target_os = "freebsd")) {
+ // FreeBSD and illumos sometimes set the length to longer
+ // than the length of the NUL-terminated string. Find the
+ // NUL and truncate the string accordingly.
&decode.sun_path[..decode
.sun_path
.iter()
@@ -168,6 +197,11 @@ pub(crate) unsafe fn read_sockaddr(
}
}
+/// Read an optional socket address returned from the OS.
+///
+/// # Safety
+///
+/// `storage` must point to a valid socket address returned from the OS.
pub(crate) unsafe fn maybe_read_sockaddr_os(
storage: *const c::sockaddr_storage,
len: usize,
@@ -185,6 +219,11 @@ pub(crate) unsafe fn maybe_read_sockaddr_os(
}
}
+/// Read a socket address returned from the OS.
+///
+/// # Safety
+///
+/// `storage` must point to a valid socket address returned from the OS.
pub(crate) unsafe fn read_sockaddr_os(
storage: *const c::sockaddr_storage,
len: usize,
@@ -250,10 +289,10 @@ unsafe fn inner_read_sockaddr_os(
assert_eq!(decode.sun_path[len - 1 - offsetof_sun_path], 0);
let path_bytes = &decode.sun_path[..len - 1 - offsetof_sun_path];
- // FreeBSD sometimes sets the length to longer than the length
- // of the NUL-terminated string. Find the NUL and truncate the
- // string accordingly.
- #[cfg(target_os = "freebsd")]
+ // FreeBSD and illumos sometimes set the length to longer than
+ // the length of the NUL-terminated string. Find the NUL and
+ // truncate the string accordingly.
+ #[cfg(any(solarish, target_os = "freebsd"))]
let path_bytes = &path_bytes[..path_bytes.iter().position(|b| *b == 0).unwrap()];
SocketAddrAny::Unix(
diff --git a/vendor/rustix/src/backend/libc/net/send_recv.rs b/vendor/rustix/src/backend/libc/net/send_recv.rs
index 76dc97e78..5dc60ddcd 100644
--- a/vendor/rustix/src/backend/libc/net/send_recv.rs
+++ b/vendor/rustix/src/backend/libc/net/send_recv.rs
@@ -2,7 +2,8 @@ use crate::backend::c;
use bitflags::bitflags;
bitflags! {
- /// `MSG_* flags for use with [`send`], [`send_to`], and related functions.
+ /// `MSG_*` flags for use with [`send`], [`send_to`], and related
+ /// functions.
///
/// [`send`]: crate::net::send
/// [`sendto`]: crate::net::sendto
@@ -18,6 +19,7 @@ bitflags! {
target_os = "espidf",
target_os = "nto",
target_os = "haiku",
+ target_os = "vita",
)))]
const CONFIRM = bitcast!(c::MSG_CONFIRM);
/// `MSG_DONTROUTE`
@@ -36,21 +38,23 @@ bitflags! {
target_os = "aix",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
const MORE = bitcast!(c::MSG_MORE);
- #[cfg(not(any(apple, windows)))]
+ #[cfg(not(any(apple, windows, target_os = "vita")))]
/// `MSG_NOSIGNAL`
const NOSIGNAL = bitcast!(c::MSG_NOSIGNAL);
/// `MSG_OOB`
const OOB = bitcast!(c::MSG_OOB);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
bitflags! {
- /// `MSG_* flags for use with [`recv`], [`recvfrom`], and related functions.
+ /// `MSG_*` flags for use with [`recv`], [`recvfrom`], and related
+ /// functions.
///
/// [`recv`]: crate::net::recv
/// [`recvfrom`]: crate::net::recvfrom
@@ -65,6 +69,7 @@ bitflags! {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
/// `MSG_CMSG_CLOEXEC`
const CMSG_CLOEXEC = bitcast!(c::MSG_CMSG_CLOEXEC);
@@ -80,6 +85,7 @@ bitflags! {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
const ERRQUEUE = bitcast!(c::MSG_ERRQUEUE);
/// `MSG_OOB`
@@ -91,7 +97,7 @@ bitflags! {
/// `MSG_WAITALL`
const WAITALL = bitcast!(c::MSG_WAITALL);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/backend/libc/net/sockopt.rs b/vendor/rustix/src/backend/libc/net/sockopt.rs
new file mode 100644
index 000000000..cff2ca288
--- /dev/null
+++ b/vendor/rustix/src/backend/libc/net/sockopt.rs
@@ -0,0 +1,1065 @@
+//! libc syscalls supporting `rustix::net::sockopt`.
+
+use super::ext::{in6_addr_new, in_addr_new};
+use crate::backend::c;
+use crate::backend::conv::{borrowed_fd, ret};
+use crate::fd::BorrowedFd;
+#[cfg(feature = "alloc")]
+#[cfg(any(
+ linux_like,
+ target_os = "freebsd",
+ target_os = "fuchsia",
+ target_os = "illumos"
+))]
+use crate::ffi::CStr;
+use crate::io;
+use crate::net::sockopt::Timeout;
+#[cfg(not(any(
+ apple,
+ windows,
+ target_os = "aix",
+ target_os = "dragonfly",
+ target_os = "emscripten",
+ target_os = "espidf",
+ target_os = "haiku",
+ target_os = "netbsd",
+ target_os = "nto",
+ target_os = "vita",
+)))]
+use crate::net::AddressFamily;
+#[cfg(any(
+ linux_kernel,
+ target_os = "freebsd",
+ target_os = "fuchsia",
+ target_os = "openbsd",
+ target_os = "redox",
+ target_env = "newlib"
+))]
+use crate::net::Protocol;
+#[cfg(any(
+ linux_kernel,
+ target_os = "freebsd",
+ target_os = "fuchsia",
+ target_os = "openbsd",
+ target_os = "redox",
+ target_env = "newlib"
+))]
+use crate::net::RawProtocol;
+use crate::net::{Ipv4Addr, Ipv6Addr, SocketType};
+#[cfg(any(linux_kernel, target_os = "fuchsia"))]
+use crate::net::{SocketAddrAny, SocketAddrStorage, SocketAddrV4};
+#[cfg(linux_kernel)]
+use crate::net::{SocketAddrV6, UCred};
+use crate::utils::as_mut_ptr;
+#[cfg(feature = "alloc")]
+#[cfg(any(
+ linux_like,
+ target_os = "freebsd",
+ target_os = "fuchsia",
+ target_os = "illumos"
+))]
+use alloc::borrow::ToOwned;
+#[cfg(feature = "alloc")]
+#[cfg(any(
+ linux_like,
+ target_os = "freebsd",
+ target_os = "fuchsia",
+ target_os = "illumos"
+))]
+use alloc::string::String;
+#[cfg(apple)]
+use c::TCP_KEEPALIVE as TCP_KEEPIDLE;
+#[cfg(not(any(apple, target_os = "openbsd", target_os = "haiku", target_os = "nto")))]
+use c::TCP_KEEPIDLE;
+use core::mem::{size_of, MaybeUninit};
+use core::time::Duration;
+#[cfg(windows)]
+use windows_sys::Win32::Foundation::BOOL;
+
+#[inline]
+fn getsockopt<T: Copy>(fd: BorrowedFd<'_>, level: i32, optname: i32) -> io::Result<T> {
+ let mut optlen = core::mem::size_of::<T>().try_into().unwrap();
+ debug_assert!(
+ optlen as usize >= core::mem::size_of::<c::c_int>(),
+ "Socket APIs don't ever use `bool` directly"
+ );
+
+ let mut value = MaybeUninit::<T>::zeroed();
+ getsockopt_raw(fd, level, optname, &mut value, &mut optlen)?;
+
+ // On Windows at least, `getsockopt` has been observed writing 1
+ // byte on at least (`IPPROTO_TCP`, `TCP_NODELAY`), even though
+ // Windows' documentation says that should write a 4-byte `BOOL`.
+ // So, we initialize the memory to zeros above, and just assert
+ // that `getsockopt` doesn't write too many bytes here.
+ assert!(
+ optlen as usize <= size_of::<T>(),
+ "unexpected getsockopt size"
+ );
+
+ unsafe { Ok(value.assume_init()) }
+}
+
+#[inline]
+fn getsockopt_raw<T>(
+ fd: BorrowedFd<'_>,
+ level: i32,
+ optname: i32,
+ value: &mut MaybeUninit<T>,
+ optlen: &mut c::socklen_t,
+) -> io::Result<()> {
+ unsafe {
+ ret(c::getsockopt(
+ borrowed_fd(fd),
+ level,
+ optname,
+ as_mut_ptr(value).cast(),
+ optlen,
+ ))
+ }
+}
+
+#[inline]
+fn setsockopt<T: Copy>(fd: BorrowedFd<'_>, level: i32, optname: i32, value: T) -> io::Result<()> {
+ let optlen = core::mem::size_of::<T>().try_into().unwrap();
+ debug_assert!(
+ optlen as usize >= core::mem::size_of::<c::c_int>(),
+ "Socket APIs don't ever use `bool` directly"
+ );
+ setsockopt_raw(fd, level, optname, &value, optlen)
+}
+
+#[inline]
+fn setsockopt_raw<T>(
+ fd: BorrowedFd<'_>,
+ level: i32,
+ optname: i32,
+ ptr: *const T,
+ optlen: c::socklen_t,
+) -> io::Result<()> {
+ unsafe {
+ ret(c::setsockopt(
+ borrowed_fd(fd),
+ level,
+ optname,
+ ptr.cast(),
+ optlen,
+ ))
+ }
+}
+
+#[inline]
+pub(crate) fn get_socket_type(fd: BorrowedFd<'_>) -> io::Result<SocketType> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_TYPE)
+}
+
+#[inline]
+pub(crate) fn set_socket_reuseaddr(fd: BorrowedFd<'_>, reuseaddr: bool) -> io::Result<()> {
+ setsockopt(fd, c::SOL_SOCKET, c::SO_REUSEADDR, from_bool(reuseaddr))
+}
+
+#[inline]
+pub(crate) fn get_socket_reuseaddr(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_REUSEADDR).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn set_socket_broadcast(fd: BorrowedFd<'_>, broadcast: bool) -> io::Result<()> {
+ setsockopt(fd, c::SOL_SOCKET, c::SO_BROADCAST, from_bool(broadcast))
+}
+
+#[inline]
+pub(crate) fn get_socket_broadcast(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_BROADCAST).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn set_socket_linger(fd: BorrowedFd<'_>, linger: Option<Duration>) -> io::Result<()> {
+ // Convert `linger` to seconds, rounding up.
+ let l_linger = if let Some(linger) = linger {
+ duration_to_secs(linger)?
+ } else {
+ 0
+ };
+ let linger = c::linger {
+ l_onoff: linger.is_some().into(),
+ l_linger,
+ };
+ setsockopt(fd, c::SOL_SOCKET, c::SO_LINGER, linger)
+}
+
+#[inline]
+pub(crate) fn get_socket_linger(fd: BorrowedFd<'_>) -> io::Result<Option<Duration>> {
+ let linger: c::linger = getsockopt(fd, c::SOL_SOCKET, c::SO_LINGER)?;
+ Ok((linger.l_onoff != 0).then(|| Duration::from_secs(linger.l_linger as u64)))
+}
+
+#[cfg(linux_kernel)]
+#[inline]
+pub(crate) fn set_socket_passcred(fd: BorrowedFd<'_>, passcred: bool) -> io::Result<()> {
+ setsockopt(fd, c::SOL_SOCKET, c::SO_PASSCRED, from_bool(passcred))
+}
+
+#[cfg(linux_kernel)]
+#[inline]
+pub(crate) fn get_socket_passcred(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_PASSCRED).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn set_socket_timeout(
+ fd: BorrowedFd<'_>,
+ id: Timeout,
+ timeout: Option<Duration>,
+) -> io::Result<()> {
+ let optname = match id {
+ Timeout::Recv => c::SO_RCVTIMEO,
+ Timeout::Send => c::SO_SNDTIMEO,
+ };
+
+ #[cfg(not(windows))]
+ let timeout = match timeout {
+ Some(timeout) => {
+ if timeout == Duration::ZERO {
+ return Err(io::Errno::INVAL);
+ }
+
+ // Rust's musl libc bindings deprecated `time_t` while they
+ // transition to 64-bit `time_t`. What we want here is just
+ // “whatever type `timeval`'s `tv_sec` isâ€, so we're ok using
+ // the deprecated type.
+ #[allow(deprecated)]
+ let tv_sec = timeout.as_secs().try_into().unwrap_or(c::time_t::MAX);
+
+ // `subsec_micros` rounds down, so we use `subsec_nanos` and
+ // manually round up.
+ let mut timeout = c::timeval {
+ tv_sec,
+ tv_usec: ((timeout.subsec_nanos() + 999) / 1000) as _,
+ };
+ if timeout.tv_sec == 0 && timeout.tv_usec == 0 {
+ timeout.tv_usec = 1;
+ }
+ timeout
+ }
+ None => c::timeval {
+ tv_sec: 0,
+ tv_usec: 0,
+ },
+ };
+
+ #[cfg(windows)]
+ let timeout: u32 = match timeout {
+ Some(timeout) => {
+ if timeout == Duration::ZERO {
+ return Err(io::Errno::INVAL);
+ }
+
+ // `as_millis` rounds down, so we use `as_nanos` and
+ // manually round up.
+ let mut timeout: u32 = ((timeout.as_nanos() + 999_999) / 1_000_000)
+ .try_into()
+ .map_err(|_convert_err| io::Errno::INVAL)?;
+ if timeout == 0 {
+ timeout = 1;
+ }
+ timeout
+ }
+ None => 0,
+ };
+
+ setsockopt(fd, c::SOL_SOCKET, optname, timeout)
+}
+
+#[inline]
+pub(crate) fn get_socket_timeout(fd: BorrowedFd<'_>, id: Timeout) -> io::Result<Option<Duration>> {
+ let optname = match id {
+ Timeout::Recv => c::SO_RCVTIMEO,
+ Timeout::Send => c::SO_SNDTIMEO,
+ };
+
+ #[cfg(not(windows))]
+ {
+ let timeout: c::timeval = getsockopt(fd, c::SOL_SOCKET, optname)?;
+ if timeout.tv_sec == 0 && timeout.tv_usec == 0 {
+ Ok(None)
+ } else {
+ Ok(Some(
+ Duration::from_secs(timeout.tv_sec as u64)
+ + Duration::from_micros(timeout.tv_usec as u64),
+ ))
+ }
+ }
+
+ #[cfg(windows)]
+ {
+ let timeout: u32 = getsockopt(fd, c::SOL_SOCKET, optname)?;
+ if timeout == 0 {
+ Ok(None)
+ } else {
+ Ok(Some(Duration::from_millis(timeout as u64)))
+ }
+ }
+}
+
+#[cfg(any(apple, freebsdlike, target_os = "netbsd"))]
+#[inline]
+pub(crate) fn get_socket_nosigpipe(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_NOSIGPIPE).map(to_bool)
+}
+
+#[cfg(any(apple, freebsdlike, target_os = "netbsd"))]
+#[inline]
+pub(crate) fn set_socket_nosigpipe(fd: BorrowedFd<'_>, val: bool) -> io::Result<()> {
+ setsockopt(fd, c::SOL_SOCKET, c::SO_NOSIGPIPE, from_bool(val))
+}
+
+#[inline]
+pub(crate) fn get_socket_error(fd: BorrowedFd<'_>) -> io::Result<Result<(), io::Errno>> {
+ let err: c::c_int = getsockopt(fd, c::SOL_SOCKET, c::SO_ERROR)?;
+ Ok(if err == 0 {
+ Ok(())
+ } else {
+ Err(io::Errno::from_raw_os_error(err))
+ })
+}
+
+#[inline]
+pub(crate) fn set_socket_keepalive(fd: BorrowedFd<'_>, keepalive: bool) -> io::Result<()> {
+ setsockopt(fd, c::SOL_SOCKET, c::SO_KEEPALIVE, from_bool(keepalive))
+}
+
+#[inline]
+pub(crate) fn get_socket_keepalive(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_KEEPALIVE).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn set_socket_recv_buffer_size(fd: BorrowedFd<'_>, size: usize) -> io::Result<()> {
+ let size: c::c_int = size.try_into().map_err(|_| io::Errno::INVAL)?;
+ setsockopt(fd, c::SOL_SOCKET, c::SO_RCVBUF, size)
+}
+
+#[inline]
+pub(crate) fn get_socket_recv_buffer_size(fd: BorrowedFd<'_>) -> io::Result<usize> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_RCVBUF).map(|size: u32| size as usize)
+}
+
+#[inline]
+pub(crate) fn set_socket_send_buffer_size(fd: BorrowedFd<'_>, size: usize) -> io::Result<()> {
+ let size: c::c_int = size.try_into().map_err(|_| io::Errno::INVAL)?;
+ setsockopt(fd, c::SOL_SOCKET, c::SO_SNDBUF, size)
+}
+
+#[inline]
+pub(crate) fn get_socket_send_buffer_size(fd: BorrowedFd<'_>) -> io::Result<usize> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_SNDBUF).map(|size: u32| size as usize)
+}
+
+#[inline]
+#[cfg(not(any(
+ apple,
+ windows,
+ target_os = "aix",
+ target_os = "dragonfly",
+ target_os = "emscripten",
+ target_os = "espidf",
+ target_os = "haiku",
+ target_os = "netbsd",
+ target_os = "nto",
+ target_os = "vita",
+)))]
+pub(crate) fn get_socket_domain(fd: BorrowedFd<'_>) -> io::Result<AddressFamily> {
+ let domain: c::c_int = getsockopt(fd, c::SOL_SOCKET, c::SO_DOMAIN)?;
+ Ok(AddressFamily(
+ domain.try_into().map_err(|_| io::Errno::OPNOTSUPP)?,
+ ))
+}
+
+#[inline]
+#[cfg(not(apple))] // Apple platforms declare the constant, but do not actually implement it.
+pub(crate) fn get_socket_acceptconn(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_ACCEPTCONN).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn set_socket_oobinline(fd: BorrowedFd<'_>, value: bool) -> io::Result<()> {
+ setsockopt(fd, c::SOL_SOCKET, c::SO_OOBINLINE, from_bool(value))
+}
+
+#[inline]
+pub(crate) fn get_socket_oobinline(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_OOBINLINE).map(to_bool)
+}
+
+#[cfg(not(any(solarish, windows)))]
+#[inline]
+pub(crate) fn set_socket_reuseport(fd: BorrowedFd<'_>, value: bool) -> io::Result<()> {
+ setsockopt(fd, c::SOL_SOCKET, c::SO_REUSEPORT, from_bool(value))
+}
+
+#[cfg(not(any(solarish, windows)))]
+#[inline]
+pub(crate) fn get_socket_reuseport(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_REUSEPORT).map(to_bool)
+}
+
+#[cfg(target_os = "freebsd")]
+#[inline]
+pub(crate) fn set_socket_reuseport_lb(fd: BorrowedFd<'_>, value: bool) -> io::Result<()> {
+ setsockopt(fd, c::SOL_SOCKET, c::SO_REUSEPORT_LB, from_bool(value))
+}
+
+#[cfg(target_os = "freebsd")]
+#[inline]
+pub(crate) fn get_socket_reuseport_lb(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_REUSEPORT_LB).map(to_bool)
+}
+
+#[cfg(any(
+ linux_kernel,
+ target_os = "freebsd",
+ target_os = "fuchsia",
+ target_os = "openbsd",
+ target_os = "redox",
+ target_env = "newlib"
+))]
+#[inline]
+pub(crate) fn get_socket_protocol(fd: BorrowedFd<'_>) -> io::Result<Option<Protocol>> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_PROTOCOL)
+ .map(|raw| RawProtocol::new(raw).map(Protocol::from_raw))
+}
+
+#[cfg(target_os = "linux")]
+#[inline]
+pub(crate) fn get_socket_cookie(fd: BorrowedFd<'_>) -> io::Result<u64> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_COOKIE)
+}
+
+#[cfg(target_os = "linux")]
+#[inline]
+pub(crate) fn get_socket_incoming_cpu(fd: BorrowedFd<'_>) -> io::Result<u32> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_INCOMING_CPU)
+}
+
+#[cfg(target_os = "linux")]
+#[inline]
+pub(crate) fn set_socket_incoming_cpu(fd: BorrowedFd<'_>, value: u32) -> io::Result<()> {
+ setsockopt(fd, c::SOL_SOCKET, c::SO_INCOMING_CPU, value)
+}
+
+#[inline]
+pub(crate) fn set_ip_ttl(fd: BorrowedFd<'_>, ttl: u32) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_IP, c::IP_TTL, ttl)
+}
+
+#[inline]
+pub(crate) fn get_ip_ttl(fd: BorrowedFd<'_>) -> io::Result<u32> {
+ getsockopt(fd, c::IPPROTO_IP, c::IP_TTL)
+}
+
+#[inline]
+pub(crate) fn set_ipv6_v6only(fd: BorrowedFd<'_>, only_v6: bool) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_IPV6, c::IPV6_V6ONLY, from_bool(only_v6))
+}
+
+#[inline]
+pub(crate) fn get_ipv6_v6only(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::IPPROTO_IPV6, c::IPV6_V6ONLY).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn set_ip_multicast_loop(fd: BorrowedFd<'_>, multicast_loop: bool) -> io::Result<()> {
+ setsockopt(
+ fd,
+ c::IPPROTO_IP,
+ c::IP_MULTICAST_LOOP,
+ from_bool(multicast_loop),
+ )
+}
+
+#[inline]
+pub(crate) fn get_ip_multicast_loop(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::IPPROTO_IP, c::IP_MULTICAST_LOOP).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn set_ip_multicast_ttl(fd: BorrowedFd<'_>, multicast_ttl: u32) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_IP, c::IP_MULTICAST_TTL, multicast_ttl)
+}
+
+#[inline]
+pub(crate) fn get_ip_multicast_ttl(fd: BorrowedFd<'_>) -> io::Result<u32> {
+ getsockopt(fd, c::IPPROTO_IP, c::IP_MULTICAST_TTL)
+}
+
+#[inline]
+pub(crate) fn set_ipv6_multicast_loop(fd: BorrowedFd<'_>, multicast_loop: bool) -> io::Result<()> {
+ setsockopt(
+ fd,
+ c::IPPROTO_IPV6,
+ c::IPV6_MULTICAST_LOOP,
+ from_bool(multicast_loop),
+ )
+}
+
+#[inline]
+pub(crate) fn get_ipv6_multicast_loop(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::IPPROTO_IPV6, c::IPV6_MULTICAST_LOOP).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn set_ipv6_multicast_hops(fd: BorrowedFd<'_>, multicast_hops: u32) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_IP, c::IPV6_MULTICAST_HOPS, multicast_hops)
+}
+
+#[inline]
+pub(crate) fn get_ipv6_multicast_hops(fd: BorrowedFd<'_>) -> io::Result<u32> {
+ getsockopt(fd, c::IPPROTO_IP, c::IPV6_MULTICAST_HOPS)
+}
+
+#[inline]
+pub(crate) fn set_ip_add_membership(
+ fd: BorrowedFd<'_>,
+ multiaddr: &Ipv4Addr,
+ interface: &Ipv4Addr,
+) -> io::Result<()> {
+ let mreq = to_ip_mreq(multiaddr, interface);
+ setsockopt(fd, c::IPPROTO_IP, c::IP_ADD_MEMBERSHIP, mreq)
+}
+
+#[cfg(any(
+ apple,
+ freebsdlike,
+ linux_like,
+ target_os = "fuchsia",
+ target_os = "openbsd"
+))]
+#[inline]
+pub(crate) fn set_ip_add_membership_with_ifindex(
+ fd: BorrowedFd<'_>,
+ multiaddr: &Ipv4Addr,
+ address: &Ipv4Addr,
+ ifindex: i32,
+) -> io::Result<()> {
+ let mreqn = to_ip_mreqn(multiaddr, address, ifindex);
+ setsockopt(fd, c::IPPROTO_IP, c::IP_ADD_MEMBERSHIP, mreqn)
+}
+
+#[cfg(any(apple, freebsdlike, linux_like, solarish, target_os = "aix"))]
+#[inline]
+pub(crate) fn set_ip_add_source_membership(
+ fd: BorrowedFd<'_>,
+ multiaddr: &Ipv4Addr,
+ interface: &Ipv4Addr,
+ sourceaddr: &Ipv4Addr,
+) -> io::Result<()> {
+ let mreq_source = to_imr_source(multiaddr, interface, sourceaddr);
+ setsockopt(fd, c::IPPROTO_IP, c::IP_ADD_SOURCE_MEMBERSHIP, mreq_source)
+}
+
+#[cfg(any(apple, freebsdlike, linux_like, solarish, target_os = "aix"))]
+#[inline]
+pub(crate) fn set_ip_drop_source_membership(
+ fd: BorrowedFd<'_>,
+ multiaddr: &Ipv4Addr,
+ interface: &Ipv4Addr,
+ sourceaddr: &Ipv4Addr,
+) -> io::Result<()> {
+ let mreq_source = to_imr_source(multiaddr, interface, sourceaddr);
+ setsockopt(fd, c::IPPROTO_IP, c::IP_DROP_SOURCE_MEMBERSHIP, mreq_source)
+}
+
+#[inline]
+pub(crate) fn set_ipv6_add_membership(
+ fd: BorrowedFd<'_>,
+ multiaddr: &Ipv6Addr,
+ interface: u32,
+) -> io::Result<()> {
+ #[cfg(not(any(
+ bsd,
+ solarish,
+ target_os = "haiku",
+ target_os = "l4re",
+ target_os = "nto"
+ )))]
+ use c::IPV6_ADD_MEMBERSHIP;
+ #[cfg(any(
+ bsd,
+ solarish,
+ target_os = "haiku",
+ target_os = "l4re",
+ target_os = "nto"
+ ))]
+ use c::IPV6_JOIN_GROUP as IPV6_ADD_MEMBERSHIP;
+
+ let mreq = to_ipv6mr(multiaddr, interface);
+ setsockopt(fd, c::IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP, mreq)
+}
+
+#[inline]
+pub(crate) fn set_ip_drop_membership(
+ fd: BorrowedFd<'_>,
+ multiaddr: &Ipv4Addr,
+ interface: &Ipv4Addr,
+) -> io::Result<()> {
+ let mreq = to_ip_mreq(multiaddr, interface);
+ setsockopt(fd, c::IPPROTO_IP, c::IP_DROP_MEMBERSHIP, mreq)
+}
+
+#[cfg(any(
+ apple,
+ freebsdlike,
+ linux_like,
+ target_os = "fuchsia",
+ target_os = "openbsd"
+))]
+#[inline]
+pub(crate) fn set_ip_drop_membership_with_ifindex(
+ fd: BorrowedFd<'_>,
+ multiaddr: &Ipv4Addr,
+ address: &Ipv4Addr,
+ ifindex: i32,
+) -> io::Result<()> {
+ let mreqn = to_ip_mreqn(multiaddr, address, ifindex);
+ setsockopt(fd, c::IPPROTO_IP, c::IP_DROP_MEMBERSHIP, mreqn)
+}
+
+#[inline]
+pub(crate) fn set_ipv6_drop_membership(
+ fd: BorrowedFd<'_>,
+ multiaddr: &Ipv6Addr,
+ interface: u32,
+) -> io::Result<()> {
+ #[cfg(not(any(
+ bsd,
+ solarish,
+ target_os = "haiku",
+ target_os = "l4re",
+ target_os = "nto"
+ )))]
+ use c::IPV6_DROP_MEMBERSHIP;
+ #[cfg(any(
+ bsd,
+ solarish,
+ target_os = "haiku",
+ target_os = "l4re",
+ target_os = "nto"
+ ))]
+ use c::IPV6_LEAVE_GROUP as IPV6_DROP_MEMBERSHIP;
+
+ let mreq = to_ipv6mr(multiaddr, interface);
+ setsockopt(fd, c::IPPROTO_IPV6, IPV6_DROP_MEMBERSHIP, mreq)
+}
+
+#[inline]
+pub(crate) fn get_ipv6_unicast_hops(fd: BorrowedFd<'_>) -> io::Result<u8> {
+ getsockopt(fd, c::IPPROTO_IPV6, c::IPV6_UNICAST_HOPS).map(|hops: c::c_int| hops as u8)
+}
+
+#[inline]
+pub(crate) fn set_ipv6_unicast_hops(fd: BorrowedFd<'_>, hops: Option<u8>) -> io::Result<()> {
+ let hops = match hops {
+ Some(hops) => hops as c::c_int,
+ None => -1,
+ };
+ setsockopt(fd, c::IPPROTO_IPV6, c::IPV6_UNICAST_HOPS, hops)
+}
+
+#[cfg(any(
+ bsd,
+ linux_like,
+ target_os = "aix",
+ target_os = "fuchsia",
+ target_os = "haiku",
+ target_os = "nto",
+ target_env = "newlib"
+))]
+#[inline]
+pub(crate) fn set_ip_tos(fd: BorrowedFd<'_>, value: u8) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_IP, c::IP_TOS, i32::from(value))
+}
+
+#[cfg(any(
+ bsd,
+ linux_like,
+ target_os = "aix",
+ target_os = "fuchsia",
+ target_os = "haiku",
+ target_os = "nto",
+ target_env = "newlib"
+))]
+#[inline]
+pub(crate) fn get_ip_tos(fd: BorrowedFd<'_>) -> io::Result<u8> {
+ let value: i32 = getsockopt(fd, c::IPPROTO_IP, c::IP_TOS)?;
+ Ok(value as u8)
+}
+
+#[cfg(any(apple, linux_like, target_os = "freebsd", target_os = "fuchsia"))]
+#[inline]
+pub(crate) fn set_ip_recvtos(fd: BorrowedFd<'_>, value: bool) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_IP, c::IP_RECVTOS, from_bool(value))
+}
+
+#[cfg(any(apple, linux_like, target_os = "freebsd", target_os = "fuchsia"))]
+#[inline]
+pub(crate) fn get_ip_recvtos(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::IPPROTO_IP, c::IP_RECVTOS).map(to_bool)
+}
+
+#[cfg(any(
+ bsd,
+ linux_like,
+ target_os = "aix",
+ target_os = "fuchsia",
+ target_os = "nto"
+))]
+#[inline]
+pub(crate) fn set_ipv6_recvtclass(fd: BorrowedFd<'_>, value: bool) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_IPV6, c::IPV6_RECVTCLASS, from_bool(value))
+}
+
+#[cfg(any(
+ bsd,
+ linux_like,
+ target_os = "aix",
+ target_os = "fuchsia",
+ target_os = "nto"
+))]
+#[inline]
+pub(crate) fn get_ipv6_recvtclass(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::IPPROTO_IPV6, c::IPV6_RECVTCLASS).map(to_bool)
+}
+
+#[cfg(any(linux_kernel, target_os = "fuchsia"))]
+#[inline]
+pub(crate) fn set_ip_freebind(fd: BorrowedFd<'_>, value: bool) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_IP, c::IP_FREEBIND, from_bool(value))
+}
+
+#[cfg(any(linux_kernel, target_os = "fuchsia"))]
+#[inline]
+pub(crate) fn get_ip_freebind(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::IPPROTO_IP, c::IP_FREEBIND).map(to_bool)
+}
+
+#[cfg(linux_kernel)]
+#[inline]
+pub(crate) fn set_ipv6_freebind(fd: BorrowedFd<'_>, value: bool) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_IPV6, c::IPV6_FREEBIND, from_bool(value))
+}
+
+#[cfg(linux_kernel)]
+#[inline]
+pub(crate) fn get_ipv6_freebind(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::IPPROTO_IPV6, c::IPV6_FREEBIND).map(to_bool)
+}
+
+#[cfg(any(linux_kernel, target_os = "fuchsia"))]
+#[inline]
+pub(crate) fn get_ip_original_dst(fd: BorrowedFd<'_>) -> io::Result<SocketAddrV4> {
+ let level = c::IPPROTO_IP;
+ let optname = c::SO_ORIGINAL_DST;
+ let mut value = MaybeUninit::<SocketAddrStorage>::uninit();
+ let mut optlen = core::mem::size_of_val(&value).try_into().unwrap();
+
+ getsockopt_raw(fd, level, optname, &mut value, &mut optlen)?;
+
+ let any = unsafe { SocketAddrAny::read(value.as_ptr(), optlen as usize)? };
+ match any {
+ SocketAddrAny::V4(v4) => Ok(v4),
+ _ => unreachable!(),
+ }
+}
+
+#[cfg(linux_kernel)]
+#[inline]
+pub(crate) fn get_ipv6_original_dst(fd: BorrowedFd<'_>) -> io::Result<SocketAddrV6> {
+ let level = c::IPPROTO_IPV6;
+ let optname = c::IP6T_SO_ORIGINAL_DST;
+ let mut value = MaybeUninit::<SocketAddrStorage>::uninit();
+ let mut optlen = core::mem::size_of_val(&value).try_into().unwrap();
+
+ getsockopt_raw(fd, level, optname, &mut value, &mut optlen)?;
+
+ let any = unsafe { SocketAddrAny::read(value.as_ptr(), optlen as usize)? };
+ match any {
+ SocketAddrAny::V6(v6) => Ok(v6),
+ _ => unreachable!(),
+ }
+}
+
+#[cfg(not(any(
+ solarish,
+ windows,
+ target_os = "espidf",
+ target_os = "haiku",
+ target_os = "vita"
+)))]
+#[inline]
+pub(crate) fn set_ipv6_tclass(fd: BorrowedFd<'_>, value: u32) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_IPV6, c::IPV6_TCLASS, value)
+}
+
+#[cfg(not(any(
+ solarish,
+ windows,
+ target_os = "espidf",
+ target_os = "haiku",
+ target_os = "vita"
+)))]
+#[inline]
+pub(crate) fn get_ipv6_tclass(fd: BorrowedFd<'_>) -> io::Result<u32> {
+ getsockopt(fd, c::IPPROTO_IPV6, c::IPV6_TCLASS)
+}
+
+#[inline]
+pub(crate) fn set_tcp_nodelay(fd: BorrowedFd<'_>, nodelay: bool) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_TCP, c::TCP_NODELAY, from_bool(nodelay))
+}
+
+#[inline]
+pub(crate) fn get_tcp_nodelay(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::IPPROTO_TCP, c::TCP_NODELAY).map(to_bool)
+}
+
+#[inline]
+#[cfg(not(any(target_os = "openbsd", target_os = "haiku", target_os = "nto")))]
+pub(crate) fn set_tcp_keepcnt(fd: BorrowedFd<'_>, count: u32) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_TCP, c::TCP_KEEPCNT, count)
+}
+
+#[inline]
+#[cfg(not(any(target_os = "openbsd", target_os = "haiku", target_os = "nto")))]
+pub(crate) fn get_tcp_keepcnt(fd: BorrowedFd<'_>) -> io::Result<u32> {
+ getsockopt(fd, c::IPPROTO_TCP, c::TCP_KEEPCNT)
+}
+
+#[inline]
+#[cfg(not(any(target_os = "openbsd", target_os = "haiku", target_os = "nto")))]
+pub(crate) fn set_tcp_keepidle(fd: BorrowedFd<'_>, duration: Duration) -> io::Result<()> {
+ let secs: c::c_uint = duration_to_secs(duration)?;
+ setsockopt(fd, c::IPPROTO_TCP, TCP_KEEPIDLE, secs)
+}
+
+#[inline]
+#[cfg(not(any(target_os = "openbsd", target_os = "haiku", target_os = "nto")))]
+pub(crate) fn get_tcp_keepidle(fd: BorrowedFd<'_>) -> io::Result<Duration> {
+ let secs: c::c_uint = getsockopt(fd, c::IPPROTO_TCP, TCP_KEEPIDLE)?;
+ Ok(Duration::from_secs(secs as u64))
+}
+
+#[inline]
+#[cfg(not(any(target_os = "openbsd", target_os = "haiku", target_os = "nto")))]
+pub(crate) fn set_tcp_keepintvl(fd: BorrowedFd<'_>, duration: Duration) -> io::Result<()> {
+ let secs: c::c_uint = duration_to_secs(duration)?;
+ setsockopt(fd, c::IPPROTO_TCP, c::TCP_KEEPINTVL, secs)
+}
+
+#[inline]
+#[cfg(not(any(target_os = "openbsd", target_os = "haiku", target_os = "nto")))]
+pub(crate) fn get_tcp_keepintvl(fd: BorrowedFd<'_>) -> io::Result<Duration> {
+ let secs: c::c_uint = getsockopt(fd, c::IPPROTO_TCP, c::TCP_KEEPINTVL)?;
+ Ok(Duration::from_secs(secs as u64))
+}
+
+#[inline]
+#[cfg(any(linux_like, target_os = "fuchsia"))]
+pub(crate) fn set_tcp_user_timeout(fd: BorrowedFd<'_>, value: u32) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_TCP, c::TCP_USER_TIMEOUT, value)
+}
+
+#[inline]
+#[cfg(any(linux_like, target_os = "fuchsia"))]
+pub(crate) fn get_tcp_user_timeout(fd: BorrowedFd<'_>) -> io::Result<u32> {
+ getsockopt(fd, c::IPPROTO_TCP, c::TCP_USER_TIMEOUT)
+}
+
+#[cfg(any(linux_like, target_os = "fuchsia"))]
+#[inline]
+pub(crate) fn set_tcp_quickack(fd: BorrowedFd<'_>, value: bool) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_TCP, c::TCP_QUICKACK, from_bool(value))
+}
+
+#[cfg(any(linux_like, target_os = "fuchsia"))]
+#[inline]
+pub(crate) fn get_tcp_quickack(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::IPPROTO_TCP, c::TCP_QUICKACK).map(to_bool)
+}
+
+#[cfg(any(
+ linux_like,
+ target_os = "freebsd",
+ target_os = "fuchsia",
+ target_os = "illumos"
+))]
+#[inline]
+pub(crate) fn set_tcp_congestion(fd: BorrowedFd<'_>, value: &str) -> io::Result<()> {
+ let level = c::IPPROTO_TCP;
+ let optname = c::TCP_CONGESTION;
+ let optlen = value.len().try_into().unwrap();
+ setsockopt_raw(fd, level, optname, value.as_ptr(), optlen)
+}
+
+#[cfg(feature = "alloc")]
+#[cfg(any(
+ linux_like,
+ target_os = "freebsd",
+ target_os = "fuchsia",
+ target_os = "illumos"
+))]
+#[inline]
+pub(crate) fn get_tcp_congestion(fd: BorrowedFd<'_>) -> io::Result<String> {
+ let level = c::IPPROTO_TCP;
+ let optname = c::TCP_CONGESTION;
+ const OPTLEN: c::socklen_t = 16;
+ let mut value = MaybeUninit::<[MaybeUninit<u8>; OPTLEN as usize]>::uninit();
+ let mut optlen = OPTLEN;
+ getsockopt_raw(fd, level, optname, &mut value, &mut optlen)?;
+ unsafe {
+ let value = value.assume_init();
+ let slice: &[u8] = core::mem::transmute(&value[..optlen as usize]);
+ assert!(slice.iter().any(|b| *b == b'\0'));
+ Ok(
+ core::str::from_utf8(CStr::from_ptr(slice.as_ptr().cast()).to_bytes())
+ .unwrap()
+ .to_owned(),
+ )
+ }
+}
+
+#[cfg(any(linux_like, target_os = "fuchsia"))]
+#[inline]
+pub(crate) fn set_tcp_thin_linear_timeouts(fd: BorrowedFd<'_>, value: bool) -> io::Result<()> {
+ setsockopt(
+ fd,
+ c::IPPROTO_TCP,
+ c::TCP_THIN_LINEAR_TIMEOUTS,
+ from_bool(value),
+ )
+}
+
+#[cfg(any(linux_like, target_os = "fuchsia"))]
+#[inline]
+pub(crate) fn get_tcp_thin_linear_timeouts(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::IPPROTO_TCP, c::TCP_THIN_LINEAR_TIMEOUTS).map(to_bool)
+}
+
+#[cfg(any(linux_like, solarish, target_os = "fuchsia"))]
+#[inline]
+pub(crate) fn set_tcp_cork(fd: BorrowedFd<'_>, value: bool) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_TCP, c::TCP_CORK, from_bool(value))
+}
+
+#[cfg(any(linux_like, solarish, target_os = "fuchsia"))]
+#[inline]
+pub(crate) fn get_tcp_cork(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::IPPROTO_TCP, c::TCP_CORK).map(to_bool)
+}
+
+#[cfg(linux_kernel)]
+#[inline]
+pub(crate) fn get_socket_peercred(fd: BorrowedFd<'_>) -> io::Result<UCred> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_PEERCRED)
+}
+
+#[inline]
+fn to_ip_mreq(multiaddr: &Ipv4Addr, interface: &Ipv4Addr) -> c::ip_mreq {
+ c::ip_mreq {
+ imr_multiaddr: to_imr_addr(multiaddr),
+ imr_interface: to_imr_addr(interface),
+ }
+}
+
+#[cfg(any(
+ apple,
+ freebsdlike,
+ linux_like,
+ target_os = "fuchsia",
+ target_os = "openbsd"
+))]
+#[inline]
+fn to_ip_mreqn(multiaddr: &Ipv4Addr, address: &Ipv4Addr, ifindex: i32) -> c::ip_mreqn {
+ c::ip_mreqn {
+ imr_multiaddr: to_imr_addr(multiaddr),
+ imr_address: to_imr_addr(address),
+ imr_ifindex: ifindex,
+ }
+}
+
+#[cfg(any(apple, freebsdlike, linux_like, solarish, target_os = "aix"))]
+#[inline]
+fn to_imr_source(
+ multiaddr: &Ipv4Addr,
+ interface: &Ipv4Addr,
+ sourceaddr: &Ipv4Addr,
+) -> c::ip_mreq_source {
+ c::ip_mreq_source {
+ imr_multiaddr: to_imr_addr(multiaddr),
+ imr_interface: to_imr_addr(interface),
+ imr_sourceaddr: to_imr_addr(sourceaddr),
+ }
+}
+
+#[inline]
+fn to_imr_addr(addr: &Ipv4Addr) -> c::in_addr {
+ in_addr_new(u32::from_ne_bytes(addr.octets()))
+}
+
+#[inline]
+fn to_ipv6mr(multiaddr: &Ipv6Addr, interface: u32) -> c::ipv6_mreq {
+ c::ipv6_mreq {
+ ipv6mr_multiaddr: to_ipv6mr_multiaddr(multiaddr),
+ ipv6mr_interface: to_ipv6mr_interface(interface),
+ }
+}
+
+#[inline]
+fn to_ipv6mr_multiaddr(multiaddr: &Ipv6Addr) -> c::in6_addr {
+ in6_addr_new(multiaddr.octets())
+}
+
+#[cfg(target_os = "android")]
+#[inline]
+fn to_ipv6mr_interface(interface: u32) -> c::c_int {
+ interface as c::c_int
+}
+
+#[cfg(not(target_os = "android"))]
+#[inline]
+fn to_ipv6mr_interface(interface: u32) -> c::c_uint {
+ interface as c::c_uint
+}
+
+// `getsockopt` and `setsockopt` represent boolean values as integers.
+#[cfg(not(windows))]
+type RawSocketBool = c::c_int;
+#[cfg(windows)]
+type RawSocketBool = BOOL;
+
+// Wrap `RawSocketBool` in a newtype to discourage misuse.
+#[repr(transparent)]
+#[derive(Copy, Clone)]
+struct SocketBool(RawSocketBool);
+
+// Convert from a `bool` to a `SocketBool`.
+#[inline]
+fn from_bool(value: bool) -> SocketBool {
+ SocketBool(value.into())
+}
+
+// Convert from a `SocketBool` to a `bool`.
+#[inline]
+fn to_bool(value: SocketBool) -> bool {
+ value.0 != 0
+}
+
+/// Convert to seconds, rounding up if necessary.
+#[inline]
+fn duration_to_secs<T: TryFrom<u64>>(duration: Duration) -> io::Result<T> {
+ let mut secs = duration.as_secs();
+ if duration.subsec_nanos() != 0 {
+ secs = secs.checked_add(1).ok_or(io::Errno::INVAL)?;
+ }
+ T::try_from(secs).map_err(|_e| io::Errno::INVAL)
+}
diff --git a/vendor/rustix/src/backend/libc/net/syscalls.rs b/vendor/rustix/src/backend/libc/net/syscalls.rs
index 2e968ba3e..97b862033 100644
--- a/vendor/rustix/src/backend/libc/net/syscalls.rs
+++ b/vendor/rustix/src/backend/libc/net/syscalls.rs
@@ -2,7 +2,6 @@
#[cfg(unix)]
use super::addr::SocketAddrUnix;
-use super::ext::{in6_addr_new, in_addr_new};
use crate::backend::c;
use crate::backend::conv::{borrowed_fd, ret, ret_owned_fd, ret_send_recv, send_recv_len};
use crate::fd::{BorrowedFd, OwnedFd};
@@ -10,7 +9,13 @@ use crate::io;
use crate::net::{SocketAddrAny, SocketAddrV4, SocketAddrV6};
use crate::utils::as_ptr;
use core::mem::{size_of, MaybeUninit};
-#[cfg(not(any(windows, target_os = "espidf", target_os = "redox", target_os = "wasi")))]
+#[cfg(not(any(
+ windows,
+ target_os = "espidf",
+ target_os = "redox",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
use {
super::msghdr::{with_noaddr_msghdr, with_recv_msghdr, with_v4_msghdr, with_v6_msghdr},
crate::io::{IoSlice, IoSliceMut},
@@ -244,6 +249,19 @@ pub(crate) fn connect_unix(sockfd: BorrowedFd<'_>, addr: &SocketAddrUnix) -> io:
}
#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
+pub(crate) fn connect_unspec(sockfd: BorrowedFd<'_>) -> io::Result<()> {
+ debug_assert_eq!(c::AF_UNSPEC, 0);
+ let addr = MaybeUninit::<c::sockaddr_storage>::zeroed();
+ unsafe {
+ ret(c::connect(
+ borrowed_fd(sockfd),
+ as_ptr(&addr).cast(),
+ size_of::<c::sockaddr_storage>() as c::socklen_t,
+ ))
+ }
+}
+
+#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
pub(crate) fn listen(sockfd: BorrowedFd<'_>, backlog: c::c_int) -> io::Result<()> {
unsafe { ret(c::listen(borrowed_fd(sockfd), backlog)) }
}
@@ -256,7 +274,13 @@ pub(crate) fn accept(sockfd: BorrowedFd<'_>) -> io::Result<OwnedFd> {
}
}
-#[cfg(not(any(windows, target_os = "espidf", target_os = "redox", target_os = "wasi")))]
+#[cfg(not(any(
+ windows,
+ target_os = "espidf",
+ target_os = "redox",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
pub(crate) fn recvmsg(
sockfd: BorrowedFd<'_>,
iov: &mut [IoSliceMut<'_>],
@@ -288,7 +312,13 @@ pub(crate) fn recvmsg(
})
}
-#[cfg(not(any(windows, target_os = "espidf", target_os = "redox", target_os = "wasi")))]
+#[cfg(not(any(
+ windows,
+ target_os = "espidf",
+ target_os = "redox",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
pub(crate) fn sendmsg(
sockfd: BorrowedFd<'_>,
iov: &[IoSlice<'_>],
@@ -304,7 +334,13 @@ pub(crate) fn sendmsg(
})
}
-#[cfg(not(any(windows, target_os = "espidf", target_os = "redox", target_os = "wasi")))]
+#[cfg(not(any(
+ windows,
+ target_os = "espidf",
+ target_os = "redox",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
pub(crate) fn sendmsg_v4(
sockfd: BorrowedFd<'_>,
addr: &SocketAddrV4,
@@ -321,7 +357,13 @@ pub(crate) fn sendmsg_v4(
})
}
-#[cfg(not(any(windows, target_os = "espidf", target_os = "redox", target_os = "wasi")))]
+#[cfg(not(any(
+ windows,
+ target_os = "espidf",
+ target_os = "redox",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
pub(crate) fn sendmsg_v6(
sockfd: BorrowedFd<'_>,
addr: &SocketAddrV6,
@@ -338,7 +380,10 @@ pub(crate) fn sendmsg_v6(
})
}
-#[cfg(all(unix, not(any(target_os = "espidf", target_os = "redox"))))]
+#[cfg(all(
+ unix,
+ not(any(target_os = "espidf", target_os = "redox", target_os = "vita"))
+))]
pub(crate) fn sendmsg_unix(
sockfd: BorrowedFd<'_>,
addr: &SocketAddrUnix,
@@ -363,6 +408,7 @@ pub(crate) fn sendmsg_unix(
target_os = "haiku",
target_os = "redox",
target_os = "nto",
+ target_os = "vita",
target_os = "wasi",
)))]
pub(crate) fn accept_with(sockfd: BorrowedFd<'_>, flags: SocketFlags) -> io::Result<OwnedFd> {
@@ -402,6 +448,7 @@ pub(crate) fn acceptfrom(sockfd: BorrowedFd<'_>) -> io::Result<(OwnedFd, Option<
target_os = "haiku",
target_os = "nto",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi",
)))]
pub(crate) fn acceptfrom_with(
@@ -432,7 +479,8 @@ pub(crate) fn acceptfrom_with(
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
- target_os = "nto"
+ target_os = "nto",
+ target_os = "vita",
))]
pub(crate) fn accept_with(sockfd: BorrowedFd<'_>, _flags: SocketFlags) -> io::Result<OwnedFd> {
accept(sockfd)
@@ -446,7 +494,8 @@ pub(crate) fn accept_with(sockfd: BorrowedFd<'_>, _flags: SocketFlags) -> io::Re
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
- target_os = "nto"
+ target_os = "nto",
+ target_os = "vita",
))]
pub(crate) fn acceptfrom_with(
sockfd: BorrowedFd<'_>,
@@ -515,636 +564,3 @@ pub(crate) fn socketpair(
Ok((fd0, fd1))
}
}
-
-#[cfg(not(any(target_os = "redox", target_os = "wasi")))]
-pub(crate) mod sockopt {
- use super::{c, in6_addr_new, in_addr_new, BorrowedFd};
- use crate::io;
- use crate::net::sockopt::Timeout;
- #[cfg(not(any(
- apple,
- windows,
- target_os = "aix",
- target_os = "dragonfly",
- target_os = "emscripten",
- target_os = "espidf",
- target_os = "haiku",
- target_os = "netbsd",
- target_os = "nto",
- )))]
- use crate::net::AddressFamily;
- use crate::net::{Ipv4Addr, Ipv6Addr, SocketType};
- use crate::utils::as_mut_ptr;
- #[cfg(apple)]
- use c::TCP_KEEPALIVE as TCP_KEEPIDLE;
- #[cfg(not(any(apple, target_os = "openbsd", target_os = "haiku", target_os = "nto")))]
- use c::TCP_KEEPIDLE;
- use core::time::Duration;
- #[cfg(windows)]
- use windows_sys::Win32::Foundation::BOOL;
-
- #[inline]
- fn getsockopt<T: Copy>(fd: BorrowedFd<'_>, level: i32, optname: i32) -> io::Result<T> {
- use super::*;
-
- let mut optlen = core::mem::size_of::<T>().try_into().unwrap();
- debug_assert!(
- optlen as usize >= core::mem::size_of::<c::c_int>(),
- "Socket APIs don't ever use `bool` directly"
- );
-
- unsafe {
- let mut value = core::mem::zeroed::<T>();
- ret(c::getsockopt(
- borrowed_fd(fd),
- level,
- optname,
- as_mut_ptr(&mut value).cast(),
- &mut optlen,
- ))?;
- // On Windows at least, `getsockopt` has been observed writing 1
- // byte on at least (`IPPROTO_TCP`, `TCP_NODELAY`), even though
- // Windows' documentation says that should write a 4-byte `BOOL`.
- // So, we initialize the memory to zeros above, and just assert
- // that `getsockopt` doesn't write too many bytes here.
- assert!(
- optlen as usize <= size_of::<T>(),
- "unexpected getsockopt size"
- );
- Ok(value)
- }
- }
-
- #[inline]
- fn setsockopt<T: Copy>(
- fd: BorrowedFd<'_>,
- level: i32,
- optname: i32,
- value: T,
- ) -> io::Result<()> {
- use super::*;
-
- let optlen = core::mem::size_of::<T>().try_into().unwrap();
- debug_assert!(
- optlen as usize >= core::mem::size_of::<c::c_int>(),
- "Socket APIs don't ever use `bool` directly"
- );
-
- unsafe {
- ret(c::setsockopt(
- borrowed_fd(fd),
- level,
- optname,
- as_ptr(&value).cast(),
- optlen,
- ))
- }
- }
-
- #[inline]
- pub(crate) fn get_socket_type(fd: BorrowedFd<'_>) -> io::Result<SocketType> {
- getsockopt(fd, c::SOL_SOCKET as _, c::SO_TYPE)
- }
-
- #[inline]
- pub(crate) fn set_socket_reuseaddr(fd: BorrowedFd<'_>, reuseaddr: bool) -> io::Result<()> {
- setsockopt(
- fd,
- c::SOL_SOCKET as _,
- c::SO_REUSEADDR,
- from_bool(reuseaddr),
- )
- }
-
- #[inline]
- pub(crate) fn get_socket_reuseaddr(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::SOL_SOCKET as _, c::SO_REUSEADDR).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_socket_broadcast(fd: BorrowedFd<'_>, broadcast: bool) -> io::Result<()> {
- setsockopt(
- fd,
- c::SOL_SOCKET as _,
- c::SO_BROADCAST,
- from_bool(broadcast),
- )
- }
-
- #[inline]
- pub(crate) fn get_socket_broadcast(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::SOL_SOCKET as _, c::SO_BROADCAST).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_socket_linger(
- fd: BorrowedFd<'_>,
- linger: Option<Duration>,
- ) -> io::Result<()> {
- // Convert `linger` to seconds, rounding up.
- let l_linger = if let Some(linger) = linger {
- duration_to_secs(linger)?
- } else {
- 0
- };
- let linger = c::linger {
- l_onoff: linger.is_some() as _,
- l_linger,
- };
- setsockopt(fd, c::SOL_SOCKET as _, c::SO_LINGER, linger)
- }
-
- #[inline]
- pub(crate) fn get_socket_linger(fd: BorrowedFd<'_>) -> io::Result<Option<Duration>> {
- let linger: c::linger = getsockopt(fd, c::SOL_SOCKET as _, c::SO_LINGER)?;
- Ok((linger.l_onoff != 0).then(|| Duration::from_secs(linger.l_linger as u64)))
- }
-
- #[cfg(linux_kernel)]
- #[inline]
- pub(crate) fn set_socket_passcred(fd: BorrowedFd<'_>, passcred: bool) -> io::Result<()> {
- setsockopt(fd, c::SOL_SOCKET as _, c::SO_PASSCRED, from_bool(passcred))
- }
-
- #[cfg(linux_kernel)]
- #[inline]
- pub(crate) fn get_socket_passcred(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::SOL_SOCKET as _, c::SO_PASSCRED).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_socket_timeout(
- fd: BorrowedFd<'_>,
- id: Timeout,
- timeout: Option<Duration>,
- ) -> io::Result<()> {
- let optname = match id {
- Timeout::Recv => c::SO_RCVTIMEO,
- Timeout::Send => c::SO_SNDTIMEO,
- };
-
- #[cfg(not(windows))]
- let timeout = match timeout {
- Some(timeout) => {
- if timeout == Duration::ZERO {
- return Err(io::Errno::INVAL);
- }
-
- // Rust's musl libc bindings deprecated `time_t` while they
- // transition to 64-bit `time_t`. What we want here is just
- // “whatever type `timeval`'s `tv_sec` isâ€, so we're ok using
- // the deprecated type.
- #[allow(deprecated)]
- let tv_sec = timeout.as_secs().try_into().unwrap_or(c::time_t::MAX);
-
- // `subsec_micros` rounds down, so we use `subsec_nanos` and
- // manually round up.
- let mut timeout = c::timeval {
- tv_sec,
- tv_usec: ((timeout.subsec_nanos() + 999) / 1000) as _,
- };
- if timeout.tv_sec == 0 && timeout.tv_usec == 0 {
- timeout.tv_usec = 1;
- }
- timeout
- }
- None => c::timeval {
- tv_sec: 0,
- tv_usec: 0,
- },
- };
-
- #[cfg(windows)]
- let timeout: u32 = match timeout {
- Some(timeout) => {
- if timeout == Duration::ZERO {
- return Err(io::Errno::INVAL);
- }
-
- // `as_millis` rounds down, so we use `as_nanos` and
- // manually round up.
- let mut timeout: u32 = ((timeout.as_nanos() + 999_999) / 1_000_000)
- .try_into()
- .map_err(|_convert_err| io::Errno::INVAL)?;
- if timeout == 0 {
- timeout = 1;
- }
- timeout
- }
- None => 0,
- };
-
- setsockopt(fd, c::SOL_SOCKET, optname, timeout)
- }
-
- #[inline]
- pub(crate) fn get_socket_timeout(
- fd: BorrowedFd<'_>,
- id: Timeout,
- ) -> io::Result<Option<Duration>> {
- let optname = match id {
- Timeout::Recv => c::SO_RCVTIMEO,
- Timeout::Send => c::SO_SNDTIMEO,
- };
-
- #[cfg(not(windows))]
- {
- let timeout: c::timeval = getsockopt(fd, c::SOL_SOCKET, optname)?;
- if timeout.tv_sec == 0 && timeout.tv_usec == 0 {
- Ok(None)
- } else {
- Ok(Some(
- Duration::from_secs(timeout.tv_sec as u64)
- + Duration::from_micros(timeout.tv_usec as u64),
- ))
- }
- }
-
- #[cfg(windows)]
- {
- let timeout: u32 = getsockopt(fd, c::SOL_SOCKET, optname)?;
- if timeout == 0 {
- Ok(None)
- } else {
- Ok(Some(Duration::from_millis(timeout as u64)))
- }
- }
- }
-
- #[cfg(any(apple, target_os = "freebsd"))]
- #[inline]
- pub(crate) fn get_socket_nosigpipe(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::SOL_SOCKET, c::SO_NOSIGPIPE).map(to_bool)
- }
-
- #[cfg(any(apple, target_os = "freebsd"))]
- #[inline]
- pub(crate) fn set_socket_nosigpipe(fd: BorrowedFd<'_>, val: bool) -> io::Result<()> {
- setsockopt(fd, c::SOL_SOCKET, c::SO_NOSIGPIPE, from_bool(val))
- }
-
- #[inline]
- pub(crate) fn get_socket_error(fd: BorrowedFd<'_>) -> io::Result<Result<(), io::Errno>> {
- let err: c::c_int = getsockopt(fd, c::SOL_SOCKET as _, c::SO_ERROR)?;
- Ok(if err == 0 {
- Ok(())
- } else {
- Err(io::Errno::from_raw_os_error(err))
- })
- }
-
- #[inline]
- pub(crate) fn set_socket_keepalive(fd: BorrowedFd<'_>, keepalive: bool) -> io::Result<()> {
- setsockopt(
- fd,
- c::SOL_SOCKET as _,
- c::SO_KEEPALIVE,
- from_bool(keepalive),
- )
- }
-
- #[inline]
- pub(crate) fn get_socket_keepalive(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::SOL_SOCKET as _, c::SO_KEEPALIVE).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_socket_recv_buffer_size(fd: BorrowedFd<'_>, size: usize) -> io::Result<()> {
- let size: c::c_int = size.try_into().map_err(|_| io::Errno::INVAL)?;
- setsockopt(fd, c::SOL_SOCKET as _, c::SO_RCVBUF, size)
- }
-
- #[inline]
- pub(crate) fn get_socket_recv_buffer_size(fd: BorrowedFd<'_>) -> io::Result<usize> {
- getsockopt(fd, c::SOL_SOCKET as _, c::SO_RCVBUF).map(|size: u32| size as usize)
- }
-
- #[inline]
- pub(crate) fn set_socket_send_buffer_size(fd: BorrowedFd<'_>, size: usize) -> io::Result<()> {
- let size: c::c_int = size.try_into().map_err(|_| io::Errno::INVAL)?;
- setsockopt(fd, c::SOL_SOCKET as _, c::SO_SNDBUF, size)
- }
-
- #[inline]
- pub(crate) fn get_socket_send_buffer_size(fd: BorrowedFd<'_>) -> io::Result<usize> {
- getsockopt(fd, c::SOL_SOCKET as _, c::SO_SNDBUF).map(|size: u32| size as usize)
- }
-
- #[inline]
- #[cfg(not(any(
- apple,
- windows,
- target_os = "aix",
- target_os = "dragonfly",
- target_os = "emscripten",
- target_os = "espidf",
- target_os = "haiku",
- target_os = "netbsd",
- target_os = "nto",
- )))]
- pub(crate) fn get_socket_domain(fd: BorrowedFd<'_>) -> io::Result<AddressFamily> {
- let domain: c::c_int = getsockopt(fd, c::SOL_SOCKET as _, c::SO_DOMAIN)?;
- Ok(AddressFamily(
- domain.try_into().map_err(|_| io::Errno::OPNOTSUPP)?,
- ))
- }
-
- #[inline]
- #[cfg(not(apple))] // Apple platforms declare the constant, but do not actually implement it.
- pub(crate) fn get_socket_acceptconn(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::SOL_SOCKET as _, c::SO_ACCEPTCONN).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_ip_ttl(fd: BorrowedFd<'_>, ttl: u32) -> io::Result<()> {
- setsockopt(fd, c::IPPROTO_IP as _, c::IP_TTL, ttl)
- }
-
- #[inline]
- pub(crate) fn get_ip_ttl(fd: BorrowedFd<'_>) -> io::Result<u32> {
- getsockopt(fd, c::IPPROTO_IP as _, c::IP_TTL)
- }
-
- #[inline]
- pub(crate) fn set_ipv6_v6only(fd: BorrowedFd<'_>, only_v6: bool) -> io::Result<()> {
- setsockopt(fd, c::IPPROTO_IPV6 as _, c::IPV6_V6ONLY, from_bool(only_v6))
- }
-
- #[inline]
- pub(crate) fn get_ipv6_v6only(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::IPPROTO_IPV6 as _, c::IPV6_V6ONLY).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_ip_multicast_loop(
- fd: BorrowedFd<'_>,
- multicast_loop: bool,
- ) -> io::Result<()> {
- setsockopt(
- fd,
- c::IPPROTO_IP as _,
- c::IP_MULTICAST_LOOP,
- from_bool(multicast_loop),
- )
- }
-
- #[inline]
- pub(crate) fn get_ip_multicast_loop(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::IPPROTO_IP as _, c::IP_MULTICAST_LOOP).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_ip_multicast_ttl(fd: BorrowedFd<'_>, multicast_ttl: u32) -> io::Result<()> {
- setsockopt(fd, c::IPPROTO_IP as _, c::IP_MULTICAST_TTL, multicast_ttl)
- }
-
- #[inline]
- pub(crate) fn get_ip_multicast_ttl(fd: BorrowedFd<'_>) -> io::Result<u32> {
- getsockopt(fd, c::IPPROTO_IP as _, c::IP_MULTICAST_TTL)
- }
-
- #[inline]
- pub(crate) fn set_ipv6_multicast_loop(
- fd: BorrowedFd<'_>,
- multicast_loop: bool,
- ) -> io::Result<()> {
- setsockopt(
- fd,
- c::IPPROTO_IPV6 as _,
- c::IPV6_MULTICAST_LOOP,
- from_bool(multicast_loop),
- )
- }
-
- #[inline]
- pub(crate) fn get_ipv6_multicast_loop(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::IPPROTO_IPV6 as _, c::IPV6_MULTICAST_LOOP).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_ipv6_multicast_hops(
- fd: BorrowedFd<'_>,
- multicast_hops: u32,
- ) -> io::Result<()> {
- setsockopt(
- fd,
- c::IPPROTO_IP as _,
- c::IPV6_MULTICAST_HOPS,
- multicast_hops,
- )
- }
-
- #[inline]
- pub(crate) fn get_ipv6_multicast_hops(fd: BorrowedFd<'_>) -> io::Result<u32> {
- getsockopt(fd, c::IPPROTO_IP as _, c::IPV6_MULTICAST_HOPS)
- }
-
- #[inline]
- pub(crate) fn set_ip_add_membership(
- fd: BorrowedFd<'_>,
- multiaddr: &Ipv4Addr,
- interface: &Ipv4Addr,
- ) -> io::Result<()> {
- let mreq = to_imr(multiaddr, interface);
- setsockopt(fd, c::IPPROTO_IP as _, c::IP_ADD_MEMBERSHIP, mreq)
- }
-
- #[inline]
- pub(crate) fn set_ipv6_add_membership(
- fd: BorrowedFd<'_>,
- multiaddr: &Ipv6Addr,
- interface: u32,
- ) -> io::Result<()> {
- #[cfg(not(any(
- bsd,
- solarish,
- target_os = "haiku",
- target_os = "l4re",
- target_os = "nto"
- )))]
- use c::IPV6_ADD_MEMBERSHIP;
- #[cfg(any(
- bsd,
- solarish,
- target_os = "haiku",
- target_os = "l4re",
- target_os = "nto"
- ))]
- use c::IPV6_JOIN_GROUP as IPV6_ADD_MEMBERSHIP;
-
- let mreq = to_ipv6mr(multiaddr, interface);
- setsockopt(fd, c::IPPROTO_IPV6 as _, IPV6_ADD_MEMBERSHIP, mreq)
- }
-
- #[inline]
- pub(crate) fn set_ip_drop_membership(
- fd: BorrowedFd<'_>,
- multiaddr: &Ipv4Addr,
- interface: &Ipv4Addr,
- ) -> io::Result<()> {
- let mreq = to_imr(multiaddr, interface);
- setsockopt(fd, c::IPPROTO_IP as _, c::IP_DROP_MEMBERSHIP, mreq)
- }
-
- #[inline]
- pub(crate) fn set_ipv6_drop_membership(
- fd: BorrowedFd<'_>,
- multiaddr: &Ipv6Addr,
- interface: u32,
- ) -> io::Result<()> {
- #[cfg(not(any(
- bsd,
- solarish,
- target_os = "haiku",
- target_os = "l4re",
- target_os = "nto"
- )))]
- use c::IPV6_DROP_MEMBERSHIP;
- #[cfg(any(
- bsd,
- solarish,
- target_os = "haiku",
- target_os = "l4re",
- target_os = "nto"
- ))]
- use c::IPV6_LEAVE_GROUP as IPV6_DROP_MEMBERSHIP;
-
- let mreq = to_ipv6mr(multiaddr, interface);
- setsockopt(fd, c::IPPROTO_IPV6 as _, IPV6_DROP_MEMBERSHIP, mreq)
- }
-
- #[inline]
- pub(crate) fn get_ipv6_unicast_hops(fd: BorrowedFd<'_>) -> io::Result<u8> {
- getsockopt(fd, c::IPPROTO_IPV6 as _, c::IPV6_UNICAST_HOPS).map(|hops: c::c_int| hops as u8)
- }
-
- #[inline]
- pub(crate) fn set_ipv6_unicast_hops(fd: BorrowedFd<'_>, hops: Option<u8>) -> io::Result<()> {
- let hops = match hops {
- Some(hops) => hops as c::c_int,
- None => -1,
- };
- setsockopt(fd, c::IPPROTO_IPV6 as _, c::IPV6_UNICAST_HOPS, hops)
- }
-
- #[inline]
- pub(crate) fn set_tcp_nodelay(fd: BorrowedFd<'_>, nodelay: bool) -> io::Result<()> {
- setsockopt(fd, c::IPPROTO_TCP as _, c::TCP_NODELAY, from_bool(nodelay))
- }
-
- #[inline]
- pub(crate) fn get_tcp_nodelay(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::IPPROTO_TCP as _, c::TCP_NODELAY).map(to_bool)
- }
-
- #[inline]
- #[cfg(not(any(target_os = "openbsd", target_os = "haiku", target_os = "nto")))]
- pub(crate) fn set_tcp_keepcnt(fd: BorrowedFd<'_>, count: u32) -> io::Result<()> {
- setsockopt(fd, c::IPPROTO_TCP as _, c::TCP_KEEPCNT, count)
- }
-
- #[inline]
- #[cfg(not(any(target_os = "openbsd", target_os = "haiku", target_os = "nto")))]
- pub(crate) fn get_tcp_keepcnt(fd: BorrowedFd<'_>) -> io::Result<u32> {
- getsockopt(fd, c::IPPROTO_TCP as _, c::TCP_KEEPCNT)
- }
-
- #[inline]
- #[cfg(not(any(target_os = "openbsd", target_os = "haiku", target_os = "nto")))]
- pub(crate) fn set_tcp_keepidle(fd: BorrowedFd<'_>, duration: Duration) -> io::Result<()> {
- let secs: c::c_uint = duration_to_secs(duration)?;
- setsockopt(fd, c::IPPROTO_TCP as _, TCP_KEEPIDLE, secs)
- }
-
- #[inline]
- #[cfg(not(any(target_os = "openbsd", target_os = "haiku", target_os = "nto")))]
- pub(crate) fn get_tcp_keepidle(fd: BorrowedFd<'_>) -> io::Result<Duration> {
- let secs: c::c_uint = getsockopt(fd, c::IPPROTO_TCP as _, TCP_KEEPIDLE)?;
- Ok(Duration::from_secs(secs as u64))
- }
-
- #[inline]
- #[cfg(not(any(target_os = "openbsd", target_os = "haiku", target_os = "nto")))]
- pub(crate) fn set_tcp_keepintvl(fd: BorrowedFd<'_>, duration: Duration) -> io::Result<()> {
- let secs: c::c_uint = duration_to_secs(duration)?;
- setsockopt(fd, c::IPPROTO_TCP as _, c::TCP_KEEPINTVL, secs)
- }
-
- #[inline]
- #[cfg(not(any(target_os = "openbsd", target_os = "haiku", target_os = "nto")))]
- pub(crate) fn get_tcp_keepintvl(fd: BorrowedFd<'_>) -> io::Result<Duration> {
- let secs: c::c_uint = getsockopt(fd, c::IPPROTO_TCP as _, c::TCP_KEEPINTVL)?;
- Ok(Duration::from_secs(secs as u64))
- }
-
- #[inline]
- fn to_imr(multiaddr: &Ipv4Addr, interface: &Ipv4Addr) -> c::ip_mreq {
- c::ip_mreq {
- imr_multiaddr: to_imr_addr(multiaddr),
- imr_interface: to_imr_addr(interface),
- }
- }
-
- #[inline]
- fn to_imr_addr(addr: &Ipv4Addr) -> c::in_addr {
- in_addr_new(u32::from_ne_bytes(addr.octets()))
- }
-
- #[inline]
- fn to_ipv6mr(multiaddr: &Ipv6Addr, interface: u32) -> c::ipv6_mreq {
- c::ipv6_mreq {
- ipv6mr_multiaddr: to_ipv6mr_multiaddr(multiaddr),
- ipv6mr_interface: to_ipv6mr_interface(interface),
- }
- }
-
- #[inline]
- fn to_ipv6mr_multiaddr(multiaddr: &Ipv6Addr) -> c::in6_addr {
- in6_addr_new(multiaddr.octets())
- }
-
- #[cfg(target_os = "android")]
- #[inline]
- fn to_ipv6mr_interface(interface: u32) -> c::c_int {
- interface as c::c_int
- }
-
- #[cfg(not(target_os = "android"))]
- #[inline]
- fn to_ipv6mr_interface(interface: u32) -> c::c_uint {
- interface as c::c_uint
- }
-
- // `getsockopt` and `setsockopt` represent boolean values as integers.
- #[cfg(not(windows))]
- type RawSocketBool = c::c_int;
- #[cfg(windows)]
- type RawSocketBool = BOOL;
-
- // Wrap `RawSocketBool` in a newtype to discourage misuse.
- #[repr(transparent)]
- #[derive(Copy, Clone)]
- struct SocketBool(RawSocketBool);
-
- // Convert from a `bool` to a `SocketBool`.
- #[inline]
- fn from_bool(value: bool) -> SocketBool {
- SocketBool(value as _)
- }
-
- // Convert from a `SocketBool` to a `bool`.
- #[inline]
- fn to_bool(value: SocketBool) -> bool {
- value.0 != 0
- }
-
- /// Convert to seconds, rounding up if necessary.
- #[inline]
- fn duration_to_secs<T: TryFrom<u64>>(duration: Duration) -> io::Result<T> {
- let mut secs = duration.as_secs();
- if duration.subsec_nanos() != 0 {
- secs = secs.checked_add(1).ok_or(io::Errno::INVAL)?;
- }
- T::try_from(secs).map_err(|_e| io::Errno::INVAL)
- }
-}
diff --git a/vendor/rustix/src/backend/libc/net/write_sockaddr.rs b/vendor/rustix/src/backend/libc/net/write_sockaddr.rs
index a354d9a85..2eee98cb8 100644
--- a/vendor/rustix/src/backend/libc/net/write_sockaddr.rs
+++ b/vendor/rustix/src/backend/libc/net/write_sockaddr.rs
@@ -1,5 +1,5 @@
-//! The BSD sockets API requires us to read the `ss_family` field before
-//! we can interpret the rest of a `sockaddr` produced by the kernel.
+//! The BSD sockets API requires us to read the `ss_family` field before we can
+//! interpret the rest of a `sockaddr` produced by the kernel.
use super::addr::SocketAddrStorage;
#[cfg(unix)]
@@ -29,15 +29,20 @@ pub(crate) fn encode_sockaddr_v4(v4: &SocketAddrV4) -> c::sockaddr_in {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
))]
sin_len: size_of::<c::sockaddr_in>() as _,
sin_family: c::AF_INET as _,
sin_port: u16::to_be(v4.port()),
sin_addr: in_addr_new(u32::from_ne_bytes(v4.ip().octets())),
- #[cfg(not(target_os = "haiku"))]
+ #[cfg(not(any(target_os = "haiku", target_os = "vita")))]
sin_zero: [0; 8_usize],
#[cfg(target_os = "haiku")]
sin_zero: [0; 24_usize],
+ #[cfg(target_os = "vita")]
+ sin_zero: [0; 6_usize],
+ #[cfg(target_os = "vita")]
+ sin_vport: 0,
}
}
@@ -54,6 +59,7 @@ pub(crate) fn encode_sockaddr_v6(v6: &SocketAddrV6) -> c::sockaddr_in6 {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita"
))]
{
sockaddr_in6_new(
@@ -70,7 +76,8 @@ pub(crate) fn encode_sockaddr_v6(v6: &SocketAddrV6) -> c::sockaddr_in6 {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
- target_os = "nto"
+ target_os = "nto",
+ target_os = "vita"
)))]
{
sockaddr_in6_new(
diff --git a/vendor/rustix/src/backend/libc/param/auxv.rs b/vendor/rustix/src/backend/libc/param/auxv.rs
index 0eeb972cc..880a1d43f 100644
--- a/vendor/rustix/src/backend/libc/param/auxv.rs
+++ b/vendor/rustix/src/backend/libc/param/auxv.rs
@@ -17,7 +17,7 @@ pub(crate) fn page_size() -> usize {
unsafe { c::sysconf(c::_SC_PAGESIZE) as usize }
}
-#[cfg(not(target_os = "wasi"))]
+#[cfg(not(any(target_os = "vita", target_os = "wasi")))]
#[inline]
pub(crate) fn clock_ticks_per_second() -> u64 {
unsafe { c::sysconf(c::_SC_CLK_TCK) as u64 }
diff --git a/vendor/rustix/src/backend/libc/pipe/types.rs b/vendor/rustix/src/backend/libc/pipe/types.rs
index 7f5634b17..1004e41f7 100644
--- a/vendor/rustix/src/backend/libc/pipe/types.rs
+++ b/vendor/rustix/src/backend/libc/pipe/types.rs
@@ -21,12 +21,13 @@ bitflags! {
target_os = "nto",
target_os = "openbsd",
target_os = "redox",
+ target_os = "vita",
)))]
const DIRECT = bitcast!(c::O_DIRECT);
/// `O_NONBLOCK`
const NONBLOCK = bitcast!(c::O_NONBLOCK);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -47,7 +48,7 @@ bitflags! {
/// `SPLICE_F_GIFT`
const GIFT = c::SPLICE_F_GIFT;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/backend/libc/process/mod.rs b/vendor/rustix/src/backend/libc/process/mod.rs
index 4d9a9f0a0..b89096199 100644
--- a/vendor/rustix/src/backend/libc/process/mod.rs
+++ b/vendor/rustix/src/backend/libc/process/mod.rs
@@ -3,5 +3,5 @@ pub(crate) mod cpu_set;
#[cfg(not(windows))]
pub(crate) mod syscalls;
pub(crate) mod types;
-#[cfg(not(any(target_os = "espidf", target_os = "wasi")))]
+#[cfg(not(any(target_os = "espidf", target_os = "vita", target_os = "wasi")))]
pub(crate) mod wait;
diff --git a/vendor/rustix/src/backend/libc/process/syscalls.rs b/vendor/rustix/src/backend/libc/process/syscalls.rs
index dd71801d5..ec31e0ea7 100644
--- a/vendor/rustix/src/backend/libc/process/syscalls.rs
+++ b/vendor/rustix/src/backend/libc/process/syscalls.rs
@@ -13,6 +13,7 @@ use crate::backend::conv::ret_discarded_char_ptr;
target_os = "espidf",
target_os = "fuchsia",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi"
)))]
use crate::backend::conv::ret_infallible;
@@ -36,16 +37,24 @@ use crate::io;
use crate::process::Gid;
#[cfg(not(target_os = "wasi"))]
use crate::process::Pid;
-#[cfg(not(any(target_os = "espidf", target_os = "fuchsia", target_os = "wasi")))]
+#[cfg(not(any(target_os = "espidf", target_os = "wasi")))]
+use crate::process::Signal;
+#[cfg(not(any(
+ target_os = "espidf",
+ target_os = "fuchsia",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
use crate::process::Uid;
#[cfg(linux_kernel)]
use crate::process::{Cpuid, MembarrierCommand, MembarrierQuery};
-#[cfg(not(any(target_os = "espidf", target_os = "wasi")))]
-use crate::process::{RawPid, Signal, WaitOptions, WaitStatus};
+#[cfg(not(any(target_os = "espidf", target_os = "vita", target_os = "wasi")))]
+use crate::process::{RawPid, WaitOptions, WaitStatus};
#[cfg(not(any(
target_os = "espidf",
target_os = "fuchsia",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi"
)))]
use crate::process::{Resource, Rlimit};
@@ -53,6 +62,7 @@ use crate::process::{Resource, Rlimit};
target_os = "espidf",
target_os = "redox",
target_os = "openbsd",
+ target_os = "vita",
target_os = "wasi"
)))]
use crate::process::{WaitId, WaitidOptions, WaitidStatus};
@@ -209,7 +219,7 @@ pub(crate) fn umask(mask: Mode) -> Mode {
unsafe { Mode::from_bits_retain(c::umask(mask.bits() as c::mode_t).into()) }
}
-#[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))]
+#[cfg(not(any(target_os = "fuchsia", target_os = "vita", target_os = "wasi")))]
#[inline]
pub(crate) fn nice(inc: i32) -> io::Result<i32> {
libc_errno::set_errno(libc_errno::Errno(0));
@@ -221,7 +231,12 @@ pub(crate) fn nice(inc: i32) -> io::Result<i32> {
}
}
-#[cfg(not(any(target_os = "espidf", target_os = "fuchsia", target_os = "wasi")))]
+#[cfg(not(any(
+ target_os = "espidf",
+ target_os = "fuchsia",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
#[inline]
pub(crate) fn getpriority_user(uid: Uid) -> io::Result<i32> {
libc_errno::set_errno(libc_errno::Errno(0));
@@ -233,7 +248,12 @@ pub(crate) fn getpriority_user(uid: Uid) -> io::Result<i32> {
}
}
-#[cfg(not(any(target_os = "espidf", target_os = "fuchsia", target_os = "wasi")))]
+#[cfg(not(any(
+ target_os = "espidf",
+ target_os = "fuchsia",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
#[inline]
pub(crate) fn getpriority_pgrp(pgid: Option<Pid>) -> io::Result<i32> {
libc_errno::set_errno(libc_errno::Errno(0));
@@ -245,7 +265,12 @@ pub(crate) fn getpriority_pgrp(pgid: Option<Pid>) -> io::Result<i32> {
}
}
-#[cfg(not(any(target_os = "espidf", target_os = "fuchsia", target_os = "wasi")))]
+#[cfg(not(any(
+ target_os = "espidf",
+ target_os = "fuchsia",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
#[inline]
pub(crate) fn getpriority_process(pid: Option<Pid>) -> io::Result<i32> {
libc_errno::set_errno(libc_errno::Errno(0));
@@ -257,13 +282,23 @@ pub(crate) fn getpriority_process(pid: Option<Pid>) -> io::Result<i32> {
}
}
-#[cfg(not(any(target_os = "espidf", target_os = "fuchsia", target_os = "wasi")))]
+#[cfg(not(any(
+ target_os = "espidf",
+ target_os = "fuchsia",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
#[inline]
pub(crate) fn setpriority_user(uid: Uid, priority: i32) -> io::Result<()> {
unsafe { ret(c::setpriority(c::PRIO_USER, uid.as_raw() as _, priority)) }
}
-#[cfg(not(any(target_os = "espidf", target_os = "fuchsia", target_os = "wasi")))]
+#[cfg(not(any(
+ target_os = "espidf",
+ target_os = "fuchsia",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
#[inline]
pub(crate) fn setpriority_pgrp(pgid: Option<Pid>, priority: i32) -> io::Result<()> {
unsafe {
@@ -275,7 +310,12 @@ pub(crate) fn setpriority_pgrp(pgid: Option<Pid>, priority: i32) -> io::Result<(
}
}
-#[cfg(not(any(target_os = "espidf", target_os = "fuchsia", target_os = "wasi")))]
+#[cfg(not(any(
+ target_os = "espidf",
+ target_os = "fuchsia",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
#[inline]
pub(crate) fn setpriority_process(pid: Option<Pid>, priority: i32) -> io::Result<()> {
unsafe {
@@ -291,6 +331,7 @@ pub(crate) fn setpriority_process(pid: Option<Pid>, priority: i32) -> io::Result
target_os = "espidf",
target_os = "fuchsia",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi"
)))]
#[inline]
@@ -306,6 +347,7 @@ pub(crate) fn getrlimit(limit: Resource) -> Rlimit {
target_os = "espidf",
target_os = "fuchsia",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi"
)))]
#[inline]
@@ -335,6 +377,7 @@ pub(crate) fn prlimit(pid: Option<Pid>, limit: Resource, new: Rlimit) -> io::Res
target_os = "espidf",
target_os = "fuchsia",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi"
)))]
fn rlimit_from_libc(lim: c::rlimit) -> Rlimit {
@@ -356,6 +399,7 @@ fn rlimit_from_libc(lim: c::rlimit) -> Rlimit {
target_os = "espidf",
target_os = "fuchsia",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi"
)))]
fn rlimit_to_libc(lim: Rlimit) -> io::Result<c::rlimit> {
@@ -371,13 +415,13 @@ fn rlimit_to_libc(lim: Rlimit) -> io::Result<c::rlimit> {
Ok(c::rlimit { rlim_cur, rlim_max })
}
-#[cfg(not(any(target_os = "espidf", target_os = "wasi")))]
+#[cfg(not(any(target_os = "espidf", target_os = "vita", target_os = "wasi")))]
#[inline]
pub(crate) fn wait(waitopts: WaitOptions) -> io::Result<Option<(Pid, WaitStatus)>> {
_waitpid(!0, waitopts)
}
-#[cfg(not(any(target_os = "espidf", target_os = "wasi")))]
+#[cfg(not(any(target_os = "espidf", target_os = "vita", target_os = "wasi")))]
#[inline]
pub(crate) fn waitpid(
pid: Option<Pid>,
@@ -386,7 +430,13 @@ pub(crate) fn waitpid(
_waitpid(Pid::as_raw(pid), waitopts)
}
-#[cfg(not(any(target_os = "espidf", target_os = "wasi")))]
+#[cfg(not(any(target_os = "espidf", target_os = "vita", target_os = "wasi")))]
+#[inline]
+pub(crate) fn waitpgid(pgid: Pid, waitopts: WaitOptions) -> io::Result<Option<(Pid, WaitStatus)>> {
+ _waitpid(-pgid.as_raw_nonzero().get(), waitopts)
+}
+
+#[cfg(not(any(target_os = "espidf", target_os = "vita", target_os = "wasi")))]
#[inline]
pub(crate) fn _waitpid(
pid: RawPid,
@@ -403,6 +453,7 @@ pub(crate) fn _waitpid(
target_os = "espidf",
target_os = "redox",
target_os = "openbsd",
+ target_os = "vita",
target_os = "wasi"
)))]
#[inline]
@@ -411,6 +462,7 @@ pub(crate) fn waitid(id: WaitId<'_>, options: WaitidOptions) -> io::Result<Optio
match id {
WaitId::All => _waitid_all(options),
WaitId::Pid(pid) => _waitid_pid(pid, options),
+ WaitId::Pgid(pgid) => _waitid_pgid(pgid, options),
#[cfg(target_os = "linux")]
WaitId::PidFd(fd) => _waitid_pidfd(fd, options),
#[cfg(not(target_os = "linux"))]
@@ -422,6 +474,7 @@ pub(crate) fn waitid(id: WaitId<'_>, options: WaitidOptions) -> io::Result<Optio
target_os = "espidf",
target_os = "redox",
target_os = "openbsd",
+ target_os = "vita",
target_os = "wasi"
)))]
#[inline]
@@ -445,6 +498,7 @@ fn _waitid_all(options: WaitidOptions) -> io::Result<Option<WaitidStatus>> {
target_os = "espidf",
target_os = "redox",
target_os = "openbsd",
+ target_os = "vita",
target_os = "wasi"
)))]
#[inline]
@@ -464,6 +518,30 @@ fn _waitid_pid(pid: Pid, options: WaitidOptions) -> io::Result<Option<WaitidStat
Ok(unsafe { cvt_waitid_status(status) })
}
+#[cfg(not(any(
+ target_os = "espidf",
+ target_os = "redox",
+ target_os = "openbsd",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
+#[inline]
+fn _waitid_pgid(pgid: Option<Pid>, options: WaitidOptions) -> io::Result<Option<WaitidStatus>> {
+ // `waitid` can return successfully without initializing the struct (no
+ // children found when using `WNOHANG`)
+ let mut status = MaybeUninit::<c::siginfo_t>::zeroed();
+ unsafe {
+ ret(c::waitid(
+ c::P_PGID,
+ Pid::as_raw(pgid) as _,
+ status.as_mut_ptr(),
+ options.bits() as _,
+ ))?
+ };
+
+ Ok(unsafe { cvt_waitid_status(status) })
+}
+
#[cfg(target_os = "linux")]
#[inline]
fn _waitid_pidfd(fd: BorrowedFd<'_>, options: WaitidOptions) -> io::Result<Option<WaitidStatus>> {
@@ -492,6 +570,7 @@ fn _waitid_pidfd(fd: BorrowedFd<'_>, options: WaitidOptions) -> io::Result<Optio
target_os = "espidf",
target_os = "openbsd",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi"
)))]
#[inline]
diff --git a/vendor/rustix/src/backend/libc/process/types.rs b/vendor/rustix/src/backend/libc/process/types.rs
index 26bae3498..8689c414a 100644
--- a/vendor/rustix/src/backend/libc/process/types.rs
+++ b/vendor/rustix/src/backend/libc/process/types.rs
@@ -1,3 +1,4 @@
+#[cfg(not(any(target_os = "espidf", target_os = "vita")))]
use crate::backend::c;
/// A command for use with [`membarrier`] and [`membarrier_cpu`].
@@ -44,6 +45,7 @@ pub enum MembarrierCommand {
target_os = "espidf",
target_os = "fuchsia",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi"
)))]
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
@@ -82,6 +84,7 @@ pub enum Resource {
solarish,
target_os = "aix",
target_os = "haiku",
+ target_os = "hurd",
target_os = "nto"
)))]
Locks = bitcast!(c::RLIMIT_LOCKS),
@@ -91,6 +94,7 @@ pub enum Resource {
solarish,
target_os = "aix",
target_os = "haiku",
+ target_os = "hurd",
target_os = "nto"
)))]
Sigpending = bitcast!(c::RLIMIT_SIGPENDING),
@@ -100,6 +104,7 @@ pub enum Resource {
solarish,
target_os = "aix",
target_os = "haiku",
+ target_os = "hurd",
target_os = "nto"
)))]
Msgqueue = bitcast!(c::RLIMIT_MSGQUEUE),
@@ -109,6 +114,7 @@ pub enum Resource {
solarish,
target_os = "aix",
target_os = "haiku",
+ target_os = "hurd",
target_os = "nto"
)))]
Nice = bitcast!(c::RLIMIT_NICE),
@@ -118,6 +124,7 @@ pub enum Resource {
solarish,
target_os = "aix",
target_os = "haiku",
+ target_os = "hurd",
target_os = "nto"
)))]
Rtprio = bitcast!(c::RLIMIT_RTPRIO),
@@ -129,6 +136,7 @@ pub enum Resource {
target_os = "android",
target_os = "emscripten",
target_os = "haiku",
+ target_os = "hurd",
target_os = "nto",
)))]
Rttime = bitcast!(c::RLIMIT_RTTIME),
diff --git a/vendor/rustix/src/backend/libc/pty/syscalls.rs b/vendor/rustix/src/backend/libc/pty/syscalls.rs
index cf566045d..86f3a6c46 100644
--- a/vendor/rustix/src/backend/libc/pty/syscalls.rs
+++ b/vendor/rustix/src/backend/libc/pty/syscalls.rs
@@ -67,7 +67,8 @@ pub(crate) fn ptsname(fd: BorrowedFd<'_>, mut buffer: Vec<u8>) -> io::Result<CSt
if let Some(libc_ptsname_r) = ptsname_r.get() {
libc_ptsname_r(borrowed_fd(fd), buffer.as_mut_ptr().cast(), buffer.len())
} else {
- // The size declared in the `TIOCPTYGNAME` macro in sys/ttycom.h is 128.
+ // The size declared in the `TIOCPTYGNAME` macro in
+ // sys/ttycom.h is 128.
let mut name: [u8; 128] = [0_u8; 128];
match c::ioctl(borrowed_fd(fd), c::TIOCPTYGNAME as _, &mut name) {
0 => {
@@ -87,7 +88,8 @@ pub(crate) fn ptsname(fd: BorrowedFd<'_>, mut buffer: Vec<u8>) -> io::Result<CSt
return Err(io::Errno::from_raw_os_error(r));
}
- buffer.reserve(1); // use `Vec` reallocation strategy to grow capacity exponentially
+ // Use `Vec` reallocation strategy to grow capacity exponentially.
+ buffer.reserve(1);
buffer.resize(buffer.capacity(), 0_u8);
}
}
diff --git a/vendor/rustix/src/backend/libc/rand/types.rs b/vendor/rustix/src/backend/libc/rand/types.rs
index cd436b618..46690b57f 100644
--- a/vendor/rustix/src/backend/libc/rand/types.rs
+++ b/vendor/rustix/src/backend/libc/rand/types.rs
@@ -18,7 +18,7 @@ bitflags! {
/// `GRND_INSECURE`
const INSECURE = c::GRND_INSECURE;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix-0.37.6/src/backend/libc/mm/mod.rs b/vendor/rustix/src/backend/libc/shm/mod.rs
index 1e0181a99..1e0181a99 100644
--- a/vendor/rustix-0.37.6/src/backend/libc/mm/mod.rs
+++ b/vendor/rustix/src/backend/libc/shm/mod.rs
diff --git a/vendor/rustix/src/backend/libc/shm/syscalls.rs b/vendor/rustix/src/backend/libc/shm/syscalls.rs
new file mode 100644
index 000000000..b0d907ff2
--- /dev/null
+++ b/vendor/rustix/src/backend/libc/shm/syscalls.rs
@@ -0,0 +1,25 @@
+use crate::ffi::CStr;
+
+use crate::backend::c;
+use crate::backend::conv::{c_str, ret, ret_owned_fd};
+use crate::fd::OwnedFd;
+use crate::fs::Mode;
+use crate::io;
+use crate::shm::ShmOFlags;
+
+pub(crate) fn shm_open(name: &CStr, oflags: ShmOFlags, mode: Mode) -> io::Result<OwnedFd> {
+ // On this platforms, `mode_t` is `u16` and can't be passed directly to a
+ // variadic function.
+ #[cfg(apple)]
+ let mode: c::c_uint = mode.bits().into();
+
+ // Otherwise, cast to `mode_t` as that's what `open` is documented to take.
+ #[cfg(not(apple))]
+ let mode: c::mode_t = mode.bits() as _;
+
+ unsafe { ret_owned_fd(c::shm_open(c_str(name), bitflags_bits!(oflags), mode)) }
+}
+
+pub(crate) fn shm_unlink(name: &CStr) -> io::Result<()> {
+ unsafe { ret(c::shm_unlink(c_str(name))) }
+}
diff --git a/vendor/rustix/src/backend/libc/shm/types.rs b/vendor/rustix/src/backend/libc/shm/types.rs
new file mode 100644
index 000000000..6575ef523
--- /dev/null
+++ b/vendor/rustix/src/backend/libc/shm/types.rs
@@ -0,0 +1,30 @@
+use crate::backend::c;
+use bitflags::bitflags;
+
+bitflags! {
+ /// `O_*` constants for use with [`shm_open`].
+ ///
+ /// [`shm_open`]: crate:shm::shm_open
+ #[repr(transparent)]
+ #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
+ pub struct ShmOFlags: u32 {
+ /// `O_CREAT`
+ #[doc(alias = "CREAT")]
+ const CREATE = bitcast!(c::O_CREAT);
+
+ /// `O_EXCL`
+ const EXCL = bitcast!(c::O_EXCL);
+
+ /// `O_RDONLY`
+ const RDONLY = bitcast!(c::O_RDONLY);
+
+ /// `O_RDWR`
+ const RDWR = bitcast!(c::O_RDWR);
+
+ /// `O_TRUNC`
+ const TRUNC = bitcast!(c::O_TRUNC);
+
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
+ const _ = !0;
+ }
+}
diff --git a/vendor/rustix/src/backend/libc/system/syscalls.rs b/vendor/rustix/src/backend/libc/system/syscalls.rs
index 27efd2653..05d674b2c 100644
--- a/vendor/rustix/src/backend/libc/system/syscalls.rs
+++ b/vendor/rustix/src/backend/libc/system/syscalls.rs
@@ -4,6 +4,8 @@ use super::types::RawUname;
use crate::backend::c;
#[cfg(not(target_os = "wasi"))]
use crate::backend::conv::ret_infallible;
+#[cfg(target_os = "linux")]
+use crate::system::RebootCommand;
#[cfg(linux_kernel)]
use crate::system::Sysinfo;
use core::mem::MaybeUninit;
@@ -11,6 +13,7 @@ use core::mem::MaybeUninit;
target_os = "emscripten",
target_os = "espidf",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi"
)))]
use {crate::backend::conv::ret, crate::io};
@@ -46,6 +49,7 @@ pub(crate) fn sysinfo() -> Sysinfo {
target_os = "emscripten",
target_os = "espidf",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi"
)))]
pub(crate) fn sethostname(name: &[u8]) -> io::Result<()> {
@@ -56,3 +60,8 @@ pub(crate) fn sethostname(name: &[u8]) -> io::Result<()> {
))
}
}
+
+#[cfg(target_os = "linux")]
+pub(crate) fn reboot(cmd: RebootCommand) -> io::Result<()> {
+ unsafe { ret(c::reboot(cmd as i32)) }
+}
diff --git a/vendor/rustix/src/backend/libc/termios/syscalls.rs b/vendor/rustix/src/backend/libc/termios/syscalls.rs
index df96595cd..35d4e2349 100644
--- a/vendor/rustix/src/backend/libc/termios/syscalls.rs
+++ b/vendor/rustix/src/backend/libc/termios/syscalls.rs
@@ -40,6 +40,13 @@ pub(crate) fn tcgetattr(fd: BorrowedFd<'_>) -> io::Result<Termios> {
let termios2 = unsafe {
let mut termios2 = MaybeUninit::<c::termios2>::uninit();
+ // QEMU's `TCGETS2` doesn't currently set `input_speed` or
+ // `output_speed` on PowerPC, so zero out the fields ourselves.
+ #[cfg(any(target_arch = "powerpc", target_arch = "powerpc64"))]
+ {
+ termios2.write(core::mem::zeroed());
+ }
+
ret(c::ioctl(
borrowed_fd(fd),
c::TCGETS2 as _,
@@ -60,6 +67,33 @@ pub(crate) fn tcgetattr(fd: BorrowedFd<'_>) -> io::Result<Termios> {
input_speed: termios2.c_ispeed,
output_speed: termios2.c_ospeed,
};
+
+ // QEMU's `TCGETS2` doesn't currently set `input_speed` or
+ // `output_speed` on PowerPC, so set them manually if we can.
+ #[cfg(any(target_arch = "powerpc", target_arch = "powerpc64"))]
+ {
+ use crate::termios::speed;
+
+ if result.output_speed == 0 && (termios2.c_cflag & c::CBAUD) != c::BOTHER {
+ if let Some(output_speed) = speed::decode(termios2.c_cflag & c::CBAUD) {
+ result.output_speed = output_speed;
+ }
+ }
+ if result.input_speed == 0
+ && ((termios2.c_cflag & c::CIBAUD) >> c::IBSHIFT) != c::BOTHER
+ {
+ // For input speeds, `B0` is special-cased to mean the input
+ // speed is the same as the output speed.
+ if ((termios2.c_cflag & c::CIBAUD) >> c::IBSHIFT) == c::B0 {
+ result.input_speed = result.output_speed;
+ } else if let Some(input_speed) =
+ speed::decode((termios2.c_cflag & c::CIBAUD) >> c::IBSHIFT)
+ {
+ result.input_speed = input_speed;
+ }
+ }
+ }
+
result.special_codes.0[..termios2.c_cc.len()].copy_from_slice(&termios2.c_cc);
Ok(result)
@@ -110,12 +144,12 @@ pub(crate) fn tcsetattr(
// linux-raw-sys' ioctl-generation script for sparc isn't working yet,
// so as a temporary workaround, declare these manually.
#[cfg(any(target_arch = "sparc", target_arch = "sparc64"))]
- const TCSETS: u32 = 0x80245409;
+ const TCSETS: u32 = 0x8024_5409;
#[cfg(any(target_arch = "sparc", target_arch = "sparc64"))]
- const TCSETS2: u32 = 0x802c540d;
+ const TCSETS2: u32 = 0x802c_540d;
- // Translate from `optional_actions` into an ioctl request code. On MIPS,
- // `optional_actions` already has `TCGETS` added to it.
+ // Translate from `optional_actions` into an ioctl request code. On
+ // MIPS, `optional_actions` already has `TCGETS` added to it.
let request = TCSETS2
+ if cfg!(any(
target_arch = "mips",
@@ -341,7 +375,7 @@ pub(crate) fn cfmakeraw(termios: &mut Termios) {
pub(crate) fn isatty(fd: BorrowedFd<'_>) -> bool {
// Use the return value of `isatty` alone. We don't check `errno` because
// we return `bool` rather than `io::Result<bool>`, because we assume
- // `BorrrowedFd` protects us from `EBADF`, and any other reasonably
+ // `BorrowedFd` protects us from `EBADF`, and any other reasonably
// anticipated `errno` value would end up interpreted as “assume it's not a
// terminal†anyway.
unsafe { c::isatty(borrowed_fd(fd)) != 0 }
diff --git a/vendor/rustix/src/backend/libc/thread/syscalls.rs b/vendor/rustix/src/backend/libc/thread/syscalls.rs
index 846f0e2a8..33750f405 100644
--- a/vendor/rustix/src/backend/libc/thread/syscalls.rs
+++ b/vendor/rustix/src/backend/libc/thread/syscalls.rs
@@ -24,6 +24,7 @@ use {
target_os = "haiku",
target_os = "openbsd",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi",
)))]
use {crate::thread::ClockId, core::ptr::null_mut};
@@ -42,6 +43,7 @@ weak!(fn __nanosleep64(*const LibcTimespec, *mut LibcTimespec) -> c::c_int);
target_os = "haiku",
target_os = "openbsd",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi",
)))]
#[inline]
@@ -92,7 +94,12 @@ pub(crate) fn clock_nanosleep_relative(id: ClockId, request: &Timespec) -> Nanos
#[cfg(all(
fix_y2038,
- not(any(apple, target_os = "emscripten", target_os = "haiku"))
+ not(any(
+ apple,
+ target_os = "emscripten",
+ target_os = "haiku",
+ target_os = "vita"
+ ))
))]
fn clock_nanosleep_relative_old(id: ClockId, request: &Timespec) -> NanosleepRelativeResult {
let tv_sec = match request.tv_sec.try_into() {
@@ -137,6 +144,7 @@ fn clock_nanosleep_relative_old(id: ClockId, request: &Timespec) -> NanosleepRel
target_os = "haiku",
target_os = "openbsd",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi",
)))]
#[inline]
@@ -180,7 +188,12 @@ pub(crate) fn clock_nanosleep_absolute(id: ClockId, request: &Timespec) -> io::R
#[cfg(all(
fix_y2038,
- not(any(apple, target_os = "emscripten", target_os = "haiku"))
+ not(any(
+ apple,
+ target_os = "emscripten",
+ target_os = "haiku",
+ target_os = "vita"
+ ))
))]
fn clock_nanosleep_absolute_old(id: ClockId, request: &Timespec) -> io::Result<()> {
let flags = c::TIMER_ABSTIME;
diff --git a/vendor/rustix/src/backend/libc/time/types.rs b/vendor/rustix/src/backend/libc/time/types.rs
index 4d8c6bdab..1514b02d0 100644
--- a/vendor/rustix/src/backend/libc/time/types.rs
+++ b/vendor/rustix/src/backend/libc/time/types.rs
@@ -88,7 +88,7 @@ bitflags! {
/// `TFD_CLOEXEC`
const CLOEXEC = bitcast!(c::TFD_CLOEXEC);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -108,7 +108,7 @@ bitflags! {
#[cfg(linux_kernel)]
const CANCEL_ON_SET = bitcast!(c::TFD_TIMER_CANCEL_ON_SET);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/backend/linux_raw/c.rs b/vendor/rustix/src/backend/linux_raw/c.rs
index 65ddb1466..01c5eafb1 100644
--- a/vendor/rustix/src/backend/linux_raw/c.rs
+++ b/vendor/rustix/src/backend/linux_raw/c.rs
@@ -6,7 +6,7 @@
#![allow(unused_imports)]
#![allow(non_camel_case_types)]
-pub type size_t = usize;
+pub(crate) type size_t = usize;
pub(crate) use linux_raw_sys::ctypes::*;
pub(crate) use linux_raw_sys::errno::EINVAL;
pub(crate) use linux_raw_sys::ioctl::{FIONBIO, FIONREAD};
@@ -51,31 +51,88 @@ pub(crate) use linux_raw_sys::{
general::{O_CLOEXEC as SOCK_CLOEXEC, O_NONBLOCK as SOCK_NONBLOCK},
if_ether::*,
net::{
- AF_DECnet, __kernel_sa_family_t as sa_family_t,
- __kernel_sockaddr_storage as sockaddr_storage, cmsghdr, in6_addr, in_addr, ip_mreq,
- ipv6_mreq, linger, msghdr, sockaddr, sockaddr_in, sockaddr_in6, sockaddr_un, socklen_t,
- AF_APPLETALK, AF_ASH, AF_ATMPVC, AF_ATMSVC, AF_AX25, AF_BLUETOOTH, AF_BRIDGE, AF_CAN,
- AF_ECONET, AF_IEEE802154, AF_INET, AF_INET6, AF_IPX, AF_IRDA, AF_ISDN, AF_IUCV, AF_KEY,
- AF_LLC, AF_NETBEUI, AF_NETLINK, AF_NETROM, AF_PACKET, AF_PHONET, AF_PPPOX, AF_RDS, AF_ROSE,
- AF_RXRPC, AF_SECURITY, AF_SNA, AF_TIPC, AF_UNIX, AF_UNSPEC, AF_WANPIPE, AF_X25, IPPROTO_AH,
- IPPROTO_BEETPH, IPPROTO_COMP, IPPROTO_DCCP, IPPROTO_EGP, IPPROTO_ENCAP, IPPROTO_ESP,
- IPPROTO_ETHERNET, IPPROTO_FRAGMENT, IPPROTO_GRE, IPPROTO_ICMP, IPPROTO_ICMPV6, IPPROTO_IDP,
- IPPROTO_IGMP, IPPROTO_IP, IPPROTO_IPIP, IPPROTO_IPV6, IPPROTO_MH, IPPROTO_MPLS,
- IPPROTO_MPTCP, IPPROTO_MTP, IPPROTO_PIM, IPPROTO_PUP, IPPROTO_RAW, IPPROTO_ROUTING,
- IPPROTO_RSVP, IPPROTO_SCTP, IPPROTO_TCP, IPPROTO_TP, IPPROTO_UDP, IPPROTO_UDPLITE,
- IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP, IPV6_MULTICAST_HOPS, IPV6_MULTICAST_LOOP,
- IPV6_UNICAST_HOPS, IPV6_V6ONLY, IP_ADD_MEMBERSHIP, IP_DROP_MEMBERSHIP, IP_MULTICAST_LOOP,
- IP_MULTICAST_TTL, IP_TTL, MSG_CMSG_CLOEXEC, MSG_CONFIRM, MSG_DONTROUTE, MSG_DONTWAIT,
- MSG_EOR, MSG_ERRQUEUE, MSG_MORE, MSG_NOSIGNAL, MSG_OOB, MSG_PEEK, MSG_TRUNC, MSG_WAITALL,
- SCM_CREDENTIALS, SCM_RIGHTS, SHUT_RD, SHUT_RDWR, SHUT_WR, SOCK_DGRAM, SOCK_RAW, SOCK_RDM,
- SOCK_SEQPACKET, SOCK_STREAM, SOL_SOCKET, SO_BROADCAST, SO_DOMAIN, SO_ERROR, SO_KEEPALIVE,
- SO_LINGER, SO_PASSCRED, SO_RCVBUF, SO_RCVTIMEO_NEW, SO_RCVTIMEO_NEW as SO_RCVTIMEO,
- SO_RCVTIMEO_OLD, SO_REUSEADDR, SO_SNDBUF, SO_SNDTIMEO_NEW, SO_SNDTIMEO_NEW as SO_SNDTIMEO,
- SO_SNDTIMEO_OLD, SO_TYPE, TCP_NODELAY,
+ linger, msghdr, sockaddr, sockaddr_in, sockaddr_in6, sockaddr_un, socklen_t, AF_DECnet,
+ __kernel_sa_family_t as sa_family_t, __kernel_sockaddr_storage as sockaddr_storage,
+ cmsghdr, in6_addr, in_addr, ip_mreq, ip_mreq_source, ip_mreqn, ipv6_mreq, AF_APPLETALK,
+ AF_ASH, AF_ATMPVC, AF_ATMSVC, AF_AX25, AF_BLUETOOTH, AF_BRIDGE, AF_CAN, AF_ECONET,
+ AF_IEEE802154, AF_INET, AF_INET6, AF_IPX, AF_IRDA, AF_ISDN, AF_IUCV, AF_KEY, AF_LLC,
+ AF_NETBEUI, AF_NETLINK, AF_NETROM, AF_PACKET, AF_PHONET, AF_PPPOX, AF_RDS, AF_ROSE,
+ AF_RXRPC, AF_SECURITY, AF_SNA, AF_TIPC, AF_UNIX, AF_UNSPEC, AF_WANPIPE, AF_X25,
+ IP6T_SO_ORIGINAL_DST, IPPROTO_FRAGMENT, IPPROTO_ICMPV6, IPPROTO_MH, IPPROTO_ROUTING,
+ IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP, IPV6_FREEBIND, IPV6_MULTICAST_HOPS,
+ IPV6_MULTICAST_LOOP, IPV6_RECVTCLASS, IPV6_TCLASS, IPV6_UNICAST_HOPS, IPV6_V6ONLY,
+ IP_ADD_MEMBERSHIP, IP_ADD_SOURCE_MEMBERSHIP, IP_DROP_MEMBERSHIP, IP_DROP_SOURCE_MEMBERSHIP,
+ IP_FREEBIND, IP_MULTICAST_LOOP, IP_MULTICAST_TTL, IP_RECVTOS, IP_TOS, IP_TTL,
+ MSG_CMSG_CLOEXEC, MSG_CONFIRM, MSG_DONTROUTE, MSG_DONTWAIT, MSG_EOR, MSG_ERRQUEUE,
+ MSG_MORE, MSG_NOSIGNAL, MSG_OOB, MSG_PEEK, MSG_TRUNC, MSG_WAITALL, SCM_CREDENTIALS,
+ SCM_RIGHTS, SHUT_RD, SHUT_RDWR, SHUT_WR, SOCK_DGRAM, SOCK_RAW, SOCK_RDM, SOCK_SEQPACKET,
+ SOCK_STREAM, SOL_SOCKET, SO_ACCEPTCONN, SO_BROADCAST, SO_COOKIE, SO_DOMAIN, SO_ERROR,
+ SO_INCOMING_CPU, SO_KEEPALIVE, SO_LINGER, SO_OOBINLINE, SO_ORIGINAL_DST, SO_PASSCRED,
+ SO_PROTOCOL, SO_RCVBUF, SO_RCVTIMEO_NEW, SO_RCVTIMEO_NEW as SO_RCVTIMEO, SO_RCVTIMEO_OLD,
+ SO_REUSEADDR, SO_REUSEPORT, SO_SNDBUF, SO_SNDTIMEO_NEW, SO_SNDTIMEO_NEW as SO_SNDTIMEO,
+ SO_SNDTIMEO_OLD, SO_TYPE, TCP_CONGESTION, TCP_CORK, TCP_KEEPCNT, TCP_KEEPIDLE,
+ TCP_KEEPINTVL, TCP_NODELAY, TCP_QUICKACK, TCP_THIN_LINEAR_TIMEOUTS, TCP_USER_TIMEOUT,
},
netlink::*,
};
+// Cast away bindgen's `enum` type to make these consistent with the other
+// `setsockopt`/`getsockopt` level values.
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_IP: u32 = linux_raw_sys::net::IPPROTO_IP as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_ICMP: u32 = linux_raw_sys::net::IPPROTO_ICMP as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_IGMP: u32 = linux_raw_sys::net::IPPROTO_IGMP as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_IPIP: u32 = linux_raw_sys::net::IPPROTO_IPIP as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_TCP: u32 = linux_raw_sys::net::IPPROTO_TCP as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_EGP: u32 = linux_raw_sys::net::IPPROTO_EGP as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_PUP: u32 = linux_raw_sys::net::IPPROTO_PUP as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_UDP: u32 = linux_raw_sys::net::IPPROTO_UDP as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_IDP: u32 = linux_raw_sys::net::IPPROTO_IDP as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_TP: u32 = linux_raw_sys::net::IPPROTO_TP as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_DCCP: u32 = linux_raw_sys::net::IPPROTO_DCCP as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_IPV6: u32 = linux_raw_sys::net::IPPROTO_IPV6 as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_RSVP: u32 = linux_raw_sys::net::IPPROTO_RSVP as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_GRE: u32 = linux_raw_sys::net::IPPROTO_GRE as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_ESP: u32 = linux_raw_sys::net::IPPROTO_ESP as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_AH: u32 = linux_raw_sys::net::IPPROTO_AH as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_MTP: u32 = linux_raw_sys::net::IPPROTO_MTP as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_BEETPH: u32 = linux_raw_sys::net::IPPROTO_BEETPH as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_ENCAP: u32 = linux_raw_sys::net::IPPROTO_ENCAP as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_PIM: u32 = linux_raw_sys::net::IPPROTO_PIM as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_COMP: u32 = linux_raw_sys::net::IPPROTO_COMP as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_SCTP: u32 = linux_raw_sys::net::IPPROTO_SCTP as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_UDPLITE: u32 = linux_raw_sys::net::IPPROTO_UDPLITE as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_MPLS: u32 = linux_raw_sys::net::IPPROTO_MPLS as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_ETHERNET: u32 = linux_raw_sys::net::IPPROTO_ETHERNET as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_RAW: u32 = linux_raw_sys::net::IPPROTO_RAW as _;
+#[cfg(feature = "net")]
+pub(crate) const IPPROTO_MPTCP: u32 = linux_raw_sys::net::IPPROTO_MPTCP as _;
+
#[cfg(any(feature = "process", feature = "runtime"))]
pub(crate) use linux_raw_sys::general::siginfo_t;
@@ -90,7 +147,7 @@ pub(crate) const EXIT_SIGNALED_SIGABRT: c_int = 128 + linux_raw_sys::general::SI
pub(crate) use linux_raw_sys::{
general::{
CLD_CONTINUED, CLD_DUMPED, CLD_EXITED, CLD_KILLED, CLD_STOPPED, CLD_TRAPPED,
- O_NONBLOCK as PIDFD_NONBLOCK, P_ALL, P_PID, P_PIDFD,
+ O_NONBLOCK as PIDFD_NONBLOCK, P_ALL, P_PGID, P_PID, P_PIDFD,
},
ioctl::TIOCSCTTY,
};
@@ -209,3 +266,28 @@ pub(crate) const CLOCK_THREAD_CPUTIME_ID: c_int =
linux_raw_sys::general::CLOCK_THREAD_CPUTIME_ID as _;
pub(crate) const CLOCK_PROCESS_CPUTIME_ID: c_int =
linux_raw_sys::general::CLOCK_PROCESS_CPUTIME_ID as _;
+
+#[cfg(feature = "system")]
+mod reboot_symbols {
+ use super::c_int;
+
+ pub(crate) const LINUX_REBOOT_MAGIC1: c_int = linux_raw_sys::general::LINUX_REBOOT_MAGIC1 as _;
+ pub(crate) const LINUX_REBOOT_MAGIC2: c_int = linux_raw_sys::general::LINUX_REBOOT_MAGIC2 as _;
+
+ pub(crate) const LINUX_REBOOT_CMD_RESTART: c_int =
+ linux_raw_sys::general::LINUX_REBOOT_CMD_RESTART as _;
+ pub(crate) const LINUX_REBOOT_CMD_HALT: c_int =
+ linux_raw_sys::general::LINUX_REBOOT_CMD_HALT as _;
+ pub(crate) const LINUX_REBOOT_CMD_CAD_ON: c_int =
+ linux_raw_sys::general::LINUX_REBOOT_CMD_CAD_ON as _;
+ pub(crate) const LINUX_REBOOT_CMD_CAD_OFF: c_int =
+ linux_raw_sys::general::LINUX_REBOOT_CMD_CAD_OFF as _;
+ pub(crate) const LINUX_REBOOT_CMD_POWER_OFF: c_int =
+ linux_raw_sys::general::LINUX_REBOOT_CMD_POWER_OFF as _;
+ pub(crate) const LINUX_REBOOT_CMD_SW_SUSPEND: c_int =
+ linux_raw_sys::general::LINUX_REBOOT_CMD_SW_SUSPEND as _;
+ pub(crate) const LINUX_REBOOT_CMD_KEXEC: c_int =
+ linux_raw_sys::general::LINUX_REBOOT_CMD_KEXEC as _;
+}
+#[cfg(feature = "system")]
+pub(crate) use reboot_symbols::*;
diff --git a/vendor/rustix/src/backend/linux_raw/conv.rs b/vendor/rustix/src/backend/linux_raw/conv.rs
index f915db140..4b3c15d7a 100644
--- a/vendor/rustix/src/backend/linux_raw/conv.rs
+++ b/vendor/rustix/src/backend/linux_raw/conv.rs
@@ -2,8 +2,8 @@
//!
//! System call arguments and return values are all communicated with inline
//! asm and FFI as `*mut Opaque`. To protect these raw pointers from escaping
-//! or being accidentally misused as they travel through the code, we wrap
-//! them in [`ArgReg`] and [`RetReg`] structs. This file provides `From`
+//! or being accidentally misused as they travel through the code, we wrap them
+//! in [`ArgReg`] and [`RetReg`] structs. This file provides `From`
//! implementations and explicit conversion functions for converting values
//! into and out of these wrapper structs.
//!
@@ -581,7 +581,7 @@ impl<'a, Num: ArgNumber> From<crate::event::EventfdFlags> for ArgReg<'a, Num> {
}
}
-#[cfg(all(feature = "alloc", feature = "event"))]
+#[cfg(feature = "event")]
impl<'a, Num: ArgNumber> From<crate::event::epoll::CreateFlags> for ArgReg<'a, Num> {
#[inline]
fn from(flags: crate::event::epoll::CreateFlags) -> Self {
@@ -622,6 +622,15 @@ impl<'a, Num: ArgNumber> From<crate::backend::mm::types::MlockFlags> for ArgReg<
}
#[cfg(feature = "mm")]
+#[cfg(any(linux_kernel, freebsdlike, netbsdlike))]
+impl<'a, Num: ArgNumber> From<crate::backend::mm::types::MlockAllFlags> for ArgReg<'a, Num> {
+ #[inline]
+ fn from(flags: crate::backend::mm::types::MlockAllFlags) -> Self {
+ c_uint(flags.bits())
+ }
+}
+
+#[cfg(feature = "mm")]
impl<'a, Num: ArgNumber> From<crate::backend::mm::types::MapFlags> for ArgReg<'a, Num> {
#[inline]
fn from(flags: crate::backend::mm::types::MapFlags) -> Self {
diff --git a/vendor/rustix/src/backend/linux_raw/event/epoll.rs b/vendor/rustix/src/backend/linux_raw/event/epoll.rs
index ecd48b784..6aa84d7aa 100644
--- a/vendor/rustix/src/backend/linux_raw/event/epoll.rs
+++ b/vendor/rustix/src/backend/linux_raw/event/epoll.rs
@@ -1,8 +1,4 @@
-//! epoll support.
-//!
-//! This is an experiment, and it isn't yet clear whether epoll is the right
-//! level of abstraction at which to introduce safety. But it works fairly well
-//! in simple examples 🙂.
+//! Linx `epoll` support.
//!
//! # Examples
//!
@@ -79,6 +75,7 @@ use crate::backend::c;
use crate::backend::event::syscalls;
use crate::fd::{AsFd, AsRawFd, OwnedFd};
use crate::io;
+#[cfg(feature = "alloc")]
use alloc::vec::Vec;
use bitflags::bitflags;
use core::ffi::c_void;
@@ -93,7 +90,7 @@ bitflags! {
/// `EPOLL_CLOEXEC`
const CLOEXEC = linux_raw_sys::general::EPOLL_CLOEXEC;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -148,7 +145,7 @@ bitflags! {
/// `EPOLLEXCLUSIVE`
const EXCLUSIVE = linux_raw_sys::general::EPOLLEXCLUSIVE as u32;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -242,6 +239,8 @@ pub fn delete(epoll: impl AsFd, source: impl AsFd) -> io::Result<()> {
///
/// For each event of interest, an element is written to `events`. On
/// success, this returns the number of written elements.
+#[cfg(feature = "alloc")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "alloc")))]
#[inline]
pub fn wait(epoll: impl AsFd, event_list: &mut EventVec, timeout: c::c_int) -> io::Result<()> {
// SAFETY: We're calling `epoll_wait` via FFI and we know how it
@@ -288,8 +287,8 @@ pub struct Event {
pub data: EventData,
}
-/// Data assocated with an [`Event`]. This can either be a 64-bit integer value
-/// or a pointer which preserves pointer provenance.
+/// Data associated with an [`Event`]. This can either be a 64-bit integer
+/// value or a pointer which preserves pointer provenance.
#[repr(C)]
#[derive(Copy, Clone)]
pub union EventData {
@@ -371,10 +370,12 @@ struct SixtyFourBitPointer {
}
/// A vector of `Event`s, plus context for interpreting them.
+#[cfg(feature = "alloc")]
pub struct EventVec {
events: Vec<Event>,
}
+#[cfg(feature = "alloc")]
impl EventVec {
/// Constructs an `EventVec` from raw pointer, length, and capacity.
///
@@ -449,6 +450,7 @@ impl EventVec {
}
}
+#[cfg(feature = "alloc")]
impl<'a> IntoIterator for &'a EventVec {
type IntoIter = Iter<'a>;
type Item = Event;
diff --git a/vendor/rustix/src/backend/linux_raw/event/mod.rs b/vendor/rustix/src/backend/linux_raw/event/mod.rs
index 4148a8c7f..605de2538 100644
--- a/vendor/rustix/src/backend/linux_raw/event/mod.rs
+++ b/vendor/rustix/src/backend/linux_raw/event/mod.rs
@@ -1,4 +1,3 @@
-#[cfg(feature = "alloc")]
pub mod epoll;
pub(crate) mod poll_fd;
pub(crate) mod syscalls;
diff --git a/vendor/rustix/src/backend/linux_raw/event/poll_fd.rs b/vendor/rustix/src/backend/linux_raw/event/poll_fd.rs
index c56c9152d..51c222e62 100644
--- a/vendor/rustix/src/backend/linux_raw/event/poll_fd.rs
+++ b/vendor/rustix/src/backend/linux_raw/event/poll_fd.rs
@@ -31,7 +31,7 @@ bitflags! {
/// `POLLRDHUP`
const RDHUP = linux_raw_sys::general::POLLRDHUP as u16;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/backend/linux_raw/event/syscalls.rs b/vendor/rustix/src/backend/linux_raw/event/syscalls.rs
index a8003b004..6cb8d3d96 100644
--- a/vendor/rustix/src/backend/linux_raw/event/syscalls.rs
+++ b/vendor/rustix/src/backend/linux_raw/event/syscalls.rs
@@ -6,17 +6,15 @@
#![allow(unsafe_code, clippy::undocumented_unsafe_blocks)]
use crate::backend::c;
-use crate::backend::conv::{c_int, c_uint, ret_owned_fd, ret_usize, slice_mut};
-use crate::event::{EventfdFlags, PollFd};
-use crate::fd::OwnedFd;
-use crate::io;
#[cfg(feature = "alloc")]
-use {
- crate::backend::conv::{by_ref, pass_usize, raw_fd, ret, zero},
- crate::event::epoll,
- crate::fd::BorrowedFd,
- linux_raw_sys::general::{EPOLL_CTL_ADD, EPOLL_CTL_DEL, EPOLL_CTL_MOD},
+use crate::backend::conv::pass_usize;
+use crate::backend::conv::{
+ by_ref, c_int, c_uint, raw_fd, ret, ret_owned_fd, ret_usize, slice_mut, zero,
};
+use crate::event::{epoll, EventfdFlags, PollFd};
+use crate::fd::{BorrowedFd, OwnedFd};
+use crate::io;
+use linux_raw_sys::general::{EPOLL_CTL_ADD, EPOLL_CTL_DEL, EPOLL_CTL_MOD};
#[cfg(any(target_arch = "aarch64", target_arch = "riscv64"))]
use {
crate::backend::conv::{opt_ref, size_of},
@@ -52,13 +50,11 @@ pub(crate) fn poll(fds: &mut [PollFd<'_>], timeout: c::c_int) -> io::Result<usiz
}
}
-#[cfg(feature = "alloc")]
#[inline]
pub(crate) fn epoll_create(flags: epoll::CreateFlags) -> io::Result<OwnedFd> {
unsafe { ret_owned_fd(syscall_readonly!(__NR_epoll_create1, flags)) }
}
-#[cfg(feature = "alloc")]
#[inline]
pub(crate) unsafe fn epoll_add(
epfd: BorrowedFd<'_>,
@@ -74,7 +70,6 @@ pub(crate) unsafe fn epoll_add(
))
}
-#[cfg(feature = "alloc")]
#[inline]
pub(crate) unsafe fn epoll_mod(
epfd: BorrowedFd<'_>,
@@ -90,7 +85,6 @@ pub(crate) unsafe fn epoll_mod(
))
}
-#[cfg(feature = "alloc")]
#[inline]
pub(crate) unsafe fn epoll_del(epfd: BorrowedFd<'_>, fd: c::c_int) -> io::Result<()> {
ret(syscall_readonly!(
diff --git a/vendor/rustix/src/backend/linux_raw/event/types.rs b/vendor/rustix/src/backend/linux_raw/event/types.rs
index 3821f8f64..eb34bd0b3 100644
--- a/vendor/rustix/src/backend/linux_raw/event/types.rs
+++ b/vendor/rustix/src/backend/linux_raw/event/types.rs
@@ -15,7 +15,7 @@ bitflags! {
/// `EFD_SEMAPHORE`
const SEMAPHORE = linux_raw_sys::general::EFD_SEMAPHORE;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/backend/linux_raw/fs/dir.rs b/vendor/rustix/src/backend/linux_raw/fs/dir.rs
index 4df589af5..ea1017957 100644
--- a/vendor/rustix/src/backend/linux_raw/fs/dir.rs
+++ b/vendor/rustix/src/backend/linux_raw/fs/dir.rs
@@ -18,9 +18,17 @@ pub struct Dir {
/// The `OwnedFd` that we read directory entries from.
fd: OwnedFd,
+ /// Have we seen any errors in this iteration?
+ any_errors: bool,
+
+ /// Should we rewind the stream on the next iteration?
+ rewind: bool,
+
+ /// The buffer for `linux_dirent64` entries.
buf: Vec<u8>,
+
+ /// Where we are in the buffer.
pos: usize,
- next: Option<u64>,
}
impl Dir {
@@ -38,25 +46,39 @@ impl Dir {
Ok(Self {
fd: fd_for_dir,
+ any_errors: false,
+ rewind: false,
buf: Vec::new(),
pos: 0,
- next: None,
})
}
/// `rewinddir(self)`
#[inline]
pub fn rewind(&mut self) {
+ self.any_errors = false;
+ self.rewind = true;
self.pos = self.buf.len();
- self.next = Some(0);
}
/// `readdir(self)`, where `None` means the end of the directory.
pub fn read(&mut self) -> Option<io::Result<DirEntry>> {
- if let Some(next) = self.next.take() {
- match crate::backend::fs::syscalls::_seek(self.fd.as_fd(), next as i64, SEEK_SET) {
+ // If we've seen errors, don't continue to try to read anyting further.
+ if self.any_errors {
+ return None;
+ }
+
+ // If a rewind was requested, seek to the beginning.
+ if self.rewind {
+ self.rewind = false;
+ match io::retry_on_intr(|| {
+ crate::backend::fs::syscalls::_seek(self.fd.as_fd(), 0, SEEK_SET)
+ }) {
Ok(_) => (),
- Err(err) => return Some(Err(err)),
+ Err(err) => {
+ self.any_errors = true;
+ return Some(Err(err));
+ }
}
}
@@ -78,7 +100,7 @@ impl Dir {
if self.buf.len() - self.pos < size_of::<linux_dirent64>() {
match self.read_more()? {
Ok(()) => (),
- Err(e) => return Some(Err(e)),
+ Err(err) => return Some(Err(err)),
}
}
@@ -136,14 +158,31 @@ impl Dir {
}
fn read_more(&mut self) -> Option<io::Result<()>> {
- let og_len = self.buf.len();
- // Capacity increment currently chosen by wild guess.
- self.buf
- .resize(self.buf.capacity() + 32 * size_of::<linux_dirent64>(), 0);
- let nread = match crate::backend::fs::syscalls::getdents(self.fd.as_fd(), &mut self.buf) {
+ // The first few times we're called, we allocate a relatively small
+ // buffer, because many directories are small. If we're called more,
+ // use progressively larger allocations, up to a fixed maximum.
+ //
+ // The specific sizes and policy here have not been tuned in detail yet
+ // and may need to be adjusted. In doing so, we should be careful to
+ // avoid unbounded buffer growth. This buffer only exists to share the
+ // cost of a `getdents` call over many entries, so if it gets too big,
+ // cache and heap usage will outweigh the benefit. And ultimately,
+ // directories can contain more entries than we can allocate contiguous
+ // memory for, so we'll always need to cap the size at some point.
+ if self.buf.len() < 1024 * size_of::<linux_dirent64>() {
+ self.buf.reserve(32 * size_of::<linux_dirent64>());
+ }
+ self.buf.resize(self.buf.capacity(), 0);
+ let nread = match io::retry_on_intr(|| {
+ crate::backend::fs::syscalls::getdents(self.fd.as_fd(), &mut self.buf)
+ }) {
Ok(nread) => nread,
+ Err(io::Errno::NOENT) => {
+ self.any_errors = true;
+ return None;
+ }
Err(err) => {
- self.buf.resize(og_len, 0);
+ self.any_errors = true;
return Some(Err(err));
}
};
@@ -225,3 +264,33 @@ impl DirEntry {
self.d_ino
}
}
+
+#[test]
+fn dir_iterator_handles_io_errors() {
+ // create a dir, keep the FD, then delete the dir
+ let tmp = tempfile::tempdir().unwrap();
+ let fd = crate::fs::openat(
+ crate::fs::CWD,
+ tmp.path(),
+ crate::fs::OFlags::RDONLY | crate::fs::OFlags::CLOEXEC,
+ crate::fs::Mode::empty(),
+ )
+ .unwrap();
+
+ let file_fd = crate::fs::openat(
+ &fd,
+ tmp.path().join("test.txt"),
+ crate::fs::OFlags::WRONLY | crate::fs::OFlags::CREATE,
+ crate::fs::Mode::RWXU,
+ )
+ .unwrap();
+
+ let mut dir = Dir::read_from(&fd).unwrap();
+
+ // Reach inside the `Dir` and replace its directory with a file, which
+ // will cause the subsequent `getdents64` to fail.
+ crate::io::dup2(&file_fd, &mut dir.fd).unwrap();
+
+ assert!(matches!(dir.next(), Some(Err(_))));
+ assert!(matches!(dir.next(), None));
+}
diff --git a/vendor/rustix/src/backend/linux_raw/fs/inotify.rs b/vendor/rustix/src/backend/linux_raw/fs/inotify.rs
index ef205ffdf..aaba71d7c 100644
--- a/vendor/rustix/src/backend/linux_raw/fs/inotify.rs
+++ b/vendor/rustix/src/backend/linux_raw/fs/inotify.rs
@@ -18,7 +18,7 @@ bitflags! {
/// `IN_NONBLOCK`
const NONBLOCK = linux_raw_sys::general::IN_NONBLOCK;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -38,7 +38,7 @@ bitflags! {
const CLOSE_NOWRITE = linux_raw_sys::general::IN_CLOSE_NOWRITE;
/// `IN_CLOSE_WRITE`
const CLOSE_WRITE = linux_raw_sys::general::IN_CLOSE_WRITE;
- /// `IN_CREATE `
+ /// `IN_CREATE`
const CREATE = linux_raw_sys::general::IN_CREATE;
/// `IN_DELETE`
const DELETE = linux_raw_sys::general::IN_DELETE;
@@ -75,7 +75,7 @@ bitflags! {
/// `IN_ONLYDIR`
const ONLYDIR = linux_raw_sys::general::IN_ONLYDIR;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -92,13 +92,12 @@ pub fn inotify_init(flags: CreateFlags) -> io::Result<OwnedFd> {
/// `inotify_add_watch(self, path, flags)`—Adds a watch to inotify.
///
-/// This registers or updates a watch for the filesystem path `path`
-/// and returns a watch descriptor corresponding to this watch.
+/// This registers or updates a watch for the filesystem path `path` and
+/// returns a watch descriptor corresponding to this watch.
///
-/// Note: Due to the existence of hardlinks, providing two
-/// different paths to this method may result in it returning
-/// the same watch descriptor. An application should keep track of this
-/// externally to avoid logic errors.
+/// Note: Due to the existence of hardlinks, providing two different paths to
+/// this method may result in it returning the same watch descriptor. An
+/// application should keep track of this externally to avoid logic errors.
#[inline]
pub fn inotify_add_watch<P: crate::path::Arg>(
inot: BorrowedFd<'_>,
diff --git a/vendor/rustix/src/backend/linux_raw/fs/syscalls.rs b/vendor/rustix/src/backend/linux_raw/fs/syscalls.rs
index e72afb8ab..f856fa8b0 100644
--- a/vendor/rustix/src/backend/linux_raw/fs/syscalls.rs
+++ b/vendor/rustix/src/backend/linux_raw/fs/syscalls.rs
@@ -378,6 +378,7 @@ pub(crate) fn fadvise(fd: BorrowedFd<'_>, pos: u64, len: u64, advice: Advice) ->
lo(len)
))
}
+
// On mips, the arguments are not reordered, and padding is inserted
// instead to ensure alignment.
#[cfg(any(target_arch = "mips", target_arch = "mips32r6"))]
@@ -393,6 +394,9 @@ pub(crate) fn fadvise(fd: BorrowedFd<'_>, pos: u64, len: u64, advice: Advice) ->
advice
))
}
+
+ // For all other 32-bit architectures, use `fadvise64_64` so that we get a
+ // 64-bit length.
#[cfg(all(
target_pointer_width = "32",
not(any(
@@ -413,6 +417,8 @@ pub(crate) fn fadvise(fd: BorrowedFd<'_>, pos: u64, len: u64, advice: Advice) ->
advice
))
}
+
+ // On 64-bit architectures, use `fadvise64` which is sufficient.
#[cfg(target_pointer_width = "64")]
unsafe {
ret(syscall_readonly!(
@@ -951,7 +957,7 @@ pub(crate) fn readlink(path: &CStr, buf: &mut [u8]) -> io::Result<usize> {
}
}
-#[cfg(feature = "alloc")]
+#[cfg(any(feature = "alloc", all(linux_kernel, feature = "procfs")))]
#[inline]
pub(crate) fn readlinkat(
dirfd: BorrowedFd<'_>,
diff --git a/vendor/rustix/src/backend/linux_raw/fs/types.rs b/vendor/rustix/src/backend/linux_raw/fs/types.rs
index 6e2e14f1e..85fe018a3 100644
--- a/vendor/rustix/src/backend/linux_raw/fs/types.rs
+++ b/vendor/rustix/src/backend/linux_raw/fs/types.rs
@@ -20,7 +20,7 @@ bitflags! {
/// `F_OK`
const EXISTS = linux_raw_sys::general::F_OK;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -61,7 +61,7 @@ bitflags! {
/// `AT_STATX_DONT_SYNC`
const STATX_DONT_SYNC = linux_raw_sys::general::AT_STATX_DONT_SYNC;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -120,7 +120,7 @@ bitflags! {
/// `S_ISVTX`
const SVTX = linux_raw_sys::general::S_ISVTX;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -179,9 +179,9 @@ bitflags! {
/// Similar to `ACCMODE`, but just includes the read/write flags, and
/// no other flags.
///
- /// Some implementations include `O_PATH` in `O_ACCMODE`, when
+ /// On some platforms, `PATH` may be included in `ACCMODE`, when
/// sometimes we really just want the read/write bits. Caution is
- /// indicated, as the presence of `O_PATH` may mean that the read/write
+ /// indicated, as the presence of `PATH` may mean that the read/write
/// bits don't have their usual meaning.
const RWMODE = linux_raw_sys::general::O_RDONLY |
linux_raw_sys::general::O_WRONLY |
@@ -250,7 +250,7 @@ bitflags! {
/// `O_DIRECT`
const DIRECT = linux_raw_sys::general::O_DIRECT;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -280,7 +280,7 @@ bitflags! {
/// `RESOLVE_CACHED` (since Linux 5.12)
const CACHED = linux_raw_sys::general::RESOLVE_CACHED as u64;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -301,7 +301,7 @@ bitflags! {
/// `RENAME_WHITEOUT`
const WHITEOUT = linux_raw_sys::general::RENAME_WHITEOUT;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -453,7 +453,7 @@ bitflags! {
/// `MFD_HUGE_16GB`
const HUGE_16GB = linux_raw_sys::general::MFD_HUGE_16GB;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -478,7 +478,7 @@ bitflags! {
/// `F_SEAL_FUTURE_WRITE` (since Linux 5.1)
const FUTURE_WRITE = linux_raw_sys::general::F_SEAL_FUTURE_WRITE;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -538,7 +538,7 @@ bitflags! {
/// `STATX_ALL`
const ALL = linux_raw_sys::general::STATX_ALL;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -565,7 +565,7 @@ bitflags! {
/// `FALLOC_FL_UNSHARE_RANGE`
const UNSHARE_RANGE = linux_raw_sys::general::FALLOC_FL_UNSHARE_RANGE;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -602,7 +602,7 @@ bitflags! {
/// `ST_SYNCHRONOUS`
const SYNCHRONOUS = linux_raw_sys::general::MS_SYNCHRONOUS as u64;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/backend/linux_raw/io/errno.rs b/vendor/rustix/src/backend/linux_raw/io/errno.rs
index 7730a7237..8247faa1c 100644
--- a/vendor/rustix/src/backend/linux_raw/io/errno.rs
+++ b/vendor/rustix/src/backend/linux_raw/io/errno.rs
@@ -60,7 +60,7 @@ impl Errno {
#[inline]
pub fn from_io_error(io_err: &std::io::Error) -> Option<Self> {
io_err.raw_os_error().and_then(|raw| {
- // `std::io::Error` could theoretically have arbitrary "OS error"
+ // `std::io::Error` could theoretically have arbitrary OS error
// values, so check that they're in Linux's range.
if (1..4096).contains(&raw) {
Some(Self::from_errno(raw as u32))
diff --git a/vendor/rustix/src/backend/linux_raw/io/syscalls.rs b/vendor/rustix/src/backend/linux_raw/io/syscalls.rs
index d2cbba0c3..62c68a22f 100644
--- a/vendor/rustix/src/backend/linux_raw/io/syscalls.rs
+++ b/vendor/rustix/src/backend/linux_raw/io/syscalls.rs
@@ -14,8 +14,8 @@ use crate::backend::conv::loff_t_from_u64;
))]
use crate::backend::conv::zero;
use crate::backend::conv::{
- c_uint, raw_fd, ret, ret_c_int, ret_c_uint, ret_discarded_fd, ret_owned_fd, ret_usize, slice,
- slice_mut,
+ c_uint, pass_usize, raw_fd, ret, ret_c_int, ret_c_uint, ret_discarded_fd, ret_owned_fd,
+ ret_usize, slice, slice_mut,
};
#[cfg(target_pointer_width = "32")]
use crate::backend::conv::{hi, lo};
@@ -96,25 +96,16 @@ pub(crate) fn preadv(
) -> io::Result<usize> {
let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), MAX_IOV)]);
- #[cfg(target_pointer_width = "32")]
+ // Unlike the plain "p" functions, the "pv" functions pass their offset in
+ // an endian-independent way, and always in two registers.
unsafe {
ret_usize(syscall!(
__NR_preadv,
fd,
bufs_addr,
bufs_len,
- hi(pos),
- lo(pos)
- ))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret_usize(syscall!(
- __NR_preadv,
- fd,
- bufs_addr,
- bufs_len,
- loff_t_from_u64(pos)
+ pass_usize(pos as usize),
+ pass_usize((pos >> 32) as usize)
))
}
}
@@ -128,26 +119,16 @@ pub(crate) fn preadv2(
) -> io::Result<usize> {
let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), MAX_IOV)]);
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret_usize(syscall!(
- __NR_preadv2,
- fd,
- bufs_addr,
- bufs_len,
- hi(pos),
- lo(pos),
- flags
- ))
- }
- #[cfg(target_pointer_width = "64")]
+ // Unlike the plain "p" functions, the "pv" functions pass their offset in
+ // an endian-independent way, and always in two registers.
unsafe {
ret_usize(syscall!(
__NR_preadv2,
fd,
bufs_addr,
bufs_len,
- loff_t_from_u64(pos),
+ pass_usize(pos as usize),
+ pass_usize((pos >> 32) as usize),
flags
))
}
@@ -217,25 +198,16 @@ pub(crate) fn writev(fd: BorrowedFd<'_>, bufs: &[IoSlice<'_>]) -> io::Result<usi
pub(crate) fn pwritev(fd: BorrowedFd<'_>, bufs: &[IoSlice<'_>], pos: u64) -> io::Result<usize> {
let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), MAX_IOV)]);
- #[cfg(target_pointer_width = "32")]
+ // Unlike the plain "p" functions, the "pv" functions pass their offset in
+ // an endian-independent way, and always in two registers.
unsafe {
ret_usize(syscall_readonly!(
__NR_pwritev,
fd,
bufs_addr,
bufs_len,
- hi(pos),
- lo(pos)
- ))
- }
- #[cfg(target_pointer_width = "64")]
- unsafe {
- ret_usize(syscall_readonly!(
- __NR_pwritev,
- fd,
- bufs_addr,
- bufs_len,
- loff_t_from_u64(pos)
+ pass_usize(pos as usize),
+ pass_usize((pos >> 32) as usize)
))
}
}
@@ -249,26 +221,16 @@ pub(crate) fn pwritev2(
) -> io::Result<usize> {
let (bufs_addr, bufs_len) = slice(&bufs[..cmp::min(bufs.len(), MAX_IOV)]);
- #[cfg(target_pointer_width = "32")]
- unsafe {
- ret_usize(syscall_readonly!(
- __NR_pwritev2,
- fd,
- bufs_addr,
- bufs_len,
- hi(pos),
- lo(pos),
- flags
- ))
- }
- #[cfg(target_pointer_width = "64")]
+ // Unlike the plain "p" functions, the "pv" functions pass their offset in
+ // an endian-independent way, and always in two registers.
unsafe {
ret_usize(syscall_readonly!(
__NR_pwritev2,
fd,
bufs_addr,
bufs_len,
- loff_t_from_u64(pos),
+ pass_usize(pos as usize),
+ pass_usize((pos >> 32) as usize),
flags
))
}
diff --git a/vendor/rustix/src/backend/linux_raw/io/types.rs b/vendor/rustix/src/backend/linux_raw/io/types.rs
index fb7e913a0..4b3dfc686 100644
--- a/vendor/rustix/src/backend/linux_raw/io/types.rs
+++ b/vendor/rustix/src/backend/linux_raw/io/types.rs
@@ -12,7 +12,7 @@ bitflags! {
/// `FD_CLOEXEC`
const CLOEXEC = linux_raw_sys::general::FD_CLOEXEC;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -36,7 +36,7 @@ bitflags! {
/// `RWF_APPEND` (since Linux 4.16)
const APPEND = linux_raw_sys::general::RWF_APPEND;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -51,7 +51,7 @@ bitflags! {
/// `O_CLOEXEC`
const CLOEXEC = linux_raw_sys::general::O_CLOEXEC;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/backend/linux_raw/mm/syscalls.rs b/vendor/rustix/src/backend/linux_raw/mm/syscalls.rs
index b51f826a9..3d4274cfe 100644
--- a/vendor/rustix/src/backend/linux_raw/mm/syscalls.rs
+++ b/vendor/rustix/src/backend/linux_raw/mm/syscalls.rs
@@ -6,6 +6,8 @@
#![allow(unsafe_code)]
#![allow(clippy::undocumented_unsafe_blocks)]
+#[cfg(any(linux_kernel, freebsdlike, netbsdlike))]
+use super::types::MlockAllFlags;
use super::types::{
Advice, MapFlags, MlockFlags, MprotectFlags, MremapFlags, MsyncFlags, ProtFlags,
UserfaultfdFlags,
@@ -210,3 +212,30 @@ pub(crate) unsafe fn munlock(addr: *mut c::c_void, length: usize) -> io::Result<
pub(crate) unsafe fn userfaultfd(flags: UserfaultfdFlags) -> io::Result<OwnedFd> {
ret_owned_fd(syscall_readonly!(__NR_userfaultfd, flags))
}
+
+/// Locks all pages mapped into the address space of the calling process.
+///
+/// This includes the pages of the code, data, and stack segment, as well as
+/// shared libraries, user space kernel data, shared memory, and memory-mapped
+/// files. All mapped pages are guaranteed to be resident in RAM when the call
+/// returns successfully; the pages are guaranteed to stay in RAM until later
+/// unlocked.
+#[inline]
+#[cfg(any(linux_kernel, freebsdlike, netbsdlike))]
+pub(crate) fn mlockall(flags: MlockAllFlags) -> io::Result<()> {
+ // When `mlockall` is used with `MCL_ONFAULT | MCL_FUTURE`, the ordering
+ // of `mlockall` with respect to arbitrary loads may be significant,
+ // because if a load happens and evokes a fault before the `mlockall`,
+ // the memory doesn't get locked, but if the load and therefore
+ // the fault happens after, then the memory does get locked.
+ // So to be conservative in this regard, we use `syscall` instead
+ // of `syscall_readonly`
+ unsafe { ret(syscall!(__NR_mlockall, flags)) }
+}
+
+/// Unlocks all pages mapped into the address space of the calling process.
+#[inline]
+#[cfg(any(linux_kernel, freebsdlike, netbsdlike))]
+pub(crate) fn munlockall() -> io::Result<()> {
+ unsafe { ret(syscall_readonly!(__NR_munlockall)) }
+}
diff --git a/vendor/rustix/src/backend/linux_raw/mm/types.rs b/vendor/rustix/src/backend/linux_raw/mm/types.rs
index 0dfb41050..b5e36640d 100644
--- a/vendor/rustix/src/backend/linux_raw/mm/types.rs
+++ b/vendor/rustix/src/backend/linux_raw/mm/types.rs
@@ -17,7 +17,7 @@ bitflags! {
/// `PROT_EXEC`
const EXEC = linux_raw_sys::general::PROT_EXEC;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -56,7 +56,7 @@ bitflags! {
#[cfg(any(target_arch = "sparc", target_arch = "sparc64"))]
const ADI = linux_raw_sys::general::PROT_ADI;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -106,7 +106,7 @@ bitflags! {
#[cfg(not(any(target_arch = "mips", target_arch = "mips32r6", target_arch = "mips64", target_arch = "mips64r6")))]
const UNINITIALIZED = linux_raw_sys::general::MAP_UNINITIALIZED;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -126,7 +126,7 @@ bitflags! {
/// `MREMAP_DONTUNMAP` (since Linux 5.7)
const DONTUNMAP = linux_raw_sys::general::MREMAP_DONTUNMAP;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -148,7 +148,7 @@ bitflags! {
/// written).
const INVALIDATE = linux_raw_sys::general::MS_INVALIDATE;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -163,7 +163,7 @@ bitflags! {
/// `MLOCK_ONFAULT`
const ONFAULT = linux_raw_sys::general::MLOCK_ONFAULT;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -240,9 +240,9 @@ pub enum Advice {
impl Advice {
/// `POSIX_MADV_DONTNEED`
///
- /// On Linux, this is mapped to `POSIX_MADV_NORMAL` because
- /// Linux's `MADV_DONTNEED` differs from `POSIX_MADV_DONTNEED`. See
- /// `LinuxDontNeed` for the Linux behavior.
+ /// On Linux, this is mapped to `POSIX_MADV_NORMAL` because Linux's
+ /// `MADV_DONTNEED` differs from `POSIX_MADV_DONTNEED`. See `LinuxDontNeed`
+ /// for the Linux behavior.
pub const DontNeed: Self = Self::Normal;
}
@@ -258,7 +258,39 @@ bitflags! {
/// `O_NONBLOCK`
const NONBLOCK = linux_raw_sys::general::O_NONBLOCK;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
+ const _ = !0;
+ }
+}
+
+#[cfg(any(linux_kernel, freebsdlike, netbsdlike))]
+bitflags! {
+ /// `MCL_*` flags for use with [`mlockall`].
+ ///
+ /// [`mlockall`]: crate::mm::mlockall
+ #[repr(transparent)]
+ #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
+ pub struct MlockAllFlags: u32 {
+ /// Used together with `MCL_CURRENT`, `MCL_FUTURE`, or both. Mark all
+ /// current (with `MCL_CURRENT`) or future (with `MCL_FUTURE`) mappings
+ /// to lock pages when they are faulted in. When used with
+ /// `MCL_CURRENT`, all present pages are locked, but `mlockall` will
+ /// not fault in non-present pages. When used with `MCL_FUTURE`, all
+ /// future mappings will be marked to lock pages when they are faulted
+ /// in, but they will not be populated by the lock when the mapping is
+ /// created. `MCL_ONFAULT` must be used with either `MCL_CURRENT` or
+ /// `MCL_FUTURE` or both.
+ const ONFAULT = linux_raw_sys::general::MCL_ONFAULT;
+ /// Lock all pages which will become mapped into the address space of
+ /// the process in the future. These could be, for instance, new pages
+ /// required by a growing heap and stack as well as new memory-mapped
+ /// files or shared memory regions.
+ const FUTURE = linux_raw_sys::general::MCL_FUTURE;
+ /// Lock all pages which are currently mapped into the address space of
+ /// the process.
+ const CURRENT = linux_raw_sys::general::MCL_CURRENT;
+
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/backend/linux_raw/mod.rs b/vendor/rustix/src/backend/linux_raw/mod.rs
index 9a07467f4..388f573dc 100644
--- a/vendor/rustix/src/backend/linux_raw/mod.rs
+++ b/vendor/rustix/src/backend/linux_raw/mod.rs
@@ -67,6 +67,8 @@ pub(crate) mod pty;
pub(crate) mod rand;
#[cfg(feature = "runtime")]
pub(crate) mod runtime;
+#[cfg(feature = "shm")]
+pub(crate) mod shm;
#[cfg(feature = "system")]
pub(crate) mod system;
#[cfg(feature = "termios")]
diff --git a/vendor/rustix/src/backend/linux_raw/mount/types.rs b/vendor/rustix/src/backend/linux_raw/mount/types.rs
index 221f8f315..3a797ab77 100644
--- a/vendor/rustix/src/backend/linux_raw/mount/types.rs
+++ b/vendor/rustix/src/backend/linux_raw/mount/types.rs
@@ -57,7 +57,7 @@ bitflags! {
/// `MS_NOSYMFOLLOW`
const NOSYMFOLLOW = linux_raw_sys::general::MS_NOSYMFOLLOW;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -78,7 +78,7 @@ bitflags! {
/// `UMOUNT_NOFOLLOW`
const NOFOLLOW = linux_raw_sys::general::UMOUNT_NOFOLLOW;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -94,7 +94,7 @@ bitflags! {
/// `FSOPEN_CLOEXEC`
const FSOPEN_CLOEXEC = linux_raw_sys::general::FSOPEN_CLOEXEC;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -110,7 +110,7 @@ bitflags! {
/// `FSMOUNT_CLOEXEC`
const FSMOUNT_CLOEXEC = linux_raw_sys::general::FSMOUNT_CLOEXEC;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -189,7 +189,7 @@ bitflags! {
/// `MOUNT_ATTR__ATIME_FLAGS`
const MOUNT_ATTR_SIZE_VER0 = linux_raw_sys::general::MOUNT_ATTR_SIZE_VER0;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -230,7 +230,7 @@ bitflags! {
/// `MOVE_MOUNT__MASK`
const MOVE_MOUNT__MASK = linux_raw_sys::general::MOVE_MOUNT__MASK;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -261,7 +261,7 @@ bitflags! {
/// `AT_SYMLINK_NOFOLLOW`
const AT_SYMLINK_NOFOLLOW = linux_raw_sys::general::AT_SYMLINK_NOFOLLOW;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -286,7 +286,7 @@ bitflags! {
/// `FSPICK_EMPTY_PATH`
const FSPICK_EMPTY_PATH = linux_raw_sys::general::FSPICK_EMPTY_PATH;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -311,7 +311,7 @@ bitflags! {
/// `MS_REC`
const REC = linux_raw_sys::general::MS_REC;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -323,7 +323,7 @@ bitflags! {
const REMOUNT = linux_raw_sys::general::MS_REMOUNT;
const MOVE = linux_raw_sys::general::MS_MOVE;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/backend/linux_raw/net/mod.rs b/vendor/rustix/src/backend/linux_raw/net/mod.rs
index 2b6ab34ba..f83c54621 100644
--- a/vendor/rustix/src/backend/linux_raw/net/mod.rs
+++ b/vendor/rustix/src/backend/linux_raw/net/mod.rs
@@ -2,5 +2,6 @@ pub(crate) mod addr;
pub(crate) mod msghdr;
pub(crate) mod read_sockaddr;
pub(crate) mod send_recv;
+pub(crate) mod sockopt;
pub(crate) mod syscalls;
pub(crate) mod write_sockaddr;
diff --git a/vendor/rustix/src/backend/linux_raw/net/msghdr.rs b/vendor/rustix/src/backend/linux_raw/net/msghdr.rs
index 659093920..2b88bfbbc 100644
--- a/vendor/rustix/src/backend/linux_raw/net/msghdr.rs
+++ b/vendor/rustix/src/backend/linux_raw/net/msghdr.rs
@@ -122,7 +122,7 @@ pub(crate) fn with_unix_msghdr<R>(
f: impl FnOnce(c::msghdr) -> R,
) -> R {
f(c::msghdr {
- msg_name: as_ptr(addr) as _,
+ msg_name: as_ptr(&addr.unix) as _,
msg_namelen: addr.addr_len() as _,
msg_iov: iov.as_ptr() as _,
msg_iovlen: msg_iov_len(iov.len()),
diff --git a/vendor/rustix/src/backend/linux_raw/net/read_sockaddr.rs b/vendor/rustix/src/backend/linux_raw/net/read_sockaddr.rs
index f4b7d9914..af7282c98 100644
--- a/vendor/rustix/src/backend/linux_raw/net/read_sockaddr.rs
+++ b/vendor/rustix/src/backend/linux_raw/net/read_sockaddr.rs
@@ -1,5 +1,5 @@
-//! The BSD sockets API requires us to read the `ss_family` field before
-//! we can interpret the rest of a `sockaddr` produced by the kernel.
+//! The BSD sockets API requires us to read the `ss_family` field before we can
+//! interpret the rest of a `sockaddr` produced by the kernel.
#![allow(unsafe_code)]
use crate::backend::c;
@@ -110,7 +110,7 @@ pub(crate) unsafe fn read_sockaddr(
}
}
-/// Read a socket address returned from the OS.
+/// Read an optional socket address returned from the OS.
///
/// # Safety
///
diff --git a/vendor/rustix/src/backend/linux_raw/net/send_recv.rs b/vendor/rustix/src/backend/linux_raw/net/send_recv.rs
index 43b35341a..d5cdd075e 100644
--- a/vendor/rustix/src/backend/linux_raw/net/send_recv.rs
+++ b/vendor/rustix/src/backend/linux_raw/net/send_recv.rs
@@ -2,7 +2,8 @@ use crate::backend::c;
use bitflags::bitflags;
bitflags! {
- /// `MSG_* flags for use with [`send`], [`send_to`], and related functions.
+ /// `MSG_*` flags for use with [`send`], [`send_to`], and related
+ /// functions.
///
/// [`send`]: crate::net::send
/// [`sendto`]: crate::net::sendto
@@ -24,13 +25,14 @@ bitflags! {
/// `MSG_OOB`
const OOB = c::MSG_OOB;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
bitflags! {
- /// `MSG_* flags for use with [`recv`], [`recvfrom`], and related functions.
+ /// `MSG_*` flags for use with [`recv`], [`recvfrom`], and related
+ /// functions.
///
/// [`recv`]: crate::net::recv
/// [`recvfrom`]: crate::net::recvfrom
@@ -52,7 +54,7 @@ bitflags! {
/// `MSG_WAITALL`
const WAITALL = c::MSG_WAITALL;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/backend/linux_raw/net/sockopt.rs b/vendor/rustix/src/backend/linux_raw/net/sockopt.rs
new file mode 100644
index 000000000..6a740bbf7
--- /dev/null
+++ b/vendor/rustix/src/backend/linux_raw/net/sockopt.rs
@@ -0,0 +1,879 @@
+//! linux_raw syscalls supporting `rustix::net::sockopt`.
+//!
+//! # Safety
+//!
+//! See the `rustix::backend` module documentation for details.
+#![allow(unsafe_code, clippy::undocumented_unsafe_blocks)]
+
+use crate::backend::c;
+use crate::backend::conv::{by_mut, c_uint, ret, socklen_t};
+use crate::fd::BorrowedFd;
+#[cfg(feature = "alloc")]
+use crate::ffi::CStr;
+use crate::io;
+use crate::net::sockopt::Timeout;
+use crate::net::{
+ AddressFamily, Ipv4Addr, Ipv6Addr, Protocol, RawProtocol, SocketAddrAny, SocketAddrStorage,
+ SocketAddrV4, SocketAddrV6, SocketType, UCred,
+};
+#[cfg(feature = "alloc")]
+use alloc::borrow::ToOwned;
+#[cfg(feature = "alloc")]
+use alloc::string::String;
+use core::mem::MaybeUninit;
+use core::time::Duration;
+use linux_raw_sys::general::{__kernel_old_timeval, __kernel_sock_timeval};
+#[cfg(target_arch = "x86")]
+use {
+ crate::backend::conv::{slice_just_addr, x86_sys},
+ crate::backend::reg::{ArgReg, SocketArg},
+ linux_raw_sys::net::{SYS_GETSOCKOPT, SYS_SETSOCKOPT},
+};
+
+#[inline]
+fn getsockopt<T: Copy>(fd: BorrowedFd<'_>, level: u32, optname: u32) -> io::Result<T> {
+ let mut optlen: c::socklen_t = core::mem::size_of::<T>().try_into().unwrap();
+ debug_assert!(
+ optlen as usize >= core::mem::size_of::<c::c_int>(),
+ "Socket APIs don't ever use `bool` directly"
+ );
+
+ let mut value = MaybeUninit::<T>::uninit();
+ getsockopt_raw(fd, level, optname, &mut value, &mut optlen)?;
+
+ assert_eq!(
+ optlen as usize,
+ core::mem::size_of::<T>(),
+ "unexpected getsockopt size"
+ );
+
+ unsafe { Ok(value.assume_init()) }
+}
+
+#[inline]
+fn getsockopt_raw<T>(
+ fd: BorrowedFd<'_>,
+ level: u32,
+ optname: u32,
+ value: &mut MaybeUninit<T>,
+ optlen: &mut c::socklen_t,
+) -> io::Result<()> {
+ #[cfg(not(target_arch = "x86"))]
+ unsafe {
+ ret(syscall!(
+ __NR_getsockopt,
+ fd,
+ c_uint(level),
+ c_uint(optname),
+ value,
+ by_mut(optlen)
+ ))
+ }
+ #[cfg(target_arch = "x86")]
+ unsafe {
+ ret(syscall!(
+ __NR_socketcall,
+ x86_sys(SYS_GETSOCKOPT),
+ slice_just_addr::<ArgReg<'_, SocketArg>, _>(&[
+ fd.into(),
+ c_uint(level),
+ c_uint(optname),
+ value.into(),
+ by_mut(optlen),
+ ])
+ ))
+ }
+}
+
+#[inline]
+fn setsockopt<T: Copy>(fd: BorrowedFd<'_>, level: u32, optname: u32, value: T) -> io::Result<()> {
+ let optlen = core::mem::size_of::<T>().try_into().unwrap();
+ debug_assert!(
+ optlen as usize >= core::mem::size_of::<c::c_int>(),
+ "Socket APIs don't ever use `bool` directly"
+ );
+ setsockopt_raw(fd, level, optname, &value, optlen)
+}
+
+#[inline]
+fn setsockopt_raw<T>(
+ fd: BorrowedFd<'_>,
+ level: u32,
+ optname: u32,
+ ptr: *const T,
+ optlen: c::socklen_t,
+) -> io::Result<()> {
+ #[cfg(not(target_arch = "x86"))]
+ unsafe {
+ ret(syscall_readonly!(
+ __NR_setsockopt,
+ fd,
+ c_uint(level),
+ c_uint(optname),
+ ptr,
+ socklen_t(optlen)
+ ))
+ }
+ #[cfg(target_arch = "x86")]
+ unsafe {
+ ret(syscall_readonly!(
+ __NR_socketcall,
+ x86_sys(SYS_SETSOCKOPT),
+ slice_just_addr::<ArgReg<'_, SocketArg>, _>(&[
+ fd.into(),
+ c_uint(level),
+ c_uint(optname),
+ ptr.into(),
+ socklen_t(optlen),
+ ])
+ ))
+ }
+}
+
+#[inline]
+pub(crate) fn get_socket_type(fd: BorrowedFd<'_>) -> io::Result<SocketType> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_TYPE)
+}
+
+#[inline]
+pub(crate) fn set_socket_reuseaddr(fd: BorrowedFd<'_>, reuseaddr: bool) -> io::Result<()> {
+ setsockopt(fd, c::SOL_SOCKET, c::SO_REUSEADDR, from_bool(reuseaddr))
+}
+
+#[inline]
+pub(crate) fn get_socket_reuseaddr(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_REUSEADDR).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn set_socket_broadcast(fd: BorrowedFd<'_>, broadcast: bool) -> io::Result<()> {
+ setsockopt(fd, c::SOL_SOCKET, c::SO_BROADCAST, from_bool(broadcast))
+}
+
+#[inline]
+pub(crate) fn get_socket_broadcast(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_BROADCAST).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn set_socket_linger(fd: BorrowedFd<'_>, linger: Option<Duration>) -> io::Result<()> {
+ // Convert `linger` to seconds, rounding up.
+ let l_linger = if let Some(linger) = linger {
+ duration_to_secs(linger)?
+ } else {
+ 0
+ };
+ let linger = c::linger {
+ l_onoff: c::c_int::from(linger.is_some()),
+ l_linger,
+ };
+ setsockopt(fd, c::SOL_SOCKET, c::SO_LINGER, linger)
+}
+
+#[inline]
+pub(crate) fn get_socket_linger(fd: BorrowedFd<'_>) -> io::Result<Option<Duration>> {
+ let linger: c::linger = getsockopt(fd, c::SOL_SOCKET, c::SO_LINGER)?;
+ Ok((linger.l_onoff != 0).then(|| Duration::from_secs(linger.l_linger as u64)))
+}
+
+#[inline]
+pub(crate) fn set_socket_passcred(fd: BorrowedFd<'_>, passcred: bool) -> io::Result<()> {
+ setsockopt(fd, c::SOL_SOCKET, c::SO_PASSCRED, from_bool(passcred))
+}
+
+#[inline]
+pub(crate) fn get_socket_passcred(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_PASSCRED).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn set_socket_timeout(
+ fd: BorrowedFd<'_>,
+ id: Timeout,
+ timeout: Option<Duration>,
+) -> io::Result<()> {
+ let time = duration_to_linux_sock_timeval(timeout)?;
+ let optname = match id {
+ Timeout::Recv => c::SO_RCVTIMEO_NEW,
+ Timeout::Send => c::SO_SNDTIMEO_NEW,
+ };
+ match setsockopt(fd, c::SOL_SOCKET, optname, time) {
+ Err(io::Errno::NOPROTOOPT) if c::SO_RCVTIMEO_NEW != c::SO_RCVTIMEO_OLD => {
+ set_socket_timeout_old(fd, id, timeout)
+ }
+ otherwise => otherwise,
+ }
+}
+
+/// Same as `set_socket_timeout` but uses `__kernel_old_timeval` instead of
+/// `__kernel_sock_timeval` and `_OLD` constants instead of `_NEW`.
+fn set_socket_timeout_old(
+ fd: BorrowedFd<'_>,
+ id: Timeout,
+ timeout: Option<Duration>,
+) -> io::Result<()> {
+ let time = duration_to_linux_old_timeval(timeout)?;
+ let optname = match id {
+ Timeout::Recv => c::SO_RCVTIMEO_OLD,
+ Timeout::Send => c::SO_SNDTIMEO_OLD,
+ };
+ setsockopt(fd, c::SOL_SOCKET, optname, time)
+}
+
+#[inline]
+pub(crate) fn get_socket_timeout(fd: BorrowedFd<'_>, id: Timeout) -> io::Result<Option<Duration>> {
+ let optname = match id {
+ Timeout::Recv => c::SO_RCVTIMEO_NEW,
+ Timeout::Send => c::SO_SNDTIMEO_NEW,
+ };
+ let time: __kernel_sock_timeval = match getsockopt(fd, c::SOL_SOCKET, optname) {
+ Err(io::Errno::NOPROTOOPT) if c::SO_RCVTIMEO_NEW != c::SO_RCVTIMEO_OLD => {
+ return get_socket_timeout_old(fd, id)
+ }
+ otherwise => otherwise?,
+ };
+ Ok(duration_from_linux_sock_timeval(time))
+}
+
+/// Same as `get_socket_timeout` but uses `__kernel_old_timeval` instead of
+/// `__kernel_sock_timeval` and `_OLD` constants instead of `_NEW`.
+fn get_socket_timeout_old(fd: BorrowedFd<'_>, id: Timeout) -> io::Result<Option<Duration>> {
+ let optname = match id {
+ Timeout::Recv => c::SO_RCVTIMEO_OLD,
+ Timeout::Send => c::SO_SNDTIMEO_OLD,
+ };
+ let time: __kernel_old_timeval = getsockopt(fd, c::SOL_SOCKET, optname)?;
+ Ok(duration_from_linux_old_timeval(time))
+}
+
+/// Convert a `__linux_sock_timeval` to a Rust `Option<Duration>`.
+#[inline]
+fn duration_from_linux_sock_timeval(time: __kernel_sock_timeval) -> Option<Duration> {
+ if time.tv_sec == 0 && time.tv_usec == 0 {
+ None
+ } else {
+ Some(Duration::from_secs(time.tv_sec as u64) + Duration::from_micros(time.tv_usec as u64))
+ }
+}
+
+/// Like `duration_from_linux` but uses Linux's old 32-bit
+/// `__kernel_old_timeval`.
+fn duration_from_linux_old_timeval(time: __kernel_old_timeval) -> Option<Duration> {
+ if time.tv_sec == 0 && time.tv_usec == 0 {
+ None
+ } else {
+ Some(Duration::from_secs(time.tv_sec as u64) + Duration::from_micros(time.tv_usec as u64))
+ }
+}
+
+/// Convert a Rust `Option<Duration>` to a `__kernel_sock_timeval`.
+#[inline]
+fn duration_to_linux_sock_timeval(timeout: Option<Duration>) -> io::Result<__kernel_sock_timeval> {
+ Ok(match timeout {
+ Some(timeout) => {
+ if timeout == Duration::ZERO {
+ return Err(io::Errno::INVAL);
+ }
+ // `subsec_micros` rounds down, so we use `subsec_nanos` and
+ // manually round up.
+ let mut timeout = __kernel_sock_timeval {
+ tv_sec: timeout.as_secs().try_into().unwrap_or(i64::MAX),
+ tv_usec: ((timeout.subsec_nanos() + 999) / 1000) as _,
+ };
+ if timeout.tv_sec == 0 && timeout.tv_usec == 0 {
+ timeout.tv_usec = 1;
+ }
+ timeout
+ }
+ None => __kernel_sock_timeval {
+ tv_sec: 0,
+ tv_usec: 0,
+ },
+ })
+}
+
+/// Like `duration_to_linux` but uses Linux's old 32-bit
+/// `__kernel_old_timeval`.
+fn duration_to_linux_old_timeval(timeout: Option<Duration>) -> io::Result<__kernel_old_timeval> {
+ Ok(match timeout {
+ Some(timeout) => {
+ if timeout == Duration::ZERO {
+ return Err(io::Errno::INVAL);
+ }
+
+ // `subsec_micros` rounds down, so we use `subsec_nanos` and
+ // manually round up.
+ let mut timeout = __kernel_old_timeval {
+ tv_sec: timeout.as_secs().try_into().unwrap_or(c::c_long::MAX),
+ tv_usec: ((timeout.subsec_nanos() + 999) / 1000) as _,
+ };
+ if timeout.tv_sec == 0 && timeout.tv_usec == 0 {
+ timeout.tv_usec = 1;
+ }
+ timeout
+ }
+ None => __kernel_old_timeval {
+ tv_sec: 0,
+ tv_usec: 0,
+ },
+ })
+}
+
+#[inline]
+pub(crate) fn get_socket_error(fd: BorrowedFd<'_>) -> io::Result<Result<(), io::Errno>> {
+ let err: c::c_int = getsockopt(fd, c::SOL_SOCKET, c::SO_ERROR)?;
+ Ok(if err == 0 {
+ Ok(())
+ } else {
+ Err(io::Errno::from_raw_os_error(err))
+ })
+}
+
+#[inline]
+pub(crate) fn set_socket_keepalive(fd: BorrowedFd<'_>, keepalive: bool) -> io::Result<()> {
+ setsockopt(fd, c::SOL_SOCKET, c::SO_KEEPALIVE, from_bool(keepalive))
+}
+
+#[inline]
+pub(crate) fn get_socket_keepalive(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_KEEPALIVE).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn set_socket_recv_buffer_size(fd: BorrowedFd<'_>, size: usize) -> io::Result<()> {
+ let size: c::c_int = size.try_into().map_err(|_| io::Errno::INVAL)?;
+ setsockopt(fd, c::SOL_SOCKET, c::SO_RCVBUF, size)
+}
+
+#[inline]
+pub(crate) fn get_socket_recv_buffer_size(fd: BorrowedFd<'_>) -> io::Result<usize> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_RCVBUF).map(|size: u32| size as usize)
+}
+
+#[inline]
+pub(crate) fn set_socket_send_buffer_size(fd: BorrowedFd<'_>, size: usize) -> io::Result<()> {
+ let size: c::c_int = size.try_into().map_err(|_| io::Errno::INVAL)?;
+ setsockopt(fd, c::SOL_SOCKET, c::SO_SNDBUF, size)
+}
+
+#[inline]
+pub(crate) fn get_socket_send_buffer_size(fd: BorrowedFd<'_>) -> io::Result<usize> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_SNDBUF).map(|size: u32| size as usize)
+}
+
+#[inline]
+pub(crate) fn get_socket_domain(fd: BorrowedFd<'_>) -> io::Result<AddressFamily> {
+ let domain: c::c_int = getsockopt(fd, c::SOL_SOCKET, c::SO_DOMAIN)?;
+ Ok(AddressFamily(
+ domain.try_into().map_err(|_| io::Errno::OPNOTSUPP)?,
+ ))
+}
+
+#[inline]
+pub(crate) fn get_socket_acceptconn(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_ACCEPTCONN).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn set_socket_oobinline(fd: BorrowedFd<'_>, value: bool) -> io::Result<()> {
+ setsockopt(fd, c::SOL_SOCKET, c::SO_OOBINLINE, from_bool(value))
+}
+
+#[inline]
+pub(crate) fn get_socket_oobinline(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_OOBINLINE).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn set_socket_reuseport(fd: BorrowedFd<'_>, value: bool) -> io::Result<()> {
+ setsockopt(fd, c::SOL_SOCKET, c::SO_REUSEPORT, from_bool(value))
+}
+
+#[inline]
+pub(crate) fn get_socket_reuseport(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_REUSEPORT).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn get_socket_protocol(fd: BorrowedFd<'_>) -> io::Result<Option<Protocol>> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_PROTOCOL)
+ .map(|raw: u32| RawProtocol::new(raw).map(Protocol::from_raw))
+}
+
+#[inline]
+pub(crate) fn get_socket_cookie(fd: BorrowedFd<'_>) -> io::Result<u64> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_COOKIE)
+}
+
+#[inline]
+pub(crate) fn get_socket_incoming_cpu(fd: BorrowedFd<'_>) -> io::Result<u32> {
+ getsockopt(fd, c::SOL_SOCKET, c::SO_INCOMING_CPU)
+}
+
+#[inline]
+pub(crate) fn set_socket_incoming_cpu(fd: BorrowedFd<'_>, value: u32) -> io::Result<()> {
+ setsockopt(fd, c::SOL_SOCKET, c::SO_INCOMING_CPU, value)
+}
+
+#[inline]
+pub(crate) fn set_ip_ttl(fd: BorrowedFd<'_>, ttl: u32) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_IP, c::IP_TTL, ttl)
+}
+
+#[inline]
+pub(crate) fn get_ip_ttl(fd: BorrowedFd<'_>) -> io::Result<u32> {
+ getsockopt(fd, c::IPPROTO_IP, c::IP_TTL)
+}
+
+#[inline]
+pub(crate) fn set_ipv6_v6only(fd: BorrowedFd<'_>, only_v6: bool) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_IPV6, c::IPV6_V6ONLY, from_bool(only_v6))
+}
+
+#[inline]
+pub(crate) fn get_ipv6_v6only(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::IPPROTO_IPV6, c::IPV6_V6ONLY).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn set_ip_multicast_loop(fd: BorrowedFd<'_>, multicast_loop: bool) -> io::Result<()> {
+ setsockopt(
+ fd,
+ c::IPPROTO_IP,
+ c::IP_MULTICAST_LOOP,
+ from_bool(multicast_loop),
+ )
+}
+
+#[inline]
+pub(crate) fn get_ip_multicast_loop(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::IPPROTO_IP, c::IP_MULTICAST_LOOP).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn set_ip_multicast_ttl(fd: BorrowedFd<'_>, multicast_ttl: u32) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_IP, c::IP_MULTICAST_TTL, multicast_ttl)
+}
+
+#[inline]
+pub(crate) fn get_ip_multicast_ttl(fd: BorrowedFd<'_>) -> io::Result<u32> {
+ getsockopt(fd, c::IPPROTO_IP, c::IP_MULTICAST_TTL)
+}
+
+#[inline]
+pub(crate) fn set_ipv6_multicast_loop(fd: BorrowedFd<'_>, multicast_loop: bool) -> io::Result<()> {
+ setsockopt(
+ fd,
+ c::IPPROTO_IPV6,
+ c::IPV6_MULTICAST_LOOP,
+ from_bool(multicast_loop),
+ )
+}
+
+#[inline]
+pub(crate) fn get_ipv6_multicast_loop(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::IPPROTO_IPV6, c::IPV6_MULTICAST_LOOP).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn set_ipv6_multicast_hops(fd: BorrowedFd<'_>, multicast_hops: u32) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_IP, c::IPV6_MULTICAST_HOPS, multicast_hops)
+}
+
+#[inline]
+pub(crate) fn get_ipv6_multicast_hops(fd: BorrowedFd<'_>) -> io::Result<u32> {
+ getsockopt(fd, c::IPPROTO_IP, c::IPV6_MULTICAST_HOPS)
+}
+
+#[inline]
+pub(crate) fn set_ip_add_membership(
+ fd: BorrowedFd<'_>,
+ multiaddr: &Ipv4Addr,
+ interface: &Ipv4Addr,
+) -> io::Result<()> {
+ let mreq = to_ip_mreq(multiaddr, interface);
+ setsockopt(fd, c::IPPROTO_IP, c::IP_ADD_MEMBERSHIP, mreq)
+}
+
+#[inline]
+pub(crate) fn set_ip_add_membership_with_ifindex(
+ fd: BorrowedFd<'_>,
+ multiaddr: &Ipv4Addr,
+ address: &Ipv4Addr,
+ ifindex: i32,
+) -> io::Result<()> {
+ let mreqn = to_ip_mreqn(multiaddr, address, ifindex);
+ setsockopt(fd, c::IPPROTO_IP, c::IP_ADD_MEMBERSHIP, mreqn)
+}
+
+#[inline]
+pub(crate) fn set_ip_add_source_membership(
+ fd: BorrowedFd<'_>,
+ multiaddr: &Ipv4Addr,
+ interface: &Ipv4Addr,
+ sourceaddr: &Ipv4Addr,
+) -> io::Result<()> {
+ let mreq_source = to_imr_source(multiaddr, interface, sourceaddr);
+ setsockopt(fd, c::IPPROTO_IP, c::IP_ADD_SOURCE_MEMBERSHIP, mreq_source)
+}
+
+#[inline]
+pub(crate) fn set_ip_drop_source_membership(
+ fd: BorrowedFd<'_>,
+ multiaddr: &Ipv4Addr,
+ interface: &Ipv4Addr,
+ sourceaddr: &Ipv4Addr,
+) -> io::Result<()> {
+ let mreq_source = to_imr_source(multiaddr, interface, sourceaddr);
+ setsockopt(fd, c::IPPROTO_IP, c::IP_DROP_SOURCE_MEMBERSHIP, mreq_source)
+}
+
+#[inline]
+pub(crate) fn set_ipv6_add_membership(
+ fd: BorrowedFd<'_>,
+ multiaddr: &Ipv6Addr,
+ interface: u32,
+) -> io::Result<()> {
+ let mreq = to_ipv6mr(multiaddr, interface);
+ setsockopt(fd, c::IPPROTO_IPV6, c::IPV6_ADD_MEMBERSHIP, mreq)
+}
+
+#[inline]
+pub(crate) fn set_ip_drop_membership(
+ fd: BorrowedFd<'_>,
+ multiaddr: &Ipv4Addr,
+ interface: &Ipv4Addr,
+) -> io::Result<()> {
+ let mreq = to_ip_mreq(multiaddr, interface);
+ setsockopt(fd, c::IPPROTO_IP, c::IP_DROP_MEMBERSHIP, mreq)
+}
+
+#[inline]
+pub(crate) fn set_ip_drop_membership_with_ifindex(
+ fd: BorrowedFd<'_>,
+ multiaddr: &Ipv4Addr,
+ address: &Ipv4Addr,
+ ifindex: i32,
+) -> io::Result<()> {
+ let mreqn = to_ip_mreqn(multiaddr, address, ifindex);
+ setsockopt(fd, c::IPPROTO_IP, c::IP_DROP_MEMBERSHIP, mreqn)
+}
+
+#[inline]
+pub(crate) fn set_ipv6_drop_membership(
+ fd: BorrowedFd<'_>,
+ multiaddr: &Ipv6Addr,
+ interface: u32,
+) -> io::Result<()> {
+ let mreq = to_ipv6mr(multiaddr, interface);
+ setsockopt(fd, c::IPPROTO_IPV6, c::IPV6_DROP_MEMBERSHIP, mreq)
+}
+
+#[inline]
+pub(crate) fn get_ipv6_unicast_hops(fd: BorrowedFd<'_>) -> io::Result<u8> {
+ getsockopt(fd, c::IPPROTO_IPV6, c::IPV6_UNICAST_HOPS).map(|hops: c::c_int| hops as u8)
+}
+
+#[inline]
+pub(crate) fn set_ipv6_unicast_hops(fd: BorrowedFd<'_>, hops: Option<u8>) -> io::Result<()> {
+ let hops = match hops {
+ Some(hops) => hops.into(),
+ None => -1,
+ };
+ setsockopt(fd, c::IPPROTO_IPV6, c::IPV6_UNICAST_HOPS, hops)
+}
+
+#[inline]
+pub(crate) fn set_ip_tos(fd: BorrowedFd<'_>, value: u8) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_IP, c::IP_TOS, i32::from(value))
+}
+
+#[inline]
+pub(crate) fn get_ip_tos(fd: BorrowedFd<'_>) -> io::Result<u8> {
+ let value: i32 = getsockopt(fd, c::IPPROTO_IP, c::IP_TOS)?;
+ Ok(value as u8)
+}
+
+#[inline]
+pub(crate) fn set_ip_recvtos(fd: BorrowedFd<'_>, value: bool) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_IP, c::IP_RECVTOS, from_bool(value))
+}
+
+#[inline]
+pub(crate) fn get_ip_recvtos(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::IPPROTO_IP, c::IP_RECVTOS).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn set_ipv6_recvtclass(fd: BorrowedFd<'_>, value: bool) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_IPV6, c::IPV6_RECVTCLASS, from_bool(value))
+}
+
+#[inline]
+pub(crate) fn get_ipv6_recvtclass(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::IPPROTO_IPV6, c::IPV6_RECVTCLASS).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn set_ip_freebind(fd: BorrowedFd<'_>, value: bool) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_IP, c::IP_FREEBIND, from_bool(value))
+}
+
+#[inline]
+pub(crate) fn get_ip_freebind(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::IPPROTO_IP, c::IP_FREEBIND).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn set_ipv6_freebind(fd: BorrowedFd<'_>, value: bool) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_IPV6, c::IPV6_FREEBIND, from_bool(value))
+}
+
+#[inline]
+pub(crate) fn get_ipv6_freebind(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::IPPROTO_IPV6, c::IPV6_FREEBIND).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn get_ip_original_dst(fd: BorrowedFd<'_>) -> io::Result<SocketAddrV4> {
+ let level = c::IPPROTO_IP;
+ let optname = c::SO_ORIGINAL_DST;
+ let mut value = MaybeUninit::<SocketAddrStorage>::uninit();
+ let mut optlen = core::mem::size_of_val(&value).try_into().unwrap();
+
+ getsockopt_raw(fd, level, optname, &mut value, &mut optlen)?;
+
+ let any = unsafe { SocketAddrAny::read(value.as_ptr(), optlen as usize)? };
+ match any {
+ SocketAddrAny::V4(v4) => Ok(v4),
+ _ => unreachable!(),
+ }
+}
+
+#[inline]
+pub(crate) fn get_ipv6_original_dst(fd: BorrowedFd<'_>) -> io::Result<SocketAddrV6> {
+ let level = c::IPPROTO_IPV6;
+ let optname = c::IP6T_SO_ORIGINAL_DST;
+ let mut value = MaybeUninit::<SocketAddrStorage>::uninit();
+ let mut optlen = core::mem::size_of_val(&value).try_into().unwrap();
+
+ getsockopt_raw(fd, level, optname, &mut value, &mut optlen)?;
+
+ let any = unsafe { SocketAddrAny::read(value.as_ptr(), optlen as usize)? };
+ match any {
+ SocketAddrAny::V6(v6) => Ok(v6),
+ _ => unreachable!(),
+ }
+}
+
+#[inline]
+pub(crate) fn set_ipv6_tclass(fd: BorrowedFd<'_>, value: u32) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_IPV6, c::IPV6_TCLASS, value)
+}
+
+#[inline]
+pub(crate) fn get_ipv6_tclass(fd: BorrowedFd<'_>) -> io::Result<u32> {
+ getsockopt(fd, c::IPPROTO_IPV6, c::IPV6_TCLASS)
+}
+
+#[inline]
+pub(crate) fn set_tcp_nodelay(fd: BorrowedFd<'_>, nodelay: bool) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_TCP, c::TCP_NODELAY, from_bool(nodelay))
+}
+
+#[inline]
+pub(crate) fn get_tcp_nodelay(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::IPPROTO_TCP, c::TCP_NODELAY).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn set_tcp_keepcnt(fd: BorrowedFd<'_>, count: u32) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_TCP, c::TCP_KEEPCNT, count)
+}
+
+#[inline]
+pub(crate) fn get_tcp_keepcnt(fd: BorrowedFd<'_>) -> io::Result<u32> {
+ getsockopt(fd, c::IPPROTO_TCP, c::TCP_KEEPCNT)
+}
+
+#[inline]
+pub(crate) fn set_tcp_keepidle(fd: BorrowedFd<'_>, duration: Duration) -> io::Result<()> {
+ let secs: c::c_uint = duration_to_secs(duration)?;
+ setsockopt(fd, c::IPPROTO_TCP, c::TCP_KEEPIDLE, secs)
+}
+
+#[inline]
+pub(crate) fn get_tcp_keepidle(fd: BorrowedFd<'_>) -> io::Result<Duration> {
+ let secs: c::c_uint = getsockopt(fd, c::IPPROTO_TCP, c::TCP_KEEPIDLE)?;
+ Ok(Duration::from_secs(secs as u64))
+}
+
+#[inline]
+pub(crate) fn set_tcp_keepintvl(fd: BorrowedFd<'_>, duration: Duration) -> io::Result<()> {
+ let secs: c::c_uint = duration_to_secs(duration)?;
+ setsockopt(fd, c::IPPROTO_TCP, c::TCP_KEEPINTVL, secs)
+}
+
+#[inline]
+pub(crate) fn get_tcp_keepintvl(fd: BorrowedFd<'_>) -> io::Result<Duration> {
+ let secs: c::c_uint = getsockopt(fd, c::IPPROTO_TCP, c::TCP_KEEPINTVL)?;
+ Ok(Duration::from_secs(secs as u64))
+}
+
+#[inline]
+pub(crate) fn set_tcp_user_timeout(fd: BorrowedFd<'_>, value: u32) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_TCP, c::TCP_USER_TIMEOUT, value)
+}
+
+#[inline]
+pub(crate) fn get_tcp_user_timeout(fd: BorrowedFd<'_>) -> io::Result<u32> {
+ getsockopt(fd, c::IPPROTO_TCP, c::TCP_USER_TIMEOUT)
+}
+
+#[inline]
+pub(crate) fn set_tcp_quickack(fd: BorrowedFd<'_>, value: bool) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_TCP, c::TCP_QUICKACK, from_bool(value))
+}
+
+#[inline]
+pub(crate) fn get_tcp_quickack(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::IPPROTO_TCP, c::TCP_QUICKACK).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn set_tcp_congestion(fd: BorrowedFd<'_>, value: &str) -> io::Result<()> {
+ let level = c::IPPROTO_TCP;
+ let optname = c::TCP_CONGESTION;
+ let optlen = value.len().try_into().unwrap();
+ setsockopt_raw(fd, level, optname, value.as_ptr(), optlen)
+}
+
+#[cfg(feature = "alloc")]
+#[inline]
+pub(crate) fn get_tcp_congestion(fd: BorrowedFd<'_>) -> io::Result<String> {
+ let level = c::IPPROTO_TCP;
+ let optname = c::TCP_CONGESTION;
+ const OPTLEN: c::socklen_t = 16;
+ let mut value = MaybeUninit::<[MaybeUninit<u8>; OPTLEN as usize]>::uninit();
+ let mut optlen = OPTLEN;
+ getsockopt_raw(fd, level, optname, &mut value, &mut optlen)?;
+ unsafe {
+ let value = value.assume_init();
+ let slice: &[u8] = core::mem::transmute(&value[..optlen as usize]);
+ assert!(slice.iter().any(|b| *b == b'\0'));
+ Ok(
+ core::str::from_utf8(CStr::from_ptr(slice.as_ptr().cast()).to_bytes())
+ .unwrap()
+ .to_owned(),
+ )
+ }
+}
+
+#[inline]
+pub(crate) fn set_tcp_thin_linear_timeouts(fd: BorrowedFd<'_>, value: bool) -> io::Result<()> {
+ setsockopt(
+ fd,
+ c::IPPROTO_TCP,
+ c::TCP_THIN_LINEAR_TIMEOUTS,
+ from_bool(value),
+ )
+}
+
+#[inline]
+pub(crate) fn get_tcp_thin_linear_timeouts(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::IPPROTO_TCP, c::TCP_THIN_LINEAR_TIMEOUTS).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn set_tcp_cork(fd: BorrowedFd<'_>, value: bool) -> io::Result<()> {
+ setsockopt(fd, c::IPPROTO_TCP, c::TCP_CORK, from_bool(value))
+}
+
+#[inline]
+pub(crate) fn get_tcp_cork(fd: BorrowedFd<'_>) -> io::Result<bool> {
+ getsockopt(fd, c::IPPROTO_TCP, c::TCP_CORK).map(to_bool)
+}
+
+#[inline]
+pub(crate) fn get_socket_peercred(fd: BorrowedFd<'_>) -> io::Result<UCred> {
+ getsockopt(fd, c::SOL_SOCKET, linux_raw_sys::net::SO_PEERCRED)
+}
+
+#[inline]
+fn to_ip_mreq(multiaddr: &Ipv4Addr, interface: &Ipv4Addr) -> c::ip_mreq {
+ c::ip_mreq {
+ imr_multiaddr: to_imr_addr(multiaddr),
+ imr_interface: to_imr_addr(interface),
+ }
+}
+
+#[inline]
+fn to_ip_mreqn(multiaddr: &Ipv4Addr, address: &Ipv4Addr, ifindex: i32) -> c::ip_mreqn {
+ c::ip_mreqn {
+ imr_multiaddr: to_imr_addr(multiaddr),
+ imr_address: to_imr_addr(address),
+ imr_ifindex: ifindex,
+ }
+}
+
+#[inline]
+fn to_imr_source(
+ multiaddr: &Ipv4Addr,
+ interface: &Ipv4Addr,
+ sourceaddr: &Ipv4Addr,
+) -> c::ip_mreq_source {
+ c::ip_mreq_source {
+ imr_multiaddr: to_imr_addr(multiaddr).s_addr,
+ imr_interface: to_imr_addr(interface).s_addr,
+ imr_sourceaddr: to_imr_addr(sourceaddr).s_addr,
+ }
+}
+
+#[inline]
+fn to_imr_addr(addr: &Ipv4Addr) -> c::in_addr {
+ c::in_addr {
+ s_addr: u32::from_ne_bytes(addr.octets()),
+ }
+}
+
+#[inline]
+fn to_ipv6mr(multiaddr: &Ipv6Addr, interface: u32) -> c::ipv6_mreq {
+ c::ipv6_mreq {
+ ipv6mr_multiaddr: to_ipv6mr_multiaddr(multiaddr),
+ ipv6mr_ifindex: to_ipv6mr_interface(interface),
+ }
+}
+
+#[inline]
+fn to_ipv6mr_multiaddr(multiaddr: &Ipv6Addr) -> c::in6_addr {
+ c::in6_addr {
+ in6_u: linux_raw_sys::net::in6_addr__bindgen_ty_1 {
+ u6_addr8: multiaddr.octets(),
+ },
+ }
+}
+
+#[inline]
+fn to_ipv6mr_interface(interface: u32) -> c::c_int {
+ interface as c::c_int
+}
+
+#[inline]
+fn from_bool(value: bool) -> c::c_uint {
+ c::c_uint::from(value)
+}
+
+#[inline]
+fn to_bool(value: c::c_uint) -> bool {
+ value != 0
+}
+
+/// Convert to seconds, rounding up if necessary.
+#[inline]
+fn duration_to_secs<T: TryFrom<u64>>(duration: Duration) -> io::Result<T> {
+ let mut secs = duration.as_secs();
+ if duration.subsec_nanos() != 0 {
+ secs = secs.checked_add(1).ok_or(io::Errno::INVAL)?;
+ }
+ T::try_from(secs).map_err(|_e| io::Errno::INVAL)
+}
diff --git a/vendor/rustix/src/backend/linux_raw/net/syscalls.rs b/vendor/rustix/src/backend/linux_raw/net/syscalls.rs
index e5ebcc1dd..f513f1261 100644
--- a/vendor/rustix/src/backend/linux_raw/net/syscalls.rs
+++ b/vendor/rustix/src/backend/linux_raw/net/syscalls.rs
@@ -30,8 +30,8 @@ use {
crate::backend::reg::{ArgReg, SocketArg},
linux_raw_sys::net::{
SYS_ACCEPT, SYS_ACCEPT4, SYS_BIND, SYS_CONNECT, SYS_GETPEERNAME, SYS_GETSOCKNAME,
- SYS_GETSOCKOPT, SYS_LISTEN, SYS_RECV, SYS_RECVFROM, SYS_RECVMSG, SYS_SEND, SYS_SENDMSG,
- SYS_SENDTO, SYS_SETSOCKOPT, SYS_SHUTDOWN, SYS_SOCKET, SYS_SOCKETPAIR,
+ SYS_LISTEN, SYS_RECV, SYS_RECVFROM, SYS_RECVMSG, SYS_SEND, SYS_SENDMSG, SYS_SENDTO,
+ SYS_SHUTDOWN, SYS_SOCKET, SYS_SOCKETPAIR,
},
};
@@ -905,627 +905,45 @@ pub(crate) fn connect_unix(fd: BorrowedFd<'_>, addr: &SocketAddrUnix) -> io::Res
}
#[inline]
-pub(crate) fn listen(fd: BorrowedFd<'_>, backlog: c::c_int) -> io::Result<()> {
+pub(crate) fn connect_unspec(fd: BorrowedFd<'_>) -> io::Result<()> {
+ debug_assert_eq!(c::AF_UNSPEC, 0);
+ let addr = MaybeUninit::<c::sockaddr_storage>::zeroed();
+
#[cfg(not(target_arch = "x86"))]
unsafe {
- ret(syscall_readonly!(__NR_listen, fd, c_int(backlog)))
+ ret(syscall_readonly!(
+ __NR_connect,
+ fd,
+ by_ref(&addr),
+ size_of::<c::sockaddr_storage, _>()
+ ))
}
#[cfg(target_arch = "x86")]
unsafe {
ret(syscall_readonly!(
__NR_socketcall,
- x86_sys(SYS_LISTEN),
- slice_just_addr::<ArgReg<'_, SocketArg>, _>(&[fd.into(), c_int(backlog)])
+ x86_sys(SYS_CONNECT),
+ slice_just_addr::<ArgReg<'_, SocketArg>, _>(&[
+ fd.into(),
+ by_ref(&addr),
+ size_of::<c::sockaddr_storage, _>(),
+ ])
))
}
}
-pub(crate) mod sockopt {
- use super::{c, BorrowedFd};
- use crate::io;
- use crate::net::sockopt::Timeout;
- use crate::net::{AddressFamily, Ipv4Addr, Ipv6Addr, SocketType};
- use c::{SO_RCVTIMEO_NEW, SO_RCVTIMEO_OLD, SO_SNDTIMEO_NEW, SO_SNDTIMEO_OLD};
- use core::time::Duration;
- use linux_raw_sys::general::{__kernel_timespec, timeval};
- use linux_raw_sys::net::{SO_ACCEPTCONN, TCP_KEEPCNT, TCP_KEEPIDLE, TCP_KEEPINTVL};
-
- #[inline]
- fn getsockopt<T: Copy>(fd: BorrowedFd<'_>, level: u32, optname: u32) -> io::Result<T> {
- use super::*;
-
- let mut optlen = core::mem::size_of::<T>();
- debug_assert!(
- optlen as usize >= core::mem::size_of::<c::c_int>(),
- "Socket APIs don't ever use `bool` directly"
- );
-
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- let mut value = MaybeUninit::<T>::uninit();
- ret(syscall!(
- __NR_getsockopt,
- fd,
- c_uint(level),
- c_uint(optname),
- &mut value,
- by_mut(&mut optlen)
- ))?;
-
- assert_eq!(
- optlen as usize,
- core::mem::size_of::<T>(),
- "unexpected getsockopt size"
- );
- Ok(value.assume_init())
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- let mut value = MaybeUninit::<T>::uninit();
- ret(syscall!(
- __NR_socketcall,
- x86_sys(SYS_GETSOCKOPT),
- slice_just_addr::<ArgReg<'_, SocketArg>, _>(&[
- fd.into(),
- c_uint(level),
- c_uint(optname),
- (&mut value).into(),
- by_mut(&mut optlen),
- ])
- ))?;
- assert_eq!(
- optlen as usize,
- core::mem::size_of::<T>(),
- "unexpected getsockopt size"
- );
- Ok(value.assume_init())
- }
- }
-
- #[inline]
- fn setsockopt<T: Copy>(
- fd: BorrowedFd<'_>,
- level: u32,
- optname: u32,
- value: T,
- ) -> io::Result<()> {
- use super::*;
-
- let optlen = core::mem::size_of::<T>().try_into().unwrap();
- debug_assert!(
- optlen as usize >= core::mem::size_of::<c::c_int>(),
- "Socket APIs don't ever use `bool` directly"
- );
-
- #[cfg(not(target_arch = "x86"))]
- unsafe {
- ret(syscall_readonly!(
- __NR_setsockopt,
- fd,
- c_uint(level),
- c_uint(optname),
- by_ref(&value),
- socklen_t(optlen)
- ))
- }
- #[cfg(target_arch = "x86")]
- unsafe {
- ret(syscall_readonly!(
- __NR_socketcall,
- x86_sys(SYS_SETSOCKOPT),
- slice_just_addr::<ArgReg<'_, SocketArg>, _>(&[
- fd.into(),
- c_uint(level),
- c_uint(optname),
- by_ref(&value),
- socklen_t(optlen),
- ])
- ))
- }
- }
-
- #[inline]
- pub(crate) fn get_socket_type(fd: BorrowedFd<'_>) -> io::Result<SocketType> {
- getsockopt(fd, c::SOL_SOCKET as _, c::SO_TYPE)
- }
-
- #[inline]
- pub(crate) fn set_socket_reuseaddr(fd: BorrowedFd<'_>, reuseaddr: bool) -> io::Result<()> {
- setsockopt(
- fd,
- c::SOL_SOCKET as _,
- c::SO_REUSEADDR,
- from_bool(reuseaddr),
- )
- }
-
- #[inline]
- pub(crate) fn get_socket_reuseaddr(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::SOL_SOCKET as _, c::SO_REUSEADDR).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_socket_broadcast(fd: BorrowedFd<'_>, broadcast: bool) -> io::Result<()> {
- setsockopt(
- fd,
- c::SOL_SOCKET as _,
- c::SO_BROADCAST,
- from_bool(broadcast),
- )
- }
-
- #[inline]
- pub(crate) fn get_socket_broadcast(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::SOL_SOCKET as _, c::SO_BROADCAST).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_socket_linger(
- fd: BorrowedFd<'_>,
- linger: Option<Duration>,
- ) -> io::Result<()> {
- // Convert `linger` to seconds, rounding up.
- let l_linger = if let Some(linger) = linger {
- duration_to_secs(linger)?
- } else {
- 0
- };
- let linger = c::linger {
- l_onoff: c::c_int::from(linger.is_some()),
- l_linger,
- };
- setsockopt(fd, c::SOL_SOCKET as _, c::SO_LINGER, linger)
- }
-
- #[inline]
- pub(crate) fn get_socket_linger(fd: BorrowedFd<'_>) -> io::Result<Option<Duration>> {
- let linger: c::linger = getsockopt(fd, c::SOL_SOCKET as _, c::SO_LINGER)?;
- Ok((linger.l_onoff != 0).then(|| Duration::from_secs(linger.l_linger as u64)))
- }
-
- #[inline]
- pub(crate) fn set_socket_passcred(fd: BorrowedFd<'_>, passcred: bool) -> io::Result<()> {
- setsockopt(fd, c::SOL_SOCKET as _, c::SO_PASSCRED, from_bool(passcred))
- }
-
- #[inline]
- pub(crate) fn get_socket_passcred(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::SOL_SOCKET as _, c::SO_PASSCRED).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_socket_timeout(
- fd: BorrowedFd<'_>,
- id: Timeout,
- timeout: Option<Duration>,
- ) -> io::Result<()> {
- let time = duration_to_linux(timeout)?;
- let optname = match id {
- Timeout::Recv => SO_RCVTIMEO_NEW,
- Timeout::Send => SO_SNDTIMEO_NEW,
- };
- match setsockopt(fd, c::SOL_SOCKET, optname, time) {
- Err(io::Errno::NOPROTOOPT) if SO_RCVTIMEO_NEW != SO_RCVTIMEO_OLD => {
- set_socket_timeout_old(fd, id, timeout)
- }
- otherwise => otherwise,
- }
- }
-
- /// Same as `set_socket_timeout` but uses `timeval` instead of
- /// `__kernel_timespec` and `_OLD` constants instead of `_NEW`.
- fn set_socket_timeout_old(
- fd: BorrowedFd<'_>,
- id: Timeout,
- timeout: Option<Duration>,
- ) -> io::Result<()> {
- let time = duration_to_linux_old(timeout)?;
- let optname = match id {
- Timeout::Recv => SO_RCVTIMEO_OLD,
- Timeout::Send => SO_SNDTIMEO_OLD,
- };
- setsockopt(fd, c::SOL_SOCKET, optname, time)
- }
-
- #[inline]
- pub(crate) fn get_socket_timeout(
- fd: BorrowedFd<'_>,
- id: Timeout,
- ) -> io::Result<Option<Duration>> {
- let optname = match id {
- Timeout::Recv => SO_RCVTIMEO_NEW,
- Timeout::Send => SO_SNDTIMEO_NEW,
- };
- let time: __kernel_timespec = match getsockopt(fd, c::SOL_SOCKET, optname) {
- Err(io::Errno::NOPROTOOPT) if SO_RCVTIMEO_NEW != SO_RCVTIMEO_OLD => {
- return get_socket_timeout_old(fd, id)
- }
- otherwise => otherwise?,
- };
- Ok(duration_from_linux(time))
- }
-
- /// Same as `get_socket_timeout` but uses `timeval` instead of
- /// `__kernel_timespec` and `_OLD` constants instead of `_NEW`.
- fn get_socket_timeout_old(fd: BorrowedFd<'_>, id: Timeout) -> io::Result<Option<Duration>> {
- let optname = match id {
- Timeout::Recv => SO_RCVTIMEO_OLD,
- Timeout::Send => SO_SNDTIMEO_OLD,
- };
- let time: timeval = getsockopt(fd, c::SOL_SOCKET, optname)?;
- Ok(duration_from_linux_old(time))
- }
-
- /// Convert a C `timespec` to a Rust `Option<Duration>`.
- #[inline]
- fn duration_from_linux(time: __kernel_timespec) -> Option<Duration> {
- if time.tv_sec == 0 && time.tv_nsec == 0 {
- None
- } else {
- Some(
- Duration::from_secs(time.tv_sec as u64) + Duration::from_nanos(time.tv_nsec as u64),
- )
- }
- }
-
- /// Like `duration_from_linux` but uses Linux's old 32-bit `timeval`.
- fn duration_from_linux_old(time: timeval) -> Option<Duration> {
- if time.tv_sec == 0 && time.tv_usec == 0 {
- None
- } else {
- Some(
- Duration::from_secs(time.tv_sec as u64)
- + Duration::from_micros(time.tv_usec as u64),
- )
- }
- }
-
- /// Convert a Rust `Option<Duration>` to a C `timespec`.
- #[inline]
- fn duration_to_linux(timeout: Option<Duration>) -> io::Result<__kernel_timespec> {
- Ok(match timeout {
- Some(timeout) => {
- if timeout == Duration::ZERO {
- return Err(io::Errno::INVAL);
- }
- let mut timeout = __kernel_timespec {
- tv_sec: timeout.as_secs().try_into().unwrap_or(i64::MAX),
- tv_nsec: timeout.subsec_nanos().into(),
- };
- if timeout.tv_sec == 0 && timeout.tv_nsec == 0 {
- timeout.tv_nsec = 1;
- }
- timeout
- }
- None => __kernel_timespec {
- tv_sec: 0,
- tv_nsec: 0,
- },
- })
- }
-
- /// Like `duration_to_linux` but uses Linux's old 32-bit `timeval`.
- fn duration_to_linux_old(timeout: Option<Duration>) -> io::Result<timeval> {
- Ok(match timeout {
- Some(timeout) => {
- if timeout == Duration::ZERO {
- return Err(io::Errno::INVAL);
- }
-
- // `subsec_micros` rounds down, so we use `subsec_nanos` and
- // manually round up.
- let mut timeout = timeval {
- tv_sec: timeout.as_secs().try_into().unwrap_or(c::c_long::MAX),
- tv_usec: ((timeout.subsec_nanos() + 999) / 1000) as _,
- };
- if timeout.tv_sec == 0 && timeout.tv_usec == 0 {
- timeout.tv_usec = 1;
- }
- timeout
- }
- None => timeval {
- tv_sec: 0,
- tv_usec: 0,
- },
- })
- }
-
- #[inline]
- pub(crate) fn get_socket_error(fd: BorrowedFd<'_>) -> io::Result<Result<(), io::Errno>> {
- let err: c::c_int = getsockopt(fd, c::SOL_SOCKET as _, c::SO_ERROR)?;
- Ok(if err == 0 {
- Ok(())
- } else {
- Err(io::Errno::from_raw_os_error(err))
- })
- }
-
- #[inline]
- pub(crate) fn set_socket_keepalive(fd: BorrowedFd<'_>, keepalive: bool) -> io::Result<()> {
- setsockopt(
- fd,
- c::SOL_SOCKET as _,
- c::SO_KEEPALIVE,
- from_bool(keepalive),
- )
- }
-
- #[inline]
- pub(crate) fn get_socket_keepalive(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::SOL_SOCKET as _, c::SO_KEEPALIVE).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_socket_recv_buffer_size(fd: BorrowedFd<'_>, size: usize) -> io::Result<()> {
- let size: c::c_int = size.try_into().map_err(|_| io::Errno::OVERFLOW)?;
- setsockopt(fd, c::SOL_SOCKET as _, c::SO_RCVBUF, size)
- }
-
- #[inline]
- pub(crate) fn get_socket_recv_buffer_size(fd: BorrowedFd<'_>) -> io::Result<usize> {
- getsockopt(fd, c::SOL_SOCKET as _, c::SO_RCVBUF).map(|size: u32| size as usize)
- }
-
- #[inline]
- pub(crate) fn set_socket_send_buffer_size(fd: BorrowedFd<'_>, size: usize) -> io::Result<()> {
- let size: c::c_int = size.try_into().map_err(|_| io::Errno::OVERFLOW)?;
- setsockopt(fd, c::SOL_SOCKET as _, c::SO_SNDBUF, size)
- }
-
- #[inline]
- pub(crate) fn get_socket_send_buffer_size(fd: BorrowedFd<'_>) -> io::Result<usize> {
- getsockopt(fd, c::SOL_SOCKET as _, c::SO_SNDBUF).map(|size: u32| size as usize)
+#[inline]
+pub(crate) fn listen(fd: BorrowedFd<'_>, backlog: c::c_int) -> io::Result<()> {
+ #[cfg(not(target_arch = "x86"))]
+ unsafe {
+ ret(syscall_readonly!(__NR_listen, fd, c_int(backlog)))
}
-
- #[inline]
- pub(crate) fn get_socket_domain(fd: BorrowedFd<'_>) -> io::Result<AddressFamily> {
- let domain: c::c_int = getsockopt(fd, c::SOL_SOCKET as _, c::SO_DOMAIN)?;
- Ok(AddressFamily(
- domain.try_into().map_err(|_| io::Errno::OPNOTSUPP)?,
+ #[cfg(target_arch = "x86")]
+ unsafe {
+ ret(syscall_readonly!(
+ __NR_socketcall,
+ x86_sys(SYS_LISTEN),
+ slice_just_addr::<ArgReg<'_, SocketArg>, _>(&[fd.into(), c_int(backlog)])
))
}
-
- #[inline]
- pub(crate) fn get_socket_acceptconn(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::SOL_SOCKET as _, SO_ACCEPTCONN).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_ip_ttl(fd: BorrowedFd<'_>, ttl: u32) -> io::Result<()> {
- setsockopt(fd, c::IPPROTO_IP as _, c::IP_TTL, ttl)
- }
-
- #[inline]
- pub(crate) fn get_ip_ttl(fd: BorrowedFd<'_>) -> io::Result<u32> {
- getsockopt(fd, c::IPPROTO_IP as _, c::IP_TTL)
- }
-
- #[inline]
- pub(crate) fn set_ipv6_v6only(fd: BorrowedFd<'_>, only_v6: bool) -> io::Result<()> {
- setsockopt(fd, c::IPPROTO_IPV6 as _, c::IPV6_V6ONLY, from_bool(only_v6))
- }
-
- #[inline]
- pub(crate) fn get_ipv6_v6only(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::IPPROTO_IPV6 as _, c::IPV6_V6ONLY).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_ip_multicast_loop(
- fd: BorrowedFd<'_>,
- multicast_loop: bool,
- ) -> io::Result<()> {
- setsockopt(
- fd,
- c::IPPROTO_IP as _,
- c::IP_MULTICAST_LOOP,
- from_bool(multicast_loop),
- )
- }
-
- #[inline]
- pub(crate) fn get_ip_multicast_loop(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::IPPROTO_IP as _, c::IP_MULTICAST_LOOP).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_ip_multicast_ttl(fd: BorrowedFd<'_>, multicast_ttl: u32) -> io::Result<()> {
- setsockopt(fd, c::IPPROTO_IP as _, c::IP_MULTICAST_TTL, multicast_ttl)
- }
-
- #[inline]
- pub(crate) fn get_ip_multicast_ttl(fd: BorrowedFd<'_>) -> io::Result<u32> {
- getsockopt(fd, c::IPPROTO_IP as _, c::IP_MULTICAST_TTL)
- }
-
- #[inline]
- pub(crate) fn set_ipv6_multicast_loop(
- fd: BorrowedFd<'_>,
- multicast_loop: bool,
- ) -> io::Result<()> {
- setsockopt(
- fd,
- c::IPPROTO_IPV6 as _,
- c::IPV6_MULTICAST_LOOP,
- from_bool(multicast_loop),
- )
- }
-
- #[inline]
- pub(crate) fn get_ipv6_multicast_loop(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::IPPROTO_IPV6 as _, c::IPV6_MULTICAST_LOOP).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_ipv6_multicast_hops(
- fd: BorrowedFd<'_>,
- multicast_hops: u32,
- ) -> io::Result<()> {
- setsockopt(
- fd,
- c::IPPROTO_IP as _,
- c::IPV6_MULTICAST_HOPS,
- multicast_hops,
- )
- }
-
- #[inline]
- pub(crate) fn get_ipv6_multicast_hops(fd: BorrowedFd<'_>) -> io::Result<u32> {
- getsockopt(fd, c::IPPROTO_IP as _, c::IPV6_MULTICAST_HOPS)
- }
-
- #[inline]
- pub(crate) fn set_ip_add_membership(
- fd: BorrowedFd<'_>,
- multiaddr: &Ipv4Addr,
- interface: &Ipv4Addr,
- ) -> io::Result<()> {
- let mreq = to_imr(multiaddr, interface);
- setsockopt(fd, c::IPPROTO_IP as _, c::IP_ADD_MEMBERSHIP, mreq)
- }
-
- #[inline]
- pub(crate) fn set_ipv6_add_membership(
- fd: BorrowedFd<'_>,
- multiaddr: &Ipv6Addr,
- interface: u32,
- ) -> io::Result<()> {
- let mreq = to_ipv6mr(multiaddr, interface);
- setsockopt(fd, c::IPPROTO_IPV6 as _, c::IPV6_ADD_MEMBERSHIP, mreq)
- }
-
- #[inline]
- pub(crate) fn set_ip_drop_membership(
- fd: BorrowedFd<'_>,
- multiaddr: &Ipv4Addr,
- interface: &Ipv4Addr,
- ) -> io::Result<()> {
- let mreq = to_imr(multiaddr, interface);
- setsockopt(fd, c::IPPROTO_IP as _, c::IP_DROP_MEMBERSHIP, mreq)
- }
-
- #[inline]
- pub(crate) fn set_ipv6_drop_membership(
- fd: BorrowedFd<'_>,
- multiaddr: &Ipv6Addr,
- interface: u32,
- ) -> io::Result<()> {
- let mreq = to_ipv6mr(multiaddr, interface);
- setsockopt(fd, c::IPPROTO_IPV6 as _, c::IPV6_DROP_MEMBERSHIP, mreq)
- }
-
- #[inline]
- pub(crate) fn get_ipv6_unicast_hops(fd: BorrowedFd<'_>) -> io::Result<u8> {
- getsockopt(fd, c::IPPROTO_IPV6 as _, c::IPV6_UNICAST_HOPS).map(|hops: c::c_int| hops as u8)
- }
-
- #[inline]
- pub(crate) fn set_ipv6_unicast_hops(fd: BorrowedFd<'_>, hops: Option<u8>) -> io::Result<()> {
- let hops = match hops {
- Some(hops) => hops.into(),
- None => -1,
- };
- setsockopt(fd, c::IPPROTO_IPV6 as _, c::IPV6_UNICAST_HOPS, hops)
- }
-
- #[inline]
- pub(crate) fn set_tcp_nodelay(fd: BorrowedFd<'_>, nodelay: bool) -> io::Result<()> {
- setsockopt(fd, c::IPPROTO_TCP as _, c::TCP_NODELAY, from_bool(nodelay))
- }
-
- #[inline]
- pub(crate) fn get_tcp_nodelay(fd: BorrowedFd<'_>) -> io::Result<bool> {
- getsockopt(fd, c::IPPROTO_TCP as _, c::TCP_NODELAY).map(to_bool)
- }
-
- #[inline]
- pub(crate) fn set_tcp_keepcnt(fd: BorrowedFd<'_>, count: u32) -> io::Result<()> {
- setsockopt(fd, c::IPPROTO_TCP as _, TCP_KEEPCNT, count)
- }
-
- #[inline]
- pub(crate) fn get_tcp_keepcnt(fd: BorrowedFd<'_>) -> io::Result<u32> {
- getsockopt(fd, c::IPPROTO_TCP as _, TCP_KEEPCNT)
- }
-
- #[inline]
- pub(crate) fn set_tcp_keepidle(fd: BorrowedFd<'_>, duration: Duration) -> io::Result<()> {
- let secs: c::c_uint = duration_to_secs(duration)?;
- setsockopt(fd, c::IPPROTO_TCP as _, TCP_KEEPIDLE, secs)
- }
-
- #[inline]
- pub(crate) fn get_tcp_keepidle(fd: BorrowedFd<'_>) -> io::Result<Duration> {
- let secs: c::c_uint = getsockopt(fd, c::IPPROTO_TCP as _, TCP_KEEPIDLE)?;
- Ok(Duration::from_secs(secs as u64))
- }
-
- #[inline]
- pub(crate) fn set_tcp_keepintvl(fd: BorrowedFd<'_>, duration: Duration) -> io::Result<()> {
- let secs: c::c_uint = duration_to_secs(duration)?;
- setsockopt(fd, c::IPPROTO_TCP as _, TCP_KEEPINTVL, secs)
- }
-
- #[inline]
- pub(crate) fn get_tcp_keepintvl(fd: BorrowedFd<'_>) -> io::Result<Duration> {
- let secs: c::c_uint = getsockopt(fd, c::IPPROTO_TCP as _, TCP_KEEPINTVL)?;
- Ok(Duration::from_secs(secs as u64))
- }
-
- #[inline]
- fn to_imr(multiaddr: &Ipv4Addr, interface: &Ipv4Addr) -> c::ip_mreq {
- c::ip_mreq {
- imr_multiaddr: to_imr_addr(multiaddr),
- imr_interface: to_imr_addr(interface),
- }
- }
-
- #[inline]
- fn to_imr_addr(addr: &Ipv4Addr) -> c::in_addr {
- c::in_addr {
- s_addr: u32::from_ne_bytes(addr.octets()),
- }
- }
-
- #[inline]
- fn to_ipv6mr(multiaddr: &Ipv6Addr, interface: u32) -> c::ipv6_mreq {
- c::ipv6_mreq {
- ipv6mr_multiaddr: to_ipv6mr_multiaddr(multiaddr),
- ipv6mr_ifindex: to_ipv6mr_interface(interface),
- }
- }
-
- #[inline]
- fn to_ipv6mr_multiaddr(multiaddr: &Ipv6Addr) -> c::in6_addr {
- c::in6_addr {
- in6_u: linux_raw_sys::net::in6_addr__bindgen_ty_1 {
- u6_addr8: multiaddr.octets(),
- },
- }
- }
-
- #[inline]
- fn to_ipv6mr_interface(interface: u32) -> c::c_int {
- interface as c::c_int
- }
-
- #[inline]
- fn from_bool(value: bool) -> c::c_uint {
- c::c_uint::from(value)
- }
-
- #[inline]
- fn to_bool(value: c::c_uint) -> bool {
- value != 0
- }
-
- /// Convert to seconds, rounding up if necessary.
- #[inline]
- fn duration_to_secs<T: TryFrom<u64>>(duration: Duration) -> io::Result<T> {
- let mut secs = duration.as_secs();
- if duration.subsec_nanos() != 0 {
- secs = secs.checked_add(1).ok_or(io::Errno::INVAL)?;
- }
- T::try_from(secs).map_err(|_e| io::Errno::INVAL)
- }
}
diff --git a/vendor/rustix/src/backend/linux_raw/net/write_sockaddr.rs b/vendor/rustix/src/backend/linux_raw/net/write_sockaddr.rs
index 417f76e43..24edd4948 100644
--- a/vendor/rustix/src/backend/linux_raw/net/write_sockaddr.rs
+++ b/vendor/rustix/src/backend/linux_raw/net/write_sockaddr.rs
@@ -1,5 +1,5 @@
-//! The BSD sockets API requires us to read the `ss_family` field before
-//! we can interpret the rest of a `sockaddr` produced by the kernel.
+//! The BSD sockets API requires us to read the `ss_family` field before we can
+//! interpret the rest of a `sockaddr` produced by the kernel.
#![allow(unsafe_code)]
use crate::backend::c;
diff --git a/vendor/rustix/src/backend/linux_raw/param/auxv.rs b/vendor/rustix/src/backend/linux_raw/param/auxv.rs
index 8b0423ae4..fbbcdea29 100644
--- a/vendor/rustix/src/backend/linux_raw/param/auxv.rs
+++ b/vendor/rustix/src/backend/linux_raw/param/auxv.rs
@@ -15,6 +15,8 @@ use crate::utils::{as_ptr, check_raw_pointer};
use alloc::vec::Vec;
use core::mem::size_of;
use core::ptr::{null_mut, read_unaligned, NonNull};
+#[cfg(feature = "runtime")]
+use core::sync::atomic::AtomicU8;
use core::sync::atomic::Ordering::Relaxed;
use core::sync::atomic::{AtomicPtr, AtomicUsize};
use linux_raw_sys::elf::*;
@@ -22,7 +24,9 @@ use linux_raw_sys::general::{
AT_BASE, AT_CLKTCK, AT_EXECFN, AT_HWCAP, AT_HWCAP2, AT_NULL, AT_PAGESZ, AT_SYSINFO_EHDR,
};
#[cfg(feature = "runtime")]
-use linux_raw_sys::general::{AT_ENTRY, AT_PHDR, AT_PHENT, AT_PHNUM};
+use linux_raw_sys::general::{
+ AT_EGID, AT_ENTRY, AT_EUID, AT_GID, AT_PHDR, AT_PHENT, AT_PHNUM, AT_SECURE, AT_UID,
+};
#[cfg(feature = "param")]
#[inline]
@@ -82,6 +86,23 @@ pub(crate) fn linux_execfn() -> &'static CStr {
#[cfg(feature = "runtime")]
#[inline]
+pub(crate) fn linux_secure() -> bool {
+ let mut secure = SECURE.load(Relaxed);
+
+ // 0 means not initialized yet.
+ if secure == 0 {
+ init_auxv();
+ secure = SECURE.load(Relaxed);
+ }
+
+ // 0 means not present. Libc `getauxval(AT_SECURE)` would return 0.
+ // 1 means not in secure mode.
+ // 2 means in secure mode.
+ secure > 1
+}
+
+#[cfg(feature = "runtime")]
+#[inline]
pub(crate) fn exe_phdrs() -> (*const c::c_void, usize, usize) {
let mut phdr = PHDR.load(Relaxed);
let mut phent = PHENT.load(Relaxed);
@@ -131,6 +152,8 @@ static HWCAP2: AtomicUsize = AtomicUsize::new(0);
static EXECFN: AtomicPtr<c::c_char> = AtomicPtr::new(null_mut());
static SYSINFO_EHDR: AtomicPtr<Elf_Ehdr> = AtomicPtr::new(null_mut());
#[cfg(feature = "runtime")]
+static SECURE: AtomicU8 = AtomicU8::new(0);
+#[cfg(feature = "runtime")]
static PHDR: AtomicPtr<Elf_Phdr> = AtomicPtr::new(null_mut());
#[cfg(feature = "runtime")]
static PHENT: AtomicUsize = AtomicUsize::new(0);
@@ -142,7 +165,7 @@ static ENTRY: AtomicUsize = AtomicUsize::new(0);
#[cfg(feature = "alloc")]
fn pr_get_auxv() -> crate::io::Result<Vec<u8>> {
use super::super::conv::{c_int, pass_usize, ret_usize};
- const PR_GET_AUXV: c::c_int = 0x41555856;
+ const PR_GET_AUXV: c::c_int = 0x4155_5856;
let mut buffer = alloc::vec![0u8; 512];
let len = unsafe {
ret_usize(syscall_always_asm!(
@@ -256,6 +279,8 @@ unsafe fn init_from_aux_iter(aux_iter: impl Iterator<Item = Elf_auxv_t>) -> Opti
let mut execfn = null_mut();
let mut sysinfo_ehdr = null_mut();
#[cfg(feature = "runtime")]
+ let mut secure = 0;
+ #[cfg(feature = "runtime")]
let mut phdr = null_mut();
#[cfg(feature = "runtime")]
let mut phnum = 0;
@@ -263,6 +288,14 @@ unsafe fn init_from_aux_iter(aux_iter: impl Iterator<Item = Elf_auxv_t>) -> Opti
let mut phent = 0;
#[cfg(feature = "runtime")]
let mut entry = 0;
+ #[cfg(feature = "runtime")]
+ let mut uid = None;
+ #[cfg(feature = "runtime")]
+ let mut euid = None;
+ #[cfg(feature = "runtime")]
+ let mut gid = None;
+ #[cfg(feature = "runtime")]
+ let mut egid = None;
for Elf_auxv_t { a_type, a_val } in aux_iter {
match a_type as _ {
@@ -278,6 +311,16 @@ unsafe fn init_from_aux_iter(aux_iter: impl Iterator<Item = Elf_auxv_t>) -> Opti
}
#[cfg(feature = "runtime")]
+ AT_SECURE => secure = (a_val as usize != 0) as u8 + 1,
+ #[cfg(feature = "runtime")]
+ AT_UID => uid = Some(a_val),
+ #[cfg(feature = "runtime")]
+ AT_EUID => euid = Some(a_val),
+ #[cfg(feature = "runtime")]
+ AT_GID => gid = Some(a_val),
+ #[cfg(feature = "runtime")]
+ AT_EGID => egid = Some(a_val),
+ #[cfg(feature = "runtime")]
AT_PHDR => phdr = check_raw_pointer::<Elf_Phdr>(a_val as *mut _)?.as_ptr(),
#[cfg(feature = "runtime")]
AT_PHNUM => phnum = a_val as usize,
@@ -294,8 +337,16 @@ unsafe fn init_from_aux_iter(aux_iter: impl Iterator<Item = Elf_auxv_t>) -> Opti
#[cfg(feature = "runtime")]
assert_eq!(phent, size_of::<Elf_Phdr>());
- // The base and sysinfo_ehdr (if present) matches our platform. Accept
- // the aux values.
+ // If we're running set-uid or set-gid, enable “secure execution†mode,
+ // which doesn't do much, but users may be depending on the things that
+ // it does do.
+ #[cfg(feature = "runtime")]
+ if uid != euid || gid != egid {
+ secure = 2;
+ }
+
+ // The base and sysinfo_ehdr (if present) matches our platform. Accept the
+ // aux values.
PAGE_SIZE.store(pagesz, Relaxed);
CLOCK_TICKS_PER_SECOND.store(clktck, Relaxed);
HWCAP.store(hwcap, Relaxed);
@@ -303,6 +354,8 @@ unsafe fn init_from_aux_iter(aux_iter: impl Iterator<Item = Elf_auxv_t>) -> Opti
EXECFN.store(execfn, Relaxed);
SYSINFO_EHDR.store(sysinfo_ehdr, Relaxed);
#[cfg(feature = "runtime")]
+ SECURE.store(secure, Relaxed);
+ #[cfg(feature = "runtime")]
PHDR.store(phdr, Relaxed);
#[cfg(feature = "runtime")]
PHNUM.store(phnum, Relaxed);
diff --git a/vendor/rustix/src/backend/linux_raw/param/init.rs b/vendor/rustix/src/backend/linux_raw/param/init.rs
index 46aae009a..a63212507 100644
--- a/vendor/rustix/src/backend/linux_raw/param/init.rs
+++ b/vendor/rustix/src/backend/linux_raw/param/init.rs
@@ -10,13 +10,15 @@ use crate::backend::c;
use crate::ffi::CStr;
use core::ffi::c_void;
use core::ptr::{null_mut, read, NonNull};
+#[cfg(feature = "runtime")]
+use core::sync::atomic::AtomicBool;
use core::sync::atomic::{AtomicPtr, AtomicUsize, Ordering};
use linux_raw_sys::elf::*;
use linux_raw_sys::general::{
AT_CLKTCK, AT_EXECFN, AT_HWCAP, AT_HWCAP2, AT_NULL, AT_PAGESZ, AT_SYSINFO_EHDR,
};
#[cfg(feature = "runtime")]
-use linux_raw_sys::general::{AT_ENTRY, AT_PHDR, AT_PHENT, AT_PHNUM};
+use linux_raw_sys::general::{AT_ENTRY, AT_PHDR, AT_PHENT, AT_PHNUM, AT_SECURE};
#[cfg(feature = "param")]
#[inline]
@@ -53,6 +55,12 @@ pub(crate) fn linux_execfn() -> &'static CStr {
#[cfg(feature = "runtime")]
#[inline]
+pub(crate) fn linux_secure() -> bool {
+ unsafe { SECURE.load(Ordering::Relaxed) }
+}
+
+#[cfg(feature = "runtime")]
+#[inline]
pub(crate) fn exe_phdrs() -> (*const c_void, usize, usize) {
unsafe {
(
@@ -84,6 +92,8 @@ static mut SYSINFO_EHDR: AtomicPtr<Elf_Ehdr> = AtomicPtr::new(null_mut());
// Initialize `EXECFN` to a valid `CStr` pointer so that we don't need to check
// for null on every `execfn` call.
static mut EXECFN: AtomicPtr<c::c_char> = AtomicPtr::new(b"\0".as_ptr() as _);
+#[cfg(feature = "runtime")]
+static mut SECURE: AtomicBool = AtomicBool::new(false);
// Use `dangling` so that we can always treat it like an empty slice.
#[cfg(feature = "runtime")]
static mut PHDR: AtomicPtr<Elf_Phdr> = AtomicPtr::new(NonNull::dangling().as_ptr());
@@ -133,6 +143,8 @@ unsafe fn init_from_auxp(mut auxp: *const Elf_auxv_t) {
AT_SYSINFO_EHDR => SYSINFO_EHDR.store(a_val.cast::<Elf_Ehdr>(), Ordering::Relaxed),
#[cfg(feature = "runtime")]
+ AT_SECURE => SECURE.store(a_val as usize != 0, Ordering::Relaxed),
+ #[cfg(feature = "runtime")]
AT_PHDR => PHDR.store(a_val.cast::<Elf_Phdr>(), Ordering::Relaxed),
#[cfg(feature = "runtime")]
AT_PHNUM => PHNUM.store(a_val as usize, Ordering::Relaxed),
diff --git a/vendor/rustix/src/backend/linux_raw/param/libc_auxv.rs b/vendor/rustix/src/backend/linux_raw/param/libc_auxv.rs
index 0e6ca6ed5..311cf961b 100644
--- a/vendor/rustix/src/backend/linux_raw/param/libc_auxv.rs
+++ b/vendor/rustix/src/backend/linux_raw/param/libc_auxv.rs
@@ -34,6 +34,7 @@ const AT_PHNUM: c::c_ulong = 5;
const AT_ENTRY: c::c_ulong = 9;
const AT_HWCAP: c::c_ulong = 16;
const AT_HWCAP2: c::c_ulong = 26;
+const AT_SECURE: c::c_ulong = 23;
const AT_EXECFN: c::c_ulong = 31;
const AT_SYSINFO_EHDR: c::c_ulong = 33;
@@ -59,6 +60,7 @@ fn test_abi() {
const_assert_eq!(self::AT_HWCAP, ::libc::AT_HWCAP);
const_assert_eq!(self::AT_HWCAP2, ::libc::AT_HWCAP2);
const_assert_eq!(self::AT_EXECFN, ::libc::AT_EXECFN);
+ const_assert_eq!(self::AT_SECURE, ::libc::AT_SECURE);
const_assert_eq!(self::AT_SYSINFO_EHDR, ::libc::AT_SYSINFO_EHDR);
#[cfg(feature = "runtime")]
const_assert_eq!(self::AT_PHDR, ::libc::AT_PHDR);
@@ -122,6 +124,12 @@ pub(crate) fn linux_execfn() -> &'static CStr {
#[cfg(feature = "runtime")]
#[inline]
+pub(crate) fn linux_secure() -> bool {
+ unsafe { getauxval(AT_SECURE) as usize != 0 }
+}
+
+#[cfg(feature = "runtime")]
+#[inline]
pub(crate) fn exe_phdrs() -> (*const c::c_void, usize, usize) {
unsafe {
let phdr = getauxval(AT_PHDR) as *const c::c_void;
@@ -131,8 +139,8 @@ pub(crate) fn exe_phdrs() -> (*const c::c_void, usize, usize) {
}
}
-/// `AT_SYSINFO_EHDR` isn't present on all platforms in all configurations,
-/// so if we don't see it, this function returns a null pointer.
+/// `AT_SYSINFO_EHDR` isn't present on all platforms in all configurations, so
+/// if we don't see it, this function returns a null pointer.
#[inline]
pub(in super::super) fn sysinfo_ehdr() -> *const Elf_Ehdr {
#[cfg(not(feature = "runtime"))]
diff --git a/vendor/rustix/src/backend/linux_raw/pipe/types.rs b/vendor/rustix/src/backend/linux_raw/pipe/types.rs
index c950b5d0a..fdddb89e1 100644
--- a/vendor/rustix/src/backend/linux_raw/pipe/types.rs
+++ b/vendor/rustix/src/backend/linux_raw/pipe/types.rs
@@ -16,7 +16,7 @@ bitflags! {
/// `O_NONBLOCK`
const NONBLOCK = linux_raw_sys::general::O_NONBLOCK;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -36,7 +36,7 @@ bitflags! {
/// `SPLICE_F_GIFT`
const GIFT = linux_raw_sys::general::SPLICE_F_GIFT;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/backend/linux_raw/process/syscalls.rs b/vendor/rustix/src/backend/linux_raw/process/syscalls.rs
index c0416bf5a..931f2ff2a 100644
--- a/vendor/rustix/src/backend/linux_raw/process/syscalls.rs
+++ b/vendor/rustix/src/backend/linux_raw/process/syscalls.rs
@@ -141,7 +141,7 @@ pub(crate) fn getpgrp() -> Pid {
#[inline]
pub(crate) fn sched_getaffinity(pid: Option<Pid>, cpuset: &mut RawCpuSet) -> io::Result<()> {
unsafe {
- // The raw linux syscall returns the size (in bytes) of the `cpumask_t`
+ // The raw Linux syscall returns the size (in bytes) of the `cpumask_t`
// data type that is used internally by the kernel to represent the CPU
// set bit mask.
let size = ret_usize(syscall!(
@@ -436,6 +436,11 @@ pub(crate) fn waitpid(
}
#[inline]
+pub(crate) fn waitpgid(pgid: Pid, waitopts: WaitOptions) -> io::Result<Option<(Pid, WaitStatus)>> {
+ _waitpid(-pgid.as_raw_nonzero().get(), waitopts)
+}
+
+#[inline]
pub(crate) fn _waitpid(
pid: RawPid,
waitopts: WaitOptions,
@@ -459,6 +464,7 @@ pub(crate) fn waitid(id: WaitId<'_>, options: WaitidOptions) -> io::Result<Optio
match id {
WaitId::All => _waitid_all(options),
WaitId::Pid(pid) => _waitid_pid(pid, options),
+ WaitId::Pgid(pid) => _waitid_pgid(pid, options),
WaitId::PidFd(fd) => _waitid_pidfd(fd, options),
}
}
@@ -502,6 +508,25 @@ fn _waitid_pid(pid: Pid, options: WaitidOptions) -> io::Result<Option<WaitidStat
}
#[inline]
+fn _waitid_pgid(pgid: Option<Pid>, options: WaitidOptions) -> io::Result<Option<WaitidStatus>> {
+ // `waitid` can return successfully without initializing the struct (no
+ // children found when using `WNOHANG`)
+ let mut status = MaybeUninit::<c::siginfo_t>::zeroed();
+ unsafe {
+ ret(syscall!(
+ __NR_waitid,
+ c_uint(c::P_PGID),
+ c_int(Pid::as_raw(pgid)),
+ by_mut(&mut status),
+ c_int(options.bits() as _),
+ zero()
+ ))?
+ };
+
+ Ok(unsafe { cvt_waitid_status(status) })
+}
+
+#[inline]
fn _waitid_pidfd(fd: BorrowedFd<'_>, options: WaitidOptions) -> io::Result<Option<WaitidStatus>> {
// `waitid` can return successfully without initializing the struct (no
// children found when using `WNOHANG`)
diff --git a/vendor/rustix/src/backend/linux_raw/rand/types.rs b/vendor/rustix/src/backend/linux_raw/rand/types.rs
index 47b996d30..9bc857fdd 100644
--- a/vendor/rustix/src/backend/linux_raw/rand/types.rs
+++ b/vendor/rustix/src/backend/linux_raw/rand/types.rs
@@ -14,7 +14,7 @@ bitflags! {
/// `GRND_INSECURE`
const INSECURE = linux_raw_sys::general::GRND_INSECURE;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/backend/linux_raw/reg.rs b/vendor/rustix/src/backend/linux_raw/reg.rs
index c4e495c52..10f95a5f9 100644
--- a/vendor/rustix/src/backend/linux_raw/reg.rs
+++ b/vendor/rustix/src/backend/linux_raw/reg.rs
@@ -1,8 +1,8 @@
//! Encapsulation for system call arguments and return values.
//!
//! The inline-asm code paths do some amount of reordering of arguments; to
-//! ensure that we don't accidentally misroute an argument or return value,
-//! we use distinct types for each argument index and return value.
+//! ensure that we don't accidentally misroute an argument or return value, we
+//! use distinct types for each argument index and return value.
//!
//! # Safety
//!
@@ -23,8 +23,8 @@ pub(super) trait ToAsm: private::Sealed {
///
/// # Safety
///
- /// This should be used immediately before the syscall instruction, and
- /// the returned value shouldn't be used for any other purpose.
+ /// This should be used immediately before the syscall instruction, and the
+ /// returned value shouldn't be used for any other purpose.
#[must_use]
unsafe fn to_asm(self) -> *mut Opaque;
}
@@ -35,8 +35,8 @@ pub(super) trait FromAsm: private::Sealed {
///
/// # Safety
///
- /// This should be used immediately after the syscall instruction, and
- /// the operand value shouldn't be used for any other purpose.
+ /// This should be used immediately after the syscall instruction, and the
+ /// operand value shouldn't be used for any other purpose.
#[must_use]
unsafe fn from_asm(raw: *mut Opaque) -> Self;
}
diff --git a/vendor/rustix/src/backend/linux_raw/runtime/syscalls.rs b/vendor/rustix/src/backend/linux_raw/runtime/syscalls.rs
index c1ff3d239..1bc461c04 100644
--- a/vendor/rustix/src/backend/linux_raw/runtime/syscalls.rs
+++ b/vendor/rustix/src/backend/linux_raw/runtime/syscalls.rs
@@ -9,7 +9,8 @@ use crate::backend::c;
#[cfg(target_arch = "x86")]
use crate::backend::conv::by_mut;
use crate::backend::conv::{
- by_ref, c_int, c_uint, ret, ret_c_int, ret_c_int_infallible, ret_error, size_of, zero,
+ by_ref, c_int, c_uint, ret, ret_c_int, ret_c_int_infallible, ret_error, ret_void_star, size_of,
+ zero,
};
#[cfg(feature = "fs")]
use crate::fd::BorrowedFd;
@@ -22,6 +23,7 @@ use crate::runtime::{How, Sigaction, Siginfo, Sigset, Stack};
use crate::signal::Signal;
use crate::timespec::Timespec;
use crate::utils::option_as_ptr;
+use core::ffi::c_void;
use core::mem::MaybeUninit;
#[cfg(target_pointer_width = "32")]
use linux_raw_sys::general::__kernel_old_timespec;
@@ -263,3 +265,9 @@ unsafe fn sigtimedwait_old(
pub(crate) fn exit_group(code: c::c_int) -> ! {
unsafe { syscall_noreturn!(__NR_exit_group, c_int(code)) }
}
+
+#[inline]
+pub(crate) unsafe fn brk(addr: *mut c::c_void) -> io::Result<*mut c_void> {
+ // Don't mark this `readonly`, so that loads don't get reordered past it.
+ ret_void_star(syscall!(__NR_brk, addr))
+}
diff --git a/vendor/rustix/src/backend/linux_raw/runtime/tls.rs b/vendor/rustix/src/backend/linux_raw/runtime/tls.rs
index ad1634894..69bd5cef1 100644
--- a/vendor/rustix/src/backend/linux_raw/runtime/tls.rs
+++ b/vendor/rustix/src/backend/linux_raw/runtime/tls.rs
@@ -8,6 +8,7 @@
use crate::backend::c;
use crate::backend::param::auxv::exe_phdrs;
+use core::arch::global_asm;
use core::ptr::{null, NonNull};
use linux_raw_sys::elf::*;
@@ -25,6 +26,10 @@ pub(crate) fn startup_tls_info() -> StartupTlsInfo {
let (first_phdr, phent, phnum) = exe_phdrs();
let mut current_phdr = first_phdr.cast::<Elf_Phdr>();
+ // The dynamic address of the dynamic section, which we can compare with
+ // the `PT_DYNAMIC` header's static address, if present.
+ let dynamic_addr: *const c::c_void = unsafe { &_DYNAMIC };
+
// SAFETY: We assume the phdr array pointer and length the kernel provided
// to the process describe a valid phdr array.
unsafe {
@@ -34,7 +39,13 @@ pub(crate) fn startup_tls_info() -> StartupTlsInfo {
current_phdr = current_phdr.cast::<u8>().add(phent).cast();
match phdr.p_type {
- PT_PHDR => base = first_phdr.cast::<u8>().sub(phdr.p_vaddr),
+ // Compute the offset from the static virtual addresses
+ // in the `p_vaddr` fields to the dynamic addresses. We don't
+ // always get a `PT_PHDR` or `PT_DYNAMIC` header, so use
+ // whichever one we get.
+ PT_PHDR => base = first_phdr.cast::<u8>().wrapping_sub(phdr.p_vaddr),
+ PT_DYNAMIC => base = dynamic_addr.cast::<u8>().wrapping_sub(phdr.p_vaddr),
+
PT_TLS => tls_phdr = phdr,
PT_GNU_STACK => stack_size = phdr.p_memsz,
_ => {}
@@ -51,7 +62,7 @@ pub(crate) fn startup_tls_info() -> StartupTlsInfo {
}
} else {
StartupTlsInfo {
- addr: base.cast::<u8>().add((*tls_phdr).p_vaddr).cast(),
+ addr: base.cast::<u8>().wrapping_add((*tls_phdr).p_vaddr).cast(),
mem_size: (*tls_phdr).p_memsz,
file_size: (*tls_phdr).p_filesz,
align: (*tls_phdr).p_align,
@@ -61,6 +72,15 @@ pub(crate) fn startup_tls_info() -> StartupTlsInfo {
}
}
+extern "C" {
+ /// Declare the `_DYNAMIC` symbol so that we can compare its address with
+ /// the static address in the `PT_DYNAMIC` header to learn our offset. Use
+ /// a weak symbol because `_DYNAMIC` is not always present.
+ static _DYNAMIC: c::c_void;
+}
+// Rust has `extern_weak` but it isn't stable, so use a `global_asm`.
+global_asm!(".weak _DYNAMIC");
+
/// The values returned from [`startup_tls_info`].
///
/// [`startup_tls_info`]: crate::runtime::startup_tls_info
diff --git a/vendor/rustix-0.37.6/src/backend/libc/rand/mod.rs b/vendor/rustix/src/backend/linux_raw/shm/mod.rs
index 1e0181a99..1e0181a99 100644
--- a/vendor/rustix-0.37.6/src/backend/libc/rand/mod.rs
+++ b/vendor/rustix/src/backend/linux_raw/shm/mod.rs
diff --git a/vendor/rustix/src/backend/linux_raw/shm/syscalls.rs b/vendor/rustix/src/backend/linux_raw/shm/syscalls.rs
new file mode 100644
index 000000000..3b083f4b5
--- /dev/null
+++ b/vendor/rustix/src/backend/linux_raw/shm/syscalls.rs
@@ -0,0 +1,47 @@
+use crate::ffi::CStr;
+
+use crate::backend::fs::syscalls::{open, unlink};
+use crate::backend::fs::types::{Mode, OFlags};
+use crate::fd::OwnedFd;
+use crate::io;
+use crate::shm::ShmOFlags;
+
+const NAME_MAX: usize = 255;
+const SHM_DIR: &[u8] = b"/dev/shm/";
+
+fn get_shm_name(name: &CStr) -> io::Result<([u8; NAME_MAX + SHM_DIR.len() + 1], usize)> {
+ let name = name.to_bytes();
+
+ if name.len() > NAME_MAX {
+ return Err(io::Errno::NAMETOOLONG);
+ }
+
+ let num_slashes = name.iter().take_while(|x| **x == b'/').count();
+ let after_slashes = &name[num_slashes..];
+ if after_slashes.is_empty()
+ || after_slashes == b"."
+ || after_slashes == b".."
+ || after_slashes.contains(&b'/')
+ {
+ return Err(io::Errno::INVAL);
+ }
+
+ let mut path = [0; NAME_MAX + SHM_DIR.len() + 1];
+ path[..SHM_DIR.len()].copy_from_slice(SHM_DIR);
+ path[SHM_DIR.len()..SHM_DIR.len() + name.len()].copy_from_slice(name);
+ Ok((path, SHM_DIR.len() + name.len() + 1))
+}
+
+pub(crate) fn shm_open(name: &CStr, oflags: ShmOFlags, mode: Mode) -> io::Result<OwnedFd> {
+ let (path, len) = get_shm_name(name)?;
+ open(
+ CStr::from_bytes_with_nul(&path[..len]).unwrap(),
+ OFlags::from_bits(oflags.bits()).unwrap() | OFlags::CLOEXEC,
+ mode,
+ )
+}
+
+pub(crate) fn shm_unlink(name: &CStr) -> io::Result<()> {
+ let (path, len) = get_shm_name(name)?;
+ unlink(CStr::from_bytes_with_nul(&path[..len]).unwrap())
+}
diff --git a/vendor/rustix/src/backend/linux_raw/shm/types.rs b/vendor/rustix/src/backend/linux_raw/shm/types.rs
new file mode 100644
index 000000000..3343d4424
--- /dev/null
+++ b/vendor/rustix/src/backend/linux_raw/shm/types.rs
@@ -0,0 +1,30 @@
+use crate::backend::c;
+use bitflags::bitflags;
+
+bitflags! {
+ /// `O_*` constants for use with [`shm_open`].
+ ///
+ /// [`shm_open`]: crate:shm::shm_open
+ #[repr(transparent)]
+ #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
+ pub struct ShmOFlags: c::c_uint {
+ /// `O_CREAT`
+ #[doc(alias = "CREAT")]
+ const CREATE = linux_raw_sys::general::O_CREAT;
+
+ /// `O_EXCL`
+ const EXCL = linux_raw_sys::general::O_EXCL;
+
+ /// `O_RDONLY`
+ const RDONLY = linux_raw_sys::general::O_RDONLY;
+
+ /// `O_RDWR`
+ const RDWR = linux_raw_sys::general::O_RDWR;
+
+ /// `O_TRUNC`
+ const TRUNC = linux_raw_sys::general::O_TRUNC;
+
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
+ const _ = !0;
+ }
+}
diff --git a/vendor/rustix/src/backend/linux_raw/system/syscalls.rs b/vendor/rustix/src/backend/linux_raw/system/syscalls.rs
index 947d5168e..6b41cdbab 100644
--- a/vendor/rustix/src/backend/linux_raw/system/syscalls.rs
+++ b/vendor/rustix/src/backend/linux_raw/system/syscalls.rs
@@ -6,9 +6,10 @@
#![allow(unsafe_code, clippy::undocumented_unsafe_blocks)]
use super::types::RawUname;
-use crate::backend::conv::{ret, ret_infallible, slice};
+use crate::backend::c;
+use crate::backend::conv::{c_int, ret, ret_infallible, slice};
use crate::io;
-use crate::system::Sysinfo;
+use crate::system::{RebootCommand, Sysinfo};
use core::mem::MaybeUninit;
#[inline]
@@ -34,3 +35,15 @@ pub(crate) fn sethostname(name: &[u8]) -> io::Result<()> {
let (ptr, len) = slice(name);
unsafe { ret(syscall_readonly!(__NR_sethostname, ptr, len)) }
}
+
+#[inline]
+pub(crate) fn reboot(cmd: RebootCommand) -> io::Result<()> {
+ unsafe {
+ ret(syscall_readonly!(
+ __NR_reboot,
+ c_int(c::LINUX_REBOOT_MAGIC1),
+ c_int(c::LINUX_REBOOT_MAGIC2),
+ c_int(cmd as i32)
+ ))
+ }
+}
diff --git a/vendor/rustix/src/backend/linux_raw/termios/syscalls.rs b/vendor/rustix/src/backend/linux_raw/termios/syscalls.rs
index 09100441f..d2fe91236 100644
--- a/vendor/rustix/src/backend/linux_raw/termios/syscalls.rs
+++ b/vendor/rustix/src/backend/linux_raw/termios/syscalls.rs
@@ -37,8 +37,46 @@ pub(crate) fn tcgetwinsize(fd: BorrowedFd<'_>) -> io::Result<Winsize> {
pub(crate) fn tcgetattr(fd: BorrowedFd<'_>) -> io::Result<Termios> {
unsafe {
let mut result = MaybeUninit::<Termios>::uninit();
+
+ // QEMU's `TCGETS2` doesn't currently set `input_speed` or
+ // `output_speed` on PowerPC, so zero out the fields ourselves.
+ #[cfg(any(target_arch = "powerpc", target_arch = "powerpc64"))]
+ {
+ result.write(core::mem::zeroed());
+ }
+
ret(syscall!(__NR_ioctl, fd, c_uint(c::TCGETS2), &mut result))?;
- Ok(result.assume_init())
+
+ let result = result.assume_init();
+
+ // QEMU's `TCGETS2` doesn't currently set `input_speed` or
+ // `output_speed` on PowerPC, so set them manually if we can.
+ #[cfg(any(target_arch = "powerpc", target_arch = "powerpc64"))]
+ let result = {
+ use crate::termios::speed;
+ let mut result = result;
+ if result.output_speed == 0 && (result.control_modes.bits() & c::CBAUD) != c::BOTHER {
+ if let Some(output_speed) = speed::decode(result.control_modes.bits() & c::CBAUD) {
+ result.output_speed = output_speed;
+ }
+ }
+ if result.input_speed == 0
+ && ((result.control_modes.bits() & c::CIBAUD) >> c::IBSHIFT) != c::BOTHER
+ {
+ // For input speeds, `B0` is special-cased to mean the input
+ // speed is the same as the output speed.
+ if ((result.control_modes.bits() & c::CIBAUD) >> c::IBSHIFT) == c::B0 {
+ result.input_speed = result.output_speed;
+ } else if let Some(input_speed) =
+ speed::decode((result.control_modes.bits() & c::CIBAUD) >> c::IBSHIFT)
+ {
+ result.input_speed = input_speed;
+ }
+ }
+ result
+ };
+
+ Ok(result)
}
}
@@ -240,7 +278,7 @@ pub(crate) fn ttyname(fd: BorrowedFd<'_>, buf: &mut [MaybeUninit<u8>]) -> io::Re
// Check that `fd` is really a tty.
tcgetwinsize(fd)?;
- // Get a fd to '/proc/self/fd'.
+ // Get a fd to "/proc/self/fd".
let proc_self_fd = procfs::proc_self_fd()?;
// Gather the ttyname by reading the "fd" file inside `proc_self_fd`.
diff --git a/vendor/rustix/src/backend/linux_raw/time/types.rs b/vendor/rustix/src/backend/linux_raw/time/types.rs
index ab43aed7c..f3e653b0a 100644
--- a/vendor/rustix/src/backend/linux_raw/time/types.rs
+++ b/vendor/rustix/src/backend/linux_raw/time/types.rs
@@ -21,7 +21,7 @@ bitflags! {
/// `TFD_CLOEXEC`
const CLOEXEC = linux_raw_sys::general::TFD_CLOEXEC;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -39,7 +39,7 @@ bitflags! {
/// `TFD_TIMER_CANCEL_ON_SET`
const CANCEL_ON_SET = linux_raw_sys::general::TFD_TIMER_CANCEL_ON_SET;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/backend/linux_raw/vdso.rs b/vendor/rustix/src/backend/linux_raw/vdso.rs
index 1b0ae5375..102fa6b38 100644
--- a/vendor/rustix/src/backend/linux_raw/vdso.rs
+++ b/vendor/rustix/src/backend/linux_raw/vdso.rs
@@ -55,7 +55,7 @@ fn elf_hash(name: &CStr) -> u32 {
/// Create a `Vdso` value by parsing the vDSO at the `sysinfo_ehdr` address.
fn init_from_sysinfo_ehdr() -> Option<Vdso> {
- // SAFETY: the auxv initialization code does extensive checks to ensure
+ // SAFETY: The auxv initialization code does extensive checks to ensure
// that the value we get really is an `AT_SYSINFO_EHDR` value from the
// kernel.
unsafe {
@@ -106,9 +106,9 @@ fn init_from_sysinfo_ehdr() -> Option<Vdso> {
vdso.load_end = vdso.base_plus(phdr.p_offset.checked_add(phdr.p_memsz)?)?;
vdso.pv_offset = phdr.p_offset.wrapping_sub(phdr.p_vaddr);
} else if phdr.p_type == PT_DYNAMIC {
- // If `p_offset` is zero, it's more likely that we're looking at memory
- // that has been zeroed than that the kernel has somehow aliased the
- // `Ehdr` and the `Elf_Dyn` array.
+ // If `p_offset` is zero, it's more likely that we're looking
+ // at memory that has been zeroed than that the kernel has
+ // somehow aliased the `Ehdr` and the `Elf_Dyn` array.
if phdr.p_offset < size_of::<Elf_Ehdr>() {
return None;
}
@@ -117,9 +117,9 @@ fn init_from_sysinfo_ehdr() -> Option<Vdso> {
.as_ptr();
num_dyn = phdr.p_memsz / size_of::<Elf_Dyn>();
} else if phdr.p_type == PT_INTERP || phdr.p_type == PT_GNU_RELRO {
- // Don't trust any ELF image that has an “interpreter†or that uses
- // RELRO, which is likely to be a user ELF image rather and not the
- // kernel vDSO.
+ // Don't trust any ELF image that has an “interpreter†or
+ // that uses RELRO, which is likely to be a user ELF image
+ // rather and not the kernel vDSO.
return None;
}
}
@@ -176,8 +176,8 @@ fn init_from_sysinfo_ehdr() -> Option<Vdso> {
}
i = i.checked_add(1)?;
}
- // The upstream code checks `symstrings`, `symtab`, and `hash` for null;
- // here, `check_raw_pointer` has already done that.
+ // The upstream code checks `symstrings`, `symtab`, and `hash` for
+ // null; here, `check_raw_pointer` has already done that.
if vdso.verdef.is_null() {
vdso.versym = null();
diff --git a/vendor/rustix/src/backend/linux_raw/vdso_wrappers.rs b/vendor/rustix/src/backend/linux_raw/vdso_wrappers.rs
index 1ff50415b..601dc1855 100644
--- a/vendor/rustix/src/backend/linux_raw/vdso_wrappers.rs
+++ b/vendor/rustix/src/backend/linux_raw/vdso_wrappers.rs
@@ -36,8 +36,8 @@ use {
#[inline]
pub(crate) fn clock_gettime(which_clock: ClockId) -> __kernel_timespec {
// SAFETY: `CLOCK_GETTIME` contains either null or the address of a
- // function with an ABI like libc `clock_gettime`, and calling it has
- // the side effect of writing to the result buffer, and no others.
+ // function with an ABI like libc `clock_gettime`, and calling it has the
+ // side effect of writing to the result buffer, and no others.
unsafe {
let mut result = MaybeUninit::<__kernel_timespec>::uninit();
let callee = match transmute(CLOCK_GETTIME.load(Relaxed)) {
@@ -78,8 +78,8 @@ pub(crate) fn clock_gettime_dynamic(which_clock: DynamicClockId<'_>) -> io::Resu
};
// SAFETY: `CLOCK_GETTIME` contains either null or the address of a
- // function with an ABI like libc `clock_gettime`, and calling it has
- // the side effect of writing to the result buffer, and no others.
+ // function with an ABI like libc `clock_gettime`, and calling it has the
+ // side effect of writing to the result buffer, and no others.
unsafe {
const EINVAL: c::c_int = -(c::EINVAL as c::c_int);
let mut timespec = MaybeUninit::<Timespec>::uninit();
@@ -234,8 +234,8 @@ pub(super) type SyscallType = unsafe extern "C" fn();
#[cold]
fn init_clock_gettime() -> ClockGettimeType {
init();
- // SAFETY: Load the function address from static storage that we
- // just initialized.
+ // SAFETY: Load the function address from static storage that we just
+ // initialized.
unsafe { transmute(CLOCK_GETTIME.load(Relaxed)) }
}
@@ -244,8 +244,8 @@ fn init_clock_gettime() -> ClockGettimeType {
#[cold]
fn init_syscall() -> SyscallType {
init();
- // SAFETY: Load the function address from static storage that we
- // just initialized.
+ // SAFETY: Load the function address from static storage that we just
+ // initialized.
unsafe { transmute(SYSCALL.load(Relaxed)) }
}
@@ -318,7 +318,7 @@ unsafe fn _rustix_clock_gettime_via_syscall(
#[cfg(target_arch = "x86")]
extern "C" {
/// A symbol pointing to an `int 0x80` instruction. This “function†is only
- /// called from assembly, and only with the x86 syscall calling convention.
+ /// called from assembly, and only with the x86 syscall calling convention,
/// so its signature here is not its true signature.
///
/// This extern block and the `global_asm!` below can be replaced with
@@ -345,9 +345,9 @@ rustix_int_0x80:
fn minimal_init() {
// SAFETY: Store default function addresses in static storage so that if we
- // end up making any system calls while we read the vDSO, they'll work.
- // If the memory happens to already be initialized, this is redundant, but
- // not harmful.
+ // end up making any system calls while we read the vDSO, they'll work. If
+ // the memory happens to already be initialized, this is redundant, but not
+ // harmful.
unsafe {
#[cfg(feature = "time")]
{
@@ -381,9 +381,9 @@ fn init() {
if let Some(vdso) = vdso::Vdso::new() {
#[cfg(feature = "time")]
{
- // Look up the platform-specific `clock_gettime` symbol as documented
- // [here], except on 32-bit platforms where we look up the
- // `64`-suffixed variant and fail if we don't find it.
+ // Look up the platform-specific `clock_gettime` symbol as
+ // documented [here], except on 32-bit platforms where we look up
+ // the `64`-suffixed variant and fail if we don't find it.
//
// [here]: https://man7.org/linux/man-pages/man7/vdso.7.html
#[cfg(target_arch = "x86_64")]
@@ -408,8 +408,8 @@ fn init() {
#[cfg(target_pointer_width = "64")]
let ok = true;
- // On some 32-bit platforms, the 64-bit `clock_gettime` symbols are not
- // available on older kernel versions.
+ // On some 32-bit platforms, the 64-bit `clock_gettime` symbols are
+ // not available on older kernel versions.
#[cfg(any(
target_arch = "arm",
target_arch = "mips",
@@ -421,9 +421,9 @@ fn init() {
if ok {
assert!(!ptr.is_null());
- // SAFETY: Store the computed function addresses in static storage
- // so that we don't need to compute it again (but if we do, it
- // doesn't hurt anything).
+ // SAFETY: Store the computed function addresses in static
+ // storage so that we don't need to compute it again (but if
+ // we do, it doesn't hurt anything).
unsafe {
CLOCK_GETTIME.store(ptr.cast(), Relaxed);
}
diff --git a/vendor/rustix/src/bitcast.rs b/vendor/rustix/src/bitcast.rs
index 735101766..77e0e6338 100644
--- a/vendor/rustix/src/bitcast.rs
+++ b/vendor/rustix/src/bitcast.rs
@@ -1,3 +1,5 @@
+//! The `bitcast` and `bitflags_bits` macros.
+
#![allow(unused_macros)]
// Ensure that the source and destination types are both primitive integer
diff --git a/vendor/rustix/src/check_types.rs b/vendor/rustix/src/check_types.rs
index bea04e0b7..0140b6d73 100644
--- a/vendor/rustix/src/check_types.rs
+++ b/vendor/rustix/src/check_types.rs
@@ -19,8 +19,8 @@ macro_rules! check_renamed_type {
};
}
-/// Check that the field of a struct has the same offset as the
-/// corresponding field in the `sys` bindings.
+/// Check that the field of a struct has the same offset as the corresponding
+/// field in the `sys` bindings.
macro_rules! check_struct_field {
($struct:ident, $field:ident) => {
const_assert_eq!(
@@ -54,8 +54,8 @@ macro_rules! check_struct_renamed_field {
};
}
-/// The same as `check_struct_renamed_field`, but for when both the struct
-/// and a field are renamed.
+/// The same as `check_struct_renamed_field`, but for when both the struct and
+/// a field are renamed.
macro_rules! check_renamed_struct_renamed_field {
($to_struct:ident, $from_struct:ident, $to:ident, $from:ident) => {
const_assert_eq!(
diff --git a/vendor/rustix/src/clockid.rs b/vendor/rustix/src/clockid.rs
index abeeb7095..033444d9c 100644
--- a/vendor/rustix/src/clockid.rs
+++ b/vendor/rustix/src/clockid.rs
@@ -16,21 +16,31 @@ use crate::fd::BorrowedFd;
#[non_exhaustive]
pub enum ClockId {
/// `CLOCK_REALTIME`
- Realtime = c::CLOCK_REALTIME,
+ Realtime = bitcast!(c::CLOCK_REALTIME),
/// `CLOCK_MONOTONIC`
- Monotonic = c::CLOCK_MONOTONIC,
+ Monotonic = bitcast!(c::CLOCK_MONOTONIC),
/// `CLOCK_UPTIME`
#[cfg(any(freebsdlike, target_os = "openbsd"))]
Uptime = c::CLOCK_UPTIME,
/// `CLOCK_PROCESS_CPUTIME_ID`
- #[cfg(not(any(solarish, target_os = "netbsd", target_os = "redox")))]
+ #[cfg(not(any(
+ solarish,
+ target_os = "netbsd",
+ target_os = "redox",
+ target_os = "vita"
+ )))]
ProcessCPUTime = c::CLOCK_PROCESS_CPUTIME_ID,
/// `CLOCK_THREAD_CPUTIME_ID`
- #[cfg(not(any(solarish, target_os = "netbsd", target_os = "redox")))]
+ #[cfg(not(any(
+ solarish,
+ target_os = "netbsd",
+ target_os = "redox",
+ target_os = "vita"
+ )))]
ThreadCPUTime = c::CLOCK_THREAD_CPUTIME_ID,
/// `CLOCK_REALTIME_COARSE`
diff --git a/vendor/rustix/src/cstr.rs b/vendor/rustix/src/cstr.rs
index d32436e18..17a8c8b77 100644
--- a/vendor/rustix/src/cstr.rs
+++ b/vendor/rustix/src/cstr.rs
@@ -44,8 +44,9 @@ macro_rules! cstr {
// call `from_bytes_with_nul_unchecked`, which as of this writing
// is defined as `#[inline]` and completely optimizes away.
//
- // SAFETY: We have manually checked that the string does not contain
- // embedded NULs above, and we append or own NUL terminator here.
+ // SAFETY: We have manually checked that the string does not
+ // contain embedded NULs above, and we append or own NUL terminator
+ // here.
unsafe {
$crate::ffi::CStr::from_bytes_with_nul_unchecked(concat!($str, "\0").as_bytes())
}
diff --git a/vendor/rustix/src/event/kqueue.rs b/vendor/rustix/src/event/kqueue.rs
index 05ee4d71b..cd996aaea 100644
--- a/vendor/rustix/src/event/kqueue.rs
+++ b/vendor/rustix/src/event/kqueue.rs
@@ -73,11 +73,11 @@ impl Event {
flags: flags.bits() as _,
fflags,
data: {
- // On openbsd, data is an i64 and not an isize
+ // On OpenBSD, data is an `i64` and not an `isize`.
data as _
},
udata: {
- // On netbsd, udata is an isize and not a pointer.
+ // On NetBSD, udata is an `isize` and not a pointer.
// TODO: Strict provenance, prevent int-to-ptr cast.
udata as _
},
@@ -93,7 +93,7 @@ impl Event {
/// Get the user data for this event.
pub fn udata(&self) -> isize {
- // On netbsd, udata is an isize and not a pointer.
+ // On NetBSD, udata is an isize and not a pointer.
// TODO: Strict provenance, prevent ptr-to-int cast.
self.inner.udata as _
@@ -101,7 +101,7 @@ impl Event {
/// Get the raw data for this event.
pub fn data(&self) -> i64 {
- // On some bsds, data is an isize and not an i64
+ // On some BSDs, data is an `isize` and not an `i64`.
self.inner.data as _
}
@@ -263,7 +263,7 @@ bitflags::bitflags! {
/// TODO
const ERROR = c::EV_ERROR as _;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -294,7 +294,7 @@ bitflags::bitflags! {
/// The link count of the file has changed.
const LINK = c::NOTE_LINK;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -319,7 +319,7 @@ bitflags::bitflags! {
/// An error has occurred with following the process.
const TRACKERR = c::NOTE_TRACKERR;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -351,7 +351,7 @@ bitflags::bitflags! {
/// Trigger the event.
const TRIGGER = c::NOTE_TRIGGER;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/event/mod.rs b/vendor/rustix/src/event/mod.rs
index 03abc9f12..b0b62e0a6 100644
--- a/vendor/rustix/src/event/mod.rs
+++ b/vendor/rustix/src/event/mod.rs
@@ -13,7 +13,7 @@ mod poll;
#[cfg(solarish)]
pub mod port;
-#[cfg(all(feature = "alloc", linux_kernel))]
+#[cfg(linux_kernel)]
pub use crate::backend::event::epoll;
#[cfg(any(
linux_kernel,
diff --git a/vendor/rustix/src/fs/abs.rs b/vendor/rustix/src/fs/abs.rs
index f57bd00fe..8953f351e 100644
--- a/vendor/rustix/src/fs/abs.rs
+++ b/vendor/rustix/src/fs/abs.rs
@@ -1,7 +1,7 @@
//! POSIX-style filesystem functions which operate on bare paths.
use crate::fd::OwnedFd;
-#[cfg(not(target_os = "espidf"))]
+#[cfg(not(any(target_os = "espidf", target_os = "vita")))]
use crate::fs::Access;
#[cfg(not(any(
solarish,
@@ -10,6 +10,7 @@ use crate::fs::Access;
target_os = "netbsd",
target_os = "nto",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi",
)))]
use crate::fs::StatFs;
@@ -129,7 +130,8 @@ fn _readlink(path: &CStr, mut buffer: Vec<u8>) -> io::Result<CString> {
buffer.resize(nread, 0_u8);
return Ok(CString::new(buffer).unwrap());
}
- buffer.reserve(1); // use `Vec` reallocation strategy to grow capacity exponentially
+ // Use `Vec` reallocation strategy to grow capacity exponentially.
+ buffer.reserve(1);
buffer.resize(buffer.capacity(), 0_u8);
}
}
@@ -235,7 +237,7 @@ pub fn mkdir<P: path::Arg>(path: P, mode: Mode) -> io::Result<()> {
///
/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/access.html
/// [Linux]: https://man7.org/linux/man-pages/man2/access.2.html
-#[cfg(not(target_os = "espidf"))]
+#[cfg(not(any(target_os = "espidf", target_os = "vita")))]
#[inline]
pub fn access<P: path::Arg>(path: P, access: Access) -> io::Result<()> {
path.into_with_c_str(|path| backend::fs::syscalls::access(path, access))
@@ -257,6 +259,7 @@ pub fn access<P: path::Arg>(path: P, access: Access) -> io::Result<()> {
target_os = "netbsd",
target_os = "nto",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi",
)))]
#[inline]
diff --git a/vendor/rustix/src/fs/at.rs b/vendor/rustix/src/fs/at.rs
index 0434b56ef..f40c46ce6 100644
--- a/vendor/rustix/src/fs/at.rs
+++ b/vendor/rustix/src/fs/at.rs
@@ -6,14 +6,18 @@
//! [`cwd`]: crate::fs::CWD
use crate::fd::OwnedFd;
+#[cfg(not(any(target_os = "espidf", target_os = "vita")))]
+use crate::fs::Access;
+#[cfg(not(target_os = "espidf"))]
+use crate::fs::AtFlags;
#[cfg(apple)]
use crate::fs::CloneFlags;
-#[cfg(not(any(apple, target_os = "espidf", target_os = "wasi")))]
-use crate::fs::FileType;
#[cfg(linux_kernel)]
use crate::fs::RenameFlags;
#[cfg(not(any(target_os = "aix", target_os = "espidf")))]
use crate::fs::Stat;
+#[cfg(not(any(apple, target_os = "espidf", target_os = "vita", target_os = "wasi")))]
+use crate::fs::{Dev, FileType};
#[cfg(not(any(target_os = "espidf", target_os = "wasi")))]
use crate::fs::{Gid, Uid};
use crate::fs::{Mode, OFlags};
@@ -26,24 +30,19 @@ use {
alloc::vec::Vec,
backend::fd::BorrowedFd,
};
-#[cfg(not(target_os = "espidf"))]
-use {
- crate::fs::{Access, AtFlags, Timestamps},
- crate::timespec::Nsecs,
-};
-
-pub use backend::fs::types::{Dev, RawMode};
+#[cfg(not(any(target_os = "espidf", target_os = "vita")))]
+use {crate::fs::Timestamps, crate::timespec::Nsecs};
/// `UTIME_NOW` for use with [`utimensat`].
///
/// [`utimensat`]: crate::fs::utimensat
-#[cfg(not(any(target_os = "espidf", target_os = "redox")))]
+#[cfg(not(any(target_os = "espidf", target_os = "redox", target_os = "vita")))]
pub const UTIME_NOW: Nsecs = backend::c::UTIME_NOW as Nsecs;
/// `UTIME_OMIT` for use with [`utimensat`].
///
/// [`utimensat`]: crate::fs::utimensat
-#[cfg(not(any(target_os = "espidf", target_os = "redox")))]
+#[cfg(not(any(target_os = "espidf", target_os = "redox", target_os = "vita")))]
pub const UTIME_OMIT: Nsecs = backend::c::UTIME_OMIT as Nsecs;
/// `openat(dirfd, path, oflags, mode)`—Opens a file.
@@ -104,8 +103,8 @@ fn _readlinkat(dirfd: BorrowedFd<'_>, path: &CStr, mut buffer: Vec<u8>) -> io::R
debug_assert!(nread <= buffer.capacity());
if nread < buffer.capacity() {
- // SAFETY: From the [documentation]:
- // "On success, these calls return the number of bytes placed in buf."
+ // SAFETY: From the [documentation]: “On success, these calls
+ // return the number of bytes placed in buf.â€
//
// [documentation]: https://man7.org/linux/man-pages/man2/readlinkat.2.html
unsafe {
@@ -113,13 +112,13 @@ fn _readlinkat(dirfd: BorrowedFd<'_>, path: &CStr, mut buffer: Vec<u8>) -> io::R
}
// SAFETY:
- // - "readlink places the contents of the symbolic link pathname in the buffer
- // buf"
- // - [POSIX definition 3.271: Pathname]: "A string that is used to identify a
- // file."
- // - [POSIX definition 3.375: String]: "A contiguous sequence of bytes
- // terminated by and including the first null byte."
- // - "readlink does not append a terminating null byte to buf."
+ // - “readlink places the contents of the symbolic link pathname in
+ // the buffer bufâ€
+ // - [POSIX definition 3.271: Pathname]: “A string that is used to
+ // identify a file.â€
+ // - [POSIX definition 3.375: String]: “A contiguous sequence of
+ // bytes terminated by and including the first null byte.â€
+ // - “readlink does not append a terminating null byte to buf.â€
//
// Thus, there will be no NUL bytes in the string.
//
@@ -130,9 +129,8 @@ fn _readlinkat(dirfd: BorrowedFd<'_>, path: &CStr, mut buffer: Vec<u8>) -> io::R
}
}
- buffer.reserve(buffer.capacity() + 1); // use `Vec` reallocation
- // strategy to grow capacity
- // exponentially
+ // Use `Vec` reallocation strategy to grow capacity exponentially.
+ buffer.reserve(buffer.capacity() + 1);
}
}
@@ -182,8 +180,8 @@ pub fn linkat<P: path::Arg, Q: path::Arg, PFd: AsFd, QFd: AsFd>(
/// `unlinkat(fd, path, flags)`—Unlinks a file or remove a directory.
///
-/// With the [`REMOVEDIR`] flag, this removes a directory. This is in place
-/// of a `rmdirat` function.
+/// With the [`REMOVEDIR`] flag, this removes a directory. This is in place of
+/// a `rmdirat` function.
///
/// # References
/// - [POSIX]
@@ -314,7 +312,7 @@ pub fn statat<P: path::Arg, Fd: AsFd>(dirfd: Fd, path: P, flags: AtFlags) -> io:
///
/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/faccessat.html
/// [Linux]: https://man7.org/linux/man-pages/man2/faccessat.2.html
-#[cfg(not(target_os = "espidf"))]
+#[cfg(not(any(target_os = "espidf", target_os = "vita")))]
#[inline]
#[doc(alias = "faccessat")]
pub fn accessat<P: path::Arg, Fd: AsFd>(
@@ -334,7 +332,7 @@ pub fn accessat<P: path::Arg, Fd: AsFd>(
///
/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/utimensat.html
/// [Linux]: https://man7.org/linux/man-pages/man2/utimensat.2.html
-#[cfg(not(target_os = "espidf"))]
+#[cfg(not(any(target_os = "espidf", target_os = "vita")))]
#[inline]
pub fn utimensat<P: path::Arg, Fd: AsFd>(
dirfd: Fd,
@@ -396,7 +394,7 @@ pub fn fclonefileat<Fd: AsFd, DstFd: AsFd, P: path::Arg>(
///
/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/mknodat.html
/// [Linux]: https://man7.org/linux/man-pages/man2/mknodat.2.html
-#[cfg(not(any(apple, target_os = "espidf", target_os = "wasi")))]
+#[cfg(not(any(apple, target_os = "espidf", target_os = "vita", target_os = "wasi")))]
#[inline]
pub fn mknodat<P: path::Arg, Fd: AsFd>(
dirfd: Fd,
diff --git a/vendor/rustix/src/fs/constants.rs b/vendor/rustix/src/fs/constants.rs
index 85889d90e..a9237af7a 100644
--- a/vendor/rustix/src/fs/constants.rs
+++ b/vendor/rustix/src/fs/constants.rs
@@ -3,17 +3,5 @@
use crate::backend;
pub use crate::io::FdFlags;
-#[cfg(not(target_os = "espidf"))]
-pub use backend::fs::types::Access;
-pub use backend::fs::types::{Dev, Mode, OFlags};
-
-#[cfg(not(any(target_os = "espidf", target_os = "redox")))]
-pub use backend::fs::types::AtFlags;
-
-#[cfg(apple)]
-pub use backend::fs::types::{CloneFlags, CopyfileFlags};
-
-#[cfg(linux_kernel)]
-pub use backend::fs::types::*;
-
pub use crate::timespec::{Nsecs, Secs, Timespec};
+pub use backend::fs::types::*;
diff --git a/vendor/rustix/src/fs/fadvise.rs b/vendor/rustix/src/fs/fadvise.rs
index 5bc3a588a..a760a186a 100644
--- a/vendor/rustix/src/fs/fadvise.rs
+++ b/vendor/rustix/src/fs/fadvise.rs
@@ -1,7 +1,6 @@
use crate::{backend, io};
use backend::fd::AsFd;
-
-pub use backend::fs::types::Advice;
+use backend::fs::types::Advice;
/// `posix_fadvise(fd, offset, len, advice)`—Declares an expected access
/// pattern for a file.
diff --git a/vendor/rustix/src/fs/fcntl.rs b/vendor/rustix/src/fs/fcntl.rs
index facbc9fa3..f80db849a 100644
--- a/vendor/rustix/src/fs/fcntl.rs
+++ b/vendor/rustix/src/fs/fcntl.rs
@@ -1,13 +1,14 @@
-//! The Unix `fcntl` function is effectively lots of different functions
-//! hidden behind a single dynamic dispatch interface. In order to provide
-//! a type-safe API, rustix makes them all separate functions so that they
-//! can have dedicated static type signatures.
+//! The Unix `fcntl` function is effectively lots of different functions hidden
+//! behind a single dynamic dispatch interface. In order to provide a type-safe
+//! API, rustix makes them all separate functions so that they can have
+//! dedicated static type signatures.
#[cfg(not(any(
target_os = "emscripten",
target_os = "espidf",
target_os = "fuchsia",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi"
)))]
use crate::fs::FlockOperation;
@@ -64,7 +65,7 @@ pub fn fcntl_get_seals<Fd: AsFd>(fd: Fd) -> io::Result<SealFlags> {
}
#[cfg(any(linux_kernel, target_os = "freebsd", target_os = "fuchsia"))]
-pub use backend::fs::types::SealFlags;
+use backend::fs::types::SealFlags;
/// `fcntl(fd, F_ADD_SEALS)`
///
@@ -86,8 +87,8 @@ pub fn fcntl_add_seals<Fd: AsFd>(fd: Fd, seals: SealFlags) -> io::Result<()> {
/// file should be locked.
///
/// Unlike `flock`-style locks, `fcntl`-style locks are process-associated,
-/// meaning that they don't guard against being acquired by two threads in
-/// the same process.
+/// meaning that they don't guard against being acquired by two threads in the
+/// same process.
///
/// # References
/// - [POSIX]
@@ -100,6 +101,7 @@ pub fn fcntl_add_seals<Fd: AsFd>(fd: Fd, seals: SealFlags) -> io::Result<()> {
target_os = "espidf",
target_os = "fuchsia",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi"
)))]
#[inline]
diff --git a/vendor/rustix/src/fs/fcopyfile.rs b/vendor/rustix/src/fs/fcopyfile.rs
index d8931733f..e8f26ffdc 100644
--- a/vendor/rustix/src/fs/fcopyfile.rs
+++ b/vendor/rustix/src/fs/fcopyfile.rs
@@ -1,9 +1,7 @@
use crate::fs::CopyfileFlags;
use crate::{backend, io};
use backend::fd::AsFd;
-
-/// `copyfile_state_t`
-pub use backend::fs::types::copyfile_state_t;
+use backend::fs::types::copyfile_state_t;
/// `fcopyfile(from, to, state, flags)`
///
diff --git a/vendor/rustix/src/fs/fd.rs b/vendor/rustix/src/fs/fd.rs
index 94de43daa..3ef4b3826 100644
--- a/vendor/rustix/src/fs/fd.rs
+++ b/vendor/rustix/src/fs/fd.rs
@@ -7,10 +7,6 @@ use crate::fs::{Gid, Uid};
use crate::fs::{OFlags, SeekFrom, Timespec};
use crate::{backend, io};
use backend::fd::{AsFd, BorrowedFd};
-
-#[cfg(not(any(target_os = "espidf", target_os = "wasi")))]
-pub use backend::fs::types::FlockOperation;
-
#[cfg(not(any(
netbsdlike,
solarish,
@@ -19,11 +15,19 @@ pub use backend::fs::types::FlockOperation;
target_os = "espidf",
target_os = "nto",
target_os = "redox",
+ target_os = "vita",
)))]
-pub use backend::fs::types::FallocateFlags;
-
-pub use backend::fs::types::Stat;
-
+use backend::fs::types::FallocateFlags;
+#[cfg(not(any(
+ target_os = "espidf",
+ target_os = "solaris",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
+use backend::fs::types::FlockOperation;
+#[cfg(linux_kernel)]
+use backend::fs::types::FsWord;
+use backend::fs::types::Stat;
#[cfg(not(any(
solarish,
target_os = "espidf",
@@ -31,15 +35,12 @@ pub use backend::fs::types::Stat;
target_os = "netbsd",
target_os = "nto",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi",
)))]
-pub use backend::fs::types::StatFs;
-
+use backend::fs::types::StatFs;
#[cfg(not(any(target_os = "haiku", target_os = "redox", target_os = "wasi")))]
-pub use backend::fs::types::{StatVfs, StatVfsMountFlags};
-
-#[cfg(linux_kernel)]
-pub use backend::fs::types::FsWord;
+use backend::fs::types::StatVfs;
/// Timestamps used by [`utimensat`] and [`futimens`].
///
@@ -107,8 +108,8 @@ pub fn tell<Fd: AsFd>(fd: Fd) -> io::Result<u64> {
/// `fchmod(fd, mode)`—Sets open file or directory permissions.
///
-/// This implementation does not support `O_PATH` file descriptors, even on
-/// platforms where the host libc emulates it.
+/// This implementation does not support [`OFlags::PATH`] file descriptors,
+/// even on platforms where the host libc emulates it.
///
/// # References
/// - [POSIX]
@@ -170,6 +171,7 @@ pub fn fstat<Fd: AsFd>(fd: Fd) -> io::Result<Stat> {
target_os = "netbsd",
target_os = "nto",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi",
)))]
#[inline]
@@ -205,7 +207,7 @@ pub fn fstatvfs<Fd: AsFd>(fd: Fd) -> io::Result<StatVfs> {
///
/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/futimens.html
/// [Linux]: https://man7.org/linux/man-pages/man2/utimensat.2.html
-#[cfg(not(target_os = "espidf"))]
+#[cfg(not(any(target_os = "espidf", target_os = "vita")))]
#[inline]
pub fn futimens<Fd: AsFd>(fd: Fd, times: &Timestamps) -> io::Result<()> {
backend::fs::syscalls::futimens(fd.as_fd(), times)
@@ -234,6 +236,7 @@ pub fn futimens<Fd: AsFd>(fd: Fd, times: &Timestamps) -> io::Result<()> {
target_os = "espidf",
target_os = "nto",
target_os = "redox",
+ target_os = "vita",
)))] // not implemented in libc for netbsd yet
#[inline]
#[doc(alias = "posix_fallocate")]
@@ -304,6 +307,7 @@ pub fn fsync<Fd: AsFd>(fd: Fd) -> io::Result<()> {
target_os = "espidf",
target_os = "haiku",
target_os = "redox",
+ target_os = "vita",
)))]
#[inline]
pub fn fdatasync<Fd: AsFd>(fd: Fd) -> io::Result<()> {
@@ -329,7 +333,12 @@ pub fn ftruncate<Fd: AsFd>(fd: Fd, length: u64) -> io::Result<()> {
/// - [Linux]
///
/// [Linux]: https://man7.org/linux/man-pages/man2/flock.2.html
-#[cfg(not(any(target_os = "espidf", target_os = "solaris", target_os = "wasi")))]
+#[cfg(not(any(
+ target_os = "espidf",
+ target_os = "solaris",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
#[inline]
pub fn flock<Fd: AsFd>(fd: Fd, operation: FlockOperation) -> io::Result<()> {
backend::fs::syscalls::flock(fd.as_fd(), operation)
diff --git a/vendor/rustix/src/fs/file_type.rs b/vendor/rustix/src/fs/file_type.rs
deleted file mode 100644
index cf8fc1d38..000000000
--- a/vendor/rustix/src/fs/file_type.rs
+++ /dev/null
@@ -1,4 +0,0 @@
-use crate::backend;
-
-/// `S_IF*` constants.
-pub use backend::fs::types::FileType;
diff --git a/vendor/rustix/src/fs/memfd_create.rs b/vendor/rustix/src/fs/memfd_create.rs
index bbcbab258..83d1ff51e 100644
--- a/vendor/rustix/src/fs/memfd_create.rs
+++ b/vendor/rustix/src/fs/memfd_create.rs
@@ -1,7 +1,6 @@
use crate::fd::OwnedFd;
use crate::{backend, io, path};
-
-pub use backend::fs::types::MemfdFlags;
+use backend::fs::types::MemfdFlags;
/// `memfd_create(path, flags)`
///
diff --git a/vendor/rustix/src/fs/mod.rs b/vendor/rustix/src/fs/mod.rs
index 1ea0d1351..f6d543a98 100644
--- a/vendor/rustix/src/fs/mod.rs
+++ b/vendor/rustix/src/fs/mod.rs
@@ -19,6 +19,7 @@ mod dir;
target_os = "espidf",
target_os = "haiku",
target_os = "redox",
+ target_os = "vita",
)))]
mod fadvise;
pub(crate) mod fcntl;
@@ -27,17 +28,17 @@ mod fcntl_apple;
#[cfg(apple)]
mod fcopyfile;
pub(crate) mod fd;
-mod file_type;
#[cfg(apple)]
mod getpath;
#[cfg(not(target_os = "wasi"))] // WASI doesn't have get[gpu]id.
mod id;
-#[cfg(not(target_os = "wasi"))]
+#[cfg(linux_kernel)]
mod ioctl;
#[cfg(not(any(
target_os = "espidf",
target_os = "haiku",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi"
)))]
mod makedev;
@@ -55,7 +56,12 @@ mod seek_from;
mod sendfile;
#[cfg(linux_kernel)]
mod statx;
-#[cfg(not(any(target_os = "espidf", target_os = "redox", target_os = "wasi")))]
+#[cfg(not(any(
+ target_os = "espidf",
+ target_os = "redox",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
mod sync;
#[cfg(any(apple, linux_kernel))]
mod xattr;
@@ -81,30 +87,31 @@ pub use dir::{Dir, DirEntry};
target_os = "espidf",
target_os = "haiku",
target_os = "redox",
+ target_os = "vita",
)))]
-pub use fadvise::{fadvise, Advice};
+pub use fadvise::fadvise;
pub use fcntl::*;
#[cfg(apple)]
pub use fcntl_apple::*;
#[cfg(apple)]
pub use fcopyfile::*;
pub use fd::*;
-pub use file_type::FileType;
#[cfg(apple)]
pub use getpath::getpath;
#[cfg(not(target_os = "wasi"))]
pub use id::*;
-#[cfg(not(target_os = "wasi"))]
+#[cfg(linux_kernel)]
pub use ioctl::*;
#[cfg(not(any(
target_os = "espidf",
target_os = "haiku",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi"
)))]
pub use makedev::*;
#[cfg(any(linux_kernel, target_os = "freebsd"))]
-pub use memfd_create::{memfd_create, MemfdFlags};
+pub use memfd_create::memfd_create;
#[cfg(linux_kernel)]
#[cfg(feature = "fs")]
pub use mount::*;
@@ -116,8 +123,13 @@ pub use seek_from::SeekFrom;
#[cfg(target_os = "linux")]
pub use sendfile::sendfile;
#[cfg(linux_kernel)]
-pub use statx::{statx, Statx, StatxFlags, StatxTimestamp};
-#[cfg(not(any(target_os = "espidf", target_os = "redox", target_os = "wasi")))]
+pub use statx::statx;
+#[cfg(not(any(
+ target_os = "espidf",
+ target_os = "redox",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
pub use sync::sync;
#[cfg(any(apple, linux_kernel))]
pub use xattr::*;
diff --git a/vendor/rustix/src/fs/mount.rs b/vendor/rustix/src/fs/mount.rs
index 0f04b7f69..bd44aaa7d 100644
--- a/vendor/rustix/src/fs/mount.rs
+++ b/vendor/rustix/src/fs/mount.rs
@@ -2,16 +2,16 @@
//!
//! These have been moved to a new `rustix::mount` module.
-#[deprecated(note = "rustix::fs::UnmountFlags` moved to `rustix::mount::UnmountFlags`.")]
+#[deprecated(note = "`rustix::fs::UnmountFlags` moved to `rustix::mount::UnmountFlags`.")]
#[doc(hidden)]
pub use crate::mount::UnmountFlags;
-#[deprecated(note = "rustix::fs::MountFlags` moved to `rustix::mount::MountFlags`.")]
+#[deprecated(note = "`rustix::fs::MountFlags` moved to `rustix::mount::MountFlags`.")]
#[doc(hidden)]
pub use crate::mount::MountFlags;
#[deprecated(
- note = "rustix::fs::MountPropagationFlags` moved to `rustix::mount::MountPropagationFlags`."
+ note = "`rustix::fs::MountPropagationFlags` moved to `rustix::mount::MountPropagationFlags`."
)]
#[doc(hidden)]
pub use crate::mount::MountPropagationFlags;
diff --git a/vendor/rustix/src/fs/raw_dir.rs b/vendor/rustix/src/fs/raw_dir.rs
index fd8aefa3a..93686b19a 100644
--- a/vendor/rustix/src/fs/raw_dir.rs
+++ b/vendor/rustix/src/fs/raw_dir.rs
@@ -43,10 +43,11 @@ impl<'buf, Fd: AsFd> RawDir<'buf, Fd> {
/// ```
/// # use std::mem::MaybeUninit;
/// # use rustix::fs::{CWD, Mode, OFlags, openat, RawDir};
+ /// # use rustix::cstr;
///
/// let fd = openat(
/// CWD,
- /// ".",
+ /// cstr!("."),
/// OFlags::RDONLY | OFlags::DIRECTORY | OFlags::CLOEXEC,
/// Mode::empty(),
/// )
@@ -65,10 +66,11 @@ impl<'buf, Fd: AsFd> RawDir<'buf, Fd> {
/// ```
/// # use std::mem::MaybeUninit;
/// # use rustix::fs::{CWD, Mode, OFlags, openat, RawDir};
+ /// # use rustix::cstr;
///
/// let fd = openat(
/// CWD,
- /// ".",
+ /// cstr!("."),
/// OFlags::RDONLY | OFlags::DIRECTORY | OFlags::CLOEXEC,
/// Mode::empty(),
/// )
@@ -92,10 +94,11 @@ impl<'buf, Fd: AsFd> RawDir<'buf, Fd> {
/// # use std::mem::MaybeUninit;
/// # use rustix::fs::{CWD, Mode, OFlags, openat, RawDir};
/// # use rustix::io::Errno;
+ /// # use rustix::cstr;
///
/// let fd = openat(
/// CWD,
- /// ".",
+ /// cstr!("."),
/// OFlags::RDONLY | OFlags::DIRECTORY | OFlags::CLOEXEC,
/// Mode::empty(),
/// )
diff --git a/vendor/rustix/src/fs/statx.rs b/vendor/rustix/src/fs/statx.rs
index 1791697af..b7d6787a6 100644
--- a/vendor/rustix/src/fs/statx.rs
+++ b/vendor/rustix/src/fs/statx.rs
@@ -3,8 +3,7 @@
use crate::fd::AsFd;
use crate::fs::AtFlags;
use crate::{backend, io, path};
-
-pub use backend::fs::types::{Statx, StatxFlags, StatxTimestamp};
+use backend::fs::types::{Statx, StatxFlags};
#[cfg(feature = "linux_4_11")]
use backend::fs::syscalls::statx as _statx;
@@ -28,8 +27,9 @@ use compat::statx as _statx;
/// # use std::io;
/// # use rustix::fs::{AtFlags, StatxFlags};
/// # use rustix::fd::BorrowedFd;
-/// /// Try to determine if the provided path is a mount root. Will return `Ok(None)` if
-/// /// the kernel is not new enough to support statx() or [`libc::STATX_ATTR_MOUNT_ROOT`].
+/// /// Try to determine if the provided path is a mount root. Will return
+/// /// `Ok(None)` if the kernel is not new enough to support `statx` or
+/// /// [`libc::STATX_ATTR_MOUNT_ROOT`].
/// fn is_mountpoint(root: BorrowedFd<'_>, path: &Path) -> io::Result<Option<bool>> {
/// use rustix::fs::{AtFlags, StatxFlags};
///
@@ -71,8 +71,9 @@ mod compat {
use backend::fs::types::{Statx, StatxFlags};
- // Linux kernel prior to 4.11 old versions of Docker don't support `statx`.
- // We store the availability in a global to avoid unnecessary syscalls.
+ // Linux kernel prior to 4.11 and old versions of Docker don't support
+ // `statx`. We store the availability in a global to avoid unnecessary
+ // syscalls.
//
// 0: Unknown
// 1: Not available
diff --git a/vendor/rustix/src/fs/xattr.rs b/vendor/rustix/src/fs/xattr.rs
index 53612f71f..d5be7a34b 100644
--- a/vendor/rustix/src/fs/xattr.rs
+++ b/vendor/rustix/src/fs/xattr.rs
@@ -15,7 +15,7 @@ bitflags! {
/// `XATTR_REPLACE`
const REPLACE = c::XATTR_REPLACE as c::c_uint;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/io/dup.rs b/vendor/rustix/src/io/dup.rs
index 9f5186192..46fb38ad3 100644
--- a/vendor/rustix/src/io/dup.rs
+++ b/vendor/rustix/src/io/dup.rs
@@ -115,6 +115,7 @@ pub fn dup2<Fd: AsFd>(fd: Fd, new: &mut OwnedFd) -> io::Result<()> {
target_os = "aix",
target_os = "espidf",
target_os = "nto",
+ target_os = "vita",
target_os = "wasi"
)))]
#[inline]
diff --git a/vendor/rustix/src/io/fcntl.rs b/vendor/rustix/src/io/fcntl.rs
index 913e9d062..1880ac7db 100644
--- a/vendor/rustix/src/io/fcntl.rs
+++ b/vendor/rustix/src/io/fcntl.rs
@@ -1,10 +1,10 @@
-//! The Unix `fcntl` function is effectively lots of different functions
-//! hidden behind a single dynamic dispatch interface. In order to provide
-//! a type-safe API, rustix makes them all separate functions so that they
-//! can have dedicated static type signatures.
+//! The Unix `fcntl` function is effectively lots of different functions hidden
+//! behind a single dynamic dispatch interface. In order to provide a type-safe
+//! API, rustix makes them all separate functions so that they can have
+//! dedicated static type signatures.
//!
-//! `fcntl` functions which are not specific to files or directories live
-//! in the [`io`] module instead.
+//! `fcntl` functions which are not specific to files or directories live in
+//! the [`io`] module instead.
//!
//! [`io`]: crate::io
diff --git a/vendor/rustix/src/io/ioctl.rs b/vendor/rustix/src/io/ioctl.rs
index e85719a4d..f89160bf3 100644
--- a/vendor/rustix/src/io/ioctl.rs
+++ b/vendor/rustix/src/io/ioctl.rs
@@ -14,16 +14,8 @@ use backend::fd::AsFd;
/// `ioctl(fd, FIOCLEX, NULL)`—Set the close-on-exec flag.
///
-/// Also known as `fcntl(fd, F_SETFD, FD_CLOEXEC)`.
-///
-/// # References
-/// - [Winsock2]
-/// - [NetBSD]
-/// - [OpenBSD]
-///
-/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-ioctlsocket
-/// [NetBSD]: https://man.netbsd.org/ioctl.2#GENERIC%20IOCTLS
-/// [OpenBSD]: https://man.openbsd.org/ioctl.2#GENERIC_IOCTLS
+/// This is similar to `fcntl(fd, F_SETFD, FD_CLOEXEC)`, except that it avoids
+/// clearing any other flags that might be set.
#[cfg(apple)]
#[inline]
#[doc(alias = "FIOCLEX")]
@@ -58,8 +50,8 @@ pub fn ioctl_fionbio<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
/// `ioctl(fd, FIONREAD)`—Returns the number of bytes ready to be read.
///
-/// The result of this function gets silently coerced into a C `int`
-/// by the OS, so it may contain a wrapped value.
+/// The result of this function gets silently coerced into a C `int` by the OS,
+/// so it may contain a wrapped value.
///
/// # References
/// - [Linux]
@@ -73,7 +65,7 @@ pub fn ioctl_fionbio<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=ioctl&sektion=2#GENERIC%09IOCTLS
/// [NetBSD]: https://man.netbsd.org/ioctl.2#GENERIC%20IOCTLS
/// [OpenBSD]: https://man.openbsd.org/ioctl.2#GENERIC_IOCTLS
-#[cfg(not(target_os = "espidf"))]
+#[cfg(not(any(target_os = "espidf", target_os = "vita")))]
#[inline]
#[doc(alias = "FIONREAD")]
pub fn ioctl_fionread<Fd: AsFd>(fd: Fd) -> io::Result<u64> {
diff --git a/vendor/rustix/src/io/read_write.rs b/vendor/rustix/src/io/read_write.rs
index 91a28bc39..fe454adba 100644
--- a/vendor/rustix/src/io/read_write.rs
+++ b/vendor/rustix/src/io/read_write.rs
@@ -192,7 +192,8 @@ pub fn writev<Fd: AsFd>(fd: Fd, bufs: &[IoSlice<'_>]) -> io::Result<usize> {
target_os = "haiku",
target_os = "nto",
target_os = "redox",
- target_os = "solaris"
+ target_os = "solaris",
+ target_os = "vita"
)))]
#[inline]
pub fn preadv<Fd: AsFd>(fd: Fd, bufs: &mut [IoSliceMut<'_>], offset: u64) -> io::Result<usize> {
@@ -225,7 +226,8 @@ pub fn preadv<Fd: AsFd>(fd: Fd, bufs: &mut [IoSliceMut<'_>], offset: u64) -> io:
target_os = "haiku",
target_os = "nto",
target_os = "redox",
- target_os = "solaris"
+ target_os = "solaris",
+ target_os = "vita"
)))]
#[inline]
pub fn pwritev<Fd: AsFd>(fd: Fd, bufs: &[IoSlice<'_>], offset: u64) -> io::Result<usize> {
diff --git a/vendor/rustix/src/io_uring.rs b/vendor/rustix/src/io_uring.rs
index 09a4d6d62..83941922c 100644
--- a/vendor/rustix/src/io_uring.rs
+++ b/vendor/rustix/src/io_uring.rs
@@ -31,6 +31,49 @@ use core::mem::MaybeUninit;
use core::ptr::{null_mut, write_bytes};
use linux_raw_sys::net;
+// Export types used in io_uring APIs.
+pub use crate::event::epoll::{
+ Event as EpollEvent, EventData as EpollEventData, EventFlags as EpollEventFlags,
+};
+pub use crate::fs::{Advice, AtFlags, Mode, OFlags, RenameFlags, ResolveFlags, Statx, StatxFlags};
+pub use crate::io::ReadWriteFlags;
+pub use crate::net::{RecvFlags, SendFlags, SocketFlags};
+pub use crate::timespec::Timespec;
+pub use linux_raw_sys::general::sigset_t;
+
+pub use net::{__kernel_sockaddr_storage as sockaddr_storage, msghdr, sockaddr, socklen_t};
+
+// Declare the `c_char` type for use with entries that take pointers
+// to C strings. Define it as unsigned or signed according to the platform
+// so that we match what Rust's `CStr` uses.
+//
+// When we can update to linux-raw-sys 0.5, we can remove this, as its
+// `c_char` type will declare this.
+/// The C `char` type.
+#[cfg(any(
+ target_arch = "aarch64",
+ target_arch = "arm",
+ target_arch = "msp430",
+ target_arch = "powerpc",
+ target_arch = "powerpc64",
+ target_arch = "riscv32",
+ target_arch = "riscv64",
+ target_arch = "s390x",
+))]
+#[allow(non_camel_case_types)]
+pub type c_char = u8;
+/// The C `char` type.
+#[cfg(any(
+ target_arch = "mips",
+ target_arch = "mips64",
+ target_arch = "sparc64",
+ target_arch = "x86",
+ target_arch = "x86_64",
+ target_arch = "xtensa",
+))]
+#[allow(non_camel_case_types)]
+pub type c_char = i8;
+
mod sys {
pub(super) use linux_raw_sys::io_uring::*;
#[cfg(test)]
@@ -124,7 +167,7 @@ bitflags::bitflags! {
/// `IORING_ENTER_REGISTERED_RING`
const REGISTERED_RING = sys::IORING_ENTER_REGISTERED_RING;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -462,7 +505,7 @@ bitflags::bitflags! {
/// `IORING_SETUP_DEFER_TASKRUN`
const DEFER_TASKRUN = sys::IORING_SETUP_DEFER_TASKRUN;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -493,7 +536,7 @@ bitflags::bitflags! {
/// `1 << IOSQE_CQE_SKIP_SUCCESS_BIT`
const CQE_SKIP_SUCCESS = 1 << sys::IOSQE_CQE_SKIP_SUCCESS_BIT as u8;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -515,7 +558,7 @@ bitflags::bitflags! {
/// `IORING_CQE_F_NOTIF`
const NOTIF = bitcast!(sys::IORING_CQE_F_NOTIF);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -528,7 +571,7 @@ bitflags::bitflags! {
/// `IORING_FSYNC_DATASYNC`
const DATASYNC = sys::IORING_FSYNC_DATASYNC;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -563,7 +606,7 @@ bitflags::bitflags! {
/// `IORING_LINK_TIMEOUT_UPDATE`
const LINK_TIMEOUT_UPDATE = sys::IORING_LINK_TIMEOUT_UPDATE;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -576,7 +619,7 @@ bitflags::bitflags! {
/// `SPLICE_F_FD_IN_FIXED`
const FD_IN_FIXED = sys::SPLICE_F_FD_IN_FIXED;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -589,7 +632,7 @@ bitflags::bitflags! {
/// `IORING_MSG_RING_CQE_SKIP`
const CQE_SKIP = sys::IORING_MSG_RING_CQE_SKIP;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -611,7 +654,7 @@ bitflags::bitflags! {
/// `IORING_ASYNC_CANCEL_FD`
const FD_FIXED = sys::IORING_ASYNC_CANCEL_FD_FIXED;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -660,7 +703,7 @@ bitflags::bitflags! {
/// `IORING_FEAT_LINKED_FILE`
const LINKED_FILE = sys::IORING_FEAT_LINKED_FILE;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -673,7 +716,7 @@ bitflags::bitflags! {
/// `IO_URING_OP_SUPPORTED`
const SUPPORTED = sys::IO_URING_OP_SUPPORTED as _;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -686,7 +729,7 @@ bitflags::bitflags! {
/// `IORING_RSRC_REGISTER_SPARSE`
const REGISTER_SPARSE = sys::IORING_RSRC_REGISTER_SPARSE as _;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -705,7 +748,7 @@ bitflags::bitflags! {
/// `IORING_SQ_TASKRUN`
const TASKRUN = sys::IORING_SQ_TASKRUN;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -718,7 +761,7 @@ bitflags::bitflags! {
/// `IORING_CQ_EVENTFD_DISABLED`
const EVENTFD_DISABLED = sys::IORING_CQ_EVENTFD_DISABLED;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -740,7 +783,7 @@ bitflags::bitflags! {
/// `IORING_POLL_ADD_LEVEL`
const ADD_LEVEL = sys::IORING_POLL_ADD_LEVEL;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -763,7 +806,7 @@ bitflags::bitflags! {
/// `IORING_SEND_ZC_REPORT_USAGE` (since Linux 6.2)
const ZC_REPORT_USAGE = sys::IORING_SEND_ZC_REPORT_USAGE as _;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -786,7 +829,7 @@ bitflags::bitflags! {
/// See also [`IoringSendFlags::FIXED_BUF`].
const FIXED_BUF = sys::IORING_RECVSEND_FIXED_BUF as _;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -799,7 +842,7 @@ bitflags::bitflags! {
/// `IORING_ACCEPT_MULTISHOT`
const MULTISHOT = sys::IORING_ACCEPT_MULTISHOT as _;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -824,7 +867,7 @@ bitflags::bitflags! {
/// `MSG_ERRQUEUE`
const ERRQUEUE = net::MSG_ERRQUEUE;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -1062,20 +1105,20 @@ pub union op_flags_union {
pub sync_range_flags: u32,
/// `msg_flags` is split into `send_flags` and `recv_flags`.
#[doc(alias = "msg_flags")]
- pub send_flags: crate::net::SendFlags,
+ pub send_flags: SendFlags,
/// `msg_flags` is split into `send_flags` and `recv_flags`.
#[doc(alias = "msg_flags")]
- pub recv_flags: crate::net::RecvFlags,
+ pub recv_flags: RecvFlags,
pub timeout_flags: IoringTimeoutFlags,
- pub accept_flags: crate::net::SocketFlags,
+ pub accept_flags: SocketFlags,
pub cancel_flags: IoringAsyncCancelFlags,
- pub open_flags: crate::fs::OFlags,
- pub statx_flags: crate::fs::AtFlags,
- pub fadvise_advice: crate::fs::Advice,
+ pub open_flags: OFlags,
+ pub statx_flags: AtFlags,
+ pub fadvise_advice: Advice,
pub splice_flags: SpliceFlags,
- pub rename_flags: crate::fs::RenameFlags,
- pub unlink_flags: crate::fs::AtFlags,
- pub hardlink_flags: crate::fs::AtFlags,
+ pub rename_flags: RenameFlags,
+ pub unlink_flags: AtFlags,
+ pub hardlink_flags: AtFlags,
pub msg_ring_flags: IoringMsgringFlags,
}
@@ -1087,12 +1130,33 @@ pub union buf_union {
pub buf_group: u16,
}
+// TODO: Rename this to include `addr_len` when we have a semver bump?
#[allow(missing_docs)]
#[repr(C)]
#[derive(Copy, Clone)]
pub union splice_fd_in_or_file_index_union {
pub splice_fd_in: i32,
pub file_index: u32,
+ pub addr_len: addr_len_struct,
+}
+
+#[allow(missing_docs)]
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct addr_len_struct {
+ pub addr_len: u16,
+ pub __pad3: [u16; 1],
+}
+
+#[allow(missing_docs)]
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct io_uring_sync_cancel_reg {
+ pub addr: u64,
+ pub fd: i32,
+ pub flags: IoringAsyncCancelFlags,
+ pub timeout: Timespec,
+ pub pad: [u64; 4],
}
/// An io_uring Completion Queue Entry.
@@ -1269,16 +1333,12 @@ pub struct iovec {
#[derive(Debug, Copy, Clone, Default)]
pub struct open_how {
/// An [`OFlags`] value represented as a `u64`.
- ///
- /// [`OFlags`]: crate::fs::OFlags
pub flags: u64,
/// A [`Mode`] value represented as a `u64`.
- ///
- /// [`Mode`]: crate::fs::Mode
pub mode: u64,
- pub resolve: crate::fs::ResolveFlags,
+ pub resolve: ResolveFlags,
}
#[allow(missing_docs)]
@@ -1371,12 +1431,15 @@ impl Default for register_or_sqe_op_or_sqe_flags_union {
fn io_uring_layouts() {
use sys as c;
+ assert_eq_size!(io_uring_ptr, u64);
+
check_renamed_type!(off_or_addr2_union, io_uring_sqe__bindgen_ty_1);
check_renamed_type!(addr_or_splice_off_in_union, io_uring_sqe__bindgen_ty_2);
check_renamed_type!(addr3_or_cmd_union, io_uring_sqe__bindgen_ty_6);
check_renamed_type!(op_flags_union, io_uring_sqe__bindgen_ty_3);
check_renamed_type!(buf_union, io_uring_sqe__bindgen_ty_4);
check_renamed_type!(splice_fd_in_or_file_index_union, io_uring_sqe__bindgen_ty_5);
+ check_renamed_type!(addr_len_struct, io_uring_sqe__bindgen_ty_5__bindgen_ty_1);
check_renamed_type!(
register_or_sqe_op_or_sqe_flags_union,
io_uring_restriction__bindgen_ty_1
@@ -1460,4 +1523,5 @@ fn io_uring_layouts() {
check_struct!(open_how, flags, mode, resolve);
check_struct!(io_uring_buf_reg, ring_addr, ring_entries, bgid, pad, resv);
check_struct!(io_uring_buf, addr, len, bid, resv);
+ check_struct!(io_uring_sync_cancel_reg, addr, fd, flags, timeout, pad);
}
diff --git a/vendor/rustix/src/ioctl/linux.rs b/vendor/rustix/src/ioctl/linux.rs
index 9dc278656..2f3599fc2 100644
--- a/vendor/rustix/src/ioctl/linux.rs
+++ b/vendor/rustix/src/ioctl/linux.rs
@@ -10,9 +10,9 @@ pub(super) const fn compose_opcode(
num: RawOpcode,
size: RawOpcode,
) -> RawOpcode {
- macro_rules! shift_and_mask {
+ macro_rules! mask_and_shift {
($val:expr, $shift:expr, $mask:expr) => {{
- ($val << $shift) & $mask
+ ($val & $mask) << $shift
}};
}
@@ -23,10 +23,10 @@ pub(super) const fn compose_opcode(
Direction::ReadWrite => READ | WRITE,
};
- shift_and_mask!(group, GROUP_SHIFT, GROUP_MASK)
- | shift_and_mask!(num, NUM_SHIFT, NUM_MASK)
- | shift_and_mask!(size, SIZE_SHIFT, SIZE_MASK)
- | shift_and_mask!(dir, DIR_SHIFT, DIR_MASK)
+ mask_and_shift!(group, GROUP_SHIFT, GROUP_MASK)
+ | mask_and_shift!(num, NUM_SHIFT, NUM_MASK)
+ | mask_and_shift!(size, SIZE_SHIFT, SIZE_MASK)
+ | mask_and_shift!(dir, DIR_SHIFT, DIR_MASK)
}
const NUM_BITS: RawOpcode = 8;
@@ -50,7 +50,8 @@ const DIR_MASK: RawOpcode = (1 << DIR_BITS) - 1;
target_arch = "aarch64",
target_arch = "riscv32",
target_arch = "riscv64",
- target_arch = "loongarch64"
+ target_arch = "loongarch64",
+ target_arch = "csky"
))]
mod consts {
use super::RawOpcode;
@@ -81,3 +82,37 @@ mod consts {
pub(super) const SIZE_BITS: RawOpcode = 13;
pub(super) const DIR_BITS: RawOpcode = 3;
}
+
+#[cfg(not(any(
+ // These have no ioctl opcodes defined in linux_raw_sys
+ // so can't use that as a known-good value for this test.
+ target_arch = "sparc",
+ target_arch = "sparc64"
+)))]
+#[test]
+fn check_known_opcodes() {
+ use crate::backend::c::{c_long, c_uint};
+ use core::mem::size_of;
+
+ // _IOR('U', 15, unsigned int)
+ assert_eq!(
+ compose_opcode(
+ Direction::Read,
+ b'U' as RawOpcode,
+ 15,
+ size_of::<c_uint>() as RawOpcode
+ ),
+ linux_raw_sys::ioctl::USBDEVFS_CLAIMINTERFACE as RawOpcode
+ );
+
+ // _IOW('v', 2, long)
+ assert_eq!(
+ compose_opcode(
+ Direction::Write,
+ b'v' as RawOpcode,
+ 2,
+ size_of::<c_long>() as RawOpcode
+ ),
+ linux_raw_sys::ioctl::FS_IOC_SETVERSION as RawOpcode
+ );
+}
diff --git a/vendor/rustix/src/ioctl/mod.rs b/vendor/rustix/src/ioctl/mod.rs
index bf2215ab6..ce62d75c4 100644
--- a/vendor/rustix/src/ioctl/mod.rs
+++ b/vendor/rustix/src/ioctl/mod.rs
@@ -46,13 +46,16 @@ use bsd as platform;
/// controlling their behavior, some of which are proprietary.
///
/// This crate exposes many other `ioctl` interfaces with safe and idiomatic
-/// wrappers, like [`ioctl_fionbio`](crate::io::ioctl_fionbio) and
-/// [`ioctl_fionread`](crate::io::ioctl_fionread). It is recommended to use
-/// those instead of this function, as they are safer and more idiomatic.
-/// For other cases, implement the [`Ioctl`] API and pass it to this function.
+/// wrappers, like [`ioctl_fionbio`] and [`ioctl_fionread`]. It is recommended
+/// to use those instead of this function, as they are safer and more
+/// idiomatic. For other cases, implement the [`Ioctl`] API and pass it to this
+/// function.
///
/// See documentation for [`Ioctl`] for more information.
///
+/// [`ioctl_fionbio`]: crate::io::ioctl_fionbio
+/// [`ioctl_fionread`]: crate::io::ioctl_fionread
+///
/// # Safety
///
/// While [`Ioctl`] takes much of the unsafety out of `ioctl` calls, it is
@@ -86,16 +89,16 @@ pub unsafe fn ioctl<F: AsFd, I: Ioctl>(fd: F, mut ioctl: I) -> Result<I::Output>
let request = I::OPCODE.raw();
let arg = ioctl.as_ptr();
- // SAFETY: The variant of `Ioctl` asserts that this is a valid IOCTL call to
- // make.
+ // SAFETY: The variant of `Ioctl` asserts that this is a valid IOCTL call
+ // to make.
let output = if I::IS_MUTATING {
_ioctl(fd, request, arg)?
} else {
_ioctl_readonly(fd, request, arg)?
};
- // SAFETY: The variant of `Ioctl` asserts that this is a valid pointer to the
- // output data.
+ // SAFETY: The variant of `Ioctl` asserts that this is a valid pointer to
+ // the output data.
I::output_from_ptr(output, arg)
}
@@ -204,7 +207,9 @@ impl Opcode {
Self { raw }
}
- /// Create a new opcode from a direction, group, number and size.
+ /// Create a new opcode from a direction, group, number, and size.
+ ///
+ /// This corresponds to the C macro `_IOC(direction, group, number, size)`
#[cfg(any(linux_kernel, bsd))]
#[inline]
pub const fn from_components(
@@ -225,8 +230,11 @@ impl Opcode {
))
}
- /// Create a new non-mutating opcode from a group, a number and the type of
- /// data.
+ /// Create a new non-mutating opcode from a group, a number, and the type
+ /// of data.
+ ///
+ /// This corresponds to the C macro `_IO(group, number)` when `T` is zero
+ /// sized.
#[cfg(any(linux_kernel, bsd))]
#[inline]
pub const fn none<T>(group: u8, number: u8) -> Self {
@@ -235,6 +243,8 @@ impl Opcode {
/// Create a new reading opcode from a group, a number and the type of
/// data.
+ ///
+ /// This corresponds to the C macro `_IOR(group, number, T)`.
#[cfg(any(linux_kernel, bsd))]
#[inline]
pub const fn read<T>(group: u8, number: u8) -> Self {
@@ -243,6 +253,8 @@ impl Opcode {
/// Create a new writing opcode from a group, a number and the type of
/// data.
+ ///
+ /// This corresponds to the C macro `_IOW(group, number, T)`.
#[cfg(any(linux_kernel, bsd))]
#[inline]
pub const fn write<T>(group: u8, number: u8) -> Self {
@@ -251,6 +263,8 @@ impl Opcode {
/// Create a new reading and writing opcode from a group, a number and the
/// type of data.
+ ///
+ /// This corresponds to the C macro `_IOWR(group, number, T)`.
#[cfg(any(linux_kernel, bsd))]
#[inline]
pub const fn read_write<T>(group: u8, number: u8) -> Self {
@@ -314,8 +328,14 @@ type _RawOpcode = c::c_int;
#[cfg(all(not(linux_raw), target_os = "android"))]
type _RawOpcode = c::c_int;
-// BSD, Haiku, and Redox use `unsigned long`.
-#[cfg(any(bsd, target_os = "redox", target_os = "haiku"))]
+// BSD, Haiku, Hurd, Redox, and Vita use `unsigned long`.
+#[cfg(any(
+ bsd,
+ target_os = "redox",
+ target_os = "haiku",
+ target_os = "hurd",
+ target_os = "vita"
+))]
type _RawOpcode = c::c_ulong;
// AIX, Emscripten, Fuchsia, Solaris, and WASI use a `int`.
diff --git a/vendor/rustix/src/ioctl/patterns.rs b/vendor/rustix/src/ioctl/patterns.rs
index 4b33d7d80..7bc5c4e86 100644
--- a/vendor/rustix/src/ioctl/patterns.rs
+++ b/vendor/rustix/src/ioctl/patterns.rs
@@ -6,6 +6,7 @@ use crate::backend::c;
use crate::io::Result;
use core::marker::PhantomData;
+use core::ptr::addr_of_mut;
use core::{fmt, mem};
/// Implements an `ioctl` with no real arguments.
@@ -49,7 +50,7 @@ unsafe impl<Opcode: CompileTimeOpcode> Ioctl for NoArg<Opcode> {
}
}
-/// Implements the traditional "getter" pattern for `ioctl`s.
+/// Implements the traditional “getter†pattern for `ioctl`s.
///
/// Some `ioctl`s just read data into the userspace. As this is a popular
/// pattern this structure implements it.
@@ -144,7 +145,7 @@ unsafe impl<Opcode: CompileTimeOpcode, Input> Ioctl for Setter<Opcode, Input> {
const OPCODE: self::Opcode = Opcode::OPCODE;
fn as_ptr(&mut self) -> *mut c::c_void {
- &mut self.input as *mut Input as *mut c::c_void
+ addr_of_mut!(self.input).cast::<c::c_void>()
}
unsafe fn output_from_ptr(_: IoctlOutput, _: *mut c::c_void) -> Result<Self::Output> {
@@ -166,6 +167,8 @@ impl<const OPCODE: RawOpcode> CompileTimeOpcode for BadOpcode<OPCODE> {
}
/// Provides a read code at compile time.
+///
+/// This corresponds to the C macro `_IOR(GROUP, NUM, Data)`.
#[cfg(any(linux_kernel, bsd))]
pub struct ReadOpcode<const GROUP: u8, const NUM: u8, Data>(Data);
@@ -175,6 +178,8 @@ impl<const GROUP: u8, const NUM: u8, Data> CompileTimeOpcode for ReadOpcode<GROU
}
/// Provides a write code at compile time.
+///
+/// This corresponds to the C macro `_IOW(GROUP, NUM, Data)`.
#[cfg(any(linux_kernel, bsd))]
pub struct WriteOpcode<const GROUP: u8, const NUM: u8, Data>(Data);
@@ -184,6 +189,8 @@ impl<const GROUP: u8, const NUM: u8, Data> CompileTimeOpcode for WriteOpcode<GRO
}
/// Provides a read/write code at compile time.
+///
+/// This corresponds to the C macro `_IOWR(GROUP, NUM, Data)`.
#[cfg(any(linux_kernel, bsd))]
pub struct ReadWriteOpcode<const GROUP: u8, const NUM: u8, Data>(Data);
@@ -193,6 +200,9 @@ impl<const GROUP: u8, const NUM: u8, Data> CompileTimeOpcode for ReadWriteOpcode
}
/// Provides a `None` code at compile time.
+///
+/// This corresponds to the C macro `_IO(GROUP, NUM)` when `Data` is zero
+/// sized.
#[cfg(any(linux_kernel, bsd))]
pub struct NoneOpcode<const GROUP: u8, const NUM: u8, Data>(Data);
diff --git a/vendor/rustix/src/lib.rs b/vendor/rustix/src/lib.rs
index a23006f9c..03f37d96e 100644
--- a/vendor/rustix/src/lib.rs
+++ b/vendor/rustix/src/lib.rs
@@ -94,7 +94,7 @@
//! [I/O-safe]: https://github.com/rust-lang/rfcs/blob/master/text/3128-io-safety.md
//! [`Result`]: https://doc.rust-lang.org/stable/std/result/enum.Result.html
//! [`Arg`]: https://docs.rs/rustix/*/rustix/path/trait.Arg.html
-//! [support for externally defined flags]: https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags
+//! [support for externally defined flags]: https://docs.rs/bitflags/*/bitflags/#externally-defined-flags
#![deny(missing_docs)]
#![allow(stable_features)]
@@ -115,13 +115,17 @@
)]
#![cfg_attr(asm_experimental_arch, feature(asm_experimental_arch))]
#![cfg_attr(not(feature = "all-apis"), allow(dead_code))]
-// It is common in linux and libc APIs for types to vary between platforms.
+// It is common in Linux and libc APIs for types to vary between platforms.
#![allow(clippy::unnecessary_cast)]
-// It is common in linux and libc APIs for types to vary between platforms.
+// It is common in Linux and libc APIs for types to vary between platforms.
#![allow(clippy::useless_conversion)]
// Redox and WASI have enough differences that it isn't worth precisely
-// conditionalizing all the `use`s for them.
-#![cfg_attr(any(target_os = "redox", target_os = "wasi"), allow(unused_imports))]
+// conditionalizing all the `use`s for them. Similar for if we don't have
+// "all-apis".
+#![cfg_attr(
+ any(target_os = "redox", target_os = "wasi", not(feature = "all-apis")),
+ allow(unused_imports)
+)]
#[cfg(all(feature = "alloc", not(feature = "rustc-dep-of-std")))]
extern crate alloc;
@@ -202,7 +206,7 @@ pub mod io;
#[cfg_attr(doc_cfg, doc(cfg(feature = "io_uring")))]
pub mod io_uring;
pub mod ioctl;
-#[cfg(not(any(windows, target_os = "espidf", target_os = "wasi")))]
+#[cfg(not(any(windows, target_os = "espidf", target_os = "vita", target_os = "wasi")))]
#[cfg(feature = "mm")]
#[cfg_attr(doc_cfg, doc(cfg(feature = "mm")))]
pub mod mm;
@@ -246,6 +250,16 @@ pub mod pty;
#[cfg(feature = "rand")]
#[cfg_attr(doc_cfg, doc(cfg(feature = "rand")))]
pub mod rand;
+#[cfg(not(any(
+ windows,
+ target_os = "android",
+ target_os = "espidf",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
+#[cfg(feature = "shm")]
+#[cfg_attr(doc_cfg, doc(cfg(feature = "shm")))]
+pub mod shm;
#[cfg(not(windows))]
#[cfg(feature = "stdio")]
#[cfg_attr(doc_cfg, doc(cfg(feature = "stdio")))]
@@ -254,7 +268,7 @@ pub mod stdio;
#[cfg(not(any(windows, target_os = "wasi")))]
#[cfg_attr(doc_cfg, doc(cfg(feature = "system")))]
pub mod system;
-#[cfg(not(windows))]
+#[cfg(not(any(windows, target_os = "vita")))]
#[cfg(feature = "termios")]
#[cfg_attr(doc_cfg, doc(cfg(feature = "termios")))]
pub mod termios;
@@ -326,7 +340,8 @@ mod clockid;
feature = "runtime",
feature = "termios",
feature = "thread",
- all(bsd, feature = "event")
+ all(bsd, feature = "event"),
+ all(linux_kernel, feature = "net")
))]
mod pid;
#[cfg(any(feature = "process", feature = "thread"))]
@@ -369,6 +384,7 @@ mod timespec;
feature = "time",
target_arch = "x86",
)
- )
+ ),
+ all(linux_kernel, feature = "net")
))]
mod ugid;
diff --git a/vendor/rustix/src/maybe_polyfill/no_std/net/mod.rs b/vendor/rustix/src/maybe_polyfill/no_std/net/mod.rs
index ff3356482..06e8f94d8 100644
--- a/vendor/rustix/src/maybe_polyfill/no_std/net/mod.rs
+++ b/vendor/rustix/src/maybe_polyfill/no_std/net/mod.rs
@@ -1,5 +1,6 @@
mod ip_addr;
mod socket_addr;
+#[allow(unused_imports)]
pub use self::ip_addr::{IpAddr, Ipv4Addr, Ipv6Addr, Ipv6MulticastScope};
pub use self::socket_addr::{SocketAddr, SocketAddrV4, SocketAddrV6};
diff --git a/vendor/rustix/src/maybe_polyfill/no_std/os/fd/mod.rs b/vendor/rustix/src/maybe_polyfill/no_std/os/fd/mod.rs
index 2d88fb076..ea5595345 100644
--- a/vendor/rustix/src/maybe_polyfill/no_std/os/fd/mod.rs
+++ b/vendor/rustix/src/maybe_polyfill/no_std/os/fd/mod.rs
@@ -5,8 +5,11 @@
//! All code in this file is licensed MIT or Apache 2.0 at your option.
//!
//! Owned and borrowed Unix-like file descriptors.
+//!
+//! This module is supported on Unix platforms and WASI, which both use a
+//! similar file descriptor system for referencing OS resources.
-#![cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))]
+#![cfg_attr(staged_api, stable(feature = "os_fd", since = "1.66.0"))]
#![deny(unsafe_op_in_unsafe_fn)]
// `RawFd`, `AsRawFd`, etc.
@@ -15,5 +18,8 @@ mod raw;
// `OwnedFd`, `AsFd`, etc.
mod owned;
+// Export the types and traits for the public API.
+#[cfg_attr(staged_api, stable(feature = "os_fd", since = "1.66.0"))]
pub use owned::*;
+#[cfg_attr(staged_api, stable(feature = "os_fd", since = "1.66.0"))]
pub use raw::*;
diff --git a/vendor/rustix/src/maybe_polyfill/no_std/os/fd/owned.rs b/vendor/rustix/src/maybe_polyfill/no_std/os/fd/owned.rs
index fffe34bff..ae9ffd673 100644
--- a/vendor/rustix/src/maybe_polyfill/no_std/os/fd/owned.rs
+++ b/vendor/rustix/src/maybe_polyfill/no_std/os/fd/owned.rs
@@ -1,6 +1,6 @@
//! The following is derived from Rust's
//! library/std/src/os/fd/owned.rs at revision
-//! fa68e73e9947be8ffc5b3b46d899e4953a44e7e9.
+//! 334a54cd83191f38ad8046ed94c45de735c86c65.
//!
//! All code in this file is licensed MIT or Apache 2.0 at your option.
//!
@@ -18,8 +18,9 @@ use core::mem::forget;
/// A borrowed file descriptor.
///
-/// This has a lifetime parameter to tie it to the lifetime of something that
-/// owns the file descriptor.
+/// This has a lifetime parameter to tie it to the lifetime of something that owns the file
+/// descriptor. For the duration of that lifetime, it is guaranteed that nobody will close the file
+/// descriptor.
///
/// This uses `repr(transparent)` and has the representation of a host file
/// descriptor, so it can be used in FFI in places where a file descriptor is
@@ -36,8 +37,8 @@ use core::mem::forget;
// 32-bit c_int. Below is -2, in two's complement, but that only works out
// because c_int is 32 bits.
#[cfg_attr(rustc_attrs, rustc_layout_scalar_valid_range_end(0xFF_FF_FF_FE))]
-#[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))]
#[cfg_attr(rustc_attrs, rustc_nonnull_optimization_guaranteed)]
+#[cfg_attr(staged_api, stable(feature = "io_safety", since = "1.63.0"))]
pub struct BorrowedFd<'fd> {
fd: RawFd,
_phantom: PhantomData<&'fd OwnedFd>,
@@ -45,7 +46,8 @@ pub struct BorrowedFd<'fd> {
/// An owned file descriptor.
///
-/// This closes the file descriptor on drop.
+/// This closes the file descriptor on drop. It is guaranteed that nobody else will close the file
+/// descriptor.
///
/// This uses `repr(transparent)` and has the representation of a host file
/// descriptor, so it can be used in FFI in places where a file descriptor is
@@ -71,7 +73,11 @@ impl BorrowedFd<'_> {
/// The resource pointed to by `fd` must remain open for the duration of
/// the returned `BorrowedFd`, and it must not have the value `-1`.
#[inline]
- #[cfg_attr(staged_api, unstable(feature = "io_safety", issue = "87074"))]
+ #[cfg_attr(
+ staged_api,
+ rustc_const_stable(feature = "io_safety", since = "1.63.0")
+ )]
+ #[cfg_attr(staged_api, stable(feature = "io_safety", since = "1.63.0"))]
pub const unsafe fn borrow_raw(fd: RawFd) -> Self {
assert!(fd != u32::MAX as RawFd);
// SAFETY: we just asserted that the value is in the valid range and isn't `-1` (the only value bigger than `0xFF_FF_FF_FE` unsigned)
@@ -184,7 +190,9 @@ impl FromRawFd for OwnedFd {
/// # Safety
///
/// The resource pointed to by `fd` must be open and suitable for assuming
- /// ownership. The resource must not require any cleanup other than `close`.
+ /// [ownership][io-safety]. The resource must not require any cleanup other than `close`.
+ ///
+ /// [io-safety]: io#io-safety
#[inline]
unsafe fn from_raw_fd(fd: RawFd) -> Self {
assert_ne!(fd, u32::MAX as RawFd);
diff --git a/vendor/rustix/src/maybe_polyfill/no_std/os/fd/raw.rs b/vendor/rustix/src/maybe_polyfill/no_std/os/fd/raw.rs
index 41968ab04..8f6b75ae1 100644
--- a/vendor/rustix/src/maybe_polyfill/no_std/os/fd/raw.rs
+++ b/vendor/rustix/src/maybe_polyfill/no_std/os/fd/raw.rs
@@ -1,6 +1,6 @@
//! The following is derived from Rust's
//! library/std/src/os/fd/raw.rs at revision
-//! fa68e73e9947be8ffc5b3b46d899e4953a44e7e9.
+//! 334a54cd83191f38ad8046ed94c45de735c86c65.
//!
//! All code in this file is licensed MIT or Apache 2.0 at your option.
//!
@@ -71,7 +71,10 @@ pub trait FromRawFd {
///
/// # Safety
///
- /// The `fd` passed in must be a valid an open file descriptor.
+ /// The `fd` passed in must be an [owned file descriptor][io-safety];
+ /// in particular, it must be open.
+ ///
+ /// [io-safety]: io#io-safety
///
/// # Example
///
diff --git a/vendor/rustix/src/mm/madvise.rs b/vendor/rustix/src/mm/madvise.rs
index 868a31a5e..4015d1284 100644
--- a/vendor/rustix/src/mm/madvise.rs
+++ b/vendor/rustix/src/mm/madvise.rs
@@ -16,9 +16,9 @@ pub use backend::mm::types::Advice;
///
/// # Safety
///
-/// `addr` must be a valid pointer to memory that is appropriate to
-/// call `posix_madvise` on. Some forms of `advice` may mutate the memory
-/// or evoke a variety of side-effects on the mapping and/or the file.
+/// `addr` must be a valid pointer to memory that is appropriate to call
+/// `posix_madvise` on. Some forms of `advice` may mutate the memory or evoke a
+/// variety of side-effects on the mapping and/or the file.
///
/// # References
/// - [POSIX]
diff --git a/vendor/rustix/src/mm/mmap.rs b/vendor/rustix/src/mm/mmap.rs
index 02badb9fd..22137a930 100644
--- a/vendor/rustix/src/mm/mmap.rs
+++ b/vendor/rustix/src/mm/mmap.rs
@@ -10,12 +10,40 @@ use crate::{backend, io};
use backend::fd::AsFd;
use core::ffi::c_void;
+#[cfg(any(linux_kernel, freebsdlike, netbsdlike))]
+pub use backend::mm::types::MlockAllFlags;
#[cfg(linux_kernel)]
pub use backend::mm::types::MlockFlags;
#[cfg(any(target_os = "emscripten", target_os = "linux"))]
pub use backend::mm::types::MremapFlags;
pub use backend::mm::types::{MapFlags, MprotectFlags, ProtFlags};
+impl MapFlags {
+ /// Create `MAP_HUGETLB` with provided size of huge page.
+ ///
+ /// Under the hood it computes
+ /// `MAP_HUGETLB | (huge_page_size_log2 << MAP_HUGE_SHIFT)`.
+ /// `huge_page_size_log2` denotes logarithm of huge page size to use and
+ /// should be between 16 and 63 (inclusive).
+ ///
+ /// ```
+ /// use rustix::mm::MapFlags;
+ ///
+ /// let f = MapFlags::hugetlb_with_size_log2(30).unwrap();
+ /// assert_eq!(f, MapFlags::HUGETLB | MapFlags::HUGE_1GB);
+ /// ```
+ #[cfg(linux_kernel)]
+ pub const fn hugetlb_with_size_log2(huge_page_size_log2: u32) -> Option<Self> {
+ use linux_raw_sys::general::{MAP_HUGETLB, MAP_HUGE_SHIFT};
+ if 16 <= huge_page_size_log2 && huge_page_size_log2 <= 63 {
+ let bits = MAP_HUGETLB | (huge_page_size_log2 << MAP_HUGE_SHIFT);
+ Self::from_bits(bits)
+ } else {
+ None
+ }
+ }
+}
+
/// `mmap(ptr, len, prot, flags, fd, offset)`—Create a file-backed memory
/// mapping.
///
@@ -314,3 +342,68 @@ pub unsafe fn mlock_with(ptr: *mut c_void, len: usize, flags: MlockFlags) -> io:
pub unsafe fn munlock(ptr: *mut c_void, len: usize) -> io::Result<()> {
backend::mm::syscalls::munlock(ptr, len)
}
+
+/// Locks all pages mapped into the address space of the calling process.
+///
+/// This includes the pages of the code, data, and stack segment, as well as
+/// shared libraries, user space kernel data, shared memory, and memory-mapped
+/// files. All mapped pages are guaranteed to be resident in RAM when the call
+/// returns successfully; the pages are guaranteed to stay in RAM until later
+/// unlocked.
+///
+/// # References
+/// - [POSIX]
+/// - [Linux]
+/// - [FreeBSD]
+/// - [NetBSD]
+/// - [OpenBSD]
+/// - [DragonFly BSD]
+/// - [illumos]
+/// - [glibc]
+///
+/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/mlockall.html
+/// [Linux]: https://man7.org/linux/man-pages/man2/mlockall.2.html
+/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=mlockall&sektion=2
+/// [NetBSD]: https://man.netbsd.org/mlockall.2
+/// [OpenBSD]: https://man.openbsd.org/mlockall.2
+/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=mlockall&section=2
+/// [illumos]: https://illumos.org/man/3C/mlockall
+/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Page-Lock-Functions.html#index-mlockall
+#[cfg(any(linux_kernel, freebsdlike, netbsdlike))]
+#[inline]
+pub fn mlockall(flags: MlockAllFlags) -> io::Result<()> {
+ backend::mm::syscalls::mlockall(flags)
+}
+
+/// Unlocks all pages mapped into the address space of the calling process.
+///
+/// # Warnings
+///
+/// This function is aware of all the memory pages in the process, as if it
+/// were a debugger. It unlocks all the pages, which could potentially
+/// compromise security assumptions made by code about memory it has
+/// encapsulated.
+///
+/// # References
+/// - [POSIX]
+/// - [Linux]
+/// - [FreeBSD]
+/// - [NetBSD]
+/// - [OpenBSD]
+/// - [DragonFly BSD]
+/// - [illumos]
+/// - [glibc]
+///
+/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/munlockall.html
+/// [Linux]: https://man7.org/linux/man-pages/man2/munlockall.2.html
+/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=munlockall&sektion=2
+/// [NetBSD]: https://man.netbsd.org/munlockall.2
+/// [OpenBSD]: https://man.openbsd.org/munlockall.2
+/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=munlockall&section=2
+/// [illumos]: https://illumos.org/man/3C/munlockall
+/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Page-Lock-Functions.html#index-munlockall
+#[cfg(any(linux_kernel, freebsdlike, netbsdlike))]
+#[inline]
+pub fn munlockall() -> io::Result<()> {
+ backend::mm::syscalls::munlockall()
+}
diff --git a/vendor/rustix/src/mm/msync.rs b/vendor/rustix/src/mm/msync.rs
index 0306e36b9..c61d7c379 100644
--- a/vendor/rustix/src/mm/msync.rs
+++ b/vendor/rustix/src/mm/msync.rs
@@ -16,9 +16,9 @@ pub use backend::mm::types::MsyncFlags;
///
/// # Safety
///
-/// `addr` must be a valid pointer to memory that is appropriate to
-/// call `msync` on. Some forms of `msync` may mutate the memory
-/// or evoke a variety of side-effects on the mapping and/or the file.
+/// `addr` must be a valid pointer to memory that is appropriate to call
+/// `msync` on. Some forms of `msync` may mutate the memory or evoke a variety
+/// of side-effects on the mapping and/or the file.
///
/// # References
/// - [POSIX]
diff --git a/vendor/rustix/src/net/send_recv/mod.rs b/vendor/rustix/src/net/send_recv/mod.rs
index 1dedd99cb..a377f65ad 100644
--- a/vendor/rustix/src/net/send_recv/mod.rs
+++ b/vendor/rustix/src/net/send_recv/mod.rs
@@ -8,10 +8,22 @@ use backend::fd::{AsFd, BorrowedFd};
pub use backend::net::send_recv::{RecvFlags, SendFlags};
-#[cfg(not(any(windows, target_os = "espidf", target_os = "redox", target_os = "wasi")))]
+#[cfg(not(any(
+ windows,
+ target_os = "espidf",
+ target_os = "redox",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
mod msg;
-#[cfg(not(any(windows, target_os = "espidf", target_os = "redox", target_os = "wasi")))]
+#[cfg(not(any(
+ windows,
+ target_os = "espidf",
+ target_os = "redox",
+ target_os = "vita",
+ target_os = "wasi"
+)))]
pub use msg::*;
/// `recv(fd, buf, flags)`—Reads data from a socket.
diff --git a/vendor/rustix/src/net/send_recv/msg.rs b/vendor/rustix/src/net/send_recv/msg.rs
index 431aefa03..ea91cbfec 100644
--- a/vendor/rustix/src/net/send_recv/msg.rs
+++ b/vendor/rustix/src/net/send_recv/msg.rs
@@ -5,10 +5,14 @@
use crate::backend::{self, c};
use crate::fd::{AsFd, BorrowedFd, OwnedFd};
use crate::io::{self, IoSlice, IoSliceMut};
+#[cfg(linux_kernel)]
+use crate::net::UCred;
use core::iter::FusedIterator;
use core::marker::PhantomData;
-use core::mem::{size_of, size_of_val, take};
+use core::mem::{align_of, size_of, size_of_val, take};
+#[cfg(linux_kernel)]
+use core::ptr::addr_of;
use core::{ptr, slice};
use super::{RecvFlags, SendFlags, SocketAddrAny, SocketAddrV4, SocketAddrV6};
@@ -22,6 +26,11 @@ macro_rules! cmsg_space {
$len * ::core::mem::size_of::<$crate::fd::BorrowedFd<'static>>(),
)
};
+ (ScmCredentials($len:expr)) => {
+ $crate::net::__cmsg_space(
+ $len * ::core::mem::size_of::<$crate::net::UCred>(),
+ )
+ };
// Combo Rules
(($($($x:tt)*),+)) => {
@@ -33,8 +42,19 @@ macro_rules! cmsg_space {
}
#[doc(hidden)]
-pub fn __cmsg_space(len: usize) -> usize {
- unsafe { c::CMSG_SPACE(len.try_into().expect("CMSG_SPACE size overflow")) as usize }
+pub const fn __cmsg_space(len: usize) -> usize {
+ // Add `align_of::<c::cmsghdr>()` so that we can align the user-provided
+ // `&[u8]` to the required alignment boundary.
+ let len = len + align_of::<c::cmsghdr>();
+
+ // Convert `len` to `u32` for `CMSG_SPACE`. This would be `try_into()` if
+ // we could call that in a `const fn`.
+ let converted_len = len as u32;
+ if converted_len as usize != len {
+ unreachable!(); // `CMSG_SPACE` size overflow
+ }
+
+ unsafe { c::CMSG_SPACE(converted_len) as usize }
}
/// Ancillary message for [`sendmsg`], [`sendmsg_v4`], [`sendmsg_v6`],
@@ -42,24 +62,23 @@ pub fn __cmsg_space(len: usize) -> usize {
#[non_exhaustive]
pub enum SendAncillaryMessage<'slice, 'fd> {
/// Send file descriptors.
+ #[doc(alias = "SCM_RIGHTS")]
ScmRights(&'slice [BorrowedFd<'fd>]),
+ /// Send process credentials.
+ #[cfg(linux_kernel)]
+ #[doc(alias = "SCM_CREDENTIAL")]
+ ScmCredentials(UCred),
}
impl SendAncillaryMessage<'_, '_> {
/// Get the maximum size of an ancillary message.
///
/// This can be helpful in determining the size of the buffer you allocate.
- pub fn size(&self) -> usize {
- let total_bytes = match self {
- Self::ScmRights(slice) => size_of_val(*slice),
- };
-
- unsafe {
- c::CMSG_SPACE(
- total_bytes
- .try_into()
- .expect("size too large for CMSG_SPACE"),
- ) as usize
+ pub const fn size(&self) -> usize {
+ match self {
+ Self::ScmRights(slice) => cmsg_space!(ScmRights(slice.len())),
+ #[cfg(linux_kernel)]
+ Self::ScmCredentials(_) => cmsg_space!(ScmCredentials(1)),
}
}
}
@@ -68,10 +87,16 @@ impl SendAncillaryMessage<'_, '_> {
#[non_exhaustive]
pub enum RecvAncillaryMessage<'a> {
/// Received file descriptors.
+ #[doc(alias = "SCM_RIGHTS")]
ScmRights(AncillaryIter<'a, OwnedFd>),
+ /// Received process credentials.
+ #[cfg(linux_kernel)]
+ #[doc(alias = "SCM_CREDENTIALS")]
+ ScmCredentials(UCred),
}
-/// Buffer for sending ancillary messages.
+/// Buffer for sending ancillary messages with [`sendmsg`], [`sendmsg_v4`],
+/// [`sendmsg_v6`], [`sendmsg_unix`], and [`sendmsg_any`].
pub struct SendAncillaryBuffer<'buf, 'slice, 'fd> {
/// Raw byte buffer for messages.
buffer: &'buf mut [u8],
@@ -91,15 +116,20 @@ impl<'buf> From<&'buf mut [u8]> for SendAncillaryBuffer<'buf, '_, '_> {
impl Default for SendAncillaryBuffer<'_, '_, '_> {
fn default() -> Self {
- Self::new(&mut [])
+ Self {
+ buffer: &mut [],
+ length: 0,
+ _phantom: PhantomData,
+ }
}
}
impl<'buf, 'slice, 'fd> SendAncillaryBuffer<'buf, 'slice, 'fd> {
/// Create a new, empty `SendAncillaryBuffer` from a raw byte buffer.
+ #[inline]
pub fn new(buffer: &'buf mut [u8]) -> Self {
Self {
- buffer,
+ buffer: align_for_cmsghdr(buffer),
length: 0,
_phantom: PhantomData,
}
@@ -138,6 +168,13 @@ impl<'buf, 'slice, 'fd> SendAncillaryBuffer<'buf, 'slice, 'fd> {
unsafe { slice::from_raw_parts(fds.as_ptr().cast::<u8>(), size_of_val(fds)) };
self.push_ancillary(fds_bytes, c::SOL_SOCKET as _, c::SCM_RIGHTS as _)
}
+ #[cfg(linux_kernel)]
+ SendAncillaryMessage::ScmCredentials(ucred) => {
+ let ucred_bytes = unsafe {
+ slice::from_raw_parts(addr_of!(ucred).cast::<u8>(), size_of_val(&ucred))
+ };
+ self.push_ancillary(ucred_bytes, c::SOL_SOCKET as _, c::SCM_CREDENTIALS as _)
+ }
}
}
@@ -191,7 +228,8 @@ impl<'slice, 'fd> Extend<SendAncillaryMessage<'slice, 'fd>>
}
}
-/// Buffer for receiving ancillary messages.
+/// Buffer for receiving ancillary messages with [`recvmsg`].
+#[derive(Default)]
pub struct RecvAncillaryBuffer<'buf> {
/// Raw byte buffer for messages.
buffer: &'buf mut [u8],
@@ -209,17 +247,12 @@ impl<'buf> From<&'buf mut [u8]> for RecvAncillaryBuffer<'buf> {
}
}
-impl Default for RecvAncillaryBuffer<'_> {
- fn default() -> Self {
- Self::new(&mut [])
- }
-}
-
impl<'buf> RecvAncillaryBuffer<'buf> {
/// Create a new, empty `RecvAncillaryBuffer` from a raw byte buffer.
+ #[inline]
pub fn new(buffer: &'buf mut [u8]) -> Self {
Self {
- buffer,
+ buffer: align_for_cmsghdr(buffer),
read: 0,
length: 0,
}
@@ -274,7 +307,17 @@ impl Drop for RecvAncillaryBuffer<'_> {
}
}
-/// An iterator that drains messages from a `RecvAncillaryBuffer`.
+/// Return a slice of `buffer` starting at the first `cmsghdr` alignment
+/// boundary.
+#[inline]
+fn align_for_cmsghdr(buffer: &mut [u8]) -> &mut [u8] {
+ let align = align_of::<c::cmsghdr>();
+ let addr = buffer.as_ptr() as usize;
+ let adjusted = (addr + (align - 1)) & align.wrapping_neg();
+ &mut buffer[adjusted - addr..]
+}
+
+/// An iterator that drains messages from a [`RecvAncillaryBuffer`].
pub struct AncillaryDrain<'buf> {
/// Inner iterator over messages.
messages: messages::Messages<'buf>,
@@ -287,14 +330,14 @@ pub struct AncillaryDrain<'buf> {
}
impl<'buf> AncillaryDrain<'buf> {
- /// A closure that converts a message into a `RecvAncillaryMessage`.
+ /// A closure that converts a message into a [`RecvAncillaryMessage`].
fn cvt_msg(
read: &mut usize,
length: &mut usize,
msg: &c::cmsghdr,
) -> Option<RecvAncillaryMessage<'buf>> {
unsafe {
- // Advance the "read" pointer.
+ // Advance the `read` pointer.
let msg_len = msg.cmsg_len as usize;
*read += msg_len;
*length -= msg_len;
@@ -315,6 +358,15 @@ impl<'buf> AncillaryDrain<'buf> {
Some(RecvAncillaryMessage::ScmRights(fds))
}
+ #[cfg(linux_kernel)]
+ (c::SOL_SOCKET, c::SCM_CREDENTIALS) => {
+ if payload_len >= size_of::<UCred>() {
+ let ucred = payload.as_ptr().cast::<UCred>().read_unaligned();
+ Some(RecvAncillaryMessage::ScmCredentials(ucred))
+ } else {
+ None
+ }
+ }
_ => None,
}
}
@@ -693,7 +745,7 @@ mod messages {
/// An iterator over the messages in an ancillary buffer.
pub(super) struct Messages<'buf> {
- /// The message header we're using to iterator over the messages.
+ /// The message header we're using to iterate over the messages.
msghdr: c::msghdr,
/// The current pointer to the next message header to return.
diff --git a/vendor/rustix/src/net/socket.rs b/vendor/rustix/src/net/socket.rs
index 8727ca53b..fe7439562 100644
--- a/vendor/rustix/src/net/socket.rs
+++ b/vendor/rustix/src/net/socket.rs
@@ -453,6 +453,44 @@ pub fn connect_unix<Fd: AsFd>(sockfd: Fd, addr: &SocketAddrUnix) -> io::Result<(
backend::net::syscalls::connect_unix(sockfd.as_fd(), addr)
}
+/// `connect(sockfd, {.sa_family = AF_UNSPEC}, sizeof(struct sockaddr))`
+/// — Dissolve the socket's association.
+///
+/// On UDP sockets, BSD platforms report [`Errno::AFNOSUPPORT`] or
+/// [`Errno::INVAL`] even if the disconnect was successful.
+///
+/// # References
+/// - [Beej's Guide to Network Programming]
+/// - [POSIX]
+/// - [Linux]
+/// - [Apple]
+/// - [Winsock2]
+/// - [FreeBSD]
+/// - [NetBSD]
+/// - [OpenBSD]
+/// - [DragonFly BSD]
+/// - [illumos]
+/// - [glibc]
+///
+/// [Beej's Guide to Network Programming]: https://beej.us/guide/bgnet/html/split/system-calls-or-bust.html#connect
+/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/connect.html
+/// [Linux]: https://man7.org/linux/man-pages/man2/connect.2.html
+/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/connect.2.html
+/// [Winsock2]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-connect
+/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=connect&sektion=2
+/// [NetBSD]: https://man.netbsd.org/connect.2
+/// [OpenBSD]: https://man.openbsd.org/connect.2
+/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=connect&section=2
+/// [illumos]: https://illumos.org/man/3SOCKET/connect
+/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Connecting.html
+/// [`Errno::AFNOSUPPORT`]: io::Errno::AFNOSUPPORT
+/// [`Errno::INVAL`]: io::Errno::INVAL
+#[inline]
+#[doc(alias = "connect")]
+pub fn connect_unspec<Fd: AsFd>(sockfd: Fd) -> io::Result<()> {
+ backend::net::syscalls::connect_unspec(sockfd.as_fd())
+}
+
/// `listen(fd, backlog)`—Enables listening for incoming connections.
///
/// # References
diff --git a/vendor/rustix/src/net/socket_addr_any.rs b/vendor/rustix/src/net/socket_addr_any.rs
index 7cb124e4c..a649015f4 100644
--- a/vendor/rustix/src/net/socket_addr_any.rs
+++ b/vendor/rustix/src/net/socket_addr_any.rs
@@ -11,7 +11,7 @@
#[cfg(unix)]
use crate::net::SocketAddrUnix;
-use crate::net::{AddressFamily, SocketAddrV4, SocketAddrV6};
+use crate::net::{AddressFamily, SocketAddr, SocketAddrV4, SocketAddrV6};
use crate::{backend, io};
#[cfg(feature = "std")]
use core::fmt;
@@ -32,6 +32,16 @@ pub enum SocketAddrAny {
Unix(SocketAddrUnix),
}
+impl From<SocketAddr> for SocketAddrAny {
+ #[inline]
+ fn from(from: SocketAddr) -> Self {
+ match from {
+ SocketAddr::V4(v4) => Self::V4(v4),
+ SocketAddr::V6(v6) => Self::V6(v6),
+ }
+ }
+}
+
impl From<SocketAddrV4> for SocketAddrAny {
#[inline]
fn from(from: SocketAddrV4) -> Self {
diff --git a/vendor/rustix/src/net/sockopt.rs b/vendor/rustix/src/net/sockopt.rs
index 1939155d9..afeaf0b33 100644
--- a/vendor/rustix/src/net/sockopt.rs
+++ b/vendor/rustix/src/net/sockopt.rs
@@ -1,7 +1,144 @@
//! `getsockopt` and `setsockopt` functions.
//!
-//! In the rustix API, there is a separate function for each option, so that
-//! it can be given an option-specific type signature.
+//! In the rustix API, there is a separate function for each option, so that it
+//! can be given an option-specific type signature.
+//!
+//! # References for all `get_*` functions:
+//!
+//! - [POSIX `getsockopt`]
+//! - [Linux `getsockopt`]
+//! - [Winsock2 `getsockopt`]
+//! - [Apple `getsockopt`]
+//! - [FreeBSD `getsockopt`]
+//! - [NetBSD `getsockopt`]
+//! - [OpenBSD `getsockopt`]
+//! - [DragonFly BSD `getsockopt`]
+//! - [illumos `getsockopt`]
+//! - [glibc `getsockopt`]
+//!
+//! [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
+//! [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
+//! [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
+//! [Apple `getsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html
+//! [FreeBSD `getsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
+//! [NetBSD `getsockopt`]: https://man.netbsd.org/getsockopt.2
+//! [OpenBSD `getsockopt`]: https://man.openbsd.org/getsockopt.2
+//! [DragonFly BSD `getsockopt`]: https://man.dragonflybsd.org/?command=getsockopt&section=2
+//! [illumos `getsockopt`]: https://illumos.org/man/3SOCKET/getsockopt
+//! [glibc `getsockopt`]: https://www.gnu.org/software/libc/manual/html_node/Socket-Option-Functions.html
+//!
+//! # References for all `set_*` functions:
+//!
+//! - [POSIX `setsockopt`]
+//! - [Linux `setsockopt`]
+//! - [Winsock2 `setsockopt`]
+//! - [Apple `setsockopt`]
+//! - [FreeBSD `setsockopt`]
+//! - [NetBSD `setsockopt`]
+//! - [OpenBSD `setsockopt`]
+//! - [DragonFly BSD `setsockopt`]
+//! - [illumos `setsockopt`]
+//! - [glibc `setsockopt`]
+//!
+//! [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
+//! [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
+//! [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
+//! [Apple `setsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setsockopt.2.html
+//! [FreeBSD `setsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2
+//! [NetBSD `setsockopt`]: https://man.netbsd.org/setsockopt.2
+//! [OpenBSD `setsockopt`]: https://man.openbsd.org/setsockopt.2
+//! [DragonFly BSD `setsockopt`]: https://man.dragonflybsd.org/?command=setsockopt&section=2
+//! [illumos `setsockopt`]: https://illumos.org/man/3SOCKET/setsockopt
+//! [glibc `setsockopt`]: https://www.gnu.org/software/libc/manual/html_node/Socket-Option-Functions.html
+//!
+//! # References for `get_socket_*` and `set_socket_*` functions:
+//!
+//! - [References for all `get_*` functions]
+//! - [References for all `set_*` functions]
+//! - [POSIX `sys/socket.h`]
+//! - [Linux `socket`]
+//! - [Winsock2 `SOL_SOCKET` options]
+//! - [glibc `SOL_SOCKET` Options]
+//!
+//! [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
+//! [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
+//! [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
+//! [glibc `SOL_SOCKET` options]: https://www.gnu.org/software/libc/manual/html_node/Socket_002dLevel-Options.html
+//!
+//! # References for `get_ip_*` and `set_ip_*` functions:
+//!
+//! - [References for all `get_*` functions]
+//! - [References for all `set_*` functions]
+//! - [POSIX `netinet/in.h`]
+//! - [Linux `ip`]
+//! - [Winsock2 `IPPROTO_IP` options]
+//! - [Apple `ip`]
+//! - [FreeBSD `ip`]
+//! - [NetBSD `ip`]
+//! - [OpenBSD `ip`]
+//! - [DragonFly BSD `ip`]
+//! - [illumos `ip`]
+//!
+//! [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
+//! [Linux `ip`]: https://man7.org/linux/man-pages/man7/ip.7.html
+//! [Winsock2 `IPPROTO_IP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options
+//! [Apple `ip`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/ip.4.auto.html
+//! [FreeBSD `ip`]: https://man.freebsd.org/cgi/man.cgi?query=ip&sektion=4
+//! [NetBSD `ip`]: https://man.netbsd.org/ip.4
+//! [OpenBSD `ip`]: https://man.openbsd.org/ip.4
+//! [DragonFly BSD `ip`]: https://man.dragonflybsd.org/?command=ip&section=4
+//! [illumos `ip`]: https://illumos.org/man/4P/ip
+//!
+//! # References for `get_ipv6_*` and `set_ipv6_*` functions:
+//!
+//! - [References for all `get_*` functions]
+//! - [References for all `set_*` functions]
+//! - [POSIX `netinet/in.h`]
+//! - [Linux `ipv6`]
+//! - [Winsock2 `IPPROTO_IPV6` options]
+//! - [Apple `ip6`]
+//! - [FreeBSD `ip6`]
+//! - [NetBSD `ip6`]
+//! - [OpenBSD `ip6`]
+//! - [DragonFly BSD `ip6`]
+//! - [illumos `ip6`]
+//!
+//! [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
+//! [Linux `ipv6`]: https://man7.org/linux/man-pages/man7/ipv6.7.html
+//! [Winsock2 `IPPROTO_IPV6` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-options
+//! [Apple `ip6`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/ip6.4.auto.html
+//! [FreeBSD `ip6`]: https://man.freebsd.org/cgi/man.cgi?query=ip6&sektion=4
+//! [NetBSD `ip6`]: https://man.netbsd.org/ip6.4
+//! [OpenBSD `ip6`]: https://man.openbsd.org/ip6.4
+//! [DragonFly BSD `ip6`]: https://man.dragonflybsd.org/?command=ip6&section=4
+//! [illumos `ip6`]: https://illumos.org/man/4P/ip6
+//!
+//! # References for `get_tcp_*` and `set_tcp_*` functions:
+//!
+//! - [References for all `get_*` functions]
+//! - [References for all `set_*` functions]
+//! - [POSIX `netinet/tcp.h`]
+//! - [Linux `tcp`]
+//! - [Winsock2 `IPPROTO_TCP` options]
+//! - [Apple `tcp`]
+//! - [FreeBSD `tcp`]
+//! - [NetBSD `tcp`]
+//! - [OpenBSD `tcp`]
+//! - [DragonFly BSD `tcp`]
+//! - [illumos `tcp`]
+//!
+//! [POSIX `netinet/tcp.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_tcp.h.html
+//! [Linux `tcp`]: https://man7.org/linux/man-pages/man7/tcp.7.html
+//! [Winsock2 `IPPROTO_TCP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-tcp-socket-options
+//! [Apple `tcp`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/tcp.4.auto.html
+//! [FreeBSD `tcp`]: https://man.freebsd.org/cgi/man.cgi?query=tcp&sektion=4
+//! [NetBSD `tcp`]: https://man.netbsd.org/tcp.4
+//! [OpenBSD `tcp`]: https://man.openbsd.org/tcp.4
+//! [DragonFly BSD `tcp`]: https://man.dragonflybsd.org/?command=tcp&section=4
+//! [illumos `tcp`]: https://illumos.org/man/4P/tcp
+//!
+//! [References for all `get_*` functions]: #references-for-all-get_-functions
+//! [References for all `set_*` functions]: #references-for-all-set_-functions
#![doc(alias = "getsockopt")]
#![doc(alias = "setsockopt")]
@@ -16,19 +153,38 @@
target_os = "haiku",
target_os = "netbsd",
target_os = "nto",
+ target_os = "vita",
)))]
use crate::net::AddressFamily;
+#[cfg(any(
+ linux_kernel,
+ target_os = "freebsd",
+ target_os = "fuchsia",
+ target_os = "openbsd",
+ target_os = "redox",
+ target_env = "newlib"
+))]
+use crate::net::Protocol;
+#[cfg(any(linux_kernel, target_os = "fuchsia"))]
+use crate::net::SocketAddrV4;
+#[cfg(linux_kernel)]
+use crate::net::SocketAddrV6;
use crate::net::{Ipv4Addr, Ipv6Addr, SocketType};
use crate::{backend, io};
+#[cfg(feature = "alloc")]
+#[cfg(any(
+ linux_like,
+ target_os = "freebsd",
+ target_os = "fuchsia",
+ target_os = "illumos"
+))]
+use alloc::string::String;
use backend::c;
use backend::fd::AsFd;
use core::time::Duration;
/// Timeout identifier for use with [`set_socket_timeout`] and
/// [`get_socket_timeout`].
-///
-/// [`set_socket_timeout`]: crate::net::sockopt::set_socket_timeout.
-/// [`get_socket_timeout`]: crate::net::sockopt::get_socket_timeout.
#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
#[repr(u32)]
pub enum Timeout {
@@ -41,759 +197,241 @@ pub enum Timeout {
/// `getsockopt(fd, SOL_SOCKET, SO_TYPE)`—Returns the type of a socket.
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-/// - [Apple]
-/// - [FreeBSD]
-/// - [NetBSD]
-/// - [OpenBSD]
-/// - [DragonFly BSD]
-/// - [illumos]
-/// - [glibc `getsockopt`]
-/// - [glibc `SOL_SOCKET` Options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html
-/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
-/// [NetBSD]: https://man.netbsd.org/getsockopt.2
-/// [OpenBSD]: https://man.openbsd.org/getsockopt.2
-/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=getsockopt&section=2
-/// [illumos]: https://illumos.org/man/3SOCKET/getsockopt
-/// [glibc `getsockopt`]: https://www.gnu.org/software/libc/manual/html_node/Socket-Option-Functions.html
-/// [glibc `SOL_SOCKET` options]: https://www.gnu.org/software/libc/manual/html_node/Socket_002dLevel-Options.html
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
#[inline]
#[doc(alias = "SO_TYPE")]
pub fn get_socket_type<Fd: AsFd>(fd: Fd) -> io::Result<SocketType> {
- backend::net::syscalls::sockopt::get_socket_type(fd.as_fd())
+ backend::net::sockopt::get_socket_type(fd.as_fd())
}
-/// `setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, value)`
+/// `setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, value)`—Set whether local
+/// addresses may be reused in `bind`.
///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-/// - [Apple]
-/// - [FreeBSD]
-/// - [NetBSD]
-/// - [OpenBSD]
-/// - [DragonFly BSD]
-/// - [illumos]
-/// - [glibc `setsockopt`]
-/// - [glibc `SOL_SOCKET` Options]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setsockopt.2.html
-/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2
-/// [NetBSD]: https://man.netbsd.org/setsockopt.2
-/// [OpenBSD]: https://man.openbsd.org/setsockopt.2
-/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=setsockopt&section=2
-/// [illumos]: https://illumos.org/man/3SOCKET/setsockopt
-/// [glibc `setsockopt`]: https://www.gnu.org/software/libc/manual/html_node/Socket-Option-Functions.html
-/// [glibc `SOL_SOCKET` options]: https://www.gnu.org/software/libc/manual/html_node/Socket_002dLevel-Options.html
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
#[inline]
#[doc(alias = "SO_REUSEADDR")]
pub fn set_socket_reuseaddr<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_socket_reuseaddr(fd.as_fd(), value)
+ backend::net::sockopt::set_socket_reuseaddr(fd.as_fd(), value)
}
/// `getsockopt(fd, SOL_SOCKET, SO_REUSEADDR)`
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-/// - [Apple]
-/// - [FreeBSD]
-/// - [NetBSD]
-/// - [OpenBSD]
-/// - [DragonFly BSD]
-/// - [illumos]
-/// - [glibc `getsockopt`]
-/// - [glibc `SOL_SOCKET` Options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html
-/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
-/// [NetBSD]: https://man.netbsd.org/getsockopt.2
-/// [OpenBSD]: https://man.openbsd.org/getsockopt.2
-/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=getsockopt&section=2
-/// [illumos]: https://illumos.org/man/3SOCKET/getsockopt
-/// [glibc `getsockopt`]: https://www.gnu.org/software/libc/manual/html_node/Socket-Option-Functions.html
-/// [glibc `SOL_SOCKET` options]: https://www.gnu.org/software/libc/manual/html_node/Socket_002dLevel-Options.html
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
#[inline]
#[doc(alias = "SO_REUSEADDR")]
pub fn get_socket_reuseaddr<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
- backend::net::syscalls::sockopt::get_socket_reuseaddr(fd.as_fd())
+ backend::net::sockopt::get_socket_reuseaddr(fd.as_fd())
}
-/// `setsockopt(fd, SOL_SOCKET, SO_BROADCAST, broadcast)`
+/// `setsockopt(fd, SOL_SOCKET, SO_BROADCAST, value)`
///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-/// - [Apple]
-/// - [FreeBSD]
-/// - [NetBSD]
-/// - [OpenBSD]
-/// - [DragonFly BSD]
-/// - [illumos]
-/// - [glibc `setsockopt`]
-/// - [glibc `SOL_SOCKET` Options]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setsockopt.2.html
-/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2
-/// [NetBSD]: https://man.netbsd.org/setsockopt.2
-/// [OpenBSD]: https://man.openbsd.org/setsockopt.2
-/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=setsockopt&section=2
-/// [illumos]: https://illumos.org/man/3SOCKET/setsockopt
-/// [glibc `setsockopt`]: https://www.gnu.org/software/libc/manual/html_node/Socket-Option-Functions.html
-/// [glibc `SOL_SOCKET` options]: https://www.gnu.org/software/libc/manual/html_node/Socket_002dLevel-Options.html
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
#[inline]
#[doc(alias = "SO_BROADCAST")]
-pub fn set_socket_broadcast<Fd: AsFd>(fd: Fd, broadcast: bool) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_socket_broadcast(fd.as_fd(), broadcast)
+pub fn set_socket_broadcast<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
+ backend::net::sockopt::set_socket_broadcast(fd.as_fd(), value)
}
/// `getsockopt(fd, SOL_SOCKET, SO_BROADCAST)`
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-/// - [Apple]
-/// - [FreeBSD]
-/// - [NetBSD]
-/// - [OpenBSD]
-/// - [DragonFly BSD]
-/// - [illumos]
-/// - [glibc `getsockopt`]
-/// - [glibc `SOL_SOCKET` Options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html
-/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
-/// [NetBSD]: https://man.netbsd.org/getsockopt.2
-/// [OpenBSD]: https://man.openbsd.org/getsockopt.2
-/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=getsockopt&section=2
-/// [illumos]: https://illumos.org/man/3SOCKET/getsockopt
-/// [glibc `getsockopt`]: https://www.gnu.org/software/libc/manual/html_node/Socket-Option-Functions.html
-/// [glibc `SOL_SOCKET` options]: https://www.gnu.org/software/libc/manual/html_node/Socket_002dLevel-Options.html
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
#[inline]
#[doc(alias = "SO_BROADCAST")]
pub fn get_socket_broadcast<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
- backend::net::syscalls::sockopt::get_socket_broadcast(fd.as_fd())
+ backend::net::sockopt::get_socket_broadcast(fd.as_fd())
}
-/// `setsockopt(fd, SOL_SOCKET, SO_LINGER, linger)`
+/// `setsockopt(fd, SOL_SOCKET, SO_LINGER, value)`
///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-/// - [Apple]
-/// - [FreeBSD]
-/// - [NetBSD]
-/// - [OpenBSD]
-/// - [DragonFly BSD]
-/// - [illumos]
-/// - [glibc `setsockopt`]
-/// - [glibc `SOL_SOCKET` Options]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setsockopt.2.html
-/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2
-/// [NetBSD]: https://man.netbsd.org/setsockopt.2
-/// [OpenBSD]: https://man.openbsd.org/setsockopt.2
-/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=setsockopt&section=2
-/// [illumos]: https://illumos.org/man/3SOCKET/setsockopt
-/// [glibc `setsockopt`]: https://www.gnu.org/software/libc/manual/html_node/Socket-Option-Functions.html
-/// [glibc `SOL_SOCKET` options]: https://www.gnu.org/software/libc/manual/html_node/Socket_002dLevel-Options.html
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
#[inline]
#[doc(alias = "SO_LINGER")]
-pub fn set_socket_linger<Fd: AsFd>(fd: Fd, linger: Option<Duration>) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_socket_linger(fd.as_fd(), linger)
+pub fn set_socket_linger<Fd: AsFd>(fd: Fd, value: Option<Duration>) -> io::Result<()> {
+ backend::net::sockopt::set_socket_linger(fd.as_fd(), value)
}
/// `getsockopt(fd, SOL_SOCKET, SO_LINGER)`
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-/// - [Apple]
-/// - [FreeBSD]
-/// - [NetBSD]
-/// - [OpenBSD]
-/// - [DragonFly BSD]
-/// - [illumos]
-/// - [glibc `getsockopt`]
-/// - [glibc `SOL_SOCKET` Options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html
-/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
-/// [NetBSD]: https://man.netbsd.org/getsockopt.2
-/// [OpenBSD]: https://man.openbsd.org/getsockopt.2
-/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=getsockopt&section=2
-/// [illumos]: https://illumos.org/man/3SOCKET/getsockopt
-/// [glibc `getsockopt`]: https://www.gnu.org/software/libc/manual/html_node/Socket-Option-Functions.html
-/// [glibc `SOL_SOCKET` options]: https://www.gnu.org/software/libc/manual/html_node/Socket_002dLevel-Options.html
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
#[inline]
#[doc(alias = "SO_LINGER")]
pub fn get_socket_linger<Fd: AsFd>(fd: Fd) -> io::Result<Option<Duration>> {
- backend::net::syscalls::sockopt::get_socket_linger(fd.as_fd())
+ backend::net::sockopt::get_socket_linger(fd.as_fd())
}
-/// `setsockopt(fd, SOL_SOCKET, SO_PASSCRED, passcred)`
+/// `setsockopt(fd, SOL_SOCKET, SO_PASSCRED, value)`
///
-/// # References
-/// - [Linux `setsockopt`]
-/// - [Linux `socket`]
+/// See the [module-level documentation] for more.
///
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
#[cfg(linux_kernel)]
#[inline]
#[doc(alias = "SO_PASSCRED")]
-pub fn set_socket_passcred<Fd: AsFd>(fd: Fd, passcred: bool) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_socket_passcred(fd.as_fd(), passcred)
+pub fn set_socket_passcred<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
+ backend::net::sockopt::set_socket_passcred(fd.as_fd(), value)
}
/// `getsockopt(fd, SOL_SOCKET, SO_PASSCRED)`
///
-/// # References
-/// - [Linux `getsockopt`]
-/// - [Linux `socket`]
+/// See the [module-level documentation] for more.
///
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
#[cfg(linux_kernel)]
#[inline]
#[doc(alias = "SO_PASSCRED")]
pub fn get_socket_passcred<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
- backend::net::syscalls::sockopt::get_socket_passcred(fd.as_fd())
+ backend::net::sockopt::get_socket_passcred(fd.as_fd())
}
-/// `setsockopt(fd, SOL_SOCKET, id, timeout)`—Set the sending or receiving
+/// `setsockopt(fd, SOL_SOCKET, id, value)`—Set the sending or receiving
/// timeout.
///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-/// - [Apple]
-/// - [FreeBSD]
-/// - [NetBSD]
-/// - [OpenBSD]
-/// - [DragonFly BSD]
-/// - [illumos]
-/// - [glibc `setsockopt`]
-/// - [glibc `SOL_SOCKET` Options]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setsockopt.2.html
-/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2
-/// [NetBSD]: https://man.netbsd.org/setsockopt.2
-/// [OpenBSD]: https://man.openbsd.org/setsockopt.2
-/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=setsockopt&section=2
-/// [illumos]: https://illumos.org/man/3SOCKET/setsockopt
-/// [glibc `setsockopt`]: https://www.gnu.org/software/libc/manual/html_node/Socket-Option-Functions.html
-/// [glibc `SOL_SOCKET` options]: https://www.gnu.org/software/libc/manual/html_node/Socket_002dLevel-Options.html
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
#[inline]
#[doc(alias = "SO_RCVTIMEO")]
#[doc(alias = "SO_SNDTIMEO")]
pub fn set_socket_timeout<Fd: AsFd>(
fd: Fd,
id: Timeout,
- timeout: Option<Duration>,
+ value: Option<Duration>,
) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_socket_timeout(fd.as_fd(), id, timeout)
+ backend::net::sockopt::set_socket_timeout(fd.as_fd(), id, value)
}
/// `getsockopt(fd, SOL_SOCKET, id)`—Get the sending or receiving timeout.
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-/// - [Apple]
-/// - [FreeBSD]
-/// - [NetBSD]
-/// - [OpenBSD]
-/// - [DragonFly BSD]
-/// - [illumos]
-/// - [glibc `getsockopt`]
-/// - [glibc `SOL_SOCKET` Options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html
-/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
-/// [NetBSD]: https://man.netbsd.org/getsockopt.2
-/// [OpenBSD]: https://man.openbsd.org/getsockopt.2
-/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=getsockopt&section=2
-/// [illumos]: https://illumos.org/man/3SOCKET/getsockopt
-/// [glibc `getsockopt`]: https://www.gnu.org/software/libc/manual/html_node/Socket-Option-Functions.html
-/// [glibc `SOL_SOCKET` options]: https://www.gnu.org/software/libc/manual/html_node/Socket_002dLevel-Options.html
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
#[inline]
#[doc(alias = "SO_RCVTIMEO")]
#[doc(alias = "SO_SNDTIMEO")]
pub fn get_socket_timeout<Fd: AsFd>(fd: Fd, id: Timeout) -> io::Result<Option<Duration>> {
- backend::net::syscalls::sockopt::get_socket_timeout(fd.as_fd(), id)
+ backend::net::sockopt::get_socket_timeout(fd.as_fd(), id)
}
/// `getsockopt(fd, SOL_SOCKET, SO_ERROR)`
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-/// - [Apple]
-/// - [FreeBSD]
-/// - [NetBSD]
-/// - [OpenBSD]
-/// - [DragonFly BSD]
-/// - [illumos]
-/// - [glibc `getsockopt`]
-/// - [glibc `SOL_SOCKET` Options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html
-/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
-/// [NetBSD]: https://man.netbsd.org/getsockopt.2
-/// [OpenBSD]: https://man.openbsd.org/getsockopt.2
-/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=getsockopt&section=2
-/// [illumos]: https://illumos.org/man/3SOCKET/getsockopt
-/// [glibc `getsockopt`]: https://www.gnu.org/software/libc/manual/html_node/Socket-Option-Functions.html
-/// [glibc `SOL_SOCKET` options]: https://www.gnu.org/software/libc/manual/html_node/Socket_002dLevel-Options.html
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
#[inline]
#[doc(alias = "SO_ERROR")]
pub fn get_socket_error<Fd: AsFd>(fd: Fd) -> io::Result<Result<(), io::Errno>> {
- backend::net::syscalls::sockopt::get_socket_error(fd.as_fd())
+ backend::net::sockopt::get_socket_error(fd.as_fd())
}
/// `getsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE)`
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-/// - [Apple]
-/// - [FreeBSD]
-/// - [NetBSD]
-/// - [OpenBSD]
-/// - [DragonFly BSD]
-/// - [illumos]
-/// - [glibc `getsockopt`]
-/// - [glibc `SOL_SOCKET` Options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html
-/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
-/// [NetBSD]: https://man.netbsd.org/getsockopt.2
-/// [OpenBSD]: https://man.openbsd.org/getsockopt.2
-/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=getsockopt&section=2
-/// [illumos]: https://illumos.org/man/3SOCKET/getsockopt
-/// [glibc `getsockopt`]: https://www.gnu.org/software/libc/manual/html_node/Socket-Option-Functions.html
-/// [glibc `SOL_SOCKET` options]: https://www.gnu.org/software/libc/manual/html_node/Socket_002dLevel-Options.html
-#[cfg(any(apple, target_os = "freebsd"))]
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
+#[cfg(any(apple, freebsdlike, target_os = "netbsd"))]
#[doc(alias = "SO_NOSIGPIPE")]
#[inline]
pub fn get_socket_nosigpipe<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
- backend::net::syscalls::sockopt::get_socket_nosigpipe(fd.as_fd())
+ backend::net::sockopt::get_socket_nosigpipe(fd.as_fd())
}
-/// `setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, val)`
+/// `setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, value)`
///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-/// - [Apple]
-/// - [FreeBSD]
-/// - [NetBSD]
-/// - [OpenBSD]
-/// - [DragonFly BSD]
-/// - [illumos]
-/// - [glibc `setsockopt`]
-/// - [glibc `SOL_SOCKET` Options]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setsockopt.2.html
-/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2
-/// [NetBSD]: https://man.netbsd.org/setsockopt.2
-/// [OpenBSD]: https://man.openbsd.org/setsockopt.2
-/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=setsockopt&section=2
-/// [illumos]: https://illumos.org/man/3SOCKET/setsockopt
-/// [glibc `setsockopt`]: https://www.gnu.org/software/libc/manual/html_node/Socket-Option-Functions.html
-/// [glibc `SOL_SOCKET` options]: https://www.gnu.org/software/libc/manual/html_node/Socket_002dLevel-Options.html
-#[cfg(any(apple, target_os = "freebsd"))]
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
+#[cfg(any(apple, freebsdlike, target_os = "netbsd"))]
#[doc(alias = "SO_NOSIGPIPE")]
#[inline]
-pub fn set_socket_nosigpipe<Fd: AsFd>(fd: Fd, val: bool) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_socket_nosigpipe(fd.as_fd(), val)
+pub fn set_socket_nosigpipe<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
+ backend::net::sockopt::set_socket_nosigpipe(fd.as_fd(), value)
}
-/// `setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, keepalive)`
+/// `setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, value)`
///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-/// - [Apple]
-/// - [FreeBSD]
-/// - [NetBSD]
-/// - [OpenBSD]
-/// - [DragonFly BSD]
-/// - [illumos]
-/// - [glibc `setsockopt`]
-/// - [glibc `SOL_SOCKET` Options]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setsockopt.2.html
-/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2
-/// [NetBSD]: https://man.netbsd.org/setsockopt.2
-/// [OpenBSD]: https://man.openbsd.org/setsockopt.2
-/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=setsockopt&section=2
-/// [illumos]: https://illumos.org/man/3SOCKET/setsockopt
-/// [glibc `setsockopt`]: https://www.gnu.org/software/libc/manual/html_node/Socket-Option-Functions.html
-/// [glibc `SOL_SOCKET` options]: https://www.gnu.org/software/libc/manual/html_node/Socket_002dLevel-Options.html
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
#[inline]
#[doc(alias = "SO_KEEPALIVE")]
-pub fn set_socket_keepalive<Fd: AsFd>(fd: Fd, keepalive: bool) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_socket_keepalive(fd.as_fd(), keepalive)
+pub fn set_socket_keepalive<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
+ backend::net::sockopt::set_socket_keepalive(fd.as_fd(), value)
}
/// `getsockopt(fd, SOL_SOCKET, SO_KEEPALIVE)`
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-/// - [Apple]
-/// - [FreeBSD]
-/// - [NetBSD]
-/// - [OpenBSD]
-/// - [DragonFly BSD]
-/// - [illumos]
-/// - [glibc `getsockopt`]
-/// - [glibc `SOL_SOCKET` Options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html
-/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
-/// [NetBSD]: https://man.netbsd.org/getsockopt.2
-/// [OpenBSD]: https://man.openbsd.org/getsockopt.2
-/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=getsockopt&section=2
-/// [illumos]: https://illumos.org/man/3SOCKET/getsockopt
-/// [glibc `getsockopt`]: https://www.gnu.org/software/libc/manual/html_node/Socket-Option-Functions.html
-/// [glibc `SOL_SOCKET` options]: https://www.gnu.org/software/libc/manual/html_node/Socket_002dLevel-Options.html
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
#[inline]
#[doc(alias = "SO_KEEPALIVE")]
pub fn get_socket_keepalive<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
- backend::net::syscalls::sockopt::get_socket_keepalive(fd.as_fd())
+ backend::net::sockopt::get_socket_keepalive(fd.as_fd())
}
-/// `setsockopt(fd, SOL_SOCKET, SO_RCVBUF, size)`
+/// `setsockopt(fd, SOL_SOCKET, SO_RCVBUF, value)`
///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-/// - [Apple]
-/// - [FreeBSD]
-/// - [NetBSD]
-/// - [OpenBSD]
-/// - [DragonFly BSD]
-/// - [illumos]
-/// - [glibc `setsockopt`]
-/// - [glibc `SOL_SOCKET` Options]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setsockopt.2.html
-/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2
-/// [NetBSD]: https://man.netbsd.org/setsockopt.2
-/// [OpenBSD]: https://man.openbsd.org/setsockopt.2
-/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=setsockopt&section=2
-/// [illumos]: https://illumos.org/man/3SOCKET/setsockopt
-/// [glibc `setsockopt`]: https://www.gnu.org/software/libc/manual/html_node/Socket-Option-Functions.html
-/// [glibc `SOL_SOCKET` options]: https://www.gnu.org/software/libc/manual/html_node/Socket_002dLevel-Options.html
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
#[inline]
#[doc(alias = "SO_RCVBUF")]
-pub fn set_socket_recv_buffer_size<Fd: AsFd>(fd: Fd, size: usize) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_socket_recv_buffer_size(fd.as_fd(), size)
+pub fn set_socket_recv_buffer_size<Fd: AsFd>(fd: Fd, value: usize) -> io::Result<()> {
+ backend::net::sockopt::set_socket_recv_buffer_size(fd.as_fd(), value)
}
/// `getsockopt(fd, SOL_SOCKET, SO_RCVBUF)`
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-/// - [Apple]
-/// - [FreeBSD]
-/// - [NetBSD]
-/// - [OpenBSD]
-/// - [DragonFly BSD]
-/// - [illumos]
-/// - [glibc `getsockopt`]
-/// - [glibc `SOL_SOCKET` Options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html
-/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
-/// [NetBSD]: https://man.netbsd.org/getsockopt.2
-/// [OpenBSD]: https://man.openbsd.org/getsockopt.2
-/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=getsockopt&section=2
-/// [illumos]: https://illumos.org/man/3SOCKET/getsockopt
-/// [glibc `getsockopt`]: https://www.gnu.org/software/libc/manual/html_node/Socket-Option-Functions.html
-/// [glibc `SOL_SOCKET` options]: https://www.gnu.org/software/libc/manual/html_node/Socket_002dLevel-Options.html
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
#[inline]
#[doc(alias = "SO_RCVBUF")]
pub fn get_socket_recv_buffer_size<Fd: AsFd>(fd: Fd) -> io::Result<usize> {
- backend::net::syscalls::sockopt::get_socket_recv_buffer_size(fd.as_fd())
+ backend::net::sockopt::get_socket_recv_buffer_size(fd.as_fd())
}
-/// `setsockopt(fd, SOL_SOCKET, SO_SNDBUF, size)`
+/// `setsockopt(fd, SOL_SOCKET, SO_SNDBUF, value)`
///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-/// - [Apple]
-/// - [FreeBSD]
-/// - [NetBSD]
-/// - [OpenBSD]
-/// - [DragonFly BSD]
-/// - [illumos]
-/// - [glibc `setsockopt`]
-/// - [glibc `SOL_SOCKET` Options]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setsockopt.2.html
-/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2
-/// [NetBSD]: https://man.netbsd.org/setsockopt.2
-/// [OpenBSD]: https://man.openbsd.org/setsockopt.2
-/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=setsockopt&section=2
-/// [illumos]: https://illumos.org/man/3SOCKET/setsockopt
-/// [glibc `setsockopt`]: https://www.gnu.org/software/libc/manual/html_node/Socket-Option-Functions.html
-/// [glibc `SOL_SOCKET` options]: https://www.gnu.org/software/libc/manual/html_node/Socket_002dLevel-Options.html
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
#[inline]
#[doc(alias = "SO_SNDBUF")]
-pub fn set_socket_send_buffer_size<Fd: AsFd>(fd: Fd, size: usize) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_socket_send_buffer_size(fd.as_fd(), size)
+pub fn set_socket_send_buffer_size<Fd: AsFd>(fd: Fd, value: usize) -> io::Result<()> {
+ backend::net::sockopt::set_socket_send_buffer_size(fd.as_fd(), value)
}
/// `getsockopt(fd, SOL_SOCKET, SO_SNDBUF)`
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-/// - [Apple]
-/// - [FreeBSD]
-/// - [NetBSD]
-/// - [OpenBSD]
-/// - [DragonFly BSD]
-/// - [illumos]
-/// - [glibc `getsockopt`]
-/// - [glibc `SOL_SOCKET` Options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html
-/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
-/// [NetBSD]: https://man.netbsd.org/getsockopt.2
-/// [OpenBSD]: https://man.openbsd.org/getsockopt.2
-/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=getsockopt&section=2
-/// [illumos]: https://illumos.org/man/3SOCKET/getsockopt
-/// [glibc `getsockopt`]: https://www.gnu.org/software/libc/manual/html_node/Socket-Option-Functions.html
-/// [glibc `SOL_SOCKET` options]: https://www.gnu.org/software/libc/manual/html_node/Socket_002dLevel-Options.html
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
#[inline]
#[doc(alias = "SO_SNDBUF")]
pub fn get_socket_send_buffer_size<Fd: AsFd>(fd: Fd) -> io::Result<usize> {
- backend::net::syscalls::sockopt::get_socket_send_buffer_size(fd.as_fd())
+ backend::net::sockopt::get_socket_send_buffer_size(fd.as_fd())
}
/// `getsockopt(fd, SOL_SOCKET, SO_DOMAIN)`
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-/// - [Apple]
-/// - [FreeBSD]
-/// - [NetBSD]
-/// - [OpenBSD]
-/// - [DragonFly BSD]
-/// - [illumos]
-/// - [glibc `getsockopt`]
-/// - [glibc `SOL_SOCKET` Options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-/// [Apple]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html
-/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
-/// [NetBSD]: https://man.netbsd.org/getsockopt.2
-/// [OpenBSD]: https://man.openbsd.org/getsockopt.2
-/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=getsockopt&section=2
-/// [illumos]: https://illumos.org/man/3SOCKET/getsockopt
-/// [glibc `getsockopt`]: https://www.gnu.org/software/libc/manual/html_node/Socket-Option-Functions.html
-/// [glibc `SOL_SOCKET` options]: https://www.gnu.org/software/libc/manual/html_node/Socket_002dLevel-Options.html
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
#[cfg(not(any(
apple,
windows,
@@ -804,709 +442,314 @@ pub fn get_socket_send_buffer_size<Fd: AsFd>(fd: Fd) -> io::Result<usize> {
target_os = "haiku",
target_os = "netbsd",
target_os = "nto",
+ target_os = "vita",
)))]
#[inline]
#[doc(alias = "SO_DOMAIN")]
pub fn get_socket_domain<Fd: AsFd>(fd: Fd) -> io::Result<AddressFamily> {
- backend::net::syscalls::sockopt::get_socket_domain(fd.as_fd())
+ backend::net::sockopt::get_socket_domain(fd.as_fd())
}
/// `getsockopt(fd, SOL_SOCKET, SO_ACCEPTCONN)`
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `sys/socket.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `socket`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `SOL_SOCKET` options]
-/// - [FreeBSD]
-/// - [NetBSD]
-/// - [OpenBSD]
-/// - [DragonFly BSD]
-/// - [illumos]
-/// - [glibc `getsockopt`]
-/// - [glibc `SOL_SOCKET` Options]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `sys/socket.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `socket`]: https://man7.org/linux/man-pages/man7/socket.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `SOL_SOCKET` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/sol-socket-socket-options
-/// [FreeBSD]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
-/// [NetBSD]: https://man.netbsd.org/getsockopt.2
-/// [OpenBSD]: https://man.openbsd.org/getsockopt.2
-/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=getsockopt&section=2
-/// [illumos]: https://illumos.org/man/3SOCKET/getsockopt
-/// [glibc `getsockopt`]: https://www.gnu.org/software/libc/manual/html_node/Socket-Option-Functions.html
-/// [glibc `SOL_SOCKET` options]: https://www.gnu.org/software/libc/manual/html_node/Socket_002dLevel-Options.html
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
#[cfg(not(apple))] // Apple platforms declare the constant, but do not actually implement it.
#[inline]
#[doc(alias = "SO_ACCEPTCONN")]
pub fn get_socket_acceptconn<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
- backend::net::syscalls::sockopt::get_socket_acceptconn(fd.as_fd())
+ backend::net::sockopt::get_socket_acceptconn(fd.as_fd())
}
-/// `setsockopt(fd, IPPROTO_IP, IP_TTL, ttl)`
+/// `setsockopt(fd, SOL_SOCKET, SO_OOBINLINE, value)`
///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `ip`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `IPPROTO_IP` options]
-/// - [Apple `setsockopt`]
-/// - [Apple `ip`]
-/// - [FreeBSD `setsockopt`]
-/// - [FreeBSD `ip`]
-/// - [NetBSD `setsockopt`]
-/// - [NetBSD `ip`]
-/// - [OpenBSD `setsockopt`]
-/// - [OpenBSD `ip`]
-/// - [DragonFly BSD `setsockopt`]
-/// - [DragonFly BSD `ip`]
-/// - [illumos `setsockopt`]
-/// - [illumos `ip`]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `ip`]: https://man7.org/linux/man-pages/man7/ip.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_IP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options
-/// [Apple `setsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setsockopt.2.html
-/// [Apple `ip`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/ip.4.auto.html
-/// [FreeBSD `setsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2
-/// [FreeBSD `ip`]: https://man.freebsd.org/cgi/man.cgi?query=ip&sektion=4
-/// [NetBSD `setsockopt`]: https://man.netbsd.org/setsockopt.2
-/// [NetBSD `ip`]: https://man.netbsd.org/ip.4
-/// [OpenBSD `setsockopt`]: https://man.openbsd.org/setsockopt.2
-/// [OpenBSD `ip`]: https://man.openbsd.org/ip.4
-/// [DragonFly BSD `setsockopt`]: https://man.dragonflybsd.org/?command=setsockopt&section=2
-/// [DragonFly BSD `ip`]: https://man.dragonflybsd.org/?command=ip&section=4
-/// [illumos `setsockopt`]: https://illumos.org/man/3SOCKET/setsockopt
-/// [illumos `ip`]: https://illumos.org/man/4P/ip
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
+#[inline]
+#[doc(alias = "SO_OOBINLINE")]
+pub fn set_socket_oobinline<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
+ backend::net::sockopt::set_socket_oobinline(fd.as_fd(), value)
+}
+
+/// `getsockopt(fd, SOL_SOCKET, SO_OOBINLINE)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
+#[inline]
+#[doc(alias = "SO_OOBINLINE")]
+pub fn get_socket_oobinline<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
+ backend::net::sockopt::get_socket_oobinline(fd.as_fd())
+}
+
+/// `setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, value)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
+#[cfg(not(any(solarish, windows)))]
+#[cfg(not(windows))]
+#[inline]
+#[doc(alias = "SO_REUSEPORT")]
+pub fn set_socket_reuseport<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
+ backend::net::sockopt::set_socket_reuseport(fd.as_fd(), value)
+}
+
+/// `getsockopt(fd, SOL_SOCKET, SO_REUSEPORT)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
+#[cfg(not(any(solarish, windows)))]
+#[inline]
+#[doc(alias = "SO_REUSEPORT")]
+pub fn get_socket_reuseport<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
+ backend::net::sockopt::get_socket_reuseport(fd.as_fd())
+}
+
+/// `setsockopt(fd, SOL_SOCKET, SO_REUSEPORT_LB, value)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
+#[cfg(target_os = "freebsd")]
+#[inline]
+#[doc(alias = "SO_REUSEPORT_LB")]
+pub fn set_socket_reuseport_lb<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
+ backend::net::sockopt::set_socket_reuseport_lb(fd.as_fd(), value)
+}
+
+/// `getsockopt(fd, SOL_SOCKET, SO_REUSEPORT_LB)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
+#[cfg(target_os = "freebsd")]
+#[inline]
+#[doc(alias = "SO_REUSEPORT_LB")]
+pub fn get_socket_reuseport_lb<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
+ backend::net::sockopt::get_socket_reuseport_lb(fd.as_fd())
+}
+
+/// `getsockopt(fd, SOL_SOCKET, SO_PROTOCOL)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
+#[cfg(any(
+ linux_kernel,
+ target_os = "freebsd",
+ target_os = "fuchsia",
+ target_os = "openbsd",
+ target_os = "redox",
+ target_env = "newlib"
+))]
+#[inline]
+#[doc(alias = "SO_PROTOCOL")]
+pub fn get_socket_protocol<Fd: AsFd>(fd: Fd) -> io::Result<Option<Protocol>> {
+ backend::net::sockopt::get_socket_protocol(fd.as_fd())
+}
+
+/// `getsockopt(fd, SOL_SOCKET, SO_COOKIE)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
+#[cfg(target_os = "linux")]
+#[inline]
+#[doc(alias = "SO_COOKIE")]
+pub fn get_socket_cookie<Fd: AsFd>(fd: Fd) -> io::Result<u64> {
+ backend::net::sockopt::get_socket_cookie(fd.as_fd())
+}
+
+/// `getsockopt(fd, SOL_SOCKET, SO_INCOMING_CPU)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
+#[cfg(target_os = "linux")]
+#[inline]
+#[doc(alias = "SO_INCOMING_CPU")]
+pub fn get_socket_incoming_cpu<Fd: AsFd>(fd: Fd) -> io::Result<u32> {
+ backend::net::sockopt::get_socket_incoming_cpu(fd.as_fd())
+}
+
+/// `setsockopt(fd, SOL_SOCKET, SO_INCOMING_CPU, value)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
+#[cfg(target_os = "linux")]
+#[inline]
+#[doc(alias = "SO_INCOMING_CPU")]
+pub fn set_socket_incoming_cpu<Fd: AsFd>(fd: Fd, value: u32) -> io::Result<()> {
+ backend::net::sockopt::set_socket_incoming_cpu(fd.as_fd(), value)
+}
+
+/// `setsockopt(fd, IPPROTO_IP, IP_TTL, value)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
#[inline]
#[doc(alias = "IP_TTL")]
-pub fn set_ip_ttl<Fd: AsFd>(fd: Fd, ttl: u32) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_ip_ttl(fd.as_fd(), ttl)
+pub fn set_ip_ttl<Fd: AsFd>(fd: Fd, value: u32) -> io::Result<()> {
+ backend::net::sockopt::set_ip_ttl(fd.as_fd(), value)
}
/// `getsockopt(fd, IPPROTO_IP, IP_TTL)`
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `ip`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `IPPROTO_IP` options]
-/// - [Apple `getsockopt`]
-/// - [Apple `ip`]
-/// - [FreeBSD `getsockopt`]
-/// - [FreeBSD `ip`]
-/// - [NetBSD `getsockopt`]
-/// - [NetBSD `ip`]
-/// - [OpenBSD `getsockopt`]
-/// - [OpenBSD `ip`]
-/// - [DragonFly BSD `getsockopt`]
-/// - [DragonFly BSD `ip`]
-/// - [illumos `getsockopt`]
-/// - [illumos `ip`]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `ip`]: https://man7.org/linux/man-pages/man7/ip.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `IPPROTO_IP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options
-/// [Apple `setsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setsockopt.2.html
-/// [Apple `ip`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/ip.4.auto.html
-/// [FreeBSD `setsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2
-/// [FreeBSD `ip`]: https://man.freebsd.org/cgi/man.cgi?query=ip&sektion=4
-/// [NetBSD `setsockopt`]: https://man.netbsd.org/setsockopt.2
-/// [NetBSD `ip`]: https://man.netbsd.org/ip.4
-/// [OpenBSD `setsockopt`]: https://man.openbsd.org/setsockopt.2
-/// [OpenBSD `ip`]: https://man.openbsd.org/ip.4
-/// [DragonFly BSD `setsockopt`]: https://man.dragonflybsd.org/?command=setsockopt&section=2
-/// [DragonFly BSD `ip`]: https://man.dragonflybsd.org/?command=ip&section=4
-/// [illumos `setsockopt`]: https://illumos.org/man/3SOCKET/setsockopt
-/// [illumos `ip`]: https://illumos.org/man/4P/ip
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions
#[inline]
#[doc(alias = "IP_TTL")]
pub fn get_ip_ttl<Fd: AsFd>(fd: Fd) -> io::Result<u32> {
- backend::net::syscalls::sockopt::get_ip_ttl(fd.as_fd())
+ backend::net::sockopt::get_ip_ttl(fd.as_fd())
}
-/// `setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, only_v6)`
+/// `setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, value)`
///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `ipv6`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `IPPROTO_IPV6` options]
-/// - [Apple `setsockopt`]
-/// - [Apple `ip6`]
-/// - [FreeBSD `setsockopt`]
-/// - [FreeBSD `ip6`]
-/// - [NetBSD `setsockopt`]
-/// - [NetBSD `ip6`]
-/// - [OpenBSD `setsockopt`]
-/// - [OpenBSD `ip6`]
-/// - [DragonFly BSD `setsockopt`]
-/// - [DragonFly BSD `ip6`]
-/// - [illumos `setsockopt`]
-/// - [illumos `ip6`]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `ipv6`]: https://man7.org/linux/man-pages/man7/ipv6.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_IPV6` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-options
-/// [Apple `setsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setsockopt.2.html
-/// [Apple `ip6`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/ip6.4.auto.html
-/// [FreeBSD `setsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2
-/// [FreeBSD `ip6`]: https://man.freebsd.org/cgi/man.cgi?query=ip6&sektion=4
-/// [NetBSD `setsockopt`]: https://man.netbsd.org/setsockopt.2
-/// [NetBSD `ip6`]: https://man.netbsd.org/ip6.4
-/// [OpenBSD `setsockopt`]: https://man.openbsd.org/setsockopt.2
-/// [OpenBSD `ip6`]: https://man.openbsd.org/ip6.4
-/// [DragonFly BSD `setsockopt`]: https://man.dragonflybsd.org/?command=setsockopt&section=2
-/// [DragonFly BSD `ip6`]: https://man.dragonflybsd.org/?command=ip6&section=4
-/// [illumos `setsockopt`]: https://illumos.org/man/3SOCKET/setsockopt
-/// [illumos `ip6`]: https://illumos.org/man/4P/ip6
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions
#[inline]
#[doc(alias = "IPV6_V6ONLY")]
-pub fn set_ipv6_v6only<Fd: AsFd>(fd: Fd, only_v6: bool) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_ipv6_v6only(fd.as_fd(), only_v6)
+pub fn set_ipv6_v6only<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
+ backend::net::sockopt::set_ipv6_v6only(fd.as_fd(), value)
}
/// `getsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY)`
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `ipv6`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `IPPROTO_IPV6` options]
-/// - [Apple `getsockopt`]
-/// - [Apple `ip6`]
-/// - [FreeBSD `getsockopt`]
-/// - [FreeBSD `ip6`]
-/// - [NetBSD `getsockopt`]
-/// - [NetBSD `ip6`]
-/// - [OpenBSD `getsockopt`]
-/// - [OpenBSD `ip6`]
-/// - [DragonFly BSD `getsockopt`]
-/// - [DragonFly BSD `ip6`]
-/// - [illumos `getsockopt`]
-/// - [illumos `ip6`]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `ipv6`]: https://man7.org/linux/man-pages/man7/ipv6.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `IPPROTO_IPV6` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-options
-/// [Apple `getsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html
-/// [Apple `ip6`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/ip6.4.auto.html
-/// [FreeBSD `getsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
-/// [FreeBSD `ip6`]: https://man.freebsd.org/cgi/man.cgi?query=ip6&sektion=4
-/// [NetBSD `getsockopt`]: https://man.netbsd.org/getsockopt.2
-/// [NetBSD `ip6`]: https://man.netbsd.org/ip6.4
-/// [OpenBSD `getsockopt`]: https://man.openbsd.org/getsockopt.2
-/// [OpenBSD `ip6`]: https://man.openbsd.org/ip6.4
-/// [DragonFly BSD `getsockopt`]: https://man.dragonflybsd.org/?command=getsockopt&section=2
-/// [DragonFly BSD `ip6`]: https://man.dragonflybsd.org/?command=ip6&section=4
-/// [illumos `getsockopt`]: https://illumos.org/man/3SOCKET/getsockopt
-/// [illumos `ip6`]: https://illumos.org/man/4P/ip6
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions
#[inline]
#[doc(alias = "IPV6_V6ONLY")]
pub fn get_ipv6_v6only<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
- backend::net::syscalls::sockopt::get_ipv6_v6only(fd.as_fd())
+ backend::net::sockopt::get_ipv6_v6only(fd.as_fd())
}
-/// `setsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP, multicast_loop)`
+/// `setsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP, value)`
///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `ip`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `IPPROTO_IP` options]
-/// - [Apple `setsockopt`]
-/// - [Apple `ip`]
-/// - [FreeBSD `setsockopt`]
-/// - [FreeBSD `ip`]
-/// - [NetBSD `setsockopt`]
-/// - [NetBSD `ip`]
-/// - [OpenBSD `setsockopt`]
-/// - [OpenBSD `ip`]
-/// - [DragonFly BSD `setsockopt`]
-/// - [DragonFly BSD `ip`]
-/// - [illumos `setsockopt`]
-/// - [illumos `ip`]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `ip`]: https://man7.org/linux/man-pages/man7/ip.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_IP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options
-/// [Apple `setsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setsockopt.2.html
-/// [Apple `ip`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/ip.4.auto.html
-/// [FreeBSD `setsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2
-/// [FreeBSD `ip`]: https://man.freebsd.org/cgi/man.cgi?query=ip&sektion=4
-/// [NetBSD `setsockopt`]: https://man.netbsd.org/setsockopt.2
-/// [NetBSD `ip`]: https://man.netbsd.org/ip.4
-/// [OpenBSD `setsockopt`]: https://man.openbsd.org/setsockopt.2
-/// [OpenBSD `ip`]: https://man.openbsd.org/ip.4
-/// [DragonFly BSD `setsockopt`]: https://man.dragonflybsd.org/?command=setsockopt&section=2
-/// [DragonFly BSD `ip`]: https://man.dragonflybsd.org/?command=ip&section=4
-/// [illumos `setsockopt`]: https://illumos.org/man/3SOCKET/setsockopt
-/// [illumos `ip`]: https://illumos.org/man/4P/ip
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions
#[inline]
#[doc(alias = "IP_MULTICAST_LOOP")]
-pub fn set_ip_multicast_loop<Fd: AsFd>(fd: Fd, multicast_loop: bool) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_ip_multicast_loop(fd.as_fd(), multicast_loop)
+pub fn set_ip_multicast_loop<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
+ backend::net::sockopt::set_ip_multicast_loop(fd.as_fd(), value)
}
/// `getsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP)`
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `ip`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `IPPROTO_IP` options]
-/// - [Apple `getsockopt`]
-/// - [Apple `ip`]
-/// - [FreeBSD `getsockopt`]
-/// - [FreeBSD `ip`]
-/// - [NetBSD `getsockopt`]
-/// - [NetBSD `ip`]
-/// - [OpenBSD `getsockopt`]
-/// - [OpenBSD `ip`]
-/// - [DragonFly BSD `getsockopt`]
-/// - [DragonFly BSD `ip`]
-/// - [illumos `getsockopt`]
-/// - [illumos `ip`]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `ip`]: https://man7.org/linux/man-pages/man7/ip.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `IPPROTO_IP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions
#[inline]
#[doc(alias = "IP_MULTICAST_LOOP")]
pub fn get_ip_multicast_loop<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
- backend::net::syscalls::sockopt::get_ip_multicast_loop(fd.as_fd())
+ backend::net::sockopt::get_ip_multicast_loop(fd.as_fd())
}
-/// `setsockopt(fd, IPPROTO_IP, IP_MULTICAST_TTL, multicast_ttl)`
+/// `setsockopt(fd, IPPROTO_IP, IP_MULTICAST_TTL, value)`
///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `ip`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `IPPROTO_IP` options]
-/// - [Apple `setsockopt`]
-/// - [Apple `ip`]
-/// - [FreeBSD `setsockopt`]
-/// - [FreeBSD `ip`]
-/// - [NetBSD `setsockopt`]
-/// - [NetBSD `ip`]
-/// - [OpenBSD `setsockopt`]
-/// - [OpenBSD `ip`]
-/// - [DragonFly BSD `setsockopt`]
-/// - [DragonFly BSD `ip`]
-/// - [illumos `setsockopt`]
-/// - [illumos `ip`]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `ip`]: https://man7.org/linux/man-pages/man7/ip.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_IP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options
-/// [Apple `setsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setsockopt.2.html
-/// [Apple `ip`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/ip.4.auto.html
-/// [FreeBSD `setsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2
-/// [FreeBSD `ip`]: https://man.freebsd.org/cgi/man.cgi?query=ip&sektion=4
-/// [NetBSD `setsockopt`]: https://man.netbsd.org/setsockopt.2
-/// [NetBSD `ip`]: https://man.netbsd.org/ip.4
-/// [OpenBSD `setsockopt`]: https://man.openbsd.org/setsockopt.2
-/// [OpenBSD `ip`]: https://man.openbsd.org/ip.4
-/// [DragonFly BSD `setsockopt`]: https://man.dragonflybsd.org/?command=setsockopt&section=2
-/// [DragonFly BSD `ip`]: https://man.dragonflybsd.org/?command=ip&section=4
-/// [illumos `setsockopt`]: https://illumos.org/man/3SOCKET/setsockopt
-/// [illumos `ip`]: https://illumos.org/man/4P/ip
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions
#[inline]
#[doc(alias = "IP_MULTICAST_TTL")]
-pub fn set_ip_multicast_ttl<Fd: AsFd>(fd: Fd, multicast_ttl: u32) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_ip_multicast_ttl(fd.as_fd(), multicast_ttl)
+pub fn set_ip_multicast_ttl<Fd: AsFd>(fd: Fd, value: u32) -> io::Result<()> {
+ backend::net::sockopt::set_ip_multicast_ttl(fd.as_fd(), value)
}
/// `getsockopt(fd, IPPROTO_IP, IP_MULTICAST_TTL)`
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `ip`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `IPPROTO_IP` options]
-/// - [Apple `getsockopt`]
-/// - [Apple `ip`]
-/// - [FreeBSD `getsockopt`]
-/// - [FreeBSD `ip`]
-/// - [NetBSD `getsockopt`]
-/// - [NetBSD `ip`]
-/// - [OpenBSD `getsockopt`]
-/// - [OpenBSD `ip`]
-/// - [DragonFly BSD `getsockopt`]
-/// - [DragonFly BSD `ip`]
-/// - [illumos `getsockopt`]
-/// - [illumos `ip`]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `ip`]: https://man7.org/linux/man-pages/man7/ip.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `IPPROTO_IP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions
#[inline]
#[doc(alias = "IP_MULTICAST_TTL")]
pub fn get_ip_multicast_ttl<Fd: AsFd>(fd: Fd) -> io::Result<u32> {
- backend::net::syscalls::sockopt::get_ip_multicast_ttl(fd.as_fd())
+ backend::net::sockopt::get_ip_multicast_ttl(fd.as_fd())
}
-/// `setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, multicast_loop)`
+/// `setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, value)`
///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `ipv6`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `IPPROTO_IPV6` options]
-/// - [Apple `setsockopt`]
-/// - [Apple `ip6`]
-/// - [FreeBSD `setsockopt`]
-/// - [FreeBSD `ip6`]
-/// - [NetBSD `setsockopt`]
-/// - [NetBSD `ip6`]
-/// - [OpenBSD `setsockopt`]
-/// - [OpenBSD `ip6`]
-/// - [DragonFly BSD `setsockopt`]
-/// - [DragonFly BSD `ip6`]
-/// - [illumos `setsockopt`]
-/// - [illumos `ip6`]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `ipv6`]: https://man7.org/linux/man-pages/man7/ipv6.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_IPV6` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-options
-/// [Apple `setsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setsockopt.2.html
-/// [Apple `ip6`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/ip6.4.auto.html
-/// [FreeBSD `setsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2
-/// [FreeBSD `ip6`]: https://man.freebsd.org/cgi/man.cgi?query=ip6&sektion=4
-/// [NetBSD `setsockopt`]: https://man.netbsd.org/setsockopt.2
-/// [NetBSD `ip6`]: https://man.netbsd.org/ip6.4
-/// [OpenBSD `setsockopt`]: https://man.openbsd.org/setsockopt.2
-/// [OpenBSD `ip6`]: https://man.openbsd.org/ip6.4
-/// [DragonFly BSD `setsockopt`]: https://man.dragonflybsd.org/?command=setsockopt&section=2
-/// [DragonFly BSD `ip6`]: https://man.dragonflybsd.org/?command=ip6&section=4
-/// [illumos `setsockopt`]: https://illumos.org/man/3SOCKET/setsockopt
-/// [illumos `ip6`]: https://illumos.org/man/4P/ip6
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions
#[inline]
#[doc(alias = "IPV6_MULTICAST_LOOP")]
-pub fn set_ipv6_multicast_loop<Fd: AsFd>(fd: Fd, multicast_loop: bool) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_ipv6_multicast_loop(fd.as_fd(), multicast_loop)
+pub fn set_ipv6_multicast_loop<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
+ backend::net::sockopt::set_ipv6_multicast_loop(fd.as_fd(), value)
}
/// `getsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP)`
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `ipv6`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `IPPROTO_IPV6` options]
-/// - [Apple `getsockopt`]
-/// - [Apple `ip6`]
-/// - [FreeBSD `getsockopt`]
-/// - [FreeBSD `ip6`]
-/// - [NetBSD `getsockopt`]
-/// - [NetBSD `ip6`]
-/// - [OpenBSD `getsockopt`]
-/// - [OpenBSD `ip6`]
-/// - [DragonFly BSD `getsockopt`]
-/// - [DragonFly BSD `ip6`]
-/// - [illumos `getsockopt`]
-/// - [illumos `ip6`]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `ipv6`]: https://man7.org/linux/man-pages/man7/ipv6.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `IPPROTO_IPV6` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-options
-/// [Apple `getsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html
-/// [Apple `ip6`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/ip6.4.auto.html
-/// [FreeBSD `getsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
-/// [FreeBSD `ip6`]: https://man.freebsd.org/cgi/man.cgi?query=ip6&sektion=4
-/// [NetBSD `getsockopt`]: https://man.netbsd.org/getsockopt.2
-/// [NetBSD `ip6`]: https://man.netbsd.org/ip6.4
-/// [OpenBSD `getsockopt`]: https://man.openbsd.org/getsockopt.2
-/// [OpenBSD `ip6`]: https://man.openbsd.org/ip6.4
-/// [DragonFly BSD `getsockopt`]: https://man.dragonflybsd.org/?command=getsockopt&section=2
-/// [DragonFly BSD `ip6`]: https://man.dragonflybsd.org/?command=ip6&section=4
-/// [illumos `getsockopt`]: https://illumos.org/man/3SOCKET/getsockopt
-/// [illumos `ip6`]: https://illumos.org/man/4P/ip6
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions
#[inline]
#[doc(alias = "IPV6_MULTICAST_LOOP")]
pub fn get_ipv6_multicast_loop<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
- backend::net::syscalls::sockopt::get_ipv6_multicast_loop(fd.as_fd())
+ backend::net::sockopt::get_ipv6_multicast_loop(fd.as_fd())
}
-/// `setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, multicast_hops)`
+/// `getsockopt(fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS)`
///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `ipv6`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `IPPROTO_IPV6` options]
-/// - [Apple `setsockopt`]
-/// - [Apple `ip6`]
-/// - [FreeBSD `setsockopt`]
-/// - [FreeBSD `ip6`]
-/// - [NetBSD `setsockopt`]
-/// - [NetBSD `ip6`]
-/// - [OpenBSD `setsockopt`]
-/// - [OpenBSD `ip6`]
-/// - [DragonFly BSD `setsockopt`]
-/// - [DragonFly BSD `ip6`]
-/// - [illumos `setsockopt`]
-/// - [illumos `ip6`]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `ipv6`]: https://man7.org/linux/man-pages/man7/ipv6.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_IPV6` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-options
-/// [Apple `setsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setsockopt.2.html
-/// [Apple `ip6`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/ip6.4.auto.html
-/// [FreeBSD `setsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2
-/// [FreeBSD `ip6`]: https://man.freebsd.org/cgi/man.cgi?query=ip6&sektion=4
-/// [NetBSD `setsockopt`]: https://man.netbsd.org/setsockopt.2
-/// [NetBSD `ip6`]: https://man.netbsd.org/ip6.4
-/// [OpenBSD `setsockopt`]: https://man.openbsd.org/setsockopt.2
-/// [OpenBSD `ip6`]: https://man.openbsd.org/ip6.4
-/// [DragonFly BSD `setsockopt`]: https://man.dragonflybsd.org/?command=setsockopt&section=2
-/// [DragonFly BSD `ip6`]: https://man.dragonflybsd.org/?command=ip6&section=4
-/// [illumos `setsockopt`]: https://illumos.org/man/3SOCKET/setsockopt
-/// [illumos `ip6`]: https://illumos.org/man/4P/ip6
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions
#[inline]
-#[doc(alias = "IP_MULTICAST_TTL")]
-pub fn set_ipv6_multicast_hops<Fd: AsFd>(fd: Fd, multicast_hops: u32) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_ipv6_multicast_hops(fd.as_fd(), multicast_hops)
+#[doc(alias = "IPV6_UNICAST_HOPS")]
+pub fn get_ipv6_unicast_hops<Fd: AsFd>(fd: Fd) -> io::Result<u8> {
+ backend::net::sockopt::get_ipv6_unicast_hops(fd.as_fd())
}
-/// `getsockopt(fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS)`
+/// `setsockopt(fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, value)`
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `ipv6`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `IPPROTO_IPV6` options]
-/// - [Apple `getsockopt`]
-/// - [Apple `ip6`]
-/// - [FreeBSD `getsockopt`]
-/// - [FreeBSD `ip6`]
-/// - [NetBSD `getsockopt`]
-/// - [NetBSD `ip6`]
-/// - [OpenBSD `getsockopt`]
-/// - [OpenBSD `ip6`]
-/// - [DragonFly BSD `getsockopt`]
-/// - [DragonFly BSD `ip6`]
-/// - [illumos `getsockopt`]
-/// - [illumos `ip6`]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `ipv6`]: https://man7.org/linux/man-pages/man7/ipv6.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `IPPROTO_IPV6` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-options
-/// [Apple `getsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html
-/// [Apple `ip6`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/ip6.4.auto.html
-/// [FreeBSD `getsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
-/// [FreeBSD `ip6`]: https://man.freebsd.org/cgi/man.cgi?query=ip6&sektion=4
-/// [NetBSD `getsockopt`]: https://man.netbsd.org/getsockopt.2
-/// [NetBSD `ip6`]: https://man.netbsd.org/ip6.4
-/// [OpenBSD `getsockopt`]: https://man.openbsd.org/getsockopt.2
-/// [OpenBSD `ip6`]: https://man.openbsd.org/ip6.4
-/// [DragonFly BSD `getsockopt`]: https://man.dragonflybsd.org/?command=getsockopt&section=2
-/// [DragonFly BSD `ip6`]: https://man.dragonflybsd.org/?command=ip6&section=4
-/// [illumos `getsockopt`]: https://illumos.org/man/3SOCKET/getsockopt
-/// [illumos `ip6`]: https://illumos.org/man/4P/ip6
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions
#[inline]
#[doc(alias = "IPV6_UNICAST_HOPS")]
-pub fn get_ipv6_unicast_hops<Fd: AsFd>(fd: Fd) -> io::Result<u8> {
- backend::net::syscalls::sockopt::get_ipv6_unicast_hops(fd.as_fd())
+pub fn set_ipv6_unicast_hops<Fd: AsFd>(fd: Fd, value: Option<u8>) -> io::Result<()> {
+ backend::net::sockopt::set_ipv6_unicast_hops(fd.as_fd(), value)
}
-/// `setsockopt(fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, unicast_hops)`
+/// `setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, value)`
///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `ipv6`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `IPPROTO_IPV6` options]
-/// - [Apple `setsockopt`]
-/// - [Apple `ip6`]
-/// - [FreeBSD `setsockopt`]
-/// - [FreeBSD `ip6`]
-/// - [NetBSD `setsockopt`]
-/// - [NetBSD `ip6`]
-/// - [OpenBSD `setsockopt`]
-/// - [OpenBSD `ip6`]
-/// - [DragonFly BSD `setsockopt`]
-/// - [DragonFly BSD `ip6`]
-/// - [illumos `setsockopt`]
-/// - [illumos `ip6`]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `ipv6`]: https://man7.org/linux/man-pages/man7/ipv6.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_IPV6` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-options
-/// [Apple `setsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setsockopt.2.html
-/// [Apple `ip6`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/ip6.4.auto.html
-/// [FreeBSD `setsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2
-/// [FreeBSD `ip6`]: https://man.freebsd.org/cgi/man.cgi?query=ip6&sektion=4
-/// [NetBSD `setsockopt`]: https://man.netbsd.org/setsockopt.2
-/// [NetBSD `ip6`]: https://man.netbsd.org/ip6.4
-/// [OpenBSD `setsockopt`]: https://man.openbsd.org/setsockopt.2
-/// [OpenBSD `ip6`]: https://man.openbsd.org/ip6.4
-/// [DragonFly BSD `setsockopt`]: https://man.dragonflybsd.org/?command=setsockopt&section=2
-/// [DragonFly BSD `ip6`]: https://man.dragonflybsd.org/?command=ip6&section=4
-/// [illumos `setsockopt`]: https://illumos.org/man/3SOCKET/setsockopt
-/// [illumos `ip6`]: https://illumos.org/man/4P/ip6
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions
#[inline]
-#[doc(alias = "IPV6_UNICAST_HOPS")]
-pub fn set_ipv6_unicast_hops<Fd: AsFd>(fd: Fd, unicast_hops: Option<u8>) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_ipv6_unicast_hops(fd.as_fd(), unicast_hops)
+#[doc(alias = "IPV6_MULTICAST_HOPS")]
+pub fn set_ipv6_multicast_hops<Fd: AsFd>(fd: Fd, value: u32) -> io::Result<()> {
+ backend::net::sockopt::set_ipv6_multicast_hops(fd.as_fd(), value)
}
/// `getsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_HOPS)`
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `ipv6`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `IPPROTO_IPV6` options]
-/// - [Apple `getsockopt`]
-/// - [Apple `ip6`]
-/// - [FreeBSD `getsockopt`]
-/// - [FreeBSD `ip6`]
-/// - [NetBSD `getsockopt`]
-/// - [NetBSD `ip6`]
-/// - [OpenBSD `getsockopt`]
-/// - [OpenBSD `ip6`]
-/// - [DragonFly BSD `getsockopt`]
-/// - [DragonFly BSD `ip6`]
-/// - [illumos `getsockopt`]
-/// - [illumos `ip6`]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `ipv6`]: https://man7.org/linux/man-pages/man7/ipv6.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `IPPROTO_IPV6` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-options
-/// [Apple `getsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html
-/// [Apple `ip6`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/ip6.4.auto.html
-/// [FreeBSD `getsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
-/// [FreeBSD `ip6`]: https://man.freebsd.org/cgi/man.cgi?query=ip6&sektion=4
-/// [NetBSD `getsockopt`]: https://man.netbsd.org/getsockopt.2
-/// [NetBSD `ip6`]: https://man.netbsd.org/ip6.4
-/// [OpenBSD `getsockopt`]: https://man.openbsd.org/getsockopt.2
-/// [OpenBSD `ip6`]: https://man.openbsd.org/ip6.4
-/// [DragonFly BSD `getsockopt`]: https://man.dragonflybsd.org/?command=getsockopt&section=2
-/// [DragonFly BSD `ip6`]: https://man.dragonflybsd.org/?command=ip6&section=4
-/// [illumos `getsockopt`]: https://illumos.org/man/3SOCKET/getsockopt
-/// [illumos `ip6`]: https://illumos.org/man/4P/ip6
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions
#[inline]
-#[doc(alias = "IP_MULTICAST_TTL")]
+#[doc(alias = "IPV6_MULTICAST_HOPS")]
pub fn get_ipv6_multicast_hops<Fd: AsFd>(fd: Fd) -> io::Result<u32> {
- backend::net::syscalls::sockopt::get_ipv6_multicast_hops(fd.as_fd())
+ backend::net::sockopt::get_ipv6_multicast_hops(fd.as_fd())
}
/// `setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, multiaddr, interface)`
///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `ip`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `IPPROTO_IP` options]
-/// - [Apple `setsockopt`]
-/// - [Apple `ip`]
-/// - [FreeBSD `setsockopt`]
-/// - [FreeBSD `ip`]
-/// - [NetBSD `setsockopt`]
-/// - [NetBSD `ip`]
-/// - [OpenBSD `setsockopt`]
-/// - [OpenBSD `ip`]
-/// - [DragonFly BSD `setsockopt`]
-/// - [DragonFly BSD `ip`]
-/// - [illumos `setsockopt`]
-/// - [illumos `ip`]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `ip`]: https://man7.org/linux/man-pages/man7/ip.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_IP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options
-/// [Apple `setsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setsockopt.2.html
-/// [Apple `ip`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/ip.4.auto.html
-/// [FreeBSD `setsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2
-/// [FreeBSD `ip`]: https://man.freebsd.org/cgi/man.cgi?query=ip&sektion=4
-/// [NetBSD `setsockopt`]: https://man.netbsd.org/setsockopt.2
-/// [NetBSD `ip`]: https://man.netbsd.org/ip.4
-/// [OpenBSD `setsockopt`]: https://man.openbsd.org/setsockopt.2
-/// [OpenBSD `ip`]: https://man.openbsd.org/ip.4
-/// [DragonFly BSD `setsockopt`]: https://man.dragonflybsd.org/?command=setsockopt&section=2
-/// [DragonFly BSD `ip`]: https://man.dragonflybsd.org/?command=ip&section=4
-/// [illumos `setsockopt`]: https://illumos.org/man/3SOCKET/setsockopt
-/// [illumos `ip`]: https://illumos.org/man/4P/ip
+/// This is similar to [`set_ip_add_membership`] but always sets `ifindex`
+/// value to zero.
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions
#[inline]
#[doc(alias = "IP_ADD_MEMBERSHIP")]
pub fn set_ip_add_membership<Fd: AsFd>(
@@ -1514,51 +757,90 @@ pub fn set_ip_add_membership<Fd: AsFd>(
multiaddr: &Ipv4Addr,
interface: &Ipv4Addr,
) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_ip_add_membership(fd.as_fd(), multiaddr, interface)
+ backend::net::sockopt::set_ip_add_membership(fd.as_fd(), multiaddr, interface)
+}
+
+/// `setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, multiaddr, address,
+/// ifindex)`
+///
+/// This is similar to [`set_ip_add_membership_with_ifindex`] but additionally
+/// allows a `ifindex` value to be given.
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions
+#[cfg(any(
+ apple,
+ freebsdlike,
+ linux_like,
+ target_os = "fuchsia",
+ target_os = "openbsd"
+))]
+#[inline]
+#[doc(alias = "IP_ADD_MEMBERSHIP")]
+pub fn set_ip_add_membership_with_ifindex<Fd: AsFd>(
+ fd: Fd,
+ multiaddr: &Ipv4Addr,
+ address: &Ipv4Addr,
+ ifindex: i32,
+) -> io::Result<()> {
+ backend::net::sockopt::set_ip_add_membership_with_ifindex(
+ fd.as_fd(),
+ multiaddr,
+ address,
+ ifindex,
+ )
+}
+
+/// `setsockopt(fd, IPPROTO_IP, IP_ADD_SOURCE_MEMBERSHIP, value)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions
+#[cfg(any(apple, freebsdlike, linux_like, solarish, target_os = "aix"))]
+#[inline]
+#[doc(alias = "IP_ADD_SOURCE_MEMBERSHIP")]
+pub fn set_ip_add_source_membership<Fd: AsFd>(
+ fd: Fd,
+ multiaddr: &Ipv4Addr,
+ interface: &Ipv4Addr,
+ sourceaddr: &Ipv4Addr,
+) -> io::Result<()> {
+ backend::net::sockopt::set_ip_add_source_membership(
+ fd.as_fd(),
+ multiaddr,
+ interface,
+ sourceaddr,
+ )
+}
+
+/// `setsockopt(fd, IPPROTO_IP, IP_DROP_SOURCE_MEMBERSHIP, value)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions
+#[cfg(any(apple, freebsdlike, linux_like, solarish, target_os = "aix"))]
+#[inline]
+#[doc(alias = "IP_DROP_SOURCE_MEMBERSHIP")]
+pub fn set_ip_drop_source_membership<Fd: AsFd>(
+ fd: Fd,
+ multiaddr: &Ipv4Addr,
+ interface: &Ipv4Addr,
+ sourceaddr: &Ipv4Addr,
+) -> io::Result<()> {
+ backend::net::sockopt::set_ip_drop_source_membership(
+ fd.as_fd(),
+ multiaddr,
+ interface,
+ sourceaddr,
+ )
}
/// `setsockopt(fd, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP, multiaddr, interface)`
///
-/// `IPV6_ADD_MEMBERSHIP` is the same as `IPV6_JOIN_GROUP` in POSIX.
+/// See the [module-level documentation] for more.
///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `ipv6`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `IPPROTO_IPV6` options]
-/// - [Apple `setsockopt`]
-/// - [Apple `ip6`]
-/// - [FreeBSD `setsockopt`]
-/// - [FreeBSD `ip6`]
-/// - [NetBSD `setsockopt`]
-/// - [NetBSD `ip6`]
-/// - [OpenBSD `setsockopt`]
-/// - [OpenBSD `ip6`]
-/// - [DragonFly BSD `setsockopt`]
-/// - [DragonFly BSD `ip6`]
-/// - [illumos `setsockopt`]
-/// - [illumos `ip6`]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `ipv6`]: https://man7.org/linux/man-pages/man7/ipv6.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_IPV6` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-options
-/// [Apple `setsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setsockopt.2.html
-/// [Apple `ip6`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/ip6.4.auto.html
-/// [FreeBSD `setsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2
-/// [FreeBSD `ip6`]: https://man.freebsd.org/cgi/man.cgi?query=ip6&sektion=4
-/// [NetBSD `setsockopt`]: https://man.netbsd.org/setsockopt.2
-/// [NetBSD `ip6`]: https://man.netbsd.org/ip6.4
-/// [OpenBSD `setsockopt`]: https://man.openbsd.org/setsockopt.2
-/// [OpenBSD `ip6`]: https://man.openbsd.org/ip6.4
-/// [DragonFly BSD `setsockopt`]: https://man.dragonflybsd.org/?command=setsockopt&section=2
-/// [DragonFly BSD `ip6`]: https://man.dragonflybsd.org/?command=ip6&section=4
-/// [illumos `setsockopt`]: https://illumos.org/man/3SOCKET/setsockopt
-/// [illumos `ip6`]: https://illumos.org/man/4P/ip6
+/// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions
#[inline]
#[doc(alias = "IPV6_JOIN_GROUP")]
#[doc(alias = "IPV6_ADD_MEMBERSHIP")]
@@ -1567,49 +849,17 @@ pub fn set_ipv6_add_membership<Fd: AsFd>(
multiaddr: &Ipv6Addr,
interface: u32,
) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_ipv6_add_membership(fd.as_fd(), multiaddr, interface)
+ backend::net::sockopt::set_ipv6_add_membership(fd.as_fd(), multiaddr, interface)
}
/// `setsockopt(fd, IPPROTO_IP, IP_DROP_MEMBERSHIP, multiaddr, interface)`
///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `ip`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `IPPROTO_IP` options]
-/// - [Apple `setsockopt`]
-/// - [Apple `ip`]
-/// - [FreeBSD `setsockopt`]
-/// - [FreeBSD `ip`]
-/// - [NetBSD `setsockopt`]
-/// - [NetBSD `ip`]
-/// - [OpenBSD `setsockopt`]
-/// - [OpenBSD `ip`]
-/// - [DragonFly BSD `setsockopt`]
-/// - [DragonFly BSD `ip`]
-/// - [illumos `setsockopt`]
-/// - [illumos `ip`]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `ip`]: https://man7.org/linux/man-pages/man7/ip.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_IP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options
-/// [Apple `setsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setsockopt.2.html
-/// [Apple `ip`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/ip.4.auto.html
-/// [FreeBSD `setsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2
-/// [FreeBSD `ip`]: https://man.freebsd.org/cgi/man.cgi?query=ip&sektion=4
-/// [NetBSD `setsockopt`]: https://man.netbsd.org/setsockopt.2
-/// [NetBSD `ip`]: https://man.netbsd.org/ip.4
-/// [OpenBSD `setsockopt`]: https://man.openbsd.org/setsockopt.2
-/// [OpenBSD `ip`]: https://man.openbsd.org/ip.4
-/// [DragonFly BSD `setsockopt`]: https://man.dragonflybsd.org/?command=setsockopt&section=2
-/// [DragonFly BSD `ip`]: https://man.dragonflybsd.org/?command=ip&section=4
-/// [illumos `setsockopt`]: https://illumos.org/man/3SOCKET/setsockopt
-/// [illumos `ip`]: https://illumos.org/man/4P/ip
+/// This is similar to [`set_ip_drop_membership`] but always sets `ifindex`
+/// value to zero.
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions
#[inline]
#[doc(alias = "IP_DROP_MEMBERSHIP")]
pub fn set_ip_drop_membership<Fd: AsFd>(
@@ -1617,51 +867,45 @@ pub fn set_ip_drop_membership<Fd: AsFd>(
multiaddr: &Ipv4Addr,
interface: &Ipv4Addr,
) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_ip_drop_membership(fd.as_fd(), multiaddr, interface)
+ backend::net::sockopt::set_ip_drop_membership(fd.as_fd(), multiaddr, interface)
+}
+
+/// `setsockopt(fd, IPPROTO_IP, IP_DROP_MEMBERSHIP, multiaddr, interface)`
+///
+/// This is similar to [`set_ip_drop_membership_with_ifindex`] but additionally
+/// allows a `ifindex` value to be given.
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions
+#[cfg(any(
+ apple,
+ freebsdlike,
+ linux_like,
+ target_os = "fuchsia",
+ target_os = "openbsd"
+))]
+#[inline]
+#[doc(alias = "IP_DROP_MEMBERSHIP")]
+pub fn set_ip_drop_membership_with_ifindex<Fd: AsFd>(
+ fd: Fd,
+ multiaddr: &Ipv4Addr,
+ address: &Ipv4Addr,
+ ifindex: i32,
+) -> io::Result<()> {
+ backend::net::sockopt::set_ip_drop_membership_with_ifindex(
+ fd.as_fd(),
+ multiaddr,
+ address,
+ ifindex,
+ )
}
/// `setsockopt(fd, IPPROTO_IPV6, IPV6_DROP_MEMBERSHIP, multiaddr, interface)`
///
-/// `IPV6_DROP_MEMBERSHIP` is the same as `IPV6_LEAVE_GROUP` in POSIX.
+/// See the [module-level documentation] for more.
///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `netinet/in.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `ipv6`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `IPPROTO_IPV6` options]
-/// - [Apple `setsockopt`]
-/// - [Apple `ip6`]
-/// - [FreeBSD `setsockopt`]
-/// - [FreeBSD `ip6`]
-/// - [NetBSD `setsockopt`]
-/// - [NetBSD `ip6`]
-/// - [OpenBSD `setsockopt`]
-/// - [OpenBSD `ip6`]
-/// - [DragonFly BSD `setsockopt`]
-/// - [DragonFly BSD `ip6`]
-/// - [illumos `setsockopt`]
-/// - [illumos `ip6`]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `netinet/in.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `ipv6`]: https://man7.org/linux/man-pages/man7/ipv6.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_IPV6` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ipv6-socket-options
-/// [Apple `setsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setsockopt.2.html
-/// [Apple `ip6`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/ip6.4.auto.html
-/// [FreeBSD `setsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2
-/// [FreeBSD `ip6`]: https://man.freebsd.org/cgi/man.cgi?query=ip6&sektion=4
-/// [NetBSD `setsockopt`]: https://man.netbsd.org/setsockopt.2
-/// [NetBSD `ip6`]: https://man.netbsd.org/ip6.4
-/// [OpenBSD `setsockopt`]: https://man.openbsd.org/setsockopt.2
-/// [OpenBSD `ip6`]: https://man.openbsd.org/ip6.4
-/// [DragonFly BSD `setsockopt`]: https://man.dragonflybsd.org/?command=setsockopt&section=2
-/// [DragonFly BSD `ip6`]: https://man.dragonflybsd.org/?command=ip6&section=4
-/// [illumos `setsockopt`]: https://illumos.org/man/3SOCKET/setsockopt
-/// [illumos `ip6`]: https://illumos.org/man/4P/ip6
+/// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions
#[inline]
#[doc(alias = "IPV6_LEAVE_GROUP")]
#[doc(alias = "IPV6_DROP_MEMBERSHIP")]
@@ -1670,361 +914,462 @@ pub fn set_ipv6_drop_membership<Fd: AsFd>(
multiaddr: &Ipv6Addr,
interface: u32,
) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_ipv6_drop_membership(fd.as_fd(), multiaddr, interface)
+ backend::net::sockopt::set_ipv6_drop_membership(fd.as_fd(), multiaddr, interface)
}
-/// `setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, nodelay)`
+/// `setsockopt(fd, IPPROTO_IP, IP_TOS, value)`
///
-/// # References
-/// - [POSIX `setsockopt`]
-/// - [POSIX `netinet/tcp.h`]
-/// - [Linux `setsockopt`]
-/// - [Linux `tcp`]
-/// - [Winsock2 `setsockopt`]
-/// - [Winsock2 `IPPROTO_TCP` options]
-/// - [Apple `setsockopt`]
-/// - [Apple `tcp`]
-/// - [FreeBSD `setsockopt`]
-/// - [FreeBSD `tcp`]
-/// - [NetBSD `setsockopt`]
-/// - [NetBSD `tcp`]
-/// - [OpenBSD `setsockopt`]
-/// - [OpenBSD `tcp`]
-/// - [DragonFly BSD `setsockopt`]
-/// - [DragonFly BSD `tcp`]
-/// - [illumos `setsockopt`]
-/// - [illumos `tcp`]
-///
-/// [POSIX `setsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html
-/// [POSIX `netinet/tcp.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_tcp.h.html
-/// [Linux `setsockopt`]: https://man7.org/linux/man-pages/man2/setsockopt.2.html
-/// [Linux `tcp`]: https://man7.org/linux/man-pages/man7/tcp.7.html
-/// [Winsock2 `setsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-setsockopt
-/// [Winsock2 `IPPROTO_TCP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-tcp-socket-options
-/// [Apple `setsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/setsockopt.2.html
-/// [Apple `tcp`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/tcp.4.auto.html
-/// [FreeBSD `setsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=setsockopt&sektion=2
-/// [FreeBSD `tcp`]: https://man.freebsd.org/cgi/man.cgi?query=tcp&sektion=4
-/// [NetBSD `setsockopt`]: https://man.netbsd.org/setsockopt.2
-/// [NetBSD `tcp`]: https://man.netbsd.org/tcp.4
-/// [OpenBSD `setsockopt`]: https://man.openbsd.org/setsockopt.2
-/// [OpenBSD `tcp`]: https://man.openbsd.org/tcp.4
-/// [DragonFly BSD `setsockopt`]: https://man.dragonflybsd.org/?command=setsockopt&section=2
-/// [DragonFly BSD `tcp`]: https://man.dragonflybsd.org/?command=tcp&section=4
-/// [illumos `setsockopt`]: https://illumos.org/man/3SOCKET/setsockopt
-/// [illumos `tcp`]: https://illumos.org/man/4P/tcp
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions
+#[cfg(any(
+ bsd,
+ linux_like,
+ target_os = "aix",
+ target_os = "fuchsia",
+ target_os = "haiku",
+ target_os = "nto",
+ target_env = "newlib"
+))]
+#[inline]
+#[doc(alias = "IP_TOS")]
+pub fn set_ip_tos<Fd: AsFd>(fd: Fd, value: u8) -> io::Result<()> {
+ backend::net::sockopt::set_ip_tos(fd.as_fd(), value)
+}
+
+/// `getsockopt(fd, IPPROTO_IP, IP_TOS)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions
+#[cfg(any(
+ bsd,
+ linux_like,
+ target_os = "aix",
+ target_os = "fuchsia",
+ target_os = "haiku",
+ target_os = "nto",
+ target_env = "newlib"
+))]
+#[inline]
+#[doc(alias = "IP_TOS")]
+pub fn get_ip_tos<Fd: AsFd>(fd: Fd) -> io::Result<u8> {
+ backend::net::sockopt::get_ip_tos(fd.as_fd())
+}
+
+/// `setsockopt(fd, IPPROTO_IP, IP_RECVTOS, value)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions
+#[cfg(any(apple, linux_like, target_os = "freebsd", target_os = "fuchsia"))]
+#[inline]
+#[doc(alias = "IP_RECVTOS")]
+pub fn set_ip_recvtos<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
+ backend::net::sockopt::set_ip_recvtos(fd.as_fd(), value)
+}
+
+/// `getsockopt(fd, IPPROTO_IP, IP_RECVTOS)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions
+#[cfg(any(apple, linux_like, target_os = "freebsd", target_os = "fuchsia"))]
+#[inline]
+#[doc(alias = "IP_RECVTOS")]
+pub fn get_ip_recvtos<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
+ backend::net::sockopt::get_ip_recvtos(fd.as_fd())
+}
+
+/// `setsockopt(fd, IPPROTO_IPV6, IPV6_RECVTCLASS, value)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions
+#[cfg(any(
+ bsd,
+ linux_like,
+ target_os = "aix",
+ target_os = "fuchsia",
+ target_os = "nto"
+))]
+#[inline]
+#[doc(alias = "IPV6_RECVTCLASS")]
+pub fn set_ipv6_recvtclass<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
+ backend::net::sockopt::set_ipv6_recvtclass(fd.as_fd(), value)
+}
+
+/// `getsockopt(fd, IPPROTO_IPV6, IPV6_RECVTCLASS)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions
+#[cfg(any(
+ bsd,
+ linux_like,
+ target_os = "aix",
+ target_os = "fuchsia",
+ target_os = "nto"
+))]
+#[inline]
+#[doc(alias = "IPV6_RECVTCLASS")]
+pub fn get_ipv6_recvtclass<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
+ backend::net::sockopt::get_ipv6_recvtclass(fd.as_fd())
+}
+
+/// `setsockopt(fd, IPPROTO_IP, IP_FREEBIND, value)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions
+#[cfg(any(linux_kernel, target_os = "fuchsia"))]
+#[inline]
+#[doc(alias = "IP_FREEBIND")]
+pub fn set_ip_freebind<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
+ backend::net::sockopt::set_ip_freebind(fd.as_fd(), value)
+}
+
+/// `getsockopt(fd, IPPROTO_IP, IP_FREEBIND)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions
+#[cfg(any(linux_kernel, target_os = "fuchsia"))]
+#[inline]
+#[doc(alias = "IP_FREEBIND")]
+pub fn get_ip_freebind<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
+ backend::net::sockopt::get_ip_freebind(fd.as_fd())
+}
+
+/// `setsockopt(fd, IPPROTO_IPV6, IPV6_FREEBIND, value)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions
+#[cfg(linux_kernel)]
+#[inline]
+#[doc(alias = "IPV6_FREEBIND")]
+pub fn set_ipv6_freebind<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
+ backend::net::sockopt::set_ipv6_freebind(fd.as_fd(), value)
+}
+
+/// `getsockopt(fd, IPPROTO_IPV6, IPV6_FREEBIND)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions
+#[cfg(linux_kernel)]
+#[inline]
+#[doc(alias = "IPV6_FREEBIND")]
+pub fn get_ipv6_freebind<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
+ backend::net::sockopt::get_ipv6_freebind(fd.as_fd())
+}
+
+/// `getsockopt(fd, IPPROTO_IP, SO_ORIGINAL_DST)`
+///
+/// Even though this corresponnds to a `SO_*` constant, it is an `IPPROTO_IP`
+/// option.
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions
+#[cfg(any(linux_kernel, target_os = "fuchsia"))]
+#[inline]
+#[doc(alias = "SO_ORIGINAL_DST")]
+pub fn get_ip_original_dst<Fd: AsFd>(fd: Fd) -> io::Result<SocketAddrV4> {
+ backend::net::sockopt::get_ip_original_dst(fd.as_fd())
+}
+
+/// `getsockopt(fd, IPPROTO_IPV6, IP6T_SO_ORIGINAL_DST)`
+///
+/// Even though this corresponnds to a `IP6T_*` constant, it is an
+/// `IPPROTO_IPV6` option.
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions
+#[cfg(linux_kernel)]
+#[inline]
+#[doc(alias = "IP6T_SO_ORIGINAL_DST")]
+pub fn get_ipv6_original_dst<Fd: AsFd>(fd: Fd) -> io::Result<SocketAddrV6> {
+ backend::net::sockopt::get_ipv6_original_dst(fd.as_fd())
+}
+
+/// `setsockopt(fd, IPPROTO_IPV6, IPV6_TCLASS, value)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions
+#[cfg(not(any(
+ solarish,
+ windows,
+ target_os = "espidf",
+ target_os = "haiku",
+ target_os = "vita"
+)))]
+#[inline]
+#[doc(alias = "IPV6_TCLASS")]
+pub fn set_ipv6_tclass<Fd: AsFd>(fd: Fd, value: u32) -> io::Result<()> {
+ backend::net::sockopt::set_ipv6_tclass(fd.as_fd(), value)
+}
+
+/// `getsockopt(fd, IPPROTO_IPV6, IPV6_TCLASS)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions
+#[cfg(not(any(
+ solarish,
+ windows,
+ target_os = "espidf",
+ target_os = "haiku",
+ target_os = "vita"
+)))]
+#[inline]
+#[doc(alias = "IPV6_TCLASS")]
+pub fn get_ipv6_tclass<Fd: AsFd>(fd: Fd) -> io::Result<u32> {
+ backend::net::sockopt::get_ipv6_tclass(fd.as_fd())
+}
+
+/// `setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, value)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_tcp_-and-set_tcp_-functions
#[inline]
#[doc(alias = "TCP_NODELAY")]
-pub fn set_tcp_nodelay<Fd: AsFd>(fd: Fd, nodelay: bool) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_tcp_nodelay(fd.as_fd(), nodelay)
+pub fn set_tcp_nodelay<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
+ backend::net::sockopt::set_tcp_nodelay(fd.as_fd(), value)
}
/// `getsockopt(fd, IPPROTO_TCP, TCP_NODELAY)`
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `netinet/tcp.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `tcp`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `IPPROTO_TCP` options]
-/// - [Apple `getsockopt`]
-/// - [Apple `tcp`]
-/// - [FreeBSD `getsockopt`]
-/// - [FreeBSD `tcp`]
-/// - [NetBSD `getsockopt`]
-/// - [NetBSD `tcp`]
-/// - [OpenBSD `getsockopt`]
-/// - [OpenBSD `tcp`]
-/// - [DragonFly BSD `getsockopt`]
-/// - [DragonFly BSD `tcp`]
-/// - [illumos `getsockopt`]
-/// - [illumos `tcp`]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `netinet/tcp.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_tcp.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `tcp`]: https://man7.org/linux/man-pages/man7/tcp.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `IPPROTO_TCP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-tcp-socket-options
-/// [Apple `getsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html
-/// [Apple `tcp`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/tcp.4.auto.html
-/// [FreeBSD `getsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
-/// [FreeBSD `tcp`]: https://man.freebsd.org/cgi/man.cgi?query=tcp&sektion=4
-/// [NetBSD `getsockopt`]: https://man.netbsd.org/getsockopt.2
-/// [NetBSD `tcp`]: https://man.netbsd.org/tcp.4
-/// [OpenBSD `getsockopt`]: https://man.openbsd.org/getsockopt.2
-/// [OpenBSD `tcp`]: https://man.openbsd.org/tcp.4
-/// [DragonFly BSD `getsockopt`]: https://man.dragonflybsd.org/?command=getsockopt&section=2
-/// [DragonFly BSD `tcp`]: https://man.dragonflybsd.org/?command=tcp&section=4
-/// [illumos `getsockopt`]: https://illumos.org/man/3SOCKET/getsockopt
-/// [illumos `tcp`]: https://illumos.org/man/4P/tcp
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_tcp_-and-set_tcp_-functions
#[inline]
#[doc(alias = "TCP_NODELAY")]
pub fn get_tcp_nodelay<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
- backend::net::syscalls::sockopt::get_tcp_nodelay(fd.as_fd())
+ backend::net::sockopt::get_tcp_nodelay(fd.as_fd())
}
-/// `setsockopt(fd, IPPROTO_TCP, TCP_KEEPCNT, count)`
+/// `setsockopt(fd, IPPROTO_TCP, TCP_KEEPCNT, value)`
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `netinet/tcp.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `tcp`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `IPPROTO_TCP` options]
-/// - [Apple `getsockopt`]
-/// - [Apple `tcp`]
-/// - [FreeBSD `getsockopt`]
-/// - [FreeBSD `tcp`]
-/// - [NetBSD `getsockopt`]
-/// - [NetBSD `tcp`]
-/// - [DragonFly BSD `getsockopt`]
-/// - [DragonFly BSD `tcp`]
-/// - [illumos `getsockopt`]
-/// - [illumos `tcp`]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `netinet/tcp.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_tcp.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `tcp`]: https://man7.org/linux/man-pages/man7/tcp.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `IPPROTO_TCP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-tcp-socket-options
-/// [Apple `getsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html
-/// [Apple `tcp`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/tcp.4.auto.html
-/// [FreeBSD `getsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
-/// [FreeBSD `tcp`]: https://man.freebsd.org/cgi/man.cgi?query=tcp&sektion=4
-/// [NetBSD `getsockopt`]: https://man.netbsd.org/getsockopt.2
-/// [NetBSD `tcp`]: https://man.netbsd.org/tcp.4
-/// [DragonFly BSD `getsockopt`]: https://man.dragonflybsd.org/?command=getsockopt&section=2
-/// [DragonFly BSD `tcp`]: https://man.dragonflybsd.org/?command=tcp&section=4
-/// [illumos `getsockopt`]: https://illumos.org/man/3SOCKET/getsockopt
-/// [illumos `tcp`]: https://illumos.org/man/4P/tcp
-#[inline]
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_tcp_-and-set_tcp_-functions
#[cfg(not(any(target_os = "openbsd", target_os = "haiku", target_os = "nto")))]
+#[inline]
#[doc(alias = "TCP_KEEPCNT")]
-pub fn set_tcp_keepcnt<Fd: AsFd>(fd: Fd, count: u32) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_tcp_keepcnt(fd.as_fd(), count)
+pub fn set_tcp_keepcnt<Fd: AsFd>(fd: Fd, value: u32) -> io::Result<()> {
+ backend::net::sockopt::set_tcp_keepcnt(fd.as_fd(), value)
}
/// `getsockopt(fd, IPPROTO_TCP, TCP_KEEPCNT)`
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `netinet/tcp.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `tcp`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `IPPROTO_TCP` options]
-/// - [Apple `getsockopt`]
-/// - [Apple `tcp`]
-/// - [FreeBSD `getsockopt`]
-/// - [FreeBSD `tcp`]
-/// - [NetBSD `getsockopt`]
-/// - [NetBSD `tcp`]
-/// - [DragonFly BSD `getsockopt`]
-/// - [DragonFly BSD `tcp`]
-/// - [illumos `getsockopt`]
-/// - [illumos `tcp`]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `netinet/tcp.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_tcp.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `tcp`]: https://man7.org/linux/man-pages/man7/tcp.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `IPPROTO_TCP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-tcp-socket-options
-/// [Apple `getsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html
-/// [Apple `tcp`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/tcp.4.auto.html
-/// [FreeBSD `getsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
-/// [FreeBSD `tcp`]: https://man.freebsd.org/cgi/man.cgi?query=tcp&sektion=4
-/// [NetBSD `getsockopt`]: https://man.netbsd.org/getsockopt.2
-/// [NetBSD `tcp`]: https://man.netbsd.org/tcp.4
-/// [DragonFly BSD `getsockopt`]: https://man.dragonflybsd.org/?command=getsockopt&section=2
-/// [DragonFly BSD `tcp`]: https://man.dragonflybsd.org/?command=tcp&section=4
-/// [illumos `getsockopt`]: https://illumos.org/man/3SOCKET/getsockopt
-/// [illumos `tcp`]: https://illumos.org/man/4P/tcp
-#[inline]
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_tcp_-and-set_tcp_-functions
#[cfg(not(any(target_os = "openbsd", target_os = "haiku", target_os = "nto")))]
+#[inline]
#[doc(alias = "TCP_KEEPCNT")]
pub fn get_tcp_keepcnt<Fd: AsFd>(fd: Fd) -> io::Result<u32> {
- backend::net::syscalls::sockopt::get_tcp_keepcnt(fd.as_fd())
+ backend::net::sockopt::get_tcp_keepcnt(fd.as_fd())
}
-/// `setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, duration)`
+/// `setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, value)`
///
/// `TCP_KEEPALIVE` on Apple platforms.
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `netinet/tcp.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `tcp`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `IPPROTO_TCP` options]
-/// - [Apple `getsockopt`]
-/// - [Apple `tcp`]
-/// - [FreeBSD `getsockopt`]
-/// - [FreeBSD `tcp`]
-/// - [NetBSD `getsockopt`]
-/// - [NetBSD `tcp`]
-/// - [DragonFly BSD `getsockopt`]
-/// - [DragonFly BSD `tcp`]
-/// - [illumos `getsockopt`]
-/// - [illumos `tcp`]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `netinet/tcp.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_tcp.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `tcp`]: https://man7.org/linux/man-pages/man7/tcp.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `IPPROTO_TCP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-tcp-socket-options
-/// [Apple `getsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html
-/// [Apple `tcp`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/tcp.4.auto.html
-/// [FreeBSD `getsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
-/// [FreeBSD `tcp`]: https://man.freebsd.org/cgi/man.cgi?query=tcp&sektion=4
-/// [NetBSD `getsockopt`]: https://man.netbsd.org/getsockopt.2
-/// [NetBSD `tcp`]: https://man.netbsd.org/tcp.4
-/// [DragonFly BSD `getsockopt`]: https://man.dragonflybsd.org/?command=getsockopt&section=2
-/// [DragonFly BSD `tcp`]: https://man.dragonflybsd.org/?command=tcp&section=4
-/// [illumos `getsockopt`]: https://illumos.org/man/3SOCKET/getsockopt
-/// [illumos `tcp`]: https://illumos.org/man/4P/tcp
-#[inline]
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_tcp_-and-set_tcp_-functions
#[cfg(not(any(target_os = "openbsd", target_os = "haiku", target_os = "nto")))]
+#[inline]
#[doc(alias = "TCP_KEEPIDLE")]
-pub fn set_tcp_keepidle<Fd: AsFd>(fd: Fd, duration: Duration) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_tcp_keepidle(fd.as_fd(), duration)
+pub fn set_tcp_keepidle<Fd: AsFd>(fd: Fd, value: Duration) -> io::Result<()> {
+ backend::net::sockopt::set_tcp_keepidle(fd.as_fd(), value)
}
/// `getsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE)`
///
/// `TCP_KEEPALIVE` on Apple platforms.
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `netinet/tcp.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `tcp`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `IPPROTO_TCP` options]
-/// - [Apple `getsockopt`]
-/// - [Apple `tcp`]
-/// - [FreeBSD `getsockopt`]
-/// - [FreeBSD `tcp`]
-/// - [NetBSD `getsockopt`]
-/// - [NetBSD `tcp`]
-/// - [DragonFly BSD `getsockopt`]
-/// - [DragonFly BSD `tcp`]
-/// - [illumos `getsockopt`]
-/// - [illumos `tcp`]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `netinet/tcp.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_tcp.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `tcp`]: https://man7.org/linux/man-pages/man7/tcp.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `IPPROTO_TCP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-tcp-socket-options
-/// [Apple `getsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html
-/// [Apple `tcp`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/tcp.4.auto.html
-/// [FreeBSD `getsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
-/// [FreeBSD `tcp`]: https://man.freebsd.org/cgi/man.cgi?query=tcp&sektion=4
-/// [NetBSD `getsockopt`]: https://man.netbsd.org/getsockopt.2
-/// [NetBSD `tcp`]: https://man.netbsd.org/tcp.4
-/// [DragonFly BSD `getsockopt`]: https://man.dragonflybsd.org/?command=getsockopt&section=2
-/// [DragonFly BSD `tcp`]: https://man.dragonflybsd.org/?command=tcp&section=4
-/// [illumos `getsockopt`]: https://illumos.org/man/3SOCKET/getsockopt
-/// [illumos `tcp`]: https://illumos.org/man/4P/tcp
-#[inline]
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_tcp_-and-set_tcp_-functions
#[cfg(not(any(target_os = "openbsd", target_os = "haiku", target_os = "nto")))]
+#[inline]
#[doc(alias = "TCP_KEEPIDLE")]
pub fn get_tcp_keepidle<Fd: AsFd>(fd: Fd) -> io::Result<Duration> {
- backend::net::syscalls::sockopt::get_tcp_keepidle(fd.as_fd())
+ backend::net::sockopt::get_tcp_keepidle(fd.as_fd())
}
-/// `setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, duration)`
+/// `setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, value)`
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `netinet/tcp.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `tcp`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `IPPROTO_TCP` options]
-/// - [Apple `getsockopt`]
-/// - [Apple `tcp`]
-/// - [FreeBSD `getsockopt`]
-/// - [FreeBSD `tcp`]
-/// - [NetBSD `getsockopt`]
-/// - [NetBSD `tcp`]
-/// - [DragonFly BSD `getsockopt`]
-/// - [DragonFly BSD `tcp`]
-/// - [illumos `getsockopt`]
-/// - [illumos `tcp`]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `netinet/tcp.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_tcp.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `tcp`]: https://man7.org/linux/man-pages/man7/tcp.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `IPPROTO_TCP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-tcp-socket-options
-/// [Apple `getsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html
-/// [Apple `tcp`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/tcp.4.auto.html
-/// [FreeBSD `getsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
-/// [FreeBSD `tcp`]: https://man.freebsd.org/cgi/man.cgi?query=tcp&sektion=4
-/// [NetBSD `getsockopt`]: https://man.netbsd.org/getsockopt.2
-/// [NetBSD `tcp`]: https://man.netbsd.org/tcp.4
-/// [DragonFly BSD `getsockopt`]: https://man.dragonflybsd.org/?command=getsockopt&section=2
-/// [DragonFly BSD `tcp`]: https://man.dragonflybsd.org/?command=tcp&section=4
-/// [illumos `getsockopt`]: https://illumos.org/man/3SOCKET/getsockopt
-/// [illumos `tcp`]: https://illumos.org/man/4P/tcp
-#[inline]
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_tcp_-and-set_tcp_-functions
#[cfg(not(any(target_os = "openbsd", target_os = "haiku", target_os = "nto")))]
+#[inline]
#[doc(alias = "TCP_KEEPINTVL")]
-pub fn set_tcp_keepintvl<Fd: AsFd>(fd: Fd, duration: Duration) -> io::Result<()> {
- backend::net::syscalls::sockopt::set_tcp_keepintvl(fd.as_fd(), duration)
+pub fn set_tcp_keepintvl<Fd: AsFd>(fd: Fd, value: Duration) -> io::Result<()> {
+ backend::net::sockopt::set_tcp_keepintvl(fd.as_fd(), value)
}
/// `getsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL)`
///
-/// # References
-/// - [POSIX `getsockopt`]
-/// - [POSIX `netinet/tcp.h`]
-/// - [Linux `getsockopt`]
-/// - [Linux `tcp`]
-/// - [Winsock2 `getsockopt`]
-/// - [Winsock2 `IPPROTO_TCP` options]
-/// - [Apple `getsockopt`]
-/// - [Apple `tcp`]
-/// - [FreeBSD `getsockopt`]
-/// - [FreeBSD `tcp`]
-/// - [NetBSD `getsockopt`]
-/// - [NetBSD `tcp`]
-/// - [DragonFly BSD `getsockopt`]
-/// - [DragonFly BSD `tcp`]
-/// - [illumos `getsockopt`]
-/// - [illumos `tcp`]
-///
-/// [POSIX `getsockopt`]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html
-/// [POSIX `netinet/tcp.h`]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_tcp.h.html
-/// [Linux `getsockopt`]: https://man7.org/linux/man-pages/man2/getsockopt.2.html
-/// [Linux `tcp`]: https://man7.org/linux/man-pages/man7/tcp.7.html
-/// [Winsock2 `getsockopt`]: https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-getsockopt
-/// [Winsock2 `IPPROTO_TCP` options]: https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-tcp-socket-options
-/// [Apple `getsockopt`]: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/getsockopt.2.html
-/// [Apple `tcp`]: https://opensource.apple.com/source/xnu/xnu-7195.81.3/bsd/man/man4/tcp.4.auto.html
-/// [FreeBSD `getsockopt`]: https://man.freebsd.org/cgi/man.cgi?query=getsockopt&sektion=2
-/// [FreeBSD `tcp`]: https://man.freebsd.org/cgi/man.cgi?query=tcp&sektion=4
-/// [NetBSD `getsockopt`]: https://man.netbsd.org/getsockopt.2
-/// [NetBSD `tcp`]: https://man.netbsd.org/tcp.4
-/// [DragonFly BSD `getsockopt`]: https://man.dragonflybsd.org/?command=getsockopt&section=2
-/// [DragonFly BSD `tcp`]: https://man.dragonflybsd.org/?command=tcp&section=4
-/// [illumos `getsockopt`]: https://illumos.org/man/3SOCKET/getsockopt
-/// [illumos `tcp`]: https://illumos.org/man/4P/tcp
-#[inline]
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_tcp_-and-set_tcp_-functions
#[cfg(not(any(target_os = "openbsd", target_os = "haiku", target_os = "nto")))]
+#[inline]
#[doc(alias = "TCP_KEEPINTVL")]
pub fn get_tcp_keepintvl<Fd: AsFd>(fd: Fd) -> io::Result<Duration> {
- backend::net::syscalls::sockopt::get_tcp_keepintvl(fd.as_fd())
+ backend::net::sockopt::get_tcp_keepintvl(fd.as_fd())
+}
+
+/// `setsockopt(fd, IPPROTO_TCP, TCP_USER_TIMEOUT, value)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_tcp_-and-set_tcp_-functions
+#[cfg(any(linux_like, target_os = "fuchsia"))]
+#[inline]
+#[doc(alias = "TCP_USER_TIMEOUT")]
+pub fn set_tcp_user_timeout<Fd: AsFd>(fd: Fd, value: u32) -> io::Result<()> {
+ backend::net::sockopt::set_tcp_user_timeout(fd.as_fd(), value)
+}
+
+/// `getsockopt(fd, IPPROTO_TCP, TCP_USER_TIMEOUT)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_tcp_-and-set_tcp_-functions
+#[cfg(any(linux_like, target_os = "fuchsia"))]
+#[inline]
+#[doc(alias = "TCP_USER_TIMEOUT")]
+pub fn get_tcp_user_timeout<Fd: AsFd>(fd: Fd) -> io::Result<u32> {
+ backend::net::sockopt::get_tcp_user_timeout(fd.as_fd())
+}
+
+/// `setsockopt(fd, IPPROTO_TCP, TCP_QUICKACK, value)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_tcp_-and-set_tcp_-functions
+#[cfg(any(linux_like, target_os = "fuchsia"))]
+#[inline]
+#[doc(alias = "TCP_QUICKACK")]
+pub fn set_tcp_quickack<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
+ backend::net::sockopt::set_tcp_quickack(fd.as_fd(), value)
+}
+
+/// `getsockopt(fd, IPPROTO_TCP, TCP_QUICKACK)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_tcp_-and-set_tcp_-functions
+#[cfg(any(linux_like, target_os = "fuchsia"))]
+#[inline]
+#[doc(alias = "TCP_QUICKACK")]
+pub fn get_tcp_quickack<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
+ backend::net::sockopt::get_tcp_quickack(fd.as_fd())
+}
+
+/// `setsockopt(fd, IPPROTO_TCP, TCP_CONGESTION, value)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_tcp_-and-set_tcp_-functions
+#[cfg(any(
+ linux_like,
+ target_os = "freebsd",
+ target_os = "fuchsia",
+ target_os = "illumos"
+))]
+#[inline]
+#[doc(alias = "TCP_CONGESTION")]
+pub fn set_tcp_congestion<Fd: AsFd>(fd: Fd, value: &str) -> io::Result<()> {
+ backend::net::sockopt::set_tcp_congestion(fd.as_fd(), value)
+}
+
+/// `getsockopt(fd, IPPROTO_TCP, TCP_CONGESTION)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_tcp_-and-set_tcp_-functions
+#[cfg(feature = "alloc")]
+#[cfg(any(
+ linux_like,
+ target_os = "freebsd",
+ target_os = "fuchsia",
+ target_os = "illumos"
+))]
+#[inline]
+#[doc(alias = "TCP_CONGESTION")]
+pub fn get_tcp_congestion<Fd: AsFd>(fd: Fd) -> io::Result<String> {
+ backend::net::sockopt::get_tcp_congestion(fd.as_fd())
+}
+
+/// `setsockopt(fd, IPPROTO_TCP, TCP_THIN_LINEAR_TIMEOUTS, value)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_tcp_-and-set_tcp_-functions
+#[cfg(any(linux_like, target_os = "fuchsia"))]
+#[inline]
+#[doc(alias = "TCP_THIN_LINEAR_TIMEOUTS")]
+pub fn set_tcp_thin_linear_timeouts<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
+ backend::net::sockopt::set_tcp_thin_linear_timeouts(fd.as_fd(), value)
+}
+
+/// `getsockopt(fd, IPPROTO_TCP, TCP_THIN_LINEAR_TIMEOUTS)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_tcp_-and-set_tcp_-functions
+#[cfg(any(linux_like, target_os = "fuchsia"))]
+#[inline]
+#[doc(alias = "TCP_THIN_LINEAR_TIMEOUTS")]
+pub fn get_tcp_thin_linear_timeouts<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
+ backend::net::sockopt::get_tcp_thin_linear_timeouts(fd.as_fd())
+}
+
+/// `setsockopt(fd, IPPROTO_TCP, TCP_CORK, value)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_tcp_-and-set_tcp_-functions
+#[cfg(any(linux_like, solarish, target_os = "fuchsia"))]
+#[inline]
+#[doc(alias = "TCP_CORK")]
+pub fn set_tcp_cork<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
+ backend::net::sockopt::set_tcp_cork(fd.as_fd(), value)
+}
+
+/// `getsockopt(fd, IPPROTO_TCP, TCP_CORK)`
+///
+/// See the [module-level documentation] for more.
+///
+/// [module-level documentation]: self#references-for-get_tcp_-and-set_tcp_-functions
+#[cfg(any(linux_like, solarish, target_os = "fuchsia"))]
+#[inline]
+#[doc(alias = "TCP_CORK")]
+pub fn get_tcp_cork<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
+ backend::net::sockopt::get_tcp_cork(fd.as_fd())
+}
+
+/// Get credentials of Unix domain socket peer process
+///
+/// # References
+/// - [Linux `unix`]
+///
+/// [Linux `unix`]: https://man7.org/linux/man-pages/man7/unix.7.html
+#[cfg(linux_kernel)]
+#[doc(alias = "SO_PEERCRED")]
+pub fn get_socket_peercred<Fd: AsFd>(fd: Fd) -> io::Result<super::UCred> {
+ backend::net::sockopt::get_socket_peercred(fd.as_fd())
}
#[test]
diff --git a/vendor/rustix/src/net/types.rs b/vendor/rustix/src/net/types.rs
index 53116f9c8..711174354 100644
--- a/vendor/rustix/src/net/types.rs
+++ b/vendor/rustix/src/net/types.rs
@@ -92,6 +92,7 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const NETLINK: Self = Self(c::AF_NETLINK as _);
/// `AF_UNIX`, aka `AF_LOCAL`
@@ -106,16 +107,18 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const AX25: Self = Self(c::AF_AX25 as _);
/// `AF_IPX`
#[cfg(not(any(
- target_os = "espidf",
target_os = "aix",
+ target_os = "espidf",
+ target_os = "vita",
)))]
pub const IPX: Self = Self(c::AF_IPX as _);
/// `AF_APPLETALK`
- #[cfg(not(target_os = "espidf"))]
+ #[cfg(not(any(target_os = "espidf", target_os = "vita")))]
pub const APPLETALK: Self = Self(c::AF_APPLETALK as _);
/// `AF_NETROM`
#[cfg(not(any(
@@ -126,6 +129,7 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const NETROM: Self = Self(c::AF_NETROM as _);
/// `AF_BRIDGE`
@@ -137,6 +141,7 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const BRIDGE: Self = Self(c::AF_BRIDGE as _);
/// `AF_ATMPVC`
@@ -148,6 +153,7 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const ATMPVC: Self = Self(c::AF_ATMPVC as _);
/// `AF_X25`
@@ -158,6 +164,7 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const X25: Self = Self(c::AF_X25 as _);
/// `AF_ROSE`
@@ -169,10 +176,11 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const ROSE: Self = Self(c::AF_ROSE as _);
/// `AF_DECnet`
- #[cfg(not(any(target_os = "espidf", target_os = "haiku")))]
+ #[cfg(not(any(target_os = "espidf", target_os = "haiku", target_os = "vita")))]
pub const DECnet: Self = Self(c::AF_DECnet as _);
/// `AF_NETBEUI`
#[cfg(not(any(
@@ -183,6 +191,7 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const NETBEUI: Self = Self(c::AF_NETBEUI as _);
/// `AF_SECURITY`
@@ -194,6 +203,7 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const SECURITY: Self = Self(c::AF_SECURITY as _);
/// `AF_KEY`
@@ -204,6 +214,7 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const KEY: Self = Self(c::AF_KEY as _);
/// `AF_PACKET`
@@ -219,6 +230,7 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const PACKET: Self = Self(c::AF_PACKET as _);
/// `AF_ASH`
@@ -230,6 +242,7 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const ASH: Self = Self(c::AF_ASH as _);
/// `AF_ECONET`
@@ -241,6 +254,7 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const ECONET: Self = Self(c::AF_ECONET as _);
/// `AF_ATMSVC`
@@ -252,6 +266,7 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const ATMSVC: Self = Self(c::AF_ATMSVC as _);
/// `AF_RDS`
@@ -263,10 +278,11 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const RDS: Self = Self(c::AF_RDS as _);
/// `AF_SNA`
- #[cfg(not(any(target_os = "espidf", target_os = "haiku")))]
+ #[cfg(not(any(target_os = "espidf", target_os = "haiku", target_os = "vita")))]
pub const SNA: Self = Self(c::AF_SNA as _);
/// `AF_IRDA`
#[cfg(not(any(
@@ -276,6 +292,7 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const IRDA: Self = Self(c::AF_IRDA as _);
/// `AF_PPPOX`
@@ -287,6 +304,7 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const PPPOX: Self = Self(c::AF_PPPOX as _);
/// `AF_WANPIPE`
@@ -298,6 +316,7 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const WANPIPE: Self = Self(c::AF_WANPIPE as _);
/// `AF_LLC`
@@ -309,6 +328,7 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const LLC: Self = Self(c::AF_LLC as _);
/// `AF_CAN`
@@ -320,6 +340,7 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const CAN: Self = Self(c::AF_CAN as _);
/// `AF_TIPC`
@@ -331,6 +352,7 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const TIPC: Self = Self(c::AF_TIPC as _);
/// `AF_BLUETOOTH`
@@ -340,6 +362,7 @@ impl AddressFamily {
windows,
target_os = "aix",
target_os = "espidf",
+ target_os = "vita",
)))]
pub const BLUETOOTH: Self = Self(c::AF_BLUETOOTH as _);
/// `AF_IUCV`
@@ -351,6 +374,7 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const IUCV: Self = Self(c::AF_IUCV as _);
/// `AF_RXRPC`
@@ -362,6 +386,7 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const RXRPC: Self = Self(c::AF_RXRPC as _);
/// `AF_ISDN`
@@ -371,6 +396,7 @@ impl AddressFamily {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "vita",
)))]
pub const ISDN: Self = Self(c::AF_ISDN as _);
/// `AF_PHONET`
@@ -382,6 +408,7 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const PHONET: Self = Self(c::AF_PHONET as _);
/// `AF_IEEE802154`
@@ -393,6 +420,7 @@ impl AddressFamily {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const IEEE802154: Self = Self(c::AF_IEEE802154 as _);
/// `AF_802`
@@ -610,26 +638,58 @@ pub mod ipproto {
/// `IPPROTO_ICMP`
pub const ICMP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_ICMP as _));
/// `IPPROTO_IGMP`
- #[cfg(not(any(solarish, target_os = "espidf", target_os = "haiku")))]
+ #[cfg(not(any(
+ solarish,
+ target_os = "espidf",
+ target_os = "haiku",
+ target_os = "vita"
+ )))]
pub const IGMP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_IGMP as _));
/// `IPPROTO_IPIP`
- #[cfg(not(any(solarish, windows, target_os = "espidf", target_os = "haiku")))]
+ #[cfg(not(any(
+ solarish,
+ windows,
+ target_os = "espidf",
+ target_os = "haiku",
+ target_os = "vita"
+ )))]
pub const IPIP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_IPIP as _));
/// `IPPROTO_TCP`
pub const TCP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_TCP as _));
/// `IPPROTO_EGP`
- #[cfg(not(any(solarish, target_os = "espidf", target_os = "haiku")))]
+ #[cfg(not(any(
+ solarish,
+ target_os = "espidf",
+ target_os = "haiku",
+ target_os = "vita"
+ )))]
pub const EGP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_EGP as _));
/// `IPPROTO_PUP`
- #[cfg(not(any(solarish, target_os = "espidf", target_os = "haiku")))]
+ #[cfg(not(any(
+ solarish,
+ target_os = "espidf",
+ target_os = "haiku",
+ target_os = "vita"
+ )))]
pub const PUP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_PUP as _));
/// `IPPROTO_UDP`
pub const UDP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_UDP as _));
/// `IPPROTO_IDP`
- #[cfg(not(any(solarish, target_os = "espidf", target_os = "haiku")))]
+ #[cfg(not(any(
+ solarish,
+ target_os = "espidf",
+ target_os = "haiku",
+ target_os = "vita"
+ )))]
pub const IDP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_IDP as _));
/// `IPPROTO_TP`
- #[cfg(not(any(solarish, windows, target_os = "espidf", target_os = "haiku")))]
+ #[cfg(not(any(
+ solarish,
+ windows,
+ target_os = "espidf",
+ target_os = "haiku",
+ target_os = "vita"
+ )))]
pub const TP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_TP as _));
/// `IPPROTO_DCCP`
#[cfg(not(any(
@@ -642,21 +702,44 @@ pub mod ipproto {
target_os = "haiku",
target_os = "nto",
target_os = "openbsd",
+ target_os = "vita",
)))]
pub const DCCP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_DCCP as _));
/// `IPPROTO_IPV6`
pub const IPV6: Protocol = Protocol(new_raw_protocol(c::IPPROTO_IPV6 as _));
/// `IPPROTO_RSVP`
- #[cfg(not(any(solarish, windows, target_os = "espidf", target_os = "haiku")))]
+ #[cfg(not(any(
+ solarish,
+ windows,
+ target_os = "espidf",
+ target_os = "haiku",
+ target_os = "vita"
+ )))]
pub const RSVP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_RSVP as _));
/// `IPPROTO_GRE`
- #[cfg(not(any(solarish, windows, target_os = "espidf", target_os = "haiku")))]
+ #[cfg(not(any(
+ solarish,
+ windows,
+ target_os = "espidf",
+ target_os = "haiku",
+ target_os = "vita"
+ )))]
pub const GRE: Protocol = Protocol(new_raw_protocol(c::IPPROTO_GRE as _));
/// `IPPROTO_ESP`
- #[cfg(not(any(solarish, target_os = "espidf", target_os = "haiku")))]
+ #[cfg(not(any(
+ solarish,
+ target_os = "espidf",
+ target_os = "haiku",
+ target_os = "vita"
+ )))]
pub const ESP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_ESP as _));
/// `IPPROTO_AH`
- #[cfg(not(any(solarish, target_os = "espidf", target_os = "haiku")))]
+ #[cfg(not(any(
+ solarish,
+ target_os = "espidf",
+ target_os = "haiku",
+ target_os = "vita"
+ )))]
pub const AH: Protocol = Protocol(new_raw_protocol(c::IPPROTO_AH as _));
/// `IPPROTO_MTP`
#[cfg(not(any(
@@ -667,6 +750,7 @@ pub mod ipproto {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const MTP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_MTP as _));
/// `IPPROTO_BEETPH`
@@ -677,7 +761,8 @@ pub mod ipproto {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
- target_os = "nto"
+ target_os = "nto",
+ target_os = "vita",
)))]
pub const BEETPH: Protocol = Protocol(new_raw_protocol(c::IPPROTO_BEETPH as _));
/// `IPPROTO_ENCAP`
@@ -687,10 +772,17 @@ pub mod ipproto {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
+ target_os = "vita",
)))]
pub const ENCAP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_ENCAP as _));
/// `IPPROTO_PIM`
- #[cfg(not(any(solarish, target_os = "aix", target_os = "espidf", target_os = "haiku")))]
+ #[cfg(not(any(
+ solarish,
+ target_os = "aix",
+ target_os = "espidf",
+ target_os = "haiku",
+ target_os = "vita"
+ )))]
pub const PIM: Protocol = Protocol(new_raw_protocol(c::IPPROTO_PIM as _));
/// `IPPROTO_COMP`
#[cfg(not(any(
@@ -700,7 +792,8 @@ pub mod ipproto {
target_os = "aix",
target_os = "espidf",
target_os = "haiku",
- target_os = "nto"
+ target_os = "nto",
+ target_os = "vita",
)))]
pub const COMP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_COMP as _));
/// `IPPROTO_SCTP`
@@ -709,7 +802,8 @@ pub mod ipproto {
target_os = "dragonfly",
target_os = "espidf",
target_os = "haiku",
- target_os = "openbsd"
+ target_os = "openbsd",
+ target_os = "vita",
)))]
pub const SCTP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_SCTP as _));
/// `IPPROTO_UDPLITE`
@@ -723,6 +817,7 @@ pub mod ipproto {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const UDPLITE: Protocol = Protocol(new_raw_protocol(c::IPPROTO_UDPLITE as _));
/// `IPPROTO_MPLS`
@@ -736,13 +831,14 @@ pub mod ipproto {
target_os = "haiku",
target_os = "netbsd",
target_os = "nto",
+ target_os = "vita",
)))]
pub const MPLS: Protocol = Protocol(new_raw_protocol(c::IPPROTO_MPLS as _));
/// `IPPROTO_ETHERNET`
#[cfg(linux_kernel)]
pub const ETHERNET: Protocol = Protocol(new_raw_protocol(c::IPPROTO_ETHERNET as _));
/// `IPPROTO_RAW`
- #[cfg(not(target_os = "espidf"))]
+ #[cfg(not(any(target_os = "espidf", target_os = "vita")))]
pub const RAW: Protocol = Protocol(new_raw_protocol(c::IPPROTO_RAW as _));
/// `IPPROTO_MPTCP`
#[cfg(not(any(
@@ -755,10 +851,16 @@ pub mod ipproto {
target_os = "fuchsia",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const MPTCP: Protocol = Protocol(new_raw_protocol(c::IPPROTO_MPTCP as _));
/// `IPPROTO_FRAGMENT`
- #[cfg(not(any(solarish, target_os = "espidf", target_os = "haiku")))]
+ #[cfg(not(any(
+ solarish,
+ target_os = "espidf",
+ target_os = "haiku",
+ target_os = "vita"
+ )))]
pub const FRAGMENT: Protocol = Protocol(new_raw_protocol(c::IPPROTO_FRAGMENT as _));
/// `IPPROTO_ICMPV6`
pub const ICMPV6: Protocol = Protocol(new_raw_protocol(c::IPPROTO_ICMPV6 as _));
@@ -772,10 +874,16 @@ pub mod ipproto {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
pub const MH: Protocol = Protocol(new_raw_protocol(c::IPPROTO_MH as _));
/// `IPPROTO_ROUTING`
- #[cfg(not(any(solarish, target_os = "espidf", target_os = "haiku")))]
+ #[cfg(not(any(
+ solarish,
+ target_os = "espidf",
+ target_os = "haiku",
+ target_os = "vita"
+ )))]
pub const ROUTING: Protocol = Protocol(new_raw_protocol(c::IPPROTO_ROUTING as _));
}
@@ -1323,6 +1431,7 @@ bitflags! {
target_os = "espidf",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
)))]
const NONBLOCK = bitcast!(c::SOCK_NONBLOCK);
@@ -1336,6 +1445,25 @@ bitflags! {
}
}
+/// UNIX credentials of socket peer, for use with [`get_socket_peercred`]
+/// [`SendAncillaryMessage::ScmCredentials`] and
+/// [`RecvAncillaryMessage::ScmCredentials`].
+///
+/// [`get_socket_peercred`]: crate::net::sockopt::get_socket_peercred
+/// [`SendAncillaryMessage::ScmCredentials`]: crate::net::SendAncillaryMessage::ScmCredentials
+/// [`RecvAncillaryMessage::ScmCredentials`]: crate::net::RecvAncillaryMessage::ScmCredentials
+#[cfg(linux_kernel)]
+#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
+#[repr(C)]
+pub struct UCred {
+ /// Process ID of peer
+ pub pid: crate::pid::Pid,
+ /// User ID of peer
+ pub uid: crate::ugid::Uid,
+ /// Group ID of peer
+ pub gid: crate::ugid::Gid,
+}
+
#[test]
fn test_sizes() {
use c::c_int;
@@ -1361,4 +1489,7 @@ fn test_sizes() {
let t: Option<Protocol> = Some(Protocol::from_raw(RawProtocol::new(4567).unwrap()));
assert_eq!(4567_u32, transmute::<Option<Protocol>, u32>(t));
}
+
+ #[cfg(linux_kernel)]
+ assert_eq_size!(UCred, libc::ucred);
}
diff --git a/vendor/rustix/src/param/auxv.rs b/vendor/rustix/src/param/auxv.rs
index 03be2a29d..19f93dc04 100644
--- a/vendor/rustix/src/param/auxv.rs
+++ b/vendor/rustix/src/param/auxv.rs
@@ -1,12 +1,9 @@
use crate::backend;
#[cfg(any(
linux_raw,
- all(
- libc,
- any(
- all(target_os = "android", target_pointer_width = "64"),
- target_os = "linux",
- )
+ any(
+ all(target_os = "android", target_pointer_width = "64"),
+ target_os = "linux",
)
))]
use crate::ffi::CStr;
@@ -39,7 +36,7 @@ pub fn page_size() -> usize {
///
/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/sysconf.html
/// [Linux]: https://man7.org/linux/man-pages/man3/sysconf.3.html
-#[cfg(not(target_os = "wasi"))]
+#[cfg(not(any(target_os = "vita", target_os = "wasi")))]
#[inline]
#[doc(alias = "_SC_CLK_TCK")]
pub fn clock_ticks_per_second() -> u64 {
@@ -58,12 +55,9 @@ pub fn clock_ticks_per_second() -> u64 {
/// [Linux]: https://man7.org/linux/man-pages/man3/getauxval.3.html
#[cfg(any(
linux_raw,
- all(
- libc,
- any(
- all(target_os = "android", target_pointer_width = "64"),
- target_os = "linux",
- )
+ any(
+ all(target_os = "android", target_pointer_width = "64"),
+ target_os = "linux",
)
))]
#[inline]
@@ -82,12 +76,9 @@ pub fn linux_hwcap() -> (usize, usize) {
/// [Linux]: https://man7.org/linux/man-pages/man3/getauxval.3.html
#[cfg(any(
linux_raw,
- all(
- libc,
- any(
- all(target_os = "android", target_pointer_width = "64"),
- target_os = "linux",
- )
+ any(
+ all(target_os = "android", target_pointer_width = "64"),
+ target_os = "linux",
)
))]
#[inline]
diff --git a/vendor/rustix/src/path/arg.rs b/vendor/rustix/src/path/arg.rs
index 3b0ad91ae..4a4c8b30f 100644
--- a/vendor/rustix/src/path/arg.rs
+++ b/vendor/rustix/src/path/arg.rs
@@ -36,7 +36,7 @@ use {alloc::string::String, alloc::vec::Vec};
/// This is similar to [`AsRef`]`<`[`Path`]`>`, but is implemented for more
/// kinds of strings and can convert into more kinds of strings.
///
-/// # Example
+/// # Examples
///
/// ```
/// # #[cfg(any(feature = "fs", feature = "net"))]
@@ -1039,7 +1039,7 @@ where
buf_ptr.add(bytes.len()).write(0);
}
- // SAFETY: we just wrote the bytes above and they will remain valid for the
+ // SAFETY: We just wrote the bytes above and they will remain valid for the
// duration of `f` b/c buf doesn't get dropped until the end of the
// function.
match CStr::from_bytes_with_nul(unsafe { slice::from_raw_parts(buf_ptr, bytes.len() + 1) }) {
@@ -1078,15 +1078,15 @@ where
return Err(io::Errno::NAMETOOLONG);
}
- // SAFETY: `bytes.len() < LARGE_PATH_BUFFER_SIZE` which means we have space
- // for `bytes.len() + 1` u8s:
+ // SAFETY: `bytes.len() < LARGE_PATH_BUFFER_SIZE` which means we have
+ // space for `bytes.len() + 1` u8s:
unsafe {
ptr::copy_nonoverlapping(bytes.as_ptr(), buf_ptr, bytes.len());
buf_ptr.add(bytes.len()).write(0);
}
- // SAFETY: we just wrote the bytes above and they will remain valid for the
- // duration of `f` b/c buf doesn't get dropped until the end of the
+ // SAFETY: We just wrote the bytes above and they will remain valid for
+ // the duration of `f` b/c buf doesn't get dropped until the end of the
// function.
match CStr::from_bytes_with_nul(unsafe { slice::from_raw_parts(buf_ptr, bytes.len() + 1) })
{
diff --git a/vendor/rustix/src/path/dec_int.rs b/vendor/rustix/src/path/dec_int.rs
index 04c97d406..e9c46f49a 100644
--- a/vendor/rustix/src/path/dec_int.rs
+++ b/vendor/rustix/src/path/dec_int.rs
@@ -22,7 +22,7 @@ use {core::fmt, std::ffi::OsStr, std::path::Path};
///
/// This is used for opening paths such as `/proc/self/fd/<fd>` on Linux.
///
-/// # Example
+/// # Examples
///
/// ```
/// # #[cfg(any(feature = "fs", feature = "net"))]
diff --git a/vendor/rustix/src/pid.rs b/vendor/rustix/src/pid.rs
index 3911e4c7a..5f2b9ad2a 100644
--- a/vendor/rustix/src/pid.rs
+++ b/vendor/rustix/src/pid.rs
@@ -26,8 +26,7 @@ impl Pid {
/// Converts a `RawPid` into a `Pid`.
///
- /// Returns `Some` for strictly positive `RawPid`s. Otherwise, returns
- /// `None`.
+ /// Returns `Some` for positive `RawPid`s. Otherwise, returns `None`.
///
/// This is safe because a `Pid` is a number without any guarantees for the
/// kernel. Non-child `Pid`s are always racy for any syscalls, but can only
@@ -39,18 +38,18 @@ impl Pid {
#[inline]
pub const fn from_raw(raw: RawPid) -> Option<Self> {
if raw > 0 {
- // SAFETY: raw > 0.
+ // SAFETY: We just checked that `raw > 0`.
unsafe { Some(Self::from_raw_unchecked(raw)) }
} else {
None
}
}
- /// Converts a known strictly positive `RawPid` into a `Pid`.
+ /// Converts a known positive `RawPid` into a `Pid`.
///
/// # Safety
///
- /// The caller must guarantee `raw` is strictly positive.
+ /// The caller must guarantee `raw` is positive.
#[inline]
pub const unsafe fn from_raw_unchecked(raw: RawPid) -> Self {
debug_assert!(raw > 0);
diff --git a/vendor/rustix/src/pipe.rs b/vendor/rustix/src/pipe.rs
index 2a45b7a9d..5f0175c85 100644
--- a/vendor/rustix/src/pipe.rs
+++ b/vendor/rustix/src/pipe.rs
@@ -14,6 +14,7 @@ use crate::{backend, io};
target_os = "espidf",
target_os = "haiku",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi",
)))]
use backend::c;
@@ -39,7 +40,9 @@ pub use backend::pipe::types::{IoSliceRaw, SpliceFlags};
windows,
target_os = "espidf",
target_os = "haiku",
+ target_os = "hurd",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi",
)))]
pub const PIPE_BUF: usize = c::PIPE_BUF;
@@ -153,9 +156,9 @@ pub fn splice<FdIn: AsFd, FdOut: AsFd>(
/// the pipe is placed in `fd`.
///
/// Additionally if `SpliceFlags::GIFT` is set, the caller must also ensure
-/// that the contents of `bufs` in never modified following the call,
-/// and that all of the pointers in `bufs` are page aligned,
-/// and the lengths are multiples of a page size in bytes.
+/// that the contents of `bufs` in never modified following the call, and that
+/// all of the pointers in `bufs` are page aligned, and the lengths are
+/// multiples of a page size in bytes.
///
/// # References
/// - [Linux]
diff --git a/vendor/rustix/src/prctl.rs b/vendor/rustix/src/prctl.rs
index 6aedf3018..0ea83031b 100644
--- a/vendor/rustix/src/prctl.rs
+++ b/vendor/rustix/src/prctl.rs
@@ -26,7 +26,7 @@ bitflags! {
/// `PR_PAC_APGAKEY`—Generic authentication `A` key.
const GENERIC_AUTHENTICATION_KEY_A = linux_raw_sys::prctl::PR_PAC_APGAKEY;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/process/chdir.rs b/vendor/rustix/src/process/chdir.rs
index b110afef8..a68352f0e 100644
--- a/vendor/rustix/src/process/chdir.rs
+++ b/vendor/rustix/src/process/chdir.rs
@@ -67,15 +67,18 @@ fn _getcwd(mut buffer: Vec<u8>) -> io::Result<CString> {
loop {
match backend::process::syscalls::getcwd(buffer.spare_capacity_mut()) {
Err(io::Errno::RANGE) => {
- buffer.reserve(buffer.capacity() + 1); // use `Vec` reallocation strategy to grow capacity exponentially
+ // Use `Vec` reallocation strategy to grow capacity
+ // exponentially.
+ buffer.reserve(buffer.capacity() + 1);
}
Ok(_) => {
// SAFETY:
// - "These functions return a null-terminated string"
- // - [POSIX definition 3.375: String]: "A contiguous sequence of bytes
- // terminated by and including the first null byte."
+ // - [POSIX definition 3.375: String]: "A contiguous sequence
+ // of bytes terminated by and including the first null byte."
//
- // Thus, there will be a single NUL byte at the end of the string.
+ // Thus, there will be a single NUL byte at the end of the
+ // string.
//
// [POSIX definition 3.375: String]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_375
unsafe {
diff --git a/vendor/rustix/src/process/id.rs b/vendor/rustix/src/process/id.rs
index 4ed33a6c8..1a49dc539 100644
--- a/vendor/rustix/src/process/id.rs
+++ b/vendor/rustix/src/process/id.rs
@@ -225,7 +225,8 @@ pub fn getgroups() -> io::Result<Vec<Gid>> {
buffer.resize(ngroups, Gid::ROOT);
return Ok(buffer);
}
- buffer.reserve(1); // use `Vec` reallocation strategy to grow capacity exponentially
+ // Use `Vec` reallocation strategy to grow capacity exponentially.
+ buffer.reserve(1);
buffer.resize(buffer.capacity(), Gid::ROOT);
}
}
diff --git a/vendor/rustix/src/process/ioctl.rs b/vendor/rustix/src/process/ioctl.rs
index 3c9d90255..5afc76609 100644
--- a/vendor/rustix/src/process/ioctl.rs
+++ b/vendor/rustix/src/process/ioctl.rs
@@ -10,7 +10,7 @@ use crate::{backend, io, ioctl};
use backend::c;
use backend::fd::AsFd;
-/// `ioctl(fd, TIOCSCTTY, 0)`—Sets the controlling terminal for the processs.
+/// `ioctl(fd, TIOCSCTTY, 0)`—Sets the controlling terminal for the process.
///
/// # References
/// - [Linux]
diff --git a/vendor/rustix/src/process/kill.rs b/vendor/rustix/src/process/kill.rs
index 5f6f06c48..01d5380f8 100644
--- a/vendor/rustix/src/process/kill.rs
+++ b/vendor/rustix/src/process/kill.rs
@@ -19,8 +19,8 @@ pub fn kill_process(pid: Pid, sig: Signal) -> io::Result<()> {
/// `kill(-pid, sig)`—Sends a signal to all processes in a process group.
///
-/// If `pid` is 1, this sends a signal to all processes the current process
-/// has permission to send signals to, except process `1`, possibly other
+/// If `pid` is 1, this sends a signal to all processes the current process has
+/// permission to send signals to, except process `1`, possibly other
/// system-specific processes, and on some systems, the current process.
///
/// # References
diff --git a/vendor/rustix/src/process/membarrier.rs b/vendor/rustix/src/process/membarrier.rs
index 9c42bbd85..26be07dd9 100644
--- a/vendor/rustix/src/process/membarrier.rs
+++ b/vendor/rustix/src/process/membarrier.rs
@@ -35,7 +35,7 @@ bitflags::bitflags! {
/// `MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ` (since Linux 5.10)
const REGISTER_PRIVATE_EXPEDITED_RSEQ = MembarrierCommand::RegisterPrivateExpeditedRseq as _;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/process/mod.rs b/vendor/rustix/src/process/mod.rs
index 55eed1ac8..195216c3a 100644
--- a/vendor/rustix/src/process/mod.rs
+++ b/vendor/rustix/src/process/mod.rs
@@ -7,7 +7,7 @@ mod chroot;
mod exit;
#[cfg(not(target_os = "wasi"))] // WASI doesn't have get[gpu]id.
mod id;
-#[cfg(not(any(target_os = "aix", target_os = "espidf")))]
+#[cfg(not(any(target_os = "aix", target_os = "espidf", target_os = "vita")))]
mod ioctl;
#[cfg(not(any(target_os = "espidf", target_os = "wasi")))]
mod kill;
@@ -19,7 +19,8 @@ mod pidfd;
mod pidfd_getfd;
#[cfg(linux_kernel)]
mod prctl;
-#[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))] // WASI doesn't have [gs]etpriority.
+#[cfg(not(any(target_os = "fuchsia", target_os = "vita", target_os = "wasi")))]
+// WASI doesn't have [gs]etpriority.
mod priority;
#[cfg(freebsdlike)]
mod procctl;
@@ -27,6 +28,7 @@ mod procctl;
target_os = "espidf",
target_os = "fuchsia",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi"
)))]
mod rlimit;
@@ -35,7 +37,7 @@ mod sched;
mod sched_yield;
#[cfg(not(target_os = "wasi"))] // WASI doesn't have umask.
mod umask;
-#[cfg(not(any(target_os = "espidf", target_os = "wasi")))]
+#[cfg(not(any(target_os = "espidf", target_os = "vita", target_os = "wasi")))]
mod wait;
#[cfg(not(target_os = "wasi"))]
@@ -45,7 +47,7 @@ pub use chroot::*;
pub use exit::*;
#[cfg(not(target_os = "wasi"))]
pub use id::*;
-#[cfg(not(any(target_os = "aix", target_os = "espidf")))]
+#[cfg(not(any(target_os = "aix", target_os = "espidf", target_os = "vita")))]
pub use ioctl::*;
#[cfg(not(any(target_os = "espidf", target_os = "wasi")))]
pub use kill::*;
@@ -57,7 +59,7 @@ pub use pidfd::*;
pub use pidfd_getfd::*;
#[cfg(linux_kernel)]
pub use prctl::*;
-#[cfg(not(any(target_os = "fuchsia", target_os = "wasi")))]
+#[cfg(not(any(target_os = "fuchsia", target_os = "vita", target_os = "wasi")))]
pub use priority::*;
#[cfg(freebsdlike)]
pub use procctl::*;
@@ -65,6 +67,7 @@ pub use procctl::*;
target_os = "espidf",
target_os = "fuchsia",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi"
)))]
pub use rlimit::*;
@@ -73,5 +76,5 @@ pub use sched::*;
pub use sched_yield::sched_yield;
#[cfg(not(target_os = "wasi"))]
pub use umask::*;
-#[cfg(not(any(target_os = "espidf", target_os = "wasi")))]
+#[cfg(not(any(target_os = "espidf", target_os = "vita", target_os = "wasi")))]
pub use wait::*;
diff --git a/vendor/rustix/src/process/pidfd.rs b/vendor/rustix/src/process/pidfd.rs
index 0548055fc..abebaf21f 100644
--- a/vendor/rustix/src/process/pidfd.rs
+++ b/vendor/rustix/src/process/pidfd.rs
@@ -12,7 +12,7 @@ bitflags::bitflags! {
/// `PIDFD_NONBLOCK`.
const NONBLOCK = backend::c::PIDFD_NONBLOCK;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/process/pidfd_getfd.rs b/vendor/rustix/src/process/pidfd_getfd.rs
index 27d4f1986..4c7696fb6 100644
--- a/vendor/rustix/src/process/pidfd_getfd.rs
+++ b/vendor/rustix/src/process/pidfd_getfd.rs
@@ -18,7 +18,7 @@ bitflags::bitflags! {
#[repr(transparent)]
#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
pub struct PidfdGetfdFlags: backend::c::c_uint {
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/process/prctl.rs b/vendor/rustix/src/process/prctl.rs
index 59be7020f..830abc13d 100644
--- a/vendor/rustix/src/process/prctl.rs
+++ b/vendor/rustix/src/process/prctl.rs
@@ -149,7 +149,7 @@ bitflags! {
#[doc(alias = "PR_UNALIGN_SIGBUS")]
const SIGBUS = 2;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -410,8 +410,8 @@ const PR_SET_ENDIAN: c_int = 20;
///
/// # Safety
///
-/// Please ensure the conditions necessary to safely call this function,
-/// as detailed in the references above.
+/// Please ensure the conditions necessary to safely call this function, as
+/// detailed in the references above.
///
/// [`prctl(PR_SET_ENDIAN,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
#[inline]
@@ -649,8 +649,8 @@ pub enum VirtualMemoryMapAddress {
///
/// # Safety
///
-/// Please ensure the conditions necessary to safely call this function,
-/// as detailed in the references above.
+/// Please ensure the conditions necessary to safely call this function, as
+/// detailed in the references above.
///
/// [`prctl(PR_SET_MM,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
#[inline]
@@ -685,8 +685,8 @@ pub fn set_executable_file(fd: BorrowedFd<'_>) -> io::Result<()> {
///
/// # Safety
///
-/// Please ensure the conditions necessary to safely call this function,
-/// as detailed in the references above.
+/// Please ensure the conditions necessary to safely call this function, as
+/// detailed in the references above.
///
/// [`prctl(PR_SET_MM,PR_SET_MM_AUXV,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
#[inline]
@@ -764,8 +764,8 @@ pub struct PrctlMmMap {
///
/// # Safety
///
-/// Please ensure the conditions necessary to safely call this function,
-/// as detailed in the references above.
+/// Please ensure the conditions necessary to safely call this function, as
+/// detailed in the references above.
///
/// [`prctl(PR_SET_MM,PR_SET_MM_MAP,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
#[inline]
@@ -960,9 +960,11 @@ bitflags! {
const ENABLE = 1_u32 << 1;
/// The speculation feature is disabled, mitigation is enabled.
const DISABLE = 1_u32 << 2;
- /// The speculation feature is disabled, mitigation is enabled, and it cannot be undone.
+ /// The speculation feature is disabled, mitigation is enabled, and it
+ /// cannot be undone.
const FORCE_DISABLE = 1_u32 << 3;
- /// The speculation feature is disabled, mitigation is enabled, and the state will be cleared on `execve`.
+ /// The speculation feature is disabled, mitigation is enabled, and the
+ /// state will be cleared on `execve`.
const DISABLE_NOEXEC = 1_u32 << 4;
}
}
@@ -972,15 +974,18 @@ bitflags! {
#[repr(transparent)]
#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
pub struct SpeculationFeatureState: u32 {
- /// Mitigation can be controlled per thread by `PR_SET_SPECULATION_CTRL`.
+ /// Mitigation can be controlled per thread by
+ /// `PR_SET_SPECULATION_CTRL`.
const PRCTL = 1_u32 << 0;
/// The speculation feature is enabled, mitigation is disabled.
const ENABLE = 1_u32 << 1;
/// The speculation feature is disabled, mitigation is enabled.
const DISABLE = 1_u32 << 2;
- /// The speculation feature is disabled, mitigation is enabled, and it cannot be undone.
+ /// The speculation feature is disabled, mitigation is enabled, and it
+ /// cannot be undone.
const FORCE_DISABLE = 1_u32 << 3;
- /// The speculation feature is disabled, mitigation is enabled, and the state will be cleared on `execve`.
+ /// The speculation feature is disabled, mitigation is enabled, and the
+ /// state will be cleared on `execve`.
const DISABLE_NOEXEC = 1_u32 << 4;
}
}
@@ -1080,8 +1085,8 @@ const PR_PAC_SET_ENABLED_KEYS: c_int = 60;
///
/// # Safety
///
-/// Please ensure the conditions necessary to safely call this function,
-/// as detailed in the references above.
+/// Please ensure the conditions necessary to safely call this function, as
+/// detailed in the references above.
///
/// [`prctl(PR_PAC_SET_ENABLED_KEYS,...)`]: https://www.kernel.org/doc/html/v5.18/arm64/pointer-authentication.html
#[inline]
diff --git a/vendor/rustix/src/process/procctl.rs b/vendor/rustix/src/process/procctl.rs
index 5225f16f7..f06bd72d6 100644
--- a/vendor/rustix/src/process/procctl.rs
+++ b/vendor/rustix/src/process/procctl.rs
@@ -230,7 +230,7 @@ bitflags! {
/// The process is the root of the reaper tree (pid 1).
const REALINIT = 2;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -300,7 +300,8 @@ bitflags! {
const REAPER = 4;
/// The reported process is in the zombie state.
const ZOMBIE = 8;
- /// The reported process is stopped by SIGSTOP/SIGTSTP.
+ /// The reported process is stopped by
+ /// [`Signal::Stop`]/[`Signal::Tstp`].
const STOPPED = 16;
/// The reported process is in the process of exiting.
const EXITING = 32;
@@ -493,12 +494,12 @@ const PROC_NO_NEW_PRIVS_CTL: c_int = 19;
const PROC_NO_NEW_PRIVS_ENABLE: c_int = 1;
-/// Enable the `no_new_privs` mode that ignores SUID and SGID bits
-/// on `execve` in the specified process and its future descendants.
+/// Enable the `no_new_privs` mode that ignores SUID and SGID bits on `execve`
+/// in the specified process and its future descendants.
///
-/// This is similar to `set_no_new_privs` on Linux, with the exception
-/// that on FreeBSD there is no argument `no_new_privs` argument as it's
-/// only possible to enable this mode and there's no going back.
+/// This is similar to `set_no_new_privs` on Linux, with the exception that on
+/// FreeBSD there is no argument `no_new_privs` argument as it's only possible
+/// to enable this mode and there's no going back.
///
/// # References
/// - [Linux: `prctl(PR_SET_NO_NEW_PRIVS,...)`]
diff --git a/vendor/rustix/src/process/sched.rs b/vendor/rustix/src/process/sched.rs
index 239b7df82..b7dcd58cc 100644
--- a/vendor/rustix/src/process/sched.rs
+++ b/vendor/rustix/src/process/sched.rs
@@ -80,8 +80,8 @@ impl Default for CpuSet {
/// `pid` is the thread ID to update. If pid is `None`, then the current thread
/// is updated.
///
-/// The `CpuSet` argument specifies the set of CPUs on which the thread will
-/// be eligible to run.
+/// The `CpuSet` argument specifies the set of CPUs on which the thread will be
+/// eligible to run.
///
/// # References
/// - [Linux]
diff --git a/vendor/rustix/src/process/wait.rs b/vendor/rustix/src/process/wait.rs
index b43bd03d6..ccb90ae43 100644
--- a/vendor/rustix/src/process/wait.rs
+++ b/vendor/rustix/src/process/wait.rs
@@ -9,7 +9,7 @@ use crate::fd::BorrowedFd;
use crate::backend::process::wait::SiginfoExt;
bitflags! {
- /// Options for modifying the behavior of wait/waitpid
+ /// Options for modifying the behavior of [`wait`]/[`waitpid`].
#[repr(transparent)]
#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
pub struct WaitOptions: u32 {
@@ -23,14 +23,14 @@ bitflags! {
/// [`Signal::Cont`].
const CONTINUED = bitcast!(backend::process::wait::WCONTINUED);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
#[cfg(not(any(target_os = "openbsd", target_os = "redox", target_os = "wasi")))]
bitflags! {
- /// Options for modifying the behavior of waitid
+ /// Options for modifying the behavior of [`waitid`].
#[repr(transparent)]
#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
pub struct WaitidOptions: u32 {
@@ -46,7 +46,7 @@ bitflags! {
/// Wait for processes that have been stopped.
const STOPPED = bitcast!(backend::process::wait::WSTOPPED);
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -93,8 +93,8 @@ impl WaitStatus {
backend::process::wait::WIFCONTINUED(self.0 as _)
}
- /// Returns the number of the signal that stopped the process,
- /// if the process was stopped by a signal.
+ /// Returns the number of the signal that stopped the process, if the
+ /// process was stopped by a signal.
#[inline]
pub fn stopping_signal(self) -> Option<u32> {
if self.stopped() {
@@ -104,8 +104,8 @@ impl WaitStatus {
}
}
- /// Returns the exit status number returned by the process,
- /// if it exited normally.
+ /// Returns the exit status number returned by the process, if it exited
+ /// normally.
#[inline]
pub fn exit_status(self) -> Option<u32> {
if self.exited() {
@@ -115,8 +115,8 @@ impl WaitStatus {
}
}
- /// Returns the number of the signal that terminated the process,
- /// if the process was terminated by a signal.
+ /// Returns the number of the signal that terminated the process, if the
+ /// process was terminated by a signal.
#[inline]
pub fn terminating_signal(self) -> Option<u32> {
if self.signaled() {
@@ -153,15 +153,15 @@ impl WaitidStatus {
self.si_code() == backend::c::CLD_EXITED
}
- /// Returns whether the process was terminated by a signal
- /// and did not create a core file.
+ /// Returns whether the process was terminated by a signal and did not
+ /// create a core file.
#[inline]
pub fn killed(&self) -> bool {
self.si_code() == backend::c::CLD_KILLED
}
- /// Returns whether the process was terminated by a signal
- /// and did create a core file.
+ /// Returns whether the process was terminated by a signal and did create a
+ /// core file.
#[inline]
pub fn dumped(&self) -> bool {
self.si_code() == backend::c::CLD_DUMPED
@@ -173,8 +173,8 @@ impl WaitidStatus {
self.si_code() == backend::c::CLD_CONTINUED
}
- /// Returns the number of the signal that stopped the process,
- /// if the process was stopped by a signal.
+ /// Returns the number of the signal that stopped the process, if the
+ /// process was stopped by a signal.
#[inline]
#[cfg(not(any(target_os = "emscripten", target_os = "fuchsia", target_os = "netbsd")))]
pub fn stopping_signal(&self) -> Option<u32> {
@@ -185,8 +185,8 @@ impl WaitidStatus {
}
}
- /// Returns the number of the signal that trapped the process,
- /// if the process was trapped by a signal.
+ /// Returns the number of the signal that trapped the process, if the
+ /// process was trapped by a signal.
#[inline]
#[cfg(not(any(target_os = "emscripten", target_os = "fuchsia", target_os = "netbsd")))]
pub fn trapping_signal(&self) -> Option<u32> {
@@ -197,8 +197,8 @@ impl WaitidStatus {
}
}
- /// Returns the exit status number returned by the process,
- /// if it exited normally.
+ /// Returns the exit status number returned by the process, if it exited
+ /// normally.
#[inline]
#[cfg(not(any(target_os = "emscripten", target_os = "fuchsia", target_os = "netbsd")))]
pub fn exit_status(&self) -> Option<u32> {
@@ -209,8 +209,8 @@ impl WaitidStatus {
}
}
- /// Returns the number of the signal that terminated the process,
- /// if the process was terminated by a signal.
+ /// Returns the number of the signal that terminated the process, if the
+ /// process was terminated by a signal.
#[inline]
#[cfg(not(any(target_os = "emscripten", target_os = "fuchsia", target_os = "netbsd")))]
pub fn terminating_signal(&self) -> Option<u32> {
@@ -254,20 +254,26 @@ impl WaitidStatus {
#[non_exhaustive]
pub enum WaitId<'a> {
/// Wait on all processes.
+ #[doc(alias = "P_ALL")]
All,
/// Wait for a specific process ID.
+ #[doc(alias = "P_PID")]
Pid(Pid),
+ /// Wait for a specific process group ID, or the calling process' group ID.
+ #[doc(alias = "P_PGID")]
+ Pgid(Option<Pid>),
+
/// Wait for a specific process file descriptor.
#[cfg(target_os = "linux")]
+ #[doc(alias = "P_PIDFD")]
PidFd(BorrowedFd<'a>),
/// Eat the lifetime for non-Linux platforms.
#[doc(hidden)]
#[cfg(not(target_os = "linux"))]
__EatLifetime(core::marker::PhantomData<&'a ()>),
- // TODO(notgull): Once this crate has the concept of PGIDs, add a WaitId::Pgid
}
/// `waitpid(pid, waitopts)`—Wait for a specific process to change state.
@@ -275,12 +281,6 @@ pub enum WaitId<'a> {
/// If the pid is `None`, the call will wait for any child process whose
/// process group id matches that of the calling process.
///
-/// If the pid is equal to `RawPid::MAX`, the call will wait for any child
-/// process.
-///
-/// Otherwise if the `wrapping_neg` of pid is less than pid, the call will wait
-/// for any child process with a group ID equal to the `wrapping_neg` of `pid`.
-///
/// Otherwise, the call will wait for the child process with the given pid.
///
/// On Success, returns the status of the selected process.
@@ -288,6 +288,16 @@ pub enum WaitId<'a> {
/// If `NOHANG` was specified in the options, and the selected child process
/// didn't change state, returns `None`.
///
+/// # Bugs
+///
+/// This function does not currently support waiting for given process group
+/// (the < 0 case of `waitpid`); to do that, currently the [`waitpgid`] or
+/// [`waitid`] function must be used.
+///
+/// This function does not currently support waiting for any process (the
+/// `-1` case of `waitpid`); to do that, currently the [`wait`] function must
+/// be used.
+///
/// # References
/// - [POSIX]
/// - [Linux]
@@ -300,6 +310,28 @@ pub fn waitpid(pid: Option<Pid>, waitopts: WaitOptions) -> io::Result<Option<Wai
Ok(backend::process::syscalls::waitpid(pid, waitopts)?.map(|(_, status)| status))
}
+/// `waitpid(-pgid, waitopts)`—Wait for a process in a specific process group
+/// to change state.
+///
+/// The call will wait for any child process with the given pgid.
+///
+/// On Success, returns the status of the selected process.
+///
+/// If `NOHANG` was specified in the options, and no selected child process
+/// changed state, returns `None`.
+///
+/// # References
+/// - [POSIX]
+/// - [Linux]
+///
+/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/wait.html
+/// [Linux]: https://man7.org/linux/man-pages/man2/waitpid.2.html
+#[cfg(not(target_os = "wasi"))]
+#[inline]
+pub fn waitpgid(pgid: Pid, waitopts: WaitOptions) -> io::Result<Option<WaitStatus>> {
+ Ok(backend::process::syscalls::waitpgid(pgid, waitopts)?.map(|(_, status)| status))
+}
+
/// `wait(waitopts)`—Wait for any of the children of calling process to
/// change state.
///
diff --git a/vendor/rustix/src/procfs.rs b/vendor/rustix/src/procfs.rs
index 14ad631a7..fb35a2028 100644
--- a/vendor/rustix/src/procfs.rs
+++ b/vendor/rustix/src/procfs.rs
@@ -18,20 +18,19 @@
//! namespace. So with the checking here, they may fail, but they won't be able
//! to succeed with bogus results.
-use crate::backend::pid::syscalls::getpid;
use crate::fd::{AsFd, BorrowedFd, OwnedFd};
+use crate::ffi::CStr;
use crate::fs::{
- fstat, fstatfs, major, openat, renameat, FileType, FsWord, Mode, OFlags, Stat, CWD,
+ fstat, fstatfs, major, openat, renameat, FileType, FsWord, Mode, OFlags, RawDir, Stat, CWD,
PROC_SUPER_MAGIC,
};
use crate::io;
use crate::path::DecInt;
#[cfg(feature = "rustc-dep-of-std")]
use core::lazy::OnceCell;
+use core::mem::MaybeUninit;
#[cfg(not(feature = "rustc-dep-of-std"))]
use once_cell::sync::OnceCell;
-#[cfg(feature = "alloc")]
-use {crate::ffi::CStr, crate::fs::Dir};
/// Linux's procfs always uses inode 1 for its root directory.
const PROC_ROOT_INO: u64 = 1;
@@ -42,8 +41,8 @@ enum Kind {
Proc,
Pid,
Fd,
- #[cfg(feature = "alloc")]
File,
+ Symlink,
}
/// Check a subdirectory of "/proc" for anomalies.
@@ -69,16 +68,23 @@ fn check_proc_entry_with_stat(
match kind {
Kind::Proc => check_proc_root(entry, &entry_stat)?,
Kind::Pid | Kind::Fd => check_proc_subdir(entry, &entry_stat, proc_stat)?,
- #[cfg(feature = "alloc")]
Kind::File => check_proc_file(&entry_stat, proc_stat)?,
+ Kind::Symlink => check_proc_symlink(&entry_stat, proc_stat)?,
}
// "/proc" directories are typically mounted r-xr-xr-x.
// "/proc/self/fd" is r-x------. Allow them to have fewer permissions, but
// not more.
- let expected_mode = if let Kind::Fd = kind { 0o500 } else { 0o555 };
- if entry_stat.st_mode & 0o777 & !expected_mode != 0 {
- return Err(io::Errno::NOTSUP);
+ match kind {
+ Kind::Symlink => {
+ // On Linux, symlinks don't have their own permissions.
+ }
+ _ => {
+ let expected_mode = if let Kind::Fd = kind { 0o500 } else { 0o555 };
+ if entry_stat.st_mode & 0o777 & !expected_mode != 0 {
+ return Err(io::Errno::NOTSUP);
+ }
+ }
}
match kind {
@@ -97,7 +103,6 @@ fn check_proc_entry_with_stat(
return Err(io::Errno::NOTSUP);
}
}
- #[cfg(feature = "alloc")]
Kind::File => {
// Check that files in procfs don't have extraneous hard links to
// them (which might indicate hard links to other things).
@@ -105,6 +110,13 @@ fn check_proc_entry_with_stat(
return Err(io::Errno::NOTSUP);
}
}
+ Kind::Symlink => {
+ // Check that symlinks in procfs don't have extraneous hard links
+ // to them (which might indicate hard links to other things).
+ if entry_stat.st_nlink != 1 {
+ return Err(io::Errno::NOTSUP);
+ }
+ }
}
Ok(entry_stat)
@@ -153,7 +165,6 @@ fn check_proc_subdir(
Ok(())
}
-#[cfg(feature = "alloc")]
fn check_proc_file(stat: &Stat, proc_stat: Option<&Stat>) -> io::Result<()> {
// Check that we have a regular file.
if FileType::from_raw_mode(stat.st_mode) != FileType::RegularFile {
@@ -165,6 +176,17 @@ fn check_proc_file(stat: &Stat, proc_stat: Option<&Stat>) -> io::Result<()> {
Ok(())
}
+fn check_proc_symlink(stat: &Stat, proc_stat: Option<&Stat>) -> io::Result<()> {
+ // Check that we have a symbolic link.
+ if FileType::from_raw_mode(stat.st_mode) != FileType::Symlink {
+ return Err(io::Errno::NOTSUP);
+ }
+
+ check_proc_nonroot(stat, proc_stat)?;
+
+ Ok(())
+}
+
fn check_proc_nonroot(stat: &Stat, proc_stat: Option<&Stat>) -> io::Result<()> {
// Check that we haven't been linked back to the root of "/proc".
if stat.st_ino == PROC_ROOT_INO {
@@ -245,6 +267,7 @@ fn proc() -> io::Result<(BorrowedFd<'static>, &'static Stat)> {
/// - [Linux]
///
/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html
+#[allow(unsafe_code)]
fn proc_self() -> io::Result<(BorrowedFd<'static>, &'static Stat)> {
static PROC_SELF: StaticFd = StaticFd::new();
@@ -253,11 +276,21 @@ fn proc_self() -> io::Result<(BorrowedFd<'static>, &'static Stat)> {
.get_or_try_init(|| {
let (proc, proc_stat) = proc()?;
- let pid = getpid();
+ // `getpid` would return our pid in our own pid namespace, so
+ // instead use `readlink` on the `self` symlink to learn our pid in
+ // the procfs namespace.
+ let self_symlink = open_and_check_file(proc, proc_stat, cstr!("self"), Kind::Symlink)?;
+ let mut buf = [MaybeUninit::<u8>::uninit(); 20];
+ let len = crate::backend::fs::syscalls::readlinkat(
+ self_symlink.as_fd(),
+ cstr!(""),
+ &mut buf,
+ )?;
+ let pid: &[u8] = unsafe { core::mem::transmute(&buf[..len]) };
// Open "/proc/self". Use our pid to compute the name rather than
// literally using "self", as "self" is a symlink.
- let proc_self = proc_opendirat(proc, DecInt::new(pid.as_raw_nonzero().get()))?;
+ let proc_self = proc_opendirat(proc, pid)?;
let proc_self_stat = check_proc_entry(Kind::Pid, proc_self.as_fd(), Some(proc_stat))
.map_err(|_err| io::Errno::NOTSUP)?;
@@ -314,7 +347,6 @@ fn new_static_fd(fd: OwnedFd, stat: Stat) -> (OwnedFd, Stat) {
/// - [Linux]
///
/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html
-#[cfg(feature = "alloc")]
fn proc_self_fdinfo() -> io::Result<(BorrowedFd<'static>, &'static Stat)> {
static PROC_SELF_FDINFO: StaticFd = StaticFd::new();
@@ -344,18 +376,21 @@ fn proc_self_fdinfo() -> io::Result<(BorrowedFd<'static>, &'static Stat)> {
/// - [Linux]
///
/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html
-#[cfg(feature = "alloc")]
#[inline]
#[cfg_attr(doc_cfg, doc(cfg(feature = "procfs")))]
pub fn proc_self_fdinfo_fd<Fd: AsFd>(fd: Fd) -> io::Result<OwnedFd> {
_proc_self_fdinfo(fd.as_fd())
}
-#[cfg(feature = "alloc")]
fn _proc_self_fdinfo(fd: BorrowedFd<'_>) -> io::Result<OwnedFd> {
let (proc_self_fdinfo, proc_self_fdinfo_stat) = proc_self_fdinfo()?;
let fd_str = DecInt::from_fd(fd);
- open_and_check_file(proc_self_fdinfo, proc_self_fdinfo_stat, fd_str.as_c_str())
+ open_and_check_file(
+ proc_self_fdinfo,
+ proc_self_fdinfo_stat,
+ fd_str.as_c_str(),
+ Kind::File,
+ )
}
/// Returns a handle to a Linux `/proc/self/pagemap` file.
@@ -369,7 +404,6 @@ fn _proc_self_fdinfo(fd: BorrowedFd<'_>) -> io::Result<OwnedFd> {
///
/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html
/// [Linux pagemap]: https://www.kernel.org/doc/Documentation/vm/pagemap.txt
-#[cfg(feature = "alloc")]
#[inline]
#[cfg_attr(doc_cfg, doc(cfg(feature = "procfs")))]
pub fn proc_self_pagemap() -> io::Result<OwnedFd> {
@@ -385,7 +419,6 @@ pub fn proc_self_pagemap() -> io::Result<OwnedFd> {
/// - [Linux]
///
/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html
-#[cfg(feature = "alloc")]
#[inline]
#[cfg_attr(doc_cfg, doc(cfg(feature = "procfs")))]
pub fn proc_self_maps() -> io::Result<OwnedFd> {
@@ -401,7 +434,6 @@ pub fn proc_self_maps() -> io::Result<OwnedFd> {
/// - [Linux]
///
/// [Linux]: https://man7.org/linux/man-pages/man5/proc.5.html
-#[cfg(feature = "alloc")]
#[inline]
#[cfg_attr(doc_cfg, doc(cfg(feature = "procfs")))]
pub fn proc_self_status() -> io::Result<OwnedFd> {
@@ -409,15 +441,18 @@ pub fn proc_self_status() -> io::Result<OwnedFd> {
}
/// Open a file under `/proc/self`.
-#[cfg(feature = "alloc")]
fn proc_self_file(name: &CStr) -> io::Result<OwnedFd> {
let (proc_self, proc_self_stat) = proc_self()?;
- open_and_check_file(proc_self, proc_self_stat, name)
+ open_and_check_file(proc_self, proc_self_stat, name, Kind::File)
}
/// Open a procfs file within in `dir` and check it for bind mounts.
-#[cfg(feature = "alloc")]
-fn open_and_check_file(dir: BorrowedFd<'_>, dir_stat: &Stat, name: &CStr) -> io::Result<OwnedFd> {
+fn open_and_check_file(
+ dir: BorrowedFd<'_>,
+ dir_stat: &Stat,
+ name: &CStr,
+ kind: Kind,
+) -> io::Result<OwnedFd> {
let (_, proc_stat) = proc()?;
// Don't use `NOATIME`, because it [requires us to own the file], and when
@@ -426,7 +461,11 @@ fn open_and_check_file(dir: BorrowedFd<'_>, dir_stat: &Stat, name: &CStr) -> io:
//
// [requires us to own the file]: https://man7.org/linux/man-pages/man2/openat.2.html
// [to root:root]: https://man7.org/linux/man-pages/man5/proc.5.html
- let oflags = OFlags::RDONLY | OFlags::CLOEXEC | OFlags::NOFOLLOW | OFlags::NOCTTY;
+ let mut oflags = OFlags::RDONLY | OFlags::CLOEXEC | OFlags::NOFOLLOW | OFlags::NOCTTY;
+ if let Kind::Symlink = kind {
+ // Open symlinks with `O_PATH`.
+ oflags |= OFlags::PATH;
+ }
let file = openat(dir, name, oflags, Mode::empty()).map_err(|_err| io::Errno::NOTSUP)?;
let file_stat = fstat(&file)?;
@@ -436,32 +475,29 @@ fn open_and_check_file(dir: BorrowedFd<'_>, dir_stat: &Stat, name: &CStr) -> io:
// we just opened. If we can't find it, there could be a file bind mount on
// top of the file we want.
//
- // As we scan, we also check for ".", to make sure it's the same directory
- // as our original directory, to detect mount points, since
- // `Dir::read_from` reopens ".".
- //
// TODO: With Linux 5.8 we might be able to use `statx` and
// `STATX_ATTR_MOUNT_ROOT` to detect mountpoints directly instead of doing
// this scanning.
- let dir = Dir::read_from(dir).map_err(|_err| io::Errno::NOTSUP)?;
- // Confirm that we got the same inode.
- let dot_stat = dir.stat().map_err(|_err| io::Errno::NOTSUP)?;
- if (dot_stat.st_dev, dot_stat.st_ino) != (dir_stat.st_dev, dir_stat.st_ino) {
- return Err(io::Errno::NOTSUP);
- }
+ let expected_type = match kind {
+ Kind::File => FileType::RegularFile,
+ Kind::Symlink => FileType::Symlink,
+ _ => unreachable!(),
+ };
let mut found_file = false;
let mut found_dot = false;
- for entry in dir {
+
+ let mut buf = [MaybeUninit::uninit(); 2048];
+ let mut iter = RawDir::new(dir, &mut buf);
+ while let Some(entry) = iter.next() {
let entry = entry.map_err(|_err| io::Errno::NOTSUP)?;
if entry.ino() == file_stat.st_ino
- && entry.file_type() == FileType::RegularFile
+ && entry.file_type() == expected_type
&& entry.file_name() == name
{
// We found the file. Proceed to check the file handle.
- let _ =
- check_proc_entry_with_stat(Kind::File, file.as_fd(), file_stat, Some(proc_stat))?;
+ let _ = check_proc_entry_with_stat(kind, file.as_fd(), file_stat, Some(proc_stat))?;
found_file = true;
} else if entry.ino() == dir_stat.st_ino
diff --git a/vendor/rustix/src/pty.rs b/vendor/rustix/src/pty.rs
index a63fbfeef..926ebf789 100644
--- a/vendor/rustix/src/pty.rs
+++ b/vendor/rustix/src/pty.rs
@@ -23,7 +23,7 @@ use crate::{fd::FromRawFd, ioctl};
bitflags::bitflags! {
/// `O_*` flags for use with [`openpt`] and [`ioctl_tiocgptpeer`].
///
- /// [`ioctl_tiocgtpeer`]: https://docs.rs/rustix/*/x86_64-unknown-linux-gnu/rustix/pty/fn.ioctl_tiocgtpeer.html
+ /// [`ioctl_tiocgptpeer`]: https://docs.rs/rustix/*/x86_64-unknown-linux-gnu/rustix/pty/fn.ioctl_tiocgptpeer.html
#[repr(transparent)]
#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
pub struct OpenptFlags: u32 {
@@ -31,7 +31,7 @@ bitflags::bitflags! {
const RDWR = c::O_RDWR as c::c_uint;
/// `O_NOCTTY`
- #[cfg(not(any(target_os = "espidf", target_os = "l4re", target_os = "redox")))]
+ #[cfg(not(any(target_os = "espidf", target_os = "l4re", target_os = "redox", target_os = "vita")))]
const NOCTTY = c::O_NOCTTY as c::c_uint;
/// `O_CLOEXEC`
@@ -41,7 +41,7 @@ bitflags::bitflags! {
#[cfg(any(linux_kernel, target_os = "freebsd", target_os = "netbsd"))]
const CLOEXEC = c::O_CLOEXEC as c::c_uint;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -142,8 +142,8 @@ pub fn unlockpt<Fd: AsFd>(fd: Fd) -> io::Result<()> {
///
/// On Linux, calling this function has no effect, as the kernel is expected to
/// grant the appropriate access. On all other platorms, this function has
-/// unspecified behavior if the calling process has a `SIGCHLD` signal handler
-/// installed.
+/// unspecified behavior if the calling process has a [`Signal::Child`] signal
+/// handler installed.
///
/// # References
/// - [POSIX]
@@ -153,6 +153,7 @@ pub fn unlockpt<Fd: AsFd>(fd: Fd) -> io::Result<()> {
/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/grantpt.html
/// [Linux]: https://man7.org/linux/man-pages/man3/grantpt.3.html
/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Allocation.html#index-grantpt
+/// [`Signal::Child`]: crate::process::Signal::Child
#[inline]
pub fn grantpt<Fd: AsFd>(fd: Fd) -> io::Result<()> {
#[cfg(not(linux_kernel))]
diff --git a/vendor/rustix/src/runtime.rs b/vendor/rustix/src/runtime.rs
index 2cb0eba54..3c754a62f 100644
--- a/vendor/rustix/src/runtime.rs
+++ b/vendor/rustix/src/runtime.rs
@@ -4,7 +4,7 @@
//! Do not use the functions in this module unless you've read all of their
//! code. They don't always behave the same way as functions with similar names
//! in `libc`. Sometimes information about the differences is included in the
-//! Linux documentation under "C library/kernel differences" sections. And, if
+//! Linux documentation under “C library/kernel differences†sections. And, if
//! there is a libc in the process, these functions may have surprising
//! interactions with it.
//!
@@ -89,7 +89,7 @@ pub unsafe fn arm_set_tls(data: *mut c_void) -> io::Result<()> {
backend::runtime::syscalls::tls::arm_set_tls(data)
}
-/// `prctl(PR_SET_FS, data)`—Set the x86_64 `fs` register.
+/// `prctl(PR_SET_FS, data)`—Set the x86-64 `fs` register.
///
/// # Safety
///
@@ -101,7 +101,7 @@ pub unsafe fn set_fs(data: *mut c_void) {
backend::runtime::syscalls::tls::set_fs(data)
}
-/// Set the x86_64 thread ID address.
+/// Set the x86-64 thread ID address.
///
/// # Safety
///
@@ -188,7 +188,7 @@ pub const EXIT_FAILURE: i32 = backend::c::EXIT_FAILURE;
/// Return fields from the main executable segment headers ("phdrs") relevant
/// to initializing TLS provided to the program at startup.
///
-/// `addr` will always be non-null, even when the TLS data is absent, ao that
+/// `addr` will always be non-null, even when the TLS data is absent, so that
/// the `addr` and `file_size` parameters are suitable for creating a slice
/// with `slice::from_raw_parts`.
#[inline]
@@ -485,3 +485,41 @@ pub unsafe fn sigwaitinfo(set: &Sigset) -> io::Result<Siginfo> {
pub unsafe fn sigtimedwait(set: &Sigset, timeout: Option<Timespec>) -> io::Result<Siginfo> {
backend::runtime::syscalls::sigtimedwait(set, timeout)
}
+
+/// `getauxval(AT_SECURE)`—Returns the Linux “secure execution†mode.
+///
+/// Return a boolean value indicating whether “secure execution†mode was
+/// requested, due to the process having elevated privileges. This includes
+/// whether the `AT_SECURE` AUX value is set, and whether the initial real UID
+/// and GID differ from the initial effective UID and GID.
+///
+/// The meaning of “secure execution†mode is beyond the scope of this comment.
+///
+/// # References
+/// - [Linux]
+///
+/// [Linux]: https://man7.org/linux/man-pages/man3/getauxval.3.html
+#[cfg(any(
+ linux_raw,
+ any(
+ all(target_os = "android", target_pointer_width = "64"),
+ target_os = "linux",
+ )
+))]
+#[inline]
+pub fn linux_secure() -> bool {
+ backend::param::auxv::linux_secure()
+}
+
+/// `brk(addr)`—Change the location of the “program breakâ€.
+///
+/// # Safety
+///
+/// This is not identical to `brk` in libc. libc `brk` may have bookkeeping
+/// that needs to be kept up to date that this doesn't keep up to date, so
+/// don't use it unless you are implementing libc.
+#[cfg(linux_raw)]
+#[inline]
+pub unsafe fn brk(addr: *mut c_void) -> io::Result<*mut c_void> {
+ backend::runtime::syscalls::brk(addr)
+}
diff --git a/vendor/rustix/src/shm.rs b/vendor/rustix/src/shm.rs
new file mode 100644
index 000000000..450b6fcc6
--- /dev/null
+++ b/vendor/rustix/src/shm.rs
@@ -0,0 +1,40 @@
+//! POSIX shared memory
+
+use crate::fd::OwnedFd;
+use crate::{backend, io, path};
+
+pub use crate::backend::fs::types::Mode;
+pub use crate::backend::shm::types::ShmOFlags;
+
+/// `shm_open(name, oflags, mode)`—Opens a shared memory object.
+///
+/// For portability, `name` should begin with a slash, contain no other
+/// slashes, and be no longer than an implementation-defined limit (255 on
+/// Linux).
+///
+/// Exactly one of [`ShmOFlags::RDONLY`] and [`ShmOFlags::RDWR`] should be
+/// passed. The file descriptor will be opened with `FD_CLOEXEC` set.
+///
+/// # References
+/// - [POSIX]
+/// - [Linux]
+///
+/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/shm_open.html
+/// [Linux]: https://man7.org/linux/man-pages/man3/shm_open.3.html
+#[inline]
+pub fn shm_open<P: path::Arg>(name: P, flags: ShmOFlags, mode: Mode) -> io::Result<OwnedFd> {
+ name.into_with_c_str(|name| backend::shm::syscalls::shm_open(name, flags, mode))
+}
+
+/// `shm_unlink(name)`—Unlinks a shared memory object.
+///
+/// # References
+/// - [POSIX]
+/// - [Linux]
+///
+/// [POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/functions/shm_unlink.html
+/// [Linux]: https://man7.org/linux/man-pages/man3/shm_unlink.3.html
+#[inline]
+pub fn shm_unlink<P: path::Arg>(name: P) -> io::Result<()> {
+ name.into_with_c_str(backend::shm::syscalls::shm_unlink)
+}
diff --git a/vendor/rustix/src/signal.rs b/vendor/rustix/src/signal.rs
index 43236f335..e55126f37 100644
--- a/vendor/rustix/src/signal.rs
+++ b/vendor/rustix/src/signal.rs
@@ -30,10 +30,12 @@ pub enum Signal {
/// `SIGKILL`
Kill = c::SIGKILL,
/// `SIGUSR1`
+ #[cfg(not(target_os = "vita"))]
Usr1 = c::SIGUSR1,
/// `SIGSEGV`
Segv = c::SIGSEGV,
/// `SIGUSR2`
+ #[cfg(not(target_os = "vita"))]
Usr2 = c::SIGUSR2,
/// `SIGPIPE`
Pipe = c::SIGPIPE,
@@ -49,6 +51,7 @@ pub enum Signal {
target_os = "aix",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
all(
linux_kernel,
any(
@@ -63,37 +66,49 @@ pub enum Signal {
)))]
Stkflt = c::SIGSTKFLT,
/// `SIGCHLD`
+ #[cfg(not(target_os = "vita"))]
#[doc(alias = "Chld")]
Child = c::SIGCHLD,
/// `SIGCONT`
+ #[cfg(not(target_os = "vita"))]
Cont = c::SIGCONT,
/// `SIGSTOP`
+ #[cfg(not(target_os = "vita"))]
Stop = c::SIGSTOP,
/// `SIGTSTP`
+ #[cfg(not(target_os = "vita"))]
Tstp = c::SIGTSTP,
/// `SIGTTIN`
+ #[cfg(not(target_os = "vita"))]
Ttin = c::SIGTTIN,
/// `SIGTTOU`
+ #[cfg(not(target_os = "vita"))]
Ttou = c::SIGTTOU,
/// `SIGURG`
+ #[cfg(not(target_os = "vita"))]
Urg = c::SIGURG,
/// `SIGXCPU`
+ #[cfg(not(target_os = "vita"))]
Xcpu = c::SIGXCPU,
/// `SIGXFSZ`
+ #[cfg(not(target_os = "vita"))]
Xfsz = c::SIGXFSZ,
/// `SIGVTALRM`
+ #[cfg(not(target_os = "vita"))]
#[doc(alias = "Vtalrm")]
Vtalarm = c::SIGVTALRM,
/// `SIGPROF`
+ #[cfg(not(target_os = "vita"))]
Prof = c::SIGPROF,
/// `SIGWINCH`
+ #[cfg(not(target_os = "vita"))]
Winch = c::SIGWINCH,
/// `SIGIO`, aka `SIGPOLL`
#[doc(alias = "Poll")]
- #[cfg(not(target_os = "haiku"))]
+ #[cfg(not(any(target_os = "haiku", target_os = "vita")))]
Io = c::SIGIO,
/// `SIGPWR`
- #[cfg(not(any(bsd, target_os = "haiku")))]
+ #[cfg(not(any(bsd, target_os = "haiku", target_os = "vita")))]
#[doc(alias = "Pwr")]
Power = c::SIGPWR,
/// `SIGSYS`, aka `SIGUNUSED`
@@ -143,8 +158,10 @@ impl Signal {
c::SIGBUS => Some(Self::Bus),
c::SIGFPE => Some(Self::Fpe),
c::SIGKILL => Some(Self::Kill),
+ #[cfg(not(target_os = "vita"))]
c::SIGUSR1 => Some(Self::Usr1),
c::SIGSEGV => Some(Self::Segv),
+ #[cfg(not(target_os = "vita"))]
c::SIGUSR2 => Some(Self::Usr2),
c::SIGPIPE => Some(Self::Pipe),
c::SIGALRM => Some(Self::Alarm),
@@ -155,6 +172,7 @@ impl Signal {
target_os = "aix",
target_os = "haiku",
target_os = "nto",
+ target_os = "vita",
all(
linux_kernel,
any(
@@ -168,21 +186,33 @@ impl Signal {
)
)))]
c::SIGSTKFLT => Some(Self::Stkflt),
+ #[cfg(not(target_os = "vita"))]
c::SIGCHLD => Some(Self::Child),
+ #[cfg(not(target_os = "vita"))]
c::SIGCONT => Some(Self::Cont),
+ #[cfg(not(target_os = "vita"))]
c::SIGSTOP => Some(Self::Stop),
+ #[cfg(not(target_os = "vita"))]
c::SIGTSTP => Some(Self::Tstp),
+ #[cfg(not(target_os = "vita"))]
c::SIGTTIN => Some(Self::Ttin),
+ #[cfg(not(target_os = "vita"))]
c::SIGTTOU => Some(Self::Ttou),
+ #[cfg(not(target_os = "vita"))]
c::SIGURG => Some(Self::Urg),
+ #[cfg(not(target_os = "vita"))]
c::SIGXCPU => Some(Self::Xcpu),
+ #[cfg(not(target_os = "vita"))]
c::SIGXFSZ => Some(Self::Xfsz),
+ #[cfg(not(target_os = "vita"))]
c::SIGVTALRM => Some(Self::Vtalarm),
+ #[cfg(not(target_os = "vita"))]
c::SIGPROF => Some(Self::Prof),
+ #[cfg(not(target_os = "vita"))]
c::SIGWINCH => Some(Self::Winch),
- #[cfg(not(target_os = "haiku"))]
+ #[cfg(not(any(target_os = "haiku", target_os = "vita")))]
c::SIGIO => Some(Self::Io),
- #[cfg(not(any(bsd, target_os = "haiku")))]
+ #[cfg(not(any(bsd, target_os = "haiku", target_os = "vita")))]
c::SIGPWR => Some(Self::Power),
c::SIGSYS => Some(Self::Sys),
#[cfg(any(
diff --git a/vendor/rustix/src/static_assertions.rs b/vendor/rustix/src/static_assertions.rs
index 81824cb1c..3d0711811 100644
--- a/vendor/rustix/src/static_assertions.rs
+++ b/vendor/rustix/src/static_assertions.rs
@@ -1,8 +1,7 @@
//! Workarounds for Rust 1.63 where some things in the `static_assertions`
-//! crate do things that don't work in const contexts. We want to call them
-//! in const contexts in Rust versions where that's supported so that
-//! problems are caught at compile time, and fall back to dynamic asserts
-//! in Rust 1.63.
+//! crate do things that don't work in const contexts. We want to call them in
+//! const contexts in Rust versions where that's supported so that problems are
+//! caught at compile time, and fall back to dynamic asserts in Rust 1.63.
#![allow(unused_macros)]
diff --git a/vendor/rustix/src/system.rs b/vendor/rustix/src/system.rs
index 1f7f39ce4..cebf29e49 100644
--- a/vendor/rustix/src/system.rs
+++ b/vendor/rustix/src/system.rs
@@ -7,8 +7,10 @@
#![allow(unsafe_code)]
use crate::backend;
+#[cfg(target_os = "linux")]
+use crate::backend::c;
use crate::ffi::CStr;
-#[cfg(not(any(target_os = "espidf", target_os = "emscripten")))]
+#[cfg(not(any(target_os = "espidf", target_os = "emscripten", target_os = "vita")))]
use crate::io;
use core::fmt;
@@ -18,6 +20,8 @@ pub use backend::system::types::Sysinfo;
/// `uname()`—Returns high-level information about the runtime OS and
/// hardware.
///
+/// For `gethostname()`, use [`Uname::nodename`] on the result.
+///
/// # References
/// - [POSIX]
/// - [Linux]
@@ -38,6 +42,7 @@ pub use backend::system::types::Sysinfo;
/// [DragonFly BSD]: https://man.dragonflybsd.org/?command=uname&section=3
/// [illumos]: https://illumos.org/man/2/uname
/// [glibc]: https://www.gnu.org/software/libc/manual/html_node/Platform-Type.html
+#[doc(alias = "gethostname")]
#[inline]
pub fn uname() -> Uname {
Uname(backend::system::syscalls::uname())
@@ -59,6 +64,8 @@ impl Uname {
/// This is intended to be a network name, however it's unable to convey
/// information about hosts that have multiple names, or any information
/// about where the names are visible.
+ ///
+ /// This corresponds to the `gethostname` value.
#[inline]
pub fn nodename(&self) -> &CStr {
Self::to_cstr(self.0.nodename.as_ptr().cast())
@@ -148,9 +155,66 @@ pub fn sysinfo() -> Sysinfo {
target_os = "emscripten",
target_os = "espidf",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi"
)))]
#[inline]
pub fn sethostname(name: &[u8]) -> io::Result<()> {
backend::system::syscalls::sethostname(name)
}
+
+/// Reboot command for use with [`reboot`].
+#[cfg(target_os = "linux")]
+#[derive(Copy, Clone, Debug, Eq, PartialEq)]
+#[repr(i32)]
+#[non_exhaustive]
+pub enum RebootCommand {
+ /// Disables the Ctrl-Alt-Del keystroke.
+ ///
+ /// When disabled, the keystroke will send a [`Signal::Int`] to pid 1.
+ ///
+ /// [`Signal::Int`]: crate::process::Signal::Int
+ CadOff = c::LINUX_REBOOT_CMD_CAD_OFF,
+ /// Enables the Ctrl-Alt-Del keystroke.
+ ///
+ /// When enabled, the keystroke will trigger a [`Restart`].
+ ///
+ /// [`Restart`]: Self::Restart
+ CadOn = c::LINUX_REBOOT_CMD_CAD_ON,
+ /// Prints the message "System halted" and halts the system
+ Halt = c::LINUX_REBOOT_CMD_HALT,
+ /// Execute a kernel that has been loaded earlier with [`kexec_load`].
+ ///
+ /// [`kexec_load`]: https://man7.org/linux/man-pages/man2/kexec_load.2.html
+ Kexec = c::LINUX_REBOOT_CMD_KEXEC,
+ /// Prints the message "Power down.", stops the system, and tries to remove
+ /// all power
+ PowerOff = c::LINUX_REBOOT_CMD_POWER_OFF,
+ /// Prints the message "Restarting system." and triggers a restart
+ Restart = c::LINUX_REBOOT_CMD_RESTART,
+ /// Hibernate the system by suspending to disk
+ SwSuspend = c::LINUX_REBOOT_CMD_SW_SUSPEND,
+}
+
+/// `reboot`—Reboot the system or enable/disable Ctrl-Alt-Del
+///
+/// The reboot syscall, despite the name, can actually do much more than
+/// reboot.
+///
+/// Among other things, it can:
+/// - Restart, Halt, Power Off, and Suspend the system
+/// - Enable and disable the Ctrl-Alt-Del keystroke
+/// - Execute other kernels
+/// - Terminate init inside PID namespaces
+///
+/// It is highly recommended to carefully read the kernel documentation before
+/// calling this function.
+///
+/// # References
+/// - [Linux]
+///
+/// [Linux]: https://man7.org/linux/man-pages/man2/reboot.2.html
+#[cfg(target_os = "linux")]
+pub fn reboot(cmd: RebootCommand) -> io::Result<()> {
+ backend::system::syscalls::reboot(cmd)
+}
diff --git a/vendor/rustix/src/termios/tty.rs b/vendor/rustix/src/termios/tty.rs
index 56aab9fcf..b14e602cd 100644
--- a/vendor/rustix/src/termios/tty.rs
+++ b/vendor/rustix/src/termios/tty.rs
@@ -51,23 +51,26 @@ fn _ttyname(dirfd: BorrowedFd<'_>, mut buffer: Vec<u8>) -> io::Result<CString> {
loop {
match backend::termios::syscalls::ttyname(dirfd, buffer.spare_capacity_mut()) {
Err(io::Errno::RANGE) => {
- buffer.reserve(buffer.capacity() + 1); // use `Vec` reallocation strategy to grow capacity exponentially
+ // Use `Vec` reallocation strategy to grow capacity
+ // exponentially.
+ buffer.reserve(buffer.capacity() + 1);
}
Ok(len) => {
- // SAFETY: assume the backend returns the length of the string excluding the
- // NUL.
+ // SAFETY: Assume the backend returns the length of the string
+ // excluding the NUL.
unsafe {
buffer.set_len(len + 1);
}
// SAFETY:
- // - "ttyname_r stores this pathname in the buffer buf"
- // - [POSIX definition 3.271: Pathname]: "A string that is used to identify a
- // file."
- // - [POSIX definition 3.375: String]: "A contiguous sequence of bytes
- // terminated by and including the first null byte."
+ // - “ttyname_r stores this pathname in the buffer bufâ€
+ // - [POSIX definition 3.271: Pathname]: “A string that is used
+ // to identify a file.â€
+ // - [POSIX definition 3.375: String]: “A contiguous sequence
+ // of bytes terminated by and including the first null byte.â€
//
- // Thus, there will be a single NUL byte at the end of the string.
+ // Thus, there will be a single NUL byte at the end of the
+ // string.
//
// [POSIX definition 3.271: Pathname]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_271
// [POSIX definition 3.375: String]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_375
diff --git a/vendor/rustix/src/termios/types.rs b/vendor/rustix/src/termios/types.rs
index 0c44ed2e8..720352442 100644
--- a/vendor/rustix/src/termios/types.rs
+++ b/vendor/rustix/src/termios/types.rs
@@ -289,11 +289,12 @@ bitflags! {
target_os = "aix",
target_os = "emscripten",
target_os = "haiku",
+ target_os = "hurd",
target_os = "redox",
)))]
const IUTF8 = c::IUTF8;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -508,7 +509,7 @@ bitflags! {
)))]
const VT1 = c::VT1;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -566,12 +567,13 @@ bitflags! {
target_os = "aix",
target_os = "emscripten",
target_os = "haiku",
+ target_os = "hurd",
target_os = "nto",
target_os = "redox",
)))]
const CMSPAR = c::CMSPAR;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -637,7 +639,7 @@ bitflags! {
/// `IEXTEN`
const IEXTEN = c::IEXTEN;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -806,7 +808,18 @@ pub mod speed {
/// Translate from a `c::speed_t` code to an arbitrary integer speed value
/// `u32`.
- #[cfg(not(any(linux_kernel, bsd)))]
+ ///
+ /// On BSD platforms, integer speed values are already the same as their
+ /// encoded values, and on Linux platforms, we use `TCGETS2`/`TCSETS2`
+ /// and the `c_ispeed`/`c_ospeed`` fields, except that on Linux on
+ /// PowerPC on QEMU, `TCGETS2`/`TCSETS2` don't set `c_ispeed`/`c_ospeed`.
+ #[cfg(not(any(
+ bsd,
+ all(
+ linux_kernel,
+ not(any(target_arch = "powerpc", target_arch = "powerpc64"))
+ )
+ )))]
pub(crate) const fn decode(encoded_speed: c::speed_t) -> Option<u32> {
match encoded_speed {
c::B0 => Some(0),
@@ -1131,6 +1144,7 @@ impl SpecialCodeIndex {
solarish,
target_os = "aix",
target_os = "haiku",
+ target_os = "hurd",
target_os = "nto",
)))]
pub const VSWTC: Self = Self(c::VSWTC as usize);
@@ -1263,8 +1277,8 @@ fn termios_layouts() {
check_renamed_struct_renamed_field!(Termios, termios, local_modes, c_lflag);
check_renamed_struct_renamed_field!(Termios, termios, special_codes, c_cc);
- // On everything except PowerPC, `termios` matches `termios2` except for
- // the addition of `c_ispeed` and `c_ospeed`.
+ // On everything except PowerPC, `termios` matches `termios2` except
+ // for the addition of `c_ispeed` and `c_ospeed`.
#[cfg(not(any(target_arch = "powerpc", target_arch = "powerpc64")))]
const_assert_eq!(
memoffset::offset_of!(Termios, input_speed),
diff --git a/vendor/rustix/src/thread/clock.rs b/vendor/rustix/src/thread/clock.rs
index 8060c0238..986e1f9a3 100644
--- a/vendor/rustix/src/thread/clock.rs
+++ b/vendor/rustix/src/thread/clock.rs
@@ -9,6 +9,7 @@ pub use crate::timespec::Timespec;
target_os = "freebsd", // FreeBSD 12 has clock_nanosleep, but libc targets FreeBSD 11.
target_os = "openbsd",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi",
)))]
pub use crate::clockid::ClockId;
@@ -34,6 +35,7 @@ pub use crate::clockid::ClockId;
target_os = "haiku",
target_os = "openbsd",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi",
)))]
#[inline]
@@ -62,6 +64,7 @@ pub fn clock_nanosleep_relative(id: ClockId, request: &Timespec) -> NanosleepRel
target_os = "haiku",
target_os = "openbsd",
target_os = "redox",
+ target_os = "vita",
target_os = "wasi",
)))]
#[inline]
diff --git a/vendor/rustix/src/thread/libcap.rs b/vendor/rustix/src/thread/libcap.rs
index 19f81a904..0a0fbb4ca 100644
--- a/vendor/rustix/src/thread/libcap.rs
+++ b/vendor/rustix/src/thread/libcap.rs
@@ -103,7 +103,7 @@ bitflags! {
/// `CAP_CHECKPOINT_RESTORE`
const CHECKPOINT_RESTORE = 1 << linux_raw_sys::general::CAP_CHECKPOINT_RESTORE;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/thread/prctl.rs b/vendor/rustix/src/thread/prctl.rs
index b2d40d65c..999764cb1 100644
--- a/vendor/rustix/src/thread/prctl.rs
+++ b/vendor/rustix/src/thread/prctl.rs
@@ -205,8 +205,8 @@ pub enum Capability {
/// cleared on successful return from `chown` (not implemented).
FileSetID = linux_raw_sys::general::CAP_FSETID,
/// Overrides the restriction that the real or effective user ID of a
- /// process sending a signal must match the real or effective user ID
- /// of the process receiving the signal.
+ /// process sending a signal must match the real or effective user ID of
+ /// the process receiving the signal.
Kill = linux_raw_sys::general::CAP_KILL,
/// Allows `setgid` manipulation. Allows `setgroups`. Allows forged gids on
/// socket credentials passing.
@@ -366,8 +366,9 @@ pub enum Capability {
///
/// [`Capability::SystemAdmin`] is required to use bpf_probe_write_user.
///
- /// [`Capability::SystemAdmin`] is required to iterate system wide loaded
- /// programs, maps, links, BTFs and convert their IDs to file descriptors.
+ /// [`Capability::SystemAdmin`] is required to iterate system-wide loaded
+ /// programs, maps, links, and BTFs, and convert their IDs to file
+ /// descriptors.
///
/// [`Capability::PerformanceMonitoring`] and
/// [`Capability::BerkeleyPacketFilters`] are required to load tracing
@@ -443,7 +444,7 @@ bitflags! {
/// Set [`NO_CAP_AMBIENT_RAISE`] irreversibly.
const NO_CAP_AMBIENT_RAISE_LOCKED = 1_u32 << 7;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -742,18 +743,20 @@ const PR_MTE_TAG_SHIFT: u32 = 3;
const PR_MTE_TAG_MASK: u32 = 0xffff_u32 << PR_MTE_TAG_SHIFT;
bitflags! {
- /// Zero means addresses that are passed for the purpose of being dereferenced by the kernel must be untagged.
+ /// Zero means addresses that are passed for the purpose of being
+ /// dereferenced by the kernel must be untagged.
#[repr(transparent)]
#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
pub struct TaggedAddressMode: u32 {
- /// Addresses that are passed for the purpose of being dereferenced by the kernel may be tagged.
+ /// Addresses that are passed for the purpose of being dereferenced by
+ /// the kernel may be tagged.
const ENABLED = 1_u32 << 0;
/// Synchronous tag check fault mode.
const TCF_SYNC = 1_u32 << 1;
/// Asynchronous tag check fault mode.
const TCF_ASYNC = 1_u32 << 2;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -781,8 +784,8 @@ const PR_SET_TAGGED_ADDR_CTRL: c_int = 55;
///
/// # Safety
///
-/// Please ensure the conditions necessary to safely call this function,
-/// as detailed in the references above.
+/// Please ensure the conditions necessary to safely call this function, as
+/// detailed in the references above.
///
/// [`prctl(PR_SET_TAGGED_ADDR_CTRL,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
#[inline]
@@ -810,8 +813,8 @@ const PR_SYS_DISPATCH_OFF: usize = 0;
///
/// # Safety
///
-/// Please ensure the conditions necessary to safely call this function,
-/// as detailed in the references above.
+/// Please ensure the conditions necessary to safely call this function, as
+/// detailed in the references above.
///
/// [`prctl(PR_SET_SYSCALL_USER_DISPATCH,PR_SYS_DISPATCH_OFF,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
#[inline]
@@ -856,8 +859,8 @@ impl TryFrom<u8> for SysCallUserDispatchFastSwitch {
///
/// # Safety
///
-/// Please ensure the conditions necessary to safely call this function,
-/// as detailed in the references above.
+/// Please ensure the conditions necessary to safely call this function, as
+/// detailed in the references above.
///
/// [`prctl(PR_SET_SYSCALL_USER_DISPATCH,PR_SYS_DISPATCH_ON,...)`]: https://man7.org/linux/man-pages/man2/prctl.2.html
#[inline]
diff --git a/vendor/rustix/src/thread/setns.rs b/vendor/rustix/src/thread/setns.rs
index 4568912b2..ef61d11e8 100644
--- a/vendor/rustix/src/thread/setns.rs
+++ b/vendor/rustix/src/thread/setns.rs
@@ -31,7 +31,7 @@ bitflags! {
/// Network name space.
const NETWORK = CLONE_NEWNET;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
@@ -86,7 +86,7 @@ bitflags! {
/// `CLONE_SYSVSEM`.
const SYSVSEM = CLONE_SYSVSEM;
- /// <https://docs.rs/bitflags/latest/bitflags/#externally-defined-flags>
+ /// <https://docs.rs/bitflags/*/bitflags/#externally-defined-flags>
const _ = !0;
}
}
diff --git a/vendor/rustix/src/timespec.rs b/vendor/rustix/src/timespec.rs
index 51c2d2443..a2df0e7b9 100644
--- a/vendor/rustix/src/timespec.rs
+++ b/vendor/rustix/src/timespec.rs
@@ -1,6 +1,7 @@
//! `Timespec` and related types, which are used by multiple public API
//! modules.
+#[cfg(not(fix_y2038))]
use crate::backend::c;
/// `struct timespec`
@@ -28,18 +29,22 @@ pub type Secs = c::time_t;
#[cfg(fix_y2038)]
pub type Secs = i64;
-/// A type for the `tv_nsec` field of [`Timespec`].
-#[cfg(all(libc, target_arch = "x86_64", target_pointer_width = "32"))]
+/// A type for the `tv_sec` field of [`Timespec`].
+#[cfg(any(
+ fix_y2038,
+ linux_raw,
+ all(libc, target_arch = "x86_64", target_pointer_width = "32")
+))]
pub type Nsecs = i64;
/// A type for the `tv_nsec` field of [`Timespec`].
-#[cfg(all(libc, not(all(target_arch = "x86_64", target_pointer_width = "32"))))]
+#[cfg(all(
+ not(fix_y2038),
+ libc,
+ not(all(target_arch = "x86_64", target_pointer_width = "32"))
+))]
pub type Nsecs = c::c_long;
-/// A type for the `tv_nsec` field of [`Timespec`].
-#[cfg(linux_raw)]
-pub type Nsecs = i64;
-
/// On 32-bit glibc platforms, `timespec` has anonymous padding fields, which
/// Rust doesn't support yet (see `unnamed_fields`), so we define our own
/// struct with explicit padding, with bidirectional `From` impls.
@@ -52,7 +57,7 @@ pub(crate) struct LibcTimespec {
#[cfg(target_endian = "big")]
padding: core::mem::MaybeUninit<u32>,
- pub(crate) tv_nsec: Nsecs,
+ pub(crate) tv_nsec: i32,
#[cfg(target_endian = "little")]
padding: core::mem::MaybeUninit<u32>,
@@ -64,7 +69,7 @@ impl From<LibcTimespec> for Timespec {
fn from(t: LibcTimespec) -> Self {
Self {
tv_sec: t.tv_sec,
- tv_nsec: t.tv_nsec,
+ tv_nsec: t.tv_nsec as _,
}
}
}
@@ -75,7 +80,7 @@ impl From<Timespec> for LibcTimespec {
fn from(t: Timespec) -> Self {
Self {
tv_sec: t.tv_sec,
- tv_nsec: t.tv_nsec,
+ tv_nsec: t.tv_nsec as _,
padding: core::mem::MaybeUninit::uninit(),
}
}
diff --git a/vendor/semver/.cargo-checksum.json b/vendor/semver/.cargo-checksum.json
index 8b2094b6e..33c899ea0 100644
--- a/vendor/semver/.cargo-checksum.json
+++ b/vendor/semver/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"b596875460fd9bbd7c3bd1d3f13f4dd70ccf88ee25fae4bc996f99b179148588","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"de1a03443ab8f147676199856a975ec00f3f7334fc5d5d5e056ec8f3fcb61dd5","benches/parse.rs":"6531f66f80ce2fc83878f9bf84f94c42e96f1e709466f2b88be8d95a3cec1511","build.rs":"9a3d42e37b665745044b5d91c6e02dd458152e336a7013654972f4a1a0b562d9","src/backport.rs":"66db55d15d0e2808bffe4cde7cd1d99bda999b26cbe40bb6b5e43b94f9b631d2","src/display.rs":"9ba42f7a6579aa9c7dd72f2380036f5c9664592f3eacd09ea25cef291a3e64e5","src/error.rs":"895e11a9e454cab207415186b15a29dac1f0a5bf9b8dba7bd45da5bb5a6ace31","src/eval.rs":"b7e7ec976051b9f87ddf5cfdbaad64654d98d86ae0763f7d88b14eeaeac6013c","src/identifier.rs":"459725383cbd0e2d769aa947decd1f031bdc8732339783ad24eb2b44f0f5d040","src/impls.rs":"79b5a2ac6ca3d4cb46adfb1494756079f53bef780dd81c3a8d3adf86f91395c8","src/lib.rs":"280ffdd4bda1aa7fed6c32e5ff57aac382d3619283a675fd23e6f9951f4bd001","src/parse.rs":"920f8327a1ba0c16a28f518f2d50998faf1d6a8db379b92cb72976f176650f09","src/serde.rs":"e2a9b9dc3cd2cccc250eaffad049de418ef791bf8c4a34111a48f068353e0a37","tests/node/mod.rs":"2710d9b8daace2038b66db0f8f4cc522dee938e7cbc42d7739c31995343c32f4","tests/test_autotrait.rs":"2631b78c9c63f1829c814fa88fcab0c5d77eb4e2d9c0c418d50c33e12a511e90","tests/test_identifier.rs":"6c3da46c73df210527b60f1069131b15e2c65eb7b5d11793940d00cf66812f4d","tests/test_version.rs":"4f45827cdab1d965f73b93662b84007d056135c97d5ffaa9973c1d9f58666785","tests/test_version_req.rs":"b6eea0258cc3b6d567a9f6c42693a97316345083495236c47e85374fd45f7cf0","tests/util/mod.rs":"db61c2cd86af864d8be4f2a3d5f25c86d7712201cc6ab47b715facf5f7f275b7"},"package":"b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918"} \ No newline at end of file
+{"files":{"Cargo.toml":"f271bcfad60d3df30778405a9cf9970c4b6eacb328ab36cdfc6c0f1060a56286","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"de1a03443ab8f147676199856a975ec00f3f7334fc5d5d5e056ec8f3fcb61dd5","benches/parse.rs":"6531f66f80ce2fc83878f9bf84f94c42e96f1e709466f2b88be8d95a3cec1511","build.rs":"9a3d42e37b665745044b5d91c6e02dd458152e336a7013654972f4a1a0b562d9","src/backport.rs":"66db55d15d0e2808bffe4cde7cd1d99bda999b26cbe40bb6b5e43b94f9b631d2","src/display.rs":"9ba42f7a6579aa9c7dd72f2380036f5c9664592f3eacd09ea25cef291a3e64e5","src/error.rs":"895e11a9e454cab207415186b15a29dac1f0a5bf9b8dba7bd45da5bb5a6ace31","src/eval.rs":"b7e7ec976051b9f87ddf5cfdbaad64654d98d86ae0763f7d88b14eeaeac6013c","src/identifier.rs":"459725383cbd0e2d769aa947decd1f031bdc8732339783ad24eb2b44f0f5d040","src/impls.rs":"48baf552d28f6d0ce63da2d2d53a710222ed87834d44e8b0493a0827e1d718f2","src/lib.rs":"fa6ee9bfe44353ed9c5e07bcfd676a62070826e04fe669357dd53e940f73a3ce","src/parse.rs":"920f8327a1ba0c16a28f518f2d50998faf1d6a8db379b92cb72976f176650f09","src/serde.rs":"e2a9b9dc3cd2cccc250eaffad049de418ef791bf8c4a34111a48f068353e0a37","tests/node/mod.rs":"2710d9b8daace2038b66db0f8f4cc522dee938e7cbc42d7739c31995343c32f4","tests/test_autotrait.rs":"2631b78c9c63f1829c814fa88fcab0c5d77eb4e2d9c0c418d50c33e12a511e90","tests/test_identifier.rs":"fba0428bf5c43c733d17ca30952822ed6e1af6de1e5ef11bd8fb46c6b10f65fd","tests/test_version.rs":"9587d2c397524e1d33499d9bb2725fe746406fa4d162713b7f56029942a4a84b","tests/test_version_req.rs":"1aa4ad4f58f1ec3226b334d0f82b6ebae732585dd9b2c35328b576a1b3638a8d","tests/util/mod.rs":"b35cd4e7fcc9a6fa2496d163d716155ddd379e027ef9516c1af05ce0cf605ae1"},"package":"836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090"} \ No newline at end of file
diff --git a/vendor/semver/Cargo.toml b/vendor/semver/Cargo.toml
index 64bb05ecc..682bccfeb 100644
--- a/vendor/semver/Cargo.toml
+++ b/vendor/semver/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2018"
rust-version = "1.31"
name = "semver"
-version = "1.0.18"
+version = "1.0.20"
authors = ["David Tolnay <dtolnay@gmail.com>"]
description = "Parser and evaluator for Cargo's flavor of Semantic Versioning"
documentation = "https://docs.rs/semver"
diff --git a/vendor/semver/src/impls.rs b/vendor/semver/src/impls.rs
index c3b6c6013..cc4fd415f 100644
--- a/vendor/semver/src/impls.rs
+++ b/vendor/semver/src/impls.rs
@@ -38,13 +38,13 @@ impl Deref for BuildMetadata {
impl PartialOrd for Prerelease {
fn partial_cmp(&self, rhs: &Self) -> Option<Ordering> {
- Some(Ord::cmp(self, rhs))
+ Some(self.cmp(rhs))
}
}
impl PartialOrd for BuildMetadata {
fn partial_cmp(&self, rhs: &Self) -> Option<Ordering> {
- Some(Ord::cmp(self, rhs))
+ Some(self.cmp(rhs))
}
}
diff --git a/vendor/semver/src/lib.rs b/vendor/semver/src/lib.rs
index d2c4eb378..9fb125513 100644
--- a/vendor/semver/src/lib.rs
+++ b/vendor/semver/src/lib.rs
@@ -60,7 +60,7 @@
//!
//! [Specifying Dependencies]: https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html
-#![doc(html_root_url = "https://docs.rs/semver/1.0.18")]
+#![doc(html_root_url = "https://docs.rs/semver/1.0.20")]
#![cfg_attr(doc_cfg, feature(doc_cfg))]
#![cfg_attr(all(not(feature = "std"), not(no_alloc_crate)), no_std)]
#![cfg_attr(not(no_unsafe_op_in_unsafe_fn_lint), deny(unsafe_op_in_unsafe_fn))]
@@ -102,6 +102,7 @@ mod serde;
use crate::alloc::vec::Vec;
use crate::identifier::Identifier;
+use core::cmp::Ordering;
use core::str::FromStr;
#[allow(unused_imports)]
@@ -431,6 +432,53 @@ impl Version {
pub fn parse(text: &str) -> Result<Self, Error> {
Version::from_str(text)
}
+
+ /// Compare the major, minor, patch, and pre-release value of two versions,
+ /// disregarding build metadata. Versions that differ only in build metadata
+ /// are considered equal. This comparison is what the SemVer spec refers to
+ /// as "precedence".
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use semver::Version;
+ ///
+ /// let mut versions = [
+ /// "1.20.0+c144a98".parse::<Version>().unwrap(),
+ /// "1.20.0".parse().unwrap(),
+ /// "1.0.0".parse().unwrap(),
+ /// "1.0.0-alpha".parse().unwrap(),
+ /// "1.20.0+bc17664".parse().unwrap(),
+ /// ];
+ ///
+ /// // This is a stable sort, so it preserves the relative order of equal
+ /// // elements. The three 1.20.0 versions differ only in build metadata so
+ /// // they are not reordered relative to one another.
+ /// versions.sort_by(Version::cmp_precedence);
+ /// assert_eq!(versions, [
+ /// "1.0.0-alpha".parse().unwrap(),
+ /// "1.0.0".parse().unwrap(),
+ /// "1.20.0+c144a98".parse().unwrap(),
+ /// "1.20.0".parse().unwrap(),
+ /// "1.20.0+bc17664".parse().unwrap(),
+ /// ]);
+ ///
+ /// // Totally order the versions, including comparing the build metadata.
+ /// versions.sort();
+ /// assert_eq!(versions, [
+ /// "1.0.0-alpha".parse().unwrap(),
+ /// "1.0.0".parse().unwrap(),
+ /// "1.20.0".parse().unwrap(),
+ /// "1.20.0+bc17664".parse().unwrap(),
+ /// "1.20.0+c144a98".parse().unwrap(),
+ /// ]);
+ /// ```
+ pub fn cmp_precedence(&self, other: &Self) -> Ordering {
+ Ord::cmp(
+ &(self.major, self.minor, self.patch, &self.pre),
+ &(other.major, other.minor, other.patch, &other.pre),
+ )
+ }
}
impl VersionReq {
diff --git a/vendor/semver/tests/test_identifier.rs b/vendor/semver/tests/test_identifier.rs
index dc888c9c1..40d859654 100644
--- a/vendor/semver/tests/test_identifier.rs
+++ b/vendor/semver/tests/test_identifier.rs
@@ -43,3 +43,9 @@ fn test_eq() {
assert_ne!(prerelease("aaaaaaaaa"), prerelease("bbbbbbbbb"));
assert_ne!(build_metadata("1"), build_metadata("001"));
}
+
+#[test]
+fn test_prerelease() {
+ let err = prerelease_err("1.b\0");
+ assert_to_string(err, "unexpected character in pre-release identifier");
+}
diff --git a/vendor/semver/tests/test_version.rs b/vendor/semver/tests/test_version.rs
index de3628fac..991087f7d 100644
--- a/vendor/semver/tests/test_version.rs
+++ b/vendor/semver/tests/test_version.rs
@@ -47,6 +47,18 @@ fn test_parse() {
let err = version_err("1.2.3-01");
assert_to_string(err, "invalid leading zero in pre-release identifier");
+ let err = version_err("1.2.3++");
+ assert_to_string(err, "empty identifier segment in build metadata");
+
+ let err = version_err("07");
+ assert_to_string(err, "invalid leading zero in major version number");
+
+ let err = version_err("111111111111111111111.0.0");
+ assert_to_string(err, "value of major version number exceeds u64::MAX");
+
+ let err = version_err("8\0");
+ assert_to_string(err, "unexpected character '\\0' after major version number");
+
let parsed = version("1.2.3");
let expected = Version::new(1, 2, 3);
assert_eq!(parsed, expected);
diff --git a/vendor/semver/tests/test_version_req.rs b/vendor/semver/tests/test_version_req.rs
index 98a03ac89..1ed2358a3 100644
--- a/vendor/semver/tests/test_version_req.rs
+++ b/vendor/semver/tests/test_version_req.rs
@@ -168,6 +168,9 @@ pub fn test_multiple() {
// https://github.com/steveklabnik/semver/issues/56
let err = req_err("1.2.3 - 2.3.4");
assert_to_string(err, "expected comma after patch version number, found '-'");
+
+ let err = req_err(">1, >2, >3, >4, >5, >6, >7, >8, >9, >10, >11, >12, >13, >14, >15, >16, >17, >18, >19, >20, >21, >22, >23, >24, >25, >26, >27, >28, >29, >30, >31, >32, >33");
+ assert_to_string(err, "excessive number of version comparators");
}
#[test]
@@ -332,7 +335,7 @@ pub fn test_pre() {
}
#[test]
-pub fn test_parse_errors() {
+pub fn test_parse() {
let err = req_err("\0");
assert_to_string(
err,
@@ -368,6 +371,45 @@ pub fn test_parse_errors() {
}
#[test]
+fn test_comparator_parse() {
+ let parsed = comparator("1.2.3-alpha");
+ assert_to_string(parsed, "^1.2.3-alpha");
+
+ let parsed = comparator("2.X");
+ assert_to_string(parsed, "2.*");
+
+ let parsed = comparator("2");
+ assert_to_string(parsed, "^2");
+
+ let parsed = comparator("2.x.x");
+ assert_to_string(parsed, "2.*");
+
+ let err = comparator_err("1.2.3-01");
+ assert_to_string(err, "invalid leading zero in pre-release identifier");
+
+ let err = comparator_err("1.2.3+4.");
+ assert_to_string(err, "empty identifier segment in build metadata");
+
+ let err = comparator_err(">");
+ assert_to_string(
+ err,
+ "unexpected end of input while parsing major version number",
+ );
+
+ let err = comparator_err("1.");
+ assert_to_string(
+ err,
+ "unexpected end of input while parsing minor version number",
+ );
+
+ let err = comparator_err("1.*.");
+ assert_to_string(err, "unexpected character after wildcard in version req");
+
+ let err = comparator_err("1.2.3+4ÿ");
+ assert_to_string(err, "unexpected character 'ÿ' after build metadata");
+}
+
+#[test]
fn test_cargo3202() {
let ref r = req("0.*.*");
assert_to_string(r, "0.*");
diff --git a/vendor/semver/tests/util/mod.rs b/vendor/semver/tests/util/mod.rs
index 5cc142c48..07d691fab 100644
--- a/vendor/semver/tests/util/mod.rs
+++ b/vendor/semver/tests/util/mod.rs
@@ -1,6 +1,6 @@
#![allow(dead_code)]
-use semver::{BuildMetadata, Error, Prerelease, Version, VersionReq};
+use semver::{BuildMetadata, Comparator, Error, Prerelease, Version, VersionReq};
use std::fmt::Display;
#[cfg_attr(not(no_track_caller), track_caller)]
@@ -24,11 +24,26 @@ pub(super) fn req_err(text: &str) -> Error {
}
#[cfg_attr(not(no_track_caller), track_caller)]
+pub(super) fn comparator(text: &str) -> Comparator {
+ Comparator::parse(text).unwrap()
+}
+
+#[cfg_attr(not(no_track_caller), track_caller)]
+pub(super) fn comparator_err(text: &str) -> Error {
+ Comparator::parse(text).unwrap_err()
+}
+
+#[cfg_attr(not(no_track_caller), track_caller)]
pub(super) fn prerelease(text: &str) -> Prerelease {
Prerelease::new(text).unwrap()
}
#[cfg_attr(not(no_track_caller), track_caller)]
+pub(super) fn prerelease_err(text: &str) -> Error {
+ Prerelease::new(text).unwrap_err()
+}
+
+#[cfg_attr(not(no_track_caller), track_caller)]
pub(super) fn build_metadata(text: &str) -> BuildMetadata {
BuildMetadata::new(text).unwrap()
}
diff --git a/vendor/serde/.cargo-checksum.json b/vendor/serde/.cargo-checksum.json
index 7863c8832..ae858ce17 100644
--- a/vendor/serde/.cargo-checksum.json
+++ b/vendor/serde/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"8621f68ade69df7e9aca4e68e7f5e0609dee3203771951c099081251ba2fd67b","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"c3ece10a36d19b4e857a770eaf74a2164d220f55fa11947065a3898c1697ecef","build.rs":"470a0da188274490a4ebede25b105d86f02cbf9a852b004d0759a6931b4e5e1e","crates-io.md":"56e988ac4944c45f5bf5051e3827892ed8fb817853d99d9df1fff6621108e270","src/de/format.rs":"c85071b016df643b161859682d21ce34fa0ebf2a3bdbeeea69859da48f5d934f","src/de/ignored_any.rs":"6480f2b2a83dc4764d01b2eec7309729eef2492eede2e5ee98d23a60b05198eb","src/de/impls.rs":"d6f7d96f250acaafc4fd5f9dbe025ef2653d154c914d7db7aa68aee1480042d5","src/de/mod.rs":"ea4c534d938a91def4c574cd166e58972cbcb2c146264f002fe24e5960da0118","src/de/seed.rs":"045d890712a04eb33ffc5a021e5d948a63c89402b8ffeea749df2171b7484f8f","src/de/size_hint.rs":"fff83dc39d30e75e8e611991f9c5399188a1aad23a6462dbca2c8b62655cfedb","src/de/value.rs":"2577d0e7729fe6499ced1480f74ef8658bc72e572ec9f0a76e1b7ae067952bb9","src/integer128.rs":"29ef30b7d94507b34807090e68173767cdc7aff62edccd38affe69e75338dddc","src/lib.rs":"3b0fc06e34a983a2daf503b39ca5091a89378bcd4cfca27c42105995d2e21544","src/macros.rs":"e3486ef4a9a4ed1b27234aa1817ccb25ec0eb026ffc95e2c71c7b917f1f45629","src/private/de.rs":"6557a124fdaf61f9c7cd80163e40f4a453354e45b63a4eb55dafdfe0159f6881","src/private/doc.rs":"9ad740e9ea2eedf861b77116eda9a6fb74bc8553541cd17d1bc5791a3ef3271a","src/private/mod.rs":"b8f0c348621d91dd9da3db83d8877e70bc61ad0a2dc2d6fb57c6fc2c2cbafa26","src/private/ser.rs":"656613691bd8d40cb70a52d4ebe3ee96a993c8a1292d50822d9ca5bdad84426b","src/ser/fmt.rs":"77a5583e5c227ea1982b097ed6378af5c899d43761d71e33440262fd35944695","src/ser/impls.rs":"52de614a78b78e5a878b583c28f1cb9e5e637a22f5a0d8bd5077083cd77c427b","src/ser/impossible.rs":"e11b37689ec1395378d546fce74221ca9046d0761744301f12029102fd07e30e","src/ser/mod.rs":"e95dabf07216136440d6a2822cf37775f583d141c21d1b37ec9c55ae2a5024ab","src/std_error.rs":"25a07149e2e468747ffa5a58051c7f93d7b3c0fa0372f012a96c97ec8ab03b97"},"package":"cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"} \ No newline at end of file
+{"files":{"Cargo.toml":"bb01ab870a09677abe91d6957adf97e6c14ecf2570f600018bab2f5baff9d63f","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"c3ece10a36d19b4e857a770eaf74a2164d220f55fa11947065a3898c1697ecef","build.rs":"f9ba30324b9ce085c903595fb55a5293f8c2348ff36bfe870521b935ae6d105c","crates-io.md":"56e988ac4944c45f5bf5051e3827892ed8fb817853d99d9df1fff6621108e270","src/de/format.rs":"c85071b016df643b161859682d21ce34fa0ebf2a3bdbeeea69859da48f5d934f","src/de/ignored_any.rs":"6480f2b2a83dc4764d01b2eec7309729eef2492eede2e5ee98d23a60b05198eb","src/de/impls.rs":"807dd688e9022caaf2f230cf50c46e0691445f6293a43e7f5d4864eaf3d9582c","src/de/mod.rs":"ea4c534d938a91def4c574cd166e58972cbcb2c146264f002fe24e5960da0118","src/de/seed.rs":"045d890712a04eb33ffc5a021e5d948a63c89402b8ffeea749df2171b7484f8f","src/de/size_hint.rs":"fff83dc39d30e75e8e611991f9c5399188a1aad23a6462dbca2c8b62655cfedb","src/de/value.rs":"2577d0e7729fe6499ced1480f74ef8658bc72e572ec9f0a76e1b7ae067952bb9","src/integer128.rs":"29ef30b7d94507b34807090e68173767cdc7aff62edccd38affe69e75338dddc","src/lib.rs":"7f8b9eecfa7248a45632d0c59d76fa9b3b34058612dd8d55f02dfc2e6e9cc096","src/macros.rs":"e3486ef4a9a4ed1b27234aa1817ccb25ec0eb026ffc95e2c71c7b917f1f45629","src/private/de.rs":"6557a124fdaf61f9c7cd80163e40f4a453354e45b63a4eb55dafdfe0159f6881","src/private/doc.rs":"9ad740e9ea2eedf861b77116eda9a6fb74bc8553541cd17d1bc5791a3ef3271a","src/private/mod.rs":"b8f0c348621d91dd9da3db83d8877e70bc61ad0a2dc2d6fb57c6fc2c2cbafa26","src/private/ser.rs":"656613691bd8d40cb70a52d4ebe3ee96a993c8a1292d50822d9ca5bdad84426b","src/ser/fmt.rs":"77a5583e5c227ea1982b097ed6378af5c899d43761d71e33440262fd35944695","src/ser/impls.rs":"52de614a78b78e5a878b583c28f1cb9e5e637a22f5a0d8bd5077083cd77c427b","src/ser/impossible.rs":"e11b37689ec1395378d546fce74221ca9046d0761744301f12029102fd07e30e","src/ser/mod.rs":"e95dabf07216136440d6a2822cf37775f583d141c21d1b37ec9c55ae2a5024ab","src/std_error.rs":"25a07149e2e468747ffa5a58051c7f93d7b3c0fa0372f012a96c97ec8ab03b97"},"package":"91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7"} \ No newline at end of file
diff --git a/vendor/serde/Cargo.toml b/vendor/serde/Cargo.toml
index 43c84e90d..32aaf2a18 100644
--- a/vendor/serde/Cargo.toml
+++ b/vendor/serde/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2018"
rust-version = "1.31"
name = "serde"
-version = "1.0.188"
+version = "1.0.190"
authors = [
"Erick Tryzelaar <erick.tryzelaar@gmail.com>",
"David Tolnay <dtolnay@gmail.com>",
@@ -66,4 +66,4 @@ std = []
unstable = []
[target."cfg(any())".dependencies.serde_derive]
-version = "=1.0.188"
+version = "=1.0.190"
diff --git a/vendor/serde/build.rs b/vendor/serde/build.rs
index 2b10c5893..fe5486a7a 100644
--- a/vendor/serde/build.rs
+++ b/vendor/serde/build.rs
@@ -27,6 +27,12 @@ fn main() {
println!("cargo:rustc-cfg=no_relaxed_trait_bounds");
}
+ // f32::copysign and f64::copysign stabilized in Rust 1.35.
+ // https://blog.rust-lang.org/2019/05/23/Rust-1.35.0.html#copy-the-sign-of-a-floating-point-number-onto-another
+ if minor < 35 {
+ println!("cargo:rustc-cfg=no_float_copysign");
+ }
+
// Current minimum supported version of serde_derive crate is Rust 1.56.
if minor < 56 {
println!("cargo:rustc-cfg=no_serde_derive");
diff --git a/vendor/serde/src/de/impls.rs b/vendor/serde/src/de/impls.rs
index fbee1554b..b7e4c549d 100644
--- a/vendor/serde/src/de/impls.rs
+++ b/vendor/serde/src/de/impls.rs
@@ -180,6 +180,28 @@ macro_rules! num_as_self {
};
}
+macro_rules! num_as_copysign_self {
+ ($ty:ident : $visit:ident) => {
+ #[inline]
+ fn $visit<E>(self, v: $ty) -> Result<Self::Value, E>
+ where
+ E: Error,
+ {
+ #[cfg(any(no_float_copysign, not(feature = "std")))]
+ {
+ Ok(v as Self::Value)
+ }
+
+ #[cfg(all(not(no_float_copysign), feature = "std"))]
+ {
+ // Preserve sign of NaN. The `as` produces a nondeterministic sign.
+ let sign = if v.is_sign_positive() { 1.0 } else { -1.0 };
+ Ok((v as Self::Value).copysign(sign))
+ }
+ }
+ };
+}
+
macro_rules! int_to_int {
($ty:ident : $visit:ident) => {
#[inline]
@@ -351,7 +373,7 @@ impl_deserialize_num! {
impl_deserialize_num! {
f32, deserialize_f32
num_self!(f32:visit_f32);
- num_as_self!(f64:visit_f64);
+ num_as_copysign_self!(f64:visit_f64);
num_as_self!(i8:visit_i8 i16:visit_i16 i32:visit_i32 i64:visit_i64);
num_as_self!(u8:visit_u8 u16:visit_u16 u32:visit_u32 u64:visit_u64);
}
@@ -359,7 +381,7 @@ impl_deserialize_num! {
impl_deserialize_num! {
f64, deserialize_f64
num_self!(f64:visit_f64);
- num_as_self!(f32:visit_f32);
+ num_as_copysign_self!(f32:visit_f32);
num_as_self!(i8:visit_i8 i16:visit_i16 i32:visit_i32 i64:visit_i64);
num_as_self!(u8:visit_u8 u16:visit_u16 u32:visit_u32 u64:visit_u64);
}
diff --git a/vendor/serde/src/lib.rs b/vendor/serde/src/lib.rs
index f7d445749..8c6a4affc 100644
--- a/vendor/serde/src/lib.rs
+++ b/vendor/serde/src/lib.rs
@@ -63,6 +63,7 @@
//! and from DynamoDB.
//! - [Hjson], a syntax extension to JSON designed around human reading and
//! editing. *(deserialization only)*
+//! - [CSV], Comma-separated values is a tabular text file format.
//!
//! [JSON]: https://github.com/serde-rs/json
//! [Postcard]: https://github.com/jamesmunns/postcard
@@ -89,11 +90,12 @@
//! [DynamoDB Items]: https://docs.rs/serde_dynamo
//! [rusoto_dynamodb]: https://docs.rs/rusoto_dynamodb
//! [Hjson]: https://github.com/Canop/deser-hjson
+//! [CSV]: https://docs.rs/csv
////////////////////////////////////////////////////////////////////////////////
// Serde types in rustdoc of other crates get linked to here.
-#![doc(html_root_url = "https://docs.rs/serde/1.0.188")]
+#![doc(html_root_url = "https://docs.rs/serde/1.0.190")]
// Support using Serde without the standard library!
#![cfg_attr(not(feature = "std"), no_std)]
// Unstable functionality only if the user asks for it. For tracking and
@@ -166,11 +168,14 @@ mod lib {
pub use std::*;
}
- pub use self::core::{cmp, iter, mem, num, ptr, slice, str};
pub use self::core::{f32, f64};
pub use self::core::{i16, i32, i64, i8, isize};
+ pub use self::core::{iter, num, ptr, str};
pub use self::core::{u16, u32, u64, u8, usize};
+ #[cfg(any(feature = "std", feature = "alloc"))]
+ pub use self::core::{cmp, mem, slice};
+
pub use self::core::cell::{Cell, RefCell};
pub use self::core::clone::{self, Clone};
pub use self::core::cmp::Reverse;
diff --git a/vendor/serde_derive/.cargo-checksum.json b/vendor/serde_derive/.cargo-checksum.json
index d9b8ba416..d1978884a 100644
--- a/vendor/serde_derive/.cargo-checksum.json
+++ b/vendor/serde_derive/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"61f217b58eb183aee7151c47faf2fb2677dd663f0bb0243338c343066d9c5d32","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"c3ece10a36d19b4e857a770eaf74a2164d220f55fa11947065a3898c1697ecef","crates-io.md":"56e988ac4944c45f5bf5051e3827892ed8fb817853d99d9df1fff6621108e270","src/bound.rs":"1b4504ae82ec3dc287eeb4262a57380af484f483c1d6b6c8ebb121370fda135a","src/de.rs":"d82c3bc1c7aec8aa7d513ceae65646421910781a3c277c817cf2e15e8e116dcf","src/dummy.rs":"9533dfee23f20d92ea75734c739022820c2787ded0d54f459feacdeb770ec912","src/fragment.rs":"6757cb4c3131d4300f093572efc273c4ab5a20e3e1efb54a311dcfa52d0bd6eb","src/internals/ast.rs":"7dc997e4090033bbd1d0bdd870e8bb87b096b7f66cfd02047f6b85ebdd569b12","src/internals/attr.rs":"7ec05ffad5b049ba2c91cfb9eedc5d472030682d9c8bcd81040f646525dcc7cd","src/internals/case.rs":"10c8dda2b32d8c6c6b63cf09cdc63d02375af7e95ecefe8fecb34f93b65191bb","src/internals/check.rs":"11275a0889c41323306f5de737f7aacb341adf1dcec298ce40860615be898b3f","src/internals/ctxt.rs":"83a4e6fbe0e439d578478883594407e03f2f340541be479bdf0b04a202633a37","src/internals/mod.rs":"ed021ca635c18132a0e5c3d90f21b7f65def0a61e946421a30200b5b9ab6ad43","src/internals/receiver.rs":"105d72145d1e6a45cdccee3694fcba599ece59194d2e070e8c5669c6f18c81da","src/internals/respan.rs":"899753859c58ce5f532a3ec4584796a52f13ed5a0533191e48c953ba5c1b52ff","src/internals/symbol.rs":"d619e88caa3c7a09b03014257f2b349ee922290062d9b97b4dd19d0e64532690","src/lib.rs":"29f5b1c463429105c3529a8c02354d5f4117174928055f5efc98886aa8a0e94c","src/pretend.rs":"2c79785bc42e975534d7d88c04b46377cefd3db948b63a32234707531c55b099","src/ser.rs":"e3341471cea9d7e2fb4043e5d1746862beb9a4e25196170879eeac529d460920","src/this.rs":"87818dc80cbb521b51938a653d09daf10aafc220bb10425948de82ad670fcb85"},"package":"4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"} \ No newline at end of file
+{"files":{"Cargo.toml":"7b54bd563c18f13902ff05933454d0957cf65a13a5ef4c97f7c77ca0d5baab5b","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"c3ece10a36d19b4e857a770eaf74a2164d220f55fa11947065a3898c1697ecef","crates-io.md":"56e988ac4944c45f5bf5051e3827892ed8fb817853d99d9df1fff6621108e270","src/bound.rs":"1b4504ae82ec3dc287eeb4262a57380af484f483c1d6b6c8ebb121370fda135a","src/de.rs":"c221ab2b94a5d80dccff74a37f3448b3d695656552b452595dc289c73b12fb2b","src/dummy.rs":"9533dfee23f20d92ea75734c739022820c2787ded0d54f459feacdeb770ec912","src/fragment.rs":"6757cb4c3131d4300f093572efc273c4ab5a20e3e1efb54a311dcfa52d0bd6eb","src/internals/ast.rs":"7dc997e4090033bbd1d0bdd870e8bb87b096b7f66cfd02047f6b85ebdd569b12","src/internals/attr.rs":"7ec05ffad5b049ba2c91cfb9eedc5d472030682d9c8bcd81040f646525dcc7cd","src/internals/case.rs":"10c8dda2b32d8c6c6b63cf09cdc63d02375af7e95ecefe8fecb34f93b65191bb","src/internals/check.rs":"11275a0889c41323306f5de737f7aacb341adf1dcec298ce40860615be898b3f","src/internals/ctxt.rs":"83a4e6fbe0e439d578478883594407e03f2f340541be479bdf0b04a202633a37","src/internals/mod.rs":"ed021ca635c18132a0e5c3d90f21b7f65def0a61e946421a30200b5b9ab6ad43","src/internals/receiver.rs":"105d72145d1e6a45cdccee3694fcba599ece59194d2e070e8c5669c6f18c81da","src/internals/respan.rs":"899753859c58ce5f532a3ec4584796a52f13ed5a0533191e48c953ba5c1b52ff","src/internals/symbol.rs":"d619e88caa3c7a09b03014257f2b349ee922290062d9b97b4dd19d0e64532690","src/lib.rs":"5e34f7d6b006e03bd7a434cf2f351207b0c53d47cd1256fc9d0d4ee408451d0d","src/pretend.rs":"2c79785bc42e975534d7d88c04b46377cefd3db948b63a32234707531c55b099","src/ser.rs":"e3341471cea9d7e2fb4043e5d1746862beb9a4e25196170879eeac529d460920","src/this.rs":"87818dc80cbb521b51938a653d09daf10aafc220bb10425948de82ad670fcb85"},"package":"67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3"} \ No newline at end of file
diff --git a/vendor/serde_derive/Cargo.toml b/vendor/serde_derive/Cargo.toml
index c0e181032..29209c6e7 100644
--- a/vendor/serde_derive/Cargo.toml
+++ b/vendor/serde_derive/Cargo.toml
@@ -12,7 +12,7 @@
[package]
rust-version = "1.56"
name = "serde_derive"
-version = "1.0.188"
+version = "1.0.190"
authors = [
"Erick Tryzelaar <erick.tryzelaar@gmail.com>",
"David Tolnay <dtolnay@gmail.com>",
diff --git a/vendor/serde_derive/src/de.rs b/vendor/serde_derive/src/de.rs
index ee8a23766..e3b737c61 100644
--- a/vendor/serde_derive/src/de.rs
+++ b/vendor/serde_derive/src/de.rs
@@ -1737,7 +1737,6 @@ fn deserialize_untagged_enum_after(
quote!(__deserializer),
))
});
- let attempts = first_attempt.into_iter().chain(attempts);
// TODO this message could be better by saving the errors from the failed
// attempts. The heuristic used by TOML was to count the number of fields
// processed before an error, and use the error that happened after the
@@ -1750,10 +1749,23 @@ fn deserialize_untagged_enum_after(
);
let fallthrough_msg = cattrs.expecting().unwrap_or(&fallthrough_msg);
+ // Ignore any error associated with non-untagged deserialization so that we
+ // can fall through to the untagged variants. This may be infallible so we
+ // need to provide the error type.
+ let first_attempt = first_attempt.map(|expr| {
+ quote! {
+ if let _serde::__private::Result::<_, __D::Error>::Ok(__ok) = (|| #expr)() {
+ return _serde::__private::Ok(__ok);
+ }
+ }
+ });
+
quote_block! {
let __content = <_serde::__private::de::Content as _serde::Deserialize>::deserialize(__deserializer)?;
let __deserializer = _serde::__private::de::ContentRefDeserializer::<__D::Error>::new(&__content);
+ #first_attempt
+
#(
if let _serde::__private::Ok(__ok) = #attempts {
return _serde::__private::Ok(__ok);
@@ -1828,7 +1840,7 @@ fn deserialize_internally_tagged_variant(
let this_value = &params.this_value;
let type_name = params.type_name();
let variant_name = variant.ident.to_string();
- let default = variant.fields.get(0).map(|field| {
+ let default = variant.fields.first().map(|field| {
let default = Expr(expr_is_missing(field, cattrs));
quote!((#default))
});
@@ -1873,7 +1885,7 @@ fn deserialize_untagged_variant(
let this_value = &params.this_value;
let type_name = params.type_name();
let variant_name = variant.ident.to_string();
- let default = variant.fields.get(0).map(|field| {
+ let default = variant.fields.first().map(|field| {
let default = Expr(expr_is_missing(field, cattrs));
quote!((#default))
});
diff --git a/vendor/serde_derive/src/lib.rs b/vendor/serde_derive/src/lib.rs
index d094242f3..7d653ff0c 100644
--- a/vendor/serde_derive/src/lib.rs
+++ b/vendor/serde_derive/src/lib.rs
@@ -13,7 +13,7 @@
//!
//! [https://serde.rs/derive.html]: https://serde.rs/derive.html
-#![doc(html_root_url = "https://docs.rs/serde_derive/1.0.188")]
+#![doc(html_root_url = "https://docs.rs/serde_derive/1.0.190")]
// Ignored clippy lints
#![allow(
// clippy false positive: https://github.com/rust-lang/rust-clippy/issues/7054
diff --git a/vendor/serde_json/.cargo-checksum.json b/vendor/serde_json/.cargo-checksum.json
index defc5e690..eae5424f1 100644
--- a/vendor/serde_json/.cargo-checksum.json
+++ b/vendor/serde_json/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CONTRIBUTING.md":"f5270cafba66223a7b51ffc0d286075a17bb7cd88762fc80d333d3102629f4d8","Cargo.toml":"299e588dc56a4f18b4cccbb2501f956bcf2a161ee7831a110c6080f9d8ca90b2","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"1e5a86e6b5e79f92f9e7226d9a8ba16d4ec70567d153c9cacebcb582770378a1","build.rs":"0dd97b63a07aa2d4bbb4c7d0e73b521da130769da9f49f28a7b63332781eb3de","src/de.rs":"8cb56c5168ad52dfff97a0f3bc88c200e3ad0a9278eedaa27629120f8b6e6052","src/error.rs":"c8998e8595127d712c2d2c85f6fc69d59f9fcb567009631b5b029669542dcc75","src/features_check/error.rs":"d7359f864afbfe105a38abea9f563dc423036ebc4c956a5695a4beef144dc7ec","src/features_check/mod.rs":"2209f8d5c46b50c8a3b8dc22338dcaf0135d192e8b05d2f456cbe6a73104e958","src/io/core.rs":"60ba28f67a9acaecf8964b611efba416b13f9f2bae4befc329fdf0e037293802","src/io/mod.rs":"fd1ed5080495cab21117f6f7d3c2c9e3687cad0c69a0cd087b08a145a9e672da","src/iter.rs":"f832c469cd7999d26ba9b76baa69b257a212a7edb3dfdf9b1d1bb35e8da85fa9","src/lexical/algorithm.rs":"bd6106e5d8875c9ff1c1d57256b459a4f0992d14a0df1a5fffcd3d3cbdccee8c","src/lexical/bhcomp.rs":"b7c68d74c0055eb67ec2c1bcf27bbc28bef8f1bbc43db8eb94ba69892230add6","src/lexical/bignum.rs":"4230cde10dc8eae456a713cf90ec4e48dff4b1d0c542621ce7f00f39ade2645e","src/lexical/cached.rs":"0e127398691f8042c19cde209e7f4b0161f0f3150342430145929f711e6fdac8","src/lexical/cached_float80.rs":"0f8f74a22cb7d871322a9893bffd0255ca10bf9dffd13afb2462dd3d7f51805f","src/lexical/digit.rs":"9502805adbc3da059131d1fac0a802e17065b36cd7472606b3af24e3241d5cb8","src/lexical/errors.rs":"3d9f6de6245533bcb101dfd718cfed61d59dc293f6768cedae28aa13ace164f5","src/lexical/exponent.rs":"387e945b97dc7ba48a7091c50d228a0dde3a1c4145703d4ab9c31191a91693b0","src/lexical/float.rs":"fe356213c92a049f4bef2f58bc0e3a26866ca06b8c1d74d0f961c5b883852cad","src/lexical/large_powers.rs":"34537f5c701afce1ec2a1fd3c14950381b2e27c9ad74f002c91f3708e8da9ca5","src/lexical/large_powers32.rs":"d533037c6141e6671102aee490c9cdeaba81e667ddca781b2b99db2c455e4a1a","src/lexical/large_powers64.rs":"745dd7c0cbe499eec027ef586248881011d9df20c7efab7929c1807b59886ba1","src/lexical/math.rs":"240804aa030849495fa03a83a0ee8539d5a5c8639b825f2d69d27b7567b06fb3","src/lexical/mod.rs":"4b4c5228779c0f135a4cb018700e3bcd495da48b74421a86f6b8b304acdef924","src/lexical/num.rs":"cf705c62612e31d704f43d94a633ea1243c6befad7ef5792e2e881a7fd21e809","src/lexical/parse.rs":"c2bfac4c70a19938ced61e991f4ec606764887cf12bac1a0978b5b5318a56aac","src/lexical/rounding.rs":"697207248ba17b7f4965aedb11d276261ada5b06d9c6265d8fd6246664ff6e3c","src/lexical/shift.rs":"bc1ed053dd63d45ac9c35302f18de9f00d94027f28af4ab749c9248439de832a","src/lexical/small_powers.rs":"4608dd218b8002435db7e1ec79d2d0fef5f47ae257b93353326d52ecc80cccda","src/lib.rs":"0c43843f179f928ba8c6a19c4b81c307e54aef2ae90feca88b782ba9e1c853f5","src/macros.rs":"516f69976f433bcc5e48c32b3e29c2e0ab7b549810827d7a9c59171cdf11c1e2","src/map.rs":"b268a714042a3a2ce39878a5ae2eeac305460ccb6615b4b90b96ea38cf7b9e5d","src/number.rs":"21c95a6a8be8df5e2e4e7653984138640c6eb1d3d1b69f2f3841645c25b2226c","src/raw.rs":"d76153f2e8ccb8e770ae9c688c7ca93c3a56c1891c7ef1c0b49a215bb4da52ae","src/read.rs":"49b4b1d067b6485cbded28fb961666ab5df82c36661af722dbae756efb6b2891","src/ser.rs":"ee5b6cb04c2ff7058b52cb5d0383218f484505ce0896e5c7fd5076bd9d90952e","src/value/de.rs":"69d88d0ba8a8fea15964e0c95968e53ab308b143176537bfa6368432a682a65c","src/value/from.rs":"d17ecf4407137d87b1c00b0d3855655923f850c4b668a6c3b670b248e7bf8061","src/value/index.rs":"8a99d8d50f5674181ced22f6e81dc529eaecb01e543e30346e51fe42cb4b8a5f","src/value/mod.rs":"ee7305db19bcf9e9f0bcca8844ce46bf36efe41f6dadc14884d9cf0985f1bf7a","src/value/partial_eq.rs":"b64e1e1dffd50fefe3106ca74499aac01ea3d76b995d3cc1ef3a2b2768d0f1cf","src/value/ser.rs":"6b065423acf88d875d30608d61210a372507c7242d6525e5ef66077296ba32f1","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/debug.rs":"a8451217c1e127ad6e653ef11e0513525ee350e1e37dd575758a8ee9301b28fb","tests/lexical.rs":"b65eaef5edbc3294751c6ddc0a51eaf8de9165d65955f87c2e3b2679a49de3b0","tests/lexical/algorithm.rs":"da378df9ee24bfa033968d5c94e91b58e52c39bf6c825dec51c3eb7250cc5874","tests/lexical/exponent.rs":"26ea92abc654a6a88a8281552bca2f76ea1fa4c17d66a1dd6defe14f7d89b666","tests/lexical/float.rs":"0440f2d85c993bcccd925096d7f4136bf624ffd66b3c7ee565d158390685eb11","tests/lexical/math.rs":"4874be2103be5fbe8b8015354414df271ffa00fd815546fc077f15fb4d7a5a37","tests/lexical/num.rs":"6e650c40de85ed72ac06b6bf1487ba161f3824e26d827df6cfdf2bbdb8d05a05","tests/lexical/parse.rs":"17c73e0a59d462716d974b8dd23a291eb6efdc3a933248874e5eab7e7209d67f","tests/lexical/rounding.rs":"6c56e39ba534616c1b2146e8efa6eb57aed322e683bf23183cd32a61fae6447e","tests/macros/mod.rs":"93aa1d54af20bc2c55b6ae8db73c1414cda2626eb9fa7bd57b9d613a3c6e6a19","tests/map.rs":"dcc5212242e4e93703c4335d54f5603b0211b33d6fb5ab410bb630cda6d46b09","tests/regression.rs":"86731134bfb9bb693d9a4fc62393027de80a8bf031109ea6c7ea475b1ebdde8d","tests/regression/issue1004.rs":"38d7e3b6c515b881078ebd21ca8063d2ca105cd319695d29538f879e37f091b5","tests/regression/issue520.rs":"d146be3472db902b48127d65fe83aa9f698143aca9074c83cd1a9d5dd28e3ec3","tests/regression/issue795.rs":"582e2e7c68113f05a4b1d2cb556a2df7cc77f2ce8164a32c5cc58ae68abb60ec","tests/regression/issue845.rs":"66eb0eeabb744adaad42fd8e2638de22b458a04ec33863e2683b60eb3d500297","tests/regression/issue953.rs":"b2cddc761f5ca6639900c173765a8a5868528a896924e5e925db2696469208f7","tests/stream.rs":"c7d91014538ecd8f495b196d40e999ab2745f2e69fa2ff9e52521605dc6ce856","tests/test.rs":"eff7da41d2e0a89ace8bbfaa3cd731581e1d2a70e40a9a3d11a1ecc4fafafe6e","tests/ui/missing_colon.rs":"d07e0c34d98eb43465f0a0310f2c0b5d5b0d26d243b352a1c6bbe6ad3b27eda9","tests/ui/missing_colon.stderr":"3732fd8f4e57b84efc07170cda5f9c5b2b17c707e23c1659222b5a46f652a8d8","tests/ui/missing_comma.rs":"b8a9662f99c3e6dd2b6417892c37640578ce91d3a8365bf10c1f686a3227aa87","tests/ui/missing_comma.stderr":"eae626cf93c97abd105066e624ca4e8cb096784413b9d2564cf9414a8492bc4d","tests/ui/missing_value.rs":"bca25d67127fb88e7c191c7b03af5a4ce8a9abb630f3d2e6a6c1e77e213dc9a4","tests/ui/missing_value.stderr":"b0df8add5cf74e5df30eedd3ca347e4862c04a01c54d802ff45392f2032065b1","tests/ui/not_found.rs":"d0a7adb309879ff65aee115b52cc33d36f4bad353cf97c4effc34a6128c2bee3","tests/ui/not_found.stderr":"359b751c0c21fab6d460daef4d5f73a265f7769c9b578f98ea3cb6cbf2387643","tests/ui/parse_expr.rs":"32e6d51f528db3d1ab0ed1e24765b865be393565c26f77413c5aa39d601ac563","tests/ui/parse_expr.stderr":"4fcd0a014fbce31c9266bab8527d6e6b6806a0e21d9e0275ce713137856073ce","tests/ui/parse_key.rs":"18829b2af320d5cf8a0a5cd3aaf84c7e92cc874651c30e45a3acafb76c2d8b93","tests/ui/parse_key.stderr":"fcb44e060b804a4762b7291e128c41d7010ffa8ab820b8828fd13fbe6d405ca6","tests/ui/unexpected_after_array_element.rs":"a343fc3104431720bdfcf330bcc3cfcd98c8dec3e951133b495242478b0b7eb3","tests/ui/unexpected_after_array_element.stderr":"8df615998fa3057bb9ed865981a35cdbb771625337048f0ad3fba7734e607adf","tests/ui/unexpected_after_map_entry.rs":"6e3bd2def435ca610e346bbc75cdbaf61963eb2ef1885bb5f76781ba1fac37ef","tests/ui/unexpected_after_map_entry.stderr":"b1985c89075ab48b2158bd1705ed766d37854b3d4620ab257cc8bc319d224f17","tests/ui/unexpected_colon.rs":"a313cff3fed4be4c33f1eda5d0c5c98147fb835a56d36470d9f367352c1d61ef","tests/ui/unexpected_colon.stderr":"b2288742fa6a4a7eb65d2ae899bcfed8795b57bd04958da227d60928a8df26c5","tests/ui/unexpected_comma.rs":"55a8b684bde1ce905837cce719fd457d8898b61cebc27e5b420d05cb6be97256","tests/ui/unexpected_comma.stderr":"4c103ca63ff15e2ca659242cc0eae0612bf050e7580da62f1cf50de8082aa7dc"},"package":"693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360"} \ No newline at end of file
+{"files":{"CONTRIBUTING.md":"f5270cafba66223a7b51ffc0d286075a17bb7cd88762fc80d333d3102629f4d8","Cargo.toml":"e68bf53b10d1809f1f81b9f4a8dc4c2bfb98f18eedf150e2118e9fa13f0dede6","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"e49066294ebbeca4e71e5cb8f2e43b5f7a41cd0b47eeb1bad7b24d3c136bd8c0","build.rs":"83958125f23604be59b63eb47ee06309d012b6b7411ccbe09f9a39b9eff3cc11","src/de.rs":"8cb56c5168ad52dfff97a0f3bc88c200e3ad0a9278eedaa27629120f8b6e6052","src/error.rs":"c8998e8595127d712c2d2c85f6fc69d59f9fcb567009631b5b029669542dcc75","src/features_check/error.rs":"d7359f864afbfe105a38abea9f563dc423036ebc4c956a5695a4beef144dc7ec","src/features_check/mod.rs":"2209f8d5c46b50c8a3b8dc22338dcaf0135d192e8b05d2f456cbe6a73104e958","src/io/core.rs":"60ba28f67a9acaecf8964b611efba416b13f9f2bae4befc329fdf0e037293802","src/io/mod.rs":"fd1ed5080495cab21117f6f7d3c2c9e3687cad0c69a0cd087b08a145a9e672da","src/iter.rs":"f832c469cd7999d26ba9b76baa69b257a212a7edb3dfdf9b1d1bb35e8da85fa9","src/lexical/algorithm.rs":"bd6106e5d8875c9ff1c1d57256b459a4f0992d14a0df1a5fffcd3d3cbdccee8c","src/lexical/bhcomp.rs":"b7c68d74c0055eb67ec2c1bcf27bbc28bef8f1bbc43db8eb94ba69892230add6","src/lexical/bignum.rs":"4230cde10dc8eae456a713cf90ec4e48dff4b1d0c542621ce7f00f39ade2645e","src/lexical/cached.rs":"0e127398691f8042c19cde209e7f4b0161f0f3150342430145929f711e6fdac8","src/lexical/cached_float80.rs":"0f8f74a22cb7d871322a9893bffd0255ca10bf9dffd13afb2462dd3d7f51805f","src/lexical/digit.rs":"9502805adbc3da059131d1fac0a802e17065b36cd7472606b3af24e3241d5cb8","src/lexical/errors.rs":"3d9f6de6245533bcb101dfd718cfed61d59dc293f6768cedae28aa13ace164f5","src/lexical/exponent.rs":"387e945b97dc7ba48a7091c50d228a0dde3a1c4145703d4ab9c31191a91693b0","src/lexical/float.rs":"fe356213c92a049f4bef2f58bc0e3a26866ca06b8c1d74d0f961c5b883852cad","src/lexical/large_powers.rs":"34537f5c701afce1ec2a1fd3c14950381b2e27c9ad74f002c91f3708e8da9ca5","src/lexical/large_powers32.rs":"d533037c6141e6671102aee490c9cdeaba81e667ddca781b2b99db2c455e4a1a","src/lexical/large_powers64.rs":"745dd7c0cbe499eec027ef586248881011d9df20c7efab7929c1807b59886ba1","src/lexical/math.rs":"240804aa030849495fa03a83a0ee8539d5a5c8639b825f2d69d27b7567b06fb3","src/lexical/mod.rs":"4b4c5228779c0f135a4cb018700e3bcd495da48b74421a86f6b8b304acdef924","src/lexical/num.rs":"cf705c62612e31d704f43d94a633ea1243c6befad7ef5792e2e881a7fd21e809","src/lexical/parse.rs":"c2bfac4c70a19938ced61e991f4ec606764887cf12bac1a0978b5b5318a56aac","src/lexical/rounding.rs":"697207248ba17b7f4965aedb11d276261ada5b06d9c6265d8fd6246664ff6e3c","src/lexical/shift.rs":"bc1ed053dd63d45ac9c35302f18de9f00d94027f28af4ab749c9248439de832a","src/lexical/small_powers.rs":"4608dd218b8002435db7e1ec79d2d0fef5f47ae257b93353326d52ecc80cccda","src/lib.rs":"f8a08c5c1fb7d7d62a66a6be83c94d4f7fe9d57c5bae1c8e18bfb9888c76d5f7","src/macros.rs":"516f69976f433bcc5e48c32b3e29c2e0ab7b549810827d7a9c59171cdf11c1e2","src/map.rs":"5a96fa857e54a04fdca5e3ae93dd44a56fc8acdd71dd2c57a75cef495f7eb8b2","src/number.rs":"464e576953bc3d3df228d88890dd2fe4da123479f5756e03e06c7f7633959156","src/raw.rs":"4183bd3e8b7c97605ec5bab4e7fbdb2a09e00bdc53984fbe2066674510ea74ae","src/read.rs":"6b5b6689f5728f9d2e73a1f6216a811ceb77315174334b44513199898e316f37","src/ser.rs":"ee5b6cb04c2ff7058b52cb5d0383218f484505ce0896e5c7fd5076bd9d90952e","src/value/de.rs":"69d88d0ba8a8fea15964e0c95968e53ab308b143176537bfa6368432a682a65c","src/value/from.rs":"add9687e35db3962729d986c8aa54785cadeb07b8b7121cd4075e3a37ecc73a1","src/value/index.rs":"1a0d59629ae16d6553686de8d7152abd470153f67f9a1b69741e480ba491cd67","src/value/mod.rs":"4c7af0f6de5d7e7b83e59a5062892d0a071710f73f0326886ce239d5ae05ba09","src/value/partial_eq.rs":"655fd0bf3ab1d6669444a55ab849f43bb333032de8ca8f1ee95e1068da43ee22","src/value/ser.rs":"6b065423acf88d875d30608d61210a372507c7242d6525e5ef66077296ba32f1","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/debug.rs":"a8451217c1e127ad6e653ef11e0513525ee350e1e37dd575758a8ee9301b28fb","tests/lexical.rs":"8ee6e617ef62a090de49ac2a930130a6913ab5316100781543c7788f89ef99c2","tests/lexical/algorithm.rs":"da378df9ee24bfa033968d5c94e91b58e52c39bf6c825dec51c3eb7250cc5874","tests/lexical/exponent.rs":"26ea92abc654a6a88a8281552bca2f76ea1fa4c17d66a1dd6defe14f7d89b666","tests/lexical/float.rs":"0440f2d85c993bcccd925096d7f4136bf624ffd66b3c7ee565d158390685eb11","tests/lexical/math.rs":"4874be2103be5fbe8b8015354414df271ffa00fd815546fc077f15fb4d7a5a37","tests/lexical/num.rs":"6e650c40de85ed72ac06b6bf1487ba161f3824e26d827df6cfdf2bbdb8d05a05","tests/lexical/parse.rs":"a11f09bb003a3a024548008cf78bf76526ed71b00077d1989f45eb8cebc93b9c","tests/lexical/rounding.rs":"6c56e39ba534616c1b2146e8efa6eb57aed322e683bf23183cd32a61fae6447e","tests/macros/mod.rs":"93aa1d54af20bc2c55b6ae8db73c1414cda2626eb9fa7bd57b9d613a3c6e6a19","tests/map.rs":"89f604c5788bcb8dc82c82e252dc0da47257986e353c09d14e4ef3e58c455f2d","tests/regression.rs":"86731134bfb9bb693d9a4fc62393027de80a8bf031109ea6c7ea475b1ebdde8d","tests/regression/issue1004.rs":"38d7e3b6c515b881078ebd21ca8063d2ca105cd319695d29538f879e37f091b5","tests/regression/issue520.rs":"d146be3472db902b48127d65fe83aa9f698143aca9074c83cd1a9d5dd28e3ec3","tests/regression/issue795.rs":"582e2e7c68113f05a4b1d2cb556a2df7cc77f2ce8164a32c5cc58ae68abb60ec","tests/regression/issue845.rs":"66eb0eeabb744adaad42fd8e2638de22b458a04ec33863e2683b60eb3d500297","tests/regression/issue953.rs":"b2cddc761f5ca6639900c173765a8a5868528a896924e5e925db2696469208f7","tests/stream.rs":"c7d91014538ecd8f495b196d40e999ab2745f2e69fa2ff9e52521605dc6ce856","tests/test.rs":"316938d202db3b706a493917f5380edb6893cb7bac36ffa460e9ce5c281ce340","tests/ui/missing_colon.rs":"d07e0c34d98eb43465f0a0310f2c0b5d5b0d26d243b352a1c6bbe6ad3b27eda9","tests/ui/missing_colon.stderr":"3732fd8f4e57b84efc07170cda5f9c5b2b17c707e23c1659222b5a46f652a8d8","tests/ui/missing_comma.rs":"b8a9662f99c3e6dd2b6417892c37640578ce91d3a8365bf10c1f686a3227aa87","tests/ui/missing_comma.stderr":"eae626cf93c97abd105066e624ca4e8cb096784413b9d2564cf9414a8492bc4d","tests/ui/missing_value.rs":"bca25d67127fb88e7c191c7b03af5a4ce8a9abb630f3d2e6a6c1e77e213dc9a4","tests/ui/missing_value.stderr":"b0df8add5cf74e5df30eedd3ca347e4862c04a01c54d802ff45392f2032065b1","tests/ui/not_found.rs":"d0a7adb309879ff65aee115b52cc33d36f4bad353cf97c4effc34a6128c2bee3","tests/ui/not_found.stderr":"359b751c0c21fab6d460daef4d5f73a265f7769c9b578f98ea3cb6cbf2387643","tests/ui/parse_expr.rs":"32e6d51f528db3d1ab0ed1e24765b865be393565c26f77413c5aa39d601ac563","tests/ui/parse_expr.stderr":"4fcd0a014fbce31c9266bab8527d6e6b6806a0e21d9e0275ce713137856073ce","tests/ui/parse_key.rs":"18829b2af320d5cf8a0a5cd3aaf84c7e92cc874651c30e45a3acafb76c2d8b93","tests/ui/parse_key.stderr":"fcb44e060b804a4762b7291e128c41d7010ffa8ab820b8828fd13fbe6d405ca6","tests/ui/unexpected_after_array_element.rs":"a343fc3104431720bdfcf330bcc3cfcd98c8dec3e951133b495242478b0b7eb3","tests/ui/unexpected_after_array_element.stderr":"8df615998fa3057bb9ed865981a35cdbb771625337048f0ad3fba7734e607adf","tests/ui/unexpected_after_map_entry.rs":"6e3bd2def435ca610e346bbc75cdbaf61963eb2ef1885bb5f76781ba1fac37ef","tests/ui/unexpected_after_map_entry.stderr":"b1985c89075ab48b2158bd1705ed766d37854b3d4620ab257cc8bc319d224f17","tests/ui/unexpected_colon.rs":"a313cff3fed4be4c33f1eda5d0c5c98147fb835a56d36470d9f367352c1d61ef","tests/ui/unexpected_colon.stderr":"b2288742fa6a4a7eb65d2ae899bcfed8795b57bd04958da227d60928a8df26c5","tests/ui/unexpected_comma.rs":"55a8b684bde1ce905837cce719fd457d8898b61cebc27e5b420d05cb6be97256","tests/ui/unexpected_comma.stderr":"4c103ca63ff15e2ca659242cc0eae0612bf050e7580da62f1cf50de8082aa7dc"},"package":"3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b"} \ No newline at end of file
diff --git a/vendor/serde_json/Cargo.toml b/vendor/serde_json/Cargo.toml
index 5d2f43ee0..bab1063d4 100644
--- a/vendor/serde_json/Cargo.toml
+++ b/vendor/serde_json/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.56"
name = "serde_json"
-version = "1.0.105"
+version = "1.0.108"
authors = [
"Erick Tryzelaar <erick.tryzelaar@gmail.com>",
"David Tolnay <dtolnay@gmail.com>",
diff --git a/vendor/serde_json/README.md b/vendor/serde_json/README.md
index d70497924..a3ba288f1 100644
--- a/vendor/serde_json/README.md
+++ b/vendor/serde_json/README.md
@@ -76,7 +76,7 @@ enum Value {
A string of JSON data can be parsed into a `serde_json::Value` by the
[`serde_json::from_str`][from_str] function. There is also
-[`from_slice`][from_slice] for parsing from a byte slice &[u8] and
+[`from_slice`][from_slice] for parsing from a byte slice &\[u8\] and
[`from_reader`][from_reader] for parsing from any `io::Read` like a File or a
TCP stream.
diff --git a/vendor/serde_json/build.rs b/vendor/serde_json/build.rs
index 0e12602e4..1a8c89828 100644
--- a/vendor/serde_json/build.rs
+++ b/vendor/serde_json/build.rs
@@ -1,6 +1,4 @@
use std::env;
-use std::process::Command;
-use std::str::{self, FromStr};
fn main() {
println!("cargo:rerun-if-changed=build.rs");
@@ -16,39 +14,4 @@ fn main() {
println!("cargo:rustc-cfg=limb_width_32");
}
}
-
- let minor = match rustc_minor_version() {
- Some(minor) => minor,
- None => return,
- };
-
- // BTreeMap::get_key_value
- // https://blog.rust-lang.org/2019/12/19/Rust-1.40.0.html#additions-to-the-standard-library
- if minor < 40 {
- println!("cargo:rustc-cfg=no_btreemap_get_key_value");
- }
-
- // BTreeMap::remove_entry
- // https://blog.rust-lang.org/2020/07/16/Rust-1.45.0.html#library-changes
- if minor < 45 {
- println!("cargo:rustc-cfg=no_btreemap_remove_entry");
- }
-
- // BTreeMap::retain
- // https://blog.rust-lang.org/2021/06/17/Rust-1.53.0.html#stabilized-apis
- if minor < 53 {
- println!("cargo:rustc-cfg=no_btreemap_retain");
- }
-}
-
-fn rustc_minor_version() -> Option<u32> {
- let rustc = env::var_os("RUSTC")?;
- let output = Command::new(rustc).arg("--version").output().ok()?;
- let version = str::from_utf8(&output.stdout).ok()?;
- let mut pieces = version.split('.');
- if pieces.next() != Some("rustc 1") {
- return None;
- }
- let next = pieces.next()?;
- u32::from_str(next).ok()
}
diff --git a/vendor/serde_json/src/lib.rs b/vendor/serde_json/src/lib.rs
index 83f48a031..ce377458f 100644
--- a/vendor/serde_json/src/lib.rs
+++ b/vendor/serde_json/src/lib.rs
@@ -55,10 +55,9 @@
//! ```
//!
//! A string of JSON data can be parsed into a `serde_json::Value` by the
-//! [`serde_json::from_str`][from_str] function. There is also
-//! [`from_slice`][from_slice] for parsing from a byte slice &[u8] and
-//! [`from_reader`][from_reader] for parsing from any `io::Read` like a File or
-//! a TCP stream.
+//! [`serde_json::from_str`][from_str] function. There is also [`from_slice`]
+//! for parsing from a byte slice &\[u8\] and [`from_reader`] for parsing from
+//! any `io::Read` like a File or a TCP stream.
//!
//! ```
//! use serde_json::{Result, Value};
@@ -300,7 +299,7 @@
//! [macro]: crate::json
//! [`serde-json-core`]: https://github.com/rust-embedded-community/serde-json-core
-#![doc(html_root_url = "https://docs.rs/serde_json/1.0.105")]
+#![doc(html_root_url = "https://docs.rs/serde_json/1.0.108")]
// Ignored clippy lints
#![allow(
clippy::collapsible_else_if,
diff --git a/vendor/serde_json/src/map.rs b/vendor/serde_json/src/map.rs
index a1b622294..675058ba1 100644
--- a/vendor/serde_json/src/map.rs
+++ b/vendor/serde_json/src/map.rs
@@ -106,7 +106,6 @@ impl Map<String, Value> {
/// The key may be any borrowed form of the map's key type, but the ordering
/// on the borrowed form *must* match the ordering on the key type.
#[inline]
- #[cfg(any(feature = "preserve_order", not(no_btreemap_get_key_value)))]
pub fn get_key_value<Q>(&self, key: &Q) -> Option<(&String, &Value)>
where
String: Borrow<Q>,
@@ -153,44 +152,7 @@ impl Map<String, Value> {
String: Borrow<Q>,
Q: ?Sized + Ord + Eq + Hash,
{
- #[cfg(any(feature = "preserve_order", not(no_btreemap_remove_entry)))]
- return self.map.remove_entry(key);
- #[cfg(all(
- not(feature = "preserve_order"),
- no_btreemap_remove_entry,
- not(no_btreemap_get_key_value),
- ))]
- {
- let (key, _value) = self.map.get_key_value(key)?;
- let key = key.clone();
- let value = self.map.remove::<String>(&key)?;
- Some((key, value))
- }
- #[cfg(all(
- not(feature = "preserve_order"),
- no_btreemap_remove_entry,
- no_btreemap_get_key_value,
- ))]
- {
- use core::ops::{Bound, RangeBounds};
-
- struct Key<'a, Q: ?Sized>(&'a Q);
-
- impl<'a, Q: ?Sized> RangeBounds<Q> for Key<'a, Q> {
- fn start_bound(&self) -> Bound<&Q> {
- Bound::Included(self.0)
- }
- fn end_bound(&self) -> Bound<&Q> {
- Bound::Included(self.0)
- }
- }
-
- let mut range = self.map.range(Key(key));
- let (key, _value) = range.next()?;
- let key = key.clone();
- let value = self.map.remove::<String>(&key)?;
- Some((key, value))
- }
+ self.map.remove_entry(key)
}
/// Moves all elements from other into self, leaving other empty.
@@ -276,7 +238,6 @@ impl Map<String, Value> {
///
/// In other words, remove all pairs `(k, v)` such that `f(&k, &mut v)`
/// returns `false`.
- #[cfg(not(no_btreemap_retain))]
#[inline]
pub fn retain<F>(&mut self, f: F)
where
diff --git a/vendor/serde_json/src/number.rs b/vendor/serde_json/src/number.rs
index 7ff66681d..b0231a87b 100644
--- a/vendor/serde_json/src/number.rs
+++ b/vendor/serde_json/src/number.rs
@@ -279,6 +279,33 @@ impl Number {
}
}
+ /// Returns the exact original JSON representation that this Number was
+ /// parsed from.
+ ///
+ /// For numbers constructed not via parsing, such as by `From<i32>`, returns
+ /// the JSON representation that serde\_json would serialize for this
+ /// number.
+ ///
+ /// ```
+ /// # use serde_json::Number;
+ /// for value in [
+ /// "7",
+ /// "12.34",
+ /// "34e-56789",
+ /// "0.0123456789000000012345678900000001234567890000123456789",
+ /// "343412345678910111213141516171819202122232425262728293034",
+ /// "-343412345678910111213141516171819202122232425262728293031",
+ /// ] {
+ /// let number: Number = serde_json::from_str(value).unwrap();
+ /// assert_eq!(number.as_str(), value);
+ /// }
+ /// ```
+ #[cfg(feature = "arbitrary_precision")]
+ #[cfg_attr(docsrs, doc(cfg(feature = "arbitrary_precision")))]
+ pub fn as_str(&self) -> &str {
+ &self.n
+ }
+
pub(crate) fn as_f32(&self) -> Option<f32> {
#[cfg(not(feature = "arbitrary_precision"))]
match self.n {
diff --git a/vendor/serde_json/src/raw.rs b/vendor/serde_json/src/raw.rs
index 651f4797d..a2bf0ecbb 100644
--- a/vendor/serde_json/src/raw.rs
+++ b/vendor/serde_json/src/raw.rs
@@ -527,3 +527,251 @@ impl<'de> MapAccess<'de> for BorrowedRawDeserializer<'de> {
seed.deserialize(BorrowedStrDeserializer::new(self.raw_value.take().unwrap()))
}
}
+
+impl<'de> IntoDeserializer<'de, Error> for &'de RawValue {
+ type Deserializer = &'de RawValue;
+
+ fn into_deserializer(self) -> Self::Deserializer {
+ self
+ }
+}
+
+impl<'de> Deserializer<'de> for &'de RawValue {
+ type Error = Error;
+
+ fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_any(visitor)
+ }
+
+ fn deserialize_bool<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_bool(visitor)
+ }
+
+ fn deserialize_i8<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_i8(visitor)
+ }
+
+ fn deserialize_i16<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_i16(visitor)
+ }
+
+ fn deserialize_i32<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_i32(visitor)
+ }
+
+ fn deserialize_i64<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_i64(visitor)
+ }
+
+ fn deserialize_i128<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_i128(visitor)
+ }
+
+ fn deserialize_u8<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_u8(visitor)
+ }
+
+ fn deserialize_u16<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_u16(visitor)
+ }
+
+ fn deserialize_u32<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_u32(visitor)
+ }
+
+ fn deserialize_u64<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_u64(visitor)
+ }
+
+ fn deserialize_u128<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_u128(visitor)
+ }
+
+ fn deserialize_f32<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_f32(visitor)
+ }
+
+ fn deserialize_f64<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_f64(visitor)
+ }
+
+ fn deserialize_char<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_char(visitor)
+ }
+
+ fn deserialize_str<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_str(visitor)
+ }
+
+ fn deserialize_string<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_string(visitor)
+ }
+
+ fn deserialize_bytes<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_bytes(visitor)
+ }
+
+ fn deserialize_byte_buf<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_byte_buf(visitor)
+ }
+
+ fn deserialize_option<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_option(visitor)
+ }
+
+ fn deserialize_unit<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_unit(visitor)
+ }
+
+ fn deserialize_unit_struct<V>(self, name: &'static str, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_unit_struct(name, visitor)
+ }
+
+ fn deserialize_newtype_struct<V>(
+ self,
+ name: &'static str,
+ visitor: V,
+ ) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_newtype_struct(name, visitor)
+ }
+
+ fn deserialize_seq<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_seq(visitor)
+ }
+
+ fn deserialize_tuple<V>(self, len: usize, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_tuple(len, visitor)
+ }
+
+ fn deserialize_tuple_struct<V>(
+ self,
+ name: &'static str,
+ len: usize,
+ visitor: V,
+ ) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_tuple_struct(name, len, visitor)
+ }
+
+ fn deserialize_map<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_map(visitor)
+ }
+
+ fn deserialize_struct<V>(
+ self,
+ name: &'static str,
+ fields: &'static [&'static str],
+ visitor: V,
+ ) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_struct(name, fields, visitor)
+ }
+
+ fn deserialize_enum<V>(
+ self,
+ name: &'static str,
+ variants: &'static [&'static str],
+ visitor: V,
+ ) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_enum(name, variants, visitor)
+ }
+
+ fn deserialize_identifier<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_identifier(visitor)
+ }
+
+ fn deserialize_ignored_any<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: Visitor<'de>,
+ {
+ crate::Deserializer::from_str(&self.json).deserialize_ignored_any(visitor)
+ }
+}
diff --git a/vendor/serde_json/src/read.rs b/vendor/serde_json/src/read.rs
index fc3a3ca74..7446f28b9 100644
--- a/vendor/serde_json/src/read.rs
+++ b/vendor/serde_json/src/read.rs
@@ -81,7 +81,7 @@ pub trait Read<'de>: private::Sealed {
#[doc(hidden)]
fn ignore_str(&mut self) -> Result<()>;
- /// Assumes the previous byte was a hex escape sequnce ('\u') in a string.
+ /// Assumes the previous byte was a hex escape sequence ('\u') in a string.
/// Parses next hexadecimal sequence.
#[doc(hidden)]
fn decode_hex_escape(&mut self) -> Result<u16>;
diff --git a/vendor/serde_json/src/value/from.rs b/vendor/serde_json/src/value/from.rs
index 159592ba8..ed1e3338b 100644
--- a/vendor/serde_json/src/value/from.rs
+++ b/vendor/serde_json/src/value/from.rs
@@ -28,7 +28,8 @@ from_integer! {
}
impl From<f32> for Value {
- /// Convert 32-bit floating point number to `Value`
+ /// Convert 32-bit floating point number to `Value::Number`, or
+ /// `Value::Null` if infinite or NaN.
///
/// # Examples
///
@@ -44,7 +45,8 @@ impl From<f32> for Value {
}
impl From<f64> for Value {
- /// Convert 64-bit floating point number to `Value`
+ /// Convert 64-bit floating point number to `Value::Number`, or
+ /// `Value::Null` if infinite or NaN.
///
/// # Examples
///
@@ -60,7 +62,7 @@ impl From<f64> for Value {
}
impl From<bool> for Value {
- /// Convert boolean to `Value`
+ /// Convert boolean to `Value::Bool`.
///
/// # Examples
///
@@ -76,7 +78,7 @@ impl From<bool> for Value {
}
impl From<String> for Value {
- /// Convert `String` to `Value`
+ /// Convert `String` to `Value::String`.
///
/// # Examples
///
@@ -91,8 +93,8 @@ impl From<String> for Value {
}
}
-impl<'a> From<&'a str> for Value {
- /// Convert string slice to `Value`
+impl From<&str> for Value {
+ /// Convert string slice to `Value::String`.
///
/// # Examples
///
@@ -108,7 +110,7 @@ impl<'a> From<&'a str> for Value {
}
impl<'a> From<Cow<'a, str>> for Value {
- /// Convert copy-on-write string to `Value`
+ /// Convert copy-on-write string to `Value::String`.
///
/// # Examples
///
@@ -133,7 +135,7 @@ impl<'a> From<Cow<'a, str>> for Value {
}
impl From<Number> for Value {
- /// Convert `Number` to `Value`
+ /// Convert `Number` to `Value::Number`.
///
/// # Examples
///
@@ -149,7 +151,7 @@ impl From<Number> for Value {
}
impl From<Map<String, Value>> for Value {
- /// Convert map (with string keys) to `Value`
+ /// Convert map (with string keys) to `Value::Object`.
///
/// # Examples
///
@@ -166,7 +168,7 @@ impl From<Map<String, Value>> for Value {
}
impl<T: Into<Value>> From<Vec<T>> for Value {
- /// Convert a `Vec` to `Value`
+ /// Convert a `Vec` to `Value::Array`.
///
/// # Examples
///
@@ -181,8 +183,8 @@ impl<T: Into<Value>> From<Vec<T>> for Value {
}
}
-impl<'a, T: Clone + Into<Value>> From<&'a [T]> for Value {
- /// Convert a slice to `Value`
+impl<T: Clone + Into<Value>> From<&[T]> for Value {
+ /// Convert a slice to `Value::Array`.
///
/// # Examples
///
@@ -192,13 +194,13 @@ impl<'a, T: Clone + Into<Value>> From<&'a [T]> for Value {
/// let v: &[&str] = &["lorem", "ipsum", "dolor"];
/// let x: Value = v.into();
/// ```
- fn from(f: &'a [T]) -> Self {
+ fn from(f: &[T]) -> Self {
Value::Array(f.iter().cloned().map(Into::into).collect())
}
}
impl<T: Into<Value>> FromIterator<T> for Value {
- /// Convert an iteratable type to a `Value`
+ /// Create a `Value::Array` by collecting an iterator of array elements.
///
/// # Examples
///
@@ -228,7 +230,7 @@ impl<T: Into<Value>> FromIterator<T> for Value {
}
impl<K: Into<String>, V: Into<Value>> FromIterator<(K, V)> for Value {
- /// Convert an iteratable type to a `Value`
+ /// Create a `Value::Object` by collecting an iterator of key-value pairs.
///
/// # Examples
///
@@ -248,7 +250,7 @@ impl<K: Into<String>, V: Into<Value>> FromIterator<(K, V)> for Value {
}
impl From<()> for Value {
- /// Convert `()` to `Value`
+ /// Convert `()` to `Value::Null`.
///
/// # Examples
///
diff --git a/vendor/serde_json/src/value/index.rs b/vendor/serde_json/src/value/index.rs
index c74042b75..891ca8ef7 100644
--- a/vendor/serde_json/src/value/index.rs
+++ b/vendor/serde_json/src/value/index.rs
@@ -116,7 +116,7 @@ impl Index for String {
}
}
-impl<'a, T> Index for &'a T
+impl<T> Index for &T
where
T: ?Sized + Index,
{
diff --git a/vendor/serde_json/src/value/mod.rs b/vendor/serde_json/src/value/mod.rs
index 79ffe9488..a565b2998 100644
--- a/vendor/serde_json/src/value/mod.rs
+++ b/vendor/serde_json/src/value/mod.rs
@@ -514,6 +514,28 @@ impl Value {
}
}
+ /// If the `Value` is a Number, returns the associated [`Number`]. Returns
+ /// None otherwise.
+ ///
+ /// ```
+ /// # use serde_json::{json, Number};
+ /// #
+ /// let v = json!({ "a": 1, "b": 2.2, "c": -3, "d": "4" });
+ ///
+ /// assert_eq!(v["a"].as_number(), Some(&Number::from(1u64)));
+ /// assert_eq!(v["b"].as_number(), Some(&Number::from_f64(2.2).unwrap()));
+ /// assert_eq!(v["c"].as_number(), Some(&Number::from(-3i64)));
+ ///
+ /// // The string `"4"` is not a number.
+ /// assert_eq!(v["d"].as_number(), None);
+ /// ```
+ pub fn as_number(&self) -> Option<&Number> {
+ match self {
+ Value::Number(number) => Some(number),
+ _ => None,
+ }
+ }
+
/// Returns true if the `Value` is an integer between `i64::MIN` and
/// `i64::MAX`.
///
diff --git a/vendor/serde_json/src/value/partial_eq.rs b/vendor/serde_json/src/value/partial_eq.rs
index 6b2e350b6..46c1dbc33 100644
--- a/vendor/serde_json/src/value/partial_eq.rs
+++ b/vendor/serde_json/src/value/partial_eq.rs
@@ -34,7 +34,7 @@ impl PartialEq<str> for Value {
}
}
-impl<'a> PartialEq<&'a str> for Value {
+impl PartialEq<&str> for Value {
fn eq(&self, other: &&str) -> bool {
eq_str(self, *other)
}
@@ -46,7 +46,7 @@ impl PartialEq<Value> for str {
}
}
-impl<'a> PartialEq<Value> for &'a str {
+impl PartialEq<Value> for &str {
fn eq(&self, other: &Value) -> bool {
eq_str(other, *self)
}
diff --git a/vendor/serde_json/tests/lexical.rs b/vendor/serde_json/tests/lexical.rs
index d3dfb852b..368c84478 100644
--- a/vendor/serde_json/tests/lexical.rs
+++ b/vendor/serde_json/tests/lexical.rs
@@ -26,11 +26,6 @@ extern crate alloc;
#[path = "../src/lexical/mod.rs"]
mod lexical;
-mod lib {
- pub use std::vec::Vec;
- pub use std::{cmp, iter, mem, ops};
-}
-
#[path = "lexical/algorithm.rs"]
mod algorithm;
diff --git a/vendor/serde_json/tests/lexical/parse.rs b/vendor/serde_json/tests/lexical/parse.rs
index 80ca25e77..03ec1a9a6 100644
--- a/vendor/serde_json/tests/lexical/parse.rs
+++ b/vendor/serde_json/tests/lexical/parse.rs
@@ -1,7 +1,7 @@
// Adapted from https://github.com/Alexhuszagh/rust-lexical.
use crate::lexical::num::Float;
-use crate::lexical::parse::{parse_concise_float, parse_truncated_float};
+use crate::lexical::{parse_concise_float, parse_truncated_float};
use core::f64;
use core::fmt::Debug;
diff --git a/vendor/serde_json/tests/map.rs b/vendor/serde_json/tests/map.rs
index ae0196956..538cd16ae 100644
--- a/vendor/serde_json/tests/map.rs
+++ b/vendor/serde_json/tests/map.rs
@@ -35,7 +35,6 @@ fn test_append() {
assert!(val.is_empty());
}
-#[cfg(not(no_btreemap_retain))]
#[test]
fn test_retain() {
let mut v: Value = from_str(r#"{"b":null,"a":null,"c":null}"#).unwrap();
diff --git a/vendor/serde_json/tests/test.rs b/vendor/serde_json/tests/test.rs
index e548b7dae..a38435069 100644
--- a/vendor/serde_json/tests/test.rs
+++ b/vendor/serde_json/tests/test.rs
@@ -160,17 +160,29 @@ fn test_write_f64() {
#[test]
fn test_encode_nonfinite_float_yields_null() {
- let v = to_value(::std::f64::NAN).unwrap();
+ let v = to_value(::std::f64::NAN.copysign(1.0)).unwrap();
+ assert!(v.is_null());
+
+ let v = to_value(::std::f64::NAN.copysign(-1.0)).unwrap();
assert!(v.is_null());
let v = to_value(::std::f64::INFINITY).unwrap();
assert!(v.is_null());
- let v = to_value(::std::f32::NAN).unwrap();
+ let v = to_value(-::std::f64::INFINITY).unwrap();
+ assert!(v.is_null());
+
+ let v = to_value(::std::f32::NAN.copysign(1.0)).unwrap();
+ assert!(v.is_null());
+
+ let v = to_value(::std::f32::NAN.copysign(-1.0)).unwrap();
assert!(v.is_null());
let v = to_value(::std::f32::INFINITY).unwrap();
assert!(v.is_null());
+
+ let v = to_value(-::std::f32::INFINITY).unwrap();
+ assert!(v.is_null());
}
#[test]
diff --git a/vendor/serde_spanned/.cargo-checksum.json b/vendor/serde_spanned/.cargo-checksum.json
index f29b42206..bbca49fbe 100644
--- a/vendor/serde_spanned/.cargo-checksum.json
+++ b/vendor/serde_spanned/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"6427105c3c62564ea4e523a21109fba8a530d584ad8386067be08011f01a64dc","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"b7f9ff28df562bb645d6466476cb8855e96c4a162f4ffbe1ecb82d814a9f19f6","src/lib.rs":"b46fc8a4d877770b9e217e824ef99db7fdbb3c5215083dc42306eaa9958d79a3","src/spanned.rs":"2ef5235ea754def23c09e138aa11eef7d7f518d772e2ab2d6d4d63eb33a20370"},"package":"96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186"} \ No newline at end of file
+{"files":{"Cargo.toml":"c49931249a068b99aa4a34e00e57224b938e4b25bdf0af5b53d5a0fa421422db","LICENSE-APACHE":"c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08","LICENSE-MIT":"6efb0476a1cc085077ed49357026d8c173bf33017278ef440f222fb9cbcb66e6","README.md":"b7f9ff28df562bb645d6466476cb8855e96c4a162f4ffbe1ecb82d814a9f19f6","src/lib.rs":"b46fc8a4d877770b9e217e824ef99db7fdbb3c5215083dc42306eaa9958d79a3","src/spanned.rs":"2ef5235ea754def23c09e138aa11eef7d7f518d772e2ab2d6d4d63eb33a20370"},"package":"12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80"} \ No newline at end of file
diff --git a/vendor/serde_spanned/Cargo.toml b/vendor/serde_spanned/Cargo.toml
index 24f40a74a..2ea591f14 100644
--- a/vendor/serde_spanned/Cargo.toml
+++ b/vendor/serde_spanned/Cargo.toml
@@ -11,9 +11,9 @@
[package]
edition = "2021"
-rust-version = "1.64.0"
+rust-version = "1.67"
name = "serde_spanned"
-version = "0.6.3"
+version = "0.6.4"
include = [
"build.rs",
"src/**/*",
diff --git a/vendor/serde_spanned/LICENSE-APACHE b/vendor/serde_spanned/LICENSE-APACHE
index 16fe87b06..8f71f43fe 100644
--- a/vendor/serde_spanned/LICENSE-APACHE
+++ b/vendor/serde_spanned/LICENSE-APACHE
@@ -1,201 +1,202 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright {yyyy} {name of copyright owner}
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
diff --git a/vendor/serde_spanned/LICENSE-MIT b/vendor/serde_spanned/LICENSE-MIT
index 39e0ed660..a2d01088b 100644
--- a/vendor/serde_spanned/LICENSE-MIT
+++ b/vendor/serde_spanned/LICENSE-MIT
@@ -1,25 +1,19 @@
-Copyright (c) 2014 Alex Crichton
+Copyright (c) Individual contributors
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/sha1/.cargo-checksum.json b/vendor/sha1/.cargo-checksum.json
index 138cc4425..7fa32e243 100644
--- a/vendor/sha1/.cargo-checksum.json
+++ b/vendor/sha1/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"f3930b8a16e5173aca294672a3f83d44949160073cb7b20ed8eadc475f602b13","Cargo.toml":"03465b24b6574f22f50d0f1f4d7c972dd1098c50c457bda1035e9a7b9fa5bccd","LICENSE-APACHE":"a9040321c3712d8fd0b09cf52b17445de04a23a10165049ae187cd39e5c86be5","LICENSE-MIT":"b4eb00df6e2a4d22518fcaa6a2b4646f249b3a3c9814509b22bd2091f1392ff1","README.md":"e3e967137d854fef6c4a8c9d018c93bf35640a325a825b6a404dd3183219206c","benches/mod.rs":"2765aec429270711235d6cd4911d0c21658e2fa3dfbe24559f24e21b056b507c","src/compress.rs":"3e401e6a4ac3699994cedf34ff66d12a828bbef3457e8e751a3147a03a70607e","src/compress/aarch64.rs":"b1e66c2df53eaf84ccf7466aed47c0718fc3dbe1d1c565b65abd60e84b6fc5d4","src/compress/soft.rs":"bc6dda22b15acd76d97e202a8b251d9c68441d426a71600b2a61c36dd6f3a08e","src/compress/x86.rs":"9d2b4f240a311a84b351c136cccdc4dc00a7fc35703146ad51ed2d6e0aaef2d0","src/lib.rs":"dea41278ae1d72c64925a1b417d343068edf0c92e87b9f2350f31d78ef1ef7cd","tests/data/sha1.blb":"b9c03b9e56e0a7b08a6d6867599a33cab1a55aec3f41fef910c133fc35dc2851","tests/mod.rs":"34bb42bf4679b3f23ffc2338356c8579c872026eef9989955a29ba44a432c3b5"},"package":"f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"7e9245847760fa99eaab7e4864a199148387aaa6121ac3dfbe189f0b684cf7d2","Cargo.toml":"cbfdd2dcaf34776f686caf30420c0a32a13d032fdd62495a054e65c3b0769132","LICENSE-APACHE":"a9040321c3712d8fd0b09cf52b17445de04a23a10165049ae187cd39e5c86be5","LICENSE-MIT":"b4eb00df6e2a4d22518fcaa6a2b4646f249b3a3c9814509b22bd2091f1392ff1","README.md":"8028a4064be59cba366c1bafa682002b52891a3cc2d2169d8f38064ba69773d1","benches/mod.rs":"2765aec429270711235d6cd4911d0c21658e2fa3dfbe24559f24e21b056b507c","src/compress.rs":"fcd99dc9c137e1fc05e47d406adfeeafccb31bed981e7c8bf480d765fb36e877","src/compress/aarch64.rs":"b1e66c2df53eaf84ccf7466aed47c0718fc3dbe1d1c565b65abd60e84b6fc5d4","src/compress/loongarch64_asm.rs":"0fd7d61b5ca7d7bce40cd9ce9012eb787da9f9df87595bfe00f8d882267d182e","src/compress/soft.rs":"bc6dda22b15acd76d97e202a8b251d9c68441d426a71600b2a61c36dd6f3a08e","src/compress/x86.rs":"9d2b4f240a311a84b351c136cccdc4dc00a7fc35703146ad51ed2d6e0aaef2d0","src/lib.rs":"c3409d489833cf896d611baf0ca0e5958629fc9e5f91a1144e789dc1858c513c","tests/data/sha1.blb":"b9c03b9e56e0a7b08a6d6867599a33cab1a55aec3f41fef910c133fc35dc2851","tests/mod.rs":"34bb42bf4679b3f23ffc2338356c8579c872026eef9989955a29ba44a432c3b5"},"package":"e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"} \ No newline at end of file
diff --git a/vendor/sha1/CHANGELOG.md b/vendor/sha1/CHANGELOG.md
index 78ffc6006..429e67727 100644
--- a/vendor/sha1/CHANGELOG.md
+++ b/vendor/sha1/CHANGELOG.md
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.10.6 (2023-09-21)
+### Added
+- `asm!`-based backend for LoongArch64 targets gated behind `loongarch64_asm` feature [#504]
+
+[#504]: https://github.com/RustCrypto/hashes/pull/504
+
## 0.10.5 (2022-09-16)
### Added
- Feature-gated OID support ([#405])
diff --git a/vendor/sha1/Cargo.toml b/vendor/sha1/Cargo.toml
index 5addd541e..8ddd90973 100644
--- a/vendor/sha1/Cargo.toml
+++ b/vendor/sha1/Cargo.toml
@@ -3,35 +3,48 @@
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
-# to registry (e.g., crates.io) dependencies
+# to registry (e.g., crates.io) dependencies.
#
-# If you believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
[package]
edition = "2018"
name = "sha1"
-version = "0.10.5"
+version = "0.10.6"
authors = ["RustCrypto Developers"]
description = "SHA-1 hash function"
documentation = "https://docs.rs/sha1"
readme = "README.md"
-keywords = ["crypto", "sha1", "hash", "digest"]
-categories = ["cryptography", "no-std"]
+keywords = [
+ "crypto",
+ "sha1",
+ "hash",
+ "digest",
+]
+categories = [
+ "cryptography",
+ "no-std",
+]
license = "MIT OR Apache-2.0"
repository = "https://github.com/RustCrypto/hashes"
+
[package.metadata.docs.rs]
all-features = true
-rustdoc-args = ["--cfg", "docsrs"]
+rustdoc-args = [
+ "--cfg",
+ "docsrs",
+]
+
[dependencies.cfg-if]
version = "1.0"
[dependencies.digest]
-version = "0.10.4"
+version = "0.10.7"
+
[dev-dependencies.digest]
-version = "0.10.4"
+version = "0.10.7"
features = ["dev"]
[dev-dependencies.hex-literal]
@@ -42,8 +55,10 @@ asm = ["sha1-asm"]
compress = []
default = ["std"]
force-soft = []
+loongarch64_asm = []
oid = ["digest/oid"]
std = ["digest/std"]
+
[target."cfg(any(target_arch = \"aarch64\", target_arch = \"x86\", target_arch = \"x86_64\"))".dependencies.cpufeatures]
version = "0.2"
diff --git a/vendor/sha1/README.md b/vendor/sha1/README.md
index dc6102eb9..bd76f0973 100644
--- a/vendor/sha1/README.md
+++ b/vendor/sha1/README.md
@@ -48,10 +48,10 @@ dual licensed as above, without any additional terms or conditions.
[//]: # (badges)
-[crate-image]: https://img.shields.io/crates/v/sha-1.svg
-[crate-link]: https://crates.io/crates/sha-1
-[docs-image]: https://docs.rs/sha-1/badge.svg
-[docs-link]: https://docs.rs/sha-1/
+[crate-image]: https://img.shields.io/crates/v/sha1.svg
+[crate-link]: https://crates.io/crates/sha1
+[docs-image]: https://docs.rs/sha1/badge.svg
+[docs-link]: https://docs.rs/sha1/
[license-image]: https://img.shields.io/badge/license-Apache2.0/MIT-blue.svg
[rustc-image]: https://img.shields.io/badge/rustc-1.41+-blue.svg
[chat-image]: https://img.shields.io/badge/zulip-join_chat-blue.svg
diff --git a/vendor/sha1/src/compress.rs b/vendor/sha1/src/compress.rs
index da4a10a98..6f7e40c41 100644
--- a/vendor/sha1/src/compress.rs
+++ b/vendor/sha1/src/compress.rs
@@ -9,6 +9,9 @@ cfg_if::cfg_if! {
mod soft;
mod aarch64;
use aarch64::compress as compress_inner;
+ } else if #[cfg(all(feature = "loongarch64_asm", target_arch = "loongarch64"))] {
+ mod loongarch64_asm;
+ use loongarch64_asm::compress as compress_inner;
} else if #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] {
#[cfg(not(feature = "asm"))]
mod soft;
diff --git a/vendor/sha1/src/compress/loongarch64_asm.rs b/vendor/sha1/src/compress/loongarch64_asm.rs
new file mode 100644
index 000000000..facef1b19
--- /dev/null
+++ b/vendor/sha1/src/compress/loongarch64_asm.rs
@@ -0,0 +1,255 @@
+//! LoongArch64 assembly backend
+
+use core::arch::asm;
+
+const K: [u32; 4] = [0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xCA62C1D6];
+
+macro_rules! c {
+ ($($l:expr)*) => {
+ concat!($($l ,)*)
+ };
+}
+
+macro_rules! round0a {
+ ($a:literal, $b:literal, $c:literal, $d:literal, $e:literal, $i:literal) => {
+ c!(
+ "ld.w $t5, $a1, (" $i " * 4);"
+ "revb.2h $t5, $t5;"
+ "rotri.w $t5, $t5, 16;"
+ "add.w " $e ", " $e ", $t5;"
+ "st.w $t5, $sp, (" $i " * 4);"
+ "xor $t5, " $c "," $d ";"
+ "and $t5, $t5, " $b ";"
+ "xor $t5, $t5, " $d ";"
+ roundtail!($a, $b, $e, $i, "$a4")
+ )
+ };
+}
+
+macro_rules! scheldule {
+ ($i:literal, $e:literal) => {
+ c!(
+ "ld.w $t5, $sp, (((" $i " - 3) & 0xF) * 4);"
+ "ld.w $t6, $sp, (((" $i " - 8) & 0xF) * 4);"
+ "ld.w $t7, $sp, (((" $i " - 14) & 0xF) * 4);"
+ "ld.w $t8, $sp, (((" $i " - 16) & 0xF) * 4);"
+ "xor $t5, $t5, $t6;"
+ "xor $t5, $t5, $t7;"
+ "xor $t5, $t5, $t8;"
+ "rotri.w $t5, $t5, 31;"
+ "add.w " $e "," $e ", $t5;"
+ "st.w $t5, $sp, ((" $i " & 0xF) * 4);"
+ )
+ };
+}
+
+macro_rules! round0b {
+ ($a:literal, $b:literal, $c:literal, $d:literal, $e:literal, $i:literal) => {
+ c!(
+ scheldule!($i, $e)
+ "xor $t5," $c "," $d ";"
+ "and $t5, $t5," $b ";"
+ "xor $t5, $t5," $d ";"
+ roundtail!($a, $b, $e, $i, "$a4")
+ )
+ };
+}
+
+macro_rules! round1 {
+ ($a:literal, $b:literal, $c:literal, $d:literal, $e:literal, $i:literal) => {
+ c!(
+ scheldule!($i, $e)
+ "xor $t5," $b "," $c ";"
+ "xor $t5, $t5," $d ";"
+ roundtail!($a, $b, $e, $i, "$a5")
+ )
+ };
+}
+
+macro_rules! round2 {
+ ($a:literal, $b:literal, $c:literal, $d:literal, $e:literal, $i:literal) => {
+ c!(
+ scheldule!($i, $e)
+ "or $t5," $c "," $d ";"
+ "and $t5, $t5, " $b ";"
+ "and $t7," $c "," $d ";"
+ "or $t5, $t5, $t7;"
+ roundtail!($a, $b, $e, $i, "$a6")
+ )
+ };
+}
+
+macro_rules! round3 {
+ ($a:literal, $b:literal, $c:literal, $d:literal, $e:literal, $i:literal) => {
+ c!(
+ scheldule!($i, $e)
+ "xor $t5," $b "," $c ";"
+ "xor $t5, $t5," $d ";"
+ roundtail!($a, $b, $e, $i, "$a7")
+ )
+ };
+}
+
+macro_rules! roundtail {
+ ($a:literal, $b:literal, $e:literal, $i:literal, $k:literal) => {
+ c!(
+ "rotri.w " $b "," $b ", 2;"
+ "add.w " $e "," $e ", $t5;"
+ "add.w " $e "," $e "," $k ";"
+ "rotri.w $t5," $a ", 27;"
+ "add.w " $e "," $e ", $t5;"
+ )
+ };
+}
+
+pub fn compress(state: &mut [u32; 5], blocks: &[[u8; 64]]) {
+ if blocks.is_empty() {
+ return;
+ }
+
+ unsafe {
+ asm!(
+ // Allocate scratch stack space
+ "addi.d $sp, $sp, -64;",
+
+ // Load state
+ "ld.w $t0, $a0, 0",
+ "ld.w $t1, $a0, 4",
+ "ld.w $t2, $a0, 8",
+ "ld.w $t3, $a0, 12",
+ "ld.w $t4, $a0, 16",
+
+ "42:",
+
+ round0a!("$t0", "$t1", "$t2", "$t3", "$t4", 0),
+ round0a!("$t4", "$t0", "$t1", "$t2", "$t3", 1),
+ round0a!("$t3", "$t4", "$t0", "$t1", "$t2", 2),
+ round0a!("$t2", "$t3", "$t4", "$t0", "$t1", 3),
+ round0a!("$t1", "$t2", "$t3", "$t4", "$t0", 4),
+ round0a!("$t0", "$t1", "$t2", "$t3", "$t4", 5),
+ round0a!("$t4", "$t0", "$t1", "$t2", "$t3", 6),
+ round0a!("$t3", "$t4", "$t0", "$t1", "$t2", 7),
+ round0a!("$t2", "$t3", "$t4", "$t0", "$t1", 8),
+ round0a!("$t1", "$t2", "$t3", "$t4", "$t0", 9),
+ round0a!("$t0", "$t1", "$t2", "$t3", "$t4", 10),
+ round0a!("$t4", "$t0", "$t1", "$t2", "$t3", 11),
+ round0a!("$t3", "$t4", "$t0", "$t1", "$t2", 12),
+ round0a!("$t2", "$t3", "$t4", "$t0", "$t1", 13),
+ round0a!("$t1", "$t2", "$t3", "$t4", "$t0", 14),
+ round0a!("$t0", "$t1", "$t2", "$t3", "$t4", 15),
+ round0b!("$t4", "$t0", "$t1", "$t2", "$t3", 16),
+ round0b!("$t3", "$t4", "$t0", "$t1", "$t2", 17),
+ round0b!("$t2", "$t3", "$t4", "$t0", "$t1", 18),
+ round0b!("$t1", "$t2", "$t3", "$t4", "$t0", 19),
+ round1!("$t0", "$t1", "$t2", "$t3", "$t4", 20),
+ round1!("$t4", "$t0", "$t1", "$t2", "$t3", 21),
+ round1!("$t3", "$t4", "$t0", "$t1", "$t2", 22),
+ round1!("$t2", "$t3", "$t4", "$t0", "$t1", 23),
+ round1!("$t1", "$t2", "$t3", "$t4", "$t0", 24),
+ round1!("$t0", "$t1", "$t2", "$t3", "$t4", 25),
+ round1!("$t4", "$t0", "$t1", "$t2", "$t3", 26),
+ round1!("$t3", "$t4", "$t0", "$t1", "$t2", 27),
+ round1!("$t2", "$t3", "$t4", "$t0", "$t1", 28),
+ round1!("$t1", "$t2", "$t3", "$t4", "$t0", 29),
+ round1!("$t0", "$t1", "$t2", "$t3", "$t4", 30),
+ round1!("$t4", "$t0", "$t1", "$t2", "$t3", 31),
+ round1!("$t3", "$t4", "$t0", "$t1", "$t2", 32),
+ round1!("$t2", "$t3", "$t4", "$t0", "$t1", 33),
+ round1!("$t1", "$t2", "$t3", "$t4", "$t0", 34),
+ round1!("$t0", "$t1", "$t2", "$t3", "$t4", 35),
+ round1!("$t4", "$t0", "$t1", "$t2", "$t3", 36),
+ round1!("$t3", "$t4", "$t0", "$t1", "$t2", 37),
+ round1!("$t2", "$t3", "$t4", "$t0", "$t1", 38),
+ round1!("$t1", "$t2", "$t3", "$t4", "$t0", 39),
+ round2!("$t0", "$t1", "$t2", "$t3", "$t4", 40),
+ round2!("$t4", "$t0", "$t1", "$t2", "$t3", 41),
+ round2!("$t3", "$t4", "$t0", "$t1", "$t2", 42),
+ round2!("$t2", "$t3", "$t4", "$t0", "$t1", 43),
+ round2!("$t1", "$t2", "$t3", "$t4", "$t0", 44),
+ round2!("$t0", "$t1", "$t2", "$t3", "$t4", 45),
+ round2!("$t4", "$t0", "$t1", "$t2", "$t3", 46),
+ round2!("$t3", "$t4", "$t0", "$t1", "$t2", 47),
+ round2!("$t2", "$t3", "$t4", "$t0", "$t1", 48),
+ round2!("$t1", "$t2", "$t3", "$t4", "$t0", 49),
+ round2!("$t0", "$t1", "$t2", "$t3", "$t4", 50),
+ round2!("$t4", "$t0", "$t1", "$t2", "$t3", 51),
+ round2!("$t3", "$t4", "$t0", "$t1", "$t2", 52),
+ round2!("$t2", "$t3", "$t4", "$t0", "$t1", 53),
+ round2!("$t1", "$t2", "$t3", "$t4", "$t0", 54),
+ round2!("$t0", "$t1", "$t2", "$t3", "$t4", 55),
+ round2!("$t4", "$t0", "$t1", "$t2", "$t3", 56),
+ round2!("$t3", "$t4", "$t0", "$t1", "$t2", 57),
+ round2!("$t2", "$t3", "$t4", "$t0", "$t1", 58),
+ round2!("$t1", "$t2", "$t3", "$t4", "$t0", 59),
+ round3!("$t0", "$t1", "$t2", "$t3", "$t4", 60),
+ round3!("$t4", "$t0", "$t1", "$t2", "$t3", 61),
+ round3!("$t3", "$t4", "$t0", "$t1", "$t2", 62),
+ round3!("$t2", "$t3", "$t4", "$t0", "$t1", 63),
+ round3!("$t1", "$t2", "$t3", "$t4", "$t0", 64),
+ round3!("$t0", "$t1", "$t2", "$t3", "$t4", 65),
+ round3!("$t4", "$t0", "$t1", "$t2", "$t3", 66),
+ round3!("$t3", "$t4", "$t0", "$t1", "$t2", 67),
+ round3!("$t2", "$t3", "$t4", "$t0", "$t1", 68),
+ round3!("$t1", "$t2", "$t3", "$t4", "$t0", 69),
+ round3!("$t0", "$t1", "$t2", "$t3", "$t4", 70),
+ round3!("$t4", "$t0", "$t1", "$t2", "$t3", 71),
+ round3!("$t3", "$t4", "$t0", "$t1", "$t2", 72),
+ round3!("$t2", "$t3", "$t4", "$t0", "$t1", 73),
+ round3!("$t1", "$t2", "$t3", "$t4", "$t0", 74),
+ round3!("$t0", "$t1", "$t2", "$t3", "$t4", 75),
+ round3!("$t4", "$t0", "$t1", "$t2", "$t3", 76),
+ round3!("$t3", "$t4", "$t0", "$t1", "$t2", 77),
+ round3!("$t2", "$t3", "$t4", "$t0", "$t1", 78),
+ round3!("$t1", "$t2", "$t3", "$t4", "$t0", 79),
+
+ // Update state registers
+ "ld.w $t5, $a0, 0", // a
+ "ld.w $t6, $a0, 4", // b
+ "ld.w $t7, $a0, 8", // c
+ "ld.w $t8, $a0, 12", // d
+ "add.w $t0, $t0, $t5",
+ "ld.w $t5, $a0, 16", // e
+ "add.w $t1, $t1, $t6",
+ "add.w $t2, $t2, $t7",
+ "add.w $t3, $t3, $t8",
+ "add.w $t4, $t4, $t5",
+
+ // Save updated state
+ "st.w $t0, $a0, 0",
+ "st.w $t1, $a0, 4",
+ "st.w $t2, $a0, 8",
+ "st.w $t3, $a0, 12",
+ "st.w $t4, $a0, 16",
+
+ // Looping over blocks
+ "addi.d $a1, $a1, 64",
+ "addi.d $a2, $a2, -1",
+ "bnez $a2, 42b",
+
+ // Restore stack register
+ "addi.d $sp, $sp, 64",
+
+ in("$a0") state,
+ inout("$a1") blocks.as_ptr() => _,
+ inout("$a2") blocks.len() => _,
+
+ in("$a4") K[0],
+ in("$a5") K[1],
+ in("$a6") K[2],
+ in("$a7") K[3],
+
+ // Clobbers
+ out("$t0") _,
+ out("$t1") _,
+ out("$t2") _,
+ out("$t3") _,
+ out("$t4") _,
+ out("$t5") _,
+ out("$t6") _,
+ out("$t7") _,
+ out("$t8") _,
+
+ options(preserves_flags),
+ );
+ }
+}
diff --git a/vendor/sha1/src/lib.rs b/vendor/sha1/src/lib.rs
index e5fbf2a7b..38ddc4b51 100644
--- a/vendor/sha1/src/lib.rs
+++ b/vendor/sha1/src/lib.rs
@@ -33,12 +33,12 @@
//!
//! This crate has been transferred to the RustCrypto organization and uses
//! implementation previously published as the `sha-1` crate. The previous
-//! zero dependencies version is now published as the [`sha1_smoll`] crate.
+//! zero dependencies version is now published as the [`sha1_smol`] crate.
//!
//! [1]: https://en.wikipedia.org/wiki/SHA-1
//! [2]: https://sha-mbles.github.io/
//! [3]: https://github.com/RustCrypto/hashes
-//! [`sha1_smoll`]: https://github.com/mitsuhiko/sha1-smol/
+//! [`sha1_smol`]: https://github.com/mitsuhiko/sha1-smol/
#![no_std]
#![cfg_attr(docsrs, feature(doc_cfg))]
diff --git a/vendor/sha2/.cargo-checksum.json b/vendor/sha2/.cargo-checksum.json
index 2716fafc7..7c069038f 100644
--- a/vendor/sha2/.cargo-checksum.json
+++ b/vendor/sha2/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"61b6ae2d035d98d2b5612a5c1c40238f4fa7e7bb3062daacf677abb4f7c60eab","Cargo.toml":"7d0b0694d8fd9d50c060a871ae98f80f392473086ec0723aa2017081c8654dce","LICENSE-APACHE":"a9040321c3712d8fd0b09cf52b17445de04a23a10165049ae187cd39e5c86be5","LICENSE-MIT":"b4eb00df6e2a4d22518fcaa6a2b4646f249b3a3c9814509b22bd2091f1392ff1","README.md":"b7af562922e4a631657acf264772d2af2b72a08d9bbc5fbcf56d9324f9027708","benches/mod.rs":"c32d9f91a541821ea988c14eee710963e623ef1edf69b02b41a29bc44e04ba95","src/consts.rs":"2f820349fa7cbf9fecc1d4aabbd1a721bb1badc3f32ef9e903826960b6f42523","src/core_api.rs":"73b160d98bfa6737688875ad73da5e3c2c93582604dc313d208200e12fdab676","src/lib.rs":"9d0ec0ba86a801bd9b2024f0b84ee322a26c7376a623dd61210e0eb9d6355aa1","src/sha256.rs":"cfc2b62a412112e471781a770793f0ba0466594b2e37001334562f3d95f340ce","src/sha256/aarch64.rs":"18121a25867a575fec8ef64da763693ece4e3e3e84da095254b8471234c6f1f8","src/sha256/soft.rs":"98e765a8e8dfa0af31f2b76570f212e6b3099522bf300e1554cbbd9fd5d02960","src/sha256/x86.rs":"70f1597f2029522b35bfd026df0a8908f086523ab2a80ba3ef35e6231b56353c","src/sha512.rs":"b0c94cf6e1a4a8efb8ccc494da96fdf805b1745fef7614875df5b4db9ee186da","src/sha512/aarch64.rs":"2ed929329a0fa66180e4726d028713a49f99cc223e635078fc1f3252a44981e0","src/sha512/soft.rs":"0183ad89418b886859d2afa9bf061bc92759ae337c1d26147b4300042e63ef42","src/sha512/x86.rs":"c7dd8bdf3212e1e8c4cc9cc6b380dc0468f79dcfd0f61a445d0d38cead45a03a","tests/data/sha224.blb":"59b185972521af418fd49a079de3d5f5bed74cd76d80473da51cab3faee6c7d0","tests/data/sha256.blb":"bb096934bb7e43e41ce143d211397afca6fcdfe243a39811688ea31aae6f800a","tests/data/sha384.blb":"e8fe66c07ba336fae2c0aa4c87cb768f41bd4ed318ee1a36fbde0a68581946ec","tests/data/sha512.blb":"1cc0e86571f2f4e3bc81438ce7b6c25c118d2d7437355240113f59cbb782c8d6","tests/data/sha512_224.blb":"b02dd46741db1034112e0888d0cdb233a21b9a82c319456f806bbaae49acf440","tests/data/sha512_256.blb":"95195b758e362d92ff0cebebac4cca696512ea5811b635243bc70e29164e5786","tests/mod.rs":"61be596fd9b45a8db345950ff2ed6f87eaf4d239ac156885f36e819da0597644"},"package":"479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"b7b0a14409ac2880f86fe50d9584acc81f2346ebcb4e46a9e2235b54ac5b02ef","Cargo.toml":"5fdf94b86fc47d105d2f2cc55c6346d15e7f3d2d7ea92031b1ce2d24276e7778","LICENSE-APACHE":"a9040321c3712d8fd0b09cf52b17445de04a23a10165049ae187cd39e5c86be5","LICENSE-MIT":"b4eb00df6e2a4d22518fcaa6a2b4646f249b3a3c9814509b22bd2091f1392ff1","README.md":"b7af562922e4a631657acf264772d2af2b72a08d9bbc5fbcf56d9324f9027708","benches/mod.rs":"c32d9f91a541821ea988c14eee710963e623ef1edf69b02b41a29bc44e04ba95","src/consts.rs":"2f820349fa7cbf9fecc1d4aabbd1a721bb1badc3f32ef9e903826960b6f42523","src/core_api.rs":"73b160d98bfa6737688875ad73da5e3c2c93582604dc313d208200e12fdab676","src/lib.rs":"9d0ec0ba86a801bd9b2024f0b84ee322a26c7376a623dd61210e0eb9d6355aa1","src/sha256.rs":"78e84eea5d517554aa5a10860bf2ce5013ca26d529e78643cd59062546e0746f","src/sha256/aarch64.rs":"18121a25867a575fec8ef64da763693ece4e3e3e84da095254b8471234c6f1f8","src/sha256/loongarch64_asm.rs":"79e2d5e3c039581e2319f8789de9ed13a8dd819ebffd13532dbd83448c7ad662","src/sha256/soft.rs":"98e765a8e8dfa0af31f2b76570f212e6b3099522bf300e1554cbbd9fd5d02960","src/sha256/x86.rs":"70f1597f2029522b35bfd026df0a8908f086523ab2a80ba3ef35e6231b56353c","src/sha512.rs":"1b19c23c63e9cfca8b42fd9e108a8570dd03e22a37d4d6f499f2fa5e566cb2de","src/sha512/aarch64.rs":"2ed929329a0fa66180e4726d028713a49f99cc223e635078fc1f3252a44981e0","src/sha512/loongarch64_asm.rs":"58a7b54d95a0e037ba80570d96ffe0dd7c0014c7fcb45b90725e522cc4992d8a","src/sha512/soft.rs":"0183ad89418b886859d2afa9bf061bc92759ae337c1d26147b4300042e63ef42","src/sha512/x86.rs":"c7dd8bdf3212e1e8c4cc9cc6b380dc0468f79dcfd0f61a445d0d38cead45a03a","tests/data/sha224.blb":"59b185972521af418fd49a079de3d5f5bed74cd76d80473da51cab3faee6c7d0","tests/data/sha256.blb":"bb096934bb7e43e41ce143d211397afca6fcdfe243a39811688ea31aae6f800a","tests/data/sha384.blb":"e8fe66c07ba336fae2c0aa4c87cb768f41bd4ed318ee1a36fbde0a68581946ec","tests/data/sha512.blb":"1cc0e86571f2f4e3bc81438ce7b6c25c118d2d7437355240113f59cbb782c8d6","tests/data/sha512_224.blb":"b02dd46741db1034112e0888d0cdb233a21b9a82c319456f806bbaae49acf440","tests/data/sha512_256.blb":"95195b758e362d92ff0cebebac4cca696512ea5811b635243bc70e29164e5786","tests/mod.rs":"61be596fd9b45a8db345950ff2ed6f87eaf4d239ac156885f36e819da0597644"},"package":"793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"} \ No newline at end of file
diff --git a/vendor/sha2/CHANGELOG.md b/vendor/sha2/CHANGELOG.md
index a552266e5..a5182bcad 100644
--- a/vendor/sha2/CHANGELOG.md
+++ b/vendor/sha2/CHANGELOG.md
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 0.10.8 (2023-09-26)
+### Added
+- `asm!`-based backend for LoongArch64 targets gated behind `loongarch64_asm` feature [#507]
+
+[#507]: https://github.com/RustCrypto/hashes/pull/507
+
## 0.10.7 (2023-06-15)
### Added
- AArch64 Neon-based backend ([#490])
diff --git a/vendor/sha2/Cargo.toml b/vendor/sha2/Cargo.toml
index c19f3241d..0a9655ce0 100644
--- a/vendor/sha2/Cargo.toml
+++ b/vendor/sha2/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2018"
name = "sha2"
-version = "0.10.7"
+version = "0.10.8"
authors = ["RustCrypto Developers"]
description = """
Pure Rust implementation of the SHA-2 hash function family
@@ -59,6 +59,7 @@ asm-aarch64 = ["asm"]
compress = []
default = ["std"]
force-soft = []
+loongarch64_asm = []
oid = ["digest/oid"]
std = ["digest/std"]
diff --git a/vendor/sha2/src/sha256.rs b/vendor/sha2/src/sha256.rs
index a45331e17..8f8287836 100644
--- a/vendor/sha2/src/sha256.rs
+++ b/vendor/sha2/src/sha256.rs
@@ -17,6 +17,9 @@ cfg_if::cfg_if! {
mod soft;
mod aarch64;
use aarch64::compress;
+ } else if #[cfg(all(feature = "loongarch64_asm", target_arch = "loongarch64"))] {
+ mod loongarch64_asm;
+ use loongarch64_asm::compress;
} else {
mod soft;
use soft::compress;
diff --git a/vendor/sha2/src/sha256/loongarch64_asm.rs b/vendor/sha2/src/sha256/loongarch64_asm.rs
new file mode 100644
index 000000000..c80fce8bb
--- /dev/null
+++ b/vendor/sha2/src/sha256/loongarch64_asm.rs
@@ -0,0 +1,227 @@
+//! LoongArch64 assembly backend
+
+macro_rules! c {
+ ($($l:expr)*) => {
+ concat!($($l ,)*)
+ };
+}
+
+macro_rules! rounda {
+ ($i:literal, $a:literal, $b:literal, $c:literal, $d:literal, $e:literal, $f:literal, $g:literal, $h:literal) => {
+ c!(
+ "ld.w $a5, $a1, (" $i " * 4);"
+ "revb.2h $a5, $a5;"
+ "rotri.w $a5, $a5, 16;"
+ roundtail!($i, $a, $b, $c, $d, $e, $f, $g, $h)
+ )
+ };
+}
+
+macro_rules! roundb {
+ ($i:literal, $a:literal, $b:literal, $c:literal, $d:literal, $e:literal, $f:literal, $g:literal, $h:literal) => {
+ c!(
+ "ld.w $a4, $sp, (((" $i " - 15) & 0xF) * 4);"
+ "ld.w $a5, $sp, (((" $i " - 16) & 0xF) * 4);"
+ "ld.w $a6, $sp, (((" $i " - 7) & 0xF) * 4);"
+ "add.w $a5, $a5, $a6;"
+ "rotri.w $a6, $a4, 18;"
+ "srli.w $a7, $a4, 3;"
+ "rotri.w $a4, $a4, 7;"
+ "xor $a6, $a6, $a7;"
+ "xor $a4, $a4, $a6;"
+ "add.w $a5, $a5, $a4;"
+ "ld.w $a4, $sp, (((" $i " - 2) & 0xF) * 4);"
+ "rotri.w $a6, $a4, 19;"
+ "srli.w $a7, $a4, 10;"
+ "rotri.w $a4, $a4, 17;"
+ "xor $a6, $a6, $a7;"
+ "xor $a4, $a4, $a6;"
+ "add.w $a5, $a5, $a4;"
+ roundtail!($i, $a, $b, $c, $d, $e, $f, $g, $h)
+ )
+ };
+}
+
+macro_rules! roundtail {
+ ($i:literal, $a:literal, $b:literal, $c:literal, $d:literal, $e:literal, $f:literal, $g:literal, $h:literal) => {
+ c!(
+ // Part 0
+ "rotri.w $a6, " $e ", 11;"
+ "rotri.w $a7, " $e ", 25;"
+ "rotri.w $a4, " $e ", 6;"
+ "xor $a6, $a6, $a7;"
+ "xor $a4, $a4, $a6;"
+ "xor $a6, " $g ", " $f ";"
+ "ld.w $a7, $a3, " $i " * 4;"
+ "and $a6, $a6, " $e ";"
+ "xor $a6, $a6, " $g ";"
+ "add.w $a4, $a4, $a6;"
+ "add.w $a4, $a4, $a7;"
+ "add.w " $h ", " $h ", $a5;"
+ "add.w " $h ", " $h ", $a4;"
+ // Part 1
+ "add.w " $d ", " $d ", " $h ";"
+ // Part 2
+ "rotri.w $a6, " $a ", 13;"
+ "rotri.w $a7, " $a ", 22;"
+ "rotri.w $a4, " $a ", 2;"
+ "xor $a6, $a6, $a7;"
+ "xor $a4, $a4, $a6;"
+ "add.w " $h ", " $h ", $a4;"
+ "or $a4, " $c ", " $b ";"
+ "and $a6, " $c ", " $b ";"
+ "and $a4, $a4, " $a ";"
+ "or $a4, $a4, $a6;"
+ "add.w " $h ", " $h ", $a4;"
+ "st.w $a5, $sp, ((" $i " & 0xF) * 4);"
+ )
+ };
+}
+
+pub fn compress(state: &mut [u32; 8], blocks: &[[u8; 64]]) {
+ if blocks.is_empty() {
+ return;
+ }
+
+ unsafe {
+ core::arch::asm!(
+ // Allocate scratch stack space
+ "addi.d $sp, $sp, -64;",
+
+ // Load state
+ "ld.w $t0, $a0, 0",
+ "ld.w $t1, $a0, 4",
+ "ld.w $t2, $a0, 8",
+ "ld.w $t3, $a0, 12",
+ "ld.w $t4, $a0, 16",
+ "ld.w $t5, $a0, 20",
+ "ld.w $t6, $a0, 24",
+ "ld.w $t7, $a0, 28",
+
+ "42:",
+
+ // Do 64 rounds of hashing
+ rounda!( 0, "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7"),
+ rounda!( 1, "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6"),
+ rounda!( 2, "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5"),
+ rounda!( 3, "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4"),
+ rounda!( 4, "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3"),
+ rounda!( 5, "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2"),
+ rounda!( 6, "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1"),
+ rounda!( 7, "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0"),
+ rounda!( 8, "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7"),
+ rounda!( 9, "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6"),
+ rounda!(10, "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5"),
+ rounda!(11, "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4"),
+ rounda!(12, "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3"),
+ rounda!(13, "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2"),
+ rounda!(14, "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1"),
+ rounda!(15, "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0"),
+ roundb!(16, "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7"),
+ roundb!(17, "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6"),
+ roundb!(18, "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5"),
+ roundb!(19, "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4"),
+ roundb!(20, "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3"),
+ roundb!(21, "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2"),
+ roundb!(22, "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1"),
+ roundb!(23, "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0"),
+ roundb!(24, "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7"),
+ roundb!(25, "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6"),
+ roundb!(26, "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5"),
+ roundb!(27, "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4"),
+ roundb!(28, "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3"),
+ roundb!(29, "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2"),
+ roundb!(30, "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1"),
+ roundb!(31, "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0"),
+ roundb!(32, "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7"),
+ roundb!(33, "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6"),
+ roundb!(34, "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5"),
+ roundb!(35, "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4"),
+ roundb!(36, "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3"),
+ roundb!(37, "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2"),
+ roundb!(38, "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1"),
+ roundb!(39, "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0"),
+ roundb!(40, "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7"),
+ roundb!(41, "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6"),
+ roundb!(42, "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5"),
+ roundb!(43, "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4"),
+ roundb!(44, "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3"),
+ roundb!(45, "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2"),
+ roundb!(46, "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1"),
+ roundb!(47, "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0"),
+ roundb!(48, "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7"),
+ roundb!(49, "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6"),
+ roundb!(50, "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5"),
+ roundb!(51, "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4"),
+ roundb!(52, "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3"),
+ roundb!(53, "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2"),
+ roundb!(54, "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1"),
+ roundb!(55, "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0"),
+ roundb!(56, "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7"),
+ roundb!(57, "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6"),
+ roundb!(58, "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5"),
+ roundb!(59, "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4"),
+ roundb!(60, "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3"),
+ roundb!(61, "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2"),
+ roundb!(62, "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1"),
+ roundb!(63, "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0"),
+
+ // Update state registers
+ "ld.w $a4, $a0, 0", // a
+ "ld.w $a5, $a0, 4", // b
+ "ld.w $a6, $a0, 8", // c
+ "ld.w $a7, $a0, 12", // d
+ "add.w $t0, $t0, $a4",
+ "add.w $t1, $t1, $a5",
+ "add.w $t2, $t2, $a6",
+ "add.w $t3, $t3, $a7",
+ "ld.w $a4, $a0, 16", // e
+ "ld.w $a5, $a0, 20", // f
+ "ld.w $a6, $a0, 24", // g
+ "ld.w $a7, $a0, 28", // h
+ "add.w $t4, $t4, $a4",
+ "add.w $t5, $t5, $a5",
+ "add.w $t6, $t6, $a6",
+ "add.w $t7, $t7, $a7",
+
+ // Save updated state
+ "st.w $t0, $a0, 0",
+ "st.w $t1, $a0, 4",
+ "st.w $t2, $a0, 8",
+ "st.w $t3, $a0, 12",
+ "st.w $t4, $a0, 16",
+ "st.w $t5, $a0, 20",
+ "st.w $t6, $a0, 24",
+ "st.w $t7, $a0, 28",
+
+ // Looping over blocks
+ "addi.d $a1, $a1, 64",
+ "addi.d $a2, $a2, -1",
+ "bnez $a2, 42b",
+
+ // Restore stack register
+ "addi.d $sp, $sp, 64",
+
+ in("$a0") state,
+ inout("$a1") blocks.as_ptr() => _,
+ inout("$a2") blocks.len() => _,
+ in("$a3") crate::consts::K32.as_ptr(),
+
+ // Clobbers
+ out("$a4") _,
+ out("$a5") _,
+ out("$a6") _,
+ out("$a7") _,
+ out("$t0") _,
+ out("$t1") _,
+ out("$t2") _,
+ out("$t3") _,
+ out("$t4") _,
+ out("$t5") _,
+ out("$t6") _,
+ out("$t7") _,
+
+ options(preserves_flags),
+ );
+ }
+}
diff --git a/vendor/sha2/src/sha512.rs b/vendor/sha2/src/sha512.rs
index af4178c0b..dfe0b454f 100644
--- a/vendor/sha2/src/sha512.rs
+++ b/vendor/sha2/src/sha512.rs
@@ -19,6 +19,9 @@ cfg_if::cfg_if! {
mod soft;
mod aarch64;
use aarch64::compress;
+ } else if #[cfg(all(feature = "loongarch64_asm", target_arch = "loongarch64"))] {
+ mod loongarch64_asm;
+ use loongarch64_asm::compress;
} else {
mod soft;
use soft::compress;
diff --git a/vendor/sha2/src/sha512/loongarch64_asm.rs b/vendor/sha2/src/sha512/loongarch64_asm.rs
new file mode 100644
index 000000000..557089def
--- /dev/null
+++ b/vendor/sha2/src/sha512/loongarch64_asm.rs
@@ -0,0 +1,242 @@
+//! LoongArch64 assembly backend
+
+macro_rules! c {
+ ($($l:expr)*) => {
+ concat!($($l ,)*)
+ };
+}
+
+macro_rules! rounda {
+ ($i:literal, $a:literal, $b:literal, $c:literal, $d:literal, $e:literal, $f:literal, $g:literal, $h:literal) => {
+ c!(
+ "ld.d $a5, $a1, (" $i " * 8);"
+ "revb.d $a5, $a5;"
+ roundtail!($i, $a, $b, $c, $d, $e, $f, $g, $h)
+ )
+ };
+}
+
+macro_rules! roundb {
+ ($i:literal, $a:literal, $b:literal, $c:literal, $d:literal, $e:literal, $f:literal, $g:literal, $h:literal) => {
+ c!(
+ "ld.d $a4, $sp, (((" $i " - 15) & 0xF) * 8);"
+ "ld.d $a5, $sp, (((" $i " - 16) & 0xF) * 8);"
+ "ld.d $a6, $sp, (((" $i " - 7) & 0xF) * 8);"
+ "add.d $a5, $a5, $a6;"
+ "rotri.d $a6, $a4, 8;"
+ "srli.d $a7, $a4, 7;"
+ "rotri.d $a4, $a4, 1;"
+ "xor $a6, $a6, $a7;"
+ "xor $a4, $a4, $a6;"
+ "add.d $a5, $a5, $a4;"
+ "ld.d $a4, $sp, (((" $i " - 2) & 0xF) * 8);"
+ "rotri.d $a6, $a4, 61;"
+ "srli.d $a7, $a4, 6;"
+ "rotri.d $a4, $a4, 19;"
+ "xor $a6, $a6, $a7;"
+ "xor $a4, $a4, $a6;"
+ "add.d $a5, $a5, $a4;"
+ roundtail!($i, $a, $b, $c, $d, $e, $f, $g, $h)
+ )
+ };
+}
+
+macro_rules! roundtail {
+ ($i:literal, $a:literal, $b:literal, $c:literal, $d:literal, $e:literal, $f:literal, $g:literal, $h:literal) => {
+ c!(
+ // Part 0
+ "rotri.d $a6, " $e ", 18;"
+ "rotri.d $a7, " $e ", 41;"
+ "rotri.d $a4, " $e ", 14;"
+ "xor $a6, $a6, $a7;"
+ "xor $a4, $a4, $a6;"
+ "xor $a6, " $g ", " $f ";"
+ "ld.d $a7, $a3, " $i " * 8;"
+ "and $a6, $a6, " $e ";"
+ "xor $a6, $a6, " $g ";"
+ "add.d $a4, $a4, $a6;"
+ "add.d $a4, $a4, $a7;"
+ "add.d " $h ", " $h ", $a5;"
+ "add.d " $h ", " $h ", $a4;"
+ // Part 1
+ "add.d " $d ", " $d ", " $h ";"
+ // Part 2
+ "rotri.d $a6, " $a ", 39;"
+ "rotri.d $a7, " $a ", 34;"
+ "rotri.d $a4, " $a ", 28;"
+ "xor $a6, $a6, $a7;"
+ "xor $a4, $a4, $a6;"
+ "add.d " $h ", " $h ", $a4;"
+ "or $a4, " $c ", " $b ";"
+ "and $a6, " $c ", " $b ";"
+ "and $a4, $a4, " $a ";"
+ "or $a4, $a4, $a6;"
+ "add.d " $h ", " $h ", $a4;"
+ "st.d $a5, $sp, ((" $i " & 0xF) * 8);"
+ )
+ };
+}
+
+pub fn compress(state: &mut [u64; 8], blocks: &[[u8; 128]]) {
+ if blocks.is_empty() {
+ return;
+ }
+
+ unsafe {
+ core::arch::asm!(
+ // Allocate scratch stack space
+ "addi.d $sp, $sp, -128;",
+
+ // Load state
+ "ld.d $t0, $a0, 0",
+ "ld.d $t1, $a0, 8",
+ "ld.d $t2, $a0, 16",
+ "ld.d $t3, $a0, 24",
+ "ld.d $t4, $a0, 32",
+ "ld.d $t5, $a0, 40",
+ "ld.d $t6, $a0, 48",
+ "ld.d $t7, $a0, 56",
+
+ "42:",
+
+ // Do 64 rounds of hashing
+ rounda!( 0, "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7"),
+ rounda!( 1, "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6"),
+ rounda!( 2, "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5"),
+ rounda!( 3, "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4"),
+ rounda!( 4, "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3"),
+ rounda!( 5, "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2"),
+ rounda!( 6, "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1"),
+ rounda!( 7, "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0"),
+ rounda!( 8, "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7"),
+ rounda!( 9, "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6"),
+ rounda!(10, "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5"),
+ rounda!(11, "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4"),
+ rounda!(12, "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3"),
+ rounda!(13, "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2"),
+ rounda!(14, "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1"),
+ rounda!(15, "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0"),
+ roundb!(16, "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7"),
+ roundb!(17, "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6"),
+ roundb!(18, "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5"),
+ roundb!(19, "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4"),
+ roundb!(20, "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3"),
+ roundb!(21, "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2"),
+ roundb!(22, "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1"),
+ roundb!(23, "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0"),
+ roundb!(24, "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7"),
+ roundb!(25, "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6"),
+ roundb!(26, "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5"),
+ roundb!(27, "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4"),
+ roundb!(28, "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3"),
+ roundb!(29, "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2"),
+ roundb!(30, "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1"),
+ roundb!(31, "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0"),
+ roundb!(32, "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7"),
+ roundb!(33, "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6"),
+ roundb!(34, "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5"),
+ roundb!(35, "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4"),
+ roundb!(36, "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3"),
+ roundb!(37, "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2"),
+ roundb!(38, "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1"),
+ roundb!(39, "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0"),
+ roundb!(40, "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7"),
+ roundb!(41, "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6"),
+ roundb!(42, "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5"),
+ roundb!(43, "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4"),
+ roundb!(44, "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3"),
+ roundb!(45, "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2"),
+ roundb!(46, "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1"),
+ roundb!(47, "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0"),
+ roundb!(48, "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7"),
+ roundb!(49, "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6"),
+ roundb!(50, "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5"),
+ roundb!(51, "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4"),
+ roundb!(52, "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3"),
+ roundb!(53, "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2"),
+ roundb!(54, "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1"),
+ roundb!(55, "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0"),
+ roundb!(56, "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7"),
+ roundb!(57, "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6"),
+ roundb!(58, "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5"),
+ roundb!(59, "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4"),
+ roundb!(60, "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3"),
+ roundb!(61, "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2"),
+ roundb!(62, "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1"),
+ roundb!(63, "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0"),
+ roundb!(64, "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7"),
+ roundb!(65, "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6"),
+ roundb!(66, "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5"),
+ roundb!(67, "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4"),
+ roundb!(68, "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3"),
+ roundb!(69, "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2"),
+ roundb!(70, "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1"),
+ roundb!(71, "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0"),
+ roundb!(72, "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7"),
+ roundb!(73, "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6"),
+ roundb!(74, "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4", "$t5"),
+ roundb!(75, "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3", "$t4"),
+ roundb!(76, "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2", "$t3"),
+ roundb!(77, "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1" , "$t2"),
+ roundb!(78, "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0" , "$t1"),
+ roundb!(79, "$t1" , "$t2", "$t3", "$t4", "$t5", "$t6", "$t7", "$t0"),
+
+ // Update state registers
+ "ld.d $a4, $a0, 0", // a
+ "ld.d $a5, $a0, 8", // b
+ "ld.d $a6, $a0, 16", // c
+ "ld.d $a7, $a0, 24", // d
+ "add.d $t0, $t0, $a4",
+ "add.d $t1, $t1, $a5",
+ "add.d $t2, $t2, $a6",
+ "add.d $t3, $t3, $a7",
+ "ld.d $a4, $a0, 32", // e
+ "ld.d $a5, $a0, 40", // f
+ "ld.d $a6, $a0, 48", // g
+ "ld.d $a7, $a0, 56", // h
+ "add.d $t4, $t4, $a4",
+ "add.d $t5, $t5, $a5",
+ "add.d $t6, $t6, $a6",
+ "add.d $t7, $t7, $a7",
+
+ // Save updated state
+ "st.d $t0, $a0, 0",
+ "st.d $t1, $a0, 8",
+ "st.d $t2, $a0, 16",
+ "st.d $t3, $a0, 24",
+ "st.d $t4, $a0, 32",
+ "st.d $t5, $a0, 40",
+ "st.d $t6, $a0, 48",
+ "st.d $t7, $a0, 56",
+
+ // Looping over blocks
+ "addi.d $a1, $a1, 128",
+ "addi.d $a2, $a2, -1",
+ "bnez $a2, 42b",
+
+ // Restore stack register
+ "addi.d $sp, $sp, 128",
+
+ in("$a0") state,
+ inout("$a1") blocks.as_ptr() => _,
+ inout("$a2") blocks.len() => _,
+ in("$a3") crate::consts::K64.as_ptr(),
+
+ // Clobbers
+ out("$a4") _,
+ out("$a5") _,
+ out("$a6") _,
+ out("$a7") _,
+ out("$t0") _,
+ out("$t1") _,
+ out("$t2") _,
+ out("$t3") _,
+ out("$t4") _,
+ out("$t5") _,
+ out("$t6") _,
+ out("$t7") _,
+
+ options(preserves_flags),
+ );
+ }
+}
diff --git a/vendor/snapbox/.cargo-checksum.json b/vendor/snapbox/.cargo-checksum.json
index e3e324dee..44bc858a4 100644
--- a/vendor/snapbox/.cargo-checksum.json
+++ b/vendor/snapbox/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"dabf058307b37fa39652cea5da44b18818fb4b08daf1d5488f778036865ecd86","Cargo.toml":"a63174d5bff2bfb8ea394cf4a0b5ea1b219bf10d58625a17d58c282a1c1b5e85","LICENSE-APACHE":"c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08","LICENSE-MIT":"6efb0476a1cc085077ed49357026d8c173bf33017278ef440f222fb9cbcb66e6","README.md":"8ae45cfbc76984049c97e7bdee5e0a6709f2bff442895e0c08701a71338aa0f9","examples/snap-example-fixture.rs":"794ba42841b44bed6a274cfad05b47b2882a30e925b49e010af85e9cb348a035","src/action.rs":"a451e85e74fe43b5162a144927151e3785ef36c8d67f16f6ec3da3c6f371ca12","src/assert.rs":"2fe76edef1fd05a8eadfa6e8a6b1dce8629b6e4f1fd4ce85d98b1a51eafacac4","src/bin/snap-fixture.rs":"794ba42841b44bed6a274cfad05b47b2882a30e925b49e010af85e9cb348a035","src/cmd.rs":"348b5072f898db38dc83eb01a83463e0f523ef9bf78e73edb6517be089cfd70c","src/data.rs":"a28fb56fc40eb8f139a75a7dec0086b22603f93663631cab6deea5418d57865b","src/error.rs":"ed67eaa4e134937e1f014a0f5555985d26a021bd7034e2928ff3e46f73d7834a","src/harness.rs":"1035e9cca946671c8ccf1604e549355308859a43938b35a8c0d1aa452448d146","src/lib.rs":"e705d54d878ccfd88f020b97d6a6b6868d9db04f2dec8e04f1b39d372b8d20d4","src/path.rs":"d1ed8f92ed8fd42a44d18bfead92ba40e1e3b73e3ac474ad7e85606f7bc8c20a","src/report/color.rs":"721e50e3d4fa4b7a0f2b1f32f86b70ba886e5dba18251b26c6fde45981d205fd","src/report/diff.rs":"5821817a6729084e8eb48818b5c3fccbdcbe48b35842d101ff33c4b8208c13c6","src/report/mod.rs":"84bd389fff126b5a22790865417c3b8942cced343d56659ad9f8b568e3d62902","src/substitutions.rs":"2c2433e6290b40c64f3e508625c4ed1229f01aaa5ccb8add09cbee2fe84b1ae2","src/utils/lines.rs":"9a8eff80b4eced8042cecd2a5bf689365a9ceeea8b4239dcee22a6daad2522ec","src/utils/mod.rs":"61e6a1c2bbefa33a7f8af4068a42a7ad31bfefa90803610374f28be4a2f3b9c3"},"package":"7b439536a42c43be148b610c7f7f968fb79a457254910a9cb20900da73cd3271"} \ No newline at end of file
+{"files":{"Cargo.lock":"8e062e31566ee546c6753973e1212950aca0c000b2c96d17daf3abe0eea22bf4","Cargo.toml":"40c31aff9213e45bb3bb494e9b71bca937a06cc2b2987ccee1175e95c7ebb46d","LICENSE-APACHE":"c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08","LICENSE-MIT":"6efb0476a1cc085077ed49357026d8c173bf33017278ef440f222fb9cbcb66e6","README.md":"8ae45cfbc76984049c97e7bdee5e0a6709f2bff442895e0c08701a71338aa0f9","examples/snap-example-fixture.rs":"794ba42841b44bed6a274cfad05b47b2882a30e925b49e010af85e9cb348a035","src/action.rs":"a451e85e74fe43b5162a144927151e3785ef36c8d67f16f6ec3da3c6f371ca12","src/assert.rs":"2fe76edef1fd05a8eadfa6e8a6b1dce8629b6e4f1fd4ce85d98b1a51eafacac4","src/bin/snap-fixture.rs":"794ba42841b44bed6a274cfad05b47b2882a30e925b49e010af85e9cb348a035","src/cmd.rs":"348b5072f898db38dc83eb01a83463e0f523ef9bf78e73edb6517be089cfd70c","src/data.rs":"a28fb56fc40eb8f139a75a7dec0086b22603f93663631cab6deea5418d57865b","src/error.rs":"ed67eaa4e134937e1f014a0f5555985d26a021bd7034e2928ff3e46f73d7834a","src/harness.rs":"1035e9cca946671c8ccf1604e549355308859a43938b35a8c0d1aa452448d146","src/lib.rs":"e705d54d878ccfd88f020b97d6a6b6868d9db04f2dec8e04f1b39d372b8d20d4","src/path.rs":"d1ed8f92ed8fd42a44d18bfead92ba40e1e3b73e3ac474ad7e85606f7bc8c20a","src/report/color.rs":"721e50e3d4fa4b7a0f2b1f32f86b70ba886e5dba18251b26c6fde45981d205fd","src/report/diff.rs":"84a812be5d6cc99d37b874552138e8bccfa5a8ebe0a07671baefeb1425df5e3c","src/report/mod.rs":"84bd389fff126b5a22790865417c3b8942cced343d56659ad9f8b568e3d62902","src/substitutions.rs":"2c2433e6290b40c64f3e508625c4ed1229f01aaa5ccb8add09cbee2fe84b1ae2","src/utils/lines.rs":"9a8eff80b4eced8042cecd2a5bf689365a9ceeea8b4239dcee22a6daad2522ec","src/utils/mod.rs":"61e6a1c2bbefa33a7f8af4068a42a7ad31bfefa90803610374f28be4a2f3b9c3"},"package":"4b377c0b6e4715c116473d8e40d51e3fa5b0a2297ca9b2a931ba800667b259ed"} \ No newline at end of file
diff --git a/vendor/snapbox/Cargo.lock b/vendor/snapbox/Cargo.lock
index a1e32543c..184963e5c 100644
--- a/vendor/snapbox/Cargo.lock
+++ b/vendor/snapbox/Cargo.lock
@@ -602,7 +602,7 @@ checksum = "62ac7f900db32bf3fd12e0117dd3dc4da74bc52ebaac97f39668446d89694803"
[[package]]
name = "snapbox"
-version = "0.4.13"
+version = "0.4.14"
dependencies = [
"anstream",
"anstyle",
diff --git a/vendor/snapbox/Cargo.toml b/vendor/snapbox/Cargo.toml
index 4e8005c6b..2cb92d692 100644
--- a/vendor/snapbox/Cargo.toml
+++ b/vendor/snapbox/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.70.0"
name = "snapbox"
-version = "0.4.13"
+version = "0.4.14"
include = [
"build.rs",
"src/**/*",
diff --git a/vendor/snapbox/src/report/diff.rs b/vendor/snapbox/src/report/diff.rs
index 67f6810b5..b980733bb 100644
--- a/vendor/snapbox/src/report/diff.rs
+++ b/vendor/snapbox/src/report/diff.rs
@@ -25,17 +25,17 @@ pub fn write_diff(
if !rendered {
if let Some(expected_name) = expected_name {
- writeln!(writer, "{} {}:", expected_name, palette.info("(expected)"))?;
+ writeln!(writer, "{} {}:", expected_name, palette.error("(expected)"))?;
} else {
- writeln!(writer, "{}:", palette.info("Expected"))?;
+ writeln!(writer, "{}:", palette.error("Expected"))?;
}
- writeln!(writer, "{}", palette.info(&expected))?;
+ writeln!(writer, "{}", palette.error(&expected))?;
if let Some(actual_name) = actual_name {
- writeln!(writer, "{} {}:", actual_name, palette.error("(actual)"))?;
+ writeln!(writer, "{} {}:", actual_name, palette.info("(actual)"))?;
} else {
- writeln!(writer, "{}:", palette.error("Actual"))?;
+ writeln!(writer, "{}:", palette.info("Actual"))?;
}
- writeln!(writer, "{}", palette.error(&actual))?;
+ writeln!(writer, "{}", palette.info(&actual))?;
}
Ok(())
}
@@ -64,19 +64,19 @@ fn write_diff_inner(
writeln!(
writer,
"{}",
- palette.info(format_args!("{:->4} expected: {}", "", expected_name))
+ palette.error(format_args!("{:->4} expected: {}", "", expected_name))
)?;
} else {
- writeln!(writer, "{}", palette.info(format_args!("--- Expected")))?;
+ writeln!(writer, "{}", palette.error(format_args!("--- Expected")))?;
}
if let Some(actual_name) = actual_name {
writeln!(
writer,
"{}",
- palette.error(format_args!("{:+>4} actual: {}", "", actual_name))
+ palette.info(format_args!("{:+>4} actual: {}", "", actual_name))
)?;
} else {
- writeln!(writer, "{}", palette.error(format_args!("+++ Actual")))?;
+ writeln!(writer, "{}", palette.info(format_args!("+++ Actual")))?;
}
let changes = changes
.ops()
@@ -137,10 +137,17 @@ fn write_diff_inner(
elided = false;
match change.tag() {
similar::ChangeTag::Insert => {
- write_change(writer, change, "+", palette.actual, palette.error, palette)?;
+ write_change(writer, change, "+", palette.actual, palette.info, palette)?;
}
similar::ChangeTag::Delete => {
- write_change(writer, change, "-", palette.expected, palette.info, palette)?;
+ write_change(
+ writer,
+ change,
+ "-",
+ palette.expected,
+ palette.error,
+ palette,
+ )?;
}
similar::ChangeTag::Equal => {
write_change(writer, change, "|", palette.hint, palette.hint, palette)?;
diff --git a/vendor/supports-hyperlinks/.cargo-checksum.json b/vendor/supports-hyperlinks/.cargo-checksum.json
new file mode 100644
index 000000000..dfa1fedd6
--- /dev/null
+++ b/vendor/supports-hyperlinks/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"CHANGELOG.md":"2571110c10802a3d7b0dd592a86f8b3b60d1df1d9c3d19735040a07b5f4d9695","Cargo.toml":"a559b1c95bd6fdafbe850a9c3113b08731692461d37e011159cf4e1263612dd0","LICENSE":"610432849befa0e875d601d044e7e5441eb86c83d052681b23aef357b2a0b928","Makefile.toml":"b780b6410cd4acf5a249c2b553e6f3e5ce95f0d4e156c1d4a41e3b1abbc39604","README.md":"eb9acbf4aad0922414f3a9309ef103b9a6b067acdd677ba20c43ba6f666e6a37","cliff.toml":"9ea8157ea9b663dd99b4a48a686b060637fe18c8fdd82c6dd22a76a8e45f3914","src/lib.rs":"b0493dcf3e613f0e3344a71bef843025c36cd6026c909efaf9d13744849274da"},"package":"f84231692eb0d4d41e4cdd0cabfdd2e6cd9e255e65f80c9aa7c98dd502b4233d"} \ No newline at end of file
diff --git a/vendor/supports-hyperlinks/CHANGELOG.md b/vendor/supports-hyperlinks/CHANGELOG.md
new file mode 100644
index 000000000..d0f92a236
--- /dev/null
+++ b/vendor/supports-hyperlinks/CHANGELOG.md
@@ -0,0 +1,49 @@
+# `supports-hyperlinks` Release Changelog
+
+<a name="2.1.0"></a>
+## 2.1.0 (2023-04-18)
+
+### Features
+
+* **terms:** add support for a couple more terminals ([0a7728c5](https://github.com/zkat/supports-hyperlinks/commit/0a7728c5b2d67a7bb52d497c2ce567a2d496d9db))
+
+### Miscellaneous Tasks
+
+* **edition:** bump edition to 2021 ([5cd860b1](https://github.com/zkat/supports-hyperlinks/commit/5cd860b1c36ebc0820ad66bf5736609f83365830))
+
+<a name="2.0.0"></a>
+## 2.0.0 (2023-03-13)
+
+This semver-major release is just for switching away from `atty` due to
+soundness and maintenance concerns. See [this issue in `supports-color` for
+more details](https://github.com/zkat/supports-color/issues/9)
+
+### Features
+
+* **tty:** Switch from `atty` to `is-terminal` (#3) ([a321f355](https://github.com/zkat/supports-hyperlinks/commit/a321f35558f9dcb47d225c25e74d8c0d911bbaa8))
+ * **BREAKING CHANGE**: the exported `Stream` enum is no longer an `atty` type, and this crate no longer accepts `atty` types as input.
+
+<a name="1.2.0"></a>
+## 1.2.0 (2021-09-16)
+
+### Bug Fixes
+
+* **conditions:** allow fallthrough when nested checks are false ([3aa5ffbb](https://github.com/zkat/supports-hyperlinks/commit/3aa5ffbba5bd1c902864f4fa4f3f9bbd0c0bcb0b))
+
+### Features
+
+* **force:** add support for forcing hyperlinks ([96d75a7c](https://github.com/zkat/supports-hyperlinks/commit/96d75a7ce7bac6a6fd3f7630eb0579750d4ebb82))
+
+<a name="1.1.0"></a>
+## 1.1.0 (2021-09-11)
+
+### Features
+
+* **on:** add atty and on() function for ease of use ([bf17421f](https://github.com/zkat/supports-hyperlinks/commit/bf17421f14791ab6308d209c5c0eda72081bd664))
+
+<a name="1.0.0"></a>
+## 1.0.0 (2021-09-11)
+
+### Features
+
+* **api:** initial commit ([4eb64a5b](https://github.com/zkat/supports-hyperlinks/commit/4eb64a5b67ff913ce269077e01f430d45a5aa40d))
diff --git a/vendor/byteyarn/Cargo.toml b/vendor/supports-hyperlinks/Cargo.toml
index 0fad5b067..2cfac1ba7 100644
--- a/vendor/byteyarn/Cargo.toml
+++ b/vendor/supports-hyperlinks/Cargo.toml
@@ -11,16 +11,15 @@
[package]
edition = "2021"
-name = "byteyarn"
-version = "0.2.3"
-authors = ["Miguel Young de la Sota <mcyoung@mit.edu>"]
-description = "hyper-compact strings"
-homepage = "https://github.com/mcy/byteyarn"
+name = "supports-hyperlinks"
+version = "2.1.0"
+authors = ["Kat Marchán <kzm@zkat.tech>"]
+description = "Detects whether a terminal supports rendering hyperlinks."
+documentation = "https://docs.rs/supports-hyperlinks"
readme = "README.md"
-keywords = [
- "string",
- "text",
- "binary",
-]
+categories = ["terminal"]
license = "Apache-2.0"
-repository = "https://github.com/mcy/byteyarn"
+repository = "https://github.com/zkat/supports-hyperlinks"
+
+[dependencies.is-terminal]
+version = "0.4.0"
diff --git a/vendor/supports-hyperlinks/LICENSE b/vendor/supports-hyperlinks/LICENSE
new file mode 100644
index 000000000..10fa5cc56
--- /dev/null
+++ b/vendor/supports-hyperlinks/LICENSE
@@ -0,0 +1,229 @@
+Apache License
+
+Version 2.0, January 2004
+
+http://www.apache.org/licenses/ TERMS
+AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+
+
+
+ "License" shall mean the terms and conditions for use, reproduction, and
+distribution as defined by Sections 1 through 9 of this document.
+
+
+
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright
+owner that is granting the License.
+
+
+
+ "Legal Entity" shall mean the
+union of the acting entity and all other entities that control, are controlled
+by, or are under common control with that entity. For the purposes of this
+definition, "control" means (i) the power, direct or indirect, to cause the
+direction or management of such entity, whether by contract or otherwise, or (ii)
+ownership of fifty percent (50%) or more of the outstanding shares, or (iii)
+beneficial ownership of such entity.
+
+
+
+ "You" (or "Your") shall mean
+an individual or Legal Entity exercising permissions granted by this License.
+
+
+
+
+ "Source" form shall mean the preferred form for making modifications,
+including but not limited to software source code, documentation source, and
+configuration files.
+
+
+
+ "Object" form shall mean any form resulting
+from mechanical transformation or translation of a Source form, including but not
+limited to compiled object code, generated documentation, and conversions to
+other media types.
+
+
+
+ "Work" shall mean the work of authorship,
+whether in Source or Object form, made available under the License, as indicated
+by a copyright notice that is included in or attached to the work (an example is
+provided in the Appendix below).
+
+
+
+ "Derivative Works" shall mean any
+work, whether in Source or Object form, that is based on (or derived from) the
+Work and for which the editorial revisions, annotations, elaborations, or other
+modifications represent, as a whole, an original work of authorship. For the
+purposes of this License, Derivative Works shall not include works that remain
+separable from, or merely link (or bind by name) to the interfaces of, the Work
+and Derivative Works thereof.
+
+
+
+ "Contribution" shall mean any work
+of authorship, including the original version of the Work and any modifications
+or additions to that Work or Derivative Works thereof, that is intentionally
+submitted to Licensor for inclusion in the Work by the copyright owner or by an
+individual or Legal Entity authorized to submit on behalf of the copyright owner.
+For the purposes of this definition, "submitted" means any form of electronic,
+verbal, or written communication sent to the Licensor or its representatives,
+including but not limited to communication on electronic mailing lists, source
+code control systems, and issue tracking systems that are managed by, or on
+behalf of, the Licensor for the purpose of discussing and improving the Work, but
+excluding communication that is conspicuously marked or otherwise designated in
+writing by the copyright owner as "Not a Contribution."
+
+
+
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of
+whom a Contribution has been received by Licensor and subsequently incorporated
+within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and
+conditions of this License, each Contributor hereby grants to You a perpetual,
+worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license
+to reproduce, prepare Derivative Works of, publicly display, publicly perform,
+sublicense, and distribute the Work and such Derivative Works in Source or Object
+form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of this
+License, each Contributor hereby grants to You a perpetual, worldwide,
+non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this
+section) patent license to make, have made, use, offer to sell, sell, import, and
+otherwise transfer the Work, where such license applies only to those patent
+claims licensable by such Contributor that are necessarily infringed by their
+Contribution(s) alone or by combination of their Contribution(s) with the Work to
+which such Contribution(s) was submitted. If You institute patent litigation
+against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Work or a Contribution incorporated within the Work constitutes
+direct or contributory patent infringement, then any patent licenses granted to
+You under this License for that Work shall terminate as of the date such
+litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute
+copies of the Work or Derivative Works thereof in any medium, with or without
+modifications, and in Source or Object form, provided that You meet the following
+conditions:
+
+ (a) You must give any other recipients of the Work or
+Derivative Works a copy of this License; and
+
+ (b) You must cause any
+modified files to carry prominent notices stating that You changed the files;
+and
+
+ (c) You must retain, in the Source form of any Derivative Works that
+You distribute, all copyright, patent, trademark, and attribution notices from
+the Source form of the Work, excluding those notices that do not pertain to any
+part of the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text
+file as part of its distribution, then any Derivative Works that You distribute
+must include a readable copy of the attribution notices contained within such
+NOTICE file, excluding those notices that do not pertain to any part of the
+Derivative Works, in at least one of the following places: within a NOTICE text
+file distributed as part of the Derivative Works; within the Source form or
+documentation, if provided along with the Derivative Works; or, within a display
+generated by the Derivative Works, if and wherever such third-party notices
+normally appear. The contents of the NOTICE file are for informational purposes
+only and do not modify the License. You may add Your own attribution notices
+within Derivative Works that You distribute, alongside or as an addendum to the
+NOTICE text from the Work, provided that such additional attribution notices
+cannot be construed as modifying the License.
+
+ You may add Your own
+copyright statement to Your modifications and may provide additional or different
+license terms and conditions for use, reproduction, or distribution of Your
+modifications, or for any such Derivative Works as a whole, provided Your use,
+reproduction, and distribution of the Work otherwise complies with the conditions
+stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly
+state otherwise, any Contribution intentionally submitted for inclusion in the
+Work by You to the Licensor shall be under the terms and conditions of this
+License, without any additional terms or conditions. Notwithstanding the above,
+nothing herein shall supersede or modify the terms of any separate license
+agreement you may have executed with Licensor regarding such Contributions.
+
+
+6. Trademarks. This License does not grant permission to use the trade names,
+trademarks, service marks, or product names of the Licensor, except as required
+for reasonable and customary use in describing the origin of the Work and
+reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless
+required by applicable law or agreed to in writing, Licensor provides the Work
+(and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including,
+without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT,
+MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible
+for determining the appropriateness of using or redistributing the Work and
+assume any risks associated with Your exercise of permissions under this
+License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+whether in tort (including negligence), contract, or otherwise, unless required
+by applicable law (such as deliberate and grossly negligent acts) or agreed to in
+writing, shall any Contributor be liable to You for damages, including any
+direct, indirect, special, incidental, or consequential damages of any character
+arising as a result of this License or out of the use or inability to use the
+Work (including but not limited to damages for loss of goodwill, work stoppage,
+computer failure or malfunction, or any and all other commercial damages or
+losses), even if such Contributor has been advised of the possibility of such
+damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+the Work or Derivative Works thereof, You may choose to offer, and charge a fee
+for, acceptance of support, warranty, indemnity, or other liability obligations
+and/or rights consistent with this License. However, in accepting such
+obligations, You may act only on Your own behalf and on Your sole responsibility,
+not on behalf of any other Contributor, and only if You agree to indemnify,
+defend, and hold each Contributor harmless for any liability incurred by, or
+claims asserted against, such Contributor by reason of your accepting any such
+warranty or additional liability. END OF TERMS AND CONDITIONS
+
+APPENDIX: How to
+apply the Apache License to your work.
+
+To apply the Apache License to your work,
+attach the following boilerplate notice, with the fields enclosed by brackets
+"[]" replaced with your own identifying information. (Don't include the
+brackets!) The text should be enclosed in the appropriate comment syntax for the
+file format. We also recommend that a file or class name and description of
+purpose be included on the same "printed page" as the copyright notice for easier
+identification within third-party archives.
+
+Copyright [yyyy] Kat
+Marchán
+
+Licensed under the Apache License, Version 2.0 (the "License");
+
+you may
+not use this file except in compliance with the License.
+
+You may obtain a copy
+of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by
+applicable law or agreed to in writing, software
+
+distributed under the License
+is distributed on an "AS IS" BASIS,
+
+WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.
+
+See the License for the specific language
+governing permissions and
+
+limitations under the License. \ No newline at end of file
diff --git a/vendor/supports-hyperlinks/Makefile.toml b/vendor/supports-hyperlinks/Makefile.toml
new file mode 100644
index 000000000..70e794325
--- /dev/null
+++ b/vendor/supports-hyperlinks/Makefile.toml
@@ -0,0 +1,11 @@
+[tasks.changelog]
+workspace=false
+install_crate="git-cliff"
+command = "git-cliff"
+args = ["--prepend", "CHANGELOG.md", "-u", "--tag", "${@}"]
+
+[tasks.release]
+workspace=false
+install_crate="cargo-release"
+command = "cargo"
+args = ["release", "--workspace", "${@}"]
diff --git a/vendor/supports-hyperlinks/README.md b/vendor/supports-hyperlinks/README.md
new file mode 100644
index 000000000..f01ef92d6
--- /dev/null
+++ b/vendor/supports-hyperlinks/README.md
@@ -0,0 +1,28 @@
+Detects whether the current terminal supports [hyperlinks in terminal
+emulators](https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda).
+
+It tries to detect and support all known terminals and terminal families that
+support this. If a declaration is wrong, missing, or could be improved, please
+send a PR!
+
+## Example
+
+The API is super simple!
+
+```rust
+use supports_hyperlinks::Stream;
+
+if supports_hyperlinks::on(Stream::Stdout) {
+ println!("This terminal supports hyperlinks on stdout");
+} else {
+ println!("No hyperlinks, please");
+}
+```
+
+And that's it!
+
+## Forcing hyperlinks in tools that use `supports-hyperlinks`
+
+You may set the `FORCE_HYPERLINK` environment variable to force
+`supports-hyperlinks` to return true for its checks. If the value is `0`, this
+will force it to be _false_, instead.
diff --git a/vendor/supports-hyperlinks/cliff.toml b/vendor/supports-hyperlinks/cliff.toml
new file mode 100644
index 000000000..1338df94b
--- /dev/null
+++ b/vendor/supports-hyperlinks/cliff.toml
@@ -0,0 +1,62 @@
+# configuration file for git-cliff (0.1.0)
+
+[changelog]
+# changelog header
+header = """
+# `supports-hyperlinks` Release Changelog
+
+"""
+
+# template for the changelog body
+# https://tera.netlify.app/docs/#introduction
+body = """
+{% if version %}\
+<a name="{{ version }}"></a>
+## {{ version | replace(from="v", to="") }} ({{ timestamp | date(format="%Y-%m-%d") }})
+{% else %}\
+## Unreleased
+{% endif %}\
+{% for group, commits in commits | filter(attribute="scope") | group_by(attribute="group") %}
+### {{ group | upper_first }}
+{% for commit in commits %}
+{% if commit.scope %}\
+* **{{ commit.scope }}:** {{ commit.message }} ([{{ commit.id | truncate(length=8, end="") }}](https://github.com/zkat/supports-hyperlinks/commit/{{ commit.id }}))
+{%- if commit.breaking %}
+ * **BREAKING CHANGE**: {{ commit.breaking_description }}
+{%- endif %}\
+{% endif %}\
+{% endfor %}
+{% endfor %}
+"""
+
+# remove the leading and trailing whitespace from the template
+trim = false
+
+# changelog footer
+# footer = """
+# <!-- generated by git-cliff -->
+# """
+
+[git]
+# allow only conventional commits
+# https://www.conventionalcommits.org
+conventional_commits = true
+# regex for parsing and grouping commits
+commit_parsers = [
+ { message = "^feat*", group = "Features"},
+ { message = "^fix*", group = "Bug Fixes"},
+ { message = "^doc*", group = "Documentation"},
+ { message = "^perf*", group = "Performance"},
+ { message = "^refactor*", group = "Refactor"},
+ { message = "^style*", group = "Styling"},
+ { message = "^test*", group = "Testing"},
+ { message = "^chore\\(release\\): prepare for*", skip = true},
+ { message = "^chore*", group = "Miscellaneous Tasks"},
+ { body = ".*security", group = "Security"},
+]
+# filter out the commits that are not matched by commit parsers
+filter_commits = false
+# glob pattern for matching git tags
+# tag_pattern = "[0-9]*"
+# regex for skipping tags
+# skip_tags = "v0.1.0-beta.1"
diff --git a/vendor/supports-hyperlinks/src/lib.rs b/vendor/supports-hyperlinks/src/lib.rs
new file mode 100644
index 000000000..83290b211
--- /dev/null
+++ b/vendor/supports-hyperlinks/src/lib.rs
@@ -0,0 +1,67 @@
+#![doc = include_str!("../README.md")]
+
+/// possible stream sources
+#[derive(Clone, Copy, Debug)]
+pub enum Stream {
+ Stdout,
+ Stderr,
+}
+
+/// Returns true if the current terminal, detected through various environment
+/// variables, is known to support hyperlink rendering.
+pub fn supports_hyperlinks() -> bool {
+ // Hyperlinks can be forced through this env var.
+ if let Ok(arg) = std::env::var("FORCE_HYPERLINK") {
+ return arg.trim() != "0";
+ }
+
+ if std::env::var("DOMTERM").is_ok() {
+ // DomTerm
+ return true;
+ }
+
+ if let Ok(version) = std::env::var("VTE_VERSION") {
+ // VTE-based terminals above v0.50 (Gnome Terminal, Guake, ROXTerm, etc)
+ if version.parse().unwrap_or(0) >= 5000 {
+ return true;
+ }
+ }
+
+ if let Ok(program) = std::env::var("TERM_PROGRAM") {
+ if matches!(
+ &program[..],
+ "Hyper" | "iTerm.app" | "terminology" | "WezTerm" | "vscode"
+ ) {
+ return true;
+ }
+ }
+
+ if let Ok(term) = std::env::var("TERM") {
+ if matches!(&term[..], "xterm-kitty" | "alacritty" | "alacritty-direct") {
+ return true;
+ }
+ }
+
+ if let Ok(term) = std::env::var("COLORTERM") {
+ if matches!(&term[..], "xfce4-terminal") {
+ return true;
+ }
+ }
+
+ // Windows Terminal and Konsole
+ std::env::var("WT_SESSION").is_ok() || std::env::var("KONSOLE_VERSION").is_ok()
+}
+
+fn is_a_tty(stream: Stream) -> bool {
+ use is_terminal::*;
+ match stream {
+ Stream::Stdout => std::io::stdout().is_terminal(),
+ Stream::Stderr => std::io::stderr().is_terminal(),
+ }
+}
+
+/// Returns true if `stream` is a TTY, and the current terminal
+/// [supports_hyperlinks].
+pub fn on(stream: Stream) -> bool {
+ (std::env::var("FORCE_HYPERLINK").is_ok() || is_a_tty(stream)) && supports_hyperlinks()
+}
diff --git a/vendor/syn/.cargo-checksum.json b/vendor/syn/.cargo-checksum.json
index 1504b1098..395cafc9d 100644
--- a/vendor/syn/.cargo-checksum.json
+++ b/vendor/syn/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"1fe7cdf292faefe74cebc20883bc16e98f7b1a0324824582a7362c75c0516034","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"f6904878f9082d7d267b6d0d737ef211ff165cfd039a4d45ad88e9861f3e217f","benches/file.rs":"0a0527c78d849148cbb6118b4d36f72da7d4add865ba1a410e0a1be9e8dbfe0e","benches/rust.rs":"c006f01aacf95f61e5d6f4064be4040896a37a9632fb3dcfd9bc2a7ab171741d","src/attr.rs":"bd5ffae18a363162f7d9c12a1b6c1d023070cbf1b060c98ebc38ef79f1de9c67","src/bigint.rs":"0299829b2f7a1a798fe2f7bc1680e4a10f9b6f4a852d09af4da2deab466c4242","src/buffer.rs":"3ef1c3302acc4f9976484fd11c28981a5ff245cf4f3b8b888b7f065c8614881e","src/custom_keyword.rs":"f2704d15a337def453bdb337359fffdd014d62ae875cd6dbd442691c932f89c9","src/custom_punctuation.rs":"4227e8f9c6d78be776db0cf67d6cf836ee2ad39848984c11c1e44febc34ab375","src/data.rs":"7d217b0252a0d14b2db308ac00f48ba24a831e01a49b893f5b3ee6b580dab4cb","src/derive.rs":"3132e7f064725c7ca43f26daee93ec78037d46a935c6b0758af905cff450c15c","src/discouraged.rs":"482970b03bdee3cbc30c034f644e3293b25387db46300da5d8d8efd97dad8507","src/drops.rs":"013385f1dd95663f1afab41abc1e2eea04181998644828935ca564c74d6462ae","src/error.rs":"8dbb17978f688e12bcce58232f05c0ca9ed9de1fe511440793fb958da2fc93b9","src/export.rs":"6b519b1c17967cdd1519f52f981022435fcf940834fc8a705923426b65f21eac","src/expr.rs":"388348e9404a53331fe84d670bc0da889e1e9471461a8dc0a2e010a377103ecf","src/ext.rs":"3cf2d869812e5be894aa1c48bf074da262143fb2df1c9ac1b5ee965bf2a96a1c","src/file.rs":"a4d510dd0e2756bd54983dfa747601918c801e987cbf92deab44cdca6a201aeb","src/gen/clone.rs":"46540509dc99bb849014948a0c5b02ea372d5feceae5ea391c29f226f06516eb","src/gen/debug.rs":"32b2076b755f021428a0fb268a94057e1bcb1cd400feb895946703d7919b843a","src/gen/eq.rs":"aa5455b2cc0d9846d119ce001e821872df911f65133b993e3801a42e8f635f2a","src/gen/fold.rs":"305fe1db2b5b7039e79104a6e8ead11b1ee3c009f31f2a2bbebca10e494188cd","src/gen/hash.rs":"4ca8239c681ea5fd7b16bb61bff9034bff09680c088f5a16e90e99013e55742f","src/gen/visit.rs":"cbd0ebe18da62614c66a7900ef67350a5efee261bcdfff6cffc1ea6c4e754e34","src/gen/visit_mut.rs":"1b2a260ab3a6465eed6164f6d2c0cec977f9c3ca912f6bed81f8599b4d8f5cb0","src/gen_helper.rs":"750caab67ba0ba11a95ea28cd38026485227bb4aa114cdb497472386f60fdb35","src/generics.rs":"cb1a0374c523a469d48b1db7316166559034d437fb4f6cc5661511edb8aba32c","src/group.rs":"f5911e9cf2dc2dffab546590167c48de30409cb7708aa3307d22be143df720e4","src/ident.rs":"c26102f3dd66c85e05dbc9e41fb8c6ff3cf227e1ec84152b7ac920584a866578","src/item.rs":"68b2fbbf908460617dd7cf017478638ab6232a5bb2597868d67f1c809aea0232","src/lib.rs":"8c67ef153c56a2552c027256ad99407b7a6ae3a4dd43fda80ec9070780348da7","src/lifetime.rs":"531ef74507eaf942a3aedfac83bbdbc17463102a6c806f675a83a0d6dc612c52","src/lit.rs":"f7d5029e33a49d400a52027540134a86565cbcb5362f15097ffdc63d3a057380","src/lookahead.rs":"376092f91a1c32e1b277db0a6790fdda151c9ec51bd971fe6a6545b5b9e73b5d","src/mac.rs":"b1cf73f34a27a8f1429125e726623a524fb5dce875eb68ead3beaffa976442c3","src/macros.rs":"4e464104c590200213635624706d83e4a0ddd5aedd826ab4aabb390000f35ae0","src/meta.rs":"9df61ebaa405ef743ba1629b39ee5e806f9ead77694a1027f192da860270c83d","src/op.rs":"fe5db7c3373b956234ea8a1a7d129a06e5aef5db77c44c1c2fedb4aaa667ac56","src/parse.rs":"e57637899f8533da26e16d41575c3489fd1bf3560cea427ba57b3c966d891d8e","src/parse_macro_input.rs":"4a753b2a6dbfefd6dc93852d66b4f6d73ebd6b8b9be74019fc476f429b9a892d","src/parse_quote.rs":"08c8f4eaedeffaac73170b59921d140f63f4a01c243993dff050b4b848d0ac1f","src/pat.rs":"4d99c5ed6a08e6adfd0f6c31438befd3f03e48982a36bb2544962d9db7805a4a","src/path.rs":"f53bd51c4049630c9c28ba5a07276f110d87ef9da737a143fe4c2aa2e92d1fd3","src/print.rs":"22910bf0521ab868ebd7c62601c55912d12cfb400c65723e08e5cfa3a2d111c0","src/punctuated.rs":"dffaab15b9215c70d7db416e8d4c44b78c43ba2f255485e6211363f0f0fea063","src/restriction.rs":"62efbc127d7e7316dd1070c0e976872de6238b2602bba1fb35df18511b4e7199","src/sealed.rs":"6ece3b3dcb30f6bb98b93d83759ca7712ee8592bef9c0511141039c38765db0e","src/span.rs":"0a48e375e5c9768f6f64174a91ba6a255f4b021e2fb3548d8494e617f142601b","src/spanned.rs":"1bba75d73dd4dc5be6c4e11fdd72686d340fb25b5808830bd603ddc840beabdc","src/stmt.rs":"321d445f681c46ac30644504df2a8afc333a1dde0371159e9e077a17eed16548","src/thread.rs":"1f1deb1272525ab2af9a36aac4bce8f65b0e315adb1656641fd7075662f49222","src/token.rs":"94cca416e38225dc8e7ca5033a33f2edc216cb0680696ac81127351d3b2d7785","src/tt.rs":"32490509abcc4a5a3c7eb5628337172b3b49d30697d2f7b7df4d8045255c13da","src/ty.rs":"1d11c614298f25a8fa42165a01d6545fc699a446d7f3f8630162c7f478b26886","src/verbatim.rs":"87cbe82a90f48efb57ffd09141042698b3e011a21d0d5412154d80324b0a5ef0","src/whitespace.rs":"718a80c12cdd145358e2690f0f68ff7779a91ec17ce9fde9bb755f635fce69ad","tests/common/eq.rs":"add52aa28c339853660cea002b80aaf56f919757266c68873fb117a20ddd66f5","tests/common/mod.rs":"432ad35577f836a20b517d8c26ed994ac25fe73ef2f461c67688b61b99762015","tests/common/parse.rs":"246ddf1d303a9dbbc380e8d0689bd851cef3c3146d09d2627175deb9203b003d","tests/debug/gen.rs":"0b689be01a4f4a0d168617b0f867f248a9e3d211e259926e6ec6c10a59776d81","tests/debug/mod.rs":"dd87563bbd359401790a9c4185178539929ff9fa35a6998657af82a85731fe4c","tests/macros/mod.rs":"4c84bd9e82df255258671b6a57b0f2a3e4bef2127a2e8b842a4b6f3037b7fc5c","tests/regression.rs":"e9565ea0efecb4136f099164ffcfa26e1996b0a27fb9c6659e90ad9bdd42e7b6","tests/regression/issue1108.rs":"f32db35244a674e22ff824ca9e5bbec2184e287b59f022db68c418b5878a2edc","tests/regression/issue1235.rs":"a2266b10c3f7c7af5734817ab0a3e8b309b51e7d177b63f26e67e6b744d280b0","tests/repo/mod.rs":"a857b13b258846a5f2b25c66e8db149c703ab7f623505dc18206eec4244ffba2","tests/repo/progress.rs":"c08d0314a7f3ecf760d471f27da3cd2a500aeb9f1c8331bffb2aa648f9fabf3f","tests/test_asyncness.rs":"3868181f25f7470476077f80a442a7804b6b9b371ad5917f4fd18b1002714c64","tests/test_attribute.rs":"b35550a43bbd187bb330997ba36f90c65d8fc489135b1d32ef4547f145cb7612","tests/test_derive_input.rs":"c215245c4d09052661ac5b65b34e950ea47622847bdffe648d380470f12db8f2","tests/test_expr.rs":"2de81f6171bcde3db8d36ce90b9c77ce672f93dcb1e03b6a44290b039246132b","tests/test_generics.rs":"b77741aa38e6ac7e1a9082faf168e7b7b92fbabf9f3fd07306676339a67394df","tests/test_grouping.rs":"ecbe3324878b2e2be42640a3dec198620cff18731fcb95ee7e94eacd11d2fec1","tests/test_ident.rs":"9eb53d1e21edf23e7c9e14dc74dcc2b2538e9221e19dbcc0a44e3acc2e90f3f6","tests/test_item.rs":"7f0255b61d0a6921313c09aaba470beefc55f1d4e66d1e24cfac7a3f63b035d8","tests/test_iterators.rs":"f4dacb5f3a8e0473dfb0d27f05270d41e79eddb4759b1fad3e88e379b4731e17","tests/test_lit.rs":"7297fed48ca248689f112f67b6f024f2f2784e29c6cd33185ac659c350834b01","tests/test_meta.rs":"3e1bb60b4bd56adb1e04b0e2d867404f0d81f7bf69caf7d8a70fc7090e079e84","tests/test_parse_buffer.rs":"3ed83ea2e50f84b80c0b543aac4bfbd379610d0911c0baa1eb94bb925bda7341","tests/test_parse_stream.rs":"a7e186272c89a239cae03053b5a039cdc073cdb46fad64b178fe76fde98405d5","tests/test_pat.rs":"fe94e084ee478d41cccea4eeb3e975386a70d36ff7cbb902ba0c767d536aab6e","tests/test_path.rs":"0033e1082b576bb3217ebd4546423d6f86fde7ee7ba3aba8c57bf137d2b42f47","tests/test_precedence.rs":"1395b213a1aa953a3b2eacc922853f8d0e3afba552325440bfbe4df6b62102a1","tests/test_receiver.rs":"af64117acd66fbf42edc476f731ecd20c88009d9cb641dbd7a1d6384ae99ae73","tests/test_round_trip.rs":"61183de56bf70c628659b9529f794b9f138904959f919f08f3b8176ba62c76ef","tests/test_shebang.rs":"06d3acabed004767d8b3a0389bde7485a6719cad6a0d0b4ac2c7439b03586651","tests/test_should_parse.rs":"1d3535698a446e2755bfc360676bdb161841a1f454cdef6e7556c6d06a95c89d","tests/test_size.rs":"78c14995718c2f8d5a7296c8f524601c30f91a5586e1402c0775977a4f814406","tests/test_stmt.rs":"42a3707056da0ce3a01f8fb13e8b7631f9be6066627ac376e1874742419ad2cc","tests/test_token_trees.rs":"d012da9c3c861073711b006bf6ffdc073821fb9fb0a08733628cdae57124d1f5","tests/test_ty.rs":"f7f21f76e9e798669f09a95c380e26ae5959ee8ac5f3b765b1a799cc9505d075","tests/test_visibility.rs":"cf4c93997cd88821ef7f8e2dd5d1586175cce4614407cd3bdf371ecc4d8abc44","tests/zzz_stable.rs":"2a862e59cb446235ed99aec0e6ada8e16d3ecc30229b29d825b7c0bbc2602989"},"package":"c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a"} \ No newline at end of file
+{"files":{"Cargo.toml":"f56cb0ef622eddc84e2f801e2123e0e3728847d581d8597a6d5707339162e96b","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"f6904878f9082d7d267b6d0d737ef211ff165cfd039a4d45ad88e9861f3e217f","benches/file.rs":"0a0527c78d849148cbb6118b4d36f72da7d4add865ba1a410e0a1be9e8dbfe0e","benches/rust.rs":"c006f01aacf95f61e5d6f4064be4040896a37a9632fb3dcfd9bc2a7ab171741d","src/attr.rs":"bd5ffae18a363162f7d9c12a1b6c1d023070cbf1b060c98ebc38ef79f1de9c67","src/bigint.rs":"0299829b2f7a1a798fe2f7bc1680e4a10f9b6f4a852d09af4da2deab466c4242","src/buffer.rs":"3ef1c3302acc4f9976484fd11c28981a5ff245cf4f3b8b888b7f065c8614881e","src/custom_keyword.rs":"f2704d15a337def453bdb337359fffdd014d62ae875cd6dbd442691c932f89c9","src/custom_punctuation.rs":"2e688f6a7c3c0405f209a6aaa85a43fc34807fc280e4a71235642fc9333492dd","src/data.rs":"09ce487d27f7dd79031b390c8344fc6361d64b05064ee25dba1489cf3aa56128","src/derive.rs":"3132e7f064725c7ca43f26daee93ec78037d46a935c6b0758af905cff450c15c","src/discouraged.rs":"482970b03bdee3cbc30c034f644e3293b25387db46300da5d8d8efd97dad8507","src/drops.rs":"013385f1dd95663f1afab41abc1e2eea04181998644828935ca564c74d6462ae","src/error.rs":"8dbb17978f688e12bcce58232f05c0ca9ed9de1fe511440793fb958da2fc93b9","src/export.rs":"6b519b1c17967cdd1519f52f981022435fcf940834fc8a705923426b65f21eac","src/expr.rs":"388348e9404a53331fe84d670bc0da889e1e9471461a8dc0a2e010a377103ecf","src/ext.rs":"3cf2d869812e5be894aa1c48bf074da262143fb2df1c9ac1b5ee965bf2a96a1c","src/file.rs":"a4d510dd0e2756bd54983dfa747601918c801e987cbf92deab44cdca6a201aeb","src/gen/clone.rs":"46540509dc99bb849014948a0c5b02ea372d5feceae5ea391c29f226f06516eb","src/gen/debug.rs":"32b2076b755f021428a0fb268a94057e1bcb1cd400feb895946703d7919b843a","src/gen/eq.rs":"aa5455b2cc0d9846d119ce001e821872df911f65133b993e3801a42e8f635f2a","src/gen/fold.rs":"305fe1db2b5b7039e79104a6e8ead11b1ee3c009f31f2a2bbebca10e494188cd","src/gen/hash.rs":"4ca8239c681ea5fd7b16bb61bff9034bff09680c088f5a16e90e99013e55742f","src/gen/visit.rs":"cbd0ebe18da62614c66a7900ef67350a5efee261bcdfff6cffc1ea6c4e754e34","src/gen/visit_mut.rs":"1b2a260ab3a6465eed6164f6d2c0cec977f9c3ca912f6bed81f8599b4d8f5cb0","src/gen_helper.rs":"750caab67ba0ba11a95ea28cd38026485227bb4aa114cdb497472386f60fdb35","src/generics.rs":"cb1a0374c523a469d48b1db7316166559034d437fb4f6cc5661511edb8aba32c","src/group.rs":"f5911e9cf2dc2dffab546590167c48de30409cb7708aa3307d22be143df720e4","src/ident.rs":"1b2d86d2e380b1fa83aee6ed113c47f0b482a229c25be428dac921deec0b4852","src/item.rs":"00ae729a00854f15203dbcbf2251910658eb052130de243144dcbec68be37919","src/lib.rs":"723c0555b398e4efd39c3198b4fc264b2bab6051e6f81ea3af81865784fdf4ec","src/lifetime.rs":"64abfd72af5dd271b2de1a8304ca0899b90da7750df9dec2ee8102bceb08a426","src/lit.rs":"3a70ebbc81563b967d2cbf589b6980a5b202ee3379d5d401e01a4c2af124d7ae","src/lookahead.rs":"376092f91a1c32e1b277db0a6790fdda151c9ec51bd971fe6a6545b5b9e73b5d","src/mac.rs":"b1cf73f34a27a8f1429125e726623a524fb5dce875eb68ead3beaffa976442c3","src/macros.rs":"64fce3fda990306cfae5f0409918946ff7c9e98ecad963932e6c1436c0b0d4c2","src/meta.rs":"9df61ebaa405ef743ba1629b39ee5e806f9ead77694a1027f192da860270c83d","src/op.rs":"fe5db7c3373b956234ea8a1a7d129a06e5aef5db77c44c1c2fedb4aaa667ac56","src/parse.rs":"e57637899f8533da26e16d41575c3489fd1bf3560cea427ba57b3c966d891d8e","src/parse_macro_input.rs":"4a753b2a6dbfefd6dc93852d66b4f6d73ebd6b8b9be74019fc476f429b9a892d","src/parse_quote.rs":"08c8f4eaedeffaac73170b59921d140f63f4a01c243993dff050b4b848d0ac1f","src/pat.rs":"4d99c5ed6a08e6adfd0f6c31438befd3f03e48982a36bb2544962d9db7805a4a","src/path.rs":"8079943ec924ad5338e4bfa16b15b8ea0d6d27092396b62667eadcd0b98f20db","src/print.rs":"22910bf0521ab868ebd7c62601c55912d12cfb400c65723e08e5cfa3a2d111c0","src/punctuated.rs":"dffaab15b9215c70d7db416e8d4c44b78c43ba2f255485e6211363f0f0fea063","src/restriction.rs":"62efbc127d7e7316dd1070c0e976872de6238b2602bba1fb35df18511b4e7199","src/sealed.rs":"6ece3b3dcb30f6bb98b93d83759ca7712ee8592bef9c0511141039c38765db0e","src/span.rs":"0a48e375e5c9768f6f64174a91ba6a255f4b021e2fb3548d8494e617f142601b","src/spanned.rs":"1bba75d73dd4dc5be6c4e11fdd72686d340fb25b5808830bd603ddc840beabdc","src/stmt.rs":"321d445f681c46ac30644504df2a8afc333a1dde0371159e9e077a17eed16548","src/thread.rs":"1f1deb1272525ab2af9a36aac4bce8f65b0e315adb1656641fd7075662f49222","src/token.rs":"42c9c9d8a7145255abf0cb1af1f2fe56a0b428a8a5ea8ff08e58f894fb519fd5","src/tt.rs":"32490509abcc4a5a3c7eb5628337172b3b49d30697d2f7b7df4d8045255c13da","src/ty.rs":"1d11c614298f25a8fa42165a01d6545fc699a446d7f3f8630162c7f478b26886","src/verbatim.rs":"87cbe82a90f48efb57ffd09141042698b3e011a21d0d5412154d80324b0a5ef0","src/whitespace.rs":"718a80c12cdd145358e2690f0f68ff7779a91ec17ce9fde9bb755f635fce69ad","tests/common/eq.rs":"e51d7f102ec29eef1336e0aad451378d0191845f9b1617744b79d47ff557e6df","tests/common/mod.rs":"432ad35577f836a20b517d8c26ed994ac25fe73ef2f461c67688b61b99762015","tests/common/parse.rs":"246ddf1d303a9dbbc380e8d0689bd851cef3c3146d09d2627175deb9203b003d","tests/debug/gen.rs":"bc638d0fcb4a007d658535b60eec09cf4dc2c4907062832cb94fe6960a0d7e01","tests/debug/mod.rs":"dd87563bbd359401790a9c4185178539929ff9fa35a6998657af82a85731fe4c","tests/macros/mod.rs":"4c84bd9e82df255258671b6a57b0f2a3e4bef2127a2e8b842a4b6f3037b7fc5c","tests/regression.rs":"e9565ea0efecb4136f099164ffcfa26e1996b0a27fb9c6659e90ad9bdd42e7b6","tests/regression/issue1108.rs":"f32db35244a674e22ff824ca9e5bbec2184e287b59f022db68c418b5878a2edc","tests/regression/issue1235.rs":"a2266b10c3f7c7af5734817ab0a3e8b309b51e7d177b63f26e67e6b744d280b0","tests/repo/mod.rs":"ca9ca1d192aa25ffcfc12161edf4998f4c4e3160f8834f8f7259023a28981e5c","tests/repo/progress.rs":"c08d0314a7f3ecf760d471f27da3cd2a500aeb9f1c8331bffb2aa648f9fabf3f","tests/test_asyncness.rs":"3868181f25f7470476077f80a442a7804b6b9b371ad5917f4fd18b1002714c64","tests/test_attribute.rs":"b35550a43bbd187bb330997ba36f90c65d8fc489135b1d32ef4547f145cb7612","tests/test_derive_input.rs":"c215245c4d09052661ac5b65b34e950ea47622847bdffe648d380470f12db8f2","tests/test_expr.rs":"2de81f6171bcde3db8d36ce90b9c77ce672f93dcb1e03b6a44290b039246132b","tests/test_generics.rs":"b77741aa38e6ac7e1a9082faf168e7b7b92fbabf9f3fd07306676339a67394df","tests/test_grouping.rs":"ecbe3324878b2e2be42640a3dec198620cff18731fcb95ee7e94eacd11d2fec1","tests/test_ident.rs":"9eb53d1e21edf23e7c9e14dc74dcc2b2538e9221e19dbcc0a44e3acc2e90f3f6","tests/test_item.rs":"7f0255b61d0a6921313c09aaba470beefc55f1d4e66d1e24cfac7a3f63b035d8","tests/test_iterators.rs":"f4dacb5f3a8e0473dfb0d27f05270d41e79eddb4759b1fad3e88e379b4731e17","tests/test_lit.rs":"8e30c2d7837673a742d77aef01212788bbd099182dd5c1d10ee474cfeb786c39","tests/test_meta.rs":"3e1bb60b4bd56adb1e04b0e2d867404f0d81f7bf69caf7d8a70fc7090e079e84","tests/test_parse_buffer.rs":"3ed83ea2e50f84b80c0b543aac4bfbd379610d0911c0baa1eb94bb925bda7341","tests/test_parse_stream.rs":"a7e186272c89a239cae03053b5a039cdc073cdb46fad64b178fe76fde98405d5","tests/test_pat.rs":"fe94e084ee478d41cccea4eeb3e975386a70d36ff7cbb902ba0c767d536aab6e","tests/test_path.rs":"0033e1082b576bb3217ebd4546423d6f86fde7ee7ba3aba8c57bf137d2b42f47","tests/test_precedence.rs":"d3c34f2e5ffe22f7bdacff7ab6af71b24ba8150fdcc640f3c3e28db3491a556a","tests/test_receiver.rs":"af64117acd66fbf42edc476f731ecd20c88009d9cb641dbd7a1d6384ae99ae73","tests/test_round_trip.rs":"61183de56bf70c628659b9529f794b9f138904959f919f08f3b8176ba62c76ef","tests/test_shebang.rs":"06d3acabed004767d8b3a0389bde7485a6719cad6a0d0b4ac2c7439b03586651","tests/test_should_parse.rs":"1d3535698a446e2755bfc360676bdb161841a1f454cdef6e7556c6d06a95c89d","tests/test_size.rs":"78c14995718c2f8d5a7296c8f524601c30f91a5586e1402c0775977a4f814406","tests/test_stmt.rs":"42a3707056da0ce3a01f8fb13e8b7631f9be6066627ac376e1874742419ad2cc","tests/test_token_trees.rs":"d012da9c3c861073711b006bf6ffdc073821fb9fb0a08733628cdae57124d1f5","tests/test_ty.rs":"f7f21f76e9e798669f09a95c380e26ae5959ee8ac5f3b765b1a799cc9505d075","tests/test_visibility.rs":"cf4c93997cd88821ef7f8e2dd5d1586175cce4614407cd3bdf371ecc4d8abc44","tests/zzz_stable.rs":"2a862e59cb446235ed99aec0e6ada8e16d3ecc30229b29d825b7c0bbc2602989"},"package":"e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b"} \ No newline at end of file
diff --git a/vendor/syn/Cargo.toml b/vendor/syn/Cargo.toml
index 2ebc5974d..a0e56c526 100644
--- a/vendor/syn/Cargo.toml
+++ b/vendor/syn/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.56"
name = "syn"
-version = "2.0.29"
+version = "2.0.38"
authors = ["David Tolnay <dtolnay@gmail.com>"]
include = [
"/benches/**",
@@ -75,7 +75,7 @@ required-features = [
]
[dependencies.proc-macro2]
-version = "1.0.62"
+version = "1.0.67"
default-features = false
[dependencies.quote]
diff --git a/vendor/syn/src/custom_punctuation.rs b/vendor/syn/src/custom_punctuation.rs
index dba91c17f..062fe5169 100644
--- a/vendor/syn/src/custom_punctuation.rs
+++ b/vendor/syn/src/custom_punctuation.rs
@@ -114,7 +114,7 @@ macro_rules! custom_punctuation {
macro_rules! impl_parse_for_custom_punctuation {
($ident:ident, $($tt:tt)+) => {
impl $crate::token::CustomToken for $ident {
- fn peek(cursor: $crate::buffer::Cursor) -> bool {
+ fn peek(cursor: $crate::buffer::Cursor) -> $crate::__private::bool {
$crate::__private::peek_punct(cursor, $crate::stringify_punct!($($tt)+))
}
diff --git a/vendor/syn/src/data.rs b/vendor/syn/src/data.rs
index 185f88ba0..431c0857d 100644
--- a/vendor/syn/src/data.rs
+++ b/vendor/syn/src/data.rs
@@ -214,17 +214,37 @@ pub(crate) mod parsing {
/// Parses a named (braced struct) field.
#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
pub fn parse_named(input: ParseStream) -> Result<Self> {
+ let attrs = input.call(Attribute::parse_outer)?;
+ let vis: Visibility = input.parse()?;
+
+ let unnamed_field = cfg!(feature = "full") && input.peek(Token![_]);
+ let ident = if unnamed_field {
+ input.call(Ident::parse_any)
+ } else {
+ input.parse()
+ }?;
+
+ let colon_token: Token![:] = input.parse()?;
+
+ let ty: Type = if unnamed_field
+ && (input.peek(Token![struct])
+ || input.peek(Token![union]) && input.peek2(token::Brace))
+ {
+ let begin = input.fork();
+ input.call(Ident::parse_any)?;
+ input.parse::<FieldsNamed>()?;
+ Type::Verbatim(verbatim::between(&begin, input))
+ } else {
+ input.parse()?
+ };
+
Ok(Field {
- attrs: input.call(Attribute::parse_outer)?,
- vis: input.parse()?,
+ attrs,
+ vis,
mutability: FieldMutability::None,
- ident: Some(if input.peek(Token![_]) {
- input.call(Ident::parse_any)
- } else {
- input.parse()
- }?),
- colon_token: Some(input.parse()?),
- ty: input.parse()?,
+ ident: Some(ident),
+ colon_token: Some(colon_token),
+ ty,
})
}
diff --git a/vendor/syn/src/ident.rs b/vendor/syn/src/ident.rs
index 41eb72129..d0f4ba08d 100644
--- a/vendor/syn/src/ident.rs
+++ b/vendor/syn/src/ident.rs
@@ -4,10 +4,12 @@ use crate::lookahead;
pub use proc_macro2::Ident;
#[cfg(feature = "parsing")]
-#[doc(hidden)]
-#[allow(non_snake_case)]
-pub fn Ident(marker: lookahead::TokenMarker) -> Ident {
- match marker {}
+pub_if_not_doc! {
+ #[doc(hidden)]
+ #[allow(non_snake_case)]
+ pub fn Ident(marker: lookahead::TokenMarker) -> Ident {
+ match marker {}
+ }
}
macro_rules! ident_from_token {
diff --git a/vendor/syn/src/item.rs b/vendor/syn/src/item.rs
index 50d7e6ef6..ee91f5914 100644
--- a/vendor/syn/src/item.rs
+++ b/vendor/syn/src/item.rs
@@ -985,24 +985,35 @@ pub(crate) mod parsing {
} else {
return Err(lookahead.error());
};
+ let mut generics: Generics = input.parse()?;
let colon_token = input.parse()?;
let ty = input.parse()?;
- if input.peek(Token![;]) {
- input.parse::<Token![;]>()?;
- Ok(Item::Verbatim(verbatim::between(&begin, input)))
+ let value = if let Some(eq_token) = input.parse::<Option<Token![=]>>()? {
+ let expr: Expr = input.parse()?;
+ Some((eq_token, expr))
} else {
- Ok(Item::Const(ItemConst {
- attrs: Vec::new(),
- vis,
- const_token,
- ident,
- generics: Generics::default(),
- colon_token,
- ty,
- eq_token: input.parse()?,
- expr: input.parse()?,
- semi_token: input.parse()?,
- }))
+ None
+ };
+ generics.where_clause = input.parse()?;
+ let semi_token: Token![;] = input.parse()?;
+ match value {
+ Some((eq_token, expr))
+ if generics.lt_token.is_none() && generics.where_clause.is_none() =>
+ {
+ Ok(Item::Const(ItemConst {
+ attrs: Vec::new(),
+ vis,
+ const_token,
+ ident,
+ generics,
+ colon_token,
+ ty,
+ eq_token,
+ expr: Box::new(expr),
+ semi_token,
+ }))
+ }
+ _ => Ok(Item::Verbatim(verbatim::between(&begin, input))),
}
} else if lookahead.peek(Token![unsafe]) {
ahead.parse::<Token![unsafe]>()?;
@@ -1400,24 +1411,34 @@ pub(crate) mod parsing {
#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
impl Parse for ItemConst {
fn parse(input: ParseStream) -> Result<Self> {
+ let attrs = input.call(Attribute::parse_outer)?;
+ let vis: Visibility = input.parse()?;
+ let const_token: Token![const] = input.parse()?;
+
+ let lookahead = input.lookahead1();
+ let ident = if lookahead.peek(Ident) || lookahead.peek(Token![_]) {
+ input.call(Ident::parse_any)?
+ } else {
+ return Err(lookahead.error());
+ };
+
+ let colon_token: Token![:] = input.parse()?;
+ let ty: Type = input.parse()?;
+ let eq_token: Token![=] = input.parse()?;
+ let expr: Expr = input.parse()?;
+ let semi_token: Token![;] = input.parse()?;
+
Ok(ItemConst {
- attrs: input.call(Attribute::parse_outer)?,
- vis: input.parse()?,
- const_token: input.parse()?,
- ident: {
- let lookahead = input.lookahead1();
- if lookahead.peek(Ident) || lookahead.peek(Token![_]) {
- input.call(Ident::parse_any)?
- } else {
- return Err(lookahead.error());
- }
- },
+ attrs,
+ vis,
+ const_token,
+ ident,
generics: Generics::default(),
- colon_token: input.parse()?,
- ty: input.parse()?,
- eq_token: input.parse()?,
- expr: input.parse()?,
- semi_token: input.parse()?,
+ colon_token,
+ ty: Box::new(ty),
+ eq_token,
+ expr: Box::new(expr),
+ semi_token,
})
}
}
@@ -2224,10 +2245,36 @@ pub(crate) mod parsing {
let mut item = if lookahead.peek(Token![fn]) || peek_signature(&ahead) {
input.parse().map(TraitItem::Fn)
} else if lookahead.peek(Token![const]) {
- ahead.parse::<Token![const]>()?;
+ let const_token: Token![const] = ahead.parse()?;
let lookahead = ahead.lookahead1();
if lookahead.peek(Ident) || lookahead.peek(Token![_]) {
- input.parse().map(TraitItem::Const)
+ input.advance_to(&ahead);
+ let ident = input.call(Ident::parse_any)?;
+ let mut generics: Generics = input.parse()?;
+ let colon_token: Token![:] = input.parse()?;
+ let ty: Type = input.parse()?;
+ let default = if let Some(eq_token) = input.parse::<Option<Token![=]>>()? {
+ let expr: Expr = input.parse()?;
+ Some((eq_token, expr))
+ } else {
+ None
+ };
+ generics.where_clause = input.parse()?;
+ let semi_token: Token![;] = input.parse()?;
+ if generics.lt_token.is_none() && generics.where_clause.is_none() {
+ Ok(TraitItem::Const(TraitItemConst {
+ attrs: Vec::new(),
+ const_token,
+ ident,
+ generics,
+ colon_token,
+ ty,
+ default,
+ semi_token,
+ }))
+ } else {
+ return Ok(TraitItem::Verbatim(verbatim::between(&begin, input)));
+ }
} else if lookahead.peek(Token![async])
|| lookahead.peek(Token![unsafe])
|| lookahead.peek(Token![extern])
@@ -2273,30 +2320,36 @@ pub(crate) mod parsing {
#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
impl Parse for TraitItemConst {
fn parse(input: ParseStream) -> Result<Self> {
+ let attrs = input.call(Attribute::parse_outer)?;
+ let const_token: Token![const] = input.parse()?;
+
+ let lookahead = input.lookahead1();
+ let ident = if lookahead.peek(Ident) || lookahead.peek(Token![_]) {
+ input.call(Ident::parse_any)?
+ } else {
+ return Err(lookahead.error());
+ };
+
+ let colon_token: Token![:] = input.parse()?;
+ let ty: Type = input.parse()?;
+ let default = if input.peek(Token![=]) {
+ let eq_token: Token![=] = input.parse()?;
+ let default: Expr = input.parse()?;
+ Some((eq_token, default))
+ } else {
+ None
+ };
+ let semi_token: Token![;] = input.parse()?;
+
Ok(TraitItemConst {
- attrs: input.call(Attribute::parse_outer)?,
- const_token: input.parse()?,
- ident: {
- let lookahead = input.lookahead1();
- if lookahead.peek(Ident) || lookahead.peek(Token![_]) {
- input.call(Ident::parse_any)?
- } else {
- return Err(lookahead.error());
- }
- },
+ attrs,
+ const_token,
+ ident,
generics: Generics::default(),
- colon_token: input.parse()?,
- ty: input.parse()?,
- default: {
- if input.peek(Token![=]) {
- let eq_token: Token![=] = input.parse()?;
- let default: Expr = input.parse()?;
- Some((eq_token, default))
- } else {
- None
- }
- },
- semi_token: input.parse()?,
+ colon_token,
+ ty,
+ default,
+ semi_token,
})
}
}
@@ -2550,26 +2603,37 @@ pub(crate) mod parsing {
} else {
return Err(lookahead.error());
};
+ let mut generics: Generics = input.parse()?;
let colon_token: Token![:] = input.parse()?;
let ty: Type = input.parse()?;
- if let Some(eq_token) = input.parse()? {
- return Ok(ImplItem::Const(ImplItemConst {
- attrs,
- vis,
- defaultness,
- const_token,
- ident,
- generics: Generics::default(),
- colon_token,
- ty,
- eq_token,
- expr: input.parse()?,
- semi_token: input.parse()?,
- }));
+ let value = if let Some(eq_token) = input.parse::<Option<Token![=]>>()? {
+ let expr: Expr = input.parse()?;
+ Some((eq_token, expr))
} else {
- input.parse::<Token![;]>()?;
- return Ok(ImplItem::Verbatim(verbatim::between(&begin, input)));
- }
+ None
+ };
+ generics.where_clause = input.parse()?;
+ let semi_token: Token![;] = input.parse()?;
+ return match value {
+ Some((eq_token, expr))
+ if generics.lt_token.is_none() && generics.where_clause.is_none() =>
+ {
+ Ok(ImplItem::Const(ImplItemConst {
+ attrs,
+ vis,
+ defaultness,
+ const_token,
+ ident,
+ generics,
+ colon_token,
+ ty,
+ eq_token,
+ expr,
+ semi_token,
+ }))
+ }
+ _ => Ok(ImplItem::Verbatim(verbatim::between(&begin, input))),
+ };
} else if lookahead.peek(Token![type]) {
parse_impl_item_type(begin, input)
} else if vis.is_inherited()
@@ -2604,25 +2668,36 @@ pub(crate) mod parsing {
#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
impl Parse for ImplItemConst {
fn parse(input: ParseStream) -> Result<Self> {
+ let attrs = input.call(Attribute::parse_outer)?;
+ let vis: Visibility = input.parse()?;
+ let defaultness: Option<Token![default]> = input.parse()?;
+ let const_token: Token![const] = input.parse()?;
+
+ let lookahead = input.lookahead1();
+ let ident = if lookahead.peek(Ident) || lookahead.peek(Token![_]) {
+ input.call(Ident::parse_any)?
+ } else {
+ return Err(lookahead.error());
+ };
+
+ let colon_token: Token![:] = input.parse()?;
+ let ty: Type = input.parse()?;
+ let eq_token: Token![=] = input.parse()?;
+ let expr: Expr = input.parse()?;
+ let semi_token: Token![;] = input.parse()?;
+
Ok(ImplItemConst {
- attrs: input.call(Attribute::parse_outer)?,
- vis: input.parse()?,
- defaultness: input.parse()?,
- const_token: input.parse()?,
- ident: {
- let lookahead = input.lookahead1();
- if lookahead.peek(Ident) || lookahead.peek(Token![_]) {
- input.call(Ident::parse_any)?
- } else {
- return Err(lookahead.error());
- }
- },
+ attrs,
+ vis,
+ defaultness,
+ const_token,
+ ident,
generics: Generics::default(),
- colon_token: input.parse()?,
- ty: input.parse()?,
- eq_token: input.parse()?,
- expr: input.parse()?,
- semi_token: input.parse()?,
+ colon_token,
+ ty,
+ eq_token,
+ expr,
+ semi_token,
})
}
}
diff --git a/vendor/syn/src/lib.rs b/vendor/syn/src/lib.rs
index 4adaa8587..a74d4b117 100644
--- a/vendor/syn/src/lib.rs
+++ b/vendor/syn/src/lib.rs
@@ -249,7 +249,7 @@
//! dynamic library libproc_macro from rustc toolchain.
// Syn types in rustdoc of other crates get linked to here.
-#![doc(html_root_url = "https://docs.rs/syn/2.0.29")]
+#![doc(html_root_url = "https://docs.rs/syn/2.0.38")]
#![cfg_attr(doc_cfg, feature(doc_cfg))]
#![allow(non_camel_case_types)]
#![allow(
diff --git a/vendor/syn/src/lifetime.rs b/vendor/syn/src/lifetime.rs
index 96920ad05..29f4cfdb3 100644
--- a/vendor/syn/src/lifetime.rs
+++ b/vendor/syn/src/lifetime.rs
@@ -113,10 +113,12 @@ impl Hash for Lifetime {
}
#[cfg(feature = "parsing")]
-#[doc(hidden)]
-#[allow(non_snake_case)]
-pub fn Lifetime(marker: lookahead::TokenMarker) -> Lifetime {
- match marker {}
+pub_if_not_doc! {
+ #[doc(hidden)]
+ #[allow(non_snake_case)]
+ pub fn Lifetime(marker: lookahead::TokenMarker) -> Lifetime {
+ match marker {}
+ }
}
#[cfg(feature = "parsing")]
diff --git a/vendor/syn/src/lit.rs b/vendor/syn/src/lit.rs
index 4f36cf50b..f7426ce81 100644
--- a/vendor/syn/src/lit.rs
+++ b/vendor/syn/src/lit.rs
@@ -758,10 +758,12 @@ macro_rules! lit_extra_traits {
}
#[cfg(feature = "parsing")]
- #[doc(hidden)]
- #[allow(non_snake_case)]
- pub fn $ty(marker: lookahead::TokenMarker) -> $ty {
- match marker {}
+ pub_if_not_doc! {
+ #[doc(hidden)]
+ #[allow(non_snake_case)]
+ pub fn $ty(marker: lookahead::TokenMarker) -> $ty {
+ match marker {}
+ }
}
};
}
@@ -774,10 +776,12 @@ lit_extra_traits!(LitInt);
lit_extra_traits!(LitFloat);
#[cfg(feature = "parsing")]
-#[doc(hidden)]
-#[allow(non_snake_case)]
-pub fn LitBool(marker: lookahead::TokenMarker) -> LitBool {
- match marker {}
+pub_if_not_doc! {
+ #[doc(hidden)]
+ #[allow(non_snake_case)]
+ pub fn LitBool(marker: lookahead::TokenMarker) -> LitBool {
+ match marker {}
+ }
}
ast_enum! {
@@ -794,10 +798,12 @@ ast_enum! {
}
#[cfg(feature = "parsing")]
-#[doc(hidden)]
-#[allow(non_snake_case)]
-pub fn Lit(marker: lookahead::TokenMarker) -> Lit {
- match marker {}
+pub_if_not_doc! {
+ #[doc(hidden)]
+ #[allow(non_snake_case)]
+ pub fn Lit(marker: lookahead::TokenMarker) -> Lit {
+ match marker {}
+ }
}
#[cfg(feature = "parsing")]
@@ -1089,6 +1095,7 @@ mod value {
// c"...", cr"...", cr#"..."#
// TODO: add a Lit::CStr variant?
b'c' => return Lit::Verbatim(token),
+ b'(' if repr == "(/*ERROR*/)" => return Lit::Verbatim(token),
_ => {}
}
diff --git a/vendor/syn/src/macros.rs b/vendor/syn/src/macros.rs
index 953841b6f..06ceb542d 100644
--- a/vendor/syn/src/macros.rs
+++ b/vendor/syn/src/macros.rs
@@ -166,3 +166,20 @@ macro_rules! check_keyword_matches {
(enum enum) => {};
(pub pub) => {};
}
+
+// Rustdoc bug: does not respect the doc(hidden) on some items.
+#[cfg(all(doc, feature = "parsing"))]
+macro_rules! pub_if_not_doc {
+ ($(#[$m:meta])* pub $($item:tt)*) => {
+ $(#[$m])*
+ pub(crate) $($item)*
+ };
+}
+
+#[cfg(all(not(doc), feature = "parsing"))]
+macro_rules! pub_if_not_doc {
+ ($(#[$m:meta])* pub $($item:tt)*) => {
+ $(#[$m])*
+ pub $($item)*
+ };
+}
diff --git a/vendor/syn/src/path.rs b/vendor/syn/src/path.rs
index 883f179f5..b9d96e669 100644
--- a/vendor/syn/src/path.rs
+++ b/vendor/syn/src/path.rs
@@ -82,6 +82,19 @@ impl Path {
None
}
}
+
+ /// An error if this path is not a single ident, as defined in `get_ident`.
+ #[cfg(feature = "parsing")]
+ #[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
+ pub fn require_ident(&self) -> Result<&Ident> {
+ self.get_ident().ok_or_else(|| {
+ crate::error::new2(
+ self.segments.first().unwrap().ident.span(),
+ self.segments.last().unwrap().ident.span(),
+ "expected this path to be an identifier",
+ )
+ })
+ }
}
ast_struct! {
diff --git a/vendor/syn/src/token.rs b/vendor/syn/src/token.rs
index c7e0e1f1a..af7f25c42 100644
--- a/vendor/syn/src/token.rs
+++ b/vendor/syn/src/token.rs
@@ -143,6 +143,7 @@ mod private {
/// Support writing `token.span` rather than `token.spans[0]` on tokens that
/// hold a single span.
#[repr(transparent)]
+ #[allow(unknown_lints, repr_transparent_external_private_fields)] // False positive: https://github.com/rust-lang/rust/issues/78586#issuecomment-1722680482
pub struct WithSpan {
pub span: Span,
}
@@ -365,6 +366,7 @@ macro_rules! define_punctuation_structs {
($($token:literal pub struct $name:ident/$len:tt #[doc = $usage:literal])*) => {
$(
#[cfg_attr(not(doc), repr(transparent))]
+ #[allow(unknown_lints, repr_transparent_external_private_fields)] // False positive: https://github.com/rust-lang/rust/issues/78586#issuecomment-1722680482
#[doc = concat!('`', $token, '`')]
///
/// Usage:
@@ -840,6 +842,67 @@ define_delimiters! {
/// A type-macro that expands to the name of the Rust type representation of a
/// given token.
///
+/// As a type, `Token!` is commonly used in the type of struct fields, the type
+/// of a `let` statement, or in turbofish for a `parse` function.
+///
+/// ```
+/// use syn::{Ident, Token};
+/// use syn::parse::{Parse, ParseStream, Result};
+///
+/// // `struct Foo;`
+/// pub struct UnitStruct {
+/// struct_token: Token![struct],
+/// ident: Ident,
+/// semi_token: Token![;],
+/// }
+///
+/// impl Parse for UnitStruct {
+/// fn parse(input: ParseStream) -> Result<Self> {
+/// let struct_token: Token![struct] = input.parse()?;
+/// let ident: Ident = input.parse()?;
+/// let semi_token = input.parse::<Token![;]>()?;
+/// Ok(UnitStruct { struct_token, ident, semi_token })
+/// }
+/// }
+/// ```
+///
+/// As an expression, `Token!` is used for peeking tokens or instantiating
+/// tokens from a span.
+///
+/// ```
+/// # use syn::{Ident, Token};
+/// # use syn::parse::{Parse, ParseStream, Result};
+/// #
+/// # struct UnitStruct {
+/// # struct_token: Token![struct],
+/// # ident: Ident,
+/// # semi_token: Token![;],
+/// # }
+/// #
+/// # impl Parse for UnitStruct {
+/// # fn parse(input: ParseStream) -> Result<Self> {
+/// # unimplemented!()
+/// # }
+/// # }
+/// #
+/// fn make_unit_struct(name: Ident) -> UnitStruct {
+/// let span = name.span();
+/// UnitStruct {
+/// struct_token: Token![struct](span),
+/// ident: name,
+/// semi_token: Token![;](span),
+/// }
+/// }
+///
+/// # fn parse(input: ParseStream) -> Result<()> {
+/// if input.peek(Token![struct]) {
+/// let unit_struct: UnitStruct = input.parse()?;
+/// /* ... */
+/// }
+/// # Ok(())
+/// # }
+/// ```
+///
/// See the [token module] documentation for details and examples.
///
/// [token module]: crate::token
diff --git a/vendor/syn/tests/common/eq.rs b/vendor/syn/tests/common/eq.rs
index 68fd1949e..3c2b1c124 100644
--- a/vendor/syn/tests/common/eq.rs
+++ b/vendor/syn/tests/common/eq.rs
@@ -156,7 +156,7 @@ use rustc_ast::tokenstream::{
use rustc_data_structures::sync::Lrc;
use rustc_span::source_map::Spanned;
use rustc_span::symbol::{sym, Ident};
-use rustc_span::{Span, Symbol, SyntaxContext, DUMMY_SP};
+use rustc_span::{ErrorGuaranteed, Span, Symbol, SyntaxContext, DUMMY_SP};
use std::collections::HashMap;
use std::hash::{BuildHasher, Hash};
use thin_vec::ThinVec;
@@ -296,6 +296,7 @@ spanless_eq_partial_eq!(CommentKind);
spanless_eq_partial_eq!(Delimiter);
spanless_eq_partial_eq!(InlineAsmOptions);
spanless_eq_partial_eq!(token::LitKind);
+spanless_eq_partial_eq!(ErrorGuaranteed);
macro_rules! spanless_eq_struct {
{
@@ -579,7 +580,7 @@ spanless_eq_enum!(VariantData; Struct(0 1) Tuple(0 1) Unit(0));
spanless_eq_enum!(VisibilityKind; Public Restricted(path id shorthand) Inherited);
spanless_eq_enum!(WherePredicate; BoundPredicate(0) RegionPredicate(0) EqPredicate(0));
spanless_eq_enum!(ExprKind; Array(0) ConstBlock(0) Call(0 1) MethodCall(0)
- Tup(0) Binary(0 1 2) Unary(0 1) Lit(0) Cast(0 1) Type(0 1) Let(0 1 2)
+ Tup(0) Binary(0 1 2) Unary(0 1) Lit(0) Cast(0 1) Type(0 1) Let(0 1 2 3)
If(0 1 2) While(0 1 2) ForLoop(0 1 2 3) Loop(0 1 2) Match(0 1) Closure(0)
Block(0 1) Async(0 1) Await(0 1) TryBlock(0) Assign(0 1 2) AssignOp(0 1 2)
Field(0 1) Index(0 1 2) Underscore Range(0 1 2) Path(0 1) AddrOf(0 1 2)
@@ -598,8 +599,8 @@ spanless_eq_enum!(PatKind; Wild Ident(0 1 2) Struct(0 1 2 3) TupleStruct(0 1 2)
Or(0) Path(0 1) Tuple(0) Box(0) Ref(0 1) Lit(0) Range(0 1 2) Slice(0) Rest
Paren(0) MacCall(0));
spanless_eq_enum!(TyKind; Slice(0) Array(0 1) Ptr(0) Ref(0 1) BareFn(0) Never
- Tup(0) Path(0 1) TraitObject(0 1) ImplTrait(0 1) Paren(0) Typeof(0) Infer
- ImplicitSelf MacCall(0) Err CVarArgs);
+ Tup(0) AnonStruct(0) AnonUnion(0) Path(0 1) TraitObject(0 1) ImplTrait(0 1)
+ Paren(0) Typeof(0) Infer ImplicitSelf MacCall(0) Err CVarArgs);
impl SpanlessEq for Ident {
fn eq(&self, other: &Self) -> bool {
diff --git a/vendor/syn/tests/debug/gen.rs b/vendor/syn/tests/debug/gen.rs
index b64cc3e7e..3f92598d7 100644
--- a/vendor/syn/tests/debug/gen.rs
+++ b/vendor/syn/tests/debug/gen.rs
@@ -1,6 +1,7 @@
// This file is @generated by syn-internal-codegen.
// It is not intended for manual editing.
+#![allow(repr_transparent_external_private_fields)]
#![allow(clippy::match_wildcard_for_single_variants)]
use super::{Lite, Present};
use ref_cast::RefCast;
diff --git a/vendor/syn/tests/repo/mod.rs b/vendor/syn/tests/repo/mod.rs
index 780ad823b..61d5ff35f 100644
--- a/vendor/syn/tests/repo/mod.rs
+++ b/vendor/syn/tests/repo/mod.rs
@@ -13,15 +13,16 @@ use std::path::{Path, PathBuf};
use tar::Archive;
use walkdir::{DirEntry, WalkDir};
-const REVISION: &str = "85bf07972a1041b9e25393b803d0e006bec3eaaf";
+const REVISION: &str = "9f5fc1bd443f59583e7af0d94d289f95fe1e20c4";
#[rustfmt::skip]
static EXCLUDE_FILES: &[&str] = &[
- // CStr literals (c"…") are not yet supported by rustc's lexer
- // https://github.com/rust-lang/rust/issues/113333
- "src/tools/clippy/tests/ui/needless_raw_string_hashes.rs",
- "src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0085_expr_literals.rs",
+ // TODO: CStr literals: c"…", cr"…"
+ // https://github.com/dtolnay/syn/issues/1502
"src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0085_expr_literals.rs",
+
+ // TODO: explicit tail calls: `become _g()`
+ // https://github.com/dtolnay/syn/issues/1501
"tests/ui/explicit-tail-calls/return-lifetime-sub.rs",
// TODO: non-lifetime binders: `where for<'a, T> &'a Struct<T>: Trait`
@@ -115,7 +116,6 @@ static EXCLUDE_FILES: &[&str] = &[
// Various extensions to Rust syntax made up by rust-analyzer
"src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0012_type_item_where_clause.rs",
- "src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0040_crate_keyword_vis.rs",
"src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0058_range_pat.rs",
"src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0123_param_list_vararg.rs",
"src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0131_existential_type.rs",
@@ -288,21 +288,38 @@ pub fn clone_rust() {
if needs_clone {
download_and_unpack().unwrap();
}
+
let mut missing = String::new();
let test_src = Path::new("tests/rust");
+
+ let mut exclude_files_set = BTreeSet::new();
for exclude in EXCLUDE_FILES {
+ if !exclude_files_set.insert(exclude) {
+ panic!("duplicate path in EXCLUDE_FILES: {}", exclude);
+ }
+ for dir in EXCLUDE_DIRS {
+ if Path::new(exclude).starts_with(dir) {
+ panic!("excluded file {} is inside an excluded dir", exclude);
+ }
+ }
if !test_src.join(exclude).is_file() {
missing += "\ntests/rust/";
missing += exclude;
}
}
+
+ let mut exclude_dirs_set = BTreeSet::new();
for exclude in EXCLUDE_DIRS {
+ if !exclude_dirs_set.insert(exclude) {
+ panic!("duplicate path in EXCLUDE_DIRS: {}", exclude);
+ }
if !test_src.join(exclude).is_dir() {
missing += "\ntests/rust/";
missing += exclude;
missing += "/";
}
}
+
if !missing.is_empty() {
panic!("excluded test file does not exist:{}\n", missing);
}
diff --git a/vendor/syn/tests/test_lit.rs b/vendor/syn/tests/test_lit.rs
index 82d229001..bc50136f6 100644
--- a/vendor/syn/tests/test_lit.rs
+++ b/vendor/syn/tests/test_lit.rs
@@ -1,6 +1,7 @@
#![allow(
clippy::float_cmp,
clippy::non_ascii_literal,
+ clippy::single_match_else,
clippy::uninlined_format_args
)]
@@ -13,14 +14,13 @@ use std::str::FromStr;
use syn::{Lit, LitFloat, LitInt, LitStr};
fn lit(s: &str) -> Lit {
- match TokenStream::from_str(s)
- .unwrap()
- .into_iter()
- .next()
- .unwrap()
- {
- TokenTree::Literal(lit) => Lit::new(lit),
- _ => panic!(),
+ let mut tokens = TokenStream::from_str(s).unwrap().into_iter();
+ match tokens.next().unwrap() {
+ TokenTree::Literal(lit) => {
+ assert!(tokens.next().is_none());
+ Lit::new(lit)
+ }
+ wrong => panic!("{:?}", wrong),
}
}
diff --git a/vendor/syn/tests/test_precedence.rs b/vendor/syn/tests/test_precedence.rs
index b49577f0f..bf0510bb3 100644
--- a/vendor/syn/tests/test_precedence.rs
+++ b/vendor/syn/tests/test_precedence.rs
@@ -30,6 +30,7 @@ extern crate rustc_ast_pretty;
extern crate rustc_data_structures;
extern crate rustc_driver;
extern crate rustc_span;
+extern crate smallvec;
extern crate thin_vec;
use crate::common::eq::SpanlessEq;
@@ -168,15 +169,17 @@ fn librustc_parse_and_rewrite(input: &str) -> Option<P<ast::Expr>> {
/// This method operates on librustc objects.
fn librustc_brackets(mut librustc_expr: P<ast::Expr>) -> Option<P<ast::Expr>> {
use rustc_ast::ast::{
- Attribute, BinOpKind, Block, BorrowKind, Expr, ExprField, ExprKind, GenericArg,
- GenericBound, Local, LocalKind, Pat, Stmt, StmtKind, StructExpr, StructRest,
- TraitBoundModifier, Ty,
+ AssocItem, AssocItemKind, Attribute, BinOpKind, Block, BorrowKind, Expr, ExprField,
+ ExprKind, GenericArg, GenericBound, ItemKind, Local, LocalKind, Pat, Stmt, StmtKind,
+ StructExpr, StructRest, TraitBoundModifier, Ty,
};
use rustc_ast::mut_visit::{
- noop_visit_generic_arg, noop_visit_local, noop_visit_param_bound, MutVisitor,
+ noop_flat_map_assoc_item, noop_visit_generic_arg, noop_visit_item_kind, noop_visit_local,
+ noop_visit_param_bound, MutVisitor,
};
use rustc_data_structures::flat_map_in_place::FlatMapInPlace;
use rustc_span::DUMMY_SP;
+ use smallvec::SmallVec;
use std::mem;
use std::ops::DerefMut;
use thin_vec::ThinVec;
@@ -185,6 +188,17 @@ fn librustc_brackets(mut librustc_expr: P<ast::Expr>) -> Option<P<ast::Expr>> {
failed: bool,
}
+ fn contains_let_chain(expr: &Expr) -> bool {
+ match &expr.kind {
+ ExprKind::Let(..) => true,
+ ExprKind::Binary(binop, left, right) => {
+ binop.node == BinOpKind::And
+ && (contains_let_chain(left) || contains_let_chain(right))
+ }
+ _ => false,
+ }
+ }
+
fn flat_map_field<T: MutVisitor>(mut f: ExprField, vis: &mut T) -> Vec<ExprField> {
if f.is_shorthand {
noop_visit_expr(&mut f.expr, vis);
@@ -241,12 +255,7 @@ fn librustc_brackets(mut librustc_expr: P<ast::Expr>) -> Option<P<ast::Expr>> {
noop_visit_expr(e, self);
match e.kind {
ExprKind::Block(..) | ExprKind::If(..) | ExprKind::Let(..) => {}
- ExprKind::Binary(binop, ref left, ref right)
- if match (&left.kind, binop.node, &right.kind) {
- (ExprKind::Let(..), BinOpKind::And, _)
- | (_, BinOpKind::And, ExprKind::Let(..)) => true,
- _ => false,
- } => {}
+ ExprKind::Binary(..) if contains_let_chain(e) => {}
_ => {
let inner = mem::replace(
e,
@@ -300,6 +309,39 @@ fn librustc_brackets(mut librustc_expr: P<ast::Expr>) -> Option<P<ast::Expr>> {
}
}
+ fn visit_item_kind(&mut self, item: &mut ItemKind) {
+ match item {
+ ItemKind::Const(const_item)
+ if !const_item.generics.params.is_empty()
+ || !const_item.generics.where_clause.predicates.is_empty() => {}
+ _ => noop_visit_item_kind(item, self),
+ }
+ }
+
+ fn flat_map_trait_item(&mut self, item: P<AssocItem>) -> SmallVec<[P<AssocItem>; 1]> {
+ match &item.kind {
+ AssocItemKind::Const(const_item)
+ if !const_item.generics.params.is_empty()
+ || !const_item.generics.where_clause.predicates.is_empty() =>
+ {
+ SmallVec::from([item])
+ }
+ _ => noop_flat_map_assoc_item(item, self),
+ }
+ }
+
+ fn flat_map_impl_item(&mut self, item: P<AssocItem>) -> SmallVec<[P<AssocItem>; 1]> {
+ match &item.kind {
+ AssocItemKind::Const(const_item)
+ if !const_item.generics.params.is_empty()
+ || !const_item.generics.where_clause.predicates.is_empty() =>
+ {
+ SmallVec::from([item])
+ }
+ _ => noop_flat_map_assoc_item(item, self),
+ }
+ }
+
// We don't want to look at expressions that might appear in patterns or
// types yet. We'll look into comparing those in the future. For now
// focus on expressions appearing in other places.
@@ -334,28 +376,42 @@ fn syn_brackets(syn_expr: syn::Expr) -> syn::Expr {
struct ParenthesizeEveryExpr;
+ fn parenthesize(expr: Expr) -> Expr {
+ Expr::Paren(ExprParen {
+ attrs: Vec::new(),
+ expr: Box::new(expr),
+ paren_token: token::Paren::default(),
+ })
+ }
+
fn needs_paren(expr: &Expr) -> bool {
match expr {
Expr::Group(_) => unreachable!(),
Expr::If(_) | Expr::Unsafe(_) | Expr::Block(_) | Expr::Let(_) => false,
- Expr::Binary(bin) => match (&*bin.left, bin.op, &*bin.right) {
- (Expr::Let(_), BinOp::And(_), _) | (_, BinOp::And(_), Expr::Let(_)) => false,
- _ => true,
- },
+ Expr::Binary(_) => !contains_let_chain(expr),
_ => true,
}
}
+ fn contains_let_chain(expr: &Expr) -> bool {
+ match expr {
+ Expr::Let(_) => true,
+ Expr::Binary(expr) => {
+ matches!(expr.op, BinOp::And(_))
+ && (contains_let_chain(&expr.left) || contains_let_chain(&expr.right))
+ }
+ _ => false,
+ }
+ }
+
impl Fold for ParenthesizeEveryExpr {
fn fold_expr(&mut self, expr: Expr) -> Expr {
- if needs_paren(&expr) {
- Expr::Paren(ExprParen {
- attrs: Vec::new(),
- expr: Box::new(fold_expr(self, expr)),
- paren_token: token::Paren::default(),
- })
+ let needs_paren = needs_paren(&expr);
+ let folded = fold_expr(self, expr);
+ if needs_paren {
+ parenthesize(folded)
} else {
- fold_expr(self, expr)
+ folded
}
}
diff --git a/vendor/tabled/.cargo-checksum.json b/vendor/tabled/.cargo-checksum.json
new file mode 100644
index 000000000..24deb3153
--- /dev/null
+++ b/vendor/tabled/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.lock":"8acd50c40b8eb734ac267ab12360fbabe188c05aa93a5b68c60f36d42cc0ac59","Cargo.toml":"bac040c9f0a02d93211a8bbdc0fa312113bc9835ede425ae6320d24f487aa990","LICENSE-MIT":"49ad3fe9bc9d4f0798a481e1c73ac833c52b4525c72fb2c4b0cd1a510e88a177","README.md":"04b277bd697992dfef40b34a8631bda6eccb91787884b97ae8cdb7257396d7a3","examples/README.md":"c35447fb5c215769ceb80b9279d9f02df9250fbd12ecc2598ee9ab8f1a082b28","examples/alphabet.rs":"469835de88d8da6e1a7b5b162ec28116da0480cd03a1a3a68df5a7a9416da467","examples/border_text.rs":"87ec5c3726d78aaba8a095b3b0018c3d523373288399b60bf8490d98660a814e","examples/builder.rs":"68bd0a303ace09ec695b4ccc5e024ddb9ae85fceb5e5f601d6589651c319f3d1","examples/builder_index.rs":"42448b10779d751ac0e853c77f46df14b51d169ebb1934dca24ae6f39c105ddf","examples/chess.rs":"8d54501d7286d0a0ff2725859824da2a2879e60e4873ccaa8fde1456ac407898","examples/col_row_macros.rs":"66bfb4bec2ecaebd0aeb1bc5fcc534aa091686eb48d7b0ce886ab1218692eb09","examples/color.rs":"6c6b4522976da5775b5501e26eb8df3f56298bcc1dd48bce6fee6f1b7d869b52","examples/colored_borders.rs":"ba36f5c5deb13be80a6bfd10e58666c9350ea06128a8f9b0b5cf0120351adb91","examples/colored_padding.rs":"5b17a748c48d5630f18cbb394ed41df5ff69e8a1f5b4b1dfbe0ce15041e44e8b","examples/colorization.rs":"e3508840fd8b479219d07395ca283f372574a77c8125d593d974eeb8810493f9","examples/column_names.rs":"c00c1feb459ca3549af13d31351c15e7a6bc671eefc8065597f831e164c620af","examples/compact_table.rs":"2564f8b2b14872e743bc9b240047fb32d07d2ed950d9fceace5f3b2f59c4748d","examples/compact_table_2.rs":"6c384217d99a0a0c603e6992878f8881ebe1c4bb3060535d0213d9fcb2c57e7c","examples/compact_table_3.rs":"d017100154a8952677ccb1dd4b89473f0359c9eacd58ff5de7859ed2b37efd65","examples/concat.rs":"77ea7c4332baf7d10b7c3e99efa5a1fd3fd3ee7e3f1c73737d10422a330cc778","examples/custom_style.rs":"4815e7830b8a3826c35ebdc6dc8c4e52239e11c78f03ad01fa4117ce45d263c5","examples/derive/display_with.rs":"a4c5b6400c3236811d6239225706f59934c72b978d02547f83ef6581e6a04877","examples/derive/inline.rs":"4037cce3819a0c93d78f514005956b95550eb9dcc51b371d1a43af4e582ed0f6","examples/derive/inline_enum.rs":"17cd68807d247269de6cb4e596bc8af0353149b1ce76c7723f8ba2aa573ad034","examples/derive/order.rs":"5f8a7157e7195f6bfc02644fc609a020d07371d74cc5b9288c0616f325a2b237","examples/derive/rename.rs":"9f06397edef8ed7ec0691328ea2053f426fe32bf59a921db0d5312ae6b1893ec","examples/derive/rename_all.rs":"3d1479a0d303f8816f7f7d4b04946a5c2dc16176eb6855bf17b3a201dd43e303","examples/derive/skip.rs":"baed27513011a2369d37fe69de86a5de0b3593dc5279a5b799d6ed06584eafd5","examples/disable.rs":"c7a9801e3fc3c2f2bac4c06fef587c1c06f025d00b4a549ad2d1f9e7a7072431","examples/extended_display.rs":"e58b83b61c937bbd2a4563bfddaa971464e04f5ecc8edef6111693d6855f2e1a","examples/extract.rs":"aafb4706d2a5017284ec1657dd4376feb182291c428319d258a15f3903d60d57","examples/format.rs":"acf136a6bbb9035568a00c664df289ad5ae84a6adf089fb339d4b2fac83667a9","examples/formatting_settings.rs":"fe7ae39ed108c04b760799070c2ec1a76b06e43cf9f78bccfe44cb5a9ae47d1c","examples/grid_colors.rs":"a1a5f72dc4bbee5e1fbe6b318decd0992a3e875ca3a3fb64f1f775816546c3be","examples/height.rs":"5489041a299a02d437a4656ca60446571418eec5c4db12717f59373582d04bda","examples/highlight.rs":"5839e6ef8e338717c21c9a4af452ee76c589337cc7de59eb554e8326a5351464","examples/highlight_color.rs":"f19b723b727ccafa99aba2f4d2449c0289d623f268a9b64c980794da25e4202e","examples/hyperlink.rs":"417f2b0e98046d6b9782542b61539d8ad5bfdcc48d52fb4aa4d1e44ce2a4795d","examples/iter_table.rs":"c06fc593fcaa3d4185bbab9da30bebc655865105ccbc8d2803e0b9e4a791b95c","examples/margin.rs":"6bc26aa50d49218e86331844da30da8b177b038d95444c4e86028b7275eb0577","examples/matrix.rs":"f9729badafbee5b9a86dc66459d19ac79d0b5048a2a819e596b4eb2095ae0ef5","examples/merge_duplicates.rs":"4239dc1d6c64416f2a0af97995b34238c3f52b4a1b785d46e6824eb2b57d6449","examples/merge_duplicates_2.rs":"ffb76058b1138540aec19923f36a1954db57f3bfe1450e4f140af992ab4baee9","examples/nested_table.rs":"eb7f9446ada602a202a146c45241165bc3b4d782c9530c4b201f9af8f609a697","examples/nested_table_2.rs":"786ae17ee8fdf78b2bff47b9ed9c08ab700b866cf07c134b80364bca637cb290","examples/nested_table_3.rs":"59d387bcdaaf61dfb2e2ceaf9242b52b4638c9223a077b63a1805f77732d521b","examples/panel.rs":"bda9781934adf26bc72a0269228fc609be8b84f3af5332f151794639630b032d","examples/pool_table.rs":"92f236d52503f153a6cd524673be0423c9f5860510e057a578015d4343e4929f","examples/pool_table2.rs":"a1fb1f5f25c9652c5cb7ccd0a6cc91e5434cd47ad64bf7bdc0eda6cd3b37edd3","examples/rotate.rs":"d200fc2d93a54c3e5e486768551ff5b0e7e233b24a57c05b2b079617d50849dd","examples/settings_list.rs":"b32d18b4bc475d45e1023522bc257a6af25cc9c6bddda3e651666da183d8f690","examples/shadow.rs":"c983465cad4f5b5d562cd27a4f4e7d7e981b2511a3f8385ce324fdb53a5fa4c7","examples/span.rs":"67a3212f606b1bbc7e19cd134bb94830055ec8c43970d4004783018d7e34801a","examples/split.rs":"2bdb3054e7f1467b47a32becfc287a01773bf00aad1458a84fd2ddb7191c1caa","examples/table.rs":"4321c82f4a5267f7e117ab8aaaab351db0bba5de94f2a99aa1460a7b08d77a54","examples/table_width.rs":"25af1d10b736124d904db71dd9c0797c70862551461556ff4a8796f8a364bf20","examples/table_width_2.rs":"90a713b6cac3f6a9038790ffdb2475d587af20954689733e1b7c5d724a30b95d","src/builder/index_builder.rs":"e679f927c0fb6646c7c5588ed2f0821348cb4e746d7783fcd40ca542d8eb618d","src/builder/mod.rs":"c7dccafb2ff869ddc79710f21dba0dcb80e3e9c01f2954b36de23a13cd68e88c","src/builder/table_builder.rs":"a4b4eb726b04b4ebd1632c25cc3dc04ba757bcfb0f4f53b9432c7c94942252ac","src/grid/colored_config.rs":"71f589246b7ddc446537461edc0fdea8a5a1896caac8e27082eb4b228b19c463","src/grid/compact_multiline_config.rs":"40f5894fc0a4841edf989868b2e59a85a64080a98998fb56e10a8c5bffdb414e","src/grid/dimension/complete_dimension.rs":"af04cac77366095d7a56fd0d5c315ec3263b5602bf608a43bd50508798629c97","src/grid/dimension/complete_dimension_vec_records.rs":"46d305799377420f06a34d4451aefd176dd793048339687d8210d7f590ce927c","src/grid/dimension/const_dimension.rs":"1015fd7d26e3d1cf0530dfd191f90f2da32183761825d8c3b60b99a977a5f14b","src/grid/dimension/mod.rs":"5f462f052904ebae923dee6cd69afede677b117274c55a99acc847440f204450","src/grid/dimension/peekable_dimension.rs":"f2611401c5e13f20fb7d23c50b853443d8cc19f7e497a77e566a317688b1e214","src/grid/dimension/pool_table_dimension.rs":"6dc53142a973bea0d5e6a8f12c0dbcf0b2bd0e2be85e905a32b3f96f0889a3a6","src/grid/dimension/static_dimension.rs":"a16b657f72a5795a949528ea7444e9157aeb5e4e3f08734db8ea68789ffa4136","src/grid/mod.rs":"c4c65a0ad651a4fa39c3e43f22a579d18df9150e04d1a9d6aa1b3ff1271f19a1","src/grid/records/empty_records.rs":"5e6498bfee974ac55c9ff0da30d8d11b9b220d825854aeba9a516f87b884f5c5","src/grid/records/into_records/buf_records.rs":"3bb7179051e87ffc158f6622a6a22b630be4021a7da69e8483fbcecce3c90d6a","src/grid/records/into_records/either_string.rs":"d7707681a12f24dcfbe48db7efaa6394d18bb73735630773563a48ab936213e6","src/grid/records/into_records/limit_column_records.rs":"83fd2c5bef9a0e9411467db91990e75eafee7e4f700ed8319254f88a33156eb7","src/grid/records/into_records/limit_row_records.rs":"93aa0eb4443656cd95c90c7ed990722b5944845d1d458fccc8f560abdadf67d6","src/grid/records/into_records/mod.rs":"569338db61df7059748bd346a18f42258d2b3da63bb047825b470af76c6e4e3e","src/grid/records/into_records/truncate_records.rs":"5809a7d721d8f25213459c7e5cd04c2a1a3d19138d437b812f83eee7aa13dd12","src/grid/records/mod.rs":"6177fb0ed037ee9616d93fb1f721c5c579c9f748ff9be1dbc4b28b5eb4f5be5d","src/grid/records/records_mut.rs":"08ed1e637d4725995ed89adc35337a09988b5b35e3f6456668b57cf548bd5520","src/grid/records/resizable.rs":"21b9ad1ccb9cb7906180408620a24ee86aebe9715dc51336979cce0114e5c010","src/lib.rs":"18ab09730e26d3800070eb77c08c17996c999d95337c84455c3bc31356e0f4de","src/macros/col.rs":"54bfe1e8d498397f78266358004aa03c6b1c6308cc3e40909640124cbf474c50","src/macros/mod.rs":"188dfe6bfc1737165ac8dc2aecef6c3785aff67c850e7f5e8a4b4635a56c0af7","src/macros/row.rs":"61354760659ccde947ae3ade6e1b62a592fbd88b20a6b5e49efe158298d13046","src/settings/alignment/mod.rs":"559bf427cd4d75cb4a1efce40354c8139715320e369d133504a1dff297df00d4","src/settings/cell_option.rs":"e00ade2f6031af0e9e2166da21d6fdd3910df7ac09351ec5900f4444a444126a","src/settings/color/mod.rs":"f9aed796f6455db2aaa5178934b8b39c6e20f497007a488c57f3500d29b1d244","src/settings/concat/mod.rs":"1c6ceb585335d00a197e47694aeadf8868a71d6b386ab43bd76bee30a713a317","src/settings/disable/mod.rs":"e825c646f93ce79b582efa0aa7a2c1b20fb53b54a32cad9230edea231193f21b","src/settings/duplicate/mod.rs":"706e6ce779efcd4df18100b4dda9cec12e1d841348fab758596e85dcf6e6e514","src/settings/extract/mod.rs":"1186ddd4fb75cfe1ff05db1ec1eb777ccebd77e656ffaa1bdb8e2dc2177e70b4","src/settings/format/format_config.rs":"af71c41ff5a0a4bce0f2c4afc4d70f73222d528e7fece8acd918119c0ced02f9","src/settings/format/format_content.rs":"5800cde98baf7e0bc9a9fc685c0f29fa4ce558e7848f0d9038f120c36c627295","src/settings/format/format_positioned.rs":"e00d49ecb32095e56263cc70d4cfe318bfd54a934c0fca194fb91c4fc1c116a2","src/settings/format/mod.rs":"eaa8aebb72978abeddd38e28f208007cb299df6bb0adbd1fbcd8562c0b7578a6","src/settings/formatting/alignment_strategy.rs":"f3f6977bfd691422be5ede98ca45c0c61f70a592b2408d5af668edacadb686c7","src/settings/formatting/charset.rs":"7eff1283911eb10f687112a6ad1a00bead66397bcf03a4d80cc5e87866076b81","src/settings/formatting/justification.rs":"a4034e8dfa12c6e0b80caf627b0d7c266f52cae8701241601dafc7455ec235f7","src/settings/formatting/mod.rs":"19e144bde5dda9b02e56b82702f151ee5b02ed9ccbb1902264c652171e89074b","src/settings/formatting/tab_size.rs":"04f00810468950e3c4e8a94fee918601d98f7bc641577c99aff796b6ebf4bcb2","src/settings/formatting/trim_strategy.rs":"c9b02b07563a5c51451a305e1e4211ec3538838f8a998ebec686b33db7d6430d","src/settings/height/cell_height_increase.rs":"42934beb31f8e5b2343a46338c922ba626d64190ae257f901119ae60b825de12","src/settings/height/cell_height_limit.rs":"34ccb01f94816f5bdf7d03be23c241ef6d96c1a93d7525470ee028e0861ed3f9","src/settings/height/height_list.rs":"ac9c4f92639b0499814adb3b8b6e1f09c0445c2585a8f07d30dc65028115228c","src/settings/height/mod.rs":"6f0396b36581c33407db24fa01d45159b34dcf24de681cbbcbc14149686a7fbd","src/settings/height/table_height_increase.rs":"117f3f3feeca3250873c0d7fb87645ec8f7c6cf4d40a367226e36b8789a3c449","src/settings/height/table_height_limit.rs":"bd7d6bfe4c8be8610bd41d1c8c0d4f8325df57fc2c1fd3e5597ab330a4ebeb8c","src/settings/height/util.rs":"0b3fbdbef24785b26f1da3b14f6ea64e57d78162ef0bb324a67a96b3e0c7346a","src/settings/highlight/mod.rs":"f8849979f10e9c35bdcad394c3a9b377d6083d4c45a4e496ecbd8374edfc0256","src/settings/locator/mod.rs":"e9b60346fedfccddbfba6b4d4271acd1659327af8fd78ae042ad21d37c820c65","src/settings/margin/mod.rs":"b11066ee2ecd81f3804d7ff9c75eebfcad3538fbd4d3669c6b54da84c66abe4d","src/settings/measurement/mod.rs":"0893a1e5693ab819b4ecbb1e898302c1a4f40e52d59a120efdc54a2de6704ea5","src/settings/merge/mod.rs":"1b0f62f323623daecd9865e1b46316363423b4cfe8ced45b0ec3815e59f6a4cd","src/settings/mod.rs":"dc25f44a241b1bf5d975d401f23f3e8c2f94360c13642db82e586a215b2e362c","src/settings/modify.rs":"b757545c21823a6b14a4e5382c538d5a2b70592cee2ede1ad378c1735e12252a","src/settings/object/cell.rs":"34c33393afcbc1109939f3947ef351248c0fb0a88788812e59a3743176183f47","src/settings/object/columns.rs":"0684b9f0f5366a3a1e4b9ce0d6ba4464c1e3f0a4b6f787794c77811da9623828","src/settings/object/frame.rs":"887027d12b36744474c0665677a9ce7cbe4349d9a5bdee36c792607f6ba52e5c","src/settings/object/mod.rs":"8322b812c2b8dd3473cf53a9f7c8bd49b8b4e5cf1c25ce62dd5a22447bebb587","src/settings/object/rows.rs":"e026319a33572c76f05dd6de9164bca233f2b354852dc6d0be269e8da0142a4d","src/settings/object/segment.rs":"551d476c27de4d6626e8496d41275c5a4de5a71e25bff65c9ed0201bcbd36303","src/settings/object/util.rs":"2570c1f89a8a1642ec5d530515b0363cbae9ded0f318a66082ed868b4ff01c38","src/settings/padding/mod.rs":"052c8a00c04476b8d4752b099b0f702e5c6954632f6685c8461bd381663a73a7","src/settings/panel/footer.rs":"b1e022930a2eb41faef837a1e5dd7afa5e28a384c8910d3697b65d27a887b386","src/settings/panel/header.rs":"f0ba5b0c898d7fecba6b4c162d7a39411bf3b484a5e66de96fc886caecd1b44c","src/settings/panel/horizontal_panel.rs":"7af24d240b271df2da4aae7800efc2b1b50d228b4d8d9c6be027bb5ef0186590","src/settings/panel/mod.rs":"8db8ea0659ee44ff6aabb384b341c701074edcc866d191eb43db359ebd37bcc2","src/settings/panel/vertical_panel.rs":"081ed754dfc990475ec6fb6bafa7b6882718c1ff0a9764bd2fad4ebb14da117f","src/settings/peaker/mod.rs":"5d7f82e4dc4d27abd7adcdc3f0f898dd439927ed8dd3ac75d4417cf43b601baa","src/settings/rotate/mod.rs":"0ec15820a2d61c411331899098d83b092af0f232a1354864b3a2cdad259f28d3","src/settings/settings_list.rs":"8b4a5efc821ac1ec01c28e164b7f5540d7c87073b3f139ab125349bfd1010aed","src/settings/shadow/mod.rs":"31addebc3df7cfd33365cd15ba71e3cdccbcc03f986181a91dca5afb71dd05ff","src/settings/span/column.rs":"e9e2a2c7be1bc7862411f494a154c1b701a25a3b18ce916773e90699c7e7966d","src/settings/span/mod.rs":"5acf7cf724546179fc2a80b64207159915e506bdca3e3a229998fbea2728483c","src/settings/span/row.rs":"80fdf9d8bc73896be1d2cede82f071350ac79122ddb342dbfeff9a7189642cdc","src/settings/split/mod.rs":"4f613518d564065862a729edbe2a7cae841d1f67848dcbc7dc540bdacf9ea096","src/settings/style/border.rs":"ec1beac0c5ddbd989a8cf18023254ff903627df5ce56aa116c7f8e2277d0f884","src/settings/style/border_char.rs":"20792f88c06ef8e46164274aecf66fd874bed9730cb01222fb78d2a0687316cd","src/settings/style/border_color.rs":"7c234c08cc9e9e14522a7bcfc767880271e5fb07e659e7329dc7e56aa3b2d298","src/settings/style/border_text.rs":"d9b951e9c894e50a57c50d6b6a2e832cabae27681b26cd2d842eef99888d60c8","src/settings/style/builder.rs":"3c074039dbf2ae429f5eeb43da05ceeaee20383d3f67a02b50c8a917904adb52","src/settings/style/horizontal_line.rs":"3695a779a1296d7b595b19fbebe1e5df631d49a8a6e9b915c191571235cca157","src/settings/style/line.rs":"8d7be44ba415b093481e4f41364edb180cee23f0082b7e1b425f69f7459161a5","src/settings/style/mod.rs":"e0e09789e0fb52e82d11e066183ffcba4645384210b13d3a6c61f13dfac01603","src/settings/style/offset.rs":"de5f6b9159716f70d84361401a37118e154de719c5d02168282a5873a9f94b51","src/settings/style/raw_style.rs":"d16821bc0a107adecf66e9ef210ddadd892281510956b5a1de7c9aed5806d17f","src/settings/style/span_border_correction.rs":"70450272ecb057d1720019c2debe060ee51216027dde3a8c0c132b2bb30beb98","src/settings/style/vertical_line.rs":"f4addb95eec3b4b3984e6b86d83ec74912eec49775284a7154006a345e120380","src/settings/table_option.rs":"1d2ca1f99edf4b2780224ee46283e98f8244dc9eede949c612ccd118e811316b","src/settings/themes/colorization.rs":"6de2c67164e222589b44a9f5cb6332be6c519e0553c1dc35d2bcb9783c4af284","src/settings/themes/column_names.rs":"aeecde8f6d606a3aeff7f9b558af86fed0bd57f2308410d42cd6426f298ce38d","src/settings/themes/mod.rs":"57a1b0e79ad5148f74654bfd9c74c78a8d904fb2398482c95735b4d2f71ccec7","src/settings/width/justify.rs":"f4e5d8c33193b241fee01e20e3df696cb90c3e2c727ed15e1f96aba0d393f7bf","src/settings/width/min_width.rs":"bafaef872844f2c8026c862b1cf3e6842f965ebf004728c7334821a3448cce69","src/settings/width/mod.rs":"2c6d5eb71887fe041bc83c543fad75b39d7d430aae0397cf7453bd0281196c05","src/settings/width/truncate.rs":"a03496dbba6ba6ef330438a6a4ad70ea58e326b5aa0a61ca1f04ed88b6312f73","src/settings/width/util.rs":"8c750305ea2840dbe5810583c998d1b5e55cfd12c58fbc9c0ebc9b8850ee914e","src/settings/width/width_list.rs":"83eafd51cfdd98c532065fb6419c8d7ee0c2e9722496d5b4fd20707da6634bcd","src/settings/width/wrap.rs":"408f50024550f2e501b511ebabfb93a8047940426fd9938e28189a28898e52df","src/tabled.rs":"8004c03fd69452e6c0de42c87bbe387a96d19e7d250d98ac48ebeb6a2057c823","src/tables/compact.rs":"8e5c0c96b3b78f53f2345d1451492c6eec544fcb5db94cb8152fcdf7a31a5b39","src/tables/extended.rs":"8887b125e41083cece14b46fba441a3db1eb3bb9b80f2867db834defcfb0360e","src/tables/iter.rs":"aa68749d6cf9dc92a56c837898f7c5f2f33fc1d5c90592bd9607bddbeaecda1b","src/tables/mod.rs":"5a8bd5e46cacc644e5a8fbcc3b5f02a12e87a6d0fbe19d767228ce3b40b3eec0","src/tables/table.rs":"5443e543b0f94e14a1a0ba3d7ed86bebdd6cc432be19173fac952ecc9a86bdb6","src/tables/table_pool.rs":"7eba1a99d44e256149c9171b1aff767d344cad897f459e6ce86648fec46b977f","src/tables/util/mod.rs":"74e2f0a1e3f6107f61fd6182b70864d87ead2aa964220bbc26ed0d9ad44d4694","src/tables/util/utf8_writer.rs":"93b121191b26d2429c800a95c7860668c32252f5372a9ee2483925226d245fbf","tests/core/builder_test.rs":"899d29e769c5b7a5402a733fe9c594b5b785c005e06e7f692774b7ec3a299a0a","tests/core/compact_table.rs":"282ce7a642eeb78642753494eff5b23efac657e74972554b63a31e7fdad41a1b","tests/core/extended_table_test.rs":"619f2d502a227080e8c36960f95027394b0e501907f8746f533f06aa0d5497cd","tests/core/index_test.rs":"f07633ca9469517d5526600b670d7b5aa71a2060d673f24c5886327a32422bd3","tests/core/iter_table.rs":"4c949c834bc0d821cb7a79f7ba3b44c7d232fd8db88871650e11c5403e62f624","tests/core/mod.rs":"c3a136c3f400bad4fd55d72c50c79fd9f8fe4f542572281c0be35e915d1c34ad","tests/core/pool_table.rs":"43ebeaeede9ea3cba5d8120af2e74292a4acc8400b1d97134ca2b09374f7b8c6","tests/core/table_test.rs":"b80e2ed089338591e58215c09186287c6b76ab424f1479dc487a183886ec0a07","tests/derive/derive_test.rs":"4e75c885dac6542f3f18a30ad341c1892f206f7c35dbe5174030f01c5c558f03","tests/derive/mod.rs":"8b059e0716d6e84fd5b6381c0c05fcea51a1ccffcf6addfb7ec4fc737dff602d","tests/macros/col_row_test.rs":"7c98c49354c1f506a5b5f4c878d0a6cd9085ef86363f86278677c038b99c4405","tests/macros/mod.rs":"e11259b057ec7558a625b5eef5efabb06596af50443134ca54415b2bf5794218","tests/main.rs":"c472107cafaee31edd7379c99542e6e89a1f00af4bc0ac3e052e34bce7813786","tests/matrix/matrix.rs":"3093a8cbd7100eddf472489363e40ef7913589795917fcc194b84591a592074b","tests/matrix/matrix_list.rs":"3ee3e7e98a16f57c6db29e964ec3d6ed6972c186106b51dc554e5b0c06c8076b","tests/matrix/mod.rs":"628e26c50c75ba755c9e5f1bcbf13d06b6b7be427f485647904b74af934b0164","tests/settings/alignment_test.rs":"46442422f73673517c530ddddbf35b99e4e38eca4efb4e59ea56fc0eaa6eaaf1","tests/settings/color_test.rs":"7133eba1b7544e04914f80cab22fc71bb864d6c545ac6e215f7f44b177e25619","tests/settings/colorization.rs":"313296177cb22d8b2b96838c36abd09f5667e5faa85114f52753f5e94afa6311","tests/settings/column_names_test.rs":"36766e2bf07f292f1ce22439ec7e09613a818697e197fce3335a51b64b8f6b31","tests/settings/concat_test.rs":"b6ef3a5699cdd5b02b7c8ce243eac81f1a721cd15741d35ce0a9c2319983e14a","tests/settings/disable_test.rs":"c64a08ae99ae0e6ad8fb3b74afbb4d6fda2898bd4504cf8df63d32b33eda5880","tests/settings/duplicate_test.rs":"c22637f808340e59d8a6e199ba895d8c205e1ab0084349760f3efb7f8a465bd0","tests/settings/extract_test.rs":"d675a66ddec3366a3dccacf9e825d9ca3af2656d67e8c7ef3745f3663effb4de","tests/settings/format_test.rs":"06f3297f6a1a54a33d4b399a66bd0a18df2de96f6be0a84bd7a8fe7abb8db817","tests/settings/formatting_test.rs":"f7028d21403f6b3a40fa5eadc9b9aa61b528b6c131e2269affa2c79552d9e18c","tests/settings/height_test.rs":"d5cb6f3f637c59f2ad516773b45e2971a103287e412700a7232b656f61e383e9","tests/settings/highlingt_test.rs":"f45847c75aa66e44f97d7a1eb3d59e659d58df4ca1abe66e4c42caaf9d3810ce","tests/settings/margin_test.rs":"849a4a1bae77e8b4043668a43b7286b45040836cb884f7943c23a4ec46d886be","tests/settings/merge_test.rs":"6da97efe49db8a609bbbc04321363a5fb6aa38b8142d2537f72697e706c819e7","tests/settings/mod.rs":"ad3c772baf4f36dfb6a0951a9daa342ab964aae7744e8a5f66f07a8f0817f864","tests/settings/padding_test.rs":"ab87e0a319242d35439b12f018eafd683cf6017d2b5e9987c7e0fbd6b306feb4","tests/settings/panel_test.rs":"40e93f7e6f79391e49c5856a8554722ae0fb202907c87394b273c1efccc7a37c","tests/settings/render_settings.rs":"57ca840b94a9c5f42d492831a236592d1b1551b65166d6f88382c8ff1e80cd1e","tests/settings/rotate_test.rs":"83a34095d961618b433979454ba92bd0a00e41777326d278f9ee703f0ea77dcb","tests/settings/shadow_test.rs":"a5c4f13be24f0bc051f46520b7316a5670c5ccac77933267577068708ee7334e","tests/settings/span_test.rs":"9c4a2dea81d437327f85f5721654c415fbd705bc9d4fcf277d846ff941081729","tests/settings/split_test.rs":"a953c5e8393e061e07be4c3ba88cf8761f695d84272ddb00cb5288d7ffdfa798","tests/settings/style_test.rs":"50d629536919603410c20a7da1682956923372da34d38c7f54f5a8c0fbce85d7","tests/settings/width_test.rs":"613840392eeaddd897fac8607fdeb442c2fe2b2026b34316c84662ee1b1eb404"},"package":"4d38d39c754ae037a9bc3ca1580a985db7371cd14f1229172d1db9093feb6739"} \ No newline at end of file
diff --git a/vendor/tabled/Cargo.lock b/vendor/tabled/Cargo.lock
new file mode 100644
index 000000000..987b995c3
--- /dev/null
+++ b/vendor/tabled/Cargo.lock
@@ -0,0 +1,210 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "ansi-str"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cf4578926a981ab0ca955dc023541d19de37112bc24c1a197bd806d3d86ad1d"
+dependencies = [
+ "ansitok",
+]
+
+[[package]]
+name = "ansitok"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "220044e6a1bb31ddee4e3db724d29767f352de47445a6cd75e1a173142136c83"
+dependencies = [
+ "nom",
+ "vte",
+]
+
+[[package]]
+name = "arrayvec"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
+
+[[package]]
+name = "bytecount"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c"
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "heck"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+
+[[package]]
+name = "memchr"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+
+[[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
+[[package]]
+name = "nom"
+version = "7.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+dependencies = [
+ "memchr",
+ "minimal-lexical",
+]
+
+[[package]]
+name = "owo-colors"
+version = "3.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f"
+
+[[package]]
+name = "papergrid"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2ccbe15f2b6db62f9a9871642746427e297b0ceb85f9a7f1ee5ff47d184d0c8"
+dependencies = [
+ "ansi-str",
+ "ansitok",
+ "bytecount",
+ "fnv",
+ "unicode-width",
+]
+
+[[package]]
+name = "proc-macro-error"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+dependencies = [
+ "proc-macro-error-attr",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-error-attr"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.56"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "tabled"
+version = "0.13.0"
+dependencies = [
+ "ansi-str",
+ "ansitok",
+ "owo-colors",
+ "papergrid",
+ "tabled_derive",
+ "unicode-width",
+]
+
+[[package]]
+name = "tabled_derive"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "99f688a08b54f4f02f0a3c382aefdb7884d3d69609f785bd253dc033243e3fe4"
+dependencies = [
+ "heck",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+
+[[package]]
+name = "utf8parse"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
+name = "vte"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6cbce692ab4ca2f1f3047fcf732430249c0e971bfdd2b234cf2c47ad93af5983"
+dependencies = [
+ "arrayvec",
+ "utf8parse",
+ "vte_generate_state_changes",
+]
+
+[[package]]
+name = "vte_generate_state_changes"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff"
+dependencies = [
+ "proc-macro2",
+ "quote",
+]
diff --git a/vendor/tabled/Cargo.toml b/vendor/tabled/Cargo.toml
new file mode 100644
index 000000000..33b699cd6
--- /dev/null
+++ b/vendor/tabled/Cargo.toml
@@ -0,0 +1,367 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2018"
+rust-version = "1.61.0"
+name = "tabled"
+version = "0.13.0"
+authors = ["Maxim Zhiburt <zhiburt@gmail.com>"]
+description = "An easy to use library for pretty print tables of Rust `struct`s and `enum`s."
+homepage = "https://github.com/zhiburt/tabled"
+documentation = "https://docs.rs/tabled"
+readme = "README.md"
+keywords = [
+ "table",
+ "print",
+ "pretty-table",
+ "format",
+ "terminal",
+]
+categories = [
+ "text-processing",
+ "visualization",
+]
+license = "MIT"
+repository = "https://github.com/zhiburt/tabled"
+
+[package.metadata.docs.rs]
+all-features = true
+rustc-args = [
+ "--cfg",
+ "docsrs",
+]
+rustdoc-args = [
+ "--cfg",
+ "docsrs",
+]
+targets = ["x86_64-unknown-linux-gnu"]
+
+[[example]]
+name = "color"
+required-features = [
+ "color",
+ "derive",
+]
+
+[[example]]
+name = "colored_borders"
+required-features = ["derive"]
+
+[[example]]
+name = "colored_padding"
+path = "examples/colored_padding.rs"
+required-features = [
+ "color",
+ "derive",
+]
+
+[[example]]
+name = "disable"
+required-features = ["derive"]
+
+[[example]]
+name = "rename_all"
+path = "examples/derive/rename_all.rs"
+required-features = ["derive"]
+
+[[example]]
+name = "rename"
+path = "examples/derive/rename.rs"
+required-features = ["derive"]
+
+[[example]]
+name = "order"
+path = "examples/derive/order.rs"
+required-features = ["derive"]
+
+[[example]]
+name = "skip"
+path = "examples/derive/skip.rs"
+required-features = ["derive"]
+
+[[example]]
+name = "inline"
+path = "examples/derive/inline.rs"
+required-features = ["derive"]
+
+[[example]]
+name = "inline_enum"
+path = "examples/derive/inline_enum.rs"
+required-features = ["derive"]
+
+[[example]]
+name = "display_with"
+path = "examples/derive/display_with.rs"
+required-features = ["derive"]
+
+[[example]]
+name = "table"
+path = "examples/table.rs"
+required-features = ["derive"]
+
+[[example]]
+name = "builder_index"
+path = "examples/builder_index.rs"
+required-features = ["derive"]
+
+[[example]]
+name = "concat"
+path = "examples/concat.rs"
+required-features = ["derive"]
+
+[[example]]
+name = "custom_style"
+path = "examples/custom_style.rs"
+required-features = ["derive"]
+
+[[example]]
+name = "extended_display"
+path = "examples/extended_display.rs"
+required-features = ["derive"]
+
+[[example]]
+name = "extract"
+path = "examples/extract.rs"
+required-features = ["derive"]
+
+[[example]]
+name = "format"
+path = "examples/format.rs"
+required-features = ["derive"]
+
+[[example]]
+name = "panel"
+path = "examples/panel.rs"
+required-features = ["derive"]
+
+[[example]]
+name = "rotate"
+path = "examples/rotate.rs"
+required-features = ["derive"]
+
+[[example]]
+name = "shadow"
+path = "examples/shadow.rs"
+required-features = ["macros"]
+
+[[example]]
+name = "nested_table_2"
+path = "examples/nested_table_2.rs"
+required-features = ["derive"]
+
+[[example]]
+name = "nested_table_3"
+path = "examples/nested_table_3.rs"
+required-features = ["derive"]
+
+[[example]]
+name = "col_row_macros"
+path = "examples/col_row_macros.rs"
+required-features = [
+ "macros",
+ "derive",
+]
+
+[[example]]
+name = "merge_duplicates"
+path = "examples/merge_duplicates.rs"
+required-features = ["derive"]
+
+[[example]]
+name = "merge_duplicates_2"
+path = "examples/merge_duplicates_2.rs"
+required-features = ["derive"]
+
+[[example]]
+name = "hyperlink"
+path = "examples/hyperlink.rs"
+required-features = [
+ "derive",
+ "color",
+]
+
+[[example]]
+name = "highlight"
+path = "examples/highlight.rs"
+required-features = ["std"]
+
+[[example]]
+name = "highlight_color"
+path = "examples/highlight_color.rs"
+required-features = ["std"]
+
+[[example]]
+name = "border_text"
+path = "examples/border_text.rs"
+required-features = ["std"]
+
+[[example]]
+name = "span"
+path = "examples/span.rs"
+required-features = ["std"]
+
+[[example]]
+name = "nested_table"
+path = "examples/nested_table.rs"
+required-features = ["std"]
+
+[[example]]
+name = "builder"
+path = "examples/builder.rs"
+required-features = ["std"]
+
+[[example]]
+name = "table_width"
+path = "examples/table_width.rs"
+required-features = ["std"]
+
+[[example]]
+name = "table_width_2"
+path = "examples/table_width_2.rs"
+required-features = ["std"]
+
+[[example]]
+name = "height"
+path = "examples/height.rs"
+required-features = ["std"]
+
+[[example]]
+name = "margin"
+path = "examples/margin.rs"
+required-features = ["std"]
+
+[[example]]
+name = "iter_table"
+path = "examples/iter_table.rs"
+required-features = ["std"]
+
+[[example]]
+name = "matrix"
+path = "examples/matrix.rs"
+required-features = ["std"]
+
+[[example]]
+name = "formatting_settings"
+path = "examples/formatting_settings.rs"
+required-features = ["std"]
+
+[[example]]
+name = "settings_list"
+path = "examples/settings_list.rs"
+required-features = ["derive"]
+
+[[example]]
+name = "grid_colors"
+path = "examples/grid_colors.rs"
+required-features = ["derive"]
+
+[[example]]
+name = "compact_table"
+path = "examples/compact_table.rs"
+required-features = []
+
+[[example]]
+name = "compact_table_2"
+path = "examples/compact_table_2.rs"
+required-features = []
+
+[[example]]
+name = "alphabet"
+path = "examples/alphabet.rs"
+required-features = ["std"]
+
+[[example]]
+name = "split"
+path = "examples/split.rs"
+required-features = [
+ "std",
+ "macros",
+]
+
+[[example]]
+name = "pool_table"
+path = "examples/pool_table.rs"
+required-features = ["std"]
+
+[[example]]
+name = "pool_table2"
+path = "examples/pool_table2.rs"
+required-features = ["std"]
+
+[[example]]
+name = "column_names"
+path = "examples/column_names.rs"
+required-features = [
+ "std",
+ "derive",
+]
+
+[[example]]
+name = "colorization"
+path = "examples/colorization.rs"
+required-features = [
+ "std",
+ "derive",
+]
+
+[[example]]
+name = "chess"
+path = "examples/chess.rs"
+required-features = ["std"]
+
+[dependencies.ansi-str]
+version = "0.8"
+optional = true
+
+[dependencies.ansitok]
+version = "0.2"
+optional = true
+
+[dependencies.papergrid]
+version = "0.10"
+default-features = false
+
+[dependencies.tabled_derive]
+version = "0.6"
+optional = true
+
+[dependencies.unicode-width]
+version = "0.1"
+
+[dev-dependencies.owo-colors]
+version = "3.5"
+
+[features]
+color = [
+ "papergrid/color",
+ "ansi-str",
+ "ansitok",
+ "std",
+]
+default = [
+ "derive",
+ "macros",
+]
+derive = [
+ "tabled_derive",
+ "std",
+]
+macros = ["std"]
+std = ["papergrid/std"]
+
+[badges.coveralls]
+branch = "master"
+repository = "https://github.com/zhiburt/tabled"
+service = "github"
+
+[badges.maintenance]
+status = "actively-developed"
diff --git a/vendor/tabled/LICENSE-MIT b/vendor/tabled/LICENSE-MIT
new file mode 100644
index 000000000..6077b9d68
--- /dev/null
+++ b/vendor/tabled/LICENSE-MIT
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2021 Maxim Zhiburt
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/tabled/README.md b/vendor/tabled/README.md
new file mode 100644
index 000000000..0bcc6ef27
--- /dev/null
+++ b/vendor/tabled/README.md
@@ -0,0 +1,92 @@
+[<img alt="github" src="https://img.shields.io/badge/github-zhiburt/tabled-8da0cb?style=for-the-badge&labelColor=555555&logo=github" height="20">](https://github.com/zhiburt/tabled/)
+[<img alt="crates.io" src="https://img.shields.io/crates/v/tabled.svg?style=for-the-badge&color=fc8d62&logo=rust" height="20">](https://crates.io/crates/tabled)
+[<img alt="docs.rs" src="https://img.shields.io/badge/docs.rs-tabled-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rs" height="20">](https://docs.rs/tabled)
+[<img alt="build status" src="https://img.shields.io/github/actions/workflow/status/zhiburt/tabled/ci.yml?branch=master&style=for-the-badge" height="20">](https://github.com/zhiburt/tabled/actions)
+[<img alt="coverage" src="https://img.shields.io/coveralls/github/zhiburt/tabled/master?style=for-the-badge" height="20">](https://coveralls.io/github/zhiburt/tabled)
+[<img alt="dependency status" src="https://deps.rs/repo/github/zhiburt/tabled/status.svg?style=for-the-badge" height="20">](https://deps.rs/repo/github/zhiburt/tabled)
+
+# tabled
+
+An easy to use library for pretty printing tables of Rust `struct`s and `enum`s.
+
+There are more examples and you can find in this [`README`](https://github.com/zhiburt/tabled/blob/master/README.md).
+
+## Usage
+
+To print a list of structs or enums as a table your types should implement the the `Tabled` trait or derive it with a `#[derive(Tabled)]` macro.
+Most of the default types implement the trait out of the box.
+
+Most of a table configuration can be found in [`tabled::settings`](https://docs.rs/tabled/latest/tabled/settings/index.html) module.
+
+```rust
+use tabled::{Table, Tabled};
+
+#[derive(Tabled)]
+struct Language {
+ name: String,
+ designed_by: String,
+ invented_year: usize,
+}
+
+impl Language {
+ fn new(name: &str, designed_by: &str, invented_year: usize) -> Self {
+ Self {
+ name: name.to_string(),
+ designed_by: designed_by.to_string(),
+ invented_year,
+ }
+ }
+}
+
+let languages = vec![
+ Language::new("C", "Dennis Ritchie", 1972),
+ Language::new("Go", "Rob Pike", 2009),
+ Language::new("Rust", "Graydon Hoare", 2010),
+ Language::new("Hare", "Drew DeVault", 2022),
+];
+
+let table = Table::new(languages).to_string();
+
+assert_eq!(
+ table,
+ "+------+----------------+---------------+\n\
+ | name | designed_by | invented_year |\n\
+ +------+----------------+---------------+\n\
+ | C | Dennis Ritchie | 1972 |\n\
+ +------+----------------+---------------+\n\
+ | Go | Rob Pike | 2009 |\n\
+ +------+----------------+---------------+\n\
+ | Rust | Graydon Hoare | 2010 |\n\
+ +------+----------------+---------------+\n\
+ | Hare | Drew DeVault | 2022 |\n\
+ +------+----------------+---------------+"
+);
+```
+
+The same example but we are building a table step by step.
+
+```rust
+use tabled::{builder::Builder, settings::Style};
+
+let mut builder = Builder::new();
+builder.push_record(["C", "Dennis Ritchie", "1972"]);
+builder.push_record(["Go", "Rob Pike", "2009"]);
+builder.push_record(["Rust", "Graydon Hoare", "2010"]);
+builder.push_record(["Hare", "Drew DeVault", "2022"]);
+
+let table = builder.build()
+ .with(Style::ascii_rounded())
+ .to_string();
+
+assert_eq!(
+ table,
+ concat!(
+ ".------------------------------.\n",
+ "| C | Dennis Ritchie | 1972 |\n",
+ "| Go | Rob Pike | 2009 |\n",
+ "| Rust | Graydon Hoare | 2010 |\n",
+ "| Hare | Drew DeVault | 2022 |\n",
+ "'------------------------------'"
+ )
+);
+``` \ No newline at end of file
diff --git a/vendor/tabled/examples/README.md b/vendor/tabled/examples/README.md
new file mode 100644
index 000000000..51c9d2e1c
--- /dev/null
+++ b/vendor/tabled/examples/README.md
@@ -0,0 +1,831 @@
+This file contains an overview of examples.
+
+- `derive` folder contains a list of examples which uses different `#[derive(Tabled)]` attributes.
+- `show` folder contains a program which uses different styles and prints the resulting table.
+- `terminal_size` folder contains a program which spreads the table to the max terminal width and max terminal height.
+ You can use which dimension to use via args `--width`, `--height` by default 2 are used.
+
+Bellow there's a list of results of running some examples.
+
+## table
+
+```
+| name | based_on | is_active | is_cool |
+|---------|----------|-----------|---------|
+| Manjaro | Arch | true | true |
+| Arch | | true | true |
+| Debian | | true | true |
+```
+
+## border_text
+
+```
+ Numbers ─┬────┬────┬────â”
+│ 0 │ 1 │ 2 │ 3 │ 4 │
+ More numbers ─┼────┼────┤
+│ 5 │ 6 │ 7 │ 8 │ 9 │
+│ 10 │ 11 │ 12 │ 13 │ 14 │
+ end. ────┴────┴────┴────┘
+```
+
+## builder_index
+
+```
+┌───────────┬─────────┬──────┬────────â”
+│ │ Manjaro │ Arch │ Debian │
+├───────────┼─────────┼──────┼────────┤
+│ based_on │ Arch │ None │ None │
+├───────────┼─────────┼──────┼────────┤
+│ is_active │ true │ true │ true │
+├───────────┼─────────┼──────┼────────┤
+│ is_cool │ true │ true │ true │
+└───────────┴─────────┴──────┴────────┘
+```
+
+## builder
+
+```
+| https://en.wikipedia.org/wiki/Ocean |
+|---------------+---------------------|
+| The terms "the ocean" or "the sea" |
+| used without specification refer to |
+| the interconnected body of salt wa |
+| ter covering the majority of the Ea |
+| rth's surface |
+| =================================== |
+| # | Ocean |
+| 0 | Atlantic |
+| 1 | Pacific |
+| 2 | Indian |
+| 3 | Southern |
+| 4 | Arctic |
+```
+
+## chess
+
+<picture>
+ <source media="(prefers-color-scheme: dark)" srcset="https://github.com/zhiburt/tabled/assets/20165848/f474bc84-5ed4-4f49-b6e9-fc204c3ecd5d">
+ <img alt="Preview" src="https://github.com/zhiburt/tabled/assets/20165848/68960bba-c5ba-4e0a-85b4-ba4f36bc0ed0">
+</picture>
+
+## col_row_macros
+
+```
++-------------------------------------------+---------------------------------------------+
+| .---------------------------------------. | ┌────────────────────┬─────┬──────────────┠|
+| | name | age | is_validated | | │ name │ age │ is_validated │ |
+| | Jon Doe | 255 | false | | ├────────────────────┼─────┼──────────────┤ |
+| | Mark Nelson | 13 | true | | │ Jack Black │ 51 │ false │ |
+| | Terminal Monitor | 0 | false | | ├────────────────────┼─────┼──────────────┤ |
+| | Adam Blend | 17 | true | | │ Michelle Goldstein │ 44 │ true │ |
+| '---------------------------------------' | └────────────────────┴─────┴──────────────┘ |
++-------------------------------------------+---------------------------------------------+
++-------------------------------------------+
+| .---------------------------------------. |
+| | name | age | is_validated | |
+| | Jon Doe | 255 | false | |
+| | Mark Nelson | 13 | true | |
+| | Terminal Monitor | 0 | false | |
+| | Adam Blend | 17 | true | |
+| '---------------------------------------' |
++-------------------------------------------+
+| .---------------------------------------. |
+| | name | age | is_validated | |
+| | Jon Doe | 255 | false | |
+| | Mark Nelson | 13 | true | |
+| | Terminal Monitor | 0 | false | |
+| | Adam Blend | 17 | true | |
+| '---------------------------------------' |
++-------------------------------------------+
+| .---------------------------------------. |
+| | name | age | is_validated | |
+| | Jon Doe | 255 | false | |
+| | Mark Nelson | 13 | true | |
+| | Terminal Monitor | 0 | false | |
+| | Adam Blend | 17 | true | |
+| '---------------------------------------' |
++-------------------------------------------+
++-------------------------------------------------------------------------------+
+| +-------+-----+--------------+ ┌────────────────────┬─────┬──────────────┠|
+| | name | age | is_validated | │ name │ age │ is_validated │ |
+| +-------+-----+--------------+ ├────────────────────┼─────┼──────────────┤ |
+| | Sam | 31 | true | │ Jack Black │ 51 │ false │ |
+| +-------+-----+--------------+ ├────────────────────┼─────┼──────────────┤ |
+| | Sarah | 26 | true | │ Michelle Goldstein │ 44 │ true │ |
+| +-------+-----+--------------+ └────────────────────┴─────┴──────────────┘ |
++-------------------------------------------------------------------------------+
+| .---------------------------------------. |
+| | name | age | is_validated | |
+| | Jon Doe | 255 | false | |
+| | Mark Nelson | 13 | true | |
+| | Terminal Monitor | 0 | false | |
+| | Adam Blend | 17 | true | |
+| '---------------------------------------' |
++-------------------------------------------------------------------------------+
+```
+
+## color
+
+<picture>
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/zhiburt/tabled/assets/assets/example-color-1-dark.png">
+ <img alt="Preview" src="https://raw.githubusercontent.com/zhiburt/tabled/assets/assets/example-color-1-light.png">
+</picture>
+
+## colored_borders
+
+<picture>
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/zhiburt/tabled/assets/assets/example-colored_borders-1-dark.png">
+ <img alt="Preview" src="https://raw.githubusercontent.com/zhiburt/tabled/assets/assets/example-colored_borders-1-light.png">
+</picture>
+
+## colored_padding
+
+<picture>
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/zhiburt/tabled/assets/assets/example-padding_color-1-dark.png">
+ <img alt="Preview" src="https://raw.githubusercontent.com/zhiburt/tabled/assets/assets/example-padding_color-1-light.png">
+</picture>
+
+## colorization
+
+<picture>
+ <source media="(prefers-color-scheme: dark)" srcset="https://github.com/zhiburt/tabled/assets/20165848/95ef3c5b-a86d-425c-b95a-b689b61734c5">
+ <img alt="Preview" src="https://github.com/zhiburt/tabled/assets/20165848/b6b8af0a-7c1f-4656-b880-c8ecd130c5be">
+</picture>
+
+## column_names
+
+
+<picture>
+ <source media="(prefers-color-scheme: dark)" srcset="https://github.com/zhiburt/tabled/assets/20165848/82d8e285-3c1b-4dd2-a1f4-45fd49f0dabe">
+ <img alt="Preview" src="https://github.com/zhiburt/tabled/assets/20165848/13054c74-0fae-4df1-87e8-60d498d734e4">
+</picture>
+
+## concat
+
+```
+ temperature_c wind_ms latitude longitude
+ 16 3000 111.111 333.333
+ -20 300 5.111 7282.1
+ 40 100 0 0
+ 0 0
+```
+
+## custom_style
+
+```
+┌────────────────────┬─────────────────────────────────â”
+│ name │ first_release developer │
+├────────────────────┼─────────────────────────────────┤
+│ Sublime Text 3 │ 2008 Sublime HQ │
+│ Visual Studio Code │ 2015 Microsoft │
+│ Notepad++ │ 2003 Don Ho │
+│ GNU Emacs │ 1984 Richard Stallman │
+│ Neovim │ 2015 Vim community │
+└────────────────────┴─────────────────────────────────┘
+```
+
+## disable
+
+```
+###########
+# name # based_on | is_cool |
+###########----------|---------|
+# Debian # | true |
+###########
+# Arch # | true |
+###########
+# Manjaro # Arch | true |
+###########
+```
+
+## expanded_display
+
+```
+-[ RECORD 0 ]------
+name | Manjaro
+based_on | Arch
+is_active | true
+is_cool | true
+-[ RECORD 1 ]------
+name | Arch
+based_on |
+is_active | true
+is_cool | true
+-[ RECORD 2 ]------
+name | Debian
+based_on |
+is_active | true
+is_cool | true
+```
+
+## extract
+
+```
+┌───────────────┬───────────────────────────┬──────────────────┬────────────────────â”
+│ artist │ name │ released │ level_of_greatness │
+├───────────────┼───────────────────────────┼──────────────────┼────────────────────┤
+│ Pink Floyd │ The Dark Side of the Moon │ 01 March 1973 │ Unparalleled │
+├───────────────┼───────────────────────────┼──────────────────┼────────────────────┤
+│ Fleetwood Mac │ Rumours │ 04 February 1977 │ Outstanding │
+├───────────────┼───────────────────────────┼──────────────────┼────────────────────┤
+│ Led Zeppelin │ Led Zeppelin IV │ 08 November 1971 │ Supreme │
+└───────────────┴───────────────────────────┴──────────────────┴────────────────────┘
+
+┼───────────────────────────┼──────────────────┼──────────────┤
+│ The Dark Side of the Moon │ 01 March 1973 │ Unparalleled │
+┼───────────────────────────┼──────────────────┼──────────────┤
+│ Rumours │ 04 February 1977 │ Outstanding │
+┼───────────────────────────┼──────────────────┼──────────────┤
+
+┌───────────────────────────┬──────────────────┬───────────────â”
+│ The Dark Side of the Moon │ 01 March 1973 │ Unparalleled │
+├───────────────────────────┼──────────────────┼───────────────┤
+│ Rumours │ 04 February 1977 │ +Outstanding+ │
+└───────────────────────────┴──────────────────┴───────────────┘
+```
+
+## format
+
+```
+ 0 | 1 | 2
+---------------------------------------------+--------------------------------+-------------------------
+ 8ae4e8957caeaa467acbce963701e227af00a1c7... | bypass open-source transmitter | index neural panel
+ 48c76de71bd685486d97dc8f4f05aa6fcc0c3f86... | program online alarm | copy bluetooth card
+ 6ffc2a2796229fc7bf59471ad907f58b897005d0... | CSV | reboot mobile capacitor
+```
+
+## formatting_settings
+
+```
+╭───────────────────╮
+│ &str │
+├───────────────────┤
+│ │
+│ [ │
+│ "foo", │
+│ { │
+│ "bar": 1, │
+│ "baz": [ │
+│ 2, │
+│ 3 │
+│ ] │
+│ } │
+│ ] │
+╰───────────────────╯
+
+╭───────────────────╮
+│ &str │
+├───────────────────┤
+│ │
+│ [ │
+│ "foo", │
+│ { │
+│ "bar": 1, │
+│ "baz": [ │
+│ 2, │
+│ 3 │
+│ ] │
+│ } │
+│ ] │
+╰───────────────────╯
+
+╭───────────────────╮
+│ &str │
+├───────────────────┤
+│ [ │
+│ "foo", │
+│ { │
+│ "bar": 1, │
+│ "baz": [ │
+│ 2, │
+│ 3 │
+│ ] │
+│ } │
+│ ] │
+│ │
+╰───────────────────╯
+```
+
+## highlight
+
+```
+*************
+* 0 │ 1 │ 2 *
+*****───*****
+│ A * B * C │
+├───*───*───┤
+│ D * E * F │
+├───*───*───┤
+│ G * H * I │
+└───*****───┘
+```
+
+## margin
+
+```
+vvvvvvvvvvvvvvvvvv
+vvvvvvvvvvvvvvvvvv
+<<<<=== === ===>>>
+<<<< 0 1 2 >>>
+<<<<=== === ===>>>
+<<<< A B C >>>
+<<<< D E F >>>
+<<<< G H I >>>
+<<<<=== === ===>>>
+^^^^^^^^^^^^^^^^^^
+```
+
+## nested_table
+
+```
++-----------------------------------------------+
+| +---------------------+ |
+| | Animal | |
+| +---------------------+ |
+| | +-----------------+ | |
+| | | +age: Int | | |
+| | | +gender: String | | |
+| | +-----------------+ | |
+| | +-----------------+ | |
+| | | +isMammal() | | |
+| | | +mate() | | |
+| | +-----------------+ | |
+| +---------------------+ |
+| â–² |
+| | |
+| | |
+| +-----------------------------------+ |
+| | Duck | |
+| +-----------------------------------+ |
+| | +-------------------------------+ | |
+| | | +beakColor: String = "yellow" | | |
+| | +-------------------------------+ | |
+| | +-------------------------------+ | |
+| | | +swim() | | |
+| | | +quack() | | |
+| | +-------------------------------+ | |
+| +-----------------------------------+ |
++-----------------------------------------------+
+```
+
+## nested_table_2
+
+```
+┌───────┬─────────────────────────────────────────────────┬──────────────────────────────────────────────â”
+│ name │ main_os │ switch_os │
+├───────┼─────────────────────────────────────────────────┼──────────────────────────────────────────────┤
+│ Azure │ â•”â•â•â•â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•— │ â•”â•â•â•â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•— │
+│ │ ║ name ║ based_on ║ is_active ║ is_cool ║ │ ║ name ║ based_on ║ is_active ║ is_cool ║ │
+│ │ â• â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•£ │ â• â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•£ │
+│ │ ║ Windows ║ Independent ║ true ║ true ║ │ ║ Manjaro ║ Arch ║ true ║ true ║ │
+│ │ â•šâ•â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â• │ â•šâ•â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â• │
+├───────┼─────────────────────────────────────────────────┼──────────────────────────────────────────────┤
+│ AWS │ â•”â•â•â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•— │ â•”â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•— │
+│ │ ║ name ║ based_on ║ is_active ║ is_cool ║ │ ║ name ║ based_on ║ is_active ║ is_cool ║ │
+│ │ â• â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•£ │ â• â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•£ │
+│ │ ║ Debian ║ Independent ║ true ║ true ║ │ ║ Arch ║ Independent ║ true ║ true ║ │
+│ │ â•šâ•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â• │ â•šâ•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â• │
+├───────┼─────────────────────────────────────────────────┼──────────────────────────────────────────────┤
+│ GCP │ â•”â•â•â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•— │ â•”â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•— │
+│ │ ║ name ║ based_on ║ is_active ║ is_cool ║ │ ║ name ║ based_on ║ is_active ║ is_cool ║ │
+│ │ â• â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•£ │ â• â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•£ │
+│ │ ║ Debian ║ Independent ║ true ║ true ║ │ ║ Arch ║ Independent ║ true ║ true ║ │
+│ │ â•šâ•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â• │ â•šâ•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â• │
+└───────┴─────────────────────────────────────────────────┴──────────────────────────────────────────────┘
+```
+
+## nested_table_3
+
+```
+*************************************************
+* Thank You *
+*************************************************
+| +------------+------------------------------+ |
+| | Contributors | |
+| +------------+------------------------------+ |
+| | author | profile | |
+| +------------+------------------------------+ |
+| | kozmod | https:/github.com/kozmod | |
+| +------------+------------------------------+ |
+| | IsaacCloos | https:/github.com/IsaacCloos | |
+| +------------+------------------------------+ |
+| +-----------+-----------------------------+ |
+| | Issuers | |
+| +-----------+-----------------------------+ |
+| | author | profile | |
+| +-----------+-----------------------------+ |
+| | aharpervc | https:/github.com/aharpervc | |
+| +-----------+-----------------------------+ |
++-----------------------------------------------+
+```
+
+## panel
+
+```
+┌───┬────────────────────────────────────────────────────────────────────┬───â”
+│ S │ Tabled Releases │ S │
+│ o │ │ o │
+│ m │ │ m │
+│ e │ │ e │
+│ ├─────────┬────────────────┬───────────┬─────────────────────────────┤ │
+│ t │ version │ published_date │ is_active │ major_feature │ t │
+│ e │ │ │ │ │ e │
+│ x ├─────────┼────────────────┼───────────┼─────────────────────────────┤ x │
+│ t │ 0.2.1 │ 2021-06-23 │ true │ #[header(inline)] attribute │ t │
+│ │ │ │ │ │ │
+│ g ├─────────┼────────────────┼───────────┼─────────────────────────────┤ g │
+│ o │ 0.2.0 │ 2021-06-19 │ false │ API changes │ o │
+│ e │ │ │ │ │ e │
+│ s ├─────────┼────────────────┼───────────┼─────────────────────────────┤ s │
+│ │ 0.1.4 │ 2021-06-07 │ false │ display_with attribute │ │
+│ h │ │ │ │ │ h │
+│ e ├─────────┴────────────────┴───────────┴─────────────────────────────┤ e │
+│ r │ N - 3 │ r │
+│ e │ │ e │
+└───┴────────────────────────────────────────────────────────────────────┴───┘
+```
+
+## print_matrix
+
+```
+┌────┬────┬────┬────┬────┬────┬────┬────┬────┬─────â”
+│ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │
+├────┼────┼────┼────┼────┼────┼────┼────┼────┼─────┤
+│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 10 │
+├────┼────┼────┼────┼────┼────┼────┼────┼────┼─────┤
+│ 2 │ 4 │ 6 │ 8 │ 10 │ 12 │ 14 │ 16 │ 18 │ 20 │
+├────┼────┼────┼────┼────┼────┼────┼────┼────┼─────┤
+│ 3 │ 6 │ 9 │ 12 │ 15 │ 18 │ 21 │ 24 │ 27 │ 30 │
+├────┼────┼────┼────┼────┼────┼────┼────┼────┼─────┤
+│ 4 │ 8 │ 12 │ 16 │ 20 │ 24 │ 28 │ 32 │ 36 │ 40 │
+├────┼────┼────┼────┼────┼────┼────┼────┼────┼─────┤
+│ 5 │ 10 │ 15 │ 20 │ 25 │ 30 │ 35 │ 40 │ 45 │ 50 │
+├────┼────┼────┼────┼────┼────┼────┼────┼────┼─────┤
+│ 6 │ 12 │ 18 │ 24 │ 30 │ 36 │ 42 │ 48 │ 54 │ 60 │
+├────┼────┼────┼────┼────┼────┼────┼────┼────┼─────┤
+│ 7 │ 14 │ 21 │ 28 │ 35 │ 42 │ 49 │ 56 │ 63 │ 70 │
+├────┼────┼────┼────┼────┼────┼────┼────┼────┼─────┤
+│ 8 │ 16 │ 24 │ 32 │ 40 │ 48 │ 56 │ 64 │ 72 │ 80 │
+├────┼────┼────┼────┼────┼────┼────┼────┼────┼─────┤
+│ 9 │ 18 │ 27 │ 36 │ 45 │ 54 │ 63 │ 72 │ 81 │ 90 │
+├────┼────┼────┼────┼────┼────┼────┼────┼────┼─────┤
+│ 10 │ 20 │ 30 │ 40 │ 50 │ 60 │ 70 │ 80 │ 90 │ 100 │
+└────┴────┴────┴────┴────┴────┴────┴────┴────┴─────┘
+```
+
+## rotate
+
+```
++--------------+------------------------+---------------------------+--------------------------+
+| link | https://getfedora.org/ | https://www.opensuse.org/ | https://endeavouros.com/ |
++--------------+------------------------+---------------------------+--------------------------+
+| destribution | Fedora | OpenSUSE | Endeavouros |
++--------------+------------------------+---------------------------+--------------------------+
+| id | 0 | 2 | 3 |
++--------------+------------------------+---------------------------+--------------------------+
+```
+
+## shadow
+
+```
+┌──┬┠╔â•â•â•¦â•— ╓──┬╖ â•’â•â•¤â••
+│ ││ ║ ║║ ║ │║ │ ││
+├──┼┤ â• â•â•â•¬â•£ ╟──┼╢ â•žâ•â•ªâ•¡
+└──┴┘ â•šâ•â•â•©â• ╙──┴╜ ╘â•â•§â•›
+┌──────────────────â”
+│ â•”â•â•â•â•— Some text │▒▒
+│ â•šâ•â•¦â•â• In the box│▒▒
+â•žâ•â•¤â•â•â•©â•â•â•¤â•â•â•â•â•â•â•â•â•â•â•¡â–’â–’
+│ ├──┬──┤ │▒▒
+│ └──┴──┘ │▒▒
+└──────────────────┘▒▒
+ â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’
+ â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’
+```
+
+## span
+
+```
+┌───────────────────────────────────────────────────────────────────────────────â”
+│ span all 5 columns │
+├───────────────────────────────────────────────────────────────┬───────────────┤
+│ span 4 columns │ just 1 column │
+├───────────────────────────────┬───────────────┬───────────────┼───────────────┤
+│ span 2 columns │ just 1 column │ │ │
+├───────────────┬───────────────┴───────────────┤ just 1 column │ │
+│ just 1 column │ span 2 columns │ span │ just 1 column │
+│ │ span │ 3 │ span │
+├───────────────┤ 2 │ columns │ 4 │
+│ just 1 column │ columns │ │ columns │
+├───────────────┼───────────────┬───────────────┼───────────────┤ │
+│ just 1 column │ just 1 column │ just 1 column │ just 1 column │ │
+└───────────────┴───────────────┴───────────────┴───────────────┴───────────────┘
+```
+
+## table_width
+
+```
+| 0 | 1 |
+|------------------|-----------|
+| Hello World!!! | 3.3.22.2 |
+| Guten Morgen | 1.1.1.1 |
+| Добры вечар | 127.0.0.1 |
+| Bonjour le monde | |
+| Ciao mondo | |
+
+| 0 | 1 |
+|------------|-----|
+| Hello W... | ... |
+| Guten M... | ... |
+| Добры в... | ... |
+| Bonjour... | |
+| Ciao mondo | |
+
+| 0 | 1 |
+|-------|-----|
+| Hello | ... |
+| W... | |
+| Guten | ... |
+| M... | |
+| Добры | ... |
+| в... | |
+| Bonjo | |
+| ur... | |
+| Ciao | |
+| mondo | |
+
+| 0 | 1 |
+|---------------|------------|
+| Hello | ... |
+| W... | |
+| Guten | ... |
+| M... | |
+| Добры | ... |
+| в... | |
+| Bonjo | |
+| ur... | |
+| Ciao | |
+| mondo | |
+```
+
+## table_width_2
+
+```
+.----------------------------------------.
+| usize | &str |
+| 0 | # Changelog |
+| 1 | All notable changes to this |
+| | projectwill be documented in |
+| | thisfile. |
+| 2 | The format is based on [Keep a |
+| | Changelog](https://keepachange |
+| | log.com/en/1.0.0/), |
+| 3 | and this project adheres to |
+| | [SemanticVersioning](https://s |
+| | emver.org/spec/v2.0.0.html). |
+| 4 | ## Unreleased |
+'-------+--------------------------------'
+```
+
+## alphabet
+
+```
++---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
+| a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |
++---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
+```
+
+## compact_table
+
+```
+| Debian | | true |
+|-------|-----|-----|
+| Arch | | true |
+| Manjaro | Arch | true |
+```
+
+## compact_table_2
+
+```
+ Debian | 1.1.1.1 | true
+---------+-----------+------
+ Arch | 127.1.1.1 | true
+ Manjaro | Arch | true
+```
+
+## extended_display
+
+```
+-[ RECORD 0 ]------
+name | Manjaro
+based_on | Arch
+is_active | true
+is_cool | true
+-[ RECORD 1 ]------
+name | Arch
+based_on |
+is_active | true
+is_cool | true
+-[ RECORD 2 ]------
+name | Debian
+based_on |
+is_active | true
+is_cool | true
+```
+
+## height
+
+```
+Table
+
+| &str | i32 |
+|-------------|-----|
+| Multi | 123 |
+| line | |
+| string | |
+| Single line | 234 |
+
+Table increase height to 10
+
+| &str | i32 |
+| | |
+| | |
+|-------------|-----|
+| Multi | 123 |
+| line | |
+| string | |
+| | |
+| Single line | 234 |
+| | |
+
+Table decrease height to 4
+
+| &str | i32 |
+|-------------|-----|
+| Multi | 123 |
+| Single line | 234 |
+Table decrease height to 0
+
+|--|--|
+```
+
+## iter_table
+
+```
+.----------------------------------------------------------------------------------------.
+| 0 | ok | //! The example can be run by this command |
+| 1 | ok | //! `cargo run --example iter_table` |
+| 2 | ok | |
+| 3 | ok | use std::io::BufRead; |
+| 4 | ok | |
+| 5 | ok | use tabled::{settings::Style, tables::IterTable}; |
+| 6 | ok | |
+| 7 | ok | fn main() { |
+| 8 | ok | let path = file!(); |
+| 9 | ok | let file = std::fs::File::open(path).unwrap(); |
+| 10 | ok | let reader = std::io::BufReader::new(file); |
+| 11 | ok | let iterator = reader.lines().enumerate().map(|(i, line)| match line { |
+| 12 | ok | Ok(line) => [i.to_string(), String::from("ok"), line], |
+| 13 | ok | Err(err) => [i.to_string(), String::from("error"), err.to_string()], |
+| 14 | ok | }); |
+| 15 | ok | |
+| 16 | ok | let table = IterTable::new(iterator).with(Style::ascii_rounded()); |
+| 17 | ok | |
+| 18 | ok | table.build(std::io::stdout()).unwrap(); |
+| 19 | ok | println!() |
+| 20 | ok | } |
+'----------------------------------------------------------------------------------------'
+```
+
+## margin
+
+```
+vvvvvvvvvvvvvvvvvv
+vvvvvvvvvvvvvvvvvv
+<<<<=== === ===>>>
+<<<< 0 1 2 >>>
+<<<<=== === ===>>>
+<<<< A B C >>>
+<<<< D E F >>>
+<<<< G H I >>>
+<<<<=== === ===>>>
+^^^^^^^^^^^^^^^^^^
+```
+
+## matrix
+
+```
+┌────┬────┬────┬────┬────┬────┬────┬────┬────┬─────â”
+│ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │
+├────┼────┼────┼────┼────┼────┼────┼────┼────┼─────┤
+│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 10 │
+├────┼────┼────┼────┼────┼────┼────┼────┼────┼─────┤
+│ 2 │ 4 │ 6 │ 8 │ 10 │ 12 │ 14 │ 16 │ 18 │ 20 │
+├────┼────┼────┼────┼────┼────┼────┼────┼────┼─────┤
+│ 3 │ 6 │ 9 │ 12 │ 15 │ 18 │ 21 │ 24 │ 27 │ 30 │
+├────┼────┼────┼────┼────┼────┼────┼────┼────┼─────┤
+│ 4 │ 8 │ 12 │ 16 │ 20 │ 24 │ 28 │ 32 │ 36 │ 40 │
+├────┼────┼────┼────┼────┼────┼────┼────┼────┼─────┤
+│ 5 │ 10 │ 15 │ 20 │ 25 │ 30 │ 35 │ 40 │ 45 │ 50 │
+├────┼────┼────┼────┼────┼────┼────┼────┼────┼─────┤
+│ 6 │ 12 │ 18 │ 24 │ 30 │ 36 │ 42 │ 48 │ 54 │ 60 │
+├────┼────┼────┼────┼────┼────┼────┼────┼────┼─────┤
+│ 7 │ 14 │ 21 │ 28 │ 35 │ 42 │ 49 │ 56 │ 63 │ 70 │
+├────┼────┼────┼────┼────┼────┼────┼────┼────┼─────┤
+│ 8 │ 16 │ 24 │ 32 │ 40 │ 48 │ 56 │ 64 │ 72 │ 80 │
+├────┼────┼────┼────┼────┼────┼────┼────┼────┼─────┤
+│ 9 │ 18 │ 27 │ 36 │ 45 │ 54 │ 63 │ 72 │ 81 │ 90 │
+├────┼────┼────┼────┼────┼────┼────┼────┼────┼─────┤
+│ 10 │ 20 │ 30 │ 40 │ 50 │ 60 │ 70 │ 80 │ 90 │ 100 │
+└────┴────┴────┴────┴────┴────┴────┴────┴────┴─────┘
+```
+
+## merge_duplicates
+
+```
+┌────────────┬─────────┬────────â”
+│ db │ table │ total │
+├────────────┼─────────┼────────┤
+│ database_1 │ table_1 │ 10712 │
+│ ├─────────┼────────┤
+│ │ table_2 │ 57 │
+│ ├─────────┤ │
+│ │ table_3 │ │
+├────────────┼─────────┼────────┤
+│ database_2 │ table_1 │ 72 │
+│ ├─────────┼────────┤
+│ │ table_2 │ 75 │
+├────────────┼─────────┼────────┤
+│ database_3 │ table_1 │ 20 │
+│ ├─────────┼────────┤
+│ │ table_2 │ 21339 │
+│ ├─────────┼────────┤
+│ │ table_3 │ 141723 │
+└────────────┴─────────┴────────┘
+```
+
+## merge_duplicates_2
+
+```
+╭───────────┬───────────────────────────────────────────────────────────────────────────╮
+│ │ 0 1 2 3 4 5 6 7 │
+├───────────┼───────────────────────────────────────────────────────────────────────────┤
+│ db │ database_1 database_2 database_3 │
+│ origin_db │ database_1 database_3 │
+│ table │ table_1 table_2 table_3 table_1 table_2 table_1 table_2 table_3 │
+│ total │ 10712 57 72 75 20 21339 141723 │
+╰───────────┴───────────────────────────────────────────────────────────────────────────╯
+```
+
+## settings_list
+
+```
++----------------------+-----------------+--------------------+
+| name | first_release | developer |
++----------------------+-----------------+--------------------+
+| Sublime Text 3 | 2008 | Sublime HQ |
++----------------------+-----------------+--------------------+
+| Visual Studio Code | 2015 | Microsoft |
++----------------------+-----------------+--------------------+
+| Notepad++ | 2003 | Don Ho |
++----------------------+-----------------+--------------------+
+| GNU Emacs | 1984 | Richard Stallman |
++----------------------+-----------------+--------------------+
+| Neovim | 2015 | Vim community |
++----------------------+-----------------+--------------------+
+```
+
+## split
+
+```
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+│ a │ b │ c │ d │ e │ f │ g │ h │ i │ j │ k │ l │ m │ n │ o │ p │ q │ r │ s │ t │ u │ v │ w │ x │ y │ z │
+└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┠┌───┬───┠┌───┬───┠┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+│ a │ b │ c │ d │ e │ f │ g │ h │ i │ j │ k │ l │ │ a │ b │ │ a │ b │ │ a │ y │ b │ z │ c │ d │ e │ f │ g │ h │ i │ j │ k │ l │
+├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ ├───┼───┤ ├───┼───┤ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+│ m │ n │ o │ p │ q │ r │ s │ t │ u │ v │ w │ x │ │ c │ d │ │ m │ n │ │ m │ │ n │ │ o │ p │ q │ r │ s │ t │ u │ v │ w │ x │
+├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ ├───┼───┤ ├───┼───┤ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+│ y │ z │ │ │ │ │ │ │ │ │ │ │ │ e │ f │ │ y │ z │ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───â”
+└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘ ├───┼───┤ ├───┼───┤ │ a │ b │ c │ d │ e │ f │ g │ h │ i │ j │ k │ l │ y │ z │
+ │ g │ h │ │ c │ d │ ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
+ ├───┼───┤ ├───┼───┤ │ m │ n │ o │ p │ q │ r │ s │ t │ u │ v │ w │ x │ │ │
+ │ i │ j │ │ o │ p │ └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
+ ├───┼───┤ ├───┼───┤
+ │ k │ l │ │ e │ f │
+ ├───┼───┤ ├───┼───┤
+ │ m │ n │ │ q │ r │
+ ├───┼───┤ ├───┼───┤
+ │ o │ p │ │ g │ h │
+ ├───┼───┤ ├───┼───┤
+ │ q │ r │ │ s │ t │
+ ├───┼───┤ ├───┼───┤
+ │ s │ t │ │ i │ j │
+ ├───┼───┤ ├───┼───┤
+ │ u │ v │ │ u │ v │
+ ├───┼───┤ ├───┼───┤
+ │ w │ x │ │ k │ l │
+ ├───┼───┤ ├───┼───┤
+ │ y │ z │ │ w │ x │
+ └───┴───┘ └───┴───┘
+``` \ No newline at end of file
diff --git a/vendor/tabled/examples/alphabet.rs b/vendor/tabled/examples/alphabet.rs
new file mode 100644
index 000000000..5cc8250ad
--- /dev/null
+++ b/vendor/tabled/examples/alphabet.rs
@@ -0,0 +1,13 @@
+//! This example demonstrates instantiating a [`Table`] from an [`IntoIterator`] compliant object.
+//!
+//! * Note how [`Range`] [expression syntax](https://doc.rust-lang.org/reference/expressions/range-expr.html)
+//! is used to idiomatically represent the English alphabet.
+
+use std::iter::FromIterator;
+
+use tabled::Table;
+
+fn main() {
+ let table = Table::from_iter(['a'..='z']);
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/border_text.rs b/vendor/tabled/examples/border_text.rs
new file mode 100644
index 000000000..bbdb7673e
--- /dev/null
+++ b/vendor/tabled/examples/border_text.rs
@@ -0,0 +1,44 @@
+//! This example demonstrates inserting text into the borders
+//! of a [`Table`] with [`BorderText`]; a powerful labeling tool.
+//!
+//! * [`BorderText`] currently supports:
+//! * Horizontal border placement
+//! * Placement starting column offset
+//! * Text colorization
+//!
+//! * Note how the flexibility of [`Style`] is utilized
+//! to remove horizontal borders from the table entirely,
+//! and then granularly reinserts one for a highly customized
+//! visualization.
+//!
+//! * Note how the [`Rows`] utility object is used to idiomatically
+//! reference the first and last rows of a [`Table`] without writing
+//! the necessary logic by hand.
+//!
+//! * 🚀 Combining several easy-to-use tools,
+//! to create unique data representations is what makes [`tabled`] great!
+
+use tabled::{
+ settings::{
+ object::Rows,
+ style::{BorderText, HorizontalLine, Style},
+ },
+ Table,
+};
+
+fn main() {
+ let data = [[5, 6, 7, 8, 9], [10, 11, 12, 13, 14]];
+
+ let table = Table::new(data)
+ .with(
+ Style::modern()
+ .remove_horizontal()
+ .horizontals([HorizontalLine::new(1, Style::modern().get_horizontal())]),
+ )
+ .with(BorderText::new(" Numbers ").horizontal(Rows::first()))
+ .with(BorderText::new(" More numbers ").horizontal(1))
+ .with(BorderText::new(" end. ").horizontal(Rows::last()))
+ .to_string();
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/builder.rs b/vendor/tabled/examples/builder.rs
new file mode 100644
index 000000000..6baf29c24
--- /dev/null
+++ b/vendor/tabled/examples/builder.rs
@@ -0,0 +1,38 @@
+//! This example demonstrates an alternative method for creating a [`Table`].
+//! [`Builder`] is an efficient implementation of the [builder design pattern](https://en.wikipedia.org/wiki/Builder_pattern).
+//!
+//! > The intent of the Builder design pattern is to separate the construction of a complex object from its representation.
+//! > -- <cite>Wikipedia</cite>
+//!
+//! * Note how [Builder] can be used to define a table's shape manually
+//! and can be populated through iteration if it is mutable. This flexibility
+//! is useful when you don't have direct control over the datasets you intend to [table](tabled).
+
+use tabled::{
+ builder::Builder,
+ settings::{object::Rows, Modify, Panel, Style, Width},
+};
+
+fn main() {
+ let message = r#"The terms "the ocean" or "the sea" used without specification refer to the interconnected body of salt water covering the majority of the Earth's surface"#;
+ let link = r#"https://en.wikipedia.org/wiki/Ocean"#;
+
+ let oceans = ["Atlantic", "Pacific", "Indian", "Southern", "Arctic"];
+
+ let mut builder = Builder::default();
+ builder.set_header(["#", "Ocean"]);
+ for (i, ocean) in oceans.iter().enumerate() {
+ builder.push_record([i.to_string(), ocean.to_string()]);
+ }
+
+ let table = builder
+ .build()
+ .with(Panel::header(message))
+ .with(Panel::header(link))
+ .with(Panel::horizontal(2, "=".repeat(link.len())))
+ .with(Modify::new(Rows::single(1)).with(Width::wrap(link.len())))
+ .with(Style::markdown())
+ .to_string();
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/builder_index.rs b/vendor/tabled/examples/builder_index.rs
new file mode 100644
index 000000000..9a53eb566
--- /dev/null
+++ b/vendor/tabled/examples/builder_index.rs
@@ -0,0 +1,50 @@
+//! This example demonstrates evolving the standard [`Builder`] to an [`IndexBuilder`],
+//! and then manipulating the constructing table with a newly prepended index column.
+//!
+//! * An [`IndexBuilder`] is capable of several useful manipulations, including:
+//! * Giving the new index column a name
+//! * Transposing the index column around a table
+//! * Choosing a location for the new index column besides 0; the default
+//!
+//! * Note that like with any builder pattern the [`IndexBuilder::build()`] function
+//! is necessary to produce a displayable [`Table`].
+
+use tabled::{settings::Style, Table, Tabled};
+
+#[derive(Tabled)]
+struct Distribution {
+ name: &'static str,
+ based_on: &'static str,
+ is_active: bool,
+ is_cool: bool,
+}
+
+impl Distribution {
+ fn new(name: &'static str, based_on: &'static str, is_active: bool, is_cool: bool) -> Self {
+ Self {
+ name,
+ based_on,
+ is_active,
+ is_cool,
+ }
+ }
+}
+
+fn main() {
+ let data = [
+ Distribution::new("Manjaro", "Arch", true, true),
+ Distribution::new("Arch", "None", true, true),
+ Distribution::new("Debian", "None", true, true),
+ ];
+
+ let mut table = Table::builder(data)
+ .index()
+ .column(0)
+ .name(None)
+ .transpose()
+ .build();
+
+ table.with(Style::modern());
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/chess.rs b/vendor/tabled/examples/chess.rs
new file mode 100644
index 000000000..db83218c8
--- /dev/null
+++ b/vendor/tabled/examples/chess.rs
@@ -0,0 +1,37 @@
+//! This example demonstrates using the [`Color`] [setting](tabled::settings) to
+//! stylize text, backgrounds, and borders.
+//!
+//! * 🚩 This example requires the `color` feature.
+//!
+//! * Note how [`Format::content()`] is used to break out [`CellOption`]
+//! specifications. This is helpful for organizing extensive [`Table`] configurations.
+
+use std::iter::FromIterator;
+
+use tabled::{
+ builder::Builder,
+ settings::{style::Style, themes::Colorization, Color},
+};
+
+fn main() {
+ let board = [
+ ["♜", "♞", "â™", "â™›", "♚", "â™", "♞", "♜"],
+ ["♟", "♟", "♟", "♟", "♟", "♟", "♟", "♟"],
+ [" ", " ", " ", " ", " ", " ", " ", " "],
+ [" ", " ", " ", " ", " ", " ", " ", " "],
+ [" ", " ", " ", " ", " ", " ", " ", " "],
+ [" ", " ", " ", " ", " ", " ", " ", " "],
+ ["â™™", "â™™", "â™™", "â™™", "â™™", "â™™", "â™™", "â™™"],
+ ["♖", "♘", "♗", "♕", "♔", "♗", "♘", "♖"],
+ ];
+
+ let color_white = Color::BG_WHITE | Color::FG_BLACK;
+ let color_black = Color::FG_WHITE | Color::BG_BLACK;
+
+ let mut table = Builder::from_iter(board).build();
+ table
+ .with(Style::empty())
+ .with(Colorization::chess(color_white, color_black));
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/col_row_macros.rs b/vendor/tabled/examples/col_row_macros.rs
new file mode 100644
index 000000000..1a676eb67
--- /dev/null
+++ b/vendor/tabled/examples/col_row_macros.rs
@@ -0,0 +1,62 @@
+//! This example demonstrates using the [`col!`] and [`row!`] macros to easily
+//! organize multiple tables together into a single, new [`Table`] display.
+//!
+//! * 🚩 This example requires the `macros` feature.
+//!
+//! * Note how both macros can be used in combination to layer
+//! several table arrangements together.
+//!
+//! * Note how [`col!`] and [`row!`] support idiomatic argument duplication
+//! with the familiar `[T; N]` syntax.
+
+use tabled::{
+ col, row,
+ settings::{Alignment, Style},
+ Table, Tabled,
+};
+
+#[derive(Tabled)]
+struct Person {
+ name: String,
+ age: u8,
+ is_validated: bool,
+}
+
+impl Person {
+ fn new(name: &str, age: u8, is_validated: bool) -> Self {
+ Self {
+ name: name.into(),
+ age,
+ is_validated,
+ }
+ }
+}
+
+fn main() {
+ let validated = [Person::new("Sam", 31, true), Person::new("Sarah", 26, true)];
+
+ let not_validated = [
+ Person::new("Jack Black", 51, false),
+ Person::new("Michelle Goldstein", 44, true),
+ ];
+
+ let unsure = [
+ Person::new("Jon Doe", 255, false),
+ Person::new("Mark Nelson", 13, true),
+ Person::new("Terminal Monitor", 0, false),
+ Person::new("Adam Blend", 17, true),
+ ];
+
+ let table_a = Table::new(&validated).with(Style::ascii()).to_string();
+ let table_b = Table::new(&not_validated).with(Style::modern()).to_string();
+ let table_c = Table::new(&unsure).with(Style::ascii_rounded()).to_string();
+
+ let row_table = row![table_c, table_b];
+
+ let col_table = col![table_c; 3];
+
+ let mut row_col_table = col![row![table_a, table_b].with(Style::empty()), table_c];
+ row_col_table.with(Alignment::center());
+
+ println!("{row_table}\n{col_table}\n{row_col_table}",);
+}
diff --git a/vendor/tabled/examples/color.rs b/vendor/tabled/examples/color.rs
new file mode 100644
index 000000000..b7064b306
--- /dev/null
+++ b/vendor/tabled/examples/color.rs
@@ -0,0 +1,74 @@
+//! This example demonstrates using the [`Color`] [setting](tabled::settings) to
+//! stylize text, backgrounds, and borders.
+//!
+//! * 🚩 This example requires the `color` feature.
+//!
+//! * Note how [`Format::content()`] is used to break out [`CellOption`]
+//! specifications. This is helpful for organizing extensive [`Table`] configurations.
+
+use std::convert::TryFrom;
+
+use owo_colors::OwoColorize;
+
+use tabled::{
+ settings::{
+ object::{Columns, Rows},
+ style::{BorderColor, Style},
+ Color, Format, Modify,
+ },
+ Table, Tabled,
+};
+
+#[derive(Tabled)]
+struct Bsd {
+ distribution: &'static str,
+ year_of_first_release: usize,
+ is_active: bool,
+}
+
+impl Bsd {
+ fn new(distribution: &'static str, year_of_first_release: usize, is_active: bool) -> Self {
+ Self {
+ distribution,
+ year_of_first_release,
+ is_active,
+ }
+ }
+}
+
+fn main() {
+ let data = vec![
+ Bsd::new("BSD", 1978, false),
+ Bsd::new("SunOS", 1982, false),
+ Bsd::new("NetBSD", 1993, true),
+ Bsd::new("FreeBSD", 1993, true),
+ Bsd::new("OpenBSD", 1995, true),
+ ];
+
+ let red = Format::content(|s| s.red().on_bright_white().to_string());
+ let blue = Format::content(|s| s.blue().to_string());
+ let green = Format::content(|s| s.green().to_string());
+
+ let color_red = Color::try_from(' '.red().to_string()).unwrap();
+ let color_purple = Color::try_from(' '.purple().to_string()).unwrap();
+
+ let yellow_color = Color::try_from(' '.yellow().to_string()).unwrap();
+
+ let first_row_style = Modify::new(Rows::first()).with(
+ BorderColor::default()
+ .bottom(color_red)
+ .corner_bottom_left(color_purple.clone())
+ .corner_bottom_right(color_purple),
+ );
+
+ let mut table = Table::new(data);
+ table
+ .with(Style::psql())
+ .with(yellow_color)
+ .with(first_row_style)
+ .with(Modify::new(Columns::single(0)).with(red))
+ .with(Modify::new(Columns::single(1)).with(green))
+ .with(Modify::new(Columns::single(2)).with(blue));
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/colored_borders.rs b/vendor/tabled/examples/colored_borders.rs
new file mode 100644
index 000000000..0bbdb4ac4
--- /dev/null
+++ b/vendor/tabled/examples/colored_borders.rs
@@ -0,0 +1,65 @@
+//! This example demonstrates using the [`RawStyle`] [setting](tabled::settings) to
+//! to granularly specify border colors.
+//!
+//! * 🚩 This example requires the `color` feature.
+//!
+//! * Note how [`Color`] containts several helpful, const values covering
+//! a basic selection of foreground and background colors. [`Color`] also
+//! supports custom colors with [`Color::new()`].
+
+use tabled::{
+ settings::{
+ style::{RawStyle, Style},
+ Color,
+ },
+ Table, Tabled,
+};
+
+#[derive(Tabled)]
+struct CodeEditor {
+ name: &'static str,
+ first_release: &'static str,
+ developer: &'static str,
+}
+
+impl CodeEditor {
+ fn new(name: &'static str, first_release: &'static str, developer: &'static str) -> Self {
+ Self {
+ name,
+ first_release,
+ developer,
+ }
+ }
+}
+
+fn main() {
+ let mut style = RawStyle::from(Style::extended());
+ style
+ .set_color_top(Color::FG_RED)
+ .set_color_bottom(Color::FG_CYAN)
+ .set_color_left(Color::FG_BLUE)
+ .set_color_right(Color::FG_GREEN)
+ .set_color_corner_top_left(Color::FG_BLUE)
+ .set_color_corner_top_right(Color::FG_RED)
+ .set_color_corner_bottom_left(Color::FG_CYAN)
+ .set_color_corner_bottom_right(Color::FG_GREEN)
+ .set_color_intersection_bottom(Color::FG_CYAN)
+ .set_color_intersection_top(Color::FG_RED)
+ .set_color_intersection_right(Color::FG_GREEN)
+ .set_color_intersection_left(Color::FG_BLUE)
+ .set_color_intersection(Color::FG_MAGENTA)
+ .set_color_horizontal(Color::FG_MAGENTA)
+ .set_color_vertical(Color::FG_MAGENTA);
+
+ let data = [
+ CodeEditor::new("Sublime Text 3", "2008", "Sublime HQ"),
+ CodeEditor::new("Visual Studio Code", "2015", "Microsoft"),
+ CodeEditor::new("Notepad++", "2003", "Don Ho"),
+ CodeEditor::new("GNU Emacs", "1984", "Richard Stallman"),
+ CodeEditor::new("Neovim", "2015", "Vim community"),
+ ];
+
+ let table = Table::new(data).with(style).to_string();
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/colored_padding.rs b/vendor/tabled/examples/colored_padding.rs
new file mode 100644
index 000000000..96a3a717f
--- /dev/null
+++ b/vendor/tabled/examples/colored_padding.rs
@@ -0,0 +1,173 @@
+//! This example demonstrates using the [`Padding::colorize()`] function in several ways
+//! to give a [`Table`] display a vibrant asthetic.
+//!
+//! * 🚩 This example requires the `color` feature.
+//!
+//! * Note how the [`Color`] [setting](tabled::settings) is used to simplify creating
+//! reusable themes for text, backgrounds, padded whitespace, and borders.
+//!
+//! * Note how a unique color can be set for each direction.
+
+use std::convert::TryFrom;
+
+use owo_colors::OwoColorize;
+
+use tabled::{
+ grid::{
+ config::{ColoredConfig, Entity},
+ dimension::SpannedGridDimension,
+ records::{
+ vec_records::{Cell, VecRecords},
+ ExactRecords, PeekableRecords, Records,
+ },
+ util::string::string_width_multiline,
+ },
+ settings::{
+ object::{Columns, Object, Rows, Segment},
+ Alignment, CellOption, Color, Format, Margin, Modify, Padding, Style,
+ },
+ Table, Tabled,
+};
+
+#[derive(Tabled)]
+#[tabled(rename_all = "PascalCase")]
+struct Fundamental {
+ quantity: &'static str,
+ symbol: &'static str,
+ value: &'static str,
+ unit: &'static str,
+}
+
+impl Fundamental {
+ fn new(
+ quantity: &'static str,
+ symbol: &'static str,
+ value: &'static str,
+ unit: &'static str,
+ ) -> Self {
+ Self {
+ quantity,
+ symbol,
+ value,
+ unit,
+ }
+ }
+}
+
+fn main() {
+ // data source: https://www.britannica.com/science/physical-constant
+ let data = [
+ Fundamental::new(
+ "constant of gravitation",
+ "G",
+ "6.67384 × 10â»Â¹Â¹",
+ "cubic metre per second squared per kilogram",
+ ),
+ Fundamental::new(
+ "speed of light (in a vacuum)",
+ "c",
+ "2.99792458 × 10â»â¸",
+ "metres per second",
+ ),
+ Fundamental::new(
+ "Planck's constant",
+ "h",
+ "6.626070040 × 10â»Â³â´",
+ "joule second",
+ ),
+ Fundamental::new(
+ "Boltzmann constant",
+ "k",
+ "1.38064852 × 10â»Â²Â³",
+ "joule per kelvin",
+ ),
+ Fundamental::new(
+ "Faraday constant",
+ "F",
+ "9.648533289 × 10â´",
+ "coulombs per mole",
+ ),
+ ];
+
+ let pane_color = Color::try_from(' '.bg_rgb::<220, 220, 220>().to_string()).unwrap();
+ let border_color = Color::try_from(' '.bg_rgb::<200, 200, 220>().bold().to_string()).unwrap();
+ let data_color = Color::try_from(' '.bg_rgb::<200, 200, 220>().to_string()).unwrap();
+
+ let header_settings = Modify::new(Rows::first())
+ .with(Padding::new(1, 1, 2, 2).colorize(
+ Color::BG_GREEN,
+ Color::BG_YELLOW,
+ Color::BG_MAGENTA,
+ Color::BG_CYAN,
+ ))
+ .with(MakeMaxPadding)
+ .with(Format::content(|s| s.on_black().white().to_string()));
+
+ let data_settings = Modify::new(Rows::first().inverse())
+ .with(Alignment::left())
+ .with(MakeMaxPadding)
+ .with(Padding::new(1, 1, 0, 0).colorize(
+ Color::default(),
+ Color::default(),
+ data_color.clone(),
+ data_color.clone(),
+ ));
+
+ let symbol_settings = Modify::new(Columns::single(1).not(Rows::first()))
+ .with(Format::content(|s| s.bold().to_string()));
+
+ let unit_settings = Modify::new(Columns::single(3).not(Rows::first()))
+ .with(Format::content(|s| s.italic().to_string()));
+
+ let table = Table::new(data)
+ .with(Style::rounded())
+ .with(Margin::new(1, 2, 1, 1).colorize(
+ pane_color.clone(),
+ pane_color.clone(),
+ pane_color.clone(),
+ pane_color,
+ ))
+ .with(border_color)
+ .with(Modify::new(Segment::all()).with(data_color))
+ .with(header_settings)
+ .with(data_settings)
+ .with(symbol_settings)
+ .with(unit_settings)
+ .to_string();
+
+ println!("\n\n{table}\n\n");
+}
+
+#[derive(Debug, Clone)]
+struct MakeMaxPadding;
+
+impl<T> CellOption<VecRecords<T>, ColoredConfig> for MakeMaxPadding
+where
+ T: Cell + AsRef<str>,
+{
+ fn change(self, records: &mut VecRecords<T>, cfg: &mut ColoredConfig, entity: Entity) {
+ let widths = SpannedGridDimension::width(&*records, cfg);
+
+ let count_rows = records.count_rows();
+ let count_cols = records.count_columns();
+
+ for (row, col) in entity.iter(count_rows, count_cols) {
+ let column_width = widths[col];
+ let text = records.get_text((row, col));
+ let width = string_width_multiline(text);
+
+ if width < column_width {
+ let available_width = column_width - width;
+ let left = available_width / 2;
+ let right = available_width - left;
+
+ let pos = (row, col).into();
+ let mut pad = cfg.get_padding(pos);
+ pad.left.size = left;
+ pad.right.size = right;
+
+ cfg.set_padding(pos, pad);
+ }
+ }
+ }
+}
diff --git a/vendor/tabled/examples/colorization.rs b/vendor/tabled/examples/colorization.rs
new file mode 100644
index 000000000..a68ca93e8
--- /dev/null
+++ b/vendor/tabled/examples/colorization.rs
@@ -0,0 +1,69 @@
+//! This example demonstrates using the [`Color`] [setting](tabled::settings) to
+//! stylize text, backgrounds, and borders.
+//!
+//! * 🚩 This example requires the `color` feature.
+//!
+//! * Note how [`Format::content()`] is used to break out [`CellOption`]
+//! specifications. This is helpful for organizing extensive [`Table`] configurations.
+
+use tabled::{
+ builder::Builder,
+ settings::{object::Rows, style::Style, themes::Colorization, Color, Concat},
+ Table, Tabled,
+};
+
+#[derive(Tabled)]
+#[tabled(rename_all = "UPPERCASE")]
+struct Employee {
+ id: usize,
+ #[tabled(rename = "FIRST NAME")]
+ first_name: String,
+ #[tabled(rename = "LAST NAME")]
+ last_name: String,
+ salary: usize,
+ comment: String,
+}
+
+impl Employee {
+ fn new(id: usize, first_name: &str, last_name: &str, salary: usize, comment: &str) -> Self {
+ Self {
+ id,
+ salary,
+ first_name: first_name.to_string(),
+ last_name: last_name.to_string(),
+ comment: comment.to_string(),
+ }
+ }
+}
+
+fn main() {
+ let data = vec![
+ Employee::new(1, "Arya", "Stark", 3000, ""),
+ Employee::new(20, "Jon", "Snow", 2000, "You know nothing, Jon Snow!"),
+ Employee::new(300, "Tyrion", "Lannister", 5000, ""),
+ ];
+
+ let total = data.iter().map(|e| e.salary).sum::<usize>();
+ let total_row = Builder::from(vec![vec![
+ String::from(""),
+ String::from(""),
+ String::from("TOTAL"),
+ total.to_string(),
+ ]])
+ .build();
+
+ let color_data_primary = Color::BG_WHITE | Color::FG_BLACK;
+ let color_data_second = Color::BG_BRIGHT_WHITE | Color::FG_BLACK;
+ let color_head = Color::BOLD | Color::BG_CYAN | Color::FG_BLACK;
+ let color_footer = Color::BOLD | Color::BG_BLUE | Color::FG_BLACK;
+
+ let mut table = Table::new(data);
+ table
+ .with(Concat::vertical(total_row))
+ .with(Style::empty())
+ .with(Colorization::rows([color_data_primary, color_data_second]))
+ .with(Colorization::exact([color_head], Rows::first()))
+ .with(Colorization::exact([color_footer], Rows::last()));
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/column_names.rs b/vendor/tabled/examples/column_names.rs
new file mode 100644
index 000000000..0388e6264
--- /dev/null
+++ b/vendor/tabled/examples/column_names.rs
@@ -0,0 +1,63 @@
+//! This example demonstrates how to set column names on a top horizontal line.
+//!
+//! It sets a `clickhouse` like table style (first seen on).
+
+use std::iter::repeat;
+
+use tabled::{
+ grid::config::AlignmentHorizontal,
+ settings::{themes::ColumnNames, Color, Style},
+ Table, Tabled,
+};
+
+#[derive(Debug, Tabled)]
+struct Function {
+ declaration: String,
+ name: String,
+ return_type: String,
+}
+
+impl Function {
+ fn new(decl: &str, name: &str, ret_type: &str) -> Self {
+ Self {
+ declaration: decl.to_string(),
+ name: name.to_string(),
+ return_type: ret_type.to_string(),
+ }
+ }
+}
+
+fn main() {
+ let data = vec![
+ Function::new(
+ "struct stack *stack_create(int)",
+ "stack_create",
+ "struct stack *",
+ ),
+ Function::new(
+ "void stack_destroy(struct stack *)",
+ "stack_destroy",
+ "void",
+ ),
+ Function::new(
+ "int stack_put(struct stack *, vm_offset_t)",
+ "stack_put",
+ "int",
+ ),
+ Function::new(
+ "void stack_copy(const struct stack *, struct stack *)",
+ "stack_copy",
+ "void",
+ ),
+ ];
+
+ let mut table = Table::new(data);
+
+ table.with(Style::modern().remove_horizontal()).with(
+ ColumnNames::default()
+ .set_colors(repeat(Color::BOLD | Color::BG_BLUE | Color::FG_WHITE).take(3))
+ .set_alignment(AlignmentHorizontal::Center),
+ );
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/compact_table.rs b/vendor/tabled/examples/compact_table.rs
new file mode 100644
index 000000000..3a02d448d
--- /dev/null
+++ b/vendor/tabled/examples/compact_table.rs
@@ -0,0 +1,23 @@
+//! This example demonstrates creating a `new()` [`CompactTable`] with
+//! manual specifications for column count, column widths, and border styling.
+//!
+//! * [`CompactTable`] is a [`Table`] alternative that trades off reduced
+//! flexibility for improved performance.
+
+use tabled::{settings::Style, tables::CompactTable};
+
+fn main() {
+ let data = [
+ ["Debian", "", "true"],
+ ["Arch", "", "true"],
+ ["Manjaro", "Arch", "true"],
+ ];
+
+ let _table = CompactTable::new(data)
+ .columns(3)
+ .width([7, 5, 5])
+ .with(Style::markdown());
+
+ #[cfg(feature = "std")]
+ println!("{}", _table.to_string());
+}
diff --git a/vendor/tabled/examples/compact_table_2.rs b/vendor/tabled/examples/compact_table_2.rs
new file mode 100644
index 000000000..5f231ccd8
--- /dev/null
+++ b/vendor/tabled/examples/compact_table_2.rs
@@ -0,0 +1,20 @@
+//! This example demonstrates creating a [`CompactTable`] `from()` a
+//! multidimensional array.
+//!
+//! * Note how [`CompactTable::from()`] inherits the lengths of the nested arrays
+//! as typed definitions through [const generics](https://practice.rs/generics-traits/const-generics.html).
+
+use tabled::{settings::Style, tables::CompactTable};
+
+fn main() {
+ let data = [
+ ["Debian", "1.1.1.1", "true"],
+ ["Arch", "127.1.1.1", "true"],
+ ["Manjaro", "Arch", "true"],
+ ];
+
+ let _table = CompactTable::from(data).with(Style::psql());
+
+ #[cfg(feature = "std")]
+ println!("{}", _table.to_string());
+}
diff --git a/vendor/tabled/examples/compact_table_3.rs b/vendor/tabled/examples/compact_table_3.rs
new file mode 100644
index 000000000..5c7df6d5e
--- /dev/null
+++ b/vendor/tabled/examples/compact_table_3.rs
@@ -0,0 +1,19 @@
+//! This example demonstrates how [`CompactTable`] is limited to single
+//! line rows.
+//!
+//! * Note how the multiline data is accepted, but then truncated in the display.
+
+use tabled::{settings::Style, tables::CompactTable};
+
+fn main() {
+ let data = [
+ ["De\nbi\nan", "1.1.1.1", "true"],
+ ["Arch", "127.1.1.1", "true"],
+ ["Manjaro", "A\nr\nc\nh", "true"],
+ ];
+
+ let _table = CompactTable::from(data).with(Style::psql());
+
+ #[cfg(feature = "std")]
+ println!("{}", _table.to_string());
+}
diff --git a/vendor/tabled/examples/concat.rs b/vendor/tabled/examples/concat.rs
new file mode 100644
index 000000000..09afeed7b
--- /dev/null
+++ b/vendor/tabled/examples/concat.rs
@@ -0,0 +1,58 @@
+//! This example demonstrates using the [`Concat`] [`TableOption`] to concatenate
+//! [`tables`](Table) together.
+//!
+//! * [`Concat`] supports appending tables vertically and horizontally.
+//!
+//! * Note how the base tables style settings take take precedence over the appended table.
+//! If the two tables are of unequal shape, additional blank cells are added as needed.
+
+use tabled::{
+ settings::{object::Segment, Alignment, Concat, Modify, Style},
+ Table, Tabled,
+};
+
+#[derive(Debug, Tabled)]
+struct Weather {
+ temperature_c: f64,
+ wind_ms: f64,
+}
+
+#[derive(Debug, Tabled)]
+struct Location(
+ #[tabled(rename = "latitude")] f64,
+ #[tabled(rename = "longitude")] f64,
+);
+
+fn main() {
+ let weather_data = [
+ Weather {
+ temperature_c: 1.0,
+ wind_ms: 3.0,
+ },
+ Weather {
+ temperature_c: -20.0,
+ wind_ms: 30.0,
+ },
+ Weather {
+ temperature_c: 40.0,
+ wind_ms: 100.0,
+ },
+ ];
+
+ let location_data = [
+ Location(111.111, 333.333),
+ Location(5.111, 7282.1),
+ Location(0.0, 0.0),
+ Location(0.0, 0.0),
+ ];
+
+ let location_table = Table::new(location_data);
+
+ let mut weather_table = Table::new(weather_data);
+ weather_table
+ .with(Concat::horizontal(location_table))
+ .with(Style::empty())
+ .with(Modify::new(Segment::all()).with(Alignment::left()));
+
+ println!("{weather_table}");
+}
diff --git a/vendor/tabled/examples/custom_style.rs b/vendor/tabled/examples/custom_style.rs
new file mode 100644
index 000000000..e6f0848cb
--- /dev/null
+++ b/vendor/tabled/examples/custom_style.rs
@@ -0,0 +1,54 @@
+//! This example demonstrates customizing one of the [`tabled`] default [styles](Style)
+//! to create a unique [`Table`] display.
+//!
+//! * Note that all predesigned styles can be configured completely.
+//! Styles can also be created from scratch!
+//!
+//! * Note that adding and removing borders with a [`Style`] theme doesn't affect the
+//! number of functional columns and rows.
+
+use tabled::{
+ settings::{
+ style::{HorizontalLine, Style, VerticalLine},
+ Alignment,
+ },
+ Table, Tabled,
+};
+
+#[derive(Tabled)]
+struct CodeEditor {
+ name: &'static str,
+ first_release: &'static str,
+ developer: &'static str,
+}
+
+impl CodeEditor {
+ fn new(name: &'static str, first_release: &'static str, developer: &'static str) -> Self {
+ Self {
+ name,
+ first_release,
+ developer,
+ }
+ }
+}
+
+fn main() {
+ let data = [
+ CodeEditor::new("Sublime Text 3", "2008", "Sublime HQ"),
+ CodeEditor::new("Visual Studio Code", "2015", "Microsoft"),
+ CodeEditor::new("Notepad++", "2003", "Don Ho"),
+ CodeEditor::new("GNU Emacs", "1984", "Richard Stallman"),
+ CodeEditor::new("Neovim", "2015", "Vim community"),
+ ];
+
+ let theme = Style::modern()
+ .remove_horizontal()
+ .remove_vertical()
+ .horizontals([HorizontalLine::new(1, Style::modern().get_horizontal()).intersection(None)])
+ .verticals([VerticalLine::new(1, Style::modern().get_vertical())]);
+
+ let mut table = Table::new(data);
+ table.with(theme).with(Alignment::left());
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/derive/display_with.rs b/vendor/tabled/examples/derive/display_with.rs
new file mode 100644
index 000000000..9dfc87a47
--- /dev/null
+++ b/vendor/tabled/examples/derive/display_with.rs
@@ -0,0 +1,65 @@
+//! This example demonstrates using the [attribute macro](https://doc.rust-lang.org/reference/procedural-macros.html#attribute-macros)
+//! [`display_with`] to seamlessly augment field representations in a [`Table`] display.
+//!
+//! * [`display_with`] functions act as transformers during [`Table`] instantiation.
+//!
+//! * Note how [`display_with`] works with [std] and custom functions alike.
+//!
+//! * [`display_with`] attributes can be constructed in two ways (shown below).
+//!
+//! * Attribute arguments can be directly overridden with static values, effectively ignoring the
+//! augmented fields natural value entirely. Even an entire object can be passed as context with `self`.
+
+use std::borrow::Cow;
+
+use tabled::{Table, Tabled};
+
+#[derive(Tabled)]
+#[tabled(rename_all = "camelCase")]
+struct Country {
+ name: &'static str,
+ capital_city: &'static str,
+ #[tabled(display_with("display_perimeter", self))]
+ surface_area_km2: f32,
+ #[tabled(display_with = "str::to_lowercase")]
+ national_currency: &'static str,
+ national_currency_short: &'static str,
+}
+
+fn display_perimeter(country: &Country) -> Cow<'_, str> {
+ if country.surface_area_km2 > 1_000_000.0 {
+ "Very Big Land".into()
+ } else {
+ "Big Land".into()
+ }
+}
+
+impl Country {
+ fn new(
+ name: &'static str,
+ national_currency: &'static str,
+ national_currency_short: &'static str,
+ capital_city: &'static str,
+ surface_area_km2: f32,
+ ) -> Self {
+ Self {
+ name,
+ national_currency,
+ national_currency_short,
+ capital_city,
+ surface_area_km2,
+ }
+ }
+}
+
+fn main() {
+ let data = [
+ Country::new("Afghanistan", "Afghani", "AFN", "Kabul", 652867.0),
+ Country::new("Angola", "Kwanza", "AOA", "Luanda", 1246700.0),
+ Country::new("Canada", "Canadian Dollar", "CAD", "Ottawa", 9984670.0),
+ ];
+
+ let table = Table::new(data);
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/derive/inline.rs b/vendor/tabled/examples/derive/inline.rs
new file mode 100644
index 000000000..2ce07816f
--- /dev/null
+++ b/vendor/tabled/examples/derive/inline.rs
@@ -0,0 +1,55 @@
+//! This example demonstrates using the [attribute macro](https://doc.rust-lang.org/reference/procedural-macros.html#attribute-macros)
+//! [`inline`] to expand struct fields to individual columns in a [`Table`] display.
+//!
+//! * Note that without inlining a struct or enum field, those objects
+//! must implement the [`Display`] trait as they will be represented in
+//! a single column with the value of their [`ToString`] output.
+
+use tabled::{Table, Tabled};
+
+#[derive(Tabled)]
+struct Country {
+ name: &'static str,
+ capital_city: &'static str,
+ surface_area_km2: f32,
+ #[tabled(inline)]
+ currency: Currency,
+}
+
+#[derive(Tabled)]
+struct Currency {
+ str: &'static str,
+ short: &'static str,
+}
+
+impl Country {
+ fn new(
+ name: &'static str,
+ national_currency: &'static str,
+ national_currency_short: &'static str,
+ capital_city: &'static str,
+ surface_area_km2: f32,
+ ) -> Self {
+ Self {
+ name,
+ capital_city,
+ surface_area_km2,
+ currency: Currency {
+ str: national_currency,
+ short: national_currency_short,
+ },
+ }
+ }
+}
+
+fn main() {
+ let data = [
+ Country::new("Afghanistan", "Afghani", "AFN", "Kabul", 652867.0),
+ Country::new("Angola", "Kwanza", "AOA", "Luanda", 1246700.0),
+ Country::new("Canada", "Canadian Dollar", "CAD", "Ottawa", 9984670.0),
+ ];
+
+ let table = Table::new(data);
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/derive/inline_enum.rs b/vendor/tabled/examples/derive/inline_enum.rs
new file mode 100644
index 000000000..707d5bb2c
--- /dev/null
+++ b/vendor/tabled/examples/derive/inline_enum.rs
@@ -0,0 +1,50 @@
+//! This example demonstrates using the [attribute macro](https://doc.rust-lang.org/reference/procedural-macros.html#attribute-macros)
+//! [`inline`] to expand enum fields to individual columns in a [`Table`] display.
+//!
+//! * Note how the optional [`inline`] argument is used to apply prefixes
+//! to decomposed column headers. This is helpful for organizing tables
+//! with repetative fields that would normally result in confusing headers.
+//!
+//! * Note that without inlining a struct or enum field, those objects
+//! must implement the [`Display`] trait as they will be represented in
+//! a single column with the value of their [`ToString`] output.
+
+use tabled::{Table, Tabled};
+
+#[derive(Tabled)]
+enum Contact {
+ #[tabled(inline("telegram::"))]
+ Telegram {
+ username: &'static str,
+ #[tabled(inline("telegram::"))]
+ number: Number,
+ },
+ #[tabled(inline)]
+ Local(#[tabled(inline("local::"))] Number),
+}
+
+#[derive(Tabled)]
+struct Number {
+ number: &'static str,
+ code: usize,
+}
+
+impl Number {
+ fn new(number: &'static str, code: usize) -> Self {
+ Self { number, code }
+ }
+}
+
+fn main() {
+ let data = [
+ Contact::Local(Number::new("654321", 123)),
+ Contact::Telegram {
+ username: "no2Presley",
+ number: Number::new("123456", 123),
+ },
+ ];
+
+ let table = Table::new(data);
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/derive/order.rs b/vendor/tabled/examples/derive/order.rs
new file mode 100644
index 000000000..44e036fad
--- /dev/null
+++ b/vendor/tabled/examples/derive/order.rs
@@ -0,0 +1,48 @@
+//! This example demonstrates using the [attribute macro](https://doc.rust-lang.org/reference/procedural-macros.html#attribute-macros)
+//! [`order`] to relocate fields to specified indexes in a [`Table`] display.
+//!
+//! * By default, [`Table`] columns are shown in the same ordered they are
+//! defined in the deriving struct/enum definition.
+
+use tabled::{Table, Tabled};
+
+#[derive(Tabled)]
+struct Country {
+ name: &'static str,
+ capital_city: &'static str,
+ surface_area_km2: f32,
+ #[tabled(order = 1)]
+ national_currency: &'static str,
+ #[tabled(order = 2)]
+ national_currency_short: &'static str,
+}
+
+impl Country {
+ fn new(
+ name: &'static str,
+ national_currency: &'static str,
+ national_currency_short: &'static str,
+ capital_city: &'static str,
+ surface_area_km2: f32,
+ ) -> Self {
+ Self {
+ name,
+ national_currency,
+ national_currency_short,
+ capital_city,
+ surface_area_km2,
+ }
+ }
+}
+
+fn main() {
+ let data = [
+ Country::new("Afghanistan", "Afghani", "AFN", "Kabul", 652867.0),
+ Country::new("Angola", "Kwanza", "AOA", "Luanda", 1246700.0),
+ Country::new("Canada", "Canadian Dollar", "CAD", "Ottawa", 9984670.0),
+ ];
+
+ let table = Table::new(data);
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/derive/rename.rs b/vendor/tabled/examples/derive/rename.rs
new file mode 100644
index 000000000..709411948
--- /dev/null
+++ b/vendor/tabled/examples/derive/rename.rs
@@ -0,0 +1,45 @@
+//! This example demonstrates using the [attribute macro](https://doc.rust-lang.org/reference/procedural-macros.html#attribute-macros)
+//! [`rename`] to alias specific fields in a [`Table`] display.
+
+use tabled::{Table, Tabled};
+
+#[derive(Tabled)]
+struct Country {
+ name: &'static str,
+ capital_city: &'static str,
+ surface_area_km2: f32,
+ #[tabled(rename = "Currency")]
+ national_currency: &'static str,
+ #[tabled(rename = "Currency-ISO")]
+ national_currency_short: &'static str,
+}
+
+impl Country {
+ fn new(
+ name: &'static str,
+ national_currency: &'static str,
+ national_currency_short: &'static str,
+ capital_city: &'static str,
+ surface_area_km2: f32,
+ ) -> Self {
+ Self {
+ name,
+ national_currency,
+ national_currency_short,
+ capital_city,
+ surface_area_km2,
+ }
+ }
+}
+
+fn main() {
+ let data = [
+ Country::new("Afghanistan", "Afghani", "AFN", "Kabul", 652867.0),
+ Country::new("Angola", "Kwanza", "AOA", "Luanda", 1246700.0),
+ Country::new("Canada", "Canadian Dollar", "CAD", "Ottawa", 9984670.0),
+ ];
+
+ let table = Table::new(data);
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/derive/rename_all.rs b/vendor/tabled/examples/derive/rename_all.rs
new file mode 100644
index 000000000..cd408e5ba
--- /dev/null
+++ b/vendor/tabled/examples/derive/rename_all.rs
@@ -0,0 +1,56 @@
+//! This example demonstrates using the [attribute macro](https://doc.rust-lang.org/reference/procedural-macros.html#attribute-macros)
+//! [`rename_all`] to apply table-wide header formatting in a [`Table`] display.
+//!
+//! * Supported formatting rules include:
+//! * 'camelCase'
+//! * 'kabab-case'
+//! * 'PascalCase'
+//! * 'SCREAMING_SNAKE_CASE'
+//! * 'snake_case'
+//! * 'lowercase'
+//! * 'UPPERCASE'
+//! * 'verbatim'
+
+use tabled::{Table, Tabled};
+
+#[derive(Tabled)]
+#[tabled(rename_all = "camelCase")]
+struct Country {
+ name: &'static str,
+ capital_city: &'static str,
+ surface_area_km2: f32,
+ #[tabled(rename_all = "kebab-case")]
+ national_currency: &'static str,
+ #[tabled(rename_all = "kebab-case")]
+ national_currency_short: &'static str,
+}
+
+impl Country {
+ fn new(
+ name: &'static str,
+ national_currency: &'static str,
+ national_currency_short: &'static str,
+ capital_city: &'static str,
+ surface_area_km2: f32,
+ ) -> Self {
+ Self {
+ name,
+ national_currency,
+ national_currency_short,
+ capital_city,
+ surface_area_km2,
+ }
+ }
+}
+
+fn main() {
+ let data = [
+ Country::new("Afghanistan", "Afghani", "AFN", "Kabul", 652867.0),
+ Country::new("Angola", "Kwanza", "AOA", "Luanda", 1246700.0),
+ Country::new("Canada", "Canadian Dollar", "CAD", "Ottawa", 9984670.0),
+ ];
+
+ let table = Table::new(data);
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/derive/skip.rs b/vendor/tabled/examples/derive/skip.rs
new file mode 100644
index 000000000..86f7a9ba2
--- /dev/null
+++ b/vendor/tabled/examples/derive/skip.rs
@@ -0,0 +1,49 @@
+//! This example demonstrates using the [attribute macro](https://doc.rust-lang.org/reference/procedural-macros.html#attribute-macros)
+//! [`skip`] to omit specific fields from becoming columns in a [`Table`] display.
+//!
+//! * Note how [`skip`] annoys [clippy](https://doc.rust-lang.org/clippy/) with `dead_code`
+//! warnings. This can be addressed with compiler overrides like `#[allow(dead_code)]`.
+
+use tabled::{Table, Tabled};
+
+#[allow(dead_code)]
+#[derive(Tabled)]
+struct Country {
+ name: &'static str,
+ capital_city: &'static str,
+ #[tabled(skip)]
+ surface_area_km2: f32,
+ national_currency: &'static str,
+ #[tabled(skip)]
+ national_currency_short: &'static str,
+}
+
+impl Country {
+ fn new(
+ name: &'static str,
+ national_currency: &'static str,
+ national_currency_short: &'static str,
+ capital_city: &'static str,
+ surface_area_km2: f32,
+ ) -> Self {
+ Self {
+ name,
+ national_currency,
+ national_currency_short,
+ capital_city,
+ surface_area_km2,
+ }
+ }
+}
+
+fn main() {
+ let data = [
+ Country::new("Afghanistan", "Afghani", "AFN", "Kabul", 652867.0),
+ Country::new("Angola", "Kwanza", "AOA", "Luanda", 1246700.0),
+ Country::new("Canada", "Canadian Dollar", "CAD", "Ottawa", 9984670.0),
+ ];
+
+ let table = Table::new(data);
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/disable.rs b/vendor/tabled/examples/disable.rs
new file mode 100644
index 000000000..1f04de7d9
--- /dev/null
+++ b/vendor/tabled/examples/disable.rs
@@ -0,0 +1,49 @@
+//! This example demonstrates using the [`Disable`] [`TableOption`] to remove specific
+//! cell data from a [`Table`] display.
+//!
+//! * âš ï¸ Using [`Disable`] in combination with other [`Style`] customizations may yield unexpected results.
+//! It is safest to use [`Disable`] last in a chain of alterations.
+
+use tabled::{
+ settings::{
+ locator::ByColumnName,
+ style::{Border, Style},
+ Disable, Modify,
+ },
+ Table, Tabled,
+};
+
+#[derive(Tabled)]
+struct Distribution {
+ name: &'static str,
+ based_on: &'static str,
+ is_active: bool,
+ is_cool: bool,
+}
+
+impl Distribution {
+ fn new(name: &'static str, based_on: &'static str, is_active: bool, is_cool: bool) -> Self {
+ Self {
+ name,
+ based_on,
+ is_active,
+ is_cool,
+ }
+ }
+}
+
+fn main() {
+ let data = [
+ Distribution::new("Debian", "", true, true),
+ Distribution::new("Arch", "", true, true),
+ Distribution::new("Manjaro", "Arch", true, true),
+ ];
+
+ let mut table = Table::new(data);
+ table
+ .with(Style::markdown())
+ .with(Disable::column(ByColumnName::new("is_active")))
+ .with(Modify::new(ByColumnName::new("name")).with(Border::filled('#')));
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/extended_display.rs b/vendor/tabled/examples/extended_display.rs
new file mode 100644
index 000000000..d31257881
--- /dev/null
+++ b/vendor/tabled/examples/extended_display.rs
@@ -0,0 +1,35 @@
+//! This example demonstrates using [ExtendedTable], a [Table] alternative with
+//! limited flexibility but a greater emphasis on large data displays.
+
+use tabled::{tables::ExtendedTable, Tabled};
+
+#[derive(Tabled)]
+struct Distribution {
+ name: &'static str,
+ based_on: &'static str,
+ is_active: bool,
+ is_cool: bool,
+}
+
+impl Distribution {
+ fn new(name: &'static str, based_on: &'static str, is_active: bool, is_cool: bool) -> Self {
+ Self {
+ name,
+ based_on,
+ is_active,
+ is_cool,
+ }
+ }
+}
+
+fn main() {
+ let data = vec![
+ Distribution::new("Manjaro", "Arch", true, true),
+ Distribution::new("Arch", "", true, true),
+ Distribution::new("Debian", "", true, true),
+ ];
+
+ let table = ExtendedTable::new(data);
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/extract.rs b/vendor/tabled/examples/extract.rs
new file mode 100644
index 000000000..8d7d86434
--- /dev/null
+++ b/vendor/tabled/examples/extract.rs
@@ -0,0 +1,106 @@
+//! This example demonstrates using the [`Extract`] [`TableOption`] to
+//! produce a subsection of a [`Table`].
+//!
+//! * [`Extract`] can return a new [`Table`] with three functions:
+//! * `rows()` | yields subset of the initial rows
+//! * `columns()` | yields subset of the initial columns
+//! * `segment()` | yields subsection of the initial table
+//!
+//! * Note how [`Extract`] methods accepts [`RangeBounds`] arguments,
+//! making subset specifications concise.
+
+use std::fmt::{Display, Formatter};
+
+use tabled::{
+ settings::{
+ object::{Columns, Rows},
+ Alignment, Extract, Format, Modify, Style,
+ },
+ Table, Tabled,
+};
+
+#[derive(Tabled)]
+struct Album {
+ artist: &'static str,
+ name: &'static str,
+ released: &'static str,
+ level_of_greatness: LevelOfGreatness,
+}
+
+impl Album {
+ fn new(
+ artist: &'static str,
+ name: &'static str,
+ released: &'static str,
+ level_of_greatness: LevelOfGreatness,
+ ) -> Self {
+ Self {
+ artist,
+ name,
+ released,
+ level_of_greatness,
+ }
+ }
+}
+
+#[derive(Debug)]
+enum LevelOfGreatness {
+ Supreme,
+ Outstanding,
+ Unparalleled,
+}
+
+impl Display for LevelOfGreatness {
+ fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), std::fmt::Error> {
+ std::fmt::Debug::fmt(&self, f)
+ }
+}
+
+fn main() {
+ use LevelOfGreatness::*;
+
+ let data = [
+ Album::new(
+ "Pink Floyd",
+ "The Dark Side of the Moon",
+ "01 March 1973",
+ Unparalleled,
+ ),
+ Album::new("Fleetwood Mac", "Rumours", "04 February 1977", Outstanding),
+ Album::new(
+ "Led Zeppelin",
+ "Led Zeppelin IV",
+ "08 November 1971",
+ Supreme,
+ ),
+ ];
+
+ println!("Full");
+
+ let mut table = Table::new(data);
+ table
+ .with(Style::modern())
+ .with(Modify::new(Rows::first()).with(Alignment::center()))
+ .with(Modify::new(Rows::new(1..)).with(Alignment::left()));
+ println!("{table}");
+
+ println!("Segment row: (1..=2) column: (1..)");
+
+ let table = table.with(Extract::segment(1..=2, 1..));
+ println!("{table}");
+
+ println!("Refinished segment");
+
+ let highlight = Format::content(|s| {
+ if s == "Outstanding" {
+ format!("+{s}+")
+ } else {
+ s.to_string()
+ }
+ });
+
+ let table = table
+ .with(Style::modern())
+ .with(Modify::new(Columns::new(1..)).with(highlight));
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/format.rs b/vendor/tabled/examples/format.rs
new file mode 100644
index 000000000..7dc4bddb2
--- /dev/null
+++ b/vendor/tabled/examples/format.rs
@@ -0,0 +1,56 @@
+//! This example demonstrates using the [`Format`] [`CellOption`] factory to alter
+//! the cells of a [`Table`].
+//!
+//! * Note how [`Format::content()`] gives access to the respective cell content for replacement.
+//! And [`Format::positioned()`] additionally provides the index coordinates of that cell.
+//!
+//! * Note how the [std] [`format!`] macro is used to update the values of the affected cells.
+
+use tabled::{
+ settings::{
+ object::{Columns, Object, Rows},
+ Format, Modify, Style,
+ },
+ Table, Tabled,
+};
+
+#[derive(Tabled)]
+struct Commit {
+ id: &'static str,
+ header: &'static str,
+ message: &'static str,
+}
+
+fn main() {
+ let data = [
+ Commit {
+ header: "bypass open-source transmitter",
+ message: "index neural panel",
+ id: "8ae4e8957caeaa467acbce963701e227af00a1c7",
+ },
+ Commit {
+ header: "program online alarm",
+ message: "copy bluetooth card",
+ id: "48c76de71bd685486d97dc8f4f05aa6fcc0c3f86",
+ },
+ Commit {
+ header: "CSV",
+ message: "reboot mobile capacitor",
+ id: "6ffc2a2796229fc7bf59471ad907f58b897005d0",
+ },
+ ];
+
+ let table = Table::new(data)
+ .with(Style::psql())
+ .with(
+ Modify::new(Rows::first())
+ .with(Format::positioned(|_, (_, column)| column.to_string())),
+ )
+ .with(
+ Modify::new(Columns::first().not(Rows::first()))
+ .with(Format::content(|s| format!("{s}..."))),
+ )
+ .to_string();
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/formatting_settings.rs b/vendor/tabled/examples/formatting_settings.rs
new file mode 100644
index 000000000..19c8a4806
--- /dev/null
+++ b/vendor/tabled/examples/formatting_settings.rs
@@ -0,0 +1,47 @@
+//! This example demonstrates using the [`Alignment`], [`AlignmentStrategy`], and [`TrimStrategy`] [`CellOptions`]
+//! to align the content of a [`Table`] in several nuanced ways.
+//!
+//! * Note how [`AlignmentStrategy`] and [`TrimStrategy`] provide useful tools for managing multiline cells and
+//! cell values that are bloated with whitespace.
+
+use tabled::{
+ settings::{
+ formatting::{AlignmentStrategy, TrimStrategy},
+ object::Segment,
+ Alignment, Modify, Style,
+ },
+ Table,
+};
+
+fn main() {
+ let some_json = r#"
+[
+ "foo",
+ {
+ "bar": 1,
+ "baz": [
+ 2,
+ 3
+ ]
+ }
+]"#;
+
+ let mut table = Table::new([some_json]);
+ table
+ .with(Style::rounded())
+ .with(Modify::new(Segment::all()).with(Alignment::center()));
+
+ println!("A default Alignment settings\n{table}");
+
+ table.with(Modify::new(Segment::all()).with(AlignmentStrategy::PerLine));
+
+ println!("Per line Alignment strategy\n{table}");
+
+ table.with(
+ Modify::new(Segment::all())
+ .with(AlignmentStrategy::PerCell)
+ .with(TrimStrategy::Both),
+ );
+
+ println!("A default Alignment; allowing vertical and horizontal trim\n{table}");
+}
diff --git a/vendor/tabled/examples/grid_colors.rs b/vendor/tabled/examples/grid_colors.rs
new file mode 100644
index 000000000..f48b39f49
--- /dev/null
+++ b/vendor/tabled/examples/grid_colors.rs
@@ -0,0 +1,46 @@
+//! This example demonstrates using [`Color`] as a [`CellOption`] modifier to stylize
+//! the cells of a [`Table`].
+//!
+//! * Note how the [`Color`] [setting](tabled::settings) is used to simplify creating
+//! reusable themes for backgrounds.
+
+use tabled::{
+ settings::{Color, Modify, Style},
+ Table, Tabled,
+};
+
+#[derive(Tabled)]
+struct Bsd {
+ distribution: &'static str,
+ year_of_first_release: usize,
+ is_active: bool,
+}
+
+impl Bsd {
+ fn new(distribution: &'static str, year_of_first_release: usize, is_active: bool) -> Self {
+ Self {
+ distribution,
+ year_of_first_release,
+ is_active,
+ }
+ }
+}
+
+fn main() {
+ let data = vec![
+ Bsd::new("BSD", 1978, false),
+ Bsd::new("SunOS", 1982, false),
+ Bsd::new("NetBSD", 1993, true),
+ Bsd::new("FreeBSD", 1993, true),
+ Bsd::new("OpenBSD", 1995, true),
+ ];
+
+ let mut table = Table::new(data);
+ table
+ .with(Style::psql())
+ .with(Modify::new((0, 0)).with(Color::BG_BLUE))
+ .with(Modify::new((1, 1)).with(Color::BG_GREEN))
+ .with(Modify::new((2, 2)).with(Color::BG_RED));
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/height.rs b/vendor/tabled/examples/height.rs
new file mode 100644
index 000000000..2da0f36d9
--- /dev/null
+++ b/vendor/tabled/examples/height.rs
@@ -0,0 +1,49 @@
+//! This example demonstrates using the [`Height`] [`TableOption`] for adjusting
+//! the height of a [`Table`].
+//!
+//! * [`Height`] supports three key features:
+//! * [`CellHeightIncrease`] spreads new whitespace between the [`Table`]
+//! rows up to the specified line count.
+//! * [`CellHeightLimit`] removes lines from the [`Table`] rows fairly, until
+//! it has no choice but to remove single-line-rows entirely, bottom up.
+//! * [`HeightList`] accepts an array of height specifications that are applied
+//! to the rows with the same index. This is helpful for granularly specifying individual
+//! row heights irrespective of [`Padding`] or [`Margin`].
+
+use tabled::{
+ settings::{peaker::PriorityMax, Height, Style},
+ Table,
+};
+
+fn main() {
+ let data = vec![("Multi\nline\nstring", 123), ("Single line", 234)];
+
+ let mut table = Table::builder(data).build();
+ table.with(Style::markdown());
+
+ println!("Table\n");
+ println!("{table}");
+ println!();
+
+ let table_ = table.clone().with(Height::increase(10)).to_string();
+
+ println!("Table increase height to 10\n");
+ println!("{table_}");
+ println!();
+
+ let table_ = table
+ .clone()
+ .with(Height::limit(4).priority::<PriorityMax>())
+ .to_string();
+
+ println!("Table decrease height to 4\n");
+ println!("{table_}");
+
+ let table_ = table
+ .clone()
+ .with(Height::limit(0).priority::<PriorityMax>())
+ .to_string();
+
+ println!("Table decrease height to 0\n");
+ println!("{table_}");
+}
diff --git a/vendor/tabled/examples/highlight.rs b/vendor/tabled/examples/highlight.rs
new file mode 100644
index 000000000..0b6abb8ad
--- /dev/null
+++ b/vendor/tabled/examples/highlight.rs
@@ -0,0 +1,28 @@
+//! This example demonstrates using the [`Highlight`] [`TableOption`] to
+//! decorate sections of a [`Table`] with a unique [`Border`].
+//!
+//! * Note how [`Highlight`] arguments can be chained together to
+//! create cross-sections and non-symmetrical shapes.
+
+use tabled::{
+ settings::{
+ object::{Columns, Object, Rows},
+ style::{Border, Style},
+ Highlight,
+ },
+ Table,
+};
+
+fn main() {
+ let data = vec![["A", "B", "C"], ["D", "E", "F"], ["G", "H", "I"]];
+
+ let table = Table::new(data)
+ .with(Style::modern())
+ .with(Highlight::new(
+ Rows::first().and(Columns::single(1)),
+ Border::filled('*'),
+ ))
+ .to_string();
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/highlight_color.rs b/vendor/tabled/examples/highlight_color.rs
new file mode 100644
index 000000000..4646f3819
--- /dev/null
+++ b/vendor/tabled/examples/highlight_color.rs
@@ -0,0 +1,27 @@
+//! This example demonstrates using [`Highlight`] in combination with [`BorderColor`] to
+//! frame sections of a [`Table`] with a unique background [`Color`].
+//!
+//! * Note how [`Highlight::colored()`] is used to accept the necessary input instead of [`Highlight::new()`].
+
+use tabled::{
+ settings::{
+ object::{Columns, Object, Rows},
+ style::BorderColor,
+ Color, Highlight, Style,
+ },
+ Table,
+};
+
+fn main() {
+ let data = vec![["A", "B", "C"], ["D", "E", "F"], ["G", "H", "I"]];
+
+ let table = Table::new(data)
+ .with(Style::modern())
+ .with(Highlight::colored(
+ Rows::first().and(Columns::single(1)),
+ BorderColor::filled(Color::BG_BRIGHT_BLACK),
+ ))
+ .to_string();
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/hyperlink.rs b/vendor/tabled/examples/hyperlink.rs
new file mode 100644
index 000000000..9fda7a040
--- /dev/null
+++ b/vendor/tabled/examples/hyperlink.rs
@@ -0,0 +1,83 @@
+//! This example demonstrates how hyperlinks can be embedded into a [`Table`] display.
+//!
+//! While not a [`tabled`] specific implementation, it is helpful to know that
+//! most users expect certain elements of interactivity based on the purpose of your display.
+//!
+//! * 🚩 This example requires the `color` feature.
+//!
+//! * âš ï¸ Terminal interfaces may differ in how they parse links or make them interactive.
+//! [`tabled`] doesn't have the final say on whether a link is clickable or not.
+
+use tabled::{
+ settings::{object::Segment, Alignment, Modify, Style, Width},
+ Table, Tabled,
+};
+
+fn main() {
+ let multicolored_debian = "\x1b[30mDebian\x1b[0m\
+ \x1b[31m Debian\x1b[0m\
+ \x1b[32m Debian\x1b[0m\
+ \x1b[33m Debian\x1b[0m\
+ \x1b[34m Debian\x1b[0m\
+ \x1b[35m Debian\x1b[0m\
+ \x1b[36m Debian\x1b[0m\
+ \x1b[37m Debian\x1b[0m\
+ \x1b[40m Debian\x1b[0m\
+ \x1b[41m Debian\x1b[0m\
+ \x1b[42m Debian\x1b[0m\
+ \x1b[43m Debian\x1b[0m\
+ \x1b[44m Debian\x1b[0m";
+
+ let debian_repeat =
+ "DebianDebianDebianDebianDebianDebianDebianDebianDebianDebianDebianDebianDebianDebian"
+ .to_string();
+
+ let debian_colored_link = format_osc8_hyperlink("https://www.debian.org/", multicolored_debian);
+ let debian_link = format_osc8_hyperlink("https://www.debian.org/", "Debian");
+ let wiki_link = format_osc8_hyperlink("https://www.wikipedia.org/", "Debian");
+
+ let data = [
+ Distribution::new("Debian".into(), false),
+ Distribution::new(debian_link.clone(), true),
+ Distribution::new(format!("{debian_link} a link followed by text"), true),
+ Distribution::new(
+ format!("{debian_link} links with intervening text {wiki_link}"),
+ true,
+ ),
+ Distribution::new(format!("a link surrounded {debian_link} by text"), true),
+ Distribution::new(debian_colored_link, true),
+ Distribution::new(debian_repeat, false),
+ ];
+
+ let mut table = Table::new(&data);
+ table
+ .with(Style::ascii_rounded())
+ .with(Alignment::left())
+ .with(Modify::new(Segment::all()).with(Width::wrap(16).keep_words()));
+
+ println!("{table}");
+
+ let mut table = Table::new(&data);
+ table
+ .with(Style::ascii_rounded())
+ .with(Alignment::left())
+ .with(Modify::new(Segment::all()).with(Width::wrap(16)));
+
+ println!("{table}");
+}
+
+#[derive(Tabled)]
+struct Distribution {
+ name: String,
+ is_hyperlink: bool,
+}
+
+impl Distribution {
+ fn new(name: String, is_hyperlink: bool) -> Self {
+ Self { name, is_hyperlink }
+ }
+}
+
+fn format_osc8_hyperlink(url: &str, text: &str) -> String {
+ format!("\x1b]8;;{url}\x1b\\{text}\x1b]8;;\x1b\\",)
+}
diff --git a/vendor/tabled/examples/iter_table.rs b/vendor/tabled/examples/iter_table.rs
new file mode 100644
index 000000000..0a77f7435
--- /dev/null
+++ b/vendor/tabled/examples/iter_table.rs
@@ -0,0 +1,31 @@
+//! This example demonstrates using [`IterTable`], an [allocation](https://doc.rust-lang.org/nomicon/vec/vec-alloc.html)
+//! free [`Table`] alternative that translates an iterator into a display.
+//!
+//! * Note how [`IterTable`] supports the familiar `.with()` syntax for applying display
+//! modifications.
+//!
+//! * [`IterTable`] supports manual configuration of:
+//! * Record sniffing (default 1000 rows)
+//! * Row cutoff
+//! * Row height
+//! * Column cutoff
+//! * Column width
+
+use std::io::BufRead;
+
+use tabled::{settings::Style, tables::IterTable};
+
+fn main() {
+ let path = file!();
+ let file = std::fs::File::open(path).unwrap();
+ let reader = std::io::BufReader::new(file);
+ let iterator = reader.lines().enumerate().map(|(i, line)| match line {
+ Ok(line) => [i.to_string(), String::from("ok"), line],
+ Err(err) => [i.to_string(), String::from("error"), err.to_string()],
+ });
+
+ let table = IterTable::new(iterator).with(Style::ascii_rounded());
+
+ table.build(std::io::stdout()).unwrap();
+ println!()
+}
diff --git a/vendor/tabled/examples/margin.rs b/vendor/tabled/examples/margin.rs
new file mode 100644
index 000000000..97498fb40
--- /dev/null
+++ b/vendor/tabled/examples/margin.rs
@@ -0,0 +1,21 @@
+//! This example demonstrates using the [`Margin`] [`TableOption`] to buffer space
+//! around a [`Table`] display.
+//!
+//! * Note how the [`Margin::fill()`] function allows for overriding the default whitespace
+//! with any [`char`].
+
+use tabled::{
+ settings::{Margin, Style},
+ Table,
+};
+
+fn main() {
+ let data = vec![["A", "B", "C"], ["D", "E", "F"], ["G", "H", "I"]];
+
+ let table = Table::new(data)
+ .with(Style::re_structured_text())
+ .with(Margin::new(4, 3, 2, 1).fill('<', '>', 'v', '^'))
+ .to_string();
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/matrix.rs b/vendor/tabled/examples/matrix.rs
new file mode 100644
index 000000000..59e22ae9c
--- /dev/null
+++ b/vendor/tabled/examples/matrix.rs
@@ -0,0 +1,27 @@
+//! This example demonstrates how [`tabled`] is an excellent tool for creating
+//! dataset visualizations.
+//!
+//! * 🚀 When native display solutions, such as the [`Debug`] trait and [pretty printing](https://doc.rust-lang.org/std/fmt/#sign0)
+//! options, aren't enough, [`tabled`] is a great choice for improving the quality of your displays.
+
+use tabled::{settings::Style, Table};
+
+fn matrix<const N: usize>() -> [[usize; N]; N] {
+ let mut matrix = [[0; N]; N];
+
+ #[allow(clippy::needless_range_loop)]
+ for i in 0..N {
+ for j in 0..N {
+ matrix[i][j] = (i + 1) * (j + 1);
+ }
+ }
+
+ matrix
+}
+
+fn main() {
+ let data = matrix::<10>();
+ let table = Table::new(data).with(Style::modern()).to_string();
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/merge_duplicates.rs b/vendor/tabled/examples/merge_duplicates.rs
new file mode 100644
index 000000000..250a95a56
--- /dev/null
+++ b/vendor/tabled/examples/merge_duplicates.rs
@@ -0,0 +1,58 @@
+//! This example demonstrates using the [`Merge`] [`TableOption`] to clarify
+//! redundancies in a [`Table`] display.
+//!
+//! * Note how repetative entries must be consecutive, in their specified direction,
+//! to be merged together.
+//!
+//! * Note how [`BorderSpanCorrection`] is used to resolve display issues incurred
+//! from [`Span`] decisions made through duplicate detection.
+//!
+//! * Merge supports both [`Merge::vertical()`] and [`Merge::horizontal()`].
+
+use tabled::{
+ settings::{
+ style::{BorderSpanCorrection, Style},
+ Merge,
+ },
+ Table, Tabled,
+};
+
+#[derive(Tabled)]
+struct DatabaseTable {
+ #[tabled(rename = "db")]
+ db_name: &'static str,
+ #[tabled(rename = "table")]
+ table_name: &'static str,
+ total: usize,
+}
+
+impl DatabaseTable {
+ fn new(db_name: &'static str, table_name: &'static str, total: usize) -> Self {
+ Self {
+ db_name,
+ table_name,
+ total,
+ }
+ }
+}
+
+fn main() {
+ let data = [
+ DatabaseTable::new("database_1", "table_1", 10712),
+ DatabaseTable::new("database_1", "table_2", 57),
+ DatabaseTable::new("database_1", "table_3", 57),
+ DatabaseTable::new("database_2", "table_1", 72),
+ DatabaseTable::new("database_2", "table_2", 75),
+ DatabaseTable::new("database_3", "table_1", 20),
+ DatabaseTable::new("database_3", "table_2", 21339),
+ DatabaseTable::new("database_3", "table_3", 141723),
+ ];
+
+ let table = Table::new(data)
+ .with(Merge::vertical())
+ .with(Style::modern())
+ .with(BorderSpanCorrection)
+ .to_string();
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/merge_duplicates_2.rs b/vendor/tabled/examples/merge_duplicates_2.rs
new file mode 100644
index 000000000..063664d3c
--- /dev/null
+++ b/vendor/tabled/examples/merge_duplicates_2.rs
@@ -0,0 +1,78 @@
+//! This example demonstrates using the [`Merge`] [`TableOption`] to clarify
+//! redundancies in a [`Table`] display.
+//!
+//! * Note how a custom theme is applied to give the [`Merged`](Merge) cells
+//! a unique look.
+//!
+//! * Merge supports both [`Merge::vertical()`] and [`Merge::horizontal()`].
+
+use tabled::{
+ settings::{
+ object::{Cell, Columns, Object, Rows},
+ style::{Border, BorderSpanCorrection, Style},
+ Merge, Modify,
+ },
+ Table, Tabled,
+};
+
+fn main() {
+ let data = [
+ DatabaseTable::new("database_1", "database_1", "table_1", 10712),
+ DatabaseTable::new("database_1", "database_1", "table_2", 57),
+ DatabaseTable::new("database_1", "database_1", "table_3", 57),
+ DatabaseTable::new("database_2", "", "table_1", 72),
+ DatabaseTable::new("database_2", "", "table_2", 75),
+ DatabaseTable::new("database_3", "database_3", "table_1", 20),
+ DatabaseTable::new("database_3", "", "table_2", 21339),
+ DatabaseTable::new("database_3", "", "table_3", 141723),
+ ];
+
+ let mut table = Table::builder(data).index().transpose().build();
+ config_theme(&mut table);
+ table.with(Merge::horizontal()).with(BorderSpanCorrection);
+
+ println!("{table}");
+}
+
+#[derive(Tabled)]
+struct DatabaseTable {
+ #[tabled(rename = "db")]
+ db_name: &'static str,
+ origin_db: &'static str,
+ #[tabled(rename = "table")]
+ table_name: &'static str,
+ total: usize,
+}
+
+impl DatabaseTable {
+ fn new(
+ db_name: &'static str,
+ origin_db: &'static str,
+ table_name: &'static str,
+ total: usize,
+ ) -> Self {
+ Self {
+ db_name,
+ origin_db,
+ table_name,
+ total,
+ }
+ }
+}
+
+fn config_theme(table: &mut Table) {
+ table
+ .with(Style::rounded().remove_vertical())
+ .with(Modify::new(Columns::first()).with(Border::default().right('│')))
+ .with(
+ Modify::new(Cell::new(0, 0)).with(
+ Border::default()
+ .corner_top_right('┬')
+ .corner_bottom_right('┼'),
+ ),
+ )
+ .with(
+ Modify::new(Columns::first().intersect(Rows::last()))
+ .with(Border::default().corner_bottom_right('â”´')),
+ );
+}
diff --git a/vendor/tabled/examples/nested_table.rs b/vendor/tabled/examples/nested_table.rs
new file mode 100644
index 000000000..8884c81c1
--- /dev/null
+++ b/vendor/tabled/examples/nested_table.rs
@@ -0,0 +1,117 @@
+//! This example demonstrates how [`Tables`](Table) can be comprised of other tables.
+//!
+//! * This first nested [`Table`] example showcases the [`Builder`] approach.
+//!
+//! * Note how a great deal of manual customizations have been applied to create a
+//! highly unique display.
+//!
+//! * 🎉 Inspired by https://github.com/p-ranav/tabulate#nested-tables/
+
+use std::iter::FromIterator;
+
+use tabled::{
+ builder::Builder,
+ settings::{
+ object::{Rows, Segment},
+ style::{HorizontalLine, Style},
+ Alignment, Modify, Padding, Width,
+ },
+ Table,
+};
+
+fn main() {
+ let animal = create_class(
+ "Animal",
+ &[("age", "Int", ""), ("gender", "String", "")],
+ &["isMammal", "mate"],
+ );
+
+ let duck = create_class(
+ "Duck",
+ &[("beakColor", "String", "yellow")],
+ &["swim", "quack"],
+ );
+
+ let mut table = Builder::from_iter([
+ [animal.to_string()],
+ [String::from("â–²")],
+ [String::from("|")],
+ [String::from("|")],
+ [duck.to_string()],
+ ])
+ .build();
+ table.with(Style::ascii().remove_horizontal()).with(
+ Modify::new(Segment::all())
+ .with(Padding::new(5, 5, 0, 0))
+ .with(Alignment::center()),
+ );
+
+ println!("{table}");
+}
+
+fn create_class(name: &str, fields: &[(&str, &str, &str)], methods: &[&str]) -> Table {
+ let fields = fields
+ .iter()
+ .map(|(field, t, d)| [format_field(field, t, d)]);
+ let mut table_fields = Builder::from_iter(fields).build();
+ table_fields.with(Style::ascii().remove_horizontal().remove_vertical());
+
+ let methods = methods.iter().map(|method| [format_method(method)]);
+ let mut table_methods = Builder::from_iter(methods).build();
+ table_methods.with(Style::ascii().remove_horizontal().remove_vertical());
+
+ let (table_fields, table_methods) = make_equal_width(table_fields, table_methods);
+
+ let mut table = Builder::from_iter([
+ [name.to_string()],
+ [table_fields.to_string()],
+ [table_methods.to_string()],
+ ])
+ .build();
+
+ table
+ .with(
+ Style::ascii()
+ .horizontals([HorizontalLine::new(1, Style::ascii().get_horizontal())])
+ .remove_horizontal()
+ .remove_vertical(),
+ )
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Rows::first()).with(Alignment::center()));
+
+ table
+}
+
+fn format_field(field: &&str, field_type: &&str, default_value: &&str) -> String {
+ if default_value.is_empty() {
+ format!("+{field}: {field_type}")
+ } else {
+ format!("+{field}: {field_type} = {default_value:?}")
+ }
+}
+
+fn format_method(method: &str) -> String {
+ format!("+{method}()")
+}
+
+fn make_equal_width(mut table1: Table, mut table2: Table) -> (Table, Table) {
+ // We want to make a fields table and methods table to have the same width.
+ // To not set it to constant, we check a width of each of them and correct the other.
+ //
+ // it's safe to do .len() because we use ascii theme and no colors.
+
+ let table1_width = table1.to_string().lines().next().unwrap().len();
+ let table2_width = table2.to_string().lines().next().unwrap().len();
+
+ match table1_width.cmp(&table2_width) {
+ std::cmp::Ordering::Less => {
+ table1.with(Width::increase(table2_width));
+ }
+ std::cmp::Ordering::Greater => {
+ table2.with(Width::increase(table1_width));
+ }
+ std::cmp::Ordering::Equal => (),
+ }
+
+ (table1, table2)
+}
diff --git a/vendor/tabled/examples/nested_table_2.rs b/vendor/tabled/examples/nested_table_2.rs
new file mode 100644
index 000000000..40b0cd0a9
--- /dev/null
+++ b/vendor/tabled/examples/nested_table_2.rs
@@ -0,0 +1,90 @@
+//! This example demonstrates a minimalist implementation of [`Tabling`](Table) records
+//! with struct fields.
+//!
+//! * This second nested [`Table`] example showcases the [`derive`] approach.
+//!
+//! * Note how the [`display_with`] attribute macro applies the custom `display_distribution`
+//! filter function, which, in this case, applies styles to the final display.
+
+use tabled::{settings::Style, Table, Tabled};
+
+#[derive(Tabled)]
+struct Vendor {
+ name: &'static str,
+ #[tabled(display_with = "display_distribution")]
+ main_os: Distribution,
+ #[tabled(display_with = "display_distribution")]
+ switch_os: Distribution,
+}
+
+impl Vendor {
+ fn new(name: &'static str, main_os: Distribution, switch_os: Distribution) -> Self {
+ Self {
+ name,
+ main_os,
+ switch_os,
+ }
+ }
+}
+
+fn display_distribution(d: &Distribution) -> String {
+ Table::new([d]).with(Style::extended()).to_string()
+}
+
+#[derive(Tabled)]
+struct Distribution {
+ name: &'static str,
+ #[tabled(display_with = "Self::display_based_on")]
+ based_on: Option<&'static str>,
+ is_active: bool,
+ is_cool: bool,
+}
+
+impl Distribution {
+ fn display_based_on(o: &Option<&'static str>) -> String {
+ match o {
+ &Some(s) => s.into(),
+ None => "Independent".into(),
+ }
+ }
+}
+
+impl Distribution {
+ fn new(
+ name: &'static str,
+ based_on: Option<&'static str>,
+ is_active: bool,
+ is_cool: bool,
+ ) -> Self {
+ Self {
+ name,
+ based_on,
+ is_active,
+ is_cool,
+ }
+ }
+}
+
+fn main() {
+ let data = [
+ Vendor::new(
+ "Azure",
+ Distribution::new("Windows", None, true, true),
+ Distribution::new("Manjaro", Some("Arch"), true, true),
+ ),
+ Vendor::new(
+ "AWS",
+ Distribution::new("Debian", None, true, true),
+ Distribution::new("Arch", None, true, true),
+ ),
+ Vendor::new(
+ "GCP",
+ Distribution::new("Debian", None, true, true),
+ Distribution::new("Arch", None, true, true),
+ ),
+ ];
+
+ let table = Table::new(data).with(Style::modern()).to_string();
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/nested_table_3.rs b/vendor/tabled/examples/nested_table_3.rs
new file mode 100644
index 000000000..8e79b27a5
--- /dev/null
+++ b/vendor/tabled/examples/nested_table_3.rs
@@ -0,0 +1,56 @@
+//! This example demonstrates creating a nested [`Table`] by instantiating a new
+//! [`Table`] from a collection of other [`Tables`](Table).
+//!
+//! * This third nested [`Table`] example showcases the [`Table::new()`] approach.
+
+use tabled::{
+ settings::{
+ object::{Cell, Segment},
+ Alignment, Border, Extract, Highlight, Modify, Panel, Style,
+ },
+ Table, Tabled,
+};
+
+#[derive(Tabled)]
+struct Contribution {
+ author: &'static str,
+ profile: &'static str,
+}
+
+impl Contribution {
+ fn new(author: &'static str, profile: &'static str) -> Self {
+ Self { author, profile }
+ }
+}
+
+fn main() {
+ let committers = [
+ Contribution::new("kozmod", "https:/github.com/kozmod"),
+ Contribution::new("IsaacCloos", "https:/github.com/IsaacCloos"),
+ ];
+
+ let issuers = [Contribution::new(
+ "aharpervc",
+ "https:/github.com/aharpervc",
+ )];
+
+ let committers_table = Table::new(committers)
+ .with(Panel::header("Contributors"))
+ .with(Modify::new(Segment::all()).with(Alignment::center()))
+ .to_string();
+
+ let issues_table = Table::new(issuers)
+ .with(Panel::header("Issuers"))
+ .with(Modify::new(Segment::all()).with(Alignment::center()))
+ .to_string();
+
+ let mut a_welcome_table =
+ Table::new([String::from("Thank You"), committers_table, issues_table]);
+ a_welcome_table
+ .with(Extract::rows(1..))
+ .with(Style::ascii().remove_horizontal())
+ .with(Modify::new(Segment::all()).with(Alignment::center()))
+ .with(Highlight::new(Cell::new(0, 0), Border::filled('*')));
+
+ println!("{a_welcome_table}");
+}
diff --git a/vendor/tabled/examples/panel.rs b/vendor/tabled/examples/panel.rs
new file mode 100644
index 000000000..343abcd67
--- /dev/null
+++ b/vendor/tabled/examples/panel.rs
@@ -0,0 +1,63 @@
+//! This example demonstrates using the [`Panel`] [`TableOption`] to inject
+//! table-length columns and rows into a [`Table`].
+//!
+//! * [`Panel`] supports four injection options:
+//! * Horizontal | manual index selection
+//! * Vertical | manual index selection
+//! * Header | before first row
+//! * Footer | after last row
+
+use tabled::{
+ settings::{
+ object::Segment,
+ style::{BorderSpanCorrection, Style},
+ Alignment, Modify, Panel, Width,
+ },
+ Table, Tabled,
+};
+
+#[derive(Tabled)]
+struct Release {
+ version: &'static str,
+ published_date: &'static str,
+ is_active: bool,
+ major_feature: &'static str,
+}
+
+impl Release {
+ const fn new(
+ version: &'static str,
+ published_date: &'static str,
+ is_active: bool,
+ major_feature: &'static str,
+ ) -> Self {
+ Self {
+ version,
+ published_date,
+ is_active,
+ major_feature,
+ }
+ }
+}
+
+const DATA: [Release; 3] = [
+ Release::new("0.2.1", "2021-06-23", true, "#[header(inline)] attribute"),
+ Release::new("0.2.0", "2021-06-19", false, "API changes"),
+ Release::new("0.1.4", "2021-06-07", false, "display_with attribute"),
+];
+
+fn main() {
+ let mut table = Table::new(DATA);
+ table
+ .with(Panel::header("Tabled Releases"))
+ .with(Panel::footer(format!("N - {}", DATA.len())))
+ .with(Panel::vertical(0, "Some text goes here"))
+ .with(Panel::vertical(5, "Some text goes here"))
+ .with(Modify::new((0, 0)).with(Width::wrap(1)))
+ .with(Modify::new((0, 5)).with(Width::wrap(1)))
+ .with(Modify::new(Segment::all()).with(Alignment::center()))
+ .with(Style::modern())
+ .with(BorderSpanCorrection);
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/pool_table.rs b/vendor/tabled/examples/pool_table.rs
new file mode 100644
index 000000000..593631e06
--- /dev/null
+++ b/vendor/tabled/examples/pool_table.rs
@@ -0,0 +1,33 @@
+//! This example demonstrates a [`PoolTable`] usage.
+
+use tabled::{
+ settings::{Alignment, Style},
+ tables::{PoolTable, TableValue},
+};
+
+fn main() {
+ let data = vec![
+ vec!["Hello World", "Hello World", "Hello World"],
+ vec!["Hello", "", "Hello"],
+ vec!["W", "o", "r", "l", "d"],
+ ];
+
+ let data = TableValue::Column(
+ data.into_iter()
+ .map(|row| {
+ TableValue::Row(
+ row.into_iter()
+ .map(|text| TableValue::Cell(text.to_owned()))
+ .collect(),
+ )
+ })
+ .collect(),
+ );
+
+ let table = PoolTable::from(data)
+ .with(Style::modern())
+ .with(Alignment::center())
+ .to_string();
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/pool_table2.rs b/vendor/tabled/examples/pool_table2.rs
new file mode 100644
index 000000000..02b457250
--- /dev/null
+++ b/vendor/tabled/examples/pool_table2.rs
@@ -0,0 +1,26 @@
+//! This example demonstrates a [`PoolTable`] usage.
+
+use tabled::{
+ settings::{Alignment, Style},
+ tables::PoolTable,
+};
+
+fn main() {
+ let characters = [
+ "Naruto Uzumaki",
+ "Kakashi Hatake",
+ "Minato Namikaze",
+ "Jiraiya",
+ "Orochimaru",
+ "Itachi Uchiha",
+ ];
+
+ let data = characters.chunks(2);
+
+ let table = PoolTable::new(data)
+ .with(Style::dots())
+ .with(Alignment::center())
+ .to_string();
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/rotate.rs b/vendor/tabled/examples/rotate.rs
new file mode 100644
index 000000000..8db997527
--- /dev/null
+++ b/vendor/tabled/examples/rotate.rs
@@ -0,0 +1,38 @@
+//! This example demonstrates using the [`Rotate`] [`TableOption`] to rotate the cells
+//! of a [`Table`].
+//!
+//! * [`Rotate`] supports four motions:
+//! * `Left` | 90 degree shift
+//! * `Right` | 90 degree shift
+//! * `Top` & `Bottom` | Reverse row order
+
+use tabled::{settings::Rotate, Table, Tabled};
+
+#[derive(Tabled)]
+struct Linux {
+ id: u8,
+ distribution: &'static str,
+ link: &'static str,
+}
+
+impl Linux {
+ fn new(id: u8, distribution: &'static str, link: &'static str) -> Self {
+ Self {
+ id,
+ distribution,
+ link,
+ }
+ }
+}
+
+fn main() {
+ let data = vec![
+ Linux::new(0, "Fedora", "https://getfedora.org/"),
+ Linux::new(2, "OpenSUSE", "https://www.opensuse.org/"),
+ Linux::new(3, "Endeavouros", "https://endeavouros.com/"),
+ ];
+
+ let table = Table::new(data).with(Rotate::Left).to_string();
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/settings_list.rs b/vendor/tabled/examples/settings_list.rs
new file mode 100644
index 000000000..b0b0aca4c
--- /dev/null
+++ b/vendor/tabled/examples/settings_list.rs
@@ -0,0 +1,57 @@
+//! This example demonstrates using the [`Settings`] [`TableOption`] to array
+//! [`Table`] configurations in a separate step from instantiation.
+//!
+//! * Note how this methodoly can lead to huge performance gains
+//! with compile-time constants.
+
+use tabled::{
+ settings::{
+ object::{FirstRow, Rows},
+ style::On,
+ Alignment, Modify, ModifyList, Padding, Settings, Style,
+ },
+ Table, Tabled,
+};
+
+#[derive(Tabled)]
+struct CodeEditor {
+ name: &'static str,
+ first_release: &'static str,
+ developer: &'static str,
+}
+
+impl CodeEditor {
+ fn new(name: &'static str, first_release: &'static str, developer: &'static str) -> Self {
+ Self {
+ name,
+ first_release,
+ developer,
+ }
+ }
+}
+
+// unfortunately we can't leave it as a blank type, so we need to provide it.
+type TableTheme = Settings<
+ Settings<Settings<Settings, Style<On, On, On, On, On, On>>, Padding>,
+ ModifyList<FirstRow, Alignment>,
+>;
+
+const THEME: TableTheme = Settings::empty()
+ .with(Style::ascii())
+ .with(Padding::new(1, 3, 0, 0))
+ .with(Modify::list(Rows::first(), Alignment::center()));
+
+fn main() {
+ let data = [
+ CodeEditor::new("Sublime Text 3", "2008", "Sublime HQ"),
+ CodeEditor::new("Visual Studio Code", "2015", "Microsoft"),
+ CodeEditor::new("Notepad++", "2003", "Don Ho"),
+ CodeEditor::new("GNU Emacs", "1984", "Richard Stallman"),
+ CodeEditor::new("Neovim", "2015", "Vim community"),
+ ];
+
+ let mut table = Table::new(data);
+ table.with(THEME);
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/shadow.rs b/vendor/tabled/examples/shadow.rs
new file mode 100644
index 000000000..baa856ed9
--- /dev/null
+++ b/vendor/tabled/examples/shadow.rs
@@ -0,0 +1,160 @@
+//! This example can be run with the following command:
+//!
+//! `echo -e -n 'Some text\nIn the box' | cargo run --example shadow`
+//!
+//! This example demonstrates using the [`Shadow`] [`TableOption`] to create
+//! a striking frame around a [`Table`] display.
+//!
+//! * [`Shadow`] supports several configurations:
+//! * Thickness
+//! * Offset
+//! * Direction
+//! * Color
+//! * Fill character
+//!
+//! * 🎉 Inspired by <https://en.wikipedia.org/wiki/Box-drawing_character>
+
+use std::{io::Read, iter::FromIterator};
+
+use tabled::{
+ builder::Builder,
+ grid::util::string,
+ row,
+ settings::{
+ object::Cell,
+ style::{BorderChar, Offset, RawStyle, Style},
+ Height, Modify, Padding, Shadow, Width,
+ },
+ Table,
+};
+
+fn main() {
+ let message = read_message();
+ print_table(message);
+}
+
+fn print_table(message: String) {
+ let main_table = create_main_table(&message);
+ let main_table_width = main_table.total_width();
+ let small_table_row = create_small_table_list(main_table_width);
+ println!("{small_table_row}");
+ println!("{main_table}");
+}
+
+fn read_message() -> String {
+ let mut buf = String::new();
+ std::io::stdin().read_to_string(&mut buf).unwrap();
+
+ buf
+}
+
+fn create_small_table_list(width_available: usize) -> String {
+ let mut tables = [
+ create_small_table(Style::modern().into()),
+ create_small_table(Style::extended().into()),
+ create_small_table(
+ Style::modern()
+ .left('â•‘')
+ .right('â•‘')
+ .intersection_left('â•Ÿ')
+ .intersection_right('â•¢')
+ .corner_top_right('â•–')
+ .corner_top_left('â•“')
+ .corner_bottom_right('╜')
+ .corner_bottom_left('â•™')
+ .into(),
+ ),
+ create_small_table(
+ Style::modern()
+ .top('â•')
+ .bottom('â•')
+ .corner_top_right('â••')
+ .corner_top_left('â•’')
+ .corner_bottom_right('â•›')
+ .corner_bottom_left('╘')
+ .horizontal('â•')
+ .intersection_left('â•ž')
+ .intersection_right('â•¡')
+ .intersection_top('╤')
+ .intersection_bottom('╧')
+ .intersection('╪')
+ .into(),
+ ),
+ ];
+ const TOTAL_TABLE_WIDTH: usize = 19;
+
+ if width_available > TOTAL_TABLE_WIDTH {
+ let mut rest = width_available - TOTAL_TABLE_WIDTH;
+ while rest > 0 {
+ for table in &mut tables {
+ let current_width = table.total_width();
+ table.with(Width::increase(current_width + 1));
+ rest -= 1;
+
+ if rest == 0 {
+ break;
+ }
+ }
+ }
+ }
+
+ let small_table_row = row![tables[0], tables[1], tables[2], tables[3]]
+ .with(Style::blank())
+ .with(Padding::zero())
+ .to_string();
+ small_table_row
+}
+
+fn create_small_table(style: RawStyle) -> Table {
+ let mut table = Builder::from_iter(vec![vec![" ", ""], vec![" ", ""]]).build();
+ table
+ .with(style)
+ .with(Padding::zero())
+ .with(Height::list([1, 0]));
+
+ table
+}
+
+fn create_main_table(message: &str) -> Table {
+ let (count_lines, message_width) = string::string_dimension(message);
+ let count_additional_separators = if count_lines > 2 { count_lines - 2 } else { 0 };
+
+ let left_table = format!(
+ " â•”â•â•â•â•— \n â•šâ•â•¦â•â• \n{}â•â•¤â•â•â•©â•â•â•¤\n ├──┬──┤\n └──┴──┘",
+ (0..count_additional_separators)
+ .map(|_| " â•‘ \n")
+ .collect::<String>()
+ );
+
+ let message = if count_lines < 2 {
+ let mut i = count_lines;
+ let mut buf = message.to_string();
+ while i < 2 {
+ buf.push('\n');
+ i += 1;
+ }
+
+ buf
+ } else {
+ message.to_owned()
+ };
+ let count_lines = count_lines.max(2);
+
+ let message = format!("{}\n{}", message, "â•".repeat(message_width));
+
+ let mut table = row![left_table, message];
+ table
+ .with(Padding::zero())
+ .with(Style::modern().remove_vertical())
+ .with(
+ Modify::new(Cell::new(0, 0))
+ .with(BorderChar::vertical('â•ž', Offset::Begin(count_lines))),
+ )
+ .with(
+ Modify::new(Cell::new(0, 2))
+ .with(BorderChar::vertical('â•¡', Offset::Begin(count_lines))),
+ )
+ .with(Shadow::new(2));
+
+ table
+}
diff --git a/vendor/tabled/examples/span.rs b/vendor/tabled/examples/span.rs
new file mode 100644
index 000000000..e6a75576a
--- /dev/null
+++ b/vendor/tabled/examples/span.rs
@@ -0,0 +1,40 @@
+//! This example demonstrates using the [`Span`] [`CellOption`] to
+//! extend [Cells](Cell) over a specified number of columns/rows.
+//!
+//! * Note how [`Span`] is available for [`Cell`] modifications
+//! after the [`Modify`] [`TableOption`] is applied.
+//!
+//! * âš ï¸ `with()` is a reused pattern within [`tabled`] for both [`Table`]
+//! and [`Cell`] modifications. It can be easy for beginners to mistakenly
+//! try to pass [`settings`] intended for one to the other.
+
+use tabled::{
+ settings::{
+ object::Cell,
+ style::{BorderSpanCorrection, Style},
+ Alignment, Modify, Span,
+ },
+ Table,
+};
+
+fn main() {
+ let data = [["just 1 column"; 5]; 5];
+
+ let h_span = |r, c, span| Modify::new(Cell::new(r, c)).with(Span::row(span));
+ let v_span = |r, c, span| Modify::new(Cell::new(r, c)).with(Span::column(span));
+
+ let table = Table::new(data)
+ .with(h_span(0, 0, 5).with("span all 5 columns"))
+ .with(h_span(1, 0, 4).with("span 4 columns"))
+ .with(h_span(2, 0, 2).with("span 2 columns"))
+ .with(v_span(2, 4, 4).with("just 1 column\nspan\n4\ncolumns"))
+ .with(v_span(3, 1, 2).with("span 2 columns\nspan\n2\ncolumns"))
+ .with(v_span(2, 3, 3).with("just 1 column\nspan\n3\ncolumns"))
+ .with(h_span(3, 1, 2))
+ .with(Style::modern())
+ .with(BorderSpanCorrection)
+ .with(Alignment::center_vertical())
+ .to_string();
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/split.rs b/vendor/tabled/examples/split.rs
new file mode 100644
index 000000000..d8e6c679a
--- /dev/null
+++ b/vendor/tabled/examples/split.rs
@@ -0,0 +1,43 @@
+//! This example demonstrates using the [`Split`] [`TableOption`] to
+//! transform a [`Table`] display in multiple ways.
+//!
+//! * Several configurations are available to customize a [`Split`] instruction:
+//! * [`Index`](usize)
+//! * [`Behavior`]
+//! * [`Direction`]
+//! * [`Display`]
+
+use std::iter::FromIterator;
+use tabled::{
+ col, row,
+ settings::{split::Split, style::Style, Padding},
+ Table,
+};
+
+fn main() {
+ let mut table = Table::from_iter(['a'..='z']);
+ table.with(Style::modern());
+
+ let table_1 = table.clone().with(Split::column(12)).clone();
+ let table_2 = table_1.clone().with(Split::column(2).zip()).to_string();
+ let table_3 = table_1.clone().with(Split::column(2).concat()).to_string();
+ let table_4 = table_1.clone().with(Split::row(2).zip()).to_string();
+ let table_5 = table_1.clone().with(Split::row(2).concat()).to_string();
+
+ let mut table = col![
+ table,
+ row![
+ table_1,
+ table_2,
+ table_3,
+ col![table_4, table_5]
+ .with(Style::blank())
+ .with(Padding::zero())
+ ]
+ .with(Style::blank())
+ .with(Padding::zero()),
+ ];
+ table.with(Style::blank());
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/table.rs b/vendor/tabled/examples/table.rs
new file mode 100644
index 000000000..d6d5c392c
--- /dev/null
+++ b/vendor/tabled/examples/table.rs
@@ -0,0 +1,56 @@
+//! This example demonstrates the fundemental qualities of the [crate](https://crates.io/crates/tabled) [`tabled`].
+//!
+//! * [`tabled`] is powered by convenient [procedural macros](https://doc.rust-lang.org/reference/procedural-macros.html#procedural-macros)
+//! like [`Tabled`]; a deriveable trait that allows your custom
+//! structs and enums to be represented with [`tabled`]'s powerful suite of features.
+//!
+//! * [`Table`] is the root object to which all of [`tabled`]'s implementation
+//! tools guide you, and from which all of its customization options derive value.
+//! The READMEs, examples, and docs found in this project will show you many dozens
+//! of ways you can build tables, and show you how to use the available tools
+//! to build the data representations that best fit your needs.
+//!
+//! * [`Table::with()`] plays a central role in giving the user control over their
+//! displays. A majority of [`Table`] customizations are implemented through this highly
+//! dynamic function. A few [`TableOptions`](TableOption) include:
+//! * [`Style`]
+//! * [`Modify`]
+//! * [`Alignment`]
+//! * [`Padding`]
+
+use tabled::{
+ settings::{object::Rows, Alignment, Modify, Style},
+ Table, Tabled,
+};
+
+#[derive(Debug, Tabled)]
+struct Distribution {
+ name: String,
+ based_on: String,
+ is_active: bool,
+}
+
+impl Distribution {
+ fn new(name: &str, base: &str, is_active: bool) -> Self {
+ Self {
+ based_on: base.to_owned(),
+ name: name.to_owned(),
+ is_active,
+ }
+ }
+}
+
+fn main() {
+ let data = [
+ Distribution::new("Debian", "", true),
+ Distribution::new("Arch", "", true),
+ Distribution::new("Manjaro", "Arch", true),
+ ];
+
+ let mut table = Table::new(data);
+ table
+ .with(Style::markdown())
+ .with(Modify::new(Rows::first()).with(Alignment::center()));
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/examples/table_width.rs b/vendor/tabled/examples/table_width.rs
new file mode 100644
index 000000000..372adb489
--- /dev/null
+++ b/vendor/tabled/examples/table_width.rs
@@ -0,0 +1,40 @@
+//! This example demonstrates using the [`Width`] [`TableOption`] to expand and
+//! contract a [`Table`] display.
+//!
+//! * Note how table-wide size adjustments are applied proportionally to all columns.
+//!
+//! * Note how [fluent](https://en.wikipedia.org/wiki/Fluent_interface) functions
+//! are available to make subtle customizations to [`Width`] primary features like
+//! [`Width::truncate()`], [`Width::increase()`], and [`Width::wrap()`].
+
+use tabled::{
+ settings::{measurement::Percent, object::Segment, Alignment, Modify, Style, Width},
+ Table,
+};
+
+fn main() {
+ let data = [
+ ["Hello World!!!", "3.3.22.2"],
+ ["Guten Morgen", "1.1.1.1"],
+ ["Добры вечар", "127.0.0.1"],
+ ["Bonjour le monde", ""],
+ ["Ciao mondo", ""],
+ ];
+
+ let mut table = Table::builder(data).build();
+ table.with(Style::markdown()).with(Alignment::left());
+
+ println!("Original table\n{table}\n");
+
+ table.with(Width::truncate(20).suffix("..."));
+
+ println!("Truncated table\n{table}\n");
+
+ table.with(Modify::new(Segment::all()).with(Width::wrap(5)));
+
+ println!("Wrapped table\n{table}\n");
+
+ table.with(Width::increase(Percent(200)));
+
+ println!("Widen table\n{table}");
+}
diff --git a/vendor/tabled/examples/table_width_2.rs b/vendor/tabled/examples/table_width_2.rs
new file mode 100644
index 000000000..d2601fc87
--- /dev/null
+++ b/vendor/tabled/examples/table_width_2.rs
@@ -0,0 +1,23 @@
+//! This example demonstrates using [`Wrap::keep_words()`] to preserve
+//! word shape while truncating a table to the specified size. Without
+//! this setting enabled, a word could possibly be split into pieces,
+//! greatly reducing the legibility of the display.
+
+use tabled::{
+ settings::{object::Segment, Alignment, Modify, Style, Width},
+ Table,
+};
+
+fn main() {
+ let readme_text = include_str!("../../CHANGELOG.md");
+ let lines = readme_text.lines().filter(|s| !s.is_empty()).enumerate();
+
+ let mut table = Table::new(lines);
+ table.with(Style::ascii_rounded()).with(
+ Modify::new(Segment::all())
+ .with(Width::wrap(30).keep_words())
+ .with(Alignment::left()),
+ );
+
+ println!("{table}");
+}
diff --git a/vendor/tabled/src/builder/index_builder.rs b/vendor/tabled/src/builder/index_builder.rs
new file mode 100644
index 000000000..081f580df
--- /dev/null
+++ b/vendor/tabled/src/builder/index_builder.rs
@@ -0,0 +1,318 @@
+use crate::Table;
+
+use super::Builder;
+
+/// [`IndexBuilder`] helps to add an index to the table.
+///
+/// Index is a column on the left of the table.
+///
+/// It also can be used to transpose the table.
+///
+/// Creates a new [`IndexBuilder`] instance.
+///
+/// It creates a default index a range from 0 to N. (N - count rows)
+/// It also sets a default columns to the range 0 .. N (N - count columns).
+///nfo<'a>
+/// # Example
+///
+/// ```
+/// use tabled::builder::Builder;
+///
+/// let mut builder = Builder::default();
+/// builder.set_header(["i", "col-1", "col-2"]);
+/// builder.push_record(["0", "value-1", "value-2"]);
+///
+/// let table = builder.index().build().to_string();
+///
+/// assert_eq!(
+/// table,
+/// "+---+---+---------+---------+\n\
+/// | | i | col-1 | col-2 |\n\
+/// +---+---+---------+---------+\n\
+/// | 0 | 0 | value-1 | value-2 |\n\
+/// +---+---+---------+---------+"
+/// )
+/// ```
+///
+/// # Example
+///
+/// ```
+/// use tabled::builder::Builder;
+///
+/// let table = Builder::default()
+/// .index()
+/// .build();
+/// ```
+#[derive(Debug, Clone)]
+pub struct IndexBuilder {
+ /// Index is an index data.
+ /// It's always set.
+ index: Vec<String>,
+ /// Name of an index
+ name: Option<String>,
+ /// A flag which checks if we need to actually use index.
+ ///
+ /// It might happen when it's only necessary to [`Self::transpose`] table.
+ print_index: bool,
+ /// A flag which checks if table was transposed.
+ transposed: bool,
+ /// Data originated in [`Builder`].
+ data: Vec<Vec<String>>,
+}
+
+impl IndexBuilder {
+ /// No flag makes builder to not use an index.
+ ///
+ /// It may be useful when only [`Self::transpose`] need to be used.
+ ///
+ /// ```
+ /// use tabled::builder::Builder;
+ ///
+ /// let mut builder = Builder::default();
+ /// builder.set_header(["i", "col-1", "col-2"]);
+ /// builder.push_record(["0", "value-1", "value-2"]);
+ /// builder.push_record(["2", "value-3", "value-4"]);
+ ///
+ /// let table = builder.index().hide().build().to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// "+---+---------+---------+\n\
+ /// | i | col-1 | col-2 |\n\
+ /// +---+---------+---------+\n\
+ /// | 0 | value-1 | value-2 |\n\
+ /// +---+---------+---------+\n\
+ /// | 2 | value-3 | value-4 |\n\
+ /// +---+---------+---------+"
+ /// )
+ /// ```
+ pub fn hide(mut self) -> Self {
+ self.print_index = false;
+ self
+ }
+
+ /// Set an index name.
+ ///
+ /// When [`None`] the name won't be used.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use tabled::builder::Builder;
+ ///
+ /// let mut builder = Builder::default();
+ /// builder.set_header(["i", "column1", "column2"]);
+ /// builder.push_record(["0", "value1", "value2"]);
+ ///
+ /// let table = builder.index()
+ /// .column(1)
+ /// .name(Some(String::from("index")))
+ /// .build();
+ ///
+ /// assert_eq!(
+ /// table.to_string(),
+ /// "+--------+---+---------+\n\
+ /// | | i | column2 |\n\
+ /// +--------+---+---------+\n\
+ /// | index | | |\n\
+ /// +--------+---+---------+\n\
+ /// | value1 | 0 | value2 |\n\
+ /// +--------+---+---------+"
+ /// )
+ /// ```
+ pub fn name(mut self, name: Option<String>) -> Self {
+ self.name = name;
+ self
+ }
+
+ /// Sets a index to the chosen column.
+ ///
+ /// Also sets a name of the index to the column name.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use tabled::builder::Builder;
+ ///
+ /// let mut builder = Builder::default();
+ /// builder.set_header(["i", "column1", "column2"]);
+ /// builder.push_record(["0", "value1", "value2"]);
+ ///
+ /// let table = builder.index().column(1).build();
+ ///
+ /// assert_eq!(
+ /// table.to_string(),
+ /// "+---------+---+---------+\n\
+ /// | | i | column2 |\n\
+ /// +---------+---+---------+\n\
+ /// | column1 | | |\n\
+ /// +---------+---+---------+\n\
+ /// | value1 | 0 | value2 |\n\
+ /// +---------+---+---------+"
+ /// )
+ /// ```
+ pub fn column(mut self, column: usize) -> Self {
+ if column >= matrix_count_columns(&self.data) {
+ return self;
+ }
+
+ self.index = get_column(&mut self.data, column);
+
+ let name = remove_or_default(&mut self.index, 0);
+ self.name = Some(name);
+
+ self
+ }
+
+ /// Transpose index and columns.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use tabled::builder::Builder;
+ ///
+ /// let mut builder = Builder::default();
+ /// builder.set_header(["i", "column-1", "column-2", "column-3"]);
+ /// builder.push_record(["0", "value-1", "value-2", "value-3"]);
+ /// builder.push_record(["1", "value-4", "value-5", "value-6"]);
+ /// builder.push_record(["2", "value-7", "value-8", "value-9"]);
+ ///
+ /// let table = builder.index().column(1).transpose().build();
+ ///
+ /// assert_eq!(
+ /// table.to_string(),
+ /// "+----------+---------+---------+---------+\n\
+ /// | column-1 | value-1 | value-4 | value-7 |\n\
+ /// +----------+---------+---------+---------+\n\
+ /// | i | 0 | 1 | 2 |\n\
+ /// +----------+---------+---------+---------+\n\
+ /// | column-2 | value-2 | value-5 | value-8 |\n\
+ /// +----------+---------+---------+---------+\n\
+ /// | column-3 | value-3 | value-6 | value-9 |\n\
+ /// +----------+---------+---------+---------+"
+ /// )
+ /// ```
+ pub fn transpose(mut self) -> Self {
+ let columns = &mut self.data[0];
+ std::mem::swap(&mut self.index, columns);
+
+ let columns = self.data.remove(0);
+
+ make_rows_columns(&mut self.data);
+
+ self.data.insert(0, columns);
+
+ self.transposed = !self.transposed;
+
+ self
+ }
+
+ /// Builds a table.
+ pub fn build(self) -> Table {
+ let builder: Builder = self.into();
+ builder.build()
+ }
+}
+
+impl From<Builder> for IndexBuilder {
+ fn from(builder: Builder) -> Self {
+ let has_header = builder.has_header();
+
+ let mut data: Vec<Vec<_>> = builder.into();
+
+ if !has_header {
+ let count_columns = matrix_count_columns(&data);
+ data.insert(0, build_range_index(count_columns));
+ }
+
+ // we exclude first row which contains a header
+ let data_len = data.len().saturating_sub(1);
+ let index = build_range_index(data_len);
+
+ Self {
+ index,
+ name: None,
+ print_index: true,
+ transposed: false,
+ data,
+ }
+ }
+}
+
+impl From<IndexBuilder> for Builder {
+ fn from(b: IndexBuilder) -> Self {
+ build_index(b)
+ }
+}
+
+fn build_index(mut b: IndexBuilder) -> Builder {
+ if b.index.is_empty() {
+ return Builder::default();
+ }
+
+ // add index column
+ if b.print_index {
+ b.index.insert(0, String::default());
+
+ insert_column(&mut b.data, b.index, 0);
+ }
+
+ if let Some(name) = b.name {
+ if b.transposed && b.print_index {
+ b.data[0][0] = name;
+ } else {
+ b.data.insert(1, vec![name]);
+ }
+ }
+
+ Builder::from(b.data)
+}
+
+fn build_range_index(n: usize) -> Vec<String> {
+ (0..n).map(|i| i.to_string()).collect()
+}
+
+fn remove_or_default<T: Default>(v: &mut Vec<T>, i: usize) -> T {
+ if v.len() > i {
+ v.remove(i)
+ } else {
+ T::default()
+ }
+}
+
+fn get_column<T: Default>(v: &mut [Vec<T>], col: usize) -> Vec<T> {
+ let mut column = Vec::with_capacity(v.len());
+ for row in v.iter_mut() {
+ let value = remove_or_default(row, col);
+ column.push(value);
+ }
+
+ column
+}
+
+fn make_rows_columns<T: Default>(v: &mut Vec<Vec<T>>) {
+ let count_columns = matrix_count_columns(v);
+
+ let mut columns = Vec::with_capacity(count_columns);
+ for _ in 0..count_columns {
+ let column = get_column(v, 0);
+ columns.push(column);
+ }
+
+ v.clear();
+
+ for column in columns {
+ v.push(column);
+ }
+}
+
+fn insert_column<T: Default>(v: &mut [Vec<T>], mut column: Vec<T>, col: usize) {
+ for row in v.iter_mut() {
+ let value = remove_or_default(&mut column, col);
+ row.insert(col, value);
+ }
+}
+
+fn matrix_count_columns<T>(v: &[Vec<T>]) -> usize {
+ v.first().map_or(0, |row| row.len())
+}
diff --git a/vendor/tabled/src/builder/mod.rs b/vendor/tabled/src/builder/mod.rs
new file mode 100644
index 000000000..9002ba237
--- /dev/null
+++ b/vendor/tabled/src/builder/mod.rs
@@ -0,0 +1,118 @@
+//! Builder module provides a [`Builder`] type which helps building
+//! a [`Table`] dynamically.
+//!
+//! It also contains [`IndexBuilder`] which can help to build a table with index.
+//!
+//! # Examples
+//!
+//! Here's an example of [`IndexBuilder`] usage
+//!
+#![cfg_attr(feature = "derive", doc = "```")]
+#![cfg_attr(not(feature = "derive"), doc = "```ignore")]
+//! use tabled::{Table, Tabled, settings::Style};
+//!
+//! #[derive(Tabled)]
+//! struct Mission {
+//! name: &'static str,
+//! #[tabled(inline)]
+//! status: Status,
+//! }
+//!
+//! #[derive(Tabled)]
+//! enum Status {
+//! Complete,
+//! Started,
+//! Ready,
+//! Unknown,
+//! }
+//!
+//! let data = [
+//! Mission { name: "Algebra", status: Status::Unknown },
+//! Mission { name: "Apolo", status: Status::Complete },
+//! ];
+//!
+//! let mut builder = Table::builder(&data)
+//! .index()
+//! .column(0)
+//! .name(None)
+//! .transpose();
+//!
+//! let mut table = builder.build();
+//! table.with(Style::modern());
+//!
+//! println!("{}", table);
+//!
+//! assert_eq!(
+//! table.to_string(),
+//! concat!(
+//! "┌──────────┬─────────┬───────â”\n",
+//! "│ │ Algebra │ Apolo │\n",
+//! "├──────────┼─────────┼───────┤\n",
+//! "│ Complete │ │ + │\n",
+//! "├──────────┼─────────┼───────┤\n",
+//! "│ Started │ │ │\n",
+//! "├──────────┼─────────┼───────┤\n",
+//! "│ Ready │ │ │\n",
+//! "├──────────┼─────────┼───────┤\n",
+//! "│ Unknown │ + │ │\n",
+//! "└──────────┴─────────┴───────┘",
+//! ),
+//! )
+//! ```
+//!
+//! Example when we don't want to show empty data of enum where not all variants are used.
+//!
+#![cfg_attr(feature = "derive", doc = "```")]
+#![cfg_attr(not(feature = "derive"), doc = "```ignore")]
+//! use tabled::{Table, Tabled, settings::Style};
+//!
+//! #[derive(Tabled)]
+//! enum Status {
+//! #[tabled(inline)]
+//! Complete {
+//! started_timestamp: usize,
+//! finihsed_timestamp: usize,
+//! },
+//! #[tabled(inline)]
+//! Started {
+//! timestamp: usize,
+//! },
+//! Ready,
+//! Unknown,
+//! }
+//!
+//! let data = [
+//! Status::Unknown,
+//! Status::Complete { started_timestamp: 123, finihsed_timestamp: 234 },
+//! ];
+//!
+//! let mut builder = Table::builder(&data);
+//! builder.clean();
+//!
+//! let table = builder.build()
+//! .with(Style::modern())
+//! .to_string();
+//!
+//! println!("{}", table);
+//!
+//! assert_eq!(
+//! table,
+//! concat!(
+//! "┌───────────────────┬────────────────────┬─────────â”\n",
+//! "│ started_timestamp │ finihsed_timestamp │ Unknown │\n",
+//! "├───────────────────┼────────────────────┼─────────┤\n",
+//! "│ │ │ + │\n",
+//! "├───────────────────┼────────────────────┼─────────┤\n",
+//! "│ 123 │ 234 │ │\n",
+//! "└───────────────────┴────────────────────┴─────────┘",
+//! ),
+//! )
+//! ```
+//!
+//! [`Table`]: crate::Table
+
+mod index_builder;
+mod table_builder;
+
+pub use index_builder::IndexBuilder;
+pub use table_builder::Builder;
diff --git a/vendor/tabled/src/builder/table_builder.rs b/vendor/tabled/src/builder/table_builder.rs
new file mode 100644
index 000000000..40316494e
--- /dev/null
+++ b/vendor/tabled/src/builder/table_builder.rs
@@ -0,0 +1,506 @@
+use std::iter::FromIterator;
+
+use crate::{grid::records::vec_records::CellInfo, Table};
+
+use super::IndexBuilder;
+
+/// Builder creates a [`Table`] from dynamic data set.
+///
+/// It useful when the amount of columns or rows is not known statically.
+///
+/// ```rust
+/// use tabled::builder::Builder;
+///
+/// let mut builder = Builder::default();
+/// builder.set_header(["index", "measure", "value"]);
+/// builder.push_record(["0", "weight", "0.443"]);
+///
+/// let table = builder.build();
+///
+/// println!("{}", table);
+/// ```
+///
+/// It may be useful to use [`FromIterator`] for building.
+///
+/// ```rust
+/// use tabled::builder::Builder;
+/// use std::iter::FromIterator;
+///
+/// let data = vec![
+/// ["column1", "column2"],
+/// ["data1", "data2"],
+/// ["data3", "data4"],
+/// ];
+///
+/// let table = Builder::from_iter(data).build();
+///
+/// println!("{}", table);
+/// ```
+#[derive(Debug, Default, Clone)]
+pub struct Builder {
+ /// A list of rows.
+ data: Vec<Vec<CellInfo<String>>>,
+ /// A columns row.
+ columns: Option<Vec<CellInfo<String>>>,
+ /// A number of columns.
+ count_columns: usize,
+ /// A flag that the rows are not consistent.
+ is_consistent: bool,
+ /// A content of cells which are created in case rows has different length.
+ empty_cell_text: Option<String>,
+}
+
+impl Builder {
+ /// Creates a [`Builder`] instance.
+ ///
+ /// ```
+ /// use tabled::builder::Builder;
+ ///
+ /// let builder = Builder::new();
+ /// ```
+ pub fn new() -> Self {
+ Self::default()
+ }
+
+ /// Creates a [`Builder`] instance with a given row capacity.
+ ///
+ /// ```
+ /// use tabled::builder::Builder;
+ ///
+ /// let mut builder = Builder::with_capacity(2);
+ /// builder.push_record((0..3).map(|i| i.to_string()));
+ /// builder.push_record(["i", "surname", "lastname"]);
+ /// ```
+ pub fn with_capacity(capacity: usize) -> Self {
+ let mut b = Self::new();
+ b.data = Vec::with_capacity(capacity);
+
+ b
+ }
+
+ /// Sets a [`Table`] header.
+ ///
+ /// ```
+ /// # use tabled::builder::Builder;
+ /// let mut builder = Builder::default();
+ /// builder.set_header((0..3).map(|i| i.to_string()));
+ /// ```
+ pub fn set_header<H, T>(&mut self, columns: H) -> &mut Self
+ where
+ H: IntoIterator<Item = T>,
+ T: Into<String>,
+ {
+ let list = create_row(columns, self.count_columns);
+
+ self.update_size(list.len());
+ self.columns = Some(list);
+
+ self
+ }
+
+ /// Sets off a [`Table`] header.
+ ///
+ /// If not set its a nop.
+ ///
+ /// ```rust
+ /// use tabled::Table;
+ ///
+ /// let data = [("Hello", 1u8, false), ("World", 21u8, true)];
+ ///
+ /// let table = Table::builder(data).build().to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// "+-------+----+-------+\n\
+ /// | &str | u8 | bool |\n\
+ /// +-------+----+-------+\n\
+ /// | Hello | 1 | false |\n\
+ /// +-------+----+-------+\n\
+ /// | World | 21 | true |\n\
+ /// +-------+----+-------+"
+ /// );
+ ///
+ ///
+ /// let mut builder = Table::builder(data);
+ /// builder.remove_header();
+ /// let table = builder.build().to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// "+-------+----+-------+\n\
+ /// | Hello | 1 | false |\n\
+ /// +-------+----+-------+\n\
+ /// | World | 21 | true |\n\
+ /// +-------+----+-------+"
+ /// );
+ ///
+ /// ```
+ pub fn remove_header(&mut self) -> &mut Self {
+ self.columns = None;
+ self.count_columns = self.get_size();
+
+ self
+ }
+
+ /// Sets a content of cells which are created in case rows has different length.
+ ///
+ ///
+ /// ```rust
+ /// use tabled::builder::Builder;
+ ///
+ /// let mut builder = Builder::default();
+ /// builder
+ /// .set_default_text("undefined")
+ /// .set_header((0..3).map(|i| i.to_string()))
+ /// .push_record(["i"]);
+ /// ```
+ pub fn set_default_text<T>(&mut self, text: T) -> &mut Self
+ where
+ T: Into<String>,
+ {
+ self.empty_cell_text = Some(text.into());
+ self
+ }
+
+ /// Build creates a [`Table`] instance.
+ ///
+ /// ```rust
+ /// use tabled::builder::Builder;
+ ///
+ /// let mut builder = Builder::default();
+ /// builder.set_header(["i", "column1", "column2"]);
+ /// builder.push_record(["0", "value1", "value2"]);
+ /// ```
+ pub fn build(self) -> Table {
+ Table::from(self)
+ }
+
+ /// Add an index to the [`Table`].
+ ///
+ /// Default index is a range 0-N where N is amount of records.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use tabled::Table;
+ ///
+ /// let table = Table::builder(&["Hello", "World", "!"]).index().build();
+ ///
+ /// assert_eq!(
+ /// table.to_string(),
+ /// "+---+-------+\n\
+ /// | | &str |\n\
+ /// +---+-------+\n\
+ /// | 0 | Hello |\n\
+ /// +---+-------+\n\
+ /// | 1 | World |\n\
+ /// +---+-------+\n\
+ /// | 2 | ! |\n\
+ /// +---+-------+"
+ /// )
+ /// ```
+ pub fn index(self) -> IndexBuilder {
+ IndexBuilder::from(self)
+ }
+
+ /// Adds a row to a [`Table`].
+ ///
+ /// ```
+ /// use tabled::builder::Builder;
+ ///
+ /// let mut builder = Builder::default();
+ /// builder.push_record((0..3).map(|i| i.to_string()));
+ /// builder.push_record(["i", "surname", "lastname"]);
+ /// ```
+ pub fn push_record<R, T>(&mut self, row: R) -> &mut Self
+ where
+ R: IntoIterator<Item = T>,
+ T: Into<String>,
+ {
+ let list = create_row(row, self.count_columns);
+
+ self.update_size(list.len());
+ self.data.push(list);
+
+ self
+ }
+
+ /// Insert a row into a specific position.
+ ///
+ /// # Panics
+ ///
+ /// Panics if `index > count_rows`.
+ pub fn insert_record<R>(&mut self, index: usize, record: R) -> bool
+ where
+ R: IntoIterator,
+ R::Item: Into<String>,
+ {
+ let list = create_row(record, self.count_columns);
+
+ self.update_size(list.len());
+ self.data.insert(index, list);
+
+ true
+ }
+
+ /// Clean removes empty columns and rows.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use tabled::Table;
+ ///
+ /// let mut builder = Table::builder(&["Hello", "World", ""]);
+ /// builder.clean();
+ ///
+ /// let table = builder.build();
+ ///
+ /// assert_eq!(
+ /// table.to_string(),
+ /// "+-------+\n\
+ /// | &str |\n\
+ /// +-------+\n\
+ /// | Hello |\n\
+ /// +-------+\n\
+ /// | World |\n\
+ /// +-------+"
+ /// )
+ /// ```
+ pub fn clean(&mut self) -> &mut Self {
+ self.clean_columns();
+ self.clean_rows();
+ self
+ }
+
+ /// Set a column size.
+ ///
+ /// If it make it lower then it was originally it is considered NOP.
+ pub fn hint_column_size(&mut self, size: usize) -> &mut Self {
+ self.count_columns = size;
+ self.is_consistent = true;
+ self
+ }
+
+ /// Returns an amount of columns which would be present in a built table.
+ pub fn count_columns(&self) -> usize {
+ self.count_columns
+ }
+
+ /// Returns an amount of rows which would be present in a built table.
+ pub fn count_rows(&self) -> usize {
+ self.data.len()
+ }
+
+ /// Checks whether a builder contains a header set.
+ pub fn has_header(&self) -> bool {
+ self.columns.is_some()
+ }
+
+ fn clean_columns(&mut self) {
+ let mut i = 0;
+ for col in 0..self.count_columns {
+ let col = col - i;
+
+ let mut is_empty = true;
+ for row in 0..self.data.len() {
+ let cell = &self.data[row][col];
+ if !cell.as_ref().is_empty() {
+ is_empty = false;
+ break;
+ }
+ }
+
+ if is_empty {
+ for row in 0..self.data.len() {
+ let _ = self.data[row].remove(col);
+ }
+
+ if let Some(columns) = self.columns.as_mut() {
+ if columns.len() > col {
+ let _ = columns.remove(col);
+ }
+ }
+
+ i += 1;
+ }
+ }
+
+ self.count_columns -= i;
+ }
+
+ fn clean_rows(&mut self) {
+ for row in (0..self.data.len()).rev() {
+ let mut is_empty = true;
+ for col in 0..self.count_columns {
+ let cell = &self.data[row][col];
+ if !cell.as_ref().is_empty() {
+ is_empty = false;
+ break;
+ }
+ }
+
+ if is_empty {
+ let _ = self.data.remove(row);
+ }
+
+ if row == 0 {
+ break;
+ }
+ }
+ }
+
+ fn update_size(&mut self, size: usize) {
+ use std::cmp::Ordering;
+
+ match size.cmp(&self.count_columns) {
+ Ordering::Less => {
+ if !self.data.is_empty() {
+ self.is_consistent = false;
+ }
+ }
+ Ordering::Greater => {
+ self.count_columns = size;
+
+ if !self.data.is_empty() || self.columns.is_some() {
+ self.is_consistent = false;
+ }
+ }
+ Ordering::Equal => (),
+ }
+ }
+
+ fn get_size(&mut self) -> usize {
+ let mut max = self.columns.as_ref().map_or(0, Vec::len);
+ let max_records = self.data.iter().map(Vec::len).max().unwrap_or(0);
+ max = std::cmp::max(max_records, max);
+
+ max
+ }
+
+ fn fix_rows(&mut self) {
+ let empty_cell = self.empty_cell_text.to_owned().unwrap_or_default();
+ let empty = CellInfo::new(empty_cell);
+
+ if let Some(header) = self.columns.as_mut() {
+ if self.count_columns > header.len() {
+ let count = self.count_columns - header.len();
+ append_vec(header, empty.clone(), count);
+ }
+ }
+
+ for row in &mut self.data {
+ if self.count_columns > row.len() {
+ let count = self.count_columns - row.len();
+ append_vec(row, empty.clone(), count);
+ }
+ }
+ }
+}
+
+impl From<Builder> for Vec<Vec<String>> {
+ fn from(mut builder: Builder) -> Self {
+ if !builder.is_consistent {
+ builder.fix_rows();
+ }
+
+ if let Some(columns) = builder.columns {
+ builder.data.insert(0, columns);
+ }
+
+ builder
+ .data
+ .into_iter()
+ .map(|row| row.into_iter().map(|c| c.into_inner()).collect())
+ .collect()
+ }
+}
+
+impl From<Builder> for Vec<Vec<CellInfo<String>>> {
+ fn from(mut builder: Builder) -> Self {
+ if !builder.is_consistent {
+ builder.fix_rows();
+ }
+
+ if let Some(columns) = builder.columns {
+ builder.data.insert(0, columns);
+ }
+
+ builder.data
+ }
+}
+
+impl<R, V> FromIterator<R> for Builder
+where
+ R: IntoIterator<Item = V>,
+ V: Into<String>,
+{
+ fn from_iter<T: IntoIterator<Item = R>>(iter: T) -> Self {
+ let mut builder = Self::default();
+ for row in iter {
+ let _ = builder.push_record(row);
+ }
+
+ builder
+ }
+}
+
+impl<D> Extend<D> for Builder
+where
+ D: Into<String>,
+{
+ fn extend<T: IntoIterator<Item = D>>(&mut self, iter: T) {
+ let _ = self.push_record(iter);
+ }
+}
+
+impl From<Vec<Vec<String>>> for Builder {
+ fn from(data: Vec<Vec<String>>) -> Self {
+ let count_columns = data.get(0).map_or(0, |row| row.len());
+
+ let data = data
+ .into_iter()
+ .map(|row| row.into_iter().map(CellInfo::new).collect())
+ .collect();
+
+ Self {
+ data,
+ count_columns,
+ columns: None,
+ is_consistent: false,
+ empty_cell_text: None,
+ }
+ }
+}
+
+impl From<Vec<Vec<CellInfo<String>>>> for Builder {
+ fn from(data: Vec<Vec<CellInfo<String>>>) -> Self {
+ let count_columns = data.get(0).map_or(0, |row| row.len());
+
+ Self {
+ data,
+ count_columns,
+ columns: None,
+ is_consistent: false,
+ empty_cell_text: None,
+ }
+ }
+}
+
+fn create_row<R, T>(row: R, size: usize) -> Vec<CellInfo<String>>
+where
+ R: IntoIterator<Item = T>,
+ T: Into<String>,
+{
+ let mut list = Vec::with_capacity(size);
+ for text in row {
+ let text = text.into();
+ let info = CellInfo::new(text);
+ list.push(info);
+ }
+
+ list
+}
+
+fn append_vec<T: Clone>(v: &mut Vec<T>, value: T, n: usize) {
+ v.extend((0..n).map(|_| value.clone()));
+}
diff --git a/vendor/tabled/src/grid/colored_config.rs b/vendor/tabled/src/grid/colored_config.rs
new file mode 100644
index 000000000..51a00fbf4
--- /dev/null
+++ b/vendor/tabled/src/grid/colored_config.rs
@@ -0,0 +1,112 @@
+use std::ops::{Deref, DerefMut};
+
+use crate::grid::{
+ color::AnsiColor,
+ config::{Entity, EntityMap, SpannedConfig},
+};
+
+/// A spanned configuration plus colors for cells.
+#[derive(Debug, Default, PartialEq, Eq, Clone)]
+pub struct ColoredConfig {
+ config: SpannedConfig,
+ colors: ColorMap,
+}
+
+impl ColoredConfig {
+ /// Create a new colored config.
+ pub fn new(config: SpannedConfig) -> Self {
+ Self {
+ config,
+ colors: ColorMap::default(),
+ }
+ }
+
+ /// Set a color for a given cell.
+ ///
+ /// The outcome is the same as if you'd use [`Format`] and added a color but it'd work only with `color` feature on.
+ /// While this method works in all contexts.
+ ///
+ /// [`Format`]: crate::settings::Format
+ pub fn set_color(&mut self, pos: Entity, color: AnsiColor<'static>) -> &mut Self {
+ match self.colors.0.as_mut() {
+ Some(map) => map.insert(pos, color),
+ None => {
+ let mut colors = EntityMap::default();
+ colors.insert(pos, color);
+ self.colors = ColorMap(Some(colors));
+ }
+ }
+
+ self
+ }
+
+ /// Set a list of colors.
+ pub fn set_colors(&mut self, colors: EntityMap<AnsiColor<'static>>) -> &mut Self {
+ self.colors = ColorMap(Some(colors));
+ self
+ }
+
+ /// Remove a color for a given cell.
+ pub fn remove_color(&mut self, pos: Entity) -> &mut Self {
+ if let Some(colors) = self.colors.0.as_mut() {
+ colors.remove(pos);
+ }
+
+ self
+ }
+
+ /// Returns a list of colors.
+ pub fn get_colors(&self) -> &ColorMap {
+ &self.colors
+ }
+
+ /// Returns an inner config.
+ pub fn into_inner(self) -> SpannedConfig {
+ self.config
+ }
+}
+
+impl Deref for ColoredConfig {
+ type Target = SpannedConfig;
+
+ fn deref(&self) -> &Self::Target {
+ &self.config
+ }
+}
+
+impl DerefMut for ColoredConfig {
+ fn deref_mut(&mut self) -> &mut Self::Target {
+ &mut self.config
+ }
+}
+
+impl From<SpannedConfig> for ColoredConfig {
+ fn from(value: SpannedConfig) -> Self {
+ Self::new(value)
+ }
+}
+
+impl AsRef<SpannedConfig> for ColoredConfig {
+ fn as_ref(&self) -> &SpannedConfig {
+ &self.config
+ }
+}
+
+/// A colors structure for [`ColoredConfig`].
+#[derive(Debug, Default, PartialEq, Eq, Clone)]
+pub struct ColorMap(Option<EntityMap<AnsiColor<'static>>>);
+
+impl ColorMap {
+ /// Checks if any colors is set on.
+ pub fn is_empty(&self) -> bool {
+ self.0.is_none()
+ }
+}
+
+impl crate::grid::colors::Colors for ColorMap {
+ type Color = AnsiColor<'static>;
+
+ fn get_color(&self, (row, col): (usize, usize)) -> Option<&Self::Color> {
+ self.0.as_ref().map(|map| map.get(Entity::Cell(row, col)))
+ }
+}
diff --git a/vendor/tabled/src/grid/compact_multiline_config.rs b/vendor/tabled/src/grid/compact_multiline_config.rs
new file mode 100644
index 000000000..c9056c911
--- /dev/null
+++ b/vendor/tabled/src/grid/compact_multiline_config.rs
@@ -0,0 +1,211 @@
+use crate::grid::color::StaticColor;
+use crate::grid::config::{
+ AlignmentHorizontal, AlignmentVertical, Borders, CompactConfig, Indent, Line, Sides,
+};
+
+/// A [`CompactConfig`] configuration plus vertical alignment.
+#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub struct CompactMultilineConfig {
+ config: CompactConfig,
+ alignment_vertical: AlignmentVertical,
+ formatting: Formatting,
+}
+
+impl CompactMultilineConfig {
+ /// Create a new colored config.
+ pub fn new(config: CompactConfig) -> Self {
+ Self::from(config)
+ }
+
+ /// Set a horizontal alignment.
+ pub const fn set_alignment_vertical(mut self, alignment: AlignmentVertical) -> Self {
+ self.alignment_vertical = alignment;
+ self
+ }
+
+ /// Get a alignment horizontal.
+ pub const fn get_alignment_vertical(&self) -> AlignmentVertical {
+ self.alignment_vertical
+ }
+
+ /// Set grid margin.
+ pub const fn set_margin(mut self, margin: Sides<Indent>) -> Self {
+ self.config = self.config.set_margin(margin);
+ self
+ }
+
+ /// Returns a grid margin.
+ pub const fn get_margin(&self) -> &Sides<Indent> {
+ self.config.get_margin()
+ }
+
+ /// Set the [`Borders`] value as correct one.
+ pub const fn set_borders(mut self, borders: Borders<char>) -> Self {
+ self.config = self.config.set_borders(borders);
+ self
+ }
+
+ /// Set the first horizontal line.
+ ///
+ /// It ignores the [`Borders`] horizontal value if set for 1st row.
+ pub const fn set_first_horizontal_line(mut self, line: Line<char>) -> Self {
+ self.config = self.config.set_first_horizontal_line(line);
+ self
+ }
+
+ /// Set the first horizontal line.
+ ///
+ /// It ignores the [`Borders`] horizontal value if set for 1st row.
+ pub const fn get_first_horizontal_line(&self) -> Option<Line<char>> {
+ self.config.get_first_horizontal_line()
+ }
+
+ /// Returns a current [`Borders`] structure.
+ pub const fn get_borders(&self) -> &Borders<char> {
+ self.config.get_borders()
+ }
+
+ /// Returns a current [`Borders`] structure.
+ pub const fn get_borders_color(&self) -> &Borders<StaticColor> {
+ self.config.get_borders_color()
+ }
+
+ /// Set a padding to a given cells.
+ pub const fn set_padding(mut self, padding: Sides<Indent>) -> Self {
+ self.config = self.config.set_padding(padding);
+ self
+ }
+
+ /// Get a padding for a given.
+ pub const fn get_padding(&self) -> &Sides<Indent> {
+ self.config.get_padding()
+ }
+
+ /// Set a horizontal alignment.
+ pub const fn set_alignment_horizontal(mut self, alignment: AlignmentHorizontal) -> Self {
+ self.config = self.config.set_alignment_horizontal(alignment);
+ self
+ }
+
+ /// Get a alignment horizontal.
+ pub const fn get_alignment_horizontal(&self) -> AlignmentHorizontal {
+ self.config.get_alignment_horizontal()
+ }
+
+ /// Sets colors of border carcass on the grid.
+ pub const fn set_borders_color(mut self, borders: Borders<StaticColor>) -> Self {
+ self.config = self.config.set_borders_color(borders);
+ self
+ }
+
+ /// Set colors for a margin.
+ pub const fn set_margin_color(mut self, color: Sides<StaticColor>) -> Self {
+ self.config = self.config.set_margin_color(color);
+ self
+ }
+
+ /// Returns a margin color.
+ pub const fn get_margin_color(&self) -> Sides<StaticColor> {
+ self.config.get_margin_color()
+ }
+
+ /// Set a padding color to all cells.
+ pub const fn set_padding_color(mut self, color: Sides<StaticColor>) -> Self {
+ self.config = self.config.set_padding_color(color);
+ self
+ }
+
+ /// get a padding color.
+ pub const fn get_padding_color(&self) -> Sides<StaticColor> {
+ self.config.get_padding_color()
+ }
+
+ /// Set formatting.
+ pub const fn set_formatting(mut self, formatting: Formatting) -> Self {
+ self.formatting = formatting;
+ self
+ }
+
+ /// Get formatting.
+ pub const fn get_formatting(&self) -> Formatting {
+ self.formatting
+ }
+}
+
+impl Default for CompactMultilineConfig {
+ fn default() -> Self {
+ Self {
+ config: Default::default(),
+ alignment_vertical: AlignmentVertical::Top,
+ formatting: Formatting::default(),
+ }
+ }
+}
+
+impl From<CompactConfig> for CompactMultilineConfig {
+ fn from(config: CompactConfig) -> Self {
+ Self {
+ config,
+ alignment_vertical: AlignmentVertical::Top,
+ formatting: Formatting::default(),
+ }
+ }
+}
+
+impl AsRef<CompactConfig> for CompactMultilineConfig {
+ fn as_ref(&self) -> &CompactConfig {
+ &self.config
+ }
+}
+
+impl AsMut<CompactConfig> for CompactMultilineConfig {
+ fn as_mut(&mut self) -> &mut CompactConfig {
+ &mut self.config
+ }
+}
+
+#[cfg(feature = "std")]
+impl From<CompactMultilineConfig> for crate::grid::config::SpannedConfig {
+ fn from(compact: CompactMultilineConfig) -> Self {
+ use crate::grid::config::Entity;
+
+ let mut cfg = crate::grid::config::SpannedConfig::from(compact.config);
+ cfg.set_alignment_vertical(Entity::Global, compact.alignment_vertical);
+ cfg.set_formatting(Entity::Global, compact.formatting.into());
+
+ cfg
+ }
+}
+
+/// Formatting represent a logic of formatting of a cell.
+#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub struct Formatting {
+ /// An setting to allow horizontal trim.
+ pub horizontal_trim: bool,
+ /// An setting to allow vertical trim.
+ pub vertical_trim: bool,
+ /// An setting to allow alignment per line.
+ pub allow_lines_alignment: bool,
+}
+
+impl Formatting {
+ /// Creates a new [`Formatting`] structure.
+ pub fn new(horizontal_trim: bool, vertical_trim: bool, allow_lines_alignment: bool) -> Self {
+ Self {
+ horizontal_trim,
+ vertical_trim,
+ allow_lines_alignment,
+ }
+ }
+}
+
+#[cfg(feature = "std")]
+impl From<Formatting> for crate::grid::config::Formatting {
+ fn from(val: Formatting) -> Self {
+ crate::grid::config::Formatting {
+ allow_lines_alignment: val.allow_lines_alignment,
+ horizontal_trim: val.horizontal_trim,
+ vertical_trim: val.vertical_trim,
+ }
+ }
+}
diff --git a/vendor/tabled/src/grid/dimension/complete_dimension.rs b/vendor/tabled/src/grid/dimension/complete_dimension.rs
new file mode 100644
index 000000000..3147cb27a
--- /dev/null
+++ b/vendor/tabled/src/grid/dimension/complete_dimension.rs
@@ -0,0 +1,136 @@
+use std::borrow::Cow;
+
+use crate::grid::{
+ config::{ColoredConfig, SpannedConfig},
+ dimension::{Dimension, Estimate, SpannedGridDimension},
+ records::Records,
+};
+
+/// CompleteDimension is a [`Dimension`] implementation for a [`Table`]
+///
+/// [`Table`]: crate::Table
+#[derive(Debug, Default, PartialEq, Eq, PartialOrd, Ord, Clone)]
+pub struct CompleteDimension<'a> {
+ width: Option<Cow<'a, [usize]>>,
+ height: Option<Cow<'a, [usize]>>,
+}
+
+impl CompleteDimension<'_> {
+ /// Checks whether is the dimensions is set.
+ pub fn is_complete(&self) -> bool {
+ self.width.is_some() && self.height.is_some()
+ }
+
+ /// Checks whether is nothing was set.
+ pub fn is_empty(&self) -> bool {
+ self.width.is_none() && self.height.is_none()
+ }
+
+ /// Set column widths.
+ ///
+ /// In general the method is only considered to be useful to a [`TableOption`].
+ ///
+ /// BE CAREFUL WITH THIS METHOD as it supposed that the content is not bigger than the provided widths.
+ ///
+ /// [`TableOption`]: crate::settings::TableOption
+ pub fn set_widths(&mut self, columns: Vec<usize>) -> bool {
+ self.width = Some(Cow::Owned(columns));
+
+ true
+ }
+
+ /// Set rows heights.
+ ///
+ /// In general the method is only considered to be useful to a [`TableOption`].
+ ///
+ /// BE CAREFUL WITH THIS METHOD as it supposed that the content is not bigger than the provided heights.
+ ///
+ /// [`TableOption`]: crate::settings::TableOption
+ pub fn set_heights(&mut self, rows: Vec<usize>) -> bool {
+ self.height = Some(Cow::Owned(rows));
+
+ true
+ }
+
+ /// Force width estimation.
+ pub fn clear_width(&mut self) {
+ self.width = None;
+ }
+
+ /// Force height estimation.
+ pub fn clear_height(&mut self) {
+ self.height = None;
+ }
+
+ /// Copies a reference from self.
+ pub fn from_origin(&self) -> CompleteDimension<'_> {
+ let width = self.width.as_deref().map(Cow::Borrowed);
+ let height = self.height.as_deref().map(Cow::Borrowed);
+
+ CompleteDimension { width, height }
+ }
+}
+
+impl Dimension for CompleteDimension<'_> {
+ fn get_width(&self, column: usize) -> usize {
+ let width = self
+ .width
+ .as_ref()
+ .expect("It must always be Some at this point");
+
+ width[column]
+ }
+
+ fn get_height(&self, row: usize) -> usize {
+ let height = self
+ .height
+ .as_ref()
+ .expect("It must always be Some at this point");
+
+ height[row]
+ }
+}
+
+impl<R: Records> Estimate<R, SpannedConfig> for CompleteDimension<'_> {
+ fn estimate(&mut self, records: R, cfg: &SpannedConfig) {
+ match (self.width.is_some(), self.height.is_some()) {
+ (true, true) => {}
+ (true, false) => {
+ self.height = Some(Cow::Owned(SpannedGridDimension::height(records, cfg)));
+ }
+ (false, true) => {
+ self.width = Some(Cow::Owned(SpannedGridDimension::width(records, cfg)));
+ }
+ (false, false) => {
+ let mut dims = SpannedGridDimension::default();
+ dims.estimate(records, cfg);
+
+ let (width, height) = dims.get_values();
+ self.width = Some(Cow::Owned(width));
+ self.height = Some(Cow::Owned(height));
+ }
+ }
+ }
+}
+
+impl<R: Records> Estimate<R, ColoredConfig> for CompleteDimension<'_> {
+ fn estimate(&mut self, records: R, cfg: &ColoredConfig) {
+ match (self.width.is_some(), self.height.is_some()) {
+ (true, true) => {}
+ (true, false) => {
+ self.height = Some(Cow::Owned(SpannedGridDimension::height(records, cfg)));
+ }
+ (false, true) => {
+ self.width = Some(Cow::Owned(SpannedGridDimension::width(records, cfg)));
+ }
+ (false, false) => {
+ let mut dims = SpannedGridDimension::default();
+ dims.estimate(records, cfg);
+
+ let (width, height) = dims.get_values();
+ self.width = Some(Cow::Owned(width));
+ self.height = Some(Cow::Owned(height));
+ }
+ }
+ }
+}
diff --git a/vendor/tabled/src/grid/dimension/complete_dimension_vec_records.rs b/vendor/tabled/src/grid/dimension/complete_dimension_vec_records.rs
new file mode 100644
index 000000000..ddc806a45
--- /dev/null
+++ b/vendor/tabled/src/grid/dimension/complete_dimension_vec_records.rs
@@ -0,0 +1,128 @@
+use std::borrow::Cow;
+
+use papergrid::{
+ dimension::spanned_vec_records::SpannedVecRecordsDimension, records::vec_records::VecRecords,
+};
+
+use crate::grid::{
+ config::{ColoredConfig, SpannedConfig},
+ dimension::{Dimension, Estimate},
+ records::vec_records::Cell,
+};
+
+/// CompleteDimension is a [`Dimension`] implementation for a [`Table`]
+///
+/// [`Table`]: crate::Table
+#[derive(Debug, Default, PartialEq, Eq, PartialOrd, Ord, Clone)]
+pub struct CompleteDimensionVecRecords<'a> {
+ width: Option<Cow<'a, [usize]>>,
+ height: Option<Cow<'a, [usize]>>,
+}
+
+impl CompleteDimensionVecRecords<'_> {
+ /// Checks whether is the dimensions is set.
+ pub fn is_complete(&self) -> bool {
+ self.width.is_some() && self.height.is_some()
+ }
+
+ /// Checks whether is nothing was set.
+ pub fn is_empty(&self) -> bool {
+ self.width.is_none() && self.height.is_none()
+ }
+
+ /// Set column widths.
+ ///
+ /// In general the method is only considered to be useful to a [`TableOption`].
+ ///
+ /// BE CAREFUL WITH THIS METHOD as it supposed that the content is not bigger than the provided widths.
+ ///
+ /// [`TableOption`]: crate::settings::TableOption
+ pub fn set_widths(&mut self, columns: Vec<usize>) -> bool {
+ self.width = Some(Cow::Owned(columns));
+
+ true
+ }
+
+ /// Set rows heights.
+ ///
+ /// In general the method is only considered to be useful to a [`TableOption`].
+ ///
+ /// BE CAREFUL WITH THIS METHOD as it supposed that the content is not bigger than the provided heights.
+ ///
+ /// [`TableOption`]: crate::settings::TableOption
+ pub fn set_heights(&mut self, rows: Vec<usize>) -> bool {
+ self.height = Some(Cow::Owned(rows));
+
+ true
+ }
+
+ /// Force width estimation.
+ pub fn clear_width(&mut self) {
+ self.width = None;
+ }
+
+ /// Force height estimation.
+ pub fn clear_height(&mut self) {
+ self.height = None;
+ }
+
+ /// Copies a reference from self.
+ pub fn from_origin(&self) -> CompleteDimensionVecRecords<'_> {
+ let width = self.width.as_deref().map(Cow::Borrowed);
+ let height = self.height.as_deref().map(Cow::Borrowed);
+
+ CompleteDimensionVecRecords { width, height }
+ }
+}
+
+impl Dimension for CompleteDimensionVecRecords<'_> {
+ fn get_width(&self, column: usize) -> usize {
+ let width = self
+ .width
+ .as_ref()
+ .expect("It must always be Some at this point");
+
+ width[column]
+ }
+
+ fn get_height(&self, row: usize) -> usize {
+ let height = self
+ .height
+ .as_ref()
+ .expect("It must always be Some at this point");
+
+ height[row]
+ }
+}
+
+impl<T: AsRef<str> + Cell> Estimate<&VecRecords<T>, SpannedConfig>
+ for CompleteDimensionVecRecords<'_>
+{
+ fn estimate(&mut self, records: &VecRecords<T>, cfg: &SpannedConfig) {
+ match (self.width.is_some(), self.height.is_some()) {
+ (true, true) => {}
+ (true, false) => {
+ self.height = Some(Cow::Owned(SpannedVecRecordsDimension::height(records, cfg)));
+ }
+ (false, true) => {
+ self.width = Some(Cow::Owned(SpannedVecRecordsDimension::width(records, cfg)));
+ }
+ (false, false) => {
+ let mut dims = SpannedVecRecordsDimension::default();
+ dims.estimate(records, cfg);
+
+ let (width, height) = dims.get_values();
+ self.width = Some(Cow::Owned(width));
+ self.height = Some(Cow::Owned(height));
+ }
+ }
+ }
+}
+
+impl<T: AsRef<str> + Cell> Estimate<&VecRecords<T>, ColoredConfig>
+ for CompleteDimensionVecRecords<'_>
+{
+ fn estimate(&mut self, records: &VecRecords<T>, cfg: &ColoredConfig) {
+ self.estimate(records, cfg.as_ref())
+ }
+}
diff --git a/vendor/tabled/src/grid/dimension/const_dimension.rs b/vendor/tabled/src/grid/dimension/const_dimension.rs
new file mode 100644
index 000000000..450b1abfe
--- /dev/null
+++ b/vendor/tabled/src/grid/dimension/const_dimension.rs
@@ -0,0 +1,70 @@
+//! Module contains a dimension estimator for [`CompactTable`]
+//!
+//! [`CompactTable`]: crate::tables::CompactTable
+
+use crate::grid::dimension::{Dimension, Estimate};
+
+/// A constant size dimension or a value dimension.
+#[derive(Debug, Clone, Copy)]
+pub struct ConstDimension<const COLUMNS: usize, const ROWS: usize> {
+ height: ConstSize<ROWS>,
+ width: ConstSize<COLUMNS>,
+}
+
+impl<const COLUMNS: usize, const ROWS: usize> ConstDimension<COLUMNS, ROWS> {
+ /// Returns a new dimension object with a given estimates.
+ pub const fn new(width: ConstSize<COLUMNS>, height: ConstSize<ROWS>) -> Self {
+ Self { width, height }
+ }
+}
+
+impl<const COLUMNS: usize, const ROWS: usize> Dimension for ConstDimension<COLUMNS, ROWS> {
+ fn get_width(&self, column: usize) -> usize {
+ match self.width {
+ ConstSize::List(list) => list[column],
+ ConstSize::Value(val) => val,
+ }
+ }
+
+ fn get_height(&self, row: usize) -> usize {
+ match self.height {
+ ConstSize::List(list) => list[row],
+ ConstSize::Value(val) => val,
+ }
+ }
+}
+
+impl<const COLUMNS: usize, const ROWS: usize> From<ConstDimension<COLUMNS, ROWS>>
+ for (ConstSize<COLUMNS>, ConstSize<ROWS>)
+{
+ fn from(value: ConstDimension<COLUMNS, ROWS>) -> Self {
+ (value.width, value.height)
+ }
+}
+
+impl<R, D, const COLUMNS: usize, const ROWS: usize> Estimate<R, D>
+ for ConstDimension<COLUMNS, ROWS>
+{
+ fn estimate(&mut self, _: R, _: &D) {}
+}
+
+/// Const size represents either a const array values or a single value which responsible for the whole list.
+#[derive(Debug, Clone, Copy)]
+pub enum ConstSize<const N: usize> {
+ /// A constant array of estimates.
+ List([usize; N]),
+ /// A value which act as a single estimate for all entries.
+ Value(usize),
+}
+
+impl From<usize> for ConstSize<0> {
+ fn from(value: usize) -> Self {
+ ConstSize::Value(value)
+ }
+}
+
+impl<const N: usize> From<[usize; N]> for ConstSize<N> {
+ fn from(value: [usize; N]) -> Self {
+ ConstSize::List(value)
+ }
+}
diff --git a/vendor/tabled/src/grid/dimension/mod.rs b/vendor/tabled/src/grid/dimension/mod.rs
new file mode 100644
index 000000000..2f67b402f
--- /dev/null
+++ b/vendor/tabled/src/grid/dimension/mod.rs
@@ -0,0 +1,32 @@
+//! Module contains a list of implementations of [`Estimate`] and [`Dimension`].
+
+mod const_dimension;
+mod pool_table_dimension;
+
+#[cfg(feature = "std")]
+mod complete_dimension;
+#[cfg(feature = "std")]
+mod complete_dimension_vec_records;
+#[cfg(feature = "std")]
+mod peekable_dimension;
+#[cfg(feature = "std")]
+mod static_dimension;
+
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub use self::{
+ complete_dimension::CompleteDimension,
+ complete_dimension_vec_records::CompleteDimensionVecRecords,
+ peekable_dimension::PeekableDimension,
+ static_dimension::{DimensionValue, StaticDimension},
+};
+pub use const_dimension::{ConstDimension, ConstSize};
+pub use papergrid::dimension::{Dimension, Estimate};
+pub use pool_table_dimension::{DimensionPriority, PoolTableDimension};
+
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub use papergrid::dimension::{
+ compact::CompactGridDimension, spanned::SpannedGridDimension,
+ spanned_vec_records::SpannedVecRecordsDimension,
+};
diff --git a/vendor/tabled/src/grid/dimension/peekable_dimension.rs b/vendor/tabled/src/grid/dimension/peekable_dimension.rs
new file mode 100644
index 000000000..1ba6fda21
--- /dev/null
+++ b/vendor/tabled/src/grid/dimension/peekable_dimension.rs
@@ -0,0 +1,335 @@
+use papergrid::records::vec_records::{CellInfo, VecRecords};
+
+use crate::grid::{
+ config::SpannedConfig,
+ dimension::{Dimension, Estimate},
+ records::Records,
+};
+
+/// PeekableDimension is a [`Dimension`] implementation for a [`Table`]
+///
+/// [`Table`]: crate::Table
+#[derive(Debug, Default, Clone)]
+pub struct PeekableDimension {
+ width: Vec<usize>,
+ height: Vec<usize>,
+}
+
+impl PeekableDimension {
+ /// Calculates height of rows.
+ pub fn height<T: AsRef<str>>(
+ records: &VecRecords<CellInfo<T>>,
+ cfg: &SpannedConfig,
+ ) -> Vec<usize> {
+ estimation::build_height(records, cfg)
+ }
+
+ /// Calculates width of columns.
+ pub fn width<T: AsRef<str>>(
+ records: &VecRecords<CellInfo<T>>,
+ cfg: &SpannedConfig,
+ ) -> Vec<usize> {
+ estimation::build_width(records, cfg)
+ }
+
+ /// Return width and height lists.
+ pub fn get_values(self) -> (Vec<usize>, Vec<usize>) {
+ (self.width, self.height)
+ }
+}
+
+impl Dimension for PeekableDimension {
+ fn get_width(&self, column: usize) -> usize {
+ self.width[column]
+ }
+
+ fn get_height(&self, row: usize) -> usize {
+ self.height[row]
+ }
+}
+
+impl<T> Estimate<&VecRecords<CellInfo<T>>, SpannedConfig> for PeekableDimension
+where
+ T: AsRef<str>,
+{
+ fn estimate(&mut self, records: &VecRecords<CellInfo<T>>, cfg: &SpannedConfig) {
+ let (width, height) = estimation::build_dimensions(records, cfg);
+ self.width = width;
+ self.height = height;
+ }
+}
+
+mod estimation {
+ use core::cmp::{max, Ordering};
+ use std::collections::HashMap;
+
+ use papergrid::{
+ config::Position,
+ records::vec_records::{Cell, CellInfo, VecRecords},
+ };
+
+ use super::*;
+
+ pub(super) fn build_dimensions<T: AsRef<str>>(
+ records: &VecRecords<CellInfo<T>>,
+ cfg: &SpannedConfig,
+ ) -> (Vec<usize>, Vec<usize>) {
+ let count_columns = records.count_columns();
+
+ let mut widths = vec![0; count_columns];
+ let mut heights = vec![];
+
+ let mut vspans = HashMap::new();
+ let mut hspans = HashMap::new();
+
+ for (row, columns) in records.iter_rows().enumerate() {
+ let mut row_height = 0;
+ for (col, cell) in columns.iter().enumerate() {
+ let pos = (row, col);
+ if !cfg.is_cell_visible(pos) {
+ continue;
+ }
+
+ let height = cell.count_lines();
+ let width = cell.width();
+
+ let pad = cfg.get_padding(pos.into());
+ let width = width + pad.left.size + pad.right.size;
+ let height = height + pad.top.size + pad.bottom.size;
+
+ match cfg.get_column_span(pos) {
+ Some(n) if n > 1 => {
+ let _ = vspans.insert(pos, (n, width));
+ }
+ _ => widths[col] = max(widths[col], width),
+ }
+
+ match cfg.get_row_span(pos) {
+ Some(n) if n > 1 => {
+ let _ = hspans.insert(pos, (n, height));
+ }
+ _ => row_height = max(row_height, height),
+ }
+ }
+
+ heights.push(row_height);
+ }
+
+ let count_rows = heights.len();
+
+ adjust_vspans(cfg, count_columns, &vspans, &mut widths);
+ adjust_hspans(cfg, count_rows, &hspans, &mut heights);
+
+ (widths, heights)
+ }
+
+ fn adjust_hspans(
+ cfg: &SpannedConfig,
+ len: usize,
+ spans: &HashMap<Position, (usize, usize)>,
+ heights: &mut [usize],
+ ) {
+ if spans.is_empty() {
+ return;
+ }
+
+ let mut spans_ordered = spans
+ .iter()
+ .map(|(k, v)| ((k.0, k.1), *v))
+ .collect::<Vec<_>>();
+ spans_ordered.sort_unstable_by(|(arow, acol), (brow, bcol)| match arow.cmp(brow) {
+ Ordering::Equal => acol.cmp(bcol),
+ ord => ord,
+ });
+
+ for ((row, _), (span, height)) in spans_ordered {
+ adjust_row_range(cfg, height, len, row, row + span, heights);
+ }
+ }
+
+ fn adjust_row_range(
+ cfg: &SpannedConfig,
+ max_span_height: usize,
+ len: usize,
+ start: usize,
+ end: usize,
+ heights: &mut [usize],
+ ) {
+ let range_height = range_height(cfg, len, start, end, heights);
+ if range_height >= max_span_height {
+ return;
+ }
+
+ inc_range(heights, max_span_height - range_height, start, end);
+ }
+
+ fn range_height(
+ cfg: &SpannedConfig,
+ len: usize,
+ start: usize,
+ end: usize,
+ heights: &[usize],
+ ) -> usize {
+ let count_borders = count_horizontal_borders(cfg, len, start, end);
+ let range_height = heights[start..end].iter().sum::<usize>();
+ count_borders + range_height
+ }
+
+ fn count_horizontal_borders(
+ cfg: &SpannedConfig,
+ len: usize,
+ start: usize,
+ end: usize,
+ ) -> usize {
+ (start..end)
+ .skip(1)
+ .filter(|&i| cfg.has_horizontal(i, len))
+ .count()
+ }
+
+ fn inc_range(list: &mut [usize], size: usize, start: usize, end: usize) {
+ if list.is_empty() {
+ return;
+ }
+
+ let span = end - start;
+ let one = size / span;
+ let rest = size - span * one;
+
+ let mut i = start;
+ while i < end {
+ if i == start {
+ list[i] += one + rest;
+ } else {
+ list[i] += one;
+ }
+
+ i += 1;
+ }
+ }
+
+ fn adjust_vspans(
+ cfg: &SpannedConfig,
+ len: usize,
+ spans: &HashMap<Position, (usize, usize)>,
+ widths: &mut [usize],
+ ) {
+ if spans.is_empty() {
+ return;
+ }
+
+ // The overall width distribution will be different depend on the order.
+ //
+ // We sort spans in order to prioritize the smaller spans first.
+ let mut spans_ordered = spans
+ .iter()
+ .map(|(k, v)| ((k.0, k.1), *v))
+ .collect::<Vec<_>>();
+ spans_ordered.sort_unstable_by(|a, b| match a.1 .0.cmp(&b.1 .0) {
+ Ordering::Equal => a.0.cmp(&b.0),
+ o => o,
+ });
+
+ for ((_, col), (span, width)) in spans_ordered {
+ adjust_column_range(cfg, width, len, col, col + span, widths);
+ }
+ }
+
+ fn adjust_column_range(
+ cfg: &SpannedConfig,
+ max_span_width: usize,
+ len: usize,
+ start: usize,
+ end: usize,
+ widths: &mut [usize],
+ ) {
+ let range_width = range_width(cfg, len, start, end, widths);
+ if range_width >= max_span_width {
+ return;
+ }
+
+ inc_range(widths, max_span_width - range_width, start, end);
+ }
+
+ fn range_width(
+ cfg: &SpannedConfig,
+ len: usize,
+ start: usize,
+ end: usize,
+ widths: &[usize],
+ ) -> usize {
+ let count_borders = count_vertical_borders(cfg, len, start, end);
+ let range_width = widths[start..end].iter().sum::<usize>();
+ count_borders + range_width
+ }
+
+ fn count_vertical_borders(cfg: &SpannedConfig, len: usize, start: usize, end: usize) -> usize {
+ (start..end)
+ .skip(1)
+ .filter(|&i| cfg.has_vertical(i, len))
+ .count()
+ }
+
+ pub(super) fn build_height<T: AsRef<str>>(
+ records: &VecRecords<CellInfo<T>>,
+ cfg: &SpannedConfig,
+ ) -> Vec<usize> {
+ let mut heights = vec![];
+ let mut hspans = HashMap::new();
+
+ for (row, columns) in records.iter_rows().enumerate() {
+ let mut row_height = 0;
+ for (col, cell) in columns.iter().enumerate() {
+ let pos = (row, col);
+ if !cfg.is_cell_visible(pos) {
+ continue;
+ }
+
+ let height = cell.count_lines();
+ match cfg.get_row_span(pos) {
+ Some(n) if n > 1 => {
+ let _ = hspans.insert(pos, (n, height));
+ }
+ _ => row_height = max(row_height, height),
+ }
+ }
+
+ heights.push(row_height);
+ }
+
+ adjust_hspans(cfg, heights.len(), &hspans, &mut heights);
+
+ heights
+ }
+
+ pub(super) fn build_width<T: AsRef<str>>(
+ records: &VecRecords<CellInfo<T>>,
+ cfg: &SpannedConfig,
+ ) -> Vec<usize> {
+ let count_columns = records.count_columns();
+
+ let mut widths = vec![0; count_columns];
+ let mut vspans = HashMap::new();
+
+ for (row, columns) in records.iter_rows().enumerate() {
+ for (col, cell) in columns.iter().enumerate() {
+ let pos = (row, col);
+ if !cfg.is_cell_visible(pos) {
+ continue;
+ }
+
+ let width = cell.width();
+ match cfg.get_column_span(pos) {
+ Some(n) if n > 1 => {
+ let _ = vspans.insert(pos, (n, width));
+ }
+ _ => widths[col] = max(widths[col], width),
+ }
+ }
+ }
+
+ adjust_vspans(cfg, count_columns, &vspans, &mut widths);
+
+ widths
+ }
+}
diff --git a/vendor/tabled/src/grid/dimension/pool_table_dimension.rs b/vendor/tabled/src/grid/dimension/pool_table_dimension.rs
new file mode 100644
index 000000000..9909c661d
--- /dev/null
+++ b/vendor/tabled/src/grid/dimension/pool_table_dimension.rs
@@ -0,0 +1,36 @@
+/// PoolTableDimension is a dimension resolve strategy for [`PoolTable`]
+///
+/// [`PoolTable`]: crate::tables::PoolTable
+#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy)]
+pub struct PoolTableDimension {
+ width: DimensionPriority,
+ height: DimensionPriority,
+}
+
+impl PoolTableDimension {
+ /// Creates a new object.
+ pub fn new(width: DimensionPriority, height: DimensionPriority) -> Self {
+ Self { width, height }
+ }
+
+ /// Return a width priority.
+ pub fn width(&self) -> DimensionPriority {
+ self.width
+ }
+
+ /// Return a height priority.
+ pub fn height(&self) -> DimensionPriority {
+ self.height
+ }
+}
+
+/// A control of width/height logic for situations where we must increase some cell to align columns/row.
+#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub enum DimensionPriority {
+ /// Increase first cell width/height in a row/column.
+ First,
+ /// Increase last cell width/height in a row/column.
+ Last,
+ /// Increase cells width/height 1 by 1 in a row/column.
+ List,
+}
diff --git a/vendor/tabled/src/grid/dimension/static_dimension.rs b/vendor/tabled/src/grid/dimension/static_dimension.rs
new file mode 100644
index 000000000..f9474f212
--- /dev/null
+++ b/vendor/tabled/src/grid/dimension/static_dimension.rs
@@ -0,0 +1,63 @@
+use crate::grid::dimension::{Dimension, Estimate};
+
+/// A constant dimension.
+#[derive(Debug, Clone)]
+pub struct StaticDimension {
+ width: DimensionValue,
+ height: DimensionValue,
+}
+
+impl StaticDimension {
+ /// Creates a constant dimension.
+ pub fn new(width: DimensionValue, height: DimensionValue) -> Self {
+ Self { width, height }
+ }
+}
+
+impl From<StaticDimension> for (DimensionValue, DimensionValue) {
+ fn from(value: StaticDimension) -> Self {
+ (value.width, value.height)
+ }
+}
+
+impl Dimension for StaticDimension {
+ fn get_width(&self, column: usize) -> usize {
+ self.width.get(column)
+ }
+
+ fn get_height(&self, row: usize) -> usize {
+ self.height.get(row)
+ }
+}
+
+impl<R, C> Estimate<R, C> for StaticDimension {
+ fn estimate(&mut self, _: R, _: &C) {}
+}
+
+/// A dimension value.
+#[derive(Debug, Clone)]
+pub enum DimensionValue {
+ /// Const width value.
+ Exact(usize),
+ /// A list of width values for columns.
+ List(Vec<usize>),
+ /// A list of width values for columns and a value for the rest.
+ Partial(Vec<usize>, usize),
+}
+
+impl DimensionValue {
+ /// Get a width by column.
+ pub fn get(&self, col: usize) -> usize {
+ match self {
+ DimensionValue::Exact(val) => *val,
+ DimensionValue::List(cols) => cols[col],
+ DimensionValue::Partial(cols, val) => {
+ if cols.len() > col {
+ cols[col]
+ } else {
+ *val
+ }
+ }
+ }
+ }
+}
diff --git a/vendor/tabled/src/grid/mod.rs b/vendor/tabled/src/grid/mod.rs
new file mode 100644
index 000000000..cdd8c55c0
--- /dev/null
+++ b/vendor/tabled/src/grid/mod.rs
@@ -0,0 +1,48 @@
+//! Module is responsible for tables underlyign grid.
+//!
+//! It might be used when implementing your own [`TableOption`] and [`CellOption`].
+//!
+//! [`TableOption`]: crate::settings::TableOption
+//! [`CellOption`]: crate::settings::CellOption
+#[cfg(feature = "std")]
+mod colored_config;
+
+mod compact_multiline_config;
+
+pub mod dimension;
+pub mod records;
+
+pub use papergrid::color;
+pub use papergrid::colors;
+pub use papergrid::util;
+
+pub mod config {
+ //! Module contains a list of configs for varios tables/grids.
+
+ pub use papergrid::config::{
+ compact::CompactConfig, AlignmentHorizontal, AlignmentVertical, Border, Borders, Entity,
+ EntityIterator, Indent, Line, Position, Sides,
+ };
+
+ #[cfg(feature = "std")]
+ #[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+ pub use papergrid::config::spanned::{
+ EntityMap, Formatting, HorizontalLine, Offset, SpannedConfig, VerticalLine,
+ };
+
+ #[cfg(feature = "std")]
+ #[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+ pub use super::colored_config::{ColorMap, ColoredConfig};
+
+ pub use super::compact_multiline_config::CompactMultilineConfig;
+}
+
+pub use papergrid::grid::compact::CompactGrid;
+
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub use papergrid::grid::iterable::Grid;
+
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub use papergrid::grid::peekable::PeekableGrid;
diff --git a/vendor/tabled/src/grid/records/empty_records.rs b/vendor/tabled/src/grid/records/empty_records.rs
new file mode 100644
index 000000000..77ebc812d
--- /dev/null
+++ b/vendor/tabled/src/grid/records/empty_records.rs
@@ -0,0 +1,41 @@
+//! An empty [`Records`] implementation.
+
+use core::iter::{repeat, Repeat, Take};
+
+use super::Records;
+
+/// Empty representation of [`Records`].
+#[derive(Debug, Default, Clone)]
+pub struct EmptyRecords {
+ rows: usize,
+ cols: usize,
+}
+
+impl EmptyRecords {
+ /// Constructs an empty representation of [`Records`] with a given shape.
+ pub fn new(rows: usize, cols: usize) -> Self {
+ Self { rows, cols }
+ }
+}
+
+impl From<(usize, usize)> for EmptyRecords {
+ fn from((count_rows, count_columns): (usize, usize)) -> Self {
+ Self::new(count_rows, count_columns)
+ }
+}
+
+impl Records for EmptyRecords {
+ type Iter = Take<Repeat<Take<Repeat<&'static str>>>>;
+
+ fn iter_rows(self) -> Self::Iter {
+ repeat(repeat("").take(self.cols)).take(self.rows)
+ }
+
+ fn count_columns(&self) -> usize {
+ self.cols
+ }
+
+ fn hint_count_rows(&self) -> Option<usize> {
+ Some(self.rows)
+ }
+}
diff --git a/vendor/tabled/src/grid/records/into_records/buf_records.rs b/vendor/tabled/src/grid/records/into_records/buf_records.rs
new file mode 100644
index 000000000..2db3e45bf
--- /dev/null
+++ b/vendor/tabled/src/grid/records/into_records/buf_records.rs
@@ -0,0 +1,213 @@
+//! A module contains [`BufRows`] and [`BufColumns`] iterators.
+//!
+//! Almoust always they both can be used interchangeably but [`BufRows`] is supposed to be lighter cause it
+//! does not reads columns.
+
+use crate::grid::records::IntoRecords;
+
+use super::either_string::EitherString;
+
+/// BufRecords inspects [`IntoRecords`] iterator and keeps read data buffered.
+/// So it can be checking before hand.
+#[derive(Debug)]
+pub struct BufRows<I, T> {
+ iter: I,
+ buf: Vec<T>,
+}
+
+impl BufRows<(), ()> {
+ /// Creates a new [`BufRows`] structure, filling the buffer.
+ pub fn new<I: IntoRecords>(
+ records: I,
+ sniff: usize,
+ ) -> BufRows<<I::IterRows as IntoIterator>::IntoIter, I::IterColumns> {
+ let mut buf = vec![];
+
+ let mut iter = records.iter_rows().into_iter();
+ for _ in 0..sniff {
+ match iter.next() {
+ Some(row) => buf.push(row),
+ None => break,
+ }
+ }
+
+ BufRows { iter, buf }
+ }
+}
+
+impl<I, T> BufRows<I, T> {
+ /// Returns a slice of a record buffer.
+ pub fn as_slice(&self) -> &[T] {
+ &self.buf
+ }
+}
+
+impl<I, T> From<BufRows<I, T>> for BufColumns<I>
+where
+ T: IntoIterator,
+ T::Item: AsRef<str>,
+{
+ fn from(value: BufRows<I, T>) -> Self {
+ let buf = value
+ .buf
+ .into_iter()
+ .map(|row| row.into_iter().map(|s| s.as_ref().to_string()).collect())
+ .collect();
+
+ BufColumns {
+ iter: value.iter,
+ buf,
+ }
+ }
+}
+
+impl<I, T> IntoRecords for BufRows<I, T>
+where
+ I: Iterator<Item = T>,
+ T: IntoIterator,
+ T::Item: AsRef<str>,
+{
+ type Cell = T::Item;
+ type IterColumns = T;
+ type IterRows = BufRowIter<I, T>;
+
+ fn iter_rows(self) -> Self::IterRows {
+ BufRowIter {
+ buf: self.buf.into_iter(),
+ iter: self.iter,
+ }
+ }
+}
+
+/// Buffered [`Iterator`].
+#[derive(Debug)]
+pub struct BufRowIter<I, T> {
+ buf: std::vec::IntoIter<T>,
+ iter: I,
+}
+
+impl<I, T> Iterator for BufRowIter<I, T>
+where
+ I: Iterator<Item = T>,
+ T: IntoIterator,
+ T::Item: AsRef<str>,
+{
+ type Item = T;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ match self.buf.next() {
+ Some(i) => Some(i),
+ None => self.iter.next(),
+ }
+ }
+}
+
+/// BufRecords inspects [`IntoRecords`] iterator and keeps read data buffered.
+/// So it can be checking before hand.
+///
+/// In contrast to [`BufRows`] it keeps records by columns.
+#[derive(Debug)]
+pub struct BufColumns<I> {
+ iter: I,
+ buf: Vec<Vec<String>>,
+}
+
+impl BufColumns<()> {
+ /// Creates new [`BufColumns`] structure, filling the buffer.
+ pub fn new<I: IntoRecords>(
+ records: I,
+ sniff: usize,
+ ) -> BufColumns<<I::IterRows as IntoIterator>::IntoIter> {
+ let mut buf = vec![];
+
+ let mut iter = records.iter_rows().into_iter();
+ for _ in 0..sniff {
+ match iter.next() {
+ Some(row) => {
+ let row = row
+ .into_iter()
+ .map(|cell| cell.as_ref().to_string())
+ .collect::<Vec<_>>();
+ buf.push(row)
+ }
+ None => break,
+ }
+ }
+
+ BufColumns { iter, buf }
+ }
+}
+
+impl<I> BufColumns<I> {
+ /// Returns a slice of a keeping buffer.
+ pub fn as_slice(&self) -> &[Vec<String>] {
+ &self.buf
+ }
+}
+
+impl<I> IntoRecords for BufColumns<I>
+where
+ I: Iterator,
+ I::Item: IntoIterator,
+ <I::Item as IntoIterator>::Item: AsRef<str>,
+{
+ type Cell = EitherString<<I::Item as IntoIterator>::Item>;
+ type IterColumns = EitherRowIterator<<I::Item as IntoIterator>::IntoIter>;
+ type IterRows = BufColumnIter<I>;
+
+ fn iter_rows(self) -> Self::IterRows {
+ BufColumnIter {
+ buf: self.buf.into_iter(),
+ iter: self.iter,
+ }
+ }
+}
+
+/// A row iterator for [`BufColumns`]
+#[derive(Debug)]
+pub struct BufColumnIter<I> {
+ buf: std::vec::IntoIter<Vec<String>>,
+ iter: I,
+}
+
+impl<I> Iterator for BufColumnIter<I>
+where
+ I: Iterator,
+ I::Item: IntoIterator,
+ <I::Item as IntoIterator>::Item: AsRef<str>,
+{
+ type Item = EitherRowIterator<<I::Item as IntoIterator>::IntoIter>;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ match self.buf.next() {
+ Some(i) => Some(EitherRowIterator::Owned(i.into_iter())),
+ None => self
+ .iter
+ .next()
+ .map(|i| EitherRowIterator::Some(i.into_iter())),
+ }
+ }
+}
+
+/// An iterator over some iterator or allocated buffer.
+#[derive(Debug)]
+pub enum EitherRowIterator<I> {
+ /// Allocated iterator.
+ Owned(std::vec::IntoIter<String>),
+ /// Given iterator.
+ Some(I),
+}
+
+impl<I> Iterator for EitherRowIterator<I>
+where
+ I: Iterator,
+{
+ type Item = EitherString<I::Item>;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ match self {
+ EitherRowIterator::Owned(iter) => iter.next().map(EitherString::Owned),
+ EitherRowIterator::Some(iter) => iter.next().map(EitherString::Some),
+ }
+ }
+}
diff --git a/vendor/tabled/src/grid/records/into_records/either_string.rs b/vendor/tabled/src/grid/records/into_records/either_string.rs
new file mode 100644
index 000000000..f4d97290d
--- /dev/null
+++ b/vendor/tabled/src/grid/records/into_records/either_string.rs
@@ -0,0 +1,22 @@
+//! A module with a utility enum [`EitherString`].
+
+/// Either allocated string or some type which can be used as a string.
+#[derive(Debug)]
+pub enum EitherString<T> {
+ /// Allocated string.
+ Owned(String),
+ /// Something which can be used as a string.
+ Some(T),
+}
+
+impl<T> AsRef<str> for EitherString<T>
+where
+ T: AsRef<str>,
+{
+ fn as_ref(&self) -> &str {
+ match self {
+ EitherString::Owned(s) => s.as_ref(),
+ EitherString::Some(s) => s.as_ref(),
+ }
+ }
+}
diff --git a/vendor/tabled/src/grid/records/into_records/limit_column_records.rs b/vendor/tabled/src/grid/records/into_records/limit_column_records.rs
new file mode 100644
index 000000000..89b2b89ed
--- /dev/null
+++ b/vendor/tabled/src/grid/records/into_records/limit_column_records.rs
@@ -0,0 +1,82 @@
+//! The module contains [`LimitColumns`] records iterator.
+
+use crate::grid::records::IntoRecords;
+
+/// An iterator which limits amount of columns.
+#[derive(Debug)]
+pub struct LimitColumns<I> {
+ records: I,
+ limit: usize,
+}
+
+impl LimitColumns<()> {
+ /// Creates new [`LimitColumns`].
+ pub fn new<I: IntoRecords>(records: I, limit: usize) -> LimitColumns<I> {
+ LimitColumns { records, limit }
+ }
+}
+
+impl<I> IntoRecords for LimitColumns<I>
+where
+ I: IntoRecords,
+{
+ type Cell = I::Cell;
+ type IterColumns = LimitColumnsColumnsIter<<I::IterColumns as IntoIterator>::IntoIter>;
+ type IterRows = LimitColumnsIter<<I::IterRows as IntoIterator>::IntoIter>;
+
+ fn iter_rows(self) -> Self::IterRows {
+ LimitColumnsIter {
+ iter: self.records.iter_rows().into_iter(),
+ limit: self.limit,
+ }
+ }
+}
+
+/// An iterator over rows for [`LimitColumns`].
+#[derive(Debug)]
+pub struct LimitColumnsIter<I> {
+ iter: I,
+ limit: usize,
+}
+
+impl<I> Iterator for LimitColumnsIter<I>
+where
+ I: Iterator,
+ I::Item: IntoIterator,
+ <I::Item as IntoIterator>::Item: AsRef<str>,
+{
+ type Item = LimitColumnsColumnsIter<<I::Item as IntoIterator>::IntoIter>;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ let iter = self.iter.next()?;
+ Some(LimitColumnsColumnsIter {
+ iter: iter.into_iter(),
+ limit: self.limit,
+ })
+ }
+}
+
+/// An iterator over columns for [`LimitColumns`].
+#[derive(Debug)]
+pub struct LimitColumnsColumnsIter<I> {
+ iter: I,
+ limit: usize,
+}
+
+impl<I> Iterator for LimitColumnsColumnsIter<I>
+where
+ I: Iterator,
+ I::Item: AsRef<str>,
+{
+ type Item = I::Item;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if self.limit == 0 {
+ return None;
+ }
+
+ self.limit -= 1;
+
+ self.iter.next()
+ }
+}
diff --git a/vendor/tabled/src/grid/records/into_records/limit_row_records.rs b/vendor/tabled/src/grid/records/into_records/limit_row_records.rs
new file mode 100644
index 000000000..a461c6682
--- /dev/null
+++ b/vendor/tabled/src/grid/records/into_records/limit_row_records.rs
@@ -0,0 +1,59 @@
+//! The module contains [`LimitRows`] records iterator.
+
+use crate::grid::records::IntoRecords;
+
+/// [`LimitRows`] is an records iterator which limits amount of rows.
+#[derive(Debug)]
+pub struct LimitRows<I> {
+ records: I,
+ limit: usize,
+}
+
+impl LimitRows<()> {
+ /// Creates new [`LimitRows`] iterator.
+ pub fn new<I: IntoRecords>(records: I, limit: usize) -> LimitRows<I> {
+ LimitRows { records, limit }
+ }
+}
+
+impl<I> IntoRecords for LimitRows<I>
+where
+ I: IntoRecords,
+{
+ type Cell = I::Cell;
+ type IterColumns = I::IterColumns;
+ type IterRows = LimitRowsIter<<I::IterRows as IntoIterator>::IntoIter>;
+
+ fn iter_rows(self) -> Self::IterRows {
+ LimitRowsIter {
+ iter: self.records.iter_rows().into_iter(),
+ limit: self.limit,
+ }
+ }
+}
+
+/// A rows iterator for [`LimitRows`]
+#[derive(Debug)]
+pub struct LimitRowsIter<I> {
+ iter: I,
+ limit: usize,
+}
+
+impl<I> Iterator for LimitRowsIter<I>
+where
+ I: Iterator,
+ I::Item: IntoIterator,
+ <I::Item as IntoIterator>::Item: AsRef<str>,
+{
+ type Item = I::Item;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if self.limit == 0 {
+ return None;
+ }
+
+ self.limit -= 1;
+
+ self.iter.next()
+ }
+}
diff --git a/vendor/tabled/src/grid/records/into_records/mod.rs b/vendor/tabled/src/grid/records/into_records/mod.rs
new file mode 100644
index 000000000..0a52c41c1
--- /dev/null
+++ b/vendor/tabled/src/grid/records/into_records/mod.rs
@@ -0,0 +1,26 @@
+//! The module contains a list of helpers for [`IntoRecords`]
+//!
+//! [`IntoRecords`]: crate::grid::records::IntoRecords
+
+pub mod limit_column_records;
+pub mod limit_row_records;
+
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub mod buf_records;
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub mod either_string;
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub mod truncate_records;
+
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub use buf_records::{BufColumns, BufRows};
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub use truncate_records::TruncateContent;
+
+pub use limit_column_records::LimitColumns;
+pub use limit_row_records::LimitRows;
diff --git a/vendor/tabled/src/grid/records/into_records/truncate_records.rs b/vendor/tabled/src/grid/records/into_records/truncate_records.rs
new file mode 100644
index 000000000..17e7e533e
--- /dev/null
+++ b/vendor/tabled/src/grid/records/into_records/truncate_records.rs
@@ -0,0 +1,136 @@
+//! The module contains [`TruncateContent`] records iterator.
+
+use std::borrow::Cow;
+
+use crate::{
+ grid::records::IntoRecords, grid::util::string::string_width_multiline,
+ settings::width::Truncate,
+};
+
+use super::either_string::EitherString;
+
+/// A records iterator which truncates all cells to a given width.
+#[derive(Debug)]
+pub struct TruncateContent<'a, I> {
+ records: I,
+ width: ExactValue<'a>,
+}
+
+impl TruncateContent<'_, ()> {
+ /// Creates new [`TruncateContent`] object.
+ pub fn new<I: IntoRecords>(records: I, width: ExactValue<'_>) -> TruncateContent<'_, I> {
+ TruncateContent { records, width }
+ }
+}
+
+impl<'a, I> IntoRecords for TruncateContent<'a, I>
+where
+ I: IntoRecords,
+{
+ type Cell = EitherString<I::Cell>;
+ type IterColumns = TruncateContentColumnsIter<'a, <I::IterColumns as IntoIterator>::IntoIter>;
+ type IterRows = TruncateContentIter<'a, <I::IterRows as IntoIterator>::IntoIter>;
+
+ fn iter_rows(self) -> Self::IterRows {
+ TruncateContentIter {
+ iter: self.records.iter_rows().into_iter(),
+ width: self.width.clone(),
+ }
+ }
+}
+
+/// A row iterator for [`TruncateContent`].
+#[derive(Debug)]
+pub struct TruncateContentIter<'a, I> {
+ iter: I,
+ width: ExactValue<'a>,
+}
+
+impl<'a, I> Iterator for TruncateContentIter<'a, I>
+where
+ I: Iterator,
+ I::Item: IntoIterator,
+ <I::Item as IntoIterator>::Item: AsRef<str>,
+{
+ type Item = TruncateContentColumnsIter<'a, <I::Item as IntoIterator>::IntoIter>;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ let iter = self.iter.next()?;
+ Some(TruncateContentColumnsIter {
+ iter: iter.into_iter(),
+ current: 0,
+ width: self.width.clone(),
+ })
+ }
+}
+
+/// A column iterator for [`TruncateContent`].
+#[derive(Debug)]
+pub struct TruncateContentColumnsIter<'a, I> {
+ iter: I,
+ width: ExactValue<'a>,
+ current: usize,
+}
+
+impl<I> Iterator for TruncateContentColumnsIter<'_, I>
+where
+ I: Iterator,
+ I::Item: AsRef<str>,
+{
+ type Item = EitherString<I::Item>;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ let s = self.iter.next()?;
+
+ let width = self.width.get(self.current);
+ self.current += 1;
+
+ let text_width = string_width_multiline(s.as_ref());
+ if text_width <= width {
+ return Some(EitherString::Some(s));
+ }
+
+ let text = Truncate::truncate_text(s.as_ref(), width);
+ let text = text.into_owned();
+ let text = EitherString::Owned(text);
+
+ Some(text)
+ }
+}
+
+/// A width value.
+#[derive(Debug, Clone)]
+pub enum ExactValue<'a> {
+ /// Const width value.
+ Exact(usize),
+ /// A list of width values for columns.
+ List(Cow<'a, [usize]>),
+}
+
+impl<'a> From<&'a [usize]> for ExactValue<'a> {
+ fn from(value: &'a [usize]) -> Self {
+ Self::List(value.into())
+ }
+}
+
+impl From<Vec<usize>> for ExactValue<'_> {
+ fn from(value: Vec<usize>) -> Self {
+ Self::List(value.into())
+ }
+}
+
+impl From<usize> for ExactValue<'_> {
+ fn from(value: usize) -> Self {
+ Self::Exact(value)
+ }
+}
+
+impl ExactValue<'_> {
+ /// Get a width by column.
+ pub fn get(&self, col: usize) -> usize {
+ match self {
+ ExactValue::Exact(val) => *val,
+ ExactValue::List(cols) => cols[col],
+ }
+ }
+}
diff --git a/vendor/tabled/src/grid/records/mod.rs b/vendor/tabled/src/grid/records/mod.rs
new file mode 100644
index 000000000..494002346
--- /dev/null
+++ b/vendor/tabled/src/grid/records/mod.rs
@@ -0,0 +1,19 @@
+//! The module contains [`Records`], [`ExactRecords`], [`RecordsMut`], [`Resizable`] traits
+//! and its implementations.
+//!
+//! Also it provies a list of helpers for a user built [`Records`] via [`into_records`].
+
+mod empty_records;
+mod records_mut;
+mod resizable;
+
+pub mod into_records;
+
+pub use empty_records::EmptyRecords;
+pub use papergrid::records::{ExactRecords, IntoRecords, IterRecords, PeekableRecords, Records};
+pub use records_mut::RecordsMut;
+pub use resizable::Resizable;
+
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub use papergrid::records::vec_records;
diff --git a/vendor/tabled/src/grid/records/records_mut.rs b/vendor/tabled/src/grid/records/records_mut.rs
new file mode 100644
index 000000000..38c42d2c7
--- /dev/null
+++ b/vendor/tabled/src/grid/records/records_mut.rs
@@ -0,0 +1,34 @@
+use crate::grid::config::Position;
+#[cfg(feature = "std")]
+use crate::grid::records::vec_records::{CellInfo, VecRecords};
+
+/// A [`Records`] representation which can modify cell by (row, column) index.
+///
+/// [`Records`]: crate::grid::records::Records
+pub trait RecordsMut<Text> {
+ /// Sets a text to a given cell by index.
+ fn set(&mut self, pos: Position, text: Text);
+}
+
+impl<T, Text> RecordsMut<Text> for &'_ mut T
+where
+ T: RecordsMut<Text>,
+{
+ fn set(&mut self, pos: Position, text: Text) {
+ T::set(self, pos, text)
+ }
+}
+
+#[cfg(feature = "std")]
+impl RecordsMut<String> for VecRecords<CellInfo<String>> {
+ fn set(&mut self, (row, col): Position, text: String) {
+ self[row][col] = CellInfo::new(text);
+ }
+}
+
+#[cfg(feature = "std")]
+impl RecordsMut<&str> for VecRecords<CellInfo<String>> {
+ fn set(&mut self, (row, col): Position, text: &str) {
+ self[row][col] = CellInfo::new(text.to_string());
+ }
+}
diff --git a/vendor/tabled/src/grid/records/resizable.rs b/vendor/tabled/src/grid/records/resizable.rs
new file mode 100644
index 000000000..29ab38038
--- /dev/null
+++ b/vendor/tabled/src/grid/records/resizable.rs
@@ -0,0 +1,217 @@
+use papergrid::config::Position;
+
+#[cfg(feature = "std")]
+use crate::grid::records::vec_records::VecRecords;
+
+/// A records representation which can be modified by moving rows/columns around.
+pub trait Resizable {
+ /// Swap cells with one another.
+ fn swap(&mut self, lhs: Position, rhs: Position);
+ /// Swap rows with one another.
+ fn swap_row(&mut self, lhs: usize, rhs: usize);
+ /// Swap columns with one another.
+ fn swap_column(&mut self, lhs: usize, rhs: usize);
+ /// Adds a new row to a data set.
+ fn push_row(&mut self);
+ /// Adds a new column to a data set.
+ fn push_column(&mut self);
+ /// Removes a row from a data set by index.
+ fn remove_row(&mut self, row: usize);
+ /// Removes a column from a data set by index.
+ fn remove_column(&mut self, column: usize);
+ /// Inserts a row at index.
+ fn insert_row(&mut self, row: usize);
+ /// Inserts column at index.
+ fn insert_column(&mut self, column: usize);
+}
+
+impl<T> Resizable for &'_ mut T
+where
+ T: Resizable,
+{
+ fn swap(&mut self, lhs: Position, rhs: Position) {
+ T::swap(self, lhs, rhs)
+ }
+
+ fn swap_row(&mut self, lhs: usize, rhs: usize) {
+ T::swap_row(self, lhs, rhs)
+ }
+
+ fn swap_column(&mut self, lhs: usize, rhs: usize) {
+ T::swap_column(self, lhs, rhs)
+ }
+
+ fn push_row(&mut self) {
+ T::push_row(self)
+ }
+
+ fn push_column(&mut self) {
+ T::push_column(self)
+ }
+
+ fn remove_row(&mut self, row: usize) {
+ T::remove_row(self, row)
+ }
+
+ fn remove_column(&mut self, column: usize) {
+ T::remove_column(self, column)
+ }
+
+ fn insert_row(&mut self, row: usize) {
+ T::insert_row(self, row)
+ }
+
+ fn insert_column(&mut self, column: usize) {
+ T::insert_column(self, column)
+ }
+}
+
+#[cfg(feature = "std")]
+impl<T> Resizable for Vec<Vec<T>>
+where
+ T: Default + Clone,
+{
+ fn swap(&mut self, lhs: Position, rhs: Position) {
+ if lhs == rhs {
+ return;
+ }
+
+ let t = std::mem::take(&mut self[lhs.0][lhs.1]);
+ let t = std::mem::replace(&mut self[rhs.0][rhs.1], t);
+ let _ = std::mem::replace(&mut self[lhs.0][lhs.1], t);
+ }
+
+ fn swap_row(&mut self, lhs: usize, rhs: usize) {
+ let t = std::mem::take(&mut self[lhs]);
+ let t = std::mem::replace(&mut self[rhs], t);
+ let _ = std::mem::replace(&mut self[lhs], t);
+ }
+
+ fn swap_column(&mut self, lhs: usize, rhs: usize) {
+ for row in self.iter_mut() {
+ row.swap(lhs, rhs);
+ }
+ }
+
+ fn push_row(&mut self) {
+ let count_columns = self.get(0).map(|l| l.len()).unwrap_or(0);
+ self.push(vec![T::default(); count_columns]);
+ }
+
+ fn push_column(&mut self) {
+ for row in self.iter_mut() {
+ row.push(T::default());
+ }
+ }
+
+ fn remove_row(&mut self, row: usize) {
+ let _ = self.remove(row);
+ }
+
+ fn remove_column(&mut self, column: usize) {
+ for row in self.iter_mut() {
+ let _ = row.remove(column);
+ }
+ }
+
+ fn insert_row(&mut self, row: usize) {
+ let count_columns = self.get(0).map(|l| l.len()).unwrap_or(0);
+ self.insert(row, vec![T::default(); count_columns]);
+ }
+
+ fn insert_column(&mut self, column: usize) {
+ for row in self {
+ row.insert(column, T::default());
+ }
+ }
+}
+
+#[cfg(feature = "std")]
+impl<T> Resizable for VecRecords<T>
+where
+ T: Default + Clone,
+{
+ fn swap(&mut self, lhs: Position, rhs: Position) {
+ if lhs == rhs {
+ return;
+ }
+
+ let t = std::mem::take(&mut self[lhs.0][lhs.1]);
+ let t = std::mem::replace(&mut self[rhs.0][rhs.1], t);
+ let _ = std::mem::replace(&mut self[lhs.0][lhs.1], t);
+ }
+
+ fn swap_row(&mut self, lhs: usize, rhs: usize) {
+ let t = std::mem::take(&mut self[lhs]);
+ let t = std::mem::replace(&mut self[rhs], t);
+ let _ = std::mem::replace(&mut self[lhs], t);
+ }
+
+ fn swap_column(&mut self, lhs: usize, rhs: usize) {
+ for row in self.iter_mut() {
+ row.swap(lhs, rhs);
+ }
+ }
+
+ fn push_row(&mut self) {
+ let records = std::mem::replace(self, VecRecords::new(vec![]));
+ let mut data: Vec<Vec<_>> = records.into();
+
+ let count_columns = data.get(0).map(|l| l.len()).unwrap_or(0);
+ data.push(vec![T::default(); count_columns]);
+
+ *self = VecRecords::new(data);
+ }
+
+ fn push_column(&mut self) {
+ let records = std::mem::replace(self, VecRecords::new(vec![]));
+ let mut data: Vec<Vec<_>> = records.into();
+
+ for row in &mut data {
+ row.push(T::default());
+ }
+
+ *self = VecRecords::new(data);
+ }
+
+ fn remove_row(&mut self, row: usize) {
+ let records = std::mem::replace(self, VecRecords::new(vec![]));
+ let mut data: Vec<Vec<_>> = records.into();
+
+ let _ = data.remove(row);
+
+ *self = VecRecords::new(data);
+ }
+
+ fn remove_column(&mut self, column: usize) {
+ let records = std::mem::replace(self, VecRecords::new(vec![]));
+ let mut data: Vec<Vec<_>> = records.into();
+
+ for row in &mut data {
+ let _ = row.remove(column);
+ }
+
+ *self = VecRecords::new(data);
+ }
+
+ fn insert_row(&mut self, row: usize) {
+ let records = std::mem::replace(self, VecRecords::new(vec![]));
+ let mut data: Vec<Vec<_>> = records.into();
+
+ let count_columns = data.get(0).map(|l| l.len()).unwrap_or(0);
+ data.insert(row, vec![T::default(); count_columns]);
+
+ *self = VecRecords::new(data);
+ }
+
+ fn insert_column(&mut self, column: usize) {
+ let records = std::mem::replace(self, VecRecords::new(vec![]));
+ let mut data: Vec<Vec<_>> = records.into();
+
+ for row in &mut data {
+ row.insert(column, T::default());
+ }
+
+ *self = VecRecords::new(data);
+ }
+}
diff --git a/vendor/tabled/src/lib.rs b/vendor/tabled/src/lib.rs
new file mode 100644
index 000000000..fb008b302
--- /dev/null
+++ b/vendor/tabled/src/lib.rs
@@ -0,0 +1,490 @@
+//! An easy to use library for pretty print tables of Rust `struct`s and `enum`s.
+//!
+//! The library supports different approaches of table building.
+//! You can use [`Tabled`] trait if the data type is known.
+//! Or you can use [`Builder`] to construct the table from scratch.
+//!
+//! ## Usage
+//!
+//! If you want to build a table for your custom type.
+//! A starting point is to a anotate your type with `#[derive(Tabled)]`.
+//!
+//! Then to provide your collection to [`Table::new`] and you will be set to render table.
+//!
+#![cfg_attr(all(feature = "derive", feature = "std"), doc = "```")]
+#![cfg_attr(not(all(feature = "derive", feature = "std")), doc = "```ignore")]
+//! use tabled::{Tabled, Table};
+//!
+//! #[derive(Tabled)]
+//! struct Language {
+//! name: &'static str,
+//! designed_by: &'static str,
+//! invented_year: usize,
+//! }
+//!
+//! let languages = vec![
+//! Language{
+//! name: "C",
+//! designed_by: "Dennis Ritchie",
+//! invented_year: 1972
+//! },
+//! Language{
+//! name: "Rust",
+//! designed_by: "Graydon Hoare",
+//! invented_year: 2010
+//! },
+//! Language{
+//! name: "Go",
+//! designed_by: "Rob Pike",
+//! invented_year: 2009
+//! },
+//! ];
+//!
+//! let table = Table::new(languages).to_string();
+//!
+//! let expected = "+------+----------------+---------------+\n\
+//! | name | designed_by | invented_year |\n\
+//! +------+----------------+---------------+\n\
+//! | C | Dennis Ritchie | 1972 |\n\
+//! +------+----------------+---------------+\n\
+//! | Rust | Graydon Hoare | 2010 |\n\
+//! +------+----------------+---------------+\n\
+//! | Go | Rob Pike | 2009 |\n\
+//! +------+----------------+---------------+";
+//!
+//! assert_eq!(table, expected);
+//! ```
+//!
+//! Not all types can derive [`Tabled`] trait though.
+//! The example below can't be compiled.
+//!
+//! ```rust,compile_fail
+//! # use tabled::Tabled;
+//! #[derive(Tabled)]
+//! struct SomeType {
+//! field1: SomeOtherType,
+//! }
+//!
+//! struct SomeOtherType;
+//! ```
+//!
+//! Because `tabled` must know what we're up to print as a field, so
+//! each (almoust) field must implement [`std::fmt::Display`].
+//!
+//! ### Default implementations
+//!
+//! [`Table`] can be build from vast majority of Rust's standard types.
+//! This allows you to run the following code.
+//!
+#![cfg_attr(feature = "std", doc = "```")]
+#![cfg_attr(not(feature = "std"), doc = "```ignore")]
+//! use tabled::{Tabled, Table};
+//! let table = Table::new(&[1, 2, 3]);
+//! # let expected = "+-----+\n\
+//! # | i32 |\n\
+//! # +-----+\n\
+//! # | 1 |\n\
+//! # +-----+\n\
+//! # | 2 |\n\
+//! # +-----+\n\
+//! # | 3 |\n\
+//! # +-----+";
+//! # assert_eq!(table.to_string(), expected);
+//! ```
+//!
+//! ### Dynamic table
+//!
+//! When you data scheme is not known at compile time.
+//! You most likely will not able to relay on [`Tabled`] trait.
+//!
+//! So one option would be is to use [`Builder`].
+//!
+#![cfg_attr(feature = "std", doc = "```")]
+#![cfg_attr(not(feature = "std"), doc = "```ignore")]
+//! use std::iter;
+//!
+//! use tabled::{
+//! builder::Builder,
+//! settings::{Modify, object::Rows, Alignment, Style}
+//! };
+//!
+//! let (x, y) = (3, 10);
+//!
+//! let mut builder = Builder::default();
+//!
+//! let header = iter::once(String::from("i"))
+//! .chain((0..y)
+//! .map(|i| i.to_string()));
+//! builder.set_header(header);
+//!
+//! for i in 0..x {
+//! let row = iter::once(i)
+//! .chain((0..y).map(|j| i * j))
+//! .map(|i| i.to_string());
+//! builder.push_record(row);
+//! }
+//!
+//! let table = builder.build()
+//! .with(Style::rounded())
+//! .with(Modify::new(Rows::new(1..)).with(Alignment::left()))
+//! .to_string();
+//!
+//! assert_eq!(
+//! table,
+//! concat!(
+//! "╭───┬───┬───┬───┬───┬───┬────┬────┬────┬────┬────╮\n",
+//! "│ i │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │\n",
+//! "├───┼───┼───┼───┼───┼───┼────┼────┼────┼────┼────┤\n",
+//! "│ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │\n",
+//! "│ 1 │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │\n",
+//! "│ 2 │ 0 │ 2 │ 4 │ 6 │ 8 │ 10 │ 12 │ 14 │ 16 │ 18 │\n",
+//! "╰───┴───┴───┴───┴───┴───┴────┴────┴────┴────┴────╯",
+//! )
+//! );
+//! ```
+//!
+//! ### Build table using [`row!`] and [`col!`] macros.
+//!
+#![cfg_attr(all(feature = "macros", feature = "std"), doc = "```")]
+#![cfg_attr(not(all(feature = "macros", feature = "std")), doc = "```ignore")]
+//! use tabled::{row, col};
+//!
+//! let table = row![
+//! col!["Hello", "World", "!"],
+//! col!["Hello"; 3],
+//! col!["World"; 3],
+//! ];
+//!
+//! assert_eq!(
+//! table.to_string(),
+//! concat!(
+//! "+-----------+-----------+-----------+\n",
+//! "| +-------+ | +-------+ | +-------+ |\n",
+//! "| | Hello | | | Hello | | | World | |\n",
+//! "| +-------+ | +-------+ | +-------+ |\n",
+//! "| | World | | | Hello | | | World | |\n",
+//! "| +-------+ | +-------+ | +-------+ |\n",
+//! "| | ! | | | Hello | | | World | |\n",
+//! "| +-------+ | +-------+ | +-------+ |\n",
+//! "+-----------+-----------+-----------+",
+//! )
+//! );
+//! ```
+//!
+//! ### Settings
+//!
+//! You can use many settings which is found in [`tabled::settings`] module.
+//!
+//! # Advanced
+//!
+//! ## Alloc
+//!
+//! [`Table`] keeps data buffered, which sometimes not ideal choise.
+//! For such reason there is [`IterTable`] and [`CompactTable`].
+//!
+//! ### Less allocations
+//!
+//! [`IterTable`] stands on a middle ground between [`Table`] and [`CompactTable`].
+//!
+//! It does allocate memory but in a much smaller chunks that a [`Table`] does.
+//! The benefit is that it can be used interchangebly with [`Table`].
+//!
+#![cfg_attr(feature = "std", doc = "```")]
+#![cfg_attr(not(feature = "std"), doc = "```ignore")]
+//! use tabled::tables::IterTable;
+//!
+//! let iterator = (0..3).map(|row| (0..4).map(move |col| format!("{}-{}", row, col)));
+//!
+//! let table = IterTable::new(iterator).to_string();
+//!
+//! assert_eq!(
+//! table,
+//! "+-----+-----+-----+-----+\n\
+//! | 0-0 | 0-1 | 0-2 | 0-3 |\n\
+//! +-----+-----+-----+-----+\n\
+//! | 1-0 | 1-1 | 1-2 | 1-3 |\n\
+//! +-----+-----+-----+-----+\n\
+//! | 2-0 | 2-1 | 2-2 | 2-3 |\n\
+//! +-----+-----+-----+-----+",
+//! );
+//! ```
+//!
+//! ## Alloc free (`#nostd`)
+//!
+//! [`CompactTable`] can be configured ('1) to not make any allocations.
+//! But the price is that the set of settings which can be applied to it is limited.
+//!
+//! It also can be printed directly to [`fmt::Write`] to not have any intermidiaries.
+//!
+//! '1. It does not make any allocations in case you provide it with `width` and `count_rows`.
+//!
+//! ```
+//! use tabled::{settings::Style, tables::CompactTable};
+//! use core::fmt::{Write, Result};
+//!
+//! struct StubWriter;
+//!
+//! impl Write for StubWriter {
+//! fn write_str(&mut self, _: &str) -> Result {
+//! Ok(())
+//! }
+//! }
+//!
+//! let data = [
+//! ["FreeBSD", "1993", "William and Lynne Jolitz", "?"],
+//! ["OpenBSD", "1995", "Theo de Raadt", ""],
+//! ["HardenedBSD", "2014", "Oliver Pinter and Shawn Webb", ""],
+//! ];
+//!
+//! let table = CompactTable::from(data).with(Style::psql());
+//!
+//! table.fmt(StubWriter);
+//! ```
+//!
+//! ## More information
+//!
+//! You can find more examples of settings and attributes in
+//! [README.md](https://github.com/zhiburt/tabled/blob/master/README.md)
+//!
+//! [`Builder`]: crate::builder::Builder
+//! [`IterTable`]: crate::tables::IterTable
+//! [`CompactTable`]: crate::tables::CompactTable
+//! [`fmt::Write`]: core::fmt::Write
+//! [`row!`]: crate::row
+//! [`col!`]: crate::col
+
+#![cfg_attr(not(any(feature = "std", test)), no_std)]
+#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
+#![doc(
+ html_logo_url = "https://raw.githubusercontent.com/zhiburt/tabled/86ac146e532ce9f7626608d7fd05072123603a2e/assets/tabled-gear.svg"
+)]
+#![deny(unused_must_use)]
+#![warn(
+ missing_docs,
+ rust_2018_idioms,
+ rust_2018_compatibility,
+ missing_debug_implementations,
+ unreachable_pub,
+ future_incompatible,
+ single_use_lifetimes,
+ trivial_casts,
+ trivial_numeric_casts,
+ unused_extern_crates,
+ unused_import_braces,
+ unused_qualifications,
+ unused_results,
+ unused_variables,
+ variant_size_differences
+)]
+#![allow(clippy::uninlined_format_args)]
+
+#[cfg(feature = "std")]
+mod tabled;
+
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub mod builder;
+pub mod settings;
+pub mod tables;
+
+#[cfg(feature = "macros")]
+#[cfg_attr(docsrs, doc(cfg(feature = "macros")))]
+pub mod macros;
+
+pub mod grid;
+
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub use crate::{tabled::Tabled, tables::Table};
+
+/// A derive to implement a [`Tabled`] trait.
+///
+/// The macros available only when `derive` feature in turned on (and it is by default).
+///
+/// To be able to use the derive each field must implement `std::fmt::Display`.
+/// The following example will cause a error because of that.
+///
+/// ```rust,compile_fail
+/// use tabled::Tabled;
+/// #[derive(Tabled)]
+/// struct SomeType {
+/// field1: SomeOtherType,
+/// }
+///
+/// struct SomeOtherType;
+/// ```
+///
+/// Bellow you'll find available options for it.
+///
+/// ### Override a column name
+///
+/// You can use a `#[tabled(rename = "")]` attribute to override a column name.
+///
+/// ```rust,no_run
+/// use tabled::Tabled;
+///
+/// #[derive(Tabled)]
+/// struct Person {
+/// #[tabled(rename = "Name")]
+/// first_name: &'static str,
+/// #[tabled(rename = "Surname")]
+/// last_name: &'static str,
+/// }
+/// ```
+///
+/// ### Hide a column
+///
+/// You can mark fields as hidden in which case they fill be ignored and not be present on a sheet.
+///
+/// A similar affect could be achieved by the means of a `Disable` setting.
+///
+/// ```rust,no_run
+/// use tabled::Tabled;
+///
+/// #[derive(Tabled)]
+/// struct Person {
+/// id: u8,
+/// #[tabled(skip)]
+/// number: &'static str,
+/// name: &'static str,
+/// }
+/// ```
+///
+/// ### Set column order
+///
+/// You can change the order in which they will be displayed in table.
+///
+/// ```rust,no_run
+/// use tabled::Tabled;
+///
+/// #[derive(Tabled)]
+/// struct Person {
+/// id: u8,
+/// #[tabled(order = 0)]
+/// number: &'static str,
+/// #[tabled(order = 1)]
+/// name: &'static str,
+/// }
+/// ```
+///
+/// ### Format fields
+///
+/// As was said already, using `#[derive(Tabled)]` is possible only when all fields implement a `Display` trait.
+/// However, this may be often not the case for example when a field uses the `Option` type. There's 2 common ways how to solve this:
+///
+/// - Implement `Tabled` trait manually for a type.
+/// - Wrap `Option` to something like `DisplayedOption<T>(Option<T>)` and implement a Display trait for it.
+///
+/// Alternatively, you can use the `#[tabled(display_with = "func")]` attribute for the field to specify a display function.
+///
+/// ```rust,no_run
+/// use tabled::Tabled;
+///
+/// #[derive(Tabled)]
+/// pub struct MyRecord {
+/// pub id: i64,
+/// #[tabled(display_with = "display_option")]
+/// pub valid: Option<bool>
+/// }
+///
+/// fn display_option(o: &Option<bool>) -> String {
+/// match o {
+/// Some(s) => format!("is valid thing = {}", s),
+/// None => format!("is not valid"),
+/// }
+/// }
+/// ```
+///
+/// It's also possible to change function argument to be `&self`,
+/// using `#[tabled(display_with("some_function", self))]`
+///
+/// ```rust,no_run
+/// use tabled::Tabled;
+///
+/// #[derive(Tabled)]
+/// pub struct MyRecord {
+/// pub id: i64,
+/// #[tabled(display_with("Self::display_valid", self))]
+/// pub valid: Option<bool>
+/// }
+///
+/// impl MyRecord {
+/// fn display_valid(&self) -> String {
+/// match self.valid {
+/// Some(s) => format!("is valid thing = {}", s),
+/// None => format!("is not valid"),
+/// }
+/// }
+/// }
+/// ```
+///
+/// ### Format headers
+///
+/// Beside `#[tabled(rename = "")]` you can change a format of a column name using
+/// `#[tabled(rename_all = "UPPERCASE")]`.
+///
+/// ```rust,no_run
+/// use tabled::Tabled;
+///
+/// #[derive(Tabled)]
+/// #[tabled(rename_all = "CamelCase")]
+/// struct Person {
+/// id: u8,
+/// number: &'static str,
+/// name: &'static str,
+/// #[tabled(rename_all = "snake_case")]
+/// middle_name: &'static str,
+/// }
+/// ```
+///
+/// ### Inline
+///
+/// It's possible to inline internal data if it implements the `Tabled` trait using `#[tabled(inline)]`.
+/// You can also set a prefix which will be used for all inlined elements by `#[tabled(inline("prefix>>"))]`.
+///
+/// ```rust,no_run
+/// use tabled::Tabled;
+///
+/// #[derive(Tabled)]
+/// struct Person {
+/// id: u8,
+/// name: &'static str,
+/// #[tabled(inline)]
+/// ed: Education,
+/// }
+///
+/// #[derive(Tabled)]
+/// struct Education {
+/// uni: &'static str,
+/// graduated: bool,
+/// }
+/// ```
+///
+/// And it works for enums as well.
+///
+/// ```rust,no_run
+/// use tabled::Tabled;
+///
+/// #[derive(Tabled)]
+/// enum Vehicle {
+/// #[tabled(inline("Auto::"))]
+/// Auto {
+/// model: &'static str,
+/// engine: &'static str,
+/// },
+/// #[tabled(inline)]
+/// Bikecycle(
+/// &'static str,
+/// #[tabled(inline)] Bike,
+/// ),
+/// }
+///
+/// #[derive(Tabled)]
+/// struct Bike {
+/// brand: &'static str,
+/// price: f32,
+/// }
+/// ```
+#[cfg(feature = "derive")]
+#[cfg_attr(docsrs, doc(cfg(feature = "derive")))]
+pub use tabled_derive::Tabled;
diff --git a/vendor/tabled/src/macros/col.rs b/vendor/tabled/src/macros/col.rs
new file mode 100644
index 000000000..1fd67de8a
--- /dev/null
+++ b/vendor/tabled/src/macros/col.rs
@@ -0,0 +1,50 @@
+/// Creates a [`Table`] with [`Display`] arguments nested within.
+///
+/// The macros allows several tables to be displayed vertically.
+///
+/// Companion to [`row!`].
+///
+/// # Examples
+/// ```rust,no_run
+/// # use tabled::{row, col, Table};
+/// # let (table1, table2, table3) = (Table::new(&[String::new()]), Table::new(&[String::new()]), Table::new(&[String::new()]));
+/// let new_table = col![table1, table2];
+/// let new_table_of_clones = col![table1; 3];
+/// let columns_and_rows = col![
+/// table1,
+/// row![table2, table3]
+/// ];
+/// ```
+///
+/// [`row!`]: crate::row
+/// [`Table`]: crate::Table
+/// [`Display`]: std::fmt::Display
+#[macro_export]
+#[cfg_attr(docsrs, doc(cfg(feature = "macros")))]
+macro_rules! col {
+ // Vertical
+ ( $($table:expr), * $(,)? ) => {{
+ let mut builder = $crate::builder::Builder::default();
+
+ $(
+ builder.push_record([$table.to_string()]);
+ )*
+
+ builder.build()
+ }};
+
+ // Duplicate single item
+ ( $table:expr; $N:expr) => {{
+ let mut builder = $crate::builder::Builder::default();
+
+ let n = $N;
+ if n > 0 {
+ let t = $table.to_string();
+ for _ in 0..$N {
+ builder.push_record([t.clone()]);
+ }
+ }
+
+ builder.build()
+ }};
+}
diff --git a/vendor/tabled/src/macros/mod.rs b/vendor/tabled/src/macros/mod.rs
new file mode 100644
index 000000000..7db0a9caa
--- /dev/null
+++ b/vendor/tabled/src/macros/mod.rs
@@ -0,0 +1,6 @@
+//! This module contains macro functions for dynamic [`Table`] construction.
+//!
+//! [`Table`]: crate::Table
+
+mod col;
+mod row;
diff --git a/vendor/tabled/src/macros/row.rs b/vendor/tabled/src/macros/row.rs
new file mode 100644
index 000000000..23775b90d
--- /dev/null
+++ b/vendor/tabled/src/macros/row.rs
@@ -0,0 +1,44 @@
+/// Creates a [`Table`] with [`Display`] arguments nested within.
+///
+/// The macros allows several tables to be displayed horizontally.
+///
+/// Companion to [`col!`].
+///
+/// # Examples
+/// ```rust,no_run
+/// # use tabled::{row, col, Table};
+/// # let (table1, table2, table3) = (Table::new(&[String::new()]), Table::new(&[String::new()]), Table::new(&[String::new()]));
+/// let new_table = row![table1, table2];
+/// let new_table_of_clones = row![table1; 3];
+/// let rows_and_columns = row![
+/// table1,
+/// col![table2, table3]
+/// ];
+/// ```
+///
+/// [`col!`]: crate::col
+/// [`Table`]: crate::Table
+/// [`Display`]: std::fmt::Display
+#[macro_export]
+#[cfg_attr(docsrs, doc(cfg(feature = "macros")))]
+macro_rules! row {
+ // Horizontal Display
+ ( $($table:expr), * $(,)? ) => {{
+ let mut builder = $crate::builder::Builder::default();
+
+ let record = [ $($table.to_string(),)* ];
+ builder.push_record(record);
+
+ builder.build()
+ }};
+
+ // Duplicate single item
+ ( $table:expr; $N:expr) => {{
+ let mut builder = $crate::builder::Builder::default();
+
+ let duplicates = vec![$table.to_string(); $N];
+ builder.push_record(duplicates);
+
+ builder.build()
+ }};
+}
diff --git a/vendor/tabled/src/settings/alignment/mod.rs b/vendor/tabled/src/settings/alignment/mod.rs
new file mode 100644
index 000000000..81d1717a6
--- /dev/null
+++ b/vendor/tabled/src/settings/alignment/mod.rs
@@ -0,0 +1,189 @@
+//! This module contains an [`Alignment`] setting for cells on the [`Table`].
+//!
+//! # Example
+//!
+#![cfg_attr(feature = "std", doc = "```")]
+#![cfg_attr(not(feature = "std"), doc = "```ignore")]
+//! # use tabled::{Table, settings::{Alignment, Modify, object::Rows}};
+//! # let data: Vec<&'static str> = Vec::new();
+//! let mut table = Table::new(&data);
+//! table.with(Modify::new(Rows::single(0)).with(Alignment::center()));
+//! ```
+//!
+//! [`Table`]: crate::Table
+
+use crate::{
+ grid::config::CompactConfig,
+ grid::config::{AlignmentHorizontal, AlignmentVertical, CompactMultilineConfig},
+ settings::TableOption,
+};
+
+use AlignmentInner::*;
+
+#[cfg(feature = "std")]
+use crate::grid::config::{ColoredConfig, Entity};
+
+/// Alignment represent a horizontal and vertical alignment setting for any cell on a [`Table`].
+///
+/// An alignment strategy can be set by [`AlignmentStrategy`].
+///
+/// # Example
+///
+#[cfg_attr(feature = "std", doc = "```")]
+#[cfg_attr(not(feature = "std"), doc = "```ignore")]
+/// use tabled::{
+/// Table,
+/// settings::{
+/// formatting::AlignmentStrategy,
+/// object::Segment, Alignment, Modify, Style,
+/// }
+/// };
+///
+/// let data = [
+/// ["1", "2", "3"],
+/// ["Some\nMulti\nLine\nText", "and a line", "here"],
+/// ["4", "5", "6"],
+/// ];
+///
+/// let mut table = Table::new(&data);
+/// table
+/// .with(Style::modern())
+/// .with(
+/// Modify::new(Segment::all())
+/// .with(Alignment::right())
+/// .with(Alignment::center())
+/// .with(AlignmentStrategy::PerCell)
+/// );
+///
+/// assert_eq!(
+/// table.to_string(),
+/// concat!(
+/// "┌───────┬────────────┬──────â”\n",
+/// "│ 0 │ 1 │ 2 │\n",
+/// "├───────┼────────────┼──────┤\n",
+/// "│ 1 │ 2 │ 3 │\n",
+/// "├───────┼────────────┼──────┤\n",
+/// "│ Some │ and a line │ here │\n",
+/// "│ Multi │ │ │\n",
+/// "│ Line │ │ │\n",
+/// "│ Text │ │ │\n",
+/// "├───────┼────────────┼──────┤\n",
+/// "│ 4 │ 5 │ 6 │\n",
+/// "└───────┴────────────┴──────┘",
+/// ),
+/// )
+/// ```
+///
+/// [`Table`]: crate::Table
+/// [`AlignmentStrategy`]: crate::settings::formatting::AlignmentStrategy
+#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, PartialOrd, Ord)]
+pub struct Alignment {
+ inner: AlignmentInner,
+}
+
+#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, PartialOrd, Ord)]
+enum AlignmentInner {
+ /// A horizontal alignment.
+ Horizontal(AlignmentHorizontal),
+ /// A vertical alignment.
+ Vertical(AlignmentVertical),
+}
+
+impl Alignment {
+ /// Left constructs a horizontal alignment to [`AlignmentHorizontal::Left`]
+ pub fn left() -> Self {
+ Self::horizontal(AlignmentHorizontal::Left)
+ }
+
+ /// Right constructs a horizontal alignment to [`AlignmentHorizontal::Right`]
+ ///
+ /// ## Notice
+ ///
+ /// When you use [`MinWidth`] the alignment might not work as you expected.
+ /// You could try to apply [`TrimStrategy`] which may help.
+ ///
+ /// [`MinWidth`]: crate::settings::width::MinWidth
+ /// [`TrimStrategy`]: crate::settings::formatting::TrimStrategy
+ pub fn right() -> Self {
+ Self::horizontal(AlignmentHorizontal::Right)
+ }
+
+ /// Center constructs a horizontal alignment to [`AlignmentHorizontal::Center`]
+ ///
+ /// ## Notice
+ ///
+ /// When you use [`MinWidth`] the alignment might not work as you expected.
+ /// You could try to apply [`TrimStrategy`] which may help.
+ ///
+ /// [`MinWidth`]: crate::settings::width::MinWidth
+ /// [`TrimStrategy`]: crate::settings::formatting::TrimStrategy
+ pub const fn center() -> Self {
+ Self::horizontal(AlignmentHorizontal::Center)
+ }
+
+ /// Top constructs a vertical alignment to [`AlignmentVertical::Top`]
+ pub const fn top() -> Self {
+ Self::vertical(AlignmentVertical::Top)
+ }
+
+ /// Bottom constructs a vertical alignment to [`AlignmentVertical::Bottom`]
+ pub const fn bottom() -> Self {
+ Self::vertical(AlignmentVertical::Bottom)
+ }
+
+ /// `Center_vertical` constructs a vertical alignment to [`AlignmentVertical::Center`]
+ pub const fn center_vertical() -> Self {
+ Self::vertical(AlignmentVertical::Center)
+ }
+
+ /// Returns an alignment with the given horizontal alignment.
+ const fn horizontal(alignment: AlignmentHorizontal) -> Self {
+ Self::new(Horizontal(alignment))
+ }
+
+ /// Returns an alignment with the given vertical alignment.
+ const fn vertical(alignment: AlignmentVertical) -> Self {
+ Self::new(Vertical(alignment))
+ }
+
+ const fn new(inner: AlignmentInner) -> Self {
+ Self { inner }
+ }
+}
+
+#[cfg(feature = "std")]
+impl<R> crate::settings::CellOption<R, ColoredConfig> for Alignment {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, entity: Entity) {
+ match self.inner {
+ Horizontal(a) => cfg.set_alignment_horizontal(entity, a),
+ Vertical(a) => cfg.set_alignment_vertical(entity, a),
+ }
+ }
+}
+
+#[cfg(feature = "std")]
+impl<R, D> TableOption<R, D, ColoredConfig> for Alignment {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ match self.inner {
+ Horizontal(a) => cfg.set_alignment_horizontal(Entity::Global, a),
+ Vertical(a) => cfg.set_alignment_vertical(Entity::Global, a),
+ }
+ }
+}
+
+impl<R, D> TableOption<R, D, CompactConfig> for Alignment {
+ fn change(self, _: &mut R, cfg: &mut CompactConfig, _: &mut D) {
+ if let Horizontal(a) = self.inner {
+ *cfg = cfg.set_alignment_horizontal(a)
+ }
+ }
+}
+
+impl<R, D> TableOption<R, D, CompactMultilineConfig> for Alignment {
+ fn change(self, _: &mut R, cfg: &mut CompactMultilineConfig, _: &mut D) {
+ match self.inner {
+ Horizontal(a) => *cfg = cfg.set_alignment_horizontal(a),
+ Vertical(a) => *cfg = cfg.set_alignment_vertical(a),
+ }
+ }
+}
diff --git a/vendor/tabled/src/settings/cell_option.rs b/vendor/tabled/src/settings/cell_option.rs
new file mode 100644
index 000000000..f589ac47f
--- /dev/null
+++ b/vendor/tabled/src/settings/cell_option.rs
@@ -0,0 +1,55 @@
+use crate::grid::{
+ config::Entity,
+ records::{ExactRecords, Records, RecordsMut},
+};
+
+/// A trait for configuring a single cell.
+///
+/// ~~~~ Where cell represented by 'row' and 'column' indexes. ~~~~
+///
+/// A cell can be targeted by [`Cell`].
+///
+/// [`Cell`]: crate::object::Cell
+pub trait CellOption<R, C> {
+ /// Modification function of a single cell.
+ fn change(self, records: &mut R, cfg: &mut C, entity: Entity);
+}
+
+#[cfg(feature = "std")]
+impl<R, C> CellOption<R, C> for String
+where
+ R: Records + ExactRecords + RecordsMut<String>,
+{
+ fn change(self, records: &mut R, cfg: &mut C, entity: Entity) {
+ (&self).change(records, cfg, entity);
+ }
+}
+
+#[cfg(feature = "std")]
+impl<R, C> CellOption<R, C> for &String
+where
+ R: Records + ExactRecords + RecordsMut<String>,
+{
+ fn change(self, records: &mut R, _: &mut C, entity: Entity) {
+ let count_rows = records.count_rows();
+ let count_cols = records.count_columns();
+
+ for pos in entity.iter(count_rows, count_cols) {
+ records.set(pos, self.clone());
+ }
+ }
+}
+
+impl<'a, R, C> CellOption<R, C> for &'a str
+where
+ R: Records + ExactRecords + RecordsMut<&'a str>,
+{
+ fn change(self, records: &mut R, _: &mut C, entity: Entity) {
+ let count_rows = records.count_rows();
+ let count_cols = records.count_columns();
+
+ for pos in entity.iter(count_rows, count_cols) {
+ records.set(pos, self);
+ }
+ }
+}
diff --git a/vendor/tabled/src/settings/color/mod.rs b/vendor/tabled/src/settings/color/mod.rs
new file mode 100644
index 000000000..f4bfa5c32
--- /dev/null
+++ b/vendor/tabled/src/settings/color/mod.rs
@@ -0,0 +1,346 @@
+//! This module contains a configuration of a [`Border`] or a [`Table`] to set its borders color via [`Color`].
+//!
+//! [`Border`]: crate::settings::Border
+//! [`Table`]: crate::Table
+
+use std::{borrow::Cow, ops::BitOr};
+
+use crate::{
+ grid::{
+ color::{AnsiColor, StaticColor},
+ config::{ColoredConfig, Entity},
+ },
+ settings::{CellOption, TableOption},
+};
+
+/// Color represents a color which can be set to things like [`Border`], [`Padding`] and [`Margin`].
+///
+/// # Example
+///
+/// ```
+/// use tabled::{settings::Color, Table};
+///
+/// let data = [
+/// (0u8, "Hello"),
+/// (1u8, "World"),
+/// ];
+///
+/// let table = Table::new(data)
+/// .with(Color::BG_BLUE)
+/// .to_string();
+///
+/// println!("{}", table);
+/// ```
+///
+/// [`Padding`]: crate::settings::Padding
+/// [`Margin`]: crate::settings::Margin
+/// [`Border`]: crate::settings::Border
+#[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord)]
+pub struct Color(AnsiColor<'static>);
+
+// todo: Add | operation to combine colors
+
+#[rustfmt::skip]
+impl Color {
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const FG_BLACK: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[30m"), Cow::Borrowed("\u{1b}[39m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const FG_BLUE: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[34m"), Cow::Borrowed("\u{1b}[39m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const FG_BRIGHT_BLACK: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[90m"), Cow::Borrowed("\u{1b}[39m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const FG_BRIGHT_BLUE: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[94m"), Cow::Borrowed("\u{1b}[39m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const FG_BRIGHT_CYAN: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[96m"), Cow::Borrowed("\u{1b}[39m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const FG_BRIGHT_GREEN: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[92m"), Cow::Borrowed("\u{1b}[39m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const FG_BRIGHT_MAGENTA: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[95m"), Cow::Borrowed("\u{1b}[39m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const FG_BRIGHT_RED: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[91m"), Cow::Borrowed("\u{1b}[39m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const FG_BRIGHT_WHITE: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[97m"), Cow::Borrowed("\u{1b}[39m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const FG_BRIGHT_YELLOW: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[93m"), Cow::Borrowed("\u{1b}[39m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const FG_CYAN: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[36m"), Cow::Borrowed("\u{1b}[39m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const FG_GREEN: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[32m"), Cow::Borrowed("\u{1b}[39m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const FG_MAGENTA: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[35m"), Cow::Borrowed("\u{1b}[39m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const FG_RED: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[31m"), Cow::Borrowed("\u{1b}[39m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const FG_WHITE: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[37m"), Cow::Borrowed("\u{1b}[39m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const FG_YELLOW: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[33m"), Cow::Borrowed("\u{1b}[39m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+
+ pub const BG_BLACK: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[40m"), Cow::Borrowed("\u{1b}[49m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const BG_BLUE: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[44m"), Cow::Borrowed("\u{1b}[49m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const BG_BRIGHT_BLACK: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[100m"), Cow::Borrowed("\u{1b}[49m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const BG_BRIGHT_BLUE: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[104m"), Cow::Borrowed("\u{1b}[49m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const BG_BRIGHT_CYAN: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[106m"), Cow::Borrowed("\u{1b}[49m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const BG_BRIGHT_GREEN: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[102m"), Cow::Borrowed("\u{1b}[49m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const BG_BRIGHT_MAGENTA: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[105m"), Cow::Borrowed("\u{1b}[49m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const BG_BRIGHT_RED: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[101m"), Cow::Borrowed("\u{1b}[49m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const BG_BRIGHT_WHITE: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[107m"), Cow::Borrowed("\u{1b}[49m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const BG_BRIGHT_YELLOW: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[103m"), Cow::Borrowed("\u{1b}[49m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const BG_CYAN: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[46m"), Cow::Borrowed("\u{1b}[49m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const BG_GREEN: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[42m"), Cow::Borrowed("\u{1b}[49m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const BG_MAGENTA: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[45m"), Cow::Borrowed("\u{1b}[49m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const BG_RED: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[41m"), Cow::Borrowed("\u{1b}[49m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const BG_WHITE: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[47m"), Cow::Borrowed("\u{1b}[49m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const BG_YELLOW: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[43m"), Cow::Borrowed("\u{1b}[49m")));
+ /// A color representation.
+ ///
+ /// Notice that the colors are constants so you can't combine them.
+ pub const BOLD: Self = Self(AnsiColor::new(Cow::Borrowed("\u{1b}[1m"), Cow::Borrowed("\u{1b}[22m")));
+}
+
+impl Color {
+ /// Creates a new [`Color`]` instance, with ANSI prefix and ANSI suffix.
+ /// You can use [`TryFrom`] to construct it from [`String`].
+ pub fn new(prefix: String, suffix: String) -> Self {
+ Self(AnsiColor::new(prefix.into(), suffix.into()))
+ }
+}
+
+impl From<Color> for AnsiColor<'static> {
+ fn from(c: Color) -> Self {
+ c.0
+ }
+}
+
+impl From<AnsiColor<'static>> for Color {
+ fn from(c: AnsiColor<'static>) -> Self {
+ Self(c)
+ }
+}
+
+impl From<StaticColor> for Color {
+ fn from(c: StaticColor) -> Self {
+ Self(AnsiColor::new(
+ Cow::Borrowed(c.get_prefix()),
+ Cow::Borrowed(c.get_suffix()),
+ ))
+ }
+}
+
+impl BitOr for Color {
+ type Output = Color;
+
+ fn bitor(self, rhs: Self) -> Self::Output {
+ let l_prefix = self.0.get_prefix();
+ let l_suffix = self.0.get_suffix();
+ let r_prefix = rhs.0.get_prefix();
+ let r_suffix = rhs.0.get_suffix();
+
+ let mut prefix = l_prefix.to_string();
+ if l_prefix != r_prefix {
+ prefix.push_str(r_prefix);
+ }
+
+ let mut suffix = l_suffix.to_string();
+ if l_suffix != r_suffix {
+ suffix.push_str(r_suffix);
+ }
+
+ Self::new(prefix, suffix)
+ }
+}
+
+#[cfg(feature = "color")]
+impl std::convert::TryFrom<&str> for Color {
+ type Error = ();
+
+ fn try_from(value: &str) -> Result<Self, Self::Error> {
+ AnsiColor::try_from(value).map(Color)
+ }
+}
+
+#[cfg(feature = "color")]
+impl std::convert::TryFrom<String> for Color {
+ type Error = ();
+
+ fn try_from(value: String) -> Result<Self, Self::Error> {
+ AnsiColor::try_from(value).map(Color)
+ }
+}
+
+impl<R, D> TableOption<R, D, ColoredConfig> for Color {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let _ = cfg.set_color(Entity::Global, self.0.clone());
+ }
+}
+
+impl<R> CellOption<R, ColoredConfig> for Color {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, entity: Entity) {
+ let _ = cfg.set_color(entity, self.0.clone());
+ }
+}
+
+impl<R> CellOption<R, ColoredConfig> for &Color {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, entity: Entity) {
+ let _ = cfg.set_color(entity, self.0.clone());
+ }
+}
+
+impl crate::grid::color::Color for Color {
+ fn fmt_prefix<W: std::fmt::Write>(&self, f: &mut W) -> std::fmt::Result {
+ self.0.fmt_prefix(f)
+ }
+
+ fn fmt_suffix<W: std::fmt::Write>(&self, f: &mut W) -> std::fmt::Result {
+ self.0.fmt_suffix(f)
+ }
+
+ fn colorize<W: std::fmt::Write>(&self, f: &mut W, text: &str) -> std::fmt::Result {
+ self.0.colorize(f, text)
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[cfg(feature = "color")]
+ use ::{owo_colors::OwoColorize, std::convert::TryFrom};
+
+ #[test]
+ fn test_xor_operation() {
+ assert_eq!(
+ Color::FG_BLACK | Color::FG_BLUE,
+ Color::new(
+ String::from("\u{1b}[30m\u{1b}[34m"),
+ String::from("\u{1b}[39m")
+ )
+ );
+ assert_eq!(
+ Color::FG_BRIGHT_GREEN | Color::BG_BLUE,
+ Color::new(
+ String::from("\u{1b}[92m\u{1b}[44m"),
+ String::from("\u{1b}[39m\u{1b}[49m")
+ )
+ );
+ assert_eq!(
+ Color::new(String::from("..."), String::from("!!!"))
+ | Color::new(String::from("@@@"), String::from("###")),
+ Color::new(String::from("...@@@"), String::from("!!!###"))
+ );
+ assert_eq!(
+ Color::new(String::from("..."), String::from("!!!"))
+ | Color::new(String::from("@@@"), String::from("###"))
+ | Color::new(String::from("$$$"), String::from("%%%")),
+ Color::new(String::from("...@@@$$$"), String::from("!!!###%%%"))
+ );
+ }
+
+ #[cfg(feature = "color")]
+ #[test]
+ fn test_try_from() {
+ assert_eq!(Color::try_from(""), Err(()));
+ assert_eq!(Color::try_from("".red().on_green().to_string()), Err(()));
+ assert_eq!(
+ Color::try_from("."),
+ Ok(Color::new(String::new(), String::new()))
+ );
+ assert_eq!(
+ Color::try_from("...."),
+ Ok(Color::new(String::new(), String::new()))
+ );
+ assert_eq!(
+ Color::try_from(".".red().on_green().to_string()),
+ Ok(Color::new(
+ String::from("\u{1b}[31m\u{1b}[42m"),
+ String::from("\u{1b}[39m\u{1b}[49m")
+ ))
+ );
+ assert_eq!(
+ Color::try_from("....".red().on_green().to_string()),
+ Ok(Color::new(
+ String::from("\u{1b}[31m\u{1b}[42m"),
+ String::from("\u{1b}[39m\u{1b}[49m")
+ ))
+ );
+ }
+}
diff --git a/vendor/tabled/src/settings/concat/mod.rs b/vendor/tabled/src/settings/concat/mod.rs
new file mode 100644
index 000000000..23b0dcda1
--- /dev/null
+++ b/vendor/tabled/src/settings/concat/mod.rs
@@ -0,0 +1,171 @@
+//! This module contains a [`Concat`] primitive which can be in order to combine 2 [`Table`]s into 1.
+//!
+//! # Example
+//!
+//! ```
+//! use tabled::{Table, settings::Concat};
+//! let table1 = Table::new([0, 1, 2, 3]);
+//! let table2 = Table::new(["A", "B", "C", "D"]);
+//!
+//! let mut table3 = table1;
+//! table3.with(Concat::horizontal(table2));
+//! ```
+
+use std::borrow::Cow;
+
+use crate::{
+ grid::records::{ExactRecords, PeekableRecords, Records, RecordsMut, Resizable},
+ settings::TableOption,
+ Table,
+};
+
+/// [`Concat`] concatenates tables along a particular axis [Horizontal | Vertical].
+/// It doesn't do any key or column comparisons like SQL's join does.
+///
+/// When the tables has different sizes, empty cells will be created by default.
+///
+/// [`Concat`] in horizontal mode has similar behaviour to tuples `(a, b)`.
+/// But it behaves on tables rather than on an actual data.
+///
+/// # Example
+///
+///
+#[cfg_attr(feature = "derive", doc = "```")]
+#[cfg_attr(not(feature = "derive"), doc = "```ignore")]
+/// use tabled::{Table, Tabled, settings::{Style, Concat}};
+///
+/// #[derive(Tabled)]
+/// struct Message {
+/// id: &'static str,
+/// text: &'static str,
+/// }
+///
+/// #[derive(Tabled)]
+/// struct Department(#[tabled(rename = "department")] &'static str);
+///
+/// let messages = [
+/// Message { id: "0", text: "Hello World" },
+/// Message { id: "1", text: "Do do do something", },
+/// ];
+///
+/// let departments = [
+/// Department("Admins"),
+/// Department("DevOps"),
+/// Department("R&D"),
+/// ];
+///
+/// let mut table = Table::new(messages);
+/// table
+/// .with(Concat::horizontal(Table::new(departments)))
+/// .with(Style::extended());
+///
+/// assert_eq!(
+/// table.to_string(),
+/// concat!(
+/// "â•”â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•â•â•â•—\n",
+/// "â•‘ id â•‘ text â•‘ department â•‘\n",
+/// "â• â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•â•â•£\n",
+/// "â•‘ 0 â•‘ Hello World â•‘ Admins â•‘\n",
+/// "â• â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•â•â•£\n",
+/// "â•‘ 1 â•‘ Do do do something â•‘ DevOps â•‘\n",
+/// "â• â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•â•â•£\n",
+/// "â•‘ â•‘ â•‘ R&D â•‘\n",
+/// "â•šâ•â•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•â•â•",
+/// )
+/// )
+/// ```
+
+#[derive(Debug)]
+pub struct Concat {
+ table: Table,
+ mode: ConcatMode,
+ default_cell: Cow<'static, str>,
+}
+
+#[derive(Debug)]
+enum ConcatMode {
+ Vertical,
+ Horizontal,
+}
+
+impl Concat {
+ fn new(table: Table, mode: ConcatMode) -> Self {
+ Self {
+ table,
+ mode,
+ default_cell: Cow::Borrowed(""),
+ }
+ }
+
+ /// Concatenate 2 tables horizontally (along axis=0)
+ pub fn vertical(table: Table) -> Self {
+ Self::new(table, ConcatMode::Vertical)
+ }
+
+ /// Concatenate 2 tables vertically (along axis=1)
+ pub fn horizontal(table: Table) -> Self {
+ Self::new(table, ConcatMode::Horizontal)
+ }
+
+ /// Sets a cell's content for cases where 2 tables has different sizes.
+ pub fn default_cell(mut self, cell: impl Into<Cow<'static, str>>) -> Self {
+ self.default_cell = cell.into();
+ self
+ }
+}
+
+impl<R, D, C> TableOption<R, D, C> for Concat
+where
+ R: Records + ExactRecords + Resizable + PeekableRecords + RecordsMut<String>,
+{
+ fn change(mut self, records: &mut R, _: &mut C, _: &mut D) {
+ let count_rows = records.count_rows();
+ let count_cols = records.count_columns();
+
+ let rhs = &mut self.table;
+ match self.mode {
+ ConcatMode::Horizontal => {
+ for _ in 0..rhs.count_columns() {
+ records.push_column();
+ }
+
+ for row in count_rows..rhs.count_rows() {
+ records.push_row();
+
+ for col in 0..records.count_columns() {
+ records.set((row, col), self.default_cell.to_string());
+ }
+ }
+
+ for row in 0..rhs.shape().0 {
+ for col in 0..rhs.shape().1 {
+ let text = rhs.get_records().get_text((row, col)).to_string();
+ let col = col + count_cols;
+ records.set((row, col), text);
+ }
+ }
+ }
+ ConcatMode::Vertical => {
+ for _ in 0..rhs.count_rows() {
+ records.push_row();
+ }
+
+ for col in count_cols..rhs.shape().1 {
+ records.push_column();
+
+ for row in 0..records.count_rows() {
+ records.set((row, col), self.default_cell.to_string());
+ }
+ }
+
+ for row in 0..rhs.shape().0 {
+ for col in 0..rhs.shape().1 {
+ let text = rhs.get_records().get_text((row, col)).to_string();
+ let row = row + count_rows;
+ records.set((row, col), text);
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/vendor/tabled/src/settings/disable/mod.rs b/vendor/tabled/src/settings/disable/mod.rs
new file mode 100644
index 000000000..bfbf03db0
--- /dev/null
+++ b/vendor/tabled/src/settings/disable/mod.rs
@@ -0,0 +1,196 @@
+//! This module contains a [`Disable`] structure which helps to
+//! remove an etheir column or row from a [`Table`].
+//!
+//! # Example
+//!
+//! ```rust,no_run
+//! # use tabled::{Table, settings::{Disable, object::Rows}};
+//! # let data: Vec<&'static str> = Vec::new();
+//! let table = Table::new(&data).with(Disable::row(Rows::first()));
+//! ```
+//!
+//! [`Table`]: crate::Table
+
+use std::marker::PhantomData;
+
+use crate::{
+ grid::records::{ExactRecords, Records, Resizable},
+ settings::{locator::Locator, TableOption},
+};
+
+/// Disable removes particular rows/columns from a [`Table`].
+///
+/// It tries to keeps track of style changes which may occur.
+/// But it's not guaranteed will be the way you would expect it to be.
+///
+/// Generally you should avoid use of [`Disable`] because it's a slow function and modifies the underlying records.
+/// Providing correct data right away is better.
+///
+/// # Example
+///
+/// ```
+/// use tabled::{Table, settings::{Disable, object::Rows}};
+///
+/// let data = vec!["Hello", "World", "!!!"];
+///
+/// let table = Table::new(data).with(Disable::row(Rows::new(1..2))).to_string();
+///
+/// assert_eq!(
+/// table,
+/// "+-------+\n\
+/// | &str |\n\
+/// +-------+\n\
+/// | World |\n\
+/// +-------+\n\
+/// | !!! |\n\
+/// +-------+"
+/// );
+///
+/// ```
+/// [`Table`]: crate::Table
+#[derive(Debug)]
+pub struct Disable<L, Target> {
+ locator: L,
+ target: PhantomData<Target>,
+}
+
+impl<L> Disable<L, TargetColumn> {
+ /// Disable columns.
+ ///
+ /// Available locators are:
+ ///
+ /// - [`Columns`]
+ /// - [`Column`]
+ /// - [`FirstColumn`]
+ /// - [`LastColumn`]
+ /// - [`ByColumnName`]
+ ///
+ /// ```rust
+ /// use tabled::{builder::Builder, settings::{Disable, locator::ByColumnName, object::Columns}};
+ ///
+ /// let mut builder = Builder::default();
+ ///
+ /// builder.push_record(["col1", "col2", "col3"]);
+ /// builder.push_record(["Hello", "World", "1"]);
+ ///
+ /// let table = builder.build()
+ /// .with(Disable::column(ByColumnName::new("col3")))
+ /// .to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// "+-------+-------+\n\
+ /// | col1 | col2 |\n\
+ /// +-------+-------+\n\
+ /// | Hello | World |\n\
+ /// +-------+-------+"
+ /// );
+ /// ```
+ ///
+ /// [`Columns`]: crate::settings::object::Columns
+ /// [`Column`]: crate::settings::object::Column
+ /// [`FirstColumn`]: crate::settings::object::FirstColumn
+ /// [`LastColumn`]: crate::settings::object::LastColumn
+ /// [`ByColumnName`]: crate::settings::locator::ByColumnName
+ pub fn column(locator: L) -> Self {
+ Self {
+ locator,
+ target: PhantomData,
+ }
+ }
+}
+
+impl<L> Disable<L, TargetRow> {
+ /// Disable rows.
+ ///
+ /// Available locators are:
+ ///
+ /// - [`Rows`]
+ /// - [`Row`]
+ /// - [`FirstRow`]
+ /// - [`LastRow`]
+ ///
+ /// ```rust
+ /// use tabled::{settings::{Disable, object::Rows}, builder::Builder};
+ ///
+ /// let mut builder = Builder::default();
+ /// builder.push_record(["col1", "col2", "col3"]);
+ /// builder.push_record(["Hello", "World", "1"]);
+ ///
+ /// let table = builder.build()
+ /// .with(Disable::row(Rows::first()))
+ /// .to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// "+-------+-------+---+\n\
+ /// | Hello | World | 1 |\n\
+ /// +-------+-------+---+"
+ /// );
+ /// ```
+ ///
+ /// [`Rows`]: crate::settings::object::Rows
+ /// [`Row`]: crate::settings::object::Row
+ /// [`FirstRow`]: crate::settings::object::FirstRow
+ /// [`LastRow`]: crate::settings::object::LastRow
+ pub fn row(locator: L) -> Self {
+ Self {
+ locator,
+ target: PhantomData,
+ }
+ }
+}
+
+/// A marker struct for [`Disable`].
+#[derive(Debug)]
+pub struct TargetRow;
+
+/// A marker struct for [`Disable`].
+#[derive(Debug)]
+pub struct TargetColumn;
+
+impl<L, R, D, C> TableOption<R, D, C> for Disable<L, TargetColumn>
+where
+ for<'a> L: Locator<&'a R, Coordinate = usize>,
+ R: Records + Resizable,
+{
+ fn change(mut self, records: &mut R, _: &mut C, _: &mut D) {
+ let columns = self.locator.locate(records).into_iter().collect::<Vec<_>>();
+
+ let mut shift = 0;
+ for col in columns.into_iter() {
+ if col - shift > records.count_columns() {
+ continue;
+ }
+
+ records.remove_column(col - shift);
+ shift += 1;
+ }
+
+ // fixme: I am pretty sure that we violate span constrains by removing rows/cols
+ // Because span may be bigger then the max number of rows/cols
+ }
+}
+
+impl<L, R, D, C> TableOption<R, D, C> for Disable<L, TargetRow>
+where
+ for<'a> L: Locator<&'a R, Coordinate = usize>,
+ R: ExactRecords + Resizable,
+{
+ fn change(mut self, records: &mut R, _: &mut C, _: &mut D) {
+ let rows = self.locator.locate(records).into_iter().collect::<Vec<_>>();
+
+ let mut shift = 0;
+ for row in rows.into_iter() {
+ if row - shift > records.count_rows() {
+ continue;
+ }
+
+ records.remove_row(row - shift);
+ shift += 1;
+ }
+
+ // fixme: I am pretty sure that we violate span constrains by removing rows/cols
+ // Because span may be bigger then the max number of rows/cols
+ }
+}
diff --git a/vendor/tabled/src/settings/duplicate/mod.rs b/vendor/tabled/src/settings/duplicate/mod.rs
new file mode 100644
index 000000000..dec967bd6
--- /dev/null
+++ b/vendor/tabled/src/settings/duplicate/mod.rs
@@ -0,0 +1,150 @@
+//! This module contains an [`Dup`] setting the [`Table`].
+//!
+//! # Example
+//!
+//! ```
+//! # use tabled::{Table, settings::{Dup, object::{Columns, Rows}}};
+//! # let data: Vec<&'static str> = Vec::new();
+//! let mut table = Table::new(&data);
+//! table.with(Dup::new(Rows::first(), Columns::first()));
+//! ```
+//!
+//! [`Table`]: crate::Table
+
+use papergrid::config::Position;
+
+use crate::{
+ grid::records::{ExactRecords, PeekableRecords, Records, RecordsMut},
+ settings::{object::Object, TableOption},
+};
+
+/// [`Dup`] duplicates a given set of cells into another set of ones [`Table`].
+///
+/// # Example
+///
+/// ```
+/// use tabled::{Table, settings::{object::Rows, Dup}};
+///
+/// let data = [
+/// ["1", "2", "3"],
+/// ["Some\nMulti\nLine\nText", "and a line", "here"],
+/// ["4", "5", "6"],
+/// ];
+///
+/// let mut table = Table::new(&data);
+/// table.with(Dup::new(Rows::single(1), Rows::single(2)));
+///
+/// assert_eq!(
+/// table.to_string(),
+/// "+-------+------------+------+\n\
+/// | 0 | 1 | 2 |\n\
+/// +-------+------------+------+\n\
+/// | Some | and a line | here |\n\
+/// | Multi | | |\n\
+/// | Line | | |\n\
+/// | Text | | |\n\
+/// +-------+------------+------+\n\
+/// | Some | and a line | here |\n\
+/// | Multi | | |\n\
+/// | Line | | |\n\
+/// | Text | | |\n\
+/// +-------+------------+------+\n\
+/// | 4 | 5 | 6 |\n\
+/// +-------+------------+------+",
+/// )
+/// ```
+///
+/// [`Table`]: crate::Table
+#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, PartialOrd, Ord)]
+pub struct Dup<Dst, Src> {
+ src: Src,
+ dst: Dst,
+}
+
+impl<Dst, Src> Dup<Dst, Src> {
+ /// New creates a new [`Dup`] modifier.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// # use tabled::{Table, settings::{Dup, object::{Columns, Rows}}};
+ /// # let data: Vec<&'static str> = Vec::new();
+ /// let mut table = Table::new(&data);
+ /// table.with(Dup::new(Rows::first(), Columns::last()));
+ /// ```
+ pub fn new(dst: Dst, src: Src) -> Self {
+ Self { src, dst }
+ }
+}
+
+impl<Dst, Src, R, D, C> TableOption<R, D, C> for Dup<Dst, Src>
+where
+ Dst: Object<R>,
+ Src: Object<R>,
+ R: Records + ExactRecords + PeekableRecords + RecordsMut<String>,
+{
+ fn change(self, records: &mut R, _: &mut C, _: &mut D) {
+ let input = collect_input(records, self.src);
+ set_cells(records, &input, self.dst);
+ }
+}
+
+fn collect_input<R, O>(records: &mut R, src: O) -> Vec<String>
+where
+ O: Object<R>,
+ R: Records + ExactRecords + PeekableRecords + RecordsMut<String>,
+{
+ let count_rows = records.count_rows();
+ let count_columns = records.count_columns();
+
+ let mut input = Vec::new();
+ for entity in src.cells(records) {
+ for pos in entity.iter(count_rows, count_columns) {
+ if !is_valid_cell(pos, count_rows, count_columns) {
+ continue;
+ }
+
+ let text = records.get_text(pos).to_owned();
+ input.push(text);
+ }
+ }
+
+ input
+}
+
+fn set_cells<R, O>(records: &mut R, src: &[String], dst: O)
+where
+ O: Object<R>,
+ R: Records + ExactRecords + PeekableRecords + RecordsMut<String>,
+{
+ if src.is_empty() {
+ return;
+ }
+
+ let count_rows = records.count_rows();
+ let count_columns = records.count_columns();
+
+ for entity in dst.cells(records) {
+ let mut source = src.iter().cycle();
+ for pos in entity.iter(count_rows, count_columns) {
+ if !is_valid_cell(pos, count_rows, count_columns) {
+ continue;
+ }
+
+ let text = source.next().unwrap().clone();
+ records.set(pos, text);
+ }
+ }
+}
+
+fn is_valid_cell((row, col): Position, count_rows: usize, count_columns: usize) -> bool {
+ if row > count_rows {
+ return false;
+ }
+
+ if col > count_columns {
+ return false;
+ }
+
+ true
+}
diff --git a/vendor/tabled/src/settings/extract/mod.rs b/vendor/tabled/src/settings/extract/mod.rs
new file mode 100644
index 000000000..bba90a0db
--- /dev/null
+++ b/vendor/tabled/src/settings/extract/mod.rs
@@ -0,0 +1,257 @@
+//! This module contains an [`Extract`] structure which is used to
+//! obtain an ordinary segment from the [`Table`].
+//!
+//! There's a similar structure [`Highlight`] which does a highlighting a of segments.
+//!
+//! [`Table`]: crate::Table
+//! [`Highlight`]: crate::settings::highlight::Highlight
+
+use core::cmp::min;
+use core::ops::{Bound, RangeBounds, RangeFull};
+
+use crate::{
+ grid::records::{ExactRecords, Records, Resizable},
+ settings::TableOption,
+};
+
+/// Returns a new [`Table`] that reflects a segment of the referenced [`Table`]
+///
+/// # Example
+///
+#[cfg_attr(feature = "std", doc = "```")]
+#[cfg_attr(not(feature = "std"), doc = "```ignore")]
+/// use tabled::{Table, settings::{Format, object::Rows, Modify, Extract}};
+///
+/// let data = vec![
+/// (0, "Grodno", true),
+/// (1, "Minsk", true),
+/// (2, "Hamburg", false),
+/// (3, "Brest", true),
+/// ];
+///
+/// let table = Table::new(&data)
+/// .with(Modify::new(Rows::new(1..)).with(Format::content(|s| format!(": {} :", s))))
+/// .with(Extract::segment(1..=2, 1..))
+/// .to_string();
+///
+/// assert_eq!(table, "+------------+----------+\n\
+/// | : Grodno : | : true : |\n\
+/// +------------+----------+\n\
+/// | : Minsk : | : true : |\n\
+/// +------------+----------+");
+/// ```
+///
+/// [`Table`]: crate::Table
+#[derive(Debug)]
+pub struct Extract<R, C> {
+ rows: R,
+ columns: C,
+}
+
+impl<R, C> Extract<R, C>
+where
+ R: RangeBounds<usize>,
+ C: RangeBounds<usize>,
+{
+ /// Returns a new [`Table`] that reflects a segment of the referenced [`Table`]
+ ///
+ /// ```rust,no_run
+ /// # use tabled::settings::Extract;
+ /// let rows = 1..3;
+ /// let columns = 1..;
+ /// Extract::segment(rows, columns);
+ /// ```
+ ///
+ /// # Range
+ ///
+ /// A [`RangeBounds`] argument can be less than or equal to the shape of a [`Table`]
+ ///
+ /// If a [`RangeBounds`] argument is malformed or too large the thread will panic
+ ///
+ /// ```text
+ /// // Empty Full Out of bounds
+ /// Extract::segment(0..0, 0..0) Extract::segment(.., ..) Extract::segment(0..1, ..4)
+ /// []. . . [O O O [O O O X] //ERROR
+ /// . . . O O O . . .
+ /// . . . O O O] . . .
+ /// ```
+ ///
+ /// [`Table`]: crate::Table
+ pub fn segment(rows: R, columns: C) -> Self {
+ Extract { rows, columns }
+ }
+}
+
+impl<R> Extract<R, RangeFull>
+where
+ R: RangeBounds<usize>,
+{
+ /// Returns a new [`Table`] that reflects a segment of the referenced [`Table`]
+ ///
+ /// The segment is defined by [`RangeBounds`] for Rows
+ ///
+ /// ```rust,no_run
+ /// # use tabled::settings::Extract;
+ /// Extract::rows(1..3);
+ /// ```
+ ///
+ /// # Range
+ ///
+ /// A [`RangeBounds`] argument can be less than or equal to the shape of a [`Table`]
+ ///
+ /// If a [`RangeBounds`] argument is malformed or too large the thread will panic
+ ///
+ /// ```text
+ /// // Empty Full Out of bounds
+ /// Extract::rows(0..0) Extract::rows(..) Extract::rows(0..4)
+ /// []. . . [O O O [O O O
+ /// . . . O O O O O O
+ /// . . . O O O] O O O
+ /// X X X] // ERROR
+ /// ```
+ ///
+ /// [`Table`]: crate::Table
+ pub fn rows(rows: R) -> Self {
+ Extract { rows, columns: .. }
+ }
+}
+
+impl<C> Extract<RangeFull, C>
+where
+ C: RangeBounds<usize>,
+{
+ /// Returns a new [`Table`] that reflects a segment of the referenced [`Table`]
+ ///
+ /// The segment is defined by [`RangeBounds`] for columns.
+ ///
+ /// ```rust,no_run
+ /// # use tabled::settings::Extract;
+ /// Extract::columns(1..3);
+ /// ```
+ ///
+ /// # Range
+ ///
+ /// A [`RangeBounds`] argument can be less than or equal to the shape of a [`Table`]
+ ///
+ /// If a [`RangeBounds`] argument is malformed or too large the thread will panic
+ ///
+ /// ```text
+ /// // Empty Full Out of bounds
+ /// Extract::columns(0..0) Extract::columns(..) Extract::columns(0..4)
+ /// []. . . [O O O [O O O X
+ /// . . . O O O O O O X
+ /// . . . O O O] O O O X] // ERROR
+ /// ```
+ ///
+ /// [`Table`]: crate::Table
+ pub fn columns(columns: C) -> Self {
+ Extract { rows: .., columns }
+ }
+}
+
+impl<R, C, RR, D, Cfg> TableOption<RR, D, Cfg> for Extract<R, C>
+where
+ R: RangeBounds<usize> + Clone,
+ C: RangeBounds<usize> + Clone,
+ RR: Records + ExactRecords + Resizable,
+{
+ fn change(self, records: &mut RR, _: &mut Cfg, _: &mut D) {
+ let count_rows = records.count_rows();
+ let count_columns = records.count_columns();
+
+ let mut rows = bounds_to_usize(self.rows.start_bound(), self.rows.end_bound(), count_rows);
+ let mut cols = bounds_to_usize(
+ self.columns.start_bound(),
+ self.columns.end_bound(),
+ count_columns,
+ );
+
+ // Cleanup table in case if boundaries are exceeded.
+ //
+ // todo: can be optimized by adding a clear() method to Resizable
+ rows.0 = min(rows.0, count_rows);
+ cols.0 = min(cols.0, count_columns);
+
+ extract(records, (count_rows, count_columns), rows, cols);
+ }
+}
+
+/// Returns a new [`Grid`] that reflects a segment of the referenced [`Grid`].
+///
+/// # Example
+///
+/// ```text
+/// grid
+/// +---+---+---+
+/// |0-0|0-1|0-2|
+/// +---+---+---+
+/// |1-0|1-1|1-2|
+/// +---+---+---+
+/// |2-0|2-1|2-2|
+/// +---+---+---+
+///
+/// let rows = ..;
+/// let columns = ..1;
+/// grid.extract(rows, columns)
+///
+/// grid
+/// +---+
+/// |0-0|
+/// +---+
+/// |1-0|
+/// +---+
+/// |2-0|
+/// +---+
+/// ```
+fn extract<R>(
+ records: &mut R,
+ (count_rows, count_cols): (usize, usize),
+ (start_row, end_row): (usize, usize),
+ (start_col, end_col): (usize, usize),
+) where
+ R: Resizable,
+{
+ for (i, row) in (0..start_row).enumerate() {
+ let row = row - i;
+ records.remove_row(row);
+ }
+
+ let count_rows = count_rows - start_row;
+ let end_row = end_row - start_row;
+ for (i, row) in (end_row..count_rows).enumerate() {
+ let row = row - i;
+ records.remove_row(row);
+ }
+
+ for (i, col) in (0..start_col).enumerate() {
+ let col = col - i;
+ records.remove_column(col);
+ }
+
+ let count_cols = count_cols - start_col;
+ let end_col = end_col - start_col;
+ for (i, col) in (end_col..count_cols).enumerate() {
+ let col = col - i;
+ records.remove_column(col);
+ }
+}
+
+fn bounds_to_usize(
+ left: Bound<&usize>,
+ right: Bound<&usize>,
+ count_elements: usize,
+) -> (usize, usize) {
+ match (left, right) {
+ (Bound::Included(x), Bound::Included(y)) => (*x, y + 1),
+ (Bound::Included(x), Bound::Excluded(y)) => (*x, *y),
+ (Bound::Included(x), Bound::Unbounded) => (*x, count_elements),
+ (Bound::Unbounded, Bound::Unbounded) => (0, count_elements),
+ (Bound::Unbounded, Bound::Included(y)) => (0, y + 1),
+ (Bound::Unbounded, Bound::Excluded(y)) => (0, *y),
+ (Bound::Excluded(_), Bound::Unbounded)
+ | (Bound::Excluded(_), Bound::Included(_))
+ | (Bound::Excluded(_), Bound::Excluded(_)) => {
+ unreachable!("A start bound can't be excluded")
+ }
+ }
+}
diff --git a/vendor/tabled/src/settings/format/format_config.rs b/vendor/tabled/src/settings/format/format_config.rs
new file mode 100644
index 000000000..247ead344
--- /dev/null
+++ b/vendor/tabled/src/settings/format/format_config.rs
@@ -0,0 +1,14 @@
+use crate::settings::TableOption;
+
+/// This is a struct wrapper for a lambda which changes config.
+#[derive(Debug)]
+pub struct FormatConfig<F>(pub(crate) F);
+
+impl<F, R, D, C> TableOption<R, D, C> for FormatConfig<F>
+where
+ F: FnMut(&mut C),
+{
+ fn change(mut self, _: &mut R, cfg: &mut C, _: &mut D) {
+ (self.0)(cfg);
+ }
+}
diff --git a/vendor/tabled/src/settings/format/format_content.rs b/vendor/tabled/src/settings/format/format_content.rs
new file mode 100644
index 000000000..c14eee64f
--- /dev/null
+++ b/vendor/tabled/src/settings/format/format_content.rs
@@ -0,0 +1,86 @@
+use crate::{
+ grid::config::Entity,
+ grid::records::{ExactRecords, PeekableRecords, Records, RecordsMut},
+ settings::{CellOption, TableOption},
+};
+
+/// A lambda which formats cell content.
+#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
+pub struct FormatContent<F> {
+ f: F,
+ multiline: bool,
+}
+
+impl<F> FormatContent<F> {
+ pub(crate) fn new(f: F) -> Self {
+ Self {
+ f,
+ multiline: false,
+ }
+ }
+}
+
+impl<F> FormatContent<F> {
+ /// Multiline a helper function for changing multiline content of cell.
+ /// Using this formatting applied for all rows not to a string as a whole.
+ ///
+ /// ```rust,no_run
+ /// use tabled::{Table, settings::{Format, object::Segment, Modify}};
+ ///
+ /// let data: Vec<&'static str> = Vec::new();
+ /// let table = Table::new(&data)
+ /// .with(Modify::new(Segment::all()).with(Format::content(|s| s.to_string()).multiline()))
+ /// .to_string();
+ /// ```
+ pub fn multiline(mut self) -> Self {
+ self.multiline = true;
+ self
+ }
+}
+
+impl<F, R, D, C> TableOption<R, D, C> for FormatContent<F>
+where
+ F: FnMut(&str) -> String + Clone,
+ R: Records + ExactRecords + PeekableRecords + RecordsMut<String>,
+{
+ fn change(self, records: &mut R, cfg: &mut C, _: &mut D) {
+ CellOption::change(self, records, cfg, Entity::Global);
+ }
+}
+
+impl<F, R, C> CellOption<R, C> for FormatContent<F>
+where
+ F: FnMut(&str) -> String + Clone,
+ R: Records + ExactRecords + PeekableRecords + RecordsMut<String>,
+{
+ fn change(mut self, records: &mut R, _: &mut C, entity: Entity) {
+ let count_rows = records.count_rows();
+ let count_cols = records.count_columns();
+
+ for pos in entity.iter(count_rows, count_cols) {
+ let is_valid_pos = pos.0 < count_rows && pos.1 < count_cols;
+ if !is_valid_pos {
+ continue;
+ }
+
+ let content = records.get_text(pos);
+ let content = if self.multiline {
+ multiline(self.f.clone())(content)
+ } else {
+ (self.f)(content)
+ };
+ records.set(pos, content);
+ }
+ }
+}
+
+fn multiline<F: FnMut(&str) -> String>(mut f: F) -> impl FnMut(&str) -> String {
+ move |s: &str| {
+ let mut v = Vec::new();
+ for line in s.lines() {
+ v.push(f(line));
+ }
+
+ v.join("\n")
+ }
+}
diff --git a/vendor/tabled/src/settings/format/format_positioned.rs b/vendor/tabled/src/settings/format/format_positioned.rs
new file mode 100644
index 000000000..e121f007e
--- /dev/null
+++ b/vendor/tabled/src/settings/format/format_positioned.rs
@@ -0,0 +1,51 @@
+use crate::{
+ grid::config::Entity,
+ grid::records::{ExactRecords, PeekableRecords, Records, RecordsMut},
+ settings::{CellOption, TableOption},
+};
+
+/// [`FormatContentPositioned`] is like a [`FormatContent`] an abstraction over a function you can use against a cell.
+///
+/// It different from [`FormatContent`] that it provides a row and column index.
+///
+/// [`FormatContent`]: crate::settings::format::FormatContent
+#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
+pub struct FormatContentPositioned<F>(F);
+
+impl<F> FormatContentPositioned<F> {
+ pub(crate) fn new(f: F) -> Self {
+ Self(f)
+ }
+}
+
+impl<F, R, D, C> TableOption<R, D, C> for FormatContentPositioned<F>
+where
+ F: FnMut(&str, (usize, usize)) -> String,
+ R: Records + ExactRecords + PeekableRecords + RecordsMut<String>,
+{
+ fn change(self, records: &mut R, cfg: &mut C, _: &mut D) {
+ CellOption::change(self, records, cfg, Entity::Global);
+ }
+}
+
+impl<F, R, C> CellOption<R, C> for FormatContentPositioned<F>
+where
+ F: FnMut(&str, (usize, usize)) -> String,
+ R: Records + ExactRecords + PeekableRecords + RecordsMut<String>,
+{
+ fn change(mut self, records: &mut R, _: &mut C, entity: Entity) {
+ let count_rows = records.count_rows();
+ let count_cols = records.count_columns();
+
+ for pos in entity.iter(count_rows, count_cols) {
+ let is_valid_pos = pos.0 < count_rows && pos.1 < count_cols;
+ if !is_valid_pos {
+ continue;
+ }
+
+ let content = records.get_text(pos);
+ let content = (self.0)(content, pos);
+ records.set(pos, content);
+ }
+ }
+}
diff --git a/vendor/tabled/src/settings/format/mod.rs b/vendor/tabled/src/settings/format/mod.rs
new file mode 100644
index 000000000..e8221ae32
--- /dev/null
+++ b/vendor/tabled/src/settings/format/mod.rs
@@ -0,0 +1,144 @@
+//! This module contains a list of primitives to help to modify a [`Table`].
+//!
+//! [`Table`]: crate::Table
+
+mod format_config;
+mod format_content;
+mod format_positioned;
+
+pub use format_config::FormatConfig;
+pub use format_content::FormatContent;
+pub use format_positioned::FormatContentPositioned;
+
+/// A formatting function of particular cells on a [`Table`].
+///
+/// [`Table`]: crate::Table
+#[derive(Debug)]
+pub struct Format;
+
+impl Format {
+ /// This function creates a new [`Format`] instance, so
+ /// it can be used as a grid setting.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use tabled::{Table, settings::{Format, object::Rows, Modify}};
+ ///
+ /// let data = vec![
+ /// (0, "Grodno", true),
+ /// (1, "Minsk", true),
+ /// (2, "Hamburg", false),
+ /// (3, "Brest", true),
+ /// ];
+ ///
+ /// let table = Table::new(&data)
+ /// .with(Modify::new(Rows::new(1..)).with(Format::content(|s| format!(": {} :", s))))
+ /// .to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// "+-------+-------------+-----------+\n\
+ /// | i32 | &str | bool |\n\
+ /// +-------+-------------+-----------+\n\
+ /// | : 0 : | : Grodno : | : true : |\n\
+ /// +-------+-------------+-----------+\n\
+ /// | : 1 : | : Minsk : | : true : |\n\
+ /// +-------+-------------+-----------+\n\
+ /// | : 2 : | : Hamburg : | : false : |\n\
+ /// +-------+-------------+-----------+\n\
+ /// | : 3 : | : Brest : | : true : |\n\
+ /// +-------+-------------+-----------+"
+ /// );
+ /// ```
+ pub fn content<F>(f: F) -> FormatContent<F>
+ where
+ F: FnMut(&str) -> String,
+ {
+ FormatContent::new(f)
+ }
+
+ /// This function creates a new [`FormatContentPositioned`], so
+ /// it can be used as a grid setting.
+ ///
+ /// It's different from [`Format::content`] as it also provides a row and column index.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use tabled::{Table, settings::{Format, object::Rows, Modify}};
+ ///
+ /// let data = vec![
+ /// (0, "Grodno", true),
+ /// (1, "Minsk", true),
+ /// (2, "Hamburg", false),
+ /// (3, "Brest", true),
+ /// ];
+ ///
+ /// let table = Table::new(&data)
+ /// .with(Modify::new(Rows::single(0)).with(Format::positioned(|_, (_, col)| col.to_string())))
+ /// .to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// "+---+---------+-------+\n\
+ /// | 0 | 1 | 2 |\n\
+ /// +---+---------+-------+\n\
+ /// | 0 | Grodno | true |\n\
+ /// +---+---------+-------+\n\
+ /// | 1 | Minsk | true |\n\
+ /// +---+---------+-------+\n\
+ /// | 2 | Hamburg | false |\n\
+ /// +---+---------+-------+\n\
+ /// | 3 | Brest | true |\n\
+ /// +---+---------+-------+"
+ /// );
+ /// ```
+ pub fn positioned<F>(f: F) -> FormatContentPositioned<F>
+ where
+ F: FnMut(&str, (usize, usize)) -> String,
+ {
+ FormatContentPositioned::new(f)
+ }
+
+ /// This function creates [`FormatConfig`] function to modify a table config.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use tabled::{
+ /// Table,
+ /// settings::{Format, object::Rows, Modify},
+ /// grid::config::ColoredConfig,
+ /// };
+ ///
+ /// let data = vec![
+ /// (0, "Grodno", true),
+ /// (1, "Minsk", true),
+ /// (2, "Hamburg", false),
+ /// (3, "Brest", true),
+ /// ];
+ ///
+ /// let table = Table::new(&data)
+ /// .with(Format::config(|cfg: &mut ColoredConfig| cfg.set_justification((0,1).into(), '.')))
+ /// .to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// "+-----+---------+-------+\n\
+ /// | i32 | &str... | bool |\n\
+ /// +-----+---------+-------+\n\
+ /// | 0 | Grodno | true |\n\
+ /// +-----+---------+-------+\n\
+ /// | 1 | Minsk | true |\n\
+ /// +-----+---------+-------+\n\
+ /// | 2 | Hamburg | false |\n\
+ /// +-----+---------+-------+\n\
+ /// | 3 | Brest | true |\n\
+ /// +-----+---------+-------+"
+ /// );
+ /// ```
+ pub fn config<F>(f: F) -> FormatConfig<F> {
+ FormatConfig(f)
+ }
+}
diff --git a/vendor/tabled/src/settings/formatting/alignment_strategy.rs b/vendor/tabled/src/settings/formatting/alignment_strategy.rs
new file mode 100644
index 000000000..c95facc5c
--- /dev/null
+++ b/vendor/tabled/src/settings/formatting/alignment_strategy.rs
@@ -0,0 +1,172 @@
+use crate::{
+ grid::config::{ColoredConfig, CompactMultilineConfig, Entity},
+ settings::{CellOption, TableOption},
+};
+
+/// `AlignmentStrategy` is a responsible for a flow how we apply an alignment.
+/// It mostly matters for multiline strings.
+///
+/// # Examples
+///
+/// ```
+/// use tabled::{
+/// Table,
+/// settings::{
+/// Style, Modify, Alignment, object::Segment,
+/// formatting::{AlignmentStrategy, TrimStrategy}
+/// }
+/// };
+///
+/// // sample_from: https://opensource.adobe.com/Spry/samples/data_region/JSONDataSetSample.html
+/// let json = r#"
+/// {
+/// "id": "0001",
+/// "type": "donut",
+/// "name": "Cake",
+/// "ppu": 0.55,
+/// "batters": {
+/// "batter": [
+/// { "id": "1001", "type": "Regular" },
+/// { "id": "1002", "type": "Chocolate" },
+/// ]
+/// },
+/// "topping": [
+/// { "id": "5001", "type": "None" },
+/// { "id": "5006", "type": "Chocolate with Sprinkles" },
+/// { "id": "5003", "type": "Chocolate" },
+/// { "id": "5004", "type": "Maple" }
+/// ]
+/// }"#;
+///
+/// let mut table = Table::new(&[json]);
+/// table
+/// .with(Style::modern())
+/// .with(Modify::new(Segment::all()).with(Alignment::right()))
+/// .with(Modify::new(Segment::all()).with(TrimStrategy::None));
+///
+/// println!("{}", table);
+///
+/// assert_eq!(
+/// format!("\n{}", table),
+/// r#"
+/// ┌───────────────────────────────────────────────────────────────â”
+/// │ &str │
+/// ├───────────────────────────────────────────────────────────────┤
+/// │ │
+/// │ { │
+/// │ "id": "0001", │
+/// │ "type": "donut", │
+/// │ "name": "Cake", │
+/// │ "ppu": 0.55, │
+/// │ "batters": { │
+/// │ "batter": [ │
+/// │ { "id": "1001", "type": "Regular" }, │
+/// │ { "id": "1002", "type": "Chocolate" }, │
+/// │ ] │
+/// │ }, │
+/// │ "topping": [ │
+/// │ { "id": "5001", "type": "None" }, │
+/// │ { "id": "5006", "type": "Chocolate with Sprinkles" }, │
+/// │ { "id": "5003", "type": "Chocolate" }, │
+/// │ { "id": "5004", "type": "Maple" } │
+/// │ ] │
+/// │ } │
+/// └───────────────────────────────────────────────────────────────┘"#);
+///
+/// table
+/// .with(Modify::new(Segment::all()).with(AlignmentStrategy::PerCell))
+/// .with(Modify::new(Segment::all()).with(TrimStrategy::Horizontal));
+///
+/// assert_eq!(
+/// format!("\n{}", table),
+/// r#"
+/// ┌───────────────────────────────────────────────────────────────â”
+/// │ &str │
+/// ├───────────────────────────────────────────────────────────────┤
+/// │ │
+/// │ { │
+/// │ "id": "0001", │
+/// │ "type": "donut", │
+/// │ "name": "Cake", │
+/// │ "ppu": 0.55, │
+/// │ "batters": { │
+/// │ "batter": [ │
+/// │ { "id": "1001", "type": "Regular" }, │
+/// │ { "id": "1002", "type": "Chocolate" }, │
+/// │ ] │
+/// │ }, │
+/// │ "topping": [ │
+/// │ { "id": "5001", "type": "None" }, │
+/// │ { "id": "5006", "type": "Chocolate with Sprinkles" }, │
+/// │ { "id": "5003", "type": "Chocolate" }, │
+/// │ { "id": "5004", "type": "Maple" } │
+/// │ ] │
+/// │ } │
+/// └───────────────────────────────────────────────────────────────┘"#);
+///
+/// table.with(Modify::new(Segment::all()).with(AlignmentStrategy::PerLine));
+///
+/// assert_eq!(
+/// format!("\n{}", table),
+/// r#"
+/// ┌───────────────────────────────────────────────────────────────â”
+/// │ &str │
+/// ├───────────────────────────────────────────────────────────────┤
+/// │ │
+/// │ { │
+/// │ "id": "0001", │
+/// │ "type": "donut", │
+/// │ "name": "Cake", │
+/// │ "ppu": 0.55, │
+/// │ "batters": { │
+/// │ "batter": [ │
+/// │ { "id": "1001", "type": "Regular" }, │
+/// │ { "id": "1002", "type": "Chocolate" }, │
+/// │ ] │
+/// │ }, │
+/// │ "topping": [ │
+/// │ { "id": "5001", "type": "None" }, │
+/// │ { "id": "5006", "type": "Chocolate with Sprinkles" }, │
+/// │ { "id": "5003", "type": "Chocolate" }, │
+/// │ { "id": "5004", "type": "Maple" } │
+/// │ ] │
+/// │ } │
+/// └───────────────────────────────────────────────────────────────┘"#);
+/// ```
+#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub enum AlignmentStrategy {
+ /// Apply alignment for cell content as a whole.
+ PerCell,
+ /// Apply alignment for each line of a cell content as a whole.
+ PerLine,
+}
+
+impl<R> CellOption<R, ColoredConfig> for AlignmentStrategy {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, entity: Entity) {
+ let mut formatting = *cfg.get_formatting(entity);
+ match &self {
+ AlignmentStrategy::PerCell => formatting.allow_lines_alignment = false,
+ AlignmentStrategy::PerLine => formatting.allow_lines_alignment = true,
+ }
+
+ cfg.set_formatting(entity, formatting);
+ }
+}
+
+impl<R, D> TableOption<R, D, ColoredConfig> for AlignmentStrategy {
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ <Self as CellOption<R, ColoredConfig>>::change(self, records, cfg, Entity::Global)
+ }
+}
+
+impl<R, D> TableOption<R, D, CompactMultilineConfig> for AlignmentStrategy {
+ fn change(self, _: &mut R, cfg: &mut CompactMultilineConfig, _: &mut D) {
+ let mut f = cfg.get_formatting();
+ match &self {
+ AlignmentStrategy::PerCell => f.allow_lines_alignment = false,
+ AlignmentStrategy::PerLine => f.allow_lines_alignment = true,
+ }
+
+ *cfg = cfg.set_formatting(f);
+ }
+}
diff --git a/vendor/tabled/src/settings/formatting/charset.rs b/vendor/tabled/src/settings/formatting/charset.rs
new file mode 100644
index 000000000..c58effcd8
--- /dev/null
+++ b/vendor/tabled/src/settings/formatting/charset.rs
@@ -0,0 +1,108 @@
+use papergrid::{
+ config::Entity,
+ records::{ExactRecords, PeekableRecords},
+};
+
+use crate::{
+ grid::records::{Records, RecordsMut},
+ settings::{CellOption, TableOption},
+};
+
+/// A structure to handle special chars.
+#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub struct Charset;
+
+impl Charset {
+ /// Returns [`CleanCharset`] which removes all `\t` and `\r` occurences.
+ ///
+ /// Notice that tab is just removed rather then being replaced with spaces.
+ /// You might be better call [`TabSize`] first if you not expect such behavior.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use tabled::{Table, settings::formatting::Charset};
+ ///
+ /// let text = "Some\ttext\t\twith \\tabs";
+ ///
+ /// let mut table = Table::new([text]);
+ /// table.with(Charset::clean());
+ ///
+ /// assert_eq!(
+ /// table.to_string(),
+ /// "+--------------------+\n\
+ /// | &str |\n\
+ /// +--------------------+\n\
+ /// | Sometextwith \\tabs |\n\
+ /// +--------------------+"
+ /// )
+ /// ```
+ ///
+ /// [`TabSize`]: crate::settings::formatting::TabSize
+ pub fn clean() -> CleanCharset {
+ CleanCharset
+ }
+}
+
+/// [`CleanCharset`] removes all `\t` and `\r` occurences.
+///
+/// # Example
+///
+/// ```
+/// use tabled::{Table, settings::formatting::Charset};
+///
+/// let text = "Some text which was created on windows \r\n yes they use this \\r\\n";
+///
+/// let mut builder = Table::builder([text]);
+/// builder.set_header(["win. text"]);
+///
+/// let mut table = builder.build();
+/// table.with(Charset::clean());
+///
+/// assert_eq!(
+/// table.to_string(),
+/// "+-----------------------------------------+\n\
+/// | win. text |\n\
+/// +-----------------------------------------+\n\
+/// | Some text which was created on windows |\n\
+/// | yes they use this \\r\\n |\n\
+/// +-----------------------------------------+"
+/// )
+/// ```
+#[derive(Debug, Default, Clone)]
+pub struct CleanCharset;
+
+impl<R, D, C> TableOption<R, D, C> for CleanCharset
+where
+ for<'a> &'a R: Records,
+ R: RecordsMut<String>,
+{
+ fn change(self, records: &mut R, _: &mut C, _: &mut D) {
+ let mut list = vec![];
+ for (row, cells) in records.iter_rows().into_iter().enumerate() {
+ for (col, text) in cells.into_iter().enumerate() {
+ let text = text.as_ref().replace(['\t', '\r'], "");
+ list.push(((row, col), text));
+ }
+ }
+
+ for (pos, text) in list {
+ records.set(pos, text);
+ }
+ }
+}
+
+impl<R, C> CellOption<R, C> for CleanCharset
+where
+ R: Records + ExactRecords + PeekableRecords + RecordsMut<String>,
+{
+ fn change(self, records: &mut R, _: &mut C, entity: Entity) {
+ let count_rows = records.count_rows();
+ let count_cols = records.count_columns();
+ for pos in entity.iter(count_rows, count_cols) {
+ let text = records.get_text(pos);
+ let text = text.replace(['\t', '\r'], "");
+ records.set(pos, text);
+ }
+ }
+}
diff --git a/vendor/tabled/src/settings/formatting/justification.rs b/vendor/tabled/src/settings/formatting/justification.rs
new file mode 100644
index 000000000..a427eb95e
--- /dev/null
+++ b/vendor/tabled/src/settings/formatting/justification.rs
@@ -0,0 +1,127 @@
+use crate::{
+ grid::{
+ color::AnsiColor,
+ config::{ColoredConfig, Entity},
+ },
+ settings::{CellOption, Color, TableOption},
+};
+
+/// Set a justification character and a color.
+///
+/// Default value is `' '` (`<space>`) with no color.
+///
+/// # Examples
+///
+/// Setting a justification character.
+///
+/// ```
+/// use tabled::{
+/// Table,
+/// settings::formatting::Justification,
+/// };
+///
+/// let mut table = Table::new(&[("Hello", ""), ("", "World")]);
+/// table.with(Justification::new('#'));
+///
+/// assert_eq!(
+/// table.to_string(),
+/// "+-------+-------+\n\
+/// | &str# | &str# |\n\
+/// +-------+-------+\n\
+/// | Hello | ##### |\n\
+/// +-------+-------+\n\
+/// | ##### | World |\n\
+/// +-------+-------+"
+/// );
+/// ```
+///
+/// Setting a justification color.
+///
+/// ```
+/// use tabled::{
+/// Table,
+/// settings::{formatting::Justification, Color},
+/// };
+///
+/// let mut table = Table::new(&[("Hello", ""), ("", "World")]);
+/// table.with(Justification::default().color(Color::BG_BRIGHT_RED));
+///
+/// assert_eq!(
+/// table.to_string(),
+/// "+-------+-------+\n\
+/// | &str\u{1b}[101m \u{1b}[49m | &str\u{1b}[101m \u{1b}[49m |\n\
+/// +-------+-------+\n\
+/// | Hello | \u{1b}[101m \u{1b}[49m |\n\
+/// +-------+-------+\n\
+/// | \u{1b}[101m \u{1b}[49m | World |\n\
+/// +-------+-------+"
+/// );
+/// ```
+///
+/// Use different justification for different columns.
+///
+/// ```
+/// use tabled::{
+/// Table,
+/// settings::{Modify, object::Columns, formatting::Justification},
+/// };
+///
+/// let mut table = Table::new(&[("Hello", ""), ("", "World")]);
+/// table.with(Modify::new(Columns::single(0)).with(Justification::new('#')));
+/// table.with(Modify::new(Columns::single(1)).with(Justification::new('@')));
+///
+/// assert_eq!(
+/// table.to_string(),
+/// "+-------+-------+\n\
+/// | &str# | &str@ |\n\
+/// +-------+-------+\n\
+/// | Hello | @@@@@ |\n\
+/// +-------+-------+\n\
+/// | ##### | World |\n\
+/// +-------+-------+"
+/// );
+/// ```
+///
+#[derive(Debug, Default, Clone)]
+pub struct Justification {
+ c: Option<char>,
+ color: Option<AnsiColor<'static>>,
+}
+
+impl Justification {
+ /// Creates new [`Justification`] object.
+ pub fn new(c: char) -> Self {
+ Self {
+ c: Some(c),
+ color: None,
+ }
+ }
+
+ /// Sets a color for a justification.
+ pub fn color(self, color: Color) -> Self {
+ Self {
+ c: self.c,
+ color: Some(color.into()),
+ }
+ }
+}
+
+impl<R, D> TableOption<R, D, ColoredConfig> for Justification {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let c = self.c.unwrap_or(' ');
+ let color = self.color;
+
+ cfg.set_justification(Entity::Global, c);
+ cfg.set_justification_color(Entity::Global, color);
+ }
+}
+
+impl<R> CellOption<R, ColoredConfig> for Justification {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, entity: Entity) {
+ let c = self.c.unwrap_or(' ');
+ let color = self.color;
+
+ cfg.set_justification(entity, c);
+ cfg.set_justification_color(entity, color);
+ }
+}
diff --git a/vendor/tabled/src/settings/formatting/mod.rs b/vendor/tabled/src/settings/formatting/mod.rs
new file mode 100644
index 000000000..e3a56092f
--- /dev/null
+++ b/vendor/tabled/src/settings/formatting/mod.rs
@@ -0,0 +1,20 @@
+//! This module contains settings for render strategy of papergrid.
+//!
+//! - [`TrimStrategy`] and [`AlignmentStrategy`] allows to set [`Alignment`] settings.
+//! - [`TabSize`] sets a default tab size.
+//! - [`Charset`] responsible for special char treatment.
+//! - [`Justification`] responsible for justification space of content.
+//!
+//! [`Alignment`]: crate::settings::Alignment
+
+mod alignment_strategy;
+mod charset;
+mod justification;
+mod tab_size;
+mod trim_strategy;
+
+pub use alignment_strategy::AlignmentStrategy;
+pub use charset::{Charset, CleanCharset};
+pub use justification::Justification;
+pub use tab_size::TabSize;
+pub use trim_strategy::TrimStrategy;
diff --git a/vendor/tabled/src/settings/formatting/tab_size.rs b/vendor/tabled/src/settings/formatting/tab_size.rs
new file mode 100644
index 000000000..677d0d613
--- /dev/null
+++ b/vendor/tabled/src/settings/formatting/tab_size.rs
@@ -0,0 +1,62 @@
+use crate::{
+ grid::records::{Records, RecordsMut},
+ settings::TableOption,
+};
+
+/// Set a tab size.
+///
+/// The size is used in order to calculate width correctly.
+///
+/// Default value is 4 (basically 1 '\t' equals 4 spaces).
+///
+/// IMPORTANT: The tab character might be not present in output,
+/// it might be replaced by spaces.
+///
+/// # Example
+///
+/// ```
+/// use tabled::{Table, settings::formatting::TabSize};
+///
+/// let text = "Some\ttext\t\twith \\tabs";
+///
+/// let mut table = Table::new([text]);
+/// table.with(TabSize::new(4));
+///
+/// assert_eq!(
+/// table.to_string(),
+/// "+--------------------------------+\n\
+/// | &str |\n\
+/// +--------------------------------+\n\
+/// | Some text with \\tabs |\n\
+/// +--------------------------------+"
+/// )
+/// ```
+#[derive(Debug, Default, Clone)]
+pub struct TabSize(usize);
+
+impl TabSize {
+ /// Creates new [`TabSize`] object.
+ pub fn new(size: usize) -> Self {
+ Self(size)
+ }
+}
+
+impl<R, D, C> TableOption<R, D, C> for TabSize
+where
+ for<'a> &'a R: Records,
+ R: RecordsMut<String>,
+{
+ fn change(self, records: &mut R, _: &mut C, _: &mut D) {
+ let mut list = vec![];
+ for (row, cells) in records.iter_rows().into_iter().enumerate() {
+ for (col, text) in cells.into_iter().enumerate() {
+ let text = text.as_ref().replace('\t', &" ".repeat(self.0));
+ list.push(((row, col), text));
+ }
+ }
+
+ for (pos, text) in list {
+ records.set(pos, text);
+ }
+ }
+}
diff --git a/vendor/tabled/src/settings/formatting/trim_strategy.rs b/vendor/tabled/src/settings/formatting/trim_strategy.rs
new file mode 100644
index 000000000..64ec7e10a
--- /dev/null
+++ b/vendor/tabled/src/settings/formatting/trim_strategy.rs
@@ -0,0 +1,118 @@
+use crate::{
+ grid::config::ColoredConfig,
+ grid::config::Entity,
+ settings::{CellOption, TableOption},
+};
+
+/// `TrimStrategy` determines if it's allowed to use empty space while doing [`Alignment`].
+///
+/// # Examples
+///
+/// ```
+/// use tabled::{
+/// Table,
+/// settings::{
+/// Style, Modify, Alignment, object::Segment,
+/// formatting::{TrimStrategy, AlignmentStrategy}
+/// }
+/// };
+///
+/// let mut table = Table::new(&[" Hello World"]);
+/// table
+/// .with(Style::modern())
+/// .with(
+/// Modify::new(Segment::all())
+/// .with(Alignment::left())
+/// .with(TrimStrategy::Horizontal)
+/// );
+///
+/// // Note that nothing was changed exactly.
+///
+/// assert_eq!(
+/// table.to_string(),
+/// "┌────────────────â”\n\
+/// │ &str │\n\
+/// ├────────────────┤\n\
+/// │ Hello World │\n\
+/// └────────────────┘"
+/// );
+///
+/// // To trim lines you would need also set [`AlignmentStrategy`].
+/// table.with(Modify::new(Segment::all()).with(AlignmentStrategy::PerLine));
+///
+/// assert_eq!(
+/// table.to_string(),
+/// "┌────────────────â”\n\
+/// │ &str │\n\
+/// ├────────────────┤\n\
+/// │ Hello World │\n\
+/// └────────────────┘"
+/// );
+///
+/// let mut table = Table::new(&[" \n\n\n Hello World"]);
+/// table
+/// .with(Style::modern())
+/// .with(
+/// Modify::new(Segment::all())
+/// .with(Alignment::center())
+/// .with(Alignment::top())
+/// .with(TrimStrategy::Vertical)
+/// );
+///
+/// assert_eq!(
+/// table.to_string(),
+/// "┌─────────────────â”\n\
+/// │ &str │\n\
+/// ├─────────────────┤\n\
+/// │ Hello World │\n\
+/// │ │\n\
+/// │ │\n\
+/// │ │\n\
+/// └─────────────────┘"
+/// );
+/// ```
+///
+/// [`Alignment`]: crate::settings::Alignment
+#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub enum TrimStrategy {
+ /// Allow vertical trim.
+ Vertical,
+ /// Allow horizontal trim.
+ Horizontal,
+ /// Allow horizontal and vertical trim.
+ Both,
+ /// Doesn't allow any trim.
+ None,
+}
+
+impl<R> CellOption<R, ColoredConfig> for TrimStrategy {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, entity: Entity) {
+ let mut formatting = *cfg.get_formatting(entity);
+
+ // todo: could be changed to be a struct an enum like consts in `impl` block.
+ match self {
+ TrimStrategy::Vertical => {
+ formatting.vertical_trim = true;
+ }
+ TrimStrategy::Horizontal => {
+ formatting.horizontal_trim = true;
+ }
+ TrimStrategy::Both => {
+ formatting.vertical_trim = true;
+ formatting.horizontal_trim = true;
+ }
+ TrimStrategy::None => {
+ formatting.vertical_trim = false;
+ formatting.horizontal_trim = false;
+ }
+ }
+
+ cfg.set_formatting(entity, formatting);
+ }
+}
+
+impl<R, D> TableOption<R, D, ColoredConfig> for TrimStrategy {
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ <Self as CellOption<_, _>>::change(self, records, cfg, Entity::Global)
+ }
+}
diff --git a/vendor/tabled/src/settings/height/cell_height_increase.rs b/vendor/tabled/src/settings/height/cell_height_increase.rs
new file mode 100644
index 000000000..39887f9f6
--- /dev/null
+++ b/vendor/tabled/src/settings/height/cell_height_increase.rs
@@ -0,0 +1,98 @@
+use crate::{
+ grid::config::ColoredConfig,
+ grid::config::Entity,
+ grid::dimension::CompleteDimensionVecRecords,
+ grid::records::{ExactRecords, PeekableRecords, Records, RecordsMut},
+ grid::util::string::count_lines,
+ settings::{measurement::Measurement, peaker::Peaker, CellOption, Height, TableOption},
+};
+
+use super::TableHeightIncrease;
+
+/// A modification for cell/table to increase its height.
+///
+/// If used for a [`Table`] [`PriorityNone`] is used.
+///
+/// [`PriorityNone`]: crate::settings::peaker::PriorityNone
+/// [`Table`]: crate::Table
+#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub struct CellHeightIncrease<W = usize> {
+ height: W,
+}
+
+impl<W> CellHeightIncrease<W> {
+ /// Creates a new object of the structure.
+ pub fn new(height: W) -> Self
+ where
+ W: Measurement<Height>,
+ {
+ Self { height }
+ }
+
+ /// The priority makes scence only for table, so the function
+ /// converts it to [`TableHeightIncrease`] with a given priority.
+ pub fn priority<P>(self) -> TableHeightIncrease<W, P>
+ where
+ P: Peaker,
+ W: Measurement<Height>,
+ {
+ TableHeightIncrease::new(self.height).priority::<P>()
+ }
+}
+
+impl<W, R> CellOption<R, ColoredConfig> for CellHeightIncrease<W>
+where
+ W: Measurement<Height>,
+ R: Records + ExactRecords + PeekableRecords + RecordsMut<String>,
+ for<'a> &'a R: Records,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, entity: Entity) {
+ let height = self.height.measure(&*records, cfg);
+
+ let count_rows = records.count_rows();
+ let count_columns = records.count_columns();
+
+ for pos in entity.iter(count_rows, count_columns) {
+ let is_valid_pos = pos.0 < count_rows && pos.1 < count_columns;
+ if !is_valid_pos {
+ continue;
+ }
+
+ let text = records.get_text(pos);
+
+ let cell_height = count_lines(text);
+ if cell_height >= height {
+ continue;
+ }
+
+ let content = add_lines(text, height - cell_height);
+ records.set(pos, content);
+ }
+ }
+}
+
+impl<R, W> TableOption<R, CompleteDimensionVecRecords<'static>, ColoredConfig>
+ for CellHeightIncrease<W>
+where
+ W: Measurement<Height>,
+ R: Records + ExactRecords + PeekableRecords,
+ for<'a> &'a R: Records,
+{
+ fn change(
+ self,
+ records: &mut R,
+ cfg: &mut ColoredConfig,
+ dims: &mut CompleteDimensionVecRecords<'static>,
+ ) {
+ let height = self.height.measure(&*records, cfg);
+ TableHeightIncrease::new(height).change(records, cfg, dims)
+ }
+}
+
+fn add_lines(s: &str, n: usize) -> String {
+ let mut text = String::with_capacity(s.len() + n);
+ text.push_str(s);
+ text.extend(std::iter::repeat('\n').take(n));
+
+ text
+}
diff --git a/vendor/tabled/src/settings/height/cell_height_limit.rs b/vendor/tabled/src/settings/height/cell_height_limit.rs
new file mode 100644
index 000000000..788f0300c
--- /dev/null
+++ b/vendor/tabled/src/settings/height/cell_height_limit.rs
@@ -0,0 +1,103 @@
+use crate::{
+ grid::{
+ config::{ColoredConfig, Entity},
+ dimension::CompleteDimensionVecRecords,
+ records::{ExactRecords, PeekableRecords, Records, RecordsMut},
+ util::string::{count_lines, get_lines},
+ },
+ settings::{measurement::Measurement, peaker::Peaker, CellOption, Height, TableOption},
+};
+
+use super::table_height_limit::TableHeightLimit;
+
+/// A modification for cell/table to increase its height.
+///
+/// If used for a [`Table`] [`PriorityNone`] is used.
+///
+/// [`PriorityNone`]: crate::settings::peaker::PriorityNone
+/// [`Table`]: crate::Table
+#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub struct CellHeightLimit<W = usize> {
+ height: W,
+}
+
+impl<W> CellHeightLimit<W> {
+ /// Constructs a new object.
+ pub fn new(height: W) -> Self
+ where
+ W: Measurement<Height>,
+ {
+ Self { height }
+ }
+
+ /// Set's a priority by which the limit logic will be applied.
+ pub fn priority<P>(self) -> TableHeightLimit<W, P>
+ where
+ P: Peaker,
+ W: Measurement<Height>,
+ {
+ TableHeightLimit::new(self.height).priority::<P>()
+ }
+}
+
+impl<W, R> CellOption<R, ColoredConfig> for CellHeightLimit<W>
+where
+ W: Measurement<Height>,
+ R: Records + ExactRecords + PeekableRecords + RecordsMut<String>,
+ for<'a> &'a R: Records,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, entity: Entity) {
+ let height = self.height.measure(&*records, cfg);
+
+ let count_rows = records.count_rows();
+ let count_columns = records.count_columns();
+
+ for pos in entity.iter(count_rows, count_columns) {
+ let is_valid_pos = pos.0 < count_rows && pos.1 < count_columns;
+ if !is_valid_pos {
+ continue;
+ }
+
+ let text = records.get_text(pos);
+ let count_lines = count_lines(text);
+
+ if count_lines <= height {
+ continue;
+ }
+
+ let content = limit_lines(text, height);
+ records.set(pos, content);
+ }
+ }
+}
+
+impl<R, W> TableOption<R, CompleteDimensionVecRecords<'static>, ColoredConfig>
+ for CellHeightLimit<W>
+where
+ W: Measurement<Height>,
+ R: Records + ExactRecords + PeekableRecords + RecordsMut<String>,
+ for<'a> &'a R: Records,
+{
+ fn change(
+ self,
+ records: &mut R,
+ cfg: &mut ColoredConfig,
+ dims: &mut CompleteDimensionVecRecords<'static>,
+ ) {
+ let height = self.height.measure(&*records, cfg);
+ TableHeightLimit::new(height).change(records, cfg, dims)
+ }
+}
+
+fn limit_lines(s: &str, n: usize) -> String {
+ let mut text = String::new();
+ for (i, line) in get_lines(s).take(n).enumerate() {
+ if i > 0 {
+ text.push('\n');
+ }
+
+ text.push_str(&line);
+ }
+
+ text
+}
diff --git a/vendor/tabled/src/settings/height/height_list.rs b/vendor/tabled/src/settings/height/height_list.rs
new file mode 100644
index 000000000..7861dd4d2
--- /dev/null
+++ b/vendor/tabled/src/settings/height/height_list.rs
@@ -0,0 +1,47 @@
+use std::iter::FromIterator;
+
+use crate::{
+ grid::dimension::CompleteDimensionVecRecords,
+ grid::records::{ExactRecords, Records},
+ settings::TableOption,
+};
+
+/// A structure used to set [`Table`] height via a list of rows heights.
+///
+/// [`Table`]: crate::Table
+#[derive(Debug)]
+pub struct HeightList {
+ list: Vec<usize>,
+}
+
+impl HeightList {
+ /// Creates a new object.
+ pub fn new(list: Vec<usize>) -> Self {
+ Self { list }
+ }
+}
+
+impl From<Vec<usize>> for HeightList {
+ fn from(list: Vec<usize>) -> Self {
+ Self::new(list)
+ }
+}
+
+impl FromIterator<usize> for HeightList {
+ fn from_iter<T: IntoIterator<Item = usize>>(iter: T) -> Self {
+ Self::new(iter.into_iter().collect())
+ }
+}
+
+impl<R, C> TableOption<R, CompleteDimensionVecRecords<'static>, C> for HeightList
+where
+ R: ExactRecords + Records,
+{
+ fn change(self, records: &mut R, _: &mut C, dims: &mut CompleteDimensionVecRecords<'static>) {
+ if self.list.len() < records.count_rows() {
+ return;
+ }
+
+ let _ = dims.set_heights(self.list);
+ }
+}
diff --git a/vendor/tabled/src/settings/height/mod.rs b/vendor/tabled/src/settings/height/mod.rs
new file mode 100644
index 000000000..ad9caff77
--- /dev/null
+++ b/vendor/tabled/src/settings/height/mod.rs
@@ -0,0 +1,228 @@
+//! The module contains [`Height`] structure which is responsible for a table and cell height.
+
+mod cell_height_increase;
+mod cell_height_limit;
+mod height_list;
+mod table_height_increase;
+mod table_height_limit;
+mod util;
+
+use crate::settings::measurement::Measurement;
+
+pub use cell_height_increase::CellHeightIncrease;
+pub use cell_height_limit::CellHeightLimit;
+pub use height_list::HeightList;
+pub use table_height_increase::TableHeightIncrease;
+pub use table_height_limit::TableHeightLimit;
+
+/// Height is a abstract factory for height settings.
+///
+/// # Example
+///
+/// ```
+/// use tabled::{Table, settings::{Height, Settings}};
+///
+/// let data = vec![
+/// ("Some data", "here", "and here"),
+/// ("Some data on a next", "line", "right here"),
+/// ];
+///
+/// let table = Table::new(data)
+/// .with(Settings::new(Height::limit(10), Height::increase(10)))
+/// .to_string();
+///
+/// assert_eq!(
+/// table,
+/// "+---------------------+------+------------+\n\
+/// | &str | &str | &str |\n\
+/// | | | |\n\
+/// +---------------------+------+------------+\n\
+/// | Some data | here | and here |\n\
+/// | | | |\n\
+/// +---------------------+------+------------+\n\
+/// | Some data on a next | line | right here |\n\
+/// | | | |\n\
+/// +---------------------+------+------------+",
+/// )
+/// ```
+#[derive(Debug)]
+pub struct Height;
+
+impl Height {
+ /// Create [`CellHeightIncrease`] to set a table/cell height.
+ ///
+ /// # Example
+ ///
+ /// ## Cell height
+ ///
+ /// ```
+ /// use tabled::{Table, settings::{Height, Modify, object::Columns}};
+ ///
+ /// let data = vec![
+ /// ("Some data", "here", "and here"),
+ /// ("Some data on a next", "line", "right here"),
+ /// ];
+ ///
+ /// let table = Table::new(data)
+ /// .with(Modify::new(Columns::first()).with(Height::increase(5)))
+ /// .to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// "+---------------------+------+------------+\n\
+ /// | &str | &str | &str |\n\
+ /// | | | |\n\
+ /// | | | |\n\
+ /// | | | |\n\
+ /// | | | |\n\
+ /// +---------------------+------+------------+\n\
+ /// | Some data | here | and here |\n\
+ /// | | | |\n\
+ /// | | | |\n\
+ /// | | | |\n\
+ /// | | | |\n\
+ /// +---------------------+------+------------+\n\
+ /// | Some data on a next | line | right here |\n\
+ /// | | | |\n\
+ /// | | | |\n\
+ /// | | | |\n\
+ /// | | | |\n\
+ /// +---------------------+------+------------+"
+ /// )
+ /// ```
+ ///
+ /// ## Table height
+ ///
+ /// ```
+ /// use tabled::{Table, settings::Height};
+ ///
+ /// let data = vec![
+ /// ("Some data", "here", "and here"),
+ /// ("Some data on a next", "line", "right here"),
+ /// ];
+ ///
+ /// let table = Table::new(data)
+ /// .with(Height::increase(10))
+ /// .to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// "+---------------------+------+------------+\n\
+ /// | &str | &str | &str |\n\
+ /// | | | |\n\
+ /// +---------------------+------+------------+\n\
+ /// | Some data | here | and here |\n\
+ /// | | | |\n\
+ /// +---------------------+------+------------+\n\
+ /// | Some data on a next | line | right here |\n\
+ /// | | | |\n\
+ /// +---------------------+------+------------+",
+ /// )
+ /// ```
+ pub fn increase<W: Measurement<Height>>(width: W) -> CellHeightIncrease<W> {
+ CellHeightIncrease::new(width)
+ }
+
+ /// Create [`CellHeightLimit`] to set a table/cell height.
+ ///
+ /// # Example
+ ///
+ /// ## Cell height
+ ///
+ /// ```
+ /// use tabled::{Table, settings::{Height, Modify, object::Columns}};
+ ///
+ /// let data = vec![
+ /// ("Some\ndata", "here", "and here"),
+ /// ("Some\ndata on a next", "line", "right here"),
+ /// ];
+ ///
+ /// let table = Table::new(data)
+ /// .with(Modify::new(Columns::first()).with(Height::limit(1)))
+ /// .to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// "+------+------+------------+\n\
+ /// | &str | &str | &str |\n\
+ /// +------+------+------------+\n\
+ /// | Some | here | and here |\n\
+ /// +------+------+------------+\n\
+ /// | Some | line | right here |\n\
+ /// +------+------+------------+"
+ /// )
+ /// ```
+ ///
+ /// ## Table height
+ ///
+ /// ```
+ /// use tabled::{Table, settings::Height};
+ ///
+ /// let data = vec![
+ /// ("Some\ndata", "here", "and here"),
+ /// ("Some\ndata on a next", "line", "right here"),
+ /// ];
+ ///
+ /// let table = Table::new(&data)
+ /// .with(Height::limit(6))
+ /// .to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// "+------+------+------------+\n\
+ /// +------+------+------------+\n\
+ /// | Some | here | and here |\n\
+ /// +------+------+------------+\n\
+ /// | Some | line | right here |\n\
+ /// +------+------+------------+",
+ /// );
+ ///
+ /// let table = Table::new(&data)
+ /// .with(Height::limit(1))
+ /// .to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// "+--+--+--+\n\
+ /// +--+--+--+\n\
+ /// +--+--+--+\n\
+ /// +--+--+--+",
+ /// );
+ /// ```
+ pub fn limit<W: Measurement<Height>>(width: W) -> CellHeightLimit<W> {
+ CellHeightLimit::new(width)
+ }
+
+ /// Create [`HeightList`] to set a table height to a constant list of row heights.
+ ///
+ /// Notice if you provide a list with `.len()` less than `Table::count_rows` then it will have no affect.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use tabled::{Table, settings::{Height, Modify, object::Columns}};
+ ///
+ /// let data = vec![
+ /// ("Some\ndata", "here", "and here"),
+ /// ("Some\ndata on a next", "line", "right here"),
+ /// ];
+ ///
+ /// let table = Table::new(data)
+ /// .with(Height::list([1, 0, 2]))
+ /// .to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// "+----------------+------+------------+\n\
+ /// | &str | &str | &str |\n\
+ /// +----------------+------+------------+\n\
+ /// +----------------+------+------------+\n\
+ /// | Some | line | right here |\n\
+ /// | data on a next | | |\n\
+ /// +----------------+------+------------+",
+ /// )
+ /// ```
+ pub fn list<I: IntoIterator<Item = usize>>(rows: I) -> HeightList {
+ HeightList::new(rows.into_iter().collect())
+ }
+}
diff --git a/vendor/tabled/src/settings/height/table_height_increase.rs b/vendor/tabled/src/settings/height/table_height_increase.rs
new file mode 100644
index 000000000..f727bf041
--- /dev/null
+++ b/vendor/tabled/src/settings/height/table_height_increase.rs
@@ -0,0 +1,90 @@
+use crate::{
+ grid::{
+ config::ColoredConfig,
+ dimension::CompleteDimensionVecRecords,
+ records::{ExactRecords, PeekableRecords, Records},
+ },
+ settings::{
+ measurement::Measurement,
+ peaker::{Peaker, PriorityNone},
+ Height, TableOption,
+ },
+};
+
+use super::util::get_table_height;
+
+/// A modification of a table to increase the table height.
+#[derive(Debug, Clone)]
+pub struct TableHeightIncrease<W = usize, P = PriorityNone> {
+ height: W,
+ priority: P,
+}
+
+impl<W> TableHeightIncrease<W, PriorityNone> {
+ /// Creates a new object.
+ pub fn new(height: W) -> Self
+ where
+ W: Measurement<Height>,
+ {
+ Self {
+ height,
+ priority: PriorityNone::default(),
+ }
+ }
+
+ /// Sets a different priority logic.
+ pub fn priority<P>(self) -> TableHeightIncrease<W, P>
+ where
+ P: Peaker,
+ {
+ TableHeightIncrease {
+ priority: P::create(),
+ height: self.height,
+ }
+ }
+}
+
+impl<R, W, P> TableOption<R, CompleteDimensionVecRecords<'static>, ColoredConfig>
+ for TableHeightIncrease<W, P>
+where
+ W: Measurement<Height>,
+ P: Peaker + Clone,
+ R: Records + ExactRecords + PeekableRecords,
+ for<'a> &'a R: Records,
+{
+ fn change(
+ self,
+ records: &mut R,
+ cfg: &mut ColoredConfig,
+ dims: &mut CompleteDimensionVecRecords<'static>,
+ ) {
+ if records.count_rows() == 0 || records.count_columns() == 0 {
+ return;
+ }
+
+ let height = self.height.measure(&*records, cfg);
+ let (total, mut heights) = get_table_height(&*records, cfg);
+ if total >= height {
+ return;
+ }
+
+ get_increase_list(&mut heights, height, total, self.priority);
+
+ let _ = dims.set_heights(heights);
+ }
+}
+
+fn get_increase_list<P>(list: &mut [usize], total: usize, mut current: usize, mut peaker: P)
+where
+ P: Peaker,
+{
+ while current != total {
+ let col = match peaker.peak(&[], list) {
+ Some(col) => col,
+ None => break,
+ };
+
+ list[col] += 1;
+ current += 1;
+ }
+}
diff --git a/vendor/tabled/src/settings/height/table_height_limit.rs b/vendor/tabled/src/settings/height/table_height_limit.rs
new file mode 100644
index 000000000..2a3d19bb7
--- /dev/null
+++ b/vendor/tabled/src/settings/height/table_height_limit.rs
@@ -0,0 +1,123 @@
+use crate::{
+ grid::{
+ config::ColoredConfig,
+ dimension::CompleteDimensionVecRecords,
+ records::{ExactRecords, PeekableRecords, Records, RecordsMut},
+ util::string::{count_lines, get_lines},
+ },
+ settings::{
+ measurement::Measurement,
+ peaker::{Peaker, PriorityNone},
+ Height, TableOption,
+ },
+};
+
+use super::util::get_table_height;
+
+/// A modification of a table to decrease the table height.
+#[derive(Debug)]
+pub struct TableHeightLimit<W = usize, P = PriorityNone> {
+ height: W,
+ priority: P,
+}
+
+impl<W> TableHeightLimit<W, PriorityNone> {
+ /// Creates a new object.
+ pub fn new(height: W) -> Self
+ where
+ W: Measurement<Height>,
+ {
+ Self {
+ height,
+ priority: PriorityNone::default(),
+ }
+ }
+
+ /// Sets a different priority logic.
+ pub fn priority<P>(self) -> TableHeightLimit<W, P>
+ where
+ P: Peaker,
+ {
+ TableHeightLimit {
+ priority: P::create(),
+ height: self.height,
+ }
+ }
+}
+
+impl<R, W, P> TableOption<R, CompleteDimensionVecRecords<'static>, ColoredConfig>
+ for TableHeightLimit<W, P>
+where
+ W: Measurement<Height>,
+ P: Peaker + Clone,
+ R: ExactRecords + PeekableRecords + RecordsMut<String>,
+ for<'a> &'a R: Records,
+{
+ fn change(
+ self,
+ records: &mut R,
+ cfg: &mut ColoredConfig,
+ dims: &mut CompleteDimensionVecRecords<'static>,
+ ) {
+ let count_rows = records.count_rows();
+ let count_cols = (&*records).count_columns();
+
+ if count_rows == 0 || count_cols == 0 {
+ return;
+ }
+
+ let height = self.height.measure(&*records, cfg);
+ let (total, mut heights) = get_table_height(&*records, cfg);
+ if total <= height {
+ return;
+ }
+
+ decrease_list(&mut heights, total, height, self.priority);
+
+ for (row, &height) in heights.iter().enumerate() {
+ for col in 0..count_cols {
+ let text = records.get_text((row, col));
+ let count_lines = count_lines(text);
+
+ if count_lines <= height {
+ continue;
+ }
+
+ let text = limit_lines(text, height);
+
+ records.set((row, col), text);
+ }
+ }
+
+ let _ = dims.set_heights(heights);
+ }
+}
+
+fn decrease_list<P>(list: &mut [usize], total: usize, mut value: usize, mut peaker: P)
+where
+ P: Peaker,
+{
+ while value != total {
+ let p = peaker.peak(&[], list);
+ let row = match p {
+ Some(row) => row,
+ None => break,
+ };
+
+ list[row] -= 1;
+ value += 1;
+ }
+}
+
+fn limit_lines(s: &str, n: usize) -> String {
+ let mut text = String::new();
+ for (i, line) in get_lines(s).take(n).enumerate() {
+ if i > 0 {
+ text.push('\n');
+ }
+
+ text.push_str(&line);
+ }
+
+ text
+}
diff --git a/vendor/tabled/src/settings/height/util.rs b/vendor/tabled/src/settings/height/util.rs
new file mode 100644
index 000000000..c6917d925
--- /dev/null
+++ b/vendor/tabled/src/settings/height/util.rs
@@ -0,0 +1,22 @@
+use crate::grid::{
+ config::SpannedConfig,
+ dimension::SpannedGridDimension,
+ records::{ExactRecords, Records},
+};
+
+pub(crate) fn get_table_height<R: Records + ExactRecords>(
+ records: R,
+ cfg: &SpannedConfig,
+) -> (usize, Vec<usize>) {
+ let count_horizontals = cfg.count_horizontal(records.count_rows());
+
+ let margin = cfg.get_margin();
+ let margin_size = margin.top.size + margin.bottom.size;
+
+ let list = SpannedGridDimension::height(records, cfg);
+ let total = list.iter().sum::<usize>();
+
+ let total = total + count_horizontals + margin_size;
+
+ (total, list)
+}
diff --git a/vendor/tabled/src/settings/highlight/mod.rs b/vendor/tabled/src/settings/highlight/mod.rs
new file mode 100644
index 000000000..57df867b3
--- /dev/null
+++ b/vendor/tabled/src/settings/highlight/mod.rs
@@ -0,0 +1,452 @@
+//! This module contains a [`Highlight`] primitive, which helps
+//! changing a [`Border`] style of any segment on a [`Table`].
+//!
+//! [`Table`]: crate::Table
+
+use std::collections::HashSet;
+
+use crate::{
+ grid::{
+ config::{Border as GridBorder, ColoredConfig, Entity, Position, SpannedConfig},
+ records::{ExactRecords, Records},
+ },
+ settings::{object::Object, style::BorderColor, Border, TableOption},
+};
+
+/// Highlight modifies a table style by changing a border of a target [`Table`] segment.
+///
+/// # Example
+///
+/// ```
+/// use tabled::{
+/// Table,
+/// settings::{Highlight, Border, Style, object::Segment}
+/// };
+///
+/// let data = [
+/// ("ELF", "Extensible Linking Format", true),
+/// ("DWARF", "", true),
+/// ("PE", "Portable Executable", false),
+/// ];
+///
+/// let table = Table::new(data.iter().enumerate())
+/// .with(Style::markdown())
+/// .with(Highlight::new(Segment::all(), Border::default().top('^').bottom('v')))
+/// .to_string();
+///
+/// assert_eq!(
+/// table,
+/// concat!(
+/// " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ \n",
+/// "| usize | &str | &str | bool |\n",
+/// "|-------|-------|---------------------------|-------|\n",
+/// "| 0 | ELF | Extensible Linking Format | true |\n",
+/// "| 1 | DWARF | | true |\n",
+/// "| 2 | PE | Portable Executable | false |\n",
+/// " vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv ",
+/// ),
+/// );
+/// ```
+///
+/// It's possible to use [`Highlight`] for many kinds of figures.
+///
+/// ```
+/// use tabled::{
+/// Table,
+/// settings::{
+/// Highlight, Border, Style,
+/// object::{Segment, Object}
+/// }
+/// };
+///
+/// let data = [
+/// ("ELF", "Extensible Linking Format", true),
+/// ("DWARF", "", true),
+/// ("PE", "Portable Executable", false),
+/// ];
+///
+/// let table = Table::new(data.iter().enumerate())
+/// .with(Style::markdown())
+/// .with(Highlight::new(Segment::all().not((0,0).and((1, 0)).and((0, 1)).and((0, 3))), Border::filled('*')))
+/// .to_string();
+///
+/// println!("{}", table);
+///
+/// assert_eq!(
+/// table,
+/// concat!(
+/// " ***************************** \n",
+/// "| usize | &str * &str * bool |\n",
+/// "|-------*********---------------------------*********\n",
+/// "| 0 * ELF | Extensible Linking Format | true *\n",
+/// "********* *\n",
+/// "* 1 | DWARF | | true *\n",
+/// "* *\n",
+/// "* 2 | PE | Portable Executable | false *\n",
+/// "*****************************************************",
+/// ),
+/// );
+/// ```
+///
+/// [`Table`]: crate::Table
+#[derive(Debug)]
+pub struct Highlight<O> {
+ target: O,
+ border: Border,
+}
+
+// todo: Add BorderColor.
+
+impl<O> Highlight<O> {
+ /// Build a new instance of [`Highlight`]
+ ///
+ /// BE AWARE: if target exceeds boundaries it may panic.
+ pub fn new(target: O, border: Border) -> Self {
+ Self { target, border }
+ }
+}
+
+impl<O> Highlight<O> {
+ /// Build a new instance of [`HighlightColored`]
+ pub fn colored(target: O, border: BorderColor) -> HighlightColored<O> {
+ HighlightColored { target, border }
+ }
+}
+
+impl<O, R, D> TableOption<R, D, ColoredConfig> for Highlight<O>
+where
+ O: Object<R>,
+ R: Records + ExactRecords,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let count_rows = records.count_rows();
+ let count_cols = records.count_columns();
+
+ let cells = self.target.cells(records);
+ let segments = split_segments(cells, count_rows, count_cols);
+
+ for sector in segments {
+ set_border(cfg, &sector, self.border);
+ }
+ }
+}
+
+/// A [`Highlight`] object which works with a [`BorderColored`]
+///
+/// [`BorderColored`]: crate::settings::style::BorderColor
+#[derive(Debug)]
+pub struct HighlightColored<O> {
+ target: O,
+ border: BorderColor,
+}
+
+impl<O, R, D> TableOption<R, D, ColoredConfig> for HighlightColored<O>
+where
+ O: Object<R>,
+ R: Records + ExactRecords,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let count_rows = records.count_rows();
+ let count_cols = records.count_columns();
+
+ let cells = self.target.cells(records);
+ let segments = split_segments(cells, count_rows, count_cols);
+
+ for sector in segments {
+ set_border_color(cfg, sector, &self.border);
+ }
+ }
+}
+
+fn set_border_color(
+ cfg: &mut SpannedConfig,
+ sector: HashSet<(usize, usize)>,
+ border: &BorderColor,
+) {
+ if sector.is_empty() {
+ return;
+ }
+ let color = border.clone().into();
+ for &(row, col) in &sector {
+ let border = build_cell_border(&sector, (row, col), &color);
+ cfg.set_border_color((row, col), border);
+ }
+}
+
+fn split_segments(
+ cells: impl Iterator<Item = Entity>,
+ count_rows: usize,
+ count_cols: usize,
+) -> Vec<HashSet<(usize, usize)>> {
+ let mut segments: Vec<HashSet<(usize, usize)>> = Vec::new();
+ for entity in cells {
+ for cell in entity.iter(count_rows, count_cols) {
+ let found_segment = segments
+ .iter_mut()
+ .find(|s| s.iter().any(|&c| is_cell_connected(cell, c)));
+
+ match found_segment {
+ Some(segment) => {
+ let _ = segment.insert(cell);
+ }
+ None => {
+ let mut segment = HashSet::new();
+ let _ = segment.insert(cell);
+ segments.push(segment);
+ }
+ }
+ }
+ }
+
+ let mut squashed_segments: Vec<HashSet<(usize, usize)>> = Vec::new();
+ while !segments.is_empty() {
+ let mut segment = segments.remove(0);
+
+ let mut i = 0;
+ while i < segments.len() {
+ if is_segment_connected(&segment, &segments[i]) {
+ segment.extend(&segments[i]);
+ let _ = segments.remove(i);
+ } else {
+ i += 1;
+ }
+ }
+
+ squashed_segments.push(segment);
+ }
+
+ squashed_segments
+}
+
+fn is_cell_connected((row1, col1): (usize, usize), (row2, col2): (usize, usize)) -> bool {
+ if col1 == col2 && row1 == row2 + 1 {
+ return true;
+ }
+
+ if col1 == col2 && (row2 > 0 && row1 == row2 - 1) {
+ return true;
+ }
+
+ if row1 == row2 && col1 == col2 + 1 {
+ return true;
+ }
+
+ if row1 == row2 && (col2 > 0 && col1 == col2 - 1) {
+ return true;
+ }
+
+ false
+}
+
+fn is_segment_connected(
+ segment1: &HashSet<(usize, usize)>,
+ segment2: &HashSet<(usize, usize)>,
+) -> bool {
+ for &cell1 in segment1.iter() {
+ for &cell2 in segment2.iter() {
+ if is_cell_connected(cell1, cell2) {
+ return true;
+ }
+ }
+ }
+
+ false
+}
+
+fn set_border(cfg: &mut SpannedConfig, sector: &HashSet<(usize, usize)>, border: Border) {
+ if sector.is_empty() {
+ return;
+ }
+
+ let border = border.into();
+ for &pos in sector {
+ let border = build_cell_border(sector, pos, &border);
+ cfg.set_border(pos, border);
+ }
+}
+
+fn build_cell_border<T>(
+ sector: &HashSet<(usize, usize)>,
+ (row, col): Position,
+ border: &GridBorder<T>,
+) -> GridBorder<T>
+where
+ T: Default + Clone,
+{
+ let cell_has_top_neighbor = cell_has_top_neighbor(sector, row, col);
+ let cell_has_bottom_neighbor = cell_has_bottom_neighbor(sector, row, col);
+ let cell_has_left_neighbor = cell_has_left_neighbor(sector, row, col);
+ let cell_has_right_neighbor = cell_has_right_neighbor(sector, row, col);
+
+ let this_has_left_top_neighbor = is_there_left_top_cell(sector, row, col);
+ let this_has_right_top_neighbor = is_there_right_top_cell(sector, row, col);
+ let this_has_left_bottom_neighbor = is_there_left_bottom_cell(sector, row, col);
+ let this_has_right_bottom_neighbor = is_there_right_bottom_cell(sector, row, col);
+
+ let mut cell_border = GridBorder::default();
+ if let Some(c) = border.top.clone() {
+ if !cell_has_top_neighbor {
+ cell_border.top = Some(c.clone());
+
+ if cell_has_right_neighbor && !this_has_right_top_neighbor {
+ cell_border.right_top_corner = Some(c);
+ }
+ }
+ }
+ if let Some(c) = border.bottom.clone() {
+ if !cell_has_bottom_neighbor {
+ cell_border.bottom = Some(c.clone());
+
+ if cell_has_right_neighbor && !this_has_right_bottom_neighbor {
+ cell_border.right_bottom_corner = Some(c);
+ }
+ }
+ }
+ if let Some(c) = border.left.clone() {
+ if !cell_has_left_neighbor {
+ cell_border.left = Some(c.clone());
+
+ if cell_has_bottom_neighbor && !this_has_left_bottom_neighbor {
+ cell_border.left_bottom_corner = Some(c);
+ }
+ }
+ }
+ if let Some(c) = border.right.clone() {
+ if !cell_has_right_neighbor {
+ cell_border.right = Some(c.clone());
+
+ if cell_has_bottom_neighbor && !this_has_right_bottom_neighbor {
+ cell_border.right_bottom_corner = Some(c);
+ }
+ }
+ }
+ if let Some(c) = border.left_top_corner.clone() {
+ if !cell_has_left_neighbor && !cell_has_top_neighbor {
+ cell_border.left_top_corner = Some(c);
+ }
+ }
+ if let Some(c) = border.left_bottom_corner.clone() {
+ if !cell_has_left_neighbor && !cell_has_bottom_neighbor {
+ cell_border.left_bottom_corner = Some(c);
+ }
+ }
+ if let Some(c) = border.right_top_corner.clone() {
+ if !cell_has_right_neighbor && !cell_has_top_neighbor {
+ cell_border.right_top_corner = Some(c);
+ }
+ }
+ if let Some(c) = border.right_bottom_corner.clone() {
+ if !cell_has_right_neighbor && !cell_has_bottom_neighbor {
+ cell_border.right_bottom_corner = Some(c);
+ }
+ }
+ {
+ if !cell_has_bottom_neighbor {
+ if !cell_has_left_neighbor && this_has_left_top_neighbor {
+ if let Some(c) = border.right_top_corner.clone() {
+ cell_border.left_top_corner = Some(c);
+ }
+ }
+
+ if cell_has_left_neighbor && this_has_left_bottom_neighbor {
+ if let Some(c) = border.left_top_corner.clone() {
+ cell_border.left_bottom_corner = Some(c);
+ }
+ }
+
+ if !cell_has_right_neighbor && this_has_right_top_neighbor {
+ if let Some(c) = border.left_top_corner.clone() {
+ cell_border.right_top_corner = Some(c);
+ }
+ }
+
+ if cell_has_right_neighbor && this_has_right_bottom_neighbor {
+ if let Some(c) = border.right_top_corner.clone() {
+ cell_border.right_bottom_corner = Some(c);
+ }
+ }
+ }
+
+ if !cell_has_top_neighbor {
+ if !cell_has_left_neighbor && this_has_left_bottom_neighbor {
+ if let Some(c) = border.right_bottom_corner.clone() {
+ cell_border.left_bottom_corner = Some(c);
+ }
+ }
+
+ if cell_has_left_neighbor && this_has_left_top_neighbor {
+ if let Some(c) = border.left_bottom_corner.clone() {
+ cell_border.left_top_corner = Some(c);
+ }
+ }
+
+ if !cell_has_right_neighbor && this_has_right_bottom_neighbor {
+ if let Some(c) = border.left_bottom_corner.clone() {
+ cell_border.right_bottom_corner = Some(c);
+ }
+ }
+
+ if cell_has_right_neighbor && this_has_right_top_neighbor {
+ if let Some(c) = border.right_bottom_corner.clone() {
+ cell_border.right_top_corner = Some(c);
+ }
+ }
+ }
+ }
+
+ cell_border
+}
+
+fn cell_has_top_neighbor(sector: &HashSet<(usize, usize)>, row: usize, col: usize) -> bool {
+ row > 0 && sector.contains(&(row - 1, col))
+}
+
+fn cell_has_bottom_neighbor(sector: &HashSet<(usize, usize)>, row: usize, col: usize) -> bool {
+ sector.contains(&(row + 1, col))
+}
+
+fn cell_has_left_neighbor(sector: &HashSet<(usize, usize)>, row: usize, col: usize) -> bool {
+ col > 0 && sector.contains(&(row, col - 1))
+}
+
+fn cell_has_right_neighbor(sector: &HashSet<(usize, usize)>, row: usize, col: usize) -> bool {
+ sector.contains(&(row, col + 1))
+}
+
+fn is_there_left_top_cell(sector: &HashSet<(usize, usize)>, row: usize, col: usize) -> bool {
+ row > 0 && col > 0 && sector.contains(&(row - 1, col - 1))
+}
+
+fn is_there_right_top_cell(sector: &HashSet<(usize, usize)>, row: usize, col: usize) -> bool {
+ row > 0 && sector.contains(&(row - 1, col + 1))
+}
+
+fn is_there_left_bottom_cell(sector: &HashSet<(usize, usize)>, row: usize, col: usize) -> bool {
+ col > 0 && sector.contains(&(row + 1, col - 1))
+}
+
+fn is_there_right_bottom_cell(sector: &HashSet<(usize, usize)>, row: usize, col: usize) -> bool {
+ sector.contains(&(row + 1, col + 1))
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn test_is_connected() {
+ assert!(is_cell_connected((0, 0), (0, 1)));
+ assert!(is_cell_connected((0, 0), (1, 0)));
+ assert!(!is_cell_connected((0, 0), (1, 1)));
+
+ assert!(is_cell_connected((0, 1), (0, 0)));
+ assert!(is_cell_connected((1, 0), (0, 0)));
+ assert!(!is_cell_connected((1, 1), (0, 0)));
+
+ assert!(is_cell_connected((1, 1), (0, 1)));
+ assert!(is_cell_connected((1, 1), (1, 0)));
+ assert!(is_cell_connected((1, 1), (2, 1)));
+ assert!(is_cell_connected((1, 1), (1, 2)));
+ assert!(!is_cell_connected((1, 1), (1, 1)));
+ }
+}
diff --git a/vendor/tabled/src/settings/locator/mod.rs b/vendor/tabled/src/settings/locator/mod.rs
new file mode 100644
index 000000000..b48391bb7
--- /dev/null
+++ b/vendor/tabled/src/settings/locator/mod.rs
@@ -0,0 +1,202 @@
+//! The module contains a [`Locator`] trait and implementations for it.
+
+use core::ops::Bound;
+use std::{
+ iter::{self, Once},
+ ops::{Range, RangeBounds},
+};
+
+use crate::{
+ grid::config::Entity,
+ grid::records::{ExactRecords, PeekableRecords, Records},
+ settings::object::{
+ Column, Columns, FirstColumn, FirstRow, LastColumn, LastRow, Object, Row, Rows,
+ },
+};
+
+/// Locator is an interface which searches for a particular thing in the [`Records`],
+/// and returns coordinate of the foundings if any.
+pub trait Locator<Records> {
+ /// A coordinate of the finding.
+ type Coordinate;
+ /// An iterator of the coordinates.
+ /// If it's empty it's considered that nothing is found.
+ type IntoIter: IntoIterator<Item = Self::Coordinate>;
+
+ /// Search for the thing in [`Records`], returning a list of coordinates.
+ fn locate(&mut self, records: Records) -> Self::IntoIter;
+}
+
+impl<B, R> Locator<R> for Columns<B>
+where
+ B: RangeBounds<usize>,
+ R: Records,
+{
+ type Coordinate = usize;
+ type IntoIter = Range<usize>;
+
+ fn locate(&mut self, records: R) -> Self::IntoIter {
+ let range = self.get_range();
+ let max = records.count_columns();
+ let (from, to) = bounds_to_usize(range.start_bound(), range.end_bound(), max);
+
+ from..to
+ }
+}
+
+impl<R> Locator<R> for Column {
+ type Coordinate = usize;
+ type IntoIter = Once<usize>;
+
+ fn locate(&mut self, _: R) -> Self::IntoIter {
+ iter::once((*self).into())
+ }
+}
+
+impl<R> Locator<R> for FirstColumn {
+ type Coordinate = usize;
+ type IntoIter = Once<usize>;
+
+ fn locate(&mut self, _: R) -> Self::IntoIter {
+ iter::once(0)
+ }
+}
+
+impl<R> Locator<R> for LastColumn
+where
+ R: Records,
+{
+ type Coordinate = usize;
+ type IntoIter = Once<usize>;
+
+ fn locate(&mut self, records: R) -> Self::IntoIter {
+ if records.count_columns() > 0 {
+ iter::once(records.count_columns() - 1)
+ } else {
+ iter::once(0)
+ }
+ }
+}
+
+impl<B, R> Locator<R> for Rows<B>
+where
+ R: Records,
+ B: RangeBounds<usize>,
+{
+ type Coordinate = usize;
+ type IntoIter = Range<usize>;
+
+ fn locate(&mut self, records: R) -> Self::IntoIter {
+ let (from, to) = bounds_to_usize(
+ self.get_range().start_bound(),
+ self.get_range().end_bound(),
+ records.count_columns(),
+ );
+
+ from..to
+ }
+}
+
+impl<R> Locator<R> for Row {
+ type Coordinate = usize;
+ type IntoIter = Once<usize>;
+
+ fn locate(&mut self, _: R) -> Self::IntoIter {
+ iter::once((*self).into())
+ }
+}
+
+impl<R> Locator<R> for FirstRow {
+ type Coordinate = usize;
+ type IntoIter = Once<usize>;
+
+ fn locate(&mut self, _: R) -> Self::IntoIter {
+ iter::once(0)
+ }
+}
+
+impl<R> Locator<R> for LastRow
+where
+ R: ExactRecords,
+{
+ type Coordinate = usize;
+ type IntoIter = Once<usize>;
+
+ fn locate(&mut self, records: R) -> Self::IntoIter {
+ if records.count_rows() > 0 {
+ iter::once(records.count_rows() - 1)
+ } else {
+ iter::once(0)
+ }
+ }
+}
+
+/// The structure is an implementation of [`Locator`] to search for a column by it's name.
+/// A name is considered be a value in a first row.
+///
+/// So even if in reality there's no header, the first row will be considered to be one.
+#[derive(Debug, Clone, Copy)]
+pub struct ByColumnName<S>(S);
+
+impl<S> ByColumnName<S> {
+ /// Constructs a new object of the structure.
+ pub fn new(text: S) -> Self
+ where
+ S: AsRef<str>,
+ {
+ Self(text)
+ }
+}
+
+impl<R, S> Locator<R> for ByColumnName<S>
+where
+ S: AsRef<str>,
+ R: Records + ExactRecords + PeekableRecords,
+{
+ type Coordinate = usize;
+ type IntoIter = Vec<usize>;
+
+ fn locate(&mut self, records: R) -> Self::IntoIter {
+ // todo: can be optimized by creating Iterator
+ (0..records.count_columns())
+ .filter(|col| records.get_text((0, *col)) == self.0.as_ref())
+ .collect::<Vec<_>>()
+ }
+}
+
+impl<S, R> Object<R> for ByColumnName<S>
+where
+ S: AsRef<str>,
+ R: Records + PeekableRecords + ExactRecords,
+{
+ type Iter = std::vec::IntoIter<Entity>;
+
+ fn cells(&self, records: &R) -> Self::Iter {
+ // todo: can be optimized by creating Iterator
+ (0..records.count_columns())
+ .filter(|col| records.get_text((0, *col)) == self.0.as_ref())
+ .map(Entity::Column)
+ .collect::<Vec<_>>()
+ .into_iter()
+ }
+}
+
+fn bounds_to_usize(
+ left: Bound<&usize>,
+ right: Bound<&usize>,
+ count_elements: usize,
+) -> (usize, usize) {
+ match (left, right) {
+ (Bound::Included(x), Bound::Included(y)) => (*x, y + 1),
+ (Bound::Included(x), Bound::Excluded(y)) => (*x, *y),
+ (Bound::Included(x), Bound::Unbounded) => (*x, count_elements),
+ (Bound::Unbounded, Bound::Unbounded) => (0, count_elements),
+ (Bound::Unbounded, Bound::Included(y)) => (0, y + 1),
+ (Bound::Unbounded, Bound::Excluded(y)) => (0, *y),
+ (Bound::Excluded(_), Bound::Unbounded)
+ | (Bound::Excluded(_), Bound::Included(_))
+ | (Bound::Excluded(_), Bound::Excluded(_)) => {
+ unreachable!("A start bound can't be excluded")
+ }
+ }
+}
diff --git a/vendor/tabled/src/settings/margin/mod.rs b/vendor/tabled/src/settings/margin/mod.rs
new file mode 100644
index 000000000..b86a1d3e2
--- /dev/null
+++ b/vendor/tabled/src/settings/margin/mod.rs
@@ -0,0 +1,137 @@
+//! This module contains a Margin settings of a [`Table`].
+//!
+//! # Example
+//!
+#![cfg_attr(feature = "std", doc = "```")]
+#![cfg_attr(not(feature = "std"), doc = "```ignore")]
+//! use tabled::{settings::{Margin, Style}, Table};
+//!
+//! let data = vec!["Hello", "World", "!"];
+//!
+//! let mut table = Table::new(data);
+//! table.with(Style::markdown()).with(Margin::new(3, 3, 1, 0));
+//!
+//! assert_eq!(
+//! table.to_string(),
+//! concat!(
+//! " \n",
+//! " | &str | \n",
+//! " |-------| \n",
+//! " | Hello | \n",
+//! " | World | \n",
+//! " | ! | ",
+//! )
+//! );
+//! ```
+//!
+//! [`Table`]: crate::Table
+
+use crate::{
+ grid::{
+ color::StaticColor,
+ config::{CompactConfig, CompactMultilineConfig},
+ config::{Indent, Sides},
+ },
+ settings::TableOption,
+};
+
+#[cfg(feature = "std")]
+use crate::grid::{color::AnsiColor, config::ColoredConfig};
+
+/// Margin is responsible for a left/right/top/bottom outer indent of a grid.
+///
+#[cfg_attr(feature = "std", doc = "```")]
+#[cfg_attr(not(feature = "std"), doc = "```ignore")]
+/// # use tabled::{settings::Margin, Table};
+/// # let data: Vec<&'static str> = Vec::new();
+/// let table = Table::new(&data)
+/// .with(Margin::new(1, 1, 1, 1).fill('>', '<', 'V', '^'));
+/// ```
+#[derive(Debug, Clone)]
+pub struct Margin<C = StaticColor> {
+ indent: Sides<Indent>,
+ colors: Option<Sides<C>>,
+}
+
+impl Margin {
+ /// Construct's an Margin object.
+ ///
+ /// It uses space(' ') as a default fill character.
+ /// To set a custom character you can use [`Margin::fill`] function.
+ pub const fn new(left: usize, right: usize, top: usize, bottom: usize) -> Self {
+ Self {
+ indent: Sides::new(
+ Indent::spaced(left),
+ Indent::spaced(right),
+ Indent::spaced(top),
+ Indent::spaced(bottom),
+ ),
+ colors: None,
+ }
+ }
+}
+
+impl<Color> Margin<Color> {
+ /// The function, sets a characters for the margin on an each side.
+ pub const fn fill(mut self, left: char, right: char, top: char, bottom: char) -> Self {
+ self.indent.left.fill = left;
+ self.indent.right.fill = right;
+ self.indent.top.fill = top;
+ self.indent.bottom.fill = bottom;
+ self
+ }
+
+ /// The function, sets a characters for the margin on an each side.
+ pub fn colorize<C>(self, left: C, right: C, top: C, bottom: C) -> Margin<C> {
+ Margin {
+ indent: self.indent,
+ colors: Some(Sides::new(left, right, top, bottom)),
+ }
+ }
+}
+
+#[cfg(feature = "std")]
+impl<R, D, C> TableOption<R, D, ColoredConfig> for Margin<C>
+where
+ C: Into<AnsiColor<'static>> + Clone,
+{
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let indent = self.indent;
+ let margin = Sides::new(indent.left, indent.right, indent.top, indent.bottom);
+ cfg.set_margin(margin);
+
+ if let Some(colors) = &self.colors {
+ let margin = Sides::new(
+ Some(colors.left.clone().into()),
+ Some(colors.right.clone().into()),
+ Some(colors.top.clone().into()),
+ Some(colors.bottom.clone().into()),
+ );
+ cfg.set_margin_color(margin);
+ }
+ }
+}
+
+impl<R, D, C> TableOption<R, D, CompactConfig> for Margin<C>
+where
+ C: Into<StaticColor> + Clone,
+{
+ fn change(self, _: &mut R, cfg: &mut CompactConfig, _: &mut D) {
+ *cfg = cfg.set_margin(self.indent);
+
+ if let Some(c) = self.colors {
+ // todo: make a new method (BECAUSE INTO doesn't work) try_into();
+ let colors = Sides::new(c.left.into(), c.right.into(), c.top.into(), c.bottom.into());
+ *cfg = cfg.set_margin_color(colors);
+ }
+ }
+}
+
+impl<R, D, C> TableOption<R, D, CompactMultilineConfig> for Margin<C>
+where
+ C: Into<StaticColor> + Clone,
+{
+ fn change(self, records: &mut R, cfg: &mut CompactMultilineConfig, dimension: &mut D) {
+ self.change(records, cfg.as_mut(), dimension)
+ }
+}
diff --git a/vendor/tabled/src/settings/measurement/mod.rs b/vendor/tabled/src/settings/measurement/mod.rs
new file mode 100644
index 000000000..f93cc6b4e
--- /dev/null
+++ b/vendor/tabled/src/settings/measurement/mod.rs
@@ -0,0 +1,161 @@
+//! The module contains [`Measurement`] trait and its implementations to be used in [`Height`] and [`Width`].;
+
+use crate::{
+ grid::config::SpannedConfig,
+ grid::dimension::SpannedGridDimension,
+ grid::records::{ExactRecords, PeekableRecords, Records},
+ grid::util::string::{self, string_width_multiline},
+ settings::{Height, Width},
+};
+
+/// A width value which can be obtained on behalf of [`Table`].
+///
+/// [`Table`]: crate::Table
+pub trait Measurement<Attribute> {
+ /// Returns a measurement value.
+ fn measure<R: Records + ExactRecords + PeekableRecords>(
+ &self,
+ records: R,
+ cfg: &SpannedConfig,
+ ) -> usize;
+}
+
+impl<T> Measurement<T> for usize {
+ fn measure<R>(&self, _: R, _: &SpannedConfig) -> usize {
+ *self
+ }
+}
+
+/// Max width value.
+#[derive(Debug)]
+pub struct Max;
+
+impl Measurement<Width> for Max {
+ fn measure<R: Records + ExactRecords + PeekableRecords>(
+ &self,
+ records: R,
+ _: &SpannedConfig,
+ ) -> usize {
+ grid_widths(&records)
+ .map(|r| r.max().unwrap_or(0))
+ .max()
+ .unwrap_or(0)
+ }
+}
+
+impl Measurement<Height> for Max {
+ fn measure<R: Records + ExactRecords + PeekableRecords>(
+ &self,
+ records: R,
+ _: &SpannedConfig,
+ ) -> usize {
+ records_heights(&records)
+ .map(|r| r.max().unwrap_or(0))
+ .max()
+ .unwrap_or(0)
+ }
+}
+
+/// Min width value.
+#[derive(Debug)]
+pub struct Min;
+
+impl Measurement<Width> for Min {
+ fn measure<R: Records + ExactRecords + PeekableRecords>(
+ &self,
+ records: R,
+ _: &SpannedConfig,
+ ) -> usize {
+ grid_widths(&records)
+ .map(|r| r.min().unwrap_or(0))
+ .max()
+ .unwrap_or(0)
+ }
+}
+
+impl Measurement<Height> for Min {
+ fn measure<R: Records + ExactRecords + PeekableRecords>(
+ &self,
+ records: R,
+ _: &SpannedConfig,
+ ) -> usize {
+ records_heights(&records)
+ .map(|r| r.max().unwrap_or(0))
+ .min()
+ .unwrap_or(0)
+ }
+}
+
+/// Percent from a total table width.
+#[derive(Debug)]
+pub struct Percent(pub usize);
+
+impl Measurement<Width> for Percent {
+ fn measure<R>(&self, records: R, cfg: &SpannedConfig) -> usize
+ where
+ R: Records,
+ {
+ let (_, total) = get_table_widths_with_total(records, cfg);
+ (total * self.0) / 100
+ }
+}
+
+impl Measurement<Height> for Percent {
+ fn measure<R>(&self, records: R, cfg: &SpannedConfig) -> usize
+ where
+ R: Records + ExactRecords,
+ {
+ let (_, total) = get_table_heights_width_total(records, cfg);
+ (total * self.0) / 100
+ }
+}
+
+fn grid_widths<R: Records + ExactRecords + PeekableRecords>(
+ records: &R,
+) -> impl Iterator<Item = impl Iterator<Item = usize> + '_> + '_ {
+ let (count_rows, count_cols) = (records.count_rows(), records.count_columns());
+ (0..count_rows).map(move |row| {
+ (0..count_cols).map(move |col| string_width_multiline(records.get_text((row, col))))
+ })
+}
+
+fn get_table_widths_with_total<R>(records: R, cfg: &SpannedConfig) -> (Vec<usize>, usize)
+where
+ R: Records,
+{
+ let widths = SpannedGridDimension::width(records, cfg);
+ let total_width = get_table_total_width(&widths, cfg);
+ (widths, total_width)
+}
+
+fn get_table_total_width(list: &[usize], cfg: &SpannedConfig) -> usize {
+ let total = list.iter().sum::<usize>();
+
+ total + cfg.count_vertical(list.len())
+}
+
+fn records_heights<R>(records: &R) -> impl Iterator<Item = impl Iterator<Item = usize> + '_> + '_
+where
+ R: Records + ExactRecords + PeekableRecords,
+{
+ (0..records.count_rows()).map(move |row| {
+ (0..records.count_columns())
+ .map(move |col| string::count_lines(records.get_text((row, col))))
+ })
+}
+
+fn get_table_heights_width_total<R>(records: R, cfg: &SpannedConfig) -> (Vec<usize>, usize)
+where
+ R: Records,
+{
+ let list = SpannedGridDimension::height(records, cfg);
+ let total = get_table_total_height(&list, cfg);
+ (list, total)
+}
+
+fn get_table_total_height(list: &[usize], cfg: &SpannedConfig) -> usize {
+ let total = list.iter().sum::<usize>();
+ let counth = cfg.count_horizontal(list.len());
+
+ total + counth
+}
diff --git a/vendor/tabled/src/settings/merge/mod.rs b/vendor/tabled/src/settings/merge/mod.rs
new file mode 100644
index 000000000..51fa2bbf6
--- /dev/null
+++ b/vendor/tabled/src/settings/merge/mod.rs
@@ -0,0 +1,196 @@
+//! The module contains a set of methods to merge cells together via [`Span`]s.
+//!
+//! [`Span`]: crate::settings::span::Span
+
+use crate::{
+ grid::config::ColoredConfig,
+ grid::records::{ExactRecords, PeekableRecords, Records},
+ settings::TableOption,
+};
+
+/// Merge to combine duplicates together, using [`Span`].
+///
+/// [`Span`]: crate::settings::span::Span
+#[derive(Debug)]
+pub struct Merge;
+
+impl Merge {
+ /// Vertical merge.
+ pub fn vertical() -> MergeDuplicatesVertical {
+ MergeDuplicatesVertical
+ }
+
+ /// Horizontal merge.
+ pub fn horizontal() -> MergeDuplicatesHorizontal {
+ MergeDuplicatesHorizontal
+ }
+}
+
+/// A modificator for [`Table`] which looks up for duplicates in columns and
+/// in case of duplicate merges the cells together using [`Span`].
+///
+/// [`Table`]: crate::Table
+/// [`Span`]: crate::settings::span::Span
+#[derive(Debug)]
+pub struct MergeDuplicatesVertical;
+
+impl<R, D> TableOption<R, D, ColoredConfig> for MergeDuplicatesVertical
+where
+ R: Records + PeekableRecords + ExactRecords,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let count_rows = records.count_rows();
+ let count_cols = records.count_columns();
+
+ if count_rows == 0 || count_cols == 0 {
+ return;
+ }
+
+ for column in 0..count_cols {
+ let mut repeat_length = 0;
+ let mut repeat_value = String::new();
+ let mut repeat_is_set = false;
+ let mut last_is_row_span = false;
+ for row in (0..count_rows).rev() {
+ if last_is_row_span {
+ last_is_row_span = false;
+ continue;
+ }
+
+ // we need to mitigate messing existing spans
+ let is_cell_visible = cfg.is_cell_visible((row, column));
+ let is_row_span_cell = cfg.get_column_span((row, column)).is_some();
+
+ if !repeat_is_set {
+ if !is_cell_visible {
+ continue;
+ }
+
+ if is_row_span_cell {
+ continue;
+ }
+
+ repeat_length = 1;
+ repeat_value = records.get_text((row, column)).to_owned();
+ repeat_is_set = true;
+ continue;
+ }
+
+ if is_row_span_cell {
+ repeat_is_set = false;
+ last_is_row_span = true;
+ continue;
+ }
+
+ if !is_cell_visible {
+ repeat_is_set = false;
+ continue;
+ }
+
+ let text = records.get_text((row, column));
+ let is_duplicate = text == repeat_value;
+
+ if is_duplicate {
+ repeat_length += 1;
+ continue;
+ }
+
+ if repeat_length > 1 {
+ cfg.set_row_span((row + 1, column), repeat_length);
+ }
+
+ repeat_length = 1;
+ repeat_value = records.get_text((row, column)).to_owned();
+ }
+
+ if repeat_length > 1 {
+ cfg.set_row_span((0, column), repeat_length);
+ }
+ }
+ }
+}
+
+/// A modificator for [`Table`] which looks up for duplicates in rows and
+/// in case of duplicate merges the cells together using [`Span`].
+///
+/// [`Table`]: crate::Table
+/// [`Span`]: crate::settings::span::Span
+#[derive(Debug)]
+pub struct MergeDuplicatesHorizontal;
+
+impl<R, D> TableOption<R, D, ColoredConfig> for MergeDuplicatesHorizontal
+where
+ R: Records + PeekableRecords + ExactRecords,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let count_rows = records.count_rows();
+ let count_cols = records.count_columns();
+
+ if count_rows == 0 || count_cols == 0 {
+ return;
+ }
+
+ for row in 0..count_rows {
+ let mut repeat_length = 0;
+ let mut repeat_value = String::new();
+ let mut repeat_is_set = false;
+ let mut last_is_col_span = false;
+
+ for column in (0..count_cols).rev() {
+ if last_is_col_span {
+ last_is_col_span = false;
+ continue;
+ }
+
+ // we need to mitigate messing existing spans
+ let is_cell_visible = cfg.is_cell_visible((row, column));
+ let is_col_span_cell = cfg.get_row_span((row, column)).is_some();
+
+ if !repeat_is_set {
+ if !is_cell_visible {
+ continue;
+ }
+
+ if is_col_span_cell {
+ continue;
+ }
+
+ repeat_length = 1;
+ repeat_value = records.get_text((row, column)).to_owned();
+ repeat_is_set = true;
+ continue;
+ }
+
+ if is_col_span_cell {
+ repeat_is_set = false;
+ last_is_col_span = true;
+ continue;
+ }
+
+ if !is_cell_visible {
+ repeat_is_set = false;
+ continue;
+ }
+
+ let text = records.get_text((row, column));
+ let is_duplicate = text == repeat_value;
+
+ if is_duplicate {
+ repeat_length += 1;
+ continue;
+ }
+
+ if repeat_length > 1 {
+ cfg.set_column_span((row, column + 1), repeat_length);
+ }
+
+ repeat_length = 1;
+ repeat_value = records.get_text((row, column)).to_owned();
+ }
+
+ if repeat_length > 1 {
+ cfg.set_column_span((row, 0), repeat_length);
+ }
+ }
+ }
+}
diff --git a/vendor/tabled/src/settings/mod.rs b/vendor/tabled/src/settings/mod.rs
new file mode 100644
index 000000000..a89037cbd
--- /dev/null
+++ b/vendor/tabled/src/settings/mod.rs
@@ -0,0 +1,135 @@
+//! Module contains various table configuration settings.
+//!
+//! There 2 types of settings;
+//!
+//! - [`CellOption`] which can modify only a cell.
+//! - [`TableOption`] which can modify table as a whole.
+//!
+//! [`CellOption`] works on behave of [`Modify`] which is actually a [`TableOption`].
+//!
+//! Notice that it's possble to combine settings together by the help of [`Settings`].
+//!
+#![cfg_attr(feature = "std", doc = "```")]
+#![cfg_attr(not(feature = "std"), doc = "```ignore")]
+//! use tabled::{Table, settings::{Settings, Style, Padding}};
+//!
+//! let table_config = Settings::default()
+//! .with(Padding::new(2, 2, 1, 1))
+//! .with(Style::rounded());
+//!
+//! let data = [[2023;9]; 3];
+//!
+//! let table = Table::new(data).with(table_config).to_string();
+//!
+//! assert_eq!(
+//! table,
+//! "╭────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────╮\n\
+//! │ │ │ │ │ │ │ │ │ │\n\
+//! │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │\n\
+//! │ │ │ │ │ │ │ │ │ │\n\
+//! ├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤\n\
+//! │ │ │ │ │ │ │ │ │ │\n\
+//! │ 2023 │ 2023 │ 2023 │ 2023 │ 2023 │ 2023 │ 2023 │ 2023 │ 2023 │\n\
+//! │ │ │ │ │ │ │ │ │ │\n\
+//! │ │ │ │ │ │ │ │ │ │\n\
+//! │ 2023 │ 2023 │ 2023 │ 2023 │ 2023 │ 2023 │ 2023 │ 2023 │ 2023 │\n\
+//! │ │ │ │ │ │ │ │ │ │\n\
+//! │ │ │ │ │ │ │ │ │ │\n\
+//! │ 2023 │ 2023 │ 2023 │ 2023 │ 2023 │ 2023 │ 2023 │ 2023 │ 2023 │\n\
+//! │ │ │ │ │ │ │ │ │ │\n\
+//! ╰────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────╯"
+//! )
+//! ```
+
+mod cell_option;
+mod settings_list;
+mod table_option;
+
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub mod object;
+
+#[cfg(feature = "std")]
+mod modify;
+
+mod alignment;
+mod extract;
+mod margin;
+mod padding;
+mod rotate;
+
+#[cfg(feature = "std")]
+mod color;
+#[cfg(feature = "std")]
+mod concat;
+#[cfg(feature = "std")]
+mod duplicate;
+
+pub mod style;
+
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub mod disable;
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub mod format;
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub mod formatting;
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub mod height;
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub mod highlight;
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub mod locator;
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub mod measurement;
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub mod merge;
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub mod panel;
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub mod peaker;
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+mod shadow;
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub mod span;
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub mod split;
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub mod themes;
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub mod width;
+
+pub use cell_option::CellOption;
+pub use settings_list::{EmptySettings, Settings};
+pub use table_option::TableOption;
+
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub use modify::{Modify, ModifyList};
+
+pub use self::{
+ alignment::Alignment, extract::Extract, margin::Margin, padding::Padding, rotate::Rotate,
+ style::Style,
+};
+
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub use self::{
+ color::Color, concat::Concat, disable::Disable, duplicate::Dup, format::Format, height::Height,
+ highlight::Highlight, merge::Merge, panel::Panel, shadow::Shadow, span::Span, style::Border,
+ width::Width,
+};
diff --git a/vendor/tabled/src/settings/modify.rs b/vendor/tabled/src/settings/modify.rs
new file mode 100644
index 000000000..c712a255e
--- /dev/null
+++ b/vendor/tabled/src/settings/modify.rs
@@ -0,0 +1,81 @@
+use crate::{
+ grid::records::{ExactRecords, Records},
+ settings::{object::Object, CellOption, Settings, TableOption},
+};
+
+/// Modify structure provide an abstraction, to be able to apply
+/// a set of [`CellOption`]s to the same object.
+///
+/// Be aware that the settings are applied all to a cell at a time.
+/// So sometimes you may need to make a several calls of [`Modify`] in order to achieve the desired affect.
+#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub struct Modify<O> {
+ obj: O,
+}
+
+impl<O> Modify<O> {
+ /// Creates a new [`Modify`] without any options.
+ pub const fn new(obj: O) -> Self {
+ Self { obj }
+ }
+
+ /// A function which combines together [`Modify::new`] and [`Modify::with`] calls.
+ pub const fn list<M>(obj: O, next: M) -> ModifyList<O, M> {
+ ModifyList {
+ obj,
+ modifiers: next,
+ }
+ }
+
+ /// It's a generic function which stores a [`CellOption`].
+ ///
+ /// IMPORTANT:
+ /// The function *doesn't* changes a [`Table`].
+ /// [`Table`] will be changed only after passing [`Modify`] object to [`Table::with`].
+ ///
+ /// [`Table`]: crate::Table
+ /// [`Table::with`]: crate::Table::with
+ pub fn with<M>(self, next: M) -> ModifyList<O, M> {
+ ModifyList {
+ obj: self.obj,
+ modifiers: next,
+ }
+ }
+}
+
+/// This is a container of [`CellOption`]s which are applied to a set [`Object`].
+#[derive(Debug)]
+pub struct ModifyList<O, S> {
+ obj: O,
+ modifiers: S,
+}
+
+impl<O, M1> ModifyList<O, M1> {
+ /// With a generic function which stores a [`CellOption`].
+ ///
+ /// IMPORTANT:
+ /// The function *doesn't* changes a [`Table`].
+ /// [`Table`] will be changed only after passing [`Modify`] object to [`Table::with`].
+ ///
+ /// [`Table`]: crate::Table
+ /// [`Table::with`]: crate::Table::with
+ pub fn with<M2>(self, next: M2) -> ModifyList<O, Settings<M1, M2>> {
+ ModifyList {
+ obj: self.obj,
+ modifiers: Settings::new(self.modifiers, next),
+ }
+ }
+}
+
+impl<O, M, R, D, C> TableOption<R, D, C> for ModifyList<O, M>
+where
+ O: Object<R>,
+ M: CellOption<R, C> + Clone,
+ R: Records + ExactRecords,
+{
+ fn change(self, records: &mut R, cfg: &mut C, _: &mut D) {
+ for entity in self.obj.cells(records) {
+ self.modifiers.clone().change(records, cfg, entity);
+ }
+ }
+}
diff --git a/vendor/tabled/src/settings/object/cell.rs b/vendor/tabled/src/settings/object/cell.rs
new file mode 100644
index 000000000..0b0463c9a
--- /dev/null
+++ b/vendor/tabled/src/settings/object/cell.rs
@@ -0,0 +1,70 @@
+use crate::{
+ grid::config::{Entity, Position},
+ settings::object::Object,
+};
+
+/// Cell denotes a particular cell on a [`Table`].
+///
+/// For example such table has 4 cells.
+/// Which indexes are (0, 0), (0, 1), (1, 0), (1, 1).
+///
+/// ```text
+/// ┌───┬───â”
+/// │ 0 │ 1 │
+/// ├───┼───┤
+/// │ 1 │ 2 │
+/// └───┴───┘
+/// ```
+///
+/// [`Table`]: crate::Table
+#[derive(Debug, Default, PartialEq, Eq, PartialOrd, Ord)]
+pub struct Cell(usize, usize);
+
+impl Cell {
+ /// Create new cell structure.
+ pub fn new(row: usize, col: usize) -> Self {
+ Self(row, col)
+ }
+}
+
+impl From<Position> for Cell {
+ fn from((row, col): Position) -> Self {
+ Self(row, col)
+ }
+}
+
+impl<I> Object<I> for Cell {
+ type Iter = EntityOnce;
+
+ fn cells(&self, _: &I) -> Self::Iter {
+ EntityOnce::new(Some(Entity::Cell(self.0, self.1)))
+ }
+}
+
+impl<I> Object<I> for Position {
+ type Iter = EntityOnce;
+
+ fn cells(&self, _: &I) -> Self::Iter {
+ EntityOnce::new(Some(Entity::Cell(self.0, self.1)))
+ }
+}
+
+/// An [`Iterator`] which returns an entity once.
+#[derive(Debug)]
+pub struct EntityOnce {
+ entity: Option<Entity>,
+}
+
+impl EntityOnce {
+ pub(crate) const fn new(entity: Option<Entity>) -> Self {
+ Self { entity }
+ }
+}
+
+impl Iterator for EntityOnce {
+ type Item = Entity;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ self.entity.take()
+ }
+}
diff --git a/vendor/tabled/src/settings/object/columns.rs b/vendor/tabled/src/settings/object/columns.rs
new file mode 100644
index 000000000..bcbe2acf5
--- /dev/null
+++ b/vendor/tabled/src/settings/object/columns.rs
@@ -0,0 +1,209 @@
+use std::ops::{Add, RangeBounds, Sub};
+
+use crate::{
+ grid::config::Entity,
+ grid::records::{ExactRecords, Records},
+ settings::object::{cell::EntityOnce, Object},
+};
+
+use super::util::bounds_to_usize;
+
+/// Column denotes a set of cells on given columns on a [`Table`].
+///
+/// [`Table`]: crate::Table
+#[derive(Debug)]
+pub struct Columns<R> {
+ range: R,
+}
+
+impl<R> Columns<R> {
+ /// Returns a new instance of [`Columns`] for a range of columns.
+ ///
+ /// If the boundaries are exceeded it may panic.
+ pub fn new(range: R) -> Self
+ where
+ R: RangeBounds<usize>,
+ {
+ Self { range }
+ }
+
+ pub(crate) fn get_range(&self) -> &R {
+ &self.range
+ }
+}
+
+impl Columns<()> {
+ /// Returns a new instance of [`Columns`] for a single column.
+ ///
+ /// If the boundaries are exceeded it may panic.
+ pub fn single(index: usize) -> Column {
+ Column(index)
+ }
+
+ /// Returns a new instance of [`Columns`] for a first column.
+ ///
+ /// If the boundaries are exceeded the object will produce no cells.
+ pub fn first() -> FirstColumn {
+ FirstColumn
+ }
+
+ /// Returns a new instance of [`Columns`] for a last column.
+ ///
+ /// If the boundaries are exceeded the object will produce no cells.
+ pub fn last() -> LastColumn {
+ LastColumn
+ }
+}
+
+impl<I, R> Object<I> for Columns<R>
+where
+ R: RangeBounds<usize>,
+ I: Records,
+{
+ type Iter = ColumnsIter;
+
+ fn cells(&self, records: &I) -> Self::Iter {
+ let max = records.count_columns();
+ let start = self.range.start_bound();
+ let end = self.range.end_bound();
+ let (x, y) = bounds_to_usize(start, end, max);
+
+ ColumnsIter::new(x, y)
+ }
+}
+
+/// `FirstColumn` represents the first column on a grid.
+#[derive(Debug)]
+pub struct FirstColumn;
+
+impl<I> Object<I> for FirstColumn
+where
+ I: Records + ExactRecords,
+{
+ type Iter = EntityOnce;
+
+ fn cells(&self, records: &I) -> Self::Iter {
+ if records.count_rows() == 0 || records.count_columns() == 0 {
+ return EntityOnce::new(None);
+ }
+
+ EntityOnce::new(Some(Entity::Column(0)))
+ }
+}
+
+impl Add<usize> for FirstColumn {
+ type Output = Column;
+
+ fn add(self, rhs: usize) -> Self::Output {
+ Column(rhs)
+ }
+}
+
+/// `LastColumn` represents the last column on a grid.
+#[derive(Debug)]
+pub struct LastColumn;
+
+impl<I> Object<I> for LastColumn
+where
+ I: Records + ExactRecords,
+{
+ type Iter = EntityOnce;
+
+ fn cells(&self, records: &I) -> Self::Iter {
+ if records.count_rows() == 0 || records.count_columns() == 0 {
+ return EntityOnce::new(None);
+ }
+
+ let col = records.count_columns().saturating_sub(1);
+ EntityOnce::new(Some(Entity::Column(col)))
+ }
+}
+
+impl Sub<usize> for LastColumn {
+ type Output = LastColumnOffset;
+
+ fn sub(self, rhs: usize) -> Self::Output {
+ LastColumnOffset { offset: rhs }
+ }
+}
+
+/// Column represents a single column on a grid.
+#[derive(Debug, Clone, Copy)]
+pub struct Column(usize);
+
+impl<I> Object<I> for Column {
+ type Iter = EntityOnce;
+
+ fn cells(&self, _: &I) -> Self::Iter {
+ EntityOnce::new(Some(Entity::Column(self.0)))
+ }
+}
+
+impl From<usize> for Column {
+ fn from(i: usize) -> Self {
+ Self(i)
+ }
+}
+
+impl From<Column> for usize {
+ fn from(val: Column) -> Self {
+ val.0
+ }
+}
+
+/// `LastColumnOffset` represents a single column on a grid indexed via offset from the last column.
+#[derive(Debug)]
+pub struct LastColumnOffset {
+ offset: usize,
+}
+
+impl<I> Object<I> for LastColumnOffset
+where
+ I: Records + ExactRecords,
+{
+ type Iter = EntityOnce;
+
+ fn cells(&self, records: &I) -> Self::Iter {
+ if records.count_rows() == 0 || records.count_columns() == 0 {
+ return EntityOnce::new(None);
+ }
+
+ let col = records.count_columns().saturating_sub(1);
+ if self.offset > col {
+ return EntityOnce::new(None);
+ }
+
+ let col = col - self.offset;
+ EntityOnce::new(Some(Entity::Column(col)))
+ }
+}
+
+/// An [`Iterator`] which goes goes over columns of a [`Table`].
+///
+/// [`Table`]: crate::Table
+#[derive(Debug)]
+pub struct ColumnsIter {
+ start: usize,
+ end: usize,
+}
+
+impl ColumnsIter {
+ const fn new(start: usize, end: usize) -> Self {
+ Self { start, end }
+ }
+}
+
+impl Iterator for ColumnsIter {
+ type Item = Entity;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if self.start >= self.end {
+ return None;
+ }
+
+ let col = self.start;
+ self.start += 1;
+
+ Some(Entity::Column(col))
+ }
+}
diff --git a/vendor/tabled/src/settings/object/frame.rs b/vendor/tabled/src/settings/object/frame.rs
new file mode 100644
index 000000000..caeb10640
--- /dev/null
+++ b/vendor/tabled/src/settings/object/frame.rs
@@ -0,0 +1,69 @@
+use crate::{
+ grid::config::Entity,
+ grid::records::{ExactRecords, Records},
+ settings::object::Object,
+};
+
+/// Frame includes cells which are on the edges of each side.
+/// Therefore it's [`Object`] implementation returns a subset of cells which are present in frame.
+#[derive(Debug)]
+pub struct Frame;
+
+impl<I> Object<I> for Frame
+where
+ I: Records + ExactRecords,
+{
+ type Iter = FrameIter;
+
+ fn cells(&self, records: &I) -> Self::Iter {
+ FrameIter::new(records.count_rows(), records.count_columns())
+ }
+}
+
+/// An [`Iterator`] which goes goes over all cell on a frame of a [`Table`].
+///
+/// [`Table`]: crate::Table
+#[derive(Debug)]
+pub struct FrameIter {
+ rows: usize,
+ cols: usize,
+ row: usize,
+ col: usize,
+}
+
+impl FrameIter {
+ const fn new(count_rows: usize, count_columns: usize) -> Self {
+ Self {
+ rows: count_rows,
+ cols: count_columns,
+ row: 0,
+ col: 0,
+ }
+ }
+}
+
+impl Iterator for FrameIter {
+ type Item = Entity;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if self.cols == 0 || self.rows == 0 {
+ return None;
+ }
+
+ if self.row == self.rows {
+ return None;
+ }
+
+ let row = self.row;
+ let col = self.col;
+
+ self.col += 1;
+
+ if self.col == self.cols {
+ self.row += 1;
+ self.col = 0;
+ }
+
+ Some(Entity::Cell(row, col))
+ }
+}
diff --git a/vendor/tabled/src/settings/object/mod.rs b/vendor/tabled/src/settings/object/mod.rs
new file mode 100644
index 000000000..46893c71d
--- /dev/null
+++ b/vendor/tabled/src/settings/object/mod.rs
@@ -0,0 +1,765 @@
+//! This module contains a list of primitives that implement a [`Object`] trait.
+//! They help to locate a necessary segment on a [`Table`].
+//!
+//! [`Table`]: crate::Table
+
+mod cell;
+mod columns;
+mod frame;
+mod rows;
+mod segment;
+pub(crate) mod util;
+
+use std::{collections::HashSet, marker::PhantomData};
+
+use self::segment::SectorCellsIter;
+
+use crate::{
+ grid::config::{Entity, EntityIterator},
+ grid::records::{ExactRecords, Records},
+};
+
+pub use cell::{Cell, EntityOnce};
+pub use columns::{Column, Columns, ColumnsIter, FirstColumn, LastColumn, LastColumnOffset};
+pub use frame::{Frame, FrameIter};
+pub use rows::{FirstRow, LastRow, LastRowOffset, Row, Rows, RowsIter};
+pub use segment::{SectorIter, Segment, SegmentAll};
+
+/// Object helps to locate a necessary part of a [`Table`].
+///
+/// [`Table`]: crate::Table
+pub trait Object<R> {
+ /// An [`Iterator`] which returns a list of cells.
+ type Iter: Iterator<Item = Entity>;
+
+ /// Cells returns a set of coordinates of cells.
+ fn cells(&self, records: &R) -> Self::Iter;
+
+ /// Combines cells.
+ /// It doesn't repeat cells.
+ fn and<O>(self, rhs: O) -> UnionCombination<Self, O, R>
+ where
+ Self: Sized,
+ {
+ UnionCombination::new(self, rhs)
+ }
+
+ /// Excludes rhs cells from this cells.
+ fn not<O>(self, rhs: O) -> DiffCombination<Self, O, R>
+ where
+ Self: Sized,
+ {
+ DiffCombination::new(self, rhs)
+ }
+
+ /// Returns cells which are present in both [`Object`]s only.
+ fn intersect<O>(self, rhs: O) -> IntersectionCombination<Self, O, R>
+ where
+ Self: Sized,
+ {
+ IntersectionCombination::new(self, rhs)
+ }
+
+ /// Returns cells which are not present in target [`Object`].
+ fn inverse(self) -> InversionCombination<Self, R>
+ where
+ Self: Sized,
+ {
+ InversionCombination::new(self)
+ }
+}
+
+/// Combination struct used for chaining [`Object`]'s.
+///
+/// Combines 2 sets of cells into one.
+///
+/// Duplicates are removed from the output set.
+#[derive(Debug)]
+pub struct UnionCombination<L, R, I> {
+ lhs: L,
+ rhs: R,
+ _records: PhantomData<I>,
+}
+
+impl<L, R, I> UnionCombination<L, R, I> {
+ fn new(lhs: L, rhs: R) -> Self {
+ Self {
+ lhs,
+ rhs,
+ _records: PhantomData,
+ }
+ }
+}
+
+impl<I, L, R> Object<I> for UnionCombination<L, R, I>
+where
+ L: Object<I>,
+ R: Object<I>,
+ I: Records + ExactRecords,
+{
+ type Iter = UnionIter<L::Iter, R::Iter>;
+
+ fn cells(&self, records: &I) -> Self::Iter {
+ let lhs = self.lhs.cells(records);
+ let rhs = self.rhs.cells(records);
+
+ UnionIter::new(lhs, rhs, records.count_rows(), records.count_columns())
+ }
+}
+
+/// Difference struct used for chaining [`Object`]'s.
+///
+/// Returns cells from 1st set with removed ones from the 2nd set.
+#[derive(Debug)]
+pub struct DiffCombination<L, R, I> {
+ lhs: L,
+ rhs: R,
+ _records: PhantomData<I>,
+}
+
+impl<L, R, I> DiffCombination<L, R, I> {
+ fn new(lhs: L, rhs: R) -> Self {
+ Self {
+ lhs,
+ rhs,
+ _records: PhantomData,
+ }
+ }
+}
+
+impl<I, L, R> Object<I> for DiffCombination<L, R, I>
+where
+ L: Object<I>,
+ R: Object<I>,
+ I: Records + ExactRecords,
+{
+ type Iter = DiffIter<L::Iter>;
+
+ fn cells(&self, records: &I) -> Self::Iter {
+ let lhs = self.lhs.cells(records);
+ let rhs = self.rhs.cells(records);
+
+ DiffIter::new(lhs, rhs, records.count_rows(), records.count_columns())
+ }
+}
+
+/// Intersection struct used for chaining [`Object`]'s.
+///
+/// Returns cells which are present in 2 sets.
+/// But not in one of them
+#[derive(Debug)]
+pub struct IntersectionCombination<L, R, I> {
+ lhs: L,
+ rhs: R,
+ _records: PhantomData<I>,
+}
+
+impl<L, R, I> IntersectionCombination<L, R, I> {
+ fn new(lhs: L, rhs: R) -> Self {
+ Self {
+ lhs,
+ rhs,
+ _records: PhantomData,
+ }
+ }
+}
+
+impl<I, L, R> Object<I> for IntersectionCombination<L, R, I>
+where
+ L: Object<I>,
+ R: Object<I>,
+ I: Records + ExactRecords,
+{
+ type Iter = IntersectIter<L::Iter>;
+
+ fn cells(&self, records: &I) -> Self::Iter {
+ let lhs = self.lhs.cells(records);
+ let rhs = self.rhs.cells(records);
+
+ IntersectIter::new(lhs, rhs, records.count_rows(), records.count_columns())
+ }
+}
+
+/// Inversion struct used for chaining [`Object`]'s.
+///
+/// Returns cells which are present in 2 sets.
+/// But not in one of them
+#[derive(Debug)]
+pub struct InversionCombination<O, I> {
+ obj: O,
+ _records: PhantomData<I>,
+}
+
+impl<O, I> InversionCombination<O, I> {
+ fn new(obj: O) -> Self {
+ Self {
+ obj,
+ _records: PhantomData,
+ }
+ }
+}
+
+impl<I, O> Object<I> for InversionCombination<O, I>
+where
+ O: Object<I>,
+ I: Records + ExactRecords,
+{
+ type Iter = InversionIter;
+
+ fn cells(&self, records: &I) -> Self::Iter {
+ let obj = self.obj.cells(records);
+
+ InversionIter::new(obj, records.count_rows(), records.count_columns())
+ }
+}
+
+/// An [`Iterator`] which goes over a combination [`Object::Iter`].
+#[derive(Debug)]
+pub struct UnionIter<L, R> {
+ lhs: Option<L>,
+ rhs: R,
+ seen: HashSet<(usize, usize)>,
+ current: Option<EntityIterator>,
+ count_rows: usize,
+ count_cols: usize,
+}
+
+impl<L, R> UnionIter<L, R>
+where
+ L: Iterator<Item = Entity>,
+ R: Iterator<Item = Entity>,
+{
+ fn new(lhs: L, rhs: R, count_rows: usize, count_cols: usize) -> Self {
+ let size = match lhs.size_hint() {
+ (s1, Some(s2)) if s1 == s2 => s1,
+ _ => 0,
+ };
+
+ Self {
+ lhs: Some(lhs),
+ rhs,
+ seen: HashSet::with_capacity(size),
+ current: None,
+ count_rows,
+ count_cols,
+ }
+ }
+}
+
+impl<L, R> Iterator for UnionIter<L, R>
+where
+ L: Iterator<Item = Entity>,
+ R: Iterator<Item = Entity>,
+{
+ type Item = Entity;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if let Some(iter) = self.current.as_mut() {
+ for p in iter.by_ref() {
+ if self.lhs.is_none() && self.seen.contains(&p) {
+ continue;
+ }
+
+ let _ = self.seen.insert(p);
+ return Some(Entity::Cell(p.0, p.1));
+ }
+ }
+
+ if let Some(lhs) = self.lhs.as_mut() {
+ for entity in lhs.by_ref() {
+ let mut iter = entity.iter(self.count_rows, self.count_cols);
+ if let Some(p) = iter.by_ref().next() {
+ let _ = self.seen.insert(p);
+ self.current = Some(iter);
+ return Some(Entity::Cell(p.0, p.1));
+ }
+ }
+
+ self.lhs = None;
+ }
+
+ for entity in self.rhs.by_ref() {
+ let mut iter = entity.iter(self.count_rows, self.count_cols);
+
+ for p in iter.by_ref() {
+ if !self.seen.contains(&p) {
+ let _ = self.seen.insert(p);
+ self.current = Some(iter);
+ return Some(Entity::Cell(p.0, p.1));
+ }
+ }
+ }
+
+ None
+ }
+}
+
+/// An [`Iterator`] which goes over only cells which are present in first [`Object::Iter`] but not second.
+#[derive(Debug)]
+pub struct DiffIter<L> {
+ lhs: L,
+ seen: HashSet<(usize, usize)>,
+ count_rows: usize,
+ count_cols: usize,
+ current: Option<EntityIterator>,
+}
+
+impl<L> DiffIter<L>
+where
+ L: Iterator<Item = Entity>,
+{
+ fn new<R>(lhs: L, rhs: R, count_rows: usize, count_cols: usize) -> Self
+ where
+ R: Iterator<Item = Entity>,
+ {
+ let size = match rhs.size_hint() {
+ (s1, Some(s2)) if s1 == s2 => s1,
+ _ => 0,
+ };
+
+ let mut seen = HashSet::with_capacity(size);
+ for entity in rhs {
+ seen.extend(entity.iter(count_rows, count_cols));
+ }
+
+ Self {
+ lhs,
+ seen,
+ count_rows,
+ count_cols,
+ current: None,
+ }
+ }
+}
+
+impl<L> Iterator for DiffIter<L>
+where
+ L: Iterator<Item = Entity>,
+{
+ type Item = Entity;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if let Some(iter) = self.current.as_mut() {
+ for p in iter.by_ref() {
+ if !self.seen.contains(&p) {
+ return Some(Entity::Cell(p.0, p.1));
+ }
+ }
+ }
+
+ for entity in self.lhs.by_ref() {
+ let mut iter = entity.iter(self.count_rows, self.count_cols);
+
+ for p in iter.by_ref() {
+ if !self.seen.contains(&p) {
+ self.current = Some(iter);
+ return Some(Entity::Cell(p.0, p.1));
+ }
+ }
+ }
+
+ None
+ }
+}
+
+/// An [`Iterator`] which goes goes over cells which are present in both [`Object::Iter`]ators.
+#[derive(Debug)]
+pub struct IntersectIter<L> {
+ lhs: L,
+ seen: HashSet<(usize, usize)>,
+ count_rows: usize,
+ count_cols: usize,
+ current: Option<EntityIterator>,
+}
+
+impl<L> IntersectIter<L>
+where
+ L: Iterator<Item = Entity>,
+{
+ fn new<R>(lhs: L, rhs: R, count_rows: usize, count_cols: usize) -> Self
+ where
+ R: Iterator<Item = Entity>,
+ {
+ let size = match rhs.size_hint() {
+ (s1, Some(s2)) if s1 == s2 => s1,
+ _ => 0,
+ };
+
+ let mut seen = HashSet::with_capacity(size);
+ for entity in rhs {
+ seen.extend(entity.iter(count_rows, count_cols));
+ }
+
+ Self {
+ lhs,
+ seen,
+ count_rows,
+ count_cols,
+ current: None,
+ }
+ }
+}
+
+impl<L> Iterator for IntersectIter<L>
+where
+ L: Iterator<Item = Entity>,
+{
+ type Item = Entity;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if let Some(iter) = self.current.as_mut() {
+ for p in iter.by_ref() {
+ if self.seen.contains(&p) {
+ return Some(Entity::Cell(p.0, p.1));
+ }
+ }
+ }
+
+ for entity in self.lhs.by_ref() {
+ let mut iter = entity.iter(self.count_rows, self.count_cols);
+
+ for p in iter.by_ref() {
+ if self.seen.contains(&p) {
+ self.current = Some(iter);
+ return Some(Entity::Cell(p.0, p.1));
+ }
+ }
+ }
+
+ None
+ }
+}
+
+/// An [`Iterator`] which goes goes over cells which are not present an [`Object::Iter`]ator.
+#[derive(Debug)]
+pub struct InversionIter {
+ all: SectorCellsIter,
+ seen: HashSet<(usize, usize)>,
+}
+
+impl InversionIter {
+ fn new<O>(obj: O, count_rows: usize, count_columns: usize) -> Self
+ where
+ O: Iterator<Item = Entity>,
+ {
+ let size = match obj.size_hint() {
+ (s1, Some(s2)) if s1 == s2 => s1,
+ _ => 0,
+ };
+
+ let mut seen = HashSet::with_capacity(size);
+ for entity in obj {
+ seen.extend(entity.iter(count_rows, count_columns));
+ }
+
+ let all = SectorCellsIter::new(0, count_rows, 0, count_columns);
+
+ Self { all, seen }
+ }
+}
+
+impl Iterator for InversionIter {
+ type Item = Entity;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ for p in self.all.by_ref() {
+ if !self.seen.contains(&p) {
+ return Some(Entity::Cell(p.0, p.1));
+ }
+ }
+
+ None
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use crate::grid::records::vec_records::VecRecords;
+
+ use super::*;
+
+ #[test]
+ fn cell_test() {
+ assert_eq!(vec_cells((0, 0), 2, 3), [Entity::Cell(0, 0)]);
+ assert_eq!(vec_cells((1, 1), 2, 3), [Entity::Cell(1, 1)]);
+ assert_eq!(vec_cells((1, 1), 0, 0), [Entity::Cell(1, 1)]);
+ assert_eq!(vec_cells((1, 100), 2, 3), [Entity::Cell(1, 100)]);
+ assert_eq!(vec_cells((100, 1), 2, 3), [Entity::Cell(100, 1)]);
+ }
+
+ #[test]
+ fn columns_test() {
+ assert_eq!(
+ vec_cells(Columns::new(..), 2, 3),
+ [Entity::Column(0), Entity::Column(1), Entity::Column(2)]
+ );
+ assert_eq!(
+ vec_cells(Columns::new(1..), 2, 3),
+ [Entity::Column(1), Entity::Column(2)]
+ );
+ assert_eq!(vec_cells(Columns::new(2..), 2, 3), [Entity::Column(2)]);
+ assert_eq!(vec_cells(Columns::new(3..), 2, 3), []);
+ assert_eq!(vec_cells(Columns::new(3..), 0, 0), []);
+ assert_eq!(vec_cells(Columns::new(0..1), 2, 3), [Entity::Column(0)]);
+ assert_eq!(vec_cells(Columns::new(1..2), 2, 3), [Entity::Column(1)]);
+ assert_eq!(vec_cells(Columns::new(2..3), 2, 3), [Entity::Column(2)]);
+ assert_eq!(vec_cells(Columns::new(..), 0, 0), []);
+ assert_eq!(vec_cells(Columns::new(..), 2, 0), []);
+ assert_eq!(vec_cells(Columns::new(..), 0, 3), []);
+ }
+
+ #[test]
+ fn first_column_test() {
+ assert_eq!(vec_cells(Columns::first(), 5, 2), [Entity::Column(0)]);
+ assert_eq!(vec_cells(Columns::first(), 0, 0), []);
+ assert_eq!(vec_cells(Columns::first(), 10, 0), []);
+ assert_eq!(vec_cells(Columns::first(), 0, 10), []);
+ }
+
+ #[test]
+ fn last_column_test() {
+ assert_eq!(vec_cells(Columns::last(), 5, 2), [Entity::Column(1)]);
+ assert_eq!(vec_cells(Columns::last(), 5, 29), [Entity::Column(28)]);
+ assert_eq!(vec_cells(Columns::last(), 0, 0), []);
+ assert_eq!(vec_cells(Columns::last(), 10, 0), []);
+ assert_eq!(vec_cells(Columns::last(), 0, 10), []);
+ }
+
+ #[test]
+ fn last_column_sub_test() {
+ assert_eq!(vec_cells(Columns::last(), 5, 2), [Entity::Column(1)]);
+ assert_eq!(vec_cells(Columns::last() - 0, 5, 2), [Entity::Column(1)]);
+ assert_eq!(vec_cells(Columns::last() - 1, 5, 2), [Entity::Column(0)]);
+ assert_eq!(vec_cells(Columns::last() - 2, 5, 2), []);
+ assert_eq!(vec_cells(Columns::last() - 100, 5, 2), []);
+ }
+
+ #[test]
+ fn first_column_add_test() {
+ assert_eq!(vec_cells(Columns::first(), 5, 2), [Entity::Column(0)]);
+ assert_eq!(vec_cells(Columns::first() + 0, 5, 2), [Entity::Column(0)]);
+ assert_eq!(vec_cells(Columns::first() + 1, 5, 2), [Entity::Column(1)]);
+ assert_eq!(vec_cells(Columns::first() + 2, 5, 2), [Entity::Column(2)]);
+ assert_eq!(
+ vec_cells(Columns::first() + 100, 5, 2),
+ [Entity::Column(100)]
+ );
+ }
+
+ #[test]
+ fn rows_test() {
+ assert_eq!(
+ vec_cells(Rows::new(..), 2, 3),
+ [Entity::Row(0), Entity::Row(1)]
+ );
+ assert_eq!(vec_cells(Rows::new(1..), 2, 3), [Entity::Row(1)]);
+ assert_eq!(vec_cells(Rows::new(2..), 2, 3), []);
+ assert_eq!(vec_cells(Rows::new(2..), 0, 0), []);
+ assert_eq!(vec_cells(Rows::new(0..1), 2, 3), [Entity::Row(0)],);
+ assert_eq!(vec_cells(Rows::new(1..2), 2, 3), [Entity::Row(1)],);
+ assert_eq!(vec_cells(Rows::new(..), 0, 0), []);
+ assert_eq!(vec_cells(Rows::new(..), 0, 3), []);
+ assert_eq!(
+ vec_cells(Rows::new(..), 2, 0),
+ [Entity::Row(0), Entity::Row(1)]
+ );
+ }
+
+ #[test]
+ fn last_row_test() {
+ assert_eq!(vec_cells(Rows::last(), 5, 2), [Entity::Row(4)]);
+ assert_eq!(vec_cells(Rows::last(), 100, 2), [Entity::Row(99)]);
+ assert_eq!(vec_cells(Rows::last(), 0, 0), []);
+ assert_eq!(vec_cells(Rows::last(), 5, 0), []);
+ assert_eq!(vec_cells(Rows::last(), 0, 2), []);
+ }
+
+ #[test]
+ fn first_row_test() {
+ assert_eq!(vec_cells(Rows::first(), 5, 2), [Entity::Row(0)]);
+ assert_eq!(vec_cells(Rows::first(), 100, 2), [Entity::Row(0)]);
+ assert_eq!(vec_cells(Rows::first(), 0, 0), []);
+ assert_eq!(vec_cells(Rows::first(), 5, 0), []);
+ assert_eq!(vec_cells(Rows::first(), 0, 2), []);
+ }
+
+ #[test]
+ fn last_row_sub_test() {
+ assert_eq!(vec_cells(Rows::last(), 5, 2), [Entity::Row(4)]);
+ assert_eq!(vec_cells(Rows::last() - 0, 5, 2), [Entity::Row(4)]);
+ assert_eq!(vec_cells(Rows::last() - 1, 5, 2), [Entity::Row(3)]);
+ assert_eq!(vec_cells(Rows::last() - 2, 5, 2), [Entity::Row(2)]);
+ assert_eq!(vec_cells(Rows::last() - 3, 5, 2), [Entity::Row(1)]);
+ assert_eq!(vec_cells(Rows::last() - 4, 5, 2), [Entity::Row(0)]);
+ assert_eq!(vec_cells(Rows::last() - 5, 5, 2), []);
+ assert_eq!(vec_cells(Rows::last() - 100, 5, 2), []);
+ assert_eq!(vec_cells(Rows::last() - 1, 0, 0), []);
+ assert_eq!(vec_cells(Rows::last() - 1, 5, 0), []);
+ assert_eq!(vec_cells(Rows::last() - 1, 0, 2), []);
+ }
+
+ #[test]
+ fn first_row_add_test() {
+ assert_eq!(vec_cells(Rows::first(), 5, 2), [Entity::Row(0)]);
+ assert_eq!(vec_cells(Rows::first() + 0, 5, 2), [Entity::Row(0)]);
+ assert_eq!(vec_cells(Rows::first() + 1, 5, 2), [Entity::Row(1)]);
+ assert_eq!(vec_cells(Rows::first() + 2, 5, 2), [Entity::Row(2)]);
+ assert_eq!(vec_cells(Rows::first() + 3, 5, 2), [Entity::Row(3)]);
+ assert_eq!(vec_cells(Rows::first() + 4, 5, 2), [Entity::Row(4)]);
+ assert_eq!(vec_cells(Rows::first() + 5, 5, 2), [Entity::Row(5)]);
+ assert_eq!(vec_cells(Rows::first() + 100, 5, 2), [Entity::Row(100)]);
+ assert_eq!(vec_cells(Rows::first() + 1, 0, 0), [Entity::Row(1)]);
+ assert_eq!(vec_cells(Rows::first() + 1, 5, 0), [Entity::Row(1)]);
+ assert_eq!(vec_cells(Rows::first() + 1, 0, 2), [Entity::Row(1)]);
+ }
+
+ #[test]
+ fn frame_test() {
+ assert_eq!(
+ vec_cells(Frame, 2, 3),
+ [
+ Entity::Cell(0, 0),
+ Entity::Cell(0, 1),
+ Entity::Cell(0, 2),
+ Entity::Cell(1, 0),
+ Entity::Cell(1, 1),
+ Entity::Cell(1, 2)
+ ]
+ );
+ assert_eq!(vec_cells(Frame, 0, 0), []);
+ assert_eq!(vec_cells(Frame, 2, 0), []);
+ assert_eq!(vec_cells(Frame, 0, 2), []);
+ }
+
+ #[test]
+ fn segment_test() {
+ assert_eq!(
+ vec_cells(Segment::new(.., ..), 2, 3),
+ [
+ Entity::Cell(0, 0),
+ Entity::Cell(0, 1),
+ Entity::Cell(0, 2),
+ Entity::Cell(1, 0),
+ Entity::Cell(1, 1),
+ Entity::Cell(1, 2)
+ ]
+ );
+ assert_eq!(
+ vec_cells(Segment::new(1.., ..), 2, 3),
+ [Entity::Cell(1, 0), Entity::Cell(1, 1), Entity::Cell(1, 2)]
+ );
+ assert_eq!(vec_cells(Segment::new(2.., ..), 2, 3), []);
+
+ assert_eq!(
+ vec_cells(Segment::new(.., 1..), 2, 3),
+ [
+ Entity::Cell(0, 1),
+ Entity::Cell(0, 2),
+ Entity::Cell(1, 1),
+ Entity::Cell(1, 2)
+ ]
+ );
+ assert_eq!(
+ vec_cells(Segment::new(.., 2..), 2, 3),
+ [Entity::Cell(0, 2), Entity::Cell(1, 2)]
+ );
+ assert_eq!(vec_cells(Segment::new(.., 3..), 2, 3), []);
+
+ assert_eq!(
+ vec_cells(Segment::new(1.., 1..), 2, 3),
+ [Entity::Cell(1, 1), Entity::Cell(1, 2)]
+ );
+ assert_eq!(
+ vec_cells(Segment::new(1..2, 1..2), 2, 3),
+ [Entity::Cell(1, 1)]
+ );
+
+ assert_eq!(vec_cells(Segment::new(5.., 5..), 2, 3), []);
+ }
+
+ #[test]
+ fn object_and_test() {
+ assert_eq!(
+ vec_cells(Cell::new(0, 0).and(Cell::new(0, 0)), 2, 3),
+ [Entity::Cell(0, 0)]
+ );
+ assert_eq!(
+ vec_cells(Cell::new(0, 0).and(Cell::new(1, 2)), 2, 3),
+ [Entity::Cell(0, 0), Entity::Cell(1, 2)]
+ );
+ assert_eq!(vec_cells(Cell::new(0, 0).and(Cell::new(1, 2)), 0, 0), []);
+ }
+
+ #[test]
+ fn object_not_test() {
+ assert_eq!(vec_cells(Rows::first().not(Cell::new(0, 0)), 0, 0), []);
+ assert_eq!(vec_cells(Cell::new(0, 0).not(Cell::new(0, 0)), 2, 3), []);
+ assert_eq!(
+ vec_cells(Rows::first().not(Cell::new(0, 0)), 2, 3),
+ [Entity::Cell(0, 1), Entity::Cell(0, 2)]
+ );
+ assert_eq!(
+ vec_cells(Columns::single(1).not(Rows::single(1)), 3, 3),
+ [Entity::Cell(0, 1), Entity::Cell(2, 1)]
+ );
+ assert_eq!(
+ vec_cells(Rows::single(1).not(Columns::single(1)), 3, 3),
+ [Entity::Cell(1, 0), Entity::Cell(1, 2)]
+ );
+ }
+
+ #[test]
+ fn object_intersect_test() {
+ assert_eq!(
+ vec_cells(Rows::first().intersect(Cell::new(0, 0)), 0, 0),
+ []
+ );
+ assert_eq!(
+ vec_cells(Segment::all().intersect(Rows::single(1)), 2, 3),
+ [Entity::Cell(1, 0), Entity::Cell(1, 1), Entity::Cell(1, 2)]
+ );
+ assert_eq!(
+ vec_cells(Cell::new(0, 0).intersect(Cell::new(0, 0)), 2, 3),
+ [Entity::Cell(0, 0)]
+ );
+ assert_eq!(
+ vec_cells(Rows::first().intersect(Cell::new(0, 0)), 2, 3),
+ [Entity::Cell(0, 0)]
+ );
+ // maybe we somehow shall not limit the rows/columns by the max count?
+ assert_eq!(
+ vec_cells(Rows::single(1).intersect(Columns::single(1)), 2, 1),
+ []
+ );
+ }
+
+ #[test]
+ fn object_inverse_test() {
+ assert_eq!(vec_cells(Segment::all().inverse(), 2, 3), []);
+ assert_eq!(
+ vec_cells(Cell::new(0, 0).inverse(), 2, 3),
+ [
+ Entity::Cell(0, 1),
+ Entity::Cell(0, 2),
+ Entity::Cell(1, 0),
+ Entity::Cell(1, 1),
+ Entity::Cell(1, 2)
+ ]
+ );
+ assert_eq!(
+ vec_cells(Rows::first().inverse(), 2, 3),
+ [Entity::Cell(1, 0), Entity::Cell(1, 1), Entity::Cell(1, 2)]
+ );
+ assert_eq!(vec_cells(Rows::first().inverse(), 0, 0), []);
+ }
+
+ fn vec_cells<O: Object<VecRecords<String>>>(
+ o: O,
+ count_rows: usize,
+ count_cols: usize,
+ ) -> Vec<Entity> {
+ let data = vec![vec![String::default(); count_cols]; count_rows];
+ let records = VecRecords::new(data);
+ o.cells(&records).collect::<Vec<_>>()
+ }
+}
diff --git a/vendor/tabled/src/settings/object/rows.rs b/vendor/tabled/src/settings/object/rows.rs
new file mode 100644
index 000000000..b32e79ad5
--- /dev/null
+++ b/vendor/tabled/src/settings/object/rows.rs
@@ -0,0 +1,213 @@
+use std::ops::{Add, RangeBounds, Sub};
+
+use crate::{
+ grid::config::Entity,
+ grid::records::{ExactRecords, Records},
+ settings::object::{cell::EntityOnce, Object},
+};
+
+use super::util::bounds_to_usize;
+
+/// Row denotes a set of cells on given rows on a [`Table`].
+///
+/// [`Table`]: crate::Table
+#[derive(Debug)]
+pub struct Rows<R> {
+ range: R,
+}
+
+impl<R> Rows<R> {
+ /// Returns a new instance of [`Rows`] for a range of rows.
+ ///
+ /// If the boundaries are exceeded it may panic.
+ pub fn new(range: R) -> Self
+ where
+ R: RangeBounds<usize>,
+ {
+ Self { range }
+ }
+
+ pub(crate) const fn get_range(&self) -> &R {
+ &self.range
+ }
+}
+
+impl Rows<()> {
+ /// Returns a new instance of [`Rows`] with a single row.
+ ///
+ /// If the boundaries are exceeded it may panic.
+ pub const fn single(index: usize) -> Row {
+ Row { index }
+ }
+
+ /// Returns a first row [`Object`].
+ ///
+ /// If the table has 0 rows returns an empty set of cells.
+ pub const fn first() -> FirstRow {
+ FirstRow
+ }
+
+ /// Returns a last row [`Object`].
+ ///
+ /// If the table has 0 rows returns an empty set of cells.
+ pub const fn last() -> LastRow {
+ LastRow
+ }
+}
+
+impl<I, R> Object<I> for Rows<R>
+where
+ R: RangeBounds<usize>,
+ I: ExactRecords,
+{
+ type Iter = RowsIter;
+
+ fn cells(&self, records: &I) -> Self::Iter {
+ let start = self.range.start_bound();
+ let end = self.range.end_bound();
+ let max = records.count_rows();
+ let (x, y) = bounds_to_usize(start, end, max);
+
+ RowsIter::new(x, y)
+ }
+}
+
+/// A row which is located by an offset from the first row.
+#[derive(Debug, Clone, Copy)]
+pub struct Row {
+ index: usize,
+}
+
+impl<I> Object<I> for Row {
+ type Iter = EntityOnce;
+
+ fn cells(&self, _: &I) -> Self::Iter {
+ EntityOnce::new(Some(Entity::Row(self.index)))
+ }
+}
+
+impl From<Row> for usize {
+ fn from(val: Row) -> Self {
+ val.index
+ }
+}
+
+/// This structure represents the first row of a [`Table`].
+/// It's often contains headers data.
+///
+/// [`Table`]: crate::Table
+#[derive(Debug)]
+pub struct FirstRow;
+
+impl<I> Object<I> for FirstRow
+where
+ I: Records + ExactRecords,
+{
+ type Iter = EntityOnce;
+
+ fn cells(&self, records: &I) -> Self::Iter {
+ if records.count_columns() == 0 || records.count_rows() == 0 {
+ return EntityOnce::new(None);
+ }
+
+ EntityOnce::new(Some(Entity::Row(0)))
+ }
+}
+
+impl Add<usize> for FirstRow {
+ type Output = Row;
+
+ fn add(self, rhs: usize) -> Self::Output {
+ Row { index: rhs }
+ }
+}
+
+/// This structure represents the last row of a [`Table`].
+///
+/// [`Table`]: crate::Table
+#[derive(Debug)]
+pub struct LastRow;
+
+impl<I> Object<I> for LastRow
+where
+ I: Records + ExactRecords,
+{
+ type Iter = EntityOnce;
+
+ fn cells(&self, records: &I) -> Self::Iter {
+ let count_rows = records.count_rows();
+ if records.count_columns() == 0 || count_rows == 0 {
+ return EntityOnce::new(None);
+ }
+
+ let row = if count_rows == 0 { 0 } else { count_rows - 1 };
+
+ EntityOnce::new(Some(Entity::Row(row)))
+ }
+}
+
+impl Sub<usize> for LastRow {
+ type Output = LastRowOffset;
+
+ fn sub(self, rhs: usize) -> Self::Output {
+ LastRowOffset { offset: rhs }
+ }
+}
+
+/// A row which is located by an offset from the last row.
+#[derive(Debug)]
+pub struct LastRowOffset {
+ offset: usize,
+}
+
+impl<I> Object<I> for LastRowOffset
+where
+ I: Records + ExactRecords,
+{
+ type Iter = EntityOnce;
+
+ fn cells(&self, records: &I) -> Self::Iter {
+ let count_rows = records.count_rows();
+ if records.count_columns() == 0 || count_rows == 0 {
+ return EntityOnce::new(None);
+ }
+
+ let row = if count_rows == 0 { 0 } else { count_rows - 1 };
+ if self.offset > row {
+ return EntityOnce::new(None);
+ }
+
+ let row = row - self.offset;
+ EntityOnce::new(Some(Entity::Row(row)))
+ }
+}
+
+/// An [`Iterator`] which goes goes over all rows of a [`Table`].
+///
+/// [`Table`]: crate::Table
+#[derive(Debug)]
+pub struct RowsIter {
+ start: usize,
+ end: usize,
+}
+
+impl RowsIter {
+ const fn new(start: usize, end: usize) -> Self {
+ Self { start, end }
+ }
+}
+
+impl Iterator for RowsIter {
+ type Item = Entity;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if self.start >= self.end {
+ return None;
+ }
+
+ let col = self.start;
+ self.start += 1;
+
+ Some(Entity::Row(col))
+ }
+}
diff --git a/vendor/tabled/src/settings/object/segment.rs b/vendor/tabled/src/settings/object/segment.rs
new file mode 100644
index 000000000..9b59ada47
--- /dev/null
+++ b/vendor/tabled/src/settings/object/segment.rs
@@ -0,0 +1,151 @@
+use std::ops::{RangeBounds, RangeFull};
+
+use crate::{
+ grid::config::Entity,
+ grid::records::{ExactRecords, Records},
+ settings::object::{cell::EntityOnce, Object},
+};
+
+use super::util::bounds_to_usize;
+
+/// This structure represents a sub table of [`Table`].
+///
+/// [`Table`]: crate::Table
+#[derive(Debug)]
+pub struct Segment<C, R> {
+ columns: C,
+ rows: R,
+}
+
+impl Segment<RangeFull, RangeFull> {
+ /// Returns a table segment on which are present all cells.
+ pub fn all() -> SegmentAll {
+ SegmentAll
+ }
+}
+
+impl<C, R> Segment<C, R>
+where
+ C: RangeBounds<usize>,
+ R: RangeBounds<usize>,
+{
+ /// This function builds a [`Segment`].
+ pub fn new(rows: R, columns: C) -> Self {
+ Self { columns, rows }
+ }
+}
+
+impl<I, C, R> Object<I> for Segment<C, R>
+where
+ C: RangeBounds<usize>,
+ R: RangeBounds<usize>,
+ I: Records + ExactRecords,
+{
+ type Iter = SectorIter;
+
+ fn cells(&self, records: &I) -> Self::Iter {
+ let start = self.rows.start_bound();
+ let end = self.rows.end_bound();
+ let max = records.count_rows();
+ let (rows_start, rows_end) = bounds_to_usize(start, end, max);
+
+ let start = self.columns.start_bound();
+ let end = self.columns.end_bound();
+ let max = records.count_columns();
+ let (cols_start, cols_end) = bounds_to_usize(start, end, max);
+
+ SectorIter::new(rows_start, rows_end, cols_start, cols_end)
+ }
+}
+
+/// This is a segment which contains all cells on the table.
+///
+/// Can be created from [`Segment::all`].
+#[derive(Debug)]
+pub struct SegmentAll;
+
+impl<I> Object<I> for SegmentAll {
+ type Iter = EntityOnce;
+
+ fn cells(&self, _: &I) -> Self::Iter {
+ EntityOnce::new(Some(Entity::Global))
+ }
+}
+
+/// An [`Iterator`] which goes goes over all cell in a sector in a [`Table`].
+///
+/// [`Table`]: crate::Table
+#[derive(Debug)]
+pub struct SectorIter {
+ iter: SectorCellsIter,
+}
+
+impl SectorIter {
+ const fn new(rows_start: usize, rows_end: usize, cols_start: usize, cols_end: usize) -> Self {
+ Self {
+ iter: SectorCellsIter::new(rows_start, rows_end, cols_start, cols_end),
+ }
+ }
+}
+
+impl Iterator for SectorIter {
+ type Item = Entity;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ let (row, col) = self.iter.next()?;
+ Some(Entity::Cell(row, col))
+ }
+}
+
+#[derive(Debug)]
+pub(crate) struct SectorCellsIter {
+ rows_end: usize,
+ cols_start: usize,
+ cols_end: usize,
+ row: usize,
+ col: usize,
+}
+
+impl SectorCellsIter {
+ /// Create an iterator from 1st row to last from 1st col to last.
+ pub(crate) const fn new(
+ rows_start: usize,
+ rows_end: usize,
+ cols_start: usize,
+ cols_end: usize,
+ ) -> Self {
+ Self {
+ rows_end,
+ cols_start,
+ cols_end,
+ row: rows_start,
+ col: cols_start,
+ }
+ }
+}
+
+impl Iterator for SectorCellsIter {
+ type Item = (usize, usize);
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if self.row >= self.rows_end {
+ return None;
+ }
+
+ if self.col >= self.cols_end {
+ return None;
+ }
+
+ let row = self.row;
+ let col = self.col;
+
+ self.col += 1;
+
+ if self.col == self.cols_end {
+ self.row += 1;
+ self.col = self.cols_start;
+ }
+
+ Some((row, col))
+ }
+}
diff --git a/vendor/tabled/src/settings/object/util.rs b/vendor/tabled/src/settings/object/util.rs
new file mode 100644
index 000000000..94ca20e86
--- /dev/null
+++ b/vendor/tabled/src/settings/object/util.rs
@@ -0,0 +1,22 @@
+use std::ops::Bound;
+
+/// Converts a range bound to its indexes.
+pub(super) fn bounds_to_usize(
+ left: Bound<&usize>,
+ right: Bound<&usize>,
+ count_elements: usize,
+) -> (usize, usize) {
+ match (left, right) {
+ (Bound::Included(x), Bound::Included(y)) => (*x, y + 1),
+ (Bound::Included(x), Bound::Excluded(y)) => (*x, *y),
+ (Bound::Included(x), Bound::Unbounded) => (*x, count_elements),
+ (Bound::Unbounded, Bound::Unbounded) => (0, count_elements),
+ (Bound::Unbounded, Bound::Included(y)) => (0, y + 1),
+ (Bound::Unbounded, Bound::Excluded(y)) => (0, *y),
+ (Bound::Excluded(_), Bound::Unbounded)
+ | (Bound::Excluded(_), Bound::Included(_))
+ | (Bound::Excluded(_), Bound::Excluded(_)) => {
+ unreachable!("A start bound can't be excluded")
+ }
+ }
+}
diff --git a/vendor/tabled/src/settings/padding/mod.rs b/vendor/tabled/src/settings/padding/mod.rs
new file mode 100644
index 000000000..af343b3cb
--- /dev/null
+++ b/vendor/tabled/src/settings/padding/mod.rs
@@ -0,0 +1,164 @@
+//! This module contains a [`Padding`] setting of a cell on a [`Table`].
+//!
+//! # Example
+//!
+#![cfg_attr(feature = "std", doc = "```")]
+#![cfg_attr(not(feature = "std"), doc = "```ignore")]
+//! use tabled::{Table, settings::{Padding, Style, Modify, object::Cell}};
+//!
+//! let table = Table::new("2022".chars())
+//! .with(Style::modern())
+//! .with(Modify::new((2, 0)).with(Padding::new(1, 1, 2, 2)))
+//! .to_string();
+//!
+//! assert_eq!(
+//! table,
+//! concat!(
+//! "┌──────â”\n",
+//! "│ char │\n",
+//! "├──────┤\n",
+//! "│ 2 │\n",
+//! "├──────┤\n",
+//! "│ │\n",
+//! "│ │\n",
+//! "│ 0 │\n",
+//! "│ │\n",
+//! "│ │\n",
+//! "├──────┤\n",
+//! "│ 2 │\n",
+//! "├──────┤\n",
+//! "│ 2 │\n",
+//! "└──────┘",
+//! ),
+//! );
+//! ```
+//!
+//! [`Table`]: crate::Table
+
+use crate::{
+ grid::{
+ color::StaticColor,
+ config::{CompactConfig, CompactMultilineConfig},
+ config::{Indent, Sides},
+ },
+ settings::TableOption,
+};
+
+#[cfg(feature = "std")]
+use crate::grid::{color::AnsiColor, config::ColoredConfig, config::Entity};
+#[cfg(feature = "std")]
+use crate::settings::CellOption;
+
+/// Padding is responsible for a left/right/top/bottom inner indent of a particular cell.
+///
+#[cfg_attr(feature = "std", doc = "```")]
+#[cfg_attr(not(feature = "std"), doc = "```ignore")]
+/// # use tabled::{settings::{Style, Padding, object::Rows, Modify}, Table};
+/// # let data: Vec<&'static str> = Vec::new();
+/// let table = Table::new(&data).with(Modify::new(Rows::single(0)).with(Padding::new(0, 0, 1, 1).fill('>', '<', '^', 'V')));
+/// ```
+#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub struct Padding<C = StaticColor> {
+ indent: Sides<Indent>,
+ colors: Option<Sides<C>>,
+}
+
+impl Padding {
+ /// Construct's an Padding object.
+ ///
+ /// It uses space(' ') as a default fill character.
+ /// To set a custom character you can use [`Padding::fill`] function.
+ pub const fn new(left: usize, right: usize, top: usize, bottom: usize) -> Self {
+ Self {
+ indent: Sides::new(
+ Indent::spaced(left),
+ Indent::spaced(right),
+ Indent::spaced(top),
+ Indent::spaced(bottom),
+ ),
+ colors: None,
+ }
+ }
+
+ /// Construct's an Padding object with all sides set to 0.
+ ///
+ /// It uses space(' ') as a default fill character.
+ /// To set a custom character you can use [`Padding::fill`] function.
+ pub const fn zero() -> Self {
+ Self::new(0, 0, 0, 0)
+ }
+}
+
+impl<Color> Padding<Color> {
+ /// The function, sets a characters for the padding on an each side.
+ pub const fn fill(mut self, left: char, right: char, top: char, bottom: char) -> Self {
+ self.indent.left.fill = left;
+ self.indent.right.fill = right;
+ self.indent.top.fill = top;
+ self.indent.bottom.fill = bottom;
+ self
+ }
+
+ /// The function, sets a characters for the padding on an each side.
+ pub fn colorize<C>(self, left: C, right: C, top: C, bottom: C) -> Padding<C> {
+ Padding {
+ indent: self.indent,
+ colors: Some(Sides::new(left, right, top, bottom)),
+ }
+ }
+}
+
+#[cfg(feature = "std")]
+impl<R, C> CellOption<R, ColoredConfig> for Padding<C>
+where
+ C: Into<AnsiColor<'static>> + Clone,
+{
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, entity: Entity) {
+ let indent = self.indent;
+ let pad = Sides::new(indent.left, indent.right, indent.top, indent.bottom);
+ cfg.set_padding(entity, pad);
+
+ if let Some(colors) = &self.colors {
+ let pad = Sides::new(
+ Some(colors.left.clone().into()),
+ Some(colors.right.clone().into()),
+ Some(colors.top.clone().into()),
+ Some(colors.bottom.clone().into()),
+ );
+ cfg.set_padding_color(entity, pad);
+ }
+ }
+}
+
+#[cfg(feature = "std")]
+impl<R, D, C> TableOption<R, D, ColoredConfig> for Padding<C>
+where
+ C: Into<AnsiColor<'static>> + Clone,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ <Self as CellOption<R, ColoredConfig>>::change(self, records, cfg, Entity::Global)
+ }
+}
+
+impl<R, D, C> TableOption<R, D, CompactConfig> for Padding<C>
+where
+ C: Into<StaticColor> + Clone,
+{
+ fn change(self, _: &mut R, cfg: &mut CompactConfig, _: &mut D) {
+ *cfg = cfg.set_padding(self.indent);
+
+ if let Some(c) = self.colors {
+ let colors = Sides::new(c.left.into(), c.right.into(), c.top.into(), c.bottom.into());
+ *cfg = cfg.set_padding_color(colors);
+ }
+ }
+}
+
+impl<R, D, C> TableOption<R, D, CompactMultilineConfig> for Padding<C>
+where
+ C: Into<StaticColor> + Clone,
+{
+ fn change(self, records: &mut R, cfg: &mut CompactMultilineConfig, dimension: &mut D) {
+ self.change(records, cfg.as_mut(), dimension)
+ }
+}
diff --git a/vendor/tabled/src/settings/panel/footer.rs b/vendor/tabled/src/settings/panel/footer.rs
new file mode 100644
index 000000000..8d16481cf
--- /dev/null
+++ b/vendor/tabled/src/settings/panel/footer.rs
@@ -0,0 +1,32 @@
+use crate::{
+ grid::config::ColoredConfig,
+ grid::records::{ExactRecords, Records, RecordsMut, Resizable},
+ settings::TableOption,
+};
+
+use super::Panel;
+
+/// Footer renders a [`Panel`] at the bottom.
+/// See [`Panel`].
+#[derive(Debug)]
+pub struct Footer<S>(S);
+
+impl<S> Footer<S> {
+ /// Creates a new object.
+ pub fn new(text: S) -> Self
+ where
+ S: AsRef<str>,
+ {
+ Self(text)
+ }
+}
+
+impl<S, R, D> TableOption<R, D, ColoredConfig> for Footer<S>
+where
+ S: AsRef<str>,
+ R: Records + ExactRecords + Resizable + RecordsMut<String>,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, dimension: &mut D) {
+ Panel::horizontal(records.count_rows(), self.0.as_ref()).change(records, cfg, dimension);
+ }
+}
diff --git a/vendor/tabled/src/settings/panel/header.rs b/vendor/tabled/src/settings/panel/header.rs
new file mode 100644
index 000000000..e9d398cb5
--- /dev/null
+++ b/vendor/tabled/src/settings/panel/header.rs
@@ -0,0 +1,32 @@
+use crate::{
+ grid::config::ColoredConfig,
+ grid::records::{ExactRecords, Records, RecordsMut, Resizable},
+ settings::TableOption,
+};
+
+use super::Panel;
+
+/// Header inserts a [`Panel`] at the top.
+/// See [`Panel`].
+#[derive(Debug)]
+pub struct Header<S>(S);
+
+impl<S> Header<S> {
+ /// Creates a new object.
+ pub fn new(text: S) -> Self
+ where
+ S: AsRef<str>,
+ {
+ Self(text)
+ }
+}
+
+impl<S, R, D> TableOption<R, D, ColoredConfig> for Header<S>
+where
+ S: AsRef<str>,
+ R: Records + ExactRecords + Resizable + RecordsMut<String>,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, dimension: &mut D) {
+ Panel::horizontal(0, self.0.as_ref()).change(records, cfg, dimension);
+ }
+}
diff --git a/vendor/tabled/src/settings/panel/horizontal_panel.rs b/vendor/tabled/src/settings/panel/horizontal_panel.rs
new file mode 100644
index 000000000..d5871d720
--- /dev/null
+++ b/vendor/tabled/src/settings/panel/horizontal_panel.rs
@@ -0,0 +1,80 @@
+use crate::{
+ grid::config::{ColoredConfig, SpannedConfig},
+ grid::records::{ExactRecords, Records, RecordsMut, Resizable},
+ settings::TableOption,
+};
+
+/// A horizontal/column span from 0 to a count rows.
+#[derive(Debug)]
+pub struct HorizontalPanel<S> {
+ text: S,
+ row: usize,
+}
+
+impl<S> HorizontalPanel<S> {
+ /// Creates a new horizontal panel.
+ pub fn new(row: usize, text: S) -> Self {
+ Self { row, text }
+ }
+}
+
+impl<S, R, D> TableOption<R, D, ColoredConfig> for HorizontalPanel<S>
+where
+ S: AsRef<str>,
+ R: Records + ExactRecords + Resizable + RecordsMut<String>,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let count_rows = records.count_rows();
+ let count_cols = records.count_columns();
+
+ if self.row > count_rows {
+ return;
+ }
+
+ let is_intersect_vertical_span = (0..records.count_columns())
+ .any(|col| cfg.is_cell_covered_by_row_span((self.row, col)));
+ if is_intersect_vertical_span {
+ return;
+ }
+
+ move_rows_aside(records, self.row);
+ move_row_spans(cfg, self.row);
+
+ let text = self.text.as_ref().to_owned();
+ records.set((self.row, 0), text);
+
+ cfg.set_column_span((self.row, 0), count_cols);
+ }
+}
+
+fn move_rows_aside<R: ExactRecords + Resizable>(records: &mut R, row: usize) {
+ records.push_row();
+
+ let count_rows = records.count_rows();
+
+ let shift_count = count_rows - row;
+ for i in 1..shift_count {
+ let row = count_rows - i;
+ records.swap_row(row, row - 1);
+ }
+}
+
+fn move_row_spans(cfg: &mut SpannedConfig, target_row: usize) {
+ for ((row, col), span) in cfg.get_column_spans() {
+ if row < target_row {
+ continue;
+ }
+
+ cfg.set_column_span((row, col), 1);
+ cfg.set_column_span((row + 1, col), span);
+ }
+
+ for ((row, col), span) in cfg.get_row_spans() {
+ if row < target_row {
+ continue;
+ }
+
+ cfg.set_row_span((row, col), 1);
+ cfg.set_row_span((row + 1, col), span);
+ }
+}
diff --git a/vendor/tabled/src/settings/panel/mod.rs b/vendor/tabled/src/settings/panel/mod.rs
new file mode 100644
index 000000000..e4e819b6c
--- /dev/null
+++ b/vendor/tabled/src/settings/panel/mod.rs
@@ -0,0 +1,127 @@
+//! This module contains primitives to create a spread row.
+//! Ultimately it is a cell with a span set to a number of columns on the [`Table`].
+//!
+//! You can use a [`Span`] to set a custom span.
+//!
+//! # Example
+//!
+//! ```
+//! use tabled::{Table, settings::Panel};
+//!
+//! let data = [[1, 2, 3], [4, 5, 6]];
+//!
+//! let table = Table::new(data)
+//! .with(Panel::vertical(1, "S\np\nl\ni\nt"))
+//! .with(Panel::header("Numbers"))
+//! .to_string();
+//!
+//! println!("{}", table);
+//!
+//! assert_eq!(
+//! table,
+//! concat!(
+//! "+---+---+---+---+\n",
+//! "| Numbers |\n",
+//! "+---+---+---+---+\n",
+//! "| 0 | S | 1 | 2 |\n",
+//! "+---+ p +---+---+\n",
+//! "| 1 | l | 2 | 3 |\n",
+//! "+---+ i +---+---+\n",
+//! "| 4 | t | 5 | 6 |\n",
+//! "+---+---+---+---+",
+//! )
+//! )
+//! ```
+//!
+//! [`Table`]: crate::Table
+//! [`Span`]: crate::settings::span::Span
+
+mod footer;
+mod header;
+mod horizontal_panel;
+mod vertical_panel;
+
+pub use footer::Footer;
+pub use header::Header;
+pub use horizontal_panel::HorizontalPanel;
+pub use vertical_panel::VerticalPanel;
+
+/// Panel allows to add a Row which has 1 continues Cell to a [`Table`].
+///
+/// See `examples/panel.rs`.
+///
+/// [`Table`]: crate::Table
+#[derive(Debug)]
+pub struct Panel;
+
+impl Panel {
+ /// Creates an empty vertical row at given index.
+ ///
+ /// ```
+ /// use tabled::{settings::Panel, Table};
+ ///
+ /// let data = [[1, 2, 3], [4, 5, 6]];
+ ///
+ /// let table = Table::new(data)
+ /// .with(Panel::vertical(1, "Tabled Releases"))
+ /// .to_string();
+ ///
+ /// println!("{}", table);
+ ///
+ /// assert_eq!(
+ /// table,
+ /// concat!(
+ /// "+---+-----------------+---+---+\n",
+ /// "| 0 | Tabled Releases | 1 | 2 |\n",
+ /// "+---+ +---+---+\n",
+ /// "| 1 | | 2 | 3 |\n",
+ /// "+---+ +---+---+\n",
+ /// "| 4 | | 5 | 6 |\n",
+ /// "+---+-----------------+---+---+",
+ /// )
+ /// )
+ /// ```
+ pub fn vertical<S: AsRef<str>>(column: usize, text: S) -> VerticalPanel<S> {
+ VerticalPanel::new(column, text)
+ }
+
+ /// Creates an empty horizontal row at given index.
+ ///
+ /// ```
+ /// use tabled::{Table, settings::Panel};
+ ///
+ /// let data = [[1, 2, 3], [4, 5, 6]];
+ ///
+ /// let table = Table::new(data)
+ /// .with(Panel::vertical(1, ""))
+ /// .to_string();
+ ///
+ /// println!("{}", table);
+ ///
+ /// assert_eq!(
+ /// table,
+ /// concat!(
+ /// "+---+--+---+---+\n",
+ /// "| 0 | | 1 | 2 |\n",
+ /// "+---+ +---+---+\n",
+ /// "| 1 | | 2 | 3 |\n",
+ /// "+---+ +---+---+\n",
+ /// "| 4 | | 5 | 6 |\n",
+ /// "+---+--+---+---+",
+ /// )
+ /// )
+ /// ```
+ pub fn horizontal<S: AsRef<str>>(row: usize, text: S) -> HorizontalPanel<S> {
+ HorizontalPanel::new(row, text)
+ }
+
+ /// Creates an horizontal row at first row.
+ pub fn header<S: AsRef<str>>(text: S) -> Header<S> {
+ Header::new(text)
+ }
+
+ /// Creates an horizontal row at last row.
+ pub fn footer<S: AsRef<str>>(text: S) -> Footer<S> {
+ Footer::new(text)
+ }
+}
diff --git a/vendor/tabled/src/settings/panel/vertical_panel.rs b/vendor/tabled/src/settings/panel/vertical_panel.rs
new file mode 100644
index 000000000..ddc0a562b
--- /dev/null
+++ b/vendor/tabled/src/settings/panel/vertical_panel.rs
@@ -0,0 +1,83 @@
+use crate::{
+ grid::config::{ColoredConfig, SpannedConfig},
+ grid::records::{ExactRecords, Records, RecordsMut, Resizable},
+ settings::TableOption,
+};
+
+/// A vertical/row span from 0 to a count columns.
+#[derive(Debug)]
+pub struct VerticalPanel<S> {
+ text: S,
+ col: usize,
+}
+
+impl<S> VerticalPanel<S> {
+ /// Creates a new vertical panel.
+ pub fn new(col: usize, text: S) -> Self
+ where
+ S: AsRef<str>,
+ {
+ Self { text, col }
+ }
+}
+
+impl<S, R, D> TableOption<R, D, ColoredConfig> for VerticalPanel<S>
+where
+ S: AsRef<str>,
+ R: Records + ExactRecords + Resizable + RecordsMut<String>,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let count_rows = records.count_rows();
+ let count_cols = records.count_columns();
+
+ if self.col > count_cols {
+ return;
+ }
+
+ let is_intersect_horizontal_span = (0..=records.count_rows())
+ .any(|row| cfg.is_cell_covered_by_column_span((row, self.col)));
+
+ if is_intersect_horizontal_span {
+ return;
+ }
+
+ move_columns_aside(records, self.col);
+ move_column_spans(cfg, self.col);
+
+ let text = self.text.as_ref().to_owned();
+ records.set((0, self.col), text);
+
+ cfg.set_row_span((0, self.col), count_rows);
+ }
+}
+
+fn move_columns_aside<R: Records + Resizable>(records: &mut R, column: usize) {
+ records.push_column();
+
+ let count_columns = records.count_columns();
+ let shift_count = count_columns - column;
+ for i in 1..shift_count {
+ let col = count_columns - i;
+ records.swap_column(col, col - 1);
+ }
+}
+
+fn move_column_spans(cfg: &mut SpannedConfig, target_column: usize) {
+ for ((row, col), span) in cfg.get_column_spans() {
+ if col < target_column {
+ continue;
+ }
+
+ cfg.set_column_span((row, col), 1);
+ cfg.set_column_span((row, col + 1), span);
+ }
+
+ for ((row, col), span) in cfg.get_row_spans() {
+ if col < target_column {
+ continue;
+ }
+
+ cfg.set_row_span((row, col), 1);
+ cfg.set_row_span((row, col + 1), span);
+ }
+}
diff --git a/vendor/tabled/src/settings/peaker/mod.rs b/vendor/tabled/src/settings/peaker/mod.rs
new file mode 100644
index 000000000..a49796b02
--- /dev/null
+++ b/vendor/tabled/src/settings/peaker/mod.rs
@@ -0,0 +1,94 @@
+//! The module contains [`Peaker`] trait and its implementations to be used in [`Height`] and [`Width`].
+//!
+//! [`Width`]: crate::settings::width::Width
+//! [`Height`]: crate::settings::height::Height
+
+/// A strategy of width function.
+/// It determines the order how the function is applied.
+pub trait Peaker {
+ /// Creates a new instance.
+ fn create() -> Self;
+ /// This function returns a column index which will be changed.
+ /// Or `None` if no changes are necessary.
+ fn peak(&mut self, min_widths: &[usize], widths: &[usize]) -> Option<usize>;
+}
+
+/// A Peaker which goes over column 1 by 1.
+#[derive(Debug, Default, Clone)]
+pub struct PriorityNone {
+ i: usize,
+}
+
+impl Peaker for PriorityNone {
+ fn create() -> Self {
+ Self { i: 0 }
+ }
+
+ fn peak(&mut self, _: &[usize], widths: &[usize]) -> Option<usize> {
+ let mut i = self.i;
+ let mut count_empty = 0;
+ while widths[i] == 0 {
+ i += 1;
+ if i >= widths.len() {
+ i = 0;
+ }
+
+ count_empty += 1;
+ if count_empty == widths.len() {
+ return None;
+ }
+ }
+
+ let col = i;
+
+ i += 1;
+ if i >= widths.len() {
+ i = 0;
+ }
+
+ self.i = i;
+
+ Some(col)
+ }
+}
+
+/// A Peaker which goes over the biggest column first.
+#[derive(Debug, Default, Clone)]
+pub struct PriorityMax;
+
+impl Peaker for PriorityMax {
+ fn create() -> Self {
+ Self
+ }
+
+ fn peak(&mut self, _: &[usize], widths: &[usize]) -> Option<usize> {
+ let col = (0..widths.len()).max_by_key(|&i| widths[i]).unwrap();
+ if widths[col] == 0 {
+ None
+ } else {
+ Some(col)
+ }
+ }
+}
+
+/// A Peaker which goes over the smallest column first.
+#[derive(Debug, Default, Clone)]
+pub struct PriorityMin;
+
+impl Peaker for PriorityMin {
+ fn create() -> Self {
+ Self
+ }
+
+ fn peak(&mut self, min_widths: &[usize], widths: &[usize]) -> Option<usize> {
+ let col = (0..widths.len())
+ .filter(|&i| min_widths.is_empty() || widths[i] > min_widths[i])
+ .min_by_key(|&i| widths[i])
+ .unwrap();
+ if widths[col] == 0 {
+ None
+ } else {
+ Some(col)
+ }
+ }
+}
diff --git a/vendor/tabled/src/settings/rotate/mod.rs b/vendor/tabled/src/settings/rotate/mod.rs
new file mode 100644
index 000000000..426417190
--- /dev/null
+++ b/vendor/tabled/src/settings/rotate/mod.rs
@@ -0,0 +1,155 @@
+//! This module contains a [`Rotate`] primitive which can be used in order to rotate [`Table`].
+//!
+//! It's also possible to transpose the table at the point of construction.
+//! See [`Builder::index`].
+//!
+//! # Example
+//!
+#![cfg_attr(feature = "std", doc = "```")]
+#![cfg_attr(not(feature = "std"), doc = "```ignore")]
+//! use tabled::{Table, settings::Rotate};
+//!
+//! let data = [[1, 2, 3], [4, 5, 6]];
+//!
+//! let table = Table::new(data).with(Rotate::Left).to_string();
+//!
+//! assert_eq!(
+//! table,
+//! concat!(
+//! "+---+---+---+\n",
+//! "| 2 | 3 | 6 |\n",
+//! "+---+---+---+\n",
+//! "| 1 | 2 | 5 |\n",
+//! "+---+---+---+\n",
+//! "| 0 | 1 | 4 |\n",
+//! "+---+---+---+",
+//! )
+//! );
+//! ```
+//!
+//! [`Table`]: crate::Table
+//! [`Builder::index`]: crate::builder::Builder::index
+
+// use core::cmp::max;
+use core::cmp::max;
+
+use crate::{
+ grid::records::{ExactRecords, Records, Resizable},
+ settings::TableOption,
+};
+
+/// Rotate can be used to rotate a table by 90 degrees.
+#[derive(Debug)]
+pub enum Rotate {
+ /// Rotate [`Table`] to the left.
+ ///
+ /// [`Table`]: crate::Table
+ Left,
+ /// Rotate [`Table`] to the right.
+ ///
+ /// [`Table`]: crate::Table
+ Right,
+ /// Rotate [`Table`] to the top.
+ ///
+ /// So the top becomes the bottom.
+ ///
+ /// [`Table`]: crate::Table
+ Top,
+ /// Rotate [`Table`] to the bottom.
+ ///
+ /// So the top becomes the bottom.
+ ///
+ /// [`Table`]: crate::Table
+ Bottom,
+}
+
+impl<R, D, C> TableOption<R, D, C> for Rotate
+where
+ R: Records + ExactRecords + Resizable,
+{
+ fn change(self, records: &mut R, _: &mut C, _: &mut D) {
+ let count_rows = records.count_rows();
+ let count_cols = records.count_columns();
+
+ match self {
+ Self::Left => {
+ let size = max(count_rows, count_cols);
+
+ {
+ for _ in count_rows..size {
+ records.push_row();
+ }
+
+ for _ in count_cols..size {
+ records.push_column();
+ }
+ }
+
+ for col in 0..size {
+ for row in col..size {
+ records.swap((col, row), (row, col));
+ }
+ }
+
+ for row in 0..count_cols / 2 {
+ records.swap_row(row, count_cols - row - 1);
+ }
+
+ {
+ for (shift, row) in (count_rows..size).enumerate() {
+ let row = row - shift;
+ records.remove_column(row);
+ }
+
+ for (shift, col) in (count_cols..size).enumerate() {
+ let col = col - shift;
+ records.remove_row(col);
+ }
+ }
+ }
+ Self::Right => {
+ let size = max(count_rows, count_cols);
+
+ {
+ for _ in count_rows..size {
+ records.push_row();
+ }
+
+ for _ in count_cols..size {
+ records.push_column();
+ }
+ }
+
+ for col in 0..size {
+ for row in col..size {
+ records.swap((col, row), (row, col));
+ }
+ }
+
+ for col in 0..count_rows / 2 {
+ records.swap_column(col, count_rows - col - 1);
+ }
+
+ {
+ for (shift, row) in (count_rows..size).enumerate() {
+ let row = row - shift;
+ records.remove_column(row);
+ }
+
+ for (shift, col) in (count_cols..size).enumerate() {
+ let col = col - shift;
+ records.remove_row(col);
+ }
+ }
+ }
+ Self::Bottom | Self::Top => {
+ for row in 0..count_rows / 2 {
+ for col in 0..count_cols {
+ let last_row = count_rows - row - 1;
+ records.swap((last_row, col), (row, col));
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/vendor/tabled/src/settings/settings_list.rs b/vendor/tabled/src/settings/settings_list.rs
new file mode 100644
index 000000000..dc8aec179
--- /dev/null
+++ b/vendor/tabled/src/settings/settings_list.rs
@@ -0,0 +1,71 @@
+use crate::settings::TableOption;
+
+#[cfg(feature = "std")]
+use crate::grid::config::Entity;
+#[cfg(feature = "std")]
+use crate::settings::CellOption;
+
+/// Settings is a combinator of [`TableOption`]s.
+#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub struct Settings<A = EmptySettings, B = EmptySettings>(A, B);
+
+impl Default for Settings<EmptySettings, EmptySettings> {
+ fn default() -> Self {
+ Self(EmptySettings, EmptySettings)
+ }
+}
+
+impl Settings<(), ()> {
+ /// Creates an empty list.
+ pub const fn empty() -> Settings<EmptySettings, EmptySettings> {
+ Settings(EmptySettings, EmptySettings)
+ }
+}
+
+impl<A, B> Settings<A, B> {
+ /// Creates a new combinator.
+ pub const fn new(settings1: A, settings2: B) -> Settings<A, B> {
+ Settings(settings1, settings2)
+ }
+
+ /// Add an option to a combinator.
+ pub const fn with<C>(self, settings: C) -> Settings<Self, C> {
+ Settings(self, settings)
+ }
+}
+
+#[cfg(feature = "std")]
+impl<R, C, A, B> CellOption<R, C> for Settings<A, B>
+where
+ A: CellOption<R, C>,
+ B: CellOption<R, C>,
+{
+ fn change(self, records: &mut R, cfg: &mut C, entity: Entity) {
+ self.0.change(records, cfg, entity);
+ self.1.change(records, cfg, entity);
+ }
+}
+
+impl<R, D, C, A, B> TableOption<R, D, C> for Settings<A, B>
+where
+ A: TableOption<R, D, C>,
+ B: TableOption<R, D, C>,
+{
+ fn change(self, records: &mut R, cfg: &mut C, dims: &mut D) {
+ self.0.change(records, cfg, dims);
+ self.1.change(records, cfg, dims);
+ }
+}
+
+/// A marker structure to be able to create an empty [`Settings`].
+#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub struct EmptySettings;
+
+#[cfg(feature = "std")]
+impl<R, C> CellOption<R, C> for EmptySettings {
+ fn change(self, _: &mut R, _: &mut C, _: Entity) {}
+}
+
+impl<R, D, C> TableOption<R, D, C> for EmptySettings {
+ fn change(self, _: &mut R, _: &mut C, _: &mut D) {}
+}
diff --git a/vendor/tabled/src/settings/shadow/mod.rs b/vendor/tabled/src/settings/shadow/mod.rs
new file mode 100644
index 000000000..6b8ff4861
--- /dev/null
+++ b/vendor/tabled/src/settings/shadow/mod.rs
@@ -0,0 +1,195 @@
+//! This module contains a [`Shadow`] option for a [`Table`].
+//!
+//! # Example
+//!
+//! ```
+//! use tabled::{Table, settings::{Shadow, Style}};
+//!
+//! let data = vec!["Hello", "World", "!"];
+//!
+//! let table = Table::new(data)
+//! .with(Style::markdown())
+//! .with(Shadow::new(1))
+//! .to_string();
+//!
+//! assert_eq!(
+//! table,
+//! concat!(
+//! "| &str | \n",
+//! "|-------|â–’\n",
+//! "| Hello |â–’\n",
+//! "| World |â–’\n",
+//! "| ! |â–’\n",
+//! " â–’â–’â–’â–’â–’â–’â–’â–’â–’",
+//! )
+//! );
+//! ```
+//!
+//! [`Table`]: crate::Table
+
+use crate::{
+ grid::color::AnsiColor,
+ grid::config::{ColoredConfig, Indent, Offset, Sides},
+ settings::{color::Color, TableOption},
+};
+
+/// The structure represents a shadow of a table.
+///
+/// NOTICE: It uses [`Margin`] therefore it often can't be combined.
+///
+/// [`Margin`]: crate::settings::Margin
+#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
+pub struct Shadow {
+ c: char,
+ size: usize,
+ size_offset: usize,
+ direction: Sides<bool>,
+ color: Option<Color>,
+}
+
+impl Shadow {
+ /// A default fill character to be used.
+ pub const DEFAULT_FILL: char = 'â–’';
+
+ /// Construct's an [`Shadow`] object with default fill [`Shadow::DEFAULT_FILL`].
+ ///
+ /// It uses space(' ') as a default fill character.
+ /// To set a custom character you can use [`Self::set_fill`] function.
+ pub fn new(size: usize) -> Self {
+ Self {
+ c: Self::DEFAULT_FILL,
+ size,
+ size_offset: 1,
+ direction: Sides::new(false, true, false, true),
+ color: None,
+ }
+ }
+
+ /// The function, sets a characters for the [`Shadow`] to be used.
+ pub fn set_fill(mut self, c: char) -> Self {
+ self.c = c;
+ self
+ }
+
+ /// Set an offset value (default is '1').
+ pub fn set_offset(mut self, size: usize) -> Self {
+ self.size_offset = size;
+ self
+ }
+
+ /// Switch shadow to top.
+ pub fn set_top(mut self) -> Self {
+ self.direction.top = true;
+ self.direction.bottom = false;
+ self
+ }
+
+ /// Switch shadow to bottom.
+ pub fn set_bottom(mut self) -> Self {
+ self.direction.bottom = true;
+ self.direction.top = false;
+ self
+ }
+
+ /// Switch shadow to left.
+ pub fn set_left(mut self) -> Self {
+ self.direction.left = true;
+ self.direction.right = false;
+ self
+ }
+
+ /// Switch shadow to right.
+ pub fn set_right(mut self) -> Self {
+ self.direction.right = true;
+ self.direction.left = false;
+ self
+ }
+
+ /// Sets a color for a shadow.
+ pub fn set_color(mut self, color: Color) -> Self {
+ self.color = Some(color);
+ self
+ }
+}
+
+impl<R, D> TableOption<R, D, ColoredConfig> for Shadow {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ set_margin(cfg, self.size, self.c, &self.direction);
+ set_margin_offset(cfg, self.size_offset, &self.direction);
+
+ if let Some(color) = &self.color {
+ set_margin_color(cfg, color.clone().into(), &self.direction);
+ }
+ }
+}
+
+fn set_margin(cfg: &mut ColoredConfig, size: usize, c: char, direction: &Sides<bool>) {
+ let mut margin: Sides<Indent> = Sides::default();
+ if direction.top {
+ margin.top.size = size;
+ margin.top.fill = c;
+ }
+
+ if direction.bottom {
+ margin.bottom.size = size;
+ margin.bottom.fill = c;
+ }
+
+ if direction.left {
+ margin.left.size = size;
+ margin.left.fill = c;
+ }
+
+ if direction.right {
+ margin.right.size = size;
+ margin.right.fill = c;
+ }
+
+ cfg.set_margin(margin);
+}
+
+fn set_margin_offset(cfg: &mut ColoredConfig, size: usize, direction: &Sides<bool>) {
+ let mut margin = Sides::filled(Offset::Begin(0));
+ if direction.right && direction.bottom {
+ margin.bottom = Offset::Begin(size);
+ margin.right = Offset::Begin(size);
+ }
+
+ if direction.right && direction.top {
+ margin.top = Offset::Begin(size);
+ margin.right = Offset::End(size);
+ }
+
+ if direction.left && direction.bottom {
+ margin.bottom = Offset::End(size);
+ margin.left = Offset::Begin(size);
+ }
+
+ if direction.left && direction.top {
+ margin.top = Offset::End(size);
+ margin.left = Offset::End(size);
+ }
+
+ cfg.set_margin_offset(margin);
+}
+
+fn set_margin_color(cfg: &mut ColoredConfig, color: AnsiColor<'static>, direction: &Sides<bool>) {
+ let mut margin: Sides<Option<AnsiColor<'static>>> = Sides::default();
+ if direction.right {
+ margin.right = Some(color.clone());
+ }
+
+ if direction.top {
+ margin.top = Some(color.clone());
+ }
+
+ if direction.left {
+ margin.left = Some(color.clone());
+ }
+
+ if direction.bottom {
+ margin.bottom = Some(color.clone());
+ }
+
+ cfg.set_margin_color(margin);
+}
diff --git a/vendor/tabled/src/settings/span/column.rs b/vendor/tabled/src/settings/span/column.rs
new file mode 100644
index 000000000..50af64c23
--- /dev/null
+++ b/vendor/tabled/src/settings/span/column.rs
@@ -0,0 +1,125 @@
+use crate::{
+ grid::{
+ config::{ColoredConfig, Entity, Position, SpannedConfig},
+ records::{ExactRecords, Records},
+ },
+ settings::CellOption,
+};
+
+/// Columns (Vertical) span.
+#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub struct ColumnSpan {
+ size: usize,
+}
+
+impl ColumnSpan {
+ /// Creates a new column (vertical) span.
+ pub fn new(size: usize) -> Self {
+ Self { size }
+ }
+
+ /// Creates a new column (vertical) span with a maximux value possible.
+ pub fn max() -> Self {
+ Self::new(usize::MAX)
+ }
+}
+
+impl<R> CellOption<R, ColoredConfig> for ColumnSpan
+where
+ R: Records + ExactRecords,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, entity: Entity) {
+ let count_rows = records.count_rows();
+ let count_cols = records.count_columns();
+
+ set_col_spans(cfg, self.size, entity, (count_rows, count_cols));
+ remove_false_spans(cfg);
+ }
+}
+
+fn set_col_spans(cfg: &mut SpannedConfig, span: usize, entity: Entity, shape: (usize, usize)) {
+ for pos in entity.iter(shape.0, shape.1) {
+ if !is_valid_pos(pos, shape) {
+ continue;
+ }
+
+ let mut span = span;
+ if !is_column_span_valid(pos.1, span, shape.1) {
+ span = shape.1 - pos.1;
+ }
+
+ if span_has_intersections(cfg, pos, span) {
+ continue;
+ }
+
+ set_span_column(cfg, pos, span);
+ }
+}
+
+fn set_span_column(cfg: &mut SpannedConfig, pos: (usize, usize), span: usize) {
+ if span == 0 {
+ let (row, col) = pos;
+ if col == 0 {
+ return;
+ }
+
+ if let Some(closecol) = closest_visible(cfg, (row, col - 1)) {
+ let span = col + 1 - closecol;
+ cfg.set_column_span((row, closecol), span);
+ }
+ }
+
+ cfg.set_column_span(pos, span);
+}
+
+fn closest_visible(cfg: &SpannedConfig, mut pos: Position) -> Option<usize> {
+ loop {
+ if cfg.is_cell_visible(pos) {
+ return Some(pos.1);
+ }
+
+ if pos.1 == 0 {
+ return None;
+ }
+
+ pos.1 -= 1;
+ }
+}
+
+fn is_column_span_valid(col: usize, span: usize, count_cols: usize) -> bool {
+ span + col <= count_cols
+}
+
+fn is_valid_pos((row, col): Position, (count_rows, count_cols): (usize, usize)) -> bool {
+ row < count_rows && col < count_cols
+}
+
+fn span_has_intersections(cfg: &SpannedConfig, (row, col): Position, span: usize) -> bool {
+ for col in col..col + span {
+ if !cfg.is_cell_visible((row, col)) {
+ return true;
+ }
+ }
+
+ false
+}
+
+fn remove_false_spans(cfg: &mut SpannedConfig) {
+ for (pos, _) in cfg.get_column_spans() {
+ if cfg.is_cell_visible(pos) {
+ continue;
+ }
+
+ cfg.set_row_span(pos, 1);
+ cfg.set_column_span(pos, 1);
+ }
+
+ for (pos, _) in cfg.get_row_spans() {
+ if cfg.is_cell_visible(pos) {
+ continue;
+ }
+
+ cfg.set_row_span(pos, 1);
+ cfg.set_column_span(pos, 1);
+ }
+}
diff --git a/vendor/tabled/src/settings/span/mod.rs b/vendor/tabled/src/settings/span/mod.rs
new file mode 100644
index 000000000..1139a2b99
--- /dev/null
+++ b/vendor/tabled/src/settings/span/mod.rs
@@ -0,0 +1,68 @@
+//! This module contains a [`Span`] settings, it helps to
+//! make a cell take more space then it generally takes.
+//!
+//! # Example
+//!
+//! ```
+//! use tabled::{settings::{Span, Modify}, Table};
+//!
+//! let data = [[1, 2, 3], [4, 5, 6]];
+//!
+//! let table = Table::new(data)
+//! .with(Modify::new((2, 0)).with(Span::column(2)))
+//! .with(Modify::new((0, 1)).with(Span::column(2)))
+//! .to_string();
+//!
+//! assert_eq!(
+//! table,
+//! concat!(
+//! "+---+---+---+\n",
+//! "| 0 | 1 |\n",
+//! "+---+---+---+\n",
+//! "| 1 | 2 | 3 |\n",
+//! "+---+---+---+\n",
+//! "| 4 | 6 |\n",
+//! "+---+---+---+",
+//! )
+//! )
+//! ```
+
+mod column;
+mod row;
+
+pub use column::ColumnSpan;
+pub use row::RowSpan;
+
+/// Span represent a horizontal/column span setting for any cell on a [`Table`].
+///
+/// It will be ignored if:
+/// - cell position is out of scope
+/// - size is bigger then the total number of columns.
+/// - size is bigger then the total number of rows.
+///
+/// ```rust,no_run
+/// # use tabled::{Table, settings::{Style, Span, Modify, object::Columns}};
+/// # let data: Vec<&'static str> = Vec::new();
+/// let table = Table::new(&data)
+/// .with(Modify::new(Columns::single(0)).with(Span::column(2)));
+/// ```
+///
+/// [`Table`]: crate::Table
+#[derive(Debug)]
+pub struct Span;
+
+impl Span {
+ /// New constructs a horizontal/column [`Span`].
+ ///
+ /// If size is bigger then the total number of columns it will be ignored.
+ pub fn column(size: usize) -> ColumnSpan {
+ ColumnSpan::new(size)
+ }
+
+ /// New constructs a vertical/row [`Span`].
+ ///
+ /// If size is bigger then the total number of rows it will be ignored.
+ pub fn row(size: usize) -> RowSpan {
+ RowSpan::new(size)
+ }
+}
diff --git a/vendor/tabled/src/settings/span/row.rs b/vendor/tabled/src/settings/span/row.rs
new file mode 100644
index 000000000..68673f7a2
--- /dev/null
+++ b/vendor/tabled/src/settings/span/row.rs
@@ -0,0 +1,126 @@
+use crate::{
+ grid::{
+ config::{ColoredConfig, Entity, Position, SpannedConfig},
+ records::{ExactRecords, Records},
+ },
+ settings::CellOption,
+};
+
+/// Row (vertical) span.
+#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub struct RowSpan {
+ size: usize,
+}
+
+impl RowSpan {
+ /// Creates a new row (vertical) span.
+ pub const fn new(size: usize) -> Self {
+ Self { size }
+ }
+
+ /// Creates a new row (vertical) span with a maximux value possible.
+ pub const fn max() -> Self {
+ Self::new(usize::MAX)
+ }
+}
+
+impl<R> CellOption<R, ColoredConfig> for RowSpan
+where
+ R: Records + ExactRecords,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, entity: Entity) {
+ let count_rows = records.count_rows();
+ let count_cols = records.count_columns();
+
+ set_row_spans(cfg, self.size, entity, (count_rows, count_cols));
+ remove_false_spans(cfg);
+ }
+}
+
+fn set_row_spans(cfg: &mut SpannedConfig, span: usize, entity: Entity, shape: (usize, usize)) {
+ for pos in entity.iter(shape.0, shape.1) {
+ if !is_valid_pos(pos, shape) {
+ continue;
+ }
+
+ let mut span = span;
+ if !is_row_span_valid(pos.0, span, shape.0) {
+ span = shape.0 - pos.0;
+ }
+
+ if span_has_intersections(cfg, pos, span) {
+ continue;
+ }
+
+ set_span_row(cfg, pos, span);
+ }
+}
+
+fn set_span_row(cfg: &mut SpannedConfig, pos: (usize, usize), span: usize) {
+ if span == 0 {
+ let (row, col) = pos;
+ if row == 0 {
+ return;
+ }
+
+ if let Some(closerow) = closest_visible_row(cfg, (row - 1, col)) {
+ let span = row + 1 - closerow;
+ cfg.set_row_span((closerow, col), span);
+ }
+ }
+
+ cfg.set_row_span(pos, span);
+}
+
+fn closest_visible_row(cfg: &SpannedConfig, mut pos: Position) -> Option<usize> {
+ loop {
+ if cfg.is_cell_visible(pos) {
+ return Some(pos.0);
+ }
+
+ if pos.0 == 0 {
+ // can happen if we have a above horizontal spanned cell
+ return None;
+ }
+
+ pos.0 -= 1;
+ }
+}
+
+fn is_row_span_valid(row: usize, span: usize, count_rows: usize) -> bool {
+ span + row <= count_rows
+}
+
+fn is_valid_pos((row, col): Position, (count_rows, count_cols): (usize, usize)) -> bool {
+ row < count_rows && col < count_cols
+}
+
+fn span_has_intersections(cfg: &SpannedConfig, (row, col): Position, span: usize) -> bool {
+ for row in row..row + span {
+ if !cfg.is_cell_visible((row, col)) {
+ return true;
+ }
+ }
+
+ false
+}
+
+fn remove_false_spans(cfg: &mut SpannedConfig) {
+ for (pos, _) in cfg.get_column_spans() {
+ if cfg.is_cell_visible(pos) {
+ continue;
+ }
+
+ cfg.set_row_span(pos, 1);
+ cfg.set_column_span(pos, 1);
+ }
+
+ for (pos, _) in cfg.get_row_spans() {
+ if cfg.is_cell_visible(pos) {
+ continue;
+ }
+
+ cfg.set_row_span(pos, 1);
+ cfg.set_column_span(pos, 1);
+ }
+}
diff --git a/vendor/tabled/src/settings/split/mod.rs b/vendor/tabled/src/settings/split/mod.rs
new file mode 100644
index 000000000..32f820aef
--- /dev/null
+++ b/vendor/tabled/src/settings/split/mod.rs
@@ -0,0 +1,420 @@
+//! This module contains a [`Split`] setting which is used to
+//! format the cells of a [`Table`] by a provided index, direction, behavior, and display preference.
+//!
+//! [`Table`]: crate::Table
+
+use core::ops::Range;
+
+use papergrid::{config::Position, records::PeekableRecords};
+
+use crate::grid::records::{ExactRecords, Records, Resizable};
+
+use super::TableOption;
+
+#[derive(Debug, Clone, Copy)]
+enum Direction {
+ Column,
+ Row,
+}
+
+#[derive(Debug, Clone, Copy)]
+enum Behavior {
+ Concat,
+ Zip,
+}
+
+#[derive(Debug, Clone, Copy, PartialEq)]
+enum Display {
+ Clean,
+ Retain,
+}
+
+/// Returns a new [`Table`] formatted with several optional parameters.
+///
+/// The required index parameter determines how many columns/rows a table will be redistributed into.
+///
+/// - index
+/// - direction
+/// - behavior
+/// - display
+///
+/// # Example
+///
+/// ```rust,no_run
+/// use std::iter::FromIterator;
+/// use tabled::{
+/// settings::split::Split,
+/// Table,
+/// };
+///
+/// let mut table = Table::from_iter(['a'..='z']);
+/// let table = table.with(Split::column(4)).to_string();
+///
+/// assert_eq!(table, "+---+---+---+---+\n\
+/// | a | b | c | d |\n\
+/// +---+---+---+---+\n\
+/// | e | f | g | h |\n\
+/// +---+---+---+---+\n\
+/// | i | j | k | l |\n\
+/// +---+---+---+---+\n\
+/// | m | n | o | p |\n\
+/// +---+---+---+---+\n\
+/// | q | r | s | t |\n\
+/// +---+---+---+---+\n\
+/// | u | v | w | x |\n\
+/// +---+---+---+---+\n\
+/// | y | z | | |\n\
+/// +---+---+---+---+")
+/// ```
+///
+/// [`Table`]: crate::Table
+#[derive(Debug, Clone, Copy)]
+pub struct Split {
+ direction: Direction,
+ behavior: Behavior,
+ display: Display,
+ index: usize,
+}
+
+impl Split {
+ /// Returns a new [`Table`] split on the column at the provided index.
+ ///
+ /// The column found at that index becomes the new right-most column in the returned table.
+ /// Columns found beyond the index are redistributed into the table based on other defined
+ /// parameters.
+ ///
+ /// ```rust,no_run
+ /// # use tabled::settings::split::Split;
+ /// Split::column(4);
+ /// ```
+ ///
+ /// [`Table`]: crate::Table
+ pub fn column(index: usize) -> Self {
+ Split {
+ direction: Direction::Column,
+ behavior: Behavior::Zip,
+ display: Display::Clean,
+ index,
+ }
+ }
+
+ /// Returns a new [`Table`] split on the row at the provided index.
+ ///
+ /// The row found at that index becomes the new bottom row in the returned table.
+ /// Rows found beyond the index are redistributed into the table based on other defined
+ /// parameters.
+ ///
+ /// ```rust,no_run
+ /// # use tabled::settings::split::Split;
+ /// Split::row(4);
+ /// ```
+ ///
+ /// [`Table`]: crate::Table
+ pub fn row(index: usize) -> Self {
+ Split {
+ direction: Direction::Row,
+ behavior: Behavior::Zip,
+ display: Display::Clean,
+ index,
+ }
+ }
+
+ /// Returns a split [`Table`] with the redistributed cells pushed to the back of the new shape.
+ ///
+ /// ```text
+ /// +---+---+
+ /// | a | b |
+ /// +---+---+
+ /// +---+---+---+---+---+ | f | g |
+ /// | a | b | c | d | e | Split::column(2).concat() +---+---+
+ /// +---+---+---+---+---+ => | c | d |
+ /// | f | g | h | i | j | +---+---+
+ /// +---+---+---+---+---+ | h | i |
+ /// +---+---+
+ /// | e | |
+ /// +---+---+
+ /// | j | |
+ /// +---+---+
+ /// ```
+ ///
+ /// [`Table`]: crate::Table
+ pub fn concat(self) -> Self {
+ Self {
+ behavior: Behavior::Concat,
+ ..self
+ }
+ }
+
+ /// Returns a split [`Table`] with the redistributed cells inserted behind
+ /// the first correlating column/row one after another.
+ ///
+ /// ```text
+ /// +---+---+
+ /// | a | b |
+ /// +---+---+
+ /// +---+---+---+---+---+ | c | d |
+ /// | a | b | c | d | e | Split::column(2).zip() +---+---+
+ /// +---+---+---+---+---+ => | e | |
+ /// | f | g | h | i | j | +---+---+
+ /// +---+---+---+---+---+ | f | g |
+ /// +---+---+
+ /// | h | i |
+ /// +---+---+
+ /// | j | |
+ /// +---+---+
+ /// ```
+ ///
+ /// [`Table`]: crate::Table
+ pub fn zip(self) -> Self {
+ Self {
+ behavior: Behavior::Zip,
+ ..self
+ }
+ }
+
+ /// Returns a split [`Table`] with the empty columns/rows filtered out.
+ ///
+ /// ```text
+ ///
+ ///
+ /// +---+---+---+
+ /// +---+---+---+---+---+ | a | b | c |
+ /// | a | b | c | d | e | Split::column(3).clean() +---+---+---+
+ /// +---+---+---+---+---+ => | d | e | |
+ /// | f | g | h | | | +---+---+---+
+ /// +---+---+---+---+---+ | f | g | h |
+ /// ^ ^ +---+---+---+
+ /// these cells are filtered
+ /// from the resulting table
+ /// ```
+ ///
+ /// ## Notes
+ ///
+ /// This is apart of the default configuration for Split.
+ ///
+ /// See [`retain`] for an alternative display option.
+ ///
+ /// [`Table`]: crate::Table
+ /// [`retain`]: crate::settings::split::Split::retain
+ pub fn clean(self) -> Self {
+ Self {
+ display: Display::Clean,
+ ..self
+ }
+ }
+
+ /// Returns a split [`Table`] with all cells retained.
+ ///
+ /// ```text
+ /// +---+---+---+
+ /// | a | b | c |
+ /// +---+---+---+
+ /// +---+---+---+---+---+ | d | e | |
+ /// | a | b | c | d | e | Split::column(3).retain() +---+---+---+
+ /// +---+---+---+---+---+ => | f | g | h |
+ /// | f | g | h | | | +---+---+---+
+ /// +---+---+---+---+---+ |-----------> | | | |
+ /// ^ ^ | +---+---+---+
+ /// |___|_____cells are kept!
+ /// ```
+ ///
+ /// ## Notes
+ ///
+ /// See [`clean`] for an alternative display option.
+ ///
+ /// [`Table`]: crate::Table
+ /// [`clean`]: crate::settings::split::Split::clean
+ pub fn retain(self) -> Self {
+ Self {
+ display: Display::Retain,
+ ..self
+ }
+ }
+}
+
+impl<R, D, Cfg> TableOption<R, D, Cfg> for Split
+where
+ R: Records + ExactRecords + Resizable + PeekableRecords,
+{
+ fn change(self, records: &mut R, _: &mut Cfg, _: &mut D) {
+ // variables
+ let Split {
+ direction,
+ behavior,
+ display,
+ index: section_length,
+ } = self;
+ let mut filtered_sections = 0;
+
+ // early return check
+ if records.count_columns() == 0 || records.count_rows() == 0 || section_length == 0 {
+ return;
+ }
+
+ // computed variables
+ let (primary_length, secondary_length) = compute_length_arrangement(records, direction);
+ let sections_per_direction = ceil_div(primary_length, section_length);
+ let (outer_range, inner_range) =
+ compute_range_order(secondary_length, sections_per_direction, behavior);
+
+ // work
+ for outer_index in outer_range {
+ let from_secondary_index = outer_index * sections_per_direction - filtered_sections;
+ for inner_index in inner_range.clone() {
+ let (section_index, from_secondary_index, to_secondary_index) =
+ compute_range_variables(
+ outer_index,
+ inner_index,
+ secondary_length,
+ from_secondary_index,
+ sections_per_direction,
+ filtered_sections,
+ behavior,
+ );
+
+ match (direction, behavior) {
+ (Direction::Column, Behavior::Concat) => records.push_row(),
+ (Direction::Column, Behavior::Zip) => records.insert_row(to_secondary_index),
+ (Direction::Row, Behavior::Concat) => records.push_column(),
+ (Direction::Row, Behavior::Zip) => records.insert_column(to_secondary_index),
+ }
+
+ let section_is_empty = copy_section(
+ records,
+ section_length,
+ section_index,
+ primary_length,
+ from_secondary_index,
+ to_secondary_index,
+ direction,
+ );
+
+ if section_is_empty && display == Display::Clean {
+ delete(records, to_secondary_index, direction);
+ filtered_sections += 1;
+ }
+ }
+ }
+
+ cleanup(records, section_length, primary_length, direction);
+ }
+}
+
+/// Determine which direction should be considered the primary, and which the secondary based on direction
+fn compute_length_arrangement<R>(records: &mut R, direction: Direction) -> (usize, usize)
+where
+ R: Records + ExactRecords,
+{
+ match direction {
+ Direction::Column => (records.count_columns(), records.count_rows()),
+ Direction::Row => (records.count_rows(), records.count_columns()),
+ }
+}
+
+/// reduce the table size to the length of the index in the specified direction
+fn cleanup<R>(records: &mut R, section_length: usize, primary_length: usize, direction: Direction)
+where
+ R: Resizable,
+{
+ for segment in (section_length..primary_length).rev() {
+ match direction {
+ Direction::Column => records.remove_column(segment),
+ Direction::Row => records.remove_row(segment),
+ }
+ }
+}
+
+/// Delete target index row or column
+fn delete<R>(records: &mut R, target_index: usize, direction: Direction)
+where
+ R: Resizable,
+{
+ match direction {
+ Direction::Column => records.remove_row(target_index),
+ Direction::Row => records.remove_column(target_index),
+ }
+}
+
+/// copy cells to new location
+///
+/// returns if the copied section was entirely blank
+fn copy_section<R>(
+ records: &mut R,
+ section_length: usize,
+ section_index: usize,
+ primary_length: usize,
+ from_secondary_index: usize,
+ to_secondary_index: usize,
+ direction: Direction,
+) -> bool
+where
+ R: ExactRecords + Resizable + PeekableRecords,
+{
+ let mut section_is_empty = true;
+ for to_primary_index in 0..section_length {
+ let from_primary_index = to_primary_index + section_index * section_length;
+
+ if from_primary_index < primary_length {
+ let from_position =
+ format_position(direction, from_primary_index, from_secondary_index);
+ if records.get_text(from_position) != "" {
+ section_is_empty = false;
+ }
+ records.swap(
+ from_position,
+ format_position(direction, to_primary_index, to_secondary_index),
+ );
+ }
+ }
+ section_is_empty
+}
+
+/// determine section over direction or vice versa based on behavior
+fn compute_range_order(
+ direction_length: usize,
+ sections_per_direction: usize,
+ behavior: Behavior,
+) -> (Range<usize>, Range<usize>) {
+ match behavior {
+ Behavior::Concat => (1..sections_per_direction, 0..direction_length),
+ Behavior::Zip => (0..direction_length, 1..sections_per_direction),
+ }
+}
+
+/// helper function for shimming both behaviors to work within a single nested loop
+fn compute_range_variables(
+ outer_index: usize,
+ inner_index: usize,
+ direction_length: usize,
+ from_secondary_index: usize,
+ sections_per_direction: usize,
+ filtered_sections: usize,
+ behavior: Behavior,
+) -> (usize, usize, usize) {
+ match behavior {
+ Behavior::Concat => (
+ outer_index,
+ inner_index,
+ inner_index + outer_index * direction_length - filtered_sections,
+ ),
+ Behavior::Zip => (
+ inner_index,
+ from_secondary_index,
+ outer_index * sections_per_direction + inner_index - filtered_sections,
+ ),
+ }
+}
+
+/// utility for arguments of a position easily
+fn format_position(direction: Direction, primary_index: usize, secondary_index: usize) -> Position {
+ match direction {
+ Direction::Column => (secondary_index, primary_index),
+ Direction::Row => (primary_index, secondary_index),
+ }
+}
+
+/// ceil division utility because the std lib ceil_div isn't stable yet
+fn ceil_div(x: usize, y: usize) -> usize {
+ debug_assert!(x != 0);
+ 1 + ((x - 1) / y)
+}
diff --git a/vendor/tabled/src/settings/style/border.rs b/vendor/tabled/src/settings/style/border.rs
new file mode 100644
index 000000000..a8cbefb5d
--- /dev/null
+++ b/vendor/tabled/src/settings/style/border.rs
@@ -0,0 +1,159 @@
+use crate::{
+ grid::{
+ config::{Border as GBorder, ColoredConfig, Entity},
+ records::{ExactRecords, Records},
+ },
+ settings::CellOption,
+};
+
+/// Border represents a border of a Cell.
+///
+/// ```text
+/// top border
+/// |
+/// V
+/// corner top left ------> +_______+ <---- corner top left
+/// | |
+/// left border ----------> | cell | <---- right border
+/// | |
+/// corner bottom right --> +_______+ <---- corner bottom right
+/// ^
+/// |
+/// bottom border
+/// ```
+///
+/// ```rust,no_run
+/// # use tabled::{Table, settings::{Modify, style::{Style, Border}, object::Rows}};
+/// # let data: Vec<&'static str> = Vec::new();
+/// let table = Table::new(&data)
+/// .with(Style::ascii())
+/// .with(Modify::new(Rows::single(0)).with(Border::default().top('x')));
+/// ```
+#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub struct Border(GBorder<char>);
+
+impl Border {
+ /// This function constructs a cell borders with all sides set.
+ #[allow(clippy::too_many_arguments)]
+ pub const fn full(
+ top: char,
+ bottom: char,
+ left: char,
+ right: char,
+ top_left: char,
+ top_right: char,
+ bottom_left: char,
+ bottom_right: char,
+ ) -> Self {
+ Self(GBorder::full(
+ top,
+ bottom,
+ left,
+ right,
+ top_left,
+ top_right,
+ bottom_left,
+ bottom_right,
+ ))
+ }
+
+ /// This function constructs a cell borders with all sides's char set to a given character.
+ /// It behaves like [`Border::full`] with the same character set to each side.
+ pub const fn filled(c: char) -> Self {
+ Self::full(c, c, c, c, c, c, c, c)
+ }
+
+ /// Using this function you deconstruct the existing borders.
+ pub const fn empty() -> EmptyBorder {
+ EmptyBorder
+ }
+
+ /// Set a top border character.
+ pub const fn top(mut self, c: char) -> Self {
+ self.0.top = Some(c);
+ self
+ }
+
+ /// Set a bottom border character.
+ pub const fn bottom(mut self, c: char) -> Self {
+ self.0.bottom = Some(c);
+ self
+ }
+
+ /// Set a left border character.
+ pub const fn left(mut self, c: char) -> Self {
+ self.0.left = Some(c);
+ self
+ }
+
+ /// Set a right border character.
+ pub const fn right(mut self, c: char) -> Self {
+ self.0.right = Some(c);
+ self
+ }
+
+ /// Set a top left intersection character.
+ pub const fn corner_top_left(mut self, c: char) -> Self {
+ self.0.left_top_corner = Some(c);
+ self
+ }
+
+ /// Set a top right intersection character.
+ pub const fn corner_top_right(mut self, c: char) -> Self {
+ self.0.right_top_corner = Some(c);
+ self
+ }
+
+ /// Set a bottom left intersection character.
+ pub const fn corner_bottom_left(mut self, c: char) -> Self {
+ self.0.left_bottom_corner = Some(c);
+ self
+ }
+
+ /// Set a bottom right intersection character.
+ pub const fn corner_bottom_right(mut self, c: char) -> Self {
+ self.0.right_bottom_corner = Some(c);
+ self
+ }
+}
+
+impl<R> CellOption<R, ColoredConfig> for Border
+where
+ R: Records + ExactRecords,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, entity: Entity) {
+ let shape = (records.count_rows(), records.count_columns());
+
+ for pos in entity.iter(shape.0, shape.1) {
+ cfg.set_border(pos, self.0);
+ }
+ }
+}
+
+impl From<GBorder<char>> for Border {
+ fn from(b: GBorder<char>) -> Border {
+ Border(b)
+ }
+}
+
+impl From<Border> for GBorder<char> {
+ fn from(value: Border) -> Self {
+ value.0
+ }
+}
+
+#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub struct EmptyBorder;
+
+impl<R> CellOption<R, ColoredConfig> for EmptyBorder
+where
+ R: Records + ExactRecords,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, entity: Entity) {
+ let shape = (records.count_rows(), records.count_columns());
+
+ for pos in entity.iter(shape.0, shape.1) {
+ cfg.remove_border(pos, shape);
+ }
+ }
+}
diff --git a/vendor/tabled/src/settings/style/border_char.rs b/vendor/tabled/src/settings/style/border_char.rs
new file mode 100644
index 000000000..b1e04c579
--- /dev/null
+++ b/vendor/tabled/src/settings/style/border_char.rs
@@ -0,0 +1,99 @@
+use crate::{
+ grid::config::{ColoredConfig, Entity, Position, SpannedConfig},
+ grid::records::{ExactRecords, Records},
+ settings::CellOption,
+};
+
+use super::Offset;
+
+/// [`BorderChar`] sets a char to a specific location on a horizontal line.
+///
+/// # Example
+///
+/// ```rust
+/// use tabled::{Table, settings::{style::{Style, BorderChar, Offset}, Modify, object::{Object, Rows, Columns}}};
+///
+/// let mut table = Table::new(["Hello World"]);
+/// table
+/// .with(Style::markdown())
+/// .with(Modify::new(Rows::single(1))
+/// .with(BorderChar::horizontal(':', Offset::Begin(0)))
+/// .with(BorderChar::horizontal(':', Offset::End(0)))
+/// )
+/// .with(Modify::new((1, 0).and((1, 1))).with(BorderChar::vertical('#', Offset::Begin(0))));
+///
+/// assert_eq!(
+/// table.to_string(),
+/// concat!(
+/// "| &str |\n",
+/// "|:-----------:|\n",
+/// "# Hello World #",
+/// ),
+/// );
+/// ```
+#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub struct BorderChar {
+ c: char,
+ offset: Offset,
+ horizontal: bool,
+}
+
+impl BorderChar {
+ /// Creates a [`BorderChar`] which overrides horizontal line.
+ pub fn horizontal(c: char, offset: Offset) -> Self {
+ Self {
+ c,
+ offset,
+ horizontal: true,
+ }
+ }
+
+ /// Creates a [`BorderChar`] which overrides vertical line.
+ pub fn vertical(c: char, offset: Offset) -> Self {
+ Self {
+ c,
+ offset,
+ horizontal: false,
+ }
+ }
+}
+
+impl<R> CellOption<R, ColoredConfig> for BorderChar
+where
+ R: Records + ExactRecords,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, entity: Entity) {
+ let cells = entity.iter(records.count_rows(), records.count_columns());
+
+ match self.horizontal {
+ true => add_char_horizontal(cfg, self.c, self.offset, cells),
+ false => add_char_vertical(cfg, self.c, self.offset, cells),
+ }
+ }
+}
+
+fn add_char_vertical<I: Iterator<Item = Position>>(
+ cfg: &mut SpannedConfig,
+ c: char,
+ offset: Offset,
+ cells: I,
+) {
+ let offset = offset.into();
+
+ for pos in cells {
+ cfg.set_vertical_char(pos, c, offset);
+ }
+}
+
+fn add_char_horizontal<I: Iterator<Item = Position>>(
+ cfg: &mut SpannedConfig,
+ c: char,
+ offset: Offset,
+ cells: I,
+) {
+ let offset = offset.into();
+
+ for pos in cells {
+ cfg.set_horizontal_char(pos, c, offset);
+ }
+}
diff --git a/vendor/tabled/src/settings/style/border_color.rs b/vendor/tabled/src/settings/style/border_color.rs
new file mode 100644
index 000000000..6b3fa2b1a
--- /dev/null
+++ b/vendor/tabled/src/settings/style/border_color.rs
@@ -0,0 +1,155 @@
+//! This module contains a configuration of a Border to set its color via [`BorderColor`].
+
+use crate::{
+ grid::{
+ color::AnsiColor,
+ config::{Border, ColoredConfig, Entity},
+ records::{ExactRecords, Records},
+ },
+ settings::{color::Color, CellOption, TableOption},
+};
+
+/// BorderColored represents a colored border of a Cell.
+///
+/// ```rust,no_run
+/// # use tabled::{settings::{style::BorderColor, Style, Color, object::Rows, Modify}, Table};
+/// #
+/// # let data: Vec<&'static str> = Vec::new();
+/// #
+/// let table = Table::new(&data)
+/// .with(Style::ascii())
+/// .with(Modify::new(Rows::single(0)).with(BorderColor::default().top(Color::FG_RED)));
+/// ```
+#[derive(Debug, Clone, Default, Eq, PartialEq)]
+pub struct BorderColor(Border<AnsiColor<'static>>);
+
+impl BorderColor {
+ /// This function constructs a cell borders with all sides set.
+ #[allow(clippy::too_many_arguments)]
+ pub fn full(
+ top: Color,
+ bottom: Color,
+ left: Color,
+ right: Color,
+ top_left: Color,
+ top_right: Color,
+ bottom_left: Color,
+ bottom_right: Color,
+ ) -> Self {
+ Self(Border::full(
+ top.into(),
+ bottom.into(),
+ left.into(),
+ right.into(),
+ top_left.into(),
+ top_right.into(),
+ bottom_left.into(),
+ bottom_right.into(),
+ ))
+ }
+
+ /// This function constructs a cell borders with all sides's char set to a given character.
+ /// It behaves like [`Border::full`] with the same character set to each side.
+ pub fn filled(c: Color) -> Self {
+ let c: AnsiColor<'_> = c.into();
+
+ Self(Border {
+ top: Some(c.clone()),
+ bottom: Some(c.clone()),
+ left: Some(c.clone()),
+ right: Some(c.clone()),
+ left_bottom_corner: Some(c.clone()),
+ left_top_corner: Some(c.clone()),
+ right_bottom_corner: Some(c.clone()),
+ right_top_corner: Some(c),
+ })
+ }
+
+ /// Set a top border character.
+ pub fn top(mut self, c: Color) -> Self {
+ self.0.top = Some(c.into());
+ self
+ }
+
+ /// Set a bottom border character.
+ pub fn bottom(mut self, c: Color) -> Self {
+ self.0.bottom = Some(c.into());
+ self
+ }
+
+ /// Set a left border character.
+ pub fn left(mut self, c: Color) -> Self {
+ self.0.left = Some(c.into());
+ self
+ }
+
+ /// Set a right border character.
+ pub fn right(mut self, c: Color) -> Self {
+ self.0.right = Some(c.into());
+ self
+ }
+
+ /// Set a top left intersection character.
+ pub fn corner_top_left(mut self, c: Color) -> Self {
+ self.0.left_top_corner = Some(c.into());
+ self
+ }
+
+ /// Set a top right intersection character.
+ pub fn corner_top_right(mut self, c: Color) -> Self {
+ self.0.right_top_corner = Some(c.into());
+ self
+ }
+
+ /// Set a bottom left intersection character.
+ pub fn corner_bottom_left(mut self, c: Color) -> Self {
+ self.0.left_bottom_corner = Some(c.into());
+ self
+ }
+
+ /// Set a bottom right intersection character.
+ pub fn corner_bottom_right(mut self, c: Color) -> Self {
+ self.0.right_bottom_corner = Some(c.into());
+ self
+ }
+}
+
+impl<R> CellOption<R, ColoredConfig> for BorderColor
+where
+ R: Records + ExactRecords,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, entity: Entity) {
+ let count_rows = records.count_rows();
+ let count_columns = records.count_columns();
+
+ let border_color = &self.0;
+
+ for pos in entity.iter(count_rows, count_columns) {
+ cfg.set_border_color(pos, border_color.clone());
+ }
+ }
+}
+
+impl<R, D> TableOption<R, D, ColoredConfig> for BorderColor
+where
+ R: Records + ExactRecords,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let count_rows = records.count_rows();
+ let count_columns = records.count_columns();
+
+ let border_color = &self.0;
+
+ for row in 0..count_rows {
+ for col in 0..count_columns {
+ cfg.set_border_color((row, col), border_color.clone());
+ }
+ }
+ }
+}
+
+impl From<BorderColor> for Border<AnsiColor<'static>> {
+ fn from(val: BorderColor) -> Self {
+ val.0
+ }
+}
diff --git a/vendor/tabled/src/settings/style/border_text.rs b/vendor/tabled/src/settings/style/border_text.rs
new file mode 100644
index 000000000..163a19821
--- /dev/null
+++ b/vendor/tabled/src/settings/style/border_text.rs
@@ -0,0 +1,253 @@
+use crate::{
+ grid::{
+ color::AnsiColor,
+ config::{self, ColoredConfig, SpannedConfig},
+ dimension::{Dimension, Estimate},
+ records::{ExactRecords, Records},
+ },
+ settings::{
+ object::{FirstRow, LastRow},
+ Color, TableOption,
+ },
+};
+
+use super::Offset;
+
+/// [`BorderText`] writes a custom text on a border.
+///
+/// # Example
+///
+/// ```rust
+/// use tabled::{Table, settings::style::BorderText, settings::object::Rows};
+///
+/// let mut table = Table::new(["Hello World"]);
+/// table
+/// .with(BorderText::new("+-.table").horizontal(Rows::first()));
+///
+/// assert_eq!(
+/// table.to_string(),
+/// "+-.table------+\n\
+/// | &str |\n\
+/// +-------------+\n\
+/// | Hello World |\n\
+/// +-------------+"
+/// );
+/// ```
+#[derive(Debug)]
+pub struct BorderText<L> {
+ text: String,
+ offset: Offset,
+ color: Option<AnsiColor<'static>>,
+ line: L,
+}
+
+impl BorderText<()> {
+ /// Creates a [`BorderText`] instance.
+ ///
+ /// Lines are numbered from 0 to the `count_rows` included
+ /// (`line >= 0 && line <= count_rows`).
+ pub fn new<S: Into<String>>(text: S) -> Self {
+ BorderText {
+ text: text.into(),
+ line: (),
+ offset: Offset::Begin(0),
+ color: None,
+ }
+ }
+}
+
+impl<Line> BorderText<Line> {
+ /// Set a line on which we will set the text.
+ pub fn horizontal<L>(self, line: L) -> BorderText<L> {
+ BorderText {
+ line,
+ text: self.text,
+ offset: self.offset,
+ color: self.color,
+ }
+ }
+
+ /// Set an offset from which the text will be started.
+ pub fn offset(self, offset: Offset) -> Self {
+ BorderText {
+ offset,
+ text: self.text,
+ line: self.line,
+ color: self.color,
+ }
+ }
+
+ /// Set a color of the text.
+ pub fn color(self, color: Color) -> Self {
+ BorderText {
+ color: Some(color.into()),
+ text: self.text,
+ line: self.line,
+ offset: self.offset,
+ }
+ }
+}
+
+impl<R, D> TableOption<R, D, ColoredConfig> for BorderText<usize>
+where
+ R: Records + ExactRecords,
+ for<'a> &'a R: Records,
+ for<'a> D: Estimate<&'a R, ColoredConfig>,
+ D: Dimension,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, dims: &mut D) {
+ dims.estimate(records, cfg);
+ let shape = (records.count_rows(), records.count_columns());
+ let line = self.line;
+ set_horizontal_chars(cfg, dims, self.offset, line, &self.text, &self.color, shape);
+ }
+}
+
+impl<R, D> TableOption<R, D, ColoredConfig> for BorderText<FirstRow>
+where
+ R: Records + ExactRecords,
+ for<'a> &'a R: Records,
+ for<'a> D: Estimate<&'a R, ColoredConfig>,
+ D: Dimension,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, dims: &mut D) {
+ dims.estimate(records, cfg);
+ let shape = (records.count_rows(), records.count_columns());
+ let line = 0;
+ set_horizontal_chars(cfg, dims, self.offset, line, &self.text, &self.color, shape);
+ }
+}
+
+impl<R, D> TableOption<R, D, ColoredConfig> for BorderText<LastRow>
+where
+ R: Records + ExactRecords,
+ for<'a> &'a R: Records,
+ for<'a> D: Estimate<&'a R, ColoredConfig>,
+ D: Dimension,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, dims: &mut D) {
+ dims.estimate(records, cfg);
+ let shape = (records.count_rows(), records.count_columns());
+ let line = records.count_rows();
+ set_horizontal_chars(cfg, dims, self.offset, line, &self.text, &self.color, shape);
+ }
+}
+
+fn set_horizontal_chars<D: Dimension>(
+ cfg: &mut SpannedConfig,
+ dims: &D,
+ offset: Offset,
+ line: usize,
+ text: &str,
+ color: &Option<AnsiColor<'static>>,
+ shape: (usize, usize),
+) {
+ let (_, count_columns) = shape;
+ let pos = get_start_pos(cfg, dims, offset, count_columns);
+ let pos = match pos {
+ Some(pos) => pos,
+ None => return,
+ };
+
+ let mut chars = text.chars();
+ let mut i = cfg.has_vertical(0, count_columns) as usize;
+ if i == 1 && pos == 0 {
+ let c = match chars.next() {
+ Some(c) => c,
+ None => return,
+ };
+
+ let mut b = cfg.get_border((line, 0), shape);
+ b.left_top_corner = b.left_top_corner.map(|_| c);
+ cfg.set_border((line, 0), b);
+
+ if let Some(color) = color.as_ref() {
+ let mut b = cfg.get_border_color((line, 0), shape).cloned();
+ b.left_top_corner = Some(color.clone());
+ cfg.set_border_color((line, 0), b);
+ }
+ }
+
+ for col in 0..count_columns {
+ let w = dims.get_width(col);
+ if i + w > pos {
+ for off in 0..w {
+ if i + off < pos {
+ continue;
+ }
+
+ let c = match chars.next() {
+ Some(c) => c,
+ None => return,
+ };
+
+ cfg.set_horizontal_char((line, col), c, config::Offset::Begin(off));
+ if let Some(color) = color.as_ref() {
+ cfg.set_horizontal_color(
+ (line, col),
+ color.clone(),
+ config::Offset::Begin(off),
+ );
+ }
+ }
+ }
+
+ i += w;
+
+ if cfg.has_vertical(col + 1, count_columns) {
+ i += 1;
+
+ if i > pos {
+ let c = match chars.next() {
+ Some(c) => c,
+ None => return,
+ };
+
+ let mut b = cfg.get_border((line, col), shape);
+ b.right_top_corner = b.right_top_corner.map(|_| c);
+ cfg.set_border((line, col), b);
+
+ if let Some(color) = color.as_ref() {
+ let mut b = cfg.get_border_color((line, col), shape).cloned();
+ b.right_top_corner = Some(color.clone());
+ cfg.set_border_color((line, col), b);
+ }
+ }
+ }
+ }
+}
+
+fn get_start_pos<D: Dimension>(
+ cfg: &SpannedConfig,
+ dims: &D,
+ offset: Offset,
+ count_columns: usize,
+) -> Option<usize> {
+ let totalw = total_width(cfg, dims, count_columns);
+ match offset {
+ Offset::Begin(i) => {
+ if i > totalw {
+ None
+ } else {
+ Some(i)
+ }
+ }
+ Offset::End(i) => {
+ if i > totalw {
+ None
+ } else {
+ Some(totalw - i)
+ }
+ }
+ }
+}
+
+fn total_width<D: Dimension>(cfg: &SpannedConfig, dims: &D, count_columns: usize) -> usize {
+ let mut totalw = cfg.has_vertical(0, count_columns) as usize;
+ for col in 0..count_columns {
+ totalw += dims.get_width(col);
+ totalw += cfg.has_vertical(col + 1, count_columns) as usize;
+ }
+
+ totalw
+}
diff --git a/vendor/tabled/src/settings/style/builder.rs b/vendor/tabled/src/settings/style/builder.rs
new file mode 100644
index 000000000..d55c400cc
--- /dev/null
+++ b/vendor/tabled/src/settings/style/builder.rs
@@ -0,0 +1,1208 @@
+//! This module contains a compile time style builder [`Style`].
+
+use core::marker::PhantomData;
+
+use crate::{
+ grid::config::{Borders, CompactConfig, CompactMultilineConfig},
+ settings::TableOption,
+};
+
+#[cfg(feature = "std")]
+use crate::grid::config::ColoredConfig;
+
+use super::{HorizontalLine, Line, VerticalLine};
+
+/// Style is represents a theme of a [`Table`].
+///
+/// ```text
+/// corner top left top intersection corner top right
+/// . | .
+/// . V .
+/// ╭───┬───┬───┬───┬───┬───┬────┬────┬────╮
+/// │ i │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
+/// ├───┼───┼───┼───┼───┼───┼────┼────┼────┤ <- this horizontal line is custom 'horizontals'
+/// │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ other lines horizontal lines are not set they called 'horizontal'
+/// │ 1 │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
+/// │ 2 │ 0 │ 2 │ 4 │ 6 │ 8 │ 10 │ 12 │ 14 │
+/// ╰───┴───┴───┴───┴───┴───┴────┴────┴────╯
+/// . ^ ^ .
+/// . | | .
+/// corner bottom left | bottom intersection corner bottom right
+/// |
+/// |
+/// all this vertical lines are called 'vertical'
+/// ```
+///
+///
+/// ```text
+/// ┌───┬───┬───┬───┬───â”
+/// │ 0 │ 1 │ 2 │ 3 │ 4 │
+/// intersection left ->├───X───X───X───X───┤ <- all this horizontal lines are called 'horizontal'
+/// │ 1 │ 2 │ 3 │ 4 │ 5 │
+/// ├───X───X───X───X───┤ <- intersection right
+/// │ 2 │ 3 │ 4 │ 5 │ 6 │
+/// └───┴───┴───┴───┴───┘
+///
+/// All 'X' positions are called 'intersection'.
+/// It's a place where 'vertical' and 'horizontal' lines intersect.
+/// ```
+///
+/// It tries to limit an controlling a valid state of it.
+/// For example, it won't allow to call method [`Style::corner_top_left`] unless [`Style::left`] and [`Style::top`] is set.
+///
+/// You can turn [`Style`] into [`RawStyle`] to have more control using [`Into`] implementation.
+///
+/// # Example
+///
+#[cfg_attr(feature = "std", doc = "```")]
+#[cfg_attr(not(feature = "std"), doc = "```ignore")]
+/// use tabled::{Table, settings::Style};
+///
+/// let style = Style::ascii()
+/// .bottom('*')
+/// .intersection(' ');
+///
+/// let data = vec!["Hello", "2021"];
+/// let table = Table::new(&data).with(style).to_string();
+///
+/// println!("{}", table);
+/// ```
+///
+/// [`Table`]: crate::Table
+/// [`RawStyle`]: crate::settings::style::RawStyle
+/// [`Style::corner_top_left`]: Style::corner_top_left
+/// [`Style::left`]: Style.left
+/// [`Style::top`]: Style.function.top
+#[derive(Debug, Clone)]
+pub struct Style<T, B, L, R, H, V, HLines = HLineArray<0>, VLines = VLineArray<0>> {
+ borders: Borders<char>,
+ horizontals: HLines,
+ verticals: VLines,
+ _top: PhantomData<T>,
+ _bottom: PhantomData<B>,
+ _left: PhantomData<L>,
+ _right: PhantomData<R>,
+ _horizontal: PhantomData<H>,
+ _vertical: PhantomData<V>,
+}
+
+type HLineArray<const N: usize> = [HorizontalLine; N];
+
+type VLineArray<const N: usize> = [VerticalLine; N];
+
+/// A marker struct which is used in [`Style`].
+#[derive(Debug, Clone)]
+pub struct On;
+
+impl Style<(), (), (), (), (), (), (), ()> {
+ /// This style is a style with no styling options on,
+ ///
+ /// ```text
+ /// id destribution link
+ /// 0 Fedora https://getfedora.org/
+ /// 2 OpenSUSE https://www.opensuse.org/
+ /// 3 Endeavouros https://endeavouros.com/
+ /// ```
+ ///
+ /// Note: The cells in the example have 1-left and 1-right indent.
+ ///
+ /// This style can be used as a base style to build a custom one.
+ ///
+ /// ```rust,no_run
+ /// # use tabled::settings::Style;
+ /// let style = Style::empty()
+ /// .top('*')
+ /// .bottom('*')
+ /// .vertical('#')
+ /// .intersection_top('*');
+ /// ```
+ pub const fn empty() -> Style<(), (), (), (), (), ()> {
+ Style::new(
+ create_borders(
+ Line::empty(),
+ Line::empty(),
+ Line::empty(),
+ None,
+ None,
+ None,
+ ),
+ [],
+ [],
+ )
+ }
+
+ /// This style is analog of `empty` but with a vertical space(' ') line.
+ ///
+ /// ```text
+ /// id destribution link
+ /// 0 Fedora https://getfedora.org/
+ /// 2 OpenSUSE https://www.opensuse.org/
+ /// 3 Endeavouros https://endeavouros.com/
+ /// ```
+ pub const fn blank() -> Style<(), (), (), (), (), On> {
+ Style::new(
+ create_borders(
+ Line::empty(),
+ Line::empty(),
+ Line::empty(),
+ None,
+ None,
+ Some(' '),
+ ),
+ [],
+ [],
+ )
+ }
+
+ /// This is a style which relays only on ASCII charset.
+ ///
+ /// It has horizontal and vertical lines.
+ ///
+ /// ```text
+ /// +----+--------------+---------------------------+
+ /// | id | destribution | link |
+ /// +----+--------------+---------------------------+
+ /// | 0 | Fedora | https://getfedora.org/ |
+ /// +----+--------------+---------------------------+
+ /// | 2 | OpenSUSE | https://www.opensuse.org/ |
+ /// +----+--------------+---------------------------+
+ /// | 3 | Endeavouros | https://endeavouros.com/ |
+ /// +----+--------------+---------------------------+
+ /// ```
+ pub const fn ascii() -> Style<On, On, On, On, On, On> {
+ Style::new(
+ create_borders(
+ Line::full('-', '+', '+', '+'),
+ Line::full('-', '+', '+', '+'),
+ Line::full('-', '+', '+', '+'),
+ Some('|'),
+ Some('|'),
+ Some('|'),
+ ),
+ [],
+ [],
+ )
+ }
+
+ /// `psql` style looks like a table style `PostgreSQL` uses.
+ ///
+ /// It has only 1 horizontal line which splits header.
+ /// And no left and right vertical lines.
+ ///
+ /// ```text
+ /// id | destribution | link
+ /// ----+--------------+---------------------------
+ /// 0 | Fedora | https://getfedora.org/
+ /// 2 | OpenSUSE | https://www.opensuse.org/
+ /// 3 | Endeavouros | https://endeavouros.com/
+ /// ```
+ pub const fn psql() -> Style<(), (), (), (), (), On, HLineArray<1>> {
+ Style::new(
+ create_borders(
+ Line::empty(),
+ Line::empty(),
+ Line::empty(),
+ None,
+ None,
+ Some('|'),
+ ),
+ [HorizontalLine::new(1, Line::empty())
+ .main(Some('-'))
+ .intersection(Some('+'))],
+ [],
+ )
+ }
+
+ /// `markdown` style mimics a `Markdown` table style.
+ ///
+ /// ```text
+ /// | id | destribution | link |
+ /// |----|--------------|---------------------------|
+ /// | 0 | Fedora | https://getfedora.org/ |
+ /// | 2 | OpenSUSE | https://www.opensuse.org/ |
+ /// | 3 | Endeavouros | https://endeavouros.com/ |
+ /// ```
+ pub const fn markdown() -> Style<(), (), On, On, (), On, HLineArray<1>> {
+ Style::new(
+ create_borders(
+ Line::empty(),
+ Line::empty(),
+ Line::empty(),
+ Some('|'),
+ Some('|'),
+ Some('|'),
+ ),
+ [HorizontalLine::new(1, Line::full('-', '|', '|', '|'))],
+ [],
+ )
+ }
+
+ /// This style is analog of [`Style::ascii`] which uses UTF-8 charset.
+ ///
+ /// It has vertical and horizontal split lines.
+ ///
+ /// ```text
+ /// ┌────┬──────────────┬───────────────────────────â”
+ /// │ id │ destribution │ link │
+ /// ├────┼──────────────┼───────────────────────────┤
+ /// │ 0 │ Fedora │ https://getfedora.org/ │
+ /// ├────┼──────────────┼───────────────────────────┤
+ /// │ 2 │ OpenSUSE │ https://www.opensuse.org/ │
+ /// ├────┼──────────────┼───────────────────────────┤
+ /// │ 3 │ Endeavouros │ https://endeavouros.com/ │
+ /// └────┴──────────────┴───────────────────────────┘
+ /// ```
+ pub const fn modern() -> Style<On, On, On, On, On, On> {
+ Style::new(
+ create_borders(
+ Line::full('─', '┬', '┌', 'â”'),
+ Line::full('─', '┴', '└', '┘'),
+ Line::full('─', '┼', '├', '┤'),
+ Some('│'),
+ Some('│'),
+ Some('│'),
+ ),
+ [],
+ [],
+ )
+ }
+
+ /// This style looks like a [`Style::modern`] but without horozizontal lines except a header.
+ ///
+ /// Beware: It uses UTF-8 characters.
+ ///
+ /// ```text
+ /// ┌────┬──────────────┬───────────────────────────â”
+ /// │ id │ destribution │ link │
+ /// ├────┼──────────────┼───────────────────────────┤
+ /// │ 0 │ Fedora │ https://getfedora.org/ │
+ /// │ 2 │ OpenSUSE │ https://www.opensuse.org/ │
+ /// │ 3 │ Endeavouros │ https://endeavouros.com/ │
+ /// └────┴──────────────┴───────────────────────────┘
+ /// ```
+ pub const fn sharp() -> Style<On, On, On, On, (), On, HLineArray<1>> {
+ Style::new(
+ create_borders(
+ Line::full('─', '┬', '┌', 'â”'),
+ Line::full('─', '┴', '└', '┘'),
+ Line::empty(),
+ Some('│'),
+ Some('│'),
+ Some('│'),
+ ),
+ [HorizontalLine::new(1, Line::full('─', '┼', '├', '┤'))],
+ [],
+ )
+ }
+
+ /// This style looks like a [`Style::sharp`] but with rounded corners.
+ ///
+ /// Beware: It uses UTF-8 characters.
+ ///
+ /// ```text
+ /// ╭────┬──────────────┬───────────────────────────╮
+ /// │ id │ destribution │ link │
+ /// ├────┼──────────────┼───────────────────────────┤
+ /// │ 0 │ Fedora │ https://getfedora.org/ │
+ /// │ 2 │ OpenSUSE │ https://www.opensuse.org/ │
+ /// │ 3 │ Endeavouros │ https://endeavouros.com/ │
+ /// ╰────┴──────────────┴───────────────────────────╯
+ /// ```
+ pub const fn rounded() -> Style<On, On, On, On, (), On, HLineArray<1>> {
+ Style::new(
+ create_borders(
+ Line::full('─', '┬', '╭', '╮'),
+ Line::full('─', '┴', '╰', '╯'),
+ Line::empty(),
+ Some('│'),
+ Some('│'),
+ Some('│'),
+ ),
+ [HorizontalLine::new(1, Line::full('─', '┼', '├', '┤'))],
+ [],
+ )
+ }
+
+ /// This style uses a chars which resembles '2 lines'.
+ ///
+ /// Beware: It uses UTF8 characters.
+ ///
+ /// ```text
+ /// â•”â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•—
+ /// â•‘ id â•‘ destribution â•‘ link â•‘
+ /// â• â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•£
+ /// â•‘ 0 â•‘ Fedora â•‘ https://getfedora.org/ â•‘
+ /// â• â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•£
+ /// â•‘ 2 â•‘ OpenSUSE â•‘ https://www.opensuse.org/ â•‘
+ /// â• â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•£
+ /// â•‘ 3 â•‘ Endeavouros â•‘ https://endeavouros.com/ â•‘
+ /// â•šâ•â•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
+ /// ```
+ pub const fn extended() -> Style<On, On, On, On, On, On> {
+ Style::new(
+ create_borders(
+ Line::full('â•', '╦', 'â•”', 'â•—'),
+ Line::full('â•', 'â•©', 'â•š', 'â•'),
+ Line::full('â•', '╬', 'â• ', 'â•£'),
+ Some('â•‘'),
+ Some('â•‘'),
+ Some('â•‘'),
+ ),
+ [],
+ [],
+ )
+ }
+
+ /// This is a style uses only '.' and ':' chars.
+ /// It has a vertical and horizontal split lines.
+ ///
+ /// ```text
+ /// .................................................
+ /// : id : destribution : link :
+ /// :....:..............:...........................:
+ /// : 0 : Fedora : https://getfedora.org/ :
+ /// :....:..............:...........................:
+ /// : 2 : OpenSUSE : https://www.opensuse.org/ :
+ /// :....:..............:...........................:
+ /// : 3 : Endeavouros : https://endeavouros.com/ :
+ /// :....:..............:...........................:
+ /// ```
+ pub const fn dots() -> Style<On, On, On, On, On, On> {
+ Style::new(
+ create_borders(
+ Line::full('.', '.', '.', '.'),
+ Line::full('.', ':', ':', ':'),
+ Line::full('.', ':', ':', ':'),
+ Some(':'),
+ Some(':'),
+ Some(':'),
+ ),
+ [],
+ [],
+ )
+ }
+
+ /// This style is one of table views in `ReStructuredText`.
+ ///
+ /// ```text
+ /// ==== ============== ===========================
+ /// id destribution link
+ /// ==== ============== ===========================
+ /// 0 Fedora https://getfedora.org/
+ /// 2 OpenSUSE https://www.opensuse.org/
+ /// 3 Endeavouros https://endeavouros.com/
+ /// ==== ============== ===========================
+ /// ```
+ pub const fn re_structured_text() -> Style<On, On, (), (), (), On, HLineArray<1>> {
+ Style::new(
+ create_borders(
+ Line::new(Some('='), Some(' '), None, None),
+ Line::new(Some('='), Some(' '), None, None),
+ Line::empty(),
+ None,
+ None,
+ Some(' '),
+ ),
+ [HorizontalLine::new(
+ 1,
+ Line::new(Some('='), Some(' '), None, None),
+ )],
+ [],
+ )
+ }
+
+ /// This is a theme analog of [`Style::rounded`], but in using ascii charset and
+ /// with no horizontal lines.
+ ///
+ /// ```text
+ /// .-----------------------------------------------.
+ /// | id | destribution | link |
+ /// | 0 | Fedora | https://getfedora.org/ |
+ /// | 2 | OpenSUSE | https://www.opensuse.org/ |
+ /// | 3 | Endeavouros | https://endeavouros.com/ |
+ /// '-----------------------------------------------'
+ /// ```
+ pub const fn ascii_rounded() -> Style<On, On, On, On, (), On> {
+ Style::new(
+ create_borders(
+ Line::full('-', '-', '.', '.'),
+ Line::full('-', '-', '\'', '\''),
+ Line::empty(),
+ Some('|'),
+ Some('|'),
+ Some('|'),
+ ),
+ [],
+ [],
+ )
+ }
+}
+
+impl<T, B, L, R, H, V, HLines, VLines> Style<T, B, L, R, H, V, HLines, VLines> {
+ /// Frame function returns a frame as a border.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use tabled::{Table, settings::{Style, Highlight, object::Rows}};
+ ///
+ /// let data = [["10:52:19", "Hello"], ["10:52:20", "World"]];
+ /// let table = Table::new(data)
+ /// .with(Highlight::new(Rows::first(), Style::modern().get_frame()))
+ /// .to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// concat!(
+ /// "┌──────────────────â”\n",
+ /// "│ 0 | 1 │\n",
+ /// "└──────────────────┘\n",
+ /// "| 10:52:19 | Hello |\n",
+ /// "+----------+-------+\n",
+ /// "| 10:52:20 | World |\n",
+ /// "+----------+-------+",
+ /// )
+ /// );
+ /// ```
+ #[cfg(feature = "std")]
+ #[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+ pub const fn get_frame(&self) -> super::Border {
+ let mut border = super::Border::filled(' ');
+
+ if let Some(c) = self.borders.top {
+ border = border.top(c);
+ }
+
+ if let Some(c) = self.borders.bottom {
+ border = border.bottom(c);
+ }
+
+ if let Some(c) = self.borders.left {
+ border = border.left(c);
+ }
+
+ if let Some(c) = self.borders.right {
+ border = border.right(c);
+ }
+
+ if let Some(c) = self.borders.top_left {
+ border = border.corner_top_left(c);
+ }
+
+ if let Some(c) = self.borders.bottom_left {
+ border = border.corner_bottom_left(c);
+ }
+
+ if let Some(c) = self.borders.top_right {
+ border = border.corner_top_right(c);
+ }
+
+ if let Some(c) = self.borders.bottom_right {
+ border = border.corner_bottom_right(c);
+ }
+
+ border
+ }
+
+ /// Get a [`Style`]'s default horizontal line.
+ ///
+ /// It doesn't return an overloaded line via [`Style::horizontals`].
+ ///
+ /// # Example
+ ///
+ #[cfg_attr(feature = "std", doc = "```")]
+ #[cfg_attr(not(feature = "std"), doc = "```ignore")]
+ /// use tabled::{settings::style::{Style, HorizontalLine, Line}, Table};
+ ///
+ /// let table = Table::new((0..3).map(|i| ("Hello", "World", i)))
+ /// .with(Style::ascii().remove_horizontal().horizontals([HorizontalLine::new(1, Style::modern().get_horizontal())]))
+ /// .to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// concat!(
+ /// "+-------+-------+-----+\n",
+ /// "| &str | &str | i32 |\n",
+ /// "├───────┼───────┼─────┤\n",
+ /// "| Hello | World | 0 |\n",
+ /// "| Hello | World | 1 |\n",
+ /// "| Hello | World | 2 |\n",
+ /// "+-------+-------+-----+",
+ /// )
+ /// )
+ /// ```
+ pub const fn get_horizontal(&self) -> Line {
+ Line::new(
+ self.borders.horizontal,
+ self.borders.intersection,
+ self.borders.left_intersection,
+ self.borders.right_intersection,
+ )
+ }
+
+ /// Get a [`Style`]'s default horizontal line.
+ ///
+ /// It doesn't return an overloaded line via [`Style::verticals`].
+ ///
+ /// # Example
+ ///
+ #[cfg_attr(feature = "std", doc = "```")]
+ #[cfg_attr(not(feature = "std"), doc = "```ignore")]
+ /// use tabled::{settings::style::{Style, VerticalLine, Line}, Table};
+ ///
+ /// let table = Table::new((0..3).map(|i| ("Hello", "World", i)))
+ /// .with(Style::ascii().remove_horizontal().verticals([VerticalLine::new(1, Style::modern().get_vertical())]))
+ /// .to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// concat!(
+ /// "+-------┬-------+-----+\n",
+ /// "| &str │ &str | i32 |\n",
+ /// "| Hello │ World | 0 |\n",
+ /// "| Hello │ World | 1 |\n",
+ /// "| Hello │ World | 2 |\n",
+ /// "+-------â”´-------+-----+",
+ /// )
+ /// )
+ /// ```
+ pub const fn get_vertical(&self) -> Line {
+ Line::new(
+ self.borders.vertical,
+ self.borders.intersection,
+ self.borders.top_intersection,
+ self.borders.bottom_intersection,
+ )
+ }
+
+ /// Sets a top border.
+ ///
+ /// Any corners and intersections which were set will be overridden.
+ pub fn top(mut self, c: char) -> Style<On, B, L, R, H, V, HLines, VLines>
+ where
+ for<'a> &'a mut VLines: IntoIterator<Item = &'a mut VerticalLine>,
+ {
+ self.borders.top = Some(c);
+
+ if self.borders.has_left() {
+ self.borders.top_left = Some(c);
+ }
+
+ if self.borders.has_right() {
+ self.borders.top_right = Some(c);
+ }
+
+ if self.borders.has_vertical() {
+ self.borders.top_intersection = Some(c);
+ }
+
+ for vl in &mut self.verticals {
+ vl.line.connector1 = Some(c);
+ }
+
+ Style::new(self.borders, self.horizontals, self.verticals)
+ }
+
+ /// Sets a bottom border.
+ ///
+ /// Any corners and intersections which were set will be overridden.
+ pub fn bottom(mut self, c: char) -> Style<T, On, L, R, H, V, HLines, VLines>
+ where
+ for<'a> &'a mut VLines: IntoIterator<Item = &'a mut VerticalLine>,
+ {
+ self.borders.bottom = Some(c);
+
+ if self.borders.has_left() {
+ self.borders.bottom_left = Some(c);
+ }
+
+ if self.borders.has_right() {
+ self.borders.bottom_right = Some(c);
+ }
+
+ if self.borders.has_vertical() {
+ self.borders.bottom_intersection = Some(c);
+ }
+
+ for vl in &mut self.verticals {
+ vl.line.connector2 = Some(c);
+ }
+
+ Style::new(self.borders, self.horizontals, self.verticals)
+ }
+
+ /// Sets a left border.
+ ///
+ /// Any corners and intersections which were set will be overridden.
+ pub fn left(mut self, c: char) -> Style<T, B, On, R, H, V, HLines, VLines>
+ where
+ for<'a> &'a mut HLines: IntoIterator<Item = &'a mut HorizontalLine>,
+ {
+ self.borders.left = Some(c);
+
+ if self.borders.has_top() {
+ self.borders.top_left = Some(c);
+ }
+
+ if self.borders.has_bottom() {
+ self.borders.bottom_left = Some(c);
+ }
+
+ if self.borders.has_horizontal() {
+ self.borders.left_intersection = Some(c);
+ }
+
+ for hl in &mut self.horizontals {
+ hl.line.connector1 = Some(c);
+ }
+
+ Style::new(self.borders, self.horizontals, self.verticals)
+ }
+
+ /// Sets a right border.
+ ///
+ /// Any corners and intersections which were set will be overridden.
+ pub fn right(mut self, c: char) -> Style<T, B, L, On, H, V, HLines, VLines>
+ where
+ for<'a> &'a mut HLines: IntoIterator<Item = &'a mut HorizontalLine>,
+ {
+ self.borders.right = Some(c);
+
+ if self.borders.has_top() {
+ self.borders.top_right = Some(c);
+ }
+
+ if self.borders.has_bottom() {
+ self.borders.bottom_right = Some(c);
+ }
+
+ if self.borders.has_horizontal() {
+ self.borders.right_intersection = Some(c);
+ }
+
+ for hl in &mut self.horizontals {
+ hl.line.connector2 = Some(c);
+ }
+
+ Style::new(self.borders, self.horizontals, self.verticals)
+ }
+
+ /// Sets a horizontal split line.
+ ///
+ /// Any corners and intersections which were set will be overridden.
+ pub fn horizontal(mut self, c: char) -> Style<T, B, L, R, On, V, HLines, VLines>
+ where
+ for<'a> &'a mut VLines: IntoIterator<Item = &'a mut VerticalLine>,
+ {
+ self.borders.horizontal = Some(c);
+
+ if self.borders.has_vertical() {
+ self.borders.intersection = Some(c);
+ }
+
+ if self.borders.has_left() {
+ self.borders.left_intersection = Some(c);
+ }
+
+ if self.borders.has_right() {
+ self.borders.right_intersection = Some(c);
+ }
+
+ for vl in &mut self.verticals {
+ vl.line.intersection = Some(c);
+ }
+
+ Style::new(self.borders, self.horizontals, self.verticals)
+ }
+
+ /// Sets a vertical split line.
+ ///
+ /// Any corners and intersections which were set will be overridden.
+ pub fn vertical(mut self, c: char) -> Style<T, B, L, R, H, On, HLines, VLines>
+ where
+ for<'a> &'a mut HLines: IntoIterator<Item = &'a mut HorizontalLine>,
+ {
+ self.borders.vertical = Some(c);
+
+ if self.borders.has_horizontal() {
+ self.borders.intersection = Some(c);
+ }
+
+ if self.borders.has_top() {
+ self.borders.top_intersection = Some(c);
+ }
+
+ if self.borders.has_bottom() {
+ self.borders.bottom_intersection = Some(c);
+ }
+
+ for hl in &mut self.horizontals {
+ hl.line.intersection = Some(c);
+ }
+
+ Style::new(self.borders, self.horizontals, self.verticals)
+ }
+
+ /// Set border horizontal lines.
+ ///
+ /// # Example
+ ///
+ #[cfg_attr(feature = "derive", doc = "```")]
+ #[cfg_attr(not(feature = "derive"), doc = "```ignore")]
+ /// use tabled::{settings::style::{Style, HorizontalLine, Line}, Table};
+ ///
+ /// let table = Table::new((0..3).map(|i| ("Hello", i)))
+ /// .with(Style::rounded().horizontals((1..4).map(|i| HorizontalLine::new(i, Line::filled('#')))))
+ /// .to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// concat!(
+ /// "╭───────┬─────╮\n",
+ /// "│ &str │ i32 │\n",
+ /// "###############\n",
+ /// "│ Hello │ 0 │\n",
+ /// "###############\n",
+ /// "│ Hello │ 1 │\n",
+ /// "###############\n",
+ /// "│ Hello │ 2 │\n",
+ /// "╰───────┴─────╯",
+ /// )
+ /// )
+ /// ```
+ pub fn horizontals<NewLines>(self, lines: NewLines) -> Style<T, B, L, R, H, V, NewLines, VLines>
+ where
+ NewLines: IntoIterator<Item = HorizontalLine> + Clone,
+ {
+ Style::new(self.borders, lines, self.verticals)
+ }
+
+ /// Set border vertical lines.
+ ///
+ /// # Example
+ ///
+ #[cfg_attr(feature = "derive", doc = "```")]
+ #[cfg_attr(not(feature = "derive"), doc = "```ignore")]
+ /// use tabled::{Table, settings::style::{Style, VerticalLine, Line}};
+ ///
+ /// let table = Table::new((0..3).map(|i| ("Hello", i)))
+ /// .with(Style::rounded().verticals((0..3).map(|i| VerticalLine::new(i, Line::filled('#')))))
+ /// .to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// concat!(
+ /// "#───────#─────#\n",
+ /// "# &str # i32 #\n",
+ /// "├───────┼─────┤\n",
+ /// "# Hello # 0 #\n",
+ /// "# Hello # 1 #\n",
+ /// "# Hello # 2 #\n",
+ /// "#───────#─────#",
+ /// )
+ /// )
+ /// ```
+ pub fn verticals<NewLines>(self, lines: NewLines) -> Style<T, B, L, R, H, V, HLines, NewLines>
+ where
+ NewLines: IntoIterator<Item = VerticalLine> + Clone,
+ {
+ Style::new(self.borders, self.horizontals, lines)
+ }
+
+ /// Removes all horizontal lines set by [`Style::horizontals`]
+ pub fn remove_horizontals(self) -> Style<T, B, L, R, H, V, HLineArray<0>, VLines> {
+ Style::new(self.borders, [], self.verticals)
+ }
+
+ /// Removes all verticals lines set by [`Style::verticals`]
+ pub fn remove_verticals(self) -> Style<T, B, L, R, H, V, HLines, VLineArray<0>> {
+ Style::new(self.borders, self.horizontals, [])
+ }
+}
+
+impl<B, R, H, V, HLines, VLines> Style<On, B, On, R, H, V, HLines, VLines> {
+ /// Sets a top left corner.
+ pub fn corner_top_left(mut self, c: char) -> Self {
+ self.borders.top_left = Some(c);
+
+ Style::new(self.borders, self.horizontals, self.verticals)
+ }
+}
+
+impl<B, L, H, V, HLines, VLines> Style<On, B, L, On, H, V, HLines, VLines> {
+ /// Sets a top right corner.
+ pub fn corner_top_right(mut self, c: char) -> Self {
+ self.borders.top_right = Some(c);
+
+ Style::new(self.borders, self.horizontals, self.verticals)
+ }
+}
+
+impl<T, L, H, V, HLines, VLines> Style<T, On, L, On, H, V, HLines, VLines> {
+ /// Sets a bottom right corner.
+ pub fn corner_bottom_right(mut self, c: char) -> Self {
+ self.borders.bottom_right = Some(c);
+
+ Style::new(self.borders, self.horizontals, self.verticals)
+ }
+}
+
+impl<T, R, H, V, HLines, VLines> Style<T, On, On, R, H, V, HLines, VLines> {
+ /// Sets a bottom left corner.
+ pub fn corner_bottom_left(mut self, c: char) -> Self {
+ self.borders.bottom_left = Some(c);
+
+ Style::new(self.borders, self.horizontals, self.verticals)
+ }
+}
+
+impl<T, B, R, V, HLines, VLines> Style<T, B, On, R, On, V, HLines, VLines> {
+ /// Sets a left intersection char.
+ pub fn intersection_left(mut self, c: char) -> Self {
+ self.borders.left_intersection = Some(c);
+
+ Style::new(self.borders, self.horizontals, self.verticals)
+ }
+}
+
+impl<T, B, L, V, HLines, VLines> Style<T, B, L, On, On, V, HLines, VLines> {
+ /// Sets a right intersection char.
+ pub fn intersection_right(mut self, c: char) -> Self {
+ self.borders.right_intersection = Some(c);
+
+ Style::new(self.borders, self.horizontals, self.verticals)
+ }
+}
+
+impl<B, L, R, H, HLines, VLines> Style<On, B, L, R, H, On, HLines, VLines> {
+ /// Sets a top intersection char.
+ pub fn intersection_top(mut self, c: char) -> Self {
+ self.borders.top_intersection = Some(c);
+
+ Style::new(self.borders, self.horizontals, self.verticals)
+ }
+}
+
+impl<T, L, R, H, HLines, VLines> Style<T, On, L, R, H, On, HLines, VLines> {
+ /// Sets a bottom intersection char.
+ pub fn intersection_bottom(mut self, c: char) -> Self {
+ self.borders.bottom_intersection = Some(c);
+
+ Style::new(self.borders, self.horizontals, self.verticals)
+ }
+}
+
+impl<T, B, L, R, HLines, VLines> Style<T, B, L, R, On, On, HLines, VLines> {
+ /// Sets an inner intersection char.
+ /// A char between horizontal and vertical split lines.
+ pub fn intersection(mut self, c: char) -> Self {
+ self.borders.intersection = Some(c);
+
+ Style::new(self.borders, self.horizontals, self.verticals)
+ }
+}
+
+impl<B, L, R, H, V, HLines, VLines> Style<On, B, L, R, H, V, HLines, VLines> {
+ /// Removes top border.
+ pub fn remove_top(
+ mut self,
+ ) -> Style<(), B, L, R, H, V, HLines, VerticalLineIter<VLines::IntoIter>>
+ where
+ VLines: IntoIterator<Item = VerticalLine> + Clone,
+ {
+ self.borders.top = None;
+ self.borders.top_intersection = None;
+ self.borders.top_left = None;
+ self.borders.top_right = None;
+
+ let iter = VerticalLineIter::new(self.verticals.into_iter(), false, true, false);
+ Style::new(self.borders, self.horizontals, iter)
+ }
+}
+
+impl<T, L, R, H, V, HLines, VLines> Style<T, On, L, R, H, V, HLines, VLines> {
+ /// Removes bottom border.
+ pub fn remove_bottom(
+ mut self,
+ ) -> Style<T, (), L, R, H, V, HLines, VerticalLineIter<VLines::IntoIter>>
+ where
+ VLines: IntoIterator<Item = VerticalLine> + Clone,
+ {
+ self.borders.bottom = None;
+ self.borders.bottom_intersection = None;
+ self.borders.bottom_left = None;
+ self.borders.bottom_right = None;
+
+ let iter = VerticalLineIter::new(self.verticals.into_iter(), false, false, true);
+ Style::new(self.borders, self.horizontals, iter)
+ }
+}
+
+impl<T, B, R, H, V, HLines, VLines> Style<T, B, On, R, H, V, HLines, VLines> {
+ /// Removes left border.
+ pub fn remove_left(
+ mut self,
+ ) -> Style<T, B, (), R, H, V, HorizontalLineIter<HLines::IntoIter>, VLines>
+ where
+ HLines: IntoIterator<Item = HorizontalLine> + Clone,
+ {
+ self.borders.left = None;
+ self.borders.left_intersection = None;
+ self.borders.top_left = None;
+ self.borders.bottom_left = None;
+
+ let iter = HorizontalLineIter::new(self.horizontals.into_iter(), false, true, false);
+ Style::new(self.borders, iter, self.verticals)
+ }
+}
+
+impl<T, B, L, H, V, HLines, VLines> Style<T, B, L, On, H, V, HLines, VLines> {
+ /// Removes right border.
+ pub fn remove_right(
+ mut self,
+ ) -> Style<T, B, L, (), H, V, HorizontalLineIter<HLines::IntoIter>, VLines>
+ where
+ HLines: IntoIterator<Item = HorizontalLine> + Clone,
+ {
+ self.borders.right = None;
+ self.borders.right_intersection = None;
+ self.borders.top_right = None;
+ self.borders.bottom_right = None;
+
+ let iter = HorizontalLineIter::new(self.horizontals.into_iter(), false, false, true);
+ Style::new(self.borders, iter, self.verticals)
+ }
+}
+
+impl<T, B, L, R, V, HLines, VLines> Style<T, B, L, R, On, V, HLines, VLines> {
+ /// Removes horizontal split lines.
+ ///
+ /// Not including custom split lines.
+ pub fn remove_horizontal(
+ mut self,
+ ) -> Style<T, B, L, R, (), V, HLines, VerticalLineIter<VLines::IntoIter>>
+ where
+ VLines: IntoIterator<Item = VerticalLine> + Clone,
+ {
+ self.borders.horizontal = None;
+ self.borders.left_intersection = None;
+ self.borders.right_intersection = None;
+ self.borders.intersection = None;
+
+ let iter = VerticalLineIter::new(self.verticals.into_iter(), true, false, false);
+ Style::new(self.borders, self.horizontals, iter)
+ }
+}
+
+impl<T, B, L, R, H, HLines, VLines> Style<T, B, L, R, H, On, HLines, VLines> {
+ /// Removes vertical split lines.
+ pub fn remove_vertical(
+ mut self,
+ ) -> Style<T, B, L, R, H, (), HorizontalLineIter<HLines::IntoIter>, VLines>
+ where
+ HLines: IntoIterator<Item = HorizontalLine> + Clone,
+ {
+ self.borders.vertical = None;
+ self.borders.top_intersection = None;
+ self.borders.bottom_intersection = None;
+ self.borders.intersection = None;
+
+ let iter = HorizontalLineIter::new(self.horizontals.into_iter(), true, false, false);
+ Style::new(self.borders, iter, self.verticals)
+ }
+}
+
+impl<T, B, L, R, H, V, HLines, VLines> Style<T, B, L, R, H, V, HLines, VLines> {
+ const fn new(borders: Borders<char>, horizontals: HLines, verticals: VLines) -> Self {
+ Self {
+ borders,
+ horizontals,
+ verticals,
+ _top: PhantomData,
+ _bottom: PhantomData,
+ _left: PhantomData,
+ _right: PhantomData,
+ _horizontal: PhantomData,
+ _vertical: PhantomData,
+ }
+ }
+
+ /// Return borders of a table.
+ pub const fn get_borders(&self) -> &Borders<char> {
+ &self.borders
+ }
+
+ /// Return custom horizontals which were set.
+ pub const fn get_horizontals(&self) -> &HLines {
+ &self.horizontals
+ }
+
+ /// Return custom verticals which were set.
+ pub const fn get_verticals(&self) -> &VLines {
+ &self.verticals
+ }
+}
+
+#[cfg(feature = "std")]
+impl<T, B, L, R, H, V, HLines, VLines, I, D> TableOption<I, D, ColoredConfig>
+ for Style<T, B, L, R, H, V, HLines, VLines>
+where
+ HLines: IntoIterator<Item = HorizontalLine> + Clone,
+ VLines: IntoIterator<Item = VerticalLine> + Clone,
+{
+ fn change(self, records: &mut I, cfg: &mut ColoredConfig, dimension: &mut D) {
+ cfg.clear_theme();
+
+ cfg.set_borders(self.borders);
+
+ for hl in self.horizontals {
+ hl.change(records, cfg, dimension);
+ }
+
+ for vl in self.verticals {
+ vl.change(records, cfg, dimension);
+ }
+ }
+}
+
+impl<T, B, L, R, H, V, HLines, VLines, I, D> TableOption<I, D, CompactConfig>
+ for Style<T, B, L, R, H, V, HLines, VLines>
+where
+ HLines: IntoIterator<Item = HorizontalLine> + Clone,
+{
+ fn change(self, records: &mut I, cfg: &mut CompactConfig, dimension: &mut D) {
+ *cfg = cfg.set_borders(self.borders);
+
+ let first_line = self.horizontals.into_iter().next();
+ if let Some(line) = first_line {
+ line.change(records, cfg, dimension);
+ }
+ }
+}
+
+impl<T, B, L, R, H, V, HLines, VLines, I, D> TableOption<I, D, CompactMultilineConfig>
+ for Style<T, B, L, R, H, V, HLines, VLines>
+where
+ HLines: IntoIterator<Item = HorizontalLine> + Clone,
+{
+ fn change(self, records: &mut I, cfg: &mut CompactMultilineConfig, dimension: &mut D) {
+ self.change(records, cfg.as_mut(), dimension)
+ }
+}
+
+/// An iterator which limits [`Line`] influence on iterations over lines for in [`Style`].
+#[derive(Debug, Clone)]
+pub struct HorizontalLineIter<I> {
+ iter: I,
+ intersection: bool,
+ left: bool,
+ right: bool,
+}
+
+impl<I> HorizontalLineIter<I> {
+ fn new(iter: I, intersection: bool, left: bool, right: bool) -> Self {
+ Self {
+ iter,
+ intersection,
+ left,
+ right,
+ }
+ }
+}
+
+impl<I> Iterator for HorizontalLineIter<I>
+where
+ I: Iterator<Item = HorizontalLine>,
+{
+ type Item = HorizontalLine;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ let mut hl = self.iter.next()?;
+
+ if self.intersection {
+ hl.line.intersection = None;
+ }
+
+ if self.left {
+ hl.line.connector1 = None;
+ }
+
+ if self.right {
+ hl.line.connector2 = None;
+ }
+
+ Some(hl)
+ }
+}
+
+/// An iterator which limits [`Line`] influence on iterations over lines for in [`Style`].
+#[derive(Debug, Clone)]
+pub struct VerticalLineIter<I> {
+ iter: I,
+ intersection: bool,
+ top: bool,
+ bottom: bool,
+}
+
+impl<I> VerticalLineIter<I> {
+ fn new(iter: I, intersection: bool, top: bool, bottom: bool) -> Self {
+ Self {
+ iter,
+ intersection,
+ top,
+ bottom,
+ }
+ }
+}
+
+impl<I> Iterator for VerticalLineIter<I>
+where
+ I: Iterator<Item = VerticalLine>,
+{
+ type Item = VerticalLine;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ let mut hl = self.iter.next()?;
+
+ if self.intersection {
+ hl.line.intersection = None;
+ }
+
+ if self.top {
+ hl.line.connector1 = None;
+ }
+
+ if self.bottom {
+ hl.line.connector2 = None;
+ }
+
+ Some(hl)
+ }
+}
+
+const fn create_borders(
+ top: Line,
+ bottom: Line,
+ horizontal: Line,
+ left: Option<char>,
+ right: Option<char>,
+ vertical: Option<char>,
+) -> Borders<char> {
+ Borders {
+ top: top.main,
+ bottom: bottom.main,
+ top_left: top.connector1,
+ top_right: top.connector2,
+ bottom_left: bottom.connector1,
+ bottom_right: bottom.connector2,
+ top_intersection: top.intersection,
+ bottom_intersection: bottom.intersection,
+ left_intersection: horizontal.connector1,
+ right_intersection: horizontal.connector2,
+ horizontal: horizontal.main,
+ intersection: horizontal.intersection,
+ left,
+ right,
+ vertical,
+ }
+}
diff --git a/vendor/tabled/src/settings/style/horizontal_line.rs b/vendor/tabled/src/settings/style/horizontal_line.rs
new file mode 100644
index 000000000..bbcdc3fb4
--- /dev/null
+++ b/vendor/tabled/src/settings/style/horizontal_line.rs
@@ -0,0 +1,69 @@
+use crate::{
+ grid::config::{CompactConfig, CompactMultilineConfig},
+ settings::TableOption,
+};
+
+#[cfg(feature = "std")]
+use crate::grid::config::{ColoredConfig, HorizontalLine as GridLine};
+
+use super::Line;
+
+/// A horizontal split line which can be used to set a border.
+#[cfg_attr(not(feature = "std"), allow(dead_code))]
+#[derive(Debug, Clone)]
+pub struct HorizontalLine {
+ pub(super) index: usize,
+ pub(super) line: Line,
+}
+
+impl HorizontalLine {
+ /// Creates a new horizontal split line.
+ pub const fn new(index: usize, line: Line) -> Self {
+ Self { index, line }
+ }
+
+ /// Sets a horizontal character.
+ pub const fn main(mut self, c: Option<char>) -> Self {
+ self.line.main = c;
+ self
+ }
+
+ /// Sets a vertical intersection character.
+ pub const fn intersection(mut self, c: Option<char>) -> Self {
+ self.line.intersection = c;
+ self
+ }
+
+ /// Sets a left character.
+ pub const fn left(mut self, c: Option<char>) -> Self {
+ self.line.connector1 = c;
+ self
+ }
+
+ /// Sets a right character.
+ pub const fn right(mut self, c: Option<char>) -> Self {
+ self.line.connector2 = c;
+ self
+ }
+}
+
+#[cfg(feature = "std")]
+impl<R, D> TableOption<R, D, ColoredConfig> for HorizontalLine {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ cfg.insert_horizontal_line(self.index, GridLine::from(self.line))
+ }
+}
+
+impl<R, D> TableOption<R, D, CompactConfig> for HorizontalLine {
+ fn change(self, _: &mut R, cfg: &mut CompactConfig, _: &mut D) {
+ if self.index == 1 {
+ *cfg = cfg.set_first_horizontal_line(papergrid::config::Line::from(self.line));
+ }
+ }
+}
+
+impl<R, D> TableOption<R, D, CompactMultilineConfig> for HorizontalLine {
+ fn change(self, records: &mut R, cfg: &mut CompactMultilineConfig, dimension: &mut D) {
+ self.change(records, cfg.as_mut(), dimension)
+ }
+}
diff --git a/vendor/tabled/src/settings/style/line.rs b/vendor/tabled/src/settings/style/line.rs
new file mode 100644
index 000000000..10b3895c4
--- /dev/null
+++ b/vendor/tabled/src/settings/style/line.rs
@@ -0,0 +1,91 @@
+#[cfg(feature = "std")]
+use crate::grid::config::{HorizontalLine, VerticalLine};
+
+/// The structure represent a vertical or horizontal line.
+#[derive(Debug, Default, Clone, Copy)]
+pub struct Line {
+ pub(crate) main: Option<char>,
+ pub(crate) intersection: Option<char>,
+ pub(crate) connector1: Option<char>,
+ pub(crate) connector2: Option<char>,
+}
+
+impl Line {
+ /// Creates a new [`Line`] object.
+ pub const fn new(
+ main: Option<char>,
+ intersection: Option<char>,
+ connector1: Option<char>,
+ connector2: Option<char>,
+ ) -> Self {
+ Self {
+ main,
+ intersection,
+ connector1,
+ connector2,
+ }
+ }
+
+ /// Creates a new [`Line`] object with all chars set.
+ pub const fn full(main: char, intersection: char, connector1: char, connector2: char) -> Self {
+ Self::new(
+ Some(main),
+ Some(intersection),
+ Some(connector1),
+ Some(connector2),
+ )
+ }
+
+ /// Creates a new [`Line`] object with all chars set to the provided one.
+ pub const fn filled(c: char) -> Self {
+ Self::full(c, c, c, c)
+ }
+
+ /// Creates a new [`Line`] object with all chars not set.
+ pub const fn empty() -> Self {
+ Self::new(None, None, None, None)
+ }
+
+ /// Checks if the line has nothing set.
+ pub const fn is_empty(&self) -> bool {
+ self.main.is_none()
+ && self.intersection.is_none()
+ && self.connector1.is_none()
+ && self.connector2.is_none()
+ }
+}
+
+#[cfg(feature = "std")]
+impl From<Line> for HorizontalLine {
+ fn from(l: Line) -> Self {
+ Self {
+ main: l.main,
+ intersection: l.intersection,
+ left: l.connector1,
+ right: l.connector2,
+ }
+ }
+}
+
+#[cfg(feature = "std")]
+impl From<Line> for VerticalLine {
+ fn from(l: Line) -> Self {
+ Self {
+ main: l.main,
+ intersection: l.intersection,
+ top: l.connector1,
+ bottom: l.connector2,
+ }
+ }
+}
+
+impl From<Line> for papergrid::config::Line<char> {
+ fn from(l: Line) -> Self {
+ Self {
+ main: l.main.unwrap_or(' '),
+ intersection: l.intersection,
+ connect1: l.connector1,
+ connect2: l.connector2,
+ }
+ }
+}
diff --git a/vendor/tabled/src/settings/style/mod.rs b/vendor/tabled/src/settings/style/mod.rs
new file mode 100644
index 000000000..b8d7f688d
--- /dev/null
+++ b/vendor/tabled/src/settings/style/mod.rs
@@ -0,0 +1,127 @@
+//! This module contains a list of primitives which can be applied to change [`Table`] style.
+//!
+//! ## [`Style`]
+//!
+//! It is responsible for a table border style.
+//! An individual cell border can be set by [`Border`].
+//!
+//! ### Example
+//!
+#![cfg_attr(feature = "std", doc = "```")]
+#![cfg_attr(not(feature = "std"), doc = "```ignore")]
+//! use tabled::{Table, settings::Style};
+//!
+//! let data = vec!["Hello", "2022"];
+//! let mut table = Table::new(&data);
+//! table.with(Style::psql());
+//!
+//! assert_eq!(
+//! table.to_string(),
+//! concat!(
+//! " &str \n",
+//! "-------\n",
+//! " Hello \n",
+//! " 2022 ",
+//! )
+//! )
+//! ```
+//!
+//! ## [`BorderText`]
+//!
+//! It's used to override a border with a custom text.
+//!
+//! ### Example
+//!
+#![cfg_attr(feature = "std", doc = "```")]
+#![cfg_attr(not(feature = "std"), doc = "```ignore")]
+//! use tabled::{Table, settings::style::{BorderText, Style}};
+//!
+//! let data = vec!["Hello", "2022"];
+//! let table = Table::new(&data)
+//! .with(Style::psql())
+//! .with(BorderText::new("Santa").horizontal(1))
+//! .to_string();
+//!
+//! assert_eq!(
+//! table,
+//! concat!(
+//! " &str \n",
+//! "Santa--\n",
+//! " Hello \n",
+//! " 2022 ",
+//! )
+//! )
+//! ```
+//!
+//! ## [`Border`]
+//!
+//! [`Border`] can be used to modify cell's borders.
+//!
+//! It's possible to set a collored border when `color` feature is on.
+//!
+//! ### Example
+//!
+#![cfg_attr(feature = "std", doc = "```")]
+#![cfg_attr(not(feature = "std"), doc = "```ignore")]
+//! use tabled::{Table, settings::{Modify, Style}};
+//!
+//! let data = vec!["Hello", "2022"];
+//! let table = Table::new(&data)
+//! .with(Style::psql())
+//! .with(Modify::new((0, 0)).with(Style::modern().get_frame()))
+//! .to_string();
+//!
+//! assert_eq!(
+//! table,
+//! concat!(
+//! "┌───────â”\n",
+//! "│ &str │\n",
+//! "└───────┘\n",
+//! " Hello \n",
+//! " 2022 ",
+//! )
+//! )
+//! ```
+//!
+//! ## [`RawStyle`]
+//!
+//! A different representation of [`Style`].
+//! With no checks in place.
+//!
+//! It also contains a list of types to support colors.
+//!
+//! [`Table`]: crate::Table
+//! [`BorderText`]: crate::settings::style::BorderText
+//! [`RawStyle`]: crate::settings::style::RawStyle
+
+#[cfg(feature = "std")]
+mod border;
+#[cfg(feature = "std")]
+mod border_char;
+#[cfg(feature = "std")]
+mod border_color;
+#[cfg(feature = "std")]
+mod border_text;
+#[cfg(feature = "std")]
+mod offset;
+#[cfg(feature = "std")]
+mod raw_style;
+#[cfg(feature = "std")]
+mod span_border_correction;
+
+mod builder;
+mod horizontal_line;
+mod line;
+mod vertical_line;
+
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub use self::{
+ border::Border, border_char::BorderChar, border_color::BorderColor, border_text::BorderText,
+ offset::Offset, raw_style::RawStyle, span_border_correction::BorderSpanCorrection,
+};
+
+pub use builder::{HorizontalLineIter, On, Style, VerticalLineIter};
+pub use horizontal_line::HorizontalLine;
+pub use line::Line;
+pub use vertical_line::VerticalLine;
diff --git a/vendor/tabled/src/settings/style/offset.rs b/vendor/tabled/src/settings/style/offset.rs
new file mode 100644
index 000000000..3f8a4f85e
--- /dev/null
+++ b/vendor/tabled/src/settings/style/offset.rs
@@ -0,0 +1,19 @@
+use crate::grid::config;
+
+/// The structure represents an offset in a text.
+#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
+pub enum Offset {
+ /// An offset from the start.
+ Begin(usize),
+ /// An offset from the end.
+ End(usize),
+}
+
+impl From<Offset> for config::Offset {
+ fn from(o: Offset) -> Self {
+ match o {
+ Offset::Begin(i) => config::Offset::Begin(i),
+ Offset::End(i) => config::Offset::End(i),
+ }
+ }
+}
diff --git a/vendor/tabled/src/settings/style/raw_style.rs b/vendor/tabled/src/settings/style/raw_style.rs
new file mode 100644
index 000000000..eedb48e79
--- /dev/null
+++ b/vendor/tabled/src/settings/style/raw_style.rs
@@ -0,0 +1,438 @@
+//! This module contains [`RawStyle`] structure, which is analogues to [`Style`] but not generic,
+//! so sometimes it can be used more conviently.
+
+use std::collections::HashMap;
+
+use crate::{
+ grid::{color::AnsiColor, config, config::Borders, config::ColoredConfig, records::Records},
+ settings::{Color, TableOption},
+};
+
+use super::{Border, HorizontalLine, Line, Style, VerticalLine};
+
+/// A raw style data, which can be produced safely from [`Style`].
+///
+/// It can be useful in order to not have a generics and be able to use it as a variable more conveniently.
+#[derive(Default, Debug, Clone)]
+pub struct RawStyle {
+ borders: Borders<char>,
+ colors: Borders<AnsiColor<'static>>,
+ horizontals: HashMap<usize, Line>,
+ verticals: HashMap<usize, Line>,
+}
+
+impl RawStyle {
+ /// Set a top border character.
+ pub fn set_top(&mut self, s: Option<char>) -> &mut Self {
+ self.borders.top = s;
+ self
+ }
+
+ /// Set a top border color.
+ pub fn set_color_top(&mut self, color: Color) -> &mut Self {
+ self.colors.top = Some(color.into());
+ self
+ }
+
+ /// Set a bottom border character.
+ pub fn set_bottom(&mut self, s: Option<char>) -> &mut Self {
+ self.borders.bottom = s;
+ self
+ }
+
+ /// Set a bottom border color.
+ pub fn set_color_bottom(&mut self, color: Color) -> &mut Self {
+ self.colors.bottom = Some(color.into());
+ self
+ }
+
+ /// Set a left border character.
+ pub fn set_left(&mut self, s: Option<char>) -> &mut Self {
+ self.borders.left = s;
+ self
+ }
+
+ /// Set a left border color.
+ pub fn set_color_left(&mut self, color: Color) -> &mut Self {
+ self.colors.left = Some(color.into());
+ self
+ }
+
+ /// Set a right border character.
+ pub fn set_right(&mut self, s: Option<char>) -> &mut Self {
+ self.borders.right = s;
+ self
+ }
+
+ /// Set a right border color.
+ pub fn set_color_right(&mut self, color: Color) -> &mut Self {
+ self.colors.right = Some(color.into());
+ self
+ }
+
+ /// Set a top intersection character.
+ pub fn set_intersection_top(&mut self, s: Option<char>) -> &mut Self {
+ self.borders.top_intersection = s;
+ self
+ }
+
+ /// Set a top intersection color.
+ pub fn set_color_intersection_top(&mut self, color: Color) -> &mut Self {
+ self.colors.top_intersection = Some(color.into());
+ self
+ }
+
+ /// Set a bottom intersection character.
+ pub fn set_intersection_bottom(&mut self, s: Option<char>) -> &mut Self {
+ self.borders.bottom_intersection = s;
+ self
+ }
+
+ /// Set a bottom intersection color.
+ pub fn set_color_intersection_bottom(&mut self, color: Color) -> &mut Self {
+ self.colors.bottom_intersection = Some(color.into());
+ self
+ }
+
+ /// Set a left split character.
+ pub fn set_intersection_left(&mut self, s: Option<char>) -> &mut Self {
+ self.borders.left_intersection = s;
+ self
+ }
+
+ /// Set a bottom intersection color.
+ pub fn set_color_intersection_left(&mut self, color: Color) -> &mut Self {
+ self.colors.left_intersection = Some(color.into());
+ self
+ }
+
+ /// Set a right split character.
+ pub fn set_intersection_right(&mut self, s: Option<char>) -> &mut Self {
+ self.borders.right_intersection = s;
+ self
+ }
+
+ /// Set a bottom intersection color.
+ pub fn set_color_intersection_right(&mut self, color: Color) -> &mut Self {
+ self.colors.right_intersection = Some(color.into());
+ self
+ }
+
+ /// Set an internal character.
+ pub fn set_intersection(&mut self, s: Option<char>) -> &mut Self {
+ self.borders.intersection = s;
+ self
+ }
+
+ /// Set a bottom intersection color.
+ pub fn set_color_intersection(&mut self, color: Color) -> &mut Self {
+ self.colors.intersection = Some(color.into());
+ self
+ }
+
+ /// Set a vertical character.
+ pub fn set_vertical(&mut self, s: Option<char>) -> &mut Self {
+ self.borders.vertical = s;
+ self
+ }
+
+ /// Set a bottom intersection color.
+ pub fn set_color_vertical(&mut self, color: Color) -> &mut Self {
+ self.colors.vertical = Some(color.into());
+ self
+ }
+
+ /// Set a horizontal character.
+ pub fn set_horizontal(&mut self, s: Option<char>) -> &mut Self {
+ self.borders.horizontal = s;
+ self
+ }
+
+ /// Set a bottom intersection color.
+ pub fn set_color_horizontal(&mut self, color: Color) -> &mut Self {
+ self.colors.horizontal = Some(color.into());
+ self
+ }
+
+ /// Set a character for a top left corner.
+ pub fn set_corner_top_left(&mut self, s: Option<char>) -> &mut Self {
+ self.borders.top_left = s;
+ self
+ }
+ /// Set a bottom intersection color.
+ pub fn set_color_corner_top_left(&mut self, color: Color) -> &mut Self {
+ self.colors.top_left = Some(color.into());
+ self
+ }
+
+ /// Set a character for a top right corner.
+ pub fn set_corner_top_right(&mut self, s: Option<char>) -> &mut Self {
+ self.borders.top_right = s;
+ self
+ }
+
+ /// Set a bottom intersection color.
+ pub fn set_color_corner_top_right(&mut self, color: Color) -> &mut Self {
+ self.colors.top_right = Some(color.into());
+ self
+ }
+
+ /// Set a character for a bottom left corner.
+ pub fn set_corner_bottom_left(&mut self, s: Option<char>) -> &mut Self {
+ self.borders.bottom_left = s;
+ self
+ }
+ /// Set a bottom intersection color.
+ pub fn set_color_corner_bottom_left(&mut self, color: Color) -> &mut Self {
+ self.colors.bottom_left = Some(color.into());
+ self
+ }
+
+ /// Set a character for a bottom right corner.
+ pub fn set_corner_bottom_right(&mut self, s: Option<char>) -> &mut Self {
+ self.borders.bottom_right = s;
+ self
+ }
+ /// Set a bottom intersection color.
+ pub fn set_color_corner_bottom_right(&mut self, color: Color) -> &mut Self {
+ self.colors.bottom_right = Some(color.into());
+ self
+ }
+
+ /// Set horizontal border lines.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use std::collections::HashMap;
+ /// use tabled::{Table, settings::style::{Style, Line, RawStyle}};
+ ///
+ /// let mut style = RawStyle::from(Style::re_structured_text());
+ ///
+ /// let mut lines = HashMap::new();
+ /// lines.insert(1, Style::extended().get_horizontal());
+ /// style.set_horizontals(lines);
+ ///
+ /// let table = Table::new((0..3).map(|i| ("Hello", i)))
+ /// .with(style)
+ /// .to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// concat!(
+ /// " ======= ===== \n",
+ /// " &str i32 \n",
+ /// "â• â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•£\n",
+ /// " Hello 0 \n",
+ /// " Hello 1 \n",
+ /// " Hello 2 \n",
+ /// " ======= ===== ",
+ /// ),
+ /// )
+ /// ```
+ pub fn set_horizontals(&mut self, lines: HashMap<usize, Line>) -> &mut Self {
+ self.horizontals = lines;
+ self
+ }
+
+ /// Insert a horizontal line to a specific row location.
+ pub fn insert_horizontal(&mut self, row: usize, line: Line) -> &mut Self {
+ let _ = self.horizontals.insert(row, line);
+ self
+ }
+
+ /// Insert a horizontal line to a specific row location.
+ pub fn get_horizontal(&self, row: usize) -> Option<Line> {
+ self.horizontals.get(&row).cloned()
+ }
+
+ /// Set vertical border lines.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use std::collections::HashMap;
+ /// use tabled::{Table, settings::style::{Style, Line, RawStyle}};
+ ///
+ /// let mut style = RawStyle::from(Style::re_structured_text());
+ ///
+ /// let mut lines = HashMap::new();
+ /// lines.insert(1, Style::extended().get_horizontal());
+ /// style.set_verticals(lines);
+ ///
+ /// let table = Table::new((0..3).map(|i| ("Hello", i)))
+ /// .with(style)
+ /// .to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// concat!(
+ /// "=======â• =====\n",
+ /// " &str â• i32 \n",
+ /// "======= =====\n",
+ /// " Hello â• 0 \n",
+ /// " Hello â• 1 \n",
+ /// " Hello â• 2 \n",
+ /// "=======â•£=====",
+ /// ),
+ /// )
+ /// ```
+ pub fn set_verticals(&mut self, lines: HashMap<usize, Line>) -> &mut Self {
+ self.verticals = lines;
+ self
+ }
+
+ /// Insert a vertical line into specific column location.
+ pub fn insert_vertical(&mut self, column: usize, line: Line) -> &mut Self {
+ let _ = self.verticals.insert(column, line);
+ self
+ }
+
+ /// Get a left char.
+ pub fn get_left(&self) -> Option<char> {
+ self.borders.left
+ }
+
+ /// Get a left intersection char.
+ pub fn get_left_intersection(&self) -> Option<char> {
+ self.borders.left_intersection
+ }
+
+ /// Get a right char.
+ pub fn get_right(&self) -> Option<char> {
+ self.borders.right
+ }
+
+ /// Get a right intersection char.
+ pub fn get_right_intersection(&self) -> Option<char> {
+ self.borders.right_intersection
+ }
+
+ /// Get a top char.
+ pub fn get_top(&self) -> Option<char> {
+ self.borders.top
+ }
+
+ /// Get a top left char.
+ pub fn get_top_left(&self) -> Option<char> {
+ self.borders.top_left
+ }
+
+ /// Get a top right char.
+ pub fn get_top_right(&self) -> Option<char> {
+ self.borders.top_right
+ }
+
+ /// Get a top intersection char.
+ pub fn get_top_intersection(&self) -> Option<char> {
+ self.borders.top_intersection
+ }
+
+ /// Get a bottom intersection char.
+ pub fn get_bottom(&self) -> Option<char> {
+ self.borders.bottom
+ }
+
+ /// Get a bottom intersection char.
+ pub fn get_bottom_left(&self) -> Option<char> {
+ self.borders.bottom_left
+ }
+
+ /// Get a bottom intersection char.
+ pub fn get_bottom_right(&self) -> Option<char> {
+ self.borders.bottom_right
+ }
+
+ /// Get a bottom intersection char.
+ pub fn get_bottom_intersection(&self) -> Option<char> {
+ self.borders.bottom_intersection
+ }
+
+ /// Returns an outer border of the style.
+ pub fn get_frame(&self) -> Border {
+ Border::from(crate::grid::config::Border {
+ top: self.borders.top,
+ bottom: self.borders.bottom,
+ left: self.borders.left,
+ right: self.borders.right,
+ left_top_corner: self.borders.top_left,
+ right_top_corner: self.borders.top_right,
+ left_bottom_corner: self.borders.bottom_left,
+ right_bottom_corner: self.borders.bottom_right,
+ })
+ }
+
+ /// Returns an general borders configuration of the style.
+ pub fn get_borders(&self) -> Borders<char> {
+ self.borders
+ }
+}
+
+impl From<Borders<char>> for RawStyle {
+ fn from(borders: Borders<char>) -> Self {
+ Self {
+ borders,
+ horizontals: HashMap::new(),
+ verticals: HashMap::new(),
+ colors: Borders::default(),
+ }
+ }
+}
+
+impl<R, D> TableOption<R, D, ColoredConfig> for RawStyle
+where
+ R: Records,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, dimension: &mut D) {
+ (&self).change(records, cfg, dimension)
+ }
+}
+
+impl<R, D> TableOption<R, D, ColoredConfig> for &RawStyle {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ cfg.clear_theme();
+
+ cfg.set_borders(self.borders);
+
+ for (&row, line) in &self.horizontals {
+ cfg.insert_horizontal_line(row, config::HorizontalLine::from(*line));
+ }
+
+ for (&col, line) in &self.verticals {
+ cfg.insert_vertical_line(col, config::VerticalLine::from(*line));
+ }
+
+ if !self.colors.is_empty() {
+ cfg.set_borders_color(self.colors.clone());
+ }
+ }
+}
+
+impl<T, B, L, R, H, V, HLines, VLines> From<Style<T, B, L, R, H, V, HLines, VLines>> for RawStyle
+where
+ HLines: IntoIterator<Item = HorizontalLine> + Clone,
+ VLines: IntoIterator<Item = VerticalLine> + Clone,
+{
+ fn from(style: Style<T, B, L, R, H, V, HLines, VLines>) -> Self {
+ let horizontals = style
+ .get_horizontals()
+ .clone()
+ .into_iter()
+ .map(|hr| (hr.index, hr.line))
+ .collect();
+
+ let verticals = style
+ .get_verticals()
+ .clone()
+ .into_iter()
+ .map(|hr| (hr.index, hr.line))
+ .collect();
+
+ Self {
+ borders: *style.get_borders(),
+ horizontals,
+ verticals,
+ colors: Borders::default(),
+ }
+ }
+}
diff --git a/vendor/tabled/src/settings/style/span_border_correction.rs b/vendor/tabled/src/settings/style/span_border_correction.rs
new file mode 100644
index 000000000..665a12788
--- /dev/null
+++ b/vendor/tabled/src/settings/style/span_border_correction.rs
@@ -0,0 +1,216 @@
+//! This module contains [`BorderSpanCorrection`] structure, which can be useful when [`Span`] is used, and
+//! you want to fix the intersections symbols which are left intact by default.
+//!
+//! [`Span`]: crate::settings::span::Span
+
+use crate::{
+ grid::{
+ config::{ColoredConfig, Position, SpannedConfig},
+ records::{ExactRecords, Records},
+ },
+ settings::TableOption,
+};
+
+/// A correctness function of style for [`Table`] which has [`Span`]s.
+///
+/// Try to fix the style when table contains spans.
+///
+/// By default [`Style`] doesn't implies any logic to better render split lines when
+/// [`Span`] is used.
+///
+/// So this function can be used to set the split lines in regard of spans used.
+///
+/// # Example
+///
+/// ```
+/// use tabled::{
+/// Table,
+/// settings::{
+/// Modify, style::{Style, BorderSpanCorrection},
+/// Format, Span, object::Cell
+/// }
+/// };
+///
+/// let data = vec![
+/// ("09", "June", "2022"),
+/// ("10", "July", "2022"),
+/// ];
+///
+/// let mut table = Table::new(data);
+/// table.with(Modify::new((0, 0)).with("date").with(Span::column(3)));
+///
+/// assert_eq!(
+/// table.to_string(),
+/// concat!(
+/// "+----+------+------+\n",
+/// "| date |\n",
+/// "+----+------+------+\n",
+/// "| 09 | June | 2022 |\n",
+/// "+----+------+------+\n",
+/// "| 10 | July | 2022 |\n",
+/// "+----+------+------+",
+/// )
+/// );
+///
+/// table.with(BorderSpanCorrection);
+///
+/// assert_eq!(
+/// table.to_string(),
+/// concat!(
+/// "+------------------+\n",
+/// "| date |\n",
+/// "+----+------+------+\n",
+/// "| 09 | June | 2022 |\n",
+/// "+----+------+------+\n",
+/// "| 10 | July | 2022 |\n",
+/// "+----+------+------+",
+/// )
+/// );
+/// ```
+/// See [`BorderSpanCorrection`].
+///
+/// [`Table`]: crate::Table
+/// [`Span`]: crate::settings::span::Span
+/// [`Style`]: crate::settings::Style
+/// [`Style::correct_spans`]: crate::settings::style::BorderSpanCorrection
+#[derive(Debug)]
+pub struct BorderSpanCorrection;
+
+impl<R, D> TableOption<R, D, ColoredConfig> for BorderSpanCorrection
+where
+ R: Records + ExactRecords,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let shape = (records.count_rows(), records.count_columns());
+ correct_span_styles(cfg, shape);
+ }
+}
+
+fn correct_span_styles(cfg: &mut SpannedConfig, shape: (usize, usize)) {
+ for ((row, c), span) in cfg.get_column_spans() {
+ for col in c..c + span {
+ if col == 0 {
+ continue;
+ }
+
+ let is_first = col == c;
+ let has_up = row > 0 && has_left(cfg, (row - 1, col), shape);
+ let has_down = row + 1 < shape.0 && has_left(cfg, (row + 1, col), shape);
+
+ let borders = cfg.get_borders();
+
+ let mut border = cfg.get_border((row, col), shape);
+
+ let has_top_border = border.left_top_corner.is_some() && border.top.is_some();
+ if has_top_border {
+ if has_up && is_first {
+ border.left_top_corner = borders.intersection;
+ } else if has_up {
+ border.left_top_corner = borders.bottom_intersection;
+ } else if is_first {
+ border.left_top_corner = borders.top_intersection;
+ } else {
+ border.left_top_corner = border.top;
+ }
+ }
+
+ let has_bottom_border = border.left_bottom_corner.is_some() && border.bottom.is_some();
+ if has_bottom_border {
+ if has_down && is_first {
+ border.left_bottom_corner = borders.intersection;
+ } else if has_down {
+ border.left_bottom_corner = borders.top_intersection;
+ } else if is_first {
+ border.left_bottom_corner = borders.bottom_intersection;
+ } else {
+ border.left_bottom_corner = border.bottom;
+ }
+ }
+
+ cfg.set_border((row, col), border);
+ }
+ }
+
+ for ((r, col), span) in cfg.get_row_spans() {
+ for row in r + 1..r + span {
+ let mut border = cfg.get_border((row, col), shape);
+ let borders = cfg.get_borders();
+
+ let has_left_border = border.left_top_corner.is_some();
+ if has_left_border {
+ let has_left = col > 0 && has_top(cfg, (row, col - 1), shape);
+ if has_left {
+ border.left_top_corner = borders.right_intersection;
+ } else {
+ border.left_top_corner = borders.vertical;
+ }
+ }
+
+ let has_right_border = border.right_top_corner.is_some();
+ if has_right_border {
+ let has_right = col + 1 < shape.1 && has_top(cfg, (row, col + 1), shape);
+ if has_right {
+ border.right_top_corner = borders.left_intersection;
+ } else {
+ border.right_top_corner = borders.vertical;
+ }
+ }
+
+ cfg.set_border((row, col), border);
+ }
+ }
+
+ let cells = iter_totaly_spanned_cells(cfg, shape).collect::<Vec<_>>();
+ for (row, col) in cells {
+ if row == 0 {
+ continue;
+ }
+
+ let mut border = cfg.get_border((row, col), shape);
+ let borders = cfg.get_borders();
+
+ let has_right = col + 1 < shape.1 && has_top(cfg, (row, col + 1), shape);
+ let has_up = has_left(cfg, (row - 1, col), shape);
+ if has_up && !has_right {
+ border.right_top_corner = borders.right_intersection;
+ }
+
+ let has_down = row + 1 < shape.0 && has_left(cfg, (row + 1, col), shape);
+ if has_down {
+ border.left_bottom_corner = borders.top_intersection;
+ }
+
+ cfg.set_border((row, col), border);
+ }
+}
+
+fn has_left(cfg: &SpannedConfig, pos: Position, shape: (usize, usize)) -> bool {
+ if cfg.is_cell_covered_by_both_spans(pos) || cfg.is_cell_covered_by_column_span(pos) {
+ return false;
+ }
+
+ let border = cfg.get_border(pos, shape);
+ border.left.is_some() || border.left_top_corner.is_some() || border.left_bottom_corner.is_some()
+}
+
+fn has_top(cfg: &SpannedConfig, pos: Position, shape: (usize, usize)) -> bool {
+ if cfg.is_cell_covered_by_both_spans(pos) || cfg.is_cell_covered_by_row_span(pos) {
+ return false;
+ }
+
+ let border = cfg.get_border(pos, shape);
+ border.top.is_some() || border.left_top_corner.is_some() || border.right_top_corner.is_some()
+}
+
+fn iter_totaly_spanned_cells(
+ cfg: &SpannedConfig,
+ shape: (usize, usize),
+) -> impl Iterator<Item = Position> + '_ {
+ // todo: can be optimized
+ let (count_rows, count_cols) = shape;
+ (0..count_rows).flat_map(move |row| {
+ (0..count_cols)
+ .map(move |col| (row, col))
+ .filter(move |&p| cfg.is_cell_covered_by_both_spans(p))
+ })
+}
diff --git a/vendor/tabled/src/settings/style/vertical_line.rs b/vendor/tabled/src/settings/style/vertical_line.rs
new file mode 100644
index 000000000..adbef2c82
--- /dev/null
+++ b/vendor/tabled/src/settings/style/vertical_line.rs
@@ -0,0 +1,50 @@
+#[cfg(feature = "std")]
+use crate::grid::config::{ColoredConfig, VerticalLine as VLine};
+
+use super::Line;
+
+/// A horizontal split line which can be used to set a border.
+#[cfg_attr(not(feature = "std"), allow(dead_code))]
+#[derive(Debug, Clone)]
+pub struct VerticalLine {
+ pub(crate) index: usize,
+ pub(crate) line: Line,
+}
+
+impl VerticalLine {
+ /// Creates a new horizontal split line.
+ pub const fn new(index: usize, line: Line) -> Self {
+ Self { index, line }
+ }
+
+ /// Sets a horizontal character.
+ pub const fn main(mut self, c: Option<char>) -> Self {
+ self.line.main = c;
+ self
+ }
+
+ /// Sets a vertical intersection character.
+ pub const fn intersection(mut self, c: Option<char>) -> Self {
+ self.line.intersection = c;
+ self
+ }
+
+ /// Sets a top character.
+ pub const fn top(mut self, c: Option<char>) -> Self {
+ self.line.connector1 = c;
+ self
+ }
+
+ /// Sets a bottom character.
+ pub const fn bottom(mut self, c: Option<char>) -> Self {
+ self.line.connector2 = c;
+ self
+ }
+}
+
+#[cfg(feature = "std")]
+impl<R, D> crate::settings::TableOption<R, D, ColoredConfig> for VerticalLine {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ cfg.insert_vertical_line(self.index, VLine::from(self.line));
+ }
+}
diff --git a/vendor/tabled/src/settings/table_option.rs b/vendor/tabled/src/settings/table_option.rs
new file mode 100644
index 000000000..e20aa4480
--- /dev/null
+++ b/vendor/tabled/src/settings/table_option.rs
@@ -0,0 +1,30 @@
+/// A trait which is responsible for configuration of a [`Table`].
+///
+/// [`Table`]: crate::Table
+pub trait TableOption<R, D, C> {
+ /// The function allows modification of records and a grid configuration.
+ fn change(self, records: &mut R, cfg: &mut C, dimension: &mut D);
+}
+
+impl<T, R, D, C> TableOption<R, D, C> for &[T]
+where
+ for<'a> &'a T: TableOption<R, D, C>,
+{
+ fn change(self, records: &mut R, cfg: &mut C, dimension: &mut D) {
+ for opt in self {
+ opt.change(records, cfg, dimension)
+ }
+ }
+}
+
+#[cfg(feature = "std")]
+impl<T, R, D, C> TableOption<R, D, C> for Vec<T>
+where
+ T: TableOption<R, D, C>,
+{
+ fn change(self, records: &mut R, cfg: &mut C, dimension: &mut D) {
+ for opt in self {
+ opt.change(records, cfg, dimension)
+ }
+ }
+}
diff --git a/vendor/tabled/src/settings/themes/colorization.rs b/vendor/tabled/src/settings/themes/colorization.rs
new file mode 100644
index 000000000..41c721330
--- /dev/null
+++ b/vendor/tabled/src/settings/themes/colorization.rs
@@ -0,0 +1,388 @@
+use papergrid::{
+ color::AnsiColor,
+ config::{Entity, Sides},
+};
+
+use crate::{
+ grid::{
+ config::ColoredConfig,
+ records::{ExactRecords, Records},
+ },
+ settings::{object::Object, Color, TableOption},
+};
+
+/// [`Colorization`] sets a color for the whole table data (so it's not include the borders).
+///
+/// You can colorize borders in a different round using [`BorderColor`] or [`RawStyle`]
+///
+/// # Examples
+///
+/// ```
+/// use std::iter::FromIterator;
+///
+/// use tabled::builder::Builder;
+/// use tabled::settings::{style::BorderColor, themes::Colorization, Color, Style};
+///
+/// let data = [["Hello", "World"], ["Hi", "World"], ["Halo", "World"]];
+///
+/// let color1 = Color::FG_BLACK | Color::BG_WHITE;
+/// let color2 = Color::BG_BLACK | Color::FG_WHITE;
+/// let color3 = Color::FG_RED | Color::BG_RED;
+///
+/// let mut table = Builder::from_iter(data).build();
+/// table
+/// .with(Colorization::chess(color1, color2))
+/// .with(Style::modern())
+/// .with(BorderColor::filled(color3));
+///
+/// println!("{table}");
+/// ```
+///
+/// [`RawStyle`]: crate::settings::style::RawStyle
+/// [`BorderColor`]: crate::settings::style::BorderColor
+#[derive(Debug, Clone)]
+pub struct Colorization {
+ pattern: ColorizationPattern,
+ colors: Vec<Color>,
+}
+
+#[derive(Debug, Clone)]
+enum ColorizationPattern {
+ Column,
+ Row,
+ ByRow,
+ ByColumn,
+ Chess,
+}
+
+impl Colorization {
+ /// Creates a [`Colorization`] with a chess pattern.
+ ///
+ /// ```
+ /// use std::iter::FromIterator;
+ ///
+ /// use tabled::builder::Builder;
+ /// use tabled::settings::{themes::Colorization, Color, Style};
+ ///
+ /// let data = [["Hello", "World"], ["Hi", "World"], ["Halo", "World"]];
+ ///
+ /// let color1 = Color::FG_BLACK | Color::BG_WHITE;
+ /// let color2 = Color::BG_BLACK | Color::FG_WHITE;
+ ///
+ /// let mut table = Builder::from_iter(data).build();
+ /// table
+ /// .with(Colorization::chess(color1, color2))
+ /// .with(Style::empty());
+ ///
+ /// println!("{table}");
+ /// ```
+ pub fn chess(white: Color, black: Color) -> Self {
+ Self::new(vec![white, black], ColorizationPattern::Chess)
+ }
+
+ /// Creates a [`Colorization`] with a target [`Object`].
+ ///
+ /// ```
+ /// use std::iter::FromIterator;
+ ///
+ /// use tabled::builder::Builder;
+ /// use tabled::settings::object::Rows;
+ /// use tabled::settings::{themes::Colorization, Color, Style};
+ ///
+ /// let data = [["Hello", "World"], ["Hi", "World"], ["Halo", "World"]];
+ ///
+ /// let color1 = Color::FG_BLACK | Color::BG_WHITE;
+ /// let color2 = Color::BG_BLACK | Color::FG_WHITE;
+ ///
+ /// let mut table = Builder::from_iter(data).build();
+ /// table
+ /// .with(Colorization::exact([color1, color2], Rows::first()))
+ /// .with(Style::empty());
+ ///
+ /// println!("{table}");
+ /// ```
+ pub fn exact<I, O>(colors: I, target: O) -> ExactColorization<O>
+ where
+ I: IntoIterator,
+ I::Item: Into<Color>,
+ {
+ let colors = colors.into_iter().map(Into::into).collect();
+ ExactColorization::new(colors, target)
+ }
+
+ /// Creates a [`Colorization`] with a pattern which changes row by row.
+ ///
+ /// ```
+ /// use std::iter::FromIterator;
+ ///
+ /// use tabled::builder::Builder;
+ /// use tabled::settings::object::Rows;
+ /// use tabled::settings::{themes::Colorization, Color, Style};
+ ///
+ /// let data = [["Hello", "World"], ["Hi", "World"], ["Halo", "World"]];
+ ///
+ /// let color1 = Color::FG_BLACK | Color::BG_WHITE;
+ /// let color2 = Color::BG_BLACK | Color::FG_WHITE;
+ ///
+ /// let mut table = Builder::from_iter(data).build();
+ /// table
+ /// .with(Colorization::rows([color1, color2]))
+ /// .with(Style::empty());
+ ///
+ /// println!("{table}");
+ /// ```
+ pub fn rows<I>(colors: I) -> Self
+ where
+ I: IntoIterator,
+ I::Item: Into<Color>,
+ {
+ Self::new(colors, ColorizationPattern::Row)
+ }
+
+ /// Creates a [`Colorization`] with a pattern which changes column by column.
+ ///
+ /// ```
+ /// use std::iter::FromIterator;
+ ///
+ /// use tabled::builder::Builder;
+ /// use tabled::settings::object::Rows;
+ /// use tabled::settings::{themes::Colorization, Color, Style};
+ ///
+ /// let data = [["Hello", "World"], ["Hi", "World"], ["Halo", "World"]];
+ ///
+ /// let color1 = Color::FG_BLACK | Color::BG_WHITE;
+ /// let color2 = Color::BG_BLACK | Color::FG_WHITE;
+ ///
+ /// let mut table = Builder::from_iter(data).build();
+ /// table
+ /// .with(Colorization::columns([color1, color2]))
+ /// .with(Style::empty());
+ ///
+ /// println!("{table}");
+ /// ```
+ pub fn columns<I>(colors: I) -> Self
+ where
+ I: IntoIterator,
+ I::Item: Into<Color>,
+ {
+ Self::new(colors, ColorizationPattern::Column)
+ }
+
+ /// Creates a [`Colorization`] with a pattern which peaks cells one by one iterating over rows.
+ ///
+ /// ```
+ /// use std::iter::FromIterator;
+ ///
+ /// use tabled::builder::Builder;
+ /// use tabled::settings::object::Rows;
+ /// use tabled::settings::{themes::Colorization, Color, Style};
+ ///
+ /// let data = [["Hello", "World"], ["Hi", "World"], ["Halo", "World"]];
+ ///
+ /// let color1 = Color::FG_BLACK | Color::BG_WHITE;
+ /// let color2 = Color::BG_BLACK | Color::FG_WHITE;
+ ///
+ /// let mut table = Builder::from_iter(data).build();
+ /// table
+ /// .with(Colorization::by_row([color1, color2]))
+ /// .with(Style::empty());
+ ///
+ /// println!("{table}");
+ /// ```
+ pub fn by_row<I>(colors: I) -> Self
+ where
+ I: IntoIterator,
+ I::Item: Into<Color>,
+ {
+ Self::new(colors, ColorizationPattern::ByRow)
+ }
+
+ /// Creates a [`Colorization`] with a pattern which peaks cells one by one iterating over columns.
+ ///
+ /// ```
+ /// use std::iter::FromIterator;
+ ///
+ /// use tabled::builder::Builder;
+ /// use tabled::settings::object::Rows;
+ /// use tabled::settings::{themes::Colorization, Color, Style};
+ ///
+ /// let data = [["Hello", "World"], ["Hi", "World"], ["Halo", "World"]];
+ ///
+ /// let color1 = Color::FG_BLACK | Color::BG_WHITE;
+ /// let color2 = Color::BG_BLACK | Color::FG_WHITE;
+ ///
+ /// let mut table = Builder::from_iter(data).build();
+ /// table
+ /// .with(Colorization::by_column([color1, color2]))
+ /// .with(Style::empty());
+ ///
+ /// println!("{table}");
+ /// ```
+ pub fn by_column<I>(colors: I) -> Self
+ where
+ I: IntoIterator,
+ I::Item: Into<Color>,
+ {
+ Self::new(colors, ColorizationPattern::ByColumn)
+ }
+
+ fn new<I>(colors: I, pattern: ColorizationPattern) -> Self
+ where
+ I: IntoIterator,
+ I::Item: Into<Color>,
+ {
+ let colors = colors.into_iter().map(Into::into).collect();
+ Self { colors, pattern }
+ }
+}
+
+impl<R, D> TableOption<R, D, ColoredConfig> for Colorization
+where
+ R: Records + ExactRecords,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ if self.colors.is_empty() {
+ return;
+ }
+
+ let count_columns = records.count_columns();
+ let count_rows = records.count_rows();
+
+ match self.pattern {
+ ColorizationPattern::Column => colorize_columns(&self.colors, count_columns, cfg),
+ ColorizationPattern::Row => colorize_rows(&self.colors, count_rows, cfg),
+ ColorizationPattern::ByRow => {
+ colorize_by_row(&self.colors, count_rows, count_columns, cfg)
+ }
+ ColorizationPattern::ByColumn => {
+ colorize_by_column(&self.colors, count_rows, count_columns, cfg)
+ }
+ ColorizationPattern::Chess => {
+ colorize_diogonals(&self.colors, count_rows, count_columns, cfg)
+ }
+ }
+ }
+}
+
+fn colorize_columns(colors: &[Color], count_columns: usize, cfg: &mut ColoredConfig) {
+ for (col, color) in (0..count_columns).zip(colors.iter().cycle()) {
+ colorize_entity(color, Entity::Column(col), cfg);
+ }
+}
+
+fn colorize_rows(colors: &[Color], count_rows: usize, cfg: &mut ColoredConfig) {
+ for (row, color) in (0..count_rows).zip(colors.iter().cycle()) {
+ colorize_entity(color, Entity::Row(row), cfg);
+ }
+}
+
+fn colorize_by_row(
+ colors: &[Color],
+ count_rows: usize,
+ count_columns: usize,
+ cfg: &mut ColoredConfig,
+) {
+ let mut color_peek = colors.iter().cycle();
+ for row in 0..count_rows {
+ for col in 0..count_columns {
+ let color = color_peek.next().unwrap();
+ colorize_entity(color, Entity::Cell(row, col), cfg);
+ }
+ }
+}
+
+fn colorize_by_column(
+ colors: &[Color],
+ count_rows: usize,
+ count_columns: usize,
+ cfg: &mut ColoredConfig,
+) {
+ let mut color_peek = colors.iter().cycle();
+ for col in 0..count_columns {
+ for row in 0..count_rows {
+ let color = color_peek.next().unwrap();
+ colorize_entity(color, Entity::Cell(row, col), cfg);
+ }
+ }
+}
+
+fn colorize_diogonals(
+ colors: &[Color],
+ count_rows: usize,
+ count_columns: usize,
+ cfg: &mut ColoredConfig,
+) {
+ let mut color_peek = colors.iter().cycle();
+ for mut row in 0..count_rows {
+ let color = color_peek.next().unwrap();
+ for col in 0..count_columns {
+ colorize_entity(color, Entity::Cell(row, col), cfg);
+
+ row += 1;
+ if row == count_rows {
+ break;
+ }
+ }
+ }
+
+ let _ = color_peek.next().unwrap();
+
+ for mut col in 1..count_columns {
+ let color = color_peek.next().unwrap();
+ for row in 0..count_rows {
+ colorize_entity(color, Entity::Cell(row, col), cfg);
+
+ col += 1;
+ if col == count_columns {
+ break;
+ }
+ }
+ }
+}
+
+fn colorize_entity(color: &Color, pos: Entity, cfg: &mut ColoredConfig) {
+ let ansi_color = AnsiColor::from(color.clone());
+ let _ = cfg.set_color(pos, ansi_color.clone());
+ cfg.set_justification_color(pos, Some(ansi_color.clone()));
+ cfg.set_padding_color(
+ pos,
+ Sides::new(
+ Some(ansi_color.clone()),
+ Some(ansi_color.clone()),
+ Some(ansi_color.clone()),
+ Some(ansi_color),
+ ),
+ );
+}
+
+/// A colorization of a target [`Object`].
+///
+/// Can be created by [`Colorization::exact`].
+#[derive(Debug, Clone)]
+pub struct ExactColorization<O> {
+ colors: Vec<Color>,
+ target: O,
+}
+
+impl<O> ExactColorization<O> {
+ fn new(colors: Vec<Color>, target: O) -> Self {
+ Self { colors, target }
+ }
+}
+
+impl<R, D, O> TableOption<R, D, ColoredConfig> for ExactColorization<O>
+where
+ O: Object<R>,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ if self.colors.is_empty() {
+ return;
+ }
+
+ let mut color_peek = self.colors.iter().cycle();
+ for pos in self.target.cells(records) {
+ let color = color_peek.next().unwrap();
+ colorize_entity(color, pos, cfg);
+ }
+ }
+}
diff --git a/vendor/tabled/src/settings/themes/column_names.rs b/vendor/tabled/src/settings/themes/column_names.rs
new file mode 100644
index 000000000..02848166d
--- /dev/null
+++ b/vendor/tabled/src/settings/themes/column_names.rs
@@ -0,0 +1,355 @@
+use crate::{
+ grid::{
+ config::{AlignmentHorizontal, ColoredConfig},
+ dimension::{CompleteDimensionVecRecords, Dimension, Estimate},
+ records::{
+ vec_records::{CellInfo, VecRecords},
+ ExactRecords, PeekableRecords, Records, Resizable,
+ },
+ util::string::string_width,
+ },
+ settings::{
+ style::{BorderText, Offset},
+ Color, TableOption,
+ },
+};
+
+/// [`ColumnNames`] sets strings on horizontal lines for the columns.
+///
+/// Notice that using a [`Default`] would reuse a names from the first row.
+///
+/// # Examples
+///
+/// ```
+/// use std::iter::FromIterator;
+/// use tabled::{Table, settings::themes::ColumnNames};
+///
+/// let data = vec![
+/// vec!["Hello", "World"],
+/// vec!["Hello", "World"],
+/// ];
+///
+/// let mut table = Table::from_iter(data);
+/// table.with(ColumnNames::new(["head1", "head2"]).set_offset(3).set_line(2));
+///
+/// assert_eq!(
+/// table.to_string(),
+/// "+--------+--------+\n\
+/// | Hello | World |\n\
+/// +--------+--------+\n\
+/// | Hello | World |\n\
+/// +---head1+---head2+"
+/// );
+/// ```
+///
+/// [`Default`] usage.
+///
+/// ```
+/// use std::iter::FromIterator;
+/// use tabled::{Table, settings::themes::ColumnNames};
+///
+/// let data = vec![
+/// vec!["Hello", "World"],
+/// vec!["Hello", "World"],
+/// ];
+///
+/// let mut table = Table::from_iter(data);
+/// table.with(ColumnNames::default());
+///
+/// assert_eq!(
+/// table.to_string(),
+/// "+Hello--+World--+\n\
+/// | Hello | World |\n\
+/// +-------+-------+"
+/// );
+/// ```
+#[derive(Debug, Clone)]
+pub struct ColumnNames {
+ names: Option<Vec<String>>,
+ colors: Vec<Option<Color>>,
+ offset: usize,
+ line: usize,
+ alignment: AlignmentHorizontal,
+}
+
+impl Default for ColumnNames {
+ fn default() -> Self {
+ Self {
+ names: Default::default(),
+ colors: Default::default(),
+ offset: Default::default(),
+ line: Default::default(),
+ alignment: AlignmentHorizontal::Left,
+ }
+ }
+}
+
+impl ColumnNames {
+ /// Creates a [`ColumnNames`] with a given names.
+ ///
+ /// Using a [`Default`] would reuse a names from the first row.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use std::iter::FromIterator;
+ /// use tabled::{Table, settings::themes::ColumnNames};
+ ///
+ /// let mut table = Table::from_iter(vec![vec!["Hello", "World"]]);
+ /// table.with(ColumnNames::new(["head1", "head2"]));
+ ///
+ /// assert_eq!(
+ /// table.to_string(),
+ /// "+head1--+head2--+\n\
+ /// | Hello | World |\n\
+ /// +-------+-------+"
+ /// );
+ /// ```
+ pub fn new<I>(names: I) -> Self
+ where
+ I: IntoIterator,
+ I::Item: Into<String>,
+ {
+ let names = names.into_iter().map(Into::into).collect::<Vec<_>>();
+ Self {
+ names: Some(names),
+ colors: Vec::new(),
+ offset: 0,
+ line: 0,
+ alignment: AlignmentHorizontal::Left,
+ }
+ }
+
+ /// Set color for the column names.
+ ///
+ /// By default there's no colors.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use std::iter::FromIterator;
+ /// use tabled::Table;
+ /// use tabled::settings::{Color, themes::ColumnNames};
+ ///
+ /// let mut table = Table::from_iter(vec![vec!["Hello", "World"]]);
+ /// table.with(ColumnNames::new(["head1", "head2"]).set_colors([Color::FG_RED]));
+ ///
+ /// assert_eq!(
+ /// table.to_string(),
+ /// "+\u{1b}[31mh\u{1b}[39m\u{1b}[31me\u{1b}[39m\u{1b}[31ma\u{1b}[39m\u{1b}[31md\u{1b}[39m\u{1b}[31m1\u{1b}[39m--+head2--+\n\
+ /// | Hello | World |\n\
+ /// +-------+-------+"
+ /// );
+ /// ```
+ pub fn set_colors<I>(self, colors: I) -> Self
+ where
+ I: IntoIterator,
+ I::Item: Into<Option<Color>>,
+ {
+ let colors = colors.into_iter().map(Into::into).collect::<Vec<_>>();
+ Self {
+ names: self.names,
+ offset: self.offset,
+ line: self.line,
+ alignment: self.alignment,
+ colors,
+ }
+ }
+
+ /// Set a left offset after which the names will be used.
+ ///
+ /// By default there's no offset.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use std::iter::FromIterator;
+ /// use tabled::{Table, settings::themes::ColumnNames};
+ ///
+ /// let mut table = Table::from_iter(vec![vec!["Hello", "World"]]);
+ /// table.with(ColumnNames::new(["head1", "head2"]).set_offset(1));
+ ///
+ /// assert_eq!(
+ /// table.to_string(),
+ /// "+-head1-+-head2-+\n\
+ /// | Hello | World |\n\
+ /// +-------+-------+"
+ /// );
+ /// ```
+ pub fn set_offset(self, i: usize) -> Self {
+ Self {
+ names: self.names,
+ colors: self.colors,
+ line: self.line,
+ alignment: self.alignment,
+ offset: i,
+ }
+ }
+
+ /// Set a horizontal line the names will be applied to.
+ ///
+ /// The default value is 0 (the top horizontal line).
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use std::iter::FromIterator;
+ /// use tabled::{Table, settings::themes::ColumnNames};
+ ///
+ /// let mut table = Table::from_iter(vec![vec!["Hello", "World"]]);
+ /// table.with(ColumnNames::new(["head1", "head2"]).set_line(1));
+ ///
+ /// assert_eq!(
+ /// table.to_string(),
+ /// "+-------+-------+\n\
+ /// | Hello | World |\n\
+ /// +head1--+head2--+"
+ /// );
+ /// ```
+ pub fn set_line(self, i: usize) -> Self {
+ Self {
+ names: self.names,
+ colors: self.colors,
+ offset: self.offset,
+ alignment: self.alignment,
+ line: i,
+ }
+ }
+
+ /// Set an alignment for the names.
+ ///
+ /// By default it's left aligned.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use std::iter::FromIterator;
+ /// use tabled::{
+ /// Table,
+ /// settings::themes::ColumnNames,
+ /// grid::config::AlignmentHorizontal,
+ /// };
+ ///
+ /// let mut table = Table::from_iter(vec![vec!["Hello", "World"]]);
+ /// table.with(ColumnNames::new(["head1", "head2"]).set_alignment(AlignmentHorizontal::Right));
+ ///
+ /// assert_eq!(
+ /// table.to_string(),
+ /// "+--head1+--head2+\n\
+ /// | Hello | World |\n\
+ /// +-------+-------+"
+ /// );
+ /// ```
+ pub fn set_alignment(self, alignment: AlignmentHorizontal) -> Self {
+ Self {
+ names: self.names,
+ colors: self.colors,
+ offset: self.offset,
+ line: self.line,
+ alignment,
+ }
+ }
+}
+
+impl TableOption<VecRecords<CellInfo<String>>, CompleteDimensionVecRecords<'static>, ColoredConfig>
+ for ColumnNames
+{
+ fn change(
+ self,
+ records: &mut VecRecords<CellInfo<String>>,
+ cfg: &mut ColoredConfig,
+ dims: &mut CompleteDimensionVecRecords<'static>,
+ ) {
+ let names = match self.names {
+ Some(names) => names,
+ None => {
+ if records.count_rows() == 0 || records.count_columns() == 0 {
+ return;
+ }
+
+ let names = (0..records.count_columns())
+ .map(|column| records.get_text((0, column)))
+ .map(ToString::to_string)
+ .collect::<Vec<_>>();
+
+ records.remove_row(0);
+
+ names
+ }
+ };
+
+ let names = names.iter().map(|name| name.lines().next().unwrap_or(""));
+
+ dims.estimate(&*records, cfg);
+
+ let mut widths = (0..records.count_columns())
+ .map(|column| dims.get_width(column))
+ .collect::<Vec<_>>();
+
+ let names = names.take(widths.len());
+
+ let offset = self.offset;
+ widths
+ .iter_mut()
+ .zip(names.clone())
+ .for_each(|(width, text)| {
+ let name_width = string_width(text) + offset;
+ *width = std::cmp::max(name_width, *width);
+ });
+
+ let _ = dims.set_widths(widths.clone());
+
+ let mut total_width = 0;
+ for (i, (width, name)) in widths.iter().zip(names).enumerate() {
+ let color = get_color(&self.colors, i);
+ let offset = total_width + 1;
+ let btext = get_border_text(
+ name,
+ offset,
+ *width,
+ self.alignment,
+ self.offset,
+ self.line,
+ color,
+ );
+ btext.change(records, cfg, dims);
+
+ total_width += width + 1;
+ }
+ }
+}
+
+fn get_border_text(
+ text: &str,
+ offset: usize,
+ available: usize,
+ alignment: AlignmentHorizontal,
+ alignment_offset: usize,
+ line: usize,
+ color: Option<&Color>,
+) -> BorderText<usize> {
+ let name = text.to_string();
+ let left_indent = get_indent(text, alignment, alignment_offset, available);
+ let left_offset = Offset::Begin(offset + left_indent);
+ let mut btext = BorderText::new(name).horizontal(line).offset(left_offset);
+ if let Some(color) = color {
+ btext = btext.color(color.clone());
+ }
+
+ btext
+}
+
+fn get_color(colors: &[Option<Color>], i: usize) -> Option<&Color> {
+ colors.get(i).and_then(|color| match color {
+ Some(color) => Some(color),
+ None => None,
+ })
+}
+
+fn get_indent(text: &str, align: AlignmentHorizontal, offset: usize, available: usize) -> usize {
+ match align {
+ AlignmentHorizontal::Left => offset,
+ AlignmentHorizontal::Right => available - string_width(text) - offset,
+ AlignmentHorizontal::Center => (available - string_width(text)) / 2,
+ }
+}
diff --git a/vendor/tabled/src/settings/themes/mod.rs b/vendor/tabled/src/settings/themes/mod.rs
new file mode 100644
index 000000000..75cf458cc
--- /dev/null
+++ b/vendor/tabled/src/settings/themes/mod.rs
@@ -0,0 +1,9 @@
+//! The module contains a varieity of configurations of table, which often
+//! changes not a single setting.
+//! As such they are making relatively big changes to the configuration.
+
+mod colorization;
+mod column_names;
+
+pub use colorization::{Colorization, ExactColorization};
+pub use column_names::ColumnNames;
diff --git a/vendor/tabled/src/settings/width/justify.rs b/vendor/tabled/src/settings/width/justify.rs
new file mode 100644
index 000000000..03b2afe0d
--- /dev/null
+++ b/vendor/tabled/src/settings/width/justify.rs
@@ -0,0 +1,96 @@
+//! This module contains [`Justify`] structure, used to set an exact width to each column.
+
+use crate::{
+ grid::config::ColoredConfig,
+ grid::records::{ExactRecords, PeekableRecords, Records, RecordsMut},
+ settings::{
+ measurement::{Max, Measurement, Min},
+ CellOption, TableOption, Width,
+ },
+};
+
+/// Justify sets all columns widths to the set value.
+///
+/// Be aware that it doesn't consider padding.
+/// So if you want to set a exact width you might need to use [`Padding`] to set it to 0.
+///
+/// ## Examples
+///
+/// ```
+/// use tabled::{Table, settings::{Width, Style, object::Segment, Padding, Modify}};
+///
+/// let data = ["Hello", "World", "!"];
+///
+/// let table = Table::new(&data)
+/// .with(Style::markdown())
+/// .with(Modify::new(Segment::all()).with(Padding::zero()))
+/// .with(Width::justify(3));
+/// ```
+///
+/// [`Max`] usage to justify by a max column width.
+///
+/// ```
+/// use tabled::{Table, settings::{width::Justify, Style}};
+///
+/// let data = ["Hello", "World", "!"];
+///
+/// let table = Table::new(&data)
+/// .with(Style::markdown())
+/// .with(Justify::max());
+/// ```
+///
+/// [`Padding`]: crate::settings::Padding
+#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub struct Justify<W> {
+ width: W,
+}
+
+impl<W> Justify<W>
+where
+ W: Measurement<Width>,
+{
+ /// Creates a new [`Justify`] instance.
+ ///
+ /// Be aware that [`Padding`] is not considered when comparing the width.
+ ///
+ /// [`Padding`]: crate::settings::Padding
+ pub fn new(width: W) -> Self {
+ Self { width }
+ }
+}
+
+impl Justify<Max> {
+ /// Creates a new Justify instance with a Max width used as a value.
+ pub fn max() -> Self {
+ Self { width: Max }
+ }
+}
+
+impl Justify<Min> {
+ /// Creates a new Justify instance with a Min width used as a value.
+ pub fn min() -> Self {
+ Self { width: Min }
+ }
+}
+
+impl<R, D, W> TableOption<R, D, ColoredConfig> for Justify<W>
+where
+ W: Measurement<Width>,
+ R: Records + ExactRecords + PeekableRecords + RecordsMut<String>,
+ for<'a> &'a R: Records,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let width = self.width.measure(&*records, cfg);
+
+ let count_rows = records.count_rows();
+ let count_columns = records.count_columns();
+
+ for row in 0..count_rows {
+ for col in 0..count_columns {
+ let pos = (row, col).into();
+ CellOption::change(Width::increase(width), records, cfg, pos);
+ CellOption::change(Width::truncate(width), records, cfg, pos);
+ }
+ }
+ }
+}
diff --git a/vendor/tabled/src/settings/width/min_width.rs b/vendor/tabled/src/settings/width/min_width.rs
new file mode 100644
index 000000000..afb9ae302
--- /dev/null
+++ b/vendor/tabled/src/settings/width/min_width.rs
@@ -0,0 +1,205 @@
+//! This module contains [`MinWidth`] structure, used to increase width of a [`Table`]s or a cell on a [`Table`].
+//!
+//! [`Table`]: crate::Table
+
+use std::marker::PhantomData;
+
+use crate::{
+ grid::config::ColoredConfig,
+ grid::config::Entity,
+ grid::dimension::CompleteDimensionVecRecords,
+ grid::records::{ExactRecords, PeekableRecords, Records, RecordsMut},
+ grid::util::string::{get_lines, string_width_multiline},
+ settings::{
+ measurement::Measurement,
+ peaker::{Peaker, PriorityNone},
+ CellOption, TableOption, Width,
+ },
+};
+
+use super::util::get_table_widths_with_total;
+
+/// [`MinWidth`] changes a content in case if it's length is lower then the boundary.
+///
+/// It can be applied to a whole table.
+///
+/// It does nothing in case if the content's length is bigger then the boundary.
+///
+/// Be aware that further changes of the table may cause the width being not set.
+/// For example applying [`Padding`] after applying [`MinWidth`] will make the former have no affect.
+/// (You should use [`Padding`] first).
+///
+/// Be aware that it doesn't consider padding.
+/// So if you want to set a exact width you might need to use [`Padding`] to set it to 0.
+///
+/// ## Examples
+///
+/// Cell change
+///
+/// ```
+/// use tabled::{Table, settings::{object::Segment, Width, Style, Modify}};
+///
+/// let data = ["Hello", "World", "!"];
+///
+/// let table = Table::new(&data)
+/// .with(Style::markdown())
+/// .with(Modify::new(Segment::all()).with(Width::increase(10)));
+/// ```
+/// Table change
+///
+/// ```
+/// use tabled::{Table, settings::Width};
+///
+/// let table = Table::new(&["Hello World!"]).with(Width::increase(5));
+/// ```
+///
+/// [`Padding`]: crate::settings::Padding
+#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub struct MinWidth<W = usize, P = PriorityNone> {
+ width: W,
+ fill: char,
+ _priority: PhantomData<P>,
+}
+
+impl<W> MinWidth<W>
+where
+ W: Measurement<Width>,
+{
+ /// Creates a new instance of [`MinWidth`].
+ pub fn new(width: W) -> Self {
+ Self {
+ width,
+ fill: ' ',
+ _priority: PhantomData,
+ }
+ }
+}
+
+impl<W, P> MinWidth<W, P> {
+ /// Set's a fill character which will be used to fill the space
+ /// when increasing the length of the string to the set boundary.
+ ///
+ /// Used only if chaning cells.
+ pub fn fill_with(mut self, c: char) -> Self {
+ self.fill = c;
+ self
+ }
+
+ /// Priority defines the logic by which a increase of width will be applied when is done for the whole table.
+ ///
+ /// - [`PriorityNone`] which inc the columns one after another.
+ /// - [`PriorityMax`] inc the biggest columns first.
+ /// - [`PriorityMin`] inc the lowest columns first.
+ ///
+ /// [`PriorityMax`]: crate::settings::peaker::PriorityMax
+ /// [`PriorityMin`]: crate::settings::peaker::PriorityMin
+ pub fn priority<PP: Peaker>(self) -> MinWidth<W, PP> {
+ MinWidth {
+ fill: self.fill,
+ width: self.width,
+ _priority: PhantomData,
+ }
+ }
+}
+
+impl<W, R> CellOption<R, ColoredConfig> for MinWidth<W>
+where
+ W: Measurement<Width>,
+ R: Records + ExactRecords + PeekableRecords + RecordsMut<String>,
+ for<'a> &'a R: Records,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, entity: Entity) {
+ let width = self.width.measure(&*records, cfg);
+
+ let count_rows = records.count_rows();
+ let count_columns = records.count_columns();
+
+ for pos in entity.iter(count_rows, count_columns) {
+ let is_valid_pos = pos.0 < count_rows && pos.1 < count_columns;
+ if !is_valid_pos {
+ continue;
+ }
+
+ let cell = records.get_text(pos);
+ let cell_width = string_width_multiline(cell);
+ if cell_width >= width {
+ continue;
+ }
+
+ let content = increase_width(cell, width, self.fill);
+ records.set(pos, content);
+ }
+ }
+}
+
+impl<W, P, R> TableOption<R, CompleteDimensionVecRecords<'static>, ColoredConfig> for MinWidth<W, P>
+where
+ W: Measurement<Width>,
+ P: Peaker,
+ R: Records + ExactRecords + PeekableRecords,
+ for<'a> &'a R: Records,
+{
+ fn change(
+ self,
+ records: &mut R,
+ cfg: &mut ColoredConfig,
+ dims: &mut CompleteDimensionVecRecords<'static>,
+ ) {
+ if records.count_rows() == 0 || records.count_columns() == 0 {
+ return;
+ }
+
+ let nessary_width = self.width.measure(&*records, cfg);
+
+ let (widths, total_width) = get_table_widths_with_total(&*records, cfg);
+ if total_width >= nessary_width {
+ return;
+ }
+
+ let widths = get_increase_list(widths, nessary_width, total_width, P::create());
+ let _ = dims.set_widths(widths);
+ }
+}
+
+fn get_increase_list<F>(
+ mut widths: Vec<usize>,
+ need: usize,
+ mut current: usize,
+ mut peaker: F,
+) -> Vec<usize>
+where
+ F: Peaker,
+{
+ while need != current {
+ let col = match peaker.peak(&[], &widths) {
+ Some(col) => col,
+ None => break,
+ };
+
+ widths[col] += 1;
+ current += 1;
+ }
+
+ widths
+}
+
+fn increase_width(s: &str, width: usize, fill_with: char) -> String {
+ use crate::grid::util::string::string_width;
+ use std::{borrow::Cow, iter::repeat};
+
+ get_lines(s)
+ .map(|line| {
+ let length = string_width(&line);
+
+ if length < width {
+ let mut line = line.into_owned();
+ let remain = width - length;
+ line.extend(repeat(fill_with).take(remain));
+ Cow::Owned(line)
+ } else {
+ line
+ }
+ })
+ .collect::<Vec<_>>()
+ .join("\n")
+}
diff --git a/vendor/tabled/src/settings/width/mod.rs b/vendor/tabled/src/settings/width/mod.rs
new file mode 100644
index 000000000..c1202f70f
--- /dev/null
+++ b/vendor/tabled/src/settings/width/mod.rs
@@ -0,0 +1,163 @@
+//! This module contains object which can be used to limit a cell to a given width:
+//!
+//! - [`Truncate`] cuts a cell content to limit width.
+//! - [`Wrap`] split the content via new lines in order to fit max width.
+//! - [`Justify`] sets columns width to the same value.
+//!
+//! To set a a table width, a combination of [`Width::truncate`] or [`Width::wrap`] and [`Width::increase`] can be used.
+//!
+//! ## Example
+//!
+//! ```
+//! use tabled::{Table, settings::Width};
+//!
+//! let table = Table::new(&["Hello World!"])
+//! .with(Width::wrap(7))
+//! .with(Width::increase(7))
+//! .to_string();
+//!
+//! assert_eq!(
+//! table,
+//! concat!(
+//! "+-----+\n",
+//! "| &st |\n",
+//! "| r |\n",
+//! "+-----+\n",
+//! "| Hel |\n",
+//! "| lo |\n",
+//! "| Wor |\n",
+//! "| ld! |\n",
+//! "+-----+",
+//! )
+//! );
+//! ```
+
+mod justify;
+mod min_width;
+mod truncate;
+mod util;
+mod width_list;
+mod wrap;
+
+use crate::settings::measurement::Measurement;
+
+pub use self::{
+ justify::Justify,
+ min_width::MinWidth,
+ truncate::{SuffixLimit, Truncate},
+ width_list::WidthList,
+ wrap::Wrap,
+};
+
+/// Width allows you to set a min and max width of an object on a [`Table`]
+/// using different strategies.
+///
+/// It also allows you to set a min and max width for a whole table.
+///
+/// You can apply a min and max strategy at the same time with the same value,
+/// the value will be a total table width.
+///
+/// It is an abstract factory.
+///
+/// Beware that borders are not removed when you set a size value to very small.
+/// For example if you set size to 0 the table still be rendered but with all content removed.
+///
+/// Also be aware that it doesn't changes [`Padding`] settings nor it considers them.
+///
+/// The function is color aware if a `color` feature is on.
+///
+/// ## Examples
+///
+/// ### Cell change
+///
+/// ```
+/// use tabled::{Table, settings::{object::Segment, Width, Style, Modify}};
+///
+/// let data = ["Hello", "World", "!"];
+///
+/// let table = Table::new(&data)
+/// .with(Style::markdown())
+/// .with(Modify::new(Segment::all()).with(Width::truncate(3).suffix("...")));
+/// ```
+///
+/// ### Table change
+///
+/// ```
+/// use tabled::{Table, settings::Width};
+///
+/// let table = Table::new(&["Hello World!"]).with(Width::wrap(5));
+/// ```
+///
+/// ### Total width
+///
+/// ```
+/// use tabled::{Table, settings::Width};
+///
+/// let table = Table::new(&["Hello World!"])
+/// .with(Width::wrap(5))
+/// .with(Width::increase(5));
+/// ```
+///
+/// [`Padding`]: crate::settings::Padding
+/// [`Table`]: crate::Table
+#[derive(Debug)]
+pub struct Width;
+
+impl Width {
+ /// Returns a [`Wrap`] structure.
+ pub fn wrap<W: Measurement<Width>>(width: W) -> Wrap<W> {
+ Wrap::new(width)
+ }
+
+ /// Returns a [`Truncate`] structure.
+ pub fn truncate<W: Measurement<Width>>(width: W) -> Truncate<'static, W> {
+ Truncate::new(width)
+ }
+
+ /// Returns a [`MinWidth`] structure.
+ pub fn increase<W: Measurement<Width>>(width: W) -> MinWidth<W> {
+ MinWidth::new(width)
+ }
+
+ /// Returns a [`Justify`] structure.
+ pub fn justify<W: Measurement<Width>>(width: W) -> Justify<W> {
+ Justify::new(width)
+ }
+
+ /// Create [`WidthList`] to set a table width to a constant list of column widths.
+ ///
+ /// Notice if you provide a list with `.len()` smaller than `Table::count_columns` then it will have no affect.
+ ///
+ /// Also notice that you must provide values bigger than or equal to a real content width, otherwise it may panic.
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use tabled::{Table, settings::Width};
+ ///
+ /// let data = vec![
+ /// ("Some\ndata", "here", "and here"),
+ /// ("Some\ndata on a next", "line", "right here"),
+ /// ];
+ ///
+ /// let table = Table::new(data)
+ /// .with(Width::list([20, 10, 12]))
+ /// .to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// "+--------------------+----------+------------+\n\
+ /// | &str | &str | &str |\n\
+ /// +--------------------+----------+------------+\n\
+ /// | Some | here | and here |\n\
+ /// | data | | |\n\
+ /// +--------------------+----------+------------+\n\
+ /// | Some | line | right here |\n\
+ /// | data on a next | | |\n\
+ /// +--------------------+----------+------------+"
+ /// )
+ /// ```
+ pub fn list<I: IntoIterator<Item = usize>>(rows: I) -> WidthList {
+ WidthList::new(rows.into_iter().collect())
+ }
+}
diff --git a/vendor/tabled/src/settings/width/truncate.rs b/vendor/tabled/src/settings/width/truncate.rs
new file mode 100644
index 000000000..c7336f037
--- /dev/null
+++ b/vendor/tabled/src/settings/width/truncate.rs
@@ -0,0 +1,505 @@
+//! This module contains [`Truncate`] structure, used to decrease width of a [`Table`]s or a cell on a [`Table`] by truncating the width.
+//!
+//! [`Table`]: crate::Table
+
+use std::{borrow::Cow, iter, marker::PhantomData};
+
+use crate::{
+ grid::{
+ config::{ColoredConfig, SpannedConfig},
+ dimension::CompleteDimensionVecRecords,
+ records::{EmptyRecords, ExactRecords, PeekableRecords, Records, RecordsMut},
+ util::string::{string_width, string_width_multiline},
+ },
+ settings::{
+ measurement::Measurement,
+ peaker::{Peaker, PriorityNone},
+ CellOption, TableOption, Width,
+ },
+};
+
+use super::util::{cut_str, get_table_widths, get_table_widths_with_total};
+
+/// Truncate cut the string to a given width if its length exceeds it.
+/// Otherwise keeps the content of a cell untouched.
+///
+/// The function is color aware if a `color` feature is on.
+///
+/// Be aware that it doesn't consider padding.
+/// So if you want to set a exact width you might need to use [`Padding`] to set it to 0.
+///
+/// ## Example
+///
+/// ```
+/// use tabled::{Table, settings::{object::Segment, Width, Modify}};
+///
+/// let table = Table::new(&["Hello World!"])
+/// .with(Modify::new(Segment::all()).with(Width::truncate(3)));
+/// ```
+///
+/// [`Padding`]: crate::settings::Padding
+#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
+pub struct Truncate<'a, W = usize, P = PriorityNone> {
+ width: W,
+ suffix: Option<TruncateSuffix<'a>>,
+ multiline: bool,
+ _priority: PhantomData<P>,
+}
+#[cfg(feature = "color")]
+#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
+struct TruncateSuffix<'a> {
+ text: Cow<'a, str>,
+ limit: SuffixLimit,
+ try_color: bool,
+}
+
+#[cfg(not(feature = "color"))]
+#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
+struct TruncateSuffix<'a> {
+ text: Cow<'a, str>,
+ limit: SuffixLimit,
+}
+
+impl Default for TruncateSuffix<'_> {
+ fn default() -> Self {
+ Self {
+ text: Cow::default(),
+ limit: SuffixLimit::Cut,
+ #[cfg(feature = "color")]
+ try_color: false,
+ }
+ }
+}
+
+/// A suffix limit settings.
+#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
+pub enum SuffixLimit {
+ /// Cut the suffix.
+ Cut,
+ /// Don't show the suffix.
+ Ignore,
+ /// Use a string with n chars instead.
+ Replace(char),
+}
+
+impl<W> Truncate<'static, W>
+where
+ W: Measurement<Width>,
+{
+ /// Creates a [`Truncate`] object
+ pub fn new(width: W) -> Truncate<'static, W> {
+ Self {
+ width,
+ multiline: false,
+ suffix: None,
+ _priority: PhantomData,
+ }
+ }
+}
+
+impl<'a, W, P> Truncate<'a, W, P> {
+ /// Sets a suffix which will be appended to a resultant string.
+ ///
+ /// The suffix is used in 3 circumstances:
+ /// 1. If original string is *bigger* than the suffix.
+ /// We cut more of the original string and append the suffix.
+ /// 2. If suffix is bigger than the original string.
+ /// We cut the suffix to fit in the width by default.
+ /// But you can peak the behaviour by using [`Truncate::suffix_limit`]
+ pub fn suffix<S: Into<Cow<'a, str>>>(self, suffix: S) -> Truncate<'a, W, P> {
+ let mut suff = self.suffix.unwrap_or_default();
+ suff.text = suffix.into();
+
+ Truncate {
+ width: self.width,
+ multiline: self.multiline,
+ suffix: Some(suff),
+ _priority: PhantomData,
+ }
+ }
+
+ /// Sets a suffix limit, which is used when the suffix is too big to be used.
+ pub fn suffix_limit(self, limit: SuffixLimit) -> Truncate<'a, W, P> {
+ let mut suff = self.suffix.unwrap_or_default();
+ suff.limit = limit;
+
+ Truncate {
+ width: self.width,
+ multiline: self.multiline,
+ suffix: Some(suff),
+ _priority: PhantomData,
+ }
+ }
+
+ /// Use trancate logic per line, not as a string as a whole.
+ pub fn multiline(self) -> Truncate<'a, W, P> {
+ Truncate {
+ width: self.width,
+ multiline: true,
+ suffix: self.suffix,
+ _priority: self._priority,
+ }
+ }
+
+ #[cfg(feature = "color")]
+ /// Sets a optional logic to try to colorize a suffix.
+ pub fn suffix_try_color(self, color: bool) -> Truncate<'a, W, P> {
+ let mut suff = self.suffix.unwrap_or_default();
+ suff.try_color = color;
+
+ Truncate {
+ width: self.width,
+ multiline: self.multiline,
+ suffix: Some(suff),
+ _priority: PhantomData,
+ }
+ }
+}
+
+impl<'a, W, P> Truncate<'a, W, P> {
+ /// Priority defines the logic by which a truncate will be applied when is done for the whole table.
+ ///
+ /// - [`PriorityNone`] which cuts the columns one after another.
+ /// - [`PriorityMax`] cuts the biggest columns first.
+ /// - [`PriorityMin`] cuts the lowest columns first.
+ ///
+ /// [`PriorityMax`]: crate::settings::peaker::PriorityMax
+ /// [`PriorityMin`]: crate::settings::peaker::PriorityMin
+ pub fn priority<PP: Peaker>(self) -> Truncate<'a, W, PP> {
+ Truncate {
+ width: self.width,
+ multiline: self.multiline,
+ suffix: self.suffix,
+ _priority: PhantomData,
+ }
+ }
+}
+
+impl Truncate<'_, (), ()> {
+ /// Truncate a given string
+ pub fn truncate_text(text: &str, width: usize) -> Cow<'_, str> {
+ truncate_text(text, width, "", false)
+ }
+}
+
+impl<W, P, R> CellOption<R, ColoredConfig> for Truncate<'_, W, P>
+where
+ W: Measurement<Width>,
+ R: Records + ExactRecords + PeekableRecords + RecordsMut<String>,
+ for<'a> &'a R: Records,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, entity: papergrid::config::Entity) {
+ let available = self.width.measure(&*records, cfg);
+
+ let mut width = available;
+ let mut suffix = Cow::Borrowed("");
+
+ if let Some(x) = self.suffix.as_ref() {
+ let (cutted_suffix, rest_width) = make_suffix(x, width);
+ suffix = cutted_suffix;
+ width = rest_width;
+ };
+
+ let count_rows = records.count_rows();
+ let count_columns = records.count_columns();
+
+ let colorize = need_suffix_color_preservation(&self.suffix);
+
+ for pos in entity.iter(count_rows, count_columns) {
+ let is_valid_pos = pos.0 < count_rows && pos.1 < count_columns;
+ if !is_valid_pos {
+ continue;
+ }
+
+ let text = records.get_text(pos);
+
+ let cell_width = string_width_multiline(text);
+ if available >= cell_width {
+ continue;
+ }
+
+ let text =
+ truncate_multiline(text, &suffix, width, available, colorize, self.multiline);
+
+ records.set(pos, text.into_owned());
+ }
+ }
+}
+
+fn truncate_multiline<'a>(
+ text: &'a str,
+ suffix: &'a str,
+ width: usize,
+ twidth: usize,
+ suffix_color: bool,
+ multiline: bool,
+) -> Cow<'a, str> {
+ if multiline {
+ let mut buf = String::new();
+ for (i, line) in crate::grid::util::string::get_lines(text).enumerate() {
+ if i != 0 {
+ buf.push('\n');
+ }
+
+ let line = make_text_truncated(&line, suffix, width, twidth, suffix_color);
+ buf.push_str(&line);
+ }
+
+ Cow::Owned(buf)
+ } else {
+ make_text_truncated(text, suffix, width, twidth, suffix_color)
+ }
+}
+
+fn make_text_truncated<'a>(
+ text: &'a str,
+ suffix: &'a str,
+ width: usize,
+ twidth: usize,
+ suffix_color: bool,
+) -> Cow<'a, str> {
+ if width == 0 {
+ if twidth == 0 {
+ Cow::Borrowed("")
+ } else {
+ Cow::Borrowed(suffix)
+ }
+ } else {
+ truncate_text(text, width, suffix, suffix_color)
+ }
+}
+
+fn need_suffix_color_preservation(_suffix: &Option<TruncateSuffix<'_>>) -> bool {
+ #[cfg(not(feature = "color"))]
+ {
+ false
+ }
+ #[cfg(feature = "color")]
+ {
+ _suffix.as_ref().map_or(false, |s| s.try_color)
+ }
+}
+
+fn make_suffix<'a>(suffix: &'a TruncateSuffix<'_>, width: usize) -> (Cow<'a, str>, usize) {
+ let suffix_length = string_width(&suffix.text);
+ if width > suffix_length {
+ return (Cow::Borrowed(suffix.text.as_ref()), width - suffix_length);
+ }
+
+ match suffix.limit {
+ SuffixLimit::Ignore => (Cow::Borrowed(""), width),
+ SuffixLimit::Cut => {
+ let suffix = cut_str(&suffix.text, width);
+ (suffix, 0)
+ }
+ SuffixLimit::Replace(c) => {
+ let suffix = Cow::Owned(iter::repeat(c).take(width).collect());
+ (suffix, 0)
+ }
+ }
+}
+
+impl<W, P, R> TableOption<R, CompleteDimensionVecRecords<'static>, ColoredConfig>
+ for Truncate<'_, W, P>
+where
+ W: Measurement<Width>,
+ P: Peaker,
+ R: Records + ExactRecords + PeekableRecords + RecordsMut<String>,
+ for<'a> &'a R: Records,
+{
+ fn change(
+ self,
+ records: &mut R,
+ cfg: &mut ColoredConfig,
+ dims: &mut CompleteDimensionVecRecords<'static>,
+ ) {
+ if records.count_rows() == 0 || records.count_columns() == 0 {
+ return;
+ }
+
+ let width = self.width.measure(&*records, cfg);
+ let (widths, total) = get_table_widths_with_total(&*records, cfg);
+ if total <= width {
+ return;
+ }
+
+ let suffix = self.suffix.as_ref().map(|s| TruncateSuffix {
+ text: Cow::Borrowed(&s.text),
+ limit: s.limit,
+ #[cfg(feature = "color")]
+ try_color: s.try_color,
+ });
+
+ let priority = P::create();
+ let multiline = self.multiline;
+ let widths = truncate_total_width(
+ records, cfg, widths, total, width, priority, suffix, multiline,
+ );
+
+ let _ = dims.set_widths(widths);
+ }
+}
+
+#[allow(clippy::too_many_arguments)]
+fn truncate_total_width<P, R>(
+ records: &mut R,
+ cfg: &mut ColoredConfig,
+ mut widths: Vec<usize>,
+ total: usize,
+ width: usize,
+ priority: P,
+ suffix: Option<TruncateSuffix<'_>>,
+ multiline: bool,
+) -> Vec<usize>
+where
+ for<'a> &'a R: Records,
+ P: Peaker,
+ R: Records + PeekableRecords + ExactRecords + RecordsMut<String>,
+{
+ let count_rows = records.count_rows();
+ let count_columns = records.count_columns();
+
+ let min_widths = get_table_widths(EmptyRecords::new(count_rows, count_columns), cfg);
+
+ decrease_widths(&mut widths, &min_widths, total, width, priority);
+
+ let points = get_decrease_cell_list(cfg, &widths, &min_widths, (count_rows, count_columns));
+
+ for ((row, col), width) in points {
+ let mut truncate = Truncate::new(width);
+ truncate.suffix = suffix.clone();
+ truncate.multiline = multiline;
+ CellOption::change(truncate, records, cfg, (row, col).into());
+ }
+
+ widths
+}
+
+fn truncate_text<'a>(
+ text: &'a str,
+ width: usize,
+ suffix: &str,
+ _suffix_color: bool,
+) -> Cow<'a, str> {
+ let content = cut_str(text, width);
+ if suffix.is_empty() {
+ return content;
+ }
+
+ #[cfg(feature = "color")]
+ {
+ if _suffix_color {
+ if let Some(block) = ansi_str::get_blocks(text).last() {
+ if block.has_ansi() {
+ let style = block.style();
+ Cow::Owned(format!(
+ "{}{}{}{}",
+ content,
+ style.start(),
+ suffix,
+ style.end()
+ ))
+ } else {
+ let mut content = content.into_owned();
+ content.push_str(suffix);
+ Cow::Owned(content)
+ }
+ } else {
+ let mut content = content.into_owned();
+ content.push_str(suffix);
+ Cow::Owned(content)
+ }
+ } else {
+ let mut content = content.into_owned();
+ content.push_str(suffix);
+ Cow::Owned(content)
+ }
+ }
+
+ #[cfg(not(feature = "color"))]
+ {
+ let mut content = content.into_owned();
+ content.push_str(suffix);
+ Cow::Owned(content)
+ }
+}
+
+fn get_decrease_cell_list(
+ cfg: &SpannedConfig,
+ widths: &[usize],
+ min_widths: &[usize],
+ shape: (usize, usize),
+) -> Vec<((usize, usize), usize)> {
+ let mut points = Vec::new();
+ (0..shape.1).for_each(|col| {
+ (0..shape.0)
+ .filter(|&row| cfg.is_cell_visible((row, col)))
+ .for_each(|row| {
+ let (width, width_min) = match cfg.get_column_span((row, col)) {
+ Some(span) => {
+ let width = (col..col + span).map(|i| widths[i]).sum::<usize>();
+ let min_width = (col..col + span).map(|i| min_widths[i]).sum::<usize>();
+ let count_borders = count_borders(cfg, col, col + span, shape.1);
+ (width + count_borders, min_width + count_borders)
+ }
+ None => (widths[col], min_widths[col]),
+ };
+
+ if width >= width_min {
+ let padding = cfg.get_padding((row, col).into());
+ let width = width.saturating_sub(padding.left.size + padding.right.size);
+
+ points.push(((row, col), width));
+ }
+ });
+ });
+
+ points
+}
+
+fn decrease_widths<F>(
+ widths: &mut [usize],
+ min_widths: &[usize],
+ total_width: usize,
+ mut width: usize,
+ mut peeaker: F,
+) where
+ F: Peaker,
+{
+ let mut empty_list = 0;
+ for col in 0..widths.len() {
+ if widths[col] == 0 || widths[col] <= min_widths[col] {
+ empty_list += 1;
+ }
+ }
+
+ while width != total_width {
+ if empty_list == widths.len() {
+ break;
+ }
+
+ let col = match peeaker.peak(min_widths, widths) {
+ Some(col) => col,
+ None => break,
+ };
+
+ if widths[col] == 0 || widths[col] <= min_widths[col] {
+ continue;
+ }
+
+ widths[col] -= 1;
+
+ if widths[col] == 0 || widths[col] <= min_widths[col] {
+ empty_list += 1;
+ }
+
+ width += 1;
+ }
+}
+
+fn count_borders(cfg: &SpannedConfig, start: usize, end: usize, count_columns: usize) -> usize {
+ (start..end)
+ .skip(1)
+ .filter(|&i| cfg.has_vertical(i, count_columns))
+ .count()
+}
diff --git a/vendor/tabled/src/settings/width/util.rs b/vendor/tabled/src/settings/width/util.rs
new file mode 100644
index 000000000..92cc48c41
--- /dev/null
+++ b/vendor/tabled/src/settings/width/util.rs
@@ -0,0 +1,265 @@
+use std::borrow::Cow;
+
+use crate::{
+ grid::config::SpannedConfig, grid::dimension::SpannedGridDimension, grid::records::Records,
+};
+
+pub(crate) fn get_table_widths<R: Records>(records: R, cfg: &SpannedConfig) -> Vec<usize> {
+ SpannedGridDimension::width(records, cfg)
+}
+
+pub(crate) fn get_table_widths_with_total<R: Records>(
+ records: R,
+ cfg: &SpannedConfig,
+) -> (Vec<usize>, usize) {
+ let widths = SpannedGridDimension::width(records, cfg);
+ let total_width = get_table_total_width(&widths, cfg);
+ (widths, total_width)
+}
+
+fn get_table_total_width(list: &[usize], cfg: &SpannedConfig) -> usize {
+ let margin = cfg.get_margin();
+ list.iter().sum::<usize>()
+ + cfg.count_vertical(list.len())
+ + margin.left.size
+ + margin.right.size
+}
+
+/// The function cuts the string to a specific width.
+///
+/// BE AWARE: width is expected to be in bytes.
+pub(crate) fn cut_str(s: &str, width: usize) -> Cow<'_, str> {
+ #[cfg(feature = "color")]
+ {
+ const REPLACEMENT: char = '\u{FFFD}';
+
+ let stripped = ansi_str::AnsiStr::ansi_strip(s);
+ let (length, count_unknowns, _) = split_at_pos(&stripped, width);
+
+ let mut buf = ansi_str::AnsiStr::ansi_cut(s, ..length);
+ if count_unknowns > 0 {
+ let mut b = buf.into_owned();
+ b.extend(std::iter::repeat(REPLACEMENT).take(count_unknowns));
+ buf = Cow::Owned(b);
+ }
+
+ buf
+ }
+
+ #[cfg(not(feature = "color"))]
+ {
+ cut_str_basic(s, width)
+ }
+}
+
+/// The function cuts the string to a specific width.
+///
+/// BE AWARE: width is expected to be in bytes.
+#[cfg(not(feature = "color"))]
+pub(crate) fn cut_str_basic(s: &str, width: usize) -> Cow<'_, str> {
+ const REPLACEMENT: char = '\u{FFFD}';
+
+ let (length, count_unknowns, _) = split_at_pos(s, width);
+ let buf = &s[..length];
+ if count_unknowns == 0 {
+ return Cow::Borrowed(buf);
+ }
+
+ let mut buf = buf.to_owned();
+ buf.extend(std::iter::repeat(REPLACEMENT).take(count_unknowns));
+
+ Cow::Owned(buf)
+}
+
+/// The function splits a string in the position and
+/// returns a exact number of bytes before the position and in case of a split in an unicode grapheme
+/// a width of a character which was tried to be splited in.
+///
+/// BE AWARE: pos is expected to be in bytes.
+pub(crate) fn split_at_pos(s: &str, pos: usize) -> (usize, usize, usize) {
+ let mut length = 0;
+ let mut i = 0;
+ for c in s.chars() {
+ if i == pos {
+ break;
+ };
+
+ let c_width = unicode_width::UnicodeWidthChar::width(c).unwrap_or_default();
+
+ // We cut the chars which takes more then 1 symbol to display,
+ // in order to archive the necessary width.
+ if i + c_width > pos {
+ let count = pos - i;
+ return (length, count, c.len_utf8());
+ }
+
+ i += c_width;
+ length += c.len_utf8();
+ }
+
+ (length, 0, 0)
+}
+
+/// Strip OSC codes from `s`. If `s` is a single OSC8 hyperlink, with no other text, then return
+/// (s_with_all_hyperlinks_removed, Some(url)). If `s` does not meet this description, then return
+/// (s_with_all_hyperlinks_removed, None). Any ANSI color sequences in `s` will be retained. See
+/// <https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda>
+///
+/// The function is based on Dan Davison <https://github.com/dandavison> delta <https://github.com/dandavison/delta> ansi library.
+#[cfg(feature = "color")]
+pub(crate) fn strip_osc(text: &str) -> (String, Option<String>) {
+ #[derive(Debug)]
+ enum ExtractOsc8HyperlinkState {
+ ExpectOsc8Url,
+ ExpectFirstText,
+ ExpectMoreTextOrTerminator,
+ SeenOneHyperlink,
+ WillNotReturnUrl,
+ }
+
+ use ExtractOsc8HyperlinkState::*;
+
+ let mut url = None;
+ let mut state = ExpectOsc8Url;
+ let mut buf = String::with_capacity(text.len());
+
+ for el in ansitok::parse_ansi(text) {
+ match el.kind() {
+ ansitok::ElementKind::Osc => match state {
+ ExpectOsc8Url => {
+ url = Some(&text[el.start()..el.end()]);
+ state = ExpectFirstText;
+ }
+ ExpectMoreTextOrTerminator => state = SeenOneHyperlink,
+ _ => state = WillNotReturnUrl,
+ },
+ ansitok::ElementKind::Sgr => buf.push_str(&text[el.start()..el.end()]),
+ ansitok::ElementKind::Csi => buf.push_str(&text[el.start()..el.end()]),
+ ansitok::ElementKind::Esc => {}
+ ansitok::ElementKind::Text => {
+ buf.push_str(&text[el.start()..el.end()]);
+ match state {
+ ExpectFirstText => state = ExpectMoreTextOrTerminator,
+ ExpectMoreTextOrTerminator => {}
+ _ => state = WillNotReturnUrl,
+ }
+ }
+ }
+ }
+
+ match state {
+ WillNotReturnUrl => (buf, None),
+ _ => {
+ let url = url.and_then(|s| {
+ s.strip_prefix("\x1b]8;;")
+ .and_then(|s| s.strip_suffix('\x1b'))
+ });
+ if let Some(url) = url {
+ (buf, Some(url.to_string()))
+ } else {
+ (buf, None)
+ }
+ }
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ use crate::grid::util::string::string_width;
+
+ #[cfg(feature = "color")]
+ use owo_colors::{colors::Yellow, OwoColorize};
+
+ #[test]
+ fn strip_test() {
+ assert_eq!(cut_str("123456", 0), "");
+ assert_eq!(cut_str("123456", 3), "123");
+ assert_eq!(cut_str("123456", 10), "123456");
+
+ assert_eq!(cut_str("a week ago", 4), "a we");
+
+ assert_eq!(cut_str("😳😳😳😳😳", 0), "");
+ assert_eq!(cut_str("😳😳😳😳😳", 3), "😳�");
+ assert_eq!(cut_str("😳😳😳😳😳", 4), "😳😳");
+ assert_eq!(cut_str("😳😳😳😳😳", 20), "😳😳😳😳😳");
+
+ assert_eq!(cut_str("ðŸ³ï¸ðŸ³ï¸", 0), "");
+ assert_eq!(cut_str("ðŸ³ï¸ðŸ³ï¸", 1), "ðŸ³");
+ assert_eq!(cut_str("ðŸ³ï¸ðŸ³ï¸", 2), "ðŸ³\u{fe0f}ðŸ³");
+ assert_eq!(string_width("ðŸ³ï¸ðŸ³ï¸"), string_width("ðŸ³\u{fe0f}ðŸ³"));
+
+ assert_eq!(cut_str("🎓", 1), "�");
+ assert_eq!(cut_str("🎓", 2), "🎓");
+
+ assert_eq!(cut_str("🥿", 1), "�");
+ assert_eq!(cut_str("🥿", 2), "🥿");
+
+ assert_eq!(cut_str("🩰", 1), "�");
+ assert_eq!(cut_str("🩰", 2), "🩰");
+
+ assert_eq!(cut_str("ðŸ‘ðŸ¿", 1), "�");
+ assert_eq!(cut_str("ðŸ‘ðŸ¿", 2), "ðŸ‘");
+ assert_eq!(cut_str("ðŸ‘ðŸ¿", 3), "ðŸ‘�");
+ assert_eq!(cut_str("ðŸ‘ðŸ¿", 4), "ðŸ‘ðŸ¿");
+
+ assert_eq!(cut_str("🇻🇬", 1), "🇻");
+ assert_eq!(cut_str("🇻🇬", 2), "🇻🇬");
+ assert_eq!(cut_str("🇻🇬", 3), "🇻🇬");
+ assert_eq!(cut_str("🇻🇬", 4), "🇻🇬");
+ }
+
+ #[cfg(feature = "color")]
+ #[test]
+ fn strip_color_test() {
+ let numbers = "123456".red().on_bright_black().to_string();
+
+ assert_eq!(cut_str(&numbers, 0), "\u{1b}[31;100m\u{1b}[39m\u{1b}[49m");
+ assert_eq!(
+ cut_str(&numbers, 3),
+ "\u{1b}[31;100m123\u{1b}[39m\u{1b}[49m"
+ );
+ assert_eq!(cut_str(&numbers, 10), "\u{1b}[31;100m123456\u{1b}[0m");
+
+ let emojies = "😳😳😳😳😳".red().on_bright_black().to_string();
+
+ assert_eq!(cut_str(&emojies, 0), "\u{1b}[31;100m\u{1b}[39m\u{1b}[49m");
+ assert_eq!(
+ cut_str(&emojies, 3),
+ "\u{1b}[31;100m😳\u{1b}[39m\u{1b}[49m�"
+ );
+ assert_eq!(
+ cut_str(&emojies, 4),
+ "\u{1b}[31;100m😳😳\u{1b}[39m\u{1b}[49m"
+ );
+ assert_eq!(cut_str(&emojies, 20), "\u{1b}[31;100m😳😳😳😳😳\u{1b}[0m");
+
+ let emojies = "ðŸ³ï¸ðŸ³ï¸".red().on_bright_black().to_string();
+
+ assert_eq!(cut_str(&emojies, 0), "\u{1b}[31;100m\u{1b}[39m\u{1b}[49m");
+ assert_eq!(cut_str(&emojies, 1), "\u{1b}[31;100mðŸ³\u{1b}[39m\u{1b}[49m");
+ assert_eq!(
+ cut_str(&emojies, 2),
+ "\u{1b}[31;100mðŸ³\u{fe0f}ðŸ³\u{1b}[39m\u{1b}[49m"
+ );
+ assert_eq!(
+ string_width(&emojies),
+ string_width("\u{1b}[31;100mðŸ³\u{fe0f}ðŸ³\u{1b}[39m\u{1b}[49m")
+ );
+ }
+
+ #[test]
+ #[cfg(feature = "color")]
+ fn test_color_strip() {
+ let s = "Collored string"
+ .fg::<Yellow>()
+ .on_truecolor(12, 200, 100)
+ .blink()
+ .to_string();
+ assert_eq!(
+ cut_str(&s, 1),
+ "\u{1b}[5m\u{1b}[48;2;12;200;100m\u{1b}[33mC\u{1b}[25m\u{1b}[39m\u{1b}[49m"
+ )
+ }
+}
diff --git a/vendor/tabled/src/settings/width/width_list.rs b/vendor/tabled/src/settings/width/width_list.rs
new file mode 100644
index 000000000..7547b97f3
--- /dev/null
+++ b/vendor/tabled/src/settings/width/width_list.rs
@@ -0,0 +1,50 @@
+use std::iter::FromIterator;
+
+use crate::{
+ grid::dimension::CompleteDimensionVecRecords, grid::records::Records, settings::TableOption,
+};
+
+/// A structure used to set [`Table`] width via a list of columns widths.
+///
+/// [`Table`]: crate::Table
+#[derive(Debug)]
+pub struct WidthList {
+ list: Vec<usize>,
+}
+
+impl WidthList {
+ /// Creates a new object.
+ pub fn new(list: Vec<usize>) -> Self {
+ Self { list }
+ }
+}
+
+impl From<Vec<usize>> for WidthList {
+ fn from(list: Vec<usize>) -> Self {
+ Self::new(list)
+ }
+}
+
+impl FromIterator<usize> for WidthList {
+ fn from_iter<T: IntoIterator<Item = usize>>(iter: T) -> Self {
+ Self::new(iter.into_iter().collect())
+ }
+}
+
+impl<R, C> TableOption<R, CompleteDimensionVecRecords<'static>, C> for WidthList
+where
+ R: Records,
+{
+ fn change(
+ self,
+ records: &mut R,
+ _: &mut C,
+ dimension: &mut CompleteDimensionVecRecords<'static>,
+ ) {
+ if self.list.len() < records.count_columns() {
+ return;
+ }
+
+ let _ = dimension.set_widths(self.list);
+ }
+}
diff --git a/vendor/tabled/src/settings/width/wrap.rs b/vendor/tabled/src/settings/width/wrap.rs
new file mode 100644
index 000000000..96a370408
--- /dev/null
+++ b/vendor/tabled/src/settings/width/wrap.rs
@@ -0,0 +1,1468 @@
+//! This module contains [`Wrap`] structure, used to decrease width of a [`Table`]s or a cell on a [`Table`] by wrapping it's content
+//! to a new line.
+//!
+//! [`Table`]: crate::Table
+
+use std::marker::PhantomData;
+
+use crate::{
+ grid::config::ColoredConfig,
+ grid::dimension::CompleteDimensionVecRecords,
+ grid::records::{EmptyRecords, ExactRecords, PeekableRecords, Records, RecordsMut},
+ grid::{config::Entity, config::SpannedConfig, util::string::string_width_multiline},
+ settings::{
+ measurement::Measurement,
+ peaker::{Peaker, PriorityNone},
+ width::Width,
+ CellOption, TableOption,
+ },
+};
+
+use super::util::{get_table_widths, get_table_widths_with_total, split_at_pos};
+
+/// Wrap wraps a string to a new line in case it exceeds the provided max boundary.
+/// Otherwise keeps the content of a cell untouched.
+///
+/// The function is color aware if a `color` feature is on.
+///
+/// Be aware that it doesn't consider padding.
+/// So if you want to set a exact width you might need to use [`Padding`] to set it to 0.
+///
+/// ## Example
+///
+/// ```
+/// use tabled::{Table, settings::{object::Segment, width::Width, Modify}};
+///
+/// let table = Table::new(&["Hello World!"])
+/// .with(Modify::new(Segment::all()).with(Width::wrap(3)));
+/// ```
+///
+/// [`Padding`]: crate::settings::Padding
+#[derive(Debug, Clone)]
+pub struct Wrap<W = usize, P = PriorityNone> {
+ width: W,
+ keep_words: bool,
+ _priority: PhantomData<P>,
+}
+
+impl<W> Wrap<W> {
+ /// Creates a [`Wrap`] object
+ pub fn new(width: W) -> Self
+ where
+ W: Measurement<Width>,
+ {
+ Wrap {
+ width,
+ keep_words: false,
+ _priority: PhantomData,
+ }
+ }
+}
+
+impl<W, P> Wrap<W, P> {
+ /// Priority defines the logic by which a truncate will be applied when is done for the whole table.
+ ///
+ /// - [`PriorityNone`] which cuts the columns one after another.
+ /// - [`PriorityMax`] cuts the biggest columns first.
+ /// - [`PriorityMin`] cuts the lowest columns first.
+ ///
+ /// Be aware that it doesn't consider padding.
+ /// So if you want to set a exact width you might need to use [`Padding`] to set it to 0.
+ ///
+ /// [`Padding`]: crate::settings::Padding
+ /// [`PriorityMax`]: crate::settings::peaker::PriorityMax
+ /// [`PriorityMin`]: crate::settings::peaker::PriorityMin
+ pub fn priority<PP>(self) -> Wrap<W, PP> {
+ Wrap {
+ width: self.width,
+ keep_words: self.keep_words,
+ _priority: PhantomData,
+ }
+ }
+
+ /// Set the keep words option.
+ ///
+ /// If a wrapping point will be in a word, [`Wrap`] will
+ /// preserve a word (if possible) and wrap the string before it.
+ pub fn keep_words(mut self) -> Self {
+ self.keep_words = true;
+ self
+ }
+}
+
+impl Wrap<(), ()> {
+ /// Wrap a given string
+ pub fn wrap_text(text: &str, width: usize, keeping_words: bool) -> String {
+ wrap_text(text, width, keeping_words)
+ }
+}
+
+impl<W, P, R> TableOption<R, CompleteDimensionVecRecords<'static>, ColoredConfig> for Wrap<W, P>
+where
+ W: Measurement<Width>,
+ P: Peaker,
+ R: Records + ExactRecords + PeekableRecords + RecordsMut<String>,
+ for<'a> &'a R: Records,
+{
+ fn change(
+ self,
+ records: &mut R,
+ cfg: &mut ColoredConfig,
+ dims: &mut CompleteDimensionVecRecords<'static>,
+ ) {
+ if records.count_rows() == 0 || records.count_columns() == 0 {
+ return;
+ }
+
+ let width = self.width.measure(&*records, cfg);
+ let (widths, total) = get_table_widths_with_total(&*records, cfg);
+ if width >= total {
+ return;
+ }
+
+ let priority = P::create();
+ let keep_words = self.keep_words;
+ let widths = wrap_total_width(records, cfg, widths, total, width, keep_words, priority);
+
+ let _ = dims.set_widths(widths);
+ }
+}
+
+impl<W, R> CellOption<R, ColoredConfig> for Wrap<W>
+where
+ W: Measurement<Width>,
+ R: Records + ExactRecords + PeekableRecords + RecordsMut<String>,
+ for<'a> &'a R: Records,
+{
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, entity: Entity) {
+ let width = self.width.measure(&*records, cfg);
+
+ let count_rows = records.count_rows();
+ let count_columns = records.count_columns();
+
+ for pos in entity.iter(count_rows, count_columns) {
+ let is_valid_pos = pos.0 < records.count_rows() && pos.1 < records.count_columns();
+ if !is_valid_pos {
+ continue;
+ }
+
+ let text = records.get_text(pos);
+ let cell_width = string_width_multiline(text);
+ if cell_width <= width {
+ continue;
+ }
+
+ let wrapped = wrap_text(text, width, self.keep_words);
+ records.set(pos, wrapped);
+ }
+ }
+}
+
+fn wrap_total_width<R, P>(
+ records: &mut R,
+ cfg: &mut ColoredConfig,
+ mut widths: Vec<usize>,
+ total_width: usize,
+ width: usize,
+ keep_words: bool,
+ priority: P,
+) -> Vec<usize>
+where
+ R: Records + ExactRecords + PeekableRecords + RecordsMut<String>,
+ P: Peaker,
+ for<'a> &'a R: Records,
+{
+ let shape = (records.count_rows(), records.count_columns());
+ let min_widths = get_table_widths(EmptyRecords::from(shape), cfg);
+
+ decrease_widths(&mut widths, &min_widths, total_width, width, priority);
+
+ let points = get_decrease_cell_list(cfg, &widths, &min_widths, shape);
+
+ for ((row, col), width) in points {
+ let mut wrap = Wrap::new(width);
+ wrap.keep_words = keep_words;
+ <Wrap as CellOption<_, _>>::change(wrap, records, cfg, (row, col).into());
+ }
+
+ widths
+}
+
+#[cfg(not(feature = "color"))]
+pub(crate) fn wrap_text(text: &str, width: usize, keep_words: bool) -> String {
+ if width == 0 {
+ return String::new();
+ }
+
+ if keep_words {
+ split_keeping_words(text, width, "\n")
+ } else {
+ chunks(text, width).join("\n")
+ }
+}
+
+#[cfg(feature = "color")]
+pub(crate) fn wrap_text(text: &str, width: usize, keep_words: bool) -> String {
+ use super::util::strip_osc;
+
+ if width == 0 {
+ return String::new();
+ }
+
+ let (text, url): (String, Option<String>) = strip_osc(text);
+ let (prefix, suffix) = build_link_prefix_suffix(url);
+
+ if keep_words {
+ split_keeping_words(&text, width, &prefix, &suffix)
+ } else {
+ chunks(&text, width, &prefix, &suffix).join("\n")
+ }
+}
+
+#[cfg(feature = "color")]
+fn build_link_prefix_suffix(url: Option<String>) -> (String, String) {
+ match url {
+ Some(url) => {
+ // https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda
+ let osc8 = "\x1b]8;;";
+ let st = "\x1b\\";
+
+ (format!("{osc8}{url}{st}"), format!("{osc8}{st}"))
+ }
+ None => ("".to_string(), "".to_string()),
+ }
+}
+
+#[cfg(not(feature = "color"))]
+fn chunks(s: &str, width: usize) -> Vec<String> {
+ if width == 0 {
+ return Vec::new();
+ }
+
+ const REPLACEMENT: char = '\u{FFFD}';
+
+ let mut buf = String::with_capacity(width);
+ let mut list = Vec::new();
+ let mut i = 0;
+ for c in s.chars() {
+ let c_width = unicode_width::UnicodeWidthChar::width(c).unwrap_or_default();
+ if i + c_width > width {
+ let count_unknowns = width - i;
+ buf.extend(std::iter::repeat(REPLACEMENT).take(count_unknowns));
+ i += count_unknowns;
+ } else {
+ buf.push(c);
+ i += c_width;
+ }
+
+ if i == width {
+ list.push(buf);
+ buf = String::with_capacity(width);
+ i = 0;
+ }
+ }
+
+ if !buf.is_empty() {
+ list.push(buf);
+ }
+
+ list
+}
+
+#[cfg(feature = "color")]
+fn chunks(s: &str, width: usize, prefix: &str, suffix: &str) -> Vec<String> {
+ use std::fmt::Write;
+
+ if width == 0 {
+ return Vec::new();
+ }
+
+ let mut list = Vec::new();
+ let mut line = String::with_capacity(width);
+ let mut line_width = 0;
+
+ for b in ansi_str::get_blocks(s) {
+ let text_style = b.style();
+ let mut text_slice = b.text();
+ if text_slice.is_empty() {
+ continue;
+ }
+
+ let available_space = width - line_width;
+ if available_space == 0 {
+ list.push(line);
+ line = String::with_capacity(width);
+ line_width = 0;
+ }
+
+ line.push_str(prefix);
+ let _ = write!(&mut line, "{}", text_style.start());
+
+ while !text_slice.is_empty() {
+ let available_space = width - line_width;
+
+ let part_width = unicode_width::UnicodeWidthStr::width(text_slice);
+ if part_width <= available_space {
+ line.push_str(text_slice);
+ line_width += part_width;
+
+ if available_space == 0 {
+ let _ = write!(&mut line, "{}", text_style.end());
+ line.push_str(suffix);
+ list.push(line);
+ line = String::with_capacity(width);
+ line.push_str(prefix);
+ line_width = 0;
+ let _ = write!(&mut line, "{}", text_style.start());
+ }
+
+ break;
+ }
+
+ let (lhs, rhs, (unknowns, split_char)) = split_string_at(text_slice, available_space);
+
+ text_slice = &rhs[split_char..];
+
+ line.push_str(lhs);
+ line_width += unicode_width::UnicodeWidthStr::width(lhs);
+
+ const REPLACEMENT: char = '\u{FFFD}';
+ line.extend(std::iter::repeat(REPLACEMENT).take(unknowns));
+ line_width += unknowns;
+
+ if line_width == width {
+ let _ = write!(&mut line, "{}", text_style.end());
+ line.push_str(suffix);
+ list.push(line);
+ line = String::with_capacity(width);
+ line.push_str(prefix);
+ line_width = 0;
+ let _ = write!(&mut line, "{}", text_style.start());
+ }
+ }
+
+ if line_width > 0 {
+ let _ = write!(&mut line, "{}", text_style.end());
+ }
+ }
+
+ if line_width > 0 {
+ line.push_str(suffix);
+ list.push(line);
+ }
+
+ list
+}
+
+#[cfg(not(feature = "color"))]
+fn split_keeping_words(s: &str, width: usize, sep: &str) -> String {
+ const REPLACEMENT: char = '\u{FFFD}';
+
+ let mut lines = Vec::new();
+ let mut line = String::with_capacity(width);
+ let mut line_width = 0;
+
+ let mut is_first_word = true;
+
+ for word in s.split(' ') {
+ if !is_first_word {
+ let line_has_space = line_width < width;
+ if line_has_space {
+ line.push(' ');
+ line_width += 1;
+ is_first_word = false;
+ }
+ }
+
+ if is_first_word {
+ is_first_word = false;
+ }
+
+ let word_width = unicode_width::UnicodeWidthStr::width(word);
+
+ let line_has_space = line_width + word_width <= width;
+ if line_has_space {
+ line.push_str(word);
+ line_width += word_width;
+ continue;
+ }
+
+ if word_width <= width {
+ // the word can be fit to 'width' so we put it on new line
+
+ line.extend(std::iter::repeat(' ').take(width - line_width));
+ lines.push(line);
+
+ line = String::with_capacity(width);
+ line_width = 0;
+
+ line.push_str(word);
+ line_width += word_width;
+ is_first_word = false;
+ } else {
+ // the word is too long any way so we split it
+
+ let mut word_part = word;
+ while !word_part.is_empty() {
+ let available_space = width - line_width;
+ let (lhs, rhs, (unknowns, split_char)) =
+ split_string_at(word_part, available_space);
+
+ word_part = &rhs[split_char..];
+ line_width += unicode_width::UnicodeWidthStr::width(lhs) + unknowns;
+ is_first_word = false;
+
+ line.push_str(lhs);
+ line.extend(std::iter::repeat(REPLACEMENT).take(unknowns));
+
+ if line_width == width {
+ lines.push(line);
+ line = String::with_capacity(width);
+ line_width = 0;
+ is_first_word = true;
+ }
+ }
+ }
+ }
+
+ if line_width > 0 {
+ line.extend(std::iter::repeat(' ').take(width - line_width));
+ lines.push(line);
+ }
+
+ lines.join(sep)
+}
+
+#[cfg(feature = "color")]
+fn split_keeping_words(text: &str, width: usize, prefix: &str, suffix: &str) -> String {
+ if text.is_empty() || width == 0 {
+ return String::new();
+ }
+
+ let stripped_text = ansi_str::AnsiStr::ansi_strip(text);
+ let mut word_width = 0;
+ let mut word_chars = 0;
+ let mut blocks = parsing::Blocks::new(ansi_str::get_blocks(text));
+ let mut buf = parsing::MultilineBuffer::new(width);
+ buf.set_prefix(prefix);
+ buf.set_suffix(suffix);
+
+ for c in stripped_text.chars() {
+ match c {
+ ' ' => {
+ parsing::handle_word(&mut buf, &mut blocks, word_chars, word_width, 1);
+ word_chars = 0;
+ word_width = 0;
+ }
+ '\n' => {
+ parsing::handle_word(&mut buf, &mut blocks, word_chars, word_width, 1);
+ word_chars = 0;
+ word_width = 0;
+ }
+ _ => {
+ word_width += unicode_width::UnicodeWidthChar::width(c).unwrap_or(0);
+ word_chars += 1;
+ }
+ }
+ }
+
+ if word_chars > 0 {
+ parsing::handle_word(&mut buf, &mut blocks, word_chars, word_width, 0);
+ buf.finish_line(&blocks);
+ }
+
+ buf.into_string()
+}
+
+#[cfg(feature = "color")]
+mod parsing {
+ use ansi_str::{AnsiBlock, AnsiBlockIter, Style};
+ use std::fmt::Write;
+
+ pub(super) struct Blocks<'a> {
+ iter: AnsiBlockIter<'a>,
+ current: Option<RelativeBlock<'a>>,
+ }
+
+ impl<'a> Blocks<'a> {
+ pub(super) fn new(iter: AnsiBlockIter<'a>) -> Self {
+ Self {
+ iter,
+ current: None,
+ }
+ }
+
+ pub(super) fn next_block(&mut self) -> Option<RelativeBlock<'a>> {
+ self.current
+ .take()
+ .or_else(|| self.iter.next().map(RelativeBlock::new))
+ }
+ }
+
+ pub(super) struct RelativeBlock<'a> {
+ block: AnsiBlock<'a>,
+ pos: usize,
+ }
+
+ impl<'a> RelativeBlock<'a> {
+ pub(super) fn new(block: AnsiBlock<'a>) -> Self {
+ Self { block, pos: 0 }
+ }
+
+ pub(super) fn get_text(&self) -> &str {
+ &self.block.text()[self.pos..]
+ }
+
+ pub(super) fn get_origin(&self) -> &str {
+ self.block.text()
+ }
+
+ pub(super) fn get_style(&self) -> &Style {
+ self.block.style()
+ }
+ }
+
+ pub(super) struct MultilineBuffer<'a> {
+ buf: String,
+ width_last: usize,
+ width: usize,
+ prefix: &'a str,
+ suffix: &'a str,
+ }
+
+ impl<'a> MultilineBuffer<'a> {
+ pub(super) fn new(width: usize) -> Self {
+ Self {
+ buf: String::new(),
+ width_last: 0,
+ prefix: "",
+ suffix: "",
+ width,
+ }
+ }
+
+ pub(super) fn into_string(self) -> String {
+ self.buf
+ }
+
+ pub(super) fn set_suffix(&mut self, suffix: &'a str) {
+ self.suffix = suffix;
+ }
+
+ pub(super) fn set_prefix(&mut self, prefix: &'a str) {
+ self.prefix = prefix;
+ }
+
+ pub(super) fn max_width(&self) -> usize {
+ self.width
+ }
+
+ pub(super) fn available_width(&self) -> usize {
+ self.width - self.width_last
+ }
+
+ pub(super) fn fill(&mut self, c: char) -> usize {
+ debug_assert_eq!(unicode_width::UnicodeWidthChar::width(c), Some(1));
+
+ let rest_width = self.available_width();
+ for _ in 0..rest_width {
+ self.buf.push(c);
+ }
+
+ rest_width
+ }
+
+ pub(super) fn set_next_line(&mut self, blocks: &Blocks<'_>) {
+ if let Some(block) = &blocks.current {
+ let _ = self
+ .buf
+ .write_fmt(format_args!("{}", block.get_style().end()));
+ }
+
+ self.buf.push_str(self.suffix);
+
+ let _ = self.fill(' ');
+ self.buf.push('\n');
+ self.width_last = 0;
+
+ self.buf.push_str(self.prefix);
+
+ if let Some(block) = &blocks.current {
+ let _ = self
+ .buf
+ .write_fmt(format_args!("{}", block.get_style().start()));
+ }
+ }
+
+ pub(super) fn finish_line(&mut self, blocks: &Blocks<'_>) {
+ if let Some(block) = &blocks.current {
+ let _ = self
+ .buf
+ .write_fmt(format_args!("{}", block.get_style().end()));
+ }
+
+ self.buf.push_str(self.suffix);
+
+ let _ = self.fill(' ');
+ self.width_last = 0;
+ }
+
+ pub(super) fn read_chars(&mut self, block: &RelativeBlock<'_>, n: usize) -> (usize, usize) {
+ let mut count_chars = 0;
+ let mut count_bytes = 0;
+ for c in block.get_text().chars() {
+ if count_chars == n {
+ break;
+ }
+
+ count_chars += 1;
+ count_bytes += c.len_utf8();
+
+ let cwidth = unicode_width::UnicodeWidthChar::width(c).unwrap_or(0);
+
+ let available_space = self.width - self.width_last;
+ if available_space == 0 {
+ let _ = self
+ .buf
+ .write_fmt(format_args!("{}", block.get_style().end()));
+ self.buf.push_str(self.suffix);
+ self.buf.push('\n');
+ self.buf.push_str(self.prefix);
+ let _ = self
+ .buf
+ .write_fmt(format_args!("{}", block.get_style().start()));
+ self.width_last = 0;
+ }
+
+ let is_enough_space = self.width_last + cwidth <= self.width;
+ if !is_enough_space {
+ // thereatically a cwidth can be 2 but buf_width is 1
+ // but it handled here too;
+
+ const REPLACEMENT: char = '\u{FFFD}';
+ let _ = self.fill(REPLACEMENT);
+ self.width_last = self.width;
+ } else {
+ self.buf.push(c);
+ self.width_last += cwidth;
+ }
+ }
+
+ (count_chars, count_bytes)
+ }
+
+ pub(super) fn read_chars_unchecked(
+ &mut self,
+ block: &RelativeBlock<'_>,
+ n: usize,
+ ) -> (usize, usize) {
+ let mut count_chars = 0;
+ let mut count_bytes = 0;
+ for c in block.get_text().chars() {
+ if count_chars == n {
+ break;
+ }
+
+ count_chars += 1;
+ count_bytes += c.len_utf8();
+
+ let cwidth = unicode_width::UnicodeWidthChar::width(c).unwrap_or(0);
+ self.width_last += cwidth;
+
+ self.buf.push(c);
+ }
+
+ debug_assert!(self.width_last <= self.width);
+
+ (count_chars, count_bytes)
+ }
+ }
+
+ pub(super) fn read_chars(buf: &mut MultilineBuffer<'_>, blocks: &mut Blocks<'_>, n: usize) {
+ let mut n = n;
+ while n > 0 {
+ let is_new_block = blocks.current.is_none();
+ let mut block = blocks.next_block().expect("Must never happen");
+ if is_new_block {
+ buf.buf.push_str(buf.prefix);
+ let _ = buf
+ .buf
+ .write_fmt(format_args!("{}", block.get_style().start()));
+ }
+
+ let (read_count, read_bytes) = buf.read_chars(&block, n);
+
+ if block.pos + read_bytes == block.get_origin().len() {
+ let _ = buf
+ .buf
+ .write_fmt(format_args!("{}", block.get_style().end()));
+ } else {
+ block.pos += read_bytes;
+ blocks.current = Some(block);
+ }
+
+ n -= read_count;
+ }
+ }
+
+ pub(super) fn read_chars_unchecked(
+ buf: &mut MultilineBuffer<'_>,
+ blocks: &mut Blocks<'_>,
+ n: usize,
+ ) {
+ let mut n = n;
+ while n > 0 {
+ let is_new_block = blocks.current.is_none();
+ let mut block = blocks.next_block().expect("Must never happen");
+
+ if is_new_block {
+ buf.buf.push_str(buf.prefix);
+ let _ = buf
+ .buf
+ .write_fmt(format_args!("{}", block.get_style().start()));
+ }
+
+ let (read_count, read_bytes) = buf.read_chars_unchecked(&block, n);
+
+ if block.pos + read_bytes == block.get_origin().len() {
+ let _ = buf
+ .buf
+ .write_fmt(format_args!("{}", block.get_style().end()));
+ } else {
+ block.pos += read_bytes;
+ blocks.current = Some(block);
+ }
+
+ n -= read_count;
+ }
+ }
+
+ pub(super) fn handle_word(
+ buf: &mut MultilineBuffer<'_>,
+ blocks: &mut Blocks<'_>,
+ word_chars: usize,
+ word_width: usize,
+ additional_read: usize,
+ ) {
+ if word_chars > 0 {
+ let has_line_space = word_width <= buf.available_width();
+ let is_word_too_big = word_width > buf.max_width();
+
+ if is_word_too_big {
+ read_chars(buf, blocks, word_chars + additional_read);
+ } else if has_line_space {
+ read_chars_unchecked(buf, blocks, word_chars);
+ if additional_read > 0 {
+ read_chars(buf, blocks, additional_read);
+ }
+ } else {
+ buf.set_next_line(&*blocks);
+ read_chars_unchecked(buf, blocks, word_chars);
+ if additional_read > 0 {
+ read_chars(buf, blocks, additional_read);
+ }
+ }
+
+ return;
+ }
+
+ let has_current_line_space = additional_read <= buf.available_width();
+ if has_current_line_space {
+ read_chars_unchecked(buf, blocks, additional_read);
+ } else {
+ buf.set_next_line(&*blocks);
+ read_chars_unchecked(buf, blocks, additional_read);
+ }
+ }
+}
+
+fn split_string_at(text: &str, at: usize) -> (&str, &str, (usize, usize)) {
+ let (length, count_unknowns, split_char_size) = split_at_pos(text, at);
+ let (lhs, rhs) = text.split_at(length);
+
+ (lhs, rhs, (count_unknowns, split_char_size))
+}
+
+fn decrease_widths<F>(
+ widths: &mut [usize],
+ min_widths: &[usize],
+ total_width: usize,
+ mut width: usize,
+ mut peeaker: F,
+) where
+ F: Peaker,
+{
+ let mut empty_list = 0;
+ for col in 0..widths.len() {
+ if widths[col] == 0 || widths[col] <= min_widths[col] {
+ empty_list += 1;
+ }
+ }
+
+ while width != total_width {
+ if empty_list == widths.len() {
+ break;
+ }
+
+ let col = match peeaker.peak(min_widths, widths) {
+ Some(col) => col,
+ None => break,
+ };
+
+ if widths[col] == 0 || widths[col] <= min_widths[col] {
+ continue;
+ }
+
+ widths[col] -= 1;
+
+ if widths[col] == 0 || widths[col] <= min_widths[col] {
+ empty_list += 1;
+ }
+
+ width += 1;
+ }
+}
+
+fn get_decrease_cell_list(
+ cfg: &SpannedConfig,
+ widths: &[usize],
+ min_widths: &[usize],
+ shape: (usize, usize),
+) -> Vec<((usize, usize), usize)> {
+ let mut points = Vec::new();
+ (0..shape.1).for_each(|col| {
+ (0..shape.0)
+ .filter(|&row| cfg.is_cell_visible((row, col)))
+ .for_each(|row| {
+ let (width, width_min) = match cfg.get_column_span((row, col)) {
+ Some(span) => {
+ let width = (col..col + span).map(|i| widths[i]).sum::<usize>();
+ let min_width = (col..col + span).map(|i| min_widths[i]).sum::<usize>();
+ let count_borders = count_borders(cfg, col, col + span, shape.1);
+ (width + count_borders, min_width + count_borders)
+ }
+ None => (widths[col], min_widths[col]),
+ };
+
+ if width >= width_min {
+ let padding = cfg.get_padding((row, col).into());
+ let width = width.saturating_sub(padding.left.size + padding.right.size);
+
+ points.push(((row, col), width));
+ }
+ });
+ });
+
+ points
+}
+
+fn count_borders(cfg: &SpannedConfig, start: usize, end: usize, count_columns: usize) -> usize {
+ (start..end)
+ .skip(1)
+ .filter(|&i| cfg.has_vertical(i, count_columns))
+ .count()
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn split_test() {
+ #[cfg(not(feature = "color"))]
+ let split = |text, width| chunks(text, width).join("\n");
+
+ #[cfg(feature = "color")]
+ let split = |text, width| chunks(text, width, "", "").join("\n");
+
+ assert_eq!(split("123456", 0), "");
+
+ assert_eq!(split("123456", 1), "1\n2\n3\n4\n5\n6");
+ assert_eq!(split("123456", 2), "12\n34\n56");
+ assert_eq!(split("12345", 2), "12\n34\n5");
+ assert_eq!(split("123456", 6), "123456");
+ assert_eq!(split("123456", 10), "123456");
+
+ assert_eq!(split("😳😳😳😳😳", 1), "�\n�\n�\n�\n�");
+ assert_eq!(split("😳😳😳😳😳", 2), "😳\n😳\n😳\n😳\n😳");
+ assert_eq!(split("😳😳😳😳😳", 3), "😳�\n😳�\n😳");
+ assert_eq!(split("😳😳😳😳😳", 6), "😳😳😳\n😳😳");
+ assert_eq!(split("😳😳😳😳😳", 20), "😳😳😳😳😳");
+
+ assert_eq!(split("😳123😳", 1), "�\n1\n2\n3\n�");
+ assert_eq!(split("😳12😳3", 1), "�\n1\n2\n�\n3");
+ }
+
+ #[test]
+ fn chunks_test() {
+ #[allow(clippy::redundant_closure)]
+ #[cfg(not(feature = "color"))]
+ let chunks = |text, width| chunks(text, width);
+
+ #[cfg(feature = "color")]
+ let chunks = |text, width| chunks(text, width, "", "");
+
+ assert_eq!(chunks("123456", 0), [""; 0]);
+
+ assert_eq!(chunks("123456", 1), ["1", "2", "3", "4", "5", "6"]);
+ assert_eq!(chunks("123456", 2), ["12", "34", "56"]);
+ assert_eq!(chunks("12345", 2), ["12", "34", "5"]);
+
+ assert_eq!(chunks("😳😳😳😳😳", 1), ["�", "�", "�", "�", "�"]);
+ assert_eq!(chunks("😳😳😳😳😳", 2), ["😳", "😳", "😳", "😳", "😳"]);
+ assert_eq!(chunks("😳😳😳😳😳", 3), ["😳�", "😳�", "😳"]);
+ }
+
+ #[cfg(not(feature = "color"))]
+ #[test]
+ fn split_by_line_keeping_words_test() {
+ let split_keeping_words = |text, width| split_keeping_words(text, width, "\n");
+
+ assert_eq!(split_keeping_words("123456", 1), "1\n2\n3\n4\n5\n6");
+ assert_eq!(split_keeping_words("123456", 2), "12\n34\n56");
+ assert_eq!(split_keeping_words("12345", 2), "12\n34\n5 ");
+
+ assert_eq!(split_keeping_words("😳😳😳😳😳", 1), "�\n�\n�\n�\n�");
+
+ assert_eq!(split_keeping_words("111 234 1", 4), "111 \n234 \n1 ");
+ }
+
+ #[cfg(feature = "color")]
+ #[test]
+ fn split_by_line_keeping_words_test() {
+ #[cfg(feature = "color")]
+ let split_keeping_words = |text, width| split_keeping_words(text, width, "", "");
+
+ assert_eq!(split_keeping_words("123456", 1), "1\n2\n3\n4\n5\n6");
+ assert_eq!(split_keeping_words("123456", 2), "12\n34\n56");
+ assert_eq!(split_keeping_words("12345", 2), "12\n34\n5 ");
+
+ assert_eq!(split_keeping_words("😳😳😳😳😳", 1), "�\n�\n�\n�\n�");
+
+ assert_eq!(split_keeping_words("111 234 1", 4), "111 \n234 \n1 ");
+ }
+
+ #[cfg(feature = "color")]
+ #[test]
+ fn split_by_line_keeping_words_color_test() {
+ #[cfg(feature = "color")]
+ let split_keeping_words = |text, width| split_keeping_words(text, width, "", "");
+
+ #[cfg(not(feature = "color"))]
+ let split_keeping_words = |text, width| split_keeping_words(text, width, "\n");
+
+ let text = "\u{1b}[36mJapanese “vacancy†button\u{1b}[0m";
+
+ assert_eq!(split_keeping_words(text, 2), "\u{1b}[36mJa\u{1b}[39m\n\u{1b}[36mpa\u{1b}[39m\n\u{1b}[36mne\u{1b}[39m\n\u{1b}[36mse\u{1b}[39m\n\u{1b}[36m “\u{1b}[39m\n\u{1b}[36mva\u{1b}[39m\n\u{1b}[36mca\u{1b}[39m\n\u{1b}[36mnc\u{1b}[39m\n\u{1b}[36myâ€\u{1b}[39m\n\u{1b}[36m b\u{1b}[39m\n\u{1b}[36mut\u{1b}[39m\n\u{1b}[36mto\u{1b}[39m\n\u{1b}[36mn\u{1b}[39m ");
+ assert_eq!(split_keeping_words(text, 1), "\u{1b}[36mJ\u{1b}[39m\n\u{1b}[36ma\u{1b}[39m\n\u{1b}[36mp\u{1b}[39m\n\u{1b}[36ma\u{1b}[39m\n\u{1b}[36mn\u{1b}[39m\n\u{1b}[36me\u{1b}[39m\n\u{1b}[36ms\u{1b}[39m\n\u{1b}[36me\u{1b}[39m\n\u{1b}[36m \u{1b}[39m\n\u{1b}[36m“\u{1b}[39m\n\u{1b}[36mv\u{1b}[39m\n\u{1b}[36ma\u{1b}[39m\n\u{1b}[36mc\u{1b}[39m\n\u{1b}[36ma\u{1b}[39m\n\u{1b}[36mn\u{1b}[39m\n\u{1b}[36mc\u{1b}[39m\n\u{1b}[36my\u{1b}[39m\n\u{1b}[36mâ€\u{1b}[39m\n\u{1b}[36m \u{1b}[39m\n\u{1b}[36mb\u{1b}[39m\n\u{1b}[36mu\u{1b}[39m\n\u{1b}[36mt\u{1b}[39m\n\u{1b}[36mt\u{1b}[39m\n\u{1b}[36mo\u{1b}[39m\n\u{1b}[36mn\u{1b}[39m");
+ }
+
+ #[cfg(feature = "color")]
+ #[test]
+ fn split_by_line_keeping_words_color_2_test() {
+ use ansi_str::AnsiStr;
+
+ #[cfg(feature = "color")]
+ let split_keeping_words = |text, width| split_keeping_words(text, width, "", "");
+
+ #[cfg(not(feature = "color"))]
+ let split_keeping_words = |text, width| split_keeping_words(text, width, "\n");
+
+ let text = "\u{1b}[37mTigre Ecuador OMYA Andina 3824909999 Calcium carbonate Colombia\u{1b}[0m";
+
+ assert_eq!(
+ split_keeping_words(text, 2)
+ .ansi_split("\n")
+ .collect::<Vec<_>>(),
+ [
+ "\u{1b}[37mTi\u{1b}[39m",
+ "\u{1b}[37mgr\u{1b}[39m",
+ "\u{1b}[37me \u{1b}[39m",
+ "\u{1b}[37mEc\u{1b}[39m",
+ "\u{1b}[37mua\u{1b}[39m",
+ "\u{1b}[37mdo\u{1b}[39m",
+ "\u{1b}[37mr \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37mOM\u{1b}[39m",
+ "\u{1b}[37mYA\u{1b}[39m",
+ "\u{1b}[37m A\u{1b}[39m",
+ "\u{1b}[37mnd\u{1b}[39m",
+ "\u{1b}[37min\u{1b}[39m",
+ "\u{1b}[37ma \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m38\u{1b}[39m",
+ "\u{1b}[37m24\u{1b}[39m",
+ "\u{1b}[37m90\u{1b}[39m",
+ "\u{1b}[37m99\u{1b}[39m",
+ "\u{1b}[37m99\u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37mCa\u{1b}[39m",
+ "\u{1b}[37mlc\u{1b}[39m",
+ "\u{1b}[37miu\u{1b}[39m",
+ "\u{1b}[37mm \u{1b}[39m",
+ "\u{1b}[37mca\u{1b}[39m",
+ "\u{1b}[37mrb\u{1b}[39m",
+ "\u{1b}[37mon\u{1b}[39m",
+ "\u{1b}[37mat\u{1b}[39m",
+ "\u{1b}[37me \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37mCo\u{1b}[39m",
+ "\u{1b}[37mlo\u{1b}[39m",
+ "\u{1b}[37mmb\u{1b}[39m",
+ "\u{1b}[37mia\u{1b}[39m"
+ ]
+ );
+
+ assert_eq!(
+ split_keeping_words(text, 1)
+ .ansi_split("\n")
+ .collect::<Vec<_>>(),
+ [
+ "\u{1b}[37mT\u{1b}[39m",
+ "\u{1b}[37mi\u{1b}[39m",
+ "\u{1b}[37mg\u{1b}[39m",
+ "\u{1b}[37mr\u{1b}[39m",
+ "\u{1b}[37me\u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37mE\u{1b}[39m",
+ "\u{1b}[37mc\u{1b}[39m",
+ "\u{1b}[37mu\u{1b}[39m",
+ "\u{1b}[37ma\u{1b}[39m",
+ "\u{1b}[37md\u{1b}[39m",
+ "\u{1b}[37mo\u{1b}[39m",
+ "\u{1b}[37mr\u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37mO\u{1b}[39m",
+ "\u{1b}[37mM\u{1b}[39m",
+ "\u{1b}[37mY\u{1b}[39m",
+ "\u{1b}[37mA\u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37mA\u{1b}[39m",
+ "\u{1b}[37mn\u{1b}[39m",
+ "\u{1b}[37md\u{1b}[39m",
+ "\u{1b}[37mi\u{1b}[39m",
+ "\u{1b}[37mn\u{1b}[39m",
+ "\u{1b}[37ma\u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m3\u{1b}[39m",
+ "\u{1b}[37m8\u{1b}[39m",
+ "\u{1b}[37m2\u{1b}[39m",
+ "\u{1b}[37m4\u{1b}[39m",
+ "\u{1b}[37m9\u{1b}[39m",
+ "\u{1b}[37m0\u{1b}[39m",
+ "\u{1b}[37m9\u{1b}[39m",
+ "\u{1b}[37m9\u{1b}[39m",
+ "\u{1b}[37m9\u{1b}[39m",
+ "\u{1b}[37m9\u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37mC\u{1b}[39m",
+ "\u{1b}[37ma\u{1b}[39m",
+ "\u{1b}[37ml\u{1b}[39m",
+ "\u{1b}[37mc\u{1b}[39m",
+ "\u{1b}[37mi\u{1b}[39m",
+ "\u{1b}[37mu\u{1b}[39m",
+ "\u{1b}[37mm\u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37mc\u{1b}[39m",
+ "\u{1b}[37ma\u{1b}[39m",
+ "\u{1b}[37mr\u{1b}[39m",
+ "\u{1b}[37mb\u{1b}[39m",
+ "\u{1b}[37mo\u{1b}[39m",
+ "\u{1b}[37mn\u{1b}[39m",
+ "\u{1b}[37ma\u{1b}[39m",
+ "\u{1b}[37mt\u{1b}[39m",
+ "\u{1b}[37me\u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37m \u{1b}[39m",
+ "\u{1b}[37mC\u{1b}[39m",
+ "\u{1b}[37mo\u{1b}[39m",
+ "\u{1b}[37ml\u{1b}[39m",
+ "\u{1b}[37mo\u{1b}[39m",
+ "\u{1b}[37mm\u{1b}[39m",
+ "\u{1b}[37mb\u{1b}[39m",
+ "\u{1b}[37mi\u{1b}[39m",
+ "\u{1b}[37ma\u{1b}[39m"
+ ]
+ )
+ }
+
+ #[cfg(feature = "color")]
+ #[test]
+ fn split_by_line_keeping_words_color_3_test() {
+ let split = |text, width| split_keeping_words(text, width, "", "");
+ assert_eq!(
+ split(
+ "\u{1b}[37m🚵ðŸ»ðŸšµðŸ»ðŸšµðŸ»ðŸšµðŸ»ðŸšµðŸ»ðŸšµðŸ»ðŸšµðŸ»ðŸšµðŸ»ðŸšµðŸ»ðŸšµðŸ»\u{1b}[0m",
+ 3,
+ ),
+ "\u{1b}[37m🚵�\u{1b}[39m\n\u{1b}[37m🚵�\u{1b}[39m\n\u{1b}[37m🚵�\u{1b}[39m\n\u{1b}[37m🚵�\u{1b}[39m\n\u{1b}[37m🚵�\u{1b}[39m\n\u{1b}[37m🚵�\u{1b}[39m\n\u{1b}[37m🚵�\u{1b}[39m\n\u{1b}[37m🚵�\u{1b}[39m\n\u{1b}[37m🚵�\u{1b}[39m\n\u{1b}[37m🚵�\u{1b}[39m",
+ );
+ assert_eq!(
+ split("\u{1b}[37mthis is a long sentence\u{1b}[0m", 7),
+ "\u{1b}[37mthis is\u{1b}[39m\n\u{1b}[37m a long\u{1b}[39m\n\u{1b}[37m senten\u{1b}[39m\n\u{1b}[37mce\u{1b}[39m "
+ );
+ assert_eq!(
+ split("\u{1b}[37mHello World\u{1b}[0m", 7),
+ "\u{1b}[37mHello \u{1b}[39m \n\u{1b}[37mWorld\u{1b}[39m "
+ );
+ assert_eq!(
+ split("\u{1b}[37mHello Wo\u{1b}[37mrld\u{1b}[0m", 7),
+ "\u{1b}[37mHello \u{1b}[39m \n\u{1b}[37mWo\u{1b}[39m\u{1b}[37mrld\u{1b}[39m "
+ );
+ assert_eq!(
+ split("\u{1b}[37mHello Wo\u{1b}[37mrld\u{1b}[0m", 8),
+ "\u{1b}[37mHello \u{1b}[39m \n\u{1b}[37mWo\u{1b}[39m\u{1b}[37mrld\u{1b}[39m "
+ );
+ }
+
+ #[cfg(not(feature = "color"))]
+ #[test]
+ fn split_keeping_words_4_test() {
+ let split_keeping_words = |text, width| split_keeping_words(text, width, "\n");
+
+ assert_eq!(split_keeping_words("12345678", 3,), "123\n456\n78 ");
+ assert_eq!(split_keeping_words("12345678", 2,), "12\n34\n56\n78");
+ }
+
+ #[cfg(feature = "color")]
+ #[test]
+ fn split_keeping_words_4_test() {
+ let split_keeping_words = |text, width| split_keeping_words(text, width, "", "");
+
+ #[cfg(not(feature = "color"))]
+ let split_keeping_words = |text, width| split_keeping_words(text, width, "\n");
+
+ assert_eq!(split_keeping_words("12345678", 3,), "123\n456\n78 ");
+ assert_eq!(split_keeping_words("12345678", 2,), "12\n34\n56\n78");
+ }
+
+ #[cfg(feature = "color")]
+ #[test]
+ fn chunks_test_with_prefix_and_suffix() {
+ assert_eq!(chunks("123456", 0, "^", "$"), ["^$"; 0]);
+
+ assert_eq!(
+ chunks("123456", 1, "^", "$"),
+ ["^1$", "^2$", "^3$", "^4$", "^5$", "^6$"]
+ );
+ assert_eq!(chunks("123456", 2, "^", "$"), ["^12$", "^34$", "^56$"]);
+ assert_eq!(chunks("12345", 2, "^", "$"), ["^12$", "^34$", "^5$"]);
+
+ assert_eq!(
+ chunks("😳😳😳😳😳", 1, "^", "$"),
+ ["^�$", "^�$", "^�$", "^�$", "^�$"]
+ );
+ assert_eq!(
+ chunks("😳😳😳😳😳", 2, "^", "$"),
+ ["^😳$", "^😳$", "^😳$", "^😳$", "^😳$"]
+ );
+ assert_eq!(
+ chunks("😳😳😳😳😳", 3, "^", "$"),
+ ["^😳�$", "^😳�$", "^😳$"]
+ );
+ }
+
+ #[cfg(feature = "color")]
+ #[test]
+ fn split_by_line_keeping_words_test_with_prefix_and_suffix() {
+ assert_eq!(
+ split_keeping_words("123456", 1, "^", "$"),
+ "^1$\n^2$\n^3$\n^4$\n^5$\n^6$"
+ );
+ assert_eq!(
+ split_keeping_words("123456", 2, "^", "$"),
+ "^12$\n^34$\n^56$"
+ );
+ assert_eq!(
+ split_keeping_words("12345", 2, "^", "$"),
+ "^12$\n^34$\n^5$ "
+ );
+
+ assert_eq!(
+ split_keeping_words("😳😳😳😳😳", 1, "^", "$"),
+ "^�$\n^�$\n^�$\n^�$\n^�$"
+ );
+ }
+
+ #[cfg(feature = "color")]
+ #[test]
+ fn split_by_line_keeping_words_color_2_test_with_prefix_and_suffix() {
+ use ansi_str::AnsiStr;
+
+ let text = "\u{1b}[37mTigre Ecuador OMYA Andina 3824909999 Calcium carbonate Colombia\u{1b}[0m";
+
+ assert_eq!(
+ split_keeping_words(text, 2, "^", "$")
+ .ansi_split("\n")
+ .collect::<Vec<_>>(),
+ [
+ "^\u{1b}[37mTi\u{1b}[39m$",
+ "^\u{1b}[37mgr\u{1b}[39m$",
+ "^\u{1b}[37me \u{1b}[39m$",
+ "^\u{1b}[37mEc\u{1b}[39m$",
+ "^\u{1b}[37mua\u{1b}[39m$",
+ "^\u{1b}[37mdo\u{1b}[39m$",
+ "^\u{1b}[37mr \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37mOM\u{1b}[39m$",
+ "^\u{1b}[37mYA\u{1b}[39m$",
+ "^\u{1b}[37m A\u{1b}[39m$",
+ "^\u{1b}[37mnd\u{1b}[39m$",
+ "^\u{1b}[37min\u{1b}[39m$",
+ "^\u{1b}[37ma \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m38\u{1b}[39m$",
+ "^\u{1b}[37m24\u{1b}[39m$",
+ "^\u{1b}[37m90\u{1b}[39m$",
+ "^\u{1b}[37m99\u{1b}[39m$",
+ "^\u{1b}[37m99\u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37mCa\u{1b}[39m$",
+ "^\u{1b}[37mlc\u{1b}[39m$",
+ "^\u{1b}[37miu\u{1b}[39m$",
+ "^\u{1b}[37mm \u{1b}[39m$",
+ "^\u{1b}[37mca\u{1b}[39m$",
+ "^\u{1b}[37mrb\u{1b}[39m$",
+ "^\u{1b}[37mon\u{1b}[39m$",
+ "^\u{1b}[37mat\u{1b}[39m$",
+ "^\u{1b}[37me \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37mCo\u{1b}[39m$",
+ "^\u{1b}[37mlo\u{1b}[39m$",
+ "^\u{1b}[37mmb\u{1b}[39m$",
+ "^\u{1b}[37mia\u{1b}[39m$"
+ ]
+ );
+
+ assert_eq!(
+ split_keeping_words(text, 1, "^", "$")
+ .ansi_split("\n")
+ .collect::<Vec<_>>(),
+ [
+ "^\u{1b}[37mT\u{1b}[39m$",
+ "^\u{1b}[37mi\u{1b}[39m$",
+ "^\u{1b}[37mg\u{1b}[39m$",
+ "^\u{1b}[37mr\u{1b}[39m$",
+ "^\u{1b}[37me\u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37mE\u{1b}[39m$",
+ "^\u{1b}[37mc\u{1b}[39m$",
+ "^\u{1b}[37mu\u{1b}[39m$",
+ "^\u{1b}[37ma\u{1b}[39m$",
+ "^\u{1b}[37md\u{1b}[39m$",
+ "^\u{1b}[37mo\u{1b}[39m$",
+ "^\u{1b}[37mr\u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37mO\u{1b}[39m$",
+ "^\u{1b}[37mM\u{1b}[39m$",
+ "^\u{1b}[37mY\u{1b}[39m$",
+ "^\u{1b}[37mA\u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37mA\u{1b}[39m$",
+ "^\u{1b}[37mn\u{1b}[39m$",
+ "^\u{1b}[37md\u{1b}[39m$",
+ "^\u{1b}[37mi\u{1b}[39m$",
+ "^\u{1b}[37mn\u{1b}[39m$",
+ "^\u{1b}[37ma\u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m3\u{1b}[39m$",
+ "^\u{1b}[37m8\u{1b}[39m$",
+ "^\u{1b}[37m2\u{1b}[39m$",
+ "^\u{1b}[37m4\u{1b}[39m$",
+ "^\u{1b}[37m9\u{1b}[39m$",
+ "^\u{1b}[37m0\u{1b}[39m$",
+ "^\u{1b}[37m9\u{1b}[39m$",
+ "^\u{1b}[37m9\u{1b}[39m$",
+ "^\u{1b}[37m9\u{1b}[39m$",
+ "^\u{1b}[37m9\u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37mC\u{1b}[39m$",
+ "^\u{1b}[37ma\u{1b}[39m$",
+ "^\u{1b}[37ml\u{1b}[39m$",
+ "^\u{1b}[37mc\u{1b}[39m$",
+ "^\u{1b}[37mi\u{1b}[39m$",
+ "^\u{1b}[37mu\u{1b}[39m$",
+ "^\u{1b}[37mm\u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37mc\u{1b}[39m$",
+ "^\u{1b}[37ma\u{1b}[39m$",
+ "^\u{1b}[37mr\u{1b}[39m$",
+ "^\u{1b}[37mb\u{1b}[39m$",
+ "^\u{1b}[37mo\u{1b}[39m$",
+ "^\u{1b}[37mn\u{1b}[39m$",
+ "^\u{1b}[37ma\u{1b}[39m$",
+ "^\u{1b}[37mt\u{1b}[39m$",
+ "^\u{1b}[37me\u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37m \u{1b}[39m$",
+ "^\u{1b}[37mC\u{1b}[39m$",
+ "^\u{1b}[37mo\u{1b}[39m$",
+ "^\u{1b}[37ml\u{1b}[39m$",
+ "^\u{1b}[37mo\u{1b}[39m$",
+ "^\u{1b}[37mm\u{1b}[39m$",
+ "^\u{1b}[37mb\u{1b}[39m$",
+ "^\u{1b}[37mi\u{1b}[39m$",
+ "^\u{1b}[37ma\u{1b}[39m$"
+ ]
+ )
+ }
+
+ #[cfg(feature = "color")]
+ #[test]
+ fn chunks_wrap_2() {
+ let text = "\u{1b}[30mDebian\u{1b}[0m\u{1b}[31mDebian\u{1b}[0m\u{1b}[32mDebian\u{1b}[0m\u{1b}[33mDebian\u{1b}[0m\u{1b}[34mDebian\u{1b}[0m\u{1b}[35mDebian\u{1b}[0m\u{1b}[36mDebian\u{1b}[0m\u{1b}[37mDebian\u{1b}[0m\u{1b}[40mDebian\u{1b}[0m\u{1b}[41mDebian\u{1b}[0m\u{1b}[42mDebian\u{1b}[0m\u{1b}[43mDebian\u{1b}[0m\u{1b}[44mDebian\u{1b}[0m";
+ assert_eq!(
+ chunks(text, 30, "", ""),
+ [
+ "\u{1b}[30mDebian\u{1b}[39m\u{1b}[31mDebian\u{1b}[39m\u{1b}[32mDebian\u{1b}[39m\u{1b}[33mDebian\u{1b}[39m\u{1b}[34mDebian\u{1b}[39m",
+ "\u{1b}[35mDebian\u{1b}[39m\u{1b}[36mDebian\u{1b}[39m\u{1b}[37mDebian\u{1b}[39m\u{1b}[40mDebian\u{1b}[49m\u{1b}[41mDebian\u{1b}[49m",
+ "\u{1b}[42mDebian\u{1b}[49m\u{1b}[43mDebian\u{1b}[49m\u{1b}[44mDebian\u{1b}[49m",
+ ]
+ );
+ }
+
+ #[cfg(feature = "color")]
+ #[test]
+ fn chunks_wrap_3() {
+ let text = "\u{1b}[37mCreate bytes from the \u{1b}[0m\u{1b}[7;34marg\u{1b}[0m\u{1b}[37muments.\u{1b}[0m";
+
+ assert_eq!(
+ chunks(text, 22, "", ""),
+ [
+ "\u{1b}[37mCreate bytes from the \u{1b}[39m",
+ "\u{1b}[7m\u{1b}[34marg\u{1b}[27m\u{1b}[39m\u{1b}[37muments.\u{1b}[39m"
+ ]
+ );
+ }
+
+ #[cfg(feature = "color")]
+ #[test]
+ fn chunks_wrap_3_keeping_words() {
+ let text = "\u{1b}[37mCreate bytes from the \u{1b}[0m\u{1b}[7;34marg\u{1b}[0m\u{1b}[37muments.\u{1b}[0m";
+
+ assert_eq!(
+ split_keeping_words(text, 22, "", ""),
+ "\u{1b}[37mCreate bytes from the \u{1b}[39m\n\u{1b}[7m\u{1b}[34marg\u{1b}[27m\u{1b}[39m\u{1b}[37muments.\u{1b}[39m "
+ );
+ }
+
+ #[cfg(feature = "color")]
+ #[test]
+ fn chunks_wrap_4() {
+ let text = "\u{1b}[37mReturns the floor of a number (l\u{1b}[0m\u{1b}[41;37marg\u{1b}[0m\u{1b}[37mest integer less than or equal to that number).\u{1b}[0m";
+
+ assert_eq!(
+ chunks(text, 10, "", ""),
+ [
+ "\u{1b}[37mReturns th\u{1b}[39m",
+ "\u{1b}[37me floor of\u{1b}[39m",
+ "\u{1b}[37m a number \u{1b}[39m",
+ "\u{1b}[37m(l\u{1b}[39m\u{1b}[37m\u{1b}[41marg\u{1b}[39m\u{1b}[49m\u{1b}[37mest i\u{1b}[39m",
+ "\u{1b}[37mnteger les\u{1b}[39m",
+ "\u{1b}[37ms than or \u{1b}[39m",
+ "\u{1b}[37mequal to t\u{1b}[39m",
+ "\u{1b}[37mhat number\u{1b}[39m",
+ "\u{1b}[37m).\u{1b}[39m",
+ ]
+ );
+ }
+
+ #[cfg(feature = "color")]
+ #[test]
+ fn chunks_wrap_4_keeping_words() {
+ let text = "\u{1b}[37mReturns the floor of a number (l\u{1b}[0m\u{1b}[41;37marg\u{1b}[0m\u{1b}[37mest integer less than or equal to that number).\u{1b}[0m";
+ assert_eq!(
+ split_keeping_words(text, 10, "", ""),
+ concat!(
+ "\u{1b}[37mReturns \u{1b}[39m \n",
+ "\u{1b}[37mthe floor \u{1b}[39m\n",
+ "\u{1b}[37mof a \u{1b}[39m \n",
+ "\u{1b}[37mnumber \u{1b}[39m \n",
+ "\u{1b}[37m(l\u{1b}[39m\u{1b}[37m\u{1b}[41marg\u{1b}[39m\u{1b}[49m\u{1b}[37mest \u{1b}[39m \n",
+ "\u{1b}[37minteger \u{1b}[39m \n",
+ "\u{1b}[37mless than \u{1b}[39m\n",
+ "\u{1b}[37mor equal \u{1b}[39m \n",
+ "\u{1b}[37mto that \u{1b}[39m \n",
+ "\u{1b}[37mnumber).\u{1b}[39m ",
+ )
+ );
+ }
+}
+
+// \u{1b}[37mReturns \u{1b}[39m\n
+// \u{1b}[37mthe floor \u{1b}[39m\n
+// \u{1b}[37mof a \u{1b}[39m\n
+// \u{1b}[37mnumber \u{1b}[39m\u{1b}[49m\n
+// \u{1b}[37m\u{1b}[41m(l\u{1b}[39m\u{1b}[37m\u{1b}[41marg\u{1b}[39m\u{1b}[49m\u{1b}[37mest \u{1b}[39m\n
+// \u{1b}[37minteger \u{1b}[39m\n
+// \u{1b}[37mless than \u{1b}[39m\n
+// \u{1b}[37mor equal \u{1b}[39m\n
+// \u{1b}[37mto that \u{1b}[39m\n
+// \u{1b}[37mnumber).\u{1b}[39m "
+
+//
+//
+
+// \u{1b}[37mReturns \u{1b}[39m\n
+// \u{1b}[37mthe floor \u{1b}[39m\n
+// \u{1b}[37mof a \u{1b}[39m\n
+// \u{1b}[37mnumber \u{1b}[39m\u{1b}[49m\n
+// \u{1b}[37m\u{1b}[41m(l\u{1b}[39m\u{1b}[37m\u{1b}[41marg\u{1b}[39m\u{1b}[49m\u{1b}[37mest \u{1b}[39m\n
+// \u{1b}[37minteger \u{1b}[39m\n
+// \u{1b}[37mless than \u{1b}[39m\n
+// \u{1b}[37mor equal \u{1b}[39m\n
+// \u{1b}[37mto that \u{1b}[39m\n
+// \u{1b}[37mnumber).\u{1b}[39m "
+
+// "\u{1b}[37mReturns\u{1b}[37m \u{1b}[39m\n
+// \u{1b}[37mthe\u{1b}[37m floor\u{1b}[37m \u{1b}[39m\n
+// \u{1b}[37mof\u{1b}[37m a\u{1b}[37m \u{1b}[39m\n
+// \u{1b}[37mnumber\u{1b}[37m \u{1b}[39m\u{1b}[49m\n
+// \u{1b}[37m\u{1b}[41m(l\u{1b}[39m\u{1b}[37m\u{1b}[41marg\u{1b}[39m\u{1b}[49m\u{1b}[37mest\u{1b}[37m \u{1b}[39m\n
+// \u{1b}[37minteger\u{1b}[37m \u{1b}[39m\n
+// \u{1b}[37mless\u{1b}[37m than\u{1b}[37m \u{1b}[39m\n
+// \u{1b}[37mor\u{1b}[37m equal\u{1b}[37m \u{1b}[39m\n
+// \u{1b}[37mto\u{1b}[37m that\u{1b}[37m \u{1b}[39m\n
+// \u{1b}[37mnumber).\u{1b}[39m "
diff --git a/vendor/tabled/src/tabled.rs b/vendor/tabled/src/tabled.rs
new file mode 100644
index 000000000..636173dc0
--- /dev/null
+++ b/vendor/tabled/src/tabled.rs
@@ -0,0 +1,150 @@
+use std::borrow::Cow;
+
+/// Tabled a trait responsible for providing a header fields and a row fields.
+///
+/// It's urgent that `header` len is equal to `fields` len.
+///
+/// ```text
+/// Self::headers().len() == self.fields().len()
+/// ```
+pub trait Tabled {
+ /// A length of fields and headers,
+ /// which must be the same.
+ const LENGTH: usize;
+
+ /// Fields method must return a list of cells.
+ ///
+ /// The cells will be placed in the same row, preserving the order.
+ fn fields(&self) -> Vec<Cow<'_, str>>;
+ /// Headers must return a list of column names.
+ fn headers() -> Vec<Cow<'static, str>>;
+}
+
+impl<T> Tabled for &T
+where
+ T: Tabled,
+{
+ const LENGTH: usize = T::LENGTH;
+
+ fn fields(&self) -> Vec<Cow<'_, str>> {
+ T::fields(self)
+ }
+ fn headers() -> Vec<Cow<'static, str>> {
+ T::headers()
+ }
+}
+
+impl<T> Tabled for Box<T>
+where
+ T: Tabled,
+{
+ const LENGTH: usize = T::LENGTH;
+
+ fn fields(&self) -> Vec<Cow<'_, str>> {
+ T::fields(self)
+ }
+ fn headers() -> Vec<Cow<'static, str>> {
+ T::headers()
+ }
+}
+
+macro_rules! tuple_table {
+ ( $($name:ident)+ ) => {
+ impl<$($name: Tabled),+> Tabled for ($($name,)+){
+ const LENGTH: usize = $($name::LENGTH+)+ 0;
+
+ fn fields(&self) -> Vec<Cow<'_, str>> {
+ #![allow(non_snake_case)]
+ let ($($name,)+) = self;
+ let mut fields = Vec::with_capacity(Self::LENGTH);
+ $(fields.append(&mut $name.fields());)+
+ fields
+ }
+
+ fn headers() -> Vec<Cow<'static, str>> {
+ let mut fields = Vec::with_capacity(Self::LENGTH);
+ $(fields.append(&mut $name::headers());)+
+ fields
+ }
+ }
+ };
+}
+
+tuple_table! { A }
+tuple_table! { A B }
+tuple_table! { A B C }
+tuple_table! { A B C D }
+tuple_table! { A B C D E }
+tuple_table! { A B C D E F }
+
+macro_rules! default_table {
+ ( $t:ty ) => {
+ impl Tabled for $t {
+ const LENGTH: usize = 1;
+
+ fn fields(&self) -> Vec<Cow<'_, str>> {
+ vec![Cow::Owned(self.to_string())]
+ }
+ fn headers() -> Vec<Cow<'static, str>> {
+ vec![Cow::Borrowed(stringify!($t))]
+ }
+ }
+ };
+
+ ( $t:ty = borrowed ) => {
+ impl Tabled for $t {
+ const LENGTH: usize = 1;
+
+ fn fields(&self) -> Vec<Cow<'_, str>> {
+ vec![Cow::Borrowed(self)]
+ }
+ fn headers() -> Vec<Cow<'static, str>> {
+ vec![Cow::Borrowed(stringify!($t))]
+ }
+ }
+ };
+}
+
+default_table!(&str = borrowed);
+default_table!(str = borrowed);
+default_table!(String);
+
+default_table!(char);
+
+default_table!(bool);
+
+default_table!(isize);
+default_table!(usize);
+
+default_table!(u8);
+default_table!(u16);
+default_table!(u32);
+default_table!(u64);
+default_table!(u128);
+
+default_table!(i8);
+default_table!(i16);
+default_table!(i32);
+default_table!(i64);
+default_table!(i128);
+
+default_table!(f32);
+default_table!(f64);
+
+impl<T, const N: usize> Tabled for [T; N]
+where
+ T: std::fmt::Display,
+{
+ const LENGTH: usize = N;
+
+ fn fields(&self) -> Vec<Cow<'_, str>> {
+ self.iter()
+ .map(ToString::to_string)
+ .map(Cow::Owned)
+ .collect()
+ }
+
+ fn headers() -> Vec<Cow<'static, str>> {
+ (0..N).map(|i| Cow::Owned(format!("{i}"))).collect()
+ }
+}
diff --git a/vendor/tabled/src/tables/compact.rs b/vendor/tabled/src/tables/compact.rs
new file mode 100644
index 000000000..14c1e2b5b
--- /dev/null
+++ b/vendor/tabled/src/tables/compact.rs
@@ -0,0 +1,309 @@
+//! This module contains a [`CompactTable`] table.
+//!
+//! In contrast to [`Table`] [`CompactTable`] does no allocations but it consumes an iterator.
+//! It's useful when you don't want to re/allocate a buffer for your data.
+//!
+//! # Example
+//!
+//! It works smoothly with arrays.
+//!
+#![cfg_attr(feature = "std", doc = "```")]
+#![cfg_attr(not(feature = "std"), doc = "```ignore")]
+//!use tabled::{settings::Style, tables::CompactTable};
+//!
+//! let data = [
+//! ["FreeBSD", "1993", "William and Lynne Jolitz", "?"],
+//! ["OpenBSD", "1995", "Theo de Raadt", ""],
+//! ["HardenedBSD", "2014", "Oliver Pinter and Shawn Webb", ""],
+//! ];
+//!
+//! let table = CompactTable::from(data)
+//! .with(Style::psql())
+//! .to_string();
+//!
+//! assert_eq!(
+//! table,
+//! concat!(
+//! " FreeBSD | 1993 | William and Lynne Jolitz | ? \n",
+//! "-------------+------+------------------------------+---\n",
+//! " OpenBSD | 1995 | Theo de Raadt | \n",
+//! " HardenedBSD | 2014 | Oliver Pinter and Shawn Webb | ",
+//! )
+//! );
+//! ```
+//!
+//! But it's default creation requires to be given an estimated cell width, and the amount of columns.
+//!
+#![cfg_attr(feature = "std", doc = "```")]
+#![cfg_attr(not(feature = "std"), doc = "```ignore")]
+//!use tabled::{settings::Style, tables::CompactTable};
+//!
+//! let data = [
+//! ["FreeBSD", "1993", "William and Lynne Jolitz", "?"],
+//! ["OpenBSD", "1995", "Theo de Raadt", ""],
+//! ["HardenedBSD", "2014", "Oliver Pinter and Shawn Webb", ""],
+//! ];
+//!
+//! // See what will happen if the given width is too narrow
+//!
+//! let table = CompactTable::new(&data)
+//! .columns(4)
+//! .width(5)
+//! .with(Style::ascii())
+//! .to_string();
+//!
+//! assert_eq!(
+//! table,
+//! "+-----+-----+-----+-----+\n\
+//! | FreeBSD | 1993 | William and Lynne Jolitz | ? |\n\
+//! |-----+-----+-----+-----|\n\
+//! | OpenBSD | 1995 | Theo de Raadt | |\n\
+//! |-----+-----+-----+-----|\n\
+//! | HardenedBSD | 2014 | Oliver Pinter and Shawn Webb | |\n\
+//! +-----+-----+-----+-----+"
+//! );
+//! ```
+//!
+//! [`Table`]: crate::Table
+
+use core::cmp::max;
+use core::fmt;
+
+use crate::{
+ grid::{
+ config::{AlignmentHorizontal, CompactConfig, Indent, Sides},
+ dimension::{ConstDimension, ConstSize, Dimension},
+ records::{
+ into_records::{LimitColumns, LimitRows},
+ IntoRecords, IterRecords,
+ },
+ util::string::string_width,
+ CompactGrid,
+ },
+ settings::{Style, TableOption},
+};
+
+/// A table which consumes an [`IntoRecords`] iterator.
+/// It assumes that the content has only single line.
+#[derive(Debug, Clone)]
+pub struct CompactTable<I, D> {
+ records: I,
+ cfg: CompactConfig,
+ dims: D,
+ count_columns: usize,
+ count_rows: Option<usize>,
+}
+
+impl<I> CompactTable<I, ConstDimension<0, 0>> {
+ /// Creates a new [`CompactTable`] structure with a width dimension for all columns.
+ pub const fn new(iter: I) -> Self
+ where
+ I: IntoRecords,
+ {
+ Self {
+ records: iter,
+ cfg: create_config(),
+ count_columns: 0,
+ count_rows: None,
+ dims: ConstDimension::new(ConstSize::Value(2), ConstSize::Value(1)),
+ }
+ }
+}
+
+impl<I, const ROWS: usize, const COLS: usize> CompactTable<I, ConstDimension<COLS, ROWS>> {
+ /// Set a height for each row.
+ pub fn height<S: Into<ConstSize<COUNT_ROWS>>, const COUNT_ROWS: usize>(
+ self,
+ size: S,
+ ) -> CompactTable<I, ConstDimension<COLS, COUNT_ROWS>> {
+ let (width, _) = self.dims.into();
+ CompactTable {
+ dims: ConstDimension::new(width, size.into()),
+ records: self.records,
+ cfg: self.cfg,
+ count_columns: self.count_columns,
+ count_rows: self.count_rows,
+ }
+ }
+
+ /// Set a width for each column.
+ pub fn width<S: Into<ConstSize<COUNT_COLUMNS>>, const COUNT_COLUMNS: usize>(
+ self,
+ size: S,
+ ) -> CompactTable<I, ConstDimension<COUNT_COLUMNS, ROWS>> {
+ let (_, height) = self.dims.into();
+ CompactTable {
+ dims: ConstDimension::new(size.into(), height),
+ records: self.records,
+ cfg: self.cfg,
+ count_columns: self.count_columns,
+ count_rows: self.count_rows,
+ }
+ }
+}
+
+impl<I, D> CompactTable<I, D> {
+ /// Creates a new [`CompactTable`] structure with a known dimension.
+ ///
+ /// Notice that the function wont call [`Estimate`].
+ ///
+ /// [`Estimate`]: crate::grid::dimension::Estimate
+ pub fn with_dimension(iter: I, dimension: D) -> Self
+ where
+ I: IntoRecords,
+ {
+ Self {
+ records: iter,
+ dims: dimension,
+ cfg: create_config(),
+ count_columns: 0,
+ count_rows: None,
+ }
+ }
+
+ /// With is a generic function which applies options to the [`CompactTable`].
+ pub fn with<O>(mut self, option: O) -> Self
+ where
+ for<'a> O: TableOption<IterRecords<&'a I>, D, CompactConfig>,
+ {
+ let mut records = IterRecords::new(&self.records, self.count_columns, self.count_rows);
+ option.change(&mut records, &mut self.cfg, &mut self.dims);
+
+ self
+ }
+
+ /// Limit a number of rows.
+ pub const fn rows(mut self, count_rows: usize) -> Self {
+ self.count_rows = Some(count_rows);
+ self
+ }
+
+ /// Limit a number of columns.
+ pub const fn columns(mut self, count: usize) -> Self {
+ self.count_columns = count;
+ self
+ }
+
+ /// Returns a table config.
+ pub fn get_config(&self) -> &CompactConfig {
+ &self.cfg
+ }
+
+ /// Returns a table config.
+ pub fn get_config_mut(&mut self) -> &mut CompactConfig {
+ &mut self.cfg
+ }
+
+ /// Format table into [fmt::Write]er.
+ pub fn fmt<W>(self, writer: W) -> fmt::Result
+ where
+ I: IntoRecords,
+ D: Dimension,
+ W: fmt::Write,
+ {
+ build_grid(
+ writer,
+ self.records,
+ self.dims,
+ self.cfg,
+ self.count_columns,
+ self.count_rows,
+ )
+ }
+
+ /// Format table into a writer.
+ #[cfg(feature = "std")]
+ #[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+ pub fn build<W>(self, writer: W) -> std::io::Result<()>
+ where
+ I: IntoRecords,
+ D: Dimension,
+ W: std::io::Write,
+ {
+ let writer = super::util::utf8_writer::UTF8Writer::new(writer);
+ self.fmt(writer)
+ .map_err(|err| std::io::Error::new(std::io::ErrorKind::Other, err))
+ }
+
+ /// Build a string.
+ ///
+ /// We can't implement [`std::string::ToString`] cause it does takes `&self` reference.
+ #[allow(clippy::inherent_to_string)]
+ #[cfg(feature = "std")]
+ #[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+ pub fn to_string(self) -> String
+ where
+ I: IntoRecords,
+ D: Dimension,
+ {
+ let mut buf = String::new();
+ self.fmt(&mut buf).unwrap();
+ buf
+ }
+}
+
+impl<T, const ROWS: usize, const COLS: usize> From<[[T; COLS]; ROWS]>
+ for CompactTable<[[T; COLS]; ROWS], ConstDimension<COLS, ROWS>>
+where
+ T: AsRef<str>,
+{
+ fn from(mat: [[T; COLS]; ROWS]) -> Self {
+ let mut width = [0; COLS];
+ for row in mat.iter() {
+ for (col, text) in row.iter().enumerate() {
+ let text = text.as_ref();
+ let text_width = string_width(text);
+ width[col] = max(width[col], text_width);
+ }
+ }
+
+ // add padding
+ for w in &mut width {
+ *w += 2;
+ }
+
+ let dims = ConstDimension::new(ConstSize::List(width), ConstSize::Value(1));
+ Self::with_dimension(mat, dims).columns(COLS).rows(ROWS)
+ }
+}
+
+fn build_grid<W: fmt::Write, I: IntoRecords, D: Dimension>(
+ writer: W,
+ records: I,
+ dims: D,
+ config: CompactConfig,
+ cols: usize,
+ rows: Option<usize>,
+) -> Result<(), fmt::Error> {
+ match rows {
+ Some(limit) => {
+ let records = LimitRows::new(records, limit);
+ let records = LimitColumns::new(records, cols);
+ let records = IterRecords::new(records, cols, rows);
+ CompactGrid::new(records, dims, config).build(writer)
+ }
+ None => {
+ let records = LimitColumns::new(records, cols);
+ let records = IterRecords::new(records, cols, rows);
+ CompactGrid::new(records, dims, config).build(writer)
+ }
+ }
+}
+
+const fn create_config() -> CompactConfig {
+ CompactConfig::empty()
+ .set_padding(Sides::new(
+ Indent::spaced(1),
+ Indent::spaced(1),
+ Indent::zero(),
+ Indent::zero(),
+ ))
+ .set_alignment_horizontal(AlignmentHorizontal::Left)
+ .set_borders(*Style::ascii().get_borders())
+}
+
+impl<R, D> TableOption<R, D, CompactConfig> for CompactConfig {
+ fn change(self, _: &mut R, cfg: &mut CompactConfig, _: &mut D) {
+ *cfg = self;
+ }
+}
diff --git a/vendor/tabled/src/tables/extended.rs b/vendor/tabled/src/tables/extended.rs
new file mode 100644
index 000000000..478505c4b
--- /dev/null
+++ b/vendor/tabled/src/tables/extended.rs
@@ -0,0 +1,338 @@
+//! This module contains an [`ExtendedTable`] structure which is useful in cases where
+//! a structure has a lot of fields.
+//!
+#![cfg_attr(feature = "derive", doc = "```")]
+#![cfg_attr(not(feature = "derive"), doc = "```ignore")]
+//! use tabled::{Tabled, tables::ExtendedTable};
+//!
+//! #[derive(Tabled)]
+//! struct Language {
+//! name: &'static str,
+//! designed_by: &'static str,
+//! invented_year: usize,
+//! }
+//!
+//! let languages = vec![
+//! Language{
+//! name: "C",
+//! designed_by: "Dennis Ritchie",
+//! invented_year: 1972
+//! },
+//! Language{
+//! name: "Rust",
+//! designed_by: "Graydon Hoare",
+//! invented_year: 2010
+//! },
+//! Language{
+//! name: "Go",
+//! designed_by: "Rob Pike",
+//! invented_year: 2009
+//! },
+//! ];
+//!
+//! let table = ExtendedTable::new(languages).to_string();
+//!
+//! let expected = "-[ RECORD 0 ]-+---------------\n\
+//! name | C\n\
+//! designed_by | Dennis Ritchie\n\
+//! invented_year | 1972\n\
+//! -[ RECORD 1 ]-+---------------\n\
+//! name | Rust\n\
+//! designed_by | Graydon Hoare\n\
+//! invented_year | 2010\n\
+//! -[ RECORD 2 ]-+---------------\n\
+//! name | Go\n\
+//! designed_by | Rob Pike\n\
+//! invented_year | 2009";
+//!
+//! assert_eq!(table, expected);
+//! ```
+
+use std::borrow::Cow;
+use std::fmt::{self, Display};
+
+use crate::grid::util::string::string_width;
+use crate::Tabled;
+
+/// `ExtendedTable` display data in a 'expanded display mode' from postgresql.
+/// It may be useful for a large data sets with a lot of fields.
+///
+/// See 'Examples' in <https://www.postgresql.org/docs/current/app-psql.html>.
+///
+/// It escapes strings to resolve a multi-line ones.
+/// Because of that ANSI sequences will be not be rendered too so colores will not be showed.
+///
+/// ```
+/// use tabled::tables::ExtendedTable;
+///
+/// let data = vec!["Hello", "2021"];
+/// let table = ExtendedTable::new(&data).to_string();
+///
+/// assert_eq!(
+/// table,
+/// concat!(
+/// "-[ RECORD 0 ]-\n",
+/// "&str | Hello\n",
+/// "-[ RECORD 1 ]-\n",
+/// "&str | 2021",
+/// )
+/// );
+/// ```
+#[derive(Debug, Clone)]
+pub struct ExtendedTable {
+ fields: Vec<String>,
+ records: Vec<Vec<String>>,
+}
+
+impl ExtendedTable {
+ /// Creates a new instance of `ExtendedTable`
+ pub fn new<T>(iter: impl IntoIterator<Item = T>) -> Self
+ where
+ T: Tabled,
+ {
+ let data = iter
+ .into_iter()
+ .map(|i| {
+ i.fields()
+ .into_iter()
+ .map(|s| s.escape_debug().to_string())
+ .collect()
+ })
+ .collect();
+ let header = T::headers()
+ .into_iter()
+ .map(|s| s.escape_debug().to_string())
+ .collect();
+
+ Self {
+ records: data,
+ fields: header,
+ }
+ }
+
+ /// Truncates table to a set width value for a table.
+ /// It returns a success inticator, where `false` means it's not possible to set the table width,
+ /// because of the given arguments.
+ ///
+ /// It tries to not affect fields, but if there's no enough space all records will be deleted and fields will be cut.
+ ///
+ /// The minimum width is 14.
+ pub fn truncate(&mut self, max: usize, suffix: &str) -> bool {
+ // -[ RECORD 0 ]-
+ let teplate_width = self.records.len().to_string().len() + 13;
+ let min_width = teplate_width;
+ if max < min_width {
+ return false;
+ }
+
+ let suffix_width = string_width(suffix);
+ if max < suffix_width {
+ return false;
+ }
+
+ let max = max - suffix_width;
+
+ let fields_max_width = self
+ .fields
+ .iter()
+ .map(|s| string_width(s))
+ .max()
+ .unwrap_or_default();
+
+ // 3 is a space for ' | '
+ let fields_affected = max < fields_max_width + 3;
+ if fields_affected {
+ if max < 3 {
+ return false;
+ }
+
+ let max = max - 3;
+
+ if max < suffix_width {
+ return false;
+ }
+
+ let max = max - suffix_width;
+
+ truncate_fields(&mut self.fields, max, suffix);
+ truncate_records(&mut self.records, 0, suffix);
+ } else {
+ let max = max - fields_max_width - 3 - suffix_width;
+ truncate_records(&mut self.records, max, suffix);
+ }
+
+ true
+ }
+}
+
+impl From<Vec<Vec<String>>> for ExtendedTable {
+ fn from(mut data: Vec<Vec<String>>) -> Self {
+ if data.is_empty() {
+ return Self {
+ fields: vec![],
+ records: vec![],
+ };
+ }
+
+ let fields = data.remove(0);
+
+ Self {
+ fields,
+ records: data,
+ }
+ }
+}
+
+impl Display for ExtendedTable {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ if self.records.is_empty() {
+ return Ok(());
+ }
+
+ // It's possible that field|header can be a multiline string so
+ // we escape it and trim \" chars.
+ let fields = self.fields.iter().collect::<Vec<_>>();
+
+ let max_field_width = fields
+ .iter()
+ .map(|s| string_width(s))
+ .max()
+ .unwrap_or_default();
+
+ let max_values_length = self
+ .records
+ .iter()
+ .map(|record| record.iter().map(|s| string_width(s)).max())
+ .max()
+ .unwrap_or_default()
+ .unwrap_or_default();
+
+ for (i, records) in self.records.iter().enumerate() {
+ write_header_template(f, i, max_field_width, max_values_length)?;
+
+ for (value, field) in records.iter().zip(fields.iter()) {
+ writeln!(f)?;
+ write_record(f, field, value, max_field_width)?;
+ }
+
+ let is_last_record = i + 1 == self.records.len();
+ if !is_last_record {
+ writeln!(f)?;
+ }
+ }
+
+ Ok(())
+ }
+}
+
+fn truncate_records(records: &mut Vec<Vec<String>>, max_width: usize, suffix: &str) {
+ for fields in records {
+ truncate_fields(fields, max_width, suffix);
+ }
+}
+
+fn truncate_fields(records: &mut Vec<String>, max_width: usize, suffix: &str) {
+ for text in records {
+ truncate(text, max_width, suffix);
+ }
+}
+
+fn write_header_template(
+ f: &mut fmt::Formatter<'_>,
+ index: usize,
+ max_field_width: usize,
+ max_values_length: usize,
+) -> fmt::Result {
+ let mut template = format!("-[ RECORD {index} ]-");
+ let default_template_length = template.len();
+
+ // 3 - is responsible for ' | ' formatting
+ let max_line_width = std::cmp::max(
+ max_field_width + 3 + max_values_length,
+ default_template_length,
+ );
+ let rest_to_print = max_line_width - default_template_length;
+ if rest_to_print > 0 {
+ // + 1 is a space after field name and we get a next pos so its +2
+ if max_field_width + 2 > default_template_length {
+ let part1 = (max_field_width + 1) - default_template_length;
+ let part2 = rest_to_print - part1 - 1;
+
+ template.extend(
+ std::iter::repeat('-')
+ .take(part1)
+ .chain(std::iter::once('+'))
+ .chain(std::iter::repeat('-').take(part2)),
+ );
+ } else {
+ template.extend(std::iter::repeat('-').take(rest_to_print));
+ }
+ }
+
+ write!(f, "{template}")?;
+
+ Ok(())
+}
+
+fn write_record(
+ f: &mut fmt::Formatter<'_>,
+ field: &str,
+ value: &str,
+ max_field_width: usize,
+) -> fmt::Result {
+ write!(f, "{field:max_field_width$} | {value}")
+}
+
+fn truncate(text: &mut String, max: usize, suffix: &str) {
+ let original_len = text.len();
+
+ if max == 0 || text.is_empty() {
+ *text = String::new();
+ } else {
+ *text = cut_str_basic(text, max).into_owned();
+ }
+
+ let cut_was_done = text.len() < original_len;
+ if !suffix.is_empty() && cut_was_done {
+ text.push_str(suffix);
+ }
+}
+
+fn cut_str_basic(s: &str, width: usize) -> Cow<'_, str> {
+ const REPLACEMENT: char = '\u{FFFD}';
+
+ let (length, count_unknowns, _) = split_at_pos(s, width);
+ let buf = &s[..length];
+ if count_unknowns == 0 {
+ return Cow::Borrowed(buf);
+ }
+
+ let mut buf = buf.to_owned();
+ buf.extend(std::iter::repeat(REPLACEMENT).take(count_unknowns));
+
+ Cow::Owned(buf)
+}
+
+fn split_at_pos(s: &str, pos: usize) -> (usize, usize, usize) {
+ let mut length = 0;
+ let mut i = 0;
+ for c in s.chars() {
+ if i == pos {
+ break;
+ };
+
+ let c_width = unicode_width::UnicodeWidthChar::width(c).unwrap_or(0);
+
+ // We cut the chars which takes more then 1 symbol to display,
+ // in order to archive the necessary width.
+ if i + c_width > pos {
+ let count = pos - i;
+ return (length, count, c.len_utf8());
+ }
+
+ i += c_width;
+ length += c.len_utf8();
+ }
+
+ (length, 0, 0)
+}
diff --git a/vendor/tabled/src/tables/iter.rs b/vendor/tabled/src/tables/iter.rs
new file mode 100644
index 000000000..af485ac08
--- /dev/null
+++ b/vendor/tabled/src/tables/iter.rs
@@ -0,0 +1,344 @@
+//! This module contains a [`IterTable`] table.
+//!
+//! In contrast to [`Table`] [`IterTable`] does no allocations but it consumes an iterator.
+//! It's useful when you don't want to re/allocate a buffer for your data.
+//!
+//! # Example
+//!
+//! ```
+//! use tabled::{grid::records::IterRecords, tables::IterTable};
+//!
+//! let iterator = vec![vec!["First", "row"], vec!["Second", "row"]];
+//! let records = IterRecords::new(iterator, 2, Some(2));
+//! let table = IterTable::new(records);
+//!
+//! let s = table.to_string();
+//!
+//! assert_eq!(
+//! s,
+//! "+--------+-----+\n\
+//! | First | row |\n\
+//! +--------+-----+\n\
+//! | Second | row |\n\
+//! +--------+-----+",
+//! );
+//! ```
+//!
+//! [`Table`]: crate::Table
+
+use std::{fmt, io};
+
+use crate::{
+ grid::{
+ colors::NoColors,
+ config::{AlignmentHorizontal, CompactConfig, Indent, Sides, SpannedConfig},
+ dimension::{CompactGridDimension, DimensionValue, StaticDimension},
+ records::{
+ into_records::{
+ truncate_records::ExactValue, BufColumns, BufRows, LimitColumns, LimitRows,
+ TruncateContent,
+ },
+ IntoRecords, IterRecords,
+ },
+ Grid,
+ },
+ settings::{Style, TableOption},
+};
+
+use super::util::utf8_writer::UTF8Writer;
+
+/// A table which consumes an [`IntoRecords`] iterator.
+///
+/// To be able to build table we need a dimensions.
+/// If no width and count_columns is set, [`IterTable`] will sniff the records, by
+/// keeping a number of rows buffered (You can set the number via [`IterTable::sniff`]).
+#[derive(Debug, Clone)]
+pub struct IterTable<I> {
+ records: I,
+ cfg: CompactConfig,
+ table: Settings,
+}
+
+#[derive(Debug, Clone)]
+struct Settings {
+ sniff: usize,
+ count_columns: Option<usize>,
+ count_rows: Option<usize>,
+ width: Option<usize>,
+ height: Option<usize>,
+}
+
+impl<I> IterTable<I> {
+ /// Creates a new [`IterTable`] structure.
+ pub fn new(iter: I) -> Self
+ where
+ I: IntoRecords,
+ {
+ Self {
+ records: iter,
+ cfg: create_config(),
+ table: Settings {
+ sniff: 1000,
+ count_columns: None,
+ count_rows: None,
+ height: None,
+ width: None,
+ },
+ }
+ }
+
+ /// With is a generic function which applies options to the [`IterTable`].
+ pub fn with<O>(mut self, option: O) -> Self
+ where
+ for<'a> O: TableOption<IterRecords<&'a I>, StaticDimension, CompactConfig>,
+ {
+ let count_columns = self.table.count_columns.unwrap_or(0);
+ let mut records = IterRecords::new(&self.records, count_columns, self.table.count_rows);
+ let mut dims = StaticDimension::new(DimensionValue::Exact(0), DimensionValue::Exact(1));
+ option.change(&mut records, &mut self.cfg, &mut dims);
+
+ self
+ }
+
+ /// Limit a number of columns.
+ pub fn columns(mut self, count_columns: usize) -> Self {
+ self.table.count_columns = Some(count_columns);
+ self
+ }
+
+ /// Limit a number of rows.
+ pub fn rows(mut self, count_rows: usize) -> Self {
+ self.table.count_rows = Some(count_rows);
+ self
+ }
+
+ /// Limit an amount of rows will be read for dimension estimations.
+ pub fn sniff(mut self, count: usize) -> Self {
+ self.table.sniff = count;
+ self
+ }
+
+ /// Set a height for each row.
+ pub fn height(mut self, size: usize) -> Self {
+ self.table.height = Some(size);
+ self
+ }
+
+ /// Set a width for each column.
+ pub fn width(mut self, size: usize) -> Self {
+ self.table.width = Some(size);
+ self
+ }
+
+ /// Build a string.
+ ///
+ /// We can't implement [`std::string::ToString`] cause it does takes `&self` reference.
+ #[allow(clippy::inherent_to_string)]
+ pub fn to_string(self) -> String
+ where
+ I: IntoRecords,
+ {
+ let mut buf = String::new();
+ self.fmt(&mut buf).expect("safe");
+
+ buf
+ }
+
+ /// Format table into [`io::Write`]r.
+ pub fn build<W>(self, writer: W) -> io::Result<()>
+ where
+ I: IntoRecords,
+ W: io::Write,
+ {
+ let writer = UTF8Writer::new(writer);
+ self.fmt(writer)
+ .map_err(|err| io::Error::new(io::ErrorKind::Other, err))
+ }
+
+ /// Format table into [fmt::Write]er.
+ pub fn fmt<W>(self, writer: W) -> fmt::Result
+ where
+ I: IntoRecords,
+ W: fmt::Write,
+ {
+ build_grid(writer, self.records, self.cfg, self.table)
+ }
+}
+
+fn build_grid<W: fmt::Write, I: IntoRecords>(
+ f: W,
+ iter: I,
+ cfg: CompactConfig,
+ opts: Settings,
+) -> fmt::Result {
+ let dont_sniff = opts.width.is_some() && opts.count_columns.is_some();
+ if dont_sniff {
+ build_table_with_static_dims(f, iter, cfg, opts)
+ } else if opts.width.is_none() {
+ build_table_sniffing_with_unknown_width(f, iter, cfg, opts)
+ } else {
+ build_table_sniffing_with_known_width(f, iter, cfg, opts)
+ }
+}
+
+fn build_table_with_static_dims<W, I>(
+ f: W,
+ iter: I,
+ cfg: CompactConfig,
+ opts: Settings,
+) -> fmt::Result
+where
+ W: fmt::Write,
+ I: IntoRecords,
+{
+ let count_columns = opts.count_columns.unwrap();
+ let width = opts.width.unwrap();
+ let height = opts.height.unwrap_or(1);
+ let contentw = ExactValue::Exact(width);
+ let pad = cfg.get_padding();
+ let w = DimensionValue::Exact(width + pad.left.size + pad.right.size);
+ let h = DimensionValue::Exact(height + pad.top.size + pad.bottom.size);
+ let dims = StaticDimension::new(w, h);
+ let cfg = SpannedConfig::from(cfg);
+
+ match opts.count_rows {
+ Some(limit) => {
+ let records = LimitRows::new(iter, limit);
+ let records = build_records(records, contentw, count_columns, Some(limit));
+ Grid::new(records, dims, cfg, NoColors).build(f)
+ }
+ None => {
+ let records = build_records(iter, contentw, count_columns, None);
+ Grid::new(records, dims, cfg, NoColors).build(f)
+ }
+ }
+}
+
+fn build_table_sniffing_with_unknown_width<W, I>(
+ f: W,
+ iter: I,
+ cfg: CompactConfig,
+ opts: Settings,
+) -> fmt::Result
+where
+ W: fmt::Write,
+ I: IntoRecords,
+{
+ let records = BufRows::new(iter, opts.sniff);
+ let records = BufColumns::from(records);
+
+ let count_columns = get_count_columns(&opts, records.as_slice());
+
+ let (mut width, height) = {
+ let records = LimitColumns::new(records.as_slice(), count_columns);
+ let records = IterRecords::new(records, count_columns, None);
+ CompactGridDimension::dimension(records, &cfg)
+ };
+
+ let padding = cfg.get_padding();
+ let pad = padding.left.size + padding.right.size;
+ let padv = padding.top.size + padding.bottom.size;
+
+ if opts.sniff == 0 {
+ width = std::iter::repeat(pad)
+ .take(count_columns)
+ .collect::<Vec<_>>();
+ }
+
+ let content_width = ExactValue::List(width.iter().map(|i| i.saturating_sub(pad)).collect());
+ let dims_width = DimensionValue::List(width);
+
+ let height_exact = opts.height.unwrap_or(1) + padv;
+ let mut dims_height = DimensionValue::Partial(height, height_exact);
+
+ if opts.height.is_some() {
+ dims_height = DimensionValue::Exact(height_exact);
+ }
+
+ let dims = StaticDimension::new(dims_width, dims_height);
+ let cfg = SpannedConfig::from(cfg);
+
+ match opts.count_rows {
+ Some(limit) => {
+ let records = LimitRows::new(records, limit);
+ let records = build_records(records, content_width, count_columns, Some(limit));
+ Grid::new(records, dims, cfg, NoColors).build(f)
+ }
+ None => {
+ let records = build_records(records, content_width, count_columns, None);
+ Grid::new(records, dims, cfg, NoColors).build(f)
+ }
+ }
+}
+
+fn build_table_sniffing_with_known_width<W, I>(
+ f: W,
+ iter: I,
+ cfg: CompactConfig,
+ opts: Settings,
+) -> fmt::Result
+where
+ W: fmt::Write,
+ I: IntoRecords,
+{
+ let records = BufRows::new(iter, opts.sniff);
+ let records = BufColumns::from(records);
+
+ let count_columns = get_count_columns(&opts, records.as_slice());
+
+ let width = opts.width.unwrap();
+ let contentw = ExactValue::Exact(width);
+
+ let padding = cfg.get_padding();
+ let pad = padding.left.size + padding.right.size;
+ let padv = padding.top.size + padding.bottom.size;
+
+ let height = opts.height.unwrap_or(1) + padv;
+ let dimsh = DimensionValue::Exact(height);
+ let dimsw = DimensionValue::Exact(width + pad);
+ let dims = StaticDimension::new(dimsw, dimsh);
+
+ let cfg = SpannedConfig::from(cfg);
+
+ match opts.count_rows {
+ Some(limit) => {
+ let records = LimitRows::new(records, limit);
+ let records = build_records(records, contentw, count_columns, Some(limit));
+ Grid::new(records, dims, cfg, NoColors).build(f)
+ }
+ None => {
+ let records = build_records(records, contentw, count_columns, None);
+ Grid::new(records, dims, cfg, NoColors).build(f)
+ }
+ }
+}
+
+fn get_count_columns(opts: &Settings, buf: &[Vec<String>]) -> usize {
+ match opts.count_columns {
+ Some(size) => size,
+ None => buf.iter().map(|row| row.len()).max().unwrap_or(0),
+ }
+}
+
+fn create_config() -> CompactConfig {
+ CompactConfig::default()
+ .set_padding(Sides::new(
+ Indent::spaced(1),
+ Indent::spaced(1),
+ Indent::default(),
+ Indent::default(),
+ ))
+ .set_alignment_horizontal(AlignmentHorizontal::Left)
+ .set_borders(*Style::ascii().get_borders())
+}
+
+fn build_records<I: IntoRecords>(
+ records: I,
+ width: ExactValue<'_>,
+ count_columns: usize,
+ count_rows: Option<usize>,
+) -> IterRecords<LimitColumns<TruncateContent<'_, I>>> {
+ let records = TruncateContent::new(records, width);
+ let records = LimitColumns::new(records, count_columns);
+ IterRecords::new(records, count_columns, count_rows)
+}
diff --git a/vendor/tabled/src/tables/mod.rs b/vendor/tabled/src/tables/mod.rs
new file mode 100644
index 000000000..e0c4bf794
--- /dev/null
+++ b/vendor/tabled/src/tables/mod.rs
@@ -0,0 +1,48 @@
+//! Module contains a list of table representatives.
+//!
+//! ## [`Table`]
+//!
+//! A default table implementation.
+//!
+//! ## [`IterTable`]
+//!
+//! Just like [`Table`] but it's API is a bit different to serve better in context
+//! where there is a memory limit.
+//!
+//! ## [`ExtendedTable`]
+//!
+//! It's a table which is useful for large amount of data.
+//!
+//! ## [`PoolTable`]
+//!
+//! A table with a greather controll of a layout.
+
+mod compact;
+mod util;
+
+#[cfg(feature = "std")]
+mod extended;
+#[cfg(feature = "std")]
+mod iter;
+#[cfg(feature = "std")]
+mod table;
+#[cfg(feature = "std")]
+mod table_pool;
+
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub use table::Table;
+
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub use iter::IterTable;
+
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub use extended::ExtendedTable;
+
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub use table_pool::{PoolTable, TableValue};
+
+pub use compact::CompactTable;
diff --git a/vendor/tabled/src/tables/table.rs b/vendor/tabled/src/tables/table.rs
new file mode 100644
index 000000000..d6ff37661
--- /dev/null
+++ b/vendor/tabled/src/tables/table.rs
@@ -0,0 +1,464 @@
+//! This module contains a main table representation [`Table`].
+
+use core::ops::DerefMut;
+use std::{borrow::Cow, fmt, iter::FromIterator};
+
+use crate::{
+ builder::Builder,
+ grid::{
+ colors::NoColors,
+ config::{
+ AlignmentHorizontal, ColorMap, ColoredConfig, CompactConfig, Entity, Formatting,
+ Indent, Sides, SpannedConfig,
+ },
+ dimension::{CompleteDimensionVecRecords, Dimension, Estimate, PeekableDimension},
+ records::{
+ vec_records::{CellInfo, VecRecords},
+ ExactRecords, Records,
+ },
+ PeekableGrid,
+ },
+ settings::{Style, TableOption},
+ Tabled,
+};
+
+/// The structure provides an interface for building a table for types that implements [`Tabled`].
+///
+/// To build a string representation of a table you must use a [`std::fmt::Display`].
+/// Or simply call `.to_string()` method.
+///
+/// The default table [`Style`] is [`Style::ascii`],
+/// with a 1 left and right [`Padding`].
+///
+/// ## Example
+///
+/// ### Basic usage
+///
+/// ```rust,no_run
+/// use tabled::Table;
+///
+/// let table = Table::new(&["Year", "2021"]);
+/// ```
+///
+/// ### With settings
+///
+/// ```rust,no_run
+/// use tabled::{Table, settings::{Style, Alignment}};
+///
+/// let data = vec!["Hello", "2021"];
+/// let mut table = Table::new(&data);
+/// table.with(Style::psql()).with(Alignment::left());
+///
+/// println!("{}", table);
+/// ```
+///
+/// [`Padding`]: crate::settings::Padding
+/// [`Style`]: crate::settings::Style
+/// [`Style::ascii`]: crate::settings::Style::ascii
+#[derive(Debug, Clone, PartialEq, Eq)]
+pub struct Table {
+ records: VecRecords<CellInfo<String>>,
+ config: ColoredConfig,
+ dimension: CompleteDimensionVecRecords<'static>,
+}
+
+impl Table {
+ /// New creates a Table instance.
+ ///
+ /// If you use a reference iterator you'd better use [`FromIterator`] instead.
+ /// As it has a different lifetime constraints and make less copies therefore.
+ pub fn new<I, T>(iter: I) -> Self
+ where
+ I: IntoIterator<Item = T>,
+ T: Tabled,
+ {
+ let mut header = Vec::with_capacity(T::LENGTH);
+ for text in T::headers() {
+ let text = text.into_owned();
+ let cell = CellInfo::new(text);
+ header.push(cell);
+ }
+
+ let mut records = vec![header];
+ for row in iter.into_iter() {
+ let mut list = Vec::with_capacity(T::LENGTH);
+ for text in row.fields().into_iter() {
+ let text = text.into_owned();
+ let cell = CellInfo::new(text);
+
+ list.push(cell);
+ }
+
+ records.push(list);
+ }
+
+ let records = VecRecords::new(records);
+
+ Self {
+ records,
+ config: ColoredConfig::new(configure_grid()),
+ dimension: CompleteDimensionVecRecords::default(),
+ }
+ }
+
+ /// Creates a builder from a data set given.
+ ///
+ /// # Example
+ ///
+ ///
+ #[cfg_attr(feature = "derive", doc = "```")]
+ #[cfg_attr(not(feature = "derive"), doc = "```ignore")]
+ /// use tabled::{
+ /// Table, Tabled,
+ /// settings::{object::Segment, Modify, Alignment}
+ /// };
+ ///
+ /// #[derive(Tabled)]
+ /// struct User {
+ /// name: &'static str,
+ /// #[tabled(inline("device::"))]
+ /// device: Device,
+ /// }
+ ///
+ /// #[derive(Tabled)]
+ /// enum Device {
+ /// PC,
+ /// Mobile
+ /// }
+ ///
+ /// let data = vec![
+ /// User { name: "Vlad", device: Device::Mobile },
+ /// User { name: "Dimitry", device: Device::PC },
+ /// User { name: "John", device: Device::PC },
+ /// ];
+ ///
+ /// let mut table = Table::builder(data)
+ /// .index()
+ /// .column(0)
+ /// .transpose()
+ /// .build()
+ /// .with(Modify::new(Segment::new(1.., 1..)).with(Alignment::center()))
+ /// .to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// "+----------------+------+---------+------+\n\
+ /// | name | Vlad | Dimitry | John |\n\
+ /// +----------------+------+---------+------+\n\
+ /// | device::PC | | + | + |\n\
+ /// +----------------+------+---------+------+\n\
+ /// | device::Mobile | + | | |\n\
+ /// +----------------+------+---------+------+"
+ /// )
+ /// ```
+ pub fn builder<I, T>(iter: I) -> Builder
+ where
+ T: Tabled,
+ I: IntoIterator<Item = T>,
+ {
+ let mut records = Vec::new();
+ for row in iter {
+ let mut list = Vec::with_capacity(T::LENGTH);
+ for text in row.fields().into_iter() {
+ list.push(text.into_owned());
+ }
+
+ records.push(list);
+ }
+
+ let mut b = Builder::from(records);
+ let _ = b.set_header(T::headers()).hint_column_size(T::LENGTH);
+
+ b
+ }
+
+ /// With is a generic function which applies options to the [`Table`].
+ ///
+ /// It applies settings immediately.
+ pub fn with<O>(&mut self, option: O) -> &mut Self
+ where
+ O: TableOption<
+ VecRecords<CellInfo<String>>,
+ CompleteDimensionVecRecords<'static>,
+ ColoredConfig,
+ >,
+ {
+ self.dimension.clear_width();
+ self.dimension.clear_height();
+
+ option.change(&mut self.records, &mut self.config, &mut self.dimension);
+
+ self
+ }
+
+ /// Returns a table shape (count rows, count columns).
+ pub fn shape(&self) -> (usize, usize) {
+ (self.count_rows(), self.count_columns())
+ }
+
+ /// Returns an amount of rows in the table.
+ pub fn count_rows(&self) -> usize {
+ self.records.count_rows()
+ }
+
+ /// Returns an amount of columns in the table.
+ pub fn count_columns(&self) -> usize {
+ self.records.count_columns()
+ }
+
+ /// Returns a table shape (count rows, count columns).
+ pub fn is_empty(&self) -> bool {
+ let (count_rows, count_cols) = self.shape();
+ count_rows == 0 || count_cols == 0
+ }
+
+ /// Returns total widths of a table, including margin and horizontal lines.
+ pub fn total_height(&self) -> usize {
+ let mut dims = CompleteDimensionVecRecords::from_origin(&self.dimension);
+ dims.estimate(&self.records, self.config.as_ref());
+
+ let total = (0..self.count_rows())
+ .map(|row| dims.get_height(row))
+ .sum::<usize>();
+ let counth = self.config.count_horizontal(self.count_rows());
+
+ let margin = self.config.get_margin();
+
+ total + counth + margin.top.size + margin.bottom.size
+ }
+
+ /// Returns total widths of a table, including margin and vertical lines.
+ pub fn total_width(&self) -> usize {
+ let mut dims = CompleteDimensionVecRecords::from_origin(&self.dimension);
+ dims.estimate(&self.records, self.config.as_ref());
+
+ let total = (0..self.count_columns())
+ .map(|col| dims.get_width(col))
+ .sum::<usize>();
+ let countv = self.config.count_vertical(self.count_columns());
+
+ let margin = self.config.get_margin();
+
+ total + countv + margin.left.size + margin.right.size
+ }
+
+ /// Returns a table config.
+ pub fn get_config(&self) -> &ColoredConfig {
+ &self.config
+ }
+
+ /// Returns a table config.
+ pub fn get_config_mut(&mut self) -> &mut ColoredConfig {
+ &mut self.config
+ }
+
+ /// Returns a used records.
+ pub fn get_records(&self) -> &VecRecords<CellInfo<String>> {
+ &self.records
+ }
+
+ /// Returns a used records.
+ pub fn get_records_mut(&mut self) -> &mut VecRecords<CellInfo<String>> {
+ &mut self.records
+ }
+}
+
+impl Default for Table {
+ fn default() -> Self {
+ Self {
+ records: VecRecords::default(),
+ config: ColoredConfig::new(configure_grid()),
+ dimension: CompleteDimensionVecRecords::default(),
+ }
+ }
+}
+
+impl fmt::Display for Table {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ if self.is_empty() {
+ return Ok(());
+ }
+
+ let config = use_format_configuration(f, self);
+ let colors = self.config.get_colors();
+
+ if !self.dimension.is_empty() {
+ let mut dims = self.dimension.clone();
+ dims.estimate(&self.records, config.as_ref());
+
+ print_grid(f, &self.records, &config, &dims, colors)
+ } else {
+ let mut dims = PeekableDimension::default();
+ dims.estimate(&self.records, &config);
+
+ print_grid(f, &self.records, &config, &dims, colors)
+ }
+ }
+}
+
+impl<T, V> FromIterator<T> for Table
+where
+ T: IntoIterator<Item = V>,
+ V: Into<String>,
+{
+ fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self {
+ Builder::from_iter(iter.into_iter().map(|i| i.into_iter().map(|s| s.into()))).build()
+ }
+}
+
+impl From<Builder> for Table {
+ fn from(builder: Builder) -> Self {
+ let data: Vec<Vec<CellInfo<String>>> = builder.into();
+ let records = VecRecords::new(data);
+
+ Self {
+ records,
+ config: ColoredConfig::new(configure_grid()),
+ dimension: CompleteDimensionVecRecords::default(),
+ }
+ }
+}
+
+impl From<Table> for Builder {
+ fn from(val: Table) -> Self {
+ let count_columns = val.count_columns();
+ let data: Vec<Vec<CellInfo<String>>> = val.records.into();
+ let mut builder = Builder::from(data);
+ let _ = builder.hint_column_size(count_columns);
+ builder
+ }
+}
+
+impl<R, D> TableOption<R, D, ColoredConfig> for CompactConfig {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ *cfg.deref_mut() = self.into();
+ }
+}
+
+impl<R, D> TableOption<R, D, ColoredConfig> for ColoredConfig {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ *cfg = self;
+ }
+}
+
+impl<R, D> TableOption<R, D, ColoredConfig> for SpannedConfig {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ *cfg.deref_mut() = self;
+ }
+}
+
+impl<R, D> TableOption<R, D, ColoredConfig> for &SpannedConfig {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ *cfg.deref_mut() = self.clone();
+ }
+}
+
+fn convert_fmt_alignment(alignment: fmt::Alignment) -> AlignmentHorizontal {
+ match alignment {
+ fmt::Alignment::Left => AlignmentHorizontal::Left,
+ fmt::Alignment::Right => AlignmentHorizontal::Right,
+ fmt::Alignment::Center => AlignmentHorizontal::Center,
+ }
+}
+
+fn table_padding(alignment: fmt::Alignment, available: usize) -> (usize, usize) {
+ match alignment {
+ fmt::Alignment::Left => (available, 0),
+ fmt::Alignment::Right => (0, available),
+ fmt::Alignment::Center => {
+ let left = available / 2;
+ let right = available - left;
+ (left, right)
+ }
+ }
+}
+
+fn configure_grid() -> SpannedConfig {
+ let mut cfg = SpannedConfig::default();
+ cfg.set_padding(
+ Entity::Global,
+ Sides::new(
+ Indent::spaced(1),
+ Indent::spaced(1),
+ Indent::default(),
+ Indent::default(),
+ ),
+ );
+ cfg.set_alignment_horizontal(Entity::Global, AlignmentHorizontal::Left);
+ cfg.set_formatting(Entity::Global, Formatting::new(false, false, false));
+ cfg.set_borders(*Style::ascii().get_borders());
+
+ cfg
+}
+
+fn use_format_configuration<'a>(
+ f: &mut fmt::Formatter<'_>,
+ table: &'a Table,
+) -> Cow<'a, SpannedConfig> {
+ if f.align().is_some() || f.width().is_some() {
+ let mut cfg = table.config.as_ref().clone();
+
+ set_align_table(f, &mut cfg);
+ set_width_table(f, &mut cfg, table);
+
+ Cow::Owned(cfg)
+ } else {
+ Cow::Borrowed(table.config.as_ref())
+ }
+}
+
+fn set_align_table(f: &fmt::Formatter<'_>, cfg: &mut SpannedConfig) {
+ if let Some(alignment) = f.align() {
+ let alignment = convert_fmt_alignment(alignment);
+ cfg.set_alignment_horizontal(Entity::Global, alignment);
+ }
+}
+
+fn set_width_table(f: &fmt::Formatter<'_>, cfg: &mut SpannedConfig, table: &Table) {
+ if let Some(width) = f.width() {
+ let total_width = table.total_width();
+ if total_width >= width {
+ return;
+ }
+
+ let mut fill = f.fill();
+ if fill == char::default() {
+ fill = ' ';
+ }
+
+ let available = width - total_width;
+ let alignment = f.align().unwrap_or(fmt::Alignment::Left);
+ let (left, right) = table_padding(alignment, available);
+
+ let mut margin = cfg.get_margin();
+ margin.left.size += left;
+ margin.right.size += right;
+
+ if (margin.left.size > 0 && margin.left.fill == char::default()) || fill != char::default()
+ {
+ margin.left.fill = fill;
+ }
+
+ if (margin.right.size > 0 && margin.right.fill == char::default())
+ || fill != char::default()
+ {
+ margin.right.fill = fill;
+ }
+
+ cfg.set_margin(margin);
+ }
+}
+
+fn print_grid<F: fmt::Write, D: Dimension>(
+ f: &mut F,
+ records: &VecRecords<CellInfo<String>>,
+ cfg: &SpannedConfig,
+ dims: D,
+ colors: &ColorMap,
+) -> fmt::Result {
+ if !colors.is_empty() {
+ PeekableGrid::new(records, cfg, &dims, colors).build(f)
+ } else {
+ PeekableGrid::new(records, cfg, &dims, NoColors).build(f)
+ }
+}
diff --git a/vendor/tabled/src/tables/table_pool.rs b/vendor/tabled/src/tables/table_pool.rs
new file mode 100644
index 000000000..07d2a5437
--- /dev/null
+++ b/vendor/tabled/src/tables/table_pool.rs
@@ -0,0 +1,1607 @@
+use core::fmt::{self, Display, Formatter};
+
+use crate::{
+ grid::{
+ config::{AlignmentHorizontal, CompactMultilineConfig, Indent, Sides},
+ dimension::{DimensionPriority, PoolTableDimension},
+ records::EmptyRecords,
+ records::IntoRecords,
+ },
+ settings::{Style, TableOption},
+};
+
+/// [`PoolTable`] is a table which allows a greater set of possibilities for cell alignment.
+/// It's data is not aligned in any way by default.
+///
+/// It works similar to the main [`Table`] by default.
+///
+///
+/// ```
+/// use tabled::tables::PoolTable;
+///
+/// let data = vec![
+/// vec!["Hello", "World", "!"],
+/// vec!["Salve", "mondo", "!"],
+/// vec!["Hola", "mundo", "!"],
+/// ];
+///
+/// let table = PoolTable::new(data).to_string();
+///
+/// assert_eq!(
+/// table,
+/// "+-------+-------+---+\n\
+/// | Hello | World | ! |\n\
+/// +-------+-------+---+\n\
+/// | Salve | mondo | ! |\n\
+/// +-------+-------+---+\n\
+/// | Hola | mundo | ! |\n\
+/// +-------+-------+---+"
+/// )
+/// ```
+///
+/// But it allows you to have a different number of columns inside the rows.
+///
+/// ```
+/// use tabled::tables::PoolTable;
+///
+/// let data = vec![
+/// vec!["Hello", "World", "!"],
+/// vec!["Salve, mondo!"],
+/// vec!["Hola", "mundo", "", "", "!"],
+/// ];
+///
+/// let table = PoolTable::new(data).to_string();
+///
+/// assert_eq!(
+/// table,
+/// "+---------+---------+----+\n\
+/// | Hello | World | ! |\n\
+/// +---------+---------+----+\n\
+/// | Salve, mondo! |\n\
+/// +------+-------+--+--+---+\n\
+/// | Hola | mundo | | | ! |\n\
+/// +------+-------+--+--+---+"
+/// )
+/// ```
+///
+/// Notice that you also can build a custom table layout by using [`TableValue`].
+///
+/// ```
+/// use tabled::tables::{PoolTable, TableValue};
+///
+/// let message = "Hello\nWorld";
+///
+/// let data = TableValue::Column(vec![
+/// TableValue::Row(vec![
+/// TableValue::Column(vec![
+/// TableValue::Cell(String::from(message)),
+/// ]),
+/// TableValue::Column(vec![
+/// TableValue::Cell(String::from(message)),
+/// TableValue::Row(vec![
+/// TableValue::Cell(String::from(message)),
+/// TableValue::Cell(String::from(message)),
+/// TableValue::Cell(String::from(message)),
+/// ])
+/// ]),
+/// ]),
+/// TableValue::Cell(String::from(message)),
+/// ]);
+///
+/// let table = PoolTable::from(data).to_string();
+///
+/// assert_eq!(
+/// table,
+/// "+-------+-----------------------+\n\
+/// | Hello | Hello |\n\
+/// | World | World |\n\
+/// | +-------+-------+-------+\n\
+/// | | Hello | Hello | Hello |\n\
+/// | | World | World | World |\n\
+/// +-------+-------+-------+-------+\n\
+/// | Hello |\n\
+/// | World |\n\
+/// +-------------------------------+"
+/// )
+/// ```
+///
+/// [`Table`]: crate::Table
+#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
+pub struct PoolTable {
+ config: CompactMultilineConfig,
+ dims: PoolTableDimension,
+ value: TableValue,
+}
+
+impl PoolTable {
+ /// Creates a [`PoolTable`] out from a record iterator.
+ pub fn new<I: IntoRecords>(iter: I) -> Self {
+ let value = TableValue::Column(
+ iter.iter_rows()
+ .into_iter()
+ .map(|row| {
+ TableValue::Row(
+ row.into_iter()
+ .map(|cell| cell.as_ref().to_string())
+ .map(TableValue::Cell)
+ .collect(),
+ )
+ })
+ .collect(),
+ );
+
+ Self {
+ config: configure_grid(),
+ dims: PoolTableDimension::new(DimensionPriority::List, DimensionPriority::List),
+ value,
+ }
+ }
+
+ /// A is a generic function which applies options to the [`PoolTable`] configuration.
+ ///
+ /// Notice that it has a limited support of options.
+ ///
+ /// ```
+ /// use tabled::tables::PoolTable;
+ /// use tabled::settings::{Style, Padding};
+ ///
+ /// let data = vec![
+ /// vec!["Hello", "World", "!"],
+ /// vec!["Salve", "mondo", "!"],
+ /// vec!["Hola", "mundo", "!"],
+ /// ];
+ ///
+ /// let table = PoolTable::new(data)
+ /// .with(Style::extended())
+ /// .with(Padding::zero())
+ /// .to_string();
+ ///
+ /// assert_eq!(
+ /// table,
+ /// "â•”â•â•â•â•â•â•¦â•â•â•â•â•â•¦â•â•—\n\
+ /// â•‘Helloâ•‘Worldâ•‘!â•‘\n\
+ /// â• â•â•â•â•â•â•¬â•â•â•â•â•â•¬â•â•£\n\
+ /// â•‘Salveâ•‘mondoâ•‘!â•‘\n\
+ /// â• â•â•â•â•â•â•¬â•â•â•â•â•â•¬â•â•£\n\
+ /// â•‘Hola â•‘mundoâ•‘!â•‘\n\
+ /// â•šâ•â•â•â•â•â•©â•â•â•â•â•â•©â•â•"
+ /// )
+ /// ```
+ pub fn with<O>(&mut self, option: O) -> &mut Self
+ where
+ O: TableOption<EmptyRecords, PoolTableDimension, CompactMultilineConfig>,
+ {
+ let mut records = EmptyRecords::default();
+ option.change(&mut records, &mut self.config, &mut self.dims);
+
+ self
+ }
+}
+
+impl From<TableValue> for PoolTable {
+ fn from(value: TableValue) -> Self {
+ Self {
+ config: configure_grid(),
+ dims: PoolTableDimension::new(DimensionPriority::List, DimensionPriority::List),
+ value,
+ }
+ }
+}
+
+impl Display for PoolTable {
+ fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
+ print::build_table(&self.value, &self.config, self.dims).fmt(f)
+ }
+}
+
+/// [`TableValue`] a structure which is responsible for a [`PoolTable`] layout.
+#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
+pub enum TableValue {
+ /// A horizontal row.
+ Row(Vec<TableValue>),
+ /// A vertical column.
+ Column(Vec<TableValue>),
+ /// A single cell.
+ Cell(String),
+}
+
+fn configure_grid() -> CompactMultilineConfig {
+ let pad = Sides::new(
+ Indent::spaced(1),
+ Indent::spaced(1),
+ Indent::default(),
+ Indent::default(),
+ );
+
+ CompactMultilineConfig::default()
+ .set_padding(pad)
+ .set_alignment_horizontal(AlignmentHorizontal::Left)
+ .set_borders(*Style::ascii().get_borders())
+}
+
+impl<R, C> TableOption<R, PoolTableDimension, C> for PoolTableDimension {
+ fn change(self, _: &mut R, _: &mut C, dimension: &mut PoolTableDimension) {
+ *dimension = self;
+ }
+}
+
+impl<R, D> TableOption<R, D, CompactMultilineConfig> for CompactMultilineConfig {
+ fn change(self, _: &mut R, config: &mut CompactMultilineConfig, _: &mut D) {
+ *config = self;
+ }
+}
+
+mod print {
+ use std::{cmp::max, collections::HashMap, iter::repeat};
+
+ use papergrid::{
+ color::StaticColor,
+ config::{Border, Borders},
+ util::string::string_width_multiline,
+ };
+
+ use crate::{
+ builder::Builder,
+ grid::{
+ config::{
+ AlignmentHorizontal, AlignmentVertical, ColoredConfig, CompactMultilineConfig,
+ Indent, Offset, Sides,
+ },
+ dimension::{Dimension, DimensionPriority, Estimate, PoolTableDimension},
+ records::Records,
+ util::string::{count_lines, get_lines, string_dimension, string_width},
+ },
+ settings::{Padding, Style, TableOption},
+ };
+
+ use super::TableValue;
+
+ #[derive(Debug, Default)]
+ struct PrintContext {
+ pos: usize,
+ is_last_col: bool,
+ is_last_row: bool,
+ is_first_col: bool,
+ is_first_row: bool,
+ kv: bool,
+ kv_is_first: bool,
+ list: bool,
+ list_is_first: bool,
+ no_left: bool,
+ no_right: bool,
+ no_bottom: bool,
+ lean_top: bool,
+ top_intersection: bool,
+ top_left: bool,
+ intersections_horizontal: Vec<usize>,
+ intersections_vertical: Vec<usize>,
+ size: Dim,
+ }
+
+ struct CellData {
+ content: String,
+ intersections_horizontal: Vec<usize>,
+ intersections_vertical: Vec<usize>,
+ }
+
+ impl CellData {
+ fn new(content: String, i_horizontal: Vec<usize>, i_vertical: Vec<usize>) -> Self {
+ Self {
+ content,
+ intersections_horizontal: i_horizontal,
+ intersections_vertical: i_vertical,
+ }
+ }
+ }
+
+ pub(super) fn build_table(
+ val: &TableValue,
+ cfg: &CompactMultilineConfig,
+ dims_priority: PoolTableDimension,
+ ) -> String {
+ let dims = collect_table_dimensions(val, cfg);
+ let ctx = PrintContext {
+ is_last_col: true,
+ is_last_row: true,
+ is_first_col: true,
+ is_first_row: true,
+ size: *dims.all.get(&0).unwrap(),
+ ..Default::default()
+ };
+
+ let data = _build_table(val, cfg, &dims, dims_priority, ctx);
+ let mut table = data.content;
+
+ let margin = cfg.get_margin();
+ let has_margin = margin.top.size > 0
+ || margin.bottom.size > 0
+ || margin.left.size > 0
+ || margin.right.size > 0;
+ if has_margin {
+ let color = convert_border_colors(cfg.get_margin_color());
+ table = set_margin(&table, *margin, color);
+ }
+
+ table
+ }
+
+ fn _build_table(
+ val: &TableValue,
+ cfg: &CompactMultilineConfig,
+ dims: &Dimensions,
+ priority: PoolTableDimension,
+ ctx: PrintContext,
+ ) -> CellData {
+ match val {
+ TableValue::Cell(text) => generate_value_cell(text, cfg, ctx),
+ TableValue::Row(list) => {
+ if list.is_empty() {
+ return generate_value_cell("", cfg, ctx);
+ }
+
+ generate_table_row(list, cfg, dims, priority, ctx)
+ }
+ TableValue::Column(list) => {
+ if list.is_empty() {
+ return generate_value_cell("", cfg, ctx);
+ }
+
+ generate_table_column(list, cfg, dims, priority, ctx)
+ }
+ }
+ }
+
+ fn generate_table_column(
+ list: &Vec<TableValue>,
+ cfg: &CompactMultilineConfig,
+ dims: &Dimensions,
+ priority: PoolTableDimension,
+ ctx: PrintContext,
+ ) -> CellData {
+ let array_dims = dims.arrays.get(&ctx.pos).unwrap();
+
+ let height = dims.all.get(&ctx.pos).unwrap().height;
+ let additional_height = ctx.size.height - height;
+ let (chunk_height, mut rest_height) = split_value(additional_height, list.len());
+
+ let mut intersections_horizontal = ctx.intersections_horizontal;
+ let mut intersections_vertical = ctx.intersections_vertical;
+ let mut next_vsplit = false;
+ let mut next_intersections_vertical = vec![];
+
+ let mut builder = Builder::new();
+ for (i, val) in list.iter().enumerate() {
+ let val_pos = *array_dims.index.get(&i).unwrap();
+
+ let mut height = dims.all.get(&val_pos).unwrap().height;
+ match priority.height() {
+ DimensionPriority::First => {
+ if i == 0 {
+ height += additional_height;
+ }
+ }
+ DimensionPriority::Last => {
+ if i + 1 == list.len() {
+ height += additional_height;
+ }
+ }
+ DimensionPriority::List => {
+ height += chunk_height;
+
+ if rest_height > 0 {
+ height += 1;
+ rest_height -= 1; // must be safe
+ }
+ }
+ }
+
+ let size = Dim::new(ctx.size.width, height);
+
+ let (split, intersections_vertical) =
+ short_splits3(&mut intersections_vertical, size.height);
+ let old_split = next_vsplit;
+ next_vsplit = split;
+
+ let is_prev_list_not_first = ctx.list && !ctx.list_is_first;
+ let valctx = PrintContext {
+ pos: val_pos,
+ is_last_col: ctx.is_last_col,
+ is_last_row: ctx.is_last_row && i + 1 == list.len(),
+ is_first_col: ctx.is_first_col,
+ is_first_row: ctx.is_first_row && i == 0,
+ kv: ctx.kv,
+ kv_is_first: ctx.kv_is_first,
+ list: true,
+ list_is_first: i == 0 && !is_prev_list_not_first,
+ no_left: ctx.no_left,
+ no_right: ctx.no_right,
+ no_bottom: ctx.no_bottom && i + 1 == list.len(),
+ lean_top: ctx.lean_top && i == 0,
+ top_intersection: (ctx.top_intersection && i == 0) || old_split,
+ top_left: ctx.top_left || i > 0,
+ intersections_horizontal,
+ intersections_vertical,
+ size,
+ };
+
+ let data = _build_table(val, cfg, dims, priority, valctx);
+ intersections_horizontal = data.intersections_horizontal;
+ next_intersections_vertical.extend(data.intersections_vertical);
+
+ let _ = builder.push_record([data.content]);
+ }
+
+ let table = builder
+ .build()
+ .with(Style::empty())
+ .with(Padding::zero())
+ .to_string();
+
+ CellData::new(table, intersections_horizontal, next_intersections_vertical)
+ }
+
+ fn generate_table_row(
+ list: &Vec<TableValue>,
+ cfg: &CompactMultilineConfig,
+ dims: &Dimensions,
+ priority: PoolTableDimension,
+ ctx: PrintContext,
+ ) -> CellData {
+ let array_dims = dims.arrays.get(&ctx.pos).unwrap();
+
+ let list_width = dims.all.get(&ctx.pos).unwrap().width;
+ let additional_width = ctx.size.width - list_width;
+ let (chunk_width, mut rest_width) = split_value(additional_width, list.len());
+
+ let mut intersections_horizontal = ctx.intersections_horizontal;
+ let mut intersections_vertical = ctx.intersections_vertical;
+ let mut new_intersections_horizontal = vec![];
+ let mut split_next = false;
+
+ let mut buf = Vec::with_capacity(list.len());
+ for (i, val) in list.iter().enumerate() {
+ let val_pos = *array_dims.index.get(&i).unwrap();
+
+ let mut width = dims.all.get(&val_pos).unwrap().width;
+ match priority.width() {
+ DimensionPriority::First => {
+ if i == 0 {
+ width += additional_width;
+ }
+ }
+ DimensionPriority::Last => {
+ if i + 1 == list.len() {
+ width += additional_width;
+ }
+ }
+ DimensionPriority::List => {
+ width += chunk_width;
+
+ if rest_width > 0 {
+ width += 1;
+ rest_width -= 1; // must be safe
+ }
+ }
+ }
+
+ let size = Dim::new(width, ctx.size.height);
+
+ let (split, intersections_horizontal) =
+ short_splits3(&mut intersections_horizontal, width);
+ let old_split = split_next;
+ split_next = split;
+
+ let is_prev_list_not_first = ctx.list && !ctx.list_is_first;
+ let valctx = PrintContext {
+ pos: val_pos,
+ is_first_col: ctx.is_first_col && i == 0,
+ is_last_col: ctx.is_last_col && i + 1 == list.len(),
+ is_last_row: ctx.is_last_row,
+ is_first_row: ctx.is_first_row,
+ kv: false,
+ kv_is_first: false,
+ list: false,
+ list_is_first: !is_prev_list_not_first,
+ no_left: false,
+ no_right: !(ctx.is_last_col && i + 1 == list.len()),
+ no_bottom: false,
+ lean_top: !(ctx.is_first_col && i == 0),
+ top_intersection: (ctx.top_intersection && i == 0) || old_split,
+ top_left: ctx.top_left && i == 0,
+ intersections_horizontal,
+ intersections_vertical,
+ size,
+ };
+
+ let val = _build_table(val, cfg, dims, priority, valctx);
+ intersections_vertical = val.intersections_vertical;
+ new_intersections_horizontal.extend(val.intersections_horizontal.iter());
+ let value = val.content;
+
+ buf.push(value);
+ }
+
+ let mut b = Builder::with_capacity(1);
+ let _ = b.hint_column_size(buf.len()).push_record(buf);
+ let table = b
+ .build()
+ .with(Style::empty())
+ .with(Padding::zero())
+ .to_string();
+
+ CellData::new(table, new_intersections_horizontal, intersections_vertical)
+ }
+
+ fn generate_value_cell(
+ text: &str,
+ cfg: &CompactMultilineConfig,
+ ctx: PrintContext,
+ ) -> CellData {
+ let width = ctx.size.width;
+ let height = ctx.size.height;
+ let table = generate_value_table(text, cfg, ctx);
+ CellData::new(table, vec![width], vec![height])
+ }
+
+ fn generate_value_table(
+ text: &str,
+ cfg: &CompactMultilineConfig,
+ mut ctx: PrintContext,
+ ) -> String {
+ if ctx.size.width == 0 || ctx.size.height == 0 {
+ return String::new();
+ }
+
+ let halignment = cfg.get_alignment_horizontal();
+ let valignment = cfg.get_alignment_vertical();
+ let pad = cfg.get_padding();
+ let pad_color = cfg.get_padding_color();
+ let pad_color = convert_border_colors(pad_color);
+ let lines_alignemnt = cfg.get_formatting().allow_lines_alignment;
+
+ let mut borders = *cfg.get_borders();
+
+ let bottom_intesection = cfg.get_borders().bottom_intersection.unwrap_or(' ');
+ let mut horizontal_splits = short_splits(&mut ctx.intersections_horizontal, ctx.size.width);
+ squash_splits(&mut horizontal_splits);
+
+ let right_intersection = borders.right_intersection.unwrap_or(' ');
+ let mut vertical_splits = short_splits(&mut ctx.intersections_vertical, ctx.size.height);
+ squash_splits(&mut vertical_splits);
+
+ config_borders(&mut borders, &ctx);
+ let border = create_border(borders);
+
+ let borders_colors = *cfg.get_borders_color();
+ let border_color = create_border(borders_colors);
+
+ let mut height = ctx.size.height;
+ height -= pad.top.size + pad.bottom.size;
+
+ let mut width = ctx.size.width;
+ width -= pad.left.size + pad.right.size;
+
+ let count_lines = count_lines(text);
+ let (top, bottom) = indent_vertical(valignment, height, count_lines);
+
+ let mut buf = String::new();
+ print_top_line(
+ &mut buf,
+ border,
+ border_color,
+ &horizontal_splits,
+ bottom_intesection,
+ ctx.size.width,
+ );
+
+ let mut line_index = 0;
+ let mut vertical_splits = &vertical_splits[..];
+
+ for _ in 0..top {
+ let mut border = border;
+ if vertical_splits.first() == Some(&line_index) {
+ border.left = Some(right_intersection);
+ vertical_splits = &vertical_splits[1..];
+ }
+
+ print_line(&mut buf, border, border_color, None, ' ', ctx.size.width);
+ line_index += 1;
+ }
+
+ for _ in 0..pad.top.size {
+ let mut border = border;
+ if vertical_splits.first() == Some(&line_index) {
+ border.left = Some(right_intersection);
+ vertical_splits = &vertical_splits[1..];
+ }
+
+ print_line(
+ &mut buf,
+ border,
+ border_color,
+ pad_color.top,
+ pad.top.fill,
+ ctx.size.width,
+ );
+ line_index += 1;
+ }
+
+ if lines_alignemnt {
+ for line in get_lines(text) {
+ let line_width = string_width(&line);
+ let (left, right) = indent_horizontal(halignment, width, line_width);
+
+ if border.has_left() {
+ let mut c = border.left.unwrap_or(' ');
+ if vertical_splits.first() == Some(&line_index) {
+ c = right_intersection;
+ vertical_splits = &vertical_splits[1..];
+ }
+
+ print_char(&mut buf, c, border_color.left);
+ }
+
+ print_chars(&mut buf, pad.left.fill, pad_color.left, pad.left.size);
+ buf.extend(repeat(' ').take(left));
+ buf.push_str(&line);
+ buf.extend(repeat(' ').take(right));
+ print_chars(&mut buf, pad.right.fill, pad_color.right, pad.right.size);
+
+ if border.has_right() {
+ print_char(&mut buf, border.right.unwrap_or(' '), border_color.right);
+ }
+
+ buf.push('\n');
+
+ line_index += 1;
+ }
+ } else {
+ let text_width = string_width_multiline(text);
+ let (left, _) = indent_horizontal(halignment, width, text_width);
+
+ for line in get_lines(text) {
+ let line_width = string_width(&line);
+ let right = width - line_width - left;
+
+ if border.has_left() {
+ let mut c = border.left.unwrap_or(' ');
+ if vertical_splits.first() == Some(&line_index) {
+ c = right_intersection;
+ vertical_splits = &vertical_splits[1..];
+ }
+
+ print_char(&mut buf, c, border_color.left);
+ }
+
+ print_chars(&mut buf, pad.left.fill, pad_color.left, pad.left.size);
+ buf.extend(repeat(' ').take(left));
+ buf.push_str(&line);
+ buf.extend(repeat(' ').take(right));
+ print_chars(&mut buf, pad.right.fill, pad_color.right, pad.right.size);
+
+ if border.has_right() {
+ print_char(&mut buf, border.right.unwrap_or(' '), border_color.right);
+ }
+
+ buf.push('\n');
+
+ line_index += 1;
+ }
+ }
+
+ for _ in 0..pad.bottom.size {
+ let mut border = border;
+ if vertical_splits.first() == Some(&line_index) {
+ border.left = Some(right_intersection);
+ vertical_splits = &vertical_splits[1..];
+ }
+
+ print_line(
+ &mut buf,
+ border,
+ border_color,
+ pad_color.bottom,
+ pad.bottom.fill,
+ ctx.size.width,
+ );
+
+ line_index += 1;
+ }
+
+ for _ in 0..bottom {
+ let mut border = border;
+ if vertical_splits.first() == Some(&line_index) {
+ border.left = Some(right_intersection);
+ vertical_splits = &vertical_splits[1..];
+ }
+
+ print_line(&mut buf, border, border_color, None, ' ', ctx.size.width);
+ line_index += 1;
+ }
+
+ print_bottom_line(&mut buf, border, border_color, ctx.size.width);
+
+ let _ = buf.remove(buf.len() - 1);
+
+ buf
+ }
+
+ fn print_chars(buf: &mut String, c: char, color: Option<StaticColor>, width: usize) {
+ match color {
+ Some(color) => {
+ buf.push_str(color.get_prefix());
+ buf.extend(repeat(c).take(width));
+ buf.push_str(color.get_suffix());
+ }
+ None => buf.extend(repeat(c).take(width)),
+ }
+ }
+
+ fn print_char(buf: &mut String, c: char, color: Option<StaticColor>) {
+ match color {
+ Some(color) => {
+ buf.push_str(color.get_prefix());
+ buf.push(c);
+ buf.push_str(color.get_suffix());
+ }
+ None => buf.push(c),
+ }
+ }
+
+ fn print_line(
+ buf: &mut String,
+ border: Border<char>,
+ border_color: Border<StaticColor>,
+ color: Option<StaticColor>,
+ c: char,
+ width: usize,
+ ) {
+ if border.has_left() {
+ let c = border.left.unwrap_or(' ');
+ print_char(buf, c, border_color.left);
+ }
+
+ print_chars(buf, c, color, width);
+
+ if border.has_right() {
+ let c = border.right.unwrap_or(' ');
+ print_char(buf, c, border_color.right);
+ }
+
+ buf.push('\n');
+ }
+
+ fn print_top_line(
+ buf: &mut String,
+ border: Border<char>,
+ color: Border<StaticColor>,
+ splits: &[usize],
+ split_char: char,
+ width: usize,
+ ) {
+ if !border.has_top() {
+ return;
+ }
+
+ let mut used_color: Option<StaticColor> = None;
+
+ if border.has_left() {
+ if let Some(color) = color.left_top_corner {
+ used_color = Some(color);
+ buf.push_str(color.get_prefix());
+ }
+
+ let c = border.left_top_corner.unwrap_or(' ');
+ buf.push(c);
+ }
+
+ if let Some(color) = color.top {
+ match used_color {
+ Some(used) => {
+ if used != color {
+ buf.push_str(used.get_suffix());
+ buf.push_str(color.get_prefix());
+ }
+ }
+ None => {
+ buf.push_str(color.get_prefix());
+ used_color = Some(color);
+ }
+ }
+ }
+
+ let c = border.top.unwrap_or(' ');
+ if splits.is_empty() {
+ buf.extend(repeat(c).take(width));
+ } else {
+ let mut splits = splits;
+ for i in 0..width {
+ if splits.first() == Some(&i) {
+ buf.push(split_char);
+ splits = &splits[1..];
+ } else {
+ buf.push(c);
+ }
+ }
+ }
+
+ if border.has_right() {
+ if let Some(color) = color.right_top_corner {
+ match used_color {
+ Some(used) => {
+ if used != color {
+ buf.push_str(used.get_suffix());
+ buf.push_str(color.get_prefix());
+ }
+ }
+ None => {
+ buf.push_str(color.get_prefix());
+ used_color = Some(color);
+ }
+ }
+ }
+
+ let c = border.right_top_corner.unwrap_or(' ');
+ buf.push(c);
+ }
+
+ if let Some(used) = used_color {
+ buf.push_str(used.get_suffix());
+ }
+
+ buf.push('\n');
+ }
+
+ fn print_bottom_line(
+ buf: &mut String,
+ border: Border<char>,
+ color: Border<StaticColor>,
+ width: usize,
+ ) {
+ if !border.has_bottom() {
+ return;
+ }
+
+ let mut used_color: Option<StaticColor> = None;
+
+ if border.has_left() {
+ if let Some(color) = color.left_bottom_corner {
+ used_color = Some(color);
+ buf.push_str(color.get_prefix());
+ }
+
+ let c = border.left_bottom_corner.unwrap_or(' ');
+ buf.push(c);
+ }
+
+ if let Some(color) = color.bottom {
+ match used_color {
+ Some(used) => {
+ if used != color {
+ buf.push_str(used.get_suffix());
+ buf.push_str(color.get_prefix());
+ }
+ }
+ None => {
+ buf.push_str(color.get_prefix());
+ used_color = Some(color);
+ }
+ }
+ }
+
+ let c = border.bottom.unwrap_or(' ');
+ buf.extend(repeat(c).take(width));
+
+ if border.has_right() {
+ if let Some(color) = color.right_bottom_corner {
+ match used_color {
+ Some(used) => {
+ if used != color {
+ buf.push_str(used.get_suffix());
+ buf.push_str(color.get_prefix());
+ }
+ }
+ None => {
+ buf.push_str(color.get_prefix());
+ used_color = Some(color);
+ }
+ }
+ }
+
+ let c = border.right_bottom_corner.unwrap_or(' ');
+ buf.push(c);
+ }
+
+ if let Some(used) = used_color {
+ buf.push_str(used.get_suffix());
+ }
+
+ buf.push('\n');
+ }
+
+ fn create_border<T>(borders: Borders<T>) -> Border<T> {
+ Border {
+ top: borders.top,
+ bottom: borders.bottom,
+ left: borders.left,
+ right: borders.right,
+ left_top_corner: borders.top_left,
+ left_bottom_corner: borders.bottom_left,
+ right_top_corner: borders.top_right,
+ right_bottom_corner: borders.bottom_right,
+ }
+ }
+
+ fn config_borders(borders: &mut Borders<char>, ctx: &PrintContext) {
+ // set top_left
+ {
+ if ctx.kv && ctx.kv_is_first {
+ borders.top_left = borders.top_intersection;
+ }
+
+ if ctx.kv && !ctx.kv_is_first {
+ borders.top_left = borders.intersection;
+ }
+
+ if ctx.kv && ctx.list && !ctx.list_is_first {
+ borders.top_left = borders.left_intersection;
+ }
+
+ if ctx.is_first_col && !ctx.is_first_row {
+ borders.top_left = borders.left_intersection;
+ }
+
+ if ctx.lean_top {
+ borders.top_left = borders.top_intersection;
+ }
+
+ if ctx.top_left {
+ borders.top_left = borders.left_intersection;
+ }
+
+ if ctx.top_intersection {
+ borders.top_left = borders.intersection;
+ }
+ }
+
+ if ctx.is_last_col && !ctx.is_first_row {
+ borders.top_right = borders.right_intersection;
+ }
+
+ if !ctx.is_first_col && ctx.is_last_row {
+ borders.bottom_left = borders.bottom_intersection;
+ }
+
+ if !ctx.is_last_row || ctx.no_bottom {
+ cfg_no_bottom_borders(borders);
+ }
+
+ if ctx.no_right {
+ cfg_no_right_borders(borders);
+ }
+ }
+
+ struct ConfigCell(PrintContext);
+
+ impl<R, D> TableOption<R, D, ColoredConfig> for ConfigCell {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ {
+ // we set a horizontal lines to borders to not complicate logic with cleaning it
+
+ let mut borders = *cfg.get_borders();
+ if let Some(line) = cfg.get_horizontal_line(0) {
+ borders.top = line.main;
+ borders.top_left = line.left;
+ borders.top_right = line.right;
+ }
+
+ if let Some(line) = cfg.get_horizontal_line(1) {
+ borders.bottom = line.main;
+ borders.bottom_left = line.left;
+ borders.bottom_right = line.right;
+ }
+
+ cfg.clear_theme();
+ cfg.set_borders(borders);
+ }
+
+ let mut ctx = self.0;
+
+ let has_vertical = cfg.get_borders().has_left();
+ if !ctx.intersections_horizontal.is_empty() && has_vertical {
+ let mut splits = short_splits(&mut ctx.intersections_horizontal, ctx.size.width);
+ squash_splits(&mut splits);
+
+ let c = cfg.get_borders().bottom_intersection.unwrap_or(' ');
+ cfg_set_top_chars(cfg, &splits, c)
+ }
+
+ let has_horizontal = cfg.get_borders().has_top();
+ if !ctx.intersections_vertical.is_empty() && has_horizontal {
+ let mut splits = short_splits(&mut ctx.intersections_vertical, ctx.size.height);
+ squash_splits(&mut splits);
+
+ let c = cfg.get_borders().right_intersection.unwrap_or(' ');
+ cfg_set_left_chars(cfg, &splits, c)
+ }
+
+ let mut borders = *cfg.get_borders();
+
+ // set top_left
+ {
+ if ctx.kv && ctx.kv_is_first {
+ borders.top_left = borders.top_intersection;
+ }
+
+ if ctx.kv && !ctx.kv_is_first {
+ borders.top_left = borders.intersection;
+ }
+
+ if ctx.kv && ctx.list && !ctx.list_is_first {
+ borders.top_left = borders.left_intersection;
+ }
+
+ if ctx.is_first_col && !ctx.is_first_row {
+ borders.top_left = borders.left_intersection;
+ }
+
+ if ctx.lean_top {
+ borders.top_left = borders.top_intersection;
+ }
+
+ if ctx.top_left {
+ borders.top_left = borders.left_intersection;
+ }
+
+ if ctx.top_intersection {
+ borders.top_left = borders.intersection;
+ }
+ }
+
+ if ctx.is_last_col && !ctx.is_first_row {
+ borders.top_right = borders.right_intersection;
+ }
+
+ if !ctx.is_first_col && ctx.is_last_row {
+ borders.bottom_left = borders.bottom_intersection;
+ }
+
+ if !ctx.is_last_row || ctx.no_bottom {
+ cfg_no_bottom_borders(&mut borders);
+ }
+
+ if ctx.no_right {
+ cfg_no_right_borders(&mut borders);
+ }
+
+ cfg.set_borders(borders);
+ }
+ }
+
+ fn cfg_no_bottom_borders(borders: &mut Borders<char>) {
+ borders.bottom = None;
+ borders.bottom_intersection = None;
+ borders.bottom_left = None;
+ borders.bottom_right = None;
+ borders.horizontal = None;
+ }
+
+ fn cfg_no_right_borders(borders: &mut Borders<char>) {
+ borders.right = None;
+ borders.right_intersection = None;
+ borders.top_right = None;
+ borders.bottom_right = None;
+ borders.vertical = None;
+ }
+
+ fn cfg_set_top_chars(cfg: &mut ColoredConfig, list: &[usize], c: char) {
+ for &split in list {
+ let offset = split;
+ cfg.set_horizontal_char((0, 0), c, Offset::Begin(offset));
+ }
+ }
+
+ fn cfg_set_left_chars(cfg: &mut ColoredConfig, list: &[usize], c: char) {
+ for &offset in list {
+ cfg.set_vertical_char((0, 0), c, Offset::Begin(offset));
+ }
+ }
+
+ struct NoTopBorders;
+
+ impl<R, D> TableOption<R, D, ColoredConfig> for NoTopBorders {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let mut borders = *cfg.get_borders();
+ borders.top = None;
+ borders.top_intersection = None;
+ borders.top_left = None;
+ borders.top_right = None;
+
+ cfg.set_borders(borders);
+ }
+ }
+
+ struct NoBottomBorders;
+
+ impl<R, D> TableOption<R, D, ColoredConfig> for NoBottomBorders {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let mut borders = *cfg.get_borders();
+ borders.bottom = None;
+ borders.bottom_intersection = None;
+ borders.bottom_left = None;
+ borders.bottom_right = None;
+
+ cfg.set_borders(borders);
+ }
+ }
+
+ struct NoRightBorders;
+
+ impl<R, D> TableOption<R, D, ColoredConfig> for NoRightBorders {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let mut borders = *cfg.get_borders();
+ borders.top_right = None;
+ borders.bottom_right = None;
+ borders.right = None;
+ borders.right_intersection = None;
+
+ cfg.set_borders(borders);
+ }
+ }
+
+ struct NoLeftBorders;
+
+ impl<R, D> TableOption<R, D, ColoredConfig> for NoLeftBorders {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let mut borders = *cfg.get_borders();
+ borders.top_left = None;
+ borders.bottom_left = None;
+ borders.left = None;
+ borders.left_intersection = None;
+
+ cfg.set_borders(borders);
+ }
+ }
+
+ struct TopLeftChangeTopIntersection;
+
+ impl<R, D> TableOption<R, D, ColoredConfig> for TopLeftChangeTopIntersection {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let mut borders = *cfg.get_borders();
+ borders.top_left = borders.top_intersection;
+
+ cfg.set_borders(borders);
+ }
+ }
+
+ struct TopLeftChangeIntersection;
+
+ impl<R, D> TableOption<R, D, ColoredConfig> for TopLeftChangeIntersection {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let mut borders = *cfg.get_borders();
+ borders.top_left = borders.intersection;
+
+ cfg.set_borders(borders);
+ }
+ }
+
+ struct TopLeftChangeToLeft;
+
+ impl<R, D> TableOption<R, D, ColoredConfig> for TopLeftChangeToLeft {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let mut borders = *cfg.get_borders();
+ borders.top_left = borders.left_intersection;
+
+ cfg.set_borders(borders);
+ }
+ }
+
+ struct TopRightChangeToRight;
+
+ impl<R, D> TableOption<R, D, ColoredConfig> for TopRightChangeToRight {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let mut borders = *cfg.get_borders();
+ borders.top_right = borders.right_intersection;
+
+ cfg.set_borders(borders);
+ }
+ }
+
+ struct BottomLeftChangeSplit;
+
+ impl<R, D> TableOption<R, D, ColoredConfig> for BottomLeftChangeSplit {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let mut borders = *cfg.get_borders();
+ borders.bottom_left = borders.left_intersection;
+
+ cfg.set_borders(borders);
+ }
+ }
+
+ struct BottomLeftChangeSplitToIntersection;
+
+ impl<R, D> TableOption<R, D, ColoredConfig> for BottomLeftChangeSplitToIntersection {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let mut borders = *cfg.get_borders();
+ borders.bottom_left = borders.intersection;
+
+ cfg.set_borders(borders);
+ }
+ }
+
+ struct BottomRightChangeToRight;
+
+ impl<R, D> TableOption<R, D, ColoredConfig> for BottomRightChangeToRight {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let mut borders = *cfg.get_borders();
+ borders.bottom_right = borders.right_intersection;
+
+ cfg.set_borders(borders);
+ }
+ }
+
+ struct BottomLeftChangeToBottomIntersection;
+
+ impl<R, D> TableOption<R, D, ColoredConfig> for BottomLeftChangeToBottomIntersection {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ let mut borders = *cfg.get_borders();
+ borders.bottom_left = borders.bottom_intersection;
+
+ cfg.set_borders(borders);
+ }
+ }
+
+ struct SetBottomChars<'a>(&'a [usize], char);
+
+ impl<R, D> TableOption<R, D, ColoredConfig> for SetBottomChars<'_>
+ where
+ R: Records,
+ for<'a> &'a R: Records,
+ for<'a> D: Dimension + Estimate<&'a R, ColoredConfig>,
+ {
+ fn change(self, records: &mut R, cfg: &mut ColoredConfig, dims: &mut D) {
+ dims.estimate(&*records, cfg);
+
+ let table_width = (0..records.count_columns())
+ .map(|col| dims.get_width(col))
+ .sum::<usize>()
+ + cfg.count_vertical(records.count_columns());
+ let mut current_width = 0;
+
+ for pos in self.0 {
+ current_width += pos;
+ if current_width > table_width {
+ break;
+ }
+
+ let split_char = self.1;
+ cfg.set_horizontal_char((1, 0), split_char, Offset::Begin(current_width));
+
+ current_width += 1;
+ }
+ }
+ }
+
+ struct SetTopChars<'a>(&'a [usize], char);
+
+ impl<R, D> TableOption<R, D, ColoredConfig> for SetTopChars<'_> {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ for &split in self.0 {
+ let offset = split;
+ cfg.set_horizontal_char((0, 0), self.1, Offset::Begin(offset));
+ }
+ }
+ }
+
+ struct SetLeftChars<'a>(&'a [usize], char);
+
+ impl<R, D> TableOption<R, D, ColoredConfig> for SetLeftChars<'_> {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ for &offset in self.0 {
+ cfg.set_vertical_char((0, 0), self.1, Offset::Begin(offset));
+ }
+ }
+ }
+
+ struct GetTopIntersection(char);
+
+ impl<R, D> TableOption<R, D, ColoredConfig> for &mut GetTopIntersection {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ self.0 = cfg.get_borders().top_intersection.unwrap_or(' ');
+ }
+ }
+
+ struct GetBottomIntersection(char);
+
+ impl<R, D> TableOption<R, D, ColoredConfig> for &mut GetBottomIntersection {
+ fn change(self, _: &mut R, cfg: &mut ColoredConfig, _: &mut D) {
+ self.0 = cfg.get_borders().bottom_intersection.unwrap_or(' ');
+ }
+ }
+
+ #[derive(Debug, Default)]
+ struct Dimensions {
+ all: HashMap<usize, Dim>,
+ arrays: HashMap<usize, ArrayDimensions>,
+ }
+
+ #[derive(Debug, Default, Clone, Copy)]
+ struct Dim {
+ width: usize,
+ height: usize,
+ }
+
+ impl Dim {
+ fn new(width: usize, height: usize) -> Self {
+ Self { width, height }
+ }
+ }
+
+ #[derive(Debug, Default)]
+ struct ArrayDimensions {
+ max: Dim,
+ index: HashMap<usize, usize>,
+ }
+
+ fn collect_table_dimensions(val: &TableValue, cfg: &CompactMultilineConfig) -> Dimensions {
+ let mut buf = Dimensions::default();
+ let (dim, _) = __collect_table_dims(&mut buf, val, cfg, 0);
+ let _ = buf.all.insert(0, dim);
+ buf
+ }
+
+ fn __collect_table_dims(
+ buf: &mut Dimensions,
+ val: &TableValue,
+ cfg: &CompactMultilineConfig,
+ pos: usize,
+ ) -> (Dim, usize) {
+ match val {
+ TableValue::Cell(text) => (str_dimension(text, cfg), 0),
+ TableValue::Row(list) => {
+ if list.is_empty() {
+ return (empty_dimension(cfg), 0);
+ }
+
+ let mut index = ArrayDimensions {
+ max: Dim::default(),
+ index: HashMap::with_capacity(list.len()),
+ };
+
+ let mut total_width = 0;
+
+ let mut count_elements = list.len();
+ let mut val_pos = pos + 1;
+ for (i, value) in list.iter().enumerate() {
+ let (dim, elements) = __collect_table_dims(buf, value, cfg, val_pos);
+ count_elements += elements;
+
+ total_width += dim.width;
+
+ index.max.width = max(index.max.width, dim.width);
+ index.max.height = max(index.max.height, dim.height);
+
+ let _ = buf.all.insert(val_pos, dim);
+
+ let _ = index.index.insert(i, val_pos);
+
+ val_pos += 1 + elements;
+ }
+
+ let max_height = index.max.height;
+
+ let _ = buf.arrays.insert(pos, index);
+
+ let has_vertical = cfg.get_borders().has_left();
+ total_width += has_vertical as usize * (list.len() - 1);
+
+ (Dim::new(total_width, max_height), count_elements)
+ }
+ TableValue::Column(list) => {
+ if list.is_empty() {
+ return (empty_dimension(cfg), 0);
+ }
+
+ let mut index = ArrayDimensions {
+ max: Dim::default(),
+ index: HashMap::with_capacity(list.len()),
+ };
+
+ let mut total_height = 0;
+
+ let mut count_elements = list.len();
+ let mut val_pos = pos + 1;
+ for (i, value) in list.iter().enumerate() {
+ let (dim, elements) = __collect_table_dims(buf, value, cfg, val_pos);
+ count_elements += elements;
+
+ total_height += dim.height;
+
+ index.max.width = max(index.max.width, dim.width);
+ index.max.height = max(index.max.height, dim.height);
+
+ let _ = buf.all.insert(val_pos, dim);
+
+ let _ = index.index.insert(i, val_pos);
+
+ val_pos += 1 + elements;
+ }
+
+ let max_width = index.max.width;
+
+ let _ = buf.arrays.insert(pos, index);
+
+ let has_horizontal = cfg.get_borders().has_top();
+ total_height += has_horizontal as usize * (list.len() - 1);
+
+ (Dim::new(max_width, total_height), count_elements)
+ }
+ }
+ }
+
+ fn empty_dimension(cfg: &CompactMultilineConfig) -> Dim {
+ Dim::new(get_padding_horizontal(cfg), 1 + get_padding_vertical(cfg))
+ }
+
+ fn str_dimension(text: &str, cfg: &CompactMultilineConfig) -> Dim {
+ let (count_lines, width) = string_dimension(text);
+ let w = width + get_padding_horizontal(cfg);
+ let h = count_lines + get_padding_vertical(cfg);
+ Dim::new(w, h)
+ }
+
+ fn get_padding_horizontal(cfg: &CompactMultilineConfig) -> usize {
+ let pad = cfg.get_padding();
+ pad.left.size + pad.right.size
+ }
+
+ fn get_padding_vertical(cfg: &CompactMultilineConfig) -> usize {
+ let pad = cfg.get_padding();
+ pad.top.size + pad.bottom.size
+ }
+
+ fn split_value(value: usize, by: usize) -> (usize, usize) {
+ let val = value / by;
+ let rest = value - val * by;
+ (val, rest)
+ }
+
+ fn indent_vertical(al: AlignmentVertical, available: usize, real: usize) -> (usize, usize) {
+ let top = indent_top(al, available, real);
+ let bottom = available - real - top;
+ (top, bottom)
+ }
+
+ fn indent_horizontal(al: AlignmentHorizontal, available: usize, real: usize) -> (usize, usize) {
+ let top = indent_left(al, available, real);
+ let right = available - real - top;
+ (top, right)
+ }
+
+ fn indent_top(al: AlignmentVertical, available: usize, real: usize) -> usize {
+ match al {
+ AlignmentVertical::Top => 0,
+ AlignmentVertical::Bottom => available - real,
+ AlignmentVertical::Center => (available - real) / 2,
+ }
+ }
+
+ fn indent_left(al: AlignmentHorizontal, available: usize, real: usize) -> usize {
+ match al {
+ AlignmentHorizontal::Left => 0,
+ AlignmentHorizontal::Right => available - real,
+ AlignmentHorizontal::Center => (available - real) / 2,
+ }
+ }
+
+ fn short_splits(splits: &mut Vec<usize>, width: usize) -> Vec<usize> {
+ if splits.is_empty() {
+ return Vec::new();
+ }
+
+ let mut out = Vec::new();
+ let mut pos = 0;
+ for &split in splits.iter() {
+ if pos + split >= width {
+ break;
+ }
+
+ pos += split;
+ out.push(pos);
+ }
+
+ let _ = splits.drain(..out.len());
+
+ if !splits.is_empty() && pos <= width {
+ let rest = width - pos;
+ splits[0] -= rest;
+ }
+
+ out
+ }
+
+ fn short_splits3(splits: &mut Vec<usize>, width: usize) -> (bool, Vec<usize>) {
+ if splits.is_empty() {
+ return (false, Vec::new());
+ }
+
+ let mut out = Vec::new();
+ let mut pos = 0;
+ for &split in splits.iter() {
+ if pos + split >= width {
+ break;
+ }
+
+ pos += split + 1;
+ out.push(split);
+ }
+
+ let _ = splits.drain(..out.len());
+
+ if splits.is_empty() {
+ return (false, out);
+ }
+
+ if pos <= width {
+ splits[0] -= width - pos;
+ if splits[0] > 0 {
+ splits[0] -= 1;
+ } else {
+ let _ = splits.remove(0);
+ return (true, out);
+ }
+ }
+
+ (false, out)
+ }
+
+ fn squash_splits(splits: &mut [usize]) {
+ splits.iter_mut().enumerate().for_each(|(i, s)| *s += i);
+ }
+
+ fn set_margin(table: &str, margin: Sides<Indent>, color: Sides<Option<StaticColor>>) -> String {
+ if table.is_empty() {
+ return String::new();
+ }
+
+ let mut buf = String::new();
+ let width = string_width_multiline(table);
+ let top_color = color.top;
+ let bottom_color = color.bottom;
+ let left_color = color.left;
+ let right_color = color.right;
+ for _ in 0..margin.top.size {
+ print_chars(&mut buf, margin.left.fill, left_color, margin.left.size);
+ print_chars(&mut buf, margin.top.fill, top_color, width);
+ print_chars(&mut buf, margin.right.fill, right_color, margin.right.size);
+ buf.push('\n');
+ }
+
+ for line in get_lines(table) {
+ print_chars(&mut buf, margin.left.fill, left_color, margin.left.size);
+ buf.push_str(&line);
+ print_chars(&mut buf, margin.right.fill, right_color, margin.right.size);
+ buf.push('\n');
+ }
+
+ for _ in 0..margin.bottom.size {
+ print_chars(&mut buf, margin.left.fill, left_color, margin.left.size);
+ print_chars(&mut buf, margin.bottom.fill, bottom_color, width);
+ print_chars(&mut buf, margin.right.fill, right_color, margin.right.size);
+ buf.push('\n');
+ }
+
+ let _ = buf.remove(buf.len() - 1);
+
+ buf
+ }
+
+ fn convert_border_colors(pad_color: Sides<StaticColor>) -> Sides<Option<StaticColor>> {
+ Sides::new(
+ (!pad_color.left.is_empty()).then(|| pad_color.left),
+ (!pad_color.right.is_empty()).then(|| pad_color.right),
+ (!pad_color.top.is_empty()).then(|| pad_color.top),
+ (!pad_color.bottom.is_empty()).then(|| pad_color.bottom),
+ )
+ }
+}
diff --git a/vendor/tabled/src/tables/util/mod.rs b/vendor/tabled/src/tables/util/mod.rs
new file mode 100644
index 000000000..ea5453b8f
--- /dev/null
+++ b/vendor/tabled/src/tables/util/mod.rs
@@ -0,0 +1,2 @@
+#[cfg(feature = "std")]
+pub(crate) mod utf8_writer;
diff --git a/vendor/tabled/src/tables/util/utf8_writer.rs b/vendor/tabled/src/tables/util/utf8_writer.rs
new file mode 100644
index 000000000..d4fc515df
--- /dev/null
+++ b/vendor/tabled/src/tables/util/utf8_writer.rs
@@ -0,0 +1,29 @@
+use std::fmt;
+use std::io;
+
+pub(crate) struct UTF8Writer<W>(W);
+
+impl<W> UTF8Writer<W> {
+ pub(crate) fn new(writer: W) -> Self {
+ Self(writer)
+ }
+}
+
+impl<W> fmt::Write for UTF8Writer<W>
+where
+ W: io::Write,
+{
+ fn write_str(&mut self, s: &str) -> fmt::Result {
+ let mut buf = s.as_bytes();
+ loop {
+ let n = self.0.write(buf).map_err(|_| fmt::Error)?;
+ if n == buf.len() {
+ break;
+ }
+
+ buf = &buf[n..];
+ }
+
+ Ok(())
+ }
+}
diff --git a/vendor/tabled/tests/core/builder_test.rs b/vendor/tabled/tests/core/builder_test.rs
new file mode 100644
index 000000000..7751df12d
--- /dev/null
+++ b/vendor/tabled/tests/core/builder_test.rs
@@ -0,0 +1,748 @@
+#![cfg(feature = "std")]
+
+use std::iter::FromIterator;
+
+use tabled::builder::Builder;
+
+use testing_table::test_table;
+
+test_table!(
+ push_record,
+ {
+ let mut b = Builder::default();
+ b.push_record(["1", "2", "3"]);
+ b.push_record(["a", "b", "c"]);
+ b.push_record(["d", "e", "f"]);
+ b.build()
+ },
+ "+---+---+---+"
+ "| 1 | 2 | 3 |"
+ "+---+---+---+"
+ "| a | b | c |"
+ "+---+---+---+"
+ "| d | e | f |"
+ "+---+---+---+"
+);
+
+test_table!(
+ set_header,
+ {
+ let mut b = Builder::default();
+ b.set_header(["1", "2", "3"]);
+ b.push_record(["a", "b", "c"]);
+ b.push_record(["d", "e", "f"]);
+ b.build()
+ },
+ "+---+---+---+"
+ "| 1 | 2 | 3 |"
+ "+---+---+---+"
+ "| a | b | c |"
+ "+---+---+---+"
+ "| d | e | f |"
+ "+---+---+---+"
+);
+
+test_table!(
+ header_remove_0,
+ {
+ let mut b = Builder::default();
+ b.set_header(["1", "2", "3"]);
+ b.push_record(["a", "b", "c"]);
+ b.push_record(["d", "e", "f"]);
+ b.remove_header();
+ b.build()
+ },
+ "+---+---+---+"
+ "| a | b | c |"
+ "+---+---+---+"
+ "| d | e | f |"
+ "+---+---+---+"
+);
+
+test_table!(
+ header_remove_1,
+ {
+ let mut b = Builder::default();
+ b.set_header(["1", "2", "3", "4", "5"]);
+ b.push_record(["a", "b", "c"]);
+ b.push_record(["d", "e", "f"]);
+ b.remove_header();
+ b.build()
+ },
+ "+---+---+---+"
+ "| a | b | c |"
+ "+---+---+---+"
+ "| d | e | f |"
+ "+---+---+---+"
+);
+
+test_table!(
+ from_iter,
+ Builder::from_iter([["n", "name"], ["0", "Dmitriy"], ["1", "Vladislav"]]).build(),
+ "+---+-----------+"
+ "| n | name |"
+ "+---+-----------+"
+ "| 0 | Dmitriy |"
+ "+---+-----------+"
+ "| 1 | Vladislav |"
+ "+---+-----------+"
+);
+
+test_table!(
+ used_with_different_number_of_columns_0,
+ {
+ let mut b = Builder::default();
+ b.set_header(["1", "2"]);
+ b.push_record(["a", "b", "c"]);
+ b.push_record(["d"]);
+ b.build()
+ },
+ "+---+---+---+"
+ "| 1 | 2 | |"
+ "+---+---+---+"
+ "| a | b | c |"
+ "+---+---+---+"
+ "| d | | |"
+ "+---+---+---+"
+);
+
+test_table!(
+ used_with_different_number_of_columns_1,
+ {
+ let mut b = Builder::default();
+ b.set_header(["1", "2", "3"]);
+ b.push_record(["a", "b"]);
+ b.push_record(["d"]);
+ b.build()
+ },
+ "+---+---+---+"
+ "| 1 | 2 | 3 |"
+ "+---+---+---+"
+ "| a | b | |"
+ "+---+---+---+"
+ "| d | | |"
+ "+---+---+---+"
+);
+
+test_table!(
+ used_with_different_number_of_columns_2,
+ {
+ let mut b = Builder::default();
+ b.set_header(["1"]);
+ b.push_record(["a", "b"]);
+ b.push_record(["d", "e", "f"]);
+ b.build()
+ },
+ "+---+---+---+"
+ "| 1 | | |"
+ "+---+---+---+"
+ "| a | b | |"
+ "+---+---+---+"
+ "| d | e | f |"
+ "+---+---+---+"
+);
+
+test_table!(
+ with_default_cell_0,
+ {
+ let mut b = Builder::default();
+ b.set_header(["1", "2"]).set_default_text("NaN").push_record(["a", "b", "c"]).push_record(["d"]);
+ b.build()
+ },
+ "+---+-----+-----+"
+ "| 1 | 2 | NaN |"
+ "+---+-----+-----+"
+ "| a | b | c |"
+ "+---+-----+-----+"
+ "| d | NaN | NaN |"
+ "+---+-----+-----+"
+);
+
+test_table!(
+ with_default_cell_1,
+ {
+ let mut b = Builder::default();
+ b.set_header(["1"]).set_default_text("NaN").push_record(["a", "b"]).push_record(["d", "e", "f"]);
+ b.build()
+ },
+ "+---+-----+-----+"
+ "| 1 | NaN | NaN |"
+ "+---+-----+-----+"
+ "| a | b | NaN |"
+ "+---+-----+-----+"
+ "| d | e | f |"
+ "+---+-----+-----+"
+);
+
+test_table!(
+ extend,
+ {
+ let mut b = Builder::default();
+ b.extend(["1", "2", "3"]);
+ b.extend(["a", "b", "c"]);
+ b.extend(["d", "e", "f"]);
+ b.build()
+ },
+ "+---+---+---+"
+ "| 1 | 2 | 3 |"
+ "+---+---+---+"
+ "| a | b | c |"
+ "+---+---+---+"
+ "| d | e | f |"
+ "+---+---+---+"
+);
+
+test_table!(
+ from_vector_0,
+ Builder::from_iter(vec![
+ vec!["1".to_string(), "2".to_string(), "3".to_string()],
+ vec!["a".to_string(), "b".to_string(), "c".to_string()],
+ vec!["d".to_string(), "e".to_string(), "f".to_string()],
+ ])
+ .build(),
+ "+---+---+---+"
+ "| 1 | 2 | 3 |"
+ "+---+---+---+"
+ "| a | b | c |"
+ "+---+---+---+"
+ "| d | e | f |"
+ "+---+---+---+"
+);
+
+test_table!(
+ from_with_empty_lines_0,
+ Builder::from_iter(vec![
+ vec!["1".to_string(), "2".to_string(), "3".to_string()],
+ vec![],
+ vec![],
+ vec!["d".to_string(), "e".to_string(), "f".to_string()],
+ ])
+ .build(),
+ "+---+---+---+"
+ "| 1 | 2 | 3 |"
+ "+---+---+---+"
+ "| | | |"
+ "+---+---+---+"
+ "| | | |"
+ "+---+---+---+"
+ "| d | e | f |"
+ "+---+---+---+"
+);
+
+test_table!(
+ from_with_empty_lines_1,
+ Builder::from_iter(vec![
+ vec!["1".to_string(), "2".to_string(), "3".to_string()],
+ vec![],
+ vec!["d".to_string(), "e".to_string(), "f".to_string()],
+ ])
+ .build(),
+ "+---+---+---+"
+ "| 1 | 2 | 3 |"
+ "+---+---+---+"
+ "| | | |"
+ "+---+---+---+"
+ "| d | e | f |"
+ "+---+---+---+"
+);
+
+test_table!(
+ from_with_empty_lines_2,
+ Builder::from_iter(vec![
+ vec![],
+ vec!["1".to_string(), "2".to_string(), "3".to_string()],
+ vec!["d".to_string(), "e".to_string(), "f".to_string()],
+ ])
+ .build(),
+ "+---+---+---+"
+ "| | | |"
+ "+---+---+---+"
+ "| 1 | 2 | 3 |"
+ "+---+---+---+"
+ "| d | e | f |"
+ "+---+---+---+"
+);
+
+test_table!(
+ from_with_empty_lines_3,
+ Builder::from_iter(vec![
+ vec!["1".to_string(), "2".to_string(), "3".to_string()],
+ vec!["d".to_string(), "e".to_string(), "f".to_string()],
+ vec![],
+ ])
+ .build(),
+ "+---+---+---+"
+ "| 1 | 2 | 3 |"
+ "+---+---+---+"
+ "| d | e | f |"
+ "+---+---+---+"
+ "| | | |"
+ "+---+---+---+"
+);
+
+test_table!(
+ clean_0,
+ clean(Builder::from_iter([["1", "2", "3"], ["a", "b", "c"], ["d", "e", "f"]])),
+ "+---+---+---+"
+ "| 1 | 2 | 3 |"
+ "+---+---+---+"
+ "| a | b | c |"
+ "+---+---+---+"
+ "| d | e | f |"
+ "+---+---+---+"
+);
+
+test_table!(
+ clean_1,
+ clean(Builder::from_iter([["", "2", "3"], ["", "b", "c"], ["", "e", "f"]])),
+ "+---+---+"
+ "| 2 | 3 |"
+ "+---+---+"
+ "| b | c |"
+ "+---+---+"
+ "| e | f |"
+ "+---+---+"
+);
+
+test_table!(
+ clean_2,
+ clean(Builder::from_iter([["1", "", "3"], ["a", "", "c"], ["d", "", "f"]])),
+ "+---+---+"
+ "| 1 | 3 |"
+ "+---+---+"
+ "| a | c |"
+ "+---+---+"
+ "| d | f |"
+ "+---+---+"
+);
+
+test_table!(
+ clean_3,
+ clean(Builder::from_iter([["1", "2", ""], ["a", "b", ""], ["d", "e", ""]])),
+ "+---+---+"
+ "| 1 | 2 |"
+ "+---+---+"
+ "| a | b |"
+ "+---+---+"
+ "| d | e |"
+ "+---+---+"
+);
+
+test_table!(
+ clean_4,
+ clean(Builder::from_iter([["", "", "3"], ["", "", "c"], ["", "", "f"]])),
+ "+---+"
+ "| 3 |"
+ "+---+"
+ "| c |"
+ "+---+"
+ "| f |"
+ "+---+"
+);
+
+test_table!(
+ clean_5,
+ clean(Builder::from_iter([["1", "", ""], ["a", "", ""], ["d", "", ""]])),
+ "+---+"
+ "| 1 |"
+ "+---+"
+ "| a |"
+ "+---+"
+ "| d |"
+ "+---+"
+);
+
+test_table!(
+ clean_6,
+ clean(Builder::from_iter([["", "2", ""], ["", "b", ""], ["", "e", ""]])),
+ "+---+"
+ "| 2 |"
+ "+---+"
+ "| b |"
+ "+---+"
+ "| e |"
+ "+---+"
+);
+
+test_table!(
+ clean_7,
+ clean(Builder::from_iter([["", "", ""], ["a", "b", "c"], ["d", "e", "f"]])),
+ "+---+---+---+"
+ "| a | b | c |"
+ "+---+---+---+"
+ "| d | e | f |"
+ "+---+---+---+"
+);
+
+test_table!(
+ clean_8,
+ clean(Builder::from_iter([["1", "2", "3"], ["", "", ""], ["d", "e", "f"]])),
+ "+---+---+---+"
+ "| 1 | 2 | 3 |"
+ "+---+---+---+"
+ "| d | e | f |"
+ "+---+---+---+"
+);
+
+test_table!(
+ clean_9,
+ clean(Builder::from_iter([["1", "2", "3"], ["a", "b", "c"], ["", "", ""]])),
+ "+---+---+---+"
+ "| 1 | 2 | 3 |"
+ "+---+---+---+"
+ "| a | b | c |"
+ "+---+---+---+"
+);
+
+test_table!(
+ clean_10,
+ clean(Builder::from_iter([["", "", ""], ["", "", ""], ["d", "e", "f"]])),
+ "+---+---+---+"
+ "| d | e | f |"
+ "+---+---+---+"
+);
+
+test_table!(
+ clean_11,
+ clean(Builder::from_iter([["1", "2", "3"], ["", "", ""], ["", "", ""]])),
+ "+---+---+---+"
+ "| 1 | 2 | 3 |"
+ "+---+---+---+"
+);
+
+test_table!(
+ clean_12,
+ clean(Builder::from_iter([["", "", ""], ["a", "b", "c"], ["", "", ""]])),
+ "+---+---+---+"
+ "| a | b | c |"
+ "+---+---+---+"
+);
+
+test_table!(
+ clean_13,
+ clean(Builder::from_iter([["1", "", "3"], ["", "", ""], ["d", "", "f"]])),
+ "+---+---+"
+ "| 1 | 3 |"
+ "+---+---+"
+ "| d | f |"
+ "+---+---+"
+);
+
+test_table!(
+ clean_with_columns_0,
+ clean(Builder::from_iter([["1", "2", "3"], ["a", "b", "c"], ["d", "e", "f"]]).set_header(["col1", "col2", "col3"]).clone()),
+ "+------+------+------+"
+ "| col1 | col2 | col3 |"
+ "+------+------+------+"
+ "| 1 | 2 | 3 |"
+ "+------+------+------+"
+ "| a | b | c |"
+ "+------+------+------+"
+ "| d | e | f |"
+ "+------+------+------+"
+);
+
+test_table!(
+ clean_with_columns_1,
+ clean(Builder::from_iter([["", "2", "3"], ["", "b", "c"], ["", "e", "f"]]).set_header(["col1", "col2", "col3"]).clone()),
+ "+------+------+"
+ "| col2 | col3 |"
+ "+------+------+"
+ "| 2 | 3 |"
+ "+------+------+"
+ "| b | c |"
+ "+------+------+"
+ "| e | f |"
+ "+------+------+"
+);
+
+test_table!(
+ clean_with_columns_2,
+ clean(Builder::from_iter([["1", "", "3"], ["a", "", "c"], ["d", "", "f"]]).set_header(["col1", "col2", "col3"]).clone()),
+ "+------+------+"
+ "| col1 | col3 |"
+ "+------+------+"
+ "| 1 | 3 |"
+ "+------+------+"
+ "| a | c |"
+ "+------+------+"
+ "| d | f |"
+ "+------+------+"
+);
+
+test_table!(
+ clean_with_columns_3,
+ clean(Builder::from_iter([["1", "2", ""], ["a", "b", ""], ["d", "e", ""]]).set_header(["col1", "col2", "col3"]).clone()),
+ "+------+------+"
+ "| col1 | col2 |"
+ "+------+------+"
+ "| 1 | 2 |"
+ "+------+------+"
+ "| a | b |"
+ "+------+------+"
+ "| d | e |"
+ "+------+------+"
+);
+
+test_table!(
+ clean_with_columns_4,
+ clean(Builder::from_iter([["", "", "3"], ["", "", "c"], ["", "", "f"]]).set_header(["col1", "col2", "col3"]).clone()),
+ "+------+"
+ "| col3 |"
+ "+------+"
+ "| 3 |"
+ "+------+"
+ "| c |"
+ "+------+"
+ "| f |"
+ "+------+"
+);
+
+test_table!(
+ clean_with_columns_5,
+ clean(Builder::from_iter([["1", "", ""], ["a", "", ""], ["d", "", ""]]).set_header(["col1", "col2", "col3"]).clone()),
+ "+------+"
+ "| col1 |"
+ "+------+"
+ "| 1 |"
+ "+------+"
+ "| a |"
+ "+------+"
+ "| d |"
+ "+------+"
+);
+
+test_table!(
+ clean_with_columns_6,
+ clean(Builder::from_iter([["", "2", ""], ["", "b", ""], ["", "e", ""]]).set_header(["col1", "col2", "col3"]).clone()),
+ "+------+"
+ "| col2 |"
+ "+------+"
+ "| 2 |"
+ "+------+"
+ "| b |"
+ "+------+"
+ "| e |"
+ "+------+"
+);
+
+test_table!(
+ clean_with_columns_7,
+ clean(
+ Builder::from_iter([["", "", ""], ["", "", ""], ["", "", ""]])
+ .set_header(["col1", "col2", "col3"])
+ .clone()
+ ),
+ ""
+);
+
+test_table!(
+ clean_with_columns_8,
+ clean(Builder::from_iter([["", "", ""], ["a", "b", "c"], ["d", "e", "f"]]).set_header(["col1", "col2", "col3"]).clone()),
+ "+------+------+------+"
+ "| col1 | col2 | col3 |"
+ "+------+------+------+"
+ "| a | b | c |"
+ "+------+------+------+"
+ "| d | e | f |"
+ "+------+------+------+"
+);
+
+test_table!(
+ clean_with_columns_9,
+ clean(Builder::from_iter([["1", "2", "3"], ["", "", ""], ["d", "e", "f"]]).set_header(["col1", "col2", "col3"]).clone()),
+ "+------+------+------+"
+ "| col1 | col2 | col3 |"
+ "+------+------+------+"
+ "| 1 | 2 | 3 |"
+ "+------+------+------+"
+ "| d | e | f |"
+ "+------+------+------+"
+);
+
+test_table!(
+ clean_with_columns_10,
+ clean(Builder::from_iter([["1", "2", "3"], ["a", "b", "c"], ["", "", ""]]).set_header(["col1", "col2", "col3"]).clone()),
+ "+------+------+------+"
+ "| col1 | col2 | col3 |"
+ "+------+------+------+"
+ "| 1 | 2 | 3 |"
+ "+------+------+------+"
+ "| a | b | c |"
+ "+------+------+------+"
+);
+
+test_table!(
+ clean_with_columns_11,
+ clean(Builder::from_iter([["", "", ""], ["", "", ""], ["d", "e", "f"]]).set_header(["col1", "col2", "col3"]).clone()),
+ "+------+------+------+"
+ "| col1 | col2 | col3 |"
+ "+------+------+------+"
+ "| d | e | f |"
+ "+------+------+------+"
+);
+
+test_table!(
+ clean_with_columns_12,
+ clean(Builder::from_iter([["1", "2", "3"], ["", "", ""], ["", "", ""]]).set_header(["col1", "col2", "col3"]).clone()),
+ "+------+------+------+"
+ "| col1 | col2 | col3 |"
+ "+------+------+------+"
+ "| 1 | 2 | 3 |"
+ "+------+------+------+"
+);
+
+test_table!(
+ clean_with_columns_13,
+ clean(Builder::from_iter([["", "", ""], ["a", "b", "c"], ["", "", ""]]).set_header(["col1", "col2", "col3"]).clone()),
+ "+------+------+------+"
+ "| col1 | col2 | col3 |"
+ "+------+------+------+"
+ "| a | b | c |"
+ "+------+------+------+"
+);
+
+test_table!(
+ clean_with_columns_14,
+ clean(Builder::from_iter([["1", "", "3"], ["", "", ""], ["d", "", "f"]]).set_header(["col1", "col2", "col3"]).clone()),
+ "+------+------+"
+ "| col1 | col3 |"
+ "+------+------+"
+ "| 1 | 3 |"
+ "+------+------+"
+ "| d | f |"
+ "+------+------+"
+);
+
+test_table!(clean_empty_0, clean(Builder::from_iter([[""; 0]; 0])), "");
+
+test_table!(clean_empty_1, clean(Builder::from_iter([[""; 0]; 10])), "");
+
+test_table!(
+ index,
+ Builder::from_iter([["n", "name"], ["0", "Dmitriy"], ["1", "Vladislav"]]).index().build(),
+ "+---+---+-----------+"
+ "| | 0 | 1 |"
+ "+---+---+-----------+"
+ "| 0 | n | name |"
+ "+---+---+-----------+"
+ "| 1 | 0 | Dmitriy |"
+ "+---+---+-----------+"
+ "| 2 | 1 | Vladislav |"
+ "+---+---+-----------+"
+);
+
+test_table!(
+ index_set_name,
+ Builder::from_iter([["n", "name"], ["0", "Dmitriy"], ["1", "Vladislav"]])
+ .index()
+ .name(Some("A index name".into()))
+ .build(),
+ "+--------------+---+-----------+"
+ "| | 0 | 1 |"
+ "+--------------+---+-----------+"
+ "| A index name | | |"
+ "+--------------+---+-----------+"
+ "| 0 | n | name |"
+ "+--------------+---+-----------+"
+ "| 1 | 0 | Dmitriy |"
+ "+--------------+---+-----------+"
+ "| 2 | 1 | Vladislav |"
+ "+--------------+---+-----------+"
+);
+
+test_table!(
+ index_enumeration,
+ Builder::from_iter([["n", "name"], ["0", "Dmitriy"], ["1", "Vladislav"]])
+ .index()
+ .hide()
+ .build(),
+ "+---+-----------+"
+ "| 0 | 1 |"
+ "+---+-----------+"
+ "| n | name |"
+ "+---+-----------+"
+ "| 0 | Dmitriy |"
+ "+---+-----------+"
+ "| 1 | Vladislav |"
+ "+---+-----------+"
+);
+
+test_table!(
+ set_index,
+ Builder::from_iter([["n", "name"], ["0", "Dmitriy"], ["1", "Vladislav"]])
+ .index()
+ .column(1)
+ .build(),
+ "+-----------+---+"
+ "| | 0 |"
+ "+-----------+---+"
+ "| 1 | |"
+ "+-----------+---+"
+ "| name | n |"
+ "+-----------+---+"
+ "| Dmitriy | 0 |"
+ "+-----------+---+"
+ "| Vladislav | 1 |"
+ "+-----------+---+"
+);
+
+test_table!(
+ set_index_and_set_index_name_0,
+ Builder::from_iter([["n", "name"], ["0", "Dmitriy"], ["1", "Vladislav"]])
+ .index()
+ .column(1)
+ .name(Some("Hello".into()))
+ .build(),
+ "+-----------+---+"
+ "| | 0 |"
+ "+-----------+---+"
+ "| Hello | |"
+ "+-----------+---+"
+ "| name | n |"
+ "+-----------+---+"
+ "| Dmitriy | 0 |"
+ "+-----------+---+"
+ "| Vladislav | 1 |"
+ "+-----------+---+"
+);
+
+test_table!(
+ set_index_and_set_index_name_1,
+ Builder::from_iter([["n", "name"], ["0", "Dmitriy"], ["1", "Vladislav"]])
+ .index()
+ .column(1)
+ .name(None)
+ .build(),
+ "+-----------+---+"
+ "| | 0 |"
+ "+-----------+---+"
+ "| name | n |"
+ "+-----------+---+"
+ "| Dmitriy | 0 |"
+ "+-----------+---+"
+ "| Vladislav | 1 |"
+ "+-----------+---+"
+);
+
+test_table!(
+ index_transpose,
+ Builder::from_iter([["n", "name", "zz"], ["0", "Dmitriy", "123"], ["1", "Vladislav", "123"]])
+ .index()
+ .transpose()
+ .build(),
+ "+---+------+---------+-----------+"
+ "| | 0 | 1 | 2 |"
+ "+---+------+---------+-----------+"
+ "| 0 | n | 0 | 1 |"
+ "+---+------+---------+-----------+"
+ "| 1 | name | Dmitriy | Vladislav |"
+ "+---+------+---------+-----------+"
+ "| 2 | zz | 123 | 123 |"
+ "+---+------+---------+-----------+"
+);
+
+fn clean(mut b: Builder) -> String {
+ b.clean();
+ b.build().to_string()
+}
diff --git a/vendor/tabled/tests/core/compact_table.rs b/vendor/tabled/tests/core/compact_table.rs
new file mode 100644
index 000000000..1bdaad998
--- /dev/null
+++ b/vendor/tabled/tests/core/compact_table.rs
@@ -0,0 +1,119 @@
+#![cfg(feature = "std")]
+
+use tabled::{
+ grid::{
+ config::CompactConfig, dimension::CompactGridDimension, dimension::Estimate,
+ records::IterRecords,
+ },
+ tables::CompactTable,
+};
+
+use crate::matrix::Matrix;
+use testing_table::test_table;
+
+test_table!(
+ compact_new,
+ CompactTable::new(Matrix::new(3, 3).to_vec()).to_string(),
+ ""
+);
+
+test_table!(
+ compact_with_dimension,
+ {
+ let data = Matrix::with_no_frame(3, 3).to_vec();
+ let mut dims = CompactGridDimension::default();
+ dims.estimate(IterRecords::new(&data, 3, None), &CompactConfig::default());
+ CompactTable::with_dimension(data, dims).columns(3).to_string()
+ },
+ "+-----+-----+-----+"
+ "| 0-0 | 0-1 | 0-2 |"
+ "|-----+-----+-----|"
+ "| 1-0 | 1-1 | 1-2 |"
+ "|-----+-----+-----|"
+ "| 2-0 | 2-1 | 2-2 |"
+ "+-----+-----+-----+"
+);
+
+test_table!(
+ compact_width,
+ CompactTable::new(Matrix::with_no_frame(3, 3).to_vec().to_vec()).columns(3).width(5).to_string(),
+ "+-----+-----+-----+"
+ "| 0-0 | 0-1 | 0-2 |"
+ "|-----+-----+-----|"
+ "| 1-0 | 1-1 | 1-2 |"
+ "|-----+-----+-----|"
+ "| 2-0 | 2-1 | 2-2 |"
+ "+-----+-----+-----+"
+);
+
+test_table!(
+ compact_width_pad_not_included,
+ CompactTable::new(Matrix::with_no_frame(3, 3).to_vec()).columns(3).width(3).to_string(),
+ "+---+---+---+"
+ "| 0-0 | 0-1 | 0-2 |"
+ "|---+---+---|"
+ "| 1-0 | 1-1 | 1-2 |"
+ "|---+---+---|"
+ "| 2-0 | 2-1 | 2-2 |"
+ "+---+---+---+"
+);
+
+test_table!(
+ compact_width_bigger,
+ CompactTable::new(Matrix::with_no_frame(3, 3).to_vec()).columns(3).width(10).to_string(),
+ "+----------+----------+----------+"
+ "| 0-0 | 0-1 | 0-2 |"
+ "|----------+----------+----------|"
+ "| 1-0 | 1-1 | 1-2 |"
+ "|----------+----------+----------|"
+ "| 2-0 | 2-1 | 2-2 |"
+ "+----------+----------+----------+"
+);
+
+test_table!(
+ compact_columns,
+ CompactTable::new(Matrix::with_no_frame(3, 3).to_vec()).columns(3).to_string(),
+ "+--+--+--+"
+ "| 0-0 | 0-1 | 0-2 |"
+ "|--+--+--|"
+ "| 1-0 | 1-1 | 1-2 |"
+ "|--+--+--|"
+ "| 2-0 | 2-1 | 2-2 |"
+ "+--+--+--+"
+);
+
+test_table!(
+ compact_cols_zero,
+ CompactTable::new(Matrix::with_no_frame(3, 3).to_vec())
+ .columns(0)
+ .to_string(),
+ ""
+);
+
+test_table!(
+ compact_cols_less,
+ CompactTable::new(Matrix::with_no_frame(3, 3).to_vec())
+ .columns(1)
+ .to_string(),
+ "+--+"
+ "| 0-0 |"
+ "|--|"
+ "| 1-0 |"
+ "|--|"
+ "| 2-0 |"
+ "+--+"
+);
+
+test_table!(
+ compact_cols_more,
+ CompactTable::new(Matrix::with_no_frame(3, 3).to_vec())
+ .columns(5)
+ .to_string(),
+ "+--+--+--+--+--+"
+ "| 0-0 | 0-1 | 0-2 |"
+ "|--+--+--+--+--|"
+ "| 1-0 | 1-1 | 1-2 |"
+ "|--+--+--+--+--|"
+ "| 2-0 | 2-1 | 2-2 |"
+ "+--+--+--+--+--+"
+);
diff --git a/vendor/tabled/tests/core/extended_table_test.rs b/vendor/tabled/tests/core/extended_table_test.rs
new file mode 100644
index 000000000..8e511127d
--- /dev/null
+++ b/vendor/tabled/tests/core/extended_table_test.rs
@@ -0,0 +1,472 @@
+#![cfg(feature = "std")]
+
+#[cfg(feature = "color")]
+use owo_colors::{AnsiColors, OwoColorize};
+
+use tabled::{tables::ExtendedTable, Tabled};
+
+use crate::matrix::Matrix;
+use testing_table::{static_table, test_table};
+
+macro_rules! assert_expanded_display {
+ ( $data:expr, $expected:expr ) => {
+ let table = ExtendedTable::new($data).to_string();
+ assert_eq!(table, $expected);
+ };
+}
+
+macro_rules! build_tabled_type {
+ ( $name:ident, $length:expr, $fields:expr, $headers:expr ) => {
+ #[derive(Debug, Clone, Copy)]
+ struct $name;
+
+ impl Tabled for $name {
+ const LENGTH: usize = $length;
+
+ fn fields(&self) -> Vec<std::borrow::Cow<'_, str>> {
+ $fields.iter().map(|s| s.to_string().into()).collect()
+ }
+
+ fn headers() -> Vec<std::borrow::Cow<'static, str>> {
+ $headers.iter().map(|s| s.to_string().into()).collect()
+ }
+ }
+ };
+}
+
+test_table!(
+ display,
+ ExtendedTable::from(Matrix::vec(3, 3)),
+ "-[ RECORD 0 ]-"
+ "N | 0"
+ "column 0 | 0-0"
+ "column 1 | 0-1"
+ "column 2 | 0-2"
+ "-[ RECORD 1 ]-"
+ "N | 1"
+ "column 0 | 1-0"
+ "column 1 | 1-1"
+ "column 2 | 1-2"
+ "-[ RECORD 2 ]-"
+ "N | 2"
+ "column 0 | 2-0"
+ "column 1 | 2-1"
+ "column 2 | 2-2"
+);
+
+#[test]
+fn display_empty_records() {
+ build_tabled_type!(TestType, 3, ["He", "123", "asd"], ["1", "2", "3"]);
+ let data: Vec<TestType> = vec![];
+ assert_expanded_display!(data, "");
+}
+
+#[test]
+fn display_empty() {
+ build_tabled_type!(
+ TestType,
+ 3,
+ {
+ let d: Vec<String> = vec![];
+ d
+ },
+ {
+ let d: Vec<String> = vec![];
+ d
+ }
+ );
+ let data: Vec<TestType> = vec![];
+ assert_expanded_display!(data, "");
+}
+
+#[test]
+fn display_empty_2() {
+ build_tabled_type!(EmptyType, 0, [""; 0], [""; 0]);
+ assert_expanded_display!(&[EmptyType], "-[ RECORD 0 ]-");
+}
+
+#[test]
+fn display_dynamic_header_template() {
+ {
+ build_tabled_type!(TestType, 3, ["He", "123", "asd"], ["1", "2", "3"]);
+ assert_expanded_display!(
+ &[TestType],
+ static_table!(
+ "-[ RECORD 0 ]-"
+ "1 | He"
+ "2 | 123"
+ "3 | asd"
+ )
+ );
+ }
+ {
+ build_tabled_type!(TestType, 3, ["He", "123", "asd"], ["11", "2222222", "3"]);
+ assert_expanded_display!(
+ &[TestType],
+ static_table!(
+ "-[ RECORD 0 ]-"
+ "11 | He"
+ "2222222 | 123"
+ "3 | asd"
+ )
+ );
+ }
+ {
+ build_tabled_type!(
+ TestType,
+ 3,
+ ["HeheHehe", "123", "asd"],
+ ["11", "2222222", "3"]
+ );
+ assert_expanded_display!(
+ &[TestType],
+ static_table!(
+ "-[ RECORD 0 ]-----"
+ "11 | HeheHehe"
+ "2222222 | 123"
+ "3 | asd"
+ )
+ );
+ }
+ {
+ build_tabled_type!(TestType, 3, ["He", "123", "asd"], ["11111111111", "2", "3"]);
+ assert_expanded_display!(
+ &[TestType],
+ static_table!(
+ "-[ RECORD 0 ]----"
+ "11111111111 | He"
+ "2 | 123"
+ "3 | asd"
+ )
+ );
+ }
+ {
+ build_tabled_type!(
+ TestType,
+ 3,
+ ["He", "123", "asd"],
+ ["1111111111111", "2", "3"]
+ );
+ assert_expanded_display!(
+ &[TestType],
+ static_table!(
+ "-[ RECORD 0 ]-+----"
+ "1111111111111 | He"
+ "2 | 123"
+ "3 | asd"
+ )
+ );
+ }
+ {
+ build_tabled_type!(
+ TestType,
+ 3,
+ ["He", "123", "asd"],
+ ["11111111111111111111111111111", "2", "3"]
+ );
+ assert_expanded_display!(
+ &[TestType],
+ static_table!(
+ "-[ RECORD 0 ]-----------------+----"
+ "11111111111111111111111111111 | He"
+ "2 | 123"
+ "3 | asd"
+ )
+ );
+ }
+ {
+ build_tabled_type!(TestType, 3, ["22"], ["11111111111"]);
+ assert_expanded_display!(
+ std::iter::repeat(TestType).take(11),
+ static_table!(
+ "-[ RECORD 0 ]---"
+ "11111111111 | 22"
+ "-[ RECORD 1 ]---"
+ "11111111111 | 22"
+ "-[ RECORD 2 ]---"
+ "11111111111 | 22"
+ "-[ RECORD 3 ]---"
+ "11111111111 | 22"
+ "-[ RECORD 4 ]---"
+ "11111111111 | 22"
+ "-[ RECORD 5 ]---"
+ "11111111111 | 22"
+ "-[ RECORD 6 ]---"
+ "11111111111 | 22"
+ "-[ RECORD 7 ]---"
+ "11111111111 | 22"
+ "-[ RECORD 8 ]---"
+ "11111111111 | 22"
+ "-[ RECORD 9 ]---"
+ "11111111111 | 22"
+ "-[ RECORD 10 ]--"
+ "11111111111 | 22"
+ )
+ );
+ }
+}
+
+#[test]
+fn display_multiline_field() {
+ build_tabled_type!(TestType, 3, ["1", "2", "3"], ["Hello\nWorld", "123", "asd"]);
+ assert_expanded_display!(
+ [TestType],
+ static_table!(
+ "-[ RECORD 0 ]---"
+ "Hello\\nWorld | 1"
+ "123 | 2"
+ "asd | 3"
+ )
+ );
+}
+
+#[test]
+fn display_multiline_record_value() {
+ let mut data = Matrix::list::<2, 3>();
+ data[0][0] = "Hello\nWorld".to_string();
+ data[0][1] = "123".to_string();
+ data[0][2] = "asd".to_string();
+
+ assert_expanded_display!(
+ data,
+ static_table!(
+ "-[ RECORD 0 ]----------"
+ "N | Hello\\nWorld"
+ "column 0 | 123"
+ "column 1 | asd"
+ "column 2 | 0-2"
+ "-[ RECORD 1 ]----------"
+ "N | 1"
+ "column 0 | 1-0"
+ "column 1 | 1-1"
+ "column 2 | 1-2"
+ )
+ );
+}
+
+test_table!(
+ display_with_truncate,
+ {
+ let data = Matrix::new(3, 3).insert((1, 0), "a long string").to_vec();
+ let mut table = ExtendedTable::from(data);
+ table.truncate(14, "");
+ table.to_string()
+ },
+ "-[ RECORD 0 ]-"
+ "N | a l"
+ "column 0 | 0-0"
+ "column 1 | 0-1"
+ "column 2 | 0-2"
+ "-[ RECORD 1 ]-"
+ "N | 1"
+ "column 0 | 1-0"
+ "column 1 | 1-1"
+ "column 2 | 1-2"
+ "-[ RECORD 2 ]-"
+ "N | 2"
+ "column 0 | 2-0"
+ "column 1 | 2-1"
+ "column 2 | 2-2"
+);
+
+test_table!(
+ truncate_with_suffix,
+ {
+ let data = Matrix::new(3, 3).insert((1, 0), "a long string").to_vec();
+ let mut table = ExtendedTable::from(data);
+ table.truncate(15, "..");
+ table.to_string()
+ },
+ "-[ RECORD 0 ]-"
+ "N | .."
+ "column 0 | .."
+ "column 1 | .."
+ "column 2 | .."
+ "-[ RECORD 1 ]-"
+ "N | .."
+ "column 0 | .."
+ "column 1 | .."
+ "column 2 | .."
+ "-[ RECORD 2 ]-"
+ "N | .."
+ "column 0 | .."
+ "column 1 | .."
+ "column 2 | .."
+);
+
+#[test]
+fn truncate_big_fields() {
+ build_tabled_type!(
+ TestType,
+ 3,
+ ["1", "2", "3"],
+ ["A quite big field", "123", "asd"]
+ );
+ let data: Vec<TestType> = vec![TestType, TestType];
+
+ let mut table = ExtendedTable::new(&data);
+ table.truncate(14, "..");
+ let table = table.to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "-[ RECORD 0 ]-"
+ "A quite.. | .."
+ "123 | .."
+ "asd | .."
+ "-[ RECORD 1 ]-"
+ "A quite.. | .."
+ "123 | .."
+ "asd | .."
+ )
+ );
+
+ let mut table = ExtendedTable::new(&data);
+ table.truncate(15, "..");
+ let table = table.to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "-[ RECORD 0 ]--"
+ "A quite .. | .."
+ "123 | .."
+ "asd | .."
+ "-[ RECORD 1 ]--"
+ "A quite .. | .."
+ "123 | .."
+ "asd | .."
+ )
+ );
+
+ let mut table = ExtendedTable::new(&data);
+ table.truncate(0, "..");
+ let table = table.to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "-[ RECORD 0 ]-----+--"
+ "A quite big field | 1"
+ "123 | 2"
+ "asd | 3"
+ "-[ RECORD 1 ]-----+--"
+ "A quite big field | 1"
+ "123 | 2"
+ "asd | 3"
+ )
+ );
+
+ let mut table = ExtendedTable::new(&data);
+ table.truncate(20, "......");
+ let table = table.to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "-[ RECORD 0 ]-------"
+ "A qui...... | ......"
+ "123 | ......"
+ "asd | ......"
+ "-[ RECORD 1 ]-------"
+ "A qui...... | ......"
+ "123 | ......"
+ "asd | ......"
+ )
+ );
+}
+
+test_table!(
+ truncate_too_small,
+ {
+ let data = Matrix::new(3, 3).insert((1, 0), "a long string").to_vec();
+ let mut table = ExtendedTable::from(data);
+ let success = table.truncate(2, "");
+ assert!(!success);
+ table
+ },
+ "-[ RECORD 0 ]-----------"
+ "N | a long string"
+ "column 0 | 0-0"
+ "column 1 | 0-1"
+ "column 2 | 0-2"
+ "-[ RECORD 1 ]-----------"
+ "N | 1"
+ "column 0 | 1-0"
+ "column 1 | 1-1"
+ "column 2 | 1-2"
+ "-[ RECORD 2 ]-----------"
+ "N | 2"
+ "column 0 | 2-0"
+ "column 1 | 2-1"
+ "column 2 | 2-2"
+);
+
+#[cfg(feature = "color")]
+#[test]
+fn display_colored() {
+ let mut data = Matrix::list::<3, 3>();
+ data[0][2] = "https://getfedora.org/"
+ .red()
+ .on_color(AnsiColors::Blue)
+ .to_string();
+ data[1][2] = "https://www.opensuse.org/"
+ .green()
+ .on_color(AnsiColors::Black)
+ .to_string();
+ data[2][2] = "https://endeavouros.com/".blue().underline().to_string();
+
+ assert_expanded_display!(
+ data,
+ static_table!(
+ "-[ RECORD 0 ]------------------------------------------------------------"
+ "N | 0"
+ "column 0 | 0-0"
+ "column 1 | \\u{1b}[31;44mhttps://getfedora.org/\\u{1b}[0m"
+ "column 2 | 0-2"
+ "-[ RECORD 1 ]------------------------------------------------------------"
+ "N | 1"
+ "column 0 | 1-0"
+ "column 1 | \\u{1b}[32;40mhttps://www.opensuse.org/\\u{1b}[0m"
+ "column 2 | 1-2"
+ "-[ RECORD 2 ]------------------------------------------------------------"
+ "N | 2"
+ "column 0 | 2-0"
+ "column 1 | \\u{1b}[4m\\u{1b}[34mhttps://endeavouros.com/\\u{1b}[39m\\u{1b}[0m"
+ "column 2 | 2-2"
+ )
+ );
+}
+
+#[cfg(feature = "color")]
+#[test]
+fn display_with_truncate_colored() {
+ let mut data = Matrix::list::<2, 3>();
+ data[0][2] = "https://getfedora.org/".red().to_string();
+ data[1][1] = "https://endeavouros.com/"
+ .white()
+ .on_color(AnsiColors::Black)
+ .to_string();
+ data[1][2] = "https://www.opensuse.org/".to_string();
+
+ let mut table = ExtendedTable::new(&data);
+ table.truncate(20, "");
+ let table = table.to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "-[ RECORD 0 ]-------"
+ "N | 0"
+ "column 0 | 0-0"
+ "column 1 | \\u{1b}[31"
+ "column 2 | 0-2"
+ "-[ RECORD 1 ]-------"
+ "N | 1"
+ "column 0 | \\u{1b}[37"
+ "column 1 | https://w"
+ "column 2 | 1-2"
+ )
+ );
+}
diff --git a/vendor/tabled/tests/core/index_test.rs b/vendor/tabled/tests/core/index_test.rs
new file mode 100644
index 000000000..f6e107a5a
--- /dev/null
+++ b/vendor/tabled/tests/core/index_test.rs
@@ -0,0 +1,194 @@
+#![cfg(feature = "std")]
+
+use std::iter::FromIterator;
+
+use crate::matrix::Matrix;
+use tabled::{builder::Builder, Table};
+use testing_table::test_table;
+
+test_table!(
+ builder_index,
+ Table::builder(Matrix::list::<3, 2>()).index().build(),
+ "+---+---+----------+----------+"
+ "| | N | column 0 | column 1 |"
+ "+---+---+----------+----------+"
+ "| 0 | 0 | 0-0 | 0-1 |"
+ "+---+---+----------+----------+"
+ "| 1 | 1 | 1-0 | 1-1 |"
+ "+---+---+----------+----------+"
+ "| 2 | 2 | 2-0 | 2-1 |"
+ "+---+---+----------+----------+"
+);
+
+test_table!(
+ builder_index_transpose,
+ Table::builder(Matrix::list::<4, 2>()).index().transpose().build(),
+ "+----------+-----+-----+-----+-----+"
+ "| | 0 | 1 | 2 | 3 |"
+ "+----------+-----+-----+-----+-----+"
+ "| N | 0 | 1 | 2 | 3 |"
+ "+----------+-----+-----+-----+-----+"
+ "| column 0 | 0-0 | 1-0 | 2-0 | 3-0 |"
+ "+----------+-----+-----+-----+-----+"
+ "| column 1 | 0-1 | 1-1 | 2-1 | 3-1 |"
+ "+----------+-----+-----+-----+-----+"
+);
+
+test_table!(
+ builder_index_0,
+ Table::builder(Matrix::list::<4, 2>()).index().column(0).build(),
+ "+---+----------+----------+"
+ "| | column 0 | column 1 |"
+ "+---+----------+----------+"
+ "| N | | |"
+ "+---+----------+----------+"
+ "| 0 | 0-0 | 0-1 |"
+ "+---+----------+----------+"
+ "| 1 | 1-0 | 1-1 |"
+ "+---+----------+----------+"
+ "| 2 | 2-0 | 2-1 |"
+ "+---+----------+----------+"
+ "| 3 | 3-0 | 3-1 |"
+ "+---+----------+----------+"
+);
+
+test_table!(
+ builder_index_0_no_name,
+ Table::builder(Matrix::list::<4, 2>()).index().column(0).name(None).build(),
+ "+---+----------+----------+"
+ "| | column 0 | column 1 |"
+ "+---+----------+----------+"
+ "| 0 | 0-0 | 0-1 |"
+ "+---+----------+----------+"
+ "| 1 | 1-0 | 1-1 |"
+ "+---+----------+----------+"
+ "| 2 | 2-0 | 2-1 |"
+ "+---+----------+----------+"
+ "| 3 | 3-0 | 3-1 |"
+ "+---+----------+----------+"
+);
+
+test_table!(
+ builder_index_0_name,
+ Table::builder(Matrix::list::<4, 2>()).index().column(0).name(Some("Hello World".into())).build(),
+ "+-------------+----------+----------+"
+ "| | column 0 | column 1 |"
+ "+-------------+----------+----------+"
+ "| Hello World | | |"
+ "+-------------+----------+----------+"
+ "| 0 | 0-0 | 0-1 |"
+ "+-------------+----------+----------+"
+ "| 1 | 1-0 | 1-1 |"
+ "+-------------+----------+----------+"
+ "| 2 | 2-0 | 2-1 |"
+ "+-------------+----------+----------+"
+ "| 3 | 3-0 | 3-1 |"
+ "+-------------+----------+----------+"
+);
+
+test_table!(
+ builder_index_0_name_transpose,
+ Table::builder(Matrix::list::<4, 2>()).index().column(0).name(Some("Hello World".into())).transpose().build(),
+ "+-------------+-----+-----+-----+-----+"
+ "| Hello World | 0 | 1 | 2 | 3 |"
+ "+-------------+-----+-----+-----+-----+"
+ "| column 0 | 0-0 | 1-0 | 2-0 | 3-0 |"
+ "+-------------+-----+-----+-----+-----+"
+ "| column 1 | 0-1 | 1-1 | 2-1 | 3-1 |"
+ "+-------------+-----+-----+-----+-----+"
+);
+
+test_table!(
+ builder_index_with_no_columns,
+ Builder::from_iter([["1", "2", "3"], ["a", "b", "c"], ["d", "e", "f"]]).index().build(),
+ "+---+---+---+---+"
+ "| | 0 | 1 | 2 |"
+ "+---+---+---+---+"
+ "| 0 | 1 | 2 | 3 |"
+ "+---+---+---+---+"
+ "| 1 | a | b | c |"
+ "+---+---+---+---+"
+ "| 2 | d | e | f |"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ builder_index_with_no_columns_and_name,
+ Builder::from_iter([["1", "2", "3"], ["a", "b", "c"], ["d", "e", "f"]])
+ .index()
+ .name(Some("Hello World".into()))
+ .build(),
+ "+-------------+---+---+---+"
+ "| | 0 | 1 | 2 |"
+ "+-------------+---+---+---+"
+ "| Hello World | | | |"
+ "+-------------+---+---+---+"
+ "| 0 | 1 | 2 | 3 |"
+ "+-------------+---+---+---+"
+ "| 1 | a | b | c |"
+ "+-------------+---+---+---+"
+ "| 2 | d | e | f |"
+ "+-------------+---+---+---+"
+);
+
+test_table!(
+ builder_index_with_no_columns_transpose,
+ Builder::from_iter([["1", "2", "3"], ["a", "b", "c"], ["d", "e", "f"]])
+ .index()
+ .transpose()
+ .build(),
+ "+---+---+---+---+"
+ "| | 0 | 1 | 2 |"
+ "+---+---+---+---+"
+ "| 0 | 1 | a | d |"
+ "+---+---+---+---+"
+ "| 1 | 2 | b | e |"
+ "+---+---+---+---+"
+ "| 2 | 3 | c | f |"
+ "+---+---+---+---+"
+);
+
+test_table!(builder_index_empty, Builder::default().index().build(), "");
+
+test_table!(
+ builder_index_transpose_empty,
+ Builder::default().index().transpose().build(),
+ ""
+);
+
+test_table!(
+ builder_index_invalid_dosnt_panic,
+ Builder::default().index().column(100).build(),
+ ""
+);
+
+test_table!(
+ builder_index_name_doesnt_shown_when_empty,
+ Builder::default()
+ .index()
+ .name(Some("Hello World".into()))
+ .build(),
+ ""
+);
+
+#[test]
+fn builder_index_transpose_transpose() {
+ let data = Matrix::list::<4, 2>();
+ let builder = Table::builder(data).index();
+
+ let orig_table = builder.clone().build().to_string();
+ let two_times_transposed_table = builder.transpose().transpose().build().to_string();
+
+ assert_eq!(orig_table, two_times_transposed_table,);
+}
+
+#[test]
+fn builder_index_no_name_transpose_transpose() {
+ let data = Matrix::list::<4, 2>();
+ let builder = Table::builder(data).index().name(None);
+
+ let orig_table = builder.clone().build().to_string();
+ let two_times_transposed_table = builder.transpose().transpose().build().to_string();
+
+ assert_eq!(orig_table, two_times_transposed_table,);
+}
diff --git a/vendor/tabled/tests/core/iter_table.rs b/vendor/tabled/tests/core/iter_table.rs
new file mode 100644
index 000000000..dd38ec71c
--- /dev/null
+++ b/vendor/tabled/tests/core/iter_table.rs
@@ -0,0 +1,214 @@
+#![cfg(feature = "std")]
+
+use tabled::tables::IterTable;
+
+use crate::matrix::Matrix;
+use testing_table::test_table;
+
+test_table!(
+ iter_table,
+ IterTable::new(Matrix::with_no_frame(3, 3).to_vec()),
+ "+-----+-----+-----+"
+ "| 0-0 | 0-1 | 0-2 |"
+ "+-----+-----+-----+"
+ "| 1-0 | 1-1 | 1-2 |"
+ "+-----+-----+-----+"
+ "| 2-0 | 2-1 | 2-2 |"
+ "+-----+-----+-----+"
+);
+
+test_table!(
+ iter_table_cols,
+ IterTable::new(Matrix::with_no_frame(3, 3).to_vec()).columns(3),
+ "+-----+-----+-----+"
+ "| 0-0 | 0-1 | 0-2 |"
+ "+-----+-----+-----+"
+ "| 1-0 | 1-1 | 1-2 |"
+ "+-----+-----+-----+"
+ "| 2-0 | 2-1 | 2-2 |"
+ "+-----+-----+-----+"
+);
+
+test_table!(
+ iter_table_cols_less,
+ IterTable::new(Matrix::with_no_frame(3, 3).to_vec()).columns(2),
+ "+-----+-----+"
+ "| 0-0 | 0-1 |"
+ "+-----+-----+"
+ "| 1-0 | 1-1 |"
+ "+-----+-----+"
+ "| 2-0 | 2-1 |"
+ "+-----+-----+"
+);
+
+test_table!(
+ iter_table_cols_zero,
+ IterTable::new(Matrix::with_no_frame(3, 3).to_vec()).columns(0),
+ ""
+);
+
+test_table!(
+ iter_table_iterator,
+ {
+ let mut buf = String::new();
+ IterTable::new((0..3).map(|i: usize| (0..5).map(move |j: usize| format!("{i},{j}")))).fmt(&mut buf).unwrap();
+ buf
+ },
+ "+-----+-----+-----+-----+-----+"
+ "| 0,0 | 0,1 | 0,2 | 0,3 | 0,4 |"
+ "+-----+-----+-----+-----+-----+"
+ "| 1,0 | 1,1 | 1,2 | 1,3 | 1,4 |"
+ "+-----+-----+-----+-----+-----+"
+ "| 2,0 | 2,1 | 2,2 | 2,3 | 2,4 |"
+ "+-----+-----+-----+-----+-----+"
+);
+
+test_table!(
+ iter_table_width,
+ IterTable::new(Matrix::with_no_frame(3, 3).to_vec()).width(2),
+ "+----+----+----+"
+ "| 0- | 0- | 0- |"
+ "+----+----+----+"
+ "| 1- | 1- | 1- |"
+ "+----+----+----+"
+ "| 2- | 2- | 2- |"
+ "+----+----+----+"
+);
+
+test_table!(
+ iter_table_height_does_not_work,
+ IterTable::new(Matrix::with_no_frame(3, 3).to_vec()).height(5),
+ "+-----+-----+-----+"
+ "| 0-0 | 0-1 | 0-2 |"
+ "| | | |"
+ "| | | |"
+ "| | | |"
+ "| | | |"
+ "+-----+-----+-----+"
+ "| 1-0 | 1-1 | 1-2 |"
+ "| | | |"
+ "| | | |"
+ "| | | |"
+ "| | | |"
+ "+-----+-----+-----+"
+ "| 2-0 | 2-1 | 2-2 |"
+ "| | | |"
+ "| | | |"
+ "| | | |"
+ "| | | |"
+ "+-----+-----+-----+"
+);
+
+test_table!(
+ iter_table_sniff_0,
+ IterTable::new(Matrix::with_no_frame(3, 3).to_vec()).sniff(0),
+ ""
+);
+
+test_table!(
+ iter_table_multiline,
+ IterTable::new(
+ vec![
+ vec!["0", "1", "2", "3"],
+ vec!["0\n1\n2\n3\n4", "0\n1\n2\n\n\n3\n4", "0\n1\n2\n3\n4\n\n\n", "0\n1\n2\n\n\n3\n4\n"]
+ ]
+ ),
+ "+---+---+---+---+"
+ "| 0 | 1 | 2 | 3 |"
+ "+---+---+---+---+"
+ "| 0 | 0 | 0 | 0 |"
+ "| 1 | 1 | 1 | 1 |"
+ "| 2 | 2 | 2 | 2 |"
+ "| 3 | | 3 | |"
+ "| 4 | | 4 | |"
+ "| | 3 | | 3 |"
+ "| | 4 | | 4 |"
+ "| | | | |"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ iter_table_multiline_sniff_1,
+ IterTable::new(
+ vec![
+ vec!["0", "1", "2", "3"],
+ vec!["0\n1\n2\n3\n4", "0\n1\n2\n\n\n3\n4", "0\n1\n2\n3\n4\n\n\n", "0\n1\n2\n\n\n3\n4\n"]
+ ]
+ )
+ .sniff(1),
+ "+---+---+---+---+\n| 0 | 1 | 2 | 3 |\n+---+---+---+---+\n| 0\n1\n2\n3\n4 | 0\n1\n2\n\n\n3\n4 | 0\n1\n2\n3\n4\n\n\n | 0\n1\n2\n\n\n3\n4\n |\n+---+---+---+---+"
+);
+
+test_table!(
+ iter_table_multiline_sniff_2,
+ IterTable::new(
+ vec![
+ vec!["0", "1", "2", "3"],
+ vec!["0\n1\n2\n3\n4", "0\n1\n2\n\n\n3\n4", "0\n1\n2\n3\n4\n\n\n", "0\n1\n2\n\n\n3\n4\n"],
+ vec!["0\n1\n2\n3\n4", "0\n1\n2\n\n\n3\n4", "0\n1\n2\n3\n4\n\n\n", "0\n1\n2\n\n\n3\n4\n"],
+ ]
+ )
+ .sniff(2),
+ "+---+---+---+---+\n| 0 | 1 | 2 | 3 |\n+---+---+---+---+\n| 0 | 0 | 0 | 0 |\n| 1 | 1 | 1 | 1 |\n| 2 | 2 | 2 | 2 |\n| 3 | | 3 | |\n| 4 | | 4 | |\n| | 3 | | 3 |\n| | 4 | | 4 |\n| | | | |\n+---+---+---+---+\n| 0\n1\n2\n3\n4 | 0\n1\n2\n\n\n3\n4 | 0\n1\n2\n3\n4\n\n\n | 0\n1\n2\n\n\n3\n4\n |\n+---+---+---+---+"
+);
+
+test_table!(
+ iter_table_multiline_height_work,
+ IterTable::new(
+ vec![
+ vec!["0", "1", "2", "3"],
+ vec!["0\n1\n2\n3\n4", "0\n1\n2\n\n\n3\n4", "0\n1\n2\n3\n4\n\n\n", "0\n1\n2\n\n\n3\n4\n"]
+ ]
+ )
+ .height(3)
+ ,
+ "+---+---+---+---+"
+ "| 0 | 1 | 2 | 3 |"
+ "| | | | |"
+ "| | | | |"
+ "+---+---+---+---+"
+ "| 0 | 0 | 0 | 0 |"
+ "| 1 | 1 | 1 | 1 |"
+ "| 2 | 2 | 2 | 2 |"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ iter_table_sniff_cut,
+ IterTable::new(
+ vec![
+ vec!["12", "12", "22", "32"],
+ vec!["0", "0", "0", "0"],
+ vec!["023", "123", "223", "323"],
+ ]
+ )
+ .sniff(2)
+ ,
+ "+----+----+----+----+"
+ "| 12 | 12 | 22 | 32 |"
+ "+----+----+----+----+"
+ "| 0 | 0 | 0 | 0 |"
+ "+----+----+----+----+"
+ "| 02 | 12 | 22 | 32 |"
+ "+----+----+----+----+"
+);
+
+test_table!(
+ iter_table_sniff,
+ IterTable::new(
+ vec![
+ vec!["023", "123", "223", "323"],
+ vec!["12", "12", "22", "32"],
+ vec!["0", "0", "0", "0"],
+ ]
+ )
+ .sniff(2)
+ ,
+ "+-----+-----+-----+-----+"
+ "| 023 | 123 | 223 | 323 |"
+ "+-----+-----+-----+-----+"
+ "| 12 | 12 | 22 | 32 |"
+ "+-----+-----+-----+-----+"
+ "| 0 | 0 | 0 | 0 |"
+ "+-----+-----+-----+-----+"
+);
diff --git a/vendor/tabled/tests/core/mod.rs b/vendor/tabled/tests/core/mod.rs
new file mode 100644
index 000000000..14a5404b7
--- /dev/null
+++ b/vendor/tabled/tests/core/mod.rs
@@ -0,0 +1,7 @@
+mod builder_test;
+mod compact_table;
+mod extended_table_test;
+mod index_test;
+mod iter_table;
+mod pool_table;
+mod table_test;
diff --git a/vendor/tabled/tests/core/pool_table.rs b/vendor/tabled/tests/core/pool_table.rs
new file mode 100644
index 000000000..ee28dae78
--- /dev/null
+++ b/vendor/tabled/tests/core/pool_table.rs
@@ -0,0 +1,634 @@
+#![cfg(feature = "std")]
+
+use tabled::{
+ grid::dimension::{DimensionPriority, PoolTableDimension},
+ settings::{formatting::AlignmentStrategy, Alignment, Margin, Padding, Style},
+ tables::{PoolTable, TableValue},
+};
+
+use crate::matrix::Matrix;
+use testing_table::test_table;
+
+#[cfg(feature = "color")]
+use tabled::grid::color::StaticColor;
+
+test_table!(
+ pool_table,
+ PoolTable::new(Matrix::with_no_frame(3, 3).to_vec()),
+ "+-----+-----+-----+"
+ "| 0-0 | 0-1 | 0-2 |"
+ "+-----+-----+-----+"
+ "| 1-0 | 1-1 | 1-2 |"
+ "+-----+-----+-----+"
+ "| 2-0 | 2-1 | 2-2 |"
+ "+-----+-----+-----+"
+);
+
+test_table!(
+ pool_table_1,
+ PoolTable::new([vec!["111111", "222"], vec!["111", "2233", "1", "2", "3"]]),
+ "+-------------+----------+"
+ "| 111111 | 222 |"
+ "+-----+------++--+---+---+"
+ "| 111 | 2233 | 1 | 2 | 3 |"
+ "+-----+------+---+---+---+"
+);
+
+test_table!(
+ pool_table_2,
+ PoolTable::new([vec!["111", "2233", "1", "2", "3"], vec!["111111", "222"]]),
+ "+-----+------+---+---+---+"
+ "| 111 | 2233 | 1 | 2 | 3 |"
+ "+-----+------++--+---+---+"
+ "| 111111 | 222 |"
+ "+-------------+----------+"
+);
+
+test_table!(
+ pool_table_3,
+ PoolTable::new([vec!["1\n11", "2\n2\n3\n3", "1", "\n2\n", "3"], vec!["11\n111\n1", "2\n2\n2"]]),
+ "+----+---+---+---+---+"
+ "| 1 | 2 | 1 | | 3 |"
+ "| 11 | 2 | | 2 | |"
+ "| | 3 | | | |"
+ "| | 3 | | | |"
+ "+----+---+--++---+---+"
+ "| 11 | 2 |"
+ "| 111 | 2 |"
+ "| 1 | 2 |"
+ "+-----------+--------+"
+);
+
+test_table!(
+ pool_table_4,
+ PoolTable::new([vec!["11\n111\n1", "2\n2\n2"], vec!["1\n11", "2\n2\n3\n3", "1", "\n2\n", "3"]]),
+ "+-----------+--------+"
+ "| 11 | 2 |"
+ "| 111 | 2 |"
+ "| 1 | 2 |"
+ "+----+---+--++---+---+"
+ "| 1 | 2 | 1 | | 3 |"
+ "| 11 | 2 | | 2 | |"
+ "| | 3 | | | |"
+ "| | 3 | | | |"
+ "+----+---+---+---+---+"
+);
+
+test_table!(
+ pool_table_multiline,
+ PoolTable::new([
+ ["1", "2\n2", "3\n3\n3"],
+ ["3\n3\n3", "2\n2", "1"],
+ ["1", "3\n3\n3", "2\n2"]
+ ]),
+ "+---+---+---+"
+ "| 1 | 2 | 3 |"
+ "| | 2 | 3 |"
+ "| | | 3 |"
+ "+---+---+---+"
+ "| 3 | 2 | 1 |"
+ "| 3 | 2 | |"
+ "| 3 | | |"
+ "+---+---+---+"
+ "| 1 | 3 | 2 |"
+ "| | 3 | 2 |"
+ "| | 3 | |"
+ "+---+---+---+"
+);
+
+test_table!(
+ pool_table_value,
+ PoolTable::from(TableValue::Row(vec![
+ TableValue::Column(vec![TableValue::Cell(String::from("0-0")), TableValue::Cell(String::from("0-1")), TableValue::Cell(String::from("0-2"))]),
+ TableValue::Column(vec![TableValue::Cell(String::from("1-0")), TableValue::Cell(String::from("1-1")), TableValue::Cell(String::from("1-2"))]),
+ TableValue::Column(vec![TableValue::Cell(String::from("2-0")), TableValue::Cell(String::from("2-1")), TableValue::Cell(String::from("2-2"))]),
+ ]))
+ .with(Style::modern()),
+ "┌─────┬─────┬─────â”"
+ "│ 0-0 │ 1-0 │ 2-0 │"
+ "├─────┼─────┼─────┤"
+ "│ 0-1 │ 1-1 │ 2-1 │"
+ "├─────┼─────┼─────┤"
+ "│ 0-2 │ 1-2 │ 2-2 │"
+ "└─────┴─────┴─────┘"
+);
+
+test_table!(
+ pool_table_value_1,
+ PoolTable::from(TableValue::Row(vec![
+ TableValue::Column(vec![TableValue::Cell(String::from("0-0")), TableValue::Cell(String::from("0-1")), TableValue::Cell(String::from("0-2"))]),
+ TableValue::Column(vec![TableValue::Cell(String::from("1-0")), TableValue::Cell(String::from("1-1")), TableValue::Cell(String::from("1-2"))]),
+ TableValue::Column(vec![
+ TableValue::Column(vec![TableValue::Cell(String::from("2-01")), TableValue::Cell(String::from("2-02")), TableValue::Cell(String::from("2-03"))]),
+ TableValue::Cell(String::from("2-1")),
+ TableValue::Cell(String::from("2-2")),
+ ]),
+ ]))
+ .with(Style::modern()),
+ "┌─────┬─────┬──────â”"
+ "│ 0-0 │ 1-0 │ 2-01 │"
+ "│ │ ├──────┤"
+ "│ │ │ 2-02 │"
+ "├─────┼─────┼──────┤"
+ "│ 0-1 │ 1-1 │ 2-03 │"
+ "│ │ ├──────┤"
+ "├─────┼─────┤ 2-1 │"
+ "│ 0-2 │ 1-2 ├──────┤"
+ "│ │ │ 2-2 │"
+ "└─────┴─────┴──────┘"
+);
+
+test_table!(
+ pool_table_value_2,
+ PoolTable::from(TableValue::Row(vec![
+ TableValue::Column(vec![TableValue::Cell(String::from("0-0")), TableValue::Cell(String::from("0-1")), TableValue::Cell(String::from("0-2"))]),
+ TableValue::Column(vec![
+ TableValue::Row(vec![TableValue::Cell(String::from("2-01")), TableValue::Cell(String::from("2-02")), TableValue::Cell(String::from("2-03"))]),
+ TableValue::Column(vec![TableValue::Cell(String::from("2-01")), TableValue::Cell(String::from("2-02")), TableValue::Cell(String::from("2-03"))]),
+ TableValue::Cell(String::from("1-1")),
+ TableValue::Cell(String::from("1-2"))
+ ]),
+ TableValue::Column(vec![
+ TableValue::Column(vec![TableValue::Cell(String::from("2-01")), TableValue::Cell(String::from("2-02")), TableValue::Cell(String::from("2-03"))]),
+ TableValue::Cell(String::from("2-1")),
+ TableValue::Cell(String::from("2-2"))
+ ]),
+ ]))
+ .with(Style::modern()),
+ "┌─────┬──────┬──────┬──────┬──────â”"
+ "│ 0-0 │ 2-01 │ 2-02 │ 2-03 │ 2-01 │"
+ "│ ├──────┴──────┴──────┤ │"
+ "│ │ 2-01 ├──────┤"
+ "├─────┼────────────────────┤ 2-02 │"
+ "│ 0-1 │ 2-02 ├──────┤"
+ "│ ├────────────────────┤ 2-03 │"
+ "│ │ 2-03 ├──────┤"
+ "├─────┼────────────────────┤ 2-1 │"
+ "│ 0-2 │ 1-1 │ │"
+ "│ ├────────────────────┼──────┤"
+ "│ │ 1-2 │ 2-2 │"
+ "└─────┴────────────────────┴──────┘"
+);
+
+test_table!(
+ pool_table_value_3,
+ PoolTable::from(TableValue::Row(vec![
+ TableValue::Column(vec![TableValue::Cell(String::from("0-0")), TableValue::Cell(String::from("0-1")), TableValue::Cell(String::from("0-2"))]),
+ TableValue::Column(vec![
+ TableValue::Row(vec![TableValue::Cell(String::from("2-01")), TableValue::Cell(String::from("2-02")), TableValue::Cell(String::from("2-03"))]),
+ TableValue::Column(vec![TableValue::Cell(String::from("2-01")), TableValue::Cell(String::from("2-02")), TableValue::Cell(String::from("2-03"))]),
+ TableValue::Cell(String::from("1-1")),
+ TableValue::Row(vec![TableValue::Cell(String::from("2-01")), TableValue::Cell(String::from("2-02")), TableValue::Cell(String::from("2-03"))]),
+ TableValue::Cell(String::from("1-2"))
+ ]),
+ TableValue::Column(vec![
+ TableValue::Column(vec![TableValue::Cell(String::from("2-\n0\n1")), TableValue::Cell(String::from("2\n-\n0\n2")), TableValue::Cell(String::from("2-03"))]),
+ TableValue::Cell(String::from("2-1")),
+ TableValue::Column(vec![TableValue::Cell(String::from("2-0\n1")), TableValue::Cell(String::from("2-02")), TableValue::Cell(String::from("2-03"))]),
+ TableValue::Cell(String::from("2-2"))
+ ]),
+ ]))
+ .with(Style::modern()),
+ "┌─────┬──────┬──────┬──────┬──────â”"
+ "│ 0-0 │ 2-01 │ 2-02 │ 2-03 │ 2- │"
+ "│ │ │ │ │ 0 │"
+ "│ │ │ │ │ 1 │"
+ "│ ├──────┴──────┴──────┼──────┤"
+ "│ │ 2-01 │ 2 │"
+ "│ │ │ - │"
+ "│ ├────────────────────┤ 0 │"
+ "├─────┤ 2-02 │ 2 │"
+ "│ 0-1 │ ├──────┤"
+ "│ ├────────────────────┤ 2-03 │"
+ "│ │ 2-03 ├──────┤"
+ "│ ├────────────────────┤ 2-1 │"
+ "│ │ 1-1 ├──────┤"
+ "│ │ │ 2-0 │"
+ "├─────┤ │ 1 │"
+ "│ 0-2 ├──────┬──────┬──────┼──────┤"
+ "│ │ 2-01 │ 2-02 │ 2-03 │ 2-02 │"
+ "│ │ │ │ ├──────┤"
+ "│ ├──────┴──────┴──────┤ 2-03 │"
+ "│ │ 1-2 ├──────┤"
+ "│ │ │ 2-2 │"
+ "└─────┴────────────────────┴──────┘"
+);
+
+test_table!(
+ pool_table_example,
+ {
+ let data = vec![
+ vec!["Hello World", "Hello World", "Hello World"],
+ vec!["Hello", "", "Hello"],
+ vec!["W", "o", "r", "l", "d"],
+ ];
+
+ let data = TableValue::Column(
+ data.into_iter()
+ .map(|row| {
+ TableValue::Row(
+ row.into_iter()
+ .map(|text| TableValue::Cell(text.to_owned()))
+ .collect(),
+ )
+ })
+ .collect(),
+ );
+
+ PoolTable::from(data)
+ .with(Style::modern())
+ .with(Alignment::center())
+ .to_string()
+ },
+ "┌─────────────┬─────────────┬─────────────â”"
+ "│ Hello World │ Hello World │ Hello World │"
+ "├─────────────┴─┬──────────┬┴─────────────┤"
+ "│ Hello │ │ Hello │"
+ "├────────┬──────┴─┬───────┬┴──────┬───────┤"
+ "│ W │ o │ r │ l │ d │"
+ "└────────┴────────┴───────┴───────┴───────┘"
+);
+
+test_table!(
+ pool_table_value_empty_row,
+ PoolTable::from(TableValue::Row(vec![]))
+ .with(Style::modern()),
+ "┌──â”"
+ "│ │"
+ "└──┘"
+);
+
+test_table!(
+ pool_table_value_empty_column,
+ PoolTable::from(TableValue::Column(vec![]))
+ .with(Style::modern()),
+ "┌──â”"
+ "│ │"
+ "└──┘"
+);
+
+test_table!(
+ pool_table_value_empty_cell,
+ PoolTable::from(TableValue::Cell(String::from("")))
+ .with(Style::modern()),
+ "┌──â”"
+ "│ │"
+ "└──┘"
+);
+
+test_table!(
+ pool_table_padding,
+ PoolTable::new(Matrix::with_no_frame(3, 3).to_vec()).with(Padding::new(1, 2, 3, 4)),
+ "+------+------+------+"
+ "| | | |"
+ "| | | |"
+ "| | | |"
+ "| 0-0 | 0-1 | 0-2 |"
+ "| | | |"
+ "| | | |"
+ "| | | |"
+ "| | | |"
+ "+------+------+------+"
+ "| | | |"
+ "| | | |"
+ "| | | |"
+ "| 1-0 | 1-1 | 1-2 |"
+ "| | | |"
+ "| | | |"
+ "| | | |"
+ "| | | |"
+ "+------+------+------+"
+ "| | | |"
+ "| | | |"
+ "| | | |"
+ "| 2-0 | 2-1 | 2-2 |"
+ "| | | |"
+ "| | | |"
+ "| | | |"
+ "| | | |"
+ "+------+------+------+"
+);
+
+#[cfg(feature = "color")]
+test_table!(
+ pool_table_padding_2,
+ PoolTable::new(Matrix::with_no_frame(3, 3).to_vec())
+ .with(Padding::new(1, 2, 3, 4)
+ .fill('!', '@', '#', '$')
+ .colorize(
+ StaticColor::new("\u{1b}[34m", "\u{1b}[39m"),
+ StaticColor::new("\u{1b}[34m", "\u{1b}[39m"),
+ StaticColor::new("\u{1b}[34m", "\u{1b}[39m"),
+ StaticColor::new("\u{1b}[34m", "\u{1b}[39m"),
+ )
+ ),
+ "+------+------+------+"
+ "|\u{1b}[34m######\u{1b}[39m|\u{1b}[34m######\u{1b}[39m|\u{1b}[34m######\u{1b}[39m|"
+ "|\u{1b}[34m######\u{1b}[39m|\u{1b}[34m######\u{1b}[39m|\u{1b}[34m######\u{1b}[39m|"
+ "|\u{1b}[34m######\u{1b}[39m|\u{1b}[34m######\u{1b}[39m|\u{1b}[34m######\u{1b}[39m|"
+ "|\u{1b}[34m!\u{1b}[39m0-0\u{1b}[34m@@\u{1b}[39m|\u{1b}[34m!\u{1b}[39m0-1\u{1b}[34m@@\u{1b}[39m|\u{1b}[34m!\u{1b}[39m0-2\u{1b}[34m@@\u{1b}[39m|"
+ "|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|"
+ "|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|"
+ "|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|"
+ "|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|"
+ "+------+------+------+"
+ "|\u{1b}[34m######\u{1b}[39m|\u{1b}[34m######\u{1b}[39m|\u{1b}[34m######\u{1b}[39m|"
+ "|\u{1b}[34m######\u{1b}[39m|\u{1b}[34m######\u{1b}[39m|\u{1b}[34m######\u{1b}[39m|"
+ "|\u{1b}[34m######\u{1b}[39m|\u{1b}[34m######\u{1b}[39m|\u{1b}[34m######\u{1b}[39m|"
+ "|\u{1b}[34m!\u{1b}[39m1-0\u{1b}[34m@@\u{1b}[39m|\u{1b}[34m!\u{1b}[39m1-1\u{1b}[34m@@\u{1b}[39m|\u{1b}[34m!\u{1b}[39m1-2\u{1b}[34m@@\u{1b}[39m|"
+ "|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|"
+ "|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|"
+ "|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|"
+ "|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|"
+ "+------+------+------+"
+ "|\u{1b}[34m######\u{1b}[39m|\u{1b}[34m######\u{1b}[39m|\u{1b}[34m######\u{1b}[39m|"
+ "|\u{1b}[34m######\u{1b}[39m|\u{1b}[34m######\u{1b}[39m|\u{1b}[34m######\u{1b}[39m|"
+ "|\u{1b}[34m######\u{1b}[39m|\u{1b}[34m######\u{1b}[39m|\u{1b}[34m######\u{1b}[39m|"
+ "|\u{1b}[34m!\u{1b}[39m2-0\u{1b}[34m@@\u{1b}[39m|\u{1b}[34m!\u{1b}[39m2-1\u{1b}[34m@@\u{1b}[39m|\u{1b}[34m!\u{1b}[39m2-2\u{1b}[34m@@\u{1b}[39m|"
+ "|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|"
+ "|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|"
+ "|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|"
+ "|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|\u{1b}[34m$$$$$$\u{1b}[39m|"
+ "+------+------+------+"
+);
+
+test_table!(
+ pool_table_margin,
+ PoolTable::new(Matrix::with_no_frame(3, 3).to_vec()).with(Margin::new(1, 2, 3, 4).fill('!', '@', '#', '$')),
+ "!###################@@"
+ "!###################@@"
+ "!###################@@"
+ "!+-----+-----+-----+@@"
+ "!| 0-0 | 0-1 | 0-2 |@@"
+ "!+-----+-----+-----+@@"
+ "!| 1-0 | 1-1 | 1-2 |@@"
+ "!+-----+-----+-----+@@"
+ "!| 2-0 | 2-1 | 2-2 |@@"
+ "!+-----+-----+-----+@@"
+ "!$$$$$$$$$$$$$$$$$$$@@"
+ "!$$$$$$$$$$$$$$$$$$$@@"
+ "!$$$$$$$$$$$$$$$$$$$@@"
+ "!$$$$$$$$$$$$$$$$$$$@@"
+);
+
+test_table!(
+ pool_table_alignment_bottom,
+ PoolTable::new([
+ ["1", "2\n2", "3\n3\n3"],
+ ["3\n3\n3", "2\n2", "1"],
+ ["1", "3\n3\n3", "2\n2"]
+ ])
+ .with(Alignment::bottom()),
+ "+---+---+---+"
+ "| | | 3 |"
+ "| | 2 | 3 |"
+ "| 1 | 2 | 3 |"
+ "+---+---+---+"
+ "| 3 | | |"
+ "| 3 | 2 | |"
+ "| 3 | 2 | 1 |"
+ "+---+---+---+"
+ "| | 3 | |"
+ "| | 3 | 2 |"
+ "| 1 | 3 | 2 |"
+ "+---+---+---+"
+);
+
+test_table!(
+ pool_table_alignment_center_vertical,
+ PoolTable::new([
+ ["1", "2\n2", "3\n3\n3"],
+ ["3\n3\n3", "2\n2", "1"],
+ ["1", "3\n3\n3", "2\n2"]
+ ])
+ .with(Alignment::center_vertical()),
+ "+---+---+---+"
+ "| | 2 | 3 |"
+ "| 1 | 2 | 3 |"
+ "| | | 3 |"
+ "+---+---+---+"
+ "| 3 | 2 | |"
+ "| 3 | 2 | 1 |"
+ "| 3 | | |"
+ "+---+---+---+"
+ "| | 3 | 2 |"
+ "| 1 | 3 | 2 |"
+ "| | 3 | |"
+ "+---+---+---+"
+);
+
+test_table!(
+ pool_table_alignment_right,
+ PoolTable::new([
+ ["1 ", "2\n2 ", "3\n3\n3"],
+ ["3\n3\n3", "2\n2", "1"],
+ ["1", "3\n3\n3 ", "2\n2"]
+ ])
+ .with(Alignment::right()),
+ "+------------------------+----------+---+"
+ "| 1 | 2 | 3 |"
+ "| | 2 | 3 |"
+ "| | | 3 |"
+ "+-------------+----------+-+--------+---+"
+ "| 3 | 2 | 1 |"
+ "| 3 | 2 | |"
+ "| 3 | | |"
+ "+------+------+------------+-----+------+"
+ "| 1 | 3 | 2 |"
+ "| | 3 | 2 |"
+ "| | 3 | |"
+ "+------+-------------------------+------+"
+);
+
+test_table!(
+ pool_table_alignment_right_per_line,
+ PoolTable::new([
+ ["1 ", "2\n2 ", "3\n3\n3"],
+ ["3\n3\n3", "2\n2", "1"],
+ ["1", "3\n3\n3 ", "2\n2"]
+ ])
+ .with(Alignment::right())
+ .with(AlignmentStrategy::PerLine),
+ "+------------------------+----------+---+"
+ "| 1 | 2 | 3 |"
+ "| | 2 | 3 |"
+ "| | | 3 |"
+ "+-------------+----------+-+--------+---+"
+ "| 3 | 2 | 1 |"
+ "| 3 | 2 | |"
+ "| 3 | | |"
+ "+------+------+------------+-----+------+"
+ "| 1 | 3 | 2 |"
+ "| | 3 | 2 |"
+ "| | 3 | |"
+ "+------+-------------------------+------+"
+);
+
+test_table!(
+ pool_table_alignment_center_horizontal,
+ PoolTable::new([
+ ["1 ", "2\n2 ", "3\n3\n3"],
+ ["3\n3\n3", "2\n2", "1"],
+ ["1", "3\n3\n3 ", "2\n2"]
+ ])
+ .with(Alignment::center()),
+ "+------------------------+----------+---+"
+ "| 1 | 2 | 3 |"
+ "| | 2 | 3 |"
+ "| | | 3 |"
+ "+-------------+----------+-+--------+---+"
+ "| 3 | 2 | 1 |"
+ "| 3 | 2 | |"
+ "| 3 | | |"
+ "+------+------+------------+-----+------+"
+ "| 1 | 3 | 2 |"
+ "| | 3 | 2 |"
+ "| | 3 | |"
+ "+------+-------------------------+------+"
+);
+
+test_table!(
+ pool_table_alignment_center_horizontal_line_strategy,
+ PoolTable::new([
+ ["1 ", "2\n22222", "3\n3\n3"],
+ ["3\n3\n3", "2\n2", "1"],
+ ["1", "3\n3\n3 ", "2\n2"]
+ ])
+ .with(Alignment::center())
+ .with(AlignmentStrategy::PerLine),
+ "+------------------------+-------+---+"
+ "| 1 | 2 | 3 |"
+ "| | 22222 | 3 |"
+ "| | | 3 |"
+ "+------------+-----------+-------+---+"
+ "| 3 | 2 | 1 |"
+ "| 3 | 2 | |"
+ "| 3 | | |"
+ "+-----+------+-----------+-----+-----+"
+ "| 1 | 3 | 2 |"
+ "| | 3 | 2 |"
+ "| | 3 | |"
+ "+-----+------------------------+-----+"
+);
+
+test_table!(
+ pool_table_style_empty,
+ PoolTable::new(Matrix::with_no_frame(3, 3).to_vec()).with(Style::empty()),
+ " 0-0 0-1 0-2 "
+ " 1-0 1-1 1-2 "
+ " 2-0 2-1 2-2 "
+);
+
+test_table!(
+ pool_table_style_markdown,
+ PoolTable::new(Matrix::with_no_frame(3, 3).to_vec()).with(Style::markdown()),
+ "| 0-0 | 0-1 | 0-2 |"
+ "| 1-0 | 1-1 | 1-2 |"
+ "| 2-0 | 2-1 | 2-2 |"
+);
+
+test_table!(
+ pool_table_style_rounded,
+ PoolTable::new(Matrix::with_no_frame(3, 3).to_vec()).with(Style::rounded()),
+ "╭─────┬─────┬─────╮"
+ "│ 0-0 │ 0-1 │ 0-2 │"
+ " ───── ───── ───── "
+ "│ 1-0 │ 1-1 │ 1-2 │"
+ " ───── ───── ───── "
+ "│ 2-0 │ 2-1 │ 2-2 │"
+ "╰─────┴─────┴─────╯"
+);
+
+test_table!(
+ pool_table_dim_ctrl_0,
+ PoolTable::from(TableValue::Row(vec![
+ TableValue::Column(vec![TableValue::Cell(String::from("0-0")), TableValue::Cell(String::from("0-1")), TableValue::Cell(String::from("0-2"))]),
+ TableValue::Column(vec![TableValue::Cell(String::from("1-0")), TableValue::Cell(String::from("1-1")), TableValue::Cell(String::from("1-2"))]),
+ TableValue::Column(vec![
+ TableValue::Column(vec![TableValue::Cell(String::from("2-01")), TableValue::Cell(String::from("2-02")), TableValue::Cell(String::from("2-03"))]),
+ TableValue::Cell(String::from("2-1")),
+ TableValue::Cell(String::from("2-2")),
+ ]),
+ ]))
+ .with(PoolTableDimension::new(DimensionPriority::Last, DimensionPriority::Last)),
+ "+-----+-----+------+"
+ "| 0-0 | 1-0 | 2-01 |"
+ "+-----+-----+------+"
+ "| 0-1 | 1-1 | 2-02 |"
+ "+-----+-----+------+"
+ "| 0-2 | 1-2 | 2-03 |"
+ "| | +------+"
+ "| | | 2-1 |"
+ "| | +------+"
+ "| | | 2-2 |"
+ "+-----+-----+------+"
+);
+
+test_table!(
+ pool_table_dim_ctrl_1,
+ PoolTable::new([
+ ["1 ", "2\n2 ", "3\n3\n3"],
+ ["3\n3\n3", "2\n2", "1"],
+ ["1", "3\n3\n3 ", "2\n2"]
+ ])
+ .with(PoolTableDimension::new(DimensionPriority::List, DimensionPriority::List)),
+ "+------------------------+----------+---+"
+ "| 1 | 2 | 3 |"
+ "| | 2 | 3 |"
+ "| | | 3 |"
+ "+-------------+----------+-+--------+---+"
+ "| 3 | 2 | 1 |"
+ "| 3 | 2 | |"
+ "| 3 | | |"
+ "+------+------+------------+-----+------+"
+ "| 1 | 3 | 2 |"
+ "| | 3 | 2 |"
+ "| | 3 | |"
+ "+------+-------------------------+------+"
+);
+
+test_table!(
+ pool_table_2_columns_1_cell,
+ PoolTable::from(TableValue::Row(vec![
+ TableValue::Column(vec![
+ TableValue::Cell(String::from("0-0")),
+ TableValue::Cell(String::from("0-1")),
+ TableValue::Cell(String::from("0-2")),
+ TableValue::Cell(String::from("0-3")),
+ TableValue::Cell(String::from("0-4")),
+ TableValue::Cell(String::from("0-5")),
+ ]),
+ TableValue::Column(vec![
+ TableValue::Cell(String::from("1-0")),
+ TableValue::Cell(String::from("1-1")),
+ TableValue::Cell(String::from("1-2")),
+ TableValue::Cell(String::from("1-3")),
+ TableValue::Cell(String::from("1-4")),
+ TableValue::Cell(String::from("1-6")),
+ TableValue::Cell(String::from("1-7")),
+ TableValue::Cell(String::from("1-8")),
+ TableValue::Cell(String::from("1-9")),
+ ]),
+ TableValue::Cell(String::from("2-0")),
+ ]))
+ .with(PoolTableDimension::new(DimensionPriority::Last, DimensionPriority::Last)),
+ "+-----+-----+-----+"
+ "| 0-0 | 1-0 | 2-0 |"
+ "+-----+-----+ |"
+ "| 0-1 | 1-1 | |"
+ "+-----+-----+ |"
+ "| 0-2 | 1-2 | |"
+ "+-----+-----+ |"
+ "| 0-3 | 1-3 | |"
+ "+-----+-----+ |"
+ "| 0-4 | 1-4 | |"
+ "+-----+-----+ |"
+ "| 0-5 | 1-6 | |"
+ "| +-----+ |"
+ "| | 1-7 | |"
+ "| +-----+ |"
+ "| | 1-8 | |"
+ "| +-----+ |"
+ "| | 1-9 | |"
+ "+-----+-----+-----+"
+);
diff --git a/vendor/tabled/tests/core/table_test.rs b/vendor/tabled/tests/core/table_test.rs
new file mode 100644
index 000000000..b949626bb
--- /dev/null
+++ b/vendor/tabled/tests/core/table_test.rs
@@ -0,0 +1,847 @@
+#![cfg(feature = "std")]
+
+use std::iter::FromIterator;
+
+use tabled::{
+ builder::Builder,
+ settings::{formatting::Charset, Height, Modify, Padding, Settings, Style, Width},
+ Table,
+};
+
+use crate::matrix::Matrix;
+use testing_table::test_table;
+
+mod default_types {
+ use super::*;
+
+ test_table!(
+ table_str_vec,
+ Table::new(vec!["hello", "world"]),
+ "+-------+"
+ "| &str |"
+ "+-------+"
+ "| hello |"
+ "+-------+"
+ "| world |"
+ "+-------+"
+ );
+
+ test_table!(
+ table_char_vec,
+ Table::new(vec!['a', 'b', 'c']),
+ "+------+"
+ "| char |"
+ "+------+"
+ "| a |"
+ "+------+"
+ "| b |"
+ "+------+"
+ "| c |"
+ "+------+"
+ );
+
+ test_table!(
+ table_bool_vec,
+ Table::new(vec![true, false, true]),
+ "+-------+"
+ "| bool |"
+ "+-------+"
+ "| true |"
+ "+-------+"
+ "| false |"
+ "+-------+"
+ "| true |"
+ "+-------+"
+ );
+
+ test_table!(
+ table_usize_vec,
+ Table::new(vec![0usize, 1usize, 2usize]),
+ "+-------+"
+ "| usize |"
+ "+-------+"
+ "| 0 |"
+ "+-------+"
+ "| 1 |"
+ "+-------+"
+ "| 2 |"
+ "+-------+"
+ );
+
+ test_table!(
+ table_isize_vec,
+ Table::new(vec![0isize, 1isize, 2isize]),
+ "+-------+"
+ "| isize |"
+ "+-------+"
+ "| 0 |"
+ "+-------+"
+ "| 1 |"
+ "+-------+"
+ "| 2 |"
+ "+-------+"
+ );
+
+ test_table!(
+ table_u8_vec,
+ Table::new(vec![0u8, 1u8, 2u8]),
+ "+----+"
+ "| u8 |"
+ "+----+"
+ "| 0 |"
+ "+----+"
+ "| 1 |"
+ "+----+"
+ "| 2 |"
+ "+----+"
+ );
+
+ test_table!(
+ table_u16_vec,
+ Table::new(vec![0u16, 1u16, 2u16]),
+ "+-----+"
+ "| u16 |"
+ "+-----+"
+ "| 0 |"
+ "+-----+"
+ "| 1 |"
+ "+-----+"
+ "| 2 |"
+ "+-----+"
+ );
+
+ test_table!(
+ table_u32_vec,
+ Table::new(vec![0u32, 1u32, 2u32]),
+ "+-----+"
+ "| u32 |"
+ "+-----+"
+ "| 0 |"
+ "+-----+"
+ "| 1 |"
+ "+-----+"
+ "| 2 |"
+ "+-----+"
+ );
+
+ test_table!(
+ table_u64_vec,
+ Table::new(vec![0u64, 1u64, 2u64]),
+ "+-----+"
+ "| u64 |"
+ "+-----+"
+ "| 0 |"
+ "+-----+"
+ "| 1 |"
+ "+-----+"
+ "| 2 |"
+ "+-----+"
+ );
+
+ test_table!(
+ table_u128_vec,
+ Table::new(vec![0u128, 1u128, 2u128]),
+ "+------+"
+ "| u128 |"
+ "+------+"
+ "| 0 |"
+ "+------+"
+ "| 1 |"
+ "+------+"
+ "| 2 |"
+ "+------+"
+ );
+
+ test_table!(
+ table_i8_vec,
+ Table::new(vec![0i8, 1i8, 2i8]),
+ "+----+"
+ "| i8 |"
+ "+----+"
+ "| 0 |"
+ "+----+"
+ "| 1 |"
+ "+----+"
+ "| 2 |"
+ "+----+"
+ );
+
+ test_table!(
+ table_i16_vec,
+ Table::new(vec![0i16, 1, 2]),
+ "+-----+"
+ "| i16 |"
+ "+-----+"
+ "| 0 |"
+ "+-----+"
+ "| 1 |"
+ "+-----+"
+ "| 2 |"
+ "+-----+"
+ );
+
+ test_table!(
+ table_i32_vec,
+ Table::new(vec![0i32, 1, 2]),
+ "+-----+"
+ "| i32 |"
+ "+-----+"
+ "| 0 |"
+ "+-----+"
+ "| 1 |"
+ "+-----+"
+ "| 2 |"
+ "+-----+"
+ );
+
+ test_table!(
+ table_i64_vec,
+ Table::new(vec![0i64, 1, 2]),
+ "+-----+"
+ "| i64 |"
+ "+-----+"
+ "| 0 |"
+ "+-----+"
+ "| 1 |"
+ "+-----+"
+ "| 2 |"
+ "+-----+"
+ );
+
+ test_table!(
+ table_i128_vec,
+ Table::new(vec![0i128, 1, 2]),
+ "+------+"
+ "| i128 |"
+ "+------+"
+ "| 0 |"
+ "+------+"
+ "| 1 |"
+ "+------+"
+ "| 2 |"
+ "+------+"
+ );
+
+ test_table!(
+ table_array,
+ Table::new(vec![[0, 1, 2], [3, 4, 5], [6, 7, 8]]),
+ "+---+---+---+"
+ "| 0 | 1 | 2 |"
+ "+---+---+---+"
+ "| 0 | 1 | 2 |"
+ "+---+---+---+"
+ "| 3 | 4 | 5 |"
+ "+---+---+---+"
+ "| 6 | 7 | 8 |"
+ "+---+---+---+"
+ );
+}
+
+test_table!(
+ table_tuple,
+ Table::new(vec![("we are in", 2020)]),
+ "+-----------+------+"
+ "| &str | i32 |"
+ "+-----------+------+"
+ "| we are in | 2020 |"
+ "+-----------+------+"
+);
+
+test_table!(
+ table_single_tuple,
+ Table::new(vec![(2020,)]),
+ "+------+"
+ "| i32 |"
+ "+------+"
+ "| 2020 |"
+ "+------+"
+);
+
+test_table!(
+ table_tuple_vec,
+ #[allow(clippy::needless_borrow)]
+ Table::new(&[(0, "Monday"), (1, "Thursday")]),
+ "+-----+----------+"
+ "| i32 | &str |"
+ "+-----+----------+"
+ "| 0 | Monday |"
+ "+-----+----------+"
+ "| 1 | Thursday |"
+ "+-----+----------+"
+);
+
+test_table!(
+ build_table_from_iterator,
+ Matrix::new(3, 3).with(Style::psql()),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ multiline_table_test_0,
+ Table::new([["This is the 0.19 release of Nushell. If you'd like to read more about it, please check out: https://www.nushell.sh/blog/2020/09/01/nushell_0_19.html\r\n\r\nFor convenience, we are providing full builds for Windows, Linux, and macOS. These are the \"all extra features\" builds, so be sure you have the requirements to enable all capabilities: https://github.com/nushell/book/blob/master/en/installation.md#dependencies\r\n"]])
+ .with(Charset::clean())
+ .with(Style::modern()),
+ r#"┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────â”"#
+ r#"│ 0 │"#
+ r#"├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤"#
+ r#"│ This is the 0.19 release of Nushell. If you'd like to read more about it, please check out: https://www.nushell.sh/blog/2020/09/01/nushell_0_19.html │"#
+ r#"│ │"#
+ r#"│ For convenience, we are providing full builds for Windows, Linux, and macOS. These are the "all extra features" builds, so be sure you have the requirements to enable all capabilities: https://github.com/nushell/book/blob/master/en/installation.md#dependencies │"#
+ r#"│ │"#
+ r#"└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘"#
+);
+
+test_table!(
+ multiline_table_test_1,
+ Table::new([["This is the 0.19 release of Nushell. If you'd like to read more about it, please check out: https://www.nushell.sh/blog/2020/09/01/nushell_0_19.html\r\n\r\nFor convenience, we are providing full builds for Windows, Linux, and macOS. These are the \"all extra features\" builds, so be sure you have the requirements to enable all capabilities: https://github.com/nushell/book/blob/master/en/installation.md#dependencies\r\n"]])
+ .with(Charset::clean())
+ .with(Style::modern())
+ .with(Width::wrap(100)),
+ "┌──────────────────────────────────────────────────────────────────────────────────────────────────â”"
+ "│ 0 │"
+ "├──────────────────────────────────────────────────────────────────────────────────────────────────┤"
+ "│ This is the 0.19 release of Nushell. If you'd like to read more about it, please check out: http │"
+ "│ s://www.nushell.sh/blog/2020/09/01/nushell_0_19.html │"
+ "│ │"
+ "│ For convenience, we are providing full build │"
+ "│ s for Windows, Linux, and macOS. These are the \"all extra features\" builds, so be sure you have │"
+ "│ the requirements to enable all capabilities: https://github.com/nushell/book/blob/master/en/inst │"
+ "│ allation.md#dependencies │"
+ "│ │"
+ "└──────────────────────────────────────────────────────────────────────────────────────────────────┘"
+);
+
+test_table!(
+ multiline_table_test_2,
+ Table::new([["This is the 0.19 release of Nushell. If you'd like to read more about it, please check out: https://www.nushell.sh/blog/2020/09/01/nushell_0_19.html\r\n\r\nFor convenience, we are providing full builds for Windows, Linux, and macOS. These are the \"all extra features\" builds, so be sure you have the requirements to enable all capabilities: https://github.com/nushell/book/blob/master/en/installation.md#dependencies\r\n"]])
+ .with(Modify::new((1, 0)).with(Charset::clean()))
+ .with(Style::modern())
+ .with(Width::wrap(100)),
+ "┌──────────────────────────────────────────────────────────────────────────────────────────────────â”"
+ "│ 0 │"
+ "├──────────────────────────────────────────────────────────────────────────────────────────────────┤"
+ "│ This is the 0.19 release of Nushell. If you'd like to read more about it, please check out: http │"
+ "│ s://www.nushell.sh/blog/2020/09/01/nushell_0_19.html │"
+ "│ │"
+ "│ For convenience, we are providing full build │"
+ "│ s for Windows, Linux, and macOS. These are the \"all extra features\" builds, so be sure you have │"
+ "│ the requirements to enable all capabilities: https://github.com/nushell/book/blob/master/en/inst │"
+ "│ allation.md#dependencies │"
+ "│ │"
+ "└──────────────────────────────────────────────────────────────────────────────────────────────────┘"
+);
+
+#[cfg(feature = "derive")]
+mod derived {
+ use super::*;
+
+ use std::collections::{BTreeMap, BTreeSet};
+
+ use tabled::Tabled;
+
+ #[derive(Tabled)]
+ struct TestType {
+ f1: u8,
+ f2: &'static str,
+ }
+
+ test_table!(
+ table_vector_structures,
+ Table::new([TestType { f1: 0, f2: "0" }, TestType { f1: 1, f2: "1" }]),
+ "+----+----+"
+ "| f1 | f2 |"
+ "+----+----+"
+ "| 0 | 0 |"
+ "+----+----+"
+ "| 1 | 1 |"
+ "+----+----+"
+ );
+
+ test_table!(
+ table_empty_vector_structures,
+ Table::new({let v: Vec<TestType> = Vec::new(); v}),
+ "+----+----+"
+ "| f1 | f2 |"
+ "+----+----+"
+ );
+
+ test_table!(
+ table_option,
+ Table::new(Some(TestType { f1: 0, f2: "0" })),
+ "+----+----+"
+ "| f1 | f2 |"
+ "+----+----+"
+ "| 0 | 0 |"
+ "+----+----+"
+ );
+
+ test_table!(
+ table_option_none,
+ Table::new(Option::<TestType>::None),
+ "+----+----+"
+ "| f1 | f2 |"
+ "+----+----+"
+ );
+
+ test_table!(
+ table_tuple_with_structure_vec,
+ Table::new([(0, TestType { f1: 0, f2: "0str" }), (1, TestType { f1: 1, f2: "1str" })]),
+ "+-----+----+------+"
+ "| i32 | f1 | f2 |"
+ "+-----+----+------+"
+ "| 0 | 0 | 0str |"
+ "+-----+----+------+"
+ "| 1 | 1 | 1str |"
+ "+-----+----+------+"
+ );
+
+ test_table!(
+ table_vector_structures_with_hidden_tabled,
+ Table::new({
+ #[derive(Tabled)]
+ struct St {
+ #[allow(dead_code)]
+ #[tabled(skip)]
+ f1: u8,
+ f2: &'static str,
+ }
+
+ vec![St { f1: 0, f2: "0" }, St { f1: 1, f2: "1" }]
+ }),
+ "+----+"
+ "| f2 |"
+ "+----+"
+ "| 0 |"
+ "+----+"
+ "| 1 |"
+ "+----+"
+ );
+
+ test_table!(
+ table_enum,
+ Table::new({
+ #[derive(Tabled)]
+ enum Letters {
+ Vowels { character: char, lang: u8 },
+ Consonant(char),
+ Digit,
+ }
+
+ vec![
+ Letters::Vowels {
+ character: 'a',
+ lang: 0,
+ },
+ Letters::Consonant('w'),
+ Letters::Vowels {
+ character: 'b',
+ lang: 1,
+ },
+ Letters::Vowels {
+ character: 'c',
+ lang: 2,
+ },
+ Letters::Digit,
+ ]
+ }),
+ "+--------+-----------+-------+"
+ "| Vowels | Consonant | Digit |"
+ "+--------+-----------+-------+"
+ "| + | | |"
+ "+--------+-----------+-------+"
+ "| | + | |"
+ "+--------+-----------+-------+"
+ "| + | | |"
+ "+--------+-----------+-------+"
+ "| + | | |"
+ "+--------+-----------+-------+"
+ "| | | + |"
+ "+--------+-----------+-------+"
+ );
+
+ test_table!(
+ table_enum_with_hidden_variant,
+ Table::new({
+ #[allow(dead_code)]
+ #[derive(Tabled)]
+ enum Letters {
+ Vowels {
+ character: char,
+ lang: u8,
+ },
+ Consonant(char),
+ #[tabled(skip)]
+ Digit,
+ }
+
+ vec![
+ Letters::Vowels {
+ character: 'a',
+ lang: 0,
+ },
+ Letters::Consonant('w'),
+ Letters::Vowels {
+ character: 'b',
+ lang: 1,
+ },
+ Letters::Vowels {
+ character: 'c',
+ lang: 2,
+ },
+ Letters::Digit,
+ ]
+ }),
+ "+--------+-----------+"
+ "| Vowels | Consonant |"
+ "+--------+-----------+"
+ "| + | |"
+ "+--------+-----------+"
+ "| | + |"
+ "+--------+-----------+"
+ "| + | |"
+ "+--------+-----------+"
+ "| + | |"
+ "+--------+-----------+"
+ "| | |"
+ "+--------+-----------+"
+ );
+
+ test_table!(
+ table_btreemap,
+ Table::new({
+ #[derive(Tabled)]
+ struct A {
+ b: u8,
+ c: &'static str,
+ }
+
+ let mut map = BTreeMap::new();
+ map.insert(0, A { b: 1, c: "s1" });
+ map.insert(1, A { b: 2, c: "s2" });
+ map.insert(3, A { b: 3, c: "s3" });
+
+ map
+ }),
+ "+-----+---+----+"
+ "| i32 | b | c |"
+ "+-----+---+----+"
+ "| 0 | 1 | s1 |"
+ "+-----+---+----+"
+ "| 1 | 2 | s2 |"
+ "+-----+---+----+"
+ "| 3 | 3 | s3 |"
+ "+-----+---+----+"
+ );
+
+ test_table!(
+ table_emojie_utf8_style,
+ Table::new({
+ #[derive(Tabled)]
+ struct Language {
+ name: &'static str,
+ designed_by: &'static str,
+ invented_year: usize,
+ }
+
+ vec![
+ Language {
+ name: "C 💕",
+ designed_by: "Dennis Ritchie",
+ invented_year: 1972,
+ },
+ Language {
+ name: "Rust ðŸ‘",
+ designed_by: "Graydon Hoare",
+ invented_year: 2010,
+ },
+ Language {
+ name: "Go 🧋",
+ designed_by: "Rob Pike",
+ invented_year: 2009,
+ },
+ ]
+ }).with(Style::modern().remove_horizontal()),
+ // Note: It doesn't look good in VS Code
+ "┌─────────┬────────────────┬───────────────â”"
+ "│ name │ designed_by │ invented_year │"
+ "│ C 💕 │ Dennis Ritchie │ 1972 │"
+ "│ Rust 👠│ Graydon Hoare │ 2010 │"
+ "│ Go 🧋 │ Rob Pike │ 2009 │"
+ "└─────────┴────────────────┴───────────────┘"
+ );
+
+ test_table!(
+ table_btreeset,
+ Table::new({
+ #[derive(Tabled, PartialEq, Eq, PartialOrd, Ord)]
+ struct A {
+ b: u8,
+ c: &'static str,
+ }
+
+ let mut map = BTreeSet::new();
+ map.insert(A { b: 1, c: "s1" });
+ map.insert(A { b: 2, c: "s2" });
+ map.insert(A { b: 3, c: "s3" });
+
+ map
+ }),
+ "+---+----+"
+ "| b | c |"
+ "+---+----+"
+ "| 1 | s1 |"
+ "+---+----+"
+ "| 2 | s2 |"
+ "+---+----+"
+ "| 3 | s3 |"
+ "+---+----+"
+ );
+
+ test_table!(
+ table_emojie,
+ Table::new({
+ #[derive(Tabled)]
+ struct Language {
+ name: &'static str,
+ designed_by: &'static str,
+ invented_year: usize,
+ }
+
+ vec![
+ Language {
+ name: "C 💕",
+ designed_by: "Dennis Ritchie",
+ invented_year: 1972,
+ },
+ Language {
+ name: "Rust ðŸ‘",
+ designed_by: "Graydon Hoare",
+ invented_year: 2010,
+ },
+ Language {
+ name: "Go 🧋",
+ designed_by: "Rob Pike",
+ invented_year: 2009,
+ },
+ ]
+ }),
+ "+---------+----------------+---------------+"
+ "| name | designed_by | invented_year |"
+ "+---------+----------------+---------------+"
+ "| C 💕 | Dennis Ritchie | 1972 |"
+ "+---------+----------------+---------------+"
+ "| Rust 👠| Graydon Hoare | 2010 |"
+ "+---------+----------------+---------------+"
+ "| Go 🧋 | Rob Pike | 2009 |"
+ "+---------+----------------+---------------+"
+ );
+
+ test_table!(
+ tuple_combination,
+ Table::new({
+ #[derive(Tabled)]
+ enum Domain {
+ Security,
+ Embedded,
+ Frontend,
+ Unknown,
+ }
+
+ #[derive(Tabled)]
+ struct Developer(#[tabled(rename = "name")] &'static str);
+
+ vec![
+ (Developer("Terri Kshlerin"), Domain::Embedded),
+ (Developer("Catalina Dicki"), Domain::Security),
+ (Developer("Jennie Schmeler"), Domain::Frontend),
+ (Developer("Maxim Zhiburt"), Domain::Unknown),
+ ]
+ }),
+ "+-----------------+----------+----------+----------+---------+"
+ "| name | Security | Embedded | Frontend | Unknown |"
+ "+-----------------+----------+----------+----------+---------+"
+ "| Terri Kshlerin | | + | | |"
+ "+-----------------+----------+----------+----------+---------+"
+ "| Catalina Dicki | + | | | |"
+ "+-----------------+----------+----------+----------+---------+"
+ "| Jennie Schmeler | | | + | |"
+ "+-----------------+----------+----------+----------+---------+"
+ "| Maxim Zhiburt | | | | + |"
+ "+-----------------+----------+----------+----------+---------+"
+
+ );
+
+ test_table!(
+ table_trait,
+ Table::new({
+ #[derive(Tabled)]
+ enum Domain {
+ Security,
+ Embedded,
+ Frontend,
+ Unknown,
+ }
+
+ #[derive(Tabled)]
+ struct Developer(#[tabled(rename = "name")] &'static str);
+
+ vec![
+ (Developer("Terri Kshlerin"), Domain::Embedded),
+ (Developer("Catalina Dicki"), Domain::Security),
+ (Developer("Jennie Schmeler"), Domain::Frontend),
+ (Developer("Maxim Zhiburt"), Domain::Unknown),
+ ]
+ }),
+ "+-----------------+----------+----------+----------+---------+"
+ "| name | Security | Embedded | Frontend | Unknown |"
+ "+-----------------+----------+----------+----------+---------+"
+ "| Terri Kshlerin | | + | | |"
+ "+-----------------+----------+----------+----------+---------+"
+ "| Catalina Dicki | + | | | |"
+ "+-----------------+----------+----------+----------+---------+"
+ "| Jennie Schmeler | | | + | |"
+ "+-----------------+----------+----------+----------+---------+"
+ "| Maxim Zhiburt | | | | + |"
+ "+-----------------+----------+----------+----------+---------+"
+ );
+
+ test_table!(
+ table_emojie_multiline,
+ Table::new({
+ #[derive(Tabled)]
+ struct Article {
+ name: &'static str,
+ author: &'static str,
+ text: &'static str,
+ rating: usize,
+ }
+
+ vec![
+ Article {
+ name: "Rebase vs Merge commit in depth 👋",
+ author: "Rose Kuphal DVM",
+ text: "A multiline\n text with 🤯 😳 🥵 🥶\n a bunch of emojies â˜„ï¸ ðŸ’¥ 🔥 🌪",
+ rating: 43,
+ },
+ Article {
+ name: "Keep it simple",
+ author: "Unknown",
+ text: "ðŸ³",
+ rating: 100,
+ },
+ ]
+ }),
+ "+------------------------------------+-----------------+-------------------------------+--------+"
+ "| name | author | text | rating |"
+ "+------------------------------------+-----------------+-------------------------------+--------+"
+ "| Rebase vs Merge commit in depth 👋 | Rose Kuphal DVM | A multiline | 43 |"
+ "| | | text with 🤯 😳 🥵 🥶 | |"
+ "| | | a bunch of emojies ☄\u{fe0f} 💥 🔥 🌪 | |"
+ "+------------------------------------+-----------------+-------------------------------+--------+"
+ "| Keep it simple | Unknown | 🳠| 100 |"
+ "+------------------------------------+-----------------+-------------------------------+--------+"
+ );
+}
+
+#[cfg(feature = "color")]
+#[test]
+fn multiline_table_test2() {
+ use testing_table::assert_table;
+
+ let data = &[
+ ["\u{1b}[37mThis is the 0.19 release of Nushell. If you'd like to read more about it, please check out: https://www.nushell.sh/blog/2020/09/01/nushell_0_19.html\n\nFor convenience, we are providing full builds for Windows, Linux, and macOS. These are the \"all extra features\" builds, so be sure you have the requirements to enable all capabilities: https://github.com/nushell/book/blob/master/en/installation.md#dependencies\n\u{1b}[0m"],
+ ];
+
+ let mut table = Table::new(data);
+ table.with(Style::modern());
+
+ assert_table!(
+ ansi_str::AnsiStr::ansi_strip(&table.to_string()),
+ r#"┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────â”"#
+ r#"│ 0 │"#
+ r#"├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤"#
+ r#"│ This is the 0.19 release of Nushell. If you'd like to read more about it, please check out: https://www.nushell.sh/blog/2020/09/01/nushell_0_19.html │"#
+ r#"│ │"#
+ r#"│ For convenience, we are providing full builds for Windows, Linux, and macOS. These are the "all extra features" builds, so be sure you have the requirements to enable all capabilities: https://github.com/nushell/book/blob/master/en/installation.md#dependencies │"#
+ r#"│ │"#
+ r#"└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘"#
+ );
+
+ table.with(Width::wrap(100));
+
+ assert_table!(
+ ansi_str::AnsiStr::ansi_strip(&table.to_string()),
+ "┌──────────────────────────────────────────────────────────────────────────────────────────────────â”"
+ "│ 0 │"
+ "├──────────────────────────────────────────────────────────────────────────────────────────────────┤"
+ "│ This is the 0.19 release of Nushell. If you'd like to read more about it, please check out: http │"
+ "│ s://www.nushell.sh/blog/2020/09/01/nushell_0_19.html │"
+ "│ │"
+ "│ For convenience, we are providing full build │"
+ "│ s for Windows, Linux, and macOS. These are the \"all extra features\" builds, so be sure you have │"
+ "│ the requirements to enable all capabilities: https://github.com/nushell/book/blob/master/en/inst │"
+ "│ allation.md#dependencies │"
+ "│ │"
+ "└──────────────────────────────────────────────────────────────────────────────────────────────────┘"
+ );
+}
+
+test_table!(
+ table_1x1_empty,
+ {
+ Builder::from_iter(vec![vec![""]]).build()
+ .with(Style::modern())
+ .with(Settings::new(Height::limit(0), Width::increase(10)))
+ },
+ "┌────────â”"
+ "└────────┘"
+);
+
+test_table!(
+ table_2x2_empty,
+ {
+ Builder::from_iter(vec![vec![" ", ""], vec![" ", ""]]).build()
+ .with(Style::modern())
+ .with(Padding::zero())
+ .with(Height::list([1, 0]))
+ },
+ "┌─┬â”"
+ "│ ││"
+ "├─┼┤"
+ "└─┴┘"
+);
+
+test_table!(
+ table_2x2_empty_height_list_together_with_width_list_dont_work_0,
+ {
+ Builder::from_iter(vec![vec!["", ""], vec!["", ""]]).build()
+ .with(Style::modern())
+ .with(Padding::zero())
+ .with(Height::list([1, 0]))
+ .with(Width::list([1, 0]))
+ },
+ "┌─┬â”"
+ "│ ││"
+ "├─┼┤"
+ "│ ││"
+ "└─┴┘"
+);
+
+test_table!(
+ table_2x2_empty_height_list_together_with_width_list_dont_work_1,
+ {
+ Builder::from_iter(vec![vec!["", ""], vec!["", ""]]).build()
+ .with(Style::modern())
+ .with(Padding::zero())
+ .with(Width::list([1, 0]))
+ .with(Height::list([1, 0]))
+ },
+ "┌┬â”"
+ "│││"
+ "├┼┤"
+ "└┴┘"
+);
diff --git a/vendor/tabled/tests/derive/derive_test.rs b/vendor/tabled/tests/derive/derive_test.rs
new file mode 100644
index 000000000..d27e43eee
--- /dev/null
+++ b/vendor/tabled/tests/derive/derive_test.rs
@@ -0,0 +1,1090 @@
+#![cfg(feature = "derive")]
+#![cfg(feature = "std")]
+
+use tabled::Tabled;
+
+// https://users.rust-lang.org/t/create-a-struct-from-macro-rules/19829
+macro_rules! test_tuple {
+ (
+ $test_name:ident,
+ t: $(#[$struct_attr:meta])* { $( $(#[$attr:meta])* $ty:ty)* },
+ init: { $($init:expr)* },
+ expected: $headers:expr, $fields:expr,
+ $(pre: { $($init_block:stmt)* })?
+ ) => {
+ #[test]
+ fn $test_name() {
+ $($($init_block)*)?
+
+ #[derive(Tabled)]
+ struct TestType(
+ $( $(#[$attr])* $ty, )*
+ );
+
+ let value = TestType($($init,)*);
+
+ let fields: Vec<&'static str> = $fields.to_vec();
+ let headers: Vec<&'static str> = $headers.to_vec();
+
+ assert_eq!(value.fields(), fields);
+ assert_eq!(TestType::headers(), headers);
+ assert_eq!(<TestType as Tabled>::LENGTH, headers.len());
+ assert_eq!(<TestType as Tabled>::LENGTH, fields.len());
+ }
+ };
+}
+
+macro_rules! test_enum {
+ (
+ $test_name:ident,
+ t: $(#[$struct_attr:meta])* { $( $(#[$var_attr:meta])* $var:ident $({ $( $(#[$attr:meta])* $field:ident: $ty:ty),* $(,)? })? $(( $( $(#[$attr2:meta])* $ty2:ty),* $(,)? ))? )* },
+ $(pre: { $($init_block:stmt)* })?
+ headers: $headers:expr,
+ tests: $($init:expr => $expected:expr,)*
+ ) => {
+ #[allow(dead_code, unused_imports)]
+ #[test]
+ fn $test_name() {
+ $($($init_block)*)?
+
+ #[derive(Tabled)]
+ $(#[$struct_attr])*
+ enum TestType {
+ $(
+ $(#[$var_attr])*
+ $var $({
+ $( $(#[$attr])* $field: $ty,)*
+ })?
+
+ $((
+ $( $(#[$attr2])* $ty2,)*
+ ))?
+ ),*
+ }
+
+ let headers: Vec<&'static str> = $headers.to_vec();
+ assert_eq!(TestType::headers(), headers);
+ assert_eq!(<TestType as Tabled>::LENGTH, headers.len());
+
+ {
+ use TestType::*;
+ $(
+ let variant = $init;
+ let fields: Vec<&'static str> = $expected.to_vec();
+ assert_eq!(variant.fields(), fields);
+ )*
+ }
+ }
+ };
+}
+
+macro_rules! test_struct {
+ (
+ $test_name:ident,
+ t: $(#[$struct_attr:meta])* { $( $(#[$attr:meta])* $field:ident: $ty:ty),* $(,)?}
+ $(pre: { $($init_block:stmt)* })?
+ init: { $( $val_field:ident: $val:expr),* $(,)?}
+ expected: $headers:expr, $fields:expr $(,)?
+ ) => {
+
+ #[allow(dead_code, unused_imports)]
+ #[test]
+ fn $test_name() {
+ $($($init_block)*)?
+
+ #[derive(Tabled)]
+ $(#[$struct_attr])*
+ struct TestType {
+ $(
+ $(#[$attr])*
+ $field: $ty,
+ )*
+ }
+
+ let value = TestType {
+ $($val_field: $val,)*
+ };
+
+ let fields: Vec<&'static str> = $fields.to_vec();
+ let headers: Vec<&'static str> = $headers.to_vec();
+ assert_eq!(TestType::headers(), headers);
+ assert_eq!(value.fields(), fields);
+ assert_eq!(<TestType as Tabled>::LENGTH, headers.len());
+ assert_eq!(<TestType as Tabled>::LENGTH, fields.len());
+ }
+ };
+}
+
+#[allow(non_camel_case_types)]
+type sstr = &'static str;
+
+mod tuple {
+ use super::*;
+
+ test_tuple!(basic, t: { u8 sstr }, init: { 0 "v2" }, expected: ["0", "1"], ["0", "v2"],);
+ test_tuple!(empty, t: { }, init: { }, expected: [], [],);
+
+ test_tuple!(rename, t: { u8 #[tabled(rename = "field 2")] sstr }, init: { 0 "123" }, expected: ["0", "field 2"], ["0", "123"],);
+
+ test_tuple!(skip_0, t: { #[tabled(skip)] u8 #[tabled(rename = "field 2", skip)] sstr sstr }, init: { 0 "v2" "123" }, expected: ["2"], ["123"],);
+ test_tuple!(skip_1, t: { #[tabled(skip)] u8 #[tabled(skip)] #[tabled(rename = "field 2")] sstr sstr }, init: { 0 "v2" "123" }, expected: ["2"], ["123"],);
+
+ test_tuple!(order_0, t: { #[tabled(order = 0)] u8 u8 u8}, init: { 0 1 2 }, expected: ["0", "1", "2"], ["0", "1", "2"],);
+ test_tuple!(order_1, t: { #[tabled(order = 1)] u8 u8 u8}, init: { 0 1 2 }, expected: ["1", "0", "2"], ["1", "0", "2"],);
+ test_tuple!(order_2, t: { #[tabled(order = 2)] u8 u8 u8}, init: { 0 1 2 }, expected: ["1", "2", "0"], ["1", "2", "0"],);
+ test_tuple!(order_3, t: { u8 #[tabled(order = 0)] u8 u8}, init: { 0 1 2 }, expected: ["1", "0", "2"], ["1", "0", "2"],);
+ test_tuple!(order_4, t: { u8 #[tabled(order = 1)] u8 u8}, init: { 0 1 2 }, expected: ["0", "1", "2"], ["0", "1", "2"],);
+ test_tuple!(order_5, t: { u8 #[tabled(order = 2)] u8 u8}, init: { 0 1 2 }, expected: ["0", "2", "1"], ["0", "2", "1"],);
+ test_tuple!(order_6, t: { u8 u8 #[tabled(order = 0)] u8}, init: { 0 1 2 }, expected: ["2", "0", "1"], ["2", "0", "1"],);
+ test_tuple!(order_7, t: { u8 u8 #[tabled(order = 1)] u8}, init: { 0 1 2 }, expected: ["0", "2", "1"], ["0", "2", "1"],);
+ test_tuple!(order_8, t: { u8 u8 #[tabled(order = 2)] u8}, init: { 0 1 2 }, expected: ["0", "1", "2"], ["0", "1", "2"],);
+ test_tuple!(order_9, t: { #[tabled(order = 2)] u8 u8 #[tabled(order = 0)] u8}, init: { 0 1 2 }, expected: ["2", "1", "0"], ["2", "1", "0"],);
+ test_tuple!(order_10, t: { #[tabled(order = 2)] u8 #[tabled(order = 1)] u8 u8}, init: { 0 1 2 }, expected: ["2", "1", "0"], ["2", "1", "0"],);
+ test_tuple!(order_11, t: { #[tabled(order = 2)] u8 #[tabled(order = 2)] u8 #[tabled(order = 1)] u8}, init: { 0 1 2 }, expected: ["0", "2", "1"], ["0", "2", "1"],);
+ test_tuple!(order_12, t: { #[tabled(order = 2)] u8 #[tabled(order = 2)] u8 #[tabled(order = 2)] u8}, init: { 0 1 2 }, expected: ["0", "1", "2"], ["0", "1", "2"],);
+ test_tuple!(order_13, t: { #[tabled(order = 1)] u8 #[tabled(order = 1)] u8 #[tabled(order = 1)] u8}, init: { 0 1 2 }, expected: ["0", "2", "1"], ["0", "2", "1"],);
+ test_tuple!(order_14, t: { #[tabled(order = 2)] u8 #[tabled(order = 1)] u8 #[tabled(order = 0)] u8}, init: { 0 1 2 }, expected: ["2", "1", "0"], ["2", "1", "0"],);
+
+ test_tuple!(rename_all, t: #[tabled(rename_all = "UPPERCASE")] { u8 sstr}, init: { 0 "123" }, expected: ["0", "1"], ["0", "123"],);
+ test_tuple!(rename_all_field, t: { u8 #[tabled(rename_all = "UPPERCASE")] sstr}, init: { 0 "123" }, expected: ["0", "1"], ["0", "123"],);
+ test_tuple!(rename_all_field_with_rename_0, t: { u8 #[tabled(rename_all = "UPPERCASE", rename = "Something")] sstr}, init: { 0 "123" }, expected: ["0", "Something"], ["0", "123"],);
+ test_tuple!(rename_all_field_with_rename_1, t: { u8 #[tabled(rename = "Something")] #[tabled(rename_all = "UPPERCASE")] sstr}, init: { 0 "123" }, expected: ["0", "Something"], ["0", "123"],);
+
+ test_tuple!(
+ display_option,
+ t: { u8 #[tabled(display_with = "display_option")] Option<sstr> },
+ init: { 0 Some("v2") },
+ expected: ["0", "1"], ["0", "some v2"],
+ pre: {
+ fn display_option(o: &Option<sstr>) -> String {
+ match o {
+ Some(s) => format!("some {s}"),
+ None => "none".to_string(),
+ }
+ }
+ }
+ );
+
+ test_tuple!(
+ display_option_args,
+ t: { u8 #[tabled(display_with("display_option", 1, "234"))] Option<sstr> },
+ init: { 0 Some("v2") },
+ expected: ["0", "1"], ["0", "some 1 234"],
+ pre: {
+ fn display_option(val: usize, text: &str) -> String {
+ format!("some {val} {text}")
+ }
+ }
+ );
+
+ test_tuple!(
+ display_option_self,
+ t: { u8 #[tabled(display_with = "Self::display_option")] Option<sstr> },
+ init: { 0 Some("v2") },
+ expected: ["0", "1"], ["0", "some v2"],
+ pre: {
+ impl TestType {
+ fn display_option(o: &Option<sstr>) -> String {
+ match o {
+ Some(s) => format!("some {s}"),
+ None => "none".to_string(),
+ }
+ }
+ }
+ }
+ );
+
+ test_tuple!(
+ display_option_self_2,
+ t: { u8 #[tabled(display_with("Self::display_option", self))] Option<sstr> },
+ init: { 0 Some("v2") },
+ expected: ["0", "1"], ["0", "some v2"],
+ pre: {
+ impl TestType {
+ fn display_option(o: &TestType) -> String {
+ match o.1 {
+ Some(s) => format!("some {s}"),
+ None => "none".to_string(),
+ }
+ }
+ }
+ }
+ );
+
+ test_tuple!(
+ display_option_self_3,
+ t: { u8 #[tabled(display_with("display_option", self))] Option<sstr> },
+ init: { 0 Some("v2") },
+ expected: ["0", "1"], ["0", "some v2"],
+ pre: {
+ fn display_option(o: &TestType) -> String {
+ match o.1 {
+ Some(s) => format!("some {s}"),
+ None => "none".to_string(),
+ }
+ }
+ }
+ );
+
+ // #[test]
+ // fn order_compile_fail_when_order_is_bigger_then_count_fields() {
+ // #[derive(Tabled)]
+ // struct St(#[tabled(order = 3)] u8, u8, u8);
+ // }
+}
+
+mod enum_ {
+ use super::*;
+
+ test_enum!(
+ basic,
+ t: { Security Embedded Frontend Unknown },
+ headers: ["Security", "Embedded", "Frontend", "Unknown"],
+ tests:
+ Security => ["+", "", "", ""],
+ Embedded => ["", "+", "", ""],
+ Frontend => ["", "", "+", ""],
+ Unknown => ["", "", "", "+"],
+ );
+
+ test_enum!(
+ diverse,
+ t: { A { a: u8, b: i32 } B(sstr) K },
+ headers: ["A", "B", "K"],
+ tests:
+ A { a: 1, b: 2 } => ["+", "", ""],
+ B("") => ["", "+", ""],
+ K => ["", "", "+"],
+ );
+
+ test_enum!(
+ rename_variant,
+ t: { #[tabled(rename = "Variant 1")] A { a: u8, b: i32 } #[tabled(rename = "Variant 2")] B(sstr) K },
+ headers: ["Variant 1", "Variant 2", "K"],
+ tests:
+ A { a: 1, b: 2 } => ["+", "", ""],
+ B("") => ["", "+", ""],
+ K => ["", "", "+"],
+ );
+
+ test_enum!(
+ skip_variant,
+ t: { A { a: u8, b: i32 } #[tabled(skip)] B(sstr) K },
+ headers: ["A", "K"],
+ tests:
+ A { a: 1, b: 2 } => ["+", ""],
+ B("") => ["", ""],
+ K => ["", "+"],
+ );
+
+ test_enum!(
+ inline_variant,
+ t: {
+ #[tabled(inline("Auto::"))] Auto { #[tabled(rename = "mod")] model: sstr, engine: sstr }
+ #[tabled(inline)] Bikecycle( #[tabled(rename = "name")] sstr, #[tabled(inline)] Bike )
+ Skateboard
+ },
+ pre: {
+ #[derive(Tabled)]
+ struct Bike { brand: sstr, price: f32 }
+ }
+ headers: ["Auto::mod", "Auto::engine", "name", "brand", "price", "Skateboard"],
+ tests:
+ Skateboard => ["", "", "", "", "", "+"],
+ Auto { model: "Mini", engine: "v8" } => ["Mini", "v8", "", "", "", ""],
+ Bikecycle("A bike", Bike { brand: "Canyon", price: 2000.0 })=> ["", "", "A bike", "Canyon", "2000", ""],
+ );
+
+ test_enum!(
+ inline_field_with_display_function,
+ t: {
+ #[tabled(inline("backend::"))]
+ Backend { #[tabled(display_with = "display", rename = "name")] value: sstr }
+ Frontend
+ },
+ pre: {
+ fn display(_: sstr) -> String {
+ "asd".to_string()
+ }
+ }
+ headers: ["backend::name", "Frontend"],
+ tests:
+ Backend { value: "123" } => ["asd", ""],
+ Frontend => ["", "+"],
+ );
+
+ test_enum!(
+ inline_field_with_display_self_function,
+ t: {
+ #[tabled(inline("backend::"))]
+ Backend { #[tabled()] #[tabled(display_with("display", self), rename = "name")] value: sstr }
+ Frontend
+ },
+ pre: {
+ fn display<T>(_: &T) -> String {
+ "asd".to_string()
+ }
+ }
+ headers: ["backend::name", "Frontend"],
+ tests:
+ Backend { value: "123" } => ["asd", ""],
+ Frontend => ["", "+"],
+ );
+
+ test_enum!(
+ with_display,
+ t: {
+ #[tabled(inline)]
+ A(#[tabled(display_with = "format::<4>")] sstr)
+ B
+ },
+ pre: {
+ fn format<const ID: usize>(_: sstr) -> String {
+ ID.to_string()
+ }
+ }
+ headers: ["0", "B"],
+ tests:
+ A("") => ["4", ""],
+ B => ["", "+"],
+ );
+
+ test_enum!(
+ with_display_self,
+ t: {
+ #[tabled(inline)]
+ A(#[tabled(display_with("Self::format::<4>", self))] sstr)
+ B
+ },
+ pre: {
+ impl TestType {
+ fn format<const ID: usize>(&self) -> String {
+ ID.to_string()
+ }
+ }
+ }
+ headers: ["0", "B"],
+ tests:
+ A("") => ["4", ""],
+ B => ["", "+"],
+ );
+
+ test_enum!(
+ rename_all_variant,
+ t: {
+ #[tabled(rename_all = "snake_case")]
+ VariantName1 { a: u8, b: i32 }
+ #[tabled(rename_all = "UPPERCASE")]
+ VariantName2(String)
+ K
+ },
+ headers: ["variant_name1", "VARIANTNAME2", "K"],
+ tests:
+ );
+
+ test_enum!(
+ rename_all_enum,
+ t: #[tabled(rename_all = "snake_case")] {
+ VariantName1 { a: u8, b: i32 }
+ VariantName2(String)
+ K
+ },
+ headers: ["variant_name1", "variant_name2", "k"],
+ tests:
+ );
+
+ test_enum!(
+ rename_all_enum_inherited_inside_struct_enum,
+ t: #[tabled(rename_all = "snake_case")] {
+ #[tabled(inline)]
+ VariantName1 { some_field_1: u8, some_field_2: i32 }
+ VariantName2(String)
+ K
+ },
+ headers: ["some_field_1", "some_field_2", "variant_name2", "k"],
+ tests:
+ );
+
+ test_enum!(
+ rename_all_enum_inherited_inside_struct_override_by_rename_enum,
+ t: #[tabled(rename_all = "snake_case")] {
+ #[tabled(inline)]
+ VariantName1 {
+ #[tabled(rename = "f1")]
+ some_field_1: u8,
+ #[tabled(rename = "f2")]
+ some_field_2: i32,
+ }
+ VariantName2(String)
+ K
+ },
+ headers: ["f1", "f2", "variant_name2", "k"],
+ tests:
+ );
+
+ test_enum!(
+ rename_all_enum_inherited_inside_struct_override_by_rename_all_enum,
+ t: #[tabled(rename_all = "snake_case")] {
+ #[tabled(inline)]
+ VariantName1 {
+ #[tabled(rename_all = "UPPERCASE")]
+ some_field_1: u8,
+ #[tabled(rename_all = "CamelCase")]
+ some_field_2: i32,
+ }
+ VariantName2(String)
+ K
+ },
+ headers: ["SOMEFIELD1", "someField2", "variant_name2", "k"],
+ tests:
+ );
+
+ test_enum!(
+ rename_all_variant_inherited_inside_struct_enum,
+ t: #[tabled(rename_all = "snake_case")] {
+ #[tabled(inline)]
+ #[tabled(rename_all = "snake_case")]
+ VariantName1 {
+ some_field_1: u8,
+ some_field_2: i32,
+ }
+ VariantName2(String)
+ K
+ },
+ headers: ["some_field_1", "some_field_2", "variant_name2", "k"],
+ tests:
+ );
+
+ test_enum!(
+ rename_all_variant_inherited_inside_struct_enum_overridden_by_rename,
+ t: #[tabled(rename_all = "snake_case")] {
+ #[tabled(inline, rename_all = "snake_case")]
+ VariantName1 {
+ #[tabled(rename = "f1")]
+ some_field_1: u8,
+ #[tabled(rename = "f2")]
+ some_field_2: i32,
+ }
+ VariantName2(String)
+ K
+ },
+ headers: ["f1", "f2", "variant_name2", "k"],
+ tests:
+ );
+
+ test_enum!(
+ rename_all_variant_inherited_inside_struct_override_by_rename_all_enum,
+ t: #[tabled(rename_all = "snake_case")] {
+ #[tabled(rename_all = "snake_case", inline)]
+ VariantName1 {
+ #[tabled(rename_all = "UPPERCASE")]
+ some_field_1: u8,
+ #[tabled(rename_all = "CamelCase")]
+ some_field_2: i32,
+ }
+ VariantName2(String)
+ K
+ },
+ headers: ["SOMEFIELD1", "someField2", "variant_name2", "k"],
+ tests:
+ );
+
+ test_enum!(
+ inline_enum_as_whole,
+ t: #[tabled(inline)] {
+ AbsdEgh { a: u8, b: i32 }
+ B(String)
+ K
+ },
+ headers: ["TestType"],
+ tests:
+ AbsdEgh { a: 0, b: 0 } => ["AbsdEgh"],
+ B(String::new()) => ["B"],
+ K => ["K"],
+ );
+
+ test_enum!(
+ inline_enum_as_whole_and_rename,
+ t:
+ #[tabled(inline, rename_all = "snake_case")]
+ {
+ AbsdEgh { a: u8, b: i32 }
+ B(String)
+ K
+ },
+ headers: ["TestType"],
+ tests:
+ AbsdEgh { a: 0, b: 0 } => ["absd_egh"],
+ B(String::new()) => ["b"],
+ K => ["k"],
+ );
+
+ test_enum!(
+ inline_enum_as_whole_and_rename_inner,
+ t: #[tabled(inline)] {
+ #[tabled(rename_all = "snake_case")]
+ AbsdEgh { a: u8, b: i32 }
+ #[tabled(rename_all = "lowercase")]
+ B(String)
+ K
+ },
+ headers: ["TestType"],
+ tests:
+ AbsdEgh { a: 0, b: 0 } => ["absd_egh"],
+ B(String::new()) => ["b"],
+ K => ["K"],
+ );
+
+ test_enum!(
+ inline_enum_name,
+ t: #[tabled(inline("A struct name"))] {
+ AbsdEgh { a: u8, b: i32 }
+ B(String)
+ K
+ },
+ headers: ["A struct name"],
+ tests:
+ AbsdEgh { a: 0, b: 0 } => ["AbsdEgh"],
+ B(String::new()) => ["B"],
+ K => ["K"],
+ );
+
+ test_enum!(
+ enum_display_with_variant,
+ t: {
+ #[tabled(display_with = "display_variant1")]
+ AbsdEgh { a: u8, b: i32 }
+ #[tabled(display_with = "display_variant2::<200>")]
+ B(String)
+ #[tabled(display_with = "some::bar::display_variant1")]
+ K
+ },
+ pre: {
+ fn display_variant1() -> &'static str {
+ "Hello World"
+ }
+
+ fn display_variant2<const VAL: usize>() -> String {
+ format!("asd {VAL}")
+ }
+
+ pub mod some {
+ pub mod bar {
+ pub fn display_variant1() -> &'static str {
+ "Hello World 123"
+ }
+ }
+ }
+ }
+ headers: ["AbsdEgh", "B", "K"],
+ tests:
+ AbsdEgh { a: 0, b: 0 } => ["Hello World", "", ""],
+ B(String::new()) => ["", "asd 200", ""],
+ K => ["", "", "Hello World 123"],
+ );
+
+ test_enum!(
+ enum_display_with_self_variant,
+ t: {
+ #[tabled(display_with("display_variant1", self))]
+ AbsdEgh { a: u8, b: i32 }
+ #[tabled(display_with("display_variant2::<200, _>", self))]
+ B(String)
+ #[tabled(display_with("some::bar::display_variant1", self))]
+ K
+ },
+ pre: {
+ fn display_variant1<D>(_: &D) -> &'static str {
+ "Hello World"
+ }
+
+ fn display_variant2<const VAL: usize, D>(_: &D) -> String {
+ format!("asd {VAL}")
+ }
+
+ pub mod some {
+ pub mod bar {
+ pub fn display_variant1<D>(_: &D) -> &'static str {
+ "Hello World 123"
+ }
+ }
+ }
+ }
+ headers: ["AbsdEgh", "B", "K"],
+ tests:
+ AbsdEgh { a: 0, b: 0 } => ["Hello World", "", ""],
+ B(String::new()) => ["", "asd 200", ""],
+ K => ["", "", "Hello World 123"],
+ );
+
+ test_enum!(
+ enum_display_with_arguments,
+ t: {
+ #[tabled(display_with("display1", 1, 2, self))]
+ AbsdEgh { a: u8, b: i32 }
+ #[tabled(display_with("display2::<200>", "Hello World"))]
+ B(String)
+ #[tabled(display_with("display1", 100, 200, self))]
+ K
+ },
+ pre: {
+ fn display1<D>(val: usize, val2: usize, _: &D) -> String {
+ format!("{val} {val2}")
+ }
+
+ fn display2<const VAL: usize>(val: &str) -> String {
+ format!("asd {VAL} {val}")
+ }
+ }
+ headers: ["AbsdEgh", "B", "K"],
+ tests:
+ AbsdEgh { a: 0, b: 0 } => ["1 2", "", ""],
+ B(String::new()) => ["", "asd 200 Hello World", ""],
+ K => ["", "", "100 200"],
+ );
+
+ test_enum!(order_0, t: { #[tabled(order = 0)] V1(u8) V2(u8) V3(u8) }, headers: ["V1", "V2", "V3"], tests: V1(0) => ["+", "", ""], V2(0) => ["", "+", ""], V3(0) => ["", "", "+"],);
+ test_enum!(order_1, t: { #[tabled(order = 1)] V1(u8) V2(u8) V3(u8) }, headers: ["V2", "V1", "V3"], tests: V1(0) => ["", "+", ""], V2(0) => ["+", "", ""], V3(0) => ["", "", "+"],);
+ test_enum!(order_2, t: { #[tabled(order = 2)] V1(u8) V2(u8) V3(u8) }, headers: ["V2", "V3", "V1"], tests: V1(0) => ["", "", "+"], V2(0) => ["+", "", ""], V3(0) => ["", "+", ""],);
+ test_enum!(order_3, t: { V1(u8) #[tabled(order = 0)] V2(u8) V3(u8) }, headers: ["V2", "V1", "V3"], tests: V1(0) => ["", "+", ""], V2(0) => ["+", "", ""], V3(0) => ["", "", "+"],);
+ test_enum!(order_4, t: { V1(u8) #[tabled(order = 1)] V2(u8) V3(u8) }, headers: ["V1", "V2", "V3"], tests: V1(0) => ["+", "", ""], V2(0) => ["", "+", ""], V3(0) => ["", "", "+"],);
+ test_enum!(order_5, t: { V1(u8) #[tabled(order = 2)] V2(u8) V3(u8) }, headers: ["V1", "V3", "V2"], tests: V1(0) => ["+", "", ""], V2(0) => ["", "", "+"], V3(0) => ["", "+", ""],);
+ test_enum!(order_6, t: { V1(u8) V2(u8) #[tabled(order = 0)] V3(u8) }, headers: ["V3", "V1", "V2"], tests: V1(0) => ["", "+", ""], V2(0) => ["", "", "+"], V3(0) => ["+", "", ""],);
+ test_enum!(order_7, t: { V1(u8) V2(u8) #[tabled(order = 1)] V3(u8) }, headers: ["V1", "V3", "V2"], tests: V1(0) => ["+", "", ""], V2(0) => ["", "", "+"], V3(0) => ["", "+", ""],);
+ test_enum!(order_8, t: { V1(u8) V2(u8) #[tabled(order = 2)] V3(u8) }, headers: ["V1", "V2", "V3"], tests: V1(0) => ["+", "", ""], V2(0) => ["", "+", ""], V3(0) => ["", "", "+"],);
+ test_enum!(order_9, t: { #[tabled(order = 2)] V1(u8) V2(u8) #[tabled(order = 0)] V3(u8) }, headers: ["V3", "V2", "V1"], tests: V1(0) => ["", "", "+"], V2(0) => ["", "+", ""], V3(0) => ["+", "", ""],);
+ test_enum!(order_10, t: { #[tabled(order = 2)] V1(u8) V2(u8) #[tabled(order = 1)] V3(u8) }, headers: ["V2", "V3", "V1"], tests: V1(0) => ["", "", "+"], V2(0) => ["+", "", ""], V3(0) => ["", "+", ""],);
+ test_enum!(order_11, t: { #[tabled(order = 2)] V1(u8) #[tabled(order = 2)] V2(u8) #[tabled(order = 1)] V3(u8) }, headers: ["V1", "V3", "V2"], tests: V1(0) => ["+", "", ""], V2(0) => ["", "", "+"], V3(0) => ["", "+", ""],);
+ test_enum!(order_12, t: { #[tabled(order = 2)] V1(u8) #[tabled(order = 1)] V2(u8) #[tabled(order = 0)] V3(u8) }, headers: ["V3", "V2", "V1"], tests: V1(0) => ["", "", "+"], V2(0) => ["", "+", ""], V3(0) => ["+", "", ""],);
+ test_enum!(order_13, t: { #[tabled(order = 0)] V1(u8) #[tabled(order = 0)] V2(u8) #[tabled(order = 0)] V3(u8) }, headers: ["V3", "V1", "V2"], tests: V1(0) => ["", "+", ""], V2(0) => ["", "", "+"], V3(0) => ["+", "", ""],);
+ test_enum!(order_14, t: { #[tabled(order = 1)] V1(u8) #[tabled(order = 1)] V2(u8) #[tabled(order = 1)] V3(u8) }, headers: ["V1", "V3", "V2"], tests: V1(0) => ["+", "", ""], V2(0) => ["", "", "+"], V3(0) => ["", "+", ""],);
+ test_enum!(order_15, t: { #[tabled(order = 2)] V1(u8) #[tabled(order = 2)] V2(u8) #[tabled(order = 2)] V3(u8) }, headers: ["V1", "V2", "V3"], tests: V1(0) => ["+", "", ""], V2(0) => ["", "+", ""], V3(0) => ["", "", "+"],);
+
+ test_enum!(order_0_inlined, t: #[tabled(inline)] { #[tabled(order = 1)] V1(u8) V2(u8) V3(u8) }, headers: ["TestType"], tests: V1(0) => ["V1"], V2(0) => ["V2"], V3(0) => ["V3"],);
+}
+
+mod unit {
+ use super::*;
+
+ #[test]
+ fn basic() {
+ #[derive(Tabled)]
+ struct St;
+ let st = St;
+
+ assert!(st.fields().is_empty());
+ assert!(St::headers().is_empty());
+ assert_eq!(St::LENGTH, 0);
+ }
+}
+
+mod structure {
+ use super::*;
+
+ test_struct!(empty, t: { } init: { } expected: [], []);
+ test_struct!(general, t: { f1: u8, f2: sstr } init: { f1: 0, f2: "v2" } expected: ["f1", "f2"], ["0", "v2"]);
+ test_struct!(rename, t: { #[tabled(rename = "field 1")] f1: u8, #[tabled(rename = "field 2")] f2: sstr } init: { f1: 0, f2: "v2" } expected: ["field 1", "field 2"], ["0", "v2"]);
+ test_struct!(skip, t: { #[tabled(skip)] f1: u8, #[tabled(rename = "field 2", skip)] f2: sstr, f3: sstr } init: { f1: 0, f2: "v2", f3: "123" } expected: ["f3"], ["123"]);
+ test_struct!(skip_true, t: { #[tabled(skip = true)] f1: u8, #[tabled(rename = "field 2", skip = true)] f2: sstr, f3: sstr } init: { f1: 0, f2: "v2", f3: "123" } expected: ["f3"], ["123"]);
+ test_struct!(
+ inline,
+ t: {
+ #[tabled(inline = true)]
+ id: u8,
+ name: sstr,
+ #[tabled(inline)]
+ ed: Education
+ }
+ pre: {
+ #[derive(Tabled)]
+ struct Education { uni: sstr, graduated: bool }
+ }
+ init: { id: 0, name: "Maxim", ed: Education { uni: "BNTU", graduated: true }}
+ expected: ["u8", "name","uni","graduated"], ["0", "Maxim", "BNTU", "true"]
+ );
+ test_struct!(
+ inline_with_prefix,
+ t: {
+ #[tabled(rename = "it's an ignored option", inline)]
+ id: u8,
+ name: sstr,
+ #[tabled(inline("education::"))]
+ ed: Education,
+ }
+ pre: {
+ #[derive(Tabled)]
+ struct Education { uni: sstr, graduated: bool }
+ }
+ init: { id: 0, name: "Maxim", ed: Education { uni: "BNTU", graduated: true }}
+ expected: ["u8", "name","education::uni","education::graduated"], ["0", "Maxim", "BNTU", "true"]
+ );
+ test_struct!(
+ display_with,
+ t: {
+ f1: u8,
+ #[tabled(display_with = "display_option")]
+ f2: Option<sstr>,
+ }
+ pre: {
+ fn display_option(o: &Option<sstr>) -> String {
+ match o {
+ Some(s) => format!("some {s}"),
+ None => "none".to_string(),
+ }
+ }
+ }
+ init: { f1: 0, f2: Some("v2") }
+ expected: ["f1", "f2"], ["0", "some v2"]
+ );
+ test_struct!(
+ display_with_args,
+ t: {
+ f1: u8,
+ #[tabled(display_with("display_option", 1, 2, 3))]
+ f2: Option<sstr>,
+ }
+ pre: {
+ fn display_option(v1: usize, v2: usize, v3: usize) -> String {
+ format!("{v1} {v2} {v3}")
+ }
+ }
+ init: { f1: 0, f2: Some("v2") }
+ expected: ["f1", "f2"], ["0", "1 2 3"]
+ );
+ test_struct!(
+ display_with_self_static_method,
+ t: {
+ f1: u8,
+ #[tabled(display_with = "Self::display_option")]
+ f2: Option<sstr>,
+ }
+ pre: {
+ impl TestType {
+ fn display_option(o: &Option<sstr>) -> String {
+ match o {
+ Some(s) => format!("some {s}"),
+ None => "none".to_string(),
+ }
+ }
+ }
+ }
+ init: { f1: 0, f2: Some("v2") }
+ expected: ["f1", "f2"], ["0", "some v2"]
+ );
+ test_struct!(
+ display_with_self_static_method_2,
+ t: {
+ f1: u8,
+ #[tabled(display_with("Self::display_option", self))]
+ f2: Option<sstr>,
+ }
+ pre: {
+ impl TestType {
+ fn display_option(o: &TestType) -> String {
+ match o.f2 {
+ Some(s) => format!("some {s}"),
+ None => "none".to_string(),
+ }
+ }
+ }
+ }
+ init: { f1: 0, f2: Some("v2") }
+ expected: ["f1", "f2"], ["0", "some v2"]
+ );
+ test_struct!(
+ display_with_self_2_self_static_method_2,
+ t: {
+ f1: u8,
+ #[tabled(display_with("Self::display_option", self))]
+ f2: Option<sstr>,
+ }
+ pre: {
+ impl TestType {
+ fn display_option(&self) -> String {
+ match self.f2 {
+ Some(s) => format!("some {s}"),
+ None => "none".to_string(),
+ }
+ }
+ }
+ }
+ init: { f1: 0, f2: Some("v2") }
+ expected: ["f1", "f2"], ["0", "some v2"]
+ );
+ test_struct!(
+ display_with_self_2_self_static_method,
+ t: {
+ f1: u8,
+ #[tabled(display_with("display_option", self))]
+ f2: Option<sstr>,
+ }
+ pre: {
+ fn display_option(o: &TestType) -> String {
+ match o.f2 {
+ Some(s) => format!("some {s}"),
+ None => "none".to_string(),
+ }
+ }
+ }
+ init: { f1: 0, f2: Some("v2") }
+ expected: ["f1", "f2"], ["0", "some v2"]
+ );
+ test_struct!(order_0, t: { #[tabled(order = 0)] f0: u8, f1: u8, f2: u8 } init: { f0: 0, f1: 1, f2: 2 } expected: ["f0", "f1", "f2"], ["0", "1", "2"]);
+ test_struct!(order_1, t: { #[tabled(order = 1)] f0: u8, f1: u8, f2: u8 } init: { f0: 0, f1: 1, f2: 2 } expected: ["f1", "f0", "f2"], ["1", "0", "2"]);
+ test_struct!(order_2, t: { #[tabled(order = 2)] f0: u8, f1: u8, f2: u8 } init: { f0: 0, f1: 1, f2: 2 } expected: ["f1", "f2", "f0"], ["1", "2", "0"]);
+ test_struct!(order_3, t: { f0: u8, #[tabled(order = 0)] f1: u8, f2: u8 } init: { f0: 0, f1: 1, f2: 2 } expected: ["f1", "f0", "f2"], ["1", "0", "2"]);
+ test_struct!(order_4, t: { f0: u8, #[tabled(order = 1)] f1: u8, f2: u8 } init: { f0: 0, f1: 1, f2: 2 } expected: ["f0", "f1", "f2"], ["0", "1", "2"]);
+ test_struct!(order_5, t: { f0: u8, #[tabled(order = 2)] f1: u8, f2: u8 } init: { f0: 0, f1: 1, f2: 2 } expected: ["f0", "f2", "f1"], ["0", "2", "1"]);
+ test_struct!(order_6, t: { f0: u8, f1: u8, #[tabled(order = 0)] f2: u8 } init: { f0: 0, f1: 1, f2: 2 } expected: ["f2", "f0", "f1"], ["2", "0", "1"]);
+ test_struct!(order_7, t: { f0: u8, f1: u8, #[tabled(order = 1)] f2: u8 } init: { f0: 0, f1: 1, f2: 2 } expected: ["f0", "f2", "f1"], ["0", "2", "1"]);
+ test_struct!(order_8, t: { f0: u8, f1: u8, #[tabled(order = 2)] f2: u8 } init: { f0: 0, f1: 1, f2: 2 } expected: ["f0", "f1", "f2"], ["0", "1", "2"]);
+ test_struct!(order_9, t: { #[tabled(order = 2)] f0: u8, f1: u8, #[tabled(order = 0)] f2: u8 } init: { f0: 0, f1: 1, f2: 2 } expected: ["f2", "f1", "f0"], ["2", "1", "0"]);
+ test_struct!(order_10, t: { #[tabled(order = 2)] f0: u8, #[tabled(order = 1)] f1: u8, f2: u8 } init: { f0: 0, f1: 1, f2: 2 } expected: ["f2", "f1", "f0"], ["2", "1", "0"]);
+ test_struct!(order_11, t: { #[tabled(order = 2)] f0: u8, #[tabled(order = 2)] f1: u8, #[tabled(order = 1)] f2: u8 } init: { f0: 0, f1: 1, f2: 2 } expected: ["f0", "f2", "f1"], ["0", "2", "1"]);
+ test_struct!(order_12, t: { #[tabled(order = 2)] f0: u8, #[tabled(order = 1)] f1: u8, #[tabled(order = 0)] f2: u8 } init: { f0: 0, f1: 1, f2: 2 } expected: ["f2", "f1", "f0"], ["2", "1", "0"]);
+
+ test_struct!(
+ rename_all,
+ t: #[tabled(rename_all = "UPPERCASE")] { f1: u8, f2: sstr }
+ init: { f1: 0, f2: "v2" }
+ expected: ["F1", "F2"], ["0", "v2"]
+ );
+ test_struct!(
+ rename_all_override_in_field_by_rename,
+ t: #[tabled(rename_all = "UPPERCASE")] { #[tabled(rename = "213213")] f1: u8, f2: sstr }
+ init: { f1: 0, f2: "v2" }
+ expected: ["213213", "F2"], ["0", "v2"]
+ );
+ test_struct!(
+ rename_all_override_in_field_by_rename_all,
+ t: #[tabled(rename_all = "UPPERCASE")] { #[tabled(rename_all = "lowercase")] f1: u8, f2: sstr }
+ init: { f1: 0, f2: "v2" }
+ expected: ["f1", "F2"], ["0", "v2"]
+ );
+ test_struct!(
+ rename_all_field,
+ t: { #[tabled(rename_all = "lowercase")] f1: u8, #[tabled(rename_all = "UPPERCASE")] f2: sstr }
+ init: { f1: 0, f2: "v2" }
+ expected: ["f1", "F2"], ["0", "v2"]
+ );
+ test_struct!(
+ rename_all_field_overridden_by_rename,
+ t: { #[tabled(rename_all = "lowercase", rename = "Hello")] f1: u8, #[tabled(rename_all = "UPPERCASE")] f2: sstr }
+ init: { f1: 0, f2: "v2" }
+ expected: ["Hello", "F2"], ["0", "v2"]
+ );
+
+ // #[test]
+ // fn order_compile_fail_when_order_is_bigger_then_count_fields() {
+ // #[derive(Tabled)]
+ // struct St {
+ // #[tabled(order = 3)]
+ // f0: u8,
+ // f1: u8,
+ // f2: u8,
+ // }
+ // }
+}
+
+test_tuple!(skipped_fields_not_implement_display_tuple, t: { #[tabled(skip)] () sstr }, init: { () "123" }, expected: ["1"], ["123"],);
+test_struct!(skipped_fields_not_implement_display_struct, t: { #[tabled(skip)] _unit: (), s: sstr } init: { _unit: (), s: "123" } expected: ["s"], ["123"],);
+test_struct!(
+ skipped_fields_not_implement_display_struct_in_inline,
+ t: { s: sstr, #[tabled(inline)] f: S1 }
+ pre: {
+ #[derive(Tabled)]
+ struct S1 {
+ #[tabled(skip)]
+ _unit: (),
+ s: sstr,
+ }
+ }
+ init: { s: "123", f: S1 { _unit: (), s: "..." } }
+ expected: ["s", "s"], ["123", "..."],
+);
+test_enum!(
+ skipped_fields_not_implement_display_enum,
+ t: {
+ #[tabled(inline("A::"))]
+ A {
+ name: sstr
+ }
+ #[tabled(inline("B::"))]
+ B {
+ issue: usize,
+ name: sstr,
+ #[tabled(skip)]
+ _gem: (),
+ }
+ #[tabled(inline("C::"))]
+ C(usize, #[tabled(skip)] (), sstr)
+ D
+ },
+ headers: ["A::name", "B::issue", "B::name", "C::0", "C::2", "D"],
+ tests:
+ A { name: "nrdxp" } => ["nrdxp", "", "", "", "", ""],
+ B { _gem: (), issue: 32, name: "nrdxp" } => ["", "32", "nrdxp", "", "", ""],
+ C(32, (), "nrdxp") => ["", "", "", "32", "nrdxp", ""],
+ D => ["", "", "", "", "", "+"],
+);
+
+test_struct!(
+ ignore_display_with_when_used_with_inline,
+ t: { f1: sstr, f2: sstr, #[tabled(display_with = "print", inline)] f3: usize }
+ init: { f1: "123", f2: "456", f3: 789 }
+ expected: ["f1", "f2", "usize"], ["123", "456", "789"],
+);
+test_struct!(
+ ignore_display_with_when_used_with_inline_2,
+ t: { f1: sstr, f2: sstr, #[tabled(display_with = "print", )] #[tabled(inline)] f3: usize }
+ init: { f1: "123", f2: "456", f3: 789 }
+ expected: ["f1", "f2", "usize"], ["123", "456", "789"],
+);
+test_struct!(
+ display_with_and_rename,
+ t: { f1: sstr, f2: sstr, #[tabled(display_with = "print", rename = "asd")] f3: usize }
+ pre: { #[allow(dead_code)] fn print<T>(_: T) -> String { String::new() } }
+ init: { f1: "123", f2: "456", f3: 789 }
+ expected: ["f1", "f2", "asd"], ["123", "456", ""],
+);
+test_struct!(
+ display_with_and_rename_2,
+ t: { f1: sstr, f2: sstr, #[tabled(display_with = "print")] #[tabled(rename = "asd")] f3: usize }
+ pre: { #[allow(dead_code)] fn print<T>(_: T) -> String { String::new() } }
+ init: { f1: "123", f2: "456", f3: 789 }
+ expected: ["f1", "f2", "asd"], ["123", "456", ""],
+);
+test_struct!(
+ display_with_and_rename_all,
+ t: { f1: sstr, f2: sstr, #[tabled(display_with = "print", rename_all = "UPPERCASE")] f3: usize }
+ pre: { #[allow(dead_code)] fn print<T>(_: T) -> String { String::new() } }
+ init: { f1: "123", f2: "456", f3: 789 }
+ expected: ["f1", "f2", "F3"], ["123", "456", ""],
+);
+
+#[test]
+fn rename_all_variants() {
+ macro_rules! test_case {
+ ( $name:ident, $case:expr ) => {
+ #[derive(Tabled)]
+ #[tabled(rename_all = $case)]
+ struct $name {
+ field: usize,
+ }
+ };
+ }
+
+ test_case!(S1, "UPPERCASE");
+ test_case!(S2, "lowercase");
+ test_case!(S3, "camelCase");
+ test_case!(S4, "PascalCase");
+ test_case!(S5, "snake_case");
+ test_case!(S6, "SCREAMING_SNAKE_CASE");
+ test_case!(S7, "kebab-case");
+ test_case!(S8, "verbatimcase");
+}
+
+// #[test]
+// fn wrong_rename_all_panic_when_used_as_not_first() {
+// #[derive(Tabled)]
+// #[tabled(rename_all = "UPPERCASE")]
+// #[tabled(rename_all = "some wrong case")]
+// struct Struct1 {
+// field: usize,
+// }
+
+// let st = Struct1 { field: 789 };
+
+// assert_eq!(Struct1::headers(), vec!["FIELD"],);
+// assert_eq!(st.fields(), vec!["789"]);
+
+// #[derive(Tabled)]
+// #[tabled(rename_all = "UPPERCASE", rename_all = "some wrong case")]
+// struct Struct2 {
+// field: usize,
+// }
+
+// let st = Struct2 { field: 789 };
+
+// assert_eq!(Struct1::headers(), vec!["FIELD"],);
+// assert_eq!(st.fields(), vec!["789"]);
+// }
+
+#[test]
+fn rename_all_gets_last_value() {
+ #[derive(Tabled)]
+ #[tabled(rename_all = "UPPERCASE")]
+ #[tabled(rename_all = "PascalCase")]
+ struct Struct1 {
+ field: usize,
+ }
+
+ let st = Struct1 { field: 789 };
+
+ assert_eq!(Struct1::headers(), vec!["Field"],);
+ assert_eq!(st.fields(), vec!["789"]);
+
+ #[derive(Tabled)]
+ #[tabled(rename_all = "UPPERCASE", rename_all = "PascalCase")]
+ struct Struct2 {
+ field: usize,
+ }
+
+ let st = Struct2 { field: 789 };
+
+ assert_eq!(Struct1::headers(), vec!["Field"],);
+ assert_eq!(st.fields(), vec!["789"]);
+}
+
+#[test]
+fn test_order_skip_usage() {
+ #[derive(Tabled, Default)]
+ pub struct Example {
+ #[tabled(skip)]
+ #[allow(dead_code)]
+ id: usize,
+ name: String,
+ #[tabled(order = 0)]
+ details: String,
+ }
+
+ #[derive(Tabled, Default)]
+ pub struct Example2 {
+ #[tabled(skip)]
+ #[allow(dead_code)]
+ id: usize,
+ name: String,
+ #[tabled(order = 1)]
+ details: String,
+ }
+
+ assert_eq!(Example::headers(), vec!["details", "name"],);
+ assert_eq!(Example::default().fields(), vec!["", ""]);
+}
+
+#[test]
+fn test_skip_enum_0() {
+ #[allow(dead_code)]
+ #[derive(Tabled)]
+ enum Letters {
+ Vowels {
+ character: char,
+ lang: u8,
+ },
+ Consonant(char),
+ #[tabled(skip)]
+ Digit,
+ }
+
+ assert_eq!(Letters::headers(), vec!["Vowels", "Consonant"]);
+ assert_eq!(Letters::Consonant('c').fields(), vec!["", "+"]);
+ assert_eq!(Letters::Digit.fields(), vec!["", ""]);
+}
+
+mod __ {
+ #[test]
+ fn dont_import_the_trait() {
+ #[derive(tabled::Tabled)]
+ struct __;
+ }
+}
diff --git a/vendor/tabled/tests/derive/mod.rs b/vendor/tabled/tests/derive/mod.rs
new file mode 100644
index 000000000..d0d4b359f
--- /dev/null
+++ b/vendor/tabled/tests/derive/mod.rs
@@ -0,0 +1 @@
+mod derive_test;
diff --git a/vendor/tabled/tests/macros/col_row_test.rs b/vendor/tabled/tests/macros/col_row_test.rs
new file mode 100644
index 000000000..e6d70edf0
--- /dev/null
+++ b/vendor/tabled/tests/macros/col_row_test.rs
@@ -0,0 +1,264 @@
+#![cfg(feature = "macros")]
+#![cfg(feature = "std")]
+
+use tabled::{
+ col, row,
+ settings::{format::Format, object::Segment, Alignment, Modify, Padding},
+};
+
+use crate::matrix::Matrix;
+use testing_table::test_table;
+
+test_table!(
+ row_pair_test,
+ row!(
+ Matrix::new(3, 3)
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Padding::new(3, 1, 0, 0)))
+ .with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]")))),
+ Matrix::new(4, 4)
+ .with(Modify::new(Segment::all()).with(Alignment::right()))
+ .with(Modify::new(Segment::all()).with(Padding::new(1, 1, 1, 1)))
+ .with(Modify::new(Segment::all()).with(Format::content(|s| format!("({s})")))),
+ ),
+ "+--------------------------------------------------------+-------------------------------------------------------------+"
+ "| +-------+--------------+--------------+--------------+ | +-----+------------+------------+------------+------------+ |"
+ "| | [N] | [column 0] | [column 1] | [column 2] | | | | | | | | |"
+ "| +-------+--------------+--------------+--------------+ | | (N) | (column 0) | (column 1) | (column 2) | (column 3) | |"
+ "| | [0] | [0-0] | [0-1] | [0-2] | | | | | | | | |"
+ "| +-------+--------------+--------------+--------------+ | +-----+------------+------------+------------+------------+ |"
+ "| | [1] | [1-0] | [1-1] | [1-2] | | | | | | | | |"
+ "| +-------+--------------+--------------+--------------+ | | (0) | (0-0) | (0-1) | (0-2) | (0-3) | |"
+ "| | [2] | [2-0] | [2-1] | [2-2] | | | | | | | | |"
+ "| +-------+--------------+--------------+--------------+ | +-----+------------+------------+------------+------------+ |"
+ "| | | | | | | | |"
+ "| | | (1) | (1-0) | (1-1) | (1-2) | (1-3) | |"
+ "| | | | | | | | |"
+ "| | +-----+------------+------------+------------+------------+ |"
+ "| | | | | | | | |"
+ "| | | (2) | (2-0) | (2-1) | (2-2) | (2-3) | |"
+ "| | | | | | | | |"
+ "| | +-----+------------+------------+------------+------------+ |"
+ "| | | | | | | | |"
+ "| | | (3) | (3-0) | (3-1) | (3-2) | (3-3) | |"
+ "| | | | | | | | |"
+ "| | +-----+------------+------------+------------+------------+ |"
+ "+--------------------------------------------------------+-------------------------------------------------------------+"
+);
+
+test_table!(
+ col_pair_test,
+ col!(
+ Matrix::new(3, 3)
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Padding::new(3, 1, 0, 0)))
+ .with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]")))),
+ Matrix::new(4, 4)
+ .with(Modify::new(Segment::all()).with(Alignment::right()))
+ .with(Modify::new(Segment::all()).with(Padding::new(1, 1, 1, 1)))
+ .with(Modify::new(Segment::all()).with(Format::content(|s| format!("({s})")))),
+ ),
+ "+-------------------------------------------------------------+"
+ "| +-------+--------------+--------------+--------------+ |"
+ "| | [N] | [column 0] | [column 1] | [column 2] | |"
+ "| +-------+--------------+--------------+--------------+ |"
+ "| | [0] | [0-0] | [0-1] | [0-2] | |"
+ "| +-------+--------------+--------------+--------------+ |"
+ "| | [1] | [1-0] | [1-1] | [1-2] | |"
+ "| +-------+--------------+--------------+--------------+ |"
+ "| | [2] | [2-0] | [2-1] | [2-2] | |"
+ "| +-------+--------------+--------------+--------------+ |"
+ "+-------------------------------------------------------------+"
+ "| +-----+------------+------------+------------+------------+ |"
+ "| | | | | | | |"
+ "| | (N) | (column 0) | (column 1) | (column 2) | (column 3) | |"
+ "| | | | | | | |"
+ "| +-----+------------+------------+------------+------------+ |"
+ "| | | | | | | |"
+ "| | (0) | (0-0) | (0-1) | (0-2) | (0-3) | |"
+ "| | | | | | | |"
+ "| +-----+------------+------------+------------+------------+ |"
+ "| | | | | | | |"
+ "| | (1) | (1-0) | (1-1) | (1-2) | (1-3) | |"
+ "| | | | | | | |"
+ "| +-----+------------+------------+------------+------------+ |"
+ "| | | | | | | |"
+ "| | (2) | (2-0) | (2-1) | (2-2) | (2-3) | |"
+ "| | | | | | | |"
+ "| +-----+------------+------------+------------+------------+ |"
+ "| | | | | | | |"
+ "| | (3) | (3-0) | (3-1) | (3-2) | (3-3) | |"
+ "| | | | | | | |"
+ "| +-----+------------+------------+------------+------------+ |"
+ "+-------------------------------------------------------------+"
+);
+
+test_table!(
+ row_duplication_test,
+ row!(
+ Matrix::new(3, 3)
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Padding::new(3, 1, 0, 0)))
+ .with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]"))));
+ 3
+ ),
+ "+--------------------------------------------------------+--------------------------------------------------------+--------------------------------------------------------+"
+ "| +-------+--------------+--------------+--------------+ | +-------+--------------+--------------+--------------+ | +-------+--------------+--------------+--------------+ |"
+ "| | [N] | [column 0] | [column 1] | [column 2] | | | [N] | [column 0] | [column 1] | [column 2] | | | [N] | [column 0] | [column 1] | [column 2] | |"
+ "| +-------+--------------+--------------+--------------+ | +-------+--------------+--------------+--------------+ | +-------+--------------+--------------+--------------+ |"
+ "| | [0] | [0-0] | [0-1] | [0-2] | | | [0] | [0-0] | [0-1] | [0-2] | | | [0] | [0-0] | [0-1] | [0-2] | |"
+ "| +-------+--------------+--------------+--------------+ | +-------+--------------+--------------+--------------+ | +-------+--------------+--------------+--------------+ |"
+ "| | [1] | [1-0] | [1-1] | [1-2] | | | [1] | [1-0] | [1-1] | [1-2] | | | [1] | [1-0] | [1-1] | [1-2] | |"
+ "| +-------+--------------+--------------+--------------+ | +-------+--------------+--------------+--------------+ | +-------+--------------+--------------+--------------+ |"
+ "| | [2] | [2-0] | [2-1] | [2-2] | | | [2] | [2-0] | [2-1] | [2-2] | | | [2] | [2-0] | [2-1] | [2-2] | |"
+ "| +-------+--------------+--------------+--------------+ | +-------+--------------+--------------+--------------+ | +-------+--------------+--------------+--------------+ |"
+ "+--------------------------------------------------------+--------------------------------------------------------+--------------------------------------------------------+"
+);
+
+test_table!(
+ col_and_rows_test,
+ col!(
+ row!(
+ Matrix::new(3, 3)
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Padding::new(3, 1, 0, 0)))
+ .with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]")))),
+ Matrix::new(4, 4)
+ .with(Modify::new(Segment::all()).with(Alignment::right()))
+ .with(Modify::new(Segment::all()).with(Padding::new(1, 1, 1, 1)))
+ .with(Modify::new(Segment::all()).with(Format::content(|s| format!("({s})")))),
+ ),
+ Matrix::new(3, 5)
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Padding::new(2, 2, 0, 0)))
+ .with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]")))),
+ ),
+ "+--------------------------------------------------------------------------------------------------------------------------+"
+ "| +--------------------------------------------------------+-------------------------------------------------------------+ |"
+ "| | +-------+--------------+--------------+--------------+ | +-----+------------+------------+------------+------------+ | |"
+ "| | | [N] | [column 0] | [column 1] | [column 2] | | | | | | | | | |"
+ "| | +-------+--------------+--------------+--------------+ | | (N) | (column 0) | (column 1) | (column 2) | (column 3) | | |"
+ "| | | [0] | [0-0] | [0-1] | [0-2] | | | | | | | | | |"
+ "| | +-------+--------------+--------------+--------------+ | +-----+------------+------------+------------+------------+ | |"
+ "| | | [1] | [1-0] | [1-1] | [1-2] | | | | | | | | | |"
+ "| | +-------+--------------+--------------+--------------+ | | (0) | (0-0) | (0-1) | (0-2) | (0-3) | | |"
+ "| | | [2] | [2-0] | [2-1] | [2-2] | | | | | | | | | |"
+ "| | +-------+--------------+--------------+--------------+ | +-----+------------+------------+------------+------------+ | |"
+ "| | | | | | | | | | |"
+ "| | | | (1) | (1-0) | (1-1) | (1-2) | (1-3) | | |"
+ "| | | | | | | | | | |"
+ "| | | +-----+------------+------------+------------+------------+ | |"
+ "| | | | | | | | | | |"
+ "| | | | (2) | (2-0) | (2-1) | (2-2) | (2-3) | | |"
+ "| | | | | | | | | | |"
+ "| | | +-----+------------+------------+------------+------------+ | |"
+ "| | | | | | | | | | |"
+ "| | | | (3) | (3-0) | (3-1) | (3-2) | (3-3) | | |"
+ "| | | | | | | | | | |"
+ "| | | +-----+------------+------------+------------+------------+ | |"
+ "| +--------------------------------------------------------+-------------------------------------------------------------+ |"
+ "+--------------------------------------------------------------------------------------------------------------------------+"
+ "| +-------+--------------+--------------+--------------+--------------+--------------+ |"
+ "| | [N] | [column 0] | [column 1] | [column 2] | [column 3] | [column 4] | |"
+ "| +-------+--------------+--------------+--------------+--------------+--------------+ |"
+ "| | [0] | [0-0] | [0-1] | [0-2] | [0-3] | [0-4] | |"
+ "| +-------+--------------+--------------+--------------+--------------+--------------+ |"
+ "| | [1] | [1-0] | [1-1] | [1-2] | [1-3] | [1-4] | |"
+ "| +-------+--------------+--------------+--------------+--------------+--------------+ |"
+ "| | [2] | [2-0] | [2-1] | [2-2] | [2-3] | [2-4] | |"
+ "| +-------+--------------+--------------+--------------+--------------+--------------+ |"
+ "+--------------------------------------------------------------------------------------------------------------------------+"
+);
+
+test_table!(
+ row_and_col_test,
+ row!(
+ col!(
+ Matrix::new(3, 3)
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Padding::new(3, 1, 0, 0)))
+ .with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]")))),
+ Matrix::new(4, 4)
+ .with(Modify::new(Segment::all()).with(Alignment::right()))
+ .with(Modify::new(Segment::all()).with(Padding::new(1, 1, 1, 1)))
+ .with(Modify::new(Segment::all()).with(Format::content(|s| format!("({s})")))),
+ ),
+ Matrix::new(3, 5)
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Padding::new(2, 2, 0, 0)))
+ .with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]")))),
+ ),
+ "+-----------------------------------------------------------------+--------------------------------------------------------------------------------------+"
+ "| +-------------------------------------------------------------+ | +-------+--------------+--------------+--------------+--------------+--------------+ |"
+ "| | +-------+--------------+--------------+--------------+ | | | [N] | [column 0] | [column 1] | [column 2] | [column 3] | [column 4] | |"
+ "| | | [N] | [column 0] | [column 1] | [column 2] | | | +-------+--------------+--------------+--------------+--------------+--------------+ |"
+ "| | +-------+--------------+--------------+--------------+ | | | [0] | [0-0] | [0-1] | [0-2] | [0-3] | [0-4] | |"
+ "| | | [0] | [0-0] | [0-1] | [0-2] | | | +-------+--------------+--------------+--------------+--------------+--------------+ |"
+ "| | +-------+--------------+--------------+--------------+ | | | [1] | [1-0] | [1-1] | [1-2] | [1-3] | [1-4] | |"
+ "| | | [1] | [1-0] | [1-1] | [1-2] | | | +-------+--------------+--------------+--------------+--------------+--------------+ |"
+ "| | +-------+--------------+--------------+--------------+ | | | [2] | [2-0] | [2-1] | [2-2] | [2-3] | [2-4] | |"
+ "| | | [2] | [2-0] | [2-1] | [2-2] | | | +-------+--------------+--------------+--------------+--------------+--------------+ |"
+ "| | +-------+--------------+--------------+--------------+ | | |"
+ "| +-------------------------------------------------------------+ | |"
+ "| | +-----+------------+------------+------------+------------+ | | |"
+ "| | | | | | | | | | |"
+ "| | | (N) | (column 0) | (column 1) | (column 2) | (column 3) | | | |"
+ "| | | | | | | | | | |"
+ "| | +-----+------------+------------+------------+------------+ | | |"
+ "| | | | | | | | | | |"
+ "| | | (0) | (0-0) | (0-1) | (0-2) | (0-3) | | | |"
+ "| | | | | | | | | | |"
+ "| | +-----+------------+------------+------------+------------+ | | |"
+ "| | | | | | | | | | |"
+ "| | | (1) | (1-0) | (1-1) | (1-2) | (1-3) | | | |"
+ "| | | | | | | | | | |"
+ "| | +-----+------------+------------+------------+------------+ | | |"
+ "| | | | | | | | | | |"
+ "| | | (2) | (2-0) | (2-1) | (2-2) | (2-3) | | | |"
+ "| | | | | | | | | | |"
+ "| | +-----+------------+------------+------------+------------+ | | |"
+ "| | | | | | | | | | |"
+ "| | | (3) | (3-0) | (3-1) | (3-2) | (3-3) | | | |"
+ "| | | | | | | | | | |"
+ "| | +-----+------------+------------+------------+------------+ | | |"
+ "| +-------------------------------------------------------------+ | |"
+ "+-----------------------------------------------------------------+--------------------------------------------------------------------------------------+"
+);
+
+test_table!(
+ row_str_test,
+ row!("hello", "world"),
+ "+-------+-------+"
+ "| hello | world |"
+ "+-------+-------+"
+);
+
+test_table!(
+ row_str_duplication_test,
+ row!("duplicate me"; 5),
+ "+--------------+--------------+--------------+--------------+--------------+"
+ "| duplicate me | duplicate me | duplicate me | duplicate me | duplicate me |"
+ "+--------------+--------------+--------------+--------------+--------------+"
+);
+
+test_table!(
+ row_display_mixed_test,
+ row!("str", "string".to_string(), 55, false),
+ "+-----+--------+----+-------+"
+ "| str | string | 55 | false |"
+ "+-----+--------+----+-------+"
+);
+
+test_table!(
+ col_display_mixed_test,
+ col!("str", "string".to_string(), 55, false),
+ "+--------+"
+ "| str |"
+ "+--------+"
+ "| string |"
+ "+--------+"
+ "| 55 |"
+ "+--------+"
+ "| false |"
+ "+--------+"
+);
diff --git a/vendor/tabled/tests/macros/mod.rs b/vendor/tabled/tests/macros/mod.rs
new file mode 100644
index 000000000..be52241e9
--- /dev/null
+++ b/vendor/tabled/tests/macros/mod.rs
@@ -0,0 +1 @@
+mod col_row_test;
diff --git a/vendor/tabled/tests/main.rs b/vendor/tabled/tests/main.rs
new file mode 100644
index 000000000..35004b906
--- /dev/null
+++ b/vendor/tabled/tests/main.rs
@@ -0,0 +1,7 @@
+mod core;
+mod derive;
+mod macros;
+mod settings;
+
+#[cfg(feature = "std")]
+mod matrix;
diff --git a/vendor/tabled/tests/matrix/matrix.rs b/vendor/tabled/tests/matrix/matrix.rs
new file mode 100644
index 000000000..48ba55f9b
--- /dev/null
+++ b/vendor/tabled/tests/matrix/matrix.rs
@@ -0,0 +1,161 @@
+use std::{
+ fmt::{self, Display},
+ iter::FromIterator,
+ string::ToString,
+};
+
+use tabled::{
+ grid::config::ColoredConfig,
+ grid::dimension::CompleteDimensionVecRecords,
+ grid::records::vec_records::{CellInfo, VecRecords},
+ settings::{object::Segment, Alignment, Modify, TableOption},
+ Table, Tabled,
+};
+
+use super::matrix_list::MatrixList;
+
+/// A helper table factory.
+///
+/// It uses center alignment by default, because it's more complex and may spot more issues.
+#[derive(Debug, Clone)]
+pub struct Matrix {
+ data: Vec<Vec<String>>,
+ size: (usize, usize),
+}
+
+impl Matrix {
+ pub fn empty() -> Self {
+ Self {
+ data: vec![],
+ size: (0, 0),
+ }
+ }
+
+ pub fn with_no_frame(rows: usize, columns: usize) -> Self {
+ Self {
+ data: create_matrix(rows, columns),
+ size: (rows, columns),
+ }
+ }
+
+ pub fn new(rows: usize, columns: usize) -> Self {
+ Self::with_no_frame(rows, columns)
+ .with_header()
+ .with_index()
+ }
+
+ pub fn vec(rows: usize, columns: usize) -> Vec<Vec<String>> {
+ Self::new(rows, columns).to_vec()
+ }
+
+ pub fn table(rows: usize, columns: usize) -> Table {
+ Self::new(rows, columns).to_table()
+ }
+
+ pub fn list<const ROWS: usize, const COLUMNS: usize>() -> Vec<MatrixList<COLUMNS, true>> {
+ create_list::<ROWS, COLUMNS>()
+ }
+
+ pub fn iter<I, T>(iter: I) -> Table
+ where
+ I: IntoIterator<Item = T>,
+ T: Tabled,
+ {
+ let mut table = tabled::Table::new(iter);
+ table.with(Modify::new(Segment::all()).with(Alignment::center()));
+ table
+ }
+
+ pub fn with_index(mut self) -> Self {
+ set_index(&mut self.data);
+ self
+ }
+
+ pub fn with_header(mut self) -> Self {
+ set_header(&mut self.data, self.size.1);
+ self
+ }
+
+ pub fn insert<V: ToString>(mut self, pos: tabled::grid::config::Position, value: V) -> Self {
+ self.data[pos.0][pos.1] = value.to_string();
+ self
+ }
+
+ pub fn to_table(&self) -> Table {
+ let mut table = tabled::Table::from_iter(self.data.clone());
+ table.with(Modify::new(Segment::all()).with(Alignment::center()));
+ table
+ }
+
+ pub fn to_vec(&self) -> Vec<Vec<String>> {
+ self.data.clone()
+ }
+
+ pub fn with<O>(self, opt: O) -> Table
+ where
+ O: TableOption<
+ VecRecords<CellInfo<String>>,
+ CompleteDimensionVecRecords<'static>,
+ ColoredConfig,
+ >,
+ {
+ let mut table = self.to_table();
+ table.with(opt);
+ table
+ }
+}
+
+impl Display for Matrix {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ self.clone().to_table().fmt(f)
+ }
+}
+
+fn create_matrix(rows: usize, columns: usize) -> Vec<Vec<String>> {
+ let mut arr = Vec::with_capacity(rows);
+ for row in 0..rows {
+ let mut data = Vec::with_capacity(columns);
+ for column in 0..columns {
+ let text = format!("{row}-{column}");
+ data.push(text);
+ }
+
+ arr.push(data);
+ }
+
+ arr
+}
+
+fn set_header(data: &mut Vec<Vec<String>>, columns: usize) {
+ data.insert(
+ 0,
+ (0..columns)
+ .map(|n| format!("column {n}"))
+ .collect::<Vec<_>>(),
+ );
+}
+
+fn set_index(data: &mut [Vec<String>]) {
+ if data.is_empty() {
+ return;
+ }
+
+ data[0].insert(0, "N".to_owned());
+
+ for (n, row) in data.iter_mut().skip(1).enumerate() {
+ row.insert(0, n.to_string());
+ }
+}
+
+fn create_list<const ROWS: usize, const COLUMNS: usize>() -> Vec<MatrixList<COLUMNS, true>> {
+ let mut arr = Vec::with_capacity(ROWS);
+ for row in 0..ROWS {
+ let data = (0..COLUMNS)
+ .map(|column| format!("{row}-{column}"))
+ .collect::<Vec<_>>();
+ let list = MatrixList::with_index(row, data);
+ arr.push(list);
+ }
+
+ arr
+}
diff --git a/vendor/tabled/tests/matrix/matrix_list.rs b/vendor/tabled/tests/matrix/matrix_list.rs
new file mode 100644
index 000000000..9f58400ca
--- /dev/null
+++ b/vendor/tabled/tests/matrix/matrix_list.rs
@@ -0,0 +1,58 @@
+use std::{
+ borrow::Cow,
+ iter::once,
+ ops::{Index, IndexMut},
+};
+
+use tabled::Tabled;
+
+#[derive(Debug)]
+pub struct MatrixList<const N: usize, const INDEX: bool> {
+ data: Vec<String>,
+}
+
+impl<const N: usize> MatrixList<N, false> {
+ #[allow(dead_code)]
+ pub fn new(data: Vec<String>) -> Self {
+ Self { data }
+ }
+}
+
+impl<const N: usize> MatrixList<N, true> {
+ pub fn with_index(index: usize, mut data: Vec<String>) -> Self {
+ assert_eq!(data.len(), N);
+ data.insert(0, index.to_string());
+ Self { data }
+ }
+}
+
+impl<const N: usize, const INDEX: bool> Index<usize> for MatrixList<N, INDEX> {
+ type Output = String;
+
+ fn index(&self, index: usize) -> &Self::Output {
+ &self.data[index]
+ }
+}
+
+impl<const N: usize, const INDEX: bool> IndexMut<usize> for MatrixList<N, INDEX> {
+ fn index_mut(&mut self, index: usize) -> &mut Self::Output {
+ &mut self.data[index]
+ }
+}
+
+impl<const N: usize, const INDEX: bool> Tabled for MatrixList<N, INDEX> {
+ const LENGTH: usize = N + 1;
+
+ fn fields(&self) -> Vec<Cow<'_, str>> {
+ self.data.iter().cloned().map(Cow::Owned).collect()
+ }
+
+ fn headers() -> Vec<Cow<'static, str>> {
+ let header = (0..N).map(|n| format!("column {n}"));
+
+ match INDEX {
+ true => once("N".to_owned()).chain(header).map(Cow::Owned).collect(),
+ false => header.map(Cow::Owned).collect(),
+ }
+ }
+}
diff --git a/vendor/tabled/tests/matrix/mod.rs b/vendor/tabled/tests/matrix/mod.rs
new file mode 100644
index 000000000..d2d42cfc5
--- /dev/null
+++ b/vendor/tabled/tests/matrix/mod.rs
@@ -0,0 +1,6 @@
+#[allow(clippy::module_inception)]
+mod matrix;
+mod matrix_list;
+
+pub use matrix::Matrix;
+pub use matrix_list::MatrixList;
diff --git a/vendor/tabled/tests/settings/alignment_test.rs b/vendor/tabled/tests/settings/alignment_test.rs
new file mode 100644
index 000000000..0a8145ae2
--- /dev/null
+++ b/vendor/tabled/tests/settings/alignment_test.rs
@@ -0,0 +1,138 @@
+#![cfg(feature = "std")]
+
+use tabled::settings::{
+ locator::ByColumnName,
+ object::{Columns, Rows, Segment},
+ Alignment, Modify, Padding, Style,
+};
+
+use crate::matrix::Matrix;
+use testing_table::test_table;
+
+test_table!(
+ full_alignment,
+ Matrix::new(3, 3).with(Style::psql()).with(Modify::new(Segment::all()).with(Alignment::left())),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ head_and_data_alignment,
+ Matrix::new(3, 3)
+ .with(Modify::new(Rows::first()).with(Alignment::left()))
+ .with(Modify::new(Rows::new(1..)).with(Alignment::right())),
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "+---+----------+----------+----------+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+---+----------+----------+----------+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ full_alignment_multiline,
+ Matrix::new(3, 3).insert((3, 2), "https://\nwww\n.\nredhat\n.com\n/en")
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left())),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | https:// | 2-2 "
+ " | | www | "
+ " | | . | "
+ " | | redhat | "
+ " | | .com | "
+ " | | /en | "
+);
+
+test_table!(
+ vertical_alignment_test,
+ Matrix::new(3, 3)
+ .insert((2, 2), "E\nnde\navou\nros")
+ .insert((3, 2), "Red\nHat")
+ .insert((3, 3), "https://\nwww\n.\nredhat\n.com\n/en")
+ .with(Style::psql())
+ .with(Modify::new(Columns::new(1..)).with(Alignment::bottom())),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | | E | "
+ " | | nde | "
+ " | | avou | "
+ " | 1-0 | ros | 1-2 "
+ " 2 | | | https:// "
+ " | | | www "
+ " | | | . "
+ " | | | redhat "
+ " | | Red | .com "
+ " | 2-0 | Hat | /en "
+);
+
+test_table!(
+ alignment_doesnt_change_padding,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Padding::new(3, 0, 0, 0)))
+ .with(Modify::new(Segment::all()).with(Alignment::left())),
+ " N| column 0| column 1| column 2"
+ "----+-----------+-----------+-----------"
+ " 0| 0-0 | 0-1 | 0-2 "
+ " 1| 1-0 | 1-1 | 1-2 "
+ " 2| 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ alignment_global,
+ Matrix::new(3, 3).with(Style::psql()).with(Alignment::right()),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ padding_by_column_name,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(ByColumnName::new("column 0")).with(Padding::new(3, 3, 0, 0)))
+ .with(Modify::new(Segment::all()).with(Alignment::center())),
+ " N | column 0 | column 1 | column 2 "
+ "---+--------------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ padding_by_column_name_not_first_row,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(ByColumnName::new("0-2")).with(Padding::new(3, 3, 0, 0)))
+ .with(Modify::new(Segment::all()).with(Alignment::center())),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ padding_by_column_name_not_existing,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(ByColumnName::new("column 01123123")).with(Padding::new(3, 3, 0, 0)))
+ .with(Modify::new(Segment::all()).with(Alignment::center())),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
diff --git a/vendor/tabled/tests/settings/color_test.rs b/vendor/tabled/tests/settings/color_test.rs
new file mode 100644
index 000000000..b81c63ae3
--- /dev/null
+++ b/vendor/tabled/tests/settings/color_test.rs
@@ -0,0 +1,34 @@
+#![cfg(feature = "std")]
+
+use tabled::settings::{Color, Modify};
+
+use crate::matrix::Matrix;
+use testing_table::test_table;
+
+test_table!(
+ color_global,
+ Matrix::new(3, 3).with(Color::FG_MAGENTA),
+ "+---+----------+----------+----------+"
+ "| \u{1b}[35mN\u{1b}[39m | \u{1b}[35mcolumn 0\u{1b}[39m | \u{1b}[35mcolumn 1\u{1b}[39m | \u{1b}[35mcolumn 2\u{1b}[39m |"
+ "+---+----------+----------+----------+"
+ "| \u{1b}[35m0\u{1b}[39m | \u{1b}[35m0-0\u{1b}[39m | \u{1b}[35m0-1\u{1b}[39m | \u{1b}[35m0-2\u{1b}[39m |"
+ "+---+----------+----------+----------+"
+ "| \u{1b}[35m1\u{1b}[39m | \u{1b}[35m1-0\u{1b}[39m | \u{1b}[35m1-1\u{1b}[39m | \u{1b}[35m1-2\u{1b}[39m |"
+ "+---+----------+----------+----------+"
+ "| \u{1b}[35m2\u{1b}[39m | \u{1b}[35m2-0\u{1b}[39m | \u{1b}[35m2-1\u{1b}[39m | \u{1b}[35m2-2\u{1b}[39m |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ color_cell,
+ Matrix::new(3, 3).with(Modify::new((0, 0)).with(Color::BG_BRIGHT_BLACK)),
+ "+---+----------+----------+----------+"
+ "| \u{1b}[100mN\u{1b}[49m | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "+---+----------+----------+----------+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+---+----------+----------+----------+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+----------+----------+----------+"
+);
diff --git a/vendor/tabled/tests/settings/colorization.rs b/vendor/tabled/tests/settings/colorization.rs
new file mode 100644
index 000000000..49911c494
--- /dev/null
+++ b/vendor/tabled/tests/settings/colorization.rs
@@ -0,0 +1,64 @@
+#![cfg(feature = "std")]
+
+use tabled::settings::{
+ object::{Cell, Object},
+ themes::Colorization,
+ Color,
+};
+
+use crate::matrix::Matrix;
+use testing_table::test_table;
+
+test_table!(
+ chess_2x3,
+ Matrix::new(2, 3).with(Colorization::chess(color1(), color2())),
+ "+---+----------+----------+----------+\n|\u{1b}[41m \u{1b}[49m\u{1b}[41mN\u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\u{1b}[41mcolumn 0\u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[106m \u{1b}[49m\u{1b}[106mcolumn 1\u{1b}[49m\u{1b}[106m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\u{1b}[41mcolumn 2\u{1b}[49m\u{1b}[41m \u{1b}[49m|\n+---+----------+----------+----------+\n|\u{1b}[106m \u{1b}[49m\u{1b}[106m0\u{1b}[49m\u{1b}[106m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m0-0\u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m0-1\u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m0-2\u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m|\n+---+----------+----------+----------+\n|\u{1b}[41m \u{1b}[49m\u{1b}[41m1\u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m1-0\u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m1-1\u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m1-2\u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m|\n+---+----------+----------+----------+"
+);
+
+test_table!(
+ chess_3x3,
+ Matrix::new(3, 3).with(Colorization::chess(color1(), color2())),
+ "+---+----------+----------+----------+\n|\u{1b}[41m \u{1b}[49m\u{1b}[41mN\u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[106m \u{1b}[49m\u{1b}[106mcolumn 0\u{1b}[49m\u{1b}[106m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\u{1b}[41mcolumn 1\u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[106m \u{1b}[49m\u{1b}[106mcolumn 2\u{1b}[49m\u{1b}[106m \u{1b}[49m|\n+---+----------+----------+----------+\n|\u{1b}[106m \u{1b}[49m\u{1b}[106m0\u{1b}[49m\u{1b}[106m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m0-0\u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m0-1\u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m0-2\u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m|\n+---+----------+----------+----------+\n|\u{1b}[41m \u{1b}[49m\u{1b}[41m1\u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m1-0\u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m1-1\u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m1-2\u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m|\n+---+----------+----------+----------+\n|\u{1b}[106m \u{1b}[49m\u{1b}[106m2\u{1b}[49m\u{1b}[106m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m2-0\u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m2-1\u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m2-2\u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m|\n+---+----------+----------+----------+"
+);
+
+test_table!(
+ rows,
+ Matrix::new(2, 3).with(Colorization::rows([color1(), color2(), color3()])),
+ "+---+----------+----------+----------+\n|\u{1b}[41m \u{1b}[49m\u{1b}[41mN\u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\u{1b}[41mcolumn 0\u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\u{1b}[41mcolumn 1\u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\u{1b}[41mcolumn 2\u{1b}[49m\u{1b}[41m \u{1b}[49m|\n+---+----------+----------+----------+\n|\u{1b}[106m \u{1b}[49m\u{1b}[106m0\u{1b}[49m\u{1b}[106m \u{1b}[49m|\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m0-0\u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m|\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m0-1\u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m|\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m0-2\u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m|\n+---+----------+----------+----------+\n|\u{1b}[1m \u{1b}[22m\u{1b}[1m1\u{1b}[22m\u{1b}[1m \u{1b}[22m|\u{1b}[1m \u{1b}[22m\u{1b}[1m \u{1b}[22m\u{1b}[1m1-0\u{1b}[22m\u{1b}[1m \u{1b}[22m\u{1b}[1m \u{1b}[22m|\u{1b}[1m \u{1b}[22m\u{1b}[1m \u{1b}[22m\u{1b}[1m1-1\u{1b}[22m\u{1b}[1m \u{1b}[22m\u{1b}[1m \u{1b}[22m|\u{1b}[1m \u{1b}[22m\u{1b}[1m \u{1b}[22m\u{1b}[1m1-2\u{1b}[22m\u{1b}[1m \u{1b}[22m\u{1b}[1m \u{1b}[22m|\n+---+----------+----------+----------+"
+);
+
+test_table!(
+ columns,
+ Matrix::new(2, 3).with(Colorization::columns([color1(), color2(), color3()])),
+ "+---+----------+----------+----------+\n|\u{1b}[41m \u{1b}[49m\u{1b}[41mN\u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[106m \u{1b}[49m\u{1b}[106mcolumn 0\u{1b}[49m\u{1b}[106m \u{1b}[49m|\u{1b}[1m \u{1b}[22m\u{1b}[1mcolumn 1\u{1b}[22m\u{1b}[1m \u{1b}[22m|\u{1b}[41m \u{1b}[49m\u{1b}[41mcolumn 2\u{1b}[49m\u{1b}[41m \u{1b}[49m|\n+---+----------+----------+----------+\n|\u{1b}[41m \u{1b}[49m\u{1b}[41m0\u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m0-0\u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m|\u{1b}[1m \u{1b}[22m\u{1b}[1m \u{1b}[22m\u{1b}[1m0-1\u{1b}[22m\u{1b}[1m \u{1b}[22m\u{1b}[1m \u{1b}[22m|\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m0-2\u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m|\n+---+----------+----------+----------+\n|\u{1b}[41m \u{1b}[49m\u{1b}[41m1\u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m1-0\u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m|\u{1b}[1m \u{1b}[22m\u{1b}[1m \u{1b}[22m\u{1b}[1m1-1\u{1b}[22m\u{1b}[1m \u{1b}[22m\u{1b}[1m \u{1b}[22m|\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m1-2\u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m|\n+---+----------+----------+----------+"
+);
+
+test_table!(
+ by_row,
+ Matrix::new(2, 3).with(Colorization::by_row([color1(), color2(), color3()])),
+ "+---+----------+----------+----------+\n|\u{1b}[41m \u{1b}[49m\u{1b}[41mN\u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[106m \u{1b}[49m\u{1b}[106mcolumn 0\u{1b}[49m\u{1b}[106m \u{1b}[49m|\u{1b}[1m \u{1b}[22m\u{1b}[1mcolumn 1\u{1b}[22m\u{1b}[1m \u{1b}[22m|\u{1b}[41m \u{1b}[49m\u{1b}[41mcolumn 2\u{1b}[49m\u{1b}[41m \u{1b}[49m|\n+---+----------+----------+----------+\n|\u{1b}[106m \u{1b}[49m\u{1b}[106m0\u{1b}[49m\u{1b}[106m \u{1b}[49m|\u{1b}[1m \u{1b}[22m\u{1b}[1m \u{1b}[22m\u{1b}[1m0-0\u{1b}[22m\u{1b}[1m \u{1b}[22m\u{1b}[1m \u{1b}[22m|\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m0-1\u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m0-2\u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m|\n+---+----------+----------+----------+\n|\u{1b}[1m \u{1b}[22m\u{1b}[1m1\u{1b}[22m\u{1b}[1m \u{1b}[22m|\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m1-0\u{1b}[49m\u{1b}[41m \u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m1-1\u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m|\u{1b}[1m \u{1b}[22m\u{1b}[1m \u{1b}[22m\u{1b}[1m1-2\u{1b}[22m\u{1b}[1m \u{1b}[22m\u{1b}[1m \u{1b}[22m|\n+---+----------+----------+----------+"
+);
+
+test_table!(
+ by_column,
+ Matrix::new(2, 3).with(Colorization::by_column([color1(), color2(), color3()])),
+ "+---+----------+----------+----------+\n|\u{1b}[41m \u{1b}[49m\u{1b}[41mN\u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\u{1b}[41mcolumn 0\u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\u{1b}[41mcolumn 1\u{1b}[49m\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\u{1b}[41mcolumn 2\u{1b}[49m\u{1b}[41m \u{1b}[49m|\n+---+----------+----------+----------+\n|\u{1b}[106m \u{1b}[49m\u{1b}[106m0\u{1b}[49m\u{1b}[106m \u{1b}[49m|\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m0-0\u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m|\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m0-1\u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m|\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m0-2\u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m|\n+---+----------+----------+----------+\n|\u{1b}[1m \u{1b}[22m\u{1b}[1m1\u{1b}[22m\u{1b}[1m \u{1b}[22m|\u{1b}[1m \u{1b}[22m\u{1b}[1m \u{1b}[22m\u{1b}[1m1-0\u{1b}[22m\u{1b}[1m \u{1b}[22m\u{1b}[1m \u{1b}[22m|\u{1b}[1m \u{1b}[22m\u{1b}[1m \u{1b}[22m\u{1b}[1m1-1\u{1b}[22m\u{1b}[1m \u{1b}[22m\u{1b}[1m \u{1b}[22m|\u{1b}[1m \u{1b}[22m\u{1b}[1m \u{1b}[22m\u{1b}[1m1-2\u{1b}[22m\u{1b}[1m \u{1b}[22m\u{1b}[1m \u{1b}[22m|\n+---+----------+----------+----------+"
+);
+
+test_table!(
+ exact,
+ Matrix::new(2, 3).with(Colorization::exact([color1(), color2(), color3()], Cell::new(0, 0).and(Cell::new(1, 1)).and(Cell::new(2, 2)))),
+ "+---+----------+----------+----------+\n|\u{1b}[41m \u{1b}[49m\u{1b}[41mN\u{1b}[49m\u{1b}[41m \u{1b}[49m| column 0 | column 1 | column 2 |\n+---+----------+----------+----------+\n| 0 |\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m0-0\u{1b}[49m\u{1b}[106m \u{1b}[49m\u{1b}[106m \u{1b}[49m| 0-1 | 0-2 |\n+---+----------+----------+----------+\n| 1 | 1-0 |\u{1b}[1m \u{1b}[22m\u{1b}[1m \u{1b}[22m\u{1b}[1m1-1\u{1b}[22m\u{1b}[1m \u{1b}[22m\u{1b}[1m \u{1b}[22m| 1-2 |\n+---+----------+----------+----------+"
+);
+
+fn color1() -> Color {
+ Color::BG_RED
+}
+
+fn color2() -> Color {
+ Color::BG_BRIGHT_CYAN
+}
+
+fn color3() -> Color {
+ Color::BOLD
+}
diff --git a/vendor/tabled/tests/settings/column_names_test.rs b/vendor/tabled/tests/settings/column_names_test.rs
new file mode 100644
index 000000000..c2b23f1e3
--- /dev/null
+++ b/vendor/tabled/tests/settings/column_names_test.rs
@@ -0,0 +1,270 @@
+#![cfg(feature = "std")]
+
+use tabled::{
+ grid::config::AlignmentHorizontal,
+ settings::{themes::ColumnNames, Color},
+ Table,
+};
+
+use crate::matrix::Matrix;
+use testing_table::test_table;
+
+test_table!(
+ new,
+ Matrix::new(3, 3).with(ColumnNames::new(["1", "2", "3", "4"])),
+ "+1--+2---------+3---------+4---------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "+---+----------+----------+----------+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+---+----------+----------+----------+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ new_more_names_then_columns,
+ Matrix::new(3, 3).with(ColumnNames::new(["1", "2", "3", "4", "5", "6", "7"])),
+ "+1--+2---------+3---------+4---------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "+---+----------+----------+----------+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+---+----------+----------+----------+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ new_less_names_then_columns,
+ Matrix::new(3, 3).with(ColumnNames::new(["1", "2"])),
+ "+1--+2---------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "+---+----------+----------+----------+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+---+----------+----------+----------+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ new_empty,
+ Matrix::new(3, 3).with(ColumnNames::new([""; 0])),
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "+---+----------+----------+----------+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+---+----------+----------+----------+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ default,
+ Matrix::new(3, 3).with(ColumnNames::default()),
+ "+N--+column 0+column 1+column 2+"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "+---+--------+--------+--------+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+---+--------+--------+--------+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+--------+--------+--------+"
+);
+
+test_table!(
+ alignment_left,
+ Table::new([("Hello", "World"), ("and", "looooong\nword")])
+ .with(ColumnNames::default().set_alignment(AlignmentHorizontal::Left)),
+ "+&str---+&str------+"
+ "| Hello | World |"
+ "+-------+----------+"
+ "| and | looooong |"
+ "| | word |"
+ "+-------+----------+"
+);
+
+test_table!(
+ alignment_right,
+ Table::new([("Hello", "World"), ("and", "looooong\nword")])
+ .with(ColumnNames::default().set_alignment(AlignmentHorizontal::Right)),
+ "+---&str+------&str+"
+ "| Hello | World |"
+ "+-------+----------+"
+ "| and | looooong |"
+ "| | word |"
+ "+-------+----------+"
+);
+
+test_table!(
+ alignment_center,
+ Table::new([("Hello", "World"), ("and", "looooong\nword")])
+ .with(ColumnNames::default().set_alignment(AlignmentHorizontal::Center)),
+ "+-&str--+---&str---+"
+ "| Hello | World |"
+ "+-------+----------+"
+ "| and | looooong |"
+ "| | word |"
+ "+-------+----------+"
+);
+
+test_table!(
+ alignment_left_offset,
+ Table::new([("Hello", "World"), ("and", "looooong\nword")])
+ .with(ColumnNames::default().set_alignment(AlignmentHorizontal::Left).set_offset(1)),
+ "+-&str--+-&str-----+"
+ "| Hello | World |"
+ "+-------+----------+"
+ "| and | looooong |"
+ "| | word |"
+ "+-------+----------+"
+);
+
+test_table!(
+ alignment_left_offset_big,
+ Table::new([("Hello", "World"), ("and", "looooong\nword")])
+ .with(ColumnNames::default().set_alignment(AlignmentHorizontal::Left).set_offset(30)),
+ "+------------------------------&str+------------------------------&str+"
+ "| Hello | World |"
+ "+----------------------------------+----------------------------------+"
+ "| and | looooong |"
+ "| | word |"
+ "+----------------------------------+----------------------------------+"
+);
+
+test_table!(
+ alignment_left_offset_0,
+ Table::new([("Hello", "World"), ("and", "looooong\nword")])
+ .with(ColumnNames::default().set_alignment(AlignmentHorizontal::Left).set_offset(0)),
+ "+&str---+&str------+"
+ "| Hello | World |"
+ "+-------+----------+"
+ "| and | looooong |"
+ "| | word |"
+ "+-------+----------+"
+);
+
+test_table!(
+ alignment_right_offset,
+ Table::new([("Hello", "World"), ("and", "looooong\nword")])
+ .with(ColumnNames::default().set_alignment(AlignmentHorizontal::Right).set_offset(1)),
+ "+--&str-+-----&str-+"
+ "| Hello | World |"
+ "+-------+----------+"
+ "| and | looooong |"
+ "| | word |"
+ "+-------+----------+"
+);
+
+test_table!(
+ alignment_right_offset_big,
+ Table::new([("Hello", "World"), ("and", "looooong\nword")])
+ .with(ColumnNames::default().set_alignment(AlignmentHorizontal::Right).set_offset(30)),
+ "+&str------------------------------+&str------------------------------+"
+ "| Hello | World |"
+ "+----------------------------------+----------------------------------+"
+ "| and | looooong |"
+ "| | word |"
+ "+----------------------------------+----------------------------------+"
+);
+
+test_table!(
+ alignment_right_offset_0,
+ Table::new([("Hello", "World"), ("and", "looooong\nword")])
+ .with(ColumnNames::default().set_alignment(AlignmentHorizontal::Right).set_offset(0)),
+ "+---&str+------&str+"
+ "| Hello | World |"
+ "+-------+----------+"
+ "| and | looooong |"
+ "| | word |"
+ "+-------+----------+"
+);
+
+test_table!(
+ set_line,
+ Matrix::new(3, 3).with(ColumnNames::default().set_line(1)),
+ "+---+--------+--------+--------+"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "+N--+column 0+column 1+column 2+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+---+--------+--------+--------+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+--------+--------+--------+"
+);
+
+test_table!(
+ set_line_max_out,
+ Matrix::new(3, 3).with(ColumnNames::default().set_line(100)),
+ "+---+--------+--------+--------+"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "+---+--------+--------+--------+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+---+--------+--------+--------+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+--------+--------+--------+"
+);
+
+test_table!(
+ set_line_0,
+ Matrix::new(3, 3).with(ColumnNames::default().set_line(0)),
+ "+N--+column 0+column 1+column 2+"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "+---+--------+--------+--------+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+---+--------+--------+--------+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+--------+--------+--------+"
+);
+
+test_table!(
+ set_colors_some_some,
+ Table::new([("Hello", "World"), ("and", "looooong\nword")])
+ .with(ColumnNames::default().set_colors([Some(Color::BG_BLACK), Some(Color::BG_BLUE)])),
+ "+\u{1b}[40m&\u{1b}[49m\u{1b}[40ms\u{1b}[49m\u{1b}[40mt\u{1b}[49m\u{1b}[40mr\u{1b}[49m---+\u{1b}[44m&\u{1b}[49m\u{1b}[44ms\u{1b}[49m\u{1b}[44mt\u{1b}[49m\u{1b}[44mr\u{1b}[49m------+"
+ "| Hello | World |"
+ "+-------+----------+"
+ "| and | looooong |"
+ "| | word |"
+ "+-------+----------+"
+);
+
+test_table!(
+ set_colors_none_some,
+ Table::new([("Hello", "World"), ("and", "looooong\nword")])
+ .with(ColumnNames::default().set_colors([None, Some(Color::BG_BLUE)])),
+ "+&str---+\u{1b}[44m&\u{1b}[49m\u{1b}[44ms\u{1b}[49m\u{1b}[44mt\u{1b}[49m\u{1b}[44mr\u{1b}[49m------+"
+ "| Hello | World |"
+ "+-------+----------+"
+ "| and | looooong |"
+ "| | word |"
+ "+-------+----------+"
+);
+
+test_table!(
+ set_colors_none_none,
+ Table::new([("Hello", "World"), ("and", "looooong\nword")])
+ .with(ColumnNames::default().set_colors([None, None])),
+ "+&str---+&str------+"
+ "| Hello | World |"
+ "+-------+----------+"
+ "| and | looooong |"
+ "| | word |"
+ "+-------+----------+"
+);
+
+test_table!(
+ set_colors_empty,
+ Table::new([("Hello", "World"), ("and", "looooong\nword")])
+ .with(ColumnNames::default().set_colors([None; 0])),
+ "+&str---+&str------+"
+ "| Hello | World |"
+ "+-------+----------+"
+ "| and | looooong |"
+ "| | word |"
+ "+-------+----------+"
+);
diff --git a/vendor/tabled/tests/settings/concat_test.rs b/vendor/tabled/tests/settings/concat_test.rs
new file mode 100644
index 000000000..b988dcad9
--- /dev/null
+++ b/vendor/tabled/tests/settings/concat_test.rs
@@ -0,0 +1,140 @@
+#![cfg(feature = "std")]
+
+use tabled::settings::{Concat, Style};
+
+use crate::matrix::Matrix;
+use testing_table::test_table;
+
+test_table!(
+ join_vertical_0,
+ Matrix::new(2, 3).insert((1, 0), "123").with(Style::psql())
+ .with(Concat::vertical(Matrix::new(2, 3).to_table()))
+ .to_string(),
+ " N | column 0 | column 1 | column 2 "
+ "-----+----------+----------+----------"
+ " 123 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " N | column 0 | column 1 | column 2 "
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+);
+
+test_table!(
+ join_vertical_1,
+ Matrix::new(2, 3)
+ .with(Concat::vertical(Matrix::new(2, 3).insert((1, 0), "123").with(Style::psql()))),
+ "+-----+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+-----+----------+----------+----------+"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "+-----+----------+----------+----------+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+-----+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+-----+----------+----------+----------+"
+ "| 123 | 0-0 | 0-1 | 0-2 |"
+ "+-----+----------+----------+----------+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+-----+----------+----------+----------+"
+);
+
+test_table!(
+ join_horizontal_0,
+ {
+ let mut table1 = Matrix::table(2, 3);
+ table1.with(Style::ascii());
+ let mut table2 = Matrix::table(2, 3);
+ table2.with(Style::psql());
+ table2.with(Concat::horizontal(table1)).to_string()
+ },
+ " N | column 0 | column 1 | column 2 | N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------+---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 | 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 | 1 | 1-0 | 1-1 | 1-2 "
+);
+
+test_table!(
+ join_horizontal_1,
+ {
+ let mut table1 = Matrix::table(2, 3);
+ table1.with(Style::ascii());
+ let mut table2 = Matrix::table(2, 3);
+ table2.with(Style::psql());
+ table1.with(Concat::horizontal(table2)).to_string()
+ },
+ "+---+----------+----------+----------+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 | N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+---+----------+----------+----------+"
+ "| 0 | 0-0 | 0-1 | 0-2 | 0 | 0-0 | 0-1 | 0-2 |"
+ "+---+----------+----------+----------+---+----------+----------+----------+"
+ "| 1 | 1-0 | 1-1 | 1-2 | 1 | 1-0 | 1-1 | 1-2 |"
+ "+---+----------+----------+----------+---+----------+----------+----------+"
+);
+
+test_table!(
+ join_vertical_different_size,
+ {
+ let mut table1 = Matrix::table(2, 2);
+ table1.with(Style::psql());
+ let mut table2 = Matrix::table(2, 3);
+ table2.with(Style::psql());
+ table1.with(Concat::vertical(table2)).to_string()
+ },
+ " N | column 0 | column 1 | "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | "
+ " 1 | 1-0 | 1-1 | "
+ " N | column 0 | column 1 | column 2 "
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+);
+
+test_table!(
+ join_horizontal_different_size,
+ {
+ let mut table1 = Matrix::table(2, 3);
+ table1.with(Style::psql());
+ let mut table2 = Matrix::table(3, 3);
+ table2.with(Style::psql());
+ table1.with(Concat::horizontal(table2)).to_string()
+ },
+ " N | column 0 | column 1 | column 2 | N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------+---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 | 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 | 1 | 1-0 | 1-1 | 1-2 "
+ " | | | | 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ join_horizontal_with_not_default_empty_string,
+ {
+ let mut table1 = Matrix::table(2, 3);
+ table1.with(Style::psql());
+ let mut table2 = Matrix::table(3, 3);
+ table2.with(Style::psql());
+ table1.with(Concat::horizontal(table2).default_cell("NaN")).to_string()
+ },
+ " N | column 0 | column 1 | column 2 | N | column 0 | column 1 | column 2 "
+ "-----+----------+----------+----------+---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 | 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 | 1 | 1-0 | 1-1 | 1-2 "
+ " NaN | NaN | NaN | NaN | 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ join_vertical_with_not_default_empty_string,
+ {
+ let mut table1 = Matrix::table(2, 2);
+ table1.with(Style::psql());
+ let mut table2 = Matrix::table(2, 3);
+ table2.with(Style::psql());
+ table1.with(Concat::vertical(table2).default_cell("NaN")).to_string()
+ },
+ " N | column 0 | column 1 | NaN "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | NaN "
+ " 1 | 1-0 | 1-1 | NaN "
+ " N | column 0 | column 1 | column 2 "
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+);
diff --git a/vendor/tabled/tests/settings/disable_test.rs b/vendor/tabled/tests/settings/disable_test.rs
new file mode 100644
index 000000000..cf50acf84
--- /dev/null
+++ b/vendor/tabled/tests/settings/disable_test.rs
@@ -0,0 +1,83 @@
+#![cfg(feature = "std")]
+
+use tabled::settings::{
+ locator::ByColumnName,
+ object::{Columns, Rows, Segment},
+ style::{HorizontalLine, Style},
+ Alignment, Disable, Modify,
+};
+
+use crate::matrix::Matrix;
+use testing_table::test_table;
+
+test_table!(
+ disable_rows,
+ Matrix::new(3, 3).with(Disable::row(Rows::new(1..=2))),
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ disable_header,
+ Matrix::new(3, 3).with(Style::psql()).with(Disable::row(Rows::first())),
+ " 0 | 0-0 | 0-1 | 0-2 "
+ "---+-----+-----+-----"
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ disable_all_table_via_rows,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Disable::row(Columns::new(..))),
+ ""
+);
+
+test_table!(
+ disable_header_with_new_styling,
+ Matrix::new(3, 3)
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Disable::row(Rows::new(..1)))
+ .with(Style::modern().remove_horizontal().horizontals([HorizontalLine::new(1, Style::modern().get_horizontal())])),
+ "┌───┬─────┬─────┬─────â”"
+ "│ 0 │ 0-0 │ 0-1 │ 0-2 │"
+ "├───┼─────┼─────┼─────┤"
+ "│ 1 │ 1-0 │ 1-1 │ 1-2 │"
+ "│ 2 │ 2-0 │ 2-1 │ 2-2 │"
+ "└───┴─────┴─────┴─────┘"
+);
+
+test_table!(
+ disable_columns,
+ Matrix::new(3, 3).with(Style::psql()).with(Disable::column(Columns::first())),
+ " column 0 | column 1 | column 2 "
+ "----------+----------+----------"
+ " 0-0 | 0-1 | 0-2 "
+ " 1-0 | 1-1 | 1-2 "
+ " 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ disable_column_by_name,
+ Matrix::new(3, 3).with(Style::psql())
+ .with(Disable::column(ByColumnName::new("column 1")))
+ .with(Disable::column(ByColumnName::new("column 3"))),
+ " N | column 0 | column 2 "
+ "---+----------+----------"
+ " 0 | 0-0 | 0-2 "
+ " 1 | 1-0 | 1-2 "
+ " 2 | 2-0 | 2-2 "
+);
+
+test_table!(
+ disable_all_table_via_columns,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Disable::column(Columns::new(..))),
+ ""
+);
diff --git a/vendor/tabled/tests/settings/duplicate_test.rs b/vendor/tabled/tests/settings/duplicate_test.rs
new file mode 100644
index 000000000..6d15fbfac
--- /dev/null
+++ b/vendor/tabled/tests/settings/duplicate_test.rs
@@ -0,0 +1,189 @@
+#![cfg(feature = "std")]
+
+use tabled::settings::{
+ object::{Cell, Columns, Rows, Segment},
+ Dup,
+};
+
+use crate::matrix::Matrix;
+use testing_table::test_table;
+
+test_table!(
+ dup_cell_to_cell,
+ Matrix::new(3, 3).with(Dup::new(Cell::new(0, 0), Cell::new(0, 1))),
+ "+----------+----------+----------+----------+"
+ "| column 0 | column 0 | column 1 | column 2 |"
+ "+----------+----------+----------+----------+"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "+----------+----------+----------+----------+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+----------+----------+----------+----------+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+----------+----------+----------+----------+"
+);
+
+test_table!(
+ dup_cell_to_column,
+ Matrix::new(3, 3).with(Dup::new(Columns::single(1), Cell::new(0, 0))),
+ "+---+---+----------+----------+"
+ "| N | N | column 1 | column 2 |"
+ "+---+---+----------+----------+"
+ "| 0 | N | 0-1 | 0-2 |"
+ "+---+---+----------+----------+"
+ "| 1 | N | 1-1 | 1-2 |"
+ "+---+---+----------+----------+"
+ "| 2 | N | 2-1 | 2-2 |"
+ "+---+---+----------+----------+"
+);
+
+test_table!(
+ dup_row_to_row_single,
+ Matrix::new(3, 3).with(Dup::new(Rows::single(1), Rows::single(0))),
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+---+----------+----------+----------+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ dup_row_to_row_single_to_many,
+ Matrix::new(3, 3).with(Dup::new(Rows::new(1..3), Rows::single(0))),
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ dup_row_to_row_single_to_all,
+ Matrix::new(3, 3).with(Dup::new(Rows::new(1..), Rows::single(0))),
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ dup_row_to_column_single,
+ Matrix::new(3, 3).with(Dup::new(Columns::single(1), Rows::single(0))),
+ "+---+----------+----------+----------+"
+ "| N | N | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| 0 | column 0 | 0-1 | 0-2 |"
+ "+---+----------+----------+----------+"
+ "| 1 | column 1 | 1-1 | 1-2 |"
+ "+---+----------+----------+----------+"
+ "| 2 | column 2 | 2-1 | 2-2 |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ dup_column_to_row_single,
+ Matrix::new(3, 3).with(Dup::new(Columns::single(1), Columns::single(0))),
+ "+---+---+----------+----------+"
+ "| N | N | column 1 | column 2 |"
+ "+---+---+----------+----------+"
+ "| 0 | 0 | 0-1 | 0-2 |"
+ "+---+---+----------+----------+"
+ "| 1 | 1 | 1-1 | 1-2 |"
+ "+---+---+----------+----------+"
+ "| 2 | 2 | 2-1 | 2-2 |"
+ "+---+---+----------+----------+"
+);
+
+test_table!(
+ dup_row_to_column_single_repeat,
+ Matrix::new(4, 3).with(Dup::new(Columns::single(1), Rows::single(0))),
+ "+---+----------+----------+----------+"
+ "| N | N | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| 0 | column 0 | 0-1 | 0-2 |"
+ "+---+----------+----------+----------+"
+ "| 1 | column 1 | 1-1 | 1-2 |"
+ "+---+----------+----------+----------+"
+ "| 2 | column 2 | 2-1 | 2-2 |"
+ "+---+----------+----------+----------+"
+ "| 3 | N | 3-1 | 3-2 |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ dup_column_to_row_single_stop,
+ Matrix::new(4, 3).with(Dup::new(Rows::single(1), Columns::single(0))),
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| N | 0 | 1 | 2 |"
+ "+---+----------+----------+----------+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+---+----------+----------+----------+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+----------+----------+----------+"
+ "| 3 | 3-0 | 3-1 | 3-2 |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ dup_row_to_global,
+ Matrix::new(4, 3).with(Dup::new(Segment::all(), Rows::single(0))),
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ dup_column_to_global,
+ Matrix::new(4, 3).with(Dup::new(Segment::all(), Columns::single(0))),
+ "+---+---+---+---+"
+ "| N | 0 | 1 | 2 |"
+ "+---+---+---+---+"
+ "| 3 | N | 0 | 1 |"
+ "+---+---+---+---+"
+ "| 2 | 3 | N | 0 |"
+ "+---+---+---+---+"
+ "| 1 | 2 | 3 | N |"
+ "+---+---+---+---+"
+ "| 0 | 1 | 2 | 3 |"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ dup_empty_table,
+ Matrix::empty().with(Dup::new(Segment::all(), Columns::single(0))),
+ ""
+);
+
+test_table!(
+ dup_invalid_target,
+ Matrix::new(4, 3).with(Dup::new(Segment::all(), Columns::single(99))),
+ Matrix::new(4, 3),
+);
+
+test_table!(
+ dup_invalid_source,
+ Matrix::new(4, 3).with(Dup::new(Rows::single(99), Columns::first())),
+ Matrix::new(4, 3),
+);
diff --git a/vendor/tabled/tests/settings/extract_test.rs b/vendor/tabled/tests/settings/extract_test.rs
new file mode 100644
index 000000000..ce4697d7a
--- /dev/null
+++ b/vendor/tabled/tests/settings/extract_test.rs
@@ -0,0 +1,242 @@
+#![cfg(feature = "std")]
+
+use tabled::{
+ builder::Builder,
+ settings::{
+ object::{Rows, Segment},
+ Alignment, Disable, Extract, Format, Modify, Padding,
+ },
+};
+
+use crate::matrix::Matrix;
+use testing_table::test_table;
+
+test_table!(
+ extract_segment_full_test,
+ Matrix::new(3, 3)
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Padding::new(3, 1, 0, 0)))
+ .with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]"))))
+ .with(Extract::segment(.., ..)),
+ "+-------+--------------+--------------+--------------+"
+ "| [N] | [column 0] | [column 1] | [column 2] |"
+ "+-------+--------------+--------------+--------------+"
+ "| [0] | [0-0] | [0-1] | [0-2] |"
+ "+-------+--------------+--------------+--------------+"
+ "| [1] | [1-0] | [1-1] | [1-2] |"
+ "+-------+--------------+--------------+--------------+"
+ "| [2] | [2-0] | [2-1] | [2-2] |"
+ "+-------+--------------+--------------+--------------+"
+);
+
+test_table!(
+ extract_segment_skip_top_row_test,
+ Matrix::new(3, 3)
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Padding::new(3, 1, 0, 0)))
+ .with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]"))))
+ .with(Extract::segment(1.., ..)),
+ "+-------+---------+---------+---------+"
+ "| [0] | [0-0] | [0-1] | [0-2] |"
+ "+-------+---------+---------+---------+"
+ "| [1] | [1-0] | [1-1] | [1-2] |"
+ "+-------+---------+---------+---------+"
+ "| [2] | [2-0] | [2-1] | [2-2] |"
+ "+-------+---------+---------+---------+"
+);
+
+test_table!(
+ extract_segment_skip_column_test,
+ Matrix::new(3, 3)
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Padding::new(3, 1, 0, 0)))
+ .with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]"))))
+ .with(Extract::segment(.., 1..)),
+ "+--------------+--------------+--------------+"
+ "| [column 0] | [column 1] | [column 2] |"
+ "+--------------+--------------+--------------+"
+ "| [0-0] | [0-1] | [0-2] |"
+ "+--------------+--------------+--------------+"
+ "| [1-0] | [1-1] | [1-2] |"
+ "+--------------+--------------+--------------+"
+ "| [2-0] | [2-1] | [2-2] |"
+ "+--------------+--------------+--------------+"
+);
+
+test_table!(
+ extract_segment_bottom_right_square_test,
+ Matrix::new(3, 3)
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Padding::new(3, 1, 0, 0)))
+ .with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]"))))
+ .with(Extract::segment(2.., 2..)),
+ "+---------+---------+"
+ "| [1-1] | [1-2] |"
+ "+---------+---------+"
+ "| [2-1] | [2-2] |"
+ "+---------+---------+"
+);
+
+test_table!(
+ extract_segment_middle_section_test,
+ Matrix::new(3, 3)
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Padding::new(3, 1, 0, 0)))
+ .with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]"))))
+ .with(Extract::segment(1..3, 1..)),
+ "+---------+---------+---------+"
+ "| [0-0] | [0-1] | [0-2] |"
+ "+---------+---------+---------+"
+ "| [1-0] | [1-1] | [1-2] |"
+ "+---------+---------+---------+"
+);
+
+test_table!(
+ extract_segment_empty_test,
+ Matrix::new(3, 3).with(Extract::segment(1..1, 1..1)),
+ ""
+);
+
+test_table!(
+ extract_rows_full_test,
+ Matrix::new(3, 3)
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Padding::new(3, 1, 0, 0)))
+ .with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]"))))
+ .with(Extract::rows(..)),
+ "+-------+--------------+--------------+--------------+"
+ "| [N] | [column 0] | [column 1] | [column 2] |"
+ "+-------+--------------+--------------+--------------+"
+ "| [0] | [0-0] | [0-1] | [0-2] |"
+ "+-------+--------------+--------------+--------------+"
+ "| [1] | [1-0] | [1-1] | [1-2] |"
+ "+-------+--------------+--------------+--------------+"
+ "| [2] | [2-0] | [2-1] | [2-2] |"
+ "+-------+--------------+--------------+--------------+"
+);
+
+test_table!(
+ extract_rows_empty_test,
+ Matrix::new(3, 3).with(Extract::rows(0..0)),
+ ""
+);
+
+test_table!(
+ extract_rows_partial_view_test,
+ Matrix::new(3, 3)
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Padding::new(3, 1, 0, 0)))
+ .with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]"))))
+ .with(Extract::rows(0..=2)),
+ "+-------+--------------+--------------+--------------+"
+ "| [N] | [column 0] | [column 1] | [column 2] |"
+ "+-------+--------------+--------------+--------------+"
+ "| [0] | [0-0] | [0-1] | [0-2] |"
+ "+-------+--------------+--------------+--------------+"
+ "| [1] | [1-0] | [1-1] | [1-2] |"
+ "+-------+--------------+--------------+--------------+"
+);
+
+test_table!(
+ extract_columns_full_test,
+ Matrix::new(3, 3)
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Padding::new(3, 1, 0, 0)))
+ .with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]"))))
+ .with(Extract::columns(..)),
+ "+-------+--------------+--------------+--------------+"
+ "| [N] | [column 0] | [column 1] | [column 2] |"
+ "+-------+--------------+--------------+--------------+"
+ "| [0] | [0-0] | [0-1] | [0-2] |"
+ "+-------+--------------+--------------+--------------+"
+ "| [1] | [1-0] | [1-1] | [1-2] |"
+ "+-------+--------------+--------------+--------------+"
+ "| [2] | [2-0] | [2-1] | [2-2] |"
+ "+-------+--------------+--------------+--------------+"
+);
+
+test_table!(
+ extract_columns_empty_test,
+ Matrix::new(3, 3).with(Extract::columns(0..0)),
+ ""
+);
+
+test_table!(
+ extract_columns_partial_view_test,
+ Matrix::new(3, 3)
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Padding::new(3, 1, 0, 0)))
+ .with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]"))))
+ .with(Extract::columns(0..2)),
+ "+-------+--------------+"
+ "| [N] | [column 0] |"
+ "+-------+--------------+"
+ "| [0] | [0-0] |"
+ "+-------+--------------+"
+ "| [1] | [1-0] |"
+ "+-------+--------------+"
+ "| [2] | [2-0] |"
+ "+-------+--------------+"
+);
+
+test_table!(
+ extract_inside_test,
+ Matrix::new(3, 3).with(Disable::row(Rows::first())).with(Extract::segment(1..2, 1..2)),
+ "+-----+"
+ "| 1-0 |"
+ "+-----+"
+);
+
+test_table!(
+ extract_left_test,
+ Matrix::new(3, 3).with(Disable::row(Rows::first())).with(Extract::segment(.., ..1)),
+ "+---+"
+ "| 0 |"
+ "+---+"
+ "| 1 |"
+ "+---+"
+ "| 2 |"
+ "+---+"
+);
+
+test_table!(
+ extract_right_test,
+ Matrix::new(3, 3).with(Disable::row(Rows::first())).with(Extract::segment(.., 2..)),
+ "+-----+-----+"
+ "| 0-1 | 0-2 |"
+ "+-----+-----+"
+ "| 1-1 | 1-2 |"
+ "+-----+-----+"
+ "| 2-1 | 2-2 |"
+ "+-----+-----+"
+);
+
+test_table!(
+ extract_top_test,
+ Matrix::new(3, 3).with(Disable::row(Rows::first())).with(Extract::segment(..1, ..)),
+ "+---+-----+-----+-----+"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "+---+-----+-----+-----+"
+);
+
+test_table!(
+ extract_bottom_test,
+ Matrix::new(3, 3).with(Disable::row(Rows::first())).with(Extract::segment(2.., ..)),
+ "+---+-----+-----+-----+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+-----+-----+-----+"
+);
+
+test_table!(
+ extract_all_test,
+ Matrix::new(3, 3)
+ .with(Disable::row(Rows::first()))
+ .with(Extract::segment(3.., 3..)),
+ ""
+);
+
+test_table!(
+ extract_empty_test,
+ Builder::default().build().with(Extract::segment(.., ..)),
+ ""
+);
diff --git a/vendor/tabled/tests/settings/format_test.rs b/vendor/tabled/tests/settings/format_test.rs
new file mode 100644
index 000000000..82585ca62
--- /dev/null
+++ b/vendor/tabled/tests/settings/format_test.rs
@@ -0,0 +1,269 @@
+#![cfg(feature = "std")]
+
+use tabled::settings::{
+ object::{Cell, Columns, Object, Rows, Segment},
+ Alignment, Format, Modify, Padding, Style,
+};
+
+use crate::matrix::Matrix;
+use testing_table::test_table;
+
+#[cfg(feature = "color")]
+use owo_colors::OwoColorize;
+
+test_table!(
+ formatting_full_test,
+ Matrix::new(3, 3).with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]")))),
+ "+-----+------------+------------+------------+"
+ "| [N] | [column 0] | [column 1] | [column 2] |"
+ "+-----+------------+------------+------------+"
+ "| [0] | [0-0] | [0-1] | [0-2] |"
+ "+-----+------------+------------+------------+"
+ "| [1] | [1-0] | [1-1] | [1-2] |"
+ "+-----+------------+------------+------------+"
+ "| [2] | [2-0] | [2-1] | [2-2] |"
+ "+-----+------------+------------+------------+"
+);
+
+test_table!(
+ formatting_head_test,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Modify::new(Rows::first()).with(Format::content(|s| format!(":{s}")))),
+ "| :N | :column 0 | :column 1 | :column 2 |"
+ "|----|-----------|-----------|-----------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+);
+
+test_table!(
+ formatting_row_test,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Rows::new(1..)).with(Format::content(|s| format!("<{s}>")))),
+ " N | column 0 | column 1 | column 2 "
+ "-----+----------+----------+----------"
+ " <0> | <0-0> | <0-1> | <0-2> "
+ " <1> | <1-0> | <1-1> | <1-2> "
+ " <2> | <2-0> | <2-1> | <2-2> "
+);
+
+test_table!(
+ formatting_column_test,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Columns::single(0)).with(Format::content(|s| format!("(x) {s}")))),
+ " (x) N | column 0 | column 1 | column 2 "
+ "-------+----------+----------+----------"
+ " (x) 0 | 0-0 | 0-1 | 0-2 "
+ " (x) 1 | 1-0 | 1-1 | 1-2 "
+ " (x) 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ formatting_multiline_test,
+ Matrix::new(3, 3)
+ .insert((2, 2), "E\nnde\navou\nros")
+ .insert((3, 2), "Red\nHat")
+ .insert((3, 3), "https://\nwww\n.\nredhat\n.com\n/en")
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Format::content(|s| format!("(x) {s}")).multiline())),
+ " (x) N | (x) column 0 | (x) column 1 | (x) column 2 "
+ "-------+--------------+--------------+--------------"
+ " (x) 0 | (x) 0-0 | (x) 0-1 | (x) 0-2 "
+ " (x) 1 | (x) 1-0 | (x) E | (x) 1-2 "
+ " | | (x) nde | "
+ " | | (x) avou | "
+ " | | (x) ros | "
+ " (x) 2 | (x) 2-0 | (x) Red | (x) https:// "
+ " | | (x) Hat | (x) www "
+ " | | | (x) . "
+ " | | | (x) redhat "
+ " | | | (x) .com "
+ " | | | (x) /en "
+);
+
+test_table!(
+ formatting_cell_test,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Cell::new(0, 0)).with(Format::content(|s| format!("(x) {s}"))))
+ .with(Modify::new(Cell::new(0, 1)).with(Format::content(|s| format!("(x) {s}"))))
+ .with(Modify::new(Cell::new(0, 2)).with(Format::content(|s| format!("(x) {s}")))),
+ " (x) N | (x) column 0 | (x) column 1 | column 2 "
+ "-------+--------------+--------------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ formatting_combination_and_test,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(
+ Modify::new(Columns::single(0).and(Rows::single(0)))
+ .with(Format::content(|s| format!("(x) {s}"))),
+ ),
+ " (x) N | (x) column 0 | (x) column 1 | (x) column 2 "
+ "-------+--------------+--------------+--------------"
+ " (x) 0 | 0-0 | 0-1 | 0-2 "
+ " (x) 1 | 1-0 | 1-1 | 1-2 "
+ " (x) 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ formatting_combination_not_test,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(
+ Modify::new(Columns::single(0).and(Rows::single(0)).not(Cell::new(0, 0)))
+ .with(Format::content(|s| format!("(x) {s}"))),
+ ),
+ " N | (x) column 0 | (x) column 1 | (x) column 2 "
+ "-------+--------------+--------------+--------------"
+ " (x) 0 | 0-0 | 0-1 | 0-2 "
+ " (x) 1 | 1-0 | 1-1 | 1-2 "
+ " (x) 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ formatting_combination_inverse_test,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Columns::single(0).inverse()).with(Format::content(|s| format!("(x) {s}")))),
+ " N | (x) column 0 | (x) column 1 | (x) column 2 "
+ "---+--------------+--------------+--------------"
+ " 0 | (x) 0-0 | (x) 0-1 | (x) 0-2 "
+ " 1 | (x) 1-0 | (x) 1-1 | (x) 1-2 "
+ " 2 | (x) 2-0 | (x) 2-1 | (x) 2-2 "
+);
+
+test_table!(
+ formatting_combination_intersect_test,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(
+ Modify::new(Columns::new(1..3).intersect(Rows::new(1..3)))
+ .with(Format::content(|s| format!("(x) {s}"))),
+ ),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | (x) 0-0 | (x) 0-1 | 0-2 "
+ " 1 | (x) 1-0 | (x) 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ formatting_using_lambda_test,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Modify::new(Rows::first()).with(Format::content(|s| format!(":{s}")))),
+ "| :N | :column 0 | :column 1 | :column 2 |"
+ "|----|-----------|-----------|-----------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+);
+
+test_table!(
+ formatting_using_function_test,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Modify::new(Rows::first()).with(Format::content(str::to_uppercase))),
+ "| N | COLUMN 0 | COLUMN 1 | COLUMN 2 |"
+ "|---|----------|----------|----------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+);
+
+test_table!(
+ format_with_index,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Modify::new(Rows::first()).with(Format::positioned(|a, (b, c)| match (b, c) {
+ (0, 0) => "(0, 0)".to_string(),
+ (0, 1) => "(0, 1)".to_string(),
+ (0, 2) => "(0, 2)".to_string(),
+ _ => a.to_string(),
+ }))),
+ "| (0, 0) | (0, 1) | (0, 2) | column 2 |"
+ "|--------|--------|--------|----------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+);
+
+test_table!(
+ format_doesnt_change_padding,
+ Matrix::new(3, 3)
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Padding::new(3, 1, 0, 0)))
+ .with(Modify::new(Segment::all()).with(Format::content(|s| format!("[{s}]")))),
+ "+-------+--------------+--------------+--------------+"
+ "| [N] | [column 0] | [column 1] | [column 2] |"
+ "+-------+--------------+--------------+--------------+"
+ "| [0] | [0-0] | [0-1] | [0-2] |"
+ "+-------+--------------+--------------+--------------+"
+ "| [1] | [1-0] | [1-1] | [1-2] |"
+ "+-------+--------------+--------------+--------------+"
+ "| [2] | [2-0] | [2-1] | [2-2] |"
+ "+-------+--------------+--------------+--------------+"
+);
+
+test_table!(
+ formatting_content_str_test,
+ Matrix::new(3, 3).with(Modify::new(Segment::all()).with(Format::content(|_| String::from("Hello World")))),
+ "+-------------+-------------+-------------+-------------+"
+ "| Hello World | Hello World | Hello World | Hello World |"
+ "+-------------+-------------+-------------+-------------+"
+ "| Hello World | Hello World | Hello World | Hello World |"
+ "+-------------+-------------+-------------+-------------+"
+ "| Hello World | Hello World | Hello World | Hello World |"
+ "+-------------+-------------+-------------+-------------+"
+ "| Hello World | Hello World | Hello World | Hello World |"
+ "+-------------+-------------+-------------+-------------+"
+);
+
+#[cfg(feature = "color")]
+test_table!(
+ color_test,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(
+ Modify::new(Columns::new(..1).and(Columns::new(2..)))
+ .with(Format::content(|s| s.red().to_string())),
+ )
+ .with(Modify::new(Columns::new(1..2)).with(Format::content(|s| s.blue().to_string()))),
+ " \u{1b}[31mN\u{1b}[39m | \u{1b}[34mcolumn 0\u{1b}[39m | \u{1b}[31mcolumn 1\u{1b}[39m | \u{1b}[31mcolumn 2\u{1b}[39m "
+ "---+----------+----------+----------"
+ " \u{1b}[31m0\u{1b}[39m | \u{1b}[34m0-0\u{1b}[39m | \u{1b}[31m0-1\u{1b}[39m | \u{1b}[31m0-2\u{1b}[39m "
+ " \u{1b}[31m1\u{1b}[39m | \u{1b}[34m1-0\u{1b}[39m | \u{1b}[31m1-1\u{1b}[39m | \u{1b}[31m1-2\u{1b}[39m "
+ " \u{1b}[31m2\u{1b}[39m | \u{1b}[34m2-0\u{1b}[39m | \u{1b}[31m2-1\u{1b}[39m | \u{1b}[31m2-2\u{1b}[39m "
+);
+
+#[cfg(feature = "color")]
+test_table!(
+ color_multiline_test,
+ Matrix::new(3, 3)
+ .insert((2, 2), "E\nnde\navou\nros")
+ .insert((3, 2), "Red\nHat")
+ .insert((3, 3), "https://\nwww\n.\nredhat\n.com\n/en")
+ .with(Style::psql())
+ .with(Modify::new(Columns::new(..1)).with(Format::content(|s| s.red().to_string()).multiline()))
+ .with(Modify::new(Columns::new(1..2)).with(Format::content(|s| s.blue().to_string()).multiline()))
+ .with(Modify::new(Columns::new(2..)).with(Format::content(|s| s.green().to_string()).multiline())),
+ " \u{1b}[31mN\u{1b}[39m | \u{1b}[34mcolumn 0\u{1b}[39m | \u{1b}[32mcolumn 1\u{1b}[39m | \u{1b}[32mcolumn 2\u{1b}[39m "
+ "---+----------+----------+----------\n \u{1b}[31m0\u{1b}[39m | \u{1b}[34m0-0\u{1b}[39m | \u{1b}[32m0-1\u{1b}[39m | \u{1b}[32m0-2\u{1b}[39m "
+ " \u{1b}[31m1\u{1b}[39m | \u{1b}[34m1-0\u{1b}[39m | \u{1b}[32mE\u{1b}[39m | \u{1b}[32m1-2\u{1b}[39m "
+ " | | \u{1b}[32mnde\u{1b}[39m | "
+ " | | \u{1b}[32mavou\u{1b}[39m | "
+ " | | \u{1b}[32mros\u{1b}[39m | "
+ " \u{1b}[31m2\u{1b}[39m | \u{1b}[34m2-0\u{1b}[39m | \u{1b}[32mRed\u{1b}[39m | \u{1b}[32mhttps://\u{1b}[39m "
+ " | | \u{1b}[32mHat\u{1b}[39m | \u{1b}[32mwww\u{1b}[39m \n | | | \u{1b}[32m.\u{1b}[39m "
+ " | | | \u{1b}[32mredhat\u{1b}[39m "
+ " | | | \u{1b}[32m.com\u{1b}[39m "
+ " | | | \u{1b}[32m/en\u{1b}[39m "
+);
diff --git a/vendor/tabled/tests/settings/formatting_test.rs b/vendor/tabled/tests/settings/formatting_test.rs
new file mode 100644
index 000000000..70f925a8b
--- /dev/null
+++ b/vendor/tabled/tests/settings/formatting_test.rs
@@ -0,0 +1,68 @@
+#![cfg(feature = "std")]
+
+use tabled::settings::{formatting::Justification, object::Columns, Color, Modify};
+
+use crate::matrix::Matrix;
+use testing_table::test_table;
+
+test_table!(
+ justification,
+ Matrix::new(3, 3).with(Justification::new('#')),
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| 0 | ##0-0### | ##0-1### | ##0-2### |"
+ "+---+----------+----------+----------+"
+ "| 1 | ##1-0### | ##1-1### | ##1-2### |"
+ "+---+----------+----------+----------+"
+ "| 2 | ##2-0### | ##2-1### | ##2-2### |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ justification_color,
+ Matrix::new(3, 3).with(Justification::new('#').color(Color::BG_RED)),
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| 0 | \u{1b}[41m##\u{1b}[49m0-0\u{1b}[41m###\u{1b}[49m | \u{1b}[41m##\u{1b}[49m0-1\u{1b}[41m###\u{1b}[49m | \u{1b}[41m##\u{1b}[49m0-2\u{1b}[41m###\u{1b}[49m |"
+ "+---+----------+----------+----------+"
+ "| 1 | \u{1b}[41m##\u{1b}[49m1-0\u{1b}[41m###\u{1b}[49m | \u{1b}[41m##\u{1b}[49m1-1\u{1b}[41m###\u{1b}[49m | \u{1b}[41m##\u{1b}[49m1-2\u{1b}[41m###\u{1b}[49m |"
+ "+---+----------+----------+----------+"
+ "| 2 | \u{1b}[41m##\u{1b}[49m2-0\u{1b}[41m###\u{1b}[49m | \u{1b}[41m##\u{1b}[49m2-1\u{1b}[41m###\u{1b}[49m | \u{1b}[41m##\u{1b}[49m2-2\u{1b}[41m###\u{1b}[49m |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ justification_columns,
+ Matrix::new(3, 3)
+ .with(Modify::new(Columns::single(1)).with(Justification::new('#')))
+ .with(Modify::new(Columns::single(2)).with(Justification::new('@')))
+ .with(Modify::new(Columns::single(3)).with(Justification::new('$'))),
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| 0 | ##0-0### | @@0-1@@@ | $$0-2$$$ |"
+ "+---+----------+----------+----------+"
+ "| 1 | ##1-0### | @@1-1@@@ | $$1-2$$$ |"
+ "+---+----------+----------+----------+"
+ "| 2 | ##2-0### | @@2-1@@@ | $$2-2$$$ |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ justification_color_columns,
+ Matrix::new(3, 3)
+ .with(Modify::new(Columns::single(1)).with(Justification::new('#').color(Color::BG_BLUE)))
+ .with(Modify::new(Columns::single(2)).with(Justification::new('@').color(Color::BG_RED)))
+ .with(Modify::new(Columns::single(3)).with(Justification::new('$').color(Color::BG_WHITE))),
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| 0 | \u{1b}[44m##\u{1b}[49m0-0\u{1b}[44m###\u{1b}[49m | \u{1b}[41m@@\u{1b}[49m0-1\u{1b}[41m@@@\u{1b}[49m | \u{1b}[47m$$\u{1b}[49m0-2\u{1b}[47m$$$\u{1b}[49m |"
+ "+---+----------+----------+----------+"
+ "| 1 | \u{1b}[44m##\u{1b}[49m1-0\u{1b}[44m###\u{1b}[49m | \u{1b}[41m@@\u{1b}[49m1-1\u{1b}[41m@@@\u{1b}[49m | \u{1b}[47m$$\u{1b}[49m1-2\u{1b}[47m$$$\u{1b}[49m |"
+ "+---+----------+----------+----------+"
+ "| 2 | \u{1b}[44m##\u{1b}[49m2-0\u{1b}[44m###\u{1b}[49m | \u{1b}[41m@@\u{1b}[49m2-1\u{1b}[41m@@@\u{1b}[49m | \u{1b}[47m$$\u{1b}[49m2-2\u{1b}[47m$$$\u{1b}[49m |"
+ "+---+----------+----------+----------+"
+);
diff --git a/vendor/tabled/tests/settings/height_test.rs b/vendor/tabled/tests/settings/height_test.rs
new file mode 100644
index 000000000..48d6a6364
--- /dev/null
+++ b/vendor/tabled/tests/settings/height_test.rs
@@ -0,0 +1,263 @@
+#![cfg(feature = "std")]
+
+use tabled::settings::{
+ object::{Columns, Segment},
+ Alignment, Format, Height, Modify, Style,
+};
+
+use crate::matrix::Matrix;
+use testing_table::test_table;
+
+#[cfg(feature = "color")]
+use owo_colors::OwoColorize;
+
+test_table!(
+ cell_height_increase,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(
+ Modify::new(Columns::first())
+ .with(Height::increase(3))
+ )
+ .with(Modify::new(Segment::all()).with(
+ Alignment::center_vertical()
+ )),
+ "| N | | | |"
+ "| | column 0 | column 1 | column 2 |"
+ "| | | | |"
+ "|---|----------|----------|----------|"
+ "| 0 | | | |"
+ "| | 0-0 | 0-1 | 0-2 |"
+ "| | | | |"
+ "| 1 | | | |"
+ "| | 1-0 | 1-1 | 1-2 |"
+ "| | | | |"
+ "| 2 | | | |"
+ "| | 2-0 | 2-1 | 2-2 |"
+ "| | | | |"
+);
+
+test_table!(
+ table_height_increase,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Modify::new(Columns::first()).with(Alignment::center_vertical()))
+ .with(Height::increase(10)),
+ "| | column 0 | column 1 | column 2 |"
+ "| N | | | |"
+ "| | | | |"
+ "|---|----------|----------|----------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| | | | |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| | | | |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "| | | | |"
+);
+
+test_table!(
+ cell_height_increase_zero,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(
+ Modify::new(Columns::first())
+ .with(Height::increase(0))
+ )
+ .with(Modify::new(Segment::all()).with(
+ Alignment::center_vertical()
+ )),
+ "| N | column 0 | column 1 | column 2 |"
+ "|---|----------|----------|----------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+);
+
+test_table!(
+ table_height_increase_zero,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Modify::new(Columns::first()).with(Alignment::center_vertical()))
+ .with(Height::increase(0)),
+ "| N | column 0 | column 1 | column 2 |"
+ "|---|----------|----------|----------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+);
+
+test_table!(
+ cell_height_limit,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Modify::new(Columns::first()).with(Format::content(|s| format!("xxxx\n{s}xxxx\nxxxx\n"))))
+ .with(
+ Modify::new(Columns::first())
+ .with(Height::limit(1))
+ )
+ .with(Modify::new(Segment::all()).with(
+ Alignment::center_vertical()
+ )),
+ "| xxxx | column 0 | column 1 | column 2 |"
+ "|------|----------|----------|----------|"
+ "| xxxx | 0-0 | 0-1 | 0-2 |"
+ "| xxxx | 1-0 | 1-1 | 1-2 |"
+ "| xxxx | 2-0 | 2-1 | 2-2 |"
+);
+
+test_table!(
+ table_height_limit,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Modify::new(Columns::first()).with(Format::content(|s| format!("xxxx\n{s}xxxx\nxxxx\n"))))
+ .with(Modify::new(Columns::first()).with(Alignment::center_vertical()))
+ .with(Height::limit(10)),
+ "| xxxx | column 0 | column 1 | column 2 |"
+ "| Nxxxx | | | |"
+ "|-------|----------|----------|----------|"
+ "| xxxx | 0-0 | 0-1 | 0-2 |"
+ "| 0xxxx | | | |"
+ "| xxxx | 1-0 | 1-1 | 1-2 |"
+ "| 1xxxx | | | |"
+ "| xxxx | 2-0 | 2-1 | 2-2 |"
+ "| 2xxxx | | | |"
+ "| xxxx | | | |"
+);
+
+test_table!(
+ table_height_limit_style_change_after,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Modify::new(Columns::first()).with(Format::content(|s| format!("xxxx\n{s}xxxx\nxxxx\n"))))
+ .with(Modify::new(Columns::first()).with(Alignment::center_vertical()))
+ .with(Height::limit(7)),
+ "| xxxx | column 0 | column 1 | column 2 |"
+ "|-------|----------|----------|----------|"
+ "| xxxx | 0-0 | 0-1 | 0-2 |"
+ "| xxxx | 1-0 | 1-1 | 1-2 |"
+ "| 1xxxx | | | |"
+ "| xxxx | 2-0 | 2-1 | 2-2 |"
+ "| 2xxxx | | | |"
+);
+
+test_table!(
+ cell_height_limit_zero,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Modify::new(Columns::first()).with(Format::content(|s| format!("xxxx\n{s}xxxx\nxxxx\n"))))
+ .with(
+ Modify::new(Columns::first())
+ .with(Height::limit(0))
+ )
+ .with(Modify::new(Segment::all()).with(
+ Alignment::center_vertical()
+ )),
+ "| | column 0 | column 1 | column 2 |"
+ "|--|----------|----------|----------|"
+ "| | 0-0 | 0-1 | 0-2 |"
+ "| | 1-0 | 1-1 | 1-2 |"
+ "| | 2-0 | 2-1 | 2-2 |"
+);
+
+test_table!(
+ table_height_limit_zero,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(
+ Modify::new(Columns::new(..))
+ .with(Format::content(|s| format!("xxxx\n{s}xxxx\nxxxx\n")))
+ )
+ .with(Height::limit(0)),
+ "|--|--|--|--|"
+);
+
+test_table!(
+ table_height_limit_zero_1,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Height::limit(0))
+ .with(
+ Modify::new(Columns::new(..)).with(Format::content(|s| format!("xxxx\n{s}xxxx\nxxxx\n")))
+ ),
+ "| xxxx | xxxx | xxxx | xxxx |"
+ "| xxxx | xxxx | xxxx | xxxx |"
+ "| xxxx | xxxx | xxxx | xxxx |"
+ "| | | | |"
+ "|------|------|------|------|"
+ "| xxxx | xxxx | xxxx | xxxx |"
+ "| xxxx | xxxx | xxxx | xxxx |"
+ "| xxxx | xxxx | xxxx | xxxx |"
+ "| | | | |"
+ "| xxxx | xxxx | xxxx | xxxx |"
+ "| xxxx | xxxx | xxxx | xxxx |"
+ "| xxxx | xxxx | xxxx | xxxx |"
+ "| | | | |"
+ "| xxxx | xxxx | xxxx | xxxx |"
+ "| xxxx | xxxx | xxxx | xxxx |"
+ "| xxxx | xxxx | xxxx | xxxx |"
+ "| | | | |"
+);
+
+#[cfg(feature = "color")]
+test_table!(
+ cell_height_limit_colored,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Modify::new(Columns::first()).with(Format::content(|s| format!("xxxx\n{s}xxxx\nxxxx\n").red().to_string())))
+ .with(
+ Modify::new(Columns::first())
+ .with(Height::limit(1))
+ )
+ .with(Modify::new(Segment::all()).with(
+ Alignment::center_vertical()
+ )),
+ "| \u{1b}[31mxxxx\u{1b}[39m | column 0 | column 1 | column 2 |"
+ "|------|----------|----------|----------|"
+ "| \u{1b}[31mxxxx\u{1b}[39m | 0-0 | 0-1 | 0-2 |"
+ "| \u{1b}[31mxxxx\u{1b}[39m | 1-0 | 1-1 | 1-2 |"
+ "| \u{1b}[31mxxxx\u{1b}[39m | 2-0 | 2-1 | 2-2 |"
+);
+
+#[cfg(feature = "color")]
+test_table!(
+ table_height_limit_colored,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Modify::new(Columns::first()).with(Format::content(|s| format!("xxxx\n{s}xxxx\nxxxx\n").blue().on_green().to_string())))
+ .with(Modify::new(Columns::first()).with(Alignment::center_vertical()))
+ .with(Height::limit(10)),
+ "| \u{1b}[34;42mxxxx\u{1b}[39m\u{1b}[49m | column 0 | column 1 | column 2 |"
+ "| \u{1b}[34m\u{1b}[42mNxxxx\u{1b}[39m\u{1b}[49m | | | |"
+ "|-------|----------|----------|----------|"
+ "| \u{1b}[34;42mxxxx\u{1b}[39m\u{1b}[49m | 0-0 | 0-1 | 0-2 |"
+ "| \u{1b}[34m\u{1b}[42m0xxxx\u{1b}[39m\u{1b}[49m | | | |"
+ "| \u{1b}[34;42mxxxx\u{1b}[39m\u{1b}[49m | 1-0 | 1-1 | 1-2 |"
+ "| \u{1b}[34m\u{1b}[42m1xxxx\u{1b}[39m\u{1b}[49m | | | |"
+ "| \u{1b}[34;42mxxxx\u{1b}[39m\u{1b}[49m | 2-0 | 2-1 | 2-2 |"
+ "| \u{1b}[34m\u{1b}[42m2xxxx\u{1b}[39m\u{1b}[49m | | | |"
+ "| \u{1b}[34m\u{1b}[42mxxxx\u{1b}[39m\u{1b}[49m | | | |"
+);
+
+#[cfg(feature = "macros")]
+test_table!(
+ cell_height_1x1,
+ tabled::row![tabled::col!["SGML"].with(Height::increase(4))],
+ "+----------+"
+ "| +------+ |"
+ "| | SGML | |"
+ "| | | |"
+ "| +------+ |"
+ "+----------+"
+);
+
+#[cfg(feature = "macros")]
+test_table!(
+ cell_height_1x1_no_top_border,
+ tabled::row![tabled::col!["SGML"].with(Style::ascii().remove_top()).with(Height::increase(4))],
+ "+----------+"
+ "| | SGML | |"
+ "| | | |"
+ "| | | |"
+ "| +------+ |"
+ "+----------+"
+);
diff --git a/vendor/tabled/tests/settings/highlingt_test.rs b/vendor/tabled/tests/settings/highlingt_test.rs
new file mode 100644
index 000000000..cb5ce75f3
--- /dev/null
+++ b/vendor/tabled/tests/settings/highlingt_test.rs
@@ -0,0 +1,419 @@
+#![cfg(feature = "std")]
+
+use tabled::{
+ builder::Builder,
+ settings::{
+ highlight::Highlight,
+ object::{Cell, Columns, Frame, Object, Rows, Segment},
+ style::{Border, Style},
+ },
+};
+
+use crate::matrix::Matrix;
+use testing_table::{static_table, test_table};
+
+test_table!(
+ highlingt_object_exceeds_boundaries,
+ Matrix::new(3, 3).with(Style::modern()).with(Highlight::new(Cell::new(1000, 0), Border::filled('+'))),
+ "┌───┬──────────┬──────────┬──────────â”"
+ "│ N │ column 0 │ column 1 │ column 2 │"
+ "├───┼──────────┼──────────┼──────────┤"
+ "│ 0 │ 0-0 │ 0-1 │ 0-2 │"
+ "├───┼──────────┼──────────┼──────────┤"
+ "│ 1 │ 1-0 │ 1-1 │ 1-2 │"
+ "├───┼──────────┼──────────┼──────────┤"
+ "│ 2 │ 2-0 │ 2-1 │ 2-2 │"
+ "└───┴──────────┴──────────┴──────────┘"
+);
+
+test_table!(
+ highlingt_empty_table,
+ Builder::default()
+ .build()
+ .with(Highlight::new(Segment::all(), Border::filled('+'))),
+ ""
+);
+
+test_table!(
+ highlingt_cell,
+ Matrix::new(3, 3)
+ .with(Style::modern())
+ .with(Highlight::new(Cell::new(0, 0), Border::filled('+')))
+ .with(Highlight::new(Cell::new(1, 1), Border::filled('*'))),
+ "+++++──────────┬──────────┬──────────â”"
+ "+ N + column 0 │ column 1 │ column 2 │"
+ "++++************──────────┼──────────┤"
+ "│ 0 * 0-0 * 0-1 │ 0-2 │"
+ "├───************──────────┼──────────┤"
+ "│ 1 │ 1-0 │ 1-1 │ 1-2 │"
+ "├───┼──────────┼──────────┼──────────┤"
+ "│ 2 │ 2-0 │ 2-1 │ 2-2 │"
+ "└───┴──────────┴──────────┴──────────┘"
+);
+
+test_table!(
+ highlingt_row,
+ Matrix::new(3, 3)
+ .with(Style::modern())
+ .with(Highlight::new(Rows::single(0), Border::filled('+')))
+ .with(Highlight::new(Rows::single(3), Border::filled('*'))),
+ "++++++++++++++++++++++++++++++++++++++"
+ "+ N │ column 0 │ column 1 │ column 2 +"
+ "++++++++++++++++++++++++++++++++++++++"
+ "│ 0 │ 0-0 │ 0-1 │ 0-2 │"
+ "├───┼──────────┼──────────┼──────────┤"
+ "│ 1 │ 1-0 │ 1-1 │ 1-2 │"
+ "**************************************"
+ "* 2 │ 2-0 │ 2-1 │ 2-2 *"
+ "**************************************"
+);
+
+test_table!(
+ highlingt_column,
+ Matrix::new(3, 3)
+ .with(Style::modern())
+ .with(Highlight::new(Columns::single(0), Border::filled('+')))
+ .with(Highlight::new(Columns::single(2), Border::filled('*'))),
+ "+++++──────────************──────────â”"
+ "+ N + column 0 * column 1 * column 2 │"
+ "+───+──────────*──────────*──────────┤"
+ "+ 0 + 0-0 * 0-1 * 0-2 │"
+ "+───+──────────*──────────*──────────┤"
+ "+ 1 + 1-0 * 1-1 * 1-2 │"
+ "+───+──────────*──────────*──────────┤"
+ "+ 2 + 2-0 * 2-1 * 2-2 │"
+ "+++++──────────************──────────┘"
+);
+
+test_table!(
+ highlingt_row_range,
+ Matrix::new(3, 3)
+ .with(Style::modern())
+ .with(Highlight::new(Rows::new(1..3), Border::filled('+'))),
+ "┌───┬──────────┬──────────┬──────────â”"
+ "│ N │ column 0 │ column 1 │ column 2 │"
+ "++++++++++++++++++++++++++++++++++++++"
+ "+ 0 │ 0-0 │ 0-1 │ 0-2 +"
+ "+───┼──────────┼──────────┼──────────+"
+ "+ 1 │ 1-0 │ 1-1 │ 1-2 +"
+ "++++++++++++++++++++++++++++++++++++++"
+ "│ 2 │ 2-0 │ 2-1 │ 2-2 │"
+ "└───┴──────────┴──────────┴──────────┘"
+);
+
+test_table!(
+ highlingt_column_range,
+ Matrix::new(3, 3)
+ .with(Style::modern())
+ .with(Highlight::new(Columns::new(..2), Border::filled('+'))),
+ "++++++++++++++++──────────┬──────────â”"
+ "+ N │ column 0 + column 1 │ column 2 │"
+ "+───┼──────────+──────────┼──────────┤"
+ "+ 0 │ 0-0 + 0-1 │ 0-2 │"
+ "+───┼──────────+──────────┼──────────┤"
+ "+ 1 │ 1-0 + 1-1 │ 1-2 │"
+ "+───┼──────────+──────────┼──────────┤"
+ "+ 2 │ 2-0 + 2-1 │ 2-2 │"
+ "++++++++++++++++──────────┴──────────┘"
+);
+
+test_table!(
+ highlingt_frame,
+ Matrix::new(3, 3)
+ .with(Style::modern())
+ .with(Highlight::new(
+ Frame,
+ Border::filled('+')
+ .corner_top_left('*')
+ .corner_top_right('#')
+ .corner_bottom_left('@')
+ .corner_bottom_right('.'),
+ )),
+ "*++++++++++++++++++++++++++++++++++++#"
+ "+ N │ column 0 │ column 1 │ column 2 +"
+ "+───┼──────────┼──────────┼──────────+"
+ "+ 0 │ 0-0 │ 0-1 │ 0-2 +"
+ "+───┼──────────┼──────────┼──────────+"
+ "+ 1 │ 1-0 │ 1-1 │ 1-2 +"
+ "+───┼──────────┼──────────┼──────────+"
+ "+ 2 │ 2-0 │ 2-1 │ 2-2 +"
+ "@++++++++++++++++++++++++++++++++++++."
+);
+
+test_table!(
+ highlingt_full,
+ Matrix::new(3, 3)
+ .with(Style::modern())
+ .with(Highlight::new(
+ Segment::all(),
+ Border::filled('+')
+ .corner_top_left('*')
+ .corner_top_right('#')
+ .corner_bottom_left('@')
+ .corner_bottom_right('.'),
+ )),
+ "*++++++++++++++++++++++++++++++++++++#"
+ "+ N │ column 0 │ column 1 │ column 2 +"
+ "+───┼──────────┼──────────┼──────────+"
+ "+ 0 │ 0-0 │ 0-1 │ 0-2 +"
+ "+───┼──────────┼──────────┼──────────+"
+ "+ 1 │ 1-0 │ 1-1 │ 1-2 +"
+ "+───┼──────────┼──────────┼──────────+"
+ "+ 2 │ 2-0 │ 2-1 │ 2-2 +"
+ "@++++++++++++++++++++++++++++++++++++."
+);
+
+test_table!(
+ highlingt_single_column,
+ Matrix::table(3, 0)
+ .with(Style::modern())
+ .with(Highlight::new(Cell::new(0, 0), Border::default().left('*').top('x')))
+ .with(Highlight::new(Rows::new(1..3), Border::default().left('n'))),
+ "┌xxxâ”"
+ "* N │"
+ "├───┤"
+ "n 0 │"
+ "n───┤"
+ "n 1 │"
+ "├───┤"
+ "│ 2 │"
+ "└───┘"
+);
+
+test_table!(
+ highlingt_several_times,
+ Matrix::new(3, 3)
+ .with(Style::modern())
+ .with(Highlight::new(Frame, Border::filled('*')))
+ .with(Highlight::new(Cell::new(1, 1), Border::filled('#')))
+ .with(Highlight::new(Columns::single(3), Border::filled('x'))),
+ "**************************xxxxxxxxxxxx"
+ "* N │ column 0 │ column 1 x column 2 x"
+ "*───############──────────x──────────x"
+ "* 0 # 0-0 # 0-1 x 0-2 x"
+ "*───############──────────x──────────x"
+ "* 1 │ 1-0 │ 1-1 x 1-2 x"
+ "*───┼──────────┼──────────x──────────x"
+ "* 2 │ 2-0 │ 2-1 x 2-2 x"
+ "**************************xxxxxxxxxxxx"
+);
+
+// @todo
+//
+// #[test]
+// fn highlingt_empty_border() {
+// let data = create_vector::<3, 3>();
+// let table = Table::new(&data)
+// .with(Style::modern())
+// .with(Highlight::new(Frame, Border::empty()))
+// .to_string();
+
+// let expected = static_table!(
+// " N │ column 0 │ column 1 │ column 2 "
+// "─── ──────────"
+// " 0 0-0 │ 0-1 0-2 "
+// "─── ──────────┼────────── ──────────"
+// " 1 1-0 │ 1-1 1-2 "
+// "─── ──────────"
+// " 2 │ 2-0 │ 2-1 │ 2-2 "
+// );
+
+// assert_eq!(table, expected);
+// }
+
+#[test]
+fn highlingt_complex_figures() {
+ macro_rules! test_highlight {
+ ($object:expr, $expected:expr,) => {
+ let border = Border::filled('+')
+ .corner_top_left('*')
+ .corner_top_right('#')
+ .corner_bottom_left('@')
+ .corner_bottom_right('.');
+
+ let table = Matrix::new(3, 3)
+ .with(Style::modern())
+ .with(Highlight::new($object, border))
+ .to_string();
+
+ assert_eq!(table, $expected);
+ };
+ }
+
+ test_highlight!(
+ Segment::all().not(Segment::new(2.., 1..3)),
+ static_table!(
+ "*++++++++++++++++++++++++++++++++++++#"
+ "+ N │ column 0 │ column 1 │ column 2 +"
+ "+───┼──────────┼──────────┼──────────+"
+ "+ 0 │ 0-0 │ 0-1 │ 0-2 +"
+ "+───*+++++++++++++++++++++#──────────+"
+ "+ 1 + 1-0 │ 1-1 + 1-2 +"
+ "+───+──────────┼──────────+──────────+"
+ "+ 2 + 2-0 │ 2-1 + 2-2 +"
+ "@+++.──────────┴──────────@++++++++++."
+ ),
+ );
+
+ test_highlight!(
+ Segment::all()
+ .not(Segment::new(0..1, 1..3))
+ .not(Columns::single(0)),
+ static_table!(
+ "┌───┬──────────┬──────────*++++++++++#"
+ "│ N │ column 0 │ column 1 + column 2 +"
+ "├───*+++++++++++++++++++++.──────────+"
+ "│ 0 + 0-0 │ 0-1 │ 0-2 +"
+ "├───+──────────┼──────────┼──────────+"
+ "│ 1 + 1-0 │ 1-1 │ 1-2 +"
+ "├───+──────────┼──────────┼──────────+"
+ "│ 2 + 2-0 │ 2-1 │ 2-2 +"
+ "└───@++++++++++++++++++++++++++++++++."
+ ),
+ );
+
+ test_highlight!(
+ Segment::all().not(Segment::new(0..1, 1..3)),
+ static_table!(
+ "*+++#──────────┬──────────*++++++++++#"
+ "+ N + column 0 │ column 1 + column 2 +"
+ "+───@+++++++++++++++++++++.──────────+"
+ "+ 0 │ 0-0 │ 0-1 │ 0-2 +"
+ "+───┼──────────┼──────────┼──────────+"
+ "+ 1 │ 1-0 │ 1-1 │ 1-2 +"
+ "+───┼──────────┼──────────┼──────────+"
+ "+ 2 │ 2-0 │ 2-1 │ 2-2 +"
+ "@++++++++++++++++++++++++++++++++++++."
+ ),
+ );
+
+ test_highlight!(
+ Segment::all().not(Segment::new(1..2, 1..3)),
+ static_table!(
+ "*++++++++++++++++++++++++++++++++++++#"
+ "+ N │ column 0 │ column 1 │ column 2 +"
+ "+───*+++++++++++++++++++++#──────────+"
+ "+ 0 + 0-0 │ 0-1 + 0-2 +"
+ "+───@+++++++++++++++++++++.──────────+"
+ "+ 1 │ 1-0 │ 1-1 │ 1-2 +"
+ "+───┼──────────┼──────────┼──────────+"
+ "+ 2 │ 2-0 │ 2-1 │ 2-2 +"
+ "@++++++++++++++++++++++++++++++++++++."
+ ),
+ );
+
+ test_highlight!(
+ Cell::new(0, 0)
+ .and(Cell::new(3, 3))
+ .and(Cell::new(0, 3))
+ .and(Cell::new(3, 0)),
+ static_table!(
+ "*+++#──────────┬──────────*++++++++++#"
+ "+ N + column 0 │ column 1 + column 2 +"
+ "@+++.──────────┼──────────@++++++++++."
+ "│ 0 │ 0-0 │ 0-1 │ 0-2 │"
+ "├───┼──────────┼──────────┼──────────┤"
+ "│ 1 │ 1-0 │ 1-1 │ 1-2 │"
+ "*+++#──────────┼──────────*++++++++++#"
+ "+ 2 + 2-0 │ 2-1 + 2-2 +"
+ "@+++.──────────┴──────────@++++++++++."
+ ),
+ );
+
+ test_highlight!(
+ Rows::single(0).and(Rows::single(3)),
+ static_table!(
+ "*++++++++++++++++++++++++++++++++++++#"
+ "+ N │ column 0 │ column 1 │ column 2 +"
+ "@++++++++++++++++++++++++++++++++++++."
+ "│ 0 │ 0-0 │ 0-1 │ 0-2 │"
+ "├───┼──────────┼──────────┼──────────┤"
+ "│ 1 │ 1-0 │ 1-1 │ 1-2 │"
+ "*++++++++++++++++++++++++++++++++++++#"
+ "+ 2 │ 2-0 │ 2-1 │ 2-2 +"
+ "@++++++++++++++++++++++++++++++++++++."
+ ),
+ );
+
+ test_highlight!(
+ Columns::single(0).and(Columns::single(3)),
+ static_table!(
+ "*+++#──────────┬──────────*++++++++++#"
+ "+ N + column 0 │ column 1 + column 2 +"
+ "+───+──────────┼──────────+──────────+"
+ "+ 0 + 0-0 │ 0-1 + 0-2 +"
+ "+───+──────────┼──────────+──────────+"
+ "+ 1 + 1-0 │ 1-1 + 1-2 +"
+ "+───+──────────┼──────────+──────────+"
+ "+ 2 + 2-0 │ 2-1 + 2-2 +"
+ "@+++.──────────┴──────────@++++++++++."
+ ),
+ );
+
+ test_highlight!(
+ Segment::all().not(Cell::new(3, 1).and(Cell::new(3, 2))),
+ static_table!(
+ "*++++++++++++++++++++++++++++++++++++#"
+ "+ N │ column 0 │ column 1 │ column 2 +"
+ "+───┼──────────┼──────────┼──────────+"
+ "+ 0 │ 0-0 │ 0-1 │ 0-2 +"
+ "+───┼──────────┼──────────┼──────────+"
+ "+ 1 │ 1-0 │ 1-1 │ 1-2 +"
+ "+───*+++++++++++++++++++++#──────────+"
+ "+ 2 + 2-0 │ 2-1 + 2-2 +"
+ "@+++.──────────┴──────────@++++++++++."
+ ),
+ );
+
+ test_highlight!(
+ Rows::single(0)
+ .and(Cell::new(1, 1).and(Cell::new(1, 2)))
+ .and(Cell::new(2, 3)),
+ static_table!(
+ "*++++++++++++++++++++++++++++++++++++#"
+ "+ N │ column 0 │ column 1 │ column 2 +"
+ "@+++#──────────┼──────────*++++++++++."
+ "│ 0 + 0-0 │ 0-1 + 0-2 │"
+ "├───@+++++++++++++++++++++*++++++++++#"
+ "│ 1 │ 1-0 │ 1-1 + 1-2 +"
+ "├───┼──────────┼──────────@++++++++++."
+ "│ 2 │ 2-0 │ 2-1 │ 2-2 │"
+ "└───┴──────────┴──────────┴──────────┘"
+ ),
+ );
+
+ test_highlight!(
+ Segment::all()
+ .not(Segment::new(2.., 0..3))
+ .not(Cell::new(1, 0)),
+ static_table!(
+ "*++++++++++++++++++++++++++++++++++++#"
+ "+ N │ column 0 │ column 1 │ column 2 +"
+ "@+++#──────────┼──────────┼──────────+"
+ "│ 0 + 0-0 │ 0-1 │ 0-2 +"
+ "├───@+++++++++++++++++++++#──────────+"
+ "│ 1 │ 1-0 │ 1-1 + 1-2 +"
+ "├───┼──────────┼──────────+──────────+"
+ "│ 2 │ 2-0 │ 2-1 + 2-2 +"
+ "└───┴──────────┴──────────@++++++++++."
+ ),
+ );
+
+ test_highlight!(
+ Segment::all()
+ .not(Segment::new(..1, 1..))
+ .not(Segment::new(1..2, 2..))
+ .not(Cell::new(2, 3)),
+ static_table!(
+ "*+++#──────────┬──────────┬──────────â”"
+ "+ N + column 0 │ column 1 │ column 2 │"
+ "+───@++++++++++#──────────┼──────────┤"
+ "+ 0 │ 0-0 + 0-1 │ 0-2 │"
+ "+───┼──────────@++++++++++#──────────┤"
+ "+ 1 │ 1-0 │ 1-1 + 1-2 │"
+ "+───┼──────────┼──────────@++++++++++#"
+ "+ 2 │ 2-0 │ 2-1 │ 2-2 +"
+ "@++++++++++++++++++++++++++++++++++++."
+ ),
+ );
+}
diff --git a/vendor/tabled/tests/settings/margin_test.rs b/vendor/tabled/tests/settings/margin_test.rs
new file mode 100644
index 000000000..513287350
--- /dev/null
+++ b/vendor/tabled/tests/settings/margin_test.rs
@@ -0,0 +1,195 @@
+#![cfg(feature = "std")]
+
+use tabled::settings::{object::Cell, Border, Highlight, Margin, Modify, Span, Style, Width};
+
+use crate::matrix::Matrix;
+use testing_table::{is_lines_equal, static_table, test_table};
+
+#[cfg(feature = "color")]
+use ::{owo_colors::OwoColorize, std::convert::TryFrom, tabled::settings::Color};
+
+test_table!(
+ margin_with_table_based_on_grid_borders,
+ Matrix::new(3, 3)
+ .with(Style::extended())
+ .with(Highlight::new(Cell::new(0, 0), Border::filled('+')))
+ .with(Highlight::new(Cell::new(1, 1), Border::filled('*')))
+ .with(Margin::new(1, 2, 1, 2).fill('>', '<', 'V', '^')),
+ "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"
+ ">+++++â•â•â•â•â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•â•—<<"
+ ">+ N + column 0 â•‘ column 1 â•‘ column 2 â•‘<<"
+ ">++++************â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•£<<"
+ ">â•‘ 0 * 0-0 * 0-1 â•‘ 0-2 â•‘<<"
+ ">â• â•â•â•************â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•£<<"
+ ">â•‘ 1 â•‘ 1-0 â•‘ 1-1 â•‘ 1-2 â•‘<<"
+ ">â• â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•£<<"
+ ">â•‘ 2 â•‘ 2-0 â•‘ 2-1 â•‘ 2-2 â•‘<<"
+ ">â•šâ•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•<<"
+ "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
+ "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
+);
+
+test_table!(
+ margin_without_table_based_on_grid_borders,
+ Matrix::new(3, 3)
+ .insert((3, 2), "https://\nwww\n.\nredhat\n.com\n/en")
+ .with(Style::psql())
+ .with(Modify::new(Cell::new(3, 2)).with(Span::column(2)))
+ .with(Margin::new(1, 1, 1, 1).fill('>', '<', 'V', '^')),
+ "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"
+ "> N | column 0 | column 1 | column 2 <"
+ ">---+----------+----------+----------<"
+ "> 0 | 0-0 | 0-1 | 0-2 <"
+ "> 1 | 1-0 | 1-1 | 1-2 <"
+ "> 2 | 2-0 | https:// <"
+ "> | | www <"
+ "> | | . <"
+ "> | | redhat <"
+ "> | | .com <"
+ "> | | /en <"
+ "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
+);
+
+test_table!(
+ table_with_empty_margin,
+ Matrix::new(3, 3)
+ .insert((3, 2), "https://\nwww\n.\nredhat\n.com\n/en")
+ .with(Style::psql())
+ .with(Modify::new(Cell::new(3, 2)).with(Span::column(2)))
+ .with(Margin::new(0, 0, 0, 0).fill('>', '<', 'V', '^')),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | https:// "
+ " | | www "
+ " | | . "
+ " | | redhat "
+ " | | .com "
+ " | | /en "
+);
+
+#[test]
+fn table_with_margin_and_min_width() {
+ let table = Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Cell::new(1, 1)).with(Span::column(2)))
+ .with(Margin::new(1, 1, 1, 1).fill('>', '<', 'V', '^'))
+ .with(Width::truncate(20))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "VVVVVVVVVVVVVVVVVVVV"
+ "> | co | co | col <"
+ ">--+----+----+-----<"
+ "> | 0-0 | 0-2 <"
+ "> | 1- | 1- | 1-2 <"
+ "> | 2- | 2- | 2-2 <"
+ "^^^^^^^^^^^^^^^^^^^^"
+ )
+ );
+ assert!(is_lines_equal(&table, 20));
+}
+
+#[test]
+fn table_with_margin_and_max_width() {
+ let table = Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Cell::new(1, 1)).with(Span::column(2)))
+ .with(Margin::new(1, 1, 1, 1).fill('>', '<', 'V', '^'))
+ .with(Width::increase(50))
+ .to_string();
+
+ assert_eq!(papergrid::util::string::string_width_multiline(&table), 50);
+ assert_eq!(
+ table,
+ static_table!(
+ "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"
+ "> N | column 0 | column 1 | column 2 <"
+ ">------+-------------+-------------+-------------<"
+ "> 0 | 0-0 | 0-2 <"
+ "> 1 | 1-0 | 1-1 | 1-2 <"
+ "> 2 | 2-0 | 2-1 | 2-2 <"
+ "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
+ )
+ );
+}
+
+#[test]
+#[ignore = "It's not yet clear what to do with such spans"]
+fn table_0_spanned_with_width() {
+ let table = Matrix::table(0, 0)
+ .with(Modify::new(Cell::new(0, 0)).with(Span::column(0)))
+ .with(Width::increase(50))
+ .to_string();
+
+ assert_eq!(table, "++\n|\n++\n");
+
+ let table = Matrix::table(0, 0)
+ .with(Modify::new(Cell::new(0, 0)).with(Span::column(0)))
+ .with(Width::truncate(50))
+ .to_string();
+
+ assert_eq!(table, "++\n|\n++\n");
+}
+
+#[test]
+fn margin_color_test_not_colored_feature() {
+ use tabled::settings::Color;
+
+ let table = Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Margin::new(2, 2, 2, 2).fill('>', '<', 'V', '^').colorize(
+ Color::BG_GREEN,
+ Color::BG_YELLOW,
+ Color::BG_RED,
+ Color::BG_BLUE,
+ ))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "\u{1b}[41mVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\u{1b}[49m"
+ "\u{1b}[41mVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\u{1b}[49m"
+ "\u{1b}[42m>>\u{1b}[49m N | column 0 | column 1 | column 2 \u{1b}[43m<<\u{1b}[49m"
+ "\u{1b}[42m>>\u{1b}[49m---+----------+----------+----------\u{1b}[43m<<\u{1b}[49m"
+ "\u{1b}[42m>>\u{1b}[49m 0 | 0-0 | 0-1 | 0-2 \u{1b}[43m<<\u{1b}[49m"
+ "\u{1b}[42m>>\u{1b}[49m 1 | 1-0 | 1-1 | 1-2 \u{1b}[43m<<\u{1b}[49m"
+ "\u{1b}[42m>>\u{1b}[49m 2 | 2-0 | 2-1 | 2-2 \u{1b}[43m<<\u{1b}[49m"
+ "\u{1b}[44m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u{1b}[49m"
+ "\u{1b}[44m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u{1b}[49m"
+ )
+ );
+}
+
+#[cfg(feature = "color")]
+#[test]
+fn margin_color_test() {
+ let table = Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Margin::new(2, 2, 2, 2).fill('>', '<', 'V', '^').colorize(
+ Color::try_from(" ".red().bold().to_string()).unwrap(),
+ Color::try_from(" ".green().to_string()).unwrap(),
+ Color::try_from(" ".on_blue().red().bold().to_string()).unwrap(),
+ Color::try_from(" ".on_yellow().blue().to_string()).unwrap(),
+ ))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "\u{1b}[1m\u{1b}[31m\u{1b}[44mVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\u{1b}[22m\u{1b}[39m\u{1b}[49m"
+ "\u{1b}[1m\u{1b}[31m\u{1b}[44mVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\u{1b}[22m\u{1b}[39m\u{1b}[49m"
+ "\u{1b}[1m\u{1b}[31m>>\u{1b}[22m\u{1b}[39m N | column 0 | column 1 | column 2 \u{1b}[32m<<\u{1b}[39m"
+ "\u{1b}[1m\u{1b}[31m>>\u{1b}[22m\u{1b}[39m---+----------+----------+----------\u{1b}[32m<<\u{1b}[39m"
+ "\u{1b}[1m\u{1b}[31m>>\u{1b}[22m\u{1b}[39m 0 | 0-0 | 0-1 | 0-2 \u{1b}[32m<<\u{1b}[39m"
+ "\u{1b}[1m\u{1b}[31m>>\u{1b}[22m\u{1b}[39m 1 | 1-0 | 1-1 | 1-2 \u{1b}[32m<<\u{1b}[39m"
+ "\u{1b}[1m\u{1b}[31m>>\u{1b}[22m\u{1b}[39m 2 | 2-0 | 2-1 | 2-2 \u{1b}[32m<<\u{1b}[39m"
+ "\u{1b}[34m\u{1b}[43m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u{1b}[39m\u{1b}[49m"
+ "\u{1b}[34m\u{1b}[43m^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\u{1b}[39m\u{1b}[49m"
+ )
+ );
+}
diff --git a/vendor/tabled/tests/settings/merge_test.rs b/vendor/tabled/tests/settings/merge_test.rs
new file mode 100644
index 000000000..cbc119aa9
--- /dev/null
+++ b/vendor/tabled/tests/settings/merge_test.rs
@@ -0,0 +1,196 @@
+#![cfg(feature = "std")]
+
+use tabled::{settings::merge::Merge, Table};
+
+use testing_table::test_table;
+
+test_table!(
+ merge_horizontal,
+ Table::new([[0, 1, 1], [1, 1, 2], [1, 1, 1]]).with(Merge::horizontal()),
+ "+---+---+---+"
+ "| 0 | 1 | 2 |"
+ "+---+---+---+"
+ "| 0 | 1 |"
+ "+---+---+---+"
+ "| 1 | 2 |"
+ "+---+---+---+"
+ "| 1 |"
+ "+---+---+---+"
+);
+
+test_table!(
+ merge_horizontal_with_no_duplicates,
+ Table::new([[0, 1, 2], [0, 1, 2], [0, 1, 2]]).with(Merge::horizontal()),
+ "+---+---+---+"
+ "| 0 | 1 | 2 |"
+ "+---+---+---+"
+ "| 0 | 1 | 2 |"
+ "+---+---+---+"
+ "| 0 | 1 | 2 |"
+ "+---+---+---+"
+ "| 0 | 1 | 2 |"
+ "+---+---+---+"
+);
+
+test_table!(
+ merge_horizontal_empty,
+ Table::new([[0usize; 0]]).with(Merge::horizontal()),
+ ""
+);
+
+test_table!(
+ merge_vertical_0,
+ Table::new([[0, 3, 5], [0, 3, 3], [0, 2, 3]]).with(Merge::vertical()),
+ "+---+---+---+"
+ "| 0 | 1 | 2 |"
+ "+ +---+---+"
+ "| | 3 | 5 |"
+ "+ + +---+"
+ "+ +---+ 3 +"
+ "| | 2 | |"
+ "+---+---+---+"
+);
+
+test_table!(
+ merge_vertical_1,
+ Table::new([[0, 3, 2], [0, 3, 3], [0, 2, 3]]).with(Merge::vertical()),
+ "+---+---+---+"
+ "| 0 | 1 | 2 |"
+ "+ +---+ +"
+ "+ + 3 +---+"
+ "+ +---+ 3 +"
+ "| | 2 | |"
+ "+---+---+---+"
+);
+
+test_table!(
+ merge_vertical_with_no_duplicates,
+ Table::new([[5; 3], [15; 3], [115; 3]]).with(Merge::vertical()),
+ "+-----+-----+-----+"
+ "| 0 | 1 | 2 |"
+ "+-----+-----+-----+"
+ "| 5 | 5 | 5 |"
+ "+-----+-----+-----+"
+ "| 15 | 15 | 15 |"
+ "+-----+-----+-----+"
+ "| 115 | 115 | 115 |"
+ "+-----+-----+-----+"
+);
+
+test_table!(
+ merge_vertical_empty,
+ Table::new([[0usize; 0]]).with(Merge::vertical()),
+ ""
+);
+
+test_table!(
+ merge_horizontal_and_vertical_0,
+ Table::new([[3, 3, 5], [3, 7, 8], [9, 10, 11]]).with(Merge::horizontal()).with(Merge::vertical()),
+ "+---+----+----+"
+ "| 0 | 1 | 2 |"
+ "+---+----+----+"
+ "| 3 | 5 |"
+ "+---+----+----+"
+ "| 3 | 7 | 8 |"
+ "+---+----+----+"
+ "| 9 | 10 | 11 |"
+ "+---+----+----+"
+);
+
+test_table!(
+ merge_horizontal_and_vertical_1,
+ Table::new([[0, 1, 1], [1, 1, 2], [1, 1, 1]]).with(Merge::horizontal()).with(Merge::vertical()),
+ "+---+---+---+"
+ "| 0 | 1 | 2 |"
+ "+ +---+---+"
+ "| | 1 |"
+ "+---+---+---+"
+ "| 1 | 2 |"
+ "+---+---+---+"
+ "| 1 |"
+ "+---+---+---+"
+);
+
+test_table!(
+ merge_horizontal_and_vertical_2,
+ Table::new([[3, 4, 5], [3, 3, 8], [3, 10, 11]]).with(Merge::horizontal()).with(Merge::vertical()),
+ "+---+----+----+"
+ "| 0 | 1 | 2 |"
+ "+---+----+----+"
+ "| 3 | 4 | 5 |"
+ "+---+----+----+"
+ "| 3 | 8 |"
+ "+---+----+----+"
+ "| 3 | 10 | 11 |"
+ "+---+----+----+"
+);
+
+test_table!(
+ merge_horizontal_and_vertical_3,
+ Table::new([[3, 4, 5], [3, 3, 8], [3, 10, 11]]).with(Merge::vertical()).with(Merge::horizontal()),
+ "+---+----+----+"
+ "| 0 | 1 | 2 |"
+ "+---+----+----+"
+ "| 3 | 4 | 5 |"
+ "+ +----+----+"
+ "| | 3 | 8 |"
+ "+ +----+----+"
+ "| | 10 | 11 |"
+ "+---+----+----+"
+);
+
+test_table!(
+ merge_horizontal_and_vertical_4,
+ Table::new([[3, 4, 5], [4, 4, 8], [3, 4, 11]]).with(Merge::vertical()).with(Merge::horizontal()),
+ "+---+---+----+"
+ "| 0 | 1 | 2 |"
+ "+---+---+----+"
+ "| 3 | 4 | 5 |"
+ "+---+ +----+"
+ "| 4 | | 8 |"
+ "+---+ +----+"
+ "| 3 | | 11 |"
+ "+---+---+----+"
+);
+
+test_table!(
+ merge_horizontal_and_vertical_5,
+ Table::new([[3, 4, 4], [4, 4, 8], [3, 4, 11]]).with(Merge::vertical()).with(Merge::horizontal()),
+ "+---+---+----+"
+ "| 0 | 1 | 2 |"
+ "+---+---+----+"
+ "| 3 | 4 | 4 |"
+ "+---+ +----+"
+ "| 4 | | 8 |"
+ "+---+ +----+"
+ "| 3 | | 11 |"
+ "+---+---+----+"
+);
+
+test_table!(
+ merge_horizontal_and_vertical_6,
+ Table::new([[4, 4, 4], [5, 4, 8], [3, 4, 11]]).with(Merge::vertical()).with(Merge::horizontal()),
+ "+---+---+----+"
+ "| 0 | 1 | 2 |"
+ "+---+---+----+"
+ "| 4 | 4 | 4 |"
+ "+---+ +----+"
+ "| 5 | | 8 |"
+ "+---+ +----+"
+ "| 3 | | 11 |"
+ "+---+---+----+"
+);
+
+test_table!(
+ merge_horizontal_and_vertical_7,
+ Table::new([[0, 0, 0], [0, 0, 1], [2, 0, 0]]).with(Merge::horizontal()).with(Merge::vertical()),
+ "+---+---+---+"
+ "| 0 | 1 | 2 |"
+ "+---+---+---+"
+ "| 0 |"
+ "+---+---+---+"
+ "| 0 | 1 |"
+ "+---+---+---+"
+ "| 2 | 0 |"
+ "+---+---+---+"
+);
diff --git a/vendor/tabled/tests/settings/mod.rs b/vendor/tabled/tests/settings/mod.rs
new file mode 100644
index 000000000..da76a5e14
--- /dev/null
+++ b/vendor/tabled/tests/settings/mod.rs
@@ -0,0 +1,23 @@
+mod alignment_test;
+mod color_test;
+mod colorization;
+mod column_names_test;
+mod concat_test;
+mod disable_test;
+mod duplicate_test;
+mod extract_test;
+mod format_test;
+mod formatting_test;
+mod height_test;
+mod highlingt_test;
+mod margin_test;
+mod merge_test;
+mod padding_test;
+mod panel_test;
+mod render_settings;
+mod rotate_test;
+mod shadow_test;
+mod span_test;
+mod split_test;
+mod style_test;
+mod width_test;
diff --git a/vendor/tabled/tests/settings/padding_test.rs b/vendor/tabled/tests/settings/padding_test.rs
new file mode 100644
index 000000000..9a3edb4aa
--- /dev/null
+++ b/vendor/tabled/tests/settings/padding_test.rs
@@ -0,0 +1,138 @@
+#![cfg(feature = "std")]
+
+use tabled::settings::{
+ object::{Rows, Segment},
+ Alignment, Modify, Padding, Style,
+};
+
+use crate::matrix::Matrix;
+use testing_table::test_table;
+
+#[cfg(feature = "color")]
+use ::{owo_colors::OwoColorize, std::convert::TryFrom, tabled::settings::Color};
+
+test_table!(
+ padding,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Rows::new(1..)).with(Padding::new(1, 1, 0, 2))),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " | | | "
+ " | | | "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " | | | "
+ " | | | "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ " | | | "
+ " | | | "
+);
+
+test_table!(
+ padding_with_set_characters,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Padding::new(1, 2, 1, 1).fill('>', '<', 'V', '^'))),
+ "VVVV|VVVVVVVVVVV|VVVVVVVVVVV|VVVVVVVVVVV"
+ ">N<<|>column 0<<|>column 1<<|>column 2<<"
+ "^^^^|^^^^^^^^^^^|^^^^^^^^^^^|^^^^^^^^^^^"
+ "----+-----------+-----------+-----------"
+ "VVVV|VVVVVVVVVVV|VVVVVVVVVVV|VVVVVVVVVVV"
+ ">0<<|> 0-0 <<|> 0-1 <<|> 0-2 <<"
+ "^^^^|^^^^^^^^^^^|^^^^^^^^^^^|^^^^^^^^^^^"
+ "VVVV|VVVVVVVVVVV|VVVVVVVVVVV|VVVVVVVVVVV"
+ ">1<<|> 1-0 <<|> 1-1 <<|> 1-2 <<"
+ "^^^^|^^^^^^^^^^^|^^^^^^^^^^^|^^^^^^^^^^^"
+ "VVVV|VVVVVVVVVVV|VVVVVVVVVVV|VVVVVVVVVVV"
+ ">2<<|> 2-0 <<|> 2-1 <<|> 2-2 <<"
+ "^^^^|^^^^^^^^^^^|^^^^^^^^^^^|^^^^^^^^^^^"
+);
+
+test_table!(
+ padding_with_set_characters_and_zero_ident,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Padding::zero().fill('>', '<', '^', 'V'))),
+ "N|column 0|column 1|column 2"
+ "-+--------+--------+--------"
+ "0| 0-0 | 0-1 | 0-2 "
+ "1| 1-0 | 1-1 | 1-2 "
+ "2| 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ padding_multiline,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Rows::new(1..)).with(Padding::new(1, 1, 1, 1))),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " | | | "
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " | | | "
+ " | | | "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " | | | "
+ " | | | "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ " | | | "
+);
+
+test_table!(
+ padding_multiline_with_vertical_alignment,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::center()).with(Alignment::center_vertical()))
+ .with(Modify::new(Rows::new(1..)).with(Padding::new(1, 1, 1, 1))),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " | | | "
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " | | | "
+ " | | | "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " | | | "
+ " | | | "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ " | | | "
+);
+
+#[cfg(feature = "color")]
+test_table!(
+ padding_color,
+ {
+ let padding = Padding::new(2, 2, 2, 2).colorize(
+ Color::try_from(' '.on_yellow().to_string()).unwrap(),
+ Color::try_from(' '.on_blue().to_string()).unwrap(),
+ Color::try_from(' '.on_red().to_string()).unwrap(),
+ Color::try_from(' '.on_green().to_string()).unwrap(),
+ );
+
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Rows::new(1..)).with(padding))
+ },
+ " N | column 0 | column 1 | column 2 \n-----+----------+----------+----------\n\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\n\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\n\u{1b}[43m \u{1b}[49m0\u{1b}[44m \u{1b}[49m|\u{1b}[43m \u{1b}[49m 0-0 \u{1b}[44m \u{1b}[49m|\u{1b}[43m \u{1b}[49m 0-1 \u{1b}[44m \u{1b}[49m|\u{1b}[43m \u{1b}[49m 0-2 \u{1b}[44m \u{1b}[49m\n\u{1b}[42m \u{1b}[49m|\u{1b}[42m \u{1b}[49m|\u{1b}[42m \u{1b}[49m|\u{1b}[42m \u{1b}[49m\n\u{1b}[42m \u{1b}[49m|\u{1b}[42m \u{1b}[49m|\u{1b}[42m \u{1b}[49m|\u{1b}[42m \u{1b}[49m\n\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\n\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\n\u{1b}[43m \u{1b}[49m1\u{1b}[44m \u{1b}[49m|\u{1b}[43m \u{1b}[49m 1-0 \u{1b}[44m \u{1b}[49m|\u{1b}[43m \u{1b}[49m 1-1 \u{1b}[44m \u{1b}[49m|\u{1b}[43m \u{1b}[49m 1-2 \u{1b}[44m \u{1b}[49m\n\u{1b}[42m \u{1b}[49m|\u{1b}[42m \u{1b}[49m|\u{1b}[42m \u{1b}[49m|\u{1b}[42m \u{1b}[49m\n\u{1b}[42m \u{1b}[49m|\u{1b}[42m \u{1b}[49m|\u{1b}[42m \u{1b}[49m|\u{1b}[42m \u{1b}[49m\n\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\n\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m|\u{1b}[41m \u{1b}[49m\n\u{1b}[43m \u{1b}[49m2\u{1b}[44m \u{1b}[49m|\u{1b}[43m \u{1b}[49m 2-0 \u{1b}[44m \u{1b}[49m|\u{1b}[43m \u{1b}[49m 2-1 \u{1b}[44m \u{1b}[49m|\u{1b}[43m \u{1b}[49m 2-2 \u{1b}[44m \u{1b}[49m\n\u{1b}[42m \u{1b}[49m|\u{1b}[42m \u{1b}[49m|\u{1b}[42m \u{1b}[49m|\u{1b}[42m \u{1b}[49m\n\u{1b}[42m \u{1b}[49m|\u{1b}[42m \u{1b}[49m|\u{1b}[42m \u{1b}[49m|\u{1b}[42m \u{1b}[49m"
+);
+
+test_table!(
+ padding_table,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Padding::new(1, 1, 0, 2)),
+ " N | column 0 | column 1 | column 2 "
+ " | | | "
+ " | | | "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " | | | "
+ " | | | "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " | | | "
+ " | | | "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ " | | | "
+ " | | | "
+);
diff --git a/vendor/tabled/tests/settings/panel_test.rs b/vendor/tabled/tests/settings/panel_test.rs
new file mode 100644
index 000000000..613fe1d0e
--- /dev/null
+++ b/vendor/tabled/tests/settings/panel_test.rs
@@ -0,0 +1,337 @@
+#![cfg(feature = "std")]
+
+use tabled::settings::{
+ object::{Cell, Object, Rows, Segment},
+ style::{BorderSpanCorrection, HorizontalLine},
+ Alignment, Border, Highlight, Modify, Panel, Span, Style, Width,
+};
+
+use crate::matrix::Matrix;
+use testing_table::test_table;
+
+test_table!(
+ panel_has_no_style_by_default,
+ Matrix::new(3, 3).with(Style::psql()).with(Panel::horizontal(0,"Linux Distributions")),
+ " Linux Distributions "
+ "---+----------+----------+----------"
+ " N | column 0 | column 1 | column 2 "
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ highlight_panel_0,
+ Matrix::new(3, 3)
+ .with(Panel::horizontal(0,"Linux Distributions"))
+ .with(Style::psql())
+ .with(Highlight::new(Cell::new(0, 0), Border::filled('#'))),
+ "##### "
+ "# Linux Distributions "
+ "#####----------+----------+----------"
+ " N | column 0 | column 1 | column 2 "
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ highlight_panel_1,
+ Matrix::new(3, 3)
+ .with(Panel::horizontal(0,"Linux Distributions"))
+ .with(Style::psql())
+ .with(Highlight::new(Cell::new(0, 0), Border::filled('#')))
+ .with(Highlight::new(Cell::new(0, 1), Border::filled('#')))
+ .with(Highlight::new(Cell::new(0, 2), Border::filled('#')))
+ .with(Highlight::new(Cell::new(0, 3), Border::filled('#'))),
+ "######################################"
+ "# Linux Distributions #"
+ "######################################"
+ " N | column 0 | column 1 | column 2 "
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ top_panel,
+ Matrix::new(3, 3)
+ .with(Panel::horizontal(0,"Linux Distributions"))
+ .with(Modify::new(Segment::all()).with(Alignment::center()))
+ .with(Style::psql()),
+ " Linux Distributions "
+ "---+----------+----------+----------"
+ " N | column 0 | column 1 | column 2 "
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ bottom_panel,
+ Matrix::new(3, 3)
+ .with(Panel::horizontal(4,"Linux Distributions"))
+ .with(Modify::new(Segment::all()).with(Alignment::center()))
+ .with(Style::psql()),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ " Linux Distributions "
+);
+
+test_table!(
+ inner_panel,
+ Matrix::new(3, 3)
+ .with(Panel::horizontal(2,"Linux Distributions"))
+ .with(Modify::new(Rows::new(2..)).with(Alignment::center()))
+ .with(Style::psql()),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " Linux Distributions "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ header,
+ Matrix::new(3, 3)
+ .with(Panel::header("Linux Distributions"))
+ .with(Style::psql())
+ .with(Modify::new(Rows::new(0..1)).with(Alignment::center())),
+ " Linux Distributions "
+ "---+----------+----------+----------"
+ " N | column 0 | column 1 | column 2 "
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ footer,
+ Matrix::new(3, 3)
+ .with(Panel::header("Linux Distributions"))
+ .with(Panel::footer("The end"))
+ .with(Style::psql())
+ .with(Modify::new(Rows::first().and(Rows::last())).with(Alignment::center())),
+ " Linux Distributions "
+ "---+----------+----------+----------"
+ " N | column 0 | column 1 | column 2 "
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ " The end "
+);
+
+test_table!(
+ panel_style_uses_most_left_and_right_cell_styles,
+ Matrix::iter([(0, 1)]).with(Panel::horizontal(0,"Numbers")).with(Style::modern()),
+ "┌─────┬─────â”"
+ "│ Numbers │"
+ "├─────┼─────┤"
+ "│ i32 │ i32 │"
+ "├─────┼─────┤"
+ "│ 0 │ 1 │"
+ "└─────┴─────┘"
+);
+
+test_table!(
+ panel_style_change,
+ Matrix::iter([(0, 1)])
+ .with(Panel::horizontal(0,"Numbers"))
+ .with(Style::modern().intersection_top('─').horizontals([HorizontalLine::new(1, Style::modern().get_horizontal()).intersection(Some('┬'))]))
+ .with(Modify::new(Cell::new(0, 0)).with(Alignment::center())),
+ "┌───────────â”"
+ "│ Numbers │"
+ "├─────┬─────┤"
+ "│ i32 │ i32 │"
+ "├─────┼─────┤"
+ "│ 0 │ 1 │"
+ "└─────┴─────┘"
+);
+
+test_table!(
+ panel_style_uses_most_left_and_right_cell_styles_correct,
+ Matrix::iter([(0, 1)])
+ .with(Panel::horizontal(0,"Numbers"))
+ .with(Style::modern())
+ .with(BorderSpanCorrection),
+ "┌───────────â”"
+ "│ Numbers │"
+ "├─────┬─────┤"
+ "│ i32 │ i32 │"
+ "├─────┼─────┤"
+ "│ 0 │ 1 │"
+ "└─────┴─────┘"
+);
+
+test_table!(
+ panel_style_change_correct,
+ Matrix::iter([(0, 1)])
+ .with(Panel::horizontal(0,"Numbers"))
+ .with(Style::modern().intersection_top('─').horizontals([HorizontalLine::new(1, Style::modern().get_horizontal()).intersection(Some('┬'))]))
+ .with(BorderSpanCorrection)
+ .with(Modify::new(Cell::new(0, 0)).with(Alignment::center())),
+ "┌───────────â”"
+ "│ Numbers │"
+ "├───────────┤" // it's different because we use a top_intersection char by default when making style for `Panel`s.
+ "│ i32 │ i32 │"
+ "├─────┼─────┤"
+ "│ 0 │ 1 │"
+ "└─────┴─────┘"
+);
+
+test_table!(
+ panel_in_single_column,
+ #[allow(clippy::needless_borrow)]
+ Matrix::iter(&[(0)]).with(Panel::horizontal(0,"Numbers")).with(Style::modern()),
+ "┌─────────â”"
+ "│ Numbers │"
+ "├─────────┤"
+ "│ i32 │"
+ "├─────────┤"
+ "│ 0 │"
+ "└─────────┘"
+);
+
+test_table!(
+ panel_vertical_0,
+ Matrix::new(3, 3).with(Style::psql()).with(Panel::vertical(0,"Linux Distributions")),
+ " Linux Distributions | N | column 0 | column 1 | column 2 "
+ " +---+----------+----------+----------"
+ " | 0 | 0-0 | 0-1 | 0-2 "
+ " | 1 | 1-0 | 1-1 | 1-2 "
+ " | 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ panel_vertical_1,
+ Matrix::new(3, 3).with(Style::psql()).with(Panel::vertical(1,"Linux Distributions")),
+ " N | Linux Distributions | column 0 | column 1 | column 2 "
+ "---+ +----------+----------+----------"
+ " 0 | | 0-0 | 0-1 | 0-2 "
+ " 1 | | 1-0 | 1-1 | 1-2 "
+ " 2 | | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ panel_vertical_2,
+ Matrix::new(3, 3).with(Style::psql()).with(Panel::vertical(4,"Linux Distributions")),
+ " N | column 0 | column 1 | column 2 | Linux Distributions "
+ "---+----------+----------+----------+ "
+ " 0 | 0-0 | 0-1 | 0-2 | "
+ " 1 | 1-0 | 1-1 | 1-2 | "
+ " 2 | 2-0 | 2-1 | 2-2 | "
+);
+
+test_table!(
+ panel_vertical_0_wrap,
+ Matrix::new(3, 3).with(Style::psql()).with(Panel::vertical(0,"Linux Distributions")).with(Modify::new(Cell::new(0, 0)).with(Width::wrap(3))),
+ " Lin | N | column 0 | column 1 | column 2 "
+ " ux | | | | "
+ " Dis | | | | "
+ " tri +---+----------+----------+----------"
+ " but | 0 | 0-0 | 0-1 | 0-2 "
+ " ion | 1 | 1-0 | 1-1 | 1-2 "
+ " s | 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ panel_vertical_0_wrap_0,
+ Matrix::new(3, 3).with(Style::psql()).with(Panel::vertical(0,"Linux Distributions")).with(Modify::new(Cell::new(0, 0)).with(Width::wrap(0))),
+ " | N | column 0 | column 1 | column 2 "
+ " +---+----------+----------+----------"
+ " | 0 | 0-0 | 0-1 | 0-2 "
+ " | 1 | 1-0 | 1-1 | 1-2 "
+ " | 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ panel_vertical_0_wrap_100,
+ Matrix::new(3, 3).with(Style::psql()).with(Panel::vertical(0,"Linux Distributions")).with(Modify::new(Cell::new(0, 0)).with(Width::wrap(100))),
+ " Linux Distributions | N | column 0 | column 1 | column 2 "
+ " +---+----------+----------+----------"
+ " | 0 | 0-0 | 0-1 | 0-2 "
+ " | 1 | 1-0 | 1-1 | 1-2 "
+ " | 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ panel_horizontal_set_0,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Panel::horizontal(0,"Linux Distributions"))
+ .with(Panel::vertical(0,"asd")),
+ " asd | Linux Distributions "
+ " +---+----------+----------+----------"
+ " | N | column 0 | column 1 | column 2 "
+ " | 0 | 0-0 | 0-1 | 0-2 "
+ " | 1 | 1-0 | 1-1 | 1-2 "
+ " | 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ panel_horizontal_set_1,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Panel::horizontal(0,"Linux Distributions"))
+ .with(Panel::vertical(0,"asd"))
+ .with(Panel::vertical(5,"asd"))
+ ,
+ " asd | Linux Distributions | asd "
+ " +---+----------+----------+----------+ "
+ " | N | column 0 | column 1 | column 2 | "
+ " | 0 | 0-0 | 0-1 | 0-2 | "
+ " | 1 | 1-0 | 1-1 | 1-2 | "
+ " | 2 | 2-0 | 2-1 | 2-2 | "
+);
+
+test_table!(
+ ignore_col_span_intersect_with_other_span,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Panel::horizontal(0,"Linux Distributions"))
+ .with(Panel::vertical(0,"asd"))
+ .with(Panel::vertical(5,"zxc"))
+ .with(Modify::new((1, 3)).with(Span::column(3)).with("wwwww")),
+ " asd | Linux Distributions | zxc "
+ " +---+----------+-------+----------+ "
+ " | N | column 0 | wwwww | column 2 | "
+ " | 0 | 0-0 | 0-1 | 0-2 | "
+ " | 1 | 1-0 | 1-1 | 1-2 | "
+ " | 2 | 2-0 | 2-1 | 2-2 | "
+);
+
+test_table!(
+ panel_horizontal_x_2,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Panel::horizontal(0,"Linux Distributions"))
+ .with(Panel::vertical(0,"asd"))
+ .with(Panel::vertical(5,"zxc"))
+ .with(Modify::new((1, 3)).with(Span::column(2)).with("wwwww")),
+ " asd | Linux Distributions | zxc "
+ " +---+----------+-----+-----+ "
+ " | N | column 0 | wwwww | "
+ " | 0 | 0-0 | 0-1 | 0-2 | "
+ " | 1 | 1-0 | 1-1 | 1-2 | "
+ " | 2 | 2-0 | 2-1 | 2-2 | "
+);
+
+test_table!(
+ ignore_row_span_intersect_with_other_span,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Panel::horizontal(2,"Linux Distributions"))
+ .with(Panel::vertical(0,"asd"))
+ .with(Panel::vertical(5,"zxc"))
+ .with(Modify::new((0, 3)).with(Span::row(4)).with("xxxxx")),
+ " asd | N | column 0 | xxxxx | column 2 | zxc "
+ " +---+----------+-------+----------+ "
+ " | 0 | 0-0 | 0-1 | 0-2 | "
+ " | Linux Distributions | "
+ " | 1 | 1-0 | 1-1 | 1-2 | "
+ " | 2 | 2-0 | 2-1 | 2-2 | "
+);
diff --git a/vendor/tabled/tests/settings/render_settings.rs b/vendor/tabled/tests/settings/render_settings.rs
new file mode 100644
index 000000000..f25a59a67
--- /dev/null
+++ b/vendor/tabled/tests/settings/render_settings.rs
@@ -0,0 +1,292 @@
+#![cfg(feature = "std")]
+
+use tabled::settings::{
+ formatting::{AlignmentStrategy, TabSize, TrimStrategy},
+ object::Segment,
+ Alignment, Modify, Span, Style,
+};
+
+use crate::matrix::{Matrix, MatrixList};
+use testing_table::test_table;
+
+#[cfg(feature = "color")]
+use owo_colors::OwoColorize;
+
+test_table!(
+ alignment_per_line,
+ Matrix::iter(multiline_data1())
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::right()).with(AlignmentStrategy::PerLine)),
+ " N | column 0 | column 1 | column 2 "
+ "-----------+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " asd | 1-0 | 1-1 | 1-2 "
+ " 21213123 | | | "
+ " | | | "
+ " asdasd | | | "
+ " | | | "
+ " | | | "
+ " 2 | 2-0 | https:// | 2-2 "
+ " | | www | "
+ " | | . | "
+ " | | redhat | "
+ " | | .com | "
+ " | | /en | "
+);
+
+test_table!(
+ alignment_per_line_with_trim_0,
+ Matrix::iter(multiline_data1())
+ .with(Style::psql())
+ .with(Alignment::right())
+ .with(AlignmentStrategy::PerLine)
+ .with(TrimStrategy::Horizontal),
+ " N | column 0 | column 1 | column 2 "
+ "-----------+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " asd | 1-0 | 1-1 | 1-2 "
+ " 21213123 | | | "
+ " | | | "
+ " asdasd | | | "
+ " | | | "
+ " | | | "
+ " 2 | 2-0 | https:// | 2-2 "
+ " | | www | "
+ " | | . | "
+ " | | redhat | "
+ " | | .com | "
+ " | | /en | "
+);
+
+test_table!(
+ alignment_per_line_with_trim_1,
+ Matrix::iter(multiline_data2())
+ .with(Style::psql())
+ .with(Modify::new(Segment::all())
+ .with(Alignment::center_vertical())
+ .with(Alignment::left())
+ .with(AlignmentStrategy::PerLine)
+ .with(TrimStrategy::Both)),
+ " N | column 0 | column 1 | column 2 "
+ "-------------------+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " | | | "
+ " | | | "
+ " | | | "
+ " asd | 1-0 | 1-1 | 1-2 "
+ " 21213123 asdasd | | | "
+ " | | | "
+ " | | | "
+ " | | | "
+ " | | https:// | "
+ " | | www | "
+ " 2 | 2-0 | . | 2-2 "
+ " | | redhat | "
+ " | | .com | "
+ " | | /en | "
+);
+
+test_table!(
+ tab_isnot_handled_by_default_test,
+ Matrix::iter(tab_data1()).with(Style::psql()),
+ " N | column 0 | column 1 | column 2 "
+ "--------------+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 123\t123\tasdasd | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | htt\tps:// | 2-2 "
+ " | | www | "
+ " | | . | "
+ " | | red\that | "
+ " | | .c\tom | "
+ " | | /en | "
+);
+
+test_table!(
+ tab_size_test_0,
+ Matrix::iter(tab_data1()).with(Style::psql()).with(TabSize::new(4)),
+ " N | column 0 | column 1 | column 2 "
+ "----------------------+----------+--------------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 123 123 asdasd | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | htt ps:// | 2-2 "
+ " | | www | "
+ " | | . | "
+ " | | red hat | "
+ " | | .c om | "
+ " | | /en | "
+);
+
+test_table!(
+ tab_size_test_1,
+ Matrix::iter(tab_data1()).with(Style::psql()).with(Modify::new(Segment::all()).with(Alignment::right())).with(TabSize::new(2)),
+ " N | column 0 | column 1 | column 2 "
+ "------------------+----------+------------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 123 123 asdasd | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | htt ps:// | 2-2 "
+ " | | www | "
+ " | | . | "
+ " | | red hat | "
+ " | | .c om | "
+ " | | /en | "
+);
+
+test_table!(
+ tab_size_test_2,
+ Matrix::iter(tab_data1()).with(Style::psql()).with(Modify::new(Segment::all()).with(Alignment::right())).with(TabSize::new(0)),
+ " N | column 0 | column 1 | column 2 "
+ "--------------+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 123123asdasd | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | https:// | 2-2 "
+ " | | www | "
+ " | | . | "
+ " | | redhat | "
+ " | | .com | "
+ " | | /en | "
+);
+
+test_table!(
+ tab_size_span_test,
+ Matrix::iter(tab_data2())
+ .with(TabSize::new(4))
+ .with(Style::psql())
+ .with(Modify::new((0, 0)).with(Span::column(3)))
+ .with(Modify::new((1, 0)).with(Span::column(2)))
+ .with(Modify::new((2, 1)).with(Span::column(2))),
+ " N | column 2 "
+ "----------------------+-----+--------------+----------"
+ " H ello World | 0-1 | 0-2 "
+ " 123 123 asdasd | 1-0 | 1-2 "
+ " 2 | 2-0 | htt ps:// | 2-2 "
+ " | | www | "
+ " | | . | "
+ " | | red hat | "
+ " | | .c om | "
+ " | | /en | "
+);
+
+test_table!(
+ test_top_alignment_and_vertical_trim_1,
+ Matrix::iter(vec![" \n\n\n Hello World"])
+ .with(Style::modern())
+ .with(Modify::new(Segment::all()).with(Alignment::top()).with(TrimStrategy::Vertical)),
+ "┌─────────────────â”"
+ "│ &str │"
+ "├─────────────────┤"
+ "│ Hello World │"
+ "│ │"
+ "│ │"
+ "│ │"
+ "└─────────────────┘"
+);
+
+#[cfg(feature = "color")]
+test_table!(
+ trim_colored_string_test_2,
+ Matrix::iter(colored_data())
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::right()).with(TrimStrategy::None)),
+ " N | column 0 | column 1 | column 2 "
+ "-----------+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " \u{1b}[31masd\u{1b}[39m | 1-0 | 1-1 | 1-2 "
+ " \u{1b}[31m21213123\u{1b}[39m | | | "
+ " | | | "
+ " \u{1b}[31m asdasd\u{1b}[39m | | | "
+ " | | | "
+ " \u{1b}[31m\u{1b}[39m | | | "
+ " 2 | 2-0 | \u{1b}[44mhttps://\u{1b}[49m | 2-2 "
+ " | | \u{1b}[44mwww\u{1b}[49m | "
+ " | | \u{1b}[44m.\u{1b}[49m | "
+ " | | \u{1b}[44mredhat\u{1b}[49m | "
+ " | | \u{1b}[44m.com\u{1b}[49m | "
+ " | | \u{1b}[44m/en\u{1b}[49m | "
+);
+
+#[cfg(feature = "color")]
+test_table!(
+ trim_colored_string_test_1,
+ Matrix::iter(colored_data())
+ .with(Style::psql())
+ .with(
+ Modify::new(Segment::all())
+ .with(Alignment::right())
+ .with(TrimStrategy::Horizontal)
+ .with(AlignmentStrategy::PerLine),
+ ),
+ " N | column 0 | column 1 | column 2 "
+ "-----------+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " \u{1b}[31masd\u{1b}[39m | 1-0 | 1-1 | 1-2 "
+ " \u{1b}[31m21213123\u{1b}[39m | | | "
+ " | | | "
+ " \u{1b}[31masdasd\u{1b}[39m | | | "
+ " | | | "
+ " \u{1b}[31m\u{1b}[39m | | | "
+ " 2 | 2-0 | \u{1b}[44mhttps://\u{1b}[49m | 2-2 "
+ " | | \u{1b}[44mwww\u{1b}[49m | "
+ " | | \u{1b}[44m.\u{1b}[49m | "
+ " | | \u{1b}[44mredhat\u{1b}[49m | "
+ " | | \u{1b}[44m.com\u{1b}[49m | "
+ " | | \u{1b}[44m/en\u{1b}[49m | "
+);
+#[cfg(feature = "color")]
+test_table!(
+ trim_colored_string_test_0,
+ Matrix::iter(colored_data())
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::right()).with(TrimStrategy::Horizontal)),
+ " N | column 0 | column 1 | column 2 "
+ "-----------+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " \u{1b}[31masd\u{1b}[39m | 1-0 | 1-1 | 1-2 "
+ " \u{1b}[31m21213123\u{1b}[39m | | | "
+ " | | | "
+ " \u{1b}[31masdasd\u{1b}[39m | | | "
+ " | | | "
+ " \u{1b}[31m\u{1b}[39m | | | "
+ " 2 | 2-0 | \u{1b}[44mhttps://\u{1b}[49m | 2-2 "
+ " | | \u{1b}[44mwww\u{1b}[49m | "
+ " | | \u{1b}[44m.\u{1b}[49m | "
+ " | | \u{1b}[44mredhat\u{1b}[49m | "
+ " | | \u{1b}[44m.com\u{1b}[49m | "
+ " | | \u{1b}[44m/en\u{1b}[49m | "
+);
+
+fn multiline_data1() -> Vec<MatrixList<3, true>> {
+ let mut data = Matrix::list::<3, 3>();
+ data[1][0] = String::from("asd\n21213123\n\n asdasd\n\n");
+ data[2][2] = String::from("https://\nwww\n.\nredhat\n.com\n/en");
+ data
+}
+
+fn multiline_data2() -> Vec<MatrixList<3, true>> {
+ let mut data = Matrix::list::<3, 3>();
+ data[1][0] = String::from("\n\n\nasd\n21213123 asdasd\n\n\n");
+ data[2][2] = String::from("https://\nwww\n.\nredhat\n.com\n/en");
+ data
+}
+
+fn tab_data1() -> Vec<MatrixList<3, true>> {
+ let mut data = Matrix::list::<3, 3>();
+ data[1][0] = String::from("123\t123\tasdasd");
+ data[2][2] = String::from("htt\tps://\nwww\n.\nred\that\n.c\tom\n/en");
+ data
+}
+
+fn tab_data2() -> Vec<MatrixList<3, true>> {
+ let mut data = Matrix::list::<3, 3>();
+ data[0][0] = String::from("\tH\t\tello\tWorld");
+ data[1][0] = String::from("123\t123\tasdasd");
+ data[2][2] = String::from("htt\tps://\nwww\n.\nred\that\n.c\tom\n/en");
+ data
+}
+
+#[cfg(feature = "color")]
+fn colored_data() -> Vec<MatrixList<3, true>> {
+ let mut data = Matrix::list::<3, 3>();
+ data[1][0] = "asd\n21213123\n\n asdasd\n\n".red().to_string();
+ data[2][2] = "https://\nwww\n.\nredhat\n.com\n/en".on_blue().to_string();
+ data
+}
diff --git a/vendor/tabled/tests/settings/rotate_test.rs b/vendor/tabled/tests/settings/rotate_test.rs
new file mode 100644
index 000000000..42a781818
--- /dev/null
+++ b/vendor/tabled/tests/settings/rotate_test.rs
@@ -0,0 +1,214 @@
+#![cfg(feature = "std")]
+
+// todo: add method for SPACING between cells.
+
+use tabled::settings::{
+ object::{Cell, Rows},
+ Border, Highlight, Rotate,
+};
+
+use crate::matrix::Matrix;
+use testing_table::test_table;
+
+#[test]
+fn test_rotate() {
+ let table = || Matrix::iter([(123, 456, 789), (234, 567, 891)]);
+
+ assert_eq!(
+ table()
+ .with(Rotate::Left)
+ .with(Rotate::Left)
+ .with(Rotate::Left)
+ .with(Rotate::Left)
+ .to_string(),
+ table().to_string()
+ );
+ assert_eq!(
+ table()
+ .with(Rotate::Right)
+ .with(Rotate::Right)
+ .with(Rotate::Right)
+ .with(Rotate::Right)
+ .to_string(),
+ table().to_string()
+ );
+ assert_eq!(
+ table().with(Rotate::Right).with(Rotate::Left).to_string(),
+ table().to_string()
+ );
+ assert_eq!(
+ table().with(Rotate::Left).with(Rotate::Right).to_string(),
+ table().to_string()
+ );
+ assert_eq!(
+ table().with(Rotate::Bottom).with(Rotate::Top).to_string(),
+ table().to_string()
+ );
+ assert_eq!(
+ table()
+ .with(Rotate::Bottom)
+ .with(Rotate::Bottom)
+ .to_string(),
+ table().to_string()
+ );
+ assert_eq!(
+ table().with(Rotate::Top).with(Rotate::Top).to_string(),
+ table().to_string()
+ );
+}
+
+test_table!(
+ test_3x3_box_0,
+ Matrix::iter([(123, 456, 789), (234, 567, 891)]).with(Rotate::Left),
+ "+-----+-----+-----+"
+ "| i32 | 789 | 891 |"
+ "+-----+-----+-----+"
+ "| i32 | 456 | 567 |"
+ "+-----+-----+-----+"
+ "| i32 | 123 | 234 |"
+ "+-----+-----+-----+"
+);
+
+test_table!(
+ test_3x3_box_1,
+ Matrix::iter([(123, 456, 789), (234, 567, 891)]).with(Rotate::Left).with(Rotate::Right).with(Rotate::Right),
+ "+-----+-----+-----+"
+ "| 234 | 123 | i32 |"
+ "+-----+-----+-----+"
+ "| 567 | 456 | i32 |"
+ "+-----+-----+-----+"
+ "| 891 | 789 | i32 |"
+ "+-----+-----+-----+"
+);
+
+test_table!(
+ test_left_rotate,
+ Matrix::iter([(123, 456, 789), (234, 567, 891), (111, 222, 333)]).with(Rotate::Left),
+ "+-----+-----+-----+-----+"
+ "| i32 | 789 | 891 | 333 |"
+ "+-----+-----+-----+-----+"
+ "| i32 | 456 | 567 | 222 |"
+ "+-----+-----+-----+-----+"
+ "| i32 | 123 | 234 | 111 |"
+ "+-----+-----+-----+-----+"
+);
+
+test_table!(
+ test_right_rotate,
+ Matrix::iter([(123, 456, 789), (234, 567, 891), (111, 222, 333)]).with(Rotate::Right),
+ "+-----+-----+-----+-----+"
+ "| 111 | 234 | 123 | i32 |"
+ "+-----+-----+-----+-----+"
+ "| 222 | 567 | 456 | i32 |"
+ "+-----+-----+-----+-----+"
+ "| 333 | 891 | 789 | i32 |"
+ "+-----+-----+-----+-----+"
+);
+
+test_table!(
+ test_bottom_rotate,
+ Matrix::iter([(123, 456, 789), (234, 567, 891), (111, 222, 333)]).with(Rotate::Bottom),
+ "+-----+-----+-----+"
+ "| 111 | 222 | 333 |"
+ "+-----+-----+-----+"
+ "| 234 | 567 | 891 |"
+ "+-----+-----+-----+"
+ "| 123 | 456 | 789 |"
+ "+-----+-----+-----+"
+ "| i32 | i32 | i32 |"
+ "+-----+-----+-----+"
+);
+
+test_table!(
+ test_top_rotate,
+ Matrix::iter([(123, 456, 789), (234, 567, 891), (111, 222, 333)]).with(Rotate::Top),
+ "+-----+-----+-----+"
+ "| 111 | 222 | 333 |"
+ "+-----+-----+-----+"
+ "| 234 | 567 | 891 |"
+ "+-----+-----+-----+"
+ "| 123 | 456 | 789 |"
+ "+-----+-----+-----+"
+ "| i32 | i32 | i32 |"
+ "+-----+-----+-----+"
+);
+
+test_table!(
+ rotate_preserve_border_styles_test_0,
+ Matrix::iter([(123, 456, 789), (234, 567, 891), (111, 222, 333)])
+ .with(Highlight::new(Rows::single(0), Border::default().top('*')))
+ .with(Rotate::Left),
+ "+*****************+-----+"
+ "| i32 | 789 | 891 | 333 |"
+ "+-----+-----+-----+-----+"
+ "| i32 | 456 | 567 | 222 |"
+ "+-----+-----+-----+-----+"
+ "| i32 | 123 | 234 | 111 |"
+ "+-----+-----+-----+-----+"
+);
+
+// it's a correct behaviour because
+// when we sen bottom border of cell(0, 2) we also set top border of cell(1, 2)
+//
+// todo: determine if it's correct
+test_table!(
+ rotate_preserve_border_styles_test_1,
+ Matrix::iter([(123, 456, 789), (234, 567, 891), (111, 222, 333)])
+ .with(Highlight::new(Cell::new(0, 2), Border::default().bottom('*')))
+ .with(Rotate::Left),
+ "+-----+-----+-----+-----+"
+ "| i32 | 789 | 891 | 333 |"
+ "+-----+-----+*****+-----+"
+ "| i32 | 456 | 567 | 222 |"
+ "+-----+-----+-----+-----+"
+ "| i32 | 123 | 234 | 111 |"
+ "+-----+-----+-----+-----+"
+);
+
+test_table!(
+ test_left_rotate_1,
+ Matrix::iter([(0, 1, 2, 3, 4, 5), (0, 1, 2, 3, 4, 5)]).with(Rotate::Left),
+ "+-----+---+---+"
+ "| i32 | 5 | 5 |"
+ "+-----+---+---+"
+ "| i32 | 4 | 4 |"
+ "+-----+---+---+"
+ "| i32 | 3 | 3 |"
+ "+-----+---+---+"
+ "| i32 | 2 | 2 |"
+ "+-----+---+---+"
+ "| i32 | 1 | 1 |"
+ "+-----+---+---+"
+ "| i32 | 0 | 0 |"
+ "+-----+---+---+"
+);
+
+test_table!(
+ test_right_rotate_1,
+ Matrix::iter([(0, 1, 2, 3, 4, 5), (0, 1, 2, 3, 4, 5)]).with(Rotate::Right),
+ "+---+---+-----+"
+ "| 0 | 0 | i32 |"
+ "+---+---+-----+"
+ "| 1 | 1 | i32 |"
+ "+---+---+-----+"
+ "| 2 | 2 | i32 |"
+ "+---+---+-----+"
+ "| 3 | 3 | i32 |"
+ "+---+---+-----+"
+ "| 4 | 4 | i32 |"
+ "+---+---+-----+"
+ "| 5 | 5 | i32 |"
+ "+---+---+-----+"
+);
+
+test_table!(
+ test_bottom_rotate_1,
+ Matrix::iter([(0, 1, 2, 3, 4, 5), (0, 1, 2, 3, 4, 5)]).with(Rotate::Bottom),
+ "+-----+-----+-----+-----+-----+-----+"
+ "| 0 | 1 | 2 | 3 | 4 | 5 |"
+ "+-----+-----+-----+-----+-----+-----+"
+ "| 0 | 1 | 2 | 3 | 4 | 5 |"
+ "+-----+-----+-----+-----+-----+-----+"
+ "| i32 | i32 | i32 | i32 | i32 | i32 |"
+ "+-----+-----+-----+-----+-----+-----+"
+);
diff --git a/vendor/tabled/tests/settings/shadow_test.rs b/vendor/tabled/tests/settings/shadow_test.rs
new file mode 100644
index 000000000..2d169698c
--- /dev/null
+++ b/vendor/tabled/tests/settings/shadow_test.rs
@@ -0,0 +1,105 @@
+#![cfg(feature = "std")]
+
+use tabled::settings::{Shadow, Style};
+
+use crate::matrix::Matrix;
+use testing_table::test_table;
+
+#[cfg(feature = "color")]
+use ::{owo_colors::OwoColorize, std::convert::TryFrom, tabled::settings::Color};
+
+test_table!(
+ test_shadow_bottom_right_0,
+ Matrix::iter([(123, 456, 789), (234, 567, 891)]).with(Style::psql()).with(Shadow::new(1)),
+ " i32 | i32 | i32 "
+ "-----+-----+-----â–’"
+ " 123 | 456 | 789 â–’"
+ " 234 | 567 | 891 â–’"
+ " â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’"
+);
+
+test_table!(
+ test_shadow_bottom_left_0,
+ Matrix::iter([(123, 456, 789), (234, 567, 891)]).with(Style::psql()).with(Shadow::new(1).set_left()),
+ " i32 | i32 | i32 "
+ "â–’-----+-----+-----"
+ "â–’ 123 | 456 | 789 "
+ "â–’ 234 | 567 | 891 "
+ "â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’ "
+);
+
+test_table!(
+ test_shadow_top_right_0,
+ Matrix::iter([(123, 456, 789), (234, 567, 891)]).with(Style::psql()).with(Shadow::new(1).set_top()),
+ " â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’"
+ " i32 | i32 | i32 â–’"
+ "-----+-----+-----â–’"
+ " 123 | 456 | 789 â–’"
+ " 234 | 567 | 891 "
+);
+
+test_table!(
+ test_shadow_top_left_0,
+ Matrix::iter([(123, 456, 789), (234, 567, 891)]).with(Style::psql()).with(Shadow::new(1).set_top().set_left()),
+ "â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’ "
+ "â–’ i32 | i32 | i32 "
+ "â–’-----+-----+-----"
+ "â–’ 123 | 456 | 789 "
+ " 234 | 567 | 891 "
+);
+
+test_table!(
+ test_shadow_set_fill,
+ Matrix::iter([(123, 456, 789), (234, 567, 891)]).with(Shadow::new(1).set_fill('â–“')),
+ "+-----+-----+-----+ "
+ "| i32 | i32 | i32 |â–“"
+ "+-----+-----+-----+â–“"
+ "| 123 | 456 | 789 |â–“"
+ "+-----+-----+-----+â–“"
+ "| 234 | 567 | 891 |â–“"
+ "+-----+-----+-----+â–“"
+ " â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“"
+);
+
+test_table!(
+ test_shadow_size_1,
+ Matrix::iter([(123, 456, 789), (234, 567, 891)]).with(Shadow::new(2).set_fill('â–“')),
+ "+-----+-----+-----+ "
+ "| i32 | i32 | i32 |â–“â–“"
+ "+-----+-----+-----+â–“â–“"
+ "| 123 | 456 | 789 |â–“â–“"
+ "+-----+-----+-----+â–“â–“"
+ "| 234 | 567 | 891 |â–“â–“"
+ "+-----+-----+-----+â–“â–“"
+ " â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“"
+ " â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“â–“"
+);
+
+test_table!(
+ test_shadow_set_offset_0,
+ Matrix::iter([(123, 456, 789), (234, 567, 891)]).with(Shadow::new(2).set_offset(3)),
+ "+-----+-----+-----+ "
+ "| i32 | i32 | i32 | "
+ "+-----+-----+-----+ "
+ "| 123 | 456 | 789 |â–’â–’"
+ "+-----+-----+-----+â–’â–’"
+ "| 234 | 567 | 891 |â–’â–’"
+ "+-----+-----+-----+â–’â–’"
+ " â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’"
+ " â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’"
+);
+
+#[cfg(feature = "color")]
+test_table!(
+ test_shadow_set_color_0,
+ Matrix::iter([(123, 456, 789), (234, 567, 891)]).with(Shadow::new(2).set_offset(3).set_color(Color::try_from(' '.red().to_string()).unwrap())),
+ "+-----+-----+-----+ "
+ "| i32 | i32 | i32 | "
+ "+-----+-----+-----+ "
+ "| 123 | 456 | 789 |\u{1b}[31mâ–’â–’\u{1b}[39m"
+ "+-----+-----+-----+\u{1b}[31mâ–’â–’\u{1b}[39m"
+ "| 234 | 567 | 891 |\u{1b}[31mâ–’â–’\u{1b}[39m"
+ "+-----+-----+-----+\u{1b}[31mâ–’â–’\u{1b}[39m"
+ " \u{1b}[31mâ–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’\u{1b}[39m"
+ " \u{1b}[31mâ–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’\u{1b}[39m"
+);
diff --git a/vendor/tabled/tests/settings/span_test.rs b/vendor/tabled/tests/settings/span_test.rs
new file mode 100644
index 000000000..ed61d8619
--- /dev/null
+++ b/vendor/tabled/tests/settings/span_test.rs
@@ -0,0 +1,1234 @@
+#![cfg(feature = "std")]
+#![allow(clippy::redundant_clone)]
+
+use std::iter::FromIterator;
+
+use tabled::{
+ builder::Builder,
+ grid::config::Position,
+ settings::{
+ object::{Columns, Segment},
+ style::{Border, BorderSpanCorrection, Style},
+ Alignment, Highlight, Modify, Padding, Panel, Span,
+ },
+ Table,
+};
+
+use crate::matrix::Matrix;
+use testing_table::{static_table, test_table};
+
+test_table!(
+ span_column_test_0,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Columns::single(0)).with(Span::column(2))),
+ " N | column 1 | column 2 "
+ "-+-+----------+----------"
+ " 0 | 0-1 | 0-2 "
+ " 1 | 1-1 | 1-2 "
+ " 2 | 2-1 | 2-2 "
+);
+
+test_table!(
+ span_column_test_1,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Columns::new(1..2)).with(Span::column(2))),
+ " N | column 0 | column 2 "
+ "---+-----+----+----------"
+ " 0 | 0-0 | 0-2 "
+ " 1 | 1-0 | 1-2 "
+ " 2 | 2-0 | 2-2 "
+);
+
+test_table!(
+ span_column_test_2,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Columns::single(0)).with(Span::column(4))),
+ " N "
+ "+++"
+ " 0 "
+ " 1 "
+ " 2 "
+);
+
+test_table!(
+ cell_span_test_0,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new((0, 0)).with(Span::column(2))),
+ " N | column 1 | column 2 "
+ "---+-----+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ cell_span_test_1,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new((1, 0)).with(Span::column(2))),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ cell_span_test_2,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new((2, 0)).with(Span::column(2))),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ cell_span_test_3,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new((3, 0)).with(Span::column(2))),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-1 | 2-2 "
+);
+
+test_table!(
+ cell_span_test_4,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new((0, 1)).with(Span::column(2))),
+ " N | column 0 | column 2 "
+ "---+-----+-----+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ cell_span_test_5,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new((1, 1)).with(Span::column(2))),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ cell_span_test_6,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new((2, 1)).with(Span::column(2))),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ cell_span_test_7,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new((3, 1)).with(Span::column(2))),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-2 "
+);
+
+test_table!(
+ cell_span_test_8,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new((0, 2)).with(Span::column(2))),
+ " N | column 0 | column 1 "
+ "---+----------+-----+-----"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ cell_span_test_9,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new((1, 2)).with(Span::column(2))),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ cell_span_test_10,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new((2, 2)).with(Span::column(2))),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ cell_span_test_11,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new((3, 2)).with(Span::column(2))),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 "
+);
+
+test_table!(
+ span_multiline,
+ Matrix::new(3, 3)
+ .insert((3, 2), "https://\nwww\n.\nredhat\n.com\n/en")
+ .with(Style::psql())
+ .with(Modify::new((3, 2)).with(Span::column(2))),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | https:// "
+ " | | www "
+ " | | . "
+ " | | redhat "
+ " | | .com "
+ " | | /en "
+);
+
+test_table!(
+ indent_works_in_spaned_columns,
+ Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Padding::new(3, 0, 0, 0)))
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new((1, 1)).with(Span::column(3)))
+ .with(Modify::new((3, 1)).with(Span::column(3))),
+ " N| column 0| column 1| column 2"
+ "----+-----------+-----------+-----------"
+ " 0| 0-0 "
+ " 1| 1-0 | 1-1 | 1-2 "
+ " 2| 2-0 "
+);
+
+test_table!(
+ spaned_columns_with_collision,
+ Matrix::iter([["just 1 column"; 5]; 5])
+ .with(Style::modern())
+ .with(
+ Modify::new((0, 0))
+ .with(Span::column(5))
+ .with("span all 5 columns"),
+ )
+ .with(
+ Modify::new((1, 0))
+ .with(Span::column(4))
+ .with("span 4 columns"),
+ )
+ .with(
+ Modify::new((2, 0))
+ .with(Span::column(3))
+ .with("span 3 columns"),
+ )
+ .with(
+ Modify::new((2, 3))
+ .with(Span::column(2))
+ .with("span 2 columns"),
+ )
+ .with(
+ Modify::new((3, 0))
+ .with(Span::column(2))
+ .with("span 3 columns"),
+ )
+ .with(
+ Modify::new((3, 2))
+ .with(Span::column(3))
+ .with("span 3 columns"),
+ )
+ .with(
+ Modify::new((4, 1))
+ .with(Span::column(4))
+ .with("span 4 columns"),
+ ),
+ "┌───────────────┬───────────────┬───────────────┬───────────────┬───────────────â”"
+ "│ span all 5 columns │"
+ "├───────────────┼───────────────┼───────────────┼───────────────┼───────────────┤"
+ "│ span 4 columns │ just 1 column │"
+ "├───────────────┼───────────────┼───────────────┼───────────────┼───────────────┤"
+ "│ span 3 columns │ span 2 columns │"
+ "├───────────────┼───────────────┼───────────────┼───────────────┼───────────────┤"
+ "│ span 3 columns │ span 3 columns │"
+ "├───────────────┼───────────────┼───────────────┼───────────────┼───────────────┤"
+ "│ just 1 column │ span 4 columns │"
+ "├───────────────┼───────────────┼───────────────┼───────────────┼───────────────┤"
+ "│ just 1 column │ just 1 column │ just 1 column │ just 1 column │ just 1 column │"
+ "└───────────────┴───────────────┴───────────────┴───────────────┴───────────────┘"
+);
+
+test_table!(
+ span_with_panel_test_0,
+ Matrix::iter([[1, 2, 3]])
+ .with(Panel::horizontal(0,"Tabled Releases"))
+ .with(Modify::new((1, 0)).with(Span::column(2)))
+ .with(Style::ascii()),
+ "+-----+-----+-----+"
+ "| Tabled Releases |"
+ "+-----+-----+-----+"
+ "| 0 | 2 |"
+ "+-----+-----+-----+"
+ "| 1 | 2 | 3 |"
+ "+-----+-----+-----+"
+);
+
+test_table!(
+ span_with_panel_test_1,
+ Matrix::iter([[1, 2, 3], [4, 5, 6]])
+ .with(Panel::horizontal(0,"Tabled Releases"))
+ .with(Modify::new((2, 0)).with(Span::column(2)))
+ .with(Style::ascii()),
+ "+-----+-----+-----+"
+ "| Tabled Releases |"
+ "+-----+-----+-----+"
+ "| 0 | 1 | 2 |"
+ "+-----+-----+-----+"
+ "| 1 | 3 |"
+ "+-----+-----+-----+"
+ "| 4 | 5 | 6 |"
+ "+-----+-----+-----+"
+);
+
+test_table!(
+ span_with_panel_test_2,
+ Matrix::iter([[1, 2, 3], [4, 5, 6]])
+ .with(Panel::horizontal(0,"Tabled Releases"))
+ .with(Modify::new((1, 0)).with(Span::column(2)))
+ .with(Modify::new((2, 0)).with(Span::column(2)))
+ .with(Style::ascii()),
+ "+-----+-----+-----+"
+ "| Tabled Releases |"
+ "+-----+-----+-----+"
+ "| 0 | 2 |"
+ "+-----+-----+-----+"
+ "| 1 | 3 |"
+ "+-----+-----+-----+"
+ "| 4 | 5 | 6 |"
+ "+-----+-----+-----+"
+);
+
+test_table!(
+ span_with_panel_with_correction_test_0,
+ Matrix::iter([[1, 2, 3]])
+ .with(Panel::horizontal(0,"Tabled Releases"))
+ .with(Modify::new((1, 0)).with(Span::column(2)))
+ .with(Style::ascii())
+ .with(BorderSpanCorrection),
+ "+-----------------+"
+ "| Tabled Releases |"
+ "+-----------+-----+"
+ "| 0 | 2 |"
+ "+-----+-----+-----+"
+ "| 1 | 2 | 3 |"
+ "+-----+-----+-----+"
+);
+
+test_table!(
+ span_with_panel_with_correction_test_1,
+ Matrix::iter([[1, 2, 3], [4, 5, 6]])
+ .with(Panel::horizontal(0,"Tabled Releases"))
+ .with(Modify::new((2, 0)).with(Span::column(2)))
+ .with(Style::ascii())
+ .with(BorderSpanCorrection),
+ "+-----------------+"
+ "| Tabled Releases |"
+ "+-----+-----+-----+"
+ "| 0 | 1 | 2 |"
+ "+-----+-----+-----+"
+ "| 1 | 3 |"
+ "+-----+-----+-----+"
+ "| 4 | 5 | 6 |"
+ "+-----+-----+-----+"
+);
+
+test_table!(
+ span_with_panel_with_correction_test_2,
+ Matrix::iter([[1, 2, 3], [4, 5, 6]])
+ .with(Panel::horizontal(0,"Tabled Releases"))
+ .with(Modify::new((1, 0)).with(Span::column(2)))
+ .with(Modify::new((2, 0)).with(Span::column(2)))
+ .with(Style::ascii())
+ .with(BorderSpanCorrection),
+ "+-----------------+"
+ "| Tabled Releases |"
+ "+-----------+-----+"
+ "| 0 | 2 |"
+ "+-----------+-----+"
+ "| 1 | 3 |"
+ "+-----+-----+-----+"
+ "| 4 | 5 | 6 |"
+ "+-----+-----+-----+"
+);
+
+#[test]
+#[should_panic]
+#[ignore = "span zero not yet decided"]
+fn span_column_exceeds_boundaries_test() {
+ // todo: determine if it's the right behaiviour
+
+ Matrix::new(3, 3)
+ .with(Modify::new(Columns::single(0)).with(Span::column(100)))
+ .to_string();
+}
+
+#[test]
+#[ignore = "span zero not yet decided"]
+fn span_cell_exceeds_boundaries_test() {
+ // these tests shows that exiding boundaries causes invalid behaiviour
+ //
+ // todo: determine if it's the right behaiviour
+
+ let table = Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new((0, 0)).with(Span::column(20)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ " N "
+ "---+-----+-----+-----"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ )
+ );
+
+ let table = Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new((1, 1)).with(Span::column(20)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ )
+ );
+
+ let table = Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new((1, 0)).with(Span::column(20)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ )
+ );
+}
+
+#[test]
+#[ignore = "span zero not yet decided"]
+fn span_zero_test() {
+ let table = Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new((0, 0)).with(Span::column(0)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ " column 0 | column 1 | column 2 "
+ "----+-----+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ )
+ );
+
+ let table = Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new((0, 1)).with(Span::column(0)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ " N | column 1 | column 2 "
+ "---+-----+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ )
+ );
+
+ let table = Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new((0, 2)).with(Span::column(0)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ " N | column 0 | column 2 "
+ "---+-----+-----+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ )
+ );
+
+ let table = Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new((0, 3)).with(Span::column(0)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ " N | column 0 | column 1 "
+ "---+----------+-----+-----"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ )
+ );
+
+ let table = Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new((0, 4)).with(Span::column(0)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ )
+ );
+
+ let table = Matrix::new(3, 3)
+ .with(Style::psql())
+ .with(Modify::new((0, 0)).with(Span::column(0)))
+ .with(Modify::new((1, 1)).with(Span::column(0)))
+ .with(Modify::new((2, 2)).with(Span::column(0)))
+ .with(Modify::new((3, 2)).with(Span::column(0)))
+ .with(Modify::new((3, 1)).with(Span::column(0)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ " column 0 | column 1 | column 2 "
+ "------+-------+------+----------"
+ " 0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-2 "
+ " 2 | 2-2 "
+ )
+ );
+}
+
+#[test]
+#[ignore = "span zero not yet decided"]
+fn span_all_table_to_zero_test() {
+ let table = Matrix::table(2, 2)
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Span::column(0)))
+ .to_string();
+
+ // todo: determine whether it's correct
+ assert_eq!(table, static_table!("\n++\n\n\n"));
+}
+
+mod row {
+ use tabled::settings::object::Rows;
+
+ use super::*;
+
+ #[test]
+ fn span_row_test() {
+ let table = Matrix::new(3, 3);
+ {
+ let table_str = table
+ .clone()
+ .with(Style::ascii())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Rows::single(0)).with(Span::row(2)))
+ .to_string();
+
+ assert_eq!(
+ table_str,
+ static_table!(
+ "+---+----------+----------+----------+"
+ "+ N + column 0 + column 1 + column 2 +"
+ "+---+----------+----------+----------+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+---+----------+----------+----------+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+----------+----------+----------+"
+ )
+ );
+
+ let table = table
+ .clone()
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Rows::single(0)).with(Span::row(2)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ " N + column 0 + column 1 + column 2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ )
+ );
+ }
+ {
+ let table = table
+ .clone()
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Rows::new(1..2)).with(Span::row(2)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ )
+ );
+ }
+ {
+ let table = table
+ .clone()
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Rows::single(0)).with(Span::row(4)))
+ .to_string();
+
+ assert_eq!(table, " N + column 0 + column 1 + column 2 ");
+ }
+ }
+
+ #[test]
+ fn cell_span_test() {
+ let table = Matrix::new(3, 3);
+ {
+ // first column cells row span = 2
+
+ {
+ let table = table
+ .clone()
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new((0, 0)).with(Span::row(2)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ " N | column 0 | column 1 | column 2 "
+ " +----------+----------+----------"
+ " | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ )
+ );
+ }
+ {
+ let table = table
+ .clone()
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new((1, 0)).with(Span::row(2)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ )
+ );
+ }
+ {
+ let table = table
+ .clone()
+ .with(Style::psql())
+ .with(Modify::new((2, 0)).with(Span::row(2)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " | 2-0 | 2-1 | 2-2 "
+ )
+ );
+ }
+ }
+
+ {
+ // first row cells row span = 2
+
+ {
+ let table = table
+ .clone()
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new((0, 1)).with(Span::row(2)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ " N | column 0 | column 1 | column 2 "
+ "---+ +----------+----------"
+ " 0 | | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ )
+ );
+ }
+ {
+ let table = table
+ .clone()
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new((0, 2)).with(Span::row(2)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+ +----------"
+ " 0 | 0-0 | | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ )
+ );
+ }
+ {
+ let table = table
+ .clone()
+ .with(Style::psql())
+ .with(Modify::new((0, 3)).with(Span::row(2)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+ "
+ " 0 | 0-0 | 0-1 | "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ )
+ );
+ }
+ }
+
+ {
+ // second column span=2
+ {
+ let table = table
+ .clone()
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new((1, 1)).with(Span::row(2)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ )
+ );
+ }
+ {
+ let table = table
+ .clone()
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new((2, 1)).with(Span::row(2)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | | 2-1 | 2-2 "
+ )
+ );
+ }
+ }
+ {
+ // 3rd column span=2
+ {
+ let table = table
+ .clone()
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new((1, 2)).with(Span::row(2)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ )
+ );
+ }
+ {
+ let table = table
+ .clone()
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new((2, 2)).with(Span::row(2)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | | 2-2 "
+ )
+ );
+ }
+ }
+ {
+ // 4th column span=2
+ {
+ let table = table
+ .clone()
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new((1, 3)).with(Span::row(2)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ )
+ );
+ }
+ {
+ let table = table
+ .clone()
+ .with(Style::psql())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new((2, 3)).with(Span::row(2)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | "
+ )
+ );
+ }
+ }
+ }
+
+ #[test]
+ fn span_with_panel_with_correction_test() {
+ let data = [[1, 2, 3]];
+ let table = Table::new(data)
+ .with(Modify::new((0, 0)).with(Span::row(2)))
+ .with(Style::ascii())
+ .with(BorderSpanCorrection)
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "+---+---+---+"
+ "| 0 | 1 | 2 |"
+ "| +---+---+"
+ "| | 2 | 3 |"
+ "+---+---+---+"
+ )
+ );
+
+ let data = [[1, 2, 3], [4, 5, 6]];
+ let table = Table::new(data)
+ .with(Modify::new((1, 0)).with(Span::row(2)))
+ .with(Modify::new((0, 2)).with(Span::row(3)))
+ .with(Style::ascii())
+ .with(BorderSpanCorrection)
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "+---+---+---+"
+ "| 0 | 1 | 2 |"
+ "+---+---+ |"
+ "| 1 | 2 | |"
+ "| +---+ |"
+ "| | 5 | |"
+ "+---+---+---+"
+ )
+ );
+
+ let data = [[1, 2, 3], [4, 5, 6]];
+ let table = Table::new(data)
+ .with(Modify::new((1, 0)).with(Span::row(2)))
+ .with(Modify::new((0, 2)).with(Span::row(3)))
+ .with(Modify::new((0, 1)).with(Span::row(2)))
+ .with(Style::ascii())
+ .with(BorderSpanCorrection)
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "+---+---+---+"
+ "| 0 | 1 | 2 |"
+ "+---+ | |"
+ "| 1 +---+ |"
+ "| | 5 | |"
+ "+---+---+---+"
+ )
+ );
+
+ let data = [[1, 2, 3], [4, 5, 6]];
+ let table = Table::new(data)
+ .with(Modify::new((1, 0)).with(Span::row(2)))
+ .with(Modify::new((0, 1)).with(Span::row(2)).with(Span::column(2)))
+ .with(Style::ascii())
+ .with(BorderSpanCorrection)
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "+---+-------+"
+ "| 0 | 1 |"
+ "+---+ +"
+ "| 1 +---+---+"
+ "| | 5 | 6 |"
+ "+---+---+---+"
+ )
+ );
+ }
+
+ #[test]
+ fn span_example_test() {
+ let data = [["just 1 column"; 5]; 5];
+
+ let h_span = |r, c, span| Modify::new((r, c)).with(Span::column(span));
+ let v_span = |r, c, span| Modify::new((r, c)).with(Span::row(span));
+
+ let table = Table::new(data)
+ .with(h_span(0, 0, 5).with(String::from("span all 5 columns")))
+ .with(h_span(1, 0, 4).with(String::from("span 4 columns")))
+ .with(h_span(2, 0, 2).with(String::from("span 2 columns")))
+ .with(v_span(2, 4, 4).with(String::from("just 1 column\nspan\n4\ncolumns")))
+ .with(v_span(3, 1, 2).with(String::from("span 2 columns\nspan\n2\ncolumns")))
+ .with(v_span(2, 3, 3).with(String::from("just 1 column\nspan\n3\ncolumns")))
+ .with(h_span(3, 1, 2))
+ .with(Style::modern())
+ .with(BorderSpanCorrection)
+ .with(Modify::new(Segment::all()).with(Alignment::center_vertical()))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "┌───────────────────────────────────────────────────────────────────────────────â”"
+ "│ span all 5 columns │"
+ "├───────────────────────────────────────────────────────────────┬───────────────┤"
+ "│ span 4 columns │ just 1 column │"
+ "├───────────────────────────────┬───────────────┬───────────────┼───────────────┤"
+ "│ span 2 columns │ just 1 column │ │ │"
+ "├───────────────┬───────────────┴───────────────┤ just 1 column │ │"
+ "│ just 1 column │ span 2 columns │ span │ just 1 column │"
+ "│ │ span │ 3 │ span │"
+ "├───────────────┤ 2 │ columns │ 4 │"
+ "│ just 1 column │ columns │ │ columns │"
+ "├───────────────┼───────────────┬───────────────┼───────────────┤ │"
+ "│ just 1 column │ just 1 column │ just 1 column │ just 1 column │ │"
+ "└───────────────┴───────────────┴───────────────┴───────────────┴───────────────┘"
+ )
+ )
+ }
+
+ #[test]
+ fn highlight_row_span_test() {
+ let data = [
+ ["1", "2\n2\n2\n2\n2\n2\n2\n2", "3"],
+ ["4", "5", "6"],
+ ["7", "8", "9"],
+ ];
+ let table = Table::new(data)
+ .with(Modify::new((1, 1)).with(Span::row(3)))
+ .with(Style::modern())
+ .with(Highlight::new(Columns::single(1), Border::filled('*')))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "┌───*****───â”"
+ "│ 0 * 1 * 2 │"
+ "├───*───*───┤"
+ "│ 1 * 2 * 3 │"
+ "│ * 2 * │"
+ "├───* 2 *───┤"
+ "│ 4 * 2 * 6 │"
+ "│ * 2 * │"
+ "├───* 2 *───┤"
+ "│ 7 * 2 * 9 │"
+ "│ * 2 * │"
+ "└───*****───┘"
+ )
+ );
+ }
+}
+
+#[test]
+fn highlight_row_col_span_test() {
+ let data = [
+ ["1", "2\n2\n2\n2\n2\n2\n2\n2", "3", "0"],
+ ["4", "5", "6", "0"],
+ ["7", "8", "9", "0"],
+ ];
+ let table = Table::new(data)
+ .with(Modify::new((1, 1)).with(Span::row(3)).with(Span::column(2)))
+ .with(Style::modern())
+ .with(Highlight::new(Columns::new(1..3), Border::filled('*')))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "┌───*********───â”"
+ "│ 0 * 1 │ 2 * 3 │"
+ "├───*───┼───*───┤"
+ "│ 1 * 2 * 0 │"
+ "│ * 2 * │"
+ "├───* 2 *───┤"
+ "│ 4 * 2 * 0 │"
+ "│ * 2 * │"
+ "├───* 2 *───┤"
+ "│ 7 * 2 * 0 │"
+ "│ * 2 * │"
+ "└───*********───┘"
+ )
+ );
+}
+
+test_table!(
+ column_span_bigger_then_max,
+ Matrix::new(3, 3).with(Modify::new((0, 0)).with(Span::column(100))),
+ "+---+-----+-----+-----+"
+ "| N |"
+ "+---+-----+-----+-----+"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "+---+-----+-----+-----+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+---+-----+-----+-----+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+-----+-----+-----+"
+);
+
+test_table!(
+ row_span_bigger_then_max,
+ Matrix::new(3, 3).with(Modify::new((0, 0)).with(Span::row(100))),
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+ +----------+----------+----------+"
+ "| | 0-0 | 0-1 | 0-2 |"
+ "+ +----------+----------+----------+"
+ "| | 1-0 | 1-1 | 1-2 |"
+ "+ +----------+----------+----------+"
+ "| | 2-0 | 2-1 | 2-2 |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ column_span_invalid_position_row,
+ Matrix::new(3, 3).with(Modify::new((1000, 0)).with(Span::column(2))),
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "+---+----------+----------+----------+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+---+----------+----------+----------+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ column_span_invalid_position_column,
+ Matrix::new(3, 3).with(Modify::new((0, 1000)).with(Span::column(2))),
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "+---+----------+----------+----------+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+---+----------+----------+----------+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ column_span_invalid_position_row_and_column,
+ Matrix::new(3, 3).with(Modify::new((1000, 1000)).with(Span::column(2))),
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "+---+----------+----------+----------+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+---+----------+----------+----------+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ row_span_invalid_position_row,
+ Matrix::new(3, 3).with(Modify::new((1000, 0)).with(Span::row(2))),
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "+---+----------+----------+----------+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+---+----------+----------+----------+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ row_span_invalid_position_column,
+ Matrix::new(3, 3).with(Modify::new((0, 1000)).with(Span::row(2))),
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "+---+----------+----------+----------+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+---+----------+----------+----------+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ row_span_invalid_position_row_and_column,
+ Matrix::new(3, 3).with(Modify::new((1000, 1000)).with(Span::row(2))),
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "+---+----------+----------+----------+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+---+----------+----------+----------+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ fix_qc_0,
+ {
+ let data: [[i64; 39]; 2] = [[2542785870, 2382388818, 2879895075, 2885436543, 2331131758, 219892320, 2503640226, 3754929678, 2206481860, 686909682, 3456499235, 931699300, 1556722454, 958179233, 3896072307, 2042612749, 3354379549, 3272539286, 3926297167, 4294967295, 1650407458, 3322068437, 4294967295, 446762625, 829020202, 4150192304, 3430619243, 3460609391, 2992017103, 513091574, 1514148367, 2166549688, 1401371431, 2854075038, 1286733939, 2959901405, 4152658371, 0, 4224074215], [360331598, 3736108702, 2948800064, 2121584548, 1609988995, 469935087, 3974876615, 2193609088, 3568111892, 732365859, 0, 4294967295, 2994498036, 198522721, 1784359340, 1, 2732726754, 592359359, 3016729802, 878533877, 2997437699, 3573361662, 1111570515, 4294967295, 2245782848, 1383106893, 0, 0, 2869976103, 1611436878, 1682224972, 3249055253, 1562255501, 1370527728, 240481955, 334260406, 2247343342, 3000635978, 395723768]];
+ let row_spans = [2, 1, 27, 111, 226, 221, 121, 22, 252, 30, 115, 85, 255, 126, 26, 245, 36, 50, 255, 211, 47, 114, 174, 173, 145, 138, 78, 198, 253, 229, 151, 243, 242, 30, 52, 116, 177, 25, 1, 32, 28, 48, 225, 103, 17, 243, 0, 128, 69, 206, 221, 105, 239, 74, 184, 48, 178, 237, 120, 228, 184, 1, 132, 118, 14, 187];
+ let col_spans = [7, 91, 56, 246, 73];
+
+ let data = data.iter().map(|row| row.iter().map(ToString::to_string));
+ let rspans = create_span_list(2, 39).zip(row_spans.iter()).map(|(pos, span)| Modify::new(pos).with(Span::column(*span))).collect::<Vec<_>>();
+ let cspans = create_span_list(2, 39).zip(col_spans.iter()).map(|(pos, span)| Modify::new(pos).with(Span::row(*span))).collect::<Vec<_>>();
+
+ Builder::from_iter(data).build().with(Style::ascii()).with(rspans).with(cspans).to_string()
+ },
+ "+------+-----++++++++++++++++++++++++++++------------+------------+------------+------------+------------+-----------+-----------+------------+------------+-----------+"
+ "| 2542785870 | 2879895075 | 513091574 |"
+ "+ + +------------+------------+------------+------------+------------+-----------+-----------+------------+------------+-----------+"
+ "| | | 1611436878 | 1682224972 | 3249055253 | 1562255501 | 1370527728 | 240481955 | 334260406 | 2247343342 | 3000635978 | 395723768 |"
+ "+------+-----++++++++++++++++++++++++++++------------+------------+------------+------------+------------+-----------+-----------+------------+------------+-----------+"
+);
+
+fn create_span_list(count_rows: usize, count_cols: usize) -> impl Iterator<Item = Position> {
+ (0..count_rows).flat_map(move |r| (0..count_cols).map(move |c| (r, c)))
+}
diff --git a/vendor/tabled/tests/settings/split_test.rs b/vendor/tabled/tests/settings/split_test.rs
new file mode 100644
index 000000000..ac13d8071
--- /dev/null
+++ b/vendor/tabled/tests/settings/split_test.rs
@@ -0,0 +1,277 @@
+#![cfg(feature = "std")]
+
+use std::iter::FromIterator;
+
+use tabled::{builder::Builder, settings::split::Split, Table};
+
+use testing_table::test_table;
+
+test_table!(
+ split_column_test,
+ Table::from_iter(['a'..='z']).with(Split::column(12)),
+ "+---+---+---+---+---+---+---+---+---+---+---+---+"
+ "| a | b | c | d | e | f | g | h | i | j | k | l |"
+ "+---+---+---+---+---+---+---+---+---+---+---+---+"
+ "| m | n | o | p | q | r | s | t | u | v | w | x |"
+ "+---+---+---+---+---+---+---+---+---+---+---+---+"
+ "| y | z | | | | | | | | | | |"
+ "+---+---+---+---+---+---+---+---+---+---+---+---+"
+);
+
+test_table!(
+ split_column_2_test,
+ Table::from_iter(['a'..='z'])
+ .with(Split::column(12))
+ .with(Split::column(4)),
+ "+---+---+---+---+"
+ "| a | b | c | d |"
+ "+---+---+---+---+"
+ "| e | f | g | h |"
+ "+---+---+---+---+"
+ "| i | j | k | l |"
+ "+---+---+---+---+"
+ "| m | n | o | p |"
+ "+---+---+---+---+"
+ "| q | r | s | t |"
+ "+---+---+---+---+"
+ "| u | v | w | x |"
+ "+---+---+---+---+"
+ "| y | z | | |"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ split_column_retain_test,
+ Table::from_iter(['a'..='z'])
+ .with(Split::column(12))
+ .with(Split::column(4).retain()),
+ "+---+---+---+---+"
+ "| a | b | c | d |"
+ "+---+---+---+---+"
+ "| e | f | g | h |"
+ "+---+---+---+---+"
+ "| i | j | k | l |"
+ "+---+---+---+---+"
+ "| m | n | o | p |"
+ "+---+---+---+---+"
+ "| q | r | s | t |"
+ "+---+---+---+---+"
+ "| u | v | w | x |"
+ "+---+---+---+---+"
+ "| y | z | | |"
+ "+---+---+---+---+"
+ "| | | | |"
+ "+---+---+---+---+"
+ "| | | | |"
+ "+---+---+---+---+"
+);
+
+test_table!(
+ split_row_test,
+ Table::from_iter(['a'..='z'])
+ .with(Split::column(12))
+ .with(Split::column(4))
+ .with(Split::row(1).concat()), // take it back to the original shape
+ "+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
+ "| a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |"
+ "+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
+);
+
+test_table!(
+ split_row_2_test,
+ Table::from_iter(['a'..='z'])
+ .with(Split::column(12))
+ .with(Split::column(4))
+ .with(Split::row(2).concat()),
+ "+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
+ "| a | b | c | d | i | j | k | l | q | r | s | t | y | z |"
+ "+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
+ "| e | f | g | h | m | n | o | p | u | v | w | x | | |"
+ "+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
+);
+
+test_table!(
+ split_colum_index_beyond_size_test,
+ Table::from_iter(['a'..='z'])
+ .with(Split::column(10000)),
+ "+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
+ "| a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |"
+ "+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
+);
+
+test_table!(
+ split_row_index_beyond_size_test,
+ Table::from_iter(['a'..='z'])
+ .with(Split::row(10000)),
+ "+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
+ "| a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |"
+ "+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
+);
+
+test_table!(
+ split_empty_table_test,
+ Builder::default().build().with(Split::column(10000)),
+ ""
+);
+
+test_table!(
+ split_column_zero_argument_test,
+ Table::from_iter(['a'..='z']).with(Split::column(0)),
+ "+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
+ "| a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |"
+ "+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
+);
+
+test_table!(
+ split_row_zero_argument_test,
+ Table::from_iter(['a'..='z']).with(Split::row(0)),
+ "+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
+ "| a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |"
+ "+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
+);
+
+test_table!(
+ split_blank_table_test,
+ Table::from_iter([vec![String::new(); 26]]).with(Split::column(12)),
+ "+--+--+--+--+--+--+--+--+--+--+--+--+"
+ "| | | | | | | | | | | | |" // first section is protected
+ "+--+--+--+--+--+--+--+--+--+--+--+--+"
+);
+
+test_table!(
+ split_blank_table_2_test,
+ Table::from_iter([vec![String::new(); 26]]).with(Split::column(12).retain()),
+ "+--+--+--+--+--+--+--+--+--+--+--+--+"
+ "| | | | | | | | | | | | |"
+ "+--+--+--+--+--+--+--+--+--+--+--+--+"
+ "| | | | | | | | | | | | |"
+ "+--+--+--+--+--+--+--+--+--+--+--+--+"
+ "| | | | | | | | | | | | |"
+ "+--+--+--+--+--+--+--+--+--+--+--+--+"
+);
+
+test_table!(
+ split_zip_test,
+ Table::from_iter(['a'..='z'])
+ .with(Split::column(6))
+ .with(Split::row(2)),
+ "+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
+ "| a | m | y | b | n | z | c | o | d | p | e | q | f | r |"
+ "+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
+ "| g | s | | h | t | | i | u | j | v | k | w | l | x |"
+ "+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
+);
+
+test_table!(
+ split_concat_test,
+ Table::from_iter(['a'..='z'])
+ .with(Split::column(6))
+ .with(Split::row(2).concat()),
+ "+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
+ "| a | b | c | d | e | f | m | n | o | p | q | r | y | z |"
+ "+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
+ "| g | h | i | j | k | l | s | t | u | v | w | x | | |"
+ "+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
+);
+
+test_table!(
+ split_clean_test,
+ Table::from_iter(['a'..='z'])
+ .with(Split::column(12))
+ .with(Split::row(2)),
+ "+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
+ "| a | y | b | z | c | d | e | f | g | h | i | j | k | l |"
+ "+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
+ "| m | | n | | o | p | q | r | s | t | u | v | w | x |"
+ "+---+---+---+---+---+---+---+---+---+---+---+---+---+---+"
+);
+
+test_table!(
+ split_retain_test,
+ Table::from_iter(['a'..='z'])
+ .with(Split::column(12))
+ .with(Split::row(2).retain()),
+ "+---+---+---+---+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+"
+ "| a | y | b | z | c | | d | | e | | f | | g | | h | | i | | j | | k | | l | |"
+ "+---+---+---+---+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+"
+ "| m | | n | | o | | p | | q | | r | | s | | t | | u | | v | | w | | x | |"
+ "+---+---+---+---+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+---+--+"
+);
+
+test_table!(
+ split_mostly_blank_test,
+ Table::from_iter([vec![
+ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "", "", "", "A",
+ ]]).with(Split::column(5))
+ .with(Split::row(2)),
+ "+--+--+--+---+--+"
+ "| | | | | |"
+ "+--+--+--+---+--+"
+ "| | | | A | |"
+ "+--+--+--+---+--+"
+);
+
+test_table!(
+ split_mostly_blank_retain_test,
+ Table::from_iter([vec![
+ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "", "", "", "A",
+ ]]).with(Split::column(5).retain()),
+ "+--+--+--+---+--+"
+ "| | | | | |"
+ "+--+--+--+---+--+"
+ "| | | | | |"
+ "+--+--+--+---+--+"
+ "| | | | | |"
+ "+--+--+--+---+--+"
+ "| | | | | |"
+ "+--+--+--+---+--+"
+ "| | | | | |"
+ "+--+--+--+---+--+"
+ "| | | | | |"
+ "+--+--+--+---+--+"
+ "| | | | A | |"
+ "+--+--+--+---+--+"
+);
+
+test_table!(
+ split_scattered_values_test,
+ Table::from_iter([vec![
+ "", "", "", "", "", "g", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "", "", "", "A",
+ ]]).with(Split::column(5)),
+ "+---+--+--+---+--+"
+ "| | | | | |"
+ "+---+--+--+---+--+"
+ "| g | | | | |"
+ "+---+--+--+---+--+"
+ "| | | | A | |"
+ "+---+--+--+---+--+"
+);
+
+test_table!(
+ split_scattered_values_column_and_row_test,
+ Table::from_iter([vec![
+ "", "", "", "", "", "g", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "", "", "", "A",
+ ]]).with(Split::column(5)).with(Split::row(2)),
+ "+---+--+--+--+---+--+"
+ "| | | | | A | |"
+ "+---+--+--+--+---+--+"
+ "| g | | | | | |"
+ "+---+--+--+--+---+--+"
+);
+
+test_table!(
+ split_scattered_values_column_and_row_retain_test,
+ Table::from_iter([vec![
+ "", "", "", "", "", "g", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "", "", "", "A",
+ ]]).with(Split::column(5).retain()).with(Split::row(2).retain()),
+ "+---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+---+--+--+--+--+"
+ "| | | | | | | | | | | | | | | | A | | | | |"
+ "+---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+---+--+--+--+--+"
+ "| g | | | | | | | | | | | | | | | | | | | |"
+ "+---+--+--+--+--+--+--+--+--+--+--+--+--+--+--+---+--+--+--+--+"
+);
diff --git a/vendor/tabled/tests/settings/style_test.rs b/vendor/tabled/tests/settings/style_test.rs
new file mode 100644
index 000000000..884192471
--- /dev/null
+++ b/vendor/tabled/tests/settings/style_test.rs
@@ -0,0 +1,2606 @@
+#![cfg(feature = "std")]
+
+use std::iter::FromIterator;
+
+use tabled::{
+ builder::Builder,
+ settings::{
+ object::{Columns, Rows, Segment},
+ style::{
+ Border, BorderChar, BorderColor, BorderSpanCorrection, BorderText, HorizontalLine,
+ Line, Offset, RawStyle, Style, VerticalLine,
+ },
+ Color, Format, Highlight, Modify, Padding, Span,
+ },
+ Table,
+};
+
+use crate::matrix::Matrix;
+use testing_table::{static_table, test_table};
+
+#[cfg(feature = "color")]
+use ::{owo_colors::OwoColorize, std::convert::TryFrom};
+
+test_table!(
+ default_style,
+ Matrix::new(3, 3).with(Style::ascii()),
+ "+---+----------+----------+----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+----------+"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "+---+----------+----------+----------+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+---+----------+----------+----------+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+---+----------+----------+----------+"
+);
+
+test_table!(
+ psql_style,
+ Matrix::new(3, 3).with(Style::psql()),
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | 0-0 | 0-1 | 0-2 "
+ " 1 | 1-0 | 1-1 | 1-2 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+);
+
+test_table!(
+ markdown_style,
+ Matrix::new(3, 3).with(Style::markdown()),
+ "| N | column 0 | column 1 | column 2 |"
+ "|---|----------|----------|----------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+);
+
+test_table!(
+ modern_style,
+ Matrix::new(3, 3).with(Style::modern()),
+ "┌───┬──────────┬──────────┬──────────â”"
+ "│ N │ column 0 │ column 1 │ column 2 │"
+ "├───┼──────────┼──────────┼──────────┤"
+ "│ 0 │ 0-0 │ 0-1 │ 0-2 │"
+ "├───┼──────────┼──────────┼──────────┤"
+ "│ 1 │ 1-0 │ 1-1 │ 1-2 │"
+ "├───┼──────────┼──────────┼──────────┤"
+ "│ 2 │ 2-0 │ 2-1 │ 2-2 │"
+ "└───┴──────────┴──────────┴──────────┘"
+);
+
+test_table!(
+ rounded_style,
+ Matrix::new(3, 3).with(Style::rounded()),
+ "╭───┬──────────┬──────────┬──────────╮"
+ "│ N │ column 0 │ column 1 │ column 2 │"
+ "├───┼──────────┼──────────┼──────────┤"
+ "│ 0 │ 0-0 │ 0-1 │ 0-2 │"
+ "│ 1 │ 1-0 │ 1-1 │ 1-2 │"
+ "│ 2 │ 2-0 │ 2-1 │ 2-2 │"
+ "╰───┴──────────┴──────────┴──────────╯"
+);
+
+test_table!(
+ sharp_style,
+ Matrix::new(3, 3).with(Style::sharp()),
+ "┌───┬──────────┬──────────┬──────────â”"
+ "│ N │ column 0 │ column 1 │ column 2 │"
+ "├───┼──────────┼──────────┼──────────┤"
+ "│ 0 │ 0-0 │ 0-1 │ 0-2 │"
+ "│ 1 │ 1-0 │ 1-1 │ 1-2 │"
+ "│ 2 │ 2-0 │ 2-1 │ 2-2 │"
+ "└───┴──────────┴──────────┴──────────┘"
+);
+
+test_table!(
+ modern_clean_style,
+ Matrix::new(3, 3).with(Style::modern().remove_horizontal().horizontals(vec![HorizontalLine::new(1, Style::modern().get_horizontal())])),
+ "┌───┬──────────┬──────────┬──────────â”"
+ "│ N │ column 0 │ column 1 │ column 2 │"
+ "├───┼──────────┼──────────┼──────────┤"
+ "│ 0 │ 0-0 │ 0-1 │ 0-2 │"
+ "│ 1 │ 1-0 │ 1-1 │ 1-2 │"
+ "│ 2 │ 2-0 │ 2-1 │ 2-2 │"
+ "└───┴──────────┴──────────┴──────────┘"
+);
+
+test_table!(
+ blank_style,
+ Matrix::new(3, 3).with(Style::blank()),
+ " N column 0 column 1 column 2 "
+ " 0 0-0 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+);
+
+test_table!(
+ extended_style,
+ Matrix::new(3, 3).with(Style::extended()),
+ "â•”â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•â•¦â•â•â•â•â•â•â•â•â•â•â•—"
+ "â•‘ N â•‘ column 0 â•‘ column 1 â•‘ column 2 â•‘"
+ "â• â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•£"
+ "â•‘ 0 â•‘ 0-0 â•‘ 0-1 â•‘ 0-2 â•‘"
+ "â• â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•£"
+ "â•‘ 1 â•‘ 1-0 â•‘ 1-1 â•‘ 1-2 â•‘"
+ "â• â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•¬â•â•â•â•â•â•â•â•â•â•â•£"
+ "â•‘ 2 â•‘ 2-0 â•‘ 2-1 â•‘ 2-2 â•‘"
+ "â•šâ•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•©â•â•â•â•â•â•â•â•â•â•â•"
+);
+
+test_table!(
+ ascii_dots_style,
+ Matrix::new(3, 3).with(Style::dots()),
+ "......................................"
+ ": N : column 0 : column 1 : column 2 :"
+ ":...:..........:..........:..........:"
+ ": 0 : 0-0 : 0-1 : 0-2 :"
+ ":...:..........:..........:..........:"
+ ": 1 : 1-0 : 1-1 : 1-2 :"
+ ":...:..........:..........:..........:"
+ ": 2 : 2-0 : 2-1 : 2-2 :"
+ ":...:..........:..........:..........:"
+);
+
+test_table!(
+ re_structured_text_style,
+ Matrix::new(3, 3).with(Style::re_structured_text()),
+ "=== ========== ========== =========="
+ " N column 0 column 1 column 2 "
+ "=== ========== ========== =========="
+ " 0 0-0 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ "=== ========== ========== =========="
+);
+
+test_table!(
+ ascii_rounded_style,
+ Matrix::new(3, 3).with(Style::ascii_rounded()),
+ ".------------------------------------."
+ "| N | column 0 | column 1 | column 2 |"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "'------------------------------------'"
+);
+
+test_table!(
+ style_head_changes,
+ Matrix::new(3, 3).with(Style::modern().remove_horizontal()),
+ "┌───┬──────────┬──────────┬──────────â”"
+ "│ N │ column 0 │ column 1 │ column 2 │"
+ "│ 0 │ 0-0 │ 0-1 │ 0-2 │"
+ "│ 1 │ 1-0 │ 1-1 │ 1-2 │"
+ "│ 2 │ 2-0 │ 2-1 │ 2-2 │"
+ "└───┴──────────┴──────────┴──────────┘"
+);
+
+test_table!(
+ style_frame_changes,
+ Matrix::new(3, 3).with(Style::modern().remove_top().remove_bottom().remove_horizontal()),
+ "│ N │ column 0 │ column 1 │ column 2 │"
+ "│ 0 │ 0-0 │ 0-1 │ 0-2 │"
+ "│ 1 │ 1-0 │ 1-1 │ 1-2 │"
+ "│ 2 │ 2-0 │ 2-1 │ 2-2 │"
+);
+
+test_table!(
+ custom_style,
+ Matrix::new(3, 3)
+ .with(Style::blank()
+ .bottom('*')
+ .vertical('\'')
+ .horizontal('`')
+ .intersection('\'')
+ .intersection_bottom('\'')
+ .horizontals(vec![HorizontalLine::new(1, Line::full('x', '*', 'q', 'w'))])),
+ " N ' column 0 ' column 1 ' column 2 "
+ "qxxx*xxxxxxxxxx*xxxxxxxxxx*xxxxxxxxxxw"
+ " 0 ' 0-0 ' 0-1 ' 0-2 "
+ " ```'``````````'``````````'`````````` "
+ " 1 ' 1-0 ' 1-1 ' 1-2 "
+ " ```'``````````'``````````'`````````` "
+ " 2 ' 2-0 ' 2-1 ' 2-2 "
+ " ***'**********'**********'********** "
+);
+
+test_table!(
+ style_single_cell_0,
+ Matrix::table(0, 0),
+ "+---+"
+ "| N |"
+ "+---+"
+);
+
+test_table!(
+ style_single_cell_1,
+ Matrix::table(0, 0).with(Style::blank()),
+ " N "
+);
+
+test_table!(
+ top_border_override_first_test,
+ Matrix::table(2, 2).with(BorderText::new("-Table").horizontal(Rows::first())),
+ "-Table---------+----------+"
+ "| N | column 0 | column 1 |"
+ "+---+----------+----------+"
+ "| 0 | 0-0 | 0-1 |"
+ "+---+----------+----------+"
+ "| 1 | 1-0 | 1-1 |"
+ "+---+----------+----------+"
+);
+
+test_table!(
+ top_border_override_last_test,
+ Matrix::table(2, 2).with(BorderText::new("-Table").horizontal(Rows::last())),
+ "+---+----------+----------+"
+ "| N | column 0 | column 1 |"
+ "+---+----------+----------+"
+ "| 0 | 0-0 | 0-1 |"
+ "+---+----------+----------+"
+ "| 1 | 1-0 | 1-1 |"
+ "-Table---------+----------+"
+);
+
+test_table!(
+ top_border_override_new_test,
+ Matrix::table(2, 2)
+ .with(BorderText::new("-Table").horizontal(1))
+ .with(BorderText::new("-Table").horizontal(2)),
+ "+---+----------+----------+"
+ "| N | column 0 | column 1 |"
+ "-Table---------+----------+"
+ "| 0 | 0-0 | 0-1 |"
+ "-Table---------+----------+"
+ "| 1 | 1-0 | 1-1 |"
+ "+---+----------+----------+"
+);
+
+test_table!(
+ top_border_override_new_doesnt_panic_when_index_is_invalid,
+ Matrix::table(2, 2).with(BorderText::new("-Table").horizontal(100)),
+ "+---+----------+----------+"
+ "| N | column 0 | column 1 |"
+ "+---+----------+----------+"
+ "| 0 | 0-0 | 0-1 |"
+ "+---+----------+----------+"
+ "| 1 | 1-0 | 1-1 |"
+ "+---+----------+----------+"
+);
+
+test_table!(
+ top_override_doesnt_work_with_style_with_no_top_border_test,
+ Matrix::table(2, 2)
+ .with(Style::psql())
+ .with(BorderText::new("-Table").horizontal(Rows::first())),
+ " N | column 0 | column 1 "
+ "---+----------+----------"
+ " 0 | 0-0 | 0-1 "
+ " 1 | 1-0 | 1-1 "
+);
+
+test_table!(
+ top_border_override_cleared_after_restyling_test,
+ Matrix::table(2, 2)
+ .with(BorderText::new("-Table").horizontal(Rows::first()))
+ .with(Style::ascii()),
+ "+---+----------+----------+"
+ "| N | column 0 | column 1 |"
+ "+---+----------+----------+"
+ "| 0 | 0-0 | 0-1 |"
+ "+---+----------+----------+"
+ "| 1 | 1-0 | 1-1 |"
+ "+---+----------+----------+"
+);
+
+test_table!(
+ top_border_override_with_big_string_test,
+ Matrix::table(2, 2)
+ .with(BorderText::new("-Tableeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1231").horizontal(Rows::first())),
+ "-Tableeeeeeeeeeeeeeeeeeeeee"
+ "| N | column 0 | column 1 |"
+ "+---+----------+----------+"
+ "| 0 | 0-0 | 0-1 |"
+ "+---+----------+----------+"
+ "| 1 | 1-0 | 1-1 |"
+ "+---+----------+----------+"
+);
+
+test_table!(
+ border_text_0,
+ Matrix::table(2, 2)
+ .with(Style::empty())
+ .with(Modify::new(Rows::first()).with(Border::default().bottom('-')))
+ .with(BorderText::new("-Table").horizontal(1)),
+ " N column 0 column 1 "
+ "-Table-----------------"
+ " 0 0-0 0-1 "
+ " 1 1-0 1-1 "
+);
+
+test_table!(
+ border_color_global,
+ { Matrix::table(2, 2).with(BorderColor::default().bottom(Color::FG_RED)) },
+ "+---+----------+----------+\n\
+ | N | column 0 | column 1 |\n\
+ +\u{1b}[31m---\u{1b}[39m+\u{1b}[31m----------\u{1b}[39m+\u{1b}[31m----------\u{1b}[39m+\n\
+ | 0 | 0-0 | 0-1 |\n\
+ +\u{1b}[31m---\u{1b}[39m+\u{1b}[31m----------\u{1b}[39m+\u{1b}[31m----------\u{1b}[39m+\n\
+ | 1 | 1-0 | 1-1 |\n\
+ +\u{1b}[31m---\u{1b}[39m+\u{1b}[31m----------\u{1b}[39m+\u{1b}[31m----------\u{1b}[39m+"
+);
+
+#[cfg(feature = "color")]
+test_table!(
+ border_text_colored,
+ Matrix::table(2, 2)
+ .with(BorderText::new("-Table").horizontal(1))
+ .with(BorderText::new("-Table213123").horizontal(2))
+ .with(Modify::new(Rows::single(1)).with(BorderColor::default().bottom(Color::FG_RED)))
+ .with(Modify::new(Rows::single(2)).with(BorderColor::default().bottom(Color::try_from(" ".blue().on_green().to_string()).unwrap()))),
+ "+---+----------+----------+"
+ "| N | column 0 | column 1 |"
+ "-Table---------+----------+"
+ "| 0 | 0-0 | 0-1 |"
+ "-\u{1b}[31mTab\u{1b}[39ml\u{1b}[31me213123---\u{1b}[39m+\u{1b}[31m----------\u{1b}[39m+"
+ "| 1 | 1-0 | 1-1 |"
+ "+\u{1b}[34m\u{1b}[42m---\u{1b}[39m\u{1b}[49m+\u{1b}[34m\u{1b}[42m----------\u{1b}[39m\u{1b}[49m+\u{1b}[34m\u{1b}[42m----------\u{1b}[39m\u{1b}[49m+"
+);
+
+test_table!(
+ border_text_offset_test_0,
+ Matrix::table(2, 2).with(BorderText::new("-Table").horizontal(1).offset(Offset::Begin(5))),
+ "+---+----------+----------+"
+ "| N | column 0 | column 1 |"
+ "+---+-Table----+----------+"
+ "| 0 | 0-0 | 0-1 |"
+ "+---+----------+----------+"
+ "| 1 | 1-0 | 1-1 |"
+ "+---+----------+----------+"
+);
+
+test_table!(
+ border_text_offset_test_1,
+ Matrix::table(2, 2).with(BorderText::new("-Table").horizontal(1).offset(Offset::Begin(15))),
+ "+---+----------+----------+"
+ "| N | column 0 | column 1 |"
+ "+---+-----------Table-----+"
+ "| 0 | 0-0 | 0-1 |"
+ "+---+----------+----------+"
+ "| 1 | 1-0 | 1-1 |"
+ "+---+----------+----------+"
+);
+
+test_table!(
+ border_text_offset_test_2,
+ Matrix::table(2, 2).with(BorderText::new("Table").horizontal(1).offset(Offset::End(5))),
+ "+---+----------+----------+"
+ "| N | column 0 | column 1 |"
+ "+---+----------+------Table"
+ "| 0 | 0-0 | 0-1 |"
+ "+---+----------+----------+"
+ "| 1 | 1-0 | 1-1 |"
+ "+---+----------+----------+"
+);
+
+test_table!(
+ border_text_offset_test_3,
+ Matrix::table(2, 2).with(BorderText::new("Table").horizontal(1).offset(Offset::End(15))),
+ "+---+----------+----------+"
+ "| N | column 0 | column 1 |"
+ "+---+-------Table---------+"
+ "| 0 | 0-0 | 0-1 |"
+ "+---+----------+----------+"
+ "| 1 | 1-0 | 1-1 |"
+ "+---+----------+----------+"
+);
+
+test_table!(
+ border_text_offset_test_4,
+ Matrix::table(2, 2).with(BorderText::new("Table").horizontal(1).offset(Offset::End(21))),
+ "+---+----------+----------+"
+ "| N | column 0 | column 1 |"
+ "+---+-Table----+----------+"
+ "| 0 | 0-0 | 0-1 |"
+ "+---+----------+----------+"
+ "| 1 | 1-0 | 1-1 |"
+ "+---+----------+----------+"
+);
+
+test_table!(
+ border_text_offset_test_5,
+ Matrix::table(2, 2).with(BorderText::new("Table").horizontal(1).offset(Offset::End(25))),
+ "+---+----------+----------+"
+ "| N | column 0 | column 1 |"
+ "+-Table--------+----------+"
+ "| 0 | 0-0 | 0-1 |"
+ "+---+----------+----------+"
+ "| 1 | 1-0 | 1-1 |"
+ "+---+----------+----------+"
+);
+
+test_table!(
+ border_text_offset_test_6,
+ Matrix::table(2, 2).with(BorderText::new("-Table").horizontal(1).offset(Offset::Begin(21))),
+ "+---+----------+----------+"
+ "| N | column 0 | column 1 |"
+ "+---+----------+------Table"
+ "| 0 | 0-0 | 0-1 |"
+ "+---+----------+----------+"
+ "| 1 | 1-0 | 1-1 |"
+ "+---+----------+----------+"
+);
+
+test_table!(
+ border_override_color,
+ Matrix::table(2, 2).with(BorderText::new("-Table").horizontal(Rows::first()).color(Color::FG_BLUE)),
+ "\u{1b}[34m-\u{1b}[39m\u{1b}[34mT\u{1b}[39m\u{1b}[34ma\u{1b}[39m\u{1b}[34mb\u{1b}[39m\u{1b}[34ml\u{1b}[39m\u{1b}[34me\u{1b}[39m---------+----------+"
+ "| N | column 0 | column 1 |"
+ "+---+----------+----------+"
+ "| 0 | 0-0 | 0-1 |"
+ "+---+----------+----------+"
+ "| 1 | 1-0 | 1-1 |"
+ "+---+----------+----------+"
+);
+
+test_table!(
+ empty_style,
+ Matrix::new(3, 3)
+ .with(Style::empty())
+ .with(Modify::new(Segment::all()).with(Padding::zero())),
+ "Ncolumn 0column 1column 2"
+ "0 0-0 0-1 0-2 "
+ "1 1-0 1-1 1-2 "
+ "2 2-0 2-1 2-2 "
+);
+
+test_table!(
+ single_column_style_0,
+ Matrix::table(2, 0).with(Style::modern()),
+ "┌───â”"
+ "│ N │"
+ "├───┤"
+ "│ 0 │"
+ "├───┤"
+ "│ 1 │"
+ "└───┘"
+);
+
+test_table!(
+ single_column_style_1,
+ Matrix::table(2, 0).with(Style::blank()),
+ " N "
+ " 0 "
+ " 1 "
+);
+
+test_table!(
+ single_column_last_row_style,
+ Matrix::table(3, 0).with(Style::re_structured_text()),
+ "==="
+ " N "
+ "==="
+ " 0 "
+ " 1 "
+ " 2 "
+ "==="
+);
+
+test_table!(
+ single_cell_style,
+ Builder::from_iter([[""]]).build().with(Style::modern()),
+ "┌──â”"
+ "│ │"
+ "└──┘"
+);
+
+test_table!(
+ border_test_0,
+ Matrix::table(2, 2).with(Modify::new(Rows::single(1)).with(Border::filled('*').top('#'))),
+ "+---+----------+----------+"
+ "| N | column 0 | column 1 |"
+ "*###*##########*##########*"
+ "* 0 * 0-0 * 0-1 *"
+ "***************************"
+ "| 1 | 1-0 | 1-1 |"
+ "+---+----------+----------+"
+);
+
+test_table!(
+ border_test_1,
+ Matrix::table(2, 2)
+ .with(Style::empty())
+ .with(Modify::new(Rows::single(1)).with(Border::filled('*').top('#'))),
+ " N column 0 column 1 "
+ "*###*##########*##########*"
+ "* 0 * 0-0 * 0-1 *"
+ "***************************"
+ " 1 1-0 1-1 "
+);
+
+test_table!(
+ style_frame_test_0,
+ Matrix::table(2, 2).with(Highlight::new(Rows::single(1), Style::modern().get_frame())),
+ "+---+----------+----------+"
+ "| N | column 0 | column 1 |"
+ "┌─────────────────────────â”"
+ "│ 0 | 0-0 | 0-1 │"
+ "└─────────────────────────┘"
+ "| 1 | 1-0 | 1-1 |"
+ "+---+----------+----------+"
+);
+
+test_table!(
+ style_frame_test_1,
+ Matrix::table(2, 2)
+ .with(Style::blank())
+ .with(Highlight::new(Rows::single(0), Style::extended().get_frame()))
+ .with(Highlight::new(Rows::single(2), Style::extended().get_frame())),
+ "â•”â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•—"
+ "â•‘ N column 0 column 1 â•‘"
+ "â•šâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•"
+ " 0 0-0 0-1 "
+ "â•”â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•—"
+ "â•‘ 1 1-0 1-1 â•‘"
+ "â•šâ•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•"
+);
+
+test_table!(
+ single_column_off_horizontal_test,
+ Matrix::table(3, 0).with(Style::ascii().remove_horizontal().remove_vertical()),
+ "+---+"
+ "| N |"
+ "| 0 |"
+ "| 1 |"
+ "| 2 |"
+ "+---+"
+);
+
+test_table!(
+ single_row_test,
+ Matrix::table(0, 3).with(Style::modern()),
+ "┌───┬──────────┬──────────┬──────────â”"
+ "│ N │ column 0 │ column 1 │ column 2 │"
+ "└───┴──────────┴──────────┴──────────┘"
+);
+
+test_table!(
+ empty_border_text_doesnt_panic_test,
+ Matrix::table(2, 2).with(BorderText::new("").horizontal(0)),
+ "+---+----------+----------+"
+ "| N | column 0 | column 1 |"
+ "+---+----------+----------+"
+ "| 0 | 0-0 | 0-1 |"
+ "+---+----------+----------+"
+ "| 1 | 1-0 | 1-1 |"
+ "+---+----------+----------+"
+);
+
+test_table!(
+ span_correct_test_0,
+ Matrix::table(6, 4)
+ .with(Modify::new((0, 3)).with(Span::column(2)))
+ .with(Modify::new((1, 0)).with(Span::column(3)))
+ .with(Modify::new((2, 0)).with(Span::column(2)))
+ .with(Modify::new((2, 3)).with(Span::column(2)))
+ .with(Modify::new((3, 0)).with(Span::column(5)))
+ .with(Modify::new((4, 1)).with(Span::column(4)))
+ .with(Modify::new((5, 0)).with(Span::column(5)))
+ .with(Modify::new((6, 0)).with(Span::column(5)))
+ .with(BorderSpanCorrection),
+ "+---+----------+----------+-----------+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+---+----------+----------+-----+-----+"
+ "| 0 | 0-2 | 0-3 |"
+ "+--------------+----------+-----+-----+"
+ "| 1 | 1-1 | 1-2 |"
+ "+--------------+----------+-----------+"
+ "| 2 |"
+ "+---+---------------------------------+"
+ "| 3 | 3-0 |"
+ "+---+---------------------------------+"
+ "| 4 |"
+ "+-------------------------------------+"
+ "| 5 |"
+ "+-------------------------------------+"
+);
+
+test_table!(
+ span_correct_test_1,
+ Matrix::table(6, 4)
+ .with(Modify::new((0, 0)).with(Span::column(5)))
+ .with(Modify::new((1, 0)).with(Span::column(3)))
+ .with(Modify::new((2, 0)).with(Span::column(2)))
+ .with(Modify::new((2, 3)).with(Span::column(2)))
+ .with(Modify::new((3, 0)).with(Span::column(5)))
+ .with(Modify::new((4, 1)).with(Span::column(4)))
+ .with(Modify::new((5, 0)).with(Span::column(5)))
+ .with(Modify::new((6, 0)).with(Span::column(5)))
+ .with(BorderSpanCorrection),
+ "+----------------------+"
+ "| N |"
+ "+----------+-----+-----+"
+ "| 0 | 0-2 | 0-3 |"
+ "+----+-----+-----+-----+"
+ "| 1 | 1-1 | 1-2 |"
+ "+----+-----+-----------+"
+ "| 2 |"
+ "+---+------------------+"
+ "| 3 | 3-0 |"
+ "+---+------------------+"
+ "| 4 |"
+ "+----------------------+"
+ "| 5 |"
+ "+----------------------+"
+);
+
+test_table!(
+ style_settings_usage_test_0,
+ Matrix::new(3, 3)
+ .insert((1, 1), "a longer string")
+ .with({
+ let mut style: RawStyle = Style::modern().into();
+ style
+ .set_bottom(Some('a'))
+ .set_left(Some('b'))
+ .set_right(None)
+ .set_top(None)
+ .set_intersection(Some('x'))
+ .set_intersection_top(None)
+ .set_corner_top_left(None)
+ .set_corner_top_right(None);
+ style
+ }),
+ "b N │ column 0 │ column 1 │ column 2 "
+ "├───x─────────────────x──────────x──────────┤"
+ "b 0 │ a longer string │ 0-1 │ 0-2 "
+ "├───x─────────────────x──────────x──────────┤"
+ "b 1 │ 1-0 │ 1-1 │ 1-2 "
+ "├───x─────────────────x──────────x──────────┤"
+ "b 2 │ 2-0 │ 2-1 │ 2-2 "
+ "└aaa┴aaaaaaaaaaaaaaaaa┴aaaaaaaaaa┴aaaaaaaaaa┘"
+);
+
+test_table!(
+ style_settings_usage_test_1,
+ Matrix::new(3, 3)
+ .insert((1, 1), "a longer string")
+ .with({
+ let mut style: RawStyle = Style::modern().into();
+ style.set_bottom(None);
+ style
+ }),
+ "┌───┬─────────────────┬──────────┬──────────â”"
+ "│ N │ column 0 │ column 1 │ column 2 │"
+ "├───┼─────────────────┼──────────┼──────────┤"
+ "│ 0 │ a longer string │ 0-1 │ 0-2 │"
+ "├───┼─────────────────┼──────────┼──────────┤"
+ "│ 1 │ 1-0 │ 1-1 │ 1-2 │"
+ "├───┼─────────────────┼──────────┼──────────┤"
+ "│ 2 │ 2-0 │ 2-1 │ 2-2 │"
+ "└ ┴ ┴ ┴ ┘"
+);
+
+test_table!(
+ style_settings_usage_test_2,
+ Matrix::new(3, 3)
+ .insert((1, 1), "a longer string")
+ .with({
+ let mut style: RawStyle = Style::modern().into();
+ style.set_bottom(None);
+ style
+ })
+ .with(Modify::new(Rows::last()).with(Border::default().corner_bottom_left('*'))),
+ "┌───┬─────────────────┬──────────┬──────────â”"
+ "│ N │ column 0 │ column 1 │ column 2 │"
+ "├───┼─────────────────┼──────────┼──────────┤"
+ "│ 0 │ a longer string │ 0-1 │ 0-2 │"
+ "├───┼─────────────────┼──────────┼──────────┤"
+ "│ 1 │ 1-0 │ 1-1 │ 1-2 │"
+ "├───┼─────────────────┼──────────┼──────────┤"
+ "│ 2 │ 2-0 │ 2-1 │ 2-2 │"
+ "* * * * ┘"
+);
+
+test_table!(
+ border_none_test_0,
+ Matrix::table(2, 2)
+ .with(Style::ascii())
+ .with(Modify::new(Rows::single(1)).with(Border::filled('*').top('#')))
+ .with(Modify::new(Rows::single(1)).with(Border::empty())),
+ "+---+----------+----------+"
+ "| N | column 0 | column 1 |"
+ "+---+----------+----------+"
+ "| 0 | 0-0 | 0-1 |"
+ "+---+----------+----------+"
+ "| 1 | 1-0 | 1-1 |"
+ "+---+----------+----------+"
+);
+
+test_table!(
+ border_none_test_1,
+ Matrix::table(2, 2)
+ .with(Style::empty())
+ .with(Modify::new(Rows::single(1)).with(Border::filled('*').top('#')))
+ .with(Modify::new(Columns::single(1)).with(Border::empty())),
+ " N column 0 column 1 "
+ "*### ##########*"
+ "* 0 0-0 0-1 *"
+ "**** ***********"
+ " 1 1-0 1-1 "
+);
+
+#[test]
+fn custom_style_test() {
+ macro_rules! test_style {
+ ($style:expr, $expected:expr $(,)*) => {
+ let table = Matrix::new(3, 3).with($style).to_string();
+ assert_eq!(table, $expected);
+ };
+ }
+
+ // Single
+
+ test_style!(
+ Style::empty().top('-'),
+ static_table!(
+ "---------------------------------"
+ " N column 0 column 1 column 2 "
+ " 0 0-0 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ ),
+ );
+ test_style!(
+ Style::empty().bottom('-'),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 0-0 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ "---------------------------------"
+ ),
+ );
+ test_style!(
+ Style::empty().left('-'),
+ static_table!(
+ "- N column 0 column 1 column 2 "
+ "- 0 0-0 0-1 0-2 "
+ "- 1 1-0 1-1 1-2 "
+ "- 2 2-0 2-1 2-2 "
+ ),
+ );
+ test_style!(
+ Style::empty().right('-'),
+ static_table!(
+ " N column 0 column 1 column 2 -"
+ " 0 0-0 0-1 0-2 -"
+ " 1 1-0 1-1 1-2 -"
+ " 2 2-0 2-1 2-2 -"
+ ),
+ );
+ test_style!(
+ Style::empty().horizontal('-'),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ "---------------------------------"
+ " 0 0-0 0-1 0-2 "
+ "---------------------------------"
+ " 1 1-0 1-1 1-2 "
+ "---------------------------------"
+ " 2 2-0 2-1 2-2 "
+ ),
+ );
+ test_style!(
+ Style::empty().horizontals(vec![HorizontalLine::new(1, Line::default()).main(Some('-'))]),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ "---------------------------------"
+ " 0 0-0 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ ),
+ );
+ test_style!(
+ Style::empty().vertical('-'),
+ static_table!(
+ " N - column 0 - column 1 - column 2 "
+ " 0 - 0-0 - 0-1 - 0-2 "
+ " 1 - 1-0 - 1-1 - 1-2 "
+ " 2 - 2-0 - 2-1 - 2-2 "
+ ),
+ );
+
+ // Combinations
+
+ test_style!(
+ Style::empty().top('-').bottom('+'),
+ static_table!(
+ "---------------------------------"
+ " N column 0 column 1 column 2 "
+ " 0 0-0 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ "+++++++++++++++++++++++++++++++++"
+ )
+ );
+ test_style!(
+ Style::empty().top('-').left('+'),
+ static_table!(
+ "+---------------------------------"
+ "+ N column 0 column 1 column 2 "
+ "+ 0 0-0 0-1 0-2 "
+ "+ 1 1-0 1-1 1-2 "
+ "+ 2 2-0 2-1 2-2 "
+ )
+ );
+ test_style!(
+ Style::empty().top('-').right('+'),
+ static_table!(
+ "---------------------------------+"
+ " N column 0 column 1 column 2 +"
+ " 0 0-0 0-1 0-2 +"
+ " 1 1-0 1-1 1-2 +"
+ " 2 2-0 2-1 2-2 +"
+ )
+ );
+ test_style!(
+ Style::empty().top('-').horizontal('+'),
+ static_table!(
+ "---------------------------------"
+ " N column 0 column 1 column 2 "
+ "+++++++++++++++++++++++++++++++++"
+ " 0 0-0 0-1 0-2 "
+ "+++++++++++++++++++++++++++++++++"
+ " 1 1-0 1-1 1-2 "
+ "+++++++++++++++++++++++++++++++++"
+ " 2 2-0 2-1 2-2 "
+ )
+ );
+ test_style!(
+ Style::empty().top('-').vertical('+'),
+ static_table!(
+ "---+----------+----------+----------"
+ " N + column 0 + column 1 + column 2 "
+ " 0 + 0-0 + 0-1 + 0-2 "
+ " 1 + 1-0 + 1-1 + 1-2 "
+ " 2 + 2-0 + 2-1 + 2-2 "
+ )
+ );
+ test_style!(
+ Style::empty()
+ .top('-')
+ .horizontals(vec![HorizontalLine::new(1, Line::default()).main(Some('+'))]),
+ static_table!(
+ "---------------------------------"
+ " N column 0 column 1 column 2 "
+ "+++++++++++++++++++++++++++++++++"
+ " 0 0-0 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ );
+
+ test_style!(
+ Style::empty().bottom('-').top('+'),
+ static_table!(
+ "+++++++++++++++++++++++++++++++++"
+ " N column 0 column 1 column 2 "
+ " 0 0-0 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ "---------------------------------"
+ )
+ );
+ test_style!(
+ Style::empty().bottom('-').left('+'),
+ static_table!(
+ "+ N column 0 column 1 column 2 "
+ "+ 0 0-0 0-1 0-2 "
+ "+ 1 1-0 1-1 1-2 "
+ "+ 2 2-0 2-1 2-2 "
+ "+---------------------------------"
+ )
+ );
+ test_style!(
+ Style::empty().bottom('-').right('+'),
+ static_table!(
+ " N column 0 column 1 column 2 +"
+ " 0 0-0 0-1 0-2 +"
+ " 1 1-0 1-1 1-2 +"
+ " 2 2-0 2-1 2-2 +"
+ "---------------------------------+"
+ )
+ );
+ test_style!(
+ Style::empty().bottom('-').vertical('+'),
+ static_table!(
+ " N + column 0 + column 1 + column 2 "
+ " 0 + 0-0 + 0-1 + 0-2 "
+ " 1 + 1-0 + 1-1 + 1-2 "
+ " 2 + 2-0 + 2-1 + 2-2 "
+ "---+----------+----------+----------"
+ )
+ );
+ test_style!(
+ Style::empty().bottom('-').horizontal('+'),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ "+++++++++++++++++++++++++++++++++"
+ " 0 0-0 0-1 0-2 "
+ "+++++++++++++++++++++++++++++++++"
+ " 1 1-0 1-1 1-2 "
+ "+++++++++++++++++++++++++++++++++"
+ " 2 2-0 2-1 2-2 "
+ "---------------------------------"
+ )
+ );
+ test_style!(
+ Style::empty()
+ .bottom('-')
+ .horizontals(vec![HorizontalLine::new(1, Line::default()).main(Some('+'))]),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ "+++++++++++++++++++++++++++++++++"
+ " 0 0-0 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ "---------------------------------"
+ )
+ );
+
+ test_style!(
+ Style::empty().left('-').top('+'),
+ static_table!(
+ "++++++++++++++++++++++++++++++++++"
+ "- N column 0 column 1 column 2 "
+ "- 0 0-0 0-1 0-2 "
+ "- 1 1-0 1-1 1-2 "
+ "- 2 2-0 2-1 2-2 "
+ )
+ );
+ test_style!(
+ Style::empty().left('-').bottom('+'),
+ static_table!(
+ "- N column 0 column 1 column 2 "
+ "- 0 0-0 0-1 0-2 "
+ "- 1 1-0 1-1 1-2 "
+ "- 2 2-0 2-1 2-2 "
+ "++++++++++++++++++++++++++++++++++"
+ )
+ );
+ test_style!(
+ Style::empty().left('-').right('+'),
+ static_table!(
+ "- N column 0 column 1 column 2 +"
+ "- 0 0-0 0-1 0-2 +"
+ "- 1 1-0 1-1 1-2 +"
+ "- 2 2-0 2-1 2-2 +"
+ )
+ );
+ test_style!(
+ Style::empty().left('-').vertical('+'),
+ static_table!(
+ "- N + column 0 + column 1 + column 2 "
+ "- 0 + 0-0 + 0-1 + 0-2 "
+ "- 1 + 1-0 + 1-1 + 1-2 "
+ "- 2 + 2-0 + 2-1 + 2-2 "
+ )
+ );
+ test_style!(
+ Style::empty().left('-').horizontal('+'),
+ static_table!(
+ "- N column 0 column 1 column 2 "
+ "++++++++++++++++++++++++++++++++++"
+ "- 0 0-0 0-1 0-2 "
+ "++++++++++++++++++++++++++++++++++"
+ "- 1 1-0 1-1 1-2 "
+ "++++++++++++++++++++++++++++++++++"
+ "- 2 2-0 2-1 2-2 "
+ )
+ );
+ test_style!(
+ Style::empty()
+ .left('-')
+ .horizontals(vec![HorizontalLine::new(1, Line::default()).main(Some('+'))]),
+ static_table!(
+ "- N column 0 column 1 column 2 "
+ " +++++++++++++++++++++++++++++++++"
+ "- 0 0-0 0-1 0-2 "
+ "- 1 1-0 1-1 1-2 "
+ "- 2 2-0 2-1 2-2 "
+ )
+ );
+
+ test_style!(
+ Style::empty().right('-').top('+'),
+ static_table!(
+ "++++++++++++++++++++++++++++++++++"
+ " N column 0 column 1 column 2 -"
+ " 0 0-0 0-1 0-2 -"
+ " 1 1-0 1-1 1-2 -"
+ " 2 2-0 2-1 2-2 -"
+ )
+ );
+ test_style!(
+ Style::empty().right('-').bottom('+'),
+ static_table!(
+ " N column 0 column 1 column 2 -"
+ " 0 0-0 0-1 0-2 -"
+ " 1 1-0 1-1 1-2 -"
+ " 2 2-0 2-1 2-2 -"
+ "++++++++++++++++++++++++++++++++++"
+ )
+ );
+ test_style!(
+ Style::empty().right('-').left('+'),
+ static_table!(
+ "+ N column 0 column 1 column 2 -"
+ "+ 0 0-0 0-1 0-2 -"
+ "+ 1 1-0 1-1 1-2 -"
+ "+ 2 2-0 2-1 2-2 -"
+ )
+ );
+ test_style!(
+ Style::empty().right('-').vertical('+'),
+ static_table!(
+ " N + column 0 + column 1 + column 2 -"
+ " 0 + 0-0 + 0-1 + 0-2 -"
+ " 1 + 1-0 + 1-1 + 1-2 -"
+ " 2 + 2-0 + 2-1 + 2-2 -"
+ )
+ );
+ test_style!(
+ Style::empty().right('-').horizontal('+'),
+ static_table!(
+ " N column 0 column 1 column 2 -"
+ "++++++++++++++++++++++++++++++++++"
+ " 0 0-0 0-1 0-2 -"
+ "++++++++++++++++++++++++++++++++++"
+ " 1 1-0 1-1 1-2 -"
+ "++++++++++++++++++++++++++++++++++"
+ " 2 2-0 2-1 2-2 -"
+ )
+ );
+ test_style!(
+ Style::empty()
+ .right('-')
+ .horizontals(vec![HorizontalLine::new(1, Line::default()).main(Some('+'))]),
+ static_table!(
+ " N column 0 column 1 column 2 -"
+ "+++++++++++++++++++++++++++++++++ "
+ " 0 0-0 0-1 0-2 -"
+ " 1 1-0 1-1 1-2 -"
+ " 2 2-0 2-1 2-2 -"
+ )
+ );
+
+ test_style!(
+ Style::empty().vertical('-').top('+'),
+ static_table!(
+ "++++++++++++++++++++++++++++++++++++"
+ " N - column 0 - column 1 - column 2 "
+ " 0 - 0-0 - 0-1 - 0-2 "
+ " 1 - 1-0 - 1-1 - 1-2 "
+ " 2 - 2-0 - 2-1 - 2-2 "
+ )
+ );
+ test_style!(
+ Style::empty().vertical('-').bottom('+'),
+ static_table!(
+ " N - column 0 - column 1 - column 2 "
+ " 0 - 0-0 - 0-1 - 0-2 "
+ " 1 - 1-0 - 1-1 - 1-2 "
+ " 2 - 2-0 - 2-1 - 2-2 "
+ "++++++++++++++++++++++++++++++++++++"
+ )
+ );
+ test_style!(
+ Style::empty().vertical('-').left('+'),
+ static_table!(
+ "+ N - column 0 - column 1 - column 2 "
+ "+ 0 - 0-0 - 0-1 - 0-2 "
+ "+ 1 - 1-0 - 1-1 - 1-2 "
+ "+ 2 - 2-0 - 2-1 - 2-2 "
+ )
+ );
+ test_style!(
+ Style::empty().vertical('-').right('+'),
+ static_table!(
+ " N - column 0 - column 1 - column 2 +"
+ " 0 - 0-0 - 0-1 - 0-2 +"
+ " 1 - 1-0 - 1-1 - 1-2 +"
+ " 2 - 2-0 - 2-1 - 2-2 +"
+ )
+ );
+ test_style!(
+ Style::empty().vertical('-').horizontal('+'),
+ static_table!(
+ " N - column 0 - column 1 - column 2 "
+ "++++++++++++++++++++++++++++++++++++"
+ " 0 - 0-0 - 0-1 - 0-2 "
+ "++++++++++++++++++++++++++++++++++++"
+ " 1 - 1-0 - 1-1 - 1-2 "
+ "++++++++++++++++++++++++++++++++++++"
+ " 2 - 2-0 - 2-1 - 2-2 "
+ )
+ );
+ test_style!(
+ Style::empty()
+ .vertical('-')
+ .horizontals(vec![HorizontalLine::new(1, Line::default()).main(Some('+'))]),
+ static_table!(
+ " N - column 0 - column 1 - column 2 "
+ "+++ ++++++++++ ++++++++++ ++++++++++"
+ " 0 - 0-0 - 0-1 - 0-2 "
+ " 1 - 1-0 - 1-1 - 1-2 "
+ " 2 - 2-0 - 2-1 - 2-2 "
+ )
+ );
+
+ test_style!(
+ Style::empty().horizontal('-').top('+'),
+ static_table!(
+ "+++++++++++++++++++++++++++++++++"
+ " N column 0 column 1 column 2 "
+ "---------------------------------"
+ " 0 0-0 0-1 0-2 "
+ "---------------------------------"
+ " 1 1-0 1-1 1-2 "
+ "---------------------------------"
+ " 2 2-0 2-1 2-2 "
+ )
+ );
+ test_style!(
+ Style::empty().horizontal('-').bottom('+'),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ "---------------------------------"
+ " 0 0-0 0-1 0-2 "
+ "---------------------------------"
+ " 1 1-0 1-1 1-2 "
+ "---------------------------------"
+ " 2 2-0 2-1 2-2 "
+ "+++++++++++++++++++++++++++++++++"
+ )
+ );
+ test_style!(
+ Style::empty().horizontal('-').left('+'),
+ static_table!(
+ "+ N column 0 column 1 column 2 "
+ "+---------------------------------"
+ "+ 0 0-0 0-1 0-2 "
+ "+---------------------------------"
+ "+ 1 1-0 1-1 1-2 "
+ "+---------------------------------"
+ "+ 2 2-0 2-1 2-2 "
+ )
+ );
+ test_style!(
+ Style::empty().horizontal('-').right('+'),
+ static_table!(
+ " N column 0 column 1 column 2 +"
+ "---------------------------------+"
+ " 0 0-0 0-1 0-2 +"
+ "---------------------------------+"
+ " 1 1-0 1-1 1-2 +"
+ "---------------------------------+"
+ " 2 2-0 2-1 2-2 +"
+ )
+ );
+ test_style!(
+ Style::empty().horizontal('-').vertical('+'),
+ static_table!(
+ " N + column 0 + column 1 + column 2 "
+ "---+----------+----------+----------"
+ " 0 + 0-0 + 0-1 + 0-2 "
+ "---+----------+----------+----------"
+ " 1 + 1-0 + 1-1 + 1-2 "
+ "---+----------+----------+----------"
+ " 2 + 2-0 + 2-1 + 2-2 "
+ )
+ );
+ test_style!(
+ Style::empty()
+ .horizontal('-')
+ .horizontals(vec![HorizontalLine::new(1, Line::default()).main(Some('+'))]),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ "+++++++++++++++++++++++++++++++++"
+ " 0 0-0 0-1 0-2 "
+ "---------------------------------"
+ " 1 1-0 1-1 1-2 "
+ "---------------------------------"
+ " 2 2-0 2-1 2-2 "
+ )
+ );
+
+ test_style!(
+ Style::empty()
+ .horizontals(vec![HorizontalLine::new(1, Line::default()).main(Some('-'))])
+ .top('+'),
+ static_table!(
+ "+++++++++++++++++++++++++++++++++"
+ " N column 0 column 1 column 2 "
+ "---------------------------------"
+ " 0 0-0 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ );
+ test_style!(
+ Style::empty()
+ .horizontals(vec![HorizontalLine::new(1, Line::default()).main(Some('-'))])
+ .bottom('+'),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ "---------------------------------"
+ " 0 0-0 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ "+++++++++++++++++++++++++++++++++"
+ )
+ );
+ test_style!(
+ Style::empty()
+ .horizontals(vec![HorizontalLine::new(1, Line::default()).main(Some('-'))])
+ .left('+'),
+ static_table!(
+ "+ N column 0 column 1 column 2 "
+ "+---------------------------------"
+ "+ 0 0-0 0-1 0-2 "
+ "+ 1 1-0 1-1 1-2 "
+ "+ 2 2-0 2-1 2-2 "
+ )
+ );
+ test_style!(
+ Style::empty()
+ .horizontals(vec![HorizontalLine::new(1, Line::default()).main(Some('-'))])
+ .right('+'),
+ static_table!(
+ " N column 0 column 1 column 2 +"
+ "---------------------------------+"
+ " 0 0-0 0-1 0-2 +"
+ " 1 1-0 1-1 1-2 +"
+ " 2 2-0 2-1 2-2 +"
+ )
+ );
+ test_style!(
+ Style::empty()
+ .horizontals(vec![HorizontalLine::new(1, Line::default()).main(Some('-'))])
+ .vertical('+'),
+ static_table!(
+ " N + column 0 + column 1 + column 2 "
+ "---+----------+----------+----------"
+ " 0 + 0-0 + 0-1 + 0-2 "
+ " 1 + 1-0 + 1-1 + 1-2 "
+ " 2 + 2-0 + 2-1 + 2-2 "
+ )
+ );
+ test_style!(
+ Style::empty()
+ .horizontals(vec![HorizontalLine::new(1, Line::default()).main(Some('-'))])
+ .horizontal('+'),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ "---------------------------------"
+ " 0 0-0 0-1 0-2 "
+ "+++++++++++++++++++++++++++++++++"
+ " 1 1-0 1-1 1-2 "
+ "+++++++++++++++++++++++++++++++++"
+ " 2 2-0 2-1 2-2 "
+ )
+ );
+
+ // Full
+
+ test_style!(
+ Style::empty()
+ .top('-')
+ .bottom('+')
+ .left('|')
+ .right('*')
+ .horizontal('x')
+ .horizontals(vec![HorizontalLine::new(1, Line::filled('z'))])
+ .vertical('#'),
+ static_table!(
+ "|---#----------#----------#----------*"
+ "| N # column 0 # column 1 # column 2 *"
+ "zzzz#zzzzzzzzzz#zzzzzzzzzz#zzzzzzzzzzz"
+ "| 0 # 0-0 # 0-1 # 0-2 *"
+ "xxxx#xxxxxxxxxx#xxxxxxxxxx#xxxxxxxxxxx"
+ "| 1 # 1-0 # 1-1 # 1-2 *"
+ "xxxx#xxxxxxxxxx#xxxxxxxxxx#xxxxxxxxxxx"
+ "| 2 # 2-0 # 2-1 # 2-2 *"
+ "|+++#++++++++++#++++++++++#++++++++++*"
+ ),
+ );
+
+ let full_style = Style::empty()
+ .top('-')
+ .bottom('+')
+ .left('|')
+ .right('*')
+ .horizontal('x')
+ .horizontals(vec![HorizontalLine::new(1, Line::filled(','))])
+ .vertical('#')
+ .intersection_bottom('@')
+ .intersection_top('!')
+ .intersection_left('=')
+ .intersection_right('$')
+ .intersection('+')
+ .corner_top_left(';')
+ .corner_bottom_left('?')
+ .corner_top_right('.')
+ .corner_bottom_right('%');
+ test_style!(
+ full_style.clone(),
+ static_table!(
+ ";---!----------!----------!----------."
+ "| N # column 0 # column 1 # column 2 *"
+ ",,,,#,,,,,,,,,,#,,,,,,,,,,#,,,,,,,,,,,"
+ "| 0 # 0-0 # 0-1 # 0-2 *"
+ "=xxx+xxxxxxxxxx+xxxxxxxxxx+xxxxxxxxxx$"
+ "| 1 # 1-0 # 1-1 # 1-2 *"
+ "=xxx+xxxxxxxxxx+xxxxxxxxxx+xxxxxxxxxx$"
+ "| 2 # 2-0 # 2-1 # 2-2 *"
+ "?+++@++++++++++@++++++++++@++++++++++%"
+ )
+ );
+
+ // Overwrite intersections and corners
+
+ test_style!(
+ full_style.clone().top('q'),
+ static_table!(
+ "qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq"
+ "| N # column 0 # column 1 # column 2 *"
+ ",,,,#,,,,,,,,,,#,,,,,,,,,,#,,,,,,,,,,,"
+ "| 0 # 0-0 # 0-1 # 0-2 *"
+ "=xxx+xxxxxxxxxx+xxxxxxxxxx+xxxxxxxxxx$"
+ "| 1 # 1-0 # 1-1 # 1-2 *"
+ "=xxx+xxxxxxxxxx+xxxxxxxxxx+xxxxxxxxxx$"
+ "| 2 # 2-0 # 2-1 # 2-2 *"
+ "?+++@++++++++++@++++++++++@++++++++++%"
+ )
+ );
+ test_style!(
+ full_style.clone().bottom('q'),
+ static_table!(
+ ";---!----------!----------!----------."
+ "| N # column 0 # column 1 # column 2 *"
+ ",,,,#,,,,,,,,,,#,,,,,,,,,,#,,,,,,,,,,,"
+ "| 0 # 0-0 # 0-1 # 0-2 *"
+ "=xxx+xxxxxxxxxx+xxxxxxxxxx+xxxxxxxxxx$"
+ "| 1 # 1-0 # 1-1 # 1-2 *"
+ "=xxx+xxxxxxxxxx+xxxxxxxxxx+xxxxxxxxxx$"
+ "| 2 # 2-0 # 2-1 # 2-2 *"
+ "qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq"
+ )
+ );
+ test_style!(
+ full_style.clone().left('w'),
+ static_table!(
+ "w---!----------!----------!----------."
+ "w N # column 0 # column 1 # column 2 *"
+ "w,,,#,,,,,,,,,,#,,,,,,,,,,#,,,,,,,,,,,"
+ "w 0 # 0-0 # 0-1 # 0-2 *"
+ "wxxx+xxxxxxxxxx+xxxxxxxxxx+xxxxxxxxxx$"
+ "w 1 # 1-0 # 1-1 # 1-2 *"
+ "wxxx+xxxxxxxxxx+xxxxxxxxxx+xxxxxxxxxx$"
+ "w 2 # 2-0 # 2-1 # 2-2 *"
+ "w+++@++++++++++@++++++++++@++++++++++%"
+ )
+ );
+ test_style!(
+ full_style.clone().right('i'),
+ static_table!(
+ ";---!----------!----------!----------i"
+ "| N # column 0 # column 1 # column 2 i"
+ ",,,,#,,,,,,,,,,#,,,,,,,,,,#,,,,,,,,,,i"
+ "| 0 # 0-0 # 0-1 # 0-2 i"
+ "=xxx+xxxxxxxxxx+xxxxxxxxxx+xxxxxxxxxxi"
+ "| 1 # 1-0 # 1-1 # 1-2 i"
+ "=xxx+xxxxxxxxxx+xxxxxxxxxx+xxxxxxxxxxi"
+ "| 2 # 2-0 # 2-1 # 2-2 i"
+ "?+++@++++++++++@++++++++++@++++++++++i"
+ )
+ );
+ test_style!(
+ full_style.clone().horizontal('q'),
+ static_table!(
+ ";---!----------!----------!----------."
+ "| N # column 0 # column 1 # column 2 *"
+ ",,,,#,,,,,,,,,,#,,,,,,,,,,#,,,,,,,,,,,"
+ "| 0 # 0-0 # 0-1 # 0-2 *"
+ "qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq"
+ "| 1 # 1-0 # 1-1 # 1-2 *"
+ "qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq"
+ "| 2 # 2-0 # 2-1 # 2-2 *"
+ "?+++@++++++++++@++++++++++@++++++++++%"
+ )
+ );
+ test_style!(
+ full_style.clone().vertical('q'),
+ static_table!(
+ ";---q----------q----------q----------."
+ "| N q column 0 q column 1 q column 2 *"
+ ",,,,q,,,,,,,,,,q,,,,,,,,,,q,,,,,,,,,,,"
+ "| 0 q 0-0 q 0-1 q 0-2 *"
+ "=xxxqxxxxxxxxxxqxxxxxxxxxxqxxxxxxxxxx$"
+ "| 1 q 1-0 q 1-1 q 1-2 *"
+ "=xxxqxxxxxxxxxxqxxxxxxxxxxqxxxxxxxxxx$"
+ "| 2 q 2-0 q 2-1 q 2-2 *"
+ "?+++q++++++++++q++++++++++q++++++++++%"
+ )
+ );
+ test_style!(
+ full_style
+ .clone()
+ .horizontals(vec![HorizontalLine::new(1, Line::filled('q'))]),
+ static_table!(
+ ";---!----------!----------!----------."
+ "| N # column 0 # column 1 # column 2 *"
+ "qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq"
+ "| 0 # 0-0 # 0-1 # 0-2 *"
+ "=xxx+xxxxxxxxxx+xxxxxxxxxx+xxxxxxxxxx$"
+ "| 1 # 1-0 # 1-1 # 1-2 *"
+ "=xxx+xxxxxxxxxx+xxxxxxxxxx+xxxxxxxxxx$"
+ "| 2 # 2-0 # 2-1 # 2-2 *"
+ "?+++@++++++++++@++++++++++@++++++++++%"
+ )
+ );
+
+ // Turn off borders
+
+ let empty_table = static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 0-0 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ );
+ test_style!(Style::empty().top('-').remove_top(), empty_table);
+ test_style!(Style::empty().bottom('-').remove_bottom(), empty_table);
+ test_style!(Style::empty().right('-').remove_right(), empty_table);
+ test_style!(Style::empty().left('-').remove_left(), empty_table);
+ test_style!(
+ Style::empty().horizontal('-').remove_horizontal(),
+ empty_table
+ );
+ test_style!(Style::empty().vertical('-').remove_vertical(), empty_table);
+ test_style!(
+ Style::empty().horizontals(vec![HorizontalLine::new(
+ 1,
+ Line::new(Some('-'), None, None, None)
+ )]),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ "---------------------------------"
+ " 0 0-0 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ );
+
+ test_style!(
+ full_style.clone().remove_top(),
+ static_table!(
+ "| N # column 0 # column 1 # column 2 *"
+ ",,,,#,,,,,,,,,,#,,,,,,,,,,#,,,,,,,,,,,"
+ "| 0 # 0-0 # 0-1 # 0-2 *"
+ "=xxx+xxxxxxxxxx+xxxxxxxxxx+xxxxxxxxxx$"
+ "| 1 # 1-0 # 1-1 # 1-2 *"
+ "=xxx+xxxxxxxxxx+xxxxxxxxxx+xxxxxxxxxx$"
+ "| 2 # 2-0 # 2-1 # 2-2 *"
+ "?+++@++++++++++@++++++++++@++++++++++%"
+ )
+ );
+ test_style!(
+ full_style.clone().remove_bottom(),
+ static_table!(
+ ";---!----------!----------!----------."
+ "| N # column 0 # column 1 # column 2 *"
+ ",,,,#,,,,,,,,,,#,,,,,,,,,,#,,,,,,,,,,,"
+ "| 0 # 0-0 # 0-1 # 0-2 *"
+ "=xxx+xxxxxxxxxx+xxxxxxxxxx+xxxxxxxxxx$"
+ "| 1 # 1-0 # 1-1 # 1-2 *"
+ "=xxx+xxxxxxxxxx+xxxxxxxxxx+xxxxxxxxxx$"
+ "| 2 # 2-0 # 2-1 # 2-2 *"
+ )
+ );
+ test_style!(
+ full_style.clone().remove_right(),
+ static_table!(
+ ";---!----------!----------!----------"
+ "| N # column 0 # column 1 # column 2 "
+ ",,,,#,,,,,,,,,,#,,,,,,,,,,#,,,,,,,,,,"
+ "| 0 # 0-0 # 0-1 # 0-2 "
+ "=xxx+xxxxxxxxxx+xxxxxxxxxx+xxxxxxxxxx"
+ "| 1 # 1-0 # 1-1 # 1-2 "
+ "=xxx+xxxxxxxxxx+xxxxxxxxxx+xxxxxxxxxx"
+ "| 2 # 2-0 # 2-1 # 2-2 "
+ "?+++@++++++++++@++++++++++@++++++++++"
+ )
+ );
+ test_style!(
+ full_style.clone().remove_left(),
+ static_table!(
+ "---!----------!----------!----------."
+ " N # column 0 # column 1 # column 2 *"
+ ",,,#,,,,,,,,,,#,,,,,,,,,,#,,,,,,,,,,,"
+ " 0 # 0-0 # 0-1 # 0-2 *"
+ "xxx+xxxxxxxxxx+xxxxxxxxxx+xxxxxxxxxx$"
+ " 1 # 1-0 # 1-1 # 1-2 *"
+ "xxx+xxxxxxxxxx+xxxxxxxxxx+xxxxxxxxxx$"
+ " 2 # 2-0 # 2-1 # 2-2 *"
+ "+++@++++++++++@++++++++++@++++++++++%"
+ )
+ );
+ test_style!(
+ full_style.clone().remove_horizontal(),
+ static_table!(
+ ";---!----------!----------!----------."
+ "| N # column 0 # column 1 # column 2 *"
+ ",,,,#,,,,,,,,,,#,,,,,,,,,,#,,,,,,,,,,,"
+ "| 0 # 0-0 # 0-1 # 0-2 *"
+ "| 1 # 1-0 # 1-1 # 1-2 *"
+ "| 2 # 2-0 # 2-1 # 2-2 *"
+ "?+++@++++++++++@++++++++++@++++++++++%"
+ )
+ );
+ test_style!(
+ full_style.clone().remove_vertical(),
+ static_table!(
+ ";---------------------------------."
+ "| N column 0 column 1 column 2 *"
+ ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"
+ "| 0 0-0 0-1 0-2 *"
+ "=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx$"
+ "| 1 1-0 1-1 1-2 *"
+ "=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx$"
+ "| 2 2-0 2-1 2-2 *"
+ "?+++++++++++++++++++++++++++++++++%"
+ )
+ );
+ test_style!(
+ full_style.remove_horizontals(),
+ static_table!(
+ ";---!----------!----------!----------."
+ "| N # column 0 # column 1 # column 2 *"
+ "=xxx+xxxxxxxxxx+xxxxxxxxxx+xxxxxxxxxx$"
+ "| 0 # 0-0 # 0-1 # 0-2 *"
+ "=xxx+xxxxxxxxxx+xxxxxxxxxx+xxxxxxxxxx$"
+ "| 1 # 1-0 # 1-1 # 1-2 *"
+ "=xxx+xxxxxxxxxx+xxxxxxxxxx+xxxxxxxxxx$"
+ "| 2 # 2-0 # 2-1 # 2-2 *"
+ "?+++@++++++++++@++++++++++@++++++++++%"
+ )
+ );
+}
+
+#[test]
+fn test_default_border_usage() {
+ macro_rules! test_border {
+ ($modify:expr, $expected:expr) => {
+ let table = Matrix::new(3, 3)
+ .insert((1, 1), "a longer string")
+ .with(Style::empty())
+ .with($modify)
+ .to_string();
+
+ assert_eq!(table, $expected);
+ };
+ }
+
+ test_border! {
+ Modify::new((3, 2)).with(Border::default().corner_bottom_left('*')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ " * "
+ )
+ }
+ test_border! {
+ Modify::new((3, 2)).with(Border::default().corner_bottom_right('*')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ " * "
+ )
+ }
+ test_border! {
+ Modify::new((3, 2)).with(Border::default().bottom('*')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ " ********** "
+ )
+ }
+ test_border! {
+ Modify::new((3, 2)).with(Border::default().bottom('*').corner_bottom_left('#')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ " #********** "
+ )
+ }
+ test_border! {
+ Modify::new((3, 2)).with(Border::default().bottom('*').corner_bottom_right('#')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ " **********# "
+ )
+ }
+ test_border! {
+ Modify::new((3, 2)).with(Border::default().left('*')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 * 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((3, 2)).with(Border::default().corner_top_left('*')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " * "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((3, 2)).with(Border::default().left('#').corner_top_left('*')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " * "
+ " 2 2-0 # 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((3, 2)).with(Border::default().left('#').corner_bottom_left('@').corner_top_left('*')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " * "
+ " 2 2-0 # 2-1 2-2 "
+ " @ "
+ )
+ }
+ test_border! {
+ Modify::new((3, 2)).with(Border::default().right('*')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 * 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((3, 2)).with(Border::default().corner_top_right('*')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " * "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((3, 2)).with(Border::default().right('#').corner_top_right('*')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " * "
+ " 2 2-0 2-1 # 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((3, 2)).with(Border::default().right('#').corner_top_right('*').corner_bottom_right('@')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " * "
+ " 2 2-0 2-1 # 2-2 "
+ " @ "
+ )
+ }
+ test_border! {
+ Modify::new((3, 2)).with(Border::default().right('#').corner_top_right('*').corner_bottom_left('@')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " * "
+ " 2 2-0 2-1 # 2-2 "
+ " @ "
+ )
+ }
+ test_border! {
+ Modify::new((3, 2)).with(Border::filled('@')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " @@@@@@@@@@@@ "
+ " 2 2-0 @ 2-1 @ 2-2 "
+ " @@@@@@@@@@@@ "
+ )
+ }
+
+ test_border! {
+ Modify::new((1, 2)).with(Border::default().corner_bottom_left('*')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " * "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((1, 2)).with(Border::default().corner_bottom_right('*')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " * "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((1, 2)).with(Border::default().bottom('*')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " ********** "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((1, 2)).with(Border::default().bottom('*').corner_bottom_left('#')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " #********** "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((1, 2)).with(Border::default().bottom('*').corner_bottom_right('#')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " **********# "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((1, 2)).with(Border::default().left('*')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 a longer string * 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((1, 2)).with(Border::default().corner_top_left('*')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " * "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((1, 2)).with(Border::default().left('#').corner_top_left('*')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " * "
+ " 0 a longer string # 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((1, 2)).with(Border::default().left('#').corner_bottom_left('@').corner_top_left('*')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " * "
+ " 0 a longer string # 0-1 0-2 "
+ " @ "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((1, 2)).with(Border::default().right('*')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " 0 a longer string 0-1 * 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((1, 2)).with(Border::default().corner_top_right('*')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " * "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((1, 2)).with(Border::default().right('#').corner_top_right('*')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " * "
+ " 0 a longer string 0-1 # 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((1, 2)).with(Border::default().right('#').corner_top_right('*').corner_bottom_right('@')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " * "
+ " 0 a longer string 0-1 # 0-2 "
+ " @ "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((1, 2)).with(Border::default().right('#').corner_top_right('*').corner_bottom_left('@')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " * "
+ " 0 a longer string 0-1 # 0-2 "
+ " @ "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((1, 2)).with(Border::filled('@')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " @@@@@@@@@@@@ "
+ " 0 a longer string @ 0-1 @ 0-2 "
+ " @@@@@@@@@@@@ "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+
+ test_border! {
+ Modify::new((0, 3)).with(Border::default().corner_bottom_left('*')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " * "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((0, 3)).with(Border::default().corner_bottom_right('*')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " *"
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((0, 3)).with(Border::default().bottom('*')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " **********"
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((0, 3)).with(Border::default().bottom('*').corner_bottom_left('#')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " #**********"
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((0, 3)).with(Border::default().bottom('*').corner_bottom_right('#')),
+ static_table!(
+ " N column 0 column 1 column 2 "
+ " **********#"
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((0, 3)).with(Border::default().left('*')),
+ static_table!(
+ " N column 0 column 1 * column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((0, 3)).with(Border::default().corner_top_left('*')),
+ static_table!(
+ " * "
+ " N column 0 column 1 column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((0, 3)).with(Border::default().left('#').corner_top_left('*')),
+ static_table!(
+ " * "
+ " N column 0 column 1 # column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((0, 3)).with(Border::default().left('#').corner_bottom_left('@').corner_top_left('*')),
+ static_table!(
+ " * "
+ " N column 0 column 1 # column 2 "
+ " @ "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((0, 3)).with(Border::default().right('*')),
+ static_table!(
+ " N column 0 column 1 column 2 *"
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((0, 3)).with(Border::default().corner_top_right('*')),
+ static_table!(
+ " *"
+ " N column 0 column 1 column 2 "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((0, 3)).with(Border::default().right('#').corner_top_right('*')),
+ static_table!(
+ " *"
+ " N column 0 column 1 column 2 #"
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((0, 3)).with(Border::default().right('#').corner_top_right('*').corner_bottom_right('@')),
+ static_table!(
+ " *"
+ " N column 0 column 1 column 2 #"
+ " @"
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((0, 3)).with(Border::default().right('#').corner_top_right('*').corner_bottom_left('@')),
+ static_table!(
+ " *"
+ " N column 0 column 1 column 2 #"
+ " @ "
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+ test_border! {
+ Modify::new((0, 3)).with(Border::filled('@')),
+ static_table!(
+ " @@@@@@@@@@@@"
+ " N column 0 column 1 @ column 2 @"
+ " @@@@@@@@@@@@"
+ " 0 a longer string 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ )
+ }
+}
+
+#[cfg(feature = "color")]
+#[test]
+fn border_colored_test() {
+ let table = Matrix::table(2, 2)
+ .with(Style::ascii())
+ .with(
+ Modify::new(Rows::single(1))
+ .with(
+ BorderColor::filled(Color::try_from('*'.blue().to_string()).unwrap())
+ .top(Color::try_from('#'.truecolor(12, 220, 100).to_string()).unwrap()),
+ )
+ .with(Border::filled('*').top('#')),
+ )
+ .to_string();
+
+ assert_eq!(
+ ansi_str::AnsiStr::ansi_strip(&table),
+ static_table!(
+ "+---+----------+----------+"
+ "| N | column 0 | column 1 |"
+ "*###*##########*##########*"
+ "* 0 * 0-0 * 0-1 *"
+ "***************************"
+ "| 1 | 1-0 | 1-1 |"
+ "+---+----------+----------+"
+ )
+ );
+
+ assert_eq!(
+ table,
+ static_table!(
+ "+---+----------+----------+"
+ "| N | column 0 | column 1 |"
+ "\u{1b}[34m*\u{1b}[39m\u{1b}[38;2;12;220;100m###\u{1b}[39m\u{1b}[34m*\u{1b}[39m\u{1b}[38;2;12;220;100m##########\u{1b}[39m\u{1b}[34m*\u{1b}[39m\u{1b}[38;2;12;220;100m##########\u{1b}[39m\u{1b}[34m*\u{1b}[39m"
+ "\u{1b}[34m*\u{1b}[39m 0 \u{1b}[34m*\u{1b}[39m 0-0 \u{1b}[34m*\u{1b}[39m 0-1 \u{1b}[34m*\u{1b}[39m"
+ "\u{1b}[34m***************************\u{1b}[39m"
+ "| 1 | 1-0 | 1-1 |"
+ "+---+----------+----------+"
+ )
+ );
+
+ let table = Matrix::table(2, 2)
+ .with(Style::empty())
+ .with(
+ Modify::new(Rows::single(1))
+ .with(
+ BorderColor::filled(Color::try_from('*'.blue().to_string()).unwrap())
+ .top(Color::try_from('#'.truecolor(12, 220, 100).to_string()).unwrap()),
+ )
+ .with(Border::filled('*').top('#')),
+ )
+ .to_string();
+
+ assert_eq!(
+ ansi_str::AnsiStr::ansi_strip(&table),
+ static_table!(
+ " N column 0 column 1 "
+ "*###*##########*##########*"
+ "* 0 * 0-0 * 0-1 *"
+ "***************************"
+ " 1 1-0 1-1 "
+ )
+ );
+
+ assert_eq!(
+ table,
+ " N column 0 column 1 \n\u{1b}[34m*\u{1b}[39m\u{1b}[38;2;12;220;100m###\u{1b}[39m\u{1b}[34m*\u{1b}[39m\u{1b}[38;2;12;220;100m##########\u{1b}[39m\u{1b}[34m*\u{1b}[39m\u{1b}[38;2;12;220;100m##########\u{1b}[39m\u{1b}[34m*\u{1b}[39m\n\u{1b}[34m*\u{1b}[39m 0 \u{1b}[34m*\u{1b}[39m 0-0 \u{1b}[34m*\u{1b}[39m 0-1 \u{1b}[34m*\u{1b}[39m\n\u{1b}[34m***************************\u{1b}[39m\n 1 1-0 1-1 ",
+ );
+}
+
+#[cfg(feature = "color")]
+#[test]
+fn style_with_color_test() {
+ let mut style: RawStyle = Style::ascii().into();
+ style
+ .set_left(Some('['))
+ .set_right(Some(']'))
+ .set_top(Some('-'))
+ .set_bottom(Some('-'))
+ .set_vertical(Some('|'))
+ .set_intersection(Some('+'));
+ style
+ .set_color_left(Color::FG_RED)
+ .set_color_right(Color::FG_RED)
+ .set_color_top(Color::FG_BLUE)
+ .set_color_bottom(Color::FG_BLUE)
+ .set_color_vertical(Color::FG_YELLOW)
+ .set_color_intersection(Color::try_from(' '.purple().to_string()).unwrap());
+
+ let table = Matrix::new(3, 3).with(style).to_string();
+
+ assert_eq!(
+ ansi_str::AnsiStr::ansi_strip(&table),
+ static_table!(
+ "+---+----------+----------+----------+"
+ "[ N | column 0 | column 1 | column 2 ]"
+ "+---+----------+----------+----------+"
+ "[ 0 | 0-0 | 0-1 | 0-2 ]"
+ "+---+----------+----------+----------+"
+ "[ 1 | 1-0 | 1-1 | 1-2 ]"
+ "+---+----------+----------+----------+"
+ "[ 2 | 2-0 | 2-1 | 2-2 ]"
+ "+---+----------+----------+----------+"
+ )
+ );
+
+ assert_eq!(table, "+\u{1b}[34m---\u{1b}[39m+\u{1b}[34m----------\u{1b}[39m+\u{1b}[34m----------\u{1b}[39m+\u{1b}[34m----------\u{1b}[39m+\n\u{1b}[31m[\u{1b}[39m N \u{1b}[33m|\u{1b}[39m column 0 \u{1b}[33m|\u{1b}[39m column 1 \u{1b}[33m|\u{1b}[39m column 2 \u{1b}[31m]\u{1b}[39m\n+---\u{1b}[35m+\u{1b}[39m----------\u{1b}[35m+\u{1b}[39m----------\u{1b}[35m+\u{1b}[39m----------+\n\u{1b}[31m[\u{1b}[39m 0 \u{1b}[33m|\u{1b}[39m 0-0 \u{1b}[33m|\u{1b}[39m 0-1 \u{1b}[33m|\u{1b}[39m 0-2 \u{1b}[31m]\u{1b}[39m\n+---\u{1b}[35m+\u{1b}[39m----------\u{1b}[35m+\u{1b}[39m----------\u{1b}[35m+\u{1b}[39m----------+\n\u{1b}[31m[\u{1b}[39m 1 \u{1b}[33m|\u{1b}[39m 1-0 \u{1b}[33m|\u{1b}[39m 1-1 \u{1b}[33m|\u{1b}[39m 1-2 \u{1b}[31m]\u{1b}[39m\n+---\u{1b}[35m+\u{1b}[39m----------\u{1b}[35m+\u{1b}[39m----------\u{1b}[35m+\u{1b}[39m----------+\n\u{1b}[31m[\u{1b}[39m 2 \u{1b}[33m|\u{1b}[39m 2-0 \u{1b}[33m|\u{1b}[39m 2-1 \u{1b}[33m|\u{1b}[39m 2-2 \u{1b}[31m]\u{1b}[39m\n+\u{1b}[34m---\u{1b}[39m+\u{1b}[34m----------\u{1b}[39m+\u{1b}[34m----------\u{1b}[39m+\u{1b}[34m----------\u{1b}[39m+");
+}
+
+test_table!(
+ empty_line_clears_lines,
+ Matrix::new(3, 3).with(Style::rounded().remove_horizontals()),
+ "╭───┬──────────┬──────────┬──────────╮"
+ "│ N │ column 0 │ column 1 │ column 2 │"
+ "│ 0 │ 0-0 │ 0-1 │ 0-2 │"
+ "│ 1 │ 1-0 │ 1-1 │ 1-2 │"
+ "│ 2 │ 2-0 │ 2-1 │ 2-2 │"
+ "╰───┴──────────┴──────────┴──────────╯"
+);
+
+test_table!(
+ empty_line_clears_lines_1,
+ Matrix::new(3, 3).with(Style::rounded().remove_horizontals()),
+ "╭───┬──────────┬──────────┬──────────╮"
+ "│ N │ column 0 │ column 1 │ column 2 │"
+ "│ 0 │ 0-0 │ 0-1 │ 0-2 │"
+ "│ 1 │ 1-0 │ 1-1 │ 1-2 │"
+ "│ 2 │ 2-0 │ 2-1 │ 2-2 │"
+ "╰───┴──────────┴──────────┴──────────╯"
+);
+
+test_table!(
+ border_color,
+ {
+ use tabled::settings::Color;
+ Matrix::new(3, 3).with(Style::psql()).with(Color::BG_GREEN)
+ },
+ " \u{1b}[42mN\u{1b}[49m | \u{1b}[42mcolumn 0\u{1b}[49m | \u{1b}[42mcolumn 1\u{1b}[49m | \u{1b}[42mcolumn 2\u{1b}[49m \n---+----------+----------+----------\n \u{1b}[42m0\u{1b}[49m | \u{1b}[42m0-0\u{1b}[49m | \u{1b}[42m0-1\u{1b}[49m | \u{1b}[42m0-2\u{1b}[49m \n \u{1b}[42m1\u{1b}[49m | \u{1b}[42m1-0\u{1b}[49m | \u{1b}[42m1-1\u{1b}[49m | \u{1b}[42m1-2\u{1b}[49m \n \u{1b}[42m2\u{1b}[49m | \u{1b}[42m2-0\u{1b}[49m | \u{1b}[42m2-1\u{1b}[49m | \u{1b}[42m2-2\u{1b}[49m "
+);
+
+test_table!(
+ text_color,
+ {
+ use tabled::settings::Color;
+ Matrix::new(3, 3).with(Style::psql()).with(Modify::new(Segment::all()).with(Color::BG_BLACK))
+ },
+ " \u{1b}[40mN\u{1b}[49m | \u{1b}[40mcolumn 0\u{1b}[49m | \u{1b}[40mcolumn 1\u{1b}[49m | \u{1b}[40mcolumn 2\u{1b}[49m \n---+----------+----------+----------\n \u{1b}[40m0\u{1b}[49m | \u{1b}[40m0-0\u{1b}[49m | \u{1b}[40m0-1\u{1b}[49m | \u{1b}[40m0-2\u{1b}[49m \n \u{1b}[40m1\u{1b}[49m | \u{1b}[40m1-0\u{1b}[49m | \u{1b}[40m1-1\u{1b}[49m | \u{1b}[40m1-2\u{1b}[49m \n \u{1b}[40m2\u{1b}[49m | \u{1b}[40m2-0\u{1b}[49m | \u{1b}[40m2-1\u{1b}[49m | \u{1b}[40m2-2\u{1b}[49m "
+);
+
+test_table!(
+ verticals_0,
+ Matrix::new(3, 3)
+ .with(Style::rounded().verticals(vec![VerticalLine::new(0, Line::filled('+')), VerticalLine::new(4, Line::filled('+'))])),
+ "+───┬──────────┬──────────┬──────────+"
+ "+ N │ column 0 │ column 1 │ column 2 +"
+ "├───┼──────────┼──────────┼──────────┤"
+ "+ 0 │ 0-0 │ 0-1 │ 0-2 +"
+ "+ 1 │ 1-0 │ 1-1 │ 1-2 +"
+ "+ 2 │ 2-0 │ 2-1 │ 2-2 +"
+ "+───┴──────────┴──────────┴──────────+"
+);
+
+test_table!(
+ verticals_1,
+ Matrix::new(3, 3)
+ .with(Style::rounded().verticals((1..4).map(|i| VerticalLine::new(i, Line::filled('+'))))),
+ "╭───+──────────+──────────+──────────╮"
+ "│ N + column 0 + column 1 + column 2 │"
+ "├───┼──────────┼──────────┼──────────┤"
+ "│ 0 + 0-0 + 0-1 + 0-2 │"
+ "│ 1 + 1-0 + 1-1 + 1-2 │"
+ "│ 2 + 2-0 + 2-1 + 2-2 │"
+ "╰───+──────────+──────────+──────────╯"
+);
+
+test_table!(
+ verticals_2,
+ Matrix::new(3, 3).with(Style::rounded().verticals(vec![VerticalLine::new(1, Line::filled('+'))])),
+ "╭───+──────────┬──────────┬──────────╮"
+ "│ N + column 0 │ column 1 │ column 2 │"
+ "├───┼──────────┼──────────┼──────────┤"
+ "│ 0 + 0-0 │ 0-1 │ 0-2 │"
+ "│ 1 + 1-0 │ 1-1 │ 1-2 │"
+ "│ 2 + 2-0 │ 2-1 │ 2-2 │"
+ "╰───+──────────┴──────────┴──────────╯"
+);
+
+test_table!(
+ verticals_3,
+ Matrix::new(3, 3).with(Style::ascii().verticals([VerticalLine::new(1, Line::filled('*'))])),
+ "+---*----------+----------+----------+"
+ "| N * column 0 | column 1 | column 2 |"
+ "+---*----------+----------+----------+"
+ "| 0 * 0-0 | 0-1 | 0-2 |"
+ "+---*----------+----------+----------+"
+ "| 1 * 1-0 | 1-1 | 1-2 |"
+ "+---*----------+----------+----------+"
+ "| 2 * 2-0 | 2-1 | 2-2 |"
+ "+---*----------+----------+----------+"
+);
+
+test_table!(
+ verticals_4,
+ Matrix::new(3, 3).with(Style::ascii().verticals((0..10).map(|i| VerticalLine::new(i, Line::new(Some('*'), Some('x'), Some('c'), Some('2')))))),
+ "c---c----------c----------c----------c"
+ "* N * column 0 * column 1 * column 2 *"
+ "x---x----------x----------x----------x"
+ "* 0 * 0-0 * 0-1 * 0-2 *"
+ "x---x----------x----------x----------x"
+ "* 1 * 1-0 * 1-1 * 1-2 *"
+ "x---x----------x----------x----------x"
+ "* 2 * 2-0 * 2-1 * 2-2 *"
+ "2---2----------2----------2----------2"
+);
+
+test_table!(
+ vertical_line_0,
+ Matrix::new(3, 3)
+ .with(HorizontalLine::new(1, Line::new(Some('8'), Some('8'), Some('8'), Some('8'))))
+ .with(VerticalLine::new(1, Line::new(Some('*'), Some('x'), Some('c'), Some('2')))),
+ "+---c----------+----------+----------+"
+ "| N * column 0 | column 1 | column 2 |"
+ "88888888888888888888888888888888888888"
+ "| 0 * 0-0 | 0-1 | 0-2 |"
+ "+---x----------+----------+----------+"
+ "| 1 * 1-0 | 1-1 | 1-2 |"
+ "+---x----------+----------+----------+"
+ "| 2 * 2-0 | 2-1 | 2-2 |"
+ "+---2----------+----------+----------+"
+);
+
+test_table!(
+ vertical_line_1,
+ Matrix::new(3, 3)
+ .with(Style::empty())
+ .with(VerticalLine::new(1, Line::new(Some('*'), Some('x'), Some('c'), Some('2')))),
+ " c "
+ " N * column 0 column 1 column 2 "
+ " 0 * 0-0 0-1 0-2 "
+ " 1 * 1-0 1-1 1-2 "
+ " 2 * 2-0 2-1 2-2 "
+ " 2 "
+);
+
+test_table!(
+ vertical_line_2,
+ Matrix::new(3, 3)
+ .with(Style::empty())
+ .with(VerticalLine::new(1, Line::new(None, Some('x'), Some('c'), Some('2')))),
+ " c "
+ " N column 0 column 1 column 2 "
+ " 0 0-0 0-1 0-2 "
+ " 1 1-0 1-1 1-2 "
+ " 2 2-0 2-1 2-2 "
+ " 2 "
+);
+
+test_table!(
+ vertical_line_3,
+ Matrix::new(3, 3)
+ .with(Style::empty())
+ .with(VerticalLine::new(1, Line::new(Some('*'), Some('x'), None, None))),
+ " N * column 0 column 1 column 2 "
+ " 0 * 0-0 0-1 0-2 "
+ " 1 * 1-0 1-1 1-2 "
+ " 2 * 2-0 2-1 2-2 "
+);
+
+test_table!(
+ override_horizontal_border_on_line,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Modify::new(Rows::single(1))
+ .with(BorderChar::horizontal(':', Offset::Begin(0)))
+ .with(BorderChar::horizontal(':', Offset::End(0)))
+ ),
+ "| N | column 0 | column 1 | column 2 |"
+ "|:-:|:--------:|:--------:|:--------:|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+);
+
+test_table!(
+ override_horizontal_border_on_borders,
+ Matrix::new(3, 3)
+ .with(Modify::new(Rows::new(..5))
+ .with(BorderChar::horizontal(':', Offset::Begin(0)))
+ .with(BorderChar::horizontal('y', Offset::Begin(3)))
+ .with(BorderChar::horizontal(':', Offset::End(0)))
+ .with(BorderChar::horizontal('x', Offset::End(3)))
+ ),
+ "+:-:+:--y--x--:+:--y--x--:+:--y--x--:+"
+ "| N | column 0 | column 1 | column 2 |"
+ "+:-:+:--y--x--:+:--y--x--:+:--y--x--:+"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "+:-:+:--y--x--:+:--y--x--:+:--y--x--:+"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "+:-:+:--y--x--:+:--y--x--:+:--y--x--:+"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ "+:-:+:--y--x--:+:--y--x--:+:--y--x--:+"
+);
+
+test_table!(
+ override_horizontal_border_on_border,
+ Matrix::new(3, 3)
+ .with(Modify::new(Rows::new(..5))
+ .with(Border::filled('['))
+ .with(BorderChar::horizontal(':', Offset::Begin(0)))
+ .with(BorderChar::horizontal('y', Offset::Begin(3)))
+ .with(BorderChar::horizontal(':', Offset::End(0)))
+ .with(BorderChar::horizontal('x', Offset::End(3)))
+ ),
+ "[:[:[:[[y[[x[[:[:[[y[[x[[:[:[[y[[x[[:["
+ "[ N [ column 0 [ column 1 [ column 2 ["
+ "[:[:[:[[y[[x[[:[:[[y[[x[[:[:[[y[[x[[:["
+ "[ 0 [ 0-0 [ 0-1 [ 0-2 ["
+ "[:[:[:[[y[[x[[:[:[[y[[x[[:[:[[y[[x[[:["
+ "[ 1 [ 1-0 [ 1-1 [ 1-2 ["
+ "[:[:[:[[y[[x[[:[:[[y[[x[[:[:[[y[[x[[:["
+ "[ 2 [ 2-0 [ 2-1 [ 2-2 ["
+ "[:[:[:[[y[[x[[:[:[[y[[x[[:[:[[y[[x[[:["
+);
+
+test_table!(
+ override_vertical_border_on_line,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Modify::new(Columns::single(1))
+ .with(BorderChar::vertical(':', Offset::Begin(0)))
+ ),
+ "| N : column 0 | column 1 | column 2 |"
+ "|---|----------|----------|----------|"
+ "| 0 : 0-0 | 0-1 | 0-2 |"
+ "| 1 : 1-0 | 1-1 | 1-2 |"
+ "| 2 : 2-0 | 2-1 | 2-2 |"
+);
+
+test_table!(
+ override_vertical_border_on_line_1,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Modify::new(Columns::single(1))
+ .with(BorderChar::vertical(':', Offset::End(0)))
+ ),
+ "| N : column 0 | column 1 | column 2 |"
+ "|---|----------|----------|----------|"
+ "| 0 : 0-0 | 0-1 | 0-2 |"
+ "| 1 : 1-0 | 1-1 | 1-2 |"
+ "| 2 : 2-0 | 2-1 | 2-2 |"
+);
+
+test_table!(
+ override_vertical_border_on_line_multiline,
+ Matrix::new(3, 3)
+ .with(Modify::new(Rows::single(1)).with(Format::content(|s| format!("\nsome text\ntext\n{s}\ntext\ntext\n"))))
+ .with(Style::markdown())
+ .with(Modify::new(Columns::single(1))
+ .with(BorderChar::vertical(':', Offset::Begin(4)))
+ ),
+ "| N | column 0 | column 1 | column 2 |"
+ "|-----------|-----------|-----------|-----------|"
+ "| | | | |"
+ "| some text | some text | some text | some text |"
+ "| text | text | text | text |"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| text : text | text | text |"
+ "| text | text | text | text |"
+ "| | | | |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+);
+
+test_table!(
+ override_vertical_border_on_line_multiline_2,
+ Matrix::new(3, 3)
+ .with(Modify::new(Rows::single(1)).with(Format::content(|s| format!("\nsome text\ntext\n{s}\ntext\ntext\n"))))
+ .with(Style::markdown())
+ .with(Modify::new(Columns::single(1))
+ .with(BorderChar::vertical(':', Offset::End(4)))
+ ),
+ "| N | column 0 | column 1 | column 2 |"
+ "|-----------|-----------|-----------|-----------|"
+ "| | | | |"
+ "| some text | some text | some text | some text |"
+ "| text : text | text | text |"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| text | text | text | text |"
+ "| text | text | text | text |"
+ "| | | | |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+);
+
+test_table!(
+ override_vertical_and_horizontal_border_on_line,
+ Matrix::new(3, 3)
+ .with(Modify::new(Rows::single(1)).with(Format::content(|s| format!("\nsome text\ntext\n{s}\ntext\ntext\n"))))
+ .with(Style::markdown())
+ .with(Modify::new(Columns::new(..5))
+ .with(BorderChar::vertical('y', Offset::Begin(0)))
+ .with(BorderChar::vertical('^', Offset::End(0)))
+ )
+ .with(Modify::new(Rows::single(1))
+ .with(BorderChar::horizontal('x', Offset::Begin(0)))
+ .with(BorderChar::horizontal('@', Offset::End(0)))
+ ),
+ "y N y column 0 y column 1 y column 2 y"
+ "|x---------@|x---------@|x---------@|x---------@|"
+ "y y y y y"
+ "| some text | some text | some text | some text |"
+ "| text | text | text | text |"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| text | text | text | text |"
+ "| text | text | text | text |"
+ "^ ^ ^ ^ ^"
+ "y 1 y 1-0 y 1-1 y 1-2 y"
+ "y 2 y 2-0 y 2-1 y 2-2 y"
+);
+
+test_table!(
+ table_format_alignment_left_test,
+ format!("{:<}", Table::new(vec!["hello", "world", "!"])),
+ "+-------+"
+ "| &str |"
+ "+-------+"
+ "| hello |"
+ "+-------+"
+ "| world |"
+ "+-------+"
+ "| ! |"
+ "+-------+"
+);
+
+test_table!(
+ table_format_alignment_right_test,
+ format!("{:>}", Table::new(vec!["hello", "world", "!"])),
+ "+-------+"
+ "| &str |"
+ "+-------+"
+ "| hello |"
+ "+-------+"
+ "| world |"
+ "+-------+"
+ "| ! |"
+ "+-------+"
+);
+
+test_table!(
+ table_format_alignment_center_test,
+ format!("{:^}", Table::new(vec!["hello", "world", "!"])),
+ "+-------+"
+ "| &str |"
+ "+-------+"
+ "| hello |"
+ "+-------+"
+ "| world |"
+ "+-------+"
+ "| ! |"
+ "+-------+"
+);
+
+test_table!(
+ table_format_width_0_test,
+ format!("{:<13}", Table::new(vec!["hello", "world", "!"])),
+ " +-------+"
+ " | &str |"
+ " +-------+"
+ " | hello |"
+ " +-------+"
+ " | world |"
+ " +-------+"
+ " | ! |"
+ " +-------+"
+);
+
+test_table!(
+ table_format_width_1_test,
+ format!("{:>13}", Table::new(vec!["hello", "world", "!"])),
+ "+-------+ "
+ "| &str | "
+ "+-------+ "
+ "| hello | "
+ "+-------+ "
+ "| world | "
+ "+-------+ "
+ "| ! | "
+ "+-------+ "
+);
+
+test_table!(
+ table_format_width_2_test,
+ format!("{:^13}", Table::new(vec!["hello", "world", "!"])),
+ " +-------+ "
+ " | &str | "
+ " +-------+ "
+ " | hello | "
+ " +-------+ "
+ " | world | "
+ " +-------+ "
+ " | ! | "
+ " +-------+ "
+);
+
+test_table!(
+ table_format_width_3_test,
+ format!("{:x^13}", Table::new(vec!["hello", "world", "!"])),
+ "xx+-------+xx"
+ "xx| &str |xx"
+ "xx+-------+xx"
+ "xx| hello |xx"
+ "xx+-------+xx"
+ "xx| world |xx"
+ "xx+-------+xx"
+ "xx| ! |xx"
+ "xx+-------+xx"
+);
+
+test_table!(
+ table_format_width_4_test,
+ format!("{:x<13}", Table::new(vec!["hello", "world", "!"])),
+ "xxxx+-------+"
+ "xxxx| &str |"
+ "xxxx+-------+"
+ "xxxx| hello |"
+ "xxxx+-------+"
+ "xxxx| world |"
+ "xxxx+-------+"
+ "xxxx| ! |"
+ "xxxx+-------+"
+);
+
+test_table!(
+ table_format_width_5_test,
+ format!("{:x>13}", Table::new(vec!["hello", "world", "!"])),
+ "+-------+xxxx"
+ "| &str |xxxx"
+ "+-------+xxxx"
+ "| hello |xxxx"
+ "+-------+xxxx"
+ "| world |xxxx"
+ "+-------+xxxx"
+ "| ! |xxxx"
+ "+-------+xxxx"
+);
+
+test_table!(
+ table_style_no_bottom_no_new_line,
+ Matrix::table(0, 0).with(Style::markdown().remove_horizontals()),
+ "| N |"
+);
diff --git a/vendor/tabled/tests/settings/width_test.rs b/vendor/tabled/tests/settings/width_test.rs
new file mode 100644
index 000000000..d2bc84a46
--- /dev/null
+++ b/vendor/tabled/tests/settings/width_test.rs
@@ -0,0 +1,2836 @@
+#![cfg(feature = "std")]
+
+use tabled::{
+ grid::util::string::string_width_multiline,
+ settings::{
+ formatting::{TabSize, TrimStrategy},
+ object::{Columns, Object, Rows, Segment},
+ peaker::{PriorityMax, PriorityMin},
+ width::{Justify, MinWidth, SuffixLimit, Width},
+ Alignment, Margin, Modify, Padding, Panel, Settings, Span, Style,
+ },
+};
+
+use crate::matrix::Matrix;
+use testing_table::{is_lines_equal, static_table, test_table};
+
+#[cfg(feature = "color")]
+use ::{ansi_str::AnsiStr, owo_colors::OwoColorize};
+
+#[cfg(all(feature = "derive", feature = "color"))]
+use ::owo_colors::AnsiColors;
+
+test_table!(
+ max_width,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Modify::new(Columns::new(1..).not(Rows::single(0))).with(Width::truncate(1))),
+ "| N | column 0 | column 1 | column 2 |"
+ "|---|----------|----------|----------|"
+ "| 0 | 0 | 0 | 0 |"
+ "| 1 | 1 | 1 | 1 |"
+ "| 2 | 2 | 2 | 2 |"
+);
+
+test_table!(
+ max_width_with_suffix,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(
+ Modify::new(Columns::new(1..).not(Rows::single(0)))
+ .with(Width::truncate(2).suffix("...")),
+ ),
+ "| N | column 0 | column 1 | column 2 |"
+ "|---|----------|----------|----------|"
+ "| 0 | .. | .. | .. |"
+ "| 1 | .. | .. | .. |"
+ "| 2 | .. | .. | .. |"
+);
+
+test_table!(
+ max_width_doesnt_icrease_width_if_it_is_smaller,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Modify::new(Columns::new(1..).not(Rows::single(0))).with(Width::truncate(50))),
+ "| N | column 0 | column 1 | column 2 |"
+ "|---|----------|----------|----------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+);
+
+test_table!(
+ max_width_wrapped,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Modify::new(Columns::new(1..).not(Rows::single(0))).with(Width::wrap(2))),
+ "| N | column 0 | column 1 | column 2 |"
+ "|---|----------|----------|----------|"
+ "| 0 | 0- | 0- | 0- |"
+ "| | 0 | 1 | 2 |"
+ "| 1 | 1- | 1- | 1- |"
+ "| | 0 | 1 | 2 |"
+ "| 2 | 2- | 2- | 2- |"
+ "| | 0 | 1 | 2 |"
+);
+
+test_table!(
+ max_width_wrapped_does_nothing_if_str_is_smaller,
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Modify::new(Columns::new(1..).not(Rows::single(0))).with(Width::wrap(100))),
+ "| N | column 0 | column 1 | column 2 |"
+ "|---|----------|----------|----------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+);
+
+test_table!(
+ max_width_wrapped_keep_words_0,
+ {
+ let table = Matrix::iter(vec!["this is a long sentence"])
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Width::wrap(17).keep_words()))
+ .to_string();
+
+ assert!(is_lines_equal(&table, 17 + 2 + 2));
+
+ table
+ },
+ "| &str |"
+ "|-------------------|"
+ "| this is a long |"
+ "| sentence |"
+);
+
+test_table!(
+ max_width_wrapped_keep_words_1,
+ {
+ let table = Matrix::iter(vec!["this is a long sentence"])
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Width::wrap(17).keep_words()))
+ .to_string();
+
+ assert!(is_lines_equal(&table, 17 + 2 + 2));
+
+ table
+ },
+ "| &str |"
+ "|-------------------|"
+ "| this is a long |"
+ "| sentence |"
+);
+
+test_table!(
+ max_width_wrapped_keep_words_2,
+ {
+ let table = Matrix::iter(vec!["this is a long sentence"])
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Width::wrap(17).keep_words()))
+ .to_string();
+
+ assert!(is_lines_equal(&table, 17 + 2 + 2));
+
+ table
+ },
+ "| &str |"
+ "|-------------------|"
+ "| this is a long |"
+ "| sentence |"
+);
+
+#[cfg(feature = "color")]
+test_table!(
+ max_width_wrapped_keep_words_3,
+ {
+ let table = Matrix::iter(vec!["this is a long sentence"])
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Width::wrap(17).keep_words()))
+ .to_string();
+
+ assert!(is_lines_equal(&table, 17 + 2 + 2));
+
+ table
+ },
+ // 'sentence' doesn't have a space ' sentence' because we use left alignment
+ "| &str |"
+ "|-------------------|"
+ "| this is a long |"
+ "| sentence |"
+);
+
+#[cfg(not(feature = "color"))]
+test_table!(
+ max_width_wrapped_keep_words_3,
+ {
+ let table = Matrix::iter(vec!["this is a long sentence"])
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Width::wrap(17).keep_words()))
+ .to_string();
+
+ assert!(is_lines_equal(&table, 17 + 2 + 2));
+
+ table
+ },
+ // 'sentence' doesn't have a space ' sentence' because we use left alignment
+ "| &str |"
+ "|-------------------|"
+ "| this is a long |"
+ "| sentence |"
+);
+
+test_table!(
+ max_width_wrapped_keep_words_4,
+ {
+ let table = Matrix::iter(vec!["this"])
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Width::wrap(10).keep_words()))
+ .to_string();
+
+ assert!(is_lines_equal(&table, 8));
+
+ table
+ },
+ "| &str |"
+ "|------|"
+ "| this |"
+);
+
+#[cfg(feature = "color")]
+test_table!(
+ max_width_wrapped_keep_words_color_0,
+ {
+ let table = Matrix::iter(vec!["this is a long sentence".on_black().green().to_string()])
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Width::wrap(17).keep_words()))
+ .to_string();
+
+ AnsiStr::ansi_strip(&table).to_string()
+ },
+ "| String |"
+ "|-------------------|"
+ "| this is a long |"
+ "| sentence |"
+);
+
+#[cfg(feature = "color")]
+test_table!(
+ max_width_wrapped_keep_words_color_0_1,
+ Matrix::iter(vec!["this is a long sentence".on_black().green().to_string()])
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Width::wrap(17).keep_words())),
+ "| String |"
+ "|-------------------|"
+ "| \u{1b}[32m\u{1b}[40mthis is a long \u{1b}[39m\u{1b}[49m |"
+ "| \u{1b}[32m\u{1b}[40msentence\u{1b}[39m\u{1b}[49m |"
+);
+
+#[cfg(feature = "color")]
+test_table!(
+ max_width_wrapped_keep_words_color_1,
+ {
+ let table = Matrix::iter(vec!["this is a long sentence".on_black().green().to_string()])
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Width::wrap(17).keep_words()))
+ .to_string();
+
+ AnsiStr::ansi_strip(&table).to_string()
+ },
+ "| String |"
+ "|-------------------|"
+ "| this is a long |"
+ "| sentence |"
+);
+
+#[cfg(feature = "color")]
+test_table!(
+ max_width_wrapped_keep_words_color_1_1,
+ Matrix::iter(vec!["this is a long sentence".on_black().green().to_string()])
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Width::wrap(17).keep_words())),
+ "| String |"
+ "|-------------------|"
+ "| \u{1b}[32m\u{1b}[40mthis is a long \u{1b}[39m\u{1b}[49m |"
+ "| \u{1b}[32m\u{1b}[40msentence\u{1b}[39m\u{1b}[49m |"
+);
+
+#[cfg(feature = "color")]
+test_table!(
+ max_width_wrapped_keep_words_color_2,
+ {
+ let table = Matrix::iter(vec!["this is a long sentence".on_black().green().to_string()])
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Width::wrap(17).keep_words()))
+ .to_string();
+
+ AnsiStr::ansi_strip(&table).to_string()
+ },
+ "| String |"
+ "|-------------------|"
+ "| this is a long |"
+ "| sentence |"
+);
+
+#[cfg(feature = "color")]
+test_table!(
+ max_width_wrapped_keep_words_color_2_1,
+ Matrix::iter(vec!["this is a long sentence".on_black().green().to_string()])
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Width::wrap(17).keep_words())),
+ "| String |"
+ "|-------------------|"
+ "| \u{1b}[32m\u{1b}[40mthis is a long \u{1b}[39m\u{1b}[49m |"
+ "| \u{1b}[32m\u{1b}[40msentence\u{1b}[39m\u{1b}[49m |"
+);
+
+#[cfg(feature = "color")]
+test_table!(
+ max_width_wrapped_keep_words_color_3,
+ {
+ let table = Matrix::iter(vec!["this is a long sentence".on_black().green().to_string()])
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Width::wrap(17).keep_words()))
+ .to_string();
+
+ AnsiStr::ansi_strip(&table).to_string()
+ },
+ "| String |"
+ "|-------------------|"
+ "| this is a long |"
+ "| sentence |"
+);
+
+#[cfg(feature = "color")]
+test_table!(
+ max_width_wrapped_keep_words_color_3_1,
+ Matrix::iter(vec!["this is a long sentence".on_black().green().to_string()])
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Width::wrap(17).keep_words())),
+ "| String |"
+ "|-------------------|"
+ "| \u{1b}[32m\u{1b}[40mthis is a long \u{1b}[39m\u{1b}[49m |"
+ "| \u{1b}[32m\u{1b}[40m sentence\u{1b}[39m\u{1b}[49m |"
+);
+
+#[cfg(feature = "color")]
+test_table!(
+ max_width_wrapped_keep_words_color_4,
+ {
+ let table = Matrix::iter(vec!["this".on_black().green().to_string()])
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Width::wrap(10).keep_words()))
+ .to_string();
+
+ AnsiStr::ansi_strip(&table).to_string()
+ },
+ "| String |"
+ "|--------|"
+ "| this |"
+);
+
+#[cfg(feature = "color")]
+test_table!(
+ max_width_wrapped_keep_words_color_4_1,
+ Matrix::iter(vec!["this".on_black().green().to_string()])
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Width::wrap(10).keep_words())),
+ "| String |"
+ "|--------|"
+ "| \u{1b}[32;40mthis\u{1b}[0m |"
+);
+
+test_table!(
+ max_width_wrapped_keep_words_long_word,
+ Matrix::iter(["this is a long sentencesentencesentence"])
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Width::wrap(17).keep_words())),
+ "| &str |"
+ "|-------------------|"
+ "| this is a long se |"
+ "| ntencesentencesen |"
+ "| tence |"
+);
+
+#[cfg(feature = "color")]
+#[test]
+fn max_width_wrapped_keep_words_long_word_color() {
+ let data = vec!["this is a long sentencesentencesentence"
+ .on_black()
+ .green()
+ .to_string()];
+ let table = Matrix::iter(data)
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Modify::new(Segment::all()).with(Width::wrap(17).keep_words()))
+ .to_string();
+
+ assert_eq!(
+ ansi_str::AnsiStr::ansi_strip(&table),
+ static_table!(
+ "| String |"
+ "|-------------------|"
+ "| this is a long se |"
+ "| ntencesentencesen |"
+ "| tence |"
+ )
+ );
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| String |"
+ "|-------------------|"
+ "| \u{1b}[32m\u{1b}[40mthis is a long se\u{1b}[39m\u{1b}[49m |"
+ "| \u{1b}[32m\u{1b}[40mntencesentencesen\u{1b}[39m\u{1b}[49m |"
+ "| \u{1b}[32m\u{1b}[40mtence\u{1b}[39m\u{1b}[49m |"
+ )
+ );
+}
+
+#[cfg(feature = "color")]
+#[test]
+fn max_width_keep_words_1() {
+ use tabled::settings::style::HorizontalLine;
+
+ let table = Matrix::iter(["asdf"])
+ .with(Width::wrap(7).keep_words())
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "+-----+"
+ "| &st |"
+ "| r |"
+ "+-----+"
+ "| asd |"
+ "| f |"
+ "+-----+"
+ )
+ );
+
+ let table = Matrix::iter(["qweqw eqwe"])
+ .with(Width::wrap(8).keep_words())
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "+------+"
+ "| &str |"
+ "+------+"
+ "| qweq |"
+ "| w |"
+ "| eqwe |"
+ "+------+"
+ )
+ );
+
+ let table = Matrix::iter([
+ ["123 45678", "qweqw eqwe", "..."],
+ ["0", "1", "..."],
+ ["0", "1", "..."],
+ ])
+ .with(
+ Style::modern()
+ .remove_horizontal()
+ .horizontals([HorizontalLine::new(1, Style::modern().get_horizontal())]),
+ )
+ .with(Width::wrap(21).keep_words().priority::<PriorityMax>())
+ .with(Alignment::center())
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "┌──────┬──────┬─────â”"
+ "│ 0 │ 1 │ 2 │"
+ "├──────┼──────┼─────┤"
+ "│ 123 │ qweq │ ... │"
+ "│ 4567 │ w │ │"
+ "│ 8 │ eqwe │ │"
+ "│ 0 │ 1 │ ... │"
+ "│ 0 │ 1 │ ... │"
+ "└──────┴──────┴─────┘"
+ )
+ );
+}
+
+#[cfg(feature = "color")]
+#[test]
+fn max_width_wrapped_collored() {
+ let data = &[
+ "asd".red().to_string(),
+ "zxc2".blue().to_string(),
+ "asdasd".on_black().green().to_string(),
+ ];
+
+ let table = Matrix::iter(data)
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Width::wrap(2)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ "| St |\n| ri |\n| ng |\n|----|\n| \u{1b}[31mas\u{1b}[39m |\n| \u{1b}[31md\u{1b}[39m |\n| \u{1b}[34mzx\u{1b}[39m |\n| \u{1b}[34mc2\u{1b}[39m |\n| \u{1b}[32m\u{1b}[40mas\u{1b}[39m\u{1b}[49m |\n| \u{1b}[32m\u{1b}[40mda\u{1b}[39m\u{1b}[49m |\n| \u{1b}[32m\u{1b}[40msd\u{1b}[39m\u{1b}[49m |"
+ );
+}
+
+#[test]
+fn dont_change_content_if_width_is_less_then_max_width() {
+ let table = Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Width::truncate(1000).suffix("...")))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | column 0 | column 1 | column 2 |"
+ "|---|----------|----------|----------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ )
+ );
+}
+
+#[test]
+fn max_width_with_emoji() {
+ let data = &["🤠", "😳🥵🥶😱😨", "🚴ðŸ»â€â™€ï¸ðŸš´ðŸ»ðŸš´ðŸ»â€â™‚ï¸ðŸšµðŸ»â€â™€ï¸ðŸšµðŸ»ðŸšµðŸ»â€â™‚ï¸"];
+
+ let table = Matrix::iter(data)
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Width::truncate(6).suffix("...")))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| &str |"
+ "|--------|"
+ "| 🤠 |"
+ "| 😳�... |"
+ "| 🚴�... |"
+ )
+ );
+}
+
+#[cfg(feature = "color")]
+#[test]
+fn color_chars_are_stripped() {
+ let data = &[
+ "asd".red().to_string(),
+ "zxc".blue().to_string(),
+ "asdasd".on_black().green().to_string(),
+ ];
+
+ let table = Matrix::iter(data)
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Width::truncate(4).suffix("...")))
+ .to_string();
+
+ assert_eq!(
+ ansi_str::AnsiStr::ansi_strip(&table),
+ static_table!(
+ "| S... |"
+ "|------|"
+ "| asd |"
+ "| zxc |"
+ "| a... |"
+ )
+ );
+
+ assert_eq!(
+ table,
+ "| S... |\n|------|\n| \u{1b}[31masd\u{1b}[39m |\n| \u{1b}[34mzxc\u{1b}[39m |\n| \u{1b}[32;40ma\u{1b}[39m\u{1b}[49m... |",
+ );
+}
+
+#[test]
+fn min_width() {
+ let mut table = Matrix::table(3, 3);
+ table
+ .with(Style::markdown())
+ .with(Modify::new(Rows::single(0)).with(MinWidth::new(12)));
+
+ assert_eq!(
+ table.to_string(),
+ static_table!(
+ "| N | column 0 | column 1 | column 2 |"
+ "|--------------|--------------|--------------|--------------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ ),
+ );
+
+ table.with(Modify::new(Segment::all()).with(TrimStrategy::None));
+
+ assert_eq!(
+ table.to_string(),
+ static_table!(
+ "| N | column 0 | column 1 | column 2 |"
+ "|--------------|--------------|--------------|--------------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ ),
+ );
+}
+
+#[test]
+fn min_width_with_filler() {
+ let table = Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Modify::new(Rows::single(0)).with(MinWidth::new(12).fill_with('.')))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| N........... | column 0.... | column 1.... | column 2.... |"
+ "|--------------|--------------|--------------|--------------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ )
+ );
+}
+
+#[test]
+fn min_width_one_column() {
+ let mut table = Matrix::table(3, 3);
+ table
+ .with(Style::markdown())
+ .with(Modify::new((0, 0)).with(MinWidth::new(5)));
+
+ assert_eq!(
+ table.to_string(),
+ static_table!(
+ "| N | column 0 | column 1 | column 2 |"
+ "|-------|----------|----------|----------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ )
+ );
+
+ table.with(Modify::new(Segment::all()).with(TrimStrategy::None));
+
+ assert_eq!(
+ table.to_string(),
+ static_table!(
+ "| N | column 0 | column 1 | column 2 |"
+ "|-------|----------|----------|----------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ )
+ );
+}
+
+#[test]
+fn min_width_on_smaller_content() {
+ assert_eq!(
+ Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Modify::new(Rows::single(0)).with(MinWidth::new(1)))
+ .to_string(),
+ Matrix::new(3, 3).with(Style::markdown()).to_string()
+ );
+}
+
+#[test]
+fn min_with_max_width() {
+ let mut table = Matrix::table(3, 3);
+ table
+ .with(Style::markdown())
+ .with(Modify::new(Rows::single(0)).with(MinWidth::new(3)))
+ .with(Modify::new(Rows::single(0)).with(Width::truncate(3)));
+
+ assert_eq!(
+ table.to_string(),
+ static_table!(
+ "| N | col | col | col |"
+ "|-----|-----|-----|-----|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ )
+ );
+
+ table.with(Modify::new(Segment::all()).with(TrimStrategy::None));
+
+ assert_eq!(
+ table.to_string(),
+ static_table!(
+ "| N | col | col | col |"
+ "|-----|-----|-----|-----|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ )
+ );
+}
+
+#[test]
+fn min_with_max_width_truncate_suffix() {
+ let mut table = Matrix::table(3, 3);
+ table
+ .with(Style::markdown())
+ .with(Modify::new(Rows::single(0)).with(MinWidth::new(3)))
+ .with(Modify::new(Rows::single(0)).with(Width::truncate(3).suffix("...")));
+
+ assert_eq!(
+ table.to_string(),
+ static_table!(
+ "| N | ... | ... | ... |"
+ "|-----|-----|-----|-----|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ )
+ );
+
+ table.with(Modify::new(Segment::all()).with(TrimStrategy::None));
+
+ assert_eq!(
+ table.to_string(),
+ static_table!(
+ "| N | ... | ... | ... |"
+ "|-----|-----|-----|-----|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ )
+ );
+}
+
+#[test]
+fn min_with_max_width_truncate_suffix_limit_replace() {
+ let table = Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(
+ Modify::new(Rows::single(0)).with(
+ Width::truncate(3)
+ .suffix("...")
+ .suffix_limit(SuffixLimit::Replace('x')),
+ ),
+ )
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | xxx | xxx | xxx |"
+ "|---|-----|-----|-----|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ )
+ );
+}
+
+#[test]
+fn min_with_max_width_truncate_suffix_limit_cut() {
+ let table = Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(
+ Modify::new(Rows::single(0)).with(
+ Width::truncate(3)
+ .suffix("qwert")
+ .suffix_limit(SuffixLimit::Cut),
+ ),
+ )
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | qwe | qwe | qwe |"
+ "|---|-----|-----|-----|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ )
+ );
+}
+
+#[test]
+fn min_with_max_width_truncate_suffix_limit_ignore() {
+ let table = Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(
+ Modify::new(Rows::single(0)).with(
+ Width::truncate(3)
+ .suffix("qwert")
+ .suffix_limit(SuffixLimit::Ignore),
+ ),
+ )
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | col | col | col |"
+ "|---|-----|-----|-----|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ )
+ );
+}
+
+#[cfg(feature = "color")]
+#[test]
+fn min_with_max_width_truncate_suffix_try_color() {
+ let data = &[
+ "asd".red().to_string(),
+ "zxc".blue().to_string(),
+ "asdasd".on_black().green().to_string(),
+ ];
+
+ let table = Matrix::iter(data)
+ .with(Style::markdown())
+ .with(Width::truncate(7).suffix("..").suffix_try_color(true))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| S.. |"
+ "|-----|"
+ "| \u{1b}[31masd\u{1b}[39m |"
+ "| \u{1b}[34mzxc\u{1b}[39m |"
+ "| \u{1b}[32;40ma\u{1b}[39m\u{1b}[49m\u{1b}[32m\u{1b}[40m..\u{1b}[39m\u{1b}[49m |"
+ )
+ );
+}
+
+#[cfg(feature = "color")]
+#[test]
+fn min_width_color() {
+ let data = &[
+ "asd".red().to_string(),
+ "zxc".blue().to_string(),
+ "asdasd".on_black().green().to_string(),
+ ];
+
+ let table = Matrix::iter(data)
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(MinWidth::new(10)))
+ .to_string();
+
+ assert_eq!(
+ ansi_str::AnsiStr::ansi_strip(&table),
+ static_table!(
+ "| String |"
+ "|------------|"
+ "| asd |"
+ "| zxc |"
+ "| asdasd |"
+ )
+ );
+
+ assert_eq!(
+ table,
+ "| String |\n|------------|\n| \u{1b}[31masd\u{1b}[39m |\n| \u{1b}[34mzxc\u{1b}[39m |\n| \u{1b}[32;40masdasd\u{1b}[0m |",
+ );
+}
+
+#[cfg(feature = "color")]
+#[test]
+fn min_width_color_with_smaller_then_width() {
+ let data = &[
+ "asd".red().to_string(),
+ "zxc".blue().to_string(),
+ "asdasd".on_black().green().to_string(),
+ ];
+
+ assert_eq!(
+ Matrix::iter(data)
+ .with(Modify::new(Segment::all()).with(MinWidth::new(1)))
+ .to_string(),
+ Matrix::iter(data).to_string()
+ );
+}
+
+#[test]
+fn total_width_big() {
+ let table = Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Width::truncate(80))
+ .with(MinWidth::new(80))
+ .to_string();
+
+ assert_eq!(string_width_multiline(&table), 80);
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | column 0 | column 1 | column 2 |"
+ "|--------------|---------------------|--------------------|--------------------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ )
+ );
+
+ let table = Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(TrimStrategy::None))
+ .with(Settings::new(Width::truncate(80), Width::increase(80)))
+ .to_string();
+
+ assert_eq!(string_width_multiline(&table), 80);
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | column 0 | column 1 | column 2 |"
+ "|--------------|---------------------|--------------------|--------------------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ )
+ );
+}
+
+#[test]
+fn total_width_big_with_panel() {
+ let table = Matrix::new(3, 3)
+ .with(Panel::horizontal(0, "Hello World"))
+ .with(
+ Modify::new(Segment::all())
+ .with(Alignment::center())
+ .with(Padding::zero()),
+ )
+ .with(Style::markdown())
+ .with(Width::truncate(80))
+ .with(MinWidth::new(80))
+ .to_string();
+
+ assert!(is_lines_equal(&table, 80));
+ assert_eq!(
+ table,
+ static_table!(
+ "| Hello World |"
+ "|--------------|---------------------|--------------------|--------------------|"
+ "| N | column 0 | column 1 | column 2 |"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ )
+ );
+}
+
+#[test]
+fn total_width_big_with_panel_with_wrapping_doesnt_affect_increase() {
+ let table1 = Matrix::new(3, 3)
+ .with(Panel::horizontal(0, "Hello World"))
+ .with(Modify::new(Segment::all()).with(Alignment::center()))
+ .with(Style::markdown())
+ .with(Width::wrap(80))
+ .with(MinWidth::new(80))
+ .to_string();
+
+ let table2 = Matrix::new(3, 3)
+ .with(Panel::horizontal(0, "Hello World"))
+ .with(Modify::new(Segment::all()).with(Alignment::center()))
+ .with(Style::markdown())
+ .with(Width::truncate(80))
+ .with(MinWidth::new(80))
+ .to_string();
+
+ assert_eq!(table1, table2);
+}
+
+#[test]
+fn total_width_small() {
+ let table = Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Width::truncate(14))
+ .with(MinWidth::new(14))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| | | | c |"
+ "|--|--|--|---|"
+ "| | | | 0 |"
+ "| | | | 1 |"
+ "| | | | 2 |"
+ )
+ );
+ assert!(is_lines_equal(&table, 14));
+}
+
+#[test]
+fn total_width_smaller_then_content() {
+ let table = Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Width::truncate(8))
+ .with(MinWidth::new(8))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| | | | |"
+ "|--|--|--|--|"
+ "| | | | |"
+ "| | | | |"
+ "| | | | |"
+ )
+ );
+}
+
+#[test]
+fn total_width_small_with_panel() {
+ let table = Matrix::new(3, 3)
+ .with(Modify::new(Segment::all()).with(Alignment::center()))
+ .with(Style::markdown())
+ .with(Width::truncate(20))
+ .with(MinWidth::new(20))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| | co | co | col |"
+ "|--|----|----|-----|"
+ "| | 0- | 0- | 0-2 |"
+ "| | 1- | 1- | 1-2 |"
+ "| | 2- | 2- | 2-2 |"
+ )
+ );
+ assert!(is_lines_equal(&table, 20));
+
+ let table = Matrix::iter(Vec::<usize>::new())
+ .with(Panel::horizontal(0, "Hello World"))
+ .with(
+ Modify::new(Segment::all())
+ .with(Alignment::center())
+ .with(Padding::zero()),
+ )
+ .with(Width::truncate(5))
+ .with(MinWidth::new(5))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!("+---+" "|Hel|" "+---+" "|usi|" "+---+")
+ );
+ assert!(is_lines_equal(&table, 5));
+
+ let table = Matrix::table(1, 2)
+ .with(Panel::horizontal(0, "Hello World"))
+ .with(Modify::new(Segment::all()).with(Alignment::center()))
+ .with(Style::markdown())
+ .with(Width::truncate(20))
+ .with(MinWidth::new(20))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| Hello World |"
+ "|--|-------|-------|"
+ "| | colum | colum |"
+ "| | 0-0 | 0-1 |"
+ )
+ );
+ assert!(is_lines_equal(&table, 20));
+
+ let table = Matrix::new(3, 3)
+ .with(Panel::horizontal(0, "Hello World"))
+ .with(Modify::new(Segment::all()).with(Alignment::center()))
+ .with(Style::markdown())
+ .with(Width::truncate(20))
+ .with(MinWidth::new(20))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| Hello World |"
+ "|--|----|----|-----|"
+ "| | co | co | col |"
+ "| | 0- | 0- | 0-2 |"
+ "| | 1- | 1- | 1-2 |"
+ "| | 2- | 2- | 2-2 |"
+ )
+ );
+ assert!(is_lines_equal(&table, 20));
+
+ let table = Matrix::new(3, 3)
+ .with(Panel::horizontal(0, "Hello World"))
+ .with(Modify::new(Segment::all()).with(Alignment::center()))
+ .with(Style::markdown())
+ .with(Width::truncate(6))
+ .with(MinWidth::new(6))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| Hello Wor |"
+ "|--|--|--|--|"
+ "| | | | |"
+ "| | | | |"
+ "| | | | |"
+ "| | | | |"
+ )
+ );
+ assert!(is_lines_equal(&table, 13));
+
+ let table = Matrix::new(3, 3)
+ .with(Panel::horizontal(0, "Hello World"))
+ .with(Modify::new(Segment::all()).with(Alignment::center()))
+ .with(Style::markdown())
+ .with(Width::truncate(14))
+ .with(MinWidth::new(14))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| Hello Worl |"
+ "|--|--|--|---|"
+ "| | | | c |"
+ "| | | | 0 |"
+ "| | | | 1 |"
+ "| | | | 2 |"
+ )
+ );
+ assert!(is_lines_equal(&table, 14));
+
+ let table = Matrix::new(3, 3)
+ .with(Panel::horizontal(0, "Hello World 123"))
+ .with(Modify::new(Segment::all()).with(Alignment::center()))
+ .with(Style::markdown())
+ .with(Width::truncate(14))
+ .with(MinWidth::new(14))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| Hello Worl |"
+ "|--|--|--|---|"
+ "| | | | c |"
+ "| | | | 0 |"
+ "| | | | 1 |"
+ "| | | | 2 |"
+ )
+ );
+ assert!(is_lines_equal(&table, 14));
+}
+
+#[cfg(feature = "color")]
+#[test]
+fn total_width_wrapping() {
+ let table = Matrix::new(3, 3)
+ .with(Modify::new(Segment::all()).with(Alignment::center()))
+ .with(Style::markdown())
+ .with(Width::wrap(20))
+ .with(MinWidth::new(20))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| | co | co | col |"
+ "| | lu | lu | umn |"
+ "| | mn | mn | 2 |"
+ "| | 0 | 1 | |"
+ "|--|----|----|-----|"
+ "| | 0- | 0- | 0-2 |"
+ "| | 0 | 1 | |"
+ "| | 1- | 1- | 1-2 |"
+ "| | 0 | 1 | |"
+ "| | 2- | 2- | 2-2 |"
+ "| | 0 | 1 | |"
+ )
+ );
+ assert!(is_lines_equal(&table, 20));
+
+ let table = Matrix::new(3, 3)
+ .insert((3, 2), "some loong string")
+ .with(Modify::new(Segment::all()).with(Alignment::center()))
+ .with(Style::markdown())
+ .with(Width::wrap(20).keep_words())
+ .with(MinWidth::new(20))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| | | column | |"
+ "| | | 1 | |"
+ "|--|--|---------|--|"
+ "| | | 0-1 | |"
+ "| | | 1-1 | |"
+ "| | | some | |"
+ "| | | loong | |"
+ "| | | string | |"
+ )
+ );
+ assert!(is_lines_equal(&table, 20));
+}
+
+#[test]
+fn total_width_small_with_panel_using_wrapping() {
+ let table = Matrix::new(3, 3)
+ .with(Panel::horizontal(0, "Hello World"))
+ .with(Modify::new(Segment::all()).with(Alignment::center()))
+ .with(Style::markdown())
+ .with(Width::wrap(20))
+ .with(MinWidth::new(20))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| Hello World |"
+ "|--|----|----|-----|"
+ "| | co | co | col |"
+ "| | lu | lu | umn |"
+ "| | mn | mn | 2 |"
+ "| | 0 | 1 | |"
+ "| | 0- | 0- | 0-2 |"
+ "| | 0 | 1 | |"
+ "| | 1- | 1- | 1-2 |"
+ "| | 0 | 1 | |"
+ "| | 2- | 2- | 2-2 |"
+ "| | 0 | 1 | |"
+ )
+ );
+ assert!(is_lines_equal(&table, 20));
+
+ let table = Matrix::new(3, 3)
+ .with(Panel::horizontal(0, "Hello World"))
+ .with(Modify::new(Segment::all()).with(Alignment::center()))
+ .with(Style::markdown())
+ .with(Width::wrap(14))
+ .with(MinWidth::new(14))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| Hello Worl |"
+ "| d |"
+ "|--|--|--|---|"
+ "| | | | c |"
+ "| | | | o |"
+ "| | | | l |"
+ "| | | | u |"
+ "| | | | m |"
+ "| | | | n |"
+ "| | | | |"
+ "| | | | 2 |"
+ "| | | | 0 |"
+ "| | | | - |"
+ "| | | | 2 |"
+ "| | | | 1 |"
+ "| | | | - |"
+ "| | | | 2 |"
+ "| | | | 2 |"
+ "| | | | - |"
+ "| | | | 2 |"
+ )
+ );
+ assert!(is_lines_equal(&table, 14));
+
+ let table = Matrix::new(3, 3)
+ .with(Panel::horizontal(0, "Hello World 123"))
+ .with(Modify::new(Segment::all()).with(Alignment::center()))
+ .with(Style::markdown())
+ .with(Width::wrap(14))
+ .with(MinWidth::new(14))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| Hello Worl |"
+ "| d 123 |"
+ "|--|--|--|---|"
+ "| | | | c |"
+ "| | | | o |"
+ "| | | | l |"
+ "| | | | u |"
+ "| | | | m |"
+ "| | | | n |"
+ "| | | | |"
+ "| | | | 2 |"
+ "| | | | 0 |"
+ "| | | | - |"
+ "| | | | 2 |"
+ "| | | | 1 |"
+ "| | | | - |"
+ "| | | | 2 |"
+ "| | | | 2 |"
+ "| | | | - |"
+ "| | | | 2 |"
+ )
+ );
+ assert!(is_lines_equal(&table, 14));
+}
+
+#[test]
+fn max_width_with_span() {
+ let mut table = Matrix::new(3, 3).insert((1, 1), "a long string").to_table();
+ table
+ .with(Style::psql())
+ .with(Modify::new((1, 1)).with(Span::column(2)))
+ .with(Modify::new((2, 2)).with(Span::column(2)));
+
+ table.with(Width::truncate(40));
+
+ assert_eq!(
+ table.to_string(),
+ static_table!(
+ " N | column 0 | column 1 | column 2 "
+ "---+----------+----------+----------"
+ " 0 | a long string | 0-2 "
+ " 1 | 1-0 | 1-1 "
+ " 2 | 2-0 | 2-1 | 2-2 "
+ )
+ );
+ assert!(is_lines_equal(&table.to_string(), 36));
+
+ table.with(Width::truncate(20));
+
+ assert_eq!(
+ table.to_string(),
+ static_table!(
+ " | col | col | col "
+ "--+-----+-----+-----"
+ " | a long st | 0-2 "
+ " | 1-0 | 1-1 "
+ " | 2-0 | 2-1 | 2-2 "
+ )
+ );
+ assert!(is_lines_equal(&table.to_string(), 20));
+
+ table.with(Width::truncate(10));
+
+ assert_eq!(
+ table.to_string(),
+ static_table!(
+ " | | | "
+ "--+--+--+--"
+ " | a l | "
+ " | | 1-1 "
+ " | | | "
+ )
+ );
+ assert!(is_lines_equal(&table.to_string(), 11));
+}
+
+#[test]
+fn min_width_works_with_right_alignment() {
+ let json = r#"
+ {
+ "some": "random",
+ "json": [
+ { "1": "2" },
+ { "1": "2" },
+ { "1": "2" }
+ ]
+ }
+ "#;
+
+ let mut table = Matrix::iter([json]);
+ table
+ .with(Style::markdown())
+ .with(
+ Modify::new(Segment::all())
+ .with(Alignment::right())
+ .with(TrimStrategy::None),
+ )
+ .with(MinWidth::new(50));
+
+ assert_eq!(string_width_multiline(&table.to_string()), 50);
+ assert_eq!(
+ table.to_string(),
+ static_table!(
+ "| &str |"
+ "|------------------------------------------------|"
+ "| |"
+ "| { |"
+ "| \"some\": \"random\", |"
+ "| \"json\": [ |"
+ "| { \"1\": \"2\" }, |"
+ "| { \"1\": \"2\" }, |"
+ "| { \"1\": \"2\" } |"
+ "| ] |"
+ "| } |"
+ "| |"
+ )
+ );
+
+ table
+ .with(Modify::new(Segment::all()).with(TrimStrategy::Horizontal))
+ .with(MinWidth::new(50));
+
+ assert_eq!(
+ table.to_string(),
+ static_table!(
+ r#"| &str |"#
+ r#"|------------------------------------------------|"#
+ r#"| |"#
+ r#"| { |"#
+ r#"| "some": "random", |"#
+ r#"| "json": [ |"#
+ r#"| { "1": "2" }, |"#
+ r#"| { "1": "2" }, |"#
+ r#"| { "1": "2" } |"#
+ r#"| ] |"#
+ r#"| } |"#
+ r#"| |"#
+ )
+ );
+ assert!(is_lines_equal(&table.to_string(), 50));
+
+ table
+ .with(Modify::new(Segment::all()).with(TrimStrategy::Both))
+ .with(MinWidth::new(50));
+
+ assert_eq!(
+ table.to_string(),
+ static_table!(
+ r#"| &str |"#
+ r#"|------------------------------------------------|"#
+ r#"| { |"#
+ r#"| "some": "random", |"#
+ r#"| "json": [ |"#
+ r#"| { "1": "2" }, |"#
+ r#"| { "1": "2" }, |"#
+ r#"| { "1": "2" } |"#
+ r#"| ] |"#
+ r#"| } |"#
+ r#"| |"#
+ r#"| |"#
+ )
+ );
+ assert!(is_lines_equal(&table.to_string(), 50));
+
+ let mut table = Matrix::iter([json]);
+ table
+ .with(Style::markdown())
+ .with(
+ Modify::new(Segment::all())
+ .with(Alignment::center())
+ .with(TrimStrategy::None),
+ )
+ .with(MinWidth::new(50));
+
+ assert_eq!(
+ table.to_string(),
+ static_table!(
+ "| &str |"
+ "|------------------------------------------------|"
+ "| |"
+ "| { |"
+ "| \"some\": \"random\", |"
+ "| \"json\": [ |"
+ "| { \"1\": \"2\" }, |"
+ "| { \"1\": \"2\" }, |"
+ "| { \"1\": \"2\" } |"
+ "| ] |"
+ "| } |"
+ "| |"
+ )
+ );
+ assert_eq!(string_width_multiline(&table.to_string()), 50);
+
+ table
+ .with(Modify::new(Segment::all()).with(TrimStrategy::Horizontal))
+ .with(MinWidth::new(50));
+
+ assert_eq!(
+ table.to_string(),
+ static_table!(
+ r#"| &str |"#
+ r#"|------------------------------------------------|"#
+ r#"| |"#
+ r#"| { |"#
+ r#"| "some": "random", |"#
+ r#"| "json": [ |"#
+ r#"| { "1": "2" }, |"#
+ r#"| { "1": "2" }, |"#
+ r#"| { "1": "2" } |"#
+ r#"| ] |"#
+ r#"| } |"#
+ r#"| |"#
+ )
+ );
+ assert!(is_lines_equal(&table.to_string(), 50));
+
+ table
+ .with(Modify::new(Segment::all()).with(TrimStrategy::Both))
+ .with(MinWidth::new(50));
+
+ assert_eq!(
+ table.to_string(),
+ static_table!(
+ r#"| &str |"#
+ r#"|------------------------------------------------|"#
+ r#"| { |"#
+ r#"| "some": "random", |"#
+ r#"| "json": [ |"#
+ r#"| { "1": "2" }, |"#
+ r#"| { "1": "2" }, |"#
+ r#"| { "1": "2" } |"#
+ r#"| ] |"#
+ r#"| } |"#
+ r#"| |"#
+ r#"| |"#
+ )
+ );
+ assert!(is_lines_equal(&table.to_string(), 50));
+}
+
+#[test]
+fn min_width_with_span_1() {
+ let data = [
+ ["0", "1"],
+ ["a long string which will affect min width logic", ""],
+ ["2", "3"],
+ ];
+
+ let table = Matrix::iter(data)
+ .with(Style::markdown())
+ .with(Modify::new((1, 0)).with(Span::column(2)))
+ .with(MinWidth::new(100))
+ .to_string();
+
+ assert_eq!(string_width_multiline(&table), 100);
+ assert_eq!(
+ table,
+ static_table!(
+ "| 0 | 1 |"
+ "|------------------------------------------------------------------------|-------------------------|"
+ "| 0 |"
+ "| a long string which will affect min width logic | |"
+ "| 2 | 3 |"
+ )
+ );
+ assert!(is_lines_equal(&table, 100));
+}
+
+#[test]
+fn min_width_with_span_2() {
+ let data = [
+ ["0", "1"],
+ ["a long string which will affect min width logic", ""],
+ ["2", "3"],
+ ];
+
+ let table = Matrix::iter(data)
+ .with(Style::markdown())
+ .with(Modify::new((2, 0)).with(Span::column(2)))
+ .with(MinWidth::new(100))
+ .to_string();
+
+ assert_eq!(string_width_multiline(&table), 100);
+ assert_eq!(
+ table,
+ static_table!(
+ "| 0 | 1 |"
+ "|-------------------------------------------------|------------------------------------------------|"
+ "| 0 | 1 |"
+ "| a long string which will affect min width logic |"
+ "| 2 | 3 |"
+ )
+ );
+}
+
+#[test]
+fn justify_width_constant_test() {
+ let table = Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Justify::new(3))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | col | col | col |"
+ "|-----|-----|-----|-----|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ )
+ );
+}
+
+#[test]
+fn justify_width_constant_different_sizes_test() {
+ let table = Matrix::new(3, 3)
+ .insert((1, 1), "Hello World")
+ .insert((3, 2), "multi\nline string\n")
+ .with(Style::markdown())
+ .with(Justify::new(3))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | col | col | col |"
+ "|-----|-----|-----|-----|"
+ "| 0 | Hel | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | mul | 2-2 |"
+ )
+ );
+}
+
+#[test]
+fn justify_width_constant_0_test() {
+ let table = Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Justify::new(0))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| | | | |"
+ "|--|--|--|--|"
+ "| | | | |"
+ "| | | | |"
+ "| | | | |"
+ )
+ );
+}
+
+#[test]
+fn justify_width_min_test() {
+ let table = Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Justify::min())
+ .to_string();
+
+ println!("{table}");
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | c | c | c |"
+ "|---|---|---|---|"
+ "| 0 | 0 | 0 | 0 |"
+ "| 1 | 1 | 1 | 1 |"
+ "| 2 | 2 | 2 | 2 |"
+ )
+ );
+}
+
+#[test]
+fn justify_width_max_test() {
+ let table = Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Justify::max())
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | column 0 | column 1 | column 2 |"
+ "|----------|----------|----------|----------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ )
+ );
+}
+
+#[test]
+fn max_width_when_cell_has_tabs() {
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "\tHello\tWorld\t")
+ .with(TabSize::new(4))
+ .with(Style::markdown())
+ .with(Modify::new(Columns::new(..)).with(Width::truncate(1)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | c | c | c |"
+ "|---|---|---|---|"
+ "| 0 | 0 | 0 | 0 |"
+ "| 1 | | 1 | 1 |"
+ "| 2 | 2 | 2 | 2 |"
+ )
+ );
+}
+
+#[test]
+fn max_width_table_when_cell_has_tabs() {
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "\tHello\tWorld\t")
+ .with(TabSize::new(4))
+ .with(Style::markdown())
+ .with(Width::truncate(15))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| | co | | |"
+ "|--|----|--|--|"
+ "| | 0- | | |"
+ "| | | | |"
+ "| | 2- | | |"
+ )
+ );
+}
+
+// WE GOT [["", "column 0", "column 1 ", "column 2 "], ["", "0-0 ", "0-1 ", "0-2 "], ["", "Hello World With Big Line; Here w", "1-1", "1-2"], ["", "2-0 ", "Hello World With Big L", "2-2"]]
+// [2, 10, 11, 12]
+// 40 55 40
+
+// BEFORE ADJ [2, 10, 11, 12]
+
+// WE GOT [["", "column 0", "column 1", "column 2"], ["", "0-0", "0-1", "0-2"], ["", "Hello World With Big Line; Here w", "1-1", "1-2"], ["", "2-0", "Hello World With Big L", "2-2"]]
+// [2, 11, 12, 11]
+// 41 55 40
+
+// adj [2, 10, 10, 10]
+
+#[test]
+fn max_width_truncate_with_big_span() {
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "Hello World With Big Line; Here we gooooooo")
+ .with(Style::markdown())
+ .with(Modify::new((2, 1)).with(Span::column(3)))
+ .with(Width::truncate(40))
+ .to_string();
+
+ assert_eq!(string_width_multiline(&table), 40);
+ assert_eq!(
+ table,
+ static_table!(
+ "| | column 0 | column 1 | column 2 |"
+ "|--|-----------|-----------|-----------|"
+ "| | 0-0 | 0-1 | 0-2 |"
+ "| | Hello World With Big Line; Here w |"
+ "| | 2-0 | 2-1 | 2-2 |"
+ )
+ );
+
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "Hello World With Big Line; Here we gooooooo")
+ .insert((3, 2), "Hello World With Big Line; Here")
+ .with(Style::markdown())
+ .with(Modify::new((2, 1)).with(Span::column(3)))
+ .with(Modify::new((3, 2)).with(Span::column(2)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | column 0 | column 1 | column 2 |"
+ "|---|-----------|----------------|----------------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | Hello World With Big Line; Here we gooooooo |"
+ "| 2 | 2-0 | Hello World With Big Line; Here |"
+ )
+ );
+
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "Hello World With Big Line; Here we gooooooo")
+ .insert((3, 2), "Hello World With Big Line; Here")
+ .with(Style::markdown())
+ .with(Modify::new((2, 1)).with(Span::column(3)))
+ .with(Modify::new((3, 2)).with(Span::column(2)))
+ .with(Width::truncate(40))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| | colum | column 1 | column 2 |"
+ "|--|-------|-------------|-------------|"
+ "| | 0-0 | 0-1 | 0-2 |"
+ "| | Hello World With Big Line; Here w |"
+ "| | 2-0 | Hello World With Big Line |"
+ )
+ );
+ assert_eq!(string_width_multiline(&table), 40);
+
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "Hello World With Big Line; Here we gooooooo")
+ .insert((3, 2), "Hello World With Big Line; Here")
+ .with(Style::markdown())
+ .with(Modify::new((2, 1)).with(Span::column(2)))
+ .with(Modify::new((3, 2)).with(Span::column(2)))
+ .with(Width::truncate(40))
+ .to_string();
+
+ assert_eq!(string_width_multiline(&table), 40);
+ assert_eq!(
+ table,
+ static_table!(
+ "| | column 0 | column 1 | c |"
+ "|--|---------------|---------------|---|"
+ "| | 0-0 | 0-1 | 0 |"
+ "| | Hello World With Big Line; He | 1 |"
+ "| | 2-0 | Hello World With |"
+ )
+ );
+
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "Hello World With Big Line; Here w")
+ .insert((3, 2), "Hello World With Big L")
+ .with(Style::markdown())
+ .with(Modify::new((2, 1)).with(Span::column(3)))
+ .with(Modify::new((3, 2)).with(Span::column(2)))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | column 0 | column 1 | column 2 |"
+ "|---|----------|------------|-----------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | Hello World With Big Line; Here w |"
+ "| 2 | 2-0 | Hello World With Big L |"
+ )
+ );
+}
+
+#[test]
+fn max_width_truncate_priority_max() {
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "Hello World With Big Line")
+ .with(Style::markdown())
+ .with(Width::truncate(35).priority::<PriorityMax>())
+ .to_string();
+
+ assert!(is_lines_equal(&table, 35));
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | column | column | column |"
+ "|---|---------|---------|---------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | Hello W | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ )
+ );
+
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "Hello World With Big Line")
+ .with(Style::markdown())
+ .with(Width::truncate(20).priority::<PriorityMax>())
+ .to_string();
+
+ assert!(is_lines_equal(&table, 20));
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | co | co | co |"
+ "|---|----|----|----|"
+ "| 0 | 0- | 0- | 0- |"
+ "| 1 | He | 1- | 1- |"
+ "| 2 | 2- | 2- | 2- |"
+ )
+ );
+
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "Hello World With Big Line")
+ .with(Style::markdown())
+ .with(Width::truncate(0).priority::<PriorityMax>())
+ .to_string();
+
+ assert!(is_lines_equal(&table, 13));
+ assert_eq!(
+ table,
+ static_table!(
+ "| | | | |"
+ "|--|--|--|--|"
+ "| | | | |"
+ "| | | | |"
+ "| | | | |"
+ )
+ );
+}
+
+#[test]
+fn max_width_truncate_priority_max_with_span() {
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "Hello World With Big Line")
+ .with(Style::markdown())
+ .with(Modify::new((2, 1)).with(Span::column(2)))
+ .with(Width::truncate(15).priority::<PriorityMax>())
+ .to_string();
+
+ assert!(is_lines_equal(&table, 15));
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | c | | |"
+ "|---|---|--|--|"
+ "| 0 | 0 | | |"
+ "| 1 | Hell | |"
+ "| 2 | 2 | | |"
+ )
+ );
+}
+
+#[test]
+fn max_width_wrap_priority_max() {
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "Hello World With Big Line")
+ .with(Style::markdown())
+ .with(Width::wrap(35).priority::<PriorityMax>())
+ .to_string();
+
+ assert!(is_lines_equal(&table, 35));
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | column | column | column |"
+ "| | 0 | 1 | 2 |"
+ "|---|---------|---------|---------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | Hello W | 1-1 | 1-2 |"
+ "| | orld Wi | | |"
+ "| | th Big | | |"
+ "| | Line | | |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ )
+ );
+
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "Hello World With Big Line")
+ .with(Style::markdown())
+ .with(Width::wrap(20).priority::<PriorityMax>())
+ .to_string();
+
+ assert!(is_lines_equal(&table, 20));
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | co | co | co |"
+ "| | lu | lu | lu |"
+ "| | mn | mn | mn |"
+ "| | 0 | 1 | 2 |"
+ "|---|----|----|----|"
+ "| 0 | 0- | 0- | 0- |"
+ "| | 0 | 1 | 2 |"
+ "| 1 | He | 1- | 1- |"
+ "| | ll | 1 | 2 |"
+ "| | o | | |"
+ "| | Wo | | |"
+ "| | rl | | |"
+ "| | d | | |"
+ "| | Wi | | |"
+ "| | th | | |"
+ "| | B | | |"
+ "| | ig | | |"
+ "| | L | | |"
+ "| | in | | |"
+ "| | e | | |"
+ "| 2 | 2- | 2- | 2- |"
+ "| | 0 | 1 | 2 |"
+ )
+ );
+
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "Hello World With Big Line")
+ .with(Style::markdown())
+ .with(Width::wrap(0).priority::<PriorityMax>())
+ .to_string();
+
+ assert!(is_lines_equal(&table, 13));
+ assert_eq!(
+ table,
+ static_table!(
+ "| | | | |"
+ "|--|--|--|--|"
+ "| | | | |"
+ "| | | | |"
+ "| | | | |"
+ )
+ );
+}
+
+#[test]
+fn max_width_wrap_priority_max_with_span() {
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "Hello World With Big Line")
+ .with(Style::markdown())
+ .with(Modify::new((2, 1)).with(Span::column(2)))
+ .with(Width::wrap(15).priority::<PriorityMax>())
+ .to_string();
+
+ assert!(is_lines_equal(&table, 15));
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | c | | |"
+ "| | o | | |"
+ "| | l | | |"
+ "| | u | | |"
+ "| | m | | |"
+ "| | n | | |"
+ "| | | | |"
+ "| | 0 | | |"
+ "|---|---|--|--|"
+ "| 0 | 0 | | |"
+ "| | - | | |"
+ "| | 0 | | |"
+ "| 1 | Hell | |"
+ "| | o Wo | |"
+ "| | rld | |"
+ "| | With | |"
+ "| | Big | |"
+ "| | Lin | |"
+ "| | e | |"
+ "| 2 | 2 | | |"
+ "| | - | | |"
+ "| | 0 | | |"
+ )
+ );
+}
+
+#[test]
+fn max_width_truncate_priority_min() {
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "Hello World With Big Line")
+ .with(Style::markdown())
+ .with(Width::truncate(35).priority::<PriorityMin>())
+ .to_string();
+
+ assert!(is_lines_equal(&table, 35));
+ assert_eq!(
+ table,
+ static_table!(
+ "| | column 0 | | |"
+ "|--|------------------------|--|--|"
+ "| | 0-0 | | |"
+ "| | Hello World With Big L | | |"
+ "| | 2-0 | | |"
+ )
+ );
+
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "Hello World With Big Line")
+ .with(Style::markdown())
+ .with(Width::truncate(20).priority::<PriorityMin>())
+ .to_string();
+
+ assert!(is_lines_equal(&table, 20));
+ assert_eq!(
+ table,
+ static_table!(
+ "| | column | | |"
+ "|--|---------|--|--|"
+ "| | 0-0 | | |"
+ "| | Hello W | | |"
+ "| | 2-0 | | |"
+ )
+ );
+
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "Hello World With Big Line")
+ .with(Style::markdown())
+ .with(Width::truncate(0).priority::<PriorityMin>())
+ .to_string();
+
+ assert!(is_lines_equal(&table, 13));
+ assert_eq!(
+ table,
+ static_table!(
+ "| | | | |"
+ "|--|--|--|--|"
+ "| | | | |"
+ "| | | | |"
+ "| | | | |"
+ )
+ );
+}
+
+#[test]
+fn max_width_truncate_priority_min_with_span() {
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "Hello World With Big Line")
+ .with(Style::markdown())
+ .with(Modify::new((2, 1)).with(Span::column(2)))
+ .with(Width::truncate(15).priority::<PriorityMin>())
+ .to_string();
+
+ assert!(is_lines_equal(&table, 15));
+ assert_eq!(
+ table,
+ static_table!(
+ "| | | co | |"
+ "|--|--|----|--|"
+ "| | | 0- | |"
+ "| | Hello | |"
+ "| | | 2- | |"
+ )
+ );
+
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "Hello World With Big Line")
+ .with(Style::markdown())
+ .with(Modify::new((2, 1)).with(Span::column(2)))
+ .with(Width::truncate(17).priority::<PriorityMin>())
+ .to_string();
+
+ assert!(is_lines_equal(&table, 17));
+ assert_eq!(
+ table,
+ static_table!(
+ "| | | colu | |"
+ "|--|--|------|--|"
+ "| | | 0-1 | |"
+ "| | Hello W | |"
+ "| | | 2-1 | |"
+ )
+ );
+}
+
+#[test]
+fn max_width_wrap_priority_min() {
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "Hello World With Big Line")
+ .with(Style::markdown())
+ .with(Width::wrap(35).priority::<PriorityMin>())
+ .to_string();
+
+ assert!(is_lines_equal(&table, 35));
+ assert_eq!(
+ table,
+ static_table!(
+ "| | column 0 | | |"
+ "|--|------------------------|--|--|"
+ "| | 0-0 | | |"
+ "| | Hello World With Big L | | |"
+ "| | ine | | |"
+ "| | 2-0 | | |"
+ )
+ );
+
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "Hello World With Big Line")
+ .with(Style::markdown())
+ .with(Width::wrap(20).priority::<PriorityMin>())
+ .to_string();
+
+ assert!(is_lines_equal(&table, 20));
+ assert_eq!(
+ table,
+ static_table!(
+ "| | column | | |"
+ "| | 0 | | |"
+ "|--|---------|--|--|"
+ "| | 0-0 | | |"
+ "| | Hello W | | |"
+ "| | orld Wi | | |"
+ "| | th Big | | |"
+ "| | Line | | |"
+ "| | 2-0 | | |"
+ )
+ );
+
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "Hello World With Big Line")
+ .with(Style::markdown())
+ .with(Width::wrap(0).priority::<PriorityMin>())
+ .to_string();
+
+ assert!(is_lines_equal(&table, 13));
+ assert_eq!(
+ table,
+ static_table!(
+ "| | | | |"
+ "|--|--|--|--|"
+ "| | | | |"
+ "| | | | |"
+ "| | | | |"
+ )
+ );
+}
+
+#[test]
+fn max_width_wrap_priority_min_with_span() {
+ let table = Matrix::new(3, 3)
+ .insert((2, 1), "Hello World With Big Line")
+ .with(Style::markdown())
+ .with(Modify::new((2, 1)).with(Span::column(2)))
+ .with(Width::wrap(15).priority::<PriorityMin>())
+ .to_string();
+
+ assert!(is_lines_equal(&table, 15));
+ assert_eq!(
+ table,
+ static_table!(
+ "| | | co | |"
+ "| | | lu | |"
+ "| | | mn | |"
+ "| | | 1 | |"
+ "|--|--|----|--|"
+ "| | | 0- | |"
+ "| | | 1 | |"
+ "| | Hello | |"
+ "| | Worl | |"
+ "| | d Wit | |"
+ "| | h Big | |"
+ "| | Line | |"
+ "| | | 2- | |"
+ "| | | 1 | |"
+ )
+ );
+}
+
+#[test]
+fn min_width_priority_max() {
+ let table = Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(MinWidth::new(60).priority::<PriorityMax>())
+ .to_string();
+
+ assert_eq!(string_width_multiline(&table), 60);
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | column 0 | column 1 | column 2 |"
+ "|---|----------|----------|--------------------------------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ ),
+ );
+}
+
+#[test]
+fn min_width_priority_min() {
+ let table = Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(MinWidth::new(60).priority::<PriorityMin>())
+ .to_string();
+
+ assert_eq!(string_width_multiline(&table), 60);
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | column 0 | column 1 | column 2 |"
+ "|--------------|--------------|--------------|-------------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ ),
+ );
+}
+
+#[test]
+fn max_width_tab_0() {
+ let table =
+ Matrix::iter(["\t\tTigre Ecuador\tOMYA Andina\t3824909999\tCalcium carbonate\tColombia\t"])
+ .with(TabSize::new(4))
+ .with(Style::markdown())
+ .with(Width::wrap(60))
+ .to_string();
+
+ assert!(is_lines_equal(&table, 60));
+ assert_eq!(
+ table,
+ static_table!(
+ "| &str |"
+ "|----------------------------------------------------------|"
+ "| Tigre Ecuador OMYA Andina 3824909999 Ca |"
+ "| lcium carbonate Colombia |"
+ )
+ );
+}
+
+#[test]
+fn min_width_is_not_used_after_padding() {
+ let table = Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(MinWidth::new(60))
+ .with(Modify::new((0, 0)).with(Padding::new(2, 2, 0, 0)))
+ .to_string();
+
+ assert_eq!(string_width_multiline(&table), 40);
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | column 0 | column 1 | column 2 |"
+ "|-----|----------|----------|----------|"
+ "| 0 | 0-0 | 0-1 | 0-2 |"
+ "| 1 | 1-0 | 1-1 | 1-2 |"
+ "| 2 | 2-0 | 2-1 | 2-2 |"
+ ),
+ );
+}
+
+#[test]
+fn min_width_is_used_after_margin() {
+ let table = Matrix::new(3, 3)
+ .with(Style::markdown())
+ .with(Margin::new(1, 1, 1, 1))
+ .with(Width::increase(60))
+ .to_string();
+
+ assert_eq!(string_width_multiline(&table), 60);
+ assert_eq!(
+ table,
+ static_table!(
+ " "
+ " | N | column 0 | column 1 | column 2 | "
+ " |--------|---------------|---------------|---------------| "
+ " | 0 | 0-0 | 0-1 | 0-2 | "
+ " | 1 | 1-0 | 1-1 | 1-2 | "
+ " | 2 | 2-0 | 2-1 | 2-2 | "
+ " "
+ ),
+ );
+}
+
+#[test]
+fn wrap_keeping_words_0() {
+ let data = vec![["Hello world"]];
+ let table = tabled::Table::new(data)
+ .with(Width::wrap(8).keep_words())
+ .to_string();
+
+ assert_eq!(
+ tabled::grid::util::string::string_width_multiline(&table),
+ 8
+ );
+
+ assert_eq!(
+ table,
+ static_table!(
+ "+------+"
+ "| 0 |"
+ "+------+"
+ "| Hell |"
+ "| o wo |"
+ "| rld |"
+ "+------+"
+ )
+ );
+}
+
+#[test]
+fn cell_truncate_multiline() {
+ let table = Matrix::new(3, 3)
+ .insert((1, 1), "H\nel\nlo World")
+ .insert((3, 2), "multi\nline string\n")
+ .with(Style::markdown())
+ .with(
+ Modify::new(Columns::new(1..2).not(Rows::single(0)))
+ .with(Width::truncate(1).multiline()),
+ )
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | column 0 | column 1 | column 2 |"
+ "|---|----------|-------------|----------|"
+ "| 0 | H | 0-1 | 0-2 |"
+ "| | e | | |"
+ "| | l | | |"
+ "| 1 | 1 | 1-1 | 1-2 |"
+ "| 2 | 2 | multi | 2-2 |"
+ "| | | line string | |"
+ "| | | | |"
+ )
+ );
+}
+
+#[test]
+fn cell_truncate_multiline_with_suffix() {
+ let table = Matrix::new(3, 3)
+ .insert((1, 1), "H\nel\nlo World")
+ .insert((3, 2), "multi\nline string\n")
+ .with(Style::markdown())
+ .with(
+ Modify::new(Columns::new(1..2).not(Rows::single(0)))
+ .with(Width::truncate(1).multiline().suffix(".")),
+ )
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| N | column 0 | column 1 | column 2 |"
+ "|---|----------|-------------|----------|"
+ "| 0 | . | 0-1 | 0-2 |"
+ "| | . | | |"
+ "| | . | | |"
+ "| 1 | . | 1-1 | 1-2 |"
+ "| 2 | . | multi | 2-2 |"
+ "| | | line string | |"
+ "| | | | |"
+ )
+ );
+}
+
+#[test]
+fn table_truncate_multiline() {
+ let table = Matrix::new(3, 3)
+ .insert((1, 1), "H\nel\nlo World")
+ .insert((3, 2), "multi\nline string\n")
+ .with(Style::markdown())
+ .with(Width::truncate(20).multiline())
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| | c | colu | co |"
+ "|--|---|------|----|"
+ "| | H | 0-1 | 0- |"
+ "| | e | | |"
+ "| | l | | |"
+ "| | 1 | 1-1 | 1- |"
+ "| | 2 | mult | 2- |"
+ "| | | line | |"
+ "| | | | |"
+ )
+ );
+}
+
+#[test]
+fn table_truncate_multiline_with_suffix() {
+ let table = Matrix::new(3, 3)
+ .insert((1, 1), "H\nel\nlo World")
+ .insert((3, 2), "multi\nline string\n")
+ .with(Style::markdown())
+ .with(Width::truncate(20).suffix(".").multiline())
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| | . | col. | c. |"
+ "|--|---|------|----|"
+ "| | . | 0-1 | 0. |"
+ "| | . | | |"
+ "| | . | | |"
+ "| | . | 1-1 | 1. |"
+ "| | . | mul. | 2. |"
+ "| | | lin. | |"
+ "| | | . | |"
+ )
+ );
+}
+
+#[cfg(feature = "derive")]
+mod derived {
+ use super::*;
+
+ use tabled::Tabled;
+
+ #[test]
+ fn wrapping_as_total_multiline() {
+ #[derive(Tabled)]
+ struct D<'a>(
+ #[tabled(rename = "version")] &'a str,
+ #[tabled(rename = "published_date")] &'a str,
+ #[tabled(rename = "is_active")] &'a str,
+ #[tabled(rename = "major_feature")] &'a str,
+ );
+
+ let data = vec![
+ D("0.2.1", "2021-06-23", "true", "#[header(inline)] attribute"),
+ D("0.2.0", "2021-06-19", "false", "API changes"),
+ D("0.1.4", "2021-06-07", "false", "display_with attribute"),
+ ];
+
+ let table = Matrix::iter(&data)
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Width::wrap(57))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| ver | published_d | is_act | major_feature |"
+ "| sio | ate | ive | |"
+ "| n | | | |"
+ "|-----|-------------|--------|--------------------------|"
+ "| 0.2 | 2021-06-23 | true | #[header(inline)] attrib |"
+ "| .1 | | | ute |"
+ "| 0.2 | 2021-06-19 | false | API changes |"
+ "| .0 | | | |"
+ "| 0.1 | 2021-06-07 | false | display_with attribute |"
+ "| .4 | | | |"
+ )
+ );
+ assert!(is_lines_equal(&table, 57));
+
+ let table = Matrix::iter(&data)
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Width::wrap(57).keep_words())
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| ver | published_d | is_act | major_feature |"
+ "| sio | ate | ive | |"
+ "| n | | | |"
+ "|-----|-------------|--------|--------------------------|"
+ "| 0.2 | 2021-06-23 | true | #[header(inline)] |"
+ "| .1 | | | attribute |"
+ "| 0.2 | 2021-06-19 | false | API changes |"
+ "| .0 | | | |"
+ "| 0.1 | 2021-06-07 | false | display_with attribute |"
+ "| .4 | | | |"
+ )
+ );
+ assert!(is_lines_equal(&table, 57));
+ }
+
+ #[cfg(feature = "color")]
+ #[test]
+ fn wrapping_as_total_multiline_color() {
+ #[derive(Tabled)]
+ struct D(
+ #[tabled(rename = "version")] String,
+ #[tabled(rename = "published_date")] String,
+ #[tabled(rename = "is_active")] String,
+ #[tabled(rename = "major_feature")] String,
+ );
+
+ let data = vec![
+ D(
+ "0.2.1".red().to_string(),
+ "2021-06-23".red().on_truecolor(8, 10, 30).to_string(),
+ "true".to_string(),
+ "#[header(inline)] attribute"
+ .blue()
+ .on_color(AnsiColors::Green)
+ .to_string(),
+ ),
+ D(
+ "0.2.0".red().to_string(),
+ "2021-06-19".green().on_truecolor(8, 100, 30).to_string(),
+ "false".to_string(),
+ "API changes".yellow().to_string(),
+ ),
+ D(
+ "0.1.4".white().to_string(),
+ "2021-06-07".red().on_truecolor(8, 10, 30).to_string(),
+ "false".to_string(),
+ "display_with attribute"
+ .red()
+ .on_color(AnsiColors::Black)
+ .to_string(),
+ ),
+ ];
+
+ let table = Matrix::iter(&data)
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Width::wrap(57))
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| ver | published_d | is_act | major_feature |"
+ "| sio | ate | ive | |"
+ "| n | | | |"
+ "|-----|-------------|--------|--------------------------|"
+ "| \u{1b}[31m0.2\u{1b}[39m | \u{1b}[48;2;8;10;30m\u{1b}[31m2021-06-23\u{1b}[39m\u{1b}[49m | true | \u{1b}[34m\u{1b}[42m#[header(inline)] attrib\u{1b}[39m\u{1b}[49m |"
+ "| \u{1b}[31m.1\u{1b}[39m | | | \u{1b}[34m\u{1b}[42mute\u{1b}[39m\u{1b}[49m |"
+ "| \u{1b}[31m0.2\u{1b}[39m | \u{1b}[48;2;8;100;30m\u{1b}[32m2021-06-19\u{1b}[39m\u{1b}[49m | false | \u{1b}[33mAPI changes\u{1b}[39m |"
+ "| \u{1b}[31m.0\u{1b}[39m | | | |"
+ "| \u{1b}[37m0.1\u{1b}[39m | \u{1b}[48;2;8;10;30m\u{1b}[31m2021-06-07\u{1b}[39m\u{1b}[49m | false | \u{1b}[31;40mdisplay_with attribute\u{1b}[0m |"
+ "| \u{1b}[37m.4\u{1b}[39m | | | |"
+ )
+ );
+ assert_eq!(string_width_multiline(&table), 57);
+
+ let table = Matrix::iter(&data)
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Width::wrap(57).keep_words())
+ .to_string();
+
+ assert_eq!(
+ table,
+ static_table!(
+ "| ver | published_d | is_act | major_feature |"
+ "| sio | ate | ive | |"
+ "| n | | | |"
+ "|-----|-------------|--------|--------------------------|"
+ "| \u{1b}[31m0.2\u{1b}[39m | \u{1b}[48;2;8;10;30m\u{1b}[31m2021-06-23\u{1b}[39m\u{1b}[49m | true | \u{1b}[34m\u{1b}[42m#[header(inline)] \u{1b}[39m\u{1b}[49m |"
+ "| \u{1b}[31m.1\u{1b}[39m | | | \u{1b}[34m\u{1b}[42mattribute\u{1b}[39m\u{1b}[49m |"
+ "| \u{1b}[31m0.2\u{1b}[39m | \u{1b}[48;2;8;100;30m\u{1b}[32m2021-06-19\u{1b}[39m\u{1b}[49m | false | \u{1b}[33mAPI changes\u{1b}[39m |"
+ "| \u{1b}[31m.0\u{1b}[39m | | | |"
+ "| \u{1b}[37m0.1\u{1b}[39m | \u{1b}[48;2;8;10;30m\u{1b}[31m2021-06-07\u{1b}[39m\u{1b}[49m | false | \u{1b}[31;40mdisplay_with attribute\u{1b}[0m |"
+ "| \u{1b}[37m.4\u{1b}[39m | | | |"
+ )
+ );
+ assert_eq!(string_width_multiline(&table), 57);
+ }
+
+ #[cfg(feature = "color")]
+ #[test]
+ fn truncating_as_total_multiline_color() {
+ #[derive(Tabled)]
+ struct D(
+ #[tabled(rename = "version")] String,
+ #[tabled(rename = "published_date")] String,
+ #[tabled(rename = "is_active")] String,
+ #[tabled(rename = "major_feature")] String,
+ );
+
+ let data = vec![
+ D(
+ "0.2.1".red().to_string(),
+ "2021-06-23".red().on_truecolor(8, 10, 30).to_string(),
+ "true".to_string(),
+ "#[header(inline)] attribute"
+ .blue()
+ .on_color(AnsiColors::Green)
+ .to_string(),
+ ),
+ D(
+ "0.2.0".red().to_string(),
+ "2021-06-19".green().on_truecolor(8, 100, 30).to_string(),
+ "false".to_string(),
+ "API changes".yellow().to_string(),
+ ),
+ D(
+ "0.1.4".white().to_string(),
+ "2021-06-07".red().on_truecolor(8, 10, 30).to_string(),
+ "false".to_string(),
+ "display_with attribute"
+ .red()
+ .on_color(AnsiColors::Black)
+ .to_string(),
+ ),
+ ];
+
+ let table = Matrix::iter(data)
+ .with(Style::markdown())
+ .with(Modify::new(Segment::all()).with(Alignment::left()))
+ .with(Width::truncate(57))
+ .to_string();
+
+ assert_eq!(
+ ansi_str::AnsiStr::ansi_strip(&table),
+ static_table!(
+ "| ver | published_d | is_act | major_feature |"
+ "|-----|-------------|--------|--------------------------|"
+ "| 0.2 | 2021-06-23 | true | #[header(inline)] attrib |"
+ "| 0.2 | 2021-06-19 | false | API changes |"
+ "| 0.1 | 2021-06-07 | false | display_with attribute |"
+ )
+ );
+
+ assert_eq!(
+ table,
+ "| ver | published_d | is_act | major_feature |\n|-----|-------------|--------|--------------------------|\n| \u{1b}[31m0.2\u{1b}[39m | \u{1b}[48;2;8;10;30m\u{1b}[31m2021-06-23\u{1b}[39m\u{1b}[49m | true | \u{1b}[34;42m#[header(inline)] attrib\u{1b}[39m\u{1b}[49m |\n| \u{1b}[31m0.2\u{1b}[39m | \u{1b}[48;2;8;100;30m\u{1b}[32m2021-06-19\u{1b}[39m\u{1b}[49m | false | \u{1b}[33mAPI changes\u{1b}[39m |\n| \u{1b}[37m0.1\u{1b}[39m | \u{1b}[48;2;8;10;30m\u{1b}[31m2021-06-07\u{1b}[39m\u{1b}[49m | false | \u{1b}[31;40mdisplay_with attribute\u{1b}[0m |"
+ );
+ assert_eq!(string_width_multiline(&table), 57);
+ }
+
+ #[cfg(feature = "color")]
+ fn format_osc8_hyperlink(url: &str, text: &str) -> String {
+ format!(
+ "{osc}8;;{url}{st}{text}{osc}8;;{st}",
+ url = url,
+ text = text,
+ osc = "\x1b]",
+ st = "\x1b\\"
+ )
+ }
+
+ #[cfg(feature = "color")]
+ #[test]
+ fn hyperlinks() {
+ #[derive(Tabled)]
+ struct Distribution {
+ name: String,
+ is_hyperlink: bool,
+ }
+
+ let table = |text: &str| {
+ let data = [Distribution {
+ name: text.to_owned(),
+ is_hyperlink: true,
+ }];
+ tabled::Table::new(data)
+ .with(
+ Modify::new(Segment::all())
+ .with(Width::wrap(5).keep_words())
+ .with(Alignment::left()),
+ )
+ .to_string()
+ };
+
+ let text = format_osc8_hyperlink("https://www.debian.org/", "Debian");
+ assert_eq!(
+ table(&text),
+ "+-------+-------+\n\
+ | name | is_hy |\n\
+ | | perli |\n\
+ | | nk |\n\
+ +-------+-------+\n\
+ | \u{1b}]8;;https://www.debian.org/\u{1b}\\Debia\u{1b}]8;;\u{1b}\\ | true |\n\
+ | \u{1b}]8;;https://www.debian.org/\u{1b}\\n\u{1b}]8;;\u{1b}\\ | |\n\
+ +-------+-------+"
+ );
+
+ // if there's more text than a link it will be ignored
+ let text = format!(
+ "{} :link",
+ format_osc8_hyperlink("https://www.debian.org/", "Debian"),
+ );
+ assert_eq!(
+ table(&text),
+ "+-------+-------+\n\
+ | name | is_hy |\n\
+ | | perli |\n\
+ | | nk |\n\
+ +-------+-------+\n\
+ | Debia | true |\n\
+ | n | |\n\
+ | :link | |\n\
+ +-------+-------+"
+ );
+
+ let text = format!(
+ "asd {} 2 links in a string {}",
+ format_osc8_hyperlink("https://www.debian.org/", "Debian"),
+ format_osc8_hyperlink("https://www.wikipedia.org/", "Debian"),
+ );
+ assert_eq!(
+ table(&text),
+ static_table!(
+ "+-------+-------+"
+ "| name | is_hy |"
+ "| | perli |"
+ "| | nk |"
+ "+-------+-------+"
+ "| asd D | true |"
+ "| ebian | |"
+ "| 2 | |"
+ "| links | |"
+ "| in a | |"
+ "| stri | |"
+ "| ng De | |"
+ "| bian | |"
+ "+-------+-------+"
+ )
+ );
+ }
+
+ #[cfg(feature = "color")]
+ #[test]
+ fn hyperlinks_with_color() {
+ use owo_colors::OwoColorize;
+
+ #[derive(Tabled)]
+ struct Distribution {
+ name: String,
+ is_hyperlink: bool,
+ }
+
+ let table = |text: &str| {
+ let data = [Distribution {
+ name: text.to_owned(),
+ is_hyperlink: true,
+ }];
+ tabled::Table::new(data)
+ .with(
+ Modify::new(Segment::all())
+ .with(Width::wrap(6).keep_words())
+ .with(Alignment::left()),
+ )
+ .to_string()
+ };
+
+ let text = format_osc8_hyperlink(
+ "https://www.debian.org/",
+ "Debian".red().to_string().as_str(),
+ );
+ assert_eq!(
+ table(&text),
+ static_table!(
+ "+--------+--------+"
+ "| name | is_hyp |"
+ "| | erlink |"
+ "+--------+--------+"
+ "| \u{1b}]8;;https://www.debian.org/\u{1b}\\\u{1b}[31mDebian\u{1b}[39m\u{1b}]8;;\u{1b}\\ | true |"
+ "+--------+--------+"
+ )
+ );
+
+ // if there's more text than a link it will be ignored
+ let text = format!(
+ "{} :link",
+ format_osc8_hyperlink("https://www.debian.org/", "Debian"),
+ );
+ assert_eq!(
+ table(&text),
+ static_table!(
+ "+--------+--------+"
+ "| name | is_hyp |"
+ "| | erlink |"
+ "+--------+--------+"
+ "| Debian | true |"
+ "| :link | |"
+ "+--------+--------+"
+ )
+ );
+
+ let text = format!(
+ "asd {} 2 links in a string {}",
+ format_osc8_hyperlink("https://www.debian.org/", "Debian"),
+ format_osc8_hyperlink("https://www.wikipedia.org/", "Debian"),
+ );
+ assert_eq!(
+ table(&text),
+ static_table!(
+ "+--------+--------+"
+ "| name | is_hyp |"
+ "| | erlink |"
+ "+--------+--------+"
+ "| asd | true |"
+ "| Debian | |"
+ "| 2 | |"
+ "| links | |"
+ "| in a | |"
+ "| string | |"
+ "| | |"
+ "| Debian | |"
+ "+--------+--------+"
+ )
+ );
+ }
+}
diff --git a/vendor/tempfile/.cargo-checksum.json b/vendor/tempfile/.cargo-checksum.json
index 67b780b7b..d84bde0df 100644
--- a/vendor/tempfile/.cargo-checksum.json
+++ b/vendor/tempfile/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"14cb935001b72d1da431865d0e618b58ca962cc17c8be6bcd9cf4e1699f58b7d","Cargo.toml":"285d4565218bd4a8e5d36cb9b12ece4b8bb9c91d3357e75708acb0ca2f414b49","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"8b427f5bc501764575e52ba4f9d95673cf8f6d80a86d0d06599852e1a9a20a36","README.md":"972f1c35ec653943e067fd2c3d09e78f593b2e9e1eafd5b9668bf3653513de3e","src/dir.rs":"3b515f42feb934ba83ba56d506116e5e932c6b863b764fd61d26994eff28700a","src/error.rs":"cc7d8eace0fff11cb342158d2885d5637bfb14b24ef30755e808554772039c5f","src/file/imp/mod.rs":"f6da9fcd93f11889670a251fdd8231b5f4614e5a971b7b183f52b44af68568d5","src/file/imp/other.rs":"501cd1b444a5821127ea831fc8018706148f2d9f47c478f502b069963a42a2c7","src/file/imp/unix.rs":"0fa63a8b831947fdc7307e889d129adef6f47b19965b963a5e25d70cb3106e62","src/file/imp/windows.rs":"fa4211087c36290064de9a41b5e533e4e8c24a10fb8f8908835a67e00555c06e","src/file/mod.rs":"f417e0e8637116e50de201581b1dfe8feb8dee30f71c5bb9dbcd95603094cb49","src/lib.rs":"6303e7470c680ad785f32eb717de2e512b88c2c5da0e1684e3704471fabd7398","src/spooled.rs":"de848218bb7c0733d9c46e337564137673c95f5a6cf9f6bb28baf218b2503247","src/util.rs":"63737b9180cb769c1fcac56f1fa928221ae41a8917872d3e878d0a915e877710","tests/namedtempfile.rs":"87dd6a8bba2fdd77418ec2b50b8aec5e26d05a2f780182b4e9ff464b3404d47c","tests/spooled.rs":"a97e96404dc5136421ac027b965070c0d5b44c93d06d456e12dc85f81755d064","tests/tempdir.rs":"f5a86f56df6bb60aa5dfa136ce75f8d0f29c2e87546dccfe1fb680d209be525e","tests/tempfile.rs":"9a2f8142151a6aa2fd047aa3749f9982ece4b080a3ace0d3c58d6bdb3f883c81"},"package":"cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"2533d89b7047ced43fd0f0aa410c9bf1f4d8388308585eae28a3d49cb71dbcb0","Cargo.toml":"93b08b8882c3b42e51a152031f1d53d0006b0c5ef79a9a5211acd7242ae416a2","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"8b427f5bc501764575e52ba4f9d95673cf8f6d80a86d0d06599852e1a9a20a36","README.md":"972f1c35ec653943e067fd2c3d09e78f593b2e9e1eafd5b9668bf3653513de3e","deny.toml":"cb4c35327cbf8a20a6b19ac3fdf2c47b665da1662c90e3eae8a3825f9b72596e","src/dir.rs":"3b515f42feb934ba83ba56d506116e5e932c6b863b764fd61d26994eff28700a","src/error.rs":"cc7d8eace0fff11cb342158d2885d5637bfb14b24ef30755e808554772039c5f","src/file/imp/mod.rs":"f6da9fcd93f11889670a251fdd8231b5f4614e5a971b7b183f52b44af68568d5","src/file/imp/other.rs":"501cd1b444a5821127ea831fc8018706148f2d9f47c478f502b069963a42a2c7","src/file/imp/unix.rs":"0fa63a8b831947fdc7307e889d129adef6f47b19965b963a5e25d70cb3106e62","src/file/imp/windows.rs":"fa4211087c36290064de9a41b5e533e4e8c24a10fb8f8908835a67e00555c06e","src/file/mod.rs":"3a51ab219e0adab18324cab072fed01b0805781d6f15e79ca8b8a36543683bcc","src/lib.rs":"6303e7470c680ad785f32eb717de2e512b88c2c5da0e1684e3704471fabd7398","src/spooled.rs":"de848218bb7c0733d9c46e337564137673c95f5a6cf9f6bb28baf218b2503247","src/util.rs":"63737b9180cb769c1fcac56f1fa928221ae41a8917872d3e878d0a915e877710","tests/namedtempfile.rs":"87dd6a8bba2fdd77418ec2b50b8aec5e26d05a2f780182b4e9ff464b3404d47c","tests/spooled.rs":"a97e96404dc5136421ac027b965070c0d5b44c93d06d456e12dc85f81755d064","tests/tempdir.rs":"f5a86f56df6bb60aa5dfa136ce75f8d0f29c2e87546dccfe1fb680d209be525e","tests/tempfile.rs":"9a2f8142151a6aa2fd047aa3749f9982ece4b080a3ace0d3c58d6bdb3f883c81"},"package":"7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5"} \ No newline at end of file
diff --git a/vendor/tempfile/CHANGELOG.md b/vendor/tempfile/CHANGELOG.md
index a3576e025..33868ab49 100644
--- a/vendor/tempfile/CHANGELOG.md
+++ b/vendor/tempfile/CHANGELOG.md
@@ -1,5 +1,11 @@
# Changelog
+## 3.8.1
+
+- Update rustix to fix a potential panic on `persist_noclobber` on android.
+- Update redox_syscall to 0.4 (on redox).
+- Fix some docs typos.
+
## 3.8.0
- Added `with_prefix` and `with_prefix_in` to `TempDir` and `NamedTempFile` to make it easier to create temporary files/directories with nice prefixes.
diff --git a/vendor/tempfile/Cargo.toml b/vendor/tempfile/Cargo.toml
index 42349a1ba..84ea8010d 100644
--- a/vendor/tempfile/Cargo.toml
+++ b/vendor/tempfile/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2018"
rust-version = "1.63"
name = "tempfile"
-version = "3.8.0"
+version = "3.8.1"
authors = [
"Steven Allen <steven@stebalien.com>",
"The Rust Project Developers",
@@ -45,11 +45,11 @@ version = "0.3"
nightly = []
[target."cfg(any(unix, target_os = \"wasi\"))".dependencies.rustix]
-version = "0.38"
+version = "0.38.21"
features = ["fs"]
[target."cfg(target_os = \"redox\")".dependencies.redox_syscall]
-version = "0.3"
+version = "0.4"
[target."cfg(windows)".dependencies.windows-sys]
version = "0.48"
diff --git a/vendor/tempfile/deny.toml b/vendor/tempfile/deny.toml
new file mode 100644
index 000000000..ce0ef1cc0
--- /dev/null
+++ b/vendor/tempfile/deny.toml
@@ -0,0 +1,40 @@
+
+[advisories]
+notice = "deny"
+unmaintained = "deny"
+vulnerability = "deny"
+yanked = "deny"
+ignore = []
+
+[licenses]
+allow = [
+ "Apache-2.0",
+ "MIT",
+]
+default = "deny"
+confidence-threshold = 1.0
+unlicensed = "deny"
+
+[bans]
+allow = []
+deny = []
+multiple-versions = "deny"
+skip = [
+ # Transitive dependency of both redox_syscall and rustix (rustix has newer).
+ #
+ # Only one version of bitflags ultimately gets compiled in due to OS-based feature flags in tempfile.
+ { name = "bitflags" },
+]
+skip-tree = []
+wildcards = "deny"
+
+[sources]
+allow-git = []
+allow-registry = ["https://github.com/rust-lang/crates.io-index"]
+unknown-git = "deny"
+unknown-registry = "deny"
+
+[sources.allow-org]
+github = []
+gitlab = []
+bitbucket = []
diff --git a/vendor/tempfile/src/file/mod.rs b/vendor/tempfile/src/file/mod.rs
index aca44ced5..8a28343e0 100644
--- a/vendor/tempfile/src/file/mod.rs
+++ b/vendor/tempfile/src/file/mod.rs
@@ -611,7 +611,7 @@ impl NamedTempFile<File> {
/// This is equivalent to:
///
/// ```ignore
- /// Builder::new().prefix(&prefix).tempfile()
+ /// Builder::new().tempfile_in(dir)
/// ```
///
/// See [`NamedTempFile::new()`] for details.
@@ -731,7 +731,7 @@ impl<F> NamedTempFile<F> {
/// # Security
///
/// This method persists the temporary file using its path and may not be
- /// secure in the in all cases. Please read the security section on the top
+ /// secure in all cases. Please read the security section on the top
/// level documentation of this type for details.
///
/// # Errors
@@ -785,7 +785,7 @@ impl<F> NamedTempFile<F> {
/// # Security
///
/// This method persists the temporary file using its path and may not be
- /// secure in the in all cases. Please read the security section on the top
+ /// secure in all cases. Please read the security section on the top
/// level documentation of this type for details.
///
/// # Errors
diff --git a/vendor/thiserror-impl/.cargo-checksum.json b/vendor/thiserror-impl/.cargo-checksum.json
index 2a6ce1b97..434947736 100644
--- a/vendor/thiserror-impl/.cargo-checksum.json
+++ b/vendor/thiserror-impl/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"7adfcbfb61f6e08a1b05802640e4648a14cffdc6faa614f18f4ac57ec4bbfe7b","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","src/ast.rs":"c7601e8394f5ee304365c520181f0dbeaa807ddaa71ce4a8618ea1a70f81b3b2","src/attr.rs":"13404e2a5b32ac24a041b977787864d52f3d5253d685894f62fd88625a102561","src/expand.rs":"5515ef3efdd0b24e7191d1f96ff16911f4e2259148072974022295e4a93c03ea","src/fmt.rs":"d63d39120c18712596f9f2a1715821148c2becd4d8bad5bc1b307210a84dbe98","src/generics.rs":"2076cde22271be355a8131a77add4b93f83ab0af4317cd2df5471fffa4f95c66","src/lib.rs":"7d023310cd3db670554ce108a6afd94e1ae3c55c83661d4b9fcebdf1865b9e4b","src/prop.rs":"6709932aee8f9d217f40cd644629c0ecb2f46d333ae8a1398e8d745534f4e028","src/valid.rs":"ac95253944fd360d3578d0643a7baabb2cfa6bf9fbced7a6ce1f7b0529a3bb98"},"package":"6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b"} \ No newline at end of file
+{"files":{"Cargo.toml":"3f5057552ccac72bba0665fbc5c5cca35a8cb5e6751eec516b1052212ce8e27d","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","src/ast.rs":"c7601e8394f5ee304365c520181f0dbeaa807ddaa71ce4a8618ea1a70f81b3b2","src/attr.rs":"ad5319f053a18ec3841300b2ae553ffa005749ba7099fe4b318126223e4dcbdf","src/expand.rs":"222c77246df56d96dddf4441ba0327579ebba89c65f0123aaab0505c51bd84a3","src/fmt.rs":"d63d39120c18712596f9f2a1715821148c2becd4d8bad5bc1b307210a84dbe98","src/generics.rs":"2076cde22271be355a8131a77add4b93f83ab0af4317cd2df5471fffa4f95c66","src/lib.rs":"a17484d590d702ea79172ef84a94de4a96b439d1a5fdac69d24417f25461af04","src/prop.rs":"5ba613e38430831259f20b258f33d57dcb783fbaeeb49e5faffa7b2a7be99e67","src/span.rs":"430460a4fa0d1fa9c627c1ddd575d2b101778fea84217591e1a93a5f6a2a0132","src/valid.rs":"ac95253944fd360d3578d0643a7baabb2cfa6bf9fbced7a6ce1f7b0529a3bb98"},"package":"266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8"} \ No newline at end of file
diff --git a/vendor/thiserror-impl/Cargo.toml b/vendor/thiserror-impl/Cargo.toml
index fb311cc2c..50d361cba 100644
--- a/vendor/thiserror-impl/Cargo.toml
+++ b/vendor/thiserror-impl/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.56"
name = "thiserror-impl"
-version = "1.0.47"
+version = "1.0.50"
authors = ["David Tolnay <dtolnay@gmail.com>"]
description = "Implementation detail of the `thiserror` crate"
license = "MIT OR Apache-2.0"
diff --git a/vendor/thiserror-impl/src/attr.rs b/vendor/thiserror-impl/src/attr.rs
index aa71665dd..4beb8c962 100644
--- a/vendor/thiserror-impl/src/attr.rs
+++ b/vendor/thiserror-impl/src/attr.rs
@@ -197,7 +197,7 @@ impl ToTokens for Display<'_> {
let fmt = &self.fmt;
let args = &self.args;
tokens.extend(quote! {
- std::write!(__formatter, #fmt #args)
+ ::core::write!(__formatter, #fmt #args)
});
}
}
@@ -205,6 +205,6 @@ impl ToTokens for Display<'_> {
impl ToTokens for Trait {
fn to_tokens(&self, tokens: &mut TokenStream) {
let trait_name = format_ident!("{}", format!("{:?}", self));
- tokens.extend(quote!(std::fmt::#trait_name));
+ tokens.extend(quote!(::core::fmt::#trait_name));
}
}
diff --git a/vendor/thiserror-impl/src/expand.rs b/vendor/thiserror-impl/src/expand.rs
index f6822b205..9124ca3a9 100644
--- a/vendor/thiserror-impl/src/expand.rs
+++ b/vendor/thiserror-impl/src/expand.rs
@@ -1,10 +1,10 @@
use crate::ast::{Enum, Field, Input, Struct};
use crate::attr::Trait;
use crate::generics::InferredBounds;
+use crate::span::MemberSpan;
use proc_macro2::TokenStream;
use quote::{format_ident, quote, quote_spanned, ToTokens};
use std::collections::BTreeSet as Set;
-use syn::spanned::Spanned;
use syn::{
Data, DeriveInput, GenericArgument, Member, PathArguments, Result, Token, Type, Visibility,
};
@@ -23,13 +23,13 @@ fn impl_struct(input: Struct) -> TokenStream {
let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl();
let mut error_inferred_bounds = InferredBounds::new();
- let source_body = if input.attrs.transparent.is_some() {
+ let source_body = if let Some(transparent_attr) = &input.attrs.transparent {
let only_field = &input.fields[0];
if only_field.contains_generic {
error_inferred_bounds.insert(only_field.ty, quote!(std::error::Error));
}
let member = &only_field.member;
- Some(quote! {
+ Some(quote_spanned! {transparent_attr.span=>
std::error::Error::source(self.#member.as_dyn_error())
})
} else if let Some(source_field) = input.source_field() {
@@ -39,20 +39,22 @@ fn impl_struct(input: Struct) -> TokenStream {
error_inferred_bounds.insert(ty, quote!(std::error::Error + 'static));
}
let asref = if type_is_option(source_field.ty) {
- Some(quote_spanned!(source.span()=> .as_ref()?))
+ Some(quote_spanned!(source.member_span()=> .as_ref()?))
} else {
None
};
- let dyn_error = quote_spanned!(source.span()=> self.#source #asref.as_dyn_error());
+ let dyn_error = quote_spanned! {source_field.source_span()=>
+ self.#source #asref.as_dyn_error()
+ };
Some(quote! {
- std::option::Option::Some(#dyn_error)
+ ::core::option::Option::Some(#dyn_error)
})
} else {
None
};
let source_method = source_body.map(|body| {
quote! {
- fn source(&self) -> std::option::Option<&(dyn std::error::Error + 'static)> {
+ fn source(&self) -> ::core::option::Option<&(dyn std::error::Error + 'static)> {
use thiserror::__private::AsDynError;
#body
}
@@ -65,13 +67,13 @@ fn impl_struct(input: Struct) -> TokenStream {
let body = if let Some(source_field) = input.source_field() {
let source = &source_field.member;
let source_provide = if type_is_option(source_field.ty) {
- quote_spanned! {source.span()=>
- if let std::option::Option::Some(source) = &self.#source {
+ quote_spanned! {source.member_span()=>
+ if let ::core::option::Option::Some(source) = &self.#source {
source.thiserror_provide(#request);
}
}
} else {
- quote_spanned! {source.span()=>
+ quote_spanned! {source.member_span()=>
self.#source.thiserror_provide(#request);
}
};
@@ -79,7 +81,7 @@ fn impl_struct(input: Struct) -> TokenStream {
None
} else if type_is_option(backtrace_field.ty) {
Some(quote! {
- if let std::option::Option::Some(backtrace) = &self.#backtrace {
+ if let ::core::option::Option::Some(backtrace) = &self.#backtrace {
#request.provide_ref::<std::backtrace::Backtrace>(backtrace);
}
})
@@ -95,7 +97,7 @@ fn impl_struct(input: Struct) -> TokenStream {
}
} else if type_is_option(backtrace_field.ty) {
quote! {
- if let std::option::Option::Some(backtrace) = &self.#backtrace {
+ if let ::core::option::Option::Some(backtrace) = &self.#backtrace {
#request.provide_ref::<std::backtrace::Backtrace>(backtrace);
}
}
@@ -116,18 +118,11 @@ fn impl_struct(input: Struct) -> TokenStream {
let only_field = &input.fields[0].member;
display_implied_bounds.insert((0, Trait::Display));
Some(quote! {
- std::fmt::Display::fmt(&self.#only_field, __formatter)
+ ::core::fmt::Display::fmt(&self.#only_field, __formatter)
})
} else if let Some(display) = &input.attrs.display {
display_implied_bounds = display.implied_bounds.clone();
- let use_as_display = if display.has_bonus_display {
- Some(quote! {
- #[allow(unused_imports)]
- use thiserror::__private::{DisplayAsDisplay, PathAsDisplay};
- })
- } else {
- None
- };
+ let use_as_display = use_as_display(display.has_bonus_display);
let pat = fields_pat(&input.fields);
Some(quote! {
#use_as_display
@@ -149,9 +144,9 @@ fn impl_struct(input: Struct) -> TokenStream {
let display_where_clause = display_inferred_bounds.augment_where_clause(input.generics);
quote! {
#[allow(unused_qualifications)]
- impl #impl_generics std::fmt::Display for #ty #ty_generics #display_where_clause {
+ impl #impl_generics ::core::fmt::Display for #ty #ty_generics #display_where_clause {
#[allow(clippy::used_underscore_binding)]
- fn fmt(&self, __formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
+ fn fmt(&self, __formatter: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
#body
}
}
@@ -164,7 +159,7 @@ fn impl_struct(input: Struct) -> TokenStream {
let body = from_initializer(from_field, backtrace_field);
quote! {
#[allow(unused_qualifications)]
- impl #impl_generics std::convert::From<#from> for #ty #ty_generics #where_clause {
+ impl #impl_generics ::core::convert::From<#from> for #ty #ty_generics #where_clause {
#[allow(deprecated)]
fn from(source: #from) -> Self {
#ty #body
@@ -200,13 +195,15 @@ fn impl_enum(input: Enum) -> TokenStream {
let source_method = if input.has_source() {
let arms = input.variants.iter().map(|variant| {
let ident = &variant.ident;
- if variant.attrs.transparent.is_some() {
+ if let Some(transparent_attr) = &variant.attrs.transparent {
let only_field = &variant.fields[0];
if only_field.contains_generic {
error_inferred_bounds.insert(only_field.ty, quote!(std::error::Error));
}
let member = &only_field.member;
- let source = quote!(std::error::Error::source(transparent.as_dyn_error()));
+ let source = quote_spanned! {transparent_attr.span=>
+ std::error::Error::source(transparent.as_dyn_error())
+ };
quote! {
#ty::#ident {#member: transparent} => #source,
}
@@ -217,23 +214,25 @@ fn impl_enum(input: Enum) -> TokenStream {
error_inferred_bounds.insert(ty, quote!(std::error::Error + 'static));
}
let asref = if type_is_option(source_field.ty) {
- Some(quote_spanned!(source.span()=> .as_ref()?))
+ Some(quote_spanned!(source.member_span()=> .as_ref()?))
} else {
None
};
let varsource = quote!(source);
- let dyn_error = quote_spanned!(source.span()=> #varsource #asref.as_dyn_error());
+ let dyn_error = quote_spanned! {source_field.source_span()=>
+ #varsource #asref.as_dyn_error()
+ };
quote! {
- #ty::#ident {#source: #varsource, ..} => std::option::Option::Some(#dyn_error),
+ #ty::#ident {#source: #varsource, ..} => ::core::option::Option::Some(#dyn_error),
}
} else {
quote! {
- #ty::#ident {..} => std::option::Option::None,
+ #ty::#ident {..} => ::core::option::Option::None,
}
}
});
Some(quote! {
- fn source(&self) -> std::option::Option<&(dyn std::error::Error + 'static)> {
+ fn source(&self) -> ::core::option::Option<&(dyn std::error::Error + 'static)> {
use thiserror::__private::AsDynError;
#[allow(deprecated)]
match self {
@@ -257,19 +256,19 @@ fn impl_enum(input: Enum) -> TokenStream {
let source = &source_field.member;
let varsource = quote!(source);
let source_provide = if type_is_option(source_field.ty) {
- quote_spanned! {source.span()=>
- if let std::option::Option::Some(source) = #varsource {
+ quote_spanned! {source.member_span()=>
+ if let ::core::option::Option::Some(source) = #varsource {
source.thiserror_provide(#request);
}
}
} else {
- quote_spanned! {source.span()=>
+ quote_spanned! {source.member_span()=>
#varsource.thiserror_provide(#request);
}
};
let self_provide = if type_is_option(backtrace_field.ty) {
quote! {
- if let std::option::Option::Some(backtrace) = backtrace {
+ if let ::core::option::Option::Some(backtrace) = backtrace {
#request.provide_ref::<std::backtrace::Backtrace>(backtrace);
}
}
@@ -296,13 +295,13 @@ fn impl_enum(input: Enum) -> TokenStream {
let backtrace = &backtrace_field.member;
let varsource = quote!(source);
let source_provide = if type_is_option(source_field.ty) {
- quote_spanned! {backtrace.span()=>
- if let std::option::Option::Some(source) = #varsource {
+ quote_spanned! {backtrace.member_span()=>
+ if let ::core::option::Option::Some(source) = #varsource {
source.thiserror_provide(#request);
}
}
} else {
- quote_spanned! {backtrace.span()=>
+ quote_spanned! {backtrace.member_span()=>
#varsource.thiserror_provide(#request);
}
};
@@ -317,7 +316,7 @@ fn impl_enum(input: Enum) -> TokenStream {
let backtrace = &backtrace_field.member;
let body = if type_is_option(backtrace_field.ty) {
quote! {
- if let std::option::Option::Some(backtrace) = backtrace {
+ if let ::core::option::Option::Some(backtrace) = backtrace {
#request.provide_ref::<std::backtrace::Backtrace>(backtrace);
}
}
@@ -351,19 +350,13 @@ fn impl_enum(input: Enum) -> TokenStream {
let display_impl = if input.has_display() {
let mut display_inferred_bounds = InferredBounds::new();
- let use_as_display = if input.variants.iter().any(|v| {
+ let has_bonus_display = input.variants.iter().any(|v| {
v.attrs
.display
.as_ref()
.map_or(false, |display| display.has_bonus_display)
- }) {
- Some(quote! {
- #[allow(unused_imports)]
- use thiserror::__private::{DisplayAsDisplay, PathAsDisplay};
- })
- } else {
- None
- };
+ });
+ let use_as_display = use_as_display(has_bonus_display);
let void_deref = if input.variants.is_empty() {
Some(quote!(*))
} else {
@@ -382,7 +375,7 @@ fn impl_enum(input: Enum) -> TokenStream {
Member::Unnamed(index) => format_ident!("_{}", index),
};
display_implied_bounds.insert((0, Trait::Display));
- quote!(std::fmt::Display::fmt(#only_field, __formatter))
+ quote!(::core::fmt::Display::fmt(#only_field, __formatter))
}
};
for (field, bound) in display_implied_bounds {
@@ -401,8 +394,8 @@ fn impl_enum(input: Enum) -> TokenStream {
let display_where_clause = display_inferred_bounds.augment_where_clause(input.generics);
Some(quote! {
#[allow(unused_qualifications)]
- impl #impl_generics std::fmt::Display for #ty #ty_generics #display_where_clause {
- fn fmt(&self, __formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
+ impl #impl_generics ::core::fmt::Display for #ty #ty_generics #display_where_clause {
+ fn fmt(&self, __formatter: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
#use_as_display
#[allow(unused_variables, deprecated, clippy::used_underscore_binding)]
match #void_deref self {
@@ -423,7 +416,7 @@ fn impl_enum(input: Enum) -> TokenStream {
let body = from_initializer(from_field, backtrace_field);
Some(quote! {
#[allow(unused_qualifications)]
- impl #impl_generics std::convert::From<#from> for #ty #ty_generics #where_clause {
+ impl #impl_generics ::core::convert::From<#from> for #ty #ty_generics #where_clause {
#[allow(deprecated)]
fn from(source: #from) -> Self {
#ty::#variant #body
@@ -466,10 +459,20 @@ fn fields_pat(fields: &[Field]) -> TokenStream {
}
}
+fn use_as_display(needs_as_display: bool) -> Option<TokenStream> {
+ if needs_as_display {
+ Some(quote! {
+ use thiserror::__private::AsDisplay as _;
+ })
+ } else {
+ None
+ }
+}
+
fn from_initializer(from_field: &Field, backtrace_field: Option<&Field>) -> TokenStream {
let from_member = &from_field.member;
let some_source = if type_is_option(from_field.ty) {
- quote!(std::option::Option::Some(source))
+ quote!(::core::option::Option::Some(source))
} else {
quote!(source)
};
@@ -477,11 +480,11 @@ fn from_initializer(from_field: &Field, backtrace_field: Option<&Field>) -> Toke
let backtrace_member = &backtrace_field.member;
if type_is_option(backtrace_field.ty) {
quote! {
- #backtrace_member: std::option::Option::Some(std::backtrace::Backtrace::capture()),
+ #backtrace_member: ::core::option::Option::Some(std::backtrace::Backtrace::capture()),
}
} else {
quote! {
- #backtrace_member: std::convert::From::from(std::backtrace::Backtrace::capture()),
+ #backtrace_member: ::core::convert::From::from(std::backtrace::Backtrace::capture()),
}
}
});
diff --git a/vendor/thiserror-impl/src/lib.rs b/vendor/thiserror-impl/src/lib.rs
index f0fc96917..cc86dc49e 100644
--- a/vendor/thiserror-impl/src/lib.rs
+++ b/vendor/thiserror-impl/src/lib.rs
@@ -3,8 +3,10 @@
clippy::cast_lossless,
clippy::cast_possible_truncation,
clippy::manual_find,
+ clippy::manual_let_else,
clippy::manual_map,
clippy::map_unwrap_or,
+ clippy::module_name_repetitions,
clippy::needless_pass_by_value,
clippy::option_if_let_else,
clippy::range_plus_one,
@@ -21,6 +23,7 @@ mod expand;
mod fmt;
mod generics;
mod prop;
+mod span;
mod valid;
use proc_macro::TokenStream;
diff --git a/vendor/thiserror-impl/src/prop.rs b/vendor/thiserror-impl/src/prop.rs
index 6d8a924c1..2867cd312 100644
--- a/vendor/thiserror-impl/src/prop.rs
+++ b/vendor/thiserror-impl/src/prop.rs
@@ -1,4 +1,6 @@
use crate::ast::{Enum, Field, Struct, Variant};
+use crate::span::MemberSpan;
+use proc_macro2::Span;
use syn::{Member, Type};
impl Struct<'_> {
@@ -70,6 +72,16 @@ impl Field<'_> {
pub(crate) fn is_backtrace(&self) -> bool {
type_is_backtrace(self.ty)
}
+
+ pub(crate) fn source_span(&self) -> Span {
+ if let Some(source_attr) = &self.attrs.source {
+ source_attr.path().get_ident().unwrap().span()
+ } else if let Some(from_attr) = &self.attrs.from {
+ from_attr.path().get_ident().unwrap().span()
+ } else {
+ self.member.member_span()
+ }
+ }
}
fn from_field<'a, 'b>(fields: &'a [Field<'b>]) -> Option<&'a Field<'b>> {
diff --git a/vendor/thiserror-impl/src/span.rs b/vendor/thiserror-impl/src/span.rs
new file mode 100644
index 000000000..c1237ddfc
--- /dev/null
+++ b/vendor/thiserror-impl/src/span.rs
@@ -0,0 +1,15 @@
+use proc_macro2::Span;
+use syn::Member;
+
+pub trait MemberSpan {
+ fn member_span(&self) -> Span;
+}
+
+impl MemberSpan for Member {
+ fn member_span(&self) -> Span {
+ match self {
+ Member::Named(ident) => ident.span(),
+ Member::Unnamed(index) => index.span,
+ }
+ }
+}
diff --git a/vendor/thiserror/.cargo-checksum.json b/vendor/thiserror/.cargo-checksum.json
index 0be47e8cf..4132e4795 100644
--- a/vendor/thiserror/.cargo-checksum.json
+++ b/vendor/thiserror/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"426e954049c684a86d819889248e16d5035fee3e6208c8561a6306f67829c37f","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"106c5a937767d49503e1fc5eae1b924f57f15decd8583720a3c652483e348a64","build.rs":"68e8862d9a6fa607647c01232662a3d9a44462aec390a6fe98beccd59fa58f7d","rust-toolchain.toml":"6bbb61302978c736b2da03e4fb40e3beab908f85d533ab46fd541e637b5f3e0f","src/aserror.rs":"cf3c98abb2b9e06afa3c4aba0df14938417c3e330315863437561cbb3573888b","src/display.rs":"44edb82464d52b33604236445e7429b86273fcd921fbaafc72270f0e1d8876ff","src/lib.rs":"c42c4fed186c0d328fb2f8cec2dc72be925c54936db148b2700203319ff78a7c","src/provide.rs":"8007e22953bacfcc57bb7d12a03fbeb0acece5d2ec889cf55522a4e071d26df3","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/test_backtrace.rs":"a8f038490fb881463c0e8c36557617c47cf2d181f16c00525d4d139c7964fade","tests/test_deprecated.rs":"7b80a10f090a3982da017556d3d71398abcead59afd8278c7b9d9b1f7b66c7b3","tests/test_display.rs":"f7d023365adbd47a24cb62cea02905503fd54705cbfdffdfdb3412dc210737a9","tests/test_error.rs":"d06dca3c38f22d7ce4e27dadd6c0f78e5cefe3a2ebbc5fe44abc9ddd5ee1985f","tests/test_expr.rs":"388402702a3be4ffcd0574d66733e8932bf7d5de37544a00ecb0e4f8d8246da4","tests/test_from.rs":"36bd22be7b048cd187a19076aeac1456040f20a0b677b01c6003998b63439ea1","tests/test_generics.rs":"4f33747e3f62550d5af94687679af230ef92fbb3247ae4b41df46792a040e4dc","tests/test_lints.rs":"c17d79d77edfcdd4b8f6dcdcd1c70ad065cfbc747e1a618ac6343315d0b59ea4","tests/test_option.rs":"ac30d929c019d6c54d1c1792b09e43c18dc0e4123b82051ff9e5db5e63c15e43","tests/test_path.rs":"ef5452c7e828a0179f5ace7e19f95b9762aa887caf10244adbfe36ded712c090","tests/test_source.rs":"f2f04f11bf8a709eddb1c68f113cda0c2be87e56800d6b9d991bedd545b4642f","tests/test_transparent.rs":"cd8d5be14d00d610a1782104bea6c013618501dab5c3625178ecfcf66e31f939","tests/ui/bad-field-attr.rs":"c5b567e3091969a01061843fb2d95c5e1aa3fa81edfeecdf416a84a6fba40aa8","tests/ui/bad-field-attr.stderr":"78f576d5ec66464a77f1cdf0f5bb7dcdf18f7f04f1165983a6239ec59d908ea3","tests/ui/concat-display.rs":"3995bd6b3bdd67df7bb16499775d89600c0dd20895633fe807396a64c117078d","tests/ui/concat-display.stderr":"256dfde61ee689ebe51588b135e2e030bdf95ba5adef1cb59f588c797bbdeef2","tests/ui/duplicate-enum-source.rs":"bfe28ce18042d446a76c7411aa233598211ce1157fdd3cb87bff3b3fa7c33131","tests/ui/duplicate-enum-source.stderr":"3d32fead420b27b4497be49080bc3b78f7f0ba339ead3de6c94e5dc20302c18f","tests/ui/duplicate-fmt.rs":"af53b66445bcce076a114376747f176b42c060a156563a41ccb638ae14c451fd","tests/ui/duplicate-fmt.stderr":"998bb121ce6f1595fd99529a7a1b06451b6bf476924337dce5524a83a7a5f1a1","tests/ui/duplicate-struct-source.rs":"f3d5f8e3d6fccfcdbb630db291353709583a920c6bf46f9f9de9966b67ea4c0f","tests/ui/duplicate-struct-source.stderr":"fb761d76668ac42357cf37b03c0abdbae5de0a828034990850291c9cb6ab766d","tests/ui/duplicate-transparent.rs":"41a9447e85f1a47027023442acde55c3d8610ec46d91b39bd43a42d7a004d747","tests/ui/duplicate-transparent.stderr":"4975abad43e973df158f18098d9bcb9dc39f8e75d3e733ed5d6620d1ee065c11","tests/ui/from-backtrace-backtrace.rs":"1fd51c5a1f7f6b6ee676d9fc798b6276ef2ce75def33d07f0e4b7bbde3291859","tests/ui/from-backtrace-backtrace.stderr":"f9774e9dad51374501ef4a55fa2dacece4d1c70e29ca18761394bdb80a9a74da","tests/ui/from-not-source.rs":"744a55aeffe11066830159ac023c33aaa5576e313b341fa24440ee13dfe3ac98","tests/ui/from-not-source.stderr":"525038e8b841707b927434cca4549168f73bd305faca17552a0d1fffa542ccc4","tests/ui/lifetime.rs":"e72e0391695e47fcd07edbf3819f114e468e2097086ec687781c7c8d6b4b7da7","tests/ui/lifetime.stderr":"d889a23f71324afe95dafc5f9d15337fbdbc9977cb8924f0cafe3a3becf4ced7","tests/ui/missing-fmt.rs":"bc9e2830e54c2474ff6c27a766ed3dee88d29e40f93f30e8d64d63233866c17d","tests/ui/missing-fmt.stderr":"9a20ccee9b660fe31a5b3199307b48580bb8305cb9ce33d97d3fc767a0cfc614","tests/ui/no-display.rs":"962245372272d23e9833311c15e73221b3c7da822a2ff90189613af56ffb5c2e","tests/ui/no-display.stderr":"d7bdecccb74d21677361fb7f89dc784dc859258afcf663fa1c48da6c172a61aa","tests/ui/source-enum-not-error.rs":"7c57c63b3ec37bc456738acea2e1038de5b0f32fe7e83984037d7ad1ed921737","tests/ui/source-enum-not-error.stderr":"feac587e2436fd7bed73e7265dceb31b495587f1a8eea5c5fefd9da66b912dac","tests/ui/source-struct-not-error.rs":"09fb7713637242dca9192585a6daeb8d732dc1c1d0fa522b74f1c98618e6d949","tests/ui/source-struct-not-error.stderr":"66fb5fa85d59f11d8b5f7ec99469a843c51943b0010e554bdf56376a0614a2ca","tests/ui/transparent-display.rs":"b3c59583eb64b0b5a246444456d03cf52d51bcdc08885023600dbb44fd87e5f2","tests/ui/transparent-display.stderr":"16d538914e0d92026bde4b4bec75660217da9ecc6b621d12d2eb81d33ed1d1da","tests/ui/transparent-enum-many.rs":"2a40a764fb4683bff57973eec61507a6c00f7d4d7a32da6e7bd0190c2e445434","tests/ui/transparent-enum-many.stderr":"f1d78c1d6d8edbef153420db4fb9ca3dc6076fa043b5b1bc0cd291daa417a3ea","tests/ui/transparent-enum-source.rs":"18f606a98ac0a53f08dc56f5f923b9cbe75d25ed34479c777b48dac305d5968c","tests/ui/transparent-enum-source.stderr":"1b2e0ac53951034575d43ec0396c4e2b3cfb272db2aef8d6baa13a7e1632cc84","tests/ui/transparent-struct-many.rs":"72c6b6c1a44c203d3bc68989b2f1ec092531ef75b745432824c3776c290326f6","tests/ui/transparent-struct-many.stderr":"7bd0536dbb54a0ce7d4a8e66ca7624a1b132d8a1d1e4fecca642ec77494ac01c","tests/ui/transparent-struct-source.rs":"863fa691ed7d27e8767da58d9ee11fd40d6642274b36338ca1074c07964ea2b3","tests/ui/transparent-struct-source.stderr":"267dab65929e67d32347fb467a00b43af931f8205d727d7671938580217fc70e","tests/ui/unexpected-field-fmt.rs":"29fba7b4d81c642ec8e47cfe053aa515acf9080a86d65e685363a48993becfe3","tests/ui/unexpected-field-fmt.stderr":"20731c4a08af04bed3ff513903adadd690b6bc532b15604557e7f25575a8338f","tests/ui/unexpected-struct-source.rs":"c6cbe882d622635c216feb8290b1bd536ce0ec4feee16bc087667a21b3641d5c","tests/ui/unexpected-struct-source.stderr":"7c8227513478f6cc09e8a28be337c8a0e758a06ca5978d774c91bd43c4a54043","tests/ui/union.rs":"331adff27cebd8b95b03b6742cc8247331fda1f961e1590ed39c8d39f50cf1d8","tests/ui/union.stderr":"5f67ad29753d6fb14bc03aef7d4a1f660ee7796e469c037efbf8b13456934ad3"},"package":"97a802ec30afc17eee47b2855fc72e0c4cd62be9b4efe6591edde0ec5bd68d8f"} \ No newline at end of file
+{"files":{"Cargo.toml":"a6c11176591c171057bebc4f6281352b49114559205d604c288b5d9ecfac4646","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"106c5a937767d49503e1fc5eae1b924f57f15decd8583720a3c652483e348a64","build.rs":"e3b1264d1b235d030636d858308caceadf75704c572f87be364751c909a1f496","rust-toolchain.toml":"6bbb61302978c736b2da03e4fb40e3beab908f85d533ab46fd541e637b5f3e0f","src/aserror.rs":"cf3c98abb2b9e06afa3c4aba0df14938417c3e330315863437561cbb3573888b","src/display.rs":"0adeeeb524c6bee06de179d54e82a43dc12d2c5b7f69f6fd268ba4611ebf5233","src/lib.rs":"5b2a5f5f00db8854c407527d30204114edc8ffd6f457d59f66ba433d93a302bc","src/provide.rs":"8007e22953bacfcc57bb7d12a03fbeb0acece5d2ec889cf55522a4e071d26df3","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/test_backtrace.rs":"a8f038490fb881463c0e8c36557617c47cf2d181f16c00525d4d139c7964fade","tests/test_deprecated.rs":"7b80a10f090a3982da017556d3d71398abcead59afd8278c7b9d9b1f7b66c7b3","tests/test_display.rs":"28e0f938fe0f6354529c35722eff04830451e27718145c27522c9acf7f8a6639","tests/test_error.rs":"d06dca3c38f22d7ce4e27dadd6c0f78e5cefe3a2ebbc5fe44abc9ddd5ee1985f","tests/test_expr.rs":"6d6d686b7f31e063c76647b24df347acfceba6897ce3a5f54b2851cde387579b","tests/test_from.rs":"36bd22be7b048cd187a19076aeac1456040f20a0b677b01c6003998b63439ea1","tests/test_generics.rs":"adc61f0d5fe8d53796848d44fb0373be5eab19a1eeb6a7172bc6f0dd7b91199c","tests/test_lints.rs":"c17d79d77edfcdd4b8f6dcdcd1c70ad065cfbc747e1a618ac6343315d0b59ea4","tests/test_option.rs":"ac30d929c019d6c54d1c1792b09e43c18dc0e4123b82051ff9e5db5e63c15e43","tests/test_path.rs":"ef5452c7e828a0179f5ace7e19f95b9762aa887caf10244adbfe36ded712c090","tests/test_source.rs":"f2f04f11bf8a709eddb1c68f113cda0c2be87e56800d6b9d991bedd545b4642f","tests/test_transparent.rs":"cd8d5be14d00d610a1782104bea6c013618501dab5c3625178ecfcf66e31f939","tests/ui/bad-field-attr.rs":"c5b567e3091969a01061843fb2d95c5e1aa3fa81edfeecdf416a84a6fba40aa8","tests/ui/bad-field-attr.stderr":"78f576d5ec66464a77f1cdf0f5bb7dcdf18f7f04f1165983a6239ec59d908ea3","tests/ui/concat-display.rs":"3995bd6b3bdd67df7bb16499775d89600c0dd20895633fe807396a64c117078d","tests/ui/concat-display.stderr":"256dfde61ee689ebe51588b135e2e030bdf95ba5adef1cb59f588c797bbdeef2","tests/ui/duplicate-enum-source.rs":"bfe28ce18042d446a76c7411aa233598211ce1157fdd3cb87bff3b3fa7c33131","tests/ui/duplicate-enum-source.stderr":"3d32fead420b27b4497be49080bc3b78f7f0ba339ead3de6c94e5dc20302c18f","tests/ui/duplicate-fmt.rs":"af53b66445bcce076a114376747f176b42c060a156563a41ccb638ae14c451fd","tests/ui/duplicate-fmt.stderr":"998bb121ce6f1595fd99529a7a1b06451b6bf476924337dce5524a83a7a5f1a1","tests/ui/duplicate-struct-source.rs":"f3d5f8e3d6fccfcdbb630db291353709583a920c6bf46f9f9de9966b67ea4c0f","tests/ui/duplicate-struct-source.stderr":"fb761d76668ac42357cf37b03c0abdbae5de0a828034990850291c9cb6ab766d","tests/ui/duplicate-transparent.rs":"41a9447e85f1a47027023442acde55c3d8610ec46d91b39bd43a42d7a004d747","tests/ui/duplicate-transparent.stderr":"4975abad43e973df158f18098d9bcb9dc39f8e75d3e733ed5d6620d1ee065c11","tests/ui/from-backtrace-backtrace.rs":"0caac64486c0eb9c076553c0502d468fbc477602a9a2595165a1dcd95524e5ff","tests/ui/from-backtrace-backtrace.stderr":"e24156ae0828878f3282341732b6e032eaa8cb4b4db366a6b5437ed0731d40a7","tests/ui/from-not-source.rs":"744a55aeffe11066830159ac023c33aaa5576e313b341fa24440ee13dfe3ac98","tests/ui/from-not-source.stderr":"525038e8b841707b927434cca4549168f73bd305faca17552a0d1fffa542ccc4","tests/ui/lifetime.rs":"e72e0391695e47fcd07edbf3819f114e468e2097086ec687781c7c8d6b4b7da7","tests/ui/lifetime.stderr":"d889a23f71324afe95dafc5f9d15337fbdbc9977cb8924f0cafe3a3becf4ced7","tests/ui/missing-fmt.rs":"bc9e2830e54c2474ff6c27a766ed3dee88d29e40f93f30e8d64d63233866c17d","tests/ui/missing-fmt.stderr":"9a20ccee9b660fe31a5b3199307b48580bb8305cb9ce33d97d3fc767a0cfc614","tests/ui/no-display.rs":"962245372272d23e9833311c15e73221b3c7da822a2ff90189613af56ffb5c2e","tests/ui/no-display.stderr":"9e2161baf5f66ab22370322f2e66e7633bf04b1ec07ef656e904b984bcc45d09","tests/ui/source-enum-not-error.rs":"3add5e7b4503d964bcae0848904822e1473c1d08c5a146c2df5347314ce1b8df","tests/ui/source-enum-not-error.stderr":"c093580558a259489eef92728d19aeca3b6c27ec17c39a02a75f0a924b095675","tests/ui/source-enum-unnamed-field-not-error.rs":"a98989e908b84a8e6e6dceef02af7bdd1098a444d229950f67ed4f54d55c62e7","tests/ui/source-enum-unnamed-field-not-error.stderr":"45b520f44e6fd10792d7f48e8ca7bc89850aa039278cba7c9f6ea11aa6378494","tests/ui/source-struct-not-error.rs":"09fb7713637242dca9192585a6daeb8d732dc1c1d0fa522b74f1c98618e6d949","tests/ui/source-struct-not-error.stderr":"66fb5fa85d59f11d8b5f7ec99469a843c51943b0010e554bdf56376a0614a2ca","tests/ui/source-struct-unnamed-field-not-error.rs":"eee605a9aafbb093666393e25cef4f7d7b8e90d518b9fadbdbed9685c66ccfcd","tests/ui/source-struct-unnamed-field-not-error.stderr":"38e4bd380ff1637c179b277ea1beb0a1ce688d191e5a9502ee69ab752e9ba70f","tests/ui/transparent-display.rs":"b3c59583eb64b0b5a246444456d03cf52d51bcdc08885023600dbb44fd87e5f2","tests/ui/transparent-display.stderr":"16d538914e0d92026bde4b4bec75660217da9ecc6b621d12d2eb81d33ed1d1da","tests/ui/transparent-enum-many.rs":"2a40a764fb4683bff57973eec61507a6c00f7d4d7a32da6e7bd0190c2e445434","tests/ui/transparent-enum-many.stderr":"f1d78c1d6d8edbef153420db4fb9ca3dc6076fa043b5b1bc0cd291daa417a3ea","tests/ui/transparent-enum-not-error.rs":"f6315993e68bc71d6d4d39afa4d059695308ef785f92cc0d1df3e9ff55be2a9a","tests/ui/transparent-enum-not-error.stderr":"e485c39f861ab66a6a41f0a423b1b13ba277968210284148883b350b5d629ccc","tests/ui/transparent-enum-source.rs":"18f606a98ac0a53f08dc56f5f923b9cbe75d25ed34479c777b48dac305d5968c","tests/ui/transparent-enum-source.stderr":"1b2e0ac53951034575d43ec0396c4e2b3cfb272db2aef8d6baa13a7e1632cc84","tests/ui/transparent-enum-unnamed-field-not-error.rs":"0c720567e9e0f87921055dfa9f607661725377633445e01a4b5048c7a7a50a85","tests/ui/transparent-enum-unnamed-field-not-error.stderr":"6b8ba244eba94006039d10f35bdd7526136bcff4751b13313ab12283d5bdc24c","tests/ui/transparent-struct-many.rs":"72c6b6c1a44c203d3bc68989b2f1ec092531ef75b745432824c3776c290326f6","tests/ui/transparent-struct-many.stderr":"7bd0536dbb54a0ce7d4a8e66ca7624a1b132d8a1d1e4fecca642ec77494ac01c","tests/ui/transparent-struct-not-error.rs":"fd814d3141c9182b1267b558d9daef8dd6e8b6462e1ad42b197f3a1c0703dce2","tests/ui/transparent-struct-not-error.stderr":"bb8b856515b34711c046f195b4267d2bb21309c5d3ac0a39d6660c55dadafb41","tests/ui/transparent-struct-source.rs":"863fa691ed7d27e8767da58d9ee11fd40d6642274b36338ca1074c07964ea2b3","tests/ui/transparent-struct-source.stderr":"267dab65929e67d32347fb467a00b43af931f8205d727d7671938580217fc70e","tests/ui/transparent-struct-unnamed-field-not-error.rs":"fbff5874be44a5dcc347693d7929537256b187dfec467ed72c9968c095228d8d","tests/ui/transparent-struct-unnamed-field-not-error.stderr":"684d4ed4325f2e7fb95c84a6d231585b2be313990c41222fda66b99a84e7b884","tests/ui/unexpected-field-fmt.rs":"29fba7b4d81c642ec8e47cfe053aa515acf9080a86d65e685363a48993becfe3","tests/ui/unexpected-field-fmt.stderr":"20731c4a08af04bed3ff513903adadd690b6bc532b15604557e7f25575a8338f","tests/ui/unexpected-struct-source.rs":"c6cbe882d622635c216feb8290b1bd536ce0ec4feee16bc087667a21b3641d5c","tests/ui/unexpected-struct-source.stderr":"7c8227513478f6cc09e8a28be337c8a0e758a06ca5978d774c91bd43c4a54043","tests/ui/union.rs":"331adff27cebd8b95b03b6742cc8247331fda1f961e1590ed39c8d39f50cf1d8","tests/ui/union.stderr":"5f67ad29753d6fb14bc03aef7d4a1f660ee7796e469c037efbf8b13456934ad3"},"package":"f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2"} \ No newline at end of file
diff --git a/vendor/thiserror/Cargo.toml b/vendor/thiserror/Cargo.toml
index 3064706bc..db21f8f9d 100644
--- a/vendor/thiserror/Cargo.toml
+++ b/vendor/thiserror/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.56"
name = "thiserror"
-version = "1.0.47"
+version = "1.0.50"
authors = ["David Tolnay <dtolnay@gmail.com>"]
description = "derive(Error)"
documentation = "https://docs.rs/thiserror"
@@ -32,7 +32,7 @@ rustdoc-args = ["--generate-link-to-definition"]
targets = ["x86_64-unknown-linux-gnu"]
[dependencies.thiserror-impl]
-version = "=1.0.47"
+version = "=1.0.50"
[dev-dependencies.anyhow]
version = "1.0.73"
diff --git a/vendor/thiserror/build.rs b/vendor/thiserror/build.rs
index 7983a2b07..8bf19e198 100644
--- a/vendor/thiserror/build.rs
+++ b/vendor/thiserror/build.rs
@@ -1,3 +1,5 @@
+#![allow(clippy::needless_raw_string_hashes)]
+
use std::env;
use std::fs;
use std::path::Path;
diff --git a/vendor/thiserror/src/display.rs b/vendor/thiserror/src/display.rs
index da4905115..27098f167 100644
--- a/vendor/thiserror/src/display.rs
+++ b/vendor/thiserror/src/display.rs
@@ -2,29 +2,39 @@ use std::fmt::Display;
use std::path::{self, Path, PathBuf};
#[doc(hidden)]
-pub trait DisplayAsDisplay {
- fn as_display(&self) -> Self;
+pub trait AsDisplay<'a> {
+ // TODO: convert to generic associated type.
+ // https://github.com/dtolnay/thiserror/pull/253
+ type Target: Display;
+
+ fn as_display(&'a self) -> Self::Target;
}
-impl<T: Display> DisplayAsDisplay for &T {
- fn as_display(&self) -> Self {
- self
+impl<'a, T> AsDisplay<'a> for &T
+where
+ T: Display + 'a,
+{
+ type Target = &'a T;
+
+ fn as_display(&'a self) -> Self::Target {
+ *self
}
}
-#[doc(hidden)]
-pub trait PathAsDisplay {
- fn as_display(&self) -> path::Display<'_>;
-}
+impl<'a> AsDisplay<'a> for Path {
+ type Target = path::Display<'a>;
-impl PathAsDisplay for Path {
- fn as_display(&self) -> path::Display<'_> {
+ #[inline]
+ fn as_display(&'a self) -> Self::Target {
self.display()
}
}
-impl PathAsDisplay for PathBuf {
- fn as_display(&self) -> path::Display<'_> {
+impl<'a> AsDisplay<'a> for PathBuf {
+ type Target = path::Display<'a>;
+
+ #[inline]
+ fn as_display(&'a self) -> Self::Target {
self.display()
}
}
diff --git a/vendor/thiserror/src/lib.rs b/vendor/thiserror/src/lib.rs
index e5d295062..974063639 100644
--- a/vendor/thiserror/src/lib.rs
+++ b/vendor/thiserror/src/lib.rs
@@ -228,13 +228,12 @@
//!
//! [`anyhow`]: https://github.com/dtolnay/anyhow
-#![doc(html_root_url = "https://docs.rs/thiserror/1.0.47")]
+#![doc(html_root_url = "https://docs.rs/thiserror/1.0.50")]
#![allow(
- // Clippy bug: https://github.com/rust-lang/rust-clippy/issues/7421
- clippy::doc_markdown,
clippy::module_name_repetitions,
+ clippy::needless_lifetimes,
clippy::return_self_not_must_use,
- clippy::wildcard_imports,
+ clippy::wildcard_imports
)]
#![cfg_attr(error_generic_member_access, feature(error_generic_member_access))]
@@ -251,7 +250,7 @@ pub mod __private {
#[doc(hidden)]
pub use crate::aserror::AsDynError;
#[doc(hidden)]
- pub use crate::display::{DisplayAsDisplay, PathAsDisplay};
+ pub use crate::display::AsDisplay;
#[cfg(error_generic_member_access)]
#[doc(hidden)]
pub use crate::provide::ThiserrorProvide;
diff --git a/vendor/thiserror/tests/test_display.rs b/vendor/thiserror/tests/test_display.rs
index 99ce2fded..6f603882e 100644
--- a/vendor/thiserror/tests/test_display.rs
+++ b/vendor/thiserror/tests/test_display.rs
@@ -1,3 +1,5 @@
+#![allow(clippy::uninlined_format_args)]
+
use std::fmt::{self, Display};
use thiserror::Error;
diff --git a/vendor/thiserror/tests/test_expr.rs b/vendor/thiserror/tests/test_expr.rs
index 34de56087..8db097bac 100644
--- a/vendor/thiserror/tests/test_expr.rs
+++ b/vendor/thiserror/tests/test_expr.rs
@@ -1,4 +1,8 @@
-#![allow(clippy::iter_cloned_collect, clippy::option_if_let_else)]
+#![allow(
+ clippy::iter_cloned_collect,
+ clippy::option_if_let_else,
+ clippy::uninlined_format_args
+)]
use std::fmt::Display;
use thiserror::Error;
diff --git a/vendor/thiserror/tests/test_generics.rs b/vendor/thiserror/tests/test_generics.rs
index 4ab9f3778..c94d95ef8 100644
--- a/vendor/thiserror/tests/test_generics.rs
+++ b/vendor/thiserror/tests/test_generics.rs
@@ -1,4 +1,4 @@
-#![allow(clippy::needless_late_init)]
+#![allow(clippy::needless_late_init, clippy::uninlined_format_args)]
use std::fmt::{self, Debug, Display};
use thiserror::Error;
diff --git a/vendor/thiserror/tests/ui/from-backtrace-backtrace.rs b/vendor/thiserror/tests/ui/from-backtrace-backtrace.rs
index 8f411bf5d..3b781ac4e 100644
--- a/vendor/thiserror/tests/ui/from-backtrace-backtrace.rs
+++ b/vendor/thiserror/tests/ui/from-backtrace-backtrace.rs
@@ -5,6 +5,11 @@ use thiserror::Error;
#[derive(Error, Debug)]
#[error("...")]
-pub struct Error(#[from] #[backtrace] std::io::Error, Backtrace);
+pub struct Error(
+ #[from]
+ #[backtrace]
+ std::io::Error,
+ Backtrace,
+);
fn main() {}
diff --git a/vendor/thiserror/tests/ui/from-backtrace-backtrace.stderr b/vendor/thiserror/tests/ui/from-backtrace-backtrace.stderr
index 55d647b42..5c0b9a3bf 100644
--- a/vendor/thiserror/tests/ui/from-backtrace-backtrace.stderr
+++ b/vendor/thiserror/tests/ui/from-backtrace-backtrace.stderr
@@ -1,5 +1,5 @@
error: deriving From requires no fields other than source and backtrace
- --> tests/ui/from-backtrace-backtrace.rs:8:18
+ --> tests/ui/from-backtrace-backtrace.rs:9:5
|
-8 | pub struct Error(#[from] #[backtrace] std::io::Error, Backtrace);
- | ^^^^^^^
+9 | #[from]
+ | ^^^^^^^
diff --git a/vendor/thiserror/tests/ui/no-display.stderr b/vendor/thiserror/tests/ui/no-display.stderr
index 76818e1e5..0f47c24b6 100644
--- a/vendor/thiserror/tests/ui/no-display.stderr
+++ b/vendor/thiserror/tests/ui/no-display.stderr
@@ -9,7 +9,7 @@ error[E0599]: the method `as_display` exists for reference `&NoDisplay`, but its
|
= note: the following trait bounds were not satisfied:
`NoDisplay: std::fmt::Display`
- which is required by `&NoDisplay: DisplayAsDisplay`
+ which is required by `&NoDisplay: AsDisplay<'_>`
note: the trait `std::fmt::Display` must be implemented
--> $RUST/core/src/fmt/mod.rs
|
diff --git a/vendor/thiserror/tests/ui/source-enum-not-error.rs b/vendor/thiserror/tests/ui/source-enum-not-error.rs
index 3eb0d3e86..dae2285b8 100644
--- a/vendor/thiserror/tests/ui/source-enum-not-error.rs
+++ b/vendor/thiserror/tests/ui/source-enum-not-error.rs
@@ -6,9 +6,7 @@ pub struct NotError;
#[derive(Error, Debug)]
#[error("...")]
pub enum ErrorEnum {
- Broken {
- source: NotError,
- },
+ Broken { source: NotError },
}
fn main() {}
diff --git a/vendor/thiserror/tests/ui/source-enum-not-error.stderr b/vendor/thiserror/tests/ui/source-enum-not-error.stderr
index 750c69eb3..4c44742d5 100644
--- a/vendor/thiserror/tests/ui/source-enum-not-error.stderr
+++ b/vendor/thiserror/tests/ui/source-enum-not-error.stderr
@@ -1,22 +1,22 @@
error[E0599]: the method `as_dyn_error` exists for reference `&NotError`, but its trait bounds were not satisfied
- --> tests/ui/source-enum-not-error.rs:10:9
- |
-4 | pub struct NotError;
- | -------------------
- | |
- | doesn't satisfy `NotError: AsDynError<'_>`
- | doesn't satisfy `NotError: std::error::Error`
+ --> tests/ui/source-enum-not-error.rs:9:14
+ |
+4 | pub struct NotError;
+ | -------------------
+ | |
+ | doesn't satisfy `NotError: AsDynError<'_>`
+ | doesn't satisfy `NotError: std::error::Error`
...
-10 | source: NotError,
- | ^^^^^^ method cannot be called on `&NotError` due to unsatisfied trait bounds
- |
- = note: the following trait bounds were not satisfied:
- `NotError: std::error::Error`
- which is required by `NotError: AsDynError<'_>`
- `&NotError: std::error::Error`
- which is required by `&NotError: AsDynError<'_>`
+9 | Broken { source: NotError },
+ | ^^^^^^ method cannot be called on `&NotError` due to unsatisfied trait bounds
+ |
+ = note: the following trait bounds were not satisfied:
+ `NotError: std::error::Error`
+ which is required by `NotError: AsDynError<'_>`
+ `&NotError: std::error::Error`
+ which is required by `&NotError: AsDynError<'_>`
note: the trait `std::error::Error` must be implemented
- --> $RUST/core/src/error.rs
- |
- | pub trait Error: Debug + Display {
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ --> $RUST/core/src/error.rs
+ |
+ | pub trait Error: Debug + Display {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/vendor/thiserror/tests/ui/source-enum-unnamed-field-not-error.rs b/vendor/thiserror/tests/ui/source-enum-unnamed-field-not-error.rs
new file mode 100644
index 000000000..a877c2cd0
--- /dev/null
+++ b/vendor/thiserror/tests/ui/source-enum-unnamed-field-not-error.rs
@@ -0,0 +1,12 @@
+use thiserror::Error;
+
+#[derive(Debug)]
+pub struct NotError;
+
+#[derive(Error, Debug)]
+#[error("...")]
+pub enum ErrorEnum {
+ Broken(#[source] NotError),
+}
+
+fn main() {}
diff --git a/vendor/thiserror/tests/ui/source-enum-unnamed-field-not-error.stderr b/vendor/thiserror/tests/ui/source-enum-unnamed-field-not-error.stderr
new file mode 100644
index 000000000..da6d225f8
--- /dev/null
+++ b/vendor/thiserror/tests/ui/source-enum-unnamed-field-not-error.stderr
@@ -0,0 +1,22 @@
+error[E0599]: the method `as_dyn_error` exists for reference `&NotError`, but its trait bounds were not satisfied
+ --> tests/ui/source-enum-unnamed-field-not-error.rs:9:14
+ |
+4 | pub struct NotError;
+ | -------------------
+ | |
+ | doesn't satisfy `NotError: AsDynError<'_>`
+ | doesn't satisfy `NotError: std::error::Error`
+...
+9 | Broken(#[source] NotError),
+ | ^^^^^^ method cannot be called on `&NotError` due to unsatisfied trait bounds
+ |
+ = note: the following trait bounds were not satisfied:
+ `NotError: std::error::Error`
+ which is required by `NotError: AsDynError<'_>`
+ `&NotError: std::error::Error`
+ which is required by `&NotError: AsDynError<'_>`
+note: the trait `std::error::Error` must be implemented
+ --> $RUST/core/src/error.rs
+ |
+ | pub trait Error: Debug + Display {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/vendor/thiserror/tests/ui/source-struct-unnamed-field-not-error.rs b/vendor/thiserror/tests/ui/source-struct-unnamed-field-not-error.rs
new file mode 100644
index 000000000..160b6b247
--- /dev/null
+++ b/vendor/thiserror/tests/ui/source-struct-unnamed-field-not-error.rs
@@ -0,0 +1,10 @@
+use thiserror::Error;
+
+#[derive(Debug)]
+struct NotError;
+
+#[derive(Error, Debug)]
+#[error("...")]
+pub struct ErrorStruct(#[source] NotError);
+
+fn main() {}
diff --git a/vendor/thiserror/tests/ui/source-struct-unnamed-field-not-error.stderr b/vendor/thiserror/tests/ui/source-struct-unnamed-field-not-error.stderr
new file mode 100644
index 000000000..a23f26823
--- /dev/null
+++ b/vendor/thiserror/tests/ui/source-struct-unnamed-field-not-error.stderr
@@ -0,0 +1,21 @@
+error[E0599]: the method `as_dyn_error` exists for struct `NotError`, but its trait bounds were not satisfied
+ --> tests/ui/source-struct-unnamed-field-not-error.rs:8:26
+ |
+4 | struct NotError;
+ | ---------------
+ | |
+ | method `as_dyn_error` not found for this struct
+ | doesn't satisfy `NotError: AsDynError<'_>`
+ | doesn't satisfy `NotError: std::error::Error`
+...
+8 | pub struct ErrorStruct(#[source] NotError);
+ | ^^^^^^ method cannot be called on `NotError` due to unsatisfied trait bounds
+ |
+ = note: the following trait bounds were not satisfied:
+ `NotError: std::error::Error`
+ which is required by `NotError: AsDynError<'_>`
+note: the trait `std::error::Error` must be implemented
+ --> $RUST/core/src/error.rs
+ |
+ | pub trait Error: Debug + Display {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/vendor/thiserror/tests/ui/transparent-enum-not-error.rs b/vendor/thiserror/tests/ui/transparent-enum-not-error.rs
new file mode 100644
index 000000000..80ccfc973
--- /dev/null
+++ b/vendor/thiserror/tests/ui/transparent-enum-not-error.rs
@@ -0,0 +1,9 @@
+use thiserror::Error;
+
+#[derive(Error, Debug)]
+pub enum Error {
+ #[error(transparent)]
+ Other { message: String },
+}
+
+fn main() {}
diff --git a/vendor/thiserror/tests/ui/transparent-enum-not-error.stderr b/vendor/thiserror/tests/ui/transparent-enum-not-error.stderr
new file mode 100644
index 000000000..9be51434a
--- /dev/null
+++ b/vendor/thiserror/tests/ui/transparent-enum-not-error.stderr
@@ -0,0 +1,23 @@
+error[E0599]: the method `as_dyn_error` exists for reference `&String`, but its trait bounds were not satisfied
+ --> tests/ui/transparent-enum-not-error.rs:5:13
+ |
+5 | #[error(transparent)]
+ | ^^^^^^^^^^^ method cannot be called on `&String` due to unsatisfied trait bounds
+ |
+ ::: $RUST/alloc/src/string.rs
+ |
+ | pub struct String {
+ | -----------------
+ | |
+ | doesn't satisfy `String: AsDynError<'_>`
+ | doesn't satisfy `String: std::error::Error`
+ |
+ = note: the following trait bounds were not satisfied:
+ `String: std::error::Error`
+ which is required by `String: AsDynError<'_>`
+ `&String: std::error::Error`
+ which is required by `&String: AsDynError<'_>`
+ `str: Sized`
+ which is required by `str: AsDynError<'_>`
+ `str: std::error::Error`
+ which is required by `str: AsDynError<'_>`
diff --git a/vendor/thiserror/tests/ui/transparent-enum-unnamed-field-not-error.rs b/vendor/thiserror/tests/ui/transparent-enum-unnamed-field-not-error.rs
new file mode 100644
index 000000000..87c32e0b6
--- /dev/null
+++ b/vendor/thiserror/tests/ui/transparent-enum-unnamed-field-not-error.rs
@@ -0,0 +1,9 @@
+use thiserror::Error;
+
+#[derive(Error, Debug)]
+pub enum Error {
+ #[error(transparent)]
+ Other(String),
+}
+
+fn main() {}
diff --git a/vendor/thiserror/tests/ui/transparent-enum-unnamed-field-not-error.stderr b/vendor/thiserror/tests/ui/transparent-enum-unnamed-field-not-error.stderr
new file mode 100644
index 000000000..3d23c3a0e
--- /dev/null
+++ b/vendor/thiserror/tests/ui/transparent-enum-unnamed-field-not-error.stderr
@@ -0,0 +1,23 @@
+error[E0599]: the method `as_dyn_error` exists for reference `&String`, but its trait bounds were not satisfied
+ --> tests/ui/transparent-enum-unnamed-field-not-error.rs:5:13
+ |
+5 | #[error(transparent)]
+ | ^^^^^^^^^^^ method cannot be called on `&String` due to unsatisfied trait bounds
+ |
+ ::: $RUST/alloc/src/string.rs
+ |
+ | pub struct String {
+ | -----------------
+ | |
+ | doesn't satisfy `String: AsDynError<'_>`
+ | doesn't satisfy `String: std::error::Error`
+ |
+ = note: the following trait bounds were not satisfied:
+ `String: std::error::Error`
+ which is required by `String: AsDynError<'_>`
+ `&String: std::error::Error`
+ which is required by `&String: AsDynError<'_>`
+ `str: Sized`
+ which is required by `str: AsDynError<'_>`
+ `str: std::error::Error`
+ which is required by `str: AsDynError<'_>`
diff --git a/vendor/thiserror/tests/ui/transparent-struct-not-error.rs b/vendor/thiserror/tests/ui/transparent-struct-not-error.rs
new file mode 100644
index 000000000..811ff5395
--- /dev/null
+++ b/vendor/thiserror/tests/ui/transparent-struct-not-error.rs
@@ -0,0 +1,9 @@
+use thiserror::Error;
+
+#[derive(Error, Debug)]
+#[error(transparent)]
+pub struct Error {
+ message: String,
+}
+
+fn main() {}
diff --git a/vendor/thiserror/tests/ui/transparent-struct-not-error.stderr b/vendor/thiserror/tests/ui/transparent-struct-not-error.stderr
new file mode 100644
index 000000000..d67a69446
--- /dev/null
+++ b/vendor/thiserror/tests/ui/transparent-struct-not-error.stderr
@@ -0,0 +1,21 @@
+error[E0599]: the method `as_dyn_error` exists for struct `String`, but its trait bounds were not satisfied
+ --> tests/ui/transparent-struct-not-error.rs:4:9
+ |
+4 | #[error(transparent)]
+ | ^^^^^^^^^^^ method cannot be called on `String` due to unsatisfied trait bounds
+ |
+ ::: $RUST/alloc/src/string.rs
+ |
+ | pub struct String {
+ | -----------------
+ | |
+ | doesn't satisfy `String: AsDynError<'_>`
+ | doesn't satisfy `String: std::error::Error`
+ |
+ = note: the following trait bounds were not satisfied:
+ `String: std::error::Error`
+ which is required by `String: AsDynError<'_>`
+ `str: Sized`
+ which is required by `str: AsDynError<'_>`
+ `str: std::error::Error`
+ which is required by `str: AsDynError<'_>`
diff --git a/vendor/thiserror/tests/ui/transparent-struct-unnamed-field-not-error.rs b/vendor/thiserror/tests/ui/transparent-struct-unnamed-field-not-error.rs
new file mode 100644
index 000000000..b4f7fbbfd
--- /dev/null
+++ b/vendor/thiserror/tests/ui/transparent-struct-unnamed-field-not-error.rs
@@ -0,0 +1,7 @@
+use thiserror::Error;
+
+#[derive(Error, Debug)]
+#[error(transparent)]
+pub struct Error(String);
+
+fn main() {}
diff --git a/vendor/thiserror/tests/ui/transparent-struct-unnamed-field-not-error.stderr b/vendor/thiserror/tests/ui/transparent-struct-unnamed-field-not-error.stderr
new file mode 100644
index 000000000..f715a1517
--- /dev/null
+++ b/vendor/thiserror/tests/ui/transparent-struct-unnamed-field-not-error.stderr
@@ -0,0 +1,21 @@
+error[E0599]: the method `as_dyn_error` exists for struct `String`, but its trait bounds were not satisfied
+ --> tests/ui/transparent-struct-unnamed-field-not-error.rs:4:9
+ |
+4 | #[error(transparent)]
+ | ^^^^^^^^^^^ method cannot be called on `String` due to unsatisfied trait bounds
+ |
+ ::: $RUST/alloc/src/string.rs
+ |
+ | pub struct String {
+ | -----------------
+ | |
+ | doesn't satisfy `String: AsDynError<'_>`
+ | doesn't satisfy `String: std::error::Error`
+ |
+ = note: the following trait bounds were not satisfied:
+ `String: std::error::Error`
+ which is required by `String: AsDynError<'_>`
+ `str: Sized`
+ which is required by `str: AsDynError<'_>`
+ `str: std::error::Error`
+ which is required by `str: AsDynError<'_>`
diff --git a/vendor/tinystr/.cargo-checksum.json b/vendor/tinystr/.cargo-checksum.json
index 86027edd3..8608630b3 100644
--- a/vendor/tinystr/.cargo-checksum.json
+++ b/vendor/tinystr/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"b28bb188b7c3b68f9d9a710921a42f337bd2e07eb7588d983b20724f64d6a8c8","LICENSE":"4ad7541d66a407234e2c84902124cef325c29f3e966353efdb800bedb8b8da21","README.md":"8e79e986c696d6010a578b2872ee4144d86e26d30a409167ff2cf2af551ef231","benches/common/mod.rs":"7a31f89cb68cec2574287636ac22fe3fc86a66688b8b1e99700a5da692bd485e","benches/construct.rs":"0e0e7c1459dd3efea0c734a999318078b53e18c3389c74a1ff5a226cd3d05cca","benches/overview.rs":"296d19b32a2d52e449140771d89f9c099d19177eb84e1395c942469d51c4c3f8","benches/read.rs":"cbf349393a50eb90e7ba53906f98a689d585242292f867a37acf6842263af4d9","benches/serde.rs":"5c88866d08c07088b82dbd5472e6276c632d11e064417f5d8f2025a5ade867f0","src/ascii.rs":"403408b47d813110e840d4db688145c37a17fbcbff173038d9e3743aa712b321","src/asciibyte.rs":"fa29de7403c0424c52c2f30bb47002b9abf4bd08b302c411ffe679d3decfb8de","src/databake.rs":"9f29e30e6deec989822cbdf01f5165e098fa544cf7e49ccea3f5de827648fc1e","src/error.rs":"e0cbc912258d6e56aad148404d7cc3213d89736fa9ebe56c41f6cb0df7b2dd63","src/int_ops.rs":"c2be314d19dd41cf18fb3589901d7e58ee32fe3f764fb6a66b08a1e005336406","src/lib.rs":"7ddbd83bcb9091495de3c4a7eb7ecc25313c54991be8b463d67a7c2e97c076b6","src/macros.rs":"3fe76e258b0db2896284bcf4f50a4ac35b7efc542649b4c9f13c6e71c5957ae4","src/serde.rs":"0bd6bbe2ee8195aea68dd235d59b94faa3419aaeb8939e3220dd64bd888873f5","src/ule.rs":"139543634949a95405bc49862840b0794db089abed6efe66533858376cae180f","tests/serde.rs":"cf8cee82f731928375888d1b5e7e5e50368d3e16ce372fced230c9b1ee2a7451"},"package":"7ac3f5b6856e931e15e07b478e98c8045239829a65f9156d4fa7e7788197a5ef"} \ No newline at end of file
+{"files":{"Cargo.toml":"6beb3627cfc6a20263af586baaf821337375279823e2808ff2e729dd4c8a908a","LICENSE":"853f87c96f3d249f200fec6db1114427bc8bdf4afddc93c576956d78152ce978","README.md":"b7b7a33a29865bc653a6696b079c1527ba61cd58a815fc792ed6fa5bfc680ad5","benches/common/mod.rs":"7e709fcabc2f96b10d3db8968ef3ea7fcc25e88211ce97b64b2126c7a0d7387a","benches/construct.rs":"f61e87e177dd994b700303b75c499a3e95183bb5ff6566889eb085825238dff4","benches/overview.rs":"cac8cfdcf397644ada6bc0bab8f92afc15071b0a64e3119aee4153b616eb9cff","benches/read.rs":"cbf349393a50eb90e7ba53906f98a689d585242292f867a37acf6842263af4d9","benches/serde.rs":"5c88866d08c07088b82dbd5472e6276c632d11e064417f5d8f2025a5ade867f0","src/ascii.rs":"7ad651b33c221a656a48eb44980d9b94bb0a681e79f4955648764968d3a5d62f","src/asciibyte.rs":"fa29de7403c0424c52c2f30bb47002b9abf4bd08b302c411ffe679d3decfb8de","src/databake.rs":"0dc32b7901f73a09357257a57f6150ba7197a88c489c2542081fcdc12336dca8","src/error.rs":"e0cbc912258d6e56aad148404d7cc3213d89736fa9ebe56c41f6cb0df7b2dd63","src/int_ops.rs":"c2be314d19dd41cf18fb3589901d7e58ee32fe3f764fb6a66b08a1e005336406","src/lib.rs":"97cd144b22a402746f4251afc061af075be9d3e6e111d3835f1c1e5cb465d469","src/macros.rs":"3fe76e258b0db2896284bcf4f50a4ac35b7efc542649b4c9f13c6e71c5957ae4","src/serde.rs":"a2c2120043e3334e1cca6fe0fd045ae035849fe6bb33ab0668804334606165dc","src/ule.rs":"52d76c91eeb73eb1885a0b1f40903fc68ea83f7a8b953a71b072eb7d242b3c63","src/unvalidated.rs":"6e41ce55d5f9a2a73f59467c5aff467d12f2b5f297695f109c09812595492efe","tests/serde.rs":"cf8cee82f731928375888d1b5e7e5e50368d3e16ce372fced230c9b1ee2a7451"},"package":"d5d0e245e80bdc9b4e5356fc45a72184abbc3861992603f515270e9340f5a219"} \ No newline at end of file
diff --git a/vendor/tinystr/Cargo.toml b/vendor/tinystr/Cargo.toml
index 284ce6d2d..f82bb66b8 100644
--- a/vendor/tinystr/Cargo.toml
+++ b/vendor/tinystr/Cargo.toml
@@ -11,10 +11,12 @@
[package]
edition = "2021"
+rust-version = "1.66"
name = "tinystr"
-version = "0.7.1"
+version = "0.7.4"
authors = ["The ICU4X Project Developers"]
include = [
+ "data/**/*",
"src/**/*",
"examples/**/*",
"benches/**/*",
@@ -24,6 +26,7 @@ include = [
"README.md",
]
description = "A small ASCII-only bounded length string representation."
+readme = "README.md"
keywords = [
"string",
"str",
@@ -32,18 +35,20 @@ keywords = [
"no_std",
]
categories = ["data-structures"]
-license = "Unicode-DFS-2016"
+license-file = "LICENSE"
repository = "https://github.com/unicode-org/icu4x"
-resolver = "2"
-[package.metadata.workspaces]
-independent = true
+[package.metadata.cargo-all-features]
+denylist = ["bench"]
[package.metadata.docs.rs]
all-features = true
-[package.metadata.cargo-all-features]
-denylist = ["bench"]
+[package.metadata.workspaces]
+independent = true
+
+[lib]
+bench = false
[[test]]
name = "serde"
@@ -72,8 +77,9 @@ required-features = [
]
[dependencies.databake]
-version = "0.1.3"
+version = "0.1.6"
optional = true
+default-features = false
[dependencies.displaydoc]
version = "0.2.3"
@@ -86,18 +92,17 @@ optional = true
default-features = false
[dependencies.zerovec]
-version = "0.9.2"
+version = "0.10.0"
optional = true
+default-features = false
[dev-dependencies.bincode]
version = "1.3"
-[dev-dependencies.criterion]
-version = "0.3"
-
[dev-dependencies.postcard]
version = "1.0.0"
features = ["use-std"]
+default-features = false
[dev-dependencies.rand]
version = "0.8.5"
@@ -108,13 +113,11 @@ version = "1.0"
features = ["alloc"]
default-features = false
-[dev-dependencies.tinystr_old]
-version = "0.4"
-features = ["serde"]
-package = "tinystr"
-
[features]
alloc = []
bench = []
default = ["alloc"]
std = []
+
+[target."cfg(not(target_arch = \"wasm32\"))".dev-dependencies.criterion]
+version = "0.4"
diff --git a/vendor/tinystr/LICENSE b/vendor/tinystr/LICENSE
index 9858d01ab..9845aa5f4 100644
--- a/vendor/tinystr/LICENSE
+++ b/vendor/tinystr/LICENSE
@@ -1,49 +1,42 @@
-UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
-
-See Terms of Use <https://www.unicode.org/copyright.html>
-for definitions of Unicode Inc.’s Data Files and Software.
-
-NOTICE TO USER: Carefully read the following legal agreement.
-BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
-DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
-YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
-TERMS AND CONDITIONS OF THIS AGREEMENT.
-IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
-THE DATA FILES OR SOFTWARE.
+UNICODE LICENSE V3
COPYRIGHT AND PERMISSION NOTICE
-Copyright © 1991-2022 Unicode, Inc. All rights reserved.
-Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Unicode data files and any associated documentation
-(the "Data Files") or Unicode software and any associated documentation
-(the "Software") to deal in the Data Files or Software
-without restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, and/or sell copies of
-the Data Files or Software, and to permit persons to whom the Data Files
-or Software are furnished to do so, provided that either
-(a) this copyright and permission notice appear with all copies
-of the Data Files or Software, or
-(b) this copyright and permission notice appear in associated
-Documentation.
-
-THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
-NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
-DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THE DATA FILES OR SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale,
-use or other dealings in these Data Files or Software without prior
-written authorization of the copyright holder.
+Copyright © 2020-2023 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
—
diff --git a/vendor/tinystr/README.md b/vendor/tinystr/README.md
index 5f9a8142b..92b74c0d1 100644
--- a/vendor/tinystr/README.md
+++ b/vendor/tinystr/README.md
@@ -1,5 +1,7 @@
# tinystr [![crates.io](https://img.shields.io/crates/v/tinystr)](https://crates.io/crates/tinystr)
+<!-- cargo-rdme start -->
+
`tinystr` is a utility crate of the [`ICU4X`] project.
It includes [`TinyAsciiStr`], a core API for representing small ASCII-only bounded length strings.
@@ -48,6 +50,8 @@ bitmasking to provide basic string manipulation operations:
[`ICU4X`]: ../icu/index.html
+<!-- cargo-rdme end -->
+
## More Information
For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/tinystr/benches/common/mod.rs b/vendor/tinystr/benches/common/mod.rs
index 07654e1d9..84090b6c2 100644
--- a/vendor/tinystr/benches/common/mod.rs
+++ b/vendor/tinystr/benches/common/mod.rs
@@ -37,43 +37,19 @@ macro_rules! bench_block {
let mut group4 = $c.benchmark_group(&format!("{}/4", $name));
group4.bench_function("String", $action!(String, STRINGS_4));
group4.bench_function("TinyAsciiStr<4>", $action!(TinyAsciiStr<4>, STRINGS_4));
- group4.bench_function(
- "tinystr_old::TinyStr4",
- $action!(tinystr_old::TinyStr4, STRINGS_4),
- );
group4.bench_function("TinyAsciiStr<8>", $action!(TinyAsciiStr<8>, STRINGS_4));
- group4.bench_function(
- "tinystr_old::TinyStr8",
- $action!(tinystr_old::TinyStr8, STRINGS_4),
- );
group4.bench_function("TinyAsciiStr<16>", $action!(TinyAsciiStr<16>, STRINGS_4));
- group4.bench_function(
- "tinystr_old::TinyStr16",
- $action!(tinystr_old::TinyStr16, STRINGS_4),
- );
group4.finish();
let mut group8 = $c.benchmark_group(&format!("{}/8", $name));
group8.bench_function("String", $action!(String, STRINGS_8));
group8.bench_function("TinyAsciiStr<8>", $action!(TinyAsciiStr<8>, STRINGS_8));
group8.bench_function("TinyAsciiStr<16>", $action!(TinyAsciiStr<16>, STRINGS_8));
- group8.bench_function(
- "tinystr_old::TinyStr8",
- $action!(tinystr_old::TinyStr8, STRINGS_8),
- );
- group8.bench_function(
- "tinystr_old::TinyStr16",
- $action!(tinystr_old::TinyStr16, STRINGS_8),
- );
group8.finish();
let mut group16 = $c.benchmark_group(&format!("{}/16", $name));
group16.bench_function("String", $action!(String, STRINGS_16));
group16.bench_function("TinyAsciiStr<16>", $action!(TinyAsciiStr<16>, STRINGS_16));
- group16.bench_function(
- "tinystr_old::TinyStr16",
- $action!(tinystr_old::TinyStr16, STRINGS_16),
- );
group16.finish();
};
}
diff --git a/vendor/tinystr/benches/construct.rs b/vendor/tinystr/benches/construct.rs
index 145e721e1..19b18121f 100644
--- a/vendor/tinystr/benches/construct.rs
+++ b/vendor/tinystr/benches/construct.rs
@@ -47,41 +47,17 @@ fn construct_from_bytes(c: &mut Criterion) {
let mut group4 = c.benchmark_group("construct_from_bytes/4");
group4.bench_function("TinyAsciiStr<4>", cfu!(TinyAsciiStr<4>, STRINGS_4));
- group4.bench_function(
- "tinystr_old::TinyStr4",
- cfu!(tinystr_old::TinyStr4, STRINGS_4),
- );
group4.bench_function("TinyAsciiStr<8>", cfu!(TinyAsciiStr<8>, STRINGS_4));
- group4.bench_function(
- "tinystr_old::TinyStr8",
- cfu!(tinystr_old::TinyStr8, STRINGS_4),
- );
group4.bench_function("TinyAsciiStr<16>", cfu!(TinyAsciiStr<16>, STRINGS_4));
- group4.bench_function(
- "tinystr_old::TinyStr16",
- cfu!(tinystr_old::TinyStr16, STRINGS_4),
- );
group4.finish();
let mut group8 = c.benchmark_group("construct_from_bytes/8");
group8.bench_function("TinyAsciiStr<8>", cfu!(TinyAsciiStr<8>, STRINGS_8));
- group8.bench_function(
- "tinystr_old::TinyStr8",
- cfu!(tinystr_old::TinyStr8, STRINGS_8),
- );
group8.bench_function("TinyAsciiStr<16>", cfu!(TinyAsciiStr<16>, STRINGS_8));
- group8.bench_function(
- "tinystr_old::TinyStr16",
- cfu!(tinystr_old::TinyStr16, STRINGS_8),
- );
group8.finish();
let mut group16 = c.benchmark_group("construct_from_bytes/16");
group16.bench_function("TinyAsciiStr<16>", cfu!(TinyAsciiStr<16>, STRINGS_16));
- group16.bench_function(
- "tinystr_old::TinyStr16",
- cfu!(tinystr_old::TinyStr16, STRINGS_16),
- );
group16.finish();
}
diff --git a/vendor/tinystr/benches/overview.rs b/vendor/tinystr/benches/overview.rs
index 4911832ec..ccdd21ac4 100644
--- a/vendor/tinystr/benches/overview.rs
+++ b/vendor/tinystr/benches/overview.rs
@@ -11,9 +11,6 @@ use criterion::criterion_main;
use criterion::Criterion;
use tinystr::TinyAsciiStr;
-use tinystr_old::TinyStr16;
-use tinystr_old::TinyStr4;
-use tinystr_old::TinyStr8;
fn overview(c: &mut Criterion) {
let mut g = c.benchmark_group("overview");
@@ -35,23 +32,6 @@ fn overview(c: &mut Criterion) {
});
});
- g.bench_function("construct/TinyStr", |b| {
- b.iter(|| {
- for s in STRINGS_4 {
- let _: TinyStr4 = black_box(s).parse().unwrap();
- let _: TinyStr8 = black_box(s).parse().unwrap();
- let _: TinyStr16 = black_box(s).parse().unwrap();
- }
- for s in STRINGS_8 {
- let _: TinyStr8 = black_box(s).parse().unwrap();
- let _: TinyStr16 = black_box(s).parse().unwrap();
- }
- for s in STRINGS_16 {
- let _: TinyStr16 = black_box(s).parse().unwrap();
- }
- });
- });
-
let parsed_ascii_4: Vec<TinyAsciiStr<4>> = STRINGS_4
.iter()
.map(|s| s.parse::<TinyAsciiStr<4>>().unwrap())
@@ -68,22 +48,6 @@ fn overview(c: &mut Criterion) {
.map(|s| s.parse::<TinyAsciiStr<16>>().unwrap())
.collect();
- let parsed_tiny_4: Vec<TinyStr4> = STRINGS_4
- .iter()
- .map(|s| s.parse::<TinyStr4>().unwrap())
- .collect();
- let parsed_tiny_8: Vec<TinyStr8> = STRINGS_4
- .iter()
- .chain(STRINGS_8)
- .map(|s| s.parse::<TinyStr8>().unwrap())
- .collect();
- let parsed_tiny_16: Vec<TinyStr16> = STRINGS_4
- .iter()
- .chain(STRINGS_8)
- .chain(STRINGS_16)
- .map(|s| s.parse::<TinyStr16>().unwrap())
- .collect();
-
g.bench_function("read/TinyAsciiStr", |b| {
b.iter(|| {
let mut collector: usize = 0;
@@ -103,25 +67,6 @@ fn overview(c: &mut Criterion) {
});
});
- g.bench_function("read/TinyStr", |b| {
- b.iter(|| {
- let mut collector: usize = 0;
- for t in black_box(&parsed_tiny_4) {
- let s: &str = t;
- collector += s.bytes().map(usize::from).sum::<usize>();
- }
- for t in black_box(&parsed_tiny_8) {
- let s: &str = t;
- collector += s.bytes().map(usize::from).sum::<usize>();
- }
- for t in black_box(&parsed_tiny_16) {
- let s: &str = t;
- collector += s.bytes().map(usize::from).sum::<usize>();
- }
- collector
- });
- });
-
g.bench_function("compare/TinyAsciiStr", |b| {
b.iter(|| {
let mut collector: usize = 0;
@@ -140,25 +85,6 @@ fn overview(c: &mut Criterion) {
collector
});
});
-
- g.bench_function("compare/TinyStr", |b| {
- b.iter(|| {
- let mut collector: usize = 0;
- for ts in black_box(&parsed_tiny_4).windows(2) {
- let o = ts[0].cmp(&ts[1]);
- collector ^= o as usize;
- }
- for ts in black_box(&parsed_tiny_8).windows(2) {
- let o = ts[0].cmp(&ts[1]);
- collector ^= o as usize;
- }
- for ts in black_box(&parsed_tiny_16).windows(2) {
- let o = ts[0].cmp(&ts[1]);
- collector ^= o as usize;
- }
- collector
- });
- });
}
criterion_group!(benches, overview,);
diff --git a/vendor/tinystr/src/ascii.rs b/vendor/tinystr/src/ascii.rs
index f39f39b73..9ab694f02 100644
--- a/vendor/tinystr/src/ascii.rs
+++ b/vendor/tinystr/src/ascii.rs
@@ -140,21 +140,23 @@ impl<const N: usize> TinyAsciiStr<N> {
pub const fn as_bytes(&self) -> &[u8] {
// Safe because `self.bytes.as_slice()` pointer-casts to `&[u8]`,
// and changing the length of that slice to self.len() < N is safe.
- unsafe { core::mem::transmute((self.bytes.as_slice().as_ptr(), self.len())) }
+ unsafe {
+ core::slice::from_raw_parts(self.bytes.as_slice().as_ptr() as *const u8, self.len())
+ }
}
#[inline]
#[must_use]
pub const fn all_bytes(&self) -> &[u8; N] {
// SAFETY: `self.bytes` has same size as [u8; N]
- unsafe { core::mem::transmute(&self.bytes) }
+ unsafe { &*(self.bytes.as_ptr() as *const [u8; N]) }
}
#[inline]
#[must_use]
- /// Resizes a TinyAsciiStr<N> to a TinyAsciiStr<M>.
+ /// Resizes a `TinyAsciiStr<N>` to a `TinyAsciiStr<M>`.
///
- /// If M < len() the string gets truncated, otherwise only the
+ /// If `M < len()` the string gets truncated, otherwise only the
/// memory representation changes.
pub const fn resize<const M: usize>(self) -> TinyAsciiStr<M> {
let mut bytes = [0; M];
@@ -729,7 +731,7 @@ mod test {
};
let expected = reference_f(&s);
let actual = tinystr_f(t);
- assert_eq!(expected, actual, "TinyAsciiStr<{}>: {:?}", N, s);
+ assert_eq!(expected, actual, "TinyAsciiStr<{N}>: {s:?}");
}
}
diff --git a/vendor/tinystr/src/databake.rs b/vendor/tinystr/src/databake.rs
index e10c194f8..0b127f97c 100644
--- a/vendor/tinystr/src/databake.rs
+++ b/vendor/tinystr/src/databake.rs
@@ -3,6 +3,7 @@
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
use crate::TinyAsciiStr;
+use crate::UnvalidatedTinyAsciiStr;
use databake::*;
impl<const N: usize> Bake for TinyAsciiStr<N> {
@@ -10,7 +11,27 @@ impl<const N: usize> Bake for TinyAsciiStr<N> {
env.insert("tinystr");
let string = self.as_str();
quote! {
- ::tinystr::tinystr!(#N, #string)
+ tinystr::tinystr!(#N, #string)
+ }
+ }
+}
+
+impl<const N: usize> databake::Bake for UnvalidatedTinyAsciiStr<N> {
+ fn bake(&self, env: &databake::CrateEnv) -> databake::TokenStream {
+ match self.try_into_tinystr() {
+ Ok(tiny) => {
+ let tiny = tiny.bake(env);
+ databake::quote! {
+ #tiny.to_unvalidated()
+ }
+ }
+ Err(_) => {
+ let bytes = self.0.bake(env);
+ env.insert("tinystr");
+ databake::quote! {
+ tinystr::UnvalidatedTinyAsciiStr::from_bytes_unchecked(*#bytes)
+ }
+ }
}
}
}
@@ -19,3 +40,9 @@ impl<const N: usize> Bake for TinyAsciiStr<N> {
fn test() {
test_bake!(TinyAsciiStr<10>, const: crate::tinystr!(10usize, "foo"), tinystr);
}
+
+#[test]
+fn test_unvalidated() {
+ test_bake!(UnvalidatedTinyAsciiStr<10>, const: crate::tinystr!(10usize, "foo").to_unvalidated(), tinystr);
+ test_bake!(UnvalidatedTinyAsciiStr<3>, const: crate::UnvalidatedTinyAsciiStr::from_bytes_unchecked(*b"AB\xCD"), tinystr);
+}
diff --git a/vendor/tinystr/src/lib.rs b/vendor/tinystr/src/lib.rs
index 7745da0e5..3d13e95ea 100644
--- a/vendor/tinystr/src/lib.rs
+++ b/vendor/tinystr/src/lib.rs
@@ -72,6 +72,7 @@ mod ascii;
mod asciibyte;
mod error;
mod int_ops;
+mod unvalidated;
#[cfg(feature = "serde")]
mod serde;
@@ -87,6 +88,7 @@ extern crate alloc;
pub use ascii::TinyAsciiStr;
pub use error::TinyStrError;
+pub use unvalidated::UnvalidatedTinyAsciiStr;
/// These are temporary compatability reexports that will be removed
/// in a future version.
diff --git a/vendor/tinystr/src/serde.rs b/vendor/tinystr/src/serde.rs
index 933491f17..4c3f8be13 100644
--- a/vendor/tinystr/src/serde.rs
+++ b/vendor/tinystr/src/serde.rs
@@ -46,7 +46,7 @@ impl<'de, const N: usize> Visitor<'de> for TinyAsciiStrVisitor<N> {
type Value = TinyAsciiStr<N>;
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
- write!(formatter, "a TinyAsciiStr<{}>", N)
+ write!(formatter, "a TinyAsciiStr<{N}>")
}
#[inline]
diff --git a/vendor/tinystr/src/ule.rs b/vendor/tinystr/src/ule.rs
index 0fa212095..eda43890b 100644
--- a/vendor/tinystr/src/ule.rs
+++ b/vendor/tinystr/src/ule.rs
@@ -2,20 +2,20 @@
// called LICENSE at the top level of the ICU4X source tree
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
-use crate::TinyAsciiStr;
+use crate::{TinyAsciiStr, UnvalidatedTinyAsciiStr};
use zerovec::maps::ZeroMapKV;
use zerovec::ule::*;
use zerovec::{ZeroSlice, ZeroVec};
// Safety (based on the safety checklist on the ULE trait):
-// 1. CharULE does not include any uninitialized or padding bytes.
+// 1. TinyAsciiStr does not include any uninitialized or padding bytes.
// (achieved by `#[repr(transparent)]` on a type that satisfies this invariant)
-// 2. CharULE is aligned to 1 byte.
+// 2. TinyAsciiStr is aligned to 1 byte.
// (achieved by `#[repr(transparent)]` on a type that satisfies this invariant)
// 3. The impl of validate_byte_slice() returns an error if any byte is not valid.
// 4. The impl of validate_byte_slice() returns an error if there are extra bytes.
// 5. The other ULE methods use the default impl.
-// 6. CharULE byte equality is semantic equality
+// 6. TinyAsciiStr byte equality is semantic equality
unsafe impl<const N: usize> ULE for TinyAsciiStr<N> {
#[inline]
fn validate_byte_slice(bytes: &[u8]) -> Result<(), ZeroVecError> {
@@ -52,6 +52,46 @@ impl<'a, const N: usize> ZeroMapKV<'a> for TinyAsciiStr<N> {
type OwnedType = TinyAsciiStr<N>;
}
+// Safety (based on the safety checklist on the ULE trait):
+// 1. UnvalidatedTinyAsciiStr does not include any uninitialized or padding bytes.
+// (achieved by `#[repr(transparent)]` on a type that satisfies this invariant)
+// 2. UnvalidatedTinyAsciiStr is aligned to 1 byte.
+// (achieved by `#[repr(transparent)]` on a type that satisfies this invariant)
+// 3. The impl of validate_byte_slice() returns an error if any byte is not valid.
+// 4. The impl of validate_byte_slice() returns an error if there are extra bytes.
+// 5. The other ULE methods use the default impl.
+// 6. UnvalidatedTinyAsciiStr byte equality is semantic equality
+unsafe impl<const N: usize> ULE for UnvalidatedTinyAsciiStr<N> {
+ #[inline]
+ fn validate_byte_slice(bytes: &[u8]) -> Result<(), ZeroVecError> {
+ if bytes.len() % N != 0 {
+ return Err(ZeroVecError::length::<Self>(bytes.len()));
+ }
+ Ok(())
+ }
+}
+
+impl<const N: usize> AsULE for UnvalidatedTinyAsciiStr<N> {
+ type ULE = Self;
+
+ #[inline]
+ fn to_unaligned(self) -> Self::ULE {
+ self
+ }
+
+ #[inline]
+ fn from_unaligned(unaligned: Self::ULE) -> Self {
+ unaligned
+ }
+}
+
+impl<'a, const N: usize> ZeroMapKV<'a> for UnvalidatedTinyAsciiStr<N> {
+ type Container = ZeroVec<'a, UnvalidatedTinyAsciiStr<N>>;
+ type Slice = ZeroSlice<UnvalidatedTinyAsciiStr<N>>;
+ type GetType = UnvalidatedTinyAsciiStr<N>;
+ type OwnedType = UnvalidatedTinyAsciiStr<N>;
+}
+
#[cfg(test)]
mod test {
use crate::*;
diff --git a/vendor/tinystr/src/unvalidated.rs b/vendor/tinystr/src/unvalidated.rs
new file mode 100644
index 000000000..2fffbbc11
--- /dev/null
+++ b/vendor/tinystr/src/unvalidated.rs
@@ -0,0 +1,104 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use crate::TinyAsciiStr;
+use crate::TinyStrError;
+
+/// A fixed-length bytes array that is expected to be an ASCII string but does not enforce that invariant.
+///
+/// Use this type instead of `TinyAsciiStr` if you don't need to enforce ASCII during deserialization. For
+/// example, strings that are keys of a map don't need to ever be reified as `TinyAsciiStr`s.
+///
+/// The main advantage of this type over `[u8; N]` is that it serializes as a string in
+/// human-readable formats like JSON.
+#[derive(Debug, PartialEq, PartialOrd, Eq, Ord, Clone, Copy)]
+pub struct UnvalidatedTinyAsciiStr<const N: usize>(pub(crate) [u8; N]);
+
+impl<const N: usize> UnvalidatedTinyAsciiStr<N> {
+ #[inline]
+ // Converts into a [`TinyAsciiStr`]. Fails if the bytes are not valid ASCII.
+ pub fn try_into_tinystr(&self) -> Result<TinyAsciiStr<N>, TinyStrError> {
+ TinyAsciiStr::try_from_raw(self.0)
+ }
+
+ #[doc(hidden)]
+ pub const fn from_bytes_unchecked(bytes: [u8; N]) -> Self {
+ Self(bytes)
+ }
+}
+
+impl<const N: usize> TinyAsciiStr<N> {
+ #[inline]
+ // Converts into a [`UnvalidatedTinyAsciiStr`]
+ pub const fn to_unvalidated(self) -> UnvalidatedTinyAsciiStr<N> {
+ UnvalidatedTinyAsciiStr(*self.all_bytes())
+ }
+}
+
+#[cfg(feature = "serde")]
+impl<const N: usize> serde::Serialize for UnvalidatedTinyAsciiStr<N> {
+ fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+ where
+ S: serde::Serializer,
+ {
+ use serde::ser::Error;
+ self.try_into_tinystr()
+ .map_err(|_| S::Error::custom("invalid ascii in UnvalidatedTinyAsciiStr"))?
+ .serialize(serializer)
+ }
+}
+
+macro_rules! deserialize {
+ ($size:literal) => {
+ #[cfg(feature = "serde")]
+ impl<'de, 'a> serde::Deserialize<'de> for UnvalidatedTinyAsciiStr<$size>
+ where
+ 'de: 'a,
+ {
+ fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+ where
+ D: serde::Deserializer<'de>,
+ {
+ if deserializer.is_human_readable() {
+ Ok(TinyAsciiStr::deserialize(deserializer)?.to_unvalidated())
+ } else {
+ Ok(Self(<[u8; $size]>::deserialize(deserializer)?))
+ }
+ }
+ }
+ };
+}
+
+deserialize!(1);
+deserialize!(2);
+deserialize!(3);
+deserialize!(4);
+deserialize!(5);
+deserialize!(6);
+deserialize!(7);
+deserialize!(8);
+deserialize!(9);
+deserialize!(10);
+deserialize!(11);
+deserialize!(12);
+deserialize!(13);
+deserialize!(14);
+deserialize!(15);
+deserialize!(16);
+deserialize!(17);
+deserialize!(18);
+deserialize!(19);
+deserialize!(20);
+deserialize!(21);
+deserialize!(22);
+deserialize!(23);
+deserialize!(24);
+deserialize!(25);
+deserialize!(26);
+deserialize!(27);
+deserialize!(28);
+deserialize!(29);
+deserialize!(30);
+deserialize!(31);
+deserialize!(32);
diff --git a/vendor/toml-0.7.5/.cargo-checksum.json b/vendor/toml-0.7.5/.cargo-checksum.json
new file mode 100644
index 000000000..53126c125
--- /dev/null
+++ b/vendor/toml-0.7.5/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.lock":"57eed6a8fd945be85ab4dfee4331e87b4bc047e2a1b61669b34edf027b3c2c9c","Cargo.toml":"9876b19e6703d915de7fd2a127ff9208996bb966b363df84f4267d2bf83e9ccd","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"a915ead738822da2d74b883c7519d8e558299286bb823e26c7fdece901c3267e","examples/decode.rs":"ebb019364720589b634fa47a3fc4c8ca7ae14c9a6df8c89cd086e421d442cd77","examples/enum_external.rs":"4878e249aa095264c7824fc7b6fd30f9b0ec6891b16fff734a0490d906e1abbe","examples/toml2json.rs":"f69cf930e7e16f57288c27a57de5bf8e4f991abb483114a6c226ac5a3bddef44","src/de.rs":"faf32d0e29f8140c1b62f175dffa3ac4ffbf13034b74222a9c26d0477cd2e2a3","src/edit.rs":"52f1959a6e5c177097372ea04439662262960f2eb41c2b9ef0ce9ce77ed43f60","src/fmt.rs":"f263687a2616b3140373a0809e905e6d2ae049fa516ab2a90e014e2c734c2e87","src/lib.rs":"21982e43114486005dd9a1d31b7e5da425b3fea0e724a437d89fe42d674b4696","src/macros.rs":"b017ca382f25a5e333ba32c091dcdc3a6cb7a254c65f4ee6b4ca758801c8d1cd","src/map.rs":"c2c4b77549e1e6ef7268d4fe8d99cdb7b5de271b9ac22ee186091dbd8c65c2a3","src/ser.rs":"f9c91c2f70c42152531143ae231c6130e4ce930c97b378011e5595ea123ff31b","src/table.rs":"60767350b69b8d74c23e5b57c9e58d2e9e1c19c6cf2ad08820b29515ace42ca0","src/value.rs":"0730f1abdac14c52f97e60a8f0d22566fde743ebe1ddec70a8d9e285017cb640","tests/decoder.rs":"16dff5be5a163a08dfaa8d13422a607f1e33ae4540366839a4c9a2af6c98ee0f","tests/decoder_compliance.rs":"73bde51b0d2051ea513688497543f890292d531327fbaeb90c453d3514786199","tests/encoder.rs":"68294978412df2babd5bb85e42dfc9be6366e0c9d3c9eb3a5196082fbeeb0171","tests/encoder_compliance.rs":"2ef9dec88a05d2b274a4cfd2b5b0fa219af8635eacd025ba63bdf69c6095f4a7","tests/testsuite/de_errors.rs":"1bc8521181f9fbe884db3313a8e8a044b4a1cf4b8956530a3cc8be9bcb5468f8","tests/testsuite/display.rs":"164de8f7108ce1055159a19884d23f770bd25cf0ead6b23f6ff4340931c7afc5","tests/testsuite/display_tricky.rs":"9806743d670e5cc46ee0ffda3f4c1f8ac63ee1e702250f07b7cd2098750d25d1","tests/testsuite/enum_external_deserialize.rs":"28b4705d904b58a973ef27c6cdc948f8d404105f98a55efa111cce9e7b4b1a67","tests/testsuite/float.rs":"5bbd383ac4fbcd276cd4500cba41b434fd70b024c8e78ac332eee5cf727368ec","tests/testsuite/formatting.rs":"3b279ab1f24ebeb07537764107c42be9a84731ead1a88596785186777aafd1ee","tests/testsuite/macros.rs":"8c6cee633eaf500a695f308a8f89703b04f19c0bddc379f81bf02dc4573628af","tests/testsuite/main.rs":"4e40c82147ccfc7094f2c4795b51b575c7d231a7da75814a08fd8e0c52d93f8b","tests/testsuite/pretty.rs":"98fb06578339c97b52a8454f48c19adb9860c54585767e8741268cc26782435f","tests/testsuite/serde.rs":"72921f9e9cc985eaf5b65c05bc5181b2ef947f67ba7fa8e6fe4b239db9037274","tests/testsuite/spanned.rs":"b7522afd8101ba5dd539118a43bccefef66fedef41926d9515f67590961ac7e3","tests/testsuite/spanned_impls.rs":"666c65679365451f67234d50bb3198ac52418ad7ef1dae6916faba78f92c9d02","tests/testsuite/tables_last.rs":"42271f9df94b28f36b934686d4a5c6196140a2975733d1344b6415cb9f1b92ed"},"package":"1ebafdf5ad1220cb59e7d17cf4d2c72015297b75b19a10472f99b89225089240"} \ No newline at end of file
diff --git a/vendor/toml-0.7.5/Cargo.lock b/vendor/toml-0.7.5/Cargo.lock
new file mode 100644
index 000000000..218bc79fe
--- /dev/null
+++ b/vendor/toml-0.7.5/Cargo.lock
@@ -0,0 +1,891 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "aho-corasick"
+version = "0.7.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "anstream"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6342bd4f5a1205d7f41e94a41a901f5647c938cdfa96036338e8533c9d6c2450"
+dependencies = [
+ "anstyle",
+ "anstyle-parse",
+ "anstyle-query",
+ "anstyle-wincon",
+ "colorchoice",
+ "is-terminal",
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41ed9a86bf92ae6580e0a31281f65a1b1d867c0cc68d5346e2ae128dddfa6a7d"
+
+[[package]]
+name = "anstyle-parse"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e765fd216e48e067936442276d1d57399e37bce53c264d6fefbe298080cb57ee"
+dependencies = [
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle-query"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b"
+dependencies = [
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "anstyle-wincon"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188"
+dependencies = [
+ "anstyle",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bstr"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "cc"
+version = "1.0.73"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "chrono"
+version = "0.4.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfd4d1b31faaa3a89d7934dbded3111da0d2ef28e3ebccdb4f0179f5929d1ef1"
+dependencies = [
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "clap"
+version = "4.0.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7db700bc935f9e43e88d00b0850dae18a63773cfbec6d8e070fccf7fef89a39"
+dependencies = [
+ "bitflags",
+ "clap_derive",
+ "clap_lex",
+ "is-terminal",
+ "once_cell",
+ "strsim",
+ "termcolor",
+]
+
+[[package]]
+name = "clap_derive"
+version = "4.0.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0177313f9f02afc995627906bbd8967e2be069f5261954222dac78290c2b9014"
+dependencies = [
+ "heck",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.105",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8"
+dependencies = [
+ "os_str_bytes",
+]
+
+[[package]]
+name = "colorchoice"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1"
+
+[[package]]
+name = "errno"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a"
+dependencies = [
+ "errno-dragonfly",
+ "libc",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "errno-dragonfly"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+dependencies = [
+ "cc",
+ "libc",
+]
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "globset"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0a1e17342619edbc21a964c2afbeb6c820c6a2560032872f397bb97ea127bd0a"
+dependencies = [
+ "aho-corasick",
+ "bstr",
+ "fnv",
+ "log",
+ "regex",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a"
+
+[[package]]
+name = "heck"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9"
+
+[[package]]
+name = "hermit-abi"
+version = "0.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "hermit-abi"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286"
+
+[[package]]
+name = "ignore"
+version = "0.4.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "713f1b139373f96a2e0ce3ac931cd01ee973c3c5dd7c40c0c2efe96ad2b6751d"
+dependencies = [
+ "crossbeam-utils",
+ "globset",
+ "lazy_static",
+ "log",
+ "memchr",
+ "regex",
+ "same-file",
+ "thread_local",
+ "walkdir",
+ "winapi-util",
+]
+
+[[package]]
+name = "include_dir"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e"
+dependencies = [
+ "include_dir_macros",
+]
+
+[[package]]
+name = "include_dir_macros"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d"
+dependencies = [
+ "equivalent",
+ "hashbrown",
+]
+
+[[package]]
+name = "io-lifetimes"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c"
+dependencies = [
+ "libc",
+ "windows-sys 0.42.0",
+]
+
+[[package]]
+name = "is-terminal"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f"
+dependencies = [
+ "hermit-abi 0.3.1",
+ "io-lifetimes",
+ "rustix",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754"
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+[[package]]
+name = "libc"
+version = "0.2.142"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317"
+
+[[package]]
+name = "libtest-mimic"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7b603516767d1ab23d0de09d023e62966c3322f7148297c35cf3d97aa8b37fa"
+dependencies = [
+ "clap",
+ "termcolor",
+ "threadpool",
+]
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b64f40e5e03e0d54f03845c8197d0291253cdbedfb1cb46b13c2c117554a9f4c"
+
+[[package]]
+name = "log"
+version = "0.4.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "memchr"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+
+[[package]]
+name = "normalize-line-endings"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
+
+[[package]]
+name = "num-integer"
+version = "0.1.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+dependencies = [
+ "autocfg",
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
+dependencies = [
+ "hermit-abi 0.1.19",
+ "libc",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1"
+
+[[package]]
+name = "os_str_bytes"
+version = "6.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff"
+
+[[package]]
+name = "proc-macro-error"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+dependencies = [
+ "proc-macro-error-attr",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.105",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-error-attr"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.56"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "regex"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.6.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
+
+[[package]]
+name = "rustix"
+version = "0.37.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2aae838e49b3d63e9274e1c01833cc8139d3fec468c3b84688c628f44b1ae11d"
+dependencies = [
+ "bitflags",
+ "errno",
+ "io-lifetimes",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.45.0",
+]
+
+[[package]]
+name = "ryu"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.160"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.160"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.15",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.96"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1"
+dependencies = [
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "similar"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62ac7f900db32bf3fd12e0117dd3dc4da74bc52ebaac97f39668446d89694803"
+
+[[package]]
+name = "snapbox"
+version = "0.4.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6bccd62078347f89a914e3004d94582e13824d4e3d8a816317862884c423835"
+dependencies = [
+ "anstream",
+ "anstyle",
+ "normalize-line-endings",
+ "similar",
+ "snapbox-macros",
+]
+
+[[package]]
+name = "snapbox-macros"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eaaf09df9f0eeae82be96290918520214530e738a7fe5a351b0f24cf77c0ca31"
+dependencies = [
+ "anstream",
+]
+
+[[package]]
+name = "strsim"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+
+[[package]]
+name = "syn"
+version = "1.0.105"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60b9b43d45702de4c839cb9b51d9f529c5dd26a4aff255b42b1ebc03e88ee908"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "termcolor"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "thread_local"
+version = "1.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "threadpool"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa"
+dependencies = [
+ "num_cpus",
+]
+
+[[package]]
+name = "toml"
+version = "0.7.5"
+dependencies = [
+ "indexmap",
+ "serde",
+ "serde_json",
+ "serde_spanned",
+ "snapbox",
+ "toml-test-harness",
+ "toml_datetime",
+ "toml_edit",
+]
+
+[[package]]
+name = "toml-test"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37351256790aa1dbd6d60f4ff08e55e7f372e292f3e9040d6e077463d9a779c3"
+dependencies = [
+ "chrono",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "toml-test-data"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93f351b6d6005ee802b0d4a53ca1cdf05636f441df4d299e62cba57f1da52646"
+dependencies = [
+ "include_dir",
+]
+
+[[package]]
+name = "toml-test-harness"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e00fda5710922fe6b3005bf6a5050c303d6f9625249c37b7386e8818f4af675"
+dependencies = [
+ "ignore",
+ "libtest-mimic",
+ "toml-test",
+ "toml-test-data",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.19.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "266f016b7f039eec8a1a80dfe6156b633d208b9fccca5e4db1d6775b0c4e34a7"
+dependencies = [
+ "indexmap",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd"
+
+[[package]]
+name = "utf8parse"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
+name = "walkdir"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
+dependencies = [
+ "same-file",
+ "winapi",
+ "winapi-util",
+]
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows-sys"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
+dependencies = [
+ "windows_aarch64_gnullvm 0.42.1",
+ "windows_aarch64_msvc 0.42.1",
+ "windows_i686_gnu 0.42.1",
+ "windows_i686_msvc 0.42.1",
+ "windows_x86_64_gnu 0.42.1",
+ "windows_x86_64_gnullvm 0.42.1",
+ "windows_x86_64_msvc 0.42.1",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.45.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
+dependencies = [
+ "windows-targets 0.42.1",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.0",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7"
+dependencies = [
+ "windows_aarch64_gnullvm 0.42.1",
+ "windows_aarch64_msvc 0.42.1",
+ "windows_i686_gnu 0.42.1",
+ "windows_i686_msvc 0.42.1",
+ "windows_x86_64_gnu 0.42.1",
+ "windows_x86_64_gnullvm 0.42.1",
+ "windows_x86_64_msvc 0.42.1",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.0",
+ "windows_aarch64_msvc 0.48.0",
+ "windows_i686_gnu 0.48.0",
+ "windows_i686_msvc 0.48.0",
+ "windows_x86_64_gnu 0.48.0",
+ "windows_x86_64_gnullvm 0.48.0",
+ "windows_x86_64_msvc 0.48.0",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
+
+[[package]]
+name = "winnow"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61de7bac303dc551fe038e2b3cef0f571087a47571ea6e79a87692ac99b99699"
+dependencies = [
+ "memchr",
+]
diff --git a/vendor/toml-0.7.5/Cargo.toml b/vendor/toml-0.7.5/Cargo.toml
new file mode 100644
index 000000000..4201e09f2
--- /dev/null
+++ b/vendor/toml-0.7.5/Cargo.toml
@@ -0,0 +1,159 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.64.0"
+name = "toml"
+version = "0.7.5"
+authors = ["Alex Crichton <alex@alexcrichton.com>"]
+include = [
+ "build.rs",
+ "src/**/*",
+ "Cargo.toml",
+ "Cargo.lock",
+ "LICENSE*",
+ "README.md",
+ "benches/**/*",
+ "examples/**/*",
+ "tests/**/*",
+]
+description = """
+A native Rust encoder and decoder of TOML-formatted files and streams. Provides
+implementations of the standard Serialize/Deserialize traits for TOML data to
+facilitate deserializing and serializing Rust structures.
+"""
+homepage = "https://github.com/toml-rs/toml"
+readme = "README.md"
+keywords = [
+ "encoding",
+ "toml",
+]
+categories = [
+ "encoding",
+ "parser-implementations",
+ "parsing",
+ "config",
+]
+license = "MIT OR Apache-2.0"
+repository = "https://github.com/toml-rs/toml"
+
+[package.metadata.docs.rs]
+rustdoc-args = [
+ "--cfg",
+ "docsrs",
+]
+
+[[package.metadata.release.pre-release-replacements]]
+file = "CHANGELOG.md"
+min = 1
+replace = "{{version}}"
+search = "Unreleased"
+
+[[package.metadata.release.pre-release-replacements]]
+exactly = 1
+file = "CHANGELOG.md"
+replace = "...{{tag_name}}"
+search = '\.\.\.HEAD'
+
+[[package.metadata.release.pre-release-replacements]]
+file = "CHANGELOG.md"
+min = 1
+replace = "{{date}}"
+search = "ReleaseDate"
+
+[[package.metadata.release.pre-release-replacements]]
+exactly = 1
+file = "CHANGELOG.md"
+replace = """
+<!-- next-header -->
+## [Unreleased] - ReleaseDate
+"""
+search = "<!-- next-header -->"
+
+[[package.metadata.release.pre-release-replacements]]
+exactly = 1
+file = "CHANGELOG.md"
+replace = """
+<!-- next-url -->
+[Unreleased]: https://github.com/toml-rs/toml/compare/{{tag_name}}...HEAD"""
+search = "<!-- next-url -->"
+
+[[example]]
+name = "decode"
+required-features = [
+ "parse",
+ "display",
+]
+
+[[example]]
+name = "enum_external"
+required-features = [
+ "parse",
+ "display",
+]
+
+[[example]]
+name = "toml2json"
+required-features = [
+ "parse",
+ "display",
+]
+
+[[test]]
+name = "decoder_compliance"
+harness = false
+
+[[test]]
+name = "encoder_compliance"
+harness = false
+
+[dependencies.indexmap]
+version = "2.0.0"
+optional = true
+
+[dependencies.serde]
+version = "1.0.145"
+
+[dependencies.serde_spanned]
+version = "0.6.3"
+features = ["serde"]
+
+[dependencies.toml_datetime]
+version = "0.6.3"
+features = ["serde"]
+
+[dependencies.toml_edit]
+version = "0.19.11"
+features = ["serde"]
+optional = true
+
+[dev-dependencies.serde]
+version = "1.0.160"
+features = ["derive"]
+
+[dev-dependencies.serde_json]
+version = "1.0.96"
+
+[dev-dependencies.snapbox]
+version = "0.4.11"
+
+[dev-dependencies.toml-test-harness]
+version = "0.4.3"
+
+[features]
+default = [
+ "parse",
+ "display",
+]
+display = ["dep:toml_edit"]
+parse = ["dep:toml_edit"]
+preserve_order = ["indexmap"]
diff --git a/vendor/rustix-0.37.6/LICENSE-APACHE b/vendor/toml-0.7.5/LICENSE-APACHE
index 16fe87b06..16fe87b06 100644
--- a/vendor/rustix-0.37.6/LICENSE-APACHE
+++ b/vendor/toml-0.7.5/LICENSE-APACHE
diff --git a/vendor/libm-0.1.4/LICENSE-MIT b/vendor/toml-0.7.5/LICENSE-MIT
index 432fbea04..39e0ed660 100644
--- a/vendor/libm-0.1.4/LICENSE-MIT
+++ b/vendor/toml-0.7.5/LICENSE-MIT
@@ -1,4 +1,4 @@
-Copyright (c) 2018 Jorge Aparicio
+Copyright (c) 2014 Alex Crichton
Permission is hereby granted, free of charge, to any
person obtaining a copy of this software and associated
diff --git a/vendor/toml-0.7.5/README.md b/vendor/toml-0.7.5/README.md
new file mode 100644
index 000000000..82960dda9
--- /dev/null
+++ b/vendor/toml-0.7.5/README.md
@@ -0,0 +1,29 @@
+# toml
+
+[![Latest Version](https://img.shields.io/crates/v/toml.svg)](https://crates.io/crates/toml)
+[![Documentation](https://docs.rs/toml/badge.svg)](https://docs.rs/toml)
+
+A [serde]-compatible [TOML][toml] decoder and encoder for Rust.
+
+For format-preserving edits or finer control over output, see [toml_edit]
+
+[serde]: https://serde.rs/
+[toml]: https://github.com/toml-lang/toml
+[toml_edit]: https://docs.rs/toml_edit
+
+# License
+
+This project is licensed under either of
+
+ * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
+ http://www.apache.org/licenses/LICENSE-2.0)
+ * MIT license ([LICENSE-MIT](LICENSE-MIT) or
+ http://opensource.org/licenses/MIT)
+
+at your option.
+
+### Contribution
+
+Unless you explicitly state otherwise, any contribution intentionally submitted
+for inclusion in toml-rs by you, as defined in the Apache-2.0 license, shall be
+dual licensed as above, without any additional terms or conditions.
diff --git a/vendor/toml-0.7.5/examples/decode.rs b/vendor/toml-0.7.5/examples/decode.rs
new file mode 100644
index 000000000..348e91165
--- /dev/null
+++ b/vendor/toml-0.7.5/examples/decode.rs
@@ -0,0 +1,54 @@
+//! An example showing off the usage of `Deserialize` to automatically decode
+//! TOML into a Rust `struct`
+
+#![deny(warnings)]
+#![allow(dead_code)]
+
+use serde::Deserialize;
+
+/// This is what we're going to decode into. Each field is optional, meaning
+/// that it doesn't have to be present in TOML.
+#[derive(Debug, Deserialize)]
+struct Config {
+ global_string: Option<String>,
+ global_integer: Option<u64>,
+ server: Option<ServerConfig>,
+ peers: Option<Vec<PeerConfig>>,
+}
+
+/// Sub-structs are decoded from tables, so this will decode from the `[server]`
+/// table.
+///
+/// Again, each field is optional, meaning they don't have to be present.
+#[derive(Debug, Deserialize)]
+struct ServerConfig {
+ ip: Option<String>,
+ port: Option<u64>,
+}
+
+#[derive(Debug, Deserialize)]
+struct PeerConfig {
+ ip: Option<String>,
+ port: Option<u64>,
+}
+
+fn main() {
+ let toml_str = r#"
+ global_string = "test"
+ global_integer = 5
+
+ [server]
+ ip = "127.0.0.1"
+ port = 80
+
+ [[peers]]
+ ip = "127.0.0.1"
+ port = 8080
+
+ [[peers]]
+ ip = "127.0.0.1"
+ "#;
+
+ let decoded: Config = toml::from_str(toml_str).unwrap();
+ println!("{:#?}", decoded);
+}
diff --git a/vendor/toml-0.7.5/examples/enum_external.rs b/vendor/toml-0.7.5/examples/enum_external.rs
new file mode 100644
index 000000000..edac7d6ec
--- /dev/null
+++ b/vendor/toml-0.7.5/examples/enum_external.rs
@@ -0,0 +1,45 @@
+//! An example showing off the usage of `Deserialize` to automatically decode
+//! TOML into a Rust `struct`, with enums.
+
+#![deny(warnings)]
+#![allow(dead_code)]
+
+use serde::Deserialize;
+
+/// This is what we're going to decode into.
+#[derive(Debug, Deserialize)]
+struct Config {
+ plain: MyEnum,
+ plain_table: MyEnum,
+ tuple: MyEnum,
+ #[serde(rename = "struct")]
+ structv: MyEnum,
+ newtype: MyEnum,
+ my_enum: Vec<MyEnum>,
+}
+
+#[derive(Debug, Deserialize)]
+enum MyEnum {
+ Plain,
+ Tuple(i64, bool),
+ NewType(String),
+ Struct { value: i64 },
+}
+
+fn main() {
+ let toml_str = r#"
+ plain = "Plain"
+ plain_table = { Plain = {} }
+ tuple = { Tuple = { 0 = 123, 1 = true } }
+ struct = { Struct = { value = 123 } }
+ newtype = { NewType = "value" }
+ my_enum = [
+ { Plain = {} },
+ { Tuple = { 0 = 123, 1 = true } },
+ { NewType = "value" },
+ { Struct = { value = 123 } }
+ ]"#;
+
+ let decoded: Config = toml::from_str(toml_str).unwrap();
+ println!("{:#?}", decoded);
+}
diff --git a/vendor/toml-0.7.5/examples/toml2json.rs b/vendor/toml-0.7.5/examples/toml2json.rs
new file mode 100644
index 000000000..3660611c4
--- /dev/null
+++ b/vendor/toml-0.7.5/examples/toml2json.rs
@@ -0,0 +1,47 @@
+#![deny(warnings)]
+
+use std::env;
+use std::fs::File;
+use std::io;
+use std::io::prelude::*;
+
+use serde_json::Value as Json;
+use toml::Value as Toml;
+
+fn main() {
+ let mut args = env::args();
+ let mut input = String::new();
+ if args.len() > 1 {
+ let name = args.nth(1).unwrap();
+ File::open(name)
+ .and_then(|mut f| f.read_to_string(&mut input))
+ .unwrap();
+ } else {
+ io::stdin().read_to_string(&mut input).unwrap();
+ }
+
+ match input.parse() {
+ Ok(toml) => {
+ let json = convert(toml);
+ println!("{}", serde_json::to_string_pretty(&json).unwrap());
+ }
+ Err(error) => println!("failed to parse TOML: {}", error),
+ }
+}
+
+fn convert(toml: Toml) -> Json {
+ match toml {
+ Toml::String(s) => Json::String(s),
+ Toml::Integer(i) => Json::Number(i.into()),
+ Toml::Float(f) => {
+ let n = serde_json::Number::from_f64(f).expect("float infinite and nan not allowed");
+ Json::Number(n)
+ }
+ Toml::Boolean(b) => Json::Bool(b),
+ Toml::Array(arr) => Json::Array(arr.into_iter().map(convert).collect()),
+ Toml::Table(table) => {
+ Json::Object(table.into_iter().map(|(k, v)| (k, convert(v))).collect())
+ }
+ Toml::Datetime(dt) => Json::String(dt.to_string()),
+ }
+}
diff --git a/vendor/toml-0.7.5/src/de.rs b/vendor/toml-0.7.5/src/de.rs
new file mode 100644
index 000000000..9eb4c4188
--- /dev/null
+++ b/vendor/toml-0.7.5/src/de.rs
@@ -0,0 +1,322 @@
+//! Deserializing TOML into Rust structures.
+//!
+//! This module contains all the Serde support for deserializing TOML documents
+//! into Rust structures. Note that some top-level functions here are also
+//! provided at the top of the crate.
+
+/// Deserializes a string into a type.
+///
+/// This function will attempt to interpret `s` as a TOML document and
+/// deserialize `T` from the document.
+///
+/// To deserializes TOML values, instead of documents, see [`ValueDeserializer`].
+///
+/// # Examples
+///
+/// ```
+/// use serde::Deserialize;
+///
+/// #[derive(Deserialize)]
+/// struct Config {
+/// title: String,
+/// owner: Owner,
+/// }
+///
+/// #[derive(Deserialize)]
+/// struct Owner {
+/// name: String,
+/// }
+///
+/// let config: Config = toml::from_str(r#"
+/// title = 'TOML Example'
+///
+/// [owner]
+/// name = 'Lisa'
+/// "#).unwrap();
+///
+/// assert_eq!(config.title, "TOML Example");
+/// assert_eq!(config.owner.name, "Lisa");
+/// ```
+#[cfg(feature = "parse")]
+pub fn from_str<T>(s: &'_ str) -> Result<T, Error>
+where
+ T: serde::de::DeserializeOwned,
+{
+ T::deserialize(Deserializer::new(s))
+}
+
+/// Errors that can occur when deserializing a type.
+#[derive(Debug, PartialEq, Eq, Clone)]
+pub struct Error {
+ inner: crate::edit::de::Error,
+}
+
+impl Error {
+ fn new(inner: crate::edit::de::Error) -> Self {
+ Self { inner }
+ }
+
+ pub(crate) fn add_key(&mut self, key: String) {
+ self.inner.add_key(key)
+ }
+
+ /// What went wrong
+ pub fn message(&self) -> &str {
+ self.inner.message()
+ }
+
+ /// The start/end index into the original document where the error occurred
+ #[cfg(feature = "parse")]
+ pub fn span(&self) -> Option<std::ops::Range<usize>> {
+ self.inner.span()
+ }
+}
+
+impl serde::de::Error for Error {
+ fn custom<T>(msg: T) -> Self
+ where
+ T: std::fmt::Display,
+ {
+ Error::new(crate::edit::de::Error::custom(msg))
+ }
+}
+
+impl std::fmt::Display for Error {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ self.inner.fmt(f)
+ }
+}
+
+impl std::error::Error for Error {}
+
+/// Deserialization TOML document
+///
+/// To deserializes TOML values, instead of documents, see [`ValueDeserializer`].
+#[cfg(feature = "parse")]
+pub struct Deserializer<'a> {
+ input: &'a str,
+}
+
+#[cfg(feature = "parse")]
+impl<'a> Deserializer<'a> {
+ /// Deserialization implementation for TOML.
+ pub fn new(input: &'a str) -> Self {
+ Self { input }
+ }
+}
+
+#[cfg(feature = "parse")]
+impl<'de, 'a> serde::Deserializer<'de> for Deserializer<'a> {
+ type Error = Error;
+
+ fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ let inner = self
+ .input
+ .parse::<toml_edit::de::Deserializer>()
+ .map_err(Error::new)?;
+ inner.deserialize_any(visitor).map_err(Error::new)
+ }
+
+ // `None` is interpreted as a missing field so be sure to implement `Some`
+ // as a present field.
+ fn deserialize_option<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ let inner = self
+ .input
+ .parse::<toml_edit::de::Deserializer>()
+ .map_err(Error::new)?;
+ inner.deserialize_option(visitor).map_err(Error::new)
+ }
+
+ fn deserialize_newtype_struct<V>(
+ self,
+ name: &'static str,
+ visitor: V,
+ ) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ let inner = self
+ .input
+ .parse::<toml_edit::de::Deserializer>()
+ .map_err(Error::new)?;
+ inner
+ .deserialize_newtype_struct(name, visitor)
+ .map_err(Error::new)
+ }
+
+ fn deserialize_struct<V>(
+ self,
+ name: &'static str,
+ fields: &'static [&'static str],
+ visitor: V,
+ ) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ let inner = self
+ .input
+ .parse::<toml_edit::de::Deserializer>()
+ .map_err(Error::new)?;
+ inner
+ .deserialize_struct(name, fields, visitor)
+ .map_err(Error::new)
+ }
+
+ // Called when the type to deserialize is an enum, as opposed to a field in the type.
+ fn deserialize_enum<V>(
+ self,
+ name: &'static str,
+ variants: &'static [&'static str],
+ visitor: V,
+ ) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ let inner = self
+ .input
+ .parse::<toml_edit::de::Deserializer>()
+ .map_err(Error::new)?;
+ inner
+ .deserialize_enum(name, variants, visitor)
+ .map_err(Error::new)
+ }
+
+ serde::forward_to_deserialize_any! {
+ bool u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 char str string seq
+ bytes byte_buf map unit
+ ignored_any unit_struct tuple_struct tuple identifier
+ }
+}
+
+/// Deserialization TOML [value][crate::Value]
+///
+/// # Example
+///
+/// ```
+/// use serde::Deserialize;
+///
+/// #[derive(Deserialize)]
+/// struct Config {
+/// title: String,
+/// owner: Owner,
+/// }
+///
+/// #[derive(Deserialize)]
+/// struct Owner {
+/// name: String,
+/// }
+///
+/// let config = Config::deserialize(toml::de::ValueDeserializer::new(
+/// r#"{ title = 'TOML Example', owner = { name = 'Lisa' } }"#
+/// )).unwrap();
+///
+/// assert_eq!(config.title, "TOML Example");
+/// assert_eq!(config.owner.name, "Lisa");
+/// ```
+#[cfg(feature = "parse")]
+pub struct ValueDeserializer<'a> {
+ input: &'a str,
+}
+
+#[cfg(feature = "parse")]
+impl<'a> ValueDeserializer<'a> {
+ /// Deserialization implementation for TOML.
+ pub fn new(input: &'a str) -> Self {
+ Self { input }
+ }
+}
+
+#[cfg(feature = "parse")]
+impl<'de, 'a> serde::Deserializer<'de> for ValueDeserializer<'a> {
+ type Error = Error;
+
+ fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ let inner = self
+ .input
+ .parse::<toml_edit::de::ValueDeserializer>()
+ .map_err(Error::new)?;
+ inner.deserialize_any(visitor).map_err(Error::new)
+ }
+
+ // `None` is interpreted as a missing field so be sure to implement `Some`
+ // as a present field.
+ fn deserialize_option<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ let inner = self
+ .input
+ .parse::<toml_edit::de::ValueDeserializer>()
+ .map_err(Error::new)?;
+ inner.deserialize_option(visitor).map_err(Error::new)
+ }
+
+ fn deserialize_newtype_struct<V>(
+ self,
+ name: &'static str,
+ visitor: V,
+ ) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ let inner = self
+ .input
+ .parse::<toml_edit::de::ValueDeserializer>()
+ .map_err(Error::new)?;
+ inner
+ .deserialize_newtype_struct(name, visitor)
+ .map_err(Error::new)
+ }
+
+ fn deserialize_struct<V>(
+ self,
+ name: &'static str,
+ fields: &'static [&'static str],
+ visitor: V,
+ ) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ let inner = self
+ .input
+ .parse::<toml_edit::de::ValueDeserializer>()
+ .map_err(Error::new)?;
+ inner
+ .deserialize_struct(name, fields, visitor)
+ .map_err(Error::new)
+ }
+
+ // Called when the type to deserialize is an enum, as opposed to a field in the type.
+ fn deserialize_enum<V>(
+ self,
+ name: &'static str,
+ variants: &'static [&'static str],
+ visitor: V,
+ ) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ let inner = self
+ .input
+ .parse::<toml_edit::de::ValueDeserializer>()
+ .map_err(Error::new)?;
+ inner
+ .deserialize_enum(name, variants, visitor)
+ .map_err(Error::new)
+ }
+
+ serde::forward_to_deserialize_any! {
+ bool u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 char str string seq
+ bytes byte_buf map unit
+ ignored_any unit_struct tuple_struct tuple identifier
+ }
+}
diff --git a/vendor/toml-0.7.5/src/edit.rs b/vendor/toml-0.7.5/src/edit.rs
new file mode 100644
index 000000000..90fb284ca
--- /dev/null
+++ b/vendor/toml-0.7.5/src/edit.rs
@@ -0,0 +1,91 @@
+#[cfg(feature = "parse")]
+pub(crate) mod de {
+ pub(crate) use toml_edit::de::Error;
+}
+
+#[cfg(not(feature = "parse"))]
+pub(crate) mod de {
+ /// Errors that can occur when deserializing a type.
+ #[derive(Debug, Clone, PartialEq, Eq)]
+ pub struct Error {
+ inner: String,
+ }
+
+ impl Error {
+ /// Add key while unwinding
+ pub fn add_key(&mut self, _key: String) {}
+
+ /// What went wrong
+ pub fn message(&self) -> &str {
+ self.inner.as_str()
+ }
+ }
+
+ impl serde::de::Error for Error {
+ fn custom<T>(msg: T) -> Self
+ where
+ T: std::fmt::Display,
+ {
+ Error {
+ inner: msg.to_string(),
+ }
+ }
+ }
+
+ impl std::fmt::Display for Error {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ self.inner.fmt(f)
+ }
+ }
+
+ impl std::error::Error for Error {}
+}
+
+#[cfg(feature = "display")]
+pub(crate) mod ser {
+ pub(crate) use toml_edit::ser::Error;
+}
+
+#[cfg(not(feature = "display"))]
+pub(crate) mod ser {
+ #[derive(Debug, Clone, PartialEq, Eq)]
+ #[non_exhaustive]
+ pub(crate) enum Error {
+ UnsupportedType(Option<&'static str>),
+ UnsupportedNone,
+ KeyNotString,
+ Custom(String),
+ }
+
+ impl Error {
+ pub(crate) fn custom<T>(msg: T) -> Self
+ where
+ T: std::fmt::Display,
+ {
+ Error::Custom(msg.to_string())
+ }
+ }
+
+ impl serde::ser::Error for Error {
+ fn custom<T>(msg: T) -> Self
+ where
+ T: std::fmt::Display,
+ {
+ Self::custom(msg)
+ }
+ }
+
+ impl std::fmt::Display for Error {
+ fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ match self {
+ Self::UnsupportedType(Some(t)) => write!(formatter, "unsupported {t} type"),
+ Self::UnsupportedType(None) => write!(formatter, "unsupported rust type"),
+ Self::UnsupportedNone => "unsupported None value".fmt(formatter),
+ Self::KeyNotString => "map key was not a string".fmt(formatter),
+ Self::Custom(s) => s.fmt(formatter),
+ }
+ }
+ }
+
+ impl std::error::Error for Error {}
+}
diff --git a/vendor/toml-0.7.5/src/fmt.rs b/vendor/toml-0.7.5/src/fmt.rs
new file mode 100644
index 000000000..0e96bf050
--- /dev/null
+++ b/vendor/toml-0.7.5/src/fmt.rs
@@ -0,0 +1,60 @@
+#[derive(Copy, Clone, Default)]
+pub(crate) struct DocumentFormatter {
+ pub(crate) multiline_array: bool,
+}
+
+impl toml_edit::visit_mut::VisitMut for DocumentFormatter {
+ fn visit_document_mut(&mut self, node: &mut toml_edit::Document) {
+ toml_edit::visit_mut::visit_document_mut(self, node);
+ }
+
+ fn visit_item_mut(&mut self, node: &mut toml_edit::Item) {
+ let other = std::mem::take(node);
+ let other = match other.into_table().map(toml_edit::Item::Table) {
+ Ok(i) => i,
+ Err(i) => i,
+ };
+ let other = match other
+ .into_array_of_tables()
+ .map(toml_edit::Item::ArrayOfTables)
+ {
+ Ok(i) => i,
+ Err(i) => i,
+ };
+ *node = other;
+
+ toml_edit::visit_mut::visit_item_mut(self, node);
+ }
+
+ fn visit_table_mut(&mut self, node: &mut toml_edit::Table) {
+ node.decor_mut().clear();
+
+ // Empty tables could be semantically meaningful, so make sure they are not implicit
+ if !node.is_empty() {
+ node.set_implicit(true);
+ }
+
+ toml_edit::visit_mut::visit_table_mut(self, node);
+ }
+
+ fn visit_value_mut(&mut self, node: &mut toml_edit::Value) {
+ node.decor_mut().clear();
+
+ toml_edit::visit_mut::visit_value_mut(self, node);
+ }
+
+ fn visit_array_mut(&mut self, node: &mut toml_edit::Array) {
+ toml_edit::visit_mut::visit_array_mut(self, node);
+
+ if !self.multiline_array || (0..=1).contains(&node.len()) {
+ node.set_trailing("");
+ node.set_trailing_comma(false);
+ } else {
+ for item in node.iter_mut() {
+ item.decor_mut().set_prefix("\n ");
+ }
+ node.set_trailing("\n");
+ node.set_trailing_comma(true);
+ }
+ }
+}
diff --git a/vendor/toml-0.7.5/src/lib.rs b/vendor/toml-0.7.5/src/lib.rs
new file mode 100644
index 000000000..61e6a4c75
--- /dev/null
+++ b/vendor/toml-0.7.5/src/lib.rs
@@ -0,0 +1,182 @@
+//! A [serde]-compatible [TOML]-parsing library
+//!
+//! TOML itself is a simple, ergonomic, and readable configuration format:
+//!
+//! ```toml
+//! [package]
+//! name = "toml"
+//! version = "0.4.2"
+//! authors = ["Alex Crichton <alex@alexcrichton.com>"]
+//!
+//! [dependencies]
+//! serde = "1.0"
+//! ```
+//!
+//! The TOML format tends to be relatively common throughout the Rust community
+//! for configuration, notably being used by [Cargo], Rust's package manager.
+//!
+//! ## TOML values
+//!
+//! A TOML document is represented with the [`Table`] type which maps `String` to the [`Value`] enum:
+//!
+//! ```rust
+//! # use toml::value::{Datetime, Array, Table};
+//! pub enum Value {
+//! String(String),
+//! Integer(i64),
+//! Float(f64),
+//! Boolean(bool),
+//! Datetime(Datetime),
+//! Array(Array),
+//! Table(Table),
+//! }
+//! ```
+//!
+//! ## Parsing TOML
+//!
+//! The easiest way to parse a TOML document is via the [`Table`] type:
+//!
+#![cfg_attr(not(feature = "parse"), doc = " ```ignore")]
+#![cfg_attr(feature = "parse", doc = " ```")]
+//! use toml::Table;
+//!
+//! let value = "foo = 'bar'".parse::<Table>().unwrap();
+//!
+//! assert_eq!(value["foo"].as_str(), Some("bar"));
+//! ```
+//!
+//! The [`Table`] type implements a number of convenience methods and
+//! traits; the example above uses [`FromStr`] to parse a [`str`] into a
+//! [`Table`].
+//!
+//! ## Deserialization and Serialization
+//!
+//! This crate supports [`serde`] 1.0 with a number of
+//! implementations of the `Deserialize`, `Serialize`, `Deserializer`, and
+//! `Serializer` traits. Namely, you'll find:
+//!
+//! * `Deserialize for Table`
+//! * `Serialize for Table`
+//! * `Deserialize for Value`
+//! * `Serialize for Value`
+//! * `Deserialize for Datetime`
+//! * `Serialize for Datetime`
+//! * `Deserializer for de::Deserializer`
+//! * `Serializer for ser::Serializer`
+//! * `Deserializer for Table`
+//! * `Deserializer for Value`
+//!
+//! This means that you can use Serde to deserialize/serialize the
+//! [`Table`] type as well as [`Value`] and [`Datetime`] type in this crate. You can also
+//! use the [`Deserializer`], [`Serializer`], or [`Table`] type itself to act as
+//! a deserializer/serializer for arbitrary types.
+//!
+//! An example of deserializing with TOML is:
+//!
+#![cfg_attr(not(feature = "parse"), doc = " ```ignore")]
+#![cfg_attr(feature = "parse", doc = " ```")]
+//! use serde::Deserialize;
+//!
+//! #[derive(Deserialize)]
+//! struct Config {
+//! ip: String,
+//! port: Option<u16>,
+//! keys: Keys,
+//! }
+//!
+//! #[derive(Deserialize)]
+//! struct Keys {
+//! github: String,
+//! travis: Option<String>,
+//! }
+//!
+//! let config: Config = toml::from_str(r#"
+//! ip = '127.0.0.1'
+//!
+//! [keys]
+//! github = 'xxxxxxxxxxxxxxxxx'
+//! travis = 'yyyyyyyyyyyyyyyyy'
+//! "#).unwrap();
+//!
+//! assert_eq!(config.ip, "127.0.0.1");
+//! assert_eq!(config.port, None);
+//! assert_eq!(config.keys.github, "xxxxxxxxxxxxxxxxx");
+//! assert_eq!(config.keys.travis.as_ref().unwrap(), "yyyyyyyyyyyyyyyyy");
+//! ```
+//!
+//! You can serialize types in a similar fashion:
+//!
+#![cfg_attr(not(feature = "display"), doc = " ```ignore")]
+#![cfg_attr(feature = "display", doc = " ```")]
+//! use serde::Serialize;
+//!
+//! #[derive(Serialize)]
+//! struct Config {
+//! ip: String,
+//! port: Option<u16>,
+//! keys: Keys,
+//! }
+//!
+//! #[derive(Serialize)]
+//! struct Keys {
+//! github: String,
+//! travis: Option<String>,
+//! }
+//!
+//! let config = Config {
+//! ip: "127.0.0.1".to_string(),
+//! port: None,
+//! keys: Keys {
+//! github: "xxxxxxxxxxxxxxxxx".to_string(),
+//! travis: Some("yyyyyyyyyyyyyyyyy".to_string()),
+//! },
+//! };
+//!
+//! let toml = toml::to_string(&config).unwrap();
+//! ```
+//!
+//! [TOML]: https://github.com/toml-lang/toml
+//! [Cargo]: https://crates.io/
+//! [`serde`]: https://serde.rs/
+//! [serde]: https://serde.rs/
+
+#![deny(missing_docs)]
+#![warn(rust_2018_idioms)]
+// Makes rustc abort compilation if there are any unsafe blocks in the crate.
+// Presence of this annotation is picked up by tools such as cargo-geiger
+// and lets them ensure that there is indeed no unsafe code as opposed to
+// something they couldn't detect (e.g. unsafe added via macro expansion, etc).
+#![forbid(unsafe_code)]
+#![cfg_attr(docsrs, feature(doc_auto_cfg))]
+
+pub mod map;
+pub mod value;
+
+pub mod de;
+pub mod ser;
+
+#[doc(hidden)]
+pub mod macros;
+
+mod edit;
+#[cfg(feature = "display")]
+mod fmt;
+mod table;
+
+#[cfg(feature = "parse")]
+#[doc(inline)]
+pub use crate::de::{from_str, Deserializer};
+#[cfg(feature = "display")]
+#[doc(inline)]
+pub use crate::ser::{to_string, to_string_pretty, Serializer};
+#[doc(inline)]
+pub use crate::value::Value;
+
+pub use serde_spanned::Spanned;
+pub use table::Table;
+
+// Shortcuts for the module doc-comment
+#[allow(unused_imports)]
+use core::str::FromStr;
+#[allow(unused_imports)]
+use toml_datetime::Datetime;
diff --git a/vendor/toml-0.7.5/src/macros.rs b/vendor/toml-0.7.5/src/macros.rs
new file mode 100644
index 000000000..d86cc52f5
--- /dev/null
+++ b/vendor/toml-0.7.5/src/macros.rs
@@ -0,0 +1,460 @@
+pub use serde::de::{Deserialize, IntoDeserializer};
+
+use crate::value::{Array, Table, Value};
+
+/// Construct a [`Table`] from TOML syntax.
+///
+/// ```rust
+/// let cargo_toml = toml::toml! {
+/// [package]
+/// name = "toml"
+/// version = "0.4.5"
+/// authors = ["Alex Crichton <alex@alexcrichton.com>"]
+///
+/// [badges]
+/// travis-ci = { repository = "alexcrichton/toml-rs" }
+///
+/// [dependencies]
+/// serde = "1.0"
+///
+/// [dev-dependencies]
+/// serde_derive = "1.0"
+/// serde_json = "1.0"
+/// };
+///
+/// println!("{:#?}", cargo_toml);
+/// ```
+#[macro_export]
+macro_rules! toml {
+ ($($toml:tt)+) => {{
+ let table = $crate::value::Table::new();
+ let mut root = $crate::Value::Table(table);
+ $crate::toml_internal!(@toplevel root [] $($toml)+);
+ match root {
+ $crate::Value::Table(table) => table,
+ _ => unreachable!(),
+ }
+ }};
+}
+
+// TT-muncher to parse TOML syntax into a toml::Value.
+//
+// @toplevel -- Parse tokens outside of an inline table or inline array. In
+// this state, `[table headers]` and `[[array headers]]` are
+// allowed and `key = value` pairs are not separated by commas.
+//
+// @topleveldatetime -- Helper to parse a Datetime from string and insert it
+// into a table, continuing in the @toplevel state.
+//
+// @path -- Turn a path segment into a string. Segments that look like idents
+// are stringified, while quoted segments like `"cfg(windows)"`
+// are not.
+//
+// @value -- Parse the value part of a `key = value` pair, which may be a
+// primitive or inline table or inline array.
+//
+// @table -- Parse the contents of an inline table, returning them as a
+// toml::Value::Table.
+//
+// @tabledatetime -- Helper to parse a Datetime from string and insert it
+// into a table, continuing in the @table state.
+//
+// @array -- Parse the contents of an inline array, returning them as a
+// toml::Value::Array.
+//
+// @arraydatetime -- Helper to parse a Datetime from string and push it into
+// an array, continuing in the @array state.
+//
+// @trailingcomma -- Helper to append a comma to a sequence of tokens if the
+// sequence is non-empty and does not already end in a trailing
+// comma.
+//
+#[macro_export]
+#[doc(hidden)]
+macro_rules! toml_internal {
+ // Base case, no elements remaining.
+ (@toplevel $root:ident [$($path:tt)*]) => {};
+
+ // Parse negative number `key = -value`.
+ (@toplevel $root:ident [$($path:tt)*] $($($k:tt)-+).+ = - $v:tt $($rest:tt)*) => {
+ $crate::toml_internal!(@toplevel $root [$($path)*] $($($k)-+).+ = (-$v) $($rest)*);
+ };
+
+ // Parse positive number `key = +value`.
+ (@toplevel $root:ident [$($path:tt)*] $($($k:tt)-+).+ = + $v:tt $($rest:tt)*) => {
+ $crate::toml_internal!(@toplevel $root [$($path)*] $($($k)-+).+ = ($v) $($rest)*);
+ };
+
+ // Parse offset datetime `key = 1979-05-27T00:32:00.999999-07:00`.
+ (@toplevel $root:ident [$($path:tt)*] $($($k:tt)-+).+ = $yr:tt - $mo:tt - $dhr:tt : $min:tt : $sec:tt . $frac:tt - $tzh:tt : $tzm:tt $($rest:tt)*) => {
+ $crate::toml_internal!(@topleveldatetime $root [$($path)*] $($($k)-+).+ = ($yr - $mo - $dhr : $min : $sec . $frac - $tzh : $tzm) $($rest)*);
+ };
+ // Space instead of T.
+ (@toplevel $root:ident [$($path:tt)*] $($($k:tt)-+).+ = $yr:tt - $mo:tt - $day:tt $hr:tt : $min:tt : $sec:tt . $frac:tt - $tzh:tt : $tzm:tt $($rest:tt)*) => {
+ $crate::toml_internal!(@topleveldatetime $root [$($path)*] $($($k)-+).+ = ($yr - $mo - $day T $hr : $min : $sec . $frac - $tzh : $tzm) $($rest)*);
+ };
+
+ // Parse offset datetime `key = 1979-05-27T00:32:00-07:00`.
+ (@toplevel $root:ident [$($path:tt)*] $($($k:tt)-+).+ = $yr:tt - $mo:tt - $dhr:tt : $min:tt : $sec:tt - $tzh:tt : $tzm:tt $($rest:tt)*) => {
+ $crate::toml_internal!(@topleveldatetime $root [$($path)*] $($($k)-+).+ = ($yr - $mo - $dhr : $min : $sec - $tzh : $tzm) $($rest)*);
+ };
+ // Space instead of T.
+ (@toplevel $root:ident [$($path:tt)*] $($($k:tt)-+).+ = $yr:tt - $mo:tt - $day:tt $hr:tt : $min:tt : $sec:tt - $tzh:tt : $tzm:tt $($rest:tt)*) => {
+ $crate::toml_internal!(@topleveldatetime $root [$($path)*] $($($k)-+).+ = ($yr - $mo - $day T $hr : $min : $sec - $tzh : $tzm) $($rest)*);
+ };
+
+ // Parse local datetime `key = 1979-05-27T00:32:00.999999`.
+ (@toplevel $root:ident [$($path:tt)*] $($($k:tt)-+).+ = $yr:tt - $mo:tt - $dhr:tt : $min:tt : $sec:tt . $frac:tt $($rest:tt)*) => {
+ $crate::toml_internal!(@topleveldatetime $root [$($path)*] $($($k)-+).+ = ($yr - $mo - $dhr : $min : $sec . $frac) $($rest)*);
+ };
+ // Space instead of T.
+ (@toplevel $root:ident [$($path:tt)*] $($($k:tt)-+).+ = $yr:tt - $mo:tt - $day:tt $hr:tt : $min:tt : $sec:tt . $frac:tt $($rest:tt)*) => {
+ $crate::toml_internal!(@topleveldatetime $root [$($path)*] $($($k)-+).+ = ($yr - $mo - $day T $hr : $min : $sec . $frac) $($rest)*);
+ };
+
+ // Parse offset datetime `key = 1979-05-27T07:32:00Z` and local datetime `key = 1979-05-27T07:32:00`.
+ (@toplevel $root:ident [$($path:tt)*] $($($k:tt)-+).+ = $yr:tt - $mo:tt - $dhr:tt : $min:tt : $sec:tt $($rest:tt)*) => {
+ $crate::toml_internal!(@topleveldatetime $root [$($path)*] $($($k)-+).+ = ($yr - $mo - $dhr : $min : $sec) $($rest)*);
+ };
+ // Space instead of T.
+ (@toplevel $root:ident [$($path:tt)*] $($($k:tt)-+).+ = $yr:tt - $mo:tt - $day:tt $hr:tt : $min:tt : $sec:tt $($rest:tt)*) => {
+ $crate::toml_internal!(@topleveldatetime $root [$($path)*] $($($k)-+).+ = ($yr - $mo - $day T $hr : $min : $sec) $($rest)*);
+ };
+
+ // Parse local date `key = 1979-05-27`.
+ (@toplevel $root:ident [$($path:tt)*] $($($k:tt)-+).+ = $yr:tt - $mo:tt - $day:tt $($rest:tt)*) => {
+ $crate::toml_internal!(@topleveldatetime $root [$($path)*] $($($k)-+).+ = ($yr - $mo - $day) $($rest)*);
+ };
+
+ // Parse local time `key = 00:32:00.999999`.
+ (@toplevel $root:ident [$($path:tt)*] $($($k:tt)-+).+ = $hr:tt : $min:tt : $sec:tt . $frac:tt $($rest:tt)*) => {
+ $crate::toml_internal!(@topleveldatetime $root [$($path)*] $($($k)-+).+ = ($hr : $min : $sec . $frac) $($rest)*);
+ };
+
+ // Parse local time `key = 07:32:00`.
+ (@toplevel $root:ident [$($path:tt)*] $($($k:tt)-+).+ = $hr:tt : $min:tt : $sec:tt $($rest:tt)*) => {
+ $crate::toml_internal!(@topleveldatetime $root [$($path)*] $($($k)-+).+ = ($hr : $min : $sec) $($rest)*);
+ };
+
+ // Parse any other `key = value` including string, inline array, inline
+ // table, number, and boolean.
+ (@toplevel $root:ident [$($path:tt)*] $($($k:tt)-+).+ = $v:tt $($rest:tt)*) => {{
+ $crate::macros::insert_toml(
+ &mut $root,
+ &[$($path)* $(&concat!($("-", $crate::toml_internal!(@path $k),)+)[1..], )+],
+ $crate::toml_internal!(@value $v));
+ $crate::toml_internal!(@toplevel $root [$($path)*] $($rest)*);
+ }};
+
+ // Parse array header `[[bin]]`.
+ (@toplevel $root:ident $oldpath:tt [[$($($path:tt)-+).+]] $($rest:tt)*) => {
+ $crate::macros::push_toml(
+ &mut $root,
+ &[$(&concat!($("-", $crate::toml_internal!(@path $path),)+)[1..],)+]);
+ $crate::toml_internal!(@toplevel $root [$(&concat!($("-", $crate::toml_internal!(@path $path),)+)[1..],)+] $($rest)*);
+ };
+
+ // Parse table header `[patch.crates-io]`.
+ (@toplevel $root:ident $oldpath:tt [$($($path:tt)-+).+] $($rest:tt)*) => {
+ $crate::macros::insert_toml(
+ &mut $root,
+ &[$(&concat!($("-", $crate::toml_internal!(@path $path),)+)[1..],)+],
+ $crate::Value::Table($crate::value::Table::new()));
+ $crate::toml_internal!(@toplevel $root [$(&concat!($("-", $crate::toml_internal!(@path $path),)+)[1..],)+] $($rest)*);
+ };
+
+ // Parse datetime from string and insert into table.
+ (@topleveldatetime $root:ident [$($path:tt)*] $($($k:tt)-+).+ = ($($datetime:tt)+) $($rest:tt)*) => {
+ $crate::macros::insert_toml(
+ &mut $root,
+ &[$($path)* $(&concat!($("-", $crate::toml_internal!(@path $k),)+)[1..], )+],
+ $crate::Value::Datetime(concat!($(stringify!($datetime)),+).parse().unwrap()));
+ $crate::toml_internal!(@toplevel $root [$($path)*] $($rest)*);
+ };
+
+ // Turn a path segment into a string.
+ (@path $ident:ident) => {
+ stringify!($ident)
+ };
+
+ // For a path segment that is not an ident, expect that it is already a
+ // quoted string, like in `[target."cfg(windows)".dependencies]`.
+ (@path $quoted:tt) => {
+ $quoted
+ };
+
+ // Construct a Value from an inline table.
+ (@value { $($inline:tt)* }) => {{
+ let mut table = $crate::Value::Table($crate::value::Table::new());
+ $crate::toml_internal!(@trailingcomma (@table table) $($inline)*);
+ table
+ }};
+
+ // Construct a Value from an inline array.
+ (@value [ $($inline:tt)* ]) => {{
+ let mut array = $crate::value::Array::new();
+ $crate::toml_internal!(@trailingcomma (@array array) $($inline)*);
+ $crate::Value::Array(array)
+ }};
+
+ (@value (-nan)) => {
+ $crate::Value::Float(-::std::f64::NAN)
+ };
+
+ (@value (nan)) => {
+ $crate::Value::Float(::std::f64::NAN)
+ };
+
+ (@value nan) => {
+ $crate::Value::Float(::std::f64::NAN)
+ };
+
+ (@value (-inf)) => {
+ $crate::Value::Float(::std::f64::NEG_INFINITY)
+ };
+
+ (@value (inf)) => {
+ $crate::Value::Float(::std::f64::INFINITY)
+ };
+
+ (@value inf) => {
+ $crate::Value::Float(::std::f64::INFINITY)
+ };
+
+ // Construct a Value from any other type, probably string or boolean or number.
+ (@value $v:tt) => {{
+ // TODO: Implement this with something like serde_json::to_value instead.
+ let de = $crate::macros::IntoDeserializer::<$crate::de::Error>::into_deserializer($v);
+ <$crate::Value as $crate::macros::Deserialize>::deserialize(de).unwrap()
+ }};
+
+ // Base case of inline table.
+ (@table $root:ident) => {};
+
+ // Parse negative number `key = -value`.
+ (@table $root:ident $($($k:tt)-+).+ = - $v:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@table $root $($($k)-+).+ = (-$v) , $($rest)*);
+ };
+
+ // Parse positive number `key = +value`.
+ (@table $root:ident $($($k:tt)-+).+ = + $v:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@table $root $($($k)-+).+ = ($v) , $($rest)*);
+ };
+
+ // Parse offset datetime `key = 1979-05-27T00:32:00.999999-07:00`.
+ (@table $root:ident $($($k:tt)-+).+ = $yr:tt - $mo:tt - $dhr:tt : $min:tt : $sec:tt . $frac:tt - $tzh:tt : $tzm:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@tabledatetime $root $($($k)-+).+ = ($yr - $mo - $dhr : $min : $sec . $frac - $tzh : $tzm) $($rest)*);
+ };
+ // Space instead of T.
+ (@table $root:ident $($($k:tt)-+).+ = $yr:tt - $mo:tt - $day:tt $hr:tt : $min:tt : $sec:tt . $frac:tt - $tzh:tt : $tzm:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@tabledatetime $root $($($k)-+).+ = ($yr - $mo - $day T $hr : $min : $sec . $frac - $tzh : $tzm) $($rest)*);
+ };
+
+ // Parse offset datetime `key = 1979-05-27T00:32:00-07:00`.
+ (@table $root:ident $($($k:tt)-+).+ = $yr:tt - $mo:tt - $dhr:tt : $min:tt : $sec:tt - $tzh:tt : $tzm:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@tabledatetime $root $($($k)-+).+ = ($yr - $mo - $dhr : $min : $sec - $tzh : $tzm) $($rest)*);
+ };
+ // Space instead of T.
+ (@table $root:ident $($($k:tt)-+).+ = $yr:tt - $mo:tt - $day:tt $hr:tt : $min:tt : $sec:tt - $tzh:tt : $tzm:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@tabledatetime $root $($($k)-+).+ = ($yr - $mo - $day T $hr : $min : $sec - $tzh : $tzm) $($rest)*);
+ };
+
+ // Parse local datetime `key = 1979-05-27T00:32:00.999999`.
+ (@table $root:ident $($($k:tt)-+).+ = $yr:tt - $mo:tt - $dhr:tt : $min:tt : $sec:tt . $frac:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@tabledatetime $root $($($k)-+).+ = ($yr - $mo - $dhr : $min : $sec . $frac) $($rest)*);
+ };
+ // Space instead of T.
+ (@table $root:ident $($($k:tt)-+).+ = $yr:tt - $mo:tt - $day:tt $hr:tt : $min:tt : $sec:tt . $frac:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@tabledatetime $root $($($k)-+).+ = ($yr - $mo - $day T $hr : $min : $sec . $frac) $($rest)*);
+ };
+
+ // Parse offset datetime `key = 1979-05-27T07:32:00Z` and local datetime `key = 1979-05-27T07:32:00`.
+ (@table $root:ident $($($k:tt)-+).+ = $yr:tt - $mo:tt - $dhr:tt : $min:tt : $sec:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@tabledatetime $root $($($k)-+).+ = ($yr - $mo - $dhr : $min : $sec) $($rest)*);
+ };
+ // Space instead of T.
+ (@table $root:ident $($($k:tt)-+).+ = $yr:tt - $mo:tt - $day:tt $hr:tt : $min:tt : $sec:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@tabledatetime $root $($($k)-+).+ = ($yr - $mo - $day T $hr : $min : $sec) $($rest)*);
+ };
+
+ // Parse local date `key = 1979-05-27`.
+ (@table $root:ident $($($k:tt)-+).+ = $yr:tt - $mo:tt - $day:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@tabledatetime $root $($($k)-+).+ = ($yr - $mo - $day) $($rest)*);
+ };
+
+ // Parse local time `key = 00:32:00.999999`.
+ (@table $root:ident $($($k:tt)-+).+ = $hr:tt : $min:tt : $sec:tt . $frac:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@tabledatetime $root $($($k)-+).+ = ($hr : $min : $sec . $frac) $($rest)*);
+ };
+
+ // Parse local time `key = 07:32:00`.
+ (@table $root:ident $($($k:tt)-+).+ = $hr:tt : $min:tt : $sec:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@tabledatetime $root $($($k)-+).+ = ($hr : $min : $sec) $($rest)*);
+ };
+
+ // Parse any other type, probably string or boolean or number.
+ (@table $root:ident $($($k:tt)-+).+ = $v:tt , $($rest:tt)*) => {
+ $crate::macros::insert_toml(
+ &mut $root,
+ &[$(&concat!($("-", $crate::toml_internal!(@path $k),)+)[1..], )+],
+ $crate::toml_internal!(@value $v));
+ $crate::toml_internal!(@table $root $($rest)*);
+ };
+
+ // Parse a Datetime from string and continue in @table state.
+ (@tabledatetime $root:ident $($($k:tt)-+).+ = ($($datetime:tt)*) $($rest:tt)*) => {
+ $crate::macros::insert_toml(
+ &mut $root,
+ &[$(&concat!($("-", $crate::toml_internal!(@path $k),)+)[1..], )+],
+ $crate::Value::Datetime(concat!($(stringify!($datetime)),+).parse().unwrap()));
+ $crate::toml_internal!(@table $root $($rest)*);
+ };
+
+ // Base case of inline array.
+ (@array $root:ident) => {};
+
+ // Parse negative number `-value`.
+ (@array $root:ident - $v:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@array $root (-$v) , $($rest)*);
+ };
+
+ // Parse positive number `+value`.
+ (@array $root:ident + $v:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@array $root ($v) , $($rest)*);
+ };
+
+ // Parse offset datetime `1979-05-27T00:32:00.999999-07:00`.
+ (@array $root:ident $yr:tt - $mo:tt - $dhr:tt : $min:tt : $sec:tt . $frac:tt - $tzh:tt : $tzm:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@arraydatetime $root ($yr - $mo - $dhr : $min : $sec . $frac - $tzh : $tzm) $($rest)*);
+ };
+ // Space instead of T.
+ (@array $root:ident $yr:tt - $mo:tt - $day:tt $hr:tt : $min:tt : $sec:tt . $frac:tt - $tzh:tt : $tzm:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@arraydatetime $root ($yr - $mo - $day T $hr : $min : $sec . $frac - $tzh : $tzm) $($rest)*);
+ };
+
+ // Parse offset datetime `1979-05-27T00:32:00-07:00`.
+ (@array $root:ident $yr:tt - $mo:tt - $dhr:tt : $min:tt : $sec:tt - $tzh:tt : $tzm:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@arraydatetime $root ($yr - $mo - $dhr : $min : $sec - $tzh : $tzm) $($rest)*);
+ };
+ // Space instead of T.
+ (@array $root:ident $yr:tt - $mo:tt - $day:tt $hr:tt : $min:tt : $sec:tt - $tzh:tt : $tzm:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@arraydatetime $root ($yr - $mo - $day T $hr : $min : $sec - $tzh : $tzm) $($rest)*);
+ };
+
+ // Parse local datetime `1979-05-27T00:32:00.999999`.
+ (@array $root:ident $yr:tt - $mo:tt - $dhr:tt : $min:tt : $sec:tt . $frac:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@arraydatetime $root ($yr - $mo - $dhr : $min : $sec . $frac) $($rest)*);
+ };
+ // Space instead of T.
+ (@array $root:ident $yr:tt - $mo:tt - $day:tt $hr:tt : $min:tt : $sec:tt . $frac:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@arraydatetime $root ($yr - $mo - $day T $hr : $min : $sec . $frac) $($rest)*);
+ };
+
+ // Parse offset datetime `1979-05-27T07:32:00Z` and local datetime `1979-05-27T07:32:00`.
+ (@array $root:ident $yr:tt - $mo:tt - $dhr:tt : $min:tt : $sec:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@arraydatetime $root ($yr - $mo - $dhr : $min : $sec) $($rest)*);
+ };
+ // Space instead of T.
+ (@array $root:ident $yr:tt - $mo:tt - $day:tt $hr:tt : $min:tt : $sec:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@arraydatetime $root ($yr - $mo - $day T $hr : $min : $sec) $($rest)*);
+ };
+
+ // Parse local date `1979-05-27`.
+ (@array $root:ident $yr:tt - $mo:tt - $day:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@arraydatetime $root ($yr - $mo - $day) $($rest)*);
+ };
+
+ // Parse local time `00:32:00.999999`.
+ (@array $root:ident $hr:tt : $min:tt : $sec:tt . $frac:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@arraydatetime $root ($hr : $min : $sec . $frac) $($rest)*);
+ };
+
+ // Parse local time `07:32:00`.
+ (@array $root:ident $hr:tt : $min:tt : $sec:tt , $($rest:tt)*) => {
+ $crate::toml_internal!(@arraydatetime $root ($hr : $min : $sec) $($rest)*);
+ };
+
+ // Parse any other type, probably string or boolean or number.
+ (@array $root:ident $v:tt , $($rest:tt)*) => {
+ $root.push($crate::toml_internal!(@value $v));
+ $crate::toml_internal!(@array $root $($rest)*);
+ };
+
+ // Parse a Datetime from string and continue in @array state.
+ (@arraydatetime $root:ident ($($datetime:tt)*) $($rest:tt)*) => {
+ $root.push($crate::Value::Datetime(concat!($(stringify!($datetime)),+).parse().unwrap()));
+ $crate::toml_internal!(@array $root $($rest)*);
+ };
+
+ // No trailing comma required if the tokens are empty.
+ (@trailingcomma ($($args:tt)*)) => {
+ $crate::toml_internal!($($args)*);
+ };
+
+ // Tokens end with a trailing comma, do not append another one.
+ (@trailingcomma ($($args:tt)*) ,) => {
+ $crate::toml_internal!($($args)* ,);
+ };
+
+ // Tokens end with something other than comma, append a trailing comma.
+ (@trailingcomma ($($args:tt)*) $last:tt) => {
+ $crate::toml_internal!($($args)* $last ,);
+ };
+
+ // Not yet at the last token.
+ (@trailingcomma ($($args:tt)*) $first:tt $($rest:tt)+) => {
+ $crate::toml_internal!(@trailingcomma ($($args)* $first) $($rest)+);
+ };
+}
+
+// Called when parsing a `key = value` pair.
+// Inserts an entry into the table at the given path.
+pub fn insert_toml(root: &mut Value, path: &[&str], value: Value) {
+ *traverse(root, path) = value;
+}
+
+// Called when parsing an `[[array header]]`.
+// Pushes an empty table onto the array at the given path.
+pub fn push_toml(root: &mut Value, path: &[&str]) {
+ let target = traverse(root, path);
+ if !target.is_array() {
+ *target = Value::Array(Array::new());
+ }
+ target
+ .as_array_mut()
+ .unwrap()
+ .push(Value::Table(Table::new()));
+}
+
+fn traverse<'a>(root: &'a mut Value, path: &[&str]) -> &'a mut Value {
+ let mut cur = root;
+ for &key in path {
+ // Lexical lifetimes :D
+ let cur1 = cur;
+
+ // From the TOML spec:
+ //
+ // > Each double-bracketed sub-table will belong to the most recently
+ // > defined table element above it.
+ let cur2 = if cur1.is_array() {
+ cur1.as_array_mut().unwrap().last_mut().unwrap()
+ } else {
+ cur1
+ };
+
+ // We are about to index into this value, so it better be a table.
+ if !cur2.is_table() {
+ *cur2 = Value::Table(Table::new());
+ }
+
+ if !cur2.as_table().unwrap().contains_key(key) {
+ // Insert an empty table for the next loop iteration to point to.
+ let empty = Value::Table(Table::new());
+ cur2.as_table_mut().unwrap().insert(key.to_owned(), empty);
+ }
+
+ // Step into the current table.
+ cur = cur2.as_table_mut().unwrap().get_mut(key).unwrap();
+ }
+ cur
+}
diff --git a/vendor/toml-0.7.5/src/map.rs b/vendor/toml-0.7.5/src/map.rs
new file mode 100644
index 000000000..5b3ff19b4
--- /dev/null
+++ b/vendor/toml-0.7.5/src/map.rs
@@ -0,0 +1,595 @@
+// Copyright 2017 Serde Developers
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+//! A map of `String` to [Value].
+//!
+//! By default the map is backed by a [`BTreeMap`]. Enable the `preserve_order`
+//! feature of toml-rs to use [`IndexMap`] instead.
+//!
+//! [`BTreeMap`]: https://doc.rust-lang.org/std/collections/struct.BTreeMap.html
+//! [`IndexMap`]: https://docs.rs/indexmap
+
+use crate::value::Value;
+use serde::{de, ser};
+use std::borrow::Borrow;
+use std::fmt::{self, Debug};
+use std::hash::Hash;
+use std::iter::FromIterator;
+use std::ops;
+
+#[cfg(not(feature = "preserve_order"))]
+use std::collections::{btree_map, BTreeMap};
+
+#[cfg(feature = "preserve_order")]
+use indexmap::{self, IndexMap};
+
+/// Represents a TOML key/value type.
+pub struct Map<K, V> {
+ map: MapImpl<K, V>,
+}
+
+#[cfg(not(feature = "preserve_order"))]
+type MapImpl<K, V> = BTreeMap<K, V>;
+#[cfg(feature = "preserve_order")]
+type MapImpl<K, V> = IndexMap<K, V>;
+
+impl Map<String, Value> {
+ /// Makes a new empty Map.
+ #[inline]
+ pub fn new() -> Self {
+ Map {
+ map: MapImpl::new(),
+ }
+ }
+
+ #[cfg(not(feature = "preserve_order"))]
+ /// Makes a new empty Map with the given initial capacity.
+ #[inline]
+ pub fn with_capacity(capacity: usize) -> Self {
+ // does not support with_capacity
+ let _ = capacity;
+ Map {
+ map: BTreeMap::new(),
+ }
+ }
+
+ #[cfg(feature = "preserve_order")]
+ /// Makes a new empty Map with the given initial capacity.
+ #[inline]
+ pub fn with_capacity(capacity: usize) -> Self {
+ Map {
+ map: IndexMap::with_capacity(capacity),
+ }
+ }
+
+ /// Clears the map, removing all values.
+ #[inline]
+ pub fn clear(&mut self) {
+ self.map.clear()
+ }
+
+ /// Returns a reference to the value corresponding to the key.
+ ///
+ /// The key may be any borrowed form of the map's key type, but the ordering
+ /// on the borrowed form *must* match the ordering on the key type.
+ #[inline]
+ pub fn get<Q: ?Sized>(&self, key: &Q) -> Option<&Value>
+ where
+ String: Borrow<Q>,
+ Q: Ord + Eq + Hash,
+ {
+ self.map.get(key)
+ }
+
+ /// Returns true if the map contains a value for the specified key.
+ ///
+ /// The key may be any borrowed form of the map's key type, but the ordering
+ /// on the borrowed form *must* match the ordering on the key type.
+ #[inline]
+ pub fn contains_key<Q: ?Sized>(&self, key: &Q) -> bool
+ where
+ String: Borrow<Q>,
+ Q: Ord + Eq + Hash,
+ {
+ self.map.contains_key(key)
+ }
+
+ /// Returns a mutable reference to the value corresponding to the key.
+ ///
+ /// The key may be any borrowed form of the map's key type, but the ordering
+ /// on the borrowed form *must* match the ordering on the key type.
+ #[inline]
+ pub fn get_mut<Q: ?Sized>(&mut self, key: &Q) -> Option<&mut Value>
+ where
+ String: Borrow<Q>,
+ Q: Ord + Eq + Hash,
+ {
+ self.map.get_mut(key)
+ }
+
+ /// Inserts a key-value pair into the map.
+ ///
+ /// If the map did not have this key present, `None` is returned.
+ ///
+ /// If the map did have this key present, the value is updated, and the old
+ /// value is returned. The key is not updated, though; this matters for
+ /// types that can be `==` without being identical.
+ #[inline]
+ pub fn insert(&mut self, k: String, v: Value) -> Option<Value> {
+ self.map.insert(k, v)
+ }
+
+ /// Removes a key from the map, returning the value at the key if the key
+ /// was previously in the map.
+ ///
+ /// The key may be any borrowed form of the map's key type, but the ordering
+ /// on the borrowed form *must* match the ordering on the key type.
+ #[inline]
+ pub fn remove<Q: ?Sized>(&mut self, key: &Q) -> Option<Value>
+ where
+ String: Borrow<Q>,
+ Q: Ord + Eq + Hash,
+ {
+ self.map.remove(key)
+ }
+
+ /// Gets the given key's corresponding entry in the map for in-place
+ /// manipulation.
+ pub fn entry<S>(&mut self, key: S) -> Entry<'_>
+ where
+ S: Into<String>,
+ {
+ #[cfg(feature = "preserve_order")]
+ use indexmap::map::Entry as EntryImpl;
+ #[cfg(not(feature = "preserve_order"))]
+ use std::collections::btree_map::Entry as EntryImpl;
+
+ match self.map.entry(key.into()) {
+ EntryImpl::Vacant(vacant) => Entry::Vacant(VacantEntry { vacant }),
+ EntryImpl::Occupied(occupied) => Entry::Occupied(OccupiedEntry { occupied }),
+ }
+ }
+
+ /// Returns the number of elements in the map.
+ #[inline]
+ pub fn len(&self) -> usize {
+ self.map.len()
+ }
+
+ /// Returns true if the map contains no elements.
+ #[inline]
+ pub fn is_empty(&self) -> bool {
+ self.map.is_empty()
+ }
+
+ /// Gets an iterator over the entries of the map.
+ #[inline]
+ pub fn iter(&self) -> Iter<'_> {
+ Iter {
+ iter: self.map.iter(),
+ }
+ }
+
+ /// Gets a mutable iterator over the entries of the map.
+ #[inline]
+ pub fn iter_mut(&mut self) -> IterMut<'_> {
+ IterMut {
+ iter: self.map.iter_mut(),
+ }
+ }
+
+ /// Gets an iterator over the keys of the map.
+ #[inline]
+ pub fn keys(&self) -> Keys<'_> {
+ Keys {
+ iter: self.map.keys(),
+ }
+ }
+
+ /// Gets an iterator over the values of the map.
+ #[inline]
+ pub fn values(&self) -> Values<'_> {
+ Values {
+ iter: self.map.values(),
+ }
+ }
+}
+
+impl Default for Map<String, Value> {
+ #[inline]
+ fn default() -> Self {
+ Map {
+ map: MapImpl::new(),
+ }
+ }
+}
+
+impl Clone for Map<String, Value> {
+ #[inline]
+ fn clone(&self) -> Self {
+ Map {
+ map: self.map.clone(),
+ }
+ }
+}
+
+impl PartialEq for Map<String, Value> {
+ #[inline]
+ fn eq(&self, other: &Self) -> bool {
+ self.map.eq(&other.map)
+ }
+}
+
+/// Access an element of this map. Panics if the given key is not present in the
+/// map.
+impl<'a, Q: ?Sized> ops::Index<&'a Q> for Map<String, Value>
+where
+ String: Borrow<Q>,
+ Q: Ord + Eq + Hash,
+{
+ type Output = Value;
+
+ fn index(&self, index: &Q) -> &Value {
+ self.map.index(index)
+ }
+}
+
+/// Mutably access an element of this map. Panics if the given key is not
+/// present in the map.
+impl<'a, Q: ?Sized> ops::IndexMut<&'a Q> for Map<String, Value>
+where
+ String: Borrow<Q>,
+ Q: Ord + Eq + Hash,
+{
+ fn index_mut(&mut self, index: &Q) -> &mut Value {
+ self.map.get_mut(index).expect("no entry found for key")
+ }
+}
+
+impl Debug for Map<String, Value> {
+ #[inline]
+ fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
+ self.map.fmt(formatter)
+ }
+}
+
+impl ser::Serialize for Map<String, Value> {
+ #[inline]
+ fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+ where
+ S: ser::Serializer,
+ {
+ use serde::ser::SerializeMap;
+ let mut map = serializer.serialize_map(Some(self.len()))?;
+ for (k, v) in self {
+ map.serialize_key(k)?;
+ map.serialize_value(v)?;
+ }
+ map.end()
+ }
+}
+
+impl<'de> de::Deserialize<'de> for Map<String, Value> {
+ #[inline]
+ fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+ where
+ D: de::Deserializer<'de>,
+ {
+ struct Visitor;
+
+ impl<'de> de::Visitor<'de> for Visitor {
+ type Value = Map<String, Value>;
+
+ fn expecting(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
+ formatter.write_str("a map")
+ }
+
+ #[inline]
+ fn visit_unit<E>(self) -> Result<Self::Value, E>
+ where
+ E: de::Error,
+ {
+ Ok(Map::new())
+ }
+
+ #[inline]
+ fn visit_map<V>(self, mut visitor: V) -> Result<Self::Value, V::Error>
+ where
+ V: de::MapAccess<'de>,
+ {
+ let mut values = Map::new();
+
+ while let Some((key, value)) = visitor.next_entry()? {
+ values.insert(key, value);
+ }
+
+ Ok(values)
+ }
+ }
+
+ deserializer.deserialize_map(Visitor)
+ }
+}
+
+impl FromIterator<(String, Value)> for Map<String, Value> {
+ fn from_iter<T>(iter: T) -> Self
+ where
+ T: IntoIterator<Item = (String, Value)>,
+ {
+ Map {
+ map: FromIterator::from_iter(iter),
+ }
+ }
+}
+
+impl Extend<(String, Value)> for Map<String, Value> {
+ fn extend<T>(&mut self, iter: T)
+ where
+ T: IntoIterator<Item = (String, Value)>,
+ {
+ self.map.extend(iter);
+ }
+}
+
+macro_rules! delegate_iterator {
+ (($name:ident $($generics:tt)*) => $item:ty) => {
+ impl $($generics)* Iterator for $name $($generics)* {
+ type Item = $item;
+ #[inline]
+ fn next(&mut self) -> Option<Self::Item> {
+ self.iter.next()
+ }
+ #[inline]
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ self.iter.size_hint()
+ }
+ }
+
+ impl $($generics)* DoubleEndedIterator for $name $($generics)* {
+ #[inline]
+ fn next_back(&mut self) -> Option<Self::Item> {
+ self.iter.next_back()
+ }
+ }
+
+ impl $($generics)* ExactSizeIterator for $name $($generics)* {
+ #[inline]
+ fn len(&self) -> usize {
+ self.iter.len()
+ }
+ }
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+/// A view into a single entry in a map, which may either be vacant or occupied.
+/// This enum is constructed from the [`entry`] method on [`Map`].
+///
+/// [`entry`]: struct.Map.html#method.entry
+/// [`Map`]: struct.Map.html
+pub enum Entry<'a> {
+ /// A vacant Entry.
+ Vacant(VacantEntry<'a>),
+ /// An occupied Entry.
+ Occupied(OccupiedEntry<'a>),
+}
+
+/// A vacant Entry. It is part of the [`Entry`] enum.
+///
+/// [`Entry`]: enum.Entry.html
+pub struct VacantEntry<'a> {
+ vacant: VacantEntryImpl<'a>,
+}
+
+/// An occupied Entry. It is part of the [`Entry`] enum.
+///
+/// [`Entry`]: enum.Entry.html
+pub struct OccupiedEntry<'a> {
+ occupied: OccupiedEntryImpl<'a>,
+}
+
+#[cfg(not(feature = "preserve_order"))]
+type VacantEntryImpl<'a> = btree_map::VacantEntry<'a, String, Value>;
+#[cfg(feature = "preserve_order")]
+type VacantEntryImpl<'a> = indexmap::map::VacantEntry<'a, String, Value>;
+
+#[cfg(not(feature = "preserve_order"))]
+type OccupiedEntryImpl<'a> = btree_map::OccupiedEntry<'a, String, Value>;
+#[cfg(feature = "preserve_order")]
+type OccupiedEntryImpl<'a> = indexmap::map::OccupiedEntry<'a, String, Value>;
+
+impl<'a> Entry<'a> {
+ /// Returns a reference to this entry's key.
+ pub fn key(&self) -> &String {
+ match *self {
+ Entry::Vacant(ref e) => e.key(),
+ Entry::Occupied(ref e) => e.key(),
+ }
+ }
+
+ /// Ensures a value is in the entry by inserting the default if empty, and
+ /// returns a mutable reference to the value in the entry.
+ pub fn or_insert(self, default: Value) -> &'a mut Value {
+ match self {
+ Entry::Vacant(entry) => entry.insert(default),
+ Entry::Occupied(entry) => entry.into_mut(),
+ }
+ }
+
+ /// Ensures a value is in the entry by inserting the result of the default
+ /// function if empty, and returns a mutable reference to the value in the
+ /// entry.
+ pub fn or_insert_with<F>(self, default: F) -> &'a mut Value
+ where
+ F: FnOnce() -> Value,
+ {
+ match self {
+ Entry::Vacant(entry) => entry.insert(default()),
+ Entry::Occupied(entry) => entry.into_mut(),
+ }
+ }
+}
+
+impl<'a> VacantEntry<'a> {
+ /// Gets a reference to the key that would be used when inserting a value
+ /// through the VacantEntry.
+ #[inline]
+ pub fn key(&self) -> &String {
+ self.vacant.key()
+ }
+
+ /// Sets the value of the entry with the VacantEntry's key, and returns a
+ /// mutable reference to it.
+ #[inline]
+ pub fn insert(self, value: Value) -> &'a mut Value {
+ self.vacant.insert(value)
+ }
+}
+
+impl<'a> OccupiedEntry<'a> {
+ /// Gets a reference to the key in the entry.
+ #[inline]
+ pub fn key(&self) -> &String {
+ self.occupied.key()
+ }
+
+ /// Gets a reference to the value in the entry.
+ #[inline]
+ pub fn get(&self) -> &Value {
+ self.occupied.get()
+ }
+
+ /// Gets a mutable reference to the value in the entry.
+ #[inline]
+ pub fn get_mut(&mut self) -> &mut Value {
+ self.occupied.get_mut()
+ }
+
+ /// Converts the entry into a mutable reference to its value.
+ #[inline]
+ pub fn into_mut(self) -> &'a mut Value {
+ self.occupied.into_mut()
+ }
+
+ /// Sets the value of the entry with the `OccupiedEntry`'s key, and returns
+ /// the entry's old value.
+ #[inline]
+ pub fn insert(&mut self, value: Value) -> Value {
+ self.occupied.insert(value)
+ }
+
+ /// Takes the value of the entry out of the map, and returns it.
+ #[inline]
+ pub fn remove(self) -> Value {
+ self.occupied.remove()
+ }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
+impl<'a> IntoIterator for &'a Map<String, Value> {
+ type Item = (&'a String, &'a Value);
+ type IntoIter = Iter<'a>;
+ #[inline]
+ fn into_iter(self) -> Self::IntoIter {
+ Iter {
+ iter: self.map.iter(),
+ }
+ }
+}
+
+/// An iterator over a toml::Map's entries.
+pub struct Iter<'a> {
+ iter: IterImpl<'a>,
+}
+
+#[cfg(not(feature = "preserve_order"))]
+type IterImpl<'a> = btree_map::Iter<'a, String, Value>;
+#[cfg(feature = "preserve_order")]
+type IterImpl<'a> = indexmap::map::Iter<'a, String, Value>;
+
+delegate_iterator!((Iter<'a>) => (&'a String, &'a Value));
+
+//////////////////////////////////////////////////////////////////////////////
+
+impl<'a> IntoIterator for &'a mut Map<String, Value> {
+ type Item = (&'a String, &'a mut Value);
+ type IntoIter = IterMut<'a>;
+ #[inline]
+ fn into_iter(self) -> Self::IntoIter {
+ IterMut {
+ iter: self.map.iter_mut(),
+ }
+ }
+}
+
+/// A mutable iterator over a toml::Map's entries.
+pub struct IterMut<'a> {
+ iter: IterMutImpl<'a>,
+}
+
+#[cfg(not(feature = "preserve_order"))]
+type IterMutImpl<'a> = btree_map::IterMut<'a, String, Value>;
+#[cfg(feature = "preserve_order")]
+type IterMutImpl<'a> = indexmap::map::IterMut<'a, String, Value>;
+
+delegate_iterator!((IterMut<'a>) => (&'a String, &'a mut Value));
+
+//////////////////////////////////////////////////////////////////////////////
+
+impl IntoIterator for Map<String, Value> {
+ type Item = (String, Value);
+ type IntoIter = IntoIter;
+ #[inline]
+ fn into_iter(self) -> Self::IntoIter {
+ IntoIter {
+ iter: self.map.into_iter(),
+ }
+ }
+}
+
+/// An owning iterator over a toml::Map's entries.
+pub struct IntoIter {
+ iter: IntoIterImpl,
+}
+
+#[cfg(not(feature = "preserve_order"))]
+type IntoIterImpl = btree_map::IntoIter<String, Value>;
+#[cfg(feature = "preserve_order")]
+type IntoIterImpl = indexmap::map::IntoIter<String, Value>;
+
+delegate_iterator!((IntoIter) => (String, Value));
+
+//////////////////////////////////////////////////////////////////////////////
+
+/// An iterator over a toml::Map's keys.
+pub struct Keys<'a> {
+ iter: KeysImpl<'a>,
+}
+
+#[cfg(not(feature = "preserve_order"))]
+type KeysImpl<'a> = btree_map::Keys<'a, String, Value>;
+#[cfg(feature = "preserve_order")]
+type KeysImpl<'a> = indexmap::map::Keys<'a, String, Value>;
+
+delegate_iterator!((Keys<'a>) => &'a String);
+
+//////////////////////////////////////////////////////////////////////////////
+
+/// An iterator over a toml::Map's values.
+pub struct Values<'a> {
+ iter: ValuesImpl<'a>,
+}
+
+#[cfg(not(feature = "preserve_order"))]
+type ValuesImpl<'a> = btree_map::Values<'a, String, Value>;
+#[cfg(feature = "preserve_order")]
+type ValuesImpl<'a> = indexmap::map::Values<'a, String, Value>;
+
+delegate_iterator!((Values<'a>) => &'a Value);
diff --git a/vendor/toml-0.7.5/src/ser.rs b/vendor/toml-0.7.5/src/ser.rs
new file mode 100644
index 000000000..f1ab24bb8
--- /dev/null
+++ b/vendor/toml-0.7.5/src/ser.rs
@@ -0,0 +1,1087 @@
+//! Serializing Rust structures into TOML.
+//!
+//! This module contains all the Serde support for serializing Rust structures
+//! into TOML documents (as strings). Note that some top-level functions here
+//! are also provided at the top of the crate.
+
+/// Serialize the given data structure as a String of TOML.
+///
+/// Serialization can fail if `T`'s implementation of `Serialize` decides to
+/// fail, if `T` contains a map with non-string keys, or if `T` attempts to
+/// serialize an unsupported datatype such as an enum, tuple, or tuple struct.
+///
+/// To serialize TOML values, instead of documents, see [`ValueSerializer`].
+///
+/// # Examples
+///
+/// ```
+/// use serde::Serialize;
+///
+/// #[derive(Serialize)]
+/// struct Config {
+/// database: Database,
+/// }
+///
+/// #[derive(Serialize)]
+/// struct Database {
+/// ip: String,
+/// port: Vec<u16>,
+/// connection_max: u32,
+/// enabled: bool,
+/// }
+///
+/// let config = Config {
+/// database: Database {
+/// ip: "192.168.1.1".to_string(),
+/// port: vec![8001, 8002, 8003],
+/// connection_max: 5000,
+/// enabled: false,
+/// },
+/// };
+///
+/// let toml = toml::to_string(&config).unwrap();
+/// println!("{}", toml)
+/// ```
+#[cfg(feature = "display")]
+pub fn to_string<T: ?Sized>(value: &T) -> Result<String, Error>
+where
+ T: serde::ser::Serialize,
+{
+ let mut output = String::new();
+ let serializer = Serializer::new(&mut output);
+ value.serialize(serializer)?;
+ Ok(output)
+}
+
+/// Serialize the given data structure as a "pretty" String of TOML.
+///
+/// This is identical to `to_string` except the output string has a more
+/// "pretty" output. See `Serializer::pretty` for more details.
+///
+/// To serialize TOML values, instead of documents, see [`ValueSerializer`].
+///
+/// For greater customization, instead serialize to a
+/// [`toml_edit::Document`](https://docs.rs/toml_edit/latest/toml_edit/struct.Document.html).
+#[cfg(feature = "display")]
+pub fn to_string_pretty<T: ?Sized>(value: &T) -> Result<String, Error>
+where
+ T: serde::ser::Serialize,
+{
+ let mut output = String::new();
+ let serializer = Serializer::pretty(&mut output);
+ value.serialize(serializer)?;
+ Ok(output)
+}
+
+/// Errors that can occur when serializing a type.
+#[derive(Debug, Clone, PartialEq, Eq)]
+pub struct Error {
+ pub(crate) inner: crate::edit::ser::Error,
+}
+
+impl Error {
+ pub(crate) fn new(inner: impl std::fmt::Display) -> Self {
+ Self {
+ inner: crate::edit::ser::Error::Custom(inner.to_string()),
+ }
+ }
+
+ #[cfg(feature = "display")]
+ pub(crate) fn wrap(inner: crate::edit::ser::Error) -> Self {
+ Self { inner }
+ }
+
+ pub(crate) fn unsupported_type(t: Option<&'static str>) -> Self {
+ Self {
+ inner: crate::edit::ser::Error::UnsupportedType(t),
+ }
+ }
+
+ pub(crate) fn unsupported_none() -> Self {
+ Self {
+ inner: crate::edit::ser::Error::UnsupportedNone,
+ }
+ }
+
+ pub(crate) fn key_not_string() -> Self {
+ Self {
+ inner: crate::edit::ser::Error::KeyNotString,
+ }
+ }
+}
+
+impl serde::ser::Error for Error {
+ fn custom<T>(msg: T) -> Self
+ where
+ T: std::fmt::Display,
+ {
+ Error::new(msg)
+ }
+}
+
+impl std::fmt::Display for Error {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ self.inner.fmt(f)
+ }
+}
+
+impl std::error::Error for Error {}
+
+/// Serialization for TOML documents.
+///
+/// This structure implements serialization support for TOML to serialize an
+/// arbitrary type to TOML. Note that the TOML format does not support all
+/// datatypes in Rust, such as enums, tuples, and tuple structs. These types
+/// will generate an error when serialized.
+///
+/// Currently a serializer always writes its output to an in-memory `String`,
+/// which is passed in when creating the serializer itself.
+///
+/// To serialize TOML values, instead of documents, see [`ValueSerializer`].
+#[non_exhaustive]
+#[cfg(feature = "display")]
+pub struct Serializer<'d> {
+ dst: &'d mut String,
+ settings: crate::fmt::DocumentFormatter,
+}
+
+#[cfg(feature = "display")]
+impl<'d> Serializer<'d> {
+ /// Creates a new serializer which will emit TOML into the buffer provided.
+ ///
+ /// The serializer can then be used to serialize a type after which the data
+ /// will be present in `dst`.
+ pub fn new(dst: &'d mut String) -> Self {
+ Self {
+ dst,
+ settings: Default::default(),
+ }
+ }
+
+ /// Apply a default "pretty" policy to the document
+ ///
+ /// For greater customization, instead serialize to a
+ /// [`toml_edit::Document`](https://docs.rs/toml_edit/latest/toml_edit/struct.Document.html).
+ pub fn pretty(dst: &'d mut String) -> Self {
+ let mut ser = Serializer::new(dst);
+ ser.settings.multiline_array = true;
+ ser
+ }
+}
+
+#[cfg(feature = "display")]
+impl<'d> serde::ser::Serializer for Serializer<'d> {
+ type Ok = ();
+ type Error = Error;
+ type SerializeSeq = SerializeDocumentArray<'d>;
+ type SerializeTuple = SerializeDocumentArray<'d>;
+ type SerializeTupleStruct = SerializeDocumentArray<'d>;
+ type SerializeTupleVariant = SerializeDocumentArray<'d>;
+ type SerializeMap = SerializeDocumentTable<'d>;
+ type SerializeStruct = SerializeDocumentTable<'d>;
+ type SerializeStructVariant = serde::ser::Impossible<Self::Ok, Self::Error>;
+
+ fn serialize_bool(self, v: bool) -> Result<Self::Ok, Self::Error> {
+ write_document(
+ self.dst,
+ self.settings,
+ toml_edit::ser::ValueSerializer::new().serialize_bool(v),
+ )
+ }
+
+ fn serialize_i8(self, v: i8) -> Result<Self::Ok, Self::Error> {
+ write_document(
+ self.dst,
+ self.settings,
+ toml_edit::ser::ValueSerializer::new().serialize_i8(v),
+ )
+ }
+
+ fn serialize_i16(self, v: i16) -> Result<Self::Ok, Self::Error> {
+ write_document(
+ self.dst,
+ self.settings,
+ toml_edit::ser::ValueSerializer::new().serialize_i16(v),
+ )
+ }
+
+ fn serialize_i32(self, v: i32) -> Result<Self::Ok, Self::Error> {
+ write_document(
+ self.dst,
+ self.settings,
+ toml_edit::ser::ValueSerializer::new().serialize_i32(v),
+ )
+ }
+
+ fn serialize_i64(self, v: i64) -> Result<Self::Ok, Self::Error> {
+ write_document(
+ self.dst,
+ self.settings,
+ toml_edit::ser::ValueSerializer::new().serialize_i64(v),
+ )
+ }
+
+ fn serialize_u8(self, v: u8) -> Result<Self::Ok, Self::Error> {
+ write_document(
+ self.dst,
+ self.settings,
+ toml_edit::ser::ValueSerializer::new().serialize_u8(v),
+ )
+ }
+
+ fn serialize_u16(self, v: u16) -> Result<Self::Ok, Self::Error> {
+ write_document(
+ self.dst,
+ self.settings,
+ toml_edit::ser::ValueSerializer::new().serialize_u16(v),
+ )
+ }
+
+ fn serialize_u32(self, v: u32) -> Result<Self::Ok, Self::Error> {
+ write_document(
+ self.dst,
+ self.settings,
+ toml_edit::ser::ValueSerializer::new().serialize_u32(v),
+ )
+ }
+
+ fn serialize_u64(self, v: u64) -> Result<Self::Ok, Self::Error> {
+ write_document(
+ self.dst,
+ self.settings,
+ toml_edit::ser::ValueSerializer::new().serialize_u64(v),
+ )
+ }
+
+ fn serialize_f32(self, v: f32) -> Result<Self::Ok, Self::Error> {
+ write_document(
+ self.dst,
+ self.settings,
+ toml_edit::ser::ValueSerializer::new().serialize_f32(v),
+ )
+ }
+
+ fn serialize_f64(self, v: f64) -> Result<Self::Ok, Self::Error> {
+ write_document(
+ self.dst,
+ self.settings,
+ toml_edit::ser::ValueSerializer::new().serialize_f64(v),
+ )
+ }
+
+ fn serialize_char(self, v: char) -> Result<Self::Ok, Self::Error> {
+ write_document(
+ self.dst,
+ self.settings,
+ toml_edit::ser::ValueSerializer::new().serialize_char(v),
+ )
+ }
+
+ fn serialize_str(self, v: &str) -> Result<Self::Ok, Self::Error> {
+ write_document(
+ self.dst,
+ self.settings,
+ toml_edit::ser::ValueSerializer::new().serialize_str(v),
+ )
+ }
+
+ fn serialize_bytes(self, v: &[u8]) -> Result<Self::Ok, Self::Error> {
+ write_document(
+ self.dst,
+ self.settings,
+ toml_edit::ser::ValueSerializer::new().serialize_bytes(v),
+ )
+ }
+
+ fn serialize_none(self) -> Result<Self::Ok, Self::Error> {
+ write_document(
+ self.dst,
+ self.settings,
+ toml_edit::ser::ValueSerializer::new().serialize_none(),
+ )
+ }
+
+ fn serialize_some<T: ?Sized>(self, v: &T) -> Result<Self::Ok, Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ write_document(
+ self.dst,
+ self.settings,
+ toml_edit::ser::ValueSerializer::new().serialize_some(v),
+ )
+ }
+
+ fn serialize_unit(self) -> Result<Self::Ok, Self::Error> {
+ write_document(
+ self.dst,
+ self.settings,
+ toml_edit::ser::ValueSerializer::new().serialize_unit(),
+ )
+ }
+
+ fn serialize_unit_struct(self, name: &'static str) -> Result<Self::Ok, Self::Error> {
+ write_document(
+ self.dst,
+ self.settings,
+ toml_edit::ser::ValueSerializer::new().serialize_unit_struct(name),
+ )
+ }
+
+ fn serialize_unit_variant(
+ self,
+ name: &'static str,
+ variant_index: u32,
+ variant: &'static str,
+ ) -> Result<Self::Ok, Self::Error> {
+ write_document(
+ self.dst,
+ self.settings,
+ toml_edit::ser::ValueSerializer::new().serialize_unit_variant(
+ name,
+ variant_index,
+ variant,
+ ),
+ )
+ }
+
+ fn serialize_newtype_struct<T: ?Sized>(
+ self,
+ name: &'static str,
+ v: &T,
+ ) -> Result<Self::Ok, Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ write_document(
+ self.dst,
+ self.settings,
+ toml_edit::ser::ValueSerializer::new().serialize_newtype_struct(name, v),
+ )
+ }
+
+ fn serialize_newtype_variant<T: ?Sized>(
+ self,
+ name: &'static str,
+ variant_index: u32,
+ variant: &'static str,
+ value: &T,
+ ) -> Result<Self::Ok, Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ write_document(
+ self.dst,
+ self.settings,
+ toml_edit::ser::ValueSerializer::new().serialize_newtype_variant(
+ name,
+ variant_index,
+ variant,
+ value,
+ ),
+ )
+ }
+
+ fn serialize_seq(self, len: Option<usize>) -> Result<Self::SerializeSeq, Self::Error> {
+ let ser = toml_edit::ser::ValueSerializer::new()
+ .serialize_seq(len)
+ .map_err(Error::wrap)?;
+ let ser = SerializeDocumentArray::new(self, ser);
+ Ok(ser)
+ }
+
+ fn serialize_tuple(self, len: usize) -> Result<Self::SerializeTuple, Self::Error> {
+ self.serialize_seq(Some(len))
+ }
+
+ fn serialize_tuple_struct(
+ self,
+ _name: &'static str,
+ len: usize,
+ ) -> Result<Self::SerializeTupleStruct, Self::Error> {
+ self.serialize_seq(Some(len))
+ }
+
+ fn serialize_tuple_variant(
+ self,
+ _name: &'static str,
+ _variant_index: u32,
+ _variant: &'static str,
+ len: usize,
+ ) -> Result<Self::SerializeTupleVariant, Self::Error> {
+ self.serialize_seq(Some(len))
+ }
+
+ fn serialize_map(self, len: Option<usize>) -> Result<Self::SerializeMap, Self::Error> {
+ let ser = toml_edit::ser::ValueSerializer::new()
+ .serialize_map(len)
+ .map_err(Error::wrap)?;
+ let ser = SerializeDocumentTable::new(self, ser);
+ Ok(ser)
+ }
+
+ fn serialize_struct(
+ self,
+ _name: &'static str,
+ len: usize,
+ ) -> Result<Self::SerializeStruct, Self::Error> {
+ self.serialize_map(Some(len))
+ }
+
+ fn serialize_struct_variant(
+ self,
+ name: &'static str,
+ _variant_index: u32,
+ _variant: &'static str,
+ _len: usize,
+ ) -> Result<Self::SerializeStructVariant, Self::Error> {
+ Err(Error::unsupported_type(Some(name)))
+ }
+}
+
+/// Serialization for TOML [values][crate::Value].
+///
+/// This structure implements serialization support for TOML to serialize an
+/// arbitrary type to TOML. Note that the TOML format does not support all
+/// datatypes in Rust, such as enums, tuples, and tuple structs. These types
+/// will generate an error when serialized.
+///
+/// Currently a serializer always writes its output to an in-memory `String`,
+/// which is passed in when creating the serializer itself.
+///
+/// # Examples
+///
+/// ```
+/// use serde::Serialize;
+///
+/// #[derive(Serialize)]
+/// struct Config {
+/// database: Database,
+/// }
+///
+/// #[derive(Serialize)]
+/// struct Database {
+/// ip: String,
+/// port: Vec<u16>,
+/// connection_max: u32,
+/// enabled: bool,
+/// }
+///
+/// let config = Config {
+/// database: Database {
+/// ip: "192.168.1.1".to_string(),
+/// port: vec![8001, 8002, 8003],
+/// connection_max: 5000,
+/// enabled: false,
+/// },
+/// };
+///
+/// let mut value = String::new();
+/// serde::Serialize::serialize(
+/// &config,
+/// toml::ser::ValueSerializer::new(&mut value)
+/// ).unwrap();
+/// println!("{}", value)
+/// ```
+#[non_exhaustive]
+#[cfg(feature = "display")]
+pub struct ValueSerializer<'d> {
+ dst: &'d mut String,
+}
+
+#[cfg(feature = "display")]
+impl<'d> ValueSerializer<'d> {
+ /// Creates a new serializer which will emit TOML into the buffer provided.
+ ///
+ /// The serializer can then be used to serialize a type after which the data
+ /// will be present in `dst`.
+ pub fn new(dst: &'d mut String) -> Self {
+ Self { dst }
+ }
+}
+
+#[cfg(feature = "display")]
+impl<'d> serde::ser::Serializer for ValueSerializer<'d> {
+ type Ok = ();
+ type Error = Error;
+ type SerializeSeq = SerializeValueArray<'d>;
+ type SerializeTuple = SerializeValueArray<'d>;
+ type SerializeTupleStruct = SerializeValueArray<'d>;
+ type SerializeTupleVariant = SerializeValueArray<'d>;
+ type SerializeMap = SerializeValueTable<'d>;
+ type SerializeStruct = SerializeValueTable<'d>;
+ type SerializeStructVariant = serde::ser::Impossible<Self::Ok, Self::Error>;
+
+ fn serialize_bool(self, v: bool) -> Result<Self::Ok, Self::Error> {
+ write_value(
+ self.dst,
+ toml_edit::ser::ValueSerializer::new().serialize_bool(v),
+ )
+ }
+
+ fn serialize_i8(self, v: i8) -> Result<Self::Ok, Self::Error> {
+ write_value(
+ self.dst,
+ toml_edit::ser::ValueSerializer::new().serialize_i8(v),
+ )
+ }
+
+ fn serialize_i16(self, v: i16) -> Result<Self::Ok, Self::Error> {
+ write_value(
+ self.dst,
+ toml_edit::ser::ValueSerializer::new().serialize_i16(v),
+ )
+ }
+
+ fn serialize_i32(self, v: i32) -> Result<Self::Ok, Self::Error> {
+ write_value(
+ self.dst,
+ toml_edit::ser::ValueSerializer::new().serialize_i32(v),
+ )
+ }
+
+ fn serialize_i64(self, v: i64) -> Result<Self::Ok, Self::Error> {
+ write_value(
+ self.dst,
+ toml_edit::ser::ValueSerializer::new().serialize_i64(v),
+ )
+ }
+
+ fn serialize_u8(self, v: u8) -> Result<Self::Ok, Self::Error> {
+ write_value(
+ self.dst,
+ toml_edit::ser::ValueSerializer::new().serialize_u8(v),
+ )
+ }
+
+ fn serialize_u16(self, v: u16) -> Result<Self::Ok, Self::Error> {
+ write_value(
+ self.dst,
+ toml_edit::ser::ValueSerializer::new().serialize_u16(v),
+ )
+ }
+
+ fn serialize_u32(self, v: u32) -> Result<Self::Ok, Self::Error> {
+ write_value(
+ self.dst,
+ toml_edit::ser::ValueSerializer::new().serialize_u32(v),
+ )
+ }
+
+ fn serialize_u64(self, v: u64) -> Result<Self::Ok, Self::Error> {
+ write_value(
+ self.dst,
+ toml_edit::ser::ValueSerializer::new().serialize_u64(v),
+ )
+ }
+
+ fn serialize_f32(self, v: f32) -> Result<Self::Ok, Self::Error> {
+ write_value(
+ self.dst,
+ toml_edit::ser::ValueSerializer::new().serialize_f32(v),
+ )
+ }
+
+ fn serialize_f64(self, v: f64) -> Result<Self::Ok, Self::Error> {
+ write_value(
+ self.dst,
+ toml_edit::ser::ValueSerializer::new().serialize_f64(v),
+ )
+ }
+
+ fn serialize_char(self, v: char) -> Result<Self::Ok, Self::Error> {
+ write_value(
+ self.dst,
+ toml_edit::ser::ValueSerializer::new().serialize_char(v),
+ )
+ }
+
+ fn serialize_str(self, v: &str) -> Result<Self::Ok, Self::Error> {
+ write_value(
+ self.dst,
+ toml_edit::ser::ValueSerializer::new().serialize_str(v),
+ )
+ }
+
+ fn serialize_bytes(self, v: &[u8]) -> Result<Self::Ok, Self::Error> {
+ write_value(
+ self.dst,
+ toml_edit::ser::ValueSerializer::new().serialize_bytes(v),
+ )
+ }
+
+ fn serialize_none(self) -> Result<Self::Ok, Self::Error> {
+ write_value(
+ self.dst,
+ toml_edit::ser::ValueSerializer::new().serialize_none(),
+ )
+ }
+
+ fn serialize_some<T: ?Sized>(self, v: &T) -> Result<Self::Ok, Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ write_value(
+ self.dst,
+ toml_edit::ser::ValueSerializer::new().serialize_some(v),
+ )
+ }
+
+ fn serialize_unit(self) -> Result<Self::Ok, Self::Error> {
+ write_value(
+ self.dst,
+ toml_edit::ser::ValueSerializer::new().serialize_unit(),
+ )
+ }
+
+ fn serialize_unit_struct(self, name: &'static str) -> Result<Self::Ok, Self::Error> {
+ write_value(
+ self.dst,
+ toml_edit::ser::ValueSerializer::new().serialize_unit_struct(name),
+ )
+ }
+
+ fn serialize_unit_variant(
+ self,
+ name: &'static str,
+ variant_index: u32,
+ variant: &'static str,
+ ) -> Result<Self::Ok, Self::Error> {
+ write_value(
+ self.dst,
+ toml_edit::ser::ValueSerializer::new().serialize_unit_variant(
+ name,
+ variant_index,
+ variant,
+ ),
+ )
+ }
+
+ fn serialize_newtype_struct<T: ?Sized>(
+ self,
+ name: &'static str,
+ v: &T,
+ ) -> Result<Self::Ok, Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ write_value(
+ self.dst,
+ toml_edit::ser::ValueSerializer::new().serialize_newtype_struct(name, v),
+ )
+ }
+
+ fn serialize_newtype_variant<T: ?Sized>(
+ self,
+ name: &'static str,
+ variant_index: u32,
+ variant: &'static str,
+ value: &T,
+ ) -> Result<Self::Ok, Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ write_value(
+ self.dst,
+ toml_edit::ser::ValueSerializer::new().serialize_newtype_variant(
+ name,
+ variant_index,
+ variant,
+ value,
+ ),
+ )
+ }
+
+ fn serialize_seq(self, len: Option<usize>) -> Result<Self::SerializeSeq, Self::Error> {
+ let ser = toml_edit::ser::ValueSerializer::new()
+ .serialize_seq(len)
+ .map_err(Error::wrap)?;
+ let ser = SerializeValueArray::new(self, ser);
+ Ok(ser)
+ }
+
+ fn serialize_tuple(self, len: usize) -> Result<Self::SerializeTuple, Self::Error> {
+ self.serialize_seq(Some(len))
+ }
+
+ fn serialize_tuple_struct(
+ self,
+ _name: &'static str,
+ len: usize,
+ ) -> Result<Self::SerializeTupleStruct, Self::Error> {
+ self.serialize_seq(Some(len))
+ }
+
+ fn serialize_tuple_variant(
+ self,
+ _name: &'static str,
+ _variant_index: u32,
+ _variant: &'static str,
+ len: usize,
+ ) -> Result<Self::SerializeTupleVariant, Self::Error> {
+ self.serialize_seq(Some(len))
+ }
+
+ fn serialize_map(self, len: Option<usize>) -> Result<Self::SerializeMap, Self::Error> {
+ let ser = toml_edit::ser::ValueSerializer::new()
+ .serialize_map(len)
+ .map_err(Error::wrap)?;
+ let ser = SerializeValueTable::new(self, ser);
+ Ok(ser)
+ }
+
+ fn serialize_struct(
+ self,
+ _name: &'static str,
+ len: usize,
+ ) -> Result<Self::SerializeStruct, Self::Error> {
+ self.serialize_map(Some(len))
+ }
+
+ fn serialize_struct_variant(
+ self,
+ name: &'static str,
+ _variant_index: u32,
+ _variant: &'static str,
+ _len: usize,
+ ) -> Result<Self::SerializeStructVariant, Self::Error> {
+ Err(Error::unsupported_type(Some(name)))
+ }
+}
+
+#[cfg(feature = "display")]
+use internal::*;
+
+#[cfg(feature = "display")]
+mod internal {
+ use super::*;
+
+ use crate::fmt::DocumentFormatter;
+
+ type InnerSerializeDocumentSeq =
+ <toml_edit::ser::ValueSerializer as serde::Serializer>::SerializeSeq;
+
+ #[doc(hidden)]
+ pub struct SerializeDocumentArray<'d> {
+ inner: InnerSerializeDocumentSeq,
+ dst: &'d mut String,
+ settings: DocumentFormatter,
+ }
+
+ impl<'d> SerializeDocumentArray<'d> {
+ pub(crate) fn new(ser: Serializer<'d>, inner: InnerSerializeDocumentSeq) -> Self {
+ Self {
+ inner,
+ dst: ser.dst,
+ settings: ser.settings,
+ }
+ }
+ }
+
+ impl<'d> serde::ser::SerializeSeq for SerializeDocumentArray<'d> {
+ type Ok = ();
+ type Error = Error;
+
+ fn serialize_element<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ self.inner.serialize_element(value).map_err(Error::wrap)
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ write_document(self.dst, self.settings, self.inner.end())
+ }
+ }
+
+ impl<'d> serde::ser::SerializeTuple for SerializeDocumentArray<'d> {
+ type Ok = ();
+ type Error = Error;
+
+ fn serialize_element<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ self.inner.serialize_element(value).map_err(Error::wrap)
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ write_document(self.dst, self.settings, self.inner.end())
+ }
+ }
+
+ impl<'d> serde::ser::SerializeTupleVariant for SerializeDocumentArray<'d> {
+ type Ok = ();
+ type Error = Error;
+
+ fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ self.inner.serialize_field(value).map_err(Error::wrap)
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ write_document(self.dst, self.settings, self.inner.end())
+ }
+ }
+
+ impl<'d> serde::ser::SerializeTupleStruct for SerializeDocumentArray<'d> {
+ type Ok = ();
+ type Error = Error;
+
+ fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ self.inner.serialize_field(value).map_err(Error::wrap)
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ write_document(self.dst, self.settings, self.inner.end())
+ }
+ }
+
+ type InnerSerializeDocumentTable =
+ <toml_edit::ser::ValueSerializer as serde::Serializer>::SerializeMap;
+
+ #[doc(hidden)]
+ pub struct SerializeDocumentTable<'d> {
+ inner: InnerSerializeDocumentTable,
+ dst: &'d mut String,
+ settings: DocumentFormatter,
+ }
+
+ impl<'d> SerializeDocumentTable<'d> {
+ pub(crate) fn new(ser: Serializer<'d>, inner: InnerSerializeDocumentTable) -> Self {
+ Self {
+ inner,
+ dst: ser.dst,
+ settings: ser.settings,
+ }
+ }
+ }
+
+ impl<'d> serde::ser::SerializeMap for SerializeDocumentTable<'d> {
+ type Ok = ();
+ type Error = Error;
+
+ fn serialize_key<T: ?Sized>(&mut self, input: &T) -> Result<(), Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ self.inner.serialize_key(input).map_err(Error::wrap)
+ }
+
+ fn serialize_value<T: ?Sized>(&mut self, value: &T) -> Result<(), Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ self.inner.serialize_value(value).map_err(Error::wrap)
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ write_document(self.dst, self.settings, self.inner.end())
+ }
+ }
+
+ impl<'d> serde::ser::SerializeStruct for SerializeDocumentTable<'d> {
+ type Ok = ();
+ type Error = Error;
+
+ fn serialize_field<T: ?Sized>(
+ &mut self,
+ key: &'static str,
+ value: &T,
+ ) -> Result<(), Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ self.inner.serialize_field(key, value).map_err(Error::wrap)
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ write_document(self.dst, self.settings, self.inner.end())
+ }
+ }
+
+ pub(crate) fn write_document(
+ dst: &mut String,
+ mut settings: DocumentFormatter,
+ value: Result<toml_edit::Value, crate::edit::ser::Error>,
+ ) -> Result<(), Error> {
+ use std::fmt::Write;
+
+ let value = value.map_err(Error::wrap)?;
+ let mut table = match toml_edit::Item::Value(value).into_table() {
+ Ok(i) => i,
+ Err(_) => {
+ return Err(Error::unsupported_type(None));
+ }
+ };
+
+ use toml_edit::visit_mut::VisitMut as _;
+ settings.visit_table_mut(&mut table);
+
+ let doc: toml_edit::Document = table.into();
+ write!(dst, "{}", doc).unwrap();
+
+ Ok(())
+ }
+
+ type InnerSerializeValueSeq =
+ <toml_edit::ser::ValueSerializer as serde::Serializer>::SerializeSeq;
+
+ #[doc(hidden)]
+ pub struct SerializeValueArray<'d> {
+ inner: InnerSerializeValueSeq,
+ dst: &'d mut String,
+ }
+
+ impl<'d> SerializeValueArray<'d> {
+ pub(crate) fn new(ser: ValueSerializer<'d>, inner: InnerSerializeValueSeq) -> Self {
+ Self {
+ inner,
+ dst: ser.dst,
+ }
+ }
+ }
+
+ impl<'d> serde::ser::SerializeSeq for SerializeValueArray<'d> {
+ type Ok = ();
+ type Error = Error;
+
+ fn serialize_element<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ self.inner.serialize_element(value).map_err(Error::wrap)
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ write_value(self.dst, self.inner.end())
+ }
+ }
+
+ impl<'d> serde::ser::SerializeTuple for SerializeValueArray<'d> {
+ type Ok = ();
+ type Error = Error;
+
+ fn serialize_element<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ self.inner.serialize_element(value).map_err(Error::wrap)
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ write_value(self.dst, self.inner.end())
+ }
+ }
+
+ impl<'d> serde::ser::SerializeTupleVariant for SerializeValueArray<'d> {
+ type Ok = ();
+ type Error = Error;
+
+ fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ self.inner.serialize_field(value).map_err(Error::wrap)
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ write_value(self.dst, self.inner.end())
+ }
+ }
+
+ impl<'d> serde::ser::SerializeTupleStruct for SerializeValueArray<'d> {
+ type Ok = ();
+ type Error = Error;
+
+ fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ self.inner.serialize_field(value).map_err(Error::wrap)
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ write_value(self.dst, self.inner.end())
+ }
+ }
+
+ type InnerSerializeValueTable =
+ <toml_edit::ser::ValueSerializer as serde::Serializer>::SerializeMap;
+
+ #[doc(hidden)]
+ pub struct SerializeValueTable<'d> {
+ inner: InnerSerializeValueTable,
+ dst: &'d mut String,
+ }
+
+ impl<'d> SerializeValueTable<'d> {
+ pub(crate) fn new(ser: ValueSerializer<'d>, inner: InnerSerializeValueTable) -> Self {
+ Self {
+ inner,
+ dst: ser.dst,
+ }
+ }
+ }
+
+ impl<'d> serde::ser::SerializeMap for SerializeValueTable<'d> {
+ type Ok = ();
+ type Error = Error;
+
+ fn serialize_key<T: ?Sized>(&mut self, input: &T) -> Result<(), Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ self.inner.serialize_key(input).map_err(Error::wrap)
+ }
+
+ fn serialize_value<T: ?Sized>(&mut self, value: &T) -> Result<(), Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ self.inner.serialize_value(value).map_err(Error::wrap)
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ write_value(self.dst, self.inner.end())
+ }
+ }
+
+ impl<'d> serde::ser::SerializeStruct for SerializeValueTable<'d> {
+ type Ok = ();
+ type Error = Error;
+
+ fn serialize_field<T: ?Sized>(
+ &mut self,
+ key: &'static str,
+ value: &T,
+ ) -> Result<(), Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ self.inner.serialize_field(key, value).map_err(Error::wrap)
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ write_value(self.dst, self.inner.end())
+ }
+ }
+
+ pub(crate) fn write_value(
+ dst: &mut String,
+ value: Result<toml_edit::Value, crate::edit::ser::Error>,
+ ) -> Result<(), Error> {
+ use std::fmt::Write;
+
+ let value = value.map_err(Error::wrap)?;
+
+ write!(dst, "{}", value).unwrap();
+
+ Ok(())
+ }
+}
diff --git a/vendor/toml-0.7.5/src/table.rs b/vendor/toml-0.7.5/src/table.rs
new file mode 100644
index 000000000..a2d392bde
--- /dev/null
+++ b/vendor/toml-0.7.5/src/table.rs
@@ -0,0 +1,114 @@
+use std::fmt;
+
+use serde::de;
+use serde::ser;
+
+use crate::map::Map;
+use crate::Value;
+
+/// Type representing a TOML table, payload of the `Value::Table` variant.
+/// By default it is backed by a BTreeMap, enable the `preserve_order` feature
+/// to use a LinkedHashMap instead.
+pub type Table = Map<String, Value>;
+
+impl Table {
+ /// Convert a `T` into `toml::Table`.
+ ///
+ /// This conversion can fail if `T`'s implementation of `Serialize` decides to
+ /// fail, or if `T` contains a map with non-string keys.
+ pub fn try_from<T>(value: T) -> Result<Self, crate::ser::Error>
+ where
+ T: ser::Serialize,
+ {
+ value.serialize(crate::value::TableSerializer)
+ }
+
+ /// Interpret a `toml::Table` as an instance of type `T`.
+ ///
+ /// This conversion can fail if the structure of the `Table` does not match the structure
+ /// expected by `T`, for example if `T` is a bool which can't be mapped to a `Table`. It can
+ /// also fail if the structure is correct but `T`'s implementation of `Deserialize` decides
+ /// that something is wrong with the data, for example required struct fields are missing from
+ /// the TOML map or some number is too big to fit in the expected primitive type.
+ pub fn try_into<'de, T>(self) -> Result<T, crate::de::Error>
+ where
+ T: de::Deserialize<'de>,
+ {
+ de::Deserialize::deserialize(self)
+ }
+}
+
+#[cfg(feature = "display")]
+impl fmt::Display for Table {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ crate::ser::to_string(self)
+ .expect("Unable to represent value as string")
+ .fmt(f)
+ }
+}
+
+#[cfg(feature = "parse")]
+impl std::str::FromStr for Table {
+ type Err = crate::de::Error;
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ crate::from_str(s)
+ }
+}
+
+impl<'de> de::Deserializer<'de> for Table {
+ type Error = crate::de::Error;
+
+ fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, crate::de::Error>
+ where
+ V: de::Visitor<'de>,
+ {
+ Value::Table(self).deserialize_any(visitor)
+ }
+
+ #[inline]
+ fn deserialize_enum<V>(
+ self,
+ name: &'static str,
+ variants: &'static [&'static str],
+ visitor: V,
+ ) -> Result<V::Value, crate::de::Error>
+ where
+ V: de::Visitor<'de>,
+ {
+ Value::Table(self).deserialize_enum(name, variants, visitor)
+ }
+
+ // `None` is interpreted as a missing field so be sure to implement `Some`
+ // as a present field.
+ fn deserialize_option<V>(self, visitor: V) -> Result<V::Value, crate::de::Error>
+ where
+ V: de::Visitor<'de>,
+ {
+ Value::Table(self).deserialize_option(visitor)
+ }
+
+ fn deserialize_newtype_struct<V>(
+ self,
+ name: &'static str,
+ visitor: V,
+ ) -> Result<V::Value, crate::de::Error>
+ where
+ V: de::Visitor<'de>,
+ {
+ Value::Table(self).deserialize_newtype_struct(name, visitor)
+ }
+
+ serde::forward_to_deserialize_any! {
+ bool u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 char str string unit seq
+ bytes byte_buf map unit_struct tuple_struct struct
+ tuple ignored_any identifier
+ }
+}
+
+impl<'de> de::IntoDeserializer<'de, crate::de::Error> for Table {
+ type Deserializer = Self;
+
+ fn into_deserializer(self) -> Self {
+ self
+ }
+}
diff --git a/vendor/toml-0.7.5/src/value.rs b/vendor/toml-0.7.5/src/value.rs
new file mode 100644
index 000000000..2785d9de9
--- /dev/null
+++ b/vendor/toml-0.7.5/src/value.rs
@@ -0,0 +1,1455 @@
+//! Definition of a TOML [value][Value]
+
+use std::collections::{BTreeMap, HashMap};
+use std::fmt;
+use std::hash::Hash;
+use std::mem::discriminant;
+use std::ops;
+use std::vec;
+
+use serde::de;
+use serde::de::IntoDeserializer;
+use serde::ser;
+
+use toml_datetime::__unstable as datetime;
+pub use toml_datetime::{Date, Datetime, DatetimeParseError, Offset, Time};
+
+/// Type representing a TOML array, payload of the `Value::Array` variant
+pub type Array = Vec<Value>;
+
+#[doc(no_inline)]
+pub use crate::Table;
+
+/// Representation of a TOML value.
+#[derive(PartialEq, Clone, Debug)]
+pub enum Value {
+ /// Represents a TOML string
+ String(String),
+ /// Represents a TOML integer
+ Integer(i64),
+ /// Represents a TOML float
+ Float(f64),
+ /// Represents a TOML boolean
+ Boolean(bool),
+ /// Represents a TOML datetime
+ Datetime(Datetime),
+ /// Represents a TOML array
+ Array(Array),
+ /// Represents a TOML table
+ Table(Table),
+}
+
+impl Value {
+ /// Convert a `T` into `toml::Value` which is an enum that can represent
+ /// any valid TOML data.
+ ///
+ /// This conversion can fail if `T`'s implementation of `Serialize` decides to
+ /// fail, or if `T` contains a map with non-string keys.
+ pub fn try_from<T>(value: T) -> Result<Value, crate::ser::Error>
+ where
+ T: ser::Serialize,
+ {
+ value.serialize(ValueSerializer)
+ }
+
+ /// Interpret a `toml::Value` as an instance of type `T`.
+ ///
+ /// This conversion can fail if the structure of the `Value` does not match the
+ /// structure expected by `T`, for example if `T` is a struct type but the
+ /// `Value` contains something other than a TOML table. It can also fail if the
+ /// structure is correct but `T`'s implementation of `Deserialize` decides that
+ /// something is wrong with the data, for example required struct fields are
+ /// missing from the TOML map or some number is too big to fit in the expected
+ /// primitive type.
+ pub fn try_into<'de, T>(self) -> Result<T, crate::de::Error>
+ where
+ T: de::Deserialize<'de>,
+ {
+ de::Deserialize::deserialize(self)
+ }
+
+ /// Index into a TOML array or map. A string index can be used to access a
+ /// value in a map, and a usize index can be used to access an element of an
+ /// array.
+ ///
+ /// Returns `None` if the type of `self` does not match the type of the
+ /// index, for example if the index is a string and `self` is an array or a
+ /// number. Also returns `None` if the given key does not exist in the map
+ /// or the given index is not within the bounds of the array.
+ pub fn get<I: Index>(&self, index: I) -> Option<&Value> {
+ index.index(self)
+ }
+
+ /// Mutably index into a TOML array or map. A string index can be used to
+ /// access a value in a map, and a usize index can be used to access an
+ /// element of an array.
+ ///
+ /// Returns `None` if the type of `self` does not match the type of the
+ /// index, for example if the index is a string and `self` is an array or a
+ /// number. Also returns `None` if the given key does not exist in the map
+ /// or the given index is not within the bounds of the array.
+ pub fn get_mut<I: Index>(&mut self, index: I) -> Option<&mut Value> {
+ index.index_mut(self)
+ }
+
+ /// Extracts the integer value if it is an integer.
+ pub fn as_integer(&self) -> Option<i64> {
+ match *self {
+ Value::Integer(i) => Some(i),
+ _ => None,
+ }
+ }
+
+ /// Tests whether this value is an integer.
+ pub fn is_integer(&self) -> bool {
+ self.as_integer().is_some()
+ }
+
+ /// Extracts the float value if it is a float.
+ pub fn as_float(&self) -> Option<f64> {
+ match *self {
+ Value::Float(f) => Some(f),
+ _ => None,
+ }
+ }
+
+ /// Tests whether this value is a float.
+ pub fn is_float(&self) -> bool {
+ self.as_float().is_some()
+ }
+
+ /// Extracts the boolean value if it is a boolean.
+ pub fn as_bool(&self) -> Option<bool> {
+ match *self {
+ Value::Boolean(b) => Some(b),
+ _ => None,
+ }
+ }
+
+ /// Tests whether this value is a boolean.
+ pub fn is_bool(&self) -> bool {
+ self.as_bool().is_some()
+ }
+
+ /// Extracts the string of this value if it is a string.
+ pub fn as_str(&self) -> Option<&str> {
+ match *self {
+ Value::String(ref s) => Some(&**s),
+ _ => None,
+ }
+ }
+
+ /// Tests if this value is a string.
+ pub fn is_str(&self) -> bool {
+ self.as_str().is_some()
+ }
+
+ /// Extracts the datetime value if it is a datetime.
+ ///
+ /// Note that a parsed TOML value will only contain ISO 8601 dates. An
+ /// example date is:
+ ///
+ /// ```notrust
+ /// 1979-05-27T07:32:00Z
+ /// ```
+ pub fn as_datetime(&self) -> Option<&Datetime> {
+ match *self {
+ Value::Datetime(ref s) => Some(s),
+ _ => None,
+ }
+ }
+
+ /// Tests whether this value is a datetime.
+ pub fn is_datetime(&self) -> bool {
+ self.as_datetime().is_some()
+ }
+
+ /// Extracts the array value if it is an array.
+ pub fn as_array(&self) -> Option<&Vec<Value>> {
+ match *self {
+ Value::Array(ref s) => Some(s),
+ _ => None,
+ }
+ }
+
+ /// Extracts the array value if it is an array.
+ pub fn as_array_mut(&mut self) -> Option<&mut Vec<Value>> {
+ match *self {
+ Value::Array(ref mut s) => Some(s),
+ _ => None,
+ }
+ }
+
+ /// Tests whether this value is an array.
+ pub fn is_array(&self) -> bool {
+ self.as_array().is_some()
+ }
+
+ /// Extracts the table value if it is a table.
+ pub fn as_table(&self) -> Option<&Table> {
+ match *self {
+ Value::Table(ref s) => Some(s),
+ _ => None,
+ }
+ }
+
+ /// Extracts the table value if it is a table.
+ pub fn as_table_mut(&mut self) -> Option<&mut Table> {
+ match *self {
+ Value::Table(ref mut s) => Some(s),
+ _ => None,
+ }
+ }
+
+ /// Tests whether this value is a table.
+ pub fn is_table(&self) -> bool {
+ self.as_table().is_some()
+ }
+
+ /// Tests whether this and another value have the same type.
+ pub fn same_type(&self, other: &Value) -> bool {
+ discriminant(self) == discriminant(other)
+ }
+
+ /// Returns a human-readable representation of the type of this value.
+ pub fn type_str(&self) -> &'static str {
+ match *self {
+ Value::String(..) => "string",
+ Value::Integer(..) => "integer",
+ Value::Float(..) => "float",
+ Value::Boolean(..) => "boolean",
+ Value::Datetime(..) => "datetime",
+ Value::Array(..) => "array",
+ Value::Table(..) => "table",
+ }
+ }
+}
+
+impl<I> ops::Index<I> for Value
+where
+ I: Index,
+{
+ type Output = Value;
+
+ fn index(&self, index: I) -> &Value {
+ self.get(index).expect("index not found")
+ }
+}
+
+impl<I> ops::IndexMut<I> for Value
+where
+ I: Index,
+{
+ fn index_mut(&mut self, index: I) -> &mut Value {
+ self.get_mut(index).expect("index not found")
+ }
+}
+
+impl<'a> From<&'a str> for Value {
+ #[inline]
+ fn from(val: &'a str) -> Value {
+ Value::String(val.to_string())
+ }
+}
+
+impl<V: Into<Value>> From<Vec<V>> for Value {
+ fn from(val: Vec<V>) -> Value {
+ Value::Array(val.into_iter().map(|v| v.into()).collect())
+ }
+}
+
+impl<S: Into<String>, V: Into<Value>> From<BTreeMap<S, V>> for Value {
+ fn from(val: BTreeMap<S, V>) -> Value {
+ let table = val.into_iter().map(|(s, v)| (s.into(), v.into())).collect();
+
+ Value::Table(table)
+ }
+}
+
+impl<S: Into<String> + Hash + Eq, V: Into<Value>> From<HashMap<S, V>> for Value {
+ fn from(val: HashMap<S, V>) -> Value {
+ let table = val.into_iter().map(|(s, v)| (s.into(), v.into())).collect();
+
+ Value::Table(table)
+ }
+}
+
+macro_rules! impl_into_value {
+ ($variant:ident : $T:ty) => {
+ impl From<$T> for Value {
+ #[inline]
+ fn from(val: $T) -> Value {
+ Value::$variant(val.into())
+ }
+ }
+ };
+}
+
+impl_into_value!(String: String);
+impl_into_value!(Integer: i64);
+impl_into_value!(Integer: i32);
+impl_into_value!(Integer: i8);
+impl_into_value!(Integer: u8);
+impl_into_value!(Integer: u32);
+impl_into_value!(Float: f64);
+impl_into_value!(Float: f32);
+impl_into_value!(Boolean: bool);
+impl_into_value!(Datetime: Datetime);
+impl_into_value!(Table: Table);
+
+/// Types that can be used to index a `toml::Value`
+///
+/// Currently this is implemented for `usize` to index arrays and `str` to index
+/// tables.
+///
+/// This trait is sealed and not intended for implementation outside of the
+/// `toml` crate.
+pub trait Index: Sealed {
+ #[doc(hidden)]
+ fn index<'a>(&self, val: &'a Value) -> Option<&'a Value>;
+ #[doc(hidden)]
+ fn index_mut<'a>(&self, val: &'a mut Value) -> Option<&'a mut Value>;
+}
+
+/// An implementation detail that should not be implemented, this will change in
+/// the future and break code otherwise.
+#[doc(hidden)]
+pub trait Sealed {}
+impl Sealed for usize {}
+impl Sealed for str {}
+impl Sealed for String {}
+impl<'a, T: Sealed + ?Sized> Sealed for &'a T {}
+
+impl Index for usize {
+ fn index<'a>(&self, val: &'a Value) -> Option<&'a Value> {
+ match *val {
+ Value::Array(ref a) => a.get(*self),
+ _ => None,
+ }
+ }
+
+ fn index_mut<'a>(&self, val: &'a mut Value) -> Option<&'a mut Value> {
+ match *val {
+ Value::Array(ref mut a) => a.get_mut(*self),
+ _ => None,
+ }
+ }
+}
+
+impl Index for str {
+ fn index<'a>(&self, val: &'a Value) -> Option<&'a Value> {
+ match *val {
+ Value::Table(ref a) => a.get(self),
+ _ => None,
+ }
+ }
+
+ fn index_mut<'a>(&self, val: &'a mut Value) -> Option<&'a mut Value> {
+ match *val {
+ Value::Table(ref mut a) => a.get_mut(self),
+ _ => None,
+ }
+ }
+}
+
+impl Index for String {
+ fn index<'a>(&self, val: &'a Value) -> Option<&'a Value> {
+ self[..].index(val)
+ }
+
+ fn index_mut<'a>(&self, val: &'a mut Value) -> Option<&'a mut Value> {
+ self[..].index_mut(val)
+ }
+}
+
+impl<'s, T: ?Sized> Index for &'s T
+where
+ T: Index,
+{
+ fn index<'a>(&self, val: &'a Value) -> Option<&'a Value> {
+ (**self).index(val)
+ }
+
+ fn index_mut<'a>(&self, val: &'a mut Value) -> Option<&'a mut Value> {
+ (**self).index_mut(val)
+ }
+}
+
+#[cfg(feature = "display")]
+impl fmt::Display for Value {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ use serde::Serialize as _;
+
+ let mut output = String::new();
+ let serializer = crate::ser::ValueSerializer::new(&mut output);
+ self.serialize(serializer).unwrap();
+ output.fmt(f)
+ }
+}
+
+#[cfg(feature = "parse")]
+impl std::str::FromStr for Value {
+ type Err = crate::de::Error;
+ fn from_str(s: &str) -> Result<Value, Self::Err> {
+ crate::from_str(s)
+ }
+}
+
+impl ser::Serialize for Value {
+ fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+ where
+ S: ser::Serializer,
+ {
+ use serde::ser::SerializeMap;
+
+ match *self {
+ Value::String(ref s) => serializer.serialize_str(s),
+ Value::Integer(i) => serializer.serialize_i64(i),
+ Value::Float(f) => serializer.serialize_f64(f),
+ Value::Boolean(b) => serializer.serialize_bool(b),
+ Value::Datetime(ref s) => s.serialize(serializer),
+ Value::Array(ref a) => a.serialize(serializer),
+ Value::Table(ref t) => {
+ let mut map = serializer.serialize_map(Some(t.len()))?;
+ // Be sure to visit non-tables first (and also non
+ // array-of-tables) as all keys must be emitted first.
+ for (k, v) in t {
+ if !v.is_table() && !v.is_array()
+ || (v
+ .as_array()
+ .map(|a| !a.iter().any(|v| v.is_table()))
+ .unwrap_or(false))
+ {
+ map.serialize_entry(k, v)?;
+ }
+ }
+ for (k, v) in t {
+ if v.as_array()
+ .map(|a| a.iter().any(|v| v.is_table()))
+ .unwrap_or(false)
+ {
+ map.serialize_entry(k, v)?;
+ }
+ }
+ for (k, v) in t {
+ if v.is_table() {
+ map.serialize_entry(k, v)?;
+ }
+ }
+ map.end()
+ }
+ }
+ }
+}
+
+impl<'de> de::Deserialize<'de> for Value {
+ fn deserialize<D>(deserializer: D) -> Result<Value, D::Error>
+ where
+ D: de::Deserializer<'de>,
+ {
+ struct ValueVisitor;
+
+ impl<'de> de::Visitor<'de> for ValueVisitor {
+ type Value = Value;
+
+ fn expecting(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
+ formatter.write_str("any valid TOML value")
+ }
+
+ fn visit_bool<E>(self, value: bool) -> Result<Value, E> {
+ Ok(Value::Boolean(value))
+ }
+
+ fn visit_i64<E>(self, value: i64) -> Result<Value, E> {
+ Ok(Value::Integer(value))
+ }
+
+ fn visit_u64<E: de::Error>(self, value: u64) -> Result<Value, E> {
+ if value <= i64::max_value() as u64 {
+ Ok(Value::Integer(value as i64))
+ } else {
+ Err(de::Error::custom("u64 value was too large"))
+ }
+ }
+
+ fn visit_u32<E>(self, value: u32) -> Result<Value, E> {
+ Ok(Value::Integer(value.into()))
+ }
+
+ fn visit_i32<E>(self, value: i32) -> Result<Value, E> {
+ Ok(Value::Integer(value.into()))
+ }
+
+ fn visit_f64<E>(self, value: f64) -> Result<Value, E> {
+ Ok(Value::Float(value))
+ }
+
+ fn visit_str<E>(self, value: &str) -> Result<Value, E> {
+ Ok(Value::String(value.into()))
+ }
+
+ fn visit_string<E>(self, value: String) -> Result<Value, E> {
+ Ok(Value::String(value))
+ }
+
+ fn visit_some<D>(self, deserializer: D) -> Result<Value, D::Error>
+ where
+ D: de::Deserializer<'de>,
+ {
+ de::Deserialize::deserialize(deserializer)
+ }
+
+ fn visit_seq<V>(self, mut visitor: V) -> Result<Value, V::Error>
+ where
+ V: de::SeqAccess<'de>,
+ {
+ let mut vec = Vec::new();
+ while let Some(elem) = visitor.next_element()? {
+ vec.push(elem);
+ }
+ Ok(Value::Array(vec))
+ }
+
+ fn visit_map<V>(self, mut visitor: V) -> Result<Value, V::Error>
+ where
+ V: de::MapAccess<'de>,
+ {
+ let mut key = String::new();
+ let datetime = visitor.next_key_seed(DatetimeOrTable { key: &mut key })?;
+ match datetime {
+ Some(true) => {
+ let date: datetime::DatetimeFromString = visitor.next_value()?;
+ return Ok(Value::Datetime(date.value));
+ }
+ None => return Ok(Value::Table(Table::new())),
+ Some(false) => {}
+ }
+ let mut map = Table::new();
+ map.insert(key, visitor.next_value()?);
+ while let Some(key) = visitor.next_key::<String>()? {
+ if let crate::map::Entry::Vacant(vacant) = map.entry(&key) {
+ vacant.insert(visitor.next_value()?);
+ } else {
+ let msg = format!("duplicate key: `{}`", key);
+ return Err(de::Error::custom(msg));
+ }
+ }
+ Ok(Value::Table(map))
+ }
+ }
+
+ deserializer.deserialize_any(ValueVisitor)
+ }
+}
+
+// This is wrapped by `Table` and any trait methods implemented here need to be wrapped there.
+impl<'de> de::Deserializer<'de> for Value {
+ type Error = crate::de::Error;
+
+ fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, crate::de::Error>
+ where
+ V: de::Visitor<'de>,
+ {
+ match self {
+ Value::Boolean(v) => visitor.visit_bool(v),
+ Value::Integer(n) => visitor.visit_i64(n),
+ Value::Float(n) => visitor.visit_f64(n),
+ Value::String(v) => visitor.visit_string(v),
+ Value::Datetime(v) => visitor.visit_string(v.to_string()),
+ Value::Array(v) => {
+ let len = v.len();
+ let mut deserializer = SeqDeserializer::new(v);
+ let seq = visitor.visit_seq(&mut deserializer)?;
+ let remaining = deserializer.iter.len();
+ if remaining == 0 {
+ Ok(seq)
+ } else {
+ Err(de::Error::invalid_length(len, &"fewer elements in array"))
+ }
+ }
+ Value::Table(v) => {
+ let len = v.len();
+ let mut deserializer = MapDeserializer::new(v);
+ let map = visitor.visit_map(&mut deserializer)?;
+ let remaining = deserializer.iter.len();
+ if remaining == 0 {
+ Ok(map)
+ } else {
+ Err(de::Error::invalid_length(len, &"fewer elements in map"))
+ }
+ }
+ }
+ }
+
+ #[inline]
+ fn deserialize_enum<V>(
+ self,
+ _name: &'static str,
+ _variants: &'static [&'static str],
+ visitor: V,
+ ) -> Result<V::Value, crate::de::Error>
+ where
+ V: de::Visitor<'de>,
+ {
+ match self {
+ Value::String(variant) => visitor.visit_enum(variant.into_deserializer()),
+ Value::Table(variant) => {
+ use de::Error;
+ if variant.is_empty() {
+ Err(crate::de::Error::custom(
+ "wanted exactly 1 element, found 0 elements",
+ ))
+ } else if variant.len() != 1 {
+ Err(crate::de::Error::custom(
+ "wanted exactly 1 element, more than 1 element",
+ ))
+ } else {
+ let deserializer = MapDeserializer::new(variant);
+ visitor.visit_enum(deserializer)
+ }
+ }
+ _ => Err(de::Error::invalid_type(
+ de::Unexpected::UnitVariant,
+ &"string only",
+ )),
+ }
+ }
+
+ // `None` is interpreted as a missing field so be sure to implement `Some`
+ // as a present field.
+ fn deserialize_option<V>(self, visitor: V) -> Result<V::Value, crate::de::Error>
+ where
+ V: de::Visitor<'de>,
+ {
+ visitor.visit_some(self)
+ }
+
+ fn deserialize_newtype_struct<V>(
+ self,
+ _name: &'static str,
+ visitor: V,
+ ) -> Result<V::Value, crate::de::Error>
+ where
+ V: de::Visitor<'de>,
+ {
+ visitor.visit_newtype_struct(self)
+ }
+
+ serde::forward_to_deserialize_any! {
+ bool u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 char str string unit seq
+ bytes byte_buf map unit_struct tuple_struct struct
+ tuple ignored_any identifier
+ }
+}
+
+struct SeqDeserializer {
+ iter: vec::IntoIter<Value>,
+}
+
+impl SeqDeserializer {
+ fn new(vec: Vec<Value>) -> Self {
+ SeqDeserializer {
+ iter: vec.into_iter(),
+ }
+ }
+}
+
+impl<'de> de::SeqAccess<'de> for SeqDeserializer {
+ type Error = crate::de::Error;
+
+ fn next_element_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>, crate::de::Error>
+ where
+ T: de::DeserializeSeed<'de>,
+ {
+ match self.iter.next() {
+ Some(value) => seed.deserialize(value).map(Some),
+ None => Ok(None),
+ }
+ }
+
+ fn size_hint(&self) -> Option<usize> {
+ match self.iter.size_hint() {
+ (lower, Some(upper)) if lower == upper => Some(upper),
+ _ => None,
+ }
+ }
+}
+
+struct MapDeserializer {
+ iter: <Table as IntoIterator>::IntoIter,
+ value: Option<(String, Value)>,
+}
+
+impl MapDeserializer {
+ fn new(map: Table) -> Self {
+ MapDeserializer {
+ iter: map.into_iter(),
+ value: None,
+ }
+ }
+}
+
+impl<'de> de::MapAccess<'de> for MapDeserializer {
+ type Error = crate::de::Error;
+
+ fn next_key_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>, crate::de::Error>
+ where
+ T: de::DeserializeSeed<'de>,
+ {
+ match self.iter.next() {
+ Some((key, value)) => {
+ self.value = Some((key.clone(), value));
+ seed.deserialize(Value::String(key)).map(Some)
+ }
+ None => Ok(None),
+ }
+ }
+
+ fn next_value_seed<T>(&mut self, seed: T) -> Result<T::Value, crate::de::Error>
+ where
+ T: de::DeserializeSeed<'de>,
+ {
+ let (key, res) = match self.value.take() {
+ Some((key, value)) => (key, seed.deserialize(value)),
+ None => return Err(de::Error::custom("value is missing")),
+ };
+ res.map_err(|mut error| {
+ error.add_key(key);
+ error
+ })
+ }
+
+ fn size_hint(&self) -> Option<usize> {
+ match self.iter.size_hint() {
+ (lower, Some(upper)) if lower == upper => Some(upper),
+ _ => None,
+ }
+ }
+}
+
+impl<'de> de::EnumAccess<'de> for MapDeserializer {
+ type Error = crate::de::Error;
+ type Variant = MapEnumDeserializer;
+
+ fn variant_seed<V>(mut self, seed: V) -> Result<(V::Value, Self::Variant), Self::Error>
+ where
+ V: serde::de::DeserializeSeed<'de>,
+ {
+ use de::Error;
+ let (key, value) = match self.iter.next() {
+ Some(pair) => pair,
+ None => {
+ return Err(Error::custom(
+ "expected table with exactly 1 entry, found empty table",
+ ));
+ }
+ };
+
+ let val = seed.deserialize(key.into_deserializer())?;
+
+ let variant = MapEnumDeserializer::new(value);
+
+ Ok((val, variant))
+ }
+}
+
+/// Deserializes table values into enum variants.
+pub(crate) struct MapEnumDeserializer {
+ value: Value,
+}
+
+impl MapEnumDeserializer {
+ pub(crate) fn new(value: Value) -> Self {
+ MapEnumDeserializer { value }
+ }
+}
+
+impl<'de> serde::de::VariantAccess<'de> for MapEnumDeserializer {
+ type Error = crate::de::Error;
+
+ fn unit_variant(self) -> Result<(), Self::Error> {
+ use de::Error;
+ match self.value {
+ Value::Table(values) => {
+ if values.is_empty() {
+ Ok(())
+ } else {
+ Err(Error::custom("expected empty table"))
+ }
+ }
+ e => Err(Error::custom(format!(
+ "expected table, found {}",
+ e.type_str()
+ ))),
+ }
+ }
+
+ fn newtype_variant_seed<T>(self, seed: T) -> Result<T::Value, Self::Error>
+ where
+ T: serde::de::DeserializeSeed<'de>,
+ {
+ seed.deserialize(self.value.into_deserializer())
+ }
+
+ fn tuple_variant<V>(self, len: usize, visitor: V) -> Result<V::Value, Self::Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ use de::Error;
+ match self.value {
+ Value::Table(values) => {
+ let tuple_values = values
+ .into_iter()
+ .enumerate()
+ .map(|(index, (key, value))| match key.parse::<usize>() {
+ Ok(key_index) if key_index == index => Ok(value),
+ Ok(_) | Err(_) => Err(Error::custom(format!(
+ "expected table key `{}`, but was `{}`",
+ index, key
+ ))),
+ })
+ // Fold all values into a `Vec`, or return the first error.
+ .fold(Ok(Vec::with_capacity(len)), |result, value_result| {
+ result.and_then(move |mut tuple_values| match value_result {
+ Ok(value) => {
+ tuple_values.push(value);
+ Ok(tuple_values)
+ }
+ // `Result<de::Value, Self::Error>` to `Result<Vec<_>, Self::Error>`
+ Err(e) => Err(e),
+ })
+ })?;
+
+ if tuple_values.len() == len {
+ serde::de::Deserializer::deserialize_seq(
+ tuple_values.into_deserializer(),
+ visitor,
+ )
+ } else {
+ Err(Error::custom(format!("expected tuple with length {}", len)))
+ }
+ }
+ e => Err(Error::custom(format!(
+ "expected table, found {}",
+ e.type_str()
+ ))),
+ }
+ }
+
+ fn struct_variant<V>(
+ self,
+ fields: &'static [&'static str],
+ visitor: V,
+ ) -> Result<V::Value, Self::Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ serde::de::Deserializer::deserialize_struct(
+ self.value.into_deserializer(),
+ "", // TODO: this should be the variant name
+ fields,
+ visitor,
+ )
+ }
+}
+
+impl<'de> de::IntoDeserializer<'de, crate::de::Error> for Value {
+ type Deserializer = Self;
+
+ fn into_deserializer(self) -> Self {
+ self
+ }
+}
+
+struct ValueSerializer;
+
+impl ser::Serializer for ValueSerializer {
+ type Ok = Value;
+ type Error = crate::ser::Error;
+
+ type SerializeSeq = ValueSerializeVec;
+ type SerializeTuple = ValueSerializeVec;
+ type SerializeTupleStruct = ValueSerializeVec;
+ type SerializeTupleVariant = ValueSerializeVec;
+ type SerializeMap = ValueSerializeMap;
+ type SerializeStruct = ValueSerializeMap;
+ type SerializeStructVariant = ser::Impossible<Value, crate::ser::Error>;
+
+ fn serialize_bool(self, value: bool) -> Result<Value, crate::ser::Error> {
+ Ok(Value::Boolean(value))
+ }
+
+ fn serialize_i8(self, value: i8) -> Result<Value, crate::ser::Error> {
+ self.serialize_i64(value.into())
+ }
+
+ fn serialize_i16(self, value: i16) -> Result<Value, crate::ser::Error> {
+ self.serialize_i64(value.into())
+ }
+
+ fn serialize_i32(self, value: i32) -> Result<Value, crate::ser::Error> {
+ self.serialize_i64(value.into())
+ }
+
+ fn serialize_i64(self, value: i64) -> Result<Value, crate::ser::Error> {
+ Ok(Value::Integer(value))
+ }
+
+ fn serialize_u8(self, value: u8) -> Result<Value, crate::ser::Error> {
+ self.serialize_i64(value.into())
+ }
+
+ fn serialize_u16(self, value: u16) -> Result<Value, crate::ser::Error> {
+ self.serialize_i64(value.into())
+ }
+
+ fn serialize_u32(self, value: u32) -> Result<Value, crate::ser::Error> {
+ self.serialize_i64(value.into())
+ }
+
+ fn serialize_u64(self, value: u64) -> Result<Value, crate::ser::Error> {
+ if value <= i64::max_value() as u64 {
+ self.serialize_i64(value as i64)
+ } else {
+ Err(ser::Error::custom("u64 value was too large"))
+ }
+ }
+
+ fn serialize_f32(self, value: f32) -> Result<Value, crate::ser::Error> {
+ self.serialize_f64(value.into())
+ }
+
+ fn serialize_f64(self, value: f64) -> Result<Value, crate::ser::Error> {
+ Ok(Value::Float(value))
+ }
+
+ fn serialize_char(self, value: char) -> Result<Value, crate::ser::Error> {
+ let mut s = String::new();
+ s.push(value);
+ self.serialize_str(&s)
+ }
+
+ fn serialize_str(self, value: &str) -> Result<Value, crate::ser::Error> {
+ Ok(Value::String(value.to_owned()))
+ }
+
+ fn serialize_bytes(self, value: &[u8]) -> Result<Value, crate::ser::Error> {
+ let vec = value.iter().map(|&b| Value::Integer(b.into())).collect();
+ Ok(Value::Array(vec))
+ }
+
+ fn serialize_unit(self) -> Result<Value, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(Some("unit")))
+ }
+
+ fn serialize_unit_struct(self, name: &'static str) -> Result<Value, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(Some(name)))
+ }
+
+ fn serialize_unit_variant(
+ self,
+ _name: &'static str,
+ _variant_index: u32,
+ _variant: &'static str,
+ ) -> Result<Value, crate::ser::Error> {
+ self.serialize_str(_variant)
+ }
+
+ fn serialize_newtype_struct<T: ?Sized>(
+ self,
+ _name: &'static str,
+ value: &T,
+ ) -> Result<Value, crate::ser::Error>
+ where
+ T: ser::Serialize,
+ {
+ value.serialize(self)
+ }
+
+ fn serialize_newtype_variant<T: ?Sized>(
+ self,
+ _name: &'static str,
+ _variant_index: u32,
+ variant: &'static str,
+ value: &T,
+ ) -> Result<Value, crate::ser::Error>
+ where
+ T: ser::Serialize,
+ {
+ let value = value.serialize(ValueSerializer)?;
+ let mut table = Table::new();
+ table.insert(variant.to_owned(), value);
+ Ok(table.into())
+ }
+
+ fn serialize_none(self) -> Result<Value, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_none())
+ }
+
+ fn serialize_some<T: ?Sized>(self, value: &T) -> Result<Value, crate::ser::Error>
+ where
+ T: ser::Serialize,
+ {
+ value.serialize(self)
+ }
+
+ fn serialize_seq(self, len: Option<usize>) -> Result<Self::SerializeSeq, crate::ser::Error> {
+ Ok(ValueSerializeVec {
+ vec: Vec::with_capacity(len.unwrap_or(0)),
+ })
+ }
+
+ fn serialize_tuple(self, len: usize) -> Result<Self::SerializeTuple, crate::ser::Error> {
+ self.serialize_seq(Some(len))
+ }
+
+ fn serialize_tuple_struct(
+ self,
+ _name: &'static str,
+ len: usize,
+ ) -> Result<Self::SerializeTupleStruct, crate::ser::Error> {
+ self.serialize_seq(Some(len))
+ }
+
+ fn serialize_tuple_variant(
+ self,
+ _name: &'static str,
+ _variant_index: u32,
+ _variant: &'static str,
+ len: usize,
+ ) -> Result<Self::SerializeTupleVariant, crate::ser::Error> {
+ self.serialize_seq(Some(len))
+ }
+
+ fn serialize_map(self, _len: Option<usize>) -> Result<Self::SerializeMap, crate::ser::Error> {
+ Ok(ValueSerializeMap {
+ ser: SerializeMap {
+ map: Table::new(),
+ next_key: None,
+ },
+ })
+ }
+
+ fn serialize_struct(
+ self,
+ _name: &'static str,
+ len: usize,
+ ) -> Result<Self::SerializeStruct, crate::ser::Error> {
+ self.serialize_map(Some(len))
+ }
+
+ fn serialize_struct_variant(
+ self,
+ name: &'static str,
+ _variant_index: u32,
+ _variant: &'static str,
+ _len: usize,
+ ) -> Result<Self::SerializeStructVariant, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(Some(name)))
+ }
+}
+
+pub(crate) struct TableSerializer;
+
+impl ser::Serializer for TableSerializer {
+ type Ok = Table;
+ type Error = crate::ser::Error;
+
+ type SerializeSeq = ser::Impossible<Table, crate::ser::Error>;
+ type SerializeTuple = ser::Impossible<Table, crate::ser::Error>;
+ type SerializeTupleStruct = ser::Impossible<Table, crate::ser::Error>;
+ type SerializeTupleVariant = ser::Impossible<Table, crate::ser::Error>;
+ type SerializeMap = SerializeMap;
+ type SerializeStruct = SerializeMap;
+ type SerializeStructVariant = ser::Impossible<Table, crate::ser::Error>;
+
+ fn serialize_bool(self, _value: bool) -> Result<Table, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(None))
+ }
+
+ fn serialize_i8(self, _value: i8) -> Result<Table, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(None))
+ }
+
+ fn serialize_i16(self, _value: i16) -> Result<Table, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(None))
+ }
+
+ fn serialize_i32(self, _value: i32) -> Result<Table, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(None))
+ }
+
+ fn serialize_i64(self, _value: i64) -> Result<Table, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(None))
+ }
+
+ fn serialize_u8(self, _value: u8) -> Result<Table, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(None))
+ }
+
+ fn serialize_u16(self, _value: u16) -> Result<Table, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(None))
+ }
+
+ fn serialize_u32(self, _value: u32) -> Result<Table, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(None))
+ }
+
+ fn serialize_u64(self, _value: u64) -> Result<Table, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(None))
+ }
+
+ fn serialize_f32(self, _value: f32) -> Result<Table, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(None))
+ }
+
+ fn serialize_f64(self, _value: f64) -> Result<Table, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(None))
+ }
+
+ fn serialize_char(self, _value: char) -> Result<Table, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(None))
+ }
+
+ fn serialize_str(self, _value: &str) -> Result<Table, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(None))
+ }
+
+ fn serialize_bytes(self, _value: &[u8]) -> Result<Table, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(None))
+ }
+
+ fn serialize_unit(self) -> Result<Table, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(None))
+ }
+
+ fn serialize_unit_struct(self, _name: &'static str) -> Result<Table, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(None))
+ }
+
+ fn serialize_unit_variant(
+ self,
+ name: &'static str,
+ _variant_index: u32,
+ _variant: &'static str,
+ ) -> Result<Table, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(Some(name)))
+ }
+
+ fn serialize_newtype_struct<T: ?Sized>(
+ self,
+ _name: &'static str,
+ value: &T,
+ ) -> Result<Table, crate::ser::Error>
+ where
+ T: ser::Serialize,
+ {
+ value.serialize(self)
+ }
+
+ fn serialize_newtype_variant<T: ?Sized>(
+ self,
+ _name: &'static str,
+ _variant_index: u32,
+ variant: &'static str,
+ value: &T,
+ ) -> Result<Table, crate::ser::Error>
+ where
+ T: ser::Serialize,
+ {
+ let value = value.serialize(ValueSerializer)?;
+ let mut table = Table::new();
+ table.insert(variant.to_owned(), value);
+ Ok(table)
+ }
+
+ fn serialize_none(self) -> Result<Table, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_none())
+ }
+
+ fn serialize_some<T: ?Sized>(self, value: &T) -> Result<Table, crate::ser::Error>
+ where
+ T: ser::Serialize,
+ {
+ value.serialize(self)
+ }
+
+ fn serialize_seq(self, _len: Option<usize>) -> Result<Self::SerializeSeq, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(None))
+ }
+
+ fn serialize_tuple(self, _len: usize) -> Result<Self::SerializeTuple, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(None))
+ }
+
+ fn serialize_tuple_struct(
+ self,
+ name: &'static str,
+ _len: usize,
+ ) -> Result<Self::SerializeTupleStruct, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(Some(name)))
+ }
+
+ fn serialize_tuple_variant(
+ self,
+ name: &'static str,
+ _variant_index: u32,
+ _variant: &'static str,
+ _len: usize,
+ ) -> Result<Self::SerializeTupleVariant, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(Some(name)))
+ }
+
+ fn serialize_map(self, _len: Option<usize>) -> Result<Self::SerializeMap, crate::ser::Error> {
+ Ok(SerializeMap {
+ map: Table::new(),
+ next_key: None,
+ })
+ }
+
+ fn serialize_struct(
+ self,
+ _name: &'static str,
+ len: usize,
+ ) -> Result<Self::SerializeStruct, crate::ser::Error> {
+ self.serialize_map(Some(len))
+ }
+
+ fn serialize_struct_variant(
+ self,
+ name: &'static str,
+ _variant_index: u32,
+ _variant: &'static str,
+ _len: usize,
+ ) -> Result<Self::SerializeStructVariant, crate::ser::Error> {
+ Err(crate::ser::Error::unsupported_type(Some(name)))
+ }
+}
+
+struct ValueSerializeVec {
+ vec: Vec<Value>,
+}
+
+impl ser::SerializeSeq for ValueSerializeVec {
+ type Ok = Value;
+ type Error = crate::ser::Error;
+
+ fn serialize_element<T: ?Sized>(&mut self, value: &T) -> Result<(), crate::ser::Error>
+ where
+ T: ser::Serialize,
+ {
+ self.vec.push(Value::try_from(value)?);
+ Ok(())
+ }
+
+ fn end(self) -> Result<Value, crate::ser::Error> {
+ Ok(Value::Array(self.vec))
+ }
+}
+
+impl ser::SerializeTuple for ValueSerializeVec {
+ type Ok = Value;
+ type Error = crate::ser::Error;
+
+ fn serialize_element<T: ?Sized>(&mut self, value: &T) -> Result<(), crate::ser::Error>
+ where
+ T: ser::Serialize,
+ {
+ ser::SerializeSeq::serialize_element(self, value)
+ }
+
+ fn end(self) -> Result<Value, crate::ser::Error> {
+ ser::SerializeSeq::end(self)
+ }
+}
+
+impl ser::SerializeTupleStruct for ValueSerializeVec {
+ type Ok = Value;
+ type Error = crate::ser::Error;
+
+ fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<(), crate::ser::Error>
+ where
+ T: ser::Serialize,
+ {
+ ser::SerializeSeq::serialize_element(self, value)
+ }
+
+ fn end(self) -> Result<Value, crate::ser::Error> {
+ ser::SerializeSeq::end(self)
+ }
+}
+
+impl ser::SerializeTupleVariant for ValueSerializeVec {
+ type Ok = Value;
+ type Error = crate::ser::Error;
+
+ fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<(), crate::ser::Error>
+ where
+ T: ser::Serialize,
+ {
+ ser::SerializeSeq::serialize_element(self, value)
+ }
+
+ fn end(self) -> Result<Value, crate::ser::Error> {
+ ser::SerializeSeq::end(self)
+ }
+}
+
+pub(crate) struct SerializeMap {
+ map: Table,
+ next_key: Option<String>,
+}
+
+impl ser::SerializeMap for SerializeMap {
+ type Ok = Table;
+ type Error = crate::ser::Error;
+
+ fn serialize_key<T: ?Sized>(&mut self, key: &T) -> Result<(), crate::ser::Error>
+ where
+ T: ser::Serialize,
+ {
+ match Value::try_from(key)? {
+ Value::String(s) => self.next_key = Some(s),
+ _ => return Err(crate::ser::Error::key_not_string()),
+ };
+ Ok(())
+ }
+
+ fn serialize_value<T: ?Sized>(&mut self, value: &T) -> Result<(), crate::ser::Error>
+ where
+ T: ser::Serialize,
+ {
+ let key = self.next_key.take();
+ let key = key.expect("serialize_value called before serialize_key");
+ match Value::try_from(value) {
+ Ok(value) => {
+ self.map.insert(key, value);
+ }
+ Err(crate::ser::Error {
+ inner: crate::edit::ser::Error::UnsupportedNone,
+ }) => {}
+ Err(e) => return Err(e),
+ }
+ Ok(())
+ }
+
+ fn end(self) -> Result<Table, crate::ser::Error> {
+ Ok(self.map)
+ }
+}
+
+impl ser::SerializeStruct for SerializeMap {
+ type Ok = Table;
+ type Error = crate::ser::Error;
+
+ fn serialize_field<T: ?Sized>(
+ &mut self,
+ key: &'static str,
+ value: &T,
+ ) -> Result<(), crate::ser::Error>
+ where
+ T: ser::Serialize,
+ {
+ ser::SerializeMap::serialize_key(self, key)?;
+ ser::SerializeMap::serialize_value(self, value)
+ }
+
+ fn end(self) -> Result<Table, crate::ser::Error> {
+ ser::SerializeMap::end(self)
+ }
+}
+
+struct ValueSerializeMap {
+ ser: SerializeMap,
+}
+
+impl ser::SerializeMap for ValueSerializeMap {
+ type Ok = Value;
+ type Error = crate::ser::Error;
+
+ fn serialize_key<T: ?Sized>(&mut self, key: &T) -> Result<(), crate::ser::Error>
+ where
+ T: ser::Serialize,
+ {
+ self.ser.serialize_key(key)
+ }
+
+ fn serialize_value<T: ?Sized>(&mut self, value: &T) -> Result<(), crate::ser::Error>
+ where
+ T: ser::Serialize,
+ {
+ self.ser.serialize_value(value)
+ }
+
+ fn end(self) -> Result<Value, crate::ser::Error> {
+ self.ser.end().map(Value::Table)
+ }
+}
+
+impl ser::SerializeStruct for ValueSerializeMap {
+ type Ok = Value;
+ type Error = crate::ser::Error;
+
+ fn serialize_field<T: ?Sized>(
+ &mut self,
+ key: &'static str,
+ value: &T,
+ ) -> Result<(), crate::ser::Error>
+ where
+ T: ser::Serialize,
+ {
+ ser::SerializeMap::serialize_key(self, key)?;
+ ser::SerializeMap::serialize_value(self, value)
+ }
+
+ fn end(self) -> Result<Value, crate::ser::Error> {
+ ser::SerializeMap::end(self)
+ }
+}
+
+struct DatetimeOrTable<'a> {
+ key: &'a mut String,
+}
+
+impl<'a, 'de> de::DeserializeSeed<'de> for DatetimeOrTable<'a> {
+ type Value = bool;
+
+ fn deserialize<D>(self, deserializer: D) -> Result<Self::Value, D::Error>
+ where
+ D: de::Deserializer<'de>,
+ {
+ deserializer.deserialize_any(self)
+ }
+}
+
+impl<'a, 'de> de::Visitor<'de> for DatetimeOrTable<'a> {
+ type Value = bool;
+
+ fn expecting(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
+ formatter.write_str("a string key")
+ }
+
+ fn visit_str<E>(self, s: &str) -> Result<bool, E>
+ where
+ E: de::Error,
+ {
+ if s == datetime::FIELD {
+ Ok(true)
+ } else {
+ self.key.push_str(s);
+ Ok(false)
+ }
+ }
+
+ fn visit_string<E>(self, s: String) -> Result<bool, E>
+ where
+ E: de::Error,
+ {
+ if s == datetime::FIELD {
+ Ok(true)
+ } else {
+ *self.key = s;
+ Ok(false)
+ }
+ }
+}
diff --git a/vendor/toml-0.7.5/tests/decoder.rs b/vendor/toml-0.7.5/tests/decoder.rs
new file mode 100644
index 000000000..fe6db3f5e
--- /dev/null
+++ b/vendor/toml-0.7.5/tests/decoder.rs
@@ -0,0 +1,67 @@
+#![cfg(all(feature = "parse", feature = "display"))]
+
+#[derive(Copy, Clone)]
+pub struct Decoder;
+
+impl toml_test_harness::Decoder for Decoder {
+ fn name(&self) -> &str {
+ "toml"
+ }
+
+ fn decode(&self, data: &[u8]) -> Result<toml_test_harness::Decoded, toml_test_harness::Error> {
+ let data = std::str::from_utf8(data).map_err(toml_test_harness::Error::new)?;
+ let document = data
+ .parse::<toml::Value>()
+ .map_err(toml_test_harness::Error::new)?;
+ value_to_decoded(&document)
+ }
+}
+
+fn value_to_decoded(
+ value: &toml::Value,
+) -> Result<toml_test_harness::Decoded, toml_test_harness::Error> {
+ match value {
+ toml::Value::Integer(v) => Ok(toml_test_harness::Decoded::Value(
+ toml_test_harness::DecodedValue::from(*v),
+ )),
+ toml::Value::String(v) => Ok(toml_test_harness::Decoded::Value(
+ toml_test_harness::DecodedValue::from(v),
+ )),
+ toml::Value::Float(v) => Ok(toml_test_harness::Decoded::Value(
+ toml_test_harness::DecodedValue::from(*v),
+ )),
+ toml::Value::Datetime(v) => {
+ let value = v.to_string();
+ let value = match (v.date.is_some(), v.time.is_some(), v.offset.is_some()) {
+ (true, true, true) => toml_test_harness::DecodedValue::Datetime(value),
+ (true, true, false) => toml_test_harness::DecodedValue::DatetimeLocal(value),
+ (true, false, false) => toml_test_harness::DecodedValue::DateLocal(value),
+ (false, true, false) => toml_test_harness::DecodedValue::TimeLocal(value),
+ _ => unreachable!("Unsupported case"),
+ };
+ Ok(toml_test_harness::Decoded::Value(value))
+ }
+ toml::Value::Boolean(v) => Ok(toml_test_harness::Decoded::Value(
+ toml_test_harness::DecodedValue::from(*v),
+ )),
+ toml::Value::Array(v) => {
+ let v: Result<_, toml_test_harness::Error> = v.iter().map(value_to_decoded).collect();
+ Ok(toml_test_harness::Decoded::Array(v?))
+ }
+ toml::Value::Table(v) => table_to_decoded(v),
+ }
+}
+
+fn table_to_decoded(
+ value: &toml::value::Table,
+) -> Result<toml_test_harness::Decoded, toml_test_harness::Error> {
+ let table: Result<_, toml_test_harness::Error> = value
+ .iter()
+ .map(|(k, v)| {
+ let k = k.to_owned();
+ let v = value_to_decoded(v)?;
+ Ok((k, v))
+ })
+ .collect();
+ Ok(toml_test_harness::Decoded::Table(table?))
+}
diff --git a/vendor/toml-0.7.5/tests/decoder_compliance.rs b/vendor/toml-0.7.5/tests/decoder_compliance.rs
new file mode 100644
index 000000000..5d4fc2a4d
--- /dev/null
+++ b/vendor/toml-0.7.5/tests/decoder_compliance.rs
@@ -0,0 +1,21 @@
+mod decoder;
+
+#[cfg(all(feature = "parse", feature = "display"))]
+fn main() {
+ let decoder = decoder::Decoder;
+ let mut harness = toml_test_harness::DecoderHarness::new(decoder);
+ harness
+ .ignore([
+ "valid/spec/float-0.toml",
+ // Unreleased
+ "valid/string/escape-esc.toml",
+ "valid/string/hex-escape.toml",
+ "valid/datetime/no-seconds.toml",
+ "valid/inline-table/newline.toml",
+ ])
+ .unwrap();
+ harness.test();
+}
+
+#[cfg(not(all(feature = "parse", feature = "display")))]
+fn main() {}
diff --git a/vendor/toml-0.7.5/tests/encoder.rs b/vendor/toml-0.7.5/tests/encoder.rs
new file mode 100644
index 000000000..eda62963c
--- /dev/null
+++ b/vendor/toml-0.7.5/tests/encoder.rs
@@ -0,0 +1,81 @@
+#![cfg(all(feature = "parse", feature = "display"))]
+
+#[derive(Copy, Clone)]
+pub struct Encoder;
+
+impl toml_test_harness::Encoder for Encoder {
+ fn name(&self) -> &str {
+ "toml"
+ }
+
+ fn encode(&self, data: toml_test_harness::Decoded) -> Result<String, toml_test_harness::Error> {
+ let value = from_decoded(&data)?;
+ let s = toml::to_string(&value).map_err(toml_test_harness::Error::new)?;
+ Ok(s)
+ }
+}
+
+fn from_decoded(
+ decoded: &toml_test_harness::Decoded,
+) -> Result<toml::Value, toml_test_harness::Error> {
+ let value = match decoded {
+ toml_test_harness::Decoded::Value(value) => from_decoded_value(value)?,
+ toml_test_harness::Decoded::Table(value) => toml::Value::Table(from_table(value)?),
+ toml_test_harness::Decoded::Array(value) => toml::Value::Array(from_array(value)?),
+ };
+ Ok(value)
+}
+
+fn from_decoded_value(
+ decoded: &toml_test_harness::DecodedValue,
+) -> Result<toml::Value, toml_test_harness::Error> {
+ match decoded {
+ toml_test_harness::DecodedValue::String(value) => Ok(toml::Value::String(value.clone())),
+ toml_test_harness::DecodedValue::Integer(value) => value
+ .parse::<i64>()
+ .map_err(toml_test_harness::Error::new)
+ .map(toml::Value::Integer),
+ toml_test_harness::DecodedValue::Float(value) => value
+ .parse::<f64>()
+ .map_err(toml_test_harness::Error::new)
+ .map(toml::Value::Float),
+ toml_test_harness::DecodedValue::Bool(value) => value
+ .parse::<bool>()
+ .map_err(toml_test_harness::Error::new)
+ .map(toml::Value::Boolean),
+ toml_test_harness::DecodedValue::Datetime(value) => value
+ .parse::<toml::value::Datetime>()
+ .map_err(toml_test_harness::Error::new)
+ .map(toml::Value::Datetime),
+ toml_test_harness::DecodedValue::DatetimeLocal(value) => value
+ .parse::<toml::value::Datetime>()
+ .map_err(toml_test_harness::Error::new)
+ .map(toml::Value::Datetime),
+ toml_test_harness::DecodedValue::DateLocal(value) => value
+ .parse::<toml::value::Datetime>()
+ .map_err(toml_test_harness::Error::new)
+ .map(toml::Value::Datetime),
+ toml_test_harness::DecodedValue::TimeLocal(value) => value
+ .parse::<toml::value::Datetime>()
+ .map_err(toml_test_harness::Error::new)
+ .map(toml::Value::Datetime),
+ }
+}
+
+fn from_table(
+ decoded: &std::collections::HashMap<String, toml_test_harness::Decoded>,
+) -> Result<toml::value::Table, toml_test_harness::Error> {
+ decoded
+ .iter()
+ .map(|(k, v)| {
+ let v = from_decoded(v)?;
+ Ok((k.to_owned(), v))
+ })
+ .collect()
+}
+
+fn from_array(
+ decoded: &[toml_test_harness::Decoded],
+) -> Result<toml::value::Array, toml_test_harness::Error> {
+ decoded.iter().map(from_decoded).collect()
+}
diff --git a/vendor/toml-0.7.5/tests/encoder_compliance.rs b/vendor/toml-0.7.5/tests/encoder_compliance.rs
new file mode 100644
index 000000000..380724831
--- /dev/null
+++ b/vendor/toml-0.7.5/tests/encoder_compliance.rs
@@ -0,0 +1,14 @@
+mod decoder;
+mod encoder;
+
+#[cfg(all(feature = "parse", feature = "display"))]
+fn main() {
+ let encoder = encoder::Encoder;
+ let decoder = decoder::Decoder;
+ let mut harness = toml_test_harness::EncoderHarness::new(encoder, decoder);
+ harness.ignore(["valid/spec/float-0.toml"]).unwrap();
+ harness.test();
+}
+
+#[cfg(not(all(feature = "parse", feature = "display")))]
+fn main() {}
diff --git a/vendor/toml-0.7.5/tests/testsuite/de_errors.rs b/vendor/toml-0.7.5/tests/testsuite/de_errors.rs
new file mode 100644
index 000000000..b3630bd4e
--- /dev/null
+++ b/vendor/toml-0.7.5/tests/testsuite/de_errors.rs
@@ -0,0 +1,460 @@
+use serde::{de, Deserialize};
+use std::fmt;
+
+macro_rules! bad {
+ ($toml:expr, $ty:ty, $msg:expr) => {
+ match toml::from_str::<$ty>($toml) {
+ Ok(s) => panic!("parsed to: {:#?}", s),
+ Err(e) => snapbox::assert_eq($msg, e.to_string()),
+ }
+ };
+}
+
+#[derive(Debug, Deserialize, PartialEq)]
+struct Parent<T> {
+ p_a: T,
+ p_b: Vec<Child<T>>,
+}
+
+#[derive(Debug, Deserialize, PartialEq)]
+#[serde(deny_unknown_fields)]
+struct Child<T> {
+ c_a: T,
+ c_b: T,
+}
+
+#[derive(Debug, PartialEq)]
+enum CasedString {
+ Lowercase(String),
+ Uppercase(String),
+}
+
+impl<'de> de::Deserialize<'de> for CasedString {
+ fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+ where
+ D: de::Deserializer<'de>,
+ {
+ struct CasedStringVisitor;
+
+ impl<'de> de::Visitor<'de> for CasedStringVisitor {
+ type Value = CasedString;
+
+ fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+ formatter.write_str("a string")
+ }
+
+ fn visit_str<E>(self, s: &str) -> Result<Self::Value, E>
+ where
+ E: de::Error,
+ {
+ if s.is_empty() {
+ Err(de::Error::invalid_length(0, &"a non-empty string"))
+ } else if s.chars().all(|x| x.is_ascii_lowercase()) {
+ Ok(CasedString::Lowercase(s.to_string()))
+ } else if s.chars().all(|x| x.is_ascii_uppercase()) {
+ Ok(CasedString::Uppercase(s.to_string()))
+ } else {
+ Err(de::Error::invalid_value(
+ de::Unexpected::Str(s),
+ &"all lowercase or all uppercase",
+ ))
+ }
+ }
+ }
+
+ deserializer.deserialize_any(CasedStringVisitor)
+ }
+}
+
+#[test]
+fn custom_errors() {
+ toml::from_str::<Parent<CasedString>>(
+ "
+ p_a = 'a'
+ p_b = [{c_a = 'a', c_b = 'c'}]
+ ",
+ )
+ .unwrap();
+
+ // Custom error at p_b value.
+ bad!(
+ "
+ p_a = ''
+ # ^
+ ",
+ Parent<CasedString>,
+ "\
+TOML parse error at line 2, column 19
+ |
+2 | p_a = ''
+ | ^^
+invalid length 0, expected a non-empty string
+"
+ );
+
+ // Missing field in table.
+ bad!(
+ "
+ p_a = 'a'
+ # ^
+ ",
+ Parent<CasedString>,
+ "\
+TOML parse error at line 1, column 1
+ |
+1 |
+ | ^
+missing field `p_b`
+"
+ );
+
+ // Invalid type in p_b.
+ bad!(
+ "
+ p_a = 'a'
+ p_b = 1
+ # ^
+ ",
+ Parent<CasedString>,
+ "\
+TOML parse error at line 3, column 19
+ |
+3 | p_b = 1
+ | ^
+invalid type: integer `1`, expected a sequence
+"
+ );
+
+ // Sub-table in Vec is missing a field.
+ bad!(
+ "
+ p_a = 'a'
+ p_b = [
+ {c_a = 'a'}
+ # ^
+ ]
+ ",
+ Parent<CasedString>,
+ "\
+TOML parse error at line 4, column 17
+ |
+4 | {c_a = 'a'}
+ | ^^^^^^^^^^^
+missing field `c_b`
+"
+ );
+
+ // Sub-table in Vec has a field with a bad value.
+ bad!(
+ "
+ p_a = 'a'
+ p_b = [
+ {c_a = 'a', c_b = '*'}
+ # ^
+ ]
+ ",
+ Parent<CasedString>,
+ "\
+TOML parse error at line 4, column 35
+ |
+4 | {c_a = 'a', c_b = '*'}
+ | ^^^
+invalid value: string \"*\", expected all lowercase or all uppercase
+"
+ );
+
+ // Sub-table in Vec is missing a field.
+ bad!(
+ "
+ p_a = 'a'
+ p_b = [
+ {c_a = 'a', c_b = 'b'},
+ {c_a = 'aa'}
+ # ^
+ ]
+ ",
+ Parent<CasedString>,
+ "\
+TOML parse error at line 5, column 17
+ |
+5 | {c_a = 'aa'}
+ | ^^^^^^^^^^^^
+missing field `c_b`
+"
+ );
+
+ // Sub-table in the middle of a Vec is missing a field.
+ bad!(
+ "
+ p_a = 'a'
+ p_b = [
+ {c_a = 'a', c_b = 'b'},
+ {c_a = 'aa'},
+ # ^
+ {c_a = 'aaa', c_b = 'bbb'},
+ ]
+ ",
+ Parent<CasedString>,
+ "\
+TOML parse error at line 5, column 17
+ |
+5 | {c_a = 'aa'},
+ | ^^^^^^^^^^^^
+missing field `c_b`
+"
+ );
+
+ // Sub-table in the middle of a Vec has a field with a bad value.
+ bad!(
+ "
+ p_a = 'a'
+ p_b = [
+ {c_a = 'a', c_b = 'b'},
+ {c_a = 'aa', c_b = 1},
+ # ^
+ {c_a = 'aaa', c_b = 'bbb'},
+ ]
+ ",
+ Parent<CasedString>,
+ "\
+TOML parse error at line 5, column 36
+ |
+5 | {c_a = 'aa', c_b = 1},
+ | ^
+invalid type: integer `1`, expected a string
+"
+ );
+
+ // Sub-table in the middle of a Vec has an extra field.
+ bad!(
+ "
+ p_a = 'a'
+ p_b = [
+ {c_a = 'a', c_b = 'b'},
+ {c_a = 'aa', c_b = 'bb', c_d = 'd'},
+ # ^
+ {c_a = 'aaa', c_b = 'bbb'},
+ {c_a = 'aaaa', c_b = 'bbbb'},
+ ]
+ ",
+ Parent<CasedString>,
+ "\
+TOML parse error at line 5, column 42
+ |
+5 | {c_a = 'aa', c_b = 'bb', c_d = 'd'},
+ | ^^^
+unknown field `c_d`, expected `c_a` or `c_b`
+"
+ );
+
+ // Sub-table in the middle of a Vec is missing a field.
+ // FIXME: This location is pretty off.
+ bad!(
+ "
+ p_a = 'a'
+ [[p_b]]
+ c_a = 'a'
+ c_b = 'b'
+ [[p_b]]
+ c_a = 'aa'
+ # c_b = 'bb' # <- missing field
+ [[p_b]]
+ c_a = 'aaa'
+ c_b = 'bbb'
+ [[p_b]]
+ # ^
+ c_a = 'aaaa'
+ c_b = 'bbbb'
+ ",
+ Parent<CasedString>,
+ "\
+TOML parse error at line 6, column 13
+ |
+6 | [[p_b]]
+ | ^^^^^^^^^^^^^^^^^^^
+missing field `c_b`
+"
+ );
+
+ // Sub-table in the middle of a Vec has a field with a bad value.
+ bad!(
+ "
+ p_a = 'a'
+ [[p_b]]
+ c_a = 'a'
+ c_b = 'b'
+ [[p_b]]
+ c_a = 'aa'
+ c_b = '*'
+ # ^
+ [[p_b]]
+ c_a = 'aaa'
+ c_b = 'bbb'
+ ",
+ Parent<CasedString>,
+ "\
+TOML parse error at line 8, column 19
+ |
+8 | c_b = '*'
+ | ^^^
+invalid value: string \"*\", expected all lowercase or all uppercase
+"
+ );
+
+ // Sub-table in the middle of a Vec has an extra field.
+ bad!(
+ "
+ p_a = 'a'
+ [[p_b]]
+ c_a = 'a'
+ c_b = 'b'
+ [[p_b]]
+ c_a = 'aa'
+ c_d = 'dd' # unknown field
+ # ^
+ [[p_b]]
+ c_a = 'aaa'
+ c_b = 'bbb'
+ [[p_b]]
+ c_a = 'aaaa'
+ c_b = 'bbbb'
+ ",
+ Parent<CasedString>,
+ "\
+TOML parse error at line 8, column 13
+ |
+8 | c_d = 'dd' # unknown field
+ | ^^^
+unknown field `c_d`, expected `c_a` or `c_b`
+"
+ );
+}
+
+#[test]
+fn serde_derive_deserialize_errors() {
+ bad!(
+ "
+ p_a = ''
+ # ^
+ ",
+ Parent<String>,
+ "\
+TOML parse error at line 1, column 1
+ |
+1 |
+ | ^
+missing field `p_b`
+"
+ );
+
+ bad!(
+ "
+ p_a = ''
+ p_b = [
+ {c_a = ''}
+ # ^
+ ]
+ ",
+ Parent<String>,
+ "\
+TOML parse error at line 4, column 17
+ |
+4 | {c_a = ''}
+ | ^^^^^^^^^^
+missing field `c_b`
+"
+ );
+
+ bad!(
+ "
+ p_a = ''
+ p_b = [
+ {c_a = '', c_b = 1}
+ # ^
+ ]
+ ",
+ Parent<String>,
+ "\
+TOML parse error at line 4, column 34
+ |
+4 | {c_a = '', c_b = 1}
+ | ^
+invalid type: integer `1`, expected a string
+"
+ );
+
+ // FIXME: This location could be better.
+ bad!(
+ "
+ p_a = ''
+ p_b = [
+ {c_a = '', c_b = '', c_d = ''},
+ # ^
+ ]
+ ",
+ Parent<String>,
+ "\
+TOML parse error at line 4, column 38
+ |
+4 | {c_a = '', c_b = '', c_d = ''},
+ | ^^^
+unknown field `c_d`, expected `c_a` or `c_b`
+"
+ );
+
+ bad!(
+ "
+ p_a = 'a'
+ p_b = [
+ {c_a = '', c_b = 1, c_d = ''},
+ # ^
+ ]
+ ",
+ Parent<String>,
+ "\
+TOML parse error at line 4, column 34
+ |
+4 | {c_a = '', c_b = 1, c_d = ''},
+ | ^
+invalid type: integer `1`, expected a string
+"
+ );
+}
+
+#[test]
+fn error_handles_crlf() {
+ bad!(
+ "\r\n\
+ [t1]\r\n\
+ [t2]\r\n\
+ a = 1\r\n\
+ a = 2\r\n\
+ ",
+ toml::Value,
+ "\
+TOML parse error at line 5, column 1
+ |
+5 | a = 2
+ | ^
+duplicate key `a` in table `t2`
+"
+ );
+
+ // Should be the same as above.
+ bad!(
+ "\n\
+ [t1]\n\
+ [t2]\n\
+ a = 1\n\
+ a = 2\n\
+ ",
+ toml::Value,
+ "\
+TOML parse error at line 5, column 1
+ |
+5 | a = 2
+ | ^
+duplicate key `a` in table `t2`
+"
+ );
+}
diff --git a/vendor/toml-0.7.5/tests/testsuite/display.rs b/vendor/toml-0.7.5/tests/testsuite/display.rs
new file mode 100644
index 000000000..7430fac82
--- /dev/null
+++ b/vendor/toml-0.7.5/tests/testsuite/display.rs
@@ -0,0 +1,116 @@
+use toml::map::Map;
+use toml::Value::{Array, Boolean, Float, Integer, String, Table};
+
+macro_rules! map( ($($k:expr => $v:expr),*) => ({
+ let mut _m = Map::new();
+ $(_m.insert($k.to_string(), $v);)*
+ _m
+}) );
+
+#[test]
+fn simple_show() {
+ assert_eq!(String("foo".to_string()).to_string(), "\"foo\"");
+ assert_eq!(Integer(10).to_string(), "10");
+ assert_eq!(Float(10.0).to_string(), "10.0");
+ assert_eq!(Float(2.4).to_string(), "2.4");
+ assert_eq!(Boolean(true).to_string(), "true");
+ assert_eq!(Array(vec![]).to_string(), "[]");
+ assert_eq!(Array(vec![Integer(1), Integer(2)]).to_string(), "[1, 2]");
+}
+
+#[test]
+fn table() {
+ assert_eq!(map! {}.to_string(), "");
+ assert_eq!(
+ map! {
+ "test" => Integer(2),
+ "test2" => Integer(3) }
+ .to_string(),
+ "test = 2\ntest2 = 3\n"
+ );
+ assert_eq!(
+ map! {
+ "test" => Integer(2),
+ "test2" => Table(map! {
+ "test" => String("wut".to_string())
+ })
+ }
+ .to_string(),
+ "test = 2\n\
+ \n\
+ [test2]\n\
+ test = \"wut\"\n"
+ );
+ assert_eq!(
+ map! {
+ "test" => Integer(2),
+ "test2" => Table(map! {
+ "test" => String("wut".to_string())
+ })
+ }
+ .to_string(),
+ "test = 2\n\
+ \n\
+ [test2]\n\
+ test = \"wut\"\n"
+ );
+ assert_eq!(
+ map! {
+ "test" => Integer(2),
+ "test2" => Array(vec![Table(map! {
+ "test" => String("wut".to_string())
+ })])
+ }
+ .to_string(),
+ "test = 2\n\
+ \n\
+ [[test2]]\n\
+ test = \"wut\"\n"
+ );
+ #[cfg(feature = "preserve_order")]
+ assert_eq!(
+ map! {
+ "foo.bar" => Integer(2),
+ "foo\"bar" => Integer(2)
+ }
+ .to_string(),
+ "\"foo.bar\" = 2\n\
+ \"foo\\\"bar\" = 2\n"
+ );
+ assert_eq!(
+ map! {
+ "test" => Integer(2),
+ "test2" => Array(vec![Table(map! {
+ "test" => Array(vec![Integer(2)])
+ })])
+ }
+ .to_string(),
+ "test = 2\n\
+ \n\
+ [[test2]]\n\
+ test = [2]\n"
+ );
+ let table = map! {
+ "test" => Integer(2),
+ "test2" => Array(vec![Table(map! {
+ "test" => Array(vec![Array(vec![Integer(2), Integer(3)]),
+ Array(vec![String("foo".to_string()), String("bar".to_string())])])
+ })])
+ };
+ assert_eq!(
+ table.to_string(),
+ "test = 2\n\
+ \n\
+ [[test2]]\n\
+ test = [[2, 3], [\"foo\", \"bar\"]]\n"
+ );
+ assert_eq!(
+ map! {
+ "test" => Array(vec![Integer(2)]),
+ "test2" => Integer(2)
+ }
+ .to_string(),
+ "test = [2]\n\
+ test2 = 2\n"
+ );
+}
diff --git a/vendor/toml-0.7.5/tests/testsuite/display_tricky.rs b/vendor/toml-0.7.5/tests/testsuite/display_tricky.rs
new file mode 100644
index 000000000..379ae9138
--- /dev/null
+++ b/vendor/toml-0.7.5/tests/testsuite/display_tricky.rs
@@ -0,0 +1,55 @@
+use serde::Deserialize;
+use serde::Serialize;
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct Recipe {
+ pub name: String,
+ pub description: Option<String>,
+ #[serde(default)]
+ pub modules: Vec<Modules>,
+ #[serde(default)]
+ pub packages: Vec<Packages>,
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct Modules {
+ pub name: String,
+ pub version: Option<String>,
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct Packages {
+ pub name: String,
+ pub version: Option<String>,
+}
+
+#[test]
+fn both_ends() {
+ let recipe_works = toml::from_str::<Recipe>(
+ r#"
+ name = "testing"
+ description = "example"
+ modules = []
+
+ [[packages]]
+ name = "base"
+ "#,
+ )
+ .unwrap();
+ toml::to_string(&recipe_works).unwrap();
+
+ let recipe_fails = toml::from_str::<Recipe>(
+ r#"
+ name = "testing"
+ description = "example"
+ packages = []
+
+ [[modules]]
+ name = "base"
+ "#,
+ )
+ .unwrap();
+
+ let recipe_toml = toml::Table::try_from(recipe_fails).unwrap();
+ recipe_toml.to_string();
+}
diff --git a/vendor/toml-0.7.5/tests/testsuite/enum_external_deserialize.rs b/vendor/toml-0.7.5/tests/testsuite/enum_external_deserialize.rs
new file mode 100644
index 000000000..6e0c2f768
--- /dev/null
+++ b/vendor/toml-0.7.5/tests/testsuite/enum_external_deserialize.rs
@@ -0,0 +1,320 @@
+use serde::Deserialize;
+
+#[derive(Debug, Deserialize, PartialEq)]
+struct OuterStruct {
+ inner: TheEnum,
+}
+
+#[derive(Debug, Deserialize, PartialEq)]
+enum TheEnum {
+ Plain,
+ Tuple(i64, bool),
+ NewType(String),
+ Struct { value: i64 },
+}
+
+#[derive(Debug, Deserialize, PartialEq)]
+struct Val {
+ val: TheEnum,
+}
+
+#[derive(Debug, Deserialize, PartialEq)]
+struct Multi {
+ enums: Vec<TheEnum>,
+}
+
+fn value_from_str<T>(s: &'_ str) -> Result<T, toml::de::Error>
+where
+ T: serde::de::DeserializeOwned,
+{
+ T::deserialize(toml::de::ValueDeserializer::new(s))
+}
+
+#[test]
+fn invalid_variant_returns_error_with_good_message_string() {
+ let error = value_from_str::<TheEnum>("\"NonExistent\"").unwrap_err();
+ snapbox::assert_eq(
+ r#"unknown variant `NonExistent`, expected one of `Plain`, `Tuple`, `NewType`, `Struct`
+"#,
+ error.to_string(),
+ );
+
+ let error = toml::from_str::<Val>("val = \"NonExistent\"").unwrap_err();
+ snapbox::assert_eq(
+ r#"TOML parse error at line 1, column 7
+ |
+1 | val = "NonExistent"
+ | ^^^^^^^^^^^^^
+unknown variant `NonExistent`, expected one of `Plain`, `Tuple`, `NewType`, `Struct`
+"#,
+ error.to_string(),
+ );
+}
+
+#[test]
+fn invalid_variant_returns_error_with_good_message_inline_table() {
+ let error = value_from_str::<TheEnum>("{ NonExistent = {} }").unwrap_err();
+ snapbox::assert_eq(
+ r#"unknown variant `NonExistent`, expected one of `Plain`, `Tuple`, `NewType`, `Struct`
+"#,
+ error.to_string(),
+ );
+
+ let error = toml::from_str::<Val>("val = { NonExistent = {} }").unwrap_err();
+ snapbox::assert_eq(
+ r#"TOML parse error at line 1, column 9
+ |
+1 | val = { NonExistent = {} }
+ | ^^^^^^^^^^^
+unknown variant `NonExistent`, expected one of `Plain`, `Tuple`, `NewType`, `Struct`
+"#,
+ error.to_string(),
+ );
+}
+
+#[test]
+fn extra_field_returns_expected_empty_table_error() {
+ let error = value_from_str::<TheEnum>("{ Plain = { extra_field = 404 } }").unwrap_err();
+ snapbox::assert_eq(
+ r#"expected empty table
+"#,
+ error.to_string(),
+ );
+
+ let error = toml::from_str::<Val>("val = { Plain = { extra_field = 404 } }").unwrap_err();
+ snapbox::assert_eq(
+ r#"TOML parse error at line 1, column 17
+ |
+1 | val = { Plain = { extra_field = 404 } }
+ | ^^^^^^^^^^^^^^^^^^^^^
+expected empty table
+"#,
+ error.to_string(),
+ );
+}
+
+#[test]
+fn extra_field_returns_expected_empty_table_error_struct_variant() {
+ let error = value_from_str::<TheEnum>("{ Struct = { value = 123, extra_0 = 0, extra_1 = 1 } }")
+ .unwrap_err();
+
+ snapbox::assert_eq(
+ r#"unexpected keys in table: extra_0, extra_1, available keys: value
+"#,
+ error.to_string(),
+ );
+
+ let error =
+ toml::from_str::<Val>("val = { Struct = { value = 123, extra_0 = 0, extra_1 = 1 } }")
+ .unwrap_err();
+
+ snapbox::assert_eq(
+ r#"TOML parse error at line 1, column 33
+ |
+1 | val = { Struct = { value = 123, extra_0 = 0, extra_1 = 1 } }
+ | ^^^^^^^
+unexpected keys in table: extra_0, extra_1, available keys: value
+"#,
+ error.to_string(),
+ );
+}
+
+mod enum_unit {
+ use super::*;
+
+ #[test]
+ fn from_str() {
+ assert_eq!(TheEnum::Plain, value_from_str("\"Plain\"").unwrap());
+
+ assert_eq!(
+ Val {
+ val: TheEnum::Plain
+ },
+ toml::from_str("val = \"Plain\"").unwrap()
+ );
+ }
+
+ #[test]
+ fn from_inline_table() {
+ assert_eq!(TheEnum::Plain, value_from_str("{ Plain = {} }").unwrap());
+ assert_eq!(
+ Val {
+ val: TheEnum::Plain
+ },
+ toml::from_str("val = { Plain = {} }").unwrap()
+ );
+ }
+
+ #[test]
+ fn from_std_table() {
+ assert_eq!(TheEnum::Plain, toml::from_str("[Plain]\n").unwrap());
+ }
+}
+
+mod enum_tuple {
+ use super::*;
+
+ #[test]
+ fn from_inline_table() {
+ assert_eq!(
+ TheEnum::Tuple(-123, true),
+ value_from_str("{ Tuple = { 0 = -123, 1 = true } }").unwrap()
+ );
+ assert_eq!(
+ Val {
+ val: TheEnum::Tuple(-123, true)
+ },
+ toml::from_str("val = { Tuple = { 0 = -123, 1 = true } }").unwrap()
+ );
+ }
+
+ #[test]
+ fn from_std_table() {
+ assert_eq!(
+ TheEnum::Tuple(-123, true),
+ toml::from_str(
+ r#"[Tuple]
+ 0 = -123
+ 1 = true
+ "#
+ )
+ .unwrap()
+ );
+ }
+}
+
+mod enum_newtype {
+ use super::*;
+
+ #[test]
+ fn from_inline_table() {
+ assert_eq!(
+ TheEnum::NewType("value".to_string()),
+ value_from_str(r#"{ NewType = "value" }"#).unwrap()
+ );
+ assert_eq!(
+ Val {
+ val: TheEnum::NewType("value".to_string()),
+ },
+ toml::from_str(r#"val = { NewType = "value" }"#).unwrap()
+ );
+ }
+
+ #[test]
+ fn from_std_table() {
+ assert_eq!(
+ TheEnum::NewType("value".to_string()),
+ toml::from_str(r#"NewType = "value""#).unwrap()
+ );
+ assert_eq!(
+ Val {
+ val: TheEnum::NewType("value".to_string()),
+ },
+ toml::from_str(
+ r#"[val]
+ NewType = "value"
+ "#
+ )
+ .unwrap()
+ );
+ }
+}
+
+mod enum_struct {
+ use super::*;
+
+ #[test]
+ fn from_inline_table() {
+ assert_eq!(
+ TheEnum::Struct { value: -123 },
+ value_from_str("{ Struct = { value = -123 } }").unwrap()
+ );
+ assert_eq!(
+ Val {
+ val: TheEnum::Struct { value: -123 }
+ },
+ toml::from_str("val = { Struct = { value = -123 } }").unwrap()
+ );
+ }
+
+ #[test]
+ fn from_std_table() {
+ assert_eq!(
+ TheEnum::Struct { value: -123 },
+ toml::from_str(
+ r#"[Struct]
+ value = -123
+ "#
+ )
+ .unwrap()
+ );
+ }
+
+ #[test]
+ fn from_nested_std_table() {
+ assert_eq!(
+ OuterStruct {
+ inner: TheEnum::Struct { value: -123 }
+ },
+ toml::from_str(
+ r#"[inner.Struct]
+ value = -123
+ "#
+ )
+ .unwrap()
+ );
+ }
+}
+
+mod enum_array {
+ use super::*;
+
+ #[test]
+ fn from_inline_tables() {
+ let toml_str = r#"
+ enums = [
+ { Plain = {} },
+ { Tuple = { 0 = -123, 1 = true } },
+ { NewType = "value" },
+ { Struct = { value = -123 } }
+ ]"#;
+ assert_eq!(
+ Multi {
+ enums: vec![
+ TheEnum::Plain,
+ TheEnum::Tuple(-123, true),
+ TheEnum::NewType("value".to_string()),
+ TheEnum::Struct { value: -123 },
+ ]
+ },
+ toml::from_str(toml_str).unwrap()
+ );
+ }
+
+ #[test]
+ fn from_std_table() {
+ let toml_str = r#"[[enums]]
+ Plain = {}
+
+ [[enums]]
+ Tuple = { 0 = -123, 1 = true }
+
+ [[enums]]
+ NewType = "value"
+
+ [[enums]]
+ Struct = { value = -123 }
+ "#;
+ assert_eq!(
+ Multi {
+ enums: vec![
+ TheEnum::Plain,
+ TheEnum::Tuple(-123, true),
+ TheEnum::NewType("value".to_string()),
+ TheEnum::Struct { value: -123 },
+ ]
+ },
+ toml::from_str(toml_str).unwrap()
+ );
+ }
+}
diff --git a/vendor/toml-0.7.5/tests/testsuite/float.rs b/vendor/toml-0.7.5/tests/testsuite/float.rs
new file mode 100644
index 000000000..d00813471
--- /dev/null
+++ b/vendor/toml-0.7.5/tests/testsuite/float.rs
@@ -0,0 +1,80 @@
+use serde::Deserialize;
+use serde::Serialize;
+use toml::Value;
+
+#[rustfmt::skip] // appears to be a bug in rustfmt to make this converge...
+macro_rules! float_inf_tests {
+ ($ty:ty) => {{
+ #[derive(Serialize, Deserialize)]
+ struct S {
+ sf1: $ty,
+ sf2: $ty,
+ sf3: $ty,
+ sf4: $ty,
+ sf5: $ty,
+ sf6: $ty,
+ sf7: $ty,
+ sf8: $ty,
+ }
+ let inf: S = toml::from_str(
+ r"
+ # infinity
+ sf1 = inf # positive infinity
+ sf2 = +inf # positive infinity
+ sf3 = -inf # negative infinity
+
+ # not a number
+ sf4 = nan # actual sNaN/qNaN encoding is implementation specific
+ sf5 = +nan # same as `nan`
+ sf6 = -nan # valid, actual encoding is implementation specific
+
+ # zero
+ sf7 = +0.0
+ sf8 = -0.0
+ ",
+ )
+ .expect("Parse infinities.");
+
+ assert!(inf.sf1.is_infinite());
+ assert!(inf.sf1.is_sign_positive());
+ assert!(inf.sf2.is_infinite());
+ assert!(inf.sf2.is_sign_positive());
+ assert!(inf.sf3.is_infinite());
+ assert!(inf.sf3.is_sign_negative());
+
+ assert!(inf.sf4.is_nan());
+ assert!(inf.sf4.is_sign_positive());
+ assert!(inf.sf5.is_nan());
+ assert!(inf.sf5.is_sign_positive());
+ assert!(inf.sf6.is_nan());
+ assert!(inf.sf6.is_sign_negative());
+
+ assert_eq!(inf.sf7, 0.0);
+ assert!(inf.sf7.is_sign_positive());
+ assert_eq!(inf.sf8, 0.0);
+ assert!(inf.sf8.is_sign_negative());
+
+ let s = toml::to_string(&inf).unwrap();
+ assert_eq!(
+ s,
+ "\
+sf1 = inf
+sf2 = inf
+sf3 = -inf
+sf4 = nan
+sf5 = nan
+sf6 = -nan
+sf7 = 0.0
+sf8 = -0.0
+"
+ );
+
+ toml::from_str::<Value>(&s).expect("roundtrip");
+ }};
+}
+
+#[test]
+fn float_inf() {
+ float_inf_tests!(f32);
+ float_inf_tests!(f64);
+}
diff --git a/vendor/toml-0.7.5/tests/testsuite/formatting.rs b/vendor/toml-0.7.5/tests/testsuite/formatting.rs
new file mode 100644
index 000000000..8240d1d30
--- /dev/null
+++ b/vendor/toml-0.7.5/tests/testsuite/formatting.rs
@@ -0,0 +1,54 @@
+use serde::Deserialize;
+use serde::Serialize;
+use toml::to_string;
+
+#[derive(Debug, Clone, Hash, PartialEq, Eq, Serialize, Deserialize)]
+struct User {
+ pub name: String,
+ pub surname: String,
+}
+
+#[derive(Debug, Clone, Hash, PartialEq, Eq, Serialize, Deserialize)]
+struct Users {
+ pub user: Vec<User>,
+}
+
+#[derive(Debug, Clone, Hash, PartialEq, Eq, Serialize, Deserialize)]
+struct TwoUsers {
+ pub user0: User,
+ pub user1: User,
+}
+
+#[test]
+fn no_unnecessary_newlines_array() {
+ assert!(!to_string(&Users {
+ user: vec![
+ User {
+ name: "John".to_string(),
+ surname: "Doe".to_string(),
+ },
+ User {
+ name: "Jane".to_string(),
+ surname: "Dough".to_string(),
+ },
+ ],
+ })
+ .unwrap()
+ .starts_with('\n'));
+}
+
+#[test]
+fn no_unnecessary_newlines_table() {
+ assert!(!to_string(&TwoUsers {
+ user0: User {
+ name: "John".to_string(),
+ surname: "Doe".to_string(),
+ },
+ user1: User {
+ name: "Jane".to_string(),
+ surname: "Dough".to_string(),
+ },
+ })
+ .unwrap()
+ .starts_with('\n'));
+}
diff --git a/vendor/toml-0.7.5/tests/testsuite/macros.rs b/vendor/toml-0.7.5/tests/testsuite/macros.rs
new file mode 100644
index 000000000..510070510
--- /dev/null
+++ b/vendor/toml-0.7.5/tests/testsuite/macros.rs
@@ -0,0 +1,368 @@
+use std::f64;
+
+use toml::toml;
+
+macro_rules! table {
+ ($($key:expr => $value:expr,)*) => {{
+ // https://github.com/rust-lang/rust/issues/60643
+ #[allow(unused_mut)]
+ let mut table = toml::value::Table::new();
+ $(
+ table.insert($key.to_string(), $value.into());
+ )*
+ toml::Value::Table(table)
+ }};
+}
+
+macro_rules! array {
+ ($($element:expr,)*) => {{
+ // https://github.com/rust-lang/rust/issues/60643
+ #![allow(clippy::vec_init_then_push)]
+ #[allow(unused_mut)]
+ let mut array = toml::value::Array::new();
+ $(
+ array.push($element.into());
+ )*
+ toml::Value::Array(array)
+ }};
+}
+
+macro_rules! datetime {
+ ($s:tt) => {
+ $s.parse::<toml::value::Datetime>().unwrap()
+ };
+}
+
+#[test]
+fn test_cargo_toml() {
+ // Simple sanity check of:
+ //
+ // - Ordinary tables
+ // - Inline tables
+ // - Inline arrays
+ // - String values
+ // - Table keys containing hyphen
+ // - Table headers containing hyphen
+ let actual = toml! {
+ [package]
+ name = "toml"
+ version = "0.4.5"
+ authors = ["Alex Crichton <alex@alexcrichton.com>"]
+
+ [badges]
+ travis-ci = { repository = "alexcrichton/toml-rs" }
+
+ [dependencies]
+ serde = "1.0"
+
+ [dev-dependencies]
+ serde_derive = "1.0"
+ serde_json = "1.0"
+ };
+
+ let expected = table! {
+ "package" => table! {
+ "name" => "toml".to_owned(),
+ "version" => "0.4.5".to_owned(),
+ "authors" => array! {
+ "Alex Crichton <alex@alexcrichton.com>".to_owned(),
+ },
+ },
+ "badges" => table! {
+ "travis-ci" => table! {
+ "repository" => "alexcrichton/toml-rs".to_owned(),
+ },
+ },
+ "dependencies" => table! {
+ "serde" => "1.0".to_owned(),
+ },
+ "dev-dependencies" => table! {
+ "serde_derive" => "1.0".to_owned(),
+ "serde_json" => "1.0".to_owned(),
+ },
+ };
+
+ assert_eq!(toml::Value::Table(actual), expected);
+}
+
+#[test]
+fn test_array() {
+ // Copied from the TOML spec.
+ let actual = toml! {
+ [[fruit]]
+ name = "apple"
+
+ [fruit.physical]
+ color = "red"
+ shape = "round"
+
+ [[fruit.variety]]
+ name = "red delicious"
+
+ [[fruit.variety]]
+ name = "granny smith"
+
+ [[fruit]]
+ name = "banana"
+
+ [[fruit.variety]]
+ name = "plantain"
+ };
+
+ let expected = table! {
+ "fruit" => array! {
+ table! {
+ "name" => "apple",
+ "physical" => table! {
+ "color" => "red",
+ "shape" => "round",
+ },
+ "variety" => array! {
+ table! {
+ "name" => "red delicious",
+ },
+ table! {
+ "name" => "granny smith",
+ },
+ },
+ },
+ table! {
+ "name" => "banana",
+ "variety" => array! {
+ table! {
+ "name" => "plantain",
+ },
+ },
+ },
+ },
+ };
+
+ assert_eq!(toml::Value::Table(actual), expected);
+}
+
+#[test]
+fn test_number() {
+ #![allow(clippy::unusual_byte_groupings)] // Verify the macro with odd formatting
+
+ let actual = toml! {
+ positive = 1
+ negative = -1
+ table = { positive = 1, negative = -1 }
+ array = [ 1, -1 ]
+ neg_zero = -0
+ pos_zero = +0
+ float = 1.618
+
+ sf1 = inf
+ sf2 = +inf
+ sf3 = -inf
+ sf7 = +0.0
+ sf8 = -0.0
+
+ hex = 0xa_b_c
+ oct = 0o755
+ bin = 0b11010110
+ };
+
+ let expected = table! {
+ "positive" => 1,
+ "negative" => -1,
+ "table" => table! {
+ "positive" => 1,
+ "negative" => -1,
+ },
+ "array" => array! {
+ 1,
+ -1,
+ },
+ "neg_zero" => -0,
+ "pos_zero" => 0,
+ "float" => 1.618,
+ "sf1" => f64::INFINITY,
+ "sf2" => f64::INFINITY,
+ "sf3" => f64::NEG_INFINITY,
+ "sf7" => 0.0,
+ "sf8" => -0.0,
+ "hex" => 2748,
+ "oct" => 493,
+ "bin" => 214,
+ };
+
+ assert_eq!(toml::Value::Table(actual), expected);
+}
+
+#[test]
+fn test_nan() {
+ let actual = toml! {
+ sf4 = nan
+ sf5 = +nan
+ sf6 = -nan
+ };
+ assert!(actual["sf4"].as_float().unwrap().is_nan());
+ assert!(actual["sf5"].as_float().unwrap().is_nan());
+ assert!(actual["sf6"].as_float().unwrap().is_nan());
+}
+
+#[test]
+fn test_datetime() {
+ let actual = toml! {
+ // Copied from the TOML spec.
+ odt1 = 1979-05-27T07:32:00Z
+ odt2 = 1979-05-27T00:32:00-07:00
+ odt3 = 1979-05-27T00:32:00.999999-07:00
+ odt4 = 1979-05-27 07:32:00Z
+ ldt1 = 1979-05-27T07:32:00
+ ldt2 = 1979-05-27T00:32:00.999999
+ ld1 = 1979-05-27
+ lt1 = 07:32:00
+ lt2 = 00:32:00.999999
+
+ table = {
+ odt1 = 1979-05-27T07:32:00Z,
+ odt2 = 1979-05-27T00:32:00-07:00,
+ odt3 = 1979-05-27T00:32:00.999999-07:00,
+ odt4 = 1979-05-27 07:32:00Z,
+ ldt1 = 1979-05-27T07:32:00,
+ ldt2 = 1979-05-27T00:32:00.999999,
+ ld1 = 1979-05-27,
+ lt1 = 07:32:00,
+ lt2 = 00:32:00.999999,
+ }
+
+ array = [
+ 1979-05-27T07:32:00Z,
+ 1979-05-27T00:32:00-07:00,
+ 1979-05-27T00:32:00.999999-07:00,
+ 1979-05-27 07:32:00Z,
+ 1979-05-27T07:32:00,
+ 1979-05-27T00:32:00.999999,
+ 1979-05-27,
+ 07:32:00,
+ 00:32:00.999999,
+ ]
+ };
+
+ let expected = table! {
+ "odt1" => datetime!("1979-05-27T07:32:00Z"),
+ "odt2" => datetime!("1979-05-27T00:32:00-07:00"),
+ "odt3" => datetime!("1979-05-27T00:32:00.999999-07:00"),
+ "odt4" => datetime!("1979-05-27 07:32:00Z"),
+ "ldt1" => datetime!("1979-05-27T07:32:00"),
+ "ldt2" => datetime!("1979-05-27T00:32:00.999999"),
+ "ld1" => datetime!("1979-05-27"),
+ "lt1" => datetime!("07:32:00"),
+ "lt2" => datetime!("00:32:00.999999"),
+
+ "table" => table! {
+ "odt1" => datetime!("1979-05-27T07:32:00Z"),
+ "odt2" => datetime!("1979-05-27T00:32:00-07:00"),
+ "odt3" => datetime!("1979-05-27T00:32:00.999999-07:00"),
+ "odt4" => datetime!("1979-05-27 07:32:00Z"),
+ "ldt1" => datetime!("1979-05-27T07:32:00"),
+ "ldt2" => datetime!("1979-05-27T00:32:00.999999"),
+ "ld1" => datetime!("1979-05-27"),
+ "lt1" => datetime!("07:32:00"),
+ "lt2" => datetime!("00:32:00.999999"),
+ },
+
+ "array" => array! {
+ datetime!("1979-05-27T07:32:00Z"),
+ datetime!("1979-05-27T00:32:00-07:00"),
+ datetime!("1979-05-27T00:32:00.999999-07:00"),
+ datetime!("1979-05-27 07:32:00Z"),
+ datetime!("1979-05-27T07:32:00"),
+ datetime!("1979-05-27T00:32:00.999999"),
+ datetime!("1979-05-27"),
+ datetime!("07:32:00"),
+ datetime!("00:32:00.999999"),
+ },
+ };
+
+ assert_eq!(toml::Value::Table(actual), expected);
+}
+
+// This test requires rustc >= 1.20.
+#[test]
+fn test_quoted_key() {
+ let actual = toml! {
+ "quoted" = true
+ table = { "quoted" = true }
+
+ [target."cfg(windows)".dependencies]
+ winapi = "0.2.8"
+ };
+
+ let expected = table! {
+ "quoted" => true,
+ "table" => table! {
+ "quoted" => true,
+ },
+ "target" => table! {
+ "cfg(windows)" => table! {
+ "dependencies" => table! {
+ "winapi" => "0.2.8",
+ },
+ },
+ },
+ };
+
+ assert_eq!(toml::Value::Table(actual), expected);
+}
+
+#[test]
+fn test_empty() {
+ let actual = toml! {
+ empty_inline_table = {}
+ empty_inline_array = []
+
+ [empty_table]
+
+ [[empty_array]]
+ };
+
+ let expected = table! {
+ "empty_inline_table" => table! {},
+ "empty_inline_array" => array! {},
+ "empty_table" => table! {},
+ "empty_array" => array! {
+ table! {},
+ },
+ };
+
+ assert_eq!(toml::Value::Table(actual), expected);
+}
+
+#[test]
+fn test_dotted_keys() {
+ let actual = toml! {
+ a.b = 123
+ a.c = 1979-05-27T07:32:00Z
+ [table]
+ a.b.c = 1
+ a . b . d = 2
+ in = { type.name = "cat", type.color = "blue" }
+ };
+
+ let expected = table! {
+ "a" => table! {
+ "b" => 123,
+ "c" => datetime!("1979-05-27T07:32:00Z"),
+ },
+ "table" => table! {
+ "a" => table! {
+ "b" => table! {
+ "c" => 1,
+ "d" => 2,
+ },
+ },
+ "in" => table! {
+ "type" => table! {
+ "name" => "cat",
+ "color" => "blue",
+ },
+ },
+ },
+ };
+
+ assert_eq!(toml::Value::Table(actual), expected);
+}
diff --git a/vendor/toml-0.7.5/tests/testsuite/main.rs b/vendor/toml-0.7.5/tests/testsuite/main.rs
new file mode 100644
index 000000000..14737878f
--- /dev/null
+++ b/vendor/toml-0.7.5/tests/testsuite/main.rs
@@ -0,0 +1,15 @@
+#![recursion_limit = "256"]
+#![cfg(all(feature = "parse", feature = "display"))]
+
+mod de_errors;
+mod display;
+mod display_tricky;
+mod enum_external_deserialize;
+mod float;
+mod formatting;
+mod macros;
+mod pretty;
+mod serde;
+mod spanned;
+mod spanned_impls;
+mod tables_last;
diff --git a/vendor/toml-0.7.5/tests/testsuite/pretty.rs b/vendor/toml-0.7.5/tests/testsuite/pretty.rs
new file mode 100644
index 000000000..3ae772b4f
--- /dev/null
+++ b/vendor/toml-0.7.5/tests/testsuite/pretty.rs
@@ -0,0 +1,184 @@
+use serde::ser::Serialize;
+use snapbox::assert_eq;
+
+const NO_PRETTY: &str = "\
+[example]
+array = [\"item 1\", \"item 2\"]
+empty = []
+oneline = \"this has no newlines.\"
+text = '''
+
+this is the first line\\nthis is the second line
+'''
+";
+
+#[test]
+fn no_pretty() {
+ let toml = NO_PRETTY;
+ let value: toml::Value = toml::from_str(toml).unwrap();
+ let mut result = String::with_capacity(128);
+ value.serialize(toml::Serializer::new(&mut result)).unwrap();
+ assert_eq(toml, &result);
+}
+
+const PRETTY_STD: &str = "\
+[example]
+array = [
+ \"item 1\",
+ \"item 2\",
+]
+empty = []
+one = [\"one\"]
+oneline = \"this has no newlines.\"
+text = \"\"\"
+this is the first line
+this is the second line
+\"\"\"
+";
+
+#[test]
+fn pretty_std() {
+ let toml = PRETTY_STD;
+ let value: toml::Value = toml::from_str(toml).unwrap();
+ let mut result = String::with_capacity(128);
+ value
+ .serialize(toml::Serializer::pretty(&mut result))
+ .unwrap();
+ assert_eq(toml, &result);
+}
+
+const PRETTY_TRICKY: &str = r##"[example]
+f = "\f"
+glass = """
+Nothing too unusual, except that I can eat glass in:
+- Greek: ΜποÏÏŽ να φάω σπασμένα γυαλιά χωÏίς να πάθω τίποτα.
+- Polish: Mogę jeść szkło, i mi nie szkodzi.
+- Hindi: मैं काà¤à¤š खा सकता हूà¤, मà¥à¤à¥‡ उस से कोई पीडा नहीं होती.
+- Japanese: ç§ã¯ã‚¬ãƒ©ã‚¹ã‚’食ã¹ã‚‰ã‚Œã¾ã™ã€‚ãã‚Œã¯ç§ã‚’å‚·ã¤ã‘ã¾ã›ã‚“。
+"""
+r = "\r"
+r_newline = """
+\r
+"""
+single = "this is a single line but has '' cuz it's tricky"
+single_tricky = "single line with ''' in it"
+tabs = """
+this is pretty standard
+\texcept for some \ttabs right here
+"""
+text = """
+this is the first line.
+This has a ''' in it and \"\"\" cuz it's tricky yo
+Also ' and \" because why not
+this is the fourth line
+"""
+"##;
+
+#[test]
+fn pretty_tricky() {
+ let toml = PRETTY_TRICKY;
+ let value: toml::Value = toml::from_str(toml).unwrap();
+ let mut result = String::with_capacity(128);
+ value
+ .serialize(toml::Serializer::pretty(&mut result))
+ .unwrap();
+ assert_eq(toml, &result);
+}
+
+const PRETTY_TABLE_ARRAY: &str = r##"[[array]]
+key = "foo"
+
+[[array]]
+key = "bar"
+
+[abc]
+doc = "this is a table"
+
+[example]
+single = "this is a single line string"
+"##;
+
+#[test]
+fn pretty_table_array() {
+ let toml = PRETTY_TABLE_ARRAY;
+ let value: toml::Value = toml::from_str(toml).unwrap();
+ let mut result = String::with_capacity(128);
+ value
+ .serialize(toml::Serializer::pretty(&mut result))
+ .unwrap();
+ assert_eq(toml, &result);
+}
+
+const TABLE_ARRAY: &str = r##"[[array]]
+key = "foo"
+
+[[array]]
+key = "bar"
+
+[abc]
+doc = "this is a table"
+
+[example]
+single = "this is a single line string"
+"##;
+
+#[test]
+fn table_array() {
+ let toml = TABLE_ARRAY;
+ let value: toml::Value = toml::from_str(toml).unwrap();
+ let mut result = String::with_capacity(128);
+ value.serialize(toml::Serializer::new(&mut result)).unwrap();
+ assert_eq(toml, &result);
+}
+
+const PRETTY_EMPTY_TABLE: &str = r#"[example]
+"#;
+
+#[test]
+fn pretty_empty_table() {
+ let toml = PRETTY_EMPTY_TABLE;
+ let value: toml::Value = toml::from_str(toml).unwrap();
+ let mut result = String::with_capacity(128);
+ value.serialize(toml::Serializer::new(&mut result)).unwrap();
+ assert_eq(toml, &result);
+}
+
+#[test]
+fn error_includes_key() {
+ #[derive(Debug, serde::Serialize, serde::Deserialize)]
+ struct Package {
+ name: String,
+ version: String,
+ authors: Vec<String>,
+ profile: Profile,
+ }
+
+ #[derive(Debug, serde::Serialize, serde::Deserialize)]
+ struct Profile {
+ dev: Dev,
+ }
+
+ #[derive(Debug, serde::Serialize, serde::Deserialize)]
+ struct Dev {
+ debug: U32OrBool,
+ }
+
+ #[derive(Clone, Debug, serde::Deserialize, serde::Serialize, Eq, PartialEq)]
+ #[serde(untagged, expecting = "expected a boolean or an integer")]
+ pub enum U32OrBool {
+ U32(u32),
+ Bool(bool),
+ }
+
+ let raw = r#"name = "foo"
+version = "0.0.0"
+authors = []
+
+[profile.dev]
+debug = true
+"#;
+
+ let pkg: Package = toml::from_str(raw).unwrap();
+ let pretty = toml::to_string_pretty(&pkg).unwrap();
+ assert_eq(raw, pretty);
+}
diff --git a/vendor/toml-0.7.5/tests/testsuite/serde.rs b/vendor/toml-0.7.5/tests/testsuite/serde.rs
new file mode 100644
index 000000000..6e927f733
--- /dev/null
+++ b/vendor/toml-0.7.5/tests/testsuite/serde.rs
@@ -0,0 +1,1096 @@
+use serde::Deserialize;
+use serde::Deserializer;
+use serde::Serialize;
+use std::collections::BTreeMap;
+
+use toml::map::Map;
+use toml::Table;
+use toml::Value;
+
+macro_rules! t {
+ ($e:expr) => {
+ match $e {
+ Ok(t) => t,
+ Err(e) => panic!("{} failed with {}", stringify!($e), e),
+ }
+ };
+}
+
+macro_rules! equivalent {
+ ($literal:expr, $toml:expr,) => {{
+ let toml = $toml;
+ let literal = $literal;
+
+ // In/out of Value is equivalent
+ println!("try_from");
+ assert_eq!(t!(Table::try_from(literal.clone())), toml);
+ println!("try_into");
+ assert_eq!(literal, t!(toml.clone().try_into()));
+
+ // Through a string equivalent
+ println!("to_string");
+ snapbox::assert_eq(t!(toml::to_string(&toml)), t!(toml::to_string(&literal)));
+ println!("literal, from_str(toml)");
+ assert_eq!(literal, t!(toml::from_str(&t!(toml::to_string(&toml)))));
+ println!("toml, from_str(toml)");
+ assert_eq!(toml, t!(toml::from_str(&t!(toml::to_string(&toml)))));
+ }};
+}
+
+macro_rules! error {
+ ($ty:ty, $toml:expr, $msg_parse:expr, $msg_decode:expr) => {{
+ println!("attempting parsing");
+ match toml::from_str::<$ty>(&$toml.to_string()) {
+ Ok(_) => panic!("successful"),
+ Err(e) => snapbox::assert_eq($msg_parse, e.to_string()),
+ }
+
+ println!("attempting toml decoding");
+ match $toml.try_into::<$ty>() {
+ Ok(_) => panic!("successful"),
+ Err(e) => snapbox::assert_eq($msg_decode, e.to_string()),
+ }
+ }};
+}
+
+macro_rules! map( ($($k:ident: $v:expr),*) => ({
+ let mut _m = Map::new();
+ $(_m.insert(stringify!($k).to_string(), t!(Value::try_from($v)));)*
+ _m
+}) );
+
+#[test]
+fn smoke() {
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Foo {
+ a: isize,
+ }
+
+ equivalent!(Foo { a: 2 }, map! { a: Value::Integer(2) },);
+}
+
+#[test]
+fn smoke_hyphen() {
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Foo {
+ a_b: isize,
+ }
+
+ equivalent! {
+ Foo { a_b: 2 },
+ map! { a_b: Value::Integer(2)},
+ }
+
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Foo2 {
+ #[serde(rename = "a-b")]
+ a_b: isize,
+ }
+
+ let mut m = Map::new();
+ m.insert("a-b".to_string(), Value::Integer(2));
+ equivalent! {
+ Foo2 { a_b: 2 },
+ m,
+ }
+}
+
+#[test]
+fn nested() {
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Foo {
+ a: isize,
+ b: Bar,
+ }
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Bar {
+ a: String,
+ }
+
+ equivalent! {
+ Foo { a: 2, b: Bar { a: "test".to_string() } },
+ map! {
+ a: Value::Integer(2),
+ b: map! {
+ a: Value::String("test".to_string())
+ }
+ },
+ }
+}
+
+#[test]
+fn application_decode_error() {
+ #[derive(PartialEq, Debug)]
+ struct Range10(usize);
+ impl<'de> serde::Deserialize<'de> for Range10 {
+ fn deserialize<D: Deserializer<'de>>(d: D) -> Result<Range10, D::Error> {
+ let x: usize = serde::Deserialize::deserialize(d)?;
+ if x > 10 {
+ Err(serde::de::Error::custom("more than 10"))
+ } else {
+ Ok(Range10(x))
+ }
+ }
+ }
+ let d_good = Value::Integer(5);
+ let d_bad1 = Value::String("not an isize".to_string());
+ let d_bad2 = Value::Integer(11);
+
+ assert_eq!(Range10(5), d_good.try_into().unwrap());
+
+ let err1: Result<Range10, _> = d_bad1.try_into();
+ assert!(err1.is_err());
+ let err2: Result<Range10, _> = d_bad2.try_into();
+ assert!(err2.is_err());
+}
+
+#[test]
+fn array() {
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Foo {
+ a: Vec<isize>,
+ }
+
+ equivalent! {
+ Foo { a: vec![1, 2, 3, 4] },
+ map! {
+ a: Value::Array(vec![
+ Value::Integer(1),
+ Value::Integer(2),
+ Value::Integer(3),
+ Value::Integer(4)
+ ])
+ },
+ };
+}
+
+#[test]
+fn inner_structs_with_options() {
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Foo {
+ a: Option<Box<Foo>>,
+ b: Bar,
+ }
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Bar {
+ a: String,
+ b: f64,
+ }
+
+ equivalent! {
+ Foo {
+ a: Some(Box::new(Foo {
+ a: None,
+ b: Bar { a: "foo".to_string(), b: 4.5 },
+ })),
+ b: Bar { a: "bar".to_string(), b: 1.0 },
+ },
+ map! {
+ a: map! {
+ b: map! {
+ a: Value::String("foo".to_string()),
+ b: Value::Float(4.5)
+ }
+ },
+ b: map! {
+ a: Value::String("bar".to_string()),
+ b: Value::Float(1.0)
+ }
+ },
+ }
+}
+
+#[test]
+#[cfg(feature = "preserve_order")]
+fn hashmap() {
+ use std::collections::HashSet;
+
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Foo {
+ set: HashSet<char>,
+ map: BTreeMap<String, isize>,
+ }
+
+ equivalent! {
+ Foo {
+ set: {
+ let mut s = HashSet::new();
+ s.insert('a');
+ s
+ },
+ map: {
+ let mut m = BTreeMap::new();
+ m.insert("bar".to_string(), 4);
+ m.insert("foo".to_string(), 10);
+ m
+ }
+ },
+ map! {
+ set: Value::Array(vec![Value::String("a".to_string())]),
+ map: map! {
+ bar: Value::Integer(4),
+ foo: Value::Integer(10)
+ }
+ },
+ }
+}
+
+#[test]
+fn table_array() {
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Foo {
+ a: Vec<Bar>,
+ }
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Bar {
+ a: isize,
+ }
+
+ equivalent! {
+ Foo { a: vec![Bar { a: 1 }, Bar { a: 2 }] },
+ map! {
+ a: Value::Array(vec![
+ Value::Table(map!{ a: Value::Integer(1) }),
+ Value::Table(map!{ a: Value::Integer(2) }),
+ ])
+ },
+ }
+}
+
+#[test]
+fn type_errors() {
+ #[derive(Deserialize)]
+ #[allow(dead_code)]
+ struct Foo {
+ bar: isize,
+ }
+
+ error! {
+ Foo,
+ map! {
+ bar: Value::String("a".to_string())
+ },
+ r#"TOML parse error at line 1, column 7
+ |
+1 | bar = "a"
+ | ^^^
+invalid type: string "a", expected isize
+"#,
+ "invalid type: string \"a\", expected isize\nin `bar`\n"
+ }
+
+ #[derive(Deserialize)]
+ #[allow(dead_code)]
+ struct Bar {
+ foo: Foo,
+ }
+
+ error! {
+ Bar,
+ map! {
+ foo: map! {
+ bar: Value::String("a".to_string())
+ }
+ },
+ r#"TOML parse error at line 2, column 7
+ |
+2 | bar = "a"
+ | ^^^
+invalid type: string "a", expected isize
+"#,
+ "invalid type: string \"a\", expected isize\nin `foo.bar`\n"
+ }
+}
+
+#[test]
+fn missing_errors() {
+ #[derive(Serialize, Deserialize, PartialEq, Debug)]
+ struct Foo {
+ bar: isize,
+ }
+
+ error! {
+ Foo,
+ map! { },
+ r#"TOML parse error at line 1, column 1
+ |
+1 |
+ | ^
+missing field `bar`
+"#,
+ "missing field `bar`\n"
+ }
+}
+
+#[test]
+fn parse_enum() {
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Foo {
+ a: E,
+ }
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ #[serde(untagged)]
+ enum E {
+ Bar(isize),
+ Baz(String),
+ Last(Foo2),
+ }
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Foo2 {
+ test: String,
+ }
+
+ equivalent! {
+ Foo { a: E::Bar(10) },
+ map! { a: Value::Integer(10) },
+ }
+
+ equivalent! {
+ Foo { a: E::Baz("foo".to_string()) },
+ map! { a: Value::String("foo".to_string()) },
+ }
+
+ equivalent! {
+ Foo { a: E::Last(Foo2 { test: "test".to_string() }) },
+ map! { a: map! { test: Value::String("test".to_string()) } },
+ }
+}
+
+#[test]
+fn parse_enum_string() {
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Foo {
+ a: Sort,
+ }
+
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ #[serde(rename_all = "lowercase")]
+ enum Sort {
+ Asc,
+ Desc,
+ }
+
+ equivalent! {
+ Foo { a: Sort::Desc },
+ map! { a: Value::String("desc".to_string()) },
+ }
+}
+
+#[test]
+#[cfg(feature = "preserve_order")]
+fn map_key_unit_variants() {
+ #[derive(Serialize, Deserialize, PartialEq, Eq, Debug, Clone, PartialOrd, Ord)]
+ enum Sort {
+ #[serde(rename = "ascending")]
+ Asc,
+ Desc,
+ }
+
+ let mut map = BTreeMap::new();
+ map.insert(Sort::Asc, 1);
+ map.insert(Sort::Desc, 2);
+
+ equivalent! {
+ map,
+ map! { ascending: Value::Integer(1), Desc: Value::Integer(2) },
+ }
+}
+
+// #[test]
+// fn unused_fields() {
+// #[derive(Serialize, Deserialize, PartialEq, Debug)]
+// struct Foo { a: isize }
+//
+// let v = Foo { a: 2 };
+// let mut d = Decoder::new(Table(map! {
+// a, Integer(2),
+// b, Integer(5)
+// }));
+// assert_eq!(v, t!(Deserialize::deserialize(&mut d)));
+//
+// assert_eq!(d.toml, Some(Table(map! {
+// b, Integer(5)
+// })));
+// }
+//
+// #[test]
+// fn unused_fields2() {
+// #[derive(Serialize, Deserialize, PartialEq, Debug)]
+// struct Foo { a: Bar }
+// #[derive(Serialize, Deserialize, PartialEq, Debug)]
+// struct Bar { a: isize }
+//
+// let v = Foo { a: Bar { a: 2 } };
+// let mut d = Decoder::new(Table(map! {
+// a, Table(map! {
+// a, Integer(2),
+// b, Integer(5)
+// })
+// }));
+// assert_eq!(v, t!(Deserialize::deserialize(&mut d)));
+//
+// assert_eq!(d.toml, Some(Table(map! {
+// a, Table(map! {
+// b, Integer(5)
+// })
+// })));
+// }
+//
+// #[test]
+// fn unused_fields3() {
+// #[derive(Serialize, Deserialize, PartialEq, Debug)]
+// struct Foo { a: Bar }
+// #[derive(Serialize, Deserialize, PartialEq, Debug)]
+// struct Bar { a: isize }
+//
+// let v = Foo { a: Bar { a: 2 } };
+// let mut d = Decoder::new(Table(map! {
+// a, Table(map! {
+// a, Integer(2)
+// })
+// }));
+// assert_eq!(v, t!(Deserialize::deserialize(&mut d)));
+//
+// assert_eq!(d.toml, None);
+// }
+//
+// #[test]
+// fn unused_fields4() {
+// #[derive(Serialize, Deserialize, PartialEq, Debug)]
+// struct Foo { a: BTreeMap<String, String> }
+//
+// let v = Foo { a: map! { a, "foo".to_string() } };
+// let mut d = Decoder::new(Table(map! {
+// a, Table(map! {
+// a, Value::String("foo".to_string())
+// })
+// }));
+// assert_eq!(v, t!(Deserialize::deserialize(&mut d)));
+//
+// assert_eq!(d.toml, None);
+// }
+//
+// #[test]
+// fn unused_fields5() {
+// #[derive(Serialize, Deserialize, PartialEq, Debug)]
+// struct Foo { a: Vec<String> }
+//
+// let v = Foo { a: vec!["a".to_string()] };
+// let mut d = Decoder::new(Table(map! {
+// a, Array(vec![Value::String("a".to_string())])
+// }));
+// assert_eq!(v, t!(Deserialize::deserialize(&mut d)));
+//
+// assert_eq!(d.toml, None);
+// }
+//
+// #[test]
+// fn unused_fields6() {
+// #[derive(Serialize, Deserialize, PartialEq, Debug)]
+// struct Foo { a: Option<Vec<String>> }
+//
+// let v = Foo { a: Some(vec![]) };
+// let mut d = Decoder::new(Table(map! {
+// a, Array(vec![])
+// }));
+// assert_eq!(v, t!(Deserialize::deserialize(&mut d)));
+//
+// assert_eq!(d.toml, None);
+// }
+//
+// #[test]
+// fn unused_fields7() {
+// #[derive(Serialize, Deserialize, PartialEq, Debug)]
+// struct Foo { a: Vec<Bar> }
+// #[derive(Serialize, Deserialize, PartialEq, Debug)]
+// struct Bar { a: isize }
+//
+// let v = Foo { a: vec![Bar { a: 1 }] };
+// let mut d = Decoder::new(Table(map! {
+// a, Array(vec![Table(map! {
+// a, Integer(1),
+// b, Integer(2)
+// })])
+// }));
+// assert_eq!(v, t!(Deserialize::deserialize(&mut d)));
+//
+// assert_eq!(d.toml, Some(Table(map! {
+// a, Array(vec![Table(map! {
+// b, Integer(2)
+// })])
+// })));
+// }
+
+#[test]
+fn empty_arrays() {
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Foo {
+ a: Vec<Bar>,
+ }
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Bar;
+
+ equivalent! {
+ Foo { a: vec![] },
+ map! {a: Value::Array(Vec::new())},
+ }
+}
+
+#[test]
+fn empty_arrays2() {
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Foo {
+ a: Option<Vec<Bar>>,
+ }
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Bar;
+
+ equivalent! {
+ Foo { a: None },
+ map! {},
+ }
+
+ equivalent! {
+ Foo { a: Some(vec![]) },
+ map! { a: Value::Array(vec![]) },
+ }
+}
+
+#[test]
+fn extra_keys() {
+ #[derive(Serialize, Deserialize)]
+ struct Foo {
+ a: isize,
+ }
+
+ let toml = map! { a: Value::Integer(2), b: Value::Integer(2) };
+ assert!(toml.clone().try_into::<Foo>().is_ok());
+ assert!(toml::from_str::<Foo>(&toml.to_string()).is_ok());
+}
+
+#[test]
+fn newtypes() {
+ #[derive(Deserialize, Serialize, PartialEq, Debug, Clone)]
+ struct A {
+ b: B,
+ }
+
+ #[derive(Deserialize, Serialize, PartialEq, Debug, Clone)]
+ struct B(u32);
+
+ equivalent! {
+ A { b: B(2) },
+ map! { b: Value::Integer(2) },
+ }
+}
+
+#[test]
+fn newtypes2() {
+ #[derive(Deserialize, Serialize, PartialEq, Debug, Clone)]
+ struct A {
+ b: B,
+ }
+
+ #[derive(Deserialize, Serialize, PartialEq, Debug, Clone)]
+ struct B(Option<C>);
+
+ #[derive(Deserialize, Serialize, PartialEq, Debug, Clone)]
+ struct C {
+ x: u32,
+ y: u32,
+ z: u32,
+ }
+
+ equivalent! {
+ A { b: B(Some(C { x: 0, y: 1, z: 2 })) },
+ map! {
+ b: map! {
+ x: Value::Integer(0),
+ y: Value::Integer(1),
+ z: Value::Integer(2)
+ }
+ },
+ }
+}
+
+#[test]
+fn newtype_variant() {
+ #[derive(Copy, Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
+ struct Struct {
+ field: Enum,
+ }
+
+ #[derive(Copy, Clone, Debug, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
+ enum Enum {
+ Variant(u8),
+ }
+
+ equivalent! {
+ Struct { field: Enum::Variant(21) },
+ map! {
+ field: map! {
+ Variant: Value::Integer(21)
+ }
+ },
+ }
+}
+
+#[derive(Debug, Default, PartialEq, Serialize, Deserialize)]
+struct CanBeEmpty {
+ a: Option<String>,
+ b: Option<String>,
+}
+
+#[test]
+fn table_structs_empty() {
+ let text = "[bar]\n\n[baz]\n\n[bazv]\na = \"foo\"\n\n[foo]\n";
+ let value: BTreeMap<String, CanBeEmpty> = toml::from_str(text).unwrap();
+ let mut expected: BTreeMap<String, CanBeEmpty> = BTreeMap::new();
+ expected.insert("bar".to_string(), CanBeEmpty::default());
+ expected.insert("baz".to_string(), CanBeEmpty::default());
+ expected.insert(
+ "bazv".to_string(),
+ CanBeEmpty {
+ a: Some("foo".to_string()),
+ b: None,
+ },
+ );
+ expected.insert("foo".to_string(), CanBeEmpty::default());
+ assert_eq!(value, expected);
+ snapbox::assert_eq(text, toml::to_string(&value).unwrap());
+}
+
+#[test]
+fn fixed_size_array() {
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Entity {
+ pos: [i32; 2],
+ }
+
+ equivalent! {
+ Entity { pos: [1, 2] },
+ map! {
+ pos: Value::Array(vec![
+ Value::Integer(1),
+ Value::Integer(2),
+ ])
+ },
+ }
+}
+
+#[test]
+fn homogeneous_tuple() {
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Collection {
+ elems: (i64, i64, i64),
+ }
+
+ equivalent! {
+ Collection { elems: (0, 1, 2) },
+ map! {
+ elems: Value::Array(vec![
+ Value::Integer(0),
+ Value::Integer(1),
+ Value::Integer(2),
+ ])
+ },
+ }
+}
+
+#[test]
+fn homogeneous_tuple_struct() {
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Object(Vec<String>, Vec<String>, Vec<String>);
+
+ equivalent! {
+ map! {
+ obj: Object(vec!["foo".to_string()], vec![], vec!["bar".to_string(), "baz".to_string()])
+ },
+ map! {
+ obj: Value::Array(vec![
+ Value::Array(vec![
+ Value::String("foo".to_string()),
+ ]),
+ Value::Array(vec![]),
+ Value::Array(vec![
+ Value::String("bar".to_string()),
+ Value::String("baz".to_string()),
+ ]),
+ ])
+ },
+ }
+}
+
+#[test]
+fn json_interoperability() {
+ #[derive(Serialize, Deserialize)]
+ struct Foo {
+ any: toml::Value,
+ }
+
+ let _foo: Foo = serde_json::from_str(
+ r#"
+ {"any":1}
+ "#,
+ )
+ .unwrap();
+}
+
+#[test]
+fn error_includes_key() {
+ #[derive(Debug, Serialize, Deserialize)]
+ struct Package {
+ name: String,
+ version: String,
+ authors: Vec<String>,
+ profile: Profile,
+ }
+
+ #[derive(Debug, Serialize, Deserialize)]
+ struct Profile {
+ dev: Dev,
+ }
+
+ #[derive(Debug, Serialize, Deserialize)]
+ struct Dev {
+ debug: U32OrBool,
+ }
+
+ #[derive(Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
+ #[serde(untagged, expecting = "expected a boolean or an integer")]
+ pub enum U32OrBool {
+ U32(u32),
+ Bool(bool),
+ }
+
+ let res: Result<Package, _> = toml::from_str(
+ r#"
+[package]
+name = "foo"
+version = "0.0.0"
+authors = []
+
+[profile.dev]
+debug = 'a'
+"#,
+ );
+ let err = res.unwrap_err();
+ snapbox::assert_eq(
+ r#"TOML parse error at line 8, column 9
+ |
+8 | debug = 'a'
+ | ^^^
+expected a boolean or an integer
+"#,
+ err.to_string(),
+ );
+
+ let res: Result<Package, _> = toml::from_str(
+ r#"
+[package]
+name = "foo"
+version = "0.0.0"
+authors = []
+
+[profile]
+dev = { debug = 'a' }
+"#,
+ );
+ let err = res.unwrap_err();
+ snapbox::assert_eq(
+ r#"TOML parse error at line 8, column 17
+ |
+8 | dev = { debug = 'a' }
+ | ^^^
+expected a boolean or an integer
+"#,
+ err.to_string(),
+ );
+}
+
+#[test]
+fn newline_key_value() {
+ #[derive(Debug, Serialize, Deserialize)]
+ struct Package {
+ name: String,
+ }
+
+ let package = Package {
+ name: "foo".to_owned(),
+ };
+ let raw = toml::to_string_pretty(&package).unwrap();
+ snapbox::assert_eq(
+ r#"name = "foo"
+"#,
+ raw,
+ );
+}
+
+#[test]
+fn newline_table() {
+ #[derive(Debug, Serialize, Deserialize)]
+ struct Manifest {
+ package: Package,
+ }
+
+ #[derive(Debug, Serialize, Deserialize)]
+ struct Package {
+ name: String,
+ }
+
+ let package = Manifest {
+ package: Package {
+ name: "foo".to_owned(),
+ },
+ };
+ let raw = toml::to_string_pretty(&package).unwrap();
+ snapbox::assert_eq(
+ r#"[package]
+name = "foo"
+"#,
+ raw,
+ );
+}
+
+#[test]
+fn newline_dotted_table() {
+ #[derive(Debug, Serialize, Deserialize)]
+ struct Manifest {
+ profile: Profile,
+ }
+
+ #[derive(Debug, Serialize, Deserialize)]
+ struct Profile {
+ dev: Dev,
+ }
+
+ #[derive(Debug, Serialize, Deserialize)]
+ struct Dev {
+ debug: U32OrBool,
+ }
+
+ #[derive(Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
+ #[serde(untagged, expecting = "expected a boolean or an integer")]
+ pub enum U32OrBool {
+ U32(u32),
+ Bool(bool),
+ }
+
+ let package = Manifest {
+ profile: Profile {
+ dev: Dev {
+ debug: U32OrBool::Bool(true),
+ },
+ },
+ };
+ let raw = toml::to_string_pretty(&package).unwrap();
+ snapbox::assert_eq(
+ r#"[profile.dev]
+debug = true
+"#,
+ raw,
+ );
+}
+
+#[test]
+fn newline_mixed_tables() {
+ #[derive(Debug, Serialize, Deserialize)]
+ struct Manifest {
+ cargo_features: Vec<String>,
+ package: Package,
+ profile: Profile,
+ }
+
+ #[derive(Debug, Serialize, Deserialize)]
+ struct Package {
+ name: String,
+ version: String,
+ authors: Vec<String>,
+ }
+
+ #[derive(Debug, Serialize, Deserialize)]
+ struct Profile {
+ dev: Dev,
+ }
+
+ #[derive(Debug, Serialize, Deserialize)]
+ struct Dev {
+ debug: U32OrBool,
+ }
+
+ #[derive(Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
+ #[serde(untagged, expecting = "expected a boolean or an integer")]
+ pub enum U32OrBool {
+ U32(u32),
+ Bool(bool),
+ }
+
+ let package = Manifest {
+ cargo_features: vec![],
+ package: Package {
+ name: "foo".to_owned(),
+ version: "1.0.0".to_owned(),
+ authors: vec![],
+ },
+ profile: Profile {
+ dev: Dev {
+ debug: U32OrBool::Bool(true),
+ },
+ },
+ };
+ let raw = toml::to_string_pretty(&package).unwrap();
+ snapbox::assert_eq(
+ r#"cargo_features = []
+
+[package]
+name = "foo"
+version = "1.0.0"
+authors = []
+
+[profile.dev]
+debug = true
+"#,
+ raw,
+ );
+}
+
+#[test]
+fn integer_min() {
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Foo {
+ a_b: i64,
+ }
+
+ equivalent! {
+ Foo { a_b: i64::MIN },
+ map! { a_b: Value::Integer(i64::MIN) },
+ }
+}
+
+#[test]
+fn integer_too_big() {
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Foo {
+ a_b: u64,
+ }
+
+ let native = Foo { a_b: u64::MAX };
+ let err = Table::try_from(native.clone()).unwrap_err();
+ snapbox::assert_eq("u64 value was too large", err.to_string());
+ let err = toml::to_string(&native).unwrap_err();
+ snapbox::assert_eq("out-of-range value for u64 type", err.to_string());
+}
+
+#[test]
+fn integer_max() {
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Foo {
+ a_b: i64,
+ }
+
+ equivalent! {
+ Foo { a_b: i64::MAX },
+ map! { a_b: Value::Integer(i64::MAX) },
+ }
+}
+
+#[test]
+fn float_min() {
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Foo {
+ a_b: f64,
+ }
+
+ equivalent! {
+ Foo { a_b: f64::MIN },
+ map! { a_b: Value::Float(f64::MIN) },
+ }
+}
+
+#[test]
+fn float_max() {
+ #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
+ struct Foo {
+ a_b: f64,
+ }
+
+ equivalent! {
+ Foo { a_b: f64::MAX },
+ map! { a_b: Value::Float(f64::MAX) },
+ }
+}
+
+#[test]
+fn unsupported_root_type() {
+ let native = "value";
+ let err = toml::to_string_pretty(&native).unwrap_err();
+ snapbox::assert_eq("unsupported rust type", err.to_string());
+}
+
+#[test]
+fn unsupported_nested_type() {
+ #[derive(Debug, Serialize, Deserialize)]
+ struct Foo {
+ unused: (),
+ }
+
+ let native = Foo { unused: () };
+ let err = toml::to_string_pretty(&native).unwrap_err();
+ snapbox::assert_eq("unsupported unit type", err.to_string());
+}
+
+#[test]
+fn table_type_enum_regression_issue_388() {
+ #[derive(Deserialize)]
+ struct DataFile {
+ #[allow(dead_code)]
+ data: Compare,
+ }
+
+ #[derive(Deserialize)]
+ enum Compare {
+ Gt(u32),
+ }
+
+ let dotted_table = r#"
+ data.Gt = 5
+ "#;
+ assert!(toml::from_str::<DataFile>(dotted_table).is_ok());
+
+ let inline_table = r#"
+ data = { Gt = 5 }
+ "#;
+ assert!(toml::from_str::<DataFile>(inline_table).is_ok());
+}
+
+#[test]
+fn serialize_datetime_issue_333() {
+ use toml::{to_string, value::Date, value::Datetime};
+
+ #[derive(Serialize)]
+ struct Struct {
+ date: Datetime,
+ }
+
+ let toml = to_string(&Struct {
+ date: Datetime {
+ date: Some(Date {
+ year: 2022,
+ month: 1,
+ day: 1,
+ }),
+ time: None,
+ offset: None,
+ },
+ })
+ .unwrap();
+ assert_eq!(toml, "date = 2022-01-01\n");
+}
+
+#[test]
+fn datetime_offset_issue_496() {
+ let original = "value = 1911-01-01T10:11:12-00:36\n";
+ let toml = original.parse::<toml::Table>().unwrap();
+ let output = toml.to_string();
+ snapbox::assert_eq(original, output);
+}
diff --git a/vendor/toml-0.7.5/tests/testsuite/spanned.rs b/vendor/toml-0.7.5/tests/testsuite/spanned.rs
new file mode 100644
index 000000000..760c73aab
--- /dev/null
+++ b/vendor/toml-0.7.5/tests/testsuite/spanned.rs
@@ -0,0 +1,261 @@
+#![allow(renamed_and_removed_lints)]
+#![allow(clippy::blacklisted_name)]
+
+use std::collections::HashMap;
+use std::fmt::Debug;
+
+use serde::Deserialize;
+use toml::value::Datetime;
+use toml::Spanned;
+
+/// A set of good datetimes.
+pub fn good_datetimes() -> Vec<&'static str> {
+ vec![
+ "1997-09-09T09:09:09Z",
+ "1997-09-09T09:09:09+09:09",
+ "1997-09-09T09:09:09-09:09",
+ "1997-09-09T09:09:09",
+ "1997-09-09",
+ "09:09:09",
+ "1997-09-09T09:09:09.09Z",
+ "1997-09-09T09:09:09.09+09:09",
+ "1997-09-09T09:09:09.09-09:09",
+ "1997-09-09T09:09:09.09",
+ "09:09:09.09",
+ ]
+}
+
+#[test]
+fn test_spanned_field() {
+ #[derive(Deserialize)]
+ struct Foo<T> {
+ foo: Spanned<T>,
+ }
+
+ #[derive(Deserialize)]
+ struct BareFoo<T> {
+ foo: T,
+ }
+
+ fn good<T>(s: &str, expected: &str, end: Option<usize>)
+ where
+ T: serde::de::DeserializeOwned + Debug + PartialEq,
+ {
+ let foo: Foo<T> = toml::from_str(s).unwrap();
+
+ assert_eq!(6, foo.foo.span().start);
+ if let Some(end) = end {
+ assert_eq!(end, foo.foo.span().end);
+ } else {
+ assert_eq!(s.len(), foo.foo.span().end);
+ }
+ assert_eq!(expected, &s[foo.foo.span()]);
+
+ // Test for Spanned<> at the top level
+ let foo_outer: Spanned<BareFoo<T>> = toml::from_str(s).unwrap();
+
+ assert_eq!(0, foo_outer.span().start);
+ assert_eq!(s.len(), foo_outer.span().end);
+ assert_eq!(foo.foo.into_inner(), foo_outer.into_inner().foo);
+ }
+
+ good::<String>("foo = \"foo\"", "\"foo\"", None);
+ good::<u32>("foo = 42", "42", None);
+ // leading plus
+ good::<u32>("foo = +42", "+42", None);
+ // table
+ good::<HashMap<String, u32>>(
+ "foo = {\"foo\" = 42, \"bar\" = 42}",
+ "{\"foo\" = 42, \"bar\" = 42}",
+ None,
+ );
+ // array
+ good::<Vec<u32>>("foo = [0, 1, 2, 3, 4]", "[0, 1, 2, 3, 4]", None);
+ // datetime
+ good::<String>(
+ "foo = \"1997-09-09T09:09:09Z\"",
+ "\"1997-09-09T09:09:09Z\"",
+ None,
+ );
+
+ for expected in good_datetimes() {
+ let s = format!("foo = {}", expected);
+ good::<Datetime>(&s, expected, None);
+ }
+ // ending at something other than the absolute end
+ good::<u32>("foo = 42\nnoise = true", "42", Some(8));
+}
+
+#[test]
+fn test_inner_spanned_table() {
+ #[derive(Deserialize)]
+ struct Foo {
+ foo: Spanned<HashMap<Spanned<String>, Spanned<String>>>,
+ }
+
+ fn good(s: &str, zero: bool) {
+ let foo: Foo = toml::from_str(s).unwrap();
+
+ if zero {
+ assert_eq!(foo.foo.span().start, 0);
+ assert_eq!(foo.foo.span().end, 73);
+ } else {
+ assert_eq!(foo.foo.span().start, s.find('{').unwrap());
+ assert_eq!(foo.foo.span().end, s.find('}').unwrap() + 1);
+ }
+ for (k, v) in foo.foo.as_ref().iter() {
+ assert_eq!(&s[k.span().start..k.span().end], k.as_ref());
+ assert_eq!(&s[(v.span().start + 1)..(v.span().end - 1)], v.as_ref());
+ }
+ }
+
+ good(
+ "\
+ [foo]
+ a = 'b'
+ bar = 'baz'
+ c = 'd'
+ e = \"f\"
+ ",
+ true,
+ );
+
+ good(
+ "
+ foo = { a = 'b', bar = 'baz', c = 'd', e = \"f\" }",
+ false,
+ );
+}
+
+#[test]
+fn test_outer_spanned_table() {
+ #[derive(Deserialize)]
+ struct Foo {
+ foo: HashMap<Spanned<String>, Spanned<String>>,
+ }
+
+ fn good(s: &str) {
+ let foo: Foo = toml::from_str(s).unwrap();
+
+ for (k, v) in foo.foo.iter() {
+ assert_eq!(&s[k.span().start..k.span().end], k.as_ref());
+ assert_eq!(&s[(v.span().start + 1)..(v.span().end - 1)], v.as_ref());
+ }
+ }
+
+ good(
+ "
+ [foo]
+ a = 'b'
+ bar = 'baz'
+ c = 'd'
+ e = \"f\"
+ ",
+ );
+
+ good(
+ "
+ foo = { a = 'b', bar = 'baz', c = 'd', e = \"f\" }
+ ",
+ );
+}
+
+#[test]
+fn test_spanned_nested() {
+ #[derive(Deserialize)]
+ struct Foo {
+ foo: HashMap<Spanned<String>, HashMap<Spanned<String>, Spanned<String>>>,
+ }
+
+ fn good(s: &str) {
+ let foo: Foo = toml::from_str(s).unwrap();
+
+ for (k, v) in foo.foo.iter() {
+ assert_eq!(&s[k.span().start..k.span().end], k.as_ref());
+ for (n_k, n_v) in v.iter() {
+ assert_eq!(&s[n_k.span().start..n_k.span().end], n_k.as_ref());
+ assert_eq!(
+ &s[(n_v.span().start + 1)..(n_v.span().end - 1)],
+ n_v.as_ref()
+ );
+ }
+ }
+ }
+
+ good(
+ "
+ [foo.a]
+ a = 'b'
+ c = 'd'
+ e = \"f\"
+ [foo.bar]
+ baz = 'true'
+ ",
+ );
+
+ good(
+ "
+ [foo]
+ foo = { a = 'b', bar = 'baz', c = 'd', e = \"f\" }
+ bazz = {}
+ g = { h = 'i' }
+ ",
+ );
+}
+
+#[test]
+fn test_spanned_array() {
+ #[derive(Deserialize)]
+ struct Foo {
+ foo: Vec<Spanned<HashMap<Spanned<String>, Spanned<String>>>>,
+ }
+
+ let toml = "\
+ [[foo]]
+ a = 'b'
+ bar = 'baz'
+ c = 'd'
+ e = \"f\"
+ [[foo]]
+ a = 'c'
+ bar = 'baz'
+ c = 'g'
+ e = \"h\"
+ ";
+ let foo_list: Foo = toml::from_str(toml).unwrap();
+
+ for (foo, expected) in foo_list.foo.iter().zip([0..75, 84..159]) {
+ assert_eq!(foo.span(), expected);
+ for (k, v) in foo.as_ref().iter() {
+ assert_eq!(&toml[k.span().start..k.span().end], k.as_ref());
+ assert_eq!(&toml[(v.span().start + 1)..(v.span().end - 1)], v.as_ref());
+ }
+ }
+}
+
+#[test]
+fn deny_unknown_fields() {
+ #[derive(Debug, serde::Deserialize)]
+ #[serde(deny_unknown_fields)]
+ struct Example {
+ #[allow(dead_code)]
+ real: u32,
+ }
+
+ let error = toml::from_str::<Example>(
+ r#"# my comment
+# bla bla bla
+fake = 1"#,
+ )
+ .unwrap_err();
+ snapbox::assert_eq(
+ "\
+TOML parse error at line 3, column 1
+ |
+3 | fake = 1
+ | ^^^^
+unknown field `fake`, expected `real`
+",
+ error.to_string(),
+ );
+}
diff --git a/vendor/toml-0.7.5/tests/testsuite/spanned_impls.rs b/vendor/toml-0.7.5/tests/testsuite/spanned_impls.rs
new file mode 100644
index 000000000..5e866f92a
--- /dev/null
+++ b/vendor/toml-0.7.5/tests/testsuite/spanned_impls.rs
@@ -0,0 +1,41 @@
+use std::cmp::{Ord, Ordering, PartialOrd};
+
+use serde::Deserialize;
+use toml::{from_str, Spanned};
+
+#[test]
+fn test_spans_impls() {
+ #[derive(Deserialize)]
+ struct Foo {
+ bar: Spanned<bool>,
+ baz: Spanned<String>,
+ }
+ let f: Foo = from_str(
+ "
+ bar = true
+ baz = \"yes\"
+ ",
+ )
+ .unwrap();
+ let g: Foo = from_str(
+ "
+ baz = \"yes\"
+ bar = true
+ ",
+ )
+ .unwrap();
+ assert!(f.bar.span() != g.bar.span());
+ assert!(f.baz.span() != g.baz.span());
+
+ // test that eq still holds
+ assert_eq!(f.bar, g.bar);
+ assert_eq!(f.baz, g.baz);
+
+ // test that Ord returns equal order
+ assert_eq!(f.bar.cmp(&g.bar), Ordering::Equal);
+ assert_eq!(f.baz.cmp(&g.baz), Ordering::Equal);
+
+ // test that PartialOrd returns equal order
+ assert_eq!(f.bar.partial_cmp(&g.bar), Some(Ordering::Equal));
+ assert_eq!(f.baz.partial_cmp(&g.baz), Some(Ordering::Equal));
+}
diff --git a/vendor/toml-0.7.5/tests/testsuite/tables_last.rs b/vendor/toml-0.7.5/tests/testsuite/tables_last.rs
new file mode 100644
index 000000000..b0035579d
--- /dev/null
+++ b/vendor/toml-0.7.5/tests/testsuite/tables_last.rs
@@ -0,0 +1,162 @@
+use std::collections::HashMap;
+
+use serde::Deserialize;
+use serde::Serialize;
+
+#[test]
+fn always_works() {
+ // Ensure this works without the removed "toml::ser::tables_last"
+ #[derive(Serialize)]
+ struct A {
+ vals: HashMap<&'static str, Value>,
+ }
+
+ #[derive(Serialize)]
+ #[serde(untagged)]
+ enum Value {
+ Map(HashMap<&'static str, &'static str>),
+ Int(i32),
+ }
+
+ let mut a = A {
+ vals: HashMap::new(),
+ };
+ a.vals.insert("foo", Value::Int(0));
+
+ let mut sub = HashMap::new();
+ sub.insert("foo", "bar");
+ a.vals.insert("bar", Value::Map(sub));
+
+ toml::to_string(&a).unwrap();
+}
+
+#[test]
+fn vec_of_vec_issue_387() {
+ #[derive(Deserialize, Serialize, Debug)]
+ struct Glyph {
+ components: Vec<Component>,
+ contours: Vec<Contour>,
+ }
+
+ #[derive(Deserialize, Serialize, Debug)]
+ struct Point {
+ x: f64,
+ y: f64,
+ pt_type: String,
+ }
+
+ type Contour = Vec<Point>;
+
+ #[derive(Deserialize, Serialize, Debug)]
+ struct Component {
+ base: String,
+ transform: (f64, f64, f64, f64, f64, f64),
+ }
+
+ let comp1 = Component {
+ base: "b".to_string(),
+ transform: (1.0, 0.0, 0.0, 1.0, 0.0, 0.0),
+ };
+ let comp2 = Component {
+ base: "c".to_string(),
+ transform: (1.0, 0.0, 0.0, 1.0, 0.0, 0.0),
+ };
+ let components = vec![comp1, comp2];
+
+ let contours = vec![
+ vec![
+ Point {
+ x: 3.0,
+ y: 4.0,
+ pt_type: "line".to_string(),
+ },
+ Point {
+ x: 5.0,
+ y: 6.0,
+ pt_type: "line".to_string(),
+ },
+ ],
+ vec![
+ Point {
+ x: 0.0,
+ y: 0.0,
+ pt_type: "move".to_string(),
+ },
+ Point {
+ x: 7.0,
+ y: 9.0,
+ pt_type: "offcurve".to_string(),
+ },
+ Point {
+ x: 8.0,
+ y: 10.0,
+ pt_type: "offcurve".to_string(),
+ },
+ Point {
+ x: 11.0,
+ y: 12.0,
+ pt_type: "curve".to_string(),
+ },
+ ],
+ ];
+ let g1 = Glyph {
+ contours,
+ components,
+ };
+
+ let s = toml::to_string_pretty(&g1).unwrap();
+ let _g2: Glyph = toml::from_str(&s).unwrap();
+}
+
+#[test]
+fn vec_order_issue_356() {
+ #[derive(Serialize, Deserialize)]
+ struct Outer {
+ v1: Vec<Inner>,
+ v2: Vec<Inner>,
+ }
+
+ #[derive(Serialize, Deserialize)]
+ struct Inner {}
+
+ let outer = Outer {
+ v1: vec![Inner {}],
+ v2: vec![],
+ };
+ let s = toml::to_string_pretty(&outer).unwrap();
+ let _o: Outer = toml::from_str(&s).unwrap();
+}
+
+#[test]
+fn values_before_tables_issue_403() {
+ #[derive(Serialize, Deserialize)]
+ struct A {
+ a: String,
+ b: String,
+ }
+
+ #[derive(Serialize, Deserialize)]
+ struct B {
+ a: String,
+ b: Vec<String>,
+ }
+
+ #[derive(Serialize, Deserialize)]
+ struct C {
+ a: A,
+ b: Vec<String>,
+ c: Vec<B>,
+ }
+ toml::to_string(&C {
+ a: A {
+ a: "aa".to_string(),
+ b: "ab".to_string(),
+ },
+ b: vec!["b".to_string()],
+ c: vec![B {
+ a: "cba".to_string(),
+ b: vec!["cbb".to_string()],
+ }],
+ })
+ .unwrap();
+}
diff --git a/vendor/toml/.cargo-checksum.json b/vendor/toml/.cargo-checksum.json
index cc7a62534..967afe2eb 100644
--- a/vendor/toml/.cargo-checksum.json
+++ b/vendor/toml/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"299cfdfc7c8185d998fc55795eeb54532a673c7ea976174a40153c148d7abfac","Cargo.toml":"d80521a676e715a134422efdca2c63f2310bfe287ee9759390610dfefd76491e","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"a915ead738822da2d74b883c7519d8e558299286bb823e26c7fdece901c3267e","examples/decode.rs":"ebb019364720589b634fa47a3fc4c8ca7ae14c9a6df8c89cd086e421d442cd77","examples/enum_external.rs":"4878e249aa095264c7824fc7b6fd30f9b0ec6891b16fff734a0490d906e1abbe","examples/toml2json.rs":"f69cf930e7e16f57288c27a57de5bf8e4f991abb483114a6c226ac5a3bddef44","src/de.rs":"faf32d0e29f8140c1b62f175dffa3ac4ffbf13034b74222a9c26d0477cd2e2a3","src/edit.rs":"52f1959a6e5c177097372ea04439662262960f2eb41c2b9ef0ce9ce77ed43f60","src/fmt.rs":"f263687a2616b3140373a0809e905e6d2ae049fa516ab2a90e014e2c734c2e87","src/lib.rs":"21982e43114486005dd9a1d31b7e5da425b3fea0e724a437d89fe42d674b4696","src/macros.rs":"b017ca382f25a5e333ba32c091dcdc3a6cb7a254c65f4ee6b4ca758801c8d1cd","src/map.rs":"7a1b97ee1a2ab3fa933d24497066191a6760d118e6e4c8ba42cc891e4668c177","src/ser.rs":"f9c91c2f70c42152531143ae231c6130e4ce930c97b378011e5595ea123ff31b","src/table.rs":"60767350b69b8d74c23e5b57c9e58d2e9e1c19c6cf2ad08820b29515ace42ca0","src/value.rs":"0730f1abdac14c52f97e60a8f0d22566fde743ebe1ddec70a8d9e285017cb640","tests/decoder.rs":"16dff5be5a163a08dfaa8d13422a607f1e33ae4540366839a4c9a2af6c98ee0f","tests/decoder_compliance.rs":"73bde51b0d2051ea513688497543f890292d531327fbaeb90c453d3514786199","tests/encoder.rs":"68294978412df2babd5bb85e42dfc9be6366e0c9d3c9eb3a5196082fbeeb0171","tests/encoder_compliance.rs":"2ef9dec88a05d2b274a4cfd2b5b0fa219af8635eacd025ba63bdf69c6095f4a7","tests/testsuite/de_errors.rs":"1bc8521181f9fbe884db3313a8e8a044b4a1cf4b8956530a3cc8be9bcb5468f8","tests/testsuite/display.rs":"164de8f7108ce1055159a19884d23f770bd25cf0ead6b23f6ff4340931c7afc5","tests/testsuite/display_tricky.rs":"9806743d670e5cc46ee0ffda3f4c1f8ac63ee1e702250f07b7cd2098750d25d1","tests/testsuite/enum_external_deserialize.rs":"28b4705d904b58a973ef27c6cdc948f8d404105f98a55efa111cce9e7b4b1a67","tests/testsuite/float.rs":"5bbd383ac4fbcd276cd4500cba41b434fd70b024c8e78ac332eee5cf727368ec","tests/testsuite/formatting.rs":"3b279ab1f24ebeb07537764107c42be9a84731ead1a88596785186777aafd1ee","tests/testsuite/macros.rs":"8c6cee633eaf500a695f308a8f89703b04f19c0bddc379f81bf02dc4573628af","tests/testsuite/main.rs":"4e40c82147ccfc7094f2c4795b51b575c7d231a7da75814a08fd8e0c52d93f8b","tests/testsuite/pretty.rs":"98fb06578339c97b52a8454f48c19adb9860c54585767e8741268cc26782435f","tests/testsuite/serde.rs":"72921f9e9cc985eaf5b65c05bc5181b2ef947f67ba7fa8e6fe4b239db9037274","tests/testsuite/spanned.rs":"b7522afd8101ba5dd539118a43bccefef66fedef41926d9515f67590961ac7e3","tests/testsuite/spanned_impls.rs":"666c65679365451f67234d50bb3198ac52418ad7ef1dae6916faba78f92c9d02","tests/testsuite/tables_last.rs":"42271f9df94b28f36b934686d4a5c6196140a2975733d1344b6415cb9f1b92ed"},"package":"c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542"} \ No newline at end of file
+{"files":{"Cargo.lock":"a11a1bfc59f08a78cac57078ff566b7072a617d79b376b0c503f527bb6ba69c6","Cargo.toml":"d6b0c8142ebb5a03f15bf356caa24d8ab1b36d47edbc8e7350e2d8f37aef11e7","LICENSE-APACHE":"c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08","LICENSE-MIT":"6efb0476a1cc085077ed49357026d8c173bf33017278ef440f222fb9cbcb66e6","README.md":"a915ead738822da2d74b883c7519d8e558299286bb823e26c7fdece901c3267e","examples/decode.rs":"ebb019364720589b634fa47a3fc4c8ca7ae14c9a6df8c89cd086e421d442cd77","examples/enum_external.rs":"4878e249aa095264c7824fc7b6fd30f9b0ec6891b16fff734a0490d906e1abbe","examples/toml2json.rs":"f69cf930e7e16f57288c27a57de5bf8e4f991abb483114a6c226ac5a3bddef44","src/de.rs":"faf32d0e29f8140c1b62f175dffa3ac4ffbf13034b74222a9c26d0477cd2e2a3","src/edit.rs":"52f1959a6e5c177097372ea04439662262960f2eb41c2b9ef0ce9ce77ed43f60","src/fmt.rs":"eb19258f004a403da7fd310b30c8964bdf5867ecd145bf4fcba708af51cb378f","src/lib.rs":"21982e43114486005dd9a1d31b7e5da425b3fea0e724a437d89fe42d674b4696","src/macros.rs":"a2f320170bfc8e59e5dfda129bb953a15d8efc6b622c3894dce87db541ede413","src/map.rs":"7a1b97ee1a2ab3fa933d24497066191a6760d118e6e4c8ba42cc891e4668c177","src/ser.rs":"f9c91c2f70c42152531143ae231c6130e4ce930c97b378011e5595ea123ff31b","src/table.rs":"60767350b69b8d74c23e5b57c9e58d2e9e1c19c6cf2ad08820b29515ace42ca0","src/value.rs":"1fb23e59a61456a3ec5fa1727674b28eb1141e9e056cdeb794ec2647c4a55b71","tests/decoder.rs":"114e708adc1467c03212e52e2ffef42d08233ab74f69c553a6db73ddbb874414","tests/decoder_compliance.rs":"b0ed26b0762d8dfc23532efb724789366ca343f7354a76216b3fb426c6915e5a","tests/encoder.rs":"4c2430ad514fe64e28b89d0bd7ad7d299fbda8df903304ddcda704ce5db20382","tests/encoder_compliance.rs":"eeaa92f9cb4ee008830006e78277dfea9c041bc923a0ef5538d79aeb95f022c0","tests/testsuite/de_errors.rs":"1bc8521181f9fbe884db3313a8e8a044b4a1cf4b8956530a3cc8be9bcb5468f8","tests/testsuite/display.rs":"164de8f7108ce1055159a19884d23f770bd25cf0ead6b23f6ff4340931c7afc5","tests/testsuite/display_tricky.rs":"9806743d670e5cc46ee0ffda3f4c1f8ac63ee1e702250f07b7cd2098750d25d1","tests/testsuite/enum_external_deserialize.rs":"28b4705d904b58a973ef27c6cdc948f8d404105f98a55efa111cce9e7b4b1a67","tests/testsuite/float.rs":"6be604bb11adb315ad01fdf7117db620508d38caedaaea63e777d7ed2e5e4973","tests/testsuite/formatting.rs":"3b279ab1f24ebeb07537764107c42be9a84731ead1a88596785186777aafd1ee","tests/testsuite/macros.rs":"cf99ad3b191b68e044d0b01aa01ae959ed8b98ae466b9b0491bae1939af3832c","tests/testsuite/main.rs":"4e40c82147ccfc7094f2c4795b51b575c7d231a7da75814a08fd8e0c52d93f8b","tests/testsuite/pretty.rs":"e03df1f3ebe5bb98f6cc0888f0c6bcdcdb92c9c7ea2cd5acaa33ca751bf260e7","tests/testsuite/serde.rs":"9b5edf6ac8cfe8d5c96921f45b7cf6ab2c3d777c3889173e7a643903a626b599","tests/testsuite/spanned.rs":"b7522afd8101ba5dd539118a43bccefef66fedef41926d9515f67590961ac7e3","tests/testsuite/spanned_impls.rs":"666c65679365451f67234d50bb3198ac52418ad7ef1dae6916faba78f92c9d02","tests/testsuite/tables_last.rs":"42271f9df94b28f36b934686d4a5c6196140a2975733d1344b6415cb9f1b92ed"},"package":"8ff9e3abce27ee2c9a37f9ad37238c1bdd4e789c84ba37df76aa4d528f5072cc"} \ No newline at end of file
diff --git a/vendor/toml/Cargo.lock b/vendor/toml/Cargo.lock
index 7bf050684..365e4b8ba 100644
--- a/vendor/toml/Cargo.lock
+++ b/vendor/toml/Cargo.lock
@@ -421,9 +421,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
-version = "1.0.56"
+version = "1.0.67"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435"
+checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"
dependencies = [
"unicode-ident",
]
@@ -470,9 +470,9 @@ dependencies = [
[[package]]
name = "ryu"
-version = "1.0.11"
+version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
+checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
[[package]]
name = "same-file"
@@ -516,9 +516,9 @@ dependencies = [
[[package]]
name = "serde_spanned"
-version = "0.6.3"
+version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186"
+checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80"
dependencies = [
"serde",
]
@@ -608,13 +608,14 @@ dependencies = [
[[package]]
name = "toml"
-version = "0.7.6"
+version = "0.8.6"
dependencies = [
"indexmap",
"serde",
"serde_json",
"serde_spanned",
"snapbox",
+ "toml-test-data",
"toml-test-harness",
"toml_datetime",
"toml_edit",
@@ -622,29 +623,30 @@ dependencies = [
[[package]]
name = "toml-test"
-version = "0.3.4"
+version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37351256790aa1dbd6d60f4ff08e55e7f372e292f3e9040d6e077463d9a779c3"
+checksum = "1ec3892835fb31e181a87e1758275a64b0d7c6c9e9618aeb61a647bd487314c0"
dependencies = [
"chrono",
+ "ryu",
"serde",
"serde_json",
]
[[package]]
name = "toml-test-data"
-version = "1.3.0"
+version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93f351b6d6005ee802b0d4a53ca1cdf05636f441df4d299e62cba57f1da52646"
+checksum = "0082ae0d631f97530e98829c4101ae3ce3f1821a88f0a04be4fc3eaca5e7ed2d"
dependencies = [
"include_dir",
]
[[package]]
name = "toml-test-harness"
-version = "0.4.3"
+version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e00fda5710922fe6b3005bf6a5050c303d6f9625249c37b7386e8818f4af675"
+checksum = "1be4b8d761dee51b4694e9f1d622a1d7f9c135a8b8265459e16d09ac5b16a05d"
dependencies = [
"ignore",
"libtest-mimic",
@@ -654,18 +656,18 @@ dependencies = [
[[package]]
name = "toml_datetime"
-version = "0.6.3"
+version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
+checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
dependencies = [
"serde",
]
[[package]]
name = "toml_edit"
-version = "0.19.12"
+version = "0.20.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c500344a19072298cd05a7224b3c0c629348b78692bf48466c5238656e315a78"
+checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81"
dependencies = [
"indexmap",
"serde",
@@ -883,9 +885,9 @@ checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
[[package]]
name = "winnow"
-version = "0.4.6"
+version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61de7bac303dc551fe038e2b3cef0f571087a47571ea6e79a87692ac99b99699"
+checksum = "81fac9742fd1ad1bd9643b991319f72dd031016d44b77039a26977eb667141e7"
dependencies = [
"memchr",
]
diff --git a/vendor/toml/Cargo.toml b/vendor/toml/Cargo.toml
index 02f89eb0a..656d2af19 100644
--- a/vendor/toml/Cargo.toml
+++ b/vendor/toml/Cargo.toml
@@ -11,9 +11,9 @@
[package]
edition = "2021"
-rust-version = "1.64.0"
+rust-version = "1.67"
name = "toml"
-version = "0.7.6"
+version = "0.8.6"
authors = ["Alex Crichton <alex@alexcrichton.com>"]
include = [
"build.rs",
@@ -47,6 +47,7 @@ license = "MIT OR Apache-2.0"
repository = "https://github.com/toml-rs/toml"
[package.metadata.docs.rs]
+all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
@@ -124,15 +125,15 @@ optional = true
version = "1.0.145"
[dependencies.serde_spanned]
-version = "0.6.3"
+version = "0.6.4"
features = ["serde"]
[dependencies.toml_datetime]
-version = "0.6.3"
+version = "0.6.5"
features = ["serde"]
[dependencies.toml_edit]
-version = "0.19.12"
+version = "0.20.7"
features = ["serde"]
optional = true
@@ -146,8 +147,11 @@ version = "1.0.96"
[dev-dependencies.snapbox]
version = "0.4.11"
+[dev-dependencies.toml-test-data]
+version = "1.4.0"
+
[dev-dependencies.toml-test-harness]
-version = "0.4.3"
+version = "0.4.8"
[features]
default = [
diff --git a/vendor/toml/LICENSE-APACHE b/vendor/toml/LICENSE-APACHE
index 16fe87b06..8f71f43fe 100644
--- a/vendor/toml/LICENSE-APACHE
+++ b/vendor/toml/LICENSE-APACHE
@@ -1,201 +1,202 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright {yyyy} {name of copyright owner}
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
diff --git a/vendor/toml/LICENSE-MIT b/vendor/toml/LICENSE-MIT
index 39e0ed660..a2d01088b 100644
--- a/vendor/toml/LICENSE-MIT
+++ b/vendor/toml/LICENSE-MIT
@@ -1,25 +1,19 @@
-Copyright (c) 2014 Alex Crichton
+Copyright (c) Individual contributors
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/toml/src/fmt.rs b/vendor/toml/src/fmt.rs
index 0e96bf050..281cb59c1 100644
--- a/vendor/toml/src/fmt.rs
+++ b/vendor/toml/src/fmt.rs
@@ -1,6 +1,7 @@
#[derive(Copy, Clone, Default)]
pub(crate) struct DocumentFormatter {
pub(crate) multiline_array: bool,
+ is_value: bool,
}
impl toml_edit::visit_mut::VisitMut for DocumentFormatter {
@@ -9,21 +10,26 @@ impl toml_edit::visit_mut::VisitMut for DocumentFormatter {
}
fn visit_item_mut(&mut self, node: &mut toml_edit::Item) {
- let other = std::mem::take(node);
- let other = match other.into_table().map(toml_edit::Item::Table) {
- Ok(i) => i,
- Err(i) => i,
- };
- let other = match other
- .into_array_of_tables()
- .map(toml_edit::Item::ArrayOfTables)
- {
- Ok(i) => i,
- Err(i) => i,
- };
- *node = other;
+ let is_parent_value = self.is_value;
+ if !is_parent_value {
+ let other = std::mem::take(node);
+ let other = match other.into_table().map(toml_edit::Item::Table) {
+ Ok(i) => i,
+ Err(i) => i,
+ };
+ let other = match other
+ .into_array_of_tables()
+ .map(toml_edit::Item::ArrayOfTables)
+ {
+ Ok(i) => i,
+ Err(i) => i,
+ };
+ self.is_value = other.is_value();
+ *node = other;
+ }
toml_edit::visit_mut::visit_item_mut(self, node);
+ self.is_value = is_parent_value;
}
fn visit_table_mut(&mut self, node: &mut toml_edit::Table) {
diff --git a/vendor/toml/src/macros.rs b/vendor/toml/src/macros.rs
index d86cc52f5..a29597006 100644
--- a/vendor/toml/src/macros.rs
+++ b/vendor/toml/src/macros.rs
@@ -198,15 +198,15 @@ macro_rules! toml_internal {
}};
(@value (-nan)) => {
- $crate::Value::Float(-::std::f64::NAN)
+ $crate::Value::Float(::std::f64::NAN.copysign(-1.0))
};
(@value (nan)) => {
- $crate::Value::Float(::std::f64::NAN)
+ $crate::Value::Float(::std::f64::NAN.copysign(1.0))
};
(@value nan) => {
- $crate::Value::Float(::std::f64::NAN)
+ $crate::Value::Float(::std::f64::NAN.copysign(1.0))
};
(@value (-inf)) => {
diff --git a/vendor/toml/src/value.rs b/vendor/toml/src/value.rs
index 2785d9de9..e6f832a78 100644
--- a/vendor/toml/src/value.rs
+++ b/vendor/toml/src/value.rs
@@ -770,6 +770,13 @@ impl<'de> serde::de::VariantAccess<'de> for MapEnumDeserializer {
fn unit_variant(self) -> Result<(), Self::Error> {
use de::Error;
match self.value {
+ Value::Array(values) => {
+ if values.is_empty() {
+ Ok(())
+ } else {
+ Err(Error::custom("expected empty array"))
+ }
+ }
Value::Table(values) => {
if values.is_empty() {
Ok(())
@@ -797,8 +804,15 @@ impl<'de> serde::de::VariantAccess<'de> for MapEnumDeserializer {
{
use de::Error;
match self.value {
+ Value::Array(values) => {
+ if values.len() == len {
+ serde::de::Deserializer::deserialize_seq(values.into_deserializer(), visitor)
+ } else {
+ Err(Error::custom(format!("expected tuple with length {}", len)))
+ }
+ }
Value::Table(values) => {
- let tuple_values = values
+ let tuple_values: Result<Vec<_>, _> = values
.into_iter()
.enumerate()
.map(|(index, (key, value))| match key.parse::<usize>() {
@@ -808,17 +822,8 @@ impl<'de> serde::de::VariantAccess<'de> for MapEnumDeserializer {
index, key
))),
})
- // Fold all values into a `Vec`, or return the first error.
- .fold(Ok(Vec::with_capacity(len)), |result, value_result| {
- result.and_then(move |mut tuple_values| match value_result {
- Ok(value) => {
- tuple_values.push(value);
- Ok(tuple_values)
- }
- // `Result<de::Value, Self::Error>` to `Result<Vec<_>, Self::Error>`
- Err(e) => Err(e),
- })
- })?;
+ .collect();
+ let tuple_values = tuple_values?;
if tuple_values.len() == len {
serde::de::Deserializer::deserialize_seq(
@@ -870,10 +875,10 @@ impl ser::Serializer for ValueSerializer {
type SerializeSeq = ValueSerializeVec;
type SerializeTuple = ValueSerializeVec;
type SerializeTupleStruct = ValueSerializeVec;
- type SerializeTupleVariant = ValueSerializeVec;
+ type SerializeTupleVariant = ValueSerializeTupleVariant;
type SerializeMap = ValueSerializeMap;
type SerializeStruct = ValueSerializeMap;
- type SerializeStructVariant = ser::Impossible<Value, crate::ser::Error>;
+ type SerializeStructVariant = ValueSerializeStructVariant;
fn serialize_bool(self, value: bool) -> Result<Value, crate::ser::Error> {
Ok(Value::Boolean(value))
@@ -916,10 +921,14 @@ impl ser::Serializer for ValueSerializer {
}
fn serialize_f32(self, value: f32) -> Result<Value, crate::ser::Error> {
- self.serialize_f64(value.into())
+ self.serialize_f64(value as f64)
}
- fn serialize_f64(self, value: f64) -> Result<Value, crate::ser::Error> {
+ fn serialize_f64(self, mut value: f64) -> Result<Value, crate::ser::Error> {
+ // Discard sign of NaN. See ValueSerializer::serialize_f64.
+ if value.is_nan() {
+ value = value.copysign(1.0);
+ }
Ok(Value::Float(value))
}
@@ -1015,10 +1024,10 @@ impl ser::Serializer for ValueSerializer {
self,
_name: &'static str,
_variant_index: u32,
- _variant: &'static str,
+ variant: &'static str,
len: usize,
) -> Result<Self::SerializeTupleVariant, crate::ser::Error> {
- self.serialize_seq(Some(len))
+ Ok(ValueSerializeTupleVariant::tuple(variant, len))
}
fn serialize_map(self, _len: Option<usize>) -> Result<Self::SerializeMap, crate::ser::Error> {
@@ -1040,12 +1049,12 @@ impl ser::Serializer for ValueSerializer {
fn serialize_struct_variant(
self,
- name: &'static str,
+ _name: &'static str,
_variant_index: u32,
- _variant: &'static str,
- _len: usize,
+ variant: &'static str,
+ len: usize,
) -> Result<Self::SerializeStructVariant, crate::ser::Error> {
- Err(crate::ser::Error::unsupported_type(Some(name)))
+ Ok(ValueSerializeStructVariant::struct_(variant, len))
}
}
@@ -1453,3 +1462,76 @@ impl<'a, 'de> de::Visitor<'de> for DatetimeOrTable<'a> {
}
}
}
+
+type ValueSerializeTupleVariant = ValueSerializeVariant<ValueSerializeVec>;
+type ValueSerializeStructVariant = ValueSerializeVariant<ValueSerializeMap>;
+
+struct ValueSerializeVariant<T> {
+ variant: &'static str,
+ inner: T,
+}
+
+impl ValueSerializeVariant<ValueSerializeVec> {
+ pub(crate) fn tuple(variant: &'static str, len: usize) -> Self {
+ Self {
+ variant,
+ inner: ValueSerializeVec {
+ vec: Vec::with_capacity(len),
+ },
+ }
+ }
+}
+
+impl ValueSerializeVariant<ValueSerializeMap> {
+ pub(crate) fn struct_(variant: &'static str, len: usize) -> Self {
+ Self {
+ variant,
+ inner: ValueSerializeMap {
+ ser: SerializeMap {
+ map: Table::with_capacity(len),
+ next_key: None,
+ },
+ },
+ }
+ }
+}
+
+impl serde::ser::SerializeTupleVariant for ValueSerializeVariant<ValueSerializeVec> {
+ type Ok = crate::Value;
+ type Error = crate::ser::Error;
+
+ fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<(), Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ serde::ser::SerializeSeq::serialize_element(&mut self.inner, value)
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ let inner = serde::ser::SerializeSeq::end(self.inner)?;
+ let mut table = Table::new();
+ table.insert(self.variant.to_owned(), inner);
+ Ok(Value::Table(table))
+ }
+}
+
+impl serde::ser::SerializeStructVariant for ValueSerializeVariant<ValueSerializeMap> {
+ type Ok = crate::Value;
+ type Error = crate::ser::Error;
+
+ #[inline]
+ fn serialize_field<T>(&mut self, key: &'static str, value: &T) -> Result<(), Self::Error>
+ where
+ T: serde::ser::Serialize + ?Sized,
+ {
+ serde::ser::SerializeStruct::serialize_field(&mut self.inner, key, value)
+ }
+
+ #[inline]
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ let inner = serde::ser::SerializeStruct::end(self.inner)?;
+ let mut table = Table::new();
+ table.insert(self.variant.to_owned(), inner);
+ Ok(Value::Table(table))
+ }
+}
diff --git a/vendor/toml/tests/decoder.rs b/vendor/toml/tests/decoder.rs
index fe6db3f5e..5af906f36 100644
--- a/vendor/toml/tests/decoder.rs
+++ b/vendor/toml/tests/decoder.rs
@@ -11,9 +11,10 @@ impl toml_test_harness::Decoder for Decoder {
fn decode(&self, data: &[u8]) -> Result<toml_test_harness::Decoded, toml_test_harness::Error> {
let data = std::str::from_utf8(data).map_err(toml_test_harness::Error::new)?;
let document = data
- .parse::<toml::Value>()
+ .parse::<toml::Table>()
.map_err(toml_test_harness::Error::new)?;
- value_to_decoded(&document)
+ let value = toml::Value::Table(document);
+ value_to_decoded(&value)
}
}
diff --git a/vendor/toml/tests/decoder_compliance.rs b/vendor/toml/tests/decoder_compliance.rs
index 5d4fc2a4d..582888371 100644
--- a/vendor/toml/tests/decoder_compliance.rs
+++ b/vendor/toml/tests/decoder_compliance.rs
@@ -4,16 +4,8 @@ mod decoder;
fn main() {
let decoder = decoder::Decoder;
let mut harness = toml_test_harness::DecoderHarness::new(decoder);
- harness
- .ignore([
- "valid/spec/float-0.toml",
- // Unreleased
- "valid/string/escape-esc.toml",
- "valid/string/hex-escape.toml",
- "valid/datetime/no-seconds.toml",
- "valid/inline-table/newline.toml",
- ])
- .unwrap();
+ harness.version("1.0.0");
+ harness.ignore([]).unwrap();
harness.test();
}
diff --git a/vendor/toml/tests/encoder.rs b/vendor/toml/tests/encoder.rs
index eda62963c..e76a74a26 100644
--- a/vendor/toml/tests/encoder.rs
+++ b/vendor/toml/tests/encoder.rs
@@ -10,7 +10,10 @@ impl toml_test_harness::Encoder for Encoder {
fn encode(&self, data: toml_test_harness::Decoded) -> Result<String, toml_test_harness::Error> {
let value = from_decoded(&data)?;
- let s = toml::to_string(&value).map_err(toml_test_harness::Error::new)?;
+ let toml::Value::Table(document) = value else {
+ return Err(toml_test_harness::Error::new("no root table"));
+ };
+ let s = toml::to_string(&document).map_err(toml_test_harness::Error::new)?;
Ok(s)
}
}
diff --git a/vendor/toml/tests/encoder_compliance.rs b/vendor/toml/tests/encoder_compliance.rs
index 380724831..c593e5967 100644
--- a/vendor/toml/tests/encoder_compliance.rs
+++ b/vendor/toml/tests/encoder_compliance.rs
@@ -6,7 +6,7 @@ fn main() {
let encoder = encoder::Encoder;
let decoder = decoder::Decoder;
let mut harness = toml_test_harness::EncoderHarness::new(encoder, decoder);
- harness.ignore(["valid/spec/float-0.toml"]).unwrap();
+ harness.version("1.0.0");
harness.test();
}
diff --git a/vendor/toml/tests/testsuite/float.rs b/vendor/toml/tests/testsuite/float.rs
index d00813471..1d9ce1a32 100644
--- a/vendor/toml/tests/testsuite/float.rs
+++ b/vendor/toml/tests/testsuite/float.rs
@@ -47,7 +47,7 @@ macro_rules! float_inf_tests {
assert!(inf.sf5.is_nan());
assert!(inf.sf5.is_sign_positive());
assert!(inf.sf6.is_nan());
- assert!(inf.sf6.is_sign_negative());
+ assert!(inf.sf6.is_sign_negative()); // NOTE: serializes to just `nan`
assert_eq!(inf.sf7, 0.0);
assert!(inf.sf7.is_sign_positive());
@@ -63,7 +63,7 @@ sf2 = inf
sf3 = -inf
sf4 = nan
sf5 = nan
-sf6 = -nan
+sf6 = nan
sf7 = 0.0
sf8 = -0.0
"
diff --git a/vendor/toml/tests/testsuite/macros.rs b/vendor/toml/tests/testsuite/macros.rs
index 510070510..e002cd914 100644
--- a/vendor/toml/tests/testsuite/macros.rs
+++ b/vendor/toml/tests/testsuite/macros.rs
@@ -198,9 +198,18 @@ fn test_nan() {
sf5 = +nan
sf6 = -nan
};
- assert!(actual["sf4"].as_float().unwrap().is_nan());
- assert!(actual["sf5"].as_float().unwrap().is_nan());
- assert!(actual["sf6"].as_float().unwrap().is_nan());
+
+ let sf4 = actual["sf4"].as_float().unwrap();
+ assert!(sf4.is_nan());
+ assert!(sf4.is_sign_positive());
+
+ let sf5 = actual["sf5"].as_float().unwrap();
+ assert!(sf5.is_nan());
+ assert!(sf5.is_sign_positive());
+
+ let sf6 = actual["sf6"].as_float().unwrap();
+ assert!(sf6.is_nan());
+ assert!(sf6.is_sign_negative());
}
#[test]
diff --git a/vendor/toml/tests/testsuite/pretty.rs b/vendor/toml/tests/testsuite/pretty.rs
index 3ae772b4f..369888fbb 100644
--- a/vendor/toml/tests/testsuite/pretty.rs
+++ b/vendor/toml/tests/testsuite/pretty.rs
@@ -47,7 +47,7 @@ fn pretty_std() {
assert_eq(toml, &result);
}
-const PRETTY_TRICKY: &str = r##"[example]
+const PRETTY_TRICKY: &str = r#"[example]
f = "\f"
glass = """
Nothing too unusual, except that I can eat glass in:
@@ -72,7 +72,7 @@ This has a ''' in it and \"\"\" cuz it's tricky yo
Also ' and \" because why not
this is the fourth line
"""
-"##;
+"#;
#[test]
fn pretty_tricky() {
@@ -85,7 +85,7 @@ fn pretty_tricky() {
assert_eq(toml, &result);
}
-const PRETTY_TABLE_ARRAY: &str = r##"[[array]]
+const PRETTY_TABLE_ARRAY: &str = r#"[[array]]
key = "foo"
[[array]]
@@ -96,7 +96,7 @@ doc = "this is a table"
[example]
single = "this is a single line string"
-"##;
+"#;
#[test]
fn pretty_table_array() {
@@ -109,7 +109,7 @@ fn pretty_table_array() {
assert_eq(toml, &result);
}
-const TABLE_ARRAY: &str = r##"[[array]]
+const TABLE_ARRAY: &str = r#"[[array]]
key = "foo"
[[array]]
@@ -120,7 +120,7 @@ doc = "this is a table"
[example]
single = "this is a single line string"
-"##;
+"#;
#[test]
fn table_array() {
diff --git a/vendor/toml/tests/testsuite/serde.rs b/vendor/toml/tests/testsuite/serde.rs
index 6e927f733..d9d7a6db5 100644
--- a/vendor/toml/tests/testsuite/serde.rs
+++ b/vendor/toml/tests/testsuite/serde.rs
@@ -21,19 +21,26 @@ macro_rules! equivalent {
let toml = $toml;
let literal = $literal;
- // In/out of Value is equivalent
- println!("try_from");
- assert_eq!(t!(Table::try_from(literal.clone())), toml);
- println!("try_into");
- assert_eq!(literal, t!(toml.clone().try_into()));
-
// Through a string equivalent
println!("to_string");
- snapbox::assert_eq(t!(toml::to_string(&toml)), t!(toml::to_string(&literal)));
+ snapbox::assert_eq(t!(toml::to_string(&literal)), t!(toml::to_string(&toml)));
println!("literal, from_str(toml)");
assert_eq!(literal, t!(toml::from_str(&t!(toml::to_string(&toml)))));
- println!("toml, from_str(toml)");
- assert_eq!(toml, t!(toml::from_str(&t!(toml::to_string(&toml)))));
+ println!("toml, from_str(literal)");
+ assert_eq!(toml, t!(toml::from_str(&t!(toml::to_string(&literal)))));
+
+ // In/out of Value is equivalent
+ println!("Table::try_from(literal)");
+ assert_eq!(toml, t!(Table::try_from(literal.clone())));
+ println!("Value::try_from(literal)");
+ assert_eq!(
+ Value::Table(toml.clone()),
+ t!(Value::try_from(literal.clone()))
+ );
+ println!("toml.try_into()");
+ assert_eq!(literal, t!(toml.clone().try_into()));
+ println!("Value::Table(toml).try_into()");
+ assert_eq!(literal, t!(Value::Table(toml.clone()).try_into()));
}};
}
@@ -377,6 +384,106 @@ fn parse_enum_string() {
}
#[test]
+fn parse_tuple_variant() {
+ #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+ struct Document {
+ inner: Vec<Enum>,
+ }
+
+ #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+ enum Enum {
+ Int(i32, i32),
+ String(String, String),
+ }
+
+ let input = Document {
+ inner: vec![
+ Enum::Int(1, 1),
+ Enum::String("2".to_owned(), "2".to_owned()),
+ ],
+ };
+ let expected = "[[inner]]
+Int = [1, 1]
+
+[[inner]]
+String = [\"2\", \"2\"]
+";
+ let raw = toml::to_string(&input).unwrap();
+ snapbox::assert_eq(expected, raw);
+
+ equivalent! {
+ Document {
+ inner: vec![
+ Enum::Int(1, 1),
+ Enum::String("2".to_owned(), "2".to_owned()),
+ ],
+ },
+ map! {
+ inner: vec![
+ map! { Int: [1, 1] },
+ map! { String: ["2".to_owned(), "2".to_owned()] },
+ ]
+ },
+ }
+}
+
+#[test]
+fn parse_struct_variant() {
+ #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+ struct Document {
+ inner: Vec<Enum>,
+ }
+
+ #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
+ enum Enum {
+ Int { first: i32, second: i32 },
+ String { first: String, second: String },
+ }
+
+ let input = Document {
+ inner: vec![
+ Enum::Int {
+ first: 1,
+ second: 1,
+ },
+ Enum::String {
+ first: "2".to_owned(),
+ second: "2".to_owned(),
+ },
+ ],
+ };
+ let expected = "[[inner]]
+
+[inner.Int]
+first = 1
+second = 1
+
+[[inner]]
+
+[inner.String]
+first = \"2\"
+second = \"2\"
+";
+ let raw = toml::to_string(&input).unwrap();
+ snapbox::assert_eq(expected, raw);
+
+ equivalent! {
+ Document {
+ inner: vec![
+ Enum::Int { first: 1, second: 1 },
+ Enum::String { first: "2".to_owned(), second: "2".to_owned() },
+ ],
+ },
+ map! {
+ inner: vec![
+ map! { Int: map! { first: 1, second: 1 } },
+ map! { String: map! { first: "2".to_owned(), second: "2".to_owned() } },
+ ]
+ },
+ }
+}
+
+#[test]
#[cfg(feature = "preserve_order")]
fn map_key_unit_variants() {
#[derive(Serialize, Deserialize, PartialEq, Eq, Debug, Clone, PartialOrd, Ord)]
@@ -635,6 +742,25 @@ fn newtype_variant() {
}
}
+#[test]
+fn newtype_key() {
+ #[derive(PartialEq, Eq, PartialOrd, Ord, Hash, Debug, Clone, Serialize, Deserialize)]
+ struct NewType(String);
+
+ type CustomKeyMap = std::collections::BTreeMap<NewType, u32>;
+
+ equivalent! {
+ [
+ (NewType("x".to_owned()), 1),
+ (NewType("y".to_owned()), 2),
+ ].into_iter().collect::<CustomKeyMap>(),
+ map! {
+ x: Value::Integer(1),
+ y: Value::Integer(2)
+ },
+ }
+}
+
#[derive(Debug, Default, PartialEq, Serialize, Deserialize)]
struct CanBeEmpty {
a: Option<String>,
@@ -1094,3 +1220,129 @@ fn datetime_offset_issue_496() {
let output = toml.to_string();
snapbox::assert_eq(original, output);
}
+
+#[test]
+fn serialize_array_with_none_value() {
+ #[derive(Serialize)]
+ struct Document {
+ values: Vec<Option<usize>>,
+ }
+
+ let input = Document {
+ values: vec![Some(1), Some(2), Some(3)],
+ };
+ let expected = "values = [1, 2, 3]\n";
+ let raw = toml::to_string(&input).unwrap();
+ snapbox::assert_eq(expected, raw);
+
+ let input = Document {
+ values: vec![Some(1), None, Some(3)],
+ };
+ let err = toml::to_string(&input).unwrap_err();
+ snapbox::assert_eq("unsupported None value", err.to_string());
+}
+
+#[test]
+fn serialize_array_with_optional_struct_field() {
+ #[derive(Debug, Deserialize, Serialize)]
+ struct Document {
+ values: Vec<OptionalField>,
+ }
+
+ #[derive(Debug, Deserialize, Serialize)]
+ struct OptionalField {
+ x: u8,
+ y: Option<u8>,
+ }
+
+ let input = Document {
+ values: vec![
+ OptionalField { x: 0, y: Some(4) },
+ OptionalField { x: 2, y: Some(5) },
+ OptionalField { x: 3, y: Some(7) },
+ ],
+ };
+ let expected = "\
+[[values]]
+x = 0
+y = 4
+
+[[values]]
+x = 2
+y = 5
+
+[[values]]
+x = 3
+y = 7
+";
+ let raw = toml::to_string(&input).unwrap();
+ snapbox::assert_eq(expected, raw);
+
+ let input = Document {
+ values: vec![
+ OptionalField { x: 0, y: Some(4) },
+ OptionalField { x: 2, y: None },
+ OptionalField { x: 3, y: Some(7) },
+ ],
+ };
+ let expected = "\
+[[values]]
+x = 0
+y = 4
+
+[[values]]
+x = 2
+
+[[values]]
+x = 3
+y = 7
+";
+ let raw = toml::to_string(&input).unwrap();
+ snapbox::assert_eq(expected, raw);
+}
+
+#[test]
+fn serialize_array_with_enum_of_optional_struct_field() {
+ #[derive(Debug, Deserialize, Serialize)]
+ struct Document {
+ values: Vec<Choice>,
+ }
+
+ #[derive(Debug, Deserialize, Serialize)]
+ enum Choice {
+ Optional(OptionalField),
+ Empty,
+ }
+
+ #[derive(Debug, Deserialize, Serialize)]
+ struct OptionalField {
+ x: u8,
+ y: Option<u8>,
+ }
+
+ let input = Document {
+ values: vec![
+ Choice::Optional(OptionalField { x: 0, y: Some(4) }),
+ Choice::Empty,
+ Choice::Optional(OptionalField { x: 2, y: Some(5) }),
+ Choice::Optional(OptionalField { x: 3, y: Some(7) }),
+ ],
+ };
+ let expected = "values = [{ Optional = { x = 0, y = 4 } }, \"Empty\", { Optional = { x = 2, y = 5 } }, { Optional = { x = 3, y = 7 } }]
+";
+ let raw = toml::to_string(&input).unwrap();
+ snapbox::assert_eq(expected, raw);
+
+ let input = Document {
+ values: vec![
+ Choice::Optional(OptionalField { x: 0, y: Some(4) }),
+ Choice::Empty,
+ Choice::Optional(OptionalField { x: 2, y: None }),
+ Choice::Optional(OptionalField { x: 3, y: Some(7) }),
+ ],
+ };
+ let expected = "values = [{ Optional = { x = 0, y = 4 } }, \"Empty\", { Optional = { x = 2 } }, { Optional = { x = 3, y = 7 } }]
+";
+ let raw = toml::to_string(&input).unwrap();
+ snapbox::assert_eq(expected, raw);
+}
diff --git a/vendor/toml_datetime/.cargo-checksum.json b/vendor/toml_datetime/.cargo-checksum.json
index 1ee992835..e801b0b14 100644
--- a/vendor/toml_datetime/.cargo-checksum.json
+++ b/vendor/toml_datetime/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"7e8cbd06751b38d4b5dca68568b472f845f6e61d2d93402b242fca07a71b74d8","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"a9540c57fbfade8959d34804427d9f37ccae9e24a9fc469bcf413c2089601f0d","src/datetime.rs":"9f85adaa87398164dbaa72c7ef4c7328cda7d9fa1478142b88fbe4de9551b53e","src/lib.rs":"91f3fe49647af4987a49b5aaa8c3175f02c05fa9ac45e7c49dbee61566230476"},"package":"7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"} \ No newline at end of file
+{"files":{"Cargo.toml":"5171fec882937c1a00a81fb38e55b38547da711ad1c88725f8501d5050ff2789","LICENSE-APACHE":"c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08","LICENSE-MIT":"6efb0476a1cc085077ed49357026d8c173bf33017278ef440f222fb9cbcb66e6","README.md":"a9540c57fbfade8959d34804427d9f37ccae9e24a9fc469bcf413c2089601f0d","src/datetime.rs":"40723c9d195527d4dc9a70450a0822e39f7de204debf502d0c0d977833dc3cf9","src/lib.rs":"91f3fe49647af4987a49b5aaa8c3175f02c05fa9ac45e7c49dbee61566230476"},"package":"3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"} \ No newline at end of file
diff --git a/vendor/toml_datetime/Cargo.toml b/vendor/toml_datetime/Cargo.toml
index da89ebab1..46989f26d 100644
--- a/vendor/toml_datetime/Cargo.toml
+++ b/vendor/toml_datetime/Cargo.toml
@@ -11,9 +11,9 @@
[package]
edition = "2021"
-rust-version = "1.64.0"
+rust-version = "1.67"
name = "toml_datetime"
-version = "0.6.3"
+version = "0.6.5"
authors = ["Alex Crichton <alex@alexcrichton.com>"]
include = [
"build.rs",
diff --git a/vendor/toml_datetime/LICENSE-APACHE b/vendor/toml_datetime/LICENSE-APACHE
index 16fe87b06..8f71f43fe 100644
--- a/vendor/toml_datetime/LICENSE-APACHE
+++ b/vendor/toml_datetime/LICENSE-APACHE
@@ -1,201 +1,202 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright {yyyy} {name of copyright owner}
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
diff --git a/vendor/toml_datetime/LICENSE-MIT b/vendor/toml_datetime/LICENSE-MIT
index 39e0ed660..a2d01088b 100644
--- a/vendor/toml_datetime/LICENSE-MIT
+++ b/vendor/toml_datetime/LICENSE-MIT
@@ -1,25 +1,19 @@
-Copyright (c) 2014 Alex Crichton
+Copyright (c) Individual contributors
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/toml_datetime/src/datetime.rs b/vendor/toml_datetime/src/datetime.rs
index 15781b915..1b37c7009 100644
--- a/vendor/toml_datetime/src/datetime.rs
+++ b/vendor/toml_datetime/src/datetime.rs
@@ -308,7 +308,15 @@ impl FromStr for Datetime {
if date.month < 1 || date.month > 12 {
return Err(DatetimeParseError {});
}
- if date.day < 1 || date.day > 31 {
+ let is_leap_year =
+ (date.year % 4 == 0) && ((date.year % 100 != 0) || (date.year % 400 == 0));
+ let max_days_in_month = match date.month {
+ 2 if is_leap_year => 29,
+ 2 => 28,
+ 4 | 6 | 9 | 11 => 30,
+ _ => 31,
+ };
+ if date.day < 1 || date.day > max_days_in_month {
return Err(DatetimeParseError {});
}
@@ -381,7 +389,8 @@ impl FromStr for Datetime {
if time.minute > 59 {
return Err(DatetimeParseError {});
}
- if time.second > 59 {
+ // 00-58, 00-59, 00-60 based on leap second rules
+ if time.second > 60 {
return Err(DatetimeParseError {});
}
if time.nanosecond > 999_999_999 {
@@ -451,7 +460,7 @@ impl FromStr for Datetime {
fn digit(chars: &mut str::Chars<'_>) -> Result<u8, DatetimeParseError> {
match chars.next() {
- Some(c) if ('0'..='9').contains(&c) => Ok(c as u8 - b'0'),
+ Some(c) if c.is_ascii_digit() => Ok(c as u8 - b'0'),
_ => Err(DatetimeParseError {}),
}
}
diff --git a/vendor/toml_edit-0.19.11/.cargo-checksum.json b/vendor/toml_edit-0.19.11/.cargo-checksum.json
new file mode 100644
index 000000000..e89cfb647
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.lock":"3ecd99f74abba048346931fc66613d30c0b13dc7b1d3b9d84ce58304b0f6335b","Cargo.toml":"501acc462fd132ae11895ab7ca40a5d1138e47e86c011d68274b85969d81bba3","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"4ba025b28a1ea4c063512d92a206a0510972cd98daec7c6a64ab846ce8e3702d","README.md":"61071236d49e09b94cda5955f5d61a6196b192b11a990883d458dc6e3d72da6f","examples/visit.rs":"657756caba28aa87a8b10104aba704fd2365579c57a293bc572a8d72173ba174","src/array.rs":"3cd87f817f47b44688157f7ce52b303987c4091a21d3075c1022bc6d63ae7096","src/array_of_tables.rs":"2523e482cb10dd84c135141324fa6ecb6f5bccc6c08c6d96ff65abfb7cfbf8d9","src/de/array.rs":"7969d28e98e366cd16c9ed74128404a147a2b787c54d0450594811a92d17b310","src/de/datetime.rs":"a29e76372fc382686c31ee93fd54c749ea3d775c8d4fcc2b2643f9464ea23730","src/de/key.rs":"f8a977fe08e1f929e599f2216734db678ca6ec9fb7f6860b75f1cdfc628b52c6","src/de/mod.rs":"b7344ac410b21b2c82eb88782f48979d6f850a778a19bb2eea7228e834374d2f","src/de/spanned.rs":"5c959639bf4b3d19c6b18e625a57b28b311164bf7b191bbc4d30aa97b7239679","src/de/table.rs":"b1f0f95ea502126b8707ba945596f3c47d83d46680622899334567df1b58df1d","src/de/table_enum.rs":"879a78836ac3b00ab35b9cd72a08fb8486a6c4ae05c779481ae9fcb9546b8390","src/de/value.rs":"03a294f1913c9794dca6420fb3db37abd5c9150f692689269215b7c306bdf6d7","src/document.rs":"7882374aa62978cac3752f346253399f281121a544927feed2882ed9a008361d","src/encode.rs":"4fd14a1d23bc42cbc925d7b240c7f17641ccff0df31d8ed1aeb3cf4c9c598c36","src/index.rs":"34ed0a4cc0cd55ce29885ed8123cc7c09c8ba3b9aa8d3b0b47554c1a41d31577","src/inline_table.rs":"871cfc66cf6c87bfaece0d4725e4a6abe640f5911c3b9c97e617e01293dabd1f","src/internal_string.rs":"8c84f94363ed012eb7114c6b3f6b371155d0ce740ce44ec9d315aedf048c1d11","src/item.rs":"78c5d9e6c714483816f090d419db641977c9dfaf7dd3e9613f6eee10633173f2","src/key.rs":"657e1c3a1102155273768d643aa9322935060be40b9d4e40aba2328bd749eb8d","src/lib.rs":"3ff2ffd3366e495278fd7b3118ea54b7d09534380396a75b46c409e3c563c67c","src/parser/array.rs":"7131291e2d90d59ec72e0cbb653664c77f70a06aeade5d4ded4284cfa257b29e","src/parser/datetime.rs":"f61b42c735fd39921b2f3478a2ef2eff79b82f25e8cce142b885641bd0ad2e91","src/parser/document.rs":"6c1c17e0aaaa64661af2b7b9b4e06db18165cdd7ed40c627d84adf06bd1b3d4c","src/parser/errors.rs":"36c9b9d50ec26ebebc5c879e46db0cad5ba8b8f18c8ee48262e7248f4d5839ca","src/parser/inline_table.rs":"1980106b02cc0fa546c3ab688a8519a5c7c4431d3b4a62eaad689b46bae9c460","src/parser/key.rs":"d2f10cad53778e97e2e9a97d7f66ebf07c40666edfd77b3d7b07395aff713196","src/parser/macros.rs":"9366d332efc75f09a80871a8d0c4c4daa865e3a2fc78b91e6e4657df4260b0f9","src/parser/mod.rs":"1f3a866936f7f7fef3df4d2e4a0716ac67210d20b801550593d674002bec3f49","src/parser/numbers.rs":"d6cd2a8a80030f1476a5d719962a91f29916db09c035f11c6cb06b1793171d4c","src/parser/state.rs":"8b7ba46e124007c3dfdf894d881768f2dd0895749e217e2b1fedb86d9281b8b2","src/parser/strings.rs":"16bdbe9d7ba33858d3f5aa4e0e13021f32a50144748bb07e4dc30c9b2b921723","src/parser/table.rs":"301a2fa31f865195e276861a13c8b8c65d363de5ed263eb6fdce69a204f71de1","src/parser/trivia.rs":"08f7365fe3fdf6c2170afeedd303187db50c84d8f3503ed7bcfc428af9a6fb6b","src/parser/value.rs":"b40db1c8b75380680a6507e636a53153842e0493a2eac92543949e0b10e94f66","src/raw_string.rs":"dcec7da0aab75a5ff5891a0b4a22265ed47c17f9d802ec135e40f2bb1b0a7c60","src/repr.rs":"68356f3b89cd76b75bd9f78b6fbd31fbcc96d8195a7118d286dca92950adaee4","src/ser/array.rs":"5fb55303365bf6991f7af523931d1a046e88d3125c099317e12a7d4f592321a8","src/ser/key.rs":"9bad3bee90876c5c54aaa5caee92bfe30d79a100615902118b35b3ceb40b524e","src/ser/map.rs":"700ddcac68f1cb92969bb8e3168d9ad5d1e1b545d68cc7711f0eb58cf41d9f8c","src/ser/mod.rs":"9b37c484e6ac281a40260206e8cb5bec9e2dab09126c9a2010a52786fbf7df78","src/ser/pretty.rs":"9a9f6d43b2eab487de8af216b9950c93318c9ee6a91f4707ffa41e2ee492c902","src/ser/value.rs":"4e53308b7b82e50382a6d48251c27cf817eabea063c99e6ab9abe30d781c3afc","src/table.rs":"7ee678f8515b1e981cd5fe11300f6526d6f0258dab7dbcf9c8966e2fd249adcf","src/value.rs":"881f7aee14ef968f5f843ccbbaa648117ceac2148df6e09d171f41c174d35dd9","src/visit.rs":"34b49c3091a6ef7c1513429f8290c26989da25cec496d3993abf33fa65ebfc58","src/visit_mut.rs":"b184d7bb94038fdc2e0fee8689112f01377d9f8c05ffafb8a1f5f2263e80ee27","tests/decoder.rs":"8093389d542f50974d6a606321b0413941709ac2cbdef48934b60088bb21e3a3","tests/decoder_compliance.rs":"a06a10a2b89758ef08dda24c4475d13638b7c31e8872ed6edc6919d5b9910bd4","tests/encoder.rs":"c84dd8e14ade77a4d55f932418567196e188fe65d3957408b9ce07c2c27c4da0","tests/encoder_compliance.rs":"643b529e2f4762b2ce98e041dffa5d4b87fee5942996e093afa5b8494e02a3c0","tests/fixtures/invalid/array/double-comma-1.stderr":"abfcc7bc82100306faf21d3636f0ae684d0fbc5e9ea89032e6cd39ecfcb92c84","tests/fixtures/invalid/array/double-comma-2.stderr":"56bd3cecd5b5ec4204d206f07751c34e1e65bee7aa108ca74ef7a8cb1aaaea43","tests/fixtures/invalid/array/extending-table.stderr":"a6c077cb49c41a9d10aca0bac6c571e570f0a772c6311d6a835f9cc46f4ab7cd","tests/fixtures/invalid/array/missing-separator.stderr":"eb38b2683f119d8b9b8c6b8ffd46da784112565ef1033febbe59469e14baea76","tests/fixtures/invalid/array/no-close-2.stderr":"214a9c5953175709a068433f0a594e0cf2be88d633905dc6e9047894b5249e4e","tests/fixtures/invalid/array/no-close-table-2.stderr":"5a2b4bf9026aa20c749551cd77458c5ffba008b5b235fa05fb7c756917018eb8","tests/fixtures/invalid/array/no-close-table.stderr":"545ad4381d5a007a6cd940a4523ae2f629617d298611c0898283a1c4783604cb","tests/fixtures/invalid/array/no-close.stderr":"85935faa2e3a57c4f0a7d519629630a96826ce4f217650972cd070fb7dca23a2","tests/fixtures/invalid/array/tables-1.stderr":"f105a34c2d87b61160881eeb09b7f54d244ba2a222d32fbfc755091939942247","tests/fixtures/invalid/array/tables-2.stderr":"77010599d1d61a34119a99acea7d84162d217df93bca01aed3ae73f1eb62dafe","tests/fixtures/invalid/array/text-after-array-entries.stderr":"391ee42f4fa3a7ec51ba1b90e69f1d9278c105426fe66ae1f80e65d7fb6ed379","tests/fixtures/invalid/array/text-before-array-separator.stderr":"7292ebcb8c9c8aaa4041279af5414de3e710977cac948988cdc8b0947223b62b","tests/fixtures/invalid/array/text-in-array.stderr":"0486e3ec5d299e39c61380a2ed8826d886edb730f6d9555a765e4314da7f5b68","tests/fixtures/invalid/bool/almost-false-with-extra.stderr":"0a14178172a5e9ed65a7d551870b4df768e7cfb39f7b66a2ac0643e2aa8374af","tests/fixtures/invalid/bool/almost-false.stderr":"ed5307c42046d6adf0bf4c3d1aa1c75faa23a46029d5e229f0c2ab4db068df1c","tests/fixtures/invalid/bool/almost-true-with-extra.stderr":"6e4dc09948a38c284f5bc52e011322a2c0182ee2f35c772d460fa15a76461d2d","tests/fixtures/invalid/bool/almost-true.stderr":"86b33938625e15e30d4166b4e81f89c669e84c5b96c2cf708d84dbf628536e07","tests/fixtures/invalid/bool/just-f.stderr":"657f90406495c748243b526e1e01737c418453a1a5ad12ff0400631e9fdaf859","tests/fixtures/invalid/bool/just-t.stderr":"8a8f5aa45b0d0acd13f121caafa85a52a8d17f1bd81542d21d3a5ff07f460b60","tests/fixtures/invalid/bool/mixed-case.stderr":"2e9a16757a17c7e604e081584e6f015ecffb0fd7b6ed969a1fe2096c09e7155c","tests/fixtures/invalid/bool/starting-same-false.stderr":"87069893e084d03c3ab540e0607498d371563c0341c6f043aff756c8f1b32c64","tests/fixtures/invalid/bool/starting-same-true.stderr":"2a1817a1e3a6558860eec1d802e1be8f2f2b54da9b2d9eaf1cddecd35d71a8d6","tests/fixtures/invalid/bool/wrong-case-false.stderr":"5eb58e82290b767febd475712f7de9ee712f094a30dcb627a757b305ab64d096","tests/fixtures/invalid/bool/wrong-case-true.stderr":"dc8e696e9137f737a232009e7e9f801aa9ebe4320a445259af74d83a6235c7b7","tests/fixtures/invalid/control/bare-cr.stderr":"568eff61d56bb362866973d9a7a488831b8b08d02f4808538a04b22ebe10bf09","tests/fixtures/invalid/control/bare-formfeed.stderr":"4532c2fdc7c4bab8fa6683cc4c46975c1dddf2f531459793dedfaab73e4ae347","tests/fixtures/invalid/control/bare-null.stderr":"fe799f446b55ba89609a52842b4eb63bfa725035c0006107c85c6a8f6e8db688","tests/fixtures/invalid/control/bare-vertical-tab.stderr":"b85c55e64c58b85343482dadcd5d833fa771a79e1d0f13a24f4185a4d0d826d5","tests/fixtures/invalid/control/comment-cr.stderr":"656e1b16fbc152545a9726a290a8ce84463a73d780ad13a32b65291f56cb7dc6","tests/fixtures/invalid/control/comment-del.stderr":"08f586fc1f6ea69e3718ab43fded3da139d5ae296cfe70bc27a7ffb4b2f106d5","tests/fixtures/invalid/control/comment-lf.stderr":"71725b218014e5ae260d5075f6bb90477e97c946e27a40c797710a190d586a58","tests/fixtures/invalid/control/comment-null.stderr":"39ca1697c9e13969314368c85401dbb141ee80f514ab4a359ea8e74880e33d28","tests/fixtures/invalid/control/comment-us.stderr":"1d8c3a908fb274503d357bdc428b82c97fd9f9b37681be09129a46454f31e0cd","tests/fixtures/invalid/control/control.stderr":"aa1ae71dbb29473161d8f82a163e6862f78c7c55d4831574e6994651fdccdb19","tests/fixtures/invalid/control/multi-del.stderr":"812c0742dab1b933689c925dd1cca16ed185d091acc51026e8fc6585c0401c00","tests/fixtures/invalid/control/multi-lf.stderr":"3d2ac666d19fc3d0fe676b4897557fe3735c43da64b4a71577c04445a1341a06","tests/fixtures/invalid/control/multi-null.stderr":"9fec8ad3ba45ddb96ad3b6a118b4fa648056e26a9128528b2c0a8fa3b01e741c","tests/fixtures/invalid/control/multi-us.stderr":"a4769a44b32457fbc791b15b442293f37c936d2394ca9aa87ad5c964dc7cbb35","tests/fixtures/invalid/control/rawmulti-del.stderr":"b2dd93070d5bb09e19ea6ca015cfa1ef279ac2cf5e7fb242d8b74318f5d8418c","tests/fixtures/invalid/control/rawmulti-lf.stderr":"7e1d64429ed08f831783bace226535852bcebb48aae05541590fb242491cd7e9","tests/fixtures/invalid/control/rawmulti-null.stderr":"84c04cc89a6bc716b6f7811142899014abdb0b49c4ea56bc163c19220b14c323","tests/fixtures/invalid/control/rawmulti-us.stderr":"4e4566a74bde0a055d2e5a0dde72d41208c2ed188175b11c9e46167dff231d3c","tests/fixtures/invalid/control/rawstring-del.stderr":"c49c702bda4ed350dec4fc43edecb16202f8e5f1f4b02b06b42b2109d775a9b5","tests/fixtures/invalid/control/rawstring-lf.stderr":"5b11decc012a95bde096088a285eaaad4b8984f6d683bd633640141b19135530","tests/fixtures/invalid/control/rawstring-null.stderr":"eafa2a63e9d12293b290405049457860a8fef70de56c4ba2f203e5f2c79a8634","tests/fixtures/invalid/control/rawstring-us.stderr":"b3d8e5dcb1c66b93f2543ea325a50decb62178a5f0bea59fe64b04d89472b25e","tests/fixtures/invalid/control/string-bs.stderr":"1b35fdd656fb29e3011e5f4302fd37d0354922a21e740eb947dac766cebf3200","tests/fixtures/invalid/control/string-del.stderr":"ec80f70e9aea38e11191e50e9dfd80415de5b0406608c935aae8b8dbed9a8a7f","tests/fixtures/invalid/control/string-lf.stderr":"f91e1e0035af8ff259ff98c79097f845d8be8886629a93da962daba1079cb382","tests/fixtures/invalid/control/string-null.stderr":"fe34d284c478853bad94235aac1f37ac3c591f97e12990847b5da0b6c99bd47d","tests/fixtures/invalid/control/string-us.stderr":"dce016319c9fa0981f03cfd8b2b1d52d2d847697ea88e037f5a0e28bb53d8830","tests/fixtures/invalid/datetime/hour-over.stderr":"bd2220bdbaa96caf3d2aaff640620e4856bffb722a0e5be61dcb5283ffd08056","tests/fixtures/invalid/datetime/mday-over.stderr":"de9d27d65c68dd09da10c229167ce881dfe0ebda457badfe24b7598ae80c47a6","tests/fixtures/invalid/datetime/mday-under.stderr":"18daf3ce2a6a972476ccabcf92690a488e4f3be804dab8458da2aebad22a2c8c","tests/fixtures/invalid/datetime/minute-over.stderr":"a29009d3f7a6b1d9afad2420f223d6a6e02df8149577547837f5eeec4075bb9a","tests/fixtures/invalid/datetime/month-over.stderr":"37a203b22c3b2510541e413ff347447f9f3319a896ee005b96f65bc0d68150f4","tests/fixtures/invalid/datetime/month-under.stderr":"24c554595ca9a999a1d8e1ef7dc28b443f2f0ad6e17337ee157fb18bdcf678c1","tests/fixtures/invalid/datetime/no-leads-with-milli.stderr":"a35c496884e921aa086c1404bc812ff74f2bfd347a3ecd96640942be5555afbb","tests/fixtures/invalid/datetime/no-leads.stderr":"2e20cb60a1ecee85b172d1402e4d8c425362e4db607706bd39494385dc6dc98e","tests/fixtures/invalid/datetime/no-secs.stderr":"65871ee020e645e737c363b22cf43c160b295871cd4ac97a37d3ea46f60e3250","tests/fixtures/invalid/datetime/no-t.stderr":"ff50b85f6bc0d49000ec6f1303fda9b44bf934c2ede61743363411bbf6ebecbb","tests/fixtures/invalid/datetime/second-over.stderr":"0ed555a874efa08b711b5227501208758d87a01ad8360cf76c3dc8761807fac4","tests/fixtures/invalid/datetime/time-no-leads-2.stderr":"f725d49ddb5af69b7285f071d68e3d8441d5e331adcfd8c025c1f3cbb68028a5","tests/fixtures/invalid/datetime/time-no-leads.stderr":"cf06f3847f3d14655a94d8cfd5a6984dc74115b1d3cdbee0662ef215738bbf65","tests/fixtures/invalid/datetime/trailing-t.stderr":"87a15cd62bbe7cba2b942fe424c045ce30a12fe439a1b49587a5cc037ffa6b09","tests/fixtures/invalid/encoding/bad-utf8-at-end.stderr":"518dc443f0404d486b40bbbd152870276016795b05f3cc8a1de64a0e08fcdda2","tests/fixtures/invalid/encoding/bad-utf8-in-comment.stderr":"e0f252d14c18ea072c098834997db8e5f68b807bb0fa6d3d34e4042a5ea6fbb7","tests/fixtures/invalid/encoding/bad-utf8-in-multiline-literal.stderr":"2328a89cd9043de10ee656f4ea0dd5e6491fd8c0484ac36099c23161dd7a2625","tests/fixtures/invalid/encoding/bad-utf8-in-multiline.stderr":"2328a89cd9043de10ee656f4ea0dd5e6491fd8c0484ac36099c23161dd7a2625","tests/fixtures/invalid/encoding/bad-utf8-in-string-literal.stderr":"eefb00fee073933fbdb95d24a9e7050c281d4719d0cb970c2c06a71a86f108b3","tests/fixtures/invalid/encoding/bad-utf8-in-string.stderr":"eefb00fee073933fbdb95d24a9e7050c281d4719d0cb970c2c06a71a86f108b3","tests/fixtures/invalid/encoding/bom-not-at-start-1.stderr":"bd4e557b8b4586cdb39a8fde46f0bb214954f9f8ef37be46e2cc19823f6d6919","tests/fixtures/invalid/encoding/bom-not-at-start-2.stderr":"27003a498cb355011782dc21f01e15457490b78c472bb9ddb54147413c8f597e","tests/fixtures/invalid/encoding/utf16-bom.stderr":"a8800edcb8f6184b712da53e74bb787c39eb891073575acbae1ad575f15043cc","tests/fixtures/invalid/encoding/utf16.stderr":"edb66c01034865f484ccf7921bfcec1efaa8599762cb9cd30c9c8103275bc4e6","tests/fixtures/invalid/float/double-point-1.stderr":"2917901dd186adc39cb5965faf388fa2babe577ef3bfcadd4919232868a727cf","tests/fixtures/invalid/float/double-point-2.stderr":"7eda489da0436d6f0f2268aa4005b422d215b4785af0c1696c8731908a563f17","tests/fixtures/invalid/float/exp-double-e-1.stderr":"e64082e328fcfbeff57e6801448c769b12bc8e879b77421b688b2e147e386713","tests/fixtures/invalid/float/exp-double-e-2.stderr":"5c45326ef7287ea16a9e08275222e281b5d61c9322f8764f6533707f9772e255","tests/fixtures/invalid/float/exp-double-us.stderr":"ebd30aa3f7cd3a0a5e79bbbde1beff209d24f4ab58eb5552c1baf0eb2194e97b","tests/fixtures/invalid/float/exp-leading-us.stderr":"19c8f676dd45a5db09bd5baba5c3e7b661e83099a340331ee6bb10defe679569","tests/fixtures/invalid/float/exp-point-1.stderr":"23e73e4e63db888546866967a1c0319a1db269f23ee9c277b298e9f2db88800e","tests/fixtures/invalid/float/exp-point-2.stderr":"633328e085fb04d6a79cdfb696f45a1836c3a8b6afafc4cd5e16d48465aa4613","tests/fixtures/invalid/float/exp-trailing-us.stderr":"d633c5a44a55dc2b6cac18f739cecb33526f31d85f72cada0ebf70c4cca56dcd","tests/fixtures/invalid/float/float.stderr":"cc664d16849deec2ae7ebee6a3f46923bd5959075e282315c4f60461cdb13a0f","tests/fixtures/invalid/float/inf-incomplete-1.stderr":"38cd906dfee7f13b8cbdb27f3406ab0499fae3ae16f3c77bc7fc48d009595d93","tests/fixtures/invalid/float/inf-incomplete-2.stderr":"97a9ae1ff194a95b5be2abaf2cd8179ada832cdd9fad349efa9951e7ab92e435","tests/fixtures/invalid/float/inf-incomplete-3.stderr":"034bc609343ecf1e659d6250f719e5f93512e8140228e44e57b538765e58a1f7","tests/fixtures/invalid/float/inf_underscore.stderr":"621326dde26e5364c7af1b562fb651f4184d9b5fc9bc45edc12f52b588d506bc","tests/fixtures/invalid/float/leading-point-neg.stderr":"d19e28ba2f11069800df4dd1951025aa7f75425f7258e8caf4bbf6abe0e84bc9","tests/fixtures/invalid/float/leading-point-plus.stderr":"10750e9acccb17f0682db30fb175d083d06c822a4863d3d6b8ddb6c75b7b22ec","tests/fixtures/invalid/float/leading-point.stderr":"2545b7a615528595f5d53a7338403c83a8587e70600b1501225446e5f456c805","tests/fixtures/invalid/float/leading-us.stderr":"dc958138922097b2e1e3865c7818604b2249268af4acbe5cafe0ce8c68a90a86","tests/fixtures/invalid/float/leading-zero-neg.stderr":"d1fad35fa8d18f93ebfdf681d3476f02600e5c39cc942ca9bc36181476cbbe53","tests/fixtures/invalid/float/leading-zero-plus.stderr":"ad8ba7a7c12cb4b296cc0d43915106732e6a6a713aea67034587d1fc0c8093df","tests/fixtures/invalid/float/leading-zero.stderr":"cc664d16849deec2ae7ebee6a3f46923bd5959075e282315c4f60461cdb13a0f","tests/fixtures/invalid/float/nan-incomplete-1.stderr":"f4bee0b1c639bf800fc4dda38276142e715cd85ab6cc5e93ae2112ea63d7de89","tests/fixtures/invalid/float/nan-incomplete-2.stderr":"dc908ec577d29083bfd709fc4bdc2fa641d7fb2ba77a5d7441215680a8839d69","tests/fixtures/invalid/float/nan-incomplete-3.stderr":"abab5a41e0f2f1bad2d2050d0c913dfd8c15e50530d53ef8de327f106f564e02","tests/fixtures/invalid/float/nan_underscore.stderr":"25b67a7d6c743f673be7b409c9990de5de8b52a1d97c32e6f4e62f33147f1872","tests/fixtures/invalid/float/trailing-point-min.stderr":"69ad03ae81990d580a6d63bdd5ab594de00c0a16694c8671704c6243b4578b38","tests/fixtures/invalid/float/trailing-point-plus.stderr":"fba0bbad890020fe943e9f23644e81bf0bb7d114230fe16182e866fddcfc108b","tests/fixtures/invalid/float/trailing-point.stderr":"2f12b368fd94304ab0126ebb5888c519475f9ca28e9ca702c477cf0085ba9216","tests/fixtures/invalid/float/trailing-us-exp.stderr":"2ad53ae4736ce5134921acf0c16bc5031627c0da3119edcdc4bd7eb300d40337","tests/fixtures/invalid/float/trailing-us.stderr":"506cb8051f1045ea1dc7f11865d58cbca0216502d273e1c10366c8be7cc9ab43","tests/fixtures/invalid/float/us-after-point.stderr":"fa9fb59f703b6770be3dc094c04eb2c4add8a7a7ab79d9fe508cfeee785404f1","tests/fixtures/invalid/float/us-before-point.stderr":"14e09a7a382e249e5143d1c81d6e4623408eb2d505e1e3f86c370a3a3bf6cd9e","tests/fixtures/invalid/inline-table/add.stderr":"bf95d34749254300f4179ed1314cc9cabd7c7b63fc2453fc7adbc7869b63be4a","tests/fixtures/invalid/inline-table/double-comma.stderr":"2132a1c4d97fab140089818f990284333e22ef91d20a9f65e11d4dd15b1a701a","tests/fixtures/invalid/inline-table/duplicate-key.stderr":"72bea73b20005f15ced977aae70a1b0f3bbe3e35598231aca9a2303d770efdc3","tests/fixtures/invalid/inline-table/empty.stderr":"604fef40337f04e5f37a52239d6509850aba95677a7a94ca8476a6c21b648a43","tests/fixtures/invalid/inline-table/linebreak-1.stderr":"45b0611d37c1ece88bf6c88b3528adc3d73e0cd3e3b24dcf07ab151023a6f488","tests/fixtures/invalid/inline-table/linebreak-2.stderr":"f7672965326b44adaf0cb4796a087fbe779a8b17fbb458090a33375d0c54e5b4","tests/fixtures/invalid/inline-table/linebreak-3.stderr":"e8c70f0c91b15e701567e93d8df1cd3bec593696af05ec1d95e8f9e00ab20fa6","tests/fixtures/invalid/inline-table/linebreak-4.stderr":"3d31147f9e1ff5f94384e4df1675dfff2da6f076cb0a729771615f05b990be91","tests/fixtures/invalid/inline-table/no-comma.stderr":"9f1c85e0df72c7e7e011c26a0d5dd9dea8b7a5e18c3ba9a53ff4a20a9429dce9","tests/fixtures/invalid/inline-table/overwrite.stderr":"812d1bc74d07750048a521e513a565676e606d4fa1a32d2ebda7af8fa064d3ab","tests/fixtures/invalid/inline-table/trailing-comma.stderr":"4791911dafd6602e2891d6ffc4d32ef8e9d0c1f8f6d37e84d440feb896d9cb88","tests/fixtures/invalid/integer/capital-bin.stderr":"fcfc8b0bddd36a641d3f5cc2ceee88554619fabf6874e11cdfdd147be8781881","tests/fixtures/invalid/integer/capital-hex.stderr":"c8e2d64f9659435a0387bb7e6447896eda253fef77e0214a4073fcffbac693a7","tests/fixtures/invalid/integer/capital-oct.stderr":"ec465fa25da212b0c9b6265ac8e9cd05c1fa07d614dafb3bc9b2ca74d6c2a7a7","tests/fixtures/invalid/integer/double-sign-nex.stderr":"8d57da526240c1cf73423b688442922ae291ff26e3c09f9c3b5b150e62e5cbaa","tests/fixtures/invalid/integer/double-sign-plus.stderr":"55896d9bd19637e124482966a12109a1a8351620ddc6f8d28553d70359f523f1","tests/fixtures/invalid/integer/double-us.stderr":"f14ed7bd3ad26b2203763fa953dd6e99212e50fb8e43a4eaeb115c1a7df4fc25","tests/fixtures/invalid/integer/incomplete-bin.stderr":"64168fc7ede87a10c12f82325fce644a7d9b9c3af55a313184175df7926845e3","tests/fixtures/invalid/integer/incomplete-hex.stderr":"ed2423540e288f4673bc68822a799bea04f571db5de56154e10360b03ab79553","tests/fixtures/invalid/integer/incomplete-oct.stderr":"9ed35e3078703a38996f20dc3e86477149564c8abd237c644bdf3a5ef26e3417","tests/fixtures/invalid/integer/integer.stderr":"ed5ef991b733b3d51700364da18bf58f1b7eb68053467afcbff22775b3b82788","tests/fixtures/invalid/integer/invalid-bin.stderr":"7248d47f2c7db309254a3a41af28bc1a6e96bfa95e0c8c94d607f65a1a30cee6","tests/fixtures/invalid/integer/invalid-hex.stderr":"3976255c6fe35a1e29f0fed7324eee8420ababd0f6f1f7702908c3df47c88846","tests/fixtures/invalid/integer/invalid-oct.stderr":"9f6776e33887cb446a5590d8fe4e51c36747c634cd5e4efaa84f807d3ce244e0","tests/fixtures/invalid/integer/leading-us-bin.stderr":"28edc918ac016cc9cb7b0b20fe2a5e1dc0175de0aa8105d7a6ca263815c6e4e7","tests/fixtures/invalid/integer/leading-us-hex.stderr":"2a1a5943399c8ba5849ba569411bfefc8323659c852bd714ca917231f6212ef0","tests/fixtures/invalid/integer/leading-us-oct.stderr":"aad69bdd80f94e907bda03558a1302e54d58d8911fe2b564e93cb0ec48403b09","tests/fixtures/invalid/integer/leading-us.stderr":"3a265cc11f1b0d43d4b532a47776486ec7c7ea7afe70813ab00c5a37cf87a9df","tests/fixtures/invalid/integer/leading-zero-1.stderr":"ed5ef991b733b3d51700364da18bf58f1b7eb68053467afcbff22775b3b82788","tests/fixtures/invalid/integer/leading-zero-2.stderr":"5c70e7874256512c0ef6bb364497d4e10154e994056f2feb7c5c729016522091","tests/fixtures/invalid/integer/leading-zero-3.stderr":"fb2730feda6f669a3b8c4332f01369e52ce1b942807f1bf3d9762b1fea04aeac","tests/fixtures/invalid/integer/leading-zero-sign-1.stderr":"c9d2d992eea36c4fe228eb74741bd8d0ede1e354cad132b79462e7b502b37f95","tests/fixtures/invalid/integer/leading-zero-sign-2.stderr":"4248329b339020cc2ea586f2775a0b4f4cbe2ae3f0f75b935263363b8be5eaf5","tests/fixtures/invalid/integer/leading-zero-sign-3.stderr":"3b414808727d3a446efdfca0033525e17536f9b54104d8a9cb9278b054d213df","tests/fixtures/invalid/integer/negative-bin.stderr":"74aae673b861bd46544e4835fe7075e20158dd69e27f75c790d48a6006476c73","tests/fixtures/invalid/integer/negative-hex.stderr":"799bd8120f4cf2c36e7f65a5f9aa43a3ec87dd95dd3bf68501059da9f21f8c9e","tests/fixtures/invalid/integer/negative-oct.stderr":"fb082674d0f5a8a231c91c2d34cf47fdeece4c8c5c8c7b23fb09fce95ed59a9f","tests/fixtures/invalid/integer/positive-bin.stderr":"54d8a33743737f374480cd1235bf3f7e0847d252ef7e2bb1d447529cbc0f6692","tests/fixtures/invalid/integer/positive-hex.stderr":"3b21b23cc3dd6b213a19256f4ffb4bb36172de2f739f90bbea78636f7a50524b","tests/fixtures/invalid/integer/positive-oct.stderr":"cc493d14bcb092f49b517fa5143e29c45020d491d94ac662f85b2af34805cf11","tests/fixtures/invalid/integer/text-after-integer.stderr":"07a13ad4841a452eff00947234a4ebac4d209ea0294162888db35668648bb55d","tests/fixtures/invalid/integer/trailing-us-bin.stderr":"62da06cf06527b9e9cbeba6c5299ce6001d40592e9d007c8350090977f4d1b58","tests/fixtures/invalid/integer/trailing-us-hex.stderr":"1b290eada58a7202b1a9251afd8e0e72a4caa8ad5c85036d1050e7de8141e94d","tests/fixtures/invalid/integer/trailing-us-oct.stderr":"34e6f86ffb0099e6e1ba67deb51e36af62dfce4e7299b94503a219339bf16447","tests/fixtures/invalid/integer/trailing-us.stderr":"3ab49ee921eb772f5aa4eaf0fb3619b1dcd9a9db3f4ebbd9bc505581a985e753","tests/fixtures/invalid/integer/us-after-bin.stderr":"a94a87ebab3536899ce7c0c785f020b3a236c60d24c0bd7494628ca310c40768","tests/fixtures/invalid/integer/us-after-hex.stderr":"9009b187f615f06e3392eabd8ffa58311ed1c2b1cd76f8c5bd99671242f2e026","tests/fixtures/invalid/integer/us-after-oct.stderr":"05af70a21980416fbd602337f9af22a1c600a294635d10ef1ca1b2138338e712","tests/fixtures/invalid/key/after-array.stderr":"487d957b20226ac36e27d6efb1e3d24147284c9a5e10a0188427a1c940d31ef0","tests/fixtures/invalid/key/after-table.stderr":"f70e84770817f096fcc1b6195c6b0a79d25210c6930ce412a89646040ee3d713","tests/fixtures/invalid/key/after-value.stderr":"00d4d2d3ccd61f64a92df0ca575aeafcd96e91d053d835ca855973339ba458cf","tests/fixtures/invalid/key/bare-invalid-character.stderr":"b1f64d54a43017e6cc09755fa7ba477901721d23f9271ec658fc9362f46631b3","tests/fixtures/invalid/key/dotted-redefine-table.stderr":"564febb355d1556df42f428a046ac6fdc5dad49b2b736be5824b0c13fcd1fae9","tests/fixtures/invalid/key/duplicate-keys.stderr":"7c9dfef2ef19b1487b7592a267ab5ba21c8b833dfa9ec1c3151e369c2fdba26e","tests/fixtures/invalid/key/duplicate.stderr":"764ef48bb06c9096c853b1156c8d29ba0065616939a5335146f5af88a424cea3","tests/fixtures/invalid/key/empty.stderr":"af6d3636ca73e5496c40d9c918c59b61fd86812db262649e5268094193873130","tests/fixtures/invalid/key/escape.stderr":"155aa9389f0eb28cac3b42974af7ea9e2eef8d96f084f08f9f75e960fc8ce8c7","tests/fixtures/invalid/key/hash.stderr":"85dd91b96aa4f81cc7922b02b411f25d9053bddd1e5b893c2a2ee9d0115a7cac","tests/fixtures/invalid/key/multiline.stderr":"d625f2caaf01d53d72d6f1c3df0952fe3ca8c5f3b081503cb02b9994c088b733","tests/fixtures/invalid/key/newline.stderr":"714aed0a140062f977ec85b9afa50f68448c67e806168e60b4f4554ab270b2b9","tests/fixtures/invalid/key/no-eol.stderr":"440ec927e94f0e520a0f256c865041f0478e1c82f3bb79323b7ddc36fc942edf","tests/fixtures/invalid/key/open-bracket.stderr":"3b36814373f51a8ea00a448d65bc514e8d99f5163b7dd8101df62bcd0a06e801","tests/fixtures/invalid/key/partial-quoted.stderr":"dc9059a014ed53071ed170b1e280923556dc09e0be2ae96cc8474e9da59fa378","tests/fixtures/invalid/key/quoted-unclosed-1.stderr":"6cdec8a7c5352a2f246273afaa923dfa81d4d2e68cca5b4f9a19193559b164c2","tests/fixtures/invalid/key/quoted-unclosed-2.stderr":"b4817e6f85a90fbb6adf049ba57c268f9888f1b42b3d62200c359606176170b1","tests/fixtures/invalid/key/single-open-bracket.stderr":"917c0203d1e45309fcff82ce33fdd2d989f630fb99290a40cb9e08a6f7ca0ef8","tests/fixtures/invalid/key/space.stderr":"3a5fa712d667890678873e3d4e4cabb084c67091c5ec6155355d5bd4229585dc","tests/fixtures/invalid/key/special-character.stderr":"a84c2f293c1e421a1c87050cb0211de80dbfe7a79939db0338fa35bf0c181ef2","tests/fixtures/invalid/key/start-bracket.stderr":"223d8a22bf34459cd9bcb993ae2a51ab3cc436674e3367e92f7d74e9f8710a45","tests/fixtures/invalid/key/start-dot.stderr":"f9366a1492ae24fd0721724b4039d2675e91219de564aff2826adefd83fac571","tests/fixtures/invalid/key/two-equals.stderr":"a0aae899cfa75df41104a4d3090a309fc7ebcd95bb5a944cf742f3d3fc9d4782","tests/fixtures/invalid/key/two-equals2.stderr":"861826b9456ab3a74f63f5c555e13d959a3991dfa6ce126ae5ed14d43f7dcee1","tests/fixtures/invalid/key/two-equals3.stderr":"71614864344e321ac5de238b7ef9d097c6d7f3ac3eee4118d96827b4b8bd6658","tests/fixtures/invalid/key/without-value-1.stderr":"16c2823a39a82c3c27e0959a691b7a95e3392d62195884697893d373b967b9c0","tests/fixtures/invalid/key/without-value-2.stderr":"d340f94f5d96f5730ab269db7ef27aca171d64e35af1181c474d75a7d11d6590","tests/fixtures/invalid/key/without-value-3.stderr":"3cf3072fe9206bfe6c682103d0414627a5a63db4c4a319cf37efeb5fe6b92007","tests/fixtures/invalid/key/without-value-4.stderr":"07132bec96e9a9a672bafdc3c448b7c596257245f8c3e2cae04641f9798644ec","tests/fixtures/invalid/spec/inline-table-2-0.stderr":"5ad1a938b1d1f0f3fdbd1871efdebfd30e136407ecdd9e2eff22150d00624b3f","tests/fixtures/invalid/spec/inline-table-3-0.stderr":"fcbc05e911b7db81bd918768fe98a51a7026fd476d616718cc417d2f08bcc1a1","tests/fixtures/invalid/spec/key-value-pair-1.stderr":"d5391142dfd56040840cf91b1e28e3c048229e3d9998534d41001cd6657f9bd6","tests/fixtures/invalid/spec/keys-2.stderr":"3c4ee6066fc75d2c1f1b325f618a01113694c318e330ff4f237e89127f332c87","tests/fixtures/invalid/spec/string-4-0.stderr":"910ee4b240159b828a7509c8dfb46507071a8d8636f3935a3914d6d91f315295","tests/fixtures/invalid/spec/string-7-0.stderr":"5128f0a930b3034e494a6bee4f384a587e9fd858b25f8cc529a488c94ee9670d","tests/fixtures/invalid/spec/table-9-0.stderr":"49dac70d337266f5c6b333fee468f279fed1bff62bfb4ec7436c8b6683ce0dd2","tests/fixtures/invalid/spec/table-9-1.stderr":"d9e071c70356c01b6537f876989ad2067e7773dd5eb24a298439d192dbad12d0","tests/fixtures/invalid/string/bad-byte-escape.stderr":"14f6ae446b3b8cb434267eba11c6ec5a1badef4f867169b173698cf9f1a29d95","tests/fixtures/invalid/string/bad-codepoint.stderr":"e5a9704b87fe85e447e817197ad4e59e27b33bd93e7c5ad3987561d119ce6ee4","tests/fixtures/invalid/string/bad-concat.stderr":"499219633467b9174471db40543ca188e2b906c470e511d2f701f5f5475d96be","tests/fixtures/invalid/string/bad-escape-1.stderr":"34a15ce7012217c62d31d5392038517c216f0cbfd5d75fb5f3c2bb07afd3f25c","tests/fixtures/invalid/string/bad-escape-2.stderr":"955aab40b16043c847d85d04e6adcd093c930dd8416d29c2ab5953c077eac6f4","tests/fixtures/invalid/string/bad-hex-esc-1.stderr":"aea935cf1e17743356e6fb1059afed2d0ee5262906594782e5537a025398038e","tests/fixtures/invalid/string/bad-hex-esc-2.stderr":"deac5217cf80acc759e1b40c43f5f56431b276dc2c896aae5490d57583105e06","tests/fixtures/invalid/string/bad-hex-esc-3.stderr":"94ecf886427e8fe5daf1d8f932bf1887f2533b10bc1f57cb6de03ea28fef466f","tests/fixtures/invalid/string/bad-hex-esc-4.stderr":"382b011dd4070554ee875fde06703d8332ef6ad36f3619f3536b0a4997ee2745","tests/fixtures/invalid/string/bad-hex-esc-5.stderr":"a8a039fae822eda68591da28ff2a117b5d85e99d066e9126ebbb6426a1cad52d","tests/fixtures/invalid/string/bad-hex-esc.stderr":"aea935cf1e17743356e6fb1059afed2d0ee5262906594782e5537a025398038e","tests/fixtures/invalid/string/bad-multiline.stderr":"141e5770190dd184bb1f64f6bb14fc017210bbd918ab5c8b7a3d80b86b21772b","tests/fixtures/invalid/string/bad-slash-escape.stderr":"d62f894ee166bddf84432507fb4ba56473c0a230fd88a3ccc2b199a72a34e613","tests/fixtures/invalid/string/bad-uni-esc-1.stderr":"d1d6e0c78b64f776a428aa7cb332b0ccd659d24950dd3e8f1d2a1450f61b37e5","tests/fixtures/invalid/string/bad-uni-esc-2.stderr":"d8ed938bafdeda05c083d79ed73f5043dabe0f5f1515c6857ae7a61db9026ebc","tests/fixtures/invalid/string/bad-uni-esc-3.stderr":"de1c29897549ae37988a38e1c370f9974fcbf7d4c4b3fd457d731999cfc05929","tests/fixtures/invalid/string/bad-uni-esc-4.stderr":"4e5a715e8dc212d073d399bb0ae9b49413396744282a195c34cb03e6f4fbd9eb","tests/fixtures/invalid/string/bad-uni-esc-5.stderr":"2419cd927d8e31ebf5025558e70bb1295d98bdb36c17f0e00620b9c4a7aadbf6","tests/fixtures/invalid/string/basic-byte-escapes.stderr":"b42fd0273c7438bf13ddea9552204bb9209cdcc8e4151311d2446185d2cd546a","tests/fixtures/invalid/string/basic-multiline-out-of-range-unicode-escape-1.stderr":"725cd4955987c3d6e736832281316d6c1a2446303e9a1dc78900cef4bb84ee64","tests/fixtures/invalid/string/basic-multiline-out-of-range-unicode-escape-2.stderr":"c6698fbdb95188d53bfdaa4a4f590d86a73aafcc321a5d9511ab43ce51be1c78","tests/fixtures/invalid/string/basic-multiline-quotes.stderr":"28177a49532f22aaffc9dc204592a2c5eca2fc20f8e208b7c7f589201e8b7de5","tests/fixtures/invalid/string/basic-multiline-unknown-escape.stderr":"a83406b30eb3ab2cebb0230d8d65d0b7583885138f2c070976ae61de2c8b17f3","tests/fixtures/invalid/string/basic-out-of-range-unicode-escape-1.stderr":"19af67599c6c2eef340c9fdb0ab2cc788928def50280af939247a1274447781f","tests/fixtures/invalid/string/basic-out-of-range-unicode-escape-2.stderr":"0e2e1a69358502ec17a07e4fc151b70e8a3b5123798cb38f98fe2d146515a84e","tests/fixtures/invalid/string/basic-unknown-escape.stderr":"1de467948fb18f61336350063701d9c5a6615054fe740a9be650f71f5ca4236b","tests/fixtures/invalid/string/literal-multiline-quotes-1.stderr":"249123229606aa8eedff1b5bdead5022daf470e47dbca639e32019d1d61dbcf9","tests/fixtures/invalid/string/literal-multiline-quotes-2.stderr":"d9784af1ff056a90bf531307749d53a5d24ffffbc0f4aada7fcee417a50d1615","tests/fixtures/invalid/string/missing-quotes.stderr":"462f24701d2c51d36b18d06b69be2f6eb36449b5f3ffbaa737fcbd2b2151ae4a","tests/fixtures/invalid/string/multiline-bad-escape-1.stderr":"18469c4d37d011b3f30ae17e3111b5e8a9526d593475e5d8d7a9b19461a40e8d","tests/fixtures/invalid/string/multiline-bad-escape-2.stderr":"d43896d3005c8470dc8149e2b74eb8825c6d9fedfe9f48125ad88a95c1dc3035","tests/fixtures/invalid/string/multiline-bad-escape-3.stderr":"92f732c6bcb922e25d2a001a389f93b596dd0e91109cbdcb651efa146309dc2a","tests/fixtures/invalid/string/multiline-escape-space.stderr":"94b451b6c03055186777a248cb216f95a1b2e29df25549f345d96bd0a4e63f1e","tests/fixtures/invalid/string/multiline-no-close-2.stderr":"e500e99a44305b1e148b211e963478cf1554f8c9536d3108390cf41d5b2ce069","tests/fixtures/invalid/string/multiline-no-close.stderr":"d5b9602d23b0cb023fbe3ae80d862fd60332475ba8863a1e977f17cb326a4548","tests/fixtures/invalid/string/multiline-quotes-1.stderr":"046956658c0a73e665e7a6a2044ff83c8efb8cdd8c2ab153c163eb1e61068c56","tests/fixtures/invalid/string/no-close.stderr":"3ad8aff0932d98592b808fc6f44fa68a854097f8025e92c11af1acb6de3d3cc7","tests/fixtures/invalid/string/text-after-string.stderr":"1c1e4677be8d3dba0e7933b3ed1cbb6e0bcf6f600cf9a989a7b09c9424a4d0a7","tests/fixtures/invalid/string/wrong-close.stderr":"441f4f1b73c11c8dbf2f73cf9a7766f17a9517b3b9142e86736ed43eaec07f18","tests/fixtures/invalid/table/append-with-dotted-keys-1.stderr":"a67f1f152005295e0a1bb3dcaaa755edd05f19ac5316b8ad2eb4d45797e0f770","tests/fixtures/invalid/table/append-with-dotted-keys-2.stderr":"72d9ea8a90b4d9e5319c2bf951bdde6a87a205612e82ed5a09cea2b706bfde7f","tests/fixtures/invalid/table/array-empty.stderr":"e8a41c60adf7756361920816b6c4f44125a813c869b71fae2c98473e4da1b231","tests/fixtures/invalid/table/array-implicit.stderr":"7797ce41aab0567fc9d40e277cc32c12e1f16ffc0e73857fdb3bbf754246305f","tests/fixtures/invalid/table/array-missing-bracket.stderr":"5f1e8703d59398f6595d21ed0abcc7dc3ce77943ad0f71eede9ad63ea2bcc7c1","tests/fixtures/invalid/table/duplicate-key-dotted-table.stderr":"ca58908463cbe2ec6b3de314237c178fee64245cc738c72a7b9e08bb3d02b2b0","tests/fixtures/invalid/table/duplicate-key-dotted-table2.stderr":"cb59f2ed324642de947f3cd9373ca111ec35104a5f33578f64c48084ce1a84f5","tests/fixtures/invalid/table/duplicate-key-table.stderr":"f4816522738b3e2ace87d1100a3d73e6a122d8dc67d05e0b35a1438e16a8952c","tests/fixtures/invalid/table/duplicate-table-array.stderr":"11d293e4b4f205fc98cd892f25a25f533cb922c963ecf095a932d2e9d550be4f","tests/fixtures/invalid/table/duplicate-table-array2.stderr":"fa9cd3b1212eed14ec56b66a16471ac2f7c0398d743982abb7c5cb4b5c7a5fe4","tests/fixtures/invalid/table/duplicate.stderr":"3e6d1b1a2f44d449e8cb0098e7c40ad1e755363b446f3821c399abfb26eb9939","tests/fixtures/invalid/table/empty-implicit-table.stderr":"cd3606ce97c5537d18146cd978403636a65fa703c83616da75b8cafa86e8fa24","tests/fixtures/invalid/table/empty.stderr":"4399e419abbcfbec93f5915e7fbdd11b6e462a4c066a29eacda159abfc588734","tests/fixtures/invalid/table/equals-sign.stderr":"472de6b908a03c99637b635a3a898ed956684ae422e1b4b135ec94986ea45f2d","tests/fixtures/invalid/table/llbrace.stderr":"db6bbee7ed15994398901c46ed4b40904897e71f5d972deb7904ccac49cd834e","tests/fixtures/invalid/table/nested-brackets-close.stderr":"e1dff60ea8f77dd1b8fae7d1d63c788c838c80560172d92377cc168f5cb5923a","tests/fixtures/invalid/table/nested-brackets-open.stderr":"bd58eb0630dc0c51ebc288258d360d707c8f43a5877ddc21e9420f8eb76a2f4c","tests/fixtures/invalid/table/quoted-no-close.stderr":"6bf7e2d30c735a55f595140af7c7f6be89b6faf868f4473ea39570fdb87d5823","tests/fixtures/invalid/table/redefine.stderr":"3e794bce5bb6ae9f603f50e3dc62d136701ec478078e8a8e99c94229778e24ca","tests/fixtures/invalid/table/rrbrace.stderr":"342a5ff362c8b4c1e85a6442029291bd33165a3b36552794fcd5269249bf36a1","tests/fixtures/invalid/table/text-after-table.stderr":"6dfaf1fc3199f0602fea52f7b1c65869eb2f8643b9e90dc1e718a183fb972485","tests/fixtures/invalid/table/whitespace.stderr":"fa48d4dc83f92e729dc25c6fc6a0c336014391b4bdb3392998f18141d2deb350","tests/fixtures/invalid/table/with-pound.stderr":"97dbd1ceb7f357bd98cc1caa9a602c638aaa5831237b7d63b18153acc64d3af4","tests/invalid.rs":"daa9034453fb7f10718020e36a07a19664eb852071995f17480c595cb44e2cdf","tests/testsuite/convert.rs":"9140d681dbb9370b975d5bc1cd4e9e640ac4023c6789edcae544e66657ad5fe9","tests/testsuite/datetime.rs":"105d95570d05e9ecbc30bfe7d081f9d63e2f36634e9124da012f467c6134549e","tests/testsuite/edit.rs":"7ff72670fe971ce9cd3e94a9254d1f54ebc792d8881b688d397cd9a996f2d051","tests/testsuite/invalid.rs":"31789643e3419ab922f8258e5a0421e1648b64aa5b96d3e1fb79bae36abf286e","tests/testsuite/main.rs":"a363749a7074ee95e3b7c556c0b0f59f5818445ca4762ec53693f451359b268a","tests/testsuite/parse.rs":"3bd2b50bd735c6ef5ed276ce6409f068c3aa93abe2480f285c18a9c5425fbd96","tests/testsuite/stackoverflow.rs":"426d4e621bbafe62f8aba2e8c62e715929185d5eca4c5083b6427b601abc667a"},"package":"266f016b7f039eec8a1a80dfe6156b633d208b9fccca5e4db1d6775b0c4e34a7"} \ No newline at end of file
diff --git a/vendor/toml_edit-0.19.11/Cargo.lock b/vendor/toml_edit-0.19.11/Cargo.lock
new file mode 100644
index 000000000..1cea4cabf
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/Cargo.lock
@@ -0,0 +1,898 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "aho-corasick"
+version = "0.7.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "anstream"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6342bd4f5a1205d7f41e94a41a901f5647c938cdfa96036338e8533c9d6c2450"
+dependencies = [
+ "anstyle",
+ "anstyle-parse",
+ "anstyle-query",
+ "anstyle-wincon",
+ "colorchoice",
+ "is-terminal",
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41ed9a86bf92ae6580e0a31281f65a1b1d867c0cc68d5346e2ae128dddfa6a7d"
+
+[[package]]
+name = "anstyle-parse"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e765fd216e48e067936442276d1d57399e37bce53c264d6fefbe298080cb57ee"
+dependencies = [
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle-query"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b"
+dependencies = [
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "anstyle-wincon"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188"
+dependencies = [
+ "anstyle",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bstr"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "cc"
+version = "1.0.73"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "chrono"
+version = "0.4.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfd4d1b31faaa3a89d7934dbded3111da0d2ef28e3ebccdb4f0179f5929d1ef1"
+dependencies = [
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "clap"
+version = "4.0.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7db700bc935f9e43e88d00b0850dae18a63773cfbec6d8e070fccf7fef89a39"
+dependencies = [
+ "bitflags",
+ "clap_derive",
+ "clap_lex",
+ "is-terminal",
+ "once_cell",
+ "strsim",
+ "termcolor",
+]
+
+[[package]]
+name = "clap_derive"
+version = "4.0.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0177313f9f02afc995627906bbd8967e2be069f5261954222dac78290c2b9014"
+dependencies = [
+ "heck",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.105",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8"
+dependencies = [
+ "os_str_bytes",
+]
+
+[[package]]
+name = "colorchoice"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1"
+
+[[package]]
+name = "errno"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a"
+dependencies = [
+ "errno-dragonfly",
+ "libc",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "errno-dragonfly"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+dependencies = [
+ "cc",
+ "libc",
+]
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "globset"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0a1e17342619edbc21a964c2afbeb6c820c6a2560032872f397bb97ea127bd0a"
+dependencies = [
+ "aho-corasick",
+ "bstr",
+ "fnv",
+ "log",
+ "regex",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a"
+
+[[package]]
+name = "heck"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9"
+
+[[package]]
+name = "hermit-abi"
+version = "0.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "hermit-abi"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286"
+
+[[package]]
+name = "ignore"
+version = "0.4.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "713f1b139373f96a2e0ce3ac931cd01ee973c3c5dd7c40c0c2efe96ad2b6751d"
+dependencies = [
+ "crossbeam-utils",
+ "globset",
+ "lazy_static",
+ "log",
+ "memchr",
+ "regex",
+ "same-file",
+ "thread_local",
+ "walkdir",
+ "winapi-util",
+]
+
+[[package]]
+name = "include_dir"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e"
+dependencies = [
+ "include_dir_macros",
+]
+
+[[package]]
+name = "include_dir_macros"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d"
+dependencies = [
+ "equivalent",
+ "hashbrown",
+]
+
+[[package]]
+name = "io-lifetimes"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c"
+dependencies = [
+ "libc",
+ "windows-sys 0.42.0",
+]
+
+[[package]]
+name = "is-terminal"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f"
+dependencies = [
+ "hermit-abi 0.3.1",
+ "io-lifetimes",
+ "rustix",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754"
+
+[[package]]
+name = "kstring"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec3066350882a1cd6d950d055997f379ac37fd39f81cd4d8ed186032eb3c5747"
+dependencies = [
+ "static_assertions",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+[[package]]
+name = "libc"
+version = "0.2.142"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317"
+
+[[package]]
+name = "libtest-mimic"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7b603516767d1ab23d0de09d023e62966c3322f7148297c35cf3d97aa8b37fa"
+dependencies = [
+ "clap",
+ "termcolor",
+ "threadpool",
+]
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b64f40e5e03e0d54f03845c8197d0291253cdbedfb1cb46b13c2c117554a9f4c"
+
+[[package]]
+name = "log"
+version = "0.4.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "memchr"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+
+[[package]]
+name = "normalize-line-endings"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
+
+[[package]]
+name = "num-integer"
+version = "0.1.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+dependencies = [
+ "autocfg",
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
+dependencies = [
+ "hermit-abi 0.1.19",
+ "libc",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1"
+
+[[package]]
+name = "os_str_bytes"
+version = "6.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff"
+
+[[package]]
+name = "proc-macro-error"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+dependencies = [
+ "proc-macro-error-attr",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.105",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-error-attr"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.56"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "regex"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.6.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
+
+[[package]]
+name = "rustix"
+version = "0.37.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2aae838e49b3d63e9274e1c01833cc8139d3fec468c3b84688c628f44b1ae11d"
+dependencies = [
+ "bitflags",
+ "errno",
+ "io-lifetimes",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.45.0",
+]
+
+[[package]]
+name = "ryu"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.160"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.160"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.15",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.96"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1"
+dependencies = [
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "similar"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62ac7f900db32bf3fd12e0117dd3dc4da74bc52ebaac97f39668446d89694803"
+
+[[package]]
+name = "snapbox"
+version = "0.4.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6bccd62078347f89a914e3004d94582e13824d4e3d8a816317862884c423835"
+dependencies = [
+ "anstream",
+ "anstyle",
+ "ignore",
+ "libtest-mimic",
+ "normalize-line-endings",
+ "similar",
+ "snapbox-macros",
+]
+
+[[package]]
+name = "snapbox-macros"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eaaf09df9f0eeae82be96290918520214530e738a7fe5a351b0f24cf77c0ca31"
+dependencies = [
+ "anstream",
+]
+
+[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
+name = "strsim"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+
+[[package]]
+name = "syn"
+version = "1.0.105"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60b9b43d45702de4c839cb9b51d9f529c5dd26a4aff255b42b1ebc03e88ee908"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "termcolor"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "thread_local"
+version = "1.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "threadpool"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa"
+dependencies = [
+ "num_cpus",
+]
+
+[[package]]
+name = "toml-test"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37351256790aa1dbd6d60f4ff08e55e7f372e292f3e9040d6e077463d9a779c3"
+dependencies = [
+ "chrono",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "toml-test-data"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93f351b6d6005ee802b0d4a53ca1cdf05636f441df4d299e62cba57f1da52646"
+dependencies = [
+ "include_dir",
+]
+
+[[package]]
+name = "toml-test-harness"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e00fda5710922fe6b3005bf6a5050c303d6f9625249c37b7386e8818f4af675"
+dependencies = [
+ "ignore",
+ "libtest-mimic",
+ "toml-test",
+ "toml-test-data",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.19.11"
+dependencies = [
+ "indexmap",
+ "kstring",
+ "libtest-mimic",
+ "serde",
+ "serde_json",
+ "serde_spanned",
+ "snapbox",
+ "toml-test-data",
+ "toml-test-harness",
+ "toml_datetime",
+ "winnow",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd"
+
+[[package]]
+name = "utf8parse"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
+name = "walkdir"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
+dependencies = [
+ "same-file",
+ "winapi",
+ "winapi-util",
+]
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows-sys"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
+dependencies = [
+ "windows_aarch64_gnullvm 0.42.1",
+ "windows_aarch64_msvc 0.42.1",
+ "windows_i686_gnu 0.42.1",
+ "windows_i686_msvc 0.42.1",
+ "windows_x86_64_gnu 0.42.1",
+ "windows_x86_64_gnullvm 0.42.1",
+ "windows_x86_64_msvc 0.42.1",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.45.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
+dependencies = [
+ "windows-targets 0.42.1",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.0",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7"
+dependencies = [
+ "windows_aarch64_gnullvm 0.42.1",
+ "windows_aarch64_msvc 0.42.1",
+ "windows_i686_gnu 0.42.1",
+ "windows_i686_msvc 0.42.1",
+ "windows_x86_64_gnu 0.42.1",
+ "windows_x86_64_gnullvm 0.42.1",
+ "windows_x86_64_msvc 0.42.1",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.0",
+ "windows_aarch64_msvc 0.48.0",
+ "windows_i686_gnu 0.48.0",
+ "windows_i686_msvc 0.48.0",
+ "windows_x86_64_gnu 0.48.0",
+ "windows_x86_64_gnullvm 0.48.0",
+ "windows_x86_64_msvc 0.48.0",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
+
+[[package]]
+name = "winnow"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61de7bac303dc551fe038e2b3cef0f571087a47571ea6e79a87692ac99b99699"
+dependencies = [
+ "memchr",
+]
diff --git a/vendor/toml_edit-0.19.11/Cargo.toml b/vendor/toml_edit-0.19.11/Cargo.toml
new file mode 100644
index 000000000..989877150
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/Cargo.toml
@@ -0,0 +1,156 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.64.0"
+name = "toml_edit"
+version = "0.19.11"
+authors = [
+ "Andronik Ordian <write@reusable.software>",
+ "Ed Page <eopage@gmail.com>",
+]
+include = [
+ "build.rs",
+ "src/**/*",
+ "Cargo.toml",
+ "Cargo.lock",
+ "LICENSE*",
+ "README.md",
+ "benches/**/*",
+ "examples/**/*",
+ "tests/**/*",
+]
+description = "Yet another format-preserving TOML parser."
+readme = "README.md"
+keywords = [
+ "encoding",
+ "toml",
+]
+categories = [
+ "encoding",
+ "parser-implementations",
+ "parsing",
+ "config",
+]
+license = "MIT OR Apache-2.0"
+repository = "https://github.com/toml-rs/toml"
+
+[package.metadata.docs.rs]
+features = ["serde"]
+rustdoc-args = [
+ "--cfg",
+ "docsrs",
+]
+
+[package.metadata.release]
+tag-name = "v{{version}}"
+
+[[package.metadata.release.pre-release-replacements]]
+file = "CHANGELOG.md"
+min = 1
+replace = "{{version}}"
+search = "Unreleased"
+
+[[package.metadata.release.pre-release-replacements]]
+exactly = 1
+file = "CHANGELOG.md"
+replace = "...{{tag_name}}"
+search = '\.\.\.HEAD'
+
+[[package.metadata.release.pre-release-replacements]]
+file = "CHANGELOG.md"
+min = 1
+replace = "{{date}}"
+search = "ReleaseDate"
+
+[[package.metadata.release.pre-release-replacements]]
+exactly = 1
+file = "CHANGELOG.md"
+replace = """
+<!-- next-header -->
+## [Unreleased] - ReleaseDate
+"""
+search = "<!-- next-header -->"
+
+[[package.metadata.release.pre-release-replacements]]
+exactly = 1
+file = "CHANGELOG.md"
+replace = """
+<!-- next-url -->
+[Unreleased]: https://github.com/toml-rs/toml/compare/{{tag_name}}...HEAD"""
+search = "<!-- next-url -->"
+
+[[example]]
+name = "visit"
+test = true
+
+[[test]]
+name = "decoder_compliance"
+harness = false
+
+[[test]]
+name = "encoder_compliance"
+harness = false
+
+[[test]]
+name = "invalid"
+harness = false
+
+[dependencies.indexmap]
+version = "2.0.0"
+features = ["std"]
+
+[dependencies.kstring]
+version = "2.0.0"
+features = ["max_inline"]
+optional = true
+
+[dependencies.serde]
+version = "1.0.145"
+optional = true
+
+[dependencies.serde_spanned]
+version = "0.6.3"
+features = ["serde"]
+optional = true
+
+[dependencies.toml_datetime]
+version = "0.6.3"
+
+[dependencies.winnow]
+version = "0.4.6"
+
+[dev-dependencies.libtest-mimic]
+version = "0.6.0"
+
+[dev-dependencies.serde_json]
+version = "1.0.96"
+
+[dev-dependencies.snapbox]
+version = "0.4.11"
+features = ["harness"]
+
+[dev-dependencies.toml-test-data]
+version = "1.3.0"
+
+[dev-dependencies.toml-test-harness]
+version = "0.4.3"
+
+[features]
+default = []
+perf = ["dep:kstring"]
+serde = [
+ "dep:serde",
+ "toml_datetime/serde",
+ "dep:serde_spanned",
+]
+unbounded = []
diff --git a/vendor/toml_edit-0.19.11/LICENSE-APACHE b/vendor/toml_edit-0.19.11/LICENSE-APACHE
new file mode 100644
index 000000000..16fe87b06
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/LICENSE-APACHE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/vendor/toml_edit-0.19.11/LICENSE-MIT b/vendor/toml_edit-0.19.11/LICENSE-MIT
new file mode 100644
index 000000000..b9e61a2da
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/LICENSE-MIT
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 Andronik Ordian
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/vendor/toml_edit-0.19.11/README.md b/vendor/toml_edit-0.19.11/README.md
new file mode 100644
index 000000000..f1c74eeb0
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/README.md
@@ -0,0 +1,59 @@
+# toml_edit
+
+[![Build Status](https://github.com/ordian/toml_edit/workflows/Continuous%20integration/badge.svg)](https://github.com/ordian/toml_edit/actions)
+[![codecov](https://codecov.io/gh/ordian/toml_edit/branch/master/graph/badge.svg)](https://codecov.io/gh/ordian/toml_edit)
+[![crates.io](https://img.shields.io/crates/v/toml_edit.svg)](https://crates.io/crates/toml_edit)
+[![docs](https://docs.rs/toml_edit/badge.svg)](https://docs.rs/toml_edit)
+[![Join the chat at https://gitter.im/toml_edit/Lobby](https://badges.gitter.im/a.svg)](https://gitter.im/toml_edit/Lobby)
+
+
+This crate allows you to parse and modify toml
+documents, while preserving comments, spaces *and
+relative order* or items.
+
+`toml_edit` is primarily tailored for [cargo-edit](https://github.com/killercup/cargo-edit/) needs.
+
+## Example
+
+```rust
+use toml_edit::{Document, value};
+
+fn main() {
+ let toml = r#"
+"hello" = 'toml!' # comment
+['a'.b]
+ "#;
+ let mut doc = toml.parse::<Document>().expect("invalid doc");
+ assert_eq!(doc.to_string(), toml);
+ // let's add a new key/value pair inside a.b: c = {d = "hello"}
+ doc["a"]["b"]["c"]["d"] = value("hello");
+ // autoformat inline table a.b.c: { d = "hello" }
+ doc["a"]["b"]["c"].as_inline_table_mut().map(|t| t.fmt());
+ let expected = r#"
+"hello" = 'toml!' # comment
+['a'.b]
+c = { d = "hello" }
+ "#;
+ assert_eq!(doc.to_string(), expected);
+}
+```
+
+## Limitations
+
+Things it does not preserve:
+
+* Scattered array of tables (tables are reordered by default, see [test]).
+* Order of dotted keys, see [issue](https://github.com/ordian/toml_edit/issues/163).
+
+## License
+
+Licensed under either of
+
+- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://apache.org/licenses/LICENSE-2.0)
+- MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
+
+### Contribution
+
+Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
+
+[test]: https://github.com/ordian/toml_edit/blob/f09bd5d075fdb7d2ef8d9bb3270a34506c276753/tests/test_valid.rs#L84
diff --git a/vendor/toml_edit-0.19.11/examples/visit.rs b/vendor/toml_edit-0.19.11/examples/visit.rs
new file mode 100644
index 000000000..cd7f851fe
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/examples/visit.rs
@@ -0,0 +1,284 @@
+//! Example for how to use `VisitMut` to iterate over a table.
+
+use std::collections::BTreeSet;
+use toml_edit::visit::*;
+use toml_edit::visit_mut::*;
+use toml_edit::{Array, Document, InlineTable, Item, KeyMut, Table, Value};
+
+/// This models the visit state for dependency keys in a `Cargo.toml`.
+///
+/// Dependencies can be specified as:
+///
+/// ```toml
+/// [dependencies]
+/// dep1 = "0.2"
+///
+/// [build-dependencies]
+/// dep2 = "0.3"
+///
+/// [dev-dependencies]
+/// dep3 = "0.4"
+///
+/// [target.'cfg(windows)'.dependencies]
+/// dep4 = "0.5"
+///
+/// # and target build- and dev-dependencies
+/// ```
+#[derive(Copy, Clone, Debug, Eq, PartialEq)]
+enum VisitState {
+ /// Represents the root of the table.
+ Root,
+ /// Represents "dependencies", "build-dependencies" or "dev-dependencies", or the target
+ /// forms of these.
+ Dependencies,
+ /// A table within dependencies.
+ SubDependencies,
+ /// Represents "target".
+ Target,
+ /// "target.[TARGET]".
+ TargetWithSpec,
+ /// Represents some other state.
+ Other,
+}
+
+impl VisitState {
+ /// Figures out the next visit state, given the current state and the given key.
+ fn descend(self, key: &str) -> Self {
+ match (self, key) {
+ (
+ VisitState::Root | VisitState::TargetWithSpec,
+ "dependencies" | "build-dependencies" | "dev-dependencies",
+ ) => VisitState::Dependencies,
+ (VisitState::Root, "target") => VisitState::Target,
+ (VisitState::Root | VisitState::TargetWithSpec, _) => VisitState::Other,
+ (VisitState::Target, _) => VisitState::TargetWithSpec,
+ (VisitState::Dependencies, _) => VisitState::SubDependencies,
+ (VisitState::SubDependencies, _) => VisitState::SubDependencies,
+ (VisitState::Other, _) => VisitState::Other,
+ }
+ }
+}
+
+/// Collect the names of every dependency key.
+#[derive(Debug)]
+struct DependencyNameVisitor<'doc> {
+ state: VisitState,
+ names: BTreeSet<&'doc str>,
+}
+
+impl<'doc> Visit<'doc> for DependencyNameVisitor<'doc> {
+ fn visit_table_like_kv(&mut self, key: &'doc str, node: &'doc Item) {
+ if self.state == VisitState::Dependencies {
+ self.names.insert(key);
+ } else {
+ // Since we're only interested in collecting the top-level keys right under
+ // [dependencies], don't recurse unconditionally.
+
+ let old_state = self.state;
+
+ // Figure out the next state given the key.
+ self.state = self.state.descend(key);
+
+ // Recurse further into the document tree.
+ visit_table_like_kv(self, key, node);
+
+ // Restore the old state after it's done.
+ self.state = old_state;
+ }
+ }
+}
+
+/// Normalize all dependency tables into the format:
+///
+/// ```toml
+/// [dependencies]
+/// dep = { version = "1.0", features = ["foo", "bar"], ... }
+/// ```
+///
+/// leaving other tables untouched.
+#[derive(Debug)]
+struct NormalizeDependencyTablesVisitor {
+ state: VisitState,
+}
+
+impl VisitMut for NormalizeDependencyTablesVisitor {
+ fn visit_table_mut(&mut self, node: &mut Table) {
+ visit_table_mut(self, node);
+
+ // The conversion from regular tables into inline ones might leave some explicit parent
+ // tables hanging, so convert them to implicit.
+ if matches!(self.state, VisitState::Target | VisitState::TargetWithSpec) {
+ node.set_implicit(true);
+ }
+ }
+
+ fn visit_table_like_kv_mut(&mut self, mut key: KeyMut<'_>, node: &mut Item) {
+ let old_state = self.state;
+
+ // Figure out the next state given the key.
+ self.state = self.state.descend(key.get());
+
+ match self.state {
+ VisitState::Target | VisitState::TargetWithSpec | VisitState::Dependencies => {
+ // Top-level dependency row, or above: turn inline tables into regular ones.
+ if let Item::Value(Value::InlineTable(inline_table)) = node {
+ let inline_table = std::mem::replace(inline_table, InlineTable::new());
+ let table = inline_table.into_table();
+ key.fmt();
+ *node = Item::Table(table);
+ }
+ }
+ VisitState::SubDependencies => {
+ // Individual dependency: turn regular tables into inline ones.
+ if let Item::Table(table) = node {
+ // Turn the table into an inline table.
+ let table = std::mem::replace(table, Table::new());
+ let inline_table = table.into_inline_table();
+ key.fmt();
+ *node = Item::Value(Value::InlineTable(inline_table));
+ }
+ }
+ _ => {}
+ }
+
+ // Recurse further into the document tree.
+ visit_table_like_kv_mut(self, key, node);
+
+ // Restore the old state after it's done.
+ self.state = old_state;
+ }
+
+ fn visit_array_mut(&mut self, node: &mut Array) {
+ // Format any arrays within dependencies to be on the same line.
+ if matches!(
+ self.state,
+ VisitState::Dependencies | VisitState::SubDependencies
+ ) {
+ node.fmt();
+ }
+ }
+}
+
+/// This is the input provided to visit_mut_example.
+static INPUT: &str = r#"
+[package]
+name = "my-package"
+
+[package.metadata.foo]
+bar = 42
+
+[dependencies]
+atty = "0.2"
+cargo-platform = { path = "crates/cargo-platform", version = "0.1.2" }
+
+[dependencies.pretty_env_logger]
+version = "0.4"
+optional = true
+
+[target.'cfg(windows)'.dependencies]
+fwdansi = "1.1.0"
+
+[target.'cfg(windows)'.dependencies.winapi]
+version = "0.3"
+features = [
+"handleapi",
+"jobapi",
+]
+
+[target.'cfg(unix)']
+dev-dependencies = { miniz_oxide = "0.5" }
+
+[dev-dependencies.cargo-test-macro]
+path = "crates/cargo-test-macro"
+
+[build-dependencies.flate2]
+version = "0.4"
+"#;
+
+/// This is the output produced by visit_mut_example.
+#[cfg(test)]
+static VISIT_MUT_OUTPUT: &str = r#"
+[package]
+name = "my-package"
+
+[package.metadata.foo]
+bar = 42
+
+[dependencies]
+atty = "0.2"
+cargo-platform = { path = "crates/cargo-platform", version = "0.1.2" }
+pretty_env_logger = { version = "0.4", optional = true }
+
+[target.'cfg(windows)'.dependencies]
+fwdansi = "1.1.0"
+winapi = { version = "0.3", features = ["handleapi", "jobapi"] }
+
+[target.'cfg(unix)'.dev-dependencies]
+miniz_oxide = "0.5"
+
+[dev-dependencies]
+cargo-test-macro = { path = "crates/cargo-test-macro" }
+
+[build-dependencies]
+flate2 = { version = "0.4" }
+"#;
+
+fn visit_example(document: &Document) -> BTreeSet<&str> {
+ let mut visitor = DependencyNameVisitor {
+ state: VisitState::Root,
+ names: BTreeSet::new(),
+ };
+
+ visitor.visit_document(document);
+
+ visitor.names
+}
+
+fn visit_mut_example(document: &mut Document) {
+ let mut visitor = NormalizeDependencyTablesVisitor {
+ state: VisitState::Root,
+ };
+
+ visitor.visit_document_mut(document);
+}
+
+fn main() {
+ let mut document: Document = INPUT.parse().expect("input is valid TOML");
+
+ println!("** visit example");
+ println!("{:?}", visit_example(&document));
+
+ println!("** visit_mut example");
+ visit_mut_example(&mut document);
+ println!("{}", document);
+}
+
+#[cfg(test)]
+#[test]
+fn visit_correct() {
+ let document: Document = INPUT.parse().expect("input is valid TOML");
+
+ let names = visit_example(&document);
+ let expected = vec![
+ "atty",
+ "cargo-platform",
+ "pretty_env_logger",
+ "fwdansi",
+ "winapi",
+ "miniz_oxide",
+ "cargo-test-macro",
+ "flate2",
+ ]
+ .into_iter()
+ .collect();
+ assert_eq!(names, expected);
+}
+
+#[cfg(test)]
+#[test]
+fn visit_mut_correct() {
+ let mut document: Document = INPUT.parse().expect("input is valid TOML");
+
+ visit_mut_example(&mut document);
+ assert_eq!(format!("{}", document), VISIT_MUT_OUTPUT);
+}
diff --git a/vendor/toml_edit-0.19.11/src/array.rs b/vendor/toml_edit-0.19.11/src/array.rs
new file mode 100644
index 000000000..68cb4467a
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/array.rs
@@ -0,0 +1,389 @@
+use std::iter::FromIterator;
+use std::mem;
+
+use crate::repr::Decor;
+use crate::value::{DEFAULT_LEADING_VALUE_DECOR, DEFAULT_VALUE_DECOR};
+use crate::{Item, RawString, Value};
+
+/// Type representing a TOML array,
+/// payload of the `Value::Array` variant's value
+#[derive(Debug, Default, Clone)]
+pub struct Array {
+ // `trailing` represents whitespaces, newlines
+ // and comments in an empty array or after the trailing comma
+ trailing: RawString,
+ trailing_comma: bool,
+ // prefix before `[` and suffix after `]`
+ decor: Decor,
+ pub(crate) span: Option<std::ops::Range<usize>>,
+ // always Vec<Item::Value>
+ pub(crate) values: Vec<Item>,
+}
+
+/// An owned iterator type over `Table`'s key/value pairs.
+pub type ArrayIntoIter = Box<dyn Iterator<Item = Value>>;
+/// An iterator type over `Array`'s values.
+pub type ArrayIter<'a> = Box<dyn Iterator<Item = &'a Value> + 'a>;
+/// An iterator type over `Array`'s values.
+pub type ArrayIterMut<'a> = Box<dyn Iterator<Item = &'a mut Value> + 'a>;
+
+/// Constructors
+///
+/// See also `FromIterator`
+impl Array {
+ /// Create an empty `Array`
+ ///
+ /// # Examples
+ ///
+ /// ```rust
+ /// let mut arr = toml_edit::Array::new();
+ /// ```
+ pub fn new() -> Self {
+ Default::default()
+ }
+
+ pub(crate) fn with_vec(values: Vec<Item>) -> Self {
+ Self {
+ values,
+ ..Default::default()
+ }
+ }
+}
+
+/// Formatting
+impl Array {
+ /// Auto formats the array.
+ pub fn fmt(&mut self) {
+ decorate_array(self);
+ }
+
+ /// Set whether the array will use a trailing comma
+ pub fn set_trailing_comma(&mut self, yes: bool) {
+ self.trailing_comma = yes;
+ }
+
+ /// Whether the array will use a trailing comma
+ pub fn trailing_comma(&self) -> bool {
+ self.trailing_comma
+ }
+
+ /// Set whitespace after last element
+ pub fn set_trailing(&mut self, trailing: impl Into<RawString>) {
+ self.trailing = trailing.into();
+ }
+
+ /// Whitespace after last element
+ pub fn trailing(&self) -> &RawString {
+ &self.trailing
+ }
+
+ /// Returns the surrounding whitespace
+ pub fn decor_mut(&mut self) -> &mut Decor {
+ &mut self.decor
+ }
+
+ /// Returns the surrounding whitespace
+ pub fn decor(&self) -> &Decor {
+ &self.decor
+ }
+
+ /// Returns the location within the original document
+ pub(crate) fn span(&self) -> Option<std::ops::Range<usize>> {
+ self.span.clone()
+ }
+
+ pub(crate) fn despan(&mut self, input: &str) {
+ self.span = None;
+ self.decor.despan(input);
+ self.trailing.despan(input);
+ for value in &mut self.values {
+ value.despan(input);
+ }
+ }
+}
+
+impl Array {
+ /// Returns an iterator over all values.
+ pub fn iter(&self) -> ArrayIter<'_> {
+ Box::new(self.values.iter().filter_map(Item::as_value))
+ }
+
+ /// Returns an iterator over all values.
+ pub fn iter_mut(&mut self) -> ArrayIterMut<'_> {
+ Box::new(self.values.iter_mut().filter_map(Item::as_value_mut))
+ }
+
+ /// Returns the length of the underlying Vec.
+ ///
+ /// In some rare cases, placeholder elements will exist. For a more accurate count, call
+ /// `a.iter().count()`
+ ///
+ /// # Examples
+ ///
+ /// ```rust
+ /// let mut arr = toml_edit::Array::new();
+ /// arr.push(1);
+ /// arr.push("foo");
+ /// assert_eq!(arr.len(), 2);
+ /// ```
+ pub fn len(&self) -> usize {
+ self.values.len()
+ }
+
+ /// Return true iff `self.len() == 0`.
+ ///
+ /// # Examples
+ ///
+ /// ```rust
+ /// let mut arr = toml_edit::Array::new();
+ /// assert!(arr.is_empty());
+ ///
+ /// arr.push(1);
+ /// arr.push("foo");
+ /// assert!(! arr.is_empty());
+ /// ```
+ pub fn is_empty(&self) -> bool {
+ self.len() == 0
+ }
+
+ /// Clears the array, removing all values. Keeps the allocated memory for reuse.
+ pub fn clear(&mut self) {
+ self.values.clear()
+ }
+
+ /// Returns a reference to the value at the given index, or `None` if the index is out of
+ /// bounds.
+ pub fn get(&self, index: usize) -> Option<&Value> {
+ self.values.get(index).and_then(Item::as_value)
+ }
+
+ /// Returns a reference to the value at the given index, or `None` if the index is out of
+ /// bounds.
+ pub fn get_mut(&mut self, index: usize) -> Option<&mut Value> {
+ self.values.get_mut(index).and_then(Item::as_value_mut)
+ }
+
+ /// Appends a new value to the end of the array, applying default formatting to it.
+ ///
+ /// # Examples
+ ///
+ /// ```rust
+ /// let mut arr = toml_edit::Array::new();
+ /// arr.push(1);
+ /// arr.push("foo");
+ /// ```
+ pub fn push<V: Into<Value>>(&mut self, v: V) {
+ self.value_op(v.into(), true, |items, value| {
+ items.push(Item::Value(value))
+ })
+ }
+
+ /// Appends a new, already formatted value to the end of the array.
+ ///
+ /// # Examples
+ ///
+ /// ```rust
+ /// let formatted_value = "'literal'".parse::<toml_edit::Value>().unwrap();
+ /// let mut arr = toml_edit::Array::new();
+ /// arr.push_formatted(formatted_value);
+ /// ```
+ pub fn push_formatted(&mut self, v: Value) {
+ self.values.push(Item::Value(v));
+ }
+
+ /// Inserts an element at the given position within the array, applying default formatting to
+ /// it and shifting all values after it to the right.
+ ///
+ /// # Panics
+ ///
+ /// Panics if `index > len`.
+ ///
+ /// # Examples
+ ///
+ /// ```rust
+ /// let mut arr = toml_edit::Array::new();
+ /// arr.push(1);
+ /// arr.push("foo");
+ ///
+ /// arr.insert(0, "start");
+ /// ```
+ pub fn insert<V: Into<Value>>(&mut self, index: usize, v: V) {
+ self.value_op(v.into(), true, |items, value| {
+ items.insert(index, Item::Value(value))
+ })
+ }
+
+ /// Inserts an already formatted value at the given position within the array, shifting all
+ /// values after it to the right.
+ ///
+ /// # Panics
+ ///
+ /// Panics if `index > len`.
+ ///
+ /// # Examples
+ ///
+ /// ```rust
+ /// let mut arr = toml_edit::Array::new();
+ /// arr.push(1);
+ /// arr.push("foo");
+ ///
+ /// let formatted_value = "'start'".parse::<toml_edit::Value>().unwrap();
+ /// arr.insert_formatted(0, formatted_value);
+ /// ```
+ pub fn insert_formatted(&mut self, index: usize, v: Value) {
+ self.values.insert(index, Item::Value(v))
+ }
+
+ /// Replaces the element at the given position within the array, preserving existing formatting.
+ ///
+ /// # Panics
+ ///
+ /// Panics if `index >= len`.
+ ///
+ /// # Examples
+ ///
+ /// ```rust
+ /// let mut arr = toml_edit::Array::new();
+ /// arr.push(1);
+ /// arr.push("foo");
+ ///
+ /// arr.replace(0, "start");
+ /// ```
+ pub fn replace<V: Into<Value>>(&mut self, index: usize, v: V) -> Value {
+ // Read the existing value's decor and preserve it.
+ let existing_decor = self
+ .get(index)
+ .unwrap_or_else(|| panic!("index {} out of bounds (len = {})", index, self.len()))
+ .decor();
+ let mut value = v.into();
+ *value.decor_mut() = existing_decor.clone();
+ self.replace_formatted(index, value)
+ }
+
+ /// Replaces the element at the given position within the array with an already formatted value.
+ ///
+ /// # Panics
+ ///
+ /// Panics if `index >= len`.
+ ///
+ /// # Examples
+ ///
+ /// ```rust
+ /// let mut arr = toml_edit::Array::new();
+ /// arr.push(1);
+ /// arr.push("foo");
+ ///
+ /// let formatted_value = "'start'".parse::<toml_edit::Value>().unwrap();
+ /// arr.replace_formatted(0, formatted_value);
+ /// ```
+ pub fn replace_formatted(&mut self, index: usize, v: Value) -> Value {
+ match mem::replace(&mut self.values[index], Item::Value(v)) {
+ Item::Value(old_value) => old_value,
+ x => panic!("non-value item {:?} in an array", x),
+ }
+ }
+
+ /// Removes the value at the given index.
+ ///
+ /// # Examples
+ ///
+ /// ```rust
+ /// let mut arr = toml_edit::Array::new();
+ /// arr.push(1);
+ /// arr.push("foo");
+ ///
+ /// arr.remove(0);
+ /// assert_eq!(arr.len(), 1);
+ /// ```
+ pub fn remove(&mut self, index: usize) -> Value {
+ let removed = self.values.remove(index);
+ match removed {
+ Item::Value(v) => v,
+ x => panic!("non-value item {:?} in an array", x),
+ }
+ }
+
+ fn value_op<T>(
+ &mut self,
+ v: Value,
+ decorate: bool,
+ op: impl FnOnce(&mut Vec<Item>, Value) -> T,
+ ) -> T {
+ let mut value = v;
+ if !self.is_empty() && decorate {
+ value.decorate(" ", "");
+ } else if decorate {
+ value.decorate("", "");
+ }
+ op(&mut self.values, value)
+ }
+}
+
+impl std::fmt::Display for Array {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ crate::encode::Encode::encode(self, f, None, ("", ""))
+ }
+}
+
+impl<V: Into<Value>> Extend<V> for Array {
+ fn extend<T: IntoIterator<Item = V>>(&mut self, iter: T) {
+ for value in iter {
+ self.push_formatted(value.into());
+ }
+ }
+}
+
+impl<V: Into<Value>> FromIterator<V> for Array {
+ fn from_iter<I>(iter: I) -> Self
+ where
+ I: IntoIterator<Item = V>,
+ {
+ let v = iter.into_iter().map(|a| Item::Value(a.into()));
+ Array {
+ values: v.collect(),
+ ..Default::default()
+ }
+ }
+}
+
+impl IntoIterator for Array {
+ type Item = Value;
+ type IntoIter = ArrayIntoIter;
+
+ fn into_iter(self) -> Self::IntoIter {
+ Box::new(
+ self.values
+ .into_iter()
+ .filter(|v| v.is_value())
+ .map(|v| v.into_value().unwrap()),
+ )
+ }
+}
+
+impl<'s> IntoIterator for &'s Array {
+ type Item = &'s Value;
+ type IntoIter = ArrayIter<'s>;
+
+ fn into_iter(self) -> Self::IntoIter {
+ self.iter()
+ }
+}
+
+fn decorate_array(array: &mut Array) {
+ for (i, value) in array
+ .values
+ .iter_mut()
+ .filter_map(Item::as_value_mut)
+ .enumerate()
+ {
+ // [value1, value2, value3]
+ if i == 0 {
+ value.decorate(DEFAULT_LEADING_VALUE_DECOR.0, DEFAULT_LEADING_VALUE_DECOR.1);
+ } else {
+ value.decorate(DEFAULT_VALUE_DECOR.0, DEFAULT_VALUE_DECOR.1);
+ }
+ }
+ // Since everything is now on the same line, remove trailing commas and whitespace.
+ array.set_trailing_comma(false);
+ array.set_trailing("");
+}
diff --git a/vendor/toml_edit-0.19.11/src/array_of_tables.rs b/vendor/toml_edit-0.19.11/src/array_of_tables.rs
new file mode 100644
index 000000000..461a716c2
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/array_of_tables.rs
@@ -0,0 +1,152 @@
+use std::iter::FromIterator;
+
+use crate::{Array, Item, Table};
+
+/// Type representing a TOML array of tables
+#[derive(Clone, Debug, Default)]
+pub struct ArrayOfTables {
+ // Always Vec<Item::Table>, just `Item` to make `Index` work
+ pub(crate) span: Option<std::ops::Range<usize>>,
+ pub(crate) values: Vec<Item>,
+}
+
+/// Constructors
+///
+/// See also `FromIterator`
+impl ArrayOfTables {
+ /// Creates an empty array of tables.
+ pub fn new() -> Self {
+ Default::default()
+ }
+}
+
+/// Formatting
+impl ArrayOfTables {
+ /// Convert to an inline array
+ pub fn into_array(mut self) -> Array {
+ for value in self.values.iter_mut() {
+ value.make_value();
+ }
+ let mut a = Array::with_vec(self.values);
+ a.fmt();
+ a
+ }
+
+ /// Returns the location within the original document
+ pub(crate) fn span(&self) -> Option<std::ops::Range<usize>> {
+ self.span.clone()
+ }
+
+ pub(crate) fn despan(&mut self, input: &str) {
+ self.span = None;
+ for value in &mut self.values {
+ value.despan(input);
+ }
+ }
+}
+
+impl ArrayOfTables {
+ /// Returns an iterator over tables.
+ pub fn iter(&self) -> ArrayOfTablesIter<'_> {
+ Box::new(self.values.iter().filter_map(Item::as_table))
+ }
+
+ /// Returns an iterator over tables.
+ pub fn iter_mut(&mut self) -> ArrayOfTablesIterMut<'_> {
+ Box::new(self.values.iter_mut().filter_map(Item::as_table_mut))
+ }
+
+ /// Returns the length of the underlying Vec.
+ /// To get the actual number of items use `a.iter().count()`.
+ pub fn len(&self) -> usize {
+ self.values.len()
+ }
+
+ /// Returns true iff `self.len() == 0`.
+ pub fn is_empty(&self) -> bool {
+ self.len() == 0
+ }
+
+ /// Removes all the tables.
+ pub fn clear(&mut self) {
+ self.values.clear()
+ }
+
+ /// Returns an optional reference to the table.
+ pub fn get(&self, index: usize) -> Option<&Table> {
+ self.values.get(index).and_then(Item::as_table)
+ }
+
+ /// Returns an optional mutable reference to the table.
+ pub fn get_mut(&mut self, index: usize) -> Option<&mut Table> {
+ self.values.get_mut(index).and_then(Item::as_table_mut)
+ }
+
+ /// Appends a table to the array.
+ pub fn push(&mut self, table: Table) {
+ self.values.push(Item::Table(table));
+ }
+
+ /// Removes a table with the given index.
+ pub fn remove(&mut self, index: usize) {
+ self.values.remove(index);
+ }
+}
+
+/// An iterator type over `ArrayOfTables`'s values.
+pub type ArrayOfTablesIter<'a> = Box<dyn Iterator<Item = &'a Table> + 'a>;
+/// An iterator type over `ArrayOfTables`'s values.
+pub type ArrayOfTablesIterMut<'a> = Box<dyn Iterator<Item = &'a mut Table> + 'a>;
+/// An iterator type over `ArrayOfTables`'s values.
+pub type ArrayOfTablesIntoIter = Box<dyn Iterator<Item = Table>>;
+
+impl Extend<Table> for ArrayOfTables {
+ fn extend<T: IntoIterator<Item = Table>>(&mut self, iter: T) {
+ for value in iter {
+ self.push(value);
+ }
+ }
+}
+
+impl FromIterator<Table> for ArrayOfTables {
+ fn from_iter<I>(iter: I) -> Self
+ where
+ I: IntoIterator<Item = Table>,
+ {
+ let v = iter.into_iter().map(Item::Table);
+ ArrayOfTables {
+ values: v.collect(),
+ span: None,
+ }
+ }
+}
+
+impl IntoIterator for ArrayOfTables {
+ type Item = Table;
+ type IntoIter = ArrayOfTablesIntoIter;
+
+ fn into_iter(self) -> Self::IntoIter {
+ Box::new(
+ self.values
+ .into_iter()
+ .filter(|v| v.is_table())
+ .map(|v| v.into_table().unwrap()),
+ )
+ }
+}
+
+impl<'s> IntoIterator for &'s ArrayOfTables {
+ type Item = &'s Table;
+ type IntoIter = ArrayOfTablesIter<'s>;
+
+ fn into_iter(self) -> Self::IntoIter {
+ self.iter()
+ }
+}
+
+impl std::fmt::Display for ArrayOfTables {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ // HACK: Without the header, we don't really have a proper way of printing this
+ self.clone().into_array().fmt(f)
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/de/array.rs b/vendor/toml_edit-0.19.11/src/de/array.rs
new file mode 100644
index 000000000..adc54016b
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/de/array.rs
@@ -0,0 +1,97 @@
+use crate::de::Error;
+
+pub(crate) struct ArrayDeserializer {
+ input: Vec<crate::Item>,
+ span: Option<std::ops::Range<usize>>,
+}
+
+impl ArrayDeserializer {
+ pub(crate) fn new(input: Vec<crate::Item>, span: Option<std::ops::Range<usize>>) -> Self {
+ Self { input, span }
+ }
+}
+
+// Note: this is wrapped by `ValueDeserializer` and any trait methods
+// implemented here need to be wrapped there
+impl<'de> serde::Deserializer<'de> for ArrayDeserializer {
+ type Error = Error;
+
+ fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ visitor.visit_seq(ArraySeqAccess::new(self.input))
+ }
+
+ fn deserialize_struct<V>(
+ self,
+ name: &'static str,
+ fields: &'static [&'static str],
+ visitor: V,
+ ) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ if serde_spanned::__unstable::is_spanned(name, fields) {
+ if let Some(span) = self.span.clone() {
+ return visitor.visit_map(super::SpannedDeserializer::new(self, span));
+ }
+ }
+
+ self.deserialize_any(visitor)
+ }
+
+ serde::forward_to_deserialize_any! {
+ bool u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 char str string seq
+ bytes byte_buf map option unit newtype_struct
+ ignored_any unit_struct tuple_struct tuple enum identifier
+ }
+}
+
+impl<'de> serde::de::IntoDeserializer<'de, crate::de::Error> for ArrayDeserializer {
+ type Deserializer = Self;
+
+ fn into_deserializer(self) -> Self::Deserializer {
+ self
+ }
+}
+
+impl crate::Array {
+ pub(crate) fn into_deserializer(self) -> ArrayDeserializer {
+ ArrayDeserializer::new(self.values, self.span)
+ }
+}
+
+impl crate::ArrayOfTables {
+ pub(crate) fn into_deserializer(self) -> ArrayDeserializer {
+ ArrayDeserializer::new(self.values, self.span)
+ }
+}
+
+pub(crate) struct ArraySeqAccess {
+ iter: std::vec::IntoIter<crate::Item>,
+}
+
+impl ArraySeqAccess {
+ pub(crate) fn new(input: Vec<crate::Item>) -> Self {
+ Self {
+ iter: input.into_iter(),
+ }
+ }
+}
+
+impl<'de> serde::de::SeqAccess<'de> for ArraySeqAccess {
+ type Error = Error;
+
+ fn next_element_seed<T>(&mut self, seed: T) -> Result<Option<T::Value>, Self::Error>
+ where
+ T: serde::de::DeserializeSeed<'de>,
+ {
+ match self.iter.next() {
+ Some(v) => seed
+ .deserialize(crate::de::ValueDeserializer::new(v))
+ .map(Some),
+ None => Ok(None),
+ }
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/de/datetime.rs b/vendor/toml_edit-0.19.11/src/de/datetime.rs
new file mode 100644
index 000000000..14de28b3f
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/de/datetime.rs
@@ -0,0 +1,43 @@
+use serde::de::value::BorrowedStrDeserializer;
+use serde::de::IntoDeserializer;
+
+use crate::de::Error;
+
+pub(crate) struct DatetimeDeserializer {
+ date: Option<crate::Datetime>,
+}
+
+impl DatetimeDeserializer {
+ pub(crate) fn new(date: crate::Datetime) -> Self {
+ Self { date: Some(date) }
+ }
+}
+
+impl<'de> serde::de::MapAccess<'de> for DatetimeDeserializer {
+ type Error = Error;
+
+ fn next_key_seed<K>(&mut self, seed: K) -> Result<Option<K::Value>, Error>
+ where
+ K: serde::de::DeserializeSeed<'de>,
+ {
+ if self.date.is_some() {
+ seed.deserialize(BorrowedStrDeserializer::new(
+ toml_datetime::__unstable::FIELD,
+ ))
+ .map(Some)
+ } else {
+ Ok(None)
+ }
+ }
+
+ fn next_value_seed<V>(&mut self, seed: V) -> Result<V::Value, Error>
+ where
+ V: serde::de::DeserializeSeed<'de>,
+ {
+ if let Some(date) = self.date.take() {
+ seed.deserialize(date.to_string().into_deserializer())
+ } else {
+ panic!("next_value_seed called before next_key_seed")
+ }
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/de/key.rs b/vendor/toml_edit-0.19.11/src/de/key.rs
new file mode 100644
index 000000000..3da41df41
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/de/key.rs
@@ -0,0 +1,140 @@
+use serde::de::IntoDeserializer;
+
+use super::Error;
+
+pub(crate) struct KeyDeserializer {
+ span: Option<std::ops::Range<usize>>,
+ key: crate::InternalString,
+}
+
+impl KeyDeserializer {
+ pub(crate) fn new(key: crate::InternalString, span: Option<std::ops::Range<usize>>) -> Self {
+ KeyDeserializer { span, key }
+ }
+}
+
+impl<'de> serde::de::IntoDeserializer<'de, Error> for KeyDeserializer {
+ type Deserializer = Self;
+
+ fn into_deserializer(self) -> Self::Deserializer {
+ self
+ }
+}
+
+impl<'de> serde::de::Deserializer<'de> for KeyDeserializer {
+ type Error = Error;
+
+ fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ self.key.into_deserializer().deserialize_any(visitor)
+ }
+
+ fn deserialize_enum<V>(
+ self,
+ name: &str,
+ variants: &'static [&'static str],
+ visitor: V,
+ ) -> Result<V::Value, Self::Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ let _ = name;
+ let _ = variants;
+ visitor.visit_enum(self)
+ }
+
+ fn deserialize_struct<V>(
+ self,
+ name: &'static str,
+ fields: &'static [&'static str],
+ visitor: V,
+ ) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ if serde_spanned::__unstable::is_spanned(name, fields) {
+ if let Some(span) = self.span.clone() {
+ return visitor.visit_map(super::SpannedDeserializer::new(self.key.as_str(), span));
+ }
+ }
+ self.deserialize_any(visitor)
+ }
+
+ serde::forward_to_deserialize_any! {
+ bool u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 char str string seq
+ bytes byte_buf map option unit newtype_struct
+ ignored_any unit_struct tuple_struct tuple identifier
+ }
+}
+
+impl<'de> serde::de::EnumAccess<'de> for KeyDeserializer {
+ type Error = super::Error;
+ type Variant = UnitOnly<Self::Error>;
+
+ fn variant_seed<T>(self, seed: T) -> Result<(T::Value, Self::Variant), Self::Error>
+ where
+ T: serde::de::DeserializeSeed<'de>,
+ {
+ seed.deserialize(self).map(unit_only)
+ }
+}
+
+pub(crate) struct UnitOnly<E> {
+ marker: std::marker::PhantomData<E>,
+}
+
+fn unit_only<T, E>(t: T) -> (T, UnitOnly<E>) {
+ (
+ t,
+ UnitOnly {
+ marker: std::marker::PhantomData,
+ },
+ )
+}
+
+impl<'de, E> serde::de::VariantAccess<'de> for UnitOnly<E>
+where
+ E: serde::de::Error,
+{
+ type Error = E;
+
+ fn unit_variant(self) -> Result<(), Self::Error> {
+ Ok(())
+ }
+
+ fn newtype_variant_seed<T>(self, _seed: T) -> Result<T::Value, Self::Error>
+ where
+ T: serde::de::DeserializeSeed<'de>,
+ {
+ Err(serde::de::Error::invalid_type(
+ serde::de::Unexpected::UnitVariant,
+ &"newtype variant",
+ ))
+ }
+
+ fn tuple_variant<V>(self, _len: usize, _visitor: V) -> Result<V::Value, Self::Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ Err(serde::de::Error::invalid_type(
+ serde::de::Unexpected::UnitVariant,
+ &"tuple variant",
+ ))
+ }
+
+ fn struct_variant<V>(
+ self,
+ _fields: &'static [&'static str],
+ _visitor: V,
+ ) -> Result<V::Value, Self::Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ Err(serde::de::Error::invalid_type(
+ serde::de::Unexpected::UnitVariant,
+ &"struct variant",
+ ))
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/de/mod.rs b/vendor/toml_edit-0.19.11/src/de/mod.rs
new file mode 100644
index 000000000..09ea12096
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/de/mod.rs
@@ -0,0 +1,289 @@
+//! Deserializing TOML into Rust structures.
+//!
+//! This module contains all the Serde support for deserializing TOML documents into Rust structures.
+
+use serde::de::DeserializeOwned;
+
+mod array;
+mod datetime;
+mod key;
+mod spanned;
+mod table;
+mod table_enum;
+mod value;
+
+use array::ArrayDeserializer;
+use datetime::DatetimeDeserializer;
+use key::KeyDeserializer;
+use spanned::SpannedDeserializer;
+use table::TableMapAccess;
+use table_enum::TableEnumDeserializer;
+
+pub use value::ValueDeserializer;
+
+/// Errors that can occur when deserializing a type.
+#[derive(Debug, Clone, PartialEq, Eq)]
+pub struct Error {
+ inner: crate::TomlError,
+}
+
+impl Error {
+ pub(crate) fn custom<T>(msg: T, span: Option<std::ops::Range<usize>>) -> Self
+ where
+ T: std::fmt::Display,
+ {
+ Error {
+ inner: crate::TomlError::custom(msg.to_string(), span),
+ }
+ }
+
+ /// Add key while unwinding
+ pub fn add_key(&mut self, key: String) {
+ self.inner.add_key(key)
+ }
+
+ /// What went wrong
+ pub fn message(&self) -> &str {
+ self.inner.message()
+ }
+
+ /// The start/end index into the original document where the error occurred
+ pub fn span(&self) -> Option<std::ops::Range<usize>> {
+ self.inner.span()
+ }
+
+ pub(crate) fn set_span(&mut self, span: Option<std::ops::Range<usize>>) {
+ self.inner.set_span(span);
+ }
+}
+
+impl serde::de::Error for Error {
+ fn custom<T>(msg: T) -> Self
+ where
+ T: std::fmt::Display,
+ {
+ Error::custom(msg, None)
+ }
+}
+
+impl std::fmt::Display for Error {
+ fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
+ self.inner.fmt(f)
+ }
+}
+
+impl From<crate::TomlError> for Error {
+ fn from(e: crate::TomlError) -> Error {
+ Self { inner: e }
+ }
+}
+
+impl From<Error> for crate::TomlError {
+ fn from(e: Error) -> crate::TomlError {
+ e.inner
+ }
+}
+
+impl std::error::Error for Error {}
+
+/// Convert a value into `T`.
+pub fn from_str<T>(s: &'_ str) -> Result<T, Error>
+where
+ T: DeserializeOwned,
+{
+ let de = s.parse::<Deserializer>()?;
+ T::deserialize(de)
+}
+
+/// Convert a value into `T`.
+pub fn from_slice<T>(s: &'_ [u8]) -> Result<T, Error>
+where
+ T: DeserializeOwned,
+{
+ let s = std::str::from_utf8(s).map_err(|e| Error::custom(e, None))?;
+ from_str(s)
+}
+
+/// Convert a document into `T`.
+pub fn from_document<T>(d: crate::Document) -> Result<T, Error>
+where
+ T: DeserializeOwned,
+{
+ let deserializer = Deserializer::new(d);
+ T::deserialize(deserializer)
+}
+
+/// Deserialization for TOML [documents][crate::Document].
+pub struct Deserializer {
+ input: crate::Document,
+}
+
+impl Deserializer {
+ /// Deserialization implementation for TOML.
+ pub fn new(input: crate::Document) -> Self {
+ Self { input }
+ }
+}
+
+impl std::str::FromStr for Deserializer {
+ type Err = Error;
+
+ /// Parses a document from a &str
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ let d = crate::parser::parse_document(s).map_err(Error::from)?;
+ Ok(Self::new(d))
+ }
+}
+
+// Note: this is wrapped by `toml::de::Deserializer` and any trait methods
+// implemented here need to be wrapped there
+impl<'de> serde::Deserializer<'de> for Deserializer {
+ type Error = Error;
+
+ fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ let original = self.input.original;
+ self.input
+ .root
+ .into_deserializer()
+ .deserialize_any(visitor)
+ .map_err(|mut e: Self::Error| {
+ e.inner.set_original(original);
+ e
+ })
+ }
+
+ // `None` is interpreted as a missing field so be sure to implement `Some`
+ // as a present field.
+ fn deserialize_option<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ let original = self.input.original;
+ self.input
+ .root
+ .into_deserializer()
+ .deserialize_option(visitor)
+ .map_err(|mut e: Self::Error| {
+ e.inner.set_original(original);
+ e
+ })
+ }
+
+ fn deserialize_newtype_struct<V>(
+ self,
+ name: &'static str,
+ visitor: V,
+ ) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ let original = self.input.original;
+ self.input
+ .root
+ .into_deserializer()
+ .deserialize_newtype_struct(name, visitor)
+ .map_err(|mut e: Self::Error| {
+ e.inner.set_original(original);
+ e
+ })
+ }
+
+ fn deserialize_struct<V>(
+ self,
+ name: &'static str,
+ fields: &'static [&'static str],
+ visitor: V,
+ ) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ let original = self.input.original;
+ self.input
+ .root
+ .into_deserializer()
+ .deserialize_struct(name, fields, visitor)
+ .map_err(|mut e: Self::Error| {
+ e.inner.set_original(original);
+ e
+ })
+ }
+
+ // Called when the type to deserialize is an enum, as opposed to a field in the type.
+ fn deserialize_enum<V>(
+ self,
+ name: &'static str,
+ variants: &'static [&'static str],
+ visitor: V,
+ ) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ let original = self.input.original;
+ self.input
+ .root
+ .into_deserializer()
+ .deserialize_enum(name, variants, visitor)
+ .map_err(|mut e: Self::Error| {
+ e.inner.set_original(original);
+ e
+ })
+ }
+
+ serde::forward_to_deserialize_any! {
+ bool u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 char str string seq
+ bytes byte_buf map unit
+ ignored_any unit_struct tuple_struct tuple identifier
+ }
+}
+
+impl<'de> serde::de::IntoDeserializer<'de, crate::de::Error> for Deserializer {
+ type Deserializer = Deserializer;
+
+ fn into_deserializer(self) -> Self::Deserializer {
+ self
+ }
+}
+
+impl<'de> serde::de::IntoDeserializer<'de, crate::de::Error> for crate::Document {
+ type Deserializer = Deserializer;
+
+ fn into_deserializer(self) -> Self::Deserializer {
+ Deserializer::new(self)
+ }
+}
+
+pub(crate) fn validate_struct_keys(
+ table: &crate::table::KeyValuePairs,
+ fields: &'static [&'static str],
+) -> Result<(), Error> {
+ let extra_fields = table
+ .iter()
+ .filter_map(|(key, val)| {
+ if !fields.contains(&key.as_str()) {
+ Some(val.clone())
+ } else {
+ None
+ }
+ })
+ .collect::<Vec<_>>();
+
+ if extra_fields.is_empty() {
+ Ok(())
+ } else {
+ Err(Error::custom(
+ format!(
+ "unexpected keys in table: {}, available keys: {}",
+ extra_fields
+ .iter()
+ .map(|k| k.key.get())
+ .collect::<Vec<_>>()
+ .join(", "),
+ fields.join(", "),
+ ),
+ extra_fields[0].key.span(),
+ ))
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/de/spanned.rs b/vendor/toml_edit-0.19.11/src/de/spanned.rs
new file mode 100644
index 000000000..7ce58640a
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/de/spanned.rs
@@ -0,0 +1,70 @@
+use serde::de::value::BorrowedStrDeserializer;
+use serde::de::IntoDeserializer as _;
+
+use super::Error;
+
+pub(crate) struct SpannedDeserializer<'de, T: serde::de::IntoDeserializer<'de, Error>> {
+ phantom_data: std::marker::PhantomData<&'de ()>,
+ start: Option<usize>,
+ end: Option<usize>,
+ value: Option<T>,
+}
+
+impl<'de, T> SpannedDeserializer<'de, T>
+where
+ T: serde::de::IntoDeserializer<'de, Error>,
+{
+ pub(crate) fn new(value: T, span: std::ops::Range<usize>) -> Self {
+ Self {
+ phantom_data: Default::default(),
+ start: Some(span.start),
+ end: Some(span.end),
+ value: Some(value),
+ }
+ }
+}
+
+impl<'de, T> serde::de::MapAccess<'de> for SpannedDeserializer<'de, T>
+where
+ T: serde::de::IntoDeserializer<'de, Error>,
+{
+ type Error = Error;
+ fn next_key_seed<K>(&mut self, seed: K) -> Result<Option<K::Value>, Error>
+ where
+ K: serde::de::DeserializeSeed<'de>,
+ {
+ if self.start.is_some() {
+ seed.deserialize(BorrowedStrDeserializer::new(
+ serde_spanned::__unstable::START_FIELD,
+ ))
+ .map(Some)
+ } else if self.end.is_some() {
+ seed.deserialize(BorrowedStrDeserializer::new(
+ serde_spanned::__unstable::END_FIELD,
+ ))
+ .map(Some)
+ } else if self.value.is_some() {
+ seed.deserialize(BorrowedStrDeserializer::new(
+ serde_spanned::__unstable::VALUE_FIELD,
+ ))
+ .map(Some)
+ } else {
+ Ok(None)
+ }
+ }
+
+ fn next_value_seed<V>(&mut self, seed: V) -> Result<V::Value, Error>
+ where
+ V: serde::de::DeserializeSeed<'de>,
+ {
+ if let Some(start) = self.start.take() {
+ seed.deserialize(start.into_deserializer())
+ } else if let Some(end) = self.end.take() {
+ seed.deserialize(end.into_deserializer())
+ } else if let Some(value) = self.value.take() {
+ seed.deserialize(value.into_deserializer())
+ } else {
+ panic!("next_value_seed called before next_key_seed")
+ }
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/de/table.rs b/vendor/toml_edit-0.19.11/src/de/table.rs
new file mode 100644
index 000000000..0b6183e09
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/de/table.rs
@@ -0,0 +1,213 @@
+use serde::de::IntoDeserializer;
+
+use crate::de::Error;
+
+pub(crate) struct TableDeserializer {
+ span: Option<std::ops::Range<usize>>,
+ items: crate::table::KeyValuePairs,
+}
+
+// Note: this is wrapped by `Deserializer` and `ValueDeserializer` and any trait methods
+// implemented here need to be wrapped there
+impl<'de> serde::Deserializer<'de> for TableDeserializer {
+ type Error = Error;
+
+ fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ visitor.visit_map(crate::de::TableMapAccess::new(self))
+ }
+
+ // `None` is interpreted as a missing field so be sure to implement `Some`
+ // as a present field.
+ fn deserialize_option<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ visitor.visit_some(self)
+ }
+
+ fn deserialize_newtype_struct<V>(
+ self,
+ _name: &'static str,
+ visitor: V,
+ ) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ visitor.visit_newtype_struct(self)
+ }
+
+ fn deserialize_struct<V>(
+ self,
+ name: &'static str,
+ fields: &'static [&'static str],
+ visitor: V,
+ ) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ if serde_spanned::__unstable::is_spanned(name, fields) {
+ if let Some(span) = self.span.clone() {
+ return visitor.visit_map(super::SpannedDeserializer::new(self, span));
+ }
+ }
+
+ self.deserialize_any(visitor)
+ }
+
+ // Called when the type to deserialize is an enum, as opposed to a field in the type.
+ fn deserialize_enum<V>(
+ self,
+ _name: &'static str,
+ _variants: &'static [&'static str],
+ visitor: V,
+ ) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ if self.items.is_empty() {
+ Err(crate::de::Error::custom(
+ "wanted exactly 1 element, found 0 elements",
+ self.span,
+ ))
+ } else if self.items.len() != 1 {
+ Err(crate::de::Error::custom(
+ "wanted exactly 1 element, more than 1 element",
+ self.span,
+ ))
+ } else {
+ visitor.visit_enum(crate::de::TableMapAccess::new(self))
+ }
+ }
+
+ serde::forward_to_deserialize_any! {
+ bool u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 char str string seq
+ bytes byte_buf map unit
+ ignored_any unit_struct tuple_struct tuple identifier
+ }
+}
+
+impl<'de> serde::de::IntoDeserializer<'de, crate::de::Error> for TableDeserializer {
+ type Deserializer = TableDeserializer;
+
+ fn into_deserializer(self) -> Self::Deserializer {
+ self
+ }
+}
+
+impl crate::Table {
+ pub(crate) fn into_deserializer(self) -> TableDeserializer {
+ TableDeserializer {
+ span: self.span(),
+ items: self.items,
+ }
+ }
+}
+
+impl crate::InlineTable {
+ pub(crate) fn into_deserializer(self) -> TableDeserializer {
+ TableDeserializer {
+ span: self.span(),
+ items: self.items,
+ }
+ }
+}
+
+pub(crate) struct TableMapAccess {
+ iter: indexmap::map::IntoIter<crate::InternalString, crate::table::TableKeyValue>,
+ span: Option<std::ops::Range<usize>>,
+ value: Option<(crate::InternalString, crate::Item)>,
+}
+
+impl TableMapAccess {
+ pub(crate) fn new(input: TableDeserializer) -> Self {
+ Self {
+ iter: input.items.into_iter(),
+ span: input.span,
+ value: None,
+ }
+ }
+}
+
+impl<'de> serde::de::MapAccess<'de> for TableMapAccess {
+ type Error = Error;
+
+ fn next_key_seed<K>(&mut self, seed: K) -> Result<Option<K::Value>, Self::Error>
+ where
+ K: serde::de::DeserializeSeed<'de>,
+ {
+ match self.iter.next() {
+ Some((k, v)) => {
+ let ret = seed
+ .deserialize(super::KeyDeserializer::new(k, v.key.span()))
+ .map(Some)
+ .map_err(|mut e: Self::Error| {
+ if e.span().is_none() {
+ e.set_span(v.key.span());
+ }
+ e
+ });
+ self.value = Some((v.key.into(), v.value));
+ ret
+ }
+ None => Ok(None),
+ }
+ }
+
+ fn next_value_seed<V>(&mut self, seed: V) -> Result<V::Value, Self::Error>
+ where
+ V: serde::de::DeserializeSeed<'de>,
+ {
+ match self.value.take() {
+ Some((k, v)) => {
+ let span = v.span();
+ seed.deserialize(crate::de::ValueDeserializer::new(v))
+ .map_err(|mut e: Self::Error| {
+ if e.span().is_none() {
+ e.set_span(span);
+ }
+ e.add_key(k.as_str().to_owned());
+ e
+ })
+ }
+ None => {
+ panic!("no more values in next_value_seed, internal error in ValueDeserializer")
+ }
+ }
+ }
+}
+
+impl<'de> serde::de::EnumAccess<'de> for TableMapAccess {
+ type Error = Error;
+ type Variant = super::TableEnumDeserializer;
+
+ fn variant_seed<V>(mut self, seed: V) -> Result<(V::Value, Self::Variant), Self::Error>
+ where
+ V: serde::de::DeserializeSeed<'de>,
+ {
+ let (key, value) = match self.iter.next() {
+ Some(pair) => pair,
+ None => {
+ return Err(Error::custom(
+ "expected table with exactly 1 entry, found empty table",
+ self.span,
+ ));
+ }
+ };
+
+ let val = seed
+ .deserialize(key.into_deserializer())
+ .map_err(|mut e: Self::Error| {
+ if e.span().is_none() {
+ e.set_span(value.key.span());
+ }
+ e
+ })?;
+
+ let variant = super::TableEnumDeserializer::new(value.value);
+
+ Ok((val, variant))
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/de/table_enum.rs b/vendor/toml_edit-0.19.11/src/de/table_enum.rs
new file mode 100644
index 000000000..197ad6ea7
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/de/table_enum.rs
@@ -0,0 +1,160 @@
+use crate::de::Error;
+
+/// Deserializes table values into enum variants.
+pub(crate) struct TableEnumDeserializer {
+ value: crate::Item,
+}
+
+impl TableEnumDeserializer {
+ pub(crate) fn new(value: crate::Item) -> Self {
+ TableEnumDeserializer { value }
+ }
+}
+
+impl<'de> serde::de::VariantAccess<'de> for TableEnumDeserializer {
+ type Error = Error;
+
+ fn unit_variant(self) -> Result<(), Self::Error> {
+ match self.value {
+ crate::Item::Table(values) => {
+ if values.is_empty() {
+ Ok(())
+ } else {
+ Err(Error::custom("expected empty table", values.span()))
+ }
+ }
+ crate::Item::Value(crate::Value::InlineTable(values)) => {
+ if values.is_empty() {
+ Ok(())
+ } else {
+ Err(Error::custom("expected empty table", values.span()))
+ }
+ }
+ e => Err(Error::custom(
+ format!("expected table, found {}", e.type_name()),
+ e.span(),
+ )),
+ }
+ }
+
+ fn newtype_variant_seed<T>(self, seed: T) -> Result<T::Value, Self::Error>
+ where
+ T: serde::de::DeserializeSeed<'de>,
+ {
+ seed.deserialize(super::ValueDeserializer::new(self.value))
+ }
+
+ fn tuple_variant<V>(self, len: usize, visitor: V) -> Result<V::Value, Self::Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ match self.value {
+ crate::Item::Table(values) => {
+ let values_span = values.span();
+ let tuple_values = values
+ .items
+ .into_iter()
+ .enumerate()
+ .map(
+ |(index, (_, value))| match value.key.get().parse::<usize>() {
+ Ok(key_index) if key_index == index => Ok(value.value),
+ Ok(_) | Err(_) => Err(Error::custom(
+ format!(
+ "expected table key `{}`, but was `{}`",
+ index,
+ value.key.get()
+ ),
+ value.key.span(),
+ )),
+ },
+ )
+ // Fold all values into a `Vec`, or return the first error.
+ .fold(Ok(Vec::with_capacity(len)), |result, value_result| {
+ result.and_then(move |mut tuple_values| match value_result {
+ Ok(value) => {
+ tuple_values.push(value);
+ Ok(tuple_values)
+ }
+ // `Result<de::Value, Self::Error>` to `Result<Vec<_>, Self::Error>`
+ Err(e) => Err(e),
+ })
+ })?;
+
+ if tuple_values.len() == len {
+ serde::de::Deserializer::deserialize_seq(
+ super::ArrayDeserializer::new(tuple_values, values_span),
+ visitor,
+ )
+ } else {
+ Err(Error::custom(
+ format!("expected tuple with length {}", len),
+ values_span,
+ ))
+ }
+ }
+ crate::Item::Value(crate::Value::InlineTable(values)) => {
+ let values_span = values.span();
+ let tuple_values = values
+ .items
+ .into_iter()
+ .enumerate()
+ .map(
+ |(index, (_, value))| match value.key.get().parse::<usize>() {
+ Ok(key_index) if key_index == index => Ok(value.value),
+ Ok(_) | Err(_) => Err(Error::custom(
+ format!(
+ "expected table key `{}`, but was `{}`",
+ index,
+ value.key.get()
+ ),
+ value.key.span(),
+ )),
+ },
+ )
+ // Fold all values into a `Vec`, or return the first error.
+ .fold(Ok(Vec::with_capacity(len)), |result, value_result| {
+ result.and_then(move |mut tuple_values| match value_result {
+ Ok(value) => {
+ tuple_values.push(value);
+ Ok(tuple_values)
+ }
+ // `Result<de::Value, Self::Error>` to `Result<Vec<_>, Self::Error>`
+ Err(e) => Err(e),
+ })
+ })?;
+
+ if tuple_values.len() == len {
+ serde::de::Deserializer::deserialize_seq(
+ super::ArrayDeserializer::new(tuple_values, values_span),
+ visitor,
+ )
+ } else {
+ Err(Error::custom(
+ format!("expected tuple with length {}", len),
+ values_span,
+ ))
+ }
+ }
+ e => Err(Error::custom(
+ format!("expected table, found {}", e.type_name()),
+ e.span(),
+ )),
+ }
+ }
+
+ fn struct_variant<V>(
+ self,
+ fields: &'static [&'static str],
+ visitor: V,
+ ) -> Result<V::Value, Self::Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ serde::de::Deserializer::deserialize_struct(
+ super::ValueDeserializer::new(self.value).with_struct_key_validation(),
+ "", // TODO: this should be the variant name
+ fields,
+ visitor,
+ )
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/de/value.rs b/vendor/toml_edit-0.19.11/src/de/value.rs
new file mode 100644
index 000000000..39842875a
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/de/value.rs
@@ -0,0 +1,252 @@
+use serde::de::IntoDeserializer as _;
+
+use crate::de::DatetimeDeserializer;
+use crate::de::Error;
+
+/// Deserialization implementation for TOML [values][crate::Value].
+///
+/// Can be creater either directly from TOML strings, using [`std::str::FromStr`],
+/// or from parsed [values][crate::Value] using [`serde::de::IntoDeserializer::into_deserializer`].
+///
+/// # Example
+///
+/// ```
+/// use serde::Deserialize;
+///
+/// #[derive(Deserialize)]
+/// struct Config {
+/// title: String,
+/// owner: Owner,
+/// }
+///
+/// #[derive(Deserialize)]
+/// struct Owner {
+/// name: String,
+/// }
+///
+/// let value = r#"{ title = 'TOML Example', owner = { name = 'Lisa' } }"#;
+/// let deserializer = value.parse::<toml_edit::de::ValueDeserializer>().unwrap();
+/// let config = Config::deserialize(deserializer).unwrap();
+/// assert_eq!(config.title, "TOML Example");
+/// assert_eq!(config.owner.name, "Lisa");
+/// ```
+pub struct ValueDeserializer {
+ input: crate::Item,
+ validate_struct_keys: bool,
+}
+
+impl ValueDeserializer {
+ pub(crate) fn new(input: crate::Item) -> Self {
+ Self {
+ input,
+ validate_struct_keys: false,
+ }
+ }
+
+ pub(crate) fn with_struct_key_validation(mut self) -> Self {
+ self.validate_struct_keys = true;
+ self
+ }
+}
+
+// Note: this is wrapped by `toml::de::ValueDeserializer` and any trait methods
+// implemented here need to be wrapped there
+impl<'de> serde::Deserializer<'de> for ValueDeserializer {
+ type Error = Error;
+
+ fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ let span = self.input.span();
+ match self.input {
+ crate::Item::None => visitor.visit_none(),
+ crate::Item::Value(crate::Value::String(v)) => visitor.visit_string(v.into_value()),
+ crate::Item::Value(crate::Value::Integer(v)) => visitor.visit_i64(v.into_value()),
+ crate::Item::Value(crate::Value::Float(v)) => visitor.visit_f64(v.into_value()),
+ crate::Item::Value(crate::Value::Boolean(v)) => visitor.visit_bool(v.into_value()),
+ crate::Item::Value(crate::Value::Datetime(v)) => {
+ visitor.visit_map(DatetimeDeserializer::new(v.into_value()))
+ }
+ crate::Item::Value(crate::Value::Array(v)) => {
+ v.into_deserializer().deserialize_any(visitor)
+ }
+ crate::Item::Value(crate::Value::InlineTable(v)) => {
+ v.into_deserializer().deserialize_any(visitor)
+ }
+ crate::Item::Table(v) => v.into_deserializer().deserialize_any(visitor),
+ crate::Item::ArrayOfTables(v) => v.into_deserializer().deserialize_any(visitor),
+ }
+ .map_err(|mut e: Self::Error| {
+ if e.span().is_none() {
+ e.set_span(span);
+ }
+ e
+ })
+ }
+
+ // `None` is interpreted as a missing field so be sure to implement `Some`
+ // as a present field.
+ fn deserialize_option<V>(self, visitor: V) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ let span = self.input.span();
+ visitor.visit_some(self).map_err(|mut e: Self::Error| {
+ if e.span().is_none() {
+ e.set_span(span);
+ }
+ e
+ })
+ }
+
+ fn deserialize_newtype_struct<V>(
+ self,
+ _name: &'static str,
+ visitor: V,
+ ) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ let span = self.input.span();
+ visitor
+ .visit_newtype_struct(self)
+ .map_err(|mut e: Self::Error| {
+ if e.span().is_none() {
+ e.set_span(span);
+ }
+ e
+ })
+ }
+
+ fn deserialize_struct<V>(
+ self,
+ name: &'static str,
+ fields: &'static [&'static str],
+ visitor: V,
+ ) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ if serde_spanned::__unstable::is_spanned(name, fields) {
+ if let Some(span) = self.input.span() {
+ return visitor.visit_map(super::SpannedDeserializer::new(self, span));
+ }
+ }
+
+ if name == toml_datetime::__unstable::NAME && fields == [toml_datetime::__unstable::FIELD] {
+ let span = self.input.span();
+ if let crate::Item::Value(crate::Value::Datetime(d)) = self.input {
+ return visitor
+ .visit_map(DatetimeDeserializer::new(d.into_value()))
+ .map_err(|mut e: Self::Error| {
+ if e.span().is_none() {
+ e.set_span(span);
+ }
+ e
+ });
+ }
+ }
+
+ if self.validate_struct_keys {
+ let span = self.input.span();
+ match &self.input {
+ crate::Item::Table(values) => super::validate_struct_keys(&values.items, fields),
+ crate::Item::Value(crate::Value::InlineTable(values)) => {
+ super::validate_struct_keys(&values.items, fields)
+ }
+ _ => Ok(()),
+ }
+ .map_err(|mut e: Self::Error| {
+ if e.span().is_none() {
+ e.set_span(span);
+ }
+ e
+ })?
+ }
+
+ self.deserialize_any(visitor)
+ }
+
+ // Called when the type to deserialize is an enum, as opposed to a field in the type.
+ fn deserialize_enum<V>(
+ self,
+ name: &'static str,
+ variants: &'static [&'static str],
+ visitor: V,
+ ) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ let span = self.input.span();
+ match self.input {
+ crate::Item::Value(crate::Value::String(v)) => {
+ visitor.visit_enum(v.into_value().into_deserializer())
+ }
+ crate::Item::Value(crate::Value::InlineTable(v)) => {
+ if v.is_empty() {
+ Err(crate::de::Error::custom(
+ "wanted exactly 1 element, found 0 elements",
+ v.span(),
+ ))
+ } else if v.len() != 1 {
+ Err(crate::de::Error::custom(
+ "wanted exactly 1 element, more than 1 element",
+ v.span(),
+ ))
+ } else {
+ v.into_deserializer()
+ .deserialize_enum(name, variants, visitor)
+ }
+ }
+ crate::Item::Table(v) => v
+ .into_deserializer()
+ .deserialize_enum(name, variants, visitor),
+ e => Err(crate::de::Error::custom("wanted string or table", e.span())),
+ }
+ .map_err(|mut e: Self::Error| {
+ if e.span().is_none() {
+ e.set_span(span);
+ }
+ e
+ })
+ }
+
+ serde::forward_to_deserialize_any! {
+ bool u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 char str string seq
+ bytes byte_buf map unit
+ ignored_any unit_struct tuple_struct tuple identifier
+ }
+}
+
+impl<'de> serde::de::IntoDeserializer<'de, crate::de::Error> for ValueDeserializer {
+ type Deserializer = Self;
+
+ fn into_deserializer(self) -> Self::Deserializer {
+ self
+ }
+}
+
+impl<'de> serde::de::IntoDeserializer<'de, crate::de::Error> for crate::Value {
+ type Deserializer = ValueDeserializer;
+
+ fn into_deserializer(self) -> Self::Deserializer {
+ ValueDeserializer::new(crate::Item::Value(self))
+ }
+}
+
+impl crate::Item {
+ pub(crate) fn into_deserializer(self) -> ValueDeserializer {
+ ValueDeserializer::new(self)
+ }
+}
+
+impl std::str::FromStr for ValueDeserializer {
+ type Err = Error;
+
+ /// Parses a value from a &str
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ let v = crate::parser::parse_value(s).map_err(Error::from)?;
+ Ok(v.into_deserializer())
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/document.rs b/vendor/toml_edit-0.19.11/src/document.rs
new file mode 100644
index 000000000..67dd293dd
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/document.rs
@@ -0,0 +1,113 @@
+use std::str::FromStr;
+
+use crate::parser;
+use crate::table::Iter;
+use crate::{Item, RawString, Table};
+
+/// Type representing a TOML document
+#[derive(Debug, Clone)]
+pub struct Document {
+ pub(crate) root: Item,
+ // Trailing comments and whitespaces
+ pub(crate) trailing: RawString,
+ pub(crate) original: Option<String>,
+ pub(crate) span: Option<std::ops::Range<usize>>,
+}
+
+impl Document {
+ /// Creates an empty document
+ pub fn new() -> Self {
+ Default::default()
+ }
+
+ /// Returns a reference to the root item.
+ pub fn as_item(&self) -> &Item {
+ &self.root
+ }
+
+ /// Returns a mutable reference to the root item.
+ pub fn as_item_mut(&mut self) -> &mut Item {
+ &mut self.root
+ }
+
+ /// Returns a reference to the root table.
+ pub fn as_table(&self) -> &Table {
+ self.root.as_table().expect("root should always be a table")
+ }
+
+ /// Returns a mutable reference to the root table.
+ pub fn as_table_mut(&mut self) -> &mut Table {
+ self.root
+ .as_table_mut()
+ .expect("root should always be a table")
+ }
+
+ /// Returns an iterator over the root table.
+ pub fn iter(&self) -> Iter<'_> {
+ self.as_table().iter()
+ }
+
+ /// Set whitespace after last element
+ pub fn set_trailing(&mut self, trailing: impl Into<RawString>) {
+ self.trailing = trailing.into();
+ }
+
+ /// Whitespace after last element
+ pub fn trailing(&self) -> &RawString {
+ &self.trailing
+ }
+
+ /// # Panics
+ ///
+ /// If run on on a `Document` not generated by the parser
+ pub(crate) fn despan(&mut self) {
+ self.span = None;
+ self.root.despan(self.original.as_deref().unwrap());
+ self.trailing.despan(self.original.as_deref().unwrap());
+ }
+}
+
+impl Default for Document {
+ fn default() -> Self {
+ Self {
+ root: Item::Table(Table::with_pos(Some(0))),
+ trailing: Default::default(),
+ original: Default::default(),
+ span: Default::default(),
+ }
+ }
+}
+
+impl FromStr for Document {
+ type Err = crate::TomlError;
+
+ /// Parses a document from a &str
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ let mut d = parser::parse_document(s)?;
+ d.despan();
+ Ok(d)
+ }
+}
+
+impl std::ops::Deref for Document {
+ type Target = Table;
+
+ fn deref(&self) -> &Self::Target {
+ self.as_table()
+ }
+}
+
+impl std::ops::DerefMut for Document {
+ fn deref_mut(&mut self) -> &mut Self::Target {
+ self.as_table_mut()
+ }
+}
+
+impl From<Table> for Document {
+ fn from(root: Table) -> Self {
+ Self {
+ root: Item::Table(root),
+ ..Default::default()
+ }
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/encode.rs b/vendor/toml_edit-0.19.11/src/encode.rs
new file mode 100644
index 000000000..9940f282b
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/encode.rs
@@ -0,0 +1,569 @@
+use std::borrow::Cow;
+use std::fmt::{Display, Formatter, Result, Write};
+
+use toml_datetime::*;
+
+use crate::document::Document;
+use crate::inline_table::DEFAULT_INLINE_KEY_DECOR;
+use crate::key::Key;
+use crate::repr::{Formatted, Repr, ValueRepr};
+use crate::table::{DEFAULT_KEY_DECOR, DEFAULT_KEY_PATH_DECOR, DEFAULT_TABLE_DECOR};
+use crate::value::{
+ DEFAULT_LEADING_VALUE_DECOR, DEFAULT_TRAILING_VALUE_DECOR, DEFAULT_VALUE_DECOR,
+};
+use crate::{Array, InlineTable, Item, Table, Value};
+
+pub(crate) trait Encode {
+ fn encode(
+ &self,
+ buf: &mut dyn Write,
+ input: Option<&str>,
+ default_decor: (&str, &str),
+ ) -> Result;
+}
+
+impl Encode for Key {
+ fn encode(
+ &self,
+ buf: &mut dyn Write,
+ input: Option<&str>,
+ default_decor: (&str, &str),
+ ) -> Result {
+ let decor = self.decor();
+ decor.prefix_encode(buf, input, default_decor.0)?;
+
+ if let Some(input) = input {
+ let repr = self
+ .as_repr()
+ .map(Cow::Borrowed)
+ .unwrap_or_else(|| Cow::Owned(self.default_repr()));
+ repr.encode(buf, input)?;
+ } else {
+ let repr = self.display_repr();
+ write!(buf, "{}", repr)?;
+ };
+
+ decor.suffix_encode(buf, input, default_decor.1)?;
+ Ok(())
+ }
+}
+
+impl<'k> Encode for &'k [Key] {
+ fn encode(
+ &self,
+ buf: &mut dyn Write,
+ input: Option<&str>,
+ default_decor: (&str, &str),
+ ) -> Result {
+ for (i, key) in self.iter().enumerate() {
+ let first = i == 0;
+ let last = i + 1 == self.len();
+
+ let prefix = if first {
+ default_decor.0
+ } else {
+ DEFAULT_KEY_PATH_DECOR.0
+ };
+ let suffix = if last {
+ default_decor.1
+ } else {
+ DEFAULT_KEY_PATH_DECOR.1
+ };
+
+ if !first {
+ write!(buf, ".")?;
+ }
+ key.encode(buf, input, (prefix, suffix))?;
+ }
+ Ok(())
+ }
+}
+
+impl<'k> Encode for &'k [&'k Key] {
+ fn encode(
+ &self,
+ buf: &mut dyn Write,
+ input: Option<&str>,
+ default_decor: (&str, &str),
+ ) -> Result {
+ for (i, key) in self.iter().enumerate() {
+ let first = i == 0;
+ let last = i + 1 == self.len();
+
+ let prefix = if first {
+ default_decor.0
+ } else {
+ DEFAULT_KEY_PATH_DECOR.0
+ };
+ let suffix = if last {
+ default_decor.1
+ } else {
+ DEFAULT_KEY_PATH_DECOR.1
+ };
+
+ if !first {
+ write!(buf, ".")?;
+ }
+ key.encode(buf, input, (prefix, suffix))?;
+ }
+ Ok(())
+ }
+}
+
+impl<T> Encode for Formatted<T>
+where
+ T: ValueRepr,
+{
+ fn encode(
+ &self,
+ buf: &mut dyn Write,
+ input: Option<&str>,
+ default_decor: (&str, &str),
+ ) -> Result {
+ let decor = self.decor();
+ decor.prefix_encode(buf, input, default_decor.0)?;
+
+ if let Some(input) = input {
+ let repr = self
+ .as_repr()
+ .map(Cow::Borrowed)
+ .unwrap_or_else(|| Cow::Owned(self.default_repr()));
+ repr.encode(buf, input)?;
+ } else {
+ let repr = self.display_repr();
+ write!(buf, "{}", repr)?;
+ };
+
+ decor.suffix_encode(buf, input, default_decor.1)?;
+ Ok(())
+ }
+}
+
+impl Encode for Array {
+ fn encode(
+ &self,
+ buf: &mut dyn Write,
+ input: Option<&str>,
+ default_decor: (&str, &str),
+ ) -> Result {
+ let decor = self.decor();
+ decor.prefix_encode(buf, input, default_decor.0)?;
+ write!(buf, "[")?;
+
+ for (i, elem) in self.iter().enumerate() {
+ let inner_decor;
+ if i == 0 {
+ inner_decor = DEFAULT_LEADING_VALUE_DECOR;
+ } else {
+ inner_decor = DEFAULT_VALUE_DECOR;
+ write!(buf, ",")?;
+ }
+ elem.encode(buf, input, inner_decor)?;
+ }
+ if self.trailing_comma() && !self.is_empty() {
+ write!(buf, ",")?;
+ }
+
+ self.trailing().encode_with_default(buf, input, "")?;
+ write!(buf, "]")?;
+ decor.suffix_encode(buf, input, default_decor.1)?;
+
+ Ok(())
+ }
+}
+
+impl Encode for InlineTable {
+ fn encode(
+ &self,
+ buf: &mut dyn Write,
+ input: Option<&str>,
+ default_decor: (&str, &str),
+ ) -> Result {
+ let decor = self.decor();
+ decor.prefix_encode(buf, input, default_decor.0)?;
+ write!(buf, "{{")?;
+ self.preamble().encode_with_default(buf, input, "")?;
+
+ let children = self.get_values();
+ let len = children.len();
+ for (i, (key_path, value)) in children.into_iter().enumerate() {
+ if i != 0 {
+ write!(buf, ",")?;
+ }
+ let inner_decor = if i == len - 1 {
+ DEFAULT_TRAILING_VALUE_DECOR
+ } else {
+ DEFAULT_VALUE_DECOR
+ };
+ key_path
+ .as_slice()
+ .encode(buf, input, DEFAULT_INLINE_KEY_DECOR)?;
+ write!(buf, "=")?;
+ value.encode(buf, input, inner_decor)?;
+ }
+
+ write!(buf, "}}")?;
+ decor.suffix_encode(buf, input, default_decor.1)?;
+
+ Ok(())
+ }
+}
+
+impl Encode for Value {
+ fn encode(
+ &self,
+ buf: &mut dyn Write,
+ input: Option<&str>,
+ default_decor: (&str, &str),
+ ) -> Result {
+ match self {
+ Value::String(repr) => repr.encode(buf, input, default_decor),
+ Value::Integer(repr) => repr.encode(buf, input, default_decor),
+ Value::Float(repr) => repr.encode(buf, input, default_decor),
+ Value::Boolean(repr) => repr.encode(buf, input, default_decor),
+ Value::Datetime(repr) => repr.encode(buf, input, default_decor),
+ Value::Array(array) => array.encode(buf, input, default_decor),
+ Value::InlineTable(table) => table.encode(buf, input, default_decor),
+ }
+ }
+}
+
+impl Display for Document {
+ fn fmt(&self, f: &mut Formatter<'_>) -> Result {
+ let mut path = Vec::new();
+ let mut last_position = 0;
+ let mut tables = Vec::new();
+ visit_nested_tables(self.as_table(), &mut path, false, &mut |t, p, is_array| {
+ if let Some(pos) = t.position() {
+ last_position = pos;
+ }
+ tables.push((last_position, t, p.clone(), is_array));
+ Ok(())
+ })
+ .unwrap();
+
+ tables.sort_by_key(|&(id, _, _, _)| id);
+ let mut first_table = true;
+ for (_, table, path, is_array) in tables {
+ visit_table(
+ f,
+ self.original.as_deref(),
+ table,
+ &path,
+ is_array,
+ &mut first_table,
+ )?;
+ }
+ self.trailing()
+ .encode_with_default(f, self.original.as_deref(), "")
+ }
+}
+
+fn visit_nested_tables<'t, F>(
+ table: &'t Table,
+ path: &mut Vec<Key>,
+ is_array_of_tables: bool,
+ callback: &mut F,
+) -> Result
+where
+ F: FnMut(&'t Table, &Vec<Key>, bool) -> Result,
+{
+ if !table.is_dotted() {
+ callback(table, path, is_array_of_tables)?;
+ }
+
+ for kv in table.items.values() {
+ match kv.value {
+ Item::Table(ref t) => {
+ let mut key = kv.key.clone();
+ if t.is_dotted() {
+ // May have newlines and generally isn't written for standard tables
+ key.decor_mut().clear();
+ }
+ path.push(key);
+ visit_nested_tables(t, path, false, callback)?;
+ path.pop();
+ }
+ Item::ArrayOfTables(ref a) => {
+ for t in a.iter() {
+ let key = kv.key.clone();
+ path.push(key);
+ visit_nested_tables(t, path, true, callback)?;
+ path.pop();
+ }
+ }
+ _ => {}
+ }
+ }
+ Ok(())
+}
+
+fn visit_table(
+ buf: &mut dyn Write,
+ input: Option<&str>,
+ table: &Table,
+ path: &[Key],
+ is_array_of_tables: bool,
+ first_table: &mut bool,
+) -> Result {
+ let children = table.get_values();
+ // We are intentionally hiding implicit tables without any tables nested under them (ie
+ // `table.is_empty()` which is in contrast to `table.get_values().is_empty()`). We are
+ // trusting the user that an empty implicit table is not semantically meaningful
+ //
+ // This allows a user to delete all tables under this implicit table and the implicit table
+ // will disappear.
+ //
+ // However, this means that users need to take care in deciding what tables get marked as
+ // implicit.
+ let is_visible_std_table = !(table.implicit && children.is_empty());
+
+ if path.is_empty() {
+ // don't print header for the root node
+ if !children.is_empty() {
+ *first_table = false;
+ }
+ } else if is_array_of_tables {
+ let default_decor = if *first_table {
+ *first_table = false;
+ ("", DEFAULT_TABLE_DECOR.1)
+ } else {
+ DEFAULT_TABLE_DECOR
+ };
+ table.decor.prefix_encode(buf, input, default_decor.0)?;
+ write!(buf, "[[")?;
+ path.encode(buf, input, DEFAULT_KEY_PATH_DECOR)?;
+ write!(buf, "]]")?;
+ table.decor.suffix_encode(buf, input, default_decor.1)?;
+ writeln!(buf)?;
+ } else if is_visible_std_table {
+ let default_decor = if *first_table {
+ *first_table = false;
+ ("", DEFAULT_TABLE_DECOR.1)
+ } else {
+ DEFAULT_TABLE_DECOR
+ };
+ table.decor.prefix_encode(buf, input, default_decor.0)?;
+ write!(buf, "[")?;
+ path.encode(buf, input, DEFAULT_KEY_PATH_DECOR)?;
+ write!(buf, "]")?;
+ table.decor.suffix_encode(buf, input, default_decor.1)?;
+ writeln!(buf)?;
+ }
+ // print table body
+ for (key_path, value) in children {
+ key_path.as_slice().encode(buf, input, DEFAULT_KEY_DECOR)?;
+ write!(buf, "=")?;
+ value.encode(buf, input, DEFAULT_VALUE_DECOR)?;
+ writeln!(buf)?;
+ }
+ Ok(())
+}
+
+impl ValueRepr for String {
+ fn to_repr(&self) -> Repr {
+ to_string_repr(self, None, None)
+ }
+}
+
+pub(crate) fn to_string_repr(
+ value: &str,
+ style: Option<StringStyle>,
+ literal: Option<bool>,
+) -> Repr {
+ let (style, literal) = match (style, literal) {
+ (Some(style), Some(literal)) => (style, literal),
+ (_, Some(literal)) => (infer_style(value).0, literal),
+ (Some(style), _) => (style, infer_style(value).1),
+ (_, _) => infer_style(value),
+ };
+
+ let mut output = String::with_capacity(value.len() * 2);
+ if literal {
+ output.push_str(style.literal_start());
+ output.push_str(value);
+ output.push_str(style.literal_end());
+ } else {
+ output.push_str(style.standard_start());
+ for ch in value.chars() {
+ match ch {
+ '\u{8}' => output.push_str("\\b"),
+ '\u{9}' => output.push_str("\\t"),
+ '\u{a}' => match style {
+ StringStyle::NewlineTripple => output.push('\n'),
+ StringStyle::OnelineSingle => output.push_str("\\n"),
+ _ => unreachable!(),
+ },
+ '\u{c}' => output.push_str("\\f"),
+ '\u{d}' => output.push_str("\\r"),
+ '\u{22}' => output.push_str("\\\""),
+ '\u{5c}' => output.push_str("\\\\"),
+ c if c <= '\u{1f}' || c == '\u{7f}' => {
+ write!(output, "\\u{:04X}", ch as u32).unwrap();
+ }
+ ch => output.push(ch),
+ }
+ }
+ output.push_str(style.standard_end());
+ }
+
+ Repr::new_unchecked(output)
+}
+
+#[derive(Copy, Clone, Debug, PartialEq, Eq)]
+pub(crate) enum StringStyle {
+ NewlineTripple,
+ OnelineTripple,
+ OnelineSingle,
+}
+
+impl StringStyle {
+ fn literal_start(self) -> &'static str {
+ match self {
+ Self::NewlineTripple => "'''\n",
+ Self::OnelineTripple => "'''",
+ Self::OnelineSingle => "'",
+ }
+ }
+ fn literal_end(self) -> &'static str {
+ match self {
+ Self::NewlineTripple => "'''",
+ Self::OnelineTripple => "'''",
+ Self::OnelineSingle => "'",
+ }
+ }
+
+ fn standard_start(self) -> &'static str {
+ match self {
+ Self::NewlineTripple => "\"\"\"\n",
+ // note: OnelineTripple can happen if do_pretty wants to do
+ // '''it's one line'''
+ // but literal == false
+ Self::OnelineTripple | Self::OnelineSingle => "\"",
+ }
+ }
+
+ fn standard_end(self) -> &'static str {
+ match self {
+ Self::NewlineTripple => "\"\"\"",
+ // note: OnelineTripple can happen if do_pretty wants to do
+ // '''it's one line'''
+ // but literal == false
+ Self::OnelineTripple | Self::OnelineSingle => "\"",
+ }
+ }
+}
+
+fn infer_style(value: &str) -> (StringStyle, bool) {
+ // For doing pretty prints we store in a new String
+ // because there are too many cases where pretty cannot
+ // work. We need to determine:
+ // - if we are a "multi-line" pretty (if there are \n)
+ // - if ['''] appears if multi or ['] if single
+ // - if there are any invalid control characters
+ //
+ // Doing it any other way would require multiple passes
+ // to determine if a pretty string works or not.
+ let mut out = String::with_capacity(value.len() * 2);
+ let mut ty = StringStyle::OnelineSingle;
+ // found consecutive single quotes
+ let mut max_found_singles = 0;
+ let mut found_singles = 0;
+ let mut prefer_literal = false;
+ let mut can_be_pretty = true;
+
+ for ch in value.chars() {
+ if can_be_pretty {
+ if ch == '\'' {
+ found_singles += 1;
+ if found_singles >= 3 {
+ can_be_pretty = false;
+ }
+ } else {
+ if found_singles > max_found_singles {
+ max_found_singles = found_singles;
+ }
+ found_singles = 0
+ }
+ match ch {
+ '\t' => {}
+ '\\' => {
+ prefer_literal = true;
+ }
+ '\n' => ty = StringStyle::NewlineTripple,
+ // Escape codes are needed if any ascii control
+ // characters are present, including \b \f \r.
+ c if c <= '\u{1f}' || c == '\u{7f}' => can_be_pretty = false,
+ _ => {}
+ }
+ out.push(ch);
+ } else {
+ // the string cannot be represented as pretty,
+ // still check if it should be multiline
+ if ch == '\n' {
+ ty = StringStyle::NewlineTripple;
+ }
+ }
+ }
+ if found_singles > 0 && value.ends_with('\'') {
+ // We cannot escape the ending quote so we must use """
+ can_be_pretty = false;
+ }
+ if !prefer_literal {
+ can_be_pretty = false;
+ }
+ if !can_be_pretty {
+ debug_assert!(ty != StringStyle::OnelineTripple);
+ return (ty, false);
+ }
+ if found_singles > max_found_singles {
+ max_found_singles = found_singles;
+ }
+ debug_assert!(max_found_singles < 3);
+ if ty == StringStyle::OnelineSingle && max_found_singles >= 1 {
+ // no newlines, but must use ''' because it has ' in it
+ ty = StringStyle::OnelineTripple;
+ }
+ (ty, true)
+}
+
+impl ValueRepr for i64 {
+ fn to_repr(&self) -> Repr {
+ Repr::new_unchecked(self.to_string())
+ }
+}
+
+impl ValueRepr for f64 {
+ fn to_repr(&self) -> Repr {
+ to_f64_repr(*self)
+ }
+}
+
+fn to_f64_repr(f: f64) -> Repr {
+ let repr = match (f.is_sign_negative(), f.is_nan(), f == 0.0) {
+ (true, true, _) => "-nan".to_owned(),
+ (false, true, _) => "nan".to_owned(),
+ (true, false, true) => "-0.0".to_owned(),
+ (false, false, true) => "0.0".to_owned(),
+ (_, false, false) => {
+ if f % 1.0 == 0.0 {
+ format!("{}.0", f)
+ } else {
+ format!("{}", f)
+ }
+ }
+ };
+ Repr::new_unchecked(repr)
+}
+
+impl ValueRepr for bool {
+ fn to_repr(&self) -> Repr {
+ Repr::new_unchecked(self.to_string())
+ }
+}
+
+impl ValueRepr for Datetime {
+ fn to_repr(&self) -> Repr {
+ Repr::new_unchecked(self.to_string())
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/index.rs b/vendor/toml_edit-0.19.11/src/index.rs
new file mode 100644
index 000000000..276db7957
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/index.rs
@@ -0,0 +1,156 @@
+use std::ops;
+
+use crate::document::Document;
+use crate::key::Key;
+use crate::table::TableKeyValue;
+use crate::{value, InlineTable, InternalString, Item, Table, Value};
+
+// copied from
+// https://github.com/serde-rs/json/blob/master/src/value/index.rs
+
+pub trait Index: crate::private::Sealed {
+ #[doc(hidden)]
+ fn index<'v>(&self, val: &'v Item) -> Option<&'v Item>;
+ #[doc(hidden)]
+ fn index_mut<'v>(&self, val: &'v mut Item) -> Option<&'v mut Item>;
+}
+
+impl Index for usize {
+ fn index<'v>(&self, v: &'v Item) -> Option<&'v Item> {
+ match *v {
+ Item::ArrayOfTables(ref aot) => aot.values.get(*self),
+ Item::Value(ref a) if a.is_array() => a.as_array().and_then(|a| a.values.get(*self)),
+ _ => None,
+ }
+ }
+ fn index_mut<'v>(&self, v: &'v mut Item) -> Option<&'v mut Item> {
+ match *v {
+ Item::ArrayOfTables(ref mut vec) => vec.values.get_mut(*self),
+ Item::Value(ref mut a) => a.as_array_mut().and_then(|a| a.values.get_mut(*self)),
+ _ => None,
+ }
+ }
+}
+
+impl Index for str {
+ fn index<'v>(&self, v: &'v Item) -> Option<&'v Item> {
+ match *v {
+ Item::Table(ref t) => t.get(self),
+ Item::Value(ref v) => v
+ .as_inline_table()
+ .and_then(|t| t.items.get(self))
+ .and_then(|kv| {
+ if !kv.value.is_none() {
+ Some(&kv.value)
+ } else {
+ None
+ }
+ }),
+ _ => None,
+ }
+ }
+ fn index_mut<'v>(&self, v: &'v mut Item) -> Option<&'v mut Item> {
+ if let Item::None = *v {
+ let mut t = InlineTable::default();
+ t.items.insert(
+ InternalString::from(self),
+ TableKeyValue::new(Key::new(self), Item::None),
+ );
+ *v = value(Value::InlineTable(t));
+ }
+ match *v {
+ Item::Table(ref mut t) => Some(t.entry(self).or_insert(Item::None)),
+ Item::Value(ref mut v) => v.as_inline_table_mut().map(|t| {
+ &mut t
+ .items
+ .entry(InternalString::from(self))
+ .or_insert_with(|| TableKeyValue::new(Key::new(self), Item::None))
+ .value
+ }),
+ _ => None,
+ }
+ }
+}
+
+impl Index for String {
+ fn index<'v>(&self, v: &'v Item) -> Option<&'v Item> {
+ self[..].index(v)
+ }
+ fn index_mut<'v>(&self, v: &'v mut Item) -> Option<&'v mut Item> {
+ self[..].index_mut(v)
+ }
+}
+
+impl<'a, T: ?Sized> Index for &'a T
+where
+ T: Index,
+{
+ fn index<'v>(&self, v: &'v Item) -> Option<&'v Item> {
+ (**self).index(v)
+ }
+ fn index_mut<'v>(&self, v: &'v mut Item) -> Option<&'v mut Item> {
+ (**self).index_mut(v)
+ }
+}
+
+impl<I> ops::Index<I> for Item
+where
+ I: Index,
+{
+ type Output = Item;
+
+ fn index(&self, index: I) -> &Item {
+ index.index(self).expect("index not found")
+ }
+}
+
+impl<I> ops::IndexMut<I> for Item
+where
+ I: Index,
+{
+ fn index_mut(&mut self, index: I) -> &mut Item {
+ index.index_mut(self).expect("index not found")
+ }
+}
+
+impl<'s> ops::Index<&'s str> for Table {
+ type Output = Item;
+
+ fn index(&self, key: &'s str) -> &Item {
+ self.get(key).expect("index not found")
+ }
+}
+
+impl<'s> ops::IndexMut<&'s str> for Table {
+ fn index_mut(&mut self, key: &'s str) -> &mut Item {
+ self.entry(key).or_insert(Item::None)
+ }
+}
+
+impl<'s> ops::Index<&'s str> for InlineTable {
+ type Output = Value;
+
+ fn index(&self, key: &'s str) -> &Value {
+ self.get(key).expect("index not found")
+ }
+}
+
+impl<'s> ops::IndexMut<&'s str> for InlineTable {
+ fn index_mut(&mut self, key: &'s str) -> &mut Value {
+ self.get_mut(key).expect("index not found")
+ }
+}
+
+impl<'s> ops::Index<&'s str> for Document {
+ type Output = Item;
+
+ fn index(&self, key: &'s str) -> &Item {
+ self.root.index(key)
+ }
+}
+
+impl<'s> ops::IndexMut<&'s str> for Document {
+ fn index_mut(&mut self, key: &'s str) -> &mut Item {
+ self.root.index_mut(key)
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/inline_table.rs b/vendor/toml_edit-0.19.11/src/inline_table.rs
new file mode 100644
index 000000000..9327818e6
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/inline_table.rs
@@ -0,0 +1,661 @@
+use std::iter::FromIterator;
+
+use crate::key::Key;
+use crate::repr::Decor;
+use crate::table::{Iter, IterMut, KeyValuePairs, TableKeyValue, TableLike};
+use crate::{InternalString, Item, KeyMut, RawString, Table, Value};
+
+/// Type representing a TOML inline table,
+/// payload of the `Value::InlineTable` variant
+#[derive(Debug, Default, Clone)]
+pub struct InlineTable {
+ // `preamble` represents whitespaces in an empty table
+ preamble: RawString,
+ // prefix before `{` and suffix after `}`
+ decor: Decor,
+ pub(crate) span: Option<std::ops::Range<usize>>,
+ // whether this is a proxy for dotted keys
+ dotted: bool,
+ pub(crate) items: KeyValuePairs,
+}
+
+/// Constructors
+///
+/// See also `FromIterator`
+impl InlineTable {
+ /// Creates an empty table.
+ pub fn new() -> Self {
+ Default::default()
+ }
+
+ pub(crate) fn with_pairs(items: KeyValuePairs) -> Self {
+ Self {
+ items,
+ ..Default::default()
+ }
+ }
+
+ /// Convert to a table
+ pub fn into_table(self) -> Table {
+ let mut t = Table::with_pairs(self.items);
+ t.fmt();
+ t
+ }
+}
+
+/// Formatting
+impl InlineTable {
+ /// Get key/values for values that are visually children of this table
+ ///
+ /// For example, this will return dotted keys
+ pub fn get_values(&self) -> Vec<(Vec<&Key>, &Value)> {
+ let mut values = Vec::new();
+ let root = Vec::new();
+ self.append_values(&root, &mut values);
+ values
+ }
+
+ pub(crate) fn append_values<'s, 'c>(
+ &'s self,
+ parent: &[&'s Key],
+ values: &'c mut Vec<(Vec<&'s Key>, &'s Value)>,
+ ) {
+ for value in self.items.values() {
+ let mut path = parent.to_vec();
+ path.push(&value.key);
+ match &value.value {
+ Item::Value(Value::InlineTable(table)) if table.is_dotted() => {
+ table.append_values(&path, values);
+ }
+ Item::Value(value) => {
+ values.push((path, value));
+ }
+ _ => {}
+ }
+ }
+ }
+
+ /// Auto formats the table.
+ pub fn fmt(&mut self) {
+ decorate_inline_table(self);
+ }
+
+ /// Sorts the key/value pairs by key.
+ pub fn sort_values(&mut self) {
+ // Assuming standard tables have their position set and this won't negatively impact them
+ self.items.sort_keys();
+ for kv in self.items.values_mut() {
+ match &mut kv.value {
+ Item::Value(Value::InlineTable(table)) if table.is_dotted() => {
+ table.sort_values();
+ }
+ _ => {}
+ }
+ }
+ }
+
+ /// Sort Key/Value Pairs of the table using the using the comparison function `compare`.
+ ///
+ /// The comparison function receives two key and value pairs to compare (you can sort by keys or
+ /// values or their combination as needed).
+ pub fn sort_values_by<F>(&mut self, mut compare: F)
+ where
+ F: FnMut(&Key, &Value, &Key, &Value) -> std::cmp::Ordering,
+ {
+ self.sort_values_by_internal(&mut compare);
+ }
+
+ fn sort_values_by_internal<F>(&mut self, compare: &mut F)
+ where
+ F: FnMut(&Key, &Value, &Key, &Value) -> std::cmp::Ordering,
+ {
+ let modified_cmp = |_: &InternalString,
+ val1: &TableKeyValue,
+ _: &InternalString,
+ val2: &TableKeyValue|
+ -> std::cmp::Ordering {
+ match (val1.value.as_value(), val2.value.as_value()) {
+ (Some(v1), Some(v2)) => compare(&val1.key, v1, &val2.key, v2),
+ (Some(_), None) => std::cmp::Ordering::Greater,
+ (None, Some(_)) => std::cmp::Ordering::Less,
+ (None, None) => std::cmp::Ordering::Equal,
+ }
+ };
+
+ self.items.sort_by(modified_cmp);
+ for kv in self.items.values_mut() {
+ match &mut kv.value {
+ Item::Value(Value::InlineTable(table)) if table.is_dotted() => {
+ table.sort_values_by_internal(compare);
+ }
+ _ => {}
+ }
+ }
+ }
+
+ /// Change this table's dotted status
+ pub fn set_dotted(&mut self, yes: bool) {
+ self.dotted = yes;
+ }
+
+ /// Check if this is a wrapper for dotted keys, rather than a standard table
+ pub fn is_dotted(&self) -> bool {
+ self.dotted
+ }
+
+ /// Returns the surrounding whitespace
+ pub fn decor_mut(&mut self) -> &mut Decor {
+ &mut self.decor
+ }
+
+ /// Returns the surrounding whitespace
+ pub fn decor(&self) -> &Decor {
+ &self.decor
+ }
+
+ /// Returns the decor associated with a given key of the table.
+ pub fn key_decor_mut(&mut self, key: &str) -> Option<&mut Decor> {
+ self.items.get_mut(key).map(|kv| &mut kv.key.decor)
+ }
+
+ /// Returns the decor associated with a given key of the table.
+ pub fn key_decor(&self, key: &str) -> Option<&Decor> {
+ self.items.get(key).map(|kv| &kv.key.decor)
+ }
+
+ /// Set whitespace after before element
+ pub fn set_preamble(&mut self, preamble: impl Into<RawString>) {
+ self.preamble = preamble.into();
+ }
+
+ /// Whitespace after before element
+ pub fn preamble(&self) -> &RawString {
+ &self.preamble
+ }
+
+ /// Returns the location within the original document
+ pub(crate) fn span(&self) -> Option<std::ops::Range<usize>> {
+ self.span.clone()
+ }
+
+ pub(crate) fn despan(&mut self, input: &str) {
+ self.span = None;
+ self.decor.despan(input);
+ self.preamble.despan(input);
+ for kv in self.items.values_mut() {
+ kv.key.despan(input);
+ kv.value.despan(input);
+ }
+ }
+}
+
+impl InlineTable {
+ /// Returns an iterator over key/value pairs.
+ pub fn iter(&self) -> InlineTableIter<'_> {
+ Box::new(
+ self.items
+ .iter()
+ .filter(|&(_, kv)| kv.value.is_value())
+ .map(|(k, kv)| (&k[..], kv.value.as_value().unwrap())),
+ )
+ }
+
+ /// Returns an iterator over key/value pairs.
+ pub fn iter_mut(&mut self) -> InlineTableIterMut<'_> {
+ Box::new(
+ self.items
+ .iter_mut()
+ .filter(|(_, kv)| kv.value.is_value())
+ .map(|(_, kv)| (kv.key.as_mut(), kv.value.as_value_mut().unwrap())),
+ )
+ }
+
+ /// Returns the number of key/value pairs.
+ pub fn len(&self) -> usize {
+ self.iter().count()
+ }
+
+ /// Returns true iff the table is empty.
+ pub fn is_empty(&self) -> bool {
+ self.len() == 0
+ }
+
+ /// Clears the table, removing all key-value pairs. Keeps the allocated memory for reuse.
+ pub fn clear(&mut self) {
+ self.items.clear()
+ }
+
+ /// Gets the given key's corresponding entry in the Table for in-place manipulation.
+ pub fn entry(&'_ mut self, key: impl Into<InternalString>) -> InlineEntry<'_> {
+ match self.items.entry(key.into()) {
+ indexmap::map::Entry::Occupied(mut entry) => {
+ // Ensure it is a `Value` to simplify `InlineOccupiedEntry`'s code.
+ let scratch = std::mem::take(&mut entry.get_mut().value);
+ let scratch = Item::Value(
+ scratch
+ .into_value()
+ // HACK: `Item::None` is a corner case of a corner case, let's just pick a
+ // "safe" value
+ .unwrap_or_else(|_| Value::InlineTable(Default::default())),
+ );
+ entry.get_mut().value = scratch;
+
+ InlineEntry::Occupied(InlineOccupiedEntry { entry })
+ }
+ indexmap::map::Entry::Vacant(entry) => {
+ InlineEntry::Vacant(InlineVacantEntry { entry, key: None })
+ }
+ }
+ }
+
+ /// Gets the given key's corresponding entry in the Table for in-place manipulation.
+ pub fn entry_format<'a>(&'a mut self, key: &Key) -> InlineEntry<'a> {
+ // Accept a `&Key` to be consistent with `entry`
+ match self.items.entry(key.get().into()) {
+ indexmap::map::Entry::Occupied(mut entry) => {
+ // Ensure it is a `Value` to simplify `InlineOccupiedEntry`'s code.
+ let scratch = std::mem::take(&mut entry.get_mut().value);
+ let scratch = Item::Value(
+ scratch
+ .into_value()
+ // HACK: `Item::None` is a corner case of a corner case, let's just pick a
+ // "safe" value
+ .unwrap_or_else(|_| Value::InlineTable(Default::default())),
+ );
+ entry.get_mut().value = scratch;
+
+ InlineEntry::Occupied(InlineOccupiedEntry { entry })
+ }
+ indexmap::map::Entry::Vacant(entry) => InlineEntry::Vacant(InlineVacantEntry {
+ entry,
+ key: Some(key.clone()),
+ }),
+ }
+ }
+ /// Return an optional reference to the value at the given the key.
+ pub fn get(&self, key: &str) -> Option<&Value> {
+ self.items.get(key).and_then(|kv| kv.value.as_value())
+ }
+
+ /// Return an optional mutable reference to the value at the given the key.
+ pub fn get_mut(&mut self, key: &str) -> Option<&mut Value> {
+ self.items
+ .get_mut(key)
+ .and_then(|kv| kv.value.as_value_mut())
+ }
+
+ /// Return references to the key-value pair stored for key, if it is present, else None.
+ pub fn get_key_value<'a>(&'a self, key: &str) -> Option<(&'a Key, &'a Item)> {
+ self.items.get(key).and_then(|kv| {
+ if !kv.value.is_none() {
+ Some((&kv.key, &kv.value))
+ } else {
+ None
+ }
+ })
+ }
+
+ /// Return mutable references to the key-value pair stored for key, if it is present, else None.
+ pub fn get_key_value_mut<'a>(&'a mut self, key: &str) -> Option<(KeyMut<'a>, &'a mut Item)> {
+ self.items.get_mut(key).and_then(|kv| {
+ if !kv.value.is_none() {
+ Some((kv.key.as_mut(), &mut kv.value))
+ } else {
+ None
+ }
+ })
+ }
+
+ /// Returns true iff the table contains given key.
+ pub fn contains_key(&self, key: &str) -> bool {
+ if let Some(kv) = self.items.get(key) {
+ kv.value.is_value()
+ } else {
+ false
+ }
+ }
+
+ /// Inserts a key/value pair if the table does not contain the key.
+ /// Returns a mutable reference to the corresponding value.
+ pub fn get_or_insert<V: Into<Value>>(
+ &mut self,
+ key: impl Into<InternalString>,
+ value: V,
+ ) -> &mut Value {
+ let key = key.into();
+ self.items
+ .entry(key.clone())
+ .or_insert(TableKeyValue::new(Key::new(key), Item::Value(value.into())))
+ .value
+ .as_value_mut()
+ .expect("non-value type in inline table")
+ }
+
+ /// Inserts a key-value pair into the map.
+ pub fn insert(&mut self, key: impl Into<InternalString>, value: Value) -> Option<Value> {
+ let key = key.into();
+ let kv = TableKeyValue::new(Key::new(key.clone()), Item::Value(value));
+ self.items
+ .insert(key, kv)
+ .and_then(|kv| kv.value.into_value().ok())
+ }
+
+ /// Inserts a key-value pair into the map.
+ pub fn insert_formatted(&mut self, key: &Key, value: Value) -> Option<Value> {
+ let kv = TableKeyValue::new(key.to_owned(), Item::Value(value));
+ self.items
+ .insert(InternalString::from(key.get()), kv)
+ .filter(|kv| kv.value.is_value())
+ .map(|kv| kv.value.into_value().unwrap())
+ }
+
+ /// Removes an item given the key.
+ pub fn remove(&mut self, key: &str) -> Option<Value> {
+ self.items
+ .shift_remove(key)
+ .and_then(|kv| kv.value.into_value().ok())
+ }
+
+ /// Removes a key from the map, returning the stored key and value if the key was previously in the map.
+ pub fn remove_entry(&mut self, key: &str) -> Option<(Key, Value)> {
+ self.items.shift_remove(key).and_then(|kv| {
+ let key = kv.key;
+ kv.value.into_value().ok().map(|value| (key, value))
+ })
+ }
+}
+
+impl std::fmt::Display for InlineTable {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ crate::encode::Encode::encode(self, f, None, ("", ""))
+ }
+}
+
+impl<K: Into<Key>, V: Into<Value>> Extend<(K, V)> for InlineTable {
+ fn extend<T: IntoIterator<Item = (K, V)>>(&mut self, iter: T) {
+ for (key, value) in iter {
+ let key = key.into();
+ let value = Item::Value(value.into());
+ let value = TableKeyValue::new(key, value);
+ self.items
+ .insert(InternalString::from(value.key.get()), value);
+ }
+ }
+}
+
+impl<K: Into<Key>, V: Into<Value>> FromIterator<(K, V)> for InlineTable {
+ fn from_iter<I>(iter: I) -> Self
+ where
+ I: IntoIterator<Item = (K, V)>,
+ {
+ let mut table = InlineTable::new();
+ table.extend(iter);
+ table
+ }
+}
+
+impl IntoIterator for InlineTable {
+ type Item = (InternalString, Value);
+ type IntoIter = InlineTableIntoIter;
+
+ fn into_iter(self) -> Self::IntoIter {
+ Box::new(
+ self.items
+ .into_iter()
+ .filter(|(_, kv)| kv.value.is_value())
+ .map(|(k, kv)| (k, kv.value.into_value().unwrap())),
+ )
+ }
+}
+
+impl<'s> IntoIterator for &'s InlineTable {
+ type Item = (&'s str, &'s Value);
+ type IntoIter = InlineTableIter<'s>;
+
+ fn into_iter(self) -> Self::IntoIter {
+ self.iter()
+ }
+}
+
+fn decorate_inline_table(table: &mut InlineTable) {
+ for (key_decor, value) in table
+ .items
+ .iter_mut()
+ .filter(|&(_, ref kv)| kv.value.is_value())
+ .map(|(_, kv)| (&mut kv.key.decor, kv.value.as_value_mut().unwrap()))
+ {
+ key_decor.clear();
+ value.decor_mut().clear();
+ }
+}
+
+/// An owned iterator type over key/value pairs of an inline table.
+pub type InlineTableIntoIter = Box<dyn Iterator<Item = (InternalString, Value)>>;
+/// An iterator type over key/value pairs of an inline table.
+pub type InlineTableIter<'a> = Box<dyn Iterator<Item = (&'a str, &'a Value)> + 'a>;
+/// A mutable iterator type over key/value pairs of an inline table.
+pub type InlineTableIterMut<'a> = Box<dyn Iterator<Item = (KeyMut<'a>, &'a mut Value)> + 'a>;
+
+impl TableLike for InlineTable {
+ fn iter(&self) -> Iter<'_> {
+ Box::new(self.items.iter().map(|(key, kv)| (&key[..], &kv.value)))
+ }
+ fn iter_mut(&mut self) -> IterMut<'_> {
+ Box::new(
+ self.items
+ .iter_mut()
+ .map(|(_, kv)| (kv.key.as_mut(), &mut kv.value)),
+ )
+ }
+ fn clear(&mut self) {
+ self.clear();
+ }
+ fn entry<'a>(&'a mut self, key: &str) -> crate::Entry<'a> {
+ // Accept a `&str` rather than an owned type to keep `InternalString`, well, internal
+ match self.items.entry(key.into()) {
+ indexmap::map::Entry::Occupied(entry) => {
+ crate::Entry::Occupied(crate::OccupiedEntry { entry })
+ }
+ indexmap::map::Entry::Vacant(entry) => {
+ crate::Entry::Vacant(crate::VacantEntry { entry, key: None })
+ }
+ }
+ }
+ fn entry_format<'a>(&'a mut self, key: &Key) -> crate::Entry<'a> {
+ // Accept a `&Key` to be consistent with `entry`
+ match self.items.entry(key.get().into()) {
+ indexmap::map::Entry::Occupied(entry) => {
+ crate::Entry::Occupied(crate::OccupiedEntry { entry })
+ }
+ indexmap::map::Entry::Vacant(entry) => crate::Entry::Vacant(crate::VacantEntry {
+ entry,
+ key: Some(key.to_owned()),
+ }),
+ }
+ }
+ fn get<'s>(&'s self, key: &str) -> Option<&'s Item> {
+ self.items.get(key).map(|kv| &kv.value)
+ }
+ fn get_mut<'s>(&'s mut self, key: &str) -> Option<&'s mut Item> {
+ self.items.get_mut(key).map(|kv| &mut kv.value)
+ }
+ fn get_key_value<'a>(&'a self, key: &str) -> Option<(&'a Key, &'a Item)> {
+ self.get_key_value(key)
+ }
+ fn get_key_value_mut<'a>(&'a mut self, key: &str) -> Option<(KeyMut<'a>, &'a mut Item)> {
+ self.get_key_value_mut(key)
+ }
+ fn contains_key(&self, key: &str) -> bool {
+ self.contains_key(key)
+ }
+ fn insert(&mut self, key: &str, value: Item) -> Option<Item> {
+ self.insert(key, value.into_value().unwrap())
+ .map(Item::Value)
+ }
+ fn remove(&mut self, key: &str) -> Option<Item> {
+ self.remove(key).map(Item::Value)
+ }
+
+ fn get_values(&self) -> Vec<(Vec<&Key>, &Value)> {
+ self.get_values()
+ }
+ fn fmt(&mut self) {
+ self.fmt()
+ }
+ fn sort_values(&mut self) {
+ self.sort_values()
+ }
+ fn set_dotted(&mut self, yes: bool) {
+ self.set_dotted(yes)
+ }
+ fn is_dotted(&self) -> bool {
+ self.is_dotted()
+ }
+
+ fn key_decor_mut(&mut self, key: &str) -> Option<&mut Decor> {
+ self.key_decor_mut(key)
+ }
+ fn key_decor(&self, key: &str) -> Option<&Decor> {
+ self.key_decor(key)
+ }
+}
+
+// `{ key1 = value1, ... }`
+pub(crate) const DEFAULT_INLINE_KEY_DECOR: (&str, &str) = (" ", " ");
+
+/// A view into a single location in a map, which may be vacant or occupied.
+pub enum InlineEntry<'a> {
+ /// An occupied Entry.
+ Occupied(InlineOccupiedEntry<'a>),
+ /// A vacant Entry.
+ Vacant(InlineVacantEntry<'a>),
+}
+
+impl<'a> InlineEntry<'a> {
+ /// Returns the entry key
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use toml_edit::Table;
+ ///
+ /// let mut map = Table::new();
+ ///
+ /// assert_eq!("hello", map.entry("hello").key());
+ /// ```
+ pub fn key(&self) -> &str {
+ match self {
+ InlineEntry::Occupied(e) => e.key(),
+ InlineEntry::Vacant(e) => e.key(),
+ }
+ }
+
+ /// Ensures a value is in the entry by inserting the default if empty, and returns
+ /// a mutable reference to the value in the entry.
+ pub fn or_insert(self, default: Value) -> &'a mut Value {
+ match self {
+ InlineEntry::Occupied(entry) => entry.into_mut(),
+ InlineEntry::Vacant(entry) => entry.insert(default),
+ }
+ }
+
+ /// Ensures a value is in the entry by inserting the result of the default function if empty,
+ /// and returns a mutable reference to the value in the entry.
+ pub fn or_insert_with<F: FnOnce() -> Value>(self, default: F) -> &'a mut Value {
+ match self {
+ InlineEntry::Occupied(entry) => entry.into_mut(),
+ InlineEntry::Vacant(entry) => entry.insert(default()),
+ }
+ }
+}
+
+/// A view into a single occupied location in a `IndexMap`.
+pub struct InlineOccupiedEntry<'a> {
+ entry: indexmap::map::OccupiedEntry<'a, InternalString, TableKeyValue>,
+}
+
+impl<'a> InlineOccupiedEntry<'a> {
+ /// Gets a reference to the entry key
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use toml_edit::Table;
+ ///
+ /// let mut map = Table::new();
+ ///
+ /// assert_eq!("foo", map.entry("foo").key());
+ /// ```
+ pub fn key(&self) -> &str {
+ self.entry.key().as_str()
+ }
+
+ /// Gets a mutable reference to the entry key
+ pub fn key_mut(&mut self) -> KeyMut<'_> {
+ self.entry.get_mut().key.as_mut()
+ }
+
+ /// Gets a reference to the value in the entry.
+ pub fn get(&self) -> &Value {
+ self.entry.get().value.as_value().unwrap()
+ }
+
+ /// Gets a mutable reference to the value in the entry.
+ pub fn get_mut(&mut self) -> &mut Value {
+ self.entry.get_mut().value.as_value_mut().unwrap()
+ }
+
+ /// Converts the OccupiedEntry into a mutable reference to the value in the entry
+ /// with a lifetime bound to the map itself
+ pub fn into_mut(self) -> &'a mut Value {
+ self.entry.into_mut().value.as_value_mut().unwrap()
+ }
+
+ /// Sets the value of the entry, and returns the entry's old value
+ pub fn insert(&mut self, value: Value) -> Value {
+ let mut value = Item::Value(value);
+ std::mem::swap(&mut value, &mut self.entry.get_mut().value);
+ value.into_value().unwrap()
+ }
+
+ /// Takes the value out of the entry, and returns it
+ pub fn remove(self) -> Value {
+ self.entry.shift_remove().value.into_value().unwrap()
+ }
+}
+
+/// A view into a single empty location in a `IndexMap`.
+pub struct InlineVacantEntry<'a> {
+ entry: indexmap::map::VacantEntry<'a, InternalString, TableKeyValue>,
+ key: Option<Key>,
+}
+
+impl<'a> InlineVacantEntry<'a> {
+ /// Gets a reference to the entry key
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use toml_edit::Table;
+ ///
+ /// let mut map = Table::new();
+ ///
+ /// assert_eq!("foo", map.entry("foo").key());
+ /// ```
+ pub fn key(&self) -> &str {
+ self.entry.key().as_str()
+ }
+
+ /// Sets the value of the entry with the VacantEntry's key,
+ /// and returns a mutable reference to it
+ pub fn insert(self, value: Value) -> &'a mut Value {
+ let entry = self.entry;
+ let key = self.key.unwrap_or_else(|| Key::new(entry.key().as_str()));
+ let value = Item::Value(value);
+ entry
+ .insert(TableKeyValue::new(key, value))
+ .value
+ .as_value_mut()
+ .unwrap()
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/internal_string.rs b/vendor/toml_edit-0.19.11/src/internal_string.rs
new file mode 100644
index 000000000..d4347d25b
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/internal_string.rs
@@ -0,0 +1,183 @@
+use std::borrow::Borrow;
+use std::str::FromStr;
+
+/// Opaque string storage internal to `toml_edit`
+#[derive(Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
+pub struct InternalString(Inner);
+
+#[cfg(feature = "kstring")]
+type Inner = kstring::KString;
+#[cfg(not(feature = "kstring"))]
+type Inner = String;
+
+impl InternalString {
+ /// Create an empty string
+ pub fn new() -> Self {
+ InternalString(Inner::new())
+ }
+
+ /// Access the underlying string
+ #[inline]
+ pub fn as_str(&self) -> &str {
+ self.0.as_str()
+ }
+}
+
+impl std::fmt::Debug for InternalString {
+ #[inline]
+ fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
+ self.0.fmt(formatter)
+ }
+}
+
+impl std::ops::Deref for InternalString {
+ type Target = str;
+
+ #[inline]
+ fn deref(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl Borrow<str> for InternalString {
+ #[inline]
+ fn borrow(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl AsRef<str> for InternalString {
+ #[inline]
+ fn as_ref(&self) -> &str {
+ self.as_str()
+ }
+}
+
+impl From<&str> for InternalString {
+ #[inline]
+ fn from(s: &str) -> Self {
+ #[cfg(feature = "kstring")]
+ let inner = kstring::KString::from_ref(s);
+ #[cfg(not(feature = "kstring"))]
+ let inner = String::from(s);
+
+ InternalString(inner)
+ }
+}
+
+impl From<String> for InternalString {
+ #[inline]
+ fn from(s: String) -> Self {
+ #[allow(clippy::useless_conversion)] // handle any string type
+ InternalString(s.into())
+ }
+}
+
+impl From<&String> for InternalString {
+ #[inline]
+ fn from(s: &String) -> Self {
+ InternalString(s.into())
+ }
+}
+
+impl From<&InternalString> for InternalString {
+ #[inline]
+ fn from(s: &InternalString) -> Self {
+ s.clone()
+ }
+}
+
+impl From<Box<str>> for InternalString {
+ #[inline]
+ fn from(s: Box<str>) -> Self {
+ InternalString(s.into())
+ }
+}
+
+impl FromStr for InternalString {
+ type Err = core::convert::Infallible;
+ #[inline]
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ Ok(Self::from(s))
+ }
+}
+
+impl std::fmt::Display for InternalString {
+ #[inline]
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ self.as_str().fmt(f)
+ }
+}
+
+#[cfg(feature = "serde")]
+impl serde::Serialize for InternalString {
+ #[inline]
+ fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+ where
+ S: serde::Serializer,
+ {
+ serializer.serialize_str(self.as_str())
+ }
+}
+
+#[cfg(feature = "serde")]
+impl<'de> serde::Deserialize<'de> for InternalString {
+ fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+ where
+ D: serde::Deserializer<'de>,
+ {
+ deserializer.deserialize_string(StringVisitor)
+ }
+}
+
+#[cfg(feature = "serde")]
+struct StringVisitor;
+
+#[cfg(feature = "serde")]
+impl<'de> serde::de::Visitor<'de> for StringVisitor {
+ type Value = InternalString;
+
+ fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ formatter.write_str("a string")
+ }
+
+ fn visit_str<E>(self, v: &str) -> Result<Self::Value, E>
+ where
+ E: serde::de::Error,
+ {
+ Ok(InternalString::from(v))
+ }
+
+ fn visit_string<E>(self, v: String) -> Result<Self::Value, E>
+ where
+ E: serde::de::Error,
+ {
+ Ok(InternalString::from(v))
+ }
+
+ fn visit_bytes<E>(self, v: &[u8]) -> Result<Self::Value, E>
+ where
+ E: serde::de::Error,
+ {
+ match std::str::from_utf8(v) {
+ Ok(s) => Ok(InternalString::from(s)),
+ Err(_) => Err(serde::de::Error::invalid_value(
+ serde::de::Unexpected::Bytes(v),
+ &self,
+ )),
+ }
+ }
+
+ fn visit_byte_buf<E>(self, v: Vec<u8>) -> Result<Self::Value, E>
+ where
+ E: serde::de::Error,
+ {
+ match String::from_utf8(v) {
+ Ok(s) => Ok(InternalString::from(s)),
+ Err(e) => Err(serde::de::Error::invalid_value(
+ serde::de::Unexpected::Bytes(&e.into_bytes()),
+ &self,
+ )),
+ }
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/item.rs b/vendor/toml_edit-0.19.11/src/item.rs
new file mode 100644
index 000000000..48a1a3566
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/item.rs
@@ -0,0 +1,381 @@
+use std::str::FromStr;
+
+use toml_datetime::*;
+
+use crate::array_of_tables::ArrayOfTables;
+use crate::table::TableLike;
+use crate::{Array, InlineTable, Table, Value};
+
+/// Type representing either a value, a table, an array of tables, or none.
+#[derive(Debug, Clone)]
+pub enum Item {
+ /// Type representing none.
+ None,
+ /// Type representing value.
+ Value(Value),
+ /// Type representing table.
+ Table(Table),
+ /// Type representing array of tables.
+ ArrayOfTables(ArrayOfTables),
+}
+
+impl Item {
+ /// Sets `self` to the given item iff `self` is none and
+ /// returns a mutable reference to `self`.
+ pub fn or_insert(&mut self, item: Item) -> &mut Item {
+ if self.is_none() {
+ *self = item
+ }
+ self
+ }
+}
+
+// TODO: This should be generated by macro or derive
+/// Downcasting
+impl Item {
+ /// Text description of value type
+ pub fn type_name(&self) -> &'static str {
+ match self {
+ Item::None => "none",
+ Item::Value(v) => v.type_name(),
+ Item::Table(..) => "table",
+ Item::ArrayOfTables(..) => "array of tables",
+ }
+ }
+
+ /// Index into a TOML array or map. A string index can be used to access a
+ /// value in a map, and a usize index can be used to access an element of an
+ /// array.
+ ///
+ /// Returns `None` if:
+ /// - The type of `self` does not match the type of the
+ /// index, for example if the index is a string and `self` is an array or a
+ /// number.
+ /// - The given key does not exist in the map
+ /// or the given index is not within the bounds of the array.
+ pub fn get<I: crate::index::Index>(&self, index: I) -> Option<&Item> {
+ index.index(self)
+ }
+
+ /// Mutably index into a TOML array or map. A string index can be used to
+ /// access a value in a map, and a usize index can be used to access an
+ /// element of an array.
+ ///
+ /// Returns `None` if:
+ /// - The type of `self` does not match the type of the
+ /// index, for example if the index is a string and `self` is an array or a
+ /// number.
+ /// - The given key does not exist in the map
+ /// or the given index is not within the bounds of the array.
+ pub fn get_mut<I: crate::index::Index>(&mut self, index: I) -> Option<&mut Item> {
+ index.index_mut(self)
+ }
+
+ /// Casts `self` to value.
+ pub fn as_value(&self) -> Option<&Value> {
+ match *self {
+ Item::Value(ref v) => Some(v),
+ _ => None,
+ }
+ }
+ /// Casts `self` to table.
+ pub fn as_table(&self) -> Option<&Table> {
+ match *self {
+ Item::Table(ref t) => Some(t),
+ _ => None,
+ }
+ }
+ /// Casts `self` to array of tables.
+ pub fn as_array_of_tables(&self) -> Option<&ArrayOfTables> {
+ match *self {
+ Item::ArrayOfTables(ref a) => Some(a),
+ _ => None,
+ }
+ }
+ /// Casts `self` to mutable value.
+ pub fn as_value_mut(&mut self) -> Option<&mut Value> {
+ match *self {
+ Item::Value(ref mut v) => Some(v),
+ _ => None,
+ }
+ }
+ /// Casts `self` to mutable table.
+ pub fn as_table_mut(&mut self) -> Option<&mut Table> {
+ match *self {
+ Item::Table(ref mut t) => Some(t),
+ _ => None,
+ }
+ }
+ /// Casts `self` to mutable array of tables.
+ pub fn as_array_of_tables_mut(&mut self) -> Option<&mut ArrayOfTables> {
+ match *self {
+ Item::ArrayOfTables(ref mut a) => Some(a),
+ _ => None,
+ }
+ }
+ /// Casts `self` to value.
+ pub fn into_value(self) -> Result<Value, Self> {
+ match self {
+ Item::None => Err(self),
+ Item::Value(v) => Ok(v),
+ Item::Table(v) => {
+ let v = v.into_inline_table();
+ Ok(Value::InlineTable(v))
+ }
+ Item::ArrayOfTables(v) => {
+ let v = v.into_array();
+ Ok(Value::Array(v))
+ }
+ }
+ }
+ /// In-place convert to a value
+ pub fn make_value(&mut self) {
+ let other = std::mem::take(self);
+ let other = other.into_value().map(Item::Value).unwrap_or(Item::None);
+ *self = other;
+ }
+ /// Casts `self` to table.
+ pub fn into_table(self) -> Result<Table, Self> {
+ match self {
+ Item::Table(t) => Ok(t),
+ Item::Value(Value::InlineTable(t)) => Ok(t.into_table()),
+ _ => Err(self),
+ }
+ }
+ /// Casts `self` to array of tables.
+ pub fn into_array_of_tables(self) -> Result<ArrayOfTables, Self> {
+ match self {
+ Item::ArrayOfTables(a) => Ok(a),
+ Item::Value(Value::Array(a)) => {
+ if a.is_empty() {
+ Err(Item::Value(Value::Array(a)))
+ } else if a.iter().all(|v| v.is_inline_table()) {
+ let mut aot = ArrayOfTables::new();
+ aot.values = a.values;
+ for value in aot.values.iter_mut() {
+ value.make_item();
+ }
+ Ok(aot)
+ } else {
+ Err(Item::Value(Value::Array(a)))
+ }
+ }
+ _ => Err(self),
+ }
+ }
+ // Starting private because the name is unclear
+ pub(crate) fn make_item(&mut self) {
+ let other = std::mem::take(self);
+ let other = match other.into_table().map(crate::Item::Table) {
+ Ok(i) => i,
+ Err(i) => i,
+ };
+ let other = match other.into_array_of_tables().map(crate::Item::ArrayOfTables) {
+ Ok(i) => i,
+ Err(i) => i,
+ };
+ *self = other;
+ }
+ /// Returns true iff `self` is a value.
+ pub fn is_value(&self) -> bool {
+ self.as_value().is_some()
+ }
+ /// Returns true iff `self` is a table.
+ pub fn is_table(&self) -> bool {
+ self.as_table().is_some()
+ }
+ /// Returns true iff `self` is an array of tables.
+ pub fn is_array_of_tables(&self) -> bool {
+ self.as_array_of_tables().is_some()
+ }
+ /// Returns true iff `self` is `None`.
+ pub fn is_none(&self) -> bool {
+ matches!(*self, Item::None)
+ }
+
+ // Duplicate Value downcasting API
+
+ /// Casts `self` to integer.
+ pub fn as_integer(&self) -> Option<i64> {
+ self.as_value().and_then(Value::as_integer)
+ }
+
+ /// Returns true iff `self` is an integer.
+ pub fn is_integer(&self) -> bool {
+ self.as_integer().is_some()
+ }
+
+ /// Casts `self` to float.
+ pub fn as_float(&self) -> Option<f64> {
+ self.as_value().and_then(Value::as_float)
+ }
+
+ /// Returns true iff `self` is a float.
+ pub fn is_float(&self) -> bool {
+ self.as_float().is_some()
+ }
+
+ /// Casts `self` to boolean.
+ pub fn as_bool(&self) -> Option<bool> {
+ self.as_value().and_then(Value::as_bool)
+ }
+
+ /// Returns true iff `self` is a boolean.
+ pub fn is_bool(&self) -> bool {
+ self.as_bool().is_some()
+ }
+
+ /// Casts `self` to str.
+ pub fn as_str(&self) -> Option<&str> {
+ self.as_value().and_then(Value::as_str)
+ }
+
+ /// Returns true iff `self` is a string.
+ pub fn is_str(&self) -> bool {
+ self.as_str().is_some()
+ }
+
+ /// Casts `self` to date-time.
+ pub fn as_datetime(&self) -> Option<&Datetime> {
+ self.as_value().and_then(Value::as_datetime)
+ }
+
+ /// Returns true iff `self` is a date-time.
+ pub fn is_datetime(&self) -> bool {
+ self.as_datetime().is_some()
+ }
+
+ /// Casts `self` to array.
+ pub fn as_array(&self) -> Option<&Array> {
+ self.as_value().and_then(Value::as_array)
+ }
+
+ /// Casts `self` to mutable array.
+ pub fn as_array_mut(&mut self) -> Option<&mut Array> {
+ self.as_value_mut().and_then(Value::as_array_mut)
+ }
+
+ /// Returns true iff `self` is an array.
+ pub fn is_array(&self) -> bool {
+ self.as_array().is_some()
+ }
+
+ /// Casts `self` to inline table.
+ pub fn as_inline_table(&self) -> Option<&InlineTable> {
+ self.as_value().and_then(Value::as_inline_table)
+ }
+
+ /// Casts `self` to mutable inline table.
+ pub fn as_inline_table_mut(&mut self) -> Option<&mut InlineTable> {
+ self.as_value_mut().and_then(Value::as_inline_table_mut)
+ }
+
+ /// Returns true iff `self` is an inline table.
+ pub fn is_inline_table(&self) -> bool {
+ self.as_inline_table().is_some()
+ }
+
+ /// Casts `self` to either a table or an inline table.
+ pub fn as_table_like(&self) -> Option<&dyn TableLike> {
+ self.as_table()
+ .map(|t| t as &dyn TableLike)
+ .or_else(|| self.as_inline_table().map(|t| t as &dyn TableLike))
+ }
+
+ /// Casts `self` to either a table or an inline table.
+ pub fn as_table_like_mut(&mut self) -> Option<&mut dyn TableLike> {
+ match self {
+ Item::Table(t) => Some(t as &mut dyn TableLike),
+ Item::Value(Value::InlineTable(t)) => Some(t as &mut dyn TableLike),
+ _ => None,
+ }
+ }
+
+ /// Returns true iff `self` is either a table, or an inline table.
+ pub fn is_table_like(&self) -> bool {
+ self.as_table_like().is_some()
+ }
+
+ /// Returns the location within the original document
+ pub(crate) fn span(&self) -> Option<std::ops::Range<usize>> {
+ match self {
+ Item::None => None,
+ Item::Value(v) => v.span(),
+ Item::Table(v) => v.span(),
+ Item::ArrayOfTables(v) => v.span(),
+ }
+ }
+
+ pub(crate) fn despan(&mut self, input: &str) {
+ match self {
+ Item::None => {}
+ Item::Value(v) => v.despan(input),
+ Item::Table(v) => v.despan(input),
+ Item::ArrayOfTables(v) => v.despan(input),
+ }
+ }
+}
+
+impl Default for Item {
+ fn default() -> Self {
+ Item::None
+ }
+}
+
+impl FromStr for Item {
+ type Err = crate::TomlError;
+
+ /// Parses a value from a &str
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ let value = s.parse::<Value>()?;
+ Ok(Item::Value(value))
+ }
+}
+
+impl std::fmt::Display for Item {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ match &self {
+ Item::None => Ok(()),
+ Item::Value(v) => v.fmt(f),
+ Item::Table(v) => v.fmt(f),
+ Item::ArrayOfTables(v) => v.fmt(f),
+ }
+ }
+}
+
+/// Returns a formatted value.
+///
+/// Since formatting is part of a `Value`, the right hand side of the
+/// assignment needs to be decorated with a space before the value.
+/// The `value` function does just that.
+///
+/// # Examples
+/// ```rust
+/// # use snapbox::assert_eq;
+/// # use toml_edit::*;
+/// let mut table = Table::default();
+/// let mut array = Array::default();
+/// array.push("hello");
+/// array.push("\\, world"); // \ is only allowed in a literal string
+/// table["key1"] = value("value1");
+/// table["key2"] = value(42);
+/// table["key3"] = value(array);
+/// assert_eq(table.to_string(),
+/// r#"key1 = "value1"
+/// key2 = 42
+/// key3 = ["hello", '\, world']
+/// "#);
+/// ```
+pub fn value<V: Into<Value>>(v: V) -> Item {
+ Item::Value(v.into())
+}
+
+/// Returns an empty table.
+pub fn table() -> Item {
+ Item::Table(Table::new())
+}
+
+/// Returns an empty array of tables.
+pub fn array() -> Item {
+ Item::ArrayOfTables(ArrayOfTables::new())
+}
diff --git a/vendor/toml_edit-0.19.11/src/key.rs b/vendor/toml_edit-0.19.11/src/key.rs
new file mode 100644
index 000000000..b7038c36d
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/key.rs
@@ -0,0 +1,333 @@
+use std::borrow::Cow;
+use std::str::FromStr;
+
+use crate::encode::{to_string_repr, StringStyle};
+use crate::parser;
+use crate::parser::key::is_unquoted_char;
+use crate::repr::{Decor, Repr};
+use crate::InternalString;
+
+/// Key as part of a Key/Value Pair or a table header.
+///
+/// # Examples
+///
+/// ```notrust
+/// [dependencies."nom"]
+/// version = "5.0"
+/// 'literal key' = "nonsense"
+/// "basic string key" = 42
+/// ```
+///
+/// There are 3 types of keys:
+///
+/// 1. Bare keys (`version` and `dependencies`)
+///
+/// 2. Basic quoted keys (`"basic string key"` and `"nom"`)
+///
+/// 3. Literal quoted keys (`'literal key'`)
+///
+/// For details see [toml spec](https://github.com/toml-lang/toml/#keyvalue-pair).
+///
+/// To parse a key use `FromStr` trait implementation: `"string".parse::<Key>()`.
+#[derive(Debug, Clone)]
+pub struct Key {
+ key: InternalString,
+ pub(crate) repr: Option<Repr>,
+ pub(crate) decor: Decor,
+}
+
+impl Key {
+ /// Create a new table key
+ pub fn new(key: impl Into<InternalString>) -> Self {
+ Self {
+ key: key.into(),
+ repr: None,
+ decor: Default::default(),
+ }
+ }
+
+ /// Parse a TOML key expression
+ ///
+ /// Unlike `"".parse<Key>()`, this supports dotted keys.
+ pub fn parse(repr: &str) -> Result<Vec<Self>, crate::TomlError> {
+ Self::try_parse_path(repr)
+ }
+
+ pub(crate) fn with_repr_unchecked(mut self, repr: Repr) -> Self {
+ self.repr = Some(repr);
+ self
+ }
+
+ /// While creating the `Key`, add `Decor` to it
+ pub fn with_decor(mut self, decor: Decor) -> Self {
+ self.decor = decor;
+ self
+ }
+
+ /// Access a mutable proxy for the `Key`.
+ pub fn as_mut(&mut self) -> KeyMut<'_> {
+ KeyMut { key: self }
+ }
+
+ /// Returns the parsed key value.
+ pub fn get(&self) -> &str {
+ &self.key
+ }
+
+ pub(crate) fn get_internal(&self) -> &InternalString {
+ &self.key
+ }
+
+ /// Returns key raw representation, if available.
+ pub fn as_repr(&self) -> Option<&Repr> {
+ self.repr.as_ref()
+ }
+
+ /// Returns the default raw representation.
+ pub fn default_repr(&self) -> Repr {
+ to_key_repr(&self.key)
+ }
+
+ /// Returns a raw representation.
+ pub fn display_repr(&self) -> Cow<'_, str> {
+ self.as_repr()
+ .and_then(|r| r.as_raw().as_str())
+ .map(Cow::Borrowed)
+ .unwrap_or_else(|| {
+ Cow::Owned(self.default_repr().as_raw().as_str().unwrap().to_owned())
+ })
+ }
+
+ /// Returns the surrounding whitespace
+ pub fn decor_mut(&mut self) -> &mut Decor {
+ &mut self.decor
+ }
+
+ /// Returns the surrounding whitespace
+ pub fn decor(&self) -> &Decor {
+ &self.decor
+ }
+
+ /// Returns the location within the original document
+ #[cfg(feature = "serde")]
+ pub(crate) fn span(&self) -> Option<std::ops::Range<usize>> {
+ self.repr.as_ref().and_then(|r| r.span())
+ }
+
+ pub(crate) fn despan(&mut self, input: &str) {
+ self.decor.despan(input);
+ if let Some(repr) = &mut self.repr {
+ repr.despan(input)
+ }
+ }
+
+ /// Auto formats the key.
+ pub fn fmt(&mut self) {
+ self.repr = Some(to_key_repr(&self.key));
+ self.decor.clear();
+ }
+
+ fn try_parse_simple(s: &str) -> Result<Key, crate::TomlError> {
+ let mut key = parser::parse_key(s)?;
+ key.despan(s);
+ Ok(key)
+ }
+
+ fn try_parse_path(s: &str) -> Result<Vec<Key>, crate::TomlError> {
+ let mut keys = parser::parse_key_path(s)?;
+ for key in &mut keys {
+ key.despan(s);
+ }
+ Ok(keys)
+ }
+}
+
+impl std::ops::Deref for Key {
+ type Target = str;
+
+ fn deref(&self) -> &Self::Target {
+ self.get()
+ }
+}
+
+impl std::hash::Hash for Key {
+ fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
+ self.get().hash(state);
+ }
+}
+
+impl Ord for Key {
+ fn cmp(&self, other: &Self) -> std::cmp::Ordering {
+ self.get().cmp(other.get())
+ }
+}
+
+impl PartialOrd for Key {
+ fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
+ Some(self.cmp(other))
+ }
+}
+
+impl Eq for Key {}
+
+impl PartialEq for Key {
+ #[inline]
+ fn eq(&self, other: &Key) -> bool {
+ PartialEq::eq(self.get(), other.get())
+ }
+}
+
+impl PartialEq<str> for Key {
+ #[inline]
+ fn eq(&self, other: &str) -> bool {
+ PartialEq::eq(self.get(), other)
+ }
+}
+
+impl<'s> PartialEq<&'s str> for Key {
+ #[inline]
+ fn eq(&self, other: &&str) -> bool {
+ PartialEq::eq(self.get(), *other)
+ }
+}
+
+impl PartialEq<String> for Key {
+ #[inline]
+ fn eq(&self, other: &String) -> bool {
+ PartialEq::eq(self.get(), other.as_str())
+ }
+}
+
+impl std::fmt::Display for Key {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ crate::encode::Encode::encode(self, f, None, ("", ""))
+ }
+}
+
+impl FromStr for Key {
+ type Err = crate::TomlError;
+
+ /// Tries to parse a key from a &str,
+ /// if fails, tries as basic quoted key (surrounds with "")
+ /// and then literal quoted key (surrounds with '')
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ Key::try_parse_simple(s)
+ }
+}
+
+fn to_key_repr(key: &str) -> Repr {
+ if key.as_bytes().iter().copied().all(is_unquoted_char) && !key.is_empty() {
+ Repr::new_unchecked(key)
+ } else {
+ to_string_repr(key, Some(StringStyle::OnelineSingle), Some(false))
+ }
+}
+
+impl<'b> From<&'b str> for Key {
+ fn from(s: &'b str) -> Self {
+ Key::new(s)
+ }
+}
+
+impl<'b> From<&'b String> for Key {
+ fn from(s: &'b String) -> Self {
+ Key::new(s)
+ }
+}
+
+impl From<String> for Key {
+ fn from(s: String) -> Self {
+ Key::new(s)
+ }
+}
+
+impl From<InternalString> for Key {
+ fn from(s: InternalString) -> Self {
+ Key::new(s)
+ }
+}
+
+#[doc(hidden)]
+impl From<Key> for InternalString {
+ fn from(key: Key) -> InternalString {
+ key.key
+ }
+}
+
+/// A mutable reference to a `Key`
+#[derive(Debug, Eq, PartialEq, PartialOrd, Ord, Hash)]
+pub struct KeyMut<'k> {
+ key: &'k mut Key,
+}
+
+impl<'k> KeyMut<'k> {
+ /// Returns the parsed key value.
+ pub fn get(&self) -> &str {
+ self.key.get()
+ }
+
+ /// Returns the raw representation, if available.
+ pub fn as_repr(&self) -> Option<&Repr> {
+ self.key.as_repr()
+ }
+
+ /// Returns the default raw representation.
+ pub fn default_repr(&self) -> Repr {
+ self.key.default_repr()
+ }
+
+ /// Returns a raw representation.
+ pub fn display_repr(&self) -> Cow<str> {
+ self.key.display_repr()
+ }
+
+ /// Returns the surrounding whitespace
+ pub fn decor_mut(&mut self) -> &mut Decor {
+ self.key.decor_mut()
+ }
+
+ /// Returns the surrounding whitespace
+ pub fn decor(&self) -> &Decor {
+ self.key.decor()
+ }
+
+ /// Auto formats the key.
+ pub fn fmt(&mut self) {
+ self.key.fmt()
+ }
+}
+
+impl<'k> std::ops::Deref for KeyMut<'k> {
+ type Target = str;
+
+ fn deref(&self) -> &Self::Target {
+ self.get()
+ }
+}
+
+impl<'s> PartialEq<str> for KeyMut<'s> {
+ #[inline]
+ fn eq(&self, other: &str) -> bool {
+ PartialEq::eq(self.get(), other)
+ }
+}
+
+impl<'s> PartialEq<&'s str> for KeyMut<'s> {
+ #[inline]
+ fn eq(&self, other: &&str) -> bool {
+ PartialEq::eq(self.get(), *other)
+ }
+}
+
+impl<'s> PartialEq<String> for KeyMut<'s> {
+ #[inline]
+ fn eq(&self, other: &String) -> bool {
+ PartialEq::eq(self.get(), other.as_str())
+ }
+}
+
+impl<'k> std::fmt::Display for KeyMut<'k> {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ std::fmt::Display::fmt(&self.key, f)
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/lib.rs b/vendor/toml_edit-0.19.11/src/lib.rs
new file mode 100644
index 000000000..80c0ddda2
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/lib.rs
@@ -0,0 +1,124 @@
+#![deny(missing_docs)]
+// https://github.com/Marwes/combine/issues/172
+#![recursion_limit = "256"]
+#![cfg_attr(docsrs, feature(doc_auto_cfg))]
+
+//! # `toml_edit`
+//!
+//! This crate allows you to parse and modify toml
+//! documents, while preserving comments, spaces *and
+//! relative order* or items.
+//!
+//! If you also need the ease of a more traditional API, see the [`toml`] crate.
+//!
+//! # Example
+//!
+//! ```rust
+//! use toml_edit::{Document, value};
+//!
+//! let toml = r#"
+//! "hello" = 'toml!' # comment
+//! ['a'.b]
+//! "#;
+//! let mut doc = toml.parse::<Document>().expect("invalid doc");
+//! assert_eq!(doc.to_string(), toml);
+//! // let's add a new key/value pair inside a.b: c = {d = "hello"}
+//! doc["a"]["b"]["c"]["d"] = value("hello");
+//! // autoformat inline table a.b.c: { d = "hello" }
+//! doc["a"]["b"]["c"].as_inline_table_mut().map(|t| t.fmt());
+//! let expected = r#"
+//! "hello" = 'toml!' # comment
+//! ['a'.b]
+//! c = { d = "hello" }
+//! "#;
+//! assert_eq!(doc.to_string(), expected);
+//! ```
+//!
+//! ## Controlling formatting
+//!
+//! By default, values are created with default formatting
+//! ```rust
+//! let mut doc = toml_edit::Document::new();
+//! doc["foo"] = toml_edit::value("bar");
+//! let expected = r#"foo = "bar"
+//! "#;
+//! assert_eq!(doc.to_string(), expected);
+//! ```
+//!
+//! You can choose a custom TOML representation by parsing the value.
+//! ```rust
+//! let mut doc = toml_edit::Document::new();
+//! doc["foo"] = "'bar'".parse::<toml_edit::Item>().unwrap();
+//! let expected = r#"foo = 'bar'
+//! "#;
+//! assert_eq!(doc.to_string(), expected);
+//! ```
+//!
+//! ## Limitations
+//!
+//! Things it does not preserve:
+//!
+//! * Scattered array of tables (tables are reordered by default, see [test]).
+//! * Order of dotted keys, see [issue](https://github.com/ordian/toml_edit/issues/163).
+//!
+//! [`toml`]: https://docs.rs/toml/latest/toml/
+//! [test]: https://github.com/ordian/toml_edit/blob/f09bd5d075fdb7d2ef8d9bb3270a34506c276753/tests/test_valid.rs#L84
+
+mod array;
+mod array_of_tables;
+mod document;
+mod encode;
+mod index;
+mod inline_table;
+mod internal_string;
+mod item;
+mod key;
+mod parser;
+mod raw_string;
+mod repr;
+mod table;
+mod value;
+
+#[cfg(feature = "serde")]
+pub mod de;
+#[cfg(feature = "serde")]
+pub mod ser;
+
+pub mod visit;
+pub mod visit_mut;
+
+pub use crate::array::{Array, ArrayIntoIter, ArrayIter, ArrayIterMut};
+pub use crate::array_of_tables::{
+ ArrayOfTables, ArrayOfTablesIntoIter, ArrayOfTablesIter, ArrayOfTablesIterMut,
+};
+pub use crate::document::Document;
+pub use crate::inline_table::{
+ InlineEntry, InlineOccupiedEntry, InlineTable, InlineTableIntoIter, InlineTableIter,
+ InlineTableIterMut, InlineVacantEntry,
+};
+pub use crate::internal_string::InternalString;
+pub use crate::item::{array, table, value, Item};
+pub use crate::key::{Key, KeyMut};
+pub use crate::parser::TomlError;
+pub use crate::raw_string::RawString;
+pub use crate::repr::{Decor, Formatted, Repr};
+pub use crate::table::{
+ Entry, IntoIter, Iter, IterMut, OccupiedEntry, Table, TableLike, VacantEntry,
+};
+pub use crate::value::Value;
+pub use toml_datetime::*;
+
+// Prevent users from some traits.
+pub(crate) mod private {
+ pub trait Sealed {}
+ impl Sealed for usize {}
+ impl Sealed for str {}
+ impl Sealed for String {}
+ impl Sealed for i64 {}
+ impl Sealed for f64 {}
+ impl Sealed for bool {}
+ impl Sealed for crate::Datetime {}
+ impl<'a, T: ?Sized> Sealed for &'a T where T: Sealed {}
+ impl Sealed for crate::Table {}
+ impl Sealed for crate::InlineTable {}
+}
diff --git a/vendor/toml_edit-0.19.11/src/parser/array.rs b/vendor/toml_edit-0.19.11/src/parser/array.rs
new file mode 100644
index 000000000..a99bb8241
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/parser/array.rs
@@ -0,0 +1,147 @@
+use winnow::combinator::cut_err;
+use winnow::combinator::delimited;
+use winnow::combinator::opt;
+use winnow::combinator::separated1;
+
+use crate::parser::trivia::ws_comment_newline;
+use crate::parser::value::value;
+use crate::{Array, Item, RawString, Value};
+
+use crate::parser::prelude::*;
+
+// ;; Array
+
+// array = array-open array-values array-close
+pub(crate) fn array(
+ check: RecursionCheck,
+) -> impl FnMut(Input<'_>) -> IResult<Input<'_>, Array, ParserError<'_>> {
+ move |input| {
+ delimited(
+ ARRAY_OPEN,
+ cut_err(array_values(check)),
+ cut_err(ARRAY_CLOSE)
+ .context(Context::Expression("array"))
+ .context(Context::Expected(ParserValue::CharLiteral(']'))),
+ )
+ .parse_next(input)
+ }
+}
+
+// note: we're omitting ws and newlines here, because
+// they should be part of the formatted values
+// array-open = %x5B ws-newline ; [
+pub(crate) const ARRAY_OPEN: u8 = b'[';
+// array-close = ws-newline %x5D ; ]
+const ARRAY_CLOSE: u8 = b']';
+// array-sep = ws %x2C ws ; , Comma
+const ARRAY_SEP: u8 = b',';
+
+// note: this rule is modified
+// array-values = [ ( array-value array-sep array-values ) /
+// array-value / ws-comment-newline ]
+pub(crate) fn array_values(
+ check: RecursionCheck,
+) -> impl FnMut(Input<'_>) -> IResult<Input<'_>, Array, ParserError<'_>> {
+ move |input| {
+ let check = check.recursing(input)?;
+ (
+ opt(
+ (separated1(array_value(check), ARRAY_SEP), opt(ARRAY_SEP)).map(
+ |(v, trailing): (Vec<Value>, Option<u8>)| {
+ (
+ Array::with_vec(v.into_iter().map(Item::Value).collect()),
+ trailing.is_some(),
+ )
+ },
+ ),
+ ),
+ ws_comment_newline.span(),
+ )
+ .try_map::<_, _, std::str::Utf8Error>(|(array, trailing)| {
+ let (mut array, comma) = array.unwrap_or_default();
+ array.set_trailing_comma(comma);
+ array.set_trailing(RawString::with_span(trailing));
+ Ok(array)
+ })
+ .parse_next(input)
+ }
+}
+
+pub(crate) fn array_value(
+ check: RecursionCheck,
+) -> impl FnMut(Input<'_>) -> IResult<Input<'_>, Value, ParserError<'_>> {
+ move |input| {
+ (
+ ws_comment_newline.span(),
+ value(check),
+ ws_comment_newline.span(),
+ )
+ .map(|(ws1, v, ws2)| v.decorated(RawString::with_span(ws1), RawString::with_span(ws2)))
+ .parse_next(input)
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use super::*;
+
+ #[test]
+ fn arrays() {
+ let inputs = [
+ r#"[]"#,
+ r#"[ ]"#,
+ r#"[
+ 1, 2, 3
+]"#,
+ r#"[
+ 1,
+ 2, # this is ok
+]"#,
+ r#"[# comment
+# comment2
+
+
+ ]"#,
+ r#"[# comment
+# comment2
+ 1
+
+#sd
+,
+# comment3
+
+ ]"#,
+ r#"[1]"#,
+ r#"[1,]"#,
+ r#"[ "all", 'strings', """are the same""", '''type''']"#,
+ r#"[ 100, -2,]"#,
+ r#"[1, 2, 3]"#,
+ r#"[1.1, 2.1, 3.1]"#,
+ r#"["a", "b", "c"]"#,
+ r#"[ [ 1, 2 ], [3, 4, 5] ]"#,
+ r#"[ [ 1, 2 ], ["a", "b", "c"] ]"#,
+ r#"[ { x = 1, a = "2" }, {a = "a",b = "b", c = "c"} ]"#,
+ ];
+ for input in inputs {
+ dbg!(input);
+ let mut parsed = array(Default::default()).parse(new_input(input));
+ if let Ok(parsed) = &mut parsed {
+ parsed.despan(input);
+ }
+ assert_eq!(parsed.map(|a| a.to_string()), Ok(input.to_owned()));
+ }
+ }
+
+ #[test]
+ fn invalid_arrays() {
+ let invalid_inputs = [r#"["#, r#"[,]"#, r#"[,2]"#, r#"[1e165,,]"#];
+ for input in invalid_inputs {
+ dbg!(input);
+ let mut parsed = array(Default::default()).parse(new_input(input));
+ if let Ok(parsed) = &mut parsed {
+ parsed.despan(input);
+ }
+ assert!(parsed.is_err());
+ }
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/parser/datetime.rs b/vendor/toml_edit-0.19.11/src/parser/datetime.rs
new file mode 100644
index 000000000..122a00f5a
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/parser/datetime.rs
@@ -0,0 +1,433 @@
+use std::ops::RangeInclusive;
+
+use crate::parser::errors::CustomError;
+use crate::parser::prelude::*;
+use crate::parser::trivia::from_utf8_unchecked;
+
+use toml_datetime::*;
+use winnow::combinator::alt;
+use winnow::combinator::cut_err;
+use winnow::combinator::opt;
+use winnow::combinator::preceded;
+use winnow::token::one_of;
+use winnow::token::take_while;
+
+// ;; Date and Time (as defined in RFC 3339)
+
+// date-time = offset-date-time / local-date-time / local-date / local-time
+// offset-date-time = full-date time-delim full-time
+// local-date-time = full-date time-delim partial-time
+// local-date = full-date
+// local-time = partial-time
+// full-time = partial-time time-offset
+pub(crate) fn date_time(input: Input<'_>) -> IResult<Input<'_>, Datetime, ParserError<'_>> {
+ alt((
+ (full_date, opt((time_delim, partial_time, opt(time_offset))))
+ .map(|(date, opt)| {
+ match opt {
+ // Offset Date-Time
+ Some((_, time, offset)) => Datetime {
+ date: Some(date),
+ time: Some(time),
+ offset,
+ },
+ // Local Date
+ None => Datetime {
+ date: Some(date),
+ time: None,
+ offset: None,
+ },
+ }
+ })
+ .context(Context::Expression("date-time")),
+ partial_time
+ .map(|t| t.into())
+ .context(Context::Expression("time")),
+ ))
+ .parse_next(input)
+}
+
+// full-date = date-fullyear "-" date-month "-" date-mday
+pub(crate) fn full_date(input: Input<'_>) -> IResult<Input<'_>, Date, ParserError<'_>> {
+ (date_fullyear, b'-', cut_err((date_month, b'-', date_mday)))
+ .map(|(year, _, (month, _, day))| Date { year, month, day })
+ .parse_next(input)
+}
+
+// partial-time = time-hour ":" time-minute ":" time-second [time-secfrac]
+pub(crate) fn partial_time(input: Input<'_>) -> IResult<Input<'_>, Time, ParserError<'_>> {
+ (
+ time_hour,
+ b':',
+ cut_err((time_minute, b':', time_second, opt(time_secfrac))),
+ )
+ .map(|(hour, _, (minute, _, second, nanosecond))| Time {
+ hour,
+ minute,
+ second,
+ nanosecond: nanosecond.unwrap_or_default(),
+ })
+ .parse_next(input)
+}
+
+// time-offset = "Z" / time-numoffset
+// time-numoffset = ( "+" / "-" ) time-hour ":" time-minute
+pub(crate) fn time_offset(input: Input<'_>) -> IResult<Input<'_>, Offset, ParserError<'_>> {
+ alt((
+ one_of((b'Z', b'z')).value(Offset::Z),
+ (
+ one_of((b'+', b'-')),
+ cut_err((time_hour, b':', time_minute)),
+ )
+ .map(|(sign, (hours, _, minutes))| {
+ let sign = match sign {
+ b'+' => 1,
+ b'-' => -1,
+ _ => unreachable!("Parser prevents this"),
+ };
+ sign * (hours as i16 * 60 + minutes as i16)
+ })
+ .verify(|minutes| ((-24 * 60)..=(24 * 60)).contains(minutes))
+ .map(|minutes| Offset::Custom { minutes }),
+ ))
+ .context(Context::Expression("time offset"))
+ .parse_next(input)
+}
+
+// date-fullyear = 4DIGIT
+pub(crate) fn date_fullyear(input: Input<'_>) -> IResult<Input<'_>, u16, ParserError<'_>> {
+ unsigned_digits::<4, 4>
+ .map(|s: &str| s.parse::<u16>().expect("4DIGIT should match u8"))
+ .parse_next(input)
+}
+
+// date-month = 2DIGIT ; 01-12
+pub(crate) fn date_month(input: Input<'_>) -> IResult<Input<'_>, u8, ParserError<'_>> {
+ unsigned_digits::<2, 2>
+ .try_map(|s: &str| {
+ let d = s.parse::<u8>().expect("2DIGIT should match u8");
+ if (1..=12).contains(&d) {
+ Ok(d)
+ } else {
+ Err(CustomError::OutOfRange)
+ }
+ })
+ .parse_next(input)
+}
+
+// date-mday = 2DIGIT ; 01-28, 01-29, 01-30, 01-31 based on month/year
+pub(crate) fn date_mday(input: Input<'_>) -> IResult<Input<'_>, u8, ParserError<'_>> {
+ unsigned_digits::<2, 2>
+ .try_map(|s: &str| {
+ let d = s.parse::<u8>().expect("2DIGIT should match u8");
+ if (1..=31).contains(&d) {
+ Ok(d)
+ } else {
+ Err(CustomError::OutOfRange)
+ }
+ })
+ .parse_next(input)
+}
+
+// time-delim = "T" / %x20 ; T, t, or space
+pub(crate) fn time_delim(input: Input<'_>) -> IResult<Input<'_>, u8, ParserError<'_>> {
+ one_of(TIME_DELIM).parse_next(input)
+}
+
+const TIME_DELIM: (u8, u8, u8) = (b'T', b't', b' ');
+
+// time-hour = 2DIGIT ; 00-23
+pub(crate) fn time_hour(input: Input<'_>) -> IResult<Input<'_>, u8, ParserError<'_>> {
+ unsigned_digits::<2, 2>
+ .try_map(|s: &str| {
+ let d = s.parse::<u8>().expect("2DIGIT should match u8");
+ if (0..=23).contains(&d) {
+ Ok(d)
+ } else {
+ Err(CustomError::OutOfRange)
+ }
+ })
+ .parse_next(input)
+}
+
+// time-minute = 2DIGIT ; 00-59
+pub(crate) fn time_minute(input: Input<'_>) -> IResult<Input<'_>, u8, ParserError<'_>> {
+ unsigned_digits::<2, 2>
+ .try_map(|s: &str| {
+ let d = s.parse::<u8>().expect("2DIGIT should match u8");
+ if (0..=59).contains(&d) {
+ Ok(d)
+ } else {
+ Err(CustomError::OutOfRange)
+ }
+ })
+ .parse_next(input)
+}
+
+// time-second = 2DIGIT ; 00-58, 00-59, 00-60 based on leap second rules
+pub(crate) fn time_second(input: Input<'_>) -> IResult<Input<'_>, u8, ParserError<'_>> {
+ unsigned_digits::<2, 2>
+ .try_map(|s: &str| {
+ let d = s.parse::<u8>().expect("2DIGIT should match u8");
+ if (0..=60).contains(&d) {
+ Ok(d)
+ } else {
+ Err(CustomError::OutOfRange)
+ }
+ })
+ .parse_next(input)
+}
+
+// time-secfrac = "." 1*DIGIT
+pub(crate) fn time_secfrac(input: Input<'_>) -> IResult<Input<'_>, u32, ParserError<'_>> {
+ static SCALE: [u32; 10] = [
+ 0,
+ 100_000_000,
+ 10_000_000,
+ 1_000_000,
+ 100_000,
+ 10_000,
+ 1_000,
+ 100,
+ 10,
+ 1,
+ ];
+ const INF: usize = usize::MAX;
+ preceded(b'.', unsigned_digits::<1, INF>)
+ .try_map(|mut repr: &str| -> Result<u32, CustomError> {
+ let max_digits = SCALE.len() - 1;
+ if max_digits < repr.len() {
+ // Millisecond precision is required. Further precision of fractional seconds is
+ // implementation-specific. If the value contains greater precision than the
+ // implementation can support, the additional precision must be truncated, not rounded.
+ repr = &repr[0..max_digits];
+ }
+
+ let v = repr.parse::<u32>().map_err(|_| CustomError::OutOfRange)?;
+ let num_digits = repr.len();
+
+ // scale the number accordingly.
+ let scale = SCALE.get(num_digits).ok_or(CustomError::OutOfRange)?;
+ let v = v.checked_mul(*scale).ok_or(CustomError::OutOfRange)?;
+ Ok(v)
+ })
+ .parse_next(input)
+}
+
+pub(crate) fn unsigned_digits<const MIN: usize, const MAX: usize>(
+ input: Input<'_>,
+) -> IResult<Input<'_>, &str, ParserError<'_>> {
+ take_while(MIN..=MAX, DIGIT)
+ .map(|b: &[u8]| unsafe { from_utf8_unchecked(b, "`is_ascii_digit` filters out on-ASCII") })
+ .parse_next(input)
+}
+
+// DIGIT = %x30-39 ; 0-9
+const DIGIT: RangeInclusive<u8> = b'0'..=b'9';
+
+#[cfg(test)]
+mod test {
+ use super::*;
+
+ #[test]
+ fn offset_date_time() {
+ let inputs = [
+ (
+ "1979-05-27T07:32:00Z",
+ Datetime {
+ date: Some(Date {
+ year: 1979,
+ month: 5,
+ day: 27,
+ }),
+ time: Some(Time {
+ hour: 7,
+ minute: 32,
+ second: 0,
+ nanosecond: 0,
+ }),
+ offset: Some(Offset::Z),
+ },
+ ),
+ (
+ "1979-05-27T00:32:00-07:00",
+ Datetime {
+ date: Some(Date {
+ year: 1979,
+ month: 5,
+ day: 27,
+ }),
+ time: Some(Time {
+ hour: 0,
+ minute: 32,
+ second: 0,
+ nanosecond: 0,
+ }),
+ offset: Some(Offset::Custom { minutes: -7 * 60 }),
+ },
+ ),
+ (
+ "1979-05-27T00:32:00-00:36",
+ Datetime {
+ date: Some(Date {
+ year: 1979,
+ month: 5,
+ day: 27,
+ }),
+ time: Some(Time {
+ hour: 0,
+ minute: 32,
+ second: 0,
+ nanosecond: 0,
+ }),
+ offset: Some(Offset::Custom { minutes: -36 }),
+ },
+ ),
+ (
+ "1979-05-27T00:32:00.999999",
+ Datetime {
+ date: Some(Date {
+ year: 1979,
+ month: 5,
+ day: 27,
+ }),
+ time: Some(Time {
+ hour: 0,
+ minute: 32,
+ second: 0,
+ nanosecond: 999999000,
+ }),
+ offset: None,
+ },
+ ),
+ ];
+ for (input, expected) in inputs {
+ dbg!(input);
+ let actual = date_time.parse(new_input(input)).unwrap();
+ assert_eq!(expected, actual);
+ }
+ }
+
+ #[test]
+ fn local_date_time() {
+ let inputs = [
+ (
+ "1979-05-27T07:32:00",
+ Datetime {
+ date: Some(Date {
+ year: 1979,
+ month: 5,
+ day: 27,
+ }),
+ time: Some(Time {
+ hour: 7,
+ minute: 32,
+ second: 0,
+ nanosecond: 0,
+ }),
+ offset: None,
+ },
+ ),
+ (
+ "1979-05-27T00:32:00.999999",
+ Datetime {
+ date: Some(Date {
+ year: 1979,
+ month: 5,
+ day: 27,
+ }),
+ time: Some(Time {
+ hour: 0,
+ minute: 32,
+ second: 0,
+ nanosecond: 999999000,
+ }),
+ offset: None,
+ },
+ ),
+ ];
+ for (input, expected) in inputs {
+ dbg!(input);
+ let actual = date_time.parse(new_input(input)).unwrap();
+ assert_eq!(expected, actual);
+ }
+ }
+
+ #[test]
+ fn local_date() {
+ let inputs = [
+ (
+ "1979-05-27",
+ Datetime {
+ date: Some(Date {
+ year: 1979,
+ month: 5,
+ day: 27,
+ }),
+ time: None,
+ offset: None,
+ },
+ ),
+ (
+ "2017-07-20",
+ Datetime {
+ date: Some(Date {
+ year: 2017,
+ month: 7,
+ day: 20,
+ }),
+ time: None,
+ offset: None,
+ },
+ ),
+ ];
+ for (input, expected) in inputs {
+ dbg!(input);
+ let actual = date_time.parse(new_input(input)).unwrap();
+ assert_eq!(expected, actual);
+ }
+ }
+
+ #[test]
+ fn local_time() {
+ let inputs = [
+ (
+ "07:32:00",
+ Datetime {
+ date: None,
+ time: Some(Time {
+ hour: 7,
+ minute: 32,
+ second: 0,
+ nanosecond: 0,
+ }),
+ offset: None,
+ },
+ ),
+ (
+ "00:32:00.999999",
+ Datetime {
+ date: None,
+ time: Some(Time {
+ hour: 0,
+ minute: 32,
+ second: 0,
+ nanosecond: 999999000,
+ }),
+ offset: None,
+ },
+ ),
+ ];
+ for (input, expected) in inputs {
+ dbg!(input);
+ let actual = date_time.parse(new_input(input)).unwrap();
+ assert_eq!(expected, actual);
+ }
+ }
+
+ #[test]
+ fn time_fraction_truncated() {
+ let input = "1987-07-05T17:45:00.123456789012345Z";
+ date_time.parse(new_input(input)).unwrap();
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/parser/document.rs b/vendor/toml_edit-0.19.11/src/parser/document.rs
new file mode 100644
index 000000000..791185b68
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/parser/document.rs
@@ -0,0 +1,148 @@
+use std::cell::RefCell;
+
+use winnow::combinator::cut_err;
+use winnow::combinator::eof;
+use winnow::combinator::opt;
+use winnow::combinator::peek;
+use winnow::combinator::repeat;
+use winnow::error::FromExternalError;
+use winnow::token::any;
+use winnow::token::one_of;
+
+use crate::document::Document;
+use crate::key::Key;
+use crate::parser::inline_table::KEYVAL_SEP;
+use crate::parser::key::key;
+use crate::parser::prelude::*;
+use crate::parser::state::ParseState;
+use crate::parser::table::table;
+use crate::parser::trivia::{comment, line_ending, line_trailing, newline, ws};
+use crate::parser::value::value;
+use crate::table::TableKeyValue;
+use crate::Item;
+use crate::RawString;
+
+// ;; TOML
+
+// toml = expression *( newline expression )
+
+// expression = ( ( ws comment ) /
+// ( ws keyval ws [ comment ] ) /
+// ( ws table ws [ comment ] ) /
+// ws )
+pub(crate) fn document(input: Input<'_>) -> IResult<Input<'_>, Document, ParserError<'_>> {
+ let state = RefCell::new(ParseState::default());
+ let state_ref = &state;
+
+ let (i, _o) = (
+ // Remove BOM if present
+ opt(b"\xEF\xBB\xBF"),
+ parse_ws(state_ref),
+ repeat(0.., (
+ dispatch! {peek(any);
+ crate::parser::trivia::COMMENT_START_SYMBOL => cut_err(parse_comment(state_ref)),
+ crate::parser::table::STD_TABLE_OPEN => cut_err(table(state_ref)),
+ crate::parser::trivia::LF |
+ crate::parser::trivia::CR => parse_newline(state_ref),
+ _ => cut_err(keyval(state_ref)),
+ },
+ parse_ws(state_ref),
+ ))
+ .map(|()| ()),
+ eof,
+ )
+ .parse_next(input)?;
+ state
+ .into_inner()
+ .into_document()
+ .map(|document| (i, document))
+ .map_err(|err| {
+ winnow::error::ErrMode::Backtrack(ParserError::from_external_error(
+ i,
+ winnow::error::ErrorKind::Verify,
+ err,
+ ))
+ })
+}
+
+pub(crate) fn parse_comment<'s, 'i>(
+ state: &'s RefCell<ParseState>,
+) -> impl FnMut(Input<'i>) -> IResult<Input<'i>, (), ParserError<'_>> + 's {
+ move |i| {
+ (comment, line_ending)
+ .span()
+ .map(|span| {
+ state.borrow_mut().on_comment(span);
+ })
+ .parse_next(i)
+ }
+}
+
+pub(crate) fn parse_ws<'s, 'i>(
+ state: &'s RefCell<ParseState>,
+) -> impl FnMut(Input<'i>) -> IResult<Input<'i>, (), ParserError<'i>> + 's {
+ move |i| {
+ ws.span()
+ .map(|span| state.borrow_mut().on_ws(span))
+ .parse_next(i)
+ }
+}
+
+pub(crate) fn parse_newline<'s, 'i>(
+ state: &'s RefCell<ParseState>,
+) -> impl FnMut(Input<'i>) -> IResult<Input<'i>, (), ParserError<'i>> + 's {
+ move |i| {
+ newline
+ .span()
+ .map(|span| state.borrow_mut().on_ws(span))
+ .parse_next(i)
+ }
+}
+
+pub(crate) fn keyval<'s, 'i>(
+ state: &'s RefCell<ParseState>,
+) -> impl FnMut(Input<'i>) -> IResult<Input<'i>, (), ParserError<'i>> + 's {
+ move |i| {
+ parse_keyval
+ .try_map(|(p, kv)| state.borrow_mut().on_keyval(p, kv))
+ .parse_next(i)
+ }
+}
+
+// keyval = key keyval-sep val
+pub(crate) fn parse_keyval(
+ input: Input<'_>,
+) -> IResult<Input<'_>, (Vec<Key>, TableKeyValue), ParserError<'_>> {
+ (
+ key,
+ cut_err((
+ one_of(KEYVAL_SEP)
+ .context(Context::Expected(ParserValue::CharLiteral('.')))
+ .context(Context::Expected(ParserValue::CharLiteral('='))),
+ (
+ ws.span(),
+ value(RecursionCheck::default()),
+ line_trailing
+ .context(Context::Expected(ParserValue::CharLiteral('\n')))
+ .context(Context::Expected(ParserValue::CharLiteral('#'))),
+ ),
+ )),
+ )
+ .try_map::<_, _, std::str::Utf8Error>(|(key, (_, v))| {
+ let mut path = key;
+ let key = path.pop().expect("grammar ensures at least 1");
+
+ let (pre, v, suf) = v;
+ let pre = RawString::with_span(pre);
+ let suf = RawString::with_span(suf);
+ let v = v.decorated(pre, suf);
+ Ok((
+ path,
+ TableKeyValue {
+ key,
+ value: Item::Value(v),
+ },
+ ))
+ })
+ .parse_next(input)
+}
diff --git a/vendor/toml_edit-0.19.11/src/parser/errors.rs b/vendor/toml_edit-0.19.11/src/parser/errors.rs
new file mode 100644
index 000000000..4e3825f99
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/parser/errors.rs
@@ -0,0 +1,476 @@
+use std::error::Error as StdError;
+use std::fmt::{Display, Formatter, Result};
+
+use crate::parser::prelude::*;
+use crate::Key;
+
+use winnow::BStr;
+
+/// Type representing a TOML parse error
+#[derive(Debug, Clone, Eq, PartialEq, Hash)]
+pub struct TomlError {
+ message: String,
+ original: Option<String>,
+ keys: Vec<String>,
+ span: Option<std::ops::Range<usize>>,
+}
+
+impl TomlError {
+ pub(crate) fn new(error: ParserError<'_>, original: Input<'_>) -> Self {
+ use winnow::stream::Offset;
+ use winnow::stream::Stream;
+
+ let offset = original.offset_to(&error.input);
+ let span = if offset == original.len() {
+ offset..offset
+ } else {
+ offset..(offset + 1)
+ };
+
+ let message = error.to_string();
+ let original = original.next_slice(original.eof_offset()).1;
+
+ Self {
+ message,
+ original: Some(
+ String::from_utf8(original.to_owned()).expect("original document was utf8"),
+ ),
+ keys: Vec::new(),
+ span: Some(span),
+ }
+ }
+
+ #[cfg(feature = "serde")]
+ pub(crate) fn custom(message: String, span: Option<std::ops::Range<usize>>) -> Self {
+ Self {
+ message,
+ original: None,
+ keys: Vec::new(),
+ span,
+ }
+ }
+
+ #[cfg(feature = "serde")]
+ pub(crate) fn add_key(&mut self, key: String) {
+ self.keys.insert(0, key);
+ }
+
+ /// What went wrong
+ pub fn message(&self) -> &str {
+ &self.message
+ }
+
+ /// The start/end index into the original document where the error occurred
+ pub fn span(&self) -> Option<std::ops::Range<usize>> {
+ self.span.clone()
+ }
+
+ #[cfg(feature = "serde")]
+ pub(crate) fn set_span(&mut self, span: Option<std::ops::Range<usize>>) {
+ self.span = span;
+ }
+
+ #[cfg(feature = "serde")]
+ pub(crate) fn set_original(&mut self, original: Option<String>) {
+ self.original = original;
+ }
+}
+
+/// Displays a TOML parse error
+///
+/// # Example
+///
+/// TOML parse error at line 1, column 10
+/// |
+/// 1 | 00:32:00.a999999
+/// | ^
+/// Unexpected `a`
+/// Expected `digit`
+/// While parsing a Time
+/// While parsing a Date-Time
+impl Display for TomlError {
+ fn fmt(&self, f: &mut Formatter<'_>) -> Result {
+ let mut context = false;
+ if let (Some(original), Some(span)) = (&self.original, self.span()) {
+ context = true;
+
+ let (line, column) = translate_position(original.as_bytes(), span.start);
+ let line_num = line + 1;
+ let col_num = column + 1;
+ let gutter = line_num.to_string().len();
+ let content = original.split('\n').nth(line).expect("valid line number");
+
+ writeln!(
+ f,
+ "TOML parse error at line {}, column {}",
+ line_num, col_num
+ )?;
+ // |
+ for _ in 0..=gutter {
+ write!(f, " ")?;
+ }
+ writeln!(f, "|")?;
+
+ // 1 | 00:32:00.a999999
+ write!(f, "{} | ", line_num)?;
+ writeln!(f, "{}", content)?;
+
+ // | ^
+ for _ in 0..=gutter {
+ write!(f, " ")?;
+ }
+ write!(f, "|")?;
+ for _ in 0..=column {
+ write!(f, " ")?;
+ }
+ // The span will be empty at eof, so we need to make sure we always print at least
+ // one `^`
+ write!(f, "^")?;
+ for _ in (span.start + 1)..(span.end.min(span.start + content.len())) {
+ write!(f, "^")?;
+ }
+ writeln!(f)?;
+ }
+ writeln!(f, "{}", self.message)?;
+ if !context && !self.keys.is_empty() {
+ writeln!(f, "in `{}`", self.keys.join("."))?;
+ }
+
+ Ok(())
+ }
+}
+
+impl StdError for TomlError {
+ fn description(&self) -> &'static str {
+ "TOML parse error"
+ }
+}
+
+#[derive(Debug)]
+pub(crate) struct ParserError<'b> {
+ input: Input<'b>,
+ context: Vec<Context>,
+ cause: Option<Box<dyn std::error::Error + Send + Sync + 'static>>,
+}
+
+impl<'b> winnow::error::ParseError<Input<'b>> for ParserError<'b> {
+ fn from_error_kind(input: Input<'b>, _kind: winnow::error::ErrorKind) -> Self {
+ Self {
+ input,
+ context: Default::default(),
+ cause: Default::default(),
+ }
+ }
+
+ fn append(self, _input: Input<'b>, _kind: winnow::error::ErrorKind) -> Self {
+ self
+ }
+
+ fn or(self, other: Self) -> Self {
+ other
+ }
+}
+
+impl<'b> winnow::error::ParseError<&'b str> for ParserError<'b> {
+ fn from_error_kind(input: &'b str, _kind: winnow::error::ErrorKind) -> Self {
+ Self {
+ input: Input::new(BStr::new(input)),
+ context: Default::default(),
+ cause: Default::default(),
+ }
+ }
+
+ fn append(self, _input: &'b str, _kind: winnow::error::ErrorKind) -> Self {
+ self
+ }
+
+ fn or(self, other: Self) -> Self {
+ other
+ }
+}
+
+impl<'b> winnow::error::ContextError<Input<'b>, Context> for ParserError<'b> {
+ fn add_context(mut self, _input: Input<'b>, ctx: Context) -> Self {
+ self.context.push(ctx);
+ self
+ }
+}
+
+impl<'b, E: std::error::Error + Send + Sync + 'static>
+ winnow::error::FromExternalError<Input<'b>, E> for ParserError<'b>
+{
+ fn from_external_error(input: Input<'b>, _kind: winnow::error::ErrorKind, e: E) -> Self {
+ Self {
+ input,
+ context: Default::default(),
+ cause: Some(Box::new(e)),
+ }
+ }
+}
+
+impl<'b, E: std::error::Error + Send + Sync + 'static> winnow::error::FromExternalError<&'b str, E>
+ for ParserError<'b>
+{
+ fn from_external_error(input: &'b str, _kind: winnow::error::ErrorKind, e: E) -> Self {
+ Self {
+ input: Input::new(BStr::new(input)),
+ context: Default::default(),
+ cause: Some(Box::new(e)),
+ }
+ }
+}
+
+// For tests
+impl<'b> std::cmp::PartialEq for ParserError<'b> {
+ fn eq(&self, other: &Self) -> bool {
+ self.input == other.input
+ && self.context == other.context
+ && self.cause.as_ref().map(ToString::to_string)
+ == other.cause.as_ref().map(ToString::to_string)
+ }
+}
+
+impl<'a> std::fmt::Display for ParserError<'a> {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ let expression = self.context.iter().find_map(|c| match c {
+ Context::Expression(c) => Some(c),
+ _ => None,
+ });
+ let expected = self
+ .context
+ .iter()
+ .filter_map(|c| match c {
+ Context::Expected(c) => Some(c),
+ _ => None,
+ })
+ .collect::<Vec<_>>();
+
+ let mut newline = false;
+
+ if let Some(expression) = expression {
+ newline = true;
+
+ write!(f, "invalid {}", expression)?;
+ }
+
+ if !expected.is_empty() {
+ if newline {
+ writeln!(f)?;
+ }
+ newline = true;
+
+ write!(f, "expected ")?;
+ for (i, expected) in expected.iter().enumerate() {
+ if i != 0 {
+ write!(f, ", ")?;
+ }
+ write!(f, "{}", expected)?;
+ }
+ }
+ if let Some(cause) = &self.cause {
+ if newline {
+ writeln!(f)?;
+ }
+ write!(f, "{}", cause)?;
+ }
+
+ Ok(())
+ }
+}
+
+#[derive(Copy, Clone, Debug, PartialEq)]
+pub(crate) enum Context {
+ Expression(&'static str),
+ Expected(ParserValue),
+}
+
+#[derive(Copy, Clone, Debug, PartialEq)]
+pub(crate) enum ParserValue {
+ CharLiteral(char),
+ StringLiteral(&'static str),
+ Description(&'static str),
+}
+
+impl std::fmt::Display for ParserValue {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ match self {
+ ParserValue::CharLiteral('\n') => "newline".fmt(f),
+ ParserValue::CharLiteral('`') => "'`'".fmt(f),
+ ParserValue::CharLiteral(c) if c.is_ascii_control() => {
+ write!(f, "`{}`", c.escape_debug())
+ }
+ ParserValue::CharLiteral(c) => write!(f, "`{}`", c),
+ ParserValue::StringLiteral(c) => write!(f, "`{}`", c),
+ ParserValue::Description(c) => write!(f, "{}", c),
+ }
+ }
+}
+
+fn translate_position(input: &[u8], index: usize) -> (usize, usize) {
+ if input.is_empty() {
+ return (0, index);
+ }
+
+ let safe_index = index.min(input.len() - 1);
+ let column_offset = index - safe_index;
+ let index = safe_index;
+
+ let nl = input[0..index]
+ .iter()
+ .rev()
+ .enumerate()
+ .find(|(_, b)| **b == b'\n')
+ .map(|(nl, _)| index - nl - 1);
+ let line_start = match nl {
+ Some(nl) => nl + 1,
+ None => 0,
+ };
+ let line = input[0..line_start].iter().filter(|b| **b == b'\n').count();
+ let line = line;
+
+ let column = std::str::from_utf8(&input[line_start..=index])
+ .map(|s| s.chars().count() - 1)
+ .unwrap_or_else(|_| index - line_start);
+ let column = column + column_offset;
+
+ (line, column)
+}
+
+#[cfg(test)]
+mod test_translate_position {
+ use super::*;
+
+ #[test]
+ fn empty() {
+ let input = b"";
+ let index = 0;
+ let position = translate_position(&input[..], index);
+ assert_eq!(position, (0, 0));
+ }
+
+ #[test]
+ fn start() {
+ let input = b"Hello";
+ let index = 0;
+ let position = translate_position(&input[..], index);
+ assert_eq!(position, (0, 0));
+ }
+
+ #[test]
+ fn end() {
+ let input = b"Hello";
+ let index = input.len() - 1;
+ let position = translate_position(&input[..], index);
+ assert_eq!(position, (0, input.len() - 1));
+ }
+
+ #[test]
+ fn after() {
+ let input = b"Hello";
+ let index = input.len();
+ let position = translate_position(&input[..], index);
+ assert_eq!(position, (0, input.len()));
+ }
+
+ #[test]
+ fn first_line() {
+ let input = b"Hello\nWorld\n";
+ let index = 2;
+ let position = translate_position(&input[..], index);
+ assert_eq!(position, (0, 2));
+ }
+
+ #[test]
+ fn end_of_line() {
+ let input = b"Hello\nWorld\n";
+ let index = 5;
+ let position = translate_position(&input[..], index);
+ assert_eq!(position, (0, 5));
+ }
+
+ #[test]
+ fn start_of_second_line() {
+ let input = b"Hello\nWorld\n";
+ let index = 6;
+ let position = translate_position(&input[..], index);
+ assert_eq!(position, (1, 0));
+ }
+
+ #[test]
+ fn second_line() {
+ let input = b"Hello\nWorld\n";
+ let index = 8;
+ let position = translate_position(&input[..], index);
+ assert_eq!(position, (1, 2));
+ }
+}
+
+#[derive(Debug, Clone)]
+pub(crate) enum CustomError {
+ DuplicateKey {
+ key: String,
+ table: Option<Vec<Key>>,
+ },
+ DottedKeyExtendWrongType {
+ key: Vec<Key>,
+ actual: &'static str,
+ },
+ OutOfRange,
+ #[cfg_attr(feature = "unbounded", allow(dead_code))]
+ RecursionLimitExceeded,
+}
+
+impl CustomError {
+ pub(crate) fn duplicate_key(path: &[Key], i: usize) -> Self {
+ assert!(i < path.len());
+ let key = &path[i];
+ let repr = key.display_repr();
+ Self::DuplicateKey {
+ key: repr.into(),
+ table: Some(path[..i].to_vec()),
+ }
+ }
+
+ pub(crate) fn extend_wrong_type(path: &[Key], i: usize, actual: &'static str) -> Self {
+ assert!(i < path.len());
+ Self::DottedKeyExtendWrongType {
+ key: path[..=i].to_vec(),
+ actual,
+ }
+ }
+}
+
+impl StdError for CustomError {
+ fn description(&self) -> &'static str {
+ "TOML parse error"
+ }
+}
+
+impl Display for CustomError {
+ fn fmt(&self, f: &mut Formatter<'_>) -> Result {
+ match self {
+ CustomError::DuplicateKey { key, table } => {
+ if let Some(table) = table {
+ if table.is_empty() {
+ write!(f, "duplicate key `{}` in document root", key)
+ } else {
+ let path = table.iter().map(|k| k.get()).collect::<Vec<_>>().join(".");
+ write!(f, "duplicate key `{}` in table `{}`", key, path)
+ }
+ } else {
+ write!(f, "duplicate key `{}`", key)
+ }
+ }
+ CustomError::DottedKeyExtendWrongType { key, actual } => {
+ let path = key.iter().map(|k| k.get()).collect::<Vec<_>>().join(".");
+ write!(
+ f,
+ "dotted key `{}` attempted to extend non-table type ({})",
+ path, actual
+ )
+ }
+ CustomError::OutOfRange => write!(f, "value is out of range"),
+ CustomError::RecursionLimitExceeded => write!(f, "recursion limit exceded"),
+ }
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/parser/inline_table.rs b/vendor/toml_edit-0.19.11/src/parser/inline_table.rs
new file mode 100644
index 000000000..0a75c2104
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/parser/inline_table.rs
@@ -0,0 +1,182 @@
+use winnow::combinator::cut_err;
+use winnow::combinator::delimited;
+use winnow::combinator::separated0;
+use winnow::token::one_of;
+
+use crate::key::Key;
+use crate::parser::errors::CustomError;
+use crate::parser::key::key;
+use crate::parser::prelude::*;
+use crate::parser::trivia::ws;
+use crate::parser::value::value;
+use crate::table::TableKeyValue;
+use crate::{InlineTable, InternalString, Item, RawString, Value};
+
+use indexmap::map::Entry;
+
+// ;; Inline Table
+
+// inline-table = inline-table-open inline-table-keyvals inline-table-close
+pub(crate) fn inline_table(
+ check: RecursionCheck,
+) -> impl FnMut(Input<'_>) -> IResult<Input<'_>, InlineTable, ParserError<'_>> {
+ move |input| {
+ delimited(
+ INLINE_TABLE_OPEN,
+ cut_err(inline_table_keyvals(check).try_map(|(kv, p)| table_from_pairs(kv, p))),
+ cut_err(INLINE_TABLE_CLOSE)
+ .context(Context::Expression("inline table"))
+ .context(Context::Expected(ParserValue::CharLiteral('}'))),
+ )
+ .parse_next(input)
+ }
+}
+
+fn table_from_pairs(
+ v: Vec<(Vec<Key>, TableKeyValue)>,
+ preamble: RawString,
+) -> Result<InlineTable, CustomError> {
+ let mut root = InlineTable::new();
+ root.set_preamble(preamble);
+ // Assuming almost all pairs will be directly in `root`
+ root.items.reserve(v.len());
+
+ for (path, kv) in v {
+ let table = descend_path(&mut root, &path)?;
+ let key: InternalString = kv.key.get_internal().into();
+ match table.items.entry(key) {
+ Entry::Vacant(o) => {
+ o.insert(kv);
+ }
+ Entry::Occupied(o) => {
+ return Err(CustomError::DuplicateKey {
+ key: o.key().as_str().into(),
+ table: None,
+ });
+ }
+ }
+ }
+ Ok(root)
+}
+
+fn descend_path<'a>(
+ mut table: &'a mut InlineTable,
+ path: &'a [Key],
+) -> Result<&'a mut InlineTable, CustomError> {
+ for (i, key) in path.iter().enumerate() {
+ let entry = table.entry_format(key).or_insert_with(|| {
+ let mut new_table = InlineTable::new();
+ new_table.set_dotted(true);
+
+ Value::InlineTable(new_table)
+ });
+ match *entry {
+ Value::InlineTable(ref mut sweet_child_of_mine) => {
+ table = sweet_child_of_mine;
+ }
+ ref v => {
+ return Err(CustomError::extend_wrong_type(path, i, v.type_name()));
+ }
+ }
+ }
+ Ok(table)
+}
+
+// inline-table-open = %x7B ws ; {
+pub(crate) const INLINE_TABLE_OPEN: u8 = b'{';
+// inline-table-close = ws %x7D ; }
+const INLINE_TABLE_CLOSE: u8 = b'}';
+// inline-table-sep = ws %x2C ws ; , Comma
+const INLINE_TABLE_SEP: u8 = b',';
+// keyval-sep = ws %x3D ws ; =
+pub(crate) const KEYVAL_SEP: u8 = b'=';
+
+// inline-table-keyvals = [ inline-table-keyvals-non-empty ]
+// inline-table-keyvals-non-empty =
+// ( key keyval-sep val inline-table-sep inline-table-keyvals-non-empty ) /
+// ( key keyval-sep val )
+
+fn inline_table_keyvals(
+ check: RecursionCheck,
+) -> impl FnMut(
+ Input<'_>,
+) -> IResult<Input<'_>, (Vec<(Vec<Key>, TableKeyValue)>, RawString), ParserError<'_>> {
+ move |input| {
+ let check = check.recursing(input)?;
+ (
+ separated0(keyval(check), INLINE_TABLE_SEP),
+ ws.span().map(RawString::with_span),
+ )
+ .parse_next(input)
+ }
+}
+
+fn keyval(
+ check: RecursionCheck,
+) -> impl FnMut(Input<'_>) -> IResult<Input<'_>, (Vec<Key>, TableKeyValue), ParserError<'_>> {
+ move |input| {
+ (
+ key,
+ cut_err((
+ one_of(KEYVAL_SEP)
+ .context(Context::Expected(ParserValue::CharLiteral('.')))
+ .context(Context::Expected(ParserValue::CharLiteral('='))),
+ (ws.span(), value(check), ws.span()),
+ )),
+ )
+ .map(|(key, (_, v))| {
+ let mut path = key;
+ let key = path.pop().expect("grammar ensures at least 1");
+
+ let (pre, v, suf) = v;
+ let pre = RawString::with_span(pre);
+ let suf = RawString::with_span(suf);
+ let v = v.decorated(pre, suf);
+ (
+ path,
+ TableKeyValue {
+ key,
+ value: Item::Value(v),
+ },
+ )
+ })
+ .parse_next(input)
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use super::*;
+
+ #[test]
+ fn inline_tables() {
+ let inputs = [
+ r#"{}"#,
+ r#"{ }"#,
+ r#"{a = 1e165}"#,
+ r#"{ hello = "world", a = 1}"#,
+ r#"{ hello.world = "a" }"#,
+ ];
+ for input in inputs {
+ dbg!(input);
+ let mut parsed = inline_table(Default::default()).parse(new_input(input));
+ if let Ok(parsed) = &mut parsed {
+ parsed.despan(input);
+ }
+ assert_eq!(parsed.map(|a| a.to_string()), Ok(input.to_owned()));
+ }
+ }
+
+ #[test]
+ fn invalid_inline_tables() {
+ let invalid_inputs = [r#"{a = 1e165"#, r#"{ hello = "world", a = 2, hello = 1}"#];
+ for input in invalid_inputs {
+ dbg!(input);
+ let mut parsed = inline_table(Default::default()).parse(new_input(input));
+ if let Ok(parsed) = &mut parsed {
+ parsed.despan(input);
+ }
+ assert!(parsed.is_err());
+ }
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/parser/key.rs b/vendor/toml_edit-0.19.11/src/parser/key.rs
new file mode 100644
index 000000000..eda319307
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/parser/key.rs
@@ -0,0 +1,104 @@
+use std::ops::RangeInclusive;
+
+use winnow::combinator::peek;
+use winnow::combinator::separated1;
+use winnow::token::any;
+use winnow::token::take_while;
+
+use crate::key::Key;
+use crate::parser::errors::CustomError;
+use crate::parser::prelude::*;
+use crate::parser::strings::{basic_string, literal_string};
+use crate::parser::trivia::{from_utf8_unchecked, ws};
+use crate::repr::{Decor, Repr};
+use crate::InternalString;
+use crate::RawString;
+
+// key = simple-key / dotted-key
+// dotted-key = simple-key 1*( dot-sep simple-key )
+pub(crate) fn key(input: Input<'_>) -> IResult<Input<'_>, Vec<Key>, ParserError<'_>> {
+ separated1(
+ (ws.span(), simple_key, ws.span()).map(|(pre, (raw, key), suffix)| {
+ Key::new(key)
+ .with_repr_unchecked(Repr::new_unchecked(raw))
+ .with_decor(Decor::new(
+ RawString::with_span(pre),
+ RawString::with_span(suffix),
+ ))
+ }),
+ DOT_SEP,
+ )
+ .context(Context::Expression("key"))
+ .try_map(|k: Vec<_>| {
+ // Inserting the key will require recursion down the line
+ RecursionCheck::check_depth(k.len())?;
+ Ok::<_, CustomError>(k)
+ })
+ .parse_next(input)
+}
+
+// simple-key = quoted-key / unquoted-key
+// quoted-key = basic-string / literal-string
+pub(crate) fn simple_key(
+ input: Input<'_>,
+) -> IResult<Input<'_>, (RawString, InternalString), ParserError<'_>> {
+ dispatch! {peek(any);
+ crate::parser::strings::QUOTATION_MARK => basic_string
+ .map(|s: std::borrow::Cow<'_, str>| s.as_ref().into()),
+ crate::parser::strings::APOSTROPHE => literal_string.map(|s: &str| s.into()),
+ _ => unquoted_key.map(|s: &str| s.into()),
+ }
+ .with_span()
+ .map(|(k, span)| {
+ let raw = RawString::with_span(span);
+ (raw, k)
+ })
+ .parse_next(input)
+}
+
+// unquoted-key = 1*( ALPHA / DIGIT / %x2D / %x5F ) ; A-Z / a-z / 0-9 / - / _
+fn unquoted_key(input: Input<'_>) -> IResult<Input<'_>, &str, ParserError<'_>> {
+ take_while(1.., UNQUOTED_CHAR)
+ .map(|b| unsafe { from_utf8_unchecked(b, "`is_unquoted_char` filters out on-ASCII") })
+ .parse_next(input)
+}
+
+pub(crate) fn is_unquoted_char(c: u8) -> bool {
+ use winnow::stream::ContainsToken;
+ UNQUOTED_CHAR.contains_token(c)
+}
+
+const UNQUOTED_CHAR: (
+ RangeInclusive<u8>,
+ RangeInclusive<u8>,
+ RangeInclusive<u8>,
+ u8,
+ u8,
+) = (b'A'..=b'Z', b'a'..=b'z', b'0'..=b'9', b'-', b'_');
+
+// dot-sep = ws %x2E ws ; . Period
+const DOT_SEP: u8 = b'.';
+
+#[cfg(test)]
+mod test {
+ use super::*;
+
+ #[test]
+ fn keys() {
+ let cases = [
+ ("a", "a"),
+ (r#""hello\n ""#, "hello\n "),
+ (r#"'hello\n '"#, "hello\\n "),
+ ];
+
+ for (input, expected) in cases {
+ dbg!(input);
+ let parsed = simple_key.parse(new_input(input));
+ assert_eq!(
+ parsed,
+ Ok((RawString::with_span(0..(input.len())), expected.into())),
+ "Parsing {input:?}"
+ );
+ }
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/parser/macros.rs b/vendor/toml_edit-0.19.11/src/parser/macros.rs
new file mode 100644
index 000000000..93050f5ad
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/parser/macros.rs
@@ -0,0 +1,13 @@
+macro_rules! dispatch {
+ ($match_parser: expr; $( $pat:pat $(if $pred:expr)? => $expr: expr ),+ $(,)? ) => {
+ move |i|
+ {
+ let (i, initial) = $match_parser.parse_next(i)?;
+ match initial {
+ $(
+ $pat $(if $pred)? => $expr.parse_next(i),
+ )*
+ }
+ }
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/parser/mod.rs b/vendor/toml_edit-0.19.11/src/parser/mod.rs
new file mode 100644
index 000000000..b2ce4bc5e
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/parser/mod.rs
@@ -0,0 +1,302 @@
+#![allow(clippy::type_complexity)]
+
+#[macro_use]
+pub(crate) mod macros;
+
+pub(crate) mod array;
+pub(crate) mod datetime;
+pub(crate) mod document;
+pub(crate) mod errors;
+pub(crate) mod inline_table;
+pub(crate) mod key;
+pub(crate) mod numbers;
+pub(crate) mod state;
+pub(crate) mod strings;
+pub(crate) mod table;
+pub(crate) mod trivia;
+pub(crate) mod value;
+
+pub use errors::TomlError;
+
+pub(crate) fn parse_document(raw: &str) -> Result<crate::Document, TomlError> {
+ use prelude::*;
+
+ let b = new_input(raw);
+ let mut doc = document::document
+ .parse(b)
+ .map_err(|e| TomlError::new(e, b))?;
+ doc.span = Some(0..(raw.len()));
+ doc.original = Some(raw.to_owned());
+ Ok(doc)
+}
+
+pub(crate) fn parse_key(raw: &str) -> Result<crate::Key, TomlError> {
+ use prelude::*;
+
+ let b = new_input(raw);
+ let result = key::simple_key.parse(b);
+ match result {
+ Ok((raw, key)) => {
+ Ok(crate::Key::new(key).with_repr_unchecked(crate::Repr::new_unchecked(raw)))
+ }
+ Err(e) => Err(TomlError::new(e, b)),
+ }
+}
+
+pub(crate) fn parse_key_path(raw: &str) -> Result<Vec<crate::Key>, TomlError> {
+ use prelude::*;
+
+ let b = new_input(raw);
+ let result = key::key.parse(b);
+ match result {
+ Ok(mut keys) => {
+ for key in &mut keys {
+ key.despan(raw);
+ }
+ Ok(keys)
+ }
+ Err(e) => Err(TomlError::new(e, b)),
+ }
+}
+
+pub(crate) fn parse_value(raw: &str) -> Result<crate::Value, TomlError> {
+ use prelude::*;
+
+ let b = new_input(raw);
+ let parsed = value::value(RecursionCheck::default()).parse(b);
+ match parsed {
+ Ok(mut value) => {
+ // Only take the repr and not decor, as its probably not intended
+ value.decor_mut().clear();
+ value.despan(raw);
+ Ok(value)
+ }
+ Err(e) => Err(TomlError::new(e, b)),
+ }
+}
+
+pub(crate) mod prelude {
+ pub(crate) use super::errors::Context;
+ pub(crate) use super::errors::ParserError;
+ pub(crate) use super::errors::ParserValue;
+ pub(crate) use winnow::IResult;
+ pub(crate) use winnow::Parser as _;
+
+ pub(crate) type Input<'b> = winnow::Located<&'b winnow::BStr>;
+
+ pub(crate) fn new_input(s: &str) -> Input<'_> {
+ winnow::Located::new(winnow::BStr::new(s))
+ }
+
+ pub(crate) fn ok_error<I, O, E>(
+ res: IResult<I, O, E>,
+ ) -> Result<Option<(I, O)>, winnow::error::ErrMode<E>> {
+ match res {
+ Ok(ok) => Ok(Some(ok)),
+ Err(winnow::error::ErrMode::Backtrack(_)) => Ok(None),
+ Err(err) => Err(err),
+ }
+ }
+
+ #[allow(dead_code)]
+ pub(crate) fn trace<I: std::fmt::Debug, O: std::fmt::Debug, E: std::fmt::Debug>(
+ context: impl std::fmt::Display,
+ mut parser: impl winnow::Parser<I, O, E>,
+ ) -> impl FnMut(I) -> IResult<I, O, E> {
+ static DEPTH: std::sync::atomic::AtomicUsize = std::sync::atomic::AtomicUsize::new(0);
+ move |input: I| {
+ let depth = DEPTH.fetch_add(1, std::sync::atomic::Ordering::SeqCst) * 2;
+ eprintln!("{:depth$}--> {} {:?}", "", context, input);
+ match parser.parse_next(input) {
+ Ok((i, o)) => {
+ DEPTH.fetch_sub(1, std::sync::atomic::Ordering::SeqCst);
+ eprintln!("{:depth$}<-- {} {:?}", "", context, i);
+ Ok((i, o))
+ }
+ Err(err) => {
+ DEPTH.fetch_sub(1, std::sync::atomic::Ordering::SeqCst);
+ eprintln!("{:depth$}<-- {} {:?}", "", context, err);
+ Err(err)
+ }
+ }
+ }
+ }
+
+ #[cfg(not(feature = "unbounded"))]
+ #[derive(Copy, Clone, Debug, Default)]
+ pub(crate) struct RecursionCheck {
+ current: usize,
+ }
+
+ #[cfg(not(feature = "unbounded"))]
+ impl RecursionCheck {
+ pub(crate) fn check_depth(depth: usize) -> Result<(), super::errors::CustomError> {
+ if depth < 128 {
+ Ok(())
+ } else {
+ Err(super::errors::CustomError::RecursionLimitExceeded)
+ }
+ }
+
+ pub(crate) fn recursing(
+ mut self,
+ input: Input<'_>,
+ ) -> Result<Self, winnow::error::ErrMode<ParserError<'_>>> {
+ self.current += 1;
+ if self.current < 128 {
+ Ok(self)
+ } else {
+ Err(winnow::error::ErrMode::Backtrack(
+ winnow::error::FromExternalError::from_external_error(
+ input,
+ winnow::error::ErrorKind::Eof,
+ super::errors::CustomError::RecursionLimitExceeded,
+ ),
+ ))
+ }
+ }
+ }
+
+ #[cfg(feature = "unbounded")]
+ #[derive(Copy, Clone, Debug, Default)]
+ pub(crate) struct RecursionCheck {}
+
+ #[cfg(feature = "unbounded")]
+ impl RecursionCheck {
+ pub(crate) fn check_depth(_depth: usize) -> Result<(), super::errors::CustomError> {
+ Ok(())
+ }
+
+ pub(crate) fn recursing(
+ self,
+ _input: Input<'_>,
+ ) -> Result<Self, winnow::error::ErrMode<ParserError<'_>>> {
+ Ok(self)
+ }
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use super::*;
+
+ #[test]
+ fn documents() {
+ let documents = [
+ "",
+ r#"
+# This is a TOML document.
+
+title = "TOML Example"
+
+ [owner]
+ name = "Tom Preston-Werner"
+ dob = 1979-05-27T07:32:00-08:00 # First class dates
+
+ [database]
+ server = "192.168.1.1"
+ ports = [ 8001, 8001, 8002 ]
+ connection_max = 5000
+ enabled = true
+
+ [servers]
+
+ # Indentation (tabs and/or spaces) is allowed but not required
+[servers.alpha]
+ ip = "10.0.0.1"
+ dc = "eqdc10"
+
+ [servers.beta]
+ ip = "10.0.0.2"
+ dc = "eqdc10"
+
+ [clients]
+ data = [ ["gamma", "delta"], [1, 2] ]
+
+ # Line breaks are OK when inside arrays
+hosts = [
+ "alpha",
+ "omega"
+]
+
+ 'some.wierd .stuff' = """
+ like
+ that
+ # """ # this broke my sintax highlighting
+ " also. like " = '''
+that
+'''
+ double = 2e39 # this number looks familiar
+# trailing comment"#,
+ r#""#,
+ r#" "#,
+ r#" hello = 'darkness' # my old friend
+"#,
+ r#"[parent . child]
+key = "value"
+"#,
+ r#"hello.world = "a"
+"#,
+ r#"foo = 1979-05-27 # Comment
+"#,
+ ];
+ for input in documents {
+ dbg!(input);
+ let mut parsed = parse_document(input);
+ if let Ok(parsed) = &mut parsed {
+ parsed.despan();
+ }
+ let doc = match parsed {
+ Ok(doc) => doc,
+ Err(err) => {
+ panic!(
+ "Parse error: {:?}\nFailed to parse:\n```\n{}\n```",
+ err, input
+ )
+ }
+ };
+
+ snapbox::assert_eq(input, doc.to_string());
+ }
+ }
+
+ #[test]
+ fn documents_parse_only() {
+ let parse_only = ["\u{FEFF}
+[package]
+name = \"foo\"
+version = \"0.0.1\"
+authors = []
+"];
+ for input in parse_only {
+ dbg!(input);
+ let mut parsed = parse_document(input);
+ if let Ok(parsed) = &mut parsed {
+ parsed.despan();
+ }
+ match parsed {
+ Ok(_) => (),
+ Err(err) => {
+ panic!(
+ "Parse error: {:?}\nFailed to parse:\n```\n{}\n```",
+ err, input
+ )
+ }
+ }
+ }
+ }
+
+ #[test]
+ fn invalid_documents() {
+ let invalid_inputs = [r#" hello = 'darkness' # my old friend
+$"#];
+ for input in invalid_inputs {
+ dbg!(input);
+ let mut parsed = parse_document(input);
+ if let Ok(parsed) = &mut parsed {
+ parsed.despan();
+ }
+ assert!(parsed.is_err(), "Input: {:?}", input);
+ }
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/parser/numbers.rs b/vendor/toml_edit-0.19.11/src/parser/numbers.rs
new file mode 100644
index 000000000..803cc9d57
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/parser/numbers.rs
@@ -0,0 +1,369 @@
+use std::ops::RangeInclusive;
+
+use winnow::combinator::alt;
+use winnow::combinator::cut_err;
+use winnow::combinator::opt;
+use winnow::combinator::peek;
+use winnow::combinator::preceded;
+use winnow::combinator::repeat;
+use winnow::combinator::rest;
+use winnow::token::one_of;
+use winnow::token::tag;
+use winnow::token::take;
+
+use crate::parser::prelude::*;
+use crate::parser::trivia::from_utf8_unchecked;
+
+// ;; Boolean
+
+// boolean = true / false
+#[allow(dead_code)] // directly define in `fn value`
+pub(crate) fn boolean(input: Input<'_>) -> IResult<Input<'_>, bool, ParserError<'_>> {
+ alt((true_, false_)).parse_next(input)
+}
+
+pub(crate) fn true_(input: Input<'_>) -> IResult<Input<'_>, bool, ParserError<'_>> {
+ (peek(TRUE[0]), cut_err(TRUE)).value(true).parse_next(input)
+}
+const TRUE: &[u8] = b"true";
+
+pub(crate) fn false_(input: Input<'_>) -> IResult<Input<'_>, bool, ParserError<'_>> {
+ (peek(FALSE[0]), cut_err(FALSE))
+ .value(false)
+ .parse_next(input)
+}
+const FALSE: &[u8] = b"false";
+
+// ;; Integer
+
+// integer = dec-int / hex-int / oct-int / bin-int
+pub(crate) fn integer(input: Input<'_>) -> IResult<Input<'_>, i64, ParserError<'_>> {
+ dispatch! {peek(opt::<_, &[u8], _, _>(take(2usize)));
+ Some(b"0x") => cut_err(hex_int.try_map(|s| i64::from_str_radix(&s.replace('_', ""), 16))),
+ Some(b"0o") => cut_err(oct_int.try_map(|s| i64::from_str_radix(&s.replace('_', ""), 8))),
+ Some(b"0b") => cut_err(bin_int.try_map(|s| i64::from_str_radix(&s.replace('_', ""), 2))),
+ _ => dec_int.and_then(cut_err(rest
+ .try_map(|s: &str| s.replace('_', "").parse())))
+ }
+ .parse_next(input)
+}
+
+// dec-int = [ minus / plus ] unsigned-dec-int
+// unsigned-dec-int = DIGIT / digit1-9 1*( DIGIT / underscore DIGIT )
+pub(crate) fn dec_int(input: Input<'_>) -> IResult<Input<'_>, &str, ParserError<'_>> {
+ (
+ opt(one_of((b'+', b'-'))),
+ alt((
+ (
+ one_of(DIGIT1_9),
+ repeat(
+ 0..,
+ alt((
+ digit.value(()),
+ (
+ one_of(b'_'),
+ cut_err(digit)
+ .context(Context::Expected(ParserValue::Description("digit"))),
+ )
+ .value(()),
+ )),
+ )
+ .map(|()| ()),
+ )
+ .value(()),
+ digit.value(()),
+ )),
+ )
+ .recognize()
+ .map(|b: &[u8]| unsafe { from_utf8_unchecked(b, "`digit` and `_` filter out non-ASCII") })
+ .context(Context::Expression("integer"))
+ .parse_next(input)
+}
+const DIGIT1_9: RangeInclusive<u8> = b'1'..=b'9';
+
+// hex-prefix = %x30.78 ; 0x
+// hex-int = hex-prefix HEXDIG *( HEXDIG / underscore HEXDIG )
+pub(crate) fn hex_int(input: Input<'_>) -> IResult<Input<'_>, &str, ParserError<'_>> {
+ preceded(
+ HEX_PREFIX,
+ cut_err((
+ hexdig,
+ repeat(
+ 0..,
+ alt((
+ hexdig.value(()),
+ (
+ one_of(b'_'),
+ cut_err(hexdig)
+ .context(Context::Expected(ParserValue::Description("digit"))),
+ )
+ .value(()),
+ )),
+ )
+ .map(|()| ()),
+ ))
+ .recognize(),
+ )
+ .map(|b| unsafe { from_utf8_unchecked(b, "`hexdig` and `_` filter out non-ASCII") })
+ .context(Context::Expression("hexadecimal integer"))
+ .parse_next(input)
+}
+const HEX_PREFIX: &[u8] = b"0x";
+
+// oct-prefix = %x30.6F ; 0o
+// oct-int = oct-prefix digit0-7 *( digit0-7 / underscore digit0-7 )
+pub(crate) fn oct_int(input: Input<'_>) -> IResult<Input<'_>, &str, ParserError<'_>> {
+ preceded(
+ OCT_PREFIX,
+ cut_err((
+ one_of(DIGIT0_7),
+ repeat(
+ 0..,
+ alt((
+ one_of(DIGIT0_7).value(()),
+ (
+ one_of(b'_'),
+ cut_err(one_of(DIGIT0_7))
+ .context(Context::Expected(ParserValue::Description("digit"))),
+ )
+ .value(()),
+ )),
+ )
+ .map(|()| ()),
+ ))
+ .recognize(),
+ )
+ .map(|b| unsafe { from_utf8_unchecked(b, "`DIGIT0_7` and `_` filter out non-ASCII") })
+ .context(Context::Expression("octal integer"))
+ .parse_next(input)
+}
+const OCT_PREFIX: &[u8] = b"0o";
+const DIGIT0_7: RangeInclusive<u8> = b'0'..=b'7';
+
+// bin-prefix = %x30.62 ; 0b
+// bin-int = bin-prefix digit0-1 *( digit0-1 / underscore digit0-1 )
+pub(crate) fn bin_int(input: Input<'_>) -> IResult<Input<'_>, &str, ParserError<'_>> {
+ preceded(
+ BIN_PREFIX,
+ cut_err((
+ one_of(DIGIT0_1),
+ repeat(
+ 0..,
+ alt((
+ one_of(DIGIT0_1).value(()),
+ (
+ one_of(b'_'),
+ cut_err(one_of(DIGIT0_1))
+ .context(Context::Expected(ParserValue::Description("digit"))),
+ )
+ .value(()),
+ )),
+ )
+ .map(|()| ()),
+ ))
+ .recognize(),
+ )
+ .map(|b| unsafe { from_utf8_unchecked(b, "`DIGIT0_1` and `_` filter out non-ASCII") })
+ .context(Context::Expression("binary integer"))
+ .parse_next(input)
+}
+const BIN_PREFIX: &[u8] = b"0b";
+const DIGIT0_1: RangeInclusive<u8> = b'0'..=b'1';
+
+// ;; Float
+
+// float = float-int-part ( exp / frac [ exp ] )
+// float =/ special-float
+// float-int-part = dec-int
+pub(crate) fn float(input: Input<'_>) -> IResult<Input<'_>, f64, ParserError<'_>> {
+ alt((
+ float_.and_then(cut_err(
+ rest.try_map(|s: &str| s.replace('_', "").parse())
+ .verify(|f: &f64| *f != f64::INFINITY),
+ )),
+ special_float,
+ ))
+ .context(Context::Expression("floating-point number"))
+ .parse_next(input)
+}
+
+pub(crate) fn float_(input: Input<'_>) -> IResult<Input<'_>, &str, ParserError<'_>> {
+ (dec_int, alt((exp, (frac, opt(exp)).map(|_| ""))))
+ .recognize()
+ .map(|b: &[u8]| unsafe {
+ from_utf8_unchecked(
+ b,
+ "`dec_int`, `one_of`, `exp`, and `frac` filter out non-ASCII",
+ )
+ })
+ .parse_next(input)
+}
+
+// frac = decimal-point zero-prefixable-int
+// decimal-point = %x2E ; .
+pub(crate) fn frac(input: Input<'_>) -> IResult<Input<'_>, &str, ParserError<'_>> {
+ (
+ b'.',
+ cut_err(zero_prefixable_int).context(Context::Expected(ParserValue::Description("digit"))),
+ )
+ .recognize()
+ .map(|b: &[u8]| unsafe {
+ from_utf8_unchecked(
+ b,
+ "`.` and `parse_zero_prefixable_int` filter out non-ASCII",
+ )
+ })
+ .parse_next(input)
+}
+
+// zero-prefixable-int = DIGIT *( DIGIT / underscore DIGIT )
+pub(crate) fn zero_prefixable_int(input: Input<'_>) -> IResult<Input<'_>, &str, ParserError<'_>> {
+ (
+ digit,
+ repeat(
+ 0..,
+ alt((
+ digit.value(()),
+ (
+ one_of(b'_'),
+ cut_err(digit).context(Context::Expected(ParserValue::Description("digit"))),
+ )
+ .value(()),
+ )),
+ )
+ .map(|()| ()),
+ )
+ .recognize()
+ .map(|b: &[u8]| unsafe { from_utf8_unchecked(b, "`digit` and `_` filter out non-ASCII") })
+ .parse_next(input)
+}
+
+// exp = "e" float-exp-part
+// float-exp-part = [ minus / plus ] zero-prefixable-int
+pub(crate) fn exp(input: Input<'_>) -> IResult<Input<'_>, &str, ParserError<'_>> {
+ (
+ one_of((b'e', b'E')),
+ opt(one_of([b'+', b'-'])),
+ cut_err(zero_prefixable_int),
+ )
+ .recognize()
+ .map(|b: &[u8]| unsafe {
+ from_utf8_unchecked(
+ b,
+ "`one_of` and `parse_zero_prefixable_int` filter out non-ASCII",
+ )
+ })
+ .parse_next(input)
+}
+
+// special-float = [ minus / plus ] ( inf / nan )
+pub(crate) fn special_float(input: Input<'_>) -> IResult<Input<'_>, f64, ParserError<'_>> {
+ (opt(one_of((b'+', b'-'))), alt((inf, nan)))
+ .map(|(s, f)| match s {
+ Some(b'+') | None => f,
+ Some(b'-') => -f,
+ _ => unreachable!("one_of should prevent this"),
+ })
+ .parse_next(input)
+}
+// inf = %x69.6e.66 ; inf
+pub(crate) fn inf(input: Input<'_>) -> IResult<Input<'_>, f64, ParserError<'_>> {
+ tag(INF).value(f64::INFINITY).parse_next(input)
+}
+const INF: &[u8] = b"inf";
+// nan = %x6e.61.6e ; nan
+pub(crate) fn nan(input: Input<'_>) -> IResult<Input<'_>, f64, ParserError<'_>> {
+ tag(NAN).value(f64::NAN).parse_next(input)
+}
+const NAN: &[u8] = b"nan";
+
+// DIGIT = %x30-39 ; 0-9
+pub(crate) fn digit(input: Input<'_>) -> IResult<Input<'_>, u8, ParserError<'_>> {
+ one_of(DIGIT).parse_next(input)
+}
+const DIGIT: RangeInclusive<u8> = b'0'..=b'9';
+
+// HEXDIG = DIGIT / "A" / "B" / "C" / "D" / "E" / "F"
+pub(crate) fn hexdig(input: Input<'_>) -> IResult<Input<'_>, u8, ParserError<'_>> {
+ one_of(HEXDIG).parse_next(input)
+}
+pub(crate) const HEXDIG: (RangeInclusive<u8>, RangeInclusive<u8>, RangeInclusive<u8>) =
+ (DIGIT, b'A'..=b'F', b'a'..=b'f');
+
+#[cfg(test)]
+mod test {
+ use super::*;
+
+ #[test]
+ fn integers() {
+ let cases = [
+ ("+99", 99),
+ ("42", 42),
+ ("0", 0),
+ ("-17", -17),
+ ("1_000", 1_000),
+ ("5_349_221", 5_349_221),
+ ("1_2_3_4_5", 1_2_3_4_5),
+ ("0xF", 15),
+ ("0o0_755", 493),
+ ("0b1_0_1", 5),
+ (&std::i64::MIN.to_string()[..], std::i64::MIN),
+ (&std::i64::MAX.to_string()[..], std::i64::MAX),
+ ];
+ for &(input, expected) in &cases {
+ dbg!(input);
+ let parsed = integer.parse(new_input(input));
+ assert_eq!(parsed, Ok(expected), "Parsing {input:?}");
+ }
+
+ let overflow = "1000000000000000000000000000000000";
+ let parsed = integer.parse(new_input(overflow));
+ assert!(parsed.is_err());
+ }
+
+ #[track_caller]
+ fn assert_float_eq(actual: f64, expected: f64) {
+ if expected.is_nan() {
+ assert!(actual.is_nan());
+ } else if expected.is_infinite() {
+ assert!(actual.is_infinite());
+ assert_eq!(expected.is_sign_positive(), actual.is_sign_positive());
+ } else {
+ dbg!(expected);
+ dbg!(actual);
+ assert!((expected - actual).abs() < std::f64::EPSILON);
+ }
+ }
+
+ #[test]
+ fn floats() {
+ let cases = [
+ ("+1.0", 1.0),
+ ("3.1419", 3.1419),
+ ("-0.01", -0.01),
+ ("5e+22", 5e+22),
+ ("1e6", 1e6),
+ ("-2E-2", -2E-2),
+ ("6.626e-34", 6.626e-34),
+ ("9_224_617.445_991_228_313", 9_224_617.445_991_227),
+ ("-1.7976931348623157e+308", std::f64::MIN),
+ ("1.7976931348623157e+308", std::f64::MAX),
+ ("nan", f64::NAN),
+ ("+nan", f64::NAN),
+ ("-nan", f64::NAN),
+ ("inf", f64::INFINITY),
+ ("+inf", f64::INFINITY),
+ ("-inf", f64::NEG_INFINITY),
+ // ("1e+400", std::f64::INFINITY),
+ ];
+ for &(input, expected) in &cases {
+ dbg!(input);
+ let parsed = float.parse(new_input(input)).unwrap();
+ assert_float_eq(parsed, expected);
+
+ let overflow = "9e99999";
+ let parsed = float.parse(new_input(overflow));
+ assert!(parsed.is_err(), "{:?}", parsed);
+ }
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/parser/state.rs b/vendor/toml_edit-0.19.11/src/parser/state.rs
new file mode 100644
index 000000000..efa884d2f
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/parser/state.rs
@@ -0,0 +1,323 @@
+use crate::key::Key;
+use crate::parser::errors::CustomError;
+use crate::repr::Decor;
+use crate::table::TableKeyValue;
+use crate::{ArrayOfTables, Document, InternalString, Item, RawString, Table};
+
+pub(crate) struct ParseState {
+ document: Document,
+ trailing: Option<std::ops::Range<usize>>,
+ current_table_position: usize,
+ current_table: Table,
+ current_is_array: bool,
+ current_table_path: Vec<Key>,
+}
+
+impl ParseState {
+ pub(crate) fn into_document(mut self) -> Result<Document, CustomError> {
+ self.finalize_table()?;
+ let trailing = self.trailing.map(RawString::with_span);
+ self.document.trailing = trailing.unwrap_or_default();
+ Ok(self.document)
+ }
+
+ pub(crate) fn on_ws(&mut self, span: std::ops::Range<usize>) {
+ if let Some(old) = self.trailing.take() {
+ self.trailing = Some(old.start..span.end);
+ } else {
+ self.trailing = Some(span);
+ }
+ }
+
+ pub(crate) fn on_comment(&mut self, span: std::ops::Range<usize>) {
+ if let Some(old) = self.trailing.take() {
+ self.trailing = Some(old.start..span.end);
+ } else {
+ self.trailing = Some(span);
+ }
+ }
+
+ pub(crate) fn on_keyval(
+ &mut self,
+ mut path: Vec<Key>,
+ mut kv: TableKeyValue,
+ ) -> Result<(), CustomError> {
+ {
+ let mut prefix = self.trailing.take();
+ let first_key = if path.is_empty() {
+ &mut kv.key
+ } else {
+ &mut path[0]
+ };
+ let prefix = match (
+ prefix.take(),
+ first_key.decor.prefix().and_then(|d| d.span()),
+ ) {
+ (Some(p), Some(k)) => Some(p.start..k.end),
+ (Some(p), None) | (None, Some(p)) => Some(p),
+ (None, None) => None,
+ };
+ first_key
+ .decor
+ .set_prefix(prefix.map(RawString::with_span).unwrap_or_default());
+ }
+
+ if let (Some(existing), Some(value)) = (self.current_table.span(), kv.value.span()) {
+ self.current_table.span = Some((existing.start)..(value.end));
+ }
+ let table = &mut self.current_table;
+ let table = Self::descend_path(table, &path, true)?;
+
+ // "Likewise, using dotted keys to redefine tables already defined in [table] form is not allowed"
+ let mixed_table_types = table.is_dotted() == path.is_empty();
+ if mixed_table_types {
+ return Err(CustomError::DuplicateKey {
+ key: kv.key.get().into(),
+ table: None,
+ });
+ }
+
+ let key: InternalString = kv.key.get_internal().into();
+ match table.items.entry(key) {
+ indexmap::map::Entry::Vacant(o) => {
+ o.insert(kv);
+ }
+ indexmap::map::Entry::Occupied(o) => {
+ // "Since tables cannot be defined more than once, redefining such tables using a [table] header is not allowed"
+ return Err(CustomError::DuplicateKey {
+ key: o.key().as_str().into(),
+ table: Some(self.current_table_path.clone()),
+ });
+ }
+ }
+
+ Ok(())
+ }
+
+ pub(crate) fn start_aray_table(
+ &mut self,
+ path: Vec<Key>,
+ decor: Decor,
+ span: std::ops::Range<usize>,
+ ) -> Result<(), CustomError> {
+ debug_assert!(!path.is_empty());
+ debug_assert!(self.current_table.is_empty());
+ debug_assert!(self.current_table_path.is_empty());
+
+ // Look up the table on start to ensure the duplicate_key error points to the right line
+ let root = self.document.as_table_mut();
+ let parent_table = Self::descend_path(root, &path[..path.len() - 1], false)?;
+ let key = &path[path.len() - 1];
+ let entry = parent_table
+ .entry_format(key)
+ .or_insert(Item::ArrayOfTables(ArrayOfTables::new()));
+ entry
+ .as_array_of_tables()
+ .ok_or_else(|| CustomError::duplicate_key(&path, path.len() - 1))?;
+
+ self.current_table_position += 1;
+ self.current_table.decor = decor;
+ self.current_table.set_implicit(false);
+ self.current_table.set_dotted(false);
+ self.current_table.set_position(self.current_table_position);
+ self.current_table.span = Some(span);
+ self.current_is_array = true;
+ self.current_table_path = path;
+
+ Ok(())
+ }
+
+ pub(crate) fn start_table(
+ &mut self,
+ path: Vec<Key>,
+ decor: Decor,
+ span: std::ops::Range<usize>,
+ ) -> Result<(), CustomError> {
+ debug_assert!(!path.is_empty());
+ debug_assert!(self.current_table.is_empty());
+ debug_assert!(self.current_table_path.is_empty());
+
+ // 1. Look up the table on start to ensure the duplicate_key error points to the right line
+ // 2. Ensure any child tables from an implicit table are preserved
+ let root = self.document.as_table_mut();
+ let parent_table = Self::descend_path(root, &path[..path.len() - 1], false)?;
+ let key = &path[path.len() - 1];
+ if let Some(entry) = parent_table.remove(key.get()) {
+ match entry {
+ Item::Table(t) if t.implicit && !t.is_dotted() => {
+ self.current_table = t;
+ }
+ // Since tables cannot be defined more than once, redefining such tables using a [table] header is not allowed. Likewise, using dotted keys to redefine tables already defined in [table] form is not allowed.
+ _ => return Err(CustomError::duplicate_key(&path, path.len() - 1)),
+ }
+ }
+
+ self.current_table_position += 1;
+ self.current_table.decor = decor;
+ self.current_table.set_implicit(false);
+ self.current_table.set_dotted(false);
+ self.current_table.set_position(self.current_table_position);
+ self.current_table.span = Some(span);
+ self.current_is_array = false;
+ self.current_table_path = path;
+
+ Ok(())
+ }
+
+ pub(crate) fn finalize_table(&mut self) -> Result<(), CustomError> {
+ let mut table = std::mem::take(&mut self.current_table);
+ let path = std::mem::take(&mut self.current_table_path);
+
+ let root = self.document.as_table_mut();
+ if path.is_empty() {
+ assert!(root.is_empty());
+ std::mem::swap(&mut table, root);
+ } else if self.current_is_array {
+ let parent_table = Self::descend_path(root, &path[..path.len() - 1], false)?;
+ let key = &path[path.len() - 1];
+
+ let entry = parent_table
+ .entry_format(key)
+ .or_insert(Item::ArrayOfTables(ArrayOfTables::new()));
+ let array = entry
+ .as_array_of_tables_mut()
+ .ok_or_else(|| CustomError::duplicate_key(&path, path.len() - 1))?;
+ array.push(table);
+ let span = if let (Some(first), Some(last)) = (
+ array.values.first().and_then(|t| t.span()),
+ array.values.last().and_then(|t| t.span()),
+ ) {
+ Some((first.start)..(last.end))
+ } else {
+ None
+ };
+ array.span = span;
+ } else {
+ let parent_table = Self::descend_path(root, &path[..path.len() - 1], false)?;
+ let key = &path[path.len() - 1];
+
+ let entry = parent_table.entry_format(key);
+ match entry {
+ crate::Entry::Occupied(entry) => {
+ match entry.into_mut() {
+ // if [a.b.c] header preceded [a.b]
+ Item::Table(ref mut t) if t.implicit => {
+ std::mem::swap(t, &mut table);
+ }
+ _ => return Err(CustomError::duplicate_key(&path, path.len() - 1)),
+ }
+ }
+ crate::Entry::Vacant(entry) => {
+ let item = Item::Table(table);
+ entry.insert(item);
+ }
+ }
+ }
+
+ Ok(())
+ }
+
+ pub(crate) fn descend_path<'t, 'k>(
+ mut table: &'t mut Table,
+ path: &'k [Key],
+ dotted: bool,
+ ) -> Result<&'t mut Table, CustomError> {
+ for (i, key) in path.iter().enumerate() {
+ let entry = table.entry_format(key).or_insert_with(|| {
+ let mut new_table = Table::new();
+ new_table.set_implicit(true);
+ new_table.set_dotted(dotted);
+
+ Item::Table(new_table)
+ });
+ match *entry {
+ Item::Value(ref v) => {
+ return Err(CustomError::extend_wrong_type(path, i, v.type_name()));
+ }
+ Item::ArrayOfTables(ref mut array) => {
+ debug_assert!(!array.is_empty());
+
+ let index = array.len() - 1;
+ let last_child = array.get_mut(index).unwrap();
+
+ table = last_child;
+ }
+ Item::Table(ref mut sweet_child_of_mine) => {
+ // Since tables cannot be defined more than once, redefining such tables using a
+ // [table] header is not allowed. Likewise, using dotted keys to redefine tables
+ // already defined in [table] form is not allowed.
+ if dotted && !sweet_child_of_mine.is_implicit() {
+ return Err(CustomError::DuplicateKey {
+ key: key.get().into(),
+ table: None,
+ });
+ }
+ table = sweet_child_of_mine;
+ }
+ _ => unreachable!(),
+ }
+ }
+ Ok(table)
+ }
+
+ pub(crate) fn on_std_header(
+ &mut self,
+ path: Vec<Key>,
+ trailing: std::ops::Range<usize>,
+ span: std::ops::Range<usize>,
+ ) -> Result<(), CustomError> {
+ debug_assert!(!path.is_empty());
+
+ self.finalize_table()?;
+ let leading = self
+ .trailing
+ .take()
+ .map(RawString::with_span)
+ .unwrap_or_default();
+ self.start_table(
+ path,
+ Decor::new(leading, RawString::with_span(trailing)),
+ span,
+ )?;
+
+ Ok(())
+ }
+
+ pub(crate) fn on_array_header(
+ &mut self,
+ path: Vec<Key>,
+ trailing: std::ops::Range<usize>,
+ span: std::ops::Range<usize>,
+ ) -> Result<(), CustomError> {
+ debug_assert!(!path.is_empty());
+
+ self.finalize_table()?;
+ let leading = self
+ .trailing
+ .take()
+ .map(RawString::with_span)
+ .unwrap_or_default();
+ self.start_aray_table(
+ path,
+ Decor::new(leading, RawString::with_span(trailing)),
+ span,
+ )?;
+
+ Ok(())
+ }
+}
+
+impl Default for ParseState {
+ fn default() -> Self {
+ let mut root = Table::new();
+ root.span = Some(0..0);
+ Self {
+ document: Document::new(),
+ trailing: None,
+ current_table_position: 0,
+ current_table: root,
+ current_is_array: false,
+ current_table_path: Vec::new(),
+ }
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/parser/strings.rs b/vendor/toml_edit-0.19.11/src/parser/strings.rs
new file mode 100644
index 000000000..2ce160506
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/parser/strings.rs
@@ -0,0 +1,464 @@
+use std::borrow::Cow;
+use std::char;
+use std::ops::RangeInclusive;
+
+use winnow::combinator::alt;
+use winnow::combinator::cut_err;
+use winnow::combinator::delimited;
+use winnow::combinator::fail;
+use winnow::combinator::opt;
+use winnow::combinator::peek;
+use winnow::combinator::preceded;
+use winnow::combinator::repeat;
+use winnow::combinator::success;
+use winnow::combinator::terminated;
+use winnow::prelude::*;
+use winnow::token::any;
+use winnow::token::none_of;
+use winnow::token::one_of;
+use winnow::token::tag;
+use winnow::token::take_while;
+
+use crate::parser::errors::CustomError;
+use crate::parser::numbers::HEXDIG;
+use crate::parser::prelude::*;
+use crate::parser::trivia::{from_utf8_unchecked, newline, ws, ws_newlines, NON_ASCII, WSCHAR};
+
+// ;; String
+
+// string = ml-basic-string / basic-string / ml-literal-string / literal-string
+pub(crate) fn string(input: Input<'_>) -> IResult<Input<'_>, Cow<'_, str>, ParserError<'_>> {
+ alt((
+ ml_basic_string,
+ basic_string,
+ ml_literal_string,
+ literal_string.map(Cow::Borrowed),
+ ))
+ .parse_next(input)
+}
+
+// ;; Basic String
+
+// basic-string = quotation-mark *basic-char quotation-mark
+pub(crate) fn basic_string(input: Input<'_>) -> IResult<Input<'_>, Cow<'_, str>, ParserError<'_>> {
+ let (mut input, _) = one_of(QUOTATION_MARK).parse_next(input)?;
+
+ let mut c = Cow::Borrowed("");
+ if let Some((i, ci)) = ok_error(basic_chars.parse_next(input))? {
+ input = i;
+ c = ci;
+ }
+ while let Some((i, ci)) = ok_error(basic_chars.parse_next(input))? {
+ input = i;
+ c.to_mut().push_str(&ci);
+ }
+
+ let (input, _) = cut_err(one_of(QUOTATION_MARK))
+ .context(Context::Expression("basic string"))
+ .parse_next(input)?;
+
+ Ok((input, c))
+}
+
+// quotation-mark = %x22 ; "
+pub(crate) const QUOTATION_MARK: u8 = b'"';
+
+// basic-char = basic-unescaped / escaped
+fn basic_chars(input: Input<'_>) -> IResult<Input<'_>, Cow<'_, str>, ParserError<'_>> {
+ alt((
+ // Deviate from the official grammar by batching the unescaped chars so we build a string a
+ // chunk at a time, rather than a `char` at a time.
+ take_while(1.., BASIC_UNESCAPED)
+ .try_map(std::str::from_utf8)
+ .map(Cow::Borrowed),
+ escaped.map(|c| Cow::Owned(String::from(c))),
+ ))
+ .parse_next(input)
+}
+
+// basic-unescaped = wschar / %x21 / %x23-5B / %x5D-7E / non-ascii
+pub(crate) const BASIC_UNESCAPED: (
+ (u8, u8),
+ u8,
+ RangeInclusive<u8>,
+ RangeInclusive<u8>,
+ RangeInclusive<u8>,
+) = (WSCHAR, 0x21, 0x23..=0x5B, 0x5D..=0x7E, NON_ASCII);
+
+// escaped = escape escape-seq-char
+fn escaped(input: Input<'_>) -> IResult<Input<'_>, char, ParserError<'_>> {
+ preceded(ESCAPE, escape_seq_char).parse_next(input)
+}
+
+// escape = %x5C ; \
+pub(crate) const ESCAPE: u8 = b'\\';
+
+// escape-seq-char = %x22 ; " quotation mark U+0022
+// escape-seq-char =/ %x5C ; \ reverse solidus U+005C
+// escape-seq-char =/ %x62 ; b backspace U+0008
+// escape-seq-char =/ %x66 ; f form feed U+000C
+// escape-seq-char =/ %x6E ; n line feed U+000A
+// escape-seq-char =/ %x72 ; r carriage return U+000D
+// escape-seq-char =/ %x74 ; t tab U+0009
+// escape-seq-char =/ %x75 4HEXDIG ; uXXXX U+XXXX
+// escape-seq-char =/ %x55 8HEXDIG ; UXXXXXXXX U+XXXXXXXX
+fn escape_seq_char(input: Input<'_>) -> IResult<Input<'_>, char, ParserError<'_>> {
+ dispatch! {any;
+ b'b' => success('\u{8}'),
+ b'f' => success('\u{c}'),
+ b'n' => success('\n'),
+ b'r' => success('\r'),
+ b't' => success('\t'),
+ b'u' => cut_err(hexescape::<4>).context(Context::Expression("unicode 4-digit hex code")),
+ b'U' => cut_err(hexescape::<8>).context(Context::Expression("unicode 8-digit hex code")),
+ b'\\' => success('\\'),
+ b'"' => success('"'),
+ _ => {
+ cut_err(fail::<_, char, _>)
+ .context(Context::Expression("escape sequence"))
+ .context(Context::Expected(ParserValue::CharLiteral('b')))
+ .context(Context::Expected(ParserValue::CharLiteral('f')))
+ .context(Context::Expected(ParserValue::CharLiteral('n')))
+ .context(Context::Expected(ParserValue::CharLiteral('r')))
+ .context(Context::Expected(ParserValue::CharLiteral('t')))
+ .context(Context::Expected(ParserValue::CharLiteral('u')))
+ .context(Context::Expected(ParserValue::CharLiteral('U')))
+ .context(Context::Expected(ParserValue::CharLiteral('\\')))
+ .context(Context::Expected(ParserValue::CharLiteral('"')))
+ }
+ }
+ .parse_next(input)
+}
+
+pub(crate) fn hexescape<const N: usize>(
+ input: Input<'_>,
+) -> IResult<Input<'_>, char, ParserError<'_>> {
+ take_while(0..=N, HEXDIG)
+ .verify(|b: &[u8]| b.len() == N)
+ .map(|b: &[u8]| unsafe { from_utf8_unchecked(b, "`is_ascii_digit` filters out on-ASCII") })
+ .verify_map(|s| u32::from_str_radix(s, 16).ok())
+ .try_map(|h| char::from_u32(h).ok_or(CustomError::OutOfRange))
+ .parse_next(input)
+}
+
+// ;; Multiline Basic String
+
+// ml-basic-string = ml-basic-string-delim [ newline ] ml-basic-body
+// ml-basic-string-delim
+fn ml_basic_string(input: Input<'_>) -> IResult<Input<'_>, Cow<'_, str>, ParserError<'_>> {
+ delimited(
+ ML_BASIC_STRING_DELIM,
+ preceded(opt(newline), cut_err(ml_basic_body)),
+ cut_err(ML_BASIC_STRING_DELIM),
+ )
+ .context(Context::Expression("multiline basic string"))
+ .parse_next(input)
+}
+
+// ml-basic-string-delim = 3quotation-mark
+pub(crate) const ML_BASIC_STRING_DELIM: &[u8] = b"\"\"\"";
+
+// ml-basic-body = *mlb-content *( mlb-quotes 1*mlb-content ) [ mlb-quotes ]
+fn ml_basic_body(mut input: Input<'_>) -> IResult<Input<'_>, Cow<'_, str>, ParserError<'_>> {
+ let mut c = Cow::Borrowed("");
+ if let Some((i, ci)) = ok_error(mlb_content.parse_next(input))? {
+ input = i;
+ c = ci;
+ }
+ while let Some((i, ci)) = ok_error(mlb_content.parse_next(input))? {
+ input = i;
+ c.to_mut().push_str(&ci);
+ }
+
+ while let Some((i, qi)) = ok_error(mlb_quotes(none_of(b'\"').value(())).parse_next(input))? {
+ if let Some((i, ci)) = ok_error(mlb_content.parse_next(i))? {
+ input = i;
+ c.to_mut().push_str(qi);
+ c.to_mut().push_str(&ci);
+ while let Some((i, ci)) = ok_error(mlb_content.parse_next(input))? {
+ input = i;
+ c.to_mut().push_str(&ci);
+ }
+ } else {
+ break;
+ }
+ }
+
+ if let Some((i, qi)) =
+ ok_error(mlb_quotes(tag(ML_BASIC_STRING_DELIM).value(())).parse_next(input))?
+ {
+ input = i;
+ c.to_mut().push_str(qi);
+ }
+
+ Ok((input, c))
+}
+
+// mlb-content = mlb-char / newline / mlb-escaped-nl
+// mlb-char = mlb-unescaped / escaped
+fn mlb_content(input: Input<'_>) -> IResult<Input<'_>, Cow<'_, str>, ParserError<'_>> {
+ alt((
+ // Deviate from the official grammar by batching the unescaped chars so we build a string a
+ // chunk at a time, rather than a `char` at a time.
+ take_while(1.., MLB_UNESCAPED)
+ .try_map(std::str::from_utf8)
+ .map(Cow::Borrowed),
+ // Order changed fromg grammar so `escaped` can more easily `cut_err` on bad escape sequences
+ mlb_escaped_nl.map(|_| Cow::Borrowed("")),
+ escaped.map(|c| Cow::Owned(String::from(c))),
+ newline.map(|_| Cow::Borrowed("\n")),
+ ))
+ .parse_next(input)
+}
+
+// mlb-quotes = 1*2quotation-mark
+fn mlb_quotes<'i>(
+ mut term: impl winnow::Parser<Input<'i>, (), ParserError<'i>>,
+) -> impl FnMut(Input<'i>) -> IResult<Input<'i>, &str, ParserError<'i>> {
+ move |input| {
+ let res = terminated(b"\"\"", peek(term.by_ref()))
+ .map(|b| unsafe { from_utf8_unchecked(b, "`bytes` out non-ASCII") })
+ .parse_next(input);
+
+ match res {
+ Err(winnow::error::ErrMode::Backtrack(_)) => terminated(b"\"", peek(term.by_ref()))
+ .map(|b| unsafe { from_utf8_unchecked(b, "`bytes` out non-ASCII") })
+ .parse_next(input),
+ res => res,
+ }
+ }
+}
+
+// mlb-unescaped = wschar / %x21 / %x23-5B / %x5D-7E / non-ascii
+pub(crate) const MLB_UNESCAPED: (
+ (u8, u8),
+ u8,
+ RangeInclusive<u8>,
+ RangeInclusive<u8>,
+ RangeInclusive<u8>,
+) = (WSCHAR, 0x21, 0x23..=0x5B, 0x5D..=0x7E, NON_ASCII);
+
+// mlb-escaped-nl = escape ws newline *( wschar / newline
+// When the last non-whitespace character on a line is a \,
+// it will be trimmed along with all whitespace
+// (including newlines) up to the next non-whitespace
+// character or closing delimiter.
+fn mlb_escaped_nl(input: Input<'_>) -> IResult<Input<'_>, (), ParserError<'_>> {
+ repeat(1.., (ESCAPE, ws, ws_newlines))
+ .map(|()| ())
+ .value(())
+ .parse_next(input)
+}
+
+// ;; Literal String
+
+// literal-string = apostrophe *literal-char apostrophe
+pub(crate) fn literal_string(input: Input<'_>) -> IResult<Input<'_>, &str, ParserError<'_>> {
+ delimited(
+ APOSTROPHE,
+ cut_err(take_while(0.., LITERAL_CHAR)),
+ cut_err(APOSTROPHE),
+ )
+ .try_map(std::str::from_utf8)
+ .context(Context::Expression("literal string"))
+ .parse_next(input)
+}
+
+// apostrophe = %x27 ; ' apostrophe
+pub(crate) const APOSTROPHE: u8 = b'\'';
+
+// literal-char = %x09 / %x20-26 / %x28-7E / non-ascii
+pub(crate) const LITERAL_CHAR: (
+ u8,
+ RangeInclusive<u8>,
+ RangeInclusive<u8>,
+ RangeInclusive<u8>,
+) = (0x9, 0x20..=0x26, 0x28..=0x7E, NON_ASCII);
+
+// ;; Multiline Literal String
+
+// ml-literal-string = ml-literal-string-delim [ newline ] ml-literal-body
+// ml-literal-string-delim
+fn ml_literal_string(input: Input<'_>) -> IResult<Input<'_>, Cow<'_, str>, ParserError<'_>> {
+ delimited(
+ (ML_LITERAL_STRING_DELIM, opt(newline)),
+ cut_err(ml_literal_body.map(|t| {
+ if t.contains("\r\n") {
+ Cow::Owned(t.replace("\r\n", "\n"))
+ } else {
+ Cow::Borrowed(t)
+ }
+ })),
+ cut_err(ML_LITERAL_STRING_DELIM),
+ )
+ .context(Context::Expression("multiline literal string"))
+ .parse_next(input)
+}
+
+// ml-literal-string-delim = 3apostrophe
+pub(crate) const ML_LITERAL_STRING_DELIM: &[u8] = b"'''";
+
+// ml-literal-body = *mll-content *( mll-quotes 1*mll-content ) [ mll-quotes ]
+fn ml_literal_body(input: Input<'_>) -> IResult<Input<'_>, &str, ParserError<'_>> {
+ (
+ repeat(0.., mll_content).map(|()| ()),
+ repeat(
+ 0..,
+ (
+ mll_quotes(none_of(APOSTROPHE).value(())),
+ repeat(1.., mll_content).map(|()| ()),
+ ),
+ )
+ .map(|()| ()),
+ opt(mll_quotes(tag(ML_LITERAL_STRING_DELIM).value(()))),
+ )
+ .recognize()
+ .try_map(std::str::from_utf8)
+ .parse_next(input)
+}
+
+// mll-content = mll-char / newline
+fn mll_content(input: Input<'_>) -> IResult<Input<'_>, u8, ParserError<'_>> {
+ alt((one_of(MLL_CHAR), newline)).parse_next(input)
+}
+
+// mll-char = %x09 / %x20-26 / %x28-7E / non-ascii
+const MLL_CHAR: (
+ u8,
+ RangeInclusive<u8>,
+ RangeInclusive<u8>,
+ RangeInclusive<u8>,
+) = (0x9, 0x20..=0x26, 0x28..=0x7E, NON_ASCII);
+
+// mll-quotes = 1*2apostrophe
+fn mll_quotes<'i>(
+ mut term: impl winnow::Parser<Input<'i>, (), ParserError<'i>>,
+) -> impl FnMut(Input<'i>) -> IResult<Input<'i>, &str, ParserError<'i>> {
+ move |input| {
+ let res = terminated(b"''", peek(term.by_ref()))
+ .map(|b| unsafe { from_utf8_unchecked(b, "`bytes` out non-ASCII") })
+ .parse_next(input);
+
+ match res {
+ Err(winnow::error::ErrMode::Backtrack(_)) => terminated(b"'", peek(term.by_ref()))
+ .map(|b| unsafe { from_utf8_unchecked(b, "`bytes` out non-ASCII") })
+ .parse_next(input),
+ res => res,
+ }
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use super::*;
+
+ #[test]
+ fn basic_string() {
+ let input =
+ r#""I'm a string. \"You can quote me\". Name\tJos\u00E9\nLocation\tSF. \U0002070E""#;
+ let expected = "I\'m a string. \"You can quote me\". Name\tJosé\nLocation\tSF. \u{2070E}";
+ let parsed = string.parse(new_input(input));
+ assert_eq!(parsed.as_deref(), Ok(expected), "Parsing {input:?}");
+ }
+
+ #[test]
+ fn ml_basic_string() {
+ let cases = [
+ (
+ r#""""
+Roses are red
+Violets are blue""""#,
+ r#"Roses are red
+Violets are blue"#,
+ ),
+ (r#"""" \""" """"#, " \"\"\" "),
+ (r#"""" \\""""#, " \\"),
+ ];
+
+ for &(input, expected) in &cases {
+ let parsed = string.parse(new_input(input));
+ assert_eq!(parsed.as_deref(), Ok(expected), "Parsing {input:?}");
+ }
+
+ let invalid_cases = [r#"""" """#, r#"""" \""""#];
+
+ for input in &invalid_cases {
+ let parsed = string.parse(new_input(input));
+ assert!(parsed.is_err());
+ }
+ }
+
+ #[test]
+ fn ml_basic_string_escape_ws() {
+ let inputs = [
+ r#""""
+The quick brown \
+
+
+ fox jumps over \
+ the lazy dog.""""#,
+ r#""""\
+ The quick brown \
+ fox jumps over \
+ the lazy dog.\
+ """"#,
+ ];
+ for input in &inputs {
+ let expected = "The quick brown fox jumps over the lazy dog.";
+ let parsed = string.parse(new_input(input));
+ assert_eq!(parsed.as_deref(), Ok(expected), "Parsing {input:?}");
+ }
+ let empties = [
+ r#""""\
+ """"#,
+ r#""""
+\
+ \
+""""#,
+ ];
+ for input in &empties {
+ let expected = "";
+ let parsed = string.parse(new_input(input));
+ assert_eq!(parsed.as_deref(), Ok(expected), "Parsing {input:?}");
+ }
+ }
+
+ #[test]
+ fn literal_string() {
+ let inputs = [
+ r#"'C:\Users\nodejs\templates'"#,
+ r#"'\\ServerX\admin$\system32\'"#,
+ r#"'Tom "Dubs" Preston-Werner'"#,
+ r#"'<\i\c*\s*>'"#,
+ ];
+
+ for input in &inputs {
+ let expected = &input[1..input.len() - 1];
+ let parsed = string.parse(new_input(input));
+ assert_eq!(parsed.as_deref(), Ok(expected), "Parsing {input:?}");
+ }
+ }
+
+ #[test]
+ fn ml_literal_string() {
+ let inputs = [
+ r#"'''I [dw]on't need \d{2} apples'''"#,
+ r#"''''one_quote''''"#,
+ ];
+ for input in &inputs {
+ let expected = &input[3..input.len() - 3];
+ let parsed = string.parse(new_input(input));
+ assert_eq!(parsed.as_deref(), Ok(expected), "Parsing {input:?}");
+ }
+
+ let input = r#"'''
+The first newline is
+trimmed in raw strings.
+ All other whitespace
+ is preserved.
+'''"#;
+ let expected = &input[4..input.len() - 3];
+ let parsed = string.parse(new_input(input));
+ assert_eq!(parsed.as_deref(), Ok(expected), "Parsing {input:?}");
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/parser/table.rs b/vendor/toml_edit-0.19.11/src/parser/table.rs
new file mode 100644
index 000000000..9d2675868
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/parser/table.rs
@@ -0,0 +1,89 @@
+use std::cell::RefCell;
+#[allow(unused_imports)]
+use std::ops::DerefMut;
+
+use winnow::combinator::cut_err;
+use winnow::combinator::delimited;
+use winnow::combinator::peek;
+use winnow::token::take;
+
+// https://github.com/rust-lang/rust/issues/41358
+use crate::parser::key::key;
+use crate::parser::prelude::*;
+use crate::parser::state::ParseState;
+use crate::parser::trivia::line_trailing;
+
+// std-table-open = %x5B ws ; [ Left square bracket
+pub(crate) const STD_TABLE_OPEN: u8 = b'[';
+// std-table-close = ws %x5D ; ] Right square bracket
+const STD_TABLE_CLOSE: u8 = b']';
+// array-table-open = %x5B.5B ws ; [[ Double left square bracket
+const ARRAY_TABLE_OPEN: &[u8] = b"[[";
+// array-table-close = ws %x5D.5D ; ]] Double right quare bracket
+const ARRAY_TABLE_CLOSE: &[u8] = b"]]";
+
+// ;; Standard Table
+
+// std-table = std-table-open key *( table-key-sep key) std-table-close
+pub(crate) fn std_table<'s, 'i>(
+ state: &'s RefCell<ParseState>,
+) -> impl FnMut(Input<'i>) -> IResult<Input<'i>, (), ParserError<'i>> + 's {
+ move |i| {
+ (
+ delimited(
+ STD_TABLE_OPEN,
+ cut_err(key),
+ cut_err(STD_TABLE_CLOSE)
+ .context(Context::Expected(ParserValue::CharLiteral('.')))
+ .context(Context::Expected(ParserValue::StringLiteral("]"))),
+ )
+ .with_span(),
+ cut_err(line_trailing)
+ .context(Context::Expected(ParserValue::CharLiteral('\n')))
+ .context(Context::Expected(ParserValue::CharLiteral('#'))),
+ )
+ .try_map(|((h, span), t)| state.borrow_mut().deref_mut().on_std_header(h, t, span))
+ .parse_next(i)
+ }
+}
+
+// ;; Array Table
+
+// array-table = array-table-open key *( table-key-sep key) array-table-close
+pub(crate) fn array_table<'s, 'i>(
+ state: &'s RefCell<ParseState>,
+) -> impl FnMut(Input<'i>) -> IResult<Input<'i>, (), ParserError<'i>> + 's {
+ move |i| {
+ (
+ delimited(
+ ARRAY_TABLE_OPEN,
+ cut_err(key),
+ cut_err(ARRAY_TABLE_CLOSE)
+ .context(Context::Expected(ParserValue::CharLiteral('.')))
+ .context(Context::Expected(ParserValue::StringLiteral("]]"))),
+ )
+ .with_span(),
+ cut_err(line_trailing)
+ .context(Context::Expected(ParserValue::CharLiteral('\n')))
+ .context(Context::Expected(ParserValue::CharLiteral('#'))),
+ )
+ .try_map(|((h, span), t)| state.borrow_mut().deref_mut().on_array_header(h, t, span))
+ .parse_next(i)
+ }
+}
+
+// ;; Table
+
+// table = std-table / array-table
+pub(crate) fn table<'s, 'i>(
+ state: &'s RefCell<ParseState>,
+) -> impl FnMut(Input<'i>) -> IResult<Input<'i>, (), ParserError<'i>> + 's {
+ move |i| {
+ dispatch!(peek::<_, &[u8],_,_>(take(2usize));
+ b"[[" => array_table(state),
+ _ => std_table(state),
+ )
+ .context(Context::Expression("table header"))
+ .parse_next(i)
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/parser/trivia.rs b/vendor/toml_edit-0.19.11/src/parser/trivia.rs
new file mode 100644
index 000000000..ba47dcde6
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/parser/trivia.rs
@@ -0,0 +1,158 @@
+use std::ops::RangeInclusive;
+
+use winnow::combinator::alt;
+use winnow::combinator::eof;
+use winnow::combinator::opt;
+use winnow::combinator::repeat;
+use winnow::combinator::terminated;
+use winnow::prelude::*;
+use winnow::token::one_of;
+use winnow::token::take_while;
+
+use crate::parser::prelude::*;
+
+pub(crate) unsafe fn from_utf8_unchecked<'b>(
+ bytes: &'b [u8],
+ safety_justification: &'static str,
+) -> &'b str {
+ if cfg!(debug_assertions) {
+ // Catch problems more quickly when testing
+ std::str::from_utf8(bytes).expect(safety_justification)
+ } else {
+ std::str::from_utf8_unchecked(bytes)
+ }
+}
+
+// wschar = ( %x20 / ; Space
+// %x09 ) ; Horizontal tab
+pub(crate) const WSCHAR: (u8, u8) = (b' ', b'\t');
+
+// ws = *wschar
+pub(crate) fn ws(input: Input<'_>) -> IResult<Input<'_>, &str, ParserError<'_>> {
+ take_while(0.., WSCHAR)
+ .map(|b| unsafe { from_utf8_unchecked(b, "`is_wschar` filters out on-ASCII") })
+ .parse_next(input)
+}
+
+// non-ascii = %x80-D7FF / %xE000-10FFFF
+// - ASCII is 0xxxxxxx
+// - First byte for UTF-8 is 11xxxxxx
+// - Subsequent UTF-8 bytes are 10xxxxxx
+pub(crate) const NON_ASCII: RangeInclusive<u8> = 0x80..=0xff;
+
+// non-eol = %x09 / %x20-7E / non-ascii
+pub(crate) const NON_EOL: (u8, RangeInclusive<u8>, RangeInclusive<u8>) =
+ (0x09, 0x20..=0x7E, NON_ASCII);
+
+// comment-start-symbol = %x23 ; #
+pub(crate) const COMMENT_START_SYMBOL: u8 = b'#';
+
+// comment = comment-start-symbol *non-eol
+pub(crate) fn comment(input: Input<'_>) -> IResult<Input<'_>, &[u8], ParserError<'_>> {
+ (COMMENT_START_SYMBOL, take_while(0.., NON_EOL))
+ .recognize()
+ .parse_next(input)
+}
+
+// newline = ( %x0A / ; LF
+// %x0D.0A ) ; CRLF
+pub(crate) fn newline(input: Input<'_>) -> IResult<Input<'_>, u8, ParserError<'_>> {
+ alt((
+ one_of(LF).value(b'\n'),
+ (one_of(CR), one_of(LF)).value(b'\n'),
+ ))
+ .parse_next(input)
+}
+pub(crate) const LF: u8 = b'\n';
+pub(crate) const CR: u8 = b'\r';
+
+// ws-newline = *( wschar / newline )
+pub(crate) fn ws_newline(input: Input<'_>) -> IResult<Input<'_>, &str, ParserError<'_>> {
+ repeat(
+ 0..,
+ alt((newline.value(&b"\n"[..]), take_while(1.., WSCHAR))),
+ )
+ .map(|()| ())
+ .recognize()
+ .map(|b| unsafe { from_utf8_unchecked(b, "`is_wschar` and `newline` filters out on-ASCII") })
+ .parse_next(input)
+}
+
+// ws-newlines = newline *( wschar / newline )
+pub(crate) fn ws_newlines(input: Input<'_>) -> IResult<Input<'_>, &str, ParserError<'_>> {
+ (newline, ws_newline)
+ .recognize()
+ .map(|b| unsafe {
+ from_utf8_unchecked(b, "`is_wschar` and `newline` filters out on-ASCII")
+ })
+ .parse_next(input)
+}
+
+// note: this rule is not present in the original grammar
+// ws-comment-newline = *( ws-newline-nonempty / comment )
+pub(crate) fn ws_comment_newline(input: Input<'_>) -> IResult<Input<'_>, &[u8], ParserError<'_>> {
+ repeat(
+ 0..,
+ alt((
+ repeat(
+ 1..,
+ alt((take_while(1.., WSCHAR), newline.value(&b"\n"[..]))),
+ )
+ .map(|()| ()),
+ comment.value(()),
+ )),
+ )
+ .map(|()| ())
+ .recognize()
+ .parse_next(input)
+}
+
+// note: this rule is not present in the original grammar
+// line-ending = newline / eof
+pub(crate) fn line_ending(input: Input<'_>) -> IResult<Input<'_>, &str, ParserError<'_>> {
+ alt((newline.value("\n"), eof.value(""))).parse_next(input)
+}
+
+// note: this rule is not present in the original grammar
+// line-trailing = ws [comment] skip-line-ending
+pub(crate) fn line_trailing(
+ input: Input<'_>,
+) -> IResult<Input<'_>, std::ops::Range<usize>, ParserError<'_>> {
+ terminated((ws, opt(comment)).span(), line_ending).parse_next(input)
+}
+
+#[cfg(test)]
+mod test {
+ use super::*;
+
+ #[test]
+ fn trivia() {
+ let inputs = [
+ "",
+ r#" "#,
+ r#"
+"#,
+ r#"
+# comment
+
+# comment2
+
+
+"#,
+ r#"
+ "#,
+ r#"# comment
+# comment2
+
+
+ "#,
+ ];
+ for input in inputs {
+ dbg!(input);
+ let parsed = ws_comment_newline.parse(new_input(input));
+ assert!(parsed.is_ok(), "{:?}", parsed);
+ let parsed = parsed.unwrap();
+ assert_eq!(parsed, input.as_bytes());
+ }
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/parser/value.rs b/vendor/toml_edit-0.19.11/src/parser/value.rs
new file mode 100644
index 000000000..19950585b
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/parser/value.rs
@@ -0,0 +1,157 @@
+use winnow::branch::alt;
+use winnow::bytes::any;
+use winnow::combinator::fail;
+use winnow::combinator::peek;
+
+use crate::parser::array::array;
+use crate::parser::datetime::date_time;
+use crate::parser::inline_table::inline_table;
+use crate::parser::numbers::{float, integer};
+use crate::parser::prelude::*;
+use crate::parser::strings::string;
+use crate::repr::{Formatted, Repr};
+use crate::value as v;
+use crate::RawString;
+use crate::Value;
+
+// val = string / boolean / array / inline-table / date-time / float / integer
+pub(crate) fn value(
+ check: RecursionCheck,
+) -> impl FnMut(Input<'_>) -> IResult<Input<'_>, v::Value, ParserError<'_>> {
+ move |input| {
+ dispatch!{peek(any);
+ crate::parser::strings::QUOTATION_MARK |
+ crate::parser::strings::APOSTROPHE => string.map(|s| {
+ v::Value::String(Formatted::new(
+ s.into_owned()
+ ))
+ }),
+ crate::parser::array::ARRAY_OPEN => array(check).map(v::Value::Array),
+ crate::parser::inline_table::INLINE_TABLE_OPEN => inline_table(check).map(v::Value::InlineTable),
+ // Date/number starts
+ b'+' | b'-' | b'0'..=b'9' => {
+ // Uncommon enough not to be worth optimizing at this time
+ alt((
+ date_time
+ .map(v::Value::from),
+ float
+ .map(v::Value::from),
+ integer
+ .map(v::Value::from),
+ ))
+ },
+ // Report as if they were numbers because its most likely a typo
+ b'_' => {
+ integer
+ .map(v::Value::from)
+ .context(Context::Expected(ParserValue::Description("leading digit")))
+ },
+ // Report as if they were numbers because its most likely a typo
+ b'.' => {
+ float
+ .map(v::Value::from)
+ .context(Context::Expected(ParserValue::Description("leading digit")))
+ },
+ b't' => {
+ crate::parser::numbers::true_.map(v::Value::from)
+ .context(Context::Expression("string"))
+ .context(Context::Expected(ParserValue::CharLiteral('"')))
+ .context(Context::Expected(ParserValue::CharLiteral('\'')))
+ },
+ b'f' => {
+ crate::parser::numbers::false_.map(v::Value::from)
+ .context(Context::Expression("string"))
+ .context(Context::Expected(ParserValue::CharLiteral('"')))
+ .context(Context::Expected(ParserValue::CharLiteral('\'')))
+ },
+ b'i' => {
+ crate::parser::numbers::inf.map(v::Value::from)
+ .context(Context::Expression("string"))
+ .context(Context::Expected(ParserValue::CharLiteral('"')))
+ .context(Context::Expected(ParserValue::CharLiteral('\'')))
+ },
+ b'n' => {
+ crate::parser::numbers::nan.map(v::Value::from)
+ .context(Context::Expression("string"))
+ .context(Context::Expected(ParserValue::CharLiteral('"')))
+ .context(Context::Expected(ParserValue::CharLiteral('\'')))
+ },
+ _ => {
+ fail
+ .context(Context::Expression("string"))
+ .context(Context::Expected(ParserValue::CharLiteral('"')))
+ .context(Context::Expected(ParserValue::CharLiteral('\'')))
+ },
+ }
+ .with_span()
+ .try_map(|(value, span)| apply_raw(value, span))
+ .parse_next(input)
+ }
+}
+
+fn apply_raw(mut val: Value, span: std::ops::Range<usize>) -> Result<Value, std::str::Utf8Error> {
+ match val {
+ Value::String(ref mut f) => {
+ let raw = RawString::with_span(span);
+ f.set_repr_unchecked(Repr::new_unchecked(raw));
+ }
+ Value::Integer(ref mut f) => {
+ let raw = RawString::with_span(span);
+ f.set_repr_unchecked(Repr::new_unchecked(raw));
+ }
+ Value::Float(ref mut f) => {
+ let raw = RawString::with_span(span);
+ f.set_repr_unchecked(Repr::new_unchecked(raw));
+ }
+ Value::Boolean(ref mut f) => {
+ let raw = RawString::with_span(span);
+ f.set_repr_unchecked(Repr::new_unchecked(raw));
+ }
+ Value::Datetime(ref mut f) => {
+ let raw = RawString::with_span(span);
+ f.set_repr_unchecked(Repr::new_unchecked(raw));
+ }
+ Value::Array(ref mut arr) => {
+ arr.span = Some(span);
+ }
+ Value::InlineTable(ref mut table) => {
+ table.span = Some(span);
+ }
+ };
+ val.decorate("", "");
+ Ok(val)
+}
+
+#[cfg(test)]
+mod test {
+ use super::*;
+
+ #[test]
+ fn values() {
+ let inputs = [
+ "1979-05-27T00:32:00.999999",
+ "-239",
+ "1e200",
+ "9_224_617.445_991_228_313",
+ r#"'''I [dw]on't need \d{2} apples'''"#,
+ r#"'''
+The first newline is
+trimmed in raw strings.
+ All other whitespace
+ is preserved.
+'''"#,
+ r#""Jos\u00E9\n""#,
+ r#""\\\"\b/\f\n\r\t\u00E9\U000A0000""#,
+ r#"{ hello = "world", a = 1}"#,
+ r#"[ { x = 1, a = "2" }, {a = "a",b = "b", c = "c"} ]"#,
+ ];
+ for input in inputs {
+ dbg!(input);
+ let mut parsed = value(Default::default()).parse(new_input(input));
+ if let Ok(parsed) = &mut parsed {
+ parsed.despan(input);
+ }
+ assert_eq!(parsed.map(|a| a.to_string()), Ok(input.to_owned()));
+ }
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/raw_string.rs b/vendor/toml_edit-0.19.11/src/raw_string.rs
new file mode 100644
index 000000000..c5961f133
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/raw_string.rs
@@ -0,0 +1,182 @@
+use crate::InternalString;
+
+/// Opaque string storage for raw TOML; internal to `toml_edit`
+#[derive(PartialEq, Eq, Clone, Hash)]
+pub struct RawString(RawStringInner);
+
+#[derive(PartialEq, Eq, Clone, Hash)]
+enum RawStringInner {
+ Empty,
+ Explicit(InternalString),
+ Spanned(std::ops::Range<usize>),
+}
+
+impl RawString {
+ pub(crate) fn with_span(span: std::ops::Range<usize>) -> Self {
+ if span.start == span.end {
+ RawString(RawStringInner::Empty)
+ } else {
+ RawString(RawStringInner::Spanned(span))
+ }
+ }
+
+ /// Access the underlying string
+ pub fn as_str(&self) -> Option<&str> {
+ match &self.0 {
+ RawStringInner::Empty => Some(""),
+ RawStringInner::Explicit(s) => Some(s.as_str()),
+ RawStringInner::Spanned(_) => None,
+ }
+ }
+
+ pub(crate) fn to_str<'s>(&'s self, input: &'s str) -> &'s str {
+ match &self.0 {
+ RawStringInner::Empty => "",
+ RawStringInner::Explicit(s) => s.as_str(),
+ RawStringInner::Spanned(span) => input.get(span.clone()).unwrap_or_else(|| {
+ panic!("span {:?} should be in input:\n```\n{}\n```", span, input)
+ }),
+ }
+ }
+
+ pub(crate) fn to_str_with_default<'s>(
+ &'s self,
+ input: Option<&'s str>,
+ default: &'s str,
+ ) -> &'s str {
+ match &self.0 {
+ RawStringInner::Empty => "",
+ RawStringInner::Explicit(s) => s.as_str(),
+ RawStringInner::Spanned(span) => {
+ if let Some(input) = input {
+ input.get(span.clone()).unwrap_or_else(|| {
+ panic!("span {:?} should be in input:\n```\n{}\n```", span, input)
+ })
+ } else {
+ default
+ }
+ }
+ }
+ }
+
+ /// Access the underlying span
+ pub(crate) fn span(&self) -> Option<std::ops::Range<usize>> {
+ match &self.0 {
+ RawStringInner::Empty => None,
+ RawStringInner::Explicit(_) => None,
+ RawStringInner::Spanned(span) => Some(span.clone()),
+ }
+ }
+
+ pub(crate) fn despan(&mut self, input: &str) {
+ match &self.0 {
+ RawStringInner::Empty => {}
+ RawStringInner::Explicit(_) => {}
+ RawStringInner::Spanned(span) => {
+ *self = Self::from(input.get(span.clone()).unwrap_or_else(|| {
+ panic!("span {:?} should be in input:\n```\n{}\n```", span, input)
+ }))
+ }
+ }
+ }
+
+ pub(crate) fn encode(&self, buf: &mut dyn std::fmt::Write, input: &str) -> std::fmt::Result {
+ let raw = self.to_str(input);
+ for part in raw.split('\r') {
+ write!(buf, "{}", part)?;
+ }
+ Ok(())
+ }
+
+ pub(crate) fn encode_with_default(
+ &self,
+ buf: &mut dyn std::fmt::Write,
+ input: Option<&str>,
+ default: &str,
+ ) -> std::fmt::Result {
+ let raw = self.to_str_with_default(input, default);
+ for part in raw.split('\r') {
+ write!(buf, "{}", part)?;
+ }
+ Ok(())
+ }
+}
+
+impl Default for RawString {
+ fn default() -> Self {
+ Self(RawStringInner::Empty)
+ }
+}
+
+impl std::fmt::Debug for RawString {
+ #[inline]
+ fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
+ match &self.0 {
+ RawStringInner::Empty => write!(formatter, "empty"),
+ RawStringInner::Explicit(s) => write!(formatter, "{:?}", s),
+ RawStringInner::Spanned(s) => write!(formatter, "{:?}", s),
+ }
+ }
+}
+
+impl From<&str> for RawString {
+ #[inline]
+ fn from(s: &str) -> Self {
+ if s.is_empty() {
+ Self(RawStringInner::Empty)
+ } else {
+ InternalString::from(s).into()
+ }
+ }
+}
+
+impl From<String> for RawString {
+ #[inline]
+ fn from(s: String) -> Self {
+ if s.is_empty() {
+ Self(RawStringInner::Empty)
+ } else {
+ InternalString::from(s).into()
+ }
+ }
+}
+
+impl From<&String> for RawString {
+ #[inline]
+ fn from(s: &String) -> Self {
+ if s.is_empty() {
+ Self(RawStringInner::Empty)
+ } else {
+ InternalString::from(s).into()
+ }
+ }
+}
+
+impl From<InternalString> for RawString {
+ #[inline]
+ fn from(inner: InternalString) -> Self {
+ Self(RawStringInner::Explicit(inner))
+ }
+}
+
+impl From<&InternalString> for RawString {
+ #[inline]
+ fn from(s: &InternalString) -> Self {
+ if s.is_empty() {
+ Self(RawStringInner::Empty)
+ } else {
+ InternalString::from(s).into()
+ }
+ }
+}
+
+impl From<Box<str>> for RawString {
+ #[inline]
+ fn from(s: Box<str>) -> Self {
+ if s.is_empty() {
+ Self(RawStringInner::Empty)
+ } else {
+ InternalString::from(s).into()
+ }
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/repr.rs b/vendor/toml_edit-0.19.11/src/repr.rs
new file mode 100644
index 000000000..d4ab6c231
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/repr.rs
@@ -0,0 +1,253 @@
+use std::borrow::Cow;
+
+use crate::RawString;
+
+/// A value together with its `to_string` representation,
+/// including surrounding it whitespaces and comments.
+#[derive(Eq, PartialEq, Clone, Hash)]
+pub struct Formatted<T> {
+ value: T,
+ repr: Option<Repr>,
+ decor: Decor,
+}
+
+impl<T> Formatted<T>
+where
+ T: ValueRepr,
+{
+ /// Default-formatted value
+ pub fn new(value: T) -> Self {
+ Self {
+ value,
+ repr: None,
+ decor: Default::default(),
+ }
+ }
+
+ pub(crate) fn set_repr_unchecked(&mut self, repr: Repr) {
+ self.repr = Some(repr);
+ }
+
+ /// The wrapped value
+ pub fn value(&self) -> &T {
+ &self.value
+ }
+
+ /// The wrapped value
+ pub fn into_value(self) -> T {
+ self.value
+ }
+
+ /// Returns the raw representation, if available.
+ pub fn as_repr(&self) -> Option<&Repr> {
+ self.repr.as_ref()
+ }
+
+ /// Returns the default raw representation.
+ pub fn default_repr(&self) -> Repr {
+ self.value.to_repr()
+ }
+
+ /// Returns a raw representation.
+ pub fn display_repr(&self) -> Cow<str> {
+ self.as_repr()
+ .and_then(|r| r.as_raw().as_str())
+ .map(Cow::Borrowed)
+ .unwrap_or_else(|| {
+ Cow::Owned(self.default_repr().as_raw().as_str().unwrap().to_owned())
+ })
+ }
+
+ /// Returns the location within the original document
+ pub(crate) fn span(&self) -> Option<std::ops::Range<usize>> {
+ self.repr.as_ref().and_then(|r| r.span())
+ }
+
+ pub(crate) fn despan(&mut self, input: &str) {
+ self.decor.despan(input);
+ if let Some(repr) = &mut self.repr {
+ repr.despan(input);
+ }
+ }
+
+ /// Returns the surrounding whitespace
+ pub fn decor_mut(&mut self) -> &mut Decor {
+ &mut self.decor
+ }
+
+ /// Returns the surrounding whitespace
+ pub fn decor(&self) -> &Decor {
+ &self.decor
+ }
+
+ /// Auto formats the value.
+ pub fn fmt(&mut self) {
+ self.repr = Some(self.value.to_repr());
+ }
+}
+
+impl<T> std::fmt::Debug for Formatted<T>
+where
+ T: std::fmt::Debug,
+{
+ #[inline]
+ fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
+ let mut d = formatter.debug_struct("Formatted");
+ d.field("value", &self.value);
+ match &self.repr {
+ Some(r) => d.field("repr", r),
+ None => d.field("repr", &"default"),
+ };
+ d.field("decor", &self.decor);
+ d.finish()
+ }
+}
+
+impl<T> std::fmt::Display for Formatted<T>
+where
+ T: ValueRepr,
+{
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ crate::encode::Encode::encode(self, f, None, ("", ""))
+ }
+}
+
+pub trait ValueRepr: crate::private::Sealed {
+ /// The TOML representation of the value
+ fn to_repr(&self) -> Repr;
+}
+
+/// TOML-encoded value
+#[derive(Eq, PartialEq, Clone, Hash)]
+pub struct Repr {
+ raw_value: RawString,
+}
+
+impl Repr {
+ pub(crate) fn new_unchecked(raw: impl Into<RawString>) -> Self {
+ Repr {
+ raw_value: raw.into(),
+ }
+ }
+
+ /// Access the underlying value
+ pub fn as_raw(&self) -> &RawString {
+ &self.raw_value
+ }
+
+ /// Returns the location within the original document
+ pub(crate) fn span(&self) -> Option<std::ops::Range<usize>> {
+ self.raw_value.span()
+ }
+
+ pub(crate) fn despan(&mut self, input: &str) {
+ self.raw_value.despan(input)
+ }
+
+ pub(crate) fn encode(&self, buf: &mut dyn std::fmt::Write, input: &str) -> std::fmt::Result {
+ self.as_raw().encode(buf, input)
+ }
+}
+
+impl std::fmt::Debug for Repr {
+ #[inline]
+ fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
+ self.raw_value.fmt(formatter)
+ }
+}
+
+/// A prefix and suffix,
+///
+/// Including comments, whitespaces and newlines.
+#[derive(Eq, PartialEq, Clone, Default, Hash)]
+pub struct Decor {
+ prefix: Option<RawString>,
+ suffix: Option<RawString>,
+}
+
+impl Decor {
+ /// Creates a new decor from the given prefix and suffix.
+ pub fn new(prefix: impl Into<RawString>, suffix: impl Into<RawString>) -> Self {
+ Self {
+ prefix: Some(prefix.into()),
+ suffix: Some(suffix.into()),
+ }
+ }
+
+ /// Go back to default decor
+ pub fn clear(&mut self) {
+ self.prefix = None;
+ self.suffix = None;
+ }
+
+ /// Get the prefix.
+ pub fn prefix(&self) -> Option<&RawString> {
+ self.prefix.as_ref()
+ }
+
+ pub(crate) fn prefix_encode(
+ &self,
+ buf: &mut dyn std::fmt::Write,
+ input: Option<&str>,
+ default: &str,
+ ) -> std::fmt::Result {
+ if let Some(prefix) = self.prefix() {
+ prefix.encode_with_default(buf, input, default)
+ } else {
+ write!(buf, "{}", default)
+ }
+ }
+
+ /// Set the prefix.
+ pub fn set_prefix(&mut self, prefix: impl Into<RawString>) {
+ self.prefix = Some(prefix.into());
+ }
+
+ /// Get the suffix.
+ pub fn suffix(&self) -> Option<&RawString> {
+ self.suffix.as_ref()
+ }
+
+ pub(crate) fn suffix_encode(
+ &self,
+ buf: &mut dyn std::fmt::Write,
+ input: Option<&str>,
+ default: &str,
+ ) -> std::fmt::Result {
+ if let Some(suffix) = self.suffix() {
+ suffix.encode_with_default(buf, input, default)
+ } else {
+ write!(buf, "{}", default)
+ }
+ }
+
+ /// Set the suffix.
+ pub fn set_suffix(&mut self, suffix: impl Into<RawString>) {
+ self.suffix = Some(suffix.into());
+ }
+
+ pub(crate) fn despan(&mut self, input: &str) {
+ if let Some(prefix) = &mut self.prefix {
+ prefix.despan(input);
+ }
+ if let Some(suffix) = &mut self.suffix {
+ suffix.despan(input);
+ }
+ }
+}
+
+impl std::fmt::Debug for Decor {
+ #[inline]
+ fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
+ let mut d = formatter.debug_struct("Decor");
+ match &self.prefix {
+ Some(r) => d.field("prefix", r),
+ None => d.field("prefix", &"default"),
+ };
+ match &self.suffix {
+ Some(r) => d.field("suffix", r),
+ None => d.field("suffix", &"default"),
+ };
+ d.finish()
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/ser/array.rs b/vendor/toml_edit-0.19.11/src/ser/array.rs
new file mode 100644
index 000000000..80eba8ba7
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/ser/array.rs
@@ -0,0 +1,84 @@
+use super::Error;
+
+#[doc(hidden)]
+pub struct SerializeValueArray {
+ values: Vec<crate::Item>,
+}
+
+impl SerializeValueArray {
+ pub(crate) fn new() -> Self {
+ Self { values: Vec::new() }
+ }
+
+ pub(crate) fn with_capacity(len: usize) -> Self {
+ Self {
+ values: Vec::with_capacity(len),
+ }
+ }
+}
+
+impl serde::ser::SerializeSeq for SerializeValueArray {
+ type Ok = crate::Value;
+ type Error = Error;
+
+ fn serialize_element<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ let value = value.serialize(super::ValueSerializer {})?;
+ self.values.push(crate::Item::Value(value));
+ Ok(())
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ Ok(crate::Value::Array(crate::Array::with_vec(self.values)))
+ }
+}
+
+impl serde::ser::SerializeTuple for SerializeValueArray {
+ type Ok = crate::Value;
+ type Error = Error;
+
+ fn serialize_element<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ serde::ser::SerializeSeq::serialize_element(self, value)
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ serde::ser::SerializeSeq::end(self)
+ }
+}
+
+impl serde::ser::SerializeTupleVariant for SerializeValueArray {
+ type Ok = crate::Value;
+ type Error = Error;
+
+ fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ serde::ser::SerializeSeq::serialize_element(self, value)
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ serde::ser::SerializeSeq::end(self)
+ }
+}
+
+impl serde::ser::SerializeTupleStruct for SerializeValueArray {
+ type Ok = crate::Value;
+ type Error = Error;
+
+ fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ serde::ser::SerializeSeq::serialize_element(self, value)
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ serde::ser::SerializeSeq::end(self)
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/ser/key.rs b/vendor/toml_edit-0.19.11/src/ser/key.rs
new file mode 100644
index 000000000..d5e381bf7
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/ser/key.rs
@@ -0,0 +1,173 @@
+use crate::InternalString;
+
+use super::Error;
+
+pub(crate) struct KeySerializer;
+
+impl serde::ser::Serializer for KeySerializer {
+ type Ok = InternalString;
+ type Error = Error;
+ type SerializeSeq = serde::ser::Impossible<InternalString, Error>;
+ type SerializeTuple = serde::ser::Impossible<InternalString, Error>;
+ type SerializeTupleStruct = serde::ser::Impossible<InternalString, Error>;
+ type SerializeTupleVariant = serde::ser::Impossible<InternalString, Error>;
+ type SerializeMap = serde::ser::Impossible<InternalString, Error>;
+ type SerializeStruct = serde::ser::Impossible<InternalString, Error>;
+ type SerializeStructVariant = serde::ser::Impossible<InternalString, Error>;
+
+ fn serialize_bool(self, _v: bool) -> Result<InternalString, Self::Error> {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_i8(self, _v: i8) -> Result<InternalString, Self::Error> {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_i16(self, _v: i16) -> Result<InternalString, Self::Error> {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_i32(self, _v: i32) -> Result<InternalString, Self::Error> {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_i64(self, _v: i64) -> Result<InternalString, Self::Error> {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_u8(self, _v: u8) -> Result<InternalString, Self::Error> {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_u16(self, _v: u16) -> Result<InternalString, Self::Error> {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_u32(self, _v: u32) -> Result<InternalString, Self::Error> {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_u64(self, _v: u64) -> Result<InternalString, Self::Error> {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_f32(self, _v: f32) -> Result<InternalString, Self::Error> {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_f64(self, _v: f64) -> Result<InternalString, Self::Error> {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_char(self, _v: char) -> Result<InternalString, Self::Error> {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_str(self, value: &str) -> Result<InternalString, Self::Error> {
+ Ok(InternalString::from(value))
+ }
+
+ fn serialize_bytes(self, _value: &[u8]) -> Result<InternalString, Self::Error> {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_none(self) -> Result<InternalString, Self::Error> {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_some<T: ?Sized>(self, _value: &T) -> Result<InternalString, Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_unit(self) -> Result<InternalString, Self::Error> {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_unit_struct(self, _name: &'static str) -> Result<InternalString, Self::Error> {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_unit_variant(
+ self,
+ _name: &'static str,
+ _variant_index: u32,
+ variant: &'static str,
+ ) -> Result<InternalString, Self::Error> {
+ Ok(variant.into())
+ }
+
+ fn serialize_newtype_struct<T: ?Sized>(
+ self,
+ _name: &'static str,
+ value: &T,
+ ) -> Result<InternalString, Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ value.serialize(self)
+ }
+
+ fn serialize_newtype_variant<T: ?Sized>(
+ self,
+ _name: &'static str,
+ _variant_index: u32,
+ _variant: &'static str,
+ _value: &T,
+ ) -> Result<InternalString, Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_seq(self, _len: Option<usize>) -> Result<Self::SerializeSeq, Self::Error> {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_tuple(self, _len: usize) -> Result<Self::SerializeTuple, Self::Error> {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_tuple_struct(
+ self,
+ _name: &'static str,
+ _len: usize,
+ ) -> Result<Self::SerializeTupleStruct, Self::Error> {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_tuple_variant(
+ self,
+ _name: &'static str,
+ _variant_index: u32,
+ _variant: &'static str,
+ _len: usize,
+ ) -> Result<Self::SerializeTupleVariant, Self::Error> {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_map(self, _len: Option<usize>) -> Result<Self::SerializeMap, Self::Error> {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_struct(
+ self,
+ _name: &'static str,
+ _len: usize,
+ ) -> Result<Self::SerializeStruct, Self::Error> {
+ Err(Error::KeyNotString)
+ }
+
+ fn serialize_struct_variant(
+ self,
+ _name: &'static str,
+ _variant_index: u32,
+ _variant: &'static str,
+ _len: usize,
+ ) -> Result<Self::SerializeStructVariant, Self::Error> {
+ Err(Error::KeyNotString)
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/ser/map.rs b/vendor/toml_edit-0.19.11/src/ser/map.rs
new file mode 100644
index 000000000..d743e3d5d
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/ser/map.rs
@@ -0,0 +1,405 @@
+use super::{Error, KeySerializer};
+
+#[doc(hidden)]
+pub enum SerializeMap {
+ Datetime(SerializeDatetime),
+ Table(SerializeInlineTable),
+}
+
+impl SerializeMap {
+ pub(crate) fn table() -> Self {
+ Self::Table(SerializeInlineTable::new())
+ }
+
+ pub(crate) fn table_with_capacity(len: usize) -> Self {
+ Self::Table(SerializeInlineTable::with_capacity(len))
+ }
+
+ pub(crate) fn datetime() -> Self {
+ Self::Datetime(SerializeDatetime::new())
+ }
+}
+
+impl serde::ser::SerializeMap for SerializeMap {
+ type Ok = crate::Value;
+ type Error = Error;
+
+ fn serialize_key<T: ?Sized>(&mut self, input: &T) -> Result<(), Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ match self {
+ Self::Datetime(s) => s.serialize_key(input),
+ Self::Table(s) => s.serialize_key(input),
+ }
+ }
+
+ fn serialize_value<T: ?Sized>(&mut self, value: &T) -> Result<(), Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ match self {
+ Self::Datetime(s) => s.serialize_value(value),
+ Self::Table(s) => s.serialize_value(value),
+ }
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ match self {
+ Self::Datetime(s) => s.end().map(|items| items.into()),
+ Self::Table(s) => s.end().map(|items| items.into()),
+ }
+ }
+}
+
+impl serde::ser::SerializeStruct for SerializeMap {
+ type Ok = crate::Value;
+ type Error = Error;
+
+ fn serialize_field<T: ?Sized>(
+ &mut self,
+ key: &'static str,
+ value: &T,
+ ) -> Result<(), Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ match self {
+ Self::Datetime(s) => s.serialize_field(key, value),
+ Self::Table(s) => s.serialize_field(key, value),
+ }
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ match self {
+ Self::Datetime(s) => s.end().map(|items| items.into()),
+ Self::Table(s) => s.end().map(|items| items.into()),
+ }
+ }
+}
+
+#[doc(hidden)]
+pub struct SerializeDatetime {
+ value: Option<crate::Datetime>,
+}
+
+impl SerializeDatetime {
+ pub(crate) fn new() -> Self {
+ Self { value: None }
+ }
+}
+
+impl serde::ser::SerializeMap for SerializeDatetime {
+ type Ok = crate::Datetime;
+ type Error = Error;
+
+ fn serialize_key<T: ?Sized>(&mut self, _input: &T) -> Result<(), Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ unreachable!("datetimes should only be serialized as structs, not maps")
+ }
+
+ fn serialize_value<T: ?Sized>(&mut self, _value: &T) -> Result<(), Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ unreachable!("datetimes should only be serialized as structs, not maps")
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ unreachable!("datetimes should only be serialized as structs, not maps")
+ }
+}
+
+impl serde::ser::SerializeStruct for SerializeDatetime {
+ type Ok = crate::Datetime;
+ type Error = Error;
+
+ fn serialize_field<T: ?Sized>(
+ &mut self,
+ key: &'static str,
+ value: &T,
+ ) -> Result<(), Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ if key == toml_datetime::__unstable::FIELD {
+ self.value = Some(value.serialize(DatetimeFieldSerializer::default())?);
+ }
+
+ Ok(())
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ self.value.ok_or(Error::UnsupportedNone)
+ }
+}
+
+#[doc(hidden)]
+pub struct SerializeInlineTable {
+ items: crate::table::KeyValuePairs,
+ key: Option<crate::InternalString>,
+}
+
+impl SerializeInlineTable {
+ pub(crate) fn new() -> Self {
+ Self {
+ items: Default::default(),
+ key: Default::default(),
+ }
+ }
+
+ pub(crate) fn with_capacity(len: usize) -> Self {
+ let mut s = Self::new();
+ s.items.reserve(len);
+ s
+ }
+}
+
+impl serde::ser::SerializeMap for SerializeInlineTable {
+ type Ok = crate::InlineTable;
+ type Error = Error;
+
+ fn serialize_key<T: ?Sized>(&mut self, input: &T) -> Result<(), Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ self.key = None;
+ self.key = Some(input.serialize(KeySerializer)?);
+ Ok(())
+ }
+
+ fn serialize_value<T: ?Sized>(&mut self, value: &T) -> Result<(), Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ let res = value.serialize(super::ValueSerializer {});
+ match res {
+ Ok(item) => {
+ let key = self.key.take().unwrap();
+ let kv = crate::table::TableKeyValue::new(
+ crate::Key::new(&key),
+ crate::Item::Value(item),
+ );
+ self.items.insert(key, kv);
+ }
+ Err(e) => {
+ if e != Error::UnsupportedNone {
+ return Err(e);
+ }
+ }
+ }
+ Ok(())
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ Ok(crate::InlineTable::with_pairs(self.items))
+ }
+}
+
+impl serde::ser::SerializeStruct for SerializeInlineTable {
+ type Ok = crate::InlineTable;
+ type Error = Error;
+
+ fn serialize_field<T: ?Sized>(
+ &mut self,
+ key: &'static str,
+ value: &T,
+ ) -> Result<(), Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ let res = value.serialize(super::ValueSerializer {});
+ match res {
+ Ok(item) => {
+ let kv = crate::table::TableKeyValue::new(
+ crate::Key::new(key),
+ crate::Item::Value(item),
+ );
+ self.items.insert(crate::InternalString::from(key), kv);
+ }
+ Err(e) => {
+ if e != Error::UnsupportedNone {
+ return Err(e);
+ }
+ }
+ };
+ Ok(())
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ Ok(crate::InlineTable::with_pairs(self.items))
+ }
+}
+
+#[derive(Default)]
+struct DatetimeFieldSerializer {}
+
+impl serde::ser::Serializer for DatetimeFieldSerializer {
+ type Ok = toml_datetime::Datetime;
+ type Error = Error;
+ type SerializeSeq = serde::ser::Impossible<Self::Ok, Self::Error>;
+ type SerializeTuple = serde::ser::Impossible<Self::Ok, Self::Error>;
+ type SerializeTupleStruct = serde::ser::Impossible<Self::Ok, Self::Error>;
+ type SerializeTupleVariant = serde::ser::Impossible<Self::Ok, Self::Error>;
+ type SerializeMap = serde::ser::Impossible<Self::Ok, Self::Error>;
+ type SerializeStruct = serde::ser::Impossible<Self::Ok, Self::Error>;
+ type SerializeStructVariant = serde::ser::Impossible<Self::Ok, Self::Error>;
+
+ fn serialize_bool(self, _value: bool) -> Result<Self::Ok, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_i8(self, _value: i8) -> Result<Self::Ok, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_i16(self, _value: i16) -> Result<Self::Ok, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_i32(self, _value: i32) -> Result<Self::Ok, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_i64(self, _value: i64) -> Result<Self::Ok, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_u8(self, _value: u8) -> Result<Self::Ok, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_u16(self, _value: u16) -> Result<Self::Ok, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_u32(self, _value: u32) -> Result<Self::Ok, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_u64(self, _value: u64) -> Result<Self::Ok, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_f32(self, _value: f32) -> Result<Self::Ok, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_f64(self, _value: f64) -> Result<Self::Ok, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_char(self, _value: char) -> Result<Self::Ok, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_str(self, v: &str) -> Result<Self::Ok, Self::Error> {
+ v.parse::<toml_datetime::Datetime>().map_err(Error::custom)
+ }
+
+ fn serialize_bytes(self, _value: &[u8]) -> Result<Self::Ok, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_none(self) -> Result<Self::Ok, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_some<T: ?Sized>(self, _value: &T) -> Result<Self::Ok, Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_unit(self) -> Result<Self::Ok, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_unit_struct(self, _name: &'static str) -> Result<Self::Ok, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_unit_variant(
+ self,
+ _name: &'static str,
+ _variant_index: u32,
+ _variant: &'static str,
+ ) -> Result<Self::Ok, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_newtype_struct<T: ?Sized>(
+ self,
+ _name: &'static str,
+ _value: &T,
+ ) -> Result<Self::Ok, Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_newtype_variant<T: ?Sized>(
+ self,
+ _name: &'static str,
+ _variant_index: u32,
+ _variant: &'static str,
+ _value: &T,
+ ) -> Result<Self::Ok, Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_seq(self, _len: Option<usize>) -> Result<Self::SerializeSeq, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_tuple(self, _len: usize) -> Result<Self::SerializeTuple, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_tuple_struct(
+ self,
+ _name: &'static str,
+ _len: usize,
+ ) -> Result<Self::SerializeTupleStruct, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_tuple_variant(
+ self,
+ _name: &'static str,
+ _variant_index: u32,
+ _variant: &'static str,
+ _len: usize,
+ ) -> Result<Self::SerializeTupleVariant, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_map(self, _len: Option<usize>) -> Result<Self::SerializeMap, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_struct(
+ self,
+ _name: &'static str,
+ _len: usize,
+ ) -> Result<Self::SerializeStruct, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+
+ fn serialize_struct_variant(
+ self,
+ _name: &'static str,
+ _variant_index: u32,
+ _variant: &'static str,
+ _len: usize,
+ ) -> Result<Self::SerializeStructVariant, Self::Error> {
+ Err(Error::DateInvalid)
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/ser/mod.rs b/vendor/toml_edit-0.19.11/src/ser/mod.rs
new file mode 100644
index 000000000..2c310206b
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/ser/mod.rs
@@ -0,0 +1,165 @@
+//! Serializing Rust structures into TOML.
+//!
+//! This module contains all the Serde support for serializing Rust structures into TOML.
+
+mod array;
+mod key;
+mod map;
+mod pretty;
+mod value;
+
+pub(crate) use array::*;
+pub(crate) use key::*;
+pub(crate) use map::*;
+
+use crate::visit_mut::VisitMut;
+
+/// Errors that can occur when deserializing a type.
+#[derive(Debug, Clone, PartialEq, Eq)]
+#[non_exhaustive]
+pub enum Error {
+ /// Type could not be serialized to TOML
+ UnsupportedType(Option<&'static str>),
+ /// Value was out of range for the given type
+ OutOfRange(Option<&'static str>),
+ /// `None` could not be serialized to TOML
+ UnsupportedNone,
+ /// Key was not convertable to `String` for serializing to TOML
+ KeyNotString,
+ /// A serialized date was invalid
+ DateInvalid,
+ /// Other serialization error
+ Custom(String),
+}
+
+impl Error {
+ pub(crate) fn custom<T>(msg: T) -> Self
+ where
+ T: std::fmt::Display,
+ {
+ Error::Custom(msg.to_string())
+ }
+}
+
+impl serde::ser::Error for Error {
+ fn custom<T>(msg: T) -> Self
+ where
+ T: std::fmt::Display,
+ {
+ Self::custom(msg)
+ }
+}
+
+impl std::fmt::Display for Error {
+ fn fmt(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result {
+ match self {
+ Self::UnsupportedType(Some(t)) => write!(formatter, "unsupported {t} type"),
+ Self::UnsupportedType(None) => write!(formatter, "unsupported rust type"),
+ Self::OutOfRange(Some(t)) => write!(formatter, "out-of-range value for {t} type"),
+ Self::OutOfRange(None) => write!(formatter, "out-of-range value"),
+ Self::UnsupportedNone => "unsupported None value".fmt(formatter),
+ Self::KeyNotString => "map key was not a string".fmt(formatter),
+ Self::DateInvalid => "a serialized date was invalid".fmt(formatter),
+ Self::Custom(s) => s.fmt(formatter),
+ }
+ }
+}
+
+impl From<crate::TomlError> for Error {
+ fn from(e: crate::TomlError) -> Error {
+ Self::custom(e)
+ }
+}
+
+impl From<Error> for crate::TomlError {
+ fn from(e: Error) -> crate::TomlError {
+ Self::custom(e.to_string(), None)
+ }
+}
+
+impl std::error::Error for Error {}
+
+/// Serialize the given data structure as a TOML byte vector.
+///
+/// Serialization can fail if `T`'s implementation of `Serialize` decides to
+/// fail, if `T` contains a map with non-string keys, or if `T` attempts to
+/// serialize an unsupported datatype such as an enum, tuple, or tuple struct.
+pub fn to_vec<T: ?Sized>(value: &T) -> Result<Vec<u8>, Error>
+where
+ T: serde::ser::Serialize,
+{
+ to_string(value).map(|e| e.into_bytes())
+}
+
+/// Serialize the given data structure as a String of TOML.
+///
+/// Serialization can fail if `T`'s implementation of `Serialize` decides to
+/// fail, if `T` contains a map with non-string keys, or if `T` attempts to
+/// serialize an unsupported datatype such as an enum, tuple, or tuple struct.
+///
+/// # Examples
+///
+/// ```
+/// use serde::Serialize;
+///
+/// #[derive(Serialize)]
+/// struct Config {
+/// database: Database,
+/// }
+///
+/// #[derive(Serialize)]
+/// struct Database {
+/// ip: String,
+/// port: Vec<u16>,
+/// connection_max: u32,
+/// enabled: bool,
+/// }
+///
+/// let config = Config {
+/// database: Database {
+/// ip: "192.168.1.1".to_string(),
+/// port: vec![8001, 8002, 8003],
+/// connection_max: 5000,
+/// enabled: false,
+/// },
+/// };
+///
+/// let toml = toml_edit::ser::to_string(&config).unwrap();
+/// println!("{}", toml)
+/// ```
+pub fn to_string<T: ?Sized>(value: &T) -> Result<String, Error>
+where
+ T: serde::ser::Serialize,
+{
+ to_document(value).map(|e| e.to_string())
+}
+
+/// Serialize the given data structure as a "pretty" String of TOML.
+///
+/// This is identical to `to_string` except the output string has a more
+/// "pretty" output. See `ValueSerializer::pretty` for more details.
+pub fn to_string_pretty<T: ?Sized>(value: &T) -> Result<String, Error>
+where
+ T: serde::ser::Serialize,
+{
+ let mut document = to_document(value)?;
+ pretty::Pretty.visit_document_mut(&mut document);
+ Ok(document.to_string())
+}
+
+/// Serialize the given data structure into a TOML document.
+///
+/// This would allow custom formatting to be applied, mixing with format preserving edits, etc.
+pub fn to_document<T: ?Sized>(value: &T) -> Result<crate::Document, Error>
+where
+ T: serde::ser::Serialize,
+{
+ let value = value.serialize(ValueSerializer::new())?;
+ let item = crate::Item::Value(value);
+ let root = item
+ .into_table()
+ .map_err(|_| Error::UnsupportedType(None))?;
+ Ok(root.into())
+}
+
+pub use value::ValueSerializer;
diff --git a/vendor/toml_edit-0.19.11/src/ser/pretty.rs b/vendor/toml_edit-0.19.11/src/ser/pretty.rs
new file mode 100644
index 000000000..2c22f6804
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/ser/pretty.rs
@@ -0,0 +1,45 @@
+pub(crate) struct Pretty;
+
+impl crate::visit_mut::VisitMut for Pretty {
+ fn visit_document_mut(&mut self, node: &mut crate::Document) {
+ crate::visit_mut::visit_document_mut(self, node);
+ }
+
+ fn visit_item_mut(&mut self, node: &mut crate::Item) {
+ node.make_item();
+
+ crate::visit_mut::visit_item_mut(self, node);
+ }
+
+ fn visit_table_mut(&mut self, node: &mut crate::Table) {
+ node.decor_mut().clear();
+
+ // Empty tables could be semantically meaningful, so make sure they are not implicit
+ if !node.is_empty() {
+ node.set_implicit(true);
+ }
+
+ crate::visit_mut::visit_table_mut(self, node);
+ }
+
+ fn visit_value_mut(&mut self, node: &mut crate::Value) {
+ node.decor_mut().clear();
+
+ crate::visit_mut::visit_value_mut(self, node);
+ }
+
+ fn visit_array_mut(&mut self, node: &mut crate::Array) {
+ crate::visit_mut::visit_array_mut(self, node);
+
+ if (0..=1).contains(&node.len()) {
+ node.set_trailing("");
+ node.set_trailing_comma(false);
+ } else {
+ for item in node.iter_mut() {
+ item.decor_mut().set_prefix("\n ");
+ }
+ node.set_trailing("\n");
+ node.set_trailing_comma(true);
+ }
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/ser/value.rs b/vendor/toml_edit-0.19.11/src/ser/value.rs
new file mode 100644
index 000000000..d29390a4c
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/ser/value.rs
@@ -0,0 +1,243 @@
+use super::Error;
+
+/// Serialization for TOML [values][crate::Value].
+///
+/// This structure implements serialization support for TOML to serialize an
+/// arbitrary type to TOML. Note that the TOML format does not support all
+/// datatypes in Rust, such as enums, tuples, and tuple structs. These types
+/// will generate an error when serialized.
+///
+/// Currently a serializer always writes its output to an in-memory `String`,
+/// which is passed in when creating the serializer itself.
+///
+/// # Examples
+///
+/// ```
+/// use serde::Serialize;
+///
+/// #[derive(Serialize)]
+/// struct Config {
+/// database: Database,
+/// }
+///
+/// #[derive(Serialize)]
+/// struct Database {
+/// ip: String,
+/// port: Vec<u16>,
+/// connection_max: u32,
+/// enabled: bool,
+/// }
+///
+/// let config = Config {
+/// database: Database {
+/// ip: "192.168.1.1".to_string(),
+/// port: vec![8001, 8002, 8003],
+/// connection_max: 5000,
+/// enabled: false,
+/// },
+/// };
+///
+/// let value = serde::Serialize::serialize(
+/// &config,
+/// toml_edit::ser::ValueSerializer::new()
+/// ).unwrap();
+/// println!("{}", value)
+/// ```
+#[derive(Default)]
+#[non_exhaustive]
+pub struct ValueSerializer {}
+
+impl ValueSerializer {
+ /// Creates a new serializer generate a TOML document.
+ pub fn new() -> Self {
+ Self {}
+ }
+}
+
+impl serde::ser::Serializer for ValueSerializer {
+ type Ok = crate::Value;
+ type Error = Error;
+ type SerializeSeq = super::SerializeValueArray;
+ type SerializeTuple = super::SerializeValueArray;
+ type SerializeTupleStruct = super::SerializeValueArray;
+ type SerializeTupleVariant = super::SerializeValueArray;
+ type SerializeMap = super::SerializeMap;
+ type SerializeStruct = super::SerializeMap;
+ type SerializeStructVariant = serde::ser::Impossible<Self::Ok, Self::Error>;
+
+ fn serialize_bool(self, v: bool) -> Result<Self::Ok, Self::Error> {
+ Ok(v.into())
+ }
+
+ fn serialize_i8(self, v: i8) -> Result<Self::Ok, Self::Error> {
+ self.serialize_i64(v as i64)
+ }
+
+ fn serialize_i16(self, v: i16) -> Result<Self::Ok, Self::Error> {
+ self.serialize_i64(v as i64)
+ }
+
+ fn serialize_i32(self, v: i32) -> Result<Self::Ok, Self::Error> {
+ self.serialize_i64(v as i64)
+ }
+
+ fn serialize_i64(self, v: i64) -> Result<Self::Ok, Self::Error> {
+ Ok(v.into())
+ }
+
+ fn serialize_u8(self, v: u8) -> Result<Self::Ok, Self::Error> {
+ self.serialize_i64(v as i64)
+ }
+
+ fn serialize_u16(self, v: u16) -> Result<Self::Ok, Self::Error> {
+ self.serialize_i64(v as i64)
+ }
+
+ fn serialize_u32(self, v: u32) -> Result<Self::Ok, Self::Error> {
+ self.serialize_i64(v as i64)
+ }
+
+ fn serialize_u64(self, v: u64) -> Result<Self::Ok, Self::Error> {
+ let v: i64 = v
+ .try_into()
+ .map_err(|_err| Error::OutOfRange(Some("u64")))?;
+ self.serialize_i64(v)
+ }
+
+ fn serialize_f32(self, v: f32) -> Result<Self::Ok, Self::Error> {
+ self.serialize_f64(v as f64)
+ }
+
+ fn serialize_f64(self, v: f64) -> Result<Self::Ok, Self::Error> {
+ Ok(v.into())
+ }
+
+ fn serialize_char(self, v: char) -> Result<Self::Ok, Self::Error> {
+ let mut buf = [0; 4];
+ self.serialize_str(v.encode_utf8(&mut buf))
+ }
+
+ fn serialize_str(self, v: &str) -> Result<Self::Ok, Self::Error> {
+ Ok(v.into())
+ }
+
+ fn serialize_bytes(self, value: &[u8]) -> Result<Self::Ok, Self::Error> {
+ use serde::ser::Serialize;
+ value.serialize(self)
+ }
+
+ fn serialize_none(self) -> Result<Self::Ok, Self::Error> {
+ Err(Error::UnsupportedNone)
+ }
+
+ fn serialize_some<T: ?Sized>(self, value: &T) -> Result<Self::Ok, Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ value.serialize(self)
+ }
+
+ fn serialize_unit(self) -> Result<Self::Ok, Self::Error> {
+ Err(Error::UnsupportedType(Some("unit")))
+ }
+
+ fn serialize_unit_struct(self, name: &'static str) -> Result<Self::Ok, Self::Error> {
+ Err(Error::UnsupportedType(Some(name)))
+ }
+
+ fn serialize_unit_variant(
+ self,
+ _name: &'static str,
+ _variant_index: u32,
+ variant: &'static str,
+ ) -> Result<Self::Ok, Self::Error> {
+ self.serialize_str(variant)
+ }
+
+ fn serialize_newtype_struct<T: ?Sized>(
+ self,
+ _name: &'static str,
+ value: &T,
+ ) -> Result<Self::Ok, Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ value.serialize(self)
+ }
+
+ fn serialize_newtype_variant<T: ?Sized>(
+ self,
+ _name: &'static str,
+ _variant_index: u32,
+ variant: &'static str,
+ value: &T,
+ ) -> Result<Self::Ok, Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ let value = value.serialize(self)?;
+ let mut table = crate::InlineTable::new();
+ table.insert(variant, value);
+ Ok(table.into())
+ }
+
+ fn serialize_seq(self, len: Option<usize>) -> Result<Self::SerializeSeq, Self::Error> {
+ let serializer = match len {
+ Some(len) => super::SerializeValueArray::with_capacity(len),
+ None => super::SerializeValueArray::new(),
+ };
+ Ok(serializer)
+ }
+
+ fn serialize_tuple(self, len: usize) -> Result<Self::SerializeTuple, Self::Error> {
+ self.serialize_seq(Some(len))
+ }
+
+ fn serialize_tuple_struct(
+ self,
+ _name: &'static str,
+ len: usize,
+ ) -> Result<Self::SerializeTupleStruct, Self::Error> {
+ self.serialize_seq(Some(len))
+ }
+
+ fn serialize_tuple_variant(
+ self,
+ _name: &'static str,
+ _variant_index: u32,
+ _variant: &'static str,
+ len: usize,
+ ) -> Result<Self::SerializeTupleVariant, Self::Error> {
+ self.serialize_seq(Some(len))
+ }
+
+ fn serialize_map(self, len: Option<usize>) -> Result<Self::SerializeMap, Self::Error> {
+ let serializer = match len {
+ Some(len) => super::SerializeMap::table_with_capacity(len),
+ None => super::SerializeMap::table(),
+ };
+ Ok(serializer)
+ }
+
+ fn serialize_struct(
+ self,
+ name: &'static str,
+ len: usize,
+ ) -> Result<Self::SerializeStruct, Self::Error> {
+ if name == toml_datetime::__unstable::NAME {
+ Ok(super::SerializeMap::datetime())
+ } else {
+ self.serialize_map(Some(len))
+ }
+ }
+
+ fn serialize_struct_variant(
+ self,
+ name: &'static str,
+ _variant_index: u32,
+ _variant: &'static str,
+ _len: usize,
+ ) -> Result<Self::SerializeStructVariant, Self::Error> {
+ Err(Error::UnsupportedType(Some(name)))
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/table.rs b/vendor/toml_edit-0.19.11/src/table.rs
new file mode 100644
index 000000000..2f61abf73
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/table.rs
@@ -0,0 +1,743 @@
+use std::iter::FromIterator;
+
+use indexmap::map::IndexMap;
+
+use crate::key::Key;
+use crate::repr::Decor;
+use crate::value::DEFAULT_VALUE_DECOR;
+use crate::{InlineTable, InternalString, Item, KeyMut, Value};
+
+/// Type representing a TOML non-inline table
+#[derive(Clone, Debug, Default)]
+pub struct Table {
+ // Comments/spaces before and after the header
+ pub(crate) decor: Decor,
+ // Whether to hide an empty table
+ pub(crate) implicit: bool,
+ // Whether this is a proxy for dotted keys
+ pub(crate) dotted: bool,
+ // Used for putting tables back in their original order when serialising.
+ //
+ // `None` for user created tables (can be overridden with `set_position`)
+ doc_position: Option<usize>,
+ pub(crate) span: Option<std::ops::Range<usize>>,
+ pub(crate) items: KeyValuePairs,
+}
+
+/// Constructors
+///
+/// See also `FromIterator`
+impl Table {
+ /// Creates an empty table.
+ pub fn new() -> Self {
+ Default::default()
+ }
+
+ pub(crate) fn with_pos(doc_position: Option<usize>) -> Self {
+ Self {
+ doc_position,
+ ..Default::default()
+ }
+ }
+
+ pub(crate) fn with_pairs(items: KeyValuePairs) -> Self {
+ Self {
+ items,
+ ..Default::default()
+ }
+ }
+
+ /// Convert to an inline table
+ pub fn into_inline_table(mut self) -> InlineTable {
+ for (_, kv) in self.items.iter_mut() {
+ kv.value.make_value();
+ }
+ let mut t = InlineTable::with_pairs(self.items);
+ t.fmt();
+ t
+ }
+}
+
+/// Formatting
+impl Table {
+ /// Get key/values for values that are visually children of this table
+ ///
+ /// For example, this will return dotted keys
+ pub fn get_values(&self) -> Vec<(Vec<&Key>, &Value)> {
+ let mut values = Vec::new();
+ let root = Vec::new();
+ self.append_values(&root, &mut values);
+ values
+ }
+
+ fn append_values<'s, 'c>(
+ &'s self,
+ parent: &[&'s Key],
+ values: &'c mut Vec<(Vec<&'s Key>, &'s Value)>,
+ ) {
+ for value in self.items.values() {
+ let mut path = parent.to_vec();
+ path.push(&value.key);
+ match &value.value {
+ Item::Table(table) if table.is_dotted() => {
+ table.append_values(&path, values);
+ }
+ Item::Value(value) => {
+ if let Some(table) = value.as_inline_table() {
+ if table.is_dotted() {
+ table.append_values(&path, values);
+ } else {
+ values.push((path, value));
+ }
+ } else {
+ values.push((path, value));
+ }
+ }
+ _ => {}
+ }
+ }
+ }
+
+ /// Auto formats the table.
+ pub fn fmt(&mut self) {
+ decorate_table(self);
+ }
+
+ /// Sorts Key/Value Pairs of the table.
+ ///
+ /// Doesn't affect subtables or subarrays.
+ pub fn sort_values(&mut self) {
+ // Assuming standard tables have their doc_position set and this won't negatively impact them
+ self.items.sort_keys();
+ for kv in self.items.values_mut() {
+ match &mut kv.value {
+ Item::Table(table) if table.is_dotted() => {
+ table.sort_values();
+ }
+ _ => {}
+ }
+ }
+ }
+
+ /// Sort Key/Value Pairs of the table using the using the comparison function `compare`.
+ ///
+ /// The comparison function receives two key and value pairs to compare (you can sort by keys or
+ /// values or their combination as needed).
+ pub fn sort_values_by<F>(&mut self, mut compare: F)
+ where
+ F: FnMut(&Key, &Item, &Key, &Item) -> std::cmp::Ordering,
+ {
+ self.sort_values_by_internal(&mut compare);
+ }
+
+ fn sort_values_by_internal<F>(&mut self, compare: &mut F)
+ where
+ F: FnMut(&Key, &Item, &Key, &Item) -> std::cmp::Ordering,
+ {
+ let modified_cmp = |_: &InternalString,
+ val1: &TableKeyValue,
+ _: &InternalString,
+ val2: &TableKeyValue|
+ -> std::cmp::Ordering {
+ compare(&val1.key, &val1.value, &val2.key, &val2.value)
+ };
+
+ self.items.sort_by(modified_cmp);
+
+ for kv in self.items.values_mut() {
+ match &mut kv.value {
+ Item::Table(table) if table.is_dotted() => {
+ table.sort_values_by_internal(compare);
+ }
+ _ => {}
+ }
+ }
+ }
+
+ /// If a table has no key/value pairs and implicit, it will not be displayed.
+ ///
+ /// # Examples
+ ///
+ /// ```notrust
+ /// [target."x86_64/windows.json".dependencies]
+ /// ```
+ ///
+ /// In the document above, tables `target` and `target."x86_64/windows.json"` are implicit.
+ ///
+ /// ```
+ /// use toml_edit::Document;
+ /// let mut doc = "[a]\n[a.b]\n".parse::<Document>().expect("invalid toml");
+ ///
+ /// doc["a"].as_table_mut().unwrap().set_implicit(true);
+ /// assert_eq!(doc.to_string(), "[a.b]\n");
+ /// ```
+ pub fn set_implicit(&mut self, implicit: bool) {
+ self.implicit = implicit;
+ }
+
+ /// If a table has no key/value pairs and implicit, it will not be displayed.
+ pub fn is_implicit(&self) -> bool {
+ self.implicit
+ }
+
+ /// Change this table's dotted status
+ pub fn set_dotted(&mut self, yes: bool) {
+ self.dotted = yes;
+ }
+
+ /// Check if this is a wrapper for dotted keys, rather than a standard table
+ pub fn is_dotted(&self) -> bool {
+ self.dotted
+ }
+
+ /// Sets the position of the `Table` within the `Document`.
+ pub fn set_position(&mut self, doc_position: usize) {
+ self.doc_position = Some(doc_position);
+ }
+
+ /// The position of the `Table` within the `Document`.
+ ///
+ /// Returns `None` if the `Table` was created manually (i.e. not via parsing)
+ /// in which case its position is set automatically. This can be overridden with
+ /// [`Table::set_position`].
+ pub fn position(&self) -> Option<usize> {
+ self.doc_position
+ }
+
+ /// Returns the surrounding whitespace
+ pub fn decor_mut(&mut self) -> &mut Decor {
+ &mut self.decor
+ }
+
+ /// Returns the decor associated with a given key of the table.
+ pub fn decor(&self) -> &Decor {
+ &self.decor
+ }
+
+ /// Returns the decor associated with a given key of the table.
+ pub fn key_decor_mut(&mut self, key: &str) -> Option<&mut Decor> {
+ self.items.get_mut(key).map(|kv| &mut kv.key.decor)
+ }
+
+ /// Returns the decor associated with a given key of the table.
+ pub fn key_decor(&self, key: &str) -> Option<&Decor> {
+ self.items.get(key).map(|kv| &kv.key.decor)
+ }
+
+ /// Returns the location within the original document
+ pub(crate) fn span(&self) -> Option<std::ops::Range<usize>> {
+ self.span.clone()
+ }
+
+ pub(crate) fn despan(&mut self, input: &str) {
+ self.span = None;
+ self.decor.despan(input);
+ for kv in self.items.values_mut() {
+ kv.key.despan(input);
+ kv.value.despan(input);
+ }
+ }
+}
+
+impl Table {
+ /// Returns an iterator over all key/value pairs, including empty.
+ pub fn iter(&self) -> Iter<'_> {
+ Box::new(
+ self.items
+ .iter()
+ .filter(|(_, kv)| !kv.value.is_none())
+ .map(|(key, kv)| (&key[..], &kv.value)),
+ )
+ }
+
+ /// Returns an mutable iterator over all key/value pairs, including empty.
+ pub fn iter_mut(&mut self) -> IterMut<'_> {
+ Box::new(
+ self.items
+ .iter_mut()
+ .filter(|(_, kv)| !kv.value.is_none())
+ .map(|(_, kv)| (kv.key.as_mut(), &mut kv.value)),
+ )
+ }
+
+ /// Returns the number of non-empty items in the table.
+ pub fn len(&self) -> usize {
+ self.items.iter().filter(|i| !(i.1).value.is_none()).count()
+ }
+
+ /// Returns true if the table is empty.
+ pub fn is_empty(&self) -> bool {
+ self.len() == 0
+ }
+
+ /// Clears the table, removing all key-value pairs. Keeps the allocated memory for reuse.
+ pub fn clear(&mut self) {
+ self.items.clear()
+ }
+
+ /// Gets the given key's corresponding entry in the Table for in-place manipulation.
+ pub fn entry<'a>(&'a mut self, key: &str) -> Entry<'a> {
+ // Accept a `&str` rather than an owned type to keep `InternalString`, well, internal
+ match self.items.entry(key.into()) {
+ indexmap::map::Entry::Occupied(entry) => Entry::Occupied(OccupiedEntry { entry }),
+ indexmap::map::Entry::Vacant(entry) => Entry::Vacant(VacantEntry { entry, key: None }),
+ }
+ }
+
+ /// Gets the given key's corresponding entry in the Table for in-place manipulation.
+ pub fn entry_format<'a>(&'a mut self, key: &Key) -> Entry<'a> {
+ // Accept a `&Key` to be consistent with `entry`
+ match self.items.entry(key.get().into()) {
+ indexmap::map::Entry::Occupied(entry) => Entry::Occupied(OccupiedEntry { entry }),
+ indexmap::map::Entry::Vacant(entry) => Entry::Vacant(VacantEntry {
+ entry,
+ key: Some(key.to_owned()),
+ }),
+ }
+ }
+
+ /// Returns an optional reference to an item given the key.
+ pub fn get<'a>(&'a self, key: &str) -> Option<&'a Item> {
+ self.items.get(key).and_then(|kv| {
+ if !kv.value.is_none() {
+ Some(&kv.value)
+ } else {
+ None
+ }
+ })
+ }
+
+ /// Returns an optional mutable reference to an item given the key.
+ pub fn get_mut<'a>(&'a mut self, key: &str) -> Option<&'a mut Item> {
+ self.items.get_mut(key).and_then(|kv| {
+ if !kv.value.is_none() {
+ Some(&mut kv.value)
+ } else {
+ None
+ }
+ })
+ }
+
+ /// Return references to the key-value pair stored for key, if it is present, else None.
+ pub fn get_key_value<'a>(&'a self, key: &str) -> Option<(&'a Key, &'a Item)> {
+ self.items.get(key).and_then(|kv| {
+ if !kv.value.is_none() {
+ Some((&kv.key, &kv.value))
+ } else {
+ None
+ }
+ })
+ }
+
+ /// Return mutable references to the key-value pair stored for key, if it is present, else None.
+ pub fn get_key_value_mut<'a>(&'a mut self, key: &str) -> Option<(KeyMut<'a>, &'a mut Item)> {
+ self.items.get_mut(key).and_then(|kv| {
+ if !kv.value.is_none() {
+ Some((kv.key.as_mut(), &mut kv.value))
+ } else {
+ None
+ }
+ })
+ }
+
+ /// Returns true if the table contains an item with the given key.
+ pub fn contains_key(&self, key: &str) -> bool {
+ if let Some(kv) = self.items.get(key) {
+ !kv.value.is_none()
+ } else {
+ false
+ }
+ }
+
+ /// Returns true if the table contains a table with the given key.
+ pub fn contains_table(&self, key: &str) -> bool {
+ if let Some(kv) = self.items.get(key) {
+ kv.value.is_table()
+ } else {
+ false
+ }
+ }
+
+ /// Returns true if the table contains a value with the given key.
+ pub fn contains_value(&self, key: &str) -> bool {
+ if let Some(kv) = self.items.get(key) {
+ kv.value.is_value()
+ } else {
+ false
+ }
+ }
+
+ /// Returns true if the table contains an array of tables with the given key.
+ pub fn contains_array_of_tables(&self, key: &str) -> bool {
+ if let Some(kv) = self.items.get(key) {
+ kv.value.is_array_of_tables()
+ } else {
+ false
+ }
+ }
+
+ /// Inserts a key-value pair into the map.
+ pub fn insert(&mut self, key: &str, item: Item) -> Option<Item> {
+ let kv = TableKeyValue::new(Key::new(key), item);
+ self.items.insert(key.into(), kv).map(|kv| kv.value)
+ }
+
+ /// Inserts a key-value pair into the map.
+ pub fn insert_formatted(&mut self, key: &Key, item: Item) -> Option<Item> {
+ let kv = TableKeyValue::new(key.to_owned(), item);
+ self.items.insert(key.get().into(), kv).map(|kv| kv.value)
+ }
+
+ /// Removes an item given the key.
+ pub fn remove(&mut self, key: &str) -> Option<Item> {
+ self.items.shift_remove(key).map(|kv| kv.value)
+ }
+
+ /// Removes a key from the map, returning the stored key and value if the key was previously in the map.
+ pub fn remove_entry(&mut self, key: &str) -> Option<(Key, Item)> {
+ self.items.shift_remove(key).map(|kv| (kv.key, kv.value))
+ }
+}
+
+impl std::fmt::Display for Table {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ use crate::encode::Encode;
+ let children = self.get_values();
+ // print table body
+ for (key_path, value) in children {
+ key_path.as_slice().encode(f, None, DEFAULT_KEY_DECOR)?;
+ write!(f, "=")?;
+ value.encode(f, None, DEFAULT_VALUE_DECOR)?;
+ writeln!(f)?;
+ }
+ Ok(())
+ }
+}
+
+impl<K: Into<Key>, V: Into<Value>> Extend<(K, V)> for Table {
+ fn extend<T: IntoIterator<Item = (K, V)>>(&mut self, iter: T) {
+ for (key, value) in iter {
+ let key = key.into();
+ let value = Item::Value(value.into());
+ let value = TableKeyValue::new(key, value);
+ self.items.insert(value.key.get().into(), value);
+ }
+ }
+}
+
+impl<K: Into<Key>, V: Into<Value>> FromIterator<(K, V)> for Table {
+ fn from_iter<I>(iter: I) -> Self
+ where
+ I: IntoIterator<Item = (K, V)>,
+ {
+ let mut table = Table::new();
+ table.extend(iter);
+ table
+ }
+}
+
+impl IntoIterator for Table {
+ type Item = (InternalString, Item);
+ type IntoIter = IntoIter;
+
+ fn into_iter(self) -> Self::IntoIter {
+ Box::new(self.items.into_iter().map(|(k, kv)| (k, kv.value)))
+ }
+}
+
+impl<'s> IntoIterator for &'s Table {
+ type Item = (&'s str, &'s Item);
+ type IntoIter = Iter<'s>;
+
+ fn into_iter(self) -> Self::IntoIter {
+ self.iter()
+ }
+}
+
+pub(crate) type KeyValuePairs = IndexMap<InternalString, TableKeyValue>;
+
+fn decorate_table(table: &mut Table) {
+ for (key_decor, value) in table
+ .items
+ .iter_mut()
+ .filter(|&(_, ref kv)| kv.value.is_value())
+ .map(|(_, kv)| (&mut kv.key.decor, kv.value.as_value_mut().unwrap()))
+ {
+ key_decor.clear();
+ value.decor_mut().clear();
+ }
+}
+
+// `key1 = value1`
+pub(crate) const DEFAULT_KEY_DECOR: (&str, &str) = ("", " ");
+pub(crate) const DEFAULT_TABLE_DECOR: (&str, &str) = ("\n", "");
+pub(crate) const DEFAULT_KEY_PATH_DECOR: (&str, &str) = ("", "");
+
+#[derive(Debug, Clone)]
+pub(crate) struct TableKeyValue {
+ pub(crate) key: Key,
+ pub(crate) value: Item,
+}
+
+impl TableKeyValue {
+ pub(crate) fn new(key: Key, value: Item) -> Self {
+ TableKeyValue { key, value }
+ }
+}
+
+/// An owned iterator type over `Table`'s key/value pairs.
+pub type IntoIter = Box<dyn Iterator<Item = (InternalString, Item)>>;
+/// An iterator type over `Table`'s key/value pairs.
+pub type Iter<'a> = Box<dyn Iterator<Item = (&'a str, &'a Item)> + 'a>;
+/// A mutable iterator type over `Table`'s key/value pairs.
+pub type IterMut<'a> = Box<dyn Iterator<Item = (KeyMut<'a>, &'a mut Item)> + 'a>;
+
+/// This trait represents either a `Table`, or an `InlineTable`.
+pub trait TableLike: crate::private::Sealed {
+ /// Returns an iterator over key/value pairs.
+ fn iter(&self) -> Iter<'_>;
+ /// Returns an mutable iterator over all key/value pairs, including empty.
+ fn iter_mut(&mut self) -> IterMut<'_>;
+ /// Returns the number of nonempty items.
+ fn len(&self) -> usize {
+ self.iter().filter(|&(_, v)| !v.is_none()).count()
+ }
+ /// Returns true if the table is empty.
+ fn is_empty(&self) -> bool {
+ self.len() == 0
+ }
+ /// Clears the table, removing all key-value pairs. Keeps the allocated memory for reuse.
+ fn clear(&mut self);
+ /// Gets the given key's corresponding entry in the Table for in-place manipulation.
+ fn entry<'a>(&'a mut self, key: &str) -> Entry<'a>;
+ /// Gets the given key's corresponding entry in the Table for in-place manipulation.
+ fn entry_format<'a>(&'a mut self, key: &Key) -> Entry<'a>;
+ /// Returns an optional reference to an item given the key.
+ fn get<'s>(&'s self, key: &str) -> Option<&'s Item>;
+ /// Returns an optional mutable reference to an item given the key.
+ fn get_mut<'s>(&'s mut self, key: &str) -> Option<&'s mut Item>;
+ /// Return references to the key-value pair stored for key, if it is present, else None.
+ fn get_key_value<'a>(&'a self, key: &str) -> Option<(&'a Key, &'a Item)>;
+ /// Return mutable references to the key-value pair stored for key, if it is present, else None.
+ fn get_key_value_mut<'a>(&'a mut self, key: &str) -> Option<(KeyMut<'a>, &'a mut Item)>;
+ /// Returns true if the table contains an item with the given key.
+ fn contains_key(&self, key: &str) -> bool;
+ /// Inserts a key-value pair into the map.
+ fn insert(&mut self, key: &str, value: Item) -> Option<Item>;
+ /// Removes an item given the key.
+ fn remove(&mut self, key: &str) -> Option<Item>;
+
+ /// Get key/values for values that are visually children of this table
+ ///
+ /// For example, this will return dotted keys
+ fn get_values(&self) -> Vec<(Vec<&Key>, &Value)>;
+
+ /// Auto formats the table.
+ fn fmt(&mut self);
+ /// Sorts Key/Value Pairs of the table.
+ ///
+ /// Doesn't affect subtables or subarrays.
+ fn sort_values(&mut self);
+ /// Change this table's dotted status
+ fn set_dotted(&mut self, yes: bool);
+ /// Check if this is a wrapper for dotted keys, rather than a standard table
+ fn is_dotted(&self) -> bool;
+
+ /// Returns the decor associated with a given key of the table.
+ fn key_decor_mut(&mut self, key: &str) -> Option<&mut Decor>;
+ /// Returns the decor associated with a given key of the table.
+ fn key_decor(&self, key: &str) -> Option<&Decor>;
+}
+
+impl TableLike for Table {
+ fn iter(&self) -> Iter<'_> {
+ self.iter()
+ }
+ fn iter_mut(&mut self) -> IterMut<'_> {
+ self.iter_mut()
+ }
+ fn clear(&mut self) {
+ self.clear();
+ }
+ fn entry<'a>(&'a mut self, key: &str) -> Entry<'a> {
+ self.entry(key)
+ }
+ fn entry_format<'a>(&'a mut self, key: &Key) -> Entry<'a> {
+ self.entry_format(key)
+ }
+ fn get<'s>(&'s self, key: &str) -> Option<&'s Item> {
+ self.get(key)
+ }
+ fn get_mut<'s>(&'s mut self, key: &str) -> Option<&'s mut Item> {
+ self.get_mut(key)
+ }
+ fn get_key_value<'a>(&'a self, key: &str) -> Option<(&'a Key, &'a Item)> {
+ self.get_key_value(key)
+ }
+ fn get_key_value_mut<'a>(&'a mut self, key: &str) -> Option<(KeyMut<'a>, &'a mut Item)> {
+ self.get_key_value_mut(key)
+ }
+ fn contains_key(&self, key: &str) -> bool {
+ self.contains_key(key)
+ }
+ fn insert(&mut self, key: &str, value: Item) -> Option<Item> {
+ self.insert(key, value)
+ }
+ fn remove(&mut self, key: &str) -> Option<Item> {
+ self.remove(key)
+ }
+
+ fn get_values(&self) -> Vec<(Vec<&Key>, &Value)> {
+ self.get_values()
+ }
+ fn fmt(&mut self) {
+ self.fmt()
+ }
+ fn sort_values(&mut self) {
+ self.sort_values()
+ }
+ fn is_dotted(&self) -> bool {
+ self.is_dotted()
+ }
+ fn set_dotted(&mut self, yes: bool) {
+ self.set_dotted(yes)
+ }
+
+ fn key_decor_mut(&mut self, key: &str) -> Option<&mut Decor> {
+ self.key_decor_mut(key)
+ }
+ fn key_decor(&self, key: &str) -> Option<&Decor> {
+ self.key_decor(key)
+ }
+}
+
+/// A view into a single location in a map, which may be vacant or occupied.
+pub enum Entry<'a> {
+ /// An occupied Entry.
+ Occupied(OccupiedEntry<'a>),
+ /// A vacant Entry.
+ Vacant(VacantEntry<'a>),
+}
+
+impl<'a> Entry<'a> {
+ /// Returns the entry key
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use toml_edit::Table;
+ ///
+ /// let mut map = Table::new();
+ ///
+ /// assert_eq!("hello", map.entry("hello").key());
+ /// ```
+ pub fn key(&self) -> &str {
+ match self {
+ Entry::Occupied(e) => e.key(),
+ Entry::Vacant(e) => e.key(),
+ }
+ }
+
+ /// Ensures a value is in the entry by inserting the default if empty, and returns
+ /// a mutable reference to the value in the entry.
+ pub fn or_insert(self, default: Item) -> &'a mut Item {
+ match self {
+ Entry::Occupied(entry) => entry.into_mut(),
+ Entry::Vacant(entry) => entry.insert(default),
+ }
+ }
+
+ /// Ensures a value is in the entry by inserting the result of the default function if empty,
+ /// and returns a mutable reference to the value in the entry.
+ pub fn or_insert_with<F: FnOnce() -> Item>(self, default: F) -> &'a mut Item {
+ match self {
+ Entry::Occupied(entry) => entry.into_mut(),
+ Entry::Vacant(entry) => entry.insert(default()),
+ }
+ }
+}
+
+/// A view into a single occupied location in a `IndexMap`.
+pub struct OccupiedEntry<'a> {
+ pub(crate) entry: indexmap::map::OccupiedEntry<'a, InternalString, TableKeyValue>,
+}
+
+impl<'a> OccupiedEntry<'a> {
+ /// Gets a reference to the entry key
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use toml_edit::Table;
+ ///
+ /// let mut map = Table::new();
+ ///
+ /// assert_eq!("foo", map.entry("foo").key());
+ /// ```
+ pub fn key(&self) -> &str {
+ self.entry.key().as_str()
+ }
+
+ /// Gets a mutable reference to the entry key
+ pub fn key_mut(&mut self) -> KeyMut<'_> {
+ self.entry.get_mut().key.as_mut()
+ }
+
+ /// Gets a reference to the value in the entry.
+ pub fn get(&self) -> &Item {
+ &self.entry.get().value
+ }
+
+ /// Gets a mutable reference to the value in the entry.
+ pub fn get_mut(&mut self) -> &mut Item {
+ &mut self.entry.get_mut().value
+ }
+
+ /// Converts the OccupiedEntry into a mutable reference to the value in the entry
+ /// with a lifetime bound to the map itself
+ pub fn into_mut(self) -> &'a mut Item {
+ &mut self.entry.into_mut().value
+ }
+
+ /// Sets the value of the entry, and returns the entry's old value
+ pub fn insert(&mut self, mut value: Item) -> Item {
+ std::mem::swap(&mut value, &mut self.entry.get_mut().value);
+ value
+ }
+
+ /// Takes the value out of the entry, and returns it
+ pub fn remove(self) -> Item {
+ self.entry.shift_remove().value
+ }
+}
+
+/// A view into a single empty location in a `IndexMap`.
+pub struct VacantEntry<'a> {
+ pub(crate) entry: indexmap::map::VacantEntry<'a, InternalString, TableKeyValue>,
+ pub(crate) key: Option<Key>,
+}
+
+impl<'a> VacantEntry<'a> {
+ /// Gets a reference to the entry key
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use toml_edit::Table;
+ ///
+ /// let mut map = Table::new();
+ ///
+ /// assert_eq!("foo", map.entry("foo").key());
+ /// ```
+ pub fn key(&self) -> &str {
+ self.entry.key().as_str()
+ }
+
+ /// Sets the value of the entry with the VacantEntry's key,
+ /// and returns a mutable reference to it
+ pub fn insert(self, value: Item) -> &'a mut Item {
+ let entry = self.entry;
+ let key = self.key.unwrap_or_else(|| Key::new(entry.key().as_str()));
+ &mut entry.insert(TableKeyValue::new(key, value)).value
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/value.rs b/vendor/toml_edit-0.19.11/src/value.rs
new file mode 100644
index 000000000..f10da9a4c
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/value.rs
@@ -0,0 +1,372 @@
+use std::iter::FromIterator;
+use std::str::FromStr;
+
+use toml_datetime::*;
+
+use crate::key::Key;
+use crate::parser;
+use crate::repr::{Decor, Formatted};
+use crate::{Array, InlineTable, InternalString, RawString};
+
+/// Representation of a TOML Value (as part of a Key/Value Pair).
+#[derive(Debug, Clone)]
+pub enum Value {
+ /// A string value.
+ String(Formatted<String>),
+ /// A 64-bit integer value.
+ Integer(Formatted<i64>),
+ /// A 64-bit float value.
+ Float(Formatted<f64>),
+ /// A boolean value.
+ Boolean(Formatted<bool>),
+ /// An RFC 3339 formatted date-time with offset.
+ Datetime(Formatted<Datetime>),
+ /// An inline array of values.
+ Array(Array),
+ /// An inline table of key/value pairs.
+ InlineTable(InlineTable),
+}
+
+/// Downcasting
+impl Value {
+ /// Text description of value type
+ pub fn type_name(&self) -> &'static str {
+ match self {
+ Value::String(..) => "string",
+ Value::Integer(..) => "integer",
+ Value::Float(..) => "float",
+ Value::Boolean(..) => "boolean",
+ Value::Datetime(..) => "datetime",
+ Value::Array(..) => "array",
+ Value::InlineTable(..) => "inline table",
+ }
+ }
+
+ /// Casts `self` to str.
+ pub fn as_str(&self) -> Option<&str> {
+ match *self {
+ Value::String(ref value) => Some(value.value()),
+ _ => None,
+ }
+ }
+
+ /// Returns true iff `self` is a string.
+ pub fn is_str(&self) -> bool {
+ self.as_str().is_some()
+ }
+
+ /// Casts `self` to integer.
+ pub fn as_integer(&self) -> Option<i64> {
+ match *self {
+ Value::Integer(ref value) => Some(*value.value()),
+ _ => None,
+ }
+ }
+
+ /// Returns true iff `self` is an integer.
+ pub fn is_integer(&self) -> bool {
+ self.as_integer().is_some()
+ }
+
+ /// Casts `self` to float.
+ pub fn as_float(&self) -> Option<f64> {
+ match *self {
+ Value::Float(ref value) => Some(*value.value()),
+ _ => None,
+ }
+ }
+
+ /// Returns true iff `self` is a float.
+ pub fn is_float(&self) -> bool {
+ self.as_float().is_some()
+ }
+
+ /// Casts `self` to boolean.
+ pub fn as_bool(&self) -> Option<bool> {
+ match *self {
+ Value::Boolean(ref value) => Some(*value.value()),
+ _ => None,
+ }
+ }
+
+ /// Returns true iff `self` is a boolean.
+ pub fn is_bool(&self) -> bool {
+ self.as_bool().is_some()
+ }
+
+ /// Casts `self` to date-time.
+ pub fn as_datetime(&self) -> Option<&Datetime> {
+ match *self {
+ Value::Datetime(ref value) => Some(value.value()),
+ _ => None,
+ }
+ }
+
+ /// Returns true iff `self` is a date-time.
+ pub fn is_datetime(&self) -> bool {
+ self.as_datetime().is_some()
+ }
+
+ /// Casts `self` to array.
+ pub fn as_array(&self) -> Option<&Array> {
+ match *self {
+ Value::Array(ref value) => Some(value),
+ _ => None,
+ }
+ }
+
+ /// Casts `self` to mutable array.
+ pub fn as_array_mut(&mut self) -> Option<&mut Array> {
+ match *self {
+ Value::Array(ref mut value) => Some(value),
+ _ => None,
+ }
+ }
+
+ /// Returns true iff `self` is an array.
+ pub fn is_array(&self) -> bool {
+ self.as_array().is_some()
+ }
+
+ /// Casts `self` to inline table.
+ pub fn as_inline_table(&self) -> Option<&InlineTable> {
+ match *self {
+ Value::InlineTable(ref value) => Some(value),
+ _ => None,
+ }
+ }
+
+ /// Casts `self` to mutable inline table.
+ pub fn as_inline_table_mut(&mut self) -> Option<&mut InlineTable> {
+ match *self {
+ Value::InlineTable(ref mut value) => Some(value),
+ _ => None,
+ }
+ }
+
+ /// Returns true iff `self` is an inline table.
+ pub fn is_inline_table(&self) -> bool {
+ self.as_inline_table().is_some()
+ }
+}
+
+impl Value {
+ /// Get the decoration of the value.
+ /// # Example
+ /// ```rust
+ /// let v = toml_edit::Value::from(true);
+ /// assert_eq!(v.decor().suffix(), None);
+ ///```
+ pub fn decor_mut(&mut self) -> &mut Decor {
+ match self {
+ Value::String(f) => f.decor_mut(),
+ Value::Integer(f) => f.decor_mut(),
+ Value::Float(f) => f.decor_mut(),
+ Value::Boolean(f) => f.decor_mut(),
+ Value::Datetime(f) => f.decor_mut(),
+ Value::Array(a) => a.decor_mut(),
+ Value::InlineTable(t) => t.decor_mut(),
+ }
+ }
+
+ /// Get the decoration of the value.
+ /// # Example
+ /// ```rust
+ /// let v = toml_edit::Value::from(true);
+ /// assert_eq!(v.decor().suffix(), None);
+ ///```
+ pub fn decor(&self) -> &Decor {
+ match *self {
+ Value::String(ref f) => f.decor(),
+ Value::Integer(ref f) => f.decor(),
+ Value::Float(ref f) => f.decor(),
+ Value::Boolean(ref f) => f.decor(),
+ Value::Datetime(ref f) => f.decor(),
+ Value::Array(ref a) => a.decor(),
+ Value::InlineTable(ref t) => t.decor(),
+ }
+ }
+
+ /// Sets the prefix and the suffix for value.
+ /// # Example
+ /// ```rust
+ /// let mut v = toml_edit::Value::from(42);
+ /// assert_eq!(&v.to_string(), "42");
+ /// let d = v.decorated(" ", " ");
+ /// assert_eq!(&d.to_string(), " 42 ");
+ /// ```
+ pub fn decorated(mut self, prefix: impl Into<RawString>, suffix: impl Into<RawString>) -> Self {
+ self.decorate(prefix, suffix);
+ self
+ }
+
+ pub(crate) fn decorate(&mut self, prefix: impl Into<RawString>, suffix: impl Into<RawString>) {
+ let decor = self.decor_mut();
+ *decor = Decor::new(prefix, suffix);
+ }
+
+ /// Returns the location within the original document
+ pub(crate) fn span(&self) -> Option<std::ops::Range<usize>> {
+ match self {
+ Value::String(f) => f.span(),
+ Value::Integer(f) => f.span(),
+ Value::Float(f) => f.span(),
+ Value::Boolean(f) => f.span(),
+ Value::Datetime(f) => f.span(),
+ Value::Array(a) => a.span(),
+ Value::InlineTable(t) => t.span(),
+ }
+ }
+
+ pub(crate) fn despan(&mut self, input: &str) {
+ match self {
+ Value::String(f) => f.despan(input),
+ Value::Integer(f) => f.despan(input),
+ Value::Float(f) => f.despan(input),
+ Value::Boolean(f) => f.despan(input),
+ Value::Datetime(f) => f.despan(input),
+ Value::Array(a) => a.despan(input),
+ Value::InlineTable(t) => t.despan(input),
+ }
+ }
+}
+
+impl FromStr for Value {
+ type Err = crate::TomlError;
+
+ /// Parses a value from a &str
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ parser::parse_value(s)
+ }
+}
+
+impl<'b> From<&'b Value> for Value {
+ fn from(s: &'b Value) -> Self {
+ s.clone()
+ }
+}
+
+impl<'b> From<&'b str> for Value {
+ fn from(s: &'b str) -> Self {
+ s.to_owned().into()
+ }
+}
+
+impl<'b> From<&'b String> for Value {
+ fn from(s: &'b String) -> Self {
+ s.to_owned().into()
+ }
+}
+
+impl From<String> for Value {
+ fn from(s: String) -> Self {
+ Value::String(Formatted::new(s))
+ }
+}
+
+impl<'b> From<&'b InternalString> for Value {
+ fn from(s: &'b InternalString) -> Self {
+ s.as_str().into()
+ }
+}
+
+impl From<InternalString> for Value {
+ fn from(s: InternalString) -> Self {
+ s.as_str().into()
+ }
+}
+
+impl From<i64> for Value {
+ fn from(i: i64) -> Self {
+ Value::Integer(Formatted::new(i))
+ }
+}
+
+impl From<f64> for Value {
+ fn from(f: f64) -> Self {
+ Value::Float(Formatted::new(f))
+ }
+}
+
+impl From<bool> for Value {
+ fn from(b: bool) -> Self {
+ Value::Boolean(Formatted::new(b))
+ }
+}
+
+impl From<Datetime> for Value {
+ fn from(d: Datetime) -> Self {
+ Value::Datetime(Formatted::new(d))
+ }
+}
+
+impl From<Date> for Value {
+ fn from(d: Date) -> Self {
+ let d: Datetime = d.into();
+ d.into()
+ }
+}
+
+impl From<Time> for Value {
+ fn from(d: Time) -> Self {
+ let d: Datetime = d.into();
+ d.into()
+ }
+}
+
+impl From<Array> for Value {
+ fn from(array: Array) -> Self {
+ Value::Array(array)
+ }
+}
+
+impl From<InlineTable> for Value {
+ fn from(table: InlineTable) -> Self {
+ Value::InlineTable(table)
+ }
+}
+
+impl<V: Into<Value>> FromIterator<V> for Value {
+ fn from_iter<I>(iter: I) -> Self
+ where
+ I: IntoIterator<Item = V>,
+ {
+ let array: Array = iter.into_iter().collect();
+ Value::Array(array)
+ }
+}
+
+impl<K: Into<Key>, V: Into<Value>> FromIterator<(K, V)> for Value {
+ fn from_iter<I>(iter: I) -> Self
+ where
+ I: IntoIterator<Item = (K, V)>,
+ {
+ let table: InlineTable = iter.into_iter().collect();
+ Value::InlineTable(table)
+ }
+}
+
+impl std::fmt::Display for Value {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ crate::encode::Encode::encode(self, f, None, ("", ""))
+ }
+}
+
+// `key1 = value1`
+pub(crate) const DEFAULT_VALUE_DECOR: (&str, &str) = (" ", "");
+// `{ key = value }`
+pub(crate) const DEFAULT_TRAILING_VALUE_DECOR: (&str, &str) = (" ", " ");
+// `[value1, value2]`
+pub(crate) const DEFAULT_LEADING_VALUE_DECOR: (&str, &str) = ("", "");
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn from_iter_formatting() {
+ let features = vec!["node".to_owned(), "mouth".to_owned()];
+ let features: Value = features.iter().cloned().collect();
+ assert_eq!(features.to_string(), r#"["node", "mouth"]"#);
+ }
+}
diff --git a/vendor/toml_edit-0.19.11/src/visit.rs b/vendor/toml_edit-0.19.11/src/visit.rs
new file mode 100644
index 000000000..1bc640a88
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/visit.rs
@@ -0,0 +1,236 @@
+#![allow(missing_docs)]
+
+//! Document tree traversal to walk a shared borrow of a document tree.
+//!
+//! Each method of the [`Visit`] trait is a hook that can be overridden
+//! to customize the behavior when mutating the corresponding type of node.
+//! By default, every method recursively visits the substructure of the
+//! input by invoking the right visitor method of each of its fields.
+//!
+//! ```
+//! # use toml_edit::{Item, ArrayOfTables, Table, Value};
+//!
+//! pub trait Visit<'doc> {
+//! /* ... */
+//!
+//! fn visit_item(&mut self, i: &'doc Item) {
+//! visit_item(self, i);
+//! }
+//!
+//! /* ... */
+//! # fn visit_value(&mut self, i: &'doc Value);
+//! # fn visit_table(&mut self, i: &'doc Table);
+//! # fn visit_array_of_tables(&mut self, i: &'doc ArrayOfTables);
+//! }
+//!
+//! pub fn visit_item<'doc, V>(v: &mut V, node: &'doc Item)
+//! where
+//! V: Visit<'doc> + ?Sized,
+//! {
+//! match node {
+//! Item::None => {}
+//! Item::Value(value) => v.visit_value(value),
+//! Item::Table(table) => v.visit_table(table),
+//! Item::ArrayOfTables(array) => v.visit_array_of_tables(array),
+//! }
+//! }
+//! ```
+//!
+//! The API is modeled after [`syn::visit`](https://docs.rs/syn/1/syn/visit).
+//!
+//! # Examples
+//!
+//! This visitor stores every string in the document.
+//!
+//! ```
+//! # use toml_edit::*;
+//! use toml_edit::visit::*;
+//!
+//! #[derive(Default)]
+//! struct StringCollector<'doc> {
+//! strings: Vec<&'doc str>,
+//! }
+//!
+//! impl<'doc> Visit<'doc> for StringCollector<'doc> {
+//! fn visit_string(&mut self, node: &'doc Formatted<String>) {
+//! self.strings.push(node.value().as_str());
+//! }
+//! }
+//!
+//! let input = r#"
+//! laputa = "sky-castle"
+//! the-force = { value = "surrounds-you" }
+//! "#;
+//!
+//! let mut document: Document = input.parse().unwrap();
+//! let mut visitor = StringCollector::default();
+//! visitor.visit_document(&document);
+//!
+//! assert_eq!(visitor.strings, vec!["sky-castle", "surrounds-you"]);
+//! ```
+//!
+//! For a more complex example where the visitor has internal state, see `examples/visit.rs`
+//! [on GitHub](https://github.com/ordian/toml_edit/blob/master/examples/visit.rs).
+
+use crate::{
+ Array, ArrayOfTables, Datetime, Document, Formatted, InlineTable, Item, Table, TableLike, Value,
+};
+
+/// Document tree traversal to mutate an exclusive borrow of a document tree in-place.
+///
+/// See the [module documentation](self) for details.
+pub trait Visit<'doc> {
+ fn visit_document(&mut self, node: &'doc Document) {
+ visit_document(self, node);
+ }
+
+ fn visit_item(&mut self, node: &'doc Item) {
+ visit_item(self, node);
+ }
+
+ fn visit_table(&mut self, node: &'doc Table) {
+ visit_table(self, node);
+ }
+
+ fn visit_inline_table(&mut self, node: &'doc InlineTable) {
+ visit_inline_table(self, node)
+ }
+
+ fn visit_table_like(&mut self, node: &'doc dyn TableLike) {
+ visit_table_like(self, node);
+ }
+
+ fn visit_table_like_kv(&mut self, key: &'doc str, node: &'doc Item) {
+ visit_table_like_kv(self, key, node);
+ }
+
+ fn visit_array(&mut self, node: &'doc Array) {
+ visit_array(self, node);
+ }
+
+ fn visit_array_of_tables(&mut self, node: &'doc ArrayOfTables) {
+ visit_array_of_tables(self, node);
+ }
+
+ fn visit_value(&mut self, node: &'doc Value) {
+ visit_value(self, node);
+ }
+
+ fn visit_boolean(&mut self, node: &'doc Formatted<bool>) {
+ visit_boolean(self, node)
+ }
+
+ fn visit_datetime(&mut self, node: &'doc Formatted<Datetime>) {
+ visit_datetime(self, node);
+ }
+
+ fn visit_float(&mut self, node: &'doc Formatted<f64>) {
+ visit_float(self, node)
+ }
+
+ fn visit_integer(&mut self, node: &'doc Formatted<i64>) {
+ visit_integer(self, node)
+ }
+
+ fn visit_string(&mut self, node: &'doc Formatted<String>) {
+ visit_string(self, node)
+ }
+}
+
+pub fn visit_document<'doc, V>(v: &mut V, node: &'doc Document)
+where
+ V: Visit<'doc> + ?Sized,
+{
+ v.visit_table(node.as_table());
+}
+
+pub fn visit_item<'doc, V>(v: &mut V, node: &'doc Item)
+where
+ V: Visit<'doc> + ?Sized,
+{
+ match node {
+ Item::None => {}
+ Item::Value(value) => v.visit_value(value),
+ Item::Table(table) => v.visit_table(table),
+ Item::ArrayOfTables(array) => v.visit_array_of_tables(array),
+ }
+}
+
+pub fn visit_table<'doc, V>(v: &mut V, node: &'doc Table)
+where
+ V: Visit<'doc> + ?Sized,
+{
+ v.visit_table_like(node)
+}
+
+pub fn visit_inline_table<'doc, V>(v: &mut V, node: &'doc InlineTable)
+where
+ V: Visit<'doc> + ?Sized,
+{
+ v.visit_table_like(node)
+}
+
+pub fn visit_table_like<'doc, V>(v: &mut V, node: &'doc dyn TableLike)
+where
+ V: Visit<'doc> + ?Sized,
+{
+ for (key, item) in node.iter() {
+ v.visit_table_like_kv(key, item)
+ }
+}
+
+pub fn visit_table_like_kv<'doc, V>(v: &mut V, _key: &'doc str, node: &'doc Item)
+where
+ V: Visit<'doc> + ?Sized,
+{
+ v.visit_item(node)
+}
+
+pub fn visit_array<'doc, V>(v: &mut V, node: &'doc Array)
+where
+ V: Visit<'doc> + ?Sized,
+{
+ for value in node.iter() {
+ v.visit_value(value);
+ }
+}
+
+pub fn visit_array_of_tables<'doc, V>(v: &mut V, node: &'doc ArrayOfTables)
+where
+ V: Visit<'doc> + ?Sized,
+{
+ for table in node.iter() {
+ v.visit_table(table);
+ }
+}
+
+pub fn visit_value<'doc, V>(v: &mut V, node: &'doc Value)
+where
+ V: Visit<'doc> + ?Sized,
+{
+ match node {
+ Value::String(s) => v.visit_string(s),
+ Value::Integer(i) => v.visit_integer(i),
+ Value::Float(f) => v.visit_float(f),
+ Value::Boolean(b) => v.visit_boolean(b),
+ Value::Datetime(dt) => v.visit_datetime(dt),
+ Value::Array(array) => v.visit_array(array),
+ Value::InlineTable(table) => v.visit_inline_table(table),
+ }
+}
+
+macro_rules! empty_visit {
+ ($name: ident, $t: ty) => {
+ fn $name<'doc, V>(_v: &mut V, _node: &'doc $t)
+ where
+ V: Visit<'doc> + ?Sized,
+ {
+ }
+ };
+}
+
+empty_visit!(visit_boolean, Formatted<bool>);
+empty_visit!(visit_datetime, Formatted<Datetime>);
+empty_visit!(visit_float, Formatted<f64>);
+empty_visit!(visit_integer, Formatted<i64>);
+empty_visit!(visit_string, Formatted<String>);
diff --git a/vendor/toml_edit-0.19.11/src/visit_mut.rs b/vendor/toml_edit-0.19.11/src/visit_mut.rs
new file mode 100644
index 000000000..2c2af9752
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/src/visit_mut.rs
@@ -0,0 +1,252 @@
+#![allow(missing_docs)]
+
+//! Document tree traversal to mutate an exclusive borrow of a document tree in place.
+//!
+//!
+//! Each method of the [`VisitMut`] trait is a hook that can be overridden
+//! to customize the behavior when mutating the corresponding type of node.
+//! By default, every method recursively visits the substructure of the
+//! input by invoking the right visitor method of each of its fields.
+//!
+//! ```
+//! # use toml_edit::{Item, ArrayOfTables, Table, Value};
+//!
+//! pub trait VisitMut {
+//! /* ... */
+//!
+//! fn visit_item_mut(&mut self, i: &mut Item) {
+//! visit_item_mut(self, i);
+//! }
+//!
+//! /* ... */
+//! # fn visit_value_mut(&mut self, i: &mut Value);
+//! # fn visit_table_mut(&mut self, i: &mut Table);
+//! # fn visit_array_of_tables_mut(&mut self, i: &mut ArrayOfTables);
+//! }
+//!
+//! pub fn visit_item_mut<V>(v: &mut V, node: &mut Item)
+//! where
+//! V: VisitMut + ?Sized,
+//! {
+//! match node {
+//! Item::None => {}
+//! Item::Value(value) => v.visit_value_mut(value),
+//! Item::Table(table) => v.visit_table_mut(table),
+//! Item::ArrayOfTables(array) => v.visit_array_of_tables_mut(array),
+//! }
+//! }
+//! ```
+//!
+//! The API is modeled after [`syn::visit_mut`](https://docs.rs/syn/1/syn/visit_mut).
+//!
+//! # Examples
+//!
+//! This visitor replaces every floating point value with its decimal string representation, to
+//! 2 decimal points.
+//!
+//! ```
+//! # use toml_edit::*;
+//! use toml_edit::visit_mut::*;
+//!
+//! struct FloatToString;
+//!
+//! impl VisitMut for FloatToString {
+//! fn visit_value_mut(&mut self, node: &mut Value) {
+//! if let Value::Float(f) = node {
+//! // Convert the float to a string.
+//! let mut s = Formatted::new(format!("{:.2}", f.value()));
+//! // Copy over the formatting.
+//! std::mem::swap(s.decor_mut(), f.decor_mut());
+//! *node = Value::String(s);
+//! }
+//! // Most of the time, you will also need to call the default implementation to recurse
+//! // further down the document tree.
+//! visit_value_mut(self, node);
+//! }
+//! }
+//!
+//! let input = r#"
+//! banana = 3.26
+//! table = { apple = 4.5 }
+//! "#;
+//!
+//! let mut document: Document = input.parse().unwrap();
+//! let mut visitor = FloatToString;
+//! visitor.visit_document_mut(&mut document);
+//!
+//! let output = r#"
+//! banana = "3.26"
+//! table = { apple = "4.50" }
+//! "#;
+//!
+//! assert_eq!(format!("{}", document), output);
+//! ```
+//!
+//! For a more complex example where the visitor has internal state, see `examples/visit.rs`
+//! [on GitHub](https://github.com/ordian/toml_edit/blob/master/examples/visit.rs).
+
+use crate::{
+ Array, ArrayOfTables, Datetime, Document, Formatted, InlineTable, Item, KeyMut, Table,
+ TableLike, Value,
+};
+
+/// Document tree traversal to mutate an exclusive borrow of a document tree in-place.
+///
+/// See the [module documentation](self) for details.
+pub trait VisitMut {
+ fn visit_document_mut(&mut self, node: &mut Document) {
+ visit_document_mut(self, node);
+ }
+
+ fn visit_item_mut(&mut self, node: &mut Item) {
+ visit_item_mut(self, node);
+ }
+
+ fn visit_table_mut(&mut self, node: &mut Table) {
+ visit_table_mut(self, node);
+ }
+
+ fn visit_inline_table_mut(&mut self, node: &mut InlineTable) {
+ visit_inline_table_mut(self, node)
+ }
+
+ /// [`visit_table_mut`](Self::visit_table_mut) and
+ /// [`visit_inline_table_mut`](Self::visit_inline_table_mut) both recurse into this method.
+ fn visit_table_like_mut(&mut self, node: &mut dyn TableLike) {
+ visit_table_like_mut(self, node);
+ }
+
+ fn visit_table_like_kv_mut(&mut self, key: KeyMut<'_>, node: &mut Item) {
+ visit_table_like_kv_mut(self, key, node);
+ }
+
+ fn visit_array_mut(&mut self, node: &mut Array) {
+ visit_array_mut(self, node);
+ }
+
+ fn visit_array_of_tables_mut(&mut self, node: &mut ArrayOfTables) {
+ visit_array_of_tables_mut(self, node);
+ }
+
+ fn visit_value_mut(&mut self, node: &mut Value) {
+ visit_value_mut(self, node);
+ }
+
+ fn visit_boolean_mut(&mut self, node: &mut Formatted<bool>) {
+ visit_boolean_mut(self, node)
+ }
+
+ fn visit_datetime_mut(&mut self, node: &mut Formatted<Datetime>) {
+ visit_datetime_mut(self, node);
+ }
+
+ fn visit_float_mut(&mut self, node: &mut Formatted<f64>) {
+ visit_float_mut(self, node)
+ }
+
+ fn visit_integer_mut(&mut self, node: &mut Formatted<i64>) {
+ visit_integer_mut(self, node)
+ }
+
+ fn visit_string_mut(&mut self, node: &mut Formatted<String>) {
+ visit_string_mut(self, node)
+ }
+}
+
+pub fn visit_document_mut<V>(v: &mut V, node: &mut Document)
+where
+ V: VisitMut + ?Sized,
+{
+ v.visit_table_mut(node.as_table_mut());
+}
+
+pub fn visit_item_mut<V>(v: &mut V, node: &mut Item)
+where
+ V: VisitMut + ?Sized,
+{
+ match node {
+ Item::None => {}
+ Item::Value(value) => v.visit_value_mut(value),
+ Item::Table(table) => v.visit_table_mut(table),
+ Item::ArrayOfTables(array) => v.visit_array_of_tables_mut(array),
+ }
+}
+
+pub fn visit_table_mut<V>(v: &mut V, node: &mut Table)
+where
+ V: VisitMut + ?Sized,
+{
+ v.visit_table_like_mut(node);
+}
+
+pub fn visit_inline_table_mut<V>(v: &mut V, node: &mut InlineTable)
+where
+ V: VisitMut + ?Sized,
+{
+ v.visit_table_like_mut(node);
+}
+
+pub fn visit_table_like_mut<V>(v: &mut V, node: &mut dyn TableLike)
+where
+ V: VisitMut + ?Sized,
+{
+ for (key, item) in node.iter_mut() {
+ v.visit_table_like_kv_mut(key, item);
+ }
+}
+
+pub fn visit_table_like_kv_mut<V>(v: &mut V, _key: KeyMut<'_>, node: &mut Item)
+where
+ V: VisitMut + ?Sized,
+{
+ v.visit_item_mut(node)
+}
+
+pub fn visit_array_mut<V>(v: &mut V, node: &mut Array)
+where
+ V: VisitMut + ?Sized,
+{
+ for value in node.iter_mut() {
+ v.visit_value_mut(value);
+ }
+}
+
+pub fn visit_array_of_tables_mut<V>(v: &mut V, node: &mut ArrayOfTables)
+where
+ V: VisitMut + ?Sized,
+{
+ for table in node.iter_mut() {
+ v.visit_table_mut(table);
+ }
+}
+
+pub fn visit_value_mut<V>(v: &mut V, node: &mut Value)
+where
+ V: VisitMut + ?Sized,
+{
+ match node {
+ Value::String(s) => v.visit_string_mut(s),
+ Value::Integer(i) => v.visit_integer_mut(i),
+ Value::Float(f) => v.visit_float_mut(f),
+ Value::Boolean(b) => v.visit_boolean_mut(b),
+ Value::Datetime(dt) => v.visit_datetime_mut(dt),
+ Value::Array(array) => v.visit_array_mut(array),
+ Value::InlineTable(table) => v.visit_inline_table_mut(table),
+ }
+}
+
+macro_rules! empty_visit_mut {
+ ($name: ident, $t: ty) => {
+ fn $name<V>(_v: &mut V, _node: &mut $t)
+ where
+ V: VisitMut + ?Sized,
+ {
+ }
+ };
+}
+
+empty_visit_mut!(visit_boolean_mut, Formatted<bool>);
+empty_visit_mut!(visit_datetime_mut, Formatted<Datetime>);
+empty_visit_mut!(visit_float_mut, Formatted<f64>);
+empty_visit_mut!(visit_integer_mut, Formatted<i64>);
+empty_visit_mut!(visit_string_mut, Formatted<String>);
diff --git a/vendor/toml_edit-0.19.11/tests/decoder.rs b/vendor/toml_edit-0.19.11/tests/decoder.rs
new file mode 100644
index 000000000..7306d4557
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/decoder.rs
@@ -0,0 +1,100 @@
+#[derive(Copy, Clone)]
+pub struct Decoder;
+
+impl toml_test_harness::Decoder for Decoder {
+ fn name(&self) -> &str {
+ "toml_edit"
+ }
+
+ fn decode(&self, data: &[u8]) -> Result<toml_test_harness::Decoded, toml_test_harness::Error> {
+ let data = std::str::from_utf8(data).map_err(toml_test_harness::Error::new)?;
+ let document = data
+ .parse::<toml_edit::Document>()
+ .map_err(toml_test_harness::Error::new)?;
+ document_to_decoded(&document)
+ }
+}
+
+fn document_to_decoded(
+ value: &toml_edit::Document,
+) -> Result<toml_test_harness::Decoded, toml_test_harness::Error> {
+ table_to_decoded(value)
+}
+
+fn item_to_decoded(
+ value: &toml_edit::Item,
+) -> Result<toml_test_harness::Decoded, toml_test_harness::Error> {
+ match value {
+ toml_edit::Item::None => unreachable!("No nones"),
+ toml_edit::Item::Value(v) => value_to_decoded(v),
+ toml_edit::Item::Table(v) => table_to_decoded(v),
+ toml_edit::Item::ArrayOfTables(v) => {
+ let v: Result<_, toml_test_harness::Error> = v.iter().map(table_to_decoded).collect();
+ Ok(toml_test_harness::Decoded::Array(v?))
+ }
+ }
+}
+
+fn value_to_decoded(
+ value: &toml_edit::Value,
+) -> Result<toml_test_harness::Decoded, toml_test_harness::Error> {
+ match value {
+ toml_edit::Value::Integer(v) => Ok(toml_test_harness::Decoded::Value(
+ toml_test_harness::DecodedValue::from(*v.value()),
+ )),
+ toml_edit::Value::String(v) => Ok(toml_test_harness::Decoded::Value(
+ toml_test_harness::DecodedValue::from(v.value()),
+ )),
+ toml_edit::Value::Float(v) => Ok(toml_test_harness::Decoded::Value(
+ toml_test_harness::DecodedValue::from(*v.value()),
+ )),
+ toml_edit::Value::Datetime(v) => {
+ let v = v.value();
+ let value = v.to_string();
+ let value = match (v.date.is_some(), v.time.is_some(), v.offset.is_some()) {
+ (true, true, true) => toml_test_harness::DecodedValue::Datetime(value),
+ (true, true, false) => toml_test_harness::DecodedValue::DatetimeLocal(value),
+ (true, false, false) => toml_test_harness::DecodedValue::DateLocal(value),
+ (false, true, false) => toml_test_harness::DecodedValue::TimeLocal(value),
+ _ => unreachable!("Unsupported case"),
+ };
+ Ok(toml_test_harness::Decoded::Value(value))
+ }
+ toml_edit::Value::Boolean(v) => Ok(toml_test_harness::Decoded::Value(
+ toml_test_harness::DecodedValue::from(*v.value()),
+ )),
+ toml_edit::Value::Array(v) => {
+ let v: Result<_, toml_test_harness::Error> = v.iter().map(value_to_decoded).collect();
+ Ok(toml_test_harness::Decoded::Array(v?))
+ }
+ toml_edit::Value::InlineTable(v) => inline_table_to_decoded(v),
+ }
+}
+
+fn table_to_decoded(
+ value: &toml_edit::Table,
+) -> Result<toml_test_harness::Decoded, toml_test_harness::Error> {
+ let table: Result<_, toml_test_harness::Error> = value
+ .iter()
+ .map(|(k, v)| {
+ let k = k.to_owned();
+ let v = item_to_decoded(v)?;
+ Ok((k, v))
+ })
+ .collect();
+ Ok(toml_test_harness::Decoded::Table(table?))
+}
+
+fn inline_table_to_decoded(
+ value: &toml_edit::InlineTable,
+) -> Result<toml_test_harness::Decoded, toml_test_harness::Error> {
+ let table: Result<_, toml_test_harness::Error> = value
+ .iter()
+ .map(|(k, v)| {
+ let k = k.to_owned();
+ let v = value_to_decoded(v)?;
+ Ok((k, v))
+ })
+ .collect();
+ Ok(toml_test_harness::Decoded::Table(table?))
+}
diff --git a/vendor/toml_edit-0.19.11/tests/decoder_compliance.rs b/vendor/toml_edit-0.19.11/tests/decoder_compliance.rs
new file mode 100644
index 000000000..0f0b35015
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/decoder_compliance.rs
@@ -0,0 +1,17 @@
+mod decoder;
+
+fn main() {
+ let decoder = decoder::Decoder;
+ let mut harness = toml_test_harness::DecoderHarness::new(decoder);
+ harness
+ .ignore([
+ "valid/spec/float-0.toml", // Test issue; `Decoder` turns `6.626e-34` into `0.0`
+ // Unreleased
+ "valid/string/escape-esc.toml",
+ "valid/string/hex-escape.toml",
+ "valid/datetime/no-seconds.toml",
+ "valid/inline-table/newline.toml",
+ ])
+ .unwrap();
+ harness.test();
+}
diff --git a/vendor/toml_edit-0.19.11/tests/encoder.rs b/vendor/toml_edit-0.19.11/tests/encoder.rs
new file mode 100644
index 000000000..808a20c42
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/encoder.rs
@@ -0,0 +1,111 @@
+#[derive(Copy, Clone)]
+pub struct Encoder;
+
+impl toml_test_harness::Encoder for Encoder {
+ fn name(&self) -> &str {
+ "toml_edit"
+ }
+
+ fn encode(&self, data: toml_test_harness::Decoded) -> Result<String, toml_test_harness::Error> {
+ let doc = decoded_to_document(&data)?;
+ Ok(doc.to_string())
+ }
+}
+
+fn decoded_to_document(
+ decoded: &toml_test_harness::Decoded,
+) -> Result<toml_edit::Document, toml_test_harness::Error> {
+ let item = root_from_decoded(decoded)?;
+ let mut doc = toml_edit::Document::new();
+ *doc = item;
+ Ok(doc)
+}
+
+fn root_from_decoded(
+ decoded: &toml_test_harness::Decoded,
+) -> Result<toml_edit::Table, toml_test_harness::Error> {
+ match decoded {
+ toml_test_harness::Decoded::Value(_) => {
+ Err(toml_test_harness::Error::new("Root cannot be a value"))
+ }
+ toml_test_harness::Decoded::Table(value) => value
+ .iter()
+ .map(|(k, v)| {
+ let k = k.as_str();
+ let v = from_decoded(v)?;
+ Ok((k, v))
+ })
+ .collect(),
+ toml_test_harness::Decoded::Array(_) => {
+ Err(toml_test_harness::Error::new("Root cannot be an array"))
+ }
+ }
+}
+
+fn from_decoded(
+ decoded: &toml_test_harness::Decoded,
+) -> Result<toml_edit::Value, toml_test_harness::Error> {
+ let value = match decoded {
+ toml_test_harness::Decoded::Value(value) => from_decoded_value(value)?,
+ toml_test_harness::Decoded::Table(value) => {
+ toml_edit::Value::InlineTable(from_table(value)?)
+ }
+ toml_test_harness::Decoded::Array(value) => toml_edit::Value::Array(from_array(value)?),
+ };
+ Ok(value)
+}
+
+fn from_decoded_value(
+ decoded: &toml_test_harness::DecodedValue,
+) -> Result<toml_edit::Value, toml_test_harness::Error> {
+ let value: toml_edit::Value = match decoded {
+ toml_test_harness::DecodedValue::String(value) => value.into(),
+ toml_test_harness::DecodedValue::Integer(value) => value
+ .parse::<i64>()
+ .map_err(toml_test_harness::Error::new)?
+ .into(),
+ toml_test_harness::DecodedValue::Float(value) => value
+ .parse::<f64>()
+ .map_err(toml_test_harness::Error::new)?
+ .into(),
+ toml_test_harness::DecodedValue::Bool(value) => value
+ .parse::<bool>()
+ .map_err(toml_test_harness::Error::new)?
+ .into(),
+ toml_test_harness::DecodedValue::Datetime(value) => value
+ .parse::<toml_edit::Datetime>()
+ .map_err(toml_test_harness::Error::new)?
+ .into(),
+ toml_test_harness::DecodedValue::DatetimeLocal(value) => value
+ .parse::<toml_edit::Datetime>()
+ .map_err(toml_test_harness::Error::new)?
+ .into(),
+ toml_test_harness::DecodedValue::DateLocal(value) => value
+ .parse::<toml_edit::Datetime>()
+ .map_err(toml_test_harness::Error::new)?
+ .into(),
+ toml_test_harness::DecodedValue::TimeLocal(value) => value
+ .parse::<toml_edit::Datetime>()
+ .map_err(toml_test_harness::Error::new)?
+ .into(),
+ };
+ Ok(value)
+}
+
+fn from_table(
+ decoded: &std::collections::HashMap<String, toml_test_harness::Decoded>,
+) -> Result<toml_edit::InlineTable, toml_test_harness::Error> {
+ decoded
+ .iter()
+ .map(|(k, v)| {
+ let v = from_decoded(v)?;
+ Ok((k, v))
+ })
+ .collect()
+}
+
+fn from_array(
+ decoded: &[toml_test_harness::Decoded],
+) -> Result<toml_edit::Array, toml_test_harness::Error> {
+ decoded.iter().map(from_decoded).collect()
+}
diff --git a/vendor/toml_edit-0.19.11/tests/encoder_compliance.rs b/vendor/toml_edit-0.19.11/tests/encoder_compliance.rs
new file mode 100644
index 000000000..ad65d75ce
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/encoder_compliance.rs
@@ -0,0 +1,14 @@
+mod decoder;
+mod encoder;
+
+fn main() {
+ let encoder = encoder::Encoder;
+ let decoder = decoder::Decoder;
+ let mut harness = toml_test_harness::EncoderHarness::new(encoder, decoder);
+ harness
+ .ignore([
+ "valid/spec/float-0.toml", // Test issue; `Decoder` turns `6.626e-34` into `0.0`
+ ])
+ .unwrap();
+ harness.test();
+}
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/double-comma-1.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/double-comma-1.stderr
new file mode 100644
index 000000000..543e1b680
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/double-comma-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 12
+ |
+1 | array = [1,,2]
+ | ^
+invalid array
+expected `]`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/double-comma-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/double-comma-2.stderr
new file mode 100644
index 000000000..694d7ec40
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/double-comma-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 14
+ |
+1 | array = [1,2,,]
+ | ^
+invalid array
+expected `]`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/extending-table.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/extending-table.stderr
new file mode 100644
index 000000000..6f92ff668
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/extending-table.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 5, column 1
+ |
+5 | [a.c]
+ | ^
+invalid table header
+dotted key `a` attempted to extend non-table type (array)
diff --git a/vendor/toml_edit/tests/fixtures/invalid/array/missing-separator.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/missing-separator.stderr
index 8e21f51fe..8e21f51fe 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/array/missing-separator.stderr
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/missing-separator.stderr
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/no-close-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/no-close-2.stderr
new file mode 100644
index 000000000..81ae5a968
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/no-close-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 11
+ |
+1 | x = [42 #
+ | ^
+invalid array
+expected `]`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/no-close-table-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/no-close-table-2.stderr
new file mode 100644
index 000000000..535943e2e
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/no-close-table-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 17
+ |
+1 | x = [{ key = 42 #
+ | ^
+invalid inline table
+expected `}`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/array/no-close-table.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/no-close-table.stderr
index b4c3c32d4..b4c3c32d4 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/array/no-close-table.stderr
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/no-close-table.stderr
diff --git a/vendor/toml_edit/tests/fixtures/invalid/array/no-close.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/no-close.stderr
index a4f0a88d3..a4f0a88d3 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/array/no-close.stderr
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/no-close.stderr
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/tables-1.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/tables-1.stderr
new file mode 100644
index 000000000..771b4f6c9
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/tables-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 4, column 1
+ |
+4 | [[fruit]] # Not allowed
+ | ^
+invalid table header
+duplicate key `fruit` in document root
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/tables-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/tables-2.stderr
new file mode 100644
index 000000000..1f88e6efd
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/tables-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 9, column 3
+ |
+9 | [fruit.variety]
+ | ^
+invalid table header
+duplicate key `variety` in table `fruit`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/text-after-array-entries.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/text-after-array-entries.stderr
new file mode 100644
index 000000000..23b5ac27c
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/text-after-array-entries.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 2, column 46
+ |
+2 | "Is there life after an array separator?", No
+ | ^
+invalid array
+expected `]`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/text-before-array-separator.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/text-before-array-separator.stderr
new file mode 100644
index 000000000..9d667990b
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/text-before-array-separator.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 2, column 46
+ |
+2 | "Is there life before an array separator?" No,
+ | ^
+invalid array
+expected `]`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/text-in-array.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/text-in-array.stderr
new file mode 100644
index 000000000..580237357
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/array/text-in-array.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 3, column 3
+ |
+3 | I don't belong,
+ | ^
+invalid array
+expected `]`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/almost-false-with-extra.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/almost-false-with-extra.stderr
new file mode 100644
index 000000000..cd6c1cd5f
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/almost-false-with-extra.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 5
+ |
+1 | a = falsify
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/almost-false.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/almost-false.stderr
new file mode 100644
index 000000000..550020b92
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/almost-false.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 5
+ |
+1 | a = fals
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/almost-true-with-extra.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/almost-true-with-extra.stderr
new file mode 100644
index 000000000..c75c553ee
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/almost-true-with-extra.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 5
+ |
+1 | a = truthy
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/almost-true.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/almost-true.stderr
new file mode 100644
index 000000000..0c97e0076
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/almost-true.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 5
+ |
+1 | a = tru
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/just-f.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/just-f.stderr
new file mode 100644
index 000000000..ed2b9f0e7
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/just-f.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 5
+ |
+1 | a = f
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/just-t.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/just-t.stderr
new file mode 100644
index 000000000..2c8b6a5bd
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/just-t.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 5
+ |
+1 | a = t
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/mixed-case.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/mixed-case.stderr
new file mode 100644
index 000000000..b7c6192dd
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/mixed-case.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 9
+ |
+1 | valid = False
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/starting-same-false.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/starting-same-false.stderr
new file mode 100644
index 000000000..b3320892c
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/starting-same-false.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 10
+ |
+1 | a = falsey
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/starting-same-true.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/starting-same-true.stderr
new file mode 100644
index 000000000..6053103c9
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/starting-same-true.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 9
+ |
+1 | a = truer
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/wrong-case-false.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/wrong-case-false.stderr
new file mode 100644
index 000000000..f67444c40
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/wrong-case-false.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 5
+ |
+1 | b = FALSE
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/wrong-case-true.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/wrong-case-true.stderr
new file mode 100644
index 000000000..82bb6194f
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/bool/wrong-case-true.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 5
+ |
+1 | a = TRUE
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/bare-cr.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/bare-cr.stderr
new file mode 100644
index 000000000..f0062f6f2
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/bare-cr.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 1
+ |
+2 |
+ | ^
+
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/bare-formfeed.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/bare-formfeed.stderr
new file mode 100644
index 000000000..313274a3e
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/bare-formfeed.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 17
+ |
+1 | bare-formfeed =
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/bare-null.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/bare-null.stderr
new file mode 100644
index 000000000..cd5e936ac
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/bare-null.stderr
Binary files differ
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/bare-vertical-tab.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/bare-vertical-tab.stderr
new file mode 100644
index 000000000..c8e01ba04
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/bare-vertical-tab.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 21
+ |
+1 | bare-vertical-tab =
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/comment-cr.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/comment-cr.stderr
new file mode 100644
index 000000000..fb262e547
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/comment-cr.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 45
+ |
+1 | comment-cr = "Carriage return in comment" #
+a=1
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/comment-del.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/comment-del.stderr
new file mode 100644
index 000000000..3d25d68dc
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/comment-del.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 24
+ |
+1 | comment-del = "0x7f" # 
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/comment-lf.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/comment-lf.stderr
new file mode 100644
index 000000000..1613710ed
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/comment-lf.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 25
+ |
+1 | comment-lf = "ctrl-P" # 
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/comment-null.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/comment-null.stderr
new file mode 100644
index 000000000..4955b9deb
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/comment-null.stderr
Binary files differ
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/comment-us.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/comment-us.stderr
new file mode 100644
index 000000000..b48d4f33c
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/comment-us.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 25
+ |
+1 | comment-us = "ctrl-_" # 
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/control.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/control.stderr
new file mode 100644
index 000000000..486aacf1b
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/control.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 9, column 22
+ |
+9 | string-null = "null\x00"
+ | ^
+invalid escape sequence
+expected `b`, `f`, `n`, `r`, `t`, `u`, `U`, `\`, `"`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/multi-del.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/multi-del.stderr
new file mode 100644
index 000000000..62702da7b
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/multi-del.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 20
+ |
+1 | multi-del = """null"""
+ | ^
+invalid multiline basic string
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/multi-lf.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/multi-lf.stderr
new file mode 100644
index 000000000..7b7a13889
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/multi-lf.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 19
+ |
+1 | multi-lf = """null"""
+ | ^
+invalid multiline basic string
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/multi-null.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/multi-null.stderr
new file mode 100644
index 000000000..2d3c33534
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/multi-null.stderr
Binary files differ
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/multi-us.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/multi-us.stderr
new file mode 100644
index 000000000..cf8e73286
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/multi-us.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 19
+ |
+1 | multi-us = """null"""
+ | ^
+invalid multiline basic string
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawmulti-del.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawmulti-del.stderr
new file mode 100644
index 000000000..3beeae099
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawmulti-del.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 23
+ |
+1 | rawmulti-del = '''null'''
+ | ^
+invalid multiline literal string
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawmulti-lf.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawmulti-lf.stderr
new file mode 100644
index 000000000..40782a261
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawmulti-lf.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 22
+ |
+1 | rawmulti-lf = '''null'''
+ | ^
+invalid multiline literal string
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawmulti-null.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawmulti-null.stderr
new file mode 100644
index 000000000..d583ce6f5
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawmulti-null.stderr
Binary files differ
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawmulti-us.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawmulti-us.stderr
new file mode 100644
index 000000000..d413d54f1
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawmulti-us.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 22
+ |
+1 | rawmulti-us = '''null'''
+ | ^
+invalid multiline literal string
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawstring-del.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawstring-del.stderr
new file mode 100644
index 000000000..640ba463b
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawstring-del.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 22
+ |
+1 | rawstring-del = 'null'
+ | ^
+invalid literal string
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawstring-lf.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawstring-lf.stderr
new file mode 100644
index 000000000..e6499b6b9
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawstring-lf.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 21
+ |
+1 | rawstring-lf = 'null'
+ | ^
+invalid literal string
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawstring-null.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawstring-null.stderr
new file mode 100644
index 000000000..9227d090e
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawstring-null.stderr
Binary files differ
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawstring-us.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawstring-us.stderr
new file mode 100644
index 000000000..492cdf743
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/rawstring-us.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 21
+ |
+1 | rawstring-us = 'null'
+ | ^
+invalid literal string
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/string-bs.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/string-bs.stderr
new file mode 100644
index 000000000..556ba1d7b
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/string-bs.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 23
+ |
+1 | string-bs = "backspace"
+ | ^
+invalid basic string
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/string-del.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/string-del.stderr
new file mode 100644
index 000000000..85d7af397
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/string-del.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 19
+ |
+1 | string-del = "null"
+ | ^
+invalid basic string
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/string-lf.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/string-lf.stderr
new file mode 100644
index 000000000..fbf0d1a3f
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/string-lf.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 18
+ |
+1 | string-lf = "null"
+ | ^
+invalid basic string
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/string-null.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/string-null.stderr
new file mode 100644
index 000000000..e9fc0befa
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/string-null.stderr
Binary files differ
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/string-us.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/string-us.stderr
new file mode 100644
index 000000000..8278e570a
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/control/string-us.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 18
+ |
+1 | string-us = "null"
+ | ^
+invalid basic string
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/hour-over.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/hour-over.stderr
new file mode 100644
index 000000000..0e6747da3
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/hour-over.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 15
+ |
+2 | d = 2006-01-01T24:00:00-00:00
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/mday-over.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/mday-over.stderr
new file mode 100644
index 000000000..edb976990
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/mday-over.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 3, column 13
+ |
+3 | d = 2006-01-32T00:00:00-00:00
+ | ^
+invalid date-time
+value is out of range
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/mday-under.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/mday-under.stderr
new file mode 100644
index 000000000..6af20509d
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/mday-under.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 3, column 13
+ |
+3 | d = 2006-01-00T00:00:00-00:00
+ | ^
+invalid date-time
+value is out of range
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/minute-over.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/minute-over.stderr
new file mode 100644
index 000000000..20f3b4bc6
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/minute-over.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 2, column 19
+ |
+2 | d = 2006-01-01T00:60:00-00:00
+ | ^
+invalid date-time
+value is out of range
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/month-over.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/month-over.stderr
new file mode 100644
index 000000000..33334755b
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/month-over.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 2, column 10
+ |
+2 | d = 2006-13-01T00:00:00-00:00
+ | ^
+invalid date-time
+value is out of range
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/month-under.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/month-under.stderr
new file mode 100644
index 000000000..5d0cd0645
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/month-under.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 2, column 10
+ |
+2 | d = 2007-00-01T00:00:00-00:00
+ | ^
+invalid date-time
+value is out of range
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/no-leads-with-milli.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/no-leads-with-milli.stderr
new file mode 100644
index 000000000..df9190dcf
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/no-leads-with-milli.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 22
+ |
+2 | with-milli = 1987-07-5T17:45:00.12Z
+ | ^
+invalid date-time
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/no-leads.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/no-leads.stderr
new file mode 100644
index 000000000..3e0ccf722
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/no-leads.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 17
+ |
+2 | no-leads = 1987-7-05T17:45:00Z
+ | ^
+invalid date-time
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/no-secs.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/no-secs.stderr
new file mode 100644
index 000000000..078d0a001
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/no-secs.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 27
+ |
+2 | no-secs = 1987-07-05T17:45Z
+ | ^
+invalid date-time
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/no-t.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/no-t.stderr
new file mode 100644
index 000000000..15e955463
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/no-t.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 18
+ |
+2 | no-t = 1987-07-0517:45:00Z
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/second-over.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/second-over.stderr
new file mode 100644
index 000000000..186a38dad
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/second-over.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 3, column 22
+ |
+3 | d = 2006-01-01T00:00:61-00:00
+ | ^
+invalid date-time
+value is out of range
diff --git a/vendor/toml_edit/tests/fixtures/invalid/datetime/time-no-leads-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/time-no-leads-2.stderr
index fd77fb297..fd77fb297 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/datetime/time-no-leads-2.stderr
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/time-no-leads-2.stderr
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/time-no-leads.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/time-no-leads.stderr
new file mode 100644
index 000000000..7a9890229
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/time-no-leads.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 6
+ |
+2 | d = 1:32:00
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/datetime/trailing-t.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/trailing-t.stderr
index 061ec2682..061ec2682 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/datetime/trailing-t.stderr
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/datetime/trailing-t.stderr
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-at-end.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-at-end.stderr
new file mode 100644
index 000000000..7a11cf905
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-at-end.stderr
@@ -0,0 +1 @@
+incomplete utf-8 byte sequence from index 241 \ No newline at end of file
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-in-comment.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-in-comment.stderr
new file mode 100644
index 000000000..72d1465ca
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-in-comment.stderr
@@ -0,0 +1 @@
+invalid utf-8 sequence of 1 bytes from index 2 \ No newline at end of file
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-in-multiline-literal.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-in-multiline-literal.stderr
new file mode 100644
index 000000000..0c70f2864
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-in-multiline-literal.stderr
@@ -0,0 +1 @@
+invalid utf-8 sequence of 1 bytes from index 66 \ No newline at end of file
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-in-multiline.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-in-multiline.stderr
new file mode 100644
index 000000000..0c70f2864
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-in-multiline.stderr
@@ -0,0 +1 @@
+invalid utf-8 sequence of 1 bytes from index 66 \ No newline at end of file
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-in-string-literal.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-in-string-literal.stderr
new file mode 100644
index 000000000..9e1a687c6
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-in-string-literal.stderr
@@ -0,0 +1 @@
+invalid utf-8 sequence of 1 bytes from index 64 \ No newline at end of file
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-in-string.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-in-string.stderr
new file mode 100644
index 000000000..9e1a687c6
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bad-utf8-in-string.stderr
@@ -0,0 +1 @@
+invalid utf-8 sequence of 1 bytes from index 64 \ No newline at end of file
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bom-not-at-start-1.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bom-not-at-start-1.stderr
new file mode 100644
index 000000000..8d9d90bfe
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bom-not-at-start-1.stderr
@@ -0,0 +1 @@
+invalid utf-8 sequence of 1 bytes from index 17 \ No newline at end of file
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bom-not-at-start-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bom-not-at-start-2.stderr
new file mode 100644
index 000000000..8fce4086e
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/bom-not-at-start-2.stderr
@@ -0,0 +1 @@
+invalid utf-8 sequence of 1 bytes from index 18 \ No newline at end of file
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/utf16-bom.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/utf16-bom.stderr
new file mode 100644
index 000000000..b1b9eedac
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/utf16-bom.stderr
@@ -0,0 +1 @@
+invalid utf-8 sequence of 1 bytes from index 0 \ No newline at end of file
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/utf16.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/utf16.stderr
new file mode 100644
index 000000000..688616546
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/encoding/utf16.stderr
Binary files differ
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/double-point-1.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/double-point-1.stderr
new file mode 100644
index 000000000..390520f7d
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/double-point-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 20
+ |
+1 | double-point-1 = 0..1
+ | ^
+invalid floating-point number
+expected digit
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/double-point-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/double-point-2.stderr
new file mode 100644
index 000000000..a020a4846
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/double-point-2.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 21
+ |
+1 | double-point-2 = 0.1.2
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-double-e-1.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-double-e-1.stderr
new file mode 100644
index 000000000..54118395c
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-double-e-1.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 20
+ |
+1 | exp-double-e-1 = 1ee2
+ | ^
+invalid floating-point number
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-double-e-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-double-e-2.stderr
new file mode 100644
index 000000000..1b99d374d
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-double-e-2.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 21
+ |
+1 | exp-double-e-2 = 1e2e3
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-double-us.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-double-us.stderr
new file mode 100644
index 000000000..6a66e43d6
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-double-us.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 19
+ |
+1 | exp-double-us = 1e__23
+ | ^
+invalid floating-point number
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-leading-us.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-leading-us.stderr
new file mode 100644
index 000000000..769668690
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-leading-us.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 20
+ |
+1 | exp-leading-us = 1e_23
+ | ^
+invalid floating-point number
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-point-1.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-point-1.stderr
new file mode 100644
index 000000000..87f0a0b2e
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-point-1.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 18
+ |
+1 | exp-point-1 = 1e2.3
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-point-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-point-2.stderr
new file mode 100644
index 000000000..808905064
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-point-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 17
+ |
+1 | exp-point-2 = 1.e2
+ | ^
+invalid floating-point number
+expected digit
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-trailing-us.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-trailing-us.stderr
new file mode 100644
index 000000000..9a2818493
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/exp-trailing-us.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 21
+ |
+1 | exp-trailing-us = 1e_23_
+ | ^
+invalid floating-point number
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/float.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/float.stderr
new file mode 100644
index 000000000..627650f81
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/float.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 17
+ |
+1 | leading-zero = 03.14
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/inf-incomplete-1.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/inf-incomplete-1.stderr
new file mode 100644
index 000000000..99fe59b32
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/inf-incomplete-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 20
+ |
+1 | inf-incomplete-1 = in
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/inf-incomplete-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/inf-incomplete-2.stderr
new file mode 100644
index 000000000..38ef4cf4b
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/inf-incomplete-2.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 21
+ |
+1 | inf-incomplete-2 = +in
+ | ^
+invalid integer
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/inf-incomplete-3.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/inf-incomplete-3.stderr
new file mode 100644
index 000000000..af66478ec
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/inf-incomplete-3.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 21
+ |
+1 | inf-incomplete-3 = -in
+ | ^
+invalid integer
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/inf_underscore.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/inf_underscore.stderr
new file mode 100644
index 000000000..825484291
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/inf_underscore.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 18
+ |
+1 | inf_underscore = in_f
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-point-neg.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-point-neg.stderr
new file mode 100644
index 000000000..c46efe103
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-point-neg.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 22
+ |
+1 | leading-point-neg = -.12345
+ | ^
+invalid integer
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-point-plus.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-point-plus.stderr
new file mode 100644
index 000000000..a643a7eef
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-point-plus.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 23
+ |
+1 | leading-point-plus = +.12345
+ | ^
+invalid integer
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-point.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-point.stderr
new file mode 100644
index 000000000..65e66b0cc
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-point.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 17
+ |
+1 | leading-point = .12345
+ | ^
+invalid floating-point number
+expected leading digit
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-us.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-us.stderr
new file mode 100644
index 000000000..e6d8e5235
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-us.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 14
+ |
+1 | leading-us = _1.2
+ | ^
+invalid integer
+expected leading digit
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-zero-neg.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-zero-neg.stderr
new file mode 100644
index 000000000..a60ec4da5
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-zero-neg.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 22
+ |
+1 | leading-zero-neg = -03.14
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-zero-plus.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-zero-plus.stderr
new file mode 100644
index 000000000..f7c612b16
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-zero-plus.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 23
+ |
+1 | leading-zero-plus = +03.14
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-zero.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-zero.stderr
new file mode 100644
index 000000000..627650f81
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/leading-zero.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 17
+ |
+1 | leading-zero = 03.14
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/nan-incomplete-1.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/nan-incomplete-1.stderr
new file mode 100644
index 000000000..36faeb0be
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/nan-incomplete-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 20
+ |
+1 | nan-incomplete-1 = na
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/nan-incomplete-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/nan-incomplete-2.stderr
new file mode 100644
index 000000000..38e01516c
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/nan-incomplete-2.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 21
+ |
+1 | nan-incomplete-2 = +na
+ | ^
+invalid integer
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/nan-incomplete-3.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/nan-incomplete-3.stderr
new file mode 100644
index 000000000..e03ff4b92
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/nan-incomplete-3.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 21
+ |
+1 | nan-incomplete-3 = -na
+ | ^
+invalid integer
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/nan_underscore.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/nan_underscore.stderr
new file mode 100644
index 000000000..f6dead338
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/nan_underscore.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 18
+ |
+1 | nan_underscore = na_n
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/trailing-point-min.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/trailing-point-min.stderr
new file mode 100644
index 000000000..41f4ad9ce
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/trailing-point-min.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 25
+ |
+1 | trailing-point-min = -1.
+ | ^
+invalid floating-point number
+expected digit
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/trailing-point-plus.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/trailing-point-plus.stderr
new file mode 100644
index 000000000..9927935d0
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/trailing-point-plus.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 26
+ |
+1 | trailing-point-plus = +1.
+ | ^
+invalid floating-point number
+expected digit
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/trailing-point.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/trailing-point.stderr
new file mode 100644
index 000000000..bd345d251
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/trailing-point.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 20
+ |
+1 | trailing-point = 1.
+ | ^
+invalid floating-point number
+expected digit
diff --git a/vendor/toml_edit/tests/fixtures/invalid/float/trailing-us-exp.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/trailing-us-exp.stderr
index 811f951e3..811f951e3 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/float/trailing-us-exp.stderr
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/trailing-us-exp.stderr
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/trailing-us.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/trailing-us.stderr
new file mode 100644
index 000000000..aa4f28897
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/trailing-us.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 19
+ |
+1 | trailing-us = 1.2_
+ | ^
+invalid floating-point number
+expected digit, digit
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/us-after-point.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/us-after-point.stderr
new file mode 100644
index 000000000..d93821dc5
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/us-after-point.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 20
+ |
+1 | us-after-point = 1._2
+ | ^
+invalid floating-point number
+expected digit
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/us-before-point.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/us-before-point.stderr
new file mode 100644
index 000000000..109d8f71a
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/float/us-before-point.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 21
+ |
+1 | us-before-point = 1_.2
+ | ^
+invalid integer
+expected digit
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/add.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/add.stderr
index 4108142dc..4108142dc 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/inline-table/add.stderr
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/add.stderr
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/double-comma.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/double-comma.stderr
new file mode 100644
index 000000000..ab4772b5a
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/double-comma.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 9
+ |
+1 | t = {x=3,,y=4}
+ | ^
+invalid inline table
+expected `}`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/duplicate-key.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/duplicate-key.stderr
index acee967ac..acee967ac 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/inline-table/duplicate-key.stderr
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/duplicate-key.stderr
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/empty.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/empty.stderr
index 0fcfd34f6..0fcfd34f6 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/inline-table/empty.stderr
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/empty.stderr
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/linebreak-1.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/linebreak-1.stderr
new file mode 100644
index 000000000..ed67c3ac7
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/linebreak-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 3, column 18
+ |
+3 | simple = { a = 1
+ | ^
+invalid inline table
+expected `}`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/linebreak-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/linebreak-2.stderr
new file mode 100644
index 000000000..a81575846
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/linebreak-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 9
+ |
+1 | t = {a=1,
+ | ^
+invalid inline table
+expected `}`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/linebreak-3.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/linebreak-3.stderr
new file mode 100644
index 000000000..4aff61b76
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/linebreak-3.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 9
+ |
+1 | t = {a=1
+ | ^
+invalid inline table
+expected `}`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/linebreak-4.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/linebreak-4.stderr
new file mode 100644
index 000000000..658456b86
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/linebreak-4.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 14
+ |
+1 | json_like = {
+ | ^
+invalid inline table
+expected `}`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/no-comma.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/no-comma.stderr
index 89552182f..89552182f 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/inline-table/no-comma.stderr
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/no-comma.stderr
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/overwrite.stderr
index 5c48ee223..5c48ee223 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite.stderr
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/overwrite.stderr
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/trailing-comma.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/trailing-comma.stderr
new file mode 100644
index 000000000..b17fca503
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/inline-table/trailing-comma.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 3, column 18
+ |
+3 | abc = { abc = 123, }
+ | ^
+invalid inline table
+expected `}`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/capital-bin.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/capital-bin.stderr
new file mode 100644
index 000000000..333ba92f8
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/capital-bin.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 16
+ |
+1 | capital-bin = 0B0
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/capital-hex.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/capital-hex.stderr
new file mode 100644
index 000000000..ac064f9c4
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/capital-hex.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 16
+ |
+1 | capital-hex = 0X1
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/capital-oct.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/capital-oct.stderr
new file mode 100644
index 000000000..774a8f2d6
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/capital-oct.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 16
+ |
+1 | capital-oct = 0O0
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/double-sign-nex.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/double-sign-nex.stderr
new file mode 100644
index 000000000..542ba06bc
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/double-sign-nex.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 20
+ |
+1 | double-sign-nex = --99
+ | ^
+invalid integer
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/double-sign-plus.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/double-sign-plus.stderr
new file mode 100644
index 000000000..8f8bad0fd
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/double-sign-plus.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 21
+ |
+1 | double-sign-plus = ++99
+ | ^
+invalid integer
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/double-us.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/double-us.stderr
new file mode 100644
index 000000000..e229868b0
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/double-us.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 15
+ |
+1 | double-us = 1__23
+ | ^
+invalid integer
+expected digit
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/incomplete-bin.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/incomplete-bin.stderr
new file mode 100644
index 000000000..13d7b46ff
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/incomplete-bin.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 20
+ |
+1 | incomplete-bin = 0b
+ | ^
+invalid binary integer
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/incomplete-hex.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/incomplete-hex.stderr
new file mode 100644
index 000000000..ea5073a56
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/incomplete-hex.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 20
+ |
+1 | incomplete-hex = 0x
+ | ^
+invalid hexadecimal integer
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/incomplete-oct.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/incomplete-oct.stderr
new file mode 100644
index 000000000..46d51c189
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/incomplete-oct.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 20
+ |
+1 | incomplete-oct = 0o
+ | ^
+invalid octal integer
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/integer.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/integer.stderr
new file mode 100644
index 000000000..f058a2d9e
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/integer.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 19
+ |
+1 | leading-zero-1 = 01
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/invalid-bin.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/invalid-bin.stderr
new file mode 100644
index 000000000..62c00fb28
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/invalid-bin.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 20
+ |
+1 | invalid-bin = 0b0012
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/invalid-hex.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/invalid-hex.stderr
new file mode 100644
index 000000000..29b112b25
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/invalid-hex.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 20
+ |
+1 | invalid-hex = 0xaafz
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/invalid-oct.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/invalid-oct.stderr
new file mode 100644
index 000000000..f3e1ada9b
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/invalid-oct.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 19
+ |
+1 | invalid-oct = 0o778
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-us-bin.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-us-bin.stderr
new file mode 100644
index 000000000..c893e7547
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-us-bin.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 18
+ |
+1 | leading-us-bin = _0o1
+ | ^
+invalid integer
+expected leading digit
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-us-hex.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-us-hex.stderr
new file mode 100644
index 000000000..12eb8e6f5
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-us-hex.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 18
+ |
+1 | leading-us-hex = _0o1
+ | ^
+invalid integer
+expected leading digit
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-us-oct.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-us-oct.stderr
new file mode 100644
index 000000000..c670551a3
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-us-oct.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 18
+ |
+1 | leading-us-oct = _0o1
+ | ^
+invalid integer
+expected leading digit
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-us.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-us.stderr
new file mode 100644
index 000000000..f53275c0b
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-us.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 14
+ |
+1 | leading-us = _123
+ | ^
+invalid integer
+expected leading digit
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-1.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-1.stderr
new file mode 100644
index 000000000..f058a2d9e
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-1.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 19
+ |
+1 | leading-zero-1 = 01
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-2.stderr
new file mode 100644
index 000000000..082381464
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-2.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 19
+ |
+1 | leading-zero-2 = 00
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-3.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-3.stderr
new file mode 100644
index 000000000..7b0e481d0
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-3.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 19
+ |
+1 | leading-zero-3 = 0_0
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-sign-1.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-sign-1.stderr
new file mode 100644
index 000000000..384c9d402
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-sign-1.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 25
+ |
+1 | leading-zero-sign-1 = -01
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-sign-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-sign-2.stderr
new file mode 100644
index 000000000..795c3297f
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-sign-2.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 25
+ |
+1 | leading-zero-sign-2 = +01
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-sign-3.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-sign-3.stderr
new file mode 100644
index 000000000..639aef5f1
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/leading-zero-sign-3.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 25
+ |
+1 | leading-zero-sign-3 = +0_1
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/negative-bin.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/negative-bin.stderr
new file mode 100644
index 000000000..7122d38f8
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/negative-bin.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 18
+ |
+1 | negative-bin = -0b11010110
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/negative-hex.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/negative-hex.stderr
new file mode 100644
index 000000000..0c7e58421
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/negative-hex.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 18
+ |
+1 | negative-hex = -0xff
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/negative-oct.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/negative-oct.stderr
new file mode 100644
index 000000000..fcf31407d
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/negative-oct.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 18
+ |
+1 | negative-oct = -0o99
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/positive-bin.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/positive-bin.stderr
new file mode 100644
index 000000000..bc5dc4ed3
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/positive-bin.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 18
+ |
+1 | positive-bin = +0b11010110
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/positive-hex.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/positive-hex.stderr
new file mode 100644
index 000000000..f57111431
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/positive-hex.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 18
+ |
+1 | positive-hex = +0xff
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/positive-oct.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/positive-oct.stderr
new file mode 100644
index 000000000..cc0946689
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/positive-oct.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 18
+ |
+1 | positive-oct = +0o99
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/text-after-integer.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/text-after-integer.stderr
new file mode 100644
index 000000000..0405cb410
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/text-after-integer.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 13
+ |
+1 | answer = 42 the ultimate answer?
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/trailing-us-bin.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/trailing-us-bin.stderr
new file mode 100644
index 000000000..7042a6e39
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/trailing-us-bin.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 23
+ |
+1 | trailing-us-bin = 0b1_
+ | ^
+invalid binary integer
+expected digit
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/trailing-us-hex.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/trailing-us-hex.stderr
new file mode 100644
index 000000000..9526a9489
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/trailing-us-hex.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 23
+ |
+1 | trailing-us-hex = 0x1_
+ | ^
+invalid hexadecimal integer
+expected digit
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/trailing-us-oct.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/trailing-us-oct.stderr
new file mode 100644
index 000000000..bb4330d0e
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/trailing-us-oct.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 23
+ |
+1 | trailing-us-oct = 0o1_
+ | ^
+invalid octal integer
+expected digit
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/trailing-us.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/trailing-us.stderr
new file mode 100644
index 000000000..f8c901ef4
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/trailing-us.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 19
+ |
+1 | trailing-us = 123_
+ | ^
+invalid integer
+expected digit
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/us-after-bin.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/us-after-bin.stderr
new file mode 100644
index 000000000..1620bc6bc
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/us-after-bin.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 18
+ |
+1 | us-after-bin = 0b_1
+ | ^
+invalid binary integer
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/us-after-hex.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/us-after-hex.stderr
new file mode 100644
index 000000000..e8283a070
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/us-after-hex.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 18
+ |
+1 | us-after-hex = 0x_1
+ | ^
+invalid hexadecimal integer
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/us-after-oct.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/us-after-oct.stderr
new file mode 100644
index 000000000..e6884d0c6
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/integer/us-after-oct.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 18
+ |
+1 | us-after-oct = 0o_1
+ | ^
+invalid octal integer
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/after-array.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/after-array.stderr
new file mode 100644
index 000000000..861f82d13
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/after-array.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 14
+ |
+1 | [[agencies]] owner = "S Cjelli"
+ | ^
+invalid table header
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/after-table.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/after-table.stderr
new file mode 100644
index 000000000..499a43012
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/after-table.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 9
+ |
+1 | [error] this = "should not be here"
+ | ^
+invalid table header
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/after-value.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/after-value.stderr
new file mode 100644
index 000000000..9852ec8d0
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/after-value.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 15
+ |
+1 | first = "Tom" last = "Preston-Werner" # INVALID
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/bare-invalid-character.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/bare-invalid-character.stderr
new file mode 100644
index 000000000..0ba21fd81
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/bare-invalid-character.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 5
+ |
+1 | bare!key = 123
+ | ^
+expected `.`, `=`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/key/dotted-redefine-table.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/dotted-redefine-table.stderr
index 3a2b8d5d9..3a2b8d5d9 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/key/dotted-redefine-table.stderr
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/dotted-redefine-table.stderr
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/duplicate-keys.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/duplicate-keys.stderr
new file mode 100644
index 000000000..74149f851
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/duplicate-keys.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 1
+ |
+2 | dupe = true
+ | ^
+duplicate key `dupe` in document root
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/duplicate.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/duplicate.stderr
new file mode 100644
index 000000000..8c7d7b7ea
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/duplicate.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 3, column 1
+ |
+3 | name = "Pradyun"
+ | ^
+duplicate key `name` in document root
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/empty.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/empty.stderr
new file mode 100644
index 000000000..b859159f8
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/empty.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 2
+ |
+1 | = 1
+ | ^
+invalid key
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/escape.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/escape.stderr
new file mode 100644
index 000000000..2a4ee3f72
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/escape.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 1
+ |
+1 | \u00c0 = "latin capital letter A with grave"
+ | ^
+invalid key
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/hash.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/hash.stderr
new file mode 100644
index 000000000..15d8048ba
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/hash.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 2
+ |
+1 | a# = 1
+ | ^
+expected `.`, `=`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/multiline.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/multiline.stderr
new file mode 100644
index 000000000..b4241ee9f
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/multiline.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 3
+ |
+1 | """long
+ | ^
+expected `.`, `=`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/newline.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/newline.stderr
new file mode 100644
index 000000000..141932e42
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/newline.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 8
+ |
+1 | barekey
+ | ^
+expected `.`, `=`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/no-eol.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/no-eol.stderr
new file mode 100644
index 000000000..fc3c01ebf
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/no-eol.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 7
+ |
+1 | a = 1 b = 2
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/open-bracket.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/open-bracket.stderr
new file mode 100644
index 000000000..eee8cba03
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/open-bracket.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 6
+ |
+1 | [abc = 1
+ | ^
+invalid table header
+expected `.`, `]`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/partial-quoted.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/partial-quoted.stderr
new file mode 100644
index 000000000..e0a7c32ba
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/partial-quoted.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 8
+ |
+1 | partial"quoted" = 5
+ | ^
+expected `.`, `=`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/quoted-unclosed-1.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/quoted-unclosed-1.stderr
new file mode 100644
index 000000000..6f15232e8
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/quoted-unclosed-1.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 9
+ |
+1 | "key = x
+ | ^
+invalid basic string
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/quoted-unclosed-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/quoted-unclosed-2.stderr
new file mode 100644
index 000000000..f3fdc7f02
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/quoted-unclosed-2.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 5
+ |
+1 | "key
+ | ^
+invalid basic string
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/single-open-bracket.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/single-open-bracket.stderr
new file mode 100644
index 000000000..022f1fabc
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/single-open-bracket.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 2
+ |
+1 | [
+ | ^
+invalid key
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/space.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/space.stderr
new file mode 100644
index 000000000..cd3258b55
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/space.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 3
+ |
+1 | a b = 1
+ | ^
+expected `.`, `=`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/special-character.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/special-character.stderr
new file mode 100644
index 000000000..7ada2f21b
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/special-character.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 1
+ |
+1 | μ = "greek small letter mu"
+ | ^
+invalid key
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/start-bracket.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/start-bracket.stderr
new file mode 100644
index 000000000..43f937b25
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/start-bracket.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 2, column 6
+ |
+2 | [xyz = 5
+ | ^
+invalid table header
+expected `.`, `]`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/start-dot.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/start-dot.stderr
new file mode 100644
index 000000000..c71f0cf53
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/start-dot.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 1
+ |
+1 | .key = 1
+ | ^
+invalid key
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/two-equals.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/two-equals.stderr
new file mode 100644
index 000000000..2f92886e1
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/two-equals.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 6
+ |
+1 | key= = 1
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/two-equals2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/two-equals2.stderr
new file mode 100644
index 000000000..f2adb1f33
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/two-equals2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 3
+ |
+1 | a==1
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/two-equals3.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/two-equals3.stderr
new file mode 100644
index 000000000..dbee16973
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/two-equals3.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 3
+ |
+1 | a=b=1
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/without-value-1.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/without-value-1.stderr
new file mode 100644
index 000000000..2ddb1240a
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/without-value-1.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 4
+ |
+1 | key
+ | ^
+expected `.`, `=`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/without-value-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/without-value-2.stderr
new file mode 100644
index 000000000..a3f280f72
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/without-value-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 7
+ |
+1 | key =
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/without-value-3.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/without-value-3.stderr
new file mode 100644
index 000000000..a6ca6ffd6
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/without-value-3.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 6
+ |
+1 | "key"
+ | ^
+expected `.`, `=`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/without-value-4.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/without-value-4.stderr
new file mode 100644
index 000000000..c14af0c30
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/key/without-value-4.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 9
+ |
+1 | "key" =
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/inline-table-2-0.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/inline-table-2-0.stderr
new file mode 100644
index 000000000..7fed2698e
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/inline-table-2-0.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 3, column 1
+ |
+3 | type.edible = false # INVALID
+ | ^
+dotted key `type` attempted to extend non-table type (inline table)
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/inline-table-3-0.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/inline-table-3-0.stderr
new file mode 100644
index 000000000..45ba696b9
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/inline-table-3-0.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 3, column 1
+ |
+3 | type = { edible = false } # INVALID
+ | ^
+duplicate key `type` in table `product`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/key-value-pair-1.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/key-value-pair-1.stderr
new file mode 100644
index 000000000..ba765a823
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/key-value-pair-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 7
+ |
+1 | key = # INVALID
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/keys-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/keys-2.stderr
new file mode 100644
index 000000000..bdbcce45b
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/keys-2.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 1
+ |
+1 | = "no key name" # INVALID
+ | ^
+invalid key
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/string-4-0.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/string-4-0.stderr
new file mode 100644
index 000000000..e82601dd7
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/string-4-0.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 46
+ |
+2 | str5 = """Here are three quotation marks: """.""" # INVALID
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/string-7-0.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/string-7-0.stderr
new file mode 100644
index 000000000..7a928e190
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/string-7-0.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 3, column 48
+ |
+3 | apos15 = '''Here are fifteen apostrophes: '''''''''''''''''' # INVALID
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/table-9-0.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/table-9-0.stderr
new file mode 100644
index 000000000..a2e1d4991
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/table-9-0.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 5, column 1
+ |
+5 | [fruit.apple] # INVALID
+ | ^
+invalid table header
+duplicate key `apple` in table `fruit`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/table-9-1.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/table-9-1.stderr
new file mode 100644
index 000000000..78dea2144
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/spec/table-9-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 6, column 1
+ |
+6 | [fruit.apple.taste] # INVALID
+ | ^
+invalid table header
+duplicate key `taste` in table `fruit.apple`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-byte-escape.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-byte-escape.stderr
new file mode 100644
index 000000000..6d88863e2
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-byte-escape.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 14
+ |
+1 | naughty = "\xAg"
+ | ^
+invalid escape sequence
+expected `b`, `f`, `n`, `r`, `t`, `u`, `U`, `\`, `"`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/bad-codepoint.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-codepoint.stderr
index 4061c79cc..4061c79cc 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/string/bad-codepoint.stderr
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-codepoint.stderr
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-concat.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-concat.stderr
new file mode 100644
index 000000000..a7346a40e
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-concat.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 21
+ |
+1 | no_concat = "first" "second"
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-escape-1.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-escape-1.stderr
new file mode 100644
index 000000000..02cb48310
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-escape-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 43
+ |
+1 | invalid-escape = "This string has a bad \a escape character."
+ | ^
+invalid escape sequence
+expected `b`, `f`, `n`, `r`, `t`, `u`, `U`, `\`, `"`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-escape-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-escape-2.stderr
new file mode 100644
index 000000000..57f0acef5
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-escape-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 43
+ |
+1 | invalid-escape = "This string has a bad \ escape character."
+ | ^
+invalid escape sequence
+expected `b`, `f`, `n`, `r`, `t`, `u`, `U`, `\`, `"`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/bad-hex-esc.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-hex-esc-1.stderr
index 5d5577fa5..5d5577fa5 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/string/bad-hex-esc.stderr
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-hex-esc-1.stderr
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-hex-esc-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-hex-esc-2.stderr
new file mode 100644
index 000000000..5a40ad444
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-hex-esc-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 20
+ |
+1 | bad-hex-esc-2 = "\xG0"
+ | ^
+invalid escape sequence
+expected `b`, `f`, `n`, `r`, `t`, `u`, `U`, `\`, `"`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-hex-esc-3.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-hex-esc-3.stderr
new file mode 100644
index 000000000..70e1183fd
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-hex-esc-3.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 20
+ |
+1 | bad-hex-esc-3 = "\x"
+ | ^
+invalid escape sequence
+expected `b`, `f`, `n`, `r`, `t`, `u`, `U`, `\`, `"`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-hex-esc-4.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-hex-esc-4.stderr
new file mode 100644
index 000000000..df028ee8b
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-hex-esc-4.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 20
+ |
+1 | bad-hex-esc-4 = "\x 50"
+ | ^
+invalid escape sequence
+expected `b`, `f`, `n`, `r`, `t`, `u`, `U`, `\`, `"`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-hex-esc-5.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-hex-esc-5.stderr
new file mode 100644
index 000000000..4b5cd33d3
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-hex-esc-5.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 20
+ |
+1 | bad-hex-esc-5 = "\x 50"
+ | ^
+invalid escape sequence
+expected `b`, `f`, `n`, `r`, `t`, `u`, `U`, `\`, `"`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-hex-esc.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-hex-esc.stderr
new file mode 100644
index 000000000..5d5577fa5
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-hex-esc.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 20
+ |
+1 | bad-hex-esc-1 = "\x0g"
+ | ^
+invalid escape sequence
+expected `b`, `f`, `n`, `r`, `t`, `u`, `U`, `\`, `"`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-multiline.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-multiline.stderr
new file mode 100644
index 000000000..f88e0dd04
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-multiline.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 20
+ |
+1 | multi = "first line
+ | ^
+invalid basic string
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-slash-escape.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-slash-escape.stderr
new file mode 100644
index 000000000..19bd111b2
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-slash-escape.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 43
+ |
+1 | invalid-escape = "This string has a bad \/ escape character."
+ | ^
+invalid escape sequence
+expected `b`, `f`, `n`, `r`, `t`, `u`, `U`, `\`, `"`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-uni-esc-1.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-uni-esc-1.stderr
new file mode 100644
index 000000000..a9e439bff
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-uni-esc-1.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 13
+ |
+1 | str = "val\ue"
+ | ^
+invalid unicode 4-digit hex code
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-uni-esc-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-uni-esc-2.stderr
new file mode 100644
index 000000000..87c8681b9
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-uni-esc-2.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 13
+ |
+1 | str = "val\Ux"
+ | ^
+invalid unicode 8-digit hex code
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-uni-esc-3.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-uni-esc-3.stderr
new file mode 100644
index 000000000..61f8dede0
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-uni-esc-3.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 13
+ |
+1 | str = "val\U0000000"
+ | ^
+invalid unicode 8-digit hex code
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-uni-esc-4.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-uni-esc-4.stderr
new file mode 100644
index 000000000..1a781d999
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-uni-esc-4.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 13
+ |
+1 | str = "val\U0000"
+ | ^
+invalid unicode 8-digit hex code
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-uni-esc-5.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-uni-esc-5.stderr
new file mode 100644
index 000000000..88773ca85
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/bad-uni-esc-5.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 13
+ |
+1 | str = "val\Ugggggggg"
+ | ^
+invalid unicode 8-digit hex code
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-byte-escapes.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-byte-escapes.stderr
new file mode 100644
index 000000000..64f8d8654
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-byte-escapes.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 13
+ |
+1 | answer = "\x33"
+ | ^
+invalid escape sequence
+expected `b`, `f`, `n`, `r`, `t`, `u`, `U`, `\`, `"`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-multiline-out-of-range-unicode-escape-1.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-multiline-out-of-range-unicode-escape-1.stderr
new file mode 100644
index 000000000..c4be6a6c8
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-multiline-out-of-range-unicode-escape-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 10
+ |
+1 | a = """\UFFFFFFFF"""
+ | ^
+invalid unicode 8-digit hex code
+value is out of range
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-multiline-out-of-range-unicode-escape-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-multiline-out-of-range-unicode-escape-2.stderr
new file mode 100644
index 000000000..f034203f8
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-multiline-out-of-range-unicode-escape-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 10
+ |
+1 | a = """\U00D80000"""
+ | ^
+invalid unicode 8-digit hex code
+value is out of range
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-multiline-quotes.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-multiline-quotes.stderr
new file mode 100644
index 000000000..7a1600898
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-multiline-quotes.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 46
+ |
+1 | str5 = """Here are three quotation marks: """."""
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-multiline-unknown-escape.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-multiline-unknown-escape.stderr
new file mode 100644
index 000000000..d2462bf13
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-multiline-unknown-escape.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 10
+ |
+1 | a = """\@"""
+ | ^
+invalid escape sequence
+expected `b`, `f`, `n`, `r`, `t`, `u`, `U`, `\`, `"`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-out-of-range-unicode-escape-1.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-out-of-range-unicode-escape-1.stderr
new file mode 100644
index 000000000..806e6e786
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-out-of-range-unicode-escape-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 8
+ |
+1 | a = "\UFFFFFFFF"
+ | ^
+invalid unicode 8-digit hex code
+value is out of range
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-out-of-range-unicode-escape-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-out-of-range-unicode-escape-2.stderr
new file mode 100644
index 000000000..69396c669
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-out-of-range-unicode-escape-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 8
+ |
+1 | a = "\U00D80000"
+ | ^
+invalid unicode 8-digit hex code
+value is out of range
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-unknown-escape.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-unknown-escape.stderr
new file mode 100644
index 000000000..a7fbb254e
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/basic-unknown-escape.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 8
+ |
+1 | a = "\@"
+ | ^
+invalid escape sequence
+expected `b`, `f`, `n`, `r`, `t`, `u`, `U`, `\`, `"`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/literal-multiline-quotes-1.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/literal-multiline-quotes-1.stderr
new file mode 100644
index 000000000..ed65b3342
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/literal-multiline-quotes-1.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 28
+ |
+1 | a = '''6 apostrophes: ''''''
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/literal-multiline-quotes-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/literal-multiline-quotes-2.stderr
new file mode 100644
index 000000000..3fbb44acd
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/literal-multiline-quotes-2.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 29
+ |
+1 | a = '''15 apostrophes: ''''''''''''''''''
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/missing-quotes.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/missing-quotes.stderr
new file mode 100644
index 000000000..3558aab56
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/missing-quotes.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 8
+ |
+1 | name = value
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-bad-escape-1.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-bad-escape-1.stderr
new file mode 100644
index 000000000..1a3b24baf
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-bad-escape-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 11
+ |
+1 | k = """t\a"""
+ | ^
+invalid escape sequence
+expected `b`, `f`, `n`, `r`, `t`, `u`, `U`, `\`, `"`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-bad-escape-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-bad-escape-2.stderr
new file mode 100644
index 000000000..db17685ce
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-bad-escape-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 2, column 11
+ |
+2 | k = """t\ t"""
+ | ^
+invalid escape sequence
+expected `b`, `f`, `n`, `r`, `t`, `u`, `U`, `\`, `"`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-bad-escape-3.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-bad-escape-3.stderr
new file mode 100644
index 000000000..646aa4d30
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-bad-escape-3.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 2, column 11
+ |
+2 | k = """t\ """
+ | ^
+invalid escape sequence
+expected `b`, `f`, `n`, `r`, `t`, `u`, `U`, `\`, `"`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/multiline-escape-space.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-escape-space.stderr
index 4b3c32b98..4b3c32b98 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/string/multiline-escape-space.stderr
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-escape-space.stderr
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-no-close-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-no-close-2.stderr
new file mode 100644
index 000000000..be5420add
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-no-close-2.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 7
+ |
+1 | x="""
+ | ^
+invalid multiline basic string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/multiline-no-close.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-no-close.stderr
index 99e967a46..99e967a46 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/string/multiline-no-close.stderr
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-no-close.stderr
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-quotes-1.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-quotes-1.stderr
new file mode 100644
index 000000000..c3cf4c6e5
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/multiline-quotes-1.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 23
+ |
+1 | a = """6 quotes: """"""
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/no-close.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/no-close.stderr
index f23223d3f..f23223d3f 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/string/no-close.stderr
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/no-close.stderr
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/text-after-string.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/text-after-string.stderr
new file mode 100644
index 000000000..f05e33b53
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/text-after-string.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 41
+ |
+1 | string = "Is there life after strings?" No.
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/wrong-close.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/wrong-close.stderr
new file mode 100644
index 000000000..9a785e050
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/string/wrong-close.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 39
+ |
+1 | bad-ending-quote = "double and single'
+ | ^
+invalid basic string
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/append-with-dotted-keys-1.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/append-with-dotted-keys-1.stderr
new file mode 100644
index 000000000..54ee50e1d
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/append-with-dotted-keys-1.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 17, column 3
+ |
+17 | b.c.t = "Using dotted keys to add to [a.b.c] after explicitly defining it above is not allowed"
+ | ^
+duplicate key `c`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/append-with-dotted-keys-2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/append-with-dotted-keys-2.stderr
new file mode 100644
index 000000000..7c665f97b
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/append-with-dotted-keys-2.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 8, column 3
+ |
+8 | b.c.d.k.t = "Using dotted keys to add to [a.b.c.d] after explicitly defining it above is not allowed"
+ | ^
+duplicate key `d`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/array-empty.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/array-empty.stderr
new file mode 100644
index 000000000..ad2440ac8
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/array-empty.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 3
+ |
+1 | [[]]
+ | ^
+invalid key
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/array-implicit.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/array-implicit.stderr
new file mode 100644
index 000000000..ed1ab7fea
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/array-implicit.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 13, column 1
+ |
+13 | [[albums]]
+ | ^
+invalid table header
+duplicate key `albums` in document root
diff --git a/vendor/toml_edit/tests/fixtures/invalid/table/array-missing-bracket.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/array-missing-bracket.stderr
index ed370ef85..ed370ef85 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/table/array-missing-bracket.stderr
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/array-missing-bracket.stderr
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate-key-dotted-table.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate-key-dotted-table.stderr
new file mode 100644
index 000000000..3cbc0a320
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate-key-dotted-table.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 4, column 1
+ |
+4 | [fruit.apple] # INVALID
+ | ^
+invalid table header
+duplicate key `apple` in table `fruit`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate-key-dotted-table2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate-key-dotted-table2.stderr
new file mode 100644
index 000000000..c5ab1eb51
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate-key-dotted-table2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 4, column 1
+ |
+4 | [fruit.apple.taste] # INVALID
+ | ^
+invalid table header
+duplicate key `taste` in table `fruit.apple`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate-key-table.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate-key-table.stderr
new file mode 100644
index 000000000..bc76d9ce0
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate-key-table.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 4, column 1
+ |
+4 | [fruit.type]
+ | ^
+invalid table header
+duplicate key `type` in table `fruit`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate-table-array.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate-table-array.stderr
new file mode 100644
index 000000000..536fdc3ba
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate-table-array.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 2, column 1
+ |
+2 | [[tbl]]
+ | ^
+invalid table header
+duplicate key `tbl` in document root
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate-table-array2.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate-table-array2.stderr
new file mode 100644
index 000000000..81c27fba1
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate-table-array2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 2, column 1
+ |
+2 | [tbl]
+ | ^
+invalid table header
+duplicate key `tbl` in document root
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate.stderr
new file mode 100644
index 000000000..81bf4ed03
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/duplicate.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 4, column 1
+ |
+4 | [a]
+ | ^
+invalid table header
+duplicate key `a` in document root
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/empty-implicit-table.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/empty-implicit-table.stderr
new file mode 100644
index 000000000..a7f7444e5
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/empty-implicit-table.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 9
+ |
+1 | [naughty..naughty]
+ | ^
+invalid table header
+expected `.`, `]`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/empty.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/empty.stderr
new file mode 100644
index 000000000..5dd0d56b5
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/empty.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 2
+ |
+1 | []
+ | ^
+invalid key
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/equals-sign.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/equals-sign.stderr
new file mode 100644
index 000000000..52451c949
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/equals-sign.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 6
+ |
+1 | [name=bad]
+ | ^
+invalid table header
+expected `.`, `]`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/llbrace.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/llbrace.stderr
new file mode 100644
index 000000000..316590da6
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/llbrace.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 3
+ |
+1 | [ [table]]
+ | ^
+invalid key
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/nested-brackets-close.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/nested-brackets-close.stderr
new file mode 100644
index 000000000..e74e178f4
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/nested-brackets-close.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 4
+ |
+1 | [a]b]
+ | ^
+invalid table header
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/nested-brackets-open.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/nested-brackets-open.stderr
new file mode 100644
index 000000000..094cf7cde
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/nested-brackets-open.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 3
+ |
+1 | [a[b]
+ | ^
+invalid table header
+expected `.`, `]`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/table/quoted-no-close.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/quoted-no-close.stderr
index 2b05e95ae..2b05e95ae 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/table/quoted-no-close.stderr
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/quoted-no-close.stderr
diff --git a/vendor/toml_edit/tests/fixtures/invalid/table/redefine.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/redefine.stderr
index 99c1f98a1..99c1f98a1 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/table/redefine.stderr
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/redefine.stderr
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/rrbrace.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/rrbrace.stderr
new file mode 100644
index 000000000..adcdf9043
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/rrbrace.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 8
+ |
+1 | [[table] ]
+ | ^
+invalid table header
+expected `.`, `]]`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/text-after-table.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/text-after-table.stderr
new file mode 100644
index 000000000..e7d7c4eb5
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/text-after-table.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 9
+ |
+1 | [error] this shouldn't be here
+ | ^
+invalid table header
+expected newline, `#`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/whitespace.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/whitespace.stderr
new file mode 100644
index 000000000..aa149d2cb
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/whitespace.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 10
+ |
+1 | [invalid key]
+ | ^
+invalid table header
+expected `.`, `]`
diff --git a/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/with-pound.stderr b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/with-pound.stderr
new file mode 100644
index 000000000..f5531cc5d
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/fixtures/invalid/table/with-pound.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 5
+ |
+1 | [key#group]
+ | ^
+invalid table header
+expected `.`, `]`
diff --git a/vendor/toml_edit-0.19.11/tests/invalid.rs b/vendor/toml_edit-0.19.11/tests/invalid.rs
new file mode 100644
index 000000000..9fff23582
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/invalid.rs
@@ -0,0 +1,26 @@
+use toml_edit::Document;
+
+fn main() {
+ let args = libtest_mimic::Arguments::from_args();
+ let tests = toml_test_data::invalid()
+ .map(|case| {
+ libtest_mimic::Trial::test(case.name.display().to_string(), || {
+ let expect_path =
+ std::path::Path::new("tests/fixtures").join(case.name.with_extension("stderr"));
+ let err = match run_case(case.fixture) {
+ Ok(()) => "".to_owned(),
+ Err(err) => err,
+ };
+ snapbox::assert_eq_path(expect_path, err);
+ Ok(())
+ })
+ })
+ .collect();
+ libtest_mimic::run(&args, tests).exit()
+}
+
+fn run_case(input: &[u8]) -> Result<(), String> {
+ let raw = std::str::from_utf8(input).map_err(|e| e.to_string())?;
+ let _ = raw.parse::<Document>().map_err(|e| e.to_string())?;
+ Ok(())
+}
diff --git a/vendor/toml_edit-0.19.11/tests/testsuite/convert.rs b/vendor/toml_edit-0.19.11/tests/testsuite/convert.rs
new file mode 100644
index 000000000..98f93979e
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/testsuite/convert.rs
@@ -0,0 +1,79 @@
+use snapbox::assert_eq;
+
+use toml_edit::{Document, Item, Value};
+
+#[test]
+fn table_into_inline() {
+ let toml = r#"
+[table]
+string = "value"
+array = [1, 2, 3]
+inline = { "1" = 1, "2" = 2 }
+
+[table.child]
+other = "world"
+"#;
+ let mut doc = toml.parse::<Document>().unwrap();
+
+ doc.get_mut("table").unwrap().make_value();
+
+ let actual = doc.to_string();
+ // `table=` is because we didn't re-format the table key, only the value
+ let expected = r#"table= { string = "value", array = [1, 2, 3], inline = { "1" = 1, "2" = 2 }, child = { other = "world" } }
+"#;
+ assert_eq(expected, actual);
+}
+
+#[test]
+fn inline_table_to_table() {
+ let toml = r#"table = { string = "value", array = [1, 2, 3], inline = { "1" = 1, "2" = 2 }, child = { other = "world" } }
+"#;
+ let mut doc = toml.parse::<Document>().unwrap();
+
+ let t = doc.remove("table").unwrap();
+ let t = match t {
+ Item::Value(Value::InlineTable(t)) => t,
+ _ => unreachable!("Unexpected {:?}", t),
+ };
+ let t = t.into_table();
+ doc.insert("table", Item::Table(t));
+
+ let actual = doc.to_string();
+ let expected = r#"[table]
+string = "value"
+array = [1, 2, 3]
+inline = { "1" = 1, "2" = 2 }
+child = { other = "world" }
+"#;
+ assert_eq(expected, actual);
+}
+
+#[test]
+fn array_of_tables_to_array() {
+ let toml = r#"
+[[table]]
+string = "value"
+array = [1, 2, 3]
+inline = { "1" = 1, "2" = 2 }
+
+[table.child]
+other = "world"
+
+[[table]]
+string = "value"
+array = [1, 2, 3]
+inline = { "1" = 1, "2" = 2 }
+
+[table.child]
+other = "world"
+"#;
+ let mut doc = toml.parse::<Document>().unwrap();
+
+ doc.get_mut("table").unwrap().make_value();
+
+ let actual = doc.to_string();
+ // `table=` is because we didn't re-format the table key, only the value
+ let expected = r#"table= [{ string = "value", array = [1, 2, 3], inline = { "1" = 1, "2" = 2 }, child = { other = "world" } }, { string = "value", array = [1, 2, 3], inline = { "1" = 1, "2" = 2 }, child = { other = "world" } }]
+"#;
+ assert_eq(expected, actual);
+}
diff --git a/vendor/toml_edit-0.19.11/tests/testsuite/datetime.rs b/vendor/toml_edit-0.19.11/tests/testsuite/datetime.rs
new file mode 100644
index 000000000..541f8ea1d
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/testsuite/datetime.rs
@@ -0,0 +1,256 @@
+macro_rules! bad {
+ ($toml:expr, $msg:expr) => {
+ match $toml.parse::<toml_edit::Document>() {
+ Ok(s) => panic!("parsed to: {:#?}", s),
+ Err(e) => snapbox::assert_eq($msg, e.to_string()),
+ }
+ };
+}
+
+#[test]
+fn times() {
+ fn dogood(s: &str, serialized: &str) {
+ let to_parse = format!("foo = {}", s);
+ let document = to_parse.parse::<toml_edit::Document>().unwrap();
+ assert_eq!(
+ document["foo"].as_datetime().unwrap().to_string(),
+ serialized
+ );
+ }
+ fn good(s: &str) {
+ dogood(s, s);
+ dogood(&s.replace('T', " "), s);
+ dogood(&s.replace('T', "t"), s);
+ dogood(&s.replace('Z', "z"), s);
+ }
+
+ good("1997-09-09T09:09:09Z");
+ good("1997-09-09T09:09:09+09:09");
+ good("1997-09-09T09:09:09-09:09");
+ good("1997-09-09T09:09:09");
+ good("1997-09-09");
+ dogood("1997-09-09 ", "1997-09-09");
+ dogood("1997-09-09 # comment", "1997-09-09");
+ good("09:09:09");
+ good("1997-09-09T09:09:09.09Z");
+ good("1997-09-09T09:09:09.09+09:09");
+ good("1997-09-09T09:09:09.09-09:09");
+ good("1997-09-09T09:09:09.09");
+ good("09:09:09.09");
+}
+
+#[test]
+fn bad_times() {
+ bad!(
+ "foo = 199-09-09",
+ "\
+TOML parse error at line 1, column 10
+ |
+1 | foo = 199-09-09
+ | ^
+expected newline, `#`
+"
+ );
+ bad!(
+ "foo = 199709-09",
+ "\
+TOML parse error at line 1, column 13
+ |
+1 | foo = 199709-09
+ | ^
+expected newline, `#`
+"
+ );
+ bad!(
+ "foo = 1997-9-09",
+ "\
+TOML parse error at line 1, column 12
+ |
+1 | foo = 1997-9-09
+ | ^
+invalid date-time
+"
+ );
+ bad!(
+ "foo = 1997-09-9",
+ "\
+TOML parse error at line 1, column 15
+ |
+1 | foo = 1997-09-9
+ | ^
+invalid date-time
+"
+ );
+ bad!(
+ "foo = 1997-09-0909:09:09",
+ "\
+TOML parse error at line 1, column 17
+ |
+1 | foo = 1997-09-0909:09:09
+ | ^
+expected newline, `#`
+"
+ );
+ bad!(
+ "foo = 1997-09-09T09:09:09.",
+ "\
+TOML parse error at line 1, column 26
+ |
+1 | foo = 1997-09-09T09:09:09.
+ | ^
+expected newline, `#`
+"
+ );
+ bad!(
+ "foo = T",
+ r#"TOML parse error at line 1, column 7
+ |
+1 | foo = T
+ | ^
+invalid string
+expected `"`, `'`
+"#
+ );
+ bad!(
+ "foo = T.",
+ r#"TOML parse error at line 1, column 7
+ |
+1 | foo = T.
+ | ^
+invalid string
+expected `"`, `'`
+"#
+ );
+ bad!(
+ "foo = TZ",
+ r#"TOML parse error at line 1, column 7
+ |
+1 | foo = TZ
+ | ^
+invalid string
+expected `"`, `'`
+"#
+ );
+ bad!(
+ "foo = 1997-09-09T09:09:09.09+",
+ r#"TOML parse error at line 1, column 30
+ |
+1 | foo = 1997-09-09T09:09:09.09+
+ | ^
+invalid time offset
+"#
+ );
+ bad!(
+ "foo = 1997-09-09T09:09:09.09+09",
+ r#"TOML parse error at line 1, column 32
+ |
+1 | foo = 1997-09-09T09:09:09.09+09
+ | ^
+invalid time offset
+"#
+ );
+ bad!(
+ "foo = 1997-09-09T09:09:09.09+09:9",
+ r#"TOML parse error at line 1, column 33
+ |
+1 | foo = 1997-09-09T09:09:09.09+09:9
+ | ^
+invalid time offset
+"#
+ );
+ bad!(
+ "foo = 1997-09-09T09:09:09.09+0909",
+ r#"TOML parse error at line 1, column 32
+ |
+1 | foo = 1997-09-09T09:09:09.09+0909
+ | ^
+invalid time offset
+"#
+ );
+ bad!(
+ "foo = 1997-09-09T09:09:09.09-",
+ r#"TOML parse error at line 1, column 30
+ |
+1 | foo = 1997-09-09T09:09:09.09-
+ | ^
+invalid time offset
+"#
+ );
+ bad!(
+ "foo = 1997-09-09T09:09:09.09-09",
+ r#"TOML parse error at line 1, column 32
+ |
+1 | foo = 1997-09-09T09:09:09.09-09
+ | ^
+invalid time offset
+"#
+ );
+ bad!(
+ "foo = 1997-09-09T09:09:09.09-09:9",
+ r#"TOML parse error at line 1, column 33
+ |
+1 | foo = 1997-09-09T09:09:09.09-09:9
+ | ^
+invalid time offset
+"#
+ );
+ bad!(
+ "foo = 1997-09-09T09:09:09.09-0909",
+ r#"TOML parse error at line 1, column 32
+ |
+1 | foo = 1997-09-09T09:09:09.09-0909
+ | ^
+invalid time offset
+"#
+ );
+
+ bad!(
+ "foo = 1997-00-09T09:09:09.09Z",
+ r#"TOML parse error at line 1, column 12
+ |
+1 | foo = 1997-00-09T09:09:09.09Z
+ | ^
+invalid date-time
+value is out of range
+"#
+ );
+ bad!(
+ "foo = 1997-09-00T09:09:09.09Z",
+ r#"TOML parse error at line 1, column 15
+ |
+1 | foo = 1997-09-00T09:09:09.09Z
+ | ^
+invalid date-time
+value is out of range
+"#
+ );
+ bad!(
+ "foo = 1997-09-09T30:09:09.09Z",
+ r#"TOML parse error at line 1, column 17
+ |
+1 | foo = 1997-09-09T30:09:09.09Z
+ | ^
+expected newline, `#`
+"#
+ );
+ bad!(
+ "foo = 1997-09-09T12:69:09.09Z",
+ r#"TOML parse error at line 1, column 21
+ |
+1 | foo = 1997-09-09T12:69:09.09Z
+ | ^
+invalid date-time
+value is out of range
+"#
+ );
+ bad!(
+ "foo = 1997-09-09T12:09:69.09Z",
+ r#"TOML parse error at line 1, column 24
+ |
+1 | foo = 1997-09-09T12:09:69.09Z
+ | ^
+invalid date-time
+value is out of range
+"#
+ );
+}
diff --git a/vendor/toml_edit-0.19.11/tests/testsuite/edit.rs b/vendor/toml_edit-0.19.11/tests/testsuite/edit.rs
new file mode 100644
index 000000000..28f73c1ac
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/testsuite/edit.rs
@@ -0,0 +1,855 @@
+use std::fmt;
+use std::iter::FromIterator;
+
+use snapbox::assert_eq;
+use toml_edit::{array, table, value, Document, Item, Key, Table, Value};
+
+macro_rules! parse_key {
+ ($s:expr) => {{
+ let key = $s.parse::<Key>();
+ assert!(key.is_ok());
+ key.unwrap()
+ }};
+}
+
+macro_rules! as_table {
+ ($e:ident) => {{
+ assert!($e.is_table());
+ $e.as_table_mut().unwrap()
+ }};
+}
+
+// Copied from https://github.com/colin-kiegel/rust-pretty-assertions/issues/24
+/// Wrapper around string slice that makes debug output `{:?}` to print string same way as `{}`.
+/// Used in different `assert*!` macros in combination with `pretty_assertions` crate to make
+/// test failures to show nice diffs.
+#[derive(PartialEq, Eq)]
+struct PrettyString<'a>(pub &'a str);
+/// Make diff to display string as multi-line string
+impl<'a> fmt::Debug for PrettyString<'a> {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.write_str(self.0)
+ }
+}
+
+struct Test {
+ doc: Document,
+}
+
+fn given(input: &str) -> Test {
+ let doc = input.parse::<Document>();
+ assert!(doc.is_ok());
+ Test { doc: doc.unwrap() }
+}
+
+impl Test {
+ fn running<F>(&mut self, func: F) -> &mut Self
+ where
+ F: Fn(&mut Table),
+ {
+ {
+ let root = self.doc.as_table_mut();
+ func(root);
+ }
+ self
+ }
+
+ #[track_caller]
+ fn produces_display(&self, expected: &str) -> &Self {
+ assert_eq(expected, self.doc.to_string());
+ self
+ }
+}
+
+// insertion
+
+#[test]
+fn test_insert_leaf_table() {
+ given(
+ r#"[servers]
+
+ [servers.alpha]
+ ip = "10.0.0.1"
+ dc = "eqdc10"
+
+ [other.table]"#,
+ )
+ .running(|root| {
+ root["servers"]["beta"] = table();
+ root["servers"]["beta"]["ip"] = value("10.0.0.2");
+ root["servers"]["beta"]["dc"] = value("eqdc10");
+ })
+ .produces_display(
+ r#"[servers]
+
+ [servers.alpha]
+ ip = "10.0.0.1"
+ dc = "eqdc10"
+
+[servers.beta]
+ip = "10.0.0.2"
+dc = "eqdc10"
+
+ [other.table]
+"#,
+ );
+}
+
+#[test]
+fn test_inserted_leaf_table_goes_after_last_sibling() {
+ given(
+ r#"
+ [package]
+ [dependencies]
+ [[example]]
+ [dependencies.opencl]
+ [dev-dependencies]"#,
+ )
+ .running(|root| {
+ root["dependencies"]["newthing"] = table();
+ })
+ .produces_display(
+ r#"
+ [package]
+ [dependencies]
+ [[example]]
+ [dependencies.opencl]
+
+[dependencies.newthing]
+ [dev-dependencies]
+"#,
+ );
+}
+
+#[test]
+fn test_inserting_tables_from_different_parsed_docs() {
+ given("[a]")
+ .running(|root| {
+ let other = "[b]".parse::<Document>().unwrap();
+ root["b"] = other["b"].clone();
+ })
+ .produces_display("[a]\n[b]\n");
+}
+#[test]
+fn test_insert_nonleaf_table() {
+ given(
+ r#"
+ [other.table]"#,
+ )
+ .running(|root| {
+ root["servers"] = table();
+ root["servers"]["alpha"] = table();
+ root["servers"]["alpha"]["ip"] = value("10.0.0.1");
+ root["servers"]["alpha"]["dc"] = value("eqdc10");
+ })
+ .produces_display(
+ r#"
+ [other.table]
+
+[servers]
+
+[servers.alpha]
+ip = "10.0.0.1"
+dc = "eqdc10"
+"#,
+ );
+}
+
+#[test]
+fn test_insert_array() {
+ given(
+ r#"
+ [package]
+ title = "withoutarray""#,
+ )
+ .running(|root| {
+ root["bin"] = array();
+ assert!(root["bin"].is_array_of_tables());
+ let array = root["bin"].as_array_of_tables_mut().unwrap();
+ {
+ let mut table = Table::new();
+ table["hello"] = value("world");
+ array.push(table);
+ }
+ array.push(Table::new());
+ })
+ .produces_display(
+ r#"
+ [package]
+ title = "withoutarray"
+
+[[bin]]
+hello = "world"
+
+[[bin]]
+"#,
+ );
+}
+
+#[test]
+fn test_insert_values() {
+ given(
+ r#"
+ [tbl.son]"#,
+ )
+ .running(|root| {
+ root["tbl"]["key1"] = value("value1");
+ root["tbl"]["key2"] = value(42);
+ root["tbl"]["key3"] = value(8.1415926);
+ })
+ .produces_display(
+ r#"[tbl]
+key1 = "value1"
+key2 = 42
+key3 = 8.1415926
+
+ [tbl.son]
+"#,
+ );
+}
+
+// removal
+
+#[test]
+fn test_remove_leaf_table() {
+ given(
+ r#"
+ [servers]
+
+ # Indentation (tabs and/or spaces) is allowed but not required
+[servers.alpha]
+ ip = "10.0.0.1"
+ dc = "eqdc10"
+
+ [servers.beta]
+ ip = "10.0.0.2"
+ dc = "eqdc10""#,
+ )
+ .running(|root| {
+ let servers = root.get_mut("servers").unwrap();
+ let servers = as_table!(servers);
+ assert!(servers.remove("alpha").is_some());
+ })
+ .produces_display(
+ r#"
+ [servers]
+
+ [servers.beta]
+ ip = "10.0.0.2"
+ dc = "eqdc10"
+"#,
+ );
+}
+
+#[test]
+fn test_remove_nonleaf_table() {
+ given(
+ r#"
+ title = "not relevant"
+
+ # comment 1
+ [a.b.c] # comment 1.1
+ key1 = 1 # comment 1.2
+ # comment 2
+ [b] # comment 2.1
+ key2 = 2 # comment 2.2
+
+ # comment 3
+ [a] # comment 3.1
+ key3 = 3 # comment 3.2
+ [[a.'array']]
+ b = 1
+
+ [[a.b.c.trololololololo]] # ohohohohoho
+ c = 2
+ key3 = 42
+
+ # comment on some other table
+ [some.other.table]
+
+
+
+
+ # comment 4
+ [a.b] # comment 4.1
+ key4 = 4 # comment 4.2
+ key41 = 41 # comment 4.3
+
+
+ "#,
+ )
+ .running(|root| {
+ assert!(root.remove("a").is_some());
+ })
+ .produces_display(
+ r#"
+ title = "not relevant"
+ # comment 2
+ [b] # comment 2.1
+ key2 = 2 # comment 2.2
+
+ # comment on some other table
+ [some.other.table]
+
+
+ "#,
+ );
+}
+
+#[test]
+fn test_remove_array_entry() {
+ given(
+ r#"
+ [package]
+ name = "hello"
+ version = "1.0.0"
+
+ [[bin]]
+ name = "world"
+ path = "src/bin/world/main.rs"
+
+ [dependencies]
+ nom = "4.0" # future is here
+
+ [[bin]]
+ name = "delete me please"
+ path = "src/bin/dmp/main.rs""#,
+ )
+ .running(|root| {
+ let dmp = root.get_mut("bin").unwrap();
+ assert!(dmp.is_array_of_tables());
+ let dmp = dmp.as_array_of_tables_mut().unwrap();
+ assert_eq!(dmp.len(), 2);
+ dmp.remove(1);
+ assert_eq!(dmp.len(), 1);
+ })
+ .produces_display(
+ r#"
+ [package]
+ name = "hello"
+ version = "1.0.0"
+
+ [[bin]]
+ name = "world"
+ path = "src/bin/world/main.rs"
+
+ [dependencies]
+ nom = "4.0" # future is here
+"#,
+ );
+}
+
+#[test]
+fn test_remove_array() {
+ given(
+ r#"
+ [package]
+ name = "hello"
+ version = "1.0.0"
+
+ [[bin]]
+ name = "world"
+ path = "src/bin/world/main.rs"
+
+ [dependencies]
+ nom = "4.0" # future is here
+
+ [[bin]]
+ name = "delete me please"
+ path = "src/bin/dmp/main.rs""#,
+ )
+ .running(|root| {
+ assert!(root.remove("bin").is_some());
+ })
+ .produces_display(
+ r#"
+ [package]
+ name = "hello"
+ version = "1.0.0"
+
+ [dependencies]
+ nom = "4.0" # future is here
+"#,
+ );
+}
+
+#[test]
+fn test_remove_value() {
+ given(
+ r#"
+ name = "hello"
+ # delete this
+ version = "1.0.0" # please
+ documentation = "https://docs.rs/hello""#,
+ )
+ .running(|root| {
+ let value = root.remove("version");
+ assert!(value.is_some());
+ let value = value.unwrap();
+ assert!(value.is_value());
+ let value = value.as_value().unwrap();
+ assert!(value.is_str());
+ let value = value.as_str().unwrap();
+ assert_eq(value, "1.0.0");
+ })
+ .produces_display(
+ r#"
+ name = "hello"
+ documentation = "https://docs.rs/hello"
+"#,
+ );
+}
+
+#[test]
+fn test_remove_last_value_from_implicit() {
+ given(
+ r#"
+ [a]
+ b = 1"#,
+ )
+ .running(|root| {
+ let a = root.get_mut("a").unwrap();
+ assert!(a.is_table());
+ let a = as_table!(a);
+ a.set_implicit(true);
+ let value = a.remove("b");
+ assert!(value.is_some());
+ let value = value.unwrap();
+ assert!(value.is_value());
+ let value = value.as_value().unwrap();
+ assert_eq!(value.as_integer(), Some(1));
+ })
+ .produces_display(r#""#);
+}
+
+// values
+
+#[test]
+fn test_sort_values() {
+ given(
+ r#"
+ [a.z]
+
+ [a]
+ # this comment is attached to b
+ b = 2 # as well as this
+ a = 1
+ c = 3
+
+ [a.y]"#,
+ )
+ .running(|root| {
+ let a = root.get_mut("a").unwrap();
+ let a = as_table!(a);
+ a.sort_values();
+ })
+ .produces_display(
+ r#"
+ [a.z]
+
+ [a]
+ a = 1
+ # this comment is attached to b
+ b = 2 # as well as this
+ c = 3
+
+ [a.y]
+"#,
+ );
+}
+
+#[test]
+fn test_sort_values_by() {
+ given(
+ r#"
+ [a.z]
+
+ [a]
+ # this comment is attached to b
+ b = 2 # as well as this
+ a = 1
+ "c" = 3
+
+ [a.y]"#,
+ )
+ .running(|root| {
+ let a = root.get_mut("a").unwrap();
+ let a = as_table!(a);
+ // Sort by the representation, not the value. So "\"c\"" sorts before "a" because '"' sorts
+ // before 'a'.
+ a.sort_values_by(|k1, _, k2, _| k1.display_repr().cmp(&k2.display_repr()));
+ })
+ .produces_display(
+ r#"
+ [a.z]
+
+ [a]
+ "c" = 3
+ a = 1
+ # this comment is attached to b
+ b = 2 # as well as this
+
+ [a.y]
+"#,
+ );
+}
+
+#[test]
+fn test_set_position() {
+ given(
+ r#"
+ [package]
+ [dependencies]
+ [dependencies.opencl]
+ [dev-dependencies]"#,
+ )
+ .running(|root| {
+ for (header, table) in root.iter_mut() {
+ if header == "dependencies" {
+ let tab = as_table!(table);
+ tab.set_position(0);
+ let (_, segmented) = tab.iter_mut().next().unwrap();
+ as_table!(segmented).set_position(5)
+ }
+ }
+ })
+ .produces_display(
+ r#" [dependencies]
+
+ [package]
+ [dev-dependencies]
+ [dependencies.opencl]
+"#,
+ );
+}
+
+#[test]
+fn test_multiple_zero_positions() {
+ given(
+ r#"
+ [package]
+ [dependencies]
+ [dependencies.opencl]
+ a=""
+ [dev-dependencies]"#,
+ )
+ .running(|root| {
+ for (_, table) in root.iter_mut() {
+ as_table!(table).set_position(0)
+ }
+ })
+ .produces_display(
+ r#"
+ [package]
+ [dependencies]
+ [dev-dependencies]
+ [dependencies.opencl]
+ a=""
+"#,
+ );
+}
+
+#[test]
+fn test_multiple_max_usize_positions() {
+ given(
+ r#"
+ [package]
+ [dependencies]
+ [dependencies.opencl]
+ a=""
+ [dev-dependencies]"#,
+ )
+ .running(|root| {
+ for (_, table) in root.iter_mut() {
+ as_table!(table).set_position(usize::MAX)
+ }
+ })
+ .produces_display(
+ r#" [dependencies.opencl]
+ a=""
+
+ [package]
+ [dependencies]
+ [dev-dependencies]
+"#,
+ );
+}
+
+macro_rules! as_array {
+ ($entry:ident) => {{
+ assert!($entry.is_value());
+ let a = $entry.as_value_mut().unwrap();
+ assert!(a.is_array());
+ a.as_array_mut().unwrap()
+ }};
+}
+
+#[test]
+fn test_insert_replace_into_array() {
+ given(
+ r#"
+ a = [1,2,3]
+ b = []"#,
+ )
+ .running(|root| {
+ {
+ let a = root.get_mut("a").unwrap();
+ let a = as_array!(a);
+ assert_eq!(a.len(), 3);
+ assert!(a.get(2).is_some());
+ a.push(4);
+ assert_eq!(a.len(), 4);
+ a.fmt();
+ }
+ let b = root.get_mut("b").unwrap();
+ let b = as_array!(b);
+ assert!(b.is_empty());
+ b.push("hello");
+ assert_eq!(b.len(), 1);
+
+ b.push_formatted(Value::from("world").decorated("\n", "\n"));
+ b.push_formatted(Value::from("test").decorated("", ""));
+
+ b.insert(1, "beep");
+ b.insert_formatted(2, Value::from("boop").decorated(" ", " "));
+
+ // This should preserve formatting.
+ assert_eq!(b.replace(2, "zoink").as_str(), Some("boop"));
+ // This should replace formatting.
+ assert_eq!(
+ b.replace_formatted(4, Value::from("yikes").decorated(" ", ""))
+ .as_str(),
+ Some("test")
+ );
+ dbg!(root);
+ })
+ .produces_display(
+ r#"
+ a = [1, 2, 3, 4]
+ b = ["hello", "beep", "zoink" ,
+"world"
+, "yikes"]
+"#,
+ );
+}
+
+#[test]
+fn test_remove_from_array() {
+ given(
+ r#"
+ a = [1, 2, 3, 4]
+ b = ["hello"]"#,
+ )
+ .running(|root| {
+ {
+ let a = root.get_mut("a").unwrap();
+ let a = as_array!(a);
+ assert_eq!(a.len(), 4);
+ assert!(a.remove(3).is_integer());
+ assert_eq!(a.len(), 3);
+ }
+ let b = root.get_mut("b").unwrap();
+ let b = as_array!(b);
+ assert_eq!(b.len(), 1);
+ assert!(b.remove(0).is_str());
+ assert!(b.is_empty());
+ })
+ .produces_display(
+ r#"
+ a = [1, 2, 3]
+ b = []
+"#,
+ );
+}
+
+#[test]
+fn test_format_array() {
+ given(
+ r#"
+ a = [
+ 1,
+ "2",
+ 3.0,
+ ]
+ "#,
+ )
+ .running(|root| {
+ for (_, v) in root.iter_mut() {
+ if let Item::Value(Value::Array(array)) = v {
+ array.fmt();
+ }
+ }
+ })
+ .produces_display(
+ r#"
+ a = [1, "2", 3.0]
+ "#,
+ );
+}
+
+macro_rules! as_inline_table {
+ ($entry:ident) => {{
+ assert!($entry.is_value());
+ let a = $entry.as_value_mut().unwrap();
+ assert!(a.is_inline_table());
+ a.as_inline_table_mut().unwrap()
+ }};
+}
+
+#[test]
+fn test_insert_into_inline_table() {
+ given(
+ r#"
+ a = {a=2, c = 3}
+ b = {}"#,
+ )
+ .running(|root| {
+ {
+ let a = root.get_mut("a").unwrap();
+ let a = as_inline_table!(a);
+ assert_eq!(a.len(), 2);
+ assert!(a.contains_key("a") && a.get("c").is_some() && a.get_mut("c").is_some());
+ a.get_or_insert("b", 42);
+ assert_eq!(a.len(), 3);
+ a.fmt();
+ }
+ let b = root.get_mut("b").unwrap();
+ let b = as_inline_table!(b);
+ assert!(b.is_empty());
+ b.get_or_insert("hello", "world");
+ assert_eq!(b.len(), 1);
+ b.fmt()
+ })
+ .produces_display(
+ r#"
+ a = { a = 2, c = 3, b = 42 }
+ b = { hello = "world" }
+"#,
+ );
+}
+
+#[test]
+fn test_remove_from_inline_table() {
+ given(
+ r#"
+ a = {a=2, c = 3, b = 42}
+ b = {'hello' = "world"}"#,
+ )
+ .running(|root| {
+ {
+ let a = root.get_mut("a").unwrap();
+ let a = as_inline_table!(a);
+ assert_eq!(a.len(), 3);
+ assert!(a.remove("c").is_some());
+ assert_eq!(a.len(), 2);
+ }
+ let b = root.get_mut("b").unwrap();
+ let b = as_inline_table!(b);
+ assert_eq!(b.len(), 1);
+ assert!(b.remove("hello").is_some());
+ assert!(b.is_empty());
+ })
+ .produces_display(
+ r#"
+ a = {a=2, b = 42}
+ b = {}
+"#,
+ );
+}
+
+#[test]
+fn test_as_table_like() {
+ given(
+ r#"
+ a = {a=2, c = 3, b = 42}
+ x = {}
+ [[bin]]
+ [b]
+ x = "y"
+ [empty]"#,
+ )
+ .running(|root| {
+ let a = root["a"].as_table_like();
+ assert!(a.is_some());
+ let a = a.unwrap();
+ assert_eq!(a.iter().count(), 3);
+ assert_eq!(a.len(), 3);
+ assert_eq!(a.get("a").and_then(Item::as_integer), Some(2));
+
+ let b = root["b"].as_table_like();
+ assert!(b.is_some());
+ let b = b.unwrap();
+ assert_eq!(b.iter().count(), 1);
+ assert_eq!(b.len(), 1);
+ assert_eq!(b.get("x").and_then(Item::as_str), Some("y"));
+
+ assert_eq!(root["x"].as_table_like().map(|t| t.iter().count()), Some(0));
+ assert_eq!(
+ root["empty"].as_table_like().map(|t| t.is_empty()),
+ Some(true)
+ );
+
+ assert!(root["bin"].as_table_like().is_none());
+ });
+}
+
+#[test]
+fn test_inline_table_append() {
+ let mut a = Value::from_iter(vec![
+ (parse_key!("a"), 1),
+ (parse_key!("b"), 2),
+ (parse_key!("c"), 3),
+ ]);
+ let a = a.as_inline_table_mut().unwrap();
+
+ let mut b = Value::from_iter(vec![
+ (parse_key!("c"), 4),
+ (parse_key!("d"), 5),
+ (parse_key!("e"), 6),
+ ]);
+ let b = b.as_inline_table_mut().unwrap();
+
+ a.extend(b.iter());
+ assert_eq!(a.len(), 5);
+ assert!(a.contains_key("e"));
+ assert_eq!(b.len(), 3);
+}
+
+#[test]
+fn test_insert_dotted_into_std_table() {
+ given("")
+ .running(|root| {
+ root["nixpkgs"] = table();
+
+ root["nixpkgs"]["src"] = table();
+ root["nixpkgs"]["src"]
+ .as_table_like_mut()
+ .unwrap()
+ .set_dotted(true);
+ root["nixpkgs"]["src"]["git"] = value("https://github.com/nixos/nixpkgs");
+ })
+ .produces_display(
+ r#"[nixpkgs]
+src.git = "https://github.com/nixos/nixpkgs"
+"#,
+ );
+}
+
+#[test]
+fn test_insert_dotted_into_implicit_table() {
+ given("")
+ .running(|root| {
+ root["nixpkgs"] = table();
+
+ root["nixpkgs"]["src"]["git"] = value("https://github.com/nixos/nixpkgs");
+ root["nixpkgs"]["src"]
+ .as_table_like_mut()
+ .unwrap()
+ .set_dotted(true);
+ })
+ .produces_display(
+ r#"[nixpkgs]
+src.git = "https://github.com/nixos/nixpkgs"
+"#,
+ );
+}
diff --git a/vendor/toml_edit-0.19.11/tests/testsuite/invalid.rs b/vendor/toml_edit-0.19.11/tests/testsuite/invalid.rs
new file mode 100644
index 000000000..cb13b4e7d
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/testsuite/invalid.rs
@@ -0,0 +1,211 @@
+#[test]
+fn incomplete_inline_table_issue_296() {
+ let err = "native = {".parse::<toml_edit::Document>().unwrap_err();
+ snapbox::assert_eq(
+ r#"TOML parse error at line 1, column 11
+ |
+1 | native = {
+ | ^
+invalid inline table
+expected `}`
+"#,
+ err.to_string(),
+ );
+}
+
+#[test]
+fn bare_value_disallowed_issue_293() {
+ let err = "value=zzz".parse::<toml_edit::Document>().unwrap_err();
+ snapbox::assert_eq(
+ r#"TOML parse error at line 1, column 7
+ |
+1 | value=zzz
+ | ^
+invalid string
+expected `"`, `'`
+"#,
+ err.to_string(),
+ );
+}
+
+#[test]
+fn bare_value_in_array_disallowed_issue_293() {
+ let err = "value=[zzz]".parse::<toml_edit::Document>().unwrap_err();
+ snapbox::assert_eq(
+ r#"TOML parse error at line 1, column 8
+ |
+1 | value=[zzz]
+ | ^
+invalid array
+expected `]`
+"#,
+ err.to_string(),
+ );
+}
+
+#[test]
+fn duplicate_table_after_dotted_key_issue_509() {
+ let err = "
+[dependencies.foo]
+version = \"0.16\"
+
+[dependencies]
+libc = \"0.2\"
+
+[dependencies]
+rand = \"0.3.14\"
+"
+ .parse::<toml_edit::Document>()
+ .unwrap_err();
+ snapbox::assert_eq(
+ r#"TOML parse error at line 8, column 1
+ |
+8 | [dependencies]
+ | ^
+invalid table header
+duplicate key `dependencies` in document root
+"#,
+ err.to_string(),
+ );
+}
+
+#[test]
+fn bad() {
+ let toml_input = "a = 01";
+ let expected_err = "\
+TOML parse error at line 1, column 6
+ |
+1 | a = 01
+ | ^
+expected newline, `#`
+";
+ let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
+ snapbox::assert_eq(expected_err, err.to_string());
+
+ let toml_input = "a = 1__1";
+ let expected_err = "\
+TOML parse error at line 1, column 7
+ |
+1 | a = 1__1
+ | ^
+invalid integer
+expected digit
+";
+ let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
+ snapbox::assert_eq(expected_err, err.to_string());
+
+ let toml_input = "a = 1_";
+ let expected_err = "\
+TOML parse error at line 1, column 7
+ |
+1 | a = 1_
+ | ^
+invalid integer
+expected digit
+";
+ let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
+ snapbox::assert_eq(expected_err, err.to_string());
+
+ let toml_input = "''";
+ let expected_err = "\
+TOML parse error at line 1, column 3
+ |
+1 | ''
+ | ^
+expected `.`, `=`
+";
+ let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
+ snapbox::assert_eq(expected_err, err.to_string());
+
+ let toml_input = "a = 9e99999";
+ let expected_err = "\
+TOML parse error at line 1, column 5
+ |
+1 | a = 9e99999
+ | ^
+invalid floating-point number
+";
+ let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
+ snapbox::assert_eq(expected_err, err.to_string());
+
+ let toml_input = "a = \"\u{7f}\"";
+ let expected_err = "\
+TOML parse error at line 1, column 6
+ |
+1 | a = \"\u{7f}\"
+ | ^
+invalid basic string
+";
+ let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
+ snapbox::assert_eq(expected_err, err.to_string());
+
+ let toml_input = "a = '\u{7f}'";
+ let expected_err = "\
+TOML parse error at line 1, column 6
+ |
+1 | a = '\u{7f}'
+ | ^
+invalid literal string
+";
+ let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
+ snapbox::assert_eq(expected_err, err.to_string());
+
+ let toml_input = "a = -0x1";
+ let expected_err = "\
+TOML parse error at line 1, column 7
+ |
+1 | a = -0x1
+ | ^
+expected newline, `#`
+";
+ let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
+ snapbox::assert_eq(expected_err, err.to_string());
+
+ let toml_input = "a = 0x-1";
+ let expected_err = "\
+TOML parse error at line 1, column 7
+ |
+1 | a = 0x-1
+ | ^
+invalid hexadecimal integer
+";
+ let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
+ snapbox::assert_eq(expected_err, err.to_string());
+
+ // Dotted keys.
+ let toml_input = "a.b.c = 1
+ a.b = 2
+ ";
+ let expected_err = "\
+TOML parse error at line 2, column 10
+ |
+2 | a.b = 2
+ | ^
+duplicate key `b` in document root
+";
+ let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
+ snapbox::assert_eq(expected_err, err.to_string());
+
+ let toml_input = "a = 1
+ a.b = 2";
+ let expected_err = "\
+TOML parse error at line 2, column 10
+ |
+2 | a.b = 2
+ | ^
+dotted key `a` attempted to extend non-table type (integer)
+";
+ let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
+ snapbox::assert_eq(expected_err, err.to_string());
+
+ let toml_input = "a = {k1 = 1, k1.name = \"joe\"}";
+ let expected_err = "\
+TOML parse error at line 1, column 6
+ |
+1 | a = {k1 = 1, k1.name = \"joe\"}
+ | ^
+dotted key `k1` attempted to extend non-table type (integer)
+";
+ let err = toml_input.parse::<toml_edit::Document>().unwrap_err();
+ snapbox::assert_eq(expected_err, err.to_string());
+}
diff --git a/vendor/toml_edit-0.19.11/tests/testsuite/main.rs b/vendor/toml_edit-0.19.11/tests/testsuite/main.rs
new file mode 100644
index 000000000..1476c5da0
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/testsuite/main.rs
@@ -0,0 +1,8 @@
+#![recursion_limit = "256"]
+
+mod convert;
+mod datetime;
+mod edit;
+mod invalid;
+mod parse;
+mod stackoverflow;
diff --git a/vendor/toml_edit-0.19.11/tests/testsuite/parse.rs b/vendor/toml_edit-0.19.11/tests/testsuite/parse.rs
new file mode 100644
index 000000000..f1c3c27ca
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/testsuite/parse.rs
@@ -0,0 +1,1490 @@
+use snapbox::assert_eq;
+use toml_edit::{Document, Key, Value};
+
+macro_rules! parse {
+ ($s:expr, $ty:ty) => {{
+ let v = $s.parse::<$ty>();
+ assert!(v.is_ok(), "Failed with {}", v.unwrap_err());
+ v.unwrap()
+ }};
+}
+
+macro_rules! parse_value {
+ ($s:expr) => {
+ parse!($s, Value)
+ };
+}
+
+macro_rules! test_key {
+ ($s:expr, $expected:expr) => {{
+ let key = parse!($s, Key);
+ assert_eq!($expected, key.get(), "");
+ }};
+}
+
+#[test]
+fn test_key_from_str() {
+ test_key!("a", "a");
+ test_key!(r#"'hello key'"#, "hello key");
+ test_key!(
+ r#""Jos\u00E9\U000A0000\n\t\r\f\b\"""#,
+ "Jos\u{00E9}\u{A0000}\n\t\r\u{c}\u{8}\""
+ );
+ test_key!("\"\"", "");
+ test_key!("\"'hello key'bla\"", "'hello key'bla");
+ test_key!(
+ "'C:\\Users\\appveyor\\AppData\\Local\\Temp\\1\\cargo-edit-test.YizxPxxElXn9'",
+ "C:\\Users\\appveyor\\AppData\\Local\\Temp\\1\\cargo-edit-test.YizxPxxElXn9"
+ );
+}
+
+#[test]
+fn test_value_from_str() {
+ assert!(parse_value!("1979-05-27T00:32:00.999999-07:00").is_datetime());
+ assert!(parse_value!("1979-05-27T00:32:00.999999Z").is_datetime());
+ assert!(parse_value!("1979-05-27T00:32:00.999999").is_datetime());
+ assert!(parse_value!("1979-05-27T00:32:00").is_datetime());
+ assert!(parse_value!("1979-05-27").is_datetime());
+ assert!(parse_value!("00:32:00").is_datetime());
+ assert!(parse_value!("-239").is_integer());
+ assert!(parse_value!("1e200").is_float());
+ assert!(parse_value!("9_224_617.445_991_228_313").is_float());
+ assert!(parse_value!(r#""basic string\nJos\u00E9\n""#).is_str());
+ assert!(parse_value!(
+ r#""""
+multiline basic string
+""""#
+ )
+ .is_str());
+ assert!(parse_value!(r#"'literal string\ \'"#).is_str());
+ assert!(parse_value!(
+ r#"'''multiline
+literal \ \
+string'''"#
+ )
+ .is_str());
+ assert!(parse_value!(r#"{ hello = "world", a = 1}"#).is_inline_table());
+ assert!(
+ parse_value!(r#"[ { x = 1, a = "2" }, {a = "a",b = "b", c = "c"} ]"#).is_array()
+ );
+ let wp = "C:\\Users\\appveyor\\AppData\\Local\\Temp\\1\\cargo-edit-test.YizxPxxElXn9";
+ let lwp = "'C:\\Users\\appveyor\\AppData\\Local\\Temp\\1\\cargo-edit-test.YizxPxxElXn9'";
+ assert_eq!(Value::from(wp).as_str(), parse_value!(lwp).as_str());
+ assert!(parse_value!(r#""\\\"\b\f\n\r\t\u00E9\U000A0000""#).is_str());
+}
+
+#[test]
+fn test_key_unification() {
+ let toml = r#"
+[a]
+[a.'b'.c]
+[a."b".c.e]
+[a.b.c.d]
+"#;
+ let expected = r#"
+[a]
+[a.'b'.c]
+[a.'b'.c.e]
+[a.'b'.c.d]
+"#;
+ let doc = toml.parse::<Document>();
+ assert!(doc.is_ok());
+ let doc = doc.unwrap();
+
+ assert_eq(expected, doc.to_string());
+}
+
+macro_rules! bad {
+ ($toml:expr, $msg:expr) => {
+ match $toml.parse::<Document>() {
+ Ok(s) => panic!("parsed to: {:#?}", s),
+ Err(e) => snapbox::assert_eq($msg, e.to_string()),
+ }
+ };
+}
+
+#[test]
+fn crlf() {
+ "\
+ [project]\r\n\
+ \r\n\
+ name = \"splay\"\r\n\
+ version = \"0.1.0\"\r\n\
+ authors = [\"alex@crichton.co\"]\r\n\
+ \r\n\
+ [[lib]]\r\n\
+ \r\n\
+ path = \"lib.rs\"\r\n\
+ name = \"splay\"\r\n\
+ description = \"\"\"\
+ A Rust implementation of a TAR file reader and writer. This library does not\r\n\
+ currently handle compression, but it is abstract over all I/O readers and\r\n\
+ writers. Additionally, great lengths are taken to ensure that the entire\r\n\
+ contents are never required to be entirely resident in memory all at once.\r\n\
+ \"\"\"\
+ "
+ .parse::<Document>()
+ .unwrap();
+}
+
+#[test]
+fn fun_with_strings() {
+ let table = r#"
+bar = "\U00000000"
+key1 = "One\nTwo"
+key2 = """One\nTwo"""
+key3 = """
+One
+Two"""
+
+key4 = "The quick brown fox jumps over the lazy dog."
+key5 = """
+The quick brown \
+
+
+fox jumps over \
+the lazy dog."""
+key6 = """\
+ The quick brown \
+ fox jumps over \
+ the lazy dog.\
+ """
+# What you see is what you get.
+winpath = 'C:\Users\nodejs\templates'
+winpath2 = '\\ServerX\admin$\system32\'
+quoted = 'Tom "Dubs" Preston-Werner'
+regex = '<\i\c*\s*>'
+
+regex2 = '''I [dw]on't need \d{2} apples'''
+lines = '''
+The first newline is
+trimmed in raw strings.
+All other whitespace
+is preserved.
+'''
+"#
+ .parse::<Document>()
+ .unwrap();
+ assert_eq!(table["bar"].as_str(), Some("\0"));
+ assert_eq!(table["key1"].as_str(), Some("One\nTwo"));
+ assert_eq!(table["key2"].as_str(), Some("One\nTwo"));
+ assert_eq!(table["key3"].as_str(), Some("One\nTwo"));
+
+ let msg = "The quick brown fox jumps over the lazy dog.";
+ assert_eq!(table["key4"].as_str(), Some(msg));
+ assert_eq!(table["key5"].as_str(), Some(msg));
+ assert_eq!(table["key6"].as_str(), Some(msg));
+
+ assert_eq!(
+ table["winpath"].as_str(),
+ Some(r"C:\Users\nodejs\templates")
+ );
+ assert_eq!(
+ table["winpath2"].as_str(),
+ Some(r"\\ServerX\admin$\system32\")
+ );
+ assert_eq!(
+ table["quoted"].as_str(),
+ Some(r#"Tom "Dubs" Preston-Werner"#)
+ );
+ assert_eq!(table["regex"].as_str(), Some(r"<\i\c*\s*>"));
+ assert_eq!(
+ table["regex2"].as_str(),
+ Some(r"I [dw]on't need \d{2} apples")
+ );
+ assert_eq!(
+ table["lines"].as_str(),
+ Some(
+ "The first newline is\n\
+ trimmed in raw strings.\n\
+ All other whitespace\n\
+ is preserved.\n"
+ )
+ );
+}
+
+#[test]
+fn tables_in_arrays() {
+ let table = r#"
+[[foo]]
+#…
+[foo.bar]
+#…
+
+[[foo]] # ...
+#…
+[foo.bar]
+#...
+"#
+ .parse::<Document>()
+ .unwrap();
+ table["foo"][0]["bar"].as_table().unwrap();
+ table["foo"][1]["bar"].as_table().unwrap();
+}
+
+#[test]
+fn empty_table() {
+ let table = r#"
+[foo]"#
+ .parse::<Document>()
+ .unwrap();
+ table["foo"].as_table().unwrap();
+}
+
+#[test]
+fn mixed_table_issue_527() {
+ let input = r#"
+[package]
+metadata.msrv = "1.65.0"
+
+[package.metadata.release.pre-release-replacements]
+"#;
+ let document = input.parse::<Document>().unwrap();
+ let actual = document.to_string();
+ assert_eq(input, actual);
+}
+
+#[test]
+fn fruit() {
+ let table = r#"
+[[fruit]]
+name = "apple"
+
+[fruit.physical]
+color = "red"
+shape = "round"
+
+[[fruit.variety]]
+name = "red delicious"
+
+[[fruit.variety]]
+name = "granny smith"
+
+[[fruit]]
+name = "banana"
+
+[[fruit.variety]]
+name = "plantain"
+"#
+ .parse::<Document>()
+ .unwrap();
+ assert_eq!(table["fruit"][0]["name"].as_str(), Some("apple"));
+ assert_eq!(table["fruit"][0]["physical"]["color"].as_str(), Some("red"));
+ assert_eq!(
+ table["fruit"][0]["physical"]["shape"].as_str(),
+ Some("round")
+ );
+ assert_eq!(
+ table["fruit"][0]["variety"][0]["name"].as_str(),
+ Some("red delicious")
+ );
+ assert_eq!(
+ table["fruit"][0]["variety"][1]["name"].as_str(),
+ Some("granny smith")
+ );
+ assert_eq!(table["fruit"][1]["name"].as_str(), Some("banana"));
+ assert_eq!(
+ table["fruit"][1]["variety"][0]["name"].as_str(),
+ Some("plantain")
+ );
+}
+
+#[test]
+fn stray_cr() {
+ bad!(
+ "\r",
+ "\
+TOML parse error at line 1, column 1
+ |
+1 | \r
+ | ^
+
+"
+ );
+ bad!(
+ "a = [ \r ]",
+ "\
+TOML parse error at line 1, column 7
+ |
+1 | a = [ \r
+ ]
+ | ^
+invalid array
+expected `]`
+"
+ );
+ bad!(
+ "a = \"\"\"\r\"\"\"",
+ "\
+TOML parse error at line 1, column 8
+ |
+1 | a = \"\"\"\r
+\"\"\"
+ | ^
+invalid multiline basic string
+"
+ );
+ bad!(
+ "a = \"\"\"\\ \r \"\"\"",
+ "\
+TOML parse error at line 1, column 10
+ |
+1 | a = \"\"\"\\ \r
+ \"\"\"
+ | ^
+invalid escape sequence
+expected `b`, `f`, `n`, `r`, `t`, `u`, `U`, `\\`, `\"`
+"
+ );
+ bad!(
+ "a = '''\r'''",
+ "\
+TOML parse error at line 1, column 8
+ |
+1 | a = '''\r
+'''
+ | ^
+invalid multiline literal string
+"
+ );
+ bad!(
+ "a = '\r'",
+ "\
+TOML parse error at line 1, column 6
+ |
+1 | a = '\r
+'
+ | ^
+invalid literal string
+"
+ );
+ bad!(
+ "a = \"\r\"",
+ "\
+TOML parse error at line 1, column 6
+ |
+1 | a = \"\r
+\"
+ | ^
+invalid basic string
+"
+ );
+}
+
+#[test]
+fn blank_literal_string() {
+ let table = "foo = ''".parse::<Document>().unwrap();
+ assert_eq!(table["foo"].as_str(), Some(""));
+}
+
+#[test]
+fn many_blank() {
+ let table = "foo = \"\"\"\n\n\n\"\"\"".parse::<Document>().unwrap();
+ assert_eq!(table["foo"].as_str(), Some("\n\n"));
+}
+
+#[test]
+fn literal_eats_crlf() {
+ let table = "
+ foo = \"\"\"\\\r\n\"\"\"
+ bar = \"\"\"\\\r\n \r\n \r\n a\"\"\"
+ "
+ .parse::<Document>()
+ .unwrap();
+ assert_eq!(table["foo"].as_str(), Some(""));
+ assert_eq!(table["bar"].as_str(), Some("a"));
+}
+
+#[test]
+fn string_no_newline() {
+ bad!(
+ "a = \"\n\"",
+ "\
+TOML parse error at line 1, column 6
+ |
+1 | a = \"
+ | ^
+invalid basic string
+"
+ );
+ bad!(
+ "a = '\n'",
+ "\
+TOML parse error at line 1, column 6
+ |
+1 | a = '
+ | ^
+invalid literal string
+"
+ );
+}
+
+#[test]
+fn bad_leading_zeros() {
+ bad!(
+ "a = 00",
+ "\
+TOML parse error at line 1, column 6
+ |
+1 | a = 00
+ | ^
+expected newline, `#`
+"
+ );
+ bad!(
+ "a = -00",
+ "\
+TOML parse error at line 1, column 7
+ |
+1 | a = -00
+ | ^
+expected newline, `#`
+"
+ );
+ bad!(
+ "a = +00",
+ "\
+TOML parse error at line 1, column 7
+ |
+1 | a = +00
+ | ^
+expected newline, `#`
+"
+ );
+ bad!(
+ "a = 00.0",
+ "\
+TOML parse error at line 1, column 6
+ |
+1 | a = 00.0
+ | ^
+expected newline, `#`
+"
+ );
+ bad!(
+ "a = -00.0",
+ "\
+TOML parse error at line 1, column 7
+ |
+1 | a = -00.0
+ | ^
+expected newline, `#`
+"
+ );
+ bad!(
+ "a = +00.0",
+ "\
+TOML parse error at line 1, column 7
+ |
+1 | a = +00.0
+ | ^
+expected newline, `#`
+"
+ );
+ bad!(
+ "a = 9223372036854775808",
+ "\
+TOML parse error at line 1, column 5
+ |
+1 | a = 9223372036854775808
+ | ^
+number too large to fit in target type
+"
+ );
+ bad!(
+ "a = -9223372036854775809",
+ "\
+TOML parse error at line 1, column 5
+ |
+1 | a = -9223372036854775809
+ | ^
+number too small to fit in target type
+"
+ );
+}
+
+#[test]
+fn bad_floats() {
+ bad!(
+ "a = 0.",
+ "\
+TOML parse error at line 1, column 7
+ |
+1 | a = 0.
+ | ^
+invalid floating-point number
+expected digit
+"
+ );
+ bad!(
+ "a = 0.e",
+ "\
+TOML parse error at line 1, column 7
+ |
+1 | a = 0.e
+ | ^
+invalid floating-point number
+expected digit
+"
+ );
+ bad!(
+ "a = 0.E",
+ "\
+TOML parse error at line 1, column 7
+ |
+1 | a = 0.E
+ | ^
+invalid floating-point number
+expected digit
+"
+ );
+ bad!(
+ "a = 0.0E",
+ "\
+TOML parse error at line 1, column 9
+ |
+1 | a = 0.0E
+ | ^
+invalid floating-point number
+"
+ );
+ bad!(
+ "a = 0.0e",
+ "\
+TOML parse error at line 1, column 9
+ |
+1 | a = 0.0e
+ | ^
+invalid floating-point number
+"
+ );
+ bad!(
+ "a = 0.0e-",
+ "\
+TOML parse error at line 1, column 10
+ |
+1 | a = 0.0e-
+ | ^
+invalid floating-point number
+"
+ );
+ bad!(
+ "a = 0.0e+",
+ "\
+TOML parse error at line 1, column 10
+ |
+1 | a = 0.0e+
+ | ^
+invalid floating-point number
+"
+ );
+}
+
+#[test]
+fn floats() {
+ macro_rules! t {
+ ($actual:expr, $expected:expr) => {{
+ let f = format!("foo = {}", $actual);
+ println!("{}", f);
+ let a = f.parse::<Document>().unwrap();
+ assert_eq!(a["foo"].as_float().unwrap(), $expected);
+ }};
+ }
+
+ t!("1.0", 1.0);
+ t!("1.0e0", 1.0);
+ t!("1.0e+0", 1.0);
+ t!("1.0e-0", 1.0);
+ t!("1E-0", 1.0);
+ t!("1.001e-0", 1.001);
+ t!("2e10", 2e10);
+ t!("2e+10", 2e10);
+ t!("2e-10", 2e-10);
+ t!("2_0.0", 20.0);
+ t!("2_0.0_0e1_0", 20.0e10);
+ t!("2_0.1_0e1_0", 20.1e10);
+}
+
+#[test]
+fn bare_key_names() {
+ let a = "
+ foo = 3
+ foo_3 = 3
+ foo_-2--3--r23f--4-f2-4 = 3
+ _ = 3
+ - = 3
+ 8 = 8
+ \"a\" = 3
+ \"!\" = 3
+ \"a^b\" = 3
+ \"\\\"\" = 3
+ \"character encoding\" = \"value\"
+ 'ÊŽÇÊž' = \"value\"
+ "
+ .parse::<Document>()
+ .unwrap();
+ let _ = &a["foo"];
+ let _ = &a["-"];
+ let _ = &a["_"];
+ let _ = &a["8"];
+ let _ = &a["foo_3"];
+ let _ = &a["foo_-2--3--r23f--4-f2-4"];
+ let _ = &a["a"];
+ let _ = &a["!"];
+ let _ = &a["\""];
+ let _ = &a["character encoding"];
+ let _ = &a["ÊŽÇÊž"];
+}
+
+#[test]
+fn bad_keys() {
+ bad!(
+ "key\n=3",
+ "\
+TOML parse error at line 1, column 4
+ |
+1 | key
+ | ^
+expected `.`, `=`
+"
+ );
+ bad!(
+ "key=\n3",
+ "\
+TOML parse error at line 1, column 5
+ |
+1 | key=
+ | ^
+invalid string
+expected `\"`, `'`
+"
+ );
+ bad!(
+ "key|=3",
+ "\
+TOML parse error at line 1, column 4
+ |
+1 | key|=3
+ | ^
+expected `.`, `=`
+"
+ );
+ bad!(
+ "=3",
+ "\
+TOML parse error at line 1, column 1
+ |
+1 | =3
+ | ^
+invalid key
+"
+ );
+ bad!(
+ "\"\"|=3",
+ "\
+TOML parse error at line 1, column 3
+ |
+1 | \"\"|=3
+ | ^
+expected `.`, `=`
+"
+ );
+ bad!(
+ "\"\n\"|=3",
+ "\
+TOML parse error at line 1, column 2
+ |
+1 | \"
+ | ^
+invalid basic string
+"
+ );
+ bad!(
+ "\"\r\"|=3",
+ "\
+TOML parse error at line 1, column 2
+ |
+1 | \"\r\"|=3
+ | ^
+invalid basic string
+"
+ );
+ bad!(
+ "''''''=3",
+ "\
+TOML parse error at line 1, column 3
+ |
+1 | ''''''=3
+ | ^
+expected `.`, `=`
+"
+ );
+ bad!(
+ "\"\"\"\"\"\"=3",
+ "\
+TOML parse error at line 1, column 3
+ |
+1 | \"\"\"\"\"\"=3
+ | ^
+expected `.`, `=`
+"
+ );
+ bad!(
+ "'''key'''=3",
+ "\
+TOML parse error at line 1, column 3
+ |
+1 | '''key'''=3
+ | ^
+expected `.`, `=`
+"
+ );
+ bad!(
+ "\"\"\"key\"\"\"=3",
+ "\
+TOML parse error at line 1, column 3
+ |
+1 | \"\"\"key\"\"\"=3
+ | ^
+expected `.`, `=`
+"
+ );
+}
+
+#[test]
+fn bad_table_names() {
+ bad!(
+ "[]",
+ "\
+TOML parse error at line 1, column 2
+ |
+1 | []
+ | ^
+invalid key
+"
+ );
+ bad!(
+ "[.]",
+ "\
+TOML parse error at line 1, column 2
+ |
+1 | [.]
+ | ^
+invalid key
+"
+ );
+ bad!(
+ "[a.]",
+ "\
+TOML parse error at line 1, column 3
+ |
+1 | [a.]
+ | ^
+invalid table header
+expected `.`, `]`
+"
+ );
+ bad!(
+ "[!]",
+ "\
+TOML parse error at line 1, column 2
+ |
+1 | [!]
+ | ^
+invalid key
+"
+ );
+ bad!(
+ "[\"\n\"]",
+ "\
+TOML parse error at line 1, column 3
+ |
+1 | [\"
+ | ^
+invalid basic string
+"
+ );
+ bad!(
+ "[a.b]\n[a.\"b\"]",
+ "\
+TOML parse error at line 2, column 1
+ |
+2 | [a.\"b\"]
+ | ^
+invalid table header
+duplicate key `b` in table `a`
+"
+ );
+ bad!(
+ "[']",
+ "\
+TOML parse error at line 1, column 4
+ |
+1 | [']
+ | ^
+invalid literal string
+"
+ );
+ bad!(
+ "[''']",
+ "\
+TOML parse error at line 1, column 4
+ |
+1 | [''']
+ | ^
+invalid table header
+expected `.`, `]`
+"
+ );
+ bad!(
+ "['''''']",
+ "\
+TOML parse error at line 1, column 4
+ |
+1 | ['''''']
+ | ^
+invalid table header
+expected `.`, `]`
+"
+ );
+ bad!(
+ "['''foo''']",
+ "\
+TOML parse error at line 1, column 4
+ |
+1 | ['''foo''']
+ | ^
+invalid table header
+expected `.`, `]`
+"
+ );
+ bad!(
+ "[\"\"\"bar\"\"\"]",
+ "\
+TOML parse error at line 1, column 4
+ |
+1 | [\"\"\"bar\"\"\"]
+ | ^
+invalid table header
+expected `.`, `]`
+"
+ );
+ bad!(
+ "['\n']",
+ "\
+TOML parse error at line 1, column 3
+ |
+1 | ['
+ | ^
+invalid literal string
+"
+ );
+ bad!(
+ "['\r\n']",
+ "\
+TOML parse error at line 1, column 3
+ |
+1 | ['
+ | ^
+invalid literal string
+"
+ );
+}
+
+#[test]
+fn table_names() {
+ let a = "
+ [a.\"b\"]
+ [\"f f\"]
+ [\"f.f\"]
+ [\"\\\"\"]
+ ['a.a']
+ ['\"\"']
+ "
+ .parse::<Document>()
+ .unwrap();
+ println!("{:?}", a);
+ let _ = &a["a"]["b"];
+ let _ = &a["f f"];
+ let _ = &a["f.f"];
+ let _ = &a["\""];
+ let _ = &a["\"\""];
+}
+
+#[test]
+fn invalid_bare_numeral() {
+ bad!(
+ "4",
+ "\
+TOML parse error at line 1, column 2
+ |
+1 | 4
+ | ^
+expected `.`, `=`
+"
+ );
+}
+
+#[test]
+fn inline_tables() {
+ "a = {}".parse::<Document>().unwrap();
+ "a = {b=1}".parse::<Document>().unwrap();
+ "a = { b = 1 }".parse::<Document>().unwrap();
+ "a = {a=1,b=2}".parse::<Document>().unwrap();
+ "a = {a=1,b=2,c={}}".parse::<Document>().unwrap();
+
+ bad!(
+ "a = {a=1,}",
+ "\
+TOML parse error at line 1, column 9
+ |
+1 | a = {a=1,}
+ | ^
+invalid inline table
+expected `}`
+"
+ );
+ bad!(
+ "a = {,}",
+ "\
+TOML parse error at line 1, column 6
+ |
+1 | a = {,}
+ | ^
+invalid inline table
+expected `}`
+"
+ );
+ bad!(
+ "a = {a=1,a=1}",
+ "\
+TOML parse error at line 1, column 6
+ |
+1 | a = {a=1,a=1}
+ | ^
+duplicate key `a`
+"
+ );
+ bad!(
+ "a = {\n}",
+ "\
+TOML parse error at line 1, column 6
+ |
+1 | a = {
+ | ^
+invalid inline table
+expected `}`
+"
+ );
+ bad!(
+ "a = {",
+ "\
+TOML parse error at line 1, column 6
+ |
+1 | a = {
+ | ^
+invalid inline table
+expected `}`
+"
+ );
+
+ "a = {a=[\n]}".parse::<Document>().unwrap();
+ "a = {\"a\"=[\n]}".parse::<Document>().unwrap();
+ "a = [\n{},\n{},\n]".parse::<Document>().unwrap();
+}
+
+#[test]
+fn number_underscores() {
+ macro_rules! t {
+ ($actual:expr, $expected:expr) => {{
+ let f = format!("foo = {}", $actual);
+ let table = f.parse::<Document>().unwrap();
+ assert_eq!(table["foo"].as_integer().unwrap(), $expected);
+ }};
+ }
+
+ t!("1_0", 10);
+ t!("1_0_0", 100);
+ t!("1_000", 1000);
+ t!("+1_000", 1000);
+ t!("-1_000", -1000);
+}
+
+#[test]
+fn bad_underscores() {
+ bad!(
+ "foo = 0_",
+ "\
+TOML parse error at line 1, column 8
+ |
+1 | foo = 0_
+ | ^
+expected newline, `#`
+"
+ );
+ bad!(
+ "foo = 0__0",
+ "\
+TOML parse error at line 1, column 8
+ |
+1 | foo = 0__0
+ | ^
+expected newline, `#`
+"
+ );
+ bad!(
+ "foo = __0",
+ "\
+TOML parse error at line 1, column 7
+ |
+1 | foo = __0
+ | ^
+invalid integer
+expected leading digit
+"
+ );
+ bad!(
+ "foo = 1_0_",
+ "\
+TOML parse error at line 1, column 11
+ |
+1 | foo = 1_0_
+ | ^
+invalid integer
+expected digit
+"
+ );
+}
+
+#[test]
+fn bad_unicode_codepoint() {
+ bad!(
+ "foo = \"\\uD800\"",
+ "\
+TOML parse error at line 1, column 10
+ |
+1 | foo = \"\\uD800\"
+ | ^
+invalid unicode 4-digit hex code
+value is out of range
+"
+ );
+}
+
+#[test]
+fn bad_strings() {
+ bad!(
+ "foo = \"\\uxx\"",
+ "\
+TOML parse error at line 1, column 10
+ |
+1 | foo = \"\\uxx\"
+ | ^
+invalid unicode 4-digit hex code
+"
+ );
+ bad!(
+ "foo = \"\\u\"",
+ "\
+TOML parse error at line 1, column 10
+ |
+1 | foo = \"\\u\"
+ | ^
+invalid unicode 4-digit hex code
+"
+ );
+ bad!(
+ "foo = \"\\",
+ "\
+TOML parse error at line 1, column 8
+ |
+1 | foo = \"\\
+ | ^
+invalid basic string
+"
+ );
+ bad!(
+ "foo = '",
+ "\
+TOML parse error at line 1, column 8
+ |
+1 | foo = '
+ | ^
+invalid literal string
+"
+ );
+}
+
+#[test]
+fn empty_string() {
+ assert_eq!(
+ "foo = \"\"".parse::<Document>().unwrap()["foo"]
+ .as_str()
+ .unwrap(),
+ ""
+ );
+}
+
+#[test]
+fn booleans() {
+ let table = "foo = true".parse::<Document>().unwrap();
+ assert_eq!(table["foo"].as_bool(), Some(true));
+
+ let table = "foo = false".parse::<Document>().unwrap();
+ assert_eq!(table["foo"].as_bool(), Some(false));
+
+ bad!(
+ "foo = true2",
+ "\
+TOML parse error at line 1, column 11
+ |
+1 | foo = true2
+ | ^
+expected newline, `#`
+"
+ );
+ bad!(
+ "foo = false2",
+ "\
+TOML parse error at line 1, column 12
+ |
+1 | foo = false2
+ | ^
+expected newline, `#`
+"
+ );
+ bad!(
+ "foo = t1",
+ "\
+TOML parse error at line 1, column 7
+ |
+1 | foo = t1
+ | ^
+invalid string
+expected `\"`, `'`
+"
+ );
+ bad!(
+ "foo = f2",
+ "\
+TOML parse error at line 1, column 7
+ |
+1 | foo = f2
+ | ^
+invalid string
+expected `\"`, `'`
+"
+ );
+}
+
+#[test]
+fn bad_nesting() {
+ bad!(
+ "
+ a = [2]
+ [[a]]
+ b = 5
+ ",
+ "\
+TOML parse error at line 3, column 9
+ |
+3 | [[a]]
+ | ^
+invalid table header
+duplicate key `a` in document root
+"
+ );
+ bad!(
+ "
+ a = 1
+ [a.b]
+ ",
+ "\
+TOML parse error at line 3, column 9
+ |
+3 | [a.b]
+ | ^
+invalid table header
+dotted key `a` attempted to extend non-table type (integer)
+"
+ );
+ bad!(
+ "
+ a = []
+ [a.b]
+ ",
+ "\
+TOML parse error at line 3, column 9
+ |
+3 | [a.b]
+ | ^
+invalid table header
+dotted key `a` attempted to extend non-table type (array)
+"
+ );
+ bad!(
+ "
+ a = []
+ [[a.b]]
+ ",
+ "\
+TOML parse error at line 3, column 9
+ |
+3 | [[a.b]]
+ | ^
+invalid table header
+dotted key `a` attempted to extend non-table type (array)
+"
+ );
+ bad!(
+ "
+ [a]
+ b = { c = 2, d = {} }
+ [a.b]
+ c = 2
+ ",
+ "\
+TOML parse error at line 4, column 9
+ |
+4 | [a.b]
+ | ^
+invalid table header
+duplicate key `b` in table `a`
+"
+ );
+}
+
+#[test]
+fn bad_table_redefine() {
+ bad!(
+ "
+ [a]
+ foo=\"bar\"
+ [a.b]
+ foo=\"bar\"
+ [a]
+ ",
+ "\
+TOML parse error at line 6, column 9
+ |
+6 | [a]
+ | ^
+invalid table header
+duplicate key `a` in document root
+"
+ );
+ bad!(
+ "
+ [a]
+ foo=\"bar\"
+ b = { foo = \"bar\" }
+ [a]
+ ",
+ "\
+TOML parse error at line 5, column 9
+ |
+5 | [a]
+ | ^
+invalid table header
+duplicate key `a` in document root
+"
+ );
+ bad!(
+ "
+ [a]
+ b = {}
+ [a.b]
+ ",
+ "\
+TOML parse error at line 4, column 9
+ |
+4 | [a.b]
+ | ^
+invalid table header
+duplicate key `b` in table `a`
+"
+ );
+
+ bad!(
+ "
+ [a]
+ b = {}
+ [a]
+ ",
+ "\
+TOML parse error at line 4, column 9
+ |
+4 | [a]
+ | ^
+invalid table header
+duplicate key `a` in document root
+"
+ );
+}
+
+#[test]
+fn datetimes() {
+ macro_rules! t {
+ ($actual:expr) => {{
+ let f = format!("foo = {}", $actual);
+ let toml = f.parse::<Document>().expect(&format!("failed: {}", f));
+ assert_eq!(toml["foo"].as_datetime().unwrap().to_string(), $actual);
+ }};
+ }
+
+ t!("2016-09-09T09:09:09Z");
+ t!("2016-09-09T09:09:09.1Z");
+ t!("2016-09-09T09:09:09.2+10:00");
+ t!("2016-09-09T09:09:09.123456789-02:00");
+ bad!(
+ "foo = 2016-09-09T09:09:09.Z",
+ "\
+TOML parse error at line 1, column 26
+ |
+1 | foo = 2016-09-09T09:09:09.Z
+ | ^
+expected newline, `#`
+"
+ );
+ bad!(
+ "foo = 2016-9-09T09:09:09Z",
+ "\
+TOML parse error at line 1, column 12
+ |
+1 | foo = 2016-9-09T09:09:09Z
+ | ^
+invalid date-time
+"
+ );
+ bad!(
+ "foo = 2016-09-09T09:09:09+2:00",
+ "\
+TOML parse error at line 1, column 27
+ |
+1 | foo = 2016-09-09T09:09:09+2:00
+ | ^
+invalid time offset
+"
+ );
+ bad!(
+ "foo = 2016-09-09T09:09:09-2:00",
+ "\
+TOML parse error at line 1, column 27
+ |
+1 | foo = 2016-09-09T09:09:09-2:00
+ | ^
+invalid time offset
+"
+ );
+ bad!(
+ "foo = 2016-09-09T09:09:09Z-2:00",
+ "\
+TOML parse error at line 1, column 27
+ |
+1 | foo = 2016-09-09T09:09:09Z-2:00
+ | ^
+expected newline, `#`
+"
+ );
+}
+
+#[test]
+fn require_newline_after_value() {
+ bad!(
+ "0=0r=false",
+ "\
+TOML parse error at line 1, column 4
+ |
+1 | 0=0r=false
+ | ^
+expected newline, `#`
+"
+ );
+ bad!(
+ r#"
+0=""o=""m=""r=""00="0"q="""0"""e="""0"""
+"#,
+ r#"TOML parse error at line 2, column 5
+ |
+2 | 0=""o=""m=""r=""00="0"q="""0"""e="""0"""
+ | ^
+expected newline, `#`
+"#
+ );
+ bad!(
+ r#"
+[[0000l0]]
+0="0"[[0000l0]]
+0="0"[[0000l0]]
+0="0"l="0"
+"#,
+ r#"TOML parse error at line 3, column 6
+ |
+3 | 0="0"[[0000l0]]
+ | ^
+expected newline, `#`
+"#
+ );
+ bad!(
+ r#"
+0=[0]00=[0,0,0]t=["0","0","0"]s=[1000-00-00T00:00:00Z,2000-00-00T00:00:00Z]
+"#,
+ r#"TOML parse error at line 2, column 6
+ |
+2 | 0=[0]00=[0,0,0]t=["0","0","0"]s=[1000-00-00T00:00:00Z,2000-00-00T00:00:00Z]
+ | ^
+expected newline, `#`
+"#
+ );
+ bad!(
+ r#"
+0=0r0=0r=false
+"#,
+ r#"TOML parse error at line 2, column 4
+ |
+2 | 0=0r0=0r=false
+ | ^
+expected newline, `#`
+"#
+ );
+ bad!(
+ r#"
+0=0r0=0r=falsefal=false
+"#,
+ r#"TOML parse error at line 2, column 4
+ |
+2 | 0=0r0=0r=falsefal=false
+ | ^
+expected newline, `#`
+"#
+ );
+}
+
+#[test]
+fn dont_use_dotted_key_prefix_on_table_fuzz_57049() {
+ // This could generate
+ // ```toml
+ // [
+ // p.o]
+ // ```
+ let input = r#"
+p.a=4
+[p.o]
+"#;
+ let document = input.parse::<Document>().unwrap();
+ let actual = document.to_string();
+ assert_eq(input, actual);
+}
+
+#[test]
+fn despan_keys() {
+ let mut doc = r#"aaaaaa = 1"#.parse::<Document>().unwrap();
+ let key = "bbb".parse::<Key>().unwrap();
+ let table = doc.as_table_mut();
+ table.insert_formatted(
+ &key,
+ toml_edit::Item::Value(Value::Integer(toml_edit::Formatted::new(2))),
+ );
+
+ assert_eq!(doc.to_string(), "aaaaaa = 1\nbbb = 2\n");
+}
diff --git a/vendor/toml_edit-0.19.11/tests/testsuite/stackoverflow.rs b/vendor/toml_edit-0.19.11/tests/testsuite/stackoverflow.rs
new file mode 100644
index 000000000..de4c72262
--- /dev/null
+++ b/vendor/toml_edit-0.19.11/tests/testsuite/stackoverflow.rs
@@ -0,0 +1,54 @@
+#[test]
+#[cfg(not(feature = "unbounded"))]
+fn array_recursion_limit() {
+ let depths = [(1, true), (20, true), (300, false)];
+ for (depth, is_ok) in depths {
+ let input = format!("x={}{}", &"[".repeat(depth), &"]".repeat(depth));
+ let document = input.parse::<toml_edit::Document>();
+ assert_eq!(document.is_ok(), is_ok, "depth: {}", depth);
+ }
+}
+
+#[test]
+#[cfg(not(feature = "unbounded"))]
+fn inline_table_recursion_limit() {
+ let depths = [(1, true), (20, true), (300, false)];
+ for (depth, is_ok) in depths {
+ let input = format!("x={}true{}", &"{ x = ".repeat(depth), &"}".repeat(depth));
+ let document = input.parse::<toml_edit::Document>();
+ assert_eq!(document.is_ok(), is_ok, "depth: {}", depth);
+ }
+}
+
+#[test]
+#[cfg(not(feature = "unbounded"))]
+fn table_key_recursion_limit() {
+ let depths = [(1, true), (20, true), (300, false)];
+ for (depth, is_ok) in depths {
+ let input = format!("[x{}]", &".x".repeat(depth));
+ let document = input.parse::<toml_edit::Document>();
+ assert_eq!(document.is_ok(), is_ok, "depth: {}", depth);
+ }
+}
+
+#[test]
+#[cfg(not(feature = "unbounded"))]
+fn dotted_key_recursion_limit() {
+ let depths = [(1, true), (20, true), (300, false)];
+ for (depth, is_ok) in depths {
+ let input = format!("x{} = true", &".x".repeat(depth));
+ let document = input.parse::<toml_edit::Document>();
+ assert_eq!(document.is_ok(), is_ok, "depth: {}", depth);
+ }
+}
+
+#[test]
+#[cfg(not(feature = "unbounded"))]
+fn inline_dotted_key_recursion_limit() {
+ let depths = [(1, true), (20, true), (300, false)];
+ for (depth, is_ok) in depths {
+ let input = format!("x = {{ x{} = true }}", &".x".repeat(depth));
+ let document = input.parse::<toml_edit::Document>();
+ assert_eq!(document.is_ok(), is_ok, "depth: {}", depth);
+ }
+}
diff --git a/vendor/toml_edit/.cargo-checksum.json b/vendor/toml_edit/.cargo-checksum.json
index df12efa82..06f5d5674 100644
--- a/vendor/toml_edit/.cargo-checksum.json
+++ b/vendor/toml_edit/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"55e407de6911279cc050b5fa6b8dd0699f15aa5e23849cf7d2fb4991e764403c","Cargo.toml":"fc34ca3071e98775e09ed6f57cd80e88783bb0fa6f3fb85961996fcffe064fec","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"4ba025b28a1ea4c063512d92a206a0510972cd98daec7c6a64ab846ce8e3702d","README.md":"61071236d49e09b94cda5955f5d61a6196b192b11a990883d458dc6e3d72da6f","examples/visit.rs":"657756caba28aa87a8b10104aba704fd2365579c57a293bc572a8d72173ba174","src/array.rs":"46d62e3898f39b5cc0c2a98f0f38986ad0cbac837366849a2c07b458524dae47","src/array_of_tables.rs":"a4c391b2dedd475546159fec824e2cca5f32e4e684fdf02792f645d2162881ed","src/de/array.rs":"7969d28e98e366cd16c9ed74128404a147a2b787c54d0450594811a92d17b310","src/de/datetime.rs":"a29e76372fc382686c31ee93fd54c749ea3d775c8d4fcc2b2643f9464ea23730","src/de/key.rs":"f8a977fe08e1f929e599f2216734db678ca6ec9fb7f6860b75f1cdfc628b52c6","src/de/mod.rs":"b7344ac410b21b2c82eb88782f48979d6f850a778a19bb2eea7228e834374d2f","src/de/spanned.rs":"5c959639bf4b3d19c6b18e625a57b28b311164bf7b191bbc4d30aa97b7239679","src/de/table.rs":"b1f0f95ea502126b8707ba945596f3c47d83d46680622899334567df1b58df1d","src/de/table_enum.rs":"879a78836ac3b00ab35b9cd72a08fb8486a6c4ae05c779481ae9fcb9546b8390","src/de/value.rs":"03a294f1913c9794dca6420fb3db37abd5c9150f692689269215b7c306bdf6d7","src/document.rs":"7882374aa62978cac3752f346253399f281121a544927feed2882ed9a008361d","src/encode.rs":"4fd14a1d23bc42cbc925d7b240c7f17641ccff0df31d8ed1aeb3cf4c9c598c36","src/index.rs":"34ed0a4cc0cd55ce29885ed8123cc7c09c8ba3b9aa8d3b0b47554c1a41d31577","src/inline_table.rs":"497c56915a15f0d4826f20726aee056c7a6ab57af561b0901260f0a102199a36","src/internal_string.rs":"8c84f94363ed012eb7114c6b3f6b371155d0ce740ce44ec9d315aedf048c1d11","src/item.rs":"d0908cd810e7c57f00c2b7e84b48f83b9157837cb07945ca4e6fa24da46181e6","src/key.rs":"b6577a803b818e2010134615bc8cf93ff3a03d7097f29cba7a6b98306a81fdce","src/lib.rs":"3ff2ffd3366e495278fd7b3118ea54b7d09534380396a75b46c409e3c563c67c","src/parser/array.rs":"c8c2e789ce082cb617c11e28f07cfeed3663966f608b9b3d76a57aa321b898d5","src/parser/datetime.rs":"b1717d8038d6c58b90065d7552b38d8fa614c1271a3eaf056076fd68f1bdc85f","src/parser/document.rs":"0b94e7e0bd53606949d66bb6854bf275bed399b869bbce18d6acbd65238de112","src/parser/errors.rs":"65e1f80b782a8cd5334792937d487b190450cc4e70820a64fa7e23b74cd117c6","src/parser/inline_table.rs":"91bb5f1a54574e66727fbc03ec4f73d3c435fc54ee4a22159709ee2612bfc118","src/parser/key.rs":"0de3bb1d3ab843b4da6c8913f28ea90bb54f35d1cbbad96b0d6f92597109dd0b","src/parser/mod.rs":"a3e8d11af94b930249a3c62cf0b54eb1b8c7033c3b59495786c158799b73fa8e","src/parser/numbers.rs":"76a61210ce5b399f7367347c4dd1d71871d99e6dc06aeeb7b7e8b84962831e21","src/parser/state.rs":"8b7ba46e124007c3dfdf894d881768f2dd0895749e217e2b1fedb86d9281b8b2","src/parser/strings.rs":"d4f1383d83699ab43f2ce04613fa656f9015d5d588910e71122ed88c3b09c25a","src/parser/table.rs":"c716d82caed27229afb22e757cb14b2828356fc69d33ab94d8f43043f992cd2b","src/parser/trivia.rs":"c2d9feaa958c339de82c6756a2e8ee749d0324db0c9890abc237fb213bf7b2e0","src/parser/value.rs":"ffc4b97539b121f195051857089071344ae3b68d563566425e19fa0365a6ae62","src/raw_string.rs":"dcec7da0aab75a5ff5891a0b4a22265ed47c17f9d802ec135e40f2bb1b0a7c60","src/repr.rs":"68356f3b89cd76b75bd9f78b6fbd31fbcc96d8195a7118d286dca92950adaee4","src/ser/array.rs":"5fb55303365bf6991f7af523931d1a046e88d3125c099317e12a7d4f592321a8","src/ser/key.rs":"9bad3bee90876c5c54aaa5caee92bfe30d79a100615902118b35b3ceb40b524e","src/ser/map.rs":"700ddcac68f1cb92969bb8e3168d9ad5d1e1b545d68cc7711f0eb58cf41d9f8c","src/ser/mod.rs":"9b37c484e6ac281a40260206e8cb5bec9e2dab09126c9a2010a52786fbf7df78","src/ser/pretty.rs":"9a9f6d43b2eab487de8af216b9950c93318c9ee6a91f4707ffa41e2ee492c902","src/ser/value.rs":"4e53308b7b82e50382a6d48251c27cf817eabea063c99e6ab9abe30d781c3afc","src/table.rs":"267478d627cae7bf63d4e88c9b757b7fa55a1f58ae1914ae9f5ec29279f8421e","src/value.rs":"881f7aee14ef968f5f843ccbbaa648117ceac2148df6e09d171f41c174d35dd9","src/visit.rs":"34b49c3091a6ef7c1513429f8290c26989da25cec496d3993abf33fa65ebfc58","src/visit_mut.rs":"b184d7bb94038fdc2e0fee8689112f01377d9f8c05ffafb8a1f5f2263e80ee27","tests/decoder.rs":"8093389d542f50974d6a606321b0413941709ac2cbdef48934b60088bb21e3a3","tests/decoder_compliance.rs":"a06a10a2b89758ef08dda24c4475d13638b7c31e8872ed6edc6919d5b9910bd4","tests/encoder.rs":"c84dd8e14ade77a4d55f932418567196e188fe65d3957408b9ce07c2c27c4da0","tests/encoder_compliance.rs":"643b529e2f4762b2ce98e041dffa5d4b87fee5942996e093afa5b8494e02a3c0","tests/fixtures/invalid/array/double-comma-1.stderr":"abfcc7bc82100306faf21d3636f0ae684d0fbc5e9ea89032e6cd39ecfcb92c84","tests/fixtures/invalid/array/double-comma-2.stderr":"56bd3cecd5b5ec4204d206f07751c34e1e65bee7aa108ca74ef7a8cb1aaaea43","tests/fixtures/invalid/array/extending-table.stderr":"a6c077cb49c41a9d10aca0bac6c571e570f0a772c6311d6a835f9cc46f4ab7cd","tests/fixtures/invalid/array/missing-separator.stderr":"eb38b2683f119d8b9b8c6b8ffd46da784112565ef1033febbe59469e14baea76","tests/fixtures/invalid/array/no-close-2.stderr":"214a9c5953175709a068433f0a594e0cf2be88d633905dc6e9047894b5249e4e","tests/fixtures/invalid/array/no-close-table-2.stderr":"5a2b4bf9026aa20c749551cd77458c5ffba008b5b235fa05fb7c756917018eb8","tests/fixtures/invalid/array/no-close-table.stderr":"545ad4381d5a007a6cd940a4523ae2f629617d298611c0898283a1c4783604cb","tests/fixtures/invalid/array/no-close.stderr":"85935faa2e3a57c4f0a7d519629630a96826ce4f217650972cd070fb7dca23a2","tests/fixtures/invalid/array/tables-1.stderr":"f105a34c2d87b61160881eeb09b7f54d244ba2a222d32fbfc755091939942247","tests/fixtures/invalid/array/tables-2.stderr":"77010599d1d61a34119a99acea7d84162d217df93bca01aed3ae73f1eb62dafe","tests/fixtures/invalid/array/text-after-array-entries.stderr":"391ee42f4fa3a7ec51ba1b90e69f1d9278c105426fe66ae1f80e65d7fb6ed379","tests/fixtures/invalid/array/text-before-array-separator.stderr":"7292ebcb8c9c8aaa4041279af5414de3e710977cac948988cdc8b0947223b62b","tests/fixtures/invalid/array/text-in-array.stderr":"0486e3ec5d299e39c61380a2ed8826d886edb730f6d9555a765e4314da7f5b68","tests/fixtures/invalid/bool/almost-false-with-extra.stderr":"0a14178172a5e9ed65a7d551870b4df768e7cfb39f7b66a2ac0643e2aa8374af","tests/fixtures/invalid/bool/almost-false.stderr":"ed5307c42046d6adf0bf4c3d1aa1c75faa23a46029d5e229f0c2ab4db068df1c","tests/fixtures/invalid/bool/almost-true-with-extra.stderr":"6e4dc09948a38c284f5bc52e011322a2c0182ee2f35c772d460fa15a76461d2d","tests/fixtures/invalid/bool/almost-true.stderr":"86b33938625e15e30d4166b4e81f89c669e84c5b96c2cf708d84dbf628536e07","tests/fixtures/invalid/bool/just-f.stderr":"657f90406495c748243b526e1e01737c418453a1a5ad12ff0400631e9fdaf859","tests/fixtures/invalid/bool/just-t.stderr":"8a8f5aa45b0d0acd13f121caafa85a52a8d17f1bd81542d21d3a5ff07f460b60","tests/fixtures/invalid/bool/mixed-case.stderr":"2e9a16757a17c7e604e081584e6f015ecffb0fd7b6ed969a1fe2096c09e7155c","tests/fixtures/invalid/bool/starting-same-false.stderr":"87069893e084d03c3ab540e0607498d371563c0341c6f043aff756c8f1b32c64","tests/fixtures/invalid/bool/starting-same-true.stderr":"2a1817a1e3a6558860eec1d802e1be8f2f2b54da9b2d9eaf1cddecd35d71a8d6","tests/fixtures/invalid/bool/wrong-case-false.stderr":"5eb58e82290b767febd475712f7de9ee712f094a30dcb627a757b305ab64d096","tests/fixtures/invalid/bool/wrong-case-true.stderr":"dc8e696e9137f737a232009e7e9f801aa9ebe4320a445259af74d83a6235c7b7","tests/fixtures/invalid/control/bare-cr.stderr":"568eff61d56bb362866973d9a7a488831b8b08d02f4808538a04b22ebe10bf09","tests/fixtures/invalid/control/bare-formfeed.stderr":"4532c2fdc7c4bab8fa6683cc4c46975c1dddf2f531459793dedfaab73e4ae347","tests/fixtures/invalid/control/bare-null.stderr":"fe799f446b55ba89609a52842b4eb63bfa725035c0006107c85c6a8f6e8db688","tests/fixtures/invalid/control/bare-vertical-tab.stderr":"b85c55e64c58b85343482dadcd5d833fa771a79e1d0f13a24f4185a4d0d826d5","tests/fixtures/invalid/control/comment-cr.stderr":"656e1b16fbc152545a9726a290a8ce84463a73d780ad13a32b65291f56cb7dc6","tests/fixtures/invalid/control/comment-del.stderr":"08f586fc1f6ea69e3718ab43fded3da139d5ae296cfe70bc27a7ffb4b2f106d5","tests/fixtures/invalid/control/comment-lf.stderr":"71725b218014e5ae260d5075f6bb90477e97c946e27a40c797710a190d586a58","tests/fixtures/invalid/control/comment-null.stderr":"39ca1697c9e13969314368c85401dbb141ee80f514ab4a359ea8e74880e33d28","tests/fixtures/invalid/control/comment-us.stderr":"1d8c3a908fb274503d357bdc428b82c97fd9f9b37681be09129a46454f31e0cd","tests/fixtures/invalid/control/control.stderr":"aa1ae71dbb29473161d8f82a163e6862f78c7c55d4831574e6994651fdccdb19","tests/fixtures/invalid/control/multi-del.stderr":"812c0742dab1b933689c925dd1cca16ed185d091acc51026e8fc6585c0401c00","tests/fixtures/invalid/control/multi-lf.stderr":"3d2ac666d19fc3d0fe676b4897557fe3735c43da64b4a71577c04445a1341a06","tests/fixtures/invalid/control/multi-null.stderr":"9fec8ad3ba45ddb96ad3b6a118b4fa648056e26a9128528b2c0a8fa3b01e741c","tests/fixtures/invalid/control/multi-us.stderr":"a4769a44b32457fbc791b15b442293f37c936d2394ca9aa87ad5c964dc7cbb35","tests/fixtures/invalid/control/rawmulti-del.stderr":"b2dd93070d5bb09e19ea6ca015cfa1ef279ac2cf5e7fb242d8b74318f5d8418c","tests/fixtures/invalid/control/rawmulti-lf.stderr":"7e1d64429ed08f831783bace226535852bcebb48aae05541590fb242491cd7e9","tests/fixtures/invalid/control/rawmulti-null.stderr":"84c04cc89a6bc716b6f7811142899014abdb0b49c4ea56bc163c19220b14c323","tests/fixtures/invalid/control/rawmulti-us.stderr":"4e4566a74bde0a055d2e5a0dde72d41208c2ed188175b11c9e46167dff231d3c","tests/fixtures/invalid/control/rawstring-del.stderr":"c49c702bda4ed350dec4fc43edecb16202f8e5f1f4b02b06b42b2109d775a9b5","tests/fixtures/invalid/control/rawstring-lf.stderr":"5b11decc012a95bde096088a285eaaad4b8984f6d683bd633640141b19135530","tests/fixtures/invalid/control/rawstring-null.stderr":"eafa2a63e9d12293b290405049457860a8fef70de56c4ba2f203e5f2c79a8634","tests/fixtures/invalid/control/rawstring-us.stderr":"b3d8e5dcb1c66b93f2543ea325a50decb62178a5f0bea59fe64b04d89472b25e","tests/fixtures/invalid/control/string-bs.stderr":"1b35fdd656fb29e3011e5f4302fd37d0354922a21e740eb947dac766cebf3200","tests/fixtures/invalid/control/string-del.stderr":"ec80f70e9aea38e11191e50e9dfd80415de5b0406608c935aae8b8dbed9a8a7f","tests/fixtures/invalid/control/string-lf.stderr":"f91e1e0035af8ff259ff98c79097f845d8be8886629a93da962daba1079cb382","tests/fixtures/invalid/control/string-null.stderr":"fe34d284c478853bad94235aac1f37ac3c591f97e12990847b5da0b6c99bd47d","tests/fixtures/invalid/control/string-us.stderr":"dce016319c9fa0981f03cfd8b2b1d52d2d847697ea88e037f5a0e28bb53d8830","tests/fixtures/invalid/datetime/hour-over.stderr":"bd2220bdbaa96caf3d2aaff640620e4856bffb722a0e5be61dcb5283ffd08056","tests/fixtures/invalid/datetime/mday-over.stderr":"de9d27d65c68dd09da10c229167ce881dfe0ebda457badfe24b7598ae80c47a6","tests/fixtures/invalid/datetime/mday-under.stderr":"18daf3ce2a6a972476ccabcf92690a488e4f3be804dab8458da2aebad22a2c8c","tests/fixtures/invalid/datetime/minute-over.stderr":"a29009d3f7a6b1d9afad2420f223d6a6e02df8149577547837f5eeec4075bb9a","tests/fixtures/invalid/datetime/month-over.stderr":"37a203b22c3b2510541e413ff347447f9f3319a896ee005b96f65bc0d68150f4","tests/fixtures/invalid/datetime/month-under.stderr":"24c554595ca9a999a1d8e1ef7dc28b443f2f0ad6e17337ee157fb18bdcf678c1","tests/fixtures/invalid/datetime/no-leads-with-milli.stderr":"a35c496884e921aa086c1404bc812ff74f2bfd347a3ecd96640942be5555afbb","tests/fixtures/invalid/datetime/no-leads.stderr":"2e20cb60a1ecee85b172d1402e4d8c425362e4db607706bd39494385dc6dc98e","tests/fixtures/invalid/datetime/no-secs.stderr":"65871ee020e645e737c363b22cf43c160b295871cd4ac97a37d3ea46f60e3250","tests/fixtures/invalid/datetime/no-t.stderr":"ff50b85f6bc0d49000ec6f1303fda9b44bf934c2ede61743363411bbf6ebecbb","tests/fixtures/invalid/datetime/second-over.stderr":"0ed555a874efa08b711b5227501208758d87a01ad8360cf76c3dc8761807fac4","tests/fixtures/invalid/datetime/time-no-leads-2.stderr":"f725d49ddb5af69b7285f071d68e3d8441d5e331adcfd8c025c1f3cbb68028a5","tests/fixtures/invalid/datetime/time-no-leads.stderr":"cf06f3847f3d14655a94d8cfd5a6984dc74115b1d3cdbee0662ef215738bbf65","tests/fixtures/invalid/datetime/trailing-t.stderr":"87a15cd62bbe7cba2b942fe424c045ce30a12fe439a1b49587a5cc037ffa6b09","tests/fixtures/invalid/encoding/bad-utf8-at-end.stderr":"518dc443f0404d486b40bbbd152870276016795b05f3cc8a1de64a0e08fcdda2","tests/fixtures/invalid/encoding/bad-utf8-in-comment.stderr":"e0f252d14c18ea072c098834997db8e5f68b807bb0fa6d3d34e4042a5ea6fbb7","tests/fixtures/invalid/encoding/bad-utf8-in-multiline-literal.stderr":"2328a89cd9043de10ee656f4ea0dd5e6491fd8c0484ac36099c23161dd7a2625","tests/fixtures/invalid/encoding/bad-utf8-in-multiline.stderr":"2328a89cd9043de10ee656f4ea0dd5e6491fd8c0484ac36099c23161dd7a2625","tests/fixtures/invalid/encoding/bad-utf8-in-string-literal.stderr":"eefb00fee073933fbdb95d24a9e7050c281d4719d0cb970c2c06a71a86f108b3","tests/fixtures/invalid/encoding/bad-utf8-in-string.stderr":"eefb00fee073933fbdb95d24a9e7050c281d4719d0cb970c2c06a71a86f108b3","tests/fixtures/invalid/encoding/bom-not-at-start-1.stderr":"bd4e557b8b4586cdb39a8fde46f0bb214954f9f8ef37be46e2cc19823f6d6919","tests/fixtures/invalid/encoding/bom-not-at-start-2.stderr":"27003a498cb355011782dc21f01e15457490b78c472bb9ddb54147413c8f597e","tests/fixtures/invalid/encoding/utf16-bom.stderr":"a8800edcb8f6184b712da53e74bb787c39eb891073575acbae1ad575f15043cc","tests/fixtures/invalid/encoding/utf16.stderr":"edb66c01034865f484ccf7921bfcec1efaa8599762cb9cd30c9c8103275bc4e6","tests/fixtures/invalid/float/double-point-1.stderr":"2917901dd186adc39cb5965faf388fa2babe577ef3bfcadd4919232868a727cf","tests/fixtures/invalid/float/double-point-2.stderr":"7eda489da0436d6f0f2268aa4005b422d215b4785af0c1696c8731908a563f17","tests/fixtures/invalid/float/exp-double-e-1.stderr":"e64082e328fcfbeff57e6801448c769b12bc8e879b77421b688b2e147e386713","tests/fixtures/invalid/float/exp-double-e-2.stderr":"5c45326ef7287ea16a9e08275222e281b5d61c9322f8764f6533707f9772e255","tests/fixtures/invalid/float/exp-double-us.stderr":"ebd30aa3f7cd3a0a5e79bbbde1beff209d24f4ab58eb5552c1baf0eb2194e97b","tests/fixtures/invalid/float/exp-leading-us.stderr":"19c8f676dd45a5db09bd5baba5c3e7b661e83099a340331ee6bb10defe679569","tests/fixtures/invalid/float/exp-point-1.stderr":"23e73e4e63db888546866967a1c0319a1db269f23ee9c277b298e9f2db88800e","tests/fixtures/invalid/float/exp-point-2.stderr":"633328e085fb04d6a79cdfb696f45a1836c3a8b6afafc4cd5e16d48465aa4613","tests/fixtures/invalid/float/exp-trailing-us.stderr":"d633c5a44a55dc2b6cac18f739cecb33526f31d85f72cada0ebf70c4cca56dcd","tests/fixtures/invalid/float/float.stderr":"cc664d16849deec2ae7ebee6a3f46923bd5959075e282315c4f60461cdb13a0f","tests/fixtures/invalid/float/inf-incomplete-1.stderr":"38cd906dfee7f13b8cbdb27f3406ab0499fae3ae16f3c77bc7fc48d009595d93","tests/fixtures/invalid/float/inf-incomplete-2.stderr":"97a9ae1ff194a95b5be2abaf2cd8179ada832cdd9fad349efa9951e7ab92e435","tests/fixtures/invalid/float/inf-incomplete-3.stderr":"034bc609343ecf1e659d6250f719e5f93512e8140228e44e57b538765e58a1f7","tests/fixtures/invalid/float/inf_underscore.stderr":"621326dde26e5364c7af1b562fb651f4184d9b5fc9bc45edc12f52b588d506bc","tests/fixtures/invalid/float/leading-point-neg.stderr":"d19e28ba2f11069800df4dd1951025aa7f75425f7258e8caf4bbf6abe0e84bc9","tests/fixtures/invalid/float/leading-point-plus.stderr":"10750e9acccb17f0682db30fb175d083d06c822a4863d3d6b8ddb6c75b7b22ec","tests/fixtures/invalid/float/leading-point.stderr":"2545b7a615528595f5d53a7338403c83a8587e70600b1501225446e5f456c805","tests/fixtures/invalid/float/leading-us.stderr":"dc958138922097b2e1e3865c7818604b2249268af4acbe5cafe0ce8c68a90a86","tests/fixtures/invalid/float/leading-zero-neg.stderr":"d1fad35fa8d18f93ebfdf681d3476f02600e5c39cc942ca9bc36181476cbbe53","tests/fixtures/invalid/float/leading-zero-plus.stderr":"ad8ba7a7c12cb4b296cc0d43915106732e6a6a713aea67034587d1fc0c8093df","tests/fixtures/invalid/float/leading-zero.stderr":"cc664d16849deec2ae7ebee6a3f46923bd5959075e282315c4f60461cdb13a0f","tests/fixtures/invalid/float/nan-incomplete-1.stderr":"f4bee0b1c639bf800fc4dda38276142e715cd85ab6cc5e93ae2112ea63d7de89","tests/fixtures/invalid/float/nan-incomplete-2.stderr":"dc908ec577d29083bfd709fc4bdc2fa641d7fb2ba77a5d7441215680a8839d69","tests/fixtures/invalid/float/nan-incomplete-3.stderr":"abab5a41e0f2f1bad2d2050d0c913dfd8c15e50530d53ef8de327f106f564e02","tests/fixtures/invalid/float/nan_underscore.stderr":"25b67a7d6c743f673be7b409c9990de5de8b52a1d97c32e6f4e62f33147f1872","tests/fixtures/invalid/float/trailing-point-min.stderr":"69ad03ae81990d580a6d63bdd5ab594de00c0a16694c8671704c6243b4578b38","tests/fixtures/invalid/float/trailing-point-plus.stderr":"fba0bbad890020fe943e9f23644e81bf0bb7d114230fe16182e866fddcfc108b","tests/fixtures/invalid/float/trailing-point.stderr":"2f12b368fd94304ab0126ebb5888c519475f9ca28e9ca702c477cf0085ba9216","tests/fixtures/invalid/float/trailing-us-exp.stderr":"2ad53ae4736ce5134921acf0c16bc5031627c0da3119edcdc4bd7eb300d40337","tests/fixtures/invalid/float/trailing-us.stderr":"506cb8051f1045ea1dc7f11865d58cbca0216502d273e1c10366c8be7cc9ab43","tests/fixtures/invalid/float/us-after-point.stderr":"fa9fb59f703b6770be3dc094c04eb2c4add8a7a7ab79d9fe508cfeee785404f1","tests/fixtures/invalid/float/us-before-point.stderr":"14e09a7a382e249e5143d1c81d6e4623408eb2d505e1e3f86c370a3a3bf6cd9e","tests/fixtures/invalid/inline-table/add.stderr":"bf95d34749254300f4179ed1314cc9cabd7c7b63fc2453fc7adbc7869b63be4a","tests/fixtures/invalid/inline-table/double-comma.stderr":"2132a1c4d97fab140089818f990284333e22ef91d20a9f65e11d4dd15b1a701a","tests/fixtures/invalid/inline-table/duplicate-key.stderr":"72bea73b20005f15ced977aae70a1b0f3bbe3e35598231aca9a2303d770efdc3","tests/fixtures/invalid/inline-table/empty.stderr":"604fef40337f04e5f37a52239d6509850aba95677a7a94ca8476a6c21b648a43","tests/fixtures/invalid/inline-table/linebreak-1.stderr":"45b0611d37c1ece88bf6c88b3528adc3d73e0cd3e3b24dcf07ab151023a6f488","tests/fixtures/invalid/inline-table/linebreak-2.stderr":"f7672965326b44adaf0cb4796a087fbe779a8b17fbb458090a33375d0c54e5b4","tests/fixtures/invalid/inline-table/linebreak-3.stderr":"e8c70f0c91b15e701567e93d8df1cd3bec593696af05ec1d95e8f9e00ab20fa6","tests/fixtures/invalid/inline-table/linebreak-4.stderr":"3d31147f9e1ff5f94384e4df1675dfff2da6f076cb0a729771615f05b990be91","tests/fixtures/invalid/inline-table/no-comma.stderr":"9f1c85e0df72c7e7e011c26a0d5dd9dea8b7a5e18c3ba9a53ff4a20a9429dce9","tests/fixtures/invalid/inline-table/overwrite.stderr":"812d1bc74d07750048a521e513a565676e606d4fa1a32d2ebda7af8fa064d3ab","tests/fixtures/invalid/inline-table/trailing-comma.stderr":"4791911dafd6602e2891d6ffc4d32ef8e9d0c1f8f6d37e84d440feb896d9cb88","tests/fixtures/invalid/integer/capital-bin.stderr":"fcfc8b0bddd36a641d3f5cc2ceee88554619fabf6874e11cdfdd147be8781881","tests/fixtures/invalid/integer/capital-hex.stderr":"c8e2d64f9659435a0387bb7e6447896eda253fef77e0214a4073fcffbac693a7","tests/fixtures/invalid/integer/capital-oct.stderr":"ec465fa25da212b0c9b6265ac8e9cd05c1fa07d614dafb3bc9b2ca74d6c2a7a7","tests/fixtures/invalid/integer/double-sign-nex.stderr":"8d57da526240c1cf73423b688442922ae291ff26e3c09f9c3b5b150e62e5cbaa","tests/fixtures/invalid/integer/double-sign-plus.stderr":"55896d9bd19637e124482966a12109a1a8351620ddc6f8d28553d70359f523f1","tests/fixtures/invalid/integer/double-us.stderr":"f14ed7bd3ad26b2203763fa953dd6e99212e50fb8e43a4eaeb115c1a7df4fc25","tests/fixtures/invalid/integer/incomplete-bin.stderr":"64168fc7ede87a10c12f82325fce644a7d9b9c3af55a313184175df7926845e3","tests/fixtures/invalid/integer/incomplete-hex.stderr":"ed2423540e288f4673bc68822a799bea04f571db5de56154e10360b03ab79553","tests/fixtures/invalid/integer/incomplete-oct.stderr":"9ed35e3078703a38996f20dc3e86477149564c8abd237c644bdf3a5ef26e3417","tests/fixtures/invalid/integer/integer.stderr":"ed5ef991b733b3d51700364da18bf58f1b7eb68053467afcbff22775b3b82788","tests/fixtures/invalid/integer/invalid-bin.stderr":"7248d47f2c7db309254a3a41af28bc1a6e96bfa95e0c8c94d607f65a1a30cee6","tests/fixtures/invalid/integer/invalid-hex.stderr":"3976255c6fe35a1e29f0fed7324eee8420ababd0f6f1f7702908c3df47c88846","tests/fixtures/invalid/integer/invalid-oct.stderr":"9f6776e33887cb446a5590d8fe4e51c36747c634cd5e4efaa84f807d3ce244e0","tests/fixtures/invalid/integer/leading-us-bin.stderr":"28edc918ac016cc9cb7b0b20fe2a5e1dc0175de0aa8105d7a6ca263815c6e4e7","tests/fixtures/invalid/integer/leading-us-hex.stderr":"2a1a5943399c8ba5849ba569411bfefc8323659c852bd714ca917231f6212ef0","tests/fixtures/invalid/integer/leading-us-oct.stderr":"aad69bdd80f94e907bda03558a1302e54d58d8911fe2b564e93cb0ec48403b09","tests/fixtures/invalid/integer/leading-us.stderr":"3a265cc11f1b0d43d4b532a47776486ec7c7ea7afe70813ab00c5a37cf87a9df","tests/fixtures/invalid/integer/leading-zero-1.stderr":"ed5ef991b733b3d51700364da18bf58f1b7eb68053467afcbff22775b3b82788","tests/fixtures/invalid/integer/leading-zero-2.stderr":"5c70e7874256512c0ef6bb364497d4e10154e994056f2feb7c5c729016522091","tests/fixtures/invalid/integer/leading-zero-3.stderr":"fb2730feda6f669a3b8c4332f01369e52ce1b942807f1bf3d9762b1fea04aeac","tests/fixtures/invalid/integer/leading-zero-sign-1.stderr":"c9d2d992eea36c4fe228eb74741bd8d0ede1e354cad132b79462e7b502b37f95","tests/fixtures/invalid/integer/leading-zero-sign-2.stderr":"4248329b339020cc2ea586f2775a0b4f4cbe2ae3f0f75b935263363b8be5eaf5","tests/fixtures/invalid/integer/leading-zero-sign-3.stderr":"3b414808727d3a446efdfca0033525e17536f9b54104d8a9cb9278b054d213df","tests/fixtures/invalid/integer/negative-bin.stderr":"74aae673b861bd46544e4835fe7075e20158dd69e27f75c790d48a6006476c73","tests/fixtures/invalid/integer/negative-hex.stderr":"799bd8120f4cf2c36e7f65a5f9aa43a3ec87dd95dd3bf68501059da9f21f8c9e","tests/fixtures/invalid/integer/negative-oct.stderr":"fb082674d0f5a8a231c91c2d34cf47fdeece4c8c5c8c7b23fb09fce95ed59a9f","tests/fixtures/invalid/integer/positive-bin.stderr":"54d8a33743737f374480cd1235bf3f7e0847d252ef7e2bb1d447529cbc0f6692","tests/fixtures/invalid/integer/positive-hex.stderr":"3b21b23cc3dd6b213a19256f4ffb4bb36172de2f739f90bbea78636f7a50524b","tests/fixtures/invalid/integer/positive-oct.stderr":"cc493d14bcb092f49b517fa5143e29c45020d491d94ac662f85b2af34805cf11","tests/fixtures/invalid/integer/text-after-integer.stderr":"07a13ad4841a452eff00947234a4ebac4d209ea0294162888db35668648bb55d","tests/fixtures/invalid/integer/trailing-us-bin.stderr":"62da06cf06527b9e9cbeba6c5299ce6001d40592e9d007c8350090977f4d1b58","tests/fixtures/invalid/integer/trailing-us-hex.stderr":"1b290eada58a7202b1a9251afd8e0e72a4caa8ad5c85036d1050e7de8141e94d","tests/fixtures/invalid/integer/trailing-us-oct.stderr":"34e6f86ffb0099e6e1ba67deb51e36af62dfce4e7299b94503a219339bf16447","tests/fixtures/invalid/integer/trailing-us.stderr":"3ab49ee921eb772f5aa4eaf0fb3619b1dcd9a9db3f4ebbd9bc505581a985e753","tests/fixtures/invalid/integer/us-after-bin.stderr":"a94a87ebab3536899ce7c0c785f020b3a236c60d24c0bd7494628ca310c40768","tests/fixtures/invalid/integer/us-after-hex.stderr":"9009b187f615f06e3392eabd8ffa58311ed1c2b1cd76f8c5bd99671242f2e026","tests/fixtures/invalid/integer/us-after-oct.stderr":"05af70a21980416fbd602337f9af22a1c600a294635d10ef1ca1b2138338e712","tests/fixtures/invalid/key/after-array.stderr":"487d957b20226ac36e27d6efb1e3d24147284c9a5e10a0188427a1c940d31ef0","tests/fixtures/invalid/key/after-table.stderr":"f70e84770817f096fcc1b6195c6b0a79d25210c6930ce412a89646040ee3d713","tests/fixtures/invalid/key/after-value.stderr":"00d4d2d3ccd61f64a92df0ca575aeafcd96e91d053d835ca855973339ba458cf","tests/fixtures/invalid/key/bare-invalid-character.stderr":"b1f64d54a43017e6cc09755fa7ba477901721d23f9271ec658fc9362f46631b3","tests/fixtures/invalid/key/dotted-redefine-table.stderr":"564febb355d1556df42f428a046ac6fdc5dad49b2b736be5824b0c13fcd1fae9","tests/fixtures/invalid/key/duplicate-keys.stderr":"7c9dfef2ef19b1487b7592a267ab5ba21c8b833dfa9ec1c3151e369c2fdba26e","tests/fixtures/invalid/key/duplicate.stderr":"764ef48bb06c9096c853b1156c8d29ba0065616939a5335146f5af88a424cea3","tests/fixtures/invalid/key/empty.stderr":"af6d3636ca73e5496c40d9c918c59b61fd86812db262649e5268094193873130","tests/fixtures/invalid/key/escape.stderr":"155aa9389f0eb28cac3b42974af7ea9e2eef8d96f084f08f9f75e960fc8ce8c7","tests/fixtures/invalid/key/hash.stderr":"85dd91b96aa4f81cc7922b02b411f25d9053bddd1e5b893c2a2ee9d0115a7cac","tests/fixtures/invalid/key/multiline.stderr":"d625f2caaf01d53d72d6f1c3df0952fe3ca8c5f3b081503cb02b9994c088b733","tests/fixtures/invalid/key/newline.stderr":"714aed0a140062f977ec85b9afa50f68448c67e806168e60b4f4554ab270b2b9","tests/fixtures/invalid/key/no-eol.stderr":"440ec927e94f0e520a0f256c865041f0478e1c82f3bb79323b7ddc36fc942edf","tests/fixtures/invalid/key/open-bracket.stderr":"3b36814373f51a8ea00a448d65bc514e8d99f5163b7dd8101df62bcd0a06e801","tests/fixtures/invalid/key/partial-quoted.stderr":"dc9059a014ed53071ed170b1e280923556dc09e0be2ae96cc8474e9da59fa378","tests/fixtures/invalid/key/quoted-unclosed-1.stderr":"6cdec8a7c5352a2f246273afaa923dfa81d4d2e68cca5b4f9a19193559b164c2","tests/fixtures/invalid/key/quoted-unclosed-2.stderr":"b4817e6f85a90fbb6adf049ba57c268f9888f1b42b3d62200c359606176170b1","tests/fixtures/invalid/key/single-open-bracket.stderr":"917c0203d1e45309fcff82ce33fdd2d989f630fb99290a40cb9e08a6f7ca0ef8","tests/fixtures/invalid/key/space.stderr":"3a5fa712d667890678873e3d4e4cabb084c67091c5ec6155355d5bd4229585dc","tests/fixtures/invalid/key/special-character.stderr":"a84c2f293c1e421a1c87050cb0211de80dbfe7a79939db0338fa35bf0c181ef2","tests/fixtures/invalid/key/start-bracket.stderr":"223d8a22bf34459cd9bcb993ae2a51ab3cc436674e3367e92f7d74e9f8710a45","tests/fixtures/invalid/key/start-dot.stderr":"f9366a1492ae24fd0721724b4039d2675e91219de564aff2826adefd83fac571","tests/fixtures/invalid/key/two-equals.stderr":"a0aae899cfa75df41104a4d3090a309fc7ebcd95bb5a944cf742f3d3fc9d4782","tests/fixtures/invalid/key/two-equals2.stderr":"861826b9456ab3a74f63f5c555e13d959a3991dfa6ce126ae5ed14d43f7dcee1","tests/fixtures/invalid/key/two-equals3.stderr":"71614864344e321ac5de238b7ef9d097c6d7f3ac3eee4118d96827b4b8bd6658","tests/fixtures/invalid/key/without-value-1.stderr":"16c2823a39a82c3c27e0959a691b7a95e3392d62195884697893d373b967b9c0","tests/fixtures/invalid/key/without-value-2.stderr":"d340f94f5d96f5730ab269db7ef27aca171d64e35af1181c474d75a7d11d6590","tests/fixtures/invalid/key/without-value-3.stderr":"3cf3072fe9206bfe6c682103d0414627a5a63db4c4a319cf37efeb5fe6b92007","tests/fixtures/invalid/key/without-value-4.stderr":"07132bec96e9a9a672bafdc3c448b7c596257245f8c3e2cae04641f9798644ec","tests/fixtures/invalid/spec/inline-table-2-0.stderr":"5ad1a938b1d1f0f3fdbd1871efdebfd30e136407ecdd9e2eff22150d00624b3f","tests/fixtures/invalid/spec/inline-table-3-0.stderr":"fcbc05e911b7db81bd918768fe98a51a7026fd476d616718cc417d2f08bcc1a1","tests/fixtures/invalid/spec/key-value-pair-1.stderr":"d5391142dfd56040840cf91b1e28e3c048229e3d9998534d41001cd6657f9bd6","tests/fixtures/invalid/spec/keys-2.stderr":"3c4ee6066fc75d2c1f1b325f618a01113694c318e330ff4f237e89127f332c87","tests/fixtures/invalid/spec/string-4-0.stderr":"910ee4b240159b828a7509c8dfb46507071a8d8636f3935a3914d6d91f315295","tests/fixtures/invalid/spec/string-7-0.stderr":"5128f0a930b3034e494a6bee4f384a587e9fd858b25f8cc529a488c94ee9670d","tests/fixtures/invalid/spec/table-9-0.stderr":"49dac70d337266f5c6b333fee468f279fed1bff62bfb4ec7436c8b6683ce0dd2","tests/fixtures/invalid/spec/table-9-1.stderr":"d9e071c70356c01b6537f876989ad2067e7773dd5eb24a298439d192dbad12d0","tests/fixtures/invalid/string/bad-byte-escape.stderr":"14f6ae446b3b8cb434267eba11c6ec5a1badef4f867169b173698cf9f1a29d95","tests/fixtures/invalid/string/bad-codepoint.stderr":"e5a9704b87fe85e447e817197ad4e59e27b33bd93e7c5ad3987561d119ce6ee4","tests/fixtures/invalid/string/bad-concat.stderr":"499219633467b9174471db40543ca188e2b906c470e511d2f701f5f5475d96be","tests/fixtures/invalid/string/bad-escape-1.stderr":"34a15ce7012217c62d31d5392038517c216f0cbfd5d75fb5f3c2bb07afd3f25c","tests/fixtures/invalid/string/bad-escape-2.stderr":"955aab40b16043c847d85d04e6adcd093c930dd8416d29c2ab5953c077eac6f4","tests/fixtures/invalid/string/bad-hex-esc-1.stderr":"aea935cf1e17743356e6fb1059afed2d0ee5262906594782e5537a025398038e","tests/fixtures/invalid/string/bad-hex-esc-2.stderr":"deac5217cf80acc759e1b40c43f5f56431b276dc2c896aae5490d57583105e06","tests/fixtures/invalid/string/bad-hex-esc-3.stderr":"94ecf886427e8fe5daf1d8f932bf1887f2533b10bc1f57cb6de03ea28fef466f","tests/fixtures/invalid/string/bad-hex-esc-4.stderr":"382b011dd4070554ee875fde06703d8332ef6ad36f3619f3536b0a4997ee2745","tests/fixtures/invalid/string/bad-hex-esc-5.stderr":"a8a039fae822eda68591da28ff2a117b5d85e99d066e9126ebbb6426a1cad52d","tests/fixtures/invalid/string/bad-hex-esc.stderr":"aea935cf1e17743356e6fb1059afed2d0ee5262906594782e5537a025398038e","tests/fixtures/invalid/string/bad-multiline.stderr":"141e5770190dd184bb1f64f6bb14fc017210bbd918ab5c8b7a3d80b86b21772b","tests/fixtures/invalid/string/bad-slash-escape.stderr":"d62f894ee166bddf84432507fb4ba56473c0a230fd88a3ccc2b199a72a34e613","tests/fixtures/invalid/string/bad-uni-esc-1.stderr":"d1d6e0c78b64f776a428aa7cb332b0ccd659d24950dd3e8f1d2a1450f61b37e5","tests/fixtures/invalid/string/bad-uni-esc-2.stderr":"d8ed938bafdeda05c083d79ed73f5043dabe0f5f1515c6857ae7a61db9026ebc","tests/fixtures/invalid/string/bad-uni-esc-3.stderr":"de1c29897549ae37988a38e1c370f9974fcbf7d4c4b3fd457d731999cfc05929","tests/fixtures/invalid/string/bad-uni-esc-4.stderr":"4e5a715e8dc212d073d399bb0ae9b49413396744282a195c34cb03e6f4fbd9eb","tests/fixtures/invalid/string/bad-uni-esc-5.stderr":"2419cd927d8e31ebf5025558e70bb1295d98bdb36c17f0e00620b9c4a7aadbf6","tests/fixtures/invalid/string/basic-byte-escapes.stderr":"b42fd0273c7438bf13ddea9552204bb9209cdcc8e4151311d2446185d2cd546a","tests/fixtures/invalid/string/basic-multiline-out-of-range-unicode-escape-1.stderr":"725cd4955987c3d6e736832281316d6c1a2446303e9a1dc78900cef4bb84ee64","tests/fixtures/invalid/string/basic-multiline-out-of-range-unicode-escape-2.stderr":"c6698fbdb95188d53bfdaa4a4f590d86a73aafcc321a5d9511ab43ce51be1c78","tests/fixtures/invalid/string/basic-multiline-quotes.stderr":"28177a49532f22aaffc9dc204592a2c5eca2fc20f8e208b7c7f589201e8b7de5","tests/fixtures/invalid/string/basic-multiline-unknown-escape.stderr":"a83406b30eb3ab2cebb0230d8d65d0b7583885138f2c070976ae61de2c8b17f3","tests/fixtures/invalid/string/basic-out-of-range-unicode-escape-1.stderr":"19af67599c6c2eef340c9fdb0ab2cc788928def50280af939247a1274447781f","tests/fixtures/invalid/string/basic-out-of-range-unicode-escape-2.stderr":"0e2e1a69358502ec17a07e4fc151b70e8a3b5123798cb38f98fe2d146515a84e","tests/fixtures/invalid/string/basic-unknown-escape.stderr":"1de467948fb18f61336350063701d9c5a6615054fe740a9be650f71f5ca4236b","tests/fixtures/invalid/string/literal-multiline-quotes-1.stderr":"249123229606aa8eedff1b5bdead5022daf470e47dbca639e32019d1d61dbcf9","tests/fixtures/invalid/string/literal-multiline-quotes-2.stderr":"d9784af1ff056a90bf531307749d53a5d24ffffbc0f4aada7fcee417a50d1615","tests/fixtures/invalid/string/missing-quotes.stderr":"462f24701d2c51d36b18d06b69be2f6eb36449b5f3ffbaa737fcbd2b2151ae4a","tests/fixtures/invalid/string/multiline-bad-escape-1.stderr":"18469c4d37d011b3f30ae17e3111b5e8a9526d593475e5d8d7a9b19461a40e8d","tests/fixtures/invalid/string/multiline-bad-escape-2.stderr":"d43896d3005c8470dc8149e2b74eb8825c6d9fedfe9f48125ad88a95c1dc3035","tests/fixtures/invalid/string/multiline-bad-escape-3.stderr":"92f732c6bcb922e25d2a001a389f93b596dd0e91109cbdcb651efa146309dc2a","tests/fixtures/invalid/string/multiline-escape-space.stderr":"94b451b6c03055186777a248cb216f95a1b2e29df25549f345d96bd0a4e63f1e","tests/fixtures/invalid/string/multiline-no-close-2.stderr":"e500e99a44305b1e148b211e963478cf1554f8c9536d3108390cf41d5b2ce069","tests/fixtures/invalid/string/multiline-no-close.stderr":"d5b9602d23b0cb023fbe3ae80d862fd60332475ba8863a1e977f17cb326a4548","tests/fixtures/invalid/string/multiline-quotes-1.stderr":"046956658c0a73e665e7a6a2044ff83c8efb8cdd8c2ab153c163eb1e61068c56","tests/fixtures/invalid/string/no-close.stderr":"3ad8aff0932d98592b808fc6f44fa68a854097f8025e92c11af1acb6de3d3cc7","tests/fixtures/invalid/string/text-after-string.stderr":"1c1e4677be8d3dba0e7933b3ed1cbb6e0bcf6f600cf9a989a7b09c9424a4d0a7","tests/fixtures/invalid/string/wrong-close.stderr":"441f4f1b73c11c8dbf2f73cf9a7766f17a9517b3b9142e86736ed43eaec07f18","tests/fixtures/invalid/table/append-with-dotted-keys-1.stderr":"a67f1f152005295e0a1bb3dcaaa755edd05f19ac5316b8ad2eb4d45797e0f770","tests/fixtures/invalid/table/append-with-dotted-keys-2.stderr":"72d9ea8a90b4d9e5319c2bf951bdde6a87a205612e82ed5a09cea2b706bfde7f","tests/fixtures/invalid/table/array-empty.stderr":"e8a41c60adf7756361920816b6c4f44125a813c869b71fae2c98473e4da1b231","tests/fixtures/invalid/table/array-implicit.stderr":"7797ce41aab0567fc9d40e277cc32c12e1f16ffc0e73857fdb3bbf754246305f","tests/fixtures/invalid/table/array-missing-bracket.stderr":"5f1e8703d59398f6595d21ed0abcc7dc3ce77943ad0f71eede9ad63ea2bcc7c1","tests/fixtures/invalid/table/duplicate-key-dotted-table.stderr":"ca58908463cbe2ec6b3de314237c178fee64245cc738c72a7b9e08bb3d02b2b0","tests/fixtures/invalid/table/duplicate-key-dotted-table2.stderr":"cb59f2ed324642de947f3cd9373ca111ec35104a5f33578f64c48084ce1a84f5","tests/fixtures/invalid/table/duplicate-key-table.stderr":"f4816522738b3e2ace87d1100a3d73e6a122d8dc67d05e0b35a1438e16a8952c","tests/fixtures/invalid/table/duplicate-table-array.stderr":"11d293e4b4f205fc98cd892f25a25f533cb922c963ecf095a932d2e9d550be4f","tests/fixtures/invalid/table/duplicate-table-array2.stderr":"fa9cd3b1212eed14ec56b66a16471ac2f7c0398d743982abb7c5cb4b5c7a5fe4","tests/fixtures/invalid/table/duplicate.stderr":"3e6d1b1a2f44d449e8cb0098e7c40ad1e755363b446f3821c399abfb26eb9939","tests/fixtures/invalid/table/empty-implicit-table.stderr":"cd3606ce97c5537d18146cd978403636a65fa703c83616da75b8cafa86e8fa24","tests/fixtures/invalid/table/empty.stderr":"4399e419abbcfbec93f5915e7fbdd11b6e462a4c066a29eacda159abfc588734","tests/fixtures/invalid/table/equals-sign.stderr":"472de6b908a03c99637b635a3a898ed956684ae422e1b4b135ec94986ea45f2d","tests/fixtures/invalid/table/llbrace.stderr":"db6bbee7ed15994398901c46ed4b40904897e71f5d972deb7904ccac49cd834e","tests/fixtures/invalid/table/nested-brackets-close.stderr":"e1dff60ea8f77dd1b8fae7d1d63c788c838c80560172d92377cc168f5cb5923a","tests/fixtures/invalid/table/nested-brackets-open.stderr":"bd58eb0630dc0c51ebc288258d360d707c8f43a5877ddc21e9420f8eb76a2f4c","tests/fixtures/invalid/table/quoted-no-close.stderr":"6bf7e2d30c735a55f595140af7c7f6be89b6faf868f4473ea39570fdb87d5823","tests/fixtures/invalid/table/redefine.stderr":"3e794bce5bb6ae9f603f50e3dc62d136701ec478078e8a8e99c94229778e24ca","tests/fixtures/invalid/table/rrbrace.stderr":"342a5ff362c8b4c1e85a6442029291bd33165a3b36552794fcd5269249bf36a1","tests/fixtures/invalid/table/text-after-table.stderr":"6dfaf1fc3199f0602fea52f7b1c65869eb2f8643b9e90dc1e718a183fb972485","tests/fixtures/invalid/table/whitespace.stderr":"fa48d4dc83f92e729dc25c6fc6a0c336014391b4bdb3392998f18141d2deb350","tests/fixtures/invalid/table/with-pound.stderr":"97dbd1ceb7f357bd98cc1caa9a602c638aaa5831237b7d63b18153acc64d3af4","tests/invalid.rs":"daa9034453fb7f10718020e36a07a19664eb852071995f17480c595cb44e2cdf","tests/testsuite/convert.rs":"9140d681dbb9370b975d5bc1cd4e9e640ac4023c6789edcae544e66657ad5fe9","tests/testsuite/datetime.rs":"105d95570d05e9ecbc30bfe7d081f9d63e2f36634e9124da012f467c6134549e","tests/testsuite/edit.rs":"7ff72670fe971ce9cd3e94a9254d1f54ebc792d8881b688d397cd9a996f2d051","tests/testsuite/invalid.rs":"31789643e3419ab922f8258e5a0421e1648b64aa5b96d3e1fb79bae36abf286e","tests/testsuite/main.rs":"a363749a7074ee95e3b7c556c0b0f59f5818445ca4762ec53693f451359b268a","tests/testsuite/parse.rs":"3bd2b50bd735c6ef5ed276ce6409f068c3aa93abe2480f285c18a9c5425fbd96","tests/testsuite/stackoverflow.rs":"426d4e621bbafe62f8aba2e8c62e715929185d5eca4c5083b6427b601abc667a"},"package":"f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a"} \ No newline at end of file
+{"files":{"Cargo.lock":"6738efb0ffbdf9c0dc3f063a0c6f707e3f80c34c4f0b546a1857f0fca461a77d","Cargo.toml":"a28b5bf79c886e89947176303ea0b3cc28d6e2e10fb03c8faa90e95db23c0788","LICENSE-APACHE":"c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08","LICENSE-MIT":"6efb0476a1cc085077ed49357026d8c173bf33017278ef440f222fb9cbcb66e6","README.md":"6222c7f42444de756a5987bf506f687b093d1596278a5858c49fbc0c27d7b8fd","examples/visit.rs":"657756caba28aa87a8b10104aba704fd2365579c57a293bc572a8d72173ba174","src/array.rs":"cd672b463152822d673868cc4c4cf28d719ecc7e224399c59a3f51b9e535926e","src/array_of_tables.rs":"a4c391b2dedd475546159fec824e2cca5f32e4e684fdf02792f645d2162881ed","src/de/array.rs":"7969d28e98e366cd16c9ed74128404a147a2b787c54d0450594811a92d17b310","src/de/datetime.rs":"a29e76372fc382686c31ee93fd54c749ea3d775c8d4fcc2b2643f9464ea23730","src/de/key.rs":"0b4c60586421a0c7b64ce93d41717823d93aadb99ff360169f7e68ded8eee9e2","src/de/mod.rs":"b7344ac410b21b2c82eb88782f48979d6f850a778a19bb2eea7228e834374d2f","src/de/spanned.rs":"5c959639bf4b3d19c6b18e625a57b28b311164bf7b191bbc4d30aa97b7239679","src/de/table.rs":"b1f0f95ea502126b8707ba945596f3c47d83d46680622899334567df1b58df1d","src/de/table_enum.rs":"ad3aab5169d6ddb2e7cd50a4dced4ee2485b11388876474969137b12fe6ee1e0","src/de/value.rs":"57361229d150b5885748d079d7295e48d751506b9662b2cd2c623da331c3bb45","src/document.rs":"7882374aa62978cac3752f346253399f281121a544927feed2882ed9a008361d","src/encode.rs":"489429163f822509116f3ecd81c3689df1fc642b61154482ed77bcd658027416","src/index.rs":"34ed0a4cc0cd55ce29885ed8123cc7c09c8ba3b9aa8d3b0b47554c1a41d31577","src/inline_table.rs":"d53af5947f05f4c8bf9338349e4cf521a21a2d4a3316d40f4c945161cd47ffdd","src/internal_string.rs":"8c84f94363ed012eb7114c6b3f6b371155d0ce740ce44ec9d315aedf048c1d11","src/item.rs":"57367ddb01d1dbfbf385634f0ba7d3ef2ee53d453ff19d52561ed16feb73ec3b","src/key.rs":"b6577a803b818e2010134615bc8cf93ff3a03d7097f29cba7a6b98306a81fdce","src/lib.rs":"3ff2ffd3366e495278fd7b3118ea54b7d09534380396a75b46c409e3c563c67c","src/parser/array.rs":"c8c2e789ce082cb617c11e28f07cfeed3663966f608b9b3d76a57aa321b898d5","src/parser/datetime.rs":"9c4d968e0aa57a82b836492c23e902aa20d888766832d680781cf5b2539e607a","src/parser/document.rs":"0b94e7e0bd53606949d66bb6854bf275bed399b869bbce18d6acbd65238de112","src/parser/errors.rs":"cb9bd80789c16d33d5aa2b2334b193108615846a6a548bba498df450754739a6","src/parser/inline_table.rs":"3c2bedc892618ba25ef241fcfc190b874490e4ae8a87a39bdfb4f5243de2fde9","src/parser/key.rs":"ab7dacec7dbb3f6c5872f1bb8da9db3a5500f46a7685bb5c48414c6644977fb0","src/parser/mod.rs":"08004fa6b4751a20d1b963b3c3c06bbfe05c13d342a1f035cc76de6b9bcd333e","src/parser/numbers.rs":"dbdfa6b75bc960642bb66ff3cedcee836a4ef785a6356cd2a58dd7f2d09ec40d","src/parser/state.rs":"a4bf5972b71320deff2e38937490d83eebd69b930ce6a2ee354f6714c52f6f52","src/parser/strings.rs":"192749d3f5e04ed8c3add16624f430d52576bad2424c92a61bddd81994cf5ff3","src/parser/table.rs":"c716d82caed27229afb22e757cb14b2828356fc69d33ab94d8f43043f992cd2b","src/parser/trivia.rs":"c2d9feaa958c339de82c6756a2e8ee749d0324db0c9890abc237fb213bf7b2e0","src/parser/value.rs":"645352f0e784aa1f744dde7e31f5039af51be8b51d887b22430189c56a719642","src/raw_string.rs":"dcec7da0aab75a5ff5891a0b4a22265ed47c17f9d802ec135e40f2bb1b0a7c60","src/repr.rs":"68356f3b89cd76b75bd9f78b6fbd31fbcc96d8195a7118d286dca92950adaee4","src/ser/array.rs":"5fb55303365bf6991f7af523931d1a046e88d3125c099317e12a7d4f592321a8","src/ser/key.rs":"9bad3bee90876c5c54aaa5caee92bfe30d79a100615902118b35b3ceb40b524e","src/ser/map.rs":"148423fba5b370335f832b2f6851adae29f4cf90dd05ace562e44cf2bf071aa2","src/ser/mod.rs":"5f5d0d7e7e2ec0c486e90ece7a1f5bbf166da640b1208365d89536d6616fb74b","src/ser/pretty.rs":"9a9f6d43b2eab487de8af216b9950c93318c9ee6a91f4707ffa41e2ee492c902","src/ser/value.rs":"3bd14fc54ea343cbc04a5b74461aab0eb1043b558cbc58bd02a7d08bbc020ee2","src/table.rs":"bbc24b198bf6298072a73d520f58b323dfe64ff4651383d12aad05fe953d26ef","src/value.rs":"e5f8ae9f9707a77dfc0192d141661a7126ce694ef2d52cc33727e93629762453","src/visit.rs":"34b49c3091a6ef7c1513429f8290c26989da25cec496d3993abf33fa65ebfc58","src/visit_mut.rs":"b184d7bb94038fdc2e0fee8689112f01377d9f8c05ffafb8a1f5f2263e80ee27","tests/decoder.rs":"8093389d542f50974d6a606321b0413941709ac2cbdef48934b60088bb21e3a3","tests/decoder_compliance.rs":"d804ef45b0498869d05ac5c1216dc29e94963b2ec4f814e867f0fe8b71e9c639","tests/encoder.rs":"c84dd8e14ade77a4d55f932418567196e188fe65d3957408b9ce07c2c27c4da0","tests/encoder_compliance.rs":"ca696031cb8f664728521da0370eb78e0351a5ac7134ad6cb12bc25f85757c97","tests/fixtures/invalid/array/array.stderr":"db4f1f06909589f9cb49d6657b6c39444e53b4ec8c4d3f0b9704ab5beaf68d2a","tests/fixtures/invalid/array/double-comma-1.stderr":"db4f1f06909589f9cb49d6657b6c39444e53b4ec8c4d3f0b9704ab5beaf68d2a","tests/fixtures/invalid/array/double-comma-2.stderr":"da4b8df6dbc2ef41b7b1b08b65a160ba37d07dec0c1ccf4184d6381a857b8762","tests/fixtures/invalid/array/extend-defined-aot.stderr":"a9dec506541bbdb96725d9f989572c10f29a52eb4e167fadea8929d7b6729b7b","tests/fixtures/invalid/array/extending-table.stderr":"a6c077cb49c41a9d10aca0bac6c571e570f0a772c6311d6a835f9cc46f4ab7cd","tests/fixtures/invalid/array/missing-separator-1.stderr":"98773b4d82cc32c0f8d1d8e6078109f7d9655b13d58e4b62fd22cef9f9ad725c","tests/fixtures/invalid/array/missing-separator-2.stderr":"eb38b2683f119d8b9b8c6b8ffd46da784112565ef1033febbe59469e14baea76","tests/fixtures/invalid/array/no-close-1.stderr":"a02ff4b3edf627873f0cb1f4242305f6a9a032b6f897fa13b8070c1a9ae85afe","tests/fixtures/invalid/array/no-close-2.stderr":"dfac1f12f502214388deecedf7a9720338ffd13b3184178410581e242ba8124b","tests/fixtures/invalid/array/no-close-3.stderr":"1930ad00952820805e208ebaf1ae3df243f492b6b2924bbfffbe458f31d89b29","tests/fixtures/invalid/array/no-close-4.stderr":"198293e991ab522435e383ef906f0594a0ea8126c792db934eba142369189e1c","tests/fixtures/invalid/array/no-close-5.stderr":"279aa5db5d92d3e729fe326321d2d217ff33db3c5e2bc2a5043909fc798c226e","tests/fixtures/invalid/array/no-close-6.stderr":"ccd74b7a7c01bb96a748c0e797f6207f0314d76520e4c1d1a9cde076e2284216","tests/fixtures/invalid/array/no-close-7.stderr":"9c6ab0c93fcf0c9ff7fdf8bc13f3b62864305509b80659c225a55641133abcf5","tests/fixtures/invalid/array/no-close-8.stderr":"c4b7fe79f9a354152c36e130af4862c47908cff3c84ba9be8bdbe76c35d9c6af","tests/fixtures/invalid/array/no-close-table-1.stderr":"545ad4381d5a007a6cd940a4523ae2f629617d298611c0898283a1c4783604cb","tests/fixtures/invalid/array/no-close-table-2.stderr":"5a2b4bf9026aa20c749551cd77458c5ffba008b5b235fa05fb7c756917018eb8","tests/fixtures/invalid/array/no-comma-1.stderr":"7d2f2923638cecc2f89e8ff1334a9da44fa7e137bea12d5019ef25f576f015af","tests/fixtures/invalid/array/no-comma-2.stderr":"d95a7a43534c632efa2502e3b5f8eedabf2f05ad6bfdd68e2f9fd3d8a22ba028","tests/fixtures/invalid/array/no-comma-3.stderr":"ae8ec653f564b247644854fecf59e097cc32e445aa4775aed8d18a207af5ec45","tests/fixtures/invalid/array/only-comma-1.stderr":"6f35677e711812007adc9a59341bc62bf2b7bcec80a456d19a2468ea8fd27b47","tests/fixtures/invalid/array/only-comma-2.stderr":"9d0017e6798574bd85810e64816ddfd08ccc36e25153006958fe023e2a007331","tests/fixtures/invalid/array/tables-1.stderr":"f105a34c2d87b61160881eeb09b7f54d244ba2a222d32fbfc755091939942247","tests/fixtures/invalid/array/tables-2.stderr":"77010599d1d61a34119a99acea7d84162d217df93bca01aed3ae73f1eb62dafe","tests/fixtures/invalid/array/text-after-array-entries.stderr":"391ee42f4fa3a7ec51ba1b90e69f1d9278c105426fe66ae1f80e65d7fb6ed379","tests/fixtures/invalid/array/text-before-array-separator.stderr":"7292ebcb8c9c8aaa4041279af5414de3e710977cac948988cdc8b0947223b62b","tests/fixtures/invalid/array/text-in-array.stderr":"0486e3ec5d299e39c61380a2ed8826d886edb730f6d9555a765e4314da7f5b68","tests/fixtures/invalid/bool/almost-false-with-extra.stderr":"d489307ba1d0a3dcd1bcff067437f0cde1521c6fddb1311bf396468521eabe81","tests/fixtures/invalid/bool/almost-false.stderr":"399829efe867bedbcef2ad2073df621f8297877180f71c6292209426da7b09dc","tests/fixtures/invalid/bool/almost-true-with-extra.stderr":"439c66bbdcdd335cb858f3cfc692fa3a78f7802591954909fb6807a62440d334","tests/fixtures/invalid/bool/almost-true.stderr":"3aed4e8704abc2099d8a881ee496a868c4745a0cfe7df781de613016543f4313","tests/fixtures/invalid/bool/bool.stderr":"d489307ba1d0a3dcd1bcff067437f0cde1521c6fddb1311bf396468521eabe81","tests/fixtures/invalid/bool/capitalized-false.stderr":"09c2b3b51460a52bc274c5d0b08024c76ea3dd7e067ef20765cc56d2a4f60087","tests/fixtures/invalid/bool/capitalized-true.stderr":"d0fa94dc8a4fb0f17550052fde5e10134e8ccbc84f1e90093446f1cb99f01a70","tests/fixtures/invalid/bool/just-f.stderr":"5f6a3a206bf49fb5eade446dc8f432037a4026f49beac01e453fd8c3610901b2","tests/fixtures/invalid/bool/just-t.stderr":"175bdb4ffa7259c5bc346fb088de8545e8e1d8254d1e2ac0d33c16b539e2270e","tests/fixtures/invalid/bool/mixed-case-false.stderr":"9de4d4b695614f3593abcb27a6f68ef5c578a96bec01472607c35cde28d48b10","tests/fixtures/invalid/bool/mixed-case-true.stderr":"45e314b026b819d568350bb62a39a2e5fd970acaf0a6591539d043abb9dee629","tests/fixtures/invalid/bool/mixed-case.stderr":"927b85ba3c3084e925cb8959c07d42f9f19f4ca8f84d7dd6babf15f1d9a1048f","tests/fixtures/invalid/bool/starting-same-false.stderr":"7e0f1f2d8ae538a5b156da19be0630d25e0d2dfa44bd97cdb125bf3e042df7d3","tests/fixtures/invalid/bool/starting-same-true.stderr":"bdf30c50dcc0ff8c928e753962f6dba7acc6f945a2958e0b03e690a126270ea0","tests/fixtures/invalid/bool/wrong-case-false.stderr":"811f36bc4df7755c3850b4e933e5436fb54183ac7fcf3599e8373d7545be1c2c","tests/fixtures/invalid/bool/wrong-case-true.stderr":"90520b03257419ec4a826b7f989e5aa74314a0aeeceaf6bf1873e867715495a6","tests/fixtures/invalid/control/bare-cr.stderr":"568eff61d56bb362866973d9a7a488831b8b08d02f4808538a04b22ebe10bf09","tests/fixtures/invalid/control/bare-formfeed.stderr":"86ebf66dcdf202fd832d91892b4b62eca65957198cca9567b10f3400997e9f90","tests/fixtures/invalid/control/bare-null.stderr":"e6bf2df7229c8632a1c7bce682914166520216c2d6c3ccd4c2e716dc700d5bca","tests/fixtures/invalid/control/bare-vertical-tab.stderr":"b85c55e64c58b85343482dadcd5d833fa771a79e1d0f13a24f4185a4d0d826d5","tests/fixtures/invalid/control/comment-cr.stderr":"3b334037fc70762903ebc2c3d0786554bb62d9f146dc801e07841ac7f8370e78","tests/fixtures/invalid/control/comment-del.stderr":"872065efcbcddffab0679160bbce0c8e2519ae7ccb8b4b667a8b78c4bd13522d","tests/fixtures/invalid/control/comment-ff.stderr":"bdcaf413adee168eaee3a7723b2939fe67e59914a834cbc559902eb94e4ca02b","tests/fixtures/invalid/control/comment-lf.stderr":"898787080f260e05ca20e6982ac4cce5572a6ed84a9244ce07a41f710db9a0cf","tests/fixtures/invalid/control/comment-null.stderr":"bcc48727ae370e45918682d6a17bc680b126d4792d4a33524c802f45cebc03d6","tests/fixtures/invalid/control/comment-us.stderr":"37d7a6c0a28989966af74530c2885bfc7ba6ddb31b58bce3f26543e34043b88c","tests/fixtures/invalid/control/control.stderr":"6ba75c9dbd0e03531f5a5ead2cb781a702d3600c76b2a4cf1bf7c02c1c9aca1a","tests/fixtures/invalid/control/multi-cr.stderr":"29fde9a540e77ed46dae0a227b666a9c102d5263cc5cac811e0e451bd403ad91","tests/fixtures/invalid/control/multi-del.stderr":"79f0d85f5b44a7dcad9d98adbef25b6ce54bb6dbf79ffcd3ea230a07144b4b82","tests/fixtures/invalid/control/multi-lf.stderr":"8c95b2a7b4e20dd8985e04b8da5fb9d7cbff37220a74fd3903f16f7ea7eaf39d","tests/fixtures/invalid/control/multi-null.stderr":"9fec8ad3ba45ddb96ad3b6a118b4fa648056e26a9128528b2c0a8fa3b01e741c","tests/fixtures/invalid/control/multi-us.stderr":"3a59d615cb91172936acdc42baa39e9faf3a2bb9e9078d9879a54826ffb6b20c","tests/fixtures/invalid/control/rawmulti-cd.stderr":"a71dce0ac9a79209ea173f3d656b2d663c685b47841b620cc89860fb68f0cf0b","tests/fixtures/invalid/control/rawmulti-del.stderr":"3b99e52cbec29c7b6b439bcf3cd58b85a72487e2f5af5e829dd6986b3414f49f","tests/fixtures/invalid/control/rawmulti-lf.stderr":"89fb9c7d02e39ff648cea46ec1086058016c5ef1deebc6f3b106664dc4d10eae","tests/fixtures/invalid/control/rawmulti-null.stderr":"84c04cc89a6bc716b6f7811142899014abdb0b49c4ea56bc163c19220b14c323","tests/fixtures/invalid/control/rawmulti-us.stderr":"ac53d1dcc96c3beb454f5474a23940f26c93705b76a10647c810f79facf4f6be","tests/fixtures/invalid/control/rawstring-cr.stderr":"fa8da523c3cc24384fda1dd6032607cdd380f45133ce7d6d2a1d3b8a3eb6a917","tests/fixtures/invalid/control/rawstring-del.stderr":"64378c4341fb92376e2fe8a70356411759b8659e151ed0ca744751c8b2d32155","tests/fixtures/invalid/control/rawstring-lf.stderr":"43f6431efef7ead5aa335958187d979d98dcced50cb82ccca19df34397278175","tests/fixtures/invalid/control/rawstring-null.stderr":"eafa2a63e9d12293b290405049457860a8fef70de56c4ba2f203e5f2c79a8634","tests/fixtures/invalid/control/rawstring-us.stderr":"d139a7ec7c4ff5358f6c56ea2f2e431646f5ae9bf3d927694a2aa3891637ecb0","tests/fixtures/invalid/control/string-bs.stderr":"ce6634df580f80e090749d31c178bed74b88718befea7788abe801acf4af10ae","tests/fixtures/invalid/control/string-cr.stderr":"a8dfbe00e976920a442f8f03bebeb31bbdb570a242e380b5a4c60d351614acf9","tests/fixtures/invalid/control/string-del.stderr":"bd862371b7a698647d4d68e5c3bad5c269bd8553f36d82301ffc62a4508334a4","tests/fixtures/invalid/control/string-lf.stderr":"18a1d0e1bcf6f99c80e95e94097f95722a65c2d8a415f9497b808b0bc135c12d","tests/fixtures/invalid/control/string-null.stderr":"fe34d284c478853bad94235aac1f37ac3c591f97e12990847b5da0b6c99bd47d","tests/fixtures/invalid/control/string-us.stderr":"06f7fce918057f567803f370e55e035896bb63a97eb0c0c39a680d6b927fead8","tests/fixtures/invalid/datetime/feb-29.stderr":"898cd0c4cd094247fa0825d02179d3b913cc9db4fbe634fa84c7a7d2cfb7b03e","tests/fixtures/invalid/datetime/feb-30.stderr":"0fb2c5f14857fe5edadbc93a78208c1c9ed900a18e3296613cc620e255c76e11","tests/fixtures/invalid/datetime/hour-over.stderr":"bd2220bdbaa96caf3d2aaff640620e4856bffb722a0e5be61dcb5283ffd08056","tests/fixtures/invalid/datetime/mday-over.stderr":"de9d27d65c68dd09da10c229167ce881dfe0ebda457badfe24b7598ae80c47a6","tests/fixtures/invalid/datetime/mday-under.stderr":"18daf3ce2a6a972476ccabcf92690a488e4f3be804dab8458da2aebad22a2c8c","tests/fixtures/invalid/datetime/minute-over.stderr":"a29009d3f7a6b1d9afad2420f223d6a6e02df8149577547837f5eeec4075bb9a","tests/fixtures/invalid/datetime/month-over.stderr":"37a203b22c3b2510541e413ff347447f9f3319a896ee005b96f65bc0d68150f4","tests/fixtures/invalid/datetime/month-under.stderr":"24c554595ca9a999a1d8e1ef7dc28b443f2f0ad6e17337ee157fb18bdcf678c1","tests/fixtures/invalid/datetime/no-leads-month.stderr":"2e20cb60a1ecee85b172d1402e4d8c425362e4db607706bd39494385dc6dc98e","tests/fixtures/invalid/datetime/no-leads-with-milli.stderr":"a35c496884e921aa086c1404bc812ff74f2bfd347a3ecd96640942be5555afbb","tests/fixtures/invalid/datetime/no-leads.stderr":"2e20cb60a1ecee85b172d1402e4d8c425362e4db607706bd39494385dc6dc98e","tests/fixtures/invalid/datetime/no-secs.stderr":"65871ee020e645e737c363b22cf43c160b295871cd4ac97a37d3ea46f60e3250","tests/fixtures/invalid/datetime/no-t.stderr":"ff50b85f6bc0d49000ec6f1303fda9b44bf934c2ede61743363411bbf6ebecbb","tests/fixtures/invalid/datetime/second-over.stderr":"0ed555a874efa08b711b5227501208758d87a01ad8360cf76c3dc8761807fac4","tests/fixtures/invalid/datetime/time-no-leads.stderr":"b3282cb32386dd84a35468f488be5a92dd3488e951f9dd2ea39057046386b73e","tests/fixtures/invalid/encoding/bad-codepoint.stderr":"1a816a8cdd5c2c9b8ae10431d981e22c3b307e30ef3d401ab62ac1012240be44","tests/fixtures/invalid/encoding/bad-utf8-at-end.stderr":"518dc443f0404d486b40bbbd152870276016795b05f3cc8a1de64a0e08fcdda2","tests/fixtures/invalid/encoding/bad-utf8-in-comment.stderr":"e0f252d14c18ea072c098834997db8e5f68b807bb0fa6d3d34e4042a5ea6fbb7","tests/fixtures/invalid/encoding/bad-utf8-in-multiline-literal.stderr":"2328a89cd9043de10ee656f4ea0dd5e6491fd8c0484ac36099c23161dd7a2625","tests/fixtures/invalid/encoding/bad-utf8-in-multiline.stderr":"2328a89cd9043de10ee656f4ea0dd5e6491fd8c0484ac36099c23161dd7a2625","tests/fixtures/invalid/encoding/bad-utf8-in-string-literal.stderr":"eefb00fee073933fbdb95d24a9e7050c281d4719d0cb970c2c06a71a86f108b3","tests/fixtures/invalid/encoding/bad-utf8-in-string.stderr":"eefb00fee073933fbdb95d24a9e7050c281d4719d0cb970c2c06a71a86f108b3","tests/fixtures/invalid/encoding/bom-not-at-start-1.stderr":"bd4e557b8b4586cdb39a8fde46f0bb214954f9f8ef37be46e2cc19823f6d6919","tests/fixtures/invalid/encoding/bom-not-at-start-2.stderr":"27003a498cb355011782dc21f01e15457490b78c472bb9ddb54147413c8f597e","tests/fixtures/invalid/encoding/utf16-bom.stderr":"a8800edcb8f6184b712da53e74bb787c39eb891073575acbae1ad575f15043cc","tests/fixtures/invalid/encoding/utf16.stderr":"edb66c01034865f484ccf7921bfcec1efaa8599762cb9cd30c9c8103275bc4e6","tests/fixtures/invalid/float/double-point-1.stderr":"2917901dd186adc39cb5965faf388fa2babe577ef3bfcadd4919232868a727cf","tests/fixtures/invalid/float/double-point-2.stderr":"7eda489da0436d6f0f2268aa4005b422d215b4785af0c1696c8731908a563f17","tests/fixtures/invalid/float/exp-double-e-1.stderr":"e64082e328fcfbeff57e6801448c769b12bc8e879b77421b688b2e147e386713","tests/fixtures/invalid/float/exp-double-e-2.stderr":"5c45326ef7287ea16a9e08275222e281b5d61c9322f8764f6533707f9772e255","tests/fixtures/invalid/float/exp-double-us.stderr":"ebd30aa3f7cd3a0a5e79bbbde1beff209d24f4ab58eb5552c1baf0eb2194e97b","tests/fixtures/invalid/float/exp-leading-us.stderr":"19c8f676dd45a5db09bd5baba5c3e7b661e83099a340331ee6bb10defe679569","tests/fixtures/invalid/float/exp-point-1.stderr":"23e73e4e63db888546866967a1c0319a1db269f23ee9c277b298e9f2db88800e","tests/fixtures/invalid/float/exp-point-2.stderr":"633328e085fb04d6a79cdfb696f45a1836c3a8b6afafc4cd5e16d48465aa4613","tests/fixtures/invalid/float/exp-trailing-us.stderr":"aaae81eba820233944bb88920621dc9c1bbd0d1a1476c0376a38d0491a30c83e","tests/fixtures/invalid/float/float.stderr":"cc664d16849deec2ae7ebee6a3f46923bd5959075e282315c4f60461cdb13a0f","tests/fixtures/invalid/float/inf-capital.stderr":"1451a322f3be80529ebc091d231b682127e783a07cfffcce67f5b9bb4455c0c3","tests/fixtures/invalid/float/inf-incomplete-1.stderr":"38cd906dfee7f13b8cbdb27f3406ab0499fae3ae16f3c77bc7fc48d009595d93","tests/fixtures/invalid/float/inf-incomplete-2.stderr":"97a9ae1ff194a95b5be2abaf2cd8179ada832cdd9fad349efa9951e7ab92e435","tests/fixtures/invalid/float/inf-incomplete-3.stderr":"034bc609343ecf1e659d6250f719e5f93512e8140228e44e57b538765e58a1f7","tests/fixtures/invalid/float/inf_underscore.stderr":"621326dde26e5364c7af1b562fb651f4184d9b5fc9bc45edc12f52b588d506bc","tests/fixtures/invalid/float/leading-point-neg.stderr":"d19e28ba2f11069800df4dd1951025aa7f75425f7258e8caf4bbf6abe0e84bc9","tests/fixtures/invalid/float/leading-point-plus.stderr":"10750e9acccb17f0682db30fb175d083d06c822a4863d3d6b8ddb6c75b7b22ec","tests/fixtures/invalid/float/leading-point.stderr":"2545b7a615528595f5d53a7338403c83a8587e70600b1501225446e5f456c805","tests/fixtures/invalid/float/leading-us.stderr":"dc958138922097b2e1e3865c7818604b2249268af4acbe5cafe0ce8c68a90a86","tests/fixtures/invalid/float/leading-zero-neg.stderr":"d1fad35fa8d18f93ebfdf681d3476f02600e5c39cc942ca9bc36181476cbbe53","tests/fixtures/invalid/float/leading-zero-plus.stderr":"ad8ba7a7c12cb4b296cc0d43915106732e6a6a713aea67034587d1fc0c8093df","tests/fixtures/invalid/float/leading-zero.stderr":"cc664d16849deec2ae7ebee6a3f46923bd5959075e282315c4f60461cdb13a0f","tests/fixtures/invalid/float/nan-capital.stderr":"d0e9234b96d4e3591ca0190a785789f9bdcaaff01a111eb57db7bc458a2dd95d","tests/fixtures/invalid/float/nan-incomplete-1.stderr":"f4bee0b1c639bf800fc4dda38276142e715cd85ab6cc5e93ae2112ea63d7de89","tests/fixtures/invalid/float/nan-incomplete-2.stderr":"dc908ec577d29083bfd709fc4bdc2fa641d7fb2ba77a5d7441215680a8839d69","tests/fixtures/invalid/float/nan-incomplete-3.stderr":"abab5a41e0f2f1bad2d2050d0c913dfd8c15e50530d53ef8de327f106f564e02","tests/fixtures/invalid/float/nan_underscore.stderr":"25b67a7d6c743f673be7b409c9990de5de8b52a1d97c32e6f4e62f33147f1872","tests/fixtures/invalid/float/trailing-point-min.stderr":"69ad03ae81990d580a6d63bdd5ab594de00c0a16694c8671704c6243b4578b38","tests/fixtures/invalid/float/trailing-point-plus.stderr":"fba0bbad890020fe943e9f23644e81bf0bb7d114230fe16182e866fddcfc108b","tests/fixtures/invalid/float/trailing-point.stderr":"2f12b368fd94304ab0126ebb5888c519475f9ca28e9ca702c477cf0085ba9216","tests/fixtures/invalid/float/trailing-us-exp-1.stderr":"217939411cc9c99589d1ef0f3919c90ca2a562c0352063aae08ba2ae53c1208b","tests/fixtures/invalid/float/trailing-us-exp-2.stderr":"ecf0002a04040c8afcae7f4bb182c0322b4d00ab88bb53405e40c7938f2a9443","tests/fixtures/invalid/float/trailing-us.stderr":"506cb8051f1045ea1dc7f11865d58cbca0216502d273e1c10366c8be7cc9ab43","tests/fixtures/invalid/float/us-after-point.stderr":"fa9fb59f703b6770be3dc094c04eb2c4add8a7a7ab79d9fe508cfeee785404f1","tests/fixtures/invalid/float/us-before-point.stderr":"14e09a7a382e249e5143d1c81d6e4623408eb2d505e1e3f86c370a3a3bf6cd9e","tests/fixtures/invalid/inline-table/bad-key-syntax.stderr":"cc3565bdd7ce5752ed2e0aa6ca10e8a414d357a1f5630d7c759f8ffb709cc540","tests/fixtures/invalid/inline-table/double-comma.stderr":"2132a1c4d97fab140089818f990284333e22ef91d20a9f65e11d4dd15b1a701a","tests/fixtures/invalid/inline-table/duplicate-key-1.stderr":"72bea73b20005f15ced977aae70a1b0f3bbe3e35598231aca9a2303d770efdc3","tests/fixtures/invalid/inline-table/duplicate-key-2.stderr":"9b69c8521345fcc21886138d9dd0f20528c71712f3de3e565087adc916113a07","tests/fixtures/invalid/inline-table/duplicate-key-3.stderr":"675b84acec95eb5778a8d280881fd83cc3f741d0c0e2a21cd74fe1ab2b6bd710","tests/fixtures/invalid/inline-table/duplicate-key-4.stderr":"5ed3af9e2011f07a04572b2bcc1dd11dd57512dd35ff616e37051a34bd1f4a94","tests/fixtures/invalid/inline-table/empty-1.stderr":"604fef40337f04e5f37a52239d6509850aba95677a7a94ca8476a6c21b648a43","tests/fixtures/invalid/inline-table/empty-2.stderr":"870f189adbefaa6f05307d5b00748f1ae1c748d96105fabeb409c3c7d59126ca","tests/fixtures/invalid/inline-table/empty-3.stderr":"766b0f61a467c8db42514016a9a3812f678b054a124361bf7b7617cf2ae073db","tests/fixtures/invalid/inline-table/linebreak-1.stderr":"45b0611d37c1ece88bf6c88b3528adc3d73e0cd3e3b24dcf07ab151023a6f488","tests/fixtures/invalid/inline-table/linebreak-2.stderr":"f7672965326b44adaf0cb4796a087fbe779a8b17fbb458090a33375d0c54e5b4","tests/fixtures/invalid/inline-table/linebreak-3.stderr":"e8c70f0c91b15e701567e93d8df1cd3bec593696af05ec1d95e8f9e00ab20fa6","tests/fixtures/invalid/inline-table/linebreak-4.stderr":"3d31147f9e1ff5f94384e4df1675dfff2da6f076cb0a729771615f05b990be91","tests/fixtures/invalid/inline-table/no-close-1.stderr":"0bcaf312d65af22a37bdd8334821d95d4212dd43905fc945ec2c8ad3d465ae7a","tests/fixtures/invalid/inline-table/no-close-2.stderr":"4c6bfd3dd94611a3bc02fc609a738bc252dc38501e7ef6ff19543d757cc564e4","tests/fixtures/invalid/inline-table/no-comma-1.stderr":"9f1c85e0df72c7e7e011c26a0d5dd9dea8b7a5e18c3ba9a53ff4a20a9429dce9","tests/fixtures/invalid/inline-table/no-comma-2.stderr":"24a06e43a94ab041395eedb94c5bdb799ed7fbf6d930791756b0e3bd4a812943","tests/fixtures/invalid/inline-table/overwrite-1.stderr":"812d1bc74d07750048a521e513a565676e606d4fa1a32d2ebda7af8fa064d3ab","tests/fixtures/invalid/inline-table/overwrite-2.stderr":"bf95d34749254300f4179ed1314cc9cabd7c7b63fc2453fc7adbc7869b63be4a","tests/fixtures/invalid/inline-table/overwrite-3.stderr":"3e2c2ce66f1e4982aab428075105a39b2e9384f2dcf6da6d715017533416e149","tests/fixtures/invalid/inline-table/overwrite-4.stderr":"8aeb424d4ccee35ae17efba8acd65aba834192672cad73e8e1e6c3fe9f878826","tests/fixtures/invalid/inline-table/overwrite-5.stderr":"ff8facd04689f13ec53ee77bc9790d25e2d2eec50f4675788d70a2bf33a85e2e","tests/fixtures/invalid/inline-table/overwrite-6.stderr":"01be3b4e31d2c0aed381fc6599d5fd78d0757e9b76e66b087e4614e98f782db3","tests/fixtures/invalid/inline-table/overwrite-7.stderr":"52bac538099395ae15c5c8786f835dbab4748be0464951a25ae0f44aeea90125","tests/fixtures/invalid/inline-table/overwrite-8.stderr":"bbbc4b8959113590e9bc27526b56bae2e1223c88493836ea0a0df4209527a038","tests/fixtures/invalid/inline-table/overwrite-9.stderr":"1b084659999a2cf01ba8feab1d9d9232a307fae584e4277210cee69f53ef6cab","tests/fixtures/invalid/inline-table/trailing-comma.stderr":"4791911dafd6602e2891d6ffc4d32ef8e9d0c1f8f6d37e84d440feb896d9cb88","tests/fixtures/invalid/integer/capital-bin.stderr":"fcfc8b0bddd36a641d3f5cc2ceee88554619fabf6874e11cdfdd147be8781881","tests/fixtures/invalid/integer/capital-hex.stderr":"c8e2d64f9659435a0387bb7e6447896eda253fef77e0214a4073fcffbac693a7","tests/fixtures/invalid/integer/capital-oct.stderr":"ec465fa25da212b0c9b6265ac8e9cd05c1fa07d614dafb3bc9b2ca74d6c2a7a7","tests/fixtures/invalid/integer/double-sign-nex.stderr":"8d57da526240c1cf73423b688442922ae291ff26e3c09f9c3b5b150e62e5cbaa","tests/fixtures/invalid/integer/double-sign-plus.stderr":"55896d9bd19637e124482966a12109a1a8351620ddc6f8d28553d70359f523f1","tests/fixtures/invalid/integer/double-us.stderr":"f14ed7bd3ad26b2203763fa953dd6e99212e50fb8e43a4eaeb115c1a7df4fc25","tests/fixtures/invalid/integer/incomplete-bin.stderr":"64168fc7ede87a10c12f82325fce644a7d9b9c3af55a313184175df7926845e3","tests/fixtures/invalid/integer/incomplete-hex.stderr":"ed2423540e288f4673bc68822a799bea04f571db5de56154e10360b03ab79553","tests/fixtures/invalid/integer/incomplete-oct.stderr":"9ed35e3078703a38996f20dc3e86477149564c8abd237c644bdf3a5ef26e3417","tests/fixtures/invalid/integer/integer.stderr":"ed5ef991b733b3d51700364da18bf58f1b7eb68053467afcbff22775b3b82788","tests/fixtures/invalid/integer/invalid-bin.stderr":"7248d47f2c7db309254a3a41af28bc1a6e96bfa95e0c8c94d607f65a1a30cee6","tests/fixtures/invalid/integer/invalid-hex-1.stderr":"ca2af571a835ca976727c823939f7cbd6d36f7d048464ba1f8f0bc6b6558cb57","tests/fixtures/invalid/integer/invalid-hex-2.stderr":"e2970d46eadb852d34a8407929972acf7ef131c3c44978af0e6dfe205a6e993a","tests/fixtures/invalid/integer/invalid-hex.stderr":"3976255c6fe35a1e29f0fed7324eee8420ababd0f6f1f7702908c3df47c88846","tests/fixtures/invalid/integer/invalid-oct.stderr":"9f6776e33887cb446a5590d8fe4e51c36747c634cd5e4efaa84f807d3ce244e0","tests/fixtures/invalid/integer/leading-us-bin.stderr":"0cb1db77dee877423738395a720e6ebbd5a545a3b22ce710ab669b5b1f7903f5","tests/fixtures/invalid/integer/leading-us-hex.stderr":"fec78f4fe4ad481fe9ea93465c8ef5bca8b98d0bba31b48b2990870b7aa5f44b","tests/fixtures/invalid/integer/leading-us-oct.stderr":"aad69bdd80f94e907bda03558a1302e54d58d8911fe2b564e93cb0ec48403b09","tests/fixtures/invalid/integer/leading-us.stderr":"3a265cc11f1b0d43d4b532a47776486ec7c7ea7afe70813ab00c5a37cf87a9df","tests/fixtures/invalid/integer/leading-zero-1.stderr":"ed5ef991b733b3d51700364da18bf58f1b7eb68053467afcbff22775b3b82788","tests/fixtures/invalid/integer/leading-zero-2.stderr":"5c70e7874256512c0ef6bb364497d4e10154e994056f2feb7c5c729016522091","tests/fixtures/invalid/integer/leading-zero-3.stderr":"fb2730feda6f669a3b8c4332f01369e52ce1b942807f1bf3d9762b1fea04aeac","tests/fixtures/invalid/integer/leading-zero-sign-1.stderr":"c9d2d992eea36c4fe228eb74741bd8d0ede1e354cad132b79462e7b502b37f95","tests/fixtures/invalid/integer/leading-zero-sign-2.stderr":"4248329b339020cc2ea586f2775a0b4f4cbe2ae3f0f75b935263363b8be5eaf5","tests/fixtures/invalid/integer/leading-zero-sign-3.stderr":"3b414808727d3a446efdfca0033525e17536f9b54104d8a9cb9278b054d213df","tests/fixtures/invalid/integer/negative-bin.stderr":"74aae673b861bd46544e4835fe7075e20158dd69e27f75c790d48a6006476c73","tests/fixtures/invalid/integer/negative-hex.stderr":"799bd8120f4cf2c36e7f65a5f9aa43a3ec87dd95dd3bf68501059da9f21f8c9e","tests/fixtures/invalid/integer/negative-oct.stderr":"017a6a24faf9dc1cde89f62b46435f8fca493e7b61f6fbd2b6d57f0f9e80da65","tests/fixtures/invalid/integer/positive-bin.stderr":"54d8a33743737f374480cd1235bf3f7e0847d252ef7e2bb1d447529cbc0f6692","tests/fixtures/invalid/integer/positive-hex.stderr":"3b21b23cc3dd6b213a19256f4ffb4bb36172de2f739f90bbea78636f7a50524b","tests/fixtures/invalid/integer/positive-oct.stderr":"f19faef5bbb7ed8351777bdededb1c523337f2aeeec82d967c19c36069790e11","tests/fixtures/invalid/integer/text-after-integer.stderr":"07a13ad4841a452eff00947234a4ebac4d209ea0294162888db35668648bb55d","tests/fixtures/invalid/integer/trailing-us-bin.stderr":"62da06cf06527b9e9cbeba6c5299ce6001d40592e9d007c8350090977f4d1b58","tests/fixtures/invalid/integer/trailing-us-hex.stderr":"1b290eada58a7202b1a9251afd8e0e72a4caa8ad5c85036d1050e7de8141e94d","tests/fixtures/invalid/integer/trailing-us-oct.stderr":"34e6f86ffb0099e6e1ba67deb51e36af62dfce4e7299b94503a219339bf16447","tests/fixtures/invalid/integer/trailing-us.stderr":"3ab49ee921eb772f5aa4eaf0fb3619b1dcd9a9db3f4ebbd9bc505581a985e753","tests/fixtures/invalid/integer/us-after-bin.stderr":"a94a87ebab3536899ce7c0c785f020b3a236c60d24c0bd7494628ca310c40768","tests/fixtures/invalid/integer/us-after-hex.stderr":"9009b187f615f06e3392eabd8ffa58311ed1c2b1cd76f8c5bd99671242f2e026","tests/fixtures/invalid/integer/us-after-oct.stderr":"05af70a21980416fbd602337f9af22a1c600a294635d10ef1ca1b2138338e712","tests/fixtures/invalid/key/after-array.stderr":"487d957b20226ac36e27d6efb1e3d24147284c9a5e10a0188427a1c940d31ef0","tests/fixtures/invalid/key/after-table.stderr":"f70e84770817f096fcc1b6195c6b0a79d25210c6930ce412a89646040ee3d713","tests/fixtures/invalid/key/after-value.stderr":"00d4d2d3ccd61f64a92df0ca575aeafcd96e91d053d835ca855973339ba458cf","tests/fixtures/invalid/key/bare-invalid-character.stderr":"b1f64d54a43017e6cc09755fa7ba477901721d23f9271ec658fc9362f46631b3","tests/fixtures/invalid/key/dotted-redefine-table-1.stderr":"59771f7163f28a3c81209f058b7b01d616fe5022e8ee7ffb395feb44129cafea","tests/fixtures/invalid/key/dotted-redefine-table-2.stderr":"564febb355d1556df42f428a046ac6fdc5dad49b2b736be5824b0c13fcd1fae9","tests/fixtures/invalid/key/duplicate-keys.stderr":"7c9dfef2ef19b1487b7592a267ab5ba21c8b833dfa9ec1c3151e369c2fdba26e","tests/fixtures/invalid/key/duplicate.stderr":"764ef48bb06c9096c853b1156c8d29ba0065616939a5335146f5af88a424cea3","tests/fixtures/invalid/key/empty.stderr":"af6d3636ca73e5496c40d9c918c59b61fd86812db262649e5268094193873130","tests/fixtures/invalid/key/end-in-escape.stderr":"86b9c28ffc74797d35a89fee58853fa85bab9638b919138ccd5d8dd524dd204c","tests/fixtures/invalid/key/escape.stderr":"155aa9389f0eb28cac3b42974af7ea9e2eef8d96f084f08f9f75e960fc8ce8c7","tests/fixtures/invalid/key/hash.stderr":"85dd91b96aa4f81cc7922b02b411f25d9053bddd1e5b893c2a2ee9d0115a7cac","tests/fixtures/invalid/key/multiline.stderr":"d625f2caaf01d53d72d6f1c3df0952fe3ca8c5f3b081503cb02b9994c088b733","tests/fixtures/invalid/key/newline.stderr":"714aed0a140062f977ec85b9afa50f68448c67e806168e60b4f4554ab270b2b9","tests/fixtures/invalid/key/no-eol.stderr":"440ec927e94f0e520a0f256c865041f0478e1c82f3bb79323b7ddc36fc942edf","tests/fixtures/invalid/key/open-bracket.stderr":"3b36814373f51a8ea00a448d65bc514e8d99f5163b7dd8101df62bcd0a06e801","tests/fixtures/invalid/key/partial-quoted.stderr":"dc9059a014ed53071ed170b1e280923556dc09e0be2ae96cc8474e9da59fa378","tests/fixtures/invalid/key/quoted-unclosed-1.stderr":"6cdec8a7c5352a2f246273afaa923dfa81d4d2e68cca5b4f9a19193559b164c2","tests/fixtures/invalid/key/quoted-unclosed-2.stderr":"b4817e6f85a90fbb6adf049ba57c268f9888f1b42b3d62200c359606176170b1","tests/fixtures/invalid/key/single-open-bracket.stderr":"917c0203d1e45309fcff82ce33fdd2d989f630fb99290a40cb9e08a6f7ca0ef8","tests/fixtures/invalid/key/space.stderr":"3a5fa712d667890678873e3d4e4cabb084c67091c5ec6155355d5bd4229585dc","tests/fixtures/invalid/key/special-character.stderr":"a84c2f293c1e421a1c87050cb0211de80dbfe7a79939db0338fa35bf0c181ef2","tests/fixtures/invalid/key/start-bracket.stderr":"223d8a22bf34459cd9bcb993ae2a51ab3cc436674e3367e92f7d74e9f8710a45","tests/fixtures/invalid/key/start-dot.stderr":"f9366a1492ae24fd0721724b4039d2675e91219de564aff2826adefd83fac571","tests/fixtures/invalid/key/two-equals.stderr":"a0aae899cfa75df41104a4d3090a309fc7ebcd95bb5a944cf742f3d3fc9d4782","tests/fixtures/invalid/key/two-equals2.stderr":"861826b9456ab3a74f63f5c555e13d959a3991dfa6ce126ae5ed14d43f7dcee1","tests/fixtures/invalid/key/two-equals3.stderr":"71614864344e321ac5de238b7ef9d097c6d7f3ac3eee4118d96827b4b8bd6658","tests/fixtures/invalid/key/without-value-1.stderr":"16c2823a39a82c3c27e0959a691b7a95e3392d62195884697893d373b967b9c0","tests/fixtures/invalid/key/without-value-2.stderr":"d340f94f5d96f5730ab269db7ef27aca171d64e35af1181c474d75a7d11d6590","tests/fixtures/invalid/key/without-value-3.stderr":"3cf3072fe9206bfe6c682103d0414627a5a63db4c4a319cf37efeb5fe6b92007","tests/fixtures/invalid/key/without-value-4.stderr":"07132bec96e9a9a672bafdc3c448b7c596257245f8c3e2cae04641f9798644ec","tests/fixtures/invalid/key/without-value-5.stderr":"37dc02af5ab8a30161223d44ed05c99ba742a658598a1b94ff78ed09afd9b11b","tests/fixtures/invalid/key/without-value-6.stderr":"00b623259f9c58fdfbe6753978fe2a71653bed0dda5c4ce54cb2151e8f7a6a29","tests/fixtures/invalid/key/without-value-7.stderr":"5013036b7f53013f887f670c3a3ceca6358d89e6b83b27bea9aa4447fba083a4","tests/fixtures/invalid/local-date/feb-29.stderr":"49fc14bfe63430553b173e82b84fb964a8bd93eeaf8abb28ed94f92a061e0026","tests/fixtures/invalid/local-date/feb-30.stderr":"1ae91b3300919e07b64c5c5b6572be05dccba63854df52ed71a900d190a90900","tests/fixtures/invalid/local-date/mday-over.stderr":"851f565b0537d5f2d88829c62d632d7dc5841d9843a1244568ea7382d5b05857","tests/fixtures/invalid/local-date/mday-under.stderr":"34c1e1d9e5839a2a8ccfaecbf52b3f49e1a776cb17de9187c3e79cb618ac684f","tests/fixtures/invalid/local-date/month-over.stderr":"d6ec78690f874b4c99cde7e609775abdf4f00ba758216afee355f6baa2c7c010","tests/fixtures/invalid/local-date/month-under.stderr":"c6922666b726822f6ffeca857041eec16cf387f54d3b6d9c325935c1c116aa5c","tests/fixtures/invalid/local-date/no-leads-with-milli.stderr":"03ff73112eae42e69f54f80445582775309400ce7f179bd9d28043299d5da826","tests/fixtures/invalid/local-date/no-leads.stderr":"12d98e610ca2c2e04fff563f9ba2b12f5e53937df1ced544c8082fa4f64522e0","tests/fixtures/invalid/local-date/trailing-t.stderr":"87a15cd62bbe7cba2b942fe424c045ce30a12fe439a1b49587a5cc037ffa6b09","tests/fixtures/invalid/local-datetime/feb-29.stderr":"692c0e78fd9ee1e979dc32bed3ed9d3d10a4608090b4d242e379d40a9732c2ab","tests/fixtures/invalid/local-datetime/feb-30.stderr":"330e20a8e3d95195227c3e66861f013b70fc02010107c9d0a11085bd533b49cc","tests/fixtures/invalid/local-datetime/hour-over.stderr":"a095bf7be4a76d0c9362d5e4398d5783aa1545ec03f910a2c6a1709a3f60225c","tests/fixtures/invalid/local-datetime/mday-over.stderr":"cd707915cf15690dcc65868408f115bc90da19beae1fbd0a7fce8d02ce76300d","tests/fixtures/invalid/local-datetime/mday-under.stderr":"fd8ac4e2804d96d6b7f63eb1616096bdcc3ecc2b74d75c3fc4bd98f2f3af205b","tests/fixtures/invalid/local-datetime/minute-over.stderr":"95fef6b0821ffe465ea5ce27a4f1521a4309cc64ee03e2781e63ead3003cfc62","tests/fixtures/invalid/local-datetime/month-over.stderr":"f739e1cb0538ab5e3cd0923165d54bebe10a6cee1cd773129230d508af946901","tests/fixtures/invalid/local-datetime/month-under.stderr":"cc1749c4aaa0cec5e88a2cae52bf84da2e862b6d2dae2c46615eafa0b7f370bc","tests/fixtures/invalid/local-datetime/no-leads-with-milli.stderr":"d1d95c88dcbde166b3a89c562e87bb9dc7c7d4efb5aaf999f0c253b1109ffd2a","tests/fixtures/invalid/local-datetime/no-leads.stderr":"8be255d1f994769e4cb9fdc6b4b6d65ad2664348026e409026421be423150076","tests/fixtures/invalid/local-datetime/no-secs.stderr":"019be93baccb4283a186cfb846b8cd4c848a373319daf4955ab3bec451a7b730","tests/fixtures/invalid/local-datetime/no-t.stderr":"eca57151e4e310f22620f243582486fb3e5ade13e4d4a5fb4582252fd915ca04","tests/fixtures/invalid/local-datetime/second-over.stderr":"dad38092a29679601af7ae3b05960068fa0eec5a649858ab88aedaada6ffff00","tests/fixtures/invalid/local-datetime/time-no-leads.stderr":"b3282cb32386dd84a35468f488be5a92dd3488e951f9dd2ea39057046386b73e","tests/fixtures/invalid/local-time/hour-over.stderr":"e5aefc4baa094437e16b5a78c89df8469ac59d899433e1c0fcbf433344b3a4f9","tests/fixtures/invalid/local-time/minute-over.stderr":"b66ec93e63f27d0a4e63c0eb1fc2d3f8dbf2fc916e213192852b1b7ac0e21aa7","tests/fixtures/invalid/local-time/no-secs.stderr":"d9939a2e05d15375d4936c6ad7c4dbd13085e638573094f3a0befd9027c0a3ab","tests/fixtures/invalid/local-time/second-over.stderr":"f14b188fb85d8818ab953f2fa0d0b8de906dddc2f0e0ccf5ef68b3e81d619f20","tests/fixtures/invalid/local-time/time-no-leads-2.stderr":"f725d49ddb5af69b7285f071d68e3d8441d5e331adcfd8c025c1f3cbb68028a5","tests/fixtures/invalid/local-time/time-no-leads.stderr":"cf06f3847f3d14655a94d8cfd5a6984dc74115b1d3cdbee0662ef215738bbf65","tests/fixtures/invalid/spec/inline-table-2-0.stderr":"5ad1a938b1d1f0f3fdbd1871efdebfd30e136407ecdd9e2eff22150d00624b3f","tests/fixtures/invalid/spec/inline-table-3-0.stderr":"fcbc05e911b7db81bd918768fe98a51a7026fd476d616718cc417d2f08bcc1a1","tests/fixtures/invalid/spec/key-value-pair-1.stderr":"d5391142dfd56040840cf91b1e28e3c048229e3d9998534d41001cd6657f9bd6","tests/fixtures/invalid/spec/keys-2.stderr":"3c4ee6066fc75d2c1f1b325f618a01113694c318e330ff4f237e89127f332c87","tests/fixtures/invalid/spec/string-4-0.stderr":"910ee4b240159b828a7509c8dfb46507071a8d8636f3935a3914d6d91f315295","tests/fixtures/invalid/spec/string-7-0.stderr":"5128f0a930b3034e494a6bee4f384a587e9fd858b25f8cc529a488c94ee9670d","tests/fixtures/invalid/spec/table-9-0.stderr":"49dac70d337266f5c6b333fee468f279fed1bff62bfb4ec7436c8b6683ce0dd2","tests/fixtures/invalid/spec/table-9-1.stderr":"d9e071c70356c01b6537f876989ad2067e7773dd5eb24a298439d192dbad12d0","tests/fixtures/invalid/string/bad-byte-escape.stderr":"14f6ae446b3b8cb434267eba11c6ec5a1badef4f867169b173698cf9f1a29d95","tests/fixtures/invalid/string/bad-concat.stderr":"499219633467b9174471db40543ca188e2b906c470e511d2f701f5f5475d96be","tests/fixtures/invalid/string/bad-escape-1.stderr":"34a15ce7012217c62d31d5392038517c216f0cbfd5d75fb5f3c2bb07afd3f25c","tests/fixtures/invalid/string/bad-escape-2.stderr":"955aab40b16043c847d85d04e6adcd093c930dd8416d29c2ab5953c077eac6f4","tests/fixtures/invalid/string/bad-escape-3.stderr":"ef8302d7a6f9b8beb54478756a6069dfafc203f640a4afa2a58fbf13fdb35b8b","tests/fixtures/invalid/string/bad-hex-esc-1.stderr":"aea935cf1e17743356e6fb1059afed2d0ee5262906594782e5537a025398038e","tests/fixtures/invalid/string/bad-hex-esc-2.stderr":"deac5217cf80acc759e1b40c43f5f56431b276dc2c896aae5490d57583105e06","tests/fixtures/invalid/string/bad-hex-esc-3.stderr":"94ecf886427e8fe5daf1d8f932bf1887f2533b10bc1f57cb6de03ea28fef466f","tests/fixtures/invalid/string/bad-hex-esc-4.stderr":"382b011dd4070554ee875fde06703d8332ef6ad36f3619f3536b0a4997ee2745","tests/fixtures/invalid/string/bad-hex-esc-5.stderr":"a8a039fae822eda68591da28ff2a117b5d85e99d066e9126ebbb6426a1cad52d","tests/fixtures/invalid/string/bad-multiline.stderr":"141e5770190dd184bb1f64f6bb14fc017210bbd918ab5c8b7a3d80b86b21772b","tests/fixtures/invalid/string/bad-slash-escape.stderr":"d62f894ee166bddf84432507fb4ba56473c0a230fd88a3ccc2b199a72a34e613","tests/fixtures/invalid/string/bad-uni-esc-1.stderr":"b7d8a7f41600a6fc5cef5fd938fab31e1a516b5075bb5f6b22ee77e49bbeb195","tests/fixtures/invalid/string/bad-uni-esc-2.stderr":"5c23cec7a912ccba77180889e44dd84287fbbfdb170367146e9d633637124052","tests/fixtures/invalid/string/bad-uni-esc-3.stderr":"744574793d570b012ee2aa537405af14612183b769e425a04bd0c0ec6e14da7c","tests/fixtures/invalid/string/bad-uni-esc-4.stderr":"16543872b51db7ff6a87cdf1ae71917857e5118b90ceb3e0835525c9bd67d02d","tests/fixtures/invalid/string/bad-uni-esc-5.stderr":"f0ef02d2988680da67942d8599e7753f2e6c89a984643000a67ebf4c34722374","tests/fixtures/invalid/string/bad-uni-esc-6.stderr":"eff7b6dd907132aa9598dca52bf12d48be066a6a8d426ce95d5f4b344bfe8d98","tests/fixtures/invalid/string/bad-uni-esc-7.stderr":"24cd2f58919584c4dd12f0262933c8c0c6142a2b62c747d465ca1b9b4986093c","tests/fixtures/invalid/string/basic-byte-escapes.stderr":"b42fd0273c7438bf13ddea9552204bb9209cdcc8e4151311d2446185d2cd546a","tests/fixtures/invalid/string/basic-multiline-out-of-range-unicode-escape-1.stderr":"725cd4955987c3d6e736832281316d6c1a2446303e9a1dc78900cef4bb84ee64","tests/fixtures/invalid/string/basic-multiline-out-of-range-unicode-escape-2.stderr":"c6698fbdb95188d53bfdaa4a4f590d86a73aafcc321a5d9511ab43ce51be1c78","tests/fixtures/invalid/string/basic-multiline-quotes.stderr":"28177a49532f22aaffc9dc204592a2c5eca2fc20f8e208b7c7f589201e8b7de5","tests/fixtures/invalid/string/basic-multiline-unknown-escape.stderr":"a83406b30eb3ab2cebb0230d8d65d0b7583885138f2c070976ae61de2c8b17f3","tests/fixtures/invalid/string/basic-out-of-range-unicode-escape-1.stderr":"19af67599c6c2eef340c9fdb0ab2cc788928def50280af939247a1274447781f","tests/fixtures/invalid/string/basic-out-of-range-unicode-escape-2.stderr":"0e2e1a69358502ec17a07e4fc151b70e8a3b5123798cb38f98fe2d146515a84e","tests/fixtures/invalid/string/basic-unknown-escape.stderr":"1de467948fb18f61336350063701d9c5a6615054fe740a9be650f71f5ca4236b","tests/fixtures/invalid/string/literal-multiline-quotes-1.stderr":"249123229606aa8eedff1b5bdead5022daf470e47dbca639e32019d1d61dbcf9","tests/fixtures/invalid/string/literal-multiline-quotes-2.stderr":"d9784af1ff056a90bf531307749d53a5d24ffffbc0f4aada7fcee417a50d1615","tests/fixtures/invalid/string/missing-quotes.stderr":"462f24701d2c51d36b18d06b69be2f6eb36449b5f3ffbaa737fcbd2b2151ae4a","tests/fixtures/invalid/string/multiline-bad-escape-1.stderr":"18469c4d37d011b3f30ae17e3111b5e8a9526d593475e5d8d7a9b19461a40e8d","tests/fixtures/invalid/string/multiline-bad-escape-2.stderr":"d43896d3005c8470dc8149e2b74eb8825c6d9fedfe9f48125ad88a95c1dc3035","tests/fixtures/invalid/string/multiline-bad-escape-3.stderr":"92f732c6bcb922e25d2a001a389f93b596dd0e91109cbdcb651efa146309dc2a","tests/fixtures/invalid/string/multiline-bad-escape-4.stderr":"5e549045d08a76406f29c10433766f1c32aa69a169f3dc138103b4615c9979b1","tests/fixtures/invalid/string/multiline-escape-space-1.stderr":"94b451b6c03055186777a248cb216f95a1b2e29df25549f345d96bd0a4e63f1e","tests/fixtures/invalid/string/multiline-escape-space-2.stderr":"850d75a72e44e1ceeced7d65b810afa5b2935f3ab3efea0f3e147a06d82a6637","tests/fixtures/invalid/string/multiline-lit-no-close-1.stderr":"8e81ec582e75388024196cb5a64aaccc128c874be341fba01973c722e64a0d1b","tests/fixtures/invalid/string/multiline-lit-no-close-2.stderr":"9572aa98be504bab0172f612c40010d005577a6cd30f7fb3d25ea29c73e0489a","tests/fixtures/invalid/string/multiline-lit-no-close-3.stderr":"cc89579aa2201fc3bbe98693f822516557d950a9844e68ace4355991dd02478b","tests/fixtures/invalid/string/multiline-lit-no-close-4.stderr":"2310b339cc17b8aefce9ef0e2805c77d5cce3d70abe93373ebb8f986169afe00","tests/fixtures/invalid/string/multiline-no-close-1.stderr":"d5b9602d23b0cb023fbe3ae80d862fd60332475ba8863a1e977f17cb326a4548","tests/fixtures/invalid/string/multiline-no-close-2.stderr":"e500e99a44305b1e148b211e963478cf1554f8c9536d3108390cf41d5b2ce069","tests/fixtures/invalid/string/multiline-no-close-3.stderr":"efea30ada8d63f3071be499d63a82729b8f2c3d5f6155a1dca456e7d790f84be","tests/fixtures/invalid/string/multiline-no-close-4.stderr":"30ce703d6a38d97861b37d8539648734145e6ce45c39b2dc8b970b7b34557031","tests/fixtures/invalid/string/multiline-no-close-5.stderr":"a8b6610cb194104520cdc9fdd140192b6b1c738a3fe922a9f40c21b91f82487e","tests/fixtures/invalid/string/multiline-quotes-1.stderr":"046956658c0a73e665e7a6a2044ff83c8efb8cdd8c2ab153c163eb1e61068c56","tests/fixtures/invalid/string/no-close-1.stderr":"3ad8aff0932d98592b808fc6f44fa68a854097f8025e92c11af1acb6de3d3cc7","tests/fixtures/invalid/string/no-close-2.stderr":"3438330fa63c592f316342c9786696a2426df2838d60ee52889a9dc2527ce77c","tests/fixtures/invalid/string/no-close-3.stderr":"06e62924f3e7a0d290ab2a377e6a6b96c69bafee7170feb37331d6220e956e38","tests/fixtures/invalid/string/no-close-4.stderr":"e5cacd943fec6e10430242c95b42cdd55068cc053f5b40eff38e077a70d0109a","tests/fixtures/invalid/string/string.stderr":"aea935cf1e17743356e6fb1059afed2d0ee5262906594782e5537a025398038e","tests/fixtures/invalid/string/text-after-string.stderr":"1c1e4677be8d3dba0e7933b3ed1cbb6e0bcf6f600cf9a989a7b09c9424a4d0a7","tests/fixtures/invalid/string/wrong-close.stderr":"441f4f1b73c11c8dbf2f73cf9a7766f17a9517b3b9142e86736ed43eaec07f18","tests/fixtures/invalid/table/append-to-array-with-dotted-keys.stderr":"e16e10a17e38898bfff5b16887d9143fa5036669e83b75e84aa4ba4078b1a9a8","tests/fixtures/invalid/table/append-with-dotted-keys-1.stderr":"a67f1f152005295e0a1bb3dcaaa755edd05f19ac5316b8ad2eb4d45797e0f770","tests/fixtures/invalid/table/append-with-dotted-keys-2.stderr":"72d9ea8a90b4d9e5319c2bf951bdde6a87a205612e82ed5a09cea2b706bfde7f","tests/fixtures/invalid/table/array-empty.stderr":"e8a41c60adf7756361920816b6c4f44125a813c869b71fae2c98473e4da1b231","tests/fixtures/invalid/table/array-implicit.stderr":"7797ce41aab0567fc9d40e277cc32c12e1f16ffc0e73857fdb3bbf754246305f","tests/fixtures/invalid/table/array-no-close-1.stderr":"5f1e8703d59398f6595d21ed0abcc7dc3ce77943ad0f71eede9ad63ea2bcc7c1","tests/fixtures/invalid/table/array-no-close-2.stderr":"5adeffef5a1e1d63b6461f2a734a5b557bd3709e4fde903262be0452890623a6","tests/fixtures/invalid/table/duplicate-key-dotted-array.stderr":"9158eaf24fd4237fb87a6fb9be00e18ea935cb509a657bfe370cfa769e97cef6","tests/fixtures/invalid/table/duplicate-key-dotted-table.stderr":"ca58908463cbe2ec6b3de314237c178fee64245cc738c72a7b9e08bb3d02b2b0","tests/fixtures/invalid/table/duplicate-key-dotted-table2.stderr":"cb59f2ed324642de947f3cd9373ca111ec35104a5f33578f64c48084ce1a84f5","tests/fixtures/invalid/table/duplicate-key-table.stderr":"f4816522738b3e2ace87d1100a3d73e6a122d8dc67d05e0b35a1438e16a8952c","tests/fixtures/invalid/table/duplicate-table-array.stderr":"11d293e4b4f205fc98cd892f25a25f533cb922c963ecf095a932d2e9d550be4f","tests/fixtures/invalid/table/duplicate-table-array2.stderr":"fa9cd3b1212eed14ec56b66a16471ac2f7c0398d743982abb7c5cb4b5c7a5fe4","tests/fixtures/invalid/table/duplicate.stderr":"3e6d1b1a2f44d449e8cb0098e7c40ad1e755363b446f3821c399abfb26eb9939","tests/fixtures/invalid/table/empty-implicit-table.stderr":"cd3606ce97c5537d18146cd978403636a65fa703c83616da75b8cafa86e8fa24","tests/fixtures/invalid/table/empty.stderr":"4399e419abbcfbec93f5915e7fbdd11b6e462a4c066a29eacda159abfc588734","tests/fixtures/invalid/table/equals-sign.stderr":"472de6b908a03c99637b635a3a898ed956684ae422e1b4b135ec94986ea45f2d","tests/fixtures/invalid/table/llbrace.stderr":"db6bbee7ed15994398901c46ed4b40904897e71f5d972deb7904ccac49cd834e","tests/fixtures/invalid/table/nested-brackets-close.stderr":"e1dff60ea8f77dd1b8fae7d1d63c788c838c80560172d92377cc168f5cb5923a","tests/fixtures/invalid/table/nested-brackets-open.stderr":"bd58eb0630dc0c51ebc288258d360d707c8f43a5877ddc21e9420f8eb76a2f4c","tests/fixtures/invalid/table/no-close-1.stderr":"ae6326db737d2e259c051fbe3f5aa6ef7d7ec1bd47930ea78e09667a20100a72","tests/fixtures/invalid/table/no-close-2.stderr":"3b599c6d07071a40a0c3acf163f0b04655bb8953fe32bdcab5e68a527c3ab22e","tests/fixtures/invalid/table/no-close-3.stderr":"6bf7e2d30c735a55f595140af7c7f6be89b6faf868f4473ea39570fdb87d5823","tests/fixtures/invalid/table/no-close-4.stderr":"917c0203d1e45309fcff82ce33fdd2d989f630fb99290a40cb9e08a6f7ca0ef8","tests/fixtures/invalid/table/no-close-5.stderr":"c1a691a6fa9638b75010f37166c29a6e5a2da2e35bd9a321118d7ea384af2d77","tests/fixtures/invalid/table/overwrite-array-in-parent.stderr":"300782a740fff829dfe485a4a43426a53f82bb6afca63ef82fc07081c43d8707","tests/fixtures/invalid/table/overwrite-bool-with-array.stderr":"dcd33263a49a91ed583c3f53c6e86d6c5b8d493d841aea074a5a81f57cb5c152","tests/fixtures/invalid/table/overwrite-with-deep-table.stderr":"b128988d3a37f5857c41751847ed0d9590e4cbda66a55238f73c60d992749e41","tests/fixtures/invalid/table/redefine-1.stderr":"3e794bce5bb6ae9f603f50e3dc62d136701ec478078e8a8e99c94229778e24ca","tests/fixtures/invalid/table/redefine-2.stderr":"76a6fa1ea8d5da8a78aecb88c506dcf4e07906984baa8c9d1a363b2bebfa4281","tests/fixtures/invalid/table/redefine-3.stderr":"6ebf320d6d2117c189dd8d425303a66739a4813e4abef2d3184dc9ef5915d959","tests/fixtures/invalid/table/rrbrace.stderr":"342a5ff362c8b4c1e85a6442029291bd33165a3b36552794fcd5269249bf36a1","tests/fixtures/invalid/table/text-after-table.stderr":"6dfaf1fc3199f0602fea52f7b1c65869eb2f8643b9e90dc1e718a183fb972485","tests/fixtures/invalid/table/whitespace.stderr":"fa48d4dc83f92e729dc25c6fc6a0c336014391b4bdb3392998f18141d2deb350","tests/fixtures/invalid/table/with-pound.stderr":"97dbd1ceb7f357bd98cc1caa9a602c638aaa5831237b7d63b18153acc64d3af4","tests/invalid.rs":"daa9034453fb7f10718020e36a07a19664eb852071995f17480c595cb44e2cdf","tests/testsuite/convert.rs":"9140d681dbb9370b975d5bc1cd4e9e640ac4023c6789edcae544e66657ad5fe9","tests/testsuite/datetime.rs":"105d95570d05e9ecbc30bfe7d081f9d63e2f36634e9124da012f467c6134549e","tests/testsuite/edit.rs":"752f5310c253b670645335a316b789a71368ab3aebdf77ca2bfb6bcccaedc355","tests/testsuite/float.rs":"3db8b466505990ff3de38666c810b15c036632322b18f8e9c7893477dff4d641","tests/testsuite/invalid.rs":"31789643e3419ab922f8258e5a0421e1648b64aa5b96d3e1fb79bae36abf286e","tests/testsuite/main.rs":"b78ad4077facdf0e31ef77355fb3deb70d8339befbdb9ef16abca3b05231556e","tests/testsuite/parse.rs":"28fc7e35b5a80feb98eb69d7cb37d058addfe18bad56f9edd948c93f55cc7914","tests/testsuite/stackoverflow.rs":"426d4e621bbafe62f8aba2e8c62e715929185d5eca4c5083b6427b601abc667a"},"package":"70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81"} \ No newline at end of file
diff --git a/vendor/toml_edit/Cargo.lock b/vendor/toml_edit/Cargo.lock
index 5dfc8c25f..09337d3eb 100644
--- a/vendor/toml_edit/Cargo.lock
+++ b/vendor/toml_edit/Cargo.lock
@@ -430,9 +430,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
-version = "1.0.56"
+version = "1.0.67"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435"
+checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"
dependencies = [
"unicode-ident",
]
@@ -479,9 +479,9 @@ dependencies = [
[[package]]
name = "ryu"
-version = "1.0.11"
+version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
+checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
[[package]]
name = "same-file"
@@ -525,9 +525,9 @@ dependencies = [
[[package]]
name = "serde_spanned"
-version = "0.6.3"
+version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186"
+checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80"
dependencies = [
"serde",
]
@@ -625,29 +625,30 @@ dependencies = [
[[package]]
name = "toml-test"
-version = "0.3.4"
+version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37351256790aa1dbd6d60f4ff08e55e7f372e292f3e9040d6e077463d9a779c3"
+checksum = "1ec3892835fb31e181a87e1758275a64b0d7c6c9e9618aeb61a647bd487314c0"
dependencies = [
"chrono",
+ "ryu",
"serde",
"serde_json",
]
[[package]]
name = "toml-test-data"
-version = "1.3.0"
+version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93f351b6d6005ee802b0d4a53ca1cdf05636f441df4d299e62cba57f1da52646"
+checksum = "0082ae0d631f97530e98829c4101ae3ce3f1821a88f0a04be4fc3eaca5e7ed2d"
dependencies = [
"include_dir",
]
[[package]]
name = "toml-test-harness"
-version = "0.4.3"
+version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e00fda5710922fe6b3005bf6a5050c303d6f9625249c37b7386e8818f4af675"
+checksum = "1be4b8d761dee51b4694e9f1d622a1d7f9c135a8b8265459e16d09ac5b16a05d"
dependencies = [
"ignore",
"libtest-mimic",
@@ -657,16 +658,16 @@ dependencies = [
[[package]]
name = "toml_datetime"
-version = "0.6.3"
+version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
+checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
dependencies = [
"serde",
]
[[package]]
name = "toml_edit"
-version = "0.19.14"
+version = "0.20.7"
dependencies = [
"indexmap",
"kstring",
diff --git a/vendor/toml_edit/Cargo.toml b/vendor/toml_edit/Cargo.toml
index 26929ff2a..941c55da0 100644
--- a/vendor/toml_edit/Cargo.toml
+++ b/vendor/toml_edit/Cargo.toml
@@ -11,9 +11,9 @@
[package]
edition = "2021"
-rust-version = "1.64.0"
+rust-version = "1.67"
name = "toml_edit"
-version = "0.19.14"
+version = "0.20.7"
authors = [
"Andronik Ordian <write@reusable.software>",
"Ed Page <eopage@gmail.com>",
@@ -119,12 +119,12 @@ version = "1.0.145"
optional = true
[dependencies.serde_spanned]
-version = "0.6.3"
+version = "0.6.4"
features = ["serde"]
optional = true
[dependencies.toml_datetime]
-version = "0.6.3"
+version = "0.6.5"
[dependencies.winnow]
version = "0.5.0"
@@ -140,10 +140,10 @@ version = "0.4.11"
features = ["harness"]
[dev-dependencies.toml-test-data]
-version = "1.3.0"
+version = "1.4.0"
[dev-dependencies.toml-test-harness]
-version = "0.4.3"
+version = "0.4.8"
[features]
default = []
diff --git a/vendor/toml_edit/LICENSE-APACHE b/vendor/toml_edit/LICENSE-APACHE
index 16fe87b06..8f71f43fe 100644
--- a/vendor/toml_edit/LICENSE-APACHE
+++ b/vendor/toml_edit/LICENSE-APACHE
@@ -1,201 +1,202 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright {yyyy} {name of copyright owner}
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
diff --git a/vendor/toml_edit/LICENSE-MIT b/vendor/toml_edit/LICENSE-MIT
index b9e61a2da..a2d01088b 100644
--- a/vendor/toml_edit/LICENSE-MIT
+++ b/vendor/toml_edit/LICENSE-MIT
@@ -1,6 +1,4 @@
-MIT License
-
-Copyright (c) 2017 Andronik Ordian
+Copyright (c) Individual contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/toml_edit/README.md b/vendor/toml_edit/README.md
index f1c74eeb0..12d879af0 100644
--- a/vendor/toml_edit/README.md
+++ b/vendor/toml_edit/README.md
@@ -9,7 +9,7 @@
This crate allows you to parse and modify toml
documents, while preserving comments, spaces *and
-relative order* or items.
+relative order* of items.
`toml_edit` is primarily tailored for [cargo-edit](https://github.com/killercup/cargo-edit/) needs.
diff --git a/vendor/toml_edit/src/array.rs b/vendor/toml_edit/src/array.rs
index 045b451e0..97033de58 100644
--- a/vendor/toml_edit/src/array.rs
+++ b/vendor/toml_edit/src/array.rs
@@ -317,6 +317,56 @@ impl Array {
.retain(|item| item.as_value().map(&mut keep).unwrap_or(false));
}
+ /// Sorts the slice with a comparator function.
+ ///
+ /// This sort is stable (i.e., does not reorder equal elements) and *O*(*n* \* log(*n*)) worst-case.
+ ///
+ /// The comparator function must define a total ordering for the elements in the slice. If
+ /// the ordering is not total, the order of the elements is unspecified. An order is a
+ /// total order if it is (for all `a`, `b` and `c`):
+ ///
+ /// * total and antisymmetric: exactly one of `a < b`, `a == b` or `a > b` is true, and
+ /// * transitive, `a < b` and `b < c` implies `a < c`. The same must hold for both `==` and `>`.
+ ///
+ /// For example, while [`f64`] doesn't implement [`Ord`] because `NaN != NaN`, we can use
+ /// `partial_cmp` as our sort function when we know the slice doesn't contain a `NaN`.
+ #[inline]
+ pub fn sort_by<F>(&mut self, mut compare: F)
+ where
+ F: FnMut(&Value, &Value) -> std::cmp::Ordering,
+ {
+ self.values.sort_by(move |lhs, rhs| {
+ let lhs = lhs.as_value();
+ let rhs = rhs.as_value();
+ match (lhs, rhs) {
+ (None, None) => std::cmp::Ordering::Equal,
+ (Some(_), None) => std::cmp::Ordering::Greater,
+ (None, Some(_)) => std::cmp::Ordering::Less,
+ (Some(lhs), Some(rhs)) => compare(lhs, rhs),
+ }
+ })
+ }
+
+ /// Sorts the array with a key extraction function.
+ ///
+ /// This sort is stable (i.e., does not reorder equal elements) and *O*(*m* \* *n* \* log(*n*))
+ /// worst-case, where the key function is *O*(*m*).
+ #[inline]
+ pub fn sort_by_key<K, F>(&mut self, mut f: F)
+ where
+ F: FnMut(&Value) -> K,
+ K: Ord,
+ {
+ #[allow(clippy::manual_map)] // needed for lifetimes
+ self.values.sort_by_key(move |item| {
+ if let Some(value) = item.as_value() {
+ Some(f(value))
+ } else {
+ None
+ }
+ });
+ }
+
fn value_op<T>(
&mut self,
v: Value,
diff --git a/vendor/toml_edit/src/de/key.rs b/vendor/toml_edit/src/de/key.rs
index 3da41df41..a3b282566 100644
--- a/vendor/toml_edit/src/de/key.rs
+++ b/vendor/toml_edit/src/de/key.rs
@@ -62,9 +62,20 @@ impl<'de> serde::de::Deserializer<'de> for KeyDeserializer {
self.deserialize_any(visitor)
}
+ fn deserialize_newtype_struct<V>(
+ self,
+ _name: &'static str,
+ visitor: V,
+ ) -> Result<V::Value, Error>
+ where
+ V: serde::de::Visitor<'de>,
+ {
+ visitor.visit_newtype_struct(self)
+ }
+
serde::forward_to_deserialize_any! {
bool u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 char str string seq
- bytes byte_buf map option unit newtype_struct
+ bytes byte_buf map option unit
ignored_any unit_struct tuple_struct tuple identifier
}
}
diff --git a/vendor/toml_edit/src/de/table_enum.rs b/vendor/toml_edit/src/de/table_enum.rs
index 197ad6ea7..0ceeab62f 100644
--- a/vendor/toml_edit/src/de/table_enum.rs
+++ b/vendor/toml_edit/src/de/table_enum.rs
@@ -16,6 +16,20 @@ impl<'de> serde::de::VariantAccess<'de> for TableEnumDeserializer {
fn unit_variant(self) -> Result<(), Self::Error> {
match self.value {
+ crate::Item::ArrayOfTables(values) => {
+ if values.is_empty() {
+ Ok(())
+ } else {
+ Err(Error::custom("expected empty array", values.span()))
+ }
+ }
+ crate::Item::Value(crate::Value::Array(values)) => {
+ if values.is_empty() {
+ Ok(())
+ } else {
+ Err(Error::custom("expected empty table", values.span()))
+ }
+ }
crate::Item::Table(values) => {
if values.is_empty() {
Ok(())
@@ -49,9 +63,41 @@ impl<'de> serde::de::VariantAccess<'de> for TableEnumDeserializer {
V: serde::de::Visitor<'de>,
{
match self.value {
+ crate::Item::ArrayOfTables(values) => {
+ let values_span = values.span();
+ let tuple_values = values.values.into_iter().collect::<Vec<_>>();
+
+ if tuple_values.len() == len {
+ serde::de::Deserializer::deserialize_seq(
+ super::ArrayDeserializer::new(tuple_values, values_span),
+ visitor,
+ )
+ } else {
+ Err(Error::custom(
+ format!("expected tuple with length {}", len),
+ values_span,
+ ))
+ }
+ }
+ crate::Item::Value(crate::Value::Array(values)) => {
+ let values_span = values.span();
+ let tuple_values = values.values.into_iter().collect::<Vec<_>>();
+
+ if tuple_values.len() == len {
+ serde::de::Deserializer::deserialize_seq(
+ super::ArrayDeserializer::new(tuple_values, values_span),
+ visitor,
+ )
+ } else {
+ Err(Error::custom(
+ format!("expected tuple with length {}", len),
+ values_span,
+ ))
+ }
+ }
crate::Item::Table(values) => {
let values_span = values.span();
- let tuple_values = values
+ let tuple_values: Result<Vec<_>, _> = values
.items
.into_iter()
.enumerate()
@@ -68,17 +114,8 @@ impl<'de> serde::de::VariantAccess<'de> for TableEnumDeserializer {
)),
},
)
- // Fold all values into a `Vec`, or return the first error.
- .fold(Ok(Vec::with_capacity(len)), |result, value_result| {
- result.and_then(move |mut tuple_values| match value_result {
- Ok(value) => {
- tuple_values.push(value);
- Ok(tuple_values)
- }
- // `Result<de::Value, Self::Error>` to `Result<Vec<_>, Self::Error>`
- Err(e) => Err(e),
- })
- })?;
+ .collect();
+ let tuple_values = tuple_values?;
if tuple_values.len() == len {
serde::de::Deserializer::deserialize_seq(
@@ -94,7 +131,7 @@ impl<'de> serde::de::VariantAccess<'de> for TableEnumDeserializer {
}
crate::Item::Value(crate::Value::InlineTable(values)) => {
let values_span = values.span();
- let tuple_values = values
+ let tuple_values: Result<Vec<_>, _> = values
.items
.into_iter()
.enumerate()
@@ -111,17 +148,8 @@ impl<'de> serde::de::VariantAccess<'de> for TableEnumDeserializer {
)),
},
)
- // Fold all values into a `Vec`, or return the first error.
- .fold(Ok(Vec::with_capacity(len)), |result, value_result| {
- result.and_then(move |mut tuple_values| match value_result {
- Ok(value) => {
- tuple_values.push(value);
- Ok(tuple_values)
- }
- // `Result<de::Value, Self::Error>` to `Result<Vec<_>, Self::Error>`
- Err(e) => Err(e),
- })
- })?;
+ .collect();
+ let tuple_values = tuple_values?;
if tuple_values.len() == len {
serde::de::Deserializer::deserialize_seq(
diff --git a/vendor/toml_edit/src/de/value.rs b/vendor/toml_edit/src/de/value.rs
index 39842875a..d3cf87fc6 100644
--- a/vendor/toml_edit/src/de/value.rs
+++ b/vendor/toml_edit/src/de/value.rs
@@ -5,7 +5,7 @@ use crate::de::Error;
/// Deserialization implementation for TOML [values][crate::Value].
///
-/// Can be creater either directly from TOML strings, using [`std::str::FromStr`],
+/// Can be created either directly from TOML strings, using [`std::str::FromStr`],
/// or from parsed [values][crate::Value] using [`serde::de::IntoDeserializer::into_deserializer`].
///
/// # Example
diff --git a/vendor/toml_edit/src/encode.rs b/vendor/toml_edit/src/encode.rs
index 9940f282b..db10e29ea 100644
--- a/vendor/toml_edit/src/encode.rs
+++ b/vendor/toml_edit/src/encode.rs
@@ -390,7 +390,7 @@ pub(crate) fn to_string_repr(
'\u{8}' => output.push_str("\\b"),
'\u{9}' => output.push_str("\\t"),
'\u{a}' => match style {
- StringStyle::NewlineTripple => output.push('\n'),
+ StringStyle::NewlineTriple => output.push('\n'),
StringStyle::OnelineSingle => output.push_str("\\n"),
_ => unreachable!(),
},
@@ -412,59 +412,56 @@ pub(crate) fn to_string_repr(
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub(crate) enum StringStyle {
- NewlineTripple,
- OnelineTripple,
+ NewlineTriple,
+ OnelineTriple,
OnelineSingle,
}
impl StringStyle {
fn literal_start(self) -> &'static str {
match self {
- Self::NewlineTripple => "'''\n",
- Self::OnelineTripple => "'''",
+ Self::NewlineTriple => "'''\n",
+ Self::OnelineTriple => "'''",
Self::OnelineSingle => "'",
}
}
fn literal_end(self) -> &'static str {
match self {
- Self::NewlineTripple => "'''",
- Self::OnelineTripple => "'''",
+ Self::NewlineTriple => "'''",
+ Self::OnelineTriple => "'''",
Self::OnelineSingle => "'",
}
}
fn standard_start(self) -> &'static str {
match self {
- Self::NewlineTripple => "\"\"\"\n",
- // note: OnelineTripple can happen if do_pretty wants to do
+ Self::NewlineTriple => "\"\"\"\n",
+ // note: OnelineTriple can happen if do_pretty wants to do
// '''it's one line'''
// but literal == false
- Self::OnelineTripple | Self::OnelineSingle => "\"",
+ Self::OnelineTriple | Self::OnelineSingle => "\"",
}
}
fn standard_end(self) -> &'static str {
match self {
- Self::NewlineTripple => "\"\"\"",
- // note: OnelineTripple can happen if do_pretty wants to do
+ Self::NewlineTriple => "\"\"\"",
+ // note: OnelineTriple can happen if do_pretty wants to do
// '''it's one line'''
// but literal == false
- Self::OnelineTripple | Self::OnelineSingle => "\"",
+ Self::OnelineTriple | Self::OnelineSingle => "\"",
}
}
}
fn infer_style(value: &str) -> (StringStyle, bool) {
- // For doing pretty prints we store in a new String
- // because there are too many cases where pretty cannot
- // work. We need to determine:
+ // We need to determine:
// - if we are a "multi-line" pretty (if there are \n)
// - if ['''] appears if multi or ['] if single
// - if there are any invalid control characters
//
// Doing it any other way would require multiple passes
// to determine if a pretty string works or not.
- let mut out = String::with_capacity(value.len() * 2);
let mut ty = StringStyle::OnelineSingle;
// found consecutive single quotes
let mut max_found_singles = 0;
@@ -490,18 +487,17 @@ fn infer_style(value: &str) -> (StringStyle, bool) {
'\\' => {
prefer_literal = true;
}
- '\n' => ty = StringStyle::NewlineTripple,
+ '\n' => ty = StringStyle::NewlineTriple,
// Escape codes are needed if any ascii control
// characters are present, including \b \f \r.
c if c <= '\u{1f}' || c == '\u{7f}' => can_be_pretty = false,
_ => {}
}
- out.push(ch);
} else {
// the string cannot be represented as pretty,
// still check if it should be multiline
if ch == '\n' {
- ty = StringStyle::NewlineTripple;
+ ty = StringStyle::NewlineTriple;
}
}
}
@@ -513,7 +509,7 @@ fn infer_style(value: &str) -> (StringStyle, bool) {
can_be_pretty = false;
}
if !can_be_pretty {
- debug_assert!(ty != StringStyle::OnelineTripple);
+ debug_assert!(ty != StringStyle::OnelineTriple);
return (ty, false);
}
if found_singles > max_found_singles {
@@ -522,7 +518,7 @@ fn infer_style(value: &str) -> (StringStyle, bool) {
debug_assert!(max_found_singles < 3);
if ty == StringStyle::OnelineSingle && max_found_singles >= 1 {
// no newlines, but must use ''' because it has ' in it
- ty = StringStyle::OnelineTripple;
+ ty = StringStyle::OnelineTriple;
}
(ty, true)
}
diff --git a/vendor/toml_edit/src/inline_table.rs b/vendor/toml_edit/src/inline_table.rs
index 3dc6c0c05..cbd64adb3 100644
--- a/vendor/toml_edit/src/inline_table.rs
+++ b/vendor/toml_edit/src/inline_table.rs
@@ -11,6 +11,8 @@ use crate::{InternalString, Item, KeyMut, RawString, Table, Value};
pub struct InlineTable {
// `preamble` represents whitespaces in an empty table
preamble: RawString,
+ // Whether to hide an empty table
+ pub(crate) implicit: bool,
// prefix before `{` and suffix after `}`
decor: Decor,
pub(crate) span: Option<std::ops::Range<usize>>,
@@ -55,10 +57,10 @@ impl InlineTable {
values
}
- pub(crate) fn append_values<'s, 'c>(
+ pub(crate) fn append_values<'s>(
&'s self,
parent: &[&'s Key],
- values: &'c mut Vec<(Vec<&'s Key>, &'s Value)>,
+ values: &mut Vec<(Vec<&'s Key>, &'s Value)>,
) {
for value in self.items.values() {
let mut path = parent.to_vec();
@@ -133,6 +135,32 @@ impl InlineTable {
}
}
+ /// If a table has no key/value pairs and implicit, it will not be displayed.
+ ///
+ /// # Examples
+ ///
+ /// ```notrust
+ /// [target."x86_64/windows.json".dependencies]
+ /// ```
+ ///
+ /// In the document above, tables `target` and `target."x86_64/windows.json"` are implicit.
+ ///
+ /// ```
+ /// use toml_edit::Document;
+ /// let mut doc = "[a]\n[a.b]\n".parse::<Document>().expect("invalid toml");
+ ///
+ /// doc["a"].as_table_mut().unwrap().set_implicit(true);
+ /// assert_eq!(doc.to_string(), "[a.b]\n");
+ /// ```
+ pub(crate) fn set_implicit(&mut self, implicit: bool) {
+ self.implicit = implicit;
+ }
+
+ /// If a table has no key/value pairs and implicit, it will not be displayed.
+ pub(crate) fn is_implicit(&self) -> bool {
+ self.implicit
+ }
+
/// Change this table's dotted status
pub fn set_dotted(&mut self, yes: bool) {
self.dotted = yes;
@@ -439,7 +467,7 @@ fn decorate_inline_table(table: &mut InlineTable) {
for (key_decor, value) in table
.items
.iter_mut()
- .filter(|&(_, ref kv)| kv.value.is_value())
+ .filter(|(_, kv)| kv.value.is_value())
.map(|(_, kv)| (&mut kv.key.decor, kv.value.as_value_mut().unwrap()))
{
key_decor.clear();
diff --git a/vendor/toml_edit/src/item.rs b/vendor/toml_edit/src/item.rs
index 2025fd916..a14056319 100644
--- a/vendor/toml_edit/src/item.rs
+++ b/vendor/toml_edit/src/item.rs
@@ -7,9 +7,10 @@ use crate::table::TableLike;
use crate::{Array, InlineTable, Table, Value};
/// Type representing either a value, a table, an array of tables, or none.
-#[derive(Debug)]
+#[derive(Debug, Default)]
pub enum Item {
/// Type representing none.
+ #[default]
None,
/// Type representing value.
Value(Value),
@@ -328,12 +329,6 @@ impl Clone for Item {
}
}
-impl Default for Item {
- fn default() -> Self {
- Item::None
- }
-}
-
impl FromStr for Item {
type Err = crate::TomlError;
diff --git a/vendor/toml_edit/src/parser/datetime.rs b/vendor/toml_edit/src/parser/datetime.rs
index 6e89b9779..96a3854d4 100644
--- a/vendor/toml_edit/src/parser/datetime.rs
+++ b/vendor/toml_edit/src/parser/datetime.rs
@@ -9,6 +9,7 @@ use winnow::combinator::alt;
use winnow::combinator::cut_err;
use winnow::combinator::opt;
use winnow::combinator::preceded;
+use winnow::stream::Stream as _;
use winnow::token::one_of;
use winnow::token::take_while;
use winnow::trace::trace;
@@ -53,12 +54,35 @@ pub(crate) fn date_time(input: &mut Input<'_>) -> PResult<Datetime> {
// full-date = date-fullyear "-" date-month "-" date-mday
pub(crate) fn full_date(input: &mut Input<'_>) -> PResult<Date> {
- trace(
- "full-date",
- (date_fullyear, b'-', cut_err((date_month, b'-', date_mday)))
- .map(|(year, _, (month, _, day))| Date { year, month, day }),
- )
- .parse_next(input)
+ trace("full-date", full_date_).parse_next(input)
+}
+
+fn full_date_(input: &mut Input<'_>) -> PResult<Date> {
+ let year = date_fullyear.parse_next(input)?;
+ let _ = b'-'.parse_next(input)?;
+ let month = cut_err(date_month).parse_next(input)?;
+ let _ = cut_err(b'-').parse_next(input)?;
+ let day_start = input.checkpoint();
+ let day = cut_err(date_mday).parse_next(input)?;
+
+ let is_leap_year = (year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0));
+ let max_days_in_month = match month {
+ 2 if is_leap_year => 29,
+ 2 => 28,
+ 4 | 6 | 9 | 11 => 30,
+ _ => 31,
+ };
+ if max_days_in_month < day {
+ input.reset(day_start);
+ return Err(winnow::error::ErrMode::from_external_error(
+ input,
+ winnow::error::ErrorKind::Verify,
+ CustomError::OutOfRange,
+ )
+ .cut());
+ }
+
+ Ok(Date { year, month, day })
}
// partial-time = time-hour ":" time-minute ":" time-second [time-secfrac]
diff --git a/vendor/toml_edit/src/parser/errors.rs b/vendor/toml_edit/src/parser/errors.rs
index 859ed5334..685e9f716 100644
--- a/vendor/toml_edit/src/parser/errors.rs
+++ b/vendor/toml_edit/src/parser/errors.rs
@@ -166,7 +166,6 @@ fn translate_position(input: &[u8], index: usize) -> (usize, usize) {
None => 0,
};
let line = input[0..line_start].iter().filter(|b| **b == b'\n').count();
- let line = line;
let column = std::str::from_utf8(&input[line_start..=index])
.map(|s| s.chars().count() - 1)
@@ -310,7 +309,7 @@ impl Display for CustomError {
)
}
CustomError::OutOfRange => write!(f, "value is out of range"),
- CustomError::RecursionLimitExceeded => write!(f, "recursion limit exceded"),
+ CustomError::RecursionLimitExceeded => write!(f, "recursion limit exceeded"),
}
}
}
diff --git a/vendor/toml_edit/src/parser/inline_table.rs b/vendor/toml_edit/src/parser/inline_table.rs
index 994e00336..f7cf2e9c5 100644
--- a/vendor/toml_edit/src/parser/inline_table.rs
+++ b/vendor/toml_edit/src/parser/inline_table.rs
@@ -44,6 +44,16 @@ fn table_from_pairs(
for (path, kv) in v {
let table = descend_path(&mut root, &path)?;
+
+ // "Likewise, using dotted keys to redefine tables already defined in [table] form is not allowed"
+ let mixed_table_types = table.is_dotted() == path.is_empty();
+ if mixed_table_types {
+ return Err(CustomError::DuplicateKey {
+ key: kv.key.get().into(),
+ table: None,
+ });
+ }
+
let key: InternalString = kv.key.get_internal().into();
match table.items.entry(key) {
Entry::Vacant(o) => {
@@ -64,15 +74,26 @@ fn descend_path<'a>(
mut table: &'a mut InlineTable,
path: &'a [Key],
) -> Result<&'a mut InlineTable, CustomError> {
+ let dotted = !path.is_empty();
for (i, key) in path.iter().enumerate() {
let entry = table.entry_format(key).or_insert_with(|| {
let mut new_table = InlineTable::new();
- new_table.set_dotted(true);
+ new_table.set_implicit(dotted);
+ new_table.set_dotted(dotted);
Value::InlineTable(new_table)
});
match *entry {
Value::InlineTable(ref mut sweet_child_of_mine) => {
+ // Since tables cannot be defined more than once, redefining such tables using a
+ // [table] header is not allowed. Likewise, using dotted keys to redefine tables
+ // already defined in [table] form is not allowed.
+ if dotted && !sweet_child_of_mine.is_implicit() {
+ return Err(CustomError::DuplicateKey {
+ key: key.get().into(),
+ table: None,
+ });
+ }
table = sweet_child_of_mine;
}
ref v => {
diff --git a/vendor/toml_edit/src/parser/key.rs b/vendor/toml_edit/src/parser/key.rs
index 12715da19..bd8804a23 100644
--- a/vendor/toml_edit/src/parser/key.rs
+++ b/vendor/toml_edit/src/parser/key.rs
@@ -96,7 +96,7 @@ mod test {
let cases = [
("a", "a"),
(r#""hello\n ""#, "hello\n "),
- (r#"'hello\n '"#, "hello\\n "),
+ (r"'hello\n '", "hello\\n "),
];
for (input, expected) in cases {
diff --git a/vendor/toml_edit/src/parser/mod.rs b/vendor/toml_edit/src/parser/mod.rs
index 1b3cc4f0c..eb4755055 100644
--- a/vendor/toml_edit/src/parser/mod.rs
+++ b/vendor/toml_edit/src/parser/mod.rs
@@ -182,10 +182,10 @@ hosts = [
"omega"
]
- 'some.wierd .stuff' = """
+ 'some.weird .stuff' = """
like
that
- # """ # this broke my sintax highlighting
+ # """ # this broke my syntax highlighting
" also. like " = '''
that
'''
diff --git a/vendor/toml_edit/src/parser/numbers.rs b/vendor/toml_edit/src/parser/numbers.rs
index 6e4757f06..4c77f51c1 100644
--- a/vendor/toml_edit/src/parser/numbers.rs
+++ b/vendor/toml_edit/src/parser/numbers.rs
@@ -301,7 +301,7 @@ pub(crate) fn inf(input: &mut Input<'_>) -> PResult<f64> {
const INF: &[u8] = b"inf";
// nan = %x6e.61.6e ; nan
pub(crate) fn nan(input: &mut Input<'_>) -> PResult<f64> {
- tag(NAN).value(f64::NAN).parse_next(input)
+ tag(NAN).value(f64::NAN.copysign(1.0)).parse_next(input)
}
const NAN: &[u8] = b"nan";
@@ -353,6 +353,7 @@ mod test {
fn assert_float_eq(actual: f64, expected: f64) {
if expected.is_nan() {
assert!(actual.is_nan());
+ assert_eq!(expected.is_sign_positive(), actual.is_sign_positive());
} else if expected.is_infinite() {
assert!(actual.is_infinite());
assert_eq!(expected.is_sign_positive(), actual.is_sign_positive());
@@ -376,9 +377,9 @@ mod test {
("9_224_617.445_991_228_313", 9_224_617.445_991_227),
("-1.7976931348623157e+308", std::f64::MIN),
("1.7976931348623157e+308", std::f64::MAX),
- ("nan", f64::NAN),
- ("+nan", f64::NAN),
- ("-nan", f64::NAN),
+ ("nan", f64::NAN.copysign(1.0)),
+ ("+nan", f64::NAN.copysign(1.0)),
+ ("-nan", f64::NAN.copysign(-1.0)),
("inf", f64::INFINITY),
("+inf", f64::INFINITY),
("-inf", f64::NEG_INFINITY),
diff --git a/vendor/toml_edit/src/parser/state.rs b/vendor/toml_edit/src/parser/state.rs
index efa884d2f..235391c75 100644
--- a/vendor/toml_edit/src/parser/state.rs
+++ b/vendor/toml_edit/src/parser/state.rs
@@ -94,7 +94,7 @@ impl ParseState {
Ok(())
}
- pub(crate) fn start_aray_table(
+ pub(crate) fn start_array_table(
&mut self,
path: Vec<Key>,
decor: Decor,
@@ -217,9 +217,9 @@ impl ParseState {
Ok(())
}
- pub(crate) fn descend_path<'t, 'k>(
+ pub(crate) fn descend_path<'t>(
mut table: &'t mut Table,
- path: &'k [Key],
+ path: &[Key],
dotted: bool,
) -> Result<&'t mut Table, CustomError> {
for (i, key) in path.iter().enumerate() {
@@ -297,7 +297,7 @@ impl ParseState {
.take()
.map(RawString::with_span)
.unwrap_or_default();
- self.start_aray_table(
+ self.start_array_table(
path,
Decor::new(leading, RawString::with_span(trailing)),
span,
diff --git a/vendor/toml_edit/src/parser/strings.rs b/vendor/toml_edit/src/parser/strings.rs
index 26f9cc248..8c366fad5 100644
--- a/vendor/toml_edit/src/parser/strings.rs
+++ b/vendor/toml_edit/src/parser/strings.rs
@@ -440,10 +440,10 @@ The quick brown \
#[test]
fn literal_string() {
let inputs = [
- r#"'C:\Users\nodejs\templates'"#,
- r#"'\\ServerX\admin$\system32\'"#,
+ r"'C:\Users\nodejs\templates'",
+ r"'\\ServerX\admin$\system32\'",
r#"'Tom "Dubs" Preston-Werner'"#,
- r#"'<\i\c*\s*>'"#,
+ r"'<\i\c*\s*>'",
];
for input in &inputs {
@@ -456,7 +456,7 @@ The quick brown \
#[test]
fn ml_literal_string() {
let inputs = [
- r#"'''I [dw]on't need \d{2} apples'''"#,
+ r"'''I [dw]on't need \d{2} apples'''",
r#"''''one_quote''''"#,
];
for input in &inputs {
diff --git a/vendor/toml_edit/src/parser/value.rs b/vendor/toml_edit/src/parser/value.rs
index 14cd951c4..9e1f0781c 100644
--- a/vendor/toml_edit/src/parser/value.rs
+++ b/vendor/toml_edit/src/parser/value.rs
@@ -131,7 +131,7 @@ mod test {
"-239",
"1e200",
"9_224_617.445_991_228_313",
- r#"'''I [dw]on't need \d{2} apples'''"#,
+ r"'''I [dw]on't need \d{2} apples'''",
r#"'''
The first newline is
trimmed in raw strings.
diff --git a/vendor/toml_edit/src/ser/map.rs b/vendor/toml_edit/src/ser/map.rs
index d743e3d5d..47e56ba48 100644
--- a/vendor/toml_edit/src/ser/map.rs
+++ b/vendor/toml_edit/src/ser/map.rs
@@ -1,4 +1,4 @@
-use super::{Error, KeySerializer};
+use super::{Error, KeySerializer, SerializeValueArray, ValueSerializer};
#[doc(hidden)]
pub enum SerializeMap {
@@ -165,7 +165,6 @@ impl serde::ser::SerializeMap for SerializeInlineTable {
where
T: serde::ser::Serialize,
{
- self.key = None;
self.key = Some(input.serialize(KeySerializer)?);
Ok(())
}
@@ -174,7 +173,8 @@ impl serde::ser::SerializeMap for SerializeInlineTable {
where
T: serde::ser::Serialize,
{
- let res = value.serialize(super::ValueSerializer {});
+ let mut value_serializer = MapValueSerializer::new();
+ let res = value.serialize(&mut value_serializer);
match res {
Ok(item) => {
let key = self.key.take().unwrap();
@@ -185,7 +185,7 @@ impl serde::ser::SerializeMap for SerializeInlineTable {
self.items.insert(key, kv);
}
Err(e) => {
- if e != Error::UnsupportedNone {
+ if !(e == Error::UnsupportedNone && value_serializer.is_none) {
return Err(e);
}
}
@@ -210,7 +210,8 @@ impl serde::ser::SerializeStruct for SerializeInlineTable {
where
T: serde::ser::Serialize,
{
- let res = value.serialize(super::ValueSerializer {});
+ let mut value_serializer = MapValueSerializer::new();
+ let res = value.serialize(&mut value_serializer);
match res {
Ok(item) => {
let kv = crate::table::TableKeyValue::new(
@@ -220,7 +221,7 @@ impl serde::ser::SerializeStruct for SerializeInlineTable {
self.items.insert(crate::InternalString::from(key), kv);
}
Err(e) => {
- if e != Error::UnsupportedNone {
+ if !(e == Error::UnsupportedNone && value_serializer.is_none) {
return Err(e);
}
}
@@ -403,3 +404,261 @@ impl serde::ser::Serializer for DatetimeFieldSerializer {
Err(Error::DateInvalid)
}
}
+
+#[derive(Default)]
+struct MapValueSerializer {
+ is_none: bool,
+}
+
+impl MapValueSerializer {
+ fn new() -> Self {
+ Self { is_none: false }
+ }
+}
+
+impl serde::ser::Serializer for &mut MapValueSerializer {
+ type Ok = crate::Value;
+ type Error = Error;
+ type SerializeSeq = super::SerializeValueArray;
+ type SerializeTuple = super::SerializeValueArray;
+ type SerializeTupleStruct = super::SerializeValueArray;
+ type SerializeTupleVariant = super::SerializeTupleVariant;
+ type SerializeMap = super::SerializeMap;
+ type SerializeStruct = super::SerializeMap;
+ type SerializeStructVariant = super::SerializeStructVariant;
+
+ fn serialize_bool(self, v: bool) -> Result<Self::Ok, Self::Error> {
+ ValueSerializer::new().serialize_bool(v)
+ }
+
+ fn serialize_i8(self, v: i8) -> Result<Self::Ok, Self::Error> {
+ ValueSerializer::new().serialize_i8(v)
+ }
+
+ fn serialize_i16(self, v: i16) -> Result<Self::Ok, Self::Error> {
+ ValueSerializer::new().serialize_i16(v)
+ }
+
+ fn serialize_i32(self, v: i32) -> Result<Self::Ok, Self::Error> {
+ ValueSerializer::new().serialize_i32(v)
+ }
+
+ fn serialize_i64(self, v: i64) -> Result<Self::Ok, Self::Error> {
+ ValueSerializer::new().serialize_i64(v)
+ }
+
+ fn serialize_u8(self, v: u8) -> Result<Self::Ok, Self::Error> {
+ ValueSerializer::new().serialize_u8(v)
+ }
+
+ fn serialize_u16(self, v: u16) -> Result<Self::Ok, Self::Error> {
+ ValueSerializer::new().serialize_u16(v)
+ }
+
+ fn serialize_u32(self, v: u32) -> Result<Self::Ok, Self::Error> {
+ ValueSerializer::new().serialize_u32(v)
+ }
+
+ fn serialize_u64(self, v: u64) -> Result<Self::Ok, Self::Error> {
+ ValueSerializer::new().serialize_u64(v)
+ }
+
+ fn serialize_f32(self, v: f32) -> Result<Self::Ok, Self::Error> {
+ ValueSerializer::new().serialize_f32(v)
+ }
+
+ fn serialize_f64(self, v: f64) -> Result<Self::Ok, Self::Error> {
+ ValueSerializer::new().serialize_f64(v)
+ }
+
+ fn serialize_char(self, v: char) -> Result<Self::Ok, Self::Error> {
+ ValueSerializer::new().serialize_char(v)
+ }
+
+ fn serialize_str(self, v: &str) -> Result<Self::Ok, Self::Error> {
+ ValueSerializer::new().serialize_str(v)
+ }
+
+ fn serialize_bytes(self, value: &[u8]) -> Result<Self::Ok, Self::Error> {
+ ValueSerializer::new().serialize_bytes(value)
+ }
+
+ fn serialize_none(self) -> Result<Self::Ok, Self::Error> {
+ self.is_none = true;
+ Err(Error::UnsupportedNone)
+ }
+
+ fn serialize_some<T: ?Sized>(self, value: &T) -> Result<Self::Ok, Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ ValueSerializer::new().serialize_some(value)
+ }
+
+ fn serialize_unit(self) -> Result<Self::Ok, Self::Error> {
+ ValueSerializer::new().serialize_unit()
+ }
+
+ fn serialize_unit_struct(self, name: &'static str) -> Result<Self::Ok, Self::Error> {
+ ValueSerializer::new().serialize_unit_struct(name)
+ }
+
+ fn serialize_unit_variant(
+ self,
+ name: &'static str,
+ variant_index: u32,
+ variant: &'static str,
+ ) -> Result<Self::Ok, Self::Error> {
+ ValueSerializer::new().serialize_unit_variant(name, variant_index, variant)
+ }
+
+ fn serialize_newtype_struct<T: ?Sized>(
+ self,
+ name: &'static str,
+ value: &T,
+ ) -> Result<Self::Ok, Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ ValueSerializer::new().serialize_newtype_struct(name, value)
+ }
+
+ fn serialize_newtype_variant<T: ?Sized>(
+ self,
+ name: &'static str,
+ variant_index: u32,
+ variant: &'static str,
+ value: &T,
+ ) -> Result<Self::Ok, Self::Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ ValueSerializer::new().serialize_newtype_variant(name, variant_index, variant, value)
+ }
+
+ fn serialize_seq(self, len: Option<usize>) -> Result<Self::SerializeSeq, Self::Error> {
+ ValueSerializer::new().serialize_seq(len)
+ }
+
+ fn serialize_tuple(self, len: usize) -> Result<Self::SerializeTuple, Self::Error> {
+ ValueSerializer::new().serialize_tuple(len)
+ }
+
+ fn serialize_tuple_struct(
+ self,
+ name: &'static str,
+ len: usize,
+ ) -> Result<Self::SerializeTupleStruct, Self::Error> {
+ ValueSerializer::new().serialize_tuple_struct(name, len)
+ }
+
+ fn serialize_tuple_variant(
+ self,
+ name: &'static str,
+ variant_index: u32,
+ variant: &'static str,
+ len: usize,
+ ) -> Result<Self::SerializeTupleVariant, Self::Error> {
+ ValueSerializer::new().serialize_tuple_variant(name, variant_index, variant, len)
+ }
+
+ fn serialize_map(self, len: Option<usize>) -> Result<Self::SerializeMap, Self::Error> {
+ ValueSerializer::new().serialize_map(len)
+ }
+
+ fn serialize_struct(
+ self,
+ name: &'static str,
+ len: usize,
+ ) -> Result<Self::SerializeStruct, Self::Error> {
+ ValueSerializer::new().serialize_struct(name, len)
+ }
+
+ fn serialize_struct_variant(
+ self,
+ name: &'static str,
+ variant_index: u32,
+ variant: &'static str,
+ len: usize,
+ ) -> Result<Self::SerializeStructVariant, Self::Error> {
+ ValueSerializer::new().serialize_struct_variant(name, variant_index, variant, len)
+ }
+}
+
+pub type SerializeTupleVariant = SerializeVariant<SerializeValueArray>;
+pub type SerializeStructVariant = SerializeVariant<SerializeMap>;
+
+pub struct SerializeVariant<T> {
+ variant: &'static str,
+ inner: T,
+}
+
+impl SerializeVariant<SerializeValueArray> {
+ pub(crate) fn tuple(variant: &'static str, len: usize) -> Self {
+ Self {
+ variant,
+ inner: SerializeValueArray::with_capacity(len),
+ }
+ }
+}
+
+impl SerializeVariant<SerializeMap> {
+ pub(crate) fn struct_(variant: &'static str, len: usize) -> Self {
+ Self {
+ variant,
+ inner: SerializeMap::table_with_capacity(len),
+ }
+ }
+}
+
+impl serde::ser::SerializeTupleVariant for SerializeVariant<SerializeValueArray> {
+ type Ok = crate::Value;
+ type Error = Error;
+
+ fn serialize_field<T: ?Sized>(&mut self, value: &T) -> Result<(), Error>
+ where
+ T: serde::ser::Serialize,
+ {
+ serde::ser::SerializeSeq::serialize_element(&mut self.inner, value)
+ }
+
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ let inner = serde::ser::SerializeSeq::end(self.inner)?;
+ let mut items = crate::table::KeyValuePairs::new();
+ let kv = crate::table::TableKeyValue::new(
+ crate::Key::new(self.variant),
+ crate::Item::Value(inner),
+ );
+ items.insert(crate::InternalString::from(self.variant), kv);
+ Ok(crate::Value::InlineTable(crate::InlineTable::with_pairs(
+ items,
+ )))
+ }
+}
+
+impl serde::ser::SerializeStructVariant for SerializeVariant<SerializeMap> {
+ type Ok = crate::Value;
+ type Error = Error;
+
+ #[inline]
+ fn serialize_field<T>(&mut self, key: &'static str, value: &T) -> Result<(), Self::Error>
+ where
+ T: serde::ser::Serialize + ?Sized,
+ {
+ serde::ser::SerializeStruct::serialize_field(&mut self.inner, key, value)
+ }
+
+ #[inline]
+ fn end(self) -> Result<Self::Ok, Self::Error> {
+ let inner = serde::ser::SerializeStruct::end(self.inner)?;
+ let mut items = crate::table::KeyValuePairs::new();
+ let kv = crate::table::TableKeyValue::new(
+ crate::Key::new(self.variant),
+ crate::Item::Value(inner),
+ );
+ items.insert(crate::InternalString::from(self.variant), kv);
+ Ok(crate::Value::InlineTable(crate::InlineTable::with_pairs(
+ items,
+ )))
+ }
+}
diff --git a/vendor/toml_edit/src/ser/mod.rs b/vendor/toml_edit/src/ser/mod.rs
index 2c310206b..7f9993027 100644
--- a/vendor/toml_edit/src/ser/mod.rs
+++ b/vendor/toml_edit/src/ser/mod.rs
@@ -24,7 +24,7 @@ pub enum Error {
OutOfRange(Option<&'static str>),
/// `None` could not be serialized to TOML
UnsupportedNone,
- /// Key was not convertable to `String` for serializing to TOML
+ /// Key was not convertible to `String` for serializing to TOML
KeyNotString,
/// A serialized date was invalid
DateInvalid,
diff --git a/vendor/toml_edit/src/ser/value.rs b/vendor/toml_edit/src/ser/value.rs
index d29390a4c..47a17a3b1 100644
--- a/vendor/toml_edit/src/ser/value.rs
+++ b/vendor/toml_edit/src/ser/value.rs
@@ -60,10 +60,10 @@ impl serde::ser::Serializer for ValueSerializer {
type SerializeSeq = super::SerializeValueArray;
type SerializeTuple = super::SerializeValueArray;
type SerializeTupleStruct = super::SerializeValueArray;
- type SerializeTupleVariant = super::SerializeValueArray;
+ type SerializeTupleVariant = super::SerializeTupleVariant;
type SerializeMap = super::SerializeMap;
type SerializeStruct = super::SerializeMap;
- type SerializeStructVariant = serde::ser::Impossible<Self::Ok, Self::Error>;
+ type SerializeStructVariant = super::SerializeStructVariant;
fn serialize_bool(self, v: bool) -> Result<Self::Ok, Self::Error> {
Ok(v.into())
@@ -108,7 +108,17 @@ impl serde::ser::Serializer for ValueSerializer {
self.serialize_f64(v as f64)
}
- fn serialize_f64(self, v: f64) -> Result<Self::Ok, Self::Error> {
+ fn serialize_f64(self, mut v: f64) -> Result<Self::Ok, Self::Error> {
+ // Discard sign of NaN when serialized using Serde.
+ //
+ // In all likelihood the sign of NaNs is not meaningful in the user's
+ // program. Ending up with `-nan` in the TOML document would usually be
+ // surprising and undesirable, when the sign of the NaN was not
+ // intentionally controlled by the caller, or may even be
+ // nondeterministic if it comes from arithmetic operations or a cast.
+ if v.is_nan() {
+ v = v.copysign(1.0);
+ }
Ok(v.into())
}
@@ -205,10 +215,10 @@ impl serde::ser::Serializer for ValueSerializer {
self,
_name: &'static str,
_variant_index: u32,
- _variant: &'static str,
+ variant: &'static str,
len: usize,
) -> Result<Self::SerializeTupleVariant, Self::Error> {
- self.serialize_seq(Some(len))
+ Ok(super::SerializeTupleVariant::tuple(variant, len))
}
fn serialize_map(self, len: Option<usize>) -> Result<Self::SerializeMap, Self::Error> {
@@ -233,11 +243,11 @@ impl serde::ser::Serializer for ValueSerializer {
fn serialize_struct_variant(
self,
- name: &'static str,
+ _name: &'static str,
_variant_index: u32,
- _variant: &'static str,
- _len: usize,
+ variant: &'static str,
+ len: usize,
) -> Result<Self::SerializeStructVariant, Self::Error> {
- Err(Error::UnsupportedType(Some(name)))
+ Ok(super::SerializeStructVariant::struct_(variant, len))
}
}
diff --git a/vendor/toml_edit/src/table.rs b/vendor/toml_edit/src/table.rs
index 45d6d61b6..893028903 100644
--- a/vendor/toml_edit/src/table.rs
+++ b/vendor/toml_edit/src/table.rs
@@ -70,10 +70,10 @@ impl Table {
values
}
- fn append_values<'s, 'c>(
+ fn append_values<'s>(
&'s self,
parent: &[&'s Key],
- values: &'c mut Vec<(Vec<&'s Key>, &'s Value)>,
+ values: &mut Vec<(Vec<&'s Key>, &'s Value)>,
) {
for value in self.items.values() {
let mut path = parent.to_vec();
@@ -474,7 +474,7 @@ fn decorate_table(table: &mut Table) {
for (key_decor, value) in table
.items
.iter_mut()
- .filter(|&(_, ref kv)| kv.value.is_value())
+ .filter(|(_, kv)| kv.value.is_value())
.map(|(_, kv)| (&mut kv.key.decor, kv.value.as_value_mut().unwrap()))
{
key_decor.clear();
diff --git a/vendor/toml_edit/src/value.rs b/vendor/toml_edit/src/value.rs
index f10da9a4c..62eb30c7a 100644
--- a/vendor/toml_edit/src/value.rs
+++ b/vendor/toml_edit/src/value.rs
@@ -284,6 +284,7 @@ impl From<i64> for Value {
impl From<f64> for Value {
fn from(f: f64) -> Self {
+ // Preserve sign of NaN. It may get written to TOML as `-nan`.
Value::Float(Formatted::new(f))
}
}
diff --git a/vendor/toml_edit/tests/decoder_compliance.rs b/vendor/toml_edit/tests/decoder_compliance.rs
index 0f0b35015..37a9335e0 100644
--- a/vendor/toml_edit/tests/decoder_compliance.rs
+++ b/vendor/toml_edit/tests/decoder_compliance.rs
@@ -3,15 +3,7 @@ mod decoder;
fn main() {
let decoder = decoder::Decoder;
let mut harness = toml_test_harness::DecoderHarness::new(decoder);
- harness
- .ignore([
- "valid/spec/float-0.toml", // Test issue; `Decoder` turns `6.626e-34` into `0.0`
- // Unreleased
- "valid/string/escape-esc.toml",
- "valid/string/hex-escape.toml",
- "valid/datetime/no-seconds.toml",
- "valid/inline-table/newline.toml",
- ])
- .unwrap();
+ harness.version("1.0.0");
+ harness.ignore([]).unwrap();
harness.test();
}
diff --git a/vendor/toml_edit/tests/encoder_compliance.rs b/vendor/toml_edit/tests/encoder_compliance.rs
index ad65d75ce..355c54087 100644
--- a/vendor/toml_edit/tests/encoder_compliance.rs
+++ b/vendor/toml_edit/tests/encoder_compliance.rs
@@ -5,10 +5,6 @@ fn main() {
let encoder = encoder::Encoder;
let decoder = decoder::Decoder;
let mut harness = toml_test_harness::EncoderHarness::new(encoder, decoder);
- harness
- .ignore([
- "valid/spec/float-0.toml", // Test issue; `Decoder` turns `6.626e-34` into `0.0`
- ])
- .unwrap();
+ harness.version("1.0.0");
harness.test();
}
diff --git a/vendor/toml_edit/tests/fixtures/invalid/array/array.stderr b/vendor/toml_edit/tests/fixtures/invalid/array/array.stderr
new file mode 100644
index 000000000..6cb810d24
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/array/array.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 21
+ |
+1 | double-comma-1 = [1,,2]
+ | ^
+invalid array
+expected `]`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/array/double-comma-1.stderr b/vendor/toml_edit/tests/fixtures/invalid/array/double-comma-1.stderr
index 543e1b680..6cb810d24 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/array/double-comma-1.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/array/double-comma-1.stderr
@@ -1,6 +1,6 @@
-TOML parse error at line 1, column 12
+TOML parse error at line 1, column 21
|
-1 | array = [1,,2]
- | ^
+1 | double-comma-1 = [1,,2]
+ | ^
invalid array
expected `]`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/array/double-comma-2.stderr b/vendor/toml_edit/tests/fixtures/invalid/array/double-comma-2.stderr
index 694d7ec40..60ab5b56b 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/array/double-comma-2.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/array/double-comma-2.stderr
@@ -1,6 +1,6 @@
-TOML parse error at line 1, column 14
+TOML parse error at line 1, column 23
|
-1 | array = [1,2,,]
- | ^
+1 | double-comma-2 = [1,2,,]
+ | ^
invalid array
expected `]`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/array/extend-defined-aot.stderr b/vendor/toml_edit/tests/fixtures/invalid/array/extend-defined-aot.stderr
new file mode 100644
index 000000000..970e0ece7
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/array/extend-defined-aot.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 3, column 1
+ |
+3 | arr.val1=1
+ | ^
+duplicate key `val1`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/array/missing-separator-1.stderr b/vendor/toml_edit/tests/fixtures/invalid/array/missing-separator-1.stderr
new file mode 100644
index 000000000..1202bb185
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/array/missing-separator-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 14
+ |
+1 | arrr = [true false]
+ | ^
+invalid array
+expected `]`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/array/missing-separator-2.stderr b/vendor/toml_edit/tests/fixtures/invalid/array/missing-separator-2.stderr
new file mode 100644
index 000000000..8e21f51fe
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/array/missing-separator-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 13
+ |
+1 | wrong = [ 1 2 3 ]
+ | ^
+invalid array
+expected `]`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/array/no-close-1.stderr b/vendor/toml_edit/tests/fixtures/invalid/array/no-close-1.stderr
new file mode 100644
index 000000000..6f0a3e8d8
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/array/no-close-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 24
+ |
+1 | no-close-1 = [ 1, 2, 3
+ | ^
+invalid array
+expected `]`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/array/no-close-2.stderr b/vendor/toml_edit/tests/fixtures/invalid/array/no-close-2.stderr
index 81ae5a968..96c4d648c 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/array/no-close-2.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/array/no-close-2.stderr
@@ -1,6 +1,6 @@
-TOML parse error at line 1, column 11
+TOML parse error at line 1, column 18
|
-1 | x = [42 #
- | ^
+1 | no-close-2 = [1,
+ | ^
invalid array
expected `]`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/array/no-close-3.stderr b/vendor/toml_edit/tests/fixtures/invalid/array/no-close-3.stderr
new file mode 100644
index 000000000..b84e3b9b9
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/array/no-close-3.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 21
+ |
+1 | no-close-3 = [42 #]
+ | ^
+invalid array
+expected `]`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/array/no-close-4.stderr b/vendor/toml_edit/tests/fixtures/invalid/array/no-close-4.stderr
new file mode 100644
index 000000000..ecf422409
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/array/no-close-4.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 25
+ |
+1 | no-close-4 = [{ key = 42
+ | ^
+invalid inline table
+expected `}`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/array/no-close-5.stderr b/vendor/toml_edit/tests/fixtures/invalid/array/no-close-5.stderr
new file mode 100644
index 000000000..c5e9674c0
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/array/no-close-5.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 27
+ |
+1 | no-close-5 = [{ key = 42}
+ | ^
+invalid array
+expected `]`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/array/no-close-6.stderr b/vendor/toml_edit/tests/fixtures/invalid/array/no-close-6.stderr
new file mode 100644
index 000000000..2512a4353
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/array/no-close-6.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 26
+ |
+1 | no-close-6 = [{ key = 42 #}]
+ | ^
+invalid inline table
+expected `}`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/array/no-close-7.stderr b/vendor/toml_edit/tests/fixtures/invalid/array/no-close-7.stderr
new file mode 100644
index 000000000..a49e9881d
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/array/no-close-7.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 30
+ |
+1 | no-close-7 = [{ key = 42} #]
+ | ^
+invalid array
+expected `]`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/array/no-close-8.stderr b/vendor/toml_edit/tests/fixtures/invalid/array/no-close-8.stderr
new file mode 100644
index 000000000..0e25a0bd4
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/array/no-close-8.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 16
+ |
+1 | no-close-8 = [
+ | ^
+invalid array
+expected `]`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/array/no-close-table-1.stderr b/vendor/toml_edit/tests/fixtures/invalid/array/no-close-table-1.stderr
new file mode 100644
index 000000000..b4c3c32d4
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/array/no-close-table-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 16
+ |
+1 | x = [{ key = 42
+ | ^
+invalid inline table
+expected `}`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/array/no-comma-1.stderr b/vendor/toml_edit/tests/fixtures/invalid/array/no-comma-1.stderr
new file mode 100644
index 000000000..e50fb69db
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/array/no-comma-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 20
+ |
+1 | no-comma-1 = [true false]
+ | ^
+invalid array
+expected `]`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/array/no-comma-2.stderr b/vendor/toml_edit/tests/fixtures/invalid/array/no-comma-2.stderr
new file mode 100644
index 000000000..b34d709c7
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/array/no-comma-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 18
+ |
+1 | no-comma-2 = [ 1 2 3 ]
+ | ^
+invalid array
+expected `]`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/array/no-comma-3.stderr b/vendor/toml_edit/tests/fixtures/invalid/array/no-comma-3.stderr
new file mode 100644
index 000000000..c7cbec4ea
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/array/no-comma-3.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 22
+ |
+1 | no-comma-3 = [ 1 #,]
+ | ^
+invalid array
+expected `]`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/array/only-comma-1.stderr b/vendor/toml_edit/tests/fixtures/invalid/array/only-comma-1.stderr
new file mode 100644
index 000000000..3616ca9f9
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/array/only-comma-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 17
+ |
+1 | only-comma-1 = [,]
+ | ^
+invalid array
+expected `]`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/array/only-comma-2.stderr b/vendor/toml_edit/tests/fixtures/invalid/array/only-comma-2.stderr
new file mode 100644
index 000000000..8284be5d5
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/array/only-comma-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 17
+ |
+1 | only-comma-2 = [,,]
+ | ^
+invalid array
+expected `]`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/bool/almost-false-with-extra.stderr b/vendor/toml_edit/tests/fixtures/invalid/bool/almost-false-with-extra.stderr
index cd6c1cd5f..151708414 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/bool/almost-false-with-extra.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/bool/almost-false-with-extra.stderr
@@ -1,6 +1,6 @@
-TOML parse error at line 1, column 5
+TOML parse error at line 1, column 27
|
-1 | a = falsify
- | ^
+1 | almost-false-with-extra = falsify
+ | ^
invalid string
expected `"`, `'`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/bool/almost-false.stderr b/vendor/toml_edit/tests/fixtures/invalid/bool/almost-false.stderr
index 550020b92..ba22196c1 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/bool/almost-false.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/bool/almost-false.stderr
@@ -1,6 +1,6 @@
-TOML parse error at line 1, column 5
+TOML parse error at line 1, column 27
|
-1 | a = fals
- | ^
+1 | almost-false = fals
+ | ^
invalid string
expected `"`, `'`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/bool/almost-true-with-extra.stderr b/vendor/toml_edit/tests/fixtures/invalid/bool/almost-true-with-extra.stderr
index c75c553ee..23e230e05 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/bool/almost-true-with-extra.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/bool/almost-true-with-extra.stderr
@@ -1,6 +1,6 @@
-TOML parse error at line 1, column 5
+TOML parse error at line 1, column 27
|
-1 | a = truthy
- | ^
+1 | almost-true-with-extra = truthy
+ | ^
invalid string
expected `"`, `'`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/bool/almost-true.stderr b/vendor/toml_edit/tests/fixtures/invalid/bool/almost-true.stderr
index 0c97e0076..21bdf37d4 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/bool/almost-true.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/bool/almost-true.stderr
@@ -1,6 +1,6 @@
-TOML parse error at line 1, column 5
+TOML parse error at line 1, column 27
|
-1 | a = tru
- | ^
+1 | almost-true = tru
+ | ^
invalid string
expected `"`, `'`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/bool/bool.stderr b/vendor/toml_edit/tests/fixtures/invalid/bool/bool.stderr
new file mode 100644
index 000000000..151708414
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/bool/bool.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 27
+ |
+1 | almost-false-with-extra = falsify
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/bool/capitalized-false.stderr b/vendor/toml_edit/tests/fixtures/invalid/bool/capitalized-false.stderr
new file mode 100644
index 000000000..fd318cad5
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/bool/capitalized-false.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 28
+ |
+1 | capitalized-false = False
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/bool/capitalized-true.stderr b/vendor/toml_edit/tests/fixtures/invalid/bool/capitalized-true.stderr
new file mode 100644
index 000000000..cb32d8eb9
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/bool/capitalized-true.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 28
+ |
+1 | capitalized-true = True
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/bool/just-f.stderr b/vendor/toml_edit/tests/fixtures/invalid/bool/just-f.stderr
index ed2b9f0e7..cc4fb783d 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/bool/just-f.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/bool/just-f.stderr
@@ -1,6 +1,6 @@
-TOML parse error at line 1, column 5
+TOML parse error at line 1, column 27
|
-1 | a = f
- | ^
+1 | just-f = f
+ | ^
invalid string
expected `"`, `'`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/bool/just-t.stderr b/vendor/toml_edit/tests/fixtures/invalid/bool/just-t.stderr
index 2c8b6a5bd..f2d889b1e 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/bool/just-t.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/bool/just-t.stderr
@@ -1,6 +1,6 @@
-TOML parse error at line 1, column 5
+TOML parse error at line 1, column 27
|
-1 | a = t
- | ^
+1 | just-t = t
+ | ^
invalid string
expected `"`, `'`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/bool/mixed-case-false.stderr b/vendor/toml_edit/tests/fixtures/invalid/bool/mixed-case-false.stderr
new file mode 100644
index 000000000..d96dc609f
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/bool/mixed-case-false.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 27
+ |
+1 | mixed-case-false = falsE
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/bool/mixed-case-true.stderr b/vendor/toml_edit/tests/fixtures/invalid/bool/mixed-case-true.stderr
new file mode 100644
index 000000000..e7f8289b5
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/bool/mixed-case-true.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 27
+ |
+1 | mixed-case-true = trUe
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/bool/mixed-case.stderr b/vendor/toml_edit/tests/fixtures/invalid/bool/mixed-case.stderr
index b7c6192dd..994020ef9 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/bool/mixed-case.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/bool/mixed-case.stderr
@@ -1,6 +1,6 @@
-TOML parse error at line 1, column 9
+TOML parse error at line 1, column 27
|
-1 | valid = False
- | ^
+1 | mixed-case = valid = False
+ | ^
invalid string
expected `"`, `'`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/bool/starting-same-false.stderr b/vendor/toml_edit/tests/fixtures/invalid/bool/starting-same-false.stderr
index b3320892c..1cc00d59b 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/bool/starting-same-false.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/bool/starting-same-false.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 1, column 10
+TOML parse error at line 1, column 32
|
-1 | a = falsey
- | ^
+1 | starting-same-false = falsey
+ | ^
expected newline, `#`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/bool/starting-same-true.stderr b/vendor/toml_edit/tests/fixtures/invalid/bool/starting-same-true.stderr
index 6053103c9..a7cc00b73 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/bool/starting-same-true.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/bool/starting-same-true.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 1, column 9
+TOML parse error at line 1, column 31
|
-1 | a = truer
- | ^
+1 | starting-same-true = truer
+ | ^
expected newline, `#`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/bool/wrong-case-false.stderr b/vendor/toml_edit/tests/fixtures/invalid/bool/wrong-case-false.stderr
index f67444c40..fd15caaca 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/bool/wrong-case-false.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/bool/wrong-case-false.stderr
@@ -1,6 +1,6 @@
-TOML parse error at line 1, column 5
+TOML parse error at line 1, column 27
|
-1 | b = FALSE
- | ^
+1 | wrong-case-false = FALSE
+ | ^
invalid string
expected `"`, `'`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/bool/wrong-case-true.stderr b/vendor/toml_edit/tests/fixtures/invalid/bool/wrong-case-true.stderr
index 82bb6194f..bc60a4cce 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/bool/wrong-case-true.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/bool/wrong-case-true.stderr
@@ -1,6 +1,6 @@
-TOML parse error at line 1, column 5
+TOML parse error at line 1, column 27
|
-1 | a = TRUE
- | ^
+1 | wrong-case-true = TRUE
+ | ^
invalid string
expected `"`, `'`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/bare-formfeed.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/bare-formfeed.stderr
index 313274a3e..449ec8786 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/control/bare-formfeed.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/bare-formfeed.stderr
@@ -1,6 +1,6 @@
-TOML parse error at line 1, column 17
+TOML parse error at line 1, column 21
|
-1 | bare-formfeed =
- | ^
+1 | bare-formfeed =
+ | ^
invalid string
expected `"`, `'`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/bare-null.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/bare-null.stderr
index cd5e936ac..9c8231db0 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/control/bare-null.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/bare-null.stderr
Binary files differ
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/comment-cr.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/comment-cr.stderr
index fb262e547..54e42df86 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/control/comment-cr.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/comment-cr.stderr
@@ -1,6 +1,6 @@
-TOML parse error at line 1, column 45
+TOML parse error at line 1, column 47
|
-1 | comment-cr = "Carriage return in comment" #
+1 | comment-cr = "Carriage return in comment" #
a=1
- | ^
+ | ^
expected newline, `#`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/comment-del.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/comment-del.stderr
index 3d25d68dc..5eae7a472 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/control/comment-del.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/comment-del.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 1, column 24
+TOML parse error at line 1, column 27
|
-1 | comment-del = "0x7f" # 
- | ^
+1 | comment-del = "0x7f" # 
+ | ^
expected newline, `#`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/comment-ff.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/comment-ff.stderr
new file mode 100644
index 000000000..6f54974d3
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/comment-ff.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 27
+ |
+1 | comment-ff = "0x7f" #
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/comment-lf.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/comment-lf.stderr
index 1613710ed..3eacd622f 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/control/comment-lf.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/comment-lf.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 1, column 25
+TOML parse error at line 1, column 27
|
-1 | comment-lf = "ctrl-P" # 
- | ^
+1 | comment-lf = "ctrl-P" # 
+ | ^
expected newline, `#`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/comment-null.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/comment-null.stderr
index 4955b9deb..ba5bc8004 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/control/comment-null.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/comment-null.stderr
Binary files differ
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/comment-us.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/comment-us.stderr
index b48d4f33c..f34076e62 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/control/comment-us.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/comment-us.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 1, column 25
+TOML parse error at line 1, column 27
|
-1 | comment-us = "ctrl-_" # 
- | ^
+1 | comment-us = "ctrl-_" # 
+ | ^
expected newline, `#`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/control.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/control.stderr
index 486aacf1b..f214b54f4 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/control/control.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/control.stderr
@@ -1,6 +1,5 @@
-TOML parse error at line 9, column 22
+TOML parse error at line 9, column 1
|
-9 | string-null = "null\x00"
- | ^
-invalid escape sequence
-expected `b`, `f`, `n`, `r`, `t`, `u`, `U`, `\`, `"`
+9 | comment-cr = "Carriage return in comment" # \x0da=1
+ | ^
+duplicate key `comment-cr` in document root
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/multi-cr.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/multi-cr.stderr
new file mode 100644
index 000000000..d5c749c1b
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/multi-cr.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 21
+ |
+1 | multi-cr = """null
+"""
+ | ^
+invalid multiline basic string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/multi-del.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/multi-del.stderr
index 62702da7b..a1b54b71f 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/control/multi-del.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/multi-del.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 1, column 20
+TOML parse error at line 1, column 21
|
-1 | multi-del = """null"""
- | ^
+1 | multi-del = """null"""
+ | ^
invalid multiline basic string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/multi-lf.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/multi-lf.stderr
index 7b7a13889..a0a8f7b86 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/control/multi-lf.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/multi-lf.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 1, column 19
+TOML parse error at line 1, column 21
|
-1 | multi-lf = """null"""
- | ^
+1 | multi-lf = """null"""
+ | ^
invalid multiline basic string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/multi-us.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/multi-us.stderr
index cf8e73286..ac556b290 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/control/multi-us.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/multi-us.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 1, column 19
+TOML parse error at line 1, column 21
|
-1 | multi-us = """null"""
- | ^
+1 | multi-us = """null"""
+ | ^
invalid multiline basic string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/rawmulti-cd.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/rawmulti-cd.stderr
new file mode 100644
index 000000000..1027009da
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/rawmulti-cd.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 24
+ |
+1 | rawmulti-cd = '''null
+'''
+ | ^
+invalid multiline literal string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/rawmulti-del.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/rawmulti-del.stderr
index 3beeae099..7972a2bd9 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/control/rawmulti-del.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/rawmulti-del.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 1, column 23
+TOML parse error at line 1, column 24
|
-1 | rawmulti-del = '''null'''
- | ^
+1 | rawmulti-del = '''null'''
+ | ^
invalid multiline literal string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/rawmulti-lf.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/rawmulti-lf.stderr
index 40782a261..1898ec852 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/control/rawmulti-lf.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/rawmulti-lf.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 1, column 22
+TOML parse error at line 1, column 24
|
-1 | rawmulti-lf = '''null'''
- | ^
+1 | rawmulti-lf = '''null'''
+ | ^
invalid multiline literal string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/rawmulti-us.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/rawmulti-us.stderr
index d413d54f1..4c412f78f 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/control/rawmulti-us.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/rawmulti-us.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 1, column 22
+TOML parse error at line 1, column 24
|
-1 | rawmulti-us = '''null'''
- | ^
+1 | rawmulti-us = '''null'''
+ | ^
invalid multiline literal string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/rawstring-cr.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/rawstring-cr.stderr
new file mode 100644
index 000000000..bc8a1a2cb
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/rawstring-cr.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 23
+ |
+1 | rawstring-cr = 'null
+'
+ | ^
+invalid literal string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/rawstring-del.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/rawstring-del.stderr
index 640ba463b..e80e322a3 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/control/rawstring-del.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/rawstring-del.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 1, column 22
+TOML parse error at line 1, column 23
|
-1 | rawstring-del = 'null'
- | ^
+1 | rawstring-del = 'null'
+ | ^
invalid literal string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/rawstring-lf.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/rawstring-lf.stderr
index e6499b6b9..b8874c639 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/control/rawstring-lf.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/rawstring-lf.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 1, column 21
+TOML parse error at line 1, column 23
|
-1 | rawstring-lf = 'null'
- | ^
+1 | rawstring-lf = 'null'
+ | ^
invalid literal string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/rawstring-us.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/rawstring-us.stderr
index 492cdf743..9cf3fae52 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/control/rawstring-us.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/rawstring-us.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 1, column 21
+TOML parse error at line 1, column 23
|
-1 | rawstring-us = 'null'
- | ^
+1 | rawstring-us = 'null'
+ | ^
invalid literal string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/string-bs.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/string-bs.stderr
index 556ba1d7b..3f7b5ee25 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/control/string-bs.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/string-bs.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 1, column 23
+TOML parse error at line 1, column 25
|
-1 | string-bs = "backspace"
- | ^
+1 | string-bs = "backspace"
+ | ^
invalid basic string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/string-cr.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/string-cr.stderr
new file mode 100644
index 000000000..0eff4c261
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/string-cr.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 20
+ |
+1 | string-cr = "null
+"
+ | ^
+invalid basic string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/string-del.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/string-del.stderr
index 85d7af397..b6ace6b19 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/control/string-del.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/string-del.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 1, column 19
+TOML parse error at line 1, column 20
|
-1 | string-del = "null"
- | ^
+1 | string-del = "null"
+ | ^
invalid basic string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/string-lf.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/string-lf.stderr
index fbf0d1a3f..c3b141e81 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/control/string-lf.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/string-lf.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 1, column 18
+TOML parse error at line 1, column 20
|
-1 | string-lf = "null"
- | ^
+1 | string-lf = "null"
+ | ^
invalid basic string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/control/string-us.stderr b/vendor/toml_edit/tests/fixtures/invalid/control/string-us.stderr
index 8278e570a..26f2f6a0f 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/control/string-us.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/control/string-us.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 1, column 18
+TOML parse error at line 1, column 20
|
-1 | string-us = "null"
- | ^
+1 | string-us = "null"
+ | ^
invalid basic string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/datetime/feb-29.stderr b/vendor/toml_edit/tests/fixtures/invalid/datetime/feb-29.stderr
new file mode 100644
index 000000000..63fac67c6
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/datetime/feb-29.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 29
+ |
+1 | "not a leap year" = 2100-02-29T15:15:15Z
+ | ^
+invalid date-time
+value is out of range
diff --git a/vendor/toml_edit/tests/fixtures/invalid/datetime/feb-30.stderr b/vendor/toml_edit/tests/fixtures/invalid/datetime/feb-30.stderr
new file mode 100644
index 000000000..2b5212af0
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/datetime/feb-30.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 44
+ |
+1 | "only 28 or 29 days in february" = 1988-02-30T15:15:15Z
+ | ^
+invalid date-time
+value is out of range
diff --git a/vendor/toml_edit/tests/fixtures/invalid/datetime/no-leads-month.stderr b/vendor/toml_edit/tests/fixtures/invalid/datetime/no-leads-month.stderr
new file mode 100644
index 000000000..3e0ccf722
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/datetime/no-leads-month.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 17
+ |
+2 | no-leads = 1987-7-05T17:45:00Z
+ | ^
+invalid date-time
diff --git a/vendor/toml_edit/tests/fixtures/invalid/datetime/time-no-leads.stderr b/vendor/toml_edit/tests/fixtures/invalid/datetime/time-no-leads.stderr
index 7a9890229..012f62fd6 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/datetime/time-no-leads.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/datetime/time-no-leads.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 2, column 6
+TOML parse error at line 2, column 15
|
-2 | d = 1:32:00
- | ^
+2 | d = 2023-10-01T1:32:00Z
+ | ^
expected newline, `#`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/encoding/bad-codepoint.stderr b/vendor/toml_edit/tests/fixtures/invalid/encoding/bad-codepoint.stderr
new file mode 100644
index 000000000..89ef2c79f
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/encoding/bad-codepoint.stderr
@@ -0,0 +1 @@
+invalid utf-8 sequence of 1 bytes from index 29 \ No newline at end of file
diff --git a/vendor/toml_edit/tests/fixtures/invalid/float/exp-trailing-us.stderr b/vendor/toml_edit/tests/fixtures/invalid/float/exp-trailing-us.stderr
index 9a2818493..b7e2ad9cf 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/float/exp-trailing-us.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/float/exp-trailing-us.stderr
@@ -1,5 +1,6 @@
-TOML parse error at line 1, column 21
+TOML parse error at line 1, column 24
|
-1 | exp-trailing-us = 1e_23_
- | ^
+1 | exp-trailing-us = 1e23_
+ | ^
invalid floating-point number
+expected digit
diff --git a/vendor/toml_edit/tests/fixtures/invalid/float/inf-capital.stderr b/vendor/toml_edit/tests/fixtures/invalid/float/inf-capital.stderr
new file mode 100644
index 000000000..ca7a1b1b9
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/float/inf-capital.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 5
+ |
+1 | v = Inf
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/float/nan-capital.stderr b/vendor/toml_edit/tests/fixtures/invalid/float/nan-capital.stderr
new file mode 100644
index 000000000..ae3b4d95f
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/float/nan-capital.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 5
+ |
+1 | v = NaN
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/float/trailing-us-exp-1.stderr b/vendor/toml_edit/tests/fixtures/invalid/float/trailing-us-exp-1.stderr
new file mode 100644
index 000000000..cf0fabc76
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/float/trailing-us-exp-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 23
+ |
+1 | trailing-us-exp-1 = 1_e2
+ | ^
+invalid integer
+expected digit
diff --git a/vendor/toml_edit/tests/fixtures/invalid/float/trailing-us-exp-2.stderr b/vendor/toml_edit/tests/fixtures/invalid/float/trailing-us-exp-2.stderr
new file mode 100644
index 000000000..83ff1208f
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/float/trailing-us-exp-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 25
+ |
+1 | trailing-us-exp-2 = 1.2_e2
+ | ^
+invalid floating-point number
+expected digit, digit
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/bad-key-syntax.stderr b/vendor/toml_edit/tests/fixtures/invalid/inline-table/bad-key-syntax.stderr
new file mode 100644
index 000000000..c8ce45a61
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/inline-table/bad-key-syntax.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 14
+ |
+1 | tbl = { a = 1, [b] }
+ | ^
+invalid inline table
+expected `}`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/duplicate-key-1.stderr b/vendor/toml_edit/tests/fixtures/invalid/inline-table/duplicate-key-1.stderr
new file mode 100644
index 000000000..acee967ac
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/inline-table/duplicate-key-1.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 4
+ |
+2 | a={b=1, b=2}
+ | ^
+duplicate key `b`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/duplicate-key-2.stderr b/vendor/toml_edit/tests/fixtures/invalid/inline-table/duplicate-key-2.stderr
new file mode 100644
index 000000000..91b41fd67
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/inline-table/duplicate-key-2.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 11
+ |
+1 | table1 = { table2.dupe = 1, table2.dupe = 2 }
+ | ^
+duplicate key `dupe`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/duplicate-key-3.stderr b/vendor/toml_edit/tests/fixtures/invalid/inline-table/duplicate-key-3.stderr
new file mode 100644
index 000000000..79a80410a
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/inline-table/duplicate-key-3.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 8
+ |
+1 | tbl = { fruit = { apple.color = "red" }, fruit.apple.texture = { smooth = true } }
+ | ^
+duplicate key `fruit`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/duplicate-key-4.stderr b/vendor/toml_edit/tests/fixtures/invalid/inline-table/duplicate-key-4.stderr
new file mode 100644
index 000000000..7b8604481
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/inline-table/duplicate-key-4.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 8
+ |
+1 | tbl = { a.b = "a_b", a.b.c = "a_b_c" }
+ | ^
+dotted key `a.b` attempted to extend non-table type (string)
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/empty-1.stderr b/vendor/toml_edit/tests/fixtures/invalid/inline-table/empty-1.stderr
new file mode 100644
index 000000000..0fcfd34f6
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/inline-table/empty-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 6
+ |
+1 | t = {,}
+ | ^
+invalid inline table
+expected `}`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/empty-2.stderr b/vendor/toml_edit/tests/fixtures/invalid/inline-table/empty-2.stderr
new file mode 100644
index 000000000..ea51c1826
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/inline-table/empty-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 6
+ |
+1 | t = {,
+ | ^
+invalid inline table
+expected `}`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/empty-3.stderr b/vendor/toml_edit/tests/fixtures/invalid/inline-table/empty-3.stderr
new file mode 100644
index 000000000..ca4a29ab8
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/inline-table/empty-3.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 6
+ |
+1 | t = {
+ | ^
+invalid inline table
+expected `}`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/no-close-1.stderr b/vendor/toml_edit/tests/fixtures/invalid/inline-table/no-close-1.stderr
new file mode 100644
index 000000000..d371b65a1
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/inline-table/no-close-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 4
+ |
+1 | a={
+ | ^
+invalid inline table
+expected `}`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/no-close-2.stderr b/vendor/toml_edit/tests/fixtures/invalid/inline-table/no-close-2.stderr
new file mode 100644
index 000000000..3b42d7883
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/inline-table/no-close-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 7
+ |
+1 | a={b=1
+ | ^
+invalid inline table
+expected `}`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/no-comma-1.stderr b/vendor/toml_edit/tests/fixtures/invalid/inline-table/no-comma-1.stderr
new file mode 100644
index 000000000..89552182f
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/inline-table/no-comma-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 12
+ |
+1 | t = {x = 3 y = 4}
+ | ^
+invalid inline table
+expected `}`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/no-comma-2.stderr b/vendor/toml_edit/tests/fixtures/invalid/inline-table/no-comma-2.stderr
new file mode 100644
index 000000000..128ac5395
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/inline-table/no-comma-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 31
+ |
+1 | arrr = { comma-missing = true valid-toml = false }
+ | ^
+invalid inline table
+expected `}`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-1.stderr b/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-1.stderr
new file mode 100644
index 000000000..5c48ee223
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-1.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 3, column 1
+ |
+3 | a={}
+ | ^
+duplicate key `a` in document root
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-2.stderr b/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-2.stderr
new file mode 100644
index 000000000..4108142dc
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 3, column 1
+ |
+3 | [a.b]
+ | ^
+invalid table header
+dotted key `a` attempted to extend non-table type (inline table)
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-3.stderr b/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-3.stderr
new file mode 100644
index 000000000..c1ab1d705
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-3.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 1
+ |
+2 | a.b = 2
+ | ^
+dotted key `a` attempted to extend non-table type (inline table)
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-4.stderr b/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-4.stderr
new file mode 100644
index 000000000..993e04e46
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-4.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 3, column 1
+ |
+3 | [[inline-t.nest]]
+ | ^
+invalid table header
+dotted key `inline-t` attempted to extend non-table type (inline table)
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-5.stderr b/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-5.stderr
new file mode 100644
index 000000000..bf1953da4
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-5.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 3, column 1
+ |
+3 | [inline-t.nest]
+ | ^
+invalid table header
+dotted key `inline-t` attempted to extend non-table type (inline table)
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-6.stderr b/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-6.stderr
new file mode 100644
index 000000000..1e5d4cd79
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-6.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 6
+ |
+1 | a = { b = 1, b.c = 2 }
+ | ^
+dotted key `b` attempted to extend non-table type (integer)
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-7.stderr b/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-7.stderr
new file mode 100644
index 000000000..9e5efba62
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-7.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 8
+ |
+1 | tab = { inner.table = [{}], inner.table.val = "bad" }
+ | ^
+dotted key `inner.table` attempted to extend non-table type (array)
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-8.stderr b/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-8.stderr
new file mode 100644
index 000000000..832233088
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-8.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 8
+ |
+1 | tab = { inner = { dog = "best" }, inner.cat = "worst" }
+ | ^
+duplicate key `inner`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-9.stderr b/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-9.stderr
new file mode 100644
index 000000000..9d68dbbb1
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/inline-table/overwrite-9.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 5, column 1
+ |
+5 | nested.inline-t.nest = 2
+ | ^
+duplicate key `nested`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/integer/invalid-hex-1.stderr b/vendor/toml_edit/tests/fixtures/invalid/integer/invalid-hex-1.stderr
new file mode 100644
index 000000000..b899e6aa0
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/integer/invalid-hex-1.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 22
+ |
+1 | invalid-hex-1 = 0xaafz
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/integer/invalid-hex-2.stderr b/vendor/toml_edit/tests/fixtures/invalid/integer/invalid-hex-2.stderr
new file mode 100644
index 000000000..4df3e2fb9
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/integer/invalid-hex-2.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 19
+ |
+1 | invalid-hex-2 = 0xgabba00f1
+ | ^
+invalid hexadecimal integer
diff --git a/vendor/toml_edit/tests/fixtures/invalid/integer/leading-us-bin.stderr b/vendor/toml_edit/tests/fixtures/invalid/integer/leading-us-bin.stderr
index c893e7547..c979c1922 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/integer/leading-us-bin.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/integer/leading-us-bin.stderr
@@ -1,6 +1,6 @@
TOML parse error at line 1, column 18
|
-1 | leading-us-bin = _0o1
+1 | leading-us-bin = _0b1
| ^
invalid integer
expected leading digit
diff --git a/vendor/toml_edit/tests/fixtures/invalid/integer/leading-us-hex.stderr b/vendor/toml_edit/tests/fixtures/invalid/integer/leading-us-hex.stderr
index 12eb8e6f5..1824a8b4a 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/integer/leading-us-hex.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/integer/leading-us-hex.stderr
@@ -1,6 +1,6 @@
TOML parse error at line 1, column 18
|
-1 | leading-us-hex = _0o1
+1 | leading-us-hex = _0x1
| ^
invalid integer
expected leading digit
diff --git a/vendor/toml_edit/tests/fixtures/invalid/integer/negative-oct.stderr b/vendor/toml_edit/tests/fixtures/invalid/integer/negative-oct.stderr
index fcf31407d..9e922c6e2 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/integer/negative-oct.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/integer/negative-oct.stderr
@@ -1,5 +1,5 @@
TOML parse error at line 1, column 18
|
-1 | negative-oct = -0o99
+1 | negative-oct = -0o755
| ^
expected newline, `#`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/integer/positive-oct.stderr b/vendor/toml_edit/tests/fixtures/invalid/integer/positive-oct.stderr
index cc0946689..30d2ab3b0 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/integer/positive-oct.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/integer/positive-oct.stderr
@@ -1,5 +1,5 @@
TOML parse error at line 1, column 18
|
-1 | positive-oct = +0o99
+1 | positive-oct = +0o755
| ^
expected newline, `#`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/key/dotted-redefine-table-1.stderr b/vendor/toml_edit/tests/fixtures/invalid/key/dotted-redefine-table-1.stderr
new file mode 100644
index 000000000..f51a10828
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/key/dotted-redefine-table-1.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 1
+ |
+2 | a.b = true
+ | ^
+dotted key `a` attempted to extend non-table type (boolean)
diff --git a/vendor/toml_edit/tests/fixtures/invalid/key/dotted-redefine-table-2.stderr b/vendor/toml_edit/tests/fixtures/invalid/key/dotted-redefine-table-2.stderr
new file mode 100644
index 000000000..3a2b8d5d9
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/key/dotted-redefine-table-2.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 4, column 1
+ |
+4 | a.b.c = 2
+ | ^
+dotted key `a.b` attempted to extend non-table type (integer)
diff --git a/vendor/toml_edit/tests/fixtures/invalid/key/end-in-escape.stderr b/vendor/toml_edit/tests/fixtures/invalid/key/end-in-escape.stderr
new file mode 100644
index 000000000..5916980cd
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/key/end-in-escape.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 30
+ |
+1 | "backslash is the last char\
+ | ^
+invalid escape sequence
+expected `b`, `f`, `n`, `r`, `t`, `u`, `U`, `\`, `"`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/key/without-value-5.stderr b/vendor/toml_edit/tests/fixtures/invalid/key/without-value-5.stderr
new file mode 100644
index 000000000..711eab123
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/key/without-value-5.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 6
+ |
+1 | fs.fw
+ | ^
+expected `.`, `=`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/key/without-value-6.stderr b/vendor/toml_edit/tests/fixtures/invalid/key/without-value-6.stderr
new file mode 100644
index 000000000..c380d700b
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/key/without-value-6.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 8
+ |
+1 | fs.fw =
+ | ^
+invalid string
+expected `"`, `'`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/key/without-value-7.stderr b/vendor/toml_edit/tests/fixtures/invalid/key/without-value-7.stderr
new file mode 100644
index 000000000..856583792
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/key/without-value-7.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 3
+ |
+1 | fs.
+ | ^
+expected `.`, `=`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-date/feb-29.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-date/feb-29.stderr
new file mode 100644
index 000000000..b0ae76dda
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-date/feb-29.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 29
+ |
+1 | "not a leap year" = 2100-02-29
+ | ^
+invalid date-time
+value is out of range
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-date/feb-30.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-date/feb-30.stderr
new file mode 100644
index 000000000..7f6434819
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-date/feb-30.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 44
+ |
+1 | "only 28 or 29 days in february" = 1988-02-30
+ | ^
+invalid date-time
+value is out of range
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-date/mday-over.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-date/mday-over.stderr
new file mode 100644
index 000000000..f2d1876f4
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-date/mday-over.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 3, column 13
+ |
+3 | d = 2006-01-32
+ | ^
+invalid date-time
+value is out of range
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-date/mday-under.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-date/mday-under.stderr
new file mode 100644
index 000000000..fab958d1c
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-date/mday-under.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 3, column 13
+ |
+3 | d = 2006-01-00
+ | ^
+invalid date-time
+value is out of range
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-date/month-over.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-date/month-over.stderr
new file mode 100644
index 000000000..ec6d09096
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-date/month-over.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 2, column 10
+ |
+2 | d = 2006-13-01
+ | ^
+invalid date-time
+value is out of range
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-date/month-under.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-date/month-under.stderr
new file mode 100644
index 000000000..3e8324a7c
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-date/month-under.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 2, column 10
+ |
+2 | d = 2007-00-01
+ | ^
+invalid date-time
+value is out of range
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-date/no-leads-with-milli.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-date/no-leads-with-milli.stderr
new file mode 100644
index 000000000..e0e3046ec
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-date/no-leads-with-milli.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 22
+ |
+2 | with-milli = 1987-07-5
+ | ^
+invalid date-time
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-date/no-leads.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-date/no-leads.stderr
new file mode 100644
index 000000000..e7b5d6962
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-date/no-leads.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 17
+ |
+2 | no-leads = 1987-7-05
+ | ^
+invalid date-time
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-date/trailing-t.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-date/trailing-t.stderr
new file mode 100644
index 000000000..061ec2682
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-date/trailing-t.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 15
+ |
+2 | d = 2006-01-30T
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-datetime/feb-29.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/feb-29.stderr
new file mode 100644
index 000000000..8aac71253
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/feb-29.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 29
+ |
+1 | "not a leap year" = 2100-02-29T15:15:15
+ | ^
+invalid date-time
+value is out of range
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-datetime/feb-30.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/feb-30.stderr
new file mode 100644
index 000000000..6175c5e89
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/feb-30.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 44
+ |
+1 | "only 28 or 29 days in february" = 1988-02-30T15:15:15
+ | ^
+invalid date-time
+value is out of range
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-datetime/hour-over.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/hour-over.stderr
new file mode 100644
index 000000000..bc255ed80
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/hour-over.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 15
+ |
+2 | d = 2006-01-01T24:00:00
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-datetime/mday-over.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/mday-over.stderr
new file mode 100644
index 000000000..0556e3ad0
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/mday-over.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 3, column 13
+ |
+3 | d = 2006-01-32T00:00:00
+ | ^
+invalid date-time
+value is out of range
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-datetime/mday-under.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/mday-under.stderr
new file mode 100644
index 000000000..036e96302
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/mday-under.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 3, column 13
+ |
+3 | d = 2006-01-00T00:00:00
+ | ^
+invalid date-time
+value is out of range
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-datetime/minute-over.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/minute-over.stderr
new file mode 100644
index 000000000..039fc6eb3
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/minute-over.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 2, column 19
+ |
+2 | d = 2006-01-01T00:60:00
+ | ^
+invalid date-time
+value is out of range
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-datetime/month-over.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/month-over.stderr
new file mode 100644
index 000000000..0d2dca24c
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/month-over.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 2, column 10
+ |
+2 | d = 2006-13-01T00:00:00
+ | ^
+invalid date-time
+value is out of range
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-datetime/month-under.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/month-under.stderr
new file mode 100644
index 000000000..6ce30cb7b
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/month-under.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 2, column 10
+ |
+2 | d = 2007-00-01T00:00:00
+ | ^
+invalid date-time
+value is out of range
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-datetime/no-leads-with-milli.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/no-leads-with-milli.stderr
new file mode 100644
index 000000000..5ec75e908
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/no-leads-with-milli.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 22
+ |
+2 | with-milli = 1987-07-5T17:45:00.12
+ | ^
+invalid date-time
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-datetime/no-leads.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/no-leads.stderr
new file mode 100644
index 000000000..7d2c8791f
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/no-leads.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 17
+ |
+2 | no-leads = 1987-7-05T17:45:00
+ | ^
+invalid date-time
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-datetime/no-secs.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/no-secs.stderr
new file mode 100644
index 000000000..7585e1bfb
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/no-secs.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 27
+ |
+2 | no-secs = 1987-07-05T17:45
+ | ^
+invalid date-time
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-datetime/no-t.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/no-t.stderr
new file mode 100644
index 000000000..0f520a2fe
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/no-t.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 18
+ |
+2 | no-t = 1987-07-0517:45:00
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-datetime/second-over.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/second-over.stderr
new file mode 100644
index 000000000..63d0007bb
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/second-over.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 3, column 22
+ |
+3 | d = 2006-01-01T00:00:61
+ | ^
+invalid date-time
+value is out of range
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-datetime/time-no-leads.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/time-no-leads.stderr
new file mode 100644
index 000000000..012f62fd6
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-datetime/time-no-leads.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 15
+ |
+2 | d = 2023-10-01T1:32:00Z
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-time/hour-over.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-time/hour-over.stderr
new file mode 100644
index 000000000..1f669e3a5
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-time/hour-over.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 7
+ |
+2 | d = 24:00:00
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-time/minute-over.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-time/minute-over.stderr
new file mode 100644
index 000000000..efb676fa0
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-time/minute-over.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 2, column 8
+ |
+2 | d = 00:60:00
+ | ^
+invalid time
+value is out of range
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-time/no-secs.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-time/no-secs.stderr
new file mode 100644
index 000000000..2fa8ba30d
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-time/no-secs.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 16
+ |
+2 | no-secs = 17:45
+ | ^
+invalid time
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-time/second-over.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-time/second-over.stderr
new file mode 100644
index 000000000..a608f89d9
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-time/second-over.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 3, column 11
+ |
+3 | d = 00:00:61
+ | ^
+invalid time
+value is out of range
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-time/time-no-leads-2.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-time/time-no-leads-2.stderr
new file mode 100644
index 000000000..fd77fb297
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-time/time-no-leads-2.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 11
+ |
+2 | d = 01:32:0
+ | ^
+invalid time
diff --git a/vendor/toml_edit/tests/fixtures/invalid/local-time/time-no-leads.stderr b/vendor/toml_edit/tests/fixtures/invalid/local-time/time-no-leads.stderr
new file mode 100644
index 000000000..7a9890229
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/local-time/time-no-leads.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 6
+ |
+2 | d = 1:32:00
+ | ^
+expected newline, `#`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/bad-escape-3.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/bad-escape-3.stderr
new file mode 100644
index 000000000..ea108866f
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/bad-escape-3.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 16
+ |
+1 | backslash = "\"
+ | ^
+invalid basic string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-1.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-1.stderr
index a9e439bff..71d8ed3b9 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-1.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-1.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 1, column 13
+TOML parse error at line 1, column 23
|
-1 | str = "val\ue"
- | ^
+1 | bad-uni-esc-1 = "val\ue"
+ | ^
invalid unicode 4-digit hex code
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-2.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-2.stderr
index 87c8681b9..06138c1db 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-2.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-2.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 1, column 13
+TOML parse error at line 1, column 23
|
-1 | str = "val\Ux"
- | ^
+1 | bad-uni-esc-2 = "val\Ux"
+ | ^
invalid unicode 8-digit hex code
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-3.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-3.stderr
index 61f8dede0..c82355cb6 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-3.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-3.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 1, column 13
+TOML parse error at line 1, column 23
|
-1 | str = "val\U0000000"
- | ^
+1 | bad-uni-esc-3 = "val\U0000000"
+ | ^
invalid unicode 8-digit hex code
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-4.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-4.stderr
index 1a781d999..71fb48c97 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-4.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-4.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 1, column 13
+TOML parse error at line 1, column 23
|
-1 | str = "val\U0000"
- | ^
+1 | bad-uni-esc-4 = "val\U0000"
+ | ^
invalid unicode 8-digit hex code
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-5.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-5.stderr
index 88773ca85..d79798fc4 100644
--- a/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-5.stderr
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-5.stderr
@@ -1,5 +1,5 @@
-TOML parse error at line 1, column 13
+TOML parse error at line 1, column 23
|
-1 | str = "val\Ugggggggg"
- | ^
+1 | bad-uni-esc-5 = "val\Ugggggggg"
+ | ^
invalid unicode 8-digit hex code
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-6.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-6.stderr
new file mode 100644
index 000000000..7eb5ff058
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-6.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 72
+ |
+1 | bad-uni-esc-6 = "This string contains a non scalar unicode codepoint \uD801"
+ | ^
+invalid unicode 4-digit hex code
+value is out of range
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-7.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-7.stderr
new file mode 100644
index 000000000..c53ef125a
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/bad-uni-esc-7.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 20
+ |
+1 | bad-uni-esc-7 = "\uabag"
+ | ^
+invalid unicode 4-digit hex code
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/multiline-bad-escape-4.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/multiline-bad-escape-4.stderr
new file mode 100644
index 000000000..d662a4db4
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/multiline-bad-escape-4.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 21
+ |
+1 | backslash = """\"""
+ | ^
+invalid multiline basic string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/multiline-escape-space-1.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/multiline-escape-space-1.stderr
new file mode 100644
index 000000000..4b3c32b98
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/multiline-escape-space-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 2, column 9
+ |
+2 | foo \ \n
+ | ^
+invalid escape sequence
+expected `b`, `f`, `n`, `r`, `t`, `u`, `U`, `\`, `"`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/multiline-escape-space-2.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/multiline-escape-space-2.stderr
new file mode 100644
index 000000000..b5ed276f0
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/multiline-escape-space-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 4, column 7
+ |
+4 | gee \ """
+ | ^
+invalid escape sequence
+expected `b`, `f`, `n`, `r`, `t`, `u`, `U`, `\`, `"`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/multiline-lit-no-close-1.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/multiline-lit-no-close-1.stderr
new file mode 100644
index 000000000..173193272
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/multiline-lit-no-close-1.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 20
+ |
+2 | this will fail
+ | ^
+invalid multiline literal string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/multiline-lit-no-close-2.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/multiline-lit-no-close-2.stderr
new file mode 100644
index 000000000..347c6de23
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/multiline-lit-no-close-2.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 7
+ |
+1 | x='''
+ | ^
+invalid multiline literal string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/multiline-lit-no-close-3.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/multiline-lit-no-close-3.stderr
new file mode 100644
index 000000000..b6d5ec545
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/multiline-lit-no-close-3.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 4, column 7
+ |
+4 | eteta
+ | ^
+invalid multiline literal string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/multiline-lit-no-close-4.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/multiline-lit-no-close-4.stderr
new file mode 100644
index 000000000..5dea96d9c
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/multiline-lit-no-close-4.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 3, column 8
+ |
+3 | gee ''
+ | ^
+invalid multiline literal string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/multiline-no-close-1.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/multiline-no-close-1.stderr
new file mode 100644
index 000000000..99e967a46
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/multiline-no-close-1.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 2, column 20
+ |
+2 | this will fail
+ | ^
+invalid multiline basic string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/multiline-no-close-3.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/multiline-no-close-3.stderr
new file mode 100644
index 000000000..eff9fe42e
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/multiline-no-close-3.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 4, column 7
+ |
+4 | eteta
+ | ^
+invalid multiline basic string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/multiline-no-close-4.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/multiline-no-close-4.stderr
new file mode 100644
index 000000000..e19582f52
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/multiline-no-close-4.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 3, column 8
+ |
+3 | gee ""
+ | ^
+invalid multiline basic string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/multiline-no-close-5.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/multiline-no-close-5.stderr
new file mode 100644
index 000000000..00c17356c
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/multiline-no-close-5.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 3, column 8
+ |
+3 | gee\
+ | ^
+invalid multiline basic string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/no-close-1.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/no-close-1.stderr
new file mode 100644
index 000000000..f23223d3f
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/no-close-1.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 42
+ |
+1 | no-ending-quote = "One time, at band camp
+ | ^
+invalid basic string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/no-close-2.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/no-close-2.stderr
new file mode 100644
index 000000000..a80fe60b4
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/no-close-2.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 29
+ |
+1 | "a-string".must-be = "closed
+ | ^
+invalid basic string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/no-close-3.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/no-close-3.stderr
new file mode 100644
index 000000000..029b40a83
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/no-close-3.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 42
+ |
+1 | no-ending-quote = 'One time, at band camp
+ | ^
+invalid literal string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/no-close-4.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/no-close-4.stderr
new file mode 100644
index 000000000..9e47ef7a0
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/no-close-4.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 29
+ |
+1 | 'a-string'.must-be = 'closed
+ | ^
+invalid literal string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/string/string.stderr b/vendor/toml_edit/tests/fixtures/invalid/string/string.stderr
new file mode 100644
index 000000000..5d5577fa5
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/string/string.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 20
+ |
+1 | bad-hex-esc-1 = "\x0g"
+ | ^
+invalid escape sequence
+expected `b`, `f`, `n`, `r`, `t`, `u`, `U`, `\`, `"`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/table/append-to-array-with-dotted-keys.stderr b/vendor/toml_edit/tests/fixtures/invalid/table/append-to-array-with-dotted-keys.stderr
new file mode 100644
index 000000000..0fb4b2eb5
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/table/append-to-array-with-dotted-keys.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 4, column 1
+ |
+4 | b.y = 2
+ | ^
+duplicate key `y`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/table/array-no-close-1.stderr b/vendor/toml_edit/tests/fixtures/invalid/table/array-no-close-1.stderr
new file mode 100644
index 000000000..ed370ef85
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/table/array-no-close-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 9
+ |
+1 | [[albums]
+ | ^
+invalid table header
+expected `.`, `]]`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/table/array-no-close-2.stderr b/vendor/toml_edit/tests/fixtures/invalid/table/array-no-close-2.stderr
new file mode 100644
index 000000000..a723c140b
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/table/array-no-close-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 26
+ |
+1 | [[closing-bracket.missing]
+ | ^
+invalid table header
+expected `.`, `]]`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/table/duplicate-key-dotted-array.stderr b/vendor/toml_edit/tests/fixtures/invalid/table/duplicate-key-dotted-array.stderr
new file mode 100644
index 000000000..0cf32abe5
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/table/duplicate-key-dotted-array.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 4, column 1
+ |
+4 | [[fruit.apple]]
+ | ^
+invalid table header
+duplicate key `apple` in table `fruit`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/table/no-close-1.stderr b/vendor/toml_edit/tests/fixtures/invalid/table/no-close-1.stderr
new file mode 100644
index 000000000..2e184fa9e
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/table/no-close-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 8
+ |
+1 | [where will it end
+ | ^
+invalid table header
+expected `.`, `]`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/table/no-close-2.stderr b/vendor/toml_edit/tests/fixtures/invalid/table/no-close-2.stderr
new file mode 100644
index 000000000..a7adf3822
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/table/no-close-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 25
+ |
+1 | [closing-bracket.missingö
+ | ^
+invalid table header
+expected `.`, `]`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/table/no-close-3.stderr b/vendor/toml_edit/tests/fixtures/invalid/table/no-close-3.stderr
new file mode 100644
index 000000000..2b05e95ae
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/table/no-close-3.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 21
+ |
+1 | ["where will it end]
+ | ^
+invalid basic string
diff --git a/vendor/toml_edit/tests/fixtures/invalid/table/no-close-4.stderr b/vendor/toml_edit/tests/fixtures/invalid/table/no-close-4.stderr
new file mode 100644
index 000000000..022f1fabc
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/table/no-close-4.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 1, column 2
+ |
+1 | [
+ | ^
+invalid key
diff --git a/vendor/toml_edit/tests/fixtures/invalid/table/no-close-5.stderr b/vendor/toml_edit/tests/fixtures/invalid/table/no-close-5.stderr
new file mode 100644
index 000000000..38c7beed3
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/table/no-close-5.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 1, column 11
+ |
+1 | [fwfw.wafw
+ | ^
+invalid table header
+expected `.`, `]`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/table/overwrite-array-in-parent.stderr b/vendor/toml_edit/tests/fixtures/invalid/table/overwrite-array-in-parent.stderr
new file mode 100644
index 000000000..8a774ff73
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/table/overwrite-array-in-parent.stderr
@@ -0,0 +1,5 @@
+TOML parse error at line 4, column 1
+ |
+4 | arr = 2
+ | ^
+duplicate key `arr` in table `parent-table`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/table/overwrite-bool-with-array.stderr b/vendor/toml_edit/tests/fixtures/invalid/table/overwrite-bool-with-array.stderr
new file mode 100644
index 000000000..f52c7735e
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/table/overwrite-bool-with-array.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 2, column 1
+ |
+2 | [[a]]
+ | ^
+invalid table header
+duplicate key `a` in document root
diff --git a/vendor/toml_edit/tests/fixtures/invalid/table/overwrite-with-deep-table.stderr b/vendor/toml_edit/tests/fixtures/invalid/table/overwrite-with-deep-table.stderr
new file mode 100644
index 000000000..48773b6d6
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/table/overwrite-with-deep-table.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 2, column 1
+ |
+2 | [a.b.c.d]
+ | ^
+invalid table header
+dotted key `a` attempted to extend non-table type (integer)
diff --git a/vendor/toml_edit/tests/fixtures/invalid/table/redefine-1.stderr b/vendor/toml_edit/tests/fixtures/invalid/table/redefine-1.stderr
new file mode 100644
index 000000000..99c1f98a1
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/table/redefine-1.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 5, column 1
+ |
+5 | [a.b]
+ | ^
+invalid table header
+duplicate key `b` in table `a`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/table/redefine-2.stderr b/vendor/toml_edit/tests/fixtures/invalid/table/redefine-2.stderr
new file mode 100644
index 000000000..43bbb56c4
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/table/redefine-2.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 3, column 1
+ |
+3 | [t1.t2]
+ | ^
+invalid table header
+duplicate key `t2` in table `t1`
diff --git a/vendor/toml_edit/tests/fixtures/invalid/table/redefine-3.stderr b/vendor/toml_edit/tests/fixtures/invalid/table/redefine-3.stderr
new file mode 100644
index 000000000..63bfc2403
--- /dev/null
+++ b/vendor/toml_edit/tests/fixtures/invalid/table/redefine-3.stderr
@@ -0,0 +1,6 @@
+TOML parse error at line 3, column 1
+ |
+3 | [t1.t2.t3]
+ | ^
+invalid table header
+duplicate key `t3` in table `t1.t2`
diff --git a/vendor/toml_edit/tests/testsuite/edit.rs b/vendor/toml_edit/tests/testsuite/edit.rs
index 28f73c1ac..94c20d413 100644
--- a/vendor/toml_edit/tests/testsuite/edit.rs
+++ b/vendor/toml_edit/tests/testsuite/edit.rs
@@ -853,3 +853,10 @@ src.git = "https://github.com/nixos/nixpkgs"
"#,
);
}
+
+#[test]
+fn sorting_with_references() {
+ let values = vec!["foo", "qux", "bar"];
+ let mut array = toml_edit::Array::from_iter(values);
+ array.sort_by(|lhs, rhs| lhs.as_str().cmp(&rhs.as_str()));
+}
diff --git a/vendor/toml_edit/tests/testsuite/float.rs b/vendor/toml_edit/tests/testsuite/float.rs
new file mode 100644
index 000000000..34e792edb
--- /dev/null
+++ b/vendor/toml_edit/tests/testsuite/float.rs
@@ -0,0 +1,60 @@
+use toml_edit::Document;
+
+macro_rules! float_inf_tests {
+ ($ty:ty) => {{
+ let document = r"
+ # infinity
+ sf1 = inf # positive infinity
+ sf2 = +inf # positive infinity
+ sf3 = -inf # negative infinity
+
+ # not a number
+ sf4 = nan # actual sNaN/qNaN encoding is implementation specific
+ sf5 = +nan # same as `nan`
+ sf6 = -nan # valid, actual encoding is implementation specific
+
+ # zero
+ sf7 = +0.0
+ sf8 = -0.0
+ ";
+
+ let document = document.parse::<Document>().unwrap();
+ let float = |k| document[k].as_float().unwrap();
+
+ assert!(float("sf1").is_infinite());
+ assert!(float("sf1").is_sign_positive());
+ assert!(float("sf2").is_infinite());
+ assert!(float("sf2").is_sign_positive());
+ assert!(float("sf3").is_infinite());
+ assert!(float("sf3").is_sign_negative());
+
+ assert!(float("sf4").is_nan());
+ assert!(float("sf4").is_sign_positive());
+ assert!(float("sf5").is_nan());
+ assert!(float("sf5").is_sign_positive());
+ assert!(float("sf6").is_nan());
+ assert!(float("sf6").is_sign_negative());
+
+ assert_eq!(float("sf7"), 0.0);
+ assert!(float("sf7").is_sign_positive());
+ assert_eq!(float("sf8"), 0.0);
+ assert!(float("sf8").is_sign_negative());
+
+ let mut document = Document::new();
+ document["sf4"] = toml_edit::value(f64::NAN.copysign(1.0));
+ document["sf6"] = toml_edit::value(f64::NAN.copysign(-1.0));
+ assert_eq!(
+ document.to_string(),
+ "\
+sf4 = nan
+sf6 = -nan
+"
+ );
+ }};
+}
+
+#[test]
+fn test_float() {
+ float_inf_tests!(f32);
+ float_inf_tests!(f64);
+}
diff --git a/vendor/toml_edit/tests/testsuite/main.rs b/vendor/toml_edit/tests/testsuite/main.rs
index 1476c5da0..0592f3c01 100644
--- a/vendor/toml_edit/tests/testsuite/main.rs
+++ b/vendor/toml_edit/tests/testsuite/main.rs
@@ -3,6 +3,7 @@
mod convert;
mod datetime;
mod edit;
+mod float;
mod invalid;
mod parse;
mod stackoverflow;
diff --git a/vendor/toml_edit/tests/testsuite/parse.rs b/vendor/toml_edit/tests/testsuite/parse.rs
index f1c3c27ca..c0f84c405 100644
--- a/vendor/toml_edit/tests/testsuite/parse.rs
+++ b/vendor/toml_edit/tests/testsuite/parse.rs
@@ -56,11 +56,11 @@ multiline basic string
""""#
)
.is_str());
- assert!(parse_value!(r#"'literal string\ \'"#).is_str());
+ assert!(parse_value!(r"'literal string\ \'").is_str());
assert!(parse_value!(
- r#"'''multiline
+ r"'''multiline
literal \ \
-string'''"#
+string'''"
)
.is_str());
assert!(parse_value!(r#"{ hello = "world", a = 1}"#).is_inline_table());
diff --git a/vendor/tracing-0.1.37/.cargo-checksum.json b/vendor/tracing-0.1.37/.cargo-checksum.json
new file mode 100644
index 000000000..8bfa395bb
--- /dev/null
+++ b/vendor/tracing-0.1.37/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"CHANGELOG.md":"dc8a552611986799a0eebb56fd119ea8ae32c9b8da4be9914fe127627ad4f38a","Cargo.toml":"f8d12a05bc7ed5cfef787db206c05cc5ebcd2c165e6e629b613d1a3ff4f138de","LICENSE":"898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1","README.md":"6ff17749109fbe0855220188015846f40d3997bc2631c3163496c183c0bd50ce","benches/baseline.rs":"43a3e31b6c33dba2e6328052301b707b212487b83f0dcffc843061a9c48a2319","benches/dispatch_get_clone.rs":"866239abeb74a82440741c948a4e7e0a44e92e8cc87319ec57e3b057c9e8f5dd","benches/dispatch_get_ref.rs":"dd2803259a6784c256304e676bbce05de233e4c8451ac85863787213343e9be7","benches/empty_span.rs":"9f51cf376414ea751b2f50c357f2435a545d606118286f5b8b89f185e28aad8c","benches/enter_span.rs":"4410ec73d277e7b54e9f306c00ff3b79a150d1832966b7fc29984c8e3ad8d57c","benches/event.rs":"98de3c82ed18abe0a3cbe6eda9a4f9deec2b69bca42c3aac11dea4b608b85a67","benches/shared.rs":"2623311af7d153685064e664a5903d03e7dc3179754c324f3a76f29f060515e6","benches/span_fields.rs":"9166cd43ef2783e5419dd61ea57a02e48e8cc38aa1b357e9b79fa581929b60d8","benches/span_no_fields.rs":"79cc4befacf27d7ce728246087c4f06a6066f913e831d9043caeb7941f0193f6","benches/span_repeated.rs":"e4b3c99a7a9fc15d9042b8db399a56cf647b4eebd26f29d95325bb057b68330b","src/dispatcher.rs":"a8732392ffe56b1178f8fd3d6e6e02d40b51475c38bb4600abd9cd170df1bf6c","src/field.rs":"55c7a2798b9ad0269e7c738c3f15a5d0281bf34ac3a6196a3f0b15801e5278bd","src/instrument.rs":"1fe4de5c13b5ba048e9872d78d1fa4e85655f9f2ed10f79b72b5da881c9b8b45","src/level_filters.rs":"baae8e797897bae9cdd9ec64b8e9a3d71156e9c03261be17b5b18acba034e154","src/lib.rs":"325d0d9487ecd646a7e5e22617f5f291c4112e0e7e359e0033de1677217c5b22","src/macros.rs":"1b38906bcb32cad50b60d350c88f6f4f1fa4d46d99bf50318c44d75219760c42","src/span.rs":"372695b3eda8354a892316826d2598f821fcb835fb18e1e0271767bce730b7ad","src/stdlib.rs":"248514a9bae6106e436358aee44c92abf8e7f79022895c4a25136ddef211d198","src/subscriber.rs":"8933d8766439f929c0a98a0863d20aff37b221314b3825edd9058be511149968","tests/enabled.rs":"1333339aace87ea9d701f2f76a1985820cc513a75013a7ed89669f7a2c635479","tests/event.rs":"7678d1cc8a29ae8b716fbddb7cc4836422732ba3dce109ff511c8bb6100da606","tests/filter_caching_is_lexically_scoped.rs":"5487a37db5fbdf3d57020ab1f01185d928c45d967d99d723ffc434540459d8dc","tests/filters_are_not_reevaluated_for_the_same_span.rs":"251abbc000dddd298448958a1f0e5be71da527ac6c1a368d57837c83a5467329","tests/filters_are_reevaluated_for_different_call_sites.rs":"e0fdd8e930c043674702831b4d96f331e63aba824576bbac50b3f53bb0241cc7","tests/filters_dont_leak.rs":"d594266818a3461886da33bfcc76937d89a433ed6980226fc428706b216c093c","tests/future_send.rs":"3e9c9193219d12e342c18bbedb2f6ec940334202feb3cffba91601d6001b8575","tests/macro_imports.rs":"d5de857162185d4a2384f3cb644bfcf76c7f5c1a3b5f72bfa0d2620ac6e3873c","tests/macros.rs":"fa83397181d73d2cae09c16d9647a63d1e3bad0f2dbc5b3280f69f3d0180c488","tests/macros_incompatible_concat.rs":"5f3bcbb65e4ae39db1cfc2def62fc913c20bab0fb769c8f731504e2615585ee5","tests/macros_redefined_core.rs":"a6eac60522f71fe6c9a040b8b869d596f7eb9e907f5b49f4be4413a40c387676","tests/max_level_hint.rs":"9b366591d947ca0202fa0bdf797e1bb14534d3c896cf8b9674660cd2807c32ef","tests/multiple_max_level_hints.rs":"4d9ef0de9cccc787da8f5e3f6c233ac9db42a2a99cfe5e39997e1f4aa9df0c00","tests/no_subscriber.rs":"2f8f2ada5089d8e2e503394dfe8206598a11895907c53bf940b892f1e6afdd2f","tests/register_callsite_deadlock.rs":"c0b3142543e7a10065c7583a8ee0b6bc978ea4f3979599651101c5a28966e7c8","tests/scoped_clobbers_default.rs":"806480a74c15e4d68bb7576050662b1e53ee765fd583d003f8b349f17ea63a4b","tests/span.rs":"f84ead5b1dad9b91e5cec9d8378ab932a942936374ba928fb381e67fab52cda0","tests/subscriber.rs":"1617c098f4fa6abed174fe062111444c7b67fa0f377d2b342176998e572480e3"},"package":"8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"} \ No newline at end of file
diff --git a/vendor/tracing-0.1.37/CHANGELOG.md b/vendor/tracing-0.1.37/CHANGELOG.md
new file mode 100644
index 000000000..978e0ca55
--- /dev/null
+++ b/vendor/tracing-0.1.37/CHANGELOG.md
@@ -0,0 +1,806 @@
+# 0.1.37 (October 6, 2022)
+
+This release of `tracing` incorporates changes from `tracing-core`
+[v0.1.30][core-0.1.30] and `tracing-attributes` [v0.1.23][attrs-0.1.23],
+including the new `Subscriber::on_register_dispatch` method for performing late
+initialization after a `Subscriber` is registered as a `Dispatch`, and bugfixes
+for the `#[instrument]` attribute. Additionally, it fixes instances of the
+`bare_trait_objects` lint, which is now a warning on `tracing`'s MSRV and will
+become an error in the next edition.
+
+### Fixed
+
+- **attributes**: Incorrect handling of inner attributes in `#[instrument]`ed
+ functions ([#2307])
+- **attributes**: Incorrect location of compiler diagnostic spans generated for
+ type errors in `#[instrument]`ed `async fn`s ([#2270])
+- **attributes**: Updated `syn` dependency to fix compilation with `-Z
+ minimal-versions` ([#2246])
+- `bare_trait_objects` warning in `valueset!` macro expansion ([#2308])
+
+### Added
+
+- **core**: `Subscriber::on_register_dispatch` method ([#2269])
+- **core**: `WeakDispatch` type and `Dispatch::downgrade()` function ([#2293])
+
+### Changed
+
+- `tracing-core`: updated to [0.1.30][core-0.1.30]
+- `tracing-attributes`: updated to [0.1.23][attrs-0.1.23]
+
+### Documented
+
+- Added [`tracing-web`] and [`reqwest-tracing`] to related crates ([#2283],
+ [#2331])
+
+Thanks to new contributors @compiler-errors, @e-nomem, @WorldSEnder, @Xiami2012,
+and @tl-rodrigo-gryzinski, as well as @jswrenn and @CAD97, for contributing to
+this release!
+
+[core-0.1.30]: https://github.com/tokio-rs/tracing/releases/tag/tracing-core-0.1.30
+[attrs-0.1.23]: https://github.com/tokio-rs/tracing/releases/tag/tracing-attributes-0.1.23
+[`tracing-web`]: https://crates.io/crates/tracing-web/
+[`reqwest-tracing`]: https://crates.io/crates/reqwest-tracing/
+[#2246]: https://github.com/tokio-rs/tracing/pull/2246
+[#2269]: https://github.com/tokio-rs/tracing/pull/2269
+[#2283]: https://github.com/tokio-rs/tracing/pull/2283
+[#2270]: https://github.com/tokio-rs/tracing/pull/2270
+[#2293]: https://github.com/tokio-rs/tracing/pull/2293
+[#2307]: https://github.com/tokio-rs/tracing/pull/2307
+[#2308]: https://github.com/tokio-rs/tracing/pull/2308
+[#2331]: https://github.com/tokio-rs/tracing/pull/2331
+
+# 0.1.36 (July 29, 2022)
+
+This release adds support for owned values and fat pointers as arguments to the
+`Span::record` method, as well as updating the minimum `tracing-core` version
+and several documentation improvements.
+
+### Fixed
+
+- Incorrect docs in `dispatcher::set_default` ([#2220])
+- Compilation with `-Z minimal-versions` ([#2246])
+
+### Added
+
+- Support for owned values and fat pointers in `Span::record` ([#2212])
+- Documentation improvements ([#2208], [#2163])
+
+### Changed
+
+- `tracing-core`: updated to [0.1.29][core-0.1.29]
+
+Thanks to @fredr, @cgbur, @jyn514, @matklad, and @CAD97 for contributing to this
+release!
+
+[core-0.1.29]: https://github.com/tokio-rs/tracing/releases/tag/tracing-core-0.1.29
+[#2220]: https://github.com/tokio-rs/tracing/pull/2220
+[#2246]: https://github.com/tokio-rs/tracing/pull/2246
+[#2212]: https://github.com/tokio-rs/tracing/pull/2212
+[#2208]: https://github.com/tokio-rs/tracing/pull/2208
+[#2163]: https://github.com/tokio-rs/tracing/pull/2163
+
+# 0.1.35 (June 8, 2022)
+
+This release reduces the overhead of callsite registration by using new
+`tracing-core` APIs.
+
+### Added
+
+- Use `DefaultCallsite` to reduce callsite registration overhead ([#2083])
+
+### Changed
+
+- `tracing-core`: updated to [0.1.27][core-0.1.27]
+
+[core-0.1.27]: https://github.com/tokio-rs/tracing/releases/tag/tracing-core-0.1.27
+[#2088]: https://github.com/tokio-rs/tracing/pull/2083
+
+# 0.1.34 (April 14, 2022)
+
+This release includes bug fixes for the "log" support feature and for the use of
+both scoped and global default dispatchers in the same program.
+
+### Fixed
+
+- Failure to use the global default dispatcher when a thread sets a local
+ default dispatcher before the global default is set ([#2065])
+- **log**: Compilation errors due to `async` block/fn futures becoming `!Send`
+ when the "log" feature flag is enabled ([#2073])
+- Broken links in documentation ([#2068])
+
+Thanks to @ben0x539 for contributing to this release!
+
+[#2065]: https://github.com/tokio-rs/tracing/pull/2065
+[#2073]: https://github.com/tokio-rs/tracing/pull/2073
+[#2068]: https://github.com/tokio-rs/tracing/pull/2068
+
+# 0.1.33 (April 9, 2022)
+
+This release adds new `span_enabled!` and `event_enabled!` variants of the
+`enabled!` macro, for testing whether a subscriber would specifically enable a
+span or an event.
+
+### Added
+
+- `span_enabled!` and `event_enabled!` macros ([#1900])
+- Several documentation improvements ([#2010], [#2012])
+
+### Fixed
+
+- Compilation warning when compiling for <=32-bit targets (including `wasm32`)
+ ([#2060])
+
+Thanks to @guswynn, @arifd, @hrxi, @CAD97, and @name1e5s for contributing to
+this release!
+
+[#1900]: https://github.com/tokio-rs/tracing/pull/1900
+[#2010]: https://github.com/tokio-rs/tracing/pull/2010
+[#2012]: https://github.com/tokio-rs/tracing/pull/2012
+[#2060]: https://github.com/tokio-rs/tracing/pull/2060
+
+# 0.1.32 (March 8th, 2022)
+
+This release reduces the overhead of creating and dropping disabled
+spans significantly, which should improve performance when no `tracing`
+subscriber is in use or when spans are disabled by a filter.
+
+### Fixed
+
+- **attributes**: Compilation failure with `--minimal-versions` due to a
+ too-permissive `syn` dependency ([#1960])
+
+### Changed
+
+- Reduced `Drop` overhead for disabled spans ([#1974])
+- `tracing-attributes`: updated to [0.1.20][attributes-0.1.20]
+
+[#1974]: https://github.com/tokio-rs/tracing/pull/1974
+[#1960]: https://github.com/tokio-rs/tracing/pull/1960
+[attributes-0.1.20]: https://github.com/tokio-rs/tracing/releases/tag/tracing-attributes-0.1.20
+
+# 0.1.31 (February 17th, 2022)
+
+This release increases the minimum supported Rust version (MSRV) to 1.49.0. In
+addition, it fixes some relatively rare macro bugs.
+
+### Added
+
+- Added `tracing-forest` to the list of related crates ([#1935])
+
+### Changed
+
+- Updated minimum supported Rust version (MSRV) to 1.49.0 ([#1913])
+
+### Fixed
+
+- Fixed the `warn!` macro incorrectly generating an event with the `TRACE` level
+ ([#1930])
+- Fixed macro hygiene issues when used in a crate that defines its own `concat!`
+ macro, for real this time ([#1918])
+
+Thanks to @QnnOkabayashi, @nicolaasg, and @teohhanhui for contributing to this
+release!
+
+[#1935]: https://github.com/tokio-rs/tracing/pull/1935
+[#1913]: https://github.com/tokio-rs/tracing/pull/1913
+[#1930]: https://github.com/tokio-rs/tracing/pull/1930
+[#1918]: https://github.com/tokio-rs/tracing/pull/1918
+
+# 0.1.30 (February 3rd, 2022)
+
+This release adds *experimental* support for recording structured field
+values using the [`valuable`] crate. See [this blog post][post] for
+details on `valuable`.
+
+Note that `valuable` support currently requires `--cfg tracing_unstable`. See
+the documentation for details.
+
+This release also adds a new `enabled!` macro for testing if a span or event
+would be enabled.
+
+### Added
+
+- **field**: Experimental support for recording field values using the
+ [`valuable`] crate ([#1608], [#1888], [#1887])
+- `enabled!` macro for testing if a span or event is enabled ([#1882])
+
+### Changed
+
+- `tracing-core`: updated to [0.1.22][core-0.1.22]
+- `tracing-attributes`: updated to [0.1.19][attributes-0.1.19]
+
+### Fixed
+
+- **log**: Fixed "use of moved value" compiler error when the "log" feature is
+ enabled ([#1823])
+- Fixed macro hygiene issues when used in a crate that defines its own `concat!`
+ macro ([#1842])
+- A very large number of documentation fixes and improvements.
+
+Thanks to @@Vlad-Scherbina, @Skepfyr, @Swatinem, @guswynn, @teohhanhui,
+@xd009642, @tobz, @d-e-s-o@0b01, and @nickelc for contributing to this release!
+
+[`valuable`]: https://crates.io/crates/valuable
+[post]: https://tokio.rs/blog/2021-05-valuable
+[core-0.1.22]: https://github.com/tokio-rs/tracing/releases/tag/tracing-core-0.1.22
+[attributes-0.1.19]: https://github.com/tokio-rs/tracing/releases/tag/tracing-attributes-0.1.19
+[#1608]: https://github.com/tokio-rs/tracing/pull/1608
+[#1888]: https://github.com/tokio-rs/tracing/pull/1888
+[#1887]: https://github.com/tokio-rs/tracing/pull/1887
+[#1882]: https://github.com/tokio-rs/tracing/pull/1882
+[#1823]: https://github.com/tokio-rs/tracing/pull/1823
+[#1842]: https://github.com/tokio-rs/tracing/pull/1842
+
+# 0.1.29 (October 5th, 2021)
+
+This release adds support for recording `Option<T> where T: Value` as typed
+`tracing` field values. It also includes significant performance improvements
+for functions annotated with the `#[instrument]` attribute when the generated
+span is disabled.
+
+### Changed
+
+- `tracing-core`: updated to v0.1.21
+- `tracing-attributes`: updated to v0.1.18
+
+### Added
+
+- **field**: `Value` impl for `Option<T> where T: Value` ([#1585])
+- **attributes**: - improved performance when skipping `#[instrument]`-generated
+ spans below the max level ([#1600], [#1605], [#1614], [#1616], [#1617])
+
+### Fixed
+
+- **instrument**: added missing `Future` implementation for `WithSubscriber`,
+ making the `WithDispatch` extension trait actually useable ([#1602])
+- Documentation fixes and improvements ([#1595], [#1601], [#1597])
+
+Thanks to @brianburgers, @mattiast, @DCjanus, @oli-obk, and @matklad for
+contributing to this release!
+
+[#1585]: https://github.com/tokio-rs/tracing/pull/1585
+[#1595]: https://github.com/tokio-rs/tracing/pull/1596
+[#1597]: https://github.com/tokio-rs/tracing/pull/1597
+[#1600]: https://github.com/tokio-rs/tracing/pull/1600
+[#1601]: https://github.com/tokio-rs/tracing/pull/1601
+[#1602]: https://github.com/tokio-rs/tracing/pull/1602
+[#1605]: https://github.com/tokio-rs/tracing/pull/1605
+[#1614]: https://github.com/tokio-rs/tracing/pull/1614
+[#1616]: https://github.com/tokio-rs/tracing/pull/1616
+[#1617]: https://github.com/tokio-rs/tracing/pull/1617
+
+# 0.1.28 (September 17th, 2021)
+
+This release fixes an issue where the RustDoc documentation was rendered
+incorrectly. It doesn't include any actual code changes, and is very boring and
+can be ignored.
+
+### Fixed
+
+- **docs**: Incorrect documentation rendering due to unclosed `<div>` tag
+ ([#1572])
+
+[#1572]: https://github.com/tokio-rs/tracing/pull/1572
+
+# 0.1.27 (September 13, 2021)
+
+This release adds a new [`Span::or_current`] method to aid in efficiently
+propagating span contexts to spawned threads or tasks. Additionally, it updates
+the [`tracing-core`] version to [0.1.20] and the [`tracing-attributes`] version to
+[0.1.16], ensuring that a number of new features in those crates are present.
+
+### Fixed
+
+- **instrument**: Added missing `WithSubscriber` implementations for futures and
+ other types ([#1424])
+
+### Added
+
+- `Span::or_current` method, to help with efficient span context propagation
+ ([#1538])
+- **attributes**: add `skip_all` option to `#[instrument]` ([#1548])
+- **attributes**: record primitive types as primitive values rather than as
+ `fmt::Debug` ([#1378])
+- **core**: `NoSubscriber`, a no-op `Subscriber` implementation
+ ([#1549])
+- **core**: Added `Visit::record_f64` and support for recording floating-point
+ values ([#1507], [#1522])
+- A large number of documentation improvements and fixes ([#1369], [#1398],
+ [#1435], [#1442], [#1524], [#1556])
+
+Thanks to new contributors @dzvon and @mbergkvist, as well as @teozkr,
+@maxburke, @LukeMathWalker, and @jsgf, for contributing to this
+release!
+
+[`Span::or_current`]: https://docs.rs/tracing/0.1.27/tracing/struct.Span.html#method.or_current
+[`tracing-core`]: https://crates.io/crates/tracing-core
+[`tracing-attributes`]: https://crates.io/crates/tracing-attributes
+[`tracing-core`]: https://crates.io/crates/tracing-core
+[0.1.20]: https://github.com/tokio-rs/tracing/releases/tag/tracing-core-0.1.20
+[0.1.16]: https://github.com/tokio-rs/tracing/releases/tag/tracing-attributes-0.1.16
+[#1424]: https://github.com/tokio-rs/tracing/pull/1424
+[#1538]: https://github.com/tokio-rs/tracing/pull/1538
+[#1548]: https://github.com/tokio-rs/tracing/pull/1548
+[#1378]: https://github.com/tokio-rs/tracing/pull/1378
+[#1507]: https://github.com/tokio-rs/tracing/pull/1507
+[#1522]: https://github.com/tokio-rs/tracing/pull/1522
+[#1369]: https://github.com/tokio-rs/tracing/pull/1369
+[#1398]: https://github.com/tokio-rs/tracing/pull/1398
+[#1435]: https://github.com/tokio-rs/tracing/pull/1435
+[#1442]: https://github.com/tokio-rs/tracing/pull/1442
+[#1524]: https://github.com/tokio-rs/tracing/pull/1524
+[#1556]: https://github.com/tokio-rs/tracing/pull/1556
+
+# 0.1.26 (April 30, 2021)
+
+### Fixed
+
+- **attributes**: Compatibility between `#[instrument]` and `async-trait`
+ v0.1.43 and newer ([#1228])
+- Several documentation fixes ([#1305], [#1344])
+### Added
+
+- `Subscriber` impl for `Box<dyn Subscriber + Send + Sync + 'static>` ([#1358])
+- `Subscriber` impl for `Arc<dyn Subscriber + Send + Sync + 'static>` ([#1374])
+- Symmetric `From` impls for existing `Into` impls on `span::Current`, `Span`,
+ and `Option<Id>` ([#1335], [#1338])
+- `From<EnteredSpan>` implementation for `Option<Id>`, allowing `EnteredSpan` to
+ be used in a `span!` macro's `parent:` field ([#1325])
+- `Attributes::fields` accessor that returns the set of fields defined on a
+ span's `Attributes` ([#1331])
+
+
+Thanks to @Folyd, @nightmared, and new contributors @rmsc and @Fishrock123 for
+contributing to this release!
+
+[#1227]: https://github.com/tokio-rs/tracing/pull/1228
+[#1305]: https://github.com/tokio-rs/tracing/pull/1305
+[#1325]: https://github.com/tokio-rs/tracing/pull/1325
+[#1338]: https://github.com/tokio-rs/tracing/pull/1338
+[#1344]: https://github.com/tokio-rs/tracing/pull/1344
+[#1358]: https://github.com/tokio-rs/tracing/pull/1358
+[#1374]: https://github.com/tokio-rs/tracing/pull/1374
+[#1335]: https://github.com/tokio-rs/tracing/pull/1335
+[#1331]: https://github.com/tokio-rs/tracing/pull/1331
+
+# 0.1.25 (February 23, 2021)
+
+### Added
+
+- `Span::entered` method for entering a span and moving it into a guard by value
+ rather than borrowing it ([#1252])
+
+Thanks to @matklad for contributing to this release!
+
+[#1252]: https://github.com/tokio-rs/tracing/pull/1252
+
+# 0.1.24 (February 17, 2021)
+
+### Fixed
+
+- **attributes**: Compiler error when using `#[instrument(err)]` on functions
+ which return `impl Trait` ([#1236])
+- Fixed broken match arms in event macros ([#1239])
+- Documentation improvements ([#1232])
+
+Thanks to @bkchr and @lfranke for contributing to this release!
+
+[#1236]: https://github.com/tokio-rs/tracing/pull/1236
+[#1239]: https://github.com/tokio-rs/tracing/pull/1239
+[#1232]: https://github.com/tokio-rs/tracing/pull/1232
+
+# 0.1.23 (February 4, 2021)
+
+### Fixed
+
+- **attributes**: Compiler error when using `#[instrument(err)]` on functions
+ with mutable parameters ([#1167])
+- **attributes**: Missing function visibility modifier when using
+ `#[instrument]` with `async-trait` ([#977])
+- **attributes** Removed unused `syn` features ([#928])
+- **log**: Fixed an issue where the `tracing` macros would generate code for
+ events whose levels are disabled statically by the `log` crate's
+ `static_max_level_XXX` features ([#1175])
+- Fixed deprecations and clippy lints ([#1195])
+- Several documentation fixes and improvements ([#941], [#965], [#981], [#1146],
+ [#1215])
+
+### Changed
+
+- **attributes**: `tracing-futures` dependency is no longer required when using
+ `#[instrument]` on async functions ([#808])
+- **attributes**: Updated `tracing-attributes` minimum dependency to v0.1.12
+ ([#1222])
+
+Thanks to @nagisa, @Txuritan, @TaKO8Ki, @okready, and @krojew for contributing
+to this release!
+
+[#1167]: https://github.com/tokio-rs/tracing/pull/1167
+[#977]: https://github.com/tokio-rs/tracing/pull/977
+[#965]: https://github.com/tokio-rs/tracing/pull/965
+[#981]: https://github.com/tokio-rs/tracing/pull/981
+[#1215]: https://github.com/tokio-rs/tracing/pull/1215
+[#808]: https://github.com/tokio-rs/tracing/pull/808
+[#941]: https://github.com/tokio-rs/tracing/pull/941
+[#1146]: https://github.com/tokio-rs/tracing/pull/1146
+[#1175]: https://github.com/tokio-rs/tracing/pull/1175
+[#1195]: https://github.com/tokio-rs/tracing/pull/1195
+[#1222]: https://github.com/tokio-rs/tracing/pull/1222
+
+# 0.1.22 (November 23, 2020)
+
+### Changed
+
+- Updated `pin-project-lite` dependency to 0.2 ([#1108])
+
+[#1108]: https://github.com/tokio-rs/tracing/pull/1108
+
+# 0.1.21 (September 28, 2020)
+
+### Fixed
+
+- Incorrect inlining of `Span::new`, `Span::new_root`, and `Span::new_child_of`,
+ which could result in `dispatcher::get_default` being inlined at the callsite
+ ([#994])
+- Regression where using a struct field as a span or event field when other
+ fields on that struct are borrowed mutably would fail to compile ([#987])
+
+### Changed
+
+- Updated `tracing-core` to 0.1.17 ([#992])
+
+### Added
+
+- `Instrument` trait and `Instrumented` type for attaching a `Span` to a
+ `Future` ([#808])
+- `Copy` implementations for `Level` and `LevelFilter` ([#992])
+- Multiple documentation fixes and improvements ([#964], [#980], [#981])
+
+Thanks to @nagisa, and new contributors @SecurityInsanity, @froydnj, @jyn514 and
+@TaKO8Ki for contributing to this release!
+
+[#994]: https://github.com/tokio-rs/tracing/pull/994
+[#992]: https://github.com/tokio-rs/tracing/pull/992
+[#987]: https://github.com/tokio-rs/tracing/pull/987
+[#980]: https://github.com/tokio-rs/tracing/pull/980
+[#981]: https://github.com/tokio-rs/tracing/pull/981
+[#964]: https://github.com/tokio-rs/tracing/pull/964
+[#808]: https://github.com/tokio-rs/tracing/pull/808
+
+# 0.1.20 (August 24, 2020)
+
+### Changed
+
+- Significantly reduced assembly generated by macro invocations (#943)
+- Updated `tracing-core` to 0.1.15 (#943)
+
+### Added
+
+- Documented minimum supported Rust version policy (#941)
+
+# 0.1.19 (August 10, 2020)
+
+### Fixed
+
+- Updated `tracing-core` to fix incorrect calculation of the global max level
+ filter (#908)
+
+### Added
+
+- **attributes**: Support for using `self` in field expressions when
+ instrumenting `async-trait` functions (#875)
+- Several documentation improvements (#832, #881, #896, #897, #911, #913)
+
+Thanks to @anton-dutov, @nightmared, @mystor, and @toshokan for contributing to
+this release!
+
+# 0.1.18 (July 31, 2020)
+
+### Fixed
+
+- Fixed a bug where `LevelFilter::OFF` (and thus also the `static_max_level_off`
+ feature flag) would enable *all* traces, rather than *none* (#853)
+- **log**: Fixed `tracing` macros and `Span`s not checking `log::max_level`
+ before emitting `log` records (#870)
+
+### Changed
+
+- **macros**: Macros now check the global max level (`LevelFilter::current`)
+ before the per-callsite cache when determining if a span or event is enabled.
+ This significantly improves performance in some use cases (#853)
+- **macros**: Simplified the code generated by macro expansion significantly,
+ which may improve compile times and/or `rustc` optimizatation of surrounding
+ code (#869, #869)
+- **macros**: Macros now check the static max level before checking any runtime
+ filtering, improving performance when a span or event is disabled by a
+ `static_max_level_XXX` feature flag (#868)
+- `LevelFilter` is now a re-export of the `tracing_core::LevelFilter` type, it
+ can now be used interchangably with the versions in `tracing-core` and
+ `tracing-subscriber` (#853)
+- Significant performance improvements when comparing `LevelFilter`s and
+ `Level`s (#853)
+- Updated the minimum `tracing-core` dependency to 0.1.12 (#853)
+
+### Added
+
+- **macros**: Quoted string literals may now be used as field names, to allow
+ fields whose names are not valid Rust identifiers (#790)
+- **docs**: Several documentation improvements (#850, #857, #841)
+- `LevelFilter::current()` function, which returns the highest level that any
+ subscriber will enable (#853)
+- `Subscriber::max_level_hint` optional trait method, for setting the value
+ returned by `LevelFilter::current()` (#853)
+
+Thanks to new contributors @cuviper, @ethanboxx, @ben0x539, @dignati,
+@colelawrence, and @rbtcollins for helping out with this release!
+
+# 0.1.17 (July 22, 2020)
+
+### Changed
+
+- **log**: Moved verbose span enter/exit log records to "tracing::span::active"
+ target, allowing them to be filtered separately (#833)
+- **log**: All span lifecycle log records without fields now have the `Trace`
+ log filter, to guard against `log` users enabling them by default with blanket
+ level filtering (#833)
+
+### Fixed
+
+- **log**/**macros**: Fixed missing implicit imports of the
+ `tracing::field::debug` and `tracing::field::display` functions inside the
+ macros when the "log" feature is enabled (#835)
+
+# 0.1.16 (July 8, 2020)
+
+### Added
+
+- **attributes**: Support for arbitrary expressions as fields in `#[instrument]` (#672)
+- **attributes**: `#[instrument]` now emits a compiler warning when ignoring unrecognized
+ input (#672, #786)
+- Improved documentation on using `tracing` in async code (#769)
+
+### Changed
+
+- Updated `tracing-core` dependency to 0.1.11
+
+### Fixed
+
+- **macros**: Excessive monomorphization in macros, which could lead to
+ longer compilation times (#787)
+- **log**: Compiler warnings in macros when `log` or `log-always` features
+ are enabled (#753)
+- Compiler error when `tracing-core/std` feature is enabled but `tracing/std` is
+ not (#760)
+
+Thanks to @nagisa for contributing to this release!
+
+# 0.1.15 (June 2, 2020)
+
+### Changed
+
+- **macros**: Replaced use of legacy `local_inner_macros` with `$crate::` (#740)
+
+### Added
+
+- Docs fixes and improvements (#742, #731, #730)
+
+Thanks to @bnjjj, @blaenk, and @LukeMathWalker for contributing to this release!
+
+# 0.1.14 (May 14, 2020)
+
+### Added
+
+- **log**: When using the [`log`] compatibility feature alongside a `tracing`
+ `Subscriber`, log records for spans now include span IDs (#613)
+- **attributes**: Support for using `#[instrument]` on methods that are part of
+ [`async-trait`] trait implementations (#711)
+- **attributes**: Optional `#[instrument(err)]` argument to automatically emit
+ an event if an instrumented function returns `Err` (#637)
+- Added `#[must_use]` attribute to the guard returned by
+ `subscriber::set_default` (#685)
+
+### Changed
+
+- **log**: Made [`log`] records emitted by spans much less noisy when span IDs are
+ not available (#613)
+
+### Fixed
+
+- Several typos in the documentation (#656, #710, #715)
+
+Thanks to @FintanH, @shepmaster, @inanna-malick, @zekisharif, @bkchr, @majecty,
+@ilana and @nightmared for contributing to this release!
+
+[`async-trait`]: https://crates.io/crates/async-trait
+[`log`]: https://crates.io/crates/log
+
+# 0.1.13 (February 26, 2019)
+
+### Added
+
+- **field**: `field::Empty` type for declaring empty fields whose values will be
+ recorded later (#548)
+- **field**: `field::Value` implementations for `Wrapping` and `NonZero*`
+ numbers (#538)
+- **attributes**: Support for adding arbitrary literal fields to spans generated
+ by `#[instrument]` (#569)
+- **attributes**: `#[instrument]` now emits a helpful compiler error when
+ attempting to skip a function parameter (#600)
+
+### Changed
+
+- **attributes**: The `#[instrument]` attribute was placed under an on-by-default
+ feature flag "attributes" (#603)
+
+### Fixed
+
+- Broken and unresolvable links in RustDoc (#595)
+
+Thanks to @oli-cosmian and @Kobzol for contributing to this release!
+
+# 0.1.12 (January 11, 2019)
+
+### Added
+
+- `Span::with_subscriber` method to access the subscriber that tracks a `Span`
+ (#503)
+- API documentation now shows which features are required by feature-flagged
+ items (#523)
+- Improved README examples (#496)
+- Documentation links to related crates (#507)
+
+# 0.1.11 (December 20, 2019)
+
+### Added
+
+- `Span::is_none` method (#475)
+- `LevelFilter::into_level` method (#470)
+- `LevelFilter::from_level` function and `From<Level>` impl (#471)
+- Documented minimum supported Rust version (#482)
+
+### Fixed
+
+- Incorrect parameter type to `Span::follows_from` that made it impossible to
+ call (#467)
+- Missing whitespace in `log` records generated when enabling the `log` feature
+ flag (#484)
+- Typos and missing links in documentation (#405, #423, #439)
+
+# 0.1.10 (October 23, 2019)
+
+### Added
+
+- Support for destructuring in arguments to `#[instrument]`ed functions (#397)
+- Generated field for `self` parameters when `#[instrument]`ing methods (#397)
+- Optional `skip` argument to `#[instrument]` for excluding function parameters
+ from generated spans (#359)
+- Added `dispatcher::set_default` and `subscriber::set_default` APIs, which
+ return a drop guard (#388)
+
+### Fixed
+
+- Some minor documentation errors (#356, #370)
+
+# 0.1.9 (September 13, 2019)
+
+### Fixed
+
+- Fixed `#[instrument]`ed async functions not compiling on `nightly-2019-09-11`
+ or newer (#342)
+
+### Changed
+
+- Significantly reduced performance impact of skipped spans and events when a
+ `Subscriber` is not in use (#326)
+- The `log` feature will now only cause `tracing` spans and events to emit log
+ records when a `Subscriber` is not in use (#346)
+
+### Added
+
+- Added support for overriding the name of the span generated by `#[instrument]`
+ (#330)
+- `log-always` feature flag to emit log records even when a `Subscriber` is set
+ (#346)
+
+# 0.1.8 (September 3, 2019)
+
+### Changed
+
+- Reorganized and improved API documentation (#317)
+
+### Removed
+
+- Dev-dependencies on `ansi_term` and `humantime` crates, which were used only
+ for examples (#316)
+
+# 0.1.7 (August 30, 2019)
+
+### Changed
+
+- New (curly-brace free) event message syntax to place the message in the first
+ field rather than the last (#309)
+
+### Fixed
+
+- Fixed a regression causing macro stack exhaustion when the `log` feature flag
+ is enabled (#304)
+
+# 0.1.6 (August 20, 2019)
+
+### Added
+
+- `std::error::Error` as a new primitive type (#277)
+- Support for mixing key-value fields and `format_args` messages without curly
+ braces as delimiters (#288)
+
+### Changed
+
+- `tracing-core` dependency to 0.1.5 (#294)
+- `tracing-attributes` dependency to 0.1.2 (#297)
+
+# 0.1.5 (August 9, 2019)
+
+### Added
+
+- Support for `no-std` + `liballoc` (#263)
+
+### Changed
+
+- Using the `#[instrument]` attribute on `async fn`s no longer requires a
+ feature flag (#258)
+
+### Fixed
+
+- The `#[instrument]` macro now works on generic functions (#262)
+
+# 0.1.4 (August 8, 2019)
+
+### Added
+
+- `#[instrument]` attribute for automatically adding spans to functions (#253)
+
+# 0.1.3 (July 11, 2019)
+
+### Added
+
+- Log messages when a subscriber indicates that a span has closed, when the
+ `log` feature flag is enabled (#180).
+
+### Changed
+
+- `tracing-core` minimum dependency version to 0.1.2 (#174).
+
+### Fixed
+
+- Fixed an issue where event macro invocations with a single field, using local
+ variable shorthand, would recur infinitely (#166).
+- Fixed uses of deprecated `tracing-core` APIs (#174).
+
+# 0.1.2 (July 6, 2019)
+
+### Added
+
+- `Span::none()` constructor, which does not require metadata and
+ returns a completely empty span (#147).
+- `Span::current()` function, returning the current span if it is
+ known to the subscriber (#148).
+
+### Fixed
+
+- Broken macro imports when used prefixed with `tracing::` (#152).
+
+# 0.1.1 (July 3, 2019)
+
+### Changed
+
+- `cfg_if` dependency to 0.1.9.
+
+### Fixed
+
+- Compilation errors when the `log` feature is enabled (#131).
+- Unclear wording and typos in documentation (#124, #128, #142).
+
+# 0.1.0 (June 27, 2019)
+
+- Initial release
diff --git a/vendor/tracing-0.1.37/Cargo.toml b/vendor/tracing-0.1.37/Cargo.toml
new file mode 100644
index 000000000..90f084d8e
--- /dev/null
+++ b/vendor/tracing-0.1.37/Cargo.toml
@@ -0,0 +1,142 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2018"
+rust-version = "1.49.0"
+name = "tracing"
+version = "0.1.37"
+authors = [
+ "Eliza Weisman <eliza@buoyant.io>",
+ "Tokio Contributors <team@tokio.rs>",
+]
+description = """
+Application-level tracing for Rust.
+"""
+homepage = "https://tokio.rs"
+readme = "README.md"
+keywords = [
+ "logging",
+ "tracing",
+ "metrics",
+ "async",
+]
+categories = [
+ "development-tools::debugging",
+ "development-tools::profiling",
+ "asynchronous",
+ "no-std",
+]
+license = "MIT"
+repository = "https://github.com/tokio-rs/tracing"
+
+[package.metadata.docs.rs]
+all-features = true
+rustdoc-args = [
+ "--cfg",
+ "docsrs",
+ "--cfg",
+ "tracing_unstable",
+]
+rustc-args = [
+ "--cfg",
+ "tracing_unstable",
+]
+
+[[bench]]
+name = "baseline"
+harness = false
+
+[[bench]]
+name = "dispatch_get_clone"
+harness = false
+
+[[bench]]
+name = "dispatch_get_ref"
+harness = false
+
+[[bench]]
+name = "empty_span"
+harness = false
+
+[[bench]]
+name = "enter_span"
+harness = false
+
+[[bench]]
+name = "event"
+harness = false
+
+[[bench]]
+name = "span_fields"
+harness = false
+
+[[bench]]
+name = "span_no_fields"
+harness = false
+
+[[bench]]
+name = "span_repeated"
+harness = false
+
+[dependencies.cfg-if]
+version = "1.0.0"
+
+[dependencies.log]
+version = "0.4.17"
+optional = true
+
+[dependencies.pin-project-lite]
+version = "0.2.9"
+
+[dependencies.tracing-attributes]
+version = "0.1.23"
+optional = true
+
+[dependencies.tracing-core]
+version = "0.1.30"
+default-features = false
+
+[dev-dependencies.criterion]
+version = "0.3.6"
+default-features = false
+
+[dev-dependencies.log]
+version = "0.4.17"
+
+[features]
+async-await = []
+attributes = ["tracing-attributes"]
+default = [
+ "std",
+ "attributes",
+]
+log-always = ["log"]
+max_level_debug = []
+max_level_error = []
+max_level_info = []
+max_level_off = []
+max_level_trace = []
+max_level_warn = []
+release_max_level_debug = []
+release_max_level_error = []
+release_max_level_info = []
+release_max_level_off = []
+release_max_level_trace = []
+release_max_level_warn = []
+std = ["tracing-core/std"]
+valuable = ["tracing-core/valuable"]
+
+[target."cfg(target_arch = \"wasm32\")".dev-dependencies.wasm-bindgen-test]
+version = "^0.3"
+
+[badges.maintenance]
+status = "actively-developed"
diff --git a/vendor/tracing-0.1.37/LICENSE b/vendor/tracing-0.1.37/LICENSE
new file mode 100644
index 000000000..cdb28b4b5
--- /dev/null
+++ b/vendor/tracing-0.1.37/LICENSE
@@ -0,0 +1,25 @@
+Copyright (c) 2019 Tokio Contributors
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/vendor/tracing-0.1.37/README.md b/vendor/tracing-0.1.37/README.md
new file mode 100644
index 000000000..694734577
--- /dev/null
+++ b/vendor/tracing-0.1.37/README.md
@@ -0,0 +1,465 @@
+![Tracing — Structured, application-level diagnostics][splash]
+
+[splash]: https://raw.githubusercontent.com/tokio-rs/tracing/master/assets/splash.svg
+
+# tracing
+
+Application-level tracing for Rust.
+
+[![Crates.io][crates-badge]][crates-url]
+[![Documentation][docs-badge]][docs-url]
+[![Documentation (master)][docs-master-badge]][docs-master-url]
+[![MIT licensed][mit-badge]][mit-url]
+[![Build Status][actions-badge]][actions-url]
+[![Discord chat][discord-badge]][discord-url]
+
+[Documentation][docs-url] | [Chat][discord-url]
+
+[crates-badge]: https://img.shields.io/crates/v/tracing.svg
+[crates-url]: https://crates.io/crates/tracing
+[docs-badge]: https://docs.rs/tracing/badge.svg
+[docs-url]: https://docs.rs/tracing
+[docs-master-badge]: https://img.shields.io/badge/docs-master-blue
+[docs-master-url]: https://tracing-rs.netlify.com/tracing
+[mit-badge]: https://img.shields.io/badge/license-MIT-blue.svg
+[mit-url]: LICENSE
+[actions-badge]: https://github.com/tokio-rs/tracing/workflows/CI/badge.svg
+[actions-url]:https://github.com/tokio-rs/tracing/actions?query=workflow%3ACI
+[discord-badge]: https://img.shields.io/discord/500028886025895936?logo=discord&label=discord&logoColor=white
+[discord-url]: https://discord.gg/EeF3cQw
+
+## Overview
+
+`tracing` is a framework for instrumenting Rust programs to collect
+structured, event-based diagnostic information.
+
+In asynchronous systems like Tokio, interpreting traditional log messages can
+often be quite challenging. Since individual tasks are multiplexed on the same
+thread, associated events and log lines are intermixed making it difficult to
+trace the logic flow. `tracing` expands upon logging-style diagnostics by
+allowing libraries and applications to record structured events with additional
+information about *temporality* and *causality* — unlike a log message, a span
+in `tracing` has a beginning and end time, may be entered and exited by the
+flow of execution, and may exist within a nested tree of similar spans. In
+addition, `tracing` spans are *structured*, with the ability to record typed
+data as well as textual messages.
+
+The `tracing` crate provides the APIs necessary for instrumenting libraries
+and applications to emit trace data.
+
+*Compiler support: [requires `rustc` 1.49+][msrv]*
+
+[msrv]: #supported-rust-versions
+
+## Usage
+
+(The examples below are borrowed from the `log` crate's yak-shaving
+[example](https://docs.rs/log/0.4.10/log/index.html#examples), modified to
+idiomatic `tracing`.)
+
+### In Applications
+
+In order to record trace events, executables have to use a `Subscriber`
+implementation compatible with `tracing`. A `Subscriber` implements a way of
+collecting trace data, such as by logging it to standard output. [`tracing_subscriber`](https://docs.rs/tracing-subscriber/)'s
+[`fmt` module](https://docs.rs/tracing-subscriber/0.3/tracing_subscriber/fmt/index.html) provides reasonable defaults.
+Additionally, `tracing-subscriber` is able to consume messages emitted by `log`-instrumented libraries and modules.
+
+The simplest way to use a subscriber is to call the `set_global_default` function.
+
+```rust
+use tracing::{info, Level};
+use tracing_subscriber::FmtSubscriber;
+
+fn main() {
+ // a builder for `FmtSubscriber`.
+ let subscriber = FmtSubscriber::builder()
+ // all spans/events with a level higher than TRACE (e.g, debug, info, warn, etc.)
+ // will be written to stdout.
+ .with_max_level(Level::TRACE)
+ // completes the builder.
+ .finish();
+
+ tracing::subscriber::set_global_default(subscriber)
+ .expect("setting default subscriber failed");
+
+ let number_of_yaks = 3;
+ // this creates a new event, outside of any spans.
+ info!(number_of_yaks, "preparing to shave yaks");
+
+ let number_shaved = yak_shave::shave_all(number_of_yaks);
+ info!(
+ all_yaks_shaved = number_shaved == number_of_yaks,
+ "yak shaving completed."
+ );
+}
+```
+
+```toml
+[dependencies]
+tracing = "0.1"
+tracing-subscriber = "0.2.0"
+```
+
+This subscriber will be used as the default in all threads for the remainder of the duration
+of the program, similar to how loggers work in the `log` crate.
+
+In addition, you can locally override the default subscriber. For example:
+
+```rust
+use tracing::{info, Level};
+use tracing_subscriber::FmtSubscriber;
+
+fn main() {
+ let subscriber = tracing_subscriber::FmtSubscriber::builder()
+ // all spans/events with a level higher than TRACE (e.g, debug, info, warn, etc.)
+ // will be written to stdout.
+ .with_max_level(Level::TRACE)
+ // builds the subscriber.
+ .finish();
+
+ tracing::subscriber::with_default(subscriber, || {
+ info!("This will be logged to stdout");
+ });
+ info!("This will _not_ be logged to stdout");
+}
+```
+
+This approach allows trace data to be collected by multiple subscribers
+within different contexts in the program. Note that the override only applies to the
+currently executing thread; other threads will not see the change from with_default.
+
+Any trace events generated outside the context of a subscriber will not be collected.
+
+Once a subscriber has been set, instrumentation points may be added to the
+executable using the `tracing` crate's macros.
+
+### In Libraries
+
+Libraries should only rely on the `tracing` crate and use the provided macros
+and types to collect whatever information might be useful to downstream consumers.
+
+```rust
+use std::{error::Error, io};
+use tracing::{debug, error, info, span, warn, Level};
+
+// the `#[tracing::instrument]` attribute creates and enters a span
+// every time the instrumented function is called. The span is named after the
+// the function or method. Paramaters passed to the function are recorded as fields.
+#[tracing::instrument]
+pub fn shave(yak: usize) -> Result<(), Box<dyn Error + 'static>> {
+ // this creates an event at the DEBUG level with two fields:
+ // - `excitement`, with the key "excitement" and the value "yay!"
+ // - `message`, with the key "message" and the value "hello! I'm gonna shave a yak."
+ //
+ // unlike other fields, `message`'s shorthand initialization is just the string itself.
+ debug!(excitement = "yay!", "hello! I'm gonna shave a yak.");
+ if yak == 3 {
+ warn!("could not locate yak!");
+ // note that this is intended to demonstrate `tracing`'s features, not idiomatic
+ // error handling! in a library or application, you should consider returning
+ // a dedicated `YakError`. libraries like snafu or thiserror make this easy.
+ return Err(io::Error::new(io::ErrorKind::Other, "shaving yak failed!").into());
+ } else {
+ debug!("yak shaved successfully");
+ }
+ Ok(())
+}
+
+pub fn shave_all(yaks: usize) -> usize {
+ // Constructs a new span named "shaving_yaks" at the TRACE level,
+ // and a field whose key is "yaks". This is equivalent to writing:
+ //
+ // let span = span!(Level::TRACE, "shaving_yaks", yaks = yaks);
+ //
+ // local variables (`yaks`) can be used as field values
+ // without an assignment, similar to struct initializers.
+ let _span_ = span!(Level::TRACE, "shaving_yaks", yaks).entered();
+
+ info!("shaving yaks");
+
+ let mut yaks_shaved = 0;
+ for yak in 1..=yaks {
+ let res = shave(yak);
+ debug!(yak, shaved = res.is_ok());
+
+ if let Err(ref error) = res {
+ // Like spans, events can also use the field initialization shorthand.
+ // In this instance, `yak` is the field being initalized.
+ error!(yak, error = error.as_ref(), "failed to shave yak!");
+ } else {
+ yaks_shaved += 1;
+ }
+ debug!(yaks_shaved);
+ }
+
+ yaks_shaved
+}
+```
+
+```toml
+[dependencies]
+tracing = "0.1"
+```
+
+Note: Libraries should *NOT* call `set_global_default()`, as this will cause
+conflicts when executables try to set the default later.
+
+### In Asynchronous Code
+
+If you are instrumenting code that make use of
+[`std::future::Future`](https://doc.rust-lang.org/stable/std/future/trait.Future.html)
+or async/await, avoid using the `Span::enter` method. The following example
+_will not_ work:
+
+```rust
+async {
+ let _s = span.enter();
+ // ...
+}
+```
+```rust
+async {
+ let _s = tracing::span!(...).entered();
+ // ...
+}
+```
+
+The span guard `_s` will not exit until the future generated by the `async` block is complete.
+Since futures and spans can be entered and exited _multiple_ times without them completing,
+the span remains entered for as long as the future exists, rather than being entered only when
+it is polled, leading to very confusing and incorrect output.
+For more details, see [the documentation on closing spans](https://tracing.rs/tracing/span/index.html#closing-spans).
+
+There are two ways to instrument asynchronous code. The first is through the
+[`Future::instrument`](https://docs.rs/tracing/latest/tracing/trait.Instrument.html#method.instrument) combinator:
+
+```rust
+use tracing::Instrument;
+
+let my_future = async {
+ // ...
+};
+
+my_future
+ .instrument(tracing::info_span!("my_future"))
+ .await
+```
+
+`Future::instrument` attaches a span to the future, ensuring that the span's lifetime
+is as long as the future's.
+
+The second, and preferred, option is through the
+[`#[instrument]`](https://docs.rs/tracing/0.1.37/tracing/attr.instrument.html)
+attribute:
+
+```rust
+use tracing::{info, instrument};
+use tokio::{io::AsyncWriteExt, net::TcpStream};
+use std::io;
+
+#[instrument]
+async fn write(stream: &mut TcpStream) -> io::Result<usize> {
+ let result = stream.write(b"hello world\n").await;
+ info!("wrote to stream; success={:?}", result.is_ok());
+ result
+}
+```
+
+Under the hood, the `#[instrument]` macro performs the same explicit span
+attachment that `Future::instrument` does.
+
+### Concepts
+
+This crate provides macros for creating `Span`s and `Event`s, which represent
+periods of time and momentary events within the execution of a program,
+respectively.
+
+As a rule of thumb, _spans_ should be used to represent discrete units of work
+(e.g., a given request's lifetime in a server) or periods of time spent in a
+given context (e.g., time spent interacting with an instance of an external
+system, such as a database). In contrast, _events_ should be used to represent
+points in time within a span — a request returned with a given status code,
+_n_ new items were taken from a queue, and so on.
+
+`Span`s are constructed using the `span!` macro, and then _entered_
+to indicate that some code takes place within the context of that `Span`:
+
+```rust
+use tracing::{span, Level};
+
+// Construct a new span named "my span".
+let mut span = span!(Level::INFO, "my span");
+span.in_scope(|| {
+ // Any trace events in this closure or code called by it will occur within
+ // the span.
+});
+// Dropping the span will close it, indicating that it has ended.
+```
+
+The [`#[instrument]`](https://docs.rs/tracing/0.1.37/tracing/attr.instrument.html) attribute macro
+can reduce some of this boilerplate:
+
+```rust
+use tracing::{instrument};
+
+#[instrument]
+pub fn my_function(my_arg: usize) {
+ // This event will be recorded inside a span named `my_function` with the
+ // field `my_arg`.
+ tracing::info!("inside my_function!");
+ // ...
+}
+```
+
+The `Event` type represent an event that occurs instantaneously, and is
+essentially a `Span` that cannot be entered. They are created using the `event!`
+macro:
+
+```rust
+use tracing::{event, Level};
+
+event!(Level::INFO, "something has happened!");
+```
+
+Users of the [`log`] crate should note that `tracing` exposes a set of macros for
+creating `Event`s (`trace!`, `debug!`, `info!`, `warn!`, and `error!`) which may
+be invoked with the same syntax as the similarly-named macros from the `log`
+crate. Often, the process of converting a project to use `tracing` can begin
+with a simple drop-in replacement.
+
+## Supported Rust Versions
+
+Tracing is built against the latest stable release. The minimum supported
+version is 1.42. The current Tracing version is not guaranteed to build on Rust
+versions earlier than the minimum supported version.
+
+Tracing follows the same compiler support policies as the rest of the Tokio
+project. The current stable Rust compiler and the three most recent minor
+versions before it will always be supported. For example, if the current stable
+compiler version is 1.45, the minimum supported version will not be increased
+past 1.42, three minor versions prior. Increasing the minimum supported compiler
+version is not considered a semver breaking change as long as doing so complies
+with this policy.
+
+## Ecosystem
+
+### Related Crates
+
+In addition to `tracing` and `tracing-core`, the [`tokio-rs/tracing`] repository
+contains several additional crates designed to be used with the `tracing` ecosystem.
+This includes a collection of `Subscriber` implementations, as well as utility
+and adapter crates to assist in writing `Subscriber`s and instrumenting
+applications.
+
+In particular, the following crates are likely to be of interest:
+
+- [`tracing-futures`] provides a compatibility layer with the `futures`
+ crate, allowing spans to be attached to `Future`s, `Stream`s, and `Executor`s.
+- [`tracing-subscriber`] provides `Subscriber` implementations and
+ utilities for working with `Subscriber`s. This includes a [`FmtSubscriber`]
+ `FmtSubscriber` for logging formatted trace data to stdout, with similar
+ filtering and formatting to the [`env_logger`] crate.
+- [`tracing-log`] provides a compatibility layer with the [`log`] crate,
+ allowing log messages to be recorded as `tracing` `Event`s within the
+ trace tree. This is useful when a project using `tracing` have
+ dependencies which use `log`. Note that if you're using
+ `tracing-subscriber`'s `FmtSubscriber`, you don't need to depend on
+ `tracing-log` directly.
+
+Additionally, there are also several third-party crates which are not
+maintained by the `tokio` project. These include:
+
+- [`tracing-timing`] implements inter-event timing metrics on top of `tracing`.
+ It provides a subscriber that records the time elapsed between pairs of
+ `tracing` events and generates histograms.
+- [`tracing-opentelemetry`] provides a subscriber for emitting traces to
+ [OpenTelemetry]-compatible distributed tracing systems.
+- [`tracing-honeycomb`] Provides a layer that reports traces spanning multiple machines to [honeycomb.io]. Backed by [`tracing-distributed`].
+- [`tracing-distributed`] Provides a generic implementation of a layer that reports traces spanning multiple machines to some backend.
+- [`tracing-actix`] provides `tracing` integration for the `actix` actor
+ framework.
+- [`tracing-gelf`] implements a subscriber for exporting traces in Greylog
+ GELF format.
+- [`tracing-coz`] provides integration with the [coz] causal profiler
+ (Linux-only).
+- [`test-log`] takes care of initializing `tracing` for tests, based on
+ environment variables with an `env_logger` compatible syntax.
+- [`tracing-unwrap`] provides convenience methods to report failed unwraps on `Result` or `Option` types to a `Subscriber`.
+- [`diesel-tracing`] provides integration with [`diesel`] database connections.
+- [`tracing-tracy`] provides a way to collect [Tracy] profiles in instrumented
+ applications.
+- [`tracing-elastic-apm`] provides a layer for reporting traces to [Elastic APM].
+- [`tracing-etw`] provides a layer for emitting Windows [ETW] events.
+- [`tracing-fluent-assertions`] provides a fluent assertions-style testing
+ framework for validating the behavior of `tracing` spans.
+- [`sentry-tracing`] provides a layer for reporting events and traces to [Sentry].
+- [`tracing-loki`] provides a layer for shipping logs to [Grafana Loki].
+- [`tracing-logfmt`] provides a layer that formats events and spans into the logfmt format.
+
+If you're the maintainer of a `tracing` ecosystem crate not listed above,
+please let us know! We'd love to add your project to the list!
+
+[`tracing-timing`]: https://crates.io/crates/tracing-timing
+[`tracing-opentelemetry`]: https://crates.io/crates/tracing-opentelemetry
+[OpenTelemetry]: https://opentelemetry.io/
+[`tracing-honeycomb`]: https://crates.io/crates/tracing-honeycomb
+[`tracing-distributed`]: https://crates.io/crates/tracing-distributed
+[honeycomb.io]: https://www.honeycomb.io/
+[`tracing-actix`]: https://crates.io/crates/tracing-actix
+[`tracing-gelf`]: https://crates.io/crates/tracing-gelf
+[`tracing-coz`]: https://crates.io/crates/tracing-coz
+[coz]: https://github.com/plasma-umass/coz
+[`test-log`]: https://crates.io/crates/test-log
+[`tracing-unwrap`]: https://docs.rs/tracing-unwrap
+[`diesel`]: https://crates.io/crates/diesel
+[`diesel-tracing`]: https://crates.io/crates/diesel-tracing
+[`tracing-tracy`]: https://crates.io/crates/tracing-tracy
+[Tracy]: https://github.com/wolfpld/tracy
+[`tracing-elastic-apm`]: https://crates.io/crates/tracing-elastic-apm
+[Elastic APM]: https://www.elastic.co/apm
+[`tracing-etw`]: https://github.com/microsoft/tracing-etw
+[ETW]: https://docs.microsoft.com/en-us/windows/win32/etw/about-event-tracing
+[`tracing-fluent-assertions`]: https://crates.io/crates/tracing-fluent-assertions
+[`sentry-tracing`]: https://crates.io/crates/sentry-tracing
+[Sentry]: https://sentry.io/welcome/
+[`tracing-loki`]: https://crates.io/crates/tracing-loki
+[Grafana Loki]: https://grafana.com/oss/loki/
+[`tracing-logfmt`]: https://crates.io/crates/tracing-logfmt
+
+**Note:** that some of the ecosystem crates are currently unreleased and
+undergoing active development. They may be less stable than `tracing` and
+`tracing-core`.
+
+[`log`]: https://docs.rs/log/0.4.6/log/
+[`tokio-rs/tracing`]: https://github.com/tokio-rs/tracing
+[`tracing-futures`]: https://github.com/tokio-rs/tracing/tree/master/tracing-futures
+[`tracing-subscriber`]: https://github.com/tokio-rs/tracing/tree/master/tracing-subscriber
+[`tracing-log`]: https://github.com/tokio-rs/tracing/tree/master/tracing-log
+[`env_logger`]: https://crates.io/crates/env_logger
+[`FmtSubscriber`]: https://docs.rs/tracing-subscriber/latest/tracing_subscriber/fmt/struct.Subscriber.html
+[`examples`]: https://github.com/tokio-rs/tracing/tree/master/examples
+
+## Supported Rust Versions
+
+Tracing is built against the latest stable release. The minimum supported
+version is 1.49. The current Tracing version is not guaranteed to build on Rust
+versions earlier than the minimum supported version.
+
+Tracing follows the same compiler support policies as the rest of the Tokio
+project. The current stable Rust compiler and the three most recent minor
+versions before it will always be supported. For example, if the current stable
+compiler version is 1.45, the minimum supported version will not be increased
+past 1.42, three minor versions prior. Increasing the minimum supported compiler
+version is not considered a semver breaking change as long as doing so complies
+with this policy.
+
+## License
+
+This project is licensed under the [MIT license](LICENSE).
+
+### Contribution
+
+Unless you explicitly state otherwise, any contribution intentionally submitted
+for inclusion in Tokio by you, shall be licensed as MIT, without any additional
+terms or conditions.
diff --git a/vendor/tracing-0.1.37/benches/baseline.rs b/vendor/tracing-0.1.37/benches/baseline.rs
new file mode 100644
index 000000000..93c14f422
--- /dev/null
+++ b/vendor/tracing-0.1.37/benches/baseline.rs
@@ -0,0 +1,24 @@
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+
+fn bench(c: &mut Criterion) {
+ use std::sync::atomic::{AtomicUsize, Ordering};
+
+ let mut group = c.benchmark_group("comparison");
+ group.bench_function("relaxed_load", |b| {
+ let foo = AtomicUsize::new(1);
+ b.iter(|| black_box(foo.load(Ordering::Relaxed)));
+ });
+ group.bench_function("acquire_load", |b| {
+ let foo = AtomicUsize::new(1);
+ b.iter(|| black_box(foo.load(Ordering::Acquire)))
+ });
+ group.bench_function("log", |b| {
+ b.iter(|| {
+ log::log!(log::Level::Info, "log");
+ })
+ });
+ group.finish();
+}
+
+criterion_group!(benches, bench);
+criterion_main!(benches);
diff --git a/vendor/tracing-0.1.37/benches/dispatch_get_clone.rs b/vendor/tracing-0.1.37/benches/dispatch_get_clone.rs
new file mode 100644
index 000000000..15577c696
--- /dev/null
+++ b/vendor/tracing-0.1.37/benches/dispatch_get_clone.rs
@@ -0,0 +1,15 @@
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+
+mod shared;
+
+fn bench(c: &mut Criterion) {
+ shared::for_all_dispatches(&mut c.benchmark_group("Dispatch::get_clone"), |b| {
+ b.iter(|| {
+ let current = tracing::dispatcher::get_default(|current| current.clone());
+ black_box(current);
+ })
+ });
+}
+
+criterion_group!(benches, bench);
+criterion_main!(benches);
diff --git a/vendor/tracing-0.1.37/benches/dispatch_get_ref.rs b/vendor/tracing-0.1.37/benches/dispatch_get_ref.rs
new file mode 100644
index 000000000..a59c34379
--- /dev/null
+++ b/vendor/tracing-0.1.37/benches/dispatch_get_ref.rs
@@ -0,0 +1,16 @@
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+
+mod shared;
+
+fn bench(c: &mut Criterion) {
+ shared::for_all_dispatches(&mut c.benchmark_group("Dispatch::get_ref"), |b| {
+ b.iter(|| {
+ tracing::dispatcher::get_default(|current| {
+ black_box(&current);
+ })
+ })
+ });
+}
+
+criterion_group!(benches, bench);
+criterion_main!(benches);
diff --git a/vendor/tracing-0.1.37/benches/empty_span.rs b/vendor/tracing-0.1.37/benches/empty_span.rs
new file mode 100644
index 000000000..fb38b08e1
--- /dev/null
+++ b/vendor/tracing-0.1.37/benches/empty_span.rs
@@ -0,0 +1,43 @@
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+
+mod shared;
+
+fn bench(c: &mut Criterion) {
+ let mut group = c.benchmark_group("empty_span");
+ shared::for_all_dispatches(&mut group, |b| {
+ b.iter(|| {
+ let span = tracing::span::Span::none();
+ black_box(&span);
+ })
+ });
+ group.bench_function("baseline_struct", |b| {
+ b.iter(|| {
+ let span = FakeEmptySpan::new();
+ black_box(&span);
+ })
+ });
+}
+
+struct FakeEmptySpan {
+ inner: Option<(usize, std::sync::Arc<()>)>,
+ meta: Option<&'static ()>,
+}
+
+impl FakeEmptySpan {
+ fn new() -> Self {
+ Self {
+ inner: None,
+ meta: None,
+ }
+ }
+}
+
+impl Drop for FakeEmptySpan {
+ fn drop(&mut self) {
+ black_box(&self.inner);
+ black_box(&self.meta);
+ }
+}
+
+criterion_group!(benches, bench);
+criterion_main!(benches);
diff --git a/vendor/tracing-0.1.37/benches/enter_span.rs b/vendor/tracing-0.1.37/benches/enter_span.rs
new file mode 100644
index 000000000..757350a53
--- /dev/null
+++ b/vendor/tracing-0.1.37/benches/enter_span.rs
@@ -0,0 +1,16 @@
+use criterion::{criterion_group, criterion_main, Criterion};
+use tracing::{span, Level};
+
+mod shared;
+
+fn bench(c: &mut Criterion) {
+ shared::for_all_dispatches(&mut c.benchmark_group("enter_span"), |b| {
+ let span = span!(Level::TRACE, "span");
+ b.iter(|| {
+ let _span = span.enter();
+ })
+ });
+}
+
+criterion_group!(benches, bench);
+criterion_main!(benches);
diff --git a/vendor/tracing-0.1.37/benches/event.rs b/vendor/tracing-0.1.37/benches/event.rs
new file mode 100644
index 000000000..164932548
--- /dev/null
+++ b/vendor/tracing-0.1.37/benches/event.rs
@@ -0,0 +1,12 @@
+use criterion::{criterion_group, criterion_main, Criterion};
+
+mod shared;
+
+fn bench(c: &mut Criterion) {
+ shared::for_all_recording(&mut c.benchmark_group("event"), |b| {
+ b.iter(|| tracing::info!("hello world!"))
+ });
+}
+
+criterion_group!(benches, bench);
+criterion_main!(benches);
diff --git a/vendor/tracing-0.1.37/benches/shared.rs b/vendor/tracing-0.1.37/benches/shared.rs
new file mode 100644
index 000000000..56508c4ab
--- /dev/null
+++ b/vendor/tracing-0.1.37/benches/shared.rs
@@ -0,0 +1,160 @@
+#![allow(dead_code)]
+use criterion::{black_box, measurement::WallTime, Bencher};
+use tracing::{field, span, Event, Id, Metadata};
+
+use std::{
+ fmt::{self, Write},
+ sync::{Mutex, MutexGuard},
+};
+
+pub fn for_all_recording(
+ group: &mut criterion::BenchmarkGroup<'_, WallTime>,
+ mut iter: impl FnMut(&mut Bencher<'_, WallTime>),
+) {
+ // first, run benchmarks with no subscriber
+ group.bench_function("none", &mut iter);
+
+ // then, run benchmarks with a scoped default subscriber
+ tracing::subscriber::with_default(EnabledSubscriber, || {
+ group.bench_function("scoped", &mut iter)
+ });
+
+ let subscriber = VisitingSubscriber(Mutex::new(String::from("")));
+ tracing::subscriber::with_default(subscriber, || {
+ group.bench_function("scoped_recording", &mut iter);
+ });
+
+ // finally, set a global default subscriber, and run the benchmarks again.
+ tracing::subscriber::set_global_default(EnabledSubscriber)
+ .expect("global default should not have already been set!");
+ let _ = log::set_logger(&NOP_LOGGER);
+ log::set_max_level(log::LevelFilter::Trace);
+ group.bench_function("global", &mut iter);
+}
+
+pub fn for_all_dispatches(
+ group: &mut criterion::BenchmarkGroup<'_, WallTime>,
+ mut iter: impl FnMut(&mut Bencher<'_, WallTime>),
+) {
+ // first, run benchmarks with no subscriber
+ group.bench_function("none", &mut iter);
+
+ // then, run benchmarks with a scoped default subscriber
+ tracing::subscriber::with_default(EnabledSubscriber, || {
+ group.bench_function("scoped", &mut iter)
+ });
+
+ // finally, set a global default subscriber, and run the benchmarks again.
+ tracing::subscriber::set_global_default(EnabledSubscriber)
+ .expect("global default should not have already been set!");
+ let _ = log::set_logger(&NOP_LOGGER);
+ log::set_max_level(log::LevelFilter::Trace);
+ group.bench_function("global", &mut iter);
+}
+
+const NOP_LOGGER: NopLogger = NopLogger;
+
+struct NopLogger;
+
+impl log::Log for NopLogger {
+ fn enabled(&self, _metadata: &log::Metadata) -> bool {
+ true
+ }
+
+ fn log(&self, record: &log::Record) {
+ if self.enabled(record.metadata()) {
+ let mut this = self;
+ let _ = write!(this, "{}", record.args());
+ }
+ }
+
+ fn flush(&self) {}
+}
+
+impl Write for &NopLogger {
+ fn write_str(&mut self, s: &str) -> std::fmt::Result {
+ black_box(s);
+ Ok(())
+ }
+}
+
+/// Simulates a subscriber that records span data.
+struct VisitingSubscriber(Mutex<String>);
+
+struct Visitor<'a>(MutexGuard<'a, String>);
+
+impl<'a> field::Visit for Visitor<'a> {
+ fn record_debug(&mut self, _field: &field::Field, value: &dyn fmt::Debug) {
+ let _ = write!(&mut *self.0, "{:?}", value);
+ }
+}
+
+impl tracing::Subscriber for VisitingSubscriber {
+ fn new_span(&self, span: &span::Attributes<'_>) -> Id {
+ let mut visitor = Visitor(self.0.lock().unwrap());
+ span.record(&mut visitor);
+ Id::from_u64(0xDEAD_FACE)
+ }
+
+ fn record(&self, _span: &Id, values: &span::Record<'_>) {
+ let mut visitor = Visitor(self.0.lock().unwrap());
+ values.record(&mut visitor);
+ }
+
+ fn event(&self, event: &Event<'_>) {
+ let mut visitor = Visitor(self.0.lock().unwrap());
+ event.record(&mut visitor);
+ }
+
+ fn record_follows_from(&self, span: &Id, follows: &Id) {
+ let _ = (span, follows);
+ }
+
+ fn enabled(&self, metadata: &Metadata<'_>) -> bool {
+ let _ = metadata;
+ true
+ }
+
+ fn enter(&self, span: &Id) {
+ let _ = span;
+ }
+
+ fn exit(&self, span: &Id) {
+ let _ = span;
+ }
+}
+
+/// A subscriber that is enabled but otherwise does nothing.
+struct EnabledSubscriber;
+
+impl tracing::Subscriber for EnabledSubscriber {
+ fn new_span(&self, span: &span::Attributes<'_>) -> Id {
+ let _ = span;
+ Id::from_u64(0xDEAD_FACE)
+ }
+
+ fn event(&self, event: &Event<'_>) {
+ let _ = event;
+ }
+
+ fn record(&self, span: &Id, values: &span::Record<'_>) {
+ let _ = (span, values);
+ }
+
+ fn record_follows_from(&self, span: &Id, follows: &Id) {
+ let _ = (span, follows);
+ }
+
+ fn enabled(&self, metadata: &Metadata<'_>) -> bool {
+ let _ = metadata;
+ true
+ }
+
+ fn enter(&self, span: &Id) {
+ let _ = span;
+ }
+
+ fn exit(&self, span: &Id) {
+ let _ = span;
+ }
+}
diff --git a/vendor/tracing-0.1.37/benches/span_fields.rs b/vendor/tracing-0.1.37/benches/span_fields.rs
new file mode 100644
index 000000000..5ad828982
--- /dev/null
+++ b/vendor/tracing-0.1.37/benches/span_fields.rs
@@ -0,0 +1,23 @@
+use criterion::{criterion_group, criterion_main, Criterion};
+use tracing::{span, Level};
+
+mod shared;
+
+fn bench(c: &mut Criterion) {
+ shared::for_all_recording(&mut c.benchmark_group("span_fields"), |b| {
+ b.iter(|| {
+ let span = span!(
+ Level::TRACE,
+ "span",
+ foo = "foo",
+ bar = "bar",
+ baz = 3,
+ quuux = tracing::field::debug(0.99)
+ );
+ criterion::black_box(span)
+ })
+ });
+}
+
+criterion_group!(benches, bench);
+criterion_main!(benches);
diff --git a/vendor/tracing-0.1.37/benches/span_no_fields.rs b/vendor/tracing-0.1.37/benches/span_no_fields.rs
new file mode 100644
index 000000000..8a1ff6e04
--- /dev/null
+++ b/vendor/tracing-0.1.37/benches/span_no_fields.rs
@@ -0,0 +1,13 @@
+use criterion::{criterion_group, criterion_main, Criterion};
+use tracing::{span, Level};
+
+mod shared;
+
+fn bench(c: &mut Criterion) {
+ shared::for_all_recording(&mut c.benchmark_group("span_no_fields"), |b| {
+ b.iter(|| span!(Level::TRACE, "span"))
+ });
+}
+
+criterion_group!(benches, bench);
+criterion_main!(benches);
diff --git a/vendor/tracing-0.1.37/benches/span_repeated.rs b/vendor/tracing-0.1.37/benches/span_repeated.rs
new file mode 100644
index 000000000..4c6ac409d
--- /dev/null
+++ b/vendor/tracing-0.1.37/benches/span_repeated.rs
@@ -0,0 +1,20 @@
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+use tracing::{span, Level};
+
+mod shared;
+
+fn bench(c: &mut Criterion) {
+ shared::for_all_recording(&mut c.benchmark_group("span_repeated"), |b| {
+ let n = black_box(N_SPANS);
+ b.iter(|| (0..n).fold(mk_span(0), |_, i| mk_span(i as u64)))
+ });
+}
+
+#[inline]
+fn mk_span(i: u64) -> tracing::Span {
+ span!(Level::TRACE, "span", i = i)
+}
+
+const N_SPANS: usize = 100;
+criterion_group!(benches, bench);
+criterion_main!(benches);
diff --git a/vendor/tracing-0.1.37/src/dispatcher.rs b/vendor/tracing-0.1.37/src/dispatcher.rs
new file mode 100644
index 000000000..a84b99f4e
--- /dev/null
+++ b/vendor/tracing-0.1.37/src/dispatcher.rs
@@ -0,0 +1,145 @@
+//! Dispatches trace events to [`Subscriber`]s.
+//!
+//! The _dispatcher_ is the component of the tracing system which is responsible
+//! for forwarding trace data from the instrumentation points that generate it
+//! to the subscriber that collects it.
+//!
+//! # Using the Trace Dispatcher
+//!
+//! Every thread in a program using `tracing` has a _default subscriber_. When
+//! events occur, or spans are created, they are dispatched to the thread's
+//! current subscriber.
+//!
+//! ## Setting the Default Subscriber
+//!
+//! By default, the current subscriber is an empty implementation that does
+//! nothing. To use a subscriber implementation, it must be set as the default.
+//! There are two methods for doing so: [`with_default`] and
+//! [`set_global_default`]. `with_default` sets the default subscriber for the
+//! duration of a scope, while `set_global_default` sets a default subscriber
+//! for the entire process.
+//!
+//! To use either of these functions, we must first wrap our subscriber in a
+//! [`Dispatch`], a cloneable, type-erased reference to a subscriber. For
+//! example:
+//! ```rust
+//! # pub struct FooSubscriber;
+//! # use tracing_core::{
+//! # dispatcher, Event, Metadata,
+//! # span::{Attributes, Id, Record}
+//! # };
+//! # impl tracing_core::Subscriber for FooSubscriber {
+//! # fn new_span(&self, _: &Attributes) -> Id { Id::from_u64(0) }
+//! # fn record(&self, _: &Id, _: &Record) {}
+//! # fn event(&self, _: &Event) {}
+//! # fn record_follows_from(&self, _: &Id, _: &Id) {}
+//! # fn enabled(&self, _: &Metadata) -> bool { false }
+//! # fn enter(&self, _: &Id) {}
+//! # fn exit(&self, _: &Id) {}
+//! # }
+//! # impl FooSubscriber { fn new() -> Self { FooSubscriber } }
+//! use dispatcher::Dispatch;
+//!
+//! let my_subscriber = FooSubscriber::new();
+//! let my_dispatch = Dispatch::new(my_subscriber);
+//! ```
+//! Then, we can use [`with_default`] to set our `Dispatch` as the default for
+//! the duration of a block:
+//! ```rust
+//! # pub struct FooSubscriber;
+//! # use tracing_core::{
+//! # dispatcher, Event, Metadata,
+//! # span::{Attributes, Id, Record}
+//! # };
+//! # impl tracing_core::Subscriber for FooSubscriber {
+//! # fn new_span(&self, _: &Attributes) -> Id { Id::from_u64(0) }
+//! # fn record(&self, _: &Id, _: &Record) {}
+//! # fn event(&self, _: &Event) {}
+//! # fn record_follows_from(&self, _: &Id, _: &Id) {}
+//! # fn enabled(&self, _: &Metadata) -> bool { false }
+//! # fn enter(&self, _: &Id) {}
+//! # fn exit(&self, _: &Id) {}
+//! # }
+//! # impl FooSubscriber { fn new() -> Self { FooSubscriber } }
+//! # let my_subscriber = FooSubscriber::new();
+//! # let my_dispatch = dispatcher::Dispatch::new(my_subscriber);
+//! // no default subscriber
+//!
+//! # #[cfg(feature = "std")]
+//! dispatcher::with_default(&my_dispatch, || {
+//! // my_subscriber is the default
+//! });
+//!
+//! // no default subscriber again
+//! ```
+//! It's important to note that `with_default` will not propagate the current
+//! thread's default subscriber to any threads spawned within the `with_default`
+//! block. To propagate the default subscriber to new threads, either use
+//! `with_default` from the new thread, or use `set_global_default`.
+//!
+//! As an alternative to `with_default`, we can use [`set_global_default`] to
+//! set a `Dispatch` as the default for all threads, for the lifetime of the
+//! program. For example:
+//! ```rust
+//! # pub struct FooSubscriber;
+//! # use tracing_core::{
+//! # dispatcher, Event, Metadata,
+//! # span::{Attributes, Id, Record}
+//! # };
+//! # impl tracing_core::Subscriber for FooSubscriber {
+//! # fn new_span(&self, _: &Attributes) -> Id { Id::from_u64(0) }
+//! # fn record(&self, _: &Id, _: &Record) {}
+//! # fn event(&self, _: &Event) {}
+//! # fn record_follows_from(&self, _: &Id, _: &Id) {}
+//! # fn enabled(&self, _: &Metadata) -> bool { false }
+//! # fn enter(&self, _: &Id) {}
+//! # fn exit(&self, _: &Id) {}
+//! # }
+//! # impl FooSubscriber { fn new() -> Self { FooSubscriber } }
+//! # let my_subscriber = FooSubscriber::new();
+//! # let my_dispatch = dispatcher::Dispatch::new(my_subscriber);
+//! // no default subscriber
+//!
+//! dispatcher::set_global_default(my_dispatch)
+//! // `set_global_default` will return an error if the global default
+//! // subscriber has already been set.
+//! .expect("global default was already set!");
+//!
+//! // `my_subscriber` is now the default
+//! ```
+//!
+//! <pre class="ignore" style="white-space:normal;font:inherit;">
+//! <strong>Note</strong>: The thread-local scoped dispatcher (<code>with_default</code>)
+//! requires the Rust standard library. <code>no_std</code> users should
+//! use <a href="fn.set_global_default.html"><code>set_global_default</code></a>
+//! instead.
+//! </pre>
+//!
+//! ## Accessing the Default Subscriber
+//!
+//! A thread's current default subscriber can be accessed using the
+//! [`get_default`] function, which executes a closure with a reference to the
+//! currently default `Dispatch`. This is used primarily by `tracing`
+//! instrumentation.
+//!
+//! [`Subscriber`]: crate::Subscriber
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub use tracing_core::dispatcher::set_default;
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub use tracing_core::dispatcher::with_default;
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub use tracing_core::dispatcher::DefaultGuard;
+pub use tracing_core::dispatcher::{
+ get_default, set_global_default, Dispatch, SetGlobalDefaultError, WeakDispatch,
+};
+
+/// Private API for internal use by tracing's macros.
+///
+/// This function is *not* considered part of `tracing`'s public API, and has no
+/// stability guarantees. If you use it, and it breaks or disappears entirely,
+/// don't say we didn;'t warn you.
+#[doc(hidden)]
+pub use tracing_core::dispatcher::has_been_set;
diff --git a/vendor/tracing-0.1.37/src/field.rs b/vendor/tracing-0.1.37/src/field.rs
new file mode 100644
index 000000000..b3f9fbdfc
--- /dev/null
+++ b/vendor/tracing-0.1.37/src/field.rs
@@ -0,0 +1,170 @@
+//! `Span` and `Event` key-value data.
+//!
+//! Spans and events may be annotated with key-value data, referred to as known
+//! as _fields_. These fields consist of a mapping from a key (corresponding to
+//! a `&str` but represented internally as an array index) to a [`Value`].
+//!
+//! # `Value`s and `Subscriber`s
+//!
+//! `Subscriber`s consume `Value`s as fields attached to [span]s or [`Event`]s.
+//! The set of field keys on a given span or is defined on its [`Metadata`].
+//! When a span is created, it provides [`Attributes`] to the `Subscriber`'s
+//! [`new_span`] method, containing any fields whose values were provided when
+//! the span was created; and may call the `Subscriber`'s [`record`] method
+//! with additional [`Record`]s if values are added for more of its fields.
+//! Similarly, the [`Event`] type passed to the subscriber's [`event`] method
+//! will contain any fields attached to each event.
+//!
+//! `tracing` represents values as either one of a set of Rust primitives
+//! (`i64`, `u64`, `f64`, `bool`, and `&str`) or using a `fmt::Display` or
+//! `fmt::Debug` implementation. `Subscriber`s are provided these primitive
+//! value types as `dyn Value` trait objects.
+//!
+//! These trait objects can be formatted using `fmt::Debug`, but may also be
+//! recorded as typed data by calling the [`Value::record`] method on these
+//! trait objects with a _visitor_ implementing the [`Visit`] trait. This trait
+//! represents the behavior used to record values of various types. For example,
+//! an implementation of `Visit` might record integers by incrementing counters
+//! for their field names rather than printing them.
+//!
+//!
+//! # Using `valuable`
+//!
+//! `tracing`'s [`Value`] trait is intentionally minimalist: it supports only a small
+//! number of Rust primitives as typed values, and only permits recording
+//! user-defined types with their [`fmt::Debug`] or [`fmt::Display`]
+//! implementations. However, there are some cases where it may be useful to record
+//! nested values (such as arrays, `Vec`s, or `HashMap`s containing values), or
+//! user-defined `struct` and `enum` types without having to format them as
+//! unstructured text.
+//!
+//! To address `Value`'s limitations, `tracing` offers experimental support for
+//! the [`valuable`] crate, which provides object-safe inspection of structured
+//! values. User-defined types can implement the [`valuable::Valuable`] trait,
+//! and be recorded as a `tracing` field by calling their [`as_value`] method.
+//! If the [`Subscriber`] also supports the `valuable` crate, it can
+//! then visit those types fields as structured values using `valuable`.
+//!
+//! <pre class="ignore" style="white-space:normal;font:inherit;">
+//! <strong>Note</strong>: <code>valuable</code> support is an
+//! <a href = "../index.html#unstable-features">unstable feature</a>. See
+//! the documentation on unstable features for details on how to enable it.
+//! </pre>
+//!
+//! For example:
+//! ```ignore
+//! // Derive `Valuable` for our types:
+//! use valuable::Valuable;
+//!
+//! #[derive(Clone, Debug, Valuable)]
+//! struct User {
+//! name: String,
+//! age: u32,
+//! address: Address,
+//! }
+//!
+//! #[derive(Clone, Debug, Valuable)]
+//! struct Address {
+//! country: String,
+//! city: String,
+//! street: String,
+//! }
+//!
+//! let user = User {
+//! name: "Arwen Undomiel".to_string(),
+//! age: 3000,
+//! address: Address {
+//! country: "Middle Earth".to_string(),
+//! city: "Rivendell".to_string(),
+//! street: "leafy lane".to_string(),
+//! },
+//! };
+//!
+//! // Recording `user` as a `valuable::Value` will allow the `tracing` subscriber
+//! // to traverse its fields as a nested, typed structure:
+//! tracing::info!(current_user = user.as_value());
+//! ```
+//!
+//! Alternatively, the [`valuable()`] function may be used to convert a type
+//! implementing [`Valuable`] into a `tracing` field value.
+//!
+//! When the `valuable` feature is enabled, the [`Visit`] trait will include an
+//! optional [`record_value`] method. `Visit` implementations that wish to
+//! record `valuable` values can implement this method with custom behavior.
+//! If a visitor does not implement `record_value`, the [`valuable::Value`] will
+//! be forwarded to the visitor's [`record_debug`] method.
+//!
+//! [`fmt::Debug`]: std::fmt::Debug
+//! [`fmt::Display`]: std::fmt::Debug
+//! [`valuable`]: https://crates.io/crates/valuable
+//! [`valuable::Valuable`]: https://docs.rs/valuable/latest/valuable/trait.Valuable.html
+//! [`as_value`]: https://docs.rs/valuable/latest/valuable/trait.Valuable.html#tymethod.as_value
+//! [`valuable::Value`]: https://docs.rs/valuable/latest/valuable/enum.Value.html
+//! [`Subscriber`]: crate::Subscriber
+//! [`record_value`]: Visit::record_value
+//! [`record_debug`]: Visit::record_debug
+//! [span]: mod@crate::span
+//! [`Event`]: crate::event::Event
+//! [`Metadata`]: crate::Metadata
+//! [`Attributes`]: crate::span::Attributes
+//! [`Record`]: crate::span::Record
+//! [`new_span`]: crate::Subscriber::new_span
+//! [`record`]: crate::Subscriber::record
+//! [`event`]: crate::Subscriber::event
+pub use tracing_core::field::*;
+
+use crate::Metadata;
+
+/// Trait implemented to allow a type to be used as a field key.
+///
+/// <pre class="ignore" style="white-space:normal;font:inherit;">
+/// <strong>Note</strong>: Although this is implemented for both the
+/// <a href="./struct.Field.html"><code>Field</code></a> type <em>and</em> any
+/// type that can be borrowed as an <code>&str</code>, only <code>Field</code>
+/// allows <em>O</em>(1) access.
+/// Indexing a field with a string results in an iterative search that performs
+/// string comparisons. Thus, if possible, once the key for a field is known, it
+/// should be used whenever possible.
+/// </pre>
+pub trait AsField: crate::sealed::Sealed {
+ /// Attempts to convert `&self` into a `Field` with the specified `metadata`.
+ ///
+ /// If `metadata` defines this field, then the field is returned. Otherwise,
+ /// this returns `None`.
+ fn as_field(&self, metadata: &Metadata<'_>) -> Option<Field>;
+}
+
+// ===== impl AsField =====
+
+impl AsField for Field {
+ #[inline]
+ fn as_field(&self, metadata: &Metadata<'_>) -> Option<Field> {
+ if self.callsite() == metadata.callsite() {
+ Some(self.clone())
+ } else {
+ None
+ }
+ }
+}
+
+impl<'a> AsField for &'a Field {
+ #[inline]
+ fn as_field(&self, metadata: &Metadata<'_>) -> Option<Field> {
+ if self.callsite() == metadata.callsite() {
+ Some((*self).clone())
+ } else {
+ None
+ }
+ }
+}
+
+impl AsField for str {
+ #[inline]
+ fn as_field(&self, metadata: &Metadata<'_>) -> Option<Field> {
+ metadata.fields().field(&self)
+ }
+}
+
+impl crate::sealed::Sealed for Field {}
+impl<'a> crate::sealed::Sealed for &'a Field {}
+impl crate::sealed::Sealed for str {}
diff --git a/vendor/tracing-0.1.37/src/instrument.rs b/vendor/tracing-0.1.37/src/instrument.rs
new file mode 100644
index 000000000..46e5f579c
--- /dev/null
+++ b/vendor/tracing-0.1.37/src/instrument.rs
@@ -0,0 +1,370 @@
+use crate::stdlib::pin::Pin;
+use crate::stdlib::task::{Context, Poll};
+use crate::stdlib::{future::Future, marker::Sized};
+use crate::{
+ dispatcher::{self, Dispatch},
+ span::Span,
+};
+use pin_project_lite::pin_project;
+
+/// Attaches spans to a [`std::future::Future`].
+///
+/// Extension trait allowing futures to be
+/// instrumented with a `tracing` [span].
+///
+/// [span]: super::Span
+pub trait Instrument: Sized {
+ /// Instruments this type with the provided [`Span`], returning an
+ /// `Instrumented` wrapper.
+ ///
+ /// The attached [`Span`] will be [entered] every time the instrumented
+ /// [`Future`] is polled.
+ ///
+ /// # Examples
+ ///
+ /// Instrumenting a future:
+ ///
+ /// ```rust
+ /// use tracing::Instrument;
+ ///
+ /// # async fn doc() {
+ /// let my_future = async {
+ /// // ...
+ /// };
+ ///
+ /// my_future
+ /// .instrument(tracing::info_span!("my_future"))
+ /// .await
+ /// # }
+ /// ```
+ ///
+ /// The [`Span::or_current`] combinator can be used in combination with
+ /// `instrument` to ensure that the [current span] is attached to the
+ /// future if the span passed to `instrument` is [disabled]:
+ ///
+ /// ```
+ /// use tracing::Instrument;
+ /// # mod tokio {
+ /// # pub(super) fn spawn(_: impl std::future::Future) {}
+ /// # }
+ ///
+ /// let my_future = async {
+ /// // ...
+ /// };
+ ///
+ /// let outer_span = tracing::info_span!("outer").entered();
+ ///
+ /// // If the "my_future" span is enabled, then the spawned task will
+ /// // be within both "my_future" *and* "outer", since "outer" is
+ /// // "my_future"'s parent. However, if "my_future" is disabled,
+ /// // the spawned task will *not* be in any span.
+ /// tokio::spawn(
+ /// my_future
+ /// .instrument(tracing::debug_span!("my_future"))
+ /// );
+ ///
+ /// // Using `Span::or_current` ensures the spawned task is instrumented
+ /// // with the current span, if the new span passed to `instrument` is
+ /// // not enabled. This means that if the "my_future" span is disabled,
+ /// // the spawned task will still be instrumented with the "outer" span:
+ /// # let my_future = async {};
+ /// tokio::spawn(
+ /// my_future
+ /// .instrument(tracing::debug_span!("my_future").or_current())
+ /// );
+ /// ```
+ ///
+ /// [entered]: super::Span::enter()
+ /// [`Span::or_current`]: super::Span::or_current()
+ /// [current span]: super::Span::current()
+ /// [disabled]: super::Span::is_disabled()
+ /// [`Future`]: std::future::Future
+ fn instrument(self, span: Span) -> Instrumented<Self> {
+ Instrumented { inner: self, span }
+ }
+
+ /// Instruments this type with the [current] [`Span`], returning an
+ /// `Instrumented` wrapper.
+ ///
+ /// The attached [`Span`] will be [entered] every time the instrumented
+ /// [`Future`] is polled.
+ ///
+ /// This can be used to propagate the current span when spawning a new future.
+ ///
+ /// # Examples
+ ///
+ /// ```rust
+ /// use tracing::Instrument;
+ ///
+ /// # mod tokio {
+ /// # pub(super) fn spawn(_: impl std::future::Future) {}
+ /// # }
+ /// # async fn doc() {
+ /// let span = tracing::info_span!("my_span");
+ /// let _enter = span.enter();
+ ///
+ /// // ...
+ ///
+ /// let future = async {
+ /// tracing::debug!("this event will occur inside `my_span`");
+ /// // ...
+ /// };
+ /// tokio::spawn(future.in_current_span());
+ /// # }
+ /// ```
+ ///
+ /// [current]: super::Span::current()
+ /// [entered]: super::Span::enter()
+ /// [`Span`]: crate::Span
+ /// [`Future`]: std::future::Future
+ #[inline]
+ fn in_current_span(self) -> Instrumented<Self> {
+ self.instrument(Span::current())
+ }
+}
+
+/// Extension trait allowing futures to be instrumented with
+/// a `tracing` [`Subscriber`](crate::Subscriber).
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub trait WithSubscriber: Sized {
+ /// Attaches the provided [`Subscriber`] to this type, returning a
+ /// [`WithDispatch`] wrapper.
+ ///
+ /// The attached [`Subscriber`] will be set as the [default] when the returned
+ /// [`Future`] is polled.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use tracing::subscriber::NoSubscriber as MySubscriber;
+ /// # use tracing::subscriber::NoSubscriber as MyOtherSubscriber;
+ /// # async fn docs() {
+ /// use tracing::instrument::WithSubscriber;
+ ///
+ /// // Set the default `Subscriber`
+ /// let _default = tracing::subscriber::set_default(MySubscriber::default());
+ ///
+ /// tracing::info!("this event will be recorded by the default `Subscriber`");
+ ///
+ /// // Create a different `Subscriber` and attach it to a future.
+ /// let other_subscriber = MyOtherSubscriber::default();
+ /// let future = async {
+ /// tracing::info!("this event will be recorded by the other `Subscriber`");
+ /// // ...
+ /// };
+ ///
+ /// future
+ /// // Attach the other `Subscriber` to the future before awaiting it
+ /// .with_subscriber(other_subscriber)
+ /// .await;
+ ///
+ /// // Once the future has completed, we return to the default `Subscriber`.
+ /// tracing::info!("this event will be recorded by the default `Subscriber`");
+ /// # }
+ /// ```
+ ///
+ /// [`Subscriber`]: super::Subscriber
+ /// [default]: crate::dispatcher#setting-the-default-subscriber
+ /// [`Future`]: std::future::Future
+ fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
+ where
+ S: Into<Dispatch>,
+ {
+ WithDispatch {
+ inner: self,
+ dispatcher: subscriber.into(),
+ }
+ }
+
+ /// Attaches the current [default] [`Subscriber`] to this type, returning a
+ /// [`WithDispatch`] wrapper.
+ ///
+ /// The attached `Subscriber` will be set as the [default] when the returned
+ /// [`Future`] is polled.
+ ///
+ /// This can be used to propagate the current dispatcher context when
+ /// spawning a new future that may run on a different thread.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # mod tokio {
+ /// # pub(super) fn spawn(_: impl std::future::Future) {}
+ /// # }
+ /// # use tracing::subscriber::NoSubscriber as MySubscriber;
+ /// # async fn docs() {
+ /// use tracing::instrument::WithSubscriber;
+ ///
+ /// // Using `set_default` (rather than `set_global_default`) sets the
+ /// // default `Subscriber` for *this* thread only.
+ /// let _default = tracing::subscriber::set_default(MySubscriber::default());
+ ///
+ /// let future = async {
+ /// // ...
+ /// };
+ ///
+ /// // If a multi-threaded async runtime is in use, this spawned task may
+ /// // run on a different thread, in a different default `Subscriber`'s context.
+ /// tokio::spawn(future);
+ ///
+ /// // However, calling `with_current_subscriber` on the future before
+ /// // spawning it, ensures that the current thread's default `Subscriber` is
+ /// // propagated to the spawned task, regardless of where it executes:
+ /// # let future = async { };
+ /// tokio::spawn(future.with_current_subscriber());
+ /// # }
+ /// ```
+ /// [`Subscriber`]: super::Subscriber
+ /// [default]: crate::dispatcher#setting-the-default-subscriber
+ /// [`Future`]: std::future::Future
+ #[inline]
+ fn with_current_subscriber(self) -> WithDispatch<Self> {
+ WithDispatch {
+ inner: self,
+ dispatcher: crate::dispatcher::get_default(|default| default.clone()),
+ }
+ }
+}
+
+pin_project! {
+ /// A [`Future`] that has been instrumented with a `tracing` [`Subscriber`].
+ ///
+ /// This type is returned by the [`WithSubscriber`] extension trait. See that
+ /// trait's documentation for details.
+ ///
+ /// [`Future`]: std::future::Future
+ /// [`Subscriber`]: crate::Subscriber
+ #[derive(Clone, Debug)]
+ #[must_use = "futures do nothing unless you `.await` or poll them"]
+ #[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+ pub struct WithDispatch<T> {
+ #[pin]
+ inner: T,
+ dispatcher: Dispatch,
+ }
+}
+
+pin_project! {
+ /// A [`Future`] that has been instrumented with a `tracing` [`Span`].
+ ///
+ /// This type is returned by the [`Instrument`] extension trait. See that
+ /// trait's documentation for details.
+ ///
+ /// [`Future`]: std::future::Future
+ /// [`Span`]: crate::Span
+ #[derive(Debug, Clone)]
+ #[must_use = "futures do nothing unless you `.await` or poll them"]
+ pub struct Instrumented<T> {
+ #[pin]
+ inner: T,
+ span: Span,
+ }
+}
+
+// === impl Instrumented ===
+
+impl<T: Future> Future for Instrumented<T> {
+ type Output = T::Output;
+
+ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
+ let this = self.project();
+ let _enter = this.span.enter();
+ this.inner.poll(cx)
+ }
+}
+
+impl<T: Sized> Instrument for T {}
+
+impl<T> Instrumented<T> {
+ /// Borrows the `Span` that this type is instrumented by.
+ pub fn span(&self) -> &Span {
+ &self.span
+ }
+
+ /// Mutably borrows the `Span` that this type is instrumented by.
+ pub fn span_mut(&mut self) -> &mut Span {
+ &mut self.span
+ }
+
+ /// Borrows the wrapped type.
+ pub fn inner(&self) -> &T {
+ &self.inner
+ }
+
+ /// Mutably borrows the wrapped type.
+ pub fn inner_mut(&mut self) -> &mut T {
+ &mut self.inner
+ }
+
+ /// Get a pinned reference to the wrapped type.
+ pub fn inner_pin_ref(self: Pin<&Self>) -> Pin<&T> {
+ self.project_ref().inner
+ }
+
+ /// Get a pinned mutable reference to the wrapped type.
+ pub fn inner_pin_mut(self: Pin<&mut Self>) -> Pin<&mut T> {
+ self.project().inner
+ }
+
+ /// Consumes the `Instrumented`, returning the wrapped type.
+ ///
+ /// Note that this drops the span.
+ pub fn into_inner(self) -> T {
+ self.inner
+ }
+}
+
+// === impl WithDispatch ===
+
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+impl<T: Future> Future for WithDispatch<T> {
+ type Output = T::Output;
+
+ fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
+ let this = self.project();
+ let dispatcher = this.dispatcher;
+ let future = this.inner;
+ let _default = dispatcher::set_default(dispatcher);
+ future.poll(cx)
+ }
+}
+
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+impl<T: Sized> WithSubscriber for T {}
+
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+impl<T> WithDispatch<T> {
+ /// Borrows the [`Dispatch`] that is entered when this type is polled.
+ pub fn dispatcher(&self) -> &Dispatch {
+ &self.dispatcher
+ }
+
+ /// Borrows the wrapped type.
+ pub fn inner(&self) -> &T {
+ &self.inner
+ }
+
+ /// Mutably borrows the wrapped type.
+ pub fn inner_mut(&mut self) -> &mut T {
+ &mut self.inner
+ }
+
+ /// Get a pinned reference to the wrapped type.
+ pub fn inner_pin_ref(self: Pin<&Self>) -> Pin<&T> {
+ self.project_ref().inner
+ }
+
+ /// Get a pinned mutable reference to the wrapped type.
+ pub fn inner_pin_mut(self: Pin<&mut Self>) -> Pin<&mut T> {
+ self.project().inner
+ }
+
+ /// Consumes the `Instrumented`, returning the wrapped type.
+ ///
+ /// Note that this drops the span.
+ pub fn into_inner(self) -> T {
+ self.inner
+ }
+}
diff --git a/vendor/tracing-0.1.37/src/level_filters.rs b/vendor/tracing-0.1.37/src/level_filters.rs
new file mode 100644
index 000000000..44f5e5f57
--- /dev/null
+++ b/vendor/tracing-0.1.37/src/level_filters.rs
@@ -0,0 +1,94 @@
+//! Trace verbosity level filtering.
+//!
+//! # Compile time filters
+//!
+//! Trace verbosity levels can be statically disabled at compile time via Cargo
+//! features, similar to the [`log` crate]. Trace instrumentation at disabled
+//! levels will be skipped and will not even be present in the resulting binary
+//! unless the verbosity level is specified dynamically. This level is
+//! configured separately for release and debug builds. The features are:
+//!
+//! * `max_level_off`
+//! * `max_level_error`
+//! * `max_level_warn`
+//! * `max_level_info`
+//! * `max_level_debug`
+//! * `max_level_trace`
+//! * `release_max_level_off`
+//! * `release_max_level_error`
+//! * `release_max_level_warn`
+//! * `release_max_level_info`
+//! * `release_max_level_debug`
+//! * `release_max_level_trace`
+//!
+//! These features control the value of the `STATIC_MAX_LEVEL` constant. The
+//! instrumentation macros macros check this value before recording an event or
+//! constructing a span. By default, no levels are disabled.
+//!
+//! For example, a crate can disable trace level instrumentation in debug builds
+//! and trace, debug, and info level instrumentation in release builds with the
+//! following configuration:
+//!
+//! ```toml
+//! [dependencies]
+//! tracing = { version = "0.1", features = ["max_level_debug", "release_max_level_warn"] }
+//! ```
+//! ## Notes
+//!
+//! Please note that `tracing`'s static max level features do *not* control the
+//! [`log`] records that may be emitted when [`tracing`'s "log" feature flag][f] is
+//! enabled. This is to allow `tracing` to be disabled entirely at compile time
+//! while still emitting `log` records --- such as when a library using
+//! `tracing` is used by an application using `log` that doesn't want to
+//! generate any `tracing`-related code, but does want to collect `log` records.
+//!
+//! This means that if the "log" feature is in use, some code may be generated
+//! for `log` records emitted by disabled `tracing` events. If this is not
+//! desirable, `log` records may be disabled separately using [`log`'s static
+//! max level features][`log` crate].
+//!
+//! [`log`]: https://docs.rs/log/
+//! [`log` crate]: https://docs.rs/log/latest/log/#compile-time-filters
+//! [f]: https://docs.rs/tracing/latest/tracing/#emitting-log-records
+pub use tracing_core::{metadata::ParseLevelFilterError, LevelFilter};
+
+/// The statically configured maximum trace level.
+///
+/// See the [module-level documentation] for information on how to configure
+/// this.
+///
+/// This value is checked by the `event!` and `span!` macros. Code that
+/// manually constructs events or spans via the `Event::record` function or
+/// `Span` constructors should compare the level against this value to
+/// determine if those spans or events are enabled.
+///
+/// [module-level documentation]: super#compile-time-filters
+pub const STATIC_MAX_LEVEL: LevelFilter = MAX_LEVEL;
+
+cfg_if::cfg_if! {
+ if #[cfg(all(not(debug_assertions), feature = "release_max_level_off"))] {
+ const MAX_LEVEL: LevelFilter = LevelFilter::OFF;
+ } else if #[cfg(all(not(debug_assertions), feature = "release_max_level_error"))] {
+ const MAX_LEVEL: LevelFilter = LevelFilter::ERROR;
+ } else if #[cfg(all(not(debug_assertions), feature = "release_max_level_warn"))] {
+ const MAX_LEVEL: LevelFilter = LevelFilter::WARN;
+ } else if #[cfg(all(not(debug_assertions), feature = "release_max_level_info"))] {
+ const MAX_LEVEL: LevelFilter = LevelFilter::INFO;
+ } else if #[cfg(all(not(debug_assertions), feature = "release_max_level_debug"))] {
+ const MAX_LEVEL: LevelFilter = LevelFilter::DEBUG;
+ } else if #[cfg(all(not(debug_assertions), feature = "release_max_level_trace"))] {
+ const MAX_LEVEL: LevelFilter = LevelFilter::TRACE;
+ } else if #[cfg(feature = "max_level_off")] {
+ const MAX_LEVEL: LevelFilter = LevelFilter::OFF;
+ } else if #[cfg(feature = "max_level_error")] {
+ const MAX_LEVEL: LevelFilter = LevelFilter::ERROR;
+ } else if #[cfg(feature = "max_level_warn")] {
+ const MAX_LEVEL: LevelFilter = LevelFilter::WARN;
+ } else if #[cfg(feature = "max_level_info")] {
+ const MAX_LEVEL: LevelFilter = LevelFilter::INFO;
+ } else if #[cfg(feature = "max_level_debug")] {
+ const MAX_LEVEL: LevelFilter = LevelFilter::DEBUG;
+ } else {
+ const MAX_LEVEL: LevelFilter = LevelFilter::TRACE;
+ }
+}
diff --git a/vendor/tracing-0.1.37/src/lib.rs b/vendor/tracing-0.1.37/src/lib.rs
new file mode 100644
index 000000000..342e04a82
--- /dev/null
+++ b/vendor/tracing-0.1.37/src/lib.rs
@@ -0,0 +1,1115 @@
+//! A scoped, structured logging and diagnostics system.
+//!
+//! # Overview
+//!
+//! `tracing` is a framework for instrumenting Rust programs to collect
+//! structured, event-based diagnostic information.
+//!
+//! In asynchronous systems like Tokio, interpreting traditional log messages can
+//! often be quite challenging. Since individual tasks are multiplexed on the same
+//! thread, associated events and log lines are intermixed making it difficult to
+//! trace the logic flow. `tracing` expands upon logging-style diagnostics by
+//! allowing libraries and applications to record structured events with additional
+//! information about *temporality* and *causality* — unlike a log message, a span
+//! in `tracing` has a beginning and end time, may be entered and exited by the
+//! flow of execution, and may exist within a nested tree of similar spans. In
+//! addition, `tracing` spans are *structured*, with the ability to record typed
+//! data as well as textual messages.
+//!
+//! The `tracing` crate provides the APIs necessary for instrumenting libraries
+//! and applications to emit trace data.
+//!
+//! *Compiler support: [requires `rustc` 1.49+][msrv]*
+//!
+//! [msrv]: #supported-rust-versions
+//! # Core Concepts
+//!
+//! The core of `tracing`'s API is composed of _spans_, _events_ and
+//! _subscribers_. We'll cover these in turn.
+//!
+//! ## Spans
+//!
+//! To record the flow of execution through a program, `tracing` introduces the
+//! concept of [spans]. Unlike a log line that represents a _moment in
+//! time_, a span represents a _period of time_ with a beginning and an end. When a
+//! program begins executing in a context or performing a unit of work, it
+//! _enters_ that context's span, and when it stops executing in that context,
+//! it _exits_ the span. The span in which a thread is currently executing is
+//! referred to as that thread's _current_ span.
+//!
+//! For example:
+//! ```
+//! use tracing::{span, Level};
+//! # fn main() {
+//! let span = span!(Level::TRACE, "my_span");
+//! // `enter` returns a RAII guard which, when dropped, exits the span. this
+//! // indicates that we are in the span for the current lexical scope.
+//! let _enter = span.enter();
+//! // perform some work in the context of `my_span`...
+//! # }
+//!```
+//!
+//! The [`span` module][span]'s documentation provides further details on how to
+//! use spans.
+//!
+//! <div class="example-wrap" style="display:inline-block"><pre class="compile_fail" style="white-space:normal;font:inherit;">
+//!
+//! **Warning**: In asynchronous code that uses async/await syntax,
+//! `Span::enter` may produce incorrect traces if the returned drop
+//! guard is held across an await point. See
+//! [the method documentation][Span#in-asynchronous-code] for details.
+//!
+//! </pre></div>
+//!
+//! ## Events
+//!
+//! An [`Event`] represents a _moment_ in time. It signifies something that
+//! happened while a trace was being recorded. `Event`s are comparable to the log
+//! records emitted by unstructured logging code, but unlike a typical log line,
+//! an `Event` may occur within the context of a span.
+//!
+//! For example:
+//! ```
+//! use tracing::{event, span, Level};
+//!
+//! # fn main() {
+//! // records an event outside of any span context:
+//! event!(Level::INFO, "something happened");
+//!
+//! let span = span!(Level::INFO, "my_span");
+//! let _guard = span.enter();
+//!
+//! // records an event within "my_span".
+//! event!(Level::DEBUG, "something happened inside my_span");
+//! # }
+//!```
+//!
+//! In general, events should be used to represent points in time _within_ a
+//! span — a request returned with a given status code, _n_ new items were
+//! taken from a queue, and so on.
+//!
+//! The [`Event` struct][`Event`] documentation provides further details on using
+//! events.
+//!
+//! ## Subscribers
+//!
+//! As `Span`s and `Event`s occur, they are recorded or aggregated by
+//! implementations of the [`Subscriber`] trait. `Subscriber`s are notified
+//! when an `Event` takes place and when a `Span` is entered or exited. These
+//! notifications are represented by the following `Subscriber` trait methods:
+//!
+//! + [`event`][Subscriber::event], called when an `Event` takes place,
+//! + [`enter`], called when execution enters a `Span`,
+//! + [`exit`], called when execution exits a `Span`
+//!
+//! In addition, subscribers may implement the [`enabled`] function to _filter_
+//! the notifications they receive based on [metadata] describing each `Span`
+//! or `Event`. If a call to `Subscriber::enabled` returns `false` for a given
+//! set of metadata, that `Subscriber` will *not* be notified about the
+//! corresponding `Span` or `Event`. For performance reasons, if no currently
+//! active subscribers express interest in a given set of metadata by returning
+//! `true`, then the corresponding `Span` or `Event` will never be constructed.
+//!
+//! # Usage
+//!
+//! First, add this to your `Cargo.toml`:
+//!
+//! ```toml
+//! [dependencies]
+//! tracing = "0.1"
+//! ```
+//!
+//! ## Recording Spans and Events
+//!
+//! Spans and events are recorded using macros.
+//!
+//! ### Spans
+//!
+//! The [`span!`] macro expands to a [`Span` struct][`Span`] which is used to
+//! record a span. The [`Span::enter`] method on that struct records that the
+//! span has been entered, and returns a [RAII] guard object, which will exit
+//! the span when dropped.
+//!
+//! For example:
+//!
+//! ```rust
+//! use tracing::{span, Level};
+//! # fn main() {
+//! // Construct a new span named "my span" with trace log level.
+//! let span = span!(Level::TRACE, "my span");
+//!
+//! // Enter the span, returning a guard object.
+//! let _enter = span.enter();
+//!
+//! // Any trace events that occur before the guard is dropped will occur
+//! // within the span.
+//!
+//! // Dropping the guard will exit the span.
+//! # }
+//! ```
+//!
+//! The [`#[instrument]`][instrument] attribute provides an easy way to
+//! add `tracing` spans to functions. A function annotated with `#[instrument]`
+//! will create and enter a span with that function's name every time the
+//! function is called, with arguments to that function will be recorded as
+//! fields using `fmt::Debug`.
+//!
+//! For example:
+//! ```ignore
+//! # // this doctest is ignored because we don't have a way to say
+//! # // that it should only be run with cfg(feature = "attributes")
+//! use tracing::{Level, event, instrument};
+//!
+//! #[instrument]
+//! pub fn my_function(my_arg: usize) {
+//! // This event will be recorded inside a span named `my_function` with the
+//! // field `my_arg`.
+//! event!(Level::INFO, "inside my_function!");
+//! // ...
+//! }
+//! # fn main() {}
+//! ```
+//!
+//! For functions which don't have built-in tracing support and can't have
+//! the `#[instrument]` attribute applied (such as from an external crate),
+//! the [`Span` struct][`Span`] has a [`in_scope()` method][`in_scope`]
+//! which can be used to easily wrap synchonous code in a span.
+//!
+//! For example:
+//! ```rust
+//! use tracing::info_span;
+//!
+//! # fn doc() -> Result<(), ()> {
+//! # mod serde_json {
+//! # pub(crate) fn from_slice(buf: &[u8]) -> Result<(), ()> { Ok(()) }
+//! # }
+//! # let buf: [u8; 0] = [];
+//! let json = info_span!("json.parse").in_scope(|| serde_json::from_slice(&buf))?;
+//! # let _ = json; // suppress unused variable warning
+//! # Ok(())
+//! # }
+//! ```
+//!
+//! You can find more examples showing how to use this crate [here][examples].
+//!
+//! [RAII]: https://github.com/rust-unofficial/patterns/blob/master/patterns/behavioural/RAII.md
+//! [examples]: https://github.com/tokio-rs/tracing/tree/master/examples
+//!
+//! ### Events
+//!
+//! [`Event`]s are recorded using the [`event!`] macro:
+//!
+//! ```rust
+//! # fn main() {
+//! use tracing::{event, Level};
+//! event!(Level::INFO, "something has happened!");
+//! # }
+//! ```
+//!
+//! ## Using the Macros
+//!
+//! The [`span!`] and [`event!`] macros as well as the `#[instrument]` attribute
+//! use fairly similar syntax, with some exceptions.
+//!
+//! ### Configuring Attributes
+//!
+//! Both macros require a [`Level`] specifying the verbosity of the span or
+//! event. Optionally, the [target] and [parent span] may be overridden. If the
+//! target and parent span are not overridden, they will default to the
+//! module path where the macro was invoked and the current span (as determined
+//! by the subscriber), respectively.
+//!
+//! For example:
+//!
+//! ```
+//! # use tracing::{span, event, Level};
+//! # fn main() {
+//! span!(target: "app_spans", Level::TRACE, "my span");
+//! event!(target: "app_events", Level::INFO, "something has happened!");
+//! # }
+//! ```
+//! ```
+//! # use tracing::{span, event, Level};
+//! # fn main() {
+//! let span = span!(Level::TRACE, "my span");
+//! event!(parent: &span, Level::INFO, "something has happened!");
+//! # }
+//! ```
+//!
+//! The span macros also take a string literal after the level, to set the name
+//! of the span.
+//!
+//! ### Recording Fields
+//!
+//! Structured fields on spans and events are specified using the syntax
+//! `field_name = field_value`. Fields are separated by commas.
+//!
+//! ```
+//! # use tracing::{event, Level};
+//! # fn main() {
+//! // records an event with two fields:
+//! // - "answer", with the value 42
+//! // - "question", with the value "life, the universe and everything"
+//! event!(Level::INFO, answer = 42, question = "life, the universe, and everything");
+//! # }
+//! ```
+//!
+//! As shorthand, local variables may be used as field values without an
+//! assignment, similar to [struct initializers]. For example:
+//!
+//! ```
+//! # use tracing::{span, Level};
+//! # fn main() {
+//! let user = "ferris";
+//!
+//! span!(Level::TRACE, "login", user);
+//! // is equivalent to:
+//! span!(Level::TRACE, "login", user = user);
+//! # }
+//!```
+//!
+//! Field names can include dots, but should not be terminated by them:
+//! ```
+//! # use tracing::{span, Level};
+//! # fn main() {
+//! let user = "ferris";
+//! let email = "ferris@rust-lang.org";
+//! span!(Level::TRACE, "login", user, user.email = email);
+//! # }
+//!```
+//!
+//! Since field names can include dots, fields on local structs can be used
+//! using the local variable shorthand:
+//! ```
+//! # use tracing::{span, Level};
+//! # fn main() {
+//! # struct User {
+//! # name: &'static str,
+//! # email: &'static str,
+//! # }
+//! let user = User {
+//! name: "ferris",
+//! email: "ferris@rust-lang.org",
+//! };
+//! // the span will have the fields `user.name = "ferris"` and
+//! // `user.email = "ferris@rust-lang.org"`.
+//! span!(Level::TRACE, "login", user.name, user.email);
+//! # }
+//!```
+//!
+//! Fields with names that are not Rust identifiers, or with names that are Rust reserved words,
+//! may be created using quoted string literals. However, this may not be used with the local
+//! variable shorthand.
+//! ```
+//! # use tracing::{span, Level};
+//! # fn main() {
+//! // records an event with fields whose names are not Rust identifiers
+//! // - "guid:x-request-id", containing a `:`, with the value "abcdef"
+//! // - "type", which is a reserved word, with the value "request"
+//! span!(Level::TRACE, "api", "guid:x-request-id" = "abcdef", "type" = "request");
+//! # }
+//!```
+//!
+//! The `?` sigil is shorthand that specifies a field should be recorded using
+//! its [`fmt::Debug`] implementation:
+//! ```
+//! # use tracing::{event, Level};
+//! # fn main() {
+//! #[derive(Debug)]
+//! struct MyStruct {
+//! field: &'static str,
+//! }
+//!
+//! let my_struct = MyStruct {
+//! field: "Hello world!"
+//! };
+//!
+//! // `my_struct` will be recorded using its `fmt::Debug` implementation.
+//! event!(Level::TRACE, greeting = ?my_struct);
+//! // is equivalent to:
+//! event!(Level::TRACE, greeting = tracing::field::debug(&my_struct));
+//! # }
+//! ```
+//!
+//! The `%` sigil operates similarly, but indicates that the value should be
+//! recorded using its [`fmt::Display`] implementation:
+//! ```
+//! # use tracing::{event, Level};
+//! # fn main() {
+//! # #[derive(Debug)]
+//! # struct MyStruct {
+//! # field: &'static str,
+//! # }
+//! #
+//! # let my_struct = MyStruct {
+//! # field: "Hello world!"
+//! # };
+//! // `my_struct.field` will be recorded using its `fmt::Display` implementation.
+//! event!(Level::TRACE, greeting = %my_struct.field);
+//! // is equivalent to:
+//! event!(Level::TRACE, greeting = tracing::field::display(&my_struct.field));
+//! # }
+//! ```
+//!
+//! The `%` and `?` sigils may also be used with local variable shorthand:
+//!
+//! ```
+//! # use tracing::{event, Level};
+//! # fn main() {
+//! # #[derive(Debug)]
+//! # struct MyStruct {
+//! # field: &'static str,
+//! # }
+//! #
+//! # let my_struct = MyStruct {
+//! # field: "Hello world!"
+//! # };
+//! // `my_struct.field` will be recorded using its `fmt::Display` implementation.
+//! event!(Level::TRACE, %my_struct.field);
+//! # }
+//! ```
+//!
+//! Additionally, a span may declare fields with the special value [`Empty`],
+//! which indicates that that the value for that field does not currently exist
+//! but may be recorded later. For example:
+//!
+//! ```
+//! use tracing::{trace_span, field};
+//!
+//! // Create a span with two fields: `greeting`, with the value "hello world", and
+//! // `parting`, without a value.
+//! let span = trace_span!("my_span", greeting = "hello world", parting = field::Empty);
+//!
+//! // ...
+//!
+//! // Now, record a value for parting as well.
+//! span.record("parting", &"goodbye world!");
+//! ```
+//!
+//! Note that a span may have up to 32 fields. The following will not compile:
+//!
+//! ```rust,compile_fail
+//! # use tracing::Level;
+//! # fn main() {
+//! let bad_span = span!(
+//! Level::TRACE,
+//! "too many fields!",
+//! a = 1, b = 2, c = 3, d = 4, e = 5, f = 6, g = 7, h = 8, i = 9,
+//! j = 10, k = 11, l = 12, m = 13, n = 14, o = 15, p = 16, q = 17,
+//! r = 18, s = 19, t = 20, u = 21, v = 22, w = 23, x = 24, y = 25,
+//! z = 26, aa = 27, bb = 28, cc = 29, dd = 30, ee = 31, ff = 32, gg = 33
+//! );
+//! # }
+//! ```
+//!
+//! Finally, events may also include human-readable messages, in the form of a
+//! [format string][fmt] and (optional) arguments, **after** the event's
+//! key-value fields. If a format string and arguments are provided,
+//! they will implicitly create a new field named `message` whose value is the
+//! provided set of format arguments.
+//!
+//! For example:
+//!
+//! ```
+//! # use tracing::{event, Level};
+//! # fn main() {
+//! let question = "the ultimate question of life, the universe, and everything";
+//! let answer = 42;
+//! // records an event with the following fields:
+//! // - `question.answer` with the value 42,
+//! // - `question.tricky` with the value `true`,
+//! // - "message", with the value "the answer to the ultimate question of life, the
+//! // universe, and everything is 42."
+//! event!(
+//! Level::DEBUG,
+//! question.answer = answer,
+//! question.tricky = true,
+//! "the answer to {} is {}.", question, answer
+//! );
+//! # }
+//! ```
+//!
+//! Specifying a formatted message in this manner does not allocate by default.
+//!
+//! [struct initializers]: https://doc.rust-lang.org/book/ch05-01-defining-structs.html#using-the-field-init-shorthand-when-variables-and-fields-have-the-same-name
+//! [target]: Metadata::target
+//! [parent span]: span::Attributes::parent
+//! [determined contextually]: span::Attributes::is_contextual
+//! [`fmt::Debug`]: std::fmt::Debug
+//! [`fmt::Display`]: std::fmt::Display
+//! [fmt]: std::fmt#usage
+//! [`Empty`]: field::Empty
+//!
+//! ### Shorthand Macros
+//!
+//! `tracing` also offers a number of macros with preset verbosity levels.
+//! The [`trace!`], [`debug!`], [`info!`], [`warn!`], and [`error!`] behave
+//! similarly to the [`event!`] macro, but with the [`Level`] argument already
+//! specified, while the corresponding [`trace_span!`], [`debug_span!`],
+//! [`info_span!`], [`warn_span!`], and [`error_span!`] macros are the same,
+//! but for the [`span!`] macro.
+//!
+//! These are intended both as a shorthand, and for compatibility with the [`log`]
+//! crate (see the next section).
+//!
+//! [`span!`]: span!
+//! [`event!`]: event!
+//! [`trace!`]: trace!
+//! [`debug!`]: debug!
+//! [`info!`]: info!
+//! [`warn!`]: warn!
+//! [`error!`]: error!
+//! [`trace_span!`]: trace_span!
+//! [`debug_span!`]: debug_span!
+//! [`info_span!`]: info_span!
+//! [`warn_span!`]: warn_span!
+//! [`error_span!`]: error_span!
+//!
+//! ### For `log` Users
+//!
+//! Users of the [`log`] crate should note that `tracing` exposes a set of
+//! macros for creating `Event`s (`trace!`, `debug!`, `info!`, `warn!`, and
+//! `error!`) which may be invoked with the same syntax as the similarly-named
+//! macros from the `log` crate. Often, the process of converting a project to
+//! use `tracing` can begin with a simple drop-in replacement.
+//!
+//! Let's consider the `log` crate's yak-shaving example:
+//!
+//! ```rust,ignore
+//! use std::{error::Error, io};
+//! use tracing::{debug, error, info, span, warn, Level};
+//!
+//! // the `#[tracing::instrument]` attribute creates and enters a span
+//! // every time the instrumented function is called. The span is named after the
+//! // the function or method. Parameters passed to the function are recorded as fields.
+//! #[tracing::instrument]
+//! pub fn shave(yak: usize) -> Result<(), Box<dyn Error + 'static>> {
+//! // this creates an event at the DEBUG level with two fields:
+//! // - `excitement`, with the key "excitement" and the value "yay!"
+//! // - `message`, with the key "message" and the value "hello! I'm gonna shave a yak."
+//! //
+//! // unlike other fields, `message`'s shorthand initialization is just the string itself.
+//! debug!(excitement = "yay!", "hello! I'm gonna shave a yak.");
+//! if yak == 3 {
+//! warn!("could not locate yak!");
+//! // note that this is intended to demonstrate `tracing`'s features, not idiomatic
+//! // error handling! in a library or application, you should consider returning
+//! // a dedicated `YakError`. libraries like snafu or thiserror make this easy.
+//! return Err(io::Error::new(io::ErrorKind::Other, "shaving yak failed!").into());
+//! } else {
+//! debug!("yak shaved successfully");
+//! }
+//! Ok(())
+//! }
+//!
+//! pub fn shave_all(yaks: usize) -> usize {
+//! // Constructs a new span named "shaving_yaks" at the TRACE level,
+//! // and a field whose key is "yaks". This is equivalent to writing:
+//! //
+//! // let span = span!(Level::TRACE, "shaving_yaks", yaks = yaks);
+//! //
+//! // local variables (`yaks`) can be used as field values
+//! // without an assignment, similar to struct initializers.
+//! let _span = span!(Level::TRACE, "shaving_yaks", yaks).entered();
+//!
+//! info!("shaving yaks");
+//!
+//! let mut yaks_shaved = 0;
+//! for yak in 1..=yaks {
+//! let res = shave(yak);
+//! debug!(yak, shaved = res.is_ok());
+//!
+//! if let Err(ref error) = res {
+//! // Like spans, events can also use the field initialization shorthand.
+//! // In this instance, `yak` is the field being initalized.
+//! error!(yak, error = error.as_ref(), "failed to shave yak!");
+//! } else {
+//! yaks_shaved += 1;
+//! }
+//! debug!(yaks_shaved);
+//! }
+//!
+//! yaks_shaved
+//! }
+//! ```
+//!
+//! ## In libraries
+//!
+//! Libraries should link only to the `tracing` crate, and use the provided
+//! macros to record whatever information will be useful to downstream
+//! consumers.
+//!
+//! ## In executables
+//!
+//! In order to record trace events, executables have to use a `Subscriber`
+//! implementation compatible with `tracing`. A `Subscriber` implements a
+//! way of collecting trace data, such as by logging it to standard output.
+//!
+//! This library does not contain any `Subscriber` implementations; these are
+//! provided by [other crates](#related-crates).
+//!
+//! The simplest way to use a subscriber is to call the [`set_global_default`]
+//! function:
+//!
+//! ```
+//! extern crate tracing;
+//! # pub struct FooSubscriber;
+//! # use tracing::{span::{Id, Attributes, Record}, Metadata};
+//! # impl tracing::Subscriber for FooSubscriber {
+//! # fn new_span(&self, _: &Attributes) -> Id { Id::from_u64(0) }
+//! # fn record(&self, _: &Id, _: &Record) {}
+//! # fn event(&self, _: &tracing::Event) {}
+//! # fn record_follows_from(&self, _: &Id, _: &Id) {}
+//! # fn enabled(&self, _: &Metadata) -> bool { false }
+//! # fn enter(&self, _: &Id) {}
+//! # fn exit(&self, _: &Id) {}
+//! # }
+//! # impl FooSubscriber {
+//! # fn new() -> Self { FooSubscriber }
+//! # }
+//! # fn main() {
+//!
+//! let my_subscriber = FooSubscriber::new();
+//! tracing::subscriber::set_global_default(my_subscriber)
+//! .expect("setting tracing default failed");
+//! # }
+//! ```
+//!
+//! <pre class="compile_fail" style="white-space:normal;font:inherit;">
+//! <strong>Warning</strong>: In general, libraries should <em>not</em> call
+//! <code>set_global_default()</code>! Doing so will cause conflicts when
+//! executables that depend on the library try to set the default later.
+//! </pre>
+//!
+//! This subscriber will be used as the default in all threads for the
+//! remainder of the duration of the program, similar to setting the logger
+//! in the `log` crate.
+//!
+//! In addition, the default subscriber can be set through using the
+//! [`with_default`] function. This follows the `tokio` pattern of using
+//! closures to represent executing code in a context that is exited at the end
+//! of the closure. For example:
+//!
+//! ```rust
+//! # pub struct FooSubscriber;
+//! # use tracing::{span::{Id, Attributes, Record}, Metadata};
+//! # impl tracing::Subscriber for FooSubscriber {
+//! # fn new_span(&self, _: &Attributes) -> Id { Id::from_u64(0) }
+//! # fn record(&self, _: &Id, _: &Record) {}
+//! # fn event(&self, _: &tracing::Event) {}
+//! # fn record_follows_from(&self, _: &Id, _: &Id) {}
+//! # fn enabled(&self, _: &Metadata) -> bool { false }
+//! # fn enter(&self, _: &Id) {}
+//! # fn exit(&self, _: &Id) {}
+//! # }
+//! # impl FooSubscriber {
+//! # fn new() -> Self { FooSubscriber }
+//! # }
+//! # fn main() {
+//!
+//! let my_subscriber = FooSubscriber::new();
+//! # #[cfg(feature = "std")]
+//! tracing::subscriber::with_default(my_subscriber, || {
+//! // Any trace events generated in this closure or by functions it calls
+//! // will be collected by `my_subscriber`.
+//! })
+//! # }
+//! ```
+//!
+//! This approach allows trace data to be collected by multiple subscribers
+//! within different contexts in the program. Note that the override only applies to the
+//! currently executing thread; other threads will not see the change from with_default.
+//!
+//! Any trace events generated outside the context of a subscriber will not be collected.
+//!
+//! Once a subscriber has been set, instrumentation points may be added to the
+//! executable using the `tracing` crate's macros.
+//!
+//! ## `log` Compatibility
+//!
+//! The [`log`] crate provides a simple, lightweight logging facade for Rust.
+//! While `tracing` builds upon `log`'s foundation with richer structured
+//! diagnostic data, `log`'s simplicity and ubiquity make it the "lowest common
+//! denominator" for text-based logging in Rust — a vast majority of Rust
+//! libraries and applications either emit or consume `log` records. Therefore,
+//! `tracing` provides multiple forms of interoperability with `log`: `tracing`
+//! instrumentation can emit `log` records, and a compatibility layer enables
+//! `tracing` [`Subscriber`]s to consume `log` records as `tracing` [`Event`]s.
+//!
+//! ### Emitting `log` Records
+//!
+//! This crate provides two feature flags, "log" and "log-always", which will
+//! cause [spans] and [events] to emit `log` records. When the "log" feature is
+//! enabled, if no `tracing` `Subscriber` is active, invoking an event macro or
+//! creating a span with fields will emit a `log` record. This is intended
+//! primarily for use in libraries which wish to emit diagnostics that can be
+//! consumed by applications using `tracing` *or* `log`, without paying the
+//! additional overhead of emitting both forms of diagnostics when `tracing` is
+//! in use.
+//!
+//! Enabling the "log-always" feature will cause `log` records to be emitted
+//! even if a `tracing` `Subscriber` _is_ set. This is intended to be used in
+//! applications where a `log` `Logger` is being used to record a textual log,
+//! and `tracing` is used only to record other forms of diagnostics (such as
+//! metrics, profiling, or distributed tracing data). Unlike the "log" feature,
+//! libraries generally should **not** enable the "log-always" feature, as doing
+//! so will prevent applications from being able to opt out of the `log` records.
+//!
+//! See [here][flags] for more details on this crate's feature flags.
+//!
+//! The generated `log` records' messages will be a string representation of the
+//! span or event's fields, and all additional information recorded by `log`
+//! (target, verbosity level, module path, file, and line number) will also be
+//! populated. Additionally, `log` records are also generated when spans are
+//! entered, exited, and closed. Since these additional span lifecycle logs have
+//! the potential to be very verbose, and don't include additional fields, they
+//! will always be emitted at the `Trace` level, rather than inheriting the
+//! level of the span that generated them. Furthermore, they are are categorized
+//! under a separate `log` target, "tracing::span" (and its sub-target,
+//! "tracing::span::active", for the logs on entering and exiting a span), which
+//! may be enabled or disabled separately from other `log` records emitted by
+//! `tracing`.
+//!
+//! ### Consuming `log` Records
+//!
+//! The [`tracing-log`] crate provides a compatibility layer which
+//! allows a `tracing` [`Subscriber`] to consume `log` records as though they
+//! were `tracing` [events]. This allows applications using `tracing` to record
+//! the logs emitted by dependencies using `log` as events within the context of
+//! the application's trace tree. See [that crate's documentation][log-tracer]
+//! for details.
+//!
+//! [log-tracer]: https://docs.rs/tracing-log/latest/tracing_log/#convert-log-records-to-tracing-events
+//!
+//! ## Related Crates
+//!
+//! In addition to `tracing` and `tracing-core`, the [`tokio-rs/tracing`] repository
+//! contains several additional crates designed to be used with the `tracing` ecosystem.
+//! This includes a collection of `Subscriber` implementations, as well as utility
+//! and adapter crates to assist in writing `Subscriber`s and instrumenting
+//! applications.
+//!
+//! In particular, the following crates are likely to be of interest:
+//!
+//! - [`tracing-futures`] provides a compatibility layer with the `futures`
+//! crate, allowing spans to be attached to `Future`s, `Stream`s, and `Executor`s.
+//! - [`tracing-subscriber`] provides `Subscriber` implementations and
+//! utilities for working with `Subscriber`s. This includes a [`FmtSubscriber`]
+//! `FmtSubscriber` for logging formatted trace data to stdout, with similar
+//! filtering and formatting to the [`env_logger`] crate.
+//! - [`tracing-log`] provides a compatibility layer with the [`log`] crate,
+//! allowing log messages to be recorded as `tracing` `Event`s within the
+//! trace tree. This is useful when a project using `tracing` have
+//! dependencies which use `log`. Note that if you're using
+//! `tracing-subscriber`'s `FmtSubscriber`, you don't need to depend on
+//! `tracing-log` directly.
+//! - [`tracing-appender`] provides utilities for outputting tracing data,
+//! including a file appender and non blocking writer.
+//!
+//! Additionally, there are also several third-party crates which are not
+//! maintained by the `tokio` project. These include:
+//!
+//! - [`tracing-timing`] implements inter-event timing metrics on top of `tracing`.
+//! It provides a subscriber that records the time elapsed between pairs of
+//! `tracing` events and generates histograms.
+//! - [`tracing-opentelemetry`] provides a subscriber for emitting traces to
+//! [OpenTelemetry]-compatible distributed tracing systems.
+//! - [`tracing-honeycomb`] Provides a layer that reports traces spanning multiple machines to [honeycomb.io]. Backed by [`tracing-distributed`].
+//! - [`tracing-distributed`] Provides a generic implementation of a layer that reports traces spanning multiple machines to some backend.
+//! - [`tracing-actix-web`] provides `tracing` integration for the `actix-web` web framework.
+//! - [`tracing-actix`] provides `tracing` integration for the `actix` actor
+//! framework.
+//! - [`tracing-gelf`] implements a subscriber for exporting traces in Greylog
+//! GELF format.
+//! - [`tracing-coz`] provides integration with the [coz] causal profiler
+//! (Linux-only).
+//! - [`tracing-bunyan-formatter`] provides a layer implementation that reports events and spans
+//! in [bunyan] format, enriched with timing information.
+//! - [`tracing-wasm`] provides a `Subscriber`/`Layer` implementation that reports
+//! events and spans via browser `console.log` and [User Timing API (`window.performance`)].
+//! - [`tracing-web`] provides a layer implementation of level-aware logging of events
+//! to web browsers' `console.*` and span events to the [User Timing API (`window.performance`)].
+//! - [`tide-tracing`] provides a [tide] middleware to trace all incoming requests and responses.
+//! - [`test-log`] takes care of initializing `tracing` for tests, based on
+//! environment variables with an `env_logger` compatible syntax.
+//! - [`tracing-unwrap`] provides convenience methods to report failed unwraps
+//! on `Result` or `Option` types to a `Subscriber`.
+//! - [`diesel-tracing`] provides integration with [`diesel`] database connections.
+//! - [`tracing-tracy`] provides a way to collect [Tracy] profiles in instrumented
+//! applications.
+//! - [`tracing-elastic-apm`] provides a layer for reporting traces to [Elastic APM].
+//! - [`tracing-etw`] provides a layer for emitting Windows [ETW] events.
+//! - [`tracing-fluent-assertions`] provides a fluent assertions-style testing
+//! framework for validating the behavior of `tracing` spans.
+//! - [`sentry-tracing`] provides a layer for reporting events and traces to [Sentry].
+//! - [`tracing-forest`] provides a subscriber that preserves contextual coherence by
+//! grouping together logs from the same spans during writing.
+//! - [`tracing-loki`] provides a layer for shipping logs to [Grafana Loki].
+//! - [`tracing-logfmt`] provides a layer that formats events and spans into the logfmt format.
+//! - [`reqwest-tracing`] provides a middleware to trace [`reqwest`] HTTP requests.
+//!
+//! If you're the maintainer of a `tracing` ecosystem crate not listed above,
+//! please let us know! We'd love to add your project to the list!
+//!
+//! [`tracing-opentelemetry`]: https://crates.io/crates/tracing-opentelemetry
+//! [OpenTelemetry]: https://opentelemetry.io/
+//! [`tracing-honeycomb`]: https://crates.io/crates/tracing-honeycomb
+//! [`tracing-distributed`]: https://crates.io/crates/tracing-distributed
+//! [honeycomb.io]: https://www.honeycomb.io/
+//! [`tracing-actix-web`]: https://crates.io/crates/tracing-actix-web
+//! [`tracing-actix`]: https://crates.io/crates/tracing-actix
+//! [`tracing-gelf`]: https://crates.io/crates/tracing-gelf
+//! [`tracing-coz`]: https://crates.io/crates/tracing-coz
+//! [coz]: https://github.com/plasma-umass/coz
+//! [`tracing-bunyan-formatter`]: https://crates.io/crates/tracing-bunyan-formatter
+//! [bunyan]: https://github.com/trentm/node-bunyan
+//! [`tracing-wasm`]: https://docs.rs/tracing-wasm
+//! [`tracing-web`]: https://docs.rs/tracing-web
+//! [User Timing API (`window.performance`)]: https://developer.mozilla.org/en-US/docs/Web/API/User_Timing_API
+//! [`tide-tracing`]: https://crates.io/crates/tide-tracing
+//! [tide]: https://crates.io/crates/tide
+//! [`test-log`]: https://crates.io/crates/test-log
+//! [`tracing-unwrap`]: https://docs.rs/tracing-unwrap
+//! [`diesel`]: https://crates.io/crates/diesel
+//! [`diesel-tracing`]: https://crates.io/crates/diesel-tracing
+//! [`tracing-tracy`]: https://crates.io/crates/tracing-tracy
+//! [Tracy]: https://github.com/wolfpld/tracy
+//! [`tracing-elastic-apm`]: https://crates.io/crates/tracing-elastic-apm
+//! [Elastic APM]: https://www.elastic.co/apm
+//! [`tracing-etw`]: https://github.com/microsoft/tracing-etw
+//! [ETW]: https://docs.microsoft.com/en-us/windows/win32/etw/about-event-tracing
+//! [`tracing-fluent-assertions`]: https://crates.io/crates/tracing-fluent-assertions
+//! [`sentry-tracing`]: https://crates.io/crates/sentry-tracing
+//! [Sentry]: https://sentry.io/welcome/
+//! [`tracing-forest`]: https://crates.io/crates/tracing-forest
+//! [`tracing-loki`]: https://crates.io/crates/tracing-loki
+//! [Grafana Loki]: https://grafana.com/oss/loki/
+//! [`tracing-logfmt`]: https://crates.io/crates/tracing-logfmt
+//! [`reqwest-tracing`]: https://crates.io/crates/reqwest-tracing
+//! [`reqwest`]: https://crates.io/crates/reqwest
+//!
+//! <pre class="ignore" style="white-space:normal;font:inherit;">
+//! <strong>Note</strong>: Some of these ecosystem crates are currently
+//! unreleased and/or in earlier stages of development. They may be less stable
+//! than <code>tracing</code> and <code>tracing-core</code>.
+//! </pre>
+//!
+//! ## Crate Feature Flags
+//!
+//! The following crate [feature flags] are available:
+//!
+//! * A set of features controlling the [static verbosity level].
+//! * `log`: causes trace instrumentation points to emit [`log`] records as well
+//! as trace events, if a default `tracing` subscriber has not been set. This
+//! is intended for use in libraries whose users may be using either `tracing`
+//! or `log`.
+//! * `log-always`: Emit `log` records from all `tracing` spans and events, even
+//! if a `tracing` subscriber has been set. This should be set only by
+//! applications which intend to collect traces and logs separately; if an
+//! adapter is used to convert `log` records into `tracing` events, this will
+//! cause duplicate events to occur.
+//! * `attributes`: Includes support for the `#[instrument]` attribute.
+//! This is on by default, but does bring in the `syn` crate as a dependency,
+//! which may add to the compile time of crates that do not already use it.
+//! * `std`: Depend on the Rust standard library (enabled by default).
+//!
+//! `no_std` users may disable this feature with `default-features = false`:
+//!
+//! ```toml
+//! [dependencies]
+//! tracing = { version = "0.1.37", default-features = false }
+//! ```
+//!
+//! <pre class="ignore" style="white-space:normal;font:inherit;">
+//! <strong>Note</strong>: <code>tracing</code>'s <code>no_std</code> support
+//! requires <code>liballoc</code>.
+//! </pre>
+//!
+//! ### Unstable Features
+//!
+//! These feature flags enable **unstable** features. The public API may break in 0.1.x
+//! releases. To enable these features, the `--cfg tracing_unstable` must be passed to
+//! `rustc` when compiling.
+//!
+//! The following unstable feature flags are currently available:
+//!
+//! * `valuable`: Enables support for recording [field values] using the
+//! [`valuable`] crate.
+//!
+//! #### Enabling Unstable Features
+//!
+//! The easiest way to set the `tracing_unstable` cfg is to use the `RUSTFLAGS`
+//! env variable when running `cargo` commands:
+//!
+//! ```shell
+//! RUSTFLAGS="--cfg tracing_unstable" cargo build
+//! ```
+//! Alternatively, the following can be added to the `.cargo/config` file in a
+//! project to automatically enable the cfg flag for that project:
+//!
+//! ```toml
+//! [build]
+//! rustflags = ["--cfg", "tracing_unstable"]
+//! ```
+//!
+//! [feature flags]: https://doc.rust-lang.org/cargo/reference/manifest.html#the-features-section
+//! [field values]: crate::field
+//! [`valuable`]: https://crates.io/crates/valuable
+//!
+//! ## Supported Rust Versions
+//!
+//! Tracing is built against the latest stable release. The minimum supported
+//! version is 1.49. The current Tracing version is not guaranteed to build on
+//! Rust versions earlier than the minimum supported version.
+//!
+//! Tracing follows the same compiler support policies as the rest of the Tokio
+//! project. The current stable Rust compiler and the three most recent minor
+//! versions before it will always be supported. For example, if the current
+//! stable compiler version is 1.45, the minimum supported version will not be
+//! increased past 1.42, three minor versions prior. Increasing the minimum
+//! supported compiler version is not considered a semver breaking change as
+//! long as doing so complies with this policy.
+//!
+//! [`log`]: https://docs.rs/log/0.4.6/log/
+//! [span]: mod@span
+//! [spans]: mod@span
+//! [`Span`]: span::Span
+//! [`in_scope`]: span::Span::in_scope
+//! [event]: Event
+//! [events]: Event
+//! [`Subscriber`]: subscriber::Subscriber
+//! [Subscriber::event]: subscriber::Subscriber::event
+//! [`enter`]: subscriber::Subscriber::enter
+//! [`exit`]: subscriber::Subscriber::exit
+//! [`enabled`]: subscriber::Subscriber::enabled
+//! [metadata]: Metadata
+//! [`field::display`]: field::display
+//! [`field::debug`]: field::debug
+//! [`set_global_default`]: subscriber::set_global_default
+//! [`with_default`]: subscriber::with_default
+//! [`tokio-rs/tracing`]: https://github.com/tokio-rs/tracing
+//! [`tracing-futures`]: https://crates.io/crates/tracing-futures
+//! [`tracing-subscriber`]: https://crates.io/crates/tracing-subscriber
+//! [`tracing-log`]: https://crates.io/crates/tracing-log
+//! [`tracing-timing`]: https://crates.io/crates/tracing-timing
+//! [`tracing-appender`]: https://crates.io/crates/tracing-appender
+//! [`env_logger`]: https://crates.io/crates/env_logger
+//! [`FmtSubscriber`]: https://docs.rs/tracing-subscriber/latest/tracing_subscriber/fmt/struct.Subscriber.html
+//! [static verbosity level]: level_filters#compile-time-filters
+//! [instrument]: https://docs.rs/tracing-attributes/latest/tracing_attributes/attr.instrument.html
+//! [flags]: #crate-feature-flags
+#![cfg_attr(not(feature = "std"), no_std)]
+#![cfg_attr(docsrs, feature(doc_cfg), deny(rustdoc::broken_intra_doc_links))]
+#![doc(html_root_url = "https://docs.rs/tracing/0.1.37")]
+#![doc(
+ html_logo_url = "https://raw.githubusercontent.com/tokio-rs/tracing/master/assets/logo-type.png",
+ issue_tracker_base_url = "https://github.com/tokio-rs/tracing/issues/"
+)]
+#![warn(
+ missing_debug_implementations,
+ missing_docs,
+ rust_2018_idioms,
+ unreachable_pub,
+ bad_style,
+ const_err,
+ dead_code,
+ improper_ctypes,
+ non_shorthand_field_patterns,
+ no_mangle_generic_items,
+ overflowing_literals,
+ path_statements,
+ patterns_in_fns_without_body,
+ private_in_public,
+ unconditional_recursion,
+ unused,
+ unused_allocation,
+ unused_comparisons,
+ unused_parens,
+ while_true
+)]
+
+#[cfg(not(feature = "std"))]
+extern crate alloc;
+
+// Somehow this `use` statement is necessary for us to re-export the `core`
+// macros on Rust 1.26.0. I'm not sure how this makes it work, but it does.
+#[allow(unused_imports)]
+#[doc(hidden)]
+use tracing_core::*;
+
+#[doc(inline)]
+pub use self::instrument::Instrument;
+pub use self::{dispatcher::Dispatch, event::Event, field::Value, subscriber::Subscriber};
+
+#[doc(hidden)]
+pub use self::span::Id;
+
+#[doc(hidden)]
+pub use tracing_core::{
+ callsite::{self, Callsite},
+ metadata,
+};
+pub use tracing_core::{event, Level, Metadata};
+
+#[doc(inline)]
+pub use self::span::Span;
+#[cfg(feature = "attributes")]
+#[cfg_attr(docsrs, doc(cfg(feature = "attributes")))]
+#[doc(inline)]
+pub use tracing_attributes::instrument;
+
+#[macro_use]
+mod macros;
+
+pub mod dispatcher;
+pub mod field;
+/// Attach a span to a `std::future::Future`.
+pub mod instrument;
+pub mod level_filters;
+pub mod span;
+pub(crate) mod stdlib;
+pub mod subscriber;
+
+#[doc(hidden)]
+pub mod __macro_support {
+ pub use crate::callsite::Callsite;
+ use crate::{subscriber::Interest, Metadata};
+ pub use core::concat;
+
+ /// Callsite implementation used by macro-generated code.
+ ///
+ /// /!\ WARNING: This is *not* a stable API! /!\
+ /// This type, and all code contained in the `__macro_support` module, is
+ /// a *private* API of `tracing`. It is exposed publicly because it is used
+ /// by the `tracing` macros, but it is not part of the stable versioned API.
+ /// Breaking changes to this module may occur in small-numbered versions
+ /// without warning.
+ pub use tracing_core::callsite::DefaultCallsite as MacroCallsite;
+
+ /// /!\ WARNING: This is *not* a stable API! /!\
+ /// This function, and all code contained in the `__macro_support` module, is
+ /// a *private* API of `tracing`. It is exposed publicly because it is used
+ /// by the `tracing` macros, but it is not part of the stable versioned API.
+ /// Breaking changes to this module may occur in small-numbered versions
+ /// without warning.
+ pub fn __is_enabled(meta: &Metadata<'static>, interest: Interest) -> bool {
+ interest.is_always() || crate::dispatcher::get_default(|default| default.enabled(meta))
+ }
+
+ /// /!\ WARNING: This is *not* a stable API! /!\
+ /// This function, and all code contained in the `__macro_support` module, is
+ /// a *private* API of `tracing`. It is exposed publicly because it is used
+ /// by the `tracing` macros, but it is not part of the stable versioned API.
+ /// Breaking changes to this module may occur in small-numbered versions
+ /// without warning.
+ #[inline]
+ #[cfg(feature = "log")]
+ pub fn __disabled_span(meta: &'static Metadata<'static>) -> crate::Span {
+ crate::Span::new_disabled(meta)
+ }
+
+ /// /!\ WARNING: This is *not* a stable API! /!\
+ /// This function, and all code contained in the `__macro_support` module, is
+ /// a *private* API of `tracing`. It is exposed publicly because it is used
+ /// by the `tracing` macros, but it is not part of the stable versioned API.
+ /// Breaking changes to this module may occur in small-numbered versions
+ /// without warning.
+ #[inline]
+ #[cfg(not(feature = "log"))]
+ pub fn __disabled_span(_: &'static Metadata<'static>) -> crate::Span {
+ crate::Span::none()
+ }
+
+ /// /!\ WARNING: This is *not* a stable API! /!\
+ /// This function, and all code contained in the `__macro_support` module, is
+ /// a *private* API of `tracing`. It is exposed publicly because it is used
+ /// by the `tracing` macros, but it is not part of the stable versioned API.
+ /// Breaking changes to this module may occur in small-numbered versions
+ /// without warning.
+ #[cfg(feature = "log")]
+ pub fn __tracing_log(
+ meta: &Metadata<'static>,
+ logger: &'static dyn log::Log,
+ log_meta: log::Metadata<'_>,
+ values: &tracing_core::field::ValueSet<'_>,
+ ) {
+ logger.log(
+ &crate::log::Record::builder()
+ .file(meta.file())
+ .module_path(meta.module_path())
+ .line(meta.line())
+ .metadata(log_meta)
+ .args(format_args!(
+ "{}",
+ crate::log::LogValueSet {
+ values,
+ is_first: true
+ }
+ ))
+ .build(),
+ );
+ }
+}
+
+#[cfg(feature = "log")]
+#[doc(hidden)]
+pub mod log {
+ use core::fmt;
+ pub use log::*;
+ use tracing_core::field::{Field, ValueSet, Visit};
+
+ /// Utility to format [`ValueSet`]s for logging.
+ pub(crate) struct LogValueSet<'a> {
+ pub(crate) values: &'a ValueSet<'a>,
+ pub(crate) is_first: bool,
+ }
+
+ impl<'a> fmt::Display for LogValueSet<'a> {
+ #[inline]
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ struct LogVisitor<'a, 'b> {
+ f: &'a mut fmt::Formatter<'b>,
+ is_first: bool,
+ result: fmt::Result,
+ }
+
+ impl Visit for LogVisitor<'_, '_> {
+ fn record_debug(&mut self, field: &Field, value: &dyn fmt::Debug) {
+ let res = if self.is_first {
+ self.is_first = false;
+ if field.name() == "message" {
+ write!(self.f, "{:?}", value)
+ } else {
+ write!(self.f, "{}={:?}", field.name(), value)
+ }
+ } else {
+ write!(self.f, " {}={:?}", field.name(), value)
+ };
+ if let Err(err) = res {
+ self.result = self.result.and(Err(err));
+ }
+ }
+
+ fn record_str(&mut self, field: &Field, value: &str) {
+ if field.name() == "message" {
+ self.record_debug(field, &format_args!("{}", value))
+ } else {
+ self.record_debug(field, &value)
+ }
+ }
+ }
+
+ let mut visit = LogVisitor {
+ f,
+ is_first: self.is_first,
+ result: Ok(()),
+ };
+ self.values.record(&mut visit);
+ visit.result
+ }
+ }
+}
+
+mod sealed {
+ pub trait Sealed {}
+}
diff --git a/vendor/tracing-0.1.37/src/macros.rs b/vendor/tracing-0.1.37/src/macros.rs
new file mode 100644
index 000000000..f3968e5c1
--- /dev/null
+++ b/vendor/tracing-0.1.37/src/macros.rs
@@ -0,0 +1,2504 @@
+/// Constructs a new span.
+///
+/// See [the top-level documentation][lib] for details on the syntax accepted by
+/// this macro.
+///
+/// [lib]: crate#using-the-macros
+///
+/// # Examples
+///
+/// Creating a new span:
+/// ```
+/// # use tracing::{span, Level};
+/// # fn main() {
+/// let span = span!(Level::TRACE, "my span");
+/// let _enter = span.enter();
+/// // do work inside the span...
+/// # }
+/// ```
+#[macro_export]
+macro_rules! span {
+ (target: $target:expr, parent: $parent:expr, $lvl:expr, $name:expr) => {
+ $crate::span!(target: $target, parent: $parent, $lvl, $name,)
+ };
+ (target: $target:expr, parent: $parent:expr, $lvl:expr, $name:expr, $($fields:tt)*) => {
+ {
+ use $crate::__macro_support::Callsite as _;
+ static CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
+ name: $name,
+ kind: $crate::metadata::Kind::SPAN,
+ target: $target,
+ level: $lvl,
+ fields: $($fields)*
+ };
+ let mut interest = $crate::subscriber::Interest::never();
+ if $crate::level_enabled!($lvl)
+ && { interest = CALLSITE.interest(); !interest.is_never() }
+ && $crate::__macro_support::__is_enabled(CALLSITE.metadata(), interest)
+ {
+ let meta = CALLSITE.metadata();
+ // span with explicit parent
+ $crate::Span::child_of(
+ $parent,
+ meta,
+ &$crate::valueset!(meta.fields(), $($fields)*),
+ )
+ } else {
+ let span = $crate::__macro_support::__disabled_span(CALLSITE.metadata());
+ $crate::if_log_enabled! { $lvl, {
+ span.record_all(&$crate::valueset!(CALLSITE.metadata().fields(), $($fields)*));
+ }};
+ span
+ }
+ }
+ };
+ (target: $target:expr, $lvl:expr, $name:expr, $($fields:tt)*) => {
+ {
+ use $crate::__macro_support::Callsite as _;
+ static CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
+ name: $name,
+ kind: $crate::metadata::Kind::SPAN,
+ target: $target,
+ level: $lvl,
+ fields: $($fields)*
+ };
+ let mut interest = $crate::subscriber::Interest::never();
+ if $crate::level_enabled!($lvl)
+ && { interest = CALLSITE.interest(); !interest.is_never() }
+ && $crate::__macro_support::__is_enabled(CALLSITE.metadata(), interest)
+ {
+ let meta = CALLSITE.metadata();
+ // span with contextual parent
+ $crate::Span::new(
+ meta,
+ &$crate::valueset!(meta.fields(), $($fields)*),
+ )
+ } else {
+ let span = $crate::__macro_support::__disabled_span(CALLSITE.metadata());
+ $crate::if_log_enabled! { $lvl, {
+ span.record_all(&$crate::valueset!(CALLSITE.metadata().fields(), $($fields)*));
+ }};
+ span
+ }
+ }
+ };
+ (target: $target:expr, parent: $parent:expr, $lvl:expr, $name:expr) => {
+ $crate::span!(target: $target, parent: $parent, $lvl, $name,)
+ };
+ (parent: $parent:expr, $lvl:expr, $name:expr, $($fields:tt)*) => {
+ $crate::span!(
+ target: module_path!(),
+ parent: $parent,
+ $lvl,
+ $name,
+ $($fields)*
+ )
+ };
+ (parent: $parent:expr, $lvl:expr, $name:expr) => {
+ $crate::span!(
+ target: module_path!(),
+ parent: $parent,
+ $lvl,
+ $name,
+ )
+ };
+ (target: $target:expr, $lvl:expr, $name:expr, $($fields:tt)*) => {
+ $crate::span!(
+ target: $target,
+ $lvl,
+ $name,
+ $($fields)*
+ )
+ };
+ (target: $target:expr, $lvl:expr, $name:expr) => {
+ $crate::span!(target: $target, $lvl, $name,)
+ };
+ ($lvl:expr, $name:expr, $($fields:tt)*) => {
+ $crate::span!(
+ target: module_path!(),
+ $lvl,
+ $name,
+ $($fields)*
+ )
+ };
+ ($lvl:expr, $name:expr) => {
+ $crate::span!(
+ target: module_path!(),
+ $lvl,
+ $name,
+ )
+ };
+}
+
+/// Constructs a span at the trace level.
+///
+/// [Fields] and [attributes] are set using the same syntax as the [`span!`]
+/// macro.
+///
+/// See [the top-level documentation][lib] for details on the syntax accepted by
+/// this macro.
+///
+/// [lib]: crate#using-the-macros
+/// [attributes]: crate#configuring-attributes
+/// [Fields]: crate#recording-fields
+/// [`span!`]: crate::span!
+///
+/// # Examples
+///
+/// ```rust
+/// # use tracing::{trace_span, span, Level};
+/// # fn main() {
+/// trace_span!("my_span");
+/// // is equivalent to:
+/// span!(Level::TRACE, "my_span");
+/// # }
+/// ```
+///
+/// ```rust
+/// # use tracing::{trace_span, span, Level};
+/// # fn main() {
+/// let span = trace_span!("my span");
+/// span.in_scope(|| {
+/// // do work inside the span...
+/// });
+/// # }
+/// ```
+#[macro_export]
+macro_rules! trace_span {
+ (target: $target:expr, parent: $parent:expr, $name:expr, $($field:tt)*) => {
+ $crate::span!(
+ target: $target,
+ parent: $parent,
+ $crate::Level::TRACE,
+ $name,
+ $($field)*
+ )
+ };
+ (target: $target:expr, parent: $parent:expr, $name:expr) => {
+ $crate::trace_span!(target: $target, parent: $parent, $name,)
+ };
+ (parent: $parent:expr, $name:expr, $($field:tt)*) => {
+ $crate::span!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::TRACE,
+ $name,
+ $($field)*
+ )
+ };
+ (parent: $parent:expr, $name:expr) => {
+ $crate::trace_span!(parent: $parent, $name,)
+ };
+ (target: $target:expr, $name:expr, $($field:tt)*) => {
+ $crate::span!(
+ target: $target,
+ $crate::Level::TRACE,
+ $name,
+ $($field)*
+ )
+ };
+ (target: $target:expr, $name:expr) => {
+ $crate::trace_span!(target: $target, $name,)
+ };
+ ($name:expr, $($field:tt)*) => {
+ $crate::span!(
+ target: module_path!(),
+ $crate::Level::TRACE,
+ $name,
+ $($field)*
+ )
+ };
+ ($name:expr) => { $crate::trace_span!($name,) };
+}
+
+/// Constructs a span at the debug level.
+///
+/// [Fields] and [attributes] are set using the same syntax as the [`span!`]
+/// macro.
+///
+/// See [the top-level documentation][lib] for details on the syntax accepted by
+/// this macro.
+///
+/// [lib]: crate#using-the-macros
+/// [attributes]: crate#configuring-attributes
+/// [Fields]: crate#recording-fields
+/// [`span!`]: crate::span!
+///
+/// # Examples
+///
+/// ```rust
+/// # use tracing::{debug_span, span, Level};
+/// # fn main() {
+/// debug_span!("my_span");
+/// // is equivalent to:
+/// span!(Level::DEBUG, "my_span");
+/// # }
+/// ```
+///
+/// ```rust
+/// # use tracing::debug_span;
+/// # fn main() {
+/// let span = debug_span!("my span");
+/// span.in_scope(|| {
+/// // do work inside the span...
+/// });
+/// # }
+/// ```
+#[macro_export]
+macro_rules! debug_span {
+ (target: $target:expr, parent: $parent:expr, $name:expr, $($field:tt)*) => {
+ $crate::span!(
+ target: $target,
+ parent: $parent,
+ $crate::Level::DEBUG,
+ $name,
+ $($field)*
+ )
+ };
+ (target: $target:expr, parent: $parent:expr, $name:expr) => {
+ $crate::debug_span!(target: $target, parent: $parent, $name,)
+ };
+ (parent: $parent:expr, $name:expr, $($field:tt)*) => {
+ $crate::span!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::DEBUG,
+ $name,
+ $($field)*
+ )
+ };
+ (parent: $parent:expr, $name:expr) => {
+ $crate::debug_span!(parent: $parent, $name,)
+ };
+ (target: $target:expr, $name:expr, $($field:tt)*) => {
+ $crate::span!(
+ target: $target,
+ $crate::Level::DEBUG,
+ $name,
+ $($field)*
+ )
+ };
+ (target: $target:expr, $name:expr) => {
+ $crate::debug_span!(target: $target, $name,)
+ };
+ ($name:expr, $($field:tt)*) => {
+ $crate::span!(
+ target: module_path!(),
+ $crate::Level::DEBUG,
+ $name,
+ $($field)*
+ )
+ };
+ ($name:expr) => {$crate::debug_span!($name,)};
+}
+
+/// Constructs a span at the info level.
+///
+/// [Fields] and [attributes] are set using the same syntax as the [`span!`]
+/// macro.
+///
+/// See [the top-level documentation][lib] for details on the syntax accepted by
+/// this macro.
+///
+/// [lib]: crate#using-the-macros
+/// [attributes]: crate#configuring-attributes
+/// [Fields]: crate#recording-fields
+/// [`span!`]: crate::span!
+///
+/// # Examples
+///
+/// ```rust
+/// # use tracing::{span, info_span, Level};
+/// # fn main() {
+/// info_span!("my_span");
+/// // is equivalent to:
+/// span!(Level::INFO, "my_span");
+/// # }
+/// ```
+///
+/// ```rust
+/// # use tracing::info_span;
+/// # fn main() {
+/// let span = info_span!("my span");
+/// span.in_scope(|| {
+/// // do work inside the span...
+/// });
+/// # }
+/// ```
+#[macro_export]
+macro_rules! info_span {
+ (target: $target:expr, parent: $parent:expr, $name:expr, $($field:tt)*) => {
+ $crate::span!(
+ target: $target,
+ parent: $parent,
+ $crate::Level::INFO,
+ $name,
+ $($field)*
+ )
+ };
+ (target: $target:expr, parent: $parent:expr, $name:expr) => {
+ $crate::info_span!(target: $target, parent: $parent, $name,)
+ };
+ (parent: $parent:expr, $name:expr, $($field:tt)*) => {
+ $crate::span!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::INFO,
+ $name,
+ $($field)*
+ )
+ };
+ (parent: $parent:expr, $name:expr) => {
+ $crate::info_span!(parent: $parent, $name,)
+ };
+ (target: $target:expr, $name:expr, $($field:tt)*) => {
+ $crate::span!(
+ target: $target,
+ $crate::Level::INFO,
+ $name,
+ $($field)*
+ )
+ };
+ (target: $target:expr, $name:expr) => {
+ $crate::info_span!(target: $target, $name,)
+ };
+ ($name:expr, $($field:tt)*) => {
+ $crate::span!(
+ target: module_path!(),
+ $crate::Level::INFO,
+ $name,
+ $($field)*
+ )
+ };
+ ($name:expr) => {$crate::info_span!($name,)};
+}
+
+/// Constructs a span at the warn level.
+///
+/// [Fields] and [attributes] are set using the same syntax as the [`span!`]
+/// macro.
+///
+/// See [the top-level documentation][lib] for details on the syntax accepted by
+/// this macro.
+///
+/// [lib]: crate#using-the-macros
+/// [attributes]: crate#configuring-attributes
+/// [Fields]: crate#recording-fields
+/// [`span!`]: crate::span!
+///
+/// # Examples
+///
+/// ```rust
+/// # use tracing::{warn_span, span, Level};
+/// # fn main() {
+/// warn_span!("my_span");
+/// // is equivalent to:
+/// span!(Level::WARN, "my_span");
+/// # }
+/// ```
+///
+/// ```rust
+/// use tracing::warn_span;
+/// # fn main() {
+/// let span = warn_span!("my span");
+/// span.in_scope(|| {
+/// // do work inside the span...
+/// });
+/// # }
+/// ```
+#[macro_export]
+macro_rules! warn_span {
+ (target: $target:expr, parent: $parent:expr, $name:expr, $($field:tt)*) => {
+ $crate::span!(
+ target: $target,
+ parent: $parent,
+ $crate::Level::WARN,
+ $name,
+ $($field)*
+ )
+ };
+ (target: $target:expr, parent: $parent:expr, $name:expr) => {
+ $crate::warn_span!(target: $target, parent: $parent, $name,)
+ };
+ (parent: $parent:expr, $name:expr, $($field:tt)*) => {
+ $crate::span!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::WARN,
+ $name,
+ $($field)*
+ )
+ };
+ (parent: $parent:expr, $name:expr) => {
+ $crate::warn_span!(parent: $parent, $name,)
+ };
+ (target: $target:expr, $name:expr, $($field:tt)*) => {
+ $crate::span!(
+ target: $target,
+ $crate::Level::WARN,
+ $name,
+ $($field)*
+ )
+ };
+ (target: $target:expr, $name:expr) => {
+ $crate::warn_span!(target: $target, $name,)
+ };
+ ($name:expr, $($field:tt)*) => {
+ $crate::span!(
+ target: module_path!(),
+ $crate::Level::WARN,
+ $name,
+ $($field)*
+ )
+ };
+ ($name:expr) => {$crate::warn_span!($name,)};
+}
+/// Constructs a span at the error level.
+///
+/// [Fields] and [attributes] are set using the same syntax as the [`span!`]
+/// macro.
+///
+/// See [the top-level documentation][lib] for details on the syntax accepted by
+/// this macro.
+///
+/// [lib]: crate#using-the-macros
+/// [attributes]: crate#configuring-attributes
+/// [Fields]: crate#recording-fields
+/// [`span!`]: crate::span!
+///
+/// # Examples
+///
+/// ```rust
+/// # use tracing::{span, error_span, Level};
+/// # fn main() {
+/// error_span!("my_span");
+/// // is equivalent to:
+/// span!(Level::ERROR, "my_span");
+/// # }
+/// ```
+///
+/// ```rust
+/// # use tracing::error_span;
+/// # fn main() {
+/// let span = error_span!("my span");
+/// span.in_scope(|| {
+/// // do work inside the span...
+/// });
+/// # }
+/// ```
+#[macro_export]
+macro_rules! error_span {
+ (target: $target:expr, parent: $parent:expr, $name:expr, $($field:tt)*) => {
+ $crate::span!(
+ target: $target,
+ parent: $parent,
+ $crate::Level::ERROR,
+ $name,
+ $($field)*
+ )
+ };
+ (target: $target:expr, parent: $parent:expr, $name:expr) => {
+ $crate::error_span!(target: $target, parent: $parent, $name,)
+ };
+ (parent: $parent:expr, $name:expr, $($field:tt)*) => {
+ $crate::span!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::ERROR,
+ $name,
+ $($field)*
+ )
+ };
+ (parent: $parent:expr, $name:expr) => {
+ $crate::error_span!(parent: $parent, $name,)
+ };
+ (target: $target:expr, $name:expr, $($field:tt)*) => {
+ $crate::span!(
+ target: $target,
+ $crate::Level::ERROR,
+ $name,
+ $($field)*
+ )
+ };
+ (target: $target:expr, $name:expr) => {
+ $crate::error_span!(target: $target, $name,)
+ };
+ ($name:expr, $($field:tt)*) => {
+ $crate::span!(
+ target: module_path!(),
+ $crate::Level::ERROR,
+ $name,
+ $($field)*
+ )
+ };
+ ($name:expr) => {$crate::error_span!($name,)};
+}
+
+/// Constructs a new `Event`.
+///
+/// The event macro is invoked with a `Level` and up to 32 key-value fields.
+/// Optionally, a format string and arguments may follow the fields; this will
+/// be used to construct an implicit field named "message".
+///
+/// See [the top-level documentation][lib] for details on the syntax accepted by
+/// this macro.
+///
+/// [lib]: crate#using-the-macros
+///
+/// # Examples
+///
+/// ```rust
+/// use tracing::{event, Level};
+///
+/// # fn main() {
+/// let data = (42, "forty-two");
+/// let private_data = "private";
+/// let error = "a bad error";
+///
+/// event!(Level::ERROR, %error, "Received error");
+/// event!(
+/// target: "app_events",
+/// Level::WARN,
+/// private_data,
+/// ?data,
+/// "App warning: {}",
+/// error
+/// );
+/// event!(Level::INFO, the_answer = data.0);
+/// # }
+/// ```
+///
+// /// Note that *unlike `span!`*, `event!` requires a value for all fields. As
+// /// events are recorded immediately when the macro is invoked, there is no
+// /// opportunity for fields to be recorded later. A trailing comma on the final
+// /// field is valid.
+// ///
+// /// For example, the following does not compile:
+// /// ```rust,compile_fail
+// /// # use tracing::{Level, event};
+// /// # fn main() {
+// /// event!(Level::INFO, foo = 5, bad_field, bar = "hello")
+// /// #}
+// /// ```
+#[macro_export]
+macro_rules! event {
+ (target: $target:expr, parent: $parent:expr, $lvl:expr, { $($fields:tt)* } )=> ({
+ use $crate::__macro_support::Callsite as _;
+ static CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
+ name: $crate::__macro_support::concat!(
+ "event ",
+ file!(),
+ ":",
+ line!()
+ ),
+ kind: $crate::metadata::Kind::EVENT,
+ target: $target,
+ level: $lvl,
+ fields: $($fields)*
+ };
+
+ let enabled = $crate::level_enabled!($lvl) && {
+ let interest = CALLSITE.interest();
+ !interest.is_never() && $crate::__macro_support::__is_enabled(CALLSITE.metadata(), interest)
+ };
+ if enabled {
+ (|value_set: $crate::field::ValueSet| {
+ $crate::__tracing_log!(
+ $lvl,
+ CALLSITE,
+ &value_set
+ );
+ let meta = CALLSITE.metadata();
+ // event with explicit parent
+ $crate::Event::child_of(
+ $parent,
+ meta,
+ &value_set
+ );
+ })($crate::valueset!(CALLSITE.metadata().fields(), $($fields)*));
+ } else {
+ $crate::__tracing_log!(
+ $lvl,
+ CALLSITE,
+ &$crate::valueset!(CALLSITE.metadata().fields(), $($fields)*)
+ );
+ }
+ });
+
+ (target: $target:expr, parent: $parent:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
+ $crate::event!(
+ target: $target,
+ parent: $parent,
+ $lvl,
+ { message = format_args!($($arg)+), $($fields)* }
+ )
+ );
+ (target: $target:expr, parent: $parent:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
+ $crate::event!(target: $target, parent: $parent, $lvl, { $($k).+ = $($fields)* })
+ );
+ (target: $target:expr, parent: $parent:expr, $lvl:expr, $($arg:tt)+) => (
+ $crate::event!(target: $target, parent: $parent, $lvl, { $($arg)+ })
+ );
+ (target: $target:expr, $lvl:expr, { $($fields:tt)* } )=> ({
+ use $crate::__macro_support::Callsite as _;
+ static CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
+ name: $crate::__macro_support::concat!(
+ "event ",
+ file!(),
+ ":",
+ line!()
+ ),
+ kind: $crate::metadata::Kind::EVENT,
+ target: $target,
+ level: $lvl,
+ fields: $($fields)*
+ };
+ let enabled = $crate::level_enabled!($lvl) && {
+ let interest = CALLSITE.interest();
+ !interest.is_never() && $crate::__macro_support::__is_enabled(CALLSITE.metadata(), interest)
+ };
+ if enabled {
+ (|value_set: $crate::field::ValueSet| {
+ let meta = CALLSITE.metadata();
+ // event with contextual parent
+ $crate::Event::dispatch(
+ meta,
+ &value_set
+ );
+ $crate::__tracing_log!(
+ $lvl,
+ CALLSITE,
+ &value_set
+ );
+ })($crate::valueset!(CALLSITE.metadata().fields(), $($fields)*));
+ } else {
+ $crate::__tracing_log!(
+ $lvl,
+ CALLSITE,
+ &$crate::valueset!(CALLSITE.metadata().fields(), $($fields)*)
+ );
+ }
+ });
+ (target: $target:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
+ $crate::event!(
+ target: $target,
+ $lvl,
+ { message = format_args!($($arg)+), $($fields)* }
+ )
+ );
+ (target: $target:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
+ $crate::event!(target: $target, $lvl, { $($k).+ = $($fields)* })
+ );
+ (target: $target:expr, $lvl:expr, $($arg:tt)+ ) => (
+ $crate::event!(target: $target, $lvl, { $($arg)+ })
+ );
+ (parent: $parent:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $lvl,
+ { message = format_args!($($arg)+), $($fields)* }
+ )
+ );
+ (parent: $parent:expr, $lvl:expr, $($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $lvl,
+ { $($k).+ = $($field)*}
+ )
+ );
+ (parent: $parent:expr, $lvl:expr, ?$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $lvl,
+ { ?$($k).+ = $($field)*}
+ )
+ );
+ (parent: $parent:expr, $lvl:expr, %$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $lvl,
+ { %$($k).+ = $($field)*}
+ )
+ );
+ (parent: $parent:expr, $lvl:expr, $($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $lvl,
+ { $($k).+, $($field)*}
+ )
+ );
+ (parent: $parent:expr, $lvl:expr, %$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $lvl,
+ { %$($k).+, $($field)*}
+ )
+ );
+ (parent: $parent:expr, $lvl:expr, ?$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $lvl,
+ { ?$($k).+, $($field)*}
+ )
+ );
+ (parent: $parent:expr, $lvl:expr, $($arg:tt)+ ) => (
+ $crate::event!(target: module_path!(), parent: $parent, $lvl, { $($arg)+ })
+ );
+ ( $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
+ $crate::event!(
+ target: module_path!(),
+ $lvl,
+ { message = format_args!($($arg)+), $($fields)* }
+ )
+ );
+ ( $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
+ $crate::event!(
+ target: module_path!(),
+ $lvl,
+ { message = format_args!($($arg)+), $($fields)* }
+ )
+ );
+ ($lvl:expr, $($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $lvl,
+ { $($k).+ = $($field)*}
+ )
+ );
+ ($lvl:expr, $($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $lvl,
+ { $($k).+, $($field)*}
+ )
+ );
+ ($lvl:expr, ?$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $lvl,
+ { ?$($k).+, $($field)*}
+ )
+ );
+ ($lvl:expr, %$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $lvl,
+ { %$($k).+, $($field)*}
+ )
+ );
+ ($lvl:expr, ?$($k:ident).+) => (
+ $crate::event!($lvl, ?$($k).+,)
+ );
+ ($lvl:expr, %$($k:ident).+) => (
+ $crate::event!($lvl, %$($k).+,)
+ );
+ ($lvl:expr, $($k:ident).+) => (
+ $crate::event!($lvl, $($k).+,)
+ );
+ ( $lvl:expr, $($arg:tt)+ ) => (
+ $crate::event!(target: module_path!(), $lvl, { $($arg)+ })
+ );
+}
+
+/// Tests whether an event with the specified level and target would be enabled.
+///
+/// This is similar to [`enabled!`], but queries the current subscriber specifically for
+/// an event, whereas [`enabled!`] queries for an event _or_ span.
+///
+/// See the documentation for [`enabled!]` for more details on using this macro.
+/// See also [`span_enabled!`].
+///
+/// # Examples
+///
+/// ```rust
+/// # use tracing::{event_enabled, Level};
+/// if event_enabled!(target: "my_crate", Level::DEBUG) {
+/// // some expensive work...
+/// }
+/// // simpler
+/// if event_enabled!(Level::DEBUG) {
+/// // some expensive work...
+/// }
+/// // with fields
+/// if event_enabled!(Level::DEBUG, foo_field) {
+/// // some expensive work...
+/// }
+/// ```
+///
+/// [`enabled!`]: crate::enabled
+/// [`span_enabled!`]: crate::span_enabled
+#[macro_export]
+macro_rules! event_enabled {
+ ($($rest:tt)*)=> (
+ $crate::enabled!(kind: $crate::metadata::Kind::EVENT, $($rest)*)
+ )
+}
+
+/// Tests whether a span with the specified level and target would be enabled.
+///
+/// This is similar to [`enabled!`], but queries the current subscriber specifically for
+/// an event, whereas [`enabled!`] queries for an event _or_ span.
+///
+/// See the documentation for [`enabled!]` for more details on using this macro.
+/// See also [`span_enabled!`].
+///
+/// # Examples
+///
+/// ```rust
+/// # use tracing::{span_enabled, Level};
+/// if span_enabled!(target: "my_crate", Level::DEBUG) {
+/// // some expensive work...
+/// }
+/// // simpler
+/// if span_enabled!(Level::DEBUG) {
+/// // some expensive work...
+/// }
+/// // with fields
+/// if span_enabled!(Level::DEBUG, foo_field) {
+/// // some expensive work...
+/// }
+/// ```
+///
+/// [`enabled!`]: crate::enabled
+/// [`span_enabled!`]: crate::span_enabled
+#[macro_export]
+macro_rules! span_enabled {
+ ($($rest:tt)*)=> (
+ $crate::enabled!(kind: $crate::metadata::Kind::SPAN, $($rest)*)
+ )
+}
+
+/// Checks whether a span or event is [enabled] based on the provided [metadata].
+///
+/// [enabled]: crate::Subscriber::enabled
+/// [metadata]: crate::Metadata
+///
+/// This macro is a specialized tool: it is intended to be used prior
+/// to an expensive computation required *just* for that event, but
+/// *cannot* be done as part of an argument to that event, such as
+/// when multiple events are emitted (e.g., iterating over a collection
+/// and emitting an event for each item).
+///
+/// # Usage
+///
+/// [Subscribers] can make filtering decisions based all the data included in a
+/// span or event's [`Metadata`]. This means that it is possible for `enabled!`
+/// to return a _false positive_ (indicating that something would be enabled
+/// when it actually would not be) or a _false negative_ (indicating that
+/// something would be disabled when it would actually be enabled).
+///
+/// [Subscribers]: crate::subscriber::Subscriber
+/// [`Metadata`]: crate::metadata::Metadata
+///
+/// This occurs when a subscriber is using a _more specific_ filter than the
+/// metadata provided to the `enabled!` macro. Some situations that can result
+/// in false positives or false negatives include:
+///
+/// - If a subscriber is using a filter which may enable a span or event based
+/// on field names, but `enabled!` is invoked without listing field names,
+/// `enabled!` may return a false negative if a specific field name would
+/// cause the subscriber to enable something that would otherwise be disabled.
+/// - If a subscriber is using a filter which enables or disables specific events by
+/// file path and line number, a particular event may be enabled/disabled
+/// even if an `enabled!` invocation with the same level, target, and fields
+/// indicated otherwise.
+/// - The subscriber can choose to enable _only_ spans or _only_ events, which `enabled`
+/// will not reflect.
+///
+/// `enabled!()` requires a [level](crate::Level) argument, an optional `target:`
+/// argument, and an optional set of field names. If the fields are not provided,
+/// they are considered to be unknown. `enabled!` attempts to match the
+/// syntax of `event!()` as closely as possible, which can be seen in the
+/// examples below.
+///
+/// # Examples
+///
+/// If the current subscriber is interested in recording `DEBUG`-level spans and
+/// events in the current file and module path, this will evaluate to true:
+/// ```rust
+/// use tracing::{enabled, Level};
+///
+/// if enabled!(Level::DEBUG) {
+/// // some expensive work...
+/// }
+/// ```
+///
+/// If the current subscriber is interested in recording spans and events
+/// in the current file and module path, with the target "my_crate", and at the
+/// level `DEBUG`, this will evaluate to true:
+/// ```rust
+/// # use tracing::{enabled, Level};
+/// if enabled!(target: "my_crate", Level::DEBUG) {
+/// // some expensive work...
+/// }
+/// ```
+///
+/// If the current subscriber is interested in recording spans and events
+/// in the current file and module path, with the target "my_crate", at
+/// the level `DEBUG`, and with a field named "hello", this will evaluate
+/// to true:
+///
+/// ```rust
+/// # use tracing::{enabled, Level};
+/// if enabled!(target: "my_crate", Level::DEBUG, hello) {
+/// // some expensive work...
+/// }
+/// ```
+///
+/// # Alternatives
+///
+/// `enabled!` queries subscribers with [`Metadata`] where
+/// [`is_event`] and [`is_span`] both return `false`. Alternatively,
+/// use [`event_enabled!`] or [`span_enabled!`] to ensure one of these
+/// returns true.
+///
+///
+/// [`Metadata`]: crate::Metadata
+/// [`is_event`]: crate::Metadata::is_event
+/// [`is_span`]: crate::Metadata::is_span
+/// [`enabled!`]: crate::enabled
+/// [`span_enabled!`]: crate::span_enabled
+#[macro_export]
+macro_rules! enabled {
+ (kind: $kind:expr, target: $target:expr, $lvl:expr, { $($fields:tt)* } )=> ({
+ if $crate::level_enabled!($lvl) {
+ use $crate::__macro_support::Callsite as _;
+ static CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
+ name: $crate::__macro_support::concat!(
+ "enabled ",
+ file!(),
+ ":",
+ line!()
+ ),
+ kind: $kind.hint(),
+ target: $target,
+ level: $lvl,
+ fields: $($fields)*
+ };
+ let interest = CALLSITE.interest();
+ if !interest.is_never() && $crate::__macro_support::__is_enabled(CALLSITE.metadata(), interest) {
+ let meta = CALLSITE.metadata();
+ $crate::dispatcher::get_default(|current| current.enabled(meta))
+ } else {
+ false
+ }
+ } else {
+ false
+ }
+ });
+ // Just target and level
+ (kind: $kind:expr, target: $target:expr, $lvl:expr ) => (
+ $crate::enabled!(kind: $kind, target: $target, $lvl, { })
+ );
+ (target: $target:expr, $lvl:expr ) => (
+ $crate::enabled!(kind: $crate::metadata::Kind::HINT, target: $target, $lvl, { })
+ );
+
+ // These four cases handle fields with no values
+ (kind: $kind:expr, target: $target:expr, $lvl:expr, $($field:tt)*) => (
+ $crate::enabled!(
+ kind: $kind,
+ target: $target,
+ $lvl,
+ { $($field)*}
+ )
+ );
+ (target: $target:expr, $lvl:expr, $($field:tt)*) => (
+ $crate::enabled!(
+ kind: $crate::metadata::Kind::HINT,
+ target: $target,
+ $lvl,
+ { $($field)*}
+ )
+ );
+
+ // Level and field case
+ (kind: $kind:expr, $lvl:expr, $($field:tt)*) => (
+ $crate::enabled!(
+ kind: $kind,
+ target: module_path!(),
+ $lvl,
+ { $($field)*}
+ )
+ );
+
+ // Simplest `enabled!` case
+ (kind: $kind:expr, $lvl:expr) => (
+ $crate::enabled!(kind: $kind, target: module_path!(), $lvl, { })
+ );
+ ($lvl:expr) => (
+ $crate::enabled!(kind: $crate::metadata::Kind::HINT, target: module_path!(), $lvl, { })
+ );
+
+ // Fallthrough from above
+ ($lvl:expr, $($field:tt)*) => (
+ $crate::enabled!(
+ kind: $crate::metadata::Kind::HINT,
+ target: module_path!(),
+ $lvl,
+ { $($field)*}
+ )
+ );
+}
+
+/// Constructs an event at the trace level.
+///
+/// This functions similarly to the [`event!`] macro. See [the top-level
+/// documentation][lib] for details on the syntax accepted by
+/// this macro.
+///
+/// [`event!`]: crate::event!
+/// [lib]: crate#using-the-macros
+///
+/// # Examples
+///
+/// ```rust
+/// use tracing::trace;
+/// # #[derive(Debug, Copy, Clone)] struct Position { x: f32, y: f32 }
+/// # impl Position {
+/// # const ORIGIN: Self = Self { x: 0.0, y: 0.0 };
+/// # fn dist(&self, other: Position) -> f32 {
+/// # let x = (other.x - self.x).exp2(); let y = (self.y - other.y).exp2();
+/// # (x + y).sqrt()
+/// # }
+/// # }
+/// # fn main() {
+/// let pos = Position { x: 3.234, y: -1.223 };
+/// let origin_dist = pos.dist(Position::ORIGIN);
+///
+/// trace!(position = ?pos, ?origin_dist);
+/// trace!(
+/// target: "app_events",
+/// position = ?pos,
+/// "x is {} and y is {}",
+/// if pos.x >= 0.0 { "positive" } else { "negative" },
+/// if pos.y >= 0.0 { "positive" } else { "negative" }
+/// );
+/// # }
+/// ```
+#[macro_export]
+macro_rules! trace {
+ (target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::TRACE, { $($field)* }, $($arg)*)
+ );
+ (target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ );
+ (target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ );
+ (target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ );
+ (target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::TRACE, {}, $($arg)+)
+ );
+ (parent: $parent:expr, { $($field:tt)+ }, $($arg:tt)+ ) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::TRACE,
+ { $($field)+ },
+ $($arg)+
+ )
+ );
+ (parent: $parent:expr, $($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::TRACE,
+ { $($k).+ = $($field)*}
+ )
+ );
+ (parent: $parent:expr, ?$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::TRACE,
+ { ?$($k).+ = $($field)*}
+ )
+ );
+ (parent: $parent:expr, %$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::TRACE,
+ { %$($k).+ = $($field)*}
+ )
+ );
+ (parent: $parent:expr, $($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::TRACE,
+ { $($k).+, $($field)*}
+ )
+ );
+ (parent: $parent:expr, ?$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::TRACE,
+ { ?$($k).+, $($field)*}
+ )
+ );
+ (parent: $parent:expr, %$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::TRACE,
+ { %$($k).+, $($field)*}
+ )
+ );
+ (parent: $parent:expr, $($arg:tt)+) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::TRACE,
+ {},
+ $($arg)+
+ )
+ );
+ (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::TRACE, { $($field)* }, $($arg)*)
+ );
+ (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::TRACE, { $($k).+ $($field)* })
+ );
+ (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::TRACE, { ?$($k).+ $($field)* })
+ );
+ (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::TRACE, { %$($k).+ $($field)* })
+ );
+ (target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(target: $target, $crate::Level::TRACE, {}, $($arg)+)
+ );
+ ({ $($field:tt)+ }, $($arg:tt)+ ) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::TRACE,
+ { $($field)+ },
+ $($arg)+
+ )
+ );
+ ($($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::TRACE,
+ { $($k).+ = $($field)*}
+ )
+ );
+ ($($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::TRACE,
+ { $($k).+, $($field)*}
+ )
+ );
+ (?$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::TRACE,
+ { ?$($k).+, $($field)*}
+ )
+ );
+ (%$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::TRACE,
+ { %$($k).+, $($field)*}
+ )
+ );
+ (?$($k:ident).+) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::TRACE,
+ { ?$($k).+ }
+ )
+ );
+ (%$($k:ident).+) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::TRACE,
+ { %$($k).+ }
+ )
+ );
+ ($($k:ident).+) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::TRACE,
+ { $($k).+ }
+ )
+ );
+ ($($arg:tt)+) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::TRACE,
+ {},
+ $($arg)+
+ )
+ );
+}
+
+/// Constructs an event at the debug level.
+///
+/// This functions similarly to the [`event!`] macro. See [the top-level
+/// documentation][lib] for details on the syntax accepted by
+/// this macro.
+///
+/// [`event!`]: crate::event!
+/// [lib]: crate#using-the-macros
+///
+/// # Examples
+///
+/// ```rust
+/// use tracing::debug;
+/// # fn main() {
+/// # #[derive(Debug)] struct Position { x: f32, y: f32 }
+///
+/// let pos = Position { x: 3.234, y: -1.223 };
+///
+/// debug!(?pos.x, ?pos.y);
+/// debug!(target: "app_events", position = ?pos, "New position");
+/// # }
+/// ```
+#[macro_export]
+macro_rules! debug {
+ (target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
+ );
+ (target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ );
+ (target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ );
+ (target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ );
+ (target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::DEBUG, {}, $($arg)+)
+ );
+ (parent: $parent:expr, { $($field:tt)+ }, $($arg:tt)+ ) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::DEBUG,
+ { $($field)+ },
+ $($arg)+
+ )
+ );
+ (parent: $parent:expr, $($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::DEBUG,
+ { $($k).+ = $($field)*}
+ )
+ );
+ (parent: $parent:expr, ?$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::DEBUG,
+ { ?$($k).+ = $($field)*}
+ )
+ );
+ (parent: $parent:expr, %$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::DEBUG,
+ { %$($k).+ = $($field)*}
+ )
+ );
+ (parent: $parent:expr, $($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::DEBUG,
+ { $($k).+, $($field)*}
+ )
+ );
+ (parent: $parent:expr, ?$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::DEBUG,
+ { ?$($k).+, $($field)*}
+ )
+ );
+ (parent: $parent:expr, %$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::DEBUG,
+ { %$($k).+, $($field)*}
+ )
+ );
+ (parent: $parent:expr, $($arg:tt)+) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::DEBUG,
+ {},
+ $($arg)+
+ )
+ );
+ (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
+ );
+ (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::DEBUG, { $($k).+ $($field)* })
+ );
+ (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::DEBUG, { ?$($k).+ $($field)* })
+ );
+ (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::DEBUG, { %$($k).+ $($field)* })
+ );
+ (target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(target: $target, $crate::Level::DEBUG, {}, $($arg)+)
+ );
+ ({ $($field:tt)+ }, $($arg:tt)+ ) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::DEBUG,
+ { $($field)+ },
+ $($arg)+
+ )
+ );
+ ($($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::DEBUG,
+ { $($k).+ = $($field)*}
+ )
+ );
+ (?$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::DEBUG,
+ { ?$($k).+ = $($field)*}
+ )
+ );
+ (%$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::DEBUG,
+ { %$($k).+ = $($field)*}
+ )
+ );
+ ($($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::DEBUG,
+ { $($k).+, $($field)*}
+ )
+ );
+ (?$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::DEBUG,
+ { ?$($k).+, $($field)*}
+ )
+ );
+ (%$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::DEBUG,
+ { %$($k).+, $($field)*}
+ )
+ );
+ (?$($k:ident).+) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::DEBUG,
+ { ?$($k).+ }
+ )
+ );
+ (%$($k:ident).+) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::DEBUG,
+ { %$($k).+ }
+ )
+ );
+ ($($k:ident).+) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::DEBUG,
+ { $($k).+ }
+ )
+ );
+ ($($arg:tt)+) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::DEBUG,
+ {},
+ $($arg)+
+ )
+ );
+}
+
+/// Constructs an event at the info level.
+///
+/// This functions similarly to the [`event!`] macro. See [the top-level
+/// documentation][lib] for details on the syntax accepted by
+/// this macro.
+///
+/// [`event!`]: crate::event!
+/// [lib]: crate#using-the-macros
+///
+/// # Examples
+///
+/// ```rust
+/// use tracing::info;
+/// # // this is so the test will still work in no-std mode
+/// # #[derive(Debug)]
+/// # pub struct Ipv4Addr;
+/// # impl Ipv4Addr { fn new(o1: u8, o2: u8, o3: u8, o4: u8) -> Self { Self } }
+/// # fn main() {
+/// # struct Connection { port: u32, speed: f32 }
+/// use tracing::field;
+///
+/// let addr = Ipv4Addr::new(127, 0, 0, 1);
+/// let conn = Connection { port: 40, speed: 3.20 };
+///
+/// info!(conn.port, "connected to {:?}", addr);
+/// info!(
+/// target: "connection_events",
+/// ip = ?addr,
+/// conn.port,
+/// ?conn.speed,
+/// );
+/// # }
+/// ```
+#[macro_export]
+macro_rules! info {
+ (target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::INFO, { $($field)* }, $($arg)*)
+ );
+ (target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ );
+ (target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ );
+ (target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ );
+ (target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::INFO, {}, $($arg)+)
+ );
+ (parent: $parent:expr, { $($field:tt)+ }, $($arg:tt)+ ) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::INFO,
+ { $($field)+ },
+ $($arg)+
+ )
+ );
+ (parent: $parent:expr, $($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::INFO,
+ { $($k).+ = $($field)*}
+ )
+ );
+ (parent: $parent:expr, ?$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::INFO,
+ { ?$($k).+ = $($field)*}
+ )
+ );
+ (parent: $parent:expr, %$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::INFO,
+ { %$($k).+ = $($field)*}
+ )
+ );
+ (parent: $parent:expr, $($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::INFO,
+ { $($k).+, $($field)*}
+ )
+ );
+ (parent: $parent:expr, ?$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::INFO,
+ { ?$($k).+, $($field)*}
+ )
+ );
+ (parent: $parent:expr, %$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::INFO,
+ { %$($k).+, $($field)*}
+ )
+ );
+ (parent: $parent:expr, $($arg:tt)+) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::INFO,
+ {},
+ $($arg)+
+ )
+ );
+ (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::INFO, { $($field)* }, $($arg)*)
+ );
+ (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::INFO, { $($k).+ $($field)* })
+ );
+ (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::INFO, { ?$($k).+ $($field)* })
+ );
+ (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::INFO, { $($k).+ $($field)* })
+ );
+ (target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(target: $target, $crate::Level::INFO, {}, $($arg)+)
+ );
+ ({ $($field:tt)+ }, $($arg:tt)+ ) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::INFO,
+ { $($field)+ },
+ $($arg)+
+ )
+ );
+ ($($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::INFO,
+ { $($k).+ = $($field)*}
+ )
+ );
+ (?$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::INFO,
+ { ?$($k).+ = $($field)*}
+ )
+ );
+ (%$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::INFO,
+ { %$($k).+ = $($field)*}
+ )
+ );
+ ($($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::INFO,
+ { $($k).+, $($field)*}
+ )
+ );
+ (?$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::INFO,
+ { ?$($k).+, $($field)*}
+ )
+ );
+ (%$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::INFO,
+ { %$($k).+, $($field)*}
+ )
+ );
+ (?$($k:ident).+) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::INFO,
+ { ?$($k).+ }
+ )
+ );
+ (%$($k:ident).+) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::INFO,
+ { %$($k).+ }
+ )
+ );
+ ($($k:ident).+) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::INFO,
+ { $($k).+ }
+ )
+ );
+ ($($arg:tt)+) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::INFO,
+ {},
+ $($arg)+
+ )
+ );
+}
+
+/// Constructs an event at the warn level.
+///
+/// This functions similarly to the [`event!`] macro. See [the top-level
+/// documentation][lib] for details on the syntax accepted by
+/// this macro.
+///
+/// [`event!`]: crate::event!
+/// [lib]: crate#using-the-macros
+///
+/// # Examples
+///
+/// ```rust
+/// use tracing::warn;
+/// # fn main() {
+///
+/// let warn_description = "Invalid Input";
+/// let input = &[0x27, 0x45];
+///
+/// warn!(?input, warning = warn_description);
+/// warn!(
+/// target: "input_events",
+/// warning = warn_description,
+/// "Received warning for input: {:?}", input,
+/// );
+/// # }
+/// ```
+#[macro_export]
+macro_rules! warn {
+ (target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::WARN, { $($field)* }, $($arg)*)
+ );
+ (target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ );
+ (target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ );
+ (target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ );
+ (target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::WARN, {}, $($arg)+)
+ );
+ (parent: $parent:expr, { $($field:tt)+ }, $($arg:tt)+ ) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::WARN,
+ { $($field)+ },
+ $($arg)+
+ )
+ );
+ (parent: $parent:expr, $($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::WARN,
+ { $($k).+ = $($field)*}
+ )
+ );
+ (parent: $parent:expr, ?$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::WARN,
+ { ?$($k).+ = $($field)*}
+ )
+ );
+ (parent: $parent:expr, %$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::WARN,
+ { %$($k).+ = $($field)*}
+ )
+ );
+ (parent: $parent:expr, $($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::WARN,
+ { $($k).+, $($field)*}
+ )
+ );
+ (parent: $parent:expr, ?$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::WARN,
+ { ?$($k).+, $($field)*}
+ )
+ );
+ (parent: $parent:expr, %$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::WARN,
+ { %$($k).+, $($field)*}
+ )
+ );
+ (parent: $parent:expr, $($arg:tt)+) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::WARN,
+ {},
+ $($arg)+
+ )
+ );
+ (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::WARN, { $($field)* }, $($arg)*)
+ );
+ (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::WARN, { $($k).+ $($field)* })
+ );
+ (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::WARN, { ?$($k).+ $($field)* })
+ );
+ (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::WARN, { %$($k).+ $($field)* })
+ );
+ (target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(target: $target, $crate::Level::WARN, {}, $($arg)+)
+ );
+ ({ $($field:tt)+ }, $($arg:tt)+ ) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::WARN,
+ { $($field)+ },
+ $($arg)+
+ )
+ );
+ ($($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::WARN,
+ { $($k).+ = $($field)*}
+ )
+ );
+ (?$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::WARN,
+ { ?$($k).+ = $($field)*}
+ )
+ );
+ (%$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::WARN,
+ { %$($k).+ = $($field)*}
+ )
+ );
+ ($($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::WARN,
+ { $($k).+, $($field)*}
+ )
+ );
+ (?$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::WARN,
+ { ?$($k).+, $($field)*}
+ )
+ );
+ (%$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::WARN,
+ { %$($k).+, $($field)*}
+ )
+ );
+ (?$($k:ident).+) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::WARN,
+ { ?$($k).+ }
+ )
+ );
+ (%$($k:ident).+) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::WARN,
+ { %$($k).+ }
+ )
+ );
+ ($($k:ident).+) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::WARN,
+ { $($k).+ }
+ )
+ );
+ ($($arg:tt)+) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::WARN,
+ {},
+ $($arg)+
+ )
+ );
+}
+
+/// Constructs an event at the error level.
+///
+/// This functions similarly to the [`event!`] macro. See [the top-level
+/// documentation][lib] for details on the syntax accepted by
+/// this macro.
+///
+/// [`event!`]: crate::event!
+/// [lib]: crate#using-the-macros
+///
+/// # Examples
+///
+/// ```rust
+/// use tracing::error;
+/// # fn main() {
+///
+/// let (err_info, port) = ("No connection", 22);
+///
+/// error!(port, error = %err_info);
+/// error!(target: "app_events", "App Error: {}", err_info);
+/// error!({ info = err_info }, "error on port: {}", port);
+/// # }
+/// ```
+#[macro_export]
+macro_rules! error {
+ (target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::ERROR, { $($field)* }, $($arg)*)
+ );
+ (target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ );
+ (target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ );
+ (target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ );
+ (target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(target: $target, parent: $parent, $crate::Level::ERROR, {}, $($arg)+)
+ );
+ (parent: $parent:expr, { $($field:tt)+ }, $($arg:tt)+ ) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::ERROR,
+ { $($field)+ },
+ $($arg)+
+ )
+ );
+ (parent: $parent:expr, $($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::ERROR,
+ { $($k).+ = $($field)*}
+ )
+ );
+ (parent: $parent:expr, ?$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::ERROR,
+ { ?$($k).+ = $($field)*}
+ )
+ );
+ (parent: $parent:expr, %$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::ERROR,
+ { %$($k).+ = $($field)*}
+ )
+ );
+ (parent: $parent:expr, $($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::ERROR,
+ { $($k).+, $($field)*}
+ )
+ );
+ (parent: $parent:expr, ?$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::ERROR,
+ { ?$($k).+, $($field)*}
+ )
+ );
+ (parent: $parent:expr, %$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::ERROR,
+ { %$($k).+, $($field)*}
+ )
+ );
+ (parent: $parent:expr, $($arg:tt)+) => (
+ $crate::event!(
+ target: module_path!(),
+ parent: $parent,
+ $crate::Level::ERROR,
+ {},
+ $($arg)+
+ )
+ );
+ (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::ERROR, { $($field)* }, $($arg)*)
+ );
+ (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::ERROR, { $($k).+ $($field)* })
+ );
+ (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::ERROR, { ?$($k).+ $($field)* })
+ );
+ (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::ERROR, { %$($k).+ $($field)* })
+ );
+ (target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(target: $target, $crate::Level::ERROR, {}, $($arg)+)
+ );
+ ({ $($field:tt)+ }, $($arg:tt)+ ) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::ERROR,
+ { $($field)+ },
+ $($arg)+
+ )
+ );
+ ($($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::ERROR,
+ { $($k).+ = $($field)*}
+ )
+ );
+ (?$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::ERROR,
+ { ?$($k).+ = $($field)*}
+ )
+ );
+ (%$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::ERROR,
+ { %$($k).+ = $($field)*}
+ )
+ );
+ ($($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::ERROR,
+ { $($k).+, $($field)*}
+ )
+ );
+ (?$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::ERROR,
+ { ?$($k).+, $($field)*}
+ )
+ );
+ (%$($k:ident).+, $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::ERROR,
+ { %$($k).+, $($field)*}
+ )
+ );
+ (?$($k:ident).+) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::ERROR,
+ { ?$($k).+ }
+ )
+ );
+ (%$($k:ident).+) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::ERROR,
+ { %$($k).+ }
+ )
+ );
+ ($($k:ident).+) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::ERROR,
+ { $($k).+ }
+ )
+ );
+ ($($arg:tt)+) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::ERROR,
+ {},
+ $($arg)+
+ )
+ );
+}
+
+/// Constructs a new static callsite for a span or event.
+#[doc(hidden)]
+#[macro_export]
+macro_rules! callsite {
+ (name: $name:expr, kind: $kind:expr, fields: $($fields:tt)*) => {{
+ $crate::callsite! {
+ name: $name,
+ kind: $kind,
+ target: module_path!(),
+ level: $crate::Level::TRACE,
+ fields: $($fields)*
+ }
+ }};
+ (
+ name: $name:expr,
+ kind: $kind:expr,
+ level: $lvl:expr,
+ fields: $($fields:tt)*
+ ) => {{
+ $crate::callsite! {
+ name: $name,
+ kind: $kind,
+ target: module_path!(),
+ level: $lvl,
+ fields: $($fields)*
+ }
+ }};
+ (
+ name: $name:expr,
+ kind: $kind:expr,
+ target: $target:expr,
+ level: $lvl:expr,
+ fields: $($fields:tt)*
+ ) => {{
+ static META: $crate::Metadata<'static> = {
+ $crate::metadata! {
+ name: $name,
+ target: $target,
+ level: $lvl,
+ fields: $crate::fieldset!( $($fields)* ),
+ callsite: &CALLSITE,
+ kind: $kind,
+ }
+ };
+ static CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite::DefaultCallsite::new(&META);
+ CALLSITE.register();
+ &CALLSITE
+ }};
+}
+
+/// Constructs a new static callsite for a span or event.
+#[doc(hidden)]
+#[macro_export]
+macro_rules! callsite2 {
+ (name: $name:expr, kind: $kind:expr, fields: $($fields:tt)*) => {{
+ $crate::callsite2! {
+ name: $name,
+ kind: $kind,
+ target: module_path!(),
+ level: $crate::Level::TRACE,
+ fields: $($fields)*
+ }
+ }};
+ (
+ name: $name:expr,
+ kind: $kind:expr,
+ level: $lvl:expr,
+ fields: $($fields:tt)*
+ ) => {{
+ $crate::callsite2! {
+ name: $name,
+ kind: $kind,
+ target: module_path!(),
+ level: $lvl,
+ fields: $($fields)*
+ }
+ }};
+ (
+ name: $name:expr,
+ kind: $kind:expr,
+ target: $target:expr,
+ level: $lvl:expr,
+ fields: $($fields:tt)*
+ ) => {{
+ static META: $crate::Metadata<'static> = {
+ $crate::metadata! {
+ name: $name,
+ target: $target,
+ level: $lvl,
+ fields: $crate::fieldset!( $($fields)* ),
+ callsite: &CALLSITE,
+ kind: $kind,
+ }
+ };
+ $crate::callsite::DefaultCallsite::new(&META)
+ }};
+}
+
+#[macro_export]
+// TODO: determine if this ought to be public API?`
+#[doc(hidden)]
+macro_rules! level_enabled {
+ ($lvl:expr) => {
+ $lvl <= $crate::level_filters::STATIC_MAX_LEVEL
+ && $lvl <= $crate::level_filters::LevelFilter::current()
+ };
+}
+
+#[doc(hidden)]
+#[macro_export]
+macro_rules! valueset {
+
+ // === base case ===
+ (@ { $(,)* $($val:expr),* $(,)* }, $next:expr $(,)*) => {
+ &[ $($val),* ]
+ };
+
+ // === recursive case (more tts) ===
+
+ // TODO(#1138): determine a new syntax for uninitialized span fields, and
+ // re-enable this.
+ // (@{ $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = _, $($rest:tt)*) => {
+ // $crate::valueset!(@ { $($out),*, (&$next, None) }, $next, $($rest)*)
+ // };
+ (@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = ?$val:expr, $($rest:tt)*) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&debug(&$val) as &dyn Value)) },
+ $next,
+ $($rest)*
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = %$val:expr, $($rest:tt)*) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&display(&$val) as &dyn Value)) },
+ $next,
+ $($rest)*
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = $val:expr, $($rest:tt)*) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&$val as &dyn Value)) },
+ $next,
+ $($rest)*
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+, $($rest:tt)*) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&$($k).+ as &dyn Value)) },
+ $next,
+ $($rest)*
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, ?$($k:ident).+, $($rest:tt)*) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&debug(&$($k).+) as &dyn Value)) },
+ $next,
+ $($rest)*
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, %$($k:ident).+, $($rest:tt)*) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&display(&$($k).+) as &dyn Value)) },
+ $next,
+ $($rest)*
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = ?$val:expr) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&debug(&$val) as &dyn Value)) },
+ $next,
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = %$val:expr) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&display(&$val) as &dyn Value)) },
+ $next,
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = $val:expr) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&$val as &dyn Value)) },
+ $next,
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&$($k).+ as &dyn Value)) },
+ $next,
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, ?$($k:ident).+) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&debug(&$($k).+) as &dyn Value)) },
+ $next,
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, %$($k:ident).+) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&display(&$($k).+) as &dyn Value)) },
+ $next,
+ )
+ };
+
+ // Handle literal names
+ (@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = ?$val:expr, $($rest:tt)*) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&debug(&$val) as &dyn Value)) },
+ $next,
+ $($rest)*
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = %$val:expr, $($rest:tt)*) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&display(&$val) as &dyn Value)) },
+ $next,
+ $($rest)*
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = $val:expr, $($rest:tt)*) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&$val as &dyn Value)) },
+ $next,
+ $($rest)*
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = ?$val:expr) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&debug(&$val) as &dyn Value)) },
+ $next,
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = %$val:expr) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&display(&$val) as &dyn Value)) },
+ $next,
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = $val:expr) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&$val as &dyn Value)) },
+ $next,
+ )
+ };
+
+ // Remainder is unparseable, but exists --- must be format args!
+ (@ { $(,)* $($out:expr),* }, $next:expr, $($rest:tt)+) => {
+ $crate::valueset!(@ { (&$next, Some(&format_args!($($rest)+) as &dyn Value)), $($out),* }, $next, )
+ };
+
+ // === entry ===
+ ($fields:expr, $($kvs:tt)+) => {
+ {
+ #[allow(unused_imports)]
+ use $crate::field::{debug, display, Value};
+ let mut iter = $fields.iter();
+ $fields.value_set($crate::valueset!(
+ @ { },
+ iter.next().expect("FieldSet corrupted (this is a bug)"),
+ $($kvs)+
+ ))
+ }
+ };
+ ($fields:expr,) => {
+ {
+ $fields.value_set(&[])
+ }
+ };
+}
+
+#[doc(hidden)]
+#[macro_export]
+macro_rules! fieldset {
+ // == base case ==
+ (@ { $(,)* $($out:expr),* $(,)* } $(,)*) => {
+ &[ $($out),* ]
+ };
+
+ // == recursive cases (more tts) ==
+ (@ { $(,)* $($out:expr),* } $($k:ident).+ = ?$val:expr, $($rest:tt)*) => {
+ $crate::fieldset!(@ { $($out),*, $crate::__tracing_stringify!($($k).+) } $($rest)*)
+ };
+ (@ { $(,)* $($out:expr),* } $($k:ident).+ = %$val:expr, $($rest:tt)*) => {
+ $crate::fieldset!(@ { $($out),*, $crate::__tracing_stringify!($($k).+) } $($rest)*)
+ };
+ (@ { $(,)* $($out:expr),* } $($k:ident).+ = $val:expr, $($rest:tt)*) => {
+ $crate::fieldset!(@ { $($out),*, $crate::__tracing_stringify!($($k).+) } $($rest)*)
+ };
+ // TODO(#1138): determine a new syntax for uninitialized span fields, and
+ // re-enable this.
+ // (@ { $($out:expr),* } $($k:ident).+ = _, $($rest:tt)*) => {
+ // $crate::fieldset!(@ { $($out),*, $crate::__tracing_stringify!($($k).+) } $($rest)*)
+ // };
+ (@ { $(,)* $($out:expr),* } ?$($k:ident).+, $($rest:tt)*) => {
+ $crate::fieldset!(@ { $($out),*, $crate::__tracing_stringify!($($k).+) } $($rest)*)
+ };
+ (@ { $(,)* $($out:expr),* } %$($k:ident).+, $($rest:tt)*) => {
+ $crate::fieldset!(@ { $($out),*, $crate::__tracing_stringify!($($k).+) } $($rest)*)
+ };
+ (@ { $(,)* $($out:expr),* } $($k:ident).+, $($rest:tt)*) => {
+ $crate::fieldset!(@ { $($out),*, $crate::__tracing_stringify!($($k).+) } $($rest)*)
+ };
+
+ // Handle literal names
+ (@ { $(,)* $($out:expr),* } $k:literal = ?$val:expr, $($rest:tt)*) => {
+ $crate::fieldset!(@ { $($out),*, $k } $($rest)*)
+ };
+ (@ { $(,)* $($out:expr),* } $k:literal = %$val:expr, $($rest:tt)*) => {
+ $crate::fieldset!(@ { $($out),*, $k } $($rest)*)
+ };
+ (@ { $(,)* $($out:expr),* } $k:literal = $val:expr, $($rest:tt)*) => {
+ $crate::fieldset!(@ { $($out),*, $k } $($rest)*)
+ };
+
+ // Remainder is unparseable, but exists --- must be format args!
+ (@ { $(,)* $($out:expr),* } $($rest:tt)+) => {
+ $crate::fieldset!(@ { "message", $($out),*, })
+ };
+
+ // == entry ==
+ ($($args:tt)*) => {
+ $crate::fieldset!(@ { } $($args)*,)
+ };
+
+}
+
+#[cfg(feature = "log")]
+#[doc(hidden)]
+#[macro_export]
+macro_rules! level_to_log {
+ ($level:expr) => {
+ match $level {
+ $crate::Level::ERROR => $crate::log::Level::Error,
+ $crate::Level::WARN => $crate::log::Level::Warn,
+ $crate::Level::INFO => $crate::log::Level::Info,
+ $crate::Level::DEBUG => $crate::log::Level::Debug,
+ _ => $crate::log::Level::Trace,
+ }
+ };
+}
+
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __tracing_stringify {
+ ($s:expr) => {
+ stringify!($s)
+ };
+}
+
+#[cfg(not(feature = "log"))]
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __tracing_log {
+ ($level:expr, $callsite:expr, $value_set:expr) => {};
+}
+
+#[cfg(feature = "log")]
+#[doc(hidden)]
+#[macro_export]
+macro_rules! __tracing_log {
+ ($level:expr, $callsite:expr, $value_set:expr) => {
+ $crate::if_log_enabled! { $level, {
+ use $crate::log;
+ let level = $crate::level_to_log!($level);
+ if level <= log::max_level() {
+ let meta = $callsite.metadata();
+ let log_meta = log::Metadata::builder()
+ .level(level)
+ .target(meta.target())
+ .build();
+ let logger = log::logger();
+ if logger.enabled(&log_meta) {
+ $crate::__macro_support::__tracing_log(meta, logger, log_meta, $value_set)
+ }
+ }
+ }}
+ };
+}
+
+#[cfg(not(feature = "log"))]
+#[doc(hidden)]
+#[macro_export]
+macro_rules! if_log_enabled {
+ ($lvl:expr, $e:expr;) => {
+ $crate::if_log_enabled! { $lvl, $e }
+ };
+ ($lvl:expr, $if_log:block) => {
+ $crate::if_log_enabled! { $lvl, $if_log else {} }
+ };
+ ($lvl:expr, $if_log:block else $else_block:block) => {
+ $else_block
+ };
+}
+
+#[cfg(all(feature = "log", not(feature = "log-always")))]
+#[doc(hidden)]
+#[macro_export]
+macro_rules! if_log_enabled {
+ ($lvl:expr, $e:expr;) => {
+ $crate::if_log_enabled! { $lvl, $e }
+ };
+ ($lvl:expr, $if_log:block) => {
+ $crate::if_log_enabled! { $lvl, $if_log else {} }
+ };
+ ($lvl:expr, $if_log:block else $else_block:block) => {
+ if $crate::level_to_log!($lvl) <= $crate::log::STATIC_MAX_LEVEL {
+ if !$crate::dispatcher::has_been_set() {
+ $if_log
+ } else {
+ $else_block
+ }
+ } else {
+ $else_block
+ }
+ };
+}
+
+#[cfg(all(feature = "log", feature = "log-always"))]
+#[doc(hidden)]
+#[macro_export]
+macro_rules! if_log_enabled {
+ ($lvl:expr, $e:expr;) => {
+ $crate::if_log_enabled! { $lvl, $e }
+ };
+ ($lvl:expr, $if_log:block) => {
+ $crate::if_log_enabled! { $lvl, $if_log else {} }
+ };
+ ($lvl:expr, $if_log:block else $else_block:block) => {
+ if $crate::level_to_log!($lvl) <= $crate::log::STATIC_MAX_LEVEL {
+ #[allow(unused_braces)]
+ $if_log
+ } else {
+ $else_block
+ }
+ };
+}
diff --git a/vendor/tracing-0.1.37/src/span.rs b/vendor/tracing-0.1.37/src/span.rs
new file mode 100644
index 000000000..58822f4d9
--- /dev/null
+++ b/vendor/tracing-0.1.37/src/span.rs
@@ -0,0 +1,1623 @@
+//! Spans represent periods of time in which a program was executing in a
+//! particular context.
+//!
+//! A span consists of [fields], user-defined key-value pairs of arbitrary data
+//! that describe the context the span represents, and a set of fixed attributes
+//! that describe all `tracing` spans and events. Attributes describing spans
+//! include:
+//!
+//! - An [`Id`] assigned by the subscriber that uniquely identifies it in relation
+//! to other spans.
+//! - The span's [parent] in the trace tree.
+//! - [Metadata] that describes static characteristics of all spans
+//! originating from that callsite, such as its name, source code location,
+//! [verbosity level], and the names of its fields.
+//!
+//! # Creating Spans
+//!
+//! Spans are created using the [`span!`] macro. This macro is invoked with the
+//! following arguments, in order:
+//!
+//! - The [`target`] and/or [`parent`][parent] attributes, if the user wishes to
+//! override their default values.
+//! - The span's [verbosity level]
+//! - A string literal providing the span's name.
+//! - Finally, between zero and 32 arbitrary key/value fields.
+//!
+//! [`target`]: super::Metadata::target
+//!
+//! For example:
+//! ```rust
+//! use tracing::{span, Level};
+//!
+//! /// Construct a new span at the `INFO` level named "my_span", with a single
+//! /// field named answer , with the value `42`.
+//! let my_span = span!(Level::INFO, "my_span", answer = 42);
+//! ```
+//!
+//! The documentation for the [`span!`] macro provides additional examples of
+//! the various options that exist when creating spans.
+//!
+//! The [`trace_span!`], [`debug_span!`], [`info_span!`], [`warn_span!`], and
+//! [`error_span!`] exist as shorthand for constructing spans at various
+//! verbosity levels.
+//!
+//! ## Recording Span Creation
+//!
+//! The [`Attributes`] type contains data associated with a span, and is
+//! provided to the [`Subscriber`] when a new span is created. It contains
+//! the span's metadata, the ID of [the span's parent][parent] if one was
+//! explicitly set, and any fields whose values were recorded when the span was
+//! constructed. The subscriber, which is responsible for recording `tracing`
+//! data, can then store or record these values.
+//!
+//! # The Span Lifecycle
+//!
+//! ## Entering a Span
+//!
+//! A thread of execution is said to _enter_ a span when it begins executing,
+//! and _exit_ the span when it switches to another context. Spans may be
+//! entered through the [`enter`], [`entered`], and [`in_scope`] methods.
+//!
+//! The [`enter`] method enters a span, returning a [guard] that exits the span
+//! when dropped
+//! ```
+//! # use tracing::{span, Level};
+//! let my_var: u64 = 5;
+//! let my_span = span!(Level::TRACE, "my_span", my_var);
+//!
+//! // `my_span` exists but has not been entered.
+//!
+//! // Enter `my_span`...
+//! let _enter = my_span.enter();
+//!
+//! // Perform some work inside of the context of `my_span`...
+//! // Dropping the `_enter` guard will exit the span.
+//!```
+//!
+//! <div class="example-wrap" style="display:inline-block"><pre class="compile_fail" style="white-space:normal;font:inherit;">
+//! <strong>Warning</strong>: In asynchronous code that uses async/await syntax,
+//! <code>Span::enter</code> may produce incorrect traces if the returned drop
+//! guard is held across an await point. See
+//! <a href="struct.Span.html#in-asynchronous-code">the method documentation</a>
+//! for details.
+//! </pre></div>
+//!
+//! The [`entered`] method is analogous to [`enter`], but moves the span into
+//! the returned guard, rather than borrowing it. This allows creating and
+//! entering a span in a single expression:
+//!
+//! ```
+//! # use tracing::{span, Level};
+//! // Create a span and enter it, returning a guard:
+//! let span = span!(Level::INFO, "my_span").entered();
+//!
+//! // We are now inside the span! Like `enter()`, the guard returned by
+//! // `entered()` will exit the span when it is dropped...
+//!
+//! // ...but, it can also be exited explicitly, returning the `Span`
+//! // struct:
+//! let span = span.exit();
+//! ```
+//!
+//! Finally, [`in_scope`] takes a closure or function pointer and executes it
+//! inside the span:
+//!
+//! ```
+//! # use tracing::{span, Level};
+//! let my_var: u64 = 5;
+//! let my_span = span!(Level::TRACE, "my_span", my_var = &my_var);
+//!
+//! my_span.in_scope(|| {
+//! // perform some work in the context of `my_span`...
+//! });
+//!
+//! // Perform some work outside of the context of `my_span`...
+//!
+//! my_span.in_scope(|| {
+//! // Perform some more work in the context of `my_span`.
+//! });
+//! ```
+//!
+//! <pre class="ignore" style="white-space:normal;font:inherit;">
+//! <strong>Note</strong>: Since entering a span takes <code>&self</code>, and
+//! <code>Span</code>s are <code>Clone</code>, <code>Send</code>, and
+//! <code>Sync</code>, it is entirely valid for multiple threads to enter the
+//! same span concurrently.
+//! </pre>
+//!
+//! ## Span Relationships
+//!
+//! Spans form a tree structure — unless it is a root span, all spans have a
+//! _parent_, and may have one or more _children_. When a new span is created,
+//! the current span becomes the new span's parent. The total execution time of
+//! a span consists of the time spent in that span and in the entire subtree
+//! represented by its children. Thus, a parent span always lasts for at least
+//! as long as the longest-executing span in its subtree.
+//!
+//! ```
+//! # use tracing::{Level, span};
+//! // this span is considered the "root" of a new trace tree:
+//! span!(Level::INFO, "root").in_scope(|| {
+//! // since we are now inside "root", this span is considered a child
+//! // of "root":
+//! span!(Level::DEBUG, "outer_child").in_scope(|| {
+//! // this span is a child of "outer_child", which is in turn a
+//! // child of "root":
+//! span!(Level::TRACE, "inner_child").in_scope(|| {
+//! // and so on...
+//! });
+//! });
+//! // another span created here would also be a child of "root".
+//! });
+//!```
+//!
+//! In addition, the parent of a span may be explicitly specified in
+//! the `span!` macro. For example:
+//!
+//! ```rust
+//! # use tracing::{Level, span};
+//! // Create, but do not enter, a span called "foo".
+//! let foo = span!(Level::INFO, "foo");
+//!
+//! // Create and enter a span called "bar".
+//! let bar = span!(Level::INFO, "bar");
+//! let _enter = bar.enter();
+//!
+//! // Although we have currently entered "bar", "baz"'s parent span
+//! // will be "foo".
+//! let baz = span!(parent: &foo, Level::INFO, "baz");
+//! ```
+//!
+//! A child span should typically be considered _part_ of its parent. For
+//! example, if a subscriber is recording the length of time spent in various
+//! spans, it should generally include the time spent in a span's children as
+//! part of that span's duration.
+//!
+//! In addition to having zero or one parent, a span may also _follow from_ any
+//! number of other spans. This indicates a causal relationship between the span
+//! and the spans that it follows from, but a follower is *not* typically
+//! considered part of the duration of the span it follows. Unlike the parent, a
+//! span may record that it follows from another span after it is created, using
+//! the [`follows_from`] method.
+//!
+//! As an example, consider a listener task in a server. As the listener accepts
+//! incoming connections, it spawns new tasks that handle those connections. We
+//! might want to have a span representing the listener, and instrument each
+//! spawned handler task with its own span. We would want our instrumentation to
+//! record that the handler tasks were spawned as a result of the listener task.
+//! However, we might not consider the handler tasks to be _part_ of the time
+//! spent in the listener task, so we would not consider those spans children of
+//! the listener span. Instead, we would record that the handler tasks follow
+//! from the listener, recording the causal relationship but treating the spans
+//! as separate durations.
+//!
+//! ## Closing Spans
+//!
+//! Execution may enter and exit a span multiple times before that span is
+//! _closed_. Consider, for example, a future which has an associated
+//! span and enters that span every time it is polled:
+//! ```rust
+//! # use std::future::Future;
+//! # use std::task::{Context, Poll};
+//! # use std::pin::Pin;
+//! struct MyFuture {
+//! // data
+//! span: tracing::Span,
+//! }
+//!
+//! impl Future for MyFuture {
+//! type Output = ();
+//!
+//! fn poll(self: Pin<&mut Self>, _cx: &mut Context<'_>) -> Poll<Self::Output> {
+//! let _enter = self.span.enter();
+//! // Do actual future work...
+//! # Poll::Ready(())
+//! }
+//! }
+//! ```
+//!
+//! If this future was spawned on an executor, it might yield one or more times
+//! before `poll` returns [`Poll::Ready`]. If the future were to yield, then
+//! the executor would move on to poll the next future, which may _also_ enter
+//! an associated span or series of spans. Therefore, it is valid for a span to
+//! be entered repeatedly before it completes. Only the time when that span or
+//! one of its children was the current span is considered to be time spent in
+//! that span. A span which is not executing and has not yet been closed is said
+//! to be _idle_.
+//!
+//! Because spans may be entered and exited multiple times before they close,
+//! [`Subscriber`]s have separate trait methods which are called to notify them
+//! of span exits and when span handles are dropped. When execution exits a
+//! span, [`exit`] will always be called with that span's ID to notify the
+//! subscriber that the span has been exited. When span handles are dropped, the
+//! [`drop_span`] method is called with that span's ID. The subscriber may use
+//! this to determine whether or not the span will be entered again.
+//!
+//! If there is only a single handle with the capacity to exit a span, dropping
+//! that handle "closes" the span, since the capacity to enter it no longer
+//! exists. For example:
+//! ```
+//! # use tracing::{Level, span};
+//! {
+//! span!(Level::TRACE, "my_span").in_scope(|| {
+//! // perform some work in the context of `my_span`...
+//! }); // --> Subscriber::exit(my_span)
+//!
+//! // The handle to `my_span` only lives inside of this block; when it is
+//! // dropped, the subscriber will be informed via `drop_span`.
+//!
+//! } // --> Subscriber::drop_span(my_span)
+//! ```
+//!
+//! However, if multiple handles exist, the span can still be re-entered even if
+//! one or more is dropped. For determining when _all_ handles to a span have
+//! been dropped, `Subscriber`s have a [`clone_span`] method, which is called
+//! every time a span handle is cloned. Combined with `drop_span`, this may be
+//! used to track the number of handles to a given span — if `drop_span` has
+//! been called one more time than the number of calls to `clone_span` for a
+//! given ID, then no more handles to the span with that ID exist. The
+//! subscriber may then treat it as closed.
+//!
+//! # When to use spans
+//!
+//! As a rule of thumb, spans should be used to represent discrete units of work
+//! (e.g., a given request's lifetime in a server) or periods of time spent in a
+//! given context (e.g., time spent interacting with an instance of an external
+//! system, such as a database).
+//!
+//! Which scopes in a program correspond to new spans depend somewhat on user
+//! intent. For example, consider the case of a loop in a program. Should we
+//! construct one span and perform the entire loop inside of that span, like:
+//!
+//! ```rust
+//! # use tracing::{Level, span};
+//! # let n = 1;
+//! let span = span!(Level::TRACE, "my_loop");
+//! let _enter = span.enter();
+//! for i in 0..n {
+//! # let _ = i;
+//! // ...
+//! }
+//! ```
+//! Or, should we create a new span for each iteration of the loop, as in:
+//! ```rust
+//! # use tracing::{Level, span};
+//! # let n = 1u64;
+//! for i in 0..n {
+//! let span = span!(Level::TRACE, "my_loop", iteration = i);
+//! let _enter = span.enter();
+//! // ...
+//! }
+//! ```
+//!
+//! Depending on the circumstances, we might want to do either, or both. For
+//! example, if we want to know how long was spent in the loop overall, we would
+//! create a single span around the entire loop; whereas if we wanted to know how
+//! much time was spent in each individual iteration, we would enter a new span
+//! on every iteration.
+//!
+//! [fields]: super::field
+//! [Metadata]: super::Metadata
+//! [verbosity level]: super::Level
+//! [`Poll::Ready`]: std::task::Poll::Ready
+//! [`span!`]: super::span!
+//! [`trace_span!`]: super::trace_span!
+//! [`debug_span!`]: super::debug_span!
+//! [`info_span!`]: super::info_span!
+//! [`warn_span!`]: super::warn_span!
+//! [`error_span!`]: super::error_span!
+//! [`clone_span`]: super::subscriber::Subscriber::clone_span()
+//! [`drop_span`]: super::subscriber::Subscriber::drop_span()
+//! [`exit`]: super::subscriber::Subscriber::exit
+//! [`Subscriber`]: super::subscriber::Subscriber
+//! [`enter`]: Span::enter()
+//! [`entered`]: Span::entered()
+//! [`in_scope`]: Span::in_scope()
+//! [`follows_from`]: Span::follows_from()
+//! [guard]: Entered
+//! [parent]: #span-relationships
+pub use tracing_core::span::{Attributes, Id, Record};
+
+use crate::stdlib::{
+ cmp, fmt,
+ hash::{Hash, Hasher},
+ marker::PhantomData,
+ mem,
+ ops::Deref,
+};
+use crate::{
+ dispatcher::{self, Dispatch},
+ field, Metadata,
+};
+
+/// Trait implemented by types which have a span `Id`.
+pub trait AsId: crate::sealed::Sealed {
+ /// Returns the `Id` of the span that `self` corresponds to, or `None` if
+ /// this corresponds to a disabled span.
+ fn as_id(&self) -> Option<&Id>;
+}
+
+/// A handle representing a span, with the capability to enter the span if it
+/// exists.
+///
+/// If the span was rejected by the current `Subscriber`'s filter, entering the
+/// span will silently do nothing. Thus, the handle can be used in the same
+/// manner regardless of whether or not the trace is currently being collected.
+#[derive(Clone)]
+pub struct Span {
+ /// A handle used to enter the span when it is not executing.
+ ///
+ /// If this is `None`, then the span has either closed or was never enabled.
+ inner: Option<Inner>,
+ /// Metadata describing the span.
+ ///
+ /// This might be `Some` even if `inner` is `None`, in the case that the
+ /// span is disabled but the metadata is needed for `log` support.
+ meta: Option<&'static Metadata<'static>>,
+}
+
+/// A handle representing the capacity to enter a span which is known to exist.
+///
+/// Unlike `Span`, this type is only constructed for spans which _have_ been
+/// enabled by the current filter. This type is primarily used for implementing
+/// span handles; users should typically not need to interact with it directly.
+#[derive(Debug)]
+pub(crate) struct Inner {
+ /// The span's ID, as provided by `subscriber`.
+ id: Id,
+
+ /// The subscriber that will receive events relating to this span.
+ ///
+ /// This should be the same subscriber that provided this span with its
+ /// `id`.
+ subscriber: Dispatch,
+}
+
+/// A guard representing a span which has been entered and is currently
+/// executing.
+///
+/// When the guard is dropped, the span will be exited.
+///
+/// This is returned by the [`Span::enter`] function.
+///
+/// [`Span::enter`]: super::Span::enter
+#[derive(Debug)]
+#[must_use = "once a span has been entered, it should be exited"]
+pub struct Entered<'a> {
+ span: &'a Span,
+}
+
+/// An owned version of [`Entered`], a guard representing a span which has been
+/// entered and is currently executing.
+///
+/// When the guard is dropped, the span will be exited.
+///
+/// This is returned by the [`Span::entered`] function.
+///
+/// [`Span::entered`]: super::Span::entered()
+#[derive(Debug)]
+#[must_use = "once a span has been entered, it should be exited"]
+pub struct EnteredSpan {
+ span: Span,
+
+ /// ```compile_fail
+ /// use tracing::span::*;
+ /// trait AssertSend: Send {}
+ ///
+ /// impl AssertSend for EnteredSpan {}
+ /// ```
+ _not_send: PhantomNotSend,
+}
+
+/// `log` target for all span lifecycle (creation/enter/exit/close) records.
+#[cfg(feature = "log")]
+const LIFECYCLE_LOG_TARGET: &str = "tracing::span";
+/// `log` target for span activity (enter/exit) records.
+#[cfg(feature = "log")]
+const ACTIVITY_LOG_TARGET: &str = "tracing::span::active";
+
+// ===== impl Span =====
+
+impl Span {
+ /// Constructs a new `Span` with the given [metadata] and set of
+ /// [field values].
+ ///
+ /// The new span will be constructed by the currently-active [`Subscriber`],
+ /// with the current span as its parent (if one exists).
+ ///
+ /// After the span is constructed, [field values] and/or [`follows_from`]
+ /// annotations may be added to it.
+ ///
+ /// [metadata]: super::Metadata
+ /// [`Subscriber`]: super::subscriber::Subscriber
+ /// [field values]: super::field::ValueSet
+ /// [`follows_from`]: super::Span::follows_from
+ pub fn new(meta: &'static Metadata<'static>, values: &field::ValueSet<'_>) -> Span {
+ dispatcher::get_default(|dispatch| Self::new_with(meta, values, dispatch))
+ }
+
+ #[inline]
+ #[doc(hidden)]
+ pub fn new_with(
+ meta: &'static Metadata<'static>,
+ values: &field::ValueSet<'_>,
+ dispatch: &Dispatch,
+ ) -> Span {
+ let new_span = Attributes::new(meta, values);
+ Self::make_with(meta, new_span, dispatch)
+ }
+
+ /// Constructs a new `Span` as the root of its own trace tree, with the
+ /// given [metadata] and set of [field values].
+ ///
+ /// After the span is constructed, [field values] and/or [`follows_from`]
+ /// annotations may be added to it.
+ ///
+ /// [metadata]: super::Metadata
+ /// [field values]: super::field::ValueSet
+ /// [`follows_from`]: super::Span::follows_from
+ pub fn new_root(meta: &'static Metadata<'static>, values: &field::ValueSet<'_>) -> Span {
+ dispatcher::get_default(|dispatch| Self::new_root_with(meta, values, dispatch))
+ }
+
+ #[inline]
+ #[doc(hidden)]
+ pub fn new_root_with(
+ meta: &'static Metadata<'static>,
+ values: &field::ValueSet<'_>,
+ dispatch: &Dispatch,
+ ) -> Span {
+ let new_span = Attributes::new_root(meta, values);
+ Self::make_with(meta, new_span, dispatch)
+ }
+
+ /// Constructs a new `Span` as child of the given parent span, with the
+ /// given [metadata] and set of [field values].
+ ///
+ /// After the span is constructed, [field values] and/or [`follows_from`]
+ /// annotations may be added to it.
+ ///
+ /// [metadata]: super::Metadata
+ /// [field values]: super::field::ValueSet
+ /// [`follows_from`]: super::Span::follows_from
+ pub fn child_of(
+ parent: impl Into<Option<Id>>,
+ meta: &'static Metadata<'static>,
+ values: &field::ValueSet<'_>,
+ ) -> Span {
+ let mut parent = parent.into();
+ dispatcher::get_default(move |dispatch| {
+ Self::child_of_with(Option::take(&mut parent), meta, values, dispatch)
+ })
+ }
+
+ #[inline]
+ #[doc(hidden)]
+ pub fn child_of_with(
+ parent: impl Into<Option<Id>>,
+ meta: &'static Metadata<'static>,
+ values: &field::ValueSet<'_>,
+ dispatch: &Dispatch,
+ ) -> Span {
+ let new_span = match parent.into() {
+ Some(parent) => Attributes::child_of(parent, meta, values),
+ None => Attributes::new_root(meta, values),
+ };
+ Self::make_with(meta, new_span, dispatch)
+ }
+
+ /// Constructs a new disabled span with the given `Metadata`.
+ ///
+ /// This should be used when a span is constructed from a known callsite,
+ /// but the subscriber indicates that it is disabled.
+ ///
+ /// Entering, exiting, and recording values on this span will not notify the
+ /// `Subscriber` but _may_ record log messages if the `log` feature flag is
+ /// enabled.
+ #[inline(always)]
+ pub fn new_disabled(meta: &'static Metadata<'static>) -> Span {
+ Self {
+ inner: None,
+ meta: Some(meta),
+ }
+ }
+
+ /// Constructs a new span that is *completely disabled*.
+ ///
+ /// This can be used rather than `Option<Span>` to represent cases where a
+ /// span is not present.
+ ///
+ /// Entering, exiting, and recording values on this span will do nothing.
+ #[inline(always)]
+ pub const fn none() -> Span {
+ Self {
+ inner: None,
+ meta: None,
+ }
+ }
+
+ /// Returns a handle to the span [considered by the `Subscriber`] to be the
+ /// current span.
+ ///
+ /// If the subscriber indicates that it does not track the current span, or
+ /// that the thread from which this function is called is not currently
+ /// inside a span, the returned span will be disabled.
+ ///
+ /// [considered by the `Subscriber`]:
+ /// super::subscriber::Subscriber::current_span
+ pub fn current() -> Span {
+ dispatcher::get_default(|dispatch| {
+ if let Some((id, meta)) = dispatch.current_span().into_inner() {
+ let id = dispatch.clone_span(&id);
+ Self {
+ inner: Some(Inner::new(id, dispatch)),
+ meta: Some(meta),
+ }
+ } else {
+ Self::none()
+ }
+ })
+ }
+
+ fn make_with(
+ meta: &'static Metadata<'static>,
+ new_span: Attributes<'_>,
+ dispatch: &Dispatch,
+ ) -> Span {
+ let attrs = &new_span;
+ let id = dispatch.new_span(attrs);
+ let inner = Some(Inner::new(id, dispatch));
+
+ let span = Self {
+ inner,
+ meta: Some(meta),
+ };
+
+ if_log_enabled! { *meta.level(), {
+ let target = if attrs.is_empty() {
+ LIFECYCLE_LOG_TARGET
+ } else {
+ meta.target()
+ };
+ let values = attrs.values();
+ span.log(
+ target,
+ level_to_log!(*meta.level()),
+ format_args!("++ {};{}", meta.name(), crate::log::LogValueSet { values, is_first: false }),
+ );
+ }}
+
+ span
+ }
+
+ /// Enters this span, returning a guard that will exit the span when dropped.
+ ///
+ /// If this span is enabled by the current subscriber, then this function will
+ /// call [`Subscriber::enter`] with the span's [`Id`], and dropping the guard
+ /// will call [`Subscriber::exit`]. If the span is disabled, this does
+ /// nothing.
+ ///
+ /// # In Asynchronous Code
+ ///
+ /// **Warning**: in asynchronous code that uses [async/await syntax][syntax],
+ /// `Span::enter` should be used very carefully or avoided entirely. Holding
+ /// the drop guard returned by `Span::enter` across `.await` points will
+ /// result in incorrect traces. For example,
+ ///
+ /// ```
+ /// # use tracing::info_span;
+ /// # async fn some_other_async_function() {}
+ /// async fn my_async_function() {
+ /// let span = info_span!("my_async_function");
+ ///
+ /// // WARNING: This span will remain entered until this
+ /// // guard is dropped...
+ /// let _enter = span.enter();
+ /// // ...but the `await` keyword may yield, causing the
+ /// // runtime to switch to another task, while remaining in
+ /// // this span!
+ /// some_other_async_function().await
+ ///
+ /// // ...
+ /// }
+ /// ```
+ ///
+ /// The drop guard returned by `Span::enter` exits the span when it is
+ /// dropped. When an async function or async block yields at an `.await`
+ /// point, the current scope is _exited_, but values in that scope are
+ /// **not** dropped (because the async block will eventually resume
+ /// execution from that await point). This means that _another_ task will
+ /// begin executing while _remaining_ in the entered span. This results in
+ /// an incorrect trace.
+ ///
+ /// Instead of using `Span::enter` in asynchronous code, prefer the
+ /// following:
+ ///
+ /// * To enter a span for a synchronous section of code within an async
+ /// block or function, prefer [`Span::in_scope`]. Since `in_scope` takes a
+ /// synchronous closure and exits the span when the closure returns, the
+ /// span will always be exited before the next await point. For example:
+ /// ```
+ /// # use tracing::info_span;
+ /// # async fn some_other_async_function(_: ()) {}
+ /// async fn my_async_function() {
+ /// let span = info_span!("my_async_function");
+ ///
+ /// let some_value = span.in_scope(|| {
+ /// // run some synchronous code inside the span...
+ /// });
+ ///
+ /// // This is okay! The span has already been exited before we reach
+ /// // the await point.
+ /// some_other_async_function(some_value).await;
+ ///
+ /// // ...
+ /// }
+ /// ```
+ /// * For instrumenting asynchronous code, `tracing` provides the
+ /// [`Future::instrument` combinator][instrument] for
+ /// attaching a span to a future (async function or block). This will
+ /// enter the span _every_ time the future is polled, and exit it whenever
+ /// the future yields.
+ ///
+ /// `Instrument` can be used with an async block inside an async function:
+ /// ```ignore
+ /// # use tracing::info_span;
+ /// use tracing::Instrument;
+ ///
+ /// # async fn some_other_async_function() {}
+ /// async fn my_async_function() {
+ /// let span = info_span!("my_async_function");
+ /// async move {
+ /// // This is correct! If we yield here, the span will be exited,
+ /// // and re-entered when we resume.
+ /// some_other_async_function().await;
+ ///
+ /// //more asynchronous code inside the span...
+ ///
+ /// }
+ /// // instrument the async block with the span...
+ /// .instrument(span)
+ /// // ...and await it.
+ /// .await
+ /// }
+ /// ```
+ ///
+ /// It can also be used to instrument calls to async functions at the
+ /// callsite:
+ /// ```ignore
+ /// # use tracing::debug_span;
+ /// use tracing::Instrument;
+ ///
+ /// # async fn some_other_async_function() {}
+ /// async fn my_async_function() {
+ /// let some_value = some_other_async_function()
+ /// .instrument(debug_span!("some_other_async_function"))
+ /// .await;
+ ///
+ /// // ...
+ /// }
+ /// ```
+ ///
+ /// * The [`#[instrument]` attribute macro][attr] can automatically generate
+ /// correct code when used on an async function:
+ ///
+ /// ```ignore
+ /// # async fn some_other_async_function() {}
+ /// #[tracing::instrument(level = "info")]
+ /// async fn my_async_function() {
+ ///
+ /// // This is correct! If we yield here, the span will be exited,
+ /// // and re-entered when we resume.
+ /// some_other_async_function().await;
+ ///
+ /// // ...
+ ///
+ /// }
+ /// ```
+ ///
+ /// [syntax]: https://rust-lang.github.io/async-book/01_getting_started/04_async_await_primer.html
+ /// [`Span::in_scope`]: Span::in_scope()
+ /// [instrument]: crate::Instrument
+ /// [attr]: macro@crate::instrument
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use tracing::{span, Level};
+ /// let span = span!(Level::INFO, "my_span");
+ /// let guard = span.enter();
+ ///
+ /// // code here is within the span
+ ///
+ /// drop(guard);
+ ///
+ /// // code here is no longer within the span
+ ///
+ /// ```
+ ///
+ /// Guards need not be explicitly dropped:
+ ///
+ /// ```
+ /// # use tracing::trace_span;
+ /// fn my_function() -> String {
+ /// // enter a span for the duration of this function.
+ /// let span = trace_span!("my_function");
+ /// let _enter = span.enter();
+ ///
+ /// // anything happening in functions we call is still inside the span...
+ /// my_other_function();
+ ///
+ /// // returning from the function drops the guard, exiting the span.
+ /// return "Hello world".to_owned();
+ /// }
+ ///
+ /// fn my_other_function() {
+ /// // ...
+ /// }
+ /// ```
+ ///
+ /// Sub-scopes may be created to limit the duration for which the span is
+ /// entered:
+ ///
+ /// ```
+ /// # use tracing::{info, info_span};
+ /// let span = info_span!("my_great_span");
+ ///
+ /// {
+ /// let _enter = span.enter();
+ ///
+ /// // this event occurs inside the span.
+ /// info!("i'm in the span!");
+ ///
+ /// // exiting the scope drops the guard, exiting the span.
+ /// }
+ ///
+ /// // this event is not inside the span.
+ /// info!("i'm outside the span!")
+ /// ```
+ ///
+ /// [`Subscriber::enter`]: super::subscriber::Subscriber::enter()
+ /// [`Subscriber::exit`]: super::subscriber::Subscriber::exit()
+ /// [`Id`]: super::Id
+ #[inline(always)]
+ pub fn enter(&self) -> Entered<'_> {
+ self.do_enter();
+ Entered { span: self }
+ }
+
+ /// Enters this span, consuming it and returning a [guard][`EnteredSpan`]
+ /// that will exit the span when dropped.
+ ///
+ /// <pre class="compile_fail" style="white-space:normal;font:inherit;">
+ /// <strong>Warning</strong>: In asynchronous code that uses async/await syntax,
+ /// <code>Span::entered</code> may produce incorrect traces if the returned drop
+ /// guard is held across an await point. See <a href="#in-asynchronous-code">the
+ /// <code>Span::enter</code> documentation</a> for details.
+ /// </pre>
+ ///
+ ///
+ /// If this span is enabled by the current subscriber, then this function will
+ /// call [`Subscriber::enter`] with the span's [`Id`], and dropping the guard
+ /// will call [`Subscriber::exit`]. If the span is disabled, this does
+ /// nothing.
+ ///
+ /// This is similar to the [`Span::enter`] method, except that it moves the
+ /// span by value into the returned guard, rather than borrowing it.
+ /// Therefore, this method can be used to create and enter a span in a
+ /// single expression, without requiring a `let`-binding. For example:
+ ///
+ /// ```
+ /// # use tracing::info_span;
+ /// let _span = info_span!("something_interesting").entered();
+ /// ```
+ /// rather than:
+ /// ```
+ /// # use tracing::info_span;
+ /// let span = info_span!("something_interesting");
+ /// let _e = span.enter();
+ /// ```
+ ///
+ /// Furthermore, `entered` may be used when the span must be stored in some
+ /// other struct or be passed to a function while remaining entered.
+ ///
+ /// <pre class="ignore" style="white-space:normal;font:inherit;">
+ /// <strong>Note</strong>: The returned <a href="../struct.EnteredSpan.html">
+ /// <code>EnteredSpan</a></code> guard does not implement <code>Send</code>.
+ /// Dropping the guard will exit <em>this</em> span, and if the guard is sent
+ /// to another thread and dropped there, that thread may never have entered
+ /// this span. Thus, <code>EnteredSpan</code>s should not be sent between threads.
+ /// </pre>
+ ///
+ /// [syntax]: https://rust-lang.github.io/async-book/01_getting_started/04_async_await_primer.html
+ ///
+ /// # Examples
+ ///
+ /// The returned guard can be [explicitly exited][EnteredSpan::exit],
+ /// returning the un-entered span:
+ ///
+ /// ```
+ /// # use tracing::{Level, span};
+ /// let span = span!(Level::INFO, "doing_something").entered();
+ ///
+ /// // code here is within the span
+ ///
+ /// // explicitly exit the span, returning it
+ /// let span = span.exit();
+ ///
+ /// // code here is no longer within the span
+ ///
+ /// // enter the span again
+ /// let span = span.entered();
+ ///
+ /// // now we are inside the span once again
+ /// ```
+ ///
+ /// Guards need not be explicitly dropped:
+ ///
+ /// ```
+ /// # use tracing::trace_span;
+ /// fn my_function() -> String {
+ /// // enter a span for the duration of this function.
+ /// let span = trace_span!("my_function").entered();
+ ///
+ /// // anything happening in functions we call is still inside the span...
+ /// my_other_function();
+ ///
+ /// // returning from the function drops the guard, exiting the span.
+ /// return "Hello world".to_owned();
+ /// }
+ ///
+ /// fn my_other_function() {
+ /// // ...
+ /// }
+ /// ```
+ ///
+ /// Since the [`EnteredSpan`] guard can dereference to the [`Span`] itself,
+ /// the span may still be accessed while entered. For example:
+ ///
+ /// ```rust
+ /// # use tracing::info_span;
+ /// use tracing::field;
+ ///
+ /// // create the span with an empty field, and enter it.
+ /// let span = info_span!("my_span", some_field = field::Empty).entered();
+ ///
+ /// // we can still record a value for the field while the span is entered.
+ /// span.record("some_field", &"hello world!");
+ /// ```
+ ///
+
+ /// [`Subscriber::enter`]: super::subscriber::Subscriber::enter()
+ /// [`Subscriber::exit`]: super::subscriber::Subscriber::exit()
+ /// [`Id`]: super::Id
+ #[inline(always)]
+ pub fn entered(self) -> EnteredSpan {
+ self.do_enter();
+ EnteredSpan {
+ span: self,
+ _not_send: PhantomNotSend,
+ }
+ }
+
+ /// Returns this span, if it was [enabled] by the current [`Subscriber`], or
+ /// the [current span] (whose lexical distance may be further than expected),
+ /// if this span [is disabled].
+ ///
+ /// This method can be useful when propagating spans to spawned threads or
+ /// [async tasks]. Consider the following:
+ ///
+ /// ```
+ /// let _parent_span = tracing::info_span!("parent").entered();
+ ///
+ /// // ...
+ ///
+ /// let child_span = tracing::debug_span!("child");
+ ///
+ /// std::thread::spawn(move || {
+ /// let _entered = child_span.entered();
+ ///
+ /// tracing::info!("spawned a thread!");
+ ///
+ /// // ...
+ /// });
+ /// ```
+ ///
+ /// If the current [`Subscriber`] enables the [`DEBUG`] level, then both
+ /// the "parent" and "child" spans will be enabled. Thus, when the "spawaned
+ /// a thread!" event occurs, it will be inside of the "child" span. Because
+ /// "parent" is the parent of "child", the event will _also_ be inside of
+ /// "parent".
+ ///
+ /// However, if the [`Subscriber`] only enables the [`INFO`] level, the "child"
+ /// span will be disabled. When the thread is spawned, the
+ /// `child_span.entered()` call will do nothing, since "child" is not
+ /// enabled. In this case, the "spawned a thread!" event occurs outside of
+ /// *any* span, since the "child" span was responsible for propagating its
+ /// parent to the spawned thread.
+ ///
+ /// If this is not the desired behavior, `Span::or_current` can be used to
+ /// ensure that the "parent" span is propagated in both cases, either as a
+ /// parent of "child" _or_ directly. For example:
+ ///
+ /// ```
+ /// let _parent_span = tracing::info_span!("parent").entered();
+ ///
+ /// // ...
+ ///
+ /// // If DEBUG is enabled, then "child" will be enabled, and `or_current`
+ /// // returns "child". Otherwise, if DEBUG is not enabled, "child" will be
+ /// // disabled, and `or_current` returns "parent".
+ /// let child_span = tracing::debug_span!("child").or_current();
+ ///
+ /// std::thread::spawn(move || {
+ /// let _entered = child_span.entered();
+ ///
+ /// tracing::info!("spawned a thread!");
+ ///
+ /// // ...
+ /// });
+ /// ```
+ ///
+ /// When spawning [asynchronous tasks][async tasks], `Span::or_current` can
+ /// be used similarly, in combination with [`instrument`]:
+ ///
+ /// ```
+ /// use tracing::Instrument;
+ /// # // lol
+ /// # mod tokio {
+ /// # pub(super) fn spawn(_: impl std::future::Future) {}
+ /// # }
+ ///
+ /// let _parent_span = tracing::info_span!("parent").entered();
+ ///
+ /// // ...
+ ///
+ /// let child_span = tracing::debug_span!("child");
+ ///
+ /// tokio::spawn(
+ /// async {
+ /// tracing::info!("spawned a task!");
+ ///
+ /// // ...
+ ///
+ /// }.instrument(child_span.or_current())
+ /// );
+ /// ```
+ ///
+ /// In general, `or_current` should be preferred over nesting an
+ /// [`instrument`] call inside of an [`in_current_span`] call, as using
+ /// `or_current` will be more efficient.
+ ///
+ /// ```
+ /// use tracing::Instrument;
+ /// # // lol
+ /// # mod tokio {
+ /// # pub(super) fn spawn(_: impl std::future::Future) {}
+ /// # }
+ /// async fn my_async_fn() {
+ /// // ...
+ /// }
+ ///
+ /// let _parent_span = tracing::info_span!("parent").entered();
+ ///
+ /// // Do this:
+ /// tokio::spawn(
+ /// my_async_fn().instrument(tracing::debug_span!("child").or_current())
+ /// );
+ ///
+ /// // ...rather than this:
+ /// tokio::spawn(
+ /// my_async_fn()
+ /// .instrument(tracing::debug_span!("child"))
+ /// .in_current_span()
+ /// );
+ /// ```
+ ///
+ /// [enabled]: crate::Subscriber::enabled
+ /// [`Subscriber`]: crate::Subscriber
+ /// [current span]: Span::current
+ /// [is disabled]: Span::is_disabled
+ /// [`INFO`]: crate::Level::INFO
+ /// [`DEBUG`]: crate::Level::DEBUG
+ /// [async tasks]: std::task
+ /// [`instrument`]: crate::instrument::Instrument::instrument
+ /// [`in_current_span`]: crate::instrument::Instrument::in_current_span
+ pub fn or_current(self) -> Self {
+ if self.is_disabled() {
+ return Self::current();
+ }
+ self
+ }
+
+ #[inline(always)]
+ fn do_enter(&self) {
+ if let Some(inner) = self.inner.as_ref() {
+ inner.subscriber.enter(&inner.id);
+ }
+
+ if_log_enabled! { crate::Level::TRACE, {
+ if let Some(_meta) = self.meta {
+ self.log(ACTIVITY_LOG_TARGET, log::Level::Trace, format_args!("-> {};", _meta.name()));
+ }
+ }}
+ }
+
+ // Called from [`Entered`] and [`EnteredSpan`] drops.
+ //
+ // Running this behaviour on drop rather than with an explicit function
+ // call means that spans may still be exited when unwinding.
+ #[inline(always)]
+ fn do_exit(&self) {
+ if let Some(inner) = self.inner.as_ref() {
+ inner.subscriber.exit(&inner.id);
+ }
+
+ if_log_enabled! { crate::Level::TRACE, {
+ if let Some(_meta) = self.meta {
+ self.log(ACTIVITY_LOG_TARGET, log::Level::Trace, format_args!("<- {};", _meta.name()));
+ }
+ }}
+ }
+
+ /// Executes the given function in the context of this span.
+ ///
+ /// If this span is enabled, then this function enters the span, invokes `f`
+ /// and then exits the span. If the span is disabled, `f` will still be
+ /// invoked, but in the context of the currently-executing span (if there is
+ /// one).
+ ///
+ /// Returns the result of evaluating `f`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use tracing::{trace, span, Level};
+ /// let my_span = span!(Level::TRACE, "my_span");
+ ///
+ /// my_span.in_scope(|| {
+ /// // this event occurs within the span.
+ /// trace!("i'm in the span!");
+ /// });
+ ///
+ /// // this event occurs outside the span.
+ /// trace!("i'm not in the span!");
+ /// ```
+ ///
+ /// Calling a function and returning the result:
+ /// ```
+ /// # use tracing::{info_span, Level};
+ /// fn hello_world() -> String {
+ /// "Hello world!".to_owned()
+ /// }
+ ///
+ /// let span = info_span!("hello_world");
+ /// // the span will be entered for the duration of the call to
+ /// // `hello_world`.
+ /// let a_string = span.in_scope(hello_world);
+ ///
+ pub fn in_scope<F: FnOnce() -> T, T>(&self, f: F) -> T {
+ let _enter = self.enter();
+ f()
+ }
+
+ /// Returns a [`Field`][super::field::Field] for the field with the
+ /// given `name`, if one exists,
+ pub fn field<Q: ?Sized>(&self, field: &Q) -> Option<field::Field>
+ where
+ Q: field::AsField,
+ {
+ self.metadata().and_then(|meta| field.as_field(meta))
+ }
+
+ /// Returns true if this `Span` has a field for the given
+ /// [`Field`][super::field::Field] or field name.
+ #[inline]
+ pub fn has_field<Q: ?Sized>(&self, field: &Q) -> bool
+ where
+ Q: field::AsField,
+ {
+ self.field(field).is_some()
+ }
+
+ /// Records that the field described by `field` has the value `value`.
+ ///
+ /// This may be used with [`field::Empty`] to declare fields whose values
+ /// are not known when the span is created, and record them later:
+ /// ```
+ /// use tracing::{trace_span, field};
+ ///
+ /// // Create a span with two fields: `greeting`, with the value "hello world", and
+ /// // `parting`, without a value.
+ /// let span = trace_span!("my_span", greeting = "hello world", parting = field::Empty);
+ ///
+ /// // ...
+ ///
+ /// // Now, record a value for parting as well.
+ /// // (note that the field name is passed as a string slice)
+ /// span.record("parting", "goodbye world!");
+ /// ```
+ /// However, it may also be used to record a _new_ value for a field whose
+ /// value was already recorded:
+ /// ```
+ /// use tracing::info_span;
+ /// # fn do_something() -> Result<(), ()> { Err(()) }
+ ///
+ /// // Initially, let's assume that our attempt to do something is going okay...
+ /// let span = info_span!("doing_something", is_okay = true);
+ /// let _e = span.enter();
+ ///
+ /// match do_something() {
+ /// Ok(something) => {
+ /// // ...
+ /// }
+ /// Err(_) => {
+ /// // Things are no longer okay!
+ /// span.record("is_okay", false);
+ /// }
+ /// }
+ /// ```
+ ///
+ /// <pre class="ignore" style="white-space:normal;font:inherit;">
+ /// <strong>Note</strong>: The fields associated with a span are part
+ /// of its <a href="../struct.Metadata.html"><code>Metadata</code></a>.
+ /// The <a href="../struct.Metadata.html"><code>Metadata</code></a>
+ /// describing a particular span is constructed statically when the span
+ /// is created and cannot be extended later to add new fields. Therefore,
+ /// you cannot record a value for a field that was not specified when the
+ /// span was created:
+ /// </pre>
+ ///
+ /// ```
+ /// use tracing::{trace_span, field};
+ ///
+ /// // Create a span with two fields: `greeting`, with the value "hello world", and
+ /// // `parting`, without a value.
+ /// let span = trace_span!("my_span", greeting = "hello world", parting = field::Empty);
+ ///
+ /// // ...
+ ///
+ /// // Now, you try to record a value for a new field, `new_field`, which was not
+ /// // declared as `Empty` or populated when you created `span`.
+ /// // You won't get any error, but the assignment will have no effect!
+ /// span.record("new_field", "interesting_value_you_really_need");
+ ///
+ /// // Instead, all fields that may be recorded after span creation should be declared up front,
+ /// // using field::Empty when a value is not known, as we did for `parting`.
+ /// // This `record` call will indeed replace field::Empty with "you will be remembered".
+ /// span.record("parting", "you will be remembered");
+ /// ```
+ ///
+ /// [`field::Empty`]: super::field::Empty
+ /// [`Metadata`]: super::Metadata
+ pub fn record<Q: ?Sized, V>(&self, field: &Q, value: V) -> &Self
+ where
+ Q: field::AsField,
+ V: field::Value,
+ {
+ if let Some(meta) = self.meta {
+ if let Some(field) = field.as_field(meta) {
+ self.record_all(
+ &meta
+ .fields()
+ .value_set(&[(&field, Some(&value as &dyn field::Value))]),
+ );
+ }
+ }
+
+ self
+ }
+
+ /// Records all the fields in the provided `ValueSet`.
+ pub fn record_all(&self, values: &field::ValueSet<'_>) -> &Self {
+ let record = Record::new(values);
+ if let Some(ref inner) = self.inner {
+ inner.record(&record);
+ }
+
+ if let Some(_meta) = self.meta {
+ if_log_enabled! { *_meta.level(), {
+ let target = if record.is_empty() {
+ LIFECYCLE_LOG_TARGET
+ } else {
+ _meta.target()
+ };
+ self.log(
+ target,
+ level_to_log!(*_meta.level()),
+ format_args!("{};{}", _meta.name(), crate::log::LogValueSet { values, is_first: false }),
+ );
+ }}
+ }
+
+ self
+ }
+
+ /// Returns `true` if this span was disabled by the subscriber and does not
+ /// exist.
+ ///
+ /// See also [`is_none`].
+ ///
+ /// [`is_none`]: Span::is_none()
+ #[inline]
+ pub fn is_disabled(&self) -> bool {
+ self.inner.is_none()
+ }
+
+ /// Returns `true` if this span was constructed by [`Span::none`] and is
+ /// empty.
+ ///
+ /// If `is_none` returns `true` for a given span, then [`is_disabled`] will
+ /// also return `true`. However, when a span is disabled by the subscriber
+ /// rather than constructed by `Span::none`, this method will return
+ /// `false`, while `is_disabled` will return `true`.
+ ///
+ /// [`Span::none`]: Span::none()
+ /// [`is_disabled`]: Span::is_disabled()
+ #[inline]
+ pub fn is_none(&self) -> bool {
+ self.is_disabled() && self.meta.is_none()
+ }
+
+ /// Indicates that the span with the given ID has an indirect causal
+ /// relationship with this span.
+ ///
+ /// This relationship differs somewhat from the parent-child relationship: a
+ /// span may have any number of prior spans, rather than a single one; and
+ /// spans are not considered to be executing _inside_ of the spans they
+ /// follow from. This means that a span may close even if subsequent spans
+ /// that follow from it are still open, and time spent inside of a
+ /// subsequent span should not be included in the time its precedents were
+ /// executing. This is used to model causal relationships such as when a
+ /// single future spawns several related background tasks, et cetera.
+ ///
+ /// If this span is disabled, or the resulting follows-from relationship
+ /// would be invalid, this function will do nothing.
+ ///
+ /// # Examples
+ ///
+ /// Setting a `follows_from` relationship with a `Span`:
+ /// ```
+ /// # use tracing::{span, Id, Level, Span};
+ /// let span1 = span!(Level::INFO, "span_1");
+ /// let span2 = span!(Level::DEBUG, "span_2");
+ /// span2.follows_from(span1);
+ /// ```
+ ///
+ /// Setting a `follows_from` relationship with the current span:
+ /// ```
+ /// # use tracing::{span, Id, Level, Span};
+ /// let span = span!(Level::INFO, "hello!");
+ /// span.follows_from(Span::current());
+ /// ```
+ ///
+ /// Setting a `follows_from` relationship with a `Span` reference:
+ /// ```
+ /// # use tracing::{span, Id, Level, Span};
+ /// let span = span!(Level::INFO, "hello!");
+ /// let curr = Span::current();
+ /// span.follows_from(&curr);
+ /// ```
+ ///
+ /// Setting a `follows_from` relationship with an `Id`:
+ /// ```
+ /// # use tracing::{span, Id, Level, Span};
+ /// let span = span!(Level::INFO, "hello!");
+ /// let id = span.id();
+ /// span.follows_from(id);
+ /// ```
+ pub fn follows_from(&self, from: impl Into<Option<Id>>) -> &Self {
+ if let Some(ref inner) = self.inner {
+ if let Some(from) = from.into() {
+ inner.follows_from(&from);
+ }
+ }
+ self
+ }
+
+ /// Returns this span's `Id`, if it is enabled.
+ pub fn id(&self) -> Option<Id> {
+ self.inner.as_ref().map(Inner::id)
+ }
+
+ /// Returns this span's `Metadata`, if it is enabled.
+ pub fn metadata(&self) -> Option<&'static Metadata<'static>> {
+ self.meta
+ }
+
+ #[cfg(feature = "log")]
+ #[inline]
+ fn log(&self, target: &str, level: log::Level, message: fmt::Arguments<'_>) {
+ if let Some(meta) = self.meta {
+ if level_to_log!(*meta.level()) <= log::max_level() {
+ let logger = log::logger();
+ let log_meta = log::Metadata::builder().level(level).target(target).build();
+ if logger.enabled(&log_meta) {
+ if let Some(ref inner) = self.inner {
+ logger.log(
+ &log::Record::builder()
+ .metadata(log_meta)
+ .module_path(meta.module_path())
+ .file(meta.file())
+ .line(meta.line())
+ .args(format_args!("{} span={}", message, inner.id.into_u64()))
+ .build(),
+ );
+ } else {
+ logger.log(
+ &log::Record::builder()
+ .metadata(log_meta)
+ .module_path(meta.module_path())
+ .file(meta.file())
+ .line(meta.line())
+ .args(message)
+ .build(),
+ );
+ }
+ }
+ }
+ }
+ }
+
+ /// Invokes a function with a reference to this span's ID and subscriber.
+ ///
+ /// if this span is enabled, the provided function is called, and the result is returned.
+ /// If the span is disabled, the function is not called, and this method returns `None`
+ /// instead.
+ pub fn with_subscriber<T>(&self, f: impl FnOnce((&Id, &Dispatch)) -> T) -> Option<T> {
+ self.inner
+ .as_ref()
+ .map(|inner| f((&inner.id, &inner.subscriber)))
+ }
+}
+
+impl cmp::PartialEq for Span {
+ fn eq(&self, other: &Self) -> bool {
+ match (&self.meta, &other.meta) {
+ (Some(this), Some(that)) => {
+ this.callsite() == that.callsite() && self.inner == other.inner
+ }
+ _ => false,
+ }
+ }
+}
+
+impl Hash for Span {
+ fn hash<H: Hasher>(&self, hasher: &mut H) {
+ self.inner.hash(hasher);
+ }
+}
+
+impl fmt::Debug for Span {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ let mut span = f.debug_struct("Span");
+ if let Some(meta) = self.meta {
+ span.field("name", &meta.name())
+ .field("level", &meta.level())
+ .field("target", &meta.target());
+
+ if let Some(ref inner) = self.inner {
+ span.field("id", &inner.id());
+ } else {
+ span.field("disabled", &true);
+ }
+
+ if let Some(ref path) = meta.module_path() {
+ span.field("module_path", &path);
+ }
+
+ if let Some(ref line) = meta.line() {
+ span.field("line", &line);
+ }
+
+ if let Some(ref file) = meta.file() {
+ span.field("file", &file);
+ }
+ } else {
+ span.field("none", &true);
+ }
+
+ span.finish()
+ }
+}
+
+impl<'a> From<&'a Span> for Option<&'a Id> {
+ fn from(span: &'a Span) -> Self {
+ span.inner.as_ref().map(|inner| &inner.id)
+ }
+}
+
+impl<'a> From<&'a Span> for Option<Id> {
+ fn from(span: &'a Span) -> Self {
+ span.inner.as_ref().map(Inner::id)
+ }
+}
+
+impl From<Span> for Option<Id> {
+ fn from(span: Span) -> Self {
+ span.inner.as_ref().map(Inner::id)
+ }
+}
+
+impl<'a> From<&'a EnteredSpan> for Option<&'a Id> {
+ fn from(span: &'a EnteredSpan) -> Self {
+ span.inner.as_ref().map(|inner| &inner.id)
+ }
+}
+
+impl<'a> From<&'a EnteredSpan> for Option<Id> {
+ fn from(span: &'a EnteredSpan) -> Self {
+ span.inner.as_ref().map(Inner::id)
+ }
+}
+
+impl Drop for Span {
+ #[inline(always)]
+ fn drop(&mut self) {
+ if let Some(Inner {
+ ref id,
+ ref subscriber,
+ }) = self.inner
+ {
+ subscriber.try_close(id.clone());
+ }
+
+ if_log_enabled! { crate::Level::TRACE, {
+ if let Some(meta) = self.meta {
+ self.log(
+ LIFECYCLE_LOG_TARGET,
+ log::Level::Trace,
+ format_args!("-- {};", meta.name()),
+ );
+ }
+ }}
+ }
+}
+
+// ===== impl Inner =====
+
+impl Inner {
+ /// Indicates that the span with the given ID has an indirect causal
+ /// relationship with this span.
+ ///
+ /// This relationship differs somewhat from the parent-child relationship: a
+ /// span may have any number of prior spans, rather than a single one; and
+ /// spans are not considered to be executing _inside_ of the spans they
+ /// follow from. This means that a span may close even if subsequent spans
+ /// that follow from it are still open, and time spent inside of a
+ /// subsequent span should not be included in the time its precedents were
+ /// executing. This is used to model causal relationships such as when a
+ /// single future spawns several related background tasks, et cetera.
+ ///
+ /// If this span is disabled, this function will do nothing. Otherwise, it
+ /// returns `Ok(())` if the other span was added as a precedent of this
+ /// span, or an error if this was not possible.
+ fn follows_from(&self, from: &Id) {
+ self.subscriber.record_follows_from(&self.id, from)
+ }
+
+ /// Returns the span's ID.
+ fn id(&self) -> Id {
+ self.id.clone()
+ }
+
+ fn record(&self, values: &Record<'_>) {
+ self.subscriber.record(&self.id, values)
+ }
+
+ fn new(id: Id, subscriber: &Dispatch) -> Self {
+ Inner {
+ id,
+ subscriber: subscriber.clone(),
+ }
+ }
+}
+
+impl cmp::PartialEq for Inner {
+ fn eq(&self, other: &Self) -> bool {
+ self.id == other.id
+ }
+}
+
+impl Hash for Inner {
+ fn hash<H: Hasher>(&self, state: &mut H) {
+ self.id.hash(state);
+ }
+}
+
+impl Clone for Inner {
+ fn clone(&self) -> Self {
+ Inner {
+ id: self.subscriber.clone_span(&self.id),
+ subscriber: self.subscriber.clone(),
+ }
+ }
+}
+
+// ===== impl Entered =====
+
+impl EnteredSpan {
+ /// Returns this span's `Id`, if it is enabled.
+ pub fn id(&self) -> Option<Id> {
+ self.inner.as_ref().map(Inner::id)
+ }
+
+ /// Exits this span, returning the underlying [`Span`].
+ #[inline]
+ pub fn exit(mut self) -> Span {
+ // One does not simply move out of a struct with `Drop`.
+ let span = mem::replace(&mut self.span, Span::none());
+ span.do_exit();
+ span
+ }
+}
+
+impl Deref for EnteredSpan {
+ type Target = Span;
+
+ #[inline]
+ fn deref(&self) -> &Span {
+ &self.span
+ }
+}
+
+impl<'a> Drop for Entered<'a> {
+ #[inline(always)]
+ fn drop(&mut self) {
+ self.span.do_exit()
+ }
+}
+
+impl Drop for EnteredSpan {
+ #[inline(always)]
+ fn drop(&mut self) {
+ self.span.do_exit()
+ }
+}
+
+/// Technically, `EnteredSpan` _can_ implement both `Send` *and*
+/// `Sync` safely. It doesn't, because it has a `PhantomNotSend` field,
+/// specifically added in order to make it `!Send`.
+///
+/// Sending an `EnteredSpan` guard between threads cannot cause memory unsafety.
+/// However, it *would* result in incorrect behavior, so we add a
+/// `PhantomNotSend` to prevent it from being sent between threads. This is
+/// because it must be *dropped* on the same thread that it was created;
+/// otherwise, the span will never be exited on the thread where it was entered,
+/// and it will attempt to exit the span on a thread that may never have entered
+/// it. However, we still want them to be `Sync` so that a struct holding an
+/// `Entered` guard can be `Sync`.
+///
+/// Thus, this is totally safe.
+#[derive(Debug)]
+struct PhantomNotSend {
+ ghost: PhantomData<*mut ()>,
+}
+
+#[allow(non_upper_case_globals)]
+const PhantomNotSend: PhantomNotSend = PhantomNotSend { ghost: PhantomData };
+
+/// # Safety
+///
+/// Trivially safe, as `PhantomNotSend` doesn't have any API.
+unsafe impl Sync for PhantomNotSend {}
+
+#[cfg(test)]
+mod test {
+ use super::*;
+
+ trait AssertSend: Send {}
+ impl AssertSend for Span {}
+
+ trait AssertSync: Sync {}
+ impl AssertSync for Span {}
+ impl AssertSync for Entered<'_> {}
+ impl AssertSync for EnteredSpan {}
+
+ #[test]
+ fn test_record_backwards_compat() {
+ Span::current().record("some-key", &"some text");
+ Span::current().record("some-key", &false);
+ }
+}
diff --git a/vendor/tracing-0.1.37/src/stdlib.rs b/vendor/tracing-0.1.37/src/stdlib.rs
new file mode 100644
index 000000000..12b54084d
--- /dev/null
+++ b/vendor/tracing-0.1.37/src/stdlib.rs
@@ -0,0 +1,55 @@
+//! Re-exports either the Rust `std` library or `core` and `alloc` when `std` is
+//! disabled.
+//!
+//! `crate::stdlib::...` should be used rather than `std::` when adding code that
+//! will be available with the standard library disabled.
+//!
+//! Note that this module is called `stdlib` rather than `std`, as Rust 1.34.0
+//! does not permit redefining the name `stdlib` (although this works on the
+//! latest stable Rust).
+#[cfg(feature = "std")]
+pub(crate) use std::*;
+
+#[cfg(not(feature = "std"))]
+pub(crate) use self::no_std::*;
+
+#[cfg(not(feature = "std"))]
+mod no_std {
+ // We pre-emptively export everything from libcore/liballoc, (even modules
+ // we aren't using currently) to make adding new code easier. Therefore,
+ // some of these imports will be unused.
+ #![allow(unused_imports)]
+
+ pub(crate) use core::{
+ any, array, ascii, cell, char, clone, cmp, convert, default, f32, f64, ffi, future, hash,
+ hint, i128, i16, i8, isize, iter, marker, mem, num, ops, option, pin, ptr, result, task,
+ time, u128, u16, u32, u8, usize,
+ };
+
+ pub(crate) use alloc::{boxed, collections, rc, string, vec};
+
+ pub(crate) mod borrow {
+ pub(crate) use alloc::borrow::*;
+ pub(crate) use core::borrow::*;
+ }
+
+ pub(crate) mod fmt {
+ pub(crate) use alloc::fmt::*;
+ pub(crate) use core::fmt::*;
+ }
+
+ pub(crate) mod slice {
+ pub(crate) use alloc::slice::*;
+ pub(crate) use core::slice::*;
+ }
+
+ pub(crate) mod str {
+ pub(crate) use alloc::str::*;
+ pub(crate) use core::str::*;
+ }
+
+ pub(crate) mod sync {
+ pub(crate) use alloc::sync::*;
+ pub(crate) use core::sync::*;
+ }
+}
diff --git a/vendor/tracing-0.1.37/src/subscriber.rs b/vendor/tracing-0.1.37/src/subscriber.rs
new file mode 100644
index 000000000..f55698d13
--- /dev/null
+++ b/vendor/tracing-0.1.37/src/subscriber.rs
@@ -0,0 +1,65 @@
+//! Collects and records trace data.
+pub use tracing_core::subscriber::*;
+
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub use tracing_core::dispatcher::DefaultGuard;
+
+/// Sets this [`Subscriber`] as the default for the current thread for the
+/// duration of a closure.
+///
+/// The default subscriber is used when creating a new [`Span`] or
+/// [`Event`].
+///
+///
+/// [`Span`]: super::span::Span
+/// [`Subscriber`]: super::subscriber::Subscriber
+/// [`Event`]: super::event::Event
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+pub fn with_default<T, S>(subscriber: S, f: impl FnOnce() -> T) -> T
+where
+ S: Subscriber + Send + Sync + 'static,
+{
+ crate::dispatcher::with_default(&crate::Dispatch::new(subscriber), f)
+}
+
+/// Sets this subscriber as the global default for the duration of the entire program.
+/// Will be used as a fallback if no thread-local subscriber has been set in a thread (using `with_default`.)
+///
+/// Can only be set once; subsequent attempts to set the global default will fail.
+/// Returns whether the initialization was successful.
+///
+/// Note: Libraries should *NOT* call `set_global_default()`! That will cause conflicts when
+/// executables try to set them later.
+///
+/// [span]: super::span
+/// [`Subscriber`]: super::subscriber::Subscriber
+/// [`Event`]: super::event::Event
+pub fn set_global_default<S>(subscriber: S) -> Result<(), SetGlobalDefaultError>
+where
+ S: Subscriber + Send + Sync + 'static,
+{
+ crate::dispatcher::set_global_default(crate::Dispatch::new(subscriber))
+}
+
+/// Sets the [`Subscriber`] as the default for the current thread for the
+/// duration of the lifetime of the returned [`DefaultGuard`].
+///
+/// The default subscriber is used when creating a new [`Span`] or [`Event`].
+///
+/// [`Span`]: super::span::Span
+/// [`Subscriber`]: super::subscriber::Subscriber
+/// [`Event`]: super::event::Event
+/// [`DefaultGuard`]: super::dispatcher::DefaultGuard
+#[cfg(feature = "std")]
+#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
+#[must_use = "Dropping the guard unregisters the subscriber."]
+pub fn set_default<S>(subscriber: S) -> DefaultGuard
+where
+ S: Subscriber + Send + Sync + 'static,
+{
+ crate::dispatcher::set_default(&crate::Dispatch::new(subscriber))
+}
+
+pub use tracing_core::dispatcher::SetGlobalDefaultError;
diff --git a/vendor/tracing-0.1.37/tests/enabled.rs b/vendor/tracing-0.1.37/tests/enabled.rs
new file mode 100644
index 000000000..ea1c69804
--- /dev/null
+++ b/vendor/tracing-0.1.37/tests/enabled.rs
@@ -0,0 +1,54 @@
+#![cfg(feature = "std")]
+use tracing::Level;
+use tracing_mock::*;
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn level_and_target() {
+ let subscriber = subscriber::mock()
+ .with_filter(|meta| {
+ if meta.target() == "debug_module" {
+ meta.level() <= &Level::DEBUG
+ } else {
+ meta.level() <= &Level::INFO
+ }
+ })
+ .done()
+ .run();
+
+ let _guard = tracing::subscriber::set_default(subscriber);
+
+ assert!(tracing::enabled!(target: "debug_module", Level::DEBUG));
+ assert!(tracing::enabled!(Level::ERROR));
+ assert!(!tracing::enabled!(Level::DEBUG));
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn span_and_event() {
+ let subscriber = subscriber::mock()
+ .with_filter(|meta| {
+ if meta.target() == "debug_module" {
+ meta.level() <= &Level::DEBUG
+ } else if meta.is_span() {
+ meta.level() <= &Level::TRACE
+ } else if meta.is_event() {
+ meta.level() <= &Level::DEBUG
+ } else {
+ meta.level() <= &Level::INFO
+ }
+ })
+ .done()
+ .run();
+
+ let _guard = tracing::subscriber::set_default(subscriber);
+
+ // Ensure that the `_event` and `_span` alternatives work corretly
+ assert!(!tracing::event_enabled!(Level::TRACE));
+ assert!(tracing::event_enabled!(Level::DEBUG));
+ assert!(tracing::span_enabled!(Level::TRACE));
+
+ // target variants
+ assert!(tracing::span_enabled!(target: "debug_module", Level::DEBUG));
+ assert!(tracing::event_enabled!(target: "debug_module", Level::DEBUG));
+}
diff --git a/vendor/tracing-0.1.37/tests/event.rs b/vendor/tracing-0.1.37/tests/event.rs
new file mode 100644
index 000000000..61df19ad3
--- /dev/null
+++ b/vendor/tracing-0.1.37/tests/event.rs
@@ -0,0 +1,500 @@
+// These tests require the thread-local scoped dispatcher, which only works when
+// we have a standard library. The behaviour being tested should be the same
+// with the standard lib disabled.
+//
+// The alternative would be for each of these tests to be defined in a separate
+// file, which is :(
+#![cfg(feature = "std")]
+
+use tracing::{
+ debug, error,
+ field::{debug, display},
+ info,
+ subscriber::with_default,
+ trace, warn, Level,
+};
+use tracing_mock::*;
+
+macro_rules! event_without_message {
+ ($name:ident: $e:expr) => {
+ #[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+ #[test]
+ fn $name() {
+ let (subscriber, handle) = subscriber::mock()
+ .event(
+ event::mock().with_fields(
+ field::mock("answer")
+ .with_value(&42)
+ .and(
+ field::mock("to_question")
+ .with_value(&"life, the universe, and everything"),
+ )
+ .only(),
+ ),
+ )
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ info!(
+ answer = $e,
+ to_question = "life, the universe, and everything"
+ );
+ });
+
+ handle.assert_finished();
+ }
+ };
+}
+
+event_without_message! {event_without_message: 42}
+event_without_message! {wrapping_event_without_message: std::num::Wrapping(42)}
+event_without_message! {nonzeroi32_event_without_message: std::num::NonZeroI32::new(42).unwrap()}
+// needs API breakage
+//event_without_message!{nonzerou128_event_without_message: std::num::NonZeroU128::new(42).unwrap()}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn event_with_message() {
+ let (subscriber, handle) = subscriber::mock()
+ .event(event::msg(format_args!(
+ "hello from my event! yak shaved = {:?}",
+ true
+ )))
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ debug!("hello from my event! yak shaved = {:?}", true);
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn message_without_delims() {
+ let (subscriber, handle) = subscriber::mock()
+ .event(
+ event::mock().with_fields(
+ field::mock("answer")
+ .with_value(&42)
+ .and(field::mock("question").with_value(&"life, the universe, and everything"))
+ .and(field::msg(format_args!(
+ "hello from my event! tricky? {:?}!",
+ true
+ )))
+ .only(),
+ ),
+ )
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ let question = "life, the universe, and everything";
+ debug!(answer = 42, question, "hello from {where}! tricky? {:?}!", true, where = "my event");
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn string_message_without_delims() {
+ let (subscriber, handle) = subscriber::mock()
+ .event(
+ event::mock().with_fields(
+ field::mock("answer")
+ .with_value(&42)
+ .and(field::mock("question").with_value(&"life, the universe, and everything"))
+ .and(field::msg(format_args!("hello from my event")))
+ .only(),
+ ),
+ )
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ let question = "life, the universe, and everything";
+ debug!(answer = 42, question, "hello from my event");
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn one_with_everything() {
+ let (subscriber, handle) = subscriber::mock()
+ .event(
+ event::mock()
+ .with_fields(
+ field::mock("message")
+ .with_value(&tracing::field::debug(format_args!(
+ "{:#x} make me one with{what:.>20}",
+ 4_277_009_102u64,
+ what = "everything"
+ )))
+ .and(field::mock("foo").with_value(&666))
+ .and(field::mock("bar").with_value(&false))
+ .and(field::mock("like_a_butterfly").with_value(&42.0))
+ .only(),
+ )
+ .at_level(Level::ERROR)
+ .with_target("whatever"),
+ )
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ tracing::event!(
+ target: "whatever",
+ Level::ERROR,
+ { foo = 666, bar = false, like_a_butterfly = 42.0 },
+ "{:#x} make me one with{what:.>20}", 4_277_009_102u64, what = "everything"
+ );
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn moved_field() {
+ let (subscriber, handle) = subscriber::mock()
+ .event(
+ event::mock().with_fields(
+ field::mock("foo")
+ .with_value(&display("hello from my event"))
+ .only(),
+ ),
+ )
+ .done()
+ .run_with_handle();
+ with_default(subscriber, || {
+ let from = "my event";
+ tracing::event!(Level::INFO, foo = display(format!("hello from {}", from)))
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn dotted_field_name() {
+ let (subscriber, handle) = subscriber::mock()
+ .event(
+ event::mock().with_fields(
+ field::mock("foo.bar")
+ .with_value(&true)
+ .and(field::mock("foo.baz").with_value(&false))
+ .only(),
+ ),
+ )
+ .done()
+ .run_with_handle();
+ with_default(subscriber, || {
+ tracing::event!(Level::INFO, foo.bar = true, foo.baz = false);
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn borrowed_field() {
+ let (subscriber, handle) = subscriber::mock()
+ .event(
+ event::mock().with_fields(
+ field::mock("foo")
+ .with_value(&display("hello from my event"))
+ .only(),
+ ),
+ )
+ .done()
+ .run_with_handle();
+ with_default(subscriber, || {
+ let from = "my event";
+ let mut message = format!("hello from {}", from);
+ tracing::event!(Level::INFO, foo = display(&message));
+ message.push_str(", which happened!");
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+// If emitting log instrumentation, this gets moved anyway, breaking the test.
+#[cfg(not(feature = "log"))]
+fn move_field_out_of_struct() {
+ use tracing::field::debug;
+
+ #[derive(Debug)]
+ struct Position {
+ x: f32,
+ y: f32,
+ }
+
+ let pos = Position {
+ x: 3.234,
+ y: -1.223,
+ };
+ let (subscriber, handle) = subscriber::mock()
+ .event(
+ event::mock().with_fields(
+ field::mock("x")
+ .with_value(&debug(3.234))
+ .and(field::mock("y").with_value(&debug(-1.223)))
+ .only(),
+ ),
+ )
+ .event(event::mock().with_fields(field::mock("position").with_value(&debug(&pos))))
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ let pos = Position {
+ x: 3.234,
+ y: -1.223,
+ };
+ debug!(x = debug(pos.x), y = debug(pos.y));
+ debug!(target: "app_events", { position = debug(pos) }, "New position");
+ });
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn display_shorthand() {
+ let (subscriber, handle) = subscriber::mock()
+ .event(
+ event::mock().with_fields(
+ field::mock("my_field")
+ .with_value(&display("hello world"))
+ .only(),
+ ),
+ )
+ .done()
+ .run_with_handle();
+ with_default(subscriber, || {
+ tracing::event!(Level::TRACE, my_field = %"hello world");
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn debug_shorthand() {
+ let (subscriber, handle) = subscriber::mock()
+ .event(
+ event::mock().with_fields(
+ field::mock("my_field")
+ .with_value(&debug("hello world"))
+ .only(),
+ ),
+ )
+ .done()
+ .run_with_handle();
+ with_default(subscriber, || {
+ tracing::event!(Level::TRACE, my_field = ?"hello world");
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn both_shorthands() {
+ let (subscriber, handle) = subscriber::mock()
+ .event(
+ event::mock().with_fields(
+ field::mock("display_field")
+ .with_value(&display("hello world"))
+ .and(field::mock("debug_field").with_value(&debug("hello world")))
+ .only(),
+ ),
+ )
+ .done()
+ .run_with_handle();
+ with_default(subscriber, || {
+ tracing::event!(Level::TRACE, display_field = %"hello world", debug_field = ?"hello world");
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn explicit_child() {
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(span::mock().named("foo"))
+ .event(event::mock().with_explicit_parent(Some("foo")))
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ let foo = tracing::span!(Level::TRACE, "foo");
+ tracing::event!(parent: foo.id(), Level::TRACE, "bar");
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn explicit_child_at_levels() {
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(span::mock().named("foo"))
+ .event(event::mock().with_explicit_parent(Some("foo")))
+ .event(event::mock().with_explicit_parent(Some("foo")))
+ .event(event::mock().with_explicit_parent(Some("foo")))
+ .event(event::mock().with_explicit_parent(Some("foo")))
+ .event(event::mock().with_explicit_parent(Some("foo")))
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ let foo = tracing::span!(Level::TRACE, "foo");
+ trace!(parent: foo.id(), "a");
+ debug!(parent: foo.id(), "b");
+ info!(parent: foo.id(), "c");
+ warn!(parent: foo.id(), "d");
+ error!(parent: foo.id(), "e");
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn option_values() {
+ let (subscriber, handle) = subscriber::mock()
+ .event(
+ event::mock().with_fields(
+ field::mock("some_str")
+ .with_value(&"yes")
+ .and(field::mock("some_bool").with_value(&true))
+ .and(field::mock("some_u64").with_value(&42_u64))
+ .only(),
+ ),
+ )
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ let some_str = Some("yes");
+ let none_str: Option<&'static str> = None;
+ let some_bool = Some(true);
+ let none_bool: Option<bool> = None;
+ let some_u64 = Some(42_u64);
+ let none_u64: Option<u64> = None;
+ trace!(
+ some_str = some_str,
+ none_str = none_str,
+ some_bool = some_bool,
+ none_bool = none_bool,
+ some_u64 = some_u64,
+ none_u64 = none_u64
+ );
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn option_ref_values() {
+ let (subscriber, handle) = subscriber::mock()
+ .event(
+ event::mock().with_fields(
+ field::mock("some_str")
+ .with_value(&"yes")
+ .and(field::mock("some_bool").with_value(&true))
+ .and(field::mock("some_u64").with_value(&42_u64))
+ .only(),
+ ),
+ )
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ let some_str = &Some("yes");
+ let none_str: &Option<&'static str> = &None;
+ let some_bool = &Some(true);
+ let none_bool: &Option<bool> = &None;
+ let some_u64 = &Some(42_u64);
+ let none_u64: &Option<u64> = &None;
+ trace!(
+ some_str = some_str,
+ none_str = none_str,
+ some_bool = some_bool,
+ none_bool = none_bool,
+ some_u64 = some_u64,
+ none_u64 = none_u64
+ );
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn option_ref_mut_values() {
+ let (subscriber, handle) = subscriber::mock()
+ .event(
+ event::mock().with_fields(
+ field::mock("some_str")
+ .with_value(&"yes")
+ .and(field::mock("some_bool").with_value(&true))
+ .and(field::mock("some_u64").with_value(&42_u64))
+ .only(),
+ ),
+ )
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ let some_str = &mut Some("yes");
+ let none_str: &mut Option<&'static str> = &mut None;
+ let some_bool = &mut Some(true);
+ let none_bool: &mut Option<bool> = &mut None;
+ let some_u64 = &mut Some(42_u64);
+ let none_u64: &mut Option<u64> = &mut None;
+ trace!(
+ some_str = some_str,
+ none_str = none_str,
+ some_bool = some_bool,
+ none_bool = none_bool,
+ some_u64 = some_u64,
+ none_u64 = none_u64
+ );
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn string_field() {
+ let (subscriber, handle) = subscriber::mock()
+ .event(event::mock().with_fields(field::mock("my_string").with_value(&"hello").only()))
+ .event(
+ event::mock().with_fields(field::mock("my_string").with_value(&"hello world!").only()),
+ )
+ .done()
+ .run_with_handle();
+ with_default(subscriber, || {
+ let mut my_string = String::from("hello");
+
+ tracing::event!(Level::INFO, my_string);
+
+ // the string is not moved by using it as a field!
+ my_string.push_str(" world!");
+
+ tracing::event!(Level::INFO, my_string);
+ });
+
+ handle.assert_finished();
+}
diff --git a/vendor/tracing-0.1.37/tests/filter_caching_is_lexically_scoped.rs b/vendor/tracing-0.1.37/tests/filter_caching_is_lexically_scoped.rs
new file mode 100644
index 000000000..e291103d7
--- /dev/null
+++ b/vendor/tracing-0.1.37/tests/filter_caching_is_lexically_scoped.rs
@@ -0,0 +1,65 @@
+// Tests that depend on a count of the number of times their filter is evaluated
+// can't exist in the same file with other tests that add subscribers to the
+// registry. The registry was changed so that each time a new dispatcher is
+// added all filters are re-evaluated. The tests being run only in separate
+// threads with shared global state lets them interfere with each other
+
+#[cfg(not(feature = "std"))]
+extern crate std;
+
+use tracing::{span, Level};
+use tracing_mock::*;
+
+use std::sync::{
+ atomic::{AtomicUsize, Ordering},
+ Arc,
+};
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn filter_caching_is_lexically_scoped() {
+ pub fn my_great_function() -> bool {
+ span!(Level::TRACE, "emily").in_scope(|| true)
+ }
+
+ pub fn my_other_function() -> bool {
+ span!(Level::TRACE, "frank").in_scope(|| true)
+ }
+
+ let count = Arc::new(AtomicUsize::new(0));
+ let count2 = count.clone();
+
+ let subscriber = subscriber::mock()
+ .with_filter(move |meta| match meta.name() {
+ "emily" | "frank" => {
+ count2.fetch_add(1, Ordering::Relaxed);
+ true
+ }
+ _ => false,
+ })
+ .run();
+
+ // Since this test is in its own file anyway, we can do this. Thus, this
+ // test will work even with no-std.
+ tracing::subscriber::set_global_default(subscriber).unwrap();
+
+ // Call the function once. The filter should be re-evaluated.
+ assert!(my_great_function());
+ assert_eq!(count.load(Ordering::Relaxed), 1);
+
+ // Call the function again. The cached result should be used.
+ assert!(my_great_function());
+ assert_eq!(count.load(Ordering::Relaxed), 1);
+
+ assert!(my_other_function());
+ assert_eq!(count.load(Ordering::Relaxed), 2);
+
+ assert!(my_great_function());
+ assert_eq!(count.load(Ordering::Relaxed), 2);
+
+ assert!(my_other_function());
+ assert_eq!(count.load(Ordering::Relaxed), 2);
+
+ assert!(my_great_function());
+ assert_eq!(count.load(Ordering::Relaxed), 2);
+}
diff --git a/vendor/tracing-0.1.37/tests/filters_are_not_reevaluated_for_the_same_span.rs b/vendor/tracing-0.1.37/tests/filters_are_not_reevaluated_for_the_same_span.rs
new file mode 100644
index 000000000..e9b2529b8
--- /dev/null
+++ b/vendor/tracing-0.1.37/tests/filters_are_not_reevaluated_for_the_same_span.rs
@@ -0,0 +1,70 @@
+// Tests that depend on a count of the number of times their filter is evaluated
+// cant exist in the same file with other tests that add subscribers to the
+// registry. The registry was changed so that each time a new dispatcher is
+// added all filters are re-evaluated. The tests being run only in separate
+// threads with shared global state lets them interfere with each other
+#[cfg(not(feature = "std"))]
+extern crate std;
+
+use tracing::{span, Level};
+use tracing_mock::*;
+
+use std::sync::{
+ atomic::{AtomicUsize, Ordering},
+ Arc,
+};
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn filters_are_not_reevaluated_for_the_same_span() {
+ // Asserts that the `span!` macro caches the result of calling
+ // `Subscriber::enabled` for each span.
+ let alice_count = Arc::new(AtomicUsize::new(0));
+ let bob_count = Arc::new(AtomicUsize::new(0));
+ let alice_count2 = alice_count.clone();
+ let bob_count2 = bob_count.clone();
+
+ let (subscriber, handle) = subscriber::mock()
+ .with_filter(move |meta| match meta.name() {
+ "alice" => {
+ alice_count2.fetch_add(1, Ordering::Relaxed);
+ false
+ }
+ "bob" => {
+ bob_count2.fetch_add(1, Ordering::Relaxed);
+ true
+ }
+ _ => false,
+ })
+ .run_with_handle();
+
+ // Since this test is in its own file anyway, we can do this. Thus, this
+ // test will work even with no-std.
+ tracing::subscriber::set_global_default(subscriber).unwrap();
+
+ // Enter "alice" and then "bob". The dispatcher expects to see "bob" but
+ // not "alice."
+ let alice = span!(Level::TRACE, "alice");
+ let bob = alice.in_scope(|| {
+ let bob = span!(Level::TRACE, "bob");
+ bob.in_scope(|| ());
+ bob
+ });
+
+ // The filter should have seen each span a single time.
+ assert_eq!(alice_count.load(Ordering::Relaxed), 1);
+ assert_eq!(bob_count.load(Ordering::Relaxed), 1);
+
+ alice.in_scope(|| bob.in_scope(|| {}));
+
+ // The subscriber should see "bob" again, but the filter should not have
+ // been called.
+ assert_eq!(alice_count.load(Ordering::Relaxed), 1);
+ assert_eq!(bob_count.load(Ordering::Relaxed), 1);
+
+ bob.in_scope(|| {});
+ assert_eq!(alice_count.load(Ordering::Relaxed), 1);
+ assert_eq!(bob_count.load(Ordering::Relaxed), 1);
+
+ handle.assert_finished();
+}
diff --git a/vendor/tracing-0.1.37/tests/filters_are_reevaluated_for_different_call_sites.rs b/vendor/tracing-0.1.37/tests/filters_are_reevaluated_for_different_call_sites.rs
new file mode 100644
index 000000000..265d4a886
--- /dev/null
+++ b/vendor/tracing-0.1.37/tests/filters_are_reevaluated_for_different_call_sites.rs
@@ -0,0 +1,80 @@
+// Tests that depend on a count of the number of times their filter is evaluated
+// cant exist in the same file with other tests that add subscribers to the
+// registry. The registry was changed so that each time a new dispatcher is
+// added all filters are re-evaluated. The tests being run only in separate
+// threads with shared global state lets them interfere with each other
+#[cfg(not(feature = "std"))]
+extern crate std;
+
+use tracing::{span, Level};
+use tracing_mock::*;
+
+use std::sync::{
+ atomic::{AtomicUsize, Ordering},
+ Arc,
+};
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn filters_are_reevaluated_for_different_call_sites() {
+ // Asserts that the `span!` macro caches the result of calling
+ // `Subscriber::enabled` for each span.
+ let charlie_count = Arc::new(AtomicUsize::new(0));
+ let dave_count = Arc::new(AtomicUsize::new(0));
+ let charlie_count2 = charlie_count.clone();
+ let dave_count2 = dave_count.clone();
+
+ let subscriber = subscriber::mock()
+ .with_filter(move |meta| {
+ println!("Filter: {:?}", meta.name());
+ match meta.name() {
+ "charlie" => {
+ charlie_count2.fetch_add(1, Ordering::Relaxed);
+ false
+ }
+ "dave" => {
+ dave_count2.fetch_add(1, Ordering::Relaxed);
+ true
+ }
+ _ => false,
+ }
+ })
+ .run();
+
+ // Since this test is in its own file anyway, we can do this. Thus, this
+ // test will work even with no-std.
+ tracing::subscriber::set_global_default(subscriber).unwrap();
+
+ // Enter "charlie" and then "dave". The dispatcher expects to see "dave" but
+ // not "charlie."
+ let charlie = span!(Level::TRACE, "charlie");
+ let dave = charlie.in_scope(|| {
+ let dave = span!(Level::TRACE, "dave");
+ dave.in_scope(|| {});
+ dave
+ });
+
+ // The filter should have seen each span a single time.
+ assert_eq!(charlie_count.load(Ordering::Relaxed), 1);
+ assert_eq!(dave_count.load(Ordering::Relaxed), 1);
+
+ charlie.in_scope(|| dave.in_scope(|| {}));
+
+ // The subscriber should see "dave" again, but the filter should not have
+ // been called.
+ assert_eq!(charlie_count.load(Ordering::Relaxed), 1);
+ assert_eq!(dave_count.load(Ordering::Relaxed), 1);
+
+ // A different span with the same name has a different call site, so it
+ // should cause the filter to be reapplied.
+ let charlie2 = span!(Level::TRACE, "charlie");
+ charlie.in_scope(|| {});
+ assert_eq!(charlie_count.load(Ordering::Relaxed), 2);
+ assert_eq!(dave_count.load(Ordering::Relaxed), 1);
+
+ // But, the filter should not be re-evaluated for the new "charlie" span
+ // when it is re-entered.
+ charlie2.in_scope(|| span!(Level::TRACE, "dave").in_scope(|| {}));
+ assert_eq!(charlie_count.load(Ordering::Relaxed), 2);
+ assert_eq!(dave_count.load(Ordering::Relaxed), 2);
+}
diff --git a/vendor/tracing-0.1.37/tests/filters_dont_leak.rs b/vendor/tracing-0.1.37/tests/filters_dont_leak.rs
new file mode 100644
index 000000000..2ef1c9c70
--- /dev/null
+++ b/vendor/tracing-0.1.37/tests/filters_dont_leak.rs
@@ -0,0 +1,81 @@
+#![cfg(feature = "std")]
+
+use tracing_mock::*;
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn spans_dont_leak() {
+ fn do_span() {
+ let span = tracing::debug_span!("alice");
+ let _e = span.enter();
+ }
+
+ let (subscriber, handle) = subscriber::mock()
+ .named("spans/subscriber1")
+ .with_filter(|_| false)
+ .done()
+ .run_with_handle();
+
+ let _guard = tracing::subscriber::set_default(subscriber);
+
+ do_span();
+
+ let alice = span::mock().named("alice");
+ let (subscriber2, handle2) = subscriber::mock()
+ .named("spans/subscriber2")
+ .with_filter(|_| true)
+ .new_span(alice.clone())
+ .enter(alice.clone())
+ .exit(alice.clone())
+ .drop_span(alice)
+ .done()
+ .run_with_handle();
+
+ tracing::subscriber::with_default(subscriber2, || {
+ println!("--- subscriber 2 is default ---");
+ do_span()
+ });
+
+ println!("--- subscriber 1 is default ---");
+ do_span();
+
+ handle.assert_finished();
+ handle2.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn events_dont_leak() {
+ fn do_event() {
+ tracing::debug!("alice");
+ }
+
+ let (subscriber, handle) = subscriber::mock()
+ .named("events/subscriber1")
+ .with_filter(|_| false)
+ .done()
+ .run_with_handle();
+
+ let _guard = tracing::subscriber::set_default(subscriber);
+
+ do_event();
+
+ let (subscriber2, handle2) = subscriber::mock()
+ .named("events/subscriber2")
+ .with_filter(|_| true)
+ .event(event::mock())
+ .done()
+ .run_with_handle();
+
+ tracing::subscriber::with_default(subscriber2, || {
+ println!("--- subscriber 2 is default ---");
+ do_event()
+ });
+
+ println!("--- subscriber 1 is default ---");
+
+ do_event();
+
+ handle.assert_finished();
+ handle2.assert_finished();
+}
diff --git a/vendor/tracing-0.1.37/tests/future_send.rs b/vendor/tracing-0.1.37/tests/future_send.rs
new file mode 100644
index 000000000..5e5f9f18b
--- /dev/null
+++ b/vendor/tracing-0.1.37/tests/future_send.rs
@@ -0,0 +1,22 @@
+// These tests reproduce the following issues:
+// - https://github.com/tokio-rs/tracing/issues/1487
+// - https://github.com/tokio-rs/tracing/issues/1793
+
+use core::future::{self, Future};
+#[test]
+fn async_fn_is_send() {
+ async fn some_async_fn() {
+ tracing::info!("{}", future::ready("test").await);
+ }
+
+ assert_send(some_async_fn())
+}
+
+#[test]
+fn async_block_is_send() {
+ assert_send(async {
+ tracing::info!("{}", future::ready("test").await);
+ })
+}
+
+fn assert_send<F: Future + Send>(_f: F) {}
diff --git a/vendor/tracing-0.1.37/tests/macro_imports.rs b/vendor/tracing-0.1.37/tests/macro_imports.rs
new file mode 100644
index 000000000..2d0a9d652
--- /dev/null
+++ b/vendor/tracing-0.1.37/tests/macro_imports.rs
@@ -0,0 +1,23 @@
+use tracing::Level;
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn prefixed_span_macros() {
+ tracing::span!(Level::DEBUG, "foo");
+ tracing::trace_span!("foo");
+ tracing::debug_span!("foo");
+ tracing::info_span!("foo");
+ tracing::warn_span!("foo");
+ tracing::error_span!("foo");
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn prefixed_event_macros() {
+ tracing::event!(Level::DEBUG, "foo");
+ tracing::trace!("foo");
+ tracing::debug!("foo");
+ tracing::info!("foo");
+ tracing::warn!("foo");
+ tracing::error!("foo");
+}
diff --git a/vendor/tracing-0.1.37/tests/macros.rs b/vendor/tracing-0.1.37/tests/macros.rs
new file mode 100644
index 000000000..a9679a3e9
--- /dev/null
+++ b/vendor/tracing-0.1.37/tests/macros.rs
@@ -0,0 +1,963 @@
+#![deny(warnings)]
+use tracing::{
+ callsite, debug, debug_span, enabled, error, error_span, event, event_enabled, info, info_span,
+ span, span_enabled, trace, trace_span, warn, warn_span, Level,
+};
+
+// Tests that macros work across various invocation syntax.
+//
+// These are quite repetitive, and _could_ be generated by a macro. However,
+// they're compile-time tests, so I want to get line numbers etc out of
+// failures, and producing them with a macro would muddy the waters a bit.
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn span() {
+ span!(target: "foo_events", Level::DEBUG, "foo", bar.baz = ?2, quux = %3, quuux = 4);
+ span!(target: "foo_events", Level::DEBUG, "foo", bar.baz = 2, quux = 3);
+ span!(target: "foo_events", Level::DEBUG, "foo", bar.baz = 2, quux = 4,);
+ span!(target: "foo_events", Level::DEBUG, "foo");
+ span!(target: "foo_events", Level::DEBUG, "bar",);
+ span!(Level::DEBUG, "foo", bar.baz = 2, quux = 3);
+ span!(Level::DEBUG, "foo", bar.baz = 2, quux = 4,);
+ span!(Level::DEBUG, "foo", bar.baz = 2, quux = 3);
+ span!(Level::DEBUG, "foo", bar.baz = 2, quux = 4,);
+ span!(Level::DEBUG, "foo", bar.baz = ?2);
+ span!(Level::DEBUG, "foo", bar.baz = %2);
+ span!(Level::DEBUG, "foo");
+ span!(Level::DEBUG, "bar",);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn trace_span() {
+ trace_span!(target: "foo_events", "foo", bar.baz = ?2, quux = %3, quuux = 4);
+ trace_span!(target: "foo_events", "foo", bar.baz = 2, quux = 3);
+ trace_span!(target: "foo_events", "foo", bar.baz = 2, quux = 4,);
+ trace_span!(target: "foo_events", "foo");
+ trace_span!(target: "foo_events", "bar",);
+ trace_span!("foo", bar.baz = 2, quux = 3);
+ trace_span!("foo", bar.baz = 2, quux = 4,);
+ trace_span!("foo", bar.baz = ?2);
+ trace_span!("foo", bar.baz = %2);
+ trace_span!("bar");
+ trace_span!("bar",);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn debug_span() {
+ debug_span!(target: "foo_events", "foo", bar.baz = ?2, quux = %3, quuux = 4);
+ debug_span!(target: "foo_events", "foo", bar.baz = 2, quux = 3);
+ debug_span!(target: "foo_events", "foo", bar.baz = 2, quux = 4,);
+ debug_span!(target: "foo_events", "foo");
+ debug_span!(target: "foo_events", "bar",);
+ debug_span!("foo", bar.baz = 2, quux = 3);
+ debug_span!("foo", bar.baz = 2, quux = 4,);
+ debug_span!("foo", bar.baz = ?2);
+ debug_span!("foo", bar.baz = %2);
+ debug_span!("bar");
+ debug_span!("bar",);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn info_span() {
+ info_span!(target: "foo_events", "foo", bar.baz = ?2, quux = %3, quuux = 4);
+ info_span!(target: "foo_events", "foo", bar.baz = 2, quux = 3);
+ info_span!(target: "foo_events", "foo", bar.baz = 2, quux = 4,);
+ info_span!(target: "foo_events", "foo");
+ info_span!(target: "foo_events", "bar",);
+ info_span!("foo", bar.baz = 2, quux = 3);
+ info_span!("foo", bar.baz = 2, quux = 4,);
+ info_span!("foo", bar.baz = ?2);
+ info_span!("foo", bar.baz = %2);
+ info_span!("bar");
+ info_span!("bar",);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn warn_span() {
+ warn_span!(target: "foo_events", "foo", bar.baz = ?2, quux = %3, quuux = 4);
+ warn_span!(target: "foo_events", "foo", bar.baz = 2, quux = 3);
+ warn_span!(target: "foo_events", "foo", bar.baz = 2, quux = 4,);
+ warn_span!(target: "foo_events", "foo");
+ warn_span!(target: "foo_events", "bar",);
+ warn_span!("foo", bar.baz = 2, quux = 3);
+ warn_span!("foo", bar.baz = 2, quux = 4,);
+ warn_span!("foo", bar.baz = ?2);
+ warn_span!("foo", bar.baz = %2);
+ warn_span!("bar");
+ warn_span!("bar",);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn error_span() {
+ error_span!(target: "foo_events", "foo", bar.baz = ?2, quux = %3, quuux = 4);
+ error_span!(target: "foo_events", "foo", bar.baz = 2, quux = 3);
+ error_span!(target: "foo_events", "foo", bar.baz = 2, quux = 4,);
+ error_span!(target: "foo_events", "foo");
+ error_span!(target: "foo_events", "bar",);
+ error_span!("foo", bar.baz = 2, quux = 3);
+ error_span!("foo", bar.baz = 2, quux = 4,);
+ error_span!("foo", bar.baz = ?2);
+ error_span!("foo", bar.baz = %2);
+ error_span!("bar");
+ error_span!("bar",);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn span_root() {
+ span!(target: "foo_events", parent: None, Level::TRACE, "foo", bar.baz = 2, quux = 3);
+ span!(target: "foo_events", parent: None, Level::TRACE, "foo", bar.baz = 2, quux = 3);
+ span!(target: "foo_events", parent: None, Level::TRACE, "foo", bar.baz = 2, quux = 4,);
+ span!(target: "foo_events", parent: None, Level::TRACE, "foo");
+ span!(target: "foo_events", parent: None, Level::TRACE, "bar",);
+ span!(parent: None, Level::DEBUG, "foo", bar.baz = 2, quux = 3);
+ span!(parent: None, Level::DEBUG, "foo", bar.baz = 2, quux = 4,);
+ span!(parent: None, Level::DEBUG, "foo");
+ span!(parent: None, Level::DEBUG, "bar",);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn trace_span_root() {
+ trace_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 3);
+ trace_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 4,);
+ trace_span!(target: "foo_events", parent: None, "foo");
+ trace_span!(target: "foo_events", parent: None, "bar",);
+ trace_span!(parent: None, "foo", bar.baz = 2, quux = 3);
+ trace_span!(parent: None, "foo", bar.baz = 2, quux = 4,);
+ trace_span!(parent: None, "foo");
+ trace_span!(parent: None, "bar",);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn debug_span_root() {
+ debug_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 3);
+ debug_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 4,);
+ debug_span!(target: "foo_events", parent: None, "foo");
+ debug_span!(target: "foo_events", parent: None, "bar",);
+ debug_span!(parent: None, "foo", bar.baz = 2, quux = 3);
+ debug_span!(parent: None, "foo", bar.baz = 2, quux = 4,);
+ debug_span!(parent: None, "foo");
+ debug_span!(parent: None, "bar",);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn info_span_root() {
+ info_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 3);
+ info_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 4,);
+ info_span!(target: "foo_events", parent: None, "foo");
+ info_span!(target: "foo_events", parent: None, "bar",);
+ info_span!(parent: None, "foo", bar.baz = 2, quux = 3);
+ info_span!(parent: None, "foo", bar.baz = 2, quux = 4,);
+ info_span!(parent: None, "foo");
+ info_span!(parent: None, "bar",);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn warn_span_root() {
+ warn_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 3);
+ warn_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 4,);
+ warn_span!(target: "foo_events", parent: None, "foo");
+ warn_span!(target: "foo_events", parent: None, "bar",);
+ warn_span!(parent: None, "foo", bar.baz = 2, quux = 3);
+ warn_span!(parent: None, "foo", bar.baz = 2, quux = 4,);
+ warn_span!(parent: None, "foo");
+ warn_span!(parent: None, "bar",);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn error_span_root() {
+ error_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 3);
+ error_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 4,);
+ error_span!(target: "foo_events", parent: None, "foo");
+ error_span!(target: "foo_events", parent: None, "bar",);
+ error_span!(parent: None, "foo", bar.baz = 2, quux = 3);
+ error_span!(parent: None, "foo", bar.baz = 2, quux = 4,);
+ error_span!(parent: None, "foo");
+ error_span!(parent: None, "bar",);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn span_with_parent() {
+ let p = span!(Level::TRACE, "im_a_parent!");
+ span!(target: "foo_events", parent: &p, Level::TRACE, "foo", bar.baz = 2, quux = 3);
+ span!(target: "foo_events", parent: &p, Level::TRACE, "foo", bar.baz = 2, quux = 4,);
+ span!(target: "foo_events", parent: &p, Level::TRACE, "foo");
+ span!(target: "foo_events", parent: &p, Level::TRACE, "bar",);
+ span!(parent: &p, Level::DEBUG, "foo", bar.baz = 2, quux = 3);
+ span!(parent: &p, Level::DEBUG, "foo", bar.baz = 2, quux = 4,);
+ span!(parent: &p, Level::DEBUG, "foo");
+ span!(parent: &p, Level::DEBUG, "bar",);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn trace_span_with_parent() {
+ let p = span!(Level::TRACE, "im_a_parent!");
+ trace_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 3);
+ trace_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 4,);
+ trace_span!(target: "foo_events", parent: &p, "foo");
+ trace_span!(target: "foo_events", parent: &p, "bar",);
+
+ trace_span!(parent: &p, "foo", bar.baz = 2, quux = 3);
+ trace_span!(parent: &p, "foo", bar.baz = 2, quux = 4,);
+
+ trace_span!(parent: &p, "foo");
+ trace_span!(parent: &p, "bar",);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn debug_span_with_parent() {
+ let p = span!(Level::TRACE, "im_a_parent!");
+ debug_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 3);
+ debug_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 4,);
+ debug_span!(target: "foo_events", parent: &p, "foo");
+ debug_span!(target: "foo_events", parent: &p, "bar",);
+
+ debug_span!(parent: &p, "foo", bar.baz = 2, quux = 3);
+ debug_span!(parent: &p, "foo", bar.baz = 2, quux = 4,);
+
+ debug_span!(parent: &p, "foo");
+ debug_span!(parent: &p, "bar",);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn info_span_with_parent() {
+ let p = span!(Level::TRACE, "im_a_parent!");
+ info_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 3);
+ info_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 4,);
+ info_span!(target: "foo_events", parent: &p, "foo");
+ info_span!(target: "foo_events", parent: &p, "bar",);
+
+ info_span!(parent: &p, "foo", bar.baz = 2, quux = 3);
+ info_span!(parent: &p, "foo", bar.baz = 2, quux = 4,);
+
+ info_span!(parent: &p, "foo");
+ info_span!(parent: &p, "bar",);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn warn_span_with_parent() {
+ let p = span!(Level::TRACE, "im_a_parent!");
+ warn_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 3);
+ warn_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 4,);
+ warn_span!(target: "foo_events", parent: &p, "foo");
+ warn_span!(target: "foo_events", parent: &p, "bar",);
+
+ warn_span!(parent: &p, "foo", bar.baz = 2, quux = 3);
+ warn_span!(parent: &p, "foo", bar.baz = 2, quux = 4,);
+
+ warn_span!(parent: &p, "foo");
+ warn_span!(parent: &p, "bar",);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn error_span_with_parent() {
+ let p = span!(Level::TRACE, "im_a_parent!");
+ error_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 3);
+ error_span!(target: "foo_events", parent: &p, "foo", bar.baz = 2, quux = 4,);
+ error_span!(target: "foo_events", parent: &p, "foo");
+ error_span!(target: "foo_events", parent: &p, "bar",);
+
+ error_span!(parent: &p, "foo", bar.baz = 2, quux = 3);
+ error_span!(parent: &p, "foo", bar.baz = 2, quux = 4,);
+
+ error_span!(parent: &p, "foo");
+ error_span!(parent: &p, "bar",);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn span_with_non_rust_symbol() {
+ span!(Level::TRACE, "non-rust", "guid:x-request-id" = ?"abcdef", "more {}", 42);
+ span!(Level::TRACE, "non-rust", "guid:x-request-id" = %"abcdef", "more {}", 51);
+ span!(
+ Level::TRACE,
+ "non-rust",
+ "guid:x-request-id" = "abcdef",
+ "more {}",
+ 60
+ );
+ span!(Level::TRACE, "non-rust", "guid:x-request-id" = ?"abcdef");
+ span!(Level::TRACE, "non-rust", "guid:x-request-id" = %"abcdef");
+ span!(Level::TRACE, "non-rust", "guid:x-request-id" = "abcdef");
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn event() {
+ event!(Level::DEBUG, foo = ?3, bar.baz = %2, quux = false);
+ event!(Level::DEBUG, foo = 3, bar.baz = 2, quux = false);
+ event!(Level::DEBUG, foo = 3, bar.baz = 3,);
+ event!(Level::DEBUG, "foo");
+ event!(Level::DEBUG, "foo: {}", 3);
+ event!(Level::INFO, foo = ?3, bar.baz = %2, quux = false, "hello world {:?}", 42);
+ event!(
+ Level::INFO,
+ foo = 3,
+ bar.baz = 2,
+ quux = false,
+ "hello world {:?}",
+ 42
+ );
+ event!(Level::INFO, foo = 3, bar.baz = 3, "hello world {:?}", 42,);
+ event!(Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
+ event!(Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ event!(Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ event!(Level::DEBUG, { foo = ?2, bar.baz = %78 }, "quux");
+ event!(target: "foo_events", Level::DEBUG, foo = 3, bar.baz = 2, quux = false);
+ event!(target: "foo_events", Level::DEBUG, foo = 3, bar.baz = 3,);
+ event!(target: "foo_events", Level::DEBUG, "foo");
+ event!(target: "foo_events", Level::DEBUG, "foo: {}", 3);
+ event!(target: "foo_events", Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
+ event!(target: "foo_events", Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ event!(target: "foo_events", Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ event!(target: "foo_events", Level::DEBUG, { foo = 2, bar.baz = 78, }, "quux");
+ let foo = 1;
+ event!(Level::DEBUG, ?foo);
+ event!(Level::DEBUG, %foo);
+ event!(Level::DEBUG, foo);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn enabled() {
+ enabled!(Level::DEBUG, foo, bar.baz, quux,);
+ enabled!(Level::DEBUG, message);
+ enabled!(Level::INFO, foo, bar.baz, quux, message,);
+ enabled!(Level::INFO, foo, bar., message,);
+ enabled!(Level::DEBUG, foo);
+
+ enabled!(Level::DEBUG);
+ enabled!(target: "rando", Level::DEBUG);
+ enabled!(target: "rando", Level::DEBUG, field);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn span_enabled() {
+ span_enabled!(Level::DEBUG, foo, bar.baz, quux,);
+ span_enabled!(Level::DEBUG, message);
+ span_enabled!(Level::INFO, foo, bar.baz, quux, message,);
+ span_enabled!(Level::INFO, foo, bar., message,);
+ span_enabled!(Level::DEBUG, foo);
+
+ span_enabled!(Level::DEBUG);
+ span_enabled!(target: "rando", Level::DEBUG);
+ span_enabled!(target: "rando", Level::DEBUG, field);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn event_enabled() {
+ event_enabled!(Level::DEBUG, foo, bar.baz, quux,);
+ event_enabled!(Level::DEBUG, message);
+ event_enabled!(Level::INFO, foo, bar.baz, quux, message,);
+ event_enabled!(Level::INFO, foo, bar., message,);
+ event_enabled!(Level::DEBUG, foo);
+
+ event_enabled!(Level::DEBUG);
+ event_enabled!(target: "rando", Level::DEBUG);
+ event_enabled!(target: "rando", Level::DEBUG, field);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn locals_with_message() {
+ let data = (42, "forty-two");
+ let private_data = "private";
+ let error = "a bad error";
+ event!(Level::ERROR, %error, "Received error");
+ event!(
+ target: "app_events",
+ Level::WARN,
+ private_data,
+ ?data,
+ "App warning: {}",
+ error
+ );
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn locals_no_message() {
+ let data = (42, "forty-two");
+ let private_data = "private";
+ let error = "a bad error";
+ event!(
+ target: "app_events",
+ Level::WARN,
+ private_data,
+ ?data,
+ );
+ event!(
+ target: "app_events",
+ Level::WARN,
+ private_data,
+ ?data,
+ error,
+ );
+ event!(
+ target: "app_events",
+ Level::WARN,
+ private_data,
+ ?data,
+ error
+ );
+ event!(Level::WARN, private_data, ?data, error,);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn trace() {
+ trace!(foo = ?3, bar.baz = %2, quux = false);
+ trace!(foo = 3, bar.baz = 2, quux = false);
+ trace!(foo = 3, bar.baz = 3,);
+ trace!("foo");
+ trace!("foo: {}", 3);
+ trace!(foo = ?3, bar.baz = %2, quux = false, "hello world {:?}", 42);
+ trace!(foo = 3, bar.baz = 2, quux = false, "hello world {:?}", 42);
+ trace!(foo = 3, bar.baz = 3, "hello world {:?}", 42,);
+ trace!({ foo = 3, bar.baz = 80 }, "quux");
+ trace!({ foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ trace!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ trace!({ foo = 2, bar.baz = 78 }, "quux");
+ trace!({ foo = ?2, bar.baz = %78 }, "quux");
+ trace!(target: "foo_events", foo = 3, bar.baz = 2, quux = false);
+ trace!(target: "foo_events", foo = 3, bar.baz = 3,);
+ trace!(target: "foo_events", "foo");
+ trace!(target: "foo_events", "foo: {}", 3);
+ trace!(target: "foo_events", { foo = 3, bar.baz = 80 }, "quux");
+ trace!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ trace!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ trace!(target: "foo_events", { foo = 2, bar.baz = 78, }, "quux");
+ let foo = 1;
+ trace!(?foo);
+ trace!(%foo);
+ trace!(foo);
+ trace!(target: "foo_events", ?foo);
+ trace!(target: "foo_events", %foo);
+ trace!(target: "foo_events", foo);
+ trace!(target: "foo_events", ?foo, true, "message");
+ trace!(target: "foo_events", %foo, true, "message");
+ trace!(target: "foo_events", foo, true, "message");
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn debug() {
+ debug!(foo = ?3, bar.baz = %2, quux = false);
+ debug!(foo = 3, bar.baz = 2, quux = false);
+ debug!(foo = 3, bar.baz = 3,);
+ debug!("foo");
+ debug!("foo: {}", 3);
+ debug!(foo = ?3, bar.baz = %2, quux = false, "hello world {:?}", 42);
+ debug!(foo = 3, bar.baz = 2, quux = false, "hello world {:?}", 42);
+ debug!(foo = 3, bar.baz = 3, "hello world {:?}", 42,);
+ debug!({ foo = 3, bar.baz = 80 }, "quux");
+ debug!({ foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ debug!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ debug!({ foo = 2, bar.baz = 78 }, "quux");
+ debug!({ foo = ?2, bar.baz = %78 }, "quux");
+ debug!(target: "foo_events", foo = 3, bar.baz = 2, quux = false);
+ debug!(target: "foo_events", foo = 3, bar.baz = 3,);
+ debug!(target: "foo_events", "foo");
+ debug!(target: "foo_events", "foo: {}", 3);
+ debug!(target: "foo_events", { foo = 3, bar.baz = 80 }, "quux");
+ debug!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ debug!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ debug!(target: "foo_events", { foo = 2, bar.baz = 78, }, "quux");
+ let foo = 1;
+ debug!(?foo);
+ debug!(%foo);
+ debug!(foo);
+ debug!(target: "foo_events", ?foo);
+ debug!(target: "foo_events", %foo);
+ debug!(target: "foo_events", foo);
+ debug!(target: "foo_events", ?foo, true, "message");
+ debug!(target: "foo_events", %foo, true, "message");
+ debug!(target: "foo_events", foo, true, "message");
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn info() {
+ info!(foo = ?3, bar.baz = %2, quux = false);
+ info!(foo = 3, bar.baz = 2, quux = false);
+ info!(foo = 3, bar.baz = 3,);
+ info!("foo");
+ info!("foo: {}", 3);
+ info!(foo = ?3, bar.baz = %2, quux = false, "hello world {:?}", 42);
+ info!(foo = 3, bar.baz = 2, quux = false, "hello world {:?}", 42);
+ info!(foo = 3, bar.baz = 3, "hello world {:?}", 42,);
+ info!({ foo = 3, bar.baz = 80 }, "quux");
+ info!({ foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ info!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ info!({ foo = 2, bar.baz = 78 }, "quux");
+ info!({ foo = ?2, bar.baz = %78 }, "quux");
+ info!(target: "foo_events", foo = 3, bar.baz = 2, quux = false);
+ info!(target: "foo_events", foo = 3, bar.baz = 3,);
+ info!(target: "foo_events", "foo");
+ info!(target: "foo_events", "foo: {}", 3);
+ info!(target: "foo_events", { foo = 3, bar.baz = 80 }, "quux");
+ info!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ info!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ info!(target: "foo_events", { foo = 2, bar.baz = 78, }, "quux");
+ let foo = 1;
+ info!(?foo);
+ info!(%foo);
+ info!(foo);
+ info!(target: "foo_events", ?foo);
+ info!(target: "foo_events", %foo);
+ info!(target: "foo_events", foo);
+ info!(target: "foo_events", ?foo, true, "message");
+ info!(target: "foo_events", %foo, true, "message");
+ info!(target: "foo_events", foo, true, "message");
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn warn() {
+ warn!(foo = ?3, bar.baz = %2, quux = false);
+ warn!(foo = 3, bar.baz = 2, quux = false);
+ warn!(foo = 3, bar.baz = 3,);
+ warn!("foo");
+ warn!("foo: {}", 3);
+ warn!(foo = ?3, bar.baz = %2, quux = false, "hello world {:?}", 42);
+ warn!(foo = 3, bar.baz = 2, quux = false, "hello world {:?}", 42);
+ warn!(foo = 3, bar.baz = 3, "hello world {:?}", 42,);
+ warn!({ foo = 3, bar.baz = 80 }, "quux");
+ warn!({ foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ warn!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ warn!({ foo = 2, bar.baz = 78 }, "quux");
+ warn!({ foo = ?2, bar.baz = %78 }, "quux");
+ warn!(target: "foo_events", foo = 3, bar.baz = 2, quux = false);
+ warn!(target: "foo_events", foo = 3, bar.baz = 3,);
+ warn!(target: "foo_events", "foo");
+ warn!(target: "foo_events", "foo: {}", 3);
+ warn!(target: "foo_events", { foo = 3, bar.baz = 80 }, "quux");
+ warn!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ warn!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ warn!(target: "foo_events", { foo = 2, bar.baz = 78, }, "quux");
+ let foo = 1;
+ warn!(?foo);
+ warn!(%foo);
+ warn!(foo);
+ warn!(target: "foo_events", ?foo);
+ warn!(target: "foo_events", %foo);
+ warn!(target: "foo_events", foo);
+ warn!(target: "foo_events", ?foo, true, "message");
+ warn!(target: "foo_events", %foo, true, "message");
+ warn!(target: "foo_events", foo, true, "message");
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn error() {
+ error!(foo = ?3, bar.baz = %2, quux = false);
+ error!(foo = 3, bar.baz = 2, quux = false);
+ error!(foo = 3, bar.baz = 3,);
+ error!("foo");
+ error!("foo: {}", 3);
+ error!(foo = ?3, bar.baz = %2, quux = false, "hello world {:?}", 42);
+ error!(foo = 3, bar.baz = 2, quux = false, "hello world {:?}", 42);
+ error!(foo = 3, bar.baz = 3, "hello world {:?}", 42,);
+ error!({ foo = 3, bar.baz = 80 }, "quux");
+ error!({ foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ error!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ error!({ foo = 2, bar.baz = 78, }, "quux");
+ error!({ foo = ?2, bar.baz = %78 }, "quux");
+ error!(target: "foo_events", foo = 3, bar.baz = 2, quux = false);
+ error!(target: "foo_events", foo = 3, bar.baz = 3,);
+ error!(target: "foo_events", "foo");
+ error!(target: "foo_events", "foo: {}", 3);
+ error!(target: "foo_events", { foo = 3, bar.baz = 80 }, "quux");
+ error!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ error!(target: "foo_events", { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ error!(target: "foo_events", { foo = 2, bar.baz = 78, }, "quux");
+ let foo = 1;
+ error!(?foo);
+ error!(%foo);
+ error!(foo);
+ error!(target: "foo_events", ?foo);
+ error!(target: "foo_events", %foo);
+ error!(target: "foo_events", foo);
+ error!(target: "foo_events", ?foo, true, "message");
+ error!(target: "foo_events", %foo, true, "message");
+ error!(target: "foo_events", foo, true, "message");
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn event_root() {
+ event!(parent: None, Level::DEBUG, foo = ?3, bar.baz = %2, quux = false);
+ event!(
+ parent: None,
+ Level::DEBUG,
+ foo = 3,
+ bar.baz = 2,
+ quux = false
+ );
+ event!(parent: None, Level::DEBUG, foo = 3, bar.baz = 3,);
+ event!(parent: None, Level::DEBUG, "foo");
+ event!(parent: None, Level::DEBUG, "foo: {}", 3);
+ event!(parent: None, Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
+ event!(parent: None, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ event!(parent: None, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ event!(parent: None, Level::DEBUG, { foo = ?2, bar.baz = %78 }, "quux");
+ event!(target: "foo_events", parent: None, Level::DEBUG, foo = 3, bar.baz = 2, quux = false);
+ event!(target: "foo_events", parent: None, Level::DEBUG, foo = 3, bar.baz = 3,);
+ event!(target: "foo_events", parent: None, Level::DEBUG, "foo");
+ event!(target: "foo_events", parent: None, Level::DEBUG, "foo: {}", 3);
+ event!(target: "foo_events", parent: None, Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
+ event!(target: "foo_events", parent: None, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ event!(target: "foo_events", parent: None, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ event!(target: "foo_events", parent: None, Level::DEBUG, { foo = 2, bar.baz = 78, }, "quux");
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn trace_root() {
+ trace!(parent: None, foo = ?3, bar.baz = %2, quux = false);
+ trace!(parent: None, foo = 3, bar.baz = 2, quux = false);
+ trace!(parent: None, foo = 3, bar.baz = 3,);
+ trace!(parent: None, "foo");
+ trace!(parent: None, "foo: {}", 3);
+ trace!(parent: None, { foo = 3, bar.baz = 80 }, "quux");
+ trace!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ trace!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ trace!(parent: None, { foo = 2, bar.baz = 78 }, "quux");
+ trace!(parent: None, { foo = ?2, bar.baz = %78 }, "quux");
+ trace!(target: "foo_events", parent: None, foo = 3, bar.baz = 2, quux = false);
+ trace!(target: "foo_events", parent: None, foo = 3, bar.baz = 3,);
+ trace!(target: "foo_events", parent: None, "foo");
+ trace!(target: "foo_events", parent: None, "foo: {}", 3);
+ trace!(target: "foo_events", parent: None, { foo = 3, bar.baz = 80 }, "quux");
+ trace!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ trace!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ trace!(target: "foo_events", parent: None, { foo = 2, bar.baz = 78, }, "quux");
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn debug_root() {
+ debug!(parent: None, foo = ?3, bar.baz = %2, quux = false);
+ debug!(parent: None, foo = 3, bar.baz = 2, quux = false);
+ debug!(parent: None, foo = 3, bar.baz = 3,);
+ debug!(parent: None, "foo");
+ debug!(parent: None, "foo: {}", 3);
+ debug!(parent: None, { foo = 3, bar.baz = 80 }, "quux");
+ debug!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ debug!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ debug!(parent: None, { foo = 2, bar.baz = 78 }, "quux");
+ debug!(parent: None, { foo = ?2, bar.baz = %78 }, "quux");
+ debug!(target: "foo_events", parent: None, foo = 3, bar.baz = 2, quux = false);
+ debug!(target: "foo_events", parent: None, foo = 3, bar.baz = 3,);
+ debug!(target: "foo_events", parent: None, "foo");
+ debug!(target: "foo_events", parent: None, "foo: {}", 3);
+ debug!(target: "foo_events", parent: None, { foo = 3, bar.baz = 80 }, "quux");
+ debug!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ debug!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ debug!(target: "foo_events", parent: None, { foo = 2, bar.baz = 78, }, "quux");
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn info_root() {
+ info!(parent: None, foo = ?3, bar.baz = %2, quux = false);
+ info!(parent: None, foo = 3, bar.baz = 2, quux = false);
+ info!(parent: None, foo = 3, bar.baz = 3,);
+ info!(parent: None, "foo");
+ info!(parent: None, "foo: {}", 3);
+ info!(parent: None, { foo = 3, bar.baz = 80 }, "quux");
+ info!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ info!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ info!(parent: None, { foo = 2, bar.baz = 78 }, "quux");
+ info!(parent: None, { foo = ?2, bar.baz = %78 }, "quux");
+ info!(target: "foo_events", parent: None, foo = 3, bar.baz = 2, quux = false);
+ info!(target: "foo_events", parent: None, foo = 3, bar.baz = 3,);
+ info!(target: "foo_events", parent: None, "foo");
+ info!(target: "foo_events", parent: None, "foo: {}", 3);
+ info!(target: "foo_events", parent: None, { foo = 3, bar.baz = 80 }, "quux");
+ info!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ info!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ info!(target: "foo_events", parent: None, { foo = 2, bar.baz = 78, }, "quux");
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn warn_root() {
+ warn!(parent: None, foo = ?3, bar.baz = %2, quux = false);
+ warn!(parent: None, foo = 3, bar.baz = 2, quux = false);
+ warn!(parent: None, foo = 3, bar.baz = 3,);
+ warn!(parent: None, "foo");
+ warn!(parent: None, "foo: {}", 3);
+ warn!(parent: None, { foo = 3, bar.baz = 80 }, "quux");
+ warn!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ warn!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ warn!(parent: None, { foo = 2, bar.baz = 78 }, "quux");
+ warn!(parent: None, { foo = ?2, bar.baz = %78 }, "quux");
+ warn!(target: "foo_events", parent: None, foo = 3, bar.baz = 2, quux = false);
+ warn!(target: "foo_events", parent: None, foo = 3, bar.baz = 3,);
+ warn!(target: "foo_events", parent: None, "foo");
+ warn!(target: "foo_events", parent: None, "foo: {}", 3);
+ warn!(target: "foo_events", parent: None, { foo = 3, bar.baz = 80 }, "quux");
+ warn!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ warn!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ warn!(target: "foo_events", parent: None, { foo = 2, bar.baz = 78, }, "quux");
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn error_root() {
+ error!(parent: None, foo = ?3, bar.baz = %2, quux = false);
+ error!(parent: None, foo = 3, bar.baz = 2, quux = false);
+ error!(parent: None, foo = 3, bar.baz = 3,);
+ error!(parent: None, "foo");
+ error!(parent: None, "foo: {}", 3);
+ error!(parent: None, { foo = 3, bar.baz = 80 }, "quux");
+ error!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ error!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ error!(parent: None, { foo = 2, bar.baz = 78 }, "quux");
+ error!(parent: None, { foo = ?2, bar.baz = %78 }, "quux");
+ error!(target: "foo_events", parent: None, foo = 3, bar.baz = 2, quux = false);
+ error!(target: "foo_events", parent: None, foo = 3, bar.baz = 3,);
+ error!(target: "foo_events", parent: None, "foo");
+ error!(target: "foo_events", parent: None, "foo: {}", 3);
+ error!(target: "foo_events", parent: None, { foo = 3, bar.baz = 80 }, "quux");
+ error!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ error!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ error!(target: "foo_events", parent: None, { foo = 2, bar.baz = 78, }, "quux");
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn event_with_parent() {
+ let p = span!(Level::TRACE, "im_a_parent!");
+ event!(parent: &p, Level::DEBUG, foo = ?3, bar.baz = %2, quux = false);
+ event!(parent: &p, Level::DEBUG, foo = 3, bar.baz = 2, quux = false);
+ event!(parent: &p, Level::DEBUG, foo = 3, bar.baz = 3,);
+ event!(parent: &p, Level::DEBUG, "foo");
+ event!(parent: &p, Level::DEBUG, "foo: {}", 3);
+ event!(parent: &p, Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
+ event!(parent: &p, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ event!(parent: &p, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ event!(parent: &p, Level::DEBUG, { foo = ?2, bar.baz = %78 }, "quux");
+ event!(target: "foo_events", parent: &p, Level::DEBUG, foo = 3, bar.baz = 2, quux = false);
+ event!(target: "foo_events", parent: &p, Level::DEBUG, foo = 3, bar.baz = 3,);
+ event!(target: "foo_events", parent: &p, Level::DEBUG, "foo");
+ event!(target: "foo_events", parent: &p, Level::DEBUG, "foo: {}", 3);
+ event!(target: "foo_events", parent: &p, Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
+ event!(target: "foo_events", parent: &p, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ event!(target: "foo_events", parent: &p, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ event!(target: "foo_events", parent: &p, Level::DEBUG, { foo = 2, bar.baz = 78, }, "quux");
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn trace_with_parent() {
+ let p = span!(Level::TRACE, "im_a_parent!");
+ trace!(parent: &p, foo = ?3, bar.baz = %2, quux = false);
+ trace!(parent: &p, foo = 3, bar.baz = 2, quux = false);
+ trace!(parent: &p, foo = 3, bar.baz = 3,);
+ trace!(parent: &p, "foo");
+ trace!(parent: &p, "foo: {}", 3);
+ trace!(parent: &p, { foo = 3, bar.baz = 80 }, "quux");
+ trace!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ trace!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ trace!(parent: &p, { foo = 2, bar.baz = 78 }, "quux");
+ trace!(parent: &p, { foo = ?2, bar.baz = %78 }, "quux");
+ trace!(target: "foo_events", parent: &p, foo = 3, bar.baz = 2, quux = false);
+ trace!(target: "foo_events", parent: &p, foo = 3, bar.baz = 3,);
+ trace!(target: "foo_events", parent: &p, "foo");
+ trace!(target: "foo_events", parent: &p, "foo: {}", 3);
+ trace!(target: "foo_events", parent: &p, { foo = 3, bar.baz = 80 }, "quux");
+ trace!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ trace!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ trace!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn debug_with_parent() {
+ let p = span!(Level::TRACE, "im_a_parent!");
+ debug!(parent: &p, foo = ?3, bar.baz = %2, quux = false);
+ debug!(parent: &p, foo = 3, bar.baz = 2, quux = false);
+ debug!(parent: &p, foo = 3, bar.baz = 3,);
+ debug!(parent: &p, "foo");
+ debug!(parent: &p, "foo: {}", 3);
+ debug!(parent: &p, { foo = 3, bar.baz = 80 }, "quux");
+ debug!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ debug!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ debug!(parent: &p, { foo = 2, bar.baz = 78 }, "quux");
+ debug!(parent: &p, { foo = ?2, bar.baz = %78 }, "quux");
+ debug!(target: "foo_events", parent: &p, foo = 3, bar.baz = 2, quux = false);
+ debug!(target: "foo_events", parent: &p, foo = 3, bar.baz = 3,);
+ debug!(target: "foo_events", parent: &p, "foo");
+ debug!(target: "foo_events", parent: &p, "foo: {}", 3);
+ debug!(target: "foo_events", parent: &p, { foo = 3, bar.baz = 80 }, "quux");
+ debug!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ debug!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ debug!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn info_with_parent() {
+ let p = span!(Level::TRACE, "im_a_parent!");
+ info!(parent: &p, foo = ?3, bar.baz = %2, quux = false);
+ info!(parent: &p, foo = 3, bar.baz = 2, quux = false);
+ info!(parent: &p, foo = 3, bar.baz = 3,);
+ info!(parent: &p, "foo");
+ info!(parent: &p, "foo: {}", 3);
+ info!(parent: &p, { foo = 3, bar.baz = 80 }, "quux");
+ info!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ info!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ info!(parent: &p, { foo = 2, bar.baz = 78 }, "quux");
+ info!(parent: &p, { foo = ?2, bar.baz = %78 }, "quux");
+ info!(target: "foo_events", parent: &p, foo = 3, bar.baz = 2, quux = false);
+ info!(target: "foo_events", parent: &p, foo = 3, bar.baz = 3,);
+ info!(target: "foo_events", parent: &p, "foo");
+ info!(target: "foo_events", parent: &p, "foo: {}", 3);
+ info!(target: "foo_events", parent: &p, { foo = 3, bar.baz = 80 }, "quux");
+ info!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ info!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ info!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn warn_with_parent() {
+ let p = span!(Level::TRACE, "im_a_parent!");
+ warn!(parent: &p, foo = ?3, bar.baz = %2, quux = false);
+ warn!(parent: &p, foo = 3, bar.baz = 2, quux = false);
+ warn!(parent: &p, foo = 3, bar.baz = 3,);
+ warn!(parent: &p, "foo");
+ warn!(parent: &p, "foo: {}", 3);
+ warn!(parent: &p, { foo = 3, bar.baz = 80 }, "quux");
+ warn!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ warn!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ warn!(parent: &p, { foo = 2, bar.baz = 78 }, "quux");
+ warn!(parent: &p, { foo = ?2, bar.baz = %78 }, "quux");
+ warn!(target: "foo_events", parent: &p, foo = 3, bar.baz = 2, quux = false);
+ warn!(target: "foo_events", parent: &p, foo = 3, bar.baz = 3,);
+ warn!(target: "foo_events", parent: &p, "foo");
+ warn!(target: "foo_events", parent: &p, "foo: {}", 3);
+ warn!(target: "foo_events", parent: &p, { foo = 3, bar.baz = 80 }, "quux");
+ warn!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ warn!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ warn!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn error_with_parent() {
+ let p = span!(Level::TRACE, "im_a_parent!");
+ error!(parent: &p, foo = ?3, bar.baz = %2, quux = false);
+ error!(parent: &p, foo = 3, bar.baz = 2, quux = false);
+ error!(parent: &p, foo = 3, bar.baz = 3,);
+ error!(parent: &p, "foo");
+ error!(parent: &p, "foo: {}", 3);
+ error!(parent: &p, { foo = 3, bar.baz = 80 }, "quux");
+ error!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ error!(parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ error!(parent: &p, { foo = 2, bar.baz = 78 }, "quux");
+ error!(parent: &p, { foo = ?2, bar.baz = %78 }, "quux");
+ error!(target: "foo_events", parent: &p, foo = 3, bar.baz = 2, quux = false);
+ error!(target: "foo_events", parent: &p, foo = 3, bar.baz = 3,);
+ error!(target: "foo_events", parent: &p, "foo");
+ error!(target: "foo_events", parent: &p, "foo: {}", 3);
+ error!(target: "foo_events", parent: &p, { foo = 3, bar.baz = 80 }, "quux");
+ error!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ error!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ error!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn field_shorthand_only() {
+ #[derive(Debug)]
+ struct Position {
+ x: f32,
+ y: f32,
+ }
+ let pos = Position {
+ x: 3.234,
+ y: -1.223,
+ };
+
+ trace!(?pos.x, ?pos.y);
+ debug!(?pos.x, ?pos.y);
+ info!(?pos.x, ?pos.y);
+ warn!(?pos.x, ?pos.y);
+ error!(?pos.x, ?pos.y);
+ event!(Level::TRACE, ?pos.x, ?pos.y);
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn borrow_val_events() {
+ // Reproduces https://github.com/tokio-rs/tracing/issues/954
+ let mut foo = (String::new(), String::new());
+ let zero = &mut foo.0;
+ trace!(one = ?foo.1);
+ debug!(one = ?foo.1);
+ info!(one = ?foo.1);
+ warn!(one = ?foo.1);
+ error!(one = ?foo.1);
+ zero.push_str("hello world");
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn borrow_val_spans() {
+ // Reproduces https://github.com/tokio-rs/tracing/issues/954
+ let mut foo = (String::new(), String::new());
+ let zero = &mut foo.0;
+ let _span = trace_span!("span", one = ?foo.1);
+ let _span = debug_span!("span", one = ?foo.1);
+ let _span = info_span!("span", one = ?foo.1);
+ let _span = warn_span!("span", one = ?foo.1);
+ let _span = error_span!("span", one = ?foo.1);
+ zero.push_str("hello world");
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn callsite_macro_api() {
+ // This test should catch any inadvertent breaking changes
+ // caused by changes to the macro.
+ let _callsite = callsite! {
+ name: "test callsite",
+ kind: tracing::metadata::Kind::EVENT,
+ target: "test target",
+ level: tracing::Level::TRACE,
+ fields: foo, bar,
+ };
+ let _callsite = callsite! {
+ name: "test callsite",
+ kind: tracing::metadata::Kind::SPAN,
+ level: tracing::Level::TRACE,
+ fields: foo,
+ };
+ let _callsite = callsite! {
+ name: "test callsite",
+ kind: tracing::metadata::Kind::SPAN,
+ fields: foo,
+ };
+}
diff --git a/vendor/tracing-0.1.37/tests/macros_incompatible_concat.rs b/vendor/tracing-0.1.37/tests/macros_incompatible_concat.rs
new file mode 100644
index 000000000..bda6b964f
--- /dev/null
+++ b/vendor/tracing-0.1.37/tests/macros_incompatible_concat.rs
@@ -0,0 +1,24 @@
+use tracing::{enabled, event, span, Level};
+
+#[macro_export]
+macro_rules! concat {
+ () => {};
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn span() {
+ span!(Level::DEBUG, "foo");
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn event() {
+ event!(Level::DEBUG, "foo");
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn enabled() {
+ enabled!(Level::DEBUG);
+}
diff --git a/vendor/tracing/tests/macros_redefined_core.rs b/vendor/tracing-0.1.37/tests/macros_redefined_core.rs
index d830dcdb0..d830dcdb0 100644
--- a/vendor/tracing/tests/macros_redefined_core.rs
+++ b/vendor/tracing-0.1.37/tests/macros_redefined_core.rs
diff --git a/vendor/tracing-0.1.37/tests/max_level_hint.rs b/vendor/tracing-0.1.37/tests/max_level_hint.rs
new file mode 100644
index 000000000..63d3af635
--- /dev/null
+++ b/vendor/tracing-0.1.37/tests/max_level_hint.rs
@@ -0,0 +1,37 @@
+use tracing::Level;
+use tracing_mock::*;
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn max_level_hints() {
+ // This test asserts that when a subscriber provides us with the global
+ // maximum level that it will enable (by implementing the
+ // `Subscriber::max_level_hint` method), we will never call
+ // `Subscriber::enabled` for events above that maximum level.
+ //
+ // In this case, we test that by making the `enabled` method assert that no
+ // `Metadata` for spans or events at the `TRACE` or `DEBUG` levels.
+ let (subscriber, handle) = subscriber::mock()
+ .with_max_level_hint(Level::INFO)
+ .with_filter(|meta| {
+ assert!(
+ dbg!(meta).level() <= &Level::INFO,
+ "a TRACE or DEBUG event was dynamically filtered: "
+ );
+ true
+ })
+ .event(event::mock().at_level(Level::INFO))
+ .event(event::mock().at_level(Level::WARN))
+ .event(event::mock().at_level(Level::ERROR))
+ .done()
+ .run_with_handle();
+
+ tracing::subscriber::set_global_default(subscriber).unwrap();
+
+ tracing::info!("doing a thing that you might care about");
+ tracing::debug!("charging turboencabulator with interocitor");
+ tracing::warn!("extremely serious warning, pay attention");
+ tracing::trace!("interocitor charge level is 10%");
+ tracing::error!("everything is on fire");
+ handle.assert_finished();
+}
diff --git a/vendor/tracing-0.1.37/tests/multiple_max_level_hints.rs b/vendor/tracing-0.1.37/tests/multiple_max_level_hints.rs
new file mode 100644
index 000000000..dd50a193b
--- /dev/null
+++ b/vendor/tracing-0.1.37/tests/multiple_max_level_hints.rs
@@ -0,0 +1,69 @@
+#![cfg(feature = "std")]
+
+use tracing::Level;
+use tracing_mock::*;
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn multiple_max_level_hints() {
+ // This test ensures that when multiple subscribers are active, their max
+ // level hints are handled correctly. The global max level should be the
+ // maximum of the level filters returned by the two `Subscriber`'s
+ // `max_level_hint` method.
+ //
+ // In this test, we create a subscriber whose max level is `INFO`, and
+ // another whose max level is `DEBUG`. We then add an assertion to both of
+ // those subscribers' `enabled` method that no metadata for `TRACE` spans or
+ // events are filtered, since they are disabled by the global max filter.
+
+ fn do_events() {
+ tracing::info!("doing a thing that you might care about");
+ tracing::debug!("charging turboencabulator with interocitor");
+ tracing::warn!("extremely serious warning, pay attention");
+ tracing::trace!("interocitor charge level is 10%");
+ tracing::error!("everything is on fire");
+ }
+
+ let (subscriber1, handle1) = subscriber::mock()
+ .named("subscriber1")
+ .with_max_level_hint(Level::INFO)
+ .with_filter(|meta| {
+ let level = dbg!(meta.level());
+ assert!(
+ level <= &Level::DEBUG,
+ "a TRACE event was dynamically filtered by subscriber1"
+ );
+ level <= &Level::INFO
+ })
+ .event(event::mock().at_level(Level::INFO))
+ .event(event::mock().at_level(Level::WARN))
+ .event(event::mock().at_level(Level::ERROR))
+ .done()
+ .run_with_handle();
+ let (subscriber2, handle2) = subscriber::mock()
+ .named("subscriber2")
+ .with_max_level_hint(Level::DEBUG)
+ .with_filter(|meta| {
+ let level = dbg!(meta.level());
+ assert!(
+ level <= &Level::DEBUG,
+ "a TRACE event was dynamically filtered by subscriber2"
+ );
+ level <= &Level::DEBUG
+ })
+ .event(event::mock().at_level(Level::INFO))
+ .event(event::mock().at_level(Level::DEBUG))
+ .event(event::mock().at_level(Level::WARN))
+ .event(event::mock().at_level(Level::ERROR))
+ .done()
+ .run_with_handle();
+
+ let dispatch1 = tracing::Dispatch::new(subscriber1);
+
+ tracing::dispatcher::with_default(&dispatch1, do_events);
+ handle1.assert_finished();
+
+ let dispatch2 = tracing::Dispatch::new(subscriber2);
+ tracing::dispatcher::with_default(&dispatch2, do_events);
+ handle2.assert_finished();
+}
diff --git a/vendor/tracing-0.1.37/tests/no_subscriber.rs b/vendor/tracing-0.1.37/tests/no_subscriber.rs
new file mode 100644
index 000000000..5f927c1de
--- /dev/null
+++ b/vendor/tracing-0.1.37/tests/no_subscriber.rs
@@ -0,0 +1,15 @@
+#![cfg(feature = "std")]
+
+use tracing::subscriber::{self, NoSubscriber};
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn no_subscriber_disables_global() {
+ // Reproduces https://github.com/tokio-rs/tracing/issues/1999
+ let (subscriber, handle) = tracing_mock::subscriber::mock().done().run_with_handle();
+ subscriber::set_global_default(subscriber).expect("setting global default must succeed");
+ subscriber::with_default(NoSubscriber::default(), || {
+ tracing::info!("this should not be recorded");
+ });
+ handle.assert_finished();
+}
diff --git a/vendor/tracing-0.1.37/tests/register_callsite_deadlock.rs b/vendor/tracing-0.1.37/tests/register_callsite_deadlock.rs
new file mode 100644
index 000000000..e4c116c75
--- /dev/null
+++ b/vendor/tracing-0.1.37/tests/register_callsite_deadlock.rs
@@ -0,0 +1,47 @@
+use std::{sync::mpsc, thread, time::Duration};
+use tracing::{
+ metadata::Metadata,
+ span,
+ subscriber::{self, Interest, Subscriber},
+ Event,
+};
+
+#[test]
+fn register_callsite_doesnt_deadlock() {
+ pub struct EvilSubscriber;
+
+ impl Subscriber for EvilSubscriber {
+ fn register_callsite(&self, meta: &'static Metadata<'static>) -> Interest {
+ tracing::info!(?meta, "registered a callsite");
+ Interest::always()
+ }
+
+ fn enabled(&self, _: &Metadata<'_>) -> bool {
+ true
+ }
+ fn new_span(&self, _: &span::Attributes<'_>) -> span::Id {
+ span::Id::from_u64(1)
+ }
+ fn record(&self, _: &span::Id, _: &span::Record<'_>) {}
+ fn record_follows_from(&self, _: &span::Id, _: &span::Id) {}
+ fn event(&self, _: &Event<'_>) {}
+ fn enter(&self, _: &span::Id) {}
+ fn exit(&self, _: &span::Id) {}
+ }
+
+ subscriber::set_global_default(EvilSubscriber).unwrap();
+
+ // spawn a thread, and assert it doesn't hang...
+ let (tx, didnt_hang) = mpsc::channel();
+ let th = thread::spawn(move || {
+ tracing::info!("hello world!");
+ tx.send(()).unwrap();
+ });
+
+ didnt_hang
+ // Note: 60 seconds is *way* more than enough, but let's be generous in
+ // case of e.g. slow CI machines.
+ .recv_timeout(Duration::from_secs(60))
+ .expect("the thread must not have hung!");
+ th.join().expect("thread should join successfully");
+}
diff --git a/vendor/tracing-0.1.37/tests/scoped_clobbers_default.rs b/vendor/tracing-0.1.37/tests/scoped_clobbers_default.rs
new file mode 100644
index 000000000..362d34a82
--- /dev/null
+++ b/vendor/tracing-0.1.37/tests/scoped_clobbers_default.rs
@@ -0,0 +1,35 @@
+#![cfg(feature = "std")]
+use tracing_mock::*;
+
+#[test]
+fn scoped_clobbers_global() {
+ // Reproduces https://github.com/tokio-rs/tracing/issues/2050
+
+ let (scoped, scoped_handle) = subscriber::mock()
+ .event(event::msg("before global"))
+ .event(event::msg("before drop"))
+ .done()
+ .run_with_handle();
+
+ let (global, global_handle) = subscriber::mock()
+ .event(event::msg("after drop"))
+ .done()
+ .run_with_handle();
+
+ // Set a scoped default subscriber, returning a guard.
+ let guard = tracing::subscriber::set_default(scoped);
+ tracing::info!("before global");
+
+ // Now, set the global default.
+ tracing::subscriber::set_global_default(global)
+ .expect("global default should not already be set");
+ // This event should still be collected by the scoped default.
+ tracing::info!("before drop");
+
+ // Drop the guard. Now, the global default subscriber should be used.
+ drop(guard);
+ tracing::info!("after drop");
+
+ scoped_handle.assert_finished();
+ global_handle.assert_finished();
+}
diff --git a/vendor/tracing-0.1.37/tests/span.rs b/vendor/tracing-0.1.37/tests/span.rs
new file mode 100644
index 000000000..4ed650023
--- /dev/null
+++ b/vendor/tracing-0.1.37/tests/span.rs
@@ -0,0 +1,825 @@
+// These tests require the thread-local scoped dispatcher, which only works when
+// we have a standard library. The behaviour being tested should be the same
+// with the standard lib disabled.
+#![cfg(feature = "std")]
+
+use std::thread;
+
+use tracing::{
+ field::{debug, display},
+ subscriber::with_default,
+ Level, Span,
+};
+use tracing_mock::*;
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn handles_to_the_same_span_are_equal() {
+ // Create a mock subscriber that will return `true` on calls to
+ // `Subscriber::enabled`, so that the spans will be constructed. We
+ // won't enter any spans in this test, so the subscriber won't actually
+ // expect to see any spans.
+ with_default(subscriber::mock().run(), || {
+ let foo1 = tracing::span!(Level::TRACE, "foo");
+ let foo2 = foo1.clone();
+ // Two handles that point to the same span are equal.
+ assert_eq!(foo1, foo2);
+ });
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn handles_to_different_spans_are_not_equal() {
+ with_default(subscriber::mock().run(), || {
+ // Even though these spans have the same name and fields, they will have
+ // differing metadata, since they were created on different lines.
+ let foo1 = tracing::span!(Level::TRACE, "foo", bar = 1u64, baz = false);
+ let foo2 = tracing::span!(Level::TRACE, "foo", bar = 1u64, baz = false);
+
+ assert_ne!(foo1, foo2);
+ });
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn handles_to_different_spans_with_the_same_metadata_are_not_equal() {
+ // Every time time this function is called, it will return a _new
+ // instance_ of a span with the same metadata, name, and fields.
+ fn make_span() -> Span {
+ tracing::span!(Level::TRACE, "foo", bar = 1u64, baz = false)
+ }
+
+ with_default(subscriber::mock().run(), || {
+ let foo1 = make_span();
+ let foo2 = make_span();
+
+ assert_ne!(foo1, foo2);
+ // assert_ne!(foo1.data(), foo2.data());
+ });
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn spans_always_go_to_the_subscriber_that_tagged_them() {
+ let subscriber1 = subscriber::mock()
+ .enter(span::mock().named("foo"))
+ .exit(span::mock().named("foo"))
+ .enter(span::mock().named("foo"))
+ .exit(span::mock().named("foo"))
+ .drop_span(span::mock().named("foo"))
+ .done()
+ .run();
+ let subscriber2 = subscriber::mock().run();
+
+ let foo = with_default(subscriber1, || {
+ let foo = tracing::span!(Level::TRACE, "foo");
+ foo.in_scope(|| {});
+ foo
+ });
+ // Even though we enter subscriber 2's context, the subscriber that
+ // tagged the span should see the enter/exit.
+ with_default(subscriber2, move || foo.in_scope(|| {}));
+}
+
+// This gets exempt from testing in wasm because of: `thread::spawn` which is
+// not yet possible to do in WASM. There is work going on see:
+// <https://rustwasm.github.io/2018/10/24/multithreading-rust-and-wasm.html>
+//
+// But for now since it's not possible we don't need to test for it :)
+#[test]
+fn spans_always_go_to_the_subscriber_that_tagged_them_even_across_threads() {
+ let subscriber1 = subscriber::mock()
+ .enter(span::mock().named("foo"))
+ .exit(span::mock().named("foo"))
+ .enter(span::mock().named("foo"))
+ .exit(span::mock().named("foo"))
+ .drop_span(span::mock().named("foo"))
+ .done()
+ .run();
+ let foo = with_default(subscriber1, || {
+ let foo = tracing::span!(Level::TRACE, "foo");
+ foo.in_scope(|| {});
+ foo
+ });
+
+ // Even though we enter subscriber 2's context, the subscriber that
+ // tagged the span should see the enter/exit.
+ thread::spawn(move || {
+ with_default(subscriber::mock().run(), || {
+ foo.in_scope(|| {});
+ })
+ })
+ .join()
+ .unwrap();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn dropping_a_span_calls_drop_span() {
+ let (subscriber, handle) = subscriber::mock()
+ .enter(span::mock().named("foo"))
+ .exit(span::mock().named("foo"))
+ .drop_span(span::mock().named("foo"))
+ .done()
+ .run_with_handle();
+ with_default(subscriber, || {
+ let span = tracing::span!(Level::TRACE, "foo");
+ span.in_scope(|| {});
+ drop(span);
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn span_closes_after_event() {
+ let (subscriber, handle) = subscriber::mock()
+ .enter(span::mock().named("foo"))
+ .event(event::mock())
+ .exit(span::mock().named("foo"))
+ .drop_span(span::mock().named("foo"))
+ .done()
+ .run_with_handle();
+ with_default(subscriber, || {
+ tracing::span!(Level::TRACE, "foo").in_scope(|| {
+ tracing::event!(Level::DEBUG, {}, "my tracing::event!");
+ });
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn new_span_after_event() {
+ let (subscriber, handle) = subscriber::mock()
+ .enter(span::mock().named("foo"))
+ .event(event::mock())
+ .exit(span::mock().named("foo"))
+ .drop_span(span::mock().named("foo"))
+ .enter(span::mock().named("bar"))
+ .exit(span::mock().named("bar"))
+ .drop_span(span::mock().named("bar"))
+ .done()
+ .run_with_handle();
+ with_default(subscriber, || {
+ tracing::span!(Level::TRACE, "foo").in_scope(|| {
+ tracing::event!(Level::DEBUG, {}, "my tracing::event!");
+ });
+ tracing::span!(Level::TRACE, "bar").in_scope(|| {});
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn event_outside_of_span() {
+ let (subscriber, handle) = subscriber::mock()
+ .event(event::mock())
+ .enter(span::mock().named("foo"))
+ .exit(span::mock().named("foo"))
+ .drop_span(span::mock().named("foo"))
+ .done()
+ .run_with_handle();
+ with_default(subscriber, || {
+ tracing::debug!("my tracing::event!");
+ tracing::span!(Level::TRACE, "foo").in_scope(|| {});
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn cloning_a_span_calls_clone_span() {
+ let (subscriber, handle) = subscriber::mock()
+ .clone_span(span::mock().named("foo"))
+ .run_with_handle();
+ with_default(subscriber, || {
+ let span = tracing::span!(Level::TRACE, "foo");
+ // Allow the "redundant" `.clone` since it is used to call into the `.clone_span` hook.
+ #[allow(clippy::redundant_clone)]
+ let _span2 = span.clone();
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn drop_span_when_exiting_dispatchers_context() {
+ let (subscriber, handle) = subscriber::mock()
+ .clone_span(span::mock().named("foo"))
+ .drop_span(span::mock().named("foo"))
+ .drop_span(span::mock().named("foo"))
+ .run_with_handle();
+ with_default(subscriber, || {
+ let span = tracing::span!(Level::TRACE, "foo");
+ let _span2 = span.clone();
+ drop(span);
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn clone_and_drop_span_always_go_to_the_subscriber_that_tagged_the_span() {
+ let (subscriber1, handle1) = subscriber::mock()
+ .enter(span::mock().named("foo"))
+ .exit(span::mock().named("foo"))
+ .clone_span(span::mock().named("foo"))
+ .enter(span::mock().named("foo"))
+ .exit(span::mock().named("foo"))
+ .drop_span(span::mock().named("foo"))
+ .drop_span(span::mock().named("foo"))
+ .run_with_handle();
+ let subscriber2 = subscriber::mock().done().run();
+
+ let foo = with_default(subscriber1, || {
+ let foo = tracing::span!(Level::TRACE, "foo");
+ foo.in_scope(|| {});
+ foo
+ });
+ // Even though we enter subscriber 2's context, the subscriber that
+ // tagged the span should see the enter/exit.
+ with_default(subscriber2, move || {
+ let foo2 = foo.clone();
+ foo.in_scope(|| {});
+ drop(foo);
+ drop(foo2);
+ });
+
+ handle1.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn span_closes_when_exited() {
+ let (subscriber, handle) = subscriber::mock()
+ .enter(span::mock().named("foo"))
+ .exit(span::mock().named("foo"))
+ .drop_span(span::mock().named("foo"))
+ .done()
+ .run_with_handle();
+ with_default(subscriber, || {
+ let foo = tracing::span!(Level::TRACE, "foo");
+
+ foo.in_scope(|| {});
+
+ drop(foo);
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn enter() {
+ let (subscriber, handle) = subscriber::mock()
+ .enter(span::mock().named("foo"))
+ .event(event::mock())
+ .exit(span::mock().named("foo"))
+ .drop_span(span::mock().named("foo"))
+ .done()
+ .run_with_handle();
+ with_default(subscriber, || {
+ let foo = tracing::span!(Level::TRACE, "foo");
+ let _enter = foo.enter();
+ tracing::debug!("dropping guard...");
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn entered() {
+ let (subscriber, handle) = subscriber::mock()
+ .enter(span::mock().named("foo"))
+ .event(event::mock())
+ .exit(span::mock().named("foo"))
+ .drop_span(span::mock().named("foo"))
+ .done()
+ .run_with_handle();
+ with_default(subscriber, || {
+ let _span = tracing::span!(Level::TRACE, "foo").entered();
+ tracing::debug!("dropping guard...");
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn entered_api() {
+ let (subscriber, handle) = subscriber::mock()
+ .enter(span::mock().named("foo"))
+ .event(event::mock())
+ .exit(span::mock().named("foo"))
+ .drop_span(span::mock().named("foo"))
+ .done()
+ .run_with_handle();
+ with_default(subscriber, || {
+ let span = tracing::span!(Level::TRACE, "foo").entered();
+ let _derefs_to_span = span.id();
+ tracing::debug!("exiting span...");
+ let _: Span = span.exit();
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn moved_field() {
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(
+ span::mock().named("foo").with_field(
+ field::mock("bar")
+ .with_value(&display("hello from my span"))
+ .only(),
+ ),
+ )
+ .enter(span::mock().named("foo"))
+ .exit(span::mock().named("foo"))
+ .drop_span(span::mock().named("foo"))
+ .done()
+ .run_with_handle();
+ with_default(subscriber, || {
+ let from = "my span";
+ let span = tracing::span!(
+ Level::TRACE,
+ "foo",
+ bar = display(format!("hello from {}", from))
+ );
+ span.in_scope(|| {});
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn dotted_field_name() {
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(
+ span::mock()
+ .named("foo")
+ .with_field(field::mock("fields.bar").with_value(&true).only()),
+ )
+ .done()
+ .run_with_handle();
+ with_default(subscriber, || {
+ tracing::span!(Level::TRACE, "foo", fields.bar = true);
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn borrowed_field() {
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(
+ span::mock().named("foo").with_field(
+ field::mock("bar")
+ .with_value(&display("hello from my span"))
+ .only(),
+ ),
+ )
+ .enter(span::mock().named("foo"))
+ .exit(span::mock().named("foo"))
+ .drop_span(span::mock().named("foo"))
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ let from = "my span";
+ let mut message = format!("hello from {}", from);
+ let span = tracing::span!(Level::TRACE, "foo", bar = display(&message));
+ span.in_scope(|| {
+ message.insert_str(10, " inside");
+ });
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+// If emitting log instrumentation, this gets moved anyway, breaking the test.
+#[cfg(not(feature = "log"))]
+fn move_field_out_of_struct() {
+ use tracing::field::debug;
+
+ #[derive(Debug)]
+ struct Position {
+ x: f32,
+ y: f32,
+ }
+
+ let pos = Position {
+ x: 3.234,
+ y: -1.223,
+ };
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(
+ span::mock().named("foo").with_field(
+ field::mock("x")
+ .with_value(&debug(3.234))
+ .and(field::mock("y").with_value(&debug(-1.223)))
+ .only(),
+ ),
+ )
+ .new_span(
+ span::mock()
+ .named("bar")
+ .with_field(field::mock("position").with_value(&debug(&pos)).only()),
+ )
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ let pos = Position {
+ x: 3.234,
+ y: -1.223,
+ };
+ let foo = tracing::span!(Level::TRACE, "foo", x = debug(pos.x), y = debug(pos.y));
+ let bar = tracing::span!(Level::TRACE, "bar", position = debug(pos));
+ foo.in_scope(|| {});
+ bar.in_scope(|| {});
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn float_values() {
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(
+ span::mock().named("foo").with_field(
+ field::mock("x")
+ .with_value(&3.234)
+ .and(field::mock("y").with_value(&-1.223))
+ .only(),
+ ),
+ )
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ let foo = tracing::span!(Level::TRACE, "foo", x = 3.234, y = -1.223);
+ foo.in_scope(|| {});
+ });
+
+ handle.assert_finished();
+}
+
+// TODO(#1138): determine a new syntax for uninitialized span fields, and
+// re-enable these.
+/*
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn add_field_after_new_span() {
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(
+ span::mock()
+ .named("foo")
+ .with_field(field::mock("bar").with_value(&5)
+ .and(field::mock("baz").with_value).only()),
+ )
+ .record(
+ span::mock().named("foo"),
+ field::mock("baz").with_value(&true).only(),
+ )
+ .enter(span::mock().named("foo"))
+ .exit(span::mock().named("foo"))
+ .drop_span(span::mock().named("foo"))
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ let span = tracing::span!(Level::TRACE, "foo", bar = 5, baz = false);
+ span.record("baz", &true);
+ span.in_scope(|| {})
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn add_fields_only_after_new_span() {
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(span::mock().named("foo"))
+ .record(
+ span::mock().named("foo"),
+ field::mock("bar").with_value(&5).only(),
+ )
+ .record(
+ span::mock().named("foo"),
+ field::mock("baz").with_value(&true).only(),
+ )
+ .enter(span::mock().named("foo"))
+ .exit(span::mock().named("foo"))
+ .drop_span(span::mock().named("foo"))
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ let span = tracing::span!(Level::TRACE, "foo", bar = _, baz = _);
+ span.record("bar", &5);
+ span.record("baz", &true);
+ span.in_scope(|| {})
+ });
+
+ handle.assert_finished();
+}
+*/
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn record_new_value_for_field() {
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(
+ span::mock().named("foo").with_field(
+ field::mock("bar")
+ .with_value(&5)
+ .and(field::mock("baz").with_value(&false))
+ .only(),
+ ),
+ )
+ .record(
+ span::mock().named("foo"),
+ field::mock("baz").with_value(&true).only(),
+ )
+ .enter(span::mock().named("foo"))
+ .exit(span::mock().named("foo"))
+ .drop_span(span::mock().named("foo"))
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ let span = tracing::span!(Level::TRACE, "foo", bar = 5, baz = false);
+ span.record("baz", &true);
+ span.in_scope(|| {})
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn record_new_values_for_fields() {
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(
+ span::mock().named("foo").with_field(
+ field::mock("bar")
+ .with_value(&4)
+ .and(field::mock("baz").with_value(&false))
+ .only(),
+ ),
+ )
+ .record(
+ span::mock().named("foo"),
+ field::mock("bar").with_value(&5).only(),
+ )
+ .record(
+ span::mock().named("foo"),
+ field::mock("baz").with_value(&true).only(),
+ )
+ .enter(span::mock().named("foo"))
+ .exit(span::mock().named("foo"))
+ .drop_span(span::mock().named("foo"))
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ let span = tracing::span!(Level::TRACE, "foo", bar = 4, baz = false);
+ span.record("bar", &5);
+ span.record("baz", &true);
+ span.in_scope(|| {})
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn new_span_with_target_and_log_level() {
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(
+ span::mock()
+ .named("foo")
+ .with_target("app_span")
+ .at_level(Level::DEBUG),
+ )
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ tracing::span!(target: "app_span", Level::DEBUG, "foo");
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn explicit_root_span_is_root() {
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(span::mock().named("foo").with_explicit_parent(None))
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ tracing::span!(parent: None, Level::TRACE, "foo");
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn explicit_root_span_is_root_regardless_of_ctx() {
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(span::mock().named("foo"))
+ .enter(span::mock().named("foo"))
+ .new_span(span::mock().named("bar").with_explicit_parent(None))
+ .exit(span::mock().named("foo"))
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ tracing::span!(Level::TRACE, "foo").in_scope(|| {
+ tracing::span!(parent: None, Level::TRACE, "bar");
+ })
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn explicit_child() {
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(span::mock().named("foo"))
+ .new_span(span::mock().named("bar").with_explicit_parent(Some("foo")))
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ let foo = tracing::span!(Level::TRACE, "foo");
+ tracing::span!(parent: foo.id(), Level::TRACE, "bar");
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn explicit_child_at_levels() {
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(span::mock().named("foo"))
+ .new_span(span::mock().named("a").with_explicit_parent(Some("foo")))
+ .new_span(span::mock().named("b").with_explicit_parent(Some("foo")))
+ .new_span(span::mock().named("c").with_explicit_parent(Some("foo")))
+ .new_span(span::mock().named("d").with_explicit_parent(Some("foo")))
+ .new_span(span::mock().named("e").with_explicit_parent(Some("foo")))
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ let foo = tracing::span!(Level::TRACE, "foo");
+ tracing::trace_span!(parent: foo.id(), "a");
+ tracing::debug_span!(parent: foo.id(), "b");
+ tracing::info_span!(parent: foo.id(), "c");
+ tracing::warn_span!(parent: foo.id(), "d");
+ tracing::error_span!(parent: foo.id(), "e");
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn explicit_child_regardless_of_ctx() {
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(span::mock().named("foo"))
+ .new_span(span::mock().named("bar"))
+ .enter(span::mock().named("bar"))
+ .new_span(span::mock().named("baz").with_explicit_parent(Some("foo")))
+ .exit(span::mock().named("bar"))
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ let foo = tracing::span!(Level::TRACE, "foo");
+ tracing::span!(Level::TRACE, "bar")
+ .in_scope(|| tracing::span!(parent: foo.id(), Level::TRACE, "baz"))
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn contextual_root() {
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(span::mock().named("foo").with_contextual_parent(None))
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ tracing::span!(Level::TRACE, "foo");
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn contextual_child() {
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(span::mock().named("foo"))
+ .enter(span::mock().named("foo"))
+ .new_span(
+ span::mock()
+ .named("bar")
+ .with_contextual_parent(Some("foo")),
+ )
+ .exit(span::mock().named("foo"))
+ .done()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ tracing::span!(Level::TRACE, "foo").in_scope(|| {
+ tracing::span!(Level::TRACE, "bar");
+ })
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn display_shorthand() {
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(
+ span::mock().named("my_span").with_field(
+ field::mock("my_field")
+ .with_value(&display("hello world"))
+ .only(),
+ ),
+ )
+ .done()
+ .run_with_handle();
+ with_default(subscriber, || {
+ tracing::span!(Level::TRACE, "my_span", my_field = %"hello world");
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn debug_shorthand() {
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(
+ span::mock().named("my_span").with_field(
+ field::mock("my_field")
+ .with_value(&debug("hello world"))
+ .only(),
+ ),
+ )
+ .done()
+ .run_with_handle();
+ with_default(subscriber, || {
+ tracing::span!(Level::TRACE, "my_span", my_field = ?"hello world");
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn both_shorthands() {
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(
+ span::mock().named("my_span").with_field(
+ field::mock("display_field")
+ .with_value(&display("hello world"))
+ .and(field::mock("debug_field").with_value(&debug("hello world")))
+ .only(),
+ ),
+ )
+ .done()
+ .run_with_handle();
+ with_default(subscriber, || {
+ tracing::span!(Level::TRACE, "my_span", display_field = %"hello world", debug_field = ?"hello world");
+ });
+
+ handle.assert_finished();
+}
diff --git a/vendor/tracing-0.1.37/tests/subscriber.rs b/vendor/tracing-0.1.37/tests/subscriber.rs
new file mode 100644
index 000000000..15557c107
--- /dev/null
+++ b/vendor/tracing-0.1.37/tests/subscriber.rs
@@ -0,0 +1,130 @@
+// These tests require the thread-local scoped dispatcher, which only works when
+// we have a standard library. The behaviour being tested should be the same
+// with the standard lib disabled.
+//
+// The alternative would be for each of these tests to be defined in a separate
+// file, which is :(
+#![cfg(feature = "std")]
+use tracing::{
+ field::display,
+ span::{Attributes, Id, Record},
+ subscriber::{with_default, Interest, Subscriber},
+ Event, Level, Metadata,
+};
+
+use tracing_mock::*;
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn event_macros_dont_infinite_loop() {
+ // This test ensures that an event macro within a subscriber
+ // won't cause an infinite loop of events.
+ struct TestSubscriber;
+ impl Subscriber for TestSubscriber {
+ fn register_callsite(&self, _: &Metadata<'_>) -> Interest {
+ // Always return sometimes so that `enabled` will be called
+ // (which can loop).
+ Interest::sometimes()
+ }
+
+ fn enabled(&self, meta: &Metadata<'_>) -> bool {
+ assert!(meta.fields().iter().any(|f| f.name() == "foo"));
+ tracing::event!(Level::TRACE, bar = false);
+ true
+ }
+
+ fn new_span(&self, _: &Attributes<'_>) -> Id {
+ Id::from_u64(0xAAAA)
+ }
+
+ fn record(&self, _: &Id, _: &Record<'_>) {}
+
+ fn record_follows_from(&self, _: &Id, _: &Id) {}
+
+ fn event(&self, event: &Event<'_>) {
+ assert!(event.metadata().fields().iter().any(|f| f.name() == "foo"));
+ tracing::event!(Level::TRACE, baz = false);
+ }
+
+ fn enter(&self, _: &Id) {}
+
+ fn exit(&self, _: &Id) {}
+ }
+
+ with_default(TestSubscriber, || {
+ tracing::event!(Level::TRACE, foo = false);
+ })
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn boxed_subscriber() {
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(
+ span::mock().named("foo").with_field(
+ field::mock("bar")
+ .with_value(&display("hello from my span"))
+ .only(),
+ ),
+ )
+ .enter(span::mock().named("foo"))
+ .exit(span::mock().named("foo"))
+ .drop_span(span::mock().named("foo"))
+ .done()
+ .run_with_handle();
+ let subscriber: Box<dyn Subscriber + Send + Sync + 'static> = Box::new(subscriber);
+
+ with_default(subscriber, || {
+ let from = "my span";
+ let span = tracing::span!(
+ Level::TRACE,
+ "foo",
+ bar = format_args!("hello from {}", from)
+ );
+ span.in_scope(|| {});
+ });
+
+ handle.assert_finished();
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn arced_subscriber() {
+ use std::sync::Arc;
+
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(
+ span::mock().named("foo").with_field(
+ field::mock("bar")
+ .with_value(&display("hello from my span"))
+ .only(),
+ ),
+ )
+ .enter(span::mock().named("foo"))
+ .exit(span::mock().named("foo"))
+ .drop_span(span::mock().named("foo"))
+ .event(
+ event::mock()
+ .with_fields(field::mock("message").with_value(&display("hello from my event"))),
+ )
+ .done()
+ .run_with_handle();
+ let subscriber: Arc<dyn Subscriber + Send + Sync + 'static> = Arc::new(subscriber);
+
+ // Test using a clone of the `Arc`ed subscriber
+ with_default(subscriber.clone(), || {
+ let from = "my span";
+ let span = tracing::span!(
+ Level::TRACE,
+ "foo",
+ bar = format_args!("hello from {}", from)
+ );
+ span.in_scope(|| {});
+ });
+
+ with_default(subscriber, || {
+ tracing::info!("hello from my event");
+ });
+
+ handle.assert_finished();
+}
diff --git a/vendor/tracing-attributes/.cargo-checksum.json b/vendor/tracing-attributes/.cargo-checksum.json
index f03bd5d46..cc2b53e52 100644
--- a/vendor/tracing-attributes/.cargo-checksum.json
+++ b/vendor/tracing-attributes/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"51b693a78ec3115db6f20696605d5829a5928dc7270145810964f8edd4a5e574","Cargo.toml":"b8ad9f1020eeb1f1e495d7a693c825f7bdc3ee4bf29a72aeacbdef989870c61a","LICENSE":"898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1","README.md":"d878157a8f65779ef3d2e53d6772f99b5b79d7addccb6d04a2eb681ce1de99e1","src/attr.rs":"d0224a2a9be76743f039c86c1935622ca0b5b2e618b9323149855bf0e326fe48","src/expand.rs":"d2f3af4c987d79def03500d7a8cda1bd18c4da3e8395b500e37241968e38c7e0","src/lib.rs":"040047aa902ff3dc6d1b128a055de13d129d69fcd96b04f036223f4585d1fa1c","tests/async_fn.rs":"472a544e14b2141acd9d63e1cbe49f2610cfe8e924dff67b4d23c6a9121fc90f","tests/destructuring.rs":"26b9800678bad09e06512a113a54556e2fac3ecb15a18dcccefe105fb8911c26","tests/err.rs":"ef46724e62c4c307c2d0306e8689c1d4816df432709bfb7bbace7f8ceb67f86d","tests/fields.rs":"3882bd4e744d6b492f59beac7475e8bf4ff4ca8ad85c6951c305a22c78e75fae","tests/follows_from.rs":"f3cc336dac88533521b4cbe0b378fbcf1fb34e2d41a367b4726e98b49468309f","tests/instrument.rs":"dab616dac11043f82f91efbbb37c0dc5a375e51085449bf0b8d65c619f11166a","tests/levels.rs":"408a8eec7af33deba6a050ea9e59ed11e5e76a393f0a2549b11ddf683c0b785d","tests/names.rs":"5afd6c4d526588bcea3141c130a45a21872956495b6868a01b44ddff57749827","tests/parents.rs":"673d3f81eed6ba433f685ec53fd007c5dd957b97d32499d7ea1537e1f289cb2e","tests/ret.rs":"55473797667240c8f613b277360e68228e40047180b5f2828b13513873b9754e","tests/targets.rs":"95ce1ce1e2d29794062c5b3429d91c1bfaba5813251d5d8440c12cb2db6e11bf","tests/ui.rs":"60ed69aba2cbf4b1a2f42b78703f7f21d8a69f62e39bb0509f6a2224cad9b9de","tests/ui/async_instrument.rs":"00fcde05841e8f9f6cc6f9434f8cc4baed5cf6e3ca73e8faddccbdace14e9485","tests/ui/async_instrument.stderr":"1d650a0914f0f59beeb88946a8ad6991feffe885016462ba917ea8e09792f866","tests/ui/const_instrument.rs":"253160848b023cbf73c3d1dece4969ff892ae9a3149e771159230733fa1cab1b","tests/ui/const_instrument.stderr":"86527fbc2410ceba8f051771fdb4bf71eb853e086a4e4d17353089c65b918c18"},"package":"5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"e410a2cbd565bff62c52c66580bd3c7aa9bd81e4b73b5f4cdd0f7c5ab13b21de","Cargo.toml":"2cb782a6b7cb5412591a8457af156d081514ae846a81bec889a9f60f68a39dca","LICENSE":"898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1","README.md":"d878157a8f65779ef3d2e53d6772f99b5b79d7addccb6d04a2eb681ce1de99e1","src/attr.rs":"d0224a2a9be76743f039c86c1935622ca0b5b2e618b9323149855bf0e326fe48","src/expand.rs":"548b8d5fb5e92fe57a067bb656b88ceb403234521eed8bce4e0ec91b5fdacf78","src/lib.rs":"de2409d2cefba7a21739ac1021ea8e0dec892a342b1ecb46a81f66b782ea8f5b","tests/async_fn.rs":"66dab5e2a58119f588daae74efa47b5d8db0751cb99660856d792f352a3a263e","tests/destructuring.rs":"d920dca0b7db5b48697c1eb5a40ce676956760eb8bc2dcbe4c5ce1bc3631877b","tests/err.rs":"6b717be09a2447bcb0583a9b6a42b53361935b4a61093572c55f506f9d5f5cff","tests/fields.rs":"8babe90df46cfe9018caf20ef85060c90d611c5531b4d603f10f83a38744e7c2","tests/follows_from.rs":"d0478db45cb838d76f0d52f930847e8540b09456e2cd56591e56910c5e9985c6","tests/instrument.rs":"0c47bd9117858ecc585faab597115b7b49e2c79ae20172c32a6184674c8fd274","tests/levels.rs":"20483e9c7555991044b748f209def016d28da0a64eb9f85fabb489b0fb75a440","tests/names.rs":"2a67b33681cc7689c4d677de7a97b846df1817406a56a98ba91bf67b9f7d630a","tests/parents.rs":"95451328d8d7dba9020dc3eeb4ee56fc7f4591d5d38e793b815e621e73063da1","tests/ret.rs":"4628f562f8b0fb36a0dc13f488d70df8a545bd9b49422dfbf05fd2cab3870fc3","tests/targets.rs":"2065af7ff491be720c56d1b218b095a64e4573bf2586e49ce638c5ed4d639811","tests/ui.rs":"60ed69aba2cbf4b1a2f42b78703f7f21d8a69f62e39bb0509f6a2224cad9b9de","tests/ui/async_instrument.rs":"00fcde05841e8f9f6cc6f9434f8cc4baed5cf6e3ca73e8faddccbdace14e9485","tests/ui/async_instrument.stderr":"1d650a0914f0f59beeb88946a8ad6991feffe885016462ba917ea8e09792f866","tests/ui/const_instrument.rs":"253160848b023cbf73c3d1dece4969ff892ae9a3149e771159230733fa1cab1b","tests/ui/const_instrument.stderr":"86527fbc2410ceba8f051771fdb4bf71eb853e086a4e4d17353089c65b918c18"},"package":"34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"} \ No newline at end of file
diff --git a/vendor/tracing-attributes/CHANGELOG.md b/vendor/tracing-attributes/CHANGELOG.md
index 6df517e85..3cb95f70f 100644
--- a/vendor/tracing-attributes/CHANGELOG.md
+++ b/vendor/tracing-attributes/CHANGELOG.md
@@ -1,3 +1,18 @@
+# 0.1.27 (October 13, 2023)
+
+### Changed
+
+- Bump minimum version of proc-macro2 to 1.0.60 ([#2732])
+- Generate less dead code for async block return type hint ([#2709])
+
+### Fixed
+
+- Fix a compilation error in `#[instrument]` when the `"log"` feature is enabled ([#2599])
+
+[#2732]: https://github.com/tokio-rs/tracing/pull/2732
+[#2709]: https://github.com/tokio-rs/tracing/pull/2709
+[#2599]: https://github.com/tokio-rs/tracing/pull/2599
+
# 0.1.26 (June 21th, 2023)
This release of `tracing-attributes` fixes warnings due to `allow` attributes in
diff --git a/vendor/tracing-attributes/Cargo.toml b/vendor/tracing-attributes/Cargo.toml
index 281ea1fdc..8d90671b8 100644
--- a/vendor/tracing-attributes/Cargo.toml
+++ b/vendor/tracing-attributes/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2018"
rust-version = "1.56.0"
name = "tracing-attributes"
-version = "0.1.26"
+version = "0.1.27"
authors = [
"Tokio Contributors <team@tokio.rs>",
"Eliza Weisman <eliza@buoyant.io>",
@@ -43,7 +43,7 @@ repository = "https://github.com/tokio-rs/tracing"
proc-macro = true
[dependencies.proc-macro2]
-version = "1.0.40"
+version = "1.0.60"
[dependencies.quote]
version = "1.0.20"
diff --git a/vendor/tracing-attributes/src/expand.rs b/vendor/tracing-attributes/src/expand.rs
index eb7be8f47..a7123e523 100644
--- a/vendor/tracing-attributes/src/expand.rs
+++ b/vendor/tracing-attributes/src/expand.rs
@@ -66,11 +66,11 @@ pub(crate) fn gen_function<'a, B: ToTokens + 'a>(
let fake_return_edge = quote_spanned! {return_span=>
#[allow(
unknown_lints, unreachable_code, clippy::diverging_sub_expression,
- clippy::let_unit_value, clippy::unreachable, clippy::let_with_type_underscore
+ clippy::let_unit_value, clippy::unreachable, clippy::let_with_type_underscore,
+ clippy::empty_loop
)]
if false {
- let __tracing_attr_fake_return: #return_type =
- unreachable!("this is just for type inference, and is unreachable code");
+ let __tracing_attr_fake_return: #return_type = loop {};
return __tracing_attr_fake_return;
}
};
@@ -343,7 +343,7 @@ fn gen_block<B: ToTokens>(
// regression in case the level is enabled.
let __tracing_attr_span;
let __tracing_attr_guard;
- if tracing::level_enabled!(#level) {
+ if tracing::level_enabled!(#level) || tracing::if_log_enabled!(#level, {true} else {false}) {
__tracing_attr_span = #span;
#follows_from
__tracing_attr_guard = __tracing_attr_span.enter();
diff --git a/vendor/tracing-attributes/src/lib.rs b/vendor/tracing-attributes/src/lib.rs
index c7477946d..6a0fd5453 100644
--- a/vendor/tracing-attributes/src/lib.rs
+++ b/vendor/tracing-attributes/src/lib.rs
@@ -91,7 +91,7 @@ mod expand;
/// Instruments a function to create and enter a `tracing` [span] every time
/// the function is called.
///
-/// Unless overriden, a span with the [`INFO`] [level] will be generated.
+/// Unless overridden, a span with the [`INFO`] [level] will be generated.
/// The generated span's name will be the name of the function.
/// By default, all arguments to the function are included as fields on the
/// span. Arguments that are `tracing` [primitive types] implementing the
diff --git a/vendor/tracing-attributes/tests/async_fn.rs b/vendor/tracing-attributes/tests/async_fn.rs
index d6d874ffd..1d9273400 100644
--- a/vendor/tracing-attributes/tests/async_fn.rs
+++ b/vendor/tracing-attributes/tests/async_fn.rs
@@ -17,7 +17,6 @@ async fn test_async_fn(polls: usize) -> Result<(), ()> {
#[allow(dead_code)] // this is just here to test whether it compiles.
#[instrument]
async fn test_ret_impl_trait(n: i32) -> Result<impl Iterator<Item = i32>, ()> {
- let n = n;
Ok((0..10).filter(move |x| *x < n))
}
@@ -84,16 +83,16 @@ fn repro_1831_2() -> impl Future<Output = Result<(), Infallible>> {
#[test]
fn async_fn_only_enters_for_polls() {
let (subscriber, handle) = subscriber::mock()
- .new_span(span::mock().named("test_async_fn"))
- .enter(span::mock().named("test_async_fn"))
- .event(event::mock().with_fields(field::mock("awaiting").with_value(&true)))
- .exit(span::mock().named("test_async_fn"))
- .enter(span::mock().named("test_async_fn"))
- .exit(span::mock().named("test_async_fn"))
- .enter(span::mock().named("test_async_fn"))
- .exit(span::mock().named("test_async_fn"))
- .drop_span(span::mock().named("test_async_fn"))
- .done()
+ .new_span(expect::span().named("test_async_fn"))
+ .enter(expect::span().named("test_async_fn"))
+ .event(expect::event().with_fields(expect::field("awaiting").with_value(&true)))
+ .exit(expect::span().named("test_async_fn"))
+ .enter(expect::span().named("test_async_fn"))
+ .exit(expect::span().named("test_async_fn"))
+ .enter(expect::span().named("test_async_fn"))
+ .exit(expect::span().named("test_async_fn"))
+ .drop_span(expect::span().named("test_async_fn"))
+ .only()
.run_with_handle();
with_default(subscriber, || {
block_on_future(async { test_async_fn(2).await }).unwrap();
@@ -113,14 +112,14 @@ fn async_fn_nested() {
tracing::trace!(nested = true);
}
- let span = span::mock().named("test_async_fns_nested");
- let span2 = span::mock().named("test_async_fns_nested_other");
+ let span = expect::span().named("test_async_fns_nested");
+ let span2 = expect::span().named("test_async_fns_nested_other");
let (subscriber, handle) = subscriber::mock()
.new_span(span.clone())
.enter(span.clone())
.new_span(span2.clone())
.enter(span2.clone())
- .event(event::mock().with_fields(field::mock("nested").with_value(&true)))
+ .event(expect::event().with_fields(expect::field("nested").with_value(&true)))
.exit(span2.clone())
.enter(span2.clone())
.exit(span2.clone())
@@ -129,7 +128,7 @@ fn async_fn_nested() {
.enter(span.clone())
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -191,26 +190,26 @@ fn async_fn_with_async_trait() {
}
}
- let span = span::mock().named("foo");
- let span2 = span::mock().named("bar");
- let span3 = span::mock().named("baz");
+ let span = expect::span().named("foo");
+ let span2 = expect::span().named("bar");
+ let span3 = expect::span().named("baz");
let (subscriber, handle) = subscriber::mock()
.new_span(
span.clone()
- .with_field(field::mock("self"))
- .with_field(field::mock("v")),
+ .with_field(expect::field("self"))
+ .with_field(expect::field("v")),
)
.enter(span.clone())
.new_span(span3.clone())
.enter(span3.clone())
- .event(event::mock().with_fields(field::mock("val").with_value(&2u64)))
+ .event(expect::event().with_fields(expect::field("val").with_value(&2u64)))
.exit(span3.clone())
.enter(span3.clone())
.exit(span3.clone())
.drop_span(span3)
- .new_span(span2.clone().with_field(field::mock("self")))
+ .new_span(span2.clone().with_field(expect::field("self")))
.enter(span2.clone())
- .event(event::mock().with_fields(field::mock("val").with_value(&5u64)))
+ .event(expect::event().with_fields(expect::field("val").with_value(&5u64)))
.exit(span2.clone())
.enter(span2.clone())
.exit(span2.clone())
@@ -219,7 +218,7 @@ fn async_fn_with_async_trait() {
.enter(span.clone())
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -255,15 +254,15 @@ fn async_fn_with_async_trait_and_fields_expressions() {
async fn call(&mut self, _v: usize) {}
}
- let span = span::mock().named("call");
+ let span = expect::span().named("call");
let (subscriber, handle) = subscriber::mock()
.new_span(
span.clone().with_field(
- field::mock("_v")
+ expect::field("_v")
.with_value(&5usize)
- .and(field::mock("test").with_value(&tracing::field::debug(10)))
- .and(field::mock("val").with_value(&42u64))
- .and(field::mock("val2").with_value(&42u64)),
+ .and(expect::field("test").with_value(&tracing::field::debug(10)))
+ .and(expect::field("val").with_value(&42u64))
+ .and(expect::field("val2").with_value(&42u64)),
),
)
.enter(span.clone())
@@ -271,7 +270,7 @@ fn async_fn_with_async_trait_and_fields_expressions() {
.enter(span.clone())
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -323,26 +322,26 @@ fn async_fn_with_async_trait_and_fields_expressions_with_generic_parameter() {
}
//let span = span::mock().named("call");
- let span2 = span::mock().named("call_with_self");
- let span3 = span::mock().named("call_with_mut_self");
- let span4 = span::mock().named("sync_fun");
+ let span2 = expect::span().named("call_with_self");
+ let span3 = expect::span().named("call_with_mut_self");
+ let span4 = expect::span().named("sync_fun");
let (subscriber, handle) = subscriber::mock()
/*.new_span(span.clone()
.with_field(
- field::mock("Self").with_value(&"TestImpler")))
+ expect::field("Self").with_value(&"TestImpler")))
.enter(span.clone())
.exit(span.clone())
.drop_span(span)*/
.new_span(
span2
.clone()
- .with_field(field::mock("Self").with_value(&std::any::type_name::<TestImpl>())),
+ .with_field(expect::field("Self").with_value(&std::any::type_name::<TestImpl>())),
)
.enter(span2.clone())
.new_span(
span4
.clone()
- .with_field(field::mock("Self").with_value(&std::any::type_name::<TestImpl>())),
+ .with_field(expect::field("Self").with_value(&std::any::type_name::<TestImpl>())),
)
.enter(span4.clone())
.exit(span4.clone())
@@ -355,14 +354,14 @@ fn async_fn_with_async_trait_and_fields_expressions_with_generic_parameter() {
.new_span(
span3
.clone()
- .with_field(field::mock("Self").with_value(&std::any::type_name::<TestImpl>())),
+ .with_field(expect::field("Self").with_value(&std::any::type_name::<TestImpl>())),
)
.enter(span3.clone())
.exit(span3.clone())
.enter(span3.clone())
.exit(span3.clone())
.drop_span(span3)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -397,7 +396,7 @@ fn out_of_scope_fields() {
}
}
- let span = span::mock().named("call");
+ let span = expect::span().named("call");
let (subscriber, handle) = subscriber::mock()
.new_span(span.clone())
.enter(span.clone())
@@ -405,7 +404,7 @@ fn out_of_scope_fields() {
.enter(span.clone())
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -430,8 +429,8 @@ fn manual_impl_future() {
}
}
- let span = span::mock().named("manual_impl_future");
- let poll_event = || event::mock().with_fields(field::mock("poll").with_value(&true));
+ let span = expect::span().named("manual_impl_future");
+ let poll_event = || expect::event().with_fields(expect::field("poll").with_value(&true));
let (subscriber, handle) = subscriber::mock()
// await manual_impl_future
@@ -442,7 +441,7 @@ fn manual_impl_future() {
.enter(span.clone())
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -463,8 +462,8 @@ fn manual_box_pin() {
})
}
- let span = span::mock().named("manual_box_pin");
- let poll_event = || event::mock().with_fields(field::mock("poll").with_value(&true));
+ let span = expect::span().named("manual_box_pin");
+ let poll_event = || expect::event().with_fields(expect::field("poll").with_value(&true));
let (subscriber, handle) = subscriber::mock()
// await manual_box_pin
@@ -475,7 +474,7 @@ fn manual_box_pin() {
.enter(span.clone())
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
diff --git a/vendor/tracing-attributes/tests/destructuring.rs b/vendor/tracing-attributes/tests/destructuring.rs
index 09cf1ad53..cc4fecf3f 100644
--- a/vendor/tracing-attributes/tests/destructuring.rs
+++ b/vendor/tracing-attributes/tests/destructuring.rs
@@ -7,21 +7,21 @@ fn destructure_tuples() {
#[instrument]
fn my_fn((arg1, arg2): (usize, usize)) {}
- let span = span::mock().named("my_fn");
+ let span = expect::span().named("my_fn");
let (subscriber, handle) = subscriber::mock()
.new_span(
span.clone().with_field(
- field::mock("arg1")
+ expect::field("arg1")
.with_value(&format_args!("1"))
- .and(field::mock("arg2").with_value(&format_args!("2")))
+ .and(expect::field("arg2").with_value(&format_args!("2")))
.only(),
),
)
.enter(span.clone())
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -36,23 +36,23 @@ fn destructure_nested_tuples() {
#[instrument]
fn my_fn(((arg1, arg2), (arg3, arg4)): ((usize, usize), (usize, usize))) {}
- let span = span::mock().named("my_fn");
+ let span = expect::span().named("my_fn");
let (subscriber, handle) = subscriber::mock()
.new_span(
span.clone().with_field(
- field::mock("arg1")
+ expect::field("arg1")
.with_value(&format_args!("1"))
- .and(field::mock("arg2").with_value(&format_args!("2")))
- .and(field::mock("arg3").with_value(&format_args!("3")))
- .and(field::mock("arg4").with_value(&format_args!("4")))
+ .and(expect::field("arg2").with_value(&format_args!("2")))
+ .and(expect::field("arg3").with_value(&format_args!("3")))
+ .and(expect::field("arg4").with_value(&format_args!("4")))
.only(),
),
)
.enter(span.clone())
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -67,17 +67,17 @@ fn destructure_refs() {
#[instrument]
fn my_fn(&arg1: &usize) {}
- let span = span::mock().named("my_fn");
+ let span = expect::span().named("my_fn");
let (subscriber, handle) = subscriber::mock()
.new_span(
span.clone()
- .with_field(field::mock("arg1").with_value(&1usize).only()),
+ .with_field(expect::field("arg1").with_value(&1usize).only()),
)
.enter(span.clone())
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -94,21 +94,21 @@ fn destructure_tuple_structs() {
#[instrument]
fn my_fn(Foo(arg1, arg2): Foo) {}
- let span = span::mock().named("my_fn");
+ let span = expect::span().named("my_fn");
let (subscriber, handle) = subscriber::mock()
.new_span(
span.clone().with_field(
- field::mock("arg1")
+ expect::field("arg1")
.with_value(&format_args!("1"))
- .and(field::mock("arg2").with_value(&format_args!("2")))
+ .and(expect::field("arg2").with_value(&format_args!("2")))
.only(),
),
)
.enter(span.clone())
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -135,21 +135,21 @@ fn destructure_structs() {
let _ = (arg1, arg2);
}
- let span = span::mock().named("my_fn");
+ let span = expect::span().named("my_fn");
let (subscriber, handle) = subscriber::mock()
.new_span(
span.clone().with_field(
- field::mock("arg1")
+ expect::field("arg1")
.with_value(&format_args!("1"))
- .and(field::mock("arg2").with_value(&format_args!("2")))
+ .and(expect::field("arg2").with_value(&format_args!("2")))
.only(),
),
)
.enter(span.clone())
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -180,23 +180,23 @@ fn destructure_everything() {
let _ = (arg1, arg2, arg3, arg4);
}
- let span = span::mock().named("my_fn");
+ let span = expect::span().named("my_fn");
let (subscriber, handle) = subscriber::mock()
.new_span(
span.clone().with_field(
- field::mock("arg1")
+ expect::field("arg1")
.with_value(&format_args!("1"))
- .and(field::mock("arg2").with_value(&format_args!("2")))
- .and(field::mock("arg3").with_value(&format_args!("3")))
- .and(field::mock("arg4").with_value(&format_args!("4")))
+ .and(expect::field("arg2").with_value(&format_args!("2")))
+ .and(expect::field("arg3").with_value(&format_args!("3")))
+ .and(expect::field("arg4").with_value(&format_args!("4")))
.only(),
),
)
.enter(span.clone())
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
diff --git a/vendor/tracing-attributes/tests/err.rs b/vendor/tracing-attributes/tests/err.rs
index 485dd1196..bee7aa5f4 100644
--- a/vendor/tracing-attributes/tests/err.rs
+++ b/vendor/tracing-attributes/tests/err.rs
@@ -21,20 +21,41 @@ fn err_suspicious_else() -> Result<u8, TryFromIntError> {
#[test]
fn test() {
- let span = span::mock().named("err");
+ let span = expect::span().named("err");
let (subscriber, handle) = subscriber::mock()
.new_span(span.clone())
.enter(span.clone())
- .event(event::mock().at_level(Level::ERROR))
+ .event(expect::event().at_level(Level::ERROR))
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || err().ok());
handle.assert_finished();
}
#[instrument(err)]
+fn err_early_return() -> Result<u8, TryFromIntError> {
+ u8::try_from(1234)?;
+ Ok(5)
+}
+
+#[test]
+fn test_early_return() {
+ let span = expect::span().named("err_early_return");
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(span.clone())
+ .enter(span.clone())
+ .event(expect::event().at_level(Level::ERROR))
+ .exit(span.clone())
+ .drop_span(span)
+ .only()
+ .run_with_handle();
+ with_default(subscriber, || err_early_return().ok());
+ handle.assert_finished();
+}
+
+#[instrument(err)]
async fn err_async(polls: usize) -> Result<u8, TryFromIntError> {
let future = PollN::new_ok(polls);
tracing::trace!(awaiting = true);
@@ -44,23 +65,23 @@ async fn err_async(polls: usize) -> Result<u8, TryFromIntError> {
#[test]
fn test_async() {
- let span = span::mock().named("err_async");
+ let span = expect::span().named("err_async");
let (subscriber, handle) = subscriber::mock()
.new_span(span.clone())
.enter(span.clone())
.event(
- event::mock()
- .with_fields(field::mock("awaiting").with_value(&true))
+ expect::event()
+ .with_fields(expect::field("awaiting").with_value(&true))
.at_level(Level::TRACE),
)
.exit(span.clone())
.enter(span.clone())
- .event(event::mock().at_level(Level::ERROR))
+ .event(expect::event().at_level(Level::ERROR))
.exit(span.clone())
.enter(span.clone())
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
block_on_future(async { err_async(2).await }).ok();
@@ -76,14 +97,14 @@ fn err_mut(out: &mut u8) -> Result<(), TryFromIntError> {
#[test]
fn test_mut() {
- let span = span::mock().named("err_mut");
+ let span = expect::span().named("err_mut");
let (subscriber, handle) = subscriber::mock()
.new_span(span.clone())
.enter(span.clone())
- .event(event::mock().at_level(Level::ERROR))
+ .event(expect::event().at_level(Level::ERROR))
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || err_mut(&mut 0).ok());
handle.assert_finished();
@@ -100,23 +121,23 @@ async fn err_mut_async(polls: usize, out: &mut u8) -> Result<(), TryFromIntError
#[test]
fn test_mut_async() {
- let span = span::mock().named("err_mut_async");
+ let span = expect::span().named("err_mut_async");
let (subscriber, handle) = subscriber::mock()
.new_span(span.clone())
.enter(span.clone())
.event(
- event::mock()
- .with_fields(field::mock("awaiting").with_value(&true))
+ expect::event()
+ .with_fields(expect::field("awaiting").with_value(&true))
.at_level(Level::TRACE),
)
.exit(span.clone())
.enter(span.clone())
- .event(event::mock().at_level(Level::ERROR))
+ .event(expect::event().at_level(Level::ERROR))
.exit(span.clone())
.enter(span.clone())
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
block_on_future(async { err_mut_async(2, &mut 0).await }).ok();
@@ -133,17 +154,17 @@ fn impl_trait_return_type() {
Ok(0..x)
}
- let span = span::mock().named("returns_impl_trait");
+ let span = expect::span().named("returns_impl_trait");
let (subscriber, handle) = subscriber::mock()
.new_span(
span.clone()
- .with_field(field::mock("x").with_value(&10usize).only()),
+ .with_field(expect::field("x").with_value(&10usize).only()),
)
.enter(span.clone())
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -162,13 +183,13 @@ fn err_dbg() -> Result<u8, TryFromIntError> {
#[test]
fn test_err_dbg() {
- let span = span::mock().named("err_dbg");
+ let span = expect::span().named("err_dbg");
let (subscriber, handle) = subscriber::mock()
.new_span(span.clone())
.enter(span.clone())
.event(
- event::mock().at_level(Level::ERROR).with_fields(
- field::mock("error")
+ expect::event().at_level(Level::ERROR).with_fields(
+ expect::field("error")
// use the actual error value that will be emitted, so
// that this test doesn't break if the standard library
// changes the `fmt::Debug` output from the error type
@@ -178,7 +199,7 @@ fn test_err_dbg() {
)
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || err_dbg().ok());
handle.assert_finished();
@@ -186,20 +207,20 @@ fn test_err_dbg() {
#[test]
fn test_err_display_default() {
- let span = span::mock().named("err");
+ let span = expect::span().named("err");
let (subscriber, handle) = subscriber::mock()
.new_span(span.clone())
.enter(span.clone())
.event(
- event::mock().at_level(Level::ERROR).with_fields(
- field::mock("error")
+ expect::event().at_level(Level::ERROR).with_fields(
+ expect::field("error")
// by default, errors will be emitted with their display values
.with_value(&tracing::field::display(u8::try_from(1234).unwrap_err())),
),
)
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || err().ok());
handle.assert_finished();
@@ -208,19 +229,19 @@ fn test_err_display_default() {
#[test]
fn test_err_custom_target() {
let filter: EnvFilter = "my_target=error".parse().expect("filter should parse");
- let span = span::mock().named("error_span").with_target("my_target");
+ let span = expect::span().named("error_span").with_target("my_target");
let (subscriber, handle) = subscriber::mock()
.new_span(span.clone())
.enter(span.clone())
.event(
- event::mock()
+ expect::event()
.at_level(Level::ERROR)
.with_target("my_target"),
)
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
let subscriber = subscriber.with(filter);
@@ -243,14 +264,14 @@ fn err_info() -> Result<u8, TryFromIntError> {
#[test]
fn test_err_info() {
- let span = span::mock().named("err_info");
+ let span = expect::span().named("err_info");
let (subscriber, handle) = subscriber::mock()
.new_span(span.clone())
.enter(span.clone())
- .event(event::mock().at_level(Level::INFO))
+ .event(expect::event().at_level(Level::INFO))
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || err_info().ok());
handle.assert_finished();
@@ -263,13 +284,13 @@ fn err_dbg_info() -> Result<u8, TryFromIntError> {
#[test]
fn test_err_dbg_info() {
- let span = span::mock().named("err_dbg_info");
+ let span = expect::span().named("err_dbg_info");
let (subscriber, handle) = subscriber::mock()
.new_span(span.clone())
.enter(span.clone())
.event(
- event::mock().at_level(Level::INFO).with_fields(
- field::mock("error")
+ expect::event().at_level(Level::INFO).with_fields(
+ expect::field("error")
// use the actual error value that will be emitted, so
// that this test doesn't break if the standard library
// changes the `fmt::Debug` output from the error type
@@ -279,7 +300,7 @@ fn test_err_dbg_info() {
)
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || err_dbg_info().ok());
handle.assert_finished();
@@ -292,14 +313,14 @@ fn err_warn_info() -> Result<u8, TryFromIntError> {
#[test]
fn test_err_warn_info() {
- let span = span::mock().named("err_warn_info").at_level(Level::WARN);
+ let span = expect::span().named("err_warn_info").at_level(Level::WARN);
let (subscriber, handle) = subscriber::mock()
.new_span(span.clone())
.enter(span.clone())
- .event(event::mock().at_level(Level::INFO))
+ .event(expect::event().at_level(Level::INFO))
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || err_warn_info().ok());
handle.assert_finished();
diff --git a/vendor/tracing-attributes/tests/fields.rs b/vendor/tracing-attributes/tests/fields.rs
index c178fbb3d..a3b23d7ac 100644
--- a/vendor/tracing-attributes/tests/fields.rs
+++ b/vendor/tracing-attributes/tests/fields.rs
@@ -1,8 +1,6 @@
use tracing::subscriber::with_default;
use tracing_attributes::instrument;
-use tracing_mock::field::mock;
-use tracing_mock::span::NewSpan;
-use tracing_mock::*;
+use tracing_mock::{expect, span::NewSpan, subscriber};
#[instrument(fields(foo = "bar", dsa = true, num = 1))]
fn fn_no_param() {}
@@ -48,11 +46,11 @@ impl HasField {
#[test]
fn fields() {
- let span = span::mock().with_field(
- mock("foo")
+ let span = expect::span().with_field(
+ expect::field("foo")
.with_value(&"bar")
- .and(mock("dsa").with_value(&true))
- .and(mock("num").with_value(&1))
+ .and(expect::field("dsa").with_value(&true))
+ .and(expect::field("num").with_value(&1))
.only(),
);
run_test(span, || {
@@ -62,10 +60,10 @@ fn fields() {
#[test]
fn expr_field() {
- let span = span::mock().with_field(
- mock("s")
+ let span = expect::span().with_field(
+ expect::field("s")
.with_value(&"hello world")
- .and(mock("len").with_value(&"hello world".len()))
+ .and(expect::field("len").with_value(&"hello world".len()))
.only(),
);
run_test(span, || {
@@ -75,11 +73,11 @@ fn expr_field() {
#[test]
fn two_expr_fields() {
- let span = span::mock().with_field(
- mock("s")
+ let span = expect::span().with_field(
+ expect::field("s")
.with_value(&"hello world")
- .and(mock("s.len").with_value(&"hello world".len()))
- .and(mock("s.is_empty").with_value(&false))
+ .and(expect::field("s.len").with_value(&"hello world".len()))
+ .and(expect::field("s.is_empty").with_value(&false))
.only(),
);
run_test(span, || {
@@ -89,19 +87,19 @@ fn two_expr_fields() {
#[test]
fn clashy_expr_field() {
- let span = span::mock().with_field(
+ let span = expect::span().with_field(
// Overriding the `s` field should record `s` as a `Display` value,
// rather than as a `Debug` value.
- mock("s")
+ expect::field("s")
.with_value(&tracing::field::display("hello world"))
- .and(mock("s.len").with_value(&"hello world".len()))
+ .and(expect::field("s.len").with_value(&"hello world".len()))
.only(),
);
run_test(span, || {
fn_clashy_expr_field("hello world");
});
- let span = span::mock().with_field(mock("s").with_value(&"s").only());
+ let span = expect::span().with_field(expect::field("s").with_value(&"s").only());
run_test(span, || {
fn_clashy_expr_field2("hello world");
});
@@ -109,7 +107,8 @@ fn clashy_expr_field() {
#[test]
fn self_expr_field() {
- let span = span::mock().with_field(mock("my_field").with_value(&"hello world").only());
+ let span =
+ expect::span().with_field(expect::field("my_field").with_value(&"hello world").only());
run_test(span, || {
let has_field = HasField {
my_field: "hello world",
@@ -120,10 +119,10 @@ fn self_expr_field() {
#[test]
fn parameters_with_fields() {
- let span = span::mock().with_field(
- mock("foo")
+ let span = expect::span().with_field(
+ expect::field("foo")
.with_value(&"bar")
- .and(mock("param").with_value(&1u32))
+ .and(expect::field("param").with_value(&1u32))
.only(),
);
run_test(span, || {
@@ -133,7 +132,7 @@ fn parameters_with_fields() {
#[test]
fn empty_field() {
- let span = span::mock().with_field(mock("foo").with_value(&"bar").only());
+ let span = expect::span().with_field(expect::field("foo").with_value(&"bar").only());
run_test(span, || {
fn_empty_field();
});
@@ -141,7 +140,7 @@ fn empty_field() {
#[test]
fn string_field() {
- let span = span::mock().with_field(mock("s").with_value(&"hello world").only());
+ let span = expect::span().with_field(expect::field("s").with_value(&"hello world").only());
run_test(span, || {
fn_string(String::from("hello world"));
});
@@ -150,9 +149,9 @@ fn string_field() {
fn run_test<F: FnOnce() -> T, T>(span: NewSpan, fun: F) {
let (subscriber, handle) = subscriber::mock()
.new_span(span)
- .enter(span::mock())
- .exit(span::mock())
- .done()
+ .enter(expect::span())
+ .exit(expect::span())
+ .only()
.run_with_handle();
with_default(subscriber, fun);
diff --git a/vendor/tracing-attributes/tests/follows_from.rs b/vendor/tracing-attributes/tests/follows_from.rs
index a589409de..6b5526b82 100644
--- a/vendor/tracing-attributes/tests/follows_from.rs
+++ b/vendor/tracing-attributes/tests/follows_from.rs
@@ -13,10 +13,10 @@ fn follows_from_current() {}
#[test]
fn follows_from_sync_test() {
- let cause_a = span::mock().named("cause_a");
- let cause_b = span::mock().named("cause_b");
- let cause_c = span::mock().named("cause_c");
- let consequence = span::mock().named("with_follows_from_sync");
+ let cause_a = expect::span().named("cause_a");
+ let cause_b = expect::span().named("cause_b");
+ let cause_c = expect::span().named("cause_c");
+ let consequence = expect::span().named("with_follows_from_sync");
let (subscriber, handle) = subscriber::mock()
.new_span(cause_a.clone())
@@ -28,7 +28,7 @@ fn follows_from_sync_test() {
.follows_from(consequence.clone(), cause_c)
.enter(consequence.clone())
.exit(consequence)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -44,10 +44,10 @@ fn follows_from_sync_test() {
#[test]
fn follows_from_async_test() {
- let cause_a = span::mock().named("cause_a");
- let cause_b = span::mock().named("cause_b");
- let cause_c = span::mock().named("cause_c");
- let consequence = span::mock().named("with_follows_from_async");
+ let cause_a = expect::span().named("cause_a");
+ let cause_b = expect::span().named("cause_b");
+ let cause_c = expect::span().named("cause_c");
+ let consequence = expect::span().named("with_follows_from_async");
let (subscriber, handle) = subscriber::mock()
.new_span(cause_a.clone())
@@ -61,7 +61,7 @@ fn follows_from_async_test() {
.exit(consequence.clone())
.enter(consequence.clone())
.exit(consequence)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -79,8 +79,8 @@ fn follows_from_async_test() {
#[test]
fn follows_from_current_test() {
- let cause = span::mock().named("cause");
- let consequence = span::mock().named("follows_from_current");
+ let cause = expect::span().named("cause");
+ let consequence = expect::span().named("follows_from_current");
let (subscriber, handle) = subscriber::mock()
.new_span(cause.clone())
@@ -90,7 +90,7 @@ fn follows_from_current_test() {
.enter(consequence.clone())
.exit(consequence)
.exit(cause)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
diff --git a/vendor/tracing-attributes/tests/instrument.rs b/vendor/tracing-attributes/tests/instrument.rs
index b215b8455..f751eebf6 100644
--- a/vendor/tracing-attributes/tests/instrument.rs
+++ b/vendor/tracing-attributes/tests/instrument.rs
@@ -20,11 +20,11 @@ fn override_everything() {
#[instrument(level = Level::DEBUG, target = "my_target")]
fn my_other_fn() {}
- let span = span::mock()
+ let span = expect::span()
.named("my_fn")
.at_level(Level::DEBUG)
.with_target("my_target");
- let span2 = span::mock()
+ let span2 = expect::span()
.named("my_other_fn")
.at_level(Level::DEBUG)
.with_target("my_target");
@@ -37,7 +37,7 @@ fn override_everything() {
.enter(span2.clone())
.exit(span2.clone())
.drop_span(span2)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -53,21 +53,21 @@ fn fields() {
#[instrument(target = "my_target", level = "debug")]
fn my_fn(arg1: usize, arg2: bool) {}
- let span = span::mock()
+ let span = expect::span()
.named("my_fn")
.at_level(Level::DEBUG)
.with_target("my_target");
- let span2 = span::mock()
+ let span2 = expect::span()
.named("my_fn")
.at_level(Level::DEBUG)
.with_target("my_target");
let (subscriber, handle) = subscriber::mock()
.new_span(
span.clone().with_field(
- field::mock("arg1")
+ expect::field("arg1")
.with_value(&2usize)
- .and(field::mock("arg2").with_value(&false))
+ .and(expect::field("arg2").with_value(&false))
.only(),
),
)
@@ -76,16 +76,16 @@ fn fields() {
.drop_span(span)
.new_span(
span2.clone().with_field(
- field::mock("arg1")
+ expect::field("arg1")
.with_value(&3usize)
- .and(field::mock("arg2").with_value(&true))
+ .and(expect::field("arg2").with_value(&true))
.only(),
),
)
.enter(span2.clone())
.exit(span2.clone())
.drop_span(span2)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -106,17 +106,17 @@ fn skip() {
#[instrument(target = "my_target", level = "debug", skip_all)]
fn my_fn2(_arg1: usize, _arg2: UnDebug, _arg3: UnDebug) {}
- let span = span::mock()
+ let span = expect::span()
.named("my_fn")
.at_level(Level::DEBUG)
.with_target("my_target");
- let span2 = span::mock()
+ let span2 = expect::span()
.named("my_fn")
.at_level(Level::DEBUG)
.with_target("my_target");
- let span3 = span::mock()
+ let span3 = expect::span()
.named("my_fn2")
.at_level(Level::DEBUG)
.with_target("my_target");
@@ -124,7 +124,7 @@ fn skip() {
let (subscriber, handle) = subscriber::mock()
.new_span(
span.clone()
- .with_field(field::mock("arg1").with_value(&2usize).only()),
+ .with_field(expect::field("arg1").with_value(&2usize).only()),
)
.enter(span.clone())
.exit(span.clone())
@@ -132,7 +132,7 @@ fn skip() {
.new_span(
span2
.clone()
- .with_field(field::mock("arg1").with_value(&3usize).only()),
+ .with_field(expect::field("arg1").with_value(&3usize).only()),
)
.enter(span2.clone())
.exit(span2.clone())
@@ -141,7 +141,7 @@ fn skip() {
.enter(span3.clone())
.exit(span3.clone())
.drop_span(span3)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -165,20 +165,20 @@ fn generics() {
{
}
- let span = span::mock().named("my_fn");
+ let span = expect::span().named("my_fn");
let (subscriber, handle) = subscriber::mock()
.new_span(
span.clone().with_field(
- field::mock("arg1")
+ expect::field("arg1")
.with_value(&format_args!("Foo"))
- .and(field::mock("arg2").with_value(&format_args!("false"))),
+ .and(expect::field("arg2").with_value(&format_args!("false"))),
),
)
.enter(span.clone())
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -198,20 +198,20 @@ fn methods() {
fn my_fn(&self, arg1: usize) {}
}
- let span = span::mock().named("my_fn");
+ let span = expect::span().named("my_fn");
let (subscriber, handle) = subscriber::mock()
.new_span(
span.clone().with_field(
- field::mock("self")
+ expect::field("self")
.with_value(&format_args!("Foo"))
- .and(field::mock("arg1").with_value(&42usize)),
+ .and(expect::field("arg1").with_value(&42usize)),
),
)
.enter(span.clone())
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -229,17 +229,17 @@ fn impl_trait_return_type() {
0..x
}
- let span = span::mock().named("returns_impl_trait");
+ let span = expect::span().named("returns_impl_trait");
let (subscriber, handle) = subscriber::mock()
.new_span(
span.clone()
- .with_field(field::mock("x").with_value(&10usize).only()),
+ .with_field(expect::field("x").with_value(&10usize).only()),
)
.enter(span.clone())
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
diff --git a/vendor/tracing-attributes/tests/levels.rs b/vendor/tracing-attributes/tests/levels.rs
index 94fc7e85a..ed80dc16a 100644
--- a/vendor/tracing-attributes/tests/levels.rs
+++ b/vendor/tracing-attributes/tests/levels.rs
@@ -20,22 +20,22 @@ fn named_levels() {
#[instrument(level = "eRrOr")]
fn error() {}
let (subscriber, handle) = subscriber::mock()
- .new_span(span::mock().named("trace").at_level(Level::TRACE))
- .enter(span::mock().named("trace").at_level(Level::TRACE))
- .exit(span::mock().named("trace").at_level(Level::TRACE))
- .new_span(span::mock().named("debug").at_level(Level::DEBUG))
- .enter(span::mock().named("debug").at_level(Level::DEBUG))
- .exit(span::mock().named("debug").at_level(Level::DEBUG))
- .new_span(span::mock().named("info").at_level(Level::INFO))
- .enter(span::mock().named("info").at_level(Level::INFO))
- .exit(span::mock().named("info").at_level(Level::INFO))
- .new_span(span::mock().named("warn").at_level(Level::WARN))
- .enter(span::mock().named("warn").at_level(Level::WARN))
- .exit(span::mock().named("warn").at_level(Level::WARN))
- .new_span(span::mock().named("error").at_level(Level::ERROR))
- .enter(span::mock().named("error").at_level(Level::ERROR))
- .exit(span::mock().named("error").at_level(Level::ERROR))
- .done()
+ .new_span(expect::span().named("trace").at_level(Level::TRACE))
+ .enter(expect::span().named("trace").at_level(Level::TRACE))
+ .exit(expect::span().named("trace").at_level(Level::TRACE))
+ .new_span(expect::span().named("debug").at_level(Level::DEBUG))
+ .enter(expect::span().named("debug").at_level(Level::DEBUG))
+ .exit(expect::span().named("debug").at_level(Level::DEBUG))
+ .new_span(expect::span().named("info").at_level(Level::INFO))
+ .enter(expect::span().named("info").at_level(Level::INFO))
+ .exit(expect::span().named("info").at_level(Level::INFO))
+ .new_span(expect::span().named("warn").at_level(Level::WARN))
+ .enter(expect::span().named("warn").at_level(Level::WARN))
+ .exit(expect::span().named("warn").at_level(Level::WARN))
+ .new_span(expect::span().named("error").at_level(Level::ERROR))
+ .enter(expect::span().named("error").at_level(Level::ERROR))
+ .exit(expect::span().named("error").at_level(Level::ERROR))
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -66,22 +66,22 @@ fn numeric_levels() {
#[instrument(level = 5)]
fn error() {}
let (subscriber, handle) = subscriber::mock()
- .new_span(span::mock().named("trace").at_level(Level::TRACE))
- .enter(span::mock().named("trace").at_level(Level::TRACE))
- .exit(span::mock().named("trace").at_level(Level::TRACE))
- .new_span(span::mock().named("debug").at_level(Level::DEBUG))
- .enter(span::mock().named("debug").at_level(Level::DEBUG))
- .exit(span::mock().named("debug").at_level(Level::DEBUG))
- .new_span(span::mock().named("info").at_level(Level::INFO))
- .enter(span::mock().named("info").at_level(Level::INFO))
- .exit(span::mock().named("info").at_level(Level::INFO))
- .new_span(span::mock().named("warn").at_level(Level::WARN))
- .enter(span::mock().named("warn").at_level(Level::WARN))
- .exit(span::mock().named("warn").at_level(Level::WARN))
- .new_span(span::mock().named("error").at_level(Level::ERROR))
- .enter(span::mock().named("error").at_level(Level::ERROR))
- .exit(span::mock().named("error").at_level(Level::ERROR))
- .done()
+ .new_span(expect::span().named("trace").at_level(Level::TRACE))
+ .enter(expect::span().named("trace").at_level(Level::TRACE))
+ .exit(expect::span().named("trace").at_level(Level::TRACE))
+ .new_span(expect::span().named("debug").at_level(Level::DEBUG))
+ .enter(expect::span().named("debug").at_level(Level::DEBUG))
+ .exit(expect::span().named("debug").at_level(Level::DEBUG))
+ .new_span(expect::span().named("info").at_level(Level::INFO))
+ .enter(expect::span().named("info").at_level(Level::INFO))
+ .exit(expect::span().named("info").at_level(Level::INFO))
+ .new_span(expect::span().named("warn").at_level(Level::WARN))
+ .enter(expect::span().named("warn").at_level(Level::WARN))
+ .exit(expect::span().named("warn").at_level(Level::WARN))
+ .new_span(expect::span().named("error").at_level(Level::ERROR))
+ .enter(expect::span().named("error").at_level(Level::ERROR))
+ .exit(expect::span().named("error").at_level(Level::ERROR))
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -112,22 +112,22 @@ fn enum_levels() {
#[instrument(level = Level::ERROR)]
fn error() {}
let (subscriber, handle) = subscriber::mock()
- .new_span(span::mock().named("trace").at_level(Level::TRACE))
- .enter(span::mock().named("trace").at_level(Level::TRACE))
- .exit(span::mock().named("trace").at_level(Level::TRACE))
- .new_span(span::mock().named("debug").at_level(Level::DEBUG))
- .enter(span::mock().named("debug").at_level(Level::DEBUG))
- .exit(span::mock().named("debug").at_level(Level::DEBUG))
- .new_span(span::mock().named("info").at_level(Level::INFO))
- .enter(span::mock().named("info").at_level(Level::INFO))
- .exit(span::mock().named("info").at_level(Level::INFO))
- .new_span(span::mock().named("warn").at_level(Level::WARN))
- .enter(span::mock().named("warn").at_level(Level::WARN))
- .exit(span::mock().named("warn").at_level(Level::WARN))
- .new_span(span::mock().named("error").at_level(Level::ERROR))
- .enter(span::mock().named("error").at_level(Level::ERROR))
- .exit(span::mock().named("error").at_level(Level::ERROR))
- .done()
+ .new_span(expect::span().named("trace").at_level(Level::TRACE))
+ .enter(expect::span().named("trace").at_level(Level::TRACE))
+ .exit(expect::span().named("trace").at_level(Level::TRACE))
+ .new_span(expect::span().named("debug").at_level(Level::DEBUG))
+ .enter(expect::span().named("debug").at_level(Level::DEBUG))
+ .exit(expect::span().named("debug").at_level(Level::DEBUG))
+ .new_span(expect::span().named("info").at_level(Level::INFO))
+ .enter(expect::span().named("info").at_level(Level::INFO))
+ .exit(expect::span().named("info").at_level(Level::INFO))
+ .new_span(expect::span().named("warn").at_level(Level::WARN))
+ .enter(expect::span().named("warn").at_level(Level::WARN))
+ .exit(expect::span().named("warn").at_level(Level::WARN))
+ .new_span(expect::span().named("error").at_level(Level::ERROR))
+ .enter(expect::span().named("error").at_level(Level::ERROR))
+ .exit(expect::span().named("error").at_level(Level::ERROR))
+ .only()
.run_with_handle();
with_default(subscriber, || {
diff --git a/vendor/tracing-attributes/tests/names.rs b/vendor/tracing-attributes/tests/names.rs
index d97dece9a..03e3dbfa4 100644
--- a/vendor/tracing-attributes/tests/names.rs
+++ b/vendor/tracing-attributes/tests/names.rs
@@ -17,10 +17,10 @@ fn custom_name_no_equals() {}
#[test]
fn default_name_test() {
let (subscriber, handle) = subscriber::mock()
- .new_span(span::mock().named("default_name"))
- .enter(span::mock().named("default_name"))
- .exit(span::mock().named("default_name"))
- .done()
+ .new_span(expect::span().named("default_name"))
+ .enter(expect::span().named("default_name"))
+ .exit(expect::span().named("default_name"))
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -33,10 +33,10 @@ fn default_name_test() {
#[test]
fn custom_name_test() {
let (subscriber, handle) = subscriber::mock()
- .new_span(span::mock().named("my_name"))
- .enter(span::mock().named("my_name"))
- .exit(span::mock().named("my_name"))
- .done()
+ .new_span(expect::span().named("my_name"))
+ .enter(expect::span().named("my_name"))
+ .exit(expect::span().named("my_name"))
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -49,10 +49,10 @@ fn custom_name_test() {
#[test]
fn custom_name_no_equals_test() {
let (subscriber, handle) = subscriber::mock()
- .new_span(span::mock().named("my_other_name"))
- .enter(span::mock().named("my_other_name"))
- .exit(span::mock().named("my_other_name"))
- .done()
+ .new_span(expect::span().named("my_other_name"))
+ .enter(expect::span().named("my_other_name"))
+ .exit(expect::span().named("my_other_name"))
+ .only()
.run_with_handle();
with_default(subscriber, || {
diff --git a/vendor/tracing-attributes/tests/parents.rs b/vendor/tracing-attributes/tests/parents.rs
index 7069b98ea..d4559415d 100644
--- a/vendor/tracing-attributes/tests/parents.rs
+++ b/vendor/tracing-attributes/tests/parents.rs
@@ -14,8 +14,8 @@ where
#[test]
fn default_parent_test() {
- let contextual_parent = span::mock().named("contextual_parent");
- let child = span::mock().named("with_default_parent");
+ let contextual_parent = expect::span().named("contextual_parent");
+ let child = expect::span().named("with_default_parent");
let (subscriber, handle) = subscriber::mock()
.new_span(
@@ -42,7 +42,7 @@ fn default_parent_test() {
.enter(child.clone())
.exit(child)
.exit(contextual_parent)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -60,9 +60,9 @@ fn default_parent_test() {
#[test]
fn explicit_parent_test() {
- let contextual_parent = span::mock().named("contextual_parent");
- let explicit_parent = span::mock().named("explicit_parent");
- let child = span::mock().named("with_explicit_parent");
+ let contextual_parent = expect::span().named("contextual_parent");
+ let explicit_parent = expect::span().named("explicit_parent");
+ let child = expect::span().named("with_explicit_parent");
let (subscriber, handle) = subscriber::mock()
.new_span(
@@ -86,7 +86,7 @@ fn explicit_parent_test() {
.enter(child.clone())
.exit(child)
.exit(contextual_parent)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
diff --git a/vendor/tracing-attributes/tests/ret.rs b/vendor/tracing-attributes/tests/ret.rs
index f56c80baa..90bd9e185 100644
--- a/vendor/tracing-attributes/tests/ret.rs
+++ b/vendor/tracing-attributes/tests/ret.rs
@@ -19,18 +19,18 @@ fn ret_with_target() -> i32 {
#[test]
fn test() {
- let span = span::mock().named("ret");
+ let span = expect::span().named("ret");
let (subscriber, handle) = subscriber::mock()
.new_span(span.clone())
.enter(span.clone())
.event(
- event::mock()
- .with_fields(field::mock("return").with_value(&tracing::field::debug(42)))
+ expect::event()
+ .with_fields(expect::field("return").with_value(&tracing::field::debug(42)))
.at_level(Level::INFO),
)
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, ret);
@@ -40,7 +40,7 @@ fn test() {
#[test]
fn test_custom_target() {
let filter: EnvFilter = "my_target=info".parse().expect("filter should parse");
- let span = span::mock()
+ let span = expect::span()
.named("ret_with_target")
.with_target("my_target");
@@ -48,14 +48,14 @@ fn test_custom_target() {
.new_span(span.clone())
.enter(span.clone())
.event(
- event::mock()
- .with_fields(field::mock("return").with_value(&tracing::field::debug(42)))
+ expect::event()
+ .with_fields(expect::field("return").with_value(&tracing::field::debug(42)))
.at_level(Level::INFO)
.with_target("my_target"),
)
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
let subscriber = subscriber.with(filter);
@@ -71,18 +71,18 @@ fn ret_warn() -> i32 {
#[test]
fn test_warn() {
- let span = span::mock().named("ret_warn");
+ let span = expect::span().named("ret_warn");
let (subscriber, handle) = subscriber::mock()
.new_span(span.clone())
.enter(span.clone())
.event(
- event::mock()
- .with_fields(field::mock("return").with_value(&tracing::field::debug(42)))
+ expect::event()
+ .with_fields(expect::field("return").with_value(&tracing::field::debug(42)))
.at_level(Level::WARN),
)
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, ret_warn);
@@ -98,23 +98,23 @@ fn ret_mut(a: &mut i32) -> i32 {
#[test]
fn test_mut() {
- let span = span::mock().named("ret_mut");
+ let span = expect::span().named("ret_mut");
let (subscriber, handle) = subscriber::mock()
.new_span(span.clone())
.enter(span.clone())
.event(
- event::mock()
- .with_fields(field::mock("a").with_value(&tracing::field::display(2)))
+ expect::event()
+ .with_fields(expect::field("a").with_value(&tracing::field::display(2)))
.at_level(Level::INFO),
)
.event(
- event::mock()
- .with_fields(field::mock("return").with_value(&tracing::field::debug(2)))
+ expect::event()
+ .with_fields(expect::field("return").with_value(&tracing::field::debug(2)))
.at_level(Level::INFO),
)
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || ret_mut(&mut 1));
@@ -128,20 +128,20 @@ async fn ret_async() -> i32 {
#[test]
fn test_async() {
- let span = span::mock().named("ret_async");
+ let span = expect::span().named("ret_async");
let (subscriber, handle) = subscriber::mock()
.new_span(span.clone())
.enter(span.clone())
.event(
- event::mock()
- .with_fields(field::mock("return").with_value(&tracing::field::debug(42)))
+ expect::event()
+ .with_fields(expect::field("return").with_value(&tracing::field::debug(42)))
.at_level(Level::INFO),
)
.exit(span.clone())
.enter(span.clone())
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || block_on_future(async { ret_async().await }));
@@ -155,18 +155,18 @@ fn ret_impl_type() -> impl Copy {
#[test]
fn test_impl_type() {
- let span = span::mock().named("ret_impl_type");
+ let span = expect::span().named("ret_impl_type");
let (subscriber, handle) = subscriber::mock()
.new_span(span.clone())
.enter(span.clone())
.event(
- event::mock()
- .with_fields(field::mock("return").with_value(&tracing::field::debug(42)))
+ expect::event()
+ .with_fields(expect::field("return").with_value(&tracing::field::debug(42)))
.at_level(Level::INFO),
)
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, ret_impl_type);
@@ -180,18 +180,18 @@ fn ret_display() -> i32 {
#[test]
fn test_dbg() {
- let span = span::mock().named("ret_display");
+ let span = expect::span().named("ret_display");
let (subscriber, handle) = subscriber::mock()
.new_span(span.clone())
.enter(span.clone())
.event(
- event::mock()
- .with_fields(field::mock("return").with_value(&tracing::field::display(42)))
+ expect::event()
+ .with_fields(expect::field("return").with_value(&tracing::field::display(42)))
.at_level(Level::INFO),
)
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, ret_display);
@@ -205,14 +205,14 @@ fn ret_and_err() -> Result<u8, TryFromIntError> {
#[test]
fn test_ret_and_err() {
- let span = span::mock().named("ret_and_err");
+ let span = expect::span().named("ret_and_err");
let (subscriber, handle) = subscriber::mock()
.new_span(span.clone())
.enter(span.clone())
.event(
- event::mock()
+ expect::event()
.with_fields(
- field::mock("error")
+ expect::field("error")
.with_value(&tracing::field::display(u8::try_from(1234).unwrap_err()))
.only(),
)
@@ -220,7 +220,7 @@ fn test_ret_and_err() {
)
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || ret_and_err().ok());
@@ -234,14 +234,14 @@ fn ret_and_ok() -> Result<u8, TryFromIntError> {
#[test]
fn test_ret_and_ok() {
- let span = span::mock().named("ret_and_ok");
+ let span = expect::span().named("ret_and_ok");
let (subscriber, handle) = subscriber::mock()
.new_span(span.clone())
.enter(span.clone())
.event(
- event::mock()
+ expect::event()
.with_fields(
- field::mock("return")
+ expect::field("return")
.with_value(&tracing::field::debug(u8::try_from(123).unwrap()))
.only(),
)
@@ -249,7 +249,7 @@ fn test_ret_and_ok() {
)
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || ret_and_ok().ok());
@@ -263,18 +263,18 @@ fn ret_warn_info() -> i32 {
#[test]
fn test_warn_info() {
- let span = span::mock().named("ret_warn_info").at_level(Level::WARN);
+ let span = expect::span().named("ret_warn_info").at_level(Level::WARN);
let (subscriber, handle) = subscriber::mock()
.new_span(span.clone())
.enter(span.clone())
.event(
- event::mock()
- .with_fields(field::mock("return").with_value(&tracing::field::debug(42)))
+ expect::event()
+ .with_fields(expect::field("return").with_value(&tracing::field::debug(42)))
.at_level(Level::INFO),
)
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, ret_warn_info);
@@ -288,18 +288,18 @@ fn ret_dbg_warn() -> i32 {
#[test]
fn test_dbg_warn() {
- let span = span::mock().named("ret_dbg_warn").at_level(Level::INFO);
+ let span = expect::span().named("ret_dbg_warn").at_level(Level::INFO);
let (subscriber, handle) = subscriber::mock()
.new_span(span.clone())
.enter(span.clone())
.event(
- event::mock()
- .with_fields(field::mock("return").with_value(&tracing::field::debug(42)))
+ expect::event()
+ .with_fields(expect::field("return").with_value(&tracing::field::debug(42)))
.at_level(Level::WARN),
)
.exit(span.clone())
.drop_span(span)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, ret_dbg_warn);
diff --git a/vendor/tracing-attributes/tests/targets.rs b/vendor/tracing-attributes/tests/targets.rs
index 363f628f3..0e70287d3 100644
--- a/vendor/tracing-attributes/tests/targets.rs
+++ b/vendor/tracing-attributes/tests/targets.rs
@@ -24,36 +24,36 @@ mod my_mod {
fn default_targets() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- span::mock()
+ expect::span()
.named("default_target")
.with_target(module_path!()),
)
.enter(
- span::mock()
+ expect::span()
.named("default_target")
.with_target(module_path!()),
)
.exit(
- span::mock()
+ expect::span()
.named("default_target")
.with_target(module_path!()),
)
.new_span(
- span::mock()
+ expect::span()
.named("default_target")
.with_target(my_mod::MODULE_PATH),
)
.enter(
- span::mock()
+ expect::span()
.named("default_target")
.with_target(my_mod::MODULE_PATH),
)
.exit(
- span::mock()
+ expect::span()
.named("default_target")
.with_target(my_mod::MODULE_PATH),
)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -67,25 +67,37 @@ fn default_targets() {
#[test]
fn custom_targets() {
let (subscriber, handle) = subscriber::mock()
- .new_span(span::mock().named("custom_target").with_target("my_target"))
- .enter(span::mock().named("custom_target").with_target("my_target"))
- .exit(span::mock().named("custom_target").with_target("my_target"))
.new_span(
- span::mock()
+ expect::span()
+ .named("custom_target")
+ .with_target("my_target"),
+ )
+ .enter(
+ expect::span()
+ .named("custom_target")
+ .with_target("my_target"),
+ )
+ .exit(
+ expect::span()
+ .named("custom_target")
+ .with_target("my_target"),
+ )
+ .new_span(
+ expect::span()
.named("custom_target")
.with_target("my_other_target"),
)
.enter(
- span::mock()
+ expect::span()
.named("custom_target")
.with_target("my_other_target"),
)
.exit(
- span::mock()
+ expect::span()
.named("custom_target")
.with_target("my_other_target"),
)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
diff --git a/vendor/tracing-core/.cargo-checksum.json b/vendor/tracing-core/.cargo-checksum.json
index d20a01f63..a44537271 100644
--- a/vendor/tracing-core/.cargo-checksum.json
+++ b/vendor/tracing-core/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"1f044fab25d2edb95969e22142f9426e3749f5fb919689d837b4bd189d4ae96b","Cargo.toml":"9083a9bee87a9b05b524869863e8962b45fd4e4e2a271a24803b649d481c9d04","LICENSE":"898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1","README.md":"0ace2b660151cc4aa04d954daef0b60151c2f797d695dfb0b78d931f497c82ac","src/callsite.rs":"479f3b3809afff20ac2a4652f11ec1adc8dd59bd90c608e4e248de4a43c5a43c","src/dispatcher.rs":"5f1a4f6aeb67544710e4b2f38826cd6ec3924a5fcacf8a483ffd90726abed2ee","src/event.rs":"f2673bf5d266972e567e521c9cd92fb33f28b0c7e010937e3bc2bf9eb483087f","src/field.rs":"c18f60f4268f601f75b35a549ca7f50aed0a7a8752c22effaea30b6e32235760","src/lazy.rs":"318e3558e4446abf26294287167c0788e343044a28072f9217bd985929809087","src/lib.rs":"92744b1b632f57c99e08e6ccd68aa56dc8074586d5c46b3058e602364f5d047a","src/metadata.rs":"319e8a80804c7e927595e73d2139c027b2c4d58887af4a95ab2bb3411e7ab3d1","src/parent.rs":"5d5ad733343280a64a1feb6a008e186c39305ec554f14279012b8d7915821471","src/span.rs":"dcf2135e4ca158c1be45007f0be25426c375a4081f8f3c5a4d7f7382d8a950a4","src/spin/LICENSE":"58545fed1565e42d687aecec6897d35c6d37ccb71479a137c0deb2203e125c79","src/spin/mod.rs":"c458ce5e875acb7fbfb279f23254f4924d7c6d6fee419b740800d2e8087d1524","src/spin/mutex.rs":"4d30ff2b59b18fd7909f016e1abdf9aa0c04aa11d047a46e98cffe1319e32dad","src/spin/once.rs":"3781fd4eae0db04d80c03a039906c99b1e01d1583b29ac0144e6fbbd5a0fef0b","src/stdlib.rs":"698693062b8109cace3ffea02e9c2372b7d5b5d43c0b11cb4800b0e7b1a69971","src/subscriber.rs":"c7b6d52633e479bcad50fc30e1bf596339e575533761d269498cfc79e99020ef","tests/common/mod.rs":"0bbb217baa17df0f96cc1ff57dfa74ccc5a959e7f66b15bb7d25d5f43358a278","tests/dispatch.rs":"d3f000fab43734a854c82a7783142910c5e79f806cbd3f8ec5eded598c59ddb1","tests/global_dispatch.rs":"cdc05d77e448ee8b50bfb930abafa3f19b4c6f922b7bebc7797fa1dbdaa1d398","tests/local_dispatch_before_init.rs":"338846cd519e9a3a6895f958b11bd3f97e4350d08adb50f95b8552113a593b0d","tests/macros.rs":"b1603d888b349c8d103794deceec3b1ae4538b8d3eba805f3f561899e8ad0dd2"},"package":"0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"5c72ced3c4b609b6121b0ca5f980f8292f8b542d3f11c7b97581f23fd6ab7e1b","Cargo.toml":"7ae6601ad9768415a61eba2be6c82e30c71c6d3c76561f230ce6eafa2e66255f","LICENSE":"898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1","README.md":"0ace2b660151cc4aa04d954daef0b60151c2f797d695dfb0b78d931f497c82ac","src/callsite.rs":"83789dd16601faa675e2c75e1bbfe1512c2d4b405b880bf99db2a6f6bbb15363","src/dispatcher.rs":"2a751f9256e8418105d1f7134fd80500f39b920c8a17b02eaf3dcd701d1737ad","src/event.rs":"f2673bf5d266972e567e521c9cd92fb33f28b0c7e010937e3bc2bf9eb483087f","src/field.rs":"0f7ec541d932beae7ee67d0fcb09cfeabacdcb4ee6310a7b20f9fb07a75e091f","src/lazy.rs":"318e3558e4446abf26294287167c0788e343044a28072f9217bd985929809087","src/lib.rs":"d0f56d6d890f721e1d769376f500dc3e80b7ac969330c98049c344fda47a107a","src/metadata.rs":"319e8a80804c7e927595e73d2139c027b2c4d58887af4a95ab2bb3411e7ab3d1","src/parent.rs":"5d5ad733343280a64a1feb6a008e186c39305ec554f14279012b8d7915821471","src/span.rs":"dcf2135e4ca158c1be45007f0be25426c375a4081f8f3c5a4d7f7382d8a950a4","src/spin/LICENSE":"58545fed1565e42d687aecec6897d35c6d37ccb71479a137c0deb2203e125c79","src/spin/mod.rs":"c458ce5e875acb7fbfb279f23254f4924d7c6d6fee419b740800d2e8087d1524","src/spin/mutex.rs":"4d30ff2b59b18fd7909f016e1abdf9aa0c04aa11d047a46e98cffe1319e32dad","src/spin/once.rs":"3781fd4eae0db04d80c03a039906c99b1e01d1583b29ac0144e6fbbd5a0fef0b","src/stdlib.rs":"698693062b8109cace3ffea02e9c2372b7d5b5d43c0b11cb4800b0e7b1a69971","src/subscriber.rs":"c7b6d52633e479bcad50fc30e1bf596339e575533761d269498cfc79e99020ef","tests/common/mod.rs":"0bbb217baa17df0f96cc1ff57dfa74ccc5a959e7f66b15bb7d25d5f43358a278","tests/dispatch.rs":"d3f000fab43734a854c82a7783142910c5e79f806cbd3f8ec5eded598c59ddb1","tests/global_dispatch.rs":"cdc05d77e448ee8b50bfb930abafa3f19b4c6f922b7bebc7797fa1dbdaa1d398","tests/local_dispatch_before_init.rs":"338846cd519e9a3a6895f958b11bd3f97e4350d08adb50f95b8552113a593b0d","tests/macros.rs":"b1603d888b349c8d103794deceec3b1ae4538b8d3eba805f3f561899e8ad0dd2"},"package":"c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"} \ No newline at end of file
diff --git a/vendor/tracing-core/CHANGELOG.md b/vendor/tracing-core/CHANGELOG.md
index 706b410f3..2e92f74fb 100644
--- a/vendor/tracing-core/CHANGELOG.md
+++ b/vendor/tracing-core/CHANGELOG.md
@@ -1,3 +1,18 @@
+# 0.1.32 (October 13, 2023)
+
+### Documented
+
+- Fix typo in `field` docs ([#2611])
+- Remove duplicate wording ([#2674])
+
+### Changed
+
+- Allow `ValueSet`s of any length ([#2508])
+
+[#2611]: https://github.com/tokio-rs/tracing/pull/2611
+[#2674]: https://github.com/tokio-rs/tracing/pull/2674
+[#2508]: https://github.com/tokio-rs/tracing/pull/2508
+
# 0.1.31 (May 11, 2023)
This release of `tracing-core` fixes a bug that caused threads which call
diff --git a/vendor/tracing-core/Cargo.toml b/vendor/tracing-core/Cargo.toml
index 72adbca4f..961b391de 100644
--- a/vendor/tracing-core/Cargo.toml
+++ b/vendor/tracing-core/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2018"
rust-version = "1.56.0"
name = "tracing-core"
-version = "0.1.31"
+version = "0.1.32"
authors = ["Tokio Contributors <team@tokio.rs>"]
description = """
Core primitives for application-level tracing.
diff --git a/vendor/tracing-core/src/callsite.rs b/vendor/tracing-core/src/callsite.rs
index f88713236..62fa8c4af 100644
--- a/vendor/tracing-core/src/callsite.rs
+++ b/vendor/tracing-core/src/callsite.rs
@@ -9,9 +9,7 @@
//! * Storing the span or event's [`Metadata`],
//! * Uniquely [identifying](Identifier) the span or event definition,
//! * Caching the subscriber's [`Interest`][^1] in that span or event, to avoid
-//! re-evaluating filters,
-//! * Storing a [`Registration`] that allows the callsite to be part of a global
-//! list of all callsites in the program.
+//! re-evaluating filters.
//!
//! # Registering Callsites
//!
diff --git a/vendor/tracing-core/src/dispatcher.rs b/vendor/tracing-core/src/dispatcher.rs
index 32632abdc..de02afb79 100644
--- a/vendor/tracing-core/src/dispatcher.rs
+++ b/vendor/tracing-core/src/dispatcher.rs
@@ -518,8 +518,8 @@ impl Dispatch {
}
}
- /// Registers a new callsite with this collector, returning whether or not
- /// the collector is interested in being notified about the callsite.
+ /// Registers a new callsite with this subscriber, returning whether or not
+ /// the subscriber is interested in being notified about the callsite.
///
/// This calls the [`register_callsite`] function on the [`Subscriber`]
/// that this `Dispatch` forwards to.
diff --git a/vendor/tracing-core/src/field.rs b/vendor/tracing-core/src/field.rs
index 04b8e1b29..90c4eaa85 100644
--- a/vendor/tracing-core/src/field.rs
+++ b/vendor/tracing-core/src/field.rs
@@ -1,13 +1,13 @@
//! `Span` and `Event` key-value data.
//!
-//! Spans and events may be annotated with key-value data, referred to as known
-//! as _fields_. These fields consist of a mapping from a key (corresponding to
-//! a `&str` but represented internally as an array index) to a [`Value`].
+//! Spans and events may be annotated with key-value data, known as _fields_.
+//! These fields consist of a mapping from a key (corresponding to a `&str` but
+//! represented internally as an array index) to a [`Value`].
//!
//! # `Value`s and `Subscriber`s
//!
//! `Subscriber`s consume `Value`s as fields attached to [span]s or [`Event`]s.
-//! The set of field keys on a given span or is defined on its [`Metadata`].
+//! The set of field keys on a given span or event is defined on its [`Metadata`].
//! When a span is created, it provides [`Attributes`] to the `Subscriber`'s
//! [`new_span`] method, containing any fields whose values were provided when
//! the span was created; and may call the `Subscriber`'s [`record`] method
@@ -470,6 +470,10 @@ macro_rules! impl_one_value {
impl $crate::sealed::Sealed for $value_ty {}
impl $crate::field::Value for $value_ty {
fn record(&self, key: &$crate::field::Field, visitor: &mut dyn $crate::field::Visit) {
+ // `op` is always a function; the closure is used because
+ // sometimes there isn't a real function corresponding to that
+ // operation. the clippy warning is not that useful here.
+ #[allow(clippy::redundant_closure_call)]
visitor.$record(key, $op(*self))
}
}
@@ -485,6 +489,10 @@ macro_rules! impl_one_value {
impl $crate::sealed::Sealed for ty_to_nonzero!($value_ty) {}
impl $crate::field::Value for ty_to_nonzero!($value_ty) {
fn record(&self, key: &$crate::field::Field, visitor: &mut dyn $crate::field::Visit) {
+ // `op` is always a function; the closure is used because
+ // sometimes there isn't a real function corresponding to that
+ // operation. the clippy warning is not that useful here.
+ #[allow(clippy::redundant_closure_call)]
visitor.$record(key, $op(self.get()))
}
}
@@ -871,9 +879,6 @@ impl FieldSet {
}
/// Returns a new `ValueSet` with entries for this `FieldSet`'s values.
- ///
- /// Note that a `ValueSet` may not be constructed with arrays of over 32
- /// elements.
#[doc(hidden)]
pub fn value_set<'v, V>(&'v self, values: &'v V) -> ValueSet<'v>
where
@@ -1072,28 +1077,10 @@ impl<'a> fmt::Display for ValueSet<'a> {
mod private {
use super::*;
- /// Marker trait implemented by arrays which are of valid length to
- /// construct a `ValueSet`.
- ///
- /// `ValueSet`s may only be constructed from arrays containing 32 or fewer
- /// elements, to ensure the array is small enough to always be allocated on the
- /// stack. This trait is only implemented by arrays of an appropriate length,
- /// ensuring that the correct size arrays are used at compile-time.
+ /// Restrictions on `ValueSet` lengths were removed in #2508 but this type remains for backwards compatibility.
pub trait ValidLen<'a>: Borrow<[(&'a Field, Option<&'a (dyn Value + 'a)>)]> {}
-}
-
-macro_rules! impl_valid_len {
- ( $( $len:tt ),+ ) => {
- $(
- impl<'a> private::ValidLen<'a> for
- [(&'a Field, Option<&'a (dyn Value + 'a)>); $len] {}
- )+
- }
-}
-impl_valid_len! {
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32
+ impl<'a, const N: usize> ValidLen<'a> for [(&'a Field, Option<&'a (dyn Value + 'a)>); N] {}
}
#[cfg(test)]
@@ -1102,8 +1089,9 @@ mod test {
use crate::metadata::{Kind, Level, Metadata};
use crate::stdlib::{borrow::ToOwned, string::String};
- struct TestCallsite1;
- static TEST_CALLSITE_1: TestCallsite1 = TestCallsite1;
+ // Make sure TEST_CALLSITE_* have non-zero size, so they can't be located at the same address.
+ struct TestCallsite1(u8);
+ static TEST_CALLSITE_1: TestCallsite1 = TestCallsite1(0);
static TEST_META_1: Metadata<'static> = metadata! {
name: "field_test1",
target: module_path!(),
@@ -1123,8 +1111,8 @@ mod test {
}
}
- struct TestCallsite2;
- static TEST_CALLSITE_2: TestCallsite2 = TestCallsite2;
+ struct TestCallsite2(u8);
+ static TEST_CALLSITE_2: TestCallsite2 = TestCallsite2(0);
static TEST_META_2: Metadata<'static> = metadata! {
name: "field_test2",
target: module_path!(),
diff --git a/vendor/tracing-core/src/lib.rs b/vendor/tracing-core/src/lib.rs
index f5de4eeba..d43a6b8b0 100644
--- a/vendor/tracing-core/src/lib.rs
+++ b/vendor/tracing-core/src/lib.rs
@@ -243,9 +243,9 @@ macro_rules! metadata {
$name,
$target,
$level,
- Some(file!()),
- Some(line!()),
- Some(module_path!()),
+ ::core::option::Option::Some(file!()),
+ ::core::option::Option::Some(line!()),
+ ::core::option::Option::Some(module_path!()),
$crate::field::FieldSet::new($fields, $crate::identify_callsite!($callsite)),
$kind,
)
diff --git a/vendor/tracing/.cargo-checksum.json b/vendor/tracing/.cargo-checksum.json
index 8bfa395bb..92c7ecfe0 100644
--- a/vendor/tracing/.cargo-checksum.json
+++ b/vendor/tracing/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"dc8a552611986799a0eebb56fd119ea8ae32c9b8da4be9914fe127627ad4f38a","Cargo.toml":"f8d12a05bc7ed5cfef787db206c05cc5ebcd2c165e6e629b613d1a3ff4f138de","LICENSE":"898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1","README.md":"6ff17749109fbe0855220188015846f40d3997bc2631c3163496c183c0bd50ce","benches/baseline.rs":"43a3e31b6c33dba2e6328052301b707b212487b83f0dcffc843061a9c48a2319","benches/dispatch_get_clone.rs":"866239abeb74a82440741c948a4e7e0a44e92e8cc87319ec57e3b057c9e8f5dd","benches/dispatch_get_ref.rs":"dd2803259a6784c256304e676bbce05de233e4c8451ac85863787213343e9be7","benches/empty_span.rs":"9f51cf376414ea751b2f50c357f2435a545d606118286f5b8b89f185e28aad8c","benches/enter_span.rs":"4410ec73d277e7b54e9f306c00ff3b79a150d1832966b7fc29984c8e3ad8d57c","benches/event.rs":"98de3c82ed18abe0a3cbe6eda9a4f9deec2b69bca42c3aac11dea4b608b85a67","benches/shared.rs":"2623311af7d153685064e664a5903d03e7dc3179754c324f3a76f29f060515e6","benches/span_fields.rs":"9166cd43ef2783e5419dd61ea57a02e48e8cc38aa1b357e9b79fa581929b60d8","benches/span_no_fields.rs":"79cc4befacf27d7ce728246087c4f06a6066f913e831d9043caeb7941f0193f6","benches/span_repeated.rs":"e4b3c99a7a9fc15d9042b8db399a56cf647b4eebd26f29d95325bb057b68330b","src/dispatcher.rs":"a8732392ffe56b1178f8fd3d6e6e02d40b51475c38bb4600abd9cd170df1bf6c","src/field.rs":"55c7a2798b9ad0269e7c738c3f15a5d0281bf34ac3a6196a3f0b15801e5278bd","src/instrument.rs":"1fe4de5c13b5ba048e9872d78d1fa4e85655f9f2ed10f79b72b5da881c9b8b45","src/level_filters.rs":"baae8e797897bae9cdd9ec64b8e9a3d71156e9c03261be17b5b18acba034e154","src/lib.rs":"325d0d9487ecd646a7e5e22617f5f291c4112e0e7e359e0033de1677217c5b22","src/macros.rs":"1b38906bcb32cad50b60d350c88f6f4f1fa4d46d99bf50318c44d75219760c42","src/span.rs":"372695b3eda8354a892316826d2598f821fcb835fb18e1e0271767bce730b7ad","src/stdlib.rs":"248514a9bae6106e436358aee44c92abf8e7f79022895c4a25136ddef211d198","src/subscriber.rs":"8933d8766439f929c0a98a0863d20aff37b221314b3825edd9058be511149968","tests/enabled.rs":"1333339aace87ea9d701f2f76a1985820cc513a75013a7ed89669f7a2c635479","tests/event.rs":"7678d1cc8a29ae8b716fbddb7cc4836422732ba3dce109ff511c8bb6100da606","tests/filter_caching_is_lexically_scoped.rs":"5487a37db5fbdf3d57020ab1f01185d928c45d967d99d723ffc434540459d8dc","tests/filters_are_not_reevaluated_for_the_same_span.rs":"251abbc000dddd298448958a1f0e5be71da527ac6c1a368d57837c83a5467329","tests/filters_are_reevaluated_for_different_call_sites.rs":"e0fdd8e930c043674702831b4d96f331e63aba824576bbac50b3f53bb0241cc7","tests/filters_dont_leak.rs":"d594266818a3461886da33bfcc76937d89a433ed6980226fc428706b216c093c","tests/future_send.rs":"3e9c9193219d12e342c18bbedb2f6ec940334202feb3cffba91601d6001b8575","tests/macro_imports.rs":"d5de857162185d4a2384f3cb644bfcf76c7f5c1a3b5f72bfa0d2620ac6e3873c","tests/macros.rs":"fa83397181d73d2cae09c16d9647a63d1e3bad0f2dbc5b3280f69f3d0180c488","tests/macros_incompatible_concat.rs":"5f3bcbb65e4ae39db1cfc2def62fc913c20bab0fb769c8f731504e2615585ee5","tests/macros_redefined_core.rs":"a6eac60522f71fe6c9a040b8b869d596f7eb9e907f5b49f4be4413a40c387676","tests/max_level_hint.rs":"9b366591d947ca0202fa0bdf797e1bb14534d3c896cf8b9674660cd2807c32ef","tests/multiple_max_level_hints.rs":"4d9ef0de9cccc787da8f5e3f6c233ac9db42a2a99cfe5e39997e1f4aa9df0c00","tests/no_subscriber.rs":"2f8f2ada5089d8e2e503394dfe8206598a11895907c53bf940b892f1e6afdd2f","tests/register_callsite_deadlock.rs":"c0b3142543e7a10065c7583a8ee0b6bc978ea4f3979599651101c5a28966e7c8","tests/scoped_clobbers_default.rs":"806480a74c15e4d68bb7576050662b1e53ee765fd583d003f8b349f17ea63a4b","tests/span.rs":"f84ead5b1dad9b91e5cec9d8378ab932a942936374ba928fb381e67fab52cda0","tests/subscriber.rs":"1617c098f4fa6abed174fe062111444c7b67fa0f377d2b342176998e572480e3"},"package":"8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"8f2a5e3f70b90ef91e724b0089f511f6ce95cc6afaf1da30d3d486e30935c520","Cargo.toml":"e8262bfd368f8b9c2f902db368a71da88f446584167392a2611b8eb08e411175","LICENSE":"898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1","README.md":"baed1881843d68618241ccc57e2120993f6eb67c0e1987115b6855f7d328def3","benches/baseline.rs":"43a3e31b6c33dba2e6328052301b707b212487b83f0dcffc843061a9c48a2319","benches/dispatch_get_clone.rs":"866239abeb74a82440741c948a4e7e0a44e92e8cc87319ec57e3b057c9e8f5dd","benches/dispatch_get_ref.rs":"dd2803259a6784c256304e676bbce05de233e4c8451ac85863787213343e9be7","benches/empty_span.rs":"9f51cf376414ea751b2f50c357f2435a545d606118286f5b8b89f185e28aad8c","benches/enter_span.rs":"4410ec73d277e7b54e9f306c00ff3b79a150d1832966b7fc29984c8e3ad8d57c","benches/event.rs":"98de3c82ed18abe0a3cbe6eda9a4f9deec2b69bca42c3aac11dea4b608b85a67","benches/shared.rs":"2623311af7d153685064e664a5903d03e7dc3179754c324f3a76f29f060515e6","benches/span_fields.rs":"9166cd43ef2783e5419dd61ea57a02e48e8cc38aa1b357e9b79fa581929b60d8","benches/span_no_fields.rs":"79cc4befacf27d7ce728246087c4f06a6066f913e831d9043caeb7941f0193f6","benches/span_repeated.rs":"e4b3c99a7a9fc15d9042b8db399a56cf647b4eebd26f29d95325bb057b68330b","src/dispatcher.rs":"a8732392ffe56b1178f8fd3d6e6e02d40b51475c38bb4600abd9cd170df1bf6c","src/field.rs":"fe6c2eb36f92880254a707a465f873ca84510d93f06614b9b36ba20b48bf209d","src/instrument.rs":"034b1c7e46ab2fae331ea215a3d1b1a2211ef6b18d7e7113523e3ef5bf3ca9bb","src/level_filters.rs":"92aca5797a59b2f3c34adfb896260400c2602456eec0fe9c7d49204df37ff699","src/lib.rs":"54a1168ed65d746ce1cc6668a78931131af2afc7e0530391dcffcaa58a9f7971","src/macros.rs":"6ffcbea4b4b402b46e9e074f0808fb755b59ce2bb1c97aa4acdfdb31bb26bf4c","src/span.rs":"4efa37a8fc7604fcc3547eac488122c13bcb28e136f46381082480e0036217a0","src/stdlib.rs":"248514a9bae6106e436358aee44c92abf8e7f79022895c4a25136ddef211d198","src/subscriber.rs":"8933d8766439f929c0a98a0863d20aff37b221314b3825edd9058be511149968","tests/enabled.rs":"a80fd3c70be439b0d1d2509b46a2b9ca31748aab4341f67d0fa721f32c6a65a1","tests/event.rs":"d3c6d688fc1938516770a9fb486252bbe8e95f24b37097a2291e7119b6e78373","tests/filter_caching_is_lexically_scoped.rs":"5487a37db5fbdf3d57020ab1f01185d928c45d967d99d723ffc434540459d8dc","tests/filters_are_not_reevaluated_for_the_same_span.rs":"251abbc000dddd298448958a1f0e5be71da527ac6c1a368d57837c83a5467329","tests/filters_are_reevaluated_for_different_call_sites.rs":"e0fdd8e930c043674702831b4d96f331e63aba824576bbac50b3f53bb0241cc7","tests/filters_dont_leak.rs":"6c41d3209cf2a37a1656a8314399777022ceec556e44f5417f1f5a4cd24eb43a","tests/future_send.rs":"3e9c9193219d12e342c18bbedb2f6ec940334202feb3cffba91601d6001b8575","tests/instrument.rs":"e46cf30db3ff0174e4e0885720b97531c56cbe7d05bb4580e38790f272856b56","tests/macro_imports.rs":"d5de857162185d4a2384f3cb644bfcf76c7f5c1a3b5f72bfa0d2620ac6e3873c","tests/macros.rs":"acb6987a37be2035cde28c8a6b3cecbdbffffafebe6c007712cd145afbd1beb8","tests/macros_incompatible_concat.rs":"5f3bcbb65e4ae39db1cfc2def62fc913c20bab0fb769c8f731504e2615585ee5","tests/max_level_hint.rs":"39576a958df3ea215c49154ff72c3dd14c8b3be3fcdb849e7dd847c8c9fd09e2","tests/multiple_max_level_hints.rs":"28ead97a8424358a0632547dae987ddbddc5bb69cdcd996d20feb49a7f3ddc69","tests/no_subscriber.rs":"ca42d0d4a20eb3b4e0a342b5e0090c7ada8b5a157f3cddb7b5d051238cdc1202","tests/register_callsite_deadlock.rs":"c0b3142543e7a10065c7583a8ee0b6bc978ea4f3979599651101c5a28966e7c8","tests/scoped_clobbers_default.rs":"5fd48ff207df64b0e2ee443de75da0d8bd3b0817c6d9b003b0b00157ec244d7b","tests/span.rs":"2a5a8c666c8a2b51a1a1222e6046a1067690f039d15ef8b56d0e83bffa76f78d","tests/subscriber.rs":"ed3c02e8a75c6e4fc187a024fde6319e6d1ea95c993eda3fd9d559fd41fe7cce"},"package":"c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"} \ No newline at end of file
diff --git a/vendor/tracing/CHANGELOG.md b/vendor/tracing/CHANGELOG.md
index 978e0ca55..db1668b16 100644
--- a/vendor/tracing/CHANGELOG.md
+++ b/vendor/tracing/CHANGELOG.md
@@ -1,3 +1,138 @@
+# 0.1.40
+
+This release fixes a potential stack use-after-free in the
+`Instrument::into_inner` method. Only uses of this method are affected by this
+bug.
+
+### Fixed
+
+- Use `mem::ManuallyDrop` instead of `mem::forget` in `Instrument::into_inner`
+ ([#2765])
+
+[#2765]: https://github.com/tokio-rs/tracing/pull/2765
+
+Thanks to @cramertj and @manishearth for finding and fixing this issue!
+
+# 0.1.39 (October 12, 2023)
+
+This release adds several additional features to the `tracing` macros. In
+addition, it updates the `tracing-core` dependency to [v0.1.32][core-0.1.32] and
+the `tracing-attributes` dependency to [v0.1.27][attrs-0.1.27].
+
+### Added
+
+- Allow constant field names in macros ([#2617])
+- Allow setting event names in macros ([#2699])
+- **core**: Allow `ValueSet`s of any length ([#2508])
+
+### Changed
+
+- `tracing-attributes`: updated to [0.1.27][attrs-0.1.27]
+- `tracing-core`: updated to [0.1.32][core-0.1.32]
+- **attributes**: Bump minimum version of proc-macro2 to 1.0.60 ([#2732])
+- **attributes**: Generate less dead code for async block return type hint ([#2709])
+
+### Fixed
+
+- Use fully qualified names in macros for items exported from std prelude
+ ([#2621], [#2757])
+- **attributes**: Allow [`clippy::let_with_type_underscore`] in macro-generated
+ code ([#2609])
+- **attributes**: Allow `unknown_lints` in macro-generated code ([#2626])
+- **attributes**: Fix a compilation error in `#[instrument]` when the `"log"`
+ feature is enabled ([#2599])
+
+### Documented
+
+- Add `axum-insights` to relevant crates. ([#2713])
+- Fix link to RAI pattern crate documentation ([#2612])
+- Fix docs typos and warnings ([#2581])
+- Add `clippy-tracing` to related crates ([#2628])
+- Add `tracing-cloudwatch` to related crates ([#2667])
+- Fix deadlink to `tracing-etw` repo ([#2602])
+
+[#2617]: https://github.com/tokio-rs/tracing/pull/2617
+[#2699]: https://github.com/tokio-rs/tracing/pull/2699
+[#2508]: https://github.com/tokio-rs/tracing/pull/2508
+[#2621]: https://github.com/tokio-rs/tracing/pull/2621
+[#2713]: https://github.com/tokio-rs/tracing/pull/2713
+[#2581]: https://github.com/tokio-rs/tracing/pull/2581
+[#2628]: https://github.com/tokio-rs/tracing/pull/2628
+[#2667]: https://github.com/tokio-rs/tracing/pull/2667
+[#2602]: https://github.com/tokio-rs/tracing/pull/2602
+[#2626]: https://github.com/tokio-rs/tracing/pull/2626
+[#2757]: https://github.com/tokio-rs/tracing/pull/2757
+[#2732]: https://github.com/tokio-rs/tracing/pull/2732
+[#2709]: https://github.com/tokio-rs/tracing/pull/2709
+[#2599]: https://github.com/tokio-rs/tracing/pull/2599
+[`let_with_type_underscore`]: http://rust-lang.github.io/rust-clippy/rust-1.70.0/index.html#let_with_type_underscore
+[attrs-0.1.27]:
+ https://github.com/tokio-rs/tracing/releases/tag/tracing-attributes-0.1.27
+[core-0.1.32]:
+ https://github.com/tokio-rs/tracing/releases/tag/tracing-core-0.1.32
+
+# 0.1.38 (April 25th, 2023)
+
+This `tracing` release changes the `Drop` implementation for `Instrumented`
+`Future`s so that the attached `Span` is entered when dropping the `Future`. This
+means that events emitted by the `Future`'s `Drop` implementation will now be
+recorded within its `Span`. It also adds `#[inline]` hints to methods called in
+the `event!` macro's expansion, for an improvement in both binary size and
+performance.
+
+Additionally, this release updates the `tracing-attributes` dependency to
+[v0.1.24][attrs-0.1.24], which updates the [`syn`] dependency to v2.x.x.
+`tracing-attributes` v0.1.24 also includes improvements to the `#[instrument]`
+macro; see [the `tracing-attributes` 0.1.24 release notes][attrs-0.1.24] for
+details.
+
+### Added
+
+- `Instrumented` futures will now enter the attached `Span` in their `Drop`
+ implementation, allowing events emitted when dropping the future to occur
+ within the span ([#2562])
+- `#[inline]` attributes for methods called by the `event!` macros, making
+ generated code smaller ([#2555])
+- **attributes**: `level` argument to `#[instrument(err)]` and
+ `#[instrument(ret)]` to override the level of
+ the generated return value event ([#2335])
+- **attributes**: Improved compiler error message when `#[instrument]` is added to a `const fn`
+ ([#2418])
+
+### Changed
+
+- `tracing-attributes`: updated to [0.1.24][attrs-0.1.24]
+- Removed unneeded `cfg-if` dependency ([#2553])
+- **attributes**: Updated [`syn`] dependency to 2.0 ([#2516])
+
+### Fixed
+
+- **attributes**: Fix `clippy::unreachable` warnings in `#[instrument]`-generated code ([#2356])
+- **attributes**: Removed unused "visit" feature flag from `syn` dependency ([#2530])
+
+### Documented
+
+- **attributes**: Documented default level for `#[instrument(err)]` ([#2433])
+- **attributes**: Improved documentation for levels in `#[instrument]` ([#2350])
+
+Thanks to @nitnelave, @jsgf, @Abhicodes-crypto, @LukeMathWalker, @andrewpollack,
+@quad, @klensy, @davidpdrsn, @dbidwell94, @ldm0, @NobodyXu, @ilsv, and @daxpedda
+for contributing to this release!
+
+[`syn`]: https://crates.io/crates/syn
+[attrs-0.1.24]:
+ https://github.com/tokio-rs/tracing/releases/tag/tracing-attributes-0.1.24
+[#2565]: https://github.com/tokio-rs/tracing/pull/2565
+[#2555]: https://github.com/tokio-rs/tracing/pull/2555
+[#2553]: https://github.com/tokio-rs/tracing/pull/2553
+[#2335]: https://github.com/tokio-rs/tracing/pull/2335
+[#2418]: https://github.com/tokio-rs/tracing/pull/2418
+[#2516]: https://github.com/tokio-rs/tracing/pull/2516
+[#2356]: https://github.com/tokio-rs/tracing/pull/2356
+[#2530]: https://github.com/tokio-rs/tracing/pull/2530
+[#2433]: https://github.com/tokio-rs/tracing/pull/2433
+[#2350]: https://github.com/tokio-rs/tracing/pull/2350
+
# 0.1.37 (October 6, 2022)
This release of `tracing` incorporates changes from `tracing-core`
diff --git a/vendor/tracing/Cargo.toml b/vendor/tracing/Cargo.toml
index 90f084d8e..1143cd682 100644
--- a/vendor/tracing/Cargo.toml
+++ b/vendor/tracing/Cargo.toml
@@ -11,9 +11,9 @@
[package]
edition = "2018"
-rust-version = "1.49.0"
+rust-version = "1.56.0"
name = "tracing"
-version = "0.1.37"
+version = "0.1.40"
authors = [
"Eliza Weisman <eliza@buoyant.io>",
"Tokio Contributors <team@tokio.rs>",
@@ -40,13 +40,13 @@ repository = "https://github.com/tokio-rs/tracing"
[package.metadata.docs.rs]
all-features = true
-rustdoc-args = [
- "--cfg",
- "docsrs",
+rustc-args = [
"--cfg",
"tracing_unstable",
]
-rustc-args = [
+rustdoc-args = [
+ "--cfg",
+ "docsrs",
"--cfg",
"tracing_unstable",
]
@@ -87,9 +87,6 @@ harness = false
name = "span_repeated"
harness = false
-[dependencies.cfg-if]
-version = "1.0.0"
-
[dependencies.log]
version = "0.4.17"
optional = true
@@ -98,16 +95,20 @@ optional = true
version = "0.2.9"
[dependencies.tracing-attributes]
-version = "0.1.23"
+version = "0.1.27"
optional = true
[dependencies.tracing-core]
-version = "0.1.30"
+version = "0.1.32"
default-features = false
[dev-dependencies.criterion]
version = "0.3.6"
-default-features = false
+default_features = false
+
+[dev-dependencies.futures]
+version = "0.3.21"
+default_features = false
[dev-dependencies.log]
version = "0.4.17"
diff --git a/vendor/tracing/README.md b/vendor/tracing/README.md
index 694734577..a42636f33 100644
--- a/vendor/tracing/README.md
+++ b/vendor/tracing/README.md
@@ -47,7 +47,7 @@ data as well as textual messages.
The `tracing` crate provides the APIs necessary for instrumenting libraries
and applications to emit trace data.
-*Compiler support: [requires `rustc` 1.49+][msrv]*
+*Compiler support: [requires `rustc` 1.56+][msrv]*
[msrv]: #supported-rust-versions
@@ -98,7 +98,7 @@ fn main() {
```toml
[dependencies]
tracing = "0.1"
-tracing-subscriber = "0.2.0"
+tracing-subscriber = "0.3.0"
```
This subscriber will be used as the default in all threads for the remainder of the duration
@@ -250,7 +250,7 @@ my_future
is as long as the future's.
The second, and preferred, option is through the
-[`#[instrument]`](https://docs.rs/tracing/0.1.37/tracing/attr.instrument.html)
+[`#[instrument]`](https://docs.rs/tracing/0.1.38/tracing/attr.instrument.html)
attribute:
```rust
@@ -297,7 +297,7 @@ span.in_scope(|| {
// Dropping the span will close it, indicating that it has ended.
```
-The [`#[instrument]`](https://docs.rs/tracing/0.1.37/tracing/attr.instrument.html) attribute macro
+The [`#[instrument]`](https://docs.rs/tracing/0.1.38/tracing/attr.instrument.html) attribute macro
can reduce some of this boilerplate:
```rust
@@ -379,6 +379,7 @@ maintained by the `tokio` project. These include:
- [`tracing-distributed`] Provides a generic implementation of a layer that reports traces spanning multiple machines to some backend.
- [`tracing-actix`] provides `tracing` integration for the `actix` actor
framework.
+- [`axum-insights`] provides `tracing` integration and Application insights export for the `axum` web framework.
- [`tracing-gelf`] implements a subscriber for exporting traces in Greylog
GELF format.
- [`tracing-coz`] provides integration with the [coz] causal profiler
@@ -407,6 +408,7 @@ please let us know! We'd love to add your project to the list!
[`tracing-distributed`]: https://crates.io/crates/tracing-distributed
[honeycomb.io]: https://www.honeycomb.io/
[`tracing-actix`]: https://crates.io/crates/tracing-actix
+[`axum-insights`]: https://crates.io/crates/axum-insights
[`tracing-gelf`]: https://crates.io/crates/tracing-gelf
[`tracing-coz`]: https://crates.io/crates/tracing-coz
[coz]: https://github.com/plasma-umass/coz
@@ -443,14 +445,14 @@ undergoing active development. They may be less stable than `tracing` and
## Supported Rust Versions
Tracing is built against the latest stable release. The minimum supported
-version is 1.49. The current Tracing version is not guaranteed to build on Rust
+version is 1.56. The current Tracing version is not guaranteed to build on Rust
versions earlier than the minimum supported version.
Tracing follows the same compiler support policies as the rest of the Tokio
project. The current stable Rust compiler and the three most recent minor
versions before it will always be supported. For example, if the current stable
-compiler version is 1.45, the minimum supported version will not be increased
-past 1.42, three minor versions prior. Increasing the minimum supported compiler
+compiler version is 1.69, the minimum supported version will not be increased
+past 1.66, three minor versions prior. Increasing the minimum supported compiler
version is not considered a semver breaking change as long as doing so complies
with this policy.
diff --git a/vendor/tracing/src/field.rs b/vendor/tracing/src/field.rs
index b3f9fbdfc..ea8e373df 100644
--- a/vendor/tracing/src/field.rs
+++ b/vendor/tracing/src/field.rs
@@ -1,13 +1,13 @@
//! `Span` and `Event` key-value data.
//!
-//! Spans and events may be annotated with key-value data, referred to as known
-//! as _fields_. These fields consist of a mapping from a key (corresponding to
+//! Spans and events may be annotated with key-value data, referred to as _fields_.
+//! These fields consist of a mapping from a key (corresponding to
//! a `&str` but represented internally as an array index) to a [`Value`].
//!
//! # `Value`s and `Subscriber`s
//!
//! `Subscriber`s consume `Value`s as fields attached to [span]s or [`Event`]s.
-//! The set of field keys on a given span or is defined on its [`Metadata`].
+//! The set of field keys on a given span or event is defined on its [`Metadata`].
//! When a span is created, it provides [`Attributes`] to the `Subscriber`'s
//! [`new_span`] method, containing any fields whose values were provided when
//! the span was created; and may call the `Subscriber`'s [`record`] method
diff --git a/vendor/tracing/src/instrument.rs b/vendor/tracing/src/instrument.rs
index 46e5f579c..87c74016b 100644
--- a/vendor/tracing/src/instrument.rs
+++ b/vendor/tracing/src/instrument.rs
@@ -1,10 +1,14 @@
-use crate::stdlib::pin::Pin;
-use crate::stdlib::task::{Context, Poll};
-use crate::stdlib::{future::Future, marker::Sized};
use crate::{
dispatcher::{self, Dispatch},
span::Span,
};
+use core::{
+ future::Future,
+ marker::Sized,
+ mem::ManuallyDrop,
+ pin::Pin,
+ task::{Context, Poll},
+};
use pin_project_lite::pin_project;
/// Attaches spans to a [`std::future::Future`].
@@ -18,7 +22,7 @@ pub trait Instrument: Sized {
/// `Instrumented` wrapper.
///
/// The attached [`Span`] will be [entered] every time the instrumented
- /// [`Future`] is polled.
+ /// [`Future`] is polled or [`Drop`]ped.
///
/// # Examples
///
@@ -80,14 +84,17 @@ pub trait Instrument: Sized {
/// [disabled]: super::Span::is_disabled()
/// [`Future`]: std::future::Future
fn instrument(self, span: Span) -> Instrumented<Self> {
- Instrumented { inner: self, span }
+ Instrumented {
+ inner: ManuallyDrop::new(self),
+ span,
+ }
}
/// Instruments this type with the [current] [`Span`], returning an
/// `Instrumented` wrapper.
///
/// The attached [`Span`] will be [entered] every time the instrumented
- /// [`Future`] is polled.
+ /// [`Future`] is polled or [`Drop`]ped.
///
/// This can be used to propagate the current span when spawning a new future.
///
@@ -252,13 +259,55 @@ pin_project! {
///
/// [`Future`]: std::future::Future
/// [`Span`]: crate::Span
+ #[project = InstrumentedProj]
+ #[project_ref = InstrumentedProjRef]
#[derive(Debug, Clone)]
#[must_use = "futures do nothing unless you `.await` or poll them"]
pub struct Instrumented<T> {
+ // `ManuallyDrop` is used here to to enter instrument `Drop` by entering
+ // `Span` and executing `ManuallyDrop::drop`.
#[pin]
- inner: T,
+ inner: ManuallyDrop<T>,
span: Span,
}
+
+ impl<T> PinnedDrop for Instrumented<T> {
+ fn drop(this: Pin<&mut Self>) {
+ let this = this.project();
+ let _enter = this.span.enter();
+ // SAFETY: 1. `Pin::get_unchecked_mut()` is safe, because this isn't
+ // different from wrapping `T` in `Option` and calling
+ // `Pin::set(&mut this.inner, None)`, except avoiding
+ // additional memory overhead.
+ // 2. `ManuallyDrop::drop()` is safe, because
+ // `PinnedDrop::drop()` is guaranteed to be called only
+ // once.
+ unsafe { ManuallyDrop::drop(this.inner.get_unchecked_mut()) }
+ }
+ }
+}
+
+impl<'a, T> InstrumentedProj<'a, T> {
+ /// Get a mutable reference to the [`Span`] a pinned mutable reference to
+ /// the wrapped type.
+ fn span_and_inner_pin_mut(self) -> (&'a mut Span, Pin<&'a mut T>) {
+ // SAFETY: As long as `ManuallyDrop<T>` does not move, `T` won't move
+ // and `inner` is valid, because `ManuallyDrop::drop` is called
+ // only inside `Drop` of the `Instrumented`.
+ let inner = unsafe { self.inner.map_unchecked_mut(|v| &mut **v) };
+ (self.span, inner)
+ }
+}
+
+impl<'a, T> InstrumentedProjRef<'a, T> {
+ /// Get a reference to the [`Span`] a pinned reference to the wrapped type.
+ fn span_and_inner_pin_ref(self) -> (&'a Span, Pin<&'a T>) {
+ // SAFETY: As long as `ManuallyDrop<T>` does not move, `T` won't move
+ // and `inner` is valid, because `ManuallyDrop::drop` is called
+ // only inside `Drop` of the `Instrumented`.
+ let inner = unsafe { self.inner.map_unchecked(|v| &**v) };
+ (self.span, inner)
+ }
}
// === impl Instrumented ===
@@ -267,9 +316,9 @@ impl<T: Future> Future for Instrumented<T> {
type Output = T::Output;
fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
- let this = self.project();
- let _enter = this.span.enter();
- this.inner.poll(cx)
+ let (span, inner) = self.project().span_and_inner_pin_mut();
+ let _enter = span.enter();
+ inner.poll(cx)
}
}
@@ -298,19 +347,29 @@ impl<T> Instrumented<T> {
/// Get a pinned reference to the wrapped type.
pub fn inner_pin_ref(self: Pin<&Self>) -> Pin<&T> {
- self.project_ref().inner
+ self.project_ref().span_and_inner_pin_ref().1
}
/// Get a pinned mutable reference to the wrapped type.
pub fn inner_pin_mut(self: Pin<&mut Self>) -> Pin<&mut T> {
- self.project().inner
+ self.project().span_and_inner_pin_mut().1
}
/// Consumes the `Instrumented`, returning the wrapped type.
///
/// Note that this drops the span.
pub fn into_inner(self) -> T {
- self.inner
+ // To manually destructure `Instrumented` without `Drop`, we
+ // move it into a ManuallyDrop and use pointers to its fields
+ let this = ManuallyDrop::new(self);
+ let span: *const Span = &this.span;
+ let inner: *const ManuallyDrop<T> = &this.inner;
+ // SAFETY: Those pointers are valid for reads, because `Drop` didn't
+ // run, and properly aligned, because `Instrumented` isn't
+ // `#[repr(packed)]`.
+ let _span = unsafe { span.read() };
+ let inner = unsafe { inner.read() };
+ ManuallyDrop::into_inner(inner)
}
}
diff --git a/vendor/tracing/src/level_filters.rs b/vendor/tracing/src/level_filters.rs
index 44f5e5f57..4e56ada2c 100644
--- a/vendor/tracing/src/level_filters.rs
+++ b/vendor/tracing/src/level_filters.rs
@@ -62,33 +62,37 @@ pub use tracing_core::{metadata::ParseLevelFilterError, LevelFilter};
/// `Span` constructors should compare the level against this value to
/// determine if those spans or events are enabled.
///
-/// [module-level documentation]: super#compile-time-filters
-pub const STATIC_MAX_LEVEL: LevelFilter = MAX_LEVEL;
+/// [module-level documentation]: self#compile-time-filters
+pub const STATIC_MAX_LEVEL: LevelFilter = get_max_level_inner();
-cfg_if::cfg_if! {
- if #[cfg(all(not(debug_assertions), feature = "release_max_level_off"))] {
- const MAX_LEVEL: LevelFilter = LevelFilter::OFF;
- } else if #[cfg(all(not(debug_assertions), feature = "release_max_level_error"))] {
- const MAX_LEVEL: LevelFilter = LevelFilter::ERROR;
- } else if #[cfg(all(not(debug_assertions), feature = "release_max_level_warn"))] {
- const MAX_LEVEL: LevelFilter = LevelFilter::WARN;
- } else if #[cfg(all(not(debug_assertions), feature = "release_max_level_info"))] {
- const MAX_LEVEL: LevelFilter = LevelFilter::INFO;
- } else if #[cfg(all(not(debug_assertions), feature = "release_max_level_debug"))] {
- const MAX_LEVEL: LevelFilter = LevelFilter::DEBUG;
- } else if #[cfg(all(not(debug_assertions), feature = "release_max_level_trace"))] {
- const MAX_LEVEL: LevelFilter = LevelFilter::TRACE;
- } else if #[cfg(feature = "max_level_off")] {
- const MAX_LEVEL: LevelFilter = LevelFilter::OFF;
- } else if #[cfg(feature = "max_level_error")] {
- const MAX_LEVEL: LevelFilter = LevelFilter::ERROR;
- } else if #[cfg(feature = "max_level_warn")] {
- const MAX_LEVEL: LevelFilter = LevelFilter::WARN;
- } else if #[cfg(feature = "max_level_info")] {
- const MAX_LEVEL: LevelFilter = LevelFilter::INFO;
- } else if #[cfg(feature = "max_level_debug")] {
- const MAX_LEVEL: LevelFilter = LevelFilter::DEBUG;
+const fn get_max_level_inner() -> LevelFilter {
+ if cfg!(not(debug_assertions)) {
+ if cfg!(feature = "release_max_level_off") {
+ LevelFilter::OFF
+ } else if cfg!(feature = "release_max_level_error") {
+ LevelFilter::ERROR
+ } else if cfg!(feature = "release_max_level_warn") {
+ LevelFilter::WARN
+ } else if cfg!(feature = "release_max_level_info") {
+ LevelFilter::INFO
+ } else if cfg!(feature = "release_max_level_debug") {
+ LevelFilter::DEBUG
+ } else {
+ // Same as branch cfg!(feature = "release_max_level_trace")
+ LevelFilter::TRACE
+ }
+ } else if cfg!(feature = "max_level_off") {
+ LevelFilter::OFF
+ } else if cfg!(feature = "max_level_error") {
+ LevelFilter::ERROR
+ } else if cfg!(feature = "max_level_warn") {
+ LevelFilter::WARN
+ } else if cfg!(feature = "max_level_info") {
+ LevelFilter::INFO
+ } else if cfg!(feature = "max_level_debug") {
+ LevelFilter::DEBUG
} else {
- const MAX_LEVEL: LevelFilter = LevelFilter::TRACE;
+ // Same as branch cfg!(feature = "max_level_trace")
+ LevelFilter::TRACE
}
}
diff --git a/vendor/tracing/src/lib.rs b/vendor/tracing/src/lib.rs
index 342e04a82..258cbe590 100644
--- a/vendor/tracing/src/lib.rs
+++ b/vendor/tracing/src/lib.rs
@@ -19,7 +19,7 @@
//! The `tracing` crate provides the APIs necessary for instrumenting libraries
//! and applications to emit trace data.
//!
-//! *Compiler support: [requires `rustc` 1.49+][msrv]*
+//! *Compiler support: [requires `rustc` 1.56+][msrv]*
//!
//! [msrv]: #supported-rust-versions
//! # Core Concepts
@@ -192,7 +192,7 @@
//!
//! You can find more examples showing how to use this crate [here][examples].
//!
-//! [RAII]: https://github.com/rust-unofficial/patterns/blob/master/patterns/behavioural/RAII.md
+//! [RAII]: https://github.com/rust-unofficial/patterns/blob/main/src/patterns/behavioural/RAII.md
//! [examples]: https://github.com/tokio-rs/tracing/tree/master/examples
//!
//! ### Events
@@ -214,7 +214,7 @@
//! ### Configuring Attributes
//!
//! Both macros require a [`Level`] specifying the verbosity of the span or
-//! event. Optionally, the [target] and [parent span] may be overridden. If the
+//! event. Optionally, the, [target] and [parent span] may be overridden. If the
//! target and parent span are not overridden, they will default to the
//! module path where the macro was invoked and the current span (as determined
//! by the subscriber), respectively.
@@ -237,7 +237,16 @@
//! ```
//!
//! The span macros also take a string literal after the level, to set the name
-//! of the span.
+//! of the span (as above). In the case of the event macros, the name of the event can
+//! be overridden (the default is `event file:line`) using the `name:` specifier.
+//!
+//! ```
+//! # use tracing::{span, event, Level};
+//! # fn main() {
+//! span!(Level::TRACE, "my span");
+//! event!(name: "some_info", Level::INFO, "something has happened!");
+//! # }
+//! ```
//!
//! ### Recording Fields
//!
@@ -310,6 +319,19 @@
//! # }
//!```
//!
+//! Constant expressions can also be used as field names. Constants
+//! must be enclosed in curly braces (`{}`) to indicate that the *value*
+//! of the constant is to be used as the field name, rather than the
+//! constant's name. For example:
+//! ```
+//! # use tracing::{span, Level};
+//! # fn main() {
+//! const RESOURCE_NAME: &str = "foo";
+//! // this span will have the field `foo = "some_id"`
+//! span!(Level::TRACE, "get", { RESOURCE_NAME } = "some_id");
+//! # }
+//!```
+//!
//! The `?` sigil is shorthand that specifies a field should be recorded using
//! its [`fmt::Debug`] implementation:
//! ```
@@ -386,22 +408,6 @@
//! span.record("parting", &"goodbye world!");
//! ```
//!
-//! Note that a span may have up to 32 fields. The following will not compile:
-//!
-//! ```rust,compile_fail
-//! # use tracing::Level;
-//! # fn main() {
-//! let bad_span = span!(
-//! Level::TRACE,
-//! "too many fields!",
-//! a = 1, b = 2, c = 3, d = 4, e = 5, f = 6, g = 7, h = 8, i = 9,
-//! j = 10, k = 11, l = 12, m = 13, n = 14, o = 15, p = 16, q = 17,
-//! r = 18, s = 19, t = 20, u = 21, v = 22, w = 23, x = 24, y = 25,
-//! z = 26, aa = 27, bb = 28, cc = 29, dd = 30, ee = 31, ff = 32, gg = 33
-//! );
-//! # }
-//! ```
-//!
//! Finally, events may also include human-readable messages, in the form of a
//! [format string][fmt] and (optional) arguments, **after** the event's
//! key-value fields. If a format string and arguments are provided,
@@ -719,6 +725,7 @@
//! - [`tracing-actix-web`] provides `tracing` integration for the `actix-web` web framework.
//! - [`tracing-actix`] provides `tracing` integration for the `actix` actor
//! framework.
+//! - [`axum-insights`] provides `tracing` integration and Application insights export for the `axum` web framework.
//! - [`tracing-gelf`] implements a subscriber for exporting traces in Greylog
//! GELF format.
//! - [`tracing-coz`] provides integration with the [coz] causal profiler
@@ -747,6 +754,8 @@
//! - [`tracing-loki`] provides a layer for shipping logs to [Grafana Loki].
//! - [`tracing-logfmt`] provides a layer that formats events and spans into the logfmt format.
//! - [`reqwest-tracing`] provides a middleware to trace [`reqwest`] HTTP requests.
+//! - [`tracing-cloudwatch`] provides a layer that sends events to AWS CloudWatch Logs.
+//! - [`clippy-tracing`] provides a tool to add, remove and check for `tracing::instrument`.
//!
//! If you're the maintainer of a `tracing` ecosystem crate not listed above,
//! please let us know! We'd love to add your project to the list!
@@ -758,6 +767,7 @@
//! [honeycomb.io]: https://www.honeycomb.io/
//! [`tracing-actix-web`]: https://crates.io/crates/tracing-actix-web
//! [`tracing-actix`]: https://crates.io/crates/tracing-actix
+//! [`axum-insights`]: https://crates.io/crates/axum-insights
//! [`tracing-gelf`]: https://crates.io/crates/tracing-gelf
//! [`tracing-coz`]: https://crates.io/crates/tracing-coz
//! [coz]: https://github.com/plasma-umass/coz
@@ -776,7 +786,7 @@
//! [Tracy]: https://github.com/wolfpld/tracy
//! [`tracing-elastic-apm`]: https://crates.io/crates/tracing-elastic-apm
//! [Elastic APM]: https://www.elastic.co/apm
-//! [`tracing-etw`]: https://github.com/microsoft/tracing-etw
+//! [`tracing-etw`]: https://github.com/microsoft/rust_win_etw/tree/main/win_etw_tracing
//! [ETW]: https://docs.microsoft.com/en-us/windows/win32/etw/about-event-tracing
//! [`tracing-fluent-assertions`]: https://crates.io/crates/tracing-fluent-assertions
//! [`sentry-tracing`]: https://crates.io/crates/sentry-tracing
@@ -787,6 +797,8 @@
//! [`tracing-logfmt`]: https://crates.io/crates/tracing-logfmt
//! [`reqwest-tracing`]: https://crates.io/crates/reqwest-tracing
//! [`reqwest`]: https://crates.io/crates/reqwest
+//! [`tracing-cloudwatch`]: https://crates.io/crates/tracing-cloudwatch
+//! [`clippy-tracing`]: https://crates.io/crates/clippy-tracing
//!
//! <pre class="ignore" style="white-space:normal;font:inherit;">
//! <strong>Note</strong>: Some of these ecosystem crates are currently
@@ -817,7 +829,7 @@
//!
//! ```toml
//! [dependencies]
-//! tracing = { version = "0.1.37", default-features = false }
+//! tracing = { version = "0.1.38", default-features = false }
//! ```
//!
//! <pre class="ignore" style="white-space:normal;font:inherit;">
@@ -859,14 +871,14 @@
//! ## Supported Rust Versions
//!
//! Tracing is built against the latest stable release. The minimum supported
-//! version is 1.49. The current Tracing version is not guaranteed to build on
+//! version is 1.56. The current Tracing version is not guaranteed to build on
//! Rust versions earlier than the minimum supported version.
//!
//! Tracing follows the same compiler support policies as the rest of the Tokio
//! project. The current stable Rust compiler and the three most recent minor
//! versions before it will always be supported. For example, if the current
-//! stable compiler version is 1.45, the minimum supported version will not be
-//! increased past 1.42, three minor versions prior. Increasing the minimum
+//! stable compiler version is 1.69, the minimum supported version will not be
+//! increased past 1.66, three minor versions prior. Increasing the minimum
//! supported compiler version is not considered a semver breaking change as
//! long as doing so complies with this policy.
//!
@@ -900,7 +912,6 @@
//! [flags]: #crate-feature-flags
#![cfg_attr(not(feature = "std"), no_std)]
#![cfg_attr(docsrs, feature(doc_cfg), deny(rustdoc::broken_intra_doc_links))]
-#![doc(html_root_url = "https://docs.rs/tracing/0.1.37")]
#![doc(
html_logo_url = "https://raw.githubusercontent.com/tokio-rs/tracing/master/assets/logo-type.png",
issue_tracker_base_url = "https://github.com/tokio-rs/tracing/issues/"
@@ -911,7 +922,6 @@
rust_2018_idioms,
unreachable_pub,
bad_style,
- const_err,
dead_code,
improper_ctypes,
non_shorthand_field_patterns,
diff --git a/vendor/tracing/src/macros.rs b/vendor/tracing/src/macros.rs
index f3968e5c1..dba49d169 100644
--- a/vendor/tracing/src/macros.rs
+++ b/vendor/tracing/src/macros.rs
@@ -24,7 +24,7 @@ macro_rules! span {
(target: $target:expr, parent: $parent:expr, $lvl:expr, $name:expr, $($fields:tt)*) => {
{
use $crate::__macro_support::Callsite as _;
- static CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
+ static __CALLSITE: $crate::__macro_support::MacroCallsite = $crate::callsite2! {
name: $name,
kind: $crate::metadata::Kind::SPAN,
target: $target,
@@ -33,10 +33,10 @@ macro_rules! span {
};
let mut interest = $crate::subscriber::Interest::never();
if $crate::level_enabled!($lvl)
- && { interest = CALLSITE.interest(); !interest.is_never() }
- && $crate::__macro_support::__is_enabled(CALLSITE.metadata(), interest)
+ && { interest = __CALLSITE.interest(); !interest.is_never() }
+ && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), interest)
{
- let meta = CALLSITE.metadata();
+ let meta = __CALLSITE.metadata();
// span with explicit parent
$crate::Span::child_of(
$parent,
@@ -44,9 +44,9 @@ macro_rules! span {
&$crate::valueset!(meta.fields(), $($fields)*),
)
} else {
- let span = $crate::__macro_support::__disabled_span(CALLSITE.metadata());
+ let span = $crate::__macro_support::__disabled_span(__CALLSITE.metadata());
$crate::if_log_enabled! { $lvl, {
- span.record_all(&$crate::valueset!(CALLSITE.metadata().fields(), $($fields)*));
+ span.record_all(&$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
}};
span
}
@@ -55,7 +55,7 @@ macro_rules! span {
(target: $target:expr, $lvl:expr, $name:expr, $($fields:tt)*) => {
{
use $crate::__macro_support::Callsite as _;
- static CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
+ static __CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
name: $name,
kind: $crate::metadata::Kind::SPAN,
target: $target,
@@ -64,19 +64,19 @@ macro_rules! span {
};
let mut interest = $crate::subscriber::Interest::never();
if $crate::level_enabled!($lvl)
- && { interest = CALLSITE.interest(); !interest.is_never() }
- && $crate::__macro_support::__is_enabled(CALLSITE.metadata(), interest)
+ && { interest = __CALLSITE.interest(); !interest.is_never() }
+ && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), interest)
{
- let meta = CALLSITE.metadata();
+ let meta = __CALLSITE.metadata();
// span with contextual parent
$crate::Span::new(
meta,
&$crate::valueset!(meta.fields(), $($fields)*),
)
} else {
- let span = $crate::__macro_support::__disabled_span(CALLSITE.metadata());
+ let span = $crate::__macro_support::__disabled_span(__CALLSITE.metadata());
$crate::if_log_enabled! { $lvl, {
- span.record_all(&$crate::valueset!(CALLSITE.metadata().fields(), $($fields)*));
+ span.record_all(&$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
}};
span
}
@@ -564,6 +564,7 @@ macro_rules! error_span {
/// "App warning: {}",
/// error
/// );
+/// event!(name: "answer", Level::INFO, the_answer = data.0);
/// event!(Level::INFO, the_answer = data.0);
/// # }
/// ```
@@ -582,9 +583,115 @@ macro_rules! error_span {
// /// ```
#[macro_export]
macro_rules! event {
+ // Name / target / parent.
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $lvl:expr, { $($fields:tt)* } )=> ({
+ use $crate::__macro_support::Callsite as _;
+ static __CALLSITE: $crate::__macro_support::MacroCallsite = $crate::callsite2! {
+ name: $name,
+ kind: $crate::metadata::Kind::EVENT,
+ target: $target,
+ level: $lvl,
+ fields: $($fields)*
+ };
+
+ let enabled = $crate::level_enabled!($lvl) && {
+ let interest = __CALLSITE.interest();
+ !interest.is_never() && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), interest)
+ };
+ if enabled {
+ (|value_set: $crate::field::ValueSet| {
+ $crate::__tracing_log!(
+ $lvl,
+ __CALLSITE,
+ &value_set
+ );
+ let meta = __CALLSITE.metadata();
+ // event with explicit parent
+ $crate::Event::child_of(
+ $parent,
+ meta,
+ &value_set
+ );
+ })($crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
+ } else {
+ $crate::__tracing_log!(
+ $lvl,
+ __CALLSITE,
+ &$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*)
+ );
+ }
+ });
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
+ $crate::event!(
+ name: $name,
+ target: $target,
+ parent: $parent,
+ $lvl,
+ { message = ::core::format_args!($($arg)+), $($fields)* }
+ )
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $lvl, { $($k).+ = $($fields)* })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $lvl:expr, $($arg:tt)+) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $lvl, { $($arg)+ })
+ );
+
+ // Name / target.
+ (name: $name:expr, target: $target:expr, $lvl:expr, { $($fields:tt)* } )=> ({
+ use $crate::__macro_support::Callsite as _;
+ static __CALLSITE: $crate::__macro_support::MacroCallsite = $crate::callsite2! {
+ name: $name,
+ kind: $crate::metadata::Kind::EVENT,
+ target: $target,
+ level: $lvl,
+ fields: $($fields)*
+ };
+ let enabled = $crate::level_enabled!($lvl) && {
+ let interest = __CALLSITE.interest();
+ !interest.is_never() && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), interest)
+ };
+ if enabled {
+ (|value_set: $crate::field::ValueSet| {
+ let meta = __CALLSITE.metadata();
+ // event with contextual parent
+ $crate::Event::dispatch(
+ meta,
+ &value_set
+ );
+ $crate::__tracing_log!(
+ $lvl,
+ __CALLSITE,
+ &value_set
+ );
+ })($crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
+ } else {
+ $crate::__tracing_log!(
+ $lvl,
+ __CALLSITE,
+ &$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*)
+ );
+ }
+ });
+ (name: $name:expr, target: $target:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
+ $crate::event!(
+ name: $name,
+ target: $target,
+ $lvl,
+ { message = ::core::format_args!($($arg)+), $($fields)* }
+ )
+ );
+ (name: $name:expr, target: $target:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $lvl, { $($k).+ = $($fields)* })
+ );
+ (name: $name:expr, target: $target:expr, $lvl:expr, $($arg:tt)+) => (
+ $crate::event!(name: $name, target: $target, $lvl, { $($arg)+ })
+ );
+
+ // Target / parent.
(target: $target:expr, parent: $parent:expr, $lvl:expr, { $($fields:tt)* } )=> ({
use $crate::__macro_support::Callsite as _;
- static CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
+ static __CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
name: $crate::__macro_support::concat!(
"event ",
file!(),
@@ -598,39 +705,38 @@ macro_rules! event {
};
let enabled = $crate::level_enabled!($lvl) && {
- let interest = CALLSITE.interest();
- !interest.is_never() && $crate::__macro_support::__is_enabled(CALLSITE.metadata(), interest)
+ let interest = __CALLSITE.interest();
+ !interest.is_never() && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), interest)
};
if enabled {
(|value_set: $crate::field::ValueSet| {
$crate::__tracing_log!(
$lvl,
- CALLSITE,
+ __CALLSITE,
&value_set
);
- let meta = CALLSITE.metadata();
+ let meta = __CALLSITE.metadata();
// event with explicit parent
$crate::Event::child_of(
$parent,
meta,
&value_set
);
- })($crate::valueset!(CALLSITE.metadata().fields(), $($fields)*));
+ })($crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
} else {
$crate::__tracing_log!(
$lvl,
- CALLSITE,
- &$crate::valueset!(CALLSITE.metadata().fields(), $($fields)*)
+ __CALLSITE,
+ &$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*)
);
}
});
-
(target: $target:expr, parent: $parent:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
$crate::event!(
target: $target,
parent: $parent,
$lvl,
- { message = format_args!($($arg)+), $($fields)* }
+ { message = ::core::format_args!($($arg)+), $($fields)* }
)
);
(target: $target:expr, parent: $parent:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
@@ -639,9 +745,114 @@ macro_rules! event {
(target: $target:expr, parent: $parent:expr, $lvl:expr, $($arg:tt)+) => (
$crate::event!(target: $target, parent: $parent, $lvl, { $($arg)+ })
);
+
+ // Name / parent.
+ (name: $name:expr, parent: $parent:expr, $lvl:expr, { $($fields:tt)* } )=> ({
+ use $crate::__macro_support::Callsite as _;
+ static __CALLSITE: $crate::__macro_support::MacroCallsite = $crate::callsite2! {
+ name: $name,
+ kind: $crate::metadata::Kind::EVENT,
+ target: module_path!(),
+ level: $lvl,
+ fields: $($fields)*
+ };
+
+ let enabled = $crate::level_enabled!($lvl) && {
+ let interest = __CALLSITE.interest();
+ !interest.is_never() && __CALLSITE.is_enabled(interest)
+ };
+ if enabled {
+ (|value_set: $crate::field::ValueSet| {
+ $crate::__tracing_log!(
+ $lvl,
+ __CALLSITE,
+ &value_set
+ );
+ let meta = __CALLSITE.metadata();
+ // event with explicit parent
+ $crate::Event::child_of(
+ $parent,
+ meta,
+ &value_set
+ );
+ })($crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
+ } else {
+ $crate::__tracing_log!(
+ $lvl,
+ __CALLSITE,
+ &$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*)
+ );
+ }
+ });
+ (name: $name:expr, parent: $parent:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
+ $crate::event!(
+ name: $name,
+ parent: $parent,
+ $lvl,
+ { message = ::core::format_args!($($arg)+), $($fields)* }
+ )
+ );
+ (name: $name:expr, parent: $parent:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $lvl, { $($k).+ = $($fields)* })
+ );
+ (name: $name:expr, parent: $parent:expr, $lvl:expr, $($arg:tt)+) => (
+ $crate::event!(name: $name, parent: $parent, $lvl, { $($arg)+ })
+ );
+
+ // Name.
+ (name: $name:expr, $lvl:expr, { $($fields:tt)* } )=> ({
+ use $crate::__macro_support::Callsite as _;
+ static __CALLSITE: $crate::__macro_support::MacroCallsite = $crate::callsite2! {
+ name: $name,
+ kind: $crate::metadata::Kind::EVENT,
+ target: module_path!(),
+ level: $lvl,
+ fields: $($fields)*
+ };
+ let enabled = $crate::level_enabled!($lvl) && {
+ let interest = __CALLSITE.interest();
+ !interest.is_never() && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), interest)
+ };
+ if enabled {
+ (|value_set: $crate::field::ValueSet| {
+ let meta = __CALLSITE.metadata();
+ // event with contextual parent
+ $crate::Event::dispatch(
+ meta,
+ &value_set
+ );
+ $crate::__tracing_log!(
+ $lvl,
+ __CALLSITE,
+ &value_set
+ );
+ })($crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
+ } else {
+ $crate::__tracing_log!(
+ $lvl,
+ __CALLSITE,
+ &$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*)
+ );
+ }
+ });
+ (name: $name:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
+ $crate::event!(
+ name: $name,
+ $lvl,
+ { message = ::core::format_args!($($arg)+), $($fields)* }
+ )
+ );
+ (name: $name:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
+ $crate::event!(name: $name, $lvl, { $($k).+ = $($fields)* })
+ );
+ (name: $name:expr, $lvl:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, $lvl, { $($arg)+ })
+ );
+
+ // Target.
(target: $target:expr, $lvl:expr, { $($fields:tt)* } )=> ({
use $crate::__macro_support::Callsite as _;
- static CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
+ static __CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
name: $crate::__macro_support::concat!(
"event ",
file!(),
@@ -654,12 +865,12 @@ macro_rules! event {
fields: $($fields)*
};
let enabled = $crate::level_enabled!($lvl) && {
- let interest = CALLSITE.interest();
- !interest.is_never() && $crate::__macro_support::__is_enabled(CALLSITE.metadata(), interest)
+ let interest = __CALLSITE.interest();
+ !interest.is_never() && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), interest)
};
if enabled {
(|value_set: $crate::field::ValueSet| {
- let meta = CALLSITE.metadata();
+ let meta = __CALLSITE.metadata();
// event with contextual parent
$crate::Event::dispatch(
meta,
@@ -667,15 +878,15 @@ macro_rules! event {
);
$crate::__tracing_log!(
$lvl,
- CALLSITE,
+ __CALLSITE,
&value_set
);
- })($crate::valueset!(CALLSITE.metadata().fields(), $($fields)*));
+ })($crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*));
} else {
$crate::__tracing_log!(
$lvl,
- CALLSITE,
- &$crate::valueset!(CALLSITE.metadata().fields(), $($fields)*)
+ __CALLSITE,
+ &$crate::valueset!(__CALLSITE.metadata().fields(), $($fields)*)
);
}
});
@@ -683,7 +894,7 @@ macro_rules! event {
$crate::event!(
target: $target,
$lvl,
- { message = format_args!($($arg)+), $($fields)* }
+ { message = ::core::format_args!($($arg)+), $($fields)* }
)
);
(target: $target:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (
@@ -692,12 +903,14 @@ macro_rules! event {
(target: $target:expr, $lvl:expr, $($arg:tt)+ ) => (
$crate::event!(target: $target, $lvl, { $($arg)+ })
);
+
+ // Parent.
(parent: $parent:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
parent: $parent,
$lvl,
- { message = format_args!($($arg)+), $($fields)* }
+ { message = ::core::format_args!($($arg)+), $($fields)* }
)
);
(parent: $parent:expr, $lvl:expr, $($k:ident).+ = $($field:tt)*) => (
@@ -751,11 +964,13 @@ macro_rules! event {
(parent: $parent:expr, $lvl:expr, $($arg:tt)+ ) => (
$crate::event!(target: module_path!(), parent: $parent, $lvl, { $($arg)+ })
);
+
+ // ...
( $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
$lvl,
- { message = format_args!($($arg)+), $($fields)* }
+ { message = ::core::format_args!($($arg)+), $($fields)* }
)
);
( $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (
@@ -970,7 +1185,7 @@ macro_rules! enabled {
(kind: $kind:expr, target: $target:expr, $lvl:expr, { $($fields:tt)* } )=> ({
if $crate::level_enabled!($lvl) {
use $crate::__macro_support::Callsite as _;
- static CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
+ static __CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite2! {
name: $crate::__macro_support::concat!(
"enabled ",
file!(),
@@ -982,9 +1197,9 @@ macro_rules! enabled {
level: $lvl,
fields: $($fields)*
};
- let interest = CALLSITE.interest();
- if !interest.is_never() && $crate::__macro_support::__is_enabled(CALLSITE.metadata(), interest) {
- let meta = CALLSITE.metadata();
+ let interest = __CALLSITE.interest();
+ if !interest.is_never() && $crate::__macro_support::__is_enabled(__CALLSITE.metadata(), interest) {
+ let meta = __CALLSITE.metadata();
$crate::dispatcher::get_default(|current| current.enabled(meta))
} else {
false
@@ -1081,10 +1296,46 @@ macro_rules! enabled {
/// if pos.x >= 0.0 { "positive" } else { "negative" },
/// if pos.y >= 0.0 { "positive" } else { "negative" }
/// );
+/// trace!(name: "completed", position = ?pos);
/// # }
/// ```
#[macro_export]
macro_rules! trace {
+ // Name / target / parent.
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::TRACE, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::TRACE, {}, $($arg)+)
+ );
+
+ // Name / target.
+ (name: $name:expr, target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::TRACE, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::TRACE, {}, $($arg)+)
+ );
+
+ // Target / parent.
(target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::TRACE, { $($field)* }, $($arg)*)
);
@@ -1100,6 +1351,59 @@ macro_rules! trace {
(target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::TRACE, {}, $($arg)+)
);
+
+ // Name / parent.
+ (name: $name:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::TRACE, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::TRACE, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::TRACE, {}, $($arg)+)
+ );
+
+ // Name.
+ (name: $name:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::TRACE, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::TRACE, { $($k).+ $($field)* })
+ );
+ (name: $name:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::TRACE, { ?$($k).+ $($field)* })
+ );
+ (name: $name:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::TRACE, { %$($k).+ $($field)* })
+ );
+ (name: $name:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, $crate::Level::TRACE, {}, $($arg)+)
+ );
+
+ // Target.
+ (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::TRACE, { $($field)* }, $($arg)*)
+ );
+ (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::TRACE, { $($k).+ $($field)* })
+ );
+ (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::TRACE, { ?$($k).+ $($field)* })
+ );
+ (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::TRACE, { %$($k).+ $($field)* })
+ );
+ (target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(target: $target, $crate::Level::TRACE, {}, $($arg)+)
+ );
+
+ // Parent.
(parent: $parent:expr, { $($field:tt)+ }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
@@ -1166,21 +1470,8 @@ macro_rules! trace {
$($arg)+
)
);
- (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::TRACE, { $($field)* }, $($arg)*)
- );
- (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::TRACE, { $($k).+ $($field)* })
- );
- (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::TRACE, { ?$($k).+ $($field)* })
- );
- (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::TRACE, { %$($k).+ $($field)* })
- );
- (target: $target:expr, $($arg:tt)+ ) => (
- $crate::event!(target: $target, $crate::Level::TRACE, {}, $($arg)+)
- );
+
+ // ...
({ $($field:tt)+ }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
@@ -1196,6 +1487,20 @@ macro_rules! trace {
{ $($k).+ = $($field)*}
)
);
+ (?$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::TRACE,
+ { ?$($k).+ = $($field)*}
+ )
+ );
+ (%$($k:ident).+ = $($field:tt)*) => (
+ $crate::event!(
+ target: module_path!(),
+ $crate::Level::TRACE,
+ { %$($k).+ = $($field)*}
+ )
+ );
($($k:ident).+, $($field:tt)*) => (
$crate::event!(
target: module_path!(),
@@ -1268,10 +1573,46 @@ macro_rules! trace {
///
/// debug!(?pos.x, ?pos.y);
/// debug!(target: "app_events", position = ?pos, "New position");
+/// debug!(name: "completed", position = ?pos);
/// # }
/// ```
#[macro_export]
macro_rules! debug {
+ // Name / target / parent.
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::DEBUG, {}, $($arg)+)
+ );
+
+ // Name / target.
+ (name: $name:expr, target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::DEBUG, {}, $($arg)+)
+ );
+
+ // Target / parent.
(target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
);
@@ -1287,6 +1628,59 @@ macro_rules! debug {
(target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::DEBUG, {}, $($arg)+)
);
+
+ // Name / parent.
+ (name: $name:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::DEBUG, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::DEBUG, {}, $($arg)+)
+ );
+
+ // Name.
+ (name: $name:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::DEBUG, { $($k).+ $($field)* })
+ );
+ (name: $name:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::DEBUG, { ?$($k).+ $($field)* })
+ );
+ (name: $name:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::DEBUG, { %$($k).+ $($field)* })
+ );
+ (name: $name:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, $crate::Level::DEBUG, {}, $($arg)+)
+ );
+
+ // Target.
+ (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
+ );
+ (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::DEBUG, { $($k).+ $($field)* })
+ );
+ (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::DEBUG, { ?$($k).+ $($field)* })
+ );
+ (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::DEBUG, { %$($k).+ $($field)* })
+ );
+ (target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(target: $target, $crate::Level::DEBUG, {}, $($arg)+)
+ );
+
+ // Parent.
(parent: $parent:expr, { $($field:tt)+ }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
@@ -1353,21 +1747,8 @@ macro_rules! debug {
$($arg)+
)
);
- (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::DEBUG, { $($field)* }, $($arg)*)
- );
- (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::DEBUG, { $($k).+ $($field)* })
- );
- (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::DEBUG, { ?$($k).+ $($field)* })
- );
- (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::DEBUG, { %$($k).+ $($field)* })
- );
- (target: $target:expr, $($arg:tt)+ ) => (
- $crate::event!(target: $target, $crate::Level::DEBUG, {}, $($arg)+)
- );
+
+ // ...
({ $($field:tt)+ }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
@@ -1480,11 +1861,47 @@ macro_rules! debug {
/// conn.port,
/// ?conn.speed,
/// );
+/// info!(name: "completed", "completed connection to {:?}", addr);
/// # }
/// ```
#[macro_export]
macro_rules! info {
- (target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ // Name / target / parent.
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::INFO, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::INFO, {}, $($arg)+)
+ );
+
+ // Name / target.
+ (name: $name:expr, target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::INFO, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::INFO, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::INFO, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::INFO, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::INFO, {}, $($arg)+)
+ );
+
+ // Target / parent.
+ (target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::INFO, { $($field)* }, $($arg)*)
);
(target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
@@ -1499,6 +1916,59 @@ macro_rules! info {
(target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::INFO, {}, $($arg)+)
);
+
+ // Name / parent.
+ (name: $name:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::INFO, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::INFO, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::INFO, {}, $($arg)+)
+ );
+
+ // Name.
+ (name: $name:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::INFO, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::INFO, { $($k).+ $($field)* })
+ );
+ (name: $name:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::INFO, { ?$($k).+ $($field)* })
+ );
+ (name: $name:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::INFO, { %$($k).+ $($field)* })
+ );
+ (name: $name:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, $crate::Level::INFO, {}, $($arg)+)
+ );
+
+ // Target.
+ (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::INFO, { $($field)* }, $($arg)*)
+ );
+ (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::INFO, { $($k).+ $($field)* })
+ );
+ (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::INFO, { ?$($k).+ $($field)* })
+ );
+ (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::INFO, { %$($k).+ $($field)* })
+ );
+ (target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(target: $target, $crate::Level::INFO, {}, $($arg)+)
+ );
+
+ // Parent.
(parent: $parent:expr, { $($field:tt)+ }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
@@ -1565,21 +2035,8 @@ macro_rules! info {
$($arg)+
)
);
- (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::INFO, { $($field)* }, $($arg)*)
- );
- (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::INFO, { $($k).+ $($field)* })
- );
- (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::INFO, { ?$($k).+ $($field)* })
- );
- (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::INFO, { $($k).+ $($field)* })
- );
- (target: $target:expr, $($arg:tt)+ ) => (
- $crate::event!(target: $target, $crate::Level::INFO, {}, $($arg)+)
- );
+
+ // ...
({ $($field:tt)+ }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
@@ -1685,11 +2142,47 @@ macro_rules! info {
/// warning = warn_description,
/// "Received warning for input: {:?}", input,
/// );
+/// warn!(name: "invalid", ?input);
/// # }
/// ```
#[macro_export]
macro_rules! warn {
- (target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ // Name / target / parent.
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::WARN, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::WARN, {}, $($arg)+)
+ );
+
+ // Name / target.
+ (name: $name:expr, target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::WARN, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::WARN, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::WARN, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::WARN, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::WARN, {}, $($arg)+)
+ );
+
+ // Target / parent.
+ (target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::WARN, { $($field)* }, $($arg)*)
);
(target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
@@ -1704,6 +2197,59 @@ macro_rules! warn {
(target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::WARN, {}, $($arg)+)
);
+
+ // Name / parent.
+ (name: $name:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::WARN, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::WARN, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::WARN, {}, $($arg)+)
+ );
+
+ // Name.
+ (name: $name:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::WARN, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::WARN, { $($k).+ $($field)* })
+ );
+ (name: $name:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::WARN, { ?$($k).+ $($field)* })
+ );
+ (name: $name:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::WARN, { %$($k).+ $($field)* })
+ );
+ (name: $name:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, $crate::Level::WARN, {}, $($arg)+)
+ );
+
+ // Target.
+ (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::WARN, { $($field)* }, $($arg)*)
+ );
+ (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::WARN, { $($k).+ $($field)* })
+ );
+ (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::WARN, { ?$($k).+ $($field)* })
+ );
+ (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::WARN, { %$($k).+ $($field)* })
+ );
+ (target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(target: $target, $crate::Level::WARN, {}, $($arg)+)
+ );
+
+ // Parent.
(parent: $parent:expr, { $($field:tt)+ }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
@@ -1770,21 +2316,8 @@ macro_rules! warn {
$($arg)+
)
);
- (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::WARN, { $($field)* }, $($arg)*)
- );
- (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::WARN, { $($k).+ $($field)* })
- );
- (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::WARN, { ?$($k).+ $($field)* })
- );
- (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::WARN, { %$($k).+ $($field)* })
- );
- (target: $target:expr, $($arg:tt)+ ) => (
- $crate::event!(target: $target, $crate::Level::WARN, {}, $($arg)+)
- );
+
+ // ...
({ $($field:tt)+ }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
@@ -1886,11 +2419,47 @@ macro_rules! warn {
/// error!(port, error = %err_info);
/// error!(target: "app_events", "App Error: {}", err_info);
/// error!({ info = err_info }, "error on port: {}", port);
+/// error!(name: "invalid_input", "Invalid input: {}", err_info);
/// # }
/// ```
#[macro_export]
macro_rules! error {
- (target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ // Name / target / parent.
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::ERROR, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, parent: $parent, $crate::Level::ERROR, {}, $($arg)+)
+ );
+
+ // Name / target.
+ (name: $name:expr, target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::ERROR, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, target: $target:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, target: $target, $crate::Level::ERROR, {}, $($arg)+)
+ );
+
+ // Target / parent.
+ (target: $target:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::ERROR, { $($field)* }, $($arg)*)
);
(target: $target:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
@@ -1905,6 +2474,59 @@ macro_rules! error {
(target: $target:expr, parent: $parent:expr, $($arg:tt)+ ) => (
$crate::event!(target: $target, parent: $parent, $crate::Level::ERROR, {}, $($arg)+)
);
+
+ // Name / parent.
+ (name: $name:expr, parent: $parent:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::ERROR, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, parent: $parent:expr, $($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, ?$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, %$($k:ident).+ $($field:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::ERROR, { $($k).+ $($field)+ })
+ );
+ (name: $name:expr, parent: $parent:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, parent: $parent, $crate::Level::ERROR, {}, $($arg)+)
+ );
+
+ // Name.
+ (name: $name:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::ERROR, { $($field)* }, $($arg)*)
+ );
+ (name: $name:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::ERROR, { $($k).+ $($field)* })
+ );
+ (name: $name:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::ERROR, { ?$($k).+ $($field)* })
+ );
+ (name: $name:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(name: $name, $crate::Level::ERROR, { %$($k).+ $($field)* })
+ );
+ (name: $name:expr, $($arg:tt)+ ) => (
+ $crate::event!(name: $name, $crate::Level::ERROR, {}, $($arg)+)
+ );
+
+ // Target.
+ (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::ERROR, { $($field)* }, $($arg)*)
+ );
+ (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::ERROR, { $($k).+ $($field)* })
+ );
+ (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::ERROR, { ?$($k).+ $($field)* })
+ );
+ (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
+ $crate::event!(target: $target, $crate::Level::ERROR, { %$($k).+ $($field)* })
+ );
+ (target: $target:expr, $($arg:tt)+ ) => (
+ $crate::event!(target: $target, $crate::Level::ERROR, {}, $($arg)+)
+ );
+
+ // Parent.
(parent: $parent:expr, { $($field:tt)+ }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
@@ -1971,21 +2593,8 @@ macro_rules! error {
$($arg)+
)
);
- (target: $target:expr, { $($field:tt)* }, $($arg:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::ERROR, { $($field)* }, $($arg)*)
- );
- (target: $target:expr, $($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::ERROR, { $($k).+ $($field)* })
- );
- (target: $target:expr, ?$($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::ERROR, { ?$($k).+ $($field)* })
- );
- (target: $target:expr, %$($k:ident).+ $($field:tt)* ) => (
- $crate::event!(target: $target, $crate::Level::ERROR, { %$($k).+ $($field)* })
- );
- (target: $target:expr, $($arg:tt)+ ) => (
- $crate::event!(target: $target, $crate::Level::ERROR, {}, $($arg)+)
- );
+
+ // ...
({ $($field:tt)+ }, $($arg:tt)+ ) => (
$crate::event!(
target: module_path!(),
@@ -2107,13 +2716,13 @@ macro_rules! callsite {
target: $target,
level: $lvl,
fields: $crate::fieldset!( $($fields)* ),
- callsite: &CALLSITE,
+ callsite: &__CALLSITE,
kind: $kind,
}
};
- static CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite::DefaultCallsite::new(&META);
- CALLSITE.register();
- &CALLSITE
+ static __CALLSITE: $crate::callsite::DefaultCallsite = $crate::callsite::DefaultCallsite::new(&META);
+ __CALLSITE.register();
+ &__CALLSITE
}};
}
@@ -2157,7 +2766,7 @@ macro_rules! callsite2 {
target: $target,
level: $lvl,
fields: $crate::fieldset!( $($fields)* ),
- callsite: &CALLSITE,
+ callsite: &__CALLSITE,
kind: $kind,
}
};
@@ -2193,79 +2802,79 @@ macro_rules! valueset {
// };
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = ?$val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&debug(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&debug(&$val) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = %$val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&display(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&display(&$val) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = $val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&$val as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&$val as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&$($k).+ as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&$($k).+ as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, ?$($k:ident).+, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&debug(&$($k).+) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&debug(&$($k).+) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, %$($k:ident).+, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&display(&$($k).+) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&display(&$($k).+) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = ?$val:expr) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&debug(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&debug(&$val) as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = %$val:expr) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&display(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&display(&$val) as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = $val:expr) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&$val as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&$val as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&$($k).+ as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&$($k).+ as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, ?$($k:ident).+) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&debug(&$($k).+) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&debug(&$($k).+) as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, %$($k:ident).+) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&display(&$($k).+) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&display(&$($k).+) as &dyn Value)) },
$next,
)
};
@@ -2273,47 +2882,88 @@ macro_rules! valueset {
// Handle literal names
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = ?$val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&debug(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&debug(&$val) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = %$val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&display(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&display(&$val) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = $val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&$val as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&$val as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = ?$val:expr) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&debug(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&debug(&$val) as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = %$val:expr) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&display(&$val) as &dyn Value)) },
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&display(&$val) as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = $val:expr) => {
$crate::valueset!(
+ @ { $($out),*, (&$next, ::core::option::Option::Some(&$val as &dyn Value)) },
+ $next,
+ )
+ };
+
+ // Handle constant names
+ (@ { $(,)* $($out:expr),* }, $next:expr, { $k:expr } = ?$val:expr, $($rest:tt)*) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&debug(&$val) as &dyn Value)) },
+ $next,
+ $($rest)*
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, { $k:expr } = %$val:expr, $($rest:tt)*) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&display(&$val) as &dyn Value)) },
+ $next,
+ $($rest)*
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, { $k:expr } = $val:expr, $($rest:tt)*) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&$val as &dyn Value)) },
+ $next,
+ $($rest)*
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, { $k:expr } = ?$val:expr) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&debug(&$val) as &dyn Value)) },
+ $next,
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, { $k:expr } = %$val:expr) => {
+ $crate::valueset!(
+ @ { $($out),*, (&$next, Some(&display(&$val) as &dyn Value)) },
+ $next,
+ )
+ };
+ (@ { $(,)* $($out:expr),* }, $next:expr, { $k:expr } = $val:expr) => {
+ $crate::valueset!(
@ { $($out),*, (&$next, Some(&$val as &dyn Value)) },
$next,
)
};
- // Remainder is unparseable, but exists --- must be format args!
+ // Remainder is unparsable, but exists --- must be format args!
(@ { $(,)* $($out:expr),* }, $next:expr, $($rest:tt)+) => {
- $crate::valueset!(@ { (&$next, Some(&format_args!($($rest)+) as &dyn Value)), $($out),* }, $next, )
+ $crate::valueset!(@ { (&$next, ::core::option::Option::Some(&::core::format_args!($($rest)+) as &dyn Value)), $($out),* }, $next, )
};
// === entry ===
@@ -2324,7 +2974,7 @@ macro_rules! valueset {
let mut iter = $fields.iter();
$fields.value_set($crate::valueset!(
@ { },
- iter.next().expect("FieldSet corrupted (this is a bug)"),
+ ::core::iter::Iterator::next(&mut iter).expect("FieldSet corrupted (this is a bug)"),
$($kvs)+
))
}
@@ -2380,6 +3030,17 @@ macro_rules! fieldset {
$crate::fieldset!(@ { $($out),*, $k } $($rest)*)
};
+ // Handle constant names
+ (@ { $(,)* $($out:expr),* } { $k:expr } = ?$val:expr, $($rest:tt)*) => {
+ $crate::fieldset!(@ { $($out),*, $k } $($rest)*)
+ };
+ (@ { $(,)* $($out:expr),* } { $k:expr } = %$val:expr, $($rest:tt)*) => {
+ $crate::fieldset!(@ { $($out),*, $k } $($rest)*)
+ };
+ (@ { $(,)* $($out:expr),* } { $k:expr } = $val:expr, $($rest:tt)*) => {
+ $crate::fieldset!(@ { $($out),*, $k } $($rest)*)
+ };
+
// Remainder is unparseable, but exists --- must be format args!
(@ { $(,)* $($out:expr),* } $($rest:tt)+) => {
$crate::fieldset!(@ { "message", $($out),*, })
diff --git a/vendor/tracing/src/span.rs b/vendor/tracing/src/span.rs
index 58822f4d9..3c235dc79 100644
--- a/vendor/tracing/src/span.rs
+++ b/vendor/tracing/src/span.rs
@@ -22,7 +22,7 @@
//! override their default values.
//! - The span's [verbosity level]
//! - A string literal providing the span's name.
-//! - Finally, between zero and 32 arbitrary key/value fields.
+//! - Finally, zero or more arbitrary key/value fields.
//!
//! [`target`]: super::Metadata::target
//!
@@ -824,7 +824,7 @@ impl Span {
///
/// <pre class="ignore" style="white-space:normal;font:inherit;">
/// <strong>Note</strong>: The returned <a href="../struct.EnteredSpan.html">
- /// <code>EnteredSpan</a></code> guard does not implement <code>Send</code>.
+ /// <code>EnteredSpan</code></a> guard does not implement <code>Send</code>.
/// Dropping the guard will exit <em>this</em> span, and if the guard is sent
/// to another thread and dropped there, that thread may never have entered
/// this span. Thus, <code>EnteredSpan</code>s should not be sent between threads.
@@ -1617,7 +1617,7 @@ mod test {
#[test]
fn test_record_backwards_compat() {
- Span::current().record("some-key", &"some text");
- Span::current().record("some-key", &false);
+ Span::current().record("some-key", "some text");
+ Span::current().record("some-key", false);
}
}
diff --git a/vendor/tracing/tests/enabled.rs b/vendor/tracing/tests/enabled.rs
index ea1c69804..5a4596347 100644
--- a/vendor/tracing/tests/enabled.rs
+++ b/vendor/tracing/tests/enabled.rs
@@ -13,7 +13,7 @@ fn level_and_target() {
meta.level() <= &Level::INFO
}
})
- .done()
+ .only()
.run();
let _guard = tracing::subscriber::set_default(subscriber);
@@ -38,7 +38,7 @@ fn span_and_event() {
meta.level() <= &Level::INFO
}
})
- .done()
+ .only()
.run();
let _guard = tracing::subscriber::set_default(subscriber);
diff --git a/vendor/tracing/tests/event.rs b/vendor/tracing/tests/event.rs
index 61df19ad3..0be7c0bc5 100644
--- a/vendor/tracing/tests/event.rs
+++ b/vendor/tracing/tests/event.rs
@@ -22,17 +22,17 @@ macro_rules! event_without_message {
fn $name() {
let (subscriber, handle) = subscriber::mock()
.event(
- event::mock().with_fields(
- field::mock("answer")
+ expect::event().with_fields(
+ expect::field("answer")
.with_value(&42)
.and(
- field::mock("to_question")
+ expect::field("to_question")
.with_value(&"life, the universe, and everything"),
)
.only(),
),
)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -57,15 +57,19 @@ event_without_message! {nonzeroi32_event_without_message: std::num::NonZeroI32::
#[test]
fn event_with_message() {
let (subscriber, handle) = subscriber::mock()
- .event(event::msg(format_args!(
- "hello from my event! yak shaved = {:?}",
- true
- )))
- .done()
+ .event(
+ expect::event().with_fields(expect::field("message").with_value(
+ &tracing::field::debug(format_args!(
+ "hello from my tracing::event! yak shaved = {:?}",
+ true
+ )),
+ )),
+ )
+ .only()
.run_with_handle();
with_default(subscriber, || {
- debug!("hello from my event! yak shaved = {:?}", true);
+ debug!("hello from my tracing::event! yak shaved = {:?}", true);
});
handle.assert_finished();
@@ -76,10 +80,12 @@ fn event_with_message() {
fn message_without_delims() {
let (subscriber, handle) = subscriber::mock()
.event(
- event::mock().with_fields(
- field::mock("answer")
+ expect::event().with_fields(
+ expect::field("answer")
.with_value(&42)
- .and(field::mock("question").with_value(&"life, the universe, and everything"))
+ .and(
+ expect::field("question").with_value(&"life, the universe, and everything"),
+ )
.and(field::msg(format_args!(
"hello from my event! tricky? {:?}!",
true
@@ -87,7 +93,7 @@ fn message_without_delims() {
.only(),
),
)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -103,15 +109,17 @@ fn message_without_delims() {
fn string_message_without_delims() {
let (subscriber, handle) = subscriber::mock()
.event(
- event::mock().with_fields(
- field::mock("answer")
+ expect::event().with_fields(
+ expect::field("answer")
.with_value(&42)
- .and(field::mock("question").with_value(&"life, the universe, and everything"))
+ .and(
+ expect::field("question").with_value(&"life, the universe, and everything"),
+ )
.and(field::msg(format_args!("hello from my event")))
.only(),
),
)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -127,23 +135,23 @@ fn string_message_without_delims() {
fn one_with_everything() {
let (subscriber, handle) = subscriber::mock()
.event(
- event::mock()
+ expect::event()
.with_fields(
- field::mock("message")
+ expect::field("message")
.with_value(&tracing::field::debug(format_args!(
"{:#x} make me one with{what:.>20}",
4_277_009_102u64,
what = "everything"
)))
- .and(field::mock("foo").with_value(&666))
- .and(field::mock("bar").with_value(&false))
- .and(field::mock("like_a_butterfly").with_value(&42.0))
+ .and(expect::field("foo").with_value(&666))
+ .and(expect::field("bar").with_value(&false))
+ .and(expect::field("like_a_butterfly").with_value(&42.0))
.only(),
)
.at_level(Level::ERROR)
.with_target("whatever"),
)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -163,13 +171,13 @@ fn one_with_everything() {
fn moved_field() {
let (subscriber, handle) = subscriber::mock()
.event(
- event::mock().with_fields(
- field::mock("foo")
+ expect::event().with_fields(
+ expect::field("foo")
.with_value(&display("hello from my event"))
.only(),
),
)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
let from = "my event";
@@ -184,14 +192,14 @@ fn moved_field() {
fn dotted_field_name() {
let (subscriber, handle) = subscriber::mock()
.event(
- event::mock().with_fields(
- field::mock("foo.bar")
+ expect::event().with_fields(
+ expect::field("foo.bar")
.with_value(&true)
- .and(field::mock("foo.baz").with_value(&false))
+ .and(expect::field("foo.baz").with_value(&false))
.only(),
),
)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
tracing::event!(Level::INFO, foo.bar = true, foo.baz = false);
@@ -205,13 +213,13 @@ fn dotted_field_name() {
fn borrowed_field() {
let (subscriber, handle) = subscriber::mock()
.event(
- event::mock().with_fields(
- field::mock("foo")
+ expect::event().with_fields(
+ expect::field("foo")
.with_value(&display("hello from my event"))
.only(),
),
)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
let from = "my event";
@@ -242,15 +250,15 @@ fn move_field_out_of_struct() {
};
let (subscriber, handle) = subscriber::mock()
.event(
- event::mock().with_fields(
- field::mock("x")
+ expect::event().with_fields(
+ expect::field("x")
.with_value(&debug(3.234))
- .and(field::mock("y").with_value(&debug(-1.223)))
+ .and(expect::field("y").with_value(&debug(-1.223)))
.only(),
),
)
- .event(event::mock().with_fields(field::mock("position").with_value(&debug(&pos))))
- .done()
+ .event(expect::event().with_fields(expect::field("position").with_value(&debug(&pos))))
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -269,13 +277,13 @@ fn move_field_out_of_struct() {
fn display_shorthand() {
let (subscriber, handle) = subscriber::mock()
.event(
- event::mock().with_fields(
- field::mock("my_field")
+ expect::event().with_fields(
+ expect::field("my_field")
.with_value(&display("hello world"))
.only(),
),
)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
tracing::event!(Level::TRACE, my_field = %"hello world");
@@ -289,13 +297,13 @@ fn display_shorthand() {
fn debug_shorthand() {
let (subscriber, handle) = subscriber::mock()
.event(
- event::mock().with_fields(
- field::mock("my_field")
+ expect::event().with_fields(
+ expect::field("my_field")
.with_value(&debug("hello world"))
.only(),
),
)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
tracing::event!(Level::TRACE, my_field = ?"hello world");
@@ -309,14 +317,14 @@ fn debug_shorthand() {
fn both_shorthands() {
let (subscriber, handle) = subscriber::mock()
.event(
- event::mock().with_fields(
- field::mock("display_field")
+ expect::event().with_fields(
+ expect::field("display_field")
.with_value(&display("hello world"))
- .and(field::mock("debug_field").with_value(&debug("hello world")))
+ .and(expect::field("debug_field").with_value(&debug("hello world")))
.only(),
),
)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
tracing::event!(Level::TRACE, display_field = %"hello world", debug_field = ?"hello world");
@@ -329,9 +337,9 @@ fn both_shorthands() {
#[test]
fn explicit_child() {
let (subscriber, handle) = subscriber::mock()
- .new_span(span::mock().named("foo"))
- .event(event::mock().with_explicit_parent(Some("foo")))
- .done()
+ .new_span(expect::span().named("foo"))
+ .event(expect::event().with_explicit_parent(Some("foo")))
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -346,13 +354,13 @@ fn explicit_child() {
#[test]
fn explicit_child_at_levels() {
let (subscriber, handle) = subscriber::mock()
- .new_span(span::mock().named("foo"))
- .event(event::mock().with_explicit_parent(Some("foo")))
- .event(event::mock().with_explicit_parent(Some("foo")))
- .event(event::mock().with_explicit_parent(Some("foo")))
- .event(event::mock().with_explicit_parent(Some("foo")))
- .event(event::mock().with_explicit_parent(Some("foo")))
- .done()
+ .new_span(expect::span().named("foo"))
+ .event(expect::event().with_explicit_parent(Some("foo")))
+ .event(expect::event().with_explicit_parent(Some("foo")))
+ .event(expect::event().with_explicit_parent(Some("foo")))
+ .event(expect::event().with_explicit_parent(Some("foo")))
+ .event(expect::event().with_explicit_parent(Some("foo")))
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -372,15 +380,15 @@ fn explicit_child_at_levels() {
fn option_values() {
let (subscriber, handle) = subscriber::mock()
.event(
- event::mock().with_fields(
- field::mock("some_str")
+ expect::event().with_fields(
+ expect::field("some_str")
.with_value(&"yes")
- .and(field::mock("some_bool").with_value(&true))
- .and(field::mock("some_u64").with_value(&42_u64))
+ .and(expect::field("some_bool").with_value(&true))
+ .and(expect::field("some_u64").with_value(&42_u64))
.only(),
),
)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -408,15 +416,15 @@ fn option_values() {
fn option_ref_values() {
let (subscriber, handle) = subscriber::mock()
.event(
- event::mock().with_fields(
- field::mock("some_str")
+ expect::event().with_fields(
+ expect::field("some_str")
.with_value(&"yes")
- .and(field::mock("some_bool").with_value(&true))
- .and(field::mock("some_u64").with_value(&42_u64))
+ .and(expect::field("some_bool").with_value(&true))
+ .and(expect::field("some_u64").with_value(&42_u64))
.only(),
),
)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -444,15 +452,15 @@ fn option_ref_values() {
fn option_ref_mut_values() {
let (subscriber, handle) = subscriber::mock()
.event(
- event::mock().with_fields(
- field::mock("some_str")
+ expect::event().with_fields(
+ expect::field("some_str")
.with_value(&"yes")
- .and(field::mock("some_bool").with_value(&true))
- .and(field::mock("some_u64").with_value(&42_u64))
+ .and(expect::field("some_bool").with_value(&true))
+ .and(expect::field("some_u64").with_value(&42_u64))
.only(),
),
)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -479,11 +487,15 @@ fn option_ref_mut_values() {
#[test]
fn string_field() {
let (subscriber, handle) = subscriber::mock()
- .event(event::mock().with_fields(field::mock("my_string").with_value(&"hello").only()))
+ .event(expect::event().with_fields(expect::field("my_string").with_value(&"hello").only()))
.event(
- event::mock().with_fields(field::mock("my_string").with_value(&"hello world!").only()),
+ expect::event().with_fields(
+ expect::field("my_string")
+ .with_value(&"hello world!")
+ .only(),
+ ),
)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
let mut my_string = String::from("hello");
@@ -498,3 +510,45 @@ fn string_field() {
handle.assert_finished();
}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn constant_field_name() {
+ let expect_event = || {
+ expect::event().with_fields(
+ expect::field("foo")
+ .with_value(&"bar")
+ .and(expect::field("constant string").with_value(&"also works"))
+ .and(expect::field("foo.bar").with_value(&"baz"))
+ .and(expect::field("message").with_value(&debug(format_args!("quux"))))
+ .only(),
+ )
+ };
+ let (subscriber, handle) = subscriber::mock()
+ .event(expect_event())
+ .event(expect_event())
+ .only()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ const FOO: &str = "foo";
+ tracing::event!(
+ Level::INFO,
+ { std::convert::identity(FOO) } = "bar",
+ { "constant string" } = "also works",
+ foo.bar = "baz",
+ "quux"
+ );
+ tracing::event!(
+ Level::INFO,
+ {
+ { std::convert::identity(FOO) } = "bar",
+ { "constant string" } = "also works",
+ foo.bar = "baz",
+ },
+ "quux"
+ );
+ });
+
+ handle.assert_finished();
+}
diff --git a/vendor/tracing/tests/filters_dont_leak.rs b/vendor/tracing/tests/filters_dont_leak.rs
index 2ef1c9c70..c46b91f18 100644
--- a/vendor/tracing/tests/filters_dont_leak.rs
+++ b/vendor/tracing/tests/filters_dont_leak.rs
@@ -13,14 +13,14 @@ fn spans_dont_leak() {
let (subscriber, handle) = subscriber::mock()
.named("spans/subscriber1")
.with_filter(|_| false)
- .done()
+ .only()
.run_with_handle();
let _guard = tracing::subscriber::set_default(subscriber);
do_span();
- let alice = span::mock().named("alice");
+ let alice = expect::span().named("alice");
let (subscriber2, handle2) = subscriber::mock()
.named("spans/subscriber2")
.with_filter(|_| true)
@@ -28,7 +28,7 @@ fn spans_dont_leak() {
.enter(alice.clone())
.exit(alice.clone())
.drop_span(alice)
- .done()
+ .only()
.run_with_handle();
tracing::subscriber::with_default(subscriber2, || {
@@ -53,7 +53,7 @@ fn events_dont_leak() {
let (subscriber, handle) = subscriber::mock()
.named("events/subscriber1")
.with_filter(|_| false)
- .done()
+ .only()
.run_with_handle();
let _guard = tracing::subscriber::set_default(subscriber);
@@ -63,8 +63,8 @@ fn events_dont_leak() {
let (subscriber2, handle2) = subscriber::mock()
.named("events/subscriber2")
.with_filter(|_| true)
- .event(event::mock())
- .done()
+ .event(expect::event())
+ .only()
.run_with_handle();
tracing::subscriber::with_default(subscriber2, || {
diff --git a/vendor/tracing/tests/instrument.rs b/vendor/tracing/tests/instrument.rs
new file mode 100644
index 000000000..524724994
--- /dev/null
+++ b/vendor/tracing/tests/instrument.rs
@@ -0,0 +1,59 @@
+// These tests require the thread-local scoped dispatcher, which only works when
+// we have a standard library. The behaviour being tested should be the same
+// with the standard lib disabled.
+#![cfg(feature = "std")]
+
+use std::{future::Future, pin::Pin, task};
+
+use futures::FutureExt as _;
+use tracing::{subscriber::with_default, Instrument as _, Level};
+use tracing_mock::*;
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn span_on_drop() {
+ #[derive(Clone, Debug)]
+ struct AssertSpanOnDrop;
+
+ impl Drop for AssertSpanOnDrop {
+ fn drop(&mut self) {
+ tracing::info!("Drop");
+ }
+ }
+
+ struct Fut(Option<AssertSpanOnDrop>);
+
+ impl Future for Fut {
+ type Output = ();
+
+ fn poll(mut self: Pin<&mut Self>, _: &mut task::Context<'_>) -> task::Poll<Self::Output> {
+ self.set(Fut(None));
+ task::Poll::Ready(())
+ }
+ }
+
+ let subscriber = subscriber::mock()
+ .enter(expect::span().named("foo"))
+ .event(expect::event().at_level(Level::INFO))
+ .exit(expect::span().named("foo"))
+ .enter(expect::span().named("foo"))
+ .exit(expect::span().named("foo"))
+ .drop_span(expect::span().named("foo"))
+ .enter(expect::span().named("bar"))
+ .event(expect::event().at_level(Level::INFO))
+ .exit(expect::span().named("bar"))
+ .drop_span(expect::span().named("bar"))
+ .only()
+ .run();
+
+ with_default(subscriber, || {
+ // polled once
+ Fut(Some(AssertSpanOnDrop))
+ .instrument(tracing::span!(Level::TRACE, "foo"))
+ .now_or_never()
+ .unwrap();
+
+ // never polled
+ drop(Fut(Some(AssertSpanOnDrop)).instrument(tracing::span!(Level::TRACE, "bar")));
+ });
+}
diff --git a/vendor/tracing/tests/macros.rs b/vendor/tracing/tests/macros.rs
index a9679a3e9..81b929d1d 100644
--- a/vendor/tracing/tests/macros.rs
+++ b/vendor/tracing/tests/macros.rs
@@ -1,4 +1,14 @@
#![deny(warnings)]
+// We call all macros in this module with `no_implicit_prelude` to ensure they do not depend on the standard prelude.
+#![no_implicit_prelude]
+extern crate tracing;
+#[cfg(target_arch = "wasm32")]
+extern crate wasm_bindgen_test;
+
+// TODO: remove this once https://github.com/tokio-rs/tracing/pull/2675#issuecomment-1667628907 is resolved
+#[cfg(target_arch = "wasm32")]
+use ::core::option::Option::None;
+
use tracing::{
callsite, debug, debug_span, enabled, error, error_span, event, event_enabled, info, info_span,
span, span_enabled, trace, trace_span, warn, warn_span, Level,
@@ -111,80 +121,142 @@ fn error_span() {
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
#[test]
fn span_root() {
- span!(target: "foo_events", parent: None, Level::TRACE, "foo", bar.baz = 2, quux = 3);
- span!(target: "foo_events", parent: None, Level::TRACE, "foo", bar.baz = 2, quux = 3);
- span!(target: "foo_events", parent: None, Level::TRACE, "foo", bar.baz = 2, quux = 4,);
- span!(target: "foo_events", parent: None, Level::TRACE, "foo");
- span!(target: "foo_events", parent: None, Level::TRACE, "bar",);
- span!(parent: None, Level::DEBUG, "foo", bar.baz = 2, quux = 3);
- span!(parent: None, Level::DEBUG, "foo", bar.baz = 2, quux = 4,);
- span!(parent: None, Level::DEBUG, "foo");
- span!(parent: None, Level::DEBUG, "bar",);
+ span!(target: "foo_events", parent: ::core::option::Option::None, Level::TRACE, "foo", bar.baz = 2, quux = 3);
+ span!(target: "foo_events", parent: ::core::option::Option::None, Level::TRACE, "foo", bar.baz = 2, quux = 3);
+ span!(target: "foo_events", parent: ::core::option::Option::None, Level::TRACE, "foo", bar.baz = 2, quux = 4,);
+ span!(target: "foo_events", parent: ::core::option::Option::None, Level::TRACE, "foo");
+ span!(target: "foo_events", parent: ::core::option::Option::None, Level::TRACE, "bar",);
+ span!(
+ parent: ::core::option::Option::None,
+ Level::DEBUG,
+ "foo",
+ bar.baz = 2,
+ quux = 3
+ );
+ span!(
+ parent: ::core::option::Option::None,
+ Level::DEBUG,
+ "foo",
+ bar.baz = 2,
+ quux = 4,
+ );
+ span!(parent: ::core::option::Option::None, Level::DEBUG, "foo");
+ span!(parent: ::core::option::Option::None, Level::DEBUG, "bar",);
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
#[test]
fn trace_span_root() {
- trace_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 3);
- trace_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 4,);
- trace_span!(target: "foo_events", parent: None, "foo");
- trace_span!(target: "foo_events", parent: None, "bar",);
- trace_span!(parent: None, "foo", bar.baz = 2, quux = 3);
- trace_span!(parent: None, "foo", bar.baz = 2, quux = 4,);
- trace_span!(parent: None, "foo");
- trace_span!(parent: None, "bar",);
+ trace_span!(target: "foo_events", parent: ::core::option::Option::None, "foo", bar.baz = 2, quux = 3);
+ trace_span!(target: "foo_events", parent: ::core::option::Option::None, "foo", bar.baz = 2, quux = 4,);
+ trace_span!(target: "foo_events", parent: ::core::option::Option::None, "foo");
+ trace_span!(target: "foo_events", parent: ::core::option::Option::None, "bar",);
+ trace_span!(
+ parent: ::core::option::Option::None,
+ "foo",
+ bar.baz = 2,
+ quux = 3
+ );
+ trace_span!(
+ parent: ::core::option::Option::None,
+ "foo",
+ bar.baz = 2,
+ quux = 4,
+ );
+ trace_span!(parent: ::core::option::Option::None, "foo");
+ trace_span!(parent: ::core::option::Option::None, "bar",);
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
#[test]
fn debug_span_root() {
- debug_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 3);
- debug_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 4,);
- debug_span!(target: "foo_events", parent: None, "foo");
- debug_span!(target: "foo_events", parent: None, "bar",);
- debug_span!(parent: None, "foo", bar.baz = 2, quux = 3);
- debug_span!(parent: None, "foo", bar.baz = 2, quux = 4,);
- debug_span!(parent: None, "foo");
- debug_span!(parent: None, "bar",);
+ debug_span!(target: "foo_events", parent: ::core::option::Option::None, "foo", bar.baz = 2, quux = 3);
+ debug_span!(target: "foo_events", parent: ::core::option::Option::None, "foo", bar.baz = 2, quux = 4,);
+ debug_span!(target: "foo_events", parent: ::core::option::Option::None, "foo");
+ debug_span!(target: "foo_events", parent: ::core::option::Option::None, "bar",);
+ debug_span!(
+ parent: ::core::option::Option::None,
+ "foo",
+ bar.baz = 2,
+ quux = 3
+ );
+ debug_span!(
+ parent: ::core::option::Option::None,
+ "foo",
+ bar.baz = 2,
+ quux = 4,
+ );
+ debug_span!(parent: ::core::option::Option::None, "foo");
+ debug_span!(parent: ::core::option::Option::None, "bar",);
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
#[test]
fn info_span_root() {
- info_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 3);
- info_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 4,);
- info_span!(target: "foo_events", parent: None, "foo");
- info_span!(target: "foo_events", parent: None, "bar",);
- info_span!(parent: None, "foo", bar.baz = 2, quux = 3);
- info_span!(parent: None, "foo", bar.baz = 2, quux = 4,);
- info_span!(parent: None, "foo");
- info_span!(parent: None, "bar",);
+ info_span!(target: "foo_events", parent: ::core::option::Option::None, "foo", bar.baz = 2, quux = 3);
+ info_span!(target: "foo_events", parent: ::core::option::Option::None, "foo", bar.baz = 2, quux = 4,);
+ info_span!(target: "foo_events", parent: ::core::option::Option::None, "foo");
+ info_span!(target: "foo_events", parent: ::core::option::Option::None, "bar",);
+ info_span!(
+ parent: ::core::option::Option::None,
+ "foo",
+ bar.baz = 2,
+ quux = 3
+ );
+ info_span!(
+ parent: ::core::option::Option::None,
+ "foo",
+ bar.baz = 2,
+ quux = 4,
+ );
+ info_span!(parent: ::core::option::Option::None, "foo");
+ info_span!(parent: ::core::option::Option::None, "bar",);
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
#[test]
fn warn_span_root() {
- warn_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 3);
- warn_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 4,);
- warn_span!(target: "foo_events", parent: None, "foo");
- warn_span!(target: "foo_events", parent: None, "bar",);
- warn_span!(parent: None, "foo", bar.baz = 2, quux = 3);
- warn_span!(parent: None, "foo", bar.baz = 2, quux = 4,);
- warn_span!(parent: None, "foo");
- warn_span!(parent: None, "bar",);
+ warn_span!(target: "foo_events", parent: ::core::option::Option::None, "foo", bar.baz = 2, quux = 3);
+ warn_span!(target: "foo_events", parent: ::core::option::Option::None, "foo", bar.baz = 2, quux = 4,);
+ warn_span!(target: "foo_events", parent: ::core::option::Option::None, "foo");
+ warn_span!(target: "foo_events", parent: ::core::option::Option::None, "bar",);
+ warn_span!(
+ parent: ::core::option::Option::None,
+ "foo",
+ bar.baz = 2,
+ quux = 3
+ );
+ warn_span!(
+ parent: ::core::option::Option::None,
+ "foo",
+ bar.baz = 2,
+ quux = 4,
+ );
+ warn_span!(parent: ::core::option::Option::None, "foo");
+ warn_span!(parent: ::core::option::Option::None, "bar",);
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
#[test]
fn error_span_root() {
- error_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 3);
- error_span!(target: "foo_events", parent: None, "foo", bar.baz = 2, quux = 4,);
- error_span!(target: "foo_events", parent: None, "foo");
- error_span!(target: "foo_events", parent: None, "bar",);
- error_span!(parent: None, "foo", bar.baz = 2, quux = 3);
- error_span!(parent: None, "foo", bar.baz = 2, quux = 4,);
- error_span!(parent: None, "foo");
- error_span!(parent: None, "bar",);
+ error_span!(target: "foo_events", parent: ::core::option::Option::None, "foo", bar.baz = 2, quux = 3);
+ error_span!(target: "foo_events", parent: ::core::option::Option::None, "foo", bar.baz = 2, quux = 4,);
+ error_span!(target: "foo_events", parent: ::core::option::Option::None, "foo");
+ error_span!(target: "foo_events", parent: ::core::option::Option::None, "bar",);
+ error_span!(
+ parent: ::core::option::Option::None,
+ "foo",
+ bar.baz = 2,
+ quux = 3
+ );
+ error_span!(
+ parent: ::core::option::Option::None,
+ "foo",
+ bar.baz = 2,
+ quux = 4,
+ );
+ error_span!(parent: ::core::option::Option::None, "foo");
+ error_span!(parent: ::core::option::Option::None, "bar",);
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
@@ -300,6 +372,48 @@ fn span_with_non_rust_symbol() {
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
#[test]
+fn large_span() {
+ span!(
+ Level::TRACE,
+ "spans with more than 32 fields have been supported since #2508",
+ a = 1,
+ b = 2,
+ c = 3,
+ d = 4,
+ e = 5,
+ f = 6,
+ g = 7,
+ h = 8,
+ i = 9,
+ j = 10,
+ k = 11,
+ l = 12,
+ m = 13,
+ n = 14,
+ o = 15,
+ p = 16,
+ q = 17,
+ r = 18,
+ s = 19,
+ t = 20,
+ u = 21,
+ v = 22,
+ w = 23,
+ x = 24,
+ y = 25,
+ z = 26,
+ aa = 27,
+ bb = 28,
+ cc = 29,
+ dd = 30,
+ ee = 31,
+ ff = 32,
+ gg = 33
+ );
+}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
fn event() {
event!(Level::DEBUG, foo = ?3, bar.baz = %2, quux = false);
event!(Level::DEBUG, foo = 3, bar.baz = 2, quux = false);
@@ -400,6 +514,13 @@ fn locals_no_message() {
let private_data = "private";
let error = "a bad error";
event!(
+ name: "foo",
+ target: "app_events",
+ Level::WARN,
+ private_data,
+ ?data,
+ );
+ event!(
target: "app_events",
Level::WARN,
private_data,
@@ -438,6 +559,8 @@ fn trace() {
trace!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
trace!({ foo = 2, bar.baz = 78 }, "quux");
trace!({ foo = ?2, bar.baz = %78 }, "quux");
+ trace!(name: "foo", foo = 3, bar.baz = 2, quux = false);
+ trace!(name: "foo", target: "foo_events", foo = 3, bar.baz = 2, quux = false);
trace!(target: "foo_events", foo = 3, bar.baz = 2, quux = false);
trace!(target: "foo_events", foo = 3, bar.baz = 3,);
trace!(target: "foo_events", "foo");
@@ -450,6 +573,12 @@ fn trace() {
trace!(?foo);
trace!(%foo);
trace!(foo);
+ trace!(name: "foo", ?foo);
+ trace!(name: "foo", %foo);
+ trace!(name: "foo", foo);
+ trace!(name: "foo", ?foo, true, "message");
+ trace!(name: "foo", %foo, true, "message");
+ trace!(name: "foo", foo, true, "message");
trace!(target: "foo_events", ?foo);
trace!(target: "foo_events", %foo);
trace!(target: "foo_events", foo);
@@ -474,6 +603,8 @@ fn debug() {
debug!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
debug!({ foo = 2, bar.baz = 78 }, "quux");
debug!({ foo = ?2, bar.baz = %78 }, "quux");
+ debug!(name: "foo", foo = 3, bar.baz = 2, quux = false);
+ debug!(name: "foo", target: "foo_events", foo = 3, bar.baz = 2, quux = false);
debug!(target: "foo_events", foo = 3, bar.baz = 2, quux = false);
debug!(target: "foo_events", foo = 3, bar.baz = 3,);
debug!(target: "foo_events", "foo");
@@ -486,6 +617,12 @@ fn debug() {
debug!(?foo);
debug!(%foo);
debug!(foo);
+ debug!(name: "foo", ?foo);
+ debug!(name: "foo", %foo);
+ debug!(name: "foo", foo);
+ debug!(name: "foo", ?foo, true, "message");
+ debug!(name: "foo", %foo, true, "message");
+ debug!(name: "foo", foo, true, "message");
debug!(target: "foo_events", ?foo);
debug!(target: "foo_events", %foo);
debug!(target: "foo_events", foo);
@@ -510,6 +647,8 @@ fn info() {
info!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
info!({ foo = 2, bar.baz = 78 }, "quux");
info!({ foo = ?2, bar.baz = %78 }, "quux");
+ info!(name: "foo", foo = 3, bar.baz = 2, quux = false);
+ info!(name: "foo", target: "foo_events", foo = 3, bar.baz = 2, quux = false);
info!(target: "foo_events", foo = 3, bar.baz = 2, quux = false);
info!(target: "foo_events", foo = 3, bar.baz = 3,);
info!(target: "foo_events", "foo");
@@ -522,6 +661,12 @@ fn info() {
info!(?foo);
info!(%foo);
info!(foo);
+ info!(name: "foo", ?foo);
+ info!(name: "foo", %foo);
+ info!(name: "foo", foo);
+ info!(name: "foo", ?foo, true, "message");
+ info!(name: "foo", %foo, true, "message");
+ info!(name: "foo", foo, true, "message");
info!(target: "foo_events", ?foo);
info!(target: "foo_events", %foo);
info!(target: "foo_events", foo);
@@ -546,6 +691,8 @@ fn warn() {
warn!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
warn!({ foo = 2, bar.baz = 78 }, "quux");
warn!({ foo = ?2, bar.baz = %78 }, "quux");
+ warn!(name: "foo", foo = 3, bar.baz = 2, quux = false);
+ warn!(name: "foo", target: "foo_events", foo = 3, bar.baz = 2, quux = false);
warn!(target: "foo_events", foo = 3, bar.baz = 2, quux = false);
warn!(target: "foo_events", foo = 3, bar.baz = 3,);
warn!(target: "foo_events", "foo");
@@ -558,6 +705,12 @@ fn warn() {
warn!(?foo);
warn!(%foo);
warn!(foo);
+ warn!(name: "foo", ?foo);
+ warn!(name: "foo", %foo);
+ warn!(name: "foo", foo);
+ warn!(name: "foo", ?foo, true, "message");
+ warn!(name: "foo", %foo, true, "message");
+ warn!(name: "foo", foo, true, "message");
warn!(target: "foo_events", ?foo);
warn!(target: "foo_events", %foo);
warn!(target: "foo_events", foo);
@@ -582,6 +735,8 @@ fn error() {
error!({ foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
error!({ foo = 2, bar.baz = 78, }, "quux");
error!({ foo = ?2, bar.baz = %78 }, "quux");
+ error!(name: "foo", foo = 3, bar.baz = 2, quux = false);
+ error!(name: "foo", target: "foo_events", foo = 3, bar.baz = 2, quux = false);
error!(target: "foo_events", foo = 3, bar.baz = 2, quux = false);
error!(target: "foo_events", foo = 3, bar.baz = 3,);
error!(target: "foo_events", "foo");
@@ -594,6 +749,12 @@ fn error() {
error!(?foo);
error!(%foo);
error!(foo);
+ error!(name: "foo", ?foo);
+ error!(name: "foo", %foo);
+ error!(name: "foo", foo);
+ error!(name: "foo", ?foo, true, "message");
+ error!(name: "foo", %foo, true, "message");
+ error!(name: "foo", foo, true, "message");
error!(target: "foo_events", ?foo);
error!(target: "foo_events", %foo);
error!(target: "foo_events", foo);
@@ -605,144 +766,227 @@ fn error() {
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
#[test]
fn event_root() {
- event!(parent: None, Level::DEBUG, foo = ?3, bar.baz = %2, quux = false);
+ event!(parent: ::core::option::Option::None, Level::DEBUG, foo = ?3, bar.baz = %2, quux = false);
event!(
- parent: None,
+ parent: ::core::option::Option::None,
Level::DEBUG,
foo = 3,
bar.baz = 2,
quux = false
);
- event!(parent: None, Level::DEBUG, foo = 3, bar.baz = 3,);
- event!(parent: None, Level::DEBUG, "foo");
- event!(parent: None, Level::DEBUG, "foo: {}", 3);
- event!(parent: None, Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
- event!(parent: None, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
- event!(parent: None, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
- event!(parent: None, Level::DEBUG, { foo = ?2, bar.baz = %78 }, "quux");
- event!(target: "foo_events", parent: None, Level::DEBUG, foo = 3, bar.baz = 2, quux = false);
- event!(target: "foo_events", parent: None, Level::DEBUG, foo = 3, bar.baz = 3,);
- event!(target: "foo_events", parent: None, Level::DEBUG, "foo");
- event!(target: "foo_events", parent: None, Level::DEBUG, "foo: {}", 3);
- event!(target: "foo_events", parent: None, Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
- event!(target: "foo_events", parent: None, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
- event!(target: "foo_events", parent: None, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
- event!(target: "foo_events", parent: None, Level::DEBUG, { foo = 2, bar.baz = 78, }, "quux");
+ event!(
+ parent: ::core::option::Option::None,
+ Level::DEBUG,
+ foo = 3,
+ bar.baz = 3,
+ );
+ event!(parent: ::core::option::Option::None, Level::DEBUG, "foo");
+ event!(
+ parent: ::core::option::Option::None,
+ Level::DEBUG,
+ "foo: {}",
+ 3
+ );
+ event!(parent: ::core::option::Option::None, Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
+ event!(parent: ::core::option::Option::None, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ event!(parent: ::core::option::Option::None, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ event!(parent: ::core::option::Option::None, Level::DEBUG, { foo = ?2, bar.baz = %78 }, "quux");
+ event!(target: "foo_events", parent: ::core::option::Option::None, Level::DEBUG, foo = 3, bar.baz = 2, quux = false);
+ event!(target: "foo_events", parent: ::core::option::Option::None, Level::DEBUG, foo = 3, bar.baz = 3,);
+ event!(target: "foo_events", parent: ::core::option::Option::None, Level::DEBUG, "foo");
+ event!(target: "foo_events", parent: ::core::option::Option::None, Level::DEBUG, "foo: {}", 3);
+ event!(target: "foo_events", parent: ::core::option::Option::None, Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
+ event!(target: "foo_events", parent: ::core::option::Option::None, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ event!(target: "foo_events", parent: ::core::option::Option::None, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ event!(target: "foo_events", parent: ::core::option::Option::None, Level::DEBUG, { foo = 2, bar.baz = 78, }, "quux");
+ event!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, Level::DEBUG, foo = 3, bar.baz = 2, quux = false);
+ event!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, Level::DEBUG, foo = 3, bar.baz = 3,);
+ event!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, Level::DEBUG, "foo");
+ event!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, Level::DEBUG, "foo: {}", 3);
+ event!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
+ event!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ event!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ event!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, Level::DEBUG, { foo = 2, bar.baz = 78, }, "quux");
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
#[test]
fn trace_root() {
- trace!(parent: None, foo = ?3, bar.baz = %2, quux = false);
- trace!(parent: None, foo = 3, bar.baz = 2, quux = false);
- trace!(parent: None, foo = 3, bar.baz = 3,);
- trace!(parent: None, "foo");
- trace!(parent: None, "foo: {}", 3);
- trace!(parent: None, { foo = 3, bar.baz = 80 }, "quux");
- trace!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
- trace!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
- trace!(parent: None, { foo = 2, bar.baz = 78 }, "quux");
- trace!(parent: None, { foo = ?2, bar.baz = %78 }, "quux");
- trace!(target: "foo_events", parent: None, foo = 3, bar.baz = 2, quux = false);
- trace!(target: "foo_events", parent: None, foo = 3, bar.baz = 3,);
- trace!(target: "foo_events", parent: None, "foo");
- trace!(target: "foo_events", parent: None, "foo: {}", 3);
- trace!(target: "foo_events", parent: None, { foo = 3, bar.baz = 80 }, "quux");
- trace!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
- trace!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
- trace!(target: "foo_events", parent: None, { foo = 2, bar.baz = 78, }, "quux");
+ trace!(parent: ::core::option::Option::None, foo = ?3, bar.baz = %2, quux = false);
+ trace!(
+ parent: ::core::option::Option::None,
+ foo = 3,
+ bar.baz = 2,
+ quux = false
+ );
+ trace!(parent: ::core::option::Option::None, foo = 3, bar.baz = 3,);
+ trace!(parent: ::core::option::Option::None, "foo");
+ trace!(parent: ::core::option::Option::None, "foo: {}", 3);
+ trace!(parent: ::core::option::Option::None, { foo = 3, bar.baz = 80 }, "quux");
+ trace!(parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ trace!(parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ trace!(parent: ::core::option::Option::None, { foo = 2, bar.baz = 78 }, "quux");
+ trace!(parent: ::core::option::Option::None, { foo = ?2, bar.baz = %78 }, "quux");
+ trace!(target: "foo_events", parent: ::core::option::Option::None, foo = 3, bar.baz = 2, quux = false);
+ trace!(target: "foo_events", parent: ::core::option::Option::None, foo = 3, bar.baz = 3,);
+ trace!(target: "foo_events", parent: ::core::option::Option::None, "foo");
+ trace!(target: "foo_events", parent: ::core::option::Option::None, "foo: {}", 3);
+ trace!(target: "foo_events", parent: ::core::option::Option::None, { foo = 3, bar.baz = 80 }, "quux");
+ trace!(target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ trace!(target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ trace!(target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 78, }, "quux");
+ trace!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, foo = 3, bar.baz = 2, quux = false);
+ trace!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, foo = 3, bar.baz = 3,);
+ trace!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, "foo");
+ trace!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, "foo: {}", 3);
+ trace!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, { foo = 3, bar.baz = 80 }, "quux");
+ trace!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ trace!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ trace!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 78, }, "quux");
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
#[test]
fn debug_root() {
- debug!(parent: None, foo = ?3, bar.baz = %2, quux = false);
- debug!(parent: None, foo = 3, bar.baz = 2, quux = false);
- debug!(parent: None, foo = 3, bar.baz = 3,);
- debug!(parent: None, "foo");
- debug!(parent: None, "foo: {}", 3);
- debug!(parent: None, { foo = 3, bar.baz = 80 }, "quux");
- debug!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
- debug!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
- debug!(parent: None, { foo = 2, bar.baz = 78 }, "quux");
- debug!(parent: None, { foo = ?2, bar.baz = %78 }, "quux");
- debug!(target: "foo_events", parent: None, foo = 3, bar.baz = 2, quux = false);
- debug!(target: "foo_events", parent: None, foo = 3, bar.baz = 3,);
- debug!(target: "foo_events", parent: None, "foo");
- debug!(target: "foo_events", parent: None, "foo: {}", 3);
- debug!(target: "foo_events", parent: None, { foo = 3, bar.baz = 80 }, "quux");
- debug!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
- debug!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
- debug!(target: "foo_events", parent: None, { foo = 2, bar.baz = 78, }, "quux");
+ debug!(parent: ::core::option::Option::None, foo = ?3, bar.baz = %2, quux = false);
+ debug!(
+ parent: ::core::option::Option::None,
+ foo = 3,
+ bar.baz = 2,
+ quux = false
+ );
+ debug!(parent: ::core::option::Option::None, foo = 3, bar.baz = 3,);
+ debug!(parent: ::core::option::Option::None, "foo");
+ debug!(parent: ::core::option::Option::None, "foo: {}", 3);
+ debug!(parent: ::core::option::Option::None, { foo = 3, bar.baz = 80 }, "quux");
+ debug!(parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ debug!(parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ debug!(parent: ::core::option::Option::None, { foo = 2, bar.baz = 78 }, "quux");
+ debug!(parent: ::core::option::Option::None, { foo = ?2, bar.baz = %78 }, "quux");
+ debug!(target: "foo_events", parent: ::core::option::Option::None, foo = 3, bar.baz = 2, quux = false);
+ debug!(target: "foo_events", parent: ::core::option::Option::None, foo = 3, bar.baz = 3,);
+ debug!(target: "foo_events", parent: ::core::option::Option::None, "foo");
+ debug!(target: "foo_events", parent: ::core::option::Option::None, "foo: {}", 3);
+ debug!(target: "foo_events", parent: ::core::option::Option::None, { foo = 3, bar.baz = 80 }, "quux");
+ debug!(target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ debug!(target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ debug!(target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 78, }, "quux");
+ debug!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, foo = 3, bar.baz = 2, quux = false);
+ debug!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, foo = 3, bar.baz = 3,);
+ debug!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, "foo");
+ debug!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, "foo: {}", 3);
+ debug!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, { foo = 3, bar.baz = 80 }, "quux");
+ debug!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ debug!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ debug!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 78, }, "quux");
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
#[test]
fn info_root() {
- info!(parent: None, foo = ?3, bar.baz = %2, quux = false);
- info!(parent: None, foo = 3, bar.baz = 2, quux = false);
- info!(parent: None, foo = 3, bar.baz = 3,);
- info!(parent: None, "foo");
- info!(parent: None, "foo: {}", 3);
- info!(parent: None, { foo = 3, bar.baz = 80 }, "quux");
- info!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
- info!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
- info!(parent: None, { foo = 2, bar.baz = 78 }, "quux");
- info!(parent: None, { foo = ?2, bar.baz = %78 }, "quux");
- info!(target: "foo_events", parent: None, foo = 3, bar.baz = 2, quux = false);
- info!(target: "foo_events", parent: None, foo = 3, bar.baz = 3,);
- info!(target: "foo_events", parent: None, "foo");
- info!(target: "foo_events", parent: None, "foo: {}", 3);
- info!(target: "foo_events", parent: None, { foo = 3, bar.baz = 80 }, "quux");
- info!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
- info!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
- info!(target: "foo_events", parent: None, { foo = 2, bar.baz = 78, }, "quux");
+ info!(parent: ::core::option::Option::None, foo = ?3, bar.baz = %2, quux = false);
+ info!(
+ parent: ::core::option::Option::None,
+ foo = 3,
+ bar.baz = 2,
+ quux = false
+ );
+ info!(parent: ::core::option::Option::None, foo = 3, bar.baz = 3,);
+ info!(parent: ::core::option::Option::None, "foo");
+ info!(parent: ::core::option::Option::None, "foo: {}", 3);
+ info!(parent: ::core::option::Option::None, { foo = 3, bar.baz = 80 }, "quux");
+ info!(parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ info!(parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ info!(parent: ::core::option::Option::None, { foo = 2, bar.baz = 78 }, "quux");
+ info!(parent: ::core::option::Option::None, { foo = ?2, bar.baz = %78 }, "quux");
+ info!(target: "foo_events", parent: ::core::option::Option::None, foo = 3, bar.baz = 2, quux = false);
+ info!(target: "foo_events", parent: ::core::option::Option::None, foo = 3, bar.baz = 3,);
+ info!(target: "foo_events", parent: ::core::option::Option::None, "foo");
+ info!(target: "foo_events", parent: ::core::option::Option::None, "foo: {}", 3);
+ info!(target: "foo_events", parent: ::core::option::Option::None, { foo = 3, bar.baz = 80 }, "quux");
+ info!(target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ info!(target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ info!(target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 78, }, "quux");
+ info!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, foo = 3, bar.baz = 2, quux = false);
+ info!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, foo = 3, bar.baz = 3,);
+ info!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, "foo");
+ info!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, "foo: {}", 3);
+ info!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, { foo = 3, bar.baz = 80 }, "quux");
+ info!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ info!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ info!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 78, }, "quux");
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
#[test]
fn warn_root() {
- warn!(parent: None, foo = ?3, bar.baz = %2, quux = false);
- warn!(parent: None, foo = 3, bar.baz = 2, quux = false);
- warn!(parent: None, foo = 3, bar.baz = 3,);
- warn!(parent: None, "foo");
- warn!(parent: None, "foo: {}", 3);
- warn!(parent: None, { foo = 3, bar.baz = 80 }, "quux");
- warn!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
- warn!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
- warn!(parent: None, { foo = 2, bar.baz = 78 }, "quux");
- warn!(parent: None, { foo = ?2, bar.baz = %78 }, "quux");
- warn!(target: "foo_events", parent: None, foo = 3, bar.baz = 2, quux = false);
- warn!(target: "foo_events", parent: None, foo = 3, bar.baz = 3,);
- warn!(target: "foo_events", parent: None, "foo");
- warn!(target: "foo_events", parent: None, "foo: {}", 3);
- warn!(target: "foo_events", parent: None, { foo = 3, bar.baz = 80 }, "quux");
- warn!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
- warn!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
- warn!(target: "foo_events", parent: None, { foo = 2, bar.baz = 78, }, "quux");
+ warn!(parent: ::core::option::Option::None, foo = ?3, bar.baz = %2, quux = false);
+ warn!(
+ parent: ::core::option::Option::None,
+ foo = 3,
+ bar.baz = 2,
+ quux = false
+ );
+ warn!(parent: ::core::option::Option::None, foo = 3, bar.baz = 3,);
+ warn!(parent: ::core::option::Option::None, "foo");
+ warn!(parent: ::core::option::Option::None, "foo: {}", 3);
+ warn!(parent: ::core::option::Option::None, { foo = 3, bar.baz = 80 }, "quux");
+ warn!(parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ warn!(parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ warn!(parent: ::core::option::Option::None, { foo = 2, bar.baz = 78 }, "quux");
+ warn!(parent: ::core::option::Option::None, { foo = ?2, bar.baz = %78 }, "quux");
+ warn!(target: "foo_events", parent: ::core::option::Option::None, foo = 3, bar.baz = 2, quux = false);
+ warn!(target: "foo_events", parent: ::core::option::Option::None, foo = 3, bar.baz = 3,);
+ warn!(target: "foo_events", parent: ::core::option::Option::None, "foo");
+ warn!(target: "foo_events", parent: ::core::option::Option::None, "foo: {}", 3);
+ warn!(target: "foo_events", parent: ::core::option::Option::None, { foo = 3, bar.baz = 80 }, "quux");
+ warn!(target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ warn!(target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ warn!(target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 78, }, "quux");
+ warn!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, foo = 3, bar.baz = 2, quux = false);
+ warn!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, foo = 3, bar.baz = 3,);
+ warn!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, "foo");
+ warn!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, "foo: {}", 3);
+ warn!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, { foo = 3, bar.baz = 80 }, "quux");
+ warn!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ warn!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ warn!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 78, }, "quux");
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
#[test]
fn error_root() {
- error!(parent: None, foo = ?3, bar.baz = %2, quux = false);
- error!(parent: None, foo = 3, bar.baz = 2, quux = false);
- error!(parent: None, foo = 3, bar.baz = 3,);
- error!(parent: None, "foo");
- error!(parent: None, "foo: {}", 3);
- error!(parent: None, { foo = 3, bar.baz = 80 }, "quux");
- error!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
- error!(parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
- error!(parent: None, { foo = 2, bar.baz = 78 }, "quux");
- error!(parent: None, { foo = ?2, bar.baz = %78 }, "quux");
- error!(target: "foo_events", parent: None, foo = 3, bar.baz = 2, quux = false);
- error!(target: "foo_events", parent: None, foo = 3, bar.baz = 3,);
- error!(target: "foo_events", parent: None, "foo");
- error!(target: "foo_events", parent: None, "foo: {}", 3);
- error!(target: "foo_events", parent: None, { foo = 3, bar.baz = 80 }, "quux");
- error!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
- error!(target: "foo_events", parent: None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
- error!(target: "foo_events", parent: None, { foo = 2, bar.baz = 78, }, "quux");
+ error!(parent: ::core::option::Option::None, foo = ?3, bar.baz = %2, quux = false);
+ error!(
+ parent: ::core::option::Option::None,
+ foo = 3,
+ bar.baz = 2,
+ quux = false
+ );
+ error!(parent: ::core::option::Option::None, foo = 3, bar.baz = 3,);
+ error!(parent: ::core::option::Option::None, "foo");
+ error!(parent: ::core::option::Option::None, "foo: {}", 3);
+ error!(parent: ::core::option::Option::None, { foo = 3, bar.baz = 80 }, "quux");
+ error!(parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ error!(parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ error!(parent: ::core::option::Option::None, { foo = 2, bar.baz = 78 }, "quux");
+ error!(parent: ::core::option::Option::None, { foo = ?2, bar.baz = %78 }, "quux");
+ error!(target: "foo_events", parent: ::core::option::Option::None, foo = 3, bar.baz = 2, quux = false);
+ error!(target: "foo_events", parent: ::core::option::Option::None, foo = 3, bar.baz = 3,);
+ error!(target: "foo_events", parent: ::core::option::Option::None, "foo");
+ error!(target: "foo_events", parent: ::core::option::Option::None, "foo: {}", 3);
+ error!(target: "foo_events", parent: ::core::option::Option::None, { foo = 3, bar.baz = 80 }, "quux");
+ error!(target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ error!(target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ error!(target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 78, }, "quux");
+ error!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, foo = 3, bar.baz = 2, quux = false);
+ error!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, foo = 3, bar.baz = 3,);
+ error!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, "foo");
+ error!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, "foo: {}", 3);
+ error!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, { foo = 3, bar.baz = 80 }, "quux");
+ error!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ error!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ error!(name: "foo", target: "foo_events", parent: ::core::option::Option::None, { foo = 2, bar.baz = 78, }, "quux");
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
@@ -766,6 +1010,14 @@ fn event_with_parent() {
event!(target: "foo_events", parent: &p, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
event!(target: "foo_events", parent: &p, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
event!(target: "foo_events", parent: &p, Level::DEBUG, { foo = 2, bar.baz = 78, }, "quux");
+ event!(name: "foo", target: "foo_events", parent: &p, Level::DEBUG, foo = 3, bar.baz = 2, quux = false);
+ event!(name: "foo", target: "foo_events", parent: &p, Level::DEBUG, foo = 3, bar.baz = 3,);
+ event!(name: "foo", target: "foo_events", parent: &p, Level::DEBUG, "foo");
+ event!(name: "foo", target: "foo_events", parent: &p, Level::DEBUG, "foo: {}", 3);
+ event!(name: "foo", target: "foo_events", parent: &p, Level::DEBUG, { foo = 3, bar.baz = 80 }, "quux");
+ event!(name: "foo", target: "foo_events", parent: &p, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ event!(name: "foo", target: "foo_events", parent: &p, Level::DEBUG, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ event!(name: "foo", target: "foo_events", parent: &p, Level::DEBUG, { foo = 2, bar.baz = 78, }, "quux");
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
@@ -790,6 +1042,14 @@ fn trace_with_parent() {
trace!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
trace!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
trace!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
+ trace!(name: "foo", target: "foo_events", parent: &p, foo = 3, bar.baz = 2, quux = false);
+ trace!(name: "foo", target: "foo_events", parent: &p, foo = 3, bar.baz = 3,);
+ trace!(name: "foo", target: "foo_events", parent: &p, "foo");
+ trace!(name: "foo", target: "foo_events", parent: &p, "foo: {}", 3);
+ trace!(name: "foo", target: "foo_events", parent: &p, { foo = 3, bar.baz = 80 }, "quux");
+ trace!(name: "foo", target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ trace!(name: "foo", target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ trace!(name: "foo", target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
@@ -814,6 +1074,14 @@ fn debug_with_parent() {
debug!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
debug!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
debug!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
+ debug!(name: "foo", target: "foo_events", parent: &p, foo = 3, bar.baz = 2, quux = false);
+ debug!(name: "foo", target: "foo_events", parent: &p, foo = 3, bar.baz = 3,);
+ debug!(name: "foo", target: "foo_events", parent: &p, "foo");
+ debug!(name: "foo", target: "foo_events", parent: &p, "foo: {}", 3);
+ debug!(name: "foo", target: "foo_events", parent: &p, { foo = 3, bar.baz = 80 }, "quux");
+ debug!(name: "foo", target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ debug!(name: "foo", target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ debug!(name: "foo", target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
@@ -838,6 +1106,14 @@ fn info_with_parent() {
info!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
info!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
info!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
+ info!(name: "foo", target: "foo_events", parent: &p, foo = 3, bar.baz = 2, quux = false);
+ info!(name: "foo", target: "foo_events", parent: &p, foo = 3, bar.baz = 3,);
+ info!(name: "foo", target: "foo_events", parent: &p, "foo");
+ info!(name: "foo", target: "foo_events", parent: &p, "foo: {}", 3);
+ info!(name: "foo", target: "foo_events", parent: &p, { foo = 3, bar.baz = 80 }, "quux");
+ info!(name: "foo", target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ info!(name: "foo", target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ info!(name: "foo", target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
@@ -862,6 +1138,14 @@ fn warn_with_parent() {
warn!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
warn!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
warn!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
+ warn!(name: "foo", target: "foo_events", parent: &p, foo = 3, bar.baz = 2, quux = false);
+ warn!(name: "foo", target: "foo_events", parent: &p, foo = 3, bar.baz = 3,);
+ warn!(name: "foo", target: "foo_events", parent: &p, "foo");
+ warn!(name: "foo", target: "foo_events", parent: &p, "foo: {}", 3);
+ warn!(name: "foo", target: "foo_events", parent: &p, { foo = 3, bar.baz = 80 }, "quux");
+ warn!(name: "foo", target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ warn!(name: "foo", target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ warn!(name: "foo", target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
@@ -886,6 +1170,14 @@ fn error_with_parent() {
error!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
error!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
error!(target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
+ error!(name: "foo", target: "foo_events", parent: &p, foo = 3, bar.baz = 2, quux = false);
+ error!(name: "foo", target: "foo_events", parent: &p, foo = 3, bar.baz = 3,);
+ error!(name: "foo", target: "foo_events", parent: &p, "foo");
+ error!(name: "foo", target: "foo_events", parent: &p, "foo: {}", 3);
+ error!(name: "foo", target: "foo_events", parent: &p, { foo = 3, bar.baz = 80 }, "quux");
+ error!(name: "foo", target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}", true);
+ error!(name: "foo", target: "foo_events", parent: &p, { foo = 2, bar.baz = 79 }, "quux {:?}, {quux}", true, quux = false);
+ error!(name: "foo", target: "foo_events", parent: &p, { foo = 2, bar.baz = 78, }, "quux");
}
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
@@ -913,7 +1205,7 @@ fn field_shorthand_only() {
#[test]
fn borrow_val_events() {
// Reproduces https://github.com/tokio-rs/tracing/issues/954
- let mut foo = (String::new(), String::new());
+ let mut foo = (::std::string::String::new(), ::std::string::String::new());
let zero = &mut foo.0;
trace!(one = ?foo.1);
debug!(one = ?foo.1);
@@ -927,7 +1219,7 @@ fn borrow_val_events() {
#[test]
fn borrow_val_spans() {
// Reproduces https://github.com/tokio-rs/tracing/issues/954
- let mut foo = (String::new(), String::new());
+ let mut foo = (::std::string::String::new(), ::std::string::String::new());
let zero = &mut foo.0;
let _span = trace_span!("span", one = ?foo.1);
let _span = debug_span!("span", one = ?foo.1);
@@ -961,3 +1253,19 @@ fn callsite_macro_api() {
fields: foo,
};
}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn format_args_already_defined() {
+ // Reproduces: https://github.com/tokio-rs/tracing/issues/2721
+ #[allow(unused)]
+ macro_rules! format_args {
+ ($i:expr) => {};
+ }
+ event!(Level::DEBUG, "foo: {}", 3);
+ trace!("foo: {}", 3);
+ debug!("foo: {}", 3);
+ info!("foo: {}", 3);
+ warn!("foo: {}", 3);
+ error!("foo: {}", 3);
+}
diff --git a/vendor/tracing/tests/max_level_hint.rs b/vendor/tracing/tests/max_level_hint.rs
index 63d3af635..2e04bc3f1 100644
--- a/vendor/tracing/tests/max_level_hint.rs
+++ b/vendor/tracing/tests/max_level_hint.rs
@@ -20,10 +20,10 @@ fn max_level_hints() {
);
true
})
- .event(event::mock().at_level(Level::INFO))
- .event(event::mock().at_level(Level::WARN))
- .event(event::mock().at_level(Level::ERROR))
- .done()
+ .event(expect::event().at_level(Level::INFO))
+ .event(expect::event().at_level(Level::WARN))
+ .event(expect::event().at_level(Level::ERROR))
+ .only()
.run_with_handle();
tracing::subscriber::set_global_default(subscriber).unwrap();
diff --git a/vendor/tracing/tests/multiple_max_level_hints.rs b/vendor/tracing/tests/multiple_max_level_hints.rs
index dd50a193b..f78fda70f 100644
--- a/vendor/tracing/tests/multiple_max_level_hints.rs
+++ b/vendor/tracing/tests/multiple_max_level_hints.rs
@@ -35,10 +35,10 @@ fn multiple_max_level_hints() {
);
level <= &Level::INFO
})
- .event(event::mock().at_level(Level::INFO))
- .event(event::mock().at_level(Level::WARN))
- .event(event::mock().at_level(Level::ERROR))
- .done()
+ .event(expect::event().at_level(Level::INFO))
+ .event(expect::event().at_level(Level::WARN))
+ .event(expect::event().at_level(Level::ERROR))
+ .only()
.run_with_handle();
let (subscriber2, handle2) = subscriber::mock()
.named("subscriber2")
@@ -51,11 +51,11 @@ fn multiple_max_level_hints() {
);
level <= &Level::DEBUG
})
- .event(event::mock().at_level(Level::INFO))
- .event(event::mock().at_level(Level::DEBUG))
- .event(event::mock().at_level(Level::WARN))
- .event(event::mock().at_level(Level::ERROR))
- .done()
+ .event(expect::event().at_level(Level::INFO))
+ .event(expect::event().at_level(Level::DEBUG))
+ .event(expect::event().at_level(Level::WARN))
+ .event(expect::event().at_level(Level::ERROR))
+ .only()
.run_with_handle();
let dispatch1 = tracing::Dispatch::new(subscriber1);
diff --git a/vendor/tracing/tests/no_subscriber.rs b/vendor/tracing/tests/no_subscriber.rs
index 5f927c1de..d15a2c8a1 100644
--- a/vendor/tracing/tests/no_subscriber.rs
+++ b/vendor/tracing/tests/no_subscriber.rs
@@ -1,14 +1,15 @@
#![cfg(feature = "std")]
-use tracing::subscriber::{self, NoSubscriber};
+use tracing_mock::subscriber;
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
#[test]
fn no_subscriber_disables_global() {
// Reproduces https://github.com/tokio-rs/tracing/issues/1999
- let (subscriber, handle) = tracing_mock::subscriber::mock().done().run_with_handle();
- subscriber::set_global_default(subscriber).expect("setting global default must succeed");
- subscriber::with_default(NoSubscriber::default(), || {
+ let (subscriber, handle) = subscriber::mock().only().run_with_handle();
+ tracing::subscriber::set_global_default(subscriber)
+ .expect("setting global default must succeed");
+ tracing::subscriber::with_default(tracing::subscriber::NoSubscriber::default(), || {
tracing::info!("this should not be recorded");
});
handle.assert_finished();
diff --git a/vendor/tracing/tests/scoped_clobbers_default.rs b/vendor/tracing/tests/scoped_clobbers_default.rs
index 362d34a82..dfd6fc9de 100644
--- a/vendor/tracing/tests/scoped_clobbers_default.rs
+++ b/vendor/tracing/tests/scoped_clobbers_default.rs
@@ -8,12 +8,12 @@ fn scoped_clobbers_global() {
let (scoped, scoped_handle) = subscriber::mock()
.event(event::msg("before global"))
.event(event::msg("before drop"))
- .done()
+ .only()
.run_with_handle();
let (global, global_handle) = subscriber::mock()
.event(event::msg("after drop"))
- .done()
+ .only()
.run_with_handle();
// Set a scoped default subscriber, returning a guard.
diff --git a/vendor/tracing/tests/span.rs b/vendor/tracing/tests/span.rs
index 4ed650023..09f1be895 100644
--- a/vendor/tracing/tests/span.rs
+++ b/vendor/tracing/tests/span.rs
@@ -21,7 +21,12 @@ fn handles_to_the_same_span_are_equal() {
// expect to see any spans.
with_default(subscriber::mock().run(), || {
let foo1 = tracing::span!(Level::TRACE, "foo");
+
+ // The purpose of this test is to assert that two clones of the same
+ // span are equal, so the clone here is kind of the whole point :)
+ #[allow(clippy::redundant_clone)]
let foo2 = foo1.clone();
+
// Two handles that point to the same span are equal.
assert_eq!(foo1, foo2);
});
@@ -62,12 +67,12 @@ fn handles_to_different_spans_with_the_same_metadata_are_not_equal() {
#[test]
fn spans_always_go_to_the_subscriber_that_tagged_them() {
let subscriber1 = subscriber::mock()
- .enter(span::mock().named("foo"))
- .exit(span::mock().named("foo"))
- .enter(span::mock().named("foo"))
- .exit(span::mock().named("foo"))
- .drop_span(span::mock().named("foo"))
- .done()
+ .enter(expect::span().named("foo"))
+ .exit(expect::span().named("foo"))
+ .enter(expect::span().named("foo"))
+ .exit(expect::span().named("foo"))
+ .drop_span(expect::span().named("foo"))
+ .only()
.run();
let subscriber2 = subscriber::mock().run();
@@ -89,12 +94,12 @@ fn spans_always_go_to_the_subscriber_that_tagged_them() {
#[test]
fn spans_always_go_to_the_subscriber_that_tagged_them_even_across_threads() {
let subscriber1 = subscriber::mock()
- .enter(span::mock().named("foo"))
- .exit(span::mock().named("foo"))
- .enter(span::mock().named("foo"))
- .exit(span::mock().named("foo"))
- .drop_span(span::mock().named("foo"))
- .done()
+ .enter(expect::span().named("foo"))
+ .exit(expect::span().named("foo"))
+ .enter(expect::span().named("foo"))
+ .exit(expect::span().named("foo"))
+ .drop_span(expect::span().named("foo"))
+ .only()
.run();
let foo = with_default(subscriber1, || {
let foo = tracing::span!(Level::TRACE, "foo");
@@ -117,10 +122,10 @@ fn spans_always_go_to_the_subscriber_that_tagged_them_even_across_threads() {
#[test]
fn dropping_a_span_calls_drop_span() {
let (subscriber, handle) = subscriber::mock()
- .enter(span::mock().named("foo"))
- .exit(span::mock().named("foo"))
- .drop_span(span::mock().named("foo"))
- .done()
+ .enter(expect::span().named("foo"))
+ .exit(expect::span().named("foo"))
+ .drop_span(expect::span().named("foo"))
+ .only()
.run_with_handle();
with_default(subscriber, || {
let span = tracing::span!(Level::TRACE, "foo");
@@ -135,11 +140,11 @@ fn dropping_a_span_calls_drop_span() {
#[test]
fn span_closes_after_event() {
let (subscriber, handle) = subscriber::mock()
- .enter(span::mock().named("foo"))
- .event(event::mock())
- .exit(span::mock().named("foo"))
- .drop_span(span::mock().named("foo"))
- .done()
+ .enter(expect::span().named("foo"))
+ .event(expect::event())
+ .exit(expect::span().named("foo"))
+ .drop_span(expect::span().named("foo"))
+ .only()
.run_with_handle();
with_default(subscriber, || {
tracing::span!(Level::TRACE, "foo").in_scope(|| {
@@ -154,14 +159,14 @@ fn span_closes_after_event() {
#[test]
fn new_span_after_event() {
let (subscriber, handle) = subscriber::mock()
- .enter(span::mock().named("foo"))
- .event(event::mock())
- .exit(span::mock().named("foo"))
- .drop_span(span::mock().named("foo"))
- .enter(span::mock().named("bar"))
- .exit(span::mock().named("bar"))
- .drop_span(span::mock().named("bar"))
- .done()
+ .enter(expect::span().named("foo"))
+ .event(expect::event())
+ .exit(expect::span().named("foo"))
+ .drop_span(expect::span().named("foo"))
+ .enter(expect::span().named("bar"))
+ .exit(expect::span().named("bar"))
+ .drop_span(expect::span().named("bar"))
+ .only()
.run_with_handle();
with_default(subscriber, || {
tracing::span!(Level::TRACE, "foo").in_scope(|| {
@@ -177,11 +182,11 @@ fn new_span_after_event() {
#[test]
fn event_outside_of_span() {
let (subscriber, handle) = subscriber::mock()
- .event(event::mock())
- .enter(span::mock().named("foo"))
- .exit(span::mock().named("foo"))
- .drop_span(span::mock().named("foo"))
- .done()
+ .event(expect::event())
+ .enter(expect::span().named("foo"))
+ .exit(expect::span().named("foo"))
+ .drop_span(expect::span().named("foo"))
+ .only()
.run_with_handle();
with_default(subscriber, || {
tracing::debug!("my tracing::event!");
@@ -195,7 +200,7 @@ fn event_outside_of_span() {
#[test]
fn cloning_a_span_calls_clone_span() {
let (subscriber, handle) = subscriber::mock()
- .clone_span(span::mock().named("foo"))
+ .clone_span(expect::span().named("foo"))
.run_with_handle();
with_default(subscriber, || {
let span = tracing::span!(Level::TRACE, "foo");
@@ -211,9 +216,9 @@ fn cloning_a_span_calls_clone_span() {
#[test]
fn drop_span_when_exiting_dispatchers_context() {
let (subscriber, handle) = subscriber::mock()
- .clone_span(span::mock().named("foo"))
- .drop_span(span::mock().named("foo"))
- .drop_span(span::mock().named("foo"))
+ .clone_span(expect::span().named("foo"))
+ .drop_span(expect::span().named("foo"))
+ .drop_span(expect::span().named("foo"))
.run_with_handle();
with_default(subscriber, || {
let span = tracing::span!(Level::TRACE, "foo");
@@ -228,15 +233,15 @@ fn drop_span_when_exiting_dispatchers_context() {
#[test]
fn clone_and_drop_span_always_go_to_the_subscriber_that_tagged_the_span() {
let (subscriber1, handle1) = subscriber::mock()
- .enter(span::mock().named("foo"))
- .exit(span::mock().named("foo"))
- .clone_span(span::mock().named("foo"))
- .enter(span::mock().named("foo"))
- .exit(span::mock().named("foo"))
- .drop_span(span::mock().named("foo"))
- .drop_span(span::mock().named("foo"))
+ .enter(expect::span().named("foo"))
+ .exit(expect::span().named("foo"))
+ .clone_span(expect::span().named("foo"))
+ .enter(expect::span().named("foo"))
+ .exit(expect::span().named("foo"))
+ .drop_span(expect::span().named("foo"))
+ .drop_span(expect::span().named("foo"))
.run_with_handle();
- let subscriber2 = subscriber::mock().done().run();
+ let subscriber2 = subscriber::mock().only().run();
let foo = with_default(subscriber1, || {
let foo = tracing::span!(Level::TRACE, "foo");
@@ -259,10 +264,10 @@ fn clone_and_drop_span_always_go_to_the_subscriber_that_tagged_the_span() {
#[test]
fn span_closes_when_exited() {
let (subscriber, handle) = subscriber::mock()
- .enter(span::mock().named("foo"))
- .exit(span::mock().named("foo"))
- .drop_span(span::mock().named("foo"))
- .done()
+ .enter(expect::span().named("foo"))
+ .exit(expect::span().named("foo"))
+ .drop_span(expect::span().named("foo"))
+ .only()
.run_with_handle();
with_default(subscriber, || {
let foo = tracing::span!(Level::TRACE, "foo");
@@ -279,11 +284,11 @@ fn span_closes_when_exited() {
#[test]
fn enter() {
let (subscriber, handle) = subscriber::mock()
- .enter(span::mock().named("foo"))
- .event(event::mock())
- .exit(span::mock().named("foo"))
- .drop_span(span::mock().named("foo"))
- .done()
+ .enter(expect::span().named("foo"))
+ .event(expect::event())
+ .exit(expect::span().named("foo"))
+ .drop_span(expect::span().named("foo"))
+ .only()
.run_with_handle();
with_default(subscriber, || {
let foo = tracing::span!(Level::TRACE, "foo");
@@ -298,11 +303,11 @@ fn enter() {
#[test]
fn entered() {
let (subscriber, handle) = subscriber::mock()
- .enter(span::mock().named("foo"))
- .event(event::mock())
- .exit(span::mock().named("foo"))
- .drop_span(span::mock().named("foo"))
- .done()
+ .enter(expect::span().named("foo"))
+ .event(expect::event())
+ .exit(expect::span().named("foo"))
+ .drop_span(expect::span().named("foo"))
+ .only()
.run_with_handle();
with_default(subscriber, || {
let _span = tracing::span!(Level::TRACE, "foo").entered();
@@ -316,11 +321,11 @@ fn entered() {
#[test]
fn entered_api() {
let (subscriber, handle) = subscriber::mock()
- .enter(span::mock().named("foo"))
- .event(event::mock())
- .exit(span::mock().named("foo"))
- .drop_span(span::mock().named("foo"))
- .done()
+ .enter(expect::span().named("foo"))
+ .event(expect::event())
+ .exit(expect::span().named("foo"))
+ .drop_span(expect::span().named("foo"))
+ .only()
.run_with_handle();
with_default(subscriber, || {
let span = tracing::span!(Level::TRACE, "foo").entered();
@@ -337,16 +342,16 @@ fn entered_api() {
fn moved_field() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- span::mock().named("foo").with_field(
- field::mock("bar")
+ expect::span().named("foo").with_field(
+ expect::field("bar")
.with_value(&display("hello from my span"))
.only(),
),
)
- .enter(span::mock().named("foo"))
- .exit(span::mock().named("foo"))
- .drop_span(span::mock().named("foo"))
- .done()
+ .enter(expect::span().named("foo"))
+ .exit(expect::span().named("foo"))
+ .drop_span(expect::span().named("foo"))
+ .only()
.run_with_handle();
with_default(subscriber, || {
let from = "my span";
@@ -366,11 +371,11 @@ fn moved_field() {
fn dotted_field_name() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- span::mock()
+ expect::span()
.named("foo")
- .with_field(field::mock("fields.bar").with_value(&true).only()),
+ .with_field(expect::field("fields.bar").with_value(&true).only()),
)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
tracing::span!(Level::TRACE, "foo", fields.bar = true);
@@ -384,16 +389,16 @@ fn dotted_field_name() {
fn borrowed_field() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- span::mock().named("foo").with_field(
- field::mock("bar")
+ expect::span().named("foo").with_field(
+ expect::field("bar")
.with_value(&display("hello from my span"))
.only(),
),
)
- .enter(span::mock().named("foo"))
- .exit(span::mock().named("foo"))
- .drop_span(span::mock().named("foo"))
- .done()
+ .enter(expect::span().named("foo"))
+ .exit(expect::span().named("foo"))
+ .drop_span(expect::span().named("foo"))
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -427,17 +432,17 @@ fn move_field_out_of_struct() {
};
let (subscriber, handle) = subscriber::mock()
.new_span(
- span::mock().named("foo").with_field(
- field::mock("x")
+ expect::span().named("foo").with_field(
+ expect::field("x")
.with_value(&debug(3.234))
- .and(field::mock("y").with_value(&debug(-1.223)))
+ .and(expect::field("y").with_value(&debug(-1.223)))
.only(),
),
)
.new_span(
- span::mock()
+ expect::span()
.named("bar")
- .with_field(field::mock("position").with_value(&debug(&pos)).only()),
+ .with_field(expect::field("position").with_value(&debug(&pos)).only()),
)
.run_with_handle();
@@ -460,10 +465,10 @@ fn move_field_out_of_struct() {
fn float_values() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- span::mock().named("foo").with_field(
- field::mock("x")
+ expect::span().named("foo").with_field(
+ expect::field("x")
.with_value(&3.234)
- .and(field::mock("y").with_value(&-1.223))
+ .and(expect::field("y").with_value(&-1.223))
.only(),
),
)
@@ -485,19 +490,19 @@ fn float_values() {
fn add_field_after_new_span() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- span::mock()
+ expect::span()
.named("foo")
- .with_field(field::mock("bar").with_value(&5)
- .and(field::mock("baz").with_value).only()),
+ .with_field(expect::field("bar").with_value(&5)
+ .and(expect::field("baz").with_value).only()),
)
.record(
- span::mock().named("foo"),
- field::mock("baz").with_value(&true).only(),
+ expect::span().named("foo"),
+ field::expect("baz").with_value(&true).only(),
)
- .enter(span::mock().named("foo"))
- .exit(span::mock().named("foo"))
- .drop_span(span::mock().named("foo"))
- .done()
+ .enter(expect::span().named("foo"))
+ .exit(expect::span().named("foo"))
+ .drop_span(expect::span().named("foo"))
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -513,19 +518,19 @@ fn add_field_after_new_span() {
#[test]
fn add_fields_only_after_new_span() {
let (subscriber, handle) = subscriber::mock()
- .new_span(span::mock().named("foo"))
+ .new_span(expect::span().named("foo"))
.record(
- span::mock().named("foo"),
- field::mock("bar").with_value(&5).only(),
+ expect::span().named("foo"),
+ field::expect("bar").with_value(&5).only(),
)
.record(
- span::mock().named("foo"),
- field::mock("baz").with_value(&true).only(),
+ expect::span().named("foo"),
+ field::expect("baz").with_value(&true).only(),
)
- .enter(span::mock().named("foo"))
- .exit(span::mock().named("foo"))
- .drop_span(span::mock().named("foo"))
- .done()
+ .enter(expect::span().named("foo"))
+ .exit(expect::span().named("foo"))
+ .drop_span(expect::span().named("foo"))
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -544,26 +549,26 @@ fn add_fields_only_after_new_span() {
fn record_new_value_for_field() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- span::mock().named("foo").with_field(
- field::mock("bar")
+ expect::span().named("foo").with_field(
+ expect::field("bar")
.with_value(&5)
- .and(field::mock("baz").with_value(&false))
+ .and(expect::field("baz").with_value(&false))
.only(),
),
)
.record(
- span::mock().named("foo"),
- field::mock("baz").with_value(&true).only(),
+ expect::span().named("foo"),
+ expect::field("baz").with_value(&true).only(),
)
- .enter(span::mock().named("foo"))
- .exit(span::mock().named("foo"))
- .drop_span(span::mock().named("foo"))
- .done()
+ .enter(expect::span().named("foo"))
+ .exit(expect::span().named("foo"))
+ .drop_span(expect::span().named("foo"))
+ .only()
.run_with_handle();
with_default(subscriber, || {
let span = tracing::span!(Level::TRACE, "foo", bar = 5, baz = false);
- span.record("baz", &true);
+ span.record("baz", true);
span.in_scope(|| {})
});
@@ -575,31 +580,31 @@ fn record_new_value_for_field() {
fn record_new_values_for_fields() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- span::mock().named("foo").with_field(
- field::mock("bar")
+ expect::span().named("foo").with_field(
+ expect::field("bar")
.with_value(&4)
- .and(field::mock("baz").with_value(&false))
+ .and(expect::field("baz").with_value(&false))
.only(),
),
)
.record(
- span::mock().named("foo"),
- field::mock("bar").with_value(&5).only(),
+ expect::span().named("foo"),
+ expect::field("bar").with_value(&5).only(),
)
.record(
- span::mock().named("foo"),
- field::mock("baz").with_value(&true).only(),
+ expect::span().named("foo"),
+ expect::field("baz").with_value(&true).only(),
)
- .enter(span::mock().named("foo"))
- .exit(span::mock().named("foo"))
- .drop_span(span::mock().named("foo"))
- .done()
+ .enter(expect::span().named("foo"))
+ .exit(expect::span().named("foo"))
+ .drop_span(expect::span().named("foo"))
+ .only()
.run_with_handle();
with_default(subscriber, || {
let span = tracing::span!(Level::TRACE, "foo", bar = 4, baz = false);
- span.record("bar", &5);
- span.record("baz", &true);
+ span.record("bar", 5);
+ span.record("baz", true);
span.in_scope(|| {})
});
@@ -611,12 +616,12 @@ fn record_new_values_for_fields() {
fn new_span_with_target_and_log_level() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- span::mock()
+ expect::span()
.named("foo")
.with_target("app_span")
.at_level(Level::DEBUG),
)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -630,8 +635,8 @@ fn new_span_with_target_and_log_level() {
#[test]
fn explicit_root_span_is_root() {
let (subscriber, handle) = subscriber::mock()
- .new_span(span::mock().named("foo").with_explicit_parent(None))
- .done()
+ .new_span(expect::span().named("foo").with_explicit_parent(None))
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -645,11 +650,11 @@ fn explicit_root_span_is_root() {
#[test]
fn explicit_root_span_is_root_regardless_of_ctx() {
let (subscriber, handle) = subscriber::mock()
- .new_span(span::mock().named("foo"))
- .enter(span::mock().named("foo"))
- .new_span(span::mock().named("bar").with_explicit_parent(None))
- .exit(span::mock().named("foo"))
- .done()
+ .new_span(expect::span().named("foo"))
+ .enter(expect::span().named("foo"))
+ .new_span(expect::span().named("bar").with_explicit_parent(None))
+ .exit(expect::span().named("foo"))
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -665,9 +670,13 @@ fn explicit_root_span_is_root_regardless_of_ctx() {
#[test]
fn explicit_child() {
let (subscriber, handle) = subscriber::mock()
- .new_span(span::mock().named("foo"))
- .new_span(span::mock().named("bar").with_explicit_parent(Some("foo")))
- .done()
+ .new_span(expect::span().named("foo"))
+ .new_span(
+ expect::span()
+ .named("bar")
+ .with_explicit_parent(Some("foo")),
+ )
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -682,13 +691,13 @@ fn explicit_child() {
#[test]
fn explicit_child_at_levels() {
let (subscriber, handle) = subscriber::mock()
- .new_span(span::mock().named("foo"))
- .new_span(span::mock().named("a").with_explicit_parent(Some("foo")))
- .new_span(span::mock().named("b").with_explicit_parent(Some("foo")))
- .new_span(span::mock().named("c").with_explicit_parent(Some("foo")))
- .new_span(span::mock().named("d").with_explicit_parent(Some("foo")))
- .new_span(span::mock().named("e").with_explicit_parent(Some("foo")))
- .done()
+ .new_span(expect::span().named("foo"))
+ .new_span(expect::span().named("a").with_explicit_parent(Some("foo")))
+ .new_span(expect::span().named("b").with_explicit_parent(Some("foo")))
+ .new_span(expect::span().named("c").with_explicit_parent(Some("foo")))
+ .new_span(expect::span().named("d").with_explicit_parent(Some("foo")))
+ .new_span(expect::span().named("e").with_explicit_parent(Some("foo")))
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -707,12 +716,16 @@ fn explicit_child_at_levels() {
#[test]
fn explicit_child_regardless_of_ctx() {
let (subscriber, handle) = subscriber::mock()
- .new_span(span::mock().named("foo"))
- .new_span(span::mock().named("bar"))
- .enter(span::mock().named("bar"))
- .new_span(span::mock().named("baz").with_explicit_parent(Some("foo")))
- .exit(span::mock().named("bar"))
- .done()
+ .new_span(expect::span().named("foo"))
+ .new_span(expect::span().named("bar"))
+ .enter(expect::span().named("bar"))
+ .new_span(
+ expect::span()
+ .named("baz")
+ .with_explicit_parent(Some("foo")),
+ )
+ .exit(expect::span().named("bar"))
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -728,8 +741,8 @@ fn explicit_child_regardless_of_ctx() {
#[test]
fn contextual_root() {
let (subscriber, handle) = subscriber::mock()
- .new_span(span::mock().named("foo").with_contextual_parent(None))
- .done()
+ .new_span(expect::span().named("foo").with_contextual_parent(None))
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -743,15 +756,15 @@ fn contextual_root() {
#[test]
fn contextual_child() {
let (subscriber, handle) = subscriber::mock()
- .new_span(span::mock().named("foo"))
- .enter(span::mock().named("foo"))
+ .new_span(expect::span().named("foo"))
+ .enter(expect::span().named("foo"))
.new_span(
- span::mock()
+ expect::span()
.named("bar")
.with_contextual_parent(Some("foo")),
)
- .exit(span::mock().named("foo"))
- .done()
+ .exit(expect::span().named("foo"))
+ .only()
.run_with_handle();
with_default(subscriber, || {
@@ -768,13 +781,13 @@ fn contextual_child() {
fn display_shorthand() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- span::mock().named("my_span").with_field(
- field::mock("my_field")
+ expect::span().named("my_span").with_field(
+ expect::field("my_field")
.with_value(&display("hello world"))
.only(),
),
)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
tracing::span!(Level::TRACE, "my_span", my_field = %"hello world");
@@ -788,13 +801,13 @@ fn display_shorthand() {
fn debug_shorthand() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- span::mock().named("my_span").with_field(
- field::mock("my_field")
+ expect::span().named("my_span").with_field(
+ expect::field("my_field")
.with_value(&debug("hello world"))
.only(),
),
)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
tracing::span!(Level::TRACE, "my_span", my_field = ?"hello world");
@@ -808,14 +821,14 @@ fn debug_shorthand() {
fn both_shorthands() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- span::mock().named("my_span").with_field(
- field::mock("display_field")
+ expect::span().named("my_span").with_field(
+ expect::field("display_field")
.with_value(&display("hello world"))
- .and(field::mock("debug_field").with_value(&debug("hello world")))
+ .and(expect::field("debug_field").with_value(&debug("hello world")))
.only(),
),
)
- .done()
+ .only()
.run_with_handle();
with_default(subscriber, || {
tracing::span!(Level::TRACE, "my_span", display_field = %"hello world", debug_field = ?"hello world");
@@ -823,3 +836,33 @@ fn both_shorthands() {
handle.assert_finished();
}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn constant_field_name() {
+ let (subscriber, handle) = subscriber::mock()
+ .new_span(
+ expect::span().named("my_span").with_field(
+ expect::field("foo")
+ .with_value(&"bar")
+ .and(expect::field("constant string").with_value(&"also works"))
+ .and(expect::field("foo.bar").with_value(&"baz"))
+ .only(),
+ ),
+ )
+ .only()
+ .run_with_handle();
+
+ with_default(subscriber, || {
+ const FOO: &str = "foo";
+ tracing::span!(
+ Level::TRACE,
+ "my_span",
+ { std::convert::identity(FOO) } = "bar",
+ { "constant string" } = "also works",
+ foo.bar = "baz",
+ );
+ });
+
+ handle.assert_finished();
+}
diff --git a/vendor/tracing/tests/subscriber.rs b/vendor/tracing/tests/subscriber.rs
index 15557c107..f676efeee 100644
--- a/vendor/tracing/tests/subscriber.rs
+++ b/vendor/tracing/tests/subscriber.rs
@@ -11,8 +11,7 @@ use tracing::{
subscriber::{with_default, Interest, Subscriber},
Event, Level, Metadata,
};
-
-use tracing_mock::*;
+use tracing_mock::{expect, subscriber};
#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
#[test]
@@ -61,16 +60,16 @@ fn event_macros_dont_infinite_loop() {
fn boxed_subscriber() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- span::mock().named("foo").with_field(
- field::mock("bar")
+ expect::span().named("foo").with_field(
+ expect::field("bar")
.with_value(&display("hello from my span"))
.only(),
),
)
- .enter(span::mock().named("foo"))
- .exit(span::mock().named("foo"))
- .drop_span(span::mock().named("foo"))
- .done()
+ .enter(expect::span().named("foo"))
+ .exit(expect::span().named("foo"))
+ .drop_span(expect::span().named("foo"))
+ .only()
.run_with_handle();
let subscriber: Box<dyn Subscriber + Send + Sync + 'static> = Box::new(subscriber);
@@ -94,20 +93,20 @@ fn arced_subscriber() {
let (subscriber, handle) = subscriber::mock()
.new_span(
- span::mock().named("foo").with_field(
- field::mock("bar")
+ expect::span().named("foo").with_field(
+ expect::field("bar")
.with_value(&display("hello from my span"))
.only(),
),
)
- .enter(span::mock().named("foo"))
- .exit(span::mock().named("foo"))
- .drop_span(span::mock().named("foo"))
+ .enter(expect::span().named("foo"))
+ .exit(expect::span().named("foo"))
+ .drop_span(expect::span().named("foo"))
.event(
- event::mock()
- .with_fields(field::mock("message").with_value(&display("hello from my event"))),
+ expect::event()
+ .with_fields(expect::field("message").with_value(&display("hello from my event"))),
)
- .done()
+ .only()
.run_with_handle();
let subscriber: Arc<dyn Subscriber + Send + Sync + 'static> = Arc::new(subscriber);
diff --git a/vendor/ui_test-0.20.0/.cargo-checksum.json b/vendor/ui_test-0.20.0/.cargo-checksum.json
deleted file mode 100644
index 27886f95b..000000000
--- a/vendor/ui_test-0.20.0/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"CONTRIBUTING.md":"e030432e8f8830a0c6e6fb783dcae14c19d20f770d4e2e274a48693748d7bd68","Cargo.toml":"cbd19cfe012839028720b9337016bc3733e5ad39abe8ef2410acbd23e7352b59","README.md":"7bed6721a527e43182edc6b6a038fd8fe038f939c79def1cfba9976a917a3b03","src/cmd.rs":"a5d978fd5987488cd99a92d2561b70f122a3c3e8e93d0b8a89094a91bdcbbf94","src/config.rs":"2513f4f8125dfe8700c295973a316caa7216a54323ed600a49cff4d9b09eebbf","src/config/args.rs":"50e1ffc9eed4f94edf2e4bacf1d07e827c7a4fc60c1cb16d2003360b72945c6f","src/dependencies.rs":"4ddfada523b48f5053e464cd77b8c59d440fbf0c79481543405a57b6aa613d21","src/diff.rs":"b05d708188e82d7eaa36957b4a8d273e16954d304c99b58b3655087a26ddff39","src/error.rs":"14dd6d90542e3b6b2dc7ce706be73b8025f3e224639ffcfb965af5c3d210cae5","src/github_actions.rs":"f3fffae4629a3f27798f8d62a7627967e82396b36e951bb0db7596ed6b59a5cb","src/lib.rs":"743da0c1b327fe3434e89fc93fb449a22c7936bdedb2830c9c52d5895a125f65","src/mode.rs":"bcf256b2f5feefe14400b19f1b0176b2f01e3143197005a26d5f3dbf4455150a","src/parser.rs":"f2c473d8fd5c19ca54caa6a6f623acbf01389df405cbedf4d113caa0406e3582","src/parser/spanned.rs":"efebe51e6f2e8671903959230002fa71f7afbe65fbd24b3fba97607380364770","src/parser/tests.rs":"0850b18327af3a2ad97e7808541ae7616c483ff3fa1a059495e272ee5b4a1a05","src/rustc_stderr.rs":"92f93e47cc1f8dc26a854ddd51f0dbf92ca06503e3c82ba6fff5894a7bf4fffb","src/status_emitter.rs":"3cd65a96d774a62f3100398e080894fc5a670ab3e1f9d7c7bb60801452f00c37","src/tests.rs":"c5d91016280c8e6614f7244a008888a3fbb8f2c2775b347f420aa77d95134e62","tests/integration.rs":"8c755d022d019390cfa8b1cda06ee1e40052917118e9d30f9dc3c31160497cb3"},"package":"bfd8fb9b15c8332cf51bfc2dc4830063b2446a9c9d732421b56f2478024a3971"} \ No newline at end of file
diff --git a/vendor/ui_test/.cargo-checksum.json b/vendor/ui_test/.cargo-checksum.json
new file mode 100644
index 000000000..a6382dbed
--- /dev/null
+++ b/vendor/ui_test/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"CONTRIBUTING.md":"e030432e8f8830a0c6e6fb783dcae14c19d20f770d4e2e274a48693748d7bd68","Cargo.toml":"bb8a16a331419def0d4dd1f30883b515ececa0279d76925733c43def92440ab5","README.md":"257c99450b1755491a5d4637b46faa36ae109b93fceb3d17edcff012dae7692b","shell.nix":"bb52591afb6f875c13fdf4ab6933250f5884b2b0488b008507bd91a1d309b4b4","src/cmd.rs":"a5d978fd5987488cd99a92d2561b70f122a3c3e8e93d0b8a89094a91bdcbbf94","src/config.rs":"4a764cf612e86e5776598445480d01b33e96c8efb72c46e8e5b88d32cc8ab403","src/config/args.rs":"a18b1e875a5bb03fbf1b007d1b91469d2add879ab433191a7e36734bd81a9eb2","src/dependencies.rs":"4ddfada523b48f5053e464cd77b8c59d440fbf0c79481543405a57b6aa613d21","src/diff.rs":"b05d708188e82d7eaa36957b4a8d273e16954d304c99b58b3655087a26ddff39","src/error.rs":"c0d07964284299a3f39826cb6e59ab74ac1bfb904f0f96940239c27e6b5cf524","src/github_actions.rs":"f3fffae4629a3f27798f8d62a7627967e82396b36e951bb0db7596ed6b59a5cb","src/lib.rs":"47eef99c00e8fe9880d17e674fe9851294fa38b5884333808a841f56ee18d95f","src/mode.rs":"bcf256b2f5feefe14400b19f1b0176b2f01e3143197005a26d5f3dbf4455150a","src/parser.rs":"f2c473d8fd5c19ca54caa6a6f623acbf01389df405cbedf4d113caa0406e3582","src/parser/spanned.rs":"efebe51e6f2e8671903959230002fa71f7afbe65fbd24b3fba97607380364770","src/parser/tests.rs":"0850b18327af3a2ad97e7808541ae7616c483ff3fa1a059495e272ee5b4a1a05","src/rustc_stderr.rs":"92f93e47cc1f8dc26a854ddd51f0dbf92ca06503e3c82ba6fff5894a7bf4fffb","src/status_emitter.rs":"02f2ccb08ccbac4b3386a0eaffa9d3707c1bfedf2819a7838decf54edc679888","src/tests.rs":"769d79a1c89f0028710a770ee9ed08a1557ea92f432e1d4369690b2b6596e540","tests/integration.rs":"c607e7902ed8e7235b9fb43afc540ac0661f6a6c3457666893e8d76f05a94461"},"package":"aaf4bf7c184b8dfc7a4d3b90df789b1eb992ee42811cd115f32a7a1eb781058d"} \ No newline at end of file
diff --git a/vendor/ui_test-0.20.0/CONTRIBUTING.md b/vendor/ui_test/CONTRIBUTING.md
index d5165080c..d5165080c 100644
--- a/vendor/ui_test-0.20.0/CONTRIBUTING.md
+++ b/vendor/ui_test/CONTRIBUTING.md
diff --git a/vendor/ui_test-0.20.0/Cargo.toml b/vendor/ui_test/Cargo.toml
index 903a924c3..8478a7b02 100644
--- a/vendor/ui_test-0.20.0/Cargo.toml
+++ b/vendor/ui_test/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2021"
rust-version = "1.63"
name = "ui_test"
-version = "0.20.0"
+version = "0.21.2"
description = "A test framework for testing rustc diagnostics output"
readme = "README.md"
license = "MIT OR Apache-2.0"
diff --git a/vendor/ui_test-0.20.0/README.md b/vendor/ui_test/README.md
index 40dcc5ec4..cd827d098 100644
--- a/vendor/ui_test-0.20.0/README.md
+++ b/vendor/ui_test/README.md
@@ -6,6 +6,7 @@ A smaller version of compiletest-rs
So if you have any slow tests, prepend them with a small integral number to make them get run first, taking advantage of parallelism as much as possible (instead of waiting for the slow tests at the end).
* `cargo test --test your_test_name -- --help` lists the commands you can specify for filtering, blessing and making your tests less verbose.
* Since `cargo test` on its own runs all tests, using `cargo test -- --check` will not work on its own, but `cargo test -- --quiet` and `cargo test -- some_test_name` will work just fine, as the CLI matches.
+* if there is a `.stdin` file with the same filename as your test, it will be piped as standard input to your program.
## Supported magic comment annotations
@@ -53,6 +54,8 @@ their command specifies, or the test will fail without even being run.
* `//@aux-build: filename` looks for a file in the `auxiliary` directory (within the directory of the test), compiles it as a library and links the current crate against it. This allows you import the crate with `extern crate` or just via `use` statements. This will automatically detect aux files that are proc macros and build them as proc macros.
* `//@run` compiles the test and runs the resulting binary. The resulting binary must exit successfully. Stdout and stderr are taken from the resulting binary. Any warnings during compilation are ignored.
* You can also specify a different exit code/status that is expected via e.g. `//@run: 1` or `//@run: 101` (the latter is the standard Rust exit code for panics).
+ * run tests collect the run output into `.run.stderr` and `.run.stdout` respectively.
+ * if a `.run.stdin` file exists, it will be piped as standard input to your test's execution.
[rustfix]: https://github.com/rust-lang/rustfix
diff --git a/vendor/ui_test/shell.nix b/vendor/ui_test/shell.nix
new file mode 100644
index 000000000..8511dcca9
--- /dev/null
+++ b/vendor/ui_test/shell.nix
@@ -0,0 +1,18 @@
+let
+ pkgs = import <nixpkgs> {};
+in
+pkgs.mkShell rec {
+ name = "rustc";
+ buildInputs = with pkgs; [
+ rustup
+ pkg-config
+ alsaLib
+ libGL
+ xorg.libX11
+ xorg.libXi
+ python39
+ ];
+ RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}";
+ LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath buildInputs}";
+}
+
diff --git a/vendor/ui_test-0.20.0/src/cmd.rs b/vendor/ui_test/src/cmd.rs
index 53fa3e0f4..53fa3e0f4 100644
--- a/vendor/ui_test-0.20.0/src/cmd.rs
+++ b/vendor/ui_test/src/cmd.rs
diff --git a/vendor/ui_test-0.20.0/src/config.rs b/vendor/ui_test/src/config.rs
index 6779bab7d..c3837923d 100644
--- a/vendor/ui_test-0.20.0/src/config.rs
+++ b/vendor/ui_test/src/config.rs
@@ -10,7 +10,7 @@ use std::{
};
mod args;
-pub use args::Args;
+pub use args::{Args, Format};
#[derive(Debug, Clone)]
/// Central datastructure containing all information to run the tests.
@@ -53,6 +53,12 @@ pub struct Config {
pub filter_files: Vec<String>,
/// Override the number of threads to use.
pub threads: Option<NonZeroUsize>,
+ /// Nextest emulation: only list the test itself, not its components.
+ pub list: bool,
+ /// Only run the tests that are ignored.
+ pub run_only_ignored: bool,
+ /// Filters must match exactly instead of just checking for substrings.
+ pub filter_exact: bool,
}
impl Config {
@@ -94,6 +100,9 @@ impl Config {
skip_files: Vec::new(),
filter_files: Vec::new(),
threads: None,
+ list: false,
+ run_only_ignored: false,
+ filter_exact: false,
}
}
@@ -119,9 +128,12 @@ impl Config {
pub fn with_args(&mut self, args: &Args, default_bless: bool) {
let Args {
ref filters,
- quiet: _,
check,
bless,
+ list,
+ exact,
+ ignored,
+ format: _,
threads,
ref skip,
} = *args;
@@ -130,6 +142,10 @@ impl Config {
self.filter_files.extend_from_slice(filters);
self.skip_files.extend_from_slice(skip);
+ self.run_only_ignored = ignored;
+ self.filter_exact = exact;
+
+ self.list = list;
let bless = match (bless, check) {
(_, true) => false,
@@ -150,12 +166,14 @@ impl Config {
}
/// Replace all occurrences of a path in stderr/stdout with a byte string.
+ #[track_caller]
pub fn path_filter(&mut self, path: &Path, replacement: &'static (impl AsRef<[u8]> + ?Sized)) {
self.path_stderr_filter(path, replacement);
self.path_stdout_filter(path, replacement);
}
/// Replace all occurrences of a path in stderr with a byte string.
+ #[track_caller]
pub fn path_stderr_filter(
&mut self,
path: &Path,
@@ -167,6 +185,7 @@ impl Config {
}
/// Replace all occurrences of a path in stdout with a byte string.
+ #[track_caller]
pub fn path_stdout_filter(
&mut self,
path: &Path,
@@ -178,12 +197,14 @@ impl Config {
}
/// Replace all occurrences of a regex pattern in stderr/stdout with a byte string.
+ #[track_caller]
pub fn filter(&mut self, pattern: &str, replacement: &'static (impl AsRef<[u8]> + ?Sized)) {
self.stderr_filter(pattern, replacement);
self.stdout_filter(pattern, replacement);
}
/// Replace all occurrences of a regex pattern in stderr with a byte string.
+ #[track_caller]
pub fn stderr_filter(
&mut self,
pattern: &str,
@@ -194,6 +215,7 @@ impl Config {
}
/// Replace all occurrences of a regex pattern in stdout with a byte string.
+ #[track_caller]
pub fn stdout_filter(
&mut self,
pattern: &str,
diff --git a/vendor/ui_test-0.20.0/src/config/args.rs b/vendor/ui_test/src/config/args.rs
index 2d65dc7d5..101c77d03 100644
--- a/vendor/ui_test-0.20.0/src/config/args.rs
+++ b/vendor/ui_test/src/config/args.rs
@@ -11,9 +11,6 @@ pub struct Args {
/// Filters that will be used to match on individual tests
pub filters: Vec<String>,
- /// Whether to minimize output given to the user.
- pub quiet: bool,
-
/// Whether to error on mismatches between `.stderr` files and actual
/// output.
pub check: bool,
@@ -22,6 +19,18 @@ pub struct Args {
/// output.
pub bless: bool,
+ /// Only run the test matching the filters exactly.
+ pub exact: bool,
+
+ /// Whether to only run ignored tests.
+ pub ignored: bool,
+
+ /// List the tests that can be run.
+ pub list: bool,
+
+ /// Choose an output format
+ pub format: Format,
+
/// The number of threads to use
pub threads: Option<NonZeroUsize>,
@@ -29,6 +38,16 @@ pub struct Args {
pub skip: Vec<String>,
}
+/// Possible choices for styling the output.
+#[derive(Debug, Copy, Clone, Default)]
+pub enum Format {
+ /// Print one line per test
+ #[default]
+ Pretty,
+ /// Remove test lines once the test finishes and show a progress bar.
+ Terse,
+}
+
impl Args {
/// Parse the program arguments.
/// This is meant to be used if `ui_test` is used as a `harness=false` test, called from `cargo test`.
@@ -43,11 +62,25 @@ impl Args {
continue;
}
if arg == "--quiet" {
- self.quiet = true;
+ self.format = Format::Terse;
} else if arg == "--check" {
self.check = true;
} else if arg == "--bless" {
self.bless = true;
+ } else if arg == "--list" {
+ self.list = true;
+ } else if arg == "--exact" {
+ self.exact = true;
+ } else if arg == "--ignored" {
+ self.ignored = true;
+ } else if arg == "--nocapture" {
+ // We ignore this flag for now.
+ } else if let Some(format) = parse_value("--format", &arg, &mut iter)? {
+ self.format = match &*format {
+ "terse" => Format::Terse,
+ "pretty" => Format::Pretty,
+ _ => bail!("unsupported format `{format}`"),
+ };
} else if let Some(skip) = parse_value("--skip", &arg, &mut iter)? {
self.skip.push(skip.into_owned());
} else if arg == "--help" {
diff --git a/vendor/ui_test-0.20.0/src/dependencies.rs b/vendor/ui_test/src/dependencies.rs
index 0e95e0f84..0e95e0f84 100644
--- a/vendor/ui_test-0.20.0/src/dependencies.rs
+++ b/vendor/ui_test/src/dependencies.rs
diff --git a/vendor/ui_test-0.20.0/src/diff.rs b/vendor/ui_test/src/diff.rs
index b0346c250..b0346c250 100644
--- a/vendor/ui_test-0.20.0/src/diff.rs
+++ b/vendor/ui_test/src/diff.rs
diff --git a/vendor/ui_test-0.20.0/src/error.rs b/vendor/ui_test/src/error.rs
index 7298a699e..2b6fdc52d 100644
--- a/vendor/ui_test-0.20.0/src/error.rs
+++ b/vendor/ui_test/src/error.rs
@@ -19,11 +19,21 @@ pub enum Error {
expected: i32,
},
/// A pattern was declared but had no matching error.
- PatternNotFound(Spanned<Pattern>),
+ PatternNotFound {
+ /// The pattern that was not found, and the span of where that pattern was declared.
+ pattern: Spanned<Pattern>,
+ /// Can be `None` when it is expected outside the current file
+ expected_line: Option<NonZeroUsize>,
+ },
/// A ui test checking for failure does not have any failure patterns
NoPatternsFound,
/// A ui test checking for success has failure patterns
- PatternFoundInPassTest,
+ PatternFoundInPassTest {
+ /// Span of a flag changing the mode (if changed from default).
+ mode: Option<Span>,
+ /// Span of the pattern
+ span: Span,
+ },
/// Stderr/Stdout differed from the `.stderr`/`.stdout` file present.
OutputDiffers {
/// The file containing the expected output that differs from the actual output.
diff --git a/vendor/ui_test-0.20.0/src/github_actions.rs b/vendor/ui_test/src/github_actions.rs
index 01e1d3bb2..01e1d3bb2 100644
--- a/vendor/ui_test-0.20.0/src/github_actions.rs
+++ b/vendor/ui_test/src/github_actions.rs
diff --git a/vendor/ui_test-0.20.0/src/lib.rs b/vendor/ui_test/src/lib.rs
index ba051be8c..398ee178e 100644
--- a/vendor/ui_test-0.20.0/src/lib.rs
+++ b/vendor/ui_test/src/lib.rs
@@ -23,7 +23,7 @@ use std::collections::{HashSet, VecDeque};
use std::ffi::OsString;
use std::num::NonZeroUsize;
use std::path::{Component, Path, PathBuf, Prefix};
-use std::process::{Command, ExitStatus};
+use std::process::{Command, ExitStatus, Output};
use std::thread;
use crate::parser::{Comments, Condition};
@@ -116,16 +116,15 @@ pub type Filter = Vec<(Match, &'static [u8])>;
/// Will additionally process command line arguments.
pub fn run_tests(mut config: Config) -> Result<()> {
let args = Args::test()?;
- if !args.quiet {
+ if let Format::Pretty = args.format {
println!("Compiler: {}", config.program.display());
}
let name = config.root_dir.display().to_string();
- let text = if args.quiet {
- status_emitter::Text::quiet()
- } else {
- status_emitter::Text::verbose()
+ let text = match args.format {
+ Format::Terse => status_emitter::Text::quiet(),
+ Format::Pretty => status_emitter::Text::verbose(),
};
config.with_args(&args, true);
@@ -149,7 +148,15 @@ pub fn default_file_filter(path: &Path, config: &Config) -> bool {
/// To only include rust files see [`default_file_filter`].
pub fn default_any_file_filter(path: &Path, config: &Config) -> bool {
let path = path.display().to_string();
- let contains_path = |files: &[String]| files.iter().any(|f| path.contains(f));
+ let contains_path = |files: &[String]| {
+ files.iter().any(|f| {
+ if config.filter_exact {
+ *f == path
+ } else {
+ path.contains(f)
+ }
+ })
+ };
if contains_path(&config.skip_files) {
return false;
@@ -222,13 +229,32 @@ struct TestRun {
/// A version of `run_tests` that allows more fine-grained control over running tests.
///
-/// If multiple configs are provided only the first [`Config::threads`] value is used
+/// All `configs` are being run in parallel.
+/// If multiple configs are provided, the [`Config::threads`] value of the first one is used;
+/// the thread count of all other configs is ignored.
pub fn run_tests_generic(
mut configs: Vec<Config>,
file_filter: impl Fn(&Path, &Config) -> bool + Sync,
per_file_config: impl Fn(&mut Config, &Path, &[u8]) + Sync,
status_emitter: impl StatusEmitter + Send,
) -> Result<()> {
+ // Nexttest emulation: we act as if we are one single test.
+ if configs.iter().any(|c| c.list) {
+ if configs.iter().any(|c| !c.run_only_ignored) {
+ println!("ui_test: test");
+ }
+ return Ok(());
+ }
+ for config in &mut configs {
+ if config.filter_exact
+ && config.filter_files.len() == 1
+ && config.filter_files[0] == "ui_test"
+ {
+ config.filter_exact = false;
+ config.filter_files.clear();
+ }
+ }
+
for config in &mut configs {
config.fill_host_and_target()?;
}
@@ -603,53 +629,73 @@ impl dyn TestStatus {
build_manager,
)?;
- let mut cmd = build_command(path, config, revision, comments)?;
+ let mut config = config.clone();
+
+ // Put aux builds into a separate directory per path so that multiple aux files
+ // from different directories (but with the same file name) don't collide.
+ let relative = strip_path_prefix(path.parent().unwrap(), &config.out_dir);
+
+ config.out_dir.extend(relative);
+
+ let mut cmd = build_command(path, &config, revision, comments)?;
cmd.args(&extra_args);
+ let stdin = path.with_extension(if revision.is_empty() {
+ "stdin".into()
+ } else {
+ format!("{revision}.stdin")
+ });
+ if stdin.exists() {
+ cmd.stdin(std::fs::File::open(stdin).unwrap());
+ }
- let (status, stderr, stdout) = self.run_command(&mut cmd);
+ let (cmd, status, stderr, stdout) = self.run_command(cmd)?;
let mode = config.mode.maybe_override(comments, revision)?;
+ let cmd = check_test_result(
+ cmd,
+ match *mode {
+ Mode::Run { .. } => Mode::Pass,
+ _ => *mode,
+ },
+ path,
+ &config,
+ revision,
+ comments,
+ status,
+ &stdout,
+ &stderr,
+ )?;
- match *mode {
- Mode::Run { .. } if Mode::Pass.ok(status).is_ok() => {
- return run_test_binary(mode, path, revision, comments, cmd, config)
- }
- Mode::Panic | Mode::Yolo { .. } => {}
- Mode::Run { .. } | Mode::Pass | Mode::Fail { .. } => {
- if status.code() == Some(101) {
- let stderr = String::from_utf8_lossy(&stderr);
- let stdout = String::from_utf8_lossy(&stdout);
- return Err(Errored {
- command: cmd,
- errors: vec![Error::Bug(format!(
- "test panicked: stderr:\n{stderr}\nstdout:\n{stdout}",
- ))],
- stderr: vec![],
- stdout: vec![],
- });
- }
- }
+ if let Mode::Run { .. } = *mode {
+ return run_test_binary(mode, path, revision, comments, cmd, &config);
}
- check_test_result(
- cmd, *mode, path, config, revision, comments, status, &stdout, &stderr,
- )?;
+
run_rustfix(
- &stderr, &stdout, path, comments, revision, config, *mode, extra_args,
+ &stderr, &stdout, path, comments, revision, &config, *mode, extra_args,
)?;
Ok(TestOk::Ok)
}
/// Run a command, and if it takes more than 100ms, start appending the last stderr/stdout
/// line to the current status spinner.
- fn run_command(&self, cmd: &mut Command) -> (ExitStatus, Vec<u8>, Vec<u8>) {
- let output = cmd.output().unwrap_or_else(|err| {
- panic!(
- "could not spawn `{:?}` as a process: {err}",
- cmd.get_program()
- )
- });
-
- (output.status, output.stderr, output.stdout)
+ fn run_command(
+ &self,
+ mut cmd: Command,
+ ) -> Result<(Command, ExitStatus, Vec<u8>, Vec<u8>), Errored> {
+ match cmd.output() {
+ Err(err) => Err(Errored {
+ errors: vec![],
+ stderr: err.to_string().into_bytes(),
+ stdout: format!("could not spawn `{:?}` as a process", cmd.get_program())
+ .into_bytes(),
+ command: cmd,
+ }),
+ Ok(Output {
+ status,
+ stdout,
+ stderr,
+ }) => Ok((cmd, status, stderr, stdout)),
+ }
}
}
@@ -721,6 +767,11 @@ fn run_test_binary(
mut cmd: Command,
config: &Config,
) -> TestResult {
+ let revision = if revision.is_empty() {
+ "run".to_string()
+ } else {
+ format!("run.{revision}")
+ };
cmd.arg("--print").arg("file-names");
let output = cmd.output().unwrap();
assert!(output.status.success());
@@ -729,16 +780,22 @@ fn run_test_binary(
let file = files.next().unwrap();
assert_eq!(files.next(), None);
let file = std::str::from_utf8(file).unwrap();
- let exe = config.out_dir.join(file);
- let mut exe = Command::new(exe);
- let output = exe.output().unwrap();
+ let exe_file = config.out_dir.join(file);
+ let mut exe = Command::new(&exe_file);
+ let stdin = path.with_extension(format!("{revision}.stdin"));
+ if stdin.exists() {
+ exe.stdin(std::fs::File::open(stdin).unwrap());
+ }
+ let output = exe
+ .output()
+ .unwrap_or_else(|err| panic!("exe file: {}: {err}", exe_file.display()));
let mut errors = vec![];
check_test_output(
path,
&mut errors,
- revision,
+ &revision,
config,
comments,
&output.stdout,
@@ -930,7 +987,7 @@ fn check_test_result(
status: ExitStatus,
stdout: &[u8],
stderr: &[u8],
-) -> Result<(), Errored> {
+) -> Result<Command, Errored> {
let mut errors = vec![];
errors.extend(mode.ok(status).err());
// Always remove annotation comments from stderr.
@@ -955,7 +1012,7 @@ fn check_test_result(
comments,
)?;
if errors.is_empty() {
- Ok(())
+ Ok(command)
} else {
Err(Errored {
command,
@@ -1012,9 +1069,9 @@ fn check_annotations(
.for_revision(revision)
.flat_map(|r| r.error_in_other_files.iter());
- let mut seen_error_match = false;
+ let mut seen_error_match = None;
for error_pattern in error_patterns {
- seen_error_match = true;
+ seen_error_match = Some(error_pattern.span());
// first check the diagnostics messages outside of our file. We check this first, so that
// you can mix in-file annotations with //@error-in-other-file annotations, even if there is overlap
// in the messages.
@@ -1024,7 +1081,10 @@ fn check_annotations(
{
messages_from_unknown_file_or_line.remove(i);
} else {
- errors.push(Error::PatternNotFound(error_pattern.clone()));
+ errors.push(Error::PatternNotFound {
+ pattern: error_pattern.clone(),
+ expected_line: None,
+ });
}
}
@@ -1040,7 +1100,7 @@ fn check_annotations(
.for_revision(revision)
.flat_map(|r| r.error_matches.iter())
{
- seen_error_match = true;
+ seen_error_match = Some(pattern.span());
// If we found a diagnostic with a level annotation, make sure that all
// diagnostics of that level have annotations, even if we don't end up finding a matching diagnostic
// for this pattern.
@@ -1058,7 +1118,10 @@ fn check_annotations(
}
}
- errors.push(Error::PatternNotFound(pattern.clone()));
+ errors.push(Error::PatternNotFound {
+ pattern: pattern.clone(),
+ expected_line: Some(line),
+ });
}
let required_annotation_level = comments.find_one_for_revision(
@@ -1104,13 +1167,18 @@ fn check_annotations(
}
match (*mode, seen_error_match) {
- (Mode::Pass, true) | (Mode::Panic, true) => errors.push(Error::PatternFoundInPassTest),
+ (Mode::Pass, Some(span)) | (Mode::Panic, Some(span)) => {
+ errors.push(Error::PatternFoundInPassTest {
+ mode: mode.span(),
+ span,
+ })
+ }
(
Mode::Fail {
require_patterns: true,
..
},
- false,
+ None,
) => errors.push(Error::NoPatternsFound),
_ => {}
}
@@ -1189,18 +1257,19 @@ impl dyn TestStatus {
.flat_map(|r| r.ignore.iter())
.any(|c| test_condition(c, config))
{
- return false;
+ return config.run_only_ignored;
}
if comments
.for_revision(revision)
.any(|r| r.needs_asm_support && !config.has_asm_support())
{
- return false;
+ return config.run_only_ignored;
}
comments
.for_revision(revision)
.flat_map(|r| r.only.iter())
.all(|c| test_condition(c, config))
+ ^ config.run_only_ignored
}
}
diff --git a/vendor/ui_test-0.20.0/src/mode.rs b/vendor/ui_test/src/mode.rs
index ce37adc4c..ce37adc4c 100644
--- a/vendor/ui_test-0.20.0/src/mode.rs
+++ b/vendor/ui_test/src/mode.rs
diff --git a/vendor/ui_test-0.20.0/src/parser.rs b/vendor/ui_test/src/parser.rs
index 62ee5a1d1..62ee5a1d1 100644
--- a/vendor/ui_test-0.20.0/src/parser.rs
+++ b/vendor/ui_test/src/parser.rs
diff --git a/vendor/ui_test-0.20.0/src/parser/spanned.rs b/vendor/ui_test/src/parser/spanned.rs
index 8c5f98ecd..8c5f98ecd 100644
--- a/vendor/ui_test-0.20.0/src/parser/spanned.rs
+++ b/vendor/ui_test/src/parser/spanned.rs
diff --git a/vendor/ui_test-0.20.0/src/parser/tests.rs b/vendor/ui_test/src/parser/tests.rs
index f1b3b4cbf..f1b3b4cbf 100644
--- a/vendor/ui_test-0.20.0/src/parser/tests.rs
+++ b/vendor/ui_test/src/parser/tests.rs
diff --git a/vendor/ui_test-0.20.0/src/rustc_stderr.rs b/vendor/ui_test/src/rustc_stderr.rs
index 4a371ce1d..4a371ce1d 100644
--- a/vendor/ui_test-0.20.0/src/rustc_stderr.rs
+++ b/vendor/ui_test/src/rustc_stderr.rs
diff --git a/vendor/ui_test-0.20.0/src/status_emitter.rs b/vendor/ui_test/src/status_emitter.rs
index b32235907..217a77ec5 100644
--- a/vendor/ui_test-0.20.0/src/status_emitter.rs
+++ b/vendor/ui_test/src/status_emitter.rs
@@ -13,11 +13,11 @@ use crate::{
github_actions,
parser::Pattern,
rustc_stderr::{Message, Span},
- Error, Errored, Errors, TestOk, TestResult,
+ Error, Errored, Errors, Format, TestOk, TestResult,
};
use std::{
collections::HashMap,
- fmt::{Debug, Write as _},
+ fmt::{Debug, Display, Write as _},
io::Write as _,
num::NonZeroUsize,
panic::RefUnwindSafe,
@@ -184,6 +184,15 @@ impl Text {
}
}
+impl From<Format> for Text {
+ fn from(format: Format) -> Self {
+ match format {
+ Format::Terse => Text::quiet(),
+ Format::Pretty => Text::verbose(),
+ }
+ }
+}
+
struct TextTest {
text: Text,
path: PathBuf,
@@ -192,11 +201,12 @@ struct TextTest {
}
impl TextTest {
+ /// Prints the user-visible name for this test.
fn msg(&self) -> String {
if self.revision.is_empty() {
self.path.display().to_string()
} else {
- format!("{} ({})", self.path.display(), self.revision)
+ format!("{} (revision `{}`)", self.path.display(), self.revision)
}
}
}
@@ -209,7 +219,7 @@ impl TestStatus for TextTest {
} else {
let result = match result {
Ok(TestOk::Ok) => "ok".green(),
- Err(Errored { .. }) => "FAILED".red().bold(),
+ Err(Errored { .. }) => "FAILED".bright_red().bold(),
Ok(TestOk::Ignored) => "ignored (in-test comment)".yellow(),
Ok(TestOk::Filtered) => return,
};
@@ -234,17 +244,10 @@ impl TestStatus for TextTest {
stderr: &'a [u8],
stdout: &'a [u8],
) -> Box<dyn Debug + 'a> {
+ let text = format!("{} {}", "FAILED TEST:".bright_red(), self.msg());
+
println!();
- let path = self.path.display().to_string();
- print!("{}", path.underline().bold());
- let revision = if self.revision.is_empty() {
- String::new()
- } else {
- format!(" (revision `{}`)", self.revision)
- };
- print!("{revision}");
- print!(" {}", "FAILED:".red().bold());
- println!();
+ println!("{}", text.bold().underline());
println!("command: {cmd:?}");
println!();
@@ -255,10 +258,10 @@ impl TestStatus for TextTest {
}
impl<'a> Drop for Guard<'a> {
fn drop(&mut self) {
- println!("full stderr:");
+ println!("{}", "full stderr:".bold());
std::io::stdout().write_all(self.stderr).unwrap();
println!();
- println!("full stdout:");
+ println!("{}", "full stdout:".bold());
std::io::stdout().write_all(self.stdout).unwrap();
println!();
println!();
@@ -365,12 +368,12 @@ impl StatusEmitter for Text {
impl Drop for Summarizer {
fn drop(&mut self) {
- println!("{}", "FAILURES:".red().underline().bold());
+ println!("{}", "FAILURES:".bright_red().underline().bold());
for line in &self.failures {
println!("{line}");
}
println!();
- print!("test result: {}.", "FAIL".red());
+ print!("test result: {}.", "FAIL".bright_red());
print!(" {} failed;", self.failures.len().to_string().green());
if self.succeeded > 0 {
print!(" {} passed;", self.succeeded.to_string().green());
@@ -396,26 +399,45 @@ impl StatusEmitter for Text {
}
fn print_error(error: &Error, path: &Path) {
+ /// Every error starts with a header like that, to make them all easy to find.
+ /// It is made to look like the headers printed for spanned errors.
+ fn print_error_header(msg: impl Display) {
+ let text = format!("{} {msg}", "error:".bright_red());
+ println!("{}", text.bold());
+ }
+
match error {
Error::ExitStatus {
mode,
status,
expected,
} => {
- println!("{mode} test got {status}, but expected {expected}")
+ // `status` prints as `exit status: N`.
+ print_error_header(format_args!(
+ "{mode} test got {status}, but expected {expected}"
+ ))
}
Error::Command { kind, status } => {
- println!("{kind} failed with {status}");
+ // `status` prints as `exit status: N`.
+ print_error_header(format_args!("{kind} failed with {status}"));
}
- Error::PatternNotFound(pattern) => {
+ Error::PatternNotFound {
+ pattern,
+ expected_line,
+ } => {
+ let line = match expected_line {
+ Some(line) => format!("on line {line}"),
+ None => format!("outside the testfile"),
+ };
let msg = match &**pattern {
Pattern::SubString(s) => {
- format!("substring `{s}` {} in stderr output", "not found")
+ format!("`{s}` not found in diagnostics {line}")
}
Pattern::Regex(r) => {
- format!("`/{r}/` does {} stderr output", "not match")
+ format!("`/{r}/` does not match diagnostics {line}",)
}
};
+ // This will print a suitable error header.
create_error(
msg,
&[(
@@ -426,10 +448,17 @@ fn print_error(error: &Error, path: &Path) {
);
}
Error::NoPatternsFound => {
- println!("{}", "no error patterns found in fail test".red());
- }
- Error::PatternFoundInPassTest => {
- println!("{}", "error pattern found in pass test".red())
+ print_error_header("no error patterns found in fail test");
+ }
+ Error::PatternFoundInPassTest { mode, span } => {
+ let annot = [("expected because of this annotation", Some(*span))];
+ let mut lines: Vec<(&[_], _)> = vec![(&annot, span.line_start)];
+ let annot = [("expected because of this mode change", *mode)];
+ if let Some(mode) = mode {
+ lines.push((&annot, mode.line_start))
+ }
+ // This will print a suitable error header.
+ create_error("error pattern found in pass test", &lines, path);
}
Error::OutputDiffers {
path: output_path,
@@ -437,7 +466,7 @@ fn print_error(error: &Error, path: &Path) {
expected,
bless_command,
} => {
- println!("{}", "actual output differed from expected".underline());
+ print_error_header("actual output differed from expected");
println!(
"Execute `{}` to update `{}` to the actual output",
bless_command,
@@ -461,8 +490,9 @@ fn print_error(error: &Error, path: &Path) {
.iter()
.map(|msg| (format!("{:?}: {}", msg.level, msg.message), msg.line_col))
.collect::<Vec<_>>();
+ // This will print a suitable error header.
create_error(
- format!("There were {} unmatched diagnostics", msgs.len()),
+ format!("there were {} unmatched diagnostics", msgs.len()),
&[(
&msgs
.iter()
@@ -473,10 +503,10 @@ fn print_error(error: &Error, path: &Path) {
path,
);
} else {
- println!(
- "There were {} unmatched diagnostics that occurred outside the testfile and had no pattern",
+ print_error_header(format_args!(
+ "there were {} unmatched diagnostics that occurred outside the testfile and had no pattern",
msgs.len(),
- );
+ ));
for Message {
level,
message,
@@ -488,10 +518,12 @@ fn print_error(error: &Error, path: &Path) {
}
}
Error::InvalidComment { msg, span } => {
+ // This will print a suitable error header.
create_error(msg, &[(&[("", Some(*span))], span.line_start)], path)
}
Error::MultipleRevisionsWithResults { kind, lines } => {
let title = format!("multiple {kind} found");
+ // This will print a suitable error header.
create_error(
title,
&lines
@@ -502,23 +534,28 @@ fn print_error(error: &Error, path: &Path) {
)
}
Error::Bug(msg) => {
- println!("A bug in `ui_test` occurred: {msg}");
+ print_error_header("a bug in `ui_test` occurred");
+ println!("{msg}");
}
Error::Aux {
path: aux_path,
errors,
line,
} => {
- println!("Aux build from {}:{line} failed", path.display());
+ print_error_header(format_args!(
+ "aux build from {}:{line} failed",
+ path.display()
+ ));
for error in errors {
print_error(error, aux_path);
}
}
Error::Rustfix(error) => {
- println!(
- "failed to apply suggestions for {} with rustfix: {error}",
+ print_error_header(format_args!(
+ "failed to apply suggestions for {} with rustfix",
path.display()
- );
+ ));
+ println!("{error}");
println!("Add //@no-rustfix to the test file to ignore rustfix suggestions");
}
}
@@ -601,7 +638,7 @@ fn gha_error(error: &Error, test_path: &str, revision: &str) {
Error::Command { kind, status } => {
github_actions::error(test_path, format!("{kind}{revision} failed with {status}"));
}
- Error::PatternNotFound(pattern) => {
+ Error::PatternNotFound { pattern, .. } => {
github_actions::error(test_path, format!("Pattern not found{revision}"))
.line(pattern.line());
}
@@ -611,7 +648,7 @@ fn gha_error(error: &Error, test_path: &str, revision: &str) {
format!("no error patterns found in fail test{revision}"),
);
}
- Error::PatternFoundInPassTest => {
+ Error::PatternFoundInPassTest { .. } => {
github_actions::error(
test_path,
format!("error pattern found in pass test{revision}"),
diff --git a/vendor/ui_test-0.20.0/src/tests.rs b/vendor/ui_test/src/tests.rs
index 791027d4f..7c0fec619 100644
--- a/vendor/ui_test-0.20.0/src/tests.rs
+++ b/vendor/ui_test/src/tests.rs
@@ -46,7 +46,7 @@ fn main() {
)
.unwrap();
match &errors[..] {
- [Error::PatternNotFound(pattern), Error::ErrorsWithoutPattern { path, .. }]
+ [Error::PatternNotFound { pattern, .. }, Error::ErrorsWithoutPattern { path, .. }]
if path.as_ref().is_some_and(|p| p.line().get() == 5) && pattern.line().get() == 5 => {}
_ => panic!("{:#?}", errors),
}
@@ -111,7 +111,7 @@ fn main() {
)
.unwrap();
match &errors[..] {
- [Error::PatternNotFound(pattern), Error::ErrorsWithoutPattern { path, .. }]
+ [Error::PatternNotFound { pattern, .. }, Error::ErrorsWithoutPattern { path, .. }]
if path.as_ref().is_some_and(|p| p.line().get() == 4)
&& pattern.line().get() == 5 => {}
_ => panic!("not the expected error: {:#?}", errors),
@@ -143,7 +143,7 @@ fn main() {
.unwrap();
match &errors[..] {
// Note no `ErrorsWithoutPattern`, because there are no `//~NOTE` in the test file, so we ignore them
- [Error::PatternNotFound(pattern)] if pattern.line().get() == 5 => {}
+ [Error::PatternNotFound { pattern, .. }] if pattern.line().get() == 5 => {}
_ => panic!("not the expected error: {:#?}", errors),
}
}
@@ -183,7 +183,7 @@ fn main() {
)
.unwrap();
match &errors[..] {
- [Error::PatternNotFound(pattern)] if pattern.line().get() == 6 => {}
+ [Error::PatternNotFound { pattern, .. }] if pattern.line().get() == 6 => {}
_ => panic!("{:#?}", errors),
}
}
diff --git a/vendor/ui_test-0.20.0/tests/integration.rs b/vendor/ui_test/tests/integration.rs
index abc9a92e2..2c7b63afe 100644
--- a/vendor/ui_test-0.20.0/tests/integration.rs
+++ b/vendor/ui_test/tests/integration.rs
@@ -33,9 +33,10 @@ fn main() -> Result<()> {
config.stdout_filter("in ([0-9]m )?[0-9\\.]+s", "");
config.stdout_filter(r#""--out-dir"(,)? "[^"]+""#, r#""--out-dir"$1 "$$TMP"#);
+ config.filter("\\.exe", b"");
config.filter(
- "( *process didn't exit successfully: `[^-]+)-[0-9a-f]+",
- "$1-HASH",
+ "( *process didn't exit successfully: `.*)-[0-9a-f]+`",
+ "$1-HASH`",
);
// Windows io::Error uses "exit code".
config.filter("exit code", "exit status");
@@ -43,6 +44,7 @@ fn main() -> Result<()> {
"The system cannot find the file specified.",
"No such file or directory",
);
+ config.filter("RUSTC_BOOTSTRAP=\"1\" ", "");
// The order of the `/deps` directory flag is flaky
config.stdout_filter("/deps", "");
config.path_filter(std::path::Path::new(path), "$DIR");
@@ -53,9 +55,13 @@ fn main() -> Result<()> {
config
.stdout_filters
.insert(0, (Match::Exact(b"\\\\".to_vec()), b"\\"));
- config.filter("\\.exe", b"");
config.stdout_filter(r#"(panic.*)\.rs:[0-9]+:[0-9]+"#, "$1.rs");
- config.filter(" [0-9]: .*", "");
+ // We don't want to normalize lines starting with `+`, those are diffs of the inner ui_test
+ // and normalizing these here doesn't make the "actual output differed from expected" go
+ // away, it just makes it impossible to diagnose.
+ config.filter(" +[0-9]+: .*\n", "");
+ config.filter(" +at \\.?/.*\n", "");
+ config.filter(" running on .*", "");
config.stdout_filter("/target/[^/]+/[^/]+/debug", "/target/$$TMP/$$TRIPLE/debug");
config.stdout_filter("/target/.tmp[^/ \"]+", "/target/$$TMP");
// Normalize proc macro filenames on windows to their linux repr
@@ -66,12 +72,9 @@ fn main() -> Result<()> {
config.filter("(src/.*?\\.rs):[0-9]+:[0-9]+", "$1:LL:CC");
config.filter("program not found", "No such file or directory");
config.filter(" \\(os error [0-9]+\\)", "");
+ config.filter("note: rustc 1\\..*", "");
- let text = if args.quiet {
- ui_test::status_emitter::Text::quiet()
- } else {
- ui_test::status_emitter::Text::verbose()
- };
+ let text = ui_test::status_emitter::Text::from(args.format);
run_tests_generic(
vec![
diff --git a/vendor/unicode-width/.cargo-checksum.json b/vendor/unicode-width/.cargo-checksum.json
index 5c7b92228..c1608bd73 100644
--- a/vendor/unicode-width/.cargo-checksum.json
+++ b/vendor/unicode-width/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"COPYRIGHT":"23860c2a7b5d96b21569afedf033469bab9fe14a1b24a35068b8641c578ce24d","Cargo.toml":"f22e31fb3559e916864820719a09ab3adbf80301440e1702acf827210bbf76df","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7b63ecd5f1902af1b63729947373683c32745c16a10e8e6292e2e2dcd7e90ae0","README.md":"8a041a4305fb318f5c2cb284046f8480796521d0e829023b0441b5e8469490eb","scripts/unicode.py":"0c53095ef99395338399f9ad218b4481cffcf63774fd61871ed32efb242419f8","src/lib.rs":"38c44436eac069bd8d11203f31ecfef8adfe92da1fce19ba00bdd25aa3fbbe20","src/tables.rs":"c6ddb420c289517bb92973199fd2987b9608f29fc10bb33b5290f39b301ce92f","src/tests.rs":"ff9f331210861ba78040f119a0f6ccfacf5b2ca1ebee430784de0858fad01860"},"package":"c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"} \ No newline at end of file
+{"files":{"COPYRIGHT":"23860c2a7b5d96b21569afedf033469bab9fe14a1b24a35068b8641c578ce24d","Cargo.toml":"09233bddd9dcdd71355ad523e7293bc8764bb96f891e8968bea9b8aaf86ed314","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7b63ecd5f1902af1b63729947373683c32745c16a10e8e6292e2e2dcd7e90ae0","README.md":"8a041a4305fb318f5c2cb284046f8480796521d0e829023b0441b5e8469490eb","scripts/unicode.py":"d7884ff41ca9c54cbe97a8f9c909b0a8cd74bc8e6190b0c89bf3001a38d9d763","src/lib.rs":"baa30ab3913bde7d8e766a2fbccfda96f06dd499bebda899249fc7495d5ad6f7","src/tables.rs":"7201dff937e3b0f61f4fcad9cfb230fb0c44bb9082301e566351b95d7525605e","src/tests.rs":"ff9f331210861ba78040f119a0f6ccfacf5b2ca1ebee430784de0858fad01860"},"package":"e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"} \ No newline at end of file
diff --git a/vendor/unicode-width/Cargo.toml b/vendor/unicode-width/Cargo.toml
index 77aded9fc..6dcfacdaa 100644
--- a/vendor/unicode-width/Cargo.toml
+++ b/vendor/unicode-width/Cargo.toml
@@ -11,7 +11,7 @@
[package]
name = "unicode-width"
-version = "0.1.10"
+version = "0.1.11"
authors = [
"kwantam <kwantam@gmail.com>",
"Manish Goregaokar <manishsmail@gmail.com>",
diff --git a/vendor/unicode-width/scripts/unicode.py b/vendor/unicode-width/scripts/unicode.py
index 2efb0b63f..a6d58c5ef 100755
--- a/vendor/unicode-width/scripts/unicode.py
+++ b/vendor/unicode-width/scripts/unicode.py
@@ -106,9 +106,9 @@ def load_east_asian_widths() -> "list[EffectiveWidth]":
`Ambiguous` chracters are assigned `EffectiveWidth.AMBIGUOUS`."""
with fetch_open("EastAsianWidth.txt") as eaw:
# matches a width assignment for a single codepoint, i.e. "1F336;N # ..."
- single = re.compile(r"^([0-9A-F]+);(\w+) +# (\w+)")
+ single = re.compile(r"^([0-9A-F]+)\s+;\s+(\w+) +# (\w+)")
# matches a width assignment for a range of codepoints, i.e. "3001..3003;W # ..."
- multiple = re.compile(r"^([0-9A-F]+)\.\.([0-9A-F]+);(\w+) +# (\w+)")
+ multiple = re.compile(r"^([0-9A-F]+)\.\.([0-9A-F]+)\s+;\s+(\w+) +# (\w+)")
# map between width category code and condensed width
width_codes = {
**{c: EffectiveWidth.NARROW for c in ["N", "Na", "H"]},
diff --git a/vendor/unicode-width/src/lib.rs b/vendor/unicode-width/src/lib.rs
index 1ee35c85d..fac45fc45 100644
--- a/vendor/unicode-width/src/lib.rs
+++ b/vendor/unicode-width/src/lib.rs
@@ -59,8 +59,6 @@ extern crate test;
use tables::charwidth as cw;
pub use tables::UNICODE_VERSION;
-use core::ops::Add;
-
mod tables;
#[cfg(test)]
@@ -121,11 +119,11 @@ pub trait UnicodeWidthStr {
impl UnicodeWidthStr for str {
#[inline]
fn width(&self) -> usize {
- self.chars().map(|c| cw::width(c, false).unwrap_or(0)).fold(0, Add::add)
+ self.chars().map(|c| cw::width(c, false).unwrap_or(0)).sum()
}
#[inline]
fn width_cjk(&self) -> usize {
- self.chars().map(|c| cw::width(c, true).unwrap_or(0)).fold(0, Add::add)
+ self.chars().map(|c| cw::width(c, true).unwrap_or(0)).sum()
}
}
diff --git a/vendor/unicode-width/src/tables.rs b/vendor/unicode-width/src/tables.rs
index 439c69c80..791d7a898 100644
--- a/vendor/unicode-width/src/tables.rs
+++ b/vendor/unicode-width/src/tables.rs
@@ -12,7 +12,7 @@
/// The version of [Unicode](http://www.unicode.org/)
/// that this version of unicode-width is based on.
-pub const UNICODE_VERSION: (u8, u8, u8) = (15, 0, 0);
+pub const UNICODE_VERSION: (u8, u8, u8) = (15, 1, 0);
pub mod charwidth {
use core::option::Option::{self, None, Some};
@@ -395,13 +395,13 @@ pub mod charwidth {
0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x9A, 0xAA, 0xAA, 0xAA, 0xAA,
0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x5A, 0x55, 0x55, 0x55,
- 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
0xAA, 0xAA, 0x0A, 0xA0, 0xAA, 0xAA, 0xAA, 0x6A, 0xA9, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x6A,
0x81, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0xA9, 0xAA, 0xAA, 0xAA,
0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA9, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x6A,
0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
- 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x95, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x6A, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
0xAA, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
0xAA, 0xAA, 0xAA, 0x56, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
diff --git a/vendor/unicode_categories/.cargo-checksum.json b/vendor/unicode_categories/.cargo-checksum.json
deleted file mode 100644
index 16539ca3a..000000000
--- a/vendor/unicode_categories/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"Cargo.toml":"fede56ff87e8d4fbdee19214fe026f8f3d3712b16705aad4dfb1e94d7b4f703e","LICENSE-APACHE":"c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08","LICENSE-MIT":"98a817e7b85e5fe4e79d165c656a4a139793b8b643d0f3d9cbcc3538ef82ec82","README.md":"c937018ade7ca5f7b16303a464f569640a5c6b5925e977833bb695c524c8d747","scripts/unicode.py":"a8b368ba3eec1a16eb3d3abd3317018a8a393824937ec381c0b7f85c8e283d17","src/lib.rs":"6e271d45b096798587144544b5e668ffaeed943fb3a51574fa1e1a70b6fb497d","src/tables.rs":"162393c222be7f49425f232abef890da4ccf7a45e2c43df34830d32c979f5bd8"},"package":"39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e"} \ No newline at end of file
diff --git a/vendor/unicode_categories/Cargo.toml b/vendor/unicode_categories/Cargo.toml
deleted file mode 100644
index 9e2adc469..000000000
--- a/vendor/unicode_categories/Cargo.toml
+++ /dev/null
@@ -1,10 +0,0 @@
-[package]
-name = "unicode_categories"
-version = "0.1.1"
-authors = ["Sean Gillespie <sean@swgillespie.me>"]
-description = "Query Unicode category membership for chars"
-keywords = ["unicode"]
-license = "MIT OR Apache-2.0"
-repository = "https://github.com/swgillespie/unicode-categories"
-documentation = "http://swgillespie.github.io/unicode-categories/unicode_categories/"
-readme = "README.md"
diff --git a/vendor/unicode_categories/README.md b/vendor/unicode_categories/README.md
deleted file mode 100644
index 4cd5567d2..000000000
--- a/vendor/unicode_categories/README.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# unicode-categories
-`unicode-categories` is a simple crate that adds many extensions
-to the `char` type that allow for the querying of whether or not
-a character is a member of a certain category of unicode characters.
-
-```
-use unicode_categories::UnicodeCategories;
-
-assert!('a'.is_letter_lowercase());
-assert!('A'.is_letter_uppercase());
-assert!('\n'.is_other_control());
-```
-
-This crate can be obtained from crates.io and used as a dependency
-like any other crate.
-
-## Regenerating the tables
-The script in `scripts/unicode.py` reads a file named `UnicodeData.txt`,
-which is assumed to be in the current working directory. This file
-can be obtained from ftp://ftp.unicode.org . The script outputs a rust
-file to standard out, which can be piped to the desired location.
-
-## License
-
-Licensed under either of
-
- * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
- * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
-
-at your option.
-
-### Contribution
-
-Unless you explicitly state otherwise, any contribution intentionally
-submitted for inclusion in the work by you, as defined in the Apache-2.0
-license, shall be dual licensed as above, without any additional terms or
-conditions.
diff --git a/vendor/unicode_categories/scripts/unicode.py b/vendor/unicode_categories/scripts/unicode.py
deleted file mode 100644
index 6a35d1742..000000000
--- a/vendor/unicode_categories/scripts/unicode.py
+++ /dev/null
@@ -1,93 +0,0 @@
-#!/usr/bin/python
-
-import collections
-import re
-
-column_size = 8
-
-categories = {
- 'Cc': ['Other', 'Control'],
- 'Cf': ['Other', 'Format'],
- 'Cn': ['Other', 'NotAssigned'],
- 'Co': ['Other', 'PrivateUse'],
- 'Cs': ['Other', 'Surrogate'],
- 'Ls': ['Letter', 'Cased'],
- 'Ll': ['Letter', 'Lowercased'],
- 'Lm': ['Letter', 'Modifier'],
- 'Lo': ['Letter', 'Other'],
- 'Lt': ['Letter', 'Titlecase'],
- 'Lu': ['Letter', 'Uppercase'],
- 'Mc': ['Mark', 'SpaceCombining'],
- 'Me': ['Mark', 'Enclosing'],
- 'Mn': ['Mark', 'Nonspacing'],
- 'Nd': ['Number', 'DecimalDigit'],
- 'Nl': ['Number', 'Letter'],
- 'No': ['Number', 'Other'],
- 'Pc': ['Punctuation', 'Connector'],
- 'Pd': ['Punctuation', 'Dash'],
- 'Pe': ['Punctuation', 'Close'],
- 'Pf': ['Punctuation', 'FinalQuote'],
- 'Pi': ['Punctuation', 'InitialQuote'],
- 'Po': ['Punctuation', 'Other'],
- 'Ps': ['Punctuation', 'Open'],
- 'Sc': ['Symbol', 'Currency'],
- 'Sk': ['Symbol', 'Modifier'],
- 'Sm': ['Symbol', 'Math'],
- 'So': ['Symbol', 'Other'],
- 'Zl': ['Separator', 'Line'],
- 'Zp': ['Separator', 'Paragraph'],
- 'Zs': ['Separator', 'Space']
-}
-
-def generate_rows():
- with open('UnicodeData.txt', 'r') as ucd:
- for line in ucd:
- split = line.split(';')
- char, category = split[0], split[2]
- yield (char, category)
-
-
-def generate_dict(rows_gen):
- d = collections.defaultdict(list)
- for char, category in rows_gen:
- if category == 'Cs':
- # for whatever reason, rust doesn't allow this class of characters
- # as unicode literals.
- continue
- d[category].append(char)
- return d
-
-def generate_tables(d):
- new_dict = collections.defaultdict(list)
- for key in d.keys():
- name = ''.join(categories[key])
- new_dict[name] = d[key]
- return new_dict
-
-def print_header():
- print("// This file is autogenerated by scripts/unicode.py.\n")
-
-def main():
- print_header()
- row_generator = generate_rows()
- dictionary = generate_dict(row_generator)
- named_table = generate_tables(dictionary)
- output_tables(named_table)
-
-def output_tables(d):
- for key in sorted(d.keys()):
- name = camel_to_snake_case(key).upper()
- rust_unicode_escapes = map(lambda x: r"'\u{{{}}}'".format(x), d[key])
- table_lines = []
- for chunk in [rust_unicode_escapes[x:x+column_size] for x in xrange(0, len(rust_unicode_escapes), column_size)]:
- table_lines.append(' ' + ', '.join(chunk))
- table_string = ',\n'.join(table_lines)
- print("pub static {} : &'static [char] = &[\n{}];\n".format(name, table_string))
-
-def camel_to_snake_case(name):
- # thanks to http://stackoverflow.com/a/1176023/1030074
- s1 = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name)
- return re.sub('([a-z0-9])([A-Z])', r'\1_\2', s1).lower()
-
-if __name__ == "__main__":
- main()
diff --git a/vendor/unicode_categories/src/lib.rs b/vendor/unicode_categories/src/lib.rs
deleted file mode 100644
index 10a3451f3..000000000
--- a/vendor/unicode_categories/src/lib.rs
+++ /dev/null
@@ -1,421 +0,0 @@
-//! `unicode_categories` is a crate that adds extensions to the
-//! `char` primitive type that allow for a char to be queried
-//! about whether or not it belongs to a particular Unicode category.
-//!
-//! These extensions exist on the `UnicodeCategories` trait, so
-//! by importing it the extensions will be active on all chars:
-//!
-//! ```
-//! use unicode_categories::UnicodeCategories;
-//!
-//! assert!('a'.is_letter_lowercase());
-//! assert!('A'.is_letter_uppercase());
-//! assert!('\n'.is_other_control());
-//! ```
-//!
-//! `UnicodeCategories` is the only item contained exported
-//! by this crate and contains all of methods that allow
-//! for category queries.
-
-mod tables;
-
-pub trait UnicodeCategories : Sized + Copy {
-
- /// Returns `true` if this value is a member
- /// of the "Other, Control" (Cc) category.
- fn is_other_control(self) -> bool;
-
- /// Returns `true` if this value is a member
- /// of the "Other, Format" (Cf) category.
- fn is_other_format(self) -> bool;
-
- /// Returns true if this value is a member
- /// of the "Other, Private Use" (Co) category.
- fn is_other_private_use(self) -> bool;
-
- /// Returns true if this value is a member
- /// of the "Letter, Lowercase" (Ll) category.
- fn is_letter_lowercase(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Letter, Modifier" (Lm) category.
- fn is_letter_modifier(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Letter, Other" (Lo) category.
- fn is_letter_other(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Letter, Titlecase" (Lt) category.
- fn is_letter_titlecase(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Letter, Uppercase" (Lu) category.
- fn is_letter_uppercase(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Mark, Spacing Combining" (Mc) category.
- fn is_mark_spacing_combining(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Mark, Enclosing" (Me) category.
- fn is_mark_enclosing(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Mark, Nonspacing" (Mn) category.
- fn is_mark_nonspacing(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Number, Decimal Digit" (Nd) category.
- fn is_number_decimal_digit(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Number, Letter" (Nl) category.
- fn is_number_letter(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Number, Other" (No) category.
- fn is_number_other(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Punctuation, Connector" (Pc) category.
- fn is_punctuation_connector(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Punctuation, Dash" (Pd) category.
- fn is_punctuation_dash(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Punctuation, Close" (Pe) category.
- fn is_punctuation_close(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Punctuation, Final Quote" (Pf) category.
- fn is_punctuation_final_quote(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Punctuation, Initial Quote" (Pi) category.
- fn is_punctuation_initial_quote(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Punctuation, Other" (Po) category.
- fn is_punctuation_other(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Punctuation, Open" (Ps) category.
- fn is_punctuation_open(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Symbol, Currency" (Sc) category.
- fn is_symbol_currency(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Symbol, Modifier" (Sk) category.
- fn is_symbol_modifier(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Symbol, Math" (Sm) category.
- fn is_symbol_math(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Symbol, Other" (So) category.
- fn is_symbol_other(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Separator, Line" (Zl) category.
- fn is_separator_line(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Separator, Paragraph" (Zp) category.
- fn is_separator_paragraph(self) -> bool;
-
- /// Returns true if this value is a member of
- /// the "Separator, Space" (Zs) category.
- fn is_separator_space(self) -> bool;
-
- /// Returns true if this value is a member of
- /// a "Other" category: Cc, Cf, Cn, or Co.
- /// Surrogates cannot be `chars` in Rust, so
- /// they are not included.
- #[inline]
- fn is_other(self) -> bool {
- self.is_other_control()
- || self.is_other_format()
- || self.is_other_private_use()
- }
-
- /// Returns true if this value is a member of
- /// a "Letter" category: Lc, Ll, Lm, Lo, Lt, or Lu.
- #[inline]
- fn is_letter(self) -> bool {
- self.is_letter_lowercase()
- || self.is_letter_modifier()
- || self.is_letter_other()
- || self.is_letter_titlecase()
- || self.is_letter_uppercase()
- }
-
- /// Returns true if this value is a member of a
- /// "Mark" category: Mc, Me, or Mn.
- #[inline]
- fn is_mark(self) -> bool {
- self.is_mark_spacing_combining()
- || self.is_mark_enclosing()
- || self.is_mark_nonspacing()
- }
-
- /// Returns true if this value is a member of a
- /// "Number" category: Nd, Nl, or No.
- #[inline]
- fn is_number(self) -> bool {
- self.is_number_decimal_digit()
- || self.is_number_letter()
- || self.is_number_other()
- }
-
- /// Returns true if this value is a member of a
- /// "Punctuation" category: Pc, Pd, Pe, Pf, Pi, Po, or Ps.
- #[inline]
- fn is_punctuation(self) -> bool {
- self.is_punctuation_connector()
- || self.is_punctuation_dash()
- || self.is_punctuation_close()
- || self.is_punctuation_close()
- || self.is_punctuation_final_quote()
- || self.is_punctuation_initial_quote()
- || self.is_punctuation_other()
- || self.is_punctuation_open()
- }
-
- /// Returns true if this value is a member of a
- /// "Symbol" category: Sc, Sk, Sm, or So.
- #[inline]
- fn is_symbol(self) -> bool {
- self.is_symbol_currency()
- || self.is_symbol_modifier()
- || self.is_symbol_math()
- || self.is_symbol_other()
- }
-
- /// Returns true if this value is a member of a
- /// "Separator" category: Zl, Zp, or Zs.
- #[inline]
- fn is_separator(self) -> bool {
- self.is_separator_line()
- || self.is_separator_paragraph()
- || self.is_separator_space()
- }
-}
-
-fn table_binary_search(target: char, table: &'static [char]) -> bool {
- table.binary_search(&target).is_ok()
-}
-
-impl UnicodeCategories for char {
- #[inline]
- fn is_other_control(self) -> bool {
- table_binary_search(self, tables::OTHER_CONTROL)
- }
-
- #[inline]
- fn is_other_format(self) -> bool {
- table_binary_search(self, tables::OTHER_FORMAT)
- }
-
- #[inline]
- fn is_other_private_use(self) -> bool {
- match self {
- // Private Use
- '\u{E000}'...'\u{F8FF}' => true,
- // Plane 15, Private Use
- '\u{F0000}'...'\u{FFFFD}' => true,
- // Plane 16, private Use
- '\u{100000}'...'\u{10FFFD}' => true,
- _ => table_binary_search(self, tables::OTHER_PRIVATE_USE)
- }
- }
-
- #[inline]
- fn is_letter_lowercase(self) -> bool {
- table_binary_search(self, tables::LETTER_LOWERCASED)
- }
-
- #[inline]
- fn is_letter_modifier(self) -> bool {
- table_binary_search(self, tables::LETTER_MODIFIER)
- }
-
- #[inline]
- fn is_letter_other(self) -> bool {
- match self {
- // CJK Ideograph Extension A
- '\u{3400}'...'\u{4DB5}' => true,
- // CJK Ideograph
- '\u{4E00}'...'\u{9FD5}' => true,
- // Hangul Syllable
- '\u{AC00}'...'\u{D7A3}' => true,
- // Tangut Ideograph
- '\u{17000}'...'\u{187EC}' => true,
- // CJK Ideograph Extension B
- '\u{20000}'...'\u{2A6D6}' => true,
- // CJK Ideograph Extension C
- '\u{2A700}'...'\u{2B734}' => true,
- // CJK Ideograph Extension D
- '\u{2B740}'...'\u{2B81D}' => true,
- // CJK Ideograph Extension E
- '\u{2B820}'...'\u{2CEA1}' => true,
- _ => table_binary_search(self, tables::LETTER_OTHER)
- }
- }
-
- #[inline]
- fn is_letter_titlecase(self) -> bool {
- table_binary_search(self, tables::LETTER_TITLECASE)
- }
-
- #[inline]
- fn is_letter_uppercase(self) -> bool {
- table_binary_search(self, tables::LETTER_UPPERCASE)
- }
-
- #[inline]
- fn is_mark_spacing_combining(self) -> bool {
- table_binary_search(self, tables::MARK_SPACE_COMBINING)
- }
-
- #[inline]
- fn is_mark_enclosing(self) -> bool {
- table_binary_search(self, tables::MARK_ENCLOSING)
- }
-
- #[inline]
- fn is_mark_nonspacing(self) -> bool {
- table_binary_search(self, tables::MARK_NONSPACING)
- }
-
- #[inline]
- fn is_number_decimal_digit(self) -> bool {
- table_binary_search(self, tables::NUMBER_DECIMAL_DIGIT)
- }
-
- #[inline]
- fn is_number_letter(self) -> bool {
- table_binary_search(self, tables::NUMBER_LETTER)
- }
-
- #[inline]
- fn is_number_other(self) -> bool {
- table_binary_search(self, tables::NUMBER_OTHER)
- }
-
- #[inline]
- fn is_punctuation_connector(self) -> bool {
- table_binary_search(self, tables::PUNCTUATION_CONNECTOR)
- }
-
- #[inline]
- fn is_punctuation_dash(self) -> bool {
- table_binary_search(self, tables::PUNCTUATION_DASH)
- }
-
- #[inline]
- fn is_punctuation_close(self) -> bool {
- table_binary_search(self, tables::PUNCTUATION_CLOSE)
- }
-
- #[inline]
- fn is_punctuation_final_quote(self) -> bool {
- table_binary_search(self, tables::PUNCTUATION_FINAL_QUOTE)
- }
-
- #[inline]
- fn is_punctuation_initial_quote(self) -> bool {
- table_binary_search(self, tables::PUNCTUATION_INITIAL_QUOTE)
- }
-
- #[inline]
- fn is_punctuation_other(self) -> bool {
- table_binary_search(self, tables::PUNCTUATION_OTHER)
- }
-
- #[inline]
- fn is_punctuation_open(self) -> bool {
- table_binary_search(self, tables::PUNCTUATION_OPEN)
- }
-
- #[inline]
- fn is_symbol_currency(self) -> bool {
- table_binary_search(self, tables::SYMBOL_CURRENCY)
- }
-
- #[inline]
- fn is_symbol_modifier(self) -> bool {
- table_binary_search(self, tables::SYMBOL_MODIFIER)
- }
-
- #[inline]
- fn is_symbol_math(self) -> bool {
- table_binary_search(self, tables::SYMBOL_MATH)
- }
-
- #[inline]
- fn is_symbol_other(self) -> bool {
- table_binary_search(self, tables::SYMBOL_OTHER)
- }
-
- #[inline]
- fn is_separator_line(self) -> bool {
- table_binary_search(self, tables::SEPARATOR_LINE)
- }
-
- #[inline]
- fn is_separator_paragraph(self) -> bool {
- table_binary_search(self, tables::SEPARATOR_PARAGRAPH)
- }
-
- #[inline]
- fn is_separator_space(self) -> bool {
- table_binary_search(self, tables::SEPARATOR_SPACE)
- }
-}
-
-#[cfg(test)]
-mod tests {
- use super::UnicodeCategories;
-
- #[test]
- fn is_other_control() {
- assert!('\0'.is_other_control());
- assert!('\u{007F}'.is_other_control());
- assert!(!'f'.is_other_control());
- }
-
- #[test]
- fn is_other_format() {
- assert!('Ø'.is_other_format());
- assert!(!'0'.is_other_format());
- }
-
- #[test]
- fn is_other_private_use() {
- assert!('\u{F8FF}'.is_other_private_use());
- assert!(!'n'.is_other_private_use())
- }
-
- #[test]
- fn is_letter_lowercase() {
- assert!('q'.is_letter_lowercase());
- assert!(!'N'.is_letter_lowercase());
- }
-
- #[test]
- fn is_letter_modifier() {
- assert!('Ë¢'.is_letter_modifier());
- assert!(!'m'.is_letter_modifier());
- }
-
- #[test]
- fn is_letter_range() {
- assert!('界'.is_letter_other());
- }
-}
diff --git a/vendor/unicode_categories/src/tables.rs b/vendor/unicode_categories/src/tables.rs
deleted file mode 100644
index 6076e6ec5..000000000
--- a/vendor/unicode_categories/src/tables.rs
+++ /dev/null
@@ -1,3722 +0,0 @@
-// This file is autogenerated by scripts/unicode.py.
-
-pub static LETTER_LOWERCASED : &'static [char] = &[
- '\u{0061}', '\u{0062}', '\u{0063}', '\u{0064}', '\u{0065}', '\u{0066}', '\u{0067}', '\u{0068}',
- '\u{0069}', '\u{006A}', '\u{006B}', '\u{006C}', '\u{006D}', '\u{006E}', '\u{006F}', '\u{0070}',
- '\u{0071}', '\u{0072}', '\u{0073}', '\u{0074}', '\u{0075}', '\u{0076}', '\u{0077}', '\u{0078}',
- '\u{0079}', '\u{007A}', '\u{00B5}', '\u{00DF}', '\u{00E0}', '\u{00E1}', '\u{00E2}', '\u{00E3}',
- '\u{00E4}', '\u{00E5}', '\u{00E6}', '\u{00E7}', '\u{00E8}', '\u{00E9}', '\u{00EA}', '\u{00EB}',
- '\u{00EC}', '\u{00ED}', '\u{00EE}', '\u{00EF}', '\u{00F0}', '\u{00F1}', '\u{00F2}', '\u{00F3}',
- '\u{00F4}', '\u{00F5}', '\u{00F6}', '\u{00F8}', '\u{00F9}', '\u{00FA}', '\u{00FB}', '\u{00FC}',
- '\u{00FD}', '\u{00FE}', '\u{00FF}', '\u{0101}', '\u{0103}', '\u{0105}', '\u{0107}', '\u{0109}',
- '\u{010B}', '\u{010D}', '\u{010F}', '\u{0111}', '\u{0113}', '\u{0115}', '\u{0117}', '\u{0119}',
- '\u{011B}', '\u{011D}', '\u{011F}', '\u{0121}', '\u{0123}', '\u{0125}', '\u{0127}', '\u{0129}',
- '\u{012B}', '\u{012D}', '\u{012F}', '\u{0131}', '\u{0133}', '\u{0135}', '\u{0137}', '\u{0138}',
- '\u{013A}', '\u{013C}', '\u{013E}', '\u{0140}', '\u{0142}', '\u{0144}', '\u{0146}', '\u{0148}',
- '\u{0149}', '\u{014B}', '\u{014D}', '\u{014F}', '\u{0151}', '\u{0153}', '\u{0155}', '\u{0157}',
- '\u{0159}', '\u{015B}', '\u{015D}', '\u{015F}', '\u{0161}', '\u{0163}', '\u{0165}', '\u{0167}',
- '\u{0169}', '\u{016B}', '\u{016D}', '\u{016F}', '\u{0171}', '\u{0173}', '\u{0175}', '\u{0177}',
- '\u{017A}', '\u{017C}', '\u{017E}', '\u{017F}', '\u{0180}', '\u{0183}', '\u{0185}', '\u{0188}',
- '\u{018C}', '\u{018D}', '\u{0192}', '\u{0195}', '\u{0199}', '\u{019A}', '\u{019B}', '\u{019E}',
- '\u{01A1}', '\u{01A3}', '\u{01A5}', '\u{01A8}', '\u{01AA}', '\u{01AB}', '\u{01AD}', '\u{01B0}',
- '\u{01B4}', '\u{01B6}', '\u{01B9}', '\u{01BA}', '\u{01BD}', '\u{01BE}', '\u{01BF}', '\u{01C6}',
- '\u{01C9}', '\u{01CC}', '\u{01CE}', '\u{01D0}', '\u{01D2}', '\u{01D4}', '\u{01D6}', '\u{01D8}',
- '\u{01DA}', '\u{01DC}', '\u{01DD}', '\u{01DF}', '\u{01E1}', '\u{01E3}', '\u{01E5}', '\u{01E7}',
- '\u{01E9}', '\u{01EB}', '\u{01ED}', '\u{01EF}', '\u{01F0}', '\u{01F3}', '\u{01F5}', '\u{01F9}',
- '\u{01FB}', '\u{01FD}', '\u{01FF}', '\u{0201}', '\u{0203}', '\u{0205}', '\u{0207}', '\u{0209}',
- '\u{020B}', '\u{020D}', '\u{020F}', '\u{0211}', '\u{0213}', '\u{0215}', '\u{0217}', '\u{0219}',
- '\u{021B}', '\u{021D}', '\u{021F}', '\u{0221}', '\u{0223}', '\u{0225}', '\u{0227}', '\u{0229}',
- '\u{022B}', '\u{022D}', '\u{022F}', '\u{0231}', '\u{0233}', '\u{0234}', '\u{0235}', '\u{0236}',
- '\u{0237}', '\u{0238}', '\u{0239}', '\u{023C}', '\u{023F}', '\u{0240}', '\u{0242}', '\u{0247}',
- '\u{0249}', '\u{024B}', '\u{024D}', '\u{024F}', '\u{0250}', '\u{0251}', '\u{0252}', '\u{0253}',
- '\u{0254}', '\u{0255}', '\u{0256}', '\u{0257}', '\u{0258}', '\u{0259}', '\u{025A}', '\u{025B}',
- '\u{025C}', '\u{025D}', '\u{025E}', '\u{025F}', '\u{0260}', '\u{0261}', '\u{0262}', '\u{0263}',
- '\u{0264}', '\u{0265}', '\u{0266}', '\u{0267}', '\u{0268}', '\u{0269}', '\u{026A}', '\u{026B}',
- '\u{026C}', '\u{026D}', '\u{026E}', '\u{026F}', '\u{0270}', '\u{0271}', '\u{0272}', '\u{0273}',
- '\u{0274}', '\u{0275}', '\u{0276}', '\u{0277}', '\u{0278}', '\u{0279}', '\u{027A}', '\u{027B}',
- '\u{027C}', '\u{027D}', '\u{027E}', '\u{027F}', '\u{0280}', '\u{0281}', '\u{0282}', '\u{0283}',
- '\u{0284}', '\u{0285}', '\u{0286}', '\u{0287}', '\u{0288}', '\u{0289}', '\u{028A}', '\u{028B}',
- '\u{028C}', '\u{028D}', '\u{028E}', '\u{028F}', '\u{0290}', '\u{0291}', '\u{0292}', '\u{0293}',
- '\u{0295}', '\u{0296}', '\u{0297}', '\u{0298}', '\u{0299}', '\u{029A}', '\u{029B}', '\u{029C}',
- '\u{029D}', '\u{029E}', '\u{029F}', '\u{02A0}', '\u{02A1}', '\u{02A2}', '\u{02A3}', '\u{02A4}',
- '\u{02A5}', '\u{02A6}', '\u{02A7}', '\u{02A8}', '\u{02A9}', '\u{02AA}', '\u{02AB}', '\u{02AC}',
- '\u{02AD}', '\u{02AE}', '\u{02AF}', '\u{0371}', '\u{0373}', '\u{0377}', '\u{037B}', '\u{037C}',
- '\u{037D}', '\u{0390}', '\u{03AC}', '\u{03AD}', '\u{03AE}', '\u{03AF}', '\u{03B0}', '\u{03B1}',
- '\u{03B2}', '\u{03B3}', '\u{03B4}', '\u{03B5}', '\u{03B6}', '\u{03B7}', '\u{03B8}', '\u{03B9}',
- '\u{03BA}', '\u{03BB}', '\u{03BC}', '\u{03BD}', '\u{03BE}', '\u{03BF}', '\u{03C0}', '\u{03C1}',
- '\u{03C2}', '\u{03C3}', '\u{03C4}', '\u{03C5}', '\u{03C6}', '\u{03C7}', '\u{03C8}', '\u{03C9}',
- '\u{03CA}', '\u{03CB}', '\u{03CC}', '\u{03CD}', '\u{03CE}', '\u{03D0}', '\u{03D1}', '\u{03D5}',
- '\u{03D6}', '\u{03D7}', '\u{03D9}', '\u{03DB}', '\u{03DD}', '\u{03DF}', '\u{03E1}', '\u{03E3}',
- '\u{03E5}', '\u{03E7}', '\u{03E9}', '\u{03EB}', '\u{03ED}', '\u{03EF}', '\u{03F0}', '\u{03F1}',
- '\u{03F2}', '\u{03F3}', '\u{03F5}', '\u{03F8}', '\u{03FB}', '\u{03FC}', '\u{0430}', '\u{0431}',
- '\u{0432}', '\u{0433}', '\u{0434}', '\u{0435}', '\u{0436}', '\u{0437}', '\u{0438}', '\u{0439}',
- '\u{043A}', '\u{043B}', '\u{043C}', '\u{043D}', '\u{043E}', '\u{043F}', '\u{0440}', '\u{0441}',
- '\u{0442}', '\u{0443}', '\u{0444}', '\u{0445}', '\u{0446}', '\u{0447}', '\u{0448}', '\u{0449}',
- '\u{044A}', '\u{044B}', '\u{044C}', '\u{044D}', '\u{044E}', '\u{044F}', '\u{0450}', '\u{0451}',
- '\u{0452}', '\u{0453}', '\u{0454}', '\u{0455}', '\u{0456}', '\u{0457}', '\u{0458}', '\u{0459}',
- '\u{045A}', '\u{045B}', '\u{045C}', '\u{045D}', '\u{045E}', '\u{045F}', '\u{0461}', '\u{0463}',
- '\u{0465}', '\u{0467}', '\u{0469}', '\u{046B}', '\u{046D}', '\u{046F}', '\u{0471}', '\u{0473}',
- '\u{0475}', '\u{0477}', '\u{0479}', '\u{047B}', '\u{047D}', '\u{047F}', '\u{0481}', '\u{048B}',
- '\u{048D}', '\u{048F}', '\u{0491}', '\u{0493}', '\u{0495}', '\u{0497}', '\u{0499}', '\u{049B}',
- '\u{049D}', '\u{049F}', '\u{04A1}', '\u{04A3}', '\u{04A5}', '\u{04A7}', '\u{04A9}', '\u{04AB}',
- '\u{04AD}', '\u{04AF}', '\u{04B1}', '\u{04B3}', '\u{04B5}', '\u{04B7}', '\u{04B9}', '\u{04BB}',
- '\u{04BD}', '\u{04BF}', '\u{04C2}', '\u{04C4}', '\u{04C6}', '\u{04C8}', '\u{04CA}', '\u{04CC}',
- '\u{04CE}', '\u{04CF}', '\u{04D1}', '\u{04D3}', '\u{04D5}', '\u{04D7}', '\u{04D9}', '\u{04DB}',
- '\u{04DD}', '\u{04DF}', '\u{04E1}', '\u{04E3}', '\u{04E5}', '\u{04E7}', '\u{04E9}', '\u{04EB}',
- '\u{04ED}', '\u{04EF}', '\u{04F1}', '\u{04F3}', '\u{04F5}', '\u{04F7}', '\u{04F9}', '\u{04FB}',
- '\u{04FD}', '\u{04FF}', '\u{0501}', '\u{0503}', '\u{0505}', '\u{0507}', '\u{0509}', '\u{050B}',
- '\u{050D}', '\u{050F}', '\u{0511}', '\u{0513}', '\u{0515}', '\u{0517}', '\u{0519}', '\u{051B}',
- '\u{051D}', '\u{051F}', '\u{0521}', '\u{0523}', '\u{0525}', '\u{0527}', '\u{0529}', '\u{052B}',
- '\u{052D}', '\u{052F}', '\u{0561}', '\u{0562}', '\u{0563}', '\u{0564}', '\u{0565}', '\u{0566}',
- '\u{0567}', '\u{0568}', '\u{0569}', '\u{056A}', '\u{056B}', '\u{056C}', '\u{056D}', '\u{056E}',
- '\u{056F}', '\u{0570}', '\u{0571}', '\u{0572}', '\u{0573}', '\u{0574}', '\u{0575}', '\u{0576}',
- '\u{0577}', '\u{0578}', '\u{0579}', '\u{057A}', '\u{057B}', '\u{057C}', '\u{057D}', '\u{057E}',
- '\u{057F}', '\u{0580}', '\u{0581}', '\u{0582}', '\u{0583}', '\u{0584}', '\u{0585}', '\u{0586}',
- '\u{0587}', '\u{13F8}', '\u{13F9}', '\u{13FA}', '\u{13FB}', '\u{13FC}', '\u{13FD}', '\u{1D00}',
- '\u{1D01}', '\u{1D02}', '\u{1D03}', '\u{1D04}', '\u{1D05}', '\u{1D06}', '\u{1D07}', '\u{1D08}',
- '\u{1D09}', '\u{1D0A}', '\u{1D0B}', '\u{1D0C}', '\u{1D0D}', '\u{1D0E}', '\u{1D0F}', '\u{1D10}',
- '\u{1D11}', '\u{1D12}', '\u{1D13}', '\u{1D14}', '\u{1D15}', '\u{1D16}', '\u{1D17}', '\u{1D18}',
- '\u{1D19}', '\u{1D1A}', '\u{1D1B}', '\u{1D1C}', '\u{1D1D}', '\u{1D1E}', '\u{1D1F}', '\u{1D20}',
- '\u{1D21}', '\u{1D22}', '\u{1D23}', '\u{1D24}', '\u{1D25}', '\u{1D26}', '\u{1D27}', '\u{1D28}',
- '\u{1D29}', '\u{1D2A}', '\u{1D2B}', '\u{1D6B}', '\u{1D6C}', '\u{1D6D}', '\u{1D6E}', '\u{1D6F}',
- '\u{1D70}', '\u{1D71}', '\u{1D72}', '\u{1D73}', '\u{1D74}', '\u{1D75}', '\u{1D76}', '\u{1D77}',
- '\u{1D79}', '\u{1D7A}', '\u{1D7B}', '\u{1D7C}', '\u{1D7D}', '\u{1D7E}', '\u{1D7F}', '\u{1D80}',
- '\u{1D81}', '\u{1D82}', '\u{1D83}', '\u{1D84}', '\u{1D85}', '\u{1D86}', '\u{1D87}', '\u{1D88}',
- '\u{1D89}', '\u{1D8A}', '\u{1D8B}', '\u{1D8C}', '\u{1D8D}', '\u{1D8E}', '\u{1D8F}', '\u{1D90}',
- '\u{1D91}', '\u{1D92}', '\u{1D93}', '\u{1D94}', '\u{1D95}', '\u{1D96}', '\u{1D97}', '\u{1D98}',
- '\u{1D99}', '\u{1D9A}', '\u{1E01}', '\u{1E03}', '\u{1E05}', '\u{1E07}', '\u{1E09}', '\u{1E0B}',
- '\u{1E0D}', '\u{1E0F}', '\u{1E11}', '\u{1E13}', '\u{1E15}', '\u{1E17}', '\u{1E19}', '\u{1E1B}',
- '\u{1E1D}', '\u{1E1F}', '\u{1E21}', '\u{1E23}', '\u{1E25}', '\u{1E27}', '\u{1E29}', '\u{1E2B}',
- '\u{1E2D}', '\u{1E2F}', '\u{1E31}', '\u{1E33}', '\u{1E35}', '\u{1E37}', '\u{1E39}', '\u{1E3B}',
- '\u{1E3D}', '\u{1E3F}', '\u{1E41}', '\u{1E43}', '\u{1E45}', '\u{1E47}', '\u{1E49}', '\u{1E4B}',
- '\u{1E4D}', '\u{1E4F}', '\u{1E51}', '\u{1E53}', '\u{1E55}', '\u{1E57}', '\u{1E59}', '\u{1E5B}',
- '\u{1E5D}', '\u{1E5F}', '\u{1E61}', '\u{1E63}', '\u{1E65}', '\u{1E67}', '\u{1E69}', '\u{1E6B}',
- '\u{1E6D}', '\u{1E6F}', '\u{1E71}', '\u{1E73}', '\u{1E75}', '\u{1E77}', '\u{1E79}', '\u{1E7B}',
- '\u{1E7D}', '\u{1E7F}', '\u{1E81}', '\u{1E83}', '\u{1E85}', '\u{1E87}', '\u{1E89}', '\u{1E8B}',
- '\u{1E8D}', '\u{1E8F}', '\u{1E91}', '\u{1E93}', '\u{1E95}', '\u{1E96}', '\u{1E97}', '\u{1E98}',
- '\u{1E99}', '\u{1E9A}', '\u{1E9B}', '\u{1E9C}', '\u{1E9D}', '\u{1E9F}', '\u{1EA1}', '\u{1EA3}',
- '\u{1EA5}', '\u{1EA7}', '\u{1EA9}', '\u{1EAB}', '\u{1EAD}', '\u{1EAF}', '\u{1EB1}', '\u{1EB3}',
- '\u{1EB5}', '\u{1EB7}', '\u{1EB9}', '\u{1EBB}', '\u{1EBD}', '\u{1EBF}', '\u{1EC1}', '\u{1EC3}',
- '\u{1EC5}', '\u{1EC7}', '\u{1EC9}', '\u{1ECB}', '\u{1ECD}', '\u{1ECF}', '\u{1ED1}', '\u{1ED3}',
- '\u{1ED5}', '\u{1ED7}', '\u{1ED9}', '\u{1EDB}', '\u{1EDD}', '\u{1EDF}', '\u{1EE1}', '\u{1EE3}',
- '\u{1EE5}', '\u{1EE7}', '\u{1EE9}', '\u{1EEB}', '\u{1EED}', '\u{1EEF}', '\u{1EF1}', '\u{1EF3}',
- '\u{1EF5}', '\u{1EF7}', '\u{1EF9}', '\u{1EFB}', '\u{1EFD}', '\u{1EFF}', '\u{1F00}', '\u{1F01}',
- '\u{1F02}', '\u{1F03}', '\u{1F04}', '\u{1F05}', '\u{1F06}', '\u{1F07}', '\u{1F10}', '\u{1F11}',
- '\u{1F12}', '\u{1F13}', '\u{1F14}', '\u{1F15}', '\u{1F20}', '\u{1F21}', '\u{1F22}', '\u{1F23}',
- '\u{1F24}', '\u{1F25}', '\u{1F26}', '\u{1F27}', '\u{1F30}', '\u{1F31}', '\u{1F32}', '\u{1F33}',
- '\u{1F34}', '\u{1F35}', '\u{1F36}', '\u{1F37}', '\u{1F40}', '\u{1F41}', '\u{1F42}', '\u{1F43}',
- '\u{1F44}', '\u{1F45}', '\u{1F50}', '\u{1F51}', '\u{1F52}', '\u{1F53}', '\u{1F54}', '\u{1F55}',
- '\u{1F56}', '\u{1F57}', '\u{1F60}', '\u{1F61}', '\u{1F62}', '\u{1F63}', '\u{1F64}', '\u{1F65}',
- '\u{1F66}', '\u{1F67}', '\u{1F70}', '\u{1F71}', '\u{1F72}', '\u{1F73}', '\u{1F74}', '\u{1F75}',
- '\u{1F76}', '\u{1F77}', '\u{1F78}', '\u{1F79}', '\u{1F7A}', '\u{1F7B}', '\u{1F7C}', '\u{1F7D}',
- '\u{1F80}', '\u{1F81}', '\u{1F82}', '\u{1F83}', '\u{1F84}', '\u{1F85}', '\u{1F86}', '\u{1F87}',
- '\u{1F90}', '\u{1F91}', '\u{1F92}', '\u{1F93}', '\u{1F94}', '\u{1F95}', '\u{1F96}', '\u{1F97}',
- '\u{1FA0}', '\u{1FA1}', '\u{1FA2}', '\u{1FA3}', '\u{1FA4}', '\u{1FA5}', '\u{1FA6}', '\u{1FA7}',
- '\u{1FB0}', '\u{1FB1}', '\u{1FB2}', '\u{1FB3}', '\u{1FB4}', '\u{1FB6}', '\u{1FB7}', '\u{1FBE}',
- '\u{1FC2}', '\u{1FC3}', '\u{1FC4}', '\u{1FC6}', '\u{1FC7}', '\u{1FD0}', '\u{1FD1}', '\u{1FD2}',
- '\u{1FD3}', '\u{1FD6}', '\u{1FD7}', '\u{1FE0}', '\u{1FE1}', '\u{1FE2}', '\u{1FE3}', '\u{1FE4}',
- '\u{1FE5}', '\u{1FE6}', '\u{1FE7}', '\u{1FF2}', '\u{1FF3}', '\u{1FF4}', '\u{1FF6}', '\u{1FF7}',
- '\u{210A}', '\u{210E}', '\u{210F}', '\u{2113}', '\u{212F}', '\u{2134}', '\u{2139}', '\u{213C}',
- '\u{213D}', '\u{2146}', '\u{2147}', '\u{2148}', '\u{2149}', '\u{214E}', '\u{2184}', '\u{2C30}',
- '\u{2C31}', '\u{2C32}', '\u{2C33}', '\u{2C34}', '\u{2C35}', '\u{2C36}', '\u{2C37}', '\u{2C38}',
- '\u{2C39}', '\u{2C3A}', '\u{2C3B}', '\u{2C3C}', '\u{2C3D}', '\u{2C3E}', '\u{2C3F}', '\u{2C40}',
- '\u{2C41}', '\u{2C42}', '\u{2C43}', '\u{2C44}', '\u{2C45}', '\u{2C46}', '\u{2C47}', '\u{2C48}',
- '\u{2C49}', '\u{2C4A}', '\u{2C4B}', '\u{2C4C}', '\u{2C4D}', '\u{2C4E}', '\u{2C4F}', '\u{2C50}',
- '\u{2C51}', '\u{2C52}', '\u{2C53}', '\u{2C54}', '\u{2C55}', '\u{2C56}', '\u{2C57}', '\u{2C58}',
- '\u{2C59}', '\u{2C5A}', '\u{2C5B}', '\u{2C5C}', '\u{2C5D}', '\u{2C5E}', '\u{2C61}', '\u{2C65}',
- '\u{2C66}', '\u{2C68}', '\u{2C6A}', '\u{2C6C}', '\u{2C71}', '\u{2C73}', '\u{2C74}', '\u{2C76}',
- '\u{2C77}', '\u{2C78}', '\u{2C79}', '\u{2C7A}', '\u{2C7B}', '\u{2C81}', '\u{2C83}', '\u{2C85}',
- '\u{2C87}', '\u{2C89}', '\u{2C8B}', '\u{2C8D}', '\u{2C8F}', '\u{2C91}', '\u{2C93}', '\u{2C95}',
- '\u{2C97}', '\u{2C99}', '\u{2C9B}', '\u{2C9D}', '\u{2C9F}', '\u{2CA1}', '\u{2CA3}', '\u{2CA5}',
- '\u{2CA7}', '\u{2CA9}', '\u{2CAB}', '\u{2CAD}', '\u{2CAF}', '\u{2CB1}', '\u{2CB3}', '\u{2CB5}',
- '\u{2CB7}', '\u{2CB9}', '\u{2CBB}', '\u{2CBD}', '\u{2CBF}', '\u{2CC1}', '\u{2CC3}', '\u{2CC5}',
- '\u{2CC7}', '\u{2CC9}', '\u{2CCB}', '\u{2CCD}', '\u{2CCF}', '\u{2CD1}', '\u{2CD3}', '\u{2CD5}',
- '\u{2CD7}', '\u{2CD9}', '\u{2CDB}', '\u{2CDD}', '\u{2CDF}', '\u{2CE1}', '\u{2CE3}', '\u{2CE4}',
- '\u{2CEC}', '\u{2CEE}', '\u{2CF3}', '\u{2D00}', '\u{2D01}', '\u{2D02}', '\u{2D03}', '\u{2D04}',
- '\u{2D05}', '\u{2D06}', '\u{2D07}', '\u{2D08}', '\u{2D09}', '\u{2D0A}', '\u{2D0B}', '\u{2D0C}',
- '\u{2D0D}', '\u{2D0E}', '\u{2D0F}', '\u{2D10}', '\u{2D11}', '\u{2D12}', '\u{2D13}', '\u{2D14}',
- '\u{2D15}', '\u{2D16}', '\u{2D17}', '\u{2D18}', '\u{2D19}', '\u{2D1A}', '\u{2D1B}', '\u{2D1C}',
- '\u{2D1D}', '\u{2D1E}', '\u{2D1F}', '\u{2D20}', '\u{2D21}', '\u{2D22}', '\u{2D23}', '\u{2D24}',
- '\u{2D25}', '\u{2D27}', '\u{2D2D}', '\u{A641}', '\u{A643}', '\u{A645}', '\u{A647}', '\u{A649}',
- '\u{A64B}', '\u{A64D}', '\u{A64F}', '\u{A651}', '\u{A653}', '\u{A655}', '\u{A657}', '\u{A659}',
- '\u{A65B}', '\u{A65D}', '\u{A65F}', '\u{A661}', '\u{A663}', '\u{A665}', '\u{A667}', '\u{A669}',
- '\u{A66B}', '\u{A66D}', '\u{A681}', '\u{A683}', '\u{A685}', '\u{A687}', '\u{A689}', '\u{A68B}',
- '\u{A68D}', '\u{A68F}', '\u{A691}', '\u{A693}', '\u{A695}', '\u{A697}', '\u{A699}', '\u{A69B}',
- '\u{A723}', '\u{A725}', '\u{A727}', '\u{A729}', '\u{A72B}', '\u{A72D}', '\u{A72F}', '\u{A730}',
- '\u{A731}', '\u{A733}', '\u{A735}', '\u{A737}', '\u{A739}', '\u{A73B}', '\u{A73D}', '\u{A73F}',
- '\u{A741}', '\u{A743}', '\u{A745}', '\u{A747}', '\u{A749}', '\u{A74B}', '\u{A74D}', '\u{A74F}',
- '\u{A751}', '\u{A753}', '\u{A755}', '\u{A757}', '\u{A759}', '\u{A75B}', '\u{A75D}', '\u{A75F}',
- '\u{A761}', '\u{A763}', '\u{A765}', '\u{A767}', '\u{A769}', '\u{A76B}', '\u{A76D}', '\u{A76F}',
- '\u{A771}', '\u{A772}', '\u{A773}', '\u{A774}', '\u{A775}', '\u{A776}', '\u{A777}', '\u{A778}',
- '\u{A77A}', '\u{A77C}', '\u{A77F}', '\u{A781}', '\u{A783}', '\u{A785}', '\u{A787}', '\u{A78C}',
- '\u{A78E}', '\u{A791}', '\u{A793}', '\u{A794}', '\u{A795}', '\u{A797}', '\u{A799}', '\u{A79B}',
- '\u{A79D}', '\u{A79F}', '\u{A7A1}', '\u{A7A3}', '\u{A7A5}', '\u{A7A7}', '\u{A7A9}', '\u{A7B5}',
- '\u{A7B7}', '\u{A7FA}', '\u{AB30}', '\u{AB31}', '\u{AB32}', '\u{AB33}', '\u{AB34}', '\u{AB35}',
- '\u{AB36}', '\u{AB37}', '\u{AB38}', '\u{AB39}', '\u{AB3A}', '\u{AB3B}', '\u{AB3C}', '\u{AB3D}',
- '\u{AB3E}', '\u{AB3F}', '\u{AB40}', '\u{AB41}', '\u{AB42}', '\u{AB43}', '\u{AB44}', '\u{AB45}',
- '\u{AB46}', '\u{AB47}', '\u{AB48}', '\u{AB49}', '\u{AB4A}', '\u{AB4B}', '\u{AB4C}', '\u{AB4D}',
- '\u{AB4E}', '\u{AB4F}', '\u{AB50}', '\u{AB51}', '\u{AB52}', '\u{AB53}', '\u{AB54}', '\u{AB55}',
- '\u{AB56}', '\u{AB57}', '\u{AB58}', '\u{AB59}', '\u{AB5A}', '\u{AB60}', '\u{AB61}', '\u{AB62}',
- '\u{AB63}', '\u{AB64}', '\u{AB65}', '\u{AB70}', '\u{AB71}', '\u{AB72}', '\u{AB73}', '\u{AB74}',
- '\u{AB75}', '\u{AB76}', '\u{AB77}', '\u{AB78}', '\u{AB79}', '\u{AB7A}', '\u{AB7B}', '\u{AB7C}',
- '\u{AB7D}', '\u{AB7E}', '\u{AB7F}', '\u{AB80}', '\u{AB81}', '\u{AB82}', '\u{AB83}', '\u{AB84}',
- '\u{AB85}', '\u{AB86}', '\u{AB87}', '\u{AB88}', '\u{AB89}', '\u{AB8A}', '\u{AB8B}', '\u{AB8C}',
- '\u{AB8D}', '\u{AB8E}', '\u{AB8F}', '\u{AB90}', '\u{AB91}', '\u{AB92}', '\u{AB93}', '\u{AB94}',
- '\u{AB95}', '\u{AB96}', '\u{AB97}', '\u{AB98}', '\u{AB99}', '\u{AB9A}', '\u{AB9B}', '\u{AB9C}',
- '\u{AB9D}', '\u{AB9E}', '\u{AB9F}', '\u{ABA0}', '\u{ABA1}', '\u{ABA2}', '\u{ABA3}', '\u{ABA4}',
- '\u{ABA5}', '\u{ABA6}', '\u{ABA7}', '\u{ABA8}', '\u{ABA9}', '\u{ABAA}', '\u{ABAB}', '\u{ABAC}',
- '\u{ABAD}', '\u{ABAE}', '\u{ABAF}', '\u{ABB0}', '\u{ABB1}', '\u{ABB2}', '\u{ABB3}', '\u{ABB4}',
- '\u{ABB5}', '\u{ABB6}', '\u{ABB7}', '\u{ABB8}', '\u{ABB9}', '\u{ABBA}', '\u{ABBB}', '\u{ABBC}',
- '\u{ABBD}', '\u{ABBE}', '\u{ABBF}', '\u{FB00}', '\u{FB01}', '\u{FB02}', '\u{FB03}', '\u{FB04}',
- '\u{FB05}', '\u{FB06}', '\u{FB13}', '\u{FB14}', '\u{FB15}', '\u{FB16}', '\u{FB17}', '\u{FF41}',
- '\u{FF42}', '\u{FF43}', '\u{FF44}', '\u{FF45}', '\u{FF46}', '\u{FF47}', '\u{FF48}', '\u{FF49}',
- '\u{FF4A}', '\u{FF4B}', '\u{FF4C}', '\u{FF4D}', '\u{FF4E}', '\u{FF4F}', '\u{FF50}', '\u{FF51}',
- '\u{FF52}', '\u{FF53}', '\u{FF54}', '\u{FF55}', '\u{FF56}', '\u{FF57}', '\u{FF58}', '\u{FF59}',
- '\u{FF5A}', '\u{10428}', '\u{10429}', '\u{1042A}', '\u{1042B}', '\u{1042C}', '\u{1042D}', '\u{1042E}',
- '\u{1042F}', '\u{10430}', '\u{10431}', '\u{10432}', '\u{10433}', '\u{10434}', '\u{10435}', '\u{10436}',
- '\u{10437}', '\u{10438}', '\u{10439}', '\u{1043A}', '\u{1043B}', '\u{1043C}', '\u{1043D}', '\u{1043E}',
- '\u{1043F}', '\u{10440}', '\u{10441}', '\u{10442}', '\u{10443}', '\u{10444}', '\u{10445}', '\u{10446}',
- '\u{10447}', '\u{10448}', '\u{10449}', '\u{1044A}', '\u{1044B}', '\u{1044C}', '\u{1044D}', '\u{1044E}',
- '\u{1044F}', '\u{10CC0}', '\u{10CC1}', '\u{10CC2}', '\u{10CC3}', '\u{10CC4}', '\u{10CC5}', '\u{10CC6}',
- '\u{10CC7}', '\u{10CC8}', '\u{10CC9}', '\u{10CCA}', '\u{10CCB}', '\u{10CCC}', '\u{10CCD}', '\u{10CCE}',
- '\u{10CCF}', '\u{10CD0}', '\u{10CD1}', '\u{10CD2}', '\u{10CD3}', '\u{10CD4}', '\u{10CD5}', '\u{10CD6}',
- '\u{10CD7}', '\u{10CD8}', '\u{10CD9}', '\u{10CDA}', '\u{10CDB}', '\u{10CDC}', '\u{10CDD}', '\u{10CDE}',
- '\u{10CDF}', '\u{10CE0}', '\u{10CE1}', '\u{10CE2}', '\u{10CE3}', '\u{10CE4}', '\u{10CE5}', '\u{10CE6}',
- '\u{10CE7}', '\u{10CE8}', '\u{10CE9}', '\u{10CEA}', '\u{10CEB}', '\u{10CEC}', '\u{10CED}', '\u{10CEE}',
- '\u{10CEF}', '\u{10CF0}', '\u{10CF1}', '\u{10CF2}', '\u{118C0}', '\u{118C1}', '\u{118C2}', '\u{118C3}',
- '\u{118C4}', '\u{118C5}', '\u{118C6}', '\u{118C7}', '\u{118C8}', '\u{118C9}', '\u{118CA}', '\u{118CB}',
- '\u{118CC}', '\u{118CD}', '\u{118CE}', '\u{118CF}', '\u{118D0}', '\u{118D1}', '\u{118D2}', '\u{118D3}',
- '\u{118D4}', '\u{118D5}', '\u{118D6}', '\u{118D7}', '\u{118D8}', '\u{118D9}', '\u{118DA}', '\u{118DB}',
- '\u{118DC}', '\u{118DD}', '\u{118DE}', '\u{118DF}', '\u{1D41A}', '\u{1D41B}', '\u{1D41C}', '\u{1D41D}',
- '\u{1D41E}', '\u{1D41F}', '\u{1D420}', '\u{1D421}', '\u{1D422}', '\u{1D423}', '\u{1D424}', '\u{1D425}',
- '\u{1D426}', '\u{1D427}', '\u{1D428}', '\u{1D429}', '\u{1D42A}', '\u{1D42B}', '\u{1D42C}', '\u{1D42D}',
- '\u{1D42E}', '\u{1D42F}', '\u{1D430}', '\u{1D431}', '\u{1D432}', '\u{1D433}', '\u{1D44E}', '\u{1D44F}',
- '\u{1D450}', '\u{1D451}', '\u{1D452}', '\u{1D453}', '\u{1D454}', '\u{1D456}', '\u{1D457}', '\u{1D458}',
- '\u{1D459}', '\u{1D45A}', '\u{1D45B}', '\u{1D45C}', '\u{1D45D}', '\u{1D45E}', '\u{1D45F}', '\u{1D460}',
- '\u{1D461}', '\u{1D462}', '\u{1D463}', '\u{1D464}', '\u{1D465}', '\u{1D466}', '\u{1D467}', '\u{1D482}',
- '\u{1D483}', '\u{1D484}', '\u{1D485}', '\u{1D486}', '\u{1D487}', '\u{1D488}', '\u{1D489}', '\u{1D48A}',
- '\u{1D48B}', '\u{1D48C}', '\u{1D48D}', '\u{1D48E}', '\u{1D48F}', '\u{1D490}', '\u{1D491}', '\u{1D492}',
- '\u{1D493}', '\u{1D494}', '\u{1D495}', '\u{1D496}', '\u{1D497}', '\u{1D498}', '\u{1D499}', '\u{1D49A}',
- '\u{1D49B}', '\u{1D4B6}', '\u{1D4B7}', '\u{1D4B8}', '\u{1D4B9}', '\u{1D4BB}', '\u{1D4BD}', '\u{1D4BE}',
- '\u{1D4BF}', '\u{1D4C0}', '\u{1D4C1}', '\u{1D4C2}', '\u{1D4C3}', '\u{1D4C5}', '\u{1D4C6}', '\u{1D4C7}',
- '\u{1D4C8}', '\u{1D4C9}', '\u{1D4CA}', '\u{1D4CB}', '\u{1D4CC}', '\u{1D4CD}', '\u{1D4CE}', '\u{1D4CF}',
- '\u{1D4EA}', '\u{1D4EB}', '\u{1D4EC}', '\u{1D4ED}', '\u{1D4EE}', '\u{1D4EF}', '\u{1D4F0}', '\u{1D4F1}',
- '\u{1D4F2}', '\u{1D4F3}', '\u{1D4F4}', '\u{1D4F5}', '\u{1D4F6}', '\u{1D4F7}', '\u{1D4F8}', '\u{1D4F9}',
- '\u{1D4FA}', '\u{1D4FB}', '\u{1D4FC}', '\u{1D4FD}', '\u{1D4FE}', '\u{1D4FF}', '\u{1D500}', '\u{1D501}',
- '\u{1D502}', '\u{1D503}', '\u{1D51E}', '\u{1D51F}', '\u{1D520}', '\u{1D521}', '\u{1D522}', '\u{1D523}',
- '\u{1D524}', '\u{1D525}', '\u{1D526}', '\u{1D527}', '\u{1D528}', '\u{1D529}', '\u{1D52A}', '\u{1D52B}',
- '\u{1D52C}', '\u{1D52D}', '\u{1D52E}', '\u{1D52F}', '\u{1D530}', '\u{1D531}', '\u{1D532}', '\u{1D533}',
- '\u{1D534}', '\u{1D535}', '\u{1D536}', '\u{1D537}', '\u{1D552}', '\u{1D553}', '\u{1D554}', '\u{1D555}',
- '\u{1D556}', '\u{1D557}', '\u{1D558}', '\u{1D559}', '\u{1D55A}', '\u{1D55B}', '\u{1D55C}', '\u{1D55D}',
- '\u{1D55E}', '\u{1D55F}', '\u{1D560}', '\u{1D561}', '\u{1D562}', '\u{1D563}', '\u{1D564}', '\u{1D565}',
- '\u{1D566}', '\u{1D567}', '\u{1D568}', '\u{1D569}', '\u{1D56A}', '\u{1D56B}', '\u{1D586}', '\u{1D587}',
- '\u{1D588}', '\u{1D589}', '\u{1D58A}', '\u{1D58B}', '\u{1D58C}', '\u{1D58D}', '\u{1D58E}', '\u{1D58F}',
- '\u{1D590}', '\u{1D591}', '\u{1D592}', '\u{1D593}', '\u{1D594}', '\u{1D595}', '\u{1D596}', '\u{1D597}',
- '\u{1D598}', '\u{1D599}', '\u{1D59A}', '\u{1D59B}', '\u{1D59C}', '\u{1D59D}', '\u{1D59E}', '\u{1D59F}',
- '\u{1D5BA}', '\u{1D5BB}', '\u{1D5BC}', '\u{1D5BD}', '\u{1D5BE}', '\u{1D5BF}', '\u{1D5C0}', '\u{1D5C1}',
- '\u{1D5C2}', '\u{1D5C3}', '\u{1D5C4}', '\u{1D5C5}', '\u{1D5C6}', '\u{1D5C7}', '\u{1D5C8}', '\u{1D5C9}',
- '\u{1D5CA}', '\u{1D5CB}', '\u{1D5CC}', '\u{1D5CD}', '\u{1D5CE}', '\u{1D5CF}', '\u{1D5D0}', '\u{1D5D1}',
- '\u{1D5D2}', '\u{1D5D3}', '\u{1D5EE}', '\u{1D5EF}', '\u{1D5F0}', '\u{1D5F1}', '\u{1D5F2}', '\u{1D5F3}',
- '\u{1D5F4}', '\u{1D5F5}', '\u{1D5F6}', '\u{1D5F7}', '\u{1D5F8}', '\u{1D5F9}', '\u{1D5FA}', '\u{1D5FB}',
- '\u{1D5FC}', '\u{1D5FD}', '\u{1D5FE}', '\u{1D5FF}', '\u{1D600}', '\u{1D601}', '\u{1D602}', '\u{1D603}',
- '\u{1D604}', '\u{1D605}', '\u{1D606}', '\u{1D607}', '\u{1D622}', '\u{1D623}', '\u{1D624}', '\u{1D625}',
- '\u{1D626}', '\u{1D627}', '\u{1D628}', '\u{1D629}', '\u{1D62A}', '\u{1D62B}', '\u{1D62C}', '\u{1D62D}',
- '\u{1D62E}', '\u{1D62F}', '\u{1D630}', '\u{1D631}', '\u{1D632}', '\u{1D633}', '\u{1D634}', '\u{1D635}',
- '\u{1D636}', '\u{1D637}', '\u{1D638}', '\u{1D639}', '\u{1D63A}', '\u{1D63B}', '\u{1D656}', '\u{1D657}',
- '\u{1D658}', '\u{1D659}', '\u{1D65A}', '\u{1D65B}', '\u{1D65C}', '\u{1D65D}', '\u{1D65E}', '\u{1D65F}',
- '\u{1D660}', '\u{1D661}', '\u{1D662}', '\u{1D663}', '\u{1D664}', '\u{1D665}', '\u{1D666}', '\u{1D667}',
- '\u{1D668}', '\u{1D669}', '\u{1D66A}', '\u{1D66B}', '\u{1D66C}', '\u{1D66D}', '\u{1D66E}', '\u{1D66F}',
- '\u{1D68A}', '\u{1D68B}', '\u{1D68C}', '\u{1D68D}', '\u{1D68E}', '\u{1D68F}', '\u{1D690}', '\u{1D691}',
- '\u{1D692}', '\u{1D693}', '\u{1D694}', '\u{1D695}', '\u{1D696}', '\u{1D697}', '\u{1D698}', '\u{1D699}',
- '\u{1D69A}', '\u{1D69B}', '\u{1D69C}', '\u{1D69D}', '\u{1D69E}', '\u{1D69F}', '\u{1D6A0}', '\u{1D6A1}',
- '\u{1D6A2}', '\u{1D6A3}', '\u{1D6A4}', '\u{1D6A5}', '\u{1D6C2}', '\u{1D6C3}', '\u{1D6C4}', '\u{1D6C5}',
- '\u{1D6C6}', '\u{1D6C7}', '\u{1D6C8}', '\u{1D6C9}', '\u{1D6CA}', '\u{1D6CB}', '\u{1D6CC}', '\u{1D6CD}',
- '\u{1D6CE}', '\u{1D6CF}', '\u{1D6D0}', '\u{1D6D1}', '\u{1D6D2}', '\u{1D6D3}', '\u{1D6D4}', '\u{1D6D5}',
- '\u{1D6D6}', '\u{1D6D7}', '\u{1D6D8}', '\u{1D6D9}', '\u{1D6DA}', '\u{1D6DC}', '\u{1D6DD}', '\u{1D6DE}',
- '\u{1D6DF}', '\u{1D6E0}', '\u{1D6E1}', '\u{1D6FC}', '\u{1D6FD}', '\u{1D6FE}', '\u{1D6FF}', '\u{1D700}',
- '\u{1D701}', '\u{1D702}', '\u{1D703}', '\u{1D704}', '\u{1D705}', '\u{1D706}', '\u{1D707}', '\u{1D708}',
- '\u{1D709}', '\u{1D70A}', '\u{1D70B}', '\u{1D70C}', '\u{1D70D}', '\u{1D70E}', '\u{1D70F}', '\u{1D710}',
- '\u{1D711}', '\u{1D712}', '\u{1D713}', '\u{1D714}', '\u{1D716}', '\u{1D717}', '\u{1D718}', '\u{1D719}',
- '\u{1D71A}', '\u{1D71B}', '\u{1D736}', '\u{1D737}', '\u{1D738}', '\u{1D739}', '\u{1D73A}', '\u{1D73B}',
- '\u{1D73C}', '\u{1D73D}', '\u{1D73E}', '\u{1D73F}', '\u{1D740}', '\u{1D741}', '\u{1D742}', '\u{1D743}',
- '\u{1D744}', '\u{1D745}', '\u{1D746}', '\u{1D747}', '\u{1D748}', '\u{1D749}', '\u{1D74A}', '\u{1D74B}',
- '\u{1D74C}', '\u{1D74D}', '\u{1D74E}', '\u{1D750}', '\u{1D751}', '\u{1D752}', '\u{1D753}', '\u{1D754}',
- '\u{1D755}', '\u{1D770}', '\u{1D771}', '\u{1D772}', '\u{1D773}', '\u{1D774}', '\u{1D775}', '\u{1D776}',
- '\u{1D777}', '\u{1D778}', '\u{1D779}', '\u{1D77A}', '\u{1D77B}', '\u{1D77C}', '\u{1D77D}', '\u{1D77E}',
- '\u{1D77F}', '\u{1D780}', '\u{1D781}', '\u{1D782}', '\u{1D783}', '\u{1D784}', '\u{1D785}', '\u{1D786}',
- '\u{1D787}', '\u{1D788}', '\u{1D78A}', '\u{1D78B}', '\u{1D78C}', '\u{1D78D}', '\u{1D78E}', '\u{1D78F}',
- '\u{1D7AA}', '\u{1D7AB}', '\u{1D7AC}', '\u{1D7AD}', '\u{1D7AE}', '\u{1D7AF}', '\u{1D7B0}', '\u{1D7B1}',
- '\u{1D7B2}', '\u{1D7B3}', '\u{1D7B4}', '\u{1D7B5}', '\u{1D7B6}', '\u{1D7B7}', '\u{1D7B8}', '\u{1D7B9}',
- '\u{1D7BA}', '\u{1D7BB}', '\u{1D7BC}', '\u{1D7BD}', '\u{1D7BE}', '\u{1D7BF}', '\u{1D7C0}', '\u{1D7C1}',
- '\u{1D7C2}', '\u{1D7C4}', '\u{1D7C5}', '\u{1D7C6}', '\u{1D7C7}', '\u{1D7C8}', '\u{1D7C9}', '\u{1D7CB}'];
-
-pub static LETTER_MODIFIER : &'static [char] = &[
- '\u{02B0}', '\u{02B1}', '\u{02B2}', '\u{02B3}', '\u{02B4}', '\u{02B5}', '\u{02B6}', '\u{02B7}',
- '\u{02B8}', '\u{02B9}', '\u{02BA}', '\u{02BB}', '\u{02BC}', '\u{02BD}', '\u{02BE}', '\u{02BF}',
- '\u{02C0}', '\u{02C1}', '\u{02C6}', '\u{02C7}', '\u{02C8}', '\u{02C9}', '\u{02CA}', '\u{02CB}',
- '\u{02CC}', '\u{02CD}', '\u{02CE}', '\u{02CF}', '\u{02D0}', '\u{02D1}', '\u{02E0}', '\u{02E1}',
- '\u{02E2}', '\u{02E3}', '\u{02E4}', '\u{02EC}', '\u{02EE}', '\u{0374}', '\u{037A}', '\u{0559}',
- '\u{0640}', '\u{06E5}', '\u{06E6}', '\u{07F4}', '\u{07F5}', '\u{07FA}', '\u{081A}', '\u{0824}',
- '\u{0828}', '\u{0971}', '\u{0E46}', '\u{0EC6}', '\u{10FC}', '\u{17D7}', '\u{1843}', '\u{1AA7}',
- '\u{1C78}', '\u{1C79}', '\u{1C7A}', '\u{1C7B}', '\u{1C7C}', '\u{1C7D}', '\u{1D2C}', '\u{1D2D}',
- '\u{1D2E}', '\u{1D2F}', '\u{1D30}', '\u{1D31}', '\u{1D32}', '\u{1D33}', '\u{1D34}', '\u{1D35}',
- '\u{1D36}', '\u{1D37}', '\u{1D38}', '\u{1D39}', '\u{1D3A}', '\u{1D3B}', '\u{1D3C}', '\u{1D3D}',
- '\u{1D3E}', '\u{1D3F}', '\u{1D40}', '\u{1D41}', '\u{1D42}', '\u{1D43}', '\u{1D44}', '\u{1D45}',
- '\u{1D46}', '\u{1D47}', '\u{1D48}', '\u{1D49}', '\u{1D4A}', '\u{1D4B}', '\u{1D4C}', '\u{1D4D}',
- '\u{1D4E}', '\u{1D4F}', '\u{1D50}', '\u{1D51}', '\u{1D52}', '\u{1D53}', '\u{1D54}', '\u{1D55}',
- '\u{1D56}', '\u{1D57}', '\u{1D58}', '\u{1D59}', '\u{1D5A}', '\u{1D5B}', '\u{1D5C}', '\u{1D5D}',
- '\u{1D5E}', '\u{1D5F}', '\u{1D60}', '\u{1D61}', '\u{1D62}', '\u{1D63}', '\u{1D64}', '\u{1D65}',
- '\u{1D66}', '\u{1D67}', '\u{1D68}', '\u{1D69}', '\u{1D6A}', '\u{1D78}', '\u{1D9B}', '\u{1D9C}',
- '\u{1D9D}', '\u{1D9E}', '\u{1D9F}', '\u{1DA0}', '\u{1DA1}', '\u{1DA2}', '\u{1DA3}', '\u{1DA4}',
- '\u{1DA5}', '\u{1DA6}', '\u{1DA7}', '\u{1DA8}', '\u{1DA9}', '\u{1DAA}', '\u{1DAB}', '\u{1DAC}',
- '\u{1DAD}', '\u{1DAE}', '\u{1DAF}', '\u{1DB0}', '\u{1DB1}', '\u{1DB2}', '\u{1DB3}', '\u{1DB4}',
- '\u{1DB5}', '\u{1DB6}', '\u{1DB7}', '\u{1DB8}', '\u{1DB9}', '\u{1DBA}', '\u{1DBB}', '\u{1DBC}',
- '\u{1DBD}', '\u{1DBE}', '\u{1DBF}', '\u{2071}', '\u{207F}', '\u{2090}', '\u{2091}', '\u{2092}',
- '\u{2093}', '\u{2094}', '\u{2095}', '\u{2096}', '\u{2097}', '\u{2098}', '\u{2099}', '\u{209A}',
- '\u{209B}', '\u{209C}', '\u{2C7C}', '\u{2C7D}', '\u{2D6F}', '\u{2E2F}', '\u{3005}', '\u{3031}',
- '\u{3032}', '\u{3033}', '\u{3034}', '\u{3035}', '\u{303B}', '\u{309D}', '\u{309E}', '\u{30FC}',
- '\u{30FD}', '\u{30FE}', '\u{A015}', '\u{A4F8}', '\u{A4F9}', '\u{A4FA}', '\u{A4FB}', '\u{A4FC}',
- '\u{A4FD}', '\u{A60C}', '\u{A67F}', '\u{A69C}', '\u{A69D}', '\u{A717}', '\u{A718}', '\u{A719}',
- '\u{A71A}', '\u{A71B}', '\u{A71C}', '\u{A71D}', '\u{A71E}', '\u{A71F}', '\u{A770}', '\u{A788}',
- '\u{A7F8}', '\u{A7F9}', '\u{A9CF}', '\u{A9E6}', '\u{AA70}', '\u{AADD}', '\u{AAF3}', '\u{AAF4}',
- '\u{AB5C}', '\u{AB5D}', '\u{AB5E}', '\u{AB5F}', '\u{FF70}', '\u{FF9E}', '\u{FF9F}', '\u{16B40}',
- '\u{16B41}', '\u{16B42}', '\u{16B43}', '\u{16F93}', '\u{16F94}', '\u{16F95}', '\u{16F96}', '\u{16F97}',
- '\u{16F98}', '\u{16F99}', '\u{16F9A}', '\u{16F9B}', '\u{16F9C}', '\u{16F9D}', '\u{16F9E}', '\u{16F9F}'];
-
-pub static LETTER_OTHER : &'static [char] = &[
- '\u{00AA}', '\u{00BA}', '\u{01BB}', '\u{01C0}', '\u{01C1}', '\u{01C2}', '\u{01C3}', '\u{0294}',
- '\u{05D0}', '\u{05D1}', '\u{05D2}', '\u{05D3}', '\u{05D4}', '\u{05D5}', '\u{05D6}', '\u{05D7}',
- '\u{05D8}', '\u{05D9}', '\u{05DA}', '\u{05DB}', '\u{05DC}', '\u{05DD}', '\u{05DE}', '\u{05DF}',
- '\u{05E0}', '\u{05E1}', '\u{05E2}', '\u{05E3}', '\u{05E4}', '\u{05E5}', '\u{05E6}', '\u{05E7}',
- '\u{05E8}', '\u{05E9}', '\u{05EA}', '\u{05F0}', '\u{05F1}', '\u{05F2}', '\u{0620}', '\u{0621}',
- '\u{0622}', '\u{0623}', '\u{0624}', '\u{0625}', '\u{0626}', '\u{0627}', '\u{0628}', '\u{0629}',
- '\u{062A}', '\u{062B}', '\u{062C}', '\u{062D}', '\u{062E}', '\u{062F}', '\u{0630}', '\u{0631}',
- '\u{0632}', '\u{0633}', '\u{0634}', '\u{0635}', '\u{0636}', '\u{0637}', '\u{0638}', '\u{0639}',
- '\u{063A}', '\u{063B}', '\u{063C}', '\u{063D}', '\u{063E}', '\u{063F}', '\u{0641}', '\u{0642}',
- '\u{0643}', '\u{0644}', '\u{0645}', '\u{0646}', '\u{0647}', '\u{0648}', '\u{0649}', '\u{064A}',
- '\u{066E}', '\u{066F}', '\u{0671}', '\u{0672}', '\u{0673}', '\u{0674}', '\u{0675}', '\u{0676}',
- '\u{0677}', '\u{0678}', '\u{0679}', '\u{067A}', '\u{067B}', '\u{067C}', '\u{067D}', '\u{067E}',
- '\u{067F}', '\u{0680}', '\u{0681}', '\u{0682}', '\u{0683}', '\u{0684}', '\u{0685}', '\u{0686}',
- '\u{0687}', '\u{0688}', '\u{0689}', '\u{068A}', '\u{068B}', '\u{068C}', '\u{068D}', '\u{068E}',
- '\u{068F}', '\u{0690}', '\u{0691}', '\u{0692}', '\u{0693}', '\u{0694}', '\u{0695}', '\u{0696}',
- '\u{0697}', '\u{0698}', '\u{0699}', '\u{069A}', '\u{069B}', '\u{069C}', '\u{069D}', '\u{069E}',
- '\u{069F}', '\u{06A0}', '\u{06A1}', '\u{06A2}', '\u{06A3}', '\u{06A4}', '\u{06A5}', '\u{06A6}',
- '\u{06A7}', '\u{06A8}', '\u{06A9}', '\u{06AA}', '\u{06AB}', '\u{06AC}', '\u{06AD}', '\u{06AE}',
- '\u{06AF}', '\u{06B0}', '\u{06B1}', '\u{06B2}', '\u{06B3}', '\u{06B4}', '\u{06B5}', '\u{06B6}',
- '\u{06B7}', '\u{06B8}', '\u{06B9}', '\u{06BA}', '\u{06BB}', '\u{06BC}', '\u{06BD}', '\u{06BE}',
- '\u{06BF}', '\u{06C0}', '\u{06C1}', '\u{06C2}', '\u{06C3}', '\u{06C4}', '\u{06C5}', '\u{06C6}',
- '\u{06C7}', '\u{06C8}', '\u{06C9}', '\u{06CA}', '\u{06CB}', '\u{06CC}', '\u{06CD}', '\u{06CE}',
- '\u{06CF}', '\u{06D0}', '\u{06D1}', '\u{06D2}', '\u{06D3}', '\u{06D5}', '\u{06EE}', '\u{06EF}',
- '\u{06FA}', '\u{06FB}', '\u{06FC}', '\u{06FF}', '\u{0710}', '\u{0712}', '\u{0713}', '\u{0714}',
- '\u{0715}', '\u{0716}', '\u{0717}', '\u{0718}', '\u{0719}', '\u{071A}', '\u{071B}', '\u{071C}',
- '\u{071D}', '\u{071E}', '\u{071F}', '\u{0720}', '\u{0721}', '\u{0722}', '\u{0723}', '\u{0724}',
- '\u{0725}', '\u{0726}', '\u{0727}', '\u{0728}', '\u{0729}', '\u{072A}', '\u{072B}', '\u{072C}',
- '\u{072D}', '\u{072E}', '\u{072F}', '\u{074D}', '\u{074E}', '\u{074F}', '\u{0750}', '\u{0751}',
- '\u{0752}', '\u{0753}', '\u{0754}', '\u{0755}', '\u{0756}', '\u{0757}', '\u{0758}', '\u{0759}',
- '\u{075A}', '\u{075B}', '\u{075C}', '\u{075D}', '\u{075E}', '\u{075F}', '\u{0760}', '\u{0761}',
- '\u{0762}', '\u{0763}', '\u{0764}', '\u{0765}', '\u{0766}', '\u{0767}', '\u{0768}', '\u{0769}',
- '\u{076A}', '\u{076B}', '\u{076C}', '\u{076D}', '\u{076E}', '\u{076F}', '\u{0770}', '\u{0771}',
- '\u{0772}', '\u{0773}', '\u{0774}', '\u{0775}', '\u{0776}', '\u{0777}', '\u{0778}', '\u{0779}',
- '\u{077A}', '\u{077B}', '\u{077C}', '\u{077D}', '\u{077E}', '\u{077F}', '\u{0780}', '\u{0781}',
- '\u{0782}', '\u{0783}', '\u{0784}', '\u{0785}', '\u{0786}', '\u{0787}', '\u{0788}', '\u{0789}',
- '\u{078A}', '\u{078B}', '\u{078C}', '\u{078D}', '\u{078E}', '\u{078F}', '\u{0790}', '\u{0791}',
- '\u{0792}', '\u{0793}', '\u{0794}', '\u{0795}', '\u{0796}', '\u{0797}', '\u{0798}', '\u{0799}',
- '\u{079A}', '\u{079B}', '\u{079C}', '\u{079D}', '\u{079E}', '\u{079F}', '\u{07A0}', '\u{07A1}',
- '\u{07A2}', '\u{07A3}', '\u{07A4}', '\u{07A5}', '\u{07B1}', '\u{07CA}', '\u{07CB}', '\u{07CC}',
- '\u{07CD}', '\u{07CE}', '\u{07CF}', '\u{07D0}', '\u{07D1}', '\u{07D2}', '\u{07D3}', '\u{07D4}',
- '\u{07D5}', '\u{07D6}', '\u{07D7}', '\u{07D8}', '\u{07D9}', '\u{07DA}', '\u{07DB}', '\u{07DC}',
- '\u{07DD}', '\u{07DE}', '\u{07DF}', '\u{07E0}', '\u{07E1}', '\u{07E2}', '\u{07E3}', '\u{07E4}',
- '\u{07E5}', '\u{07E6}', '\u{07E7}', '\u{07E8}', '\u{07E9}', '\u{07EA}', '\u{0800}', '\u{0801}',
- '\u{0802}', '\u{0803}', '\u{0804}', '\u{0805}', '\u{0806}', '\u{0807}', '\u{0808}', '\u{0809}',
- '\u{080A}', '\u{080B}', '\u{080C}', '\u{080D}', '\u{080E}', '\u{080F}', '\u{0810}', '\u{0811}',
- '\u{0812}', '\u{0813}', '\u{0814}', '\u{0815}', '\u{0840}', '\u{0841}', '\u{0842}', '\u{0843}',
- '\u{0844}', '\u{0845}', '\u{0846}', '\u{0847}', '\u{0848}', '\u{0849}', '\u{084A}', '\u{084B}',
- '\u{084C}', '\u{084D}', '\u{084E}', '\u{084F}', '\u{0850}', '\u{0851}', '\u{0852}', '\u{0853}',
- '\u{0854}', '\u{0855}', '\u{0856}', '\u{0857}', '\u{0858}', '\u{08A0}', '\u{08A1}', '\u{08A2}',
- '\u{08A3}', '\u{08A4}', '\u{08A5}', '\u{08A6}', '\u{08A7}', '\u{08A8}', '\u{08A9}', '\u{08AA}',
- '\u{08AB}', '\u{08AC}', '\u{08AD}', '\u{08AE}', '\u{08AF}', '\u{08B0}', '\u{08B1}', '\u{08B2}',
- '\u{08B3}', '\u{08B4}', '\u{0904}', '\u{0905}', '\u{0906}', '\u{0907}', '\u{0908}', '\u{0909}',
- '\u{090A}', '\u{090B}', '\u{090C}', '\u{090D}', '\u{090E}', '\u{090F}', '\u{0910}', '\u{0911}',
- '\u{0912}', '\u{0913}', '\u{0914}', '\u{0915}', '\u{0916}', '\u{0917}', '\u{0918}', '\u{0919}',
- '\u{091A}', '\u{091B}', '\u{091C}', '\u{091D}', '\u{091E}', '\u{091F}', '\u{0920}', '\u{0921}',
- '\u{0922}', '\u{0923}', '\u{0924}', '\u{0925}', '\u{0926}', '\u{0927}', '\u{0928}', '\u{0929}',
- '\u{092A}', '\u{092B}', '\u{092C}', '\u{092D}', '\u{092E}', '\u{092F}', '\u{0930}', '\u{0931}',
- '\u{0932}', '\u{0933}', '\u{0934}', '\u{0935}', '\u{0936}', '\u{0937}', '\u{0938}', '\u{0939}',
- '\u{093D}', '\u{0950}', '\u{0958}', '\u{0959}', '\u{095A}', '\u{095B}', '\u{095C}', '\u{095D}',
- '\u{095E}', '\u{095F}', '\u{0960}', '\u{0961}', '\u{0972}', '\u{0973}', '\u{0974}', '\u{0975}',
- '\u{0976}', '\u{0977}', '\u{0978}', '\u{0979}', '\u{097A}', '\u{097B}', '\u{097C}', '\u{097D}',
- '\u{097E}', '\u{097F}', '\u{0980}', '\u{0985}', '\u{0986}', '\u{0987}', '\u{0988}', '\u{0989}',
- '\u{098A}', '\u{098B}', '\u{098C}', '\u{098F}', '\u{0990}', '\u{0993}', '\u{0994}', '\u{0995}',
- '\u{0996}', '\u{0997}', '\u{0998}', '\u{0999}', '\u{099A}', '\u{099B}', '\u{099C}', '\u{099D}',
- '\u{099E}', '\u{099F}', '\u{09A0}', '\u{09A1}', '\u{09A2}', '\u{09A3}', '\u{09A4}', '\u{09A5}',
- '\u{09A6}', '\u{09A7}', '\u{09A8}', '\u{09AA}', '\u{09AB}', '\u{09AC}', '\u{09AD}', '\u{09AE}',
- '\u{09AF}', '\u{09B0}', '\u{09B2}', '\u{09B6}', '\u{09B7}', '\u{09B8}', '\u{09B9}', '\u{09BD}',
- '\u{09CE}', '\u{09DC}', '\u{09DD}', '\u{09DF}', '\u{09E0}', '\u{09E1}', '\u{09F0}', '\u{09F1}',
- '\u{0A05}', '\u{0A06}', '\u{0A07}', '\u{0A08}', '\u{0A09}', '\u{0A0A}', '\u{0A0F}', '\u{0A10}',
- '\u{0A13}', '\u{0A14}', '\u{0A15}', '\u{0A16}', '\u{0A17}', '\u{0A18}', '\u{0A19}', '\u{0A1A}',
- '\u{0A1B}', '\u{0A1C}', '\u{0A1D}', '\u{0A1E}', '\u{0A1F}', '\u{0A20}', '\u{0A21}', '\u{0A22}',
- '\u{0A23}', '\u{0A24}', '\u{0A25}', '\u{0A26}', '\u{0A27}', '\u{0A28}', '\u{0A2A}', '\u{0A2B}',
- '\u{0A2C}', '\u{0A2D}', '\u{0A2E}', '\u{0A2F}', '\u{0A30}', '\u{0A32}', '\u{0A33}', '\u{0A35}',
- '\u{0A36}', '\u{0A38}', '\u{0A39}', '\u{0A59}', '\u{0A5A}', '\u{0A5B}', '\u{0A5C}', '\u{0A5E}',
- '\u{0A72}', '\u{0A73}', '\u{0A74}', '\u{0A85}', '\u{0A86}', '\u{0A87}', '\u{0A88}', '\u{0A89}',
- '\u{0A8A}', '\u{0A8B}', '\u{0A8C}', '\u{0A8D}', '\u{0A8F}', '\u{0A90}', '\u{0A91}', '\u{0A93}',
- '\u{0A94}', '\u{0A95}', '\u{0A96}', '\u{0A97}', '\u{0A98}', '\u{0A99}', '\u{0A9A}', '\u{0A9B}',
- '\u{0A9C}', '\u{0A9D}', '\u{0A9E}', '\u{0A9F}', '\u{0AA0}', '\u{0AA1}', '\u{0AA2}', '\u{0AA3}',
- '\u{0AA4}', '\u{0AA5}', '\u{0AA6}', '\u{0AA7}', '\u{0AA8}', '\u{0AAA}', '\u{0AAB}', '\u{0AAC}',
- '\u{0AAD}', '\u{0AAE}', '\u{0AAF}', '\u{0AB0}', '\u{0AB2}', '\u{0AB3}', '\u{0AB5}', '\u{0AB6}',
- '\u{0AB7}', '\u{0AB8}', '\u{0AB9}', '\u{0ABD}', '\u{0AD0}', '\u{0AE0}', '\u{0AE1}', '\u{0AF9}',
- '\u{0B05}', '\u{0B06}', '\u{0B07}', '\u{0B08}', '\u{0B09}', '\u{0B0A}', '\u{0B0B}', '\u{0B0C}',
- '\u{0B0F}', '\u{0B10}', '\u{0B13}', '\u{0B14}', '\u{0B15}', '\u{0B16}', '\u{0B17}', '\u{0B18}',
- '\u{0B19}', '\u{0B1A}', '\u{0B1B}', '\u{0B1C}', '\u{0B1D}', '\u{0B1E}', '\u{0B1F}', '\u{0B20}',
- '\u{0B21}', '\u{0B22}', '\u{0B23}', '\u{0B24}', '\u{0B25}', '\u{0B26}', '\u{0B27}', '\u{0B28}',
- '\u{0B2A}', '\u{0B2B}', '\u{0B2C}', '\u{0B2D}', '\u{0B2E}', '\u{0B2F}', '\u{0B30}', '\u{0B32}',
- '\u{0B33}', '\u{0B35}', '\u{0B36}', '\u{0B37}', '\u{0B38}', '\u{0B39}', '\u{0B3D}', '\u{0B5C}',
- '\u{0B5D}', '\u{0B5F}', '\u{0B60}', '\u{0B61}', '\u{0B71}', '\u{0B83}', '\u{0B85}', '\u{0B86}',
- '\u{0B87}', '\u{0B88}', '\u{0B89}', '\u{0B8A}', '\u{0B8E}', '\u{0B8F}', '\u{0B90}', '\u{0B92}',
- '\u{0B93}', '\u{0B94}', '\u{0B95}', '\u{0B99}', '\u{0B9A}', '\u{0B9C}', '\u{0B9E}', '\u{0B9F}',
- '\u{0BA3}', '\u{0BA4}', '\u{0BA8}', '\u{0BA9}', '\u{0BAA}', '\u{0BAE}', '\u{0BAF}', '\u{0BB0}',
- '\u{0BB1}', '\u{0BB2}', '\u{0BB3}', '\u{0BB4}', '\u{0BB5}', '\u{0BB6}', '\u{0BB7}', '\u{0BB8}',
- '\u{0BB9}', '\u{0BD0}', '\u{0C05}', '\u{0C06}', '\u{0C07}', '\u{0C08}', '\u{0C09}', '\u{0C0A}',
- '\u{0C0B}', '\u{0C0C}', '\u{0C0E}', '\u{0C0F}', '\u{0C10}', '\u{0C12}', '\u{0C13}', '\u{0C14}',
- '\u{0C15}', '\u{0C16}', '\u{0C17}', '\u{0C18}', '\u{0C19}', '\u{0C1A}', '\u{0C1B}', '\u{0C1C}',
- '\u{0C1D}', '\u{0C1E}', '\u{0C1F}', '\u{0C20}', '\u{0C21}', '\u{0C22}', '\u{0C23}', '\u{0C24}',
- '\u{0C25}', '\u{0C26}', '\u{0C27}', '\u{0C28}', '\u{0C2A}', '\u{0C2B}', '\u{0C2C}', '\u{0C2D}',
- '\u{0C2E}', '\u{0C2F}', '\u{0C30}', '\u{0C31}', '\u{0C32}', '\u{0C33}', '\u{0C34}', '\u{0C35}',
- '\u{0C36}', '\u{0C37}', '\u{0C38}', '\u{0C39}', '\u{0C3D}', '\u{0C58}', '\u{0C59}', '\u{0C5A}',
- '\u{0C60}', '\u{0C61}', '\u{0C85}', '\u{0C86}', '\u{0C87}', '\u{0C88}', '\u{0C89}', '\u{0C8A}',
- '\u{0C8B}', '\u{0C8C}', '\u{0C8E}', '\u{0C8F}', '\u{0C90}', '\u{0C92}', '\u{0C93}', '\u{0C94}',
- '\u{0C95}', '\u{0C96}', '\u{0C97}', '\u{0C98}', '\u{0C99}', '\u{0C9A}', '\u{0C9B}', '\u{0C9C}',
- '\u{0C9D}', '\u{0C9E}', '\u{0C9F}', '\u{0CA0}', '\u{0CA1}', '\u{0CA2}', '\u{0CA3}', '\u{0CA4}',
- '\u{0CA5}', '\u{0CA6}', '\u{0CA7}', '\u{0CA8}', '\u{0CAA}', '\u{0CAB}', '\u{0CAC}', '\u{0CAD}',
- '\u{0CAE}', '\u{0CAF}', '\u{0CB0}', '\u{0CB1}', '\u{0CB2}', '\u{0CB3}', '\u{0CB5}', '\u{0CB6}',
- '\u{0CB7}', '\u{0CB8}', '\u{0CB9}', '\u{0CBD}', '\u{0CDE}', '\u{0CE0}', '\u{0CE1}', '\u{0CF1}',
- '\u{0CF2}', '\u{0D05}', '\u{0D06}', '\u{0D07}', '\u{0D08}', '\u{0D09}', '\u{0D0A}', '\u{0D0B}',
- '\u{0D0C}', '\u{0D0E}', '\u{0D0F}', '\u{0D10}', '\u{0D12}', '\u{0D13}', '\u{0D14}', '\u{0D15}',
- '\u{0D16}', '\u{0D17}', '\u{0D18}', '\u{0D19}', '\u{0D1A}', '\u{0D1B}', '\u{0D1C}', '\u{0D1D}',
- '\u{0D1E}', '\u{0D1F}', '\u{0D20}', '\u{0D21}', '\u{0D22}', '\u{0D23}', '\u{0D24}', '\u{0D25}',
- '\u{0D26}', '\u{0D27}', '\u{0D28}', '\u{0D29}', '\u{0D2A}', '\u{0D2B}', '\u{0D2C}', '\u{0D2D}',
- '\u{0D2E}', '\u{0D2F}', '\u{0D30}', '\u{0D31}', '\u{0D32}', '\u{0D33}', '\u{0D34}', '\u{0D35}',
- '\u{0D36}', '\u{0D37}', '\u{0D38}', '\u{0D39}', '\u{0D3A}', '\u{0D3D}', '\u{0D4E}', '\u{0D5F}',
- '\u{0D60}', '\u{0D61}', '\u{0D7A}', '\u{0D7B}', '\u{0D7C}', '\u{0D7D}', '\u{0D7E}', '\u{0D7F}',
- '\u{0D85}', '\u{0D86}', '\u{0D87}', '\u{0D88}', '\u{0D89}', '\u{0D8A}', '\u{0D8B}', '\u{0D8C}',
- '\u{0D8D}', '\u{0D8E}', '\u{0D8F}', '\u{0D90}', '\u{0D91}', '\u{0D92}', '\u{0D93}', '\u{0D94}',
- '\u{0D95}', '\u{0D96}', '\u{0D9A}', '\u{0D9B}', '\u{0D9C}', '\u{0D9D}', '\u{0D9E}', '\u{0D9F}',
- '\u{0DA0}', '\u{0DA1}', '\u{0DA2}', '\u{0DA3}', '\u{0DA4}', '\u{0DA5}', '\u{0DA6}', '\u{0DA7}',
- '\u{0DA8}', '\u{0DA9}', '\u{0DAA}', '\u{0DAB}', '\u{0DAC}', '\u{0DAD}', '\u{0DAE}', '\u{0DAF}',
- '\u{0DB0}', '\u{0DB1}', '\u{0DB3}', '\u{0DB4}', '\u{0DB5}', '\u{0DB6}', '\u{0DB7}', '\u{0DB8}',
- '\u{0DB9}', '\u{0DBA}', '\u{0DBB}', '\u{0DBD}', '\u{0DC0}', '\u{0DC1}', '\u{0DC2}', '\u{0DC3}',
- '\u{0DC4}', '\u{0DC5}', '\u{0DC6}', '\u{0E01}', '\u{0E02}', '\u{0E03}', '\u{0E04}', '\u{0E05}',
- '\u{0E06}', '\u{0E07}', '\u{0E08}', '\u{0E09}', '\u{0E0A}', '\u{0E0B}', '\u{0E0C}', '\u{0E0D}',
- '\u{0E0E}', '\u{0E0F}', '\u{0E10}', '\u{0E11}', '\u{0E12}', '\u{0E13}', '\u{0E14}', '\u{0E15}',
- '\u{0E16}', '\u{0E17}', '\u{0E18}', '\u{0E19}', '\u{0E1A}', '\u{0E1B}', '\u{0E1C}', '\u{0E1D}',
- '\u{0E1E}', '\u{0E1F}', '\u{0E20}', '\u{0E21}', '\u{0E22}', '\u{0E23}', '\u{0E24}', '\u{0E25}',
- '\u{0E26}', '\u{0E27}', '\u{0E28}', '\u{0E29}', '\u{0E2A}', '\u{0E2B}', '\u{0E2C}', '\u{0E2D}',
- '\u{0E2E}', '\u{0E2F}', '\u{0E30}', '\u{0E32}', '\u{0E33}', '\u{0E40}', '\u{0E41}', '\u{0E42}',
- '\u{0E43}', '\u{0E44}', '\u{0E45}', '\u{0E81}', '\u{0E82}', '\u{0E84}', '\u{0E87}', '\u{0E88}',
- '\u{0E8A}', '\u{0E8D}', '\u{0E94}', '\u{0E95}', '\u{0E96}', '\u{0E97}', '\u{0E99}', '\u{0E9A}',
- '\u{0E9B}', '\u{0E9C}', '\u{0E9D}', '\u{0E9E}', '\u{0E9F}', '\u{0EA1}', '\u{0EA2}', '\u{0EA3}',
- '\u{0EA5}', '\u{0EA7}', '\u{0EAA}', '\u{0EAB}', '\u{0EAD}', '\u{0EAE}', '\u{0EAF}', '\u{0EB0}',
- '\u{0EB2}', '\u{0EB3}', '\u{0EBD}', '\u{0EC0}', '\u{0EC1}', '\u{0EC2}', '\u{0EC3}', '\u{0EC4}',
- '\u{0EDC}', '\u{0EDD}', '\u{0EDE}', '\u{0EDF}', '\u{0F00}', '\u{0F40}', '\u{0F41}', '\u{0F42}',
- '\u{0F43}', '\u{0F44}', '\u{0F45}', '\u{0F46}', '\u{0F47}', '\u{0F49}', '\u{0F4A}', '\u{0F4B}',
- '\u{0F4C}', '\u{0F4D}', '\u{0F4E}', '\u{0F4F}', '\u{0F50}', '\u{0F51}', '\u{0F52}', '\u{0F53}',
- '\u{0F54}', '\u{0F55}', '\u{0F56}', '\u{0F57}', '\u{0F58}', '\u{0F59}', '\u{0F5A}', '\u{0F5B}',
- '\u{0F5C}', '\u{0F5D}', '\u{0F5E}', '\u{0F5F}', '\u{0F60}', '\u{0F61}', '\u{0F62}', '\u{0F63}',
- '\u{0F64}', '\u{0F65}', '\u{0F66}', '\u{0F67}', '\u{0F68}', '\u{0F69}', '\u{0F6A}', '\u{0F6B}',
- '\u{0F6C}', '\u{0F88}', '\u{0F89}', '\u{0F8A}', '\u{0F8B}', '\u{0F8C}', '\u{1000}', '\u{1001}',
- '\u{1002}', '\u{1003}', '\u{1004}', '\u{1005}', '\u{1006}', '\u{1007}', '\u{1008}', '\u{1009}',
- '\u{100A}', '\u{100B}', '\u{100C}', '\u{100D}', '\u{100E}', '\u{100F}', '\u{1010}', '\u{1011}',
- '\u{1012}', '\u{1013}', '\u{1014}', '\u{1015}', '\u{1016}', '\u{1017}', '\u{1018}', '\u{1019}',
- '\u{101A}', '\u{101B}', '\u{101C}', '\u{101D}', '\u{101E}', '\u{101F}', '\u{1020}', '\u{1021}',
- '\u{1022}', '\u{1023}', '\u{1024}', '\u{1025}', '\u{1026}', '\u{1027}', '\u{1028}', '\u{1029}',
- '\u{102A}', '\u{103F}', '\u{1050}', '\u{1051}', '\u{1052}', '\u{1053}', '\u{1054}', '\u{1055}',
- '\u{105A}', '\u{105B}', '\u{105C}', '\u{105D}', '\u{1061}', '\u{1065}', '\u{1066}', '\u{106E}',
- '\u{106F}', '\u{1070}', '\u{1075}', '\u{1076}', '\u{1077}', '\u{1078}', '\u{1079}', '\u{107A}',
- '\u{107B}', '\u{107C}', '\u{107D}', '\u{107E}', '\u{107F}', '\u{1080}', '\u{1081}', '\u{108E}',
- '\u{10D0}', '\u{10D1}', '\u{10D2}', '\u{10D3}', '\u{10D4}', '\u{10D5}', '\u{10D6}', '\u{10D7}',
- '\u{10D8}', '\u{10D9}', '\u{10DA}', '\u{10DB}', '\u{10DC}', '\u{10DD}', '\u{10DE}', '\u{10DF}',
- '\u{10E0}', '\u{10E1}', '\u{10E2}', '\u{10E3}', '\u{10E4}', '\u{10E5}', '\u{10E6}', '\u{10E7}',
- '\u{10E8}', '\u{10E9}', '\u{10EA}', '\u{10EB}', '\u{10EC}', '\u{10ED}', '\u{10EE}', '\u{10EF}',
- '\u{10F0}', '\u{10F1}', '\u{10F2}', '\u{10F3}', '\u{10F4}', '\u{10F5}', '\u{10F6}', '\u{10F7}',
- '\u{10F8}', '\u{10F9}', '\u{10FA}', '\u{10FD}', '\u{10FE}', '\u{10FF}', '\u{1100}', '\u{1101}',
- '\u{1102}', '\u{1103}', '\u{1104}', '\u{1105}', '\u{1106}', '\u{1107}', '\u{1108}', '\u{1109}',
- '\u{110A}', '\u{110B}', '\u{110C}', '\u{110D}', '\u{110E}', '\u{110F}', '\u{1110}', '\u{1111}',
- '\u{1112}', '\u{1113}', '\u{1114}', '\u{1115}', '\u{1116}', '\u{1117}', '\u{1118}', '\u{1119}',
- '\u{111A}', '\u{111B}', '\u{111C}', '\u{111D}', '\u{111E}', '\u{111F}', '\u{1120}', '\u{1121}',
- '\u{1122}', '\u{1123}', '\u{1124}', '\u{1125}', '\u{1126}', '\u{1127}', '\u{1128}', '\u{1129}',
- '\u{112A}', '\u{112B}', '\u{112C}', '\u{112D}', '\u{112E}', '\u{112F}', '\u{1130}', '\u{1131}',
- '\u{1132}', '\u{1133}', '\u{1134}', '\u{1135}', '\u{1136}', '\u{1137}', '\u{1138}', '\u{1139}',
- '\u{113A}', '\u{113B}', '\u{113C}', '\u{113D}', '\u{113E}', '\u{113F}', '\u{1140}', '\u{1141}',
- '\u{1142}', '\u{1143}', '\u{1144}', '\u{1145}', '\u{1146}', '\u{1147}', '\u{1148}', '\u{1149}',
- '\u{114A}', '\u{114B}', '\u{114C}', '\u{114D}', '\u{114E}', '\u{114F}', '\u{1150}', '\u{1151}',
- '\u{1152}', '\u{1153}', '\u{1154}', '\u{1155}', '\u{1156}', '\u{1157}', '\u{1158}', '\u{1159}',
- '\u{115A}', '\u{115B}', '\u{115C}', '\u{115D}', '\u{115E}', '\u{115F}', '\u{1160}', '\u{1161}',
- '\u{1162}', '\u{1163}', '\u{1164}', '\u{1165}', '\u{1166}', '\u{1167}', '\u{1168}', '\u{1169}',
- '\u{116A}', '\u{116B}', '\u{116C}', '\u{116D}', '\u{116E}', '\u{116F}', '\u{1170}', '\u{1171}',
- '\u{1172}', '\u{1173}', '\u{1174}', '\u{1175}', '\u{1176}', '\u{1177}', '\u{1178}', '\u{1179}',
- '\u{117A}', '\u{117B}', '\u{117C}', '\u{117D}', '\u{117E}', '\u{117F}', '\u{1180}', '\u{1181}',
- '\u{1182}', '\u{1183}', '\u{1184}', '\u{1185}', '\u{1186}', '\u{1187}', '\u{1188}', '\u{1189}',
- '\u{118A}', '\u{118B}', '\u{118C}', '\u{118D}', '\u{118E}', '\u{118F}', '\u{1190}', '\u{1191}',
- '\u{1192}', '\u{1193}', '\u{1194}', '\u{1195}', '\u{1196}', '\u{1197}', '\u{1198}', '\u{1199}',
- '\u{119A}', '\u{119B}', '\u{119C}', '\u{119D}', '\u{119E}', '\u{119F}', '\u{11A0}', '\u{11A1}',
- '\u{11A2}', '\u{11A3}', '\u{11A4}', '\u{11A5}', '\u{11A6}', '\u{11A7}', '\u{11A8}', '\u{11A9}',
- '\u{11AA}', '\u{11AB}', '\u{11AC}', '\u{11AD}', '\u{11AE}', '\u{11AF}', '\u{11B0}', '\u{11B1}',
- '\u{11B2}', '\u{11B3}', '\u{11B4}', '\u{11B5}', '\u{11B6}', '\u{11B7}', '\u{11B8}', '\u{11B9}',
- '\u{11BA}', '\u{11BB}', '\u{11BC}', '\u{11BD}', '\u{11BE}', '\u{11BF}', '\u{11C0}', '\u{11C1}',
- '\u{11C2}', '\u{11C3}', '\u{11C4}', '\u{11C5}', '\u{11C6}', '\u{11C7}', '\u{11C8}', '\u{11C9}',
- '\u{11CA}', '\u{11CB}', '\u{11CC}', '\u{11CD}', '\u{11CE}', '\u{11CF}', '\u{11D0}', '\u{11D1}',
- '\u{11D2}', '\u{11D3}', '\u{11D4}', '\u{11D5}', '\u{11D6}', '\u{11D7}', '\u{11D8}', '\u{11D9}',
- '\u{11DA}', '\u{11DB}', '\u{11DC}', '\u{11DD}', '\u{11DE}', '\u{11DF}', '\u{11E0}', '\u{11E1}',
- '\u{11E2}', '\u{11E3}', '\u{11E4}', '\u{11E5}', '\u{11E6}', '\u{11E7}', '\u{11E8}', '\u{11E9}',
- '\u{11EA}', '\u{11EB}', '\u{11EC}', '\u{11ED}', '\u{11EE}', '\u{11EF}', '\u{11F0}', '\u{11F1}',
- '\u{11F2}', '\u{11F3}', '\u{11F4}', '\u{11F5}', '\u{11F6}', '\u{11F7}', '\u{11F8}', '\u{11F9}',
- '\u{11FA}', '\u{11FB}', '\u{11FC}', '\u{11FD}', '\u{11FE}', '\u{11FF}', '\u{1200}', '\u{1201}',
- '\u{1202}', '\u{1203}', '\u{1204}', '\u{1205}', '\u{1206}', '\u{1207}', '\u{1208}', '\u{1209}',
- '\u{120A}', '\u{120B}', '\u{120C}', '\u{120D}', '\u{120E}', '\u{120F}', '\u{1210}', '\u{1211}',
- '\u{1212}', '\u{1213}', '\u{1214}', '\u{1215}', '\u{1216}', '\u{1217}', '\u{1218}', '\u{1219}',
- '\u{121A}', '\u{121B}', '\u{121C}', '\u{121D}', '\u{121E}', '\u{121F}', '\u{1220}', '\u{1221}',
- '\u{1222}', '\u{1223}', '\u{1224}', '\u{1225}', '\u{1226}', '\u{1227}', '\u{1228}', '\u{1229}',
- '\u{122A}', '\u{122B}', '\u{122C}', '\u{122D}', '\u{122E}', '\u{122F}', '\u{1230}', '\u{1231}',
- '\u{1232}', '\u{1233}', '\u{1234}', '\u{1235}', '\u{1236}', '\u{1237}', '\u{1238}', '\u{1239}',
- '\u{123A}', '\u{123B}', '\u{123C}', '\u{123D}', '\u{123E}', '\u{123F}', '\u{1240}', '\u{1241}',
- '\u{1242}', '\u{1243}', '\u{1244}', '\u{1245}', '\u{1246}', '\u{1247}', '\u{1248}', '\u{124A}',
- '\u{124B}', '\u{124C}', '\u{124D}', '\u{1250}', '\u{1251}', '\u{1252}', '\u{1253}', '\u{1254}',
- '\u{1255}', '\u{1256}', '\u{1258}', '\u{125A}', '\u{125B}', '\u{125C}', '\u{125D}', '\u{1260}',
- '\u{1261}', '\u{1262}', '\u{1263}', '\u{1264}', '\u{1265}', '\u{1266}', '\u{1267}', '\u{1268}',
- '\u{1269}', '\u{126A}', '\u{126B}', '\u{126C}', '\u{126D}', '\u{126E}', '\u{126F}', '\u{1270}',
- '\u{1271}', '\u{1272}', '\u{1273}', '\u{1274}', '\u{1275}', '\u{1276}', '\u{1277}', '\u{1278}',
- '\u{1279}', '\u{127A}', '\u{127B}', '\u{127C}', '\u{127D}', '\u{127E}', '\u{127F}', '\u{1280}',
- '\u{1281}', '\u{1282}', '\u{1283}', '\u{1284}', '\u{1285}', '\u{1286}', '\u{1287}', '\u{1288}',
- '\u{128A}', '\u{128B}', '\u{128C}', '\u{128D}', '\u{1290}', '\u{1291}', '\u{1292}', '\u{1293}',
- '\u{1294}', '\u{1295}', '\u{1296}', '\u{1297}', '\u{1298}', '\u{1299}', '\u{129A}', '\u{129B}',
- '\u{129C}', '\u{129D}', '\u{129E}', '\u{129F}', '\u{12A0}', '\u{12A1}', '\u{12A2}', '\u{12A3}',
- '\u{12A4}', '\u{12A5}', '\u{12A6}', '\u{12A7}', '\u{12A8}', '\u{12A9}', '\u{12AA}', '\u{12AB}',
- '\u{12AC}', '\u{12AD}', '\u{12AE}', '\u{12AF}', '\u{12B0}', '\u{12B2}', '\u{12B3}', '\u{12B4}',
- '\u{12B5}', '\u{12B8}', '\u{12B9}', '\u{12BA}', '\u{12BB}', '\u{12BC}', '\u{12BD}', '\u{12BE}',
- '\u{12C0}', '\u{12C2}', '\u{12C3}', '\u{12C4}', '\u{12C5}', '\u{12C8}', '\u{12C9}', '\u{12CA}',
- '\u{12CB}', '\u{12CC}', '\u{12CD}', '\u{12CE}', '\u{12CF}', '\u{12D0}', '\u{12D1}', '\u{12D2}',
- '\u{12D3}', '\u{12D4}', '\u{12D5}', '\u{12D6}', '\u{12D8}', '\u{12D9}', '\u{12DA}', '\u{12DB}',
- '\u{12DC}', '\u{12DD}', '\u{12DE}', '\u{12DF}', '\u{12E0}', '\u{12E1}', '\u{12E2}', '\u{12E3}',
- '\u{12E4}', '\u{12E5}', '\u{12E6}', '\u{12E7}', '\u{12E8}', '\u{12E9}', '\u{12EA}', '\u{12EB}',
- '\u{12EC}', '\u{12ED}', '\u{12EE}', '\u{12EF}', '\u{12F0}', '\u{12F1}', '\u{12F2}', '\u{12F3}',
- '\u{12F4}', '\u{12F5}', '\u{12F6}', '\u{12F7}', '\u{12F8}', '\u{12F9}', '\u{12FA}', '\u{12FB}',
- '\u{12FC}', '\u{12FD}', '\u{12FE}', '\u{12FF}', '\u{1300}', '\u{1301}', '\u{1302}', '\u{1303}',
- '\u{1304}', '\u{1305}', '\u{1306}', '\u{1307}', '\u{1308}', '\u{1309}', '\u{130A}', '\u{130B}',
- '\u{130C}', '\u{130D}', '\u{130E}', '\u{130F}', '\u{1310}', '\u{1312}', '\u{1313}', '\u{1314}',
- '\u{1315}', '\u{1318}', '\u{1319}', '\u{131A}', '\u{131B}', '\u{131C}', '\u{131D}', '\u{131E}',
- '\u{131F}', '\u{1320}', '\u{1321}', '\u{1322}', '\u{1323}', '\u{1324}', '\u{1325}', '\u{1326}',
- '\u{1327}', '\u{1328}', '\u{1329}', '\u{132A}', '\u{132B}', '\u{132C}', '\u{132D}', '\u{132E}',
- '\u{132F}', '\u{1330}', '\u{1331}', '\u{1332}', '\u{1333}', '\u{1334}', '\u{1335}', '\u{1336}',
- '\u{1337}', '\u{1338}', '\u{1339}', '\u{133A}', '\u{133B}', '\u{133C}', '\u{133D}', '\u{133E}',
- '\u{133F}', '\u{1340}', '\u{1341}', '\u{1342}', '\u{1343}', '\u{1344}', '\u{1345}', '\u{1346}',
- '\u{1347}', '\u{1348}', '\u{1349}', '\u{134A}', '\u{134B}', '\u{134C}', '\u{134D}', '\u{134E}',
- '\u{134F}', '\u{1350}', '\u{1351}', '\u{1352}', '\u{1353}', '\u{1354}', '\u{1355}', '\u{1356}',
- '\u{1357}', '\u{1358}', '\u{1359}', '\u{135A}', '\u{1380}', '\u{1381}', '\u{1382}', '\u{1383}',
- '\u{1384}', '\u{1385}', '\u{1386}', '\u{1387}', '\u{1388}', '\u{1389}', '\u{138A}', '\u{138B}',
- '\u{138C}', '\u{138D}', '\u{138E}', '\u{138F}', '\u{1401}', '\u{1402}', '\u{1403}', '\u{1404}',
- '\u{1405}', '\u{1406}', '\u{1407}', '\u{1408}', '\u{1409}', '\u{140A}', '\u{140B}', '\u{140C}',
- '\u{140D}', '\u{140E}', '\u{140F}', '\u{1410}', '\u{1411}', '\u{1412}', '\u{1413}', '\u{1414}',
- '\u{1415}', '\u{1416}', '\u{1417}', '\u{1418}', '\u{1419}', '\u{141A}', '\u{141B}', '\u{141C}',
- '\u{141D}', '\u{141E}', '\u{141F}', '\u{1420}', '\u{1421}', '\u{1422}', '\u{1423}', '\u{1424}',
- '\u{1425}', '\u{1426}', '\u{1427}', '\u{1428}', '\u{1429}', '\u{142A}', '\u{142B}', '\u{142C}',
- '\u{142D}', '\u{142E}', '\u{142F}', '\u{1430}', '\u{1431}', '\u{1432}', '\u{1433}', '\u{1434}',
- '\u{1435}', '\u{1436}', '\u{1437}', '\u{1438}', '\u{1439}', '\u{143A}', '\u{143B}', '\u{143C}',
- '\u{143D}', '\u{143E}', '\u{143F}', '\u{1440}', '\u{1441}', '\u{1442}', '\u{1443}', '\u{1444}',
- '\u{1445}', '\u{1446}', '\u{1447}', '\u{1448}', '\u{1449}', '\u{144A}', '\u{144B}', '\u{144C}',
- '\u{144D}', '\u{144E}', '\u{144F}', '\u{1450}', '\u{1451}', '\u{1452}', '\u{1453}', '\u{1454}',
- '\u{1455}', '\u{1456}', '\u{1457}', '\u{1458}', '\u{1459}', '\u{145A}', '\u{145B}', '\u{145C}',
- '\u{145D}', '\u{145E}', '\u{145F}', '\u{1460}', '\u{1461}', '\u{1462}', '\u{1463}', '\u{1464}',
- '\u{1465}', '\u{1466}', '\u{1467}', '\u{1468}', '\u{1469}', '\u{146A}', '\u{146B}', '\u{146C}',
- '\u{146D}', '\u{146E}', '\u{146F}', '\u{1470}', '\u{1471}', '\u{1472}', '\u{1473}', '\u{1474}',
- '\u{1475}', '\u{1476}', '\u{1477}', '\u{1478}', '\u{1479}', '\u{147A}', '\u{147B}', '\u{147C}',
- '\u{147D}', '\u{147E}', '\u{147F}', '\u{1480}', '\u{1481}', '\u{1482}', '\u{1483}', '\u{1484}',
- '\u{1485}', '\u{1486}', '\u{1487}', '\u{1488}', '\u{1489}', '\u{148A}', '\u{148B}', '\u{148C}',
- '\u{148D}', '\u{148E}', '\u{148F}', '\u{1490}', '\u{1491}', '\u{1492}', '\u{1493}', '\u{1494}',
- '\u{1495}', '\u{1496}', '\u{1497}', '\u{1498}', '\u{1499}', '\u{149A}', '\u{149B}', '\u{149C}',
- '\u{149D}', '\u{149E}', '\u{149F}', '\u{14A0}', '\u{14A1}', '\u{14A2}', '\u{14A3}', '\u{14A4}',
- '\u{14A5}', '\u{14A6}', '\u{14A7}', '\u{14A8}', '\u{14A9}', '\u{14AA}', '\u{14AB}', '\u{14AC}',
- '\u{14AD}', '\u{14AE}', '\u{14AF}', '\u{14B0}', '\u{14B1}', '\u{14B2}', '\u{14B3}', '\u{14B4}',
- '\u{14B5}', '\u{14B6}', '\u{14B7}', '\u{14B8}', '\u{14B9}', '\u{14BA}', '\u{14BB}', '\u{14BC}',
- '\u{14BD}', '\u{14BE}', '\u{14BF}', '\u{14C0}', '\u{14C1}', '\u{14C2}', '\u{14C3}', '\u{14C4}',
- '\u{14C5}', '\u{14C6}', '\u{14C7}', '\u{14C8}', '\u{14C9}', '\u{14CA}', '\u{14CB}', '\u{14CC}',
- '\u{14CD}', '\u{14CE}', '\u{14CF}', '\u{14D0}', '\u{14D1}', '\u{14D2}', '\u{14D3}', '\u{14D4}',
- '\u{14D5}', '\u{14D6}', '\u{14D7}', '\u{14D8}', '\u{14D9}', '\u{14DA}', '\u{14DB}', '\u{14DC}',
- '\u{14DD}', '\u{14DE}', '\u{14DF}', '\u{14E0}', '\u{14E1}', '\u{14E2}', '\u{14E3}', '\u{14E4}',
- '\u{14E5}', '\u{14E6}', '\u{14E7}', '\u{14E8}', '\u{14E9}', '\u{14EA}', '\u{14EB}', '\u{14EC}',
- '\u{14ED}', '\u{14EE}', '\u{14EF}', '\u{14F0}', '\u{14F1}', '\u{14F2}', '\u{14F3}', '\u{14F4}',
- '\u{14F5}', '\u{14F6}', '\u{14F7}', '\u{14F8}', '\u{14F9}', '\u{14FA}', '\u{14FB}', '\u{14FC}',
- '\u{14FD}', '\u{14FE}', '\u{14FF}', '\u{1500}', '\u{1501}', '\u{1502}', '\u{1503}', '\u{1504}',
- '\u{1505}', '\u{1506}', '\u{1507}', '\u{1508}', '\u{1509}', '\u{150A}', '\u{150B}', '\u{150C}',
- '\u{150D}', '\u{150E}', '\u{150F}', '\u{1510}', '\u{1511}', '\u{1512}', '\u{1513}', '\u{1514}',
- '\u{1515}', '\u{1516}', '\u{1517}', '\u{1518}', '\u{1519}', '\u{151A}', '\u{151B}', '\u{151C}',
- '\u{151D}', '\u{151E}', '\u{151F}', '\u{1520}', '\u{1521}', '\u{1522}', '\u{1523}', '\u{1524}',
- '\u{1525}', '\u{1526}', '\u{1527}', '\u{1528}', '\u{1529}', '\u{152A}', '\u{152B}', '\u{152C}',
- '\u{152D}', '\u{152E}', '\u{152F}', '\u{1530}', '\u{1531}', '\u{1532}', '\u{1533}', '\u{1534}',
- '\u{1535}', '\u{1536}', '\u{1537}', '\u{1538}', '\u{1539}', '\u{153A}', '\u{153B}', '\u{153C}',
- '\u{153D}', '\u{153E}', '\u{153F}', '\u{1540}', '\u{1541}', '\u{1542}', '\u{1543}', '\u{1544}',
- '\u{1545}', '\u{1546}', '\u{1547}', '\u{1548}', '\u{1549}', '\u{154A}', '\u{154B}', '\u{154C}',
- '\u{154D}', '\u{154E}', '\u{154F}', '\u{1550}', '\u{1551}', '\u{1552}', '\u{1553}', '\u{1554}',
- '\u{1555}', '\u{1556}', '\u{1557}', '\u{1558}', '\u{1559}', '\u{155A}', '\u{155B}', '\u{155C}',
- '\u{155D}', '\u{155E}', '\u{155F}', '\u{1560}', '\u{1561}', '\u{1562}', '\u{1563}', '\u{1564}',
- '\u{1565}', '\u{1566}', '\u{1567}', '\u{1568}', '\u{1569}', '\u{156A}', '\u{156B}', '\u{156C}',
- '\u{156D}', '\u{156E}', '\u{156F}', '\u{1570}', '\u{1571}', '\u{1572}', '\u{1573}', '\u{1574}',
- '\u{1575}', '\u{1576}', '\u{1577}', '\u{1578}', '\u{1579}', '\u{157A}', '\u{157B}', '\u{157C}',
- '\u{157D}', '\u{157E}', '\u{157F}', '\u{1580}', '\u{1581}', '\u{1582}', '\u{1583}', '\u{1584}',
- '\u{1585}', '\u{1586}', '\u{1587}', '\u{1588}', '\u{1589}', '\u{158A}', '\u{158B}', '\u{158C}',
- '\u{158D}', '\u{158E}', '\u{158F}', '\u{1590}', '\u{1591}', '\u{1592}', '\u{1593}', '\u{1594}',
- '\u{1595}', '\u{1596}', '\u{1597}', '\u{1598}', '\u{1599}', '\u{159A}', '\u{159B}', '\u{159C}',
- '\u{159D}', '\u{159E}', '\u{159F}', '\u{15A0}', '\u{15A1}', '\u{15A2}', '\u{15A3}', '\u{15A4}',
- '\u{15A5}', '\u{15A6}', '\u{15A7}', '\u{15A8}', '\u{15A9}', '\u{15AA}', '\u{15AB}', '\u{15AC}',
- '\u{15AD}', '\u{15AE}', '\u{15AF}', '\u{15B0}', '\u{15B1}', '\u{15B2}', '\u{15B3}', '\u{15B4}',
- '\u{15B5}', '\u{15B6}', '\u{15B7}', '\u{15B8}', '\u{15B9}', '\u{15BA}', '\u{15BB}', '\u{15BC}',
- '\u{15BD}', '\u{15BE}', '\u{15BF}', '\u{15C0}', '\u{15C1}', '\u{15C2}', '\u{15C3}', '\u{15C4}',
- '\u{15C5}', '\u{15C6}', '\u{15C7}', '\u{15C8}', '\u{15C9}', '\u{15CA}', '\u{15CB}', '\u{15CC}',
- '\u{15CD}', '\u{15CE}', '\u{15CF}', '\u{15D0}', '\u{15D1}', '\u{15D2}', '\u{15D3}', '\u{15D4}',
- '\u{15D5}', '\u{15D6}', '\u{15D7}', '\u{15D8}', '\u{15D9}', '\u{15DA}', '\u{15DB}', '\u{15DC}',
- '\u{15DD}', '\u{15DE}', '\u{15DF}', '\u{15E0}', '\u{15E1}', '\u{15E2}', '\u{15E3}', '\u{15E4}',
- '\u{15E5}', '\u{15E6}', '\u{15E7}', '\u{15E8}', '\u{15E9}', '\u{15EA}', '\u{15EB}', '\u{15EC}',
- '\u{15ED}', '\u{15EE}', '\u{15EF}', '\u{15F0}', '\u{15F1}', '\u{15F2}', '\u{15F3}', '\u{15F4}',
- '\u{15F5}', '\u{15F6}', '\u{15F7}', '\u{15F8}', '\u{15F9}', '\u{15FA}', '\u{15FB}', '\u{15FC}',
- '\u{15FD}', '\u{15FE}', '\u{15FF}', '\u{1600}', '\u{1601}', '\u{1602}', '\u{1603}', '\u{1604}',
- '\u{1605}', '\u{1606}', '\u{1607}', '\u{1608}', '\u{1609}', '\u{160A}', '\u{160B}', '\u{160C}',
- '\u{160D}', '\u{160E}', '\u{160F}', '\u{1610}', '\u{1611}', '\u{1612}', '\u{1613}', '\u{1614}',
- '\u{1615}', '\u{1616}', '\u{1617}', '\u{1618}', '\u{1619}', '\u{161A}', '\u{161B}', '\u{161C}',
- '\u{161D}', '\u{161E}', '\u{161F}', '\u{1620}', '\u{1621}', '\u{1622}', '\u{1623}', '\u{1624}',
- '\u{1625}', '\u{1626}', '\u{1627}', '\u{1628}', '\u{1629}', '\u{162A}', '\u{162B}', '\u{162C}',
- '\u{162D}', '\u{162E}', '\u{162F}', '\u{1630}', '\u{1631}', '\u{1632}', '\u{1633}', '\u{1634}',
- '\u{1635}', '\u{1636}', '\u{1637}', '\u{1638}', '\u{1639}', '\u{163A}', '\u{163B}', '\u{163C}',
- '\u{163D}', '\u{163E}', '\u{163F}', '\u{1640}', '\u{1641}', '\u{1642}', '\u{1643}', '\u{1644}',
- '\u{1645}', '\u{1646}', '\u{1647}', '\u{1648}', '\u{1649}', '\u{164A}', '\u{164B}', '\u{164C}',
- '\u{164D}', '\u{164E}', '\u{164F}', '\u{1650}', '\u{1651}', '\u{1652}', '\u{1653}', '\u{1654}',
- '\u{1655}', '\u{1656}', '\u{1657}', '\u{1658}', '\u{1659}', '\u{165A}', '\u{165B}', '\u{165C}',
- '\u{165D}', '\u{165E}', '\u{165F}', '\u{1660}', '\u{1661}', '\u{1662}', '\u{1663}', '\u{1664}',
- '\u{1665}', '\u{1666}', '\u{1667}', '\u{1668}', '\u{1669}', '\u{166A}', '\u{166B}', '\u{166C}',
- '\u{166F}', '\u{1670}', '\u{1671}', '\u{1672}', '\u{1673}', '\u{1674}', '\u{1675}', '\u{1676}',
- '\u{1677}', '\u{1678}', '\u{1679}', '\u{167A}', '\u{167B}', '\u{167C}', '\u{167D}', '\u{167E}',
- '\u{167F}', '\u{1681}', '\u{1682}', '\u{1683}', '\u{1684}', '\u{1685}', '\u{1686}', '\u{1687}',
- '\u{1688}', '\u{1689}', '\u{168A}', '\u{168B}', '\u{168C}', '\u{168D}', '\u{168E}', '\u{168F}',
- '\u{1690}', '\u{1691}', '\u{1692}', '\u{1693}', '\u{1694}', '\u{1695}', '\u{1696}', '\u{1697}',
- '\u{1698}', '\u{1699}', '\u{169A}', '\u{16A0}', '\u{16A1}', '\u{16A2}', '\u{16A3}', '\u{16A4}',
- '\u{16A5}', '\u{16A6}', '\u{16A7}', '\u{16A8}', '\u{16A9}', '\u{16AA}', '\u{16AB}', '\u{16AC}',
- '\u{16AD}', '\u{16AE}', '\u{16AF}', '\u{16B0}', '\u{16B1}', '\u{16B2}', '\u{16B3}', '\u{16B4}',
- '\u{16B5}', '\u{16B6}', '\u{16B7}', '\u{16B8}', '\u{16B9}', '\u{16BA}', '\u{16BB}', '\u{16BC}',
- '\u{16BD}', '\u{16BE}', '\u{16BF}', '\u{16C0}', '\u{16C1}', '\u{16C2}', '\u{16C3}', '\u{16C4}',
- '\u{16C5}', '\u{16C6}', '\u{16C7}', '\u{16C8}', '\u{16C9}', '\u{16CA}', '\u{16CB}', '\u{16CC}',
- '\u{16CD}', '\u{16CE}', '\u{16CF}', '\u{16D0}', '\u{16D1}', '\u{16D2}', '\u{16D3}', '\u{16D4}',
- '\u{16D5}', '\u{16D6}', '\u{16D7}', '\u{16D8}', '\u{16D9}', '\u{16DA}', '\u{16DB}', '\u{16DC}',
- '\u{16DD}', '\u{16DE}', '\u{16DF}', '\u{16E0}', '\u{16E1}', '\u{16E2}', '\u{16E3}', '\u{16E4}',
- '\u{16E5}', '\u{16E6}', '\u{16E7}', '\u{16E8}', '\u{16E9}', '\u{16EA}', '\u{16F1}', '\u{16F2}',
- '\u{16F3}', '\u{16F4}', '\u{16F5}', '\u{16F6}', '\u{16F7}', '\u{16F8}', '\u{1700}', '\u{1701}',
- '\u{1702}', '\u{1703}', '\u{1704}', '\u{1705}', '\u{1706}', '\u{1707}', '\u{1708}', '\u{1709}',
- '\u{170A}', '\u{170B}', '\u{170C}', '\u{170E}', '\u{170F}', '\u{1710}', '\u{1711}', '\u{1720}',
- '\u{1721}', '\u{1722}', '\u{1723}', '\u{1724}', '\u{1725}', '\u{1726}', '\u{1727}', '\u{1728}',
- '\u{1729}', '\u{172A}', '\u{172B}', '\u{172C}', '\u{172D}', '\u{172E}', '\u{172F}', '\u{1730}',
- '\u{1731}', '\u{1740}', '\u{1741}', '\u{1742}', '\u{1743}', '\u{1744}', '\u{1745}', '\u{1746}',
- '\u{1747}', '\u{1748}', '\u{1749}', '\u{174A}', '\u{174B}', '\u{174C}', '\u{174D}', '\u{174E}',
- '\u{174F}', '\u{1750}', '\u{1751}', '\u{1760}', '\u{1761}', '\u{1762}', '\u{1763}', '\u{1764}',
- '\u{1765}', '\u{1766}', '\u{1767}', '\u{1768}', '\u{1769}', '\u{176A}', '\u{176B}', '\u{176C}',
- '\u{176E}', '\u{176F}', '\u{1770}', '\u{1780}', '\u{1781}', '\u{1782}', '\u{1783}', '\u{1784}',
- '\u{1785}', '\u{1786}', '\u{1787}', '\u{1788}', '\u{1789}', '\u{178A}', '\u{178B}', '\u{178C}',
- '\u{178D}', '\u{178E}', '\u{178F}', '\u{1790}', '\u{1791}', '\u{1792}', '\u{1793}', '\u{1794}',
- '\u{1795}', '\u{1796}', '\u{1797}', '\u{1798}', '\u{1799}', '\u{179A}', '\u{179B}', '\u{179C}',
- '\u{179D}', '\u{179E}', '\u{179F}', '\u{17A0}', '\u{17A1}', '\u{17A2}', '\u{17A3}', '\u{17A4}',
- '\u{17A5}', '\u{17A6}', '\u{17A7}', '\u{17A8}', '\u{17A9}', '\u{17AA}', '\u{17AB}', '\u{17AC}',
- '\u{17AD}', '\u{17AE}', '\u{17AF}', '\u{17B0}', '\u{17B1}', '\u{17B2}', '\u{17B3}', '\u{17DC}',
- '\u{1820}', '\u{1821}', '\u{1822}', '\u{1823}', '\u{1824}', '\u{1825}', '\u{1826}', '\u{1827}',
- '\u{1828}', '\u{1829}', '\u{182A}', '\u{182B}', '\u{182C}', '\u{182D}', '\u{182E}', '\u{182F}',
- '\u{1830}', '\u{1831}', '\u{1832}', '\u{1833}', '\u{1834}', '\u{1835}', '\u{1836}', '\u{1837}',
- '\u{1838}', '\u{1839}', '\u{183A}', '\u{183B}', '\u{183C}', '\u{183D}', '\u{183E}', '\u{183F}',
- '\u{1840}', '\u{1841}', '\u{1842}', '\u{1844}', '\u{1845}', '\u{1846}', '\u{1847}', '\u{1848}',
- '\u{1849}', '\u{184A}', '\u{184B}', '\u{184C}', '\u{184D}', '\u{184E}', '\u{184F}', '\u{1850}',
- '\u{1851}', '\u{1852}', '\u{1853}', '\u{1854}', '\u{1855}', '\u{1856}', '\u{1857}', '\u{1858}',
- '\u{1859}', '\u{185A}', '\u{185B}', '\u{185C}', '\u{185D}', '\u{185E}', '\u{185F}', '\u{1860}',
- '\u{1861}', '\u{1862}', '\u{1863}', '\u{1864}', '\u{1865}', '\u{1866}', '\u{1867}', '\u{1868}',
- '\u{1869}', '\u{186A}', '\u{186B}', '\u{186C}', '\u{186D}', '\u{186E}', '\u{186F}', '\u{1870}',
- '\u{1871}', '\u{1872}', '\u{1873}', '\u{1874}', '\u{1875}', '\u{1876}', '\u{1877}', '\u{1880}',
- '\u{1881}', '\u{1882}', '\u{1883}', '\u{1884}', '\u{1885}', '\u{1886}', '\u{1887}', '\u{1888}',
- '\u{1889}', '\u{188A}', '\u{188B}', '\u{188C}', '\u{188D}', '\u{188E}', '\u{188F}', '\u{1890}',
- '\u{1891}', '\u{1892}', '\u{1893}', '\u{1894}', '\u{1895}', '\u{1896}', '\u{1897}', '\u{1898}',
- '\u{1899}', '\u{189A}', '\u{189B}', '\u{189C}', '\u{189D}', '\u{189E}', '\u{189F}', '\u{18A0}',
- '\u{18A1}', '\u{18A2}', '\u{18A3}', '\u{18A4}', '\u{18A5}', '\u{18A6}', '\u{18A7}', '\u{18A8}',
- '\u{18AA}', '\u{18B0}', '\u{18B1}', '\u{18B2}', '\u{18B3}', '\u{18B4}', '\u{18B5}', '\u{18B6}',
- '\u{18B7}', '\u{18B8}', '\u{18B9}', '\u{18BA}', '\u{18BB}', '\u{18BC}', '\u{18BD}', '\u{18BE}',
- '\u{18BF}', '\u{18C0}', '\u{18C1}', '\u{18C2}', '\u{18C3}', '\u{18C4}', '\u{18C5}', '\u{18C6}',
- '\u{18C7}', '\u{18C8}', '\u{18C9}', '\u{18CA}', '\u{18CB}', '\u{18CC}', '\u{18CD}', '\u{18CE}',
- '\u{18CF}', '\u{18D0}', '\u{18D1}', '\u{18D2}', '\u{18D3}', '\u{18D4}', '\u{18D5}', '\u{18D6}',
- '\u{18D7}', '\u{18D8}', '\u{18D9}', '\u{18DA}', '\u{18DB}', '\u{18DC}', '\u{18DD}', '\u{18DE}',
- '\u{18DF}', '\u{18E0}', '\u{18E1}', '\u{18E2}', '\u{18E3}', '\u{18E4}', '\u{18E5}', '\u{18E6}',
- '\u{18E7}', '\u{18E8}', '\u{18E9}', '\u{18EA}', '\u{18EB}', '\u{18EC}', '\u{18ED}', '\u{18EE}',
- '\u{18EF}', '\u{18F0}', '\u{18F1}', '\u{18F2}', '\u{18F3}', '\u{18F4}', '\u{18F5}', '\u{1900}',
- '\u{1901}', '\u{1902}', '\u{1903}', '\u{1904}', '\u{1905}', '\u{1906}', '\u{1907}', '\u{1908}',
- '\u{1909}', '\u{190A}', '\u{190B}', '\u{190C}', '\u{190D}', '\u{190E}', '\u{190F}', '\u{1910}',
- '\u{1911}', '\u{1912}', '\u{1913}', '\u{1914}', '\u{1915}', '\u{1916}', '\u{1917}', '\u{1918}',
- '\u{1919}', '\u{191A}', '\u{191B}', '\u{191C}', '\u{191D}', '\u{191E}', '\u{1950}', '\u{1951}',
- '\u{1952}', '\u{1953}', '\u{1954}', '\u{1955}', '\u{1956}', '\u{1957}', '\u{1958}', '\u{1959}',
- '\u{195A}', '\u{195B}', '\u{195C}', '\u{195D}', '\u{195E}', '\u{195F}', '\u{1960}', '\u{1961}',
- '\u{1962}', '\u{1963}', '\u{1964}', '\u{1965}', '\u{1966}', '\u{1967}', '\u{1968}', '\u{1969}',
- '\u{196A}', '\u{196B}', '\u{196C}', '\u{196D}', '\u{1970}', '\u{1971}', '\u{1972}', '\u{1973}',
- '\u{1974}', '\u{1980}', '\u{1981}', '\u{1982}', '\u{1983}', '\u{1984}', '\u{1985}', '\u{1986}',
- '\u{1987}', '\u{1988}', '\u{1989}', '\u{198A}', '\u{198B}', '\u{198C}', '\u{198D}', '\u{198E}',
- '\u{198F}', '\u{1990}', '\u{1991}', '\u{1992}', '\u{1993}', '\u{1994}', '\u{1995}', '\u{1996}',
- '\u{1997}', '\u{1998}', '\u{1999}', '\u{199A}', '\u{199B}', '\u{199C}', '\u{199D}', '\u{199E}',
- '\u{199F}', '\u{19A0}', '\u{19A1}', '\u{19A2}', '\u{19A3}', '\u{19A4}', '\u{19A5}', '\u{19A6}',
- '\u{19A7}', '\u{19A8}', '\u{19A9}', '\u{19AA}', '\u{19AB}', '\u{19B0}', '\u{19B1}', '\u{19B2}',
- '\u{19B3}', '\u{19B4}', '\u{19B5}', '\u{19B6}', '\u{19B7}', '\u{19B8}', '\u{19B9}', '\u{19BA}',
- '\u{19BB}', '\u{19BC}', '\u{19BD}', '\u{19BE}', '\u{19BF}', '\u{19C0}', '\u{19C1}', '\u{19C2}',
- '\u{19C3}', '\u{19C4}', '\u{19C5}', '\u{19C6}', '\u{19C7}', '\u{19C8}', '\u{19C9}', '\u{1A00}',
- '\u{1A01}', '\u{1A02}', '\u{1A03}', '\u{1A04}', '\u{1A05}', '\u{1A06}', '\u{1A07}', '\u{1A08}',
- '\u{1A09}', '\u{1A0A}', '\u{1A0B}', '\u{1A0C}', '\u{1A0D}', '\u{1A0E}', '\u{1A0F}', '\u{1A10}',
- '\u{1A11}', '\u{1A12}', '\u{1A13}', '\u{1A14}', '\u{1A15}', '\u{1A16}', '\u{1A20}', '\u{1A21}',
- '\u{1A22}', '\u{1A23}', '\u{1A24}', '\u{1A25}', '\u{1A26}', '\u{1A27}', '\u{1A28}', '\u{1A29}',
- '\u{1A2A}', '\u{1A2B}', '\u{1A2C}', '\u{1A2D}', '\u{1A2E}', '\u{1A2F}', '\u{1A30}', '\u{1A31}',
- '\u{1A32}', '\u{1A33}', '\u{1A34}', '\u{1A35}', '\u{1A36}', '\u{1A37}', '\u{1A38}', '\u{1A39}',
- '\u{1A3A}', '\u{1A3B}', '\u{1A3C}', '\u{1A3D}', '\u{1A3E}', '\u{1A3F}', '\u{1A40}', '\u{1A41}',
- '\u{1A42}', '\u{1A43}', '\u{1A44}', '\u{1A45}', '\u{1A46}', '\u{1A47}', '\u{1A48}', '\u{1A49}',
- '\u{1A4A}', '\u{1A4B}', '\u{1A4C}', '\u{1A4D}', '\u{1A4E}', '\u{1A4F}', '\u{1A50}', '\u{1A51}',
- '\u{1A52}', '\u{1A53}', '\u{1A54}', '\u{1B05}', '\u{1B06}', '\u{1B07}', '\u{1B08}', '\u{1B09}',
- '\u{1B0A}', '\u{1B0B}', '\u{1B0C}', '\u{1B0D}', '\u{1B0E}', '\u{1B0F}', '\u{1B10}', '\u{1B11}',
- '\u{1B12}', '\u{1B13}', '\u{1B14}', '\u{1B15}', '\u{1B16}', '\u{1B17}', '\u{1B18}', '\u{1B19}',
- '\u{1B1A}', '\u{1B1B}', '\u{1B1C}', '\u{1B1D}', '\u{1B1E}', '\u{1B1F}', '\u{1B20}', '\u{1B21}',
- '\u{1B22}', '\u{1B23}', '\u{1B24}', '\u{1B25}', '\u{1B26}', '\u{1B27}', '\u{1B28}', '\u{1B29}',
- '\u{1B2A}', '\u{1B2B}', '\u{1B2C}', '\u{1B2D}', '\u{1B2E}', '\u{1B2F}', '\u{1B30}', '\u{1B31}',
- '\u{1B32}', '\u{1B33}', '\u{1B45}', '\u{1B46}', '\u{1B47}', '\u{1B48}', '\u{1B49}', '\u{1B4A}',
- '\u{1B4B}', '\u{1B83}', '\u{1B84}', '\u{1B85}', '\u{1B86}', '\u{1B87}', '\u{1B88}', '\u{1B89}',
- '\u{1B8A}', '\u{1B8B}', '\u{1B8C}', '\u{1B8D}', '\u{1B8E}', '\u{1B8F}', '\u{1B90}', '\u{1B91}',
- '\u{1B92}', '\u{1B93}', '\u{1B94}', '\u{1B95}', '\u{1B96}', '\u{1B97}', '\u{1B98}', '\u{1B99}',
- '\u{1B9A}', '\u{1B9B}', '\u{1B9C}', '\u{1B9D}', '\u{1B9E}', '\u{1B9F}', '\u{1BA0}', '\u{1BAE}',
- '\u{1BAF}', '\u{1BBA}', '\u{1BBB}', '\u{1BBC}', '\u{1BBD}', '\u{1BBE}', '\u{1BBF}', '\u{1BC0}',
- '\u{1BC1}', '\u{1BC2}', '\u{1BC3}', '\u{1BC4}', '\u{1BC5}', '\u{1BC6}', '\u{1BC7}', '\u{1BC8}',
- '\u{1BC9}', '\u{1BCA}', '\u{1BCB}', '\u{1BCC}', '\u{1BCD}', '\u{1BCE}', '\u{1BCF}', '\u{1BD0}',
- '\u{1BD1}', '\u{1BD2}', '\u{1BD3}', '\u{1BD4}', '\u{1BD5}', '\u{1BD6}', '\u{1BD7}', '\u{1BD8}',
- '\u{1BD9}', '\u{1BDA}', '\u{1BDB}', '\u{1BDC}', '\u{1BDD}', '\u{1BDE}', '\u{1BDF}', '\u{1BE0}',
- '\u{1BE1}', '\u{1BE2}', '\u{1BE3}', '\u{1BE4}', '\u{1BE5}', '\u{1C00}', '\u{1C01}', '\u{1C02}',
- '\u{1C03}', '\u{1C04}', '\u{1C05}', '\u{1C06}', '\u{1C07}', '\u{1C08}', '\u{1C09}', '\u{1C0A}',
- '\u{1C0B}', '\u{1C0C}', '\u{1C0D}', '\u{1C0E}', '\u{1C0F}', '\u{1C10}', '\u{1C11}', '\u{1C12}',
- '\u{1C13}', '\u{1C14}', '\u{1C15}', '\u{1C16}', '\u{1C17}', '\u{1C18}', '\u{1C19}', '\u{1C1A}',
- '\u{1C1B}', '\u{1C1C}', '\u{1C1D}', '\u{1C1E}', '\u{1C1F}', '\u{1C20}', '\u{1C21}', '\u{1C22}',
- '\u{1C23}', '\u{1C4D}', '\u{1C4E}', '\u{1C4F}', '\u{1C5A}', '\u{1C5B}', '\u{1C5C}', '\u{1C5D}',
- '\u{1C5E}', '\u{1C5F}', '\u{1C60}', '\u{1C61}', '\u{1C62}', '\u{1C63}', '\u{1C64}', '\u{1C65}',
- '\u{1C66}', '\u{1C67}', '\u{1C68}', '\u{1C69}', '\u{1C6A}', '\u{1C6B}', '\u{1C6C}', '\u{1C6D}',
- '\u{1C6E}', '\u{1C6F}', '\u{1C70}', '\u{1C71}', '\u{1C72}', '\u{1C73}', '\u{1C74}', '\u{1C75}',
- '\u{1C76}', '\u{1C77}', '\u{1CE9}', '\u{1CEA}', '\u{1CEB}', '\u{1CEC}', '\u{1CEE}', '\u{1CEF}',
- '\u{1CF0}', '\u{1CF1}', '\u{1CF5}', '\u{1CF6}', '\u{2135}', '\u{2136}', '\u{2137}', '\u{2138}',
- '\u{2D30}', '\u{2D31}', '\u{2D32}', '\u{2D33}', '\u{2D34}', '\u{2D35}', '\u{2D36}', '\u{2D37}',
- '\u{2D38}', '\u{2D39}', '\u{2D3A}', '\u{2D3B}', '\u{2D3C}', '\u{2D3D}', '\u{2D3E}', '\u{2D3F}',
- '\u{2D40}', '\u{2D41}', '\u{2D42}', '\u{2D43}', '\u{2D44}', '\u{2D45}', '\u{2D46}', '\u{2D47}',
- '\u{2D48}', '\u{2D49}', '\u{2D4A}', '\u{2D4B}', '\u{2D4C}', '\u{2D4D}', '\u{2D4E}', '\u{2D4F}',
- '\u{2D50}', '\u{2D51}', '\u{2D52}', '\u{2D53}', '\u{2D54}', '\u{2D55}', '\u{2D56}', '\u{2D57}',
- '\u{2D58}', '\u{2D59}', '\u{2D5A}', '\u{2D5B}', '\u{2D5C}', '\u{2D5D}', '\u{2D5E}', '\u{2D5F}',
- '\u{2D60}', '\u{2D61}', '\u{2D62}', '\u{2D63}', '\u{2D64}', '\u{2D65}', '\u{2D66}', '\u{2D67}',
- '\u{2D80}', '\u{2D81}', '\u{2D82}', '\u{2D83}', '\u{2D84}', '\u{2D85}', '\u{2D86}', '\u{2D87}',
- '\u{2D88}', '\u{2D89}', '\u{2D8A}', '\u{2D8B}', '\u{2D8C}', '\u{2D8D}', '\u{2D8E}', '\u{2D8F}',
- '\u{2D90}', '\u{2D91}', '\u{2D92}', '\u{2D93}', '\u{2D94}', '\u{2D95}', '\u{2D96}', '\u{2DA0}',
- '\u{2DA1}', '\u{2DA2}', '\u{2DA3}', '\u{2DA4}', '\u{2DA5}', '\u{2DA6}', '\u{2DA8}', '\u{2DA9}',
- '\u{2DAA}', '\u{2DAB}', '\u{2DAC}', '\u{2DAD}', '\u{2DAE}', '\u{2DB0}', '\u{2DB1}', '\u{2DB2}',
- '\u{2DB3}', '\u{2DB4}', '\u{2DB5}', '\u{2DB6}', '\u{2DB8}', '\u{2DB9}', '\u{2DBA}', '\u{2DBB}',
- '\u{2DBC}', '\u{2DBD}', '\u{2DBE}', '\u{2DC0}', '\u{2DC1}', '\u{2DC2}', '\u{2DC3}', '\u{2DC4}',
- '\u{2DC5}', '\u{2DC6}', '\u{2DC8}', '\u{2DC9}', '\u{2DCA}', '\u{2DCB}', '\u{2DCC}', '\u{2DCD}',
- '\u{2DCE}', '\u{2DD0}', '\u{2DD1}', '\u{2DD2}', '\u{2DD3}', '\u{2DD4}', '\u{2DD5}', '\u{2DD6}',
- '\u{2DD8}', '\u{2DD9}', '\u{2DDA}', '\u{2DDB}', '\u{2DDC}', '\u{2DDD}', '\u{2DDE}', '\u{3006}',
- '\u{303C}', '\u{3041}', '\u{3042}', '\u{3043}', '\u{3044}', '\u{3045}', '\u{3046}', '\u{3047}',
- '\u{3048}', '\u{3049}', '\u{304A}', '\u{304B}', '\u{304C}', '\u{304D}', '\u{304E}', '\u{304F}',
- '\u{3050}', '\u{3051}', '\u{3052}', '\u{3053}', '\u{3054}', '\u{3055}', '\u{3056}', '\u{3057}',
- '\u{3058}', '\u{3059}', '\u{305A}', '\u{305B}', '\u{305C}', '\u{305D}', '\u{305E}', '\u{305F}',
- '\u{3060}', '\u{3061}', '\u{3062}', '\u{3063}', '\u{3064}', '\u{3065}', '\u{3066}', '\u{3067}',
- '\u{3068}', '\u{3069}', '\u{306A}', '\u{306B}', '\u{306C}', '\u{306D}', '\u{306E}', '\u{306F}',
- '\u{3070}', '\u{3071}', '\u{3072}', '\u{3073}', '\u{3074}', '\u{3075}', '\u{3076}', '\u{3077}',
- '\u{3078}', '\u{3079}', '\u{307A}', '\u{307B}', '\u{307C}', '\u{307D}', '\u{307E}', '\u{307F}',
- '\u{3080}', '\u{3081}', '\u{3082}', '\u{3083}', '\u{3084}', '\u{3085}', '\u{3086}', '\u{3087}',
- '\u{3088}', '\u{3089}', '\u{308A}', '\u{308B}', '\u{308C}', '\u{308D}', '\u{308E}', '\u{308F}',
- '\u{3090}', '\u{3091}', '\u{3092}', '\u{3093}', '\u{3094}', '\u{3095}', '\u{3096}', '\u{309F}',
- '\u{30A1}', '\u{30A2}', '\u{30A3}', '\u{30A4}', '\u{30A5}', '\u{30A6}', '\u{30A7}', '\u{30A8}',
- '\u{30A9}', '\u{30AA}', '\u{30AB}', '\u{30AC}', '\u{30AD}', '\u{30AE}', '\u{30AF}', '\u{30B0}',
- '\u{30B1}', '\u{30B2}', '\u{30B3}', '\u{30B4}', '\u{30B5}', '\u{30B6}', '\u{30B7}', '\u{30B8}',
- '\u{30B9}', '\u{30BA}', '\u{30BB}', '\u{30BC}', '\u{30BD}', '\u{30BE}', '\u{30BF}', '\u{30C0}',
- '\u{30C1}', '\u{30C2}', '\u{30C3}', '\u{30C4}', '\u{30C5}', '\u{30C6}', '\u{30C7}', '\u{30C8}',
- '\u{30C9}', '\u{30CA}', '\u{30CB}', '\u{30CC}', '\u{30CD}', '\u{30CE}', '\u{30CF}', '\u{30D0}',
- '\u{30D1}', '\u{30D2}', '\u{30D3}', '\u{30D4}', '\u{30D5}', '\u{30D6}', '\u{30D7}', '\u{30D8}',
- '\u{30D9}', '\u{30DA}', '\u{30DB}', '\u{30DC}', '\u{30DD}', '\u{30DE}', '\u{30DF}', '\u{30E0}',
- '\u{30E1}', '\u{30E2}', '\u{30E3}', '\u{30E4}', '\u{30E5}', '\u{30E6}', '\u{30E7}', '\u{30E8}',
- '\u{30E9}', '\u{30EA}', '\u{30EB}', '\u{30EC}', '\u{30ED}', '\u{30EE}', '\u{30EF}', '\u{30F0}',
- '\u{30F1}', '\u{30F2}', '\u{30F3}', '\u{30F4}', '\u{30F5}', '\u{30F6}', '\u{30F7}', '\u{30F8}',
- '\u{30F9}', '\u{30FA}', '\u{30FF}', '\u{3105}', '\u{3106}', '\u{3107}', '\u{3108}', '\u{3109}',
- '\u{310A}', '\u{310B}', '\u{310C}', '\u{310D}', '\u{310E}', '\u{310F}', '\u{3110}', '\u{3111}',
- '\u{3112}', '\u{3113}', '\u{3114}', '\u{3115}', '\u{3116}', '\u{3117}', '\u{3118}', '\u{3119}',
- '\u{311A}', '\u{311B}', '\u{311C}', '\u{311D}', '\u{311E}', '\u{311F}', '\u{3120}', '\u{3121}',
- '\u{3122}', '\u{3123}', '\u{3124}', '\u{3125}', '\u{3126}', '\u{3127}', '\u{3128}', '\u{3129}',
- '\u{312A}', '\u{312B}', '\u{312C}', '\u{312D}', '\u{3131}', '\u{3132}', '\u{3133}', '\u{3134}',
- '\u{3135}', '\u{3136}', '\u{3137}', '\u{3138}', '\u{3139}', '\u{313A}', '\u{313B}', '\u{313C}',
- '\u{313D}', '\u{313E}', '\u{313F}', '\u{3140}', '\u{3141}', '\u{3142}', '\u{3143}', '\u{3144}',
- '\u{3145}', '\u{3146}', '\u{3147}', '\u{3148}', '\u{3149}', '\u{314A}', '\u{314B}', '\u{314C}',
- '\u{314D}', '\u{314E}', '\u{314F}', '\u{3150}', '\u{3151}', '\u{3152}', '\u{3153}', '\u{3154}',
- '\u{3155}', '\u{3156}', '\u{3157}', '\u{3158}', '\u{3159}', '\u{315A}', '\u{315B}', '\u{315C}',
- '\u{315D}', '\u{315E}', '\u{315F}', '\u{3160}', '\u{3161}', '\u{3162}', '\u{3163}', '\u{3164}',
- '\u{3165}', '\u{3166}', '\u{3167}', '\u{3168}', '\u{3169}', '\u{316A}', '\u{316B}', '\u{316C}',
- '\u{316D}', '\u{316E}', '\u{316F}', '\u{3170}', '\u{3171}', '\u{3172}', '\u{3173}', '\u{3174}',
- '\u{3175}', '\u{3176}', '\u{3177}', '\u{3178}', '\u{3179}', '\u{317A}', '\u{317B}', '\u{317C}',
- '\u{317D}', '\u{317E}', '\u{317F}', '\u{3180}', '\u{3181}', '\u{3182}', '\u{3183}', '\u{3184}',
- '\u{3185}', '\u{3186}', '\u{3187}', '\u{3188}', '\u{3189}', '\u{318A}', '\u{318B}', '\u{318C}',
- '\u{318D}', '\u{318E}', '\u{31A0}', '\u{31A1}', '\u{31A2}', '\u{31A3}', '\u{31A4}', '\u{31A5}',
- '\u{31A6}', '\u{31A7}', '\u{31A8}', '\u{31A9}', '\u{31AA}', '\u{31AB}', '\u{31AC}', '\u{31AD}',
- '\u{31AE}', '\u{31AF}', '\u{31B0}', '\u{31B1}', '\u{31B2}', '\u{31B3}', '\u{31B4}', '\u{31B5}',
- '\u{31B6}', '\u{31B7}', '\u{31B8}', '\u{31B9}', '\u{31BA}', '\u{31F0}', '\u{31F1}', '\u{31F2}',
- '\u{31F3}', '\u{31F4}', '\u{31F5}', '\u{31F6}', '\u{31F7}', '\u{31F8}', '\u{31F9}', '\u{31FA}',
- '\u{31FB}', '\u{31FC}', '\u{31FD}', '\u{31FE}', '\u{31FF}', '\u{3400}', '\u{4DB5}', '\u{4E00}',
- '\u{9FD5}', '\u{A000}', '\u{A001}', '\u{A002}', '\u{A003}', '\u{A004}', '\u{A005}', '\u{A006}',
- '\u{A007}', '\u{A008}', '\u{A009}', '\u{A00A}', '\u{A00B}', '\u{A00C}', '\u{A00D}', '\u{A00E}',
- '\u{A00F}', '\u{A010}', '\u{A011}', '\u{A012}', '\u{A013}', '\u{A014}', '\u{A016}', '\u{A017}',
- '\u{A018}', '\u{A019}', '\u{A01A}', '\u{A01B}', '\u{A01C}', '\u{A01D}', '\u{A01E}', '\u{A01F}',
- '\u{A020}', '\u{A021}', '\u{A022}', '\u{A023}', '\u{A024}', '\u{A025}', '\u{A026}', '\u{A027}',
- '\u{A028}', '\u{A029}', '\u{A02A}', '\u{A02B}', '\u{A02C}', '\u{A02D}', '\u{A02E}', '\u{A02F}',
- '\u{A030}', '\u{A031}', '\u{A032}', '\u{A033}', '\u{A034}', '\u{A035}', '\u{A036}', '\u{A037}',
- '\u{A038}', '\u{A039}', '\u{A03A}', '\u{A03B}', '\u{A03C}', '\u{A03D}', '\u{A03E}', '\u{A03F}',
- '\u{A040}', '\u{A041}', '\u{A042}', '\u{A043}', '\u{A044}', '\u{A045}', '\u{A046}', '\u{A047}',
- '\u{A048}', '\u{A049}', '\u{A04A}', '\u{A04B}', '\u{A04C}', '\u{A04D}', '\u{A04E}', '\u{A04F}',
- '\u{A050}', '\u{A051}', '\u{A052}', '\u{A053}', '\u{A054}', '\u{A055}', '\u{A056}', '\u{A057}',
- '\u{A058}', '\u{A059}', '\u{A05A}', '\u{A05B}', '\u{A05C}', '\u{A05D}', '\u{A05E}', '\u{A05F}',
- '\u{A060}', '\u{A061}', '\u{A062}', '\u{A063}', '\u{A064}', '\u{A065}', '\u{A066}', '\u{A067}',
- '\u{A068}', '\u{A069}', '\u{A06A}', '\u{A06B}', '\u{A06C}', '\u{A06D}', '\u{A06E}', '\u{A06F}',
- '\u{A070}', '\u{A071}', '\u{A072}', '\u{A073}', '\u{A074}', '\u{A075}', '\u{A076}', '\u{A077}',
- '\u{A078}', '\u{A079}', '\u{A07A}', '\u{A07B}', '\u{A07C}', '\u{A07D}', '\u{A07E}', '\u{A07F}',
- '\u{A080}', '\u{A081}', '\u{A082}', '\u{A083}', '\u{A084}', '\u{A085}', '\u{A086}', '\u{A087}',
- '\u{A088}', '\u{A089}', '\u{A08A}', '\u{A08B}', '\u{A08C}', '\u{A08D}', '\u{A08E}', '\u{A08F}',
- '\u{A090}', '\u{A091}', '\u{A092}', '\u{A093}', '\u{A094}', '\u{A095}', '\u{A096}', '\u{A097}',
- '\u{A098}', '\u{A099}', '\u{A09A}', '\u{A09B}', '\u{A09C}', '\u{A09D}', '\u{A09E}', '\u{A09F}',
- '\u{A0A0}', '\u{A0A1}', '\u{A0A2}', '\u{A0A3}', '\u{A0A4}', '\u{A0A5}', '\u{A0A6}', '\u{A0A7}',
- '\u{A0A8}', '\u{A0A9}', '\u{A0AA}', '\u{A0AB}', '\u{A0AC}', '\u{A0AD}', '\u{A0AE}', '\u{A0AF}',
- '\u{A0B0}', '\u{A0B1}', '\u{A0B2}', '\u{A0B3}', '\u{A0B4}', '\u{A0B5}', '\u{A0B6}', '\u{A0B7}',
- '\u{A0B8}', '\u{A0B9}', '\u{A0BA}', '\u{A0BB}', '\u{A0BC}', '\u{A0BD}', '\u{A0BE}', '\u{A0BF}',
- '\u{A0C0}', '\u{A0C1}', '\u{A0C2}', '\u{A0C3}', '\u{A0C4}', '\u{A0C5}', '\u{A0C6}', '\u{A0C7}',
- '\u{A0C8}', '\u{A0C9}', '\u{A0CA}', '\u{A0CB}', '\u{A0CC}', '\u{A0CD}', '\u{A0CE}', '\u{A0CF}',
- '\u{A0D0}', '\u{A0D1}', '\u{A0D2}', '\u{A0D3}', '\u{A0D4}', '\u{A0D5}', '\u{A0D6}', '\u{A0D7}',
- '\u{A0D8}', '\u{A0D9}', '\u{A0DA}', '\u{A0DB}', '\u{A0DC}', '\u{A0DD}', '\u{A0DE}', '\u{A0DF}',
- '\u{A0E0}', '\u{A0E1}', '\u{A0E2}', '\u{A0E3}', '\u{A0E4}', '\u{A0E5}', '\u{A0E6}', '\u{A0E7}',
- '\u{A0E8}', '\u{A0E9}', '\u{A0EA}', '\u{A0EB}', '\u{A0EC}', '\u{A0ED}', '\u{A0EE}', '\u{A0EF}',
- '\u{A0F0}', '\u{A0F1}', '\u{A0F2}', '\u{A0F3}', '\u{A0F4}', '\u{A0F5}', '\u{A0F6}', '\u{A0F7}',
- '\u{A0F8}', '\u{A0F9}', '\u{A0FA}', '\u{A0FB}', '\u{A0FC}', '\u{A0FD}', '\u{A0FE}', '\u{A0FF}',
- '\u{A100}', '\u{A101}', '\u{A102}', '\u{A103}', '\u{A104}', '\u{A105}', '\u{A106}', '\u{A107}',
- '\u{A108}', '\u{A109}', '\u{A10A}', '\u{A10B}', '\u{A10C}', '\u{A10D}', '\u{A10E}', '\u{A10F}',
- '\u{A110}', '\u{A111}', '\u{A112}', '\u{A113}', '\u{A114}', '\u{A115}', '\u{A116}', '\u{A117}',
- '\u{A118}', '\u{A119}', '\u{A11A}', '\u{A11B}', '\u{A11C}', '\u{A11D}', '\u{A11E}', '\u{A11F}',
- '\u{A120}', '\u{A121}', '\u{A122}', '\u{A123}', '\u{A124}', '\u{A125}', '\u{A126}', '\u{A127}',
- '\u{A128}', '\u{A129}', '\u{A12A}', '\u{A12B}', '\u{A12C}', '\u{A12D}', '\u{A12E}', '\u{A12F}',
- '\u{A130}', '\u{A131}', '\u{A132}', '\u{A133}', '\u{A134}', '\u{A135}', '\u{A136}', '\u{A137}',
- '\u{A138}', '\u{A139}', '\u{A13A}', '\u{A13B}', '\u{A13C}', '\u{A13D}', '\u{A13E}', '\u{A13F}',
- '\u{A140}', '\u{A141}', '\u{A142}', '\u{A143}', '\u{A144}', '\u{A145}', '\u{A146}', '\u{A147}',
- '\u{A148}', '\u{A149}', '\u{A14A}', '\u{A14B}', '\u{A14C}', '\u{A14D}', '\u{A14E}', '\u{A14F}',
- '\u{A150}', '\u{A151}', '\u{A152}', '\u{A153}', '\u{A154}', '\u{A155}', '\u{A156}', '\u{A157}',
- '\u{A158}', '\u{A159}', '\u{A15A}', '\u{A15B}', '\u{A15C}', '\u{A15D}', '\u{A15E}', '\u{A15F}',
- '\u{A160}', '\u{A161}', '\u{A162}', '\u{A163}', '\u{A164}', '\u{A165}', '\u{A166}', '\u{A167}',
- '\u{A168}', '\u{A169}', '\u{A16A}', '\u{A16B}', '\u{A16C}', '\u{A16D}', '\u{A16E}', '\u{A16F}',
- '\u{A170}', '\u{A171}', '\u{A172}', '\u{A173}', '\u{A174}', '\u{A175}', '\u{A176}', '\u{A177}',
- '\u{A178}', '\u{A179}', '\u{A17A}', '\u{A17B}', '\u{A17C}', '\u{A17D}', '\u{A17E}', '\u{A17F}',
- '\u{A180}', '\u{A181}', '\u{A182}', '\u{A183}', '\u{A184}', '\u{A185}', '\u{A186}', '\u{A187}',
- '\u{A188}', '\u{A189}', '\u{A18A}', '\u{A18B}', '\u{A18C}', '\u{A18D}', '\u{A18E}', '\u{A18F}',
- '\u{A190}', '\u{A191}', '\u{A192}', '\u{A193}', '\u{A194}', '\u{A195}', '\u{A196}', '\u{A197}',
- '\u{A198}', '\u{A199}', '\u{A19A}', '\u{A19B}', '\u{A19C}', '\u{A19D}', '\u{A19E}', '\u{A19F}',
- '\u{A1A0}', '\u{A1A1}', '\u{A1A2}', '\u{A1A3}', '\u{A1A4}', '\u{A1A5}', '\u{A1A6}', '\u{A1A7}',
- '\u{A1A8}', '\u{A1A9}', '\u{A1AA}', '\u{A1AB}', '\u{A1AC}', '\u{A1AD}', '\u{A1AE}', '\u{A1AF}',
- '\u{A1B0}', '\u{A1B1}', '\u{A1B2}', '\u{A1B3}', '\u{A1B4}', '\u{A1B5}', '\u{A1B6}', '\u{A1B7}',
- '\u{A1B8}', '\u{A1B9}', '\u{A1BA}', '\u{A1BB}', '\u{A1BC}', '\u{A1BD}', '\u{A1BE}', '\u{A1BF}',
- '\u{A1C0}', '\u{A1C1}', '\u{A1C2}', '\u{A1C3}', '\u{A1C4}', '\u{A1C5}', '\u{A1C6}', '\u{A1C7}',
- '\u{A1C8}', '\u{A1C9}', '\u{A1CA}', '\u{A1CB}', '\u{A1CC}', '\u{A1CD}', '\u{A1CE}', '\u{A1CF}',
- '\u{A1D0}', '\u{A1D1}', '\u{A1D2}', '\u{A1D3}', '\u{A1D4}', '\u{A1D5}', '\u{A1D6}', '\u{A1D7}',
- '\u{A1D8}', '\u{A1D9}', '\u{A1DA}', '\u{A1DB}', '\u{A1DC}', '\u{A1DD}', '\u{A1DE}', '\u{A1DF}',
- '\u{A1E0}', '\u{A1E1}', '\u{A1E2}', '\u{A1E3}', '\u{A1E4}', '\u{A1E5}', '\u{A1E6}', '\u{A1E7}',
- '\u{A1E8}', '\u{A1E9}', '\u{A1EA}', '\u{A1EB}', '\u{A1EC}', '\u{A1ED}', '\u{A1EE}', '\u{A1EF}',
- '\u{A1F0}', '\u{A1F1}', '\u{A1F2}', '\u{A1F3}', '\u{A1F4}', '\u{A1F5}', '\u{A1F6}', '\u{A1F7}',
- '\u{A1F8}', '\u{A1F9}', '\u{A1FA}', '\u{A1FB}', '\u{A1FC}', '\u{A1FD}', '\u{A1FE}', '\u{A1FF}',
- '\u{A200}', '\u{A201}', '\u{A202}', '\u{A203}', '\u{A204}', '\u{A205}', '\u{A206}', '\u{A207}',
- '\u{A208}', '\u{A209}', '\u{A20A}', '\u{A20B}', '\u{A20C}', '\u{A20D}', '\u{A20E}', '\u{A20F}',
- '\u{A210}', '\u{A211}', '\u{A212}', '\u{A213}', '\u{A214}', '\u{A215}', '\u{A216}', '\u{A217}',
- '\u{A218}', '\u{A219}', '\u{A21A}', '\u{A21B}', '\u{A21C}', '\u{A21D}', '\u{A21E}', '\u{A21F}',
- '\u{A220}', '\u{A221}', '\u{A222}', '\u{A223}', '\u{A224}', '\u{A225}', '\u{A226}', '\u{A227}',
- '\u{A228}', '\u{A229}', '\u{A22A}', '\u{A22B}', '\u{A22C}', '\u{A22D}', '\u{A22E}', '\u{A22F}',
- '\u{A230}', '\u{A231}', '\u{A232}', '\u{A233}', '\u{A234}', '\u{A235}', '\u{A236}', '\u{A237}',
- '\u{A238}', '\u{A239}', '\u{A23A}', '\u{A23B}', '\u{A23C}', '\u{A23D}', '\u{A23E}', '\u{A23F}',
- '\u{A240}', '\u{A241}', '\u{A242}', '\u{A243}', '\u{A244}', '\u{A245}', '\u{A246}', '\u{A247}',
- '\u{A248}', '\u{A249}', '\u{A24A}', '\u{A24B}', '\u{A24C}', '\u{A24D}', '\u{A24E}', '\u{A24F}',
- '\u{A250}', '\u{A251}', '\u{A252}', '\u{A253}', '\u{A254}', '\u{A255}', '\u{A256}', '\u{A257}',
- '\u{A258}', '\u{A259}', '\u{A25A}', '\u{A25B}', '\u{A25C}', '\u{A25D}', '\u{A25E}', '\u{A25F}',
- '\u{A260}', '\u{A261}', '\u{A262}', '\u{A263}', '\u{A264}', '\u{A265}', '\u{A266}', '\u{A267}',
- '\u{A268}', '\u{A269}', '\u{A26A}', '\u{A26B}', '\u{A26C}', '\u{A26D}', '\u{A26E}', '\u{A26F}',
- '\u{A270}', '\u{A271}', '\u{A272}', '\u{A273}', '\u{A274}', '\u{A275}', '\u{A276}', '\u{A277}',
- '\u{A278}', '\u{A279}', '\u{A27A}', '\u{A27B}', '\u{A27C}', '\u{A27D}', '\u{A27E}', '\u{A27F}',
- '\u{A280}', '\u{A281}', '\u{A282}', '\u{A283}', '\u{A284}', '\u{A285}', '\u{A286}', '\u{A287}',
- '\u{A288}', '\u{A289}', '\u{A28A}', '\u{A28B}', '\u{A28C}', '\u{A28D}', '\u{A28E}', '\u{A28F}',
- '\u{A290}', '\u{A291}', '\u{A292}', '\u{A293}', '\u{A294}', '\u{A295}', '\u{A296}', '\u{A297}',
- '\u{A298}', '\u{A299}', '\u{A29A}', '\u{A29B}', '\u{A29C}', '\u{A29D}', '\u{A29E}', '\u{A29F}',
- '\u{A2A0}', '\u{A2A1}', '\u{A2A2}', '\u{A2A3}', '\u{A2A4}', '\u{A2A5}', '\u{A2A6}', '\u{A2A7}',
- '\u{A2A8}', '\u{A2A9}', '\u{A2AA}', '\u{A2AB}', '\u{A2AC}', '\u{A2AD}', '\u{A2AE}', '\u{A2AF}',
- '\u{A2B0}', '\u{A2B1}', '\u{A2B2}', '\u{A2B3}', '\u{A2B4}', '\u{A2B5}', '\u{A2B6}', '\u{A2B7}',
- '\u{A2B8}', '\u{A2B9}', '\u{A2BA}', '\u{A2BB}', '\u{A2BC}', '\u{A2BD}', '\u{A2BE}', '\u{A2BF}',
- '\u{A2C0}', '\u{A2C1}', '\u{A2C2}', '\u{A2C3}', '\u{A2C4}', '\u{A2C5}', '\u{A2C6}', '\u{A2C7}',
- '\u{A2C8}', '\u{A2C9}', '\u{A2CA}', '\u{A2CB}', '\u{A2CC}', '\u{A2CD}', '\u{A2CE}', '\u{A2CF}',
- '\u{A2D0}', '\u{A2D1}', '\u{A2D2}', '\u{A2D3}', '\u{A2D4}', '\u{A2D5}', '\u{A2D6}', '\u{A2D7}',
- '\u{A2D8}', '\u{A2D9}', '\u{A2DA}', '\u{A2DB}', '\u{A2DC}', '\u{A2DD}', '\u{A2DE}', '\u{A2DF}',
- '\u{A2E0}', '\u{A2E1}', '\u{A2E2}', '\u{A2E3}', '\u{A2E4}', '\u{A2E5}', '\u{A2E6}', '\u{A2E7}',
- '\u{A2E8}', '\u{A2E9}', '\u{A2EA}', '\u{A2EB}', '\u{A2EC}', '\u{A2ED}', '\u{A2EE}', '\u{A2EF}',
- '\u{A2F0}', '\u{A2F1}', '\u{A2F2}', '\u{A2F3}', '\u{A2F4}', '\u{A2F5}', '\u{A2F6}', '\u{A2F7}',
- '\u{A2F8}', '\u{A2F9}', '\u{A2FA}', '\u{A2FB}', '\u{A2FC}', '\u{A2FD}', '\u{A2FE}', '\u{A2FF}',
- '\u{A300}', '\u{A301}', '\u{A302}', '\u{A303}', '\u{A304}', '\u{A305}', '\u{A306}', '\u{A307}',
- '\u{A308}', '\u{A309}', '\u{A30A}', '\u{A30B}', '\u{A30C}', '\u{A30D}', '\u{A30E}', '\u{A30F}',
- '\u{A310}', '\u{A311}', '\u{A312}', '\u{A313}', '\u{A314}', '\u{A315}', '\u{A316}', '\u{A317}',
- '\u{A318}', '\u{A319}', '\u{A31A}', '\u{A31B}', '\u{A31C}', '\u{A31D}', '\u{A31E}', '\u{A31F}',
- '\u{A320}', '\u{A321}', '\u{A322}', '\u{A323}', '\u{A324}', '\u{A325}', '\u{A326}', '\u{A327}',
- '\u{A328}', '\u{A329}', '\u{A32A}', '\u{A32B}', '\u{A32C}', '\u{A32D}', '\u{A32E}', '\u{A32F}',
- '\u{A330}', '\u{A331}', '\u{A332}', '\u{A333}', '\u{A334}', '\u{A335}', '\u{A336}', '\u{A337}',
- '\u{A338}', '\u{A339}', '\u{A33A}', '\u{A33B}', '\u{A33C}', '\u{A33D}', '\u{A33E}', '\u{A33F}',
- '\u{A340}', '\u{A341}', '\u{A342}', '\u{A343}', '\u{A344}', '\u{A345}', '\u{A346}', '\u{A347}',
- '\u{A348}', '\u{A349}', '\u{A34A}', '\u{A34B}', '\u{A34C}', '\u{A34D}', '\u{A34E}', '\u{A34F}',
- '\u{A350}', '\u{A351}', '\u{A352}', '\u{A353}', '\u{A354}', '\u{A355}', '\u{A356}', '\u{A357}',
- '\u{A358}', '\u{A359}', '\u{A35A}', '\u{A35B}', '\u{A35C}', '\u{A35D}', '\u{A35E}', '\u{A35F}',
- '\u{A360}', '\u{A361}', '\u{A362}', '\u{A363}', '\u{A364}', '\u{A365}', '\u{A366}', '\u{A367}',
- '\u{A368}', '\u{A369}', '\u{A36A}', '\u{A36B}', '\u{A36C}', '\u{A36D}', '\u{A36E}', '\u{A36F}',
- '\u{A370}', '\u{A371}', '\u{A372}', '\u{A373}', '\u{A374}', '\u{A375}', '\u{A376}', '\u{A377}',
- '\u{A378}', '\u{A379}', '\u{A37A}', '\u{A37B}', '\u{A37C}', '\u{A37D}', '\u{A37E}', '\u{A37F}',
- '\u{A380}', '\u{A381}', '\u{A382}', '\u{A383}', '\u{A384}', '\u{A385}', '\u{A386}', '\u{A387}',
- '\u{A388}', '\u{A389}', '\u{A38A}', '\u{A38B}', '\u{A38C}', '\u{A38D}', '\u{A38E}', '\u{A38F}',
- '\u{A390}', '\u{A391}', '\u{A392}', '\u{A393}', '\u{A394}', '\u{A395}', '\u{A396}', '\u{A397}',
- '\u{A398}', '\u{A399}', '\u{A39A}', '\u{A39B}', '\u{A39C}', '\u{A39D}', '\u{A39E}', '\u{A39F}',
- '\u{A3A0}', '\u{A3A1}', '\u{A3A2}', '\u{A3A3}', '\u{A3A4}', '\u{A3A5}', '\u{A3A6}', '\u{A3A7}',
- '\u{A3A8}', '\u{A3A9}', '\u{A3AA}', '\u{A3AB}', '\u{A3AC}', '\u{A3AD}', '\u{A3AE}', '\u{A3AF}',
- '\u{A3B0}', '\u{A3B1}', '\u{A3B2}', '\u{A3B3}', '\u{A3B4}', '\u{A3B5}', '\u{A3B6}', '\u{A3B7}',
- '\u{A3B8}', '\u{A3B9}', '\u{A3BA}', '\u{A3BB}', '\u{A3BC}', '\u{A3BD}', '\u{A3BE}', '\u{A3BF}',
- '\u{A3C0}', '\u{A3C1}', '\u{A3C2}', '\u{A3C3}', '\u{A3C4}', '\u{A3C5}', '\u{A3C6}', '\u{A3C7}',
- '\u{A3C8}', '\u{A3C9}', '\u{A3CA}', '\u{A3CB}', '\u{A3CC}', '\u{A3CD}', '\u{A3CE}', '\u{A3CF}',
- '\u{A3D0}', '\u{A3D1}', '\u{A3D2}', '\u{A3D3}', '\u{A3D4}', '\u{A3D5}', '\u{A3D6}', '\u{A3D7}',
- '\u{A3D8}', '\u{A3D9}', '\u{A3DA}', '\u{A3DB}', '\u{A3DC}', '\u{A3DD}', '\u{A3DE}', '\u{A3DF}',
- '\u{A3E0}', '\u{A3E1}', '\u{A3E2}', '\u{A3E3}', '\u{A3E4}', '\u{A3E5}', '\u{A3E6}', '\u{A3E7}',
- '\u{A3E8}', '\u{A3E9}', '\u{A3EA}', '\u{A3EB}', '\u{A3EC}', '\u{A3ED}', '\u{A3EE}', '\u{A3EF}',
- '\u{A3F0}', '\u{A3F1}', '\u{A3F2}', '\u{A3F3}', '\u{A3F4}', '\u{A3F5}', '\u{A3F6}', '\u{A3F7}',
- '\u{A3F8}', '\u{A3F9}', '\u{A3FA}', '\u{A3FB}', '\u{A3FC}', '\u{A3FD}', '\u{A3FE}', '\u{A3FF}',
- '\u{A400}', '\u{A401}', '\u{A402}', '\u{A403}', '\u{A404}', '\u{A405}', '\u{A406}', '\u{A407}',
- '\u{A408}', '\u{A409}', '\u{A40A}', '\u{A40B}', '\u{A40C}', '\u{A40D}', '\u{A40E}', '\u{A40F}',
- '\u{A410}', '\u{A411}', '\u{A412}', '\u{A413}', '\u{A414}', '\u{A415}', '\u{A416}', '\u{A417}',
- '\u{A418}', '\u{A419}', '\u{A41A}', '\u{A41B}', '\u{A41C}', '\u{A41D}', '\u{A41E}', '\u{A41F}',
- '\u{A420}', '\u{A421}', '\u{A422}', '\u{A423}', '\u{A424}', '\u{A425}', '\u{A426}', '\u{A427}',
- '\u{A428}', '\u{A429}', '\u{A42A}', '\u{A42B}', '\u{A42C}', '\u{A42D}', '\u{A42E}', '\u{A42F}',
- '\u{A430}', '\u{A431}', '\u{A432}', '\u{A433}', '\u{A434}', '\u{A435}', '\u{A436}', '\u{A437}',
- '\u{A438}', '\u{A439}', '\u{A43A}', '\u{A43B}', '\u{A43C}', '\u{A43D}', '\u{A43E}', '\u{A43F}',
- '\u{A440}', '\u{A441}', '\u{A442}', '\u{A443}', '\u{A444}', '\u{A445}', '\u{A446}', '\u{A447}',
- '\u{A448}', '\u{A449}', '\u{A44A}', '\u{A44B}', '\u{A44C}', '\u{A44D}', '\u{A44E}', '\u{A44F}',
- '\u{A450}', '\u{A451}', '\u{A452}', '\u{A453}', '\u{A454}', '\u{A455}', '\u{A456}', '\u{A457}',
- '\u{A458}', '\u{A459}', '\u{A45A}', '\u{A45B}', '\u{A45C}', '\u{A45D}', '\u{A45E}', '\u{A45F}',
- '\u{A460}', '\u{A461}', '\u{A462}', '\u{A463}', '\u{A464}', '\u{A465}', '\u{A466}', '\u{A467}',
- '\u{A468}', '\u{A469}', '\u{A46A}', '\u{A46B}', '\u{A46C}', '\u{A46D}', '\u{A46E}', '\u{A46F}',
- '\u{A470}', '\u{A471}', '\u{A472}', '\u{A473}', '\u{A474}', '\u{A475}', '\u{A476}', '\u{A477}',
- '\u{A478}', '\u{A479}', '\u{A47A}', '\u{A47B}', '\u{A47C}', '\u{A47D}', '\u{A47E}', '\u{A47F}',
- '\u{A480}', '\u{A481}', '\u{A482}', '\u{A483}', '\u{A484}', '\u{A485}', '\u{A486}', '\u{A487}',
- '\u{A488}', '\u{A489}', '\u{A48A}', '\u{A48B}', '\u{A48C}', '\u{A4D0}', '\u{A4D1}', '\u{A4D2}',
- '\u{A4D3}', '\u{A4D4}', '\u{A4D5}', '\u{A4D6}', '\u{A4D7}', '\u{A4D8}', '\u{A4D9}', '\u{A4DA}',
- '\u{A4DB}', '\u{A4DC}', '\u{A4DD}', '\u{A4DE}', '\u{A4DF}', '\u{A4E0}', '\u{A4E1}', '\u{A4E2}',
- '\u{A4E3}', '\u{A4E4}', '\u{A4E5}', '\u{A4E6}', '\u{A4E7}', '\u{A4E8}', '\u{A4E9}', '\u{A4EA}',
- '\u{A4EB}', '\u{A4EC}', '\u{A4ED}', '\u{A4EE}', '\u{A4EF}', '\u{A4F0}', '\u{A4F1}', '\u{A4F2}',
- '\u{A4F3}', '\u{A4F4}', '\u{A4F5}', '\u{A4F6}', '\u{A4F7}', '\u{A500}', '\u{A501}', '\u{A502}',
- '\u{A503}', '\u{A504}', '\u{A505}', '\u{A506}', '\u{A507}', '\u{A508}', '\u{A509}', '\u{A50A}',
- '\u{A50B}', '\u{A50C}', '\u{A50D}', '\u{A50E}', '\u{A50F}', '\u{A510}', '\u{A511}', '\u{A512}',
- '\u{A513}', '\u{A514}', '\u{A515}', '\u{A516}', '\u{A517}', '\u{A518}', '\u{A519}', '\u{A51A}',
- '\u{A51B}', '\u{A51C}', '\u{A51D}', '\u{A51E}', '\u{A51F}', '\u{A520}', '\u{A521}', '\u{A522}',
- '\u{A523}', '\u{A524}', '\u{A525}', '\u{A526}', '\u{A527}', '\u{A528}', '\u{A529}', '\u{A52A}',
- '\u{A52B}', '\u{A52C}', '\u{A52D}', '\u{A52E}', '\u{A52F}', '\u{A530}', '\u{A531}', '\u{A532}',
- '\u{A533}', '\u{A534}', '\u{A535}', '\u{A536}', '\u{A537}', '\u{A538}', '\u{A539}', '\u{A53A}',
- '\u{A53B}', '\u{A53C}', '\u{A53D}', '\u{A53E}', '\u{A53F}', '\u{A540}', '\u{A541}', '\u{A542}',
- '\u{A543}', '\u{A544}', '\u{A545}', '\u{A546}', '\u{A547}', '\u{A548}', '\u{A549}', '\u{A54A}',
- '\u{A54B}', '\u{A54C}', '\u{A54D}', '\u{A54E}', '\u{A54F}', '\u{A550}', '\u{A551}', '\u{A552}',
- '\u{A553}', '\u{A554}', '\u{A555}', '\u{A556}', '\u{A557}', '\u{A558}', '\u{A559}', '\u{A55A}',
- '\u{A55B}', '\u{A55C}', '\u{A55D}', '\u{A55E}', '\u{A55F}', '\u{A560}', '\u{A561}', '\u{A562}',
- '\u{A563}', '\u{A564}', '\u{A565}', '\u{A566}', '\u{A567}', '\u{A568}', '\u{A569}', '\u{A56A}',
- '\u{A56B}', '\u{A56C}', '\u{A56D}', '\u{A56E}', '\u{A56F}', '\u{A570}', '\u{A571}', '\u{A572}',
- '\u{A573}', '\u{A574}', '\u{A575}', '\u{A576}', '\u{A577}', '\u{A578}', '\u{A579}', '\u{A57A}',
- '\u{A57B}', '\u{A57C}', '\u{A57D}', '\u{A57E}', '\u{A57F}', '\u{A580}', '\u{A581}', '\u{A582}',
- '\u{A583}', '\u{A584}', '\u{A585}', '\u{A586}', '\u{A587}', '\u{A588}', '\u{A589}', '\u{A58A}',
- '\u{A58B}', '\u{A58C}', '\u{A58D}', '\u{A58E}', '\u{A58F}', '\u{A590}', '\u{A591}', '\u{A592}',
- '\u{A593}', '\u{A594}', '\u{A595}', '\u{A596}', '\u{A597}', '\u{A598}', '\u{A599}', '\u{A59A}',
- '\u{A59B}', '\u{A59C}', '\u{A59D}', '\u{A59E}', '\u{A59F}', '\u{A5A0}', '\u{A5A1}', '\u{A5A2}',
- '\u{A5A3}', '\u{A5A4}', '\u{A5A5}', '\u{A5A6}', '\u{A5A7}', '\u{A5A8}', '\u{A5A9}', '\u{A5AA}',
- '\u{A5AB}', '\u{A5AC}', '\u{A5AD}', '\u{A5AE}', '\u{A5AF}', '\u{A5B0}', '\u{A5B1}', '\u{A5B2}',
- '\u{A5B3}', '\u{A5B4}', '\u{A5B5}', '\u{A5B6}', '\u{A5B7}', '\u{A5B8}', '\u{A5B9}', '\u{A5BA}',
- '\u{A5BB}', '\u{A5BC}', '\u{A5BD}', '\u{A5BE}', '\u{A5BF}', '\u{A5C0}', '\u{A5C1}', '\u{A5C2}',
- '\u{A5C3}', '\u{A5C4}', '\u{A5C5}', '\u{A5C6}', '\u{A5C7}', '\u{A5C8}', '\u{A5C9}', '\u{A5CA}',
- '\u{A5CB}', '\u{A5CC}', '\u{A5CD}', '\u{A5CE}', '\u{A5CF}', '\u{A5D0}', '\u{A5D1}', '\u{A5D2}',
- '\u{A5D3}', '\u{A5D4}', '\u{A5D5}', '\u{A5D6}', '\u{A5D7}', '\u{A5D8}', '\u{A5D9}', '\u{A5DA}',
- '\u{A5DB}', '\u{A5DC}', '\u{A5DD}', '\u{A5DE}', '\u{A5DF}', '\u{A5E0}', '\u{A5E1}', '\u{A5E2}',
- '\u{A5E3}', '\u{A5E4}', '\u{A5E5}', '\u{A5E6}', '\u{A5E7}', '\u{A5E8}', '\u{A5E9}', '\u{A5EA}',
- '\u{A5EB}', '\u{A5EC}', '\u{A5ED}', '\u{A5EE}', '\u{A5EF}', '\u{A5F0}', '\u{A5F1}', '\u{A5F2}',
- '\u{A5F3}', '\u{A5F4}', '\u{A5F5}', '\u{A5F6}', '\u{A5F7}', '\u{A5F8}', '\u{A5F9}', '\u{A5FA}',
- '\u{A5FB}', '\u{A5FC}', '\u{A5FD}', '\u{A5FE}', '\u{A5FF}', '\u{A600}', '\u{A601}', '\u{A602}',
- '\u{A603}', '\u{A604}', '\u{A605}', '\u{A606}', '\u{A607}', '\u{A608}', '\u{A609}', '\u{A60A}',
- '\u{A60B}', '\u{A610}', '\u{A611}', '\u{A612}', '\u{A613}', '\u{A614}', '\u{A615}', '\u{A616}',
- '\u{A617}', '\u{A618}', '\u{A619}', '\u{A61A}', '\u{A61B}', '\u{A61C}', '\u{A61D}', '\u{A61E}',
- '\u{A61F}', '\u{A62A}', '\u{A62B}', '\u{A66E}', '\u{A6A0}', '\u{A6A1}', '\u{A6A2}', '\u{A6A3}',
- '\u{A6A4}', '\u{A6A5}', '\u{A6A6}', '\u{A6A7}', '\u{A6A8}', '\u{A6A9}', '\u{A6AA}', '\u{A6AB}',
- '\u{A6AC}', '\u{A6AD}', '\u{A6AE}', '\u{A6AF}', '\u{A6B0}', '\u{A6B1}', '\u{A6B2}', '\u{A6B3}',
- '\u{A6B4}', '\u{A6B5}', '\u{A6B6}', '\u{A6B7}', '\u{A6B8}', '\u{A6B9}', '\u{A6BA}', '\u{A6BB}',
- '\u{A6BC}', '\u{A6BD}', '\u{A6BE}', '\u{A6BF}', '\u{A6C0}', '\u{A6C1}', '\u{A6C2}', '\u{A6C3}',
- '\u{A6C4}', '\u{A6C5}', '\u{A6C6}', '\u{A6C7}', '\u{A6C8}', '\u{A6C9}', '\u{A6CA}', '\u{A6CB}',
- '\u{A6CC}', '\u{A6CD}', '\u{A6CE}', '\u{A6CF}', '\u{A6D0}', '\u{A6D1}', '\u{A6D2}', '\u{A6D3}',
- '\u{A6D4}', '\u{A6D5}', '\u{A6D6}', '\u{A6D7}', '\u{A6D8}', '\u{A6D9}', '\u{A6DA}', '\u{A6DB}',
- '\u{A6DC}', '\u{A6DD}', '\u{A6DE}', '\u{A6DF}', '\u{A6E0}', '\u{A6E1}', '\u{A6E2}', '\u{A6E3}',
- '\u{A6E4}', '\u{A6E5}', '\u{A78F}', '\u{A7F7}', '\u{A7FB}', '\u{A7FC}', '\u{A7FD}', '\u{A7FE}',
- '\u{A7FF}', '\u{A800}', '\u{A801}', '\u{A803}', '\u{A804}', '\u{A805}', '\u{A807}', '\u{A808}',
- '\u{A809}', '\u{A80A}', '\u{A80C}', '\u{A80D}', '\u{A80E}', '\u{A80F}', '\u{A810}', '\u{A811}',
- '\u{A812}', '\u{A813}', '\u{A814}', '\u{A815}', '\u{A816}', '\u{A817}', '\u{A818}', '\u{A819}',
- '\u{A81A}', '\u{A81B}', '\u{A81C}', '\u{A81D}', '\u{A81E}', '\u{A81F}', '\u{A820}', '\u{A821}',
- '\u{A822}', '\u{A840}', '\u{A841}', '\u{A842}', '\u{A843}', '\u{A844}', '\u{A845}', '\u{A846}',
- '\u{A847}', '\u{A848}', '\u{A849}', '\u{A84A}', '\u{A84B}', '\u{A84C}', '\u{A84D}', '\u{A84E}',
- '\u{A84F}', '\u{A850}', '\u{A851}', '\u{A852}', '\u{A853}', '\u{A854}', '\u{A855}', '\u{A856}',
- '\u{A857}', '\u{A858}', '\u{A859}', '\u{A85A}', '\u{A85B}', '\u{A85C}', '\u{A85D}', '\u{A85E}',
- '\u{A85F}', '\u{A860}', '\u{A861}', '\u{A862}', '\u{A863}', '\u{A864}', '\u{A865}', '\u{A866}',
- '\u{A867}', '\u{A868}', '\u{A869}', '\u{A86A}', '\u{A86B}', '\u{A86C}', '\u{A86D}', '\u{A86E}',
- '\u{A86F}', '\u{A870}', '\u{A871}', '\u{A872}', '\u{A873}', '\u{A882}', '\u{A883}', '\u{A884}',
- '\u{A885}', '\u{A886}', '\u{A887}', '\u{A888}', '\u{A889}', '\u{A88A}', '\u{A88B}', '\u{A88C}',
- '\u{A88D}', '\u{A88E}', '\u{A88F}', '\u{A890}', '\u{A891}', '\u{A892}', '\u{A893}', '\u{A894}',
- '\u{A895}', '\u{A896}', '\u{A897}', '\u{A898}', '\u{A899}', '\u{A89A}', '\u{A89B}', '\u{A89C}',
- '\u{A89D}', '\u{A89E}', '\u{A89F}', '\u{A8A0}', '\u{A8A1}', '\u{A8A2}', '\u{A8A3}', '\u{A8A4}',
- '\u{A8A5}', '\u{A8A6}', '\u{A8A7}', '\u{A8A8}', '\u{A8A9}', '\u{A8AA}', '\u{A8AB}', '\u{A8AC}',
- '\u{A8AD}', '\u{A8AE}', '\u{A8AF}', '\u{A8B0}', '\u{A8B1}', '\u{A8B2}', '\u{A8B3}', '\u{A8F2}',
- '\u{A8F3}', '\u{A8F4}', '\u{A8F5}', '\u{A8F6}', '\u{A8F7}', '\u{A8FB}', '\u{A8FD}', '\u{A90A}',
- '\u{A90B}', '\u{A90C}', '\u{A90D}', '\u{A90E}', '\u{A90F}', '\u{A910}', '\u{A911}', '\u{A912}',
- '\u{A913}', '\u{A914}', '\u{A915}', '\u{A916}', '\u{A917}', '\u{A918}', '\u{A919}', '\u{A91A}',
- '\u{A91B}', '\u{A91C}', '\u{A91D}', '\u{A91E}', '\u{A91F}', '\u{A920}', '\u{A921}', '\u{A922}',
- '\u{A923}', '\u{A924}', '\u{A925}', '\u{A930}', '\u{A931}', '\u{A932}', '\u{A933}', '\u{A934}',
- '\u{A935}', '\u{A936}', '\u{A937}', '\u{A938}', '\u{A939}', '\u{A93A}', '\u{A93B}', '\u{A93C}',
- '\u{A93D}', '\u{A93E}', '\u{A93F}', '\u{A940}', '\u{A941}', '\u{A942}', '\u{A943}', '\u{A944}',
- '\u{A945}', '\u{A946}', '\u{A960}', '\u{A961}', '\u{A962}', '\u{A963}', '\u{A964}', '\u{A965}',
- '\u{A966}', '\u{A967}', '\u{A968}', '\u{A969}', '\u{A96A}', '\u{A96B}', '\u{A96C}', '\u{A96D}',
- '\u{A96E}', '\u{A96F}', '\u{A970}', '\u{A971}', '\u{A972}', '\u{A973}', '\u{A974}', '\u{A975}',
- '\u{A976}', '\u{A977}', '\u{A978}', '\u{A979}', '\u{A97A}', '\u{A97B}', '\u{A97C}', '\u{A984}',
- '\u{A985}', '\u{A986}', '\u{A987}', '\u{A988}', '\u{A989}', '\u{A98A}', '\u{A98B}', '\u{A98C}',
- '\u{A98D}', '\u{A98E}', '\u{A98F}', '\u{A990}', '\u{A991}', '\u{A992}', '\u{A993}', '\u{A994}',
- '\u{A995}', '\u{A996}', '\u{A997}', '\u{A998}', '\u{A999}', '\u{A99A}', '\u{A99B}', '\u{A99C}',
- '\u{A99D}', '\u{A99E}', '\u{A99F}', '\u{A9A0}', '\u{A9A1}', '\u{A9A2}', '\u{A9A3}', '\u{A9A4}',
- '\u{A9A5}', '\u{A9A6}', '\u{A9A7}', '\u{A9A8}', '\u{A9A9}', '\u{A9AA}', '\u{A9AB}', '\u{A9AC}',
- '\u{A9AD}', '\u{A9AE}', '\u{A9AF}', '\u{A9B0}', '\u{A9B1}', '\u{A9B2}', '\u{A9E0}', '\u{A9E1}',
- '\u{A9E2}', '\u{A9E3}', '\u{A9E4}', '\u{A9E7}', '\u{A9E8}', '\u{A9E9}', '\u{A9EA}', '\u{A9EB}',
- '\u{A9EC}', '\u{A9ED}', '\u{A9EE}', '\u{A9EF}', '\u{A9FA}', '\u{A9FB}', '\u{A9FC}', '\u{A9FD}',
- '\u{A9FE}', '\u{AA00}', '\u{AA01}', '\u{AA02}', '\u{AA03}', '\u{AA04}', '\u{AA05}', '\u{AA06}',
- '\u{AA07}', '\u{AA08}', '\u{AA09}', '\u{AA0A}', '\u{AA0B}', '\u{AA0C}', '\u{AA0D}', '\u{AA0E}',
- '\u{AA0F}', '\u{AA10}', '\u{AA11}', '\u{AA12}', '\u{AA13}', '\u{AA14}', '\u{AA15}', '\u{AA16}',
- '\u{AA17}', '\u{AA18}', '\u{AA19}', '\u{AA1A}', '\u{AA1B}', '\u{AA1C}', '\u{AA1D}', '\u{AA1E}',
- '\u{AA1F}', '\u{AA20}', '\u{AA21}', '\u{AA22}', '\u{AA23}', '\u{AA24}', '\u{AA25}', '\u{AA26}',
- '\u{AA27}', '\u{AA28}', '\u{AA40}', '\u{AA41}', '\u{AA42}', '\u{AA44}', '\u{AA45}', '\u{AA46}',
- '\u{AA47}', '\u{AA48}', '\u{AA49}', '\u{AA4A}', '\u{AA4B}', '\u{AA60}', '\u{AA61}', '\u{AA62}',
- '\u{AA63}', '\u{AA64}', '\u{AA65}', '\u{AA66}', '\u{AA67}', '\u{AA68}', '\u{AA69}', '\u{AA6A}',
- '\u{AA6B}', '\u{AA6C}', '\u{AA6D}', '\u{AA6E}', '\u{AA6F}', '\u{AA71}', '\u{AA72}', '\u{AA73}',
- '\u{AA74}', '\u{AA75}', '\u{AA76}', '\u{AA7A}', '\u{AA7E}', '\u{AA7F}', '\u{AA80}', '\u{AA81}',
- '\u{AA82}', '\u{AA83}', '\u{AA84}', '\u{AA85}', '\u{AA86}', '\u{AA87}', '\u{AA88}', '\u{AA89}',
- '\u{AA8A}', '\u{AA8B}', '\u{AA8C}', '\u{AA8D}', '\u{AA8E}', '\u{AA8F}', '\u{AA90}', '\u{AA91}',
- '\u{AA92}', '\u{AA93}', '\u{AA94}', '\u{AA95}', '\u{AA96}', '\u{AA97}', '\u{AA98}', '\u{AA99}',
- '\u{AA9A}', '\u{AA9B}', '\u{AA9C}', '\u{AA9D}', '\u{AA9E}', '\u{AA9F}', '\u{AAA0}', '\u{AAA1}',
- '\u{AAA2}', '\u{AAA3}', '\u{AAA4}', '\u{AAA5}', '\u{AAA6}', '\u{AAA7}', '\u{AAA8}', '\u{AAA9}',
- '\u{AAAA}', '\u{AAAB}', '\u{AAAC}', '\u{AAAD}', '\u{AAAE}', '\u{AAAF}', '\u{AAB1}', '\u{AAB5}',
- '\u{AAB6}', '\u{AAB9}', '\u{AABA}', '\u{AABB}', '\u{AABC}', '\u{AABD}', '\u{AAC0}', '\u{AAC2}',
- '\u{AADB}', '\u{AADC}', '\u{AAE0}', '\u{AAE1}', '\u{AAE2}', '\u{AAE3}', '\u{AAE4}', '\u{AAE5}',
- '\u{AAE6}', '\u{AAE7}', '\u{AAE8}', '\u{AAE9}', '\u{AAEA}', '\u{AAF2}', '\u{AB01}', '\u{AB02}',
- '\u{AB03}', '\u{AB04}', '\u{AB05}', '\u{AB06}', '\u{AB09}', '\u{AB0A}', '\u{AB0B}', '\u{AB0C}',
- '\u{AB0D}', '\u{AB0E}', '\u{AB11}', '\u{AB12}', '\u{AB13}', '\u{AB14}', '\u{AB15}', '\u{AB16}',
- '\u{AB20}', '\u{AB21}', '\u{AB22}', '\u{AB23}', '\u{AB24}', '\u{AB25}', '\u{AB26}', '\u{AB28}',
- '\u{AB29}', '\u{AB2A}', '\u{AB2B}', '\u{AB2C}', '\u{AB2D}', '\u{AB2E}', '\u{ABC0}', '\u{ABC1}',
- '\u{ABC2}', '\u{ABC3}', '\u{ABC4}', '\u{ABC5}', '\u{ABC6}', '\u{ABC7}', '\u{ABC8}', '\u{ABC9}',
- '\u{ABCA}', '\u{ABCB}', '\u{ABCC}', '\u{ABCD}', '\u{ABCE}', '\u{ABCF}', '\u{ABD0}', '\u{ABD1}',
- '\u{ABD2}', '\u{ABD3}', '\u{ABD4}', '\u{ABD5}', '\u{ABD6}', '\u{ABD7}', '\u{ABD8}', '\u{ABD9}',
- '\u{ABDA}', '\u{ABDB}', '\u{ABDC}', '\u{ABDD}', '\u{ABDE}', '\u{ABDF}', '\u{ABE0}', '\u{ABE1}',
- '\u{ABE2}', '\u{AC00}', '\u{D7A3}', '\u{D7B0}', '\u{D7B1}', '\u{D7B2}', '\u{D7B3}', '\u{D7B4}',
- '\u{D7B5}', '\u{D7B6}', '\u{D7B7}', '\u{D7B8}', '\u{D7B9}', '\u{D7BA}', '\u{D7BB}', '\u{D7BC}',
- '\u{D7BD}', '\u{D7BE}', '\u{D7BF}', '\u{D7C0}', '\u{D7C1}', '\u{D7C2}', '\u{D7C3}', '\u{D7C4}',
- '\u{D7C5}', '\u{D7C6}', '\u{D7CB}', '\u{D7CC}', '\u{D7CD}', '\u{D7CE}', '\u{D7CF}', '\u{D7D0}',
- '\u{D7D1}', '\u{D7D2}', '\u{D7D3}', '\u{D7D4}', '\u{D7D5}', '\u{D7D6}', '\u{D7D7}', '\u{D7D8}',
- '\u{D7D9}', '\u{D7DA}', '\u{D7DB}', '\u{D7DC}', '\u{D7DD}', '\u{D7DE}', '\u{D7DF}', '\u{D7E0}',
- '\u{D7E1}', '\u{D7E2}', '\u{D7E3}', '\u{D7E4}', '\u{D7E5}', '\u{D7E6}', '\u{D7E7}', '\u{D7E8}',
- '\u{D7E9}', '\u{D7EA}', '\u{D7EB}', '\u{D7EC}', '\u{D7ED}', '\u{D7EE}', '\u{D7EF}', '\u{D7F0}',
- '\u{D7F1}', '\u{D7F2}', '\u{D7F3}', '\u{D7F4}', '\u{D7F5}', '\u{D7F6}', '\u{D7F7}', '\u{D7F8}',
- '\u{D7F9}', '\u{D7FA}', '\u{D7FB}', '\u{F900}', '\u{F901}', '\u{F902}', '\u{F903}', '\u{F904}',
- '\u{F905}', '\u{F906}', '\u{F907}', '\u{F908}', '\u{F909}', '\u{F90A}', '\u{F90B}', '\u{F90C}',
- '\u{F90D}', '\u{F90E}', '\u{F90F}', '\u{F910}', '\u{F911}', '\u{F912}', '\u{F913}', '\u{F914}',
- '\u{F915}', '\u{F916}', '\u{F917}', '\u{F918}', '\u{F919}', '\u{F91A}', '\u{F91B}', '\u{F91C}',
- '\u{F91D}', '\u{F91E}', '\u{F91F}', '\u{F920}', '\u{F921}', '\u{F922}', '\u{F923}', '\u{F924}',
- '\u{F925}', '\u{F926}', '\u{F927}', '\u{F928}', '\u{F929}', '\u{F92A}', '\u{F92B}', '\u{F92C}',
- '\u{F92D}', '\u{F92E}', '\u{F92F}', '\u{F930}', '\u{F931}', '\u{F932}', '\u{F933}', '\u{F934}',
- '\u{F935}', '\u{F936}', '\u{F937}', '\u{F938}', '\u{F939}', '\u{F93A}', '\u{F93B}', '\u{F93C}',
- '\u{F93D}', '\u{F93E}', '\u{F93F}', '\u{F940}', '\u{F941}', '\u{F942}', '\u{F943}', '\u{F944}',
- '\u{F945}', '\u{F946}', '\u{F947}', '\u{F948}', '\u{F949}', '\u{F94A}', '\u{F94B}', '\u{F94C}',
- '\u{F94D}', '\u{F94E}', '\u{F94F}', '\u{F950}', '\u{F951}', '\u{F952}', '\u{F953}', '\u{F954}',
- '\u{F955}', '\u{F956}', '\u{F957}', '\u{F958}', '\u{F959}', '\u{F95A}', '\u{F95B}', '\u{F95C}',
- '\u{F95D}', '\u{F95E}', '\u{F95F}', '\u{F960}', '\u{F961}', '\u{F962}', '\u{F963}', '\u{F964}',
- '\u{F965}', '\u{F966}', '\u{F967}', '\u{F968}', '\u{F969}', '\u{F96A}', '\u{F96B}', '\u{F96C}',
- '\u{F96D}', '\u{F96E}', '\u{F96F}', '\u{F970}', '\u{F971}', '\u{F972}', '\u{F973}', '\u{F974}',
- '\u{F975}', '\u{F976}', '\u{F977}', '\u{F978}', '\u{F979}', '\u{F97A}', '\u{F97B}', '\u{F97C}',
- '\u{F97D}', '\u{F97E}', '\u{F97F}', '\u{F980}', '\u{F981}', '\u{F982}', '\u{F983}', '\u{F984}',
- '\u{F985}', '\u{F986}', '\u{F987}', '\u{F988}', '\u{F989}', '\u{F98A}', '\u{F98B}', '\u{F98C}',
- '\u{F98D}', '\u{F98E}', '\u{F98F}', '\u{F990}', '\u{F991}', '\u{F992}', '\u{F993}', '\u{F994}',
- '\u{F995}', '\u{F996}', '\u{F997}', '\u{F998}', '\u{F999}', '\u{F99A}', '\u{F99B}', '\u{F99C}',
- '\u{F99D}', '\u{F99E}', '\u{F99F}', '\u{F9A0}', '\u{F9A1}', '\u{F9A2}', '\u{F9A3}', '\u{F9A4}',
- '\u{F9A5}', '\u{F9A6}', '\u{F9A7}', '\u{F9A8}', '\u{F9A9}', '\u{F9AA}', '\u{F9AB}', '\u{F9AC}',
- '\u{F9AD}', '\u{F9AE}', '\u{F9AF}', '\u{F9B0}', '\u{F9B1}', '\u{F9B2}', '\u{F9B3}', '\u{F9B4}',
- '\u{F9B5}', '\u{F9B6}', '\u{F9B7}', '\u{F9B8}', '\u{F9B9}', '\u{F9BA}', '\u{F9BB}', '\u{F9BC}',
- '\u{F9BD}', '\u{F9BE}', '\u{F9BF}', '\u{F9C0}', '\u{F9C1}', '\u{F9C2}', '\u{F9C3}', '\u{F9C4}',
- '\u{F9C5}', '\u{F9C6}', '\u{F9C7}', '\u{F9C8}', '\u{F9C9}', '\u{F9CA}', '\u{F9CB}', '\u{F9CC}',
- '\u{F9CD}', '\u{F9CE}', '\u{F9CF}', '\u{F9D0}', '\u{F9D1}', '\u{F9D2}', '\u{F9D3}', '\u{F9D4}',
- '\u{F9D5}', '\u{F9D6}', '\u{F9D7}', '\u{F9D8}', '\u{F9D9}', '\u{F9DA}', '\u{F9DB}', '\u{F9DC}',
- '\u{F9DD}', '\u{F9DE}', '\u{F9DF}', '\u{F9E0}', '\u{F9E1}', '\u{F9E2}', '\u{F9E3}', '\u{F9E4}',
- '\u{F9E5}', '\u{F9E6}', '\u{F9E7}', '\u{F9E8}', '\u{F9E9}', '\u{F9EA}', '\u{F9EB}', '\u{F9EC}',
- '\u{F9ED}', '\u{F9EE}', '\u{F9EF}', '\u{F9F0}', '\u{F9F1}', '\u{F9F2}', '\u{F9F3}', '\u{F9F4}',
- '\u{F9F5}', '\u{F9F6}', '\u{F9F7}', '\u{F9F8}', '\u{F9F9}', '\u{F9FA}', '\u{F9FB}', '\u{F9FC}',
- '\u{F9FD}', '\u{F9FE}', '\u{F9FF}', '\u{FA00}', '\u{FA01}', '\u{FA02}', '\u{FA03}', '\u{FA04}',
- '\u{FA05}', '\u{FA06}', '\u{FA07}', '\u{FA08}', '\u{FA09}', '\u{FA0A}', '\u{FA0B}', '\u{FA0C}',
- '\u{FA0D}', '\u{FA0E}', '\u{FA0F}', '\u{FA10}', '\u{FA11}', '\u{FA12}', '\u{FA13}', '\u{FA14}',
- '\u{FA15}', '\u{FA16}', '\u{FA17}', '\u{FA18}', '\u{FA19}', '\u{FA1A}', '\u{FA1B}', '\u{FA1C}',
- '\u{FA1D}', '\u{FA1E}', '\u{FA1F}', '\u{FA20}', '\u{FA21}', '\u{FA22}', '\u{FA23}', '\u{FA24}',
- '\u{FA25}', '\u{FA26}', '\u{FA27}', '\u{FA28}', '\u{FA29}', '\u{FA2A}', '\u{FA2B}', '\u{FA2C}',
- '\u{FA2D}', '\u{FA2E}', '\u{FA2F}', '\u{FA30}', '\u{FA31}', '\u{FA32}', '\u{FA33}', '\u{FA34}',
- '\u{FA35}', '\u{FA36}', '\u{FA37}', '\u{FA38}', '\u{FA39}', '\u{FA3A}', '\u{FA3B}', '\u{FA3C}',
- '\u{FA3D}', '\u{FA3E}', '\u{FA3F}', '\u{FA40}', '\u{FA41}', '\u{FA42}', '\u{FA43}', '\u{FA44}',
- '\u{FA45}', '\u{FA46}', '\u{FA47}', '\u{FA48}', '\u{FA49}', '\u{FA4A}', '\u{FA4B}', '\u{FA4C}',
- '\u{FA4D}', '\u{FA4E}', '\u{FA4F}', '\u{FA50}', '\u{FA51}', '\u{FA52}', '\u{FA53}', '\u{FA54}',
- '\u{FA55}', '\u{FA56}', '\u{FA57}', '\u{FA58}', '\u{FA59}', '\u{FA5A}', '\u{FA5B}', '\u{FA5C}',
- '\u{FA5D}', '\u{FA5E}', '\u{FA5F}', '\u{FA60}', '\u{FA61}', '\u{FA62}', '\u{FA63}', '\u{FA64}',
- '\u{FA65}', '\u{FA66}', '\u{FA67}', '\u{FA68}', '\u{FA69}', '\u{FA6A}', '\u{FA6B}', '\u{FA6C}',
- '\u{FA6D}', '\u{FA70}', '\u{FA71}', '\u{FA72}', '\u{FA73}', '\u{FA74}', '\u{FA75}', '\u{FA76}',
- '\u{FA77}', '\u{FA78}', '\u{FA79}', '\u{FA7A}', '\u{FA7B}', '\u{FA7C}', '\u{FA7D}', '\u{FA7E}',
- '\u{FA7F}', '\u{FA80}', '\u{FA81}', '\u{FA82}', '\u{FA83}', '\u{FA84}', '\u{FA85}', '\u{FA86}',
- '\u{FA87}', '\u{FA88}', '\u{FA89}', '\u{FA8A}', '\u{FA8B}', '\u{FA8C}', '\u{FA8D}', '\u{FA8E}',
- '\u{FA8F}', '\u{FA90}', '\u{FA91}', '\u{FA92}', '\u{FA93}', '\u{FA94}', '\u{FA95}', '\u{FA96}',
- '\u{FA97}', '\u{FA98}', '\u{FA99}', '\u{FA9A}', '\u{FA9B}', '\u{FA9C}', '\u{FA9D}', '\u{FA9E}',
- '\u{FA9F}', '\u{FAA0}', '\u{FAA1}', '\u{FAA2}', '\u{FAA3}', '\u{FAA4}', '\u{FAA5}', '\u{FAA6}',
- '\u{FAA7}', '\u{FAA8}', '\u{FAA9}', '\u{FAAA}', '\u{FAAB}', '\u{FAAC}', '\u{FAAD}', '\u{FAAE}',
- '\u{FAAF}', '\u{FAB0}', '\u{FAB1}', '\u{FAB2}', '\u{FAB3}', '\u{FAB4}', '\u{FAB5}', '\u{FAB6}',
- '\u{FAB7}', '\u{FAB8}', '\u{FAB9}', '\u{FABA}', '\u{FABB}', '\u{FABC}', '\u{FABD}', '\u{FABE}',
- '\u{FABF}', '\u{FAC0}', '\u{FAC1}', '\u{FAC2}', '\u{FAC3}', '\u{FAC4}', '\u{FAC5}', '\u{FAC6}',
- '\u{FAC7}', '\u{FAC8}', '\u{FAC9}', '\u{FACA}', '\u{FACB}', '\u{FACC}', '\u{FACD}', '\u{FACE}',
- '\u{FACF}', '\u{FAD0}', '\u{FAD1}', '\u{FAD2}', '\u{FAD3}', '\u{FAD4}', '\u{FAD5}', '\u{FAD6}',
- '\u{FAD7}', '\u{FAD8}', '\u{FAD9}', '\u{FB1D}', '\u{FB1F}', '\u{FB20}', '\u{FB21}', '\u{FB22}',
- '\u{FB23}', '\u{FB24}', '\u{FB25}', '\u{FB26}', '\u{FB27}', '\u{FB28}', '\u{FB2A}', '\u{FB2B}',
- '\u{FB2C}', '\u{FB2D}', '\u{FB2E}', '\u{FB2F}', '\u{FB30}', '\u{FB31}', '\u{FB32}', '\u{FB33}',
- '\u{FB34}', '\u{FB35}', '\u{FB36}', '\u{FB38}', '\u{FB39}', '\u{FB3A}', '\u{FB3B}', '\u{FB3C}',
- '\u{FB3E}', '\u{FB40}', '\u{FB41}', '\u{FB43}', '\u{FB44}', '\u{FB46}', '\u{FB47}', '\u{FB48}',
- '\u{FB49}', '\u{FB4A}', '\u{FB4B}', '\u{FB4C}', '\u{FB4D}', '\u{FB4E}', '\u{FB4F}', '\u{FB50}',
- '\u{FB51}', '\u{FB52}', '\u{FB53}', '\u{FB54}', '\u{FB55}', '\u{FB56}', '\u{FB57}', '\u{FB58}',
- '\u{FB59}', '\u{FB5A}', '\u{FB5B}', '\u{FB5C}', '\u{FB5D}', '\u{FB5E}', '\u{FB5F}', '\u{FB60}',
- '\u{FB61}', '\u{FB62}', '\u{FB63}', '\u{FB64}', '\u{FB65}', '\u{FB66}', '\u{FB67}', '\u{FB68}',
- '\u{FB69}', '\u{FB6A}', '\u{FB6B}', '\u{FB6C}', '\u{FB6D}', '\u{FB6E}', '\u{FB6F}', '\u{FB70}',
- '\u{FB71}', '\u{FB72}', '\u{FB73}', '\u{FB74}', '\u{FB75}', '\u{FB76}', '\u{FB77}', '\u{FB78}',
- '\u{FB79}', '\u{FB7A}', '\u{FB7B}', '\u{FB7C}', '\u{FB7D}', '\u{FB7E}', '\u{FB7F}', '\u{FB80}',
- '\u{FB81}', '\u{FB82}', '\u{FB83}', '\u{FB84}', '\u{FB85}', '\u{FB86}', '\u{FB87}', '\u{FB88}',
- '\u{FB89}', '\u{FB8A}', '\u{FB8B}', '\u{FB8C}', '\u{FB8D}', '\u{FB8E}', '\u{FB8F}', '\u{FB90}',
- '\u{FB91}', '\u{FB92}', '\u{FB93}', '\u{FB94}', '\u{FB95}', '\u{FB96}', '\u{FB97}', '\u{FB98}',
- '\u{FB99}', '\u{FB9A}', '\u{FB9B}', '\u{FB9C}', '\u{FB9D}', '\u{FB9E}', '\u{FB9F}', '\u{FBA0}',
- '\u{FBA1}', '\u{FBA2}', '\u{FBA3}', '\u{FBA4}', '\u{FBA5}', '\u{FBA6}', '\u{FBA7}', '\u{FBA8}',
- '\u{FBA9}', '\u{FBAA}', '\u{FBAB}', '\u{FBAC}', '\u{FBAD}', '\u{FBAE}', '\u{FBAF}', '\u{FBB0}',
- '\u{FBB1}', '\u{FBD3}', '\u{FBD4}', '\u{FBD5}', '\u{FBD6}', '\u{FBD7}', '\u{FBD8}', '\u{FBD9}',
- '\u{FBDA}', '\u{FBDB}', '\u{FBDC}', '\u{FBDD}', '\u{FBDE}', '\u{FBDF}', '\u{FBE0}', '\u{FBE1}',
- '\u{FBE2}', '\u{FBE3}', '\u{FBE4}', '\u{FBE5}', '\u{FBE6}', '\u{FBE7}', '\u{FBE8}', '\u{FBE9}',
- '\u{FBEA}', '\u{FBEB}', '\u{FBEC}', '\u{FBED}', '\u{FBEE}', '\u{FBEF}', '\u{FBF0}', '\u{FBF1}',
- '\u{FBF2}', '\u{FBF3}', '\u{FBF4}', '\u{FBF5}', '\u{FBF6}', '\u{FBF7}', '\u{FBF8}', '\u{FBF9}',
- '\u{FBFA}', '\u{FBFB}', '\u{FBFC}', '\u{FBFD}', '\u{FBFE}', '\u{FBFF}', '\u{FC00}', '\u{FC01}',
- '\u{FC02}', '\u{FC03}', '\u{FC04}', '\u{FC05}', '\u{FC06}', '\u{FC07}', '\u{FC08}', '\u{FC09}',
- '\u{FC0A}', '\u{FC0B}', '\u{FC0C}', '\u{FC0D}', '\u{FC0E}', '\u{FC0F}', '\u{FC10}', '\u{FC11}',
- '\u{FC12}', '\u{FC13}', '\u{FC14}', '\u{FC15}', '\u{FC16}', '\u{FC17}', '\u{FC18}', '\u{FC19}',
- '\u{FC1A}', '\u{FC1B}', '\u{FC1C}', '\u{FC1D}', '\u{FC1E}', '\u{FC1F}', '\u{FC20}', '\u{FC21}',
- '\u{FC22}', '\u{FC23}', '\u{FC24}', '\u{FC25}', '\u{FC26}', '\u{FC27}', '\u{FC28}', '\u{FC29}',
- '\u{FC2A}', '\u{FC2B}', '\u{FC2C}', '\u{FC2D}', '\u{FC2E}', '\u{FC2F}', '\u{FC30}', '\u{FC31}',
- '\u{FC32}', '\u{FC33}', '\u{FC34}', '\u{FC35}', '\u{FC36}', '\u{FC37}', '\u{FC38}', '\u{FC39}',
- '\u{FC3A}', '\u{FC3B}', '\u{FC3C}', '\u{FC3D}', '\u{FC3E}', '\u{FC3F}', '\u{FC40}', '\u{FC41}',
- '\u{FC42}', '\u{FC43}', '\u{FC44}', '\u{FC45}', '\u{FC46}', '\u{FC47}', '\u{FC48}', '\u{FC49}',
- '\u{FC4A}', '\u{FC4B}', '\u{FC4C}', '\u{FC4D}', '\u{FC4E}', '\u{FC4F}', '\u{FC50}', '\u{FC51}',
- '\u{FC52}', '\u{FC53}', '\u{FC54}', '\u{FC55}', '\u{FC56}', '\u{FC57}', '\u{FC58}', '\u{FC59}',
- '\u{FC5A}', '\u{FC5B}', '\u{FC5C}', '\u{FC5D}', '\u{FC5E}', '\u{FC5F}', '\u{FC60}', '\u{FC61}',
- '\u{FC62}', '\u{FC63}', '\u{FC64}', '\u{FC65}', '\u{FC66}', '\u{FC67}', '\u{FC68}', '\u{FC69}',
- '\u{FC6A}', '\u{FC6B}', '\u{FC6C}', '\u{FC6D}', '\u{FC6E}', '\u{FC6F}', '\u{FC70}', '\u{FC71}',
- '\u{FC72}', '\u{FC73}', '\u{FC74}', '\u{FC75}', '\u{FC76}', '\u{FC77}', '\u{FC78}', '\u{FC79}',
- '\u{FC7A}', '\u{FC7B}', '\u{FC7C}', '\u{FC7D}', '\u{FC7E}', '\u{FC7F}', '\u{FC80}', '\u{FC81}',
- '\u{FC82}', '\u{FC83}', '\u{FC84}', '\u{FC85}', '\u{FC86}', '\u{FC87}', '\u{FC88}', '\u{FC89}',
- '\u{FC8A}', '\u{FC8B}', '\u{FC8C}', '\u{FC8D}', '\u{FC8E}', '\u{FC8F}', '\u{FC90}', '\u{FC91}',
- '\u{FC92}', '\u{FC93}', '\u{FC94}', '\u{FC95}', '\u{FC96}', '\u{FC97}', '\u{FC98}', '\u{FC99}',
- '\u{FC9A}', '\u{FC9B}', '\u{FC9C}', '\u{FC9D}', '\u{FC9E}', '\u{FC9F}', '\u{FCA0}', '\u{FCA1}',
- '\u{FCA2}', '\u{FCA3}', '\u{FCA4}', '\u{FCA5}', '\u{FCA6}', '\u{FCA7}', '\u{FCA8}', '\u{FCA9}',
- '\u{FCAA}', '\u{FCAB}', '\u{FCAC}', '\u{FCAD}', '\u{FCAE}', '\u{FCAF}', '\u{FCB0}', '\u{FCB1}',
- '\u{FCB2}', '\u{FCB3}', '\u{FCB4}', '\u{FCB5}', '\u{FCB6}', '\u{FCB7}', '\u{FCB8}', '\u{FCB9}',
- '\u{FCBA}', '\u{FCBB}', '\u{FCBC}', '\u{FCBD}', '\u{FCBE}', '\u{FCBF}', '\u{FCC0}', '\u{FCC1}',
- '\u{FCC2}', '\u{FCC3}', '\u{FCC4}', '\u{FCC5}', '\u{FCC6}', '\u{FCC7}', '\u{FCC8}', '\u{FCC9}',
- '\u{FCCA}', '\u{FCCB}', '\u{FCCC}', '\u{FCCD}', '\u{FCCE}', '\u{FCCF}', '\u{FCD0}', '\u{FCD1}',
- '\u{FCD2}', '\u{FCD3}', '\u{FCD4}', '\u{FCD5}', '\u{FCD6}', '\u{FCD7}', '\u{FCD8}', '\u{FCD9}',
- '\u{FCDA}', '\u{FCDB}', '\u{FCDC}', '\u{FCDD}', '\u{FCDE}', '\u{FCDF}', '\u{FCE0}', '\u{FCE1}',
- '\u{FCE2}', '\u{FCE3}', '\u{FCE4}', '\u{FCE5}', '\u{FCE6}', '\u{FCE7}', '\u{FCE8}', '\u{FCE9}',
- '\u{FCEA}', '\u{FCEB}', '\u{FCEC}', '\u{FCED}', '\u{FCEE}', '\u{FCEF}', '\u{FCF0}', '\u{FCF1}',
- '\u{FCF2}', '\u{FCF3}', '\u{FCF4}', '\u{FCF5}', '\u{FCF6}', '\u{FCF7}', '\u{FCF8}', '\u{FCF9}',
- '\u{FCFA}', '\u{FCFB}', '\u{FCFC}', '\u{FCFD}', '\u{FCFE}', '\u{FCFF}', '\u{FD00}', '\u{FD01}',
- '\u{FD02}', '\u{FD03}', '\u{FD04}', '\u{FD05}', '\u{FD06}', '\u{FD07}', '\u{FD08}', '\u{FD09}',
- '\u{FD0A}', '\u{FD0B}', '\u{FD0C}', '\u{FD0D}', '\u{FD0E}', '\u{FD0F}', '\u{FD10}', '\u{FD11}',
- '\u{FD12}', '\u{FD13}', '\u{FD14}', '\u{FD15}', '\u{FD16}', '\u{FD17}', '\u{FD18}', '\u{FD19}',
- '\u{FD1A}', '\u{FD1B}', '\u{FD1C}', '\u{FD1D}', '\u{FD1E}', '\u{FD1F}', '\u{FD20}', '\u{FD21}',
- '\u{FD22}', '\u{FD23}', '\u{FD24}', '\u{FD25}', '\u{FD26}', '\u{FD27}', '\u{FD28}', '\u{FD29}',
- '\u{FD2A}', '\u{FD2B}', '\u{FD2C}', '\u{FD2D}', '\u{FD2E}', '\u{FD2F}', '\u{FD30}', '\u{FD31}',
- '\u{FD32}', '\u{FD33}', '\u{FD34}', '\u{FD35}', '\u{FD36}', '\u{FD37}', '\u{FD38}', '\u{FD39}',
- '\u{FD3A}', '\u{FD3B}', '\u{FD3C}', '\u{FD3D}', '\u{FD50}', '\u{FD51}', '\u{FD52}', '\u{FD53}',
- '\u{FD54}', '\u{FD55}', '\u{FD56}', '\u{FD57}', '\u{FD58}', '\u{FD59}', '\u{FD5A}', '\u{FD5B}',
- '\u{FD5C}', '\u{FD5D}', '\u{FD5E}', '\u{FD5F}', '\u{FD60}', '\u{FD61}', '\u{FD62}', '\u{FD63}',
- '\u{FD64}', '\u{FD65}', '\u{FD66}', '\u{FD67}', '\u{FD68}', '\u{FD69}', '\u{FD6A}', '\u{FD6B}',
- '\u{FD6C}', '\u{FD6D}', '\u{FD6E}', '\u{FD6F}', '\u{FD70}', '\u{FD71}', '\u{FD72}', '\u{FD73}',
- '\u{FD74}', '\u{FD75}', '\u{FD76}', '\u{FD77}', '\u{FD78}', '\u{FD79}', '\u{FD7A}', '\u{FD7B}',
- '\u{FD7C}', '\u{FD7D}', '\u{FD7E}', '\u{FD7F}', '\u{FD80}', '\u{FD81}', '\u{FD82}', '\u{FD83}',
- '\u{FD84}', '\u{FD85}', '\u{FD86}', '\u{FD87}', '\u{FD88}', '\u{FD89}', '\u{FD8A}', '\u{FD8B}',
- '\u{FD8C}', '\u{FD8D}', '\u{FD8E}', '\u{FD8F}', '\u{FD92}', '\u{FD93}', '\u{FD94}', '\u{FD95}',
- '\u{FD96}', '\u{FD97}', '\u{FD98}', '\u{FD99}', '\u{FD9A}', '\u{FD9B}', '\u{FD9C}', '\u{FD9D}',
- '\u{FD9E}', '\u{FD9F}', '\u{FDA0}', '\u{FDA1}', '\u{FDA2}', '\u{FDA3}', '\u{FDA4}', '\u{FDA5}',
- '\u{FDA6}', '\u{FDA7}', '\u{FDA8}', '\u{FDA9}', '\u{FDAA}', '\u{FDAB}', '\u{FDAC}', '\u{FDAD}',
- '\u{FDAE}', '\u{FDAF}', '\u{FDB0}', '\u{FDB1}', '\u{FDB2}', '\u{FDB3}', '\u{FDB4}', '\u{FDB5}',
- '\u{FDB6}', '\u{FDB7}', '\u{FDB8}', '\u{FDB9}', '\u{FDBA}', '\u{FDBB}', '\u{FDBC}', '\u{FDBD}',
- '\u{FDBE}', '\u{FDBF}', '\u{FDC0}', '\u{FDC1}', '\u{FDC2}', '\u{FDC3}', '\u{FDC4}', '\u{FDC5}',
- '\u{FDC6}', '\u{FDC7}', '\u{FDF0}', '\u{FDF1}', '\u{FDF2}', '\u{FDF3}', '\u{FDF4}', '\u{FDF5}',
- '\u{FDF6}', '\u{FDF7}', '\u{FDF8}', '\u{FDF9}', '\u{FDFA}', '\u{FDFB}', '\u{FE70}', '\u{FE71}',
- '\u{FE72}', '\u{FE73}', '\u{FE74}', '\u{FE76}', '\u{FE77}', '\u{FE78}', '\u{FE79}', '\u{FE7A}',
- '\u{FE7B}', '\u{FE7C}', '\u{FE7D}', '\u{FE7E}', '\u{FE7F}', '\u{FE80}', '\u{FE81}', '\u{FE82}',
- '\u{FE83}', '\u{FE84}', '\u{FE85}', '\u{FE86}', '\u{FE87}', '\u{FE88}', '\u{FE89}', '\u{FE8A}',
- '\u{FE8B}', '\u{FE8C}', '\u{FE8D}', '\u{FE8E}', '\u{FE8F}', '\u{FE90}', '\u{FE91}', '\u{FE92}',
- '\u{FE93}', '\u{FE94}', '\u{FE95}', '\u{FE96}', '\u{FE97}', '\u{FE98}', '\u{FE99}', '\u{FE9A}',
- '\u{FE9B}', '\u{FE9C}', '\u{FE9D}', '\u{FE9E}', '\u{FE9F}', '\u{FEA0}', '\u{FEA1}', '\u{FEA2}',
- '\u{FEA3}', '\u{FEA4}', '\u{FEA5}', '\u{FEA6}', '\u{FEA7}', '\u{FEA8}', '\u{FEA9}', '\u{FEAA}',
- '\u{FEAB}', '\u{FEAC}', '\u{FEAD}', '\u{FEAE}', '\u{FEAF}', '\u{FEB0}', '\u{FEB1}', '\u{FEB2}',
- '\u{FEB3}', '\u{FEB4}', '\u{FEB5}', '\u{FEB6}', '\u{FEB7}', '\u{FEB8}', '\u{FEB9}', '\u{FEBA}',
- '\u{FEBB}', '\u{FEBC}', '\u{FEBD}', '\u{FEBE}', '\u{FEBF}', '\u{FEC0}', '\u{FEC1}', '\u{FEC2}',
- '\u{FEC3}', '\u{FEC4}', '\u{FEC5}', '\u{FEC6}', '\u{FEC7}', '\u{FEC8}', '\u{FEC9}', '\u{FECA}',
- '\u{FECB}', '\u{FECC}', '\u{FECD}', '\u{FECE}', '\u{FECF}', '\u{FED0}', '\u{FED1}', '\u{FED2}',
- '\u{FED3}', '\u{FED4}', '\u{FED5}', '\u{FED6}', '\u{FED7}', '\u{FED8}', '\u{FED9}', '\u{FEDA}',
- '\u{FEDB}', '\u{FEDC}', '\u{FEDD}', '\u{FEDE}', '\u{FEDF}', '\u{FEE0}', '\u{FEE1}', '\u{FEE2}',
- '\u{FEE3}', '\u{FEE4}', '\u{FEE5}', '\u{FEE6}', '\u{FEE7}', '\u{FEE8}', '\u{FEE9}', '\u{FEEA}',
- '\u{FEEB}', '\u{FEEC}', '\u{FEED}', '\u{FEEE}', '\u{FEEF}', '\u{FEF0}', '\u{FEF1}', '\u{FEF2}',
- '\u{FEF3}', '\u{FEF4}', '\u{FEF5}', '\u{FEF6}', '\u{FEF7}', '\u{FEF8}', '\u{FEF9}', '\u{FEFA}',
- '\u{FEFB}', '\u{FEFC}', '\u{FF66}', '\u{FF67}', '\u{FF68}', '\u{FF69}', '\u{FF6A}', '\u{FF6B}',
- '\u{FF6C}', '\u{FF6D}', '\u{FF6E}', '\u{FF6F}', '\u{FF71}', '\u{FF72}', '\u{FF73}', '\u{FF74}',
- '\u{FF75}', '\u{FF76}', '\u{FF77}', '\u{FF78}', '\u{FF79}', '\u{FF7A}', '\u{FF7B}', '\u{FF7C}',
- '\u{FF7D}', '\u{FF7E}', '\u{FF7F}', '\u{FF80}', '\u{FF81}', '\u{FF82}', '\u{FF83}', '\u{FF84}',
- '\u{FF85}', '\u{FF86}', '\u{FF87}', '\u{FF88}', '\u{FF89}', '\u{FF8A}', '\u{FF8B}', '\u{FF8C}',
- '\u{FF8D}', '\u{FF8E}', '\u{FF8F}', '\u{FF90}', '\u{FF91}', '\u{FF92}', '\u{FF93}', '\u{FF94}',
- '\u{FF95}', '\u{FF96}', '\u{FF97}', '\u{FF98}', '\u{FF99}', '\u{FF9A}', '\u{FF9B}', '\u{FF9C}',
- '\u{FF9D}', '\u{FFA0}', '\u{FFA1}', '\u{FFA2}', '\u{FFA3}', '\u{FFA4}', '\u{FFA5}', '\u{FFA6}',
- '\u{FFA7}', '\u{FFA8}', '\u{FFA9}', '\u{FFAA}', '\u{FFAB}', '\u{FFAC}', '\u{FFAD}', '\u{FFAE}',
- '\u{FFAF}', '\u{FFB0}', '\u{FFB1}', '\u{FFB2}', '\u{FFB3}', '\u{FFB4}', '\u{FFB5}', '\u{FFB6}',
- '\u{FFB7}', '\u{FFB8}', '\u{FFB9}', '\u{FFBA}', '\u{FFBB}', '\u{FFBC}', '\u{FFBD}', '\u{FFBE}',
- '\u{FFC2}', '\u{FFC3}', '\u{FFC4}', '\u{FFC5}', '\u{FFC6}', '\u{FFC7}', '\u{FFCA}', '\u{FFCB}',
- '\u{FFCC}', '\u{FFCD}', '\u{FFCE}', '\u{FFCF}', '\u{FFD2}', '\u{FFD3}', '\u{FFD4}', '\u{FFD5}',
- '\u{FFD6}', '\u{FFD7}', '\u{FFDA}', '\u{FFDB}', '\u{FFDC}', '\u{10000}', '\u{10001}', '\u{10002}',
- '\u{10003}', '\u{10004}', '\u{10005}', '\u{10006}', '\u{10007}', '\u{10008}', '\u{10009}', '\u{1000A}',
- '\u{1000B}', '\u{1000D}', '\u{1000E}', '\u{1000F}', '\u{10010}', '\u{10011}', '\u{10012}', '\u{10013}',
- '\u{10014}', '\u{10015}', '\u{10016}', '\u{10017}', '\u{10018}', '\u{10019}', '\u{1001A}', '\u{1001B}',
- '\u{1001C}', '\u{1001D}', '\u{1001E}', '\u{1001F}', '\u{10020}', '\u{10021}', '\u{10022}', '\u{10023}',
- '\u{10024}', '\u{10025}', '\u{10026}', '\u{10028}', '\u{10029}', '\u{1002A}', '\u{1002B}', '\u{1002C}',
- '\u{1002D}', '\u{1002E}', '\u{1002F}', '\u{10030}', '\u{10031}', '\u{10032}', '\u{10033}', '\u{10034}',
- '\u{10035}', '\u{10036}', '\u{10037}', '\u{10038}', '\u{10039}', '\u{1003A}', '\u{1003C}', '\u{1003D}',
- '\u{1003F}', '\u{10040}', '\u{10041}', '\u{10042}', '\u{10043}', '\u{10044}', '\u{10045}', '\u{10046}',
- '\u{10047}', '\u{10048}', '\u{10049}', '\u{1004A}', '\u{1004B}', '\u{1004C}', '\u{1004D}', '\u{10050}',
- '\u{10051}', '\u{10052}', '\u{10053}', '\u{10054}', '\u{10055}', '\u{10056}', '\u{10057}', '\u{10058}',
- '\u{10059}', '\u{1005A}', '\u{1005B}', '\u{1005C}', '\u{1005D}', '\u{10080}', '\u{10081}', '\u{10082}',
- '\u{10083}', '\u{10084}', '\u{10085}', '\u{10086}', '\u{10087}', '\u{10088}', '\u{10089}', '\u{1008A}',
- '\u{1008B}', '\u{1008C}', '\u{1008D}', '\u{1008E}', '\u{1008F}', '\u{10090}', '\u{10091}', '\u{10092}',
- '\u{10093}', '\u{10094}', '\u{10095}', '\u{10096}', '\u{10097}', '\u{10098}', '\u{10099}', '\u{1009A}',
- '\u{1009B}', '\u{1009C}', '\u{1009D}', '\u{1009E}', '\u{1009F}', '\u{100A0}', '\u{100A1}', '\u{100A2}',
- '\u{100A3}', '\u{100A4}', '\u{100A5}', '\u{100A6}', '\u{100A7}', '\u{100A8}', '\u{100A9}', '\u{100AA}',
- '\u{100AB}', '\u{100AC}', '\u{100AD}', '\u{100AE}', '\u{100AF}', '\u{100B0}', '\u{100B1}', '\u{100B2}',
- '\u{100B3}', '\u{100B4}', '\u{100B5}', '\u{100B6}', '\u{100B7}', '\u{100B8}', '\u{100B9}', '\u{100BA}',
- '\u{100BB}', '\u{100BC}', '\u{100BD}', '\u{100BE}', '\u{100BF}', '\u{100C0}', '\u{100C1}', '\u{100C2}',
- '\u{100C3}', '\u{100C4}', '\u{100C5}', '\u{100C6}', '\u{100C7}', '\u{100C8}', '\u{100C9}', '\u{100CA}',
- '\u{100CB}', '\u{100CC}', '\u{100CD}', '\u{100CE}', '\u{100CF}', '\u{100D0}', '\u{100D1}', '\u{100D2}',
- '\u{100D3}', '\u{100D4}', '\u{100D5}', '\u{100D6}', '\u{100D7}', '\u{100D8}', '\u{100D9}', '\u{100DA}',
- '\u{100DB}', '\u{100DC}', '\u{100DD}', '\u{100DE}', '\u{100DF}', '\u{100E0}', '\u{100E1}', '\u{100E2}',
- '\u{100E3}', '\u{100E4}', '\u{100E5}', '\u{100E6}', '\u{100E7}', '\u{100E8}', '\u{100E9}', '\u{100EA}',
- '\u{100EB}', '\u{100EC}', '\u{100ED}', '\u{100EE}', '\u{100EF}', '\u{100F0}', '\u{100F1}', '\u{100F2}',
- '\u{100F3}', '\u{100F4}', '\u{100F5}', '\u{100F6}', '\u{100F7}', '\u{100F8}', '\u{100F9}', '\u{100FA}',
- '\u{10280}', '\u{10281}', '\u{10282}', '\u{10283}', '\u{10284}', '\u{10285}', '\u{10286}', '\u{10287}',
- '\u{10288}', '\u{10289}', '\u{1028A}', '\u{1028B}', '\u{1028C}', '\u{1028D}', '\u{1028E}', '\u{1028F}',
- '\u{10290}', '\u{10291}', '\u{10292}', '\u{10293}', '\u{10294}', '\u{10295}', '\u{10296}', '\u{10297}',
- '\u{10298}', '\u{10299}', '\u{1029A}', '\u{1029B}', '\u{1029C}', '\u{102A0}', '\u{102A1}', '\u{102A2}',
- '\u{102A3}', '\u{102A4}', '\u{102A5}', '\u{102A6}', '\u{102A7}', '\u{102A8}', '\u{102A9}', '\u{102AA}',
- '\u{102AB}', '\u{102AC}', '\u{102AD}', '\u{102AE}', '\u{102AF}', '\u{102B0}', '\u{102B1}', '\u{102B2}',
- '\u{102B3}', '\u{102B4}', '\u{102B5}', '\u{102B6}', '\u{102B7}', '\u{102B8}', '\u{102B9}', '\u{102BA}',
- '\u{102BB}', '\u{102BC}', '\u{102BD}', '\u{102BE}', '\u{102BF}', '\u{102C0}', '\u{102C1}', '\u{102C2}',
- '\u{102C3}', '\u{102C4}', '\u{102C5}', '\u{102C6}', '\u{102C7}', '\u{102C8}', '\u{102C9}', '\u{102CA}',
- '\u{102CB}', '\u{102CC}', '\u{102CD}', '\u{102CE}', '\u{102CF}', '\u{102D0}', '\u{10300}', '\u{10301}',
- '\u{10302}', '\u{10303}', '\u{10304}', '\u{10305}', '\u{10306}', '\u{10307}', '\u{10308}', '\u{10309}',
- '\u{1030A}', '\u{1030B}', '\u{1030C}', '\u{1030D}', '\u{1030E}', '\u{1030F}', '\u{10310}', '\u{10311}',
- '\u{10312}', '\u{10313}', '\u{10314}', '\u{10315}', '\u{10316}', '\u{10317}', '\u{10318}', '\u{10319}',
- '\u{1031A}', '\u{1031B}', '\u{1031C}', '\u{1031D}', '\u{1031E}', '\u{1031F}', '\u{10330}', '\u{10331}',
- '\u{10332}', '\u{10333}', '\u{10334}', '\u{10335}', '\u{10336}', '\u{10337}', '\u{10338}', '\u{10339}',
- '\u{1033A}', '\u{1033B}', '\u{1033C}', '\u{1033D}', '\u{1033E}', '\u{1033F}', '\u{10340}', '\u{10342}',
- '\u{10343}', '\u{10344}', '\u{10345}', '\u{10346}', '\u{10347}', '\u{10348}', '\u{10349}', '\u{10350}',
- '\u{10351}', '\u{10352}', '\u{10353}', '\u{10354}', '\u{10355}', '\u{10356}', '\u{10357}', '\u{10358}',
- '\u{10359}', '\u{1035A}', '\u{1035B}', '\u{1035C}', '\u{1035D}', '\u{1035E}', '\u{1035F}', '\u{10360}',
- '\u{10361}', '\u{10362}', '\u{10363}', '\u{10364}', '\u{10365}', '\u{10366}', '\u{10367}', '\u{10368}',
- '\u{10369}', '\u{1036A}', '\u{1036B}', '\u{1036C}', '\u{1036D}', '\u{1036E}', '\u{1036F}', '\u{10370}',
- '\u{10371}', '\u{10372}', '\u{10373}', '\u{10374}', '\u{10375}', '\u{10380}', '\u{10381}', '\u{10382}',
- '\u{10383}', '\u{10384}', '\u{10385}', '\u{10386}', '\u{10387}', '\u{10388}', '\u{10389}', '\u{1038A}',
- '\u{1038B}', '\u{1038C}', '\u{1038D}', '\u{1038E}', '\u{1038F}', '\u{10390}', '\u{10391}', '\u{10392}',
- '\u{10393}', '\u{10394}', '\u{10395}', '\u{10396}', '\u{10397}', '\u{10398}', '\u{10399}', '\u{1039A}',
- '\u{1039B}', '\u{1039C}', '\u{1039D}', '\u{103A0}', '\u{103A1}', '\u{103A2}', '\u{103A3}', '\u{103A4}',
- '\u{103A5}', '\u{103A6}', '\u{103A7}', '\u{103A8}', '\u{103A9}', '\u{103AA}', '\u{103AB}', '\u{103AC}',
- '\u{103AD}', '\u{103AE}', '\u{103AF}', '\u{103B0}', '\u{103B1}', '\u{103B2}', '\u{103B3}', '\u{103B4}',
- '\u{103B5}', '\u{103B6}', '\u{103B7}', '\u{103B8}', '\u{103B9}', '\u{103BA}', '\u{103BB}', '\u{103BC}',
- '\u{103BD}', '\u{103BE}', '\u{103BF}', '\u{103C0}', '\u{103C1}', '\u{103C2}', '\u{103C3}', '\u{103C8}',
- '\u{103C9}', '\u{103CA}', '\u{103CB}', '\u{103CC}', '\u{103CD}', '\u{103CE}', '\u{103CF}', '\u{10450}',
- '\u{10451}', '\u{10452}', '\u{10453}', '\u{10454}', '\u{10455}', '\u{10456}', '\u{10457}', '\u{10458}',
- '\u{10459}', '\u{1045A}', '\u{1045B}', '\u{1045C}', '\u{1045D}', '\u{1045E}', '\u{1045F}', '\u{10460}',
- '\u{10461}', '\u{10462}', '\u{10463}', '\u{10464}', '\u{10465}', '\u{10466}', '\u{10467}', '\u{10468}',
- '\u{10469}', '\u{1046A}', '\u{1046B}', '\u{1046C}', '\u{1046D}', '\u{1046E}', '\u{1046F}', '\u{10470}',
- '\u{10471}', '\u{10472}', '\u{10473}', '\u{10474}', '\u{10475}', '\u{10476}', '\u{10477}', '\u{10478}',
- '\u{10479}', '\u{1047A}', '\u{1047B}', '\u{1047C}', '\u{1047D}', '\u{1047E}', '\u{1047F}', '\u{10480}',
- '\u{10481}', '\u{10482}', '\u{10483}', '\u{10484}', '\u{10485}', '\u{10486}', '\u{10487}', '\u{10488}',
- '\u{10489}', '\u{1048A}', '\u{1048B}', '\u{1048C}', '\u{1048D}', '\u{1048E}', '\u{1048F}', '\u{10490}',
- '\u{10491}', '\u{10492}', '\u{10493}', '\u{10494}', '\u{10495}', '\u{10496}', '\u{10497}', '\u{10498}',
- '\u{10499}', '\u{1049A}', '\u{1049B}', '\u{1049C}', '\u{1049D}', '\u{10500}', '\u{10501}', '\u{10502}',
- '\u{10503}', '\u{10504}', '\u{10505}', '\u{10506}', '\u{10507}', '\u{10508}', '\u{10509}', '\u{1050A}',
- '\u{1050B}', '\u{1050C}', '\u{1050D}', '\u{1050E}', '\u{1050F}', '\u{10510}', '\u{10511}', '\u{10512}',
- '\u{10513}', '\u{10514}', '\u{10515}', '\u{10516}', '\u{10517}', '\u{10518}', '\u{10519}', '\u{1051A}',
- '\u{1051B}', '\u{1051C}', '\u{1051D}', '\u{1051E}', '\u{1051F}', '\u{10520}', '\u{10521}', '\u{10522}',
- '\u{10523}', '\u{10524}', '\u{10525}', '\u{10526}', '\u{10527}', '\u{10530}', '\u{10531}', '\u{10532}',
- '\u{10533}', '\u{10534}', '\u{10535}', '\u{10536}', '\u{10537}', '\u{10538}', '\u{10539}', '\u{1053A}',
- '\u{1053B}', '\u{1053C}', '\u{1053D}', '\u{1053E}', '\u{1053F}', '\u{10540}', '\u{10541}', '\u{10542}',
- '\u{10543}', '\u{10544}', '\u{10545}', '\u{10546}', '\u{10547}', '\u{10548}', '\u{10549}', '\u{1054A}',
- '\u{1054B}', '\u{1054C}', '\u{1054D}', '\u{1054E}', '\u{1054F}', '\u{10550}', '\u{10551}', '\u{10552}',
- '\u{10553}', '\u{10554}', '\u{10555}', '\u{10556}', '\u{10557}', '\u{10558}', '\u{10559}', '\u{1055A}',
- '\u{1055B}', '\u{1055C}', '\u{1055D}', '\u{1055E}', '\u{1055F}', '\u{10560}', '\u{10561}', '\u{10562}',
- '\u{10563}', '\u{10600}', '\u{10601}', '\u{10602}', '\u{10603}', '\u{10604}', '\u{10605}', '\u{10606}',
- '\u{10607}', '\u{10608}', '\u{10609}', '\u{1060A}', '\u{1060B}', '\u{1060C}', '\u{1060D}', '\u{1060E}',
- '\u{1060F}', '\u{10610}', '\u{10611}', '\u{10612}', '\u{10613}', '\u{10614}', '\u{10615}', '\u{10616}',
- '\u{10617}', '\u{10618}', '\u{10619}', '\u{1061A}', '\u{1061B}', '\u{1061C}', '\u{1061D}', '\u{1061E}',
- '\u{1061F}', '\u{10620}', '\u{10621}', '\u{10622}', '\u{10623}', '\u{10624}', '\u{10625}', '\u{10626}',
- '\u{10627}', '\u{10628}', '\u{10629}', '\u{1062A}', '\u{1062B}', '\u{1062C}', '\u{1062D}', '\u{1062E}',
- '\u{1062F}', '\u{10630}', '\u{10631}', '\u{10632}', '\u{10633}', '\u{10634}', '\u{10635}', '\u{10636}',
- '\u{10637}', '\u{10638}', '\u{10639}', '\u{1063A}', '\u{1063B}', '\u{1063C}', '\u{1063D}', '\u{1063E}',
- '\u{1063F}', '\u{10640}', '\u{10641}', '\u{10642}', '\u{10643}', '\u{10644}', '\u{10645}', '\u{10646}',
- '\u{10647}', '\u{10648}', '\u{10649}', '\u{1064A}', '\u{1064B}', '\u{1064C}', '\u{1064D}', '\u{1064E}',
- '\u{1064F}', '\u{10650}', '\u{10651}', '\u{10652}', '\u{10653}', '\u{10654}', '\u{10655}', '\u{10656}',
- '\u{10657}', '\u{10658}', '\u{10659}', '\u{1065A}', '\u{1065B}', '\u{1065C}', '\u{1065D}', '\u{1065E}',
- '\u{1065F}', '\u{10660}', '\u{10661}', '\u{10662}', '\u{10663}', '\u{10664}', '\u{10665}', '\u{10666}',
- '\u{10667}', '\u{10668}', '\u{10669}', '\u{1066A}', '\u{1066B}', '\u{1066C}', '\u{1066D}', '\u{1066E}',
- '\u{1066F}', '\u{10670}', '\u{10671}', '\u{10672}', '\u{10673}', '\u{10674}', '\u{10675}', '\u{10676}',
- '\u{10677}', '\u{10678}', '\u{10679}', '\u{1067A}', '\u{1067B}', '\u{1067C}', '\u{1067D}', '\u{1067E}',
- '\u{1067F}', '\u{10680}', '\u{10681}', '\u{10682}', '\u{10683}', '\u{10684}', '\u{10685}', '\u{10686}',
- '\u{10687}', '\u{10688}', '\u{10689}', '\u{1068A}', '\u{1068B}', '\u{1068C}', '\u{1068D}', '\u{1068E}',
- '\u{1068F}', '\u{10690}', '\u{10691}', '\u{10692}', '\u{10693}', '\u{10694}', '\u{10695}', '\u{10696}',
- '\u{10697}', '\u{10698}', '\u{10699}', '\u{1069A}', '\u{1069B}', '\u{1069C}', '\u{1069D}', '\u{1069E}',
- '\u{1069F}', '\u{106A0}', '\u{106A1}', '\u{106A2}', '\u{106A3}', '\u{106A4}', '\u{106A5}', '\u{106A6}',
- '\u{106A7}', '\u{106A8}', '\u{106A9}', '\u{106AA}', '\u{106AB}', '\u{106AC}', '\u{106AD}', '\u{106AE}',
- '\u{106AF}', '\u{106B0}', '\u{106B1}', '\u{106B2}', '\u{106B3}', '\u{106B4}', '\u{106B5}', '\u{106B6}',
- '\u{106B7}', '\u{106B8}', '\u{106B9}', '\u{106BA}', '\u{106BB}', '\u{106BC}', '\u{106BD}', '\u{106BE}',
- '\u{106BF}', '\u{106C0}', '\u{106C1}', '\u{106C2}', '\u{106C3}', '\u{106C4}', '\u{106C5}', '\u{106C6}',
- '\u{106C7}', '\u{106C8}', '\u{106C9}', '\u{106CA}', '\u{106CB}', '\u{106CC}', '\u{106CD}', '\u{106CE}',
- '\u{106CF}', '\u{106D0}', '\u{106D1}', '\u{106D2}', '\u{106D3}', '\u{106D4}', '\u{106D5}', '\u{106D6}',
- '\u{106D7}', '\u{106D8}', '\u{106D9}', '\u{106DA}', '\u{106DB}', '\u{106DC}', '\u{106DD}', '\u{106DE}',
- '\u{106DF}', '\u{106E0}', '\u{106E1}', '\u{106E2}', '\u{106E3}', '\u{106E4}', '\u{106E5}', '\u{106E6}',
- '\u{106E7}', '\u{106E8}', '\u{106E9}', '\u{106EA}', '\u{106EB}', '\u{106EC}', '\u{106ED}', '\u{106EE}',
- '\u{106EF}', '\u{106F0}', '\u{106F1}', '\u{106F2}', '\u{106F3}', '\u{106F4}', '\u{106F5}', '\u{106F6}',
- '\u{106F7}', '\u{106F8}', '\u{106F9}', '\u{106FA}', '\u{106FB}', '\u{106FC}', '\u{106FD}', '\u{106FE}',
- '\u{106FF}', '\u{10700}', '\u{10701}', '\u{10702}', '\u{10703}', '\u{10704}', '\u{10705}', '\u{10706}',
- '\u{10707}', '\u{10708}', '\u{10709}', '\u{1070A}', '\u{1070B}', '\u{1070C}', '\u{1070D}', '\u{1070E}',
- '\u{1070F}', '\u{10710}', '\u{10711}', '\u{10712}', '\u{10713}', '\u{10714}', '\u{10715}', '\u{10716}',
- '\u{10717}', '\u{10718}', '\u{10719}', '\u{1071A}', '\u{1071B}', '\u{1071C}', '\u{1071D}', '\u{1071E}',
- '\u{1071F}', '\u{10720}', '\u{10721}', '\u{10722}', '\u{10723}', '\u{10724}', '\u{10725}', '\u{10726}',
- '\u{10727}', '\u{10728}', '\u{10729}', '\u{1072A}', '\u{1072B}', '\u{1072C}', '\u{1072D}', '\u{1072E}',
- '\u{1072F}', '\u{10730}', '\u{10731}', '\u{10732}', '\u{10733}', '\u{10734}', '\u{10735}', '\u{10736}',
- '\u{10740}', '\u{10741}', '\u{10742}', '\u{10743}', '\u{10744}', '\u{10745}', '\u{10746}', '\u{10747}',
- '\u{10748}', '\u{10749}', '\u{1074A}', '\u{1074B}', '\u{1074C}', '\u{1074D}', '\u{1074E}', '\u{1074F}',
- '\u{10750}', '\u{10751}', '\u{10752}', '\u{10753}', '\u{10754}', '\u{10755}', '\u{10760}', '\u{10761}',
- '\u{10762}', '\u{10763}', '\u{10764}', '\u{10765}', '\u{10766}', '\u{10767}', '\u{10800}', '\u{10801}',
- '\u{10802}', '\u{10803}', '\u{10804}', '\u{10805}', '\u{10808}', '\u{1080A}', '\u{1080B}', '\u{1080C}',
- '\u{1080D}', '\u{1080E}', '\u{1080F}', '\u{10810}', '\u{10811}', '\u{10812}', '\u{10813}', '\u{10814}',
- '\u{10815}', '\u{10816}', '\u{10817}', '\u{10818}', '\u{10819}', '\u{1081A}', '\u{1081B}', '\u{1081C}',
- '\u{1081D}', '\u{1081E}', '\u{1081F}', '\u{10820}', '\u{10821}', '\u{10822}', '\u{10823}', '\u{10824}',
- '\u{10825}', '\u{10826}', '\u{10827}', '\u{10828}', '\u{10829}', '\u{1082A}', '\u{1082B}', '\u{1082C}',
- '\u{1082D}', '\u{1082E}', '\u{1082F}', '\u{10830}', '\u{10831}', '\u{10832}', '\u{10833}', '\u{10834}',
- '\u{10835}', '\u{10837}', '\u{10838}', '\u{1083C}', '\u{1083F}', '\u{10840}', '\u{10841}', '\u{10842}',
- '\u{10843}', '\u{10844}', '\u{10845}', '\u{10846}', '\u{10847}', '\u{10848}', '\u{10849}', '\u{1084A}',
- '\u{1084B}', '\u{1084C}', '\u{1084D}', '\u{1084E}', '\u{1084F}', '\u{10850}', '\u{10851}', '\u{10852}',
- '\u{10853}', '\u{10854}', '\u{10855}', '\u{10860}', '\u{10861}', '\u{10862}', '\u{10863}', '\u{10864}',
- '\u{10865}', '\u{10866}', '\u{10867}', '\u{10868}', '\u{10869}', '\u{1086A}', '\u{1086B}', '\u{1086C}',
- '\u{1086D}', '\u{1086E}', '\u{1086F}', '\u{10870}', '\u{10871}', '\u{10872}', '\u{10873}', '\u{10874}',
- '\u{10875}', '\u{10876}', '\u{10880}', '\u{10881}', '\u{10882}', '\u{10883}', '\u{10884}', '\u{10885}',
- '\u{10886}', '\u{10887}', '\u{10888}', '\u{10889}', '\u{1088A}', '\u{1088B}', '\u{1088C}', '\u{1088D}',
- '\u{1088E}', '\u{1088F}', '\u{10890}', '\u{10891}', '\u{10892}', '\u{10893}', '\u{10894}', '\u{10895}',
- '\u{10896}', '\u{10897}', '\u{10898}', '\u{10899}', '\u{1089A}', '\u{1089B}', '\u{1089C}', '\u{1089D}',
- '\u{1089E}', '\u{108E0}', '\u{108E1}', '\u{108E2}', '\u{108E3}', '\u{108E4}', '\u{108E5}', '\u{108E6}',
- '\u{108E7}', '\u{108E8}', '\u{108E9}', '\u{108EA}', '\u{108EB}', '\u{108EC}', '\u{108ED}', '\u{108EE}',
- '\u{108EF}', '\u{108F0}', '\u{108F1}', '\u{108F2}', '\u{108F4}', '\u{108F5}', '\u{10900}', '\u{10901}',
- '\u{10902}', '\u{10903}', '\u{10904}', '\u{10905}', '\u{10906}', '\u{10907}', '\u{10908}', '\u{10909}',
- '\u{1090A}', '\u{1090B}', '\u{1090C}', '\u{1090D}', '\u{1090E}', '\u{1090F}', '\u{10910}', '\u{10911}',
- '\u{10912}', '\u{10913}', '\u{10914}', '\u{10915}', '\u{10920}', '\u{10921}', '\u{10922}', '\u{10923}',
- '\u{10924}', '\u{10925}', '\u{10926}', '\u{10927}', '\u{10928}', '\u{10929}', '\u{1092A}', '\u{1092B}',
- '\u{1092C}', '\u{1092D}', '\u{1092E}', '\u{1092F}', '\u{10930}', '\u{10931}', '\u{10932}', '\u{10933}',
- '\u{10934}', '\u{10935}', '\u{10936}', '\u{10937}', '\u{10938}', '\u{10939}', '\u{10980}', '\u{10981}',
- '\u{10982}', '\u{10983}', '\u{10984}', '\u{10985}', '\u{10986}', '\u{10987}', '\u{10988}', '\u{10989}',
- '\u{1098A}', '\u{1098B}', '\u{1098C}', '\u{1098D}', '\u{1098E}', '\u{1098F}', '\u{10990}', '\u{10991}',
- '\u{10992}', '\u{10993}', '\u{10994}', '\u{10995}', '\u{10996}', '\u{10997}', '\u{10998}', '\u{10999}',
- '\u{1099A}', '\u{1099B}', '\u{1099C}', '\u{1099D}', '\u{1099E}', '\u{1099F}', '\u{109A0}', '\u{109A1}',
- '\u{109A2}', '\u{109A3}', '\u{109A4}', '\u{109A5}', '\u{109A6}', '\u{109A7}', '\u{109A8}', '\u{109A9}',
- '\u{109AA}', '\u{109AB}', '\u{109AC}', '\u{109AD}', '\u{109AE}', '\u{109AF}', '\u{109B0}', '\u{109B1}',
- '\u{109B2}', '\u{109B3}', '\u{109B4}', '\u{109B5}', '\u{109B6}', '\u{109B7}', '\u{109BE}', '\u{109BF}',
- '\u{10A00}', '\u{10A10}', '\u{10A11}', '\u{10A12}', '\u{10A13}', '\u{10A15}', '\u{10A16}', '\u{10A17}',
- '\u{10A19}', '\u{10A1A}', '\u{10A1B}', '\u{10A1C}', '\u{10A1D}', '\u{10A1E}', '\u{10A1F}', '\u{10A20}',
- '\u{10A21}', '\u{10A22}', '\u{10A23}', '\u{10A24}', '\u{10A25}', '\u{10A26}', '\u{10A27}', '\u{10A28}',
- '\u{10A29}', '\u{10A2A}', '\u{10A2B}', '\u{10A2C}', '\u{10A2D}', '\u{10A2E}', '\u{10A2F}', '\u{10A30}',
- '\u{10A31}', '\u{10A32}', '\u{10A33}', '\u{10A60}', '\u{10A61}', '\u{10A62}', '\u{10A63}', '\u{10A64}',
- '\u{10A65}', '\u{10A66}', '\u{10A67}', '\u{10A68}', '\u{10A69}', '\u{10A6A}', '\u{10A6B}', '\u{10A6C}',
- '\u{10A6D}', '\u{10A6E}', '\u{10A6F}', '\u{10A70}', '\u{10A71}', '\u{10A72}', '\u{10A73}', '\u{10A74}',
- '\u{10A75}', '\u{10A76}', '\u{10A77}', '\u{10A78}', '\u{10A79}', '\u{10A7A}', '\u{10A7B}', '\u{10A7C}',
- '\u{10A80}', '\u{10A81}', '\u{10A82}', '\u{10A83}', '\u{10A84}', '\u{10A85}', '\u{10A86}', '\u{10A87}',
- '\u{10A88}', '\u{10A89}', '\u{10A8A}', '\u{10A8B}', '\u{10A8C}', '\u{10A8D}', '\u{10A8E}', '\u{10A8F}',
- '\u{10A90}', '\u{10A91}', '\u{10A92}', '\u{10A93}', '\u{10A94}', '\u{10A95}', '\u{10A96}', '\u{10A97}',
- '\u{10A98}', '\u{10A99}', '\u{10A9A}', '\u{10A9B}', '\u{10A9C}', '\u{10AC0}', '\u{10AC1}', '\u{10AC2}',
- '\u{10AC3}', '\u{10AC4}', '\u{10AC5}', '\u{10AC6}', '\u{10AC7}', '\u{10AC9}', '\u{10ACA}', '\u{10ACB}',
- '\u{10ACC}', '\u{10ACD}', '\u{10ACE}', '\u{10ACF}', '\u{10AD0}', '\u{10AD1}', '\u{10AD2}', '\u{10AD3}',
- '\u{10AD4}', '\u{10AD5}', '\u{10AD6}', '\u{10AD7}', '\u{10AD8}', '\u{10AD9}', '\u{10ADA}', '\u{10ADB}',
- '\u{10ADC}', '\u{10ADD}', '\u{10ADE}', '\u{10ADF}', '\u{10AE0}', '\u{10AE1}', '\u{10AE2}', '\u{10AE3}',
- '\u{10AE4}', '\u{10B00}', '\u{10B01}', '\u{10B02}', '\u{10B03}', '\u{10B04}', '\u{10B05}', '\u{10B06}',
- '\u{10B07}', '\u{10B08}', '\u{10B09}', '\u{10B0A}', '\u{10B0B}', '\u{10B0C}', '\u{10B0D}', '\u{10B0E}',
- '\u{10B0F}', '\u{10B10}', '\u{10B11}', '\u{10B12}', '\u{10B13}', '\u{10B14}', '\u{10B15}', '\u{10B16}',
- '\u{10B17}', '\u{10B18}', '\u{10B19}', '\u{10B1A}', '\u{10B1B}', '\u{10B1C}', '\u{10B1D}', '\u{10B1E}',
- '\u{10B1F}', '\u{10B20}', '\u{10B21}', '\u{10B22}', '\u{10B23}', '\u{10B24}', '\u{10B25}', '\u{10B26}',
- '\u{10B27}', '\u{10B28}', '\u{10B29}', '\u{10B2A}', '\u{10B2B}', '\u{10B2C}', '\u{10B2D}', '\u{10B2E}',
- '\u{10B2F}', '\u{10B30}', '\u{10B31}', '\u{10B32}', '\u{10B33}', '\u{10B34}', '\u{10B35}', '\u{10B40}',
- '\u{10B41}', '\u{10B42}', '\u{10B43}', '\u{10B44}', '\u{10B45}', '\u{10B46}', '\u{10B47}', '\u{10B48}',
- '\u{10B49}', '\u{10B4A}', '\u{10B4B}', '\u{10B4C}', '\u{10B4D}', '\u{10B4E}', '\u{10B4F}', '\u{10B50}',
- '\u{10B51}', '\u{10B52}', '\u{10B53}', '\u{10B54}', '\u{10B55}', '\u{10B60}', '\u{10B61}', '\u{10B62}',
- '\u{10B63}', '\u{10B64}', '\u{10B65}', '\u{10B66}', '\u{10B67}', '\u{10B68}', '\u{10B69}', '\u{10B6A}',
- '\u{10B6B}', '\u{10B6C}', '\u{10B6D}', '\u{10B6E}', '\u{10B6F}', '\u{10B70}', '\u{10B71}', '\u{10B72}',
- '\u{10B80}', '\u{10B81}', '\u{10B82}', '\u{10B83}', '\u{10B84}', '\u{10B85}', '\u{10B86}', '\u{10B87}',
- '\u{10B88}', '\u{10B89}', '\u{10B8A}', '\u{10B8B}', '\u{10B8C}', '\u{10B8D}', '\u{10B8E}', '\u{10B8F}',
- '\u{10B90}', '\u{10B91}', '\u{10C00}', '\u{10C01}', '\u{10C02}', '\u{10C03}', '\u{10C04}', '\u{10C05}',
- '\u{10C06}', '\u{10C07}', '\u{10C08}', '\u{10C09}', '\u{10C0A}', '\u{10C0B}', '\u{10C0C}', '\u{10C0D}',
- '\u{10C0E}', '\u{10C0F}', '\u{10C10}', '\u{10C11}', '\u{10C12}', '\u{10C13}', '\u{10C14}', '\u{10C15}',
- '\u{10C16}', '\u{10C17}', '\u{10C18}', '\u{10C19}', '\u{10C1A}', '\u{10C1B}', '\u{10C1C}', '\u{10C1D}',
- '\u{10C1E}', '\u{10C1F}', '\u{10C20}', '\u{10C21}', '\u{10C22}', '\u{10C23}', '\u{10C24}', '\u{10C25}',
- '\u{10C26}', '\u{10C27}', '\u{10C28}', '\u{10C29}', '\u{10C2A}', '\u{10C2B}', '\u{10C2C}', '\u{10C2D}',
- '\u{10C2E}', '\u{10C2F}', '\u{10C30}', '\u{10C31}', '\u{10C32}', '\u{10C33}', '\u{10C34}', '\u{10C35}',
- '\u{10C36}', '\u{10C37}', '\u{10C38}', '\u{10C39}', '\u{10C3A}', '\u{10C3B}', '\u{10C3C}', '\u{10C3D}',
- '\u{10C3E}', '\u{10C3F}', '\u{10C40}', '\u{10C41}', '\u{10C42}', '\u{10C43}', '\u{10C44}', '\u{10C45}',
- '\u{10C46}', '\u{10C47}', '\u{10C48}', '\u{11003}', '\u{11004}', '\u{11005}', '\u{11006}', '\u{11007}',
- '\u{11008}', '\u{11009}', '\u{1100A}', '\u{1100B}', '\u{1100C}', '\u{1100D}', '\u{1100E}', '\u{1100F}',
- '\u{11010}', '\u{11011}', '\u{11012}', '\u{11013}', '\u{11014}', '\u{11015}', '\u{11016}', '\u{11017}',
- '\u{11018}', '\u{11019}', '\u{1101A}', '\u{1101B}', '\u{1101C}', '\u{1101D}', '\u{1101E}', '\u{1101F}',
- '\u{11020}', '\u{11021}', '\u{11022}', '\u{11023}', '\u{11024}', '\u{11025}', '\u{11026}', '\u{11027}',
- '\u{11028}', '\u{11029}', '\u{1102A}', '\u{1102B}', '\u{1102C}', '\u{1102D}', '\u{1102E}', '\u{1102F}',
- '\u{11030}', '\u{11031}', '\u{11032}', '\u{11033}', '\u{11034}', '\u{11035}', '\u{11036}', '\u{11037}',
- '\u{11083}', '\u{11084}', '\u{11085}', '\u{11086}', '\u{11087}', '\u{11088}', '\u{11089}', '\u{1108A}',
- '\u{1108B}', '\u{1108C}', '\u{1108D}', '\u{1108E}', '\u{1108F}', '\u{11090}', '\u{11091}', '\u{11092}',
- '\u{11093}', '\u{11094}', '\u{11095}', '\u{11096}', '\u{11097}', '\u{11098}', '\u{11099}', '\u{1109A}',
- '\u{1109B}', '\u{1109C}', '\u{1109D}', '\u{1109E}', '\u{1109F}', '\u{110A0}', '\u{110A1}', '\u{110A2}',
- '\u{110A3}', '\u{110A4}', '\u{110A5}', '\u{110A6}', '\u{110A7}', '\u{110A8}', '\u{110A9}', '\u{110AA}',
- '\u{110AB}', '\u{110AC}', '\u{110AD}', '\u{110AE}', '\u{110AF}', '\u{110D0}', '\u{110D1}', '\u{110D2}',
- '\u{110D3}', '\u{110D4}', '\u{110D5}', '\u{110D6}', '\u{110D7}', '\u{110D8}', '\u{110D9}', '\u{110DA}',
- '\u{110DB}', '\u{110DC}', '\u{110DD}', '\u{110DE}', '\u{110DF}', '\u{110E0}', '\u{110E1}', '\u{110E2}',
- '\u{110E3}', '\u{110E4}', '\u{110E5}', '\u{110E6}', '\u{110E7}', '\u{110E8}', '\u{11103}', '\u{11104}',
- '\u{11105}', '\u{11106}', '\u{11107}', '\u{11108}', '\u{11109}', '\u{1110A}', '\u{1110B}', '\u{1110C}',
- '\u{1110D}', '\u{1110E}', '\u{1110F}', '\u{11110}', '\u{11111}', '\u{11112}', '\u{11113}', '\u{11114}',
- '\u{11115}', '\u{11116}', '\u{11117}', '\u{11118}', '\u{11119}', '\u{1111A}', '\u{1111B}', '\u{1111C}',
- '\u{1111D}', '\u{1111E}', '\u{1111F}', '\u{11120}', '\u{11121}', '\u{11122}', '\u{11123}', '\u{11124}',
- '\u{11125}', '\u{11126}', '\u{11150}', '\u{11151}', '\u{11152}', '\u{11153}', '\u{11154}', '\u{11155}',
- '\u{11156}', '\u{11157}', '\u{11158}', '\u{11159}', '\u{1115A}', '\u{1115B}', '\u{1115C}', '\u{1115D}',
- '\u{1115E}', '\u{1115F}', '\u{11160}', '\u{11161}', '\u{11162}', '\u{11163}', '\u{11164}', '\u{11165}',
- '\u{11166}', '\u{11167}', '\u{11168}', '\u{11169}', '\u{1116A}', '\u{1116B}', '\u{1116C}', '\u{1116D}',
- '\u{1116E}', '\u{1116F}', '\u{11170}', '\u{11171}', '\u{11172}', '\u{11176}', '\u{11183}', '\u{11184}',
- '\u{11185}', '\u{11186}', '\u{11187}', '\u{11188}', '\u{11189}', '\u{1118A}', '\u{1118B}', '\u{1118C}',
- '\u{1118D}', '\u{1118E}', '\u{1118F}', '\u{11190}', '\u{11191}', '\u{11192}', '\u{11193}', '\u{11194}',
- '\u{11195}', '\u{11196}', '\u{11197}', '\u{11198}', '\u{11199}', '\u{1119A}', '\u{1119B}', '\u{1119C}',
- '\u{1119D}', '\u{1119E}', '\u{1119F}', '\u{111A0}', '\u{111A1}', '\u{111A2}', '\u{111A3}', '\u{111A4}',
- '\u{111A5}', '\u{111A6}', '\u{111A7}', '\u{111A8}', '\u{111A9}', '\u{111AA}', '\u{111AB}', '\u{111AC}',
- '\u{111AD}', '\u{111AE}', '\u{111AF}', '\u{111B0}', '\u{111B1}', '\u{111B2}', '\u{111C1}', '\u{111C2}',
- '\u{111C3}', '\u{111C4}', '\u{111DA}', '\u{111DC}', '\u{11200}', '\u{11201}', '\u{11202}', '\u{11203}',
- '\u{11204}', '\u{11205}', '\u{11206}', '\u{11207}', '\u{11208}', '\u{11209}', '\u{1120A}', '\u{1120B}',
- '\u{1120C}', '\u{1120D}', '\u{1120E}', '\u{1120F}', '\u{11210}', '\u{11211}', '\u{11213}', '\u{11214}',
- '\u{11215}', '\u{11216}', '\u{11217}', '\u{11218}', '\u{11219}', '\u{1121A}', '\u{1121B}', '\u{1121C}',
- '\u{1121D}', '\u{1121E}', '\u{1121F}', '\u{11220}', '\u{11221}', '\u{11222}', '\u{11223}', '\u{11224}',
- '\u{11225}', '\u{11226}', '\u{11227}', '\u{11228}', '\u{11229}', '\u{1122A}', '\u{1122B}', '\u{11280}',
- '\u{11281}', '\u{11282}', '\u{11283}', '\u{11284}', '\u{11285}', '\u{11286}', '\u{11288}', '\u{1128A}',
- '\u{1128B}', '\u{1128C}', '\u{1128D}', '\u{1128F}', '\u{11290}', '\u{11291}', '\u{11292}', '\u{11293}',
- '\u{11294}', '\u{11295}', '\u{11296}', '\u{11297}', '\u{11298}', '\u{11299}', '\u{1129A}', '\u{1129B}',
- '\u{1129C}', '\u{1129D}', '\u{1129F}', '\u{112A0}', '\u{112A1}', '\u{112A2}', '\u{112A3}', '\u{112A4}',
- '\u{112A5}', '\u{112A6}', '\u{112A7}', '\u{112A8}', '\u{112B0}', '\u{112B1}', '\u{112B2}', '\u{112B3}',
- '\u{112B4}', '\u{112B5}', '\u{112B6}', '\u{112B7}', '\u{112B8}', '\u{112B9}', '\u{112BA}', '\u{112BB}',
- '\u{112BC}', '\u{112BD}', '\u{112BE}', '\u{112BF}', '\u{112C0}', '\u{112C1}', '\u{112C2}', '\u{112C3}',
- '\u{112C4}', '\u{112C5}', '\u{112C6}', '\u{112C7}', '\u{112C8}', '\u{112C9}', '\u{112CA}', '\u{112CB}',
- '\u{112CC}', '\u{112CD}', '\u{112CE}', '\u{112CF}', '\u{112D0}', '\u{112D1}', '\u{112D2}', '\u{112D3}',
- '\u{112D4}', '\u{112D5}', '\u{112D6}', '\u{112D7}', '\u{112D8}', '\u{112D9}', '\u{112DA}', '\u{112DB}',
- '\u{112DC}', '\u{112DD}', '\u{112DE}', '\u{11305}', '\u{11306}', '\u{11307}', '\u{11308}', '\u{11309}',
- '\u{1130A}', '\u{1130B}', '\u{1130C}', '\u{1130F}', '\u{11310}', '\u{11313}', '\u{11314}', '\u{11315}',
- '\u{11316}', '\u{11317}', '\u{11318}', '\u{11319}', '\u{1131A}', '\u{1131B}', '\u{1131C}', '\u{1131D}',
- '\u{1131E}', '\u{1131F}', '\u{11320}', '\u{11321}', '\u{11322}', '\u{11323}', '\u{11324}', '\u{11325}',
- '\u{11326}', '\u{11327}', '\u{11328}', '\u{1132A}', '\u{1132B}', '\u{1132C}', '\u{1132D}', '\u{1132E}',
- '\u{1132F}', '\u{11330}', '\u{11332}', '\u{11333}', '\u{11335}', '\u{11336}', '\u{11337}', '\u{11338}',
- '\u{11339}', '\u{1133D}', '\u{11350}', '\u{1135D}', '\u{1135E}', '\u{1135F}', '\u{11360}', '\u{11361}',
- '\u{11480}', '\u{11481}', '\u{11482}', '\u{11483}', '\u{11484}', '\u{11485}', '\u{11486}', '\u{11487}',
- '\u{11488}', '\u{11489}', '\u{1148A}', '\u{1148B}', '\u{1148C}', '\u{1148D}', '\u{1148E}', '\u{1148F}',
- '\u{11490}', '\u{11491}', '\u{11492}', '\u{11493}', '\u{11494}', '\u{11495}', '\u{11496}', '\u{11497}',
- '\u{11498}', '\u{11499}', '\u{1149A}', '\u{1149B}', '\u{1149C}', '\u{1149D}', '\u{1149E}', '\u{1149F}',
- '\u{114A0}', '\u{114A1}', '\u{114A2}', '\u{114A3}', '\u{114A4}', '\u{114A5}', '\u{114A6}', '\u{114A7}',
- '\u{114A8}', '\u{114A9}', '\u{114AA}', '\u{114AB}', '\u{114AC}', '\u{114AD}', '\u{114AE}', '\u{114AF}',
- '\u{114C4}', '\u{114C5}', '\u{114C7}', '\u{11580}', '\u{11581}', '\u{11582}', '\u{11583}', '\u{11584}',
- '\u{11585}', '\u{11586}', '\u{11587}', '\u{11588}', '\u{11589}', '\u{1158A}', '\u{1158B}', '\u{1158C}',
- '\u{1158D}', '\u{1158E}', '\u{1158F}', '\u{11590}', '\u{11591}', '\u{11592}', '\u{11593}', '\u{11594}',
- '\u{11595}', '\u{11596}', '\u{11597}', '\u{11598}', '\u{11599}', '\u{1159A}', '\u{1159B}', '\u{1159C}',
- '\u{1159D}', '\u{1159E}', '\u{1159F}', '\u{115A0}', '\u{115A1}', '\u{115A2}', '\u{115A3}', '\u{115A4}',
- '\u{115A5}', '\u{115A6}', '\u{115A7}', '\u{115A8}', '\u{115A9}', '\u{115AA}', '\u{115AB}', '\u{115AC}',
- '\u{115AD}', '\u{115AE}', '\u{115D8}', '\u{115D9}', '\u{115DA}', '\u{115DB}', '\u{11600}', '\u{11601}',
- '\u{11602}', '\u{11603}', '\u{11604}', '\u{11605}', '\u{11606}', '\u{11607}', '\u{11608}', '\u{11609}',
- '\u{1160A}', '\u{1160B}', '\u{1160C}', '\u{1160D}', '\u{1160E}', '\u{1160F}', '\u{11610}', '\u{11611}',
- '\u{11612}', '\u{11613}', '\u{11614}', '\u{11615}', '\u{11616}', '\u{11617}', '\u{11618}', '\u{11619}',
- '\u{1161A}', '\u{1161B}', '\u{1161C}', '\u{1161D}', '\u{1161E}', '\u{1161F}', '\u{11620}', '\u{11621}',
- '\u{11622}', '\u{11623}', '\u{11624}', '\u{11625}', '\u{11626}', '\u{11627}', '\u{11628}', '\u{11629}',
- '\u{1162A}', '\u{1162B}', '\u{1162C}', '\u{1162D}', '\u{1162E}', '\u{1162F}', '\u{11644}', '\u{11680}',
- '\u{11681}', '\u{11682}', '\u{11683}', '\u{11684}', '\u{11685}', '\u{11686}', '\u{11687}', '\u{11688}',
- '\u{11689}', '\u{1168A}', '\u{1168B}', '\u{1168C}', '\u{1168D}', '\u{1168E}', '\u{1168F}', '\u{11690}',
- '\u{11691}', '\u{11692}', '\u{11693}', '\u{11694}', '\u{11695}', '\u{11696}', '\u{11697}', '\u{11698}',
- '\u{11699}', '\u{1169A}', '\u{1169B}', '\u{1169C}', '\u{1169D}', '\u{1169E}', '\u{1169F}', '\u{116A0}',
- '\u{116A1}', '\u{116A2}', '\u{116A3}', '\u{116A4}', '\u{116A5}', '\u{116A6}', '\u{116A7}', '\u{116A8}',
- '\u{116A9}', '\u{116AA}', '\u{11700}', '\u{11701}', '\u{11702}', '\u{11703}', '\u{11704}', '\u{11705}',
- '\u{11706}', '\u{11707}', '\u{11708}', '\u{11709}', '\u{1170A}', '\u{1170B}', '\u{1170C}', '\u{1170D}',
- '\u{1170E}', '\u{1170F}', '\u{11710}', '\u{11711}', '\u{11712}', '\u{11713}', '\u{11714}', '\u{11715}',
- '\u{11716}', '\u{11717}', '\u{11718}', '\u{11719}', '\u{118FF}', '\u{11AC0}', '\u{11AC1}', '\u{11AC2}',
- '\u{11AC3}', '\u{11AC4}', '\u{11AC5}', '\u{11AC6}', '\u{11AC7}', '\u{11AC8}', '\u{11AC9}', '\u{11ACA}',
- '\u{11ACB}', '\u{11ACC}', '\u{11ACD}', '\u{11ACE}', '\u{11ACF}', '\u{11AD0}', '\u{11AD1}', '\u{11AD2}',
- '\u{11AD3}', '\u{11AD4}', '\u{11AD5}', '\u{11AD6}', '\u{11AD7}', '\u{11AD8}', '\u{11AD9}', '\u{11ADA}',
- '\u{11ADB}', '\u{11ADC}', '\u{11ADD}', '\u{11ADE}', '\u{11ADF}', '\u{11AE0}', '\u{11AE1}', '\u{11AE2}',
- '\u{11AE3}', '\u{11AE4}', '\u{11AE5}', '\u{11AE6}', '\u{11AE7}', '\u{11AE8}', '\u{11AE9}', '\u{11AEA}',
- '\u{11AEB}', '\u{11AEC}', '\u{11AED}', '\u{11AEE}', '\u{11AEF}', '\u{11AF0}', '\u{11AF1}', '\u{11AF2}',
- '\u{11AF3}', '\u{11AF4}', '\u{11AF5}', '\u{11AF6}', '\u{11AF7}', '\u{11AF8}', '\u{12000}', '\u{12001}',
- '\u{12002}', '\u{12003}', '\u{12004}', '\u{12005}', '\u{12006}', '\u{12007}', '\u{12008}', '\u{12009}',
- '\u{1200A}', '\u{1200B}', '\u{1200C}', '\u{1200D}', '\u{1200E}', '\u{1200F}', '\u{12010}', '\u{12011}',
- '\u{12012}', '\u{12013}', '\u{12014}', '\u{12015}', '\u{12016}', '\u{12017}', '\u{12018}', '\u{12019}',
- '\u{1201A}', '\u{1201B}', '\u{1201C}', '\u{1201D}', '\u{1201E}', '\u{1201F}', '\u{12020}', '\u{12021}',
- '\u{12022}', '\u{12023}', '\u{12024}', '\u{12025}', '\u{12026}', '\u{12027}', '\u{12028}', '\u{12029}',
- '\u{1202A}', '\u{1202B}', '\u{1202C}', '\u{1202D}', '\u{1202E}', '\u{1202F}', '\u{12030}', '\u{12031}',
- '\u{12032}', '\u{12033}', '\u{12034}', '\u{12035}', '\u{12036}', '\u{12037}', '\u{12038}', '\u{12039}',
- '\u{1203A}', '\u{1203B}', '\u{1203C}', '\u{1203D}', '\u{1203E}', '\u{1203F}', '\u{12040}', '\u{12041}',
- '\u{12042}', '\u{12043}', '\u{12044}', '\u{12045}', '\u{12046}', '\u{12047}', '\u{12048}', '\u{12049}',
- '\u{1204A}', '\u{1204B}', '\u{1204C}', '\u{1204D}', '\u{1204E}', '\u{1204F}', '\u{12050}', '\u{12051}',
- '\u{12052}', '\u{12053}', '\u{12054}', '\u{12055}', '\u{12056}', '\u{12057}', '\u{12058}', '\u{12059}',
- '\u{1205A}', '\u{1205B}', '\u{1205C}', '\u{1205D}', '\u{1205E}', '\u{1205F}', '\u{12060}', '\u{12061}',
- '\u{12062}', '\u{12063}', '\u{12064}', '\u{12065}', '\u{12066}', '\u{12067}', '\u{12068}', '\u{12069}',
- '\u{1206A}', '\u{1206B}', '\u{1206C}', '\u{1206D}', '\u{1206E}', '\u{1206F}', '\u{12070}', '\u{12071}',
- '\u{12072}', '\u{12073}', '\u{12074}', '\u{12075}', '\u{12076}', '\u{12077}', '\u{12078}', '\u{12079}',
- '\u{1207A}', '\u{1207B}', '\u{1207C}', '\u{1207D}', '\u{1207E}', '\u{1207F}', '\u{12080}', '\u{12081}',
- '\u{12082}', '\u{12083}', '\u{12084}', '\u{12085}', '\u{12086}', '\u{12087}', '\u{12088}', '\u{12089}',
- '\u{1208A}', '\u{1208B}', '\u{1208C}', '\u{1208D}', '\u{1208E}', '\u{1208F}', '\u{12090}', '\u{12091}',
- '\u{12092}', '\u{12093}', '\u{12094}', '\u{12095}', '\u{12096}', '\u{12097}', '\u{12098}', '\u{12099}',
- '\u{1209A}', '\u{1209B}', '\u{1209C}', '\u{1209D}', '\u{1209E}', '\u{1209F}', '\u{120A0}', '\u{120A1}',
- '\u{120A2}', '\u{120A3}', '\u{120A4}', '\u{120A5}', '\u{120A6}', '\u{120A7}', '\u{120A8}', '\u{120A9}',
- '\u{120AA}', '\u{120AB}', '\u{120AC}', '\u{120AD}', '\u{120AE}', '\u{120AF}', '\u{120B0}', '\u{120B1}',
- '\u{120B2}', '\u{120B3}', '\u{120B4}', '\u{120B5}', '\u{120B6}', '\u{120B7}', '\u{120B8}', '\u{120B9}',
- '\u{120BA}', '\u{120BB}', '\u{120BC}', '\u{120BD}', '\u{120BE}', '\u{120BF}', '\u{120C0}', '\u{120C1}',
- '\u{120C2}', '\u{120C3}', '\u{120C4}', '\u{120C5}', '\u{120C6}', '\u{120C7}', '\u{120C8}', '\u{120C9}',
- '\u{120CA}', '\u{120CB}', '\u{120CC}', '\u{120CD}', '\u{120CE}', '\u{120CF}', '\u{120D0}', '\u{120D1}',
- '\u{120D2}', '\u{120D3}', '\u{120D4}', '\u{120D5}', '\u{120D6}', '\u{120D7}', '\u{120D8}', '\u{120D9}',
- '\u{120DA}', '\u{120DB}', '\u{120DC}', '\u{120DD}', '\u{120DE}', '\u{120DF}', '\u{120E0}', '\u{120E1}',
- '\u{120E2}', '\u{120E3}', '\u{120E4}', '\u{120E5}', '\u{120E6}', '\u{120E7}', '\u{120E8}', '\u{120E9}',
- '\u{120EA}', '\u{120EB}', '\u{120EC}', '\u{120ED}', '\u{120EE}', '\u{120EF}', '\u{120F0}', '\u{120F1}',
- '\u{120F2}', '\u{120F3}', '\u{120F4}', '\u{120F5}', '\u{120F6}', '\u{120F7}', '\u{120F8}', '\u{120F9}',
- '\u{120FA}', '\u{120FB}', '\u{120FC}', '\u{120FD}', '\u{120FE}', '\u{120FF}', '\u{12100}', '\u{12101}',
- '\u{12102}', '\u{12103}', '\u{12104}', '\u{12105}', '\u{12106}', '\u{12107}', '\u{12108}', '\u{12109}',
- '\u{1210A}', '\u{1210B}', '\u{1210C}', '\u{1210D}', '\u{1210E}', '\u{1210F}', '\u{12110}', '\u{12111}',
- '\u{12112}', '\u{12113}', '\u{12114}', '\u{12115}', '\u{12116}', '\u{12117}', '\u{12118}', '\u{12119}',
- '\u{1211A}', '\u{1211B}', '\u{1211C}', '\u{1211D}', '\u{1211E}', '\u{1211F}', '\u{12120}', '\u{12121}',
- '\u{12122}', '\u{12123}', '\u{12124}', '\u{12125}', '\u{12126}', '\u{12127}', '\u{12128}', '\u{12129}',
- '\u{1212A}', '\u{1212B}', '\u{1212C}', '\u{1212D}', '\u{1212E}', '\u{1212F}', '\u{12130}', '\u{12131}',
- '\u{12132}', '\u{12133}', '\u{12134}', '\u{12135}', '\u{12136}', '\u{12137}', '\u{12138}', '\u{12139}',
- '\u{1213A}', '\u{1213B}', '\u{1213C}', '\u{1213D}', '\u{1213E}', '\u{1213F}', '\u{12140}', '\u{12141}',
- '\u{12142}', '\u{12143}', '\u{12144}', '\u{12145}', '\u{12146}', '\u{12147}', '\u{12148}', '\u{12149}',
- '\u{1214A}', '\u{1214B}', '\u{1214C}', '\u{1214D}', '\u{1214E}', '\u{1214F}', '\u{12150}', '\u{12151}',
- '\u{12152}', '\u{12153}', '\u{12154}', '\u{12155}', '\u{12156}', '\u{12157}', '\u{12158}', '\u{12159}',
- '\u{1215A}', '\u{1215B}', '\u{1215C}', '\u{1215D}', '\u{1215E}', '\u{1215F}', '\u{12160}', '\u{12161}',
- '\u{12162}', '\u{12163}', '\u{12164}', '\u{12165}', '\u{12166}', '\u{12167}', '\u{12168}', '\u{12169}',
- '\u{1216A}', '\u{1216B}', '\u{1216C}', '\u{1216D}', '\u{1216E}', '\u{1216F}', '\u{12170}', '\u{12171}',
- '\u{12172}', '\u{12173}', '\u{12174}', '\u{12175}', '\u{12176}', '\u{12177}', '\u{12178}', '\u{12179}',
- '\u{1217A}', '\u{1217B}', '\u{1217C}', '\u{1217D}', '\u{1217E}', '\u{1217F}', '\u{12180}', '\u{12181}',
- '\u{12182}', '\u{12183}', '\u{12184}', '\u{12185}', '\u{12186}', '\u{12187}', '\u{12188}', '\u{12189}',
- '\u{1218A}', '\u{1218B}', '\u{1218C}', '\u{1218D}', '\u{1218E}', '\u{1218F}', '\u{12190}', '\u{12191}',
- '\u{12192}', '\u{12193}', '\u{12194}', '\u{12195}', '\u{12196}', '\u{12197}', '\u{12198}', '\u{12199}',
- '\u{1219A}', '\u{1219B}', '\u{1219C}', '\u{1219D}', '\u{1219E}', '\u{1219F}', '\u{121A0}', '\u{121A1}',
- '\u{121A2}', '\u{121A3}', '\u{121A4}', '\u{121A5}', '\u{121A6}', '\u{121A7}', '\u{121A8}', '\u{121A9}',
- '\u{121AA}', '\u{121AB}', '\u{121AC}', '\u{121AD}', '\u{121AE}', '\u{121AF}', '\u{121B0}', '\u{121B1}',
- '\u{121B2}', '\u{121B3}', '\u{121B4}', '\u{121B5}', '\u{121B6}', '\u{121B7}', '\u{121B8}', '\u{121B9}',
- '\u{121BA}', '\u{121BB}', '\u{121BC}', '\u{121BD}', '\u{121BE}', '\u{121BF}', '\u{121C0}', '\u{121C1}',
- '\u{121C2}', '\u{121C3}', '\u{121C4}', '\u{121C5}', '\u{121C6}', '\u{121C7}', '\u{121C8}', '\u{121C9}',
- '\u{121CA}', '\u{121CB}', '\u{121CC}', '\u{121CD}', '\u{121CE}', '\u{121CF}', '\u{121D0}', '\u{121D1}',
- '\u{121D2}', '\u{121D3}', '\u{121D4}', '\u{121D5}', '\u{121D6}', '\u{121D7}', '\u{121D8}', '\u{121D9}',
- '\u{121DA}', '\u{121DB}', '\u{121DC}', '\u{121DD}', '\u{121DE}', '\u{121DF}', '\u{121E0}', '\u{121E1}',
- '\u{121E2}', '\u{121E3}', '\u{121E4}', '\u{121E5}', '\u{121E6}', '\u{121E7}', '\u{121E8}', '\u{121E9}',
- '\u{121EA}', '\u{121EB}', '\u{121EC}', '\u{121ED}', '\u{121EE}', '\u{121EF}', '\u{121F0}', '\u{121F1}',
- '\u{121F2}', '\u{121F3}', '\u{121F4}', '\u{121F5}', '\u{121F6}', '\u{121F7}', '\u{121F8}', '\u{121F9}',
- '\u{121FA}', '\u{121FB}', '\u{121FC}', '\u{121FD}', '\u{121FE}', '\u{121FF}', '\u{12200}', '\u{12201}',
- '\u{12202}', '\u{12203}', '\u{12204}', '\u{12205}', '\u{12206}', '\u{12207}', '\u{12208}', '\u{12209}',
- '\u{1220A}', '\u{1220B}', '\u{1220C}', '\u{1220D}', '\u{1220E}', '\u{1220F}', '\u{12210}', '\u{12211}',
- '\u{12212}', '\u{12213}', '\u{12214}', '\u{12215}', '\u{12216}', '\u{12217}', '\u{12218}', '\u{12219}',
- '\u{1221A}', '\u{1221B}', '\u{1221C}', '\u{1221D}', '\u{1221E}', '\u{1221F}', '\u{12220}', '\u{12221}',
- '\u{12222}', '\u{12223}', '\u{12224}', '\u{12225}', '\u{12226}', '\u{12227}', '\u{12228}', '\u{12229}',
- '\u{1222A}', '\u{1222B}', '\u{1222C}', '\u{1222D}', '\u{1222E}', '\u{1222F}', '\u{12230}', '\u{12231}',
- '\u{12232}', '\u{12233}', '\u{12234}', '\u{12235}', '\u{12236}', '\u{12237}', '\u{12238}', '\u{12239}',
- '\u{1223A}', '\u{1223B}', '\u{1223C}', '\u{1223D}', '\u{1223E}', '\u{1223F}', '\u{12240}', '\u{12241}',
- '\u{12242}', '\u{12243}', '\u{12244}', '\u{12245}', '\u{12246}', '\u{12247}', '\u{12248}', '\u{12249}',
- '\u{1224A}', '\u{1224B}', '\u{1224C}', '\u{1224D}', '\u{1224E}', '\u{1224F}', '\u{12250}', '\u{12251}',
- '\u{12252}', '\u{12253}', '\u{12254}', '\u{12255}', '\u{12256}', '\u{12257}', '\u{12258}', '\u{12259}',
- '\u{1225A}', '\u{1225B}', '\u{1225C}', '\u{1225D}', '\u{1225E}', '\u{1225F}', '\u{12260}', '\u{12261}',
- '\u{12262}', '\u{12263}', '\u{12264}', '\u{12265}', '\u{12266}', '\u{12267}', '\u{12268}', '\u{12269}',
- '\u{1226A}', '\u{1226B}', '\u{1226C}', '\u{1226D}', '\u{1226E}', '\u{1226F}', '\u{12270}', '\u{12271}',
- '\u{12272}', '\u{12273}', '\u{12274}', '\u{12275}', '\u{12276}', '\u{12277}', '\u{12278}', '\u{12279}',
- '\u{1227A}', '\u{1227B}', '\u{1227C}', '\u{1227D}', '\u{1227E}', '\u{1227F}', '\u{12280}', '\u{12281}',
- '\u{12282}', '\u{12283}', '\u{12284}', '\u{12285}', '\u{12286}', '\u{12287}', '\u{12288}', '\u{12289}',
- '\u{1228A}', '\u{1228B}', '\u{1228C}', '\u{1228D}', '\u{1228E}', '\u{1228F}', '\u{12290}', '\u{12291}',
- '\u{12292}', '\u{12293}', '\u{12294}', '\u{12295}', '\u{12296}', '\u{12297}', '\u{12298}', '\u{12299}',
- '\u{1229A}', '\u{1229B}', '\u{1229C}', '\u{1229D}', '\u{1229E}', '\u{1229F}', '\u{122A0}', '\u{122A1}',
- '\u{122A2}', '\u{122A3}', '\u{122A4}', '\u{122A5}', '\u{122A6}', '\u{122A7}', '\u{122A8}', '\u{122A9}',
- '\u{122AA}', '\u{122AB}', '\u{122AC}', '\u{122AD}', '\u{122AE}', '\u{122AF}', '\u{122B0}', '\u{122B1}',
- '\u{122B2}', '\u{122B3}', '\u{122B4}', '\u{122B5}', '\u{122B6}', '\u{122B7}', '\u{122B8}', '\u{122B9}',
- '\u{122BA}', '\u{122BB}', '\u{122BC}', '\u{122BD}', '\u{122BE}', '\u{122BF}', '\u{122C0}', '\u{122C1}',
- '\u{122C2}', '\u{122C3}', '\u{122C4}', '\u{122C5}', '\u{122C6}', '\u{122C7}', '\u{122C8}', '\u{122C9}',
- '\u{122CA}', '\u{122CB}', '\u{122CC}', '\u{122CD}', '\u{122CE}', '\u{122CF}', '\u{122D0}', '\u{122D1}',
- '\u{122D2}', '\u{122D3}', '\u{122D4}', '\u{122D5}', '\u{122D6}', '\u{122D7}', '\u{122D8}', '\u{122D9}',
- '\u{122DA}', '\u{122DB}', '\u{122DC}', '\u{122DD}', '\u{122DE}', '\u{122DF}', '\u{122E0}', '\u{122E1}',
- '\u{122E2}', '\u{122E3}', '\u{122E4}', '\u{122E5}', '\u{122E6}', '\u{122E7}', '\u{122E8}', '\u{122E9}',
- '\u{122EA}', '\u{122EB}', '\u{122EC}', '\u{122ED}', '\u{122EE}', '\u{122EF}', '\u{122F0}', '\u{122F1}',
- '\u{122F2}', '\u{122F3}', '\u{122F4}', '\u{122F5}', '\u{122F6}', '\u{122F7}', '\u{122F8}', '\u{122F9}',
- '\u{122FA}', '\u{122FB}', '\u{122FC}', '\u{122FD}', '\u{122FE}', '\u{122FF}', '\u{12300}', '\u{12301}',
- '\u{12302}', '\u{12303}', '\u{12304}', '\u{12305}', '\u{12306}', '\u{12307}', '\u{12308}', '\u{12309}',
- '\u{1230A}', '\u{1230B}', '\u{1230C}', '\u{1230D}', '\u{1230E}', '\u{1230F}', '\u{12310}', '\u{12311}',
- '\u{12312}', '\u{12313}', '\u{12314}', '\u{12315}', '\u{12316}', '\u{12317}', '\u{12318}', '\u{12319}',
- '\u{1231A}', '\u{1231B}', '\u{1231C}', '\u{1231D}', '\u{1231E}', '\u{1231F}', '\u{12320}', '\u{12321}',
- '\u{12322}', '\u{12323}', '\u{12324}', '\u{12325}', '\u{12326}', '\u{12327}', '\u{12328}', '\u{12329}',
- '\u{1232A}', '\u{1232B}', '\u{1232C}', '\u{1232D}', '\u{1232E}', '\u{1232F}', '\u{12330}', '\u{12331}',
- '\u{12332}', '\u{12333}', '\u{12334}', '\u{12335}', '\u{12336}', '\u{12337}', '\u{12338}', '\u{12339}',
- '\u{1233A}', '\u{1233B}', '\u{1233C}', '\u{1233D}', '\u{1233E}', '\u{1233F}', '\u{12340}', '\u{12341}',
- '\u{12342}', '\u{12343}', '\u{12344}', '\u{12345}', '\u{12346}', '\u{12347}', '\u{12348}', '\u{12349}',
- '\u{1234A}', '\u{1234B}', '\u{1234C}', '\u{1234D}', '\u{1234E}', '\u{1234F}', '\u{12350}', '\u{12351}',
- '\u{12352}', '\u{12353}', '\u{12354}', '\u{12355}', '\u{12356}', '\u{12357}', '\u{12358}', '\u{12359}',
- '\u{1235A}', '\u{1235B}', '\u{1235C}', '\u{1235D}', '\u{1235E}', '\u{1235F}', '\u{12360}', '\u{12361}',
- '\u{12362}', '\u{12363}', '\u{12364}', '\u{12365}', '\u{12366}', '\u{12367}', '\u{12368}', '\u{12369}',
- '\u{1236A}', '\u{1236B}', '\u{1236C}', '\u{1236D}', '\u{1236E}', '\u{1236F}', '\u{12370}', '\u{12371}',
- '\u{12372}', '\u{12373}', '\u{12374}', '\u{12375}', '\u{12376}', '\u{12377}', '\u{12378}', '\u{12379}',
- '\u{1237A}', '\u{1237B}', '\u{1237C}', '\u{1237D}', '\u{1237E}', '\u{1237F}', '\u{12380}', '\u{12381}',
- '\u{12382}', '\u{12383}', '\u{12384}', '\u{12385}', '\u{12386}', '\u{12387}', '\u{12388}', '\u{12389}',
- '\u{1238A}', '\u{1238B}', '\u{1238C}', '\u{1238D}', '\u{1238E}', '\u{1238F}', '\u{12390}', '\u{12391}',
- '\u{12392}', '\u{12393}', '\u{12394}', '\u{12395}', '\u{12396}', '\u{12397}', '\u{12398}', '\u{12399}',
- '\u{12480}', '\u{12481}', '\u{12482}', '\u{12483}', '\u{12484}', '\u{12485}', '\u{12486}', '\u{12487}',
- '\u{12488}', '\u{12489}', '\u{1248A}', '\u{1248B}', '\u{1248C}', '\u{1248D}', '\u{1248E}', '\u{1248F}',
- '\u{12490}', '\u{12491}', '\u{12492}', '\u{12493}', '\u{12494}', '\u{12495}', '\u{12496}', '\u{12497}',
- '\u{12498}', '\u{12499}', '\u{1249A}', '\u{1249B}', '\u{1249C}', '\u{1249D}', '\u{1249E}', '\u{1249F}',
- '\u{124A0}', '\u{124A1}', '\u{124A2}', '\u{124A3}', '\u{124A4}', '\u{124A5}', '\u{124A6}', '\u{124A7}',
- '\u{124A8}', '\u{124A9}', '\u{124AA}', '\u{124AB}', '\u{124AC}', '\u{124AD}', '\u{124AE}', '\u{124AF}',
- '\u{124B0}', '\u{124B1}', '\u{124B2}', '\u{124B3}', '\u{124B4}', '\u{124B5}', '\u{124B6}', '\u{124B7}',
- '\u{124B8}', '\u{124B9}', '\u{124BA}', '\u{124BB}', '\u{124BC}', '\u{124BD}', '\u{124BE}', '\u{124BF}',
- '\u{124C0}', '\u{124C1}', '\u{124C2}', '\u{124C3}', '\u{124C4}', '\u{124C5}', '\u{124C6}', '\u{124C7}',
- '\u{124C8}', '\u{124C9}', '\u{124CA}', '\u{124CB}', '\u{124CC}', '\u{124CD}', '\u{124CE}', '\u{124CF}',
- '\u{124D0}', '\u{124D1}', '\u{124D2}', '\u{124D3}', '\u{124D4}', '\u{124D5}', '\u{124D6}', '\u{124D7}',
- '\u{124D8}', '\u{124D9}', '\u{124DA}', '\u{124DB}', '\u{124DC}', '\u{124DD}', '\u{124DE}', '\u{124DF}',
- '\u{124E0}', '\u{124E1}', '\u{124E2}', '\u{124E3}', '\u{124E4}', '\u{124E5}', '\u{124E6}', '\u{124E7}',
- '\u{124E8}', '\u{124E9}', '\u{124EA}', '\u{124EB}', '\u{124EC}', '\u{124ED}', '\u{124EE}', '\u{124EF}',
- '\u{124F0}', '\u{124F1}', '\u{124F2}', '\u{124F3}', '\u{124F4}', '\u{124F5}', '\u{124F6}', '\u{124F7}',
- '\u{124F8}', '\u{124F9}', '\u{124FA}', '\u{124FB}', '\u{124FC}', '\u{124FD}', '\u{124FE}', '\u{124FF}',
- '\u{12500}', '\u{12501}', '\u{12502}', '\u{12503}', '\u{12504}', '\u{12505}', '\u{12506}', '\u{12507}',
- '\u{12508}', '\u{12509}', '\u{1250A}', '\u{1250B}', '\u{1250C}', '\u{1250D}', '\u{1250E}', '\u{1250F}',
- '\u{12510}', '\u{12511}', '\u{12512}', '\u{12513}', '\u{12514}', '\u{12515}', '\u{12516}', '\u{12517}',
- '\u{12518}', '\u{12519}', '\u{1251A}', '\u{1251B}', '\u{1251C}', '\u{1251D}', '\u{1251E}', '\u{1251F}',
- '\u{12520}', '\u{12521}', '\u{12522}', '\u{12523}', '\u{12524}', '\u{12525}', '\u{12526}', '\u{12527}',
- '\u{12528}', '\u{12529}', '\u{1252A}', '\u{1252B}', '\u{1252C}', '\u{1252D}', '\u{1252E}', '\u{1252F}',
- '\u{12530}', '\u{12531}', '\u{12532}', '\u{12533}', '\u{12534}', '\u{12535}', '\u{12536}', '\u{12537}',
- '\u{12538}', '\u{12539}', '\u{1253A}', '\u{1253B}', '\u{1253C}', '\u{1253D}', '\u{1253E}', '\u{1253F}',
- '\u{12540}', '\u{12541}', '\u{12542}', '\u{12543}', '\u{13000}', '\u{13001}', '\u{13002}', '\u{13003}',
- '\u{13004}', '\u{13005}', '\u{13006}', '\u{13007}', '\u{13008}', '\u{13009}', '\u{1300A}', '\u{1300B}',
- '\u{1300C}', '\u{1300D}', '\u{1300E}', '\u{1300F}', '\u{13010}', '\u{13011}', '\u{13012}', '\u{13013}',
- '\u{13014}', '\u{13015}', '\u{13016}', '\u{13017}', '\u{13018}', '\u{13019}', '\u{1301A}', '\u{1301B}',
- '\u{1301C}', '\u{1301D}', '\u{1301E}', '\u{1301F}', '\u{13020}', '\u{13021}', '\u{13022}', '\u{13023}',
- '\u{13024}', '\u{13025}', '\u{13026}', '\u{13027}', '\u{13028}', '\u{13029}', '\u{1302A}', '\u{1302B}',
- '\u{1302C}', '\u{1302D}', '\u{1302E}', '\u{1302F}', '\u{13030}', '\u{13031}', '\u{13032}', '\u{13033}',
- '\u{13034}', '\u{13035}', '\u{13036}', '\u{13037}', '\u{13038}', '\u{13039}', '\u{1303A}', '\u{1303B}',
- '\u{1303C}', '\u{1303D}', '\u{1303E}', '\u{1303F}', '\u{13040}', '\u{13041}', '\u{13042}', '\u{13043}',
- '\u{13044}', '\u{13045}', '\u{13046}', '\u{13047}', '\u{13048}', '\u{13049}', '\u{1304A}', '\u{1304B}',
- '\u{1304C}', '\u{1304D}', '\u{1304E}', '\u{1304F}', '\u{13050}', '\u{13051}', '\u{13052}', '\u{13053}',
- '\u{13054}', '\u{13055}', '\u{13056}', '\u{13057}', '\u{13058}', '\u{13059}', '\u{1305A}', '\u{1305B}',
- '\u{1305C}', '\u{1305D}', '\u{1305E}', '\u{1305F}', '\u{13060}', '\u{13061}', '\u{13062}', '\u{13063}',
- '\u{13064}', '\u{13065}', '\u{13066}', '\u{13067}', '\u{13068}', '\u{13069}', '\u{1306A}', '\u{1306B}',
- '\u{1306C}', '\u{1306D}', '\u{1306E}', '\u{1306F}', '\u{13070}', '\u{13071}', '\u{13072}', '\u{13073}',
- '\u{13074}', '\u{13075}', '\u{13076}', '\u{13077}', '\u{13078}', '\u{13079}', '\u{1307A}', '\u{1307B}',
- '\u{1307C}', '\u{1307D}', '\u{1307E}', '\u{1307F}', '\u{13080}', '\u{13081}', '\u{13082}', '\u{13083}',
- '\u{13084}', '\u{13085}', '\u{13086}', '\u{13087}', '\u{13088}', '\u{13089}', '\u{1308A}', '\u{1308B}',
- '\u{1308C}', '\u{1308D}', '\u{1308E}', '\u{1308F}', '\u{13090}', '\u{13091}', '\u{13092}', '\u{13093}',
- '\u{13094}', '\u{13095}', '\u{13096}', '\u{13097}', '\u{13098}', '\u{13099}', '\u{1309A}', '\u{1309B}',
- '\u{1309C}', '\u{1309D}', '\u{1309E}', '\u{1309F}', '\u{130A0}', '\u{130A1}', '\u{130A2}', '\u{130A3}',
- '\u{130A4}', '\u{130A5}', '\u{130A6}', '\u{130A7}', '\u{130A8}', '\u{130A9}', '\u{130AA}', '\u{130AB}',
- '\u{130AC}', '\u{130AD}', '\u{130AE}', '\u{130AF}', '\u{130B0}', '\u{130B1}', '\u{130B2}', '\u{130B3}',
- '\u{130B4}', '\u{130B5}', '\u{130B6}', '\u{130B7}', '\u{130B8}', '\u{130B9}', '\u{130BA}', '\u{130BB}',
- '\u{130BC}', '\u{130BD}', '\u{130BE}', '\u{130BF}', '\u{130C0}', '\u{130C1}', '\u{130C2}', '\u{130C3}',
- '\u{130C4}', '\u{130C5}', '\u{130C6}', '\u{130C7}', '\u{130C8}', '\u{130C9}', '\u{130CA}', '\u{130CB}',
- '\u{130CC}', '\u{130CD}', '\u{130CE}', '\u{130CF}', '\u{130D0}', '\u{130D1}', '\u{130D2}', '\u{130D3}',
- '\u{130D4}', '\u{130D5}', '\u{130D6}', '\u{130D7}', '\u{130D8}', '\u{130D9}', '\u{130DA}', '\u{130DB}',
- '\u{130DC}', '\u{130DD}', '\u{130DE}', '\u{130DF}', '\u{130E0}', '\u{130E1}', '\u{130E2}', '\u{130E3}',
- '\u{130E4}', '\u{130E5}', '\u{130E6}', '\u{130E7}', '\u{130E8}', '\u{130E9}', '\u{130EA}', '\u{130EB}',
- '\u{130EC}', '\u{130ED}', '\u{130EE}', '\u{130EF}', '\u{130F0}', '\u{130F1}', '\u{130F2}', '\u{130F3}',
- '\u{130F4}', '\u{130F5}', '\u{130F6}', '\u{130F7}', '\u{130F8}', '\u{130F9}', '\u{130FA}', '\u{130FB}',
- '\u{130FC}', '\u{130FD}', '\u{130FE}', '\u{130FF}', '\u{13100}', '\u{13101}', '\u{13102}', '\u{13103}',
- '\u{13104}', '\u{13105}', '\u{13106}', '\u{13107}', '\u{13108}', '\u{13109}', '\u{1310A}', '\u{1310B}',
- '\u{1310C}', '\u{1310D}', '\u{1310E}', '\u{1310F}', '\u{13110}', '\u{13111}', '\u{13112}', '\u{13113}',
- '\u{13114}', '\u{13115}', '\u{13116}', '\u{13117}', '\u{13118}', '\u{13119}', '\u{1311A}', '\u{1311B}',
- '\u{1311C}', '\u{1311D}', '\u{1311E}', '\u{1311F}', '\u{13120}', '\u{13121}', '\u{13122}', '\u{13123}',
- '\u{13124}', '\u{13125}', '\u{13126}', '\u{13127}', '\u{13128}', '\u{13129}', '\u{1312A}', '\u{1312B}',
- '\u{1312C}', '\u{1312D}', '\u{1312E}', '\u{1312F}', '\u{13130}', '\u{13131}', '\u{13132}', '\u{13133}',
- '\u{13134}', '\u{13135}', '\u{13136}', '\u{13137}', '\u{13138}', '\u{13139}', '\u{1313A}', '\u{1313B}',
- '\u{1313C}', '\u{1313D}', '\u{1313E}', '\u{1313F}', '\u{13140}', '\u{13141}', '\u{13142}', '\u{13143}',
- '\u{13144}', '\u{13145}', '\u{13146}', '\u{13147}', '\u{13148}', '\u{13149}', '\u{1314A}', '\u{1314B}',
- '\u{1314C}', '\u{1314D}', '\u{1314E}', '\u{1314F}', '\u{13150}', '\u{13151}', '\u{13152}', '\u{13153}',
- '\u{13154}', '\u{13155}', '\u{13156}', '\u{13157}', '\u{13158}', '\u{13159}', '\u{1315A}', '\u{1315B}',
- '\u{1315C}', '\u{1315D}', '\u{1315E}', '\u{1315F}', '\u{13160}', '\u{13161}', '\u{13162}', '\u{13163}',
- '\u{13164}', '\u{13165}', '\u{13166}', '\u{13167}', '\u{13168}', '\u{13169}', '\u{1316A}', '\u{1316B}',
- '\u{1316C}', '\u{1316D}', '\u{1316E}', '\u{1316F}', '\u{13170}', '\u{13171}', '\u{13172}', '\u{13173}',
- '\u{13174}', '\u{13175}', '\u{13176}', '\u{13177}', '\u{13178}', '\u{13179}', '\u{1317A}', '\u{1317B}',
- '\u{1317C}', '\u{1317D}', '\u{1317E}', '\u{1317F}', '\u{13180}', '\u{13181}', '\u{13182}', '\u{13183}',
- '\u{13184}', '\u{13185}', '\u{13186}', '\u{13187}', '\u{13188}', '\u{13189}', '\u{1318A}', '\u{1318B}',
- '\u{1318C}', '\u{1318D}', '\u{1318E}', '\u{1318F}', '\u{13190}', '\u{13191}', '\u{13192}', '\u{13193}',
- '\u{13194}', '\u{13195}', '\u{13196}', '\u{13197}', '\u{13198}', '\u{13199}', '\u{1319A}', '\u{1319B}',
- '\u{1319C}', '\u{1319D}', '\u{1319E}', '\u{1319F}', '\u{131A0}', '\u{131A1}', '\u{131A2}', '\u{131A3}',
- '\u{131A4}', '\u{131A5}', '\u{131A6}', '\u{131A7}', '\u{131A8}', '\u{131A9}', '\u{131AA}', '\u{131AB}',
- '\u{131AC}', '\u{131AD}', '\u{131AE}', '\u{131AF}', '\u{131B0}', '\u{131B1}', '\u{131B2}', '\u{131B3}',
- '\u{131B4}', '\u{131B5}', '\u{131B6}', '\u{131B7}', '\u{131B8}', '\u{131B9}', '\u{131BA}', '\u{131BB}',
- '\u{131BC}', '\u{131BD}', '\u{131BE}', '\u{131BF}', '\u{131C0}', '\u{131C1}', '\u{131C2}', '\u{131C3}',
- '\u{131C4}', '\u{131C5}', '\u{131C6}', '\u{131C7}', '\u{131C8}', '\u{131C9}', '\u{131CA}', '\u{131CB}',
- '\u{131CC}', '\u{131CD}', '\u{131CE}', '\u{131CF}', '\u{131D0}', '\u{131D1}', '\u{131D2}', '\u{131D3}',
- '\u{131D4}', '\u{131D5}', '\u{131D6}', '\u{131D7}', '\u{131D8}', '\u{131D9}', '\u{131DA}', '\u{131DB}',
- '\u{131DC}', '\u{131DD}', '\u{131DE}', '\u{131DF}', '\u{131E0}', '\u{131E1}', '\u{131E2}', '\u{131E3}',
- '\u{131E4}', '\u{131E5}', '\u{131E6}', '\u{131E7}', '\u{131E8}', '\u{131E9}', '\u{131EA}', '\u{131EB}',
- '\u{131EC}', '\u{131ED}', '\u{131EE}', '\u{131EF}', '\u{131F0}', '\u{131F1}', '\u{131F2}', '\u{131F3}',
- '\u{131F4}', '\u{131F5}', '\u{131F6}', '\u{131F7}', '\u{131F8}', '\u{131F9}', '\u{131FA}', '\u{131FB}',
- '\u{131FC}', '\u{131FD}', '\u{131FE}', '\u{131FF}', '\u{13200}', '\u{13201}', '\u{13202}', '\u{13203}',
- '\u{13204}', '\u{13205}', '\u{13206}', '\u{13207}', '\u{13208}', '\u{13209}', '\u{1320A}', '\u{1320B}',
- '\u{1320C}', '\u{1320D}', '\u{1320E}', '\u{1320F}', '\u{13210}', '\u{13211}', '\u{13212}', '\u{13213}',
- '\u{13214}', '\u{13215}', '\u{13216}', '\u{13217}', '\u{13218}', '\u{13219}', '\u{1321A}', '\u{1321B}',
- '\u{1321C}', '\u{1321D}', '\u{1321E}', '\u{1321F}', '\u{13220}', '\u{13221}', '\u{13222}', '\u{13223}',
- '\u{13224}', '\u{13225}', '\u{13226}', '\u{13227}', '\u{13228}', '\u{13229}', '\u{1322A}', '\u{1322B}',
- '\u{1322C}', '\u{1322D}', '\u{1322E}', '\u{1322F}', '\u{13230}', '\u{13231}', '\u{13232}', '\u{13233}',
- '\u{13234}', '\u{13235}', '\u{13236}', '\u{13237}', '\u{13238}', '\u{13239}', '\u{1323A}', '\u{1323B}',
- '\u{1323C}', '\u{1323D}', '\u{1323E}', '\u{1323F}', '\u{13240}', '\u{13241}', '\u{13242}', '\u{13243}',
- '\u{13244}', '\u{13245}', '\u{13246}', '\u{13247}', '\u{13248}', '\u{13249}', '\u{1324A}', '\u{1324B}',
- '\u{1324C}', '\u{1324D}', '\u{1324E}', '\u{1324F}', '\u{13250}', '\u{13251}', '\u{13252}', '\u{13253}',
- '\u{13254}', '\u{13255}', '\u{13256}', '\u{13257}', '\u{13258}', '\u{13259}', '\u{1325A}', '\u{1325B}',
- '\u{1325C}', '\u{1325D}', '\u{1325E}', '\u{1325F}', '\u{13260}', '\u{13261}', '\u{13262}', '\u{13263}',
- '\u{13264}', '\u{13265}', '\u{13266}', '\u{13267}', '\u{13268}', '\u{13269}', '\u{1326A}', '\u{1326B}',
- '\u{1326C}', '\u{1326D}', '\u{1326E}', '\u{1326F}', '\u{13270}', '\u{13271}', '\u{13272}', '\u{13273}',
- '\u{13274}', '\u{13275}', '\u{13276}', '\u{13277}', '\u{13278}', '\u{13279}', '\u{1327A}', '\u{1327B}',
- '\u{1327C}', '\u{1327D}', '\u{1327E}', '\u{1327F}', '\u{13280}', '\u{13281}', '\u{13282}', '\u{13283}',
- '\u{13284}', '\u{13285}', '\u{13286}', '\u{13287}', '\u{13288}', '\u{13289}', '\u{1328A}', '\u{1328B}',
- '\u{1328C}', '\u{1328D}', '\u{1328E}', '\u{1328F}', '\u{13290}', '\u{13291}', '\u{13292}', '\u{13293}',
- '\u{13294}', '\u{13295}', '\u{13296}', '\u{13297}', '\u{13298}', '\u{13299}', '\u{1329A}', '\u{1329B}',
- '\u{1329C}', '\u{1329D}', '\u{1329E}', '\u{1329F}', '\u{132A0}', '\u{132A1}', '\u{132A2}', '\u{132A3}',
- '\u{132A4}', '\u{132A5}', '\u{132A6}', '\u{132A7}', '\u{132A8}', '\u{132A9}', '\u{132AA}', '\u{132AB}',
- '\u{132AC}', '\u{132AD}', '\u{132AE}', '\u{132AF}', '\u{132B0}', '\u{132B1}', '\u{132B2}', '\u{132B3}',
- '\u{132B4}', '\u{132B5}', '\u{132B6}', '\u{132B7}', '\u{132B8}', '\u{132B9}', '\u{132BA}', '\u{132BB}',
- '\u{132BC}', '\u{132BD}', '\u{132BE}', '\u{132BF}', '\u{132C0}', '\u{132C1}', '\u{132C2}', '\u{132C3}',
- '\u{132C4}', '\u{132C5}', '\u{132C6}', '\u{132C7}', '\u{132C8}', '\u{132C9}', '\u{132CA}', '\u{132CB}',
- '\u{132CC}', '\u{132CD}', '\u{132CE}', '\u{132CF}', '\u{132D0}', '\u{132D1}', '\u{132D2}', '\u{132D3}',
- '\u{132D4}', '\u{132D5}', '\u{132D6}', '\u{132D7}', '\u{132D8}', '\u{132D9}', '\u{132DA}', '\u{132DB}',
- '\u{132DC}', '\u{132DD}', '\u{132DE}', '\u{132DF}', '\u{132E0}', '\u{132E1}', '\u{132E2}', '\u{132E3}',
- '\u{132E4}', '\u{132E5}', '\u{132E6}', '\u{132E7}', '\u{132E8}', '\u{132E9}', '\u{132EA}', '\u{132EB}',
- '\u{132EC}', '\u{132ED}', '\u{132EE}', '\u{132EF}', '\u{132F0}', '\u{132F1}', '\u{132F2}', '\u{132F3}',
- '\u{132F4}', '\u{132F5}', '\u{132F6}', '\u{132F7}', '\u{132F8}', '\u{132F9}', '\u{132FA}', '\u{132FB}',
- '\u{132FC}', '\u{132FD}', '\u{132FE}', '\u{132FF}', '\u{13300}', '\u{13301}', '\u{13302}', '\u{13303}',
- '\u{13304}', '\u{13305}', '\u{13306}', '\u{13307}', '\u{13308}', '\u{13309}', '\u{1330A}', '\u{1330B}',
- '\u{1330C}', '\u{1330D}', '\u{1330E}', '\u{1330F}', '\u{13310}', '\u{13311}', '\u{13312}', '\u{13313}',
- '\u{13314}', '\u{13315}', '\u{13316}', '\u{13317}', '\u{13318}', '\u{13319}', '\u{1331A}', '\u{1331B}',
- '\u{1331C}', '\u{1331D}', '\u{1331E}', '\u{1331F}', '\u{13320}', '\u{13321}', '\u{13322}', '\u{13323}',
- '\u{13324}', '\u{13325}', '\u{13326}', '\u{13327}', '\u{13328}', '\u{13329}', '\u{1332A}', '\u{1332B}',
- '\u{1332C}', '\u{1332D}', '\u{1332E}', '\u{1332F}', '\u{13330}', '\u{13331}', '\u{13332}', '\u{13333}',
- '\u{13334}', '\u{13335}', '\u{13336}', '\u{13337}', '\u{13338}', '\u{13339}', '\u{1333A}', '\u{1333B}',
- '\u{1333C}', '\u{1333D}', '\u{1333E}', '\u{1333F}', '\u{13340}', '\u{13341}', '\u{13342}', '\u{13343}',
- '\u{13344}', '\u{13345}', '\u{13346}', '\u{13347}', '\u{13348}', '\u{13349}', '\u{1334A}', '\u{1334B}',
- '\u{1334C}', '\u{1334D}', '\u{1334E}', '\u{1334F}', '\u{13350}', '\u{13351}', '\u{13352}', '\u{13353}',
- '\u{13354}', '\u{13355}', '\u{13356}', '\u{13357}', '\u{13358}', '\u{13359}', '\u{1335A}', '\u{1335B}',
- '\u{1335C}', '\u{1335D}', '\u{1335E}', '\u{1335F}', '\u{13360}', '\u{13361}', '\u{13362}', '\u{13363}',
- '\u{13364}', '\u{13365}', '\u{13366}', '\u{13367}', '\u{13368}', '\u{13369}', '\u{1336A}', '\u{1336B}',
- '\u{1336C}', '\u{1336D}', '\u{1336E}', '\u{1336F}', '\u{13370}', '\u{13371}', '\u{13372}', '\u{13373}',
- '\u{13374}', '\u{13375}', '\u{13376}', '\u{13377}', '\u{13378}', '\u{13379}', '\u{1337A}', '\u{1337B}',
- '\u{1337C}', '\u{1337D}', '\u{1337E}', '\u{1337F}', '\u{13380}', '\u{13381}', '\u{13382}', '\u{13383}',
- '\u{13384}', '\u{13385}', '\u{13386}', '\u{13387}', '\u{13388}', '\u{13389}', '\u{1338A}', '\u{1338B}',
- '\u{1338C}', '\u{1338D}', '\u{1338E}', '\u{1338F}', '\u{13390}', '\u{13391}', '\u{13392}', '\u{13393}',
- '\u{13394}', '\u{13395}', '\u{13396}', '\u{13397}', '\u{13398}', '\u{13399}', '\u{1339A}', '\u{1339B}',
- '\u{1339C}', '\u{1339D}', '\u{1339E}', '\u{1339F}', '\u{133A0}', '\u{133A1}', '\u{133A2}', '\u{133A3}',
- '\u{133A4}', '\u{133A5}', '\u{133A6}', '\u{133A7}', '\u{133A8}', '\u{133A9}', '\u{133AA}', '\u{133AB}',
- '\u{133AC}', '\u{133AD}', '\u{133AE}', '\u{133AF}', '\u{133B0}', '\u{133B1}', '\u{133B2}', '\u{133B3}',
- '\u{133B4}', '\u{133B5}', '\u{133B6}', '\u{133B7}', '\u{133B8}', '\u{133B9}', '\u{133BA}', '\u{133BB}',
- '\u{133BC}', '\u{133BD}', '\u{133BE}', '\u{133BF}', '\u{133C0}', '\u{133C1}', '\u{133C2}', '\u{133C3}',
- '\u{133C4}', '\u{133C5}', '\u{133C6}', '\u{133C7}', '\u{133C8}', '\u{133C9}', '\u{133CA}', '\u{133CB}',
- '\u{133CC}', '\u{133CD}', '\u{133CE}', '\u{133CF}', '\u{133D0}', '\u{133D1}', '\u{133D2}', '\u{133D3}',
- '\u{133D4}', '\u{133D5}', '\u{133D6}', '\u{133D7}', '\u{133D8}', '\u{133D9}', '\u{133DA}', '\u{133DB}',
- '\u{133DC}', '\u{133DD}', '\u{133DE}', '\u{133DF}', '\u{133E0}', '\u{133E1}', '\u{133E2}', '\u{133E3}',
- '\u{133E4}', '\u{133E5}', '\u{133E6}', '\u{133E7}', '\u{133E8}', '\u{133E9}', '\u{133EA}', '\u{133EB}',
- '\u{133EC}', '\u{133ED}', '\u{133EE}', '\u{133EF}', '\u{133F0}', '\u{133F1}', '\u{133F2}', '\u{133F3}',
- '\u{133F4}', '\u{133F5}', '\u{133F6}', '\u{133F7}', '\u{133F8}', '\u{133F9}', '\u{133FA}', '\u{133FB}',
- '\u{133FC}', '\u{133FD}', '\u{133FE}', '\u{133FF}', '\u{13400}', '\u{13401}', '\u{13402}', '\u{13403}',
- '\u{13404}', '\u{13405}', '\u{13406}', '\u{13407}', '\u{13408}', '\u{13409}', '\u{1340A}', '\u{1340B}',
- '\u{1340C}', '\u{1340D}', '\u{1340E}', '\u{1340F}', '\u{13410}', '\u{13411}', '\u{13412}', '\u{13413}',
- '\u{13414}', '\u{13415}', '\u{13416}', '\u{13417}', '\u{13418}', '\u{13419}', '\u{1341A}', '\u{1341B}',
- '\u{1341C}', '\u{1341D}', '\u{1341E}', '\u{1341F}', '\u{13420}', '\u{13421}', '\u{13422}', '\u{13423}',
- '\u{13424}', '\u{13425}', '\u{13426}', '\u{13427}', '\u{13428}', '\u{13429}', '\u{1342A}', '\u{1342B}',
- '\u{1342C}', '\u{1342D}', '\u{1342E}', '\u{14400}', '\u{14401}', '\u{14402}', '\u{14403}', '\u{14404}',
- '\u{14405}', '\u{14406}', '\u{14407}', '\u{14408}', '\u{14409}', '\u{1440A}', '\u{1440B}', '\u{1440C}',
- '\u{1440D}', '\u{1440E}', '\u{1440F}', '\u{14410}', '\u{14411}', '\u{14412}', '\u{14413}', '\u{14414}',
- '\u{14415}', '\u{14416}', '\u{14417}', '\u{14418}', '\u{14419}', '\u{1441A}', '\u{1441B}', '\u{1441C}',
- '\u{1441D}', '\u{1441E}', '\u{1441F}', '\u{14420}', '\u{14421}', '\u{14422}', '\u{14423}', '\u{14424}',
- '\u{14425}', '\u{14426}', '\u{14427}', '\u{14428}', '\u{14429}', '\u{1442A}', '\u{1442B}', '\u{1442C}',
- '\u{1442D}', '\u{1442E}', '\u{1442F}', '\u{14430}', '\u{14431}', '\u{14432}', '\u{14433}', '\u{14434}',
- '\u{14435}', '\u{14436}', '\u{14437}', '\u{14438}', '\u{14439}', '\u{1443A}', '\u{1443B}', '\u{1443C}',
- '\u{1443D}', '\u{1443E}', '\u{1443F}', '\u{14440}', '\u{14441}', '\u{14442}', '\u{14443}', '\u{14444}',
- '\u{14445}', '\u{14446}', '\u{14447}', '\u{14448}', '\u{14449}', '\u{1444A}', '\u{1444B}', '\u{1444C}',
- '\u{1444D}', '\u{1444E}', '\u{1444F}', '\u{14450}', '\u{14451}', '\u{14452}', '\u{14453}', '\u{14454}',
- '\u{14455}', '\u{14456}', '\u{14457}', '\u{14458}', '\u{14459}', '\u{1445A}', '\u{1445B}', '\u{1445C}',
- '\u{1445D}', '\u{1445E}', '\u{1445F}', '\u{14460}', '\u{14461}', '\u{14462}', '\u{14463}', '\u{14464}',
- '\u{14465}', '\u{14466}', '\u{14467}', '\u{14468}', '\u{14469}', '\u{1446A}', '\u{1446B}', '\u{1446C}',
- '\u{1446D}', '\u{1446E}', '\u{1446F}', '\u{14470}', '\u{14471}', '\u{14472}', '\u{14473}', '\u{14474}',
- '\u{14475}', '\u{14476}', '\u{14477}', '\u{14478}', '\u{14479}', '\u{1447A}', '\u{1447B}', '\u{1447C}',
- '\u{1447D}', '\u{1447E}', '\u{1447F}', '\u{14480}', '\u{14481}', '\u{14482}', '\u{14483}', '\u{14484}',
- '\u{14485}', '\u{14486}', '\u{14487}', '\u{14488}', '\u{14489}', '\u{1448A}', '\u{1448B}', '\u{1448C}',
- '\u{1448D}', '\u{1448E}', '\u{1448F}', '\u{14490}', '\u{14491}', '\u{14492}', '\u{14493}', '\u{14494}',
- '\u{14495}', '\u{14496}', '\u{14497}', '\u{14498}', '\u{14499}', '\u{1449A}', '\u{1449B}', '\u{1449C}',
- '\u{1449D}', '\u{1449E}', '\u{1449F}', '\u{144A0}', '\u{144A1}', '\u{144A2}', '\u{144A3}', '\u{144A4}',
- '\u{144A5}', '\u{144A6}', '\u{144A7}', '\u{144A8}', '\u{144A9}', '\u{144AA}', '\u{144AB}', '\u{144AC}',
- '\u{144AD}', '\u{144AE}', '\u{144AF}', '\u{144B0}', '\u{144B1}', '\u{144B2}', '\u{144B3}', '\u{144B4}',
- '\u{144B5}', '\u{144B6}', '\u{144B7}', '\u{144B8}', '\u{144B9}', '\u{144BA}', '\u{144BB}', '\u{144BC}',
- '\u{144BD}', '\u{144BE}', '\u{144BF}', '\u{144C0}', '\u{144C1}', '\u{144C2}', '\u{144C3}', '\u{144C4}',
- '\u{144C5}', '\u{144C6}', '\u{144C7}', '\u{144C8}', '\u{144C9}', '\u{144CA}', '\u{144CB}', '\u{144CC}',
- '\u{144CD}', '\u{144CE}', '\u{144CF}', '\u{144D0}', '\u{144D1}', '\u{144D2}', '\u{144D3}', '\u{144D4}',
- '\u{144D5}', '\u{144D6}', '\u{144D7}', '\u{144D8}', '\u{144D9}', '\u{144DA}', '\u{144DB}', '\u{144DC}',
- '\u{144DD}', '\u{144DE}', '\u{144DF}', '\u{144E0}', '\u{144E1}', '\u{144E2}', '\u{144E3}', '\u{144E4}',
- '\u{144E5}', '\u{144E6}', '\u{144E7}', '\u{144E8}', '\u{144E9}', '\u{144EA}', '\u{144EB}', '\u{144EC}',
- '\u{144ED}', '\u{144EE}', '\u{144EF}', '\u{144F0}', '\u{144F1}', '\u{144F2}', '\u{144F3}', '\u{144F4}',
- '\u{144F5}', '\u{144F6}', '\u{144F7}', '\u{144F8}', '\u{144F9}', '\u{144FA}', '\u{144FB}', '\u{144FC}',
- '\u{144FD}', '\u{144FE}', '\u{144FF}', '\u{14500}', '\u{14501}', '\u{14502}', '\u{14503}', '\u{14504}',
- '\u{14505}', '\u{14506}', '\u{14507}', '\u{14508}', '\u{14509}', '\u{1450A}', '\u{1450B}', '\u{1450C}',
- '\u{1450D}', '\u{1450E}', '\u{1450F}', '\u{14510}', '\u{14511}', '\u{14512}', '\u{14513}', '\u{14514}',
- '\u{14515}', '\u{14516}', '\u{14517}', '\u{14518}', '\u{14519}', '\u{1451A}', '\u{1451B}', '\u{1451C}',
- '\u{1451D}', '\u{1451E}', '\u{1451F}', '\u{14520}', '\u{14521}', '\u{14522}', '\u{14523}', '\u{14524}',
- '\u{14525}', '\u{14526}', '\u{14527}', '\u{14528}', '\u{14529}', '\u{1452A}', '\u{1452B}', '\u{1452C}',
- '\u{1452D}', '\u{1452E}', '\u{1452F}', '\u{14530}', '\u{14531}', '\u{14532}', '\u{14533}', '\u{14534}',
- '\u{14535}', '\u{14536}', '\u{14537}', '\u{14538}', '\u{14539}', '\u{1453A}', '\u{1453B}', '\u{1453C}',
- '\u{1453D}', '\u{1453E}', '\u{1453F}', '\u{14540}', '\u{14541}', '\u{14542}', '\u{14543}', '\u{14544}',
- '\u{14545}', '\u{14546}', '\u{14547}', '\u{14548}', '\u{14549}', '\u{1454A}', '\u{1454B}', '\u{1454C}',
- '\u{1454D}', '\u{1454E}', '\u{1454F}', '\u{14550}', '\u{14551}', '\u{14552}', '\u{14553}', '\u{14554}',
- '\u{14555}', '\u{14556}', '\u{14557}', '\u{14558}', '\u{14559}', '\u{1455A}', '\u{1455B}', '\u{1455C}',
- '\u{1455D}', '\u{1455E}', '\u{1455F}', '\u{14560}', '\u{14561}', '\u{14562}', '\u{14563}', '\u{14564}',
- '\u{14565}', '\u{14566}', '\u{14567}', '\u{14568}', '\u{14569}', '\u{1456A}', '\u{1456B}', '\u{1456C}',
- '\u{1456D}', '\u{1456E}', '\u{1456F}', '\u{14570}', '\u{14571}', '\u{14572}', '\u{14573}', '\u{14574}',
- '\u{14575}', '\u{14576}', '\u{14577}', '\u{14578}', '\u{14579}', '\u{1457A}', '\u{1457B}', '\u{1457C}',
- '\u{1457D}', '\u{1457E}', '\u{1457F}', '\u{14580}', '\u{14581}', '\u{14582}', '\u{14583}', '\u{14584}',
- '\u{14585}', '\u{14586}', '\u{14587}', '\u{14588}', '\u{14589}', '\u{1458A}', '\u{1458B}', '\u{1458C}',
- '\u{1458D}', '\u{1458E}', '\u{1458F}', '\u{14590}', '\u{14591}', '\u{14592}', '\u{14593}', '\u{14594}',
- '\u{14595}', '\u{14596}', '\u{14597}', '\u{14598}', '\u{14599}', '\u{1459A}', '\u{1459B}', '\u{1459C}',
- '\u{1459D}', '\u{1459E}', '\u{1459F}', '\u{145A0}', '\u{145A1}', '\u{145A2}', '\u{145A3}', '\u{145A4}',
- '\u{145A5}', '\u{145A6}', '\u{145A7}', '\u{145A8}', '\u{145A9}', '\u{145AA}', '\u{145AB}', '\u{145AC}',
- '\u{145AD}', '\u{145AE}', '\u{145AF}', '\u{145B0}', '\u{145B1}', '\u{145B2}', '\u{145B3}', '\u{145B4}',
- '\u{145B5}', '\u{145B6}', '\u{145B7}', '\u{145B8}', '\u{145B9}', '\u{145BA}', '\u{145BB}', '\u{145BC}',
- '\u{145BD}', '\u{145BE}', '\u{145BF}', '\u{145C0}', '\u{145C1}', '\u{145C2}', '\u{145C3}', '\u{145C4}',
- '\u{145C5}', '\u{145C6}', '\u{145C7}', '\u{145C8}', '\u{145C9}', '\u{145CA}', '\u{145CB}', '\u{145CC}',
- '\u{145CD}', '\u{145CE}', '\u{145CF}', '\u{145D0}', '\u{145D1}', '\u{145D2}', '\u{145D3}', '\u{145D4}',
- '\u{145D5}', '\u{145D6}', '\u{145D7}', '\u{145D8}', '\u{145D9}', '\u{145DA}', '\u{145DB}', '\u{145DC}',
- '\u{145DD}', '\u{145DE}', '\u{145DF}', '\u{145E0}', '\u{145E1}', '\u{145E2}', '\u{145E3}', '\u{145E4}',
- '\u{145E5}', '\u{145E6}', '\u{145E7}', '\u{145E8}', '\u{145E9}', '\u{145EA}', '\u{145EB}', '\u{145EC}',
- '\u{145ED}', '\u{145EE}', '\u{145EF}', '\u{145F0}', '\u{145F1}', '\u{145F2}', '\u{145F3}', '\u{145F4}',
- '\u{145F5}', '\u{145F6}', '\u{145F7}', '\u{145F8}', '\u{145F9}', '\u{145FA}', '\u{145FB}', '\u{145FC}',
- '\u{145FD}', '\u{145FE}', '\u{145FF}', '\u{14600}', '\u{14601}', '\u{14602}', '\u{14603}', '\u{14604}',
- '\u{14605}', '\u{14606}', '\u{14607}', '\u{14608}', '\u{14609}', '\u{1460A}', '\u{1460B}', '\u{1460C}',
- '\u{1460D}', '\u{1460E}', '\u{1460F}', '\u{14610}', '\u{14611}', '\u{14612}', '\u{14613}', '\u{14614}',
- '\u{14615}', '\u{14616}', '\u{14617}', '\u{14618}', '\u{14619}', '\u{1461A}', '\u{1461B}', '\u{1461C}',
- '\u{1461D}', '\u{1461E}', '\u{1461F}', '\u{14620}', '\u{14621}', '\u{14622}', '\u{14623}', '\u{14624}',
- '\u{14625}', '\u{14626}', '\u{14627}', '\u{14628}', '\u{14629}', '\u{1462A}', '\u{1462B}', '\u{1462C}',
- '\u{1462D}', '\u{1462E}', '\u{1462F}', '\u{14630}', '\u{14631}', '\u{14632}', '\u{14633}', '\u{14634}',
- '\u{14635}', '\u{14636}', '\u{14637}', '\u{14638}', '\u{14639}', '\u{1463A}', '\u{1463B}', '\u{1463C}',
- '\u{1463D}', '\u{1463E}', '\u{1463F}', '\u{14640}', '\u{14641}', '\u{14642}', '\u{14643}', '\u{14644}',
- '\u{14645}', '\u{14646}', '\u{16800}', '\u{16801}', '\u{16802}', '\u{16803}', '\u{16804}', '\u{16805}',
- '\u{16806}', '\u{16807}', '\u{16808}', '\u{16809}', '\u{1680A}', '\u{1680B}', '\u{1680C}', '\u{1680D}',
- '\u{1680E}', '\u{1680F}', '\u{16810}', '\u{16811}', '\u{16812}', '\u{16813}', '\u{16814}', '\u{16815}',
- '\u{16816}', '\u{16817}', '\u{16818}', '\u{16819}', '\u{1681A}', '\u{1681B}', '\u{1681C}', '\u{1681D}',
- '\u{1681E}', '\u{1681F}', '\u{16820}', '\u{16821}', '\u{16822}', '\u{16823}', '\u{16824}', '\u{16825}',
- '\u{16826}', '\u{16827}', '\u{16828}', '\u{16829}', '\u{1682A}', '\u{1682B}', '\u{1682C}', '\u{1682D}',
- '\u{1682E}', '\u{1682F}', '\u{16830}', '\u{16831}', '\u{16832}', '\u{16833}', '\u{16834}', '\u{16835}',
- '\u{16836}', '\u{16837}', '\u{16838}', '\u{16839}', '\u{1683A}', '\u{1683B}', '\u{1683C}', '\u{1683D}',
- '\u{1683E}', '\u{1683F}', '\u{16840}', '\u{16841}', '\u{16842}', '\u{16843}', '\u{16844}', '\u{16845}',
- '\u{16846}', '\u{16847}', '\u{16848}', '\u{16849}', '\u{1684A}', '\u{1684B}', '\u{1684C}', '\u{1684D}',
- '\u{1684E}', '\u{1684F}', '\u{16850}', '\u{16851}', '\u{16852}', '\u{16853}', '\u{16854}', '\u{16855}',
- '\u{16856}', '\u{16857}', '\u{16858}', '\u{16859}', '\u{1685A}', '\u{1685B}', '\u{1685C}', '\u{1685D}',
- '\u{1685E}', '\u{1685F}', '\u{16860}', '\u{16861}', '\u{16862}', '\u{16863}', '\u{16864}', '\u{16865}',
- '\u{16866}', '\u{16867}', '\u{16868}', '\u{16869}', '\u{1686A}', '\u{1686B}', '\u{1686C}', '\u{1686D}',
- '\u{1686E}', '\u{1686F}', '\u{16870}', '\u{16871}', '\u{16872}', '\u{16873}', '\u{16874}', '\u{16875}',
- '\u{16876}', '\u{16877}', '\u{16878}', '\u{16879}', '\u{1687A}', '\u{1687B}', '\u{1687C}', '\u{1687D}',
- '\u{1687E}', '\u{1687F}', '\u{16880}', '\u{16881}', '\u{16882}', '\u{16883}', '\u{16884}', '\u{16885}',
- '\u{16886}', '\u{16887}', '\u{16888}', '\u{16889}', '\u{1688A}', '\u{1688B}', '\u{1688C}', '\u{1688D}',
- '\u{1688E}', '\u{1688F}', '\u{16890}', '\u{16891}', '\u{16892}', '\u{16893}', '\u{16894}', '\u{16895}',
- '\u{16896}', '\u{16897}', '\u{16898}', '\u{16899}', '\u{1689A}', '\u{1689B}', '\u{1689C}', '\u{1689D}',
- '\u{1689E}', '\u{1689F}', '\u{168A0}', '\u{168A1}', '\u{168A2}', '\u{168A3}', '\u{168A4}', '\u{168A5}',
- '\u{168A6}', '\u{168A7}', '\u{168A8}', '\u{168A9}', '\u{168AA}', '\u{168AB}', '\u{168AC}', '\u{168AD}',
- '\u{168AE}', '\u{168AF}', '\u{168B0}', '\u{168B1}', '\u{168B2}', '\u{168B3}', '\u{168B4}', '\u{168B5}',
- '\u{168B6}', '\u{168B7}', '\u{168B8}', '\u{168B9}', '\u{168BA}', '\u{168BB}', '\u{168BC}', '\u{168BD}',
- '\u{168BE}', '\u{168BF}', '\u{168C0}', '\u{168C1}', '\u{168C2}', '\u{168C3}', '\u{168C4}', '\u{168C5}',
- '\u{168C6}', '\u{168C7}', '\u{168C8}', '\u{168C9}', '\u{168CA}', '\u{168CB}', '\u{168CC}', '\u{168CD}',
- '\u{168CE}', '\u{168CF}', '\u{168D0}', '\u{168D1}', '\u{168D2}', '\u{168D3}', '\u{168D4}', '\u{168D5}',
- '\u{168D6}', '\u{168D7}', '\u{168D8}', '\u{168D9}', '\u{168DA}', '\u{168DB}', '\u{168DC}', '\u{168DD}',
- '\u{168DE}', '\u{168DF}', '\u{168E0}', '\u{168E1}', '\u{168E2}', '\u{168E3}', '\u{168E4}', '\u{168E5}',
- '\u{168E6}', '\u{168E7}', '\u{168E8}', '\u{168E9}', '\u{168EA}', '\u{168EB}', '\u{168EC}', '\u{168ED}',
- '\u{168EE}', '\u{168EF}', '\u{168F0}', '\u{168F1}', '\u{168F2}', '\u{168F3}', '\u{168F4}', '\u{168F5}',
- '\u{168F6}', '\u{168F7}', '\u{168F8}', '\u{168F9}', '\u{168FA}', '\u{168FB}', '\u{168FC}', '\u{168FD}',
- '\u{168FE}', '\u{168FF}', '\u{16900}', '\u{16901}', '\u{16902}', '\u{16903}', '\u{16904}', '\u{16905}',
- '\u{16906}', '\u{16907}', '\u{16908}', '\u{16909}', '\u{1690A}', '\u{1690B}', '\u{1690C}', '\u{1690D}',
- '\u{1690E}', '\u{1690F}', '\u{16910}', '\u{16911}', '\u{16912}', '\u{16913}', '\u{16914}', '\u{16915}',
- '\u{16916}', '\u{16917}', '\u{16918}', '\u{16919}', '\u{1691A}', '\u{1691B}', '\u{1691C}', '\u{1691D}',
- '\u{1691E}', '\u{1691F}', '\u{16920}', '\u{16921}', '\u{16922}', '\u{16923}', '\u{16924}', '\u{16925}',
- '\u{16926}', '\u{16927}', '\u{16928}', '\u{16929}', '\u{1692A}', '\u{1692B}', '\u{1692C}', '\u{1692D}',
- '\u{1692E}', '\u{1692F}', '\u{16930}', '\u{16931}', '\u{16932}', '\u{16933}', '\u{16934}', '\u{16935}',
- '\u{16936}', '\u{16937}', '\u{16938}', '\u{16939}', '\u{1693A}', '\u{1693B}', '\u{1693C}', '\u{1693D}',
- '\u{1693E}', '\u{1693F}', '\u{16940}', '\u{16941}', '\u{16942}', '\u{16943}', '\u{16944}', '\u{16945}',
- '\u{16946}', '\u{16947}', '\u{16948}', '\u{16949}', '\u{1694A}', '\u{1694B}', '\u{1694C}', '\u{1694D}',
- '\u{1694E}', '\u{1694F}', '\u{16950}', '\u{16951}', '\u{16952}', '\u{16953}', '\u{16954}', '\u{16955}',
- '\u{16956}', '\u{16957}', '\u{16958}', '\u{16959}', '\u{1695A}', '\u{1695B}', '\u{1695C}', '\u{1695D}',
- '\u{1695E}', '\u{1695F}', '\u{16960}', '\u{16961}', '\u{16962}', '\u{16963}', '\u{16964}', '\u{16965}',
- '\u{16966}', '\u{16967}', '\u{16968}', '\u{16969}', '\u{1696A}', '\u{1696B}', '\u{1696C}', '\u{1696D}',
- '\u{1696E}', '\u{1696F}', '\u{16970}', '\u{16971}', '\u{16972}', '\u{16973}', '\u{16974}', '\u{16975}',
- '\u{16976}', '\u{16977}', '\u{16978}', '\u{16979}', '\u{1697A}', '\u{1697B}', '\u{1697C}', '\u{1697D}',
- '\u{1697E}', '\u{1697F}', '\u{16980}', '\u{16981}', '\u{16982}', '\u{16983}', '\u{16984}', '\u{16985}',
- '\u{16986}', '\u{16987}', '\u{16988}', '\u{16989}', '\u{1698A}', '\u{1698B}', '\u{1698C}', '\u{1698D}',
- '\u{1698E}', '\u{1698F}', '\u{16990}', '\u{16991}', '\u{16992}', '\u{16993}', '\u{16994}', '\u{16995}',
- '\u{16996}', '\u{16997}', '\u{16998}', '\u{16999}', '\u{1699A}', '\u{1699B}', '\u{1699C}', '\u{1699D}',
- '\u{1699E}', '\u{1699F}', '\u{169A0}', '\u{169A1}', '\u{169A2}', '\u{169A3}', '\u{169A4}', '\u{169A5}',
- '\u{169A6}', '\u{169A7}', '\u{169A8}', '\u{169A9}', '\u{169AA}', '\u{169AB}', '\u{169AC}', '\u{169AD}',
- '\u{169AE}', '\u{169AF}', '\u{169B0}', '\u{169B1}', '\u{169B2}', '\u{169B3}', '\u{169B4}', '\u{169B5}',
- '\u{169B6}', '\u{169B7}', '\u{169B8}', '\u{169B9}', '\u{169BA}', '\u{169BB}', '\u{169BC}', '\u{169BD}',
- '\u{169BE}', '\u{169BF}', '\u{169C0}', '\u{169C1}', '\u{169C2}', '\u{169C3}', '\u{169C4}', '\u{169C5}',
- '\u{169C6}', '\u{169C7}', '\u{169C8}', '\u{169C9}', '\u{169CA}', '\u{169CB}', '\u{169CC}', '\u{169CD}',
- '\u{169CE}', '\u{169CF}', '\u{169D0}', '\u{169D1}', '\u{169D2}', '\u{169D3}', '\u{169D4}', '\u{169D5}',
- '\u{169D6}', '\u{169D7}', '\u{169D8}', '\u{169D9}', '\u{169DA}', '\u{169DB}', '\u{169DC}', '\u{169DD}',
- '\u{169DE}', '\u{169DF}', '\u{169E0}', '\u{169E1}', '\u{169E2}', '\u{169E3}', '\u{169E4}', '\u{169E5}',
- '\u{169E6}', '\u{169E7}', '\u{169E8}', '\u{169E9}', '\u{169EA}', '\u{169EB}', '\u{169EC}', '\u{169ED}',
- '\u{169EE}', '\u{169EF}', '\u{169F0}', '\u{169F1}', '\u{169F2}', '\u{169F3}', '\u{169F4}', '\u{169F5}',
- '\u{169F6}', '\u{169F7}', '\u{169F8}', '\u{169F9}', '\u{169FA}', '\u{169FB}', '\u{169FC}', '\u{169FD}',
- '\u{169FE}', '\u{169FF}', '\u{16A00}', '\u{16A01}', '\u{16A02}', '\u{16A03}', '\u{16A04}', '\u{16A05}',
- '\u{16A06}', '\u{16A07}', '\u{16A08}', '\u{16A09}', '\u{16A0A}', '\u{16A0B}', '\u{16A0C}', '\u{16A0D}',
- '\u{16A0E}', '\u{16A0F}', '\u{16A10}', '\u{16A11}', '\u{16A12}', '\u{16A13}', '\u{16A14}', '\u{16A15}',
- '\u{16A16}', '\u{16A17}', '\u{16A18}', '\u{16A19}', '\u{16A1A}', '\u{16A1B}', '\u{16A1C}', '\u{16A1D}',
- '\u{16A1E}', '\u{16A1F}', '\u{16A20}', '\u{16A21}', '\u{16A22}', '\u{16A23}', '\u{16A24}', '\u{16A25}',
- '\u{16A26}', '\u{16A27}', '\u{16A28}', '\u{16A29}', '\u{16A2A}', '\u{16A2B}', '\u{16A2C}', '\u{16A2D}',
- '\u{16A2E}', '\u{16A2F}', '\u{16A30}', '\u{16A31}', '\u{16A32}', '\u{16A33}', '\u{16A34}', '\u{16A35}',
- '\u{16A36}', '\u{16A37}', '\u{16A38}', '\u{16A40}', '\u{16A41}', '\u{16A42}', '\u{16A43}', '\u{16A44}',
- '\u{16A45}', '\u{16A46}', '\u{16A47}', '\u{16A48}', '\u{16A49}', '\u{16A4A}', '\u{16A4B}', '\u{16A4C}',
- '\u{16A4D}', '\u{16A4E}', '\u{16A4F}', '\u{16A50}', '\u{16A51}', '\u{16A52}', '\u{16A53}', '\u{16A54}',
- '\u{16A55}', '\u{16A56}', '\u{16A57}', '\u{16A58}', '\u{16A59}', '\u{16A5A}', '\u{16A5B}', '\u{16A5C}',
- '\u{16A5D}', '\u{16A5E}', '\u{16AD0}', '\u{16AD1}', '\u{16AD2}', '\u{16AD3}', '\u{16AD4}', '\u{16AD5}',
- '\u{16AD6}', '\u{16AD7}', '\u{16AD8}', '\u{16AD9}', '\u{16ADA}', '\u{16ADB}', '\u{16ADC}', '\u{16ADD}',
- '\u{16ADE}', '\u{16ADF}', '\u{16AE0}', '\u{16AE1}', '\u{16AE2}', '\u{16AE3}', '\u{16AE4}', '\u{16AE5}',
- '\u{16AE6}', '\u{16AE7}', '\u{16AE8}', '\u{16AE9}', '\u{16AEA}', '\u{16AEB}', '\u{16AEC}', '\u{16AED}',
- '\u{16B00}', '\u{16B01}', '\u{16B02}', '\u{16B03}', '\u{16B04}', '\u{16B05}', '\u{16B06}', '\u{16B07}',
- '\u{16B08}', '\u{16B09}', '\u{16B0A}', '\u{16B0B}', '\u{16B0C}', '\u{16B0D}', '\u{16B0E}', '\u{16B0F}',
- '\u{16B10}', '\u{16B11}', '\u{16B12}', '\u{16B13}', '\u{16B14}', '\u{16B15}', '\u{16B16}', '\u{16B17}',
- '\u{16B18}', '\u{16B19}', '\u{16B1A}', '\u{16B1B}', '\u{16B1C}', '\u{16B1D}', '\u{16B1E}', '\u{16B1F}',
- '\u{16B20}', '\u{16B21}', '\u{16B22}', '\u{16B23}', '\u{16B24}', '\u{16B25}', '\u{16B26}', '\u{16B27}',
- '\u{16B28}', '\u{16B29}', '\u{16B2A}', '\u{16B2B}', '\u{16B2C}', '\u{16B2D}', '\u{16B2E}', '\u{16B2F}',
- '\u{16B63}', '\u{16B64}', '\u{16B65}', '\u{16B66}', '\u{16B67}', '\u{16B68}', '\u{16B69}', '\u{16B6A}',
- '\u{16B6B}', '\u{16B6C}', '\u{16B6D}', '\u{16B6E}', '\u{16B6F}', '\u{16B70}', '\u{16B71}', '\u{16B72}',
- '\u{16B73}', '\u{16B74}', '\u{16B75}', '\u{16B76}', '\u{16B77}', '\u{16B7D}', '\u{16B7E}', '\u{16B7F}',
- '\u{16B80}', '\u{16B81}', '\u{16B82}', '\u{16B83}', '\u{16B84}', '\u{16B85}', '\u{16B86}', '\u{16B87}',
- '\u{16B88}', '\u{16B89}', '\u{16B8A}', '\u{16B8B}', '\u{16B8C}', '\u{16B8D}', '\u{16B8E}', '\u{16B8F}',
- '\u{16F00}', '\u{16F01}', '\u{16F02}', '\u{16F03}', '\u{16F04}', '\u{16F05}', '\u{16F06}', '\u{16F07}',
- '\u{16F08}', '\u{16F09}', '\u{16F0A}', '\u{16F0B}', '\u{16F0C}', '\u{16F0D}', '\u{16F0E}', '\u{16F0F}',
- '\u{16F10}', '\u{16F11}', '\u{16F12}', '\u{16F13}', '\u{16F14}', '\u{16F15}', '\u{16F16}', '\u{16F17}',
- '\u{16F18}', '\u{16F19}', '\u{16F1A}', '\u{16F1B}', '\u{16F1C}', '\u{16F1D}', '\u{16F1E}', '\u{16F1F}',
- '\u{16F20}', '\u{16F21}', '\u{16F22}', '\u{16F23}', '\u{16F24}', '\u{16F25}', '\u{16F26}', '\u{16F27}',
- '\u{16F28}', '\u{16F29}', '\u{16F2A}', '\u{16F2B}', '\u{16F2C}', '\u{16F2D}', '\u{16F2E}', '\u{16F2F}',
- '\u{16F30}', '\u{16F31}', '\u{16F32}', '\u{16F33}', '\u{16F34}', '\u{16F35}', '\u{16F36}', '\u{16F37}',
- '\u{16F38}', '\u{16F39}', '\u{16F3A}', '\u{16F3B}', '\u{16F3C}', '\u{16F3D}', '\u{16F3E}', '\u{16F3F}',
- '\u{16F40}', '\u{16F41}', '\u{16F42}', '\u{16F43}', '\u{16F44}', '\u{16F50}', '\u{1B000}', '\u{1B001}',
- '\u{1BC00}', '\u{1BC01}', '\u{1BC02}', '\u{1BC03}', '\u{1BC04}', '\u{1BC05}', '\u{1BC06}', '\u{1BC07}',
- '\u{1BC08}', '\u{1BC09}', '\u{1BC0A}', '\u{1BC0B}', '\u{1BC0C}', '\u{1BC0D}', '\u{1BC0E}', '\u{1BC0F}',
- '\u{1BC10}', '\u{1BC11}', '\u{1BC12}', '\u{1BC13}', '\u{1BC14}', '\u{1BC15}', '\u{1BC16}', '\u{1BC17}',
- '\u{1BC18}', '\u{1BC19}', '\u{1BC1A}', '\u{1BC1B}', '\u{1BC1C}', '\u{1BC1D}', '\u{1BC1E}', '\u{1BC1F}',
- '\u{1BC20}', '\u{1BC21}', '\u{1BC22}', '\u{1BC23}', '\u{1BC24}', '\u{1BC25}', '\u{1BC26}', '\u{1BC27}',
- '\u{1BC28}', '\u{1BC29}', '\u{1BC2A}', '\u{1BC2B}', '\u{1BC2C}', '\u{1BC2D}', '\u{1BC2E}', '\u{1BC2F}',
- '\u{1BC30}', '\u{1BC31}', '\u{1BC32}', '\u{1BC33}', '\u{1BC34}', '\u{1BC35}', '\u{1BC36}', '\u{1BC37}',
- '\u{1BC38}', '\u{1BC39}', '\u{1BC3A}', '\u{1BC3B}', '\u{1BC3C}', '\u{1BC3D}', '\u{1BC3E}', '\u{1BC3F}',
- '\u{1BC40}', '\u{1BC41}', '\u{1BC42}', '\u{1BC43}', '\u{1BC44}', '\u{1BC45}', '\u{1BC46}', '\u{1BC47}',
- '\u{1BC48}', '\u{1BC49}', '\u{1BC4A}', '\u{1BC4B}', '\u{1BC4C}', '\u{1BC4D}', '\u{1BC4E}', '\u{1BC4F}',
- '\u{1BC50}', '\u{1BC51}', '\u{1BC52}', '\u{1BC53}', '\u{1BC54}', '\u{1BC55}', '\u{1BC56}', '\u{1BC57}',
- '\u{1BC58}', '\u{1BC59}', '\u{1BC5A}', '\u{1BC5B}', '\u{1BC5C}', '\u{1BC5D}', '\u{1BC5E}', '\u{1BC5F}',
- '\u{1BC60}', '\u{1BC61}', '\u{1BC62}', '\u{1BC63}', '\u{1BC64}', '\u{1BC65}', '\u{1BC66}', '\u{1BC67}',
- '\u{1BC68}', '\u{1BC69}', '\u{1BC6A}', '\u{1BC70}', '\u{1BC71}', '\u{1BC72}', '\u{1BC73}', '\u{1BC74}',
- '\u{1BC75}', '\u{1BC76}', '\u{1BC77}', '\u{1BC78}', '\u{1BC79}', '\u{1BC7A}', '\u{1BC7B}', '\u{1BC7C}',
- '\u{1BC80}', '\u{1BC81}', '\u{1BC82}', '\u{1BC83}', '\u{1BC84}', '\u{1BC85}', '\u{1BC86}', '\u{1BC87}',
- '\u{1BC88}', '\u{1BC90}', '\u{1BC91}', '\u{1BC92}', '\u{1BC93}', '\u{1BC94}', '\u{1BC95}', '\u{1BC96}',
- '\u{1BC97}', '\u{1BC98}', '\u{1BC99}', '\u{1E800}', '\u{1E801}', '\u{1E802}', '\u{1E803}', '\u{1E804}',
- '\u{1E805}', '\u{1E806}', '\u{1E807}', '\u{1E808}', '\u{1E809}', '\u{1E80A}', '\u{1E80B}', '\u{1E80C}',
- '\u{1E80D}', '\u{1E80E}', '\u{1E80F}', '\u{1E810}', '\u{1E811}', '\u{1E812}', '\u{1E813}', '\u{1E814}',
- '\u{1E815}', '\u{1E816}', '\u{1E817}', '\u{1E818}', '\u{1E819}', '\u{1E81A}', '\u{1E81B}', '\u{1E81C}',
- '\u{1E81D}', '\u{1E81E}', '\u{1E81F}', '\u{1E820}', '\u{1E821}', '\u{1E822}', '\u{1E823}', '\u{1E824}',
- '\u{1E825}', '\u{1E826}', '\u{1E827}', '\u{1E828}', '\u{1E829}', '\u{1E82A}', '\u{1E82B}', '\u{1E82C}',
- '\u{1E82D}', '\u{1E82E}', '\u{1E82F}', '\u{1E830}', '\u{1E831}', '\u{1E832}', '\u{1E833}', '\u{1E834}',
- '\u{1E835}', '\u{1E836}', '\u{1E837}', '\u{1E838}', '\u{1E839}', '\u{1E83A}', '\u{1E83B}', '\u{1E83C}',
- '\u{1E83D}', '\u{1E83E}', '\u{1E83F}', '\u{1E840}', '\u{1E841}', '\u{1E842}', '\u{1E843}', '\u{1E844}',
- '\u{1E845}', '\u{1E846}', '\u{1E847}', '\u{1E848}', '\u{1E849}', '\u{1E84A}', '\u{1E84B}', '\u{1E84C}',
- '\u{1E84D}', '\u{1E84E}', '\u{1E84F}', '\u{1E850}', '\u{1E851}', '\u{1E852}', '\u{1E853}', '\u{1E854}',
- '\u{1E855}', '\u{1E856}', '\u{1E857}', '\u{1E858}', '\u{1E859}', '\u{1E85A}', '\u{1E85B}', '\u{1E85C}',
- '\u{1E85D}', '\u{1E85E}', '\u{1E85F}', '\u{1E860}', '\u{1E861}', '\u{1E862}', '\u{1E863}', '\u{1E864}',
- '\u{1E865}', '\u{1E866}', '\u{1E867}', '\u{1E868}', '\u{1E869}', '\u{1E86A}', '\u{1E86B}', '\u{1E86C}',
- '\u{1E86D}', '\u{1E86E}', '\u{1E86F}', '\u{1E870}', '\u{1E871}', '\u{1E872}', '\u{1E873}', '\u{1E874}',
- '\u{1E875}', '\u{1E876}', '\u{1E877}', '\u{1E878}', '\u{1E879}', '\u{1E87A}', '\u{1E87B}', '\u{1E87C}',
- '\u{1E87D}', '\u{1E87E}', '\u{1E87F}', '\u{1E880}', '\u{1E881}', '\u{1E882}', '\u{1E883}', '\u{1E884}',
- '\u{1E885}', '\u{1E886}', '\u{1E887}', '\u{1E888}', '\u{1E889}', '\u{1E88A}', '\u{1E88B}', '\u{1E88C}',
- '\u{1E88D}', '\u{1E88E}', '\u{1E88F}', '\u{1E890}', '\u{1E891}', '\u{1E892}', '\u{1E893}', '\u{1E894}',
- '\u{1E895}', '\u{1E896}', '\u{1E897}', '\u{1E898}', '\u{1E899}', '\u{1E89A}', '\u{1E89B}', '\u{1E89C}',
- '\u{1E89D}', '\u{1E89E}', '\u{1E89F}', '\u{1E8A0}', '\u{1E8A1}', '\u{1E8A2}', '\u{1E8A3}', '\u{1E8A4}',
- '\u{1E8A5}', '\u{1E8A6}', '\u{1E8A7}', '\u{1E8A8}', '\u{1E8A9}', '\u{1E8AA}', '\u{1E8AB}', '\u{1E8AC}',
- '\u{1E8AD}', '\u{1E8AE}', '\u{1E8AF}', '\u{1E8B0}', '\u{1E8B1}', '\u{1E8B2}', '\u{1E8B3}', '\u{1E8B4}',
- '\u{1E8B5}', '\u{1E8B6}', '\u{1E8B7}', '\u{1E8B8}', '\u{1E8B9}', '\u{1E8BA}', '\u{1E8BB}', '\u{1E8BC}',
- '\u{1E8BD}', '\u{1E8BE}', '\u{1E8BF}', '\u{1E8C0}', '\u{1E8C1}', '\u{1E8C2}', '\u{1E8C3}', '\u{1E8C4}',
- '\u{1EE00}', '\u{1EE01}', '\u{1EE02}', '\u{1EE03}', '\u{1EE05}', '\u{1EE06}', '\u{1EE07}', '\u{1EE08}',
- '\u{1EE09}', '\u{1EE0A}', '\u{1EE0B}', '\u{1EE0C}', '\u{1EE0D}', '\u{1EE0E}', '\u{1EE0F}', '\u{1EE10}',
- '\u{1EE11}', '\u{1EE12}', '\u{1EE13}', '\u{1EE14}', '\u{1EE15}', '\u{1EE16}', '\u{1EE17}', '\u{1EE18}',
- '\u{1EE19}', '\u{1EE1A}', '\u{1EE1B}', '\u{1EE1C}', '\u{1EE1D}', '\u{1EE1E}', '\u{1EE1F}', '\u{1EE21}',
- '\u{1EE22}', '\u{1EE24}', '\u{1EE27}', '\u{1EE29}', '\u{1EE2A}', '\u{1EE2B}', '\u{1EE2C}', '\u{1EE2D}',
- '\u{1EE2E}', '\u{1EE2F}', '\u{1EE30}', '\u{1EE31}', '\u{1EE32}', '\u{1EE34}', '\u{1EE35}', '\u{1EE36}',
- '\u{1EE37}', '\u{1EE39}', '\u{1EE3B}', '\u{1EE42}', '\u{1EE47}', '\u{1EE49}', '\u{1EE4B}', '\u{1EE4D}',
- '\u{1EE4E}', '\u{1EE4F}', '\u{1EE51}', '\u{1EE52}', '\u{1EE54}', '\u{1EE57}', '\u{1EE59}', '\u{1EE5B}',
- '\u{1EE5D}', '\u{1EE5F}', '\u{1EE61}', '\u{1EE62}', '\u{1EE64}', '\u{1EE67}', '\u{1EE68}', '\u{1EE69}',
- '\u{1EE6A}', '\u{1EE6C}', '\u{1EE6D}', '\u{1EE6E}', '\u{1EE6F}', '\u{1EE70}', '\u{1EE71}', '\u{1EE72}',
- '\u{1EE74}', '\u{1EE75}', '\u{1EE76}', '\u{1EE77}', '\u{1EE79}', '\u{1EE7A}', '\u{1EE7B}', '\u{1EE7C}',
- '\u{1EE7E}', '\u{1EE80}', '\u{1EE81}', '\u{1EE82}', '\u{1EE83}', '\u{1EE84}', '\u{1EE85}', '\u{1EE86}',
- '\u{1EE87}', '\u{1EE88}', '\u{1EE89}', '\u{1EE8B}', '\u{1EE8C}', '\u{1EE8D}', '\u{1EE8E}', '\u{1EE8F}',
- '\u{1EE90}', '\u{1EE91}', '\u{1EE92}', '\u{1EE93}', '\u{1EE94}', '\u{1EE95}', '\u{1EE96}', '\u{1EE97}',
- '\u{1EE98}', '\u{1EE99}', '\u{1EE9A}', '\u{1EE9B}', '\u{1EEA1}', '\u{1EEA2}', '\u{1EEA3}', '\u{1EEA5}',
- '\u{1EEA6}', '\u{1EEA7}', '\u{1EEA8}', '\u{1EEA9}', '\u{1EEAB}', '\u{1EEAC}', '\u{1EEAD}', '\u{1EEAE}',
- '\u{1EEAF}', '\u{1EEB0}', '\u{1EEB1}', '\u{1EEB2}', '\u{1EEB3}', '\u{1EEB4}', '\u{1EEB5}', '\u{1EEB6}',
- '\u{1EEB7}', '\u{1EEB8}', '\u{1EEB9}', '\u{1EEBA}', '\u{1EEBB}', '\u{20000}', '\u{2A6D6}', '\u{2A700}',
- '\u{2B734}', '\u{2B740}', '\u{2B81D}', '\u{2B820}', '\u{2CEA1}', '\u{2F800}', '\u{2F801}', '\u{2F802}',
- '\u{2F803}', '\u{2F804}', '\u{2F805}', '\u{2F806}', '\u{2F807}', '\u{2F808}', '\u{2F809}', '\u{2F80A}',
- '\u{2F80B}', '\u{2F80C}', '\u{2F80D}', '\u{2F80E}', '\u{2F80F}', '\u{2F810}', '\u{2F811}', '\u{2F812}',
- '\u{2F813}', '\u{2F814}', '\u{2F815}', '\u{2F816}', '\u{2F817}', '\u{2F818}', '\u{2F819}', '\u{2F81A}',
- '\u{2F81B}', '\u{2F81C}', '\u{2F81D}', '\u{2F81E}', '\u{2F81F}', '\u{2F820}', '\u{2F821}', '\u{2F822}',
- '\u{2F823}', '\u{2F824}', '\u{2F825}', '\u{2F826}', '\u{2F827}', '\u{2F828}', '\u{2F829}', '\u{2F82A}',
- '\u{2F82B}', '\u{2F82C}', '\u{2F82D}', '\u{2F82E}', '\u{2F82F}', '\u{2F830}', '\u{2F831}', '\u{2F832}',
- '\u{2F833}', '\u{2F834}', '\u{2F835}', '\u{2F836}', '\u{2F837}', '\u{2F838}', '\u{2F839}', '\u{2F83A}',
- '\u{2F83B}', '\u{2F83C}', '\u{2F83D}', '\u{2F83E}', '\u{2F83F}', '\u{2F840}', '\u{2F841}', '\u{2F842}',
- '\u{2F843}', '\u{2F844}', '\u{2F845}', '\u{2F846}', '\u{2F847}', '\u{2F848}', '\u{2F849}', '\u{2F84A}',
- '\u{2F84B}', '\u{2F84C}', '\u{2F84D}', '\u{2F84E}', '\u{2F84F}', '\u{2F850}', '\u{2F851}', '\u{2F852}',
- '\u{2F853}', '\u{2F854}', '\u{2F855}', '\u{2F856}', '\u{2F857}', '\u{2F858}', '\u{2F859}', '\u{2F85A}',
- '\u{2F85B}', '\u{2F85C}', '\u{2F85D}', '\u{2F85E}', '\u{2F85F}', '\u{2F860}', '\u{2F861}', '\u{2F862}',
- '\u{2F863}', '\u{2F864}', '\u{2F865}', '\u{2F866}', '\u{2F867}', '\u{2F868}', '\u{2F869}', '\u{2F86A}',
- '\u{2F86B}', '\u{2F86C}', '\u{2F86D}', '\u{2F86E}', '\u{2F86F}', '\u{2F870}', '\u{2F871}', '\u{2F872}',
- '\u{2F873}', '\u{2F874}', '\u{2F875}', '\u{2F876}', '\u{2F877}', '\u{2F878}', '\u{2F879}', '\u{2F87A}',
- '\u{2F87B}', '\u{2F87C}', '\u{2F87D}', '\u{2F87E}', '\u{2F87F}', '\u{2F880}', '\u{2F881}', '\u{2F882}',
- '\u{2F883}', '\u{2F884}', '\u{2F885}', '\u{2F886}', '\u{2F887}', '\u{2F888}', '\u{2F889}', '\u{2F88A}',
- '\u{2F88B}', '\u{2F88C}', '\u{2F88D}', '\u{2F88E}', '\u{2F88F}', '\u{2F890}', '\u{2F891}', '\u{2F892}',
- '\u{2F893}', '\u{2F894}', '\u{2F895}', '\u{2F896}', '\u{2F897}', '\u{2F898}', '\u{2F899}', '\u{2F89A}',
- '\u{2F89B}', '\u{2F89C}', '\u{2F89D}', '\u{2F89E}', '\u{2F89F}', '\u{2F8A0}', '\u{2F8A1}', '\u{2F8A2}',
- '\u{2F8A3}', '\u{2F8A4}', '\u{2F8A5}', '\u{2F8A6}', '\u{2F8A7}', '\u{2F8A8}', '\u{2F8A9}', '\u{2F8AA}',
- '\u{2F8AB}', '\u{2F8AC}', '\u{2F8AD}', '\u{2F8AE}', '\u{2F8AF}', '\u{2F8B0}', '\u{2F8B1}', '\u{2F8B2}',
- '\u{2F8B3}', '\u{2F8B4}', '\u{2F8B5}', '\u{2F8B6}', '\u{2F8B7}', '\u{2F8B8}', '\u{2F8B9}', '\u{2F8BA}',
- '\u{2F8BB}', '\u{2F8BC}', '\u{2F8BD}', '\u{2F8BE}', '\u{2F8BF}', '\u{2F8C0}', '\u{2F8C1}', '\u{2F8C2}',
- '\u{2F8C3}', '\u{2F8C4}', '\u{2F8C5}', '\u{2F8C6}', '\u{2F8C7}', '\u{2F8C8}', '\u{2F8C9}', '\u{2F8CA}',
- '\u{2F8CB}', '\u{2F8CC}', '\u{2F8CD}', '\u{2F8CE}', '\u{2F8CF}', '\u{2F8D0}', '\u{2F8D1}', '\u{2F8D2}',
- '\u{2F8D3}', '\u{2F8D4}', '\u{2F8D5}', '\u{2F8D6}', '\u{2F8D7}', '\u{2F8D8}', '\u{2F8D9}', '\u{2F8DA}',
- '\u{2F8DB}', '\u{2F8DC}', '\u{2F8DD}', '\u{2F8DE}', '\u{2F8DF}', '\u{2F8E0}', '\u{2F8E1}', '\u{2F8E2}',
- '\u{2F8E3}', '\u{2F8E4}', '\u{2F8E5}', '\u{2F8E6}', '\u{2F8E7}', '\u{2F8E8}', '\u{2F8E9}', '\u{2F8EA}',
- '\u{2F8EB}', '\u{2F8EC}', '\u{2F8ED}', '\u{2F8EE}', '\u{2F8EF}', '\u{2F8F0}', '\u{2F8F1}', '\u{2F8F2}',
- '\u{2F8F3}', '\u{2F8F4}', '\u{2F8F5}', '\u{2F8F6}', '\u{2F8F7}', '\u{2F8F8}', '\u{2F8F9}', '\u{2F8FA}',
- '\u{2F8FB}', '\u{2F8FC}', '\u{2F8FD}', '\u{2F8FE}', '\u{2F8FF}', '\u{2F900}', '\u{2F901}', '\u{2F902}',
- '\u{2F903}', '\u{2F904}', '\u{2F905}', '\u{2F906}', '\u{2F907}', '\u{2F908}', '\u{2F909}', '\u{2F90A}',
- '\u{2F90B}', '\u{2F90C}', '\u{2F90D}', '\u{2F90E}', '\u{2F90F}', '\u{2F910}', '\u{2F911}', '\u{2F912}',
- '\u{2F913}', '\u{2F914}', '\u{2F915}', '\u{2F916}', '\u{2F917}', '\u{2F918}', '\u{2F919}', '\u{2F91A}',
- '\u{2F91B}', '\u{2F91C}', '\u{2F91D}', '\u{2F91E}', '\u{2F91F}', '\u{2F920}', '\u{2F921}', '\u{2F922}',
- '\u{2F923}', '\u{2F924}', '\u{2F925}', '\u{2F926}', '\u{2F927}', '\u{2F928}', '\u{2F929}', '\u{2F92A}',
- '\u{2F92B}', '\u{2F92C}', '\u{2F92D}', '\u{2F92E}', '\u{2F92F}', '\u{2F930}', '\u{2F931}', '\u{2F932}',
- '\u{2F933}', '\u{2F934}', '\u{2F935}', '\u{2F936}', '\u{2F937}', '\u{2F938}', '\u{2F939}', '\u{2F93A}',
- '\u{2F93B}', '\u{2F93C}', '\u{2F93D}', '\u{2F93E}', '\u{2F93F}', '\u{2F940}', '\u{2F941}', '\u{2F942}',
- '\u{2F943}', '\u{2F944}', '\u{2F945}', '\u{2F946}', '\u{2F947}', '\u{2F948}', '\u{2F949}', '\u{2F94A}',
- '\u{2F94B}', '\u{2F94C}', '\u{2F94D}', '\u{2F94E}', '\u{2F94F}', '\u{2F950}', '\u{2F951}', '\u{2F952}',
- '\u{2F953}', '\u{2F954}', '\u{2F955}', '\u{2F956}', '\u{2F957}', '\u{2F958}', '\u{2F959}', '\u{2F95A}',
- '\u{2F95B}', '\u{2F95C}', '\u{2F95D}', '\u{2F95E}', '\u{2F95F}', '\u{2F960}', '\u{2F961}', '\u{2F962}',
- '\u{2F963}', '\u{2F964}', '\u{2F965}', '\u{2F966}', '\u{2F967}', '\u{2F968}', '\u{2F969}', '\u{2F96A}',
- '\u{2F96B}', '\u{2F96C}', '\u{2F96D}', '\u{2F96E}', '\u{2F96F}', '\u{2F970}', '\u{2F971}', '\u{2F972}',
- '\u{2F973}', '\u{2F974}', '\u{2F975}', '\u{2F976}', '\u{2F977}', '\u{2F978}', '\u{2F979}', '\u{2F97A}',
- '\u{2F97B}', '\u{2F97C}', '\u{2F97D}', '\u{2F97E}', '\u{2F97F}', '\u{2F980}', '\u{2F981}', '\u{2F982}',
- '\u{2F983}', '\u{2F984}', '\u{2F985}', '\u{2F986}', '\u{2F987}', '\u{2F988}', '\u{2F989}', '\u{2F98A}',
- '\u{2F98B}', '\u{2F98C}', '\u{2F98D}', '\u{2F98E}', '\u{2F98F}', '\u{2F990}', '\u{2F991}', '\u{2F992}',
- '\u{2F993}', '\u{2F994}', '\u{2F995}', '\u{2F996}', '\u{2F997}', '\u{2F998}', '\u{2F999}', '\u{2F99A}',
- '\u{2F99B}', '\u{2F99C}', '\u{2F99D}', '\u{2F99E}', '\u{2F99F}', '\u{2F9A0}', '\u{2F9A1}', '\u{2F9A2}',
- '\u{2F9A3}', '\u{2F9A4}', '\u{2F9A5}', '\u{2F9A6}', '\u{2F9A7}', '\u{2F9A8}', '\u{2F9A9}', '\u{2F9AA}',
- '\u{2F9AB}', '\u{2F9AC}', '\u{2F9AD}', '\u{2F9AE}', '\u{2F9AF}', '\u{2F9B0}', '\u{2F9B1}', '\u{2F9B2}',
- '\u{2F9B3}', '\u{2F9B4}', '\u{2F9B5}', '\u{2F9B6}', '\u{2F9B7}', '\u{2F9B8}', '\u{2F9B9}', '\u{2F9BA}',
- '\u{2F9BB}', '\u{2F9BC}', '\u{2F9BD}', '\u{2F9BE}', '\u{2F9BF}', '\u{2F9C0}', '\u{2F9C1}', '\u{2F9C2}',
- '\u{2F9C3}', '\u{2F9C4}', '\u{2F9C5}', '\u{2F9C6}', '\u{2F9C7}', '\u{2F9C8}', '\u{2F9C9}', '\u{2F9CA}',
- '\u{2F9CB}', '\u{2F9CC}', '\u{2F9CD}', '\u{2F9CE}', '\u{2F9CF}', '\u{2F9D0}', '\u{2F9D1}', '\u{2F9D2}',
- '\u{2F9D3}', '\u{2F9D4}', '\u{2F9D5}', '\u{2F9D6}', '\u{2F9D7}', '\u{2F9D8}', '\u{2F9D9}', '\u{2F9DA}',
- '\u{2F9DB}', '\u{2F9DC}', '\u{2F9DD}', '\u{2F9DE}', '\u{2F9DF}', '\u{2F9E0}', '\u{2F9E1}', '\u{2F9E2}',
- '\u{2F9E3}', '\u{2F9E4}', '\u{2F9E5}', '\u{2F9E6}', '\u{2F9E7}', '\u{2F9E8}', '\u{2F9E9}', '\u{2F9EA}',
- '\u{2F9EB}', '\u{2F9EC}', '\u{2F9ED}', '\u{2F9EE}', '\u{2F9EF}', '\u{2F9F0}', '\u{2F9F1}', '\u{2F9F2}',
- '\u{2F9F3}', '\u{2F9F4}', '\u{2F9F5}', '\u{2F9F6}', '\u{2F9F7}', '\u{2F9F8}', '\u{2F9F9}', '\u{2F9FA}',
- '\u{2F9FB}', '\u{2F9FC}', '\u{2F9FD}', '\u{2F9FE}', '\u{2F9FF}', '\u{2FA00}', '\u{2FA01}', '\u{2FA02}',
- '\u{2FA03}', '\u{2FA04}', '\u{2FA05}', '\u{2FA06}', '\u{2FA07}', '\u{2FA08}', '\u{2FA09}', '\u{2FA0A}',
- '\u{2FA0B}', '\u{2FA0C}', '\u{2FA0D}', '\u{2FA0E}', '\u{2FA0F}', '\u{2FA10}', '\u{2FA11}', '\u{2FA12}',
- '\u{2FA13}', '\u{2FA14}', '\u{2FA15}', '\u{2FA16}', '\u{2FA17}', '\u{2FA18}', '\u{2FA19}', '\u{2FA1A}',
- '\u{2FA1B}', '\u{2FA1C}', '\u{2FA1D}'];
-
-pub static LETTER_TITLECASE : &'static [char] = &[
- '\u{01C5}', '\u{01C8}', '\u{01CB}', '\u{01F2}', '\u{1F88}', '\u{1F89}', '\u{1F8A}', '\u{1F8B}',
- '\u{1F8C}', '\u{1F8D}', '\u{1F8E}', '\u{1F8F}', '\u{1F98}', '\u{1F99}', '\u{1F9A}', '\u{1F9B}',
- '\u{1F9C}', '\u{1F9D}', '\u{1F9E}', '\u{1F9F}', '\u{1FA8}', '\u{1FA9}', '\u{1FAA}', '\u{1FAB}',
- '\u{1FAC}', '\u{1FAD}', '\u{1FAE}', '\u{1FAF}', '\u{1FBC}', '\u{1FCC}', '\u{1FFC}'];
-
-pub static LETTER_UPPERCASE : &'static [char] = &[
- '\u{0041}', '\u{0042}', '\u{0043}', '\u{0044}', '\u{0045}', '\u{0046}', '\u{0047}', '\u{0048}',
- '\u{0049}', '\u{004A}', '\u{004B}', '\u{004C}', '\u{004D}', '\u{004E}', '\u{004F}', '\u{0050}',
- '\u{0051}', '\u{0052}', '\u{0053}', '\u{0054}', '\u{0055}', '\u{0056}', '\u{0057}', '\u{0058}',
- '\u{0059}', '\u{005A}', '\u{00C0}', '\u{00C1}', '\u{00C2}', '\u{00C3}', '\u{00C4}', '\u{00C5}',
- '\u{00C6}', '\u{00C7}', '\u{00C8}', '\u{00C9}', '\u{00CA}', '\u{00CB}', '\u{00CC}', '\u{00CD}',
- '\u{00CE}', '\u{00CF}', '\u{00D0}', '\u{00D1}', '\u{00D2}', '\u{00D3}', '\u{00D4}', '\u{00D5}',
- '\u{00D6}', '\u{00D8}', '\u{00D9}', '\u{00DA}', '\u{00DB}', '\u{00DC}', '\u{00DD}', '\u{00DE}',
- '\u{0100}', '\u{0102}', '\u{0104}', '\u{0106}', '\u{0108}', '\u{010A}', '\u{010C}', '\u{010E}',
- '\u{0110}', '\u{0112}', '\u{0114}', '\u{0116}', '\u{0118}', '\u{011A}', '\u{011C}', '\u{011E}',
- '\u{0120}', '\u{0122}', '\u{0124}', '\u{0126}', '\u{0128}', '\u{012A}', '\u{012C}', '\u{012E}',
- '\u{0130}', '\u{0132}', '\u{0134}', '\u{0136}', '\u{0139}', '\u{013B}', '\u{013D}', '\u{013F}',
- '\u{0141}', '\u{0143}', '\u{0145}', '\u{0147}', '\u{014A}', '\u{014C}', '\u{014E}', '\u{0150}',
- '\u{0152}', '\u{0154}', '\u{0156}', '\u{0158}', '\u{015A}', '\u{015C}', '\u{015E}', '\u{0160}',
- '\u{0162}', '\u{0164}', '\u{0166}', '\u{0168}', '\u{016A}', '\u{016C}', '\u{016E}', '\u{0170}',
- '\u{0172}', '\u{0174}', '\u{0176}', '\u{0178}', '\u{0179}', '\u{017B}', '\u{017D}', '\u{0181}',
- '\u{0182}', '\u{0184}', '\u{0186}', '\u{0187}', '\u{0189}', '\u{018A}', '\u{018B}', '\u{018E}',
- '\u{018F}', '\u{0190}', '\u{0191}', '\u{0193}', '\u{0194}', '\u{0196}', '\u{0197}', '\u{0198}',
- '\u{019C}', '\u{019D}', '\u{019F}', '\u{01A0}', '\u{01A2}', '\u{01A4}', '\u{01A6}', '\u{01A7}',
- '\u{01A9}', '\u{01AC}', '\u{01AE}', '\u{01AF}', '\u{01B1}', '\u{01B2}', '\u{01B3}', '\u{01B5}',
- '\u{01B7}', '\u{01B8}', '\u{01BC}', '\u{01C4}', '\u{01C7}', '\u{01CA}', '\u{01CD}', '\u{01CF}',
- '\u{01D1}', '\u{01D3}', '\u{01D5}', '\u{01D7}', '\u{01D9}', '\u{01DB}', '\u{01DE}', '\u{01E0}',
- '\u{01E2}', '\u{01E4}', '\u{01E6}', '\u{01E8}', '\u{01EA}', '\u{01EC}', '\u{01EE}', '\u{01F1}',
- '\u{01F4}', '\u{01F6}', '\u{01F7}', '\u{01F8}', '\u{01FA}', '\u{01FC}', '\u{01FE}', '\u{0200}',
- '\u{0202}', '\u{0204}', '\u{0206}', '\u{0208}', '\u{020A}', '\u{020C}', '\u{020E}', '\u{0210}',
- '\u{0212}', '\u{0214}', '\u{0216}', '\u{0218}', '\u{021A}', '\u{021C}', '\u{021E}', '\u{0220}',
- '\u{0222}', '\u{0224}', '\u{0226}', '\u{0228}', '\u{022A}', '\u{022C}', '\u{022E}', '\u{0230}',
- '\u{0232}', '\u{023A}', '\u{023B}', '\u{023D}', '\u{023E}', '\u{0241}', '\u{0243}', '\u{0244}',
- '\u{0245}', '\u{0246}', '\u{0248}', '\u{024A}', '\u{024C}', '\u{024E}', '\u{0370}', '\u{0372}',
- '\u{0376}', '\u{037F}', '\u{0386}', '\u{0388}', '\u{0389}', '\u{038A}', '\u{038C}', '\u{038E}',
- '\u{038F}', '\u{0391}', '\u{0392}', '\u{0393}', '\u{0394}', '\u{0395}', '\u{0396}', '\u{0397}',
- '\u{0398}', '\u{0399}', '\u{039A}', '\u{039B}', '\u{039C}', '\u{039D}', '\u{039E}', '\u{039F}',
- '\u{03A0}', '\u{03A1}', '\u{03A3}', '\u{03A4}', '\u{03A5}', '\u{03A6}', '\u{03A7}', '\u{03A8}',
- '\u{03A9}', '\u{03AA}', '\u{03AB}', '\u{03CF}', '\u{03D2}', '\u{03D3}', '\u{03D4}', '\u{03D8}',
- '\u{03DA}', '\u{03DC}', '\u{03DE}', '\u{03E0}', '\u{03E2}', '\u{03E4}', '\u{03E6}', '\u{03E8}',
- '\u{03EA}', '\u{03EC}', '\u{03EE}', '\u{03F4}', '\u{03F7}', '\u{03F9}', '\u{03FA}', '\u{03FD}',
- '\u{03FE}', '\u{03FF}', '\u{0400}', '\u{0401}', '\u{0402}', '\u{0403}', '\u{0404}', '\u{0405}',
- '\u{0406}', '\u{0407}', '\u{0408}', '\u{0409}', '\u{040A}', '\u{040B}', '\u{040C}', '\u{040D}',
- '\u{040E}', '\u{040F}', '\u{0410}', '\u{0411}', '\u{0412}', '\u{0413}', '\u{0414}', '\u{0415}',
- '\u{0416}', '\u{0417}', '\u{0418}', '\u{0419}', '\u{041A}', '\u{041B}', '\u{041C}', '\u{041D}',
- '\u{041E}', '\u{041F}', '\u{0420}', '\u{0421}', '\u{0422}', '\u{0423}', '\u{0424}', '\u{0425}',
- '\u{0426}', '\u{0427}', '\u{0428}', '\u{0429}', '\u{042A}', '\u{042B}', '\u{042C}', '\u{042D}',
- '\u{042E}', '\u{042F}', '\u{0460}', '\u{0462}', '\u{0464}', '\u{0466}', '\u{0468}', '\u{046A}',
- '\u{046C}', '\u{046E}', '\u{0470}', '\u{0472}', '\u{0474}', '\u{0476}', '\u{0478}', '\u{047A}',
- '\u{047C}', '\u{047E}', '\u{0480}', '\u{048A}', '\u{048C}', '\u{048E}', '\u{0490}', '\u{0492}',
- '\u{0494}', '\u{0496}', '\u{0498}', '\u{049A}', '\u{049C}', '\u{049E}', '\u{04A0}', '\u{04A2}',
- '\u{04A4}', '\u{04A6}', '\u{04A8}', '\u{04AA}', '\u{04AC}', '\u{04AE}', '\u{04B0}', '\u{04B2}',
- '\u{04B4}', '\u{04B6}', '\u{04B8}', '\u{04BA}', '\u{04BC}', '\u{04BE}', '\u{04C0}', '\u{04C1}',
- '\u{04C3}', '\u{04C5}', '\u{04C7}', '\u{04C9}', '\u{04CB}', '\u{04CD}', '\u{04D0}', '\u{04D2}',
- '\u{04D4}', '\u{04D6}', '\u{04D8}', '\u{04DA}', '\u{04DC}', '\u{04DE}', '\u{04E0}', '\u{04E2}',
- '\u{04E4}', '\u{04E6}', '\u{04E8}', '\u{04EA}', '\u{04EC}', '\u{04EE}', '\u{04F0}', '\u{04F2}',
- '\u{04F4}', '\u{04F6}', '\u{04F8}', '\u{04FA}', '\u{04FC}', '\u{04FE}', '\u{0500}', '\u{0502}',
- '\u{0504}', '\u{0506}', '\u{0508}', '\u{050A}', '\u{050C}', '\u{050E}', '\u{0510}', '\u{0512}',
- '\u{0514}', '\u{0516}', '\u{0518}', '\u{051A}', '\u{051C}', '\u{051E}', '\u{0520}', '\u{0522}',
- '\u{0524}', '\u{0526}', '\u{0528}', '\u{052A}', '\u{052C}', '\u{052E}', '\u{0531}', '\u{0532}',
- '\u{0533}', '\u{0534}', '\u{0535}', '\u{0536}', '\u{0537}', '\u{0538}', '\u{0539}', '\u{053A}',
- '\u{053B}', '\u{053C}', '\u{053D}', '\u{053E}', '\u{053F}', '\u{0540}', '\u{0541}', '\u{0542}',
- '\u{0543}', '\u{0544}', '\u{0545}', '\u{0546}', '\u{0547}', '\u{0548}', '\u{0549}', '\u{054A}',
- '\u{054B}', '\u{054C}', '\u{054D}', '\u{054E}', '\u{054F}', '\u{0550}', '\u{0551}', '\u{0552}',
- '\u{0553}', '\u{0554}', '\u{0555}', '\u{0556}', '\u{10A0}', '\u{10A1}', '\u{10A2}', '\u{10A3}',
- '\u{10A4}', '\u{10A5}', '\u{10A6}', '\u{10A7}', '\u{10A8}', '\u{10A9}', '\u{10AA}', '\u{10AB}',
- '\u{10AC}', '\u{10AD}', '\u{10AE}', '\u{10AF}', '\u{10B0}', '\u{10B1}', '\u{10B2}', '\u{10B3}',
- '\u{10B4}', '\u{10B5}', '\u{10B6}', '\u{10B7}', '\u{10B8}', '\u{10B9}', '\u{10BA}', '\u{10BB}',
- '\u{10BC}', '\u{10BD}', '\u{10BE}', '\u{10BF}', '\u{10C0}', '\u{10C1}', '\u{10C2}', '\u{10C3}',
- '\u{10C4}', '\u{10C5}', '\u{10C7}', '\u{10CD}', '\u{13A0}', '\u{13A1}', '\u{13A2}', '\u{13A3}',
- '\u{13A4}', '\u{13A5}', '\u{13A6}', '\u{13A7}', '\u{13A8}', '\u{13A9}', '\u{13AA}', '\u{13AB}',
- '\u{13AC}', '\u{13AD}', '\u{13AE}', '\u{13AF}', '\u{13B0}', '\u{13B1}', '\u{13B2}', '\u{13B3}',
- '\u{13B4}', '\u{13B5}', '\u{13B6}', '\u{13B7}', '\u{13B8}', '\u{13B9}', '\u{13BA}', '\u{13BB}',
- '\u{13BC}', '\u{13BD}', '\u{13BE}', '\u{13BF}', '\u{13C0}', '\u{13C1}', '\u{13C2}', '\u{13C3}',
- '\u{13C4}', '\u{13C5}', '\u{13C6}', '\u{13C7}', '\u{13C8}', '\u{13C9}', '\u{13CA}', '\u{13CB}',
- '\u{13CC}', '\u{13CD}', '\u{13CE}', '\u{13CF}', '\u{13D0}', '\u{13D1}', '\u{13D2}', '\u{13D3}',
- '\u{13D4}', '\u{13D5}', '\u{13D6}', '\u{13D7}', '\u{13D8}', '\u{13D9}', '\u{13DA}', '\u{13DB}',
- '\u{13DC}', '\u{13DD}', '\u{13DE}', '\u{13DF}', '\u{13E0}', '\u{13E1}', '\u{13E2}', '\u{13E3}',
- '\u{13E4}', '\u{13E5}', '\u{13E6}', '\u{13E7}', '\u{13E8}', '\u{13E9}', '\u{13EA}', '\u{13EB}',
- '\u{13EC}', '\u{13ED}', '\u{13EE}', '\u{13EF}', '\u{13F0}', '\u{13F1}', '\u{13F2}', '\u{13F3}',
- '\u{13F4}', '\u{13F5}', '\u{1E00}', '\u{1E02}', '\u{1E04}', '\u{1E06}', '\u{1E08}', '\u{1E0A}',
- '\u{1E0C}', '\u{1E0E}', '\u{1E10}', '\u{1E12}', '\u{1E14}', '\u{1E16}', '\u{1E18}', '\u{1E1A}',
- '\u{1E1C}', '\u{1E1E}', '\u{1E20}', '\u{1E22}', '\u{1E24}', '\u{1E26}', '\u{1E28}', '\u{1E2A}',
- '\u{1E2C}', '\u{1E2E}', '\u{1E30}', '\u{1E32}', '\u{1E34}', '\u{1E36}', '\u{1E38}', '\u{1E3A}',
- '\u{1E3C}', '\u{1E3E}', '\u{1E40}', '\u{1E42}', '\u{1E44}', '\u{1E46}', '\u{1E48}', '\u{1E4A}',
- '\u{1E4C}', '\u{1E4E}', '\u{1E50}', '\u{1E52}', '\u{1E54}', '\u{1E56}', '\u{1E58}', '\u{1E5A}',
- '\u{1E5C}', '\u{1E5E}', '\u{1E60}', '\u{1E62}', '\u{1E64}', '\u{1E66}', '\u{1E68}', '\u{1E6A}',
- '\u{1E6C}', '\u{1E6E}', '\u{1E70}', '\u{1E72}', '\u{1E74}', '\u{1E76}', '\u{1E78}', '\u{1E7A}',
- '\u{1E7C}', '\u{1E7E}', '\u{1E80}', '\u{1E82}', '\u{1E84}', '\u{1E86}', '\u{1E88}', '\u{1E8A}',
- '\u{1E8C}', '\u{1E8E}', '\u{1E90}', '\u{1E92}', '\u{1E94}', '\u{1E9E}', '\u{1EA0}', '\u{1EA2}',
- '\u{1EA4}', '\u{1EA6}', '\u{1EA8}', '\u{1EAA}', '\u{1EAC}', '\u{1EAE}', '\u{1EB0}', '\u{1EB2}',
- '\u{1EB4}', '\u{1EB6}', '\u{1EB8}', '\u{1EBA}', '\u{1EBC}', '\u{1EBE}', '\u{1EC0}', '\u{1EC2}',
- '\u{1EC4}', '\u{1EC6}', '\u{1EC8}', '\u{1ECA}', '\u{1ECC}', '\u{1ECE}', '\u{1ED0}', '\u{1ED2}',
- '\u{1ED4}', '\u{1ED6}', '\u{1ED8}', '\u{1EDA}', '\u{1EDC}', '\u{1EDE}', '\u{1EE0}', '\u{1EE2}',
- '\u{1EE4}', '\u{1EE6}', '\u{1EE8}', '\u{1EEA}', '\u{1EEC}', '\u{1EEE}', '\u{1EF0}', '\u{1EF2}',
- '\u{1EF4}', '\u{1EF6}', '\u{1EF8}', '\u{1EFA}', '\u{1EFC}', '\u{1EFE}', '\u{1F08}', '\u{1F09}',
- '\u{1F0A}', '\u{1F0B}', '\u{1F0C}', '\u{1F0D}', '\u{1F0E}', '\u{1F0F}', '\u{1F18}', '\u{1F19}',
- '\u{1F1A}', '\u{1F1B}', '\u{1F1C}', '\u{1F1D}', '\u{1F28}', '\u{1F29}', '\u{1F2A}', '\u{1F2B}',
- '\u{1F2C}', '\u{1F2D}', '\u{1F2E}', '\u{1F2F}', '\u{1F38}', '\u{1F39}', '\u{1F3A}', '\u{1F3B}',
- '\u{1F3C}', '\u{1F3D}', '\u{1F3E}', '\u{1F3F}', '\u{1F48}', '\u{1F49}', '\u{1F4A}', '\u{1F4B}',
- '\u{1F4C}', '\u{1F4D}', '\u{1F59}', '\u{1F5B}', '\u{1F5D}', '\u{1F5F}', '\u{1F68}', '\u{1F69}',
- '\u{1F6A}', '\u{1F6B}', '\u{1F6C}', '\u{1F6D}', '\u{1F6E}', '\u{1F6F}', '\u{1FB8}', '\u{1FB9}',
- '\u{1FBA}', '\u{1FBB}', '\u{1FC8}', '\u{1FC9}', '\u{1FCA}', '\u{1FCB}', '\u{1FD8}', '\u{1FD9}',
- '\u{1FDA}', '\u{1FDB}', '\u{1FE8}', '\u{1FE9}', '\u{1FEA}', '\u{1FEB}', '\u{1FEC}', '\u{1FF8}',
- '\u{1FF9}', '\u{1FFA}', '\u{1FFB}', '\u{2102}', '\u{2107}', '\u{210B}', '\u{210C}', '\u{210D}',
- '\u{2110}', '\u{2111}', '\u{2112}', '\u{2115}', '\u{2119}', '\u{211A}', '\u{211B}', '\u{211C}',
- '\u{211D}', '\u{2124}', '\u{2126}', '\u{2128}', '\u{212A}', '\u{212B}', '\u{212C}', '\u{212D}',
- '\u{2130}', '\u{2131}', '\u{2132}', '\u{2133}', '\u{213E}', '\u{213F}', '\u{2145}', '\u{2183}',
- '\u{2C00}', '\u{2C01}', '\u{2C02}', '\u{2C03}', '\u{2C04}', '\u{2C05}', '\u{2C06}', '\u{2C07}',
- '\u{2C08}', '\u{2C09}', '\u{2C0A}', '\u{2C0B}', '\u{2C0C}', '\u{2C0D}', '\u{2C0E}', '\u{2C0F}',
- '\u{2C10}', '\u{2C11}', '\u{2C12}', '\u{2C13}', '\u{2C14}', '\u{2C15}', '\u{2C16}', '\u{2C17}',
- '\u{2C18}', '\u{2C19}', '\u{2C1A}', '\u{2C1B}', '\u{2C1C}', '\u{2C1D}', '\u{2C1E}', '\u{2C1F}',
- '\u{2C20}', '\u{2C21}', '\u{2C22}', '\u{2C23}', '\u{2C24}', '\u{2C25}', '\u{2C26}', '\u{2C27}',
- '\u{2C28}', '\u{2C29}', '\u{2C2A}', '\u{2C2B}', '\u{2C2C}', '\u{2C2D}', '\u{2C2E}', '\u{2C60}',
- '\u{2C62}', '\u{2C63}', '\u{2C64}', '\u{2C67}', '\u{2C69}', '\u{2C6B}', '\u{2C6D}', '\u{2C6E}',
- '\u{2C6F}', '\u{2C70}', '\u{2C72}', '\u{2C75}', '\u{2C7E}', '\u{2C7F}', '\u{2C80}', '\u{2C82}',
- '\u{2C84}', '\u{2C86}', '\u{2C88}', '\u{2C8A}', '\u{2C8C}', '\u{2C8E}', '\u{2C90}', '\u{2C92}',
- '\u{2C94}', '\u{2C96}', '\u{2C98}', '\u{2C9A}', '\u{2C9C}', '\u{2C9E}', '\u{2CA0}', '\u{2CA2}',
- '\u{2CA4}', '\u{2CA6}', '\u{2CA8}', '\u{2CAA}', '\u{2CAC}', '\u{2CAE}', '\u{2CB0}', '\u{2CB2}',
- '\u{2CB4}', '\u{2CB6}', '\u{2CB8}', '\u{2CBA}', '\u{2CBC}', '\u{2CBE}', '\u{2CC0}', '\u{2CC2}',
- '\u{2CC4}', '\u{2CC6}', '\u{2CC8}', '\u{2CCA}', '\u{2CCC}', '\u{2CCE}', '\u{2CD0}', '\u{2CD2}',
- '\u{2CD4}', '\u{2CD6}', '\u{2CD8}', '\u{2CDA}', '\u{2CDC}', '\u{2CDE}', '\u{2CE0}', '\u{2CE2}',
- '\u{2CEB}', '\u{2CED}', '\u{2CF2}', '\u{A640}', '\u{A642}', '\u{A644}', '\u{A646}', '\u{A648}',
- '\u{A64A}', '\u{A64C}', '\u{A64E}', '\u{A650}', '\u{A652}', '\u{A654}', '\u{A656}', '\u{A658}',
- '\u{A65A}', '\u{A65C}', '\u{A65E}', '\u{A660}', '\u{A662}', '\u{A664}', '\u{A666}', '\u{A668}',
- '\u{A66A}', '\u{A66C}', '\u{A680}', '\u{A682}', '\u{A684}', '\u{A686}', '\u{A688}', '\u{A68A}',
- '\u{A68C}', '\u{A68E}', '\u{A690}', '\u{A692}', '\u{A694}', '\u{A696}', '\u{A698}', '\u{A69A}',
- '\u{A722}', '\u{A724}', '\u{A726}', '\u{A728}', '\u{A72A}', '\u{A72C}', '\u{A72E}', '\u{A732}',
- '\u{A734}', '\u{A736}', '\u{A738}', '\u{A73A}', '\u{A73C}', '\u{A73E}', '\u{A740}', '\u{A742}',
- '\u{A744}', '\u{A746}', '\u{A748}', '\u{A74A}', '\u{A74C}', '\u{A74E}', '\u{A750}', '\u{A752}',
- '\u{A754}', '\u{A756}', '\u{A758}', '\u{A75A}', '\u{A75C}', '\u{A75E}', '\u{A760}', '\u{A762}',
- '\u{A764}', '\u{A766}', '\u{A768}', '\u{A76A}', '\u{A76C}', '\u{A76E}', '\u{A779}', '\u{A77B}',
- '\u{A77D}', '\u{A77E}', '\u{A780}', '\u{A782}', '\u{A784}', '\u{A786}', '\u{A78B}', '\u{A78D}',
- '\u{A790}', '\u{A792}', '\u{A796}', '\u{A798}', '\u{A79A}', '\u{A79C}', '\u{A79E}', '\u{A7A0}',
- '\u{A7A2}', '\u{A7A4}', '\u{A7A6}', '\u{A7A8}', '\u{A7AA}', '\u{A7AB}', '\u{A7AC}', '\u{A7AD}',
- '\u{A7B0}', '\u{A7B1}', '\u{A7B2}', '\u{A7B3}', '\u{A7B4}', '\u{A7B6}', '\u{FF21}', '\u{FF22}',
- '\u{FF23}', '\u{FF24}', '\u{FF25}', '\u{FF26}', '\u{FF27}', '\u{FF28}', '\u{FF29}', '\u{FF2A}',
- '\u{FF2B}', '\u{FF2C}', '\u{FF2D}', '\u{FF2E}', '\u{FF2F}', '\u{FF30}', '\u{FF31}', '\u{FF32}',
- '\u{FF33}', '\u{FF34}', '\u{FF35}', '\u{FF36}', '\u{FF37}', '\u{FF38}', '\u{FF39}', '\u{FF3A}',
- '\u{10400}', '\u{10401}', '\u{10402}', '\u{10403}', '\u{10404}', '\u{10405}', '\u{10406}', '\u{10407}',
- '\u{10408}', '\u{10409}', '\u{1040A}', '\u{1040B}', '\u{1040C}', '\u{1040D}', '\u{1040E}', '\u{1040F}',
- '\u{10410}', '\u{10411}', '\u{10412}', '\u{10413}', '\u{10414}', '\u{10415}', '\u{10416}', '\u{10417}',
- '\u{10418}', '\u{10419}', '\u{1041A}', '\u{1041B}', '\u{1041C}', '\u{1041D}', '\u{1041E}', '\u{1041F}',
- '\u{10420}', '\u{10421}', '\u{10422}', '\u{10423}', '\u{10424}', '\u{10425}', '\u{10426}', '\u{10427}',
- '\u{10C80}', '\u{10C81}', '\u{10C82}', '\u{10C83}', '\u{10C84}', '\u{10C85}', '\u{10C86}', '\u{10C87}',
- '\u{10C88}', '\u{10C89}', '\u{10C8A}', '\u{10C8B}', '\u{10C8C}', '\u{10C8D}', '\u{10C8E}', '\u{10C8F}',
- '\u{10C90}', '\u{10C91}', '\u{10C92}', '\u{10C93}', '\u{10C94}', '\u{10C95}', '\u{10C96}', '\u{10C97}',
- '\u{10C98}', '\u{10C99}', '\u{10C9A}', '\u{10C9B}', '\u{10C9C}', '\u{10C9D}', '\u{10C9E}', '\u{10C9F}',
- '\u{10CA0}', '\u{10CA1}', '\u{10CA2}', '\u{10CA3}', '\u{10CA4}', '\u{10CA5}', '\u{10CA6}', '\u{10CA7}',
- '\u{10CA8}', '\u{10CA9}', '\u{10CAA}', '\u{10CAB}', '\u{10CAC}', '\u{10CAD}', '\u{10CAE}', '\u{10CAF}',
- '\u{10CB0}', '\u{10CB1}', '\u{10CB2}', '\u{118A0}', '\u{118A1}', '\u{118A2}', '\u{118A3}', '\u{118A4}',
- '\u{118A5}', '\u{118A6}', '\u{118A7}', '\u{118A8}', '\u{118A9}', '\u{118AA}', '\u{118AB}', '\u{118AC}',
- '\u{118AD}', '\u{118AE}', '\u{118AF}', '\u{118B0}', '\u{118B1}', '\u{118B2}', '\u{118B3}', '\u{118B4}',
- '\u{118B5}', '\u{118B6}', '\u{118B7}', '\u{118B8}', '\u{118B9}', '\u{118BA}', '\u{118BB}', '\u{118BC}',
- '\u{118BD}', '\u{118BE}', '\u{118BF}', '\u{1D400}', '\u{1D401}', '\u{1D402}', '\u{1D403}', '\u{1D404}',
- '\u{1D405}', '\u{1D406}', '\u{1D407}', '\u{1D408}', '\u{1D409}', '\u{1D40A}', '\u{1D40B}', '\u{1D40C}',
- '\u{1D40D}', '\u{1D40E}', '\u{1D40F}', '\u{1D410}', '\u{1D411}', '\u{1D412}', '\u{1D413}', '\u{1D414}',
- '\u{1D415}', '\u{1D416}', '\u{1D417}', '\u{1D418}', '\u{1D419}', '\u{1D434}', '\u{1D435}', '\u{1D436}',
- '\u{1D437}', '\u{1D438}', '\u{1D439}', '\u{1D43A}', '\u{1D43B}', '\u{1D43C}', '\u{1D43D}', '\u{1D43E}',
- '\u{1D43F}', '\u{1D440}', '\u{1D441}', '\u{1D442}', '\u{1D443}', '\u{1D444}', '\u{1D445}', '\u{1D446}',
- '\u{1D447}', '\u{1D448}', '\u{1D449}', '\u{1D44A}', '\u{1D44B}', '\u{1D44C}', '\u{1D44D}', '\u{1D468}',
- '\u{1D469}', '\u{1D46A}', '\u{1D46B}', '\u{1D46C}', '\u{1D46D}', '\u{1D46E}', '\u{1D46F}', '\u{1D470}',
- '\u{1D471}', '\u{1D472}', '\u{1D473}', '\u{1D474}', '\u{1D475}', '\u{1D476}', '\u{1D477}', '\u{1D478}',
- '\u{1D479}', '\u{1D47A}', '\u{1D47B}', '\u{1D47C}', '\u{1D47D}', '\u{1D47E}', '\u{1D47F}', '\u{1D480}',
- '\u{1D481}', '\u{1D49C}', '\u{1D49E}', '\u{1D49F}', '\u{1D4A2}', '\u{1D4A5}', '\u{1D4A6}', '\u{1D4A9}',
- '\u{1D4AA}', '\u{1D4AB}', '\u{1D4AC}', '\u{1D4AE}', '\u{1D4AF}', '\u{1D4B0}', '\u{1D4B1}', '\u{1D4B2}',
- '\u{1D4B3}', '\u{1D4B4}', '\u{1D4B5}', '\u{1D4D0}', '\u{1D4D1}', '\u{1D4D2}', '\u{1D4D3}', '\u{1D4D4}',
- '\u{1D4D5}', '\u{1D4D6}', '\u{1D4D7}', '\u{1D4D8}', '\u{1D4D9}', '\u{1D4DA}', '\u{1D4DB}', '\u{1D4DC}',
- '\u{1D4DD}', '\u{1D4DE}', '\u{1D4DF}', '\u{1D4E0}', '\u{1D4E1}', '\u{1D4E2}', '\u{1D4E3}', '\u{1D4E4}',
- '\u{1D4E5}', '\u{1D4E6}', '\u{1D4E7}', '\u{1D4E8}', '\u{1D4E9}', '\u{1D504}', '\u{1D505}', '\u{1D507}',
- '\u{1D508}', '\u{1D509}', '\u{1D50A}', '\u{1D50D}', '\u{1D50E}', '\u{1D50F}', '\u{1D510}', '\u{1D511}',
- '\u{1D512}', '\u{1D513}', '\u{1D514}', '\u{1D516}', '\u{1D517}', '\u{1D518}', '\u{1D519}', '\u{1D51A}',
- '\u{1D51B}', '\u{1D51C}', '\u{1D538}', '\u{1D539}', '\u{1D53B}', '\u{1D53C}', '\u{1D53D}', '\u{1D53E}',
- '\u{1D540}', '\u{1D541}', '\u{1D542}', '\u{1D543}', '\u{1D544}', '\u{1D546}', '\u{1D54A}', '\u{1D54B}',
- '\u{1D54C}', '\u{1D54D}', '\u{1D54E}', '\u{1D54F}', '\u{1D550}', '\u{1D56C}', '\u{1D56D}', '\u{1D56E}',
- '\u{1D56F}', '\u{1D570}', '\u{1D571}', '\u{1D572}', '\u{1D573}', '\u{1D574}', '\u{1D575}', '\u{1D576}',
- '\u{1D577}', '\u{1D578}', '\u{1D579}', '\u{1D57A}', '\u{1D57B}', '\u{1D57C}', '\u{1D57D}', '\u{1D57E}',
- '\u{1D57F}', '\u{1D580}', '\u{1D581}', '\u{1D582}', '\u{1D583}', '\u{1D584}', '\u{1D585}', '\u{1D5A0}',
- '\u{1D5A1}', '\u{1D5A2}', '\u{1D5A3}', '\u{1D5A4}', '\u{1D5A5}', '\u{1D5A6}', '\u{1D5A7}', '\u{1D5A8}',
- '\u{1D5A9}', '\u{1D5AA}', '\u{1D5AB}', '\u{1D5AC}', '\u{1D5AD}', '\u{1D5AE}', '\u{1D5AF}', '\u{1D5B0}',
- '\u{1D5B1}', '\u{1D5B2}', '\u{1D5B3}', '\u{1D5B4}', '\u{1D5B5}', '\u{1D5B6}', '\u{1D5B7}', '\u{1D5B8}',
- '\u{1D5B9}', '\u{1D5D4}', '\u{1D5D5}', '\u{1D5D6}', '\u{1D5D7}', '\u{1D5D8}', '\u{1D5D9}', '\u{1D5DA}',
- '\u{1D5DB}', '\u{1D5DC}', '\u{1D5DD}', '\u{1D5DE}', '\u{1D5DF}', '\u{1D5E0}', '\u{1D5E1}', '\u{1D5E2}',
- '\u{1D5E3}', '\u{1D5E4}', '\u{1D5E5}', '\u{1D5E6}', '\u{1D5E7}', '\u{1D5E8}', '\u{1D5E9}', '\u{1D5EA}',
- '\u{1D5EB}', '\u{1D5EC}', '\u{1D5ED}', '\u{1D608}', '\u{1D609}', '\u{1D60A}', '\u{1D60B}', '\u{1D60C}',
- '\u{1D60D}', '\u{1D60E}', '\u{1D60F}', '\u{1D610}', '\u{1D611}', '\u{1D612}', '\u{1D613}', '\u{1D614}',
- '\u{1D615}', '\u{1D616}', '\u{1D617}', '\u{1D618}', '\u{1D619}', '\u{1D61A}', '\u{1D61B}', '\u{1D61C}',
- '\u{1D61D}', '\u{1D61E}', '\u{1D61F}', '\u{1D620}', '\u{1D621}', '\u{1D63C}', '\u{1D63D}', '\u{1D63E}',
- '\u{1D63F}', '\u{1D640}', '\u{1D641}', '\u{1D642}', '\u{1D643}', '\u{1D644}', '\u{1D645}', '\u{1D646}',
- '\u{1D647}', '\u{1D648}', '\u{1D649}', '\u{1D64A}', '\u{1D64B}', '\u{1D64C}', '\u{1D64D}', '\u{1D64E}',
- '\u{1D64F}', '\u{1D650}', '\u{1D651}', '\u{1D652}', '\u{1D653}', '\u{1D654}', '\u{1D655}', '\u{1D670}',
- '\u{1D671}', '\u{1D672}', '\u{1D673}', '\u{1D674}', '\u{1D675}', '\u{1D676}', '\u{1D677}', '\u{1D678}',
- '\u{1D679}', '\u{1D67A}', '\u{1D67B}', '\u{1D67C}', '\u{1D67D}', '\u{1D67E}', '\u{1D67F}', '\u{1D680}',
- '\u{1D681}', '\u{1D682}', '\u{1D683}', '\u{1D684}', '\u{1D685}', '\u{1D686}', '\u{1D687}', '\u{1D688}',
- '\u{1D689}', '\u{1D6A8}', '\u{1D6A9}', '\u{1D6AA}', '\u{1D6AB}', '\u{1D6AC}', '\u{1D6AD}', '\u{1D6AE}',
- '\u{1D6AF}', '\u{1D6B0}', '\u{1D6B1}', '\u{1D6B2}', '\u{1D6B3}', '\u{1D6B4}', '\u{1D6B5}', '\u{1D6B6}',
- '\u{1D6B7}', '\u{1D6B8}', '\u{1D6B9}', '\u{1D6BA}', '\u{1D6BB}', '\u{1D6BC}', '\u{1D6BD}', '\u{1D6BE}',
- '\u{1D6BF}', '\u{1D6C0}', '\u{1D6E2}', '\u{1D6E3}', '\u{1D6E4}', '\u{1D6E5}', '\u{1D6E6}', '\u{1D6E7}',
- '\u{1D6E8}', '\u{1D6E9}', '\u{1D6EA}', '\u{1D6EB}', '\u{1D6EC}', '\u{1D6ED}', '\u{1D6EE}', '\u{1D6EF}',
- '\u{1D6F0}', '\u{1D6F1}', '\u{1D6F2}', '\u{1D6F3}', '\u{1D6F4}', '\u{1D6F5}', '\u{1D6F6}', '\u{1D6F7}',
- '\u{1D6F8}', '\u{1D6F9}', '\u{1D6FA}', '\u{1D71C}', '\u{1D71D}', '\u{1D71E}', '\u{1D71F}', '\u{1D720}',
- '\u{1D721}', '\u{1D722}', '\u{1D723}', '\u{1D724}', '\u{1D725}', '\u{1D726}', '\u{1D727}', '\u{1D728}',
- '\u{1D729}', '\u{1D72A}', '\u{1D72B}', '\u{1D72C}', '\u{1D72D}', '\u{1D72E}', '\u{1D72F}', '\u{1D730}',
- '\u{1D731}', '\u{1D732}', '\u{1D733}', '\u{1D734}', '\u{1D756}', '\u{1D757}', '\u{1D758}', '\u{1D759}',
- '\u{1D75A}', '\u{1D75B}', '\u{1D75C}', '\u{1D75D}', '\u{1D75E}', '\u{1D75F}', '\u{1D760}', '\u{1D761}',
- '\u{1D762}', '\u{1D763}', '\u{1D764}', '\u{1D765}', '\u{1D766}', '\u{1D767}', '\u{1D768}', '\u{1D769}',
- '\u{1D76A}', '\u{1D76B}', '\u{1D76C}', '\u{1D76D}', '\u{1D76E}', '\u{1D790}', '\u{1D791}', '\u{1D792}',
- '\u{1D793}', '\u{1D794}', '\u{1D795}', '\u{1D796}', '\u{1D797}', '\u{1D798}', '\u{1D799}', '\u{1D79A}',
- '\u{1D79B}', '\u{1D79C}', '\u{1D79D}', '\u{1D79E}', '\u{1D79F}', '\u{1D7A0}', '\u{1D7A1}', '\u{1D7A2}',
- '\u{1D7A3}', '\u{1D7A4}', '\u{1D7A5}', '\u{1D7A6}', '\u{1D7A7}', '\u{1D7A8}', '\u{1D7CA}'];
-
-pub static MARK_ENCLOSING : &'static [char] = &[
- '\u{0488}', '\u{0489}', '\u{1ABE}', '\u{20DD}', '\u{20DE}', '\u{20DF}', '\u{20E0}', '\u{20E2}',
- '\u{20E3}', '\u{20E4}', '\u{A670}', '\u{A671}', '\u{A672}'];
-
-pub static MARK_NONSPACING : &'static [char] = &[
- '\u{0300}', '\u{0301}', '\u{0302}', '\u{0303}', '\u{0304}', '\u{0305}', '\u{0306}', '\u{0307}',
- '\u{0308}', '\u{0309}', '\u{030A}', '\u{030B}', '\u{030C}', '\u{030D}', '\u{030E}', '\u{030F}',
- '\u{0310}', '\u{0311}', '\u{0312}', '\u{0313}', '\u{0314}', '\u{0315}', '\u{0316}', '\u{0317}',
- '\u{0318}', '\u{0319}', '\u{031A}', '\u{031B}', '\u{031C}', '\u{031D}', '\u{031E}', '\u{031F}',
- '\u{0320}', '\u{0321}', '\u{0322}', '\u{0323}', '\u{0324}', '\u{0325}', '\u{0326}', '\u{0327}',
- '\u{0328}', '\u{0329}', '\u{032A}', '\u{032B}', '\u{032C}', '\u{032D}', '\u{032E}', '\u{032F}',
- '\u{0330}', '\u{0331}', '\u{0332}', '\u{0333}', '\u{0334}', '\u{0335}', '\u{0336}', '\u{0337}',
- '\u{0338}', '\u{0339}', '\u{033A}', '\u{033B}', '\u{033C}', '\u{033D}', '\u{033E}', '\u{033F}',
- '\u{0340}', '\u{0341}', '\u{0342}', '\u{0343}', '\u{0344}', '\u{0345}', '\u{0346}', '\u{0347}',
- '\u{0348}', '\u{0349}', '\u{034A}', '\u{034B}', '\u{034C}', '\u{034D}', '\u{034E}', '\u{034F}',
- '\u{0350}', '\u{0351}', '\u{0352}', '\u{0353}', '\u{0354}', '\u{0355}', '\u{0356}', '\u{0357}',
- '\u{0358}', '\u{0359}', '\u{035A}', '\u{035B}', '\u{035C}', '\u{035D}', '\u{035E}', '\u{035F}',
- '\u{0360}', '\u{0361}', '\u{0362}', '\u{0363}', '\u{0364}', '\u{0365}', '\u{0366}', '\u{0367}',
- '\u{0368}', '\u{0369}', '\u{036A}', '\u{036B}', '\u{036C}', '\u{036D}', '\u{036E}', '\u{036F}',
- '\u{0483}', '\u{0484}', '\u{0485}', '\u{0486}', '\u{0487}', '\u{0591}', '\u{0592}', '\u{0593}',
- '\u{0594}', '\u{0595}', '\u{0596}', '\u{0597}', '\u{0598}', '\u{0599}', '\u{059A}', '\u{059B}',
- '\u{059C}', '\u{059D}', '\u{059E}', '\u{059F}', '\u{05A0}', '\u{05A1}', '\u{05A2}', '\u{05A3}',
- '\u{05A4}', '\u{05A5}', '\u{05A6}', '\u{05A7}', '\u{05A8}', '\u{05A9}', '\u{05AA}', '\u{05AB}',
- '\u{05AC}', '\u{05AD}', '\u{05AE}', '\u{05AF}', '\u{05B0}', '\u{05B1}', '\u{05B2}', '\u{05B3}',
- '\u{05B4}', '\u{05B5}', '\u{05B6}', '\u{05B7}', '\u{05B8}', '\u{05B9}', '\u{05BA}', '\u{05BB}',
- '\u{05BC}', '\u{05BD}', '\u{05BF}', '\u{05C1}', '\u{05C2}', '\u{05C4}', '\u{05C5}', '\u{05C7}',
- '\u{0610}', '\u{0611}', '\u{0612}', '\u{0613}', '\u{0614}', '\u{0615}', '\u{0616}', '\u{0617}',
- '\u{0618}', '\u{0619}', '\u{061A}', '\u{064B}', '\u{064C}', '\u{064D}', '\u{064E}', '\u{064F}',
- '\u{0650}', '\u{0651}', '\u{0652}', '\u{0653}', '\u{0654}', '\u{0655}', '\u{0656}', '\u{0657}',
- '\u{0658}', '\u{0659}', '\u{065A}', '\u{065B}', '\u{065C}', '\u{065D}', '\u{065E}', '\u{065F}',
- '\u{0670}', '\u{06D6}', '\u{06D7}', '\u{06D8}', '\u{06D9}', '\u{06DA}', '\u{06DB}', '\u{06DC}',
- '\u{06DF}', '\u{06E0}', '\u{06E1}', '\u{06E2}', '\u{06E3}', '\u{06E4}', '\u{06E7}', '\u{06E8}',
- '\u{06EA}', '\u{06EB}', '\u{06EC}', '\u{06ED}', '\u{0711}', '\u{0730}', '\u{0731}', '\u{0732}',
- '\u{0733}', '\u{0734}', '\u{0735}', '\u{0736}', '\u{0737}', '\u{0738}', '\u{0739}', '\u{073A}',
- '\u{073B}', '\u{073C}', '\u{073D}', '\u{073E}', '\u{073F}', '\u{0740}', '\u{0741}', '\u{0742}',
- '\u{0743}', '\u{0744}', '\u{0745}', '\u{0746}', '\u{0747}', '\u{0748}', '\u{0749}', '\u{074A}',
- '\u{07A6}', '\u{07A7}', '\u{07A8}', '\u{07A9}', '\u{07AA}', '\u{07AB}', '\u{07AC}', '\u{07AD}',
- '\u{07AE}', '\u{07AF}', '\u{07B0}', '\u{07EB}', '\u{07EC}', '\u{07ED}', '\u{07EE}', '\u{07EF}',
- '\u{07F0}', '\u{07F1}', '\u{07F2}', '\u{07F3}', '\u{0816}', '\u{0817}', '\u{0818}', '\u{0819}',
- '\u{081B}', '\u{081C}', '\u{081D}', '\u{081E}', '\u{081F}', '\u{0820}', '\u{0821}', '\u{0822}',
- '\u{0823}', '\u{0825}', '\u{0826}', '\u{0827}', '\u{0829}', '\u{082A}', '\u{082B}', '\u{082C}',
- '\u{082D}', '\u{0859}', '\u{085A}', '\u{085B}', '\u{08E3}', '\u{08E4}', '\u{08E5}', '\u{08E6}',
- '\u{08E7}', '\u{08E8}', '\u{08E9}', '\u{08EA}', '\u{08EB}', '\u{08EC}', '\u{08ED}', '\u{08EE}',
- '\u{08EF}', '\u{08F0}', '\u{08F1}', '\u{08F2}', '\u{08F3}', '\u{08F4}', '\u{08F5}', '\u{08F6}',
- '\u{08F7}', '\u{08F8}', '\u{08F9}', '\u{08FA}', '\u{08FB}', '\u{08FC}', '\u{08FD}', '\u{08FE}',
- '\u{08FF}', '\u{0900}', '\u{0901}', '\u{0902}', '\u{093A}', '\u{093C}', '\u{0941}', '\u{0942}',
- '\u{0943}', '\u{0944}', '\u{0945}', '\u{0946}', '\u{0947}', '\u{0948}', '\u{094D}', '\u{0951}',
- '\u{0952}', '\u{0953}', '\u{0954}', '\u{0955}', '\u{0956}', '\u{0957}', '\u{0962}', '\u{0963}',
- '\u{0981}', '\u{09BC}', '\u{09C1}', '\u{09C2}', '\u{09C3}', '\u{09C4}', '\u{09CD}', '\u{09E2}',
- '\u{09E3}', '\u{0A01}', '\u{0A02}', '\u{0A3C}', '\u{0A41}', '\u{0A42}', '\u{0A47}', '\u{0A48}',
- '\u{0A4B}', '\u{0A4C}', '\u{0A4D}', '\u{0A51}', '\u{0A70}', '\u{0A71}', '\u{0A75}', '\u{0A81}',
- '\u{0A82}', '\u{0ABC}', '\u{0AC1}', '\u{0AC2}', '\u{0AC3}', '\u{0AC4}', '\u{0AC5}', '\u{0AC7}',
- '\u{0AC8}', '\u{0ACD}', '\u{0AE2}', '\u{0AE3}', '\u{0B01}', '\u{0B3C}', '\u{0B3F}', '\u{0B41}',
- '\u{0B42}', '\u{0B43}', '\u{0B44}', '\u{0B4D}', '\u{0B56}', '\u{0B62}', '\u{0B63}', '\u{0B82}',
- '\u{0BC0}', '\u{0BCD}', '\u{0C00}', '\u{0C3E}', '\u{0C3F}', '\u{0C40}', '\u{0C46}', '\u{0C47}',
- '\u{0C48}', '\u{0C4A}', '\u{0C4B}', '\u{0C4C}', '\u{0C4D}', '\u{0C55}', '\u{0C56}', '\u{0C62}',
- '\u{0C63}', '\u{0C81}', '\u{0CBC}', '\u{0CBF}', '\u{0CC6}', '\u{0CCC}', '\u{0CCD}', '\u{0CE2}',
- '\u{0CE3}', '\u{0D01}', '\u{0D41}', '\u{0D42}', '\u{0D43}', '\u{0D44}', '\u{0D4D}', '\u{0D62}',
- '\u{0D63}', '\u{0DCA}', '\u{0DD2}', '\u{0DD3}', '\u{0DD4}', '\u{0DD6}', '\u{0E31}', '\u{0E34}',
- '\u{0E35}', '\u{0E36}', '\u{0E37}', '\u{0E38}', '\u{0E39}', '\u{0E3A}', '\u{0E47}', '\u{0E48}',
- '\u{0E49}', '\u{0E4A}', '\u{0E4B}', '\u{0E4C}', '\u{0E4D}', '\u{0E4E}', '\u{0EB1}', '\u{0EB4}',
- '\u{0EB5}', '\u{0EB6}', '\u{0EB7}', '\u{0EB8}', '\u{0EB9}', '\u{0EBB}', '\u{0EBC}', '\u{0EC8}',
- '\u{0EC9}', '\u{0ECA}', '\u{0ECB}', '\u{0ECC}', '\u{0ECD}', '\u{0F18}', '\u{0F19}', '\u{0F35}',
- '\u{0F37}', '\u{0F39}', '\u{0F71}', '\u{0F72}', '\u{0F73}', '\u{0F74}', '\u{0F75}', '\u{0F76}',
- '\u{0F77}', '\u{0F78}', '\u{0F79}', '\u{0F7A}', '\u{0F7B}', '\u{0F7C}', '\u{0F7D}', '\u{0F7E}',
- '\u{0F80}', '\u{0F81}', '\u{0F82}', '\u{0F83}', '\u{0F84}', '\u{0F86}', '\u{0F87}', '\u{0F8D}',
- '\u{0F8E}', '\u{0F8F}', '\u{0F90}', '\u{0F91}', '\u{0F92}', '\u{0F93}', '\u{0F94}', '\u{0F95}',
- '\u{0F96}', '\u{0F97}', '\u{0F99}', '\u{0F9A}', '\u{0F9B}', '\u{0F9C}', '\u{0F9D}', '\u{0F9E}',
- '\u{0F9F}', '\u{0FA0}', '\u{0FA1}', '\u{0FA2}', '\u{0FA3}', '\u{0FA4}', '\u{0FA5}', '\u{0FA6}',
- '\u{0FA7}', '\u{0FA8}', '\u{0FA9}', '\u{0FAA}', '\u{0FAB}', '\u{0FAC}', '\u{0FAD}', '\u{0FAE}',
- '\u{0FAF}', '\u{0FB0}', '\u{0FB1}', '\u{0FB2}', '\u{0FB3}', '\u{0FB4}', '\u{0FB5}', '\u{0FB6}',
- '\u{0FB7}', '\u{0FB8}', '\u{0FB9}', '\u{0FBA}', '\u{0FBB}', '\u{0FBC}', '\u{0FC6}', '\u{102D}',
- '\u{102E}', '\u{102F}', '\u{1030}', '\u{1032}', '\u{1033}', '\u{1034}', '\u{1035}', '\u{1036}',
- '\u{1037}', '\u{1039}', '\u{103A}', '\u{103D}', '\u{103E}', '\u{1058}', '\u{1059}', '\u{105E}',
- '\u{105F}', '\u{1060}', '\u{1071}', '\u{1072}', '\u{1073}', '\u{1074}', '\u{1082}', '\u{1085}',
- '\u{1086}', '\u{108D}', '\u{109D}', '\u{135D}', '\u{135E}', '\u{135F}', '\u{1712}', '\u{1713}',
- '\u{1714}', '\u{1732}', '\u{1733}', '\u{1734}', '\u{1752}', '\u{1753}', '\u{1772}', '\u{1773}',
- '\u{17B4}', '\u{17B5}', '\u{17B7}', '\u{17B8}', '\u{17B9}', '\u{17BA}', '\u{17BB}', '\u{17BC}',
- '\u{17BD}', '\u{17C6}', '\u{17C9}', '\u{17CA}', '\u{17CB}', '\u{17CC}', '\u{17CD}', '\u{17CE}',
- '\u{17CF}', '\u{17D0}', '\u{17D1}', '\u{17D2}', '\u{17D3}', '\u{17DD}', '\u{180B}', '\u{180C}',
- '\u{180D}', '\u{18A9}', '\u{1920}', '\u{1921}', '\u{1922}', '\u{1927}', '\u{1928}', '\u{1932}',
- '\u{1939}', '\u{193A}', '\u{193B}', '\u{1A17}', '\u{1A18}', '\u{1A1B}', '\u{1A56}', '\u{1A58}',
- '\u{1A59}', '\u{1A5A}', '\u{1A5B}', '\u{1A5C}', '\u{1A5D}', '\u{1A5E}', '\u{1A60}', '\u{1A62}',
- '\u{1A65}', '\u{1A66}', '\u{1A67}', '\u{1A68}', '\u{1A69}', '\u{1A6A}', '\u{1A6B}', '\u{1A6C}',
- '\u{1A73}', '\u{1A74}', '\u{1A75}', '\u{1A76}', '\u{1A77}', '\u{1A78}', '\u{1A79}', '\u{1A7A}',
- '\u{1A7B}', '\u{1A7C}', '\u{1A7F}', '\u{1AB0}', '\u{1AB1}', '\u{1AB2}', '\u{1AB3}', '\u{1AB4}',
- '\u{1AB5}', '\u{1AB6}', '\u{1AB7}', '\u{1AB8}', '\u{1AB9}', '\u{1ABA}', '\u{1ABB}', '\u{1ABC}',
- '\u{1ABD}', '\u{1B00}', '\u{1B01}', '\u{1B02}', '\u{1B03}', '\u{1B34}', '\u{1B36}', '\u{1B37}',
- '\u{1B38}', '\u{1B39}', '\u{1B3A}', '\u{1B3C}', '\u{1B42}', '\u{1B6B}', '\u{1B6C}', '\u{1B6D}',
- '\u{1B6E}', '\u{1B6F}', '\u{1B70}', '\u{1B71}', '\u{1B72}', '\u{1B73}', '\u{1B80}', '\u{1B81}',
- '\u{1BA2}', '\u{1BA3}', '\u{1BA4}', '\u{1BA5}', '\u{1BA8}', '\u{1BA9}', '\u{1BAB}', '\u{1BAC}',
- '\u{1BAD}', '\u{1BE6}', '\u{1BE8}', '\u{1BE9}', '\u{1BED}', '\u{1BEF}', '\u{1BF0}', '\u{1BF1}',
- '\u{1C2C}', '\u{1C2D}', '\u{1C2E}', '\u{1C2F}', '\u{1C30}', '\u{1C31}', '\u{1C32}', '\u{1C33}',
- '\u{1C36}', '\u{1C37}', '\u{1CD0}', '\u{1CD1}', '\u{1CD2}', '\u{1CD4}', '\u{1CD5}', '\u{1CD6}',
- '\u{1CD7}', '\u{1CD8}', '\u{1CD9}', '\u{1CDA}', '\u{1CDB}', '\u{1CDC}', '\u{1CDD}', '\u{1CDE}',
- '\u{1CDF}', '\u{1CE0}', '\u{1CE2}', '\u{1CE3}', '\u{1CE4}', '\u{1CE5}', '\u{1CE6}', '\u{1CE7}',
- '\u{1CE8}', '\u{1CED}', '\u{1CF4}', '\u{1CF8}', '\u{1CF9}', '\u{1DC0}', '\u{1DC1}', '\u{1DC2}',
- '\u{1DC3}', '\u{1DC4}', '\u{1DC5}', '\u{1DC6}', '\u{1DC7}', '\u{1DC8}', '\u{1DC9}', '\u{1DCA}',
- '\u{1DCB}', '\u{1DCC}', '\u{1DCD}', '\u{1DCE}', '\u{1DCF}', '\u{1DD0}', '\u{1DD1}', '\u{1DD2}',
- '\u{1DD3}', '\u{1DD4}', '\u{1DD5}', '\u{1DD6}', '\u{1DD7}', '\u{1DD8}', '\u{1DD9}', '\u{1DDA}',
- '\u{1DDB}', '\u{1DDC}', '\u{1DDD}', '\u{1DDE}', '\u{1DDF}', '\u{1DE0}', '\u{1DE1}', '\u{1DE2}',
- '\u{1DE3}', '\u{1DE4}', '\u{1DE5}', '\u{1DE6}', '\u{1DE7}', '\u{1DE8}', '\u{1DE9}', '\u{1DEA}',
- '\u{1DEB}', '\u{1DEC}', '\u{1DED}', '\u{1DEE}', '\u{1DEF}', '\u{1DF0}', '\u{1DF1}', '\u{1DF2}',
- '\u{1DF3}', '\u{1DF4}', '\u{1DF5}', '\u{1DFC}', '\u{1DFD}', '\u{1DFE}', '\u{1DFF}', '\u{20D0}',
- '\u{20D1}', '\u{20D2}', '\u{20D3}', '\u{20D4}', '\u{20D5}', '\u{20D6}', '\u{20D7}', '\u{20D8}',
- '\u{20D9}', '\u{20DA}', '\u{20DB}', '\u{20DC}', '\u{20E1}', '\u{20E5}', '\u{20E6}', '\u{20E7}',
- '\u{20E8}', '\u{20E9}', '\u{20EA}', '\u{20EB}', '\u{20EC}', '\u{20ED}', '\u{20EE}', '\u{20EF}',
- '\u{20F0}', '\u{2CEF}', '\u{2CF0}', '\u{2CF1}', '\u{2D7F}', '\u{2DE0}', '\u{2DE1}', '\u{2DE2}',
- '\u{2DE3}', '\u{2DE4}', '\u{2DE5}', '\u{2DE6}', '\u{2DE7}', '\u{2DE8}', '\u{2DE9}', '\u{2DEA}',
- '\u{2DEB}', '\u{2DEC}', '\u{2DED}', '\u{2DEE}', '\u{2DEF}', '\u{2DF0}', '\u{2DF1}', '\u{2DF2}',
- '\u{2DF3}', '\u{2DF4}', '\u{2DF5}', '\u{2DF6}', '\u{2DF7}', '\u{2DF8}', '\u{2DF9}', '\u{2DFA}',
- '\u{2DFB}', '\u{2DFC}', '\u{2DFD}', '\u{2DFE}', '\u{2DFF}', '\u{302A}', '\u{302B}', '\u{302C}',
- '\u{302D}', '\u{3099}', '\u{309A}', '\u{A66F}', '\u{A674}', '\u{A675}', '\u{A676}', '\u{A677}',
- '\u{A678}', '\u{A679}', '\u{A67A}', '\u{A67B}', '\u{A67C}', '\u{A67D}', '\u{A69E}', '\u{A69F}',
- '\u{A6F0}', '\u{A6F1}', '\u{A802}', '\u{A806}', '\u{A80B}', '\u{A825}', '\u{A826}', '\u{A8C4}',
- '\u{A8E0}', '\u{A8E1}', '\u{A8E2}', '\u{A8E3}', '\u{A8E4}', '\u{A8E5}', '\u{A8E6}', '\u{A8E7}',
- '\u{A8E8}', '\u{A8E9}', '\u{A8EA}', '\u{A8EB}', '\u{A8EC}', '\u{A8ED}', '\u{A8EE}', '\u{A8EF}',
- '\u{A8F0}', '\u{A8F1}', '\u{A926}', '\u{A927}', '\u{A928}', '\u{A929}', '\u{A92A}', '\u{A92B}',
- '\u{A92C}', '\u{A92D}', '\u{A947}', '\u{A948}', '\u{A949}', '\u{A94A}', '\u{A94B}', '\u{A94C}',
- '\u{A94D}', '\u{A94E}', '\u{A94F}', '\u{A950}', '\u{A951}', '\u{A980}', '\u{A981}', '\u{A982}',
- '\u{A9B3}', '\u{A9B6}', '\u{A9B7}', '\u{A9B8}', '\u{A9B9}', '\u{A9BC}', '\u{A9E5}', '\u{AA29}',
- '\u{AA2A}', '\u{AA2B}', '\u{AA2C}', '\u{AA2D}', '\u{AA2E}', '\u{AA31}', '\u{AA32}', '\u{AA35}',
- '\u{AA36}', '\u{AA43}', '\u{AA4C}', '\u{AA7C}', '\u{AAB0}', '\u{AAB2}', '\u{AAB3}', '\u{AAB4}',
- '\u{AAB7}', '\u{AAB8}', '\u{AABE}', '\u{AABF}', '\u{AAC1}', '\u{AAEC}', '\u{AAED}', '\u{AAF6}',
- '\u{ABE5}', '\u{ABE8}', '\u{ABED}', '\u{FB1E}', '\u{FE00}', '\u{FE01}', '\u{FE02}', '\u{FE03}',
- '\u{FE04}', '\u{FE05}', '\u{FE06}', '\u{FE07}', '\u{FE08}', '\u{FE09}', '\u{FE0A}', '\u{FE0B}',
- '\u{FE0C}', '\u{FE0D}', '\u{FE0E}', '\u{FE0F}', '\u{FE20}', '\u{FE21}', '\u{FE22}', '\u{FE23}',
- '\u{FE24}', '\u{FE25}', '\u{FE26}', '\u{FE27}', '\u{FE28}', '\u{FE29}', '\u{FE2A}', '\u{FE2B}',
- '\u{FE2C}', '\u{FE2D}', '\u{FE2E}', '\u{FE2F}', '\u{101FD}', '\u{102E0}', '\u{10376}', '\u{10377}',
- '\u{10378}', '\u{10379}', '\u{1037A}', '\u{10A01}', '\u{10A02}', '\u{10A03}', '\u{10A05}', '\u{10A06}',
- '\u{10A0C}', '\u{10A0D}', '\u{10A0E}', '\u{10A0F}', '\u{10A38}', '\u{10A39}', '\u{10A3A}', '\u{10A3F}',
- '\u{10AE5}', '\u{10AE6}', '\u{11001}', '\u{11038}', '\u{11039}', '\u{1103A}', '\u{1103B}', '\u{1103C}',
- '\u{1103D}', '\u{1103E}', '\u{1103F}', '\u{11040}', '\u{11041}', '\u{11042}', '\u{11043}', '\u{11044}',
- '\u{11045}', '\u{11046}', '\u{1107F}', '\u{11080}', '\u{11081}', '\u{110B3}', '\u{110B4}', '\u{110B5}',
- '\u{110B6}', '\u{110B9}', '\u{110BA}', '\u{11100}', '\u{11101}', '\u{11102}', '\u{11127}', '\u{11128}',
- '\u{11129}', '\u{1112A}', '\u{1112B}', '\u{1112D}', '\u{1112E}', '\u{1112F}', '\u{11130}', '\u{11131}',
- '\u{11132}', '\u{11133}', '\u{11134}', '\u{11173}', '\u{11180}', '\u{11181}', '\u{111B6}', '\u{111B7}',
- '\u{111B8}', '\u{111B9}', '\u{111BA}', '\u{111BB}', '\u{111BC}', '\u{111BD}', '\u{111BE}', '\u{111CA}',
- '\u{111CB}', '\u{111CC}', '\u{1122F}', '\u{11230}', '\u{11231}', '\u{11234}', '\u{11236}', '\u{11237}',
- '\u{112DF}', '\u{112E3}', '\u{112E4}', '\u{112E5}', '\u{112E6}', '\u{112E7}', '\u{112E8}', '\u{112E9}',
- '\u{112EA}', '\u{11300}', '\u{11301}', '\u{1133C}', '\u{11340}', '\u{11366}', '\u{11367}', '\u{11368}',
- '\u{11369}', '\u{1136A}', '\u{1136B}', '\u{1136C}', '\u{11370}', '\u{11371}', '\u{11372}', '\u{11373}',
- '\u{11374}', '\u{114B3}', '\u{114B4}', '\u{114B5}', '\u{114B6}', '\u{114B7}', '\u{114B8}', '\u{114BA}',
- '\u{114BF}', '\u{114C0}', '\u{114C2}', '\u{114C3}', '\u{115B2}', '\u{115B3}', '\u{115B4}', '\u{115B5}',
- '\u{115BC}', '\u{115BD}', '\u{115BF}', '\u{115C0}', '\u{115DC}', '\u{115DD}', '\u{11633}', '\u{11634}',
- '\u{11635}', '\u{11636}', '\u{11637}', '\u{11638}', '\u{11639}', '\u{1163A}', '\u{1163D}', '\u{1163F}',
- '\u{11640}', '\u{116AB}', '\u{116AD}', '\u{116B0}', '\u{116B1}', '\u{116B2}', '\u{116B3}', '\u{116B4}',
- '\u{116B5}', '\u{116B7}', '\u{1171D}', '\u{1171E}', '\u{1171F}', '\u{11722}', '\u{11723}', '\u{11724}',
- '\u{11725}', '\u{11727}', '\u{11728}', '\u{11729}', '\u{1172A}', '\u{1172B}', '\u{16AF0}', '\u{16AF1}',
- '\u{16AF2}', '\u{16AF3}', '\u{16AF4}', '\u{16B30}', '\u{16B31}', '\u{16B32}', '\u{16B33}', '\u{16B34}',
- '\u{16B35}', '\u{16B36}', '\u{16F8F}', '\u{16F90}', '\u{16F91}', '\u{16F92}', '\u{1BC9D}', '\u{1BC9E}',
- '\u{1D167}', '\u{1D168}', '\u{1D169}', '\u{1D17B}', '\u{1D17C}', '\u{1D17D}', '\u{1D17E}', '\u{1D17F}',
- '\u{1D180}', '\u{1D181}', '\u{1D182}', '\u{1D185}', '\u{1D186}', '\u{1D187}', '\u{1D188}', '\u{1D189}',
- '\u{1D18A}', '\u{1D18B}', '\u{1D1AA}', '\u{1D1AB}', '\u{1D1AC}', '\u{1D1AD}', '\u{1D242}', '\u{1D243}',
- '\u{1D244}', '\u{1DA00}', '\u{1DA01}', '\u{1DA02}', '\u{1DA03}', '\u{1DA04}', '\u{1DA05}', '\u{1DA06}',
- '\u{1DA07}', '\u{1DA08}', '\u{1DA09}', '\u{1DA0A}', '\u{1DA0B}', '\u{1DA0C}', '\u{1DA0D}', '\u{1DA0E}',
- '\u{1DA0F}', '\u{1DA10}', '\u{1DA11}', '\u{1DA12}', '\u{1DA13}', '\u{1DA14}', '\u{1DA15}', '\u{1DA16}',
- '\u{1DA17}', '\u{1DA18}', '\u{1DA19}', '\u{1DA1A}', '\u{1DA1B}', '\u{1DA1C}', '\u{1DA1D}', '\u{1DA1E}',
- '\u{1DA1F}', '\u{1DA20}', '\u{1DA21}', '\u{1DA22}', '\u{1DA23}', '\u{1DA24}', '\u{1DA25}', '\u{1DA26}',
- '\u{1DA27}', '\u{1DA28}', '\u{1DA29}', '\u{1DA2A}', '\u{1DA2B}', '\u{1DA2C}', '\u{1DA2D}', '\u{1DA2E}',
- '\u{1DA2F}', '\u{1DA30}', '\u{1DA31}', '\u{1DA32}', '\u{1DA33}', '\u{1DA34}', '\u{1DA35}', '\u{1DA36}',
- '\u{1DA3B}', '\u{1DA3C}', '\u{1DA3D}', '\u{1DA3E}', '\u{1DA3F}', '\u{1DA40}', '\u{1DA41}', '\u{1DA42}',
- '\u{1DA43}', '\u{1DA44}', '\u{1DA45}', '\u{1DA46}', '\u{1DA47}', '\u{1DA48}', '\u{1DA49}', '\u{1DA4A}',
- '\u{1DA4B}', '\u{1DA4C}', '\u{1DA4D}', '\u{1DA4E}', '\u{1DA4F}', '\u{1DA50}', '\u{1DA51}', '\u{1DA52}',
- '\u{1DA53}', '\u{1DA54}', '\u{1DA55}', '\u{1DA56}', '\u{1DA57}', '\u{1DA58}', '\u{1DA59}', '\u{1DA5A}',
- '\u{1DA5B}', '\u{1DA5C}', '\u{1DA5D}', '\u{1DA5E}', '\u{1DA5F}', '\u{1DA60}', '\u{1DA61}', '\u{1DA62}',
- '\u{1DA63}', '\u{1DA64}', '\u{1DA65}', '\u{1DA66}', '\u{1DA67}', '\u{1DA68}', '\u{1DA69}', '\u{1DA6A}',
- '\u{1DA6B}', '\u{1DA6C}', '\u{1DA75}', '\u{1DA84}', '\u{1DA9B}', '\u{1DA9C}', '\u{1DA9D}', '\u{1DA9E}',
- '\u{1DA9F}', '\u{1DAA1}', '\u{1DAA2}', '\u{1DAA3}', '\u{1DAA4}', '\u{1DAA5}', '\u{1DAA6}', '\u{1DAA7}',
- '\u{1DAA8}', '\u{1DAA9}', '\u{1DAAA}', '\u{1DAAB}', '\u{1DAAC}', '\u{1DAAD}', '\u{1DAAE}', '\u{1DAAF}',
- '\u{1E8D0}', '\u{1E8D1}', '\u{1E8D2}', '\u{1E8D3}', '\u{1E8D4}', '\u{1E8D5}', '\u{1E8D6}', '\u{E0100}',
- '\u{E0101}', '\u{E0102}', '\u{E0103}', '\u{E0104}', '\u{E0105}', '\u{E0106}', '\u{E0107}', '\u{E0108}',
- '\u{E0109}', '\u{E010A}', '\u{E010B}', '\u{E010C}', '\u{E010D}', '\u{E010E}', '\u{E010F}', '\u{E0110}',
- '\u{E0111}', '\u{E0112}', '\u{E0113}', '\u{E0114}', '\u{E0115}', '\u{E0116}', '\u{E0117}', '\u{E0118}',
- '\u{E0119}', '\u{E011A}', '\u{E011B}', '\u{E011C}', '\u{E011D}', '\u{E011E}', '\u{E011F}', '\u{E0120}',
- '\u{E0121}', '\u{E0122}', '\u{E0123}', '\u{E0124}', '\u{E0125}', '\u{E0126}', '\u{E0127}', '\u{E0128}',
- '\u{E0129}', '\u{E012A}', '\u{E012B}', '\u{E012C}', '\u{E012D}', '\u{E012E}', '\u{E012F}', '\u{E0130}',
- '\u{E0131}', '\u{E0132}', '\u{E0133}', '\u{E0134}', '\u{E0135}', '\u{E0136}', '\u{E0137}', '\u{E0138}',
- '\u{E0139}', '\u{E013A}', '\u{E013B}', '\u{E013C}', '\u{E013D}', '\u{E013E}', '\u{E013F}', '\u{E0140}',
- '\u{E0141}', '\u{E0142}', '\u{E0143}', '\u{E0144}', '\u{E0145}', '\u{E0146}', '\u{E0147}', '\u{E0148}',
- '\u{E0149}', '\u{E014A}', '\u{E014B}', '\u{E014C}', '\u{E014D}', '\u{E014E}', '\u{E014F}', '\u{E0150}',
- '\u{E0151}', '\u{E0152}', '\u{E0153}', '\u{E0154}', '\u{E0155}', '\u{E0156}', '\u{E0157}', '\u{E0158}',
- '\u{E0159}', '\u{E015A}', '\u{E015B}', '\u{E015C}', '\u{E015D}', '\u{E015E}', '\u{E015F}', '\u{E0160}',
- '\u{E0161}', '\u{E0162}', '\u{E0163}', '\u{E0164}', '\u{E0165}', '\u{E0166}', '\u{E0167}', '\u{E0168}',
- '\u{E0169}', '\u{E016A}', '\u{E016B}', '\u{E016C}', '\u{E016D}', '\u{E016E}', '\u{E016F}', '\u{E0170}',
- '\u{E0171}', '\u{E0172}', '\u{E0173}', '\u{E0174}', '\u{E0175}', '\u{E0176}', '\u{E0177}', '\u{E0178}',
- '\u{E0179}', '\u{E017A}', '\u{E017B}', '\u{E017C}', '\u{E017D}', '\u{E017E}', '\u{E017F}', '\u{E0180}',
- '\u{E0181}', '\u{E0182}', '\u{E0183}', '\u{E0184}', '\u{E0185}', '\u{E0186}', '\u{E0187}', '\u{E0188}',
- '\u{E0189}', '\u{E018A}', '\u{E018B}', '\u{E018C}', '\u{E018D}', '\u{E018E}', '\u{E018F}', '\u{E0190}',
- '\u{E0191}', '\u{E0192}', '\u{E0193}', '\u{E0194}', '\u{E0195}', '\u{E0196}', '\u{E0197}', '\u{E0198}',
- '\u{E0199}', '\u{E019A}', '\u{E019B}', '\u{E019C}', '\u{E019D}', '\u{E019E}', '\u{E019F}', '\u{E01A0}',
- '\u{E01A1}', '\u{E01A2}', '\u{E01A3}', '\u{E01A4}', '\u{E01A5}', '\u{E01A6}', '\u{E01A7}', '\u{E01A8}',
- '\u{E01A9}', '\u{E01AA}', '\u{E01AB}', '\u{E01AC}', '\u{E01AD}', '\u{E01AE}', '\u{E01AF}', '\u{E01B0}',
- '\u{E01B1}', '\u{E01B2}', '\u{E01B3}', '\u{E01B4}', '\u{E01B5}', '\u{E01B6}', '\u{E01B7}', '\u{E01B8}',
- '\u{E01B9}', '\u{E01BA}', '\u{E01BB}', '\u{E01BC}', '\u{E01BD}', '\u{E01BE}', '\u{E01BF}', '\u{E01C0}',
- '\u{E01C1}', '\u{E01C2}', '\u{E01C3}', '\u{E01C4}', '\u{E01C5}', '\u{E01C6}', '\u{E01C7}', '\u{E01C8}',
- '\u{E01C9}', '\u{E01CA}', '\u{E01CB}', '\u{E01CC}', '\u{E01CD}', '\u{E01CE}', '\u{E01CF}', '\u{E01D0}',
- '\u{E01D1}', '\u{E01D2}', '\u{E01D3}', '\u{E01D4}', '\u{E01D5}', '\u{E01D6}', '\u{E01D7}', '\u{E01D8}',
- '\u{E01D9}', '\u{E01DA}', '\u{E01DB}', '\u{E01DC}', '\u{E01DD}', '\u{E01DE}', '\u{E01DF}', '\u{E01E0}',
- '\u{E01E1}', '\u{E01E2}', '\u{E01E3}', '\u{E01E4}', '\u{E01E5}', '\u{E01E6}', '\u{E01E7}', '\u{E01E8}',
- '\u{E01E9}', '\u{E01EA}', '\u{E01EB}', '\u{E01EC}', '\u{E01ED}', '\u{E01EE}', '\u{E01EF}'];
-
-pub static MARK_SPACE_COMBINING : &'static [char] = &[
- '\u{0903}', '\u{093B}', '\u{093E}', '\u{093F}', '\u{0940}', '\u{0949}', '\u{094A}', '\u{094B}',
- '\u{094C}', '\u{094E}', '\u{094F}', '\u{0982}', '\u{0983}', '\u{09BE}', '\u{09BF}', '\u{09C0}',
- '\u{09C7}', '\u{09C8}', '\u{09CB}', '\u{09CC}', '\u{09D7}', '\u{0A03}', '\u{0A3E}', '\u{0A3F}',
- '\u{0A40}', '\u{0A83}', '\u{0ABE}', '\u{0ABF}', '\u{0AC0}', '\u{0AC9}', '\u{0ACB}', '\u{0ACC}',
- '\u{0B02}', '\u{0B03}', '\u{0B3E}', '\u{0B40}', '\u{0B47}', '\u{0B48}', '\u{0B4B}', '\u{0B4C}',
- '\u{0B57}', '\u{0BBE}', '\u{0BBF}', '\u{0BC1}', '\u{0BC2}', '\u{0BC6}', '\u{0BC7}', '\u{0BC8}',
- '\u{0BCA}', '\u{0BCB}', '\u{0BCC}', '\u{0BD7}', '\u{0C01}', '\u{0C02}', '\u{0C03}', '\u{0C41}',
- '\u{0C42}', '\u{0C43}', '\u{0C44}', '\u{0C82}', '\u{0C83}', '\u{0CBE}', '\u{0CC0}', '\u{0CC1}',
- '\u{0CC2}', '\u{0CC3}', '\u{0CC4}', '\u{0CC7}', '\u{0CC8}', '\u{0CCA}', '\u{0CCB}', '\u{0CD5}',
- '\u{0CD6}', '\u{0D02}', '\u{0D03}', '\u{0D3E}', '\u{0D3F}', '\u{0D40}', '\u{0D46}', '\u{0D47}',
- '\u{0D48}', '\u{0D4A}', '\u{0D4B}', '\u{0D4C}', '\u{0D57}', '\u{0D82}', '\u{0D83}', '\u{0DCF}',
- '\u{0DD0}', '\u{0DD1}', '\u{0DD8}', '\u{0DD9}', '\u{0DDA}', '\u{0DDB}', '\u{0DDC}', '\u{0DDD}',
- '\u{0DDE}', '\u{0DDF}', '\u{0DF2}', '\u{0DF3}', '\u{0F3E}', '\u{0F3F}', '\u{0F7F}', '\u{102B}',
- '\u{102C}', '\u{1031}', '\u{1038}', '\u{103B}', '\u{103C}', '\u{1056}', '\u{1057}', '\u{1062}',
- '\u{1063}', '\u{1064}', '\u{1067}', '\u{1068}', '\u{1069}', '\u{106A}', '\u{106B}', '\u{106C}',
- '\u{106D}', '\u{1083}', '\u{1084}', '\u{1087}', '\u{1088}', '\u{1089}', '\u{108A}', '\u{108B}',
- '\u{108C}', '\u{108F}', '\u{109A}', '\u{109B}', '\u{109C}', '\u{17B6}', '\u{17BE}', '\u{17BF}',
- '\u{17C0}', '\u{17C1}', '\u{17C2}', '\u{17C3}', '\u{17C4}', '\u{17C5}', '\u{17C7}', '\u{17C8}',
- '\u{1923}', '\u{1924}', '\u{1925}', '\u{1926}', '\u{1929}', '\u{192A}', '\u{192B}', '\u{1930}',
- '\u{1931}', '\u{1933}', '\u{1934}', '\u{1935}', '\u{1936}', '\u{1937}', '\u{1938}', '\u{1A19}',
- '\u{1A1A}', '\u{1A55}', '\u{1A57}', '\u{1A61}', '\u{1A63}', '\u{1A64}', '\u{1A6D}', '\u{1A6E}',
- '\u{1A6F}', '\u{1A70}', '\u{1A71}', '\u{1A72}', '\u{1B04}', '\u{1B35}', '\u{1B3B}', '\u{1B3D}',
- '\u{1B3E}', '\u{1B3F}', '\u{1B40}', '\u{1B41}', '\u{1B43}', '\u{1B44}', '\u{1B82}', '\u{1BA1}',
- '\u{1BA6}', '\u{1BA7}', '\u{1BAA}', '\u{1BE7}', '\u{1BEA}', '\u{1BEB}', '\u{1BEC}', '\u{1BEE}',
- '\u{1BF2}', '\u{1BF3}', '\u{1C24}', '\u{1C25}', '\u{1C26}', '\u{1C27}', '\u{1C28}', '\u{1C29}',
- '\u{1C2A}', '\u{1C2B}', '\u{1C34}', '\u{1C35}', '\u{1CE1}', '\u{1CF2}', '\u{1CF3}', '\u{302E}',
- '\u{302F}', '\u{A823}', '\u{A824}', '\u{A827}', '\u{A880}', '\u{A881}', '\u{A8B4}', '\u{A8B5}',
- '\u{A8B6}', '\u{A8B7}', '\u{A8B8}', '\u{A8B9}', '\u{A8BA}', '\u{A8BB}', '\u{A8BC}', '\u{A8BD}',
- '\u{A8BE}', '\u{A8BF}', '\u{A8C0}', '\u{A8C1}', '\u{A8C2}', '\u{A8C3}', '\u{A952}', '\u{A953}',
- '\u{A983}', '\u{A9B4}', '\u{A9B5}', '\u{A9BA}', '\u{A9BB}', '\u{A9BD}', '\u{A9BE}', '\u{A9BF}',
- '\u{A9C0}', '\u{AA2F}', '\u{AA30}', '\u{AA33}', '\u{AA34}', '\u{AA4D}', '\u{AA7B}', '\u{AA7D}',
- '\u{AAEB}', '\u{AAEE}', '\u{AAEF}', '\u{AAF5}', '\u{ABE3}', '\u{ABE4}', '\u{ABE6}', '\u{ABE7}',
- '\u{ABE9}', '\u{ABEA}', '\u{ABEC}', '\u{11000}', '\u{11002}', '\u{11082}', '\u{110B0}', '\u{110B1}',
- '\u{110B2}', '\u{110B7}', '\u{110B8}', '\u{1112C}', '\u{11182}', '\u{111B3}', '\u{111B4}', '\u{111B5}',
- '\u{111BF}', '\u{111C0}', '\u{1122C}', '\u{1122D}', '\u{1122E}', '\u{11232}', '\u{11233}', '\u{11235}',
- '\u{112E0}', '\u{112E1}', '\u{112E2}', '\u{11302}', '\u{11303}', '\u{1133E}', '\u{1133F}', '\u{11341}',
- '\u{11342}', '\u{11343}', '\u{11344}', '\u{11347}', '\u{11348}', '\u{1134B}', '\u{1134C}', '\u{1134D}',
- '\u{11357}', '\u{11362}', '\u{11363}', '\u{114B0}', '\u{114B1}', '\u{114B2}', '\u{114B9}', '\u{114BB}',
- '\u{114BC}', '\u{114BD}', '\u{114BE}', '\u{114C1}', '\u{115AF}', '\u{115B0}', '\u{115B1}', '\u{115B8}',
- '\u{115B9}', '\u{115BA}', '\u{115BB}', '\u{115BE}', '\u{11630}', '\u{11631}', '\u{11632}', '\u{1163B}',
- '\u{1163C}', '\u{1163E}', '\u{116AC}', '\u{116AE}', '\u{116AF}', '\u{116B6}', '\u{11720}', '\u{11721}',
- '\u{11726}', '\u{16F51}', '\u{16F52}', '\u{16F53}', '\u{16F54}', '\u{16F55}', '\u{16F56}', '\u{16F57}',
- '\u{16F58}', '\u{16F59}', '\u{16F5A}', '\u{16F5B}', '\u{16F5C}', '\u{16F5D}', '\u{16F5E}', '\u{16F5F}',
- '\u{16F60}', '\u{16F61}', '\u{16F62}', '\u{16F63}', '\u{16F64}', '\u{16F65}', '\u{16F66}', '\u{16F67}',
- '\u{16F68}', '\u{16F69}', '\u{16F6A}', '\u{16F6B}', '\u{16F6C}', '\u{16F6D}', '\u{16F6E}', '\u{16F6F}',
- '\u{16F70}', '\u{16F71}', '\u{16F72}', '\u{16F73}', '\u{16F74}', '\u{16F75}', '\u{16F76}', '\u{16F77}',
- '\u{16F78}', '\u{16F79}', '\u{16F7A}', '\u{16F7B}', '\u{16F7C}', '\u{16F7D}', '\u{16F7E}', '\u{1D165}',
- '\u{1D166}', '\u{1D16D}', '\u{1D16E}', '\u{1D16F}', '\u{1D170}', '\u{1D171}', '\u{1D172}'];
-
-pub static NUMBER_DECIMAL_DIGIT : &'static [char] = &[
- '\u{0030}', '\u{0031}', '\u{0032}', '\u{0033}', '\u{0034}', '\u{0035}', '\u{0036}', '\u{0037}',
- '\u{0038}', '\u{0039}', '\u{0660}', '\u{0661}', '\u{0662}', '\u{0663}', '\u{0664}', '\u{0665}',
- '\u{0666}', '\u{0667}', '\u{0668}', '\u{0669}', '\u{06F0}', '\u{06F1}', '\u{06F2}', '\u{06F3}',
- '\u{06F4}', '\u{06F5}', '\u{06F6}', '\u{06F7}', '\u{06F8}', '\u{06F9}', '\u{07C0}', '\u{07C1}',
- '\u{07C2}', '\u{07C3}', '\u{07C4}', '\u{07C5}', '\u{07C6}', '\u{07C7}', '\u{07C8}', '\u{07C9}',
- '\u{0966}', '\u{0967}', '\u{0968}', '\u{0969}', '\u{096A}', '\u{096B}', '\u{096C}', '\u{096D}',
- '\u{096E}', '\u{096F}', '\u{09E6}', '\u{09E7}', '\u{09E8}', '\u{09E9}', '\u{09EA}', '\u{09EB}',
- '\u{09EC}', '\u{09ED}', '\u{09EE}', '\u{09EF}', '\u{0A66}', '\u{0A67}', '\u{0A68}', '\u{0A69}',
- '\u{0A6A}', '\u{0A6B}', '\u{0A6C}', '\u{0A6D}', '\u{0A6E}', '\u{0A6F}', '\u{0AE6}', '\u{0AE7}',
- '\u{0AE8}', '\u{0AE9}', '\u{0AEA}', '\u{0AEB}', '\u{0AEC}', '\u{0AED}', '\u{0AEE}', '\u{0AEF}',
- '\u{0B66}', '\u{0B67}', '\u{0B68}', '\u{0B69}', '\u{0B6A}', '\u{0B6B}', '\u{0B6C}', '\u{0B6D}',
- '\u{0B6E}', '\u{0B6F}', '\u{0BE6}', '\u{0BE7}', '\u{0BE8}', '\u{0BE9}', '\u{0BEA}', '\u{0BEB}',
- '\u{0BEC}', '\u{0BED}', '\u{0BEE}', '\u{0BEF}', '\u{0C66}', '\u{0C67}', '\u{0C68}', '\u{0C69}',
- '\u{0C6A}', '\u{0C6B}', '\u{0C6C}', '\u{0C6D}', '\u{0C6E}', '\u{0C6F}', '\u{0CE6}', '\u{0CE7}',
- '\u{0CE8}', '\u{0CE9}', '\u{0CEA}', '\u{0CEB}', '\u{0CEC}', '\u{0CED}', '\u{0CEE}', '\u{0CEF}',
- '\u{0D66}', '\u{0D67}', '\u{0D68}', '\u{0D69}', '\u{0D6A}', '\u{0D6B}', '\u{0D6C}', '\u{0D6D}',
- '\u{0D6E}', '\u{0D6F}', '\u{0DE6}', '\u{0DE7}', '\u{0DE8}', '\u{0DE9}', '\u{0DEA}', '\u{0DEB}',
- '\u{0DEC}', '\u{0DED}', '\u{0DEE}', '\u{0DEF}', '\u{0E50}', '\u{0E51}', '\u{0E52}', '\u{0E53}',
- '\u{0E54}', '\u{0E55}', '\u{0E56}', '\u{0E57}', '\u{0E58}', '\u{0E59}', '\u{0ED0}', '\u{0ED1}',
- '\u{0ED2}', '\u{0ED3}', '\u{0ED4}', '\u{0ED5}', '\u{0ED6}', '\u{0ED7}', '\u{0ED8}', '\u{0ED9}',
- '\u{0F20}', '\u{0F21}', '\u{0F22}', '\u{0F23}', '\u{0F24}', '\u{0F25}', '\u{0F26}', '\u{0F27}',
- '\u{0F28}', '\u{0F29}', '\u{1040}', '\u{1041}', '\u{1042}', '\u{1043}', '\u{1044}', '\u{1045}',
- '\u{1046}', '\u{1047}', '\u{1048}', '\u{1049}', '\u{1090}', '\u{1091}', '\u{1092}', '\u{1093}',
- '\u{1094}', '\u{1095}', '\u{1096}', '\u{1097}', '\u{1098}', '\u{1099}', '\u{17E0}', '\u{17E1}',
- '\u{17E2}', '\u{17E3}', '\u{17E4}', '\u{17E5}', '\u{17E6}', '\u{17E7}', '\u{17E8}', '\u{17E9}',
- '\u{1810}', '\u{1811}', '\u{1812}', '\u{1813}', '\u{1814}', '\u{1815}', '\u{1816}', '\u{1817}',
- '\u{1818}', '\u{1819}', '\u{1946}', '\u{1947}', '\u{1948}', '\u{1949}', '\u{194A}', '\u{194B}',
- '\u{194C}', '\u{194D}', '\u{194E}', '\u{194F}', '\u{19D0}', '\u{19D1}', '\u{19D2}', '\u{19D3}',
- '\u{19D4}', '\u{19D5}', '\u{19D6}', '\u{19D7}', '\u{19D8}', '\u{19D9}', '\u{1A80}', '\u{1A81}',
- '\u{1A82}', '\u{1A83}', '\u{1A84}', '\u{1A85}', '\u{1A86}', '\u{1A87}', '\u{1A88}', '\u{1A89}',
- '\u{1A90}', '\u{1A91}', '\u{1A92}', '\u{1A93}', '\u{1A94}', '\u{1A95}', '\u{1A96}', '\u{1A97}',
- '\u{1A98}', '\u{1A99}', '\u{1B50}', '\u{1B51}', '\u{1B52}', '\u{1B53}', '\u{1B54}', '\u{1B55}',
- '\u{1B56}', '\u{1B57}', '\u{1B58}', '\u{1B59}', '\u{1BB0}', '\u{1BB1}', '\u{1BB2}', '\u{1BB3}',
- '\u{1BB4}', '\u{1BB5}', '\u{1BB6}', '\u{1BB7}', '\u{1BB8}', '\u{1BB9}', '\u{1C40}', '\u{1C41}',
- '\u{1C42}', '\u{1C43}', '\u{1C44}', '\u{1C45}', '\u{1C46}', '\u{1C47}', '\u{1C48}', '\u{1C49}',
- '\u{1C50}', '\u{1C51}', '\u{1C52}', '\u{1C53}', '\u{1C54}', '\u{1C55}', '\u{1C56}', '\u{1C57}',
- '\u{1C58}', '\u{1C59}', '\u{A620}', '\u{A621}', '\u{A622}', '\u{A623}', '\u{A624}', '\u{A625}',
- '\u{A626}', '\u{A627}', '\u{A628}', '\u{A629}', '\u{A8D0}', '\u{A8D1}', '\u{A8D2}', '\u{A8D3}',
- '\u{A8D4}', '\u{A8D5}', '\u{A8D6}', '\u{A8D7}', '\u{A8D8}', '\u{A8D9}', '\u{A900}', '\u{A901}',
- '\u{A902}', '\u{A903}', '\u{A904}', '\u{A905}', '\u{A906}', '\u{A907}', '\u{A908}', '\u{A909}',
- '\u{A9D0}', '\u{A9D1}', '\u{A9D2}', '\u{A9D3}', '\u{A9D4}', '\u{A9D5}', '\u{A9D6}', '\u{A9D7}',
- '\u{A9D8}', '\u{A9D9}', '\u{A9F0}', '\u{A9F1}', '\u{A9F2}', '\u{A9F3}', '\u{A9F4}', '\u{A9F5}',
- '\u{A9F6}', '\u{A9F7}', '\u{A9F8}', '\u{A9F9}', '\u{AA50}', '\u{AA51}', '\u{AA52}', '\u{AA53}',
- '\u{AA54}', '\u{AA55}', '\u{AA56}', '\u{AA57}', '\u{AA58}', '\u{AA59}', '\u{ABF0}', '\u{ABF1}',
- '\u{ABF2}', '\u{ABF3}', '\u{ABF4}', '\u{ABF5}', '\u{ABF6}', '\u{ABF7}', '\u{ABF8}', '\u{ABF9}',
- '\u{FF10}', '\u{FF11}', '\u{FF12}', '\u{FF13}', '\u{FF14}', '\u{FF15}', '\u{FF16}', '\u{FF17}',
- '\u{FF18}', '\u{FF19}', '\u{104A0}', '\u{104A1}', '\u{104A2}', '\u{104A3}', '\u{104A4}', '\u{104A5}',
- '\u{104A6}', '\u{104A7}', '\u{104A8}', '\u{104A9}', '\u{11066}', '\u{11067}', '\u{11068}', '\u{11069}',
- '\u{1106A}', '\u{1106B}', '\u{1106C}', '\u{1106D}', '\u{1106E}', '\u{1106F}', '\u{110F0}', '\u{110F1}',
- '\u{110F2}', '\u{110F3}', '\u{110F4}', '\u{110F5}', '\u{110F6}', '\u{110F7}', '\u{110F8}', '\u{110F9}',
- '\u{11136}', '\u{11137}', '\u{11138}', '\u{11139}', '\u{1113A}', '\u{1113B}', '\u{1113C}', '\u{1113D}',
- '\u{1113E}', '\u{1113F}', '\u{111D0}', '\u{111D1}', '\u{111D2}', '\u{111D3}', '\u{111D4}', '\u{111D5}',
- '\u{111D6}', '\u{111D7}', '\u{111D8}', '\u{111D9}', '\u{112F0}', '\u{112F1}', '\u{112F2}', '\u{112F3}',
- '\u{112F4}', '\u{112F5}', '\u{112F6}', '\u{112F7}', '\u{112F8}', '\u{112F9}', '\u{114D0}', '\u{114D1}',
- '\u{114D2}', '\u{114D3}', '\u{114D4}', '\u{114D5}', '\u{114D6}', '\u{114D7}', '\u{114D8}', '\u{114D9}',
- '\u{11650}', '\u{11651}', '\u{11652}', '\u{11653}', '\u{11654}', '\u{11655}', '\u{11656}', '\u{11657}',
- '\u{11658}', '\u{11659}', '\u{116C0}', '\u{116C1}', '\u{116C2}', '\u{116C3}', '\u{116C4}', '\u{116C5}',
- '\u{116C6}', '\u{116C7}', '\u{116C8}', '\u{116C9}', '\u{11730}', '\u{11731}', '\u{11732}', '\u{11733}',
- '\u{11734}', '\u{11735}', '\u{11736}', '\u{11737}', '\u{11738}', '\u{11739}', '\u{118E0}', '\u{118E1}',
- '\u{118E2}', '\u{118E3}', '\u{118E4}', '\u{118E5}', '\u{118E6}', '\u{118E7}', '\u{118E8}', '\u{118E9}',
- '\u{16A60}', '\u{16A61}', '\u{16A62}', '\u{16A63}', '\u{16A64}', '\u{16A65}', '\u{16A66}', '\u{16A67}',
- '\u{16A68}', '\u{16A69}', '\u{16B50}', '\u{16B51}', '\u{16B52}', '\u{16B53}', '\u{16B54}', '\u{16B55}',
- '\u{16B56}', '\u{16B57}', '\u{16B58}', '\u{16B59}', '\u{1D7CE}', '\u{1D7CF}', '\u{1D7D0}', '\u{1D7D1}',
- '\u{1D7D2}', '\u{1D7D3}', '\u{1D7D4}', '\u{1D7D5}', '\u{1D7D6}', '\u{1D7D7}', '\u{1D7D8}', '\u{1D7D9}',
- '\u{1D7DA}', '\u{1D7DB}', '\u{1D7DC}', '\u{1D7DD}', '\u{1D7DE}', '\u{1D7DF}', '\u{1D7E0}', '\u{1D7E1}',
- '\u{1D7E2}', '\u{1D7E3}', '\u{1D7E4}', '\u{1D7E5}', '\u{1D7E6}', '\u{1D7E7}', '\u{1D7E8}', '\u{1D7E9}',
- '\u{1D7EA}', '\u{1D7EB}', '\u{1D7EC}', '\u{1D7ED}', '\u{1D7EE}', '\u{1D7EF}', '\u{1D7F0}', '\u{1D7F1}',
- '\u{1D7F2}', '\u{1D7F3}', '\u{1D7F4}', '\u{1D7F5}', '\u{1D7F6}', '\u{1D7F7}', '\u{1D7F8}', '\u{1D7F9}',
- '\u{1D7FA}', '\u{1D7FB}', '\u{1D7FC}', '\u{1D7FD}', '\u{1D7FE}', '\u{1D7FF}'];
-
-pub static NUMBER_LETTER : &'static [char] = &[
- '\u{16EE}', '\u{16EF}', '\u{16F0}', '\u{2160}', '\u{2161}', '\u{2162}', '\u{2163}', '\u{2164}',
- '\u{2165}', '\u{2166}', '\u{2167}', '\u{2168}', '\u{2169}', '\u{216A}', '\u{216B}', '\u{216C}',
- '\u{216D}', '\u{216E}', '\u{216F}', '\u{2170}', '\u{2171}', '\u{2172}', '\u{2173}', '\u{2174}',
- '\u{2175}', '\u{2176}', '\u{2177}', '\u{2178}', '\u{2179}', '\u{217A}', '\u{217B}', '\u{217C}',
- '\u{217D}', '\u{217E}', '\u{217F}', '\u{2180}', '\u{2181}', '\u{2182}', '\u{2185}', '\u{2186}',
- '\u{2187}', '\u{2188}', '\u{3007}', '\u{3021}', '\u{3022}', '\u{3023}', '\u{3024}', '\u{3025}',
- '\u{3026}', '\u{3027}', '\u{3028}', '\u{3029}', '\u{3038}', '\u{3039}', '\u{303A}', '\u{A6E6}',
- '\u{A6E7}', '\u{A6E8}', '\u{A6E9}', '\u{A6EA}', '\u{A6EB}', '\u{A6EC}', '\u{A6ED}', '\u{A6EE}',
- '\u{A6EF}', '\u{10140}', '\u{10141}', '\u{10142}', '\u{10143}', '\u{10144}', '\u{10145}', '\u{10146}',
- '\u{10147}', '\u{10148}', '\u{10149}', '\u{1014A}', '\u{1014B}', '\u{1014C}', '\u{1014D}', '\u{1014E}',
- '\u{1014F}', '\u{10150}', '\u{10151}', '\u{10152}', '\u{10153}', '\u{10154}', '\u{10155}', '\u{10156}',
- '\u{10157}', '\u{10158}', '\u{10159}', '\u{1015A}', '\u{1015B}', '\u{1015C}', '\u{1015D}', '\u{1015E}',
- '\u{1015F}', '\u{10160}', '\u{10161}', '\u{10162}', '\u{10163}', '\u{10164}', '\u{10165}', '\u{10166}',
- '\u{10167}', '\u{10168}', '\u{10169}', '\u{1016A}', '\u{1016B}', '\u{1016C}', '\u{1016D}', '\u{1016E}',
- '\u{1016F}', '\u{10170}', '\u{10171}', '\u{10172}', '\u{10173}', '\u{10174}', '\u{10341}', '\u{1034A}',
- '\u{103D1}', '\u{103D2}', '\u{103D3}', '\u{103D4}', '\u{103D5}', '\u{12400}', '\u{12401}', '\u{12402}',
- '\u{12403}', '\u{12404}', '\u{12405}', '\u{12406}', '\u{12407}', '\u{12408}', '\u{12409}', '\u{1240A}',
- '\u{1240B}', '\u{1240C}', '\u{1240D}', '\u{1240E}', '\u{1240F}', '\u{12410}', '\u{12411}', '\u{12412}',
- '\u{12413}', '\u{12414}', '\u{12415}', '\u{12416}', '\u{12417}', '\u{12418}', '\u{12419}', '\u{1241A}',
- '\u{1241B}', '\u{1241C}', '\u{1241D}', '\u{1241E}', '\u{1241F}', '\u{12420}', '\u{12421}', '\u{12422}',
- '\u{12423}', '\u{12424}', '\u{12425}', '\u{12426}', '\u{12427}', '\u{12428}', '\u{12429}', '\u{1242A}',
- '\u{1242B}', '\u{1242C}', '\u{1242D}', '\u{1242E}', '\u{1242F}', '\u{12430}', '\u{12431}', '\u{12432}',
- '\u{12433}', '\u{12434}', '\u{12435}', '\u{12436}', '\u{12437}', '\u{12438}', '\u{12439}', '\u{1243A}',
- '\u{1243B}', '\u{1243C}', '\u{1243D}', '\u{1243E}', '\u{1243F}', '\u{12440}', '\u{12441}', '\u{12442}',
- '\u{12443}', '\u{12444}', '\u{12445}', '\u{12446}', '\u{12447}', '\u{12448}', '\u{12449}', '\u{1244A}',
- '\u{1244B}', '\u{1244C}', '\u{1244D}', '\u{1244E}', '\u{1244F}', '\u{12450}', '\u{12451}', '\u{12452}',
- '\u{12453}', '\u{12454}', '\u{12455}', '\u{12456}', '\u{12457}', '\u{12458}', '\u{12459}', '\u{1245A}',
- '\u{1245B}', '\u{1245C}', '\u{1245D}', '\u{1245E}', '\u{1245F}', '\u{12460}', '\u{12461}', '\u{12462}',
- '\u{12463}', '\u{12464}', '\u{12465}', '\u{12466}', '\u{12467}', '\u{12468}', '\u{12469}', '\u{1246A}',
- '\u{1246B}', '\u{1246C}', '\u{1246D}', '\u{1246E}'];
-
-pub static NUMBER_OTHER : &'static [char] = &[
- '\u{00B2}', '\u{00B3}', '\u{00B9}', '\u{00BC}', '\u{00BD}', '\u{00BE}', '\u{09F4}', '\u{09F5}',
- '\u{09F6}', '\u{09F7}', '\u{09F8}', '\u{09F9}', '\u{0B72}', '\u{0B73}', '\u{0B74}', '\u{0B75}',
- '\u{0B76}', '\u{0B77}', '\u{0BF0}', '\u{0BF1}', '\u{0BF2}', '\u{0C78}', '\u{0C79}', '\u{0C7A}',
- '\u{0C7B}', '\u{0C7C}', '\u{0C7D}', '\u{0C7E}', '\u{0D70}', '\u{0D71}', '\u{0D72}', '\u{0D73}',
- '\u{0D74}', '\u{0D75}', '\u{0F2A}', '\u{0F2B}', '\u{0F2C}', '\u{0F2D}', '\u{0F2E}', '\u{0F2F}',
- '\u{0F30}', '\u{0F31}', '\u{0F32}', '\u{0F33}', '\u{1369}', '\u{136A}', '\u{136B}', '\u{136C}',
- '\u{136D}', '\u{136E}', '\u{136F}', '\u{1370}', '\u{1371}', '\u{1372}', '\u{1373}', '\u{1374}',
- '\u{1375}', '\u{1376}', '\u{1377}', '\u{1378}', '\u{1379}', '\u{137A}', '\u{137B}', '\u{137C}',
- '\u{17F0}', '\u{17F1}', '\u{17F2}', '\u{17F3}', '\u{17F4}', '\u{17F5}', '\u{17F6}', '\u{17F7}',
- '\u{17F8}', '\u{17F9}', '\u{19DA}', '\u{2070}', '\u{2074}', '\u{2075}', '\u{2076}', '\u{2077}',
- '\u{2078}', '\u{2079}', '\u{2080}', '\u{2081}', '\u{2082}', '\u{2083}', '\u{2084}', '\u{2085}',
- '\u{2086}', '\u{2087}', '\u{2088}', '\u{2089}', '\u{2150}', '\u{2151}', '\u{2152}', '\u{2153}',
- '\u{2154}', '\u{2155}', '\u{2156}', '\u{2157}', '\u{2158}', '\u{2159}', '\u{215A}', '\u{215B}',
- '\u{215C}', '\u{215D}', '\u{215E}', '\u{215F}', '\u{2189}', '\u{2460}', '\u{2461}', '\u{2462}',
- '\u{2463}', '\u{2464}', '\u{2465}', '\u{2466}', '\u{2467}', '\u{2468}', '\u{2469}', '\u{246A}',
- '\u{246B}', '\u{246C}', '\u{246D}', '\u{246E}', '\u{246F}', '\u{2470}', '\u{2471}', '\u{2472}',
- '\u{2473}', '\u{2474}', '\u{2475}', '\u{2476}', '\u{2477}', '\u{2478}', '\u{2479}', '\u{247A}',
- '\u{247B}', '\u{247C}', '\u{247D}', '\u{247E}', '\u{247F}', '\u{2480}', '\u{2481}', '\u{2482}',
- '\u{2483}', '\u{2484}', '\u{2485}', '\u{2486}', '\u{2487}', '\u{2488}', '\u{2489}', '\u{248A}',
- '\u{248B}', '\u{248C}', '\u{248D}', '\u{248E}', '\u{248F}', '\u{2490}', '\u{2491}', '\u{2492}',
- '\u{2493}', '\u{2494}', '\u{2495}', '\u{2496}', '\u{2497}', '\u{2498}', '\u{2499}', '\u{249A}',
- '\u{249B}', '\u{24EA}', '\u{24EB}', '\u{24EC}', '\u{24ED}', '\u{24EE}', '\u{24EF}', '\u{24F0}',
- '\u{24F1}', '\u{24F2}', '\u{24F3}', '\u{24F4}', '\u{24F5}', '\u{24F6}', '\u{24F7}', '\u{24F8}',
- '\u{24F9}', '\u{24FA}', '\u{24FB}', '\u{24FC}', '\u{24FD}', '\u{24FE}', '\u{24FF}', '\u{2776}',
- '\u{2777}', '\u{2778}', '\u{2779}', '\u{277A}', '\u{277B}', '\u{277C}', '\u{277D}', '\u{277E}',
- '\u{277F}', '\u{2780}', '\u{2781}', '\u{2782}', '\u{2783}', '\u{2784}', '\u{2785}', '\u{2786}',
- '\u{2787}', '\u{2788}', '\u{2789}', '\u{278A}', '\u{278B}', '\u{278C}', '\u{278D}', '\u{278E}',
- '\u{278F}', '\u{2790}', '\u{2791}', '\u{2792}', '\u{2793}', '\u{2CFD}', '\u{3192}', '\u{3193}',
- '\u{3194}', '\u{3195}', '\u{3220}', '\u{3221}', '\u{3222}', '\u{3223}', '\u{3224}', '\u{3225}',
- '\u{3226}', '\u{3227}', '\u{3228}', '\u{3229}', '\u{3248}', '\u{3249}', '\u{324A}', '\u{324B}',
- '\u{324C}', '\u{324D}', '\u{324E}', '\u{324F}', '\u{3251}', '\u{3252}', '\u{3253}', '\u{3254}',
- '\u{3255}', '\u{3256}', '\u{3257}', '\u{3258}', '\u{3259}', '\u{325A}', '\u{325B}', '\u{325C}',
- '\u{325D}', '\u{325E}', '\u{325F}', '\u{3280}', '\u{3281}', '\u{3282}', '\u{3283}', '\u{3284}',
- '\u{3285}', '\u{3286}', '\u{3287}', '\u{3288}', '\u{3289}', '\u{32B1}', '\u{32B2}', '\u{32B3}',
- '\u{32B4}', '\u{32B5}', '\u{32B6}', '\u{32B7}', '\u{32B8}', '\u{32B9}', '\u{32BA}', '\u{32BB}',
- '\u{32BC}', '\u{32BD}', '\u{32BE}', '\u{32BF}', '\u{A830}', '\u{A831}', '\u{A832}', '\u{A833}',
- '\u{A834}', '\u{A835}', '\u{10107}', '\u{10108}', '\u{10109}', '\u{1010A}', '\u{1010B}', '\u{1010C}',
- '\u{1010D}', '\u{1010E}', '\u{1010F}', '\u{10110}', '\u{10111}', '\u{10112}', '\u{10113}', '\u{10114}',
- '\u{10115}', '\u{10116}', '\u{10117}', '\u{10118}', '\u{10119}', '\u{1011A}', '\u{1011B}', '\u{1011C}',
- '\u{1011D}', '\u{1011E}', '\u{1011F}', '\u{10120}', '\u{10121}', '\u{10122}', '\u{10123}', '\u{10124}',
- '\u{10125}', '\u{10126}', '\u{10127}', '\u{10128}', '\u{10129}', '\u{1012A}', '\u{1012B}', '\u{1012C}',
- '\u{1012D}', '\u{1012E}', '\u{1012F}', '\u{10130}', '\u{10131}', '\u{10132}', '\u{10133}', '\u{10175}',
- '\u{10176}', '\u{10177}', '\u{10178}', '\u{1018A}', '\u{1018B}', '\u{102E1}', '\u{102E2}', '\u{102E3}',
- '\u{102E4}', '\u{102E5}', '\u{102E6}', '\u{102E7}', '\u{102E8}', '\u{102E9}', '\u{102EA}', '\u{102EB}',
- '\u{102EC}', '\u{102ED}', '\u{102EE}', '\u{102EF}', '\u{102F0}', '\u{102F1}', '\u{102F2}', '\u{102F3}',
- '\u{102F4}', '\u{102F5}', '\u{102F6}', '\u{102F7}', '\u{102F8}', '\u{102F9}', '\u{102FA}', '\u{102FB}',
- '\u{10320}', '\u{10321}', '\u{10322}', '\u{10323}', '\u{10858}', '\u{10859}', '\u{1085A}', '\u{1085B}',
- '\u{1085C}', '\u{1085D}', '\u{1085E}', '\u{1085F}', '\u{10879}', '\u{1087A}', '\u{1087B}', '\u{1087C}',
- '\u{1087D}', '\u{1087E}', '\u{1087F}', '\u{108A7}', '\u{108A8}', '\u{108A9}', '\u{108AA}', '\u{108AB}',
- '\u{108AC}', '\u{108AD}', '\u{108AE}', '\u{108AF}', '\u{108FB}', '\u{108FC}', '\u{108FD}', '\u{108FE}',
- '\u{108FF}', '\u{10916}', '\u{10917}', '\u{10918}', '\u{10919}', '\u{1091A}', '\u{1091B}', '\u{109BC}',
- '\u{109BD}', '\u{109C0}', '\u{109C1}', '\u{109C2}', '\u{109C3}', '\u{109C4}', '\u{109C5}', '\u{109C6}',
- '\u{109C7}', '\u{109C8}', '\u{109C9}', '\u{109CA}', '\u{109CB}', '\u{109CC}', '\u{109CD}', '\u{109CE}',
- '\u{109CF}', '\u{109D2}', '\u{109D3}', '\u{109D4}', '\u{109D5}', '\u{109D6}', '\u{109D7}', '\u{109D8}',
- '\u{109D9}', '\u{109DA}', '\u{109DB}', '\u{109DC}', '\u{109DD}', '\u{109DE}', '\u{109DF}', '\u{109E0}',
- '\u{109E1}', '\u{109E2}', '\u{109E3}', '\u{109E4}', '\u{109E5}', '\u{109E6}', '\u{109E7}', '\u{109E8}',
- '\u{109E9}', '\u{109EA}', '\u{109EB}', '\u{109EC}', '\u{109ED}', '\u{109EE}', '\u{109EF}', '\u{109F0}',
- '\u{109F1}', '\u{109F2}', '\u{109F3}', '\u{109F4}', '\u{109F5}', '\u{109F6}', '\u{109F7}', '\u{109F8}',
- '\u{109F9}', '\u{109FA}', '\u{109FB}', '\u{109FC}', '\u{109FD}', '\u{109FE}', '\u{109FF}', '\u{10A40}',
- '\u{10A41}', '\u{10A42}', '\u{10A43}', '\u{10A44}', '\u{10A45}', '\u{10A46}', '\u{10A47}', '\u{10A7D}',
- '\u{10A7E}', '\u{10A9D}', '\u{10A9E}', '\u{10A9F}', '\u{10AEB}', '\u{10AEC}', '\u{10AED}', '\u{10AEE}',
- '\u{10AEF}', '\u{10B58}', '\u{10B59}', '\u{10B5A}', '\u{10B5B}', '\u{10B5C}', '\u{10B5D}', '\u{10B5E}',
- '\u{10B5F}', '\u{10B78}', '\u{10B79}', '\u{10B7A}', '\u{10B7B}', '\u{10B7C}', '\u{10B7D}', '\u{10B7E}',
- '\u{10B7F}', '\u{10BA9}', '\u{10BAA}', '\u{10BAB}', '\u{10BAC}', '\u{10BAD}', '\u{10BAE}', '\u{10BAF}',
- '\u{10CFA}', '\u{10CFB}', '\u{10CFC}', '\u{10CFD}', '\u{10CFE}', '\u{10CFF}', '\u{10E60}', '\u{10E61}',
- '\u{10E62}', '\u{10E63}', '\u{10E64}', '\u{10E65}', '\u{10E66}', '\u{10E67}', '\u{10E68}', '\u{10E69}',
- '\u{10E6A}', '\u{10E6B}', '\u{10E6C}', '\u{10E6D}', '\u{10E6E}', '\u{10E6F}', '\u{10E70}', '\u{10E71}',
- '\u{10E72}', '\u{10E73}', '\u{10E74}', '\u{10E75}', '\u{10E76}', '\u{10E77}', '\u{10E78}', '\u{10E79}',
- '\u{10E7A}', '\u{10E7B}', '\u{10E7C}', '\u{10E7D}', '\u{10E7E}', '\u{11052}', '\u{11053}', '\u{11054}',
- '\u{11055}', '\u{11056}', '\u{11057}', '\u{11058}', '\u{11059}', '\u{1105A}', '\u{1105B}', '\u{1105C}',
- '\u{1105D}', '\u{1105E}', '\u{1105F}', '\u{11060}', '\u{11061}', '\u{11062}', '\u{11063}', '\u{11064}',
- '\u{11065}', '\u{111E1}', '\u{111E2}', '\u{111E3}', '\u{111E4}', '\u{111E5}', '\u{111E6}', '\u{111E7}',
- '\u{111E8}', '\u{111E9}', '\u{111EA}', '\u{111EB}', '\u{111EC}', '\u{111ED}', '\u{111EE}', '\u{111EF}',
- '\u{111F0}', '\u{111F1}', '\u{111F2}', '\u{111F3}', '\u{111F4}', '\u{1173A}', '\u{1173B}', '\u{118EA}',
- '\u{118EB}', '\u{118EC}', '\u{118ED}', '\u{118EE}', '\u{118EF}', '\u{118F0}', '\u{118F1}', '\u{118F2}',
- '\u{16B5B}', '\u{16B5C}', '\u{16B5D}', '\u{16B5E}', '\u{16B5F}', '\u{16B60}', '\u{16B61}', '\u{1D360}',
- '\u{1D361}', '\u{1D362}', '\u{1D363}', '\u{1D364}', '\u{1D365}', '\u{1D366}', '\u{1D367}', '\u{1D368}',
- '\u{1D369}', '\u{1D36A}', '\u{1D36B}', '\u{1D36C}', '\u{1D36D}', '\u{1D36E}', '\u{1D36F}', '\u{1D370}',
- '\u{1D371}', '\u{1E8C7}', '\u{1E8C8}', '\u{1E8C9}', '\u{1E8CA}', '\u{1E8CB}', '\u{1E8CC}', '\u{1E8CD}',
- '\u{1E8CE}', '\u{1E8CF}', '\u{1F100}', '\u{1F101}', '\u{1F102}', '\u{1F103}', '\u{1F104}', '\u{1F105}',
- '\u{1F106}', '\u{1F107}', '\u{1F108}', '\u{1F109}', '\u{1F10A}', '\u{1F10B}', '\u{1F10C}'];
-
-pub static OTHER_CONTROL : &'static [char] = &[
- '\u{0000}', '\u{0001}', '\u{0002}', '\u{0003}', '\u{0004}', '\u{0005}', '\u{0006}', '\u{0007}',
- '\u{0008}', '\u{0009}', '\u{000A}', '\u{000B}', '\u{000C}', '\u{000D}', '\u{000E}', '\u{000F}',
- '\u{0010}', '\u{0011}', '\u{0012}', '\u{0013}', '\u{0014}', '\u{0015}', '\u{0016}', '\u{0017}',
- '\u{0018}', '\u{0019}', '\u{001A}', '\u{001B}', '\u{001C}', '\u{001D}', '\u{001E}', '\u{001F}',
- '\u{007F}', '\u{0080}', '\u{0081}', '\u{0082}', '\u{0083}', '\u{0084}', '\u{0085}', '\u{0086}',
- '\u{0087}', '\u{0088}', '\u{0089}', '\u{008A}', '\u{008B}', '\u{008C}', '\u{008D}', '\u{008E}',
- '\u{008F}', '\u{0090}', '\u{0091}', '\u{0092}', '\u{0093}', '\u{0094}', '\u{0095}', '\u{0096}',
- '\u{0097}', '\u{0098}', '\u{0099}', '\u{009A}', '\u{009B}', '\u{009C}', '\u{009D}', '\u{009E}',
- '\u{009F}'];
-
-pub static OTHER_FORMAT : &'static [char] = &[
- '\u{00AD}', '\u{0600}', '\u{0601}', '\u{0602}', '\u{0603}', '\u{0604}', '\u{0605}', '\u{061C}',
- '\u{06DD}', '\u{070F}', '\u{180E}', '\u{200B}', '\u{200C}', '\u{200D}', '\u{200E}', '\u{200F}',
- '\u{202A}', '\u{202B}', '\u{202C}', '\u{202D}', '\u{202E}', '\u{2060}', '\u{2061}', '\u{2062}',
- '\u{2063}', '\u{2064}', '\u{2066}', '\u{2067}', '\u{2068}', '\u{2069}', '\u{206A}', '\u{206B}',
- '\u{206C}', '\u{206D}', '\u{206E}', '\u{206F}', '\u{FEFF}', '\u{FFF9}', '\u{FFFA}', '\u{FFFB}',
- '\u{110BD}', '\u{1BCA0}', '\u{1BCA1}', '\u{1BCA2}', '\u{1BCA3}', '\u{1D173}', '\u{1D174}', '\u{1D175}',
- '\u{1D176}', '\u{1D177}', '\u{1D178}', '\u{1D179}', '\u{1D17A}', '\u{E0001}', '\u{E0020}', '\u{E0021}',
- '\u{E0022}', '\u{E0023}', '\u{E0024}', '\u{E0025}', '\u{E0026}', '\u{E0027}', '\u{E0028}', '\u{E0029}',
- '\u{E002A}', '\u{E002B}', '\u{E002C}', '\u{E002D}', '\u{E002E}', '\u{E002F}', '\u{E0030}', '\u{E0031}',
- '\u{E0032}', '\u{E0033}', '\u{E0034}', '\u{E0035}', '\u{E0036}', '\u{E0037}', '\u{E0038}', '\u{E0039}',
- '\u{E003A}', '\u{E003B}', '\u{E003C}', '\u{E003D}', '\u{E003E}', '\u{E003F}', '\u{E0040}', '\u{E0041}',
- '\u{E0042}', '\u{E0043}', '\u{E0044}', '\u{E0045}', '\u{E0046}', '\u{E0047}', '\u{E0048}', '\u{E0049}',
- '\u{E004A}', '\u{E004B}', '\u{E004C}', '\u{E004D}', '\u{E004E}', '\u{E004F}', '\u{E0050}', '\u{E0051}',
- '\u{E0052}', '\u{E0053}', '\u{E0054}', '\u{E0055}', '\u{E0056}', '\u{E0057}', '\u{E0058}', '\u{E0059}',
- '\u{E005A}', '\u{E005B}', '\u{E005C}', '\u{E005D}', '\u{E005E}', '\u{E005F}', '\u{E0060}', '\u{E0061}',
- '\u{E0062}', '\u{E0063}', '\u{E0064}', '\u{E0065}', '\u{E0066}', '\u{E0067}', '\u{E0068}', '\u{E0069}',
- '\u{E006A}', '\u{E006B}', '\u{E006C}', '\u{E006D}', '\u{E006E}', '\u{E006F}', '\u{E0070}', '\u{E0071}',
- '\u{E0072}', '\u{E0073}', '\u{E0074}', '\u{E0075}', '\u{E0076}', '\u{E0077}', '\u{E0078}', '\u{E0079}',
- '\u{E007A}', '\u{E007B}', '\u{E007C}', '\u{E007D}', '\u{E007E}', '\u{E007F}'];
-
-pub static OTHER_PRIVATE_USE : &'static [char] = &[
- '\u{E000}', '\u{F8FF}', '\u{F0000}', '\u{FFFFD}', '\u{100000}', '\u{10FFFD}'];
-
-pub static PUNCTUATION_CLOSE : &'static [char] = &[
- '\u{0029}', '\u{005D}', '\u{007D}', '\u{0F3B}', '\u{0F3D}', '\u{169C}', '\u{2046}', '\u{207E}',
- '\u{208E}', '\u{2309}', '\u{230B}', '\u{232A}', '\u{2769}', '\u{276B}', '\u{276D}', '\u{276F}',
- '\u{2771}', '\u{2773}', '\u{2775}', '\u{27C6}', '\u{27E7}', '\u{27E9}', '\u{27EB}', '\u{27ED}',
- '\u{27EF}', '\u{2984}', '\u{2986}', '\u{2988}', '\u{298A}', '\u{298C}', '\u{298E}', '\u{2990}',
- '\u{2992}', '\u{2994}', '\u{2996}', '\u{2998}', '\u{29D9}', '\u{29DB}', '\u{29FD}', '\u{2E23}',
- '\u{2E25}', '\u{2E27}', '\u{2E29}', '\u{3009}', '\u{300B}', '\u{300D}', '\u{300F}', '\u{3011}',
- '\u{3015}', '\u{3017}', '\u{3019}', '\u{301B}', '\u{301E}', '\u{301F}', '\u{FD3E}', '\u{FE18}',
- '\u{FE36}', '\u{FE38}', '\u{FE3A}', '\u{FE3C}', '\u{FE3E}', '\u{FE40}', '\u{FE42}', '\u{FE44}',
- '\u{FE48}', '\u{FE5A}', '\u{FE5C}', '\u{FE5E}', '\u{FF09}', '\u{FF3D}', '\u{FF5D}', '\u{FF60}',
- '\u{FF63}'];
-
-pub static PUNCTUATION_CONNECTOR : &'static [char] = &[
- '\u{005F}', '\u{203F}', '\u{2040}', '\u{2054}', '\u{FE33}', '\u{FE34}', '\u{FE4D}', '\u{FE4E}',
- '\u{FE4F}', '\u{FF3F}'];
-
-pub static PUNCTUATION_DASH : &'static [char] = &[
- '\u{002D}', '\u{058A}', '\u{05BE}', '\u{1400}', '\u{1806}', '\u{2010}', '\u{2011}', '\u{2012}',
- '\u{2013}', '\u{2014}', '\u{2015}', '\u{2E17}', '\u{2E1A}', '\u{2E3A}', '\u{2E3B}', '\u{2E40}',
- '\u{301C}', '\u{3030}', '\u{30A0}', '\u{FE31}', '\u{FE32}', '\u{FE58}', '\u{FE63}', '\u{FF0D}'];
-
-pub static PUNCTUATION_FINAL_QUOTE : &'static [char] = &[
- '\u{00BB}', '\u{2019}', '\u{201D}', '\u{203A}', '\u{2E03}', '\u{2E05}', '\u{2E0A}', '\u{2E0D}',
- '\u{2E1D}', '\u{2E21}'];
-
-pub static PUNCTUATION_INITIAL_QUOTE : &'static [char] = &[
- '\u{00AB}', '\u{2018}', '\u{201B}', '\u{201C}', '\u{201F}', '\u{2039}', '\u{2E02}', '\u{2E04}',
- '\u{2E09}', '\u{2E0C}', '\u{2E1C}', '\u{2E20}'];
-
-pub static PUNCTUATION_OPEN : &'static [char] = &[
- '\u{0028}', '\u{005B}', '\u{007B}', '\u{0F3A}', '\u{0F3C}', '\u{169B}', '\u{201A}', '\u{201E}',
- '\u{2045}', '\u{207D}', '\u{208D}', '\u{2308}', '\u{230A}', '\u{2329}', '\u{2768}', '\u{276A}',
- '\u{276C}', '\u{276E}', '\u{2770}', '\u{2772}', '\u{2774}', '\u{27C5}', '\u{27E6}', '\u{27E8}',
- '\u{27EA}', '\u{27EC}', '\u{27EE}', '\u{2983}', '\u{2985}', '\u{2987}', '\u{2989}', '\u{298B}',
- '\u{298D}', '\u{298F}', '\u{2991}', '\u{2993}', '\u{2995}', '\u{2997}', '\u{29D8}', '\u{29DA}',
- '\u{29FC}', '\u{2E22}', '\u{2E24}', '\u{2E26}', '\u{2E28}', '\u{2E42}', '\u{3008}', '\u{300A}',
- '\u{300C}', '\u{300E}', '\u{3010}', '\u{3014}', '\u{3016}', '\u{3018}', '\u{301A}', '\u{301D}',
- '\u{FD3F}', '\u{FE17}', '\u{FE35}', '\u{FE37}', '\u{FE39}', '\u{FE3B}', '\u{FE3D}', '\u{FE3F}',
- '\u{FE41}', '\u{FE43}', '\u{FE47}', '\u{FE59}', '\u{FE5B}', '\u{FE5D}', '\u{FF08}', '\u{FF3B}',
- '\u{FF5B}', '\u{FF5F}', '\u{FF62}'];
-
-pub static PUNCTUATION_OTHER : &'static [char] = &[
- '\u{0021}', '\u{0022}', '\u{0023}', '\u{0025}', '\u{0026}', '\u{0027}', '\u{002A}', '\u{002C}',
- '\u{002E}', '\u{002F}', '\u{003A}', '\u{003B}', '\u{003F}', '\u{0040}', '\u{005C}', '\u{00A1}',
- '\u{00A7}', '\u{00B6}', '\u{00B7}', '\u{00BF}', '\u{037E}', '\u{0387}', '\u{055A}', '\u{055B}',
- '\u{055C}', '\u{055D}', '\u{055E}', '\u{055F}', '\u{0589}', '\u{05C0}', '\u{05C3}', '\u{05C6}',
- '\u{05F3}', '\u{05F4}', '\u{0609}', '\u{060A}', '\u{060C}', '\u{060D}', '\u{061B}', '\u{061E}',
- '\u{061F}', '\u{066A}', '\u{066B}', '\u{066C}', '\u{066D}', '\u{06D4}', '\u{0700}', '\u{0701}',
- '\u{0702}', '\u{0703}', '\u{0704}', '\u{0705}', '\u{0706}', '\u{0707}', '\u{0708}', '\u{0709}',
- '\u{070A}', '\u{070B}', '\u{070C}', '\u{070D}', '\u{07F7}', '\u{07F8}', '\u{07F9}', '\u{0830}',
- '\u{0831}', '\u{0832}', '\u{0833}', '\u{0834}', '\u{0835}', '\u{0836}', '\u{0837}', '\u{0838}',
- '\u{0839}', '\u{083A}', '\u{083B}', '\u{083C}', '\u{083D}', '\u{083E}', '\u{085E}', '\u{0964}',
- '\u{0965}', '\u{0970}', '\u{0AF0}', '\u{0DF4}', '\u{0E4F}', '\u{0E5A}', '\u{0E5B}', '\u{0F04}',
- '\u{0F05}', '\u{0F06}', '\u{0F07}', '\u{0F08}', '\u{0F09}', '\u{0F0A}', '\u{0F0B}', '\u{0F0C}',
- '\u{0F0D}', '\u{0F0E}', '\u{0F0F}', '\u{0F10}', '\u{0F11}', '\u{0F12}', '\u{0F14}', '\u{0F85}',
- '\u{0FD0}', '\u{0FD1}', '\u{0FD2}', '\u{0FD3}', '\u{0FD4}', '\u{0FD9}', '\u{0FDA}', '\u{104A}',
- '\u{104B}', '\u{104C}', '\u{104D}', '\u{104E}', '\u{104F}', '\u{10FB}', '\u{1360}', '\u{1361}',
- '\u{1362}', '\u{1363}', '\u{1364}', '\u{1365}', '\u{1366}', '\u{1367}', '\u{1368}', '\u{166D}',
- '\u{166E}', '\u{16EB}', '\u{16EC}', '\u{16ED}', '\u{1735}', '\u{1736}', '\u{17D4}', '\u{17D5}',
- '\u{17D6}', '\u{17D8}', '\u{17D9}', '\u{17DA}', '\u{1800}', '\u{1801}', '\u{1802}', '\u{1803}',
- '\u{1804}', '\u{1805}', '\u{1807}', '\u{1808}', '\u{1809}', '\u{180A}', '\u{1944}', '\u{1945}',
- '\u{1A1E}', '\u{1A1F}', '\u{1AA0}', '\u{1AA1}', '\u{1AA2}', '\u{1AA3}', '\u{1AA4}', '\u{1AA5}',
- '\u{1AA6}', '\u{1AA8}', '\u{1AA9}', '\u{1AAA}', '\u{1AAB}', '\u{1AAC}', '\u{1AAD}', '\u{1B5A}',
- '\u{1B5B}', '\u{1B5C}', '\u{1B5D}', '\u{1B5E}', '\u{1B5F}', '\u{1B60}', '\u{1BFC}', '\u{1BFD}',
- '\u{1BFE}', '\u{1BFF}', '\u{1C3B}', '\u{1C3C}', '\u{1C3D}', '\u{1C3E}', '\u{1C3F}', '\u{1C7E}',
- '\u{1C7F}', '\u{1CC0}', '\u{1CC1}', '\u{1CC2}', '\u{1CC3}', '\u{1CC4}', '\u{1CC5}', '\u{1CC6}',
- '\u{1CC7}', '\u{1CD3}', '\u{2016}', '\u{2017}', '\u{2020}', '\u{2021}', '\u{2022}', '\u{2023}',
- '\u{2024}', '\u{2025}', '\u{2026}', '\u{2027}', '\u{2030}', '\u{2031}', '\u{2032}', '\u{2033}',
- '\u{2034}', '\u{2035}', '\u{2036}', '\u{2037}', '\u{2038}', '\u{203B}', '\u{203C}', '\u{203D}',
- '\u{203E}', '\u{2041}', '\u{2042}', '\u{2043}', '\u{2047}', '\u{2048}', '\u{2049}', '\u{204A}',
- '\u{204B}', '\u{204C}', '\u{204D}', '\u{204E}', '\u{204F}', '\u{2050}', '\u{2051}', '\u{2053}',
- '\u{2055}', '\u{2056}', '\u{2057}', '\u{2058}', '\u{2059}', '\u{205A}', '\u{205B}', '\u{205C}',
- '\u{205D}', '\u{205E}', '\u{2CF9}', '\u{2CFA}', '\u{2CFB}', '\u{2CFC}', '\u{2CFE}', '\u{2CFF}',
- '\u{2D70}', '\u{2E00}', '\u{2E01}', '\u{2E06}', '\u{2E07}', '\u{2E08}', '\u{2E0B}', '\u{2E0E}',
- '\u{2E0F}', '\u{2E10}', '\u{2E11}', '\u{2E12}', '\u{2E13}', '\u{2E14}', '\u{2E15}', '\u{2E16}',
- '\u{2E18}', '\u{2E19}', '\u{2E1B}', '\u{2E1E}', '\u{2E1F}', '\u{2E2A}', '\u{2E2B}', '\u{2E2C}',
- '\u{2E2D}', '\u{2E2E}', '\u{2E30}', '\u{2E31}', '\u{2E32}', '\u{2E33}', '\u{2E34}', '\u{2E35}',
- '\u{2E36}', '\u{2E37}', '\u{2E38}', '\u{2E39}', '\u{2E3C}', '\u{2E3D}', '\u{2E3E}', '\u{2E3F}',
- '\u{2E41}', '\u{3001}', '\u{3002}', '\u{3003}', '\u{303D}', '\u{30FB}', '\u{A4FE}', '\u{A4FF}',
- '\u{A60D}', '\u{A60E}', '\u{A60F}', '\u{A673}', '\u{A67E}', '\u{A6F2}', '\u{A6F3}', '\u{A6F4}',
- '\u{A6F5}', '\u{A6F6}', '\u{A6F7}', '\u{A874}', '\u{A875}', '\u{A876}', '\u{A877}', '\u{A8CE}',
- '\u{A8CF}', '\u{A8F8}', '\u{A8F9}', '\u{A8FA}', '\u{A8FC}', '\u{A92E}', '\u{A92F}', '\u{A95F}',
- '\u{A9C1}', '\u{A9C2}', '\u{A9C3}', '\u{A9C4}', '\u{A9C5}', '\u{A9C6}', '\u{A9C7}', '\u{A9C8}',
- '\u{A9C9}', '\u{A9CA}', '\u{A9CB}', '\u{A9CC}', '\u{A9CD}', '\u{A9DE}', '\u{A9DF}', '\u{AA5C}',
- '\u{AA5D}', '\u{AA5E}', '\u{AA5F}', '\u{AADE}', '\u{AADF}', '\u{AAF0}', '\u{AAF1}', '\u{ABEB}',
- '\u{FE10}', '\u{FE11}', '\u{FE12}', '\u{FE13}', '\u{FE14}', '\u{FE15}', '\u{FE16}', '\u{FE19}',
- '\u{FE30}', '\u{FE45}', '\u{FE46}', '\u{FE49}', '\u{FE4A}', '\u{FE4B}', '\u{FE4C}', '\u{FE50}',
- '\u{FE51}', '\u{FE52}', '\u{FE54}', '\u{FE55}', '\u{FE56}', '\u{FE57}', '\u{FE5F}', '\u{FE60}',
- '\u{FE61}', '\u{FE68}', '\u{FE6A}', '\u{FE6B}', '\u{FF01}', '\u{FF02}', '\u{FF03}', '\u{FF05}',
- '\u{FF06}', '\u{FF07}', '\u{FF0A}', '\u{FF0C}', '\u{FF0E}', '\u{FF0F}', '\u{FF1A}', '\u{FF1B}',
- '\u{FF1F}', '\u{FF20}', '\u{FF3C}', '\u{FF61}', '\u{FF64}', '\u{FF65}', '\u{10100}', '\u{10101}',
- '\u{10102}', '\u{1039F}', '\u{103D0}', '\u{1056F}', '\u{10857}', '\u{1091F}', '\u{1093F}', '\u{10A50}',
- '\u{10A51}', '\u{10A52}', '\u{10A53}', '\u{10A54}', '\u{10A55}', '\u{10A56}', '\u{10A57}', '\u{10A58}',
- '\u{10A7F}', '\u{10AF0}', '\u{10AF1}', '\u{10AF2}', '\u{10AF3}', '\u{10AF4}', '\u{10AF5}', '\u{10AF6}',
- '\u{10B39}', '\u{10B3A}', '\u{10B3B}', '\u{10B3C}', '\u{10B3D}', '\u{10B3E}', '\u{10B3F}', '\u{10B99}',
- '\u{10B9A}', '\u{10B9B}', '\u{10B9C}', '\u{11047}', '\u{11048}', '\u{11049}', '\u{1104A}', '\u{1104B}',
- '\u{1104C}', '\u{1104D}', '\u{110BB}', '\u{110BC}', '\u{110BE}', '\u{110BF}', '\u{110C0}', '\u{110C1}',
- '\u{11140}', '\u{11141}', '\u{11142}', '\u{11143}', '\u{11174}', '\u{11175}', '\u{111C5}', '\u{111C6}',
- '\u{111C7}', '\u{111C8}', '\u{111C9}', '\u{111CD}', '\u{111DB}', '\u{111DD}', '\u{111DE}', '\u{111DF}',
- '\u{11238}', '\u{11239}', '\u{1123A}', '\u{1123B}', '\u{1123C}', '\u{1123D}', '\u{112A9}', '\u{114C6}',
- '\u{115C1}', '\u{115C2}', '\u{115C3}', '\u{115C4}', '\u{115C5}', '\u{115C6}', '\u{115C7}', '\u{115C8}',
- '\u{115C9}', '\u{115CA}', '\u{115CB}', '\u{115CC}', '\u{115CD}', '\u{115CE}', '\u{115CF}', '\u{115D0}',
- '\u{115D1}', '\u{115D2}', '\u{115D3}', '\u{115D4}', '\u{115D5}', '\u{115D6}', '\u{115D7}', '\u{11641}',
- '\u{11642}', '\u{11643}', '\u{1173C}', '\u{1173D}', '\u{1173E}', '\u{12470}', '\u{12471}', '\u{12472}',
- '\u{12473}', '\u{12474}', '\u{16A6E}', '\u{16A6F}', '\u{16AF5}', '\u{16B37}', '\u{16B38}', '\u{16B39}',
- '\u{16B3A}', '\u{16B3B}', '\u{16B44}', '\u{1BC9F}', '\u{1DA87}', '\u{1DA88}', '\u{1DA89}', '\u{1DA8A}',
- '\u{1DA8B}'];
-
-pub static SEPARATOR_LINE : &'static [char] = &[
- '\u{2028}'];
-
-pub static SEPARATOR_PARAGRAPH : &'static [char] = &[
- '\u{2029}'];
-
-pub static SEPARATOR_SPACE : &'static [char] = &[
- '\u{0020}', '\u{00A0}', '\u{1680}', '\u{2000}', '\u{2001}', '\u{2002}', '\u{2003}', '\u{2004}',
- '\u{2005}', '\u{2006}', '\u{2007}', '\u{2008}', '\u{2009}', '\u{200A}', '\u{202F}', '\u{205F}',
- '\u{3000}'];
-
-pub static SYMBOL_CURRENCY : &'static [char] = &[
- '\u{0024}', '\u{00A2}', '\u{00A3}', '\u{00A4}', '\u{00A5}', '\u{058F}', '\u{060B}', '\u{09F2}',
- '\u{09F3}', '\u{09FB}', '\u{0AF1}', '\u{0BF9}', '\u{0E3F}', '\u{17DB}', '\u{20A0}', '\u{20A1}',
- '\u{20A2}', '\u{20A3}', '\u{20A4}', '\u{20A5}', '\u{20A6}', '\u{20A7}', '\u{20A8}', '\u{20A9}',
- '\u{20AA}', '\u{20AB}', '\u{20AC}', '\u{20AD}', '\u{20AE}', '\u{20AF}', '\u{20B0}', '\u{20B1}',
- '\u{20B2}', '\u{20B3}', '\u{20B4}', '\u{20B5}', '\u{20B6}', '\u{20B7}', '\u{20B8}', '\u{20B9}',
- '\u{20BA}', '\u{20BB}', '\u{20BC}', '\u{20BD}', '\u{20BE}', '\u{A838}', '\u{FDFC}', '\u{FE69}',
- '\u{FF04}', '\u{FFE0}', '\u{FFE1}', '\u{FFE5}', '\u{FFE6}'];
-
-pub static SYMBOL_MATH : &'static [char] = &[
- '\u{002B}', '\u{003C}', '\u{003D}', '\u{003E}', '\u{007C}', '\u{007E}', '\u{00AC}', '\u{00B1}',
- '\u{00D7}', '\u{00F7}', '\u{03F6}', '\u{0606}', '\u{0607}', '\u{0608}', '\u{2044}', '\u{2052}',
- '\u{207A}', '\u{207B}', '\u{207C}', '\u{208A}', '\u{208B}', '\u{208C}', '\u{2118}', '\u{2140}',
- '\u{2141}', '\u{2142}', '\u{2143}', '\u{2144}', '\u{214B}', '\u{2190}', '\u{2191}', '\u{2192}',
- '\u{2193}', '\u{2194}', '\u{219A}', '\u{219B}', '\u{21A0}', '\u{21A3}', '\u{21A6}', '\u{21AE}',
- '\u{21CE}', '\u{21CF}', '\u{21D2}', '\u{21D4}', '\u{21F4}', '\u{21F5}', '\u{21F6}', '\u{21F7}',
- '\u{21F8}', '\u{21F9}', '\u{21FA}', '\u{21FB}', '\u{21FC}', '\u{21FD}', '\u{21FE}', '\u{21FF}',
- '\u{2200}', '\u{2201}', '\u{2202}', '\u{2203}', '\u{2204}', '\u{2205}', '\u{2206}', '\u{2207}',
- '\u{2208}', '\u{2209}', '\u{220A}', '\u{220B}', '\u{220C}', '\u{220D}', '\u{220E}', '\u{220F}',
- '\u{2210}', '\u{2211}', '\u{2212}', '\u{2213}', '\u{2214}', '\u{2215}', '\u{2216}', '\u{2217}',
- '\u{2218}', '\u{2219}', '\u{221A}', '\u{221B}', '\u{221C}', '\u{221D}', '\u{221E}', '\u{221F}',
- '\u{2220}', '\u{2221}', '\u{2222}', '\u{2223}', '\u{2224}', '\u{2225}', '\u{2226}', '\u{2227}',
- '\u{2228}', '\u{2229}', '\u{222A}', '\u{222B}', '\u{222C}', '\u{222D}', '\u{222E}', '\u{222F}',
- '\u{2230}', '\u{2231}', '\u{2232}', '\u{2233}', '\u{2234}', '\u{2235}', '\u{2236}', '\u{2237}',
- '\u{2238}', '\u{2239}', '\u{223A}', '\u{223B}', '\u{223C}', '\u{223D}', '\u{223E}', '\u{223F}',
- '\u{2240}', '\u{2241}', '\u{2242}', '\u{2243}', '\u{2244}', '\u{2245}', '\u{2246}', '\u{2247}',
- '\u{2248}', '\u{2249}', '\u{224A}', '\u{224B}', '\u{224C}', '\u{224D}', '\u{224E}', '\u{224F}',
- '\u{2250}', '\u{2251}', '\u{2252}', '\u{2253}', '\u{2254}', '\u{2255}', '\u{2256}', '\u{2257}',
- '\u{2258}', '\u{2259}', '\u{225A}', '\u{225B}', '\u{225C}', '\u{225D}', '\u{225E}', '\u{225F}',
- '\u{2260}', '\u{2261}', '\u{2262}', '\u{2263}', '\u{2264}', '\u{2265}', '\u{2266}', '\u{2267}',
- '\u{2268}', '\u{2269}', '\u{226A}', '\u{226B}', '\u{226C}', '\u{226D}', '\u{226E}', '\u{226F}',
- '\u{2270}', '\u{2271}', '\u{2272}', '\u{2273}', '\u{2274}', '\u{2275}', '\u{2276}', '\u{2277}',
- '\u{2278}', '\u{2279}', '\u{227A}', '\u{227B}', '\u{227C}', '\u{227D}', '\u{227E}', '\u{227F}',
- '\u{2280}', '\u{2281}', '\u{2282}', '\u{2283}', '\u{2284}', '\u{2285}', '\u{2286}', '\u{2287}',
- '\u{2288}', '\u{2289}', '\u{228A}', '\u{228B}', '\u{228C}', '\u{228D}', '\u{228E}', '\u{228F}',
- '\u{2290}', '\u{2291}', '\u{2292}', '\u{2293}', '\u{2294}', '\u{2295}', '\u{2296}', '\u{2297}',
- '\u{2298}', '\u{2299}', '\u{229A}', '\u{229B}', '\u{229C}', '\u{229D}', '\u{229E}', '\u{229F}',
- '\u{22A0}', '\u{22A1}', '\u{22A2}', '\u{22A3}', '\u{22A4}', '\u{22A5}', '\u{22A6}', '\u{22A7}',
- '\u{22A8}', '\u{22A9}', '\u{22AA}', '\u{22AB}', '\u{22AC}', '\u{22AD}', '\u{22AE}', '\u{22AF}',
- '\u{22B0}', '\u{22B1}', '\u{22B2}', '\u{22B3}', '\u{22B4}', '\u{22B5}', '\u{22B6}', '\u{22B7}',
- '\u{22B8}', '\u{22B9}', '\u{22BA}', '\u{22BB}', '\u{22BC}', '\u{22BD}', '\u{22BE}', '\u{22BF}',
- '\u{22C0}', '\u{22C1}', '\u{22C2}', '\u{22C3}', '\u{22C4}', '\u{22C5}', '\u{22C6}', '\u{22C7}',
- '\u{22C8}', '\u{22C9}', '\u{22CA}', '\u{22CB}', '\u{22CC}', '\u{22CD}', '\u{22CE}', '\u{22CF}',
- '\u{22D0}', '\u{22D1}', '\u{22D2}', '\u{22D3}', '\u{22D4}', '\u{22D5}', '\u{22D6}', '\u{22D7}',
- '\u{22D8}', '\u{22D9}', '\u{22DA}', '\u{22DB}', '\u{22DC}', '\u{22DD}', '\u{22DE}', '\u{22DF}',
- '\u{22E0}', '\u{22E1}', '\u{22E2}', '\u{22E3}', '\u{22E4}', '\u{22E5}', '\u{22E6}', '\u{22E7}',
- '\u{22E8}', '\u{22E9}', '\u{22EA}', '\u{22EB}', '\u{22EC}', '\u{22ED}', '\u{22EE}', '\u{22EF}',
- '\u{22F0}', '\u{22F1}', '\u{22F2}', '\u{22F3}', '\u{22F4}', '\u{22F5}', '\u{22F6}', '\u{22F7}',
- '\u{22F8}', '\u{22F9}', '\u{22FA}', '\u{22FB}', '\u{22FC}', '\u{22FD}', '\u{22FE}', '\u{22FF}',
- '\u{2320}', '\u{2321}', '\u{237C}', '\u{239B}', '\u{239C}', '\u{239D}', '\u{239E}', '\u{239F}',
- '\u{23A0}', '\u{23A1}', '\u{23A2}', '\u{23A3}', '\u{23A4}', '\u{23A5}', '\u{23A6}', '\u{23A7}',
- '\u{23A8}', '\u{23A9}', '\u{23AA}', '\u{23AB}', '\u{23AC}', '\u{23AD}', '\u{23AE}', '\u{23AF}',
- '\u{23B0}', '\u{23B1}', '\u{23B2}', '\u{23B3}', '\u{23DC}', '\u{23DD}', '\u{23DE}', '\u{23DF}',
- '\u{23E0}', '\u{23E1}', '\u{25B7}', '\u{25C1}', '\u{25F8}', '\u{25F9}', '\u{25FA}', '\u{25FB}',
- '\u{25FC}', '\u{25FD}', '\u{25FE}', '\u{25FF}', '\u{266F}', '\u{27C0}', '\u{27C1}', '\u{27C2}',
- '\u{27C3}', '\u{27C4}', '\u{27C7}', '\u{27C8}', '\u{27C9}', '\u{27CA}', '\u{27CB}', '\u{27CC}',
- '\u{27CD}', '\u{27CE}', '\u{27CF}', '\u{27D0}', '\u{27D1}', '\u{27D2}', '\u{27D3}', '\u{27D4}',
- '\u{27D5}', '\u{27D6}', '\u{27D7}', '\u{27D8}', '\u{27D9}', '\u{27DA}', '\u{27DB}', '\u{27DC}',
- '\u{27DD}', '\u{27DE}', '\u{27DF}', '\u{27E0}', '\u{27E1}', '\u{27E2}', '\u{27E3}', '\u{27E4}',
- '\u{27E5}', '\u{27F0}', '\u{27F1}', '\u{27F2}', '\u{27F3}', '\u{27F4}', '\u{27F5}', '\u{27F6}',
- '\u{27F7}', '\u{27F8}', '\u{27F9}', '\u{27FA}', '\u{27FB}', '\u{27FC}', '\u{27FD}', '\u{27FE}',
- '\u{27FF}', '\u{2900}', '\u{2901}', '\u{2902}', '\u{2903}', '\u{2904}', '\u{2905}', '\u{2906}',
- '\u{2907}', '\u{2908}', '\u{2909}', '\u{290A}', '\u{290B}', '\u{290C}', '\u{290D}', '\u{290E}',
- '\u{290F}', '\u{2910}', '\u{2911}', '\u{2912}', '\u{2913}', '\u{2914}', '\u{2915}', '\u{2916}',
- '\u{2917}', '\u{2918}', '\u{2919}', '\u{291A}', '\u{291B}', '\u{291C}', '\u{291D}', '\u{291E}',
- '\u{291F}', '\u{2920}', '\u{2921}', '\u{2922}', '\u{2923}', '\u{2924}', '\u{2925}', '\u{2926}',
- '\u{2927}', '\u{2928}', '\u{2929}', '\u{292A}', '\u{292B}', '\u{292C}', '\u{292D}', '\u{292E}',
- '\u{292F}', '\u{2930}', '\u{2931}', '\u{2932}', '\u{2933}', '\u{2934}', '\u{2935}', '\u{2936}',
- '\u{2937}', '\u{2938}', '\u{2939}', '\u{293A}', '\u{293B}', '\u{293C}', '\u{293D}', '\u{293E}',
- '\u{293F}', '\u{2940}', '\u{2941}', '\u{2942}', '\u{2943}', '\u{2944}', '\u{2945}', '\u{2946}',
- '\u{2947}', '\u{2948}', '\u{2949}', '\u{294A}', '\u{294B}', '\u{294C}', '\u{294D}', '\u{294E}',
- '\u{294F}', '\u{2950}', '\u{2951}', '\u{2952}', '\u{2953}', '\u{2954}', '\u{2955}', '\u{2956}',
- '\u{2957}', '\u{2958}', '\u{2959}', '\u{295A}', '\u{295B}', '\u{295C}', '\u{295D}', '\u{295E}',
- '\u{295F}', '\u{2960}', '\u{2961}', '\u{2962}', '\u{2963}', '\u{2964}', '\u{2965}', '\u{2966}',
- '\u{2967}', '\u{2968}', '\u{2969}', '\u{296A}', '\u{296B}', '\u{296C}', '\u{296D}', '\u{296E}',
- '\u{296F}', '\u{2970}', '\u{2971}', '\u{2972}', '\u{2973}', '\u{2974}', '\u{2975}', '\u{2976}',
- '\u{2977}', '\u{2978}', '\u{2979}', '\u{297A}', '\u{297B}', '\u{297C}', '\u{297D}', '\u{297E}',
- '\u{297F}', '\u{2980}', '\u{2981}', '\u{2982}', '\u{2999}', '\u{299A}', '\u{299B}', '\u{299C}',
- '\u{299D}', '\u{299E}', '\u{299F}', '\u{29A0}', '\u{29A1}', '\u{29A2}', '\u{29A3}', '\u{29A4}',
- '\u{29A5}', '\u{29A6}', '\u{29A7}', '\u{29A8}', '\u{29A9}', '\u{29AA}', '\u{29AB}', '\u{29AC}',
- '\u{29AD}', '\u{29AE}', '\u{29AF}', '\u{29B0}', '\u{29B1}', '\u{29B2}', '\u{29B3}', '\u{29B4}',
- '\u{29B5}', '\u{29B6}', '\u{29B7}', '\u{29B8}', '\u{29B9}', '\u{29BA}', '\u{29BB}', '\u{29BC}',
- '\u{29BD}', '\u{29BE}', '\u{29BF}', '\u{29C0}', '\u{29C1}', '\u{29C2}', '\u{29C3}', '\u{29C4}',
- '\u{29C5}', '\u{29C6}', '\u{29C7}', '\u{29C8}', '\u{29C9}', '\u{29CA}', '\u{29CB}', '\u{29CC}',
- '\u{29CD}', '\u{29CE}', '\u{29CF}', '\u{29D0}', '\u{29D1}', '\u{29D2}', '\u{29D3}', '\u{29D4}',
- '\u{29D5}', '\u{29D6}', '\u{29D7}', '\u{29DC}', '\u{29DD}', '\u{29DE}', '\u{29DF}', '\u{29E0}',
- '\u{29E1}', '\u{29E2}', '\u{29E3}', '\u{29E4}', '\u{29E5}', '\u{29E6}', '\u{29E7}', '\u{29E8}',
- '\u{29E9}', '\u{29EA}', '\u{29EB}', '\u{29EC}', '\u{29ED}', '\u{29EE}', '\u{29EF}', '\u{29F0}',
- '\u{29F1}', '\u{29F2}', '\u{29F3}', '\u{29F4}', '\u{29F5}', '\u{29F6}', '\u{29F7}', '\u{29F8}',
- '\u{29F9}', '\u{29FA}', '\u{29FB}', '\u{29FE}', '\u{29FF}', '\u{2A00}', '\u{2A01}', '\u{2A02}',
- '\u{2A03}', '\u{2A04}', '\u{2A05}', '\u{2A06}', '\u{2A07}', '\u{2A08}', '\u{2A09}', '\u{2A0A}',
- '\u{2A0B}', '\u{2A0C}', '\u{2A0D}', '\u{2A0E}', '\u{2A0F}', '\u{2A10}', '\u{2A11}', '\u{2A12}',
- '\u{2A13}', '\u{2A14}', '\u{2A15}', '\u{2A16}', '\u{2A17}', '\u{2A18}', '\u{2A19}', '\u{2A1A}',
- '\u{2A1B}', '\u{2A1C}', '\u{2A1D}', '\u{2A1E}', '\u{2A1F}', '\u{2A20}', '\u{2A21}', '\u{2A22}',
- '\u{2A23}', '\u{2A24}', '\u{2A25}', '\u{2A26}', '\u{2A27}', '\u{2A28}', '\u{2A29}', '\u{2A2A}',
- '\u{2A2B}', '\u{2A2C}', '\u{2A2D}', '\u{2A2E}', '\u{2A2F}', '\u{2A30}', '\u{2A31}', '\u{2A32}',
- '\u{2A33}', '\u{2A34}', '\u{2A35}', '\u{2A36}', '\u{2A37}', '\u{2A38}', '\u{2A39}', '\u{2A3A}',
- '\u{2A3B}', '\u{2A3C}', '\u{2A3D}', '\u{2A3E}', '\u{2A3F}', '\u{2A40}', '\u{2A41}', '\u{2A42}',
- '\u{2A43}', '\u{2A44}', '\u{2A45}', '\u{2A46}', '\u{2A47}', '\u{2A48}', '\u{2A49}', '\u{2A4A}',
- '\u{2A4B}', '\u{2A4C}', '\u{2A4D}', '\u{2A4E}', '\u{2A4F}', '\u{2A50}', '\u{2A51}', '\u{2A52}',
- '\u{2A53}', '\u{2A54}', '\u{2A55}', '\u{2A56}', '\u{2A57}', '\u{2A58}', '\u{2A59}', '\u{2A5A}',
- '\u{2A5B}', '\u{2A5C}', '\u{2A5D}', '\u{2A5E}', '\u{2A5F}', '\u{2A60}', '\u{2A61}', '\u{2A62}',
- '\u{2A63}', '\u{2A64}', '\u{2A65}', '\u{2A66}', '\u{2A67}', '\u{2A68}', '\u{2A69}', '\u{2A6A}',
- '\u{2A6B}', '\u{2A6C}', '\u{2A6D}', '\u{2A6E}', '\u{2A6F}', '\u{2A70}', '\u{2A71}', '\u{2A72}',
- '\u{2A73}', '\u{2A74}', '\u{2A75}', '\u{2A76}', '\u{2A77}', '\u{2A78}', '\u{2A79}', '\u{2A7A}',
- '\u{2A7B}', '\u{2A7C}', '\u{2A7D}', '\u{2A7E}', '\u{2A7F}', '\u{2A80}', '\u{2A81}', '\u{2A82}',
- '\u{2A83}', '\u{2A84}', '\u{2A85}', '\u{2A86}', '\u{2A87}', '\u{2A88}', '\u{2A89}', '\u{2A8A}',
- '\u{2A8B}', '\u{2A8C}', '\u{2A8D}', '\u{2A8E}', '\u{2A8F}', '\u{2A90}', '\u{2A91}', '\u{2A92}',
- '\u{2A93}', '\u{2A94}', '\u{2A95}', '\u{2A96}', '\u{2A97}', '\u{2A98}', '\u{2A99}', '\u{2A9A}',
- '\u{2A9B}', '\u{2A9C}', '\u{2A9D}', '\u{2A9E}', '\u{2A9F}', '\u{2AA0}', '\u{2AA1}', '\u{2AA2}',
- '\u{2AA3}', '\u{2AA4}', '\u{2AA5}', '\u{2AA6}', '\u{2AA7}', '\u{2AA8}', '\u{2AA9}', '\u{2AAA}',
- '\u{2AAB}', '\u{2AAC}', '\u{2AAD}', '\u{2AAE}', '\u{2AAF}', '\u{2AB0}', '\u{2AB1}', '\u{2AB2}',
- '\u{2AB3}', '\u{2AB4}', '\u{2AB5}', '\u{2AB6}', '\u{2AB7}', '\u{2AB8}', '\u{2AB9}', '\u{2ABA}',
- '\u{2ABB}', '\u{2ABC}', '\u{2ABD}', '\u{2ABE}', '\u{2ABF}', '\u{2AC0}', '\u{2AC1}', '\u{2AC2}',
- '\u{2AC3}', '\u{2AC4}', '\u{2AC5}', '\u{2AC6}', '\u{2AC7}', '\u{2AC8}', '\u{2AC9}', '\u{2ACA}',
- '\u{2ACB}', '\u{2ACC}', '\u{2ACD}', '\u{2ACE}', '\u{2ACF}', '\u{2AD0}', '\u{2AD1}', '\u{2AD2}',
- '\u{2AD3}', '\u{2AD4}', '\u{2AD5}', '\u{2AD6}', '\u{2AD7}', '\u{2AD8}', '\u{2AD9}', '\u{2ADA}',
- '\u{2ADB}', '\u{2ADC}', '\u{2ADD}', '\u{2ADE}', '\u{2ADF}', '\u{2AE0}', '\u{2AE1}', '\u{2AE2}',
- '\u{2AE3}', '\u{2AE4}', '\u{2AE5}', '\u{2AE6}', '\u{2AE7}', '\u{2AE8}', '\u{2AE9}', '\u{2AEA}',
- '\u{2AEB}', '\u{2AEC}', '\u{2AED}', '\u{2AEE}', '\u{2AEF}', '\u{2AF0}', '\u{2AF1}', '\u{2AF2}',
- '\u{2AF3}', '\u{2AF4}', '\u{2AF5}', '\u{2AF6}', '\u{2AF7}', '\u{2AF8}', '\u{2AF9}', '\u{2AFA}',
- '\u{2AFB}', '\u{2AFC}', '\u{2AFD}', '\u{2AFE}', '\u{2AFF}', '\u{2B30}', '\u{2B31}', '\u{2B32}',
- '\u{2B33}', '\u{2B34}', '\u{2B35}', '\u{2B36}', '\u{2B37}', '\u{2B38}', '\u{2B39}', '\u{2B3A}',
- '\u{2B3B}', '\u{2B3C}', '\u{2B3D}', '\u{2B3E}', '\u{2B3F}', '\u{2B40}', '\u{2B41}', '\u{2B42}',
- '\u{2B43}', '\u{2B44}', '\u{2B47}', '\u{2B48}', '\u{2B49}', '\u{2B4A}', '\u{2B4B}', '\u{2B4C}',
- '\u{FB29}', '\u{FE62}', '\u{FE64}', '\u{FE65}', '\u{FE66}', '\u{FF0B}', '\u{FF1C}', '\u{FF1D}',
- '\u{FF1E}', '\u{FF5C}', '\u{FF5E}', '\u{FFE2}', '\u{FFE9}', '\u{FFEA}', '\u{FFEB}', '\u{FFEC}',
- '\u{1D6C1}', '\u{1D6DB}', '\u{1D6FB}', '\u{1D715}', '\u{1D735}', '\u{1D74F}', '\u{1D76F}', '\u{1D789}',
- '\u{1D7A9}', '\u{1D7C3}', '\u{1EEF0}', '\u{1EEF1}'];
-
-pub static SYMBOL_MODIFIER : &'static [char] = &[
- '\u{005E}', '\u{0060}', '\u{00A8}', '\u{00AF}', '\u{00B4}', '\u{00B8}', '\u{02C2}', '\u{02C3}',
- '\u{02C4}', '\u{02C5}', '\u{02D2}', '\u{02D3}', '\u{02D4}', '\u{02D5}', '\u{02D6}', '\u{02D7}',
- '\u{02D8}', '\u{02D9}', '\u{02DA}', '\u{02DB}', '\u{02DC}', '\u{02DD}', '\u{02DE}', '\u{02DF}',
- '\u{02E5}', '\u{02E6}', '\u{02E7}', '\u{02E8}', '\u{02E9}', '\u{02EA}', '\u{02EB}', '\u{02ED}',
- '\u{02EF}', '\u{02F0}', '\u{02F1}', '\u{02F2}', '\u{02F3}', '\u{02F4}', '\u{02F5}', '\u{02F6}',
- '\u{02F7}', '\u{02F8}', '\u{02F9}', '\u{02FA}', '\u{02FB}', '\u{02FC}', '\u{02FD}', '\u{02FE}',
- '\u{02FF}', '\u{0375}', '\u{0384}', '\u{0385}', '\u{1FBD}', '\u{1FBF}', '\u{1FC0}', '\u{1FC1}',
- '\u{1FCD}', '\u{1FCE}', '\u{1FCF}', '\u{1FDD}', '\u{1FDE}', '\u{1FDF}', '\u{1FED}', '\u{1FEE}',
- '\u{1FEF}', '\u{1FFD}', '\u{1FFE}', '\u{309B}', '\u{309C}', '\u{A700}', '\u{A701}', '\u{A702}',
- '\u{A703}', '\u{A704}', '\u{A705}', '\u{A706}', '\u{A707}', '\u{A708}', '\u{A709}', '\u{A70A}',
- '\u{A70B}', '\u{A70C}', '\u{A70D}', '\u{A70E}', '\u{A70F}', '\u{A710}', '\u{A711}', '\u{A712}',
- '\u{A713}', '\u{A714}', '\u{A715}', '\u{A716}', '\u{A720}', '\u{A721}', '\u{A789}', '\u{A78A}',
- '\u{AB5B}', '\u{FBB2}', '\u{FBB3}', '\u{FBB4}', '\u{FBB5}', '\u{FBB6}', '\u{FBB7}', '\u{FBB8}',
- '\u{FBB9}', '\u{FBBA}', '\u{FBBB}', '\u{FBBC}', '\u{FBBD}', '\u{FBBE}', '\u{FBBF}', '\u{FBC0}',
- '\u{FBC1}', '\u{FF3E}', '\u{FF40}', '\u{FFE3}', '\u{1F3FB}', '\u{1F3FC}', '\u{1F3FD}', '\u{1F3FE}',
- '\u{1F3FF}'];
-
-pub static SYMBOL_OTHER : &'static [char] = &[
- '\u{00A6}', '\u{00A9}', '\u{00AE}', '\u{00B0}', '\u{0482}', '\u{058D}', '\u{058E}', '\u{060E}',
- '\u{060F}', '\u{06DE}', '\u{06E9}', '\u{06FD}', '\u{06FE}', '\u{07F6}', '\u{09FA}', '\u{0B70}',
- '\u{0BF3}', '\u{0BF4}', '\u{0BF5}', '\u{0BF6}', '\u{0BF7}', '\u{0BF8}', '\u{0BFA}', '\u{0C7F}',
- '\u{0D79}', '\u{0F01}', '\u{0F02}', '\u{0F03}', '\u{0F13}', '\u{0F15}', '\u{0F16}', '\u{0F17}',
- '\u{0F1A}', '\u{0F1B}', '\u{0F1C}', '\u{0F1D}', '\u{0F1E}', '\u{0F1F}', '\u{0F34}', '\u{0F36}',
- '\u{0F38}', '\u{0FBE}', '\u{0FBF}', '\u{0FC0}', '\u{0FC1}', '\u{0FC2}', '\u{0FC3}', '\u{0FC4}',
- '\u{0FC5}', '\u{0FC7}', '\u{0FC8}', '\u{0FC9}', '\u{0FCA}', '\u{0FCB}', '\u{0FCC}', '\u{0FCE}',
- '\u{0FCF}', '\u{0FD5}', '\u{0FD6}', '\u{0FD7}', '\u{0FD8}', '\u{109E}', '\u{109F}', '\u{1390}',
- '\u{1391}', '\u{1392}', '\u{1393}', '\u{1394}', '\u{1395}', '\u{1396}', '\u{1397}', '\u{1398}',
- '\u{1399}', '\u{1940}', '\u{19DE}', '\u{19DF}', '\u{19E0}', '\u{19E1}', '\u{19E2}', '\u{19E3}',
- '\u{19E4}', '\u{19E5}', '\u{19E6}', '\u{19E7}', '\u{19E8}', '\u{19E9}', '\u{19EA}', '\u{19EB}',
- '\u{19EC}', '\u{19ED}', '\u{19EE}', '\u{19EF}', '\u{19F0}', '\u{19F1}', '\u{19F2}', '\u{19F3}',
- '\u{19F4}', '\u{19F5}', '\u{19F6}', '\u{19F7}', '\u{19F8}', '\u{19F9}', '\u{19FA}', '\u{19FB}',
- '\u{19FC}', '\u{19FD}', '\u{19FE}', '\u{19FF}', '\u{1B61}', '\u{1B62}', '\u{1B63}', '\u{1B64}',
- '\u{1B65}', '\u{1B66}', '\u{1B67}', '\u{1B68}', '\u{1B69}', '\u{1B6A}', '\u{1B74}', '\u{1B75}',
- '\u{1B76}', '\u{1B77}', '\u{1B78}', '\u{1B79}', '\u{1B7A}', '\u{1B7B}', '\u{1B7C}', '\u{2100}',
- '\u{2101}', '\u{2103}', '\u{2104}', '\u{2105}', '\u{2106}', '\u{2108}', '\u{2109}', '\u{2114}',
- '\u{2116}', '\u{2117}', '\u{211E}', '\u{211F}', '\u{2120}', '\u{2121}', '\u{2122}', '\u{2123}',
- '\u{2125}', '\u{2127}', '\u{2129}', '\u{212E}', '\u{213A}', '\u{213B}', '\u{214A}', '\u{214C}',
- '\u{214D}', '\u{214F}', '\u{218A}', '\u{218B}', '\u{2195}', '\u{2196}', '\u{2197}', '\u{2198}',
- '\u{2199}', '\u{219C}', '\u{219D}', '\u{219E}', '\u{219F}', '\u{21A1}', '\u{21A2}', '\u{21A4}',
- '\u{21A5}', '\u{21A7}', '\u{21A8}', '\u{21A9}', '\u{21AA}', '\u{21AB}', '\u{21AC}', '\u{21AD}',
- '\u{21AF}', '\u{21B0}', '\u{21B1}', '\u{21B2}', '\u{21B3}', '\u{21B4}', '\u{21B5}', '\u{21B6}',
- '\u{21B7}', '\u{21B8}', '\u{21B9}', '\u{21BA}', '\u{21BB}', '\u{21BC}', '\u{21BD}', '\u{21BE}',
- '\u{21BF}', '\u{21C0}', '\u{21C1}', '\u{21C2}', '\u{21C3}', '\u{21C4}', '\u{21C5}', '\u{21C6}',
- '\u{21C7}', '\u{21C8}', '\u{21C9}', '\u{21CA}', '\u{21CB}', '\u{21CC}', '\u{21CD}', '\u{21D0}',
- '\u{21D1}', '\u{21D3}', '\u{21D5}', '\u{21D6}', '\u{21D7}', '\u{21D8}', '\u{21D9}', '\u{21DA}',
- '\u{21DB}', '\u{21DC}', '\u{21DD}', '\u{21DE}', '\u{21DF}', '\u{21E0}', '\u{21E1}', '\u{21E2}',
- '\u{21E3}', '\u{21E4}', '\u{21E5}', '\u{21E6}', '\u{21E7}', '\u{21E8}', '\u{21E9}', '\u{21EA}',
- '\u{21EB}', '\u{21EC}', '\u{21ED}', '\u{21EE}', '\u{21EF}', '\u{21F0}', '\u{21F1}', '\u{21F2}',
- '\u{21F3}', '\u{2300}', '\u{2301}', '\u{2302}', '\u{2303}', '\u{2304}', '\u{2305}', '\u{2306}',
- '\u{2307}', '\u{230C}', '\u{230D}', '\u{230E}', '\u{230F}', '\u{2310}', '\u{2311}', '\u{2312}',
- '\u{2313}', '\u{2314}', '\u{2315}', '\u{2316}', '\u{2317}', '\u{2318}', '\u{2319}', '\u{231A}',
- '\u{231B}', '\u{231C}', '\u{231D}', '\u{231E}', '\u{231F}', '\u{2322}', '\u{2323}', '\u{2324}',
- '\u{2325}', '\u{2326}', '\u{2327}', '\u{2328}', '\u{232B}', '\u{232C}', '\u{232D}', '\u{232E}',
- '\u{232F}', '\u{2330}', '\u{2331}', '\u{2332}', '\u{2333}', '\u{2334}', '\u{2335}', '\u{2336}',
- '\u{2337}', '\u{2338}', '\u{2339}', '\u{233A}', '\u{233B}', '\u{233C}', '\u{233D}', '\u{233E}',
- '\u{233F}', '\u{2340}', '\u{2341}', '\u{2342}', '\u{2343}', '\u{2344}', '\u{2345}', '\u{2346}',
- '\u{2347}', '\u{2348}', '\u{2349}', '\u{234A}', '\u{234B}', '\u{234C}', '\u{234D}', '\u{234E}',
- '\u{234F}', '\u{2350}', '\u{2351}', '\u{2352}', '\u{2353}', '\u{2354}', '\u{2355}', '\u{2356}',
- '\u{2357}', '\u{2358}', '\u{2359}', '\u{235A}', '\u{235B}', '\u{235C}', '\u{235D}', '\u{235E}',
- '\u{235F}', '\u{2360}', '\u{2361}', '\u{2362}', '\u{2363}', '\u{2364}', '\u{2365}', '\u{2366}',
- '\u{2367}', '\u{2368}', '\u{2369}', '\u{236A}', '\u{236B}', '\u{236C}', '\u{236D}', '\u{236E}',
- '\u{236F}', '\u{2370}', '\u{2371}', '\u{2372}', '\u{2373}', '\u{2374}', '\u{2375}', '\u{2376}',
- '\u{2377}', '\u{2378}', '\u{2379}', '\u{237A}', '\u{237B}', '\u{237D}', '\u{237E}', '\u{237F}',
- '\u{2380}', '\u{2381}', '\u{2382}', '\u{2383}', '\u{2384}', '\u{2385}', '\u{2386}', '\u{2387}',
- '\u{2388}', '\u{2389}', '\u{238A}', '\u{238B}', '\u{238C}', '\u{238D}', '\u{238E}', '\u{238F}',
- '\u{2390}', '\u{2391}', '\u{2392}', '\u{2393}', '\u{2394}', '\u{2395}', '\u{2396}', '\u{2397}',
- '\u{2398}', '\u{2399}', '\u{239A}', '\u{23B4}', '\u{23B5}', '\u{23B6}', '\u{23B7}', '\u{23B8}',
- '\u{23B9}', '\u{23BA}', '\u{23BB}', '\u{23BC}', '\u{23BD}', '\u{23BE}', '\u{23BF}', '\u{23C0}',
- '\u{23C1}', '\u{23C2}', '\u{23C3}', '\u{23C4}', '\u{23C5}', '\u{23C6}', '\u{23C7}', '\u{23C8}',
- '\u{23C9}', '\u{23CA}', '\u{23CB}', '\u{23CC}', '\u{23CD}', '\u{23CE}', '\u{23CF}', '\u{23D0}',
- '\u{23D1}', '\u{23D2}', '\u{23D3}', '\u{23D4}', '\u{23D5}', '\u{23D6}', '\u{23D7}', '\u{23D8}',
- '\u{23D9}', '\u{23DA}', '\u{23DB}', '\u{23E2}', '\u{23E3}', '\u{23E4}', '\u{23E5}', '\u{23E6}',
- '\u{23E7}', '\u{23E8}', '\u{23E9}', '\u{23EA}', '\u{23EB}', '\u{23EC}', '\u{23ED}', '\u{23EE}',
- '\u{23EF}', '\u{23F0}', '\u{23F1}', '\u{23F2}', '\u{23F3}', '\u{23F4}', '\u{23F5}', '\u{23F6}',
- '\u{23F7}', '\u{23F8}', '\u{23F9}', '\u{23FA}', '\u{2400}', '\u{2401}', '\u{2402}', '\u{2403}',
- '\u{2404}', '\u{2405}', '\u{2406}', '\u{2407}', '\u{2408}', '\u{2409}', '\u{240A}', '\u{240B}',
- '\u{240C}', '\u{240D}', '\u{240E}', '\u{240F}', '\u{2410}', '\u{2411}', '\u{2412}', '\u{2413}',
- '\u{2414}', '\u{2415}', '\u{2416}', '\u{2417}', '\u{2418}', '\u{2419}', '\u{241A}', '\u{241B}',
- '\u{241C}', '\u{241D}', '\u{241E}', '\u{241F}', '\u{2420}', '\u{2421}', '\u{2422}', '\u{2423}',
- '\u{2424}', '\u{2425}', '\u{2426}', '\u{2440}', '\u{2441}', '\u{2442}', '\u{2443}', '\u{2444}',
- '\u{2445}', '\u{2446}', '\u{2447}', '\u{2448}', '\u{2449}', '\u{244A}', '\u{249C}', '\u{249D}',
- '\u{249E}', '\u{249F}', '\u{24A0}', '\u{24A1}', '\u{24A2}', '\u{24A3}', '\u{24A4}', '\u{24A5}',
- '\u{24A6}', '\u{24A7}', '\u{24A8}', '\u{24A9}', '\u{24AA}', '\u{24AB}', '\u{24AC}', '\u{24AD}',
- '\u{24AE}', '\u{24AF}', '\u{24B0}', '\u{24B1}', '\u{24B2}', '\u{24B3}', '\u{24B4}', '\u{24B5}',
- '\u{24B6}', '\u{24B7}', '\u{24B8}', '\u{24B9}', '\u{24BA}', '\u{24BB}', '\u{24BC}', '\u{24BD}',
- '\u{24BE}', '\u{24BF}', '\u{24C0}', '\u{24C1}', '\u{24C2}', '\u{24C3}', '\u{24C4}', '\u{24C5}',
- '\u{24C6}', '\u{24C7}', '\u{24C8}', '\u{24C9}', '\u{24CA}', '\u{24CB}', '\u{24CC}', '\u{24CD}',
- '\u{24CE}', '\u{24CF}', '\u{24D0}', '\u{24D1}', '\u{24D2}', '\u{24D3}', '\u{24D4}', '\u{24D5}',
- '\u{24D6}', '\u{24D7}', '\u{24D8}', '\u{24D9}', '\u{24DA}', '\u{24DB}', '\u{24DC}', '\u{24DD}',
- '\u{24DE}', '\u{24DF}', '\u{24E0}', '\u{24E1}', '\u{24E2}', '\u{24E3}', '\u{24E4}', '\u{24E5}',
- '\u{24E6}', '\u{24E7}', '\u{24E8}', '\u{24E9}', '\u{2500}', '\u{2501}', '\u{2502}', '\u{2503}',
- '\u{2504}', '\u{2505}', '\u{2506}', '\u{2507}', '\u{2508}', '\u{2509}', '\u{250A}', '\u{250B}',
- '\u{250C}', '\u{250D}', '\u{250E}', '\u{250F}', '\u{2510}', '\u{2511}', '\u{2512}', '\u{2513}',
- '\u{2514}', '\u{2515}', '\u{2516}', '\u{2517}', '\u{2518}', '\u{2519}', '\u{251A}', '\u{251B}',
- '\u{251C}', '\u{251D}', '\u{251E}', '\u{251F}', '\u{2520}', '\u{2521}', '\u{2522}', '\u{2523}',
- '\u{2524}', '\u{2525}', '\u{2526}', '\u{2527}', '\u{2528}', '\u{2529}', '\u{252A}', '\u{252B}',
- '\u{252C}', '\u{252D}', '\u{252E}', '\u{252F}', '\u{2530}', '\u{2531}', '\u{2532}', '\u{2533}',
- '\u{2534}', '\u{2535}', '\u{2536}', '\u{2537}', '\u{2538}', '\u{2539}', '\u{253A}', '\u{253B}',
- '\u{253C}', '\u{253D}', '\u{253E}', '\u{253F}', '\u{2540}', '\u{2541}', '\u{2542}', '\u{2543}',
- '\u{2544}', '\u{2545}', '\u{2546}', '\u{2547}', '\u{2548}', '\u{2549}', '\u{254A}', '\u{254B}',
- '\u{254C}', '\u{254D}', '\u{254E}', '\u{254F}', '\u{2550}', '\u{2551}', '\u{2552}', '\u{2553}',
- '\u{2554}', '\u{2555}', '\u{2556}', '\u{2557}', '\u{2558}', '\u{2559}', '\u{255A}', '\u{255B}',
- '\u{255C}', '\u{255D}', '\u{255E}', '\u{255F}', '\u{2560}', '\u{2561}', '\u{2562}', '\u{2563}',
- '\u{2564}', '\u{2565}', '\u{2566}', '\u{2567}', '\u{2568}', '\u{2569}', '\u{256A}', '\u{256B}',
- '\u{256C}', '\u{256D}', '\u{256E}', '\u{256F}', '\u{2570}', '\u{2571}', '\u{2572}', '\u{2573}',
- '\u{2574}', '\u{2575}', '\u{2576}', '\u{2577}', '\u{2578}', '\u{2579}', '\u{257A}', '\u{257B}',
- '\u{257C}', '\u{257D}', '\u{257E}', '\u{257F}', '\u{2580}', '\u{2581}', '\u{2582}', '\u{2583}',
- '\u{2584}', '\u{2585}', '\u{2586}', '\u{2587}', '\u{2588}', '\u{2589}', '\u{258A}', '\u{258B}',
- '\u{258C}', '\u{258D}', '\u{258E}', '\u{258F}', '\u{2590}', '\u{2591}', '\u{2592}', '\u{2593}',
- '\u{2594}', '\u{2595}', '\u{2596}', '\u{2597}', '\u{2598}', '\u{2599}', '\u{259A}', '\u{259B}',
- '\u{259C}', '\u{259D}', '\u{259E}', '\u{259F}', '\u{25A0}', '\u{25A1}', '\u{25A2}', '\u{25A3}',
- '\u{25A4}', '\u{25A5}', '\u{25A6}', '\u{25A7}', '\u{25A8}', '\u{25A9}', '\u{25AA}', '\u{25AB}',
- '\u{25AC}', '\u{25AD}', '\u{25AE}', '\u{25AF}', '\u{25B0}', '\u{25B1}', '\u{25B2}', '\u{25B3}',
- '\u{25B4}', '\u{25B5}', '\u{25B6}', '\u{25B8}', '\u{25B9}', '\u{25BA}', '\u{25BB}', '\u{25BC}',
- '\u{25BD}', '\u{25BE}', '\u{25BF}', '\u{25C0}', '\u{25C2}', '\u{25C3}', '\u{25C4}', '\u{25C5}',
- '\u{25C6}', '\u{25C7}', '\u{25C8}', '\u{25C9}', '\u{25CA}', '\u{25CB}', '\u{25CC}', '\u{25CD}',
- '\u{25CE}', '\u{25CF}', '\u{25D0}', '\u{25D1}', '\u{25D2}', '\u{25D3}', '\u{25D4}', '\u{25D5}',
- '\u{25D6}', '\u{25D7}', '\u{25D8}', '\u{25D9}', '\u{25DA}', '\u{25DB}', '\u{25DC}', '\u{25DD}',
- '\u{25DE}', '\u{25DF}', '\u{25E0}', '\u{25E1}', '\u{25E2}', '\u{25E3}', '\u{25E4}', '\u{25E5}',
- '\u{25E6}', '\u{25E7}', '\u{25E8}', '\u{25E9}', '\u{25EA}', '\u{25EB}', '\u{25EC}', '\u{25ED}',
- '\u{25EE}', '\u{25EF}', '\u{25F0}', '\u{25F1}', '\u{25F2}', '\u{25F3}', '\u{25F4}', '\u{25F5}',
- '\u{25F6}', '\u{25F7}', '\u{2600}', '\u{2601}', '\u{2602}', '\u{2603}', '\u{2604}', '\u{2605}',
- '\u{2606}', '\u{2607}', '\u{2608}', '\u{2609}', '\u{260A}', '\u{260B}', '\u{260C}', '\u{260D}',
- '\u{260E}', '\u{260F}', '\u{2610}', '\u{2611}', '\u{2612}', '\u{2613}', '\u{2614}', '\u{2615}',
- '\u{2616}', '\u{2617}', '\u{2618}', '\u{2619}', '\u{261A}', '\u{261B}', '\u{261C}', '\u{261D}',
- '\u{261E}', '\u{261F}', '\u{2620}', '\u{2621}', '\u{2622}', '\u{2623}', '\u{2624}', '\u{2625}',
- '\u{2626}', '\u{2627}', '\u{2628}', '\u{2629}', '\u{262A}', '\u{262B}', '\u{262C}', '\u{262D}',
- '\u{262E}', '\u{262F}', '\u{2630}', '\u{2631}', '\u{2632}', '\u{2633}', '\u{2634}', '\u{2635}',
- '\u{2636}', '\u{2637}', '\u{2638}', '\u{2639}', '\u{263A}', '\u{263B}', '\u{263C}', '\u{263D}',
- '\u{263E}', '\u{263F}', '\u{2640}', '\u{2641}', '\u{2642}', '\u{2643}', '\u{2644}', '\u{2645}',
- '\u{2646}', '\u{2647}', '\u{2648}', '\u{2649}', '\u{264A}', '\u{264B}', '\u{264C}', '\u{264D}',
- '\u{264E}', '\u{264F}', '\u{2650}', '\u{2651}', '\u{2652}', '\u{2653}', '\u{2654}', '\u{2655}',
- '\u{2656}', '\u{2657}', '\u{2658}', '\u{2659}', '\u{265A}', '\u{265B}', '\u{265C}', '\u{265D}',
- '\u{265E}', '\u{265F}', '\u{2660}', '\u{2661}', '\u{2662}', '\u{2663}', '\u{2664}', '\u{2665}',
- '\u{2666}', '\u{2667}', '\u{2668}', '\u{2669}', '\u{266A}', '\u{266B}', '\u{266C}', '\u{266D}',
- '\u{266E}', '\u{2670}', '\u{2671}', '\u{2672}', '\u{2673}', '\u{2674}', '\u{2675}', '\u{2676}',
- '\u{2677}', '\u{2678}', '\u{2679}', '\u{267A}', '\u{267B}', '\u{267C}', '\u{267D}', '\u{267E}',
- '\u{267F}', '\u{2680}', '\u{2681}', '\u{2682}', '\u{2683}', '\u{2684}', '\u{2685}', '\u{2686}',
- '\u{2687}', '\u{2688}', '\u{2689}', '\u{268A}', '\u{268B}', '\u{268C}', '\u{268D}', '\u{268E}',
- '\u{268F}', '\u{2690}', '\u{2691}', '\u{2692}', '\u{2693}', '\u{2694}', '\u{2695}', '\u{2696}',
- '\u{2697}', '\u{2698}', '\u{2699}', '\u{269A}', '\u{269B}', '\u{269C}', '\u{269D}', '\u{269E}',
- '\u{269F}', '\u{26A0}', '\u{26A1}', '\u{26A2}', '\u{26A3}', '\u{26A4}', '\u{26A5}', '\u{26A6}',
- '\u{26A7}', '\u{26A8}', '\u{26A9}', '\u{26AA}', '\u{26AB}', '\u{26AC}', '\u{26AD}', '\u{26AE}',
- '\u{26AF}', '\u{26B0}', '\u{26B1}', '\u{26B2}', '\u{26B3}', '\u{26B4}', '\u{26B5}', '\u{26B6}',
- '\u{26B7}', '\u{26B8}', '\u{26B9}', '\u{26BA}', '\u{26BB}', '\u{26BC}', '\u{26BD}', '\u{26BE}',
- '\u{26BF}', '\u{26C0}', '\u{26C1}', '\u{26C2}', '\u{26C3}', '\u{26C4}', '\u{26C5}', '\u{26C6}',
- '\u{26C7}', '\u{26C8}', '\u{26C9}', '\u{26CA}', '\u{26CB}', '\u{26CC}', '\u{26CD}', '\u{26CE}',
- '\u{26CF}', '\u{26D0}', '\u{26D1}', '\u{26D2}', '\u{26D3}', '\u{26D4}', '\u{26D5}', '\u{26D6}',
- '\u{26D7}', '\u{26D8}', '\u{26D9}', '\u{26DA}', '\u{26DB}', '\u{26DC}', '\u{26DD}', '\u{26DE}',
- '\u{26DF}', '\u{26E0}', '\u{26E1}', '\u{26E2}', '\u{26E3}', '\u{26E4}', '\u{26E5}', '\u{26E6}',
- '\u{26E7}', '\u{26E8}', '\u{26E9}', '\u{26EA}', '\u{26EB}', '\u{26EC}', '\u{26ED}', '\u{26EE}',
- '\u{26EF}', '\u{26F0}', '\u{26F1}', '\u{26F2}', '\u{26F3}', '\u{26F4}', '\u{26F5}', '\u{26F6}',
- '\u{26F7}', '\u{26F8}', '\u{26F9}', '\u{26FA}', '\u{26FB}', '\u{26FC}', '\u{26FD}', '\u{26FE}',
- '\u{26FF}', '\u{2700}', '\u{2701}', '\u{2702}', '\u{2703}', '\u{2704}', '\u{2705}', '\u{2706}',
- '\u{2707}', '\u{2708}', '\u{2709}', '\u{270A}', '\u{270B}', '\u{270C}', '\u{270D}', '\u{270E}',
- '\u{270F}', '\u{2710}', '\u{2711}', '\u{2712}', '\u{2713}', '\u{2714}', '\u{2715}', '\u{2716}',
- '\u{2717}', '\u{2718}', '\u{2719}', '\u{271A}', '\u{271B}', '\u{271C}', '\u{271D}', '\u{271E}',
- '\u{271F}', '\u{2720}', '\u{2721}', '\u{2722}', '\u{2723}', '\u{2724}', '\u{2725}', '\u{2726}',
- '\u{2727}', '\u{2728}', '\u{2729}', '\u{272A}', '\u{272B}', '\u{272C}', '\u{272D}', '\u{272E}',
- '\u{272F}', '\u{2730}', '\u{2731}', '\u{2732}', '\u{2733}', '\u{2734}', '\u{2735}', '\u{2736}',
- '\u{2737}', '\u{2738}', '\u{2739}', '\u{273A}', '\u{273B}', '\u{273C}', '\u{273D}', '\u{273E}',
- '\u{273F}', '\u{2740}', '\u{2741}', '\u{2742}', '\u{2743}', '\u{2744}', '\u{2745}', '\u{2746}',
- '\u{2747}', '\u{2748}', '\u{2749}', '\u{274A}', '\u{274B}', '\u{274C}', '\u{274D}', '\u{274E}',
- '\u{274F}', '\u{2750}', '\u{2751}', '\u{2752}', '\u{2753}', '\u{2754}', '\u{2755}', '\u{2756}',
- '\u{2757}', '\u{2758}', '\u{2759}', '\u{275A}', '\u{275B}', '\u{275C}', '\u{275D}', '\u{275E}',
- '\u{275F}', '\u{2760}', '\u{2761}', '\u{2762}', '\u{2763}', '\u{2764}', '\u{2765}', '\u{2766}',
- '\u{2767}', '\u{2794}', '\u{2795}', '\u{2796}', '\u{2797}', '\u{2798}', '\u{2799}', '\u{279A}',
- '\u{279B}', '\u{279C}', '\u{279D}', '\u{279E}', '\u{279F}', '\u{27A0}', '\u{27A1}', '\u{27A2}',
- '\u{27A3}', '\u{27A4}', '\u{27A5}', '\u{27A6}', '\u{27A7}', '\u{27A8}', '\u{27A9}', '\u{27AA}',
- '\u{27AB}', '\u{27AC}', '\u{27AD}', '\u{27AE}', '\u{27AF}', '\u{27B0}', '\u{27B1}', '\u{27B2}',
- '\u{27B3}', '\u{27B4}', '\u{27B5}', '\u{27B6}', '\u{27B7}', '\u{27B8}', '\u{27B9}', '\u{27BA}',
- '\u{27BB}', '\u{27BC}', '\u{27BD}', '\u{27BE}', '\u{27BF}', '\u{2800}', '\u{2801}', '\u{2802}',
- '\u{2803}', '\u{2804}', '\u{2805}', '\u{2806}', '\u{2807}', '\u{2808}', '\u{2809}', '\u{280A}',
- '\u{280B}', '\u{280C}', '\u{280D}', '\u{280E}', '\u{280F}', '\u{2810}', '\u{2811}', '\u{2812}',
- '\u{2813}', '\u{2814}', '\u{2815}', '\u{2816}', '\u{2817}', '\u{2818}', '\u{2819}', '\u{281A}',
- '\u{281B}', '\u{281C}', '\u{281D}', '\u{281E}', '\u{281F}', '\u{2820}', '\u{2821}', '\u{2822}',
- '\u{2823}', '\u{2824}', '\u{2825}', '\u{2826}', '\u{2827}', '\u{2828}', '\u{2829}', '\u{282A}',
- '\u{282B}', '\u{282C}', '\u{282D}', '\u{282E}', '\u{282F}', '\u{2830}', '\u{2831}', '\u{2832}',
- '\u{2833}', '\u{2834}', '\u{2835}', '\u{2836}', '\u{2837}', '\u{2838}', '\u{2839}', '\u{283A}',
- '\u{283B}', '\u{283C}', '\u{283D}', '\u{283E}', '\u{283F}', '\u{2840}', '\u{2841}', '\u{2842}',
- '\u{2843}', '\u{2844}', '\u{2845}', '\u{2846}', '\u{2847}', '\u{2848}', '\u{2849}', '\u{284A}',
- '\u{284B}', '\u{284C}', '\u{284D}', '\u{284E}', '\u{284F}', '\u{2850}', '\u{2851}', '\u{2852}',
- '\u{2853}', '\u{2854}', '\u{2855}', '\u{2856}', '\u{2857}', '\u{2858}', '\u{2859}', '\u{285A}',
- '\u{285B}', '\u{285C}', '\u{285D}', '\u{285E}', '\u{285F}', '\u{2860}', '\u{2861}', '\u{2862}',
- '\u{2863}', '\u{2864}', '\u{2865}', '\u{2866}', '\u{2867}', '\u{2868}', '\u{2869}', '\u{286A}',
- '\u{286B}', '\u{286C}', '\u{286D}', '\u{286E}', '\u{286F}', '\u{2870}', '\u{2871}', '\u{2872}',
- '\u{2873}', '\u{2874}', '\u{2875}', '\u{2876}', '\u{2877}', '\u{2878}', '\u{2879}', '\u{287A}',
- '\u{287B}', '\u{287C}', '\u{287D}', '\u{287E}', '\u{287F}', '\u{2880}', '\u{2881}', '\u{2882}',
- '\u{2883}', '\u{2884}', '\u{2885}', '\u{2886}', '\u{2887}', '\u{2888}', '\u{2889}', '\u{288A}',
- '\u{288B}', '\u{288C}', '\u{288D}', '\u{288E}', '\u{288F}', '\u{2890}', '\u{2891}', '\u{2892}',
- '\u{2893}', '\u{2894}', '\u{2895}', '\u{2896}', '\u{2897}', '\u{2898}', '\u{2899}', '\u{289A}',
- '\u{289B}', '\u{289C}', '\u{289D}', '\u{289E}', '\u{289F}', '\u{28A0}', '\u{28A1}', '\u{28A2}',
- '\u{28A3}', '\u{28A4}', '\u{28A5}', '\u{28A6}', '\u{28A7}', '\u{28A8}', '\u{28A9}', '\u{28AA}',
- '\u{28AB}', '\u{28AC}', '\u{28AD}', '\u{28AE}', '\u{28AF}', '\u{28B0}', '\u{28B1}', '\u{28B2}',
- '\u{28B3}', '\u{28B4}', '\u{28B5}', '\u{28B6}', '\u{28B7}', '\u{28B8}', '\u{28B9}', '\u{28BA}',
- '\u{28BB}', '\u{28BC}', '\u{28BD}', '\u{28BE}', '\u{28BF}', '\u{28C0}', '\u{28C1}', '\u{28C2}',
- '\u{28C3}', '\u{28C4}', '\u{28C5}', '\u{28C6}', '\u{28C7}', '\u{28C8}', '\u{28C9}', '\u{28CA}',
- '\u{28CB}', '\u{28CC}', '\u{28CD}', '\u{28CE}', '\u{28CF}', '\u{28D0}', '\u{28D1}', '\u{28D2}',
- '\u{28D3}', '\u{28D4}', '\u{28D5}', '\u{28D6}', '\u{28D7}', '\u{28D8}', '\u{28D9}', '\u{28DA}',
- '\u{28DB}', '\u{28DC}', '\u{28DD}', '\u{28DE}', '\u{28DF}', '\u{28E0}', '\u{28E1}', '\u{28E2}',
- '\u{28E3}', '\u{28E4}', '\u{28E5}', '\u{28E6}', '\u{28E7}', '\u{28E8}', '\u{28E9}', '\u{28EA}',
- '\u{28EB}', '\u{28EC}', '\u{28ED}', '\u{28EE}', '\u{28EF}', '\u{28F0}', '\u{28F1}', '\u{28F2}',
- '\u{28F3}', '\u{28F4}', '\u{28F5}', '\u{28F6}', '\u{28F7}', '\u{28F8}', '\u{28F9}', '\u{28FA}',
- '\u{28FB}', '\u{28FC}', '\u{28FD}', '\u{28FE}', '\u{28FF}', '\u{2B00}', '\u{2B01}', '\u{2B02}',
- '\u{2B03}', '\u{2B04}', '\u{2B05}', '\u{2B06}', '\u{2B07}', '\u{2B08}', '\u{2B09}', '\u{2B0A}',
- '\u{2B0B}', '\u{2B0C}', '\u{2B0D}', '\u{2B0E}', '\u{2B0F}', '\u{2B10}', '\u{2B11}', '\u{2B12}',
- '\u{2B13}', '\u{2B14}', '\u{2B15}', '\u{2B16}', '\u{2B17}', '\u{2B18}', '\u{2B19}', '\u{2B1A}',
- '\u{2B1B}', '\u{2B1C}', '\u{2B1D}', '\u{2B1E}', '\u{2B1F}', '\u{2B20}', '\u{2B21}', '\u{2B22}',
- '\u{2B23}', '\u{2B24}', '\u{2B25}', '\u{2B26}', '\u{2B27}', '\u{2B28}', '\u{2B29}', '\u{2B2A}',
- '\u{2B2B}', '\u{2B2C}', '\u{2B2D}', '\u{2B2E}', '\u{2B2F}', '\u{2B45}', '\u{2B46}', '\u{2B4D}',
- '\u{2B4E}', '\u{2B4F}', '\u{2B50}', '\u{2B51}', '\u{2B52}', '\u{2B53}', '\u{2B54}', '\u{2B55}',
- '\u{2B56}', '\u{2B57}', '\u{2B58}', '\u{2B59}', '\u{2B5A}', '\u{2B5B}', '\u{2B5C}', '\u{2B5D}',
- '\u{2B5E}', '\u{2B5F}', '\u{2B60}', '\u{2B61}', '\u{2B62}', '\u{2B63}', '\u{2B64}', '\u{2B65}',
- '\u{2B66}', '\u{2B67}', '\u{2B68}', '\u{2B69}', '\u{2B6A}', '\u{2B6B}', '\u{2B6C}', '\u{2B6D}',
- '\u{2B6E}', '\u{2B6F}', '\u{2B70}', '\u{2B71}', '\u{2B72}', '\u{2B73}', '\u{2B76}', '\u{2B77}',
- '\u{2B78}', '\u{2B79}', '\u{2B7A}', '\u{2B7B}', '\u{2B7C}', '\u{2B7D}', '\u{2B7E}', '\u{2B7F}',
- '\u{2B80}', '\u{2B81}', '\u{2B82}', '\u{2B83}', '\u{2B84}', '\u{2B85}', '\u{2B86}', '\u{2B87}',
- '\u{2B88}', '\u{2B89}', '\u{2B8A}', '\u{2B8B}', '\u{2B8C}', '\u{2B8D}', '\u{2B8E}', '\u{2B8F}',
- '\u{2B90}', '\u{2B91}', '\u{2B92}', '\u{2B93}', '\u{2B94}', '\u{2B95}', '\u{2B98}', '\u{2B99}',
- '\u{2B9A}', '\u{2B9B}', '\u{2B9C}', '\u{2B9D}', '\u{2B9E}', '\u{2B9F}', '\u{2BA0}', '\u{2BA1}',
- '\u{2BA2}', '\u{2BA3}', '\u{2BA4}', '\u{2BA5}', '\u{2BA6}', '\u{2BA7}', '\u{2BA8}', '\u{2BA9}',
- '\u{2BAA}', '\u{2BAB}', '\u{2BAC}', '\u{2BAD}', '\u{2BAE}', '\u{2BAF}', '\u{2BB0}', '\u{2BB1}',
- '\u{2BB2}', '\u{2BB3}', '\u{2BB4}', '\u{2BB5}', '\u{2BB6}', '\u{2BB7}', '\u{2BB8}', '\u{2BB9}',
- '\u{2BBD}', '\u{2BBE}', '\u{2BBF}', '\u{2BC0}', '\u{2BC1}', '\u{2BC2}', '\u{2BC3}', '\u{2BC4}',
- '\u{2BC5}', '\u{2BC6}', '\u{2BC7}', '\u{2BC8}', '\u{2BCA}', '\u{2BCB}', '\u{2BCC}', '\u{2BCD}',
- '\u{2BCE}', '\u{2BCF}', '\u{2BD0}', '\u{2BD1}', '\u{2BEC}', '\u{2BED}', '\u{2BEE}', '\u{2BEF}',
- '\u{2CE5}', '\u{2CE6}', '\u{2CE7}', '\u{2CE8}', '\u{2CE9}', '\u{2CEA}', '\u{2E80}', '\u{2E81}',
- '\u{2E82}', '\u{2E83}', '\u{2E84}', '\u{2E85}', '\u{2E86}', '\u{2E87}', '\u{2E88}', '\u{2E89}',
- '\u{2E8A}', '\u{2E8B}', '\u{2E8C}', '\u{2E8D}', '\u{2E8E}', '\u{2E8F}', '\u{2E90}', '\u{2E91}',
- '\u{2E92}', '\u{2E93}', '\u{2E94}', '\u{2E95}', '\u{2E96}', '\u{2E97}', '\u{2E98}', '\u{2E99}',
- '\u{2E9B}', '\u{2E9C}', '\u{2E9D}', '\u{2E9E}', '\u{2E9F}', '\u{2EA0}', '\u{2EA1}', '\u{2EA2}',
- '\u{2EA3}', '\u{2EA4}', '\u{2EA5}', '\u{2EA6}', '\u{2EA7}', '\u{2EA8}', '\u{2EA9}', '\u{2EAA}',
- '\u{2EAB}', '\u{2EAC}', '\u{2EAD}', '\u{2EAE}', '\u{2EAF}', '\u{2EB0}', '\u{2EB1}', '\u{2EB2}',
- '\u{2EB3}', '\u{2EB4}', '\u{2EB5}', '\u{2EB6}', '\u{2EB7}', '\u{2EB8}', '\u{2EB9}', '\u{2EBA}',
- '\u{2EBB}', '\u{2EBC}', '\u{2EBD}', '\u{2EBE}', '\u{2EBF}', '\u{2EC0}', '\u{2EC1}', '\u{2EC2}',
- '\u{2EC3}', '\u{2EC4}', '\u{2EC5}', '\u{2EC6}', '\u{2EC7}', '\u{2EC8}', '\u{2EC9}', '\u{2ECA}',
- '\u{2ECB}', '\u{2ECC}', '\u{2ECD}', '\u{2ECE}', '\u{2ECF}', '\u{2ED0}', '\u{2ED1}', '\u{2ED2}',
- '\u{2ED3}', '\u{2ED4}', '\u{2ED5}', '\u{2ED6}', '\u{2ED7}', '\u{2ED8}', '\u{2ED9}', '\u{2EDA}',
- '\u{2EDB}', '\u{2EDC}', '\u{2EDD}', '\u{2EDE}', '\u{2EDF}', '\u{2EE0}', '\u{2EE1}', '\u{2EE2}',
- '\u{2EE3}', '\u{2EE4}', '\u{2EE5}', '\u{2EE6}', '\u{2EE7}', '\u{2EE8}', '\u{2EE9}', '\u{2EEA}',
- '\u{2EEB}', '\u{2EEC}', '\u{2EED}', '\u{2EEE}', '\u{2EEF}', '\u{2EF0}', '\u{2EF1}', '\u{2EF2}',
- '\u{2EF3}', '\u{2F00}', '\u{2F01}', '\u{2F02}', '\u{2F03}', '\u{2F04}', '\u{2F05}', '\u{2F06}',
- '\u{2F07}', '\u{2F08}', '\u{2F09}', '\u{2F0A}', '\u{2F0B}', '\u{2F0C}', '\u{2F0D}', '\u{2F0E}',
- '\u{2F0F}', '\u{2F10}', '\u{2F11}', '\u{2F12}', '\u{2F13}', '\u{2F14}', '\u{2F15}', '\u{2F16}',
- '\u{2F17}', '\u{2F18}', '\u{2F19}', '\u{2F1A}', '\u{2F1B}', '\u{2F1C}', '\u{2F1D}', '\u{2F1E}',
- '\u{2F1F}', '\u{2F20}', '\u{2F21}', '\u{2F22}', '\u{2F23}', '\u{2F24}', '\u{2F25}', '\u{2F26}',
- '\u{2F27}', '\u{2F28}', '\u{2F29}', '\u{2F2A}', '\u{2F2B}', '\u{2F2C}', '\u{2F2D}', '\u{2F2E}',
- '\u{2F2F}', '\u{2F30}', '\u{2F31}', '\u{2F32}', '\u{2F33}', '\u{2F34}', '\u{2F35}', '\u{2F36}',
- '\u{2F37}', '\u{2F38}', '\u{2F39}', '\u{2F3A}', '\u{2F3B}', '\u{2F3C}', '\u{2F3D}', '\u{2F3E}',
- '\u{2F3F}', '\u{2F40}', '\u{2F41}', '\u{2F42}', '\u{2F43}', '\u{2F44}', '\u{2F45}', '\u{2F46}',
- '\u{2F47}', '\u{2F48}', '\u{2F49}', '\u{2F4A}', '\u{2F4B}', '\u{2F4C}', '\u{2F4D}', '\u{2F4E}',
- '\u{2F4F}', '\u{2F50}', '\u{2F51}', '\u{2F52}', '\u{2F53}', '\u{2F54}', '\u{2F55}', '\u{2F56}',
- '\u{2F57}', '\u{2F58}', '\u{2F59}', '\u{2F5A}', '\u{2F5B}', '\u{2F5C}', '\u{2F5D}', '\u{2F5E}',
- '\u{2F5F}', '\u{2F60}', '\u{2F61}', '\u{2F62}', '\u{2F63}', '\u{2F64}', '\u{2F65}', '\u{2F66}',
- '\u{2F67}', '\u{2F68}', '\u{2F69}', '\u{2F6A}', '\u{2F6B}', '\u{2F6C}', '\u{2F6D}', '\u{2F6E}',
- '\u{2F6F}', '\u{2F70}', '\u{2F71}', '\u{2F72}', '\u{2F73}', '\u{2F74}', '\u{2F75}', '\u{2F76}',
- '\u{2F77}', '\u{2F78}', '\u{2F79}', '\u{2F7A}', '\u{2F7B}', '\u{2F7C}', '\u{2F7D}', '\u{2F7E}',
- '\u{2F7F}', '\u{2F80}', '\u{2F81}', '\u{2F82}', '\u{2F83}', '\u{2F84}', '\u{2F85}', '\u{2F86}',
- '\u{2F87}', '\u{2F88}', '\u{2F89}', '\u{2F8A}', '\u{2F8B}', '\u{2F8C}', '\u{2F8D}', '\u{2F8E}',
- '\u{2F8F}', '\u{2F90}', '\u{2F91}', '\u{2F92}', '\u{2F93}', '\u{2F94}', '\u{2F95}', '\u{2F96}',
- '\u{2F97}', '\u{2F98}', '\u{2F99}', '\u{2F9A}', '\u{2F9B}', '\u{2F9C}', '\u{2F9D}', '\u{2F9E}',
- '\u{2F9F}', '\u{2FA0}', '\u{2FA1}', '\u{2FA2}', '\u{2FA3}', '\u{2FA4}', '\u{2FA5}', '\u{2FA6}',
- '\u{2FA7}', '\u{2FA8}', '\u{2FA9}', '\u{2FAA}', '\u{2FAB}', '\u{2FAC}', '\u{2FAD}', '\u{2FAE}',
- '\u{2FAF}', '\u{2FB0}', '\u{2FB1}', '\u{2FB2}', '\u{2FB3}', '\u{2FB4}', '\u{2FB5}', '\u{2FB6}',
- '\u{2FB7}', '\u{2FB8}', '\u{2FB9}', '\u{2FBA}', '\u{2FBB}', '\u{2FBC}', '\u{2FBD}', '\u{2FBE}',
- '\u{2FBF}', '\u{2FC0}', '\u{2FC1}', '\u{2FC2}', '\u{2FC3}', '\u{2FC4}', '\u{2FC5}', '\u{2FC6}',
- '\u{2FC7}', '\u{2FC8}', '\u{2FC9}', '\u{2FCA}', '\u{2FCB}', '\u{2FCC}', '\u{2FCD}', '\u{2FCE}',
- '\u{2FCF}', '\u{2FD0}', '\u{2FD1}', '\u{2FD2}', '\u{2FD3}', '\u{2FD4}', '\u{2FD5}', '\u{2FF0}',
- '\u{2FF1}', '\u{2FF2}', '\u{2FF3}', '\u{2FF4}', '\u{2FF5}', '\u{2FF6}', '\u{2FF7}', '\u{2FF8}',
- '\u{2FF9}', '\u{2FFA}', '\u{2FFB}', '\u{3004}', '\u{3012}', '\u{3013}', '\u{3020}', '\u{3036}',
- '\u{3037}', '\u{303E}', '\u{303F}', '\u{3190}', '\u{3191}', '\u{3196}', '\u{3197}', '\u{3198}',
- '\u{3199}', '\u{319A}', '\u{319B}', '\u{319C}', '\u{319D}', '\u{319E}', '\u{319F}', '\u{31C0}',
- '\u{31C1}', '\u{31C2}', '\u{31C3}', '\u{31C4}', '\u{31C5}', '\u{31C6}', '\u{31C7}', '\u{31C8}',
- '\u{31C9}', '\u{31CA}', '\u{31CB}', '\u{31CC}', '\u{31CD}', '\u{31CE}', '\u{31CF}', '\u{31D0}',
- '\u{31D1}', '\u{31D2}', '\u{31D3}', '\u{31D4}', '\u{31D5}', '\u{31D6}', '\u{31D7}', '\u{31D8}',
- '\u{31D9}', '\u{31DA}', '\u{31DB}', '\u{31DC}', '\u{31DD}', '\u{31DE}', '\u{31DF}', '\u{31E0}',
- '\u{31E1}', '\u{31E2}', '\u{31E3}', '\u{3200}', '\u{3201}', '\u{3202}', '\u{3203}', '\u{3204}',
- '\u{3205}', '\u{3206}', '\u{3207}', '\u{3208}', '\u{3209}', '\u{320A}', '\u{320B}', '\u{320C}',
- '\u{320D}', '\u{320E}', '\u{320F}', '\u{3210}', '\u{3211}', '\u{3212}', '\u{3213}', '\u{3214}',
- '\u{3215}', '\u{3216}', '\u{3217}', '\u{3218}', '\u{3219}', '\u{321A}', '\u{321B}', '\u{321C}',
- '\u{321D}', '\u{321E}', '\u{322A}', '\u{322B}', '\u{322C}', '\u{322D}', '\u{322E}', '\u{322F}',
- '\u{3230}', '\u{3231}', '\u{3232}', '\u{3233}', '\u{3234}', '\u{3235}', '\u{3236}', '\u{3237}',
- '\u{3238}', '\u{3239}', '\u{323A}', '\u{323B}', '\u{323C}', '\u{323D}', '\u{323E}', '\u{323F}',
- '\u{3240}', '\u{3241}', '\u{3242}', '\u{3243}', '\u{3244}', '\u{3245}', '\u{3246}', '\u{3247}',
- '\u{3250}', '\u{3260}', '\u{3261}', '\u{3262}', '\u{3263}', '\u{3264}', '\u{3265}', '\u{3266}',
- '\u{3267}', '\u{3268}', '\u{3269}', '\u{326A}', '\u{326B}', '\u{326C}', '\u{326D}', '\u{326E}',
- '\u{326F}', '\u{3270}', '\u{3271}', '\u{3272}', '\u{3273}', '\u{3274}', '\u{3275}', '\u{3276}',
- '\u{3277}', '\u{3278}', '\u{3279}', '\u{327A}', '\u{327B}', '\u{327C}', '\u{327D}', '\u{327E}',
- '\u{327F}', '\u{328A}', '\u{328B}', '\u{328C}', '\u{328D}', '\u{328E}', '\u{328F}', '\u{3290}',
- '\u{3291}', '\u{3292}', '\u{3293}', '\u{3294}', '\u{3295}', '\u{3296}', '\u{3297}', '\u{3298}',
- '\u{3299}', '\u{329A}', '\u{329B}', '\u{329C}', '\u{329D}', '\u{329E}', '\u{329F}', '\u{32A0}',
- '\u{32A1}', '\u{32A2}', '\u{32A3}', '\u{32A4}', '\u{32A5}', '\u{32A6}', '\u{32A7}', '\u{32A8}',
- '\u{32A9}', '\u{32AA}', '\u{32AB}', '\u{32AC}', '\u{32AD}', '\u{32AE}', '\u{32AF}', '\u{32B0}',
- '\u{32C0}', '\u{32C1}', '\u{32C2}', '\u{32C3}', '\u{32C4}', '\u{32C5}', '\u{32C6}', '\u{32C7}',
- '\u{32C8}', '\u{32C9}', '\u{32CA}', '\u{32CB}', '\u{32CC}', '\u{32CD}', '\u{32CE}', '\u{32CF}',
- '\u{32D0}', '\u{32D1}', '\u{32D2}', '\u{32D3}', '\u{32D4}', '\u{32D5}', '\u{32D6}', '\u{32D7}',
- '\u{32D8}', '\u{32D9}', '\u{32DA}', '\u{32DB}', '\u{32DC}', '\u{32DD}', '\u{32DE}', '\u{32DF}',
- '\u{32E0}', '\u{32E1}', '\u{32E2}', '\u{32E3}', '\u{32E4}', '\u{32E5}', '\u{32E6}', '\u{32E7}',
- '\u{32E8}', '\u{32E9}', '\u{32EA}', '\u{32EB}', '\u{32EC}', '\u{32ED}', '\u{32EE}', '\u{32EF}',
- '\u{32F0}', '\u{32F1}', '\u{32F2}', '\u{32F3}', '\u{32F4}', '\u{32F5}', '\u{32F6}', '\u{32F7}',
- '\u{32F8}', '\u{32F9}', '\u{32FA}', '\u{32FB}', '\u{32FC}', '\u{32FD}', '\u{32FE}', '\u{3300}',
- '\u{3301}', '\u{3302}', '\u{3303}', '\u{3304}', '\u{3305}', '\u{3306}', '\u{3307}', '\u{3308}',
- '\u{3309}', '\u{330A}', '\u{330B}', '\u{330C}', '\u{330D}', '\u{330E}', '\u{330F}', '\u{3310}',
- '\u{3311}', '\u{3312}', '\u{3313}', '\u{3314}', '\u{3315}', '\u{3316}', '\u{3317}', '\u{3318}',
- '\u{3319}', '\u{331A}', '\u{331B}', '\u{331C}', '\u{331D}', '\u{331E}', '\u{331F}', '\u{3320}',
- '\u{3321}', '\u{3322}', '\u{3323}', '\u{3324}', '\u{3325}', '\u{3326}', '\u{3327}', '\u{3328}',
- '\u{3329}', '\u{332A}', '\u{332B}', '\u{332C}', '\u{332D}', '\u{332E}', '\u{332F}', '\u{3330}',
- '\u{3331}', '\u{3332}', '\u{3333}', '\u{3334}', '\u{3335}', '\u{3336}', '\u{3337}', '\u{3338}',
- '\u{3339}', '\u{333A}', '\u{333B}', '\u{333C}', '\u{333D}', '\u{333E}', '\u{333F}', '\u{3340}',
- '\u{3341}', '\u{3342}', '\u{3343}', '\u{3344}', '\u{3345}', '\u{3346}', '\u{3347}', '\u{3348}',
- '\u{3349}', '\u{334A}', '\u{334B}', '\u{334C}', '\u{334D}', '\u{334E}', '\u{334F}', '\u{3350}',
- '\u{3351}', '\u{3352}', '\u{3353}', '\u{3354}', '\u{3355}', '\u{3356}', '\u{3357}', '\u{3358}',
- '\u{3359}', '\u{335A}', '\u{335B}', '\u{335C}', '\u{335D}', '\u{335E}', '\u{335F}', '\u{3360}',
- '\u{3361}', '\u{3362}', '\u{3363}', '\u{3364}', '\u{3365}', '\u{3366}', '\u{3367}', '\u{3368}',
- '\u{3369}', '\u{336A}', '\u{336B}', '\u{336C}', '\u{336D}', '\u{336E}', '\u{336F}', '\u{3370}',
- '\u{3371}', '\u{3372}', '\u{3373}', '\u{3374}', '\u{3375}', '\u{3376}', '\u{3377}', '\u{3378}',
- '\u{3379}', '\u{337A}', '\u{337B}', '\u{337C}', '\u{337D}', '\u{337E}', '\u{337F}', '\u{3380}',
- '\u{3381}', '\u{3382}', '\u{3383}', '\u{3384}', '\u{3385}', '\u{3386}', '\u{3387}', '\u{3388}',
- '\u{3389}', '\u{338A}', '\u{338B}', '\u{338C}', '\u{338D}', '\u{338E}', '\u{338F}', '\u{3390}',
- '\u{3391}', '\u{3392}', '\u{3393}', '\u{3394}', '\u{3395}', '\u{3396}', '\u{3397}', '\u{3398}',
- '\u{3399}', '\u{339A}', '\u{339B}', '\u{339C}', '\u{339D}', '\u{339E}', '\u{339F}', '\u{33A0}',
- '\u{33A1}', '\u{33A2}', '\u{33A3}', '\u{33A4}', '\u{33A5}', '\u{33A6}', '\u{33A7}', '\u{33A8}',
- '\u{33A9}', '\u{33AA}', '\u{33AB}', '\u{33AC}', '\u{33AD}', '\u{33AE}', '\u{33AF}', '\u{33B0}',
- '\u{33B1}', '\u{33B2}', '\u{33B3}', '\u{33B4}', '\u{33B5}', '\u{33B6}', '\u{33B7}', '\u{33B8}',
- '\u{33B9}', '\u{33BA}', '\u{33BB}', '\u{33BC}', '\u{33BD}', '\u{33BE}', '\u{33BF}', '\u{33C0}',
- '\u{33C1}', '\u{33C2}', '\u{33C3}', '\u{33C4}', '\u{33C5}', '\u{33C6}', '\u{33C7}', '\u{33C8}',
- '\u{33C9}', '\u{33CA}', '\u{33CB}', '\u{33CC}', '\u{33CD}', '\u{33CE}', '\u{33CF}', '\u{33D0}',
- '\u{33D1}', '\u{33D2}', '\u{33D3}', '\u{33D4}', '\u{33D5}', '\u{33D6}', '\u{33D7}', '\u{33D8}',
- '\u{33D9}', '\u{33DA}', '\u{33DB}', '\u{33DC}', '\u{33DD}', '\u{33DE}', '\u{33DF}', '\u{33E0}',
- '\u{33E1}', '\u{33E2}', '\u{33E3}', '\u{33E4}', '\u{33E5}', '\u{33E6}', '\u{33E7}', '\u{33E8}',
- '\u{33E9}', '\u{33EA}', '\u{33EB}', '\u{33EC}', '\u{33ED}', '\u{33EE}', '\u{33EF}', '\u{33F0}',
- '\u{33F1}', '\u{33F2}', '\u{33F3}', '\u{33F4}', '\u{33F5}', '\u{33F6}', '\u{33F7}', '\u{33F8}',
- '\u{33F9}', '\u{33FA}', '\u{33FB}', '\u{33FC}', '\u{33FD}', '\u{33FE}', '\u{33FF}', '\u{4DC0}',
- '\u{4DC1}', '\u{4DC2}', '\u{4DC3}', '\u{4DC4}', '\u{4DC5}', '\u{4DC6}', '\u{4DC7}', '\u{4DC8}',
- '\u{4DC9}', '\u{4DCA}', '\u{4DCB}', '\u{4DCC}', '\u{4DCD}', '\u{4DCE}', '\u{4DCF}', '\u{4DD0}',
- '\u{4DD1}', '\u{4DD2}', '\u{4DD3}', '\u{4DD4}', '\u{4DD5}', '\u{4DD6}', '\u{4DD7}', '\u{4DD8}',
- '\u{4DD9}', '\u{4DDA}', '\u{4DDB}', '\u{4DDC}', '\u{4DDD}', '\u{4DDE}', '\u{4DDF}', '\u{4DE0}',
- '\u{4DE1}', '\u{4DE2}', '\u{4DE3}', '\u{4DE4}', '\u{4DE5}', '\u{4DE6}', '\u{4DE7}', '\u{4DE8}',
- '\u{4DE9}', '\u{4DEA}', '\u{4DEB}', '\u{4DEC}', '\u{4DED}', '\u{4DEE}', '\u{4DEF}', '\u{4DF0}',
- '\u{4DF1}', '\u{4DF2}', '\u{4DF3}', '\u{4DF4}', '\u{4DF5}', '\u{4DF6}', '\u{4DF7}', '\u{4DF8}',
- '\u{4DF9}', '\u{4DFA}', '\u{4DFB}', '\u{4DFC}', '\u{4DFD}', '\u{4DFE}', '\u{4DFF}', '\u{A490}',
- '\u{A491}', '\u{A492}', '\u{A493}', '\u{A494}', '\u{A495}', '\u{A496}', '\u{A497}', '\u{A498}',
- '\u{A499}', '\u{A49A}', '\u{A49B}', '\u{A49C}', '\u{A49D}', '\u{A49E}', '\u{A49F}', '\u{A4A0}',
- '\u{A4A1}', '\u{A4A2}', '\u{A4A3}', '\u{A4A4}', '\u{A4A5}', '\u{A4A6}', '\u{A4A7}', '\u{A4A8}',
- '\u{A4A9}', '\u{A4AA}', '\u{A4AB}', '\u{A4AC}', '\u{A4AD}', '\u{A4AE}', '\u{A4AF}', '\u{A4B0}',
- '\u{A4B1}', '\u{A4B2}', '\u{A4B3}', '\u{A4B4}', '\u{A4B5}', '\u{A4B6}', '\u{A4B7}', '\u{A4B8}',
- '\u{A4B9}', '\u{A4BA}', '\u{A4BB}', '\u{A4BC}', '\u{A4BD}', '\u{A4BE}', '\u{A4BF}', '\u{A4C0}',
- '\u{A4C1}', '\u{A4C2}', '\u{A4C3}', '\u{A4C4}', '\u{A4C5}', '\u{A4C6}', '\u{A828}', '\u{A829}',
- '\u{A82A}', '\u{A82B}', '\u{A836}', '\u{A837}', '\u{A839}', '\u{AA77}', '\u{AA78}', '\u{AA79}',
- '\u{FDFD}', '\u{FFE4}', '\u{FFE8}', '\u{FFED}', '\u{FFEE}', '\u{FFFC}', '\u{FFFD}', '\u{10137}',
- '\u{10138}', '\u{10139}', '\u{1013A}', '\u{1013B}', '\u{1013C}', '\u{1013D}', '\u{1013E}', '\u{1013F}',
- '\u{10179}', '\u{1017A}', '\u{1017B}', '\u{1017C}', '\u{1017D}', '\u{1017E}', '\u{1017F}', '\u{10180}',
- '\u{10181}', '\u{10182}', '\u{10183}', '\u{10184}', '\u{10185}', '\u{10186}', '\u{10187}', '\u{10188}',
- '\u{10189}', '\u{1018C}', '\u{10190}', '\u{10191}', '\u{10192}', '\u{10193}', '\u{10194}', '\u{10195}',
- '\u{10196}', '\u{10197}', '\u{10198}', '\u{10199}', '\u{1019A}', '\u{1019B}', '\u{101A0}', '\u{101D0}',
- '\u{101D1}', '\u{101D2}', '\u{101D3}', '\u{101D4}', '\u{101D5}', '\u{101D6}', '\u{101D7}', '\u{101D8}',
- '\u{101D9}', '\u{101DA}', '\u{101DB}', '\u{101DC}', '\u{101DD}', '\u{101DE}', '\u{101DF}', '\u{101E0}',
- '\u{101E1}', '\u{101E2}', '\u{101E3}', '\u{101E4}', '\u{101E5}', '\u{101E6}', '\u{101E7}', '\u{101E8}',
- '\u{101E9}', '\u{101EA}', '\u{101EB}', '\u{101EC}', '\u{101ED}', '\u{101EE}', '\u{101EF}', '\u{101F0}',
- '\u{101F1}', '\u{101F2}', '\u{101F3}', '\u{101F4}', '\u{101F5}', '\u{101F6}', '\u{101F7}', '\u{101F8}',
- '\u{101F9}', '\u{101FA}', '\u{101FB}', '\u{101FC}', '\u{10877}', '\u{10878}', '\u{10AC8}', '\u{1173F}',
- '\u{16B3C}', '\u{16B3D}', '\u{16B3E}', '\u{16B3F}', '\u{16B45}', '\u{1BC9C}', '\u{1D000}', '\u{1D001}',
- '\u{1D002}', '\u{1D003}', '\u{1D004}', '\u{1D005}', '\u{1D006}', '\u{1D007}', '\u{1D008}', '\u{1D009}',
- '\u{1D00A}', '\u{1D00B}', '\u{1D00C}', '\u{1D00D}', '\u{1D00E}', '\u{1D00F}', '\u{1D010}', '\u{1D011}',
- '\u{1D012}', '\u{1D013}', '\u{1D014}', '\u{1D015}', '\u{1D016}', '\u{1D017}', '\u{1D018}', '\u{1D019}',
- '\u{1D01A}', '\u{1D01B}', '\u{1D01C}', '\u{1D01D}', '\u{1D01E}', '\u{1D01F}', '\u{1D020}', '\u{1D021}',
- '\u{1D022}', '\u{1D023}', '\u{1D024}', '\u{1D025}', '\u{1D026}', '\u{1D027}', '\u{1D028}', '\u{1D029}',
- '\u{1D02A}', '\u{1D02B}', '\u{1D02C}', '\u{1D02D}', '\u{1D02E}', '\u{1D02F}', '\u{1D030}', '\u{1D031}',
- '\u{1D032}', '\u{1D033}', '\u{1D034}', '\u{1D035}', '\u{1D036}', '\u{1D037}', '\u{1D038}', '\u{1D039}',
- '\u{1D03A}', '\u{1D03B}', '\u{1D03C}', '\u{1D03D}', '\u{1D03E}', '\u{1D03F}', '\u{1D040}', '\u{1D041}',
- '\u{1D042}', '\u{1D043}', '\u{1D044}', '\u{1D045}', '\u{1D046}', '\u{1D047}', '\u{1D048}', '\u{1D049}',
- '\u{1D04A}', '\u{1D04B}', '\u{1D04C}', '\u{1D04D}', '\u{1D04E}', '\u{1D04F}', '\u{1D050}', '\u{1D051}',
- '\u{1D052}', '\u{1D053}', '\u{1D054}', '\u{1D055}', '\u{1D056}', '\u{1D057}', '\u{1D058}', '\u{1D059}',
- '\u{1D05A}', '\u{1D05B}', '\u{1D05C}', '\u{1D05D}', '\u{1D05E}', '\u{1D05F}', '\u{1D060}', '\u{1D061}',
- '\u{1D062}', '\u{1D063}', '\u{1D064}', '\u{1D065}', '\u{1D066}', '\u{1D067}', '\u{1D068}', '\u{1D069}',
- '\u{1D06A}', '\u{1D06B}', '\u{1D06C}', '\u{1D06D}', '\u{1D06E}', '\u{1D06F}', '\u{1D070}', '\u{1D071}',
- '\u{1D072}', '\u{1D073}', '\u{1D074}', '\u{1D075}', '\u{1D076}', '\u{1D077}', '\u{1D078}', '\u{1D079}',
- '\u{1D07A}', '\u{1D07B}', '\u{1D07C}', '\u{1D07D}', '\u{1D07E}', '\u{1D07F}', '\u{1D080}', '\u{1D081}',
- '\u{1D082}', '\u{1D083}', '\u{1D084}', '\u{1D085}', '\u{1D086}', '\u{1D087}', '\u{1D088}', '\u{1D089}',
- '\u{1D08A}', '\u{1D08B}', '\u{1D08C}', '\u{1D08D}', '\u{1D08E}', '\u{1D08F}', '\u{1D090}', '\u{1D091}',
- '\u{1D092}', '\u{1D093}', '\u{1D094}', '\u{1D095}', '\u{1D096}', '\u{1D097}', '\u{1D098}', '\u{1D099}',
- '\u{1D09A}', '\u{1D09B}', '\u{1D09C}', '\u{1D09D}', '\u{1D09E}', '\u{1D09F}', '\u{1D0A0}', '\u{1D0A1}',
- '\u{1D0A2}', '\u{1D0A3}', '\u{1D0A4}', '\u{1D0A5}', '\u{1D0A6}', '\u{1D0A7}', '\u{1D0A8}', '\u{1D0A9}',
- '\u{1D0AA}', '\u{1D0AB}', '\u{1D0AC}', '\u{1D0AD}', '\u{1D0AE}', '\u{1D0AF}', '\u{1D0B0}', '\u{1D0B1}',
- '\u{1D0B2}', '\u{1D0B3}', '\u{1D0B4}', '\u{1D0B5}', '\u{1D0B6}', '\u{1D0B7}', '\u{1D0B8}', '\u{1D0B9}',
- '\u{1D0BA}', '\u{1D0BB}', '\u{1D0BC}', '\u{1D0BD}', '\u{1D0BE}', '\u{1D0BF}', '\u{1D0C0}', '\u{1D0C1}',
- '\u{1D0C2}', '\u{1D0C3}', '\u{1D0C4}', '\u{1D0C5}', '\u{1D0C6}', '\u{1D0C7}', '\u{1D0C8}', '\u{1D0C9}',
- '\u{1D0CA}', '\u{1D0CB}', '\u{1D0CC}', '\u{1D0CD}', '\u{1D0CE}', '\u{1D0CF}', '\u{1D0D0}', '\u{1D0D1}',
- '\u{1D0D2}', '\u{1D0D3}', '\u{1D0D4}', '\u{1D0D5}', '\u{1D0D6}', '\u{1D0D7}', '\u{1D0D8}', '\u{1D0D9}',
- '\u{1D0DA}', '\u{1D0DB}', '\u{1D0DC}', '\u{1D0DD}', '\u{1D0DE}', '\u{1D0DF}', '\u{1D0E0}', '\u{1D0E1}',
- '\u{1D0E2}', '\u{1D0E3}', '\u{1D0E4}', '\u{1D0E5}', '\u{1D0E6}', '\u{1D0E7}', '\u{1D0E8}', '\u{1D0E9}',
- '\u{1D0EA}', '\u{1D0EB}', '\u{1D0EC}', '\u{1D0ED}', '\u{1D0EE}', '\u{1D0EF}', '\u{1D0F0}', '\u{1D0F1}',
- '\u{1D0F2}', '\u{1D0F3}', '\u{1D0F4}', '\u{1D0F5}', '\u{1D100}', '\u{1D101}', '\u{1D102}', '\u{1D103}',
- '\u{1D104}', '\u{1D105}', '\u{1D106}', '\u{1D107}', '\u{1D108}', '\u{1D109}', '\u{1D10A}', '\u{1D10B}',
- '\u{1D10C}', '\u{1D10D}', '\u{1D10E}', '\u{1D10F}', '\u{1D110}', '\u{1D111}', '\u{1D112}', '\u{1D113}',
- '\u{1D114}', '\u{1D115}', '\u{1D116}', '\u{1D117}', '\u{1D118}', '\u{1D119}', '\u{1D11A}', '\u{1D11B}',
- '\u{1D11C}', '\u{1D11D}', '\u{1D11E}', '\u{1D11F}', '\u{1D120}', '\u{1D121}', '\u{1D122}', '\u{1D123}',
- '\u{1D124}', '\u{1D125}', '\u{1D126}', '\u{1D129}', '\u{1D12A}', '\u{1D12B}', '\u{1D12C}', '\u{1D12D}',
- '\u{1D12E}', '\u{1D12F}', '\u{1D130}', '\u{1D131}', '\u{1D132}', '\u{1D133}', '\u{1D134}', '\u{1D135}',
- '\u{1D136}', '\u{1D137}', '\u{1D138}', '\u{1D139}', '\u{1D13A}', '\u{1D13B}', '\u{1D13C}', '\u{1D13D}',
- '\u{1D13E}', '\u{1D13F}', '\u{1D140}', '\u{1D141}', '\u{1D142}', '\u{1D143}', '\u{1D144}', '\u{1D145}',
- '\u{1D146}', '\u{1D147}', '\u{1D148}', '\u{1D149}', '\u{1D14A}', '\u{1D14B}', '\u{1D14C}', '\u{1D14D}',
- '\u{1D14E}', '\u{1D14F}', '\u{1D150}', '\u{1D151}', '\u{1D152}', '\u{1D153}', '\u{1D154}', '\u{1D155}',
- '\u{1D156}', '\u{1D157}', '\u{1D158}', '\u{1D159}', '\u{1D15A}', '\u{1D15B}', '\u{1D15C}', '\u{1D15D}',
- '\u{1D15E}', '\u{1D15F}', '\u{1D160}', '\u{1D161}', '\u{1D162}', '\u{1D163}', '\u{1D164}', '\u{1D16A}',
- '\u{1D16B}', '\u{1D16C}', '\u{1D183}', '\u{1D184}', '\u{1D18C}', '\u{1D18D}', '\u{1D18E}', '\u{1D18F}',
- '\u{1D190}', '\u{1D191}', '\u{1D192}', '\u{1D193}', '\u{1D194}', '\u{1D195}', '\u{1D196}', '\u{1D197}',
- '\u{1D198}', '\u{1D199}', '\u{1D19A}', '\u{1D19B}', '\u{1D19C}', '\u{1D19D}', '\u{1D19E}', '\u{1D19F}',
- '\u{1D1A0}', '\u{1D1A1}', '\u{1D1A2}', '\u{1D1A3}', '\u{1D1A4}', '\u{1D1A5}', '\u{1D1A6}', '\u{1D1A7}',
- '\u{1D1A8}', '\u{1D1A9}', '\u{1D1AE}', '\u{1D1AF}', '\u{1D1B0}', '\u{1D1B1}', '\u{1D1B2}', '\u{1D1B3}',
- '\u{1D1B4}', '\u{1D1B5}', '\u{1D1B6}', '\u{1D1B7}', '\u{1D1B8}', '\u{1D1B9}', '\u{1D1BA}', '\u{1D1BB}',
- '\u{1D1BC}', '\u{1D1BD}', '\u{1D1BE}', '\u{1D1BF}', '\u{1D1C0}', '\u{1D1C1}', '\u{1D1C2}', '\u{1D1C3}',
- '\u{1D1C4}', '\u{1D1C5}', '\u{1D1C6}', '\u{1D1C7}', '\u{1D1C8}', '\u{1D1C9}', '\u{1D1CA}', '\u{1D1CB}',
- '\u{1D1CC}', '\u{1D1CD}', '\u{1D1CE}', '\u{1D1CF}', '\u{1D1D0}', '\u{1D1D1}', '\u{1D1D2}', '\u{1D1D3}',
- '\u{1D1D4}', '\u{1D1D5}', '\u{1D1D6}', '\u{1D1D7}', '\u{1D1D8}', '\u{1D1D9}', '\u{1D1DA}', '\u{1D1DB}',
- '\u{1D1DC}', '\u{1D1DD}', '\u{1D1DE}', '\u{1D1DF}', '\u{1D1E0}', '\u{1D1E1}', '\u{1D1E2}', '\u{1D1E3}',
- '\u{1D1E4}', '\u{1D1E5}', '\u{1D1E6}', '\u{1D1E7}', '\u{1D1E8}', '\u{1D200}', '\u{1D201}', '\u{1D202}',
- '\u{1D203}', '\u{1D204}', '\u{1D205}', '\u{1D206}', '\u{1D207}', '\u{1D208}', '\u{1D209}', '\u{1D20A}',
- '\u{1D20B}', '\u{1D20C}', '\u{1D20D}', '\u{1D20E}', '\u{1D20F}', '\u{1D210}', '\u{1D211}', '\u{1D212}',
- '\u{1D213}', '\u{1D214}', '\u{1D215}', '\u{1D216}', '\u{1D217}', '\u{1D218}', '\u{1D219}', '\u{1D21A}',
- '\u{1D21B}', '\u{1D21C}', '\u{1D21D}', '\u{1D21E}', '\u{1D21F}', '\u{1D220}', '\u{1D221}', '\u{1D222}',
- '\u{1D223}', '\u{1D224}', '\u{1D225}', '\u{1D226}', '\u{1D227}', '\u{1D228}', '\u{1D229}', '\u{1D22A}',
- '\u{1D22B}', '\u{1D22C}', '\u{1D22D}', '\u{1D22E}', '\u{1D22F}', '\u{1D230}', '\u{1D231}', '\u{1D232}',
- '\u{1D233}', '\u{1D234}', '\u{1D235}', '\u{1D236}', '\u{1D237}', '\u{1D238}', '\u{1D239}', '\u{1D23A}',
- '\u{1D23B}', '\u{1D23C}', '\u{1D23D}', '\u{1D23E}', '\u{1D23F}', '\u{1D240}', '\u{1D241}', '\u{1D245}',
- '\u{1D300}', '\u{1D301}', '\u{1D302}', '\u{1D303}', '\u{1D304}', '\u{1D305}', '\u{1D306}', '\u{1D307}',
- '\u{1D308}', '\u{1D309}', '\u{1D30A}', '\u{1D30B}', '\u{1D30C}', '\u{1D30D}', '\u{1D30E}', '\u{1D30F}',
- '\u{1D310}', '\u{1D311}', '\u{1D312}', '\u{1D313}', '\u{1D314}', '\u{1D315}', '\u{1D316}', '\u{1D317}',
- '\u{1D318}', '\u{1D319}', '\u{1D31A}', '\u{1D31B}', '\u{1D31C}', '\u{1D31D}', '\u{1D31E}', '\u{1D31F}',
- '\u{1D320}', '\u{1D321}', '\u{1D322}', '\u{1D323}', '\u{1D324}', '\u{1D325}', '\u{1D326}', '\u{1D327}',
- '\u{1D328}', '\u{1D329}', '\u{1D32A}', '\u{1D32B}', '\u{1D32C}', '\u{1D32D}', '\u{1D32E}', '\u{1D32F}',
- '\u{1D330}', '\u{1D331}', '\u{1D332}', '\u{1D333}', '\u{1D334}', '\u{1D335}', '\u{1D336}', '\u{1D337}',
- '\u{1D338}', '\u{1D339}', '\u{1D33A}', '\u{1D33B}', '\u{1D33C}', '\u{1D33D}', '\u{1D33E}', '\u{1D33F}',
- '\u{1D340}', '\u{1D341}', '\u{1D342}', '\u{1D343}', '\u{1D344}', '\u{1D345}', '\u{1D346}', '\u{1D347}',
- '\u{1D348}', '\u{1D349}', '\u{1D34A}', '\u{1D34B}', '\u{1D34C}', '\u{1D34D}', '\u{1D34E}', '\u{1D34F}',
- '\u{1D350}', '\u{1D351}', '\u{1D352}', '\u{1D353}', '\u{1D354}', '\u{1D355}', '\u{1D356}', '\u{1D800}',
- '\u{1D801}', '\u{1D802}', '\u{1D803}', '\u{1D804}', '\u{1D805}', '\u{1D806}', '\u{1D807}', '\u{1D808}',
- '\u{1D809}', '\u{1D80A}', '\u{1D80B}', '\u{1D80C}', '\u{1D80D}', '\u{1D80E}', '\u{1D80F}', '\u{1D810}',
- '\u{1D811}', '\u{1D812}', '\u{1D813}', '\u{1D814}', '\u{1D815}', '\u{1D816}', '\u{1D817}', '\u{1D818}',
- '\u{1D819}', '\u{1D81A}', '\u{1D81B}', '\u{1D81C}', '\u{1D81D}', '\u{1D81E}', '\u{1D81F}', '\u{1D820}',
- '\u{1D821}', '\u{1D822}', '\u{1D823}', '\u{1D824}', '\u{1D825}', '\u{1D826}', '\u{1D827}', '\u{1D828}',
- '\u{1D829}', '\u{1D82A}', '\u{1D82B}', '\u{1D82C}', '\u{1D82D}', '\u{1D82E}', '\u{1D82F}', '\u{1D830}',
- '\u{1D831}', '\u{1D832}', '\u{1D833}', '\u{1D834}', '\u{1D835}', '\u{1D836}', '\u{1D837}', '\u{1D838}',
- '\u{1D839}', '\u{1D83A}', '\u{1D83B}', '\u{1D83C}', '\u{1D83D}', '\u{1D83E}', '\u{1D83F}', '\u{1D840}',
- '\u{1D841}', '\u{1D842}', '\u{1D843}', '\u{1D844}', '\u{1D845}', '\u{1D846}', '\u{1D847}', '\u{1D848}',
- '\u{1D849}', '\u{1D84A}', '\u{1D84B}', '\u{1D84C}', '\u{1D84D}', '\u{1D84E}', '\u{1D84F}', '\u{1D850}',
- '\u{1D851}', '\u{1D852}', '\u{1D853}', '\u{1D854}', '\u{1D855}', '\u{1D856}', '\u{1D857}', '\u{1D858}',
- '\u{1D859}', '\u{1D85A}', '\u{1D85B}', '\u{1D85C}', '\u{1D85D}', '\u{1D85E}', '\u{1D85F}', '\u{1D860}',
- '\u{1D861}', '\u{1D862}', '\u{1D863}', '\u{1D864}', '\u{1D865}', '\u{1D866}', '\u{1D867}', '\u{1D868}',
- '\u{1D869}', '\u{1D86A}', '\u{1D86B}', '\u{1D86C}', '\u{1D86D}', '\u{1D86E}', '\u{1D86F}', '\u{1D870}',
- '\u{1D871}', '\u{1D872}', '\u{1D873}', '\u{1D874}', '\u{1D875}', '\u{1D876}', '\u{1D877}', '\u{1D878}',
- '\u{1D879}', '\u{1D87A}', '\u{1D87B}', '\u{1D87C}', '\u{1D87D}', '\u{1D87E}', '\u{1D87F}', '\u{1D880}',
- '\u{1D881}', '\u{1D882}', '\u{1D883}', '\u{1D884}', '\u{1D885}', '\u{1D886}', '\u{1D887}', '\u{1D888}',
- '\u{1D889}', '\u{1D88A}', '\u{1D88B}', '\u{1D88C}', '\u{1D88D}', '\u{1D88E}', '\u{1D88F}', '\u{1D890}',
- '\u{1D891}', '\u{1D892}', '\u{1D893}', '\u{1D894}', '\u{1D895}', '\u{1D896}', '\u{1D897}', '\u{1D898}',
- '\u{1D899}', '\u{1D89A}', '\u{1D89B}', '\u{1D89C}', '\u{1D89D}', '\u{1D89E}', '\u{1D89F}', '\u{1D8A0}',
- '\u{1D8A1}', '\u{1D8A2}', '\u{1D8A3}', '\u{1D8A4}', '\u{1D8A5}', '\u{1D8A6}', '\u{1D8A7}', '\u{1D8A8}',
- '\u{1D8A9}', '\u{1D8AA}', '\u{1D8AB}', '\u{1D8AC}', '\u{1D8AD}', '\u{1D8AE}', '\u{1D8AF}', '\u{1D8B0}',
- '\u{1D8B1}', '\u{1D8B2}', '\u{1D8B3}', '\u{1D8B4}', '\u{1D8B5}', '\u{1D8B6}', '\u{1D8B7}', '\u{1D8B8}',
- '\u{1D8B9}', '\u{1D8BA}', '\u{1D8BB}', '\u{1D8BC}', '\u{1D8BD}', '\u{1D8BE}', '\u{1D8BF}', '\u{1D8C0}',
- '\u{1D8C1}', '\u{1D8C2}', '\u{1D8C3}', '\u{1D8C4}', '\u{1D8C5}', '\u{1D8C6}', '\u{1D8C7}', '\u{1D8C8}',
- '\u{1D8C9}', '\u{1D8CA}', '\u{1D8CB}', '\u{1D8CC}', '\u{1D8CD}', '\u{1D8CE}', '\u{1D8CF}', '\u{1D8D0}',
- '\u{1D8D1}', '\u{1D8D2}', '\u{1D8D3}', '\u{1D8D4}', '\u{1D8D5}', '\u{1D8D6}', '\u{1D8D7}', '\u{1D8D8}',
- '\u{1D8D9}', '\u{1D8DA}', '\u{1D8DB}', '\u{1D8DC}', '\u{1D8DD}', '\u{1D8DE}', '\u{1D8DF}', '\u{1D8E0}',
- '\u{1D8E1}', '\u{1D8E2}', '\u{1D8E3}', '\u{1D8E4}', '\u{1D8E5}', '\u{1D8E6}', '\u{1D8E7}', '\u{1D8E8}',
- '\u{1D8E9}', '\u{1D8EA}', '\u{1D8EB}', '\u{1D8EC}', '\u{1D8ED}', '\u{1D8EE}', '\u{1D8EF}', '\u{1D8F0}',
- '\u{1D8F1}', '\u{1D8F2}', '\u{1D8F3}', '\u{1D8F4}', '\u{1D8F5}', '\u{1D8F6}', '\u{1D8F7}', '\u{1D8F8}',
- '\u{1D8F9}', '\u{1D8FA}', '\u{1D8FB}', '\u{1D8FC}', '\u{1D8FD}', '\u{1D8FE}', '\u{1D8FF}', '\u{1D900}',
- '\u{1D901}', '\u{1D902}', '\u{1D903}', '\u{1D904}', '\u{1D905}', '\u{1D906}', '\u{1D907}', '\u{1D908}',
- '\u{1D909}', '\u{1D90A}', '\u{1D90B}', '\u{1D90C}', '\u{1D90D}', '\u{1D90E}', '\u{1D90F}', '\u{1D910}',
- '\u{1D911}', '\u{1D912}', '\u{1D913}', '\u{1D914}', '\u{1D915}', '\u{1D916}', '\u{1D917}', '\u{1D918}',
- '\u{1D919}', '\u{1D91A}', '\u{1D91B}', '\u{1D91C}', '\u{1D91D}', '\u{1D91E}', '\u{1D91F}', '\u{1D920}',
- '\u{1D921}', '\u{1D922}', '\u{1D923}', '\u{1D924}', '\u{1D925}', '\u{1D926}', '\u{1D927}', '\u{1D928}',
- '\u{1D929}', '\u{1D92A}', '\u{1D92B}', '\u{1D92C}', '\u{1D92D}', '\u{1D92E}', '\u{1D92F}', '\u{1D930}',
- '\u{1D931}', '\u{1D932}', '\u{1D933}', '\u{1D934}', '\u{1D935}', '\u{1D936}', '\u{1D937}', '\u{1D938}',
- '\u{1D939}', '\u{1D93A}', '\u{1D93B}', '\u{1D93C}', '\u{1D93D}', '\u{1D93E}', '\u{1D93F}', '\u{1D940}',
- '\u{1D941}', '\u{1D942}', '\u{1D943}', '\u{1D944}', '\u{1D945}', '\u{1D946}', '\u{1D947}', '\u{1D948}',
- '\u{1D949}', '\u{1D94A}', '\u{1D94B}', '\u{1D94C}', '\u{1D94D}', '\u{1D94E}', '\u{1D94F}', '\u{1D950}',
- '\u{1D951}', '\u{1D952}', '\u{1D953}', '\u{1D954}', '\u{1D955}', '\u{1D956}', '\u{1D957}', '\u{1D958}',
- '\u{1D959}', '\u{1D95A}', '\u{1D95B}', '\u{1D95C}', '\u{1D95D}', '\u{1D95E}', '\u{1D95F}', '\u{1D960}',
- '\u{1D961}', '\u{1D962}', '\u{1D963}', '\u{1D964}', '\u{1D965}', '\u{1D966}', '\u{1D967}', '\u{1D968}',
- '\u{1D969}', '\u{1D96A}', '\u{1D96B}', '\u{1D96C}', '\u{1D96D}', '\u{1D96E}', '\u{1D96F}', '\u{1D970}',
- '\u{1D971}', '\u{1D972}', '\u{1D973}', '\u{1D974}', '\u{1D975}', '\u{1D976}', '\u{1D977}', '\u{1D978}',
- '\u{1D979}', '\u{1D97A}', '\u{1D97B}', '\u{1D97C}', '\u{1D97D}', '\u{1D97E}', '\u{1D97F}', '\u{1D980}',
- '\u{1D981}', '\u{1D982}', '\u{1D983}', '\u{1D984}', '\u{1D985}', '\u{1D986}', '\u{1D987}', '\u{1D988}',
- '\u{1D989}', '\u{1D98A}', '\u{1D98B}', '\u{1D98C}', '\u{1D98D}', '\u{1D98E}', '\u{1D98F}', '\u{1D990}',
- '\u{1D991}', '\u{1D992}', '\u{1D993}', '\u{1D994}', '\u{1D995}', '\u{1D996}', '\u{1D997}', '\u{1D998}',
- '\u{1D999}', '\u{1D99A}', '\u{1D99B}', '\u{1D99C}', '\u{1D99D}', '\u{1D99E}', '\u{1D99F}', '\u{1D9A0}',
- '\u{1D9A1}', '\u{1D9A2}', '\u{1D9A3}', '\u{1D9A4}', '\u{1D9A5}', '\u{1D9A6}', '\u{1D9A7}', '\u{1D9A8}',
- '\u{1D9A9}', '\u{1D9AA}', '\u{1D9AB}', '\u{1D9AC}', '\u{1D9AD}', '\u{1D9AE}', '\u{1D9AF}', '\u{1D9B0}',
- '\u{1D9B1}', '\u{1D9B2}', '\u{1D9B3}', '\u{1D9B4}', '\u{1D9B5}', '\u{1D9B6}', '\u{1D9B7}', '\u{1D9B8}',
- '\u{1D9B9}', '\u{1D9BA}', '\u{1D9BB}', '\u{1D9BC}', '\u{1D9BD}', '\u{1D9BE}', '\u{1D9BF}', '\u{1D9C0}',
- '\u{1D9C1}', '\u{1D9C2}', '\u{1D9C3}', '\u{1D9C4}', '\u{1D9C5}', '\u{1D9C6}', '\u{1D9C7}', '\u{1D9C8}',
- '\u{1D9C9}', '\u{1D9CA}', '\u{1D9CB}', '\u{1D9CC}', '\u{1D9CD}', '\u{1D9CE}', '\u{1D9CF}', '\u{1D9D0}',
- '\u{1D9D1}', '\u{1D9D2}', '\u{1D9D3}', '\u{1D9D4}', '\u{1D9D5}', '\u{1D9D6}', '\u{1D9D7}', '\u{1D9D8}',
- '\u{1D9D9}', '\u{1D9DA}', '\u{1D9DB}', '\u{1D9DC}', '\u{1D9DD}', '\u{1D9DE}', '\u{1D9DF}', '\u{1D9E0}',
- '\u{1D9E1}', '\u{1D9E2}', '\u{1D9E3}', '\u{1D9E4}', '\u{1D9E5}', '\u{1D9E6}', '\u{1D9E7}', '\u{1D9E8}',
- '\u{1D9E9}', '\u{1D9EA}', '\u{1D9EB}', '\u{1D9EC}', '\u{1D9ED}', '\u{1D9EE}', '\u{1D9EF}', '\u{1D9F0}',
- '\u{1D9F1}', '\u{1D9F2}', '\u{1D9F3}', '\u{1D9F4}', '\u{1D9F5}', '\u{1D9F6}', '\u{1D9F7}', '\u{1D9F8}',
- '\u{1D9F9}', '\u{1D9FA}', '\u{1D9FB}', '\u{1D9FC}', '\u{1D9FD}', '\u{1D9FE}', '\u{1D9FF}', '\u{1DA37}',
- '\u{1DA38}', '\u{1DA39}', '\u{1DA3A}', '\u{1DA6D}', '\u{1DA6E}', '\u{1DA6F}', '\u{1DA70}', '\u{1DA71}',
- '\u{1DA72}', '\u{1DA73}', '\u{1DA74}', '\u{1DA76}', '\u{1DA77}', '\u{1DA78}', '\u{1DA79}', '\u{1DA7A}',
- '\u{1DA7B}', '\u{1DA7C}', '\u{1DA7D}', '\u{1DA7E}', '\u{1DA7F}', '\u{1DA80}', '\u{1DA81}', '\u{1DA82}',
- '\u{1DA83}', '\u{1DA85}', '\u{1DA86}', '\u{1F000}', '\u{1F001}', '\u{1F002}', '\u{1F003}', '\u{1F004}',
- '\u{1F005}', '\u{1F006}', '\u{1F007}', '\u{1F008}', '\u{1F009}', '\u{1F00A}', '\u{1F00B}', '\u{1F00C}',
- '\u{1F00D}', '\u{1F00E}', '\u{1F00F}', '\u{1F010}', '\u{1F011}', '\u{1F012}', '\u{1F013}', '\u{1F014}',
- '\u{1F015}', '\u{1F016}', '\u{1F017}', '\u{1F018}', '\u{1F019}', '\u{1F01A}', '\u{1F01B}', '\u{1F01C}',
- '\u{1F01D}', '\u{1F01E}', '\u{1F01F}', '\u{1F020}', '\u{1F021}', '\u{1F022}', '\u{1F023}', '\u{1F024}',
- '\u{1F025}', '\u{1F026}', '\u{1F027}', '\u{1F028}', '\u{1F029}', '\u{1F02A}', '\u{1F02B}', '\u{1F030}',
- '\u{1F031}', '\u{1F032}', '\u{1F033}', '\u{1F034}', '\u{1F035}', '\u{1F036}', '\u{1F037}', '\u{1F038}',
- '\u{1F039}', '\u{1F03A}', '\u{1F03B}', '\u{1F03C}', '\u{1F03D}', '\u{1F03E}', '\u{1F03F}', '\u{1F040}',
- '\u{1F041}', '\u{1F042}', '\u{1F043}', '\u{1F044}', '\u{1F045}', '\u{1F046}', '\u{1F047}', '\u{1F048}',
- '\u{1F049}', '\u{1F04A}', '\u{1F04B}', '\u{1F04C}', '\u{1F04D}', '\u{1F04E}', '\u{1F04F}', '\u{1F050}',
- '\u{1F051}', '\u{1F052}', '\u{1F053}', '\u{1F054}', '\u{1F055}', '\u{1F056}', '\u{1F057}', '\u{1F058}',
- '\u{1F059}', '\u{1F05A}', '\u{1F05B}', '\u{1F05C}', '\u{1F05D}', '\u{1F05E}', '\u{1F05F}', '\u{1F060}',
- '\u{1F061}', '\u{1F062}', '\u{1F063}', '\u{1F064}', '\u{1F065}', '\u{1F066}', '\u{1F067}', '\u{1F068}',
- '\u{1F069}', '\u{1F06A}', '\u{1F06B}', '\u{1F06C}', '\u{1F06D}', '\u{1F06E}', '\u{1F06F}', '\u{1F070}',
- '\u{1F071}', '\u{1F072}', '\u{1F073}', '\u{1F074}', '\u{1F075}', '\u{1F076}', '\u{1F077}', '\u{1F078}',
- '\u{1F079}', '\u{1F07A}', '\u{1F07B}', '\u{1F07C}', '\u{1F07D}', '\u{1F07E}', '\u{1F07F}', '\u{1F080}',
- '\u{1F081}', '\u{1F082}', '\u{1F083}', '\u{1F084}', '\u{1F085}', '\u{1F086}', '\u{1F087}', '\u{1F088}',
- '\u{1F089}', '\u{1F08A}', '\u{1F08B}', '\u{1F08C}', '\u{1F08D}', '\u{1F08E}', '\u{1F08F}', '\u{1F090}',
- '\u{1F091}', '\u{1F092}', '\u{1F093}', '\u{1F0A0}', '\u{1F0A1}', '\u{1F0A2}', '\u{1F0A3}', '\u{1F0A4}',
- '\u{1F0A5}', '\u{1F0A6}', '\u{1F0A7}', '\u{1F0A8}', '\u{1F0A9}', '\u{1F0AA}', '\u{1F0AB}', '\u{1F0AC}',
- '\u{1F0AD}', '\u{1F0AE}', '\u{1F0B1}', '\u{1F0B2}', '\u{1F0B3}', '\u{1F0B4}', '\u{1F0B5}', '\u{1F0B6}',
- '\u{1F0B7}', '\u{1F0B8}', '\u{1F0B9}', '\u{1F0BA}', '\u{1F0BB}', '\u{1F0BC}', '\u{1F0BD}', '\u{1F0BE}',
- '\u{1F0BF}', '\u{1F0C1}', '\u{1F0C2}', '\u{1F0C3}', '\u{1F0C4}', '\u{1F0C5}', '\u{1F0C6}', '\u{1F0C7}',
- '\u{1F0C8}', '\u{1F0C9}', '\u{1F0CA}', '\u{1F0CB}', '\u{1F0CC}', '\u{1F0CD}', '\u{1F0CE}', '\u{1F0CF}',
- '\u{1F0D1}', '\u{1F0D2}', '\u{1F0D3}', '\u{1F0D4}', '\u{1F0D5}', '\u{1F0D6}', '\u{1F0D7}', '\u{1F0D8}',
- '\u{1F0D9}', '\u{1F0DA}', '\u{1F0DB}', '\u{1F0DC}', '\u{1F0DD}', '\u{1F0DE}', '\u{1F0DF}', '\u{1F0E0}',
- '\u{1F0E1}', '\u{1F0E2}', '\u{1F0E3}', '\u{1F0E4}', '\u{1F0E5}', '\u{1F0E6}', '\u{1F0E7}', '\u{1F0E8}',
- '\u{1F0E9}', '\u{1F0EA}', '\u{1F0EB}', '\u{1F0EC}', '\u{1F0ED}', '\u{1F0EE}', '\u{1F0EF}', '\u{1F0F0}',
- '\u{1F0F1}', '\u{1F0F2}', '\u{1F0F3}', '\u{1F0F4}', '\u{1F0F5}', '\u{1F110}', '\u{1F111}', '\u{1F112}',
- '\u{1F113}', '\u{1F114}', '\u{1F115}', '\u{1F116}', '\u{1F117}', '\u{1F118}', '\u{1F119}', '\u{1F11A}',
- '\u{1F11B}', '\u{1F11C}', '\u{1F11D}', '\u{1F11E}', '\u{1F11F}', '\u{1F120}', '\u{1F121}', '\u{1F122}',
- '\u{1F123}', '\u{1F124}', '\u{1F125}', '\u{1F126}', '\u{1F127}', '\u{1F128}', '\u{1F129}', '\u{1F12A}',
- '\u{1F12B}', '\u{1F12C}', '\u{1F12D}', '\u{1F12E}', '\u{1F130}', '\u{1F131}', '\u{1F132}', '\u{1F133}',
- '\u{1F134}', '\u{1F135}', '\u{1F136}', '\u{1F137}', '\u{1F138}', '\u{1F139}', '\u{1F13A}', '\u{1F13B}',
- '\u{1F13C}', '\u{1F13D}', '\u{1F13E}', '\u{1F13F}', '\u{1F140}', '\u{1F141}', '\u{1F142}', '\u{1F143}',
- '\u{1F144}', '\u{1F145}', '\u{1F146}', '\u{1F147}', '\u{1F148}', '\u{1F149}', '\u{1F14A}', '\u{1F14B}',
- '\u{1F14C}', '\u{1F14D}', '\u{1F14E}', '\u{1F14F}', '\u{1F150}', '\u{1F151}', '\u{1F152}', '\u{1F153}',
- '\u{1F154}', '\u{1F155}', '\u{1F156}', '\u{1F157}', '\u{1F158}', '\u{1F159}', '\u{1F15A}', '\u{1F15B}',
- '\u{1F15C}', '\u{1F15D}', '\u{1F15E}', '\u{1F15F}', '\u{1F160}', '\u{1F161}', '\u{1F162}', '\u{1F163}',
- '\u{1F164}', '\u{1F165}', '\u{1F166}', '\u{1F167}', '\u{1F168}', '\u{1F169}', '\u{1F16A}', '\u{1F16B}',
- '\u{1F170}', '\u{1F171}', '\u{1F172}', '\u{1F173}', '\u{1F174}', '\u{1F175}', '\u{1F176}', '\u{1F177}',
- '\u{1F178}', '\u{1F179}', '\u{1F17A}', '\u{1F17B}', '\u{1F17C}', '\u{1F17D}', '\u{1F17E}', '\u{1F17F}',
- '\u{1F180}', '\u{1F181}', '\u{1F182}', '\u{1F183}', '\u{1F184}', '\u{1F185}', '\u{1F186}', '\u{1F187}',
- '\u{1F188}', '\u{1F189}', '\u{1F18A}', '\u{1F18B}', '\u{1F18C}', '\u{1F18D}', '\u{1F18E}', '\u{1F18F}',
- '\u{1F190}', '\u{1F191}', '\u{1F192}', '\u{1F193}', '\u{1F194}', '\u{1F195}', '\u{1F196}', '\u{1F197}',
- '\u{1F198}', '\u{1F199}', '\u{1F19A}', '\u{1F1E6}', '\u{1F1E7}', '\u{1F1E8}', '\u{1F1E9}', '\u{1F1EA}',
- '\u{1F1EB}', '\u{1F1EC}', '\u{1F1ED}', '\u{1F1EE}', '\u{1F1EF}', '\u{1F1F0}', '\u{1F1F1}', '\u{1F1F2}',
- '\u{1F1F3}', '\u{1F1F4}', '\u{1F1F5}', '\u{1F1F6}', '\u{1F1F7}', '\u{1F1F8}', '\u{1F1F9}', '\u{1F1FA}',
- '\u{1F1FB}', '\u{1F1FC}', '\u{1F1FD}', '\u{1F1FE}', '\u{1F1FF}', '\u{1F200}', '\u{1F201}', '\u{1F202}',
- '\u{1F210}', '\u{1F211}', '\u{1F212}', '\u{1F213}', '\u{1F214}', '\u{1F215}', '\u{1F216}', '\u{1F217}',
- '\u{1F218}', '\u{1F219}', '\u{1F21A}', '\u{1F21B}', '\u{1F21C}', '\u{1F21D}', '\u{1F21E}', '\u{1F21F}',
- '\u{1F220}', '\u{1F221}', '\u{1F222}', '\u{1F223}', '\u{1F224}', '\u{1F225}', '\u{1F226}', '\u{1F227}',
- '\u{1F228}', '\u{1F229}', '\u{1F22A}', '\u{1F22B}', '\u{1F22C}', '\u{1F22D}', '\u{1F22E}', '\u{1F22F}',
- '\u{1F230}', '\u{1F231}', '\u{1F232}', '\u{1F233}', '\u{1F234}', '\u{1F235}', '\u{1F236}', '\u{1F237}',
- '\u{1F238}', '\u{1F239}', '\u{1F23A}', '\u{1F240}', '\u{1F241}', '\u{1F242}', '\u{1F243}', '\u{1F244}',
- '\u{1F245}', '\u{1F246}', '\u{1F247}', '\u{1F248}', '\u{1F250}', '\u{1F251}', '\u{1F300}', '\u{1F301}',
- '\u{1F302}', '\u{1F303}', '\u{1F304}', '\u{1F305}', '\u{1F306}', '\u{1F307}', '\u{1F308}', '\u{1F309}',
- '\u{1F30A}', '\u{1F30B}', '\u{1F30C}', '\u{1F30D}', '\u{1F30E}', '\u{1F30F}', '\u{1F310}', '\u{1F311}',
- '\u{1F312}', '\u{1F313}', '\u{1F314}', '\u{1F315}', '\u{1F316}', '\u{1F317}', '\u{1F318}', '\u{1F319}',
- '\u{1F31A}', '\u{1F31B}', '\u{1F31C}', '\u{1F31D}', '\u{1F31E}', '\u{1F31F}', '\u{1F320}', '\u{1F321}',
- '\u{1F322}', '\u{1F323}', '\u{1F324}', '\u{1F325}', '\u{1F326}', '\u{1F327}', '\u{1F328}', '\u{1F329}',
- '\u{1F32A}', '\u{1F32B}', '\u{1F32C}', '\u{1F32D}', '\u{1F32E}', '\u{1F32F}', '\u{1F330}', '\u{1F331}',
- '\u{1F332}', '\u{1F333}', '\u{1F334}', '\u{1F335}', '\u{1F336}', '\u{1F337}', '\u{1F338}', '\u{1F339}',
- '\u{1F33A}', '\u{1F33B}', '\u{1F33C}', '\u{1F33D}', '\u{1F33E}', '\u{1F33F}', '\u{1F340}', '\u{1F341}',
- '\u{1F342}', '\u{1F343}', '\u{1F344}', '\u{1F345}', '\u{1F346}', '\u{1F347}', '\u{1F348}', '\u{1F349}',
- '\u{1F34A}', '\u{1F34B}', '\u{1F34C}', '\u{1F34D}', '\u{1F34E}', '\u{1F34F}', '\u{1F350}', '\u{1F351}',
- '\u{1F352}', '\u{1F353}', '\u{1F354}', '\u{1F355}', '\u{1F356}', '\u{1F357}', '\u{1F358}', '\u{1F359}',
- '\u{1F35A}', '\u{1F35B}', '\u{1F35C}', '\u{1F35D}', '\u{1F35E}', '\u{1F35F}', '\u{1F360}', '\u{1F361}',
- '\u{1F362}', '\u{1F363}', '\u{1F364}', '\u{1F365}', '\u{1F366}', '\u{1F367}', '\u{1F368}', '\u{1F369}',
- '\u{1F36A}', '\u{1F36B}', '\u{1F36C}', '\u{1F36D}', '\u{1F36E}', '\u{1F36F}', '\u{1F370}', '\u{1F371}',
- '\u{1F372}', '\u{1F373}', '\u{1F374}', '\u{1F375}', '\u{1F376}', '\u{1F377}', '\u{1F378}', '\u{1F379}',
- '\u{1F37A}', '\u{1F37B}', '\u{1F37C}', '\u{1F37D}', '\u{1F37E}', '\u{1F37F}', '\u{1F380}', '\u{1F381}',
- '\u{1F382}', '\u{1F383}', '\u{1F384}', '\u{1F385}', '\u{1F386}', '\u{1F387}', '\u{1F388}', '\u{1F389}',
- '\u{1F38A}', '\u{1F38B}', '\u{1F38C}', '\u{1F38D}', '\u{1F38E}', '\u{1F38F}', '\u{1F390}', '\u{1F391}',
- '\u{1F392}', '\u{1F393}', '\u{1F394}', '\u{1F395}', '\u{1F396}', '\u{1F397}', '\u{1F398}', '\u{1F399}',
- '\u{1F39A}', '\u{1F39B}', '\u{1F39C}', '\u{1F39D}', '\u{1F39E}', '\u{1F39F}', '\u{1F3A0}', '\u{1F3A1}',
- '\u{1F3A2}', '\u{1F3A3}', '\u{1F3A4}', '\u{1F3A5}', '\u{1F3A6}', '\u{1F3A7}', '\u{1F3A8}', '\u{1F3A9}',
- '\u{1F3AA}', '\u{1F3AB}', '\u{1F3AC}', '\u{1F3AD}', '\u{1F3AE}', '\u{1F3AF}', '\u{1F3B0}', '\u{1F3B1}',
- '\u{1F3B2}', '\u{1F3B3}', '\u{1F3B4}', '\u{1F3B5}', '\u{1F3B6}', '\u{1F3B7}', '\u{1F3B8}', '\u{1F3B9}',
- '\u{1F3BA}', '\u{1F3BB}', '\u{1F3BC}', '\u{1F3BD}', '\u{1F3BE}', '\u{1F3BF}', '\u{1F3C0}', '\u{1F3C1}',
- '\u{1F3C2}', '\u{1F3C3}', '\u{1F3C4}', '\u{1F3C5}', '\u{1F3C6}', '\u{1F3C7}', '\u{1F3C8}', '\u{1F3C9}',
- '\u{1F3CA}', '\u{1F3CB}', '\u{1F3CC}', '\u{1F3CD}', '\u{1F3CE}', '\u{1F3CF}', '\u{1F3D0}', '\u{1F3D1}',
- '\u{1F3D2}', '\u{1F3D3}', '\u{1F3D4}', '\u{1F3D5}', '\u{1F3D6}', '\u{1F3D7}', '\u{1F3D8}', '\u{1F3D9}',
- '\u{1F3DA}', '\u{1F3DB}', '\u{1F3DC}', '\u{1F3DD}', '\u{1F3DE}', '\u{1F3DF}', '\u{1F3E0}', '\u{1F3E1}',
- '\u{1F3E2}', '\u{1F3E3}', '\u{1F3E4}', '\u{1F3E5}', '\u{1F3E6}', '\u{1F3E7}', '\u{1F3E8}', '\u{1F3E9}',
- '\u{1F3EA}', '\u{1F3EB}', '\u{1F3EC}', '\u{1F3ED}', '\u{1F3EE}', '\u{1F3EF}', '\u{1F3F0}', '\u{1F3F1}',
- '\u{1F3F2}', '\u{1F3F3}', '\u{1F3F4}', '\u{1F3F5}', '\u{1F3F6}', '\u{1F3F7}', '\u{1F3F8}', '\u{1F3F9}',
- '\u{1F3FA}', '\u{1F400}', '\u{1F401}', '\u{1F402}', '\u{1F403}', '\u{1F404}', '\u{1F405}', '\u{1F406}',
- '\u{1F407}', '\u{1F408}', '\u{1F409}', '\u{1F40A}', '\u{1F40B}', '\u{1F40C}', '\u{1F40D}', '\u{1F40E}',
- '\u{1F40F}', '\u{1F410}', '\u{1F411}', '\u{1F412}', '\u{1F413}', '\u{1F414}', '\u{1F415}', '\u{1F416}',
- '\u{1F417}', '\u{1F418}', '\u{1F419}', '\u{1F41A}', '\u{1F41B}', '\u{1F41C}', '\u{1F41D}', '\u{1F41E}',
- '\u{1F41F}', '\u{1F420}', '\u{1F421}', '\u{1F422}', '\u{1F423}', '\u{1F424}', '\u{1F425}', '\u{1F426}',
- '\u{1F427}', '\u{1F428}', '\u{1F429}', '\u{1F42A}', '\u{1F42B}', '\u{1F42C}', '\u{1F42D}', '\u{1F42E}',
- '\u{1F42F}', '\u{1F430}', '\u{1F431}', '\u{1F432}', '\u{1F433}', '\u{1F434}', '\u{1F435}', '\u{1F436}',
- '\u{1F437}', '\u{1F438}', '\u{1F439}', '\u{1F43A}', '\u{1F43B}', '\u{1F43C}', '\u{1F43D}', '\u{1F43E}',
- '\u{1F43F}', '\u{1F440}', '\u{1F441}', '\u{1F442}', '\u{1F443}', '\u{1F444}', '\u{1F445}', '\u{1F446}',
- '\u{1F447}', '\u{1F448}', '\u{1F449}', '\u{1F44A}', '\u{1F44B}', '\u{1F44C}', '\u{1F44D}', '\u{1F44E}',
- '\u{1F44F}', '\u{1F450}', '\u{1F451}', '\u{1F452}', '\u{1F453}', '\u{1F454}', '\u{1F455}', '\u{1F456}',
- '\u{1F457}', '\u{1F458}', '\u{1F459}', '\u{1F45A}', '\u{1F45B}', '\u{1F45C}', '\u{1F45D}', '\u{1F45E}',
- '\u{1F45F}', '\u{1F460}', '\u{1F461}', '\u{1F462}', '\u{1F463}', '\u{1F464}', '\u{1F465}', '\u{1F466}',
- '\u{1F467}', '\u{1F468}', '\u{1F469}', '\u{1F46A}', '\u{1F46B}', '\u{1F46C}', '\u{1F46D}', '\u{1F46E}',
- '\u{1F46F}', '\u{1F470}', '\u{1F471}', '\u{1F472}', '\u{1F473}', '\u{1F474}', '\u{1F475}', '\u{1F476}',
- '\u{1F477}', '\u{1F478}', '\u{1F479}', '\u{1F47A}', '\u{1F47B}', '\u{1F47C}', '\u{1F47D}', '\u{1F47E}',
- '\u{1F47F}', '\u{1F480}', '\u{1F481}', '\u{1F482}', '\u{1F483}', '\u{1F484}', '\u{1F485}', '\u{1F486}',
- '\u{1F487}', '\u{1F488}', '\u{1F489}', '\u{1F48A}', '\u{1F48B}', '\u{1F48C}', '\u{1F48D}', '\u{1F48E}',
- '\u{1F48F}', '\u{1F490}', '\u{1F491}', '\u{1F492}', '\u{1F493}', '\u{1F494}', '\u{1F495}', '\u{1F496}',
- '\u{1F497}', '\u{1F498}', '\u{1F499}', '\u{1F49A}', '\u{1F49B}', '\u{1F49C}', '\u{1F49D}', '\u{1F49E}',
- '\u{1F49F}', '\u{1F4A0}', '\u{1F4A1}', '\u{1F4A2}', '\u{1F4A3}', '\u{1F4A4}', '\u{1F4A5}', '\u{1F4A6}',
- '\u{1F4A7}', '\u{1F4A8}', '\u{1F4A9}', '\u{1F4AA}', '\u{1F4AB}', '\u{1F4AC}', '\u{1F4AD}', '\u{1F4AE}',
- '\u{1F4AF}', '\u{1F4B0}', '\u{1F4B1}', '\u{1F4B2}', '\u{1F4B3}', '\u{1F4B4}', '\u{1F4B5}', '\u{1F4B6}',
- '\u{1F4B7}', '\u{1F4B8}', '\u{1F4B9}', '\u{1F4BA}', '\u{1F4BB}', '\u{1F4BC}', '\u{1F4BD}', '\u{1F4BE}',
- '\u{1F4BF}', '\u{1F4C0}', '\u{1F4C1}', '\u{1F4C2}', '\u{1F4C3}', '\u{1F4C4}', '\u{1F4C5}', '\u{1F4C6}',
- '\u{1F4C7}', '\u{1F4C8}', '\u{1F4C9}', '\u{1F4CA}', '\u{1F4CB}', '\u{1F4CC}', '\u{1F4CD}', '\u{1F4CE}',
- '\u{1F4CF}', '\u{1F4D0}', '\u{1F4D1}', '\u{1F4D2}', '\u{1F4D3}', '\u{1F4D4}', '\u{1F4D5}', '\u{1F4D6}',
- '\u{1F4D7}', '\u{1F4D8}', '\u{1F4D9}', '\u{1F4DA}', '\u{1F4DB}', '\u{1F4DC}', '\u{1F4DD}', '\u{1F4DE}',
- '\u{1F4DF}', '\u{1F4E0}', '\u{1F4E1}', '\u{1F4E2}', '\u{1F4E3}', '\u{1F4E4}', '\u{1F4E5}', '\u{1F4E6}',
- '\u{1F4E7}', '\u{1F4E8}', '\u{1F4E9}', '\u{1F4EA}', '\u{1F4EB}', '\u{1F4EC}', '\u{1F4ED}', '\u{1F4EE}',
- '\u{1F4EF}', '\u{1F4F0}', '\u{1F4F1}', '\u{1F4F2}', '\u{1F4F3}', '\u{1F4F4}', '\u{1F4F5}', '\u{1F4F6}',
- '\u{1F4F7}', '\u{1F4F8}', '\u{1F4F9}', '\u{1F4FA}', '\u{1F4FB}', '\u{1F4FC}', '\u{1F4FD}', '\u{1F4FE}',
- '\u{1F4FF}', '\u{1F500}', '\u{1F501}', '\u{1F502}', '\u{1F503}', '\u{1F504}', '\u{1F505}', '\u{1F506}',
- '\u{1F507}', '\u{1F508}', '\u{1F509}', '\u{1F50A}', '\u{1F50B}', '\u{1F50C}', '\u{1F50D}', '\u{1F50E}',
- '\u{1F50F}', '\u{1F510}', '\u{1F511}', '\u{1F512}', '\u{1F513}', '\u{1F514}', '\u{1F515}', '\u{1F516}',
- '\u{1F517}', '\u{1F518}', '\u{1F519}', '\u{1F51A}', '\u{1F51B}', '\u{1F51C}', '\u{1F51D}', '\u{1F51E}',
- '\u{1F51F}', '\u{1F520}', '\u{1F521}', '\u{1F522}', '\u{1F523}', '\u{1F524}', '\u{1F525}', '\u{1F526}',
- '\u{1F527}', '\u{1F528}', '\u{1F529}', '\u{1F52A}', '\u{1F52B}', '\u{1F52C}', '\u{1F52D}', '\u{1F52E}',
- '\u{1F52F}', '\u{1F530}', '\u{1F531}', '\u{1F532}', '\u{1F533}', '\u{1F534}', '\u{1F535}', '\u{1F536}',
- '\u{1F537}', '\u{1F538}', '\u{1F539}', '\u{1F53A}', '\u{1F53B}', '\u{1F53C}', '\u{1F53D}', '\u{1F53E}',
- '\u{1F53F}', '\u{1F540}', '\u{1F541}', '\u{1F542}', '\u{1F543}', '\u{1F544}', '\u{1F545}', '\u{1F546}',
- '\u{1F547}', '\u{1F548}', '\u{1F549}', '\u{1F54A}', '\u{1F54B}', '\u{1F54C}', '\u{1F54D}', '\u{1F54E}',
- '\u{1F54F}', '\u{1F550}', '\u{1F551}', '\u{1F552}', '\u{1F553}', '\u{1F554}', '\u{1F555}', '\u{1F556}',
- '\u{1F557}', '\u{1F558}', '\u{1F559}', '\u{1F55A}', '\u{1F55B}', '\u{1F55C}', '\u{1F55D}', '\u{1F55E}',
- '\u{1F55F}', '\u{1F560}', '\u{1F561}', '\u{1F562}', '\u{1F563}', '\u{1F564}', '\u{1F565}', '\u{1F566}',
- '\u{1F567}', '\u{1F568}', '\u{1F569}', '\u{1F56A}', '\u{1F56B}', '\u{1F56C}', '\u{1F56D}', '\u{1F56E}',
- '\u{1F56F}', '\u{1F570}', '\u{1F571}', '\u{1F572}', '\u{1F573}', '\u{1F574}', '\u{1F575}', '\u{1F576}',
- '\u{1F577}', '\u{1F578}', '\u{1F579}', '\u{1F57B}', '\u{1F57C}', '\u{1F57D}', '\u{1F57E}', '\u{1F57F}',
- '\u{1F580}', '\u{1F581}', '\u{1F582}', '\u{1F583}', '\u{1F584}', '\u{1F585}', '\u{1F586}', '\u{1F587}',
- '\u{1F588}', '\u{1F589}', '\u{1F58A}', '\u{1F58B}', '\u{1F58C}', '\u{1F58D}', '\u{1F58E}', '\u{1F58F}',
- '\u{1F590}', '\u{1F591}', '\u{1F592}', '\u{1F593}', '\u{1F594}', '\u{1F595}', '\u{1F596}', '\u{1F597}',
- '\u{1F598}', '\u{1F599}', '\u{1F59A}', '\u{1F59B}', '\u{1F59C}', '\u{1F59D}', '\u{1F59E}', '\u{1F59F}',
- '\u{1F5A0}', '\u{1F5A1}', '\u{1F5A2}', '\u{1F5A3}', '\u{1F5A5}', '\u{1F5A6}', '\u{1F5A7}', '\u{1F5A8}',
- '\u{1F5A9}', '\u{1F5AA}', '\u{1F5AB}', '\u{1F5AC}', '\u{1F5AD}', '\u{1F5AE}', '\u{1F5AF}', '\u{1F5B0}',
- '\u{1F5B1}', '\u{1F5B2}', '\u{1F5B3}', '\u{1F5B4}', '\u{1F5B5}', '\u{1F5B6}', '\u{1F5B7}', '\u{1F5B8}',
- '\u{1F5B9}', '\u{1F5BA}', '\u{1F5BB}', '\u{1F5BC}', '\u{1F5BD}', '\u{1F5BE}', '\u{1F5BF}', '\u{1F5C0}',
- '\u{1F5C1}', '\u{1F5C2}', '\u{1F5C3}', '\u{1F5C4}', '\u{1F5C5}', '\u{1F5C6}', '\u{1F5C7}', '\u{1F5C8}',
- '\u{1F5C9}', '\u{1F5CA}', '\u{1F5CB}', '\u{1F5CC}', '\u{1F5CD}', '\u{1F5CE}', '\u{1F5CF}', '\u{1F5D0}',
- '\u{1F5D1}', '\u{1F5D2}', '\u{1F5D3}', '\u{1F5D4}', '\u{1F5D5}', '\u{1F5D6}', '\u{1F5D7}', '\u{1F5D8}',
- '\u{1F5D9}', '\u{1F5DA}', '\u{1F5DB}', '\u{1F5DC}', '\u{1F5DD}', '\u{1F5DE}', '\u{1F5DF}', '\u{1F5E0}',
- '\u{1F5E1}', '\u{1F5E2}', '\u{1F5E3}', '\u{1F5E4}', '\u{1F5E5}', '\u{1F5E6}', '\u{1F5E7}', '\u{1F5E8}',
- '\u{1F5E9}', '\u{1F5EA}', '\u{1F5EB}', '\u{1F5EC}', '\u{1F5ED}', '\u{1F5EE}', '\u{1F5EF}', '\u{1F5F0}',
- '\u{1F5F1}', '\u{1F5F2}', '\u{1F5F3}', '\u{1F5F4}', '\u{1F5F5}', '\u{1F5F6}', '\u{1F5F7}', '\u{1F5F8}',
- '\u{1F5F9}', '\u{1F5FA}', '\u{1F5FB}', '\u{1F5FC}', '\u{1F5FD}', '\u{1F5FE}', '\u{1F5FF}', '\u{1F600}',
- '\u{1F601}', '\u{1F602}', '\u{1F603}', '\u{1F604}', '\u{1F605}', '\u{1F606}', '\u{1F607}', '\u{1F608}',
- '\u{1F609}', '\u{1F60A}', '\u{1F60B}', '\u{1F60C}', '\u{1F60D}', '\u{1F60E}', '\u{1F60F}', '\u{1F610}',
- '\u{1F611}', '\u{1F612}', '\u{1F613}', '\u{1F614}', '\u{1F615}', '\u{1F616}', '\u{1F617}', '\u{1F618}',
- '\u{1F619}', '\u{1F61A}', '\u{1F61B}', '\u{1F61C}', '\u{1F61D}', '\u{1F61E}', '\u{1F61F}', '\u{1F620}',
- '\u{1F621}', '\u{1F622}', '\u{1F623}', '\u{1F624}', '\u{1F625}', '\u{1F626}', '\u{1F627}', '\u{1F628}',
- '\u{1F629}', '\u{1F62A}', '\u{1F62B}', '\u{1F62C}', '\u{1F62D}', '\u{1F62E}', '\u{1F62F}', '\u{1F630}',
- '\u{1F631}', '\u{1F632}', '\u{1F633}', '\u{1F634}', '\u{1F635}', '\u{1F636}', '\u{1F637}', '\u{1F638}',
- '\u{1F639}', '\u{1F63A}', '\u{1F63B}', '\u{1F63C}', '\u{1F63D}', '\u{1F63E}', '\u{1F63F}', '\u{1F640}',
- '\u{1F641}', '\u{1F642}', '\u{1F643}', '\u{1F644}', '\u{1F645}', '\u{1F646}', '\u{1F647}', '\u{1F648}',
- '\u{1F649}', '\u{1F64A}', '\u{1F64B}', '\u{1F64C}', '\u{1F64D}', '\u{1F64E}', '\u{1F64F}', '\u{1F650}',
- '\u{1F651}', '\u{1F652}', '\u{1F653}', '\u{1F654}', '\u{1F655}', '\u{1F656}', '\u{1F657}', '\u{1F658}',
- '\u{1F659}', '\u{1F65A}', '\u{1F65B}', '\u{1F65C}', '\u{1F65D}', '\u{1F65E}', '\u{1F65F}', '\u{1F660}',
- '\u{1F661}', '\u{1F662}', '\u{1F663}', '\u{1F664}', '\u{1F665}', '\u{1F666}', '\u{1F667}', '\u{1F668}',
- '\u{1F669}', '\u{1F66A}', '\u{1F66B}', '\u{1F66C}', '\u{1F66D}', '\u{1F66E}', '\u{1F66F}', '\u{1F670}',
- '\u{1F671}', '\u{1F672}', '\u{1F673}', '\u{1F674}', '\u{1F675}', '\u{1F676}', '\u{1F677}', '\u{1F678}',
- '\u{1F679}', '\u{1F67A}', '\u{1F67B}', '\u{1F67C}', '\u{1F67D}', '\u{1F67E}', '\u{1F67F}', '\u{1F680}',
- '\u{1F681}', '\u{1F682}', '\u{1F683}', '\u{1F684}', '\u{1F685}', '\u{1F686}', '\u{1F687}', '\u{1F688}',
- '\u{1F689}', '\u{1F68A}', '\u{1F68B}', '\u{1F68C}', '\u{1F68D}', '\u{1F68E}', '\u{1F68F}', '\u{1F690}',
- '\u{1F691}', '\u{1F692}', '\u{1F693}', '\u{1F694}', '\u{1F695}', '\u{1F696}', '\u{1F697}', '\u{1F698}',
- '\u{1F699}', '\u{1F69A}', '\u{1F69B}', '\u{1F69C}', '\u{1F69D}', '\u{1F69E}', '\u{1F69F}', '\u{1F6A0}',
- '\u{1F6A1}', '\u{1F6A2}', '\u{1F6A3}', '\u{1F6A4}', '\u{1F6A5}', '\u{1F6A6}', '\u{1F6A7}', '\u{1F6A8}',
- '\u{1F6A9}', '\u{1F6AA}', '\u{1F6AB}', '\u{1F6AC}', '\u{1F6AD}', '\u{1F6AE}', '\u{1F6AF}', '\u{1F6B0}',
- '\u{1F6B1}', '\u{1F6B2}', '\u{1F6B3}', '\u{1F6B4}', '\u{1F6B5}', '\u{1F6B6}', '\u{1F6B7}', '\u{1F6B8}',
- '\u{1F6B9}', '\u{1F6BA}', '\u{1F6BB}', '\u{1F6BC}', '\u{1F6BD}', '\u{1F6BE}', '\u{1F6BF}', '\u{1F6C0}',
- '\u{1F6C1}', '\u{1F6C2}', '\u{1F6C3}', '\u{1F6C4}', '\u{1F6C5}', '\u{1F6C6}', '\u{1F6C7}', '\u{1F6C8}',
- '\u{1F6C9}', '\u{1F6CA}', '\u{1F6CB}', '\u{1F6CC}', '\u{1F6CD}', '\u{1F6CE}', '\u{1F6CF}', '\u{1F6D0}',
- '\u{1F6E0}', '\u{1F6E1}', '\u{1F6E2}', '\u{1F6E3}', '\u{1F6E4}', '\u{1F6E5}', '\u{1F6E6}', '\u{1F6E7}',
- '\u{1F6E8}', '\u{1F6E9}', '\u{1F6EA}', '\u{1F6EB}', '\u{1F6EC}', '\u{1F6F0}', '\u{1F6F1}', '\u{1F6F2}',
- '\u{1F6F3}', '\u{1F700}', '\u{1F701}', '\u{1F702}', '\u{1F703}', '\u{1F704}', '\u{1F705}', '\u{1F706}',
- '\u{1F707}', '\u{1F708}', '\u{1F709}', '\u{1F70A}', '\u{1F70B}', '\u{1F70C}', '\u{1F70D}', '\u{1F70E}',
- '\u{1F70F}', '\u{1F710}', '\u{1F711}', '\u{1F712}', '\u{1F713}', '\u{1F714}', '\u{1F715}', '\u{1F716}',
- '\u{1F717}', '\u{1F718}', '\u{1F719}', '\u{1F71A}', '\u{1F71B}', '\u{1F71C}', '\u{1F71D}', '\u{1F71E}',
- '\u{1F71F}', '\u{1F720}', '\u{1F721}', '\u{1F722}', '\u{1F723}', '\u{1F724}', '\u{1F725}', '\u{1F726}',
- '\u{1F727}', '\u{1F728}', '\u{1F729}', '\u{1F72A}', '\u{1F72B}', '\u{1F72C}', '\u{1F72D}', '\u{1F72E}',
- '\u{1F72F}', '\u{1F730}', '\u{1F731}', '\u{1F732}', '\u{1F733}', '\u{1F734}', '\u{1F735}', '\u{1F736}',
- '\u{1F737}', '\u{1F738}', '\u{1F739}', '\u{1F73A}', '\u{1F73B}', '\u{1F73C}', '\u{1F73D}', '\u{1F73E}',
- '\u{1F73F}', '\u{1F740}', '\u{1F741}', '\u{1F742}', '\u{1F743}', '\u{1F744}', '\u{1F745}', '\u{1F746}',
- '\u{1F747}', '\u{1F748}', '\u{1F749}', '\u{1F74A}', '\u{1F74B}', '\u{1F74C}', '\u{1F74D}', '\u{1F74E}',
- '\u{1F74F}', '\u{1F750}', '\u{1F751}', '\u{1F752}', '\u{1F753}', '\u{1F754}', '\u{1F755}', '\u{1F756}',
- '\u{1F757}', '\u{1F758}', '\u{1F759}', '\u{1F75A}', '\u{1F75B}', '\u{1F75C}', '\u{1F75D}', '\u{1F75E}',
- '\u{1F75F}', '\u{1F760}', '\u{1F761}', '\u{1F762}', '\u{1F763}', '\u{1F764}', '\u{1F765}', '\u{1F766}',
- '\u{1F767}', '\u{1F768}', '\u{1F769}', '\u{1F76A}', '\u{1F76B}', '\u{1F76C}', '\u{1F76D}', '\u{1F76E}',
- '\u{1F76F}', '\u{1F770}', '\u{1F771}', '\u{1F772}', '\u{1F773}', '\u{1F780}', '\u{1F781}', '\u{1F782}',
- '\u{1F783}', '\u{1F784}', '\u{1F785}', '\u{1F786}', '\u{1F787}', '\u{1F788}', '\u{1F789}', '\u{1F78A}',
- '\u{1F78B}', '\u{1F78C}', '\u{1F78D}', '\u{1F78E}', '\u{1F78F}', '\u{1F790}', '\u{1F791}', '\u{1F792}',
- '\u{1F793}', '\u{1F794}', '\u{1F795}', '\u{1F796}', '\u{1F797}', '\u{1F798}', '\u{1F799}', '\u{1F79A}',
- '\u{1F79B}', '\u{1F79C}', '\u{1F79D}', '\u{1F79E}', '\u{1F79F}', '\u{1F7A0}', '\u{1F7A1}', '\u{1F7A2}',
- '\u{1F7A3}', '\u{1F7A4}', '\u{1F7A5}', '\u{1F7A6}', '\u{1F7A7}', '\u{1F7A8}', '\u{1F7A9}', '\u{1F7AA}',
- '\u{1F7AB}', '\u{1F7AC}', '\u{1F7AD}', '\u{1F7AE}', '\u{1F7AF}', '\u{1F7B0}', '\u{1F7B1}', '\u{1F7B2}',
- '\u{1F7B3}', '\u{1F7B4}', '\u{1F7B5}', '\u{1F7B6}', '\u{1F7B7}', '\u{1F7B8}', '\u{1F7B9}', '\u{1F7BA}',
- '\u{1F7BB}', '\u{1F7BC}', '\u{1F7BD}', '\u{1F7BE}', '\u{1F7BF}', '\u{1F7C0}', '\u{1F7C1}', '\u{1F7C2}',
- '\u{1F7C3}', '\u{1F7C4}', '\u{1F7C5}', '\u{1F7C6}', '\u{1F7C7}', '\u{1F7C8}', '\u{1F7C9}', '\u{1F7CA}',
- '\u{1F7CB}', '\u{1F7CC}', '\u{1F7CD}', '\u{1F7CE}', '\u{1F7CF}', '\u{1F7D0}', '\u{1F7D1}', '\u{1F7D2}',
- '\u{1F7D3}', '\u{1F7D4}', '\u{1F800}', '\u{1F801}', '\u{1F802}', '\u{1F803}', '\u{1F804}', '\u{1F805}',
- '\u{1F806}', '\u{1F807}', '\u{1F808}', '\u{1F809}', '\u{1F80A}', '\u{1F80B}', '\u{1F810}', '\u{1F811}',
- '\u{1F812}', '\u{1F813}', '\u{1F814}', '\u{1F815}', '\u{1F816}', '\u{1F817}', '\u{1F818}', '\u{1F819}',
- '\u{1F81A}', '\u{1F81B}', '\u{1F81C}', '\u{1F81D}', '\u{1F81E}', '\u{1F81F}', '\u{1F820}', '\u{1F821}',
- '\u{1F822}', '\u{1F823}', '\u{1F824}', '\u{1F825}', '\u{1F826}', '\u{1F827}', '\u{1F828}', '\u{1F829}',
- '\u{1F82A}', '\u{1F82B}', '\u{1F82C}', '\u{1F82D}', '\u{1F82E}', '\u{1F82F}', '\u{1F830}', '\u{1F831}',
- '\u{1F832}', '\u{1F833}', '\u{1F834}', '\u{1F835}', '\u{1F836}', '\u{1F837}', '\u{1F838}', '\u{1F839}',
- '\u{1F83A}', '\u{1F83B}', '\u{1F83C}', '\u{1F83D}', '\u{1F83E}', '\u{1F83F}', '\u{1F840}', '\u{1F841}',
- '\u{1F842}', '\u{1F843}', '\u{1F844}', '\u{1F845}', '\u{1F846}', '\u{1F847}', '\u{1F850}', '\u{1F851}',
- '\u{1F852}', '\u{1F853}', '\u{1F854}', '\u{1F855}', '\u{1F856}', '\u{1F857}', '\u{1F858}', '\u{1F859}',
- '\u{1F860}', '\u{1F861}', '\u{1F862}', '\u{1F863}', '\u{1F864}', '\u{1F865}', '\u{1F866}', '\u{1F867}',
- '\u{1F868}', '\u{1F869}', '\u{1F86A}', '\u{1F86B}', '\u{1F86C}', '\u{1F86D}', '\u{1F86E}', '\u{1F86F}',
- '\u{1F870}', '\u{1F871}', '\u{1F872}', '\u{1F873}', '\u{1F874}', '\u{1F875}', '\u{1F876}', '\u{1F877}',
- '\u{1F878}', '\u{1F879}', '\u{1F87A}', '\u{1F87B}', '\u{1F87C}', '\u{1F87D}', '\u{1F87E}', '\u{1F87F}',
- '\u{1F880}', '\u{1F881}', '\u{1F882}', '\u{1F883}', '\u{1F884}', '\u{1F885}', '\u{1F886}', '\u{1F887}',
- '\u{1F890}', '\u{1F891}', '\u{1F892}', '\u{1F893}', '\u{1F894}', '\u{1F895}', '\u{1F896}', '\u{1F897}',
- '\u{1F898}', '\u{1F899}', '\u{1F89A}', '\u{1F89B}', '\u{1F89C}', '\u{1F89D}', '\u{1F89E}', '\u{1F89F}',
- '\u{1F8A0}', '\u{1F8A1}', '\u{1F8A2}', '\u{1F8A3}', '\u{1F8A4}', '\u{1F8A5}', '\u{1F8A6}', '\u{1F8A7}',
- '\u{1F8A8}', '\u{1F8A9}', '\u{1F8AA}', '\u{1F8AB}', '\u{1F8AC}', '\u{1F8AD}', '\u{1F910}', '\u{1F911}',
- '\u{1F912}', '\u{1F913}', '\u{1F914}', '\u{1F915}', '\u{1F916}', '\u{1F917}', '\u{1F918}', '\u{1F980}',
- '\u{1F981}', '\u{1F982}', '\u{1F983}', '\u{1F984}', '\u{1F9C0}'];
-
diff --git a/vendor/walkdir/.cargo-checksum.json b/vendor/walkdir/.cargo-checksum.json
index d90dfa135..dba6351b9 100644
--- a/vendor/walkdir/.cargo-checksum.json
+++ b/vendor/walkdir/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.toml":"ca0ae974da5ac27e19ee2644ad445056f121f74ece668103c48f6a9efbc09c71","LICENSE-MIT":"0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f","README.md":"5fc28c8211fe74af2889a2eb859127f8d543e0f94be80659c307105ed831f84b","UNLICENSE":"7e12e5df4bae12cb21581ba157ced20e1986a0508dd10d0e8a4ab9a4cf94e85c","compare/nftw.c":"6b900b0ac78ce8ece1995f834b194fa14d87d744cabba8f475f0e10b21722c56","compare/walk.py":"d49e26d0b8b2b201d00f2f46bf1f9db46f873c27332da679c9a7adbbf54462d2","rustfmt.toml":"1ca600239a27401c4a43f363cf3f38183a212affc1f31bff3ae93234bbaec228","src/dent.rs":"ca573f4533370a09851579f5940f7cd9bd121b2f30ec51d29a40afdce984683b","src/error.rs":"ba58bf6f59d196567435d4b66699a928cc237fc7c8df01dc37ab822509905b7c","src/lib.rs":"d964635f63cd73487c10a4e32440c30d9d25c43baca02d2f5313b48cd9a40e1c","src/tests/mod.rs":"bbce9174bfdbb4a81a9000f702be056b63b439cb8f1bcac64b8569368627d56d","src/tests/recursive.rs":"1afd9bb86cb04e8fead4d1e075efe00f6e16d7cf17bb3014f8c94e8adf869bea","src/tests/util.rs":"ca72ef96f82bb87d8c93d13d581ebb65efcd53fffa87097a84437acecbc30faa","src/util.rs":"14e0da711cad4825ead21446cd61a1444fd49bab853a8a239d8cb74b2caab351"},"package":"36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"} \ No newline at end of file
+{"files":{"COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.toml":"e7c4db380e4ac3135c94dd92324d64c89b988d0b62d1aa41c9d2b5448b0e9f70","LICENSE-MIT":"0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f","README.md":"5fc28c8211fe74af2889a2eb859127f8d543e0f94be80659c307105ed831f84b","UNLICENSE":"7e12e5df4bae12cb21581ba157ced20e1986a0508dd10d0e8a4ab9a4cf94e85c","compare/nftw.c":"6b900b0ac78ce8ece1995f834b194fa14d87d744cabba8f475f0e10b21722c56","compare/walk.py":"d49e26d0b8b2b201d00f2f46bf1f9db46f873c27332da679c9a7adbbf54462d2","rustfmt.toml":"1ca600239a27401c4a43f363cf3f38183a212affc1f31bff3ae93234bbaec228","src/dent.rs":"ca573f4533370a09851579f5940f7cd9bd121b2f30ec51d29a40afdce984683b","src/error.rs":"ba58bf6f59d196567435d4b66699a928cc237fc7c8df01dc37ab822509905b7c","src/lib.rs":"cee55b7b95cc8e8613ee47aae6a7ee47d3b6258e690128ff69f0d4da1feed374","src/tests/mod.rs":"bbce9174bfdbb4a81a9000f702be056b63b439cb8f1bcac64b8569368627d56d","src/tests/recursive.rs":"b6305e7cc9f905ce6b7328ac9fb5b07e5a73fa549c0b84ef890fb442d1bbcb7c","src/tests/util.rs":"ca72ef96f82bb87d8c93d13d581ebb65efcd53fffa87097a84437acecbc30faa","src/util.rs":"14e0da711cad4825ead21446cd61a1444fd49bab853a8a239d8cb74b2caab351"},"package":"d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"} \ No newline at end of file
diff --git a/vendor/walkdir/Cargo.toml b/vendor/walkdir/Cargo.toml
index 7db926327..4c29a20f2 100644
--- a/vendor/walkdir/Cargo.toml
+++ b/vendor/walkdir/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2018"
name = "walkdir"
-version = "2.3.3"
+version = "2.4.0"
authors = ["Andrew Gallant <jamslam@gmail.com>"]
exclude = [
"/ci/*",
diff --git a/vendor/walkdir/src/lib.rs b/vendor/walkdir/src/lib.rs
index 4d41515df..edf702e4a 100644
--- a/vendor/walkdir/src/lib.rs
+++ b/vendor/walkdir/src/lib.rs
@@ -237,6 +237,7 @@ pub struct WalkDir {
struct WalkDirOptions {
follow_links: bool,
+ follow_root_links: bool,
max_open: usize,
min_depth: usize,
max_depth: usize,
@@ -265,6 +266,7 @@ impl fmt::Debug for WalkDirOptions {
};
f.debug_struct("WalkDirOptions")
.field("follow_links", &self.follow_links)
+ .field("follow_root_link", &self.follow_root_links)
.field("max_open", &self.max_open)
.field("min_depth", &self.min_depth)
.field("max_depth", &self.max_depth)
@@ -287,6 +289,7 @@ impl WalkDir {
WalkDir {
opts: WalkDirOptions {
follow_links: false,
+ follow_root_links: true,
max_open: 10,
min_depth: 0,
max_depth: ::std::usize::MAX,
@@ -344,6 +347,25 @@ impl WalkDir {
self
}
+ /// Follow symbolic links if these are the root of the traversal.
+ /// By default, this is enabled.
+ ///
+ /// When `yes` is `true`, symbolic links on root paths are followed
+ /// which is effective if the symbolic link points to a directory.
+ /// If a symbolic link is broken or is involved in a loop, an error is yielded
+ /// as the first entry of the traversal.
+ ///
+ /// When enabled, the yielded [`DirEntry`] values represent the target of
+ /// the link while the path corresponds to the link. See the [`DirEntry`]
+ /// type for more details, and all future entries will be contained within
+ /// the resolved directory behind the symbolic link of the root path.
+ ///
+ /// [`DirEntry`]: struct.DirEntry.html
+ pub fn follow_root_links(mut self, yes: bool) -> Self {
+ self.opts.follow_root_links = yes;
+ self
+ }
+
/// Set the maximum number of simultaneously open file descriptors used
/// by the iterator.
///
@@ -830,7 +852,10 @@ impl IntoIter {
} else {
itry!(self.push(&dent));
}
- } else if dent.depth() == 0 && dent.file_type().is_symlink() {
+ } else if dent.depth() == 0
+ && dent.file_type().is_symlink()
+ && self.opts.follow_root_links
+ {
// As a special case, if we are processing a root entry, then we
// always follow it even if it's a symlink and follow_links is
// false. We are careful to not let this change the semantics of
diff --git a/vendor/walkdir/src/tests/recursive.rs b/vendor/walkdir/src/tests/recursive.rs
index 4119f461d..e415b9182 100644
--- a/vendor/walkdir/src/tests/recursive.rs
+++ b/vendor/walkdir/src/tests/recursive.rs
@@ -383,7 +383,76 @@ fn sym_root_file_follow() {
}
#[test]
-fn sym_root_dir_nofollow() {
+fn broken_sym_root_dir_nofollow_and_root_nofollow() {
+ let dir = Dir::tmp();
+ dir.symlink_dir("broken", "a-link");
+
+ let wd = WalkDir::new(dir.join("a-link"))
+ .follow_links(false)
+ .follow_root_links(false);
+ let r = dir.run_recursive(wd);
+ let ents = r.sorted_ents();
+ assert_eq!(ents.len(), 1);
+ let link = &ents[0];
+ assert_eq!(dir.join("a-link"), link.path());
+ assert!(link.path_is_symlink());
+}
+
+#[test]
+fn broken_sym_root_dir_follow_and_root_nofollow() {
+ let dir = Dir::tmp();
+ dir.symlink_dir("broken", "a-link");
+
+ let wd = WalkDir::new(dir.join("a-link"))
+ .follow_links(true)
+ .follow_root_links(false);
+ let r = dir.run_recursive(wd);
+ assert!(r.sorted_ents().is_empty());
+ assert_eq!(
+ r.errs().len(),
+ 1,
+ "broken symlink cannot be traversed - they are followed if symlinks are followed"
+ );
+}
+
+#[test]
+fn broken_sym_root_dir_root_is_always_followed() {
+ let dir = Dir::tmp();
+ dir.symlink_dir("broken", "a-link");
+
+ for follow_symlinks in &[true, false] {
+ let wd =
+ WalkDir::new(dir.join("a-link")).follow_links(*follow_symlinks);
+ let r = dir.run_recursive(wd);
+ assert!(r.sorted_ents().is_empty());
+ assert_eq!(
+ r.errs().len(),
+ 1,
+ "broken symlink in roots cannot be traversed, they are always followed"
+ );
+ }
+}
+
+#[test]
+fn sym_root_dir_nofollow_root_nofollow() {
+ let dir = Dir::tmp();
+ dir.mkdirp("a");
+ dir.symlink_dir("a", "a-link");
+ dir.touch("a/zzz");
+
+ let wd = WalkDir::new(dir.join("a-link")).follow_root_links(false);
+ let r = dir.run_recursive(wd);
+ r.assert_no_errors();
+
+ let ents = r.sorted_ents();
+ assert_eq!(1, ents.len());
+ let link = &ents[0];
+ assert_eq!(dir.join("a-link"), link.path());
+ assert_eq!(0, link.depth());
+}
+
+#[test]
+fn sym_root_dir_nofollow_root_follow() {
let dir = Dir::tmp();
dir.mkdirp("a");
dir.symlink_dir("a", "a-link");
diff --git a/vendor/winnow-0.4.7/.cargo-checksum.json b/vendor/winnow-0.4.7/.cargo-checksum.json
new file mode 100644
index 000000000..e803852ff
--- /dev/null
+++ b/vendor/winnow-0.4.7/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.lock":"a97963c07ee8bdbd7558cb03e7d5bb0c6a93d881782e67ab2e976b87889c2279","Cargo.toml":"ba95bb8977ffd618b27807e589aa2945401af603f4288322137510f0c46ab20f","LICENSE-MIT":"cb5aedb296c5246d1f22e9099f925a65146f9f0d6b4eebba97fd27a6cdbbab2d","README.md":"b66d0e430d8a5f5391f1f51b2d7959c3881fca59fdf76a075129591b396c1c62","benches/contains_token.rs":"66fbeef9130234573216a624c8753731aa517d8ca0aa5d26eff8b70706151ef2","benches/number.rs":"3007cf0c1f49c81e758bedf08dba7e273b7a17b6b5e4e6f8f09914e2d1e4e962","examples/arithmetic/bench.rs":"bee163fdb9573f53d24c95dbc187770efdaf17bf39917b91204b8ea38edab888","examples/arithmetic/main.rs":"aab0793c96add893bbaacea331bc05de8f6b59e47c5bccca67bfd30e924cd790","examples/arithmetic/parser.rs":"b298b04a8950d56f31653923a12aabca0f026a7e203b23778f6f29f053d7f2a4","examples/arithmetic/parser_ast.rs":"bb3f1a2721baf3f4eed22d996c97eb1bed4ea360295e286894d25a22465d127e","examples/css/main.rs":"0d74980404a118cc54871f4ad32bd9acc3aa5c0d6502760155399f66a57d4a0e","examples/css/parser.rs":"5716c470d41e3386a54e87e2d20e00bbe46cd121956c9bd28fa7aaca3a8549fb","examples/custom_error.rs":"b855f72e7ef33192f6be8ee761f59bc82249958f5f9279aa8ae6fafd0e97c711","examples/http/bench.rs":"b6d3e9e5833b53ac58f8336617cc42a2f3f4c5e5ce88feb23184fcdbb36843f6","examples/http/main.rs":"95d3c73953cd76ea462d886ade2ab34e987239bae3abb0349c434fb01b80467d","examples/http/parser.rs":"488ec918ac75307abe4f4a34f6fb119b317783b630fb2b6f0ed9075a962c4725","examples/http/parser_streaming.rs":"aa66a7383c440d229a60faf988bb6eacad04f2561fdb37f589cfb81bf3f5ccb2","examples/ini/bench.rs":"ddd4390f78cf9e44ec926caa5e15b673ac6da0faf35bb9939d42ffda7bbd07fd","examples/ini/main.rs":"d771aa8aae11e53f4f5453ac39e10ae3a1de210408dfd31ca7d1ce58d14c3fb9","examples/ini/parser.rs":"7e234914780ead1a8ac888075676831f6fd894004af01922eb5c370988b4b64f","examples/ini/parser_str.rs":"f0518209cb56650e30a6b0302cb3b4b06957206c89641b8bf7c5a4136e9913aa","examples/iterator.rs":"43e96c9e0a16911b51ba21092a05818485722b0c2d309e89a613b6d98096cff3","examples/json/bench.rs":"4fe77a79a9442c98eae9b0f808771763c71f61a191972955872dc2ebbfad8cfe","examples/json/json.rs":"48cf6c114098113c9767bebe430682f55f7c1a227e6486131ca58c00770711f2","examples/json/main.rs":"60c2be63c432f2c5da5c0c98ab7b2dfeae1851aa533dad67129dc5e0fa367130","examples/json/parser.rs":"b0e6198cb853ecf3f5b4e57bbabf7a5c12d7398572c1b317d12cb2740e85082b","examples/json/parser_dispatch.rs":"f8cff2899232d9634bb62cd7de6a1bfbea6db5f95ee16ac25fa387b51fb814a8","examples/json/parser_partial.rs":"457cc9f22596fece1aff9d7600960fa6c2683b32bd4339cc4546af8bfd820dba","examples/json_iterator.rs":"09066dc71939b9d92fec2bbec2e2df014a4a5444902fc38c510802df308d6155","examples/ndjson/example.ndjson":"c44c130731008bca76181348d40f46b183577949b5a4d229e0e1a56e1e405e5d","examples/ndjson/main.rs":"63ff8ad2311c1b10e436d9c4c5088493f6ed3359ba422028f388d1a5f9c94e66","examples/ndjson/parser.rs":"8cf135f44416dc90bb29b941fd026f47744d07dfa16f19912da944d5f70afa4f","examples/s_expression/main.rs":"5a2de0b477807c7d6ab8bb72579f03692e8f5ea89d5b6f3a8342cfdbe4d84b96","examples/s_expression/parser.rs":"f1cfe3a063aadce5e0969e8530778b9af4a20e345ed58cb38a10ce5b140ed421","examples/string/main.rs":"e6362f957d532d41bcd96476e55ac4c253eb04fa25ee88b48d872661a46a5bb5","examples/string/parser.rs":"a6cf23ab6adbc0a604074ef6763965f42195b96df21013479e0f47717bb33bac","src/_topic/arithmetic.rs":"94920a9572ed6deac58abb337a7be57b93cf37440f0cc3eaf514cb9ad9b9e077","src/_topic/error.rs":"e13463570e97b0ca2acea320fa721127b6e393328e798456dc2bbb6730b27a36","src/_topic/fromstr.rs":"01abdab296cd30067ae5f508b2b21ebe97c0571ace58e7817876eb2110e8d23a","src/_topic/http.rs":"19b9ec78a031fe5b3086fb34d04d6c13308c50b6e7bfe30229f5b682d3605ac8","src/_topic/ini.rs":"b2b04d48eac3158f4e26ee9dce748a699d02acaa0b12ae8d54421cad0fdc4ad7","src/_topic/json.rs":"bde39ee6b1c5fab2d2da480822b737674aed877f92c3f748d6932bec313b5661","src/_topic/language.rs":"231098363ae7d8f3b57ea7909298dd7ba680b8ad14a2d989e219ad928b9e6c7d","src/_topic/mod.rs":"7e871bc9f8838ab2b7bf35db6800e17a19bf8132675e305087cb6dd1e841cbec","src/_topic/partial.rs":"5b795d1a8f2fa5a378c4974f9862acd479392a645b93c5dc4da2c4b1384c0d0d","src/_topic/performance.rs":"3ce7c556c748d2b0298529c298ae70a921f4c7b1c7a5060abc334e64255a67a0","src/_topic/s_expression.rs":"6ca9a22a5c3344e120421f2ab353a1e822777aebfa1faa0acffc9632f7668cb2","src/_topic/stream.rs":"c156314777598d9facf0a2067854b3108d6e1a68f5bff67900075c29543ec547","src/_topic/why.rs":"5b425ff59f5bb0bbab87e63e4126161819a209fd9b316288ed3c58084012e5d7","src/_tutorial/chapter_0.rs":"2dd082fa014e8075e13524ce6a9ecf29adc380518764c487729d46e45463dc03","src/_tutorial/chapter_1.rs":"ed13f206d07fccec07ea6d2b14944f6620e7bbcc4b0fcec120f0015dc147a4fb","src/_tutorial/chapter_2.rs":"49f5a2935fa929da3ad0546c6232f693ce3abb99eb55734e08337a33559a4971","src/_tutorial/chapter_3.rs":"4be266c404276afb3dcfb421f2487bd633e8fee2dfa17fea064e758b7be579a4","src/_tutorial/chapter_4.rs":"f54201a391f081370c24ad755e34601c6d97fca6d3cd47463ae6bd4b29fdbe89","src/_tutorial/chapter_5.rs":"173f991399c6bb85bd9d09b60dd345ffa8d69fec355f2a889d949f1d9ee3d3ed","src/_tutorial/chapter_6.rs":"9b8e2e876cf544a82cdeb95e3ff4e7f14e9fb96c838626c44163e6ee7d9ba541","src/_tutorial/chapter_7.rs":"d00fe6adfe2ce74d63ff210148f1cbe9a7c02c22d2be6dbc48f009bcb1342aa2","src/_tutorial/mod.rs":"b69bb758ffcfbc1fa0c698ffc11d840ea6de3f8fa402ef8e170f3a0d6c3e190a","src/ascii/mod.rs":"cfcd370866aa68642d72f37b9e24256e8721860976afb1155d1661487c620241","src/ascii/tests.rs":"eee86d9cb6571f31ab8614a3aee38ea6c09845847718baa52a142baf090ce113","src/binary/bits/mod.rs":"353cb31b93085d75197266a28d7c0d8496fe7c259efd34da62eefcf7e31d48c7","src/binary/bits/tests.rs":"e558e1004932eae8fefad5fbce57fe9f95d7b42301e2e9abf305d85ce9d97838","src/binary/mod.rs":"886a425efbdfd0e3cda75790de0cfcaf4d111bdbcc6725468b4d48f837d453ee","src/binary/tests.rs":"f3987c943b2a99a439757d5afcd1e32e53dd0fa0a600bdd357a46929e8c67db9","src/bits.rs":"443351cafebab9dffa12d48a2780f8b9b8fe478b733f9a701c00a8319d2bf1c8","src/branch.rs":"86ba05809ec3712b4287d9bdb9c17c1c4267d2469805e9e26df39bd3e1c95224","src/bytes.rs":"6cc436c0142b7d5e022360a1174ef990971fbc1c30ac9f68dcba018db76a4993","src/character.rs":"c38a6c25ef7527a1164f1a871683bf09f5dc1de0effade3dfb258a05278a8cd3","src/combinator/branch.rs":"93cadba2e6a4be556c3b2df246095497e3652deb74b7c8d85055786b171c3d3c","src/combinator/core.rs":"659d8fb088ae7c6979580c5ec3c8d5d44787bc9974f3f9d70360d07a26157011","src/combinator/mod.rs":"03d3864d577c615b89d0266877090ee67422f83301ee130833c5dff8ff88767e","src/combinator/multi.rs":"f03fb501cabc55c0b35ace6e5b235c44d55f309da40e5fec162460abf50b7522","src/combinator/parser.rs":"f7e68c6bee62e515f79170a09850e2607f7c4c7fa6d9f4c701e85586caf1aae3","src/combinator/sequence.rs":"3a6e731d3ff3eab3fdfa31e4c81da63322446a614c56628a41c3765fb8d56e27","src/combinator/tests.rs":"7c2a843c85ef60a0fe958d47476d244049a0e077eb3f4593c2bd6a641c7864c4","src/error.rs":"97304e10f0804f92f9cec8fe514cddd9f53c688b3a101f2213d3f720ce2df0a5","src/lib.rs":"ea6b62c854fb9b1003002a34cf9cbfc9a535b88a0f8384a8ae22ac1dcc61605b","src/macros.rs":"485028be925e19eb7093c331982a483f2f0d16c5c0cb08b3395fa16805902705","src/multi.rs":"deaaae8788b3770771d77eb8235334363c2980a23c1ad5ee9d309dddaefd5c5f","src/number.rs":"17930f91d90f1331c8cade11ee310518fa9580152d32b68a03533649477203cd","src/parser.rs":"f5a231c07fb1801180ab35c0cac419ac957ecdbfa3ce355d15e25d7e7ac17e6b","src/sequence.rs":"5d3b618229289ad96c241f14a85b5fd4e940a03903cebb6ef551ddb664d2e861","src/stream/impls.rs":"99f69fdb8c32ad1f759bcc414ebfd2428eac5997887ce2b6946a2fcfcd174082","src/stream/mod.rs":"bbad16a321f14b1008b92b3ad28340f76e27163e0d84e4c7d7cc471fc4cbdc5d","src/stream/tests.rs":"24bbd9d6fbafc85e29effb7d5ec93afff3cebca7e0f4cf2a992f0245c3aafa40","src/token/mod.rs":"7e3adab3d657ada43ea8b7da64cc956c0c546df282f98227a74c8450c08cda7b","src/token/tests.rs":"831affa4e8531d62c324ae23da9b40547b09831862c5226a9538b7748a7acb31","src/trace/internals.rs":"c3446be9bea69ecafb17f7094d5312e6b963e90180694eb85127c9096aee3d63","src/trace/mod.rs":"718a42ef6142edc2648439e04ba75a769f296af60be84ff46f0b16c37a757201"},"package":"ca0ace3845f0d96209f0375e6d367e3eb87eb65d27d445bdc9f1843a26f39448"} \ No newline at end of file
diff --git a/vendor/winnow-0.4.7/Cargo.lock b/vendor/winnow-0.4.7/Cargo.lock
new file mode 100644
index 000000000..9d2e6f42b
--- /dev/null
+++ b/vendor/winnow-0.4.7/Cargo.lock
@@ -0,0 +1,1353 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "anstyle"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "80c697cc33851b02ab0c26b2e8a211684fbe627ff1cc506131f35026dd7686dd"
+
+[[package]]
+name = "anstyle-parse"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7d1bb534e9efed14f3e5f44e7dd1a4f709384023a4165199a4241e18dff0116"
+dependencies = [
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle-stream"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb854bd007661547402bb1aeee4a00eda2cc9775afb43c9a5158f8706f448a2a"
+dependencies = [
+ "anstyle",
+ "anstyle-parse",
+ "anstyle-wincon",
+ "concolor-override",
+ "concolor-query 0.3.3",
+ "is-terminal",
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle-wincon"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3127af6145b149f3287bb9a0d10ad9c5692dba8c53ad48285e5bec4063834fa"
+dependencies = [
+ "anstyle",
+ "windows-sys 0.45.0",
+]
+
+[[package]]
+name = "atty"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+dependencies = [
+ "hermit-abi 0.1.19",
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
+[[package]]
+name = "bit-set"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1"
+dependencies = [
+ "bit-vec",
+]
+
+[[package]]
+name = "bit-vec"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "block-buffer"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "bstr"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223"
+dependencies = [
+ "lazy_static",
+ "memchr",
+ "regex-automata",
+ "serde",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1ad822118d20d2c234f427000d5acc36eabe1e29a348c89b63dd60b13f28e5d"
+
+[[package]]
+name = "bytecount"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c"
+
+[[package]]
+name = "byteorder"
+version = "1.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+
+[[package]]
+name = "cast"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
+
+[[package]]
+name = "cc"
+version = "1.0.79"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "circular"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0fc239e0f6cb375d2402d48afb92f76f5404fd1df208a41930ec81eda078bea"
+
+[[package]]
+name = "clap"
+version = "2.34.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
+dependencies = [
+ "bitflags",
+ "textwrap",
+ "unicode-width",
+]
+
+[[package]]
+name = "concolor"
+version = "0.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "318d6c16e73b3a900eb212ad6a82fc7d298c5ab8184c7a9998646455bc474a16"
+dependencies = [
+ "bitflags",
+ "concolor-query 0.1.0",
+ "is-terminal",
+]
+
+[[package]]
+name = "concolor-override"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a855d4a1978dc52fb0536a04d384c2c0c1aa273597f08b77c8c4d3b2eec6037f"
+
+[[package]]
+name = "concolor-query"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82a90734b3d5dcf656e7624cca6bce9c3a90ee11f900e80141a7427ccfb3d317"
+
+[[package]]
+name = "concolor-query"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88d11d52c3d7ca2e6d0040212be9e4dbbcd78b6447f535b6b561f449427944cf"
+dependencies = [
+ "windows-sys 0.45.0",
+]
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "criterion"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b01d6de93b2b6c65e17c634a26653a29d107b3c98c607c765bf38d041531cd8f"
+dependencies = [
+ "atty",
+ "cast",
+ "clap",
+ "criterion-plot",
+ "csv",
+ "itertools",
+ "lazy_static",
+ "num-traits",
+ "oorandom",
+ "plotters",
+ "rayon",
+ "regex",
+ "serde",
+ "serde_cbor",
+ "serde_derive",
+ "serde_json",
+ "tinytemplate",
+ "walkdir",
+]
+
+[[package]]
+name = "criterion-plot"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2673cc8207403546f45f5fd319a974b1e6983ad1a3ee7e6041650013be041876"
+dependencies = [
+ "cast",
+ "itertools",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521"
+dependencies = [
+ "cfg-if",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc"
+dependencies = [
+ "cfg-if",
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348"
+dependencies = [
+ "autocfg",
+ "cfg-if",
+ "crossbeam-utils",
+ "memoffset",
+ "scopeguard",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "typenum",
+]
+
+[[package]]
+name = "csv"
+version = "1.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1"
+dependencies = [
+ "bstr",
+ "csv-core",
+ "itoa 0.4.8",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "csv-core"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "ctor"
+version = "0.1.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096"
+dependencies = [
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "diff"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
+
+[[package]]
+name = "digest"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f"
+dependencies = [
+ "block-buffer",
+ "crypto-common",
+]
+
+[[package]]
+name = "doc-comment"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
+
+[[package]]
+name = "either"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797"
+
+[[package]]
+name = "errno"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1"
+dependencies = [
+ "errno-dragonfly",
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "errno-dragonfly"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+dependencies = [
+ "cc",
+ "libc",
+]
+
+[[package]]
+name = "escargot"
+version = "0.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f5584ba17d7ab26a8a7284f13e5bd196294dd2f2d79773cff29b9e9edef601a6"
+dependencies = [
+ "log",
+ "once_cell",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "fastrand"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499"
+dependencies = [
+ "instant",
+]
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "generic-array"
+version = "0.14.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi",
+]
+
+[[package]]
+name = "half"
+version = "1.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
+
+[[package]]
+name = "handlebars"
+version = "4.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "035ef95d03713f2c347a72547b7cd38cbc9af7cd51e6099fb62d586d4a6dee3a"
+dependencies = [
+ "log",
+ "pest",
+ "pest_derive",
+ "serde",
+ "serde_json",
+ "thiserror",
+]
+
+[[package]]
+name = "hermit-abi"
+version = "0.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "hermit-abi"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286"
+
+[[package]]
+name = "instant"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "io-lifetimes"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1abeb7a0dd0f8181267ff8adc397075586500b81b28a73e8a0208b00fc170fb3"
+dependencies = [
+ "libc",
+ "windows-sys 0.45.0",
+]
+
+[[package]]
+name = "is-terminal"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21b6b32576413a8e69b90e952e4a026476040d81017b80445deda5f2d3921857"
+dependencies = [
+ "hermit-abi 0.3.1",
+ "io-lifetimes",
+ "rustix",
+ "windows-sys 0.45.0",
+]
+
+[[package]]
+name = "itertools"
+version = "0.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "0.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
+
+[[package]]
+name = "itoa"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc"
+
+[[package]]
+name = "js-sys"
+version = "0.3.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+[[package]]
+name = "lexopt"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baff4b617f7df3d896f97fe922b64817f6cd9a756bb81d40f8883f2f66dcb401"
+
+[[package]]
+name = "libc"
+version = "0.2.139"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4"
+
+[[package]]
+name = "log"
+version = "0.4.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "memchr"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+
+[[package]]
+name = "memoffset"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "normalize-line-endings"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
+
+[[package]]
+name = "num-traits"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
+dependencies = [
+ "hermit-abi 0.1.19",
+ "libc",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1"
+
+[[package]]
+name = "oorandom"
+version = "11.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
+
+[[package]]
+name = "os_pipe"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a53dbb20faf34b16087a931834cba2d7a73cc74af2b7ef345a4c8324e2409a12"
+dependencies = [
+ "libc",
+ "windows-sys 0.45.0",
+]
+
+[[package]]
+name = "output_vt100"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "pest"
+version = "2.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "028accff104c4e513bad663bbcd2ad7cfd5304144404c31ed0a77ac103d00660"
+dependencies = [
+ "thiserror",
+ "ucd-trie",
+]
+
+[[package]]
+name = "pest_derive"
+version = "2.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2ac3922aac69a40733080f53c1ce7f91dcf57e1a5f6c52f421fadec7fbdc4b69"
+dependencies = [
+ "pest",
+ "pest_generator",
+]
+
+[[package]]
+name = "pest_generator"
+version = "2.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d06646e185566b5961b4058dd107e0a7f56e77c3f484549fb119867773c0f202"
+dependencies = [
+ "pest",
+ "pest_meta",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "pest_meta"
+version = "2.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6f60b2ba541577e2a0c307c8f39d1439108120eb7903adeb6497fa880c59616"
+dependencies = [
+ "once_cell",
+ "pest",
+ "sha2",
+]
+
+[[package]]
+name = "plotters"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
+dependencies = [
+ "num-traits",
+ "plotters-backend",
+ "plotters-svg",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "plotters-backend"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
+
+[[package]]
+name = "plotters-svg"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
+dependencies = [
+ "plotters-backend",
+]
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
+
+[[package]]
+name = "pretty_assertions"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a25e9bcb20aa780fd0bb16b72403a9064d6b3f22f026946029acb941a50af755"
+dependencies = [
+ "ctor",
+ "diff",
+ "output_vt100",
+ "yansi",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.46"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "proptest"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e0d9cc07f18492d879586c92b485def06bc850da3118075cd45d50e9c95b0e5"
+dependencies = [
+ "bit-set",
+ "bitflags",
+ "byteorder",
+ "lazy_static",
+ "num-traits",
+ "quick-error 2.0.1",
+ "rand",
+ "rand_chacha",
+ "rand_xorshift",
+ "regex-syntax",
+ "rusty-fork",
+ "tempfile",
+]
+
+[[package]]
+name = "quick-error"
+version = "1.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
+
+[[package]]
+name = "quick-error"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
+
+[[package]]
+name = "quick-xml"
+version = "0.23.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "11bafc859c6815fbaffbbbf4229ecb767ac913fecb27f9ad4343662e9ef099ea"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "rand_xorshift"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f"
+dependencies = [
+ "rand_core",
+]
+
+[[package]]
+name = "rayon"
+version = "1.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d"
+dependencies = [
+ "autocfg",
+ "crossbeam-deque",
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f"
+dependencies = [
+ "crossbeam-channel",
+ "crossbeam-deque",
+ "crossbeam-utils",
+ "num_cpus",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+dependencies = [
+ "bitflags",
+]
+
+[[package]]
+name = "regex"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
+dependencies = [
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
+
+[[package]]
+name = "regex-syntax"
+version = "0.6.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
+
+[[package]]
+name = "remove_dir_all"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "rustix"
+version = "0.36.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f43abb88211988493c1abb44a70efa56ff0ce98f233b7b276146f1f3f7ba9644"
+dependencies = [
+ "bitflags",
+ "errno",
+ "io-lifetimes",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.45.0",
+]
+
+[[package]]
+name = "rusty-fork"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f"
+dependencies = [
+ "fnv",
+ "quick-error 1.2.3",
+ "tempfile",
+ "wait-timeout",
+]
+
+[[package]]
+name = "ryu"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "scopeguard"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+
+[[package]]
+name = "serde"
+version = "1.0.145"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_cbor"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5"
+dependencies = [
+ "half",
+ "serde",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.145"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.86"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41feea4228a6f1cd09ec7a3593a682276702cd67b5273544757dae23c096f074"
+dependencies = [
+ "itoa 1.0.4",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "sha2"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
+name = "similar"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "420acb44afdae038210c99e69aae24109f32f15500aa708e81d46c9f29d55fcf"
+
+[[package]]
+name = "snapbox"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7329b93bf53198ce2aecd1b08a3752306cef932483521d9361ce87b40559031c"
+dependencies = [
+ "concolor",
+ "escargot",
+ "normalize-line-endings",
+ "similar",
+ "snapbox-macros",
+ "yansi",
+]
+
+[[package]]
+name = "snapbox-macros"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "485e65c1203eb37244465e857d15a26d3a85a5410648ccb53b18bd44cb3a7336"
+
+[[package]]
+name = "syn"
+version = "1.0.102"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fcd952facd492f9be3ef0d0b7032a6e442ee9b361d4acc2b1d0c4aaa5f613a1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "tempfile"
+version = "3.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"
+dependencies = [
+ "cfg-if",
+ "fastrand",
+ "libc",
+ "redox_syscall",
+ "remove_dir_all",
+ "winapi",
+]
+
+[[package]]
+name = "term-transcript"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d77280c9041d978e4ffedbdd19f710a1360085510c5e99dbcfec8e2f2bd4285"
+dependencies = [
+ "atty",
+ "bytecount",
+ "handlebars",
+ "os_pipe",
+ "pretty_assertions",
+ "quick-xml",
+ "serde",
+ "termcolor",
+ "unicode-width",
+]
+
+[[package]]
+name = "termcolor"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "terminal_size"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb20089a8ba2b69debd491f8d2d023761cbf196e999218c591fa1e7e15a21907"
+dependencies = [
+ "rustix",
+ "windows-sys 0.42.0",
+]
+
+[[package]]
+name = "textwrap"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
+dependencies = [
+ "unicode-width",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tinytemplate"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
+dependencies = [
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "typenum"
+version = "1.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
+
+[[package]]
+name = "ucd-trie"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+
+[[package]]
+name = "utf8parse"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
+name = "wait-timeout"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "walkdir"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
+dependencies = [
+ "same-file",
+ "winapi",
+ "winapi-util",
+]
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f"
+
+[[package]]
+name = "web-sys"
+version = "0.3.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows-sys"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.45.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd"
+
+[[package]]
+name = "winnow"
+version = "0.4.7"
+dependencies = [
+ "anstyle",
+ "anstyle-stream",
+ "circular",
+ "criterion",
+ "doc-comment",
+ "escargot",
+ "is-terminal",
+ "lexopt",
+ "memchr",
+ "proptest",
+ "snapbox",
+ "term-transcript",
+ "terminal_size",
+]
+
+[[package]]
+name = "yansi"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
diff --git a/vendor/winnow-0.4.7/Cargo.toml b/vendor/winnow-0.4.7/Cargo.toml
new file mode 100644
index 000000000..8fcbb1225
--- /dev/null
+++ b/vendor/winnow-0.4.7/Cargo.toml
@@ -0,0 +1,235 @@
+# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
+#
+# When uploading crates to the registry Cargo will automatically
+# "normalize" Cargo.toml files for maximal compatibility
+# with all versions of Cargo and also rewrite `path` dependencies
+# to registry (e.g., crates.io) dependencies.
+#
+# If you are reading this file be aware that the original Cargo.toml
+# will likely look very different (and much more reasonable).
+# See Cargo.toml.orig for the original contents.
+
+[package]
+edition = "2021"
+rust-version = "1.64.0"
+name = "winnow"
+version = "0.4.7"
+include = [
+ "build.rs",
+ "src/**/*",
+ "Cargo.toml",
+ "LICENSE*",
+ "README.md",
+ "benches/**/*",
+ "examples/**/*",
+]
+autoexamples = false
+description = "A byte-oriented, zero-copy, parser combinators library"
+readme = "README.md"
+keywords = [
+ "parser",
+ "parser-combinators",
+ "parsing",
+ "streaming",
+ "bit",
+]
+categories = ["parsing"]
+license = "MIT"
+repository = "https://github.com/winnow-rs/winnow"
+
+[package.metadata.docs.rs]
+cargo-args = [
+ "-Zunstable-options",
+ "-Zrustdoc-scrape-examples",
+]
+features = ["unstable-doc"]
+rustdoc-args = [
+ "--cfg",
+ "docsrs",
+]
+
+[[package.metadata.release.pre-release-replacements]]
+file = "CHANGELOG.md"
+min = 1
+replace = "{{version}}"
+search = "Unreleased"
+
+[[package.metadata.release.pre-release-replacements]]
+exactly = 1
+file = "CHANGELOG.md"
+replace = "...{{tag_name}}"
+search = '\.\.\.HEAD'
+
+[[package.metadata.release.pre-release-replacements]]
+file = "CHANGELOG.md"
+min = 1
+replace = "{{date}}"
+search = "ReleaseDate"
+
+[[package.metadata.release.pre-release-replacements]]
+exactly = 1
+file = "CHANGELOG.md"
+replace = """
+<!-- next-header -->
+## [Unreleased] - ReleaseDate
+"""
+search = "<!-- next-header -->"
+
+[[package.metadata.release.pre-release-replacements]]
+exactly = 1
+file = "CHANGELOG.md"
+replace = """
+<!-- next-url -->
+[Unreleased]: https://github.com/winnow-rs/winnow/compare/{{tag_name}}...HEAD"""
+search = "<!-- next-url -->"
+
+[profile.bench]
+lto = true
+codegen-units = 1
+debug = true
+
+[[example]]
+name = "arithmetic"
+test = true
+required-features = ["alloc"]
+
+[[example]]
+name = "css"
+test = true
+required-features = ["alloc"]
+
+[[example]]
+name = "custom_error"
+test = true
+required-features = ["alloc"]
+
+[[example]]
+name = "http"
+required-features = ["alloc"]
+
+[[example]]
+name = "ini"
+test = true
+required-features = ["std"]
+
+[[example]]
+name = "json"
+test = true
+required-features = ["std"]
+
+[[example]]
+name = "ndjson"
+test = true
+required-features = ["std"]
+
+[[example]]
+name = "json_iterator"
+required-features = ["std"]
+
+[[example]]
+name = "iterator"
+
+[[example]]
+name = "s_expression"
+required-features = ["alloc"]
+
+[[example]]
+name = "string"
+required-features = ["alloc"]
+
+[[bench]]
+name = "arithmetic"
+path = "examples/arithmetic/bench.rs"
+harness = false
+
+[[bench]]
+name = "contains_token"
+harness = false
+
+[[bench]]
+name = "number"
+harness = false
+
+[[bench]]
+name = "http"
+path = "examples/http/bench.rs"
+harness = false
+required-features = ["alloc"]
+
+[[bench]]
+name = "ini"
+path = "examples/ini/bench.rs"
+harness = false
+required-features = ["std"]
+
+[[bench]]
+name = "json"
+path = "examples/json/bench.rs"
+harness = false
+required-features = ["std"]
+
+[dependencies.anstyle]
+version = "0.3.1"
+optional = true
+
+[dependencies.anstyle-stream]
+version = "0.2.0"
+optional = true
+
+[dependencies.is-terminal]
+version = "0.4.3"
+optional = true
+
+[dependencies.memchr]
+version = "2.3"
+optional = true
+default-features = false
+
+[dependencies.terminal_size]
+version = "0.2.3"
+optional = true
+
+[dev-dependencies.circular]
+version = "0.3.0"
+
+[dev-dependencies.criterion]
+version = "0.3.5"
+
+[dev-dependencies.doc-comment]
+version = "0.3"
+
+[dev-dependencies.escargot]
+version = "0.5.7"
+
+[dev-dependencies.lexopt]
+version = "0.3.0"
+
+[dev-dependencies.proptest]
+version = "1.0.0"
+
+[dev-dependencies.snapbox]
+version = "0.4.6"
+features = ["examples"]
+
+[dev-dependencies.term-transcript]
+version = "0.2.0"
+
+[features]
+alloc = []
+debug = [
+ "dep:anstyle",
+ "dep:is-terminal",
+ "dep:terminal_size",
+ "dep:anstyle-stream",
+]
+default = ["std"]
+simd = ["dep:memchr"]
+std = [
+ "alloc",
+ "memchr?/std",
+]
+unstable-doc = [
+ "alloc",
+ "std",
+ "simd",
+]
diff --git a/vendor/winnow-0.4.7/LICENSE-MIT b/vendor/winnow-0.4.7/LICENSE-MIT
new file mode 100644
index 000000000..c9b44cb8a
--- /dev/null
+++ b/vendor/winnow-0.4.7/LICENSE-MIT
@@ -0,0 +1,18 @@
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/vendor/winnow-0.4.7/README.md b/vendor/winnow-0.4.7/README.md
new file mode 100644
index 000000000..507df4e42
--- /dev/null
+++ b/vendor/winnow-0.4.7/README.md
@@ -0,0 +1,27 @@
+# winnow, making parsing a breeze
+
+[![LICENSE](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
+[![Build Status](https://github.com/winnow-rs/winnow/actions/workflows/ci.yml/badge.svg)](https://github.com/winnow-rs/winnow/actions/workflows/ci.yml)
+[![Coverage Status](https://coveralls.io/repos/github/winnow-rs/winnow/badge.svg?branch=main)](https://coveralls.io/github/winnow-rs/winnow?branch=main)
+[![Crates.io Version](https://img.shields.io/crates/v/winnow.svg)](https://crates.io/crates/winnow)
+
+## About
+
+Build up a parser for your format of choice with the building blocks provided by `winnow`.
+
+For more details, see:
+- [Tutorial](https://docs.rs/winnow/latest/winnow/_tutorial/index.html)
+- [Special Topics](https://docs.rs/winnow/latest/winnow/_topic/index.html)
+ - [Why winnow? How does it compare to ...?](https://docs.rs/winnow/latest/winnow/_topic/why/index.html)
+- [API Reference](https://docs.rs/winnow)
+- [List of combinators](https://docs.rs/winnow/latest/winnow/combinator/index.html)
+
+# Contributors
+
+winnow is the fruit of the work of many contributors over the years, many
+thanks for your help! In particular, thanks to [Geal](https://github.com/Geal)
+for the original [`nom` crate](https://crates.io/crates/nom).
+
+<a href="https://github.com/winnow-rs/winnow/graphs/contributors">
+ <img src="https://contributors-img.web.app/image?repo=winnow-rs/winnow" />
+</a>
diff --git a/vendor/winnow-0.4.7/benches/contains_token.rs b/vendor/winnow-0.4.7/benches/contains_token.rs
new file mode 100644
index 000000000..a35c1b2b1
--- /dev/null
+++ b/vendor/winnow-0.4.7/benches/contains_token.rs
@@ -0,0 +1,102 @@
+use criterion::black_box;
+
+use winnow::combinator::alt;
+use winnow::combinator::repeat;
+use winnow::prelude::*;
+use winnow::token::take_till1;
+use winnow::token::take_while;
+
+fn contains_token(c: &mut criterion::Criterion) {
+ let data = [
+ ("contiguous", CONTIGUOUS),
+ ("interleaved", INTERLEAVED),
+ ("canada", CANADA),
+ ];
+ let mut group = c.benchmark_group("contains_token");
+ for (name, sample) in data {
+ let len = sample.len();
+ group.throughput(criterion::Throughput::Bytes(len as u64));
+
+ group.bench_with_input(criterion::BenchmarkId::new("str", name), &len, |b, _| {
+ b.iter(|| black_box(parser_str.parse_next(black_box(sample)).unwrap()));
+ });
+ group.bench_with_input(criterion::BenchmarkId::new("slice", name), &len, |b, _| {
+ b.iter(|| black_box(parser_slice.parse_next(black_box(sample)).unwrap()));
+ });
+ group.bench_with_input(criterion::BenchmarkId::new("array", name), &len, |b, _| {
+ b.iter(|| black_box(parser_array.parse_next(black_box(sample)).unwrap()));
+ });
+ group.bench_with_input(criterion::BenchmarkId::new("tuple", name), &len, |b, _| {
+ b.iter(|| black_box(parser_tuple.parse_next(black_box(sample)).unwrap()));
+ });
+ group.bench_with_input(
+ criterion::BenchmarkId::new("closure-or", name),
+ &len,
+ |b, _| {
+ b.iter(|| black_box(parser_closure_or.parse_next(black_box(sample)).unwrap()));
+ },
+ );
+ group.bench_with_input(
+ criterion::BenchmarkId::new("closure-matches", name),
+ &len,
+ |b, _| {
+ b.iter(|| {
+ black_box(
+ parser_closure_matches
+ .parse_next(black_box(sample))
+ .unwrap(),
+ )
+ });
+ },
+ );
+ }
+ group.finish();
+}
+
+fn parser_str(input: &str) -> IResult<&str, usize> {
+ let contains = "0123456789";
+ repeat(0.., alt((take_while(1.., contains), take_till1(contains)))).parse_next(input)
+}
+
+fn parser_slice(input: &str) -> IResult<&str, usize> {
+ let contains = &['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'][..];
+ repeat(0.., alt((take_while(1.., contains), take_till1(contains)))).parse_next(input)
+}
+
+fn parser_array(input: &str) -> IResult<&str, usize> {
+ let contains = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
+ repeat(0.., alt((take_while(1.., contains), take_till1(contains)))).parse_next(input)
+}
+
+fn parser_tuple(input: &str) -> IResult<&str, usize> {
+ let contains = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
+ repeat(0.., alt((take_while(1.., contains), take_till1(contains)))).parse_next(input)
+}
+
+fn parser_closure_or(input: &str) -> IResult<&str, usize> {
+ let contains = |c: char| {
+ c == '0'
+ || c == '1'
+ || c == '2'
+ || c == '3'
+ || c == '4'
+ || c == '5'
+ || c == '6'
+ || c == '7'
+ || c == '8'
+ || c == '9'
+ };
+ repeat(0.., alt((take_while(1.., contains), take_till1(contains)))).parse_next(input)
+}
+
+fn parser_closure_matches(input: &str) -> IResult<&str, usize> {
+ let contains = |c: char| matches!(c, '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9');
+ repeat(0.., alt((take_while(1.., contains), take_till1(contains)))).parse_next(input)
+}
+
+const CONTIGUOUS: &str = "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
+const INTERLEAVED: &str = "0123456789abc0123456789ab0123456789ab0123456789ab0123456789ab0123456789ab0123456789ab0123456789ab0123456789ab0123456789ab0123456789ab0123456789ab0123456789ab0123456789ab0123456789ab0123456789ab0123456789ab0123456789ab0123456789ab0123456789ab0123456789ab0123456789ab0123456789ab";
+const CANADA: &str = include_str!("../third_party/nativejson-benchmark/data/canada.json");
+
+criterion::criterion_group!(benches, contains_token);
+criterion::criterion_main!(benches);
diff --git a/vendor/winnow-0.4.7/benches/number.rs b/vendor/winnow-0.4.7/benches/number.rs
new file mode 100644
index 000000000..b6c6fac57
--- /dev/null
+++ b/vendor/winnow-0.4.7/benches/number.rs
@@ -0,0 +1,70 @@
+#[macro_use]
+extern crate criterion;
+
+use criterion::Criterion;
+
+use winnow::ascii::float;
+use winnow::binary::be_u64;
+use winnow::error::ErrMode;
+use winnow::error::Error;
+use winnow::error::ErrorKind;
+use winnow::prelude::*;
+use winnow::stream::ParseSlice;
+
+type Stream<'i> = &'i [u8];
+
+fn parser(i: Stream<'_>) -> IResult<Stream<'_>, u64> {
+ be_u64(i)
+}
+
+fn number(c: &mut Criterion) {
+ let data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
+
+ parser(&data[..]).expect("should parse correctly");
+ c.bench_function("number", move |b| {
+ b.iter(|| parser(&data[..]).unwrap());
+ });
+}
+
+fn float_bytes(c: &mut Criterion) {
+ println!(
+ "float_bytes result: {:?}",
+ float::<_, f64, Error<_>>(&b"-1.234E-12"[..])
+ );
+ c.bench_function("float bytes", |b| {
+ b.iter(|| float::<_, f64, Error<_>>(&b"-1.234E-12"[..]));
+ });
+}
+
+fn float_str(c: &mut Criterion) {
+ println!(
+ "float_str result: {:?}",
+ float::<_, f64, Error<_>>("-1.234E-12")
+ );
+ c.bench_function("float str", |b| {
+ b.iter(|| float::<_, f64, Error<_>>("-1.234E-12"));
+ });
+}
+
+fn std_float(input: &[u8]) -> IResult<&[u8], f64, Error<&[u8]>> {
+ match input.parse_slice() {
+ Some(n) => Ok((&[], n)),
+ None => Err(ErrMode::Backtrack(Error {
+ input,
+ kind: ErrorKind::Slice,
+ })),
+ }
+}
+
+fn std_float_bytes(c: &mut Criterion) {
+ println!(
+ "std_float_bytes result: {:?}",
+ std_float(&b"-1.234E-12"[..])
+ );
+ c.bench_function("std_float bytes", |b| {
+ b.iter(|| std_float(&b"-1.234E-12"[..]));
+ });
+}
+
+criterion_group!(benches, number, float_bytes, std_float_bytes, float_str);
+criterion_main!(benches);
diff --git a/vendor/winnow-0.4.7/examples/arithmetic/bench.rs b/vendor/winnow-0.4.7/examples/arithmetic/bench.rs
new file mode 100644
index 000000000..0f6ec8eef
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/arithmetic/bench.rs
@@ -0,0 +1,19 @@
+mod parser;
+
+use parser::expr;
+
+#[allow(clippy::eq_op, clippy::erasing_op)]
+fn arithmetic(c: &mut criterion::Criterion) {
+ let data = " 2*2 / ( 5 - 1) + 3 / 4 * (2 - 7 + 567 *12 /2) + 3*(1+2*( 45 /2));";
+
+ assert_eq!(
+ expr(data),
+ Ok((";", 2 * 2 / (5 - 1) + 3 * (1 + 2 * (45 / 2)),))
+ );
+ c.bench_function("arithmetic", |b| {
+ b.iter(|| expr(data).unwrap());
+ });
+}
+
+criterion::criterion_group!(benches, arithmetic);
+criterion::criterion_main!(benches);
diff --git a/vendor/winnow-0.4.7/examples/arithmetic/main.rs b/vendor/winnow-0.4.7/examples/arithmetic/main.rs
new file mode 100644
index 000000000..94a17d85d
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/arithmetic/main.rs
@@ -0,0 +1,75 @@
+use winnow::prelude::*;
+
+mod parser;
+mod parser_ast;
+
+fn main() -> Result<(), lexopt::Error> {
+ let args = Args::parse()?;
+
+ let input = args.input.as_deref().unwrap_or("1 + 1");
+
+ println!("{} =", input);
+ match args.implementation {
+ Impl::Eval => match parser::expr.parse(input) {
+ Ok(result) => {
+ println!(" {}", result);
+ }
+ Err(err) => {
+ println!(" {}", err);
+ }
+ },
+ Impl::Ast => match parser_ast::expr.parse(input) {
+ Ok(result) => {
+ println!(" {:#?}", result);
+ }
+ Err(err) => {
+ println!(" {}", err);
+ }
+ },
+ }
+
+ Ok(())
+}
+
+#[derive(Default)]
+struct Args {
+ input: Option<String>,
+ implementation: Impl,
+}
+
+enum Impl {
+ Eval,
+ Ast,
+}
+
+impl Default for Impl {
+ fn default() -> Self {
+ Self::Eval
+ }
+}
+
+impl Args {
+ fn parse() -> Result<Self, lexopt::Error> {
+ use lexopt::prelude::*;
+
+ let mut res = Args::default();
+
+ let mut args = lexopt::Parser::from_env();
+ while let Some(arg) = args.next()? {
+ match arg {
+ Long("impl") => {
+ res.implementation = args.value()?.parse_with(|s| match s {
+ "eval" => Ok(Impl::Eval),
+ "ast" => Ok(Impl::Ast),
+ _ => Err("expected `eval`, `ast`"),
+ })?;
+ }
+ Value(input) => {
+ res.input = Some(input.string()?);
+ }
+ _ => return Err(arg.unexpected()),
+ }
+ }
+ Ok(res)
+ }
+}
diff --git a/vendor/winnow-0.4.7/examples/arithmetic/parser.rs b/vendor/winnow-0.4.7/examples/arithmetic/parser.rs
new file mode 100644
index 000000000..ba6347a43
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/arithmetic/parser.rs
@@ -0,0 +1,103 @@
+use std::str::FromStr;
+
+use winnow::prelude::*;
+use winnow::{
+ ascii::{digit1 as digits, space0 as spaces},
+ combinator::alt,
+ combinator::delimited,
+ combinator::fold_repeat,
+ token::one_of,
+ IResult,
+};
+
+// Parser definition
+
+pub fn expr(i: &str) -> IResult<&str, i64> {
+ let (i, init) = term(i)?;
+
+ fold_repeat(
+ 0..,
+ (one_of("+-"), term),
+ move || init,
+ |acc, (op, val): (char, i64)| {
+ if op == '+' {
+ acc + val
+ } else {
+ acc - val
+ }
+ },
+ )
+ .parse_next(i)
+}
+
+// We read an initial factor and for each time we find
+// a * or / operator followed by another factor, we do
+// the math by folding everything
+fn term(i: &str) -> IResult<&str, i64> {
+ let (i, init) = factor(i)?;
+
+ fold_repeat(
+ 0..,
+ (one_of("*/"), factor),
+ move || init,
+ |acc, (op, val): (char, i64)| {
+ if op == '*' {
+ acc * val
+ } else {
+ acc / val
+ }
+ },
+ )
+ .parse_next(i)
+}
+
+// We transform an integer string into a i64, ignoring surrounding whitespaces
+// We look for a digit suite, and try to convert it.
+// If either str::from_utf8 or FromStr::from_str fail,
+// we fallback to the parens parser defined above
+fn factor(i: &str) -> IResult<&str, i64> {
+ delimited(
+ spaces,
+ alt((
+ digits.try_map(FromStr::from_str),
+ delimited('(', expr, ')'),
+ parens,
+ )),
+ spaces,
+ )
+ .parse_next(i)
+}
+
+// We parse any expr surrounded by parens, ignoring all whitespaces around those
+fn parens(i: &str) -> IResult<&str, i64> {
+ delimited('(', expr, ')').parse_next(i)
+}
+
+#[test]
+fn factor_test() {
+ assert_eq!(factor("3"), Ok(("", 3)));
+ assert_eq!(factor(" 12"), Ok(("", 12)));
+ assert_eq!(factor("537 "), Ok(("", 537)));
+ assert_eq!(factor(" 24 "), Ok(("", 24)));
+}
+
+#[test]
+fn term_test() {
+ assert_eq!(term(" 12 *2 / 3"), Ok(("", 8)));
+ assert_eq!(term(" 2* 3 *2 *2 / 3"), Ok(("", 8)));
+ assert_eq!(term(" 48 / 3/2"), Ok(("", 8)));
+}
+
+#[test]
+fn expr_test() {
+ assert_eq!(expr(" 1 + 2 "), Ok(("", 3)));
+ assert_eq!(expr(" 12 + 6 - 4+ 3"), Ok(("", 17)));
+ assert_eq!(expr(" 1 + 2*3 + 4"), Ok(("", 11)));
+}
+
+#[test]
+fn parens_test() {
+ assert_eq!(expr(" ( 2 )"), Ok(("", 2)));
+ assert_eq!(expr(" 2* ( 3 + 4 ) "), Ok(("", 14)));
+ assert_eq!(expr(" 2*2 / ( 5 - 1) + 3"), Ok(("", 4)));
+}
diff --git a/vendor/winnow-0.4.7/examples/arithmetic/parser_ast.rs b/vendor/winnow-0.4.7/examples/arithmetic/parser_ast.rs
new file mode 100644
index 000000000..fcf897e34
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/arithmetic/parser_ast.rs
@@ -0,0 +1,162 @@
+use std::fmt;
+use std::fmt::{Debug, Display, Formatter};
+
+use std::str::FromStr;
+
+use winnow::prelude::*;
+use winnow::{
+ ascii::{digit1 as digit, multispace0 as multispace},
+ combinator::alt,
+ combinator::repeat,
+ combinator::{delimited, preceded},
+ IResult,
+};
+
+#[derive(Debug)]
+pub enum Expr {
+ Value(i64),
+ Add(Box<Expr>, Box<Expr>),
+ Sub(Box<Expr>, Box<Expr>),
+ Mul(Box<Expr>, Box<Expr>),
+ Div(Box<Expr>, Box<Expr>),
+ Paren(Box<Expr>),
+}
+
+#[derive(Debug)]
+pub enum Oper {
+ Add,
+ Sub,
+ Mul,
+ Div,
+}
+
+impl Display for Expr {
+ fn fmt(&self, format: &mut Formatter<'_>) -> fmt::Result {
+ use Expr::{Add, Div, Mul, Paren, Sub, Value};
+ match *self {
+ Value(val) => write!(format, "{}", val),
+ Add(ref left, ref right) => write!(format, "{} + {}", left, right),
+ Sub(ref left, ref right) => write!(format, "{} - {}", left, right),
+ Mul(ref left, ref right) => write!(format, "{} * {}", left, right),
+ Div(ref left, ref right) => write!(format, "{} / {}", left, right),
+ Paren(ref expr) => write!(format, "({})", expr),
+ }
+ }
+}
+
+pub fn expr(i: &str) -> IResult<&str, Expr> {
+ let (i, initial) = term(i)?;
+ let (i, remainder) = repeat(
+ 0..,
+ alt((
+ |i| {
+ let (i, add) = preceded("+", term).parse_next(i)?;
+ Ok((i, (Oper::Add, add)))
+ },
+ |i| {
+ let (i, sub) = preceded("-", term).parse_next(i)?;
+ Ok((i, (Oper::Sub, sub)))
+ },
+ )),
+ )
+ .parse_next(i)?;
+
+ Ok((i, fold_exprs(initial, remainder)))
+}
+
+fn term(i: &str) -> IResult<&str, Expr> {
+ let (i, initial) = factor(i)?;
+ let (i, remainder) = repeat(
+ 0..,
+ alt((
+ |i| {
+ let (i, mul) = preceded("*", factor).parse_next(i)?;
+ Ok((i, (Oper::Mul, mul)))
+ },
+ |i| {
+ let (i, div) = preceded("/", factor).parse_next(i)?;
+ Ok((i, (Oper::Div, div)))
+ },
+ )),
+ )
+ .parse_next(i)?;
+
+ Ok((i, fold_exprs(initial, remainder)))
+}
+
+fn factor(i: &str) -> IResult<&str, Expr> {
+ alt((
+ delimited(multispace, digit, multispace)
+ .try_map(FromStr::from_str)
+ .map(Expr::Value),
+ parens,
+ ))
+ .parse_next(i)
+}
+
+fn parens(i: &str) -> IResult<&str, Expr> {
+ delimited(
+ multispace,
+ delimited("(", expr.map(|e| Expr::Paren(Box::new(e))), ")"),
+ multispace,
+ )
+ .parse_next(i)
+}
+
+fn fold_exprs(initial: Expr, remainder: Vec<(Oper, Expr)>) -> Expr {
+ remainder.into_iter().fold(initial, |acc, pair| {
+ let (oper, expr) = pair;
+ match oper {
+ Oper::Add => Expr::Add(Box::new(acc), Box::new(expr)),
+ Oper::Sub => Expr::Sub(Box::new(acc), Box::new(expr)),
+ Oper::Mul => Expr::Mul(Box::new(acc), Box::new(expr)),
+ Oper::Div => Expr::Div(Box::new(acc), Box::new(expr)),
+ }
+ })
+}
+
+#[test]
+fn factor_test() {
+ assert_eq!(
+ factor(" 3 ").map(|(i, x)| (i, format!("{:?}", x))),
+ Ok(("", String::from("Value(3)")))
+ );
+}
+
+#[test]
+fn term_test() {
+ assert_eq!(
+ term(" 3 * 5 ").map(|(i, x)| (i, format!("{:?}", x))),
+ Ok(("", String::from("Mul(Value(3), Value(5))")))
+ );
+}
+
+#[test]
+fn expr_test() {
+ assert_eq!(
+ expr(" 1 + 2 * 3 ").map(|(i, x)| (i, format!("{:?}", x))),
+ Ok(("", String::from("Add(Value(1), Mul(Value(2), Value(3)))")))
+ );
+ assert_eq!(
+ expr(" 1 + 2 * 3 / 4 - 5 ").map(|(i, x)| (i, format!("{:?}", x))),
+ Ok((
+ "",
+ String::from("Sub(Add(Value(1), Div(Mul(Value(2), Value(3)), Value(4))), Value(5))")
+ ))
+ );
+ assert_eq!(
+ expr(" 72 / 2 / 3 ").map(|(i, x)| (i, format!("{:?}", x))),
+ Ok(("", String::from("Div(Div(Value(72), Value(2)), Value(3))")))
+ );
+}
+
+#[test]
+fn parens_test() {
+ assert_eq!(
+ expr(" ( 1 + 2 ) * 3 ").map(|(i, x)| (i, format!("{:?}", x))),
+ Ok((
+ "",
+ String::from("Mul(Paren(Add(Value(1), Value(2))), Value(3))")
+ ))
+ );
+}
diff --git a/vendor/winnow-0.4.7/examples/css/main.rs b/vendor/winnow-0.4.7/examples/css/main.rs
new file mode 100644
index 000000000..26c1b9212
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/css/main.rs
@@ -0,0 +1,62 @@
+use winnow::prelude::*;
+
+mod parser;
+
+use parser::hex_color;
+
+fn main() -> Result<(), lexopt::Error> {
+ let args = Args::parse()?;
+
+ let input = args.input.as_deref().unwrap_or("#AAAAAA");
+
+ println!("{} =", input);
+ match hex_color.parse(input) {
+ Ok(result) => {
+ println!(" {:?}", result);
+ }
+ Err(err) => {
+ println!(" {}", err);
+ }
+ }
+
+ Ok(())
+}
+
+#[derive(Default)]
+struct Args {
+ input: Option<String>,
+}
+
+impl Args {
+ fn parse() -> Result<Self, lexopt::Error> {
+ use lexopt::prelude::*;
+
+ let mut res = Args::default();
+
+ let mut args = lexopt::Parser::from_env();
+ while let Some(arg) = args.next()? {
+ match arg {
+ Value(input) => {
+ res.input = Some(input.string()?);
+ }
+ _ => return Err(arg.unexpected()),
+ }
+ }
+ Ok(res)
+ }
+}
+
+#[test]
+fn parse_color() {
+ assert_eq!(
+ hex_color("#2F14DF"),
+ Ok((
+ "",
+ parser::Color {
+ red: 47,
+ green: 20,
+ blue: 223,
+ }
+ ))
+ );
+}
diff --git a/vendor/winnow-0.4.7/examples/css/parser.rs b/vendor/winnow-0.4.7/examples/css/parser.rs
new file mode 100644
index 000000000..9b3238e2e
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/css/parser.rs
@@ -0,0 +1,31 @@
+use winnow::prelude::*;
+use winnow::token::take_while;
+
+#[derive(Debug, Eq, PartialEq)]
+pub struct Color {
+ pub red: u8,
+ pub green: u8,
+ pub blue: u8,
+}
+
+impl std::str::FromStr for Color {
+ // The error must be owned
+ type Err = winnow::error::Error<String>;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ hex_color.parse(s).map_err(winnow::error::Error::into_owned)
+ }
+}
+
+pub fn hex_color(input: &str) -> IResult<&str, Color> {
+ let (input, _) = "#".parse_next(input)?;
+ let (input, (red, green, blue)) = (hex_primary, hex_primary, hex_primary).parse_next(input)?;
+
+ Ok((input, Color { red, green, blue }))
+}
+
+fn hex_primary(input: &str) -> IResult<&str, u8> {
+ take_while(2, |c: char| c.is_ascii_hexdigit())
+ .try_map(|input| u8::from_str_radix(input, 16))
+ .parse_next(input)
+}
diff --git a/vendor/winnow-0.4.7/examples/custom_error.rs b/vendor/winnow-0.4.7/examples/custom_error.rs
new file mode 100644
index 000000000..954452a20
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/custom_error.rs
@@ -0,0 +1,42 @@
+use winnow::error::ErrMode;
+use winnow::error::ErrorKind;
+use winnow::error::ParseError;
+use winnow::IResult;
+
+#[derive(Debug, PartialEq, Eq)]
+pub enum CustomError<I> {
+ MyError,
+ Nom(I, ErrorKind),
+}
+
+impl<I> ParseError<I> for CustomError<I> {
+ fn from_error_kind(input: I, kind: ErrorKind) -> Self {
+ CustomError::Nom(input, kind)
+ }
+
+ fn append(self, _: I, _: ErrorKind) -> Self {
+ self
+ }
+}
+
+pub fn parse(_input: &str) -> IResult<&str, &str, CustomError<&str>> {
+ Err(ErrMode::Backtrack(CustomError::MyError))
+}
+
+fn main() {}
+
+#[cfg(test)]
+mod tests {
+ use super::parse;
+ use super::CustomError;
+ use winnow::error::ErrMode;
+
+ #[test]
+ fn it_works() {
+ let err = parse("").unwrap_err();
+ match err {
+ ErrMode::Backtrack(e) => assert_eq!(e, CustomError::MyError),
+ _ => panic!("Unexpected error: {:?}", err),
+ }
+ }
+}
diff --git a/vendor/winnow-0.4.7/examples/http/bench.rs b/vendor/winnow-0.4.7/examples/http/bench.rs
new file mode 100644
index 000000000..a27a119a6
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/http/bench.rs
@@ -0,0 +1,36 @@
+mod parser;
+mod parser_streaming;
+
+fn one_test(c: &mut criterion::Criterion) {
+ let data = &b"GET / HTTP/1.1
+Host: www.reddit.com
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
+Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
+Accept-Language: en-us,en;q=0.5
+Accept-Encoding: gzip, deflate
+Connection: keep-alive
+
+"[..];
+
+ let mut http_group = c.benchmark_group("http");
+ http_group.throughput(criterion::Throughput::Bytes(data.len() as u64));
+ http_group.bench_with_input(
+ criterion::BenchmarkId::new("complete", data.len()),
+ data,
+ |b, data| {
+ b.iter(|| parser::parse(data).unwrap());
+ },
+ );
+ http_group.bench_with_input(
+ criterion::BenchmarkId::new("streaming", data.len()),
+ data,
+ |b, data| {
+ b.iter(|| parser_streaming::parse(data).unwrap());
+ },
+ );
+
+ http_group.finish();
+}
+
+criterion::criterion_group!(http, one_test);
+criterion::criterion_main!(http);
diff --git a/vendor/winnow-0.4.7/examples/http/main.rs b/vendor/winnow-0.4.7/examples/http/main.rs
new file mode 100644
index 000000000..b0e480fb5
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/http/main.rs
@@ -0,0 +1,47 @@
+mod parser;
+
+fn main() -> Result<(), lexopt::Error> {
+ let args = Args::parse()?;
+
+ let input = args.input.as_deref().unwrap_or(
+ "GET / HTTP/1.1
+Host: www.reddit.com
+User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20100101 Firefox/15.0.1
+Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
+Accept-Language: en-us,en;q=0.5
+Accept-Encoding: gzip, deflate
+Connection: keep-alive
+
+",
+ );
+
+ if let Some(result) = parser::parse(input.as_bytes()) {
+ println!(" {:#?}", result);
+ }
+
+ Ok(())
+}
+
+#[derive(Default)]
+struct Args {
+ input: Option<String>,
+}
+
+impl Args {
+ fn parse() -> Result<Self, lexopt::Error> {
+ use lexopt::prelude::*;
+
+ let mut res = Args::default();
+
+ let mut args = lexopt::Parser::from_env();
+ while let Some(arg) = args.next()? {
+ match arg {
+ Value(input) => {
+ res.input = Some(input.string()?);
+ }
+ _ => return Err(arg.unexpected()),
+ }
+ }
+ Ok(res)
+ }
+}
diff --git a/vendor/winnow-0.4.7/examples/http/parser.rs b/vendor/winnow-0.4.7/examples/http/parser.rs
new file mode 100644
index 000000000..f03b77eb7
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/http/parser.rs
@@ -0,0 +1,141 @@
+use winnow::{ascii::line_ending, combinator::repeat, token::take_while, IResult, Parser};
+
+pub type Stream<'i> = &'i [u8];
+
+#[rustfmt::skip]
+#[derive(Debug)]
+#[allow(dead_code)]
+pub struct Request<'a> {
+ method: &'a [u8],
+ uri: &'a [u8],
+ version: &'a [u8],
+}
+
+#[derive(Debug)]
+#[allow(dead_code)]
+pub struct Header<'a> {
+ name: &'a [u8],
+ value: Vec<&'a [u8]>,
+}
+
+pub fn parse(data: &[u8]) -> Option<Vec<(Request<'_>, Vec<Header<'_>>)>> {
+ let mut buf = data;
+ let mut v = Vec::new();
+ loop {
+ match request(buf) {
+ Ok((b, r)) => {
+ buf = b;
+ v.push(r);
+
+ if b.is_empty() {
+ //println!("{}", i);
+ break;
+ }
+ }
+ Err(e) => {
+ println!("error: {:?}", e);
+ return None;
+ }
+ }
+ }
+
+ Some(v)
+}
+
+fn request(input: Stream<'_>) -> IResult<Stream<'_>, (Request<'_>, Vec<Header<'_>>)> {
+ let (input, req) = request_line(input)?;
+ let (input, h) = repeat(1.., message_header).parse_next(input)?;
+ let (input, _) = line_ending(input)?;
+
+ Ok((input, (req, h)))
+}
+
+fn request_line(input: Stream<'_>) -> IResult<Stream<'_>, Request<'_>> {
+ let (input, method) = take_while(1.., is_token).parse_next(input)?;
+ let (input, _) = take_while(1.., is_space).parse_next(input)?;
+ let (input, uri) = take_while(1.., is_not_space).parse_next(input)?;
+ let (input, _) = take_while(1.., is_space).parse_next(input)?;
+ let (input, version) = http_version(input)?;
+ let (input, _) = line_ending(input)?;
+
+ Ok((
+ input,
+ Request {
+ method,
+ uri,
+ version,
+ },
+ ))
+}
+
+fn http_version(input: Stream<'_>) -> IResult<Stream<'_>, &[u8]> {
+ let (input, _) = "HTTP/".parse_next(input)?;
+ let (input, version) = take_while(1.., is_version).parse_next(input)?;
+
+ Ok((input, version))
+}
+
+fn message_header_value(input: Stream<'_>) -> IResult<Stream<'_>, &[u8]> {
+ let (input, _) = take_while(1.., is_horizontal_space).parse_next(input)?;
+ let (input, data) = take_while(1.., not_line_ending).parse_next(input)?;
+ let (input, _) = line_ending(input)?;
+
+ Ok((input, data))
+}
+
+fn message_header(input: Stream<'_>) -> IResult<Stream<'_>, Header<'_>> {
+ let (input, name) = take_while(1.., is_token).parse_next(input)?;
+ let (input, _) = ':'.parse_next(input)?;
+ let (input, value) = repeat(1.., message_header_value).parse_next(input)?;
+
+ Ok((input, Header { name, value }))
+}
+
+#[rustfmt::skip]
+#[allow(clippy::match_same_arms)]
+#[allow(clippy::match_like_matches_macro)]
+fn is_token(c: u8) -> bool {
+ match c {
+ 128..=255 => false,
+ 0..=31 => false,
+ b'(' => false,
+ b')' => false,
+ b'<' => false,
+ b'>' => false,
+ b'@' => false,
+ b',' => false,
+ b';' => false,
+ b':' => false,
+ b'\\' => false,
+ b'"' => false,
+ b'/' => false,
+ b'[' => false,
+ b']' => false,
+ b'?' => false,
+ b'=' => false,
+ b'{' => false,
+ b'}' => false,
+ b' ' => false,
+ _ => true,
+ }
+}
+
+fn is_version(c: u8) -> bool {
+ (b'0'..=b'9').contains(&c) || c == b'.'
+}
+
+fn not_line_ending(c: u8) -> bool {
+ c != b'\r' && c != b'\n'
+}
+
+fn is_space(c: u8) -> bool {
+ c == b' '
+}
+
+fn is_not_space(c: u8) -> bool {
+ c != b' '
+}
+
+fn is_horizontal_space(c: u8) -> bool {
+ c == b' ' || c == b'\t'
+}
diff --git a/vendor/winnow-0.4.7/examples/http/parser_streaming.rs b/vendor/winnow-0.4.7/examples/http/parser_streaming.rs
new file mode 100644
index 000000000..d3b2c4aaa
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/http/parser_streaming.rs
@@ -0,0 +1,143 @@
+use winnow::{
+ ascii::line_ending, combinator::repeat, stream::Partial, token::take_while, IResult, Parser,
+};
+
+pub type Stream<'i> = Partial<&'i [u8]>;
+
+#[rustfmt::skip]
+#[derive(Debug)]
+#[allow(dead_code)]
+pub struct Request<'a> {
+ method: &'a [u8],
+ uri: &'a [u8],
+ version: &'a [u8],
+}
+
+#[derive(Debug)]
+#[allow(dead_code)]
+pub struct Header<'a> {
+ name: &'a [u8],
+ value: Vec<&'a [u8]>,
+}
+
+pub fn parse(data: &[u8]) -> Option<Vec<(Request<'_>, Vec<Header<'_>>)>> {
+ let mut buf = Partial::new(data);
+ let mut v = Vec::new();
+ loop {
+ match request(buf) {
+ Ok((b, r)) => {
+ buf = b;
+ v.push(r);
+
+ if b.is_empty() {
+ //println!("{}", i);
+ break;
+ }
+ }
+ Err(e) => {
+ println!("error: {:?}", e);
+ return None;
+ }
+ }
+ }
+
+ Some(v)
+}
+
+fn request(input: Stream<'_>) -> IResult<Stream<'_>, (Request<'_>, Vec<Header<'_>>)> {
+ let (input, req) = request_line(input)?;
+ let (input, h) = repeat(1.., message_header).parse_next(input)?;
+ let (input, _) = line_ending(input)?;
+
+ Ok((input, (req, h)))
+}
+
+fn request_line(input: Stream<'_>) -> IResult<Stream<'_>, Request<'_>> {
+ let (input, method) = take_while(1.., is_token).parse_next(input)?;
+ let (input, _) = take_while(1.., is_space).parse_next(input)?;
+ let (input, uri) = take_while(1.., is_not_space).parse_next(input)?;
+ let (input, _) = take_while(1.., is_space).parse_next(input)?;
+ let (input, version) = http_version(input)?;
+ let (input, _) = line_ending(input)?;
+
+ Ok((
+ input,
+ Request {
+ method,
+ uri,
+ version,
+ },
+ ))
+}
+
+fn http_version(input: Stream<'_>) -> IResult<Stream<'_>, &[u8]> {
+ let (input, _) = "HTTP/".parse_next(input)?;
+ let (input, version) = take_while(1.., is_version).parse_next(input)?;
+
+ Ok((input, version))
+}
+
+fn message_header_value(input: Stream<'_>) -> IResult<Stream<'_>, &[u8]> {
+ let (input, _) = take_while(1.., is_horizontal_space).parse_next(input)?;
+ let (input, data) = take_while(1.., not_line_ending).parse_next(input)?;
+ let (input, _) = line_ending(input)?;
+
+ Ok((input, data))
+}
+
+fn message_header(input: Stream<'_>) -> IResult<Stream<'_>, Header<'_>> {
+ let (input, name) = take_while(1.., is_token).parse_next(input)?;
+ let (input, _) = ':'.parse_next(input)?;
+ let (input, value) = repeat(1.., message_header_value).parse_next(input)?;
+
+ Ok((input, Header { name, value }))
+}
+
+#[rustfmt::skip]
+#[allow(clippy::match_same_arms)]
+#[allow(clippy::match_like_matches_macro)]
+fn is_token(c: u8) -> bool {
+ match c {
+ 128..=255 => false,
+ 0..=31 => false,
+ b'(' => false,
+ b')' => false,
+ b'<' => false,
+ b'>' => false,
+ b'@' => false,
+ b',' => false,
+ b';' => false,
+ b':' => false,
+ b'\\' => false,
+ b'"' => false,
+ b'/' => false,
+ b'[' => false,
+ b']' => false,
+ b'?' => false,
+ b'=' => false,
+ b'{' => false,
+ b'}' => false,
+ b' ' => false,
+ _ => true,
+ }
+}
+
+fn is_version(c: u8) -> bool {
+ (b'0'..=b'9').contains(&c) || c == b'.'
+}
+
+fn not_line_ending(c: u8) -> bool {
+ c != b'\r' && c != b'\n'
+}
+
+fn is_space(c: u8) -> bool {
+ c == b' '
+}
+
+fn is_not_space(c: u8) -> bool {
+ c != b' '
+}
+
+fn is_horizontal_space(c: u8) -> bool {
+ c == b' ' || c == b'\t'
+}
diff --git a/vendor/winnow-0.4.7/examples/ini/bench.rs b/vendor/winnow-0.4.7/examples/ini/bench.rs
new file mode 100644
index 000000000..cffea3b84
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/ini/bench.rs
@@ -0,0 +1,61 @@
+use winnow::combinator::repeat;
+use winnow::prelude::*;
+
+mod parser;
+mod parser_str;
+
+fn bench_ini(c: &mut criterion::Criterion) {
+ let str = "[owner]
+name=John Doe
+organization=Acme Widgets Inc.
+
+[database]
+server=192.0.2.62
+port=143
+file=payroll.dat
+\0";
+
+ let mut group = c.benchmark_group("ini");
+ group.throughput(criterion::Throughput::Bytes(str.len() as u64));
+ group.bench_function(criterion::BenchmarkId::new("bytes", str.len()), |b| {
+ b.iter(|| parser::categories(str.as_bytes()).unwrap());
+ });
+ group.bench_function(criterion::BenchmarkId::new("str", str.len()), |b| {
+ b.iter(|| parser_str::categories(str).unwrap())
+ });
+}
+
+fn bench_ini_keys_and_values(c: &mut criterion::Criterion) {
+ let str = "server=192.0.2.62
+port=143
+file=payroll.dat
+\0";
+
+ fn acc(i: parser::Stream<'_>) -> IResult<parser::Stream<'_>, Vec<(&str, &str)>> {
+ repeat(0.., parser::key_value).parse_next(i)
+ }
+
+ let mut group = c.benchmark_group("ini keys and values");
+ group.throughput(criterion::Throughput::Bytes(str.len() as u64));
+ group.bench_function(criterion::BenchmarkId::new("bytes", str.len()), |b| {
+ b.iter(|| acc(str.as_bytes()).unwrap());
+ });
+}
+
+fn bench_ini_key_value(c: &mut criterion::Criterion) {
+ let str = "server=192.0.2.62\n";
+
+ let mut group = c.benchmark_group("ini key value");
+ group.throughput(criterion::Throughput::Bytes(str.len() as u64));
+ group.bench_function(criterion::BenchmarkId::new("bytes", str.len()), |b| {
+ b.iter(|| parser::key_value(str.as_bytes()).unwrap());
+ });
+}
+
+criterion::criterion_group!(
+ benches,
+ bench_ini,
+ bench_ini_keys_and_values,
+ bench_ini_key_value
+);
+criterion::criterion_main!(benches);
diff --git a/vendor/winnow-0.4.7/examples/ini/main.rs b/vendor/winnow-0.4.7/examples/ini/main.rs
new file mode 100644
index 000000000..8f61d18e8
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/ini/main.rs
@@ -0,0 +1,60 @@
+use winnow::prelude::*;
+
+mod parser;
+mod parser_str;
+
+fn main() -> Result<(), lexopt::Error> {
+ let args = Args::parse()?;
+
+ let input = args.input.as_deref().unwrap_or("1 + 1");
+
+ if args.binary {
+ match parser::categories.parse(input.as_bytes()) {
+ Ok(result) => {
+ println!(" {:?}", result);
+ }
+ Err(err) => {
+ println!(" {:?}", err);
+ }
+ }
+ } else {
+ match parser_str::categories.parse(input) {
+ Ok(result) => {
+ println!(" {:?}", result);
+ }
+ Err(err) => {
+ println!(" {}", err);
+ }
+ }
+ }
+
+ Ok(())
+}
+
+#[derive(Default)]
+struct Args {
+ input: Option<String>,
+ binary: bool,
+}
+
+impl Args {
+ fn parse() -> Result<Self, lexopt::Error> {
+ use lexopt::prelude::*;
+
+ let mut res = Args::default();
+
+ let mut args = lexopt::Parser::from_env();
+ while let Some(arg) = args.next()? {
+ match arg {
+ Long("binary") => {
+ res.binary = true;
+ }
+ Value(input) => {
+ res.input = Some(input.string()?);
+ }
+ _ => return Err(arg.unexpected()),
+ }
+ }
+ Ok(res)
+ }
+}
diff --git a/vendor/winnow-0.4.7/examples/ini/parser.rs b/vendor/winnow-0.4.7/examples/ini/parser.rs
new file mode 100644
index 000000000..8852b6d30
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/ini/parser.rs
@@ -0,0 +1,146 @@
+use std::collections::HashMap;
+use std::str;
+
+use winnow::prelude::*;
+use winnow::{
+ ascii::{alphanumeric1 as alphanumeric, multispace0 as multispace, space0 as space},
+ combinator::opt,
+ combinator::repeat,
+ combinator::{delimited, separated_pair, terminated},
+ token::take_while,
+};
+
+pub type Stream<'i> = &'i [u8];
+
+pub fn categories(i: Stream<'_>) -> IResult<Stream<'_>, HashMap<&str, HashMap<&str, &str>>> {
+ repeat(
+ 0..,
+ separated_pair(
+ category,
+ opt(multispace),
+ repeat(0.., terminated(key_value, opt(multispace))),
+ ),
+ )
+ .parse_next(i)
+}
+
+fn category(i: Stream<'_>) -> IResult<Stream<'_>, &str> {
+ delimited('[', take_while(0.., |c| c != b']'), ']')
+ .try_map(str::from_utf8)
+ .parse_next(i)
+}
+
+pub fn key_value(i: Stream<'_>) -> IResult<Stream<'_>, (&str, &str)> {
+ let (i, key) = alphanumeric.try_map(str::from_utf8).parse_next(i)?;
+ let (i, _) = (opt(space), '=', opt(space)).parse_next(i)?;
+ let (i, val) = take_while(0.., |c| c != b'\n' && c != b';')
+ .try_map(str::from_utf8)
+ .parse_next(i)?;
+ let (i, _) = opt((';', take_while(0.., |c| c != b'\n'))).parse_next(i)?;
+ Ok((i, (key, val)))
+}
+
+#[test]
+fn parse_category_test() {
+ let ini_file = &b"[category]
+
+parameter=value
+key = value2"[..];
+
+ let ini_without_category = &b"\n\nparameter=value
+key = value2"[..];
+
+ let res = category(ini_file);
+ println!("{:?}", res);
+ match res {
+ Ok((i, o)) => println!("i: {:?} | o: {:?}", str::from_utf8(i), o),
+ _ => println!("error"),
+ }
+
+ assert_eq!(res, Ok((ini_without_category, "category")));
+}
+
+#[test]
+fn parse_key_value_test() {
+ let ini_file = &b"parameter=value
+key = value2"[..];
+
+ let ini_without_key_value = &b"\nkey = value2"[..];
+
+ let res = key_value(ini_file);
+ println!("{:?}", res);
+ match res {
+ Ok((i, (o1, o2))) => println!("i: {:?} | o: ({:?},{:?})", str::from_utf8(i), o1, o2),
+ _ => println!("error"),
+ }
+
+ assert_eq!(res, Ok((ini_without_key_value, ("parameter", "value"))));
+}
+
+#[test]
+fn parse_key_value_with_space_test() {
+ let ini_file = &b"parameter = value
+key = value2"[..];
+
+ let ini_without_key_value = &b"\nkey = value2"[..];
+
+ let res = key_value(ini_file);
+ println!("{:?}", res);
+ match res {
+ Ok((i, (o1, o2))) => println!("i: {:?} | o: ({:?},{:?})", str::from_utf8(i), o1, o2),
+ _ => println!("error"),
+ }
+
+ assert_eq!(res, Ok((ini_without_key_value, ("parameter", "value"))));
+}
+
+#[test]
+fn parse_key_value_with_comment_test() {
+ let ini_file = &b"parameter=value;abc
+key = value2"[..];
+
+ let ini_without_key_value = &b"\nkey = value2"[..];
+
+ let res = key_value(ini_file);
+ println!("{:?}", res);
+ match res {
+ Ok((i, (o1, o2))) => println!("i: {:?} | o: ({:?},{:?})", str::from_utf8(i), o1, o2),
+ _ => println!("error"),
+ }
+
+ assert_eq!(res, Ok((ini_without_key_value, ("parameter", "value"))));
+}
+
+#[test]
+fn parse_multiple_categories_test() {
+ let ini_file = &b"[abcd]
+
+parameter=value;abc
+
+key = value2
+
+[category]
+parameter3=value3
+key4 = value4
+"[..];
+
+ let ini_after_parser = &b""[..];
+
+ let res = categories(ini_file);
+ //println!("{:?}", res);
+ match res {
+ Ok((i, ref o)) => println!("i: {:?} | o: {:?}", str::from_utf8(i), o),
+ _ => println!("error"),
+ }
+
+ let mut expected_1: HashMap<&str, &str> = HashMap::new();
+ expected_1.insert("parameter", "value");
+ expected_1.insert("key", "value2");
+ let mut expected_2: HashMap<&str, &str> = HashMap::new();
+ expected_2.insert("parameter3", "value3");
+ expected_2.insert("key4", "value4");
+ let mut expected_h: HashMap<&str, HashMap<&str, &str>> = HashMap::new();
+ expected_h.insert("abcd", expected_1);
+ expected_h.insert("category", expected_2);
+ assert_eq!(res, Ok((ini_after_parser, expected_h)));
+}
diff --git a/vendor/winnow-0.4.7/examples/ini/parser_str.rs b/vendor/winnow-0.4.7/examples/ini/parser_str.rs
new file mode 100644
index 000000000..eb084a9b8
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/ini/parser_str.rs
@@ -0,0 +1,206 @@
+use std::collections::HashMap;
+
+use winnow::prelude::*;
+use winnow::{
+ ascii::{alphanumeric1 as alphanumeric, space0 as space},
+ combinator::opt,
+ combinator::repeat,
+ combinator::{delimited, terminated},
+ token::{take_till0, take_while},
+};
+
+pub type Stream<'i> = &'i str;
+
+pub fn categories(input: Stream<'_>) -> IResult<Stream<'_>, HashMap<&str, HashMap<&str, &str>>> {
+ repeat(0.., category_and_keys).parse_next(input)
+}
+
+fn category_and_keys(i: Stream<'_>) -> IResult<Stream<'_>, (&str, HashMap<&str, &str>)> {
+ (category, keys_and_values).parse_next(i)
+}
+
+fn category(i: Stream<'_>) -> IResult<Stream<'_>, &str> {
+ terminated(
+ delimited('[', take_while(0.., |c| c != ']'), ']'),
+ opt(take_while(1.., " \r\n")),
+ )
+ .parse_next(i)
+}
+
+fn keys_and_values(input: Stream<'_>) -> IResult<Stream<'_>, HashMap<&str, &str>> {
+ repeat(0.., key_value).parse_next(input)
+}
+
+fn key_value(i: Stream<'_>) -> IResult<Stream<'_>, (&str, &str)> {
+ let (i, key) = alphanumeric(i)?;
+ let (i, _) = (opt(space), "=", opt(space)).parse_next(i)?;
+ let (i, val) = take_till0(is_line_ending_or_comment).parse_next(i)?;
+ let (i, _) = opt(space).parse_next(i)?;
+ let (i, _) = opt((";", not_line_ending)).parse_next(i)?;
+ let (i, _) = opt(space_or_line_ending).parse_next(i)?;
+
+ Ok((i, (key, val)))
+}
+
+fn is_line_ending_or_comment(chr: char) -> bool {
+ chr == ';' || chr == '\n'
+}
+
+fn not_line_ending(i: Stream<'_>) -> IResult<Stream<'_>, &str> {
+ take_while(0.., |c| c != '\r' && c != '\n').parse_next(i)
+}
+
+fn space_or_line_ending(i: Stream<'_>) -> IResult<Stream<'_>, &str> {
+ take_while(1.., " \r\n").parse_next(i)
+}
+
+#[test]
+fn parse_category_test() {
+ let ini_file = "[category]
+
+parameter=value
+key = value2";
+
+ let ini_without_category = "parameter=value
+key = value2";
+
+ let res = category(ini_file);
+ println!("{:?}", res);
+ match res {
+ Ok((i, o)) => println!("i: {} | o: {:?}", i, o),
+ _ => println!("error"),
+ }
+
+ assert_eq!(res, Ok((ini_without_category, "category")));
+}
+
+#[test]
+fn parse_key_value_test() {
+ let ini_file = "parameter=value
+key = value2";
+
+ let ini_without_key_value = "key = value2";
+
+ let res = key_value(ini_file);
+ println!("{:?}", res);
+ match res {
+ Ok((i, (o1, o2))) => println!("i: {} | o: ({:?},{:?})", i, o1, o2),
+ _ => println!("error"),
+ }
+
+ assert_eq!(res, Ok((ini_without_key_value, ("parameter", "value"))));
+}
+
+#[test]
+fn parse_key_value_with_space_test() {
+ let ini_file = "parameter = value
+key = value2";
+
+ let ini_without_key_value = "key = value2";
+
+ let res = key_value(ini_file);
+ println!("{:?}", res);
+ match res {
+ Ok((i, (o1, o2))) => println!("i: {} | o: ({:?},{:?})", i, o1, o2),
+ _ => println!("error"),
+ }
+
+ assert_eq!(res, Ok((ini_without_key_value, ("parameter", "value"))));
+}
+
+#[test]
+fn parse_key_value_with_comment_test() {
+ let ini_file = "parameter=value;abc
+key = value2";
+
+ let ini_without_key_value = "key = value2";
+
+ let res = key_value(ini_file);
+ println!("{:?}", res);
+ match res {
+ Ok((i, (o1, o2))) => println!("i: {} | o: ({:?},{:?})", i, o1, o2),
+ _ => println!("error"),
+ }
+
+ assert_eq!(res, Ok((ini_without_key_value, ("parameter", "value"))));
+}
+
+#[test]
+fn parse_multiple_keys_and_values_test() {
+ let ini_file = "parameter=value;abc
+
+key = value2
+
+[category]";
+
+ let ini_without_key_value = "[category]";
+
+ let res = keys_and_values(ini_file);
+ println!("{:?}", res);
+ match res {
+ Ok((i, ref o)) => println!("i: {} | o: {:?}", i, o),
+ _ => println!("error"),
+ }
+
+ let mut expected: HashMap<&str, &str> = HashMap::new();
+ expected.insert("parameter", "value");
+ expected.insert("key", "value2");
+ assert_eq!(res, Ok((ini_without_key_value, expected)));
+}
+
+#[test]
+fn parse_category_then_multiple_keys_and_values_test() {
+ //FIXME: there can be an empty line or a comment line after a category
+ let ini_file = "[abcd]
+parameter=value;abc
+
+key = value2
+
+[category]";
+
+ let ini_after_parser = "[category]";
+
+ let res = category_and_keys(ini_file);
+ println!("{:?}", res);
+ match res {
+ Ok((i, ref o)) => println!("i: {} | o: {:?}", i, o),
+ _ => println!("error"),
+ }
+
+ let mut expected_h: HashMap<&str, &str> = HashMap::new();
+ expected_h.insert("parameter", "value");
+ expected_h.insert("key", "value2");
+ assert_eq!(res, Ok((ini_after_parser, ("abcd", expected_h))));
+}
+
+#[test]
+fn parse_multiple_categories_test() {
+ let ini_file = "[abcd]
+
+parameter=value;abc
+
+key = value2
+
+[category]
+parameter3=value3
+key4 = value4
+";
+
+ let res = categories(ini_file);
+ //println!("{:?}", res);
+ match res {
+ Ok((i, ref o)) => println!("i: {} | o: {:?}", i, o),
+ _ => println!("error"),
+ }
+
+ let mut expected_1: HashMap<&str, &str> = HashMap::new();
+ expected_1.insert("parameter", "value");
+ expected_1.insert("key", "value2");
+ let mut expected_2: HashMap<&str, &str> = HashMap::new();
+ expected_2.insert("parameter3", "value3");
+ expected_2.insert("key4", "value4");
+ let mut expected_h: HashMap<&str, HashMap<&str, &str>> = HashMap::new();
+ expected_h.insert("abcd", expected_1);
+ expected_h.insert("category", expected_2);
+ assert_eq!(res, Ok(("", expected_h)));
+}
diff --git a/vendor/winnow-0.4.7/examples/iterator.rs b/vendor/winnow-0.4.7/examples/iterator.rs
new file mode 100644
index 000000000..826eff3aa
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/iterator.rs
@@ -0,0 +1,81 @@
+use std::collections::HashMap;
+use std::iter::Iterator;
+
+use winnow::ascii::alphanumeric1;
+use winnow::combinator::iterator;
+use winnow::combinator::{separated_pair, terminated};
+use winnow::prelude::*;
+
+fn main() {
+ let mut data = "abcabcabcabc";
+
+ fn parser(i: &str) -> IResult<&str, &str> {
+ "abc".parse_next(i)
+ }
+
+ // `from_fn` (available from Rust 1.34) can create an iterator
+ // from a closure
+ let it = std::iter::from_fn(move || {
+ match parser(data) {
+ // when successful, a parser returns a tuple of
+ // the remaining input and the output value.
+ // So we replace the captured input data with the
+ // remaining input, to be parsed on the next call
+ Ok((i, o)) => {
+ data = i;
+ Some(o)
+ }
+ _ => None,
+ }
+ });
+
+ for value in it {
+ println!("parser returned: {}", value);
+ }
+
+ println!("\n********************\n");
+
+ let data = "abcabcabcabc";
+
+ // if `from_fn` is not available, it is possible to fold
+ // over an iterator of functions
+ let res = std::iter::repeat(parser).take(3).try_fold(
+ (data, Vec::new()),
+ |(data, mut acc), parser| {
+ parser(data).map(|(i, o)| {
+ acc.push(o);
+ (i, acc)
+ })
+ },
+ );
+
+ // will print "parser iterator returned: Ok(("abc", ["abc", "abc", "abc"]))"
+ println!("\nparser iterator returned: {:?}", res);
+
+ println!("\n********************\n");
+
+ let data = "key1:value1,key2:value2,key3:value3,;";
+
+ // `winnow::combinator::iterator` will return an iterator
+ // producing the parsed values. Compared to the previous
+ // solutions:
+ // - we can work with a normal iterator like `from_fn`
+ // - we can get the remaining input afterwards, like with the `try_fold` trick
+ let mut winnow_it = iterator(
+ data,
+ terminated(separated_pair(alphanumeric1, ":", alphanumeric1), ","),
+ );
+
+ let res = winnow_it
+ .map(|(k, v)| (k.to_uppercase(), v))
+ .collect::<HashMap<_, _>>();
+
+ let parser_result: IResult<_, _> = winnow_it.finish();
+ let (remaining_input, ()) = parser_result.unwrap();
+
+ // will print "iterator returned {"key1": "value1", "key3": "value3", "key2": "value2"}, remaining input is ';'"
+ println!(
+ "iterator returned {:?}, remaining input is '{}'",
+ res, remaining_input
+ );
+}
diff --git a/vendor/winnow-0.4.7/examples/json/bench.rs b/vendor/winnow-0.4.7/examples/json/bench.rs
new file mode 100644
index 000000000..0a2fd4ffa
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/json/bench.rs
@@ -0,0 +1,60 @@
+use winnow::Partial;
+
+mod json;
+mod parser;
+mod parser_dispatch;
+mod parser_partial;
+
+fn json_bench(c: &mut criterion::Criterion) {
+ let data = [("small", SMALL), ("canada", CANADA)];
+ let mut group = c.benchmark_group("json");
+ for (name, sample) in data {
+ let len = sample.len();
+ group.throughput(criterion::Throughput::Bytes(len as u64));
+
+ group.bench_with_input(criterion::BenchmarkId::new("basic", name), &len, |b, _| {
+ type Error<'i> = winnow::error::Error<parser::Stream<'i>>;
+
+ b.iter(|| parser::json::<Error>(sample).unwrap());
+ });
+ group.bench_with_input(
+ criterion::BenchmarkId::new("verbose", name),
+ &len,
+ |b, _| {
+ type Error<'i> = winnow::error::VerboseError<parser::Stream<'i>>;
+
+ b.iter(|| parser::json::<Error>(sample).unwrap());
+ },
+ );
+ group.bench_with_input(
+ criterion::BenchmarkId::new("dispatch", name),
+ &len,
+ |b, _| {
+ type Error<'i> = winnow::error::Error<parser::Stream<'i>>;
+
+ b.iter(|| parser_dispatch::json::<Error>(sample).unwrap());
+ },
+ );
+ group.bench_with_input(
+ criterion::BenchmarkId::new("streaming", name),
+ &len,
+ |b, _| {
+ type Error<'i> = winnow::error::Error<parser_partial::Stream<'i>>;
+
+ b.iter(|| parser_partial::json::<Error>(Partial::new(sample)).unwrap());
+ },
+ );
+ }
+ group.finish();
+}
+
+const SMALL: &str = " { \"a\"\t: 42,
+ \"b\": [ \"x\", \"y\", 12 ,\"\\u2014\", \"\\uD83D\\uDE10\"] ,
+ \"c\": { \"hello\" : \"world\"
+ }
+ } ";
+
+const CANADA: &str = include_str!("../../third_party/nativejson-benchmark/data/canada.json");
+
+criterion::criterion_group!(benches, json_bench,);
+criterion::criterion_main!(benches);
diff --git a/vendor/winnow-0.4.7/examples/json/json.rs b/vendor/winnow-0.4.7/examples/json/json.rs
new file mode 100644
index 000000000..6912d60e3
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/json/json.rs
@@ -0,0 +1,11 @@
+use std::collections::HashMap;
+
+#[derive(Debug, PartialEq, Clone)]
+pub enum JsonValue {
+ Null,
+ Boolean(bool),
+ Str(String),
+ Num(f64),
+ Array(Vec<JsonValue>),
+ Object(HashMap<String, JsonValue>),
+}
diff --git a/vendor/winnow-0.4.7/examples/json/main.rs b/vendor/winnow-0.4.7/examples/json/main.rs
new file mode 100644
index 000000000..f738a1f05
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/json/main.rs
@@ -0,0 +1,118 @@
+mod json;
+mod parser;
+mod parser_dispatch;
+#[allow(dead_code)]
+mod parser_partial;
+
+use winnow::error::convert_error;
+use winnow::error::Error;
+use winnow::error::VerboseError;
+use winnow::prelude::*;
+
+fn main() -> Result<(), lexopt::Error> {
+ let args = Args::parse()?;
+
+ let data = args.input.as_deref().unwrap_or(if args.invalid {
+ " { \"a\"\t: 42,
+ \"b\": [ \"x\", \"y\", 12 ] ,
+ \"c\": { 1\"hello\" : \"world\"
+ }
+ } "
+ } else {
+ " { \"a\"\t: 42,
+ \"b\": [ \"x\", \"y\", 12 ] ,
+ \"c\": { \"hello\" : \"world\"
+ }
+ } "
+ });
+
+ if args.verbose {
+ match parser::json::<VerboseError<&str>>.parse(data) {
+ Ok(json) => {
+ println!("{:#?}", json);
+ }
+ Err(err) => {
+ if args.pretty {
+ println!("{}", convert_error(data, err));
+ } else {
+ println!("{:#?}", err);
+ }
+ }
+ }
+ } else {
+ let result = match args.implementation {
+ Impl::Naive => parser::json::<Error<&str>>.parse(data),
+ Impl::Dispatch => parser_dispatch::json::<Error<&str>>.parse(data),
+ };
+ match result {
+ Ok(json) => {
+ println!("{:#?}", json);
+ }
+ Err(err) => {
+ println!("{:?}", err);
+ }
+ }
+ }
+
+ Ok(())
+}
+
+#[derive(Default)]
+struct Args {
+ input: Option<String>,
+ invalid: bool,
+ verbose: bool,
+ pretty: bool,
+ implementation: Impl,
+}
+
+enum Impl {
+ Naive,
+ Dispatch,
+}
+
+impl Default for Impl {
+ fn default() -> Self {
+ Self::Naive
+ }
+}
+
+impl Args {
+ fn parse() -> Result<Self, lexopt::Error> {
+ use lexopt::prelude::*;
+
+ let mut res = Args::default();
+
+ let mut args = lexopt::Parser::from_env();
+ while let Some(arg) = args.next()? {
+ match arg {
+ Long("invalid") => {
+ res.invalid = true;
+ }
+ Long("verbose") => {
+ res.verbose = true;
+ // Only case where verbose matters
+ res.invalid = true;
+ }
+ Long("pretty") => {
+ res.verbose = true;
+ // Only case where pretty matters
+ res.pretty = true;
+ res.invalid = true;
+ }
+ Long("impl") => {
+ res.implementation = args.value()?.parse_with(|s| match s {
+ "naive" => Ok(Impl::Naive),
+ "dispatch" => Ok(Impl::Dispatch),
+ _ => Err("expected `naive`, `dispatch`"),
+ })?;
+ }
+ Value(input) => {
+ res.input = Some(input.string()?);
+ }
+ _ => return Err(arg.unexpected()),
+ }
+ }
+ Ok(res)
+ }
+}
diff --git a/vendor/winnow-0.4.7/examples/json/parser.rs b/vendor/winnow-0.4.7/examples/json/parser.rs
new file mode 100644
index 000000000..719dea5d9
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/json/parser.rs
@@ -0,0 +1,315 @@
+use std::collections::HashMap;
+use std::str;
+
+use winnow::prelude::*;
+use winnow::{
+ ascii::float,
+ combinator::alt,
+ combinator::cut_err,
+ combinator::{delimited, preceded, separated_pair, terminated},
+ combinator::{fold_repeat, separated0},
+ error::{ContextError, ParseError},
+ token::{any, none_of, take, take_while},
+};
+
+use crate::json::JsonValue;
+
+pub type Stream<'i> = &'i str;
+
+/// The root element of a JSON parser is any value
+///
+/// A parser has the following signature:
+/// `Stream -> IResult<Stream, Output, Error>`, with `IResult` defined as:
+/// `type IResult<I, O, E = (I, ErrorKind)> = Result<(I, O), Err<E>>;`
+///
+/// most of the times you can ignore the error type and use the default (but this
+/// examples shows custom error types later on!)
+///
+/// Here we use `&str` as input type, but parsers can be generic over
+/// the input type, work directly with `&[u8]`, or any other type that
+/// implements the required traits.
+pub fn json<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, JsonValue, E> {
+ delimited(ws, json_value, ws).parse_next(input)
+}
+
+/// `alt` is a combinator that tries multiple parsers one by one, until
+/// one of them succeeds
+fn json_value<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, JsonValue, E> {
+ // `alt` combines the each value parser. It returns the result of the first
+ // successful parser, or an error
+ alt((
+ null.value(JsonValue::Null),
+ boolean.map(JsonValue::Boolean),
+ string.map(JsonValue::Str),
+ float.map(JsonValue::Num),
+ array.map(JsonValue::Array),
+ object.map(JsonValue::Object),
+ ))
+ .parse_next(input)
+}
+
+/// `tag(string)` generates a parser that recognizes the argument string.
+///
+/// This also shows returning a sub-slice of the original input
+fn null<'i, E: ParseError<Stream<'i>>>(input: Stream<'i>) -> IResult<Stream<'i>, &'i str, E> {
+ // This is a parser that returns `"null"` if it sees the string "null", and
+ // an error otherwise
+ "null".parse_next(input)
+}
+
+/// We can combine `tag` with other functions, like `value` which returns a given constant value on
+/// success.
+fn boolean<'i, E: ParseError<Stream<'i>>>(input: Stream<'i>) -> IResult<Stream<'i>, bool, E> {
+ // This is a parser that returns `true` if it sees the string "true", and
+ // an error otherwise
+ let parse_true = "true".value(true);
+
+ // This is a parser that returns `false` if it sees the string "false", and
+ // an error otherwise
+ let parse_false = "false".value(false);
+
+ alt((parse_true, parse_false)).parse_next(input)
+}
+
+/// This parser gathers all `char`s up into a `String`with a parse to recognize the double quote
+/// character, before the string (using `preceded`) and after the string (using `terminated`).
+fn string<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, String, E> {
+ preceded(
+ '\"',
+ // `cut_err` transforms an `ErrMode::Backtrack(e)` to `ErrMode::Cut(e)`, signaling to
+ // combinators like `alt` that they should not try other parsers. We were in the
+ // right branch (since we found the `"` character) but encountered an error when
+ // parsing the string
+ cut_err(terminated(
+ fold_repeat(0.., character, String::new, |mut string, c| {
+ string.push(c);
+ string
+ }),
+ '\"',
+ )),
+ )
+ // `context` lets you add a static string to errors to provide more information in the
+ // error chain (to indicate which parser had an error)
+ .context("string")
+ .parse_next(input)
+}
+
+/// You can mix the above declarative parsing with an imperative style to handle more unique cases,
+/// like escaping
+fn character<'i, E: ParseError<Stream<'i>>>(input: Stream<'i>) -> IResult<Stream<'i>, char, E> {
+ let (input, c) = none_of("\"").parse_next(input)?;
+ if c == '\\' {
+ alt((
+ any.verify_map(|c| {
+ Some(match c {
+ '"' | '\\' | '/' => c,
+ 'b' => '\x08',
+ 'f' => '\x0C',
+ 'n' => '\n',
+ 'r' => '\r',
+ 't' => '\t',
+ _ => return None,
+ })
+ }),
+ preceded('u', unicode_escape),
+ ))
+ .parse_next(input)
+ } else {
+ Ok((input, c))
+ }
+}
+
+fn unicode_escape<'i, E: ParseError<Stream<'i>>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, char, E> {
+ alt((
+ // Not a surrogate
+ u16_hex
+ .verify(|cp| !(0xD800..0xE000).contains(cp))
+ .map(|cp| cp as u32),
+ // See https://en.wikipedia.org/wiki/UTF-16#Code_points_from_U+010000_to_U+10FFFF for details
+ separated_pair(u16_hex, "\\u", u16_hex)
+ .verify(|(high, low)| (0xD800..0xDC00).contains(high) && (0xDC00..0xE000).contains(low))
+ .map(|(high, low)| {
+ let high_ten = (high as u32) - 0xD800;
+ let low_ten = (low as u32) - 0xDC00;
+ (high_ten << 10) + low_ten + 0x10000
+ }),
+ ))
+ .verify_map(
+ // Could be probably replaced with .unwrap() or _unchecked due to the verify checks
+ std::char::from_u32,
+ )
+ .parse_next(input)
+}
+
+fn u16_hex<'i, E: ParseError<Stream<'i>>>(input: Stream<'i>) -> IResult<Stream<'i>, u16, E> {
+ take(4usize)
+ .verify_map(|s| u16::from_str_radix(s, 16).ok())
+ .parse_next(input)
+}
+
+/// Some combinators, like `separated0` or `many0`, will call a parser repeatedly,
+/// accumulating results in a `Vec`, until it encounters an error.
+/// If you want more control on the parser application, check out the `iterator`
+/// combinator (cf `examples/iterator.rs`)
+fn array<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, Vec<JsonValue>, E> {
+ preceded(
+ ('[', ws),
+ cut_err(terminated(separated0(json_value, (ws, ',', ws)), (ws, ']'))),
+ )
+ .context("array")
+ .parse_next(input)
+}
+
+fn object<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, HashMap<String, JsonValue>, E> {
+ preceded(
+ ('{', ws),
+ cut_err(terminated(separated0(key_value, (ws, ',', ws)), (ws, '}'))),
+ )
+ .context("object")
+ .parse_next(input)
+}
+
+fn key_value<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, (String, JsonValue), E> {
+ separated_pair(string, cut_err((ws, ':', ws)), json_value).parse_next(input)
+}
+
+/// Parser combinators are constructed from the bottom up:
+/// first we write parsers for the smallest elements (here a space character),
+/// then we'll combine them in larger parsers
+fn ws<'i, E: ParseError<Stream<'i>>>(input: Stream<'i>) -> IResult<Stream<'i>, &'i str, E> {
+ // Combinators like `take_while` return a function. That function is the
+ // parser,to which we can pass the input
+ take_while(0.., WS).parse_next(input)
+}
+
+const WS: &str = " \t\r\n";
+
+#[cfg(test)]
+mod test {
+ #[allow(clippy::useless_attribute)]
+ #[allow(dead_code)] // its dead for benches
+ use super::*;
+
+ #[allow(clippy::useless_attribute)]
+ #[allow(dead_code)] // its dead for benches
+ type Error<'i> = winnow::error::Error<&'i str>;
+
+ #[test]
+ fn json_string() {
+ assert_eq!(string::<Error<'_>>("\"\""), Ok(("", "".to_string())));
+ assert_eq!(string::<Error<'_>>("\"abc\""), Ok(("", "abc".to_string())));
+ assert_eq!(
+ string::<Error<'_>>("\"abc\\\"\\\\\\/\\b\\f\\n\\r\\t\\u0001\\u2014\u{2014}def\""),
+ Ok(("", "abc\"\\/\x08\x0C\n\r\t\x01——def".to_string())),
+ );
+ assert_eq!(
+ string::<Error<'_>>("\"\\uD83D\\uDE10\""),
+ Ok(("", "ðŸ˜".to_string()))
+ );
+
+ assert!(string::<Error<'_>>("\"").is_err());
+ assert!(string::<Error<'_>>("\"abc").is_err());
+ assert!(string::<Error<'_>>("\"\\\"").is_err());
+ assert!(string::<Error<'_>>("\"\\u123\"").is_err());
+ assert!(string::<Error<'_>>("\"\\uD800\"").is_err());
+ assert!(string::<Error<'_>>("\"\\uD800\\uD800\"").is_err());
+ assert!(string::<Error<'_>>("\"\\uDC00\"").is_err());
+ }
+
+ #[test]
+ fn json_object() {
+ use JsonValue::{Num, Object, Str};
+
+ let input = r#"{"a":42,"b":"x"}"#;
+
+ let expected = Object(
+ vec![
+ ("a".to_string(), Num(42.0)),
+ ("b".to_string(), Str("x".to_string())),
+ ]
+ .into_iter()
+ .collect(),
+ );
+
+ assert_eq!(json::<Error<'_>>(input), Ok(("", expected)));
+ }
+
+ #[test]
+ fn json_array() {
+ use JsonValue::{Array, Num, Str};
+
+ let input = r#"[42,"x"]"#;
+
+ let expected = Array(vec![Num(42.0), Str("x".to_string())]);
+
+ assert_eq!(json::<Error<'_>>(input), Ok(("", expected)));
+ }
+
+ #[test]
+ fn json_whitespace() {
+ use JsonValue::{Array, Boolean, Null, Num, Object, Str};
+
+ let input = r#"
+ {
+ "null" : null,
+ "true" :true ,
+ "false": false ,
+ "number" : 123e4 ,
+ "string" : " abc 123 " ,
+ "array" : [ false , 1 , "two" ] ,
+ "object" : { "a" : 1.0 , "b" : "c" } ,
+ "empty_array" : [ ] ,
+ "empty_object" : { }
+ }
+ "#;
+
+ assert_eq!(
+ json::<Error<'_>>(input),
+ Ok((
+ "",
+ Object(
+ vec![
+ ("null".to_string(), Null),
+ ("true".to_string(), Boolean(true)),
+ ("false".to_string(), Boolean(false)),
+ ("number".to_string(), Num(123e4)),
+ ("string".to_string(), Str(" abc 123 ".to_string())),
+ (
+ "array".to_string(),
+ Array(vec![Boolean(false), Num(1.0), Str("two".to_string())])
+ ),
+ (
+ "object".to_string(),
+ Object(
+ vec![
+ ("a".to_string(), Num(1.0)),
+ ("b".to_string(), Str("c".to_string())),
+ ]
+ .into_iter()
+ .collect()
+ )
+ ),
+ ("empty_array".to_string(), Array(vec![]),),
+ ("empty_object".to_string(), Object(HashMap::new()),),
+ ]
+ .into_iter()
+ .collect()
+ )
+ ))
+ );
+ }
+}
diff --git a/vendor/winnow-0.4.7/examples/json/parser_dispatch.rs b/vendor/winnow-0.4.7/examples/json/parser_dispatch.rs
new file mode 100644
index 000000000..29d6d5f90
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/json/parser_dispatch.rs
@@ -0,0 +1,322 @@
+use std::collections::HashMap;
+use std::str;
+
+use winnow::prelude::*;
+use winnow::{
+ ascii::float,
+ combinator::cut_err,
+ combinator::fail,
+ combinator::peek,
+ combinator::success,
+ combinator::{alt, dispatch},
+ combinator::{delimited, preceded, separated_pair, terminated},
+ combinator::{fold_repeat, separated0},
+ error::{ContextError, ParseError},
+ token::{any, none_of, take, take_while},
+};
+
+use crate::json::JsonValue;
+
+pub type Stream<'i> = &'i str;
+
+/// The root element of a JSON parser is any value
+///
+/// A parser has the following signature:
+/// `Stream -> IResult<Stream, Output, Error>`, with `IResult` defined as:
+/// `type IResult<I, O, E = (I, ErrorKind)> = Result<(I, O), Err<E>>;`
+///
+/// most of the times you can ignore the error type and use the default (but this
+/// examples shows custom error types later on!)
+///
+/// Here we use `&str` as input type, but parsers can be generic over
+/// the input type, work directly with `&[u8]`, or any other type that
+/// implements the required traits.
+pub fn json<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, JsonValue, E> {
+ delimited(ws, json_value, ws).parse_next(input)
+}
+
+/// `alt` is a combinator that tries multiple parsers one by one, until
+/// one of them succeeds
+fn json_value<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, JsonValue, E> {
+ // `dispatch` gives you `match`-like behavior compared to `alt` successively trying different
+ // implementations.
+ dispatch!(peek(any);
+ 'n' => null.value(JsonValue::Null),
+ 't' => true_.map(JsonValue::Boolean),
+ 'f' => false_.map(JsonValue::Boolean),
+ '"' => string.map(JsonValue::Str),
+ '+' => float.map(JsonValue::Num),
+ '-' => float.map(JsonValue::Num),
+ '0'..='9' => float.map(JsonValue::Num),
+ '[' => array.map(JsonValue::Array),
+ '{' => object.map(JsonValue::Object),
+ _ => fail,
+ )
+ .parse_next(input)
+}
+
+/// `tag(string)` generates a parser that recognizes the argument string.
+///
+/// This also shows returning a sub-slice of the original input
+fn null<'i, E: ParseError<Stream<'i>>>(input: Stream<'i>) -> IResult<Stream<'i>, &'i str, E> {
+ // This is a parser that returns `"null"` if it sees the string "null", and
+ // an error otherwise
+ "null".parse_next(input)
+}
+
+/// We can combine `tag` with other functions, like `value` which returns a given constant value on
+/// success.
+fn true_<'i, E: ParseError<Stream<'i>>>(input: Stream<'i>) -> IResult<Stream<'i>, bool, E> {
+ // This is a parser that returns `true` if it sees the string "true", and
+ // an error otherwise
+ "true".value(true).parse_next(input)
+}
+
+/// We can combine `tag` with other functions, like `value` which returns a given constant value on
+/// success.
+fn false_<'i, E: ParseError<Stream<'i>>>(input: Stream<'i>) -> IResult<Stream<'i>, bool, E> {
+ // This is a parser that returns `false` if it sees the string "false", and
+ // an error otherwise
+ "false".value(false).parse_next(input)
+}
+
+/// This parser gathers all `char`s up into a `String`with a parse to recognize the double quote
+/// character, before the string (using `preceded`) and after the string (using `terminated`).
+fn string<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, String, E> {
+ preceded(
+ '\"',
+ // `cut_err` transforms an `ErrMode::Backtrack(e)` to `ErrMode::Cut(e)`, signaling to
+ // combinators like `alt` that they should not try other parsers. We were in the
+ // right branch (since we found the `"` character) but encountered an error when
+ // parsing the string
+ cut_err(terminated(
+ fold_repeat(0.., character, String::new, |mut string, c| {
+ string.push(c);
+ string
+ }),
+ '\"',
+ )),
+ )
+ // `context` lets you add a static string to errors to provide more information in the
+ // error chain (to indicate which parser had an error)
+ .context("string")
+ .parse_next(input)
+}
+
+/// You can mix the above declarative parsing with an imperative style to handle more unique cases,
+/// like escaping
+fn character<'i, E: ParseError<Stream<'i>>>(input: Stream<'i>) -> IResult<Stream<'i>, char, E> {
+ let (input, c) = none_of("\"").parse_next(input)?;
+ if c == '\\' {
+ dispatch!(any;
+ '"' => success('"'),
+ '\\' => success('\\'),
+ '/' => success('/'),
+ 'b' => success('\x08'),
+ 'f' => success('\x0C'),
+ 'n' => success('\n'),
+ 'r' => success('\r'),
+ 't' => success('\t'),
+ 'u' => unicode_escape,
+ _ => fail,
+ )
+ .parse_next(input)
+ } else {
+ Ok((input, c))
+ }
+}
+
+fn unicode_escape<'i, E: ParseError<Stream<'i>>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, char, E> {
+ alt((
+ // Not a surrogate
+ u16_hex
+ .verify(|cp| !(0xD800..0xE000).contains(cp))
+ .map(|cp| cp as u32),
+ // See https://en.wikipedia.org/wiki/UTF-16#Code_points_from_U+010000_to_U+10FFFF for details
+ separated_pair(u16_hex, "\\u", u16_hex)
+ .verify(|(high, low)| (0xD800..0xDC00).contains(high) && (0xDC00..0xE000).contains(low))
+ .map(|(high, low)| {
+ let high_ten = (high as u32) - 0xD800;
+ let low_ten = (low as u32) - 0xDC00;
+ (high_ten << 10) + low_ten + 0x10000
+ }),
+ ))
+ .verify_map(
+ // Could be probably replaced with .unwrap() or _unchecked due to the verify checks
+ std::char::from_u32,
+ )
+ .parse_next(input)
+}
+
+fn u16_hex<'i, E: ParseError<Stream<'i>>>(input: Stream<'i>) -> IResult<Stream<'i>, u16, E> {
+ take(4usize)
+ .verify_map(|s| u16::from_str_radix(s, 16).ok())
+ .parse_next(input)
+}
+
+/// Some combinators, like `separated0` or `many0`, will call a parser repeatedly,
+/// accumulating results in a `Vec`, until it encounters an error.
+/// If you want more control on the parser application, check out the `iterator`
+/// combinator (cf `examples/iterator.rs`)
+fn array<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, Vec<JsonValue>, E> {
+ preceded(
+ ('[', ws),
+ cut_err(terminated(separated0(json_value, (ws, ',', ws)), (ws, ']'))),
+ )
+ .context("array")
+ .parse_next(input)
+}
+
+fn object<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, HashMap<String, JsonValue>, E> {
+ preceded(
+ ('{', ws),
+ cut_err(terminated(separated0(key_value, (ws, ',', ws)), (ws, '}'))),
+ )
+ .context("object")
+ .parse_next(input)
+}
+
+fn key_value<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, (String, JsonValue), E> {
+ separated_pair(string, cut_err((ws, ':', ws)), json_value).parse_next(input)
+}
+
+/// Parser combinators are constructed from the bottom up:
+/// first we write parsers for the smallest elements (here a space character),
+/// then we'll combine them in larger parsers
+fn ws<'i, E: ParseError<Stream<'i>>>(input: Stream<'i>) -> IResult<Stream<'i>, &'i str, E> {
+ // Combinators like `take_while` return a function. That function is the
+ // parser,to which we can pass the input
+ take_while(0.., WS).parse_next(input)
+}
+
+const WS: &str = " \t\r\n";
+
+#[cfg(test)]
+mod test {
+ #[allow(clippy::useless_attribute)]
+ #[allow(dead_code)] // its dead for benches
+ use super::*;
+
+ #[allow(clippy::useless_attribute)]
+ #[allow(dead_code)] // its dead for benches
+ type Error<'i> = winnow::error::Error<&'i str>;
+
+ #[test]
+ fn json_string() {
+ assert_eq!(string::<Error<'_>>("\"\""), Ok(("", "".to_string())));
+ assert_eq!(string::<Error<'_>>("\"abc\""), Ok(("", "abc".to_string())));
+ assert_eq!(
+ string::<Error<'_>>("\"abc\\\"\\\\\\/\\b\\f\\n\\r\\t\\u0001\\u2014\u{2014}def\""),
+ Ok(("", "abc\"\\/\x08\x0C\n\r\t\x01——def".to_string())),
+ );
+ assert_eq!(
+ string::<Error<'_>>("\"\\uD83D\\uDE10\""),
+ Ok(("", "ðŸ˜".to_string()))
+ );
+
+ assert!(string::<Error<'_>>("\"").is_err());
+ assert!(string::<Error<'_>>("\"abc").is_err());
+ assert!(string::<Error<'_>>("\"\\\"").is_err());
+ assert!(string::<Error<'_>>("\"\\u123\"").is_err());
+ assert!(string::<Error<'_>>("\"\\uD800\"").is_err());
+ assert!(string::<Error<'_>>("\"\\uD800\\uD800\"").is_err());
+ assert!(string::<Error<'_>>("\"\\uDC00\"").is_err());
+ }
+
+ #[test]
+ fn json_object() {
+ use JsonValue::{Num, Object, Str};
+
+ let input = r#"{"a":42,"b":"x"}"#;
+
+ let expected = Object(
+ vec![
+ ("a".to_string(), Num(42.0)),
+ ("b".to_string(), Str("x".to_string())),
+ ]
+ .into_iter()
+ .collect(),
+ );
+
+ assert_eq!(json::<Error<'_>>(input), Ok(("", expected)));
+ }
+
+ #[test]
+ fn json_array() {
+ use JsonValue::{Array, Num, Str};
+
+ let input = r#"[42,"x"]"#;
+
+ let expected = Array(vec![Num(42.0), Str("x".to_string())]);
+
+ assert_eq!(json::<Error<'_>>(input), Ok(("", expected)));
+ }
+
+ #[test]
+ fn json_whitespace() {
+ use JsonValue::{Array, Boolean, Null, Num, Object, Str};
+
+ let input = r#"
+ {
+ "null" : null,
+ "true" :true ,
+ "false": false ,
+ "number" : 123e4 ,
+ "string" : " abc 123 " ,
+ "array" : [ false , 1 , "two" ] ,
+ "object" : { "a" : 1.0 , "b" : "c" } ,
+ "empty_array" : [ ] ,
+ "empty_object" : { }
+ }
+ "#;
+
+ assert_eq!(
+ json::<Error<'_>>(input),
+ Ok((
+ "",
+ Object(
+ vec![
+ ("null".to_string(), Null),
+ ("true".to_string(), Boolean(true)),
+ ("false".to_string(), Boolean(false)),
+ ("number".to_string(), Num(123e4)),
+ ("string".to_string(), Str(" abc 123 ".to_string())),
+ (
+ "array".to_string(),
+ Array(vec![Boolean(false), Num(1.0), Str("two".to_string())])
+ ),
+ (
+ "object".to_string(),
+ Object(
+ vec![
+ ("a".to_string(), Num(1.0)),
+ ("b".to_string(), Str("c".to_string())),
+ ]
+ .into_iter()
+ .collect()
+ )
+ ),
+ ("empty_array".to_string(), Array(vec![]),),
+ ("empty_object".to_string(), Object(HashMap::new()),),
+ ]
+ .into_iter()
+ .collect()
+ )
+ ))
+ );
+ }
+}
diff --git a/vendor/winnow-0.4.7/examples/json/parser_partial.rs b/vendor/winnow-0.4.7/examples/json/parser_partial.rs
new file mode 100644
index 000000000..4b6d143f9
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/json/parser_partial.rs
@@ -0,0 +1,338 @@
+use std::collections::HashMap;
+use std::str;
+
+use winnow::prelude::*;
+use winnow::{
+ ascii::float,
+ combinator::alt,
+ combinator::{cut_err, rest},
+ combinator::{delimited, preceded, separated_pair, terminated},
+ combinator::{fold_repeat, separated0},
+ error::{ContextError, ParseError},
+ stream::Partial,
+ token::{any, none_of, take, take_while},
+};
+
+use crate::json::JsonValue;
+
+pub type Stream<'i> = Partial<&'i str>;
+
+/// The root element of a JSON parser is any value
+///
+/// A parser has the following signature:
+/// `Stream -> IResult<Stream, Output, Error>`, with `IResult` defined as:
+/// `type IResult<I, O, E = (I, ErrorKind)> = Result<(I, O), Err<E>>;`
+///
+/// most of the times you can ignore the error type and use the default (but this
+/// examples shows custom error types later on!)
+///
+/// Here we use `&str` as input type, but parsers can be generic over
+/// the input type, work directly with `&[u8]`, or any other type that
+/// implements the required traits.
+pub fn json<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, JsonValue, E> {
+ delimited(ws, json_value, ws_or_eof).parse_next(input)
+}
+
+/// `alt` is a combinator that tries multiple parsers one by one, until
+/// one of them succeeds
+fn json_value<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, JsonValue, E> {
+ // `alt` combines the each value parser. It returns the result of the first
+ // successful parser, or an error
+ alt((
+ null.value(JsonValue::Null),
+ boolean.map(JsonValue::Boolean),
+ string.map(JsonValue::Str),
+ float.map(JsonValue::Num),
+ array.map(JsonValue::Array),
+ object.map(JsonValue::Object),
+ ))
+ .parse_next(input)
+}
+
+/// `tag(string)` generates a parser that recognizes the argument string.
+///
+/// This also shows returning a sub-slice of the original input
+fn null<'i, E: ParseError<Stream<'i>>>(input: Stream<'i>) -> IResult<Stream<'i>, &'i str, E> {
+ // This is a parser that returns `"null"` if it sees the string "null", and
+ // an error otherwise
+ "null".parse_next(input)
+}
+
+/// We can combine `tag` with other functions, like `value` which returns a given constant value on
+/// success.
+fn boolean<'i, E: ParseError<Stream<'i>>>(input: Stream<'i>) -> IResult<Stream<'i>, bool, E> {
+ // This is a parser that returns `true` if it sees the string "true", and
+ // an error otherwise
+ let parse_true = "true".value(true);
+
+ // This is a parser that returns `false` if it sees the string "false", and
+ // an error otherwise
+ let parse_false = "false".value(false);
+
+ alt((parse_true, parse_false)).parse_next(input)
+}
+
+/// This parser gathers all `char`s up into a `String`with a parse to recognize the double quote
+/// character, before the string (using `preceded`) and after the string (using `terminated`).
+fn string<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, String, E> {
+ preceded(
+ '\"',
+ // `cut_err` transforms an `ErrMode::Backtrack(e)` to `ErrMode::Cut(e)`, signaling to
+ // combinators like `alt` that they should not try other parsers. We were in the
+ // right branch (since we found the `"` character) but encountered an error when
+ // parsing the string
+ cut_err(terminated(
+ fold_repeat(0.., character, String::new, |mut string, c| {
+ string.push(c);
+ string
+ }),
+ '\"',
+ )),
+ )
+ // `context` lets you add a static string to errors to provide more information in the
+ // error chain (to indicate which parser had an error)
+ .context("string")
+ .parse_next(input)
+}
+
+/// You can mix the above declarative parsing with an imperative style to handle more unique cases,
+/// like escaping
+fn character<'i, E: ParseError<Stream<'i>>>(input: Stream<'i>) -> IResult<Stream<'i>, char, E> {
+ let (input, c) = none_of("\"").parse_next(input)?;
+ if c == '\\' {
+ alt((
+ any.verify_map(|c| {
+ Some(match c {
+ '"' | '\\' | '/' => c,
+ 'b' => '\x08',
+ 'f' => '\x0C',
+ 'n' => '\n',
+ 'r' => '\r',
+ 't' => '\t',
+ _ => return None,
+ })
+ }),
+ preceded('u', unicode_escape),
+ ))
+ .parse_next(input)
+ } else {
+ Ok((input, c))
+ }
+}
+
+fn unicode_escape<'i, E: ParseError<Stream<'i>>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, char, E> {
+ alt((
+ // Not a surrogate
+ u16_hex
+ .verify(|cp| !(0xD800..0xE000).contains(cp))
+ .map(|cp| cp as u32),
+ // See https://en.wikipedia.org/wiki/UTF-16#Code_points_from_U+010000_to_U+10FFFF for details
+ separated_pair(u16_hex, "\\u", u16_hex)
+ .verify(|(high, low)| (0xD800..0xDC00).contains(high) && (0xDC00..0xE000).contains(low))
+ .map(|(high, low)| {
+ let high_ten = (high as u32) - 0xD800;
+ let low_ten = (low as u32) - 0xDC00;
+ (high_ten << 10) + low_ten + 0x10000
+ }),
+ ))
+ .verify_map(
+ // Could be probably replaced with .unwrap() or _unchecked due to the verify checks
+ std::char::from_u32,
+ )
+ .parse_next(input)
+}
+
+fn u16_hex<'i, E: ParseError<Stream<'i>>>(input: Stream<'i>) -> IResult<Stream<'i>, u16, E> {
+ take(4usize)
+ .verify_map(|s| u16::from_str_radix(s, 16).ok())
+ .parse_next(input)
+}
+
+/// Some combinators, like `separated0` or `many0`, will call a parser repeatedly,
+/// accumulating results in a `Vec`, until it encounters an error.
+/// If you want more control on the parser application, check out the `iterator`
+/// combinator (cf `examples/iterator.rs`)
+fn array<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, Vec<JsonValue>, E> {
+ preceded(
+ ('[', ws),
+ cut_err(terminated(separated0(json_value, (ws, ',', ws)), (ws, ']'))),
+ )
+ .context("array")
+ .parse_next(input)
+}
+
+fn object<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, HashMap<String, JsonValue>, E> {
+ preceded(
+ ('{', ws),
+ cut_err(terminated(separated0(key_value, (ws, ',', ws)), (ws, '}'))),
+ )
+ .context("object")
+ .parse_next(input)
+}
+
+fn key_value<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, (String, JsonValue), E> {
+ separated_pair(string, cut_err((ws, ':', ws)), json_value).parse_next(input)
+}
+
+/// Parser combinators are constructed from the bottom up:
+/// first we write parsers for the smallest elements (here a space character),
+/// then we'll combine them in larger parsers
+fn ws<'i, E: ParseError<Stream<'i>>>(input: Stream<'i>) -> IResult<Stream<'i>, &'i str, E> {
+ // Combinators like `take_while` return a function. That function is the
+ // parser,to which we can pass the input
+ take_while(0.., WS).parse_next(input)
+}
+
+fn ws_or_eof<'i, E: ParseError<Stream<'i>>>(input: Stream<'i>) -> IResult<Stream<'i>, &'i str, E> {
+ rest.verify(|s: &str| s.chars().all(|c| WS.contains(c)))
+ .parse_next(input)
+}
+
+const WS: &str = " \t\r\n";
+
+#[cfg(test)]
+mod test {
+ #[allow(clippy::useless_attribute)]
+ #[allow(dead_code)] // its dead for benches
+ use super::*;
+
+ #[allow(clippy::useless_attribute)]
+ #[allow(dead_code)] // its dead for benches
+ type Error<'i> = winnow::error::Error<Partial<&'i str>>;
+
+ #[test]
+ fn json_string() {
+ assert_eq!(
+ string::<Error<'_>>(Partial::new("\"\"")),
+ Ok((Partial::new(""), "".to_string()))
+ );
+ assert_eq!(
+ string::<Error<'_>>(Partial::new("\"abc\"")),
+ Ok((Partial::new(""), "abc".to_string()))
+ );
+ assert_eq!(
+ string::<Error<'_>>(Partial::new(
+ "\"abc\\\"\\\\\\/\\b\\f\\n\\r\\t\\u0001\\u2014\u{2014}def\""
+ )),
+ Ok((
+ Partial::new(""),
+ "abc\"\\/\x08\x0C\n\r\t\x01——def".to_string()
+ )),
+ );
+ assert_eq!(
+ string::<Error<'_>>(Partial::new("\"\\uD83D\\uDE10\"")),
+ Ok((Partial::new(""), "ðŸ˜".to_string()))
+ );
+
+ assert!(string::<Error<'_>>(Partial::new("\"")).is_err());
+ assert!(string::<Error<'_>>(Partial::new("\"abc")).is_err());
+ assert!(string::<Error<'_>>(Partial::new("\"\\\"")).is_err());
+ assert!(string::<Error<'_>>(Partial::new("\"\\u123\"")).is_err());
+ assert!(string::<Error<'_>>(Partial::new("\"\\uD800\"")).is_err());
+ assert!(string::<Error<'_>>(Partial::new("\"\\uD800\\uD800\"")).is_err());
+ assert!(string::<Error<'_>>(Partial::new("\"\\uDC00\"")).is_err());
+ }
+
+ #[test]
+ fn json_object() {
+ use JsonValue::{Num, Object, Str};
+
+ let input = r#"{"a":42,"b":"x"}"#;
+
+ let expected = Object(
+ vec![
+ ("a".to_string(), Num(42.0)),
+ ("b".to_string(), Str("x".to_string())),
+ ]
+ .into_iter()
+ .collect(),
+ );
+
+ assert_eq!(
+ json::<Error<'_>>(Partial::new(input)),
+ Ok((Partial::new(""), expected))
+ );
+ }
+
+ #[test]
+ fn json_array() {
+ use JsonValue::{Array, Num, Str};
+
+ let input = r#"[42,"x"]"#;
+
+ let expected = Array(vec![Num(42.0), Str("x".to_string())]);
+
+ assert_eq!(
+ json::<Error<'_>>(Partial::new(input)),
+ Ok((Partial::new(""), expected))
+ );
+ }
+
+ #[test]
+ fn json_whitespace() {
+ use JsonValue::{Array, Boolean, Null, Num, Object, Str};
+
+ let input = r#"
+ {
+ "null" : null,
+ "true" :true ,
+ "false": false ,
+ "number" : 123e4 ,
+ "string" : " abc 123 " ,
+ "array" : [ false , 1 , "two" ] ,
+ "object" : { "a" : 1.0 , "b" : "c" } ,
+ "empty_array" : [ ] ,
+ "empty_object" : { }
+ }
+ "#;
+
+ assert_eq!(
+ json::<Error<'_>>(Partial::new(input)),
+ Ok((
+ Partial::new(""),
+ Object(
+ vec![
+ ("null".to_string(), Null),
+ ("true".to_string(), Boolean(true)),
+ ("false".to_string(), Boolean(false)),
+ ("number".to_string(), Num(123e4)),
+ ("string".to_string(), Str(" abc 123 ".to_string())),
+ (
+ "array".to_string(),
+ Array(vec![Boolean(false), Num(1.0), Str("two".to_string())])
+ ),
+ (
+ "object".to_string(),
+ Object(
+ vec![
+ ("a".to_string(), Num(1.0)),
+ ("b".to_string(), Str("c".to_string())),
+ ]
+ .into_iter()
+ .collect()
+ )
+ ),
+ ("empty_array".to_string(), Array(vec![]),),
+ ("empty_object".to_string(), Object(HashMap::new()),),
+ ]
+ .into_iter()
+ .collect()
+ )
+ ))
+ );
+ }
+}
diff --git a/vendor/winnow-0.4.7/examples/json_iterator.rs b/vendor/winnow-0.4.7/examples/json_iterator.rs
new file mode 100644
index 000000000..f4d8ead2a
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/json_iterator.rs
@@ -0,0 +1,305 @@
+use std::collections::HashMap;
+
+use winnow::prelude::*;
+use winnow::{
+ ascii::{alphanumeric1 as alphanumeric, escaped, float},
+ combinator::alt,
+ combinator::cut_err,
+ combinator::separated0,
+ combinator::{preceded, separated_pair, terminated},
+ error::ParseError,
+ token::one_of,
+ token::{tag, take_while},
+ IResult,
+};
+
+use std::cell::Cell;
+use std::str;
+
+#[derive(Clone, Debug)]
+pub struct JsonValue<'a, 'b> {
+ input: &'a str,
+ pub offset: &'b Cell<usize>,
+}
+
+impl<'a, 'b: 'a> JsonValue<'a, 'b> {
+ pub fn new(input: &'a str, offset: &'b Cell<usize>) -> JsonValue<'a, 'b> {
+ JsonValue { input, offset }
+ }
+
+ pub fn offset(&self, input: &'a str) {
+ let offset = input.as_ptr() as usize - self.input.as_ptr() as usize;
+ self.offset.set(offset);
+ }
+
+ pub fn data(&self) -> &'a str {
+ &self.input[self.offset.get()..]
+ }
+
+ pub fn string(&self) -> Option<&'a str> {
+ println!("string()");
+ match string(self.data()) {
+ Ok((i, s)) => {
+ self.offset(i);
+ println!("-> {}", s);
+ Some(s)
+ }
+ _ => None,
+ }
+ }
+
+ pub fn boolean(&self) -> Option<bool> {
+ println!("boolean()");
+ match boolean(self.data()) {
+ Ok((i, o)) => {
+ self.offset(i);
+ println!("-> {}", o);
+ Some(o)
+ }
+ _ => None,
+ }
+ }
+
+ pub fn number(&self) -> Option<f64> {
+ println!("number()");
+ match float::<_, _, ()>(self.data()) {
+ Ok((i, o)) => {
+ self.offset(i);
+ println!("-> {}", o);
+ Some(o)
+ }
+ _ => None,
+ }
+ }
+
+ pub fn array(&self) -> Option<impl Iterator<Item = JsonValue<'a, 'b>>> {
+ println!("array()");
+
+ match tag::<_, _, ()>("[").parse_next(self.data()) {
+ Err(_) => None,
+ Ok((i, _)) => {
+ println!("[");
+ self.offset(i);
+ let mut first = true;
+ let mut done = false;
+ let mut previous = std::usize::MAX;
+
+ let v = self.clone();
+
+ Some(std::iter::from_fn(move || {
+ if done {
+ return None;
+ }
+
+ // if we ignored one of the items, skip over the value
+ if v.offset.get() == previous {
+ println!("skipping value");
+ if let Ok((i, _)) = value(v.data()) {
+ v.offset(i);
+ }
+ }
+
+ if let Ok((i, _)) = tag::<_, _, ()>("]").parse_next(v.data()) {
+ println!("]");
+ v.offset(i);
+ done = true;
+ return None;
+ }
+
+ if first {
+ first = false;
+ } else {
+ match tag::<_, _, ()>(",").parse_next(v.data()) {
+ Ok((i, _)) => {
+ println!(",");
+ v.offset(i);
+ }
+ Err(_) => {
+ done = true;
+ return None;
+ }
+ }
+ }
+
+ println!("-> {}", v.data());
+ previous = v.offset.get();
+ Some(v.clone())
+ }))
+ }
+ }
+ }
+
+ pub fn object(&self) -> Option<impl Iterator<Item = (&'a str, JsonValue<'a, 'b>)>> {
+ println!("object()");
+ match tag::<_, _, ()>("{").parse_next(self.data()) {
+ Err(_) => None,
+ Ok((i, _)) => {
+ self.offset(i);
+
+ println!("{{");
+
+ let mut first = true;
+ let mut done = false;
+ let mut previous = std::usize::MAX;
+
+ let v = self.clone();
+
+ Some(std::iter::from_fn(move || {
+ if done {
+ return None;
+ }
+
+ // if we ignored one of the items, skip over the value
+ if v.offset.get() == previous {
+ println!("skipping value");
+ if let Ok((i, _)) = value(v.data()) {
+ v.offset(i);
+ }
+ }
+
+ if let Ok((i, _)) = tag::<_, _, ()>("}").parse_next(v.data()) {
+ println!("}}");
+ v.offset(i);
+ done = true;
+ return None;
+ }
+
+ if first {
+ first = false;
+ } else {
+ match tag::<_, _, ()>(",").parse_next(v.data()) {
+ Ok((i, _)) => {
+ println!(",");
+ v.offset(i);
+ }
+ Err(_) => {
+ done = true;
+ return None;
+ }
+ }
+ }
+
+ match string(v.data()) {
+ Ok((i, key)) => {
+ v.offset(i);
+
+ match tag::<_, _, ()>(":").parse_next(v.data()) {
+ Err(_) => None,
+ Ok((i, _)) => {
+ v.offset(i);
+
+ previous = v.offset.get();
+
+ println!("-> {} => {}", key, v.data());
+ Some((key, v.clone()))
+ }
+ }
+ }
+ _ => None,
+ }
+ }))
+ }
+ }
+ }
+}
+
+fn sp<'a, E: ParseError<&'a str>>(i: &'a str) -> IResult<&'a str, &'a str, E> {
+ let chars = " \t\r\n";
+
+ take_while(0.., move |c| chars.contains(c)).parse_next(i)
+}
+
+fn parse_str<'a, E: ParseError<&'a str>>(i: &'a str) -> IResult<&'a str, &'a str, E> {
+ escaped(alphanumeric, '\\', one_of("\"n\\")).parse_next(i)
+}
+
+fn string(i: &str) -> IResult<&str, &str> {
+ preceded('\"', cut_err(terminated(parse_str, '\"')))
+ .context("string")
+ .parse_next(i)
+}
+
+fn boolean(input: &str) -> IResult<&str, bool> {
+ alt(("false".map(|_| false), "true".map(|_| true))).parse_next(input)
+}
+
+fn array(i: &str) -> IResult<&str, ()> {
+ preceded(
+ '[',
+ cut_err(terminated(
+ separated0(value, preceded(sp, ',')),
+ preceded(sp, ']'),
+ )),
+ )
+ .context("array")
+ .parse_next(i)
+}
+
+fn key_value(i: &str) -> IResult<&str, (&str, ())> {
+ separated_pair(preceded(sp, string), cut_err(preceded(sp, ':')), value).parse_next(i)
+}
+
+fn hash(i: &str) -> IResult<&str, ()> {
+ preceded(
+ '{',
+ cut_err(terminated(
+ separated0(key_value, preceded(sp, ',')),
+ preceded(sp, '}'),
+ )),
+ )
+ .context("map")
+ .parse_next(i)
+}
+
+fn value(i: &str) -> IResult<&str, ()> {
+ preceded(
+ sp,
+ alt((
+ hash,
+ array,
+ string.map(|_| ()),
+ float::<_, f64, _>.map(|_| ()),
+ boolean.map(|_| ()),
+ )),
+ )
+ .parse_next(i)
+}
+
+/// object(input) -> iterator over (key, `JsonValue`)
+/// array(input) -> iterator over `JsonValue`
+///
+/// JsonValue.string -> iterator over String (returns None after first successful call)
+///
+/// object(input).filter(|(k, _)| k == "users").flatten(|(_, v)| v.object()).filter(|(k, _)| k == "city").flatten(|(_,v)| v.string())
+fn main() {
+ /*let data = "{
+ \"users\": {
+ \"user1\" : { \"city\": \"Nantes\", \"country\": \"France\" },
+ \"user2\" : { \"city\": \"Bruxelles\", \"country\": \"Belgium\" },
+ \"user3\": { \"city\": \"Paris\", \"country\": \"France\", \"age\": 30 }
+ },
+ \"countries\": [\"France\", \"Belgium\"]
+ }";
+ */
+ let data = "{\"users\":{\"user1\":{\"city\":\"Nantes\",\"country\":\"France\"},\"user2\":{\"city\":\"Bruxelles\",\"country\":\"Belgium\"},\"user3\":{\"city\":\"Paris\",\"country\":\"France\",\"age\":30}},\"countries\":[\"France\",\"Belgium\"]}";
+
+ let offset = Cell::new(0);
+ {
+ let parser = JsonValue::new(data, &offset);
+
+ if let Some(o) = parser.object() {
+ let s: HashMap<&str, &str> = o
+ .filter(|(k, _)| *k == "users")
+ .filter_map(|(_, v)| v.object())
+ .flatten()
+ .filter_map(|(user, v)| v.object().map(|o| (user, o)))
+ .flat_map(|(user, o)| {
+ o.filter(|(k, _)| *k == "city")
+ .filter_map(move |(_, v)| v.string().map(|s| (user, s)))
+ })
+ .collect();
+
+ println!("res = {:?}", s);
+ }
+ };
+}
diff --git a/vendor/winnow-0.4.7/examples/ndjson/example.ndjson b/vendor/winnow-0.4.7/examples/ndjson/example.ndjson
new file mode 100644
index 000000000..7f1fca0ca
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/ndjson/example.ndjson
@@ -0,0 +1,158 @@
+{"reason":"compiler-artifact","package_id":"proc-macro2 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro2-1.0.46/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro2-1.0.46/build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","proc-macro"],"filenames":["/home/epage/src/personal/winnow/target/debug/build/proc-macro2-d6a7808ec27a845d/build-script-build"],"executable":null,"fresh":true}
+{"reason":"build-script-executed","package_id":"proc-macro2 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)","linked_libs":[],"linked_paths":[],"cfgs":["use_proc_macro","wrap_proc_macro"],"env":[],"out_dir":"/home/epage/src/personal/winnow/target/debug/build/proc-macro2-e500f83d0dabcc00/out"}
+{"reason":"compiler-artifact","package_id":"quote 1.0.21 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/quote-1.0.21/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/quote-1.0.21/build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","proc-macro"],"filenames":["/home/epage/src/personal/winnow/target/debug/build/quote-e70da9bace8e108a/build-script-build"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"libc 0.2.139 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.139/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.139/build.rs","edition":"2015","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","extra_traits","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/build/libc-ea536a8e67e0b7eb/build-script-build"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"unicode-ident 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/unicode-ident-1.0.5/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"unicode-ident","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/unicode-ident-1.0.5/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libunicode_ident-e72d3e3fa5fdcbf4.rlib","/home/epage/src/personal/winnow/target/debug/deps/libunicode_ident-e72d3e3fa5fdcbf4.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"proc-macro2 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro2-1.0.46/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"proc-macro2","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro2-1.0.46/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","proc-macro"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libproc_macro2-559e547b03a7ac1e.rlib","/home/epage/src/personal/winnow/target/debug/deps/libproc_macro2-559e547b03a7ac1e.rmeta"],"executable":null,"fresh":true}
+{"reason":"build-script-executed","package_id":"libc 0.2.139 (registry+https://github.com/rust-lang/crates.io-index)","linked_libs":[],"linked_paths":[],"cfgs":["freebsd11","libc_priv_mod_use","libc_union","libc_const_size_of","libc_align","libc_int128","libc_core_cvoid","libc_packedN","libc_cfg_target_vendor","libc_non_exhaustive","libc_ptr_addr_of","libc_underscore_const_names","libc_const_extern_fn"],"env":[],"out_dir":"/home/epage/src/personal/winnow/target/debug/build/libc-94d2f48bd38a8056/out"}
+{"reason":"build-script-executed","package_id":"quote 1.0.21 (registry+https://github.com/rust-lang/crates.io-index)","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"/home/epage/src/personal/winnow/target/debug/build/quote-a2754428d152a498/out"}
+{"reason":"compiler-artifact","package_id":"syn 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/syn-1.0.102/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/syn-1.0.102/build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["clone-impls","default","derive","parsing","printing","proc-macro","quote"],"filenames":["/home/epage/src/personal/winnow/target/debug/build/syn-c9e8af729632e4e4/build-script-build"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"cfg-if 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/cfg-if-1.0.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"cfg-if","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/cfg-if-1.0.0/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libcfg_if-047a17fcf848a7e5.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"autocfg 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/autocfg-1.1.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"autocfg","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/autocfg-1.1.0/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libautocfg-25db3455927a66e1.rlib","/home/epage/src/personal/winnow/target/debug/deps/libautocfg-25db3455927a66e1.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"serde_derive 1.0.145 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/serde_derive-1.0.145/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/serde_derive-1.0.145/build.rs","edition":"2015","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["/home/epage/src/personal/winnow/target/debug/build/serde_derive-fcc2f4aec2a2d4ab/build-script-build"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"serde 1.0.145 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/serde-1.0.145/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/serde-1.0.145/build.rs","edition":"2015","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","derive","serde_derive","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/build/serde-3f78a53b92e21d4d/build-script-build"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"libc 0.2.139 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.139/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"libc","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.139/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","extra_traits","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/liblibc-5b6dd9f3e6fc0120.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"quote 1.0.21 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/quote-1.0.21/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"quote","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/quote-1.0.21/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","proc-macro"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libquote-9a0c3a96b2cdc59c.rlib","/home/epage/src/personal/winnow/target/debug/deps/libquote-9a0c3a96b2cdc59c.rmeta"],"executable":null,"fresh":true}
+{"reason":"build-script-executed","package_id":"syn 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)","linked_libs":[],"linked_paths":[],"cfgs":["syn_disable_nightly_tests"],"env":[],"out_dir":"/home/epage/src/personal/winnow/target/debug/build/syn-0a9a191063f1b2fc/out"}
+{"reason":"build-script-executed","package_id":"serde_derive 1.0.145 (registry+https://github.com/rust-lang/crates.io-index)","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"/home/epage/src/personal/winnow/target/debug/build/serde_derive-ead5e900bac8546f/out"}
+{"reason":"build-script-executed","package_id":"serde 1.0.145 (registry+https://github.com/rust-lang/crates.io-index)","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"/home/epage/src/personal/winnow/target/debug/build/serde-03f4af86861cbc3e/out"}
+{"reason":"compiler-artifact","package_id":"thiserror 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/thiserror-1.0.38/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/thiserror-1.0.38/build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/build/thiserror-66462325c558a4d5/build-script-build"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"ryu 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/ryu-1.0.11/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"ryu","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/ryu-1.0.11/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libryu-0e7b0d46c4589f15.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"crossbeam-utils 0.8.12 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/crossbeam-utils-0.8.12/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/crossbeam-utils-0.8.12/build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/build/crossbeam-utils-c9170234d86239e2/build-script-build"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"memchr 2.5.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/memchr-2.5.0/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/memchr-2.5.0/build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/build/memchr-99ffc1dfd2c517c1/build-script-build"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"serde_json 1.0.86 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/serde_json-1.0.86/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/serde_json-1.0.86/build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/build/serde_json-3051866d1babe853/build-script-build"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"memoffset 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/memoffset-0.6.5/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/memoffset-0.6.5/build.rs","edition":"2015","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["/home/epage/src/personal/winnow/target/debug/build/memoffset-37767cb27e2441e6/build-script-build"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"bitflags 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/bitflags-1.3.2/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"bitflags","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/bitflags-1.3.2/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libbitflags-ea9a4e086e887550.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"itoa 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/itoa-1.0.4/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"itoa","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/itoa-1.0.4/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libitoa-69c375d2fd4189a8.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"crossbeam-epoch 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/crossbeam-epoch-0.9.11/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/crossbeam-epoch-0.9.11/build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/build/crossbeam-epoch-ec0452f91ac732bb/build-script-build"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"ucd-trie 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/ucd-trie-0.1.5/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"ucd-trie","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/ucd-trie-0.1.5/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libucd_trie-eb38f7c85a03bb9d.rlib","/home/epage/src/personal/winnow/target/debug/deps/libucd_trie-eb38f7c85a03bb9d.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"io-lifetimes 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.5/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.5/build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["close","default","libc","windows-sys"],"filenames":["/home/epage/src/personal/winnow/target/debug/build/io-lifetimes-18d168bedd0c64e8/build-script-build"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"log 0.4.17 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/log-0.4.17/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/log-0.4.17/build.rs","edition":"2015","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/build/log-52c513d099058ca0/build-script-build"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"num-traits 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/num-traits-0.2.15/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/num-traits-0.2.15/build.rs","edition":"2015","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/build/num-traits-77d338745cc017c3/build-script-build"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"rayon-core 1.9.3 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.3/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.3/build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/build/rayon-core-eecac7c574986103/build-script-build"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"rustix 0.36.8 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/rustix-0.36.8/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/rustix-0.36.8/build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","io-lifetimes","libc","std","termios","use-libc-auxv"],"filenames":["/home/epage/src/personal/winnow/target/debug/build/rustix-32859c5d0061115d/build-script-build"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"syn 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/syn-1.0.102/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"syn","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/syn-1.0.102/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["clone-impls","default","derive","parsing","printing","proc-macro","quote"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libsyn-c9741af862298610.rlib","/home/epage/src/personal/winnow/target/debug/deps/libsyn-c9741af862298610.rmeta"],"executable":null,"fresh":true}
+{"reason":"build-script-executed","package_id":"thiserror 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"/home/epage/src/personal/winnow/target/debug/build/thiserror-37d8ebe1b01cc51d/out"}
+{"reason":"build-script-executed","package_id":"memchr 2.5.0 (registry+https://github.com/rust-lang/crates.io-index)","linked_libs":[],"linked_paths":[],"cfgs":["memchr_runtime_simd","memchr_runtime_sse2","memchr_runtime_sse42","memchr_runtime_avx"],"env":[],"out_dir":"/home/epage/src/personal/winnow/target/debug/build/memchr-743d739a8480f48a/out"}
+{"reason":"build-script-executed","package_id":"crossbeam-utils 0.8.12 (registry+https://github.com/rust-lang/crates.io-index)","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"/home/epage/src/personal/winnow/target/debug/build/crossbeam-utils-1975bdb7ecfbff2a/out"}
+{"reason":"build-script-executed","package_id":"serde_json 1.0.86 (registry+https://github.com/rust-lang/crates.io-index)","linked_libs":[],"linked_paths":[],"cfgs":["limb_width_64"],"env":[],"out_dir":"/home/epage/src/personal/winnow/target/debug/build/serde_json-3f569e9655a7cd7e/out"}
+{"reason":"build-script-executed","package_id":"memoffset 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)","linked_libs":[],"linked_paths":[],"cfgs":["tuple_ty","allow_clippy","maybe_uninit","doctests","raw_ref_macros"],"env":[],"out_dir":"/home/epage/src/personal/winnow/target/debug/build/memoffset-27100c1e8e709074/out"}
+{"reason":"build-script-executed","package_id":"crossbeam-epoch 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"/home/epage/src/personal/winnow/target/debug/build/crossbeam-epoch-7f643445aebfa633/out"}
+{"reason":"compiler-artifact","package_id":"getrandom 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/getrandom-0.2.7/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"getrandom","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/getrandom-0.2.7/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libgetrandom-d2efdd8bbd217458.rmeta"],"executable":null,"fresh":true}
+{"reason":"build-script-executed","package_id":"log 0.4.17 (registry+https://github.com/rust-lang/crates.io-index)","linked_libs":[],"linked_paths":[],"cfgs":["atomic_cas","has_atomics"],"env":[],"out_dir":"/home/epage/src/personal/winnow/target/debug/build/log-b56bc898d3207792/out"}
+{"reason":"build-script-executed","package_id":"io-lifetimes 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)","linked_libs":[],"linked_paths":[],"cfgs":["io_safety_is_in_std","panic_in_const_fn"],"env":[],"out_dir":"/home/epage/src/personal/winnow/target/debug/build/io-lifetimes-701560b8574ef205/out"}
+{"reason":"compiler-artifact","package_id":"once_cell 1.15.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/once_cell-1.15.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"once_cell","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/once_cell-1.15.0/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default","race","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libonce_cell-c9f9ea925d35da52.rlib","/home/epage/src/personal/winnow/target/debug/deps/libonce_cell-c9f9ea925d35da52.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/scopeguard-1.1.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"scopeguard","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/scopeguard-1.1.0/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libscopeguard-13a4bbff1ce24cc7.rmeta"],"executable":null,"fresh":true}
+{"reason":"build-script-executed","package_id":"rayon-core 1.9.3 (registry+https://github.com/rust-lang/crates.io-index)","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"/home/epage/src/personal/winnow/target/debug/build/rayon-core-b008d521ccec1e7b/out"}
+{"reason":"build-script-executed","package_id":"rustix 0.36.8 (registry+https://github.com/rust-lang/crates.io-index)","linked_libs":[],"linked_paths":[],"cfgs":["linux_raw","asm"],"env":[],"out_dir":"/home/epage/src/personal/winnow/target/debug/build/rustix-e16304a596230d21/out"}
+{"reason":"build-script-executed","package_id":"num-traits 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)","linked_libs":[],"linked_paths":[],"cfgs":["has_i128","has_to_int_unchecked","has_reverse_bits","has_leading_trailing_ones","has_int_assignop_ref","has_div_euclid","has_copysign"],"env":[],"out_dir":"/home/epage/src/personal/winnow/target/debug/build/num-traits-6888d3d0832572a9/out"}
+{"reason":"compiler-artifact","package_id":"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/lazy_static-1.4.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"lazy_static","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/lazy_static-1.4.0/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/liblazy_static-afa8b761bb5d6b57.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"unicode-width 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/unicode-width-0.1.10/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"unicode-width","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/unicode-width-0.1.10/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libunicode_width-8dcd31c030e77d42.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"either 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/either-1.8.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"either","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/either-1.8.0/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["use_std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libeither-3c87d508139ef632.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"linux-raw-sys 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/linux-raw-sys-0.1.4/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"linux-raw-sys","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/linux-raw-sys-0.1.4/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["errno","general","ioctl","no_std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/liblinux_raw_sys-297593f8ceab708f.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"num_cpus 1.13.1 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/num_cpus-1.13.1/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"num_cpus","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/num_cpus-1.13.1/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libnum_cpus-539d2b6f1744794b.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"serde_derive 1.0.145 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/serde_derive-1.0.145/Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"serde_derive","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/serde_derive-1.0.145/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libserde_derive-7934298a61c1a1a2.so"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"thiserror-impl 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/thiserror-impl-1.0.38/Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"thiserror-impl","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/thiserror-impl-1.0.38/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libthiserror_impl-213d86e6d4b69b5f.so"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"memchr 2.5.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/memchr-2.5.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"memchr","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/memchr-2.5.0/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libmemchr-ae9722f3894e3314.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"crossbeam-utils 0.8.12 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/crossbeam-utils-0.8.12/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"crossbeam-utils","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/crossbeam-utils-0.8.12/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libcrossbeam_utils-59f0a08b7eefe073.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"memoffset 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/memoffset-0.6.5/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"memoffset","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/memoffset-0.6.5/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libmemoffset-4787845978faa8b8.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"io-lifetimes 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.5/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"io-lifetimes","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/io-lifetimes-1.0.5/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["close","default","libc","windows-sys"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libio_lifetimes-0d158e24024d572c.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"log 0.4.17 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/log-0.4.17/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"log","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/log-0.4.17/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/liblog-3242a8c3b3d72769.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"rand_core 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/rand_core-0.6.4/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rand_core","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/rand_core-0.6.4/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","getrandom","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/librand_core-aa1df72cb81e420e.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"num-traits 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/num-traits-0.2.15/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"num-traits","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/num-traits-0.2.15/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libnum_traits-1c8d0251ac4ea61d.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"rayon 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.5.3/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.5.3/build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/build/rayon-4f0513187044c0f2/build-script-build"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"escargot 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/escargot-0.5.7/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/escargot-0.5.7/build.rs","edition":"2018","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/build/escargot-44a89e78cfd0d26f/build-script-build"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"yansi 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/yansi-0.5.1/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"yansi","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/yansi-0.5.1/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libyansi-62809433fc3ff8e9.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"regex-automata 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-automata-0.1.10/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"regex-automata","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-automata-0.1.10/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libregex_automata-741e79c4b6938d7d.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"remove_dir_all 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/remove_dir_all-0.5.3/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"remove_dir_all","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/remove_dir_all-0.5.3/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libremove_dir_all-bcafaf4f00d8e4a4.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"regex-syntax 0.6.27 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-syntax-0.6.27/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"regex-syntax","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-syntax-0.6.27/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","unicode","unicode-age","unicode-bool","unicode-case","unicode-gencat","unicode-perl","unicode-script","unicode-segment"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libregex_syntax-3fe0a07eb00f644f.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"ucd-trie 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/ucd-trie-0.1.5/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"ucd-trie","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/ucd-trie-0.1.5/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libucd_trie-b01a07ea40c7e7ed.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"plotters-backend 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/plotters-backend-0.3.4/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"plotters-backend","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/plotters-backend-0.3.4/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libplotters_backend-34c8fa8c2b121eeb.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"ppv-lite86 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/ppv-lite86-0.2.16/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"ppv-lite86","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/ppv-lite86-0.2.16/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["simd","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libppv_lite86-3b9c603c4b32aff6.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"fastrand 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/fastrand-1.8.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"fastrand","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/fastrand-1.8.0/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libfastrand-52ad6b37c39c8a90.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"itertools 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/itertools-0.10.5/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"itertools","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/itertools-0.10.5/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","use_alloc","use_std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libitertools-ba05d1064477b941.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"serde 1.0.145 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/serde-1.0.145/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"serde","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/serde-1.0.145/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","derive","serde_derive","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libserde-e026f194fb97de03.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"thiserror 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/thiserror-1.0.38/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"thiserror","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/thiserror-1.0.38/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libthiserror-4481f6326f711f93.rlib","/home/epage/src/personal/winnow/target/debug/deps/libthiserror-4481f6326f711f93.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"crossbeam-epoch 0.9.11 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/crossbeam-epoch-0.9.11/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"crossbeam-epoch","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/crossbeam-epoch-0.9.11/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libcrossbeam_epoch-caa786e06425cee9.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"thiserror 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/thiserror-1.0.38/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"thiserror","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/thiserror-1.0.38/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libthiserror-9187d79370422188.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"rustix 0.36.8 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/rustix-0.36.8/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rustix","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/rustix-0.36.8/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","io-lifetimes","libc","std","termios","use-libc-auxv"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/librustix-ec48622574cca747.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"crossbeam-channel 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/crossbeam-channel-0.5.6/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"crossbeam-channel","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/crossbeam-channel-0.5.6/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["crossbeam-utils","default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libcrossbeam_channel-a9b11ccef7773884.rmeta"],"executable":null,"fresh":true}
+{"reason":"build-script-executed","package_id":"escargot 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"/home/epage/src/personal/winnow/target/debug/build/escargot-5711ac23b4781245/out"}
+{"reason":"compiler-artifact","package_id":"tempfile 3.3.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/tempfile-3.3.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"tempfile","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/tempfile-3.3.0/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libtempfile-8b83de608c2a0658.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"rand_chacha 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/rand_chacha-0.3.1/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rand_chacha","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/rand_chacha-0.3.1/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/librand_chacha-5967d0068d39b018.rmeta"],"executable":null,"fresh":true}
+{"reason":"build-script-executed","package_id":"rayon 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)","linked_libs":[],"linked_paths":[],"cfgs":["has_step_by_rev","has_min_const_generics","has_control_flow"],"env":[],"out_dir":"/home/epage/src/personal/winnow/target/debug/build/rayon-d01aa17f59a1e98f/out"}
+{"reason":"compiler-artifact","package_id":"plotters-svg 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/plotters-svg-0.3.3/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"plotters-svg","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/plotters-svg-0.3.3/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libplotters_svg-2bb014e4a5d863b1.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"csv-core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/csv-core-0.1.10/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"csv-core","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/csv-core-0.1.10/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libcsv_core-bf47a6ecf716f212.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/textwrap-0.11.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"textwrap","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/textwrap-0.11.0/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libtextwrap-1f9a5b633ba2872d.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/atty-0.2.14/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"atty","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/atty-0.2.14/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libatty-7590cc9da5872c3b.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"wait-timeout 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/wait-timeout-0.2.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"wait-timeout","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/wait-timeout-0.2.0/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libwait_timeout-d79299ed1c2df76b.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"diff 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/diff-0.1.13/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"diff","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/diff-0.1.13/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libdiff-a3c1327ada950886.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"concolor-query 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/concolor-query-0.1.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"concolor-query","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/concolor-query-0.1.0/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["windows"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libconcolor_query-1b1f33bda6da9636.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"same-file 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/same-file-1.0.6/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"same-file","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/same-file-1.0.6/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libsame_file-8dba8c6e6bbcef0a.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"bit-vec 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/bit-vec-0.6.3/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"bit-vec","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/bit-vec-0.6.3/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libbit_vec-5cc1be6dbbb7d172.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/fnv-1.0.7/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"fnv","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/fnv-1.0.7/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libfnv-e811c8615aede027.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"serde_json 1.0.86 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/serde_json-1.0.86/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"serde_json","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/serde_json-1.0.86/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libserde_json-10d232e85191c379.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"pest 2.5.5 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/pest-2.5.5/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"pest","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/pest-2.5.5/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std","thiserror"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libpest-c28124a2ace8ce41.rlib","/home/epage/src/personal/winnow/target/debug/deps/libpest-c28124a2ace8ce41.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"crossbeam-deque 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/crossbeam-deque-0.8.2/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"crossbeam-deque","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/crossbeam-deque-0.8.2/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["crossbeam-epoch","crossbeam-utils","default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libcrossbeam_deque-a531937c1e514cf3.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"bstr 0.2.17 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/bstr-0.2.17/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"bstr","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/bstr-0.2.17/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","lazy_static","regex-automata","serde","serde1","serde1-nostd","std","unicode"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libbstr-3245cbc7e1b4eee0.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"is-terminal 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/is-terminal-0.4.3/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"is-terminal","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/is-terminal-0.4.3/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libis_terminal-ddb4d6f1cea88415.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"pest 2.5.5 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/pest-2.5.5/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"pest","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/pest-2.5.5/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std","thiserror"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libpest-3fe2406158c36e91.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"doc-comment 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/doc-comment-0.3.3/Cargo.toml","target":{"kind":["custom-build"],"crate_types":["bin"],"name":"build-script-build","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/doc-comment-0.3.3/build.rs","edition":"2015","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/build/doc-comment-476a3be5ae9523a0/build-script-build"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"cast 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/cast-0.3.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"cast","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/cast-0.3.0/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libcast-0f6ca0f808d89c22.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"half 1.8.2 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/half-1.8.2/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"half","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/half-1.8.2/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libhalf-ec0164f76c2e0030.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"quick-error 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/quick-error-1.2.3/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"quick-error","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/quick-error-1.2.3/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libquick_error-e7675fcf1fdb276d.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"once_cell 1.15.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/once_cell-1.15.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"once_cell","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/once_cell-1.15.0/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default","race","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libonce_cell-6a83ca81f3790104.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"itoa 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/itoa-0.4.8/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"itoa","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/itoa-0.4.8/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libitoa-af0357b7d39004b0.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"plotters 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/plotters-0.3.4/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"plotters","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/plotters-0.3.4/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["area_series","line_series","plotters-svg","svg_backend"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libplotters-c6ddec411d8166e5.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"walkdir 2.3.2 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/walkdir-2.3.2/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"walkdir","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/walkdir-2.3.2/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libwalkdir-9e7e41a0b2bf038d.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"bit-set 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/bit-set-0.5.3/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"bit-set","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/bit-set-0.5.3/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libbit_set-2aef4909cbe7f4dc.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"pretty_assertions 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/pretty_assertions-1.3.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"pretty_assertions","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/pretty_assertions-1.3.0/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libpretty_assertions-917f731810bb748b.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"clap 2.34.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/clap-2.34.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"clap","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/clap-2.34.0/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libclap-af397f0f338fc8b9.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"rand 0.8.5 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.8.5/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rand","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/rand-0.8.5/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","getrandom","libc","rand_chacha","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/librand-79231f927b479fcb.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"quick-xml 0.23.1 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/quick-xml-0.23.1/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"quick-xml","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/quick-xml-0.23.1/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libquick_xml-56f1f63175d80ec8.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"rand_xorshift 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/rand_xorshift-0.3.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rand_xorshift","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/rand_xorshift-0.3.0/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/librand_xorshift-52cda07a05fef0b5.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"pest_meta 2.5.5 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/pest_meta-2.5.5/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"pest_meta","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/pest_meta-2.5.5/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libpest_meta-e592b8a19ab895e0.rlib","/home/epage/src/personal/winnow/target/debug/deps/libpest_meta-e592b8a19ab895e0.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"rayon-core 1.9.3 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.3/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rayon-core","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-core-1.9.3/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/librayon_core-28c7fd349d6eb8a3.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"tinytemplate 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/tinytemplate-1.2.1/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"tinytemplate","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/tinytemplate-1.2.1/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libtinytemplate-1e34f9b3f54388b1.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"serde_cbor 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/serde_cbor-0.11.2/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"serde_cbor","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/serde_cbor-0.11.2/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libserde_cbor-a6696a57f0dc1b3e.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"escargot 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/escargot-0.5.7/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"escargot","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/escargot-0.5.7/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libescargot-8a922c953f0ce0d3.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"csv 1.1.6 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/csv-1.1.6/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"csv","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/csv-1.1.6/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libcsv-66898c2026240d6e.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"rusty-fork 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/rusty-fork-0.3.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rusty-fork","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/rusty-fork-0.3.0/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["timeout","wait-timeout"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/librusty_fork-3ff190906b9b0c88.rmeta"],"executable":null,"fresh":true}
+{"reason":"build-script-executed","package_id":"doc-comment 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)","linked_libs":[],"linked_paths":[],"cfgs":[],"env":[],"out_dir":"/home/epage/src/personal/winnow/target/debug/build/doc-comment-9f27b6aeba0913e7/out"}
+{"reason":"compiler-artifact","package_id":"criterion-plot 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/criterion-plot-0.4.5/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"criterion-plot","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/criterion-plot-0.4.5/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libcriterion_plot-dc7b9242779f53d6.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"concolor 0.0.11 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/concolor-0.0.11/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"concolor","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/concolor-0.0.11/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["auto","bitflags","clicolor","concolor-query","core","interactive","no_color","std","term","windows"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libconcolor-c2d97e9aa66666d7.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"regex 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.6.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"regex","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.6.0/src/lib.rs","edition":"2018","doc":true,"doctest":false,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libregex-14a9fe50552aac49.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"os_pipe 1.1.3 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/os_pipe-1.1.3/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"os_pipe","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/os_pipe-1.1.3/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libos_pipe-be2a22288f932a49.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"quick-error 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/quick-error-2.0.1/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"quick-error","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/quick-error-2.0.1/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libquick_error-280edfc32cc83812.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"normalize-line-endings 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/normalize-line-endings-0.3.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"normalize-line-endings","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/normalize-line-endings-0.3.0/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libnormalize_line_endings-8a66ba357a389996.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"bytecount 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/bytecount-0.6.3/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"bytecount","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/bytecount-0.6.3/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libbytecount-c083e2cdbbb4f003.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"snapbox-macros 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/snapbox-macros-0.3.1/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"snapbox-macros","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/snapbox-macros-0.3.1/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libsnapbox_macros-d9da77d55f4279bc.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"oorandom 11.1.3 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/oorandom-11.1.3/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"oorandom","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/oorandom-11.1.3/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/liboorandom-052fb0be6ac16c94.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"byteorder 1.4.3 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/byteorder-1.4.3/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"byteorder","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/byteorder-1.4.3/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libbyteorder-9f6a3ecb302657b0.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"similar 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/similar-2.2.1/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"similar","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/similar-2.2.1/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","inline","text"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libsimilar-ca2082771c207a3c.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"termcolor 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/termcolor-1.2.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"termcolor","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/termcolor-1.2.0/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libtermcolor-dad1a04bc5d2f742.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"pest_generator 2.5.5 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/pest_generator-2.5.5/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"pest_generator","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/pest_generator-2.5.5/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libpest_generator-17d62a3fe28e46f5.rlib","/home/epage/src/personal/winnow/target/debug/deps/libpest_generator-17d62a3fe28e46f5.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"rayon 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.5.3/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"rayon","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/rayon-1.5.3/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/librayon-41dd0a10f9292557.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"proptest 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/proptest-1.0.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"proptest","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/proptest-1.0.0/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["bit-set","break-dead-code","default","fork","lazy_static","quick-error","regex-syntax","rusty-fork","std","tempfile","timeout"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libproptest-7f94966e4936da95.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"snapbox 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/snapbox-0.4.6/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"snapbox","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/snapbox-0.4.6/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["color","color-auto","concolor","default","diff","examples"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libsnapbox-d99468a5201f9b87.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"doc-comment 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/doc-comment-0.3.3/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"doc_comment","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/doc-comment-0.3.3/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libdoc_comment-5644793091a6953d.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"lexopt 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/lexopt-0.3.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"lexopt","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/lexopt-0.3.0/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/liblexopt-c945e030a97b8e1f.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"circular 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/circular-0.3.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"circular","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/circular-0.3.0/src/lib.rs","edition":"2015","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":[],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libcircular-6190d46717d189a0.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"winnow 0.3.1 (path+file:///home/epage/src/personal/winnow)","manifest_path":"/home/epage/src/personal/winnow/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"winnow","src_path":"/home/epage/src/personal/winnow/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libwinnow-a64b99fd45b2e97c.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"pest_derive 2.5.5 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/pest_derive-2.5.5/Cargo.toml","target":{"kind":["proc-macro"],"crate_types":["proc-macro"],"name":"pest_derive","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/pest_derive-2.5.5/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libpest_derive-23acec6b80f586aa.so"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"criterion 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/criterion-0.3.6/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"criterion","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/criterion-0.3.6/src/lib.rs","edition":"2018","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["cargo_bench_support","default"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libcriterion-864d2d30e85a25cf.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"handlebars 4.3.6 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/handlebars-4.3.6/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"handlebars","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/handlebars-4.3.6/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["default"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libhandlebars-8f7ca769e2915c7a.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"term-transcript 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)","manifest_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/term-transcript-0.2.0/Cargo.toml","target":{"kind":["lib"],"crate_types":["lib"],"name":"term-transcript","src_path":"/home/epage/.cargo/registry/src/github.com-1ecc6299db9ec823/term-transcript-0.2.0/src/lib.rs","edition":"2021","doc":true,"doctest":true,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["atty","default","handlebars","pretty_assertions","quick-xml","serde","svg","test"],"filenames":["/home/epage/src/personal/winnow/target/debug/deps/libterm_transcript-67537cf74f0568cc.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"winnow 0.3.1 (path+file:///home/epage/src/personal/winnow)","manifest_path":"/home/epage/src/personal/winnow/Cargo.toml","target":{"kind":["example"],"crate_types":["bin"],"name":"ini","src_path":"/home/epage/src/personal/winnow/examples/ini/main.rs","edition":"2021","required-features":["std"],"doc":false,"doctest":false,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/examples/libini-029ff669d11d054a.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"winnow 0.3.1 (path+file:///home/epage/src/personal/winnow)","manifest_path":"/home/epage/src/personal/winnow/Cargo.toml","target":{"kind":["example"],"crate_types":["bin"],"name":"custom_error","src_path":"/home/epage/src/personal/winnow/examples/custom_error.rs","edition":"2021","required-features":["alloc"],"doc":false,"doctest":false,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/examples/libcustom_error-8382fb7d49937909.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"winnow 0.3.1 (path+file:///home/epage/src/personal/winnow)","manifest_path":"/home/epage/src/personal/winnow/Cargo.toml","target":{"kind":["example"],"crate_types":["bin"],"name":"s_expression","src_path":"/home/epage/src/personal/winnow/examples/s_expression/main.rs","edition":"2021","required-features":["alloc"],"doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/examples/libs_expression-0161e16eb3795e0c.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"winnow 0.3.1 (path+file:///home/epage/src/personal/winnow)","manifest_path":"/home/epage/src/personal/winnow/Cargo.toml","target":{"kind":["example"],"crate_types":["bin"],"name":"css","src_path":"/home/epage/src/personal/winnow/examples/css/main.rs","edition":"2021","doc":false,"doctest":false,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/examples/libcss-d003331b0eaf24a5.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"winnow 0.3.1 (path+file:///home/epage/src/personal/winnow)","manifest_path":"/home/epage/src/personal/winnow/Cargo.toml","target":{"kind":["example"],"crate_types":["bin"],"name":"json","src_path":"/home/epage/src/personal/winnow/examples/json/main.rs","edition":"2021","required-features":["std"],"doc":false,"doctest":false,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/examples/libjson-20da0c01e9db35aa.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"winnow 0.3.1 (path+file:///home/epage/src/personal/winnow)","manifest_path":"/home/epage/src/personal/winnow/Cargo.toml","target":{"kind":["example"],"crate_types":["bin"],"name":"ndjson","src_path":"/home/epage/src/personal/winnow/examples/ndjson/main.rs","edition":"2021","required-features":["std"],"doc":false,"doctest":false,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/examples/libndjson-17afbe6b158251ab.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"winnow 0.3.1 (path+file:///home/epage/src/personal/winnow)","manifest_path":"/home/epage/src/personal/winnow/Cargo.toml","target":{"kind":["example"],"crate_types":["bin"],"name":"http","src_path":"/home/epage/src/personal/winnow/examples/http/main.rs","edition":"2021","required-features":["alloc"],"doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/examples/libhttp-08613cd431f59551.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"winnow 0.3.1 (path+file:///home/epage/src/personal/winnow)","manifest_path":"/home/epage/src/personal/winnow/Cargo.toml","target":{"kind":["example"],"crate_types":["bin"],"name":"iterator","src_path":"/home/epage/src/personal/winnow/examples/iterator.rs","edition":"2021","doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/examples/libiterator-46a33f71a5378497.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"winnow 0.3.1 (path+file:///home/epage/src/personal/winnow)","manifest_path":"/home/epage/src/personal/winnow/Cargo.toml","target":{"kind":["example"],"crate_types":["bin"],"name":"string","src_path":"/home/epage/src/personal/winnow/examples/string/main.rs","edition":"2021","required-features":["alloc"],"doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/examples/libstring-73fadc9999eff689.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"winnow 0.3.1 (path+file:///home/epage/src/personal/winnow)","manifest_path":"/home/epage/src/personal/winnow/Cargo.toml","target":{"kind":["example"],"crate_types":["bin"],"name":"arithmetic","src_path":"/home/epage/src/personal/winnow/examples/arithmetic/main.rs","edition":"2021","required-features":["alloc"],"doc":false,"doctest":false,"test":true},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/examples/libarithmetic-04ca5fb45c28ebc2.rmeta"],"executable":null,"fresh":true}
+{"reason":"compiler-artifact","package_id":"winnow 0.3.1 (path+file:///home/epage/src/personal/winnow)","manifest_path":"/home/epage/src/personal/winnow/Cargo.toml","target":{"kind":["example"],"crate_types":["bin"],"name":"json_iterator","src_path":"/home/epage/src/personal/winnow/examples/json_iterator.rs","edition":"2021","required-features":["std"],"doc":false,"doctest":false,"test":false},"profile":{"opt_level":"0","debuginfo":2,"debug_assertions":true,"overflow_checks":true,"test":false},"features":["alloc","default","std"],"filenames":["/home/epage/src/personal/winnow/target/debug/examples/libjson_iterator-9bb330a957b0d53d.rmeta"],"executable":null,"fresh":true}
+{"reason":"build-finished","success":true}
+
diff --git a/vendor/winnow-0.4.7/examples/ndjson/main.rs b/vendor/winnow-0.4.7/examples/ndjson/main.rs
new file mode 100644
index 000000000..d81b6900f
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/ndjson/main.rs
@@ -0,0 +1,113 @@
+mod parser;
+
+use std::io::Read;
+
+use winnow::error::ErrMode;
+use winnow::error::Error;
+use winnow::error::Needed;
+use winnow::stream::Offset;
+
+fn main() -> Result<(), lexopt::Error> {
+ let args = Args::parse()?;
+ let input = args.input.ok_or_else(|| lexopt::Error::MissingValue {
+ option: Some("<PATH>".to_owned()),
+ })?;
+
+ let mut file = std::fs::File::open(&input).map_err(to_lexopt)?;
+
+ // Intentionally starting with a small buffer to make it easier to show `Incomplete` handling
+ let buffer_size = 10;
+ let min_buffer_growth = 100;
+ let buffer_growth_factor = 2;
+ let mut buffer = circular::Buffer::with_capacity(buffer_size);
+ loop {
+ let read = file.read(buffer.space()).map_err(to_lexopt)?;
+ eprintln!("read {}", read);
+ if read == 0 {
+ // Should be EOF since we always make sure there is `available_space`
+ assert_ne!(buffer.available_space(), 0);
+ assert_eq!(
+ buffer.available_data(),
+ 0,
+ "leftover data: {}",
+ String::from_utf8_lossy(buffer.data())
+ );
+ break;
+ }
+ buffer.fill(read);
+
+ loop {
+ let input = parser::Stream::new(std::str::from_utf8(buffer.data()).map_err(to_lexopt)?);
+ match parser::ndjson::<Error<parser::Stream>>(input) {
+ Ok((remainder, value)) => {
+ println!("{:?}", value);
+ println!();
+ // Tell the buffer how much we read
+ let consumed = input.offset_to(&remainder);
+ buffer.consume(consumed);
+ }
+ Err(ErrMode::Backtrack(e)) | Err(ErrMode::Cut(e)) => {
+ return Err(fmt_lexopt(e.to_string()));
+ }
+ Err(ErrMode::Incomplete(Needed::Size(size))) => {
+ // Without the format telling us how much space is required, we really should
+ // treat this the same as `Unknown` but are doing this to demonstrate how to
+ // handle `Size`.
+ //
+ // Even when the format has a header to tell us `Size`, we could hit incidental
+ // `Size(1)`s, so make sure we buffer more space than that to avoid reading
+ // one byte at a time
+ let head_room = size.get().max(min_buffer_growth);
+ let new_capacity = buffer.available_data() + head_room;
+ eprintln!("growing buffer to {}", new_capacity);
+ buffer.grow(new_capacity);
+ if buffer.available_space() < head_room {
+ eprintln!("buffer shift");
+ buffer.shift();
+ }
+ break;
+ }
+ Err(ErrMode::Incomplete(Needed::Unknown)) => {
+ let new_capacity = buffer_growth_factor * buffer.capacity();
+ eprintln!("growing buffer to {}", new_capacity);
+ buffer.grow(new_capacity);
+ break;
+ }
+ }
+ }
+ }
+
+ Ok(())
+}
+
+#[derive(Default)]
+struct Args {
+ input: Option<std::path::PathBuf>,
+}
+
+impl Args {
+ fn parse() -> Result<Self, lexopt::Error> {
+ use lexopt::prelude::*;
+
+ let mut res = Args::default();
+
+ let mut args = lexopt::Parser::from_env();
+ while let Some(arg) = args.next()? {
+ match arg {
+ Value(input) => {
+ res.input = Some(input.into());
+ }
+ _ => return Err(arg.unexpected()),
+ }
+ }
+ Ok(res)
+ }
+}
+
+fn to_lexopt(e: impl std::error::Error + Send + Sync + 'static) -> lexopt::Error {
+ lexopt::Error::Custom(Box::new(e))
+}
+
+fn fmt_lexopt(e: String) -> lexopt::Error {
+ lexopt::Error::Custom(e.into())
+}
diff --git a/vendor/winnow-0.4.7/examples/ndjson/parser.rs b/vendor/winnow-0.4.7/examples/ndjson/parser.rs
new file mode 100644
index 000000000..2a60952e3
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/ndjson/parser.rs
@@ -0,0 +1,328 @@
+use std::collections::HashMap;
+use std::str;
+
+use winnow::prelude::*;
+use winnow::{
+ ascii::float,
+ ascii::line_ending,
+ combinator::alt,
+ combinator::cut_err,
+ combinator::{delimited, preceded, separated_pair, terminated},
+ combinator::{fold_repeat, separated0},
+ error::{ContextError, ParseError},
+ stream::Partial,
+ token::{any, none_of, take, take_while},
+};
+
+#[derive(Debug, PartialEq, Clone)]
+pub enum JsonValue {
+ Null,
+ Boolean(bool),
+ Str(String),
+ Num(f64),
+ Array(Vec<JsonValue>),
+ Object(HashMap<String, JsonValue>),
+}
+
+/// Use `Partial` to cause `ErrMode::Incomplete` while parsing
+pub type Stream<'i> = Partial<&'i str>;
+
+pub fn ndjson<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, Option<JsonValue>, E> {
+ alt((
+ terminated(delimited(ws, json_value, ws), line_ending).map(Some),
+ line_ending.value(None),
+ ))
+ .parse_next(input)
+}
+
+// --Besides `WS`, same as a regular json parser ----------------------------
+
+/// `alt` is a combinator that tries multiple parsers one by one, until
+/// one of them succeeds
+fn json_value<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, JsonValue, E> {
+ // `alt` combines the each value parser. It returns the result of the first
+ // successful parser, or an error
+ alt((
+ null.value(JsonValue::Null),
+ boolean.map(JsonValue::Boolean),
+ string.map(JsonValue::Str),
+ float.map(JsonValue::Num),
+ array.map(JsonValue::Array),
+ object.map(JsonValue::Object),
+ ))
+ .parse_next(input)
+}
+
+/// `tag(string)` generates a parser that recognizes the argument string.
+///
+/// This also shows returning a sub-slice of the original input
+fn null<'i, E: ParseError<Stream<'i>>>(input: Stream<'i>) -> IResult<Stream<'i>, &'i str, E> {
+ // This is a parser that returns `"null"` if it sees the string "null", and
+ // an error otherwise
+ "null".parse_next(input)
+}
+
+/// We can combine `tag` with other functions, like `value` which returns a given constant value on
+/// success.
+fn boolean<'i, E: ParseError<Stream<'i>>>(input: Stream<'i>) -> IResult<Stream<'i>, bool, E> {
+ // This is a parser that returns `true` if it sees the string "true", and
+ // an error otherwise
+ let parse_true = "true".value(true);
+
+ // This is a parser that returns `false` if it sees the string "false", and
+ // an error otherwise
+ let parse_false = "false".value(false);
+
+ alt((parse_true, parse_false)).parse_next(input)
+}
+
+/// This parser gathers all `char`s up into a `String`with a parse to recognize the double quote
+/// character, before the string (using `preceded`) and after the string (using `terminated`).
+fn string<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, String, E> {
+ preceded(
+ '\"',
+ // `cut_err` transforms an `ErrMode::Backtrack(e)` to `ErrMode::Cut(e)`, signaling to
+ // combinators like `alt` that they should not try other parsers. We were in the
+ // right branch (since we found the `"` character) but encountered an error when
+ // parsing the string
+ cut_err(terminated(
+ fold_repeat(0.., character, String::new, |mut string, c| {
+ string.push(c);
+ string
+ }),
+ '\"',
+ )),
+ )
+ // `context` lets you add a static string to errors to provide more information in the
+ // error chain (to indicate which parser had an error)
+ .context("string")
+ .parse_next(input)
+}
+
+/// You can mix the above declarative parsing with an imperative style to handle more unique cases,
+/// like escaping
+fn character<'i, E: ParseError<Stream<'i>>>(input: Stream<'i>) -> IResult<Stream<'i>, char, E> {
+ let (input, c) = none_of("\"").parse_next(input)?;
+ if c == '\\' {
+ alt((
+ any.verify_map(|c| {
+ Some(match c {
+ '"' | '\\' | '/' => c,
+ 'b' => '\x08',
+ 'f' => '\x0C',
+ 'n' => '\n',
+ 'r' => '\r',
+ 't' => '\t',
+ _ => return None,
+ })
+ }),
+ preceded('u', unicode_escape),
+ ))
+ .parse_next(input)
+ } else {
+ Ok((input, c))
+ }
+}
+
+fn unicode_escape<'i, E: ParseError<Stream<'i>>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, char, E> {
+ alt((
+ // Not a surrogate
+ u16_hex
+ .verify(|cp| !(0xD800..0xE000).contains(cp))
+ .map(|cp| cp as u32),
+ // See https://en.wikipedia.org/wiki/UTF-16#Code_points_from_U+010000_to_U+10FFFF for details
+ separated_pair(u16_hex, "\\u", u16_hex)
+ .verify(|(high, low)| (0xD800..0xDC00).contains(high) && (0xDC00..0xE000).contains(low))
+ .map(|(high, low)| {
+ let high_ten = (high as u32) - 0xD800;
+ let low_ten = (low as u32) - 0xDC00;
+ (high_ten << 10) + low_ten + 0x10000
+ }),
+ ))
+ .verify_map(
+ // Could be probably replaced with .unwrap() or _unchecked due to the verify checks
+ std::char::from_u32,
+ )
+ .parse_next(input)
+}
+
+fn u16_hex<'i, E: ParseError<Stream<'i>>>(input: Stream<'i>) -> IResult<Stream<'i>, u16, E> {
+ take(4usize)
+ .verify_map(|s| u16::from_str_radix(s, 16).ok())
+ .parse_next(input)
+}
+
+/// Some combinators, like `separated0` or `many0`, will call a parser repeatedly,
+/// accumulating results in a `Vec`, until it encounters an error.
+/// If you want more control on the parser application, check out the `iterator`
+/// combinator (cf `examples/iterator.rs`)
+fn array<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, Vec<JsonValue>, E> {
+ preceded(
+ ('[', ws),
+ cut_err(terminated(separated0(json_value, (ws, ',', ws)), (ws, ']'))),
+ )
+ .context("array")
+ .parse_next(input)
+}
+
+fn object<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, HashMap<String, JsonValue>, E> {
+ preceded(
+ ('{', ws),
+ cut_err(terminated(separated0(key_value, (ws, ',', ws)), (ws, '}'))),
+ )
+ .context("object")
+ .parse_next(input)
+}
+
+fn key_value<'i, E: ParseError<Stream<'i>> + ContextError<Stream<'i>, &'static str>>(
+ input: Stream<'i>,
+) -> IResult<Stream<'i>, (String, JsonValue), E> {
+ separated_pair(string, cut_err((ws, ':', ws)), json_value).parse_next(input)
+}
+
+/// Parser combinators are constructed from the bottom up:
+/// first we write parsers for the smallest elements (here a space character),
+/// then we'll combine them in larger parsers
+fn ws<'i, E: ParseError<Stream<'i>>>(input: Stream<'i>) -> IResult<Stream<'i>, &'i str, E> {
+ // Combinators like `take_while` return a function. That function is the
+ // parser,to which we can pass the input
+ take_while(0.., WS).parse_next(input)
+}
+
+const WS: &str = " \t";
+
+#[cfg(test)]
+mod test {
+ #[allow(clippy::useless_attribute)]
+ #[allow(dead_code)] // its dead for benches
+ use super::*;
+
+ #[allow(clippy::useless_attribute)]
+ #[allow(dead_code)] // its dead for benches
+ type Error<'i> = winnow::error::Error<Partial<&'i str>>;
+
+ #[test]
+ fn json_string() {
+ assert_eq!(
+ string::<Error<'_>>(Partial::new("\"\"")),
+ Ok((Partial::new(""), "".to_string()))
+ );
+ assert_eq!(
+ string::<Error<'_>>(Partial::new("\"abc\"")),
+ Ok((Partial::new(""), "abc".to_string()))
+ );
+ assert_eq!(
+ string::<Error<'_>>(Partial::new(
+ "\"abc\\\"\\\\\\/\\b\\f\\n\\r\\t\\u0001\\u2014\u{2014}def\""
+ )),
+ Ok((
+ Partial::new(""),
+ "abc\"\\/\x08\x0C\n\r\t\x01——def".to_string()
+ )),
+ );
+ assert_eq!(
+ string::<Error<'_>>(Partial::new("\"\\uD83D\\uDE10\"")),
+ Ok((Partial::new(""), "ðŸ˜".to_string()))
+ );
+
+ assert!(string::<Error<'_>>(Partial::new("\"")).is_err());
+ assert!(string::<Error<'_>>(Partial::new("\"abc")).is_err());
+ assert!(string::<Error<'_>>(Partial::new("\"\\\"")).is_err());
+ assert!(string::<Error<'_>>(Partial::new("\"\\u123\"")).is_err());
+ assert!(string::<Error<'_>>(Partial::new("\"\\uD800\"")).is_err());
+ assert!(string::<Error<'_>>(Partial::new("\"\\uD800\\uD800\"")).is_err());
+ assert!(string::<Error<'_>>(Partial::new("\"\\uDC00\"")).is_err());
+ }
+
+ #[test]
+ fn json_object() {
+ use JsonValue::{Num, Object, Str};
+
+ let input = r#"{"a":42,"b":"x"}
+"#;
+
+ let expected = Object(
+ vec![
+ ("a".to_string(), Num(42.0)),
+ ("b".to_string(), Str("x".to_string())),
+ ]
+ .into_iter()
+ .collect(),
+ );
+
+ assert_eq!(
+ ndjson::<Error<'_>>(Partial::new(input)),
+ Ok((Partial::new(""), Some(expected)))
+ );
+ }
+
+ #[test]
+ fn json_array() {
+ use JsonValue::{Array, Num, Str};
+
+ let input = r#"[42,"x"]
+"#;
+
+ let expected = Array(vec![Num(42.0), Str("x".to_string())]);
+
+ assert_eq!(
+ ndjson::<Error<'_>>(Partial::new(input)),
+ Ok((Partial::new(""), Some(expected)))
+ );
+ }
+
+ #[test]
+ fn json_whitespace() {
+ use JsonValue::{Array, Boolean, Null, Num, Object, Str};
+
+ let input = r#" { "null" : null, "true" :true , "false": false , "number" : 123e4 , "string" : " abc 123 " , "array" : [ false , 1 , "two" ] , "object" : { "a" : 1.0 , "b" : "c" } , "empty_array" : [ ] , "empty_object" : { } }
+"#;
+
+ assert_eq!(
+ ndjson::<Error<'_>>(Partial::new(input)),
+ Ok((
+ Partial::new(""),
+ Some(Object(
+ vec![
+ ("null".to_string(), Null),
+ ("true".to_string(), Boolean(true)),
+ ("false".to_string(), Boolean(false)),
+ ("number".to_string(), Num(123e4)),
+ ("string".to_string(), Str(" abc 123 ".to_string())),
+ (
+ "array".to_string(),
+ Array(vec![Boolean(false), Num(1.0), Str("two".to_string())])
+ ),
+ (
+ "object".to_string(),
+ Object(
+ vec![
+ ("a".to_string(), Num(1.0)),
+ ("b".to_string(), Str("c".to_string())),
+ ]
+ .into_iter()
+ .collect()
+ )
+ ),
+ ("empty_array".to_string(), Array(vec![]),),
+ ("empty_object".to_string(), Object(HashMap::new()),),
+ ]
+ .into_iter()
+ .collect()
+ ))
+ ))
+ );
+ }
+}
diff --git a/vendor/winnow-0.4.7/examples/s_expression/main.rs b/vendor/winnow-0.4.7/examples/s_expression/main.rs
new file mode 100644
index 000000000..da055bed8
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/s_expression/main.rs
@@ -0,0 +1,20 @@
+//! In this example we build an [S-expression](https://en.wikipedia.org/wiki/S-expression)
+//! parser and tiny [lisp](https://en.wikipedia.org/wiki/Lisp_(programming_language)) interpreter.
+//! Lisp is a simple type of language made up of Atoms and Lists, forming easily parsable trees.
+
+#![cfg(feature = "alloc")]
+
+mod parser;
+
+fn main() {
+ let expression_1 = "((if (= (+ 3 (/ 9 3))
+ (* 2 3))
+ *
+ /)
+ 456 123)";
+ println!(
+ "\"{}\"\nevaled gives us: {:?}",
+ expression_1,
+ parser::eval_from_str(expression_1)
+ );
+}
diff --git a/vendor/winnow-0.4.7/examples/s_expression/parser.rs b/vendor/winnow-0.4.7/examples/s_expression/parser.rs
new file mode 100644
index 000000000..9a1686e1c
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/s_expression/parser.rs
@@ -0,0 +1,362 @@
+//! In this example we build an [S-expression](https://en.wikipedia.org/wiki/S-expression)
+//! parser and tiny [lisp](https://en.wikipedia.org/wiki/Lisp_(programming_language)) interpreter.
+//! Lisp is a simple type of language made up of Atoms and Lists, forming easily parsable trees.
+
+use winnow::{
+ ascii::{alpha1, digit1, multispace0, multispace1},
+ combinator::alt,
+ combinator::repeat,
+ combinator::{cut_err, opt},
+ combinator::{delimited, preceded, terminated},
+ error::VerboseError,
+ token::one_of,
+ IResult, Parser,
+};
+
+/// We start with a top-level function to tie everything together, letting
+/// us call eval on a string directly
+pub fn eval_from_str(src: &str) -> Result<Expr, String> {
+ parse_expr(src)
+ .map_err(|e: winnow::error::ErrMode<VerboseError<&str>>| format!("{:#?}", e))
+ .and_then(|(_, exp)| eval_expression(exp).ok_or_else(|| "Eval failed".to_string()))
+}
+
+/// For parsing, we start by defining the types that define the shape of data that we want.
+/// In this case, we want something tree-like
+
+/// The remaining half is Lists. We implement these as recursive Expressions.
+/// For a list of numbers, we have `'(1 2 3)`, which we'll parse to:
+/// ```
+/// Expr::Quote(vec![Expr::Constant(Atom::Num(1)),
+/// Expr::Constant(Atom::Num(2)),
+/// Expr::Constant(Atom::Num(3))])
+/// Quote takes an S-expression and prevents evaluation of it, making it a data
+/// structure that we can deal with programmatically. Thus any valid expression
+/// is also a valid data structure in Lisp itself.
+#[derive(Debug, Eq, PartialEq, Clone)]
+pub enum Expr {
+ Constant(Atom),
+ /// (func-name arg1 arg2)
+ Application(Box<Expr>, Vec<Expr>),
+ /// (if predicate do-this)
+ If(Box<Expr>, Box<Expr>),
+ /// (if predicate do-this otherwise-do-this)
+ IfElse(Box<Expr>, Box<Expr>, Box<Expr>),
+ /// '(3 (if (+ 3 3) 4 5) 7)
+ Quote(Vec<Expr>),
+}
+
+/// We now wrap this type and a few other primitives into our Atom type.
+/// Remember from before that Atoms form one half of our language.
+#[derive(Debug, Eq, PartialEq, Clone)]
+pub enum Atom {
+ Num(i32),
+ Keyword(String),
+ Boolean(bool),
+ BuiltIn(BuiltIn),
+}
+
+/// Now, the most basic type. We define some built-in functions that our lisp has
+#[derive(Debug, Eq, PartialEq, Clone, Copy)]
+pub enum BuiltIn {
+ Plus,
+ Minus,
+ Times,
+ Divide,
+ Equal,
+ Not,
+}
+
+/// With types defined, we move onto the top-level expression parser!
+fn parse_expr(i: &str) -> IResult<&str, Expr, VerboseError<&str>> {
+ preceded(
+ multispace0,
+ alt((parse_constant, parse_application, parse_if, parse_quote)),
+ )
+ .parse_next(i)
+}
+
+/// We then add the Expr layer on top
+fn parse_constant(i: &str) -> IResult<&str, Expr, VerboseError<&str>> {
+ parse_atom.map(Expr::Constant).parse_next(i)
+}
+
+/// Now we take all these simple parsers and connect them.
+/// We can now parse half of our language!
+fn parse_atom(i: &str) -> IResult<&str, Atom, VerboseError<&str>> {
+ alt((
+ parse_num,
+ parse_bool,
+ parse_builtin.map(Atom::BuiltIn),
+ parse_keyword,
+ ))
+ .parse_next(i)
+}
+
+/// Next up is number parsing. We're keeping it simple here by accepting any number (> 1)
+/// of digits but ending the program if it doesn't fit into an i32.
+fn parse_num(i: &str) -> IResult<&str, Atom, VerboseError<&str>> {
+ alt((
+ digit1.try_map(|digit_str: &str| digit_str.parse::<i32>().map(Atom::Num)),
+ preceded("-", digit1).map(|digit_str: &str| Atom::Num(-digit_str.parse::<i32>().unwrap())),
+ ))
+ .parse_next(i)
+}
+
+/// Our boolean values are also constant, so we can do it the same way
+fn parse_bool(i: &str) -> IResult<&str, Atom, VerboseError<&str>> {
+ alt((
+ "#t".map(|_| Atom::Boolean(true)),
+ "#f".map(|_| Atom::Boolean(false)),
+ ))
+ .parse_next(i)
+}
+
+fn parse_builtin(i: &str) -> IResult<&str, BuiltIn, VerboseError<&str>> {
+ // alt gives us the result of first parser that succeeds, of the series of
+ // parsers we give it
+ alt((
+ parse_builtin_op,
+ // map lets us process the parsed output, in this case we know what we parsed,
+ // so we ignore the input and return the BuiltIn directly
+ "not".map(|_| BuiltIn::Not),
+ ))
+ .parse_next(i)
+}
+
+/// Continuing the trend of starting from the simplest piece and building up,
+/// we start by creating a parser for the built-in operator functions.
+fn parse_builtin_op(i: &str) -> IResult<&str, BuiltIn, VerboseError<&str>> {
+ // one_of matches one of the characters we give it
+ let (i, t) = one_of("+-*/=").parse_next(i)?;
+
+ // because we are matching single character tokens, we can do the matching logic
+ // on the returned value
+ Ok((
+ i,
+ match t {
+ '+' => BuiltIn::Plus,
+ '-' => BuiltIn::Minus,
+ '*' => BuiltIn::Times,
+ '/' => BuiltIn::Divide,
+ '=' => BuiltIn::Equal,
+ _ => unreachable!(),
+ },
+ ))
+}
+
+/// The next easiest thing to parse are keywords.
+/// We introduce some error handling combinators: `context` for human readable errors
+/// and `cut_err` to prevent back-tracking.
+///
+/// Put plainly: `preceded(":", cut_err(alpha1))` means that once we see the `:`
+/// character, we have to see one or more alphabetic characters or the input is invalid.
+fn parse_keyword(i: &str) -> IResult<&str, Atom, VerboseError<&str>> {
+ preceded(":", cut_err(alpha1))
+ .context("keyword")
+ .map(|sym_str: &str| Atom::Keyword(sym_str.to_string()))
+ .parse_next(i)
+}
+
+/// We can now use our new combinator to define the rest of the `Expr`s.
+///
+/// Starting with function application, we can see how the parser mirrors our data
+/// definitions: our definition is `Application(Box<Expr>, Vec<Expr>)`, so we know
+/// that we need to parse an expression and then parse 0 or more expressions, all
+/// wrapped in an S-expression.
+///
+/// tuples are themselves a parser, used to sequence parsers together, so we can translate this
+/// directly and then map over it to transform the output into an `Expr::Application`
+fn parse_application(i: &str) -> IResult<&str, Expr, VerboseError<&str>> {
+ let application_inner = (parse_expr, repeat(0.., parse_expr))
+ .map(|(head, tail)| Expr::Application(Box::new(head), tail));
+ // finally, we wrap it in an s-expression
+ s_exp(application_inner).parse_next(i)
+}
+
+/// Because `Expr::If` and `Expr::IfElse` are so similar (we easily could have
+/// defined `Expr::If` to have an `Option` for the else block), we parse both
+/// in a single function.
+///
+/// In fact, we define our parser as if `Expr::If` was defined with an Option in it,
+/// we have the `opt` combinator which fits very nicely here.
+fn parse_if(i: &str) -> IResult<&str, Expr, VerboseError<&str>> {
+ let if_inner = preceded(
+ // here to avoid ambiguity with other names starting with `if`, if we added
+ // variables to our language, we say that if must be terminated by at least
+ // one whitespace character
+ terminated("if", multispace1),
+ cut_err((parse_expr, parse_expr, opt(parse_expr))),
+ )
+ .map(|(pred, true_branch, maybe_false_branch)| {
+ if let Some(false_branch) = maybe_false_branch {
+ Expr::IfElse(
+ Box::new(pred),
+ Box::new(true_branch),
+ Box::new(false_branch),
+ )
+ } else {
+ Expr::If(Box::new(pred), Box::new(true_branch))
+ }
+ })
+ .context("if expression");
+ s_exp(if_inner).parse_next(i)
+}
+
+/// A quoted S-expression is list data structure.
+///
+/// This example doesn't have the symbol atom, but by adding variables and changing
+/// the definition of quote to not always be around an S-expression, we'd get them
+/// naturally.
+fn parse_quote(i: &str) -> IResult<&str, Expr, VerboseError<&str>> {
+ // this should look very straight-forward after all we've done:
+ // we find the `'` (quote) character, use cut_err to say that we're unambiguously
+ // looking for an s-expression of 0 or more expressions, and then parse them
+ preceded("'", cut_err(s_exp(repeat(0.., parse_expr))))
+ .context("quote")
+ .map(Expr::Quote)
+ .parse_next(i)
+}
+
+/// Before continuing, we need a helper function to parse lists.
+/// A list starts with `(` and ends with a matching `)`.
+/// By putting whitespace and newline parsing here, we can avoid having to worry about it
+/// in much of the rest of the parser.
+//.parse_next/
+/// Unlike the previous functions, this function doesn't take or consume input, instead it
+/// takes a parsing function and returns a new parsing function.
+fn s_exp<'a, O1, F>(inner: F) -> impl Parser<&'a str, O1, VerboseError<&'a str>>
+where
+ F: Parser<&'a str, O1, VerboseError<&'a str>>,
+{
+ delimited(
+ '(',
+ preceded(multispace0, inner),
+ cut_err(preceded(multispace0, ')')).context("closing paren"),
+ )
+}
+
+/// And that's it!
+/// We can now parse our entire lisp language.
+///
+/// But in order to make it a little more interesting, we can hack together
+/// a little interpreter to take an Expr, which is really an
+/// [Abstract Syntax Tree](https://en.wikipedia.org/wiki/Abstract_syntax_tree) (AST),
+/// and give us something back
+
+/// This function tries to reduce the AST.
+/// This has to return an Expression rather than an Atom because quoted `s_expressions`
+/// can't be reduced
+fn eval_expression(e: Expr) -> Option<Expr> {
+ match e {
+ // Constants and quoted s-expressions are our base-case
+ Expr::Constant(_) | Expr::Quote(_) => Some(e),
+ // we then recursively `eval_expression` in the context of our special forms
+ // and built-in operators
+ Expr::If(pred, true_branch) => {
+ let reduce_pred = eval_expression(*pred)?;
+ if get_bool_from_expr(reduce_pred)? {
+ eval_expression(*true_branch)
+ } else {
+ None
+ }
+ }
+ Expr::IfElse(pred, true_branch, false_branch) => {
+ let reduce_pred = eval_expression(*pred)?;
+ if get_bool_from_expr(reduce_pred)? {
+ eval_expression(*true_branch)
+ } else {
+ eval_expression(*false_branch)
+ }
+ }
+ Expr::Application(head, tail) => {
+ let reduced_head = eval_expression(*head)?;
+ let reduced_tail = tail
+ .into_iter()
+ .map(eval_expression)
+ .collect::<Option<Vec<Expr>>>()?;
+ if let Expr::Constant(Atom::BuiltIn(bi)) = reduced_head {
+ Some(Expr::Constant(match bi {
+ BuiltIn::Plus => Atom::Num(
+ reduced_tail
+ .into_iter()
+ .map(get_num_from_expr)
+ .collect::<Option<Vec<i32>>>()?
+ .into_iter()
+ .sum(),
+ ),
+ BuiltIn::Times => Atom::Num(
+ reduced_tail
+ .into_iter()
+ .map(get_num_from_expr)
+ .collect::<Option<Vec<i32>>>()?
+ .into_iter()
+ .product(),
+ ),
+ BuiltIn::Equal => Atom::Boolean(
+ reduced_tail
+ .iter()
+ .zip(reduced_tail.iter().skip(1))
+ .all(|(a, b)| a == b),
+ ),
+ BuiltIn::Not => {
+ if reduced_tail.len() != 1 {
+ return None;
+ } else {
+ Atom::Boolean(!get_bool_from_expr(
+ reduced_tail.first().cloned().unwrap(),
+ )?)
+ }
+ }
+ BuiltIn::Minus => {
+ Atom::Num(if let Some(first_elem) = reduced_tail.first().cloned() {
+ let fe = get_num_from_expr(first_elem)?;
+ reduced_tail
+ .into_iter()
+ .map(get_num_from_expr)
+ .collect::<Option<Vec<i32>>>()?
+ .into_iter()
+ .skip(1)
+ .fold(fe, |a, b| a - b)
+ } else {
+ Default::default()
+ })
+ }
+ BuiltIn::Divide => {
+ Atom::Num(if let Some(first_elem) = reduced_tail.first().cloned() {
+ let fe = get_num_from_expr(first_elem)?;
+ reduced_tail
+ .into_iter()
+ .map(get_num_from_expr)
+ .collect::<Option<Vec<i32>>>()?
+ .into_iter()
+ .skip(1)
+ .fold(fe, |a, b| a / b)
+ } else {
+ Default::default()
+ })
+ }
+ }))
+ } else {
+ None
+ }
+ }
+ }
+}
+
+/// To start we define a couple of helper functions
+fn get_num_from_expr(e: Expr) -> Option<i32> {
+ if let Expr::Constant(Atom::Num(n)) = e {
+ Some(n)
+ } else {
+ None
+ }
+}
+
+fn get_bool_from_expr(e: Expr) -> Option<bool> {
+ if let Expr::Constant(Atom::Boolean(b)) = e {
+ Some(b)
+ } else {
+ None
+ }
+}
diff --git a/vendor/winnow-0.4.7/examples/string/main.rs b/vendor/winnow-0.4.7/examples/string/main.rs
new file mode 100644
index 000000000..0c2647e42
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/string/main.rs
@@ -0,0 +1,70 @@
+//! This example shows an example of how to parse an escaped string. The
+//! rules for the string are similar to JSON and rust. A string is:
+//!
+//! - Enclosed by double quotes
+//! - Can contain any raw unescaped code point besides \ and "
+//! - Matches the following escape sequences: \b, \f, \n, \r, \t, \", \\, \/
+//! - Matches code points like Rust: \u{XXXX}, where XXXX can be up to 6
+//! hex characters
+//! - an escape followed by whitespace consumes all whitespace between the
+//! escape and the next non-whitespace character
+
+#![cfg(feature = "alloc")]
+
+mod parser;
+
+use winnow::prelude::*;
+
+fn main() -> Result<(), lexopt::Error> {
+ let args = Args::parse()?;
+
+ let data = args.input.as_deref().unwrap_or("\"abc\"");
+ let result = parser::parse_string::<()>.parse(data);
+ match result {
+ Ok(data) => println!("{}", data),
+ Err(err) => println!("{:?}", err),
+ }
+
+ Ok(())
+}
+
+#[derive(Default)]
+struct Args {
+ input: Option<String>,
+}
+
+impl Args {
+ fn parse() -> Result<Self, lexopt::Error> {
+ use lexopt::prelude::*;
+
+ let mut res = Args::default();
+
+ let mut args = lexopt::Parser::from_env();
+ while let Some(arg) = args.next()? {
+ match arg {
+ Value(input) => {
+ res.input = Some(input.string()?);
+ }
+ _ => return Err(arg.unexpected()),
+ }
+ }
+ Ok(res)
+ }
+}
+
+#[test]
+fn simple() {
+ let data = "\"abc\"";
+ let result = parser::parse_string::<()>.parse(data);
+ assert_eq!(result, Ok(String::from("abc")));
+}
+
+#[test]
+fn escaped() {
+ let data = "\"tab:\\tafter tab, newline:\\nnew line, quote: \\\", emoji: \\u{1F602}, newline:\\nescaped whitespace: \\ abc\"";
+ let result = parser::parse_string::<()>.parse(data);
+ assert_eq!(
+ result,
+ Ok(String::from("tab:\tafter tab, newline:\nnew line, quote: \", emoji: 😂, newline:\nescaped whitespace: abc"))
+ );
+}
diff --git a/vendor/winnow-0.4.7/examples/string/parser.rs b/vendor/winnow-0.4.7/examples/string/parser.rs
new file mode 100644
index 000000000..dcd87f272
--- /dev/null
+++ b/vendor/winnow-0.4.7/examples/string/parser.rs
@@ -0,0 +1,165 @@
+//! This example shows an example of how to parse an escaped string. The
+//! rules for the string are similar to JSON and rust. A string is:
+//!
+//! - Enclosed by double quotes
+//! - Can contain any raw unescaped code point besides \ and "
+//! - Matches the following escape sequences: \b, \f, \n, \r, \t, \", \\, \/
+//! - Matches code points like Rust: \u{XXXX}, where XXXX can be up to 6
+//! hex characters
+//! - an escape followed by whitespace consumes all whitespace between the
+//! escape and the next non-whitespace character
+
+use winnow::ascii::multispace1;
+use winnow::combinator::alt;
+use winnow::combinator::fold_repeat;
+use winnow::combinator::{delimited, preceded};
+use winnow::error::{FromExternalError, ParseError};
+use winnow::prelude::*;
+use winnow::token::{take_till1, take_while};
+
+/// Parse a string. Use a loop of `parse_fragment` and push all of the fragments
+/// into an output string.
+pub fn parse_string<'a, E>(input: &'a str) -> IResult<&'a str, String, E>
+where
+ E: ParseError<&'a str> + FromExternalError<&'a str, std::num::ParseIntError>,
+{
+ // fold_repeat is the equivalent of iterator::fold. It runs a parser in a loop,
+ // and for each output value, calls a folding function on each output value.
+ let build_string = fold_repeat(
+ 0..,
+ // Our parser function – parses a single string fragment
+ parse_fragment,
+ // Our init value, an empty string
+ String::new,
+ // Our folding function. For each fragment, append the fragment to the
+ // string.
+ |mut string, fragment| {
+ match fragment {
+ StringFragment::Literal(s) => string.push_str(s),
+ StringFragment::EscapedChar(c) => string.push(c),
+ StringFragment::EscapedWS => {}
+ }
+ string
+ },
+ );
+
+ // Finally, parse the string. Note that, if `build_string` could accept a raw
+ // " character, the closing delimiter " would never match. When using
+ // `delimited` with a looping parser (like fold_repeat), be sure that the
+ // loop won't accidentally match your closing delimiter!
+ delimited('"', build_string, '"').parse_next(input)
+}
+
+/// A string fragment contains a fragment of a string being parsed: either
+/// a non-empty Literal (a series of non-escaped characters), a single
+/// parsed escaped character, or a block of escaped whitespace.
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+enum StringFragment<'a> {
+ Literal(&'a str),
+ EscapedChar(char),
+ EscapedWS,
+}
+
+/// Combine `parse_literal`, `parse_escaped_whitespace`, and `parse_escaped_char`
+/// into a `StringFragment`.
+fn parse_fragment<'a, E>(input: &'a str) -> IResult<&'a str, StringFragment<'a>, E>
+where
+ E: ParseError<&'a str> + FromExternalError<&'a str, std::num::ParseIntError>,
+{
+ alt((
+ // The `map` combinator runs a parser, then applies a function to the output
+ // of that parser.
+ parse_literal.map(StringFragment::Literal),
+ parse_escaped_char.map(StringFragment::EscapedChar),
+ parse_escaped_whitespace.value(StringFragment::EscapedWS),
+ ))
+ .parse_next(input)
+}
+
+/// Parse a non-empty block of text that doesn't include \ or "
+fn parse_literal<'a, E: ParseError<&'a str>>(input: &'a str) -> IResult<&'a str, &'a str, E> {
+ // `take_till1` parses a string of 0 or more characters that aren't one of the
+ // given characters.
+ let not_quote_slash = take_till1("\"\\");
+
+ // `verify` runs a parser, then runs a verification function on the output of
+ // the parser. The verification function accepts the output only if it
+ // returns true. In this case, we want to ensure that the output of take_till1
+ // is non-empty.
+ not_quote_slash
+ .verify(|s: &str| !s.is_empty())
+ .parse_next(input)
+}
+
+// parser combinators are constructed from the bottom up:
+// first we write parsers for the smallest elements (escaped characters),
+// then combine them into larger parsers.
+
+/// Parse an escaped character: \n, \t, \r, \u{00AC}, etc.
+fn parse_escaped_char<'a, E>(input: &'a str) -> IResult<&'a str, char, E>
+where
+ E: ParseError<&'a str> + FromExternalError<&'a str, std::num::ParseIntError>,
+{
+ preceded(
+ '\\',
+ // `alt` tries each parser in sequence, returning the result of
+ // the first successful match
+ alt((
+ parse_unicode,
+ // The `value` parser returns a fixed value (the first argument) if its
+ // parser (the second argument) succeeds. In these cases, it looks for
+ // the marker characters (n, r, t, etc) and returns the matching
+ // character (\n, \r, \t, etc).
+ 'n'.value('\n'),
+ 'r'.value('\r'),
+ 't'.value('\t'),
+ 'b'.value('\u{08}'),
+ 'f'.value('\u{0C}'),
+ '\\'.value('\\'),
+ '/'.value('/'),
+ '"'.value('"'),
+ )),
+ )
+ .parse_next(input)
+}
+
+/// Parse a unicode sequence, of the form u{XXXX}, where XXXX is 1 to 6
+/// hexadecimal numerals. We will combine this later with `parse_escaped_char`
+/// to parse sequences like \u{00AC}.
+fn parse_unicode<'a, E>(input: &'a str) -> IResult<&'a str, char, E>
+where
+ E: ParseError<&'a str> + FromExternalError<&'a str, std::num::ParseIntError>,
+{
+ // `take_while` parses between `m` and `n` bytes (inclusive) that match
+ // a predicate. `parse_hex` here parses between 1 and 6 hexadecimal numerals.
+ let parse_hex = take_while(1..=6, |c: char| c.is_ascii_hexdigit());
+
+ // `preceded` takes a prefix parser, and if it succeeds, returns the result
+ // of the body parser. In this case, it parses u{XXXX}.
+ let parse_delimited_hex = preceded(
+ 'u',
+ // `delimited` is like `preceded`, but it parses both a prefix and a suffix.
+ // It returns the result of the middle parser. In this case, it parses
+ // {XXXX}, where XXXX is 1 to 6 hex numerals, and returns XXXX
+ delimited('{', parse_hex, '}'),
+ );
+
+ // `try_map` takes the result of a parser and applies a function that returns
+ // a Result. In this case we take the hex bytes from parse_hex and attempt to
+ // convert them to a u32.
+ let parse_u32 = parse_delimited_hex.try_map(move |hex| u32::from_str_radix(hex, 16));
+
+ // verify_map is like try_map, but it takes an Option instead of a Result. If
+ // the function returns None, verify_map returns an error. In this case, because
+ // not all u32 values are valid unicode code points, we have to fallibly
+ // convert to char with from_u32.
+ parse_u32.verify_map(std::char::from_u32).parse_next(input)
+}
+
+/// Parse a backslash, followed by any amount of whitespace. This is used later
+/// to discard any escaped whitespace.
+fn parse_escaped_whitespace<'a, E: ParseError<&'a str>>(
+ input: &'a str,
+) -> IResult<&'a str, &'a str, E> {
+ preceded('\\', multispace1).parse_next(input)
+}
diff --git a/vendor/winnow-0.4.7/src/_topic/arithmetic.rs b/vendor/winnow-0.4.7/src/_topic/arithmetic.rs
new file mode 100644
index 000000000..1a6eddcc4
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/_topic/arithmetic.rs
@@ -0,0 +1,13 @@
+//! # Arithmetic
+//!
+//! ## Direct evaluation
+//!
+//! ```rust
+#![doc = include_str!("../../examples/arithmetic/parser.rs")]
+//! ```
+//!
+//! ## Parse to AST
+//!
+//! ```rust
+#![doc = include_str!("../../examples/arithmetic/parser_ast.rs")]
+//! ```
diff --git a/vendor/winnow-0.4.7/src/_topic/error.rs b/vendor/winnow-0.4.7/src/_topic/error.rs
new file mode 100644
index 000000000..abf2f8dbb
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/_topic/error.rs
@@ -0,0 +1,13 @@
+//! # Custom Errors
+//!
+//! The most basic error type is [`ParseError`][crate::error::ParseError]
+//!
+//! Optional traits include:
+//! - [`ContextError`][crate::error::ContextError]
+//! - [`FromExternalError`][crate::error::FromExternalError]
+//!
+//! # Example
+//!
+//!```rust
+#![doc = include_str!("../../examples/custom_error.rs")]
+//!```
diff --git a/vendor/winnow-0.4.7/src/_topic/fromstr.rs b/vendor/winnow-0.4.7/src/_topic/fromstr.rs
new file mode 100644
index 000000000..d126d16bb
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/_topic/fromstr.rs
@@ -0,0 +1,8 @@
+//! # Implementing `FromStr`
+//!
+//! The [`FromStr` trait][std::str::FromStr] provides
+//! a common interface to parse from a string.
+//!
+//! ```rust
+#![doc = include_str!("../../examples/css/parser.rs")]
+//! ```
diff --git a/vendor/winnow-0.4.7/src/_topic/http.rs b/vendor/winnow-0.4.7/src/_topic/http.rs
new file mode 100644
index 000000000..500169402
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/_topic/http.rs
@@ -0,0 +1,5 @@
+//! # HTTP
+//!
+//! ```rust
+#![doc = include_str!("../../examples/http/parser.rs")]
+//! ```
diff --git a/vendor/winnow-0.4.7/src/_topic/ini.rs b/vendor/winnow-0.4.7/src/_topic/ini.rs
new file mode 100644
index 000000000..b78ade5b0
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/_topic/ini.rs
@@ -0,0 +1,5 @@
+//! # INI
+//!
+//! ```rust
+#![doc = include_str!("../../examples/ini/parser.rs")]
+//! ```
diff --git a/vendor/winnow-0.4.7/src/_topic/json.rs b/vendor/winnow-0.4.7/src/_topic/json.rs
new file mode 100644
index 000000000..fb4df3bf9
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/_topic/json.rs
@@ -0,0 +1,5 @@
+//! # json
+//!
+//! ```rust,ignore
+#![doc = include_str!("../../examples/json/parser.rs")]
+//! ```
diff --git a/vendor/winnow-0.4.7/src/_topic/language.rs b/vendor/winnow-0.4.7/src/_topic/language.rs
new file mode 100644
index 000000000..245bab4c7
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/_topic/language.rs
@@ -0,0 +1,315 @@
+//! # Elements of Programming Languages
+//!
+//! These are short recipes for accomplishing common tasks.
+//!
+//! * [Whitespace](#whitespace)
+//! + [Wrapper combinators that eat whitespace before and after a parser](#wrapper-combinators-that-eat-whitespace-before-and-after-a-parser)
+//! * [Comments](#comments)
+//! + [`// C++/EOL-style comments`](#-ceol-style-comments)
+//! + [`/* C-style comments */`](#-c-style-comments-)
+//! * [Identifiers](#identifiers)
+//! + [`Rust-Style Identifiers`](#rust-style-identifiers)
+//! * [Literal Values](#literal-values)
+//! + [Escaped Strings](#escaped-strings)
+//! + [Integers](#integers)
+//! - [Hexadecimal](#hexadecimal)
+//! - [Octal](#octal)
+//! - [Binary](#binary)
+//! - [Decimal](#decimal)
+//! + [Floating Point Numbers](#floating-point-numbers)
+//!
+//! ## Whitespace
+//!
+//!
+//!
+//! ### Wrapper combinators that eat whitespace before and after a parser
+//!
+//! ```rust
+//! use winnow::prelude::*;
+//! use winnow::{
+//! error::ParseError,
+//! combinator::delimited,
+//! ascii::multispace0,
+//! };
+//!
+//! /// A combinator that takes a parser `inner` and produces a parser that also consumes both leading and
+//! /// trailing whitespace, returning the output of `inner`.
+//! fn ws<'a, F, O, E: ParseError<&'a str>>(inner: F) -> impl Parser<&'a str, O, E>
+//! where
+//! F: Parser<&'a str, O, E>,
+//! {
+//! delimited(
+//! multispace0,
+//! inner,
+//! multispace0
+//! )
+//! }
+//! ```
+//!
+//! To eat only trailing whitespace, replace `delimited(...)` with `terminated(&inner, multispace0)`.
+//! Likewise, the eat only leading whitespace, replace `delimited(...)` with `preceded(multispace0,
+//! &inner)`. You can use your own parser instead of `multispace0` if you want to skip a different set
+//! of lexemes.
+//!
+//! ## Comments
+//!
+//! ### `// C++/EOL-style comments`
+//!
+//! This version uses `%` to start a comment, does not consume the newline character, and returns an
+//! output of `()`.
+//!
+//! ```rust
+//! use winnow::prelude::*;
+//! use winnow::{
+//! error::ParseError,
+//! token::take_till1,
+//! };
+//!
+//! pub fn peol_comment<'a, E: ParseError<&'a str>>(i: &'a str) -> IResult<&'a str, (), E>
+//! {
+//! ('%', take_till1("\n\r"))
+//! .void() // Output is thrown away.
+//! .parse_next(i)
+//! }
+//! ```
+//!
+//! ### `/* C-style comments */`
+//!
+//! Inline comments surrounded with sentinel tags `(*` and `*)`. This version returns an output of `()`
+//! and does not handle nested comments.
+//!
+//! ```rust
+//! use winnow::prelude::*;
+//! use winnow::{
+//! error::ParseError,
+//! token::{tag, take_until0},
+//! };
+//!
+//! pub fn pinline_comment<'a, E: ParseError<&'a str>>(i: &'a str) -> IResult<&'a str, (), E> {
+//! (
+//! "(*",
+//! take_until0("*)"),
+//! "*)"
+//! )
+//! .void() // Output is thrown away.
+//! .parse_next(i)
+//! }
+//! ```
+//!
+//! ## Identifiers
+//!
+//! ### `Rust-Style Identifiers`
+//!
+//! Parsing identifiers that may start with a letter (or underscore) and may contain underscores,
+//! letters and numbers may be parsed like this:
+//!
+//! ```rust
+//! use winnow::prelude::*;
+//! use winnow::{
+//! stream::AsChar,
+//! token::take_while,
+//! token::one_of,
+//! };
+//!
+//! pub fn identifier(input: &str) -> IResult<&str, &str> {
+//! (
+//! one_of(|c: char| c.is_alpha() || c == '_'),
+//! take_while(0.., |c: char| c.is_alphanum() || c == '_')
+//! )
+//! .recognize()
+//! .parse_next(input)
+//! }
+//! ```
+//!
+//! Let's say we apply this to the identifier `hello_world123abc`. The first element of the tuple
+//! would uses [`one_of`][crate::token::one_of] which would recognize `h`. The tuple ensures that
+//! `ello_world123abc` will be piped to the next [`take_while`][crate::token::take_while] parser,
+//! which recognizes every remaining character. However, the tuple returns a tuple of the results
+//! of its sub-parsers. The [`recognize`][crate::Parser::recognize] parser produces a `&str` of the
+//! input text that was parsed, which in this case is the entire `&str` `hello_world123abc`.
+//!
+//! ## Literal Values
+//!
+//! ### Escaped Strings
+//!
+//! ```rust
+#![doc = include_str!("../../examples/string/parser.rs")]
+//! ```
+//!
+//! ### Integers
+//!
+//! The following recipes all return string slices rather than integer values. How to obtain an
+//! integer value instead is demonstrated for hexadecimal integers. The others are similar.
+//!
+//! The parsers allow the grouping character `_`, which allows one to group the digits by byte, for
+//! example: `0xA4_3F_11_28`. If you prefer to exclude the `_` character, the lambda to convert from a
+//! string slice to an integer value is slightly simpler. You can also strip the `_` from the string
+//! slice that is returned, which is demonstrated in the second hexadecimal number parser.
+//!
+//! #### Hexadecimal
+//!
+//! The parser outputs the string slice of the digits without the leading `0x`/`0X`.
+//!
+//! ```rust
+//! use winnow::prelude::*;
+//! use winnow::{
+//! combinator::alt,
+//! combinator::{repeat},
+//! combinator::{preceded, terminated},
+//! token::one_of,
+//! token::tag,
+//! };
+//!
+//! fn hexadecimal(input: &str) -> IResult<&str, &str> { // <'a, E: ParseError<&'a str>>
+//! preceded(
+//! alt(("0x", "0X")),
+//! repeat(1..,
+//! terminated(one_of("0123456789abcdefABCDEF"), repeat(0.., '_').map(|()| ()))
+//! ).map(|()| ()).recognize()
+//! ).parse_next(input)
+//! }
+//! ```
+//!
+//! If you want it to return the integer value instead, use map:
+//!
+//! ```rust
+//! use winnow::prelude::*;
+//! use winnow::{
+//! combinator::alt,
+//! combinator::{repeat},
+//! combinator::{preceded, terminated},
+//! token::one_of,
+//! token::tag,
+//! };
+//!
+//! fn hexadecimal_value(input: &str) -> IResult<&str, i64> {
+//! preceded(
+//! alt(("0x", "0X")),
+//! repeat(1..,
+//! terminated(one_of("0123456789abcdefABCDEF"), repeat(0.., '_').map(|()| ()))
+//! ).map(|()| ()).recognize()
+//! ).try_map(
+//! |out: &str| i64::from_str_radix(&str::replace(&out, "_", ""), 16)
+//! ).parse_next(input)
+//! }
+//! ```
+//!
+//! #### Octal
+//!
+//! ```rust
+//! use winnow::prelude::*;
+//! use winnow::{
+//! combinator::alt,
+//! combinator::{repeat},
+//! combinator::{preceded, terminated},
+//! token::one_of,
+//! token::tag,
+//! };
+//!
+//! fn octal(input: &str) -> IResult<&str, &str> {
+//! preceded(
+//! alt(("0o", "0O")),
+//! repeat(1..,
+//! terminated(one_of("01234567"), repeat(0.., '_').map(|()| ()))
+//! ).map(|()| ()).recognize()
+//! ).parse_next(input)
+//! }
+//! ```
+//!
+//! #### Binary
+//!
+//! ```rust
+//! use winnow::prelude::*;
+//! use winnow::{
+//! combinator::alt,
+//! combinator::{repeat},
+//! combinator::{preceded, terminated},
+//! token::one_of,
+//! token::tag,
+//! };
+//!
+//! fn binary(input: &str) -> IResult<&str, &str> {
+//! preceded(
+//! alt(("0b", "0B")),
+//! repeat(1..,
+//! terminated(one_of("01"), repeat(0.., '_').map(|()| ()))
+//! ).map(|()| ()).recognize()
+//! ).parse_next(input)
+//! }
+//! ```
+//!
+//! #### Decimal
+//!
+//! ```rust
+//! use winnow::prelude::*;
+//! use winnow::{
+//! IResult,
+//! combinator::{repeat},
+//! combinator::terminated,
+//! token::one_of,
+//! };
+//!
+//! fn decimal(input: &str) -> IResult<&str, &str> {
+//! repeat(1..,
+//! terminated(one_of("0123456789"), repeat(0.., '_').map(|()| ()))
+//! ).map(|()| ())
+//! .recognize()
+//! .parse_next(input)
+//! }
+//! ```
+//!
+//! ### Floating Point Numbers
+//!
+//! The following is adapted from [the Python parser by Valentin Lorentz](https://github.com/ProgVal/rust-python-parser/blob/master/src/numbers.rs).
+//!
+//! ```rust
+//! use winnow::prelude::*;
+//! use winnow::{
+//! combinator::alt,
+//! combinator::{repeat},
+//! combinator::opt,
+//! combinator::{preceded, terminated},
+//! token::one_of,
+//! };
+//!
+//! fn float(input: &str) -> IResult<&str, &str> {
+//! alt((
+//! // Case one: .42
+//! (
+//! '.',
+//! decimal,
+//! opt((
+//! one_of("eE"),
+//! opt(one_of("+-")),
+//! decimal
+//! ))
+//! ).recognize()
+//! , // Case two: 42e42 and 42.42e42
+//! (
+//! decimal,
+//! opt(preceded(
+//! '.',
+//! decimal,
+//! )),
+//! one_of("eE"),
+//! opt(one_of("+-")),
+//! decimal
+//! ).recognize()
+//! , // Case three: 42. and 42.42
+//! (
+//! decimal,
+//! '.',
+//! opt(decimal)
+//! ).recognize()
+//! )).parse_next(input)
+//! }
+//!
+//! fn decimal(input: &str) -> IResult<&str, &str> {
+//! repeat(1..,
+//! terminated(one_of("0123456789"), repeat(0.., '_').map(|()| ()))
+//! ).
+//! map(|()| ())
+//! .recognize()
+//! .parse_next(input)
+//! }
+//! ```
diff --git a/vendor/winnow-0.4.7/src/_topic/mod.rs b/vendor/winnow-0.4.7/src/_topic/mod.rs
new file mode 100644
index 000000000..72c8145fe
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/_topic/mod.rs
@@ -0,0 +1,36 @@
+//! # Special Topics
+//!
+//! These are short recipes for accomplishing common tasks.
+//!
+//! - [Why `winnow`?][why]
+//! - Formats:
+//! - [Elements of Programming Languages][language]
+//! - [Arithmetic][arithmetic]
+//! - [s-expression][s_expression]
+//! - [json]
+//! - [INI][ini]
+//! - [HTTP][http]
+//! - Special Topics:
+//! - [Implementing `FromStr`][fromstr]
+//! - [Performance][performance]
+//! - [Parsing Partial Input][partial]
+//! - [Custom stream][stream]
+//! - [Custom errors][error]
+//!
+//! See also parsers written with `winnow`:
+//!
+//! - [`toml_edit`](https://crates.io/crates/toml_edit)
+//! - [`hcl-edit`](https://crates.io/crates/hcl-edit)
+
+pub mod arithmetic;
+pub mod error;
+pub mod fromstr;
+pub mod http;
+pub mod ini;
+pub mod json;
+pub mod language;
+pub mod partial;
+pub mod performance;
+pub mod s_expression;
+pub mod stream;
+pub mod why;
diff --git a/vendor/winnow-0.4.7/src/_topic/partial.rs b/vendor/winnow-0.4.7/src/_topic/partial.rs
new file mode 100644
index 000000000..19895d35a
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/_topic/partial.rs
@@ -0,0 +1,46 @@
+//! # Parsing Partial Input
+//!
+//! Typically, the input being parsed is all in-memory, or is complete. Some data sources are too
+//! large to fit into memory, only allowing parsing an incomplete or [`Partial`] subset of the
+//! data, requiring incrementally parsing.
+//!
+//! By wrapping a stream, like `&[u8]`, with [`Partial`], parsers will report when the data is
+//! [`Incomplete`] and more input is [`Needed`], allowing the caller to stream-in additional data
+//! to be parsed. The data is then parsed a chunk at a time.
+//!
+//! Chunks are typically defined by either:
+//! - A header reporting the number of bytes, like with [`length_value`]
+//! - [`Partial`] can explicitly be changed to being complete once the specified bytes are
+//! acquired via [`StreamIsPartial::complete`].
+//! - A delimiter, like with [ndjson](http://ndjson.org/)
+//! - You can parse up-to the delimiter or do a `take_until0(delim).and_then(parser)`
+//!
+//! If the chunks are not homogeneous, a state machine will be needed to track what the expected
+//! parser is for the next chunk.
+//!
+//! Caveats:
+//! - `winnow` takes the approach of re-parsing from scratch. Chunks should be relatively small to
+//! prevent the re-parsing overhead from dominating.
+//! - Parsers like [`repeat`] do not know when an `eof` is from insufficient data or the end of the
+//! stream, causing them to always report [`Incomplete`].
+//!
+//! # Example
+//!
+//! `main.rs`:
+//! ```rust,ignore
+#![doc = include_str!("../../examples/ndjson/main.rs")]
+//! ```
+//!
+//! `parser.rs`:
+//! ```rust,ignore
+#![doc = include_str!("../../examples/ndjson/parser.rs")]
+//! ```
+
+#![allow(unused_imports)] // Used for intra-doc links
+
+use crate::binary::length_value;
+use crate::combinator::repeat;
+use crate::error::ErrMode::Incomplete;
+use crate::error::Needed;
+use crate::stream::Partial;
+use crate::stream::StreamIsPartial;
diff --git a/vendor/winnow-0.4.7/src/_topic/performance.rs b/vendor/winnow-0.4.7/src/_topic/performance.rs
new file mode 100644
index 000000000..fac12da4c
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/_topic/performance.rs
@@ -0,0 +1,54 @@
+//! # Performance
+//!
+//! ## Runtime Performance
+//!
+//! See also the general Rust [Performance Book](https://nnethercote.github.io/perf-book/)
+//!
+//! Tips
+//! - When enough cases of an [`alt`] have unique prefixes, prefer [`dispatch`]
+//! - When parsing text, try to parse is as bytes (`u8`) rather than `char`s ([`BStr`] can make
+//! debugging easier)
+//! - Find simplified subsets of the grammar to parse, falling back to the full grammar when it
+//! doesn't work. For example, when parsing json strings, parse them without support for escapes,
+//! falling back to escape support if it fails.
+//! - Watch for large return types. A surprising place these can show up is when chaining parsers
+//! with a tuple.
+//!
+//! ## Built-time Performance
+//!
+//! Returning complex types as `impl Trait` can negatively impact build times. This can hit in
+//! surprising cases like:
+//! ```rust
+//! # use winnow::prelude::*;
+//! fn foo<I, O, E>() -> impl Parser<I, O, E>
+//! # where
+//! # I: winnow::stream::Stream<Token=O>,
+//! # I: winnow::stream::StreamIsPartial,
+//! # E: winnow::error::ParseError<I>,
+//! {
+//! // ...some chained combinators...
+//! # winnow::token::any
+//! }
+//! ```
+//!
+//! Instead, wrap the combinators in a closure to simplify the type:
+//! ```rust
+//! # use winnow::prelude::*;
+//! fn foo<I, O, E>() -> impl Parser<I, O, E>
+//! # where
+//! # I: winnow::stream::Stream<Token=O>,
+//! # I: winnow::stream::StreamIsPartial,
+//! # E: winnow::error::ParseError<I>,
+//! {
+//! move |input: I| {
+//! // ...some chained combinators...
+//! # winnow::token::any
+//! .parse_next(input)
+//! }
+//! }
+//! ```
+
+#![allow(unused_imports)]
+use crate::combinator::alt;
+use crate::combinator::dispatch;
+use crate::stream::BStr;
diff --git a/vendor/winnow-0.4.7/src/_topic/s_expression.rs b/vendor/winnow-0.4.7/src/_topic/s_expression.rs
new file mode 100644
index 000000000..ef6660090
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/_topic/s_expression.rs
@@ -0,0 +1,5 @@
+//! # s-expression
+//!
+//! ```rust
+#![doc = include_str!("../../examples/s_expression/parser.rs")]
+//! ```
diff --git a/vendor/winnow-0.4.7/src/_topic/stream.rs b/vendor/winnow-0.4.7/src/_topic/stream.rs
new file mode 100644
index 000000000..7455e185b
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/_topic/stream.rs
@@ -0,0 +1,54 @@
+//! # Custom [`Stream`][crate::stream::Stream]
+//!
+//! `winnow` is batteries included with support for
+//! - Basic inputs like `&str`, newtypes with
+//! - Improved debug output like [`Bytes`][crate::Bytes]
+//! - [`Stateful`][crate::Stateful] for passing state through your parser, like tracking recursion
+//! depth
+//! - [`Located`][crate::Located] for looking up the absolute position of a token
+//!
+//! But that won't always cut it for your parser. For example, you might lex `&str` into
+//! a series of tokens and then want to parse a `TokenStream`.
+//!
+//! ## Implementing a custom stream
+//!
+//! Let's assume we have an input type we'll call `MyStream`. `MyStream` is a sequence of `MyItem` type.
+//! The goal is to define parsers with this signature: `MyStream -> IResult<MyStream, Output>`.
+//!
+//! ```rust
+//! # use winnow::prelude::*;
+//! # use winnow::token::tag;
+//! # type MyStream<'i> = &'i str;
+//! # type Output<'i> = &'i str;
+//! fn parser(i: MyStream<'_>) -> IResult<MyStream<'_>, Output<'_>> {
+//! "test".parse_next(i)
+//! }
+//! ```
+//!
+//! Here are the traits we have to implement for `MyStream`:
+//!
+//! | trait | usage |
+//! |---|---|
+//! | [`Stream`] |Core trait for driving parsing|
+//! | [`StreamIsPartial`] | Marks the input as being the complete buffer or a partial buffer for streaming input |
+//! | [`AsBytes`] |Casts the input type to a byte slice|
+//! | [`AsBStr`] |Casts the input type to a slice of ASCII / UTF-8-like bytes|
+//! | [`Compare`] |Character comparison operations|
+//! | [`FindSlice`] |Look for a substring in self|
+//! | [`Location`] |Calculate location within initial input|
+//! | [`Offset`] |Calculate the offset between slices|
+//!
+//! Here are the traits we have to implement for `MyItem`:
+//!
+//! | trait | usage |
+//! |---|---|
+//! | [`AsChar`] |Transforms common types to a char for basic token parsing|
+//! | [`ContainsToken`] |Look for the token in the given set|
+//!
+//! And traits for slices of `MyItem`:
+//!
+//! | [`SliceLen`] |Calculate the input length|
+//! | [`ParseSlice`] |Used to integrate `&str`'s `parse()` method|
+
+#[allow(unused_imports)] // Here for intra-dock links
+use crate::stream::*;
diff --git a/vendor/winnow-0.4.7/src/_topic/why.rs b/vendor/winnow-0.4.7/src/_topic/why.rs
new file mode 100644
index 000000000..e28181b1a
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/_topic/why.rs
@@ -0,0 +1,98 @@
+//! # Why `winnow`?
+//!
+//! To answer this question, it will be useful to contrast this with other approaches to parsing.
+//!
+//! **Note:** This will focus on principles and priorities. For a deeper and wider wider
+//! comparison with other Rust parser libraries, see
+//! [parse-rosetta-rs](https://github.com/rosetta-rs/parse-rosetta-rs).
+//!
+//! ## Hand-written parsers
+//!
+//! Typically, a hand-written parser gives you the flexibility to get
+//! - Fast parse performance
+//! - Fast compile-time
+//! - Small binary sizes
+//! - High quality error message
+//! - Fewer dependencies to audit
+//!
+//! However, this comes at the cost of doing it all yourself, including
+//! - Optimizing for each of the above characteristics you are about
+//! - Ensuring the safety of any `unsafe` code (buffer overflows being a common bug with parsers)
+//! - Being aware of, familiar with, and correctly implement the relevant algorithms.
+//! matklad, who has written two rust compile frontends, commented
+//! ["I’ve implemented a production-grade Pratt parser once, but I no longer immediately understand that code :-)"](https://matklad.github.io/2020/04/13/simple-but-powerful-pratt-parsing.html)
+//!
+//! This approach works well if:
+//! - Your format is small and is unlikely to change
+//! - Your format is large but you have people who can focus solely on parsing, like with large
+//! programming languages
+//!
+//! ## `winnow`
+//!
+//! Unlike traditional programming language parsers that use
+//! [lex](https://en.wikipedia.org/wiki/Lex_(software)) or
+//! [yacc](https://en.wikipedia.org/wiki/Yacc), you can think of `winnow` as a general version of
+//! the helpers you would create along the way to writing a hand-written parser.
+//!
+//! `winnow` includes support for:
+//! - Zero-copy parsing
+//! - [Parse traces][crate::trace] for easier debugging
+//! - [Streaming parsing][crate::Partial] for network communication or large file
+//! - [Stateful][crate::Stateful] parsers
+//!
+//! For binary formats, `winnow` includes:
+//! - [A hexadecimal view][crate::Bytes] in [traces][crate::trace]
+//! - [TLV](https://en.wikipedia.org/wiki/Type-length-value)
+//! - Some common parsers to help get started, like numbers
+//!
+//! For text formats, `winnow` includes:
+//! - [Tracking of spans][crate::Located]
+//! - [A textual view when parsing as bytes][crate::BStr] in [traces][crate::trace]
+//! - Ability to evaluate directly, parse to an AST, or lex and parse the format
+//!
+//! This works well for:
+//! - Prototyping for what will be a hand-written parser
+//! - When you to minimize the work to evolve your format
+//! - When you don't have contributors focused solely on parsing and your grammar is large enough
+//! to be unwieldy to hand write.
+//!
+//! ## `nom`
+//!
+//! `winnow` is a fork of the venerable [`nom`](https://crates.io/crates/nom). The difference
+//! between them is largely in priorities. `nom` prioritizes:
+//! - Lower churn for existing users while `winnow` is trying to find ways to make things better
+//! for the parsers yet to be written.
+//! - Having a small core, relying on external crates like
+//! [`nom-locate`](https://crates.io/crates/nom_locate) and
+//! [`nom-supreme`](https://crates.io/crates/nom-supreme), encouraging flexibility among users
+//! and to not block users on new features being merged while `winnow` aims to include all the
+//! fundamentals for parsing to ensure the experience is cohesive and high quality.
+//!
+//! ## `chumsky`
+//!
+//! [`chumsky`](https://crates.io/crates/chumsky) is an up and coming parser-combinator library
+//! that includes advanced features like error recovery.
+//!
+//! Probably the biggest diverging philosophy is `chumsky`s stance:
+//!
+//! > "If you need to implement either `Parser` or `Strategy` by hand, that's a problem that needs fixing".
+//!
+//! This is under "batteries included" but it also ties into the feeling that `chumksy` acts more like
+//! a framework. Instead of composing together helpers, you are expected to do everything through
+//! their system to the point that it is non-trivial to implement their `Parser` trait and are
+//! encouraged to use the
+//! [`custom`](https://docs.rs/chumsky/0.9.0/chumsky/primitive/fn.custom.html) helper. This
+//! requires re-framing everything to fit within their model and makes the code harder to understand
+//! and debug as you are working with abstract operations that will eventually be applied
+//! rather than directly with the parsers.
+//!
+//! In contrast, `winnow` is an introspectable toolbox that can easily be customized at any level.
+//! Probably the biggest thing that `winnow` loses out on is optimizations from ["parse modes" via
+//! GATs](https://github.com/zesterer/chumsky/pull/82) which allows downstream parsers to tell
+//! upstream parsers when information will be discarded, allowing bypassing expensive operations,
+//! like allocations. This requires a lot more complex interaction with parsers that isn't as
+//! trivial to do with bare functions which would lose out on any of that side-band information.
+//! Instead, we work around this with things like the [`Accumulate`] trait.
+
+#![allow(unused_imports)]
+use crate::stream::Accumulate;
diff --git a/vendor/winnow-0.4.7/src/_tutorial/chapter_0.rs b/vendor/winnow-0.4.7/src/_tutorial/chapter_0.rs
new file mode 100644
index 000000000..4c768d8f8
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/_tutorial/chapter_0.rs
@@ -0,0 +1,38 @@
+//! # Chapter 0: Introduction
+//!
+//! This tutorial assumes that you are:
+//! - Already familiar with Rust
+//! - Using `winnow` for the first time
+//!
+//! The focus will be on parsing in-memory strings (`&str`). Once done, you might want to check the
+//! [Special Topics][_topic] for more specialized topics or examples.
+//!
+//! ## About
+//!
+//! `winnow` is a parser-combinator library. In other words, it gives you tools to define:
+//! - "parsers", or functions that takes an input and gives back an output
+//! - "combinators", or functions that take parsers and _combine_ them together!
+//!
+//! While "combinator" might be an unfamiliar word, you are likely using them in your rust code
+//! today, like with the [`Iterator`] trait:
+//! ```rust
+//! let data = vec![1, 2, 3, 4, 5];
+//! let even_count = data.iter()
+//! .copied() // combinator
+//! .filter(|d| d % 2 == 0) // combinator
+//! .count(); // combinator
+//! ```
+//!
+//! Parser combinators are great because:
+//!
+//! - The parsers are small and easy to write
+//! - The parsers components are easy to reuse (if they're general enough, please add them to winnow!)
+//! - The parsers components are easy to test separately (unit tests and property-based tests)
+//! - The parser combination code looks close to the grammar you would have written
+//! - You can build partial parsers, specific to the data you need at the moment, and ignore the rest
+
+#![allow(unused_imports)]
+use crate::_topic;
+use std::iter::Iterator;
+
+pub use super::chapter_1 as next;
diff --git a/vendor/winnow-0.4.7/src/_tutorial/chapter_1.rs b/vendor/winnow-0.4.7/src/_tutorial/chapter_1.rs
new file mode 100644
index 000000000..d6a45c8b7
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/_tutorial/chapter_1.rs
@@ -0,0 +1,89 @@
+//! # Chapter 1: The Winnow Way
+//!
+//! First of all, we need to understand the way that winnow thinks about parsing.
+//! As discussed in the introduction, winnow lets us build simple parsers, and
+//! then combine them (using "combinators").
+//!
+//! Let's discuss what a "parser" actually does. A parser takes an input and returns
+//! a result, where:
+//! - `Ok` indicates the parser successfully found what it was looking for; or
+//! - `Err` indicates the parser could not find what it was looking for.
+//!
+//! Parsers do more than just return a binary "success"/"failure" code. If
+//! the parser was successful, then it will return a tuple where the first field
+//! will contain everything the parser did not process. The second will contain
+//! everything the parser processed. The idea is that a parser can happily parse the first
+//! *part* of an input, without being able to parse the whole thing.
+//!
+//! If the parser failed, then there are multiple errors that could be returned.
+//! For simplicity, however, in the next chapters we will leave these unexplored.
+//!
+//! ```text
+//! ┌─► Ok(
+//! │ what the parser didn't touch,
+//! │ what matched the parser
+//! │ )
+//! ┌─────────┠│
+//! my input───►│my parser├──►either──┤
+//! └─────────┘ └─► Err(...)
+//! ```
+//!
+//!
+//! To represent this model of the world, winnow uses the [`IResult<I, O>`] type.
+//! The `Ok` variant has a tuple of `(remainder: I, output: O)`;
+//! whereas the `Err` variant stores an error.
+//!
+//! You can import that from:
+//!
+//! ```rust
+//! use winnow::IResult;
+//! ```
+//!
+//! You'll note that `I` and `O` are parameterized -- while most of the examples in this book
+//! will be with `&str` (i.e. parsing a string); they do not have to be strings; nor do they
+//! have to be the same type (consider the simple example where `I = &str`, and `O = u64` -- this
+//! parses a string into an unsigned integer.)
+//!
+//! To combine parsers, we need a common way to refer to them which is where the [`Parser`]
+//! trait comes in with [`Parser::parse_next`] being the primary way to drive
+//! parsing forward.
+//!
+//! # Let's write our first parser!
+//!
+//! The simplest parser we can write is one which successfully does nothing.
+//!
+//! To make it easier to implement a [`Parser`], the trait is implemented for
+//! functions of the form `Fn(I) -> IResult<I, O>`.
+//!
+//! This parser function should take in a `&str`:
+//!
+//! - Since it is supposed to succeed, we know it will return the Ok Variant.
+//! - Since it does nothing to our input, the remaining input is the same as the input.
+//! - Since it doesn't parse anything, it also should just return an empty string.
+//!
+//! ```rust
+//! use winnow::IResult;
+//! use winnow::Parser;
+//!
+//! pub fn do_nothing_parser(input: &str) -> IResult<&str, &str> {
+//! Ok((input, ""))
+//! }
+//!
+//! fn main() {
+//! let input = "0x1a2b Hello";
+//!
+//! let (remainder, output) = do_nothing_parser.parse_next(input).unwrap();
+//! // Same as:
+//! // let (remainder, output) = do_nothing_parser(input).unwrap();
+//!
+//! assert_eq!(remainder, "0x1a2b Hello");
+//! assert_eq!(output, "");
+//! }
+//! ```
+
+#![allow(unused_imports)]
+use crate::IResult;
+use crate::Parser;
+
+pub use super::chapter_0 as previous;
+pub use super::chapter_2 as next;
diff --git a/vendor/winnow-0.4.7/src/_tutorial/chapter_2.rs b/vendor/winnow-0.4.7/src/_tutorial/chapter_2.rs
new file mode 100644
index 000000000..49b61f3f4
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/_tutorial/chapter_2.rs
@@ -0,0 +1,156 @@
+//! # Chapter 2: Tokens and Tags
+//!
+//! The simplest *useful* parser you can write is one which matches tokens.
+//!
+//! ## Tokens
+//!
+//! Matching a single token literal is common enough that `Parser` is implemented for
+//! `char`.
+//!
+//! ```rust
+//! # use winnow::Parser;
+//! # use winnow::IResult;
+//! #
+//! fn parse_prefix(input: &str) -> IResult<&str, char> {
+//! '0'.parse_next(input)
+//! }
+//!
+//! fn main() {
+//! let input = "0x1a2b Hello";
+//!
+//! let (remainder, output) = parse_prefix.parse_next(input).unwrap();
+//!
+//! assert_eq!(remainder, "x1a2b Hello");
+//! assert_eq!(output, '0');
+//!
+//! assert!(parse_prefix("d").is_err());
+//! }
+//! ```
+//!
+//! ## Tags
+//!
+//! One of the most frequent way of matching a token is when they are combined into a string.
+//! Again, this is common enough that `Parser` is implemented for `&str`:
+//!
+//! ```rust
+//! # use winnow::Parser;
+//! # use winnow::IResult;
+//! #
+//! fn parse_prefix(input: &str) -> IResult<&str, &str> {
+//! "0x".parse_next(input)
+//! }
+//!
+//! fn main() {
+//! let input = "0x1a2b Hello";
+//!
+//! let (remainder, output) = parse_prefix.parse_next(input).unwrap();
+//! assert_eq!(remainder, "1a2b Hello");
+//! assert_eq!(output, "0x");
+//!
+//! assert!(parse_prefix("0o123").is_err());
+//! }
+//! ```
+//!
+//! In `winnow`, we call this type of parser a [`tag`].
+//!
+//! ## Character Classes
+//!
+//! Selecting a single `char` or a [`tag`] is fairly limited. Sometimes, you will want to select one of several
+//! `chars` of a specific class, like digits. For this, we use the [`one_of`] parer:
+//!
+//! ```rust
+//! # use winnow::Parser;
+//! # use winnow::IResult;
+//! use winnow::token::one_of;
+//!
+//! fn parse_digits(input: &str) -> IResult<&str, char> {
+//! one_of("0123456789abcdefgABCDEFG").parse_next(input)
+//! }
+//!
+//! fn main() {
+//! let input = "1a2b Hello";
+//!
+//! let (remainder, output) = parse_digits.parse_next(input).unwrap();
+//! assert_eq!(remainder, "a2b Hello");
+//! assert_eq!(output, '1');
+//!
+//! assert!(parse_digits("Z").is_err());
+//! }
+//! ```
+//!
+//! > **Aside:** [`one_of`] might look straightforward, a function returning a value that implements `Parser`.
+//! > Let's look at it more closely as its used above (resolving all generic parameters):
+//! > ```rust
+//! > # use winnow::prelude::*;
+//! > # use winnow::error::Error;
+//! > pub fn one_of<'i>(
+//! > list: &'static str
+//! > ) -> impl Parser<&'i str, char, Error<&'i str>> {
+//! > // ...
+//! > # winnow::token::one_of(list)
+//! > }
+//! > ```
+//! > If you have not programmed in a language where functions are values, the type signature of the
+//! > [`one_of`] function might be a surprise.
+//! > The function [`one_of`] *returns a function*. The function it returns is a
+//! > `Parser`, taking a `&str` and returning an `IResult`. This is a common pattern in winnow for
+//! > configurable or stateful parsers.
+//!
+//! Some of character classes are common enough that a named parser is provided, like with:
+//! - [`line_ending`][crate::ascii::line_ending]: Recognizes an end of line (both `\n` and `\r\n`)
+//! - [`newline`][crate::ascii::newline]: Matches a newline character `\n`
+//! - [`tab`][crate::ascii::tab]: Matches a tab character `\t`
+//!
+//! You can then capture sequences of these characters with parsers like [`take_while`].
+//! ```rust
+//! # use winnow::Parser;
+//! # use winnow::IResult;
+//! use winnow::token::take_while;
+//!
+//! fn parse_digits(input: &str) -> IResult<&str, &str> {
+//! take_while(1.., "0123456789abcdefgABCDEFG").parse_next(input)
+//! }
+//!
+//! fn main() {
+//! let input = "1a2b Hello";
+//!
+//! let (remainder, output) = parse_digits.parse_next(input).unwrap();
+//! assert_eq!(remainder, " Hello");
+//! assert_eq!(output, "1a2b");
+//!
+//! assert!(parse_digits("Z").is_err());
+//! }
+//! ```
+//!
+//! We could simplify this further with by using one of the built-in character classes, [`hex_digit1`]:
+//! ```rust
+//! # use winnow::Parser;
+//! # use winnow::IResult;
+//! use winnow::ascii::hex_digit1;
+//!
+//! fn parse_digits(input: &str) -> IResult<&str, &str> {
+//! hex_digit1.parse_next(input)
+//! }
+//!
+//! fn main() {
+//! let input = "1a2b Hello";
+//!
+//! let (remainder, output) = parse_digits.parse_next(input).unwrap();
+//! assert_eq!(remainder, " Hello");
+//! assert_eq!(output, "1a2b");
+//!
+//! assert!(parse_digits("Z").is_err());
+//! }
+//! ```
+
+#![allow(unused_imports)]
+use crate::ascii::hex_digit1;
+use crate::stream::ContainsToken;
+use crate::token::one_of;
+use crate::token::tag;
+use crate::token::take_while;
+use crate::Parser;
+use std::ops::RangeInclusive;
+
+pub use super::chapter_1 as previous;
+pub use super::chapter_3 as next;
diff --git a/vendor/winnow-0.4.7/src/_tutorial/chapter_3.rs b/vendor/winnow-0.4.7/src/_tutorial/chapter_3.rs
new file mode 100644
index 000000000..8d307e324
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/_tutorial/chapter_3.rs
@@ -0,0 +1,242 @@
+//! # Chapter 3: Sequencing and Alternatives
+//!
+//! In the last chapter, we saw how to create simple parsers using prebuilt parsers.
+//!
+//! In this chapter, we explore two other widely used features:
+//! alternatives and composition.
+//!
+//! ## Sequencing
+//!
+//! Now that we can create more interesting parsers, we can sequence them together, like:
+//!
+//! ```rust
+//! # use winnow::token::take_while;
+//! # use winnow::Parser;
+//! # use winnow::IResult;
+//! #
+//! fn parse_prefix(input: &str) -> IResult<&str, &str> {
+//! "0x".parse_next(input)
+//! }
+//!
+//! fn parse_digits(input: &str) -> IResult<&str, &str> {
+//! take_while(1.., (
+//! ('0'..='9'),
+//! ('A'..='F'),
+//! ('a'..='f'),
+//! )).parse_next(input)
+//! }
+//!
+//! fn main() {
+//! let input = "0x1a2b Hello";
+//!
+//! let (remainder, prefix) = parse_prefix.parse_next(input).unwrap();
+//! let (remainder, digits) = parse_digits.parse_next(remainder).unwrap();
+//!
+//! assert_eq!(prefix, "0x");
+//! assert_eq!(digits, "1a2b");
+//! assert_eq!(remainder, " Hello");
+//! }
+//! ```
+//!
+//! To sequence these together, you can just put them in a tuple:
+//! ```rust
+//! # use winnow::token::take_while;
+//! # use winnow::Parser;
+//! # use winnow::IResult;
+//! #
+//! # fn parse_prefix(input: &str) -> IResult<&str, &str> {
+//! # "0x".parse_next(input)
+//! # }
+//! #
+//! # fn parse_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='9'),
+//! # ('A'..='F'),
+//! # ('a'..='f'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! //...
+//!
+//! fn main() {
+//! let input = "0x1a2b Hello";
+//!
+//! let (remainder, (prefix, digits)) = (
+//! parse_prefix,
+//! parse_digits
+//! ).parse_next(input).unwrap();
+//!
+//! assert_eq!(prefix, "0x");
+//! assert_eq!(digits, "1a2b");
+//! assert_eq!(remainder, " Hello");
+//! }
+//! ```
+//!
+//! Frequently, you won't care about the tag and you can instead use one of the provided combinators,
+//! like [`preceded`]:
+//! ```rust
+//! # use winnow::token::take_while;
+//! # use winnow::Parser;
+//! # use winnow::IResult;
+//! use winnow::combinator::preceded;
+//!
+//! # fn parse_prefix(input: &str) -> IResult<&str, &str> {
+//! # "0x".parse_next(input)
+//! # }
+//! #
+//! # fn parse_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='9'),
+//! # ('A'..='F'),
+//! # ('a'..='f'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! //...
+//!
+//! fn main() {
+//! let input = "0x1a2b Hello";
+//!
+//! let (remainder, digits) = preceded(
+//! parse_prefix,
+//! parse_digits
+//! ).parse_next(input).unwrap();
+//!
+//! assert_eq!(digits, "1a2b");
+//! assert_eq!(remainder, " Hello");
+//! }
+//! ```
+//!
+//! ## Alternatives
+//!
+//! Sometimes, we might want to choose between two parsers; and we're happy with
+//! either being used.
+//!
+//! The de facto way to do this in winnow is with the [`alt()`] combinator which will execute each
+//! parser in a tuple until it finds one that does not error. If all error, then by default you are
+//! given the error from the last parser.
+//!
+//! We can see a basic example of `alt()` below.
+//! ```rust
+//! # use winnow::IResult;
+//! # use winnow::Parser;
+//! # use winnow::token::take_while;
+//! use winnow::combinator::alt;
+//!
+//! fn parse_digits(input: &str) -> IResult<&str, (&str, &str)> {
+//! alt((
+//! ("0b", parse_bin_digits),
+//! ("0o", parse_oct_digits),
+//! ("0d", parse_dec_digits),
+//! ("0x", parse_hex_digits),
+//! )).parse_next(input)
+//! }
+//!
+//! // ...
+//! # fn parse_bin_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='7'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_oct_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='7'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_dec_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='9'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_hex_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='9'),
+//! # ('A'..='F'),
+//! # ('a'..='f'),
+//! # )).parse_next(input)
+//! # }
+//!
+//! fn main() {
+//! let input = "0x1a2b Hello";
+//!
+//! let (remainder, (prefix, digits)) = parse_digits.parse_next(input).unwrap();
+//!
+//! assert_eq!(remainder, " Hello");
+//! assert_eq!(prefix, "0x");
+//! assert_eq!(digits, "1a2b");
+//!
+//! assert!(parse_digits("ghiWorld").is_err());
+//! }
+//! ```
+//!
+//! Sometimes a giant if/else-if ladder can be slow and you'd rather have a `match` statement for
+//! branches of your parser that have unique prefixes. In this case, you can use the
+//! [`dispatch`][crate::combinator::dispatch] macro:
+//!
+//! ```rust
+//! # use winnow::IResult;
+//! # use winnow::Parser;
+//! # use winnow::token::take_while;
+//! use winnow::combinator::dispatch;
+//! use winnow::token::take;
+//! use winnow::combinator::fail;
+//!
+//! fn parse_digits(input: &str) -> IResult<&str, &str> {
+//! dispatch!(take(2usize);
+//! "0b" => parse_bin_digits,
+//! "0o" => parse_oct_digits,
+//! "0d" => parse_dec_digits,
+//! "0x" => parse_hex_digits,
+//! _ => fail,
+//! ).parse_next(input)
+//! }
+//!
+//! // ...
+//! # fn parse_bin_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='7'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_oct_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='7'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_dec_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='9'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_hex_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='9'),
+//! # ('A'..='F'),
+//! # ('a'..='f'),
+//! # )).parse_next(input)
+//! # }
+//!
+//! fn main() {
+//! let input = "0x1a2b Hello";
+//!
+//! let (remainder, digits) = parse_digits.parse_next(input).unwrap();
+//!
+//! assert_eq!(remainder, " Hello");
+//! assert_eq!(digits, "1a2b");
+//!
+//! assert!(parse_digits("ghiWorld").is_err());
+//! }
+//! ```
+
+#![allow(unused_imports)]
+use crate::combinator::alt;
+use crate::combinator::dispatch;
+use crate::combinator::preceded;
+
+pub use super::chapter_2 as previous;
+pub use super::chapter_4 as next;
diff --git a/vendor/winnow-0.4.7/src/_tutorial/chapter_4.rs b/vendor/winnow-0.4.7/src/_tutorial/chapter_4.rs
new file mode 100644
index 000000000..315d185ba
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/_tutorial/chapter_4.rs
@@ -0,0 +1,109 @@
+//! # Chapter 4: Parsers With Custom Return Types
+//!
+//! So far, we have seen mostly functions that take an `&str`, and return a
+//! `IResult<&str, &str>`. Splitting strings into smaller strings and characters is certainly
+//! useful, but it's not the only thing winnow is capable of!
+//!
+//! A useful operation when parsing is to convert between types; for example
+//! parsing from `&str` to another primitive, like [`usize`].
+//!
+//! All we need to do for our parser to return a different type is to change
+//! the second type parameter of [`IResult`] to the desired return type.
+//! For example, to return a `usize`, return a `IResult<&str, usize>`.
+//! Recall that the first type parameter of the `IResult` is the input
+//! type, so even if you're returning something different, if your input
+//! is a `&str`, the first type argument of `IResult` should be also.
+//!
+//! One winnow-native way of doing a type conversion is to use the
+//! [`Parser::parse_to`] combinator
+//! to convert from a successful parse to a particular type using [`FromStr`].
+//!
+//! The following code converts from a string containing a number to `usize`:
+//! ```rust
+//! # use winnow::Parser;
+//! # use winnow::IResult;
+//! # use winnow::ascii::digit1;
+//! #
+//! fn parse_digits(input: &str) -> IResult<&str, usize> {
+//! digit1
+//! .parse_to()
+//! .parse_next(input)
+//! }
+//!
+//! fn main() {
+//! let input = "1024 Hello";
+//!
+//! let (remainder, output) = parse_digits.parse_next(input).unwrap();
+//! assert_eq!(remainder, " Hello");
+//! assert_eq!(output, 1024);
+//!
+//! assert!(parse_digits("Z").is_err());
+//! }
+//! ```
+//!
+//! `Parser::parse_to` is just a convenient form of [`Parser::try_map`] which we can use to handle
+//! all radices of numbers:
+//! ```rust
+//! # use winnow::IResult;
+//! # use winnow::Parser;
+//! # use winnow::token::take_while;
+//! use winnow::combinator::dispatch;
+//! use winnow::token::take;
+//! use winnow::combinator::fail;
+//!
+//! fn parse_digits(input: &str) -> IResult<&str, usize> {
+//! dispatch!(take(2usize);
+//! "0b" => parse_bin_digits.try_map(|s| usize::from_str_radix(s, 2)),
+//! "0o" => parse_oct_digits.try_map(|s| usize::from_str_radix(s, 8)),
+//! "0d" => parse_dec_digits.try_map(|s| usize::from_str_radix(s, 10)),
+//! "0x" => parse_hex_digits.try_map(|s| usize::from_str_radix(s, 16)),
+//! _ => fail,
+//! ).parse_next(input)
+//! }
+//!
+//! // ...
+//! # fn parse_bin_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='7'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_oct_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='7'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_dec_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='9'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_hex_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='9'),
+//! # ('A'..='F'),
+//! # ('a'..='f'),
+//! # )).parse_next(input)
+//! # }
+//!
+//! fn main() {
+//! let input = "0x1a2b Hello";
+//!
+//! let (remainder, digits) = parse_digits.parse_next(input).unwrap();
+//!
+//! assert_eq!(remainder, " Hello");
+//! assert_eq!(digits, 0x1a2b);
+//!
+//! assert!(parse_digits("ghiWorld").is_err());
+//! }
+//! ```
+
+#![allow(unused_imports)]
+use crate::IResult;
+use crate::Parser;
+use std::str::FromStr;
+
+pub use super::chapter_3 as previous;
+pub use super::chapter_5 as next;
diff --git a/vendor/winnow-0.4.7/src/_tutorial/chapter_5.rs b/vendor/winnow-0.4.7/src/_tutorial/chapter_5.rs
new file mode 100644
index 000000000..3a4be4b32
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/_tutorial/chapter_5.rs
@@ -0,0 +1,214 @@
+//! # Chapter 5: Repetition
+//!
+//! In [`chapter_3`], we covered how to sequence different parsers into a tuple but sometimes you need to run a
+//! single parser multiple times, collecting the result into a [`Vec`].
+//!
+//! Let's take our `parse_digits` and collect a list of them with [`repeat`]:
+//! ```rust
+//! # use winnow::IResult;
+//! # use winnow::Parser;
+//! # use winnow::token::take_while;
+//! # use winnow::combinator::dispatch;
+//! # use winnow::token::take;
+//! # use winnow::combinator::fail;
+//! use winnow::combinator::opt;
+//! use winnow::combinator::repeat;
+//! use winnow::combinator::terminated;
+//!
+//! fn parse_list(input: &str) -> IResult<&str, Vec<usize>> {
+//! repeat(0.., terminated(parse_digits, opt(','))).parse_next(input)
+//! }
+//!
+//! // ...
+//! # fn parse_digits(input: &str) -> IResult<&str, usize> {
+//! # dispatch!(take(2usize);
+//! # "0b" => parse_bin_digits.try_map(|s| usize::from_str_radix(s, 2)),
+//! # "0o" => parse_oct_digits.try_map(|s| usize::from_str_radix(s, 8)),
+//! # "0d" => parse_dec_digits.try_map(|s| usize::from_str_radix(s, 10)),
+//! # "0x" => parse_hex_digits.try_map(|s| usize::from_str_radix(s, 16)),
+//! # _ => fail,
+//! # ).parse_next(input)
+//! # }
+//! #
+//! # fn parse_bin_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='7'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_oct_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='7'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_dec_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='9'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_hex_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='9'),
+//! # ('A'..='F'),
+//! # ('a'..='f'),
+//! # )).parse_next(input)
+//! # }
+//!
+//! fn main() {
+//! let input = "0x1a2b,0x3c4d,0x5e6f Hello";
+//!
+//! let (remainder, digits) = parse_list.parse_next(input).unwrap();
+//!
+//! assert_eq!(remainder, " Hello");
+//! assert_eq!(digits, vec![0x1a2b, 0x3c4d, 0x5e6f]);
+//!
+//! assert!(parse_digits("ghiWorld").is_err());
+//! }
+//! ```
+//!
+//! You'll notice that the above allows trailing `,` when we intended to not support that. We can
+//! easily fix this by using [`separated0`]:
+//! ```rust
+//! # use winnow::IResult;
+//! # use winnow::Parser;
+//! # use winnow::token::take_while;
+//! # use winnow::combinator::dispatch;
+//! # use winnow::token::take;
+//! # use winnow::combinator::fail;
+//! use winnow::combinator::separated0;
+//!
+//! fn parse_list(input: &str) -> IResult<&str, Vec<usize>> {
+//! separated0(parse_digits, ",").parse_next(input)
+//! }
+//!
+//! // ...
+//! # fn parse_digits(input: &str) -> IResult<&str, usize> {
+//! # dispatch!(take(2usize);
+//! # "0b" => parse_bin_digits.try_map(|s| usize::from_str_radix(s, 2)),
+//! # "0o" => parse_oct_digits.try_map(|s| usize::from_str_radix(s, 8)),
+//! # "0d" => parse_dec_digits.try_map(|s| usize::from_str_radix(s, 10)),
+//! # "0x" => parse_hex_digits.try_map(|s| usize::from_str_radix(s, 16)),
+//! # _ => fail,
+//! # ).parse_next(input)
+//! # }
+//! #
+//! # fn parse_bin_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='7'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_oct_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='7'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_dec_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='9'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_hex_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='9'),
+//! # ('A'..='F'),
+//! # ('a'..='f'),
+//! # )).parse_next(input)
+//! # }
+//!
+//! fn main() {
+//! let input = "0x1a2b,0x3c4d,0x5e6f Hello";
+//!
+//! let (remainder, digits) = parse_list.parse_next(input).unwrap();
+//!
+//! assert_eq!(remainder, " Hello");
+//! assert_eq!(digits, vec![0x1a2b, 0x3c4d, 0x5e6f]);
+//!
+//! assert!(parse_digits("ghiWorld").is_err());
+//! }
+//! ```
+//!
+//! If you look closely at [`repeat`], it isn't collecting directly into a [`Vec`] but
+//! [`Accumulate`] to gather the results. This let's us make more complex parsers than we did in
+//! [`chapter_2`] by accumulating the results into a `()` and [`recognize`][Parser::recognize]-ing the captured input:
+//! ```rust
+//! # use winnow::IResult;
+//! # use winnow::Parser;
+//! # use winnow::token::take_while;
+//! # use winnow::combinator::dispatch;
+//! # use winnow::token::take;
+//! # use winnow::combinator::fail;
+//! # use winnow::combinator::separated0;
+//! #
+//! fn recognize_list(input: &str) -> IResult<&str, &str> {
+//! parse_list.recognize().parse_next(input)
+//! }
+//!
+//! fn parse_list(input: &str) -> IResult<&str, ()> {
+//! separated0(parse_digits, ",").parse_next(input)
+//! }
+//!
+//! // ...
+//! # fn parse_digits(input: &str) -> IResult<&str, usize> {
+//! # dispatch!(take(2usize);
+//! # "0b" => parse_bin_digits.try_map(|s| usize::from_str_radix(s, 2)),
+//! # "0o" => parse_oct_digits.try_map(|s| usize::from_str_radix(s, 8)),
+//! # "0d" => parse_dec_digits.try_map(|s| usize::from_str_radix(s, 10)),
+//! # "0x" => parse_hex_digits.try_map(|s| usize::from_str_radix(s, 16)),
+//! # _ => fail,
+//! # ).parse_next(input)
+//! # }
+//! #
+//! # fn parse_bin_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='7'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_oct_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='7'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_dec_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='9'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_hex_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='9'),
+//! # ('A'..='F'),
+//! # ('a'..='f'),
+//! # )).parse_next(input)
+//! # }
+//!
+//! fn main() {
+//! let input = "0x1a2b,0x3c4d,0x5e6f Hello";
+//!
+//! let (remainder, digits) = recognize_list.parse_next(input).unwrap();
+//!
+//! assert_eq!(remainder, " Hello");
+//! assert_eq!(digits, "0x1a2b,0x3c4d,0x5e6f");
+//!
+//! assert!(parse_digits("ghiWorld").is_err());
+//! }
+//! ```
+
+#![allow(unused_imports)]
+use super::chapter_2;
+use super::chapter_3;
+use crate::combinator::repeat;
+use crate::combinator::separated0;
+use crate::stream::Accumulate;
+use crate::Parser;
+use std::vec::Vec;
+
+pub use super::chapter_4 as previous;
+pub use super::chapter_6 as next;
diff --git a/vendor/winnow-0.4.7/src/_tutorial/chapter_6.rs b/vendor/winnow-0.4.7/src/_tutorial/chapter_6.rs
new file mode 100644
index 000000000..268e38a31
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/_tutorial/chapter_6.rs
@@ -0,0 +1,158 @@
+//! # Chapter 6: Error Reporting
+//!
+//! ## `Error`
+//!
+//! Back in [`chapter_1`], we glossed over the `Err` side of [`IResult`]. `IResult<I, O>` is
+//! actually short for `IResult<I, O, E=Error>` where [`Error`] is a cheap, universal error type
+//! for getting started. When humans are producing the file, like with `toml`, you might want to
+//! sacrifice some performance for providing more details on how to resolve the problem
+//!
+//! winnow includes [`VerboseError`] for this but you can [customize the error as you
+//! wish][_topic::error]. You can use [`Parser::context`] to annotate the error with custom types
+//! while unwinding to further improve the error quality.
+//!
+//! ```rust
+//! # use winnow::IResult;
+//! # use winnow::Parser;
+//! # use winnow::token::take_while;
+//! # use winnow::combinator::alt;
+//! use winnow::error::VerboseError;
+//!
+//! fn parse_digits(input: &str) -> IResult<&str, (&str, &str), VerboseError<&str>> {
+//! alt((
+//! ("0b", parse_bin_digits).context("binary"),
+//! ("0o", parse_oct_digits).context("octal"),
+//! ("0d", parse_dec_digits).context("decimal"),
+//! ("0x", parse_hex_digits).context("hexadecimal"),
+//! )).parse_next(input)
+//! }
+//!
+//! // ...
+//! # fn parse_bin_digits(input: &str) -> IResult<&str, &str, VerboseError<&str>> {
+//! # take_while(1.., (
+//! # ('0'..='7'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_oct_digits(input: &str) -> IResult<&str, &str, VerboseError<&str>> {
+//! # take_while(1.., (
+//! # ('0'..='7'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_dec_digits(input: &str) -> IResult<&str, &str, VerboseError<&str>> {
+//! # take_while(1.., (
+//! # ('0'..='9'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_hex_digits(input: &str) -> IResult<&str, &str, VerboseError<&str>> {
+//! # take_while(1.., (
+//! # ('0'..='9'),
+//! # ('A'..='F'),
+//! # ('a'..='f'),
+//! # )).parse_next(input)
+//! # }
+//!
+//! fn main() {
+//! let input = "0x1a2b Hello";
+//!
+//! let (remainder, (prefix, digits)) = parse_digits.parse_next(input).unwrap();
+//!
+//! assert_eq!(remainder, " Hello");
+//! assert_eq!(prefix, "0x");
+//! assert_eq!(digits, "1a2b");
+//! }
+//! ```
+//!
+//! At first glance, this looks correct but what `context` will be reported when parsing `"0b5"`?
+//! If you remember back to [`chapter_3`], [`alt`] will only report the last error by default which
+//! means when parsing `"0b5"`, the `context` will be `"hexadecimal"`.
+//!
+//! ## `ErrMode`
+//!
+//! Let's break down `IResult<I, O, E>` one step further:
+//! ```rust
+//! # use winnow::error::Error;
+//! # use winnow::error::ErrMode;
+//! pub type IResult<I, O, E = Error<I>> = Result<(I, O), ErrMode<E>>;
+//! ```
+//! `IResult` is just a fancy wrapper around `Result` that wraps our error in an [`ErrMode`]
+//! type.
+//!
+//! `ErrMode` is an enum with `Backtrack` and `Cut` variants (ignore `Incomplete` as its only
+//! relevant for [streaming][_topic::stream]). By default, errors are `Backtrack`, meaning that
+//! other parsing branches will be attempted on failure, like the next case of an `alt`. `Cut`
+//! shortcircuits all other branches, immediately reporting the error.
+//!
+//! So we can get the correct `context` by modifying the above example with [`cut_err`]:
+//! ```rust
+//! # use winnow::IResult;
+//! # use winnow::Parser;
+//! # use winnow::token::take_while;
+//! # use winnow::combinator::alt;
+//! # use winnow::error::VerboseError;
+//! use winnow::combinator::cut_err;
+//!
+//! fn parse_digits(input: &str) -> IResult<&str, (&str, &str), VerboseError<&str>> {
+//! alt((
+//! ("0b", cut_err(parse_bin_digits)).context("binary"),
+//! ("0o", cut_err(parse_oct_digits)).context("octal"),
+//! ("0d", cut_err(parse_dec_digits)).context("decimal"),
+//! ("0x", cut_err(parse_hex_digits)).context("hexadecimal"),
+//! )).parse_next(input)
+//! }
+//!
+//! // ...
+//! # fn parse_bin_digits(input: &str) -> IResult<&str, &str, VerboseError<&str>> {
+//! # take_while(1.., (
+//! # ('0'..='7'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_oct_digits(input: &str) -> IResult<&str, &str, VerboseError<&str>> {
+//! # take_while(1.., (
+//! # ('0'..='7'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_dec_digits(input: &str) -> IResult<&str, &str, VerboseError<&str>> {
+//! # take_while(1.., (
+//! # ('0'..='9'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_hex_digits(input: &str) -> IResult<&str, &str, VerboseError<&str>> {
+//! # take_while(1.., (
+//! # ('0'..='9'),
+//! # ('A'..='F'),
+//! # ('a'..='f'),
+//! # )).parse_next(input)
+//! # }
+//!
+//! fn main() {
+//! let input = "0x1a2b Hello";
+//!
+//! let (remainder, (prefix, digits)) = parse_digits.parse_next(input).unwrap();
+//!
+//! assert_eq!(remainder, " Hello");
+//! assert_eq!(prefix, "0x");
+//! assert_eq!(digits, "1a2b");
+//! }
+//! ```
+//! Now, when parsing `"0b5"`, the `context` will be `"binary"`.
+
+#![allow(unused_imports)]
+use super::chapter_1;
+use super::chapter_3;
+use crate::combinator::alt;
+use crate::combinator::cut_err;
+use crate::error::ErrMode;
+use crate::error::Error;
+use crate::error::VerboseError;
+use crate::IResult;
+use crate::Parser;
+use crate::_topic;
+
+pub use super::chapter_5 as previous;
+pub use super::chapter_7 as next;
diff --git a/vendor/winnow-0.4.7/src/_tutorial/chapter_7.rs b/vendor/winnow-0.4.7/src/_tutorial/chapter_7.rs
new file mode 100644
index 000000000..c20607c36
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/_tutorial/chapter_7.rs
@@ -0,0 +1,111 @@
+//! # Chapter 7: Integrating the Parser
+//!
+//! So far, we've highlighted how to incrementally parse, but how do we bring this all together
+//! into our application?
+//!
+//! The type we've been working with looks like:
+//! ```rust
+//! # use winnow::error::VerboseError;
+//! # use winnow::error::ErrMode;
+//! type IResult<'i, O> = Result<
+//! (&'i str, O),
+//! ErrMode<
+//! VerboseError<&'i str>
+//! >
+//! >;
+//! ```
+//! 1. We have to decide what to do about the `remainder` of the input.
+//! 2. The error type is not compatible with the rest of the Rust ecosystem
+//!
+//! Normally, Rust applications want errors that are `std::error::Error + Send + Sync + 'static`
+//! meaning:
+//! - They implement the [`std::error::Error`] trait
+//! - They can be sent across threads
+//! - They are safe to be referenced across threads
+//! - They do not borrow
+//!
+//! winnow provides some helpers for this:
+//! ```rust
+//! # use winnow::IResult;
+//! # use winnow::token::take_while;
+//! # use winnow::combinator::dispatch;
+//! # use winnow::token::take;
+//! # use winnow::combinator::fail;
+//! use winnow::Parser;
+//! use winnow::error::Error;
+//!
+//! #[derive(Debug, PartialEq, Eq)]
+//! pub struct Hex(usize);
+//!
+//! impl std::str::FromStr for Hex {
+//! type Err = Error<String>;
+//!
+//! fn from_str(input: &str) -> Result<Self, Self::Err> {
+//! parse_digits
+//! .map(Hex)
+//! .parse(input)
+//! .map_err(|e| e.into_owned())
+//! }
+//! }
+//!
+//! // ...
+//! # fn parse_digits(input: &str) -> IResult<&str, usize> {
+//! # dispatch!(take(2usize);
+//! # "0b" => parse_bin_digits.try_map(|s| usize::from_str_radix(s, 2)),
+//! # "0o" => parse_oct_digits.try_map(|s| usize::from_str_radix(s, 8)),
+//! # "0d" => parse_dec_digits.try_map(|s| usize::from_str_radix(s, 10)),
+//! # "0x" => parse_hex_digits.try_map(|s| usize::from_str_radix(s, 16)),
+//! # _ => fail,
+//! # ).parse_next(input)
+//! # }
+//! #
+//! # fn parse_bin_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='7'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_oct_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='7'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_dec_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='9'),
+//! # )).parse_next(input)
+//! # }
+//! #
+//! # fn parse_hex_digits(input: &str) -> IResult<&str, &str> {
+//! # take_while(1.., (
+//! # ('0'..='9'),
+//! # ('A'..='F'),
+//! # ('a'..='f'),
+//! # )).parse_next(input)
+//! # }
+//!
+//! fn main() {
+//! let input = "0x1a2b";
+//! assert_eq!(input.parse::<Hex>().unwrap(), Hex(0x1a2b));
+//!
+//! let input = "0x1a2b Hello";
+//! assert!(input.parse::<Hex>().is_err());
+//! let input = "ghiHello";
+//! assert!(input.parse::<Hex>().is_err());
+//! }
+//! ```
+//! - Ensures we hit [`eof`]
+//! - Removes the [`ErrMode`] wrapper
+//!
+//! [`Error::into_owned`]:
+//! - Converts the `&str` in `Error` to `String` which enables support for [`std::error::Error`]
+
+#![allow(unused_imports)]
+use super::chapter_1;
+use crate::combinator::eof;
+use crate::error::ErrMode;
+use crate::error::Error;
+use crate::IResult;
+
+pub use super::chapter_6 as previous;
diff --git a/vendor/winnow-0.4.7/src/_tutorial/mod.rs b/vendor/winnow-0.4.7/src/_tutorial/mod.rs
new file mode 100644
index 000000000..e4b8392f9
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/_tutorial/mod.rs
@@ -0,0 +1,12 @@
+//! # Tutorial
+//!
+//! Table of Content
+
+pub mod chapter_0;
+pub mod chapter_1;
+pub mod chapter_2;
+pub mod chapter_3;
+pub mod chapter_4;
+pub mod chapter_5;
+pub mod chapter_6;
+pub mod chapter_7;
diff --git a/vendor/winnow-0.4.7/src/ascii/mod.rs b/vendor/winnow-0.4.7/src/ascii/mod.rs
new file mode 100644
index 000000000..4ada7c00b
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/ascii/mod.rs
@@ -0,0 +1,1783 @@
+//! Character specific parsers and combinators
+//!
+//! Functions recognizing specific characters
+
+#[cfg(test)]
+mod tests;
+
+use crate::lib::std::ops::{Add, Shl};
+
+use crate::combinator::alt;
+use crate::token::one_of;
+
+use crate::combinator::cut_err;
+use crate::combinator::opt;
+use crate::error::ParseError;
+use crate::error::{ErrMode, ErrorKind, Needed};
+use crate::stream::ContainsToken;
+use crate::stream::{AsBStr, AsChar, Offset, ParseSlice, Stream, StreamIsPartial};
+use crate::stream::{Compare, CompareResult};
+use crate::token::take_while;
+use crate::trace::trace;
+use crate::IResult;
+use crate::Parser;
+
+/// Recognizes the string "\r\n".
+///
+/// *Complete version*: Will return an error if there's not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data.
+///
+/// # Example
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, IResult};
+/// # use winnow::ascii::crlf;
+/// fn parser(input: &str) -> IResult<&str, &str> {
+/// crlf(input)
+/// }
+///
+/// assert_eq!(parser("\r\nc"), Ok(("c", "\r\n")));
+/// assert_eq!(parser("ab\r\nc"), Err(ErrMode::Backtrack(Error::new("ab\r\nc", ErrorKind::Tag))));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Tag))));
+/// ```
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::Partial;
+/// # use winnow::ascii::crlf;
+/// assert_eq!(crlf::<_, Error<_>>(Partial::new("\r\nc")), Ok((Partial::new("c"), "\r\n")));
+/// assert_eq!(crlf::<_, Error<_>>(Partial::new("ab\r\nc")), Err(ErrMode::Backtrack(Error::new(Partial::new("ab\r\nc"), ErrorKind::Tag))));
+/// assert_eq!(crlf::<_, Error<_>>(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(2))));
+/// ```
+#[inline(always)]
+pub fn crlf<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ I: Compare<&'static str>,
+{
+ trace("crlf", move |input: I| "\r\n".parse_next(input)).parse_next(input)
+}
+
+/// Recognizes a string of any char except '\r\n' or '\n'.
+///
+/// *Complete version*: Will return an error if there's not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data.
+///
+/// # Example
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, IResult, error::Needed};
+/// # use winnow::ascii::not_line_ending;
+/// fn parser(input: &str) -> IResult<&str, &str> {
+/// not_line_ending(input)
+/// }
+///
+/// assert_eq!(parser("ab\r\nc"), Ok(("\r\nc", "ab")));
+/// assert_eq!(parser("ab\nc"), Ok(("\nc", "ab")));
+/// assert_eq!(parser("abc"), Ok(("", "abc")));
+/// assert_eq!(parser(""), Ok(("", "")));
+/// assert_eq!(parser("a\rb\nc"), Err(ErrMode::Backtrack(Error { input: "a\rb\nc", kind: ErrorKind::Tag })));
+/// assert_eq!(parser("a\rbc"), Err(ErrMode::Backtrack(Error { input: "a\rbc", kind: ErrorKind::Tag })));
+/// ```
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, IResult, error::Needed};
+/// # use winnow::Partial;
+/// # use winnow::ascii::not_line_ending;
+/// assert_eq!(not_line_ending::<_, Error<_>>(Partial::new("ab\r\nc")), Ok((Partial::new("\r\nc"), "ab")));
+/// assert_eq!(not_line_ending::<_, Error<_>>(Partial::new("abc")), Err(ErrMode::Incomplete(Needed::Unknown)));
+/// assert_eq!(not_line_ending::<_, Error<_>>(Partial::new("")), Err(ErrMode::Incomplete(Needed::Unknown)));
+/// assert_eq!(not_line_ending::<_, Error<_>>(Partial::new("a\rb\nc")), Err(ErrMode::Backtrack(Error::new(Partial::new("a\rb\nc"), ErrorKind::Tag ))));
+/// assert_eq!(not_line_ending::<_, Error<_>>(Partial::new("a\rbc")), Err(ErrMode::Backtrack(Error::new(Partial::new("a\rbc"), ErrorKind::Tag ))));
+/// ```
+#[inline(always)]
+pub fn not_line_ending<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream + AsBStr,
+ I: Compare<&'static str>,
+ <I as Stream>::Token: AsChar,
+{
+ trace("not_line_ending", move |input: I| {
+ if <I as StreamIsPartial>::is_partial_supported() {
+ not_line_ending_::<_, _, true>(input)
+ } else {
+ not_line_ending_::<_, _, false>(input)
+ }
+ })
+ .parse_next(input)
+}
+
+fn not_line_ending_<I, E: ParseError<I>, const PARTIAL: bool>(
+ input: I,
+) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream + AsBStr,
+ I: Compare<&'static str>,
+ <I as Stream>::Token: AsChar,
+{
+ match input.offset_for(|item| {
+ let c = item.as_char();
+ c == '\r' || c == '\n'
+ }) {
+ None if PARTIAL && input.is_partial() => Err(ErrMode::Incomplete(Needed::Unknown)),
+ None => Ok(input.next_slice(input.eof_offset())),
+ Some(offset) => {
+ let (new_input, res) = input.next_slice(offset);
+ let bytes = new_input.as_bstr();
+ let nth = bytes[0];
+ if nth == b'\r' {
+ let comp = new_input.compare("\r\n");
+ match comp {
+ //FIXME: calculate the right index
+ CompareResult::Ok => {}
+ CompareResult::Incomplete if PARTIAL && input.is_partial() => {
+ return Err(ErrMode::Incomplete(Needed::Unknown));
+ }
+ CompareResult::Incomplete | CompareResult::Error => {
+ let e: ErrorKind = ErrorKind::Tag;
+ return Err(ErrMode::from_error_kind(input, e));
+ }
+ }
+ }
+ Ok((new_input, res))
+ }
+ }
+}
+
+/// Recognizes an end of line (both '\n' and '\r\n').
+///
+/// *Complete version*: Will return an error if there's not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data.
+///
+/// # Example
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, IResult, error::Needed};
+/// # use winnow::ascii::line_ending;
+/// fn parser(input: &str) -> IResult<&str, &str> {
+/// line_ending(input)
+/// }
+///
+/// assert_eq!(parser("\r\nc"), Ok(("c", "\r\n")));
+/// assert_eq!(parser("ab\r\nc"), Err(ErrMode::Backtrack(Error::new("ab\r\nc", ErrorKind::Tag))));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Tag))));
+/// ```
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::Partial;
+/// # use winnow::ascii::line_ending;
+/// assert_eq!(line_ending::<_, Error<_>>(Partial::new("\r\nc")), Ok((Partial::new("c"), "\r\n")));
+/// assert_eq!(line_ending::<_, Error<_>>(Partial::new("ab\r\nc")), Err(ErrMode::Backtrack(Error::new(Partial::new("ab\r\nc"), ErrorKind::Tag))));
+/// assert_eq!(line_ending::<_, Error<_>>(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn line_ending<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ I: Compare<&'static str>,
+{
+ trace("line_ending", move |input: I| {
+ alt(("\n", "\r\n")).parse_next(input)
+ })
+ .parse_next(input)
+}
+
+/// Matches a newline character '\n'.
+///
+/// *Complete version*: Will return an error if there's not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data.
+///
+/// # Example
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, IResult, error::Needed};
+/// # use winnow::ascii::newline;
+/// fn parser(input: &str) -> IResult<&str, char> {
+/// newline(input)
+/// }
+///
+/// assert_eq!(parser("\nc"), Ok(("c", '\n')));
+/// assert_eq!(parser("\r\nc"), Err(ErrMode::Backtrack(Error::new("\r\nc", ErrorKind::Verify))));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Token))));
+/// ```
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::Partial;
+/// # use winnow::ascii::newline;
+/// assert_eq!(newline::<_, Error<_>>(Partial::new("\nc")), Ok((Partial::new("c"), '\n')));
+/// assert_eq!(newline::<_, Error<_>>(Partial::new("\r\nc")), Err(ErrMode::Backtrack(Error::new(Partial::new("\r\nc"), ErrorKind::Verify))));
+/// assert_eq!(newline::<_, Error<_>>(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn newline<I, Error: ParseError<I>>(input: I) -> IResult<I, char, Error>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar + Copy,
+{
+ trace("newline", move |input: I| {
+ '\n'.map(|c: <I as Stream>::Token| c.as_char())
+ .parse_next(input)
+ })
+ .parse_next(input)
+}
+
+/// Matches a tab character '\t'.
+///
+/// *Complete version*: Will return an error if there's not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data.
+///
+/// # Example
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, IResult, error::Needed};
+/// # use winnow::ascii::tab;
+/// fn parser(input: &str) -> IResult<&str, char> {
+/// tab(input)
+/// }
+///
+/// assert_eq!(parser("\tc"), Ok(("c", '\t')));
+/// assert_eq!(parser("\r\nc"), Err(ErrMode::Backtrack(Error::new("\r\nc", ErrorKind::Verify))));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Token))));
+/// ```
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::Partial;
+/// # use winnow::ascii::tab;
+/// assert_eq!(tab::<_, Error<_>>(Partial::new("\tc")), Ok((Partial::new("c"), '\t')));
+/// assert_eq!(tab::<_, Error<_>>(Partial::new("\r\nc")), Err(ErrMode::Backtrack(Error::new(Partial::new("\r\nc"), ErrorKind::Verify))));
+/// assert_eq!(tab::<_, Error<_>>(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn tab<I, Error: ParseError<I>>(input: I) -> IResult<I, char, Error>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar + Copy,
+{
+ trace("tab", move |input: I| {
+ '\t'.map(|c: <I as Stream>::Token| c.as_char())
+ .parse_next(input)
+ })
+ .parse_next(input)
+}
+
+/// Recognizes zero or more lowercase and uppercase ASCII alphabetic characters: a-z, A-Z
+///
+/// *Complete version*: Will return the whole input if no terminating token is found (a non
+/// alphabetic character).
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data,
+/// or if no terminating token is found (a non alphabetic character).
+///
+/// # Example
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::ascii::alpha0;
+/// fn parser(input: &str) -> IResult<&str, &str> {
+/// alpha0(input)
+/// }
+///
+/// assert_eq!(parser("ab1c"), Ok(("1c", "ab")));
+/// assert_eq!(parser("1c"), Ok(("1c", "")));
+/// assert_eq!(parser(""), Ok(("", "")));
+/// ```
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::Partial;
+/// # use winnow::ascii::alpha0;
+/// assert_eq!(alpha0::<_, Error<_>>(Partial::new("ab1c")), Ok((Partial::new("1c"), "ab")));
+/// assert_eq!(alpha0::<_, Error<_>>(Partial::new("1c")), Ok((Partial::new("1c"), "")));
+/// assert_eq!(alpha0::<_, Error<_>>(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn alpha0<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar,
+{
+ trace("alpha0", move |input: I| {
+ take_while(0.., |c: <I as Stream>::Token| c.is_alpha()).parse_next(input)
+ })
+ .parse_next(input)
+}
+
+/// Recognizes one or more lowercase and uppercase ASCII alphabetic characters: a-z, A-Z
+///
+/// *Complete version*: Will return an error if there's not enough input data,
+/// or the whole input if no terminating token is found (a non alphabetic character).
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data,
+/// or if no terminating token is found (a non alphabetic character).
+///
+/// # Example
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, IResult, error::Needed};
+/// # use winnow::ascii::alpha1;
+/// fn parser(input: &str) -> IResult<&str, &str> {
+/// alpha1(input)
+/// }
+///
+/// assert_eq!(parser("aB1c"), Ok(("1c", "aB")));
+/// assert_eq!(parser("1c"), Err(ErrMode::Backtrack(Error::new("1c", ErrorKind::Slice))));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Slice))));
+/// ```
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::Partial;
+/// # use winnow::ascii::alpha1;
+/// assert_eq!(alpha1::<_, Error<_>>(Partial::new("aB1c")), Ok((Partial::new("1c"), "aB")));
+/// assert_eq!(alpha1::<_, Error<_>>(Partial::new("1c")), Err(ErrMode::Backtrack(Error::new(Partial::new("1c"), ErrorKind::Slice))));
+/// assert_eq!(alpha1::<_, Error<_>>(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn alpha1<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar,
+{
+ trace("alpha1", move |input: I| {
+ take_while(1.., |c: <I as Stream>::Token| c.is_alpha()).parse_next(input)
+ })
+ .parse_next(input)
+}
+
+/// Recognizes zero or more ASCII numerical characters: 0-9
+///
+/// *Complete version*: Will return an error if there's not enough input data,
+/// or the whole input if no terminating token is found (a non digit character).
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data,
+/// or if no terminating token is found (a non digit character).
+///
+/// # Example
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::ascii::digit0;
+/// fn parser(input: &str) -> IResult<&str, &str> {
+/// digit0(input)
+/// }
+///
+/// assert_eq!(parser("21c"), Ok(("c", "21")));
+/// assert_eq!(parser("21"), Ok(("", "21")));
+/// assert_eq!(parser("a21c"), Ok(("a21c", "")));
+/// assert_eq!(parser(""), Ok(("", "")));
+/// ```
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::Partial;
+/// # use winnow::ascii::digit0;
+/// assert_eq!(digit0::<_, Error<_>>(Partial::new("21c")), Ok((Partial::new("c"), "21")));
+/// assert_eq!(digit0::<_, Error<_>>(Partial::new("a21c")), Ok((Partial::new("a21c"), "")));
+/// assert_eq!(digit0::<_, Error<_>>(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn digit0<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar,
+{
+ trace("digit0", move |input: I| {
+ take_while(0.., |c: <I as Stream>::Token| c.is_dec_digit()).parse_next(input)
+ })
+ .parse_next(input)
+}
+
+/// Recognizes one or more ASCII numerical characters: 0-9
+///
+/// *Complete version*: Will return an error if there's not enough input data,
+/// or the whole input if no terminating token is found (a non digit character).
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data,
+/// or if no terminating token is found (a non digit character).
+///
+/// # Example
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, IResult, error::Needed};
+/// # use winnow::ascii::digit1;
+/// fn parser(input: &str) -> IResult<&str, &str> {
+/// digit1(input)
+/// }
+///
+/// assert_eq!(parser("21c"), Ok(("c", "21")));
+/// assert_eq!(parser("c1"), Err(ErrMode::Backtrack(Error::new("c1", ErrorKind::Slice))));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Slice))));
+/// ```
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::Partial;
+/// # use winnow::ascii::digit1;
+/// assert_eq!(digit1::<_, Error<_>>(Partial::new("21c")), Ok((Partial::new("c"), "21")));
+/// assert_eq!(digit1::<_, Error<_>>(Partial::new("c1")), Err(ErrMode::Backtrack(Error::new(Partial::new("c1"), ErrorKind::Slice))));
+/// assert_eq!(digit1::<_, Error<_>>(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+///
+/// ## Parsing an integer
+///
+/// You can use `digit1` in combination with [`Parser::try_map`][crate::Parser::try_map] to parse an integer:
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, IResult, error::Needed, Parser};
+/// # use winnow::ascii::digit1;
+/// fn parser(input: &str) -> IResult<&str, u32> {
+/// digit1.try_map(str::parse).parse_next(input)
+/// }
+///
+/// assert_eq!(parser("416"), Ok(("", 416)));
+/// assert_eq!(parser("12b"), Ok(("b", 12)));
+/// assert!(parser("b").is_err());
+/// ```
+#[inline(always)]
+pub fn digit1<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar,
+{
+ trace("digit1", move |input: I| {
+ take_while(1.., |c: <I as Stream>::Token| c.is_dec_digit()).parse_next(input)
+ })
+ .parse_next(input)
+}
+
+/// Recognizes zero or more ASCII hexadecimal numerical characters: 0-9, A-F, a-f
+///
+/// *Complete version*: Will return the whole input if no terminating token is found (a non hexadecimal digit character).
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data,
+/// or if no terminating token is found (a non hexadecimal digit character).
+///
+/// # Example
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::ascii::hex_digit0;
+/// fn parser(input: &str) -> IResult<&str, &str> {
+/// hex_digit0(input)
+/// }
+///
+/// assert_eq!(parser("21cZ"), Ok(("Z", "21c")));
+/// assert_eq!(parser("Z21c"), Ok(("Z21c", "")));
+/// assert_eq!(parser(""), Ok(("", "")));
+/// ```
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::Partial;
+/// # use winnow::ascii::hex_digit0;
+/// assert_eq!(hex_digit0::<_, Error<_>>(Partial::new("21cZ")), Ok((Partial::new("Z"), "21c")));
+/// assert_eq!(hex_digit0::<_, Error<_>>(Partial::new("Z21c")), Ok((Partial::new("Z21c"), "")));
+/// assert_eq!(hex_digit0::<_, Error<_>>(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn hex_digit0<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar,
+{
+ trace("hex_digit0", move |input: I| {
+ take_while(0.., |c: <I as Stream>::Token| c.is_hex_digit()).parse_next(input)
+ })
+ .parse_next(input)
+}
+
+/// Recognizes one or more ASCII hexadecimal numerical characters: 0-9, A-F, a-f
+///
+/// *Complete version*: Will return an error if there's not enough input data,
+/// or the whole input if no terminating token is found (a non hexadecimal digit character).
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data,
+/// or if no terminating token is found (a non hexadecimal digit character).
+///
+/// # Example
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, IResult, error::Needed};
+/// # use winnow::ascii::hex_digit1;
+/// fn parser(input: &str) -> IResult<&str, &str> {
+/// hex_digit1(input)
+/// }
+///
+/// assert_eq!(parser("21cZ"), Ok(("Z", "21c")));
+/// assert_eq!(parser("H2"), Err(ErrMode::Backtrack(Error::new("H2", ErrorKind::Slice))));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Slice))));
+/// ```
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::Partial;
+/// # use winnow::ascii::hex_digit1;
+/// assert_eq!(hex_digit1::<_, Error<_>>(Partial::new("21cZ")), Ok((Partial::new("Z"), "21c")));
+/// assert_eq!(hex_digit1::<_, Error<_>>(Partial::new("H2")), Err(ErrMode::Backtrack(Error::new(Partial::new("H2"), ErrorKind::Slice))));
+/// assert_eq!(hex_digit1::<_, Error<_>>(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn hex_digit1<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar,
+{
+ trace("hex_digit1", move |input: I| {
+ take_while(1.., |c: <I as Stream>::Token| c.is_hex_digit()).parse_next(input)
+ })
+ .parse_next(input)
+}
+
+/// Recognizes zero or more octal characters: 0-7
+///
+/// *Complete version*: Will return the whole input if no terminating token is found (a non octal
+/// digit character).
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data,
+/// or if no terminating token is found (a non octal digit character).
+///
+/// # Example
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::ascii::oct_digit0;
+/// fn parser(input: &str) -> IResult<&str, &str> {
+/// oct_digit0(input)
+/// }
+///
+/// assert_eq!(parser("21cZ"), Ok(("cZ", "21")));
+/// assert_eq!(parser("Z21c"), Ok(("Z21c", "")));
+/// assert_eq!(parser(""), Ok(("", "")));
+/// ```
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::Partial;
+/// # use winnow::ascii::oct_digit0;
+/// assert_eq!(oct_digit0::<_, Error<_>>(Partial::new("21cZ")), Ok((Partial::new("cZ"), "21")));
+/// assert_eq!(oct_digit0::<_, Error<_>>(Partial::new("Z21c")), Ok((Partial::new("Z21c"), "")));
+/// assert_eq!(oct_digit0::<_, Error<_>>(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn oct_digit0<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar,
+{
+ trace("oct_digit0", move |input: I| {
+ take_while(0.., |c: <I as Stream>::Token| c.is_oct_digit()).parse_next(input)
+ })
+ .parse_next(input)
+}
+
+/// Recognizes one or more octal characters: 0-7
+///
+/// *Complete version*: Will return an error if there's not enough input data,
+/// or the whole input if no terminating token is found (a non octal digit character).
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data,
+/// or if no terminating token is found (a non octal digit character).
+///
+/// # Example
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, IResult, error::Needed};
+/// # use winnow::ascii::oct_digit1;
+/// fn parser(input: &str) -> IResult<&str, &str> {
+/// oct_digit1(input)
+/// }
+///
+/// assert_eq!(parser("21cZ"), Ok(("cZ", "21")));
+/// assert_eq!(parser("H2"), Err(ErrMode::Backtrack(Error::new("H2", ErrorKind::Slice))));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Slice))));
+/// ```
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::Partial;
+/// # use winnow::ascii::oct_digit1;
+/// assert_eq!(oct_digit1::<_, Error<_>>(Partial::new("21cZ")), Ok((Partial::new("cZ"), "21")));
+/// assert_eq!(oct_digit1::<_, Error<_>>(Partial::new("H2")), Err(ErrMode::Backtrack(Error::new(Partial::new("H2"), ErrorKind::Slice))));
+/// assert_eq!(oct_digit1::<_, Error<_>>(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn oct_digit1<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar,
+{
+ trace("oct_digit0", move |input: I| {
+ take_while(1.., |c: <I as Stream>::Token| c.is_oct_digit()).parse_next(input)
+ })
+ .parse_next(input)
+}
+
+/// Recognizes zero or more ASCII numerical and alphabetic characters: 0-9, a-z, A-Z
+///
+/// *Complete version*: Will return the whole input if no terminating token is found (a non
+/// alphanumerical character).
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data,
+/// or if no terminating token is found (a non alphanumerical character).
+///
+/// # Example
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::ascii::alphanumeric0;
+/// fn parser(input: &str) -> IResult<&str, &str> {
+/// alphanumeric0(input)
+/// }
+///
+/// assert_eq!(parser("21cZ%1"), Ok(("%1", "21cZ")));
+/// assert_eq!(parser("&Z21c"), Ok(("&Z21c", "")));
+/// assert_eq!(parser(""), Ok(("", "")));
+/// ```
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::Partial;
+/// # use winnow::ascii::alphanumeric0;
+/// assert_eq!(alphanumeric0::<_, Error<_>>(Partial::new("21cZ%1")), Ok((Partial::new("%1"), "21cZ")));
+/// assert_eq!(alphanumeric0::<_, Error<_>>(Partial::new("&Z21c")), Ok((Partial::new("&Z21c"), "")));
+/// assert_eq!(alphanumeric0::<_, Error<_>>(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn alphanumeric0<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar,
+{
+ trace("alphanumeric0", move |input: I| {
+ take_while(0.., |c: <I as Stream>::Token| c.is_alphanum()).parse_next(input)
+ })
+ .parse_next(input)
+}
+
+/// Recognizes one or more ASCII numerical and alphabetic characters: 0-9, a-z, A-Z
+///
+/// *Complete version*: Will return an error if there's not enough input data,
+/// or the whole input if no terminating token is found (a non alphanumerical character).
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data,
+/// or if no terminating token is found (a non alphanumerical character).
+///
+/// # Example
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, IResult, error::Needed};
+/// # use winnow::ascii::alphanumeric1;
+/// fn parser(input: &str) -> IResult<&str, &str> {
+/// alphanumeric1(input)
+/// }
+///
+/// assert_eq!(parser("21cZ%1"), Ok(("%1", "21cZ")));
+/// assert_eq!(parser("&H2"), Err(ErrMode::Backtrack(Error::new("&H2", ErrorKind::Slice))));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Slice))));
+/// ```
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::Partial;
+/// # use winnow::ascii::alphanumeric1;
+/// assert_eq!(alphanumeric1::<_, Error<_>>(Partial::new("21cZ%1")), Ok((Partial::new("%1"), "21cZ")));
+/// assert_eq!(alphanumeric1::<_, Error<_>>(Partial::new("&H2")), Err(ErrMode::Backtrack(Error::new(Partial::new("&H2"), ErrorKind::Slice))));
+/// assert_eq!(alphanumeric1::<_, Error<_>>(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn alphanumeric1<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar,
+{
+ trace("alphanumeric1", move |input: I| {
+ take_while(1.., |c: <I as Stream>::Token| c.is_alphanum()).parse_next(input)
+ })
+ .parse_next(input)
+}
+
+/// Recognizes zero or more spaces and tabs.
+///
+/// *Complete version*: Will return the whole input if no terminating token is found (a non space
+/// character).
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data,
+/// or if no terminating token is found (a non space character).
+///
+/// # Example
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::Partial;
+/// # use winnow::ascii::space0;
+/// assert_eq!(space0::<_, Error<_>>(Partial::new(" \t21c")), Ok((Partial::new("21c"), " \t")));
+/// assert_eq!(space0::<_, Error<_>>(Partial::new("Z21c")), Ok((Partial::new("Z21c"), "")));
+/// assert_eq!(space0::<_, Error<_>>(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn space0<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar + Copy,
+{
+ trace("space0", move |input: I| {
+ take_while(0.., |c: <I as Stream>::Token| {
+ let ch = c.as_char();
+ matches!(ch, ' ' | '\t')
+ })
+ .parse_next(input)
+ })
+ .parse_next(input)
+}
+
+/// Recognizes one or more spaces and tabs.
+///
+/// *Complete version*: Will return an error if there's not enough input data,
+/// or the whole input if no terminating token is found (a non space character).
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data,
+/// or if no terminating token is found (a non space character).
+///
+/// # Example
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, IResult, error::Needed};
+/// # use winnow::ascii::space1;
+/// fn parser(input: &str) -> IResult<&str, &str> {
+/// space1(input)
+/// }
+///
+/// assert_eq!(parser(" \t21c"), Ok(("21c", " \t")));
+/// assert_eq!(parser("H2"), Err(ErrMode::Backtrack(Error::new("H2", ErrorKind::Slice))));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Slice))));
+/// ```
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::Partial;
+/// # use winnow::ascii::space1;
+/// assert_eq!(space1::<_, Error<_>>(Partial::new(" \t21c")), Ok((Partial::new("21c"), " \t")));
+/// assert_eq!(space1::<_, Error<_>>(Partial::new("H2")), Err(ErrMode::Backtrack(Error::new(Partial::new("H2"), ErrorKind::Slice))));
+/// assert_eq!(space1::<_, Error<_>>(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn space1<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar + Copy,
+{
+ trace("space1", move |input: I| {
+ take_while(1.., |c: <I as Stream>::Token| {
+ let ch = c.as_char();
+ matches!(ch, ' ' | '\t')
+ })
+ .parse_next(input)
+ })
+ .parse_next(input)
+}
+
+/// Recognizes zero or more spaces, tabs, carriage returns and line feeds.
+///
+/// *Complete version*: will return the whole input if no terminating token is found (a non space
+/// character).
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data,
+/// or if no terminating token is found (a non space character).
+///
+/// # Example
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::ascii::multispace0;
+/// fn parser(input: &str) -> IResult<&str, &str> {
+/// multispace0(input)
+/// }
+///
+/// assert_eq!(parser(" \t\n\r21c"), Ok(("21c", " \t\n\r")));
+/// assert_eq!(parser("Z21c"), Ok(("Z21c", "")));
+/// assert_eq!(parser(""), Ok(("", "")));
+/// ```
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::Partial;
+/// # use winnow::ascii::multispace0;
+/// assert_eq!(multispace0::<_, Error<_>>(Partial::new(" \t\n\r21c")), Ok((Partial::new("21c"), " \t\n\r")));
+/// assert_eq!(multispace0::<_, Error<_>>(Partial::new("Z21c")), Ok((Partial::new("Z21c"), "")));
+/// assert_eq!(multispace0::<_, Error<_>>(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn multispace0<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar + Copy,
+{
+ trace("multispace0", move |input: I| {
+ take_while(0.., |c: <I as Stream>::Token| {
+ let ch = c.as_char();
+ matches!(ch, ' ' | '\t' | '\r' | '\n')
+ })
+ .parse_next(input)
+ })
+ .parse_next(input)
+}
+
+/// Recognizes one or more spaces, tabs, carriage returns and line feeds.
+///
+/// *Complete version*: will return an error if there's not enough input data,
+/// or the whole input if no terminating token is found (a non space character).
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data,
+/// or if no terminating token is found (a non space character).
+///
+/// # Example
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, IResult, error::Needed};
+/// # use winnow::ascii::multispace1;
+/// fn parser(input: &str) -> IResult<&str, &str> {
+/// multispace1(input)
+/// }
+///
+/// assert_eq!(parser(" \t\n\r21c"), Ok(("21c", " \t\n\r")));
+/// assert_eq!(parser("H2"), Err(ErrMode::Backtrack(Error::new("H2", ErrorKind::Slice))));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Slice))));
+/// ```
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, error::Needed};
+/// # use winnow::Partial;
+/// # use winnow::ascii::multispace1;
+/// assert_eq!(multispace1::<_, Error<_>>(Partial::new(" \t\n\r21c")), Ok((Partial::new("21c"), " \t\n\r")));
+/// assert_eq!(multispace1::<_, Error<_>>(Partial::new("H2")), Err(ErrMode::Backtrack(Error::new(Partial::new("H2"), ErrorKind::Slice))));
+/// assert_eq!(multispace1::<_, Error<_>>(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn multispace1<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar + Copy,
+{
+ trace("multispace1", move |input: I| {
+ take_while(1.., |c: <I as Stream>::Token| {
+ let ch = c.as_char();
+ matches!(ch, ' ' | '\t' | '\r' | '\n')
+ })
+ .parse_next(input)
+ })
+ .parse_next(input)
+}
+
+/// Decode a decimal unsigned integer
+///
+/// *Complete version*: can parse until the end of input.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data.
+#[doc(alias = "u8")]
+#[doc(alias = "u16")]
+#[doc(alias = "u32")]
+#[doc(alias = "u64")]
+#[doc(alias = "u128")]
+pub fn dec_uint<I, O, E: ParseError<I>>(input: I) -> IResult<I, O, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar + Copy,
+ O: Uint,
+{
+ trace("dec_uint", move |input: I| {
+ if input.eof_offset() == 0 {
+ if <I as StreamIsPartial>::is_partial_supported() && input.is_partial() {
+ return Err(ErrMode::Incomplete(Needed::new(1)));
+ } else {
+ return Err(ErrMode::from_error_kind(input, ErrorKind::Slice));
+ }
+ }
+
+ let mut value = O::default();
+ for (offset, c) in input.iter_offsets() {
+ match c.as_char().to_digit(10) {
+ Some(d) => match value.checked_mul(10, sealed::SealedMarker).and_then(|v| {
+ let d = d as u8;
+ v.checked_add(d, sealed::SealedMarker)
+ }) {
+ None => return Err(ErrMode::from_error_kind(input, ErrorKind::Verify)),
+ Some(v) => value = v,
+ },
+ None => {
+ if offset == 0 {
+ return Err(ErrMode::from_error_kind(input, ErrorKind::Slice));
+ } else {
+ return Ok((input.next_slice(offset).0, value));
+ }
+ }
+ }
+ }
+
+ if <I as StreamIsPartial>::is_partial_supported() && input.is_partial() {
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ } else {
+ Ok((input.next_slice(input.eof_offset()).0, value))
+ }
+ })
+ .parse_next(input)
+}
+
+/// Metadata for parsing unsigned integers, see [`dec_uint`]
+pub trait Uint: Default {
+ #[doc(hidden)]
+ fn checked_mul(self, by: u8, _: sealed::SealedMarker) -> Option<Self>;
+ #[doc(hidden)]
+ fn checked_add(self, by: u8, _: sealed::SealedMarker) -> Option<Self>;
+}
+
+impl Uint for u8 {
+ fn checked_mul(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_mul(by as Self)
+ }
+ fn checked_add(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_add(by as Self)
+ }
+}
+
+impl Uint for u16 {
+ fn checked_mul(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_mul(by as Self)
+ }
+ fn checked_add(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_add(by as Self)
+ }
+}
+
+impl Uint for u32 {
+ fn checked_mul(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_mul(by as Self)
+ }
+ fn checked_add(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_add(by as Self)
+ }
+}
+
+impl Uint for u64 {
+ fn checked_mul(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_mul(by as Self)
+ }
+ fn checked_add(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_add(by as Self)
+ }
+}
+
+impl Uint for u128 {
+ fn checked_mul(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_mul(by as Self)
+ }
+ fn checked_add(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_add(by as Self)
+ }
+}
+
+impl Uint for i8 {
+ fn checked_mul(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_mul(by as Self)
+ }
+ fn checked_add(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_add(by as Self)
+ }
+}
+
+impl Uint for i16 {
+ fn checked_mul(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_mul(by as Self)
+ }
+ fn checked_add(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_add(by as Self)
+ }
+}
+
+impl Uint for i32 {
+ fn checked_mul(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_mul(by as Self)
+ }
+ fn checked_add(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_add(by as Self)
+ }
+}
+
+impl Uint for i64 {
+ fn checked_mul(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_mul(by as Self)
+ }
+ fn checked_add(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_add(by as Self)
+ }
+}
+
+impl Uint for i128 {
+ fn checked_mul(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_mul(by as Self)
+ }
+ fn checked_add(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_add(by as Self)
+ }
+}
+
+/// Decode a decimal signed integer
+///
+/// *Complete version*: can parse until the end of input.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data.
+#[doc(alias = "i8")]
+#[doc(alias = "i16")]
+#[doc(alias = "i32")]
+#[doc(alias = "i64")]
+#[doc(alias = "i128")]
+pub fn dec_int<I, O, E: ParseError<I>>(input: I) -> IResult<I, O, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar + Copy,
+ O: Int,
+{
+ trace("dec_int", move |input: I| {
+ fn sign(token: impl AsChar) -> bool {
+ let token = token.as_char();
+ token == '+' || token == '-'
+ }
+ let (input, sign) = opt(crate::token::one_of(sign).map(AsChar::as_char))
+ .map(|c| c != Some('-'))
+ .parse_next(input)?;
+
+ if input.eof_offset() == 0 {
+ if <I as StreamIsPartial>::is_partial_supported() && input.is_partial() {
+ return Err(ErrMode::Incomplete(Needed::new(1)));
+ } else {
+ return Err(ErrMode::from_error_kind(input, ErrorKind::Slice));
+ }
+ }
+
+ let mut value = O::default();
+ for (offset, c) in input.iter_offsets() {
+ match c.as_char().to_digit(10) {
+ Some(d) => match value.checked_mul(10, sealed::SealedMarker).and_then(|v| {
+ let d = d as u8;
+ if sign {
+ v.checked_add(d, sealed::SealedMarker)
+ } else {
+ v.checked_sub(d, sealed::SealedMarker)
+ }
+ }) {
+ None => return Err(ErrMode::from_error_kind(input, ErrorKind::Verify)),
+ Some(v) => value = v,
+ },
+ None => {
+ if offset == 0 {
+ return Err(ErrMode::from_error_kind(input, ErrorKind::Slice));
+ } else {
+ return Ok((input.next_slice(offset).0, value));
+ }
+ }
+ }
+ }
+
+ if <I as StreamIsPartial>::is_partial_supported() && input.is_partial() {
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ } else {
+ Ok((input.next_slice(input.eof_offset()).0, value))
+ }
+ })
+ .parse_next(input)
+}
+
+/// Metadata for parsing signed integers, see [`dec_int`]
+pub trait Int: Uint {
+ #[doc(hidden)]
+ fn checked_sub(self, by: u8, _: sealed::SealedMarker) -> Option<Self>;
+}
+
+impl Int for i8 {
+ fn checked_sub(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_sub(by as Self)
+ }
+}
+
+impl Int for i16 {
+ fn checked_sub(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_sub(by as Self)
+ }
+}
+
+impl Int for i32 {
+ fn checked_sub(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_sub(by as Self)
+ }
+}
+
+impl Int for i64 {
+ fn checked_sub(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_sub(by as Self)
+ }
+}
+
+impl Int for i128 {
+ fn checked_sub(self, by: u8, _: sealed::SealedMarker) -> Option<Self> {
+ self.checked_sub(by as Self)
+ }
+}
+
+/// Decode a variable-width hexadecimal integer.
+///
+/// *Complete version*: Will parse until the end of input if it has fewer characters than the type
+/// supports.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if end-of-input
+/// is hit before a hard boundary (non-hex character, more characters than supported).
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::prelude::*;
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error};
+/// use winnow::ascii::hex_uint;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], u32> {
+/// hex_uint(s)
+/// }
+///
+/// assert_eq!(parser(&b"01AE"[..]), Ok((&b""[..], 0x01AE)));
+/// assert_eq!(parser(&b"abc"[..]), Ok((&b""[..], 0x0ABC)));
+/// assert_eq!(parser(&b"ggg"[..]), Err(ErrMode::Backtrack(Error::new(&b"ggg"[..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::prelude::*;
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::Partial;
+/// use winnow::ascii::hex_uint;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u32> {
+/// hex_uint(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"01AE;"[..])), Ok((Partial::new(&b";"[..]), 0x01AE)));
+/// assert_eq!(parser(Partial::new(&b"abc"[..])), Err(ErrMode::Incomplete(Needed::new(1))));
+/// assert_eq!(parser(Partial::new(&b"ggg"[..])), Err(ErrMode::Backtrack(Error::new(Partial::new(&b"ggg"[..]), ErrorKind::Slice))));
+/// ```
+#[inline]
+pub fn hex_uint<I, O, E: ParseError<I>>(input: I) -> IResult<I, O, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ O: HexUint,
+ <I as Stream>::Token: AsChar,
+ <I as Stream>::Slice: AsBStr,
+{
+ trace("hex_uint", move |input: I| {
+ let invalid_offset = input
+ .offset_for(|c| {
+ let c = c.as_char();
+ !"0123456789abcdefABCDEF".contains(c)
+ })
+ .unwrap_or_else(|| input.eof_offset());
+ let max_nibbles = O::max_nibbles(sealed::SealedMarker);
+ let max_offset = input.offset_at(max_nibbles);
+ let offset = match max_offset {
+ Ok(max_offset) => {
+ if max_offset < invalid_offset {
+ // Overflow
+ return Err(ErrMode::from_error_kind(input, ErrorKind::Verify));
+ } else {
+ invalid_offset
+ }
+ }
+ Err(_) => {
+ if <I as StreamIsPartial>::is_partial_supported()
+ && input.is_partial()
+ && invalid_offset == input.eof_offset()
+ {
+ // Only the next byte is guaranteed required
+ return Err(ErrMode::Incomplete(Needed::new(1)));
+ } else {
+ invalid_offset
+ }
+ }
+ };
+ if offset == 0 {
+ // Must be at least one digit
+ return Err(ErrMode::from_error_kind(input, ErrorKind::Slice));
+ }
+ let (remaining, parsed) = input.next_slice(offset);
+
+ let mut res = O::default();
+ for c in parsed.as_bstr() {
+ let nibble = *c as char;
+ let nibble = nibble.to_digit(16).unwrap_or(0) as u8;
+ let nibble = O::from(nibble);
+ res = (res << O::from(4)) + nibble;
+ }
+
+ Ok((remaining, res))
+ })
+ .parse_next(input)
+}
+
+/// Metadata for parsing hex numbers, see [`hex_uint`]
+pub trait HexUint:
+ Default + Shl<Self, Output = Self> + Add<Self, Output = Self> + From<u8>
+{
+ #[doc(hidden)]
+ fn max_nibbles(_: sealed::SealedMarker) -> usize;
+}
+
+impl HexUint for u8 {
+ #[inline(always)]
+ fn max_nibbles(_: sealed::SealedMarker) -> usize {
+ 2
+ }
+}
+
+impl HexUint for u16 {
+ #[inline(always)]
+ fn max_nibbles(_: sealed::SealedMarker) -> usize {
+ 4
+ }
+}
+
+impl HexUint for u32 {
+ #[inline(always)]
+ fn max_nibbles(_: sealed::SealedMarker) -> usize {
+ 8
+ }
+}
+
+impl HexUint for u64 {
+ #[inline(always)]
+ fn max_nibbles(_: sealed::SealedMarker) -> usize {
+ 16
+ }
+}
+
+impl HexUint for u128 {
+ #[inline(always)]
+ fn max_nibbles(_: sealed::SealedMarker) -> usize {
+ 32
+ }
+}
+
+/// Recognizes floating point number in text format and returns a f32 or f64.
+///
+/// *Complete version*: Can parse until the end of input.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::prelude::*;
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::error::Needed::Size;
+/// use winnow::ascii::float;
+///
+/// fn parser(s: &str) -> IResult<&str, f64> {
+/// float(s)
+/// }
+///
+/// assert_eq!(parser("11e-1"), Ok(("", 1.1)));
+/// assert_eq!(parser("123E-02"), Ok(("", 1.23)));
+/// assert_eq!(parser("123K-01"), Ok(("K-01", 123.0)));
+/// assert_eq!(parser("abc"), Err(ErrMode::Backtrack(Error::new("abc", ErrorKind::Tag))));
+/// ```
+///
+/// ```rust
+/// # use winnow::prelude::*;
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::error::Needed::Size;
+/// # use winnow::Partial;
+/// use winnow::ascii::float;
+///
+/// fn parser(s: Partial<&str>) -> IResult<Partial<&str>, f64> {
+/// float(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new("11e-1 ")), Ok((Partial::new(" "), 1.1)));
+/// assert_eq!(parser(Partial::new("11e-1")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// assert_eq!(parser(Partial::new("123E-02")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// assert_eq!(parser(Partial::new("123K-01")), Ok((Partial::new("K-01"), 123.0)));
+/// assert_eq!(parser(Partial::new("abc")), Err(ErrMode::Backtrack(Error::new(Partial::new("abc"), ErrorKind::Tag))));
+/// ```
+#[inline(always)]
+#[doc(alias = "f32")]
+#[doc(alias = "double")]
+pub fn float<I, O, E: ParseError<I>>(input: I) -> IResult<I, O, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ I: Offset + Compare<&'static str>,
+ <I as Stream>::Slice: ParseSlice<O>,
+ <I as Stream>::Token: AsChar + Copy,
+ <I as Stream>::IterOffsets: Clone,
+ I: AsBStr,
+ &'static str: ContainsToken<<I as Stream>::Token>,
+{
+ trace("float", move |input: I| {
+ let (i, s) = recognize_float_or_exceptions(input)?;
+ match s.parse_slice() {
+ Some(f) => Ok((i, f)),
+ None => Err(ErrMode::from_error_kind(i, ErrorKind::Verify)),
+ }
+ })
+ .parse_next(input)
+}
+
+fn recognize_float_or_exceptions<I, E: ParseError<I>>(
+ input: I,
+) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ I: Offset + Compare<&'static str>,
+ <I as Stream>::Token: AsChar + Copy,
+ <I as Stream>::IterOffsets: Clone,
+ I: AsBStr,
+ &'static str: ContainsToken<<I as Stream>::Token>,
+{
+ alt((
+ recognize_float,
+ crate::token::tag_no_case("nan"),
+ crate::token::tag_no_case("inf"),
+ crate::token::tag_no_case("infinity"),
+ ))
+ .parse_next(input)
+}
+
+fn recognize_float<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ I: Offset + Compare<&'static str>,
+ <I as Stream>::Token: AsChar + Copy,
+ <I as Stream>::IterOffsets: Clone,
+ I: AsBStr,
+ &'static str: ContainsToken<<I as Stream>::Token>,
+{
+ (
+ opt(one_of("+-")),
+ alt((
+ (digit1, opt(('.', opt(digit1)))).map(|_| ()),
+ ('.', digit1).map(|_| ()),
+ )),
+ opt((one_of("eE"), opt(one_of("+-")), cut_err(digit1))),
+ )
+ .recognize()
+ .parse_next(input)
+}
+
+/// Matches a byte string with escaped characters.
+///
+/// * The first argument matches the normal characters (it must not accept the control character)
+/// * The second argument is the control character (like `\` in most languages)
+/// * The third argument matches the escaped characters
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed, IResult};
+/// # use winnow::ascii::digit1;
+/// # use winnow::prelude::*;
+/// use winnow::ascii::escaped;
+/// use winnow::token::one_of;
+///
+/// fn esc(s: &str) -> IResult<&str, &str> {
+/// escaped(digit1, '\\', one_of(r#""n\"#)).parse_next(s)
+/// }
+///
+/// assert_eq!(esc("123;"), Ok((";", "123")));
+/// assert_eq!(esc(r#"12\"34;"#), Ok((";", r#"12\"34"#)));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed, IResult};
+/// # use winnow::ascii::digit1;
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::ascii::escaped;
+/// use winnow::token::one_of;
+///
+/// fn esc(s: Partial<&str>) -> IResult<Partial<&str>, &str> {
+/// escaped(digit1, '\\', one_of("\"n\\")).parse_next(s)
+/// }
+///
+/// assert_eq!(esc(Partial::new("123;")), Ok((Partial::new(";"), "123")));
+/// assert_eq!(esc(Partial::new("12\\\"34;")), Ok((Partial::new(";"), "12\\\"34")));
+/// ```
+#[inline(always)]
+pub fn escaped<'a, I: 'a, Error, F, G, O1, O2>(
+ mut normal: F,
+ control_char: char,
+ mut escapable: G,
+) -> impl Parser<I, <I as Stream>::Slice, Error>
+where
+ I: StreamIsPartial,
+ I: Stream + Offset,
+ <I as Stream>::Token: crate::stream::AsChar,
+ F: Parser<I, O1, Error>,
+ G: Parser<I, O2, Error>,
+ Error: ParseError<I>,
+{
+ trace("escaped", move |input: I| {
+ if <I as StreamIsPartial>::is_partial_supported() && input.is_partial() {
+ streaming_escaped_internal(input, &mut normal, control_char, &mut escapable)
+ } else {
+ complete_escaped_internal(input, &mut normal, control_char, &mut escapable)
+ }
+ })
+}
+
+fn streaming_escaped_internal<I, Error, F, G, O1, O2>(
+ input: I,
+ normal: &mut F,
+ control_char: char,
+ escapable: &mut G,
+) -> IResult<I, <I as Stream>::Slice, Error>
+where
+ I: StreamIsPartial,
+ I: Stream + Offset,
+ <I as Stream>::Token: crate::stream::AsChar,
+ F: Parser<I, O1, Error>,
+ G: Parser<I, O2, Error>,
+ Error: ParseError<I>,
+{
+ let mut i = input.clone();
+
+ while i.eof_offset() > 0 {
+ let current_len = i.eof_offset();
+
+ match normal.parse_next(i.clone()) {
+ Ok((i2, _)) => {
+ if i2.eof_offset() == 0 {
+ return Err(ErrMode::Incomplete(Needed::Unknown));
+ } else if i2.eof_offset() == current_len {
+ let offset = input.offset_to(&i2);
+ return Ok(input.next_slice(offset));
+ } else {
+ i = i2;
+ }
+ }
+ Err(ErrMode::Backtrack(_)) => {
+ if i.next_token().expect("eof_offset > 0").1.as_char() == control_char {
+ let next = control_char.len_utf8();
+ match escapable.parse_next(i.next_slice(next).0) {
+ Ok((i2, _)) => {
+ if i2.eof_offset() == 0 {
+ return Err(ErrMode::Incomplete(Needed::Unknown));
+ } else {
+ i = i2;
+ }
+ }
+ Err(e) => return Err(e),
+ }
+ } else {
+ let offset = input.offset_to(&i);
+ return Ok(input.next_slice(offset));
+ }
+ }
+ Err(e) => {
+ return Err(e);
+ }
+ }
+ }
+
+ Err(ErrMode::Incomplete(Needed::Unknown))
+}
+
+fn complete_escaped_internal<'a, I: 'a, Error, F, G, O1, O2>(
+ input: I,
+ normal: &mut F,
+ control_char: char,
+ escapable: &mut G,
+) -> IResult<I, <I as Stream>::Slice, Error>
+where
+ I: StreamIsPartial,
+ I: Stream + Offset,
+ <I as Stream>::Token: crate::stream::AsChar,
+ F: Parser<I, O1, Error>,
+ G: Parser<I, O2, Error>,
+ Error: ParseError<I>,
+{
+ let mut i = input.clone();
+
+ while i.eof_offset() > 0 {
+ let current_len = i.eof_offset();
+
+ match normal.parse_next(i.clone()) {
+ Ok((i2, _)) => {
+ // return if we consumed everything or if the normal parser
+ // does not consume anything
+ if i2.eof_offset() == 0 {
+ return Ok(input.next_slice(input.eof_offset()));
+ } else if i2.eof_offset() == current_len {
+ let offset = input.offset_to(&i2);
+ return Ok(input.next_slice(offset));
+ } else {
+ i = i2;
+ }
+ }
+ Err(ErrMode::Backtrack(_)) => {
+ if i.next_token().expect("eof_offset > 0").1.as_char() == control_char {
+ let next = control_char.len_utf8();
+ match escapable.parse_next(i.next_slice(next).0) {
+ Ok((i2, _)) => {
+ if i2.eof_offset() == 0 {
+ return Ok(input.next_slice(input.eof_offset()));
+ } else {
+ i = i2;
+ }
+ }
+ Err(e) => return Err(e),
+ }
+ } else {
+ let offset = input.offset_to(&i);
+ return Ok(input.next_slice(offset));
+ }
+ }
+ Err(e) => {
+ return Err(e);
+ }
+ }
+ }
+
+ Ok(input.next_slice(input.eof_offset()))
+}
+
+/// Matches a byte string with escaped characters.
+///
+/// * The first argument matches the normal characters (it must not match the control character)
+/// * The second argument is the control character (like `\` in most languages)
+/// * The third argument matches the escaped characters and transforms them
+///
+/// As an example, the chain `abc\tdef` could be `abc def` (it also consumes the control character)
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::prelude::*;
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use std::str::from_utf8;
+/// use winnow::token::tag;
+/// use winnow::ascii::escaped_transform;
+/// use winnow::ascii::alpha1;
+/// use winnow::combinator::alt;
+///
+/// fn parser(input: &str) -> IResult<&str, String> {
+/// escaped_transform(
+/// alpha1,
+/// '\\',
+/// alt((
+/// "\\".value("\\"),
+/// "\"".value("\""),
+/// "n".value("\n"),
+/// ))
+/// ).parse_next(input)
+/// }
+///
+/// assert_eq!(parser("ab\\\"cd"), Ok(("", String::from("ab\"cd"))));
+/// assert_eq!(parser("ab\\ncd"), Ok(("", String::from("ab\ncd"))));
+/// ```
+///
+/// ```
+/// # use winnow::prelude::*;
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use std::str::from_utf8;
+/// # use winnow::Partial;
+/// use winnow::token::tag;
+/// use winnow::ascii::escaped_transform;
+/// use winnow::ascii::alpha1;
+/// use winnow::combinator::alt;
+///
+/// fn parser(input: Partial<&str>) -> IResult<Partial<&str>, String> {
+/// escaped_transform(
+/// alpha1,
+/// '\\',
+/// alt((
+/// "\\".value("\\"),
+/// "\"".value("\""),
+/// "n".value("\n"),
+/// ))
+/// ).parse_next(input)
+/// }
+///
+/// assert_eq!(parser(Partial::new("ab\\\"cd\"")), Ok((Partial::new("\""), String::from("ab\"cd"))));
+/// ```
+#[cfg(feature = "alloc")]
+#[inline(always)]
+pub fn escaped_transform<I, Error, F, G, Output>(
+ mut normal: F,
+ control_char: char,
+ mut transform: G,
+) -> impl Parser<I, Output, Error>
+where
+ I: StreamIsPartial,
+ I: Stream + Offset,
+ <I as Stream>::Token: crate::stream::AsChar,
+ Output: crate::stream::Accumulate<<I as Stream>::Slice>,
+ F: Parser<I, <I as Stream>::Slice, Error>,
+ G: Parser<I, <I as Stream>::Slice, Error>,
+ Error: ParseError<I>,
+{
+ trace("escaped_transform", move |input: I| {
+ if <I as StreamIsPartial>::is_partial_supported() && input.is_partial() {
+ streaming_escaped_transform_internal(input, &mut normal, control_char, &mut transform)
+ } else {
+ complete_escaped_transform_internal(input, &mut normal, control_char, &mut transform)
+ }
+ })
+}
+
+#[cfg(feature = "alloc")]
+fn streaming_escaped_transform_internal<I, Error, F, G, Output>(
+ input: I,
+ normal: &mut F,
+ control_char: char,
+ transform: &mut G,
+) -> IResult<I, Output, Error>
+where
+ I: StreamIsPartial,
+ I: Stream + Offset,
+ <I as Stream>::Token: crate::stream::AsChar,
+ Output: crate::stream::Accumulate<<I as Stream>::Slice>,
+ F: Parser<I, <I as Stream>::Slice, Error>,
+ G: Parser<I, <I as Stream>::Slice, Error>,
+ Error: ParseError<I>,
+{
+ let mut offset = 0;
+ let mut res = Output::initial(Some(input.eof_offset()));
+
+ let i = input.clone();
+
+ while offset < i.eof_offset() {
+ let current_len = i.eof_offset();
+ let remainder = i.next_slice(offset).0;
+ match normal.parse_next(remainder.clone()) {
+ Ok((i2, o)) => {
+ res.accumulate(o);
+ if i2.eof_offset() == 0 {
+ return Err(ErrMode::Incomplete(Needed::Unknown));
+ } else if i2.eof_offset() == current_len {
+ return Ok((remainder, res));
+ } else {
+ offset = input.offset_to(&i2);
+ }
+ }
+ Err(ErrMode::Backtrack(_)) => {
+ if remainder.next_token().expect("eof_offset > 0").1.as_char() == control_char {
+ let next = offset + control_char.len_utf8();
+ match transform.parse_next(i.next_slice(next).0) {
+ Ok((i2, o)) => {
+ res.accumulate(o);
+ if i2.eof_offset() == 0 {
+ return Err(ErrMode::Incomplete(Needed::Unknown));
+ } else {
+ offset = input.offset_to(&i2);
+ }
+ }
+ Err(e) => return Err(e),
+ }
+ } else {
+ return Ok((remainder, res));
+ }
+ }
+ Err(e) => return Err(e),
+ }
+ }
+ Err(ErrMode::Incomplete(Needed::Unknown))
+}
+
+#[cfg(feature = "alloc")]
+fn complete_escaped_transform_internal<I, Error, F, G, Output>(
+ input: I,
+ normal: &mut F,
+ control_char: char,
+ transform: &mut G,
+) -> IResult<I, Output, Error>
+where
+ I: StreamIsPartial,
+ I: Stream + Offset,
+ <I as Stream>::Token: crate::stream::AsChar,
+ Output: crate::stream::Accumulate<<I as Stream>::Slice>,
+ F: Parser<I, <I as Stream>::Slice, Error>,
+ G: Parser<I, <I as Stream>::Slice, Error>,
+ Error: ParseError<I>,
+{
+ let mut offset = 0;
+ let mut res = Output::initial(Some(input.eof_offset()));
+
+ let i = input.clone();
+
+ while offset < i.eof_offset() {
+ let current_len = i.eof_offset();
+ let (remainder, _) = i.next_slice(offset);
+ match normal.parse_next(remainder.clone()) {
+ Ok((i2, o)) => {
+ res.accumulate(o);
+ if i2.eof_offset() == 0 {
+ return Ok((i.next_slice(i.eof_offset()).0, res));
+ } else if i2.eof_offset() == current_len {
+ return Ok((remainder, res));
+ } else {
+ offset = input.offset_to(&i2);
+ }
+ }
+ Err(ErrMode::Backtrack(_)) => {
+ if remainder.next_token().expect("eof_offset > 0").1.as_char() == control_char {
+ let next = offset + control_char.len_utf8();
+ match transform.parse_next(i.next_slice(next).0) {
+ Ok((i2, o)) => {
+ res.accumulate(o);
+ if i2.eof_offset() == 0 {
+ return Ok((i.next_slice(i.eof_offset()).0, res));
+ } else {
+ offset = input.offset_to(&i2);
+ }
+ }
+ Err(e) => return Err(e),
+ }
+ } else {
+ return Ok((remainder, res));
+ }
+ }
+ Err(e) => return Err(e),
+ }
+ }
+ Ok((input.next_slice(offset).0, res))
+}
+
+mod sealed {
+ pub struct SealedMarker;
+}
diff --git a/vendor/winnow-0.4.7/src/ascii/tests.rs b/vendor/winnow-0.4.7/src/ascii/tests.rs
new file mode 100644
index 000000000..b715d0920
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/ascii/tests.rs
@@ -0,0 +1,1496 @@
+use super::*;
+
+mod complete {
+ use super::*;
+ use crate::combinator::alt;
+ use crate::combinator::opt;
+ use crate::error::ErrMode;
+ use crate::error::Error;
+ use crate::error::ErrorKind;
+ use crate::stream::ParseSlice;
+ use crate::token::none_of;
+ use crate::token::one_of;
+ #[cfg(feature = "alloc")]
+ use crate::{lib::std::string::String, lib::std::vec::Vec};
+ use proptest::prelude::*;
+
+ macro_rules! assert_parse(
+ ($left: expr, $right: expr) => {
+ let res: $crate::IResult<_, _, Error<_>> = $left;
+ assert_eq!(res, $right);
+ };
+ );
+
+ #[test]
+ fn character() {
+ let empty: &[u8] = b"";
+ let a: &[u8] = b"abcd";
+ let b: &[u8] = b"1234";
+ let c: &[u8] = b"a123";
+ let d: &[u8] = "azé12".as_bytes();
+ let e: &[u8] = b" ";
+ let f: &[u8] = b" ;";
+ //assert_eq!(alpha1::<_, Error>(a), Err(ErrMode::Incomplete(Needed::Size(1))));
+ assert_parse!(alpha1(a), Ok((empty, a)));
+ assert_eq!(
+ alpha1(b),
+ Err(ErrMode::Backtrack(Error::new(b, ErrorKind::Slice)))
+ );
+ assert_eq!(alpha1::<_, Error<_>>(c), Ok((&c[1..], &b"a"[..])));
+ assert_eq!(alpha1::<_, Error<_>>(d), Ok(("é12".as_bytes(), &b"az"[..])));
+ assert_eq!(
+ digit1(a),
+ Err(ErrMode::Backtrack(Error::new(a, ErrorKind::Slice)))
+ );
+ assert_eq!(digit1::<_, Error<_>>(b), Ok((empty, b)));
+ assert_eq!(
+ digit1(c),
+ Err(ErrMode::Backtrack(Error::new(c, ErrorKind::Slice)))
+ );
+ assert_eq!(
+ digit1(d),
+ Err(ErrMode::Backtrack(Error::new(d, ErrorKind::Slice)))
+ );
+ assert_eq!(hex_digit1::<_, Error<_>>(a), Ok((empty, a)));
+ assert_eq!(hex_digit1::<_, Error<_>>(b), Ok((empty, b)));
+ assert_eq!(hex_digit1::<_, Error<_>>(c), Ok((empty, c)));
+ assert_eq!(
+ hex_digit1::<_, Error<_>>(d),
+ Ok(("zé12".as_bytes(), &b"a"[..]))
+ );
+ assert_eq!(
+ hex_digit1(e),
+ Err(ErrMode::Backtrack(Error::new(e, ErrorKind::Slice)))
+ );
+ assert_eq!(
+ oct_digit1(a),
+ Err(ErrMode::Backtrack(Error::new(a, ErrorKind::Slice)))
+ );
+ assert_eq!(oct_digit1::<_, Error<_>>(b), Ok((empty, b)));
+ assert_eq!(
+ oct_digit1(c),
+ Err(ErrMode::Backtrack(Error::new(c, ErrorKind::Slice)))
+ );
+ assert_eq!(
+ oct_digit1(d),
+ Err(ErrMode::Backtrack(Error::new(d, ErrorKind::Slice)))
+ );
+ assert_eq!(alphanumeric1::<_, Error<_>>(a), Ok((empty, a)));
+ //assert_eq!(fix_error!(b,(), alphanumeric), Ok((empty, b)));
+ assert_eq!(alphanumeric1::<_, Error<_>>(c), Ok((empty, c)));
+ assert_eq!(
+ alphanumeric1::<_, Error<_>>(d),
+ Ok(("é12".as_bytes(), &b"az"[..]))
+ );
+ assert_eq!(space1::<_, Error<_>>(e), Ok((empty, e)));
+ assert_eq!(space1::<_, Error<_>>(f), Ok((&b";"[..], &b" "[..])));
+ }
+
+ #[cfg(feature = "alloc")]
+ #[test]
+ fn character_s() {
+ let empty = "";
+ let a = "abcd";
+ let b = "1234";
+ let c = "a123";
+ let d = "azé12";
+ let e = " ";
+ assert_eq!(alpha1::<_, Error<_>>(a), Ok((empty, a)));
+ assert_eq!(
+ alpha1(b),
+ Err(ErrMode::Backtrack(Error::new(b, ErrorKind::Slice)))
+ );
+ assert_eq!(alpha1::<_, Error<_>>(c), Ok((&c[1..], "a")));
+ assert_eq!(alpha1::<_, Error<_>>(d), Ok(("é12", "az")));
+ assert_eq!(
+ digit1(a),
+ Err(ErrMode::Backtrack(Error::new(a, ErrorKind::Slice)))
+ );
+ assert_eq!(digit1::<_, Error<_>>(b), Ok((empty, b)));
+ assert_eq!(
+ digit1(c),
+ Err(ErrMode::Backtrack(Error::new(c, ErrorKind::Slice)))
+ );
+ assert_eq!(
+ digit1(d),
+ Err(ErrMode::Backtrack(Error::new(d, ErrorKind::Slice)))
+ );
+ assert_eq!(hex_digit1::<_, Error<_>>(a), Ok((empty, a)));
+ assert_eq!(hex_digit1::<_, Error<_>>(b), Ok((empty, b)));
+ assert_eq!(hex_digit1::<_, Error<_>>(c), Ok((empty, c)));
+ assert_eq!(hex_digit1::<_, Error<_>>(d), Ok(("zé12", "a")));
+ assert_eq!(
+ hex_digit1(e),
+ Err(ErrMode::Backtrack(Error::new(e, ErrorKind::Slice)))
+ );
+ assert_eq!(
+ oct_digit1(a),
+ Err(ErrMode::Backtrack(Error::new(a, ErrorKind::Slice)))
+ );
+ assert_eq!(oct_digit1::<_, Error<_>>(b), Ok((empty, b)));
+ assert_eq!(
+ oct_digit1(c),
+ Err(ErrMode::Backtrack(Error::new(c, ErrorKind::Slice)))
+ );
+ assert_eq!(
+ oct_digit1(d),
+ Err(ErrMode::Backtrack(Error::new(d, ErrorKind::Slice)))
+ );
+ assert_eq!(alphanumeric1::<_, Error<_>>(a), Ok((empty, a)));
+ //assert_eq!(fix_error!(b,(), alphanumeric), Ok((empty, b)));
+ assert_eq!(alphanumeric1::<_, Error<_>>(c), Ok((empty, c)));
+ assert_eq!(alphanumeric1::<_, Error<_>>(d), Ok(("é12", "az")));
+ assert_eq!(space1::<_, Error<_>>(e), Ok((empty, e)));
+ }
+
+ use crate::stream::Offset;
+ #[test]
+ fn offset() {
+ let a = &b"abcd;"[..];
+ let b = &b"1234;"[..];
+ let c = &b"a123;"[..];
+ let d = &b" \t;"[..];
+ let e = &b" \t\r\n;"[..];
+ let f = &b"123abcDEF;"[..];
+
+ match alpha1::<_, Error<_>>(a) {
+ Ok((i, _)) => {
+ assert_eq!(a.offset_to(i) + i.len(), a.len());
+ }
+ _ => panic!("wrong return type in offset test for alpha"),
+ }
+ match digit1::<_, Error<_>>(b) {
+ Ok((i, _)) => {
+ assert_eq!(b.offset_to(i) + i.len(), b.len());
+ }
+ _ => panic!("wrong return type in offset test for digit"),
+ }
+ match alphanumeric1::<_, Error<_>>(c) {
+ Ok((i, _)) => {
+ assert_eq!(c.offset_to(i) + i.len(), c.len());
+ }
+ _ => panic!("wrong return type in offset test for alphanumeric"),
+ }
+ match space1::<_, Error<_>>(d) {
+ Ok((i, _)) => {
+ assert_eq!(d.offset_to(i) + i.len(), d.len());
+ }
+ _ => panic!("wrong return type in offset test for space"),
+ }
+ match multispace1::<_, Error<_>>(e) {
+ Ok((i, _)) => {
+ assert_eq!(e.offset_to(i) + i.len(), e.len());
+ }
+ _ => panic!("wrong return type in offset test for multispace"),
+ }
+ match hex_digit1::<_, Error<_>>(f) {
+ Ok((i, _)) => {
+ assert_eq!(f.offset_to(i) + i.len(), f.len());
+ }
+ _ => panic!("wrong return type in offset test for hex_digit"),
+ }
+ match oct_digit1::<_, Error<_>>(f) {
+ Ok((i, _)) => {
+ assert_eq!(f.offset_to(i) + i.len(), f.len());
+ }
+ _ => panic!("wrong return type in offset test for oct_digit"),
+ }
+ }
+
+ #[test]
+ fn is_not_line_ending_bytes() {
+ let a: &[u8] = b"ab12cd\nefgh";
+ assert_eq!(
+ not_line_ending::<_, Error<_>>(a),
+ Ok((&b"\nefgh"[..], &b"ab12cd"[..]))
+ );
+
+ let b: &[u8] = b"ab12cd\nefgh\nijkl";
+ assert_eq!(
+ not_line_ending::<_, Error<_>>(b),
+ Ok((&b"\nefgh\nijkl"[..], &b"ab12cd"[..]))
+ );
+
+ let c: &[u8] = b"ab12cd\r\nefgh\nijkl";
+ assert_eq!(
+ not_line_ending::<_, Error<_>>(c),
+ Ok((&b"\r\nefgh\nijkl"[..], &b"ab12cd"[..]))
+ );
+
+ let d: &[u8] = b"ab12cd";
+ assert_eq!(not_line_ending::<_, Error<_>>(d), Ok((&[][..], d)));
+ }
+
+ #[test]
+ fn is_not_line_ending_str() {
+ let f = "βèƒôřè\rÂßÇáƒƭèř";
+ assert_eq!(
+ not_line_ending(f),
+ Err(ErrMode::Backtrack(Error::new(f, ErrorKind::Tag)))
+ );
+
+ let g2: &str = "ab12cd";
+ assert_eq!(not_line_ending::<_, Error<_>>(g2), Ok(("", g2)));
+ }
+
+ #[test]
+ fn hex_digit_test() {
+ let i = &b"0123456789abcdefABCDEF;"[..];
+ assert_parse!(hex_digit1(i), Ok((&b";"[..], &i[..i.len() - 1])));
+
+ let i = &b"g"[..];
+ assert_parse!(
+ hex_digit1(i),
+ Err(ErrMode::Backtrack(error_position!(i, ErrorKind::Slice)))
+ );
+
+ let i = &b"G"[..];
+ assert_parse!(
+ hex_digit1(i),
+ Err(ErrMode::Backtrack(error_position!(i, ErrorKind::Slice)))
+ );
+
+ assert!(AsChar::is_hex_digit(b'0'));
+ assert!(AsChar::is_hex_digit(b'9'));
+ assert!(AsChar::is_hex_digit(b'a'));
+ assert!(AsChar::is_hex_digit(b'f'));
+ assert!(AsChar::is_hex_digit(b'A'));
+ assert!(AsChar::is_hex_digit(b'F'));
+ assert!(!AsChar::is_hex_digit(b'g'));
+ assert!(!AsChar::is_hex_digit(b'G'));
+ assert!(!AsChar::is_hex_digit(b'/'));
+ assert!(!AsChar::is_hex_digit(b':'));
+ assert!(!AsChar::is_hex_digit(b'@'));
+ assert!(!AsChar::is_hex_digit(b'\x60'));
+ }
+
+ #[test]
+ fn oct_digit_test() {
+ let i = &b"01234567;"[..];
+ assert_parse!(oct_digit1(i), Ok((&b";"[..], &i[..i.len() - 1])));
+
+ let i = &b"8"[..];
+ assert_parse!(
+ oct_digit1(i),
+ Err(ErrMode::Backtrack(error_position!(i, ErrorKind::Slice)))
+ );
+
+ assert!(AsChar::is_oct_digit(b'0'));
+ assert!(AsChar::is_oct_digit(b'7'));
+ assert!(!AsChar::is_oct_digit(b'8'));
+ assert!(!AsChar::is_oct_digit(b'9'));
+ assert!(!AsChar::is_oct_digit(b'a'));
+ assert!(!AsChar::is_oct_digit(b'A'));
+ assert!(!AsChar::is_oct_digit(b'/'));
+ assert!(!AsChar::is_oct_digit(b':'));
+ assert!(!AsChar::is_oct_digit(b'@'));
+ assert!(!AsChar::is_oct_digit(b'\x60'));
+ }
+
+ #[test]
+ fn full_line_windows() {
+ fn take_full_line(i: &[u8]) -> IResult<&[u8], (&[u8], &[u8])> {
+ (not_line_ending, line_ending).parse_next(i)
+ }
+ let input = b"abc\r\n";
+ let output = take_full_line(input);
+ assert_eq!(output, Ok((&b""[..], (&b"abc"[..], &b"\r\n"[..]))));
+ }
+
+ #[test]
+ fn full_line_unix() {
+ fn take_full_line(i: &[u8]) -> IResult<&[u8], (&[u8], &[u8])> {
+ (not_line_ending, line_ending).parse_next(i)
+ }
+ let input = b"abc\n";
+ let output = take_full_line(input);
+ assert_eq!(output, Ok((&b""[..], (&b"abc"[..], &b"\n"[..]))));
+ }
+
+ #[test]
+ fn check_windows_lineending() {
+ let input = b"\r\n";
+ let output = line_ending(&input[..]);
+ assert_parse!(output, Ok((&b""[..], &b"\r\n"[..])));
+ }
+
+ #[test]
+ fn check_unix_lineending() {
+ let input = b"\n";
+ let output = line_ending(&input[..]);
+ assert_parse!(output, Ok((&b""[..], &b"\n"[..])));
+ }
+
+ #[test]
+ fn cr_lf() {
+ assert_parse!(crlf(&b"\r\na"[..]), Ok((&b"a"[..], &b"\r\n"[..])));
+ assert_parse!(
+ crlf(&b"\r"[..]),
+ Err(ErrMode::Backtrack(error_position!(
+ &b"\r"[..],
+ ErrorKind::Tag
+ )))
+ );
+ assert_parse!(
+ crlf(&b"\ra"[..]),
+ Err(ErrMode::Backtrack(error_position!(
+ &b"\ra"[..],
+ ErrorKind::Tag
+ )))
+ );
+
+ assert_parse!(crlf("\r\na"), Ok(("a", "\r\n")));
+ assert_parse!(
+ crlf("\r"),
+ Err(ErrMode::Backtrack(error_position!("\r", ErrorKind::Tag)))
+ );
+ assert_parse!(
+ crlf("\ra"),
+ Err(ErrMode::Backtrack(error_position!("\ra", ErrorKind::Tag)))
+ );
+ }
+
+ #[test]
+ fn end_of_line() {
+ assert_parse!(line_ending(&b"\na"[..]), Ok((&b"a"[..], &b"\n"[..])));
+ assert_parse!(line_ending(&b"\r\na"[..]), Ok((&b"a"[..], &b"\r\n"[..])));
+ assert_parse!(
+ line_ending(&b"\r"[..]),
+ Err(ErrMode::Backtrack(error_position!(
+ &b"\r"[..],
+ ErrorKind::Tag
+ )))
+ );
+ assert_parse!(
+ line_ending(&b"\ra"[..]),
+ Err(ErrMode::Backtrack(error_position!(
+ &b"\ra"[..],
+ ErrorKind::Tag
+ )))
+ );
+
+ assert_parse!(line_ending("\na"), Ok(("a", "\n")));
+ assert_parse!(line_ending("\r\na"), Ok(("a", "\r\n")));
+ assert_parse!(
+ line_ending("\r"),
+ Err(ErrMode::Backtrack(error_position!("\r", ErrorKind::Tag)))
+ );
+ assert_parse!(
+ line_ending("\ra"),
+ Err(ErrMode::Backtrack(error_position!("\ra", ErrorKind::Tag)))
+ );
+ }
+
+ fn digit_to_i16(input: &str) -> IResult<&str, i16> {
+ let i = input;
+ let (i, opt_sign) = opt(alt(('+', '-'))).parse_next(i)?;
+ let sign = match opt_sign {
+ Some('+') | None => true,
+ Some('-') => false,
+ _ => unreachable!(),
+ };
+
+ let (i, s) = digit1::<_, crate::error::Error<_>>(i)?;
+ match s.parse_slice() {
+ Some(n) => {
+ if sign {
+ Ok((i, n))
+ } else {
+ Ok((i, -n))
+ }
+ }
+ None => Err(ErrMode::from_error_kind(i, ErrorKind::Verify)),
+ }
+ }
+
+ fn digit_to_u32(i: &str) -> IResult<&str, u32> {
+ let (i, s) = digit1(i)?;
+ match s.parse_slice() {
+ Some(n) => Ok((i, n)),
+ None => Err(ErrMode::from_error_kind(i, ErrorKind::Verify)),
+ }
+ }
+
+ proptest! {
+ #[test]
+ #[cfg_attr(miri, ignore)] // See https://github.com/AltSysrq/proptest/issues/253
+ fn ints(s in "\\PC*") {
+ let res1 = digit_to_i16(&s);
+ let res2 = dec_int(s.as_str());
+ assert_eq!(res1, res2);
+ }
+
+ #[test]
+ #[cfg_attr(miri, ignore)] // See https://github.com/AltSysrq/proptest/issues/253
+ fn uints(s in "\\PC*") {
+ let res1 = digit_to_u32(&s);
+ let res2 = dec_uint(s.as_str());
+ assert_eq!(res1, res2);
+ }
+ }
+
+ #[test]
+ fn hex_uint_tests() {
+ fn hex_u32(input: &[u8]) -> IResult<&[u8], u32> {
+ hex_uint(input)
+ }
+
+ assert_parse!(
+ hex_u32(&b";"[..]),
+ Err(ErrMode::Backtrack(error_position!(
+ &b";"[..],
+ ErrorKind::Slice
+ )))
+ );
+ assert_parse!(hex_u32(&b"ff;"[..]), Ok((&b";"[..], 255)));
+ assert_parse!(hex_u32(&b"1be2;"[..]), Ok((&b";"[..], 7138)));
+ assert_parse!(hex_u32(&b"c5a31be2;"[..]), Ok((&b";"[..], 3_315_801_058)));
+ assert_parse!(hex_u32(&b"C5A31be2;"[..]), Ok((&b";"[..], 3_315_801_058)));
+ assert_parse!(
+ hex_u32(&b"00c5a31be2;"[..]), // overflow
+ Err(ErrMode::Backtrack(error_position!(
+ &b"00c5a31be2;"[..],
+ ErrorKind::Verify
+ )))
+ );
+ assert_parse!(
+ hex_u32(&b"c5a31be201;"[..]), // overflow
+ Err(ErrMode::Backtrack(error_position!(
+ &b"c5a31be201;"[..],
+ ErrorKind::Verify
+ )))
+ );
+ assert_parse!(hex_u32(&b"ffffffff;"[..]), Ok((&b";"[..], 4_294_967_295)));
+ assert_parse!(
+ hex_u32(&b"ffffffffffffffff;"[..]), // overflow
+ Err(ErrMode::Backtrack(error_position!(
+ &b"ffffffffffffffff;"[..],
+ ErrorKind::Verify
+ )))
+ );
+ assert_parse!(
+ hex_u32(&b"ffffffffffffffff"[..]), // overflow
+ Err(ErrMode::Backtrack(error_position!(
+ &b"ffffffffffffffff"[..],
+ ErrorKind::Verify
+ )))
+ );
+ assert_parse!(hex_u32(&b"0x1be2;"[..]), Ok((&b"x1be2;"[..], 0)));
+ assert_parse!(hex_u32(&b"12af"[..]), Ok((&b""[..], 0x12af)));
+ }
+
+ #[test]
+ #[cfg(feature = "std")]
+ fn float_test() {
+ let mut test_cases = vec![
+ "+3.14",
+ "3.14",
+ "-3.14",
+ "0",
+ "0.0",
+ "1.",
+ ".789",
+ "-.5",
+ "1e7",
+ "-1E-7",
+ ".3e-2",
+ "1.e4",
+ "1.2e4",
+ "12.34",
+ "-1.234E-12",
+ "-1.234e-12",
+ "0.00000000000000000087",
+ ];
+
+ for test in test_cases.drain(..) {
+ let expected32 = str::parse::<f32>(test).unwrap();
+ let expected64 = str::parse::<f64>(test).unwrap();
+
+ println!("now parsing: {} -> {}", test, expected32);
+
+ let larger = test.to_string();
+
+ assert_parse!(float(larger.as_bytes()), Ok((&b""[..], expected32)));
+ assert_parse!(float(&larger[..]), Ok(("", expected32)));
+
+ assert_parse!(float(larger.as_bytes()), Ok((&b""[..], expected64)));
+ assert_parse!(float(&larger[..]), Ok(("", expected64)));
+ }
+
+ let remaining_exponent = "-1.234E-";
+ assert_parse!(
+ float::<_, f64, _>(remaining_exponent),
+ Err(ErrMode::Cut(Error {
+ input: "",
+ kind: ErrorKind::Slice
+ }))
+ );
+
+ let (_i, nan) = float::<_, f32, ()>("NaN").unwrap();
+ assert!(nan.is_nan());
+
+ let (_i, inf) = float::<_, f32, ()>("inf").unwrap();
+ assert!(inf.is_infinite());
+ let (_i, inf) = float::<_, f32, ()>("infinite").unwrap();
+ assert!(inf.is_infinite());
+ }
+
+ #[cfg(feature = "std")]
+ fn parse_f64(i: &str) -> IResult<&str, f64, ()> {
+ #[allow(deprecated)] // will just become `pub(crate)` later
+ match super::recognize_float_or_exceptions(i) {
+ Err(e) => Err(e),
+ Ok((i, s)) => {
+ if s.is_empty() {
+ return Err(ErrMode::Backtrack(()));
+ }
+ match s.parse_slice() {
+ Some(n) => Ok((i, n)),
+ None => Err(ErrMode::Backtrack(())),
+ }
+ }
+ }
+ }
+
+ proptest! {
+ #[test]
+ #[cfg(feature = "std")]
+ #[cfg_attr(miri, ignore)] // See https://github.com/AltSysrq/proptest/issues/253
+ fn floats(s in "\\PC*") {
+ println!("testing {}", s);
+ let res1 = parse_f64(&s);
+ let res2 = float::<_, f64, ()>(s.as_str());
+ assert_eq!(res1, res2);
+ }
+ }
+
+ // issue #1336 "escaped hangs if normal parser accepts empty"
+ #[test]
+ fn complete_escaped_hang() {
+ // issue #1336 "escaped hangs if normal parser accepts empty"
+ fn escaped_string(input: &str) -> IResult<&str, &str> {
+ use crate::ascii::alpha0;
+ use crate::token::one_of;
+ escaped(alpha0, '\\', one_of("n")).parse_next(input)
+ }
+
+ escaped_string("7").unwrap();
+ escaped_string("a7").unwrap();
+ }
+
+ #[test]
+ fn complete_escaped_hang_1118() {
+ // issue ##1118 escaped does not work with empty string
+ fn unquote(input: &str) -> IResult<&str, &str> {
+ use crate::combinator::delimited;
+ use crate::combinator::opt;
+ use crate::token::one_of;
+
+ delimited(
+ '"',
+ escaped(opt(none_of(r#"\""#)), '\\', one_of(r#"\"rnt"#)),
+ '"',
+ )
+ .parse_next(input)
+ }
+
+ assert_eq!(unquote(r#""""#), Ok(("", "")));
+ }
+
+ #[cfg(feature = "alloc")]
+ #[allow(unused_variables)]
+ #[test]
+ fn complete_escaping() {
+ use crate::ascii::{alpha1 as alpha, digit1 as digit};
+ use crate::token::one_of;
+
+ fn esc(i: &[u8]) -> IResult<&[u8], &[u8]> {
+ escaped(alpha, '\\', one_of("\"n\\")).parse_next(i)
+ }
+ assert_eq!(esc(&b"abcd;"[..]), Ok((&b";"[..], &b"abcd"[..])));
+ assert_eq!(esc(&b"ab\\\"cd;"[..]), Ok((&b";"[..], &b"ab\\\"cd"[..])));
+ assert_eq!(esc(&b"\\\"abcd;"[..]), Ok((&b";"[..], &b"\\\"abcd"[..])));
+ assert_eq!(esc(&b"\\n;"[..]), Ok((&b";"[..], &b"\\n"[..])));
+ assert_eq!(esc(&b"ab\\\"12"[..]), Ok((&b"12"[..], &b"ab\\\""[..])));
+ assert_eq!(
+ esc(&b"AB\\"[..]),
+ Err(ErrMode::Backtrack(error_position!(
+ &b""[..],
+ ErrorKind::Token
+ )))
+ );
+ assert_eq!(
+ esc(&b"AB\\A"[..]),
+ Err(ErrMode::Backtrack(error_node_position!(
+ &b"AB\\A"[..],
+ ErrorKind::Token,
+ error_position!(&b"A"[..], ErrorKind::Verify)
+ )))
+ );
+
+ fn esc2(i: &[u8]) -> IResult<&[u8], &[u8]> {
+ escaped(digit, '\\', one_of("\"n\\")).parse_next(i)
+ }
+ assert_eq!(esc2(&b"12\\nnn34"[..]), Ok((&b"nn34"[..], &b"12\\n"[..])));
+ }
+
+ #[cfg(feature = "alloc")]
+ #[test]
+ fn complete_escaping_str() {
+ use crate::ascii::{alpha1 as alpha, digit1 as digit};
+ use crate::token::one_of;
+
+ fn esc(i: &str) -> IResult<&str, &str> {
+ escaped(alpha, '\\', one_of("\"n\\")).parse_next(i)
+ }
+ assert_eq!(esc("abcd;"), Ok((";", "abcd")));
+ assert_eq!(esc("ab\\\"cd;"), Ok((";", "ab\\\"cd")));
+ assert_eq!(esc("\\\"abcd;"), Ok((";", "\\\"abcd")));
+ assert_eq!(esc("\\n;"), Ok((";", "\\n")));
+ assert_eq!(esc("ab\\\"12"), Ok(("12", "ab\\\"")));
+ assert_eq!(
+ esc("AB\\"),
+ Err(ErrMode::Backtrack(error_position!("", ErrorKind::Token)))
+ );
+ assert_eq!(
+ esc("AB\\A"),
+ Err(ErrMode::Backtrack(error_node_position!(
+ "AB\\A",
+ ErrorKind::Token,
+ error_position!("A", ErrorKind::Verify)
+ )))
+ );
+
+ fn esc2(i: &str) -> IResult<&str, &str> {
+ escaped(digit, '\\', one_of("\"n\\")).parse_next(i)
+ }
+ assert_eq!(esc2("12\\nnn34"), Ok(("nn34", "12\\n")));
+
+ fn esc3(i: &str) -> IResult<&str, &str> {
+ escaped(alpha, '\u{241b}', one_of("\"n")).parse_next(i)
+ }
+ assert_eq!(esc3("abâ›ncd;"), Ok((";", "abâ›ncd")));
+ }
+
+ #[test]
+ fn test_escaped_error() {
+ fn esc(s: &str) -> IResult<&str, &str> {
+ use crate::ascii::digit1;
+ escaped(digit1, '\\', one_of("\"n\\")).parse_next(s)
+ }
+
+ assert_eq!(esc("abcd"), Ok(("abcd", "")));
+ }
+
+ #[cfg(feature = "alloc")]
+ #[test]
+ fn complete_escape_transform() {
+ use crate::ascii::alpha1 as alpha;
+
+ #[cfg(feature = "alloc")]
+ fn to_s(i: Vec<u8>) -> String {
+ String::from_utf8_lossy(&i).into_owned()
+ }
+
+ fn esc(i: &[u8]) -> IResult<&[u8], String> {
+ escaped_transform(
+ alpha,
+ '\\',
+ alt((
+ "\\".value(&b"\\"[..]),
+ "\"".value(&b"\""[..]),
+ "n".value(&b"\n"[..]),
+ )),
+ )
+ .map(to_s)
+ .parse_next(i)
+ }
+
+ assert_eq!(esc(&b"abcd;"[..]), Ok((&b";"[..], String::from("abcd"))));
+ assert_eq!(
+ esc(&b"ab\\\"cd;"[..]),
+ Ok((&b";"[..], String::from("ab\"cd")))
+ );
+ assert_eq!(
+ esc(&b"\\\"abcd;"[..]),
+ Ok((&b";"[..], String::from("\"abcd")))
+ );
+ assert_eq!(esc(&b"\\n;"[..]), Ok((&b";"[..], String::from("\n"))));
+ assert_eq!(
+ esc(&b"ab\\\"12"[..]),
+ Ok((&b"12"[..], String::from("ab\"")))
+ );
+ assert_eq!(
+ esc(&b"AB\\"[..]),
+ Err(ErrMode::Backtrack(error_position!(
+ &b""[..],
+ ErrorKind::Tag
+ )))
+ );
+ assert_eq!(
+ esc(&b"AB\\A"[..]),
+ Err(ErrMode::Backtrack(error_node_position!(
+ &b"AB\\A"[..],
+ ErrorKind::Eof,
+ error_position!(&b"A"[..], ErrorKind::Tag)
+ )))
+ );
+
+ fn esc2(i: &[u8]) -> IResult<&[u8], String> {
+ escaped_transform(
+ alpha,
+ '&',
+ alt((
+ "egrave;".value("è".as_bytes()),
+ "agrave;".value("à".as_bytes()),
+ )),
+ )
+ .map(to_s)
+ .parse_next(i)
+ }
+ assert_eq!(
+ esc2(&b"ab&egrave;DEF;"[..]),
+ Ok((&b";"[..], String::from("abèDEF")))
+ );
+ assert_eq!(
+ esc2(&b"ab&egrave;D&agrave;EF;"[..]),
+ Ok((&b";"[..], String::from("abèDàEF")))
+ );
+ }
+
+ #[cfg(feature = "std")]
+ #[test]
+ fn complete_escape_transform_str() {
+ use crate::ascii::alpha1 as alpha;
+
+ fn esc(i: &str) -> IResult<&str, String> {
+ escaped_transform(
+ alpha,
+ '\\',
+ alt(("\\".value("\\"), "\"".value("\""), "n".value("\n"))),
+ )
+ .parse_next(i)
+ }
+
+ assert_eq!(esc("abcd;"), Ok((";", String::from("abcd"))));
+ assert_eq!(esc("ab\\\"cd;"), Ok((";", String::from("ab\"cd"))));
+ assert_eq!(esc("\\\"abcd;"), Ok((";", String::from("\"abcd"))));
+ assert_eq!(esc("\\n;"), Ok((";", String::from("\n"))));
+ assert_eq!(esc("ab\\\"12"), Ok(("12", String::from("ab\""))));
+ assert_eq!(
+ esc("AB\\"),
+ Err(ErrMode::Backtrack(error_position!("", ErrorKind::Tag)))
+ );
+ assert_eq!(
+ esc("AB\\A"),
+ Err(ErrMode::Backtrack(error_node_position!(
+ "AB\\A",
+ ErrorKind::Eof,
+ error_position!("A", ErrorKind::Tag)
+ )))
+ );
+
+ fn esc2(i: &str) -> IResult<&str, String> {
+ escaped_transform(
+ alpha,
+ '&',
+ alt(("egrave;".value("è"), "agrave;".value("à"))),
+ )
+ .parse_next(i)
+ }
+ assert_eq!(esc2("ab&egrave;DEF;"), Ok((";", String::from("abèDEF"))));
+ assert_eq!(
+ esc2("ab&egrave;D&agrave;EF;"),
+ Ok((";", String::from("abèDàEF")))
+ );
+
+ fn esc3(i: &str) -> IResult<&str, String> {
+ escaped_transform(alpha, 'â›', alt(("0".value("\0"), "n".value("\n")))).parse_next(i)
+ }
+ assert_eq!(esc3("aâ›0bcâ›n"), Ok(("", String::from("a\0bc\n"))));
+ }
+
+ #[test]
+ #[cfg(feature = "alloc")]
+ fn test_escaped_transform_error() {
+ fn esc_trans(s: &str) -> IResult<&str, String> {
+ use crate::ascii::digit1;
+ escaped_transform(digit1, '\\', "n").parse_next(s)
+ }
+
+ assert_eq!(esc_trans("abcd"), Ok(("abcd", String::new())));
+ }
+}
+
+mod partial {
+ use super::*;
+ use crate::combinator::opt;
+ use crate::error::Error;
+ use crate::error::ErrorKind;
+ use crate::error::{ErrMode, Needed};
+ use crate::stream::ParseSlice;
+ use crate::IResult;
+ use crate::Partial;
+ use proptest::prelude::*;
+
+ macro_rules! assert_parse(
+ ($left: expr, $right: expr) => {
+ let res: $crate::IResult<_, _, Error<_>> = $left;
+ assert_eq!(res, $right);
+ };
+ );
+
+ #[test]
+ fn character() {
+ let a: &[u8] = b"abcd";
+ let b: &[u8] = b"1234";
+ let c: &[u8] = b"a123";
+ let d: &[u8] = "azé12".as_bytes();
+ let e: &[u8] = b" ";
+ let f: &[u8] = b" ;";
+ //assert_eq!(alpha1::<_, Error<_>>(a), Err(ErrMode::Incomplete(Needed::new(1))));
+ assert_parse!(
+ alpha1(Partial::new(a)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ alpha1(Partial::new(b)),
+ Err(ErrMode::Backtrack(Error::new(
+ Partial::new(b),
+ ErrorKind::Slice
+ )))
+ );
+ assert_eq!(
+ alpha1::<_, Error<_>>(Partial::new(c)),
+ Ok((Partial::new(&c[1..]), &b"a"[..]))
+ );
+ assert_eq!(
+ alpha1::<_, Error<_>>(Partial::new(d)),
+ Ok((Partial::new("é12".as_bytes()), &b"az"[..]))
+ );
+ assert_eq!(
+ digit1(Partial::new(a)),
+ Err(ErrMode::Backtrack(Error::new(
+ Partial::new(a),
+ ErrorKind::Slice
+ )))
+ );
+ assert_eq!(
+ digit1::<_, Error<_>>(Partial::new(b)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ digit1(Partial::new(c)),
+ Err(ErrMode::Backtrack(Error::new(
+ Partial::new(c),
+ ErrorKind::Slice
+ )))
+ );
+ assert_eq!(
+ digit1(Partial::new(d)),
+ Err(ErrMode::Backtrack(Error::new(
+ Partial::new(d),
+ ErrorKind::Slice
+ )))
+ );
+ assert_eq!(
+ hex_digit1::<_, Error<_>>(Partial::new(a)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ hex_digit1::<_, Error<_>>(Partial::new(b)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ hex_digit1::<_, Error<_>>(Partial::new(c)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ hex_digit1::<_, Error<_>>(Partial::new(d)),
+ Ok((Partial::new("zé12".as_bytes()), &b"a"[..]))
+ );
+ assert_eq!(
+ hex_digit1(Partial::new(e)),
+ Err(ErrMode::Backtrack(Error::new(
+ Partial::new(e),
+ ErrorKind::Slice
+ )))
+ );
+ assert_eq!(
+ oct_digit1(Partial::new(a)),
+ Err(ErrMode::Backtrack(Error::new(
+ Partial::new(a),
+ ErrorKind::Slice
+ )))
+ );
+ assert_eq!(
+ oct_digit1::<_, Error<_>>(Partial::new(b)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ oct_digit1(Partial::new(c)),
+ Err(ErrMode::Backtrack(Error::new(
+ Partial::new(c),
+ ErrorKind::Slice
+ )))
+ );
+ assert_eq!(
+ oct_digit1(Partial::new(d)),
+ Err(ErrMode::Backtrack(Error::new(
+ Partial::new(d),
+ ErrorKind::Slice
+ )))
+ );
+ assert_eq!(
+ alphanumeric1::<_, Error<_>>(Partial::new(a)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ //assert_eq!(fix_error!(b,(), alphanumeric1), Ok((empty, b)));
+ assert_eq!(
+ alphanumeric1::<_, Error<_>>(Partial::new(c)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ alphanumeric1::<_, Error<_>>(Partial::new(d)),
+ Ok((Partial::new("é12".as_bytes()), &b"az"[..]))
+ );
+ assert_eq!(
+ space1::<_, Error<_>>(Partial::new(e)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ space1::<_, Error<_>>(Partial::new(f)),
+ Ok((Partial::new(&b";"[..]), &b" "[..]))
+ );
+ }
+
+ #[cfg(feature = "alloc")]
+ #[test]
+ fn character_s() {
+ let a = "abcd";
+ let b = "1234";
+ let c = "a123";
+ let d = "azé12";
+ let e = " ";
+ assert_eq!(
+ alpha1::<_, Error<_>>(Partial::new(a)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ alpha1(Partial::new(b)),
+ Err(ErrMode::Backtrack(Error::new(
+ Partial::new(b),
+ ErrorKind::Slice
+ )))
+ );
+ assert_eq!(
+ alpha1::<_, Error<_>>(Partial::new(c)),
+ Ok((Partial::new(&c[1..]), "a"))
+ );
+ assert_eq!(
+ alpha1::<_, Error<_>>(Partial::new(d)),
+ Ok((Partial::new("é12"), "az"))
+ );
+ assert_eq!(
+ digit1(Partial::new(a)),
+ Err(ErrMode::Backtrack(Error::new(
+ Partial::new(a),
+ ErrorKind::Slice
+ )))
+ );
+ assert_eq!(
+ digit1::<_, Error<_>>(Partial::new(b)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ digit1(Partial::new(c)),
+ Err(ErrMode::Backtrack(Error::new(
+ Partial::new(c),
+ ErrorKind::Slice
+ )))
+ );
+ assert_eq!(
+ digit1(Partial::new(d)),
+ Err(ErrMode::Backtrack(Error::new(
+ Partial::new(d),
+ ErrorKind::Slice
+ )))
+ );
+ assert_eq!(
+ hex_digit1::<_, Error<_>>(Partial::new(a)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ hex_digit1::<_, Error<_>>(Partial::new(b)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ hex_digit1::<_, Error<_>>(Partial::new(c)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ hex_digit1::<_, Error<_>>(Partial::new(d)),
+ Ok((Partial::new("zé12"), "a"))
+ );
+ assert_eq!(
+ hex_digit1(Partial::new(e)),
+ Err(ErrMode::Backtrack(Error::new(
+ Partial::new(e),
+ ErrorKind::Slice
+ )))
+ );
+ assert_eq!(
+ oct_digit1(Partial::new(a)),
+ Err(ErrMode::Backtrack(Error::new(
+ Partial::new(a),
+ ErrorKind::Slice
+ )))
+ );
+ assert_eq!(
+ oct_digit1::<_, Error<_>>(Partial::new(b)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ oct_digit1(Partial::new(c)),
+ Err(ErrMode::Backtrack(Error::new(
+ Partial::new(c),
+ ErrorKind::Slice
+ )))
+ );
+ assert_eq!(
+ oct_digit1(Partial::new(d)),
+ Err(ErrMode::Backtrack(Error::new(
+ Partial::new(d),
+ ErrorKind::Slice
+ )))
+ );
+ assert_eq!(
+ alphanumeric1::<_, Error<_>>(Partial::new(a)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ //assert_eq!(fix_error!(b,(), alphanumeric1), Ok((empty, b)));
+ assert_eq!(
+ alphanumeric1::<_, Error<_>>(Partial::new(c)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ alphanumeric1::<_, Error<_>>(Partial::new(d)),
+ Ok((Partial::new("é12"), "az"))
+ );
+ assert_eq!(
+ space1::<_, Error<_>>(Partial::new(e)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ }
+
+ use crate::stream::Offset;
+ #[test]
+ fn offset() {
+ let a = &b"abcd;"[..];
+ let b = &b"1234;"[..];
+ let c = &b"a123;"[..];
+ let d = &b" \t;"[..];
+ let e = &b" \t\r\n;"[..];
+ let f = &b"123abcDEF;"[..];
+
+ match alpha1::<_, Error<_>>(Partial::new(a)) {
+ Ok((i, _)) => {
+ let i = i.into_inner();
+ assert_eq!(a.offset_to(i) + i.len(), a.len());
+ }
+ _ => panic!("wrong return type in offset test for alpha"),
+ }
+ match digit1::<_, Error<_>>(Partial::new(b)) {
+ Ok((i, _)) => {
+ let i = i.into_inner();
+ assert_eq!(b.offset_to(i) + i.len(), b.len());
+ }
+ _ => panic!("wrong return type in offset test for digit"),
+ }
+ match alphanumeric1::<_, Error<_>>(Partial::new(c)) {
+ Ok((i, _)) => {
+ let i = i.into_inner();
+ assert_eq!(c.offset_to(i) + i.len(), c.len());
+ }
+ _ => panic!("wrong return type in offset test for alphanumeric"),
+ }
+ match space1::<_, Error<_>>(Partial::new(d)) {
+ Ok((i, _)) => {
+ let i = i.into_inner();
+ assert_eq!(d.offset_to(i) + i.len(), d.len());
+ }
+ _ => panic!("wrong return type in offset test for space"),
+ }
+ match multispace1::<_, Error<_>>(Partial::new(e)) {
+ Ok((i, _)) => {
+ let i = i.into_inner();
+ assert_eq!(e.offset_to(i) + i.len(), e.len());
+ }
+ _ => panic!("wrong return type in offset test for multispace"),
+ }
+ match hex_digit1::<_, Error<_>>(Partial::new(f)) {
+ Ok((i, _)) => {
+ let i = i.into_inner();
+ assert_eq!(f.offset_to(i) + i.len(), f.len());
+ }
+ _ => panic!("wrong return type in offset test for hex_digit"),
+ }
+ match oct_digit1::<_, Error<_>>(Partial::new(f)) {
+ Ok((i, _)) => {
+ let i = i.into_inner();
+ assert_eq!(f.offset_to(i) + i.len(), f.len());
+ }
+ _ => panic!("wrong return type in offset test for oct_digit"),
+ }
+ }
+
+ #[test]
+ fn is_not_line_ending_bytes() {
+ let a: &[u8] = b"ab12cd\nefgh";
+ assert_eq!(
+ not_line_ending::<_, Error<_>>(Partial::new(a)),
+ Ok((Partial::new(&b"\nefgh"[..]), &b"ab12cd"[..]))
+ );
+
+ let b: &[u8] = b"ab12cd\nefgh\nijkl";
+ assert_eq!(
+ not_line_ending::<_, Error<_>>(Partial::new(b)),
+ Ok((Partial::new(&b"\nefgh\nijkl"[..]), &b"ab12cd"[..]))
+ );
+
+ let c: &[u8] = b"ab12cd\r\nefgh\nijkl";
+ assert_eq!(
+ not_line_ending::<_, Error<_>>(Partial::new(c)),
+ Ok((Partial::new(&b"\r\nefgh\nijkl"[..]), &b"ab12cd"[..]))
+ );
+
+ let d: &[u8] = b"ab12cd";
+ assert_eq!(
+ not_line_ending::<_, Error<_>>(Partial::new(d)),
+ Err(ErrMode::Incomplete(Needed::Unknown))
+ );
+ }
+
+ #[test]
+ fn is_not_line_ending_str() {
+ let f = "βèƒôřè\rÂßÇáƒƭèř";
+ assert_eq!(
+ not_line_ending(Partial::new(f)),
+ Err(ErrMode::Backtrack(Error::new(
+ Partial::new(f),
+ ErrorKind::Tag
+ )))
+ );
+
+ let g2: &str = "ab12cd";
+ assert_eq!(
+ not_line_ending::<_, Error<_>>(Partial::new(g2)),
+ Err(ErrMode::Incomplete(Needed::Unknown))
+ );
+ }
+
+ #[test]
+ fn hex_digit_test() {
+ let i = &b"0123456789abcdefABCDEF;"[..];
+ assert_parse!(
+ hex_digit1(Partial::new(i)),
+ Ok((Partial::new(&b";"[..]), &i[..i.len() - 1]))
+ );
+
+ let i = &b"g"[..];
+ assert_parse!(
+ hex_digit1(Partial::new(i)),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(i),
+ ErrorKind::Slice
+ )))
+ );
+
+ let i = &b"G"[..];
+ assert_parse!(
+ hex_digit1(Partial::new(i)),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(i),
+ ErrorKind::Slice
+ )))
+ );
+
+ assert!(AsChar::is_hex_digit(b'0'));
+ assert!(AsChar::is_hex_digit(b'9'));
+ assert!(AsChar::is_hex_digit(b'a'));
+ assert!(AsChar::is_hex_digit(b'f'));
+ assert!(AsChar::is_hex_digit(b'A'));
+ assert!(AsChar::is_hex_digit(b'F'));
+ assert!(!AsChar::is_hex_digit(b'g'));
+ assert!(!AsChar::is_hex_digit(b'G'));
+ assert!(!AsChar::is_hex_digit(b'/'));
+ assert!(!AsChar::is_hex_digit(b':'));
+ assert!(!AsChar::is_hex_digit(b'@'));
+ assert!(!AsChar::is_hex_digit(b'\x60'));
+ }
+
+ #[test]
+ fn oct_digit_test() {
+ let i = &b"01234567;"[..];
+ assert_parse!(
+ oct_digit1(Partial::new(i)),
+ Ok((Partial::new(&b";"[..]), &i[..i.len() - 1]))
+ );
+
+ let i = &b"8"[..];
+ assert_parse!(
+ oct_digit1(Partial::new(i)),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(i),
+ ErrorKind::Slice
+ )))
+ );
+
+ assert!(AsChar::is_oct_digit(b'0'));
+ assert!(AsChar::is_oct_digit(b'7'));
+ assert!(!AsChar::is_oct_digit(b'8'));
+ assert!(!AsChar::is_oct_digit(b'9'));
+ assert!(!AsChar::is_oct_digit(b'a'));
+ assert!(!AsChar::is_oct_digit(b'A'));
+ assert!(!AsChar::is_oct_digit(b'/'));
+ assert!(!AsChar::is_oct_digit(b':'));
+ assert!(!AsChar::is_oct_digit(b'@'));
+ assert!(!AsChar::is_oct_digit(b'\x60'));
+ }
+
+ #[test]
+ fn full_line_windows() {
+ #[allow(clippy::type_complexity)]
+ fn take_full_line(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, (&[u8], &[u8])> {
+ (not_line_ending, line_ending).parse_next(i)
+ }
+ let input = b"abc\r\n";
+ let output = take_full_line(Partial::new(input));
+ assert_eq!(
+ output,
+ Ok((Partial::new(&b""[..]), (&b"abc"[..], &b"\r\n"[..])))
+ );
+ }
+
+ #[test]
+ fn full_line_unix() {
+ #[allow(clippy::type_complexity)]
+ fn take_full_line(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, (&[u8], &[u8])> {
+ (not_line_ending, line_ending).parse_next(i)
+ }
+ let input = b"abc\n";
+ let output = take_full_line(Partial::new(input));
+ assert_eq!(
+ output,
+ Ok((Partial::new(&b""[..]), (&b"abc"[..], &b"\n"[..])))
+ );
+ }
+
+ #[test]
+ fn check_windows_lineending() {
+ let input = b"\r\n";
+ let output = line_ending(Partial::new(&input[..]));
+ assert_parse!(output, Ok((Partial::new(&b""[..]), &b"\r\n"[..])));
+ }
+
+ #[test]
+ fn check_unix_lineending() {
+ let input = b"\n";
+ let output = line_ending(Partial::new(&input[..]));
+ assert_parse!(output, Ok((Partial::new(&b""[..]), &b"\n"[..])));
+ }
+
+ #[test]
+ fn cr_lf() {
+ assert_parse!(
+ crlf(Partial::new(&b"\r\na"[..])),
+ Ok((Partial::new(&b"a"[..]), &b"\r\n"[..]))
+ );
+ assert_parse!(
+ crlf(Partial::new(&b"\r"[..])),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_parse!(
+ crlf(Partial::new(&b"\ra"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"\ra"[..]),
+ ErrorKind::Tag
+ )))
+ );
+
+ assert_parse!(crlf(Partial::new("\r\na")), Ok((Partial::new("a"), "\r\n")));
+ assert_parse!(
+ crlf(Partial::new("\r")),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_parse!(
+ crlf(Partial::new("\ra")),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new("\ra"),
+ ErrorKind::Tag
+ )))
+ );
+ }
+
+ #[test]
+ fn end_of_line() {
+ assert_parse!(
+ line_ending(Partial::new(&b"\na"[..])),
+ Ok((Partial::new(&b"a"[..]), &b"\n"[..]))
+ );
+ assert_parse!(
+ line_ending(Partial::new(&b"\r\na"[..])),
+ Ok((Partial::new(&b"a"[..]), &b"\r\n"[..]))
+ );
+ assert_parse!(
+ line_ending(Partial::new(&b"\r"[..])),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_parse!(
+ line_ending(Partial::new(&b"\ra"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"\ra"[..]),
+ ErrorKind::Tag
+ )))
+ );
+
+ assert_parse!(
+ line_ending(Partial::new("\na")),
+ Ok((Partial::new("a"), "\n"))
+ );
+ assert_parse!(
+ line_ending(Partial::new("\r\na")),
+ Ok((Partial::new("a"), "\r\n"))
+ );
+ assert_parse!(
+ line_ending(Partial::new("\r")),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_parse!(
+ line_ending(Partial::new("\ra")),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new("\ra"),
+ ErrorKind::Tag
+ )))
+ );
+ }
+
+ fn digit_to_i16(input: Partial<&str>) -> IResult<Partial<&str>, i16> {
+ let i = input;
+ let (i, opt_sign) = opt(one_of("+-")).parse_next(i)?;
+ let sign = match opt_sign {
+ Some('+') | None => true,
+ Some('-') => false,
+ _ => unreachable!(),
+ };
+
+ let (i, s) = digit1::<_, crate::error::Error<_>>(i)?;
+ match s.parse_slice() {
+ Some(n) => {
+ if sign {
+ Ok((i, n))
+ } else {
+ Ok((i, -n))
+ }
+ }
+ None => Err(ErrMode::from_error_kind(i, ErrorKind::Verify)),
+ }
+ }
+
+ fn digit_to_u32(i: Partial<&str>) -> IResult<Partial<&str>, u32> {
+ let (i, s) = digit1(i)?;
+ match s.parse_slice() {
+ Some(n) => Ok((i, n)),
+ None => Err(ErrMode::from_error_kind(i, ErrorKind::Verify)),
+ }
+ }
+
+ proptest! {
+ #[test]
+ #[cfg_attr(miri, ignore)] // See https://github.com/AltSysrq/proptest/issues/253
+ fn ints(s in "\\PC*") {
+ let res1 = digit_to_i16(Partial::new(&s));
+ let res2 = dec_int(Partial::new(s.as_str()));
+ assert_eq!(res1, res2);
+ }
+
+ #[test]
+ #[cfg_attr(miri, ignore)] // See https://github.com/AltSysrq/proptest/issues/253
+ fn uints(s in "\\PC*") {
+ let res1 = digit_to_u32(Partial::new(&s));
+ let res2 = dec_uint(Partial::new(s.as_str()));
+ assert_eq!(res1, res2);
+ }
+ }
+
+ #[test]
+ fn hex_uint_tests() {
+ fn hex_u32(input: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u32> {
+ hex_uint(input)
+ }
+
+ assert_parse!(
+ hex_u32(Partial::new(&b";"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b";"[..]),
+ ErrorKind::Slice
+ )))
+ );
+ assert_parse!(
+ hex_u32(Partial::new(&b"ff;"[..])),
+ Ok((Partial::new(&b";"[..]), 255))
+ );
+ assert_parse!(
+ hex_u32(Partial::new(&b"1be2;"[..])),
+ Ok((Partial::new(&b";"[..]), 7138))
+ );
+ assert_parse!(
+ hex_u32(Partial::new(&b"c5a31be2;"[..])),
+ Ok((Partial::new(&b";"[..]), 3_315_801_058))
+ );
+ assert_parse!(
+ hex_u32(Partial::new(&b"C5A31be2;"[..])),
+ Ok((Partial::new(&b";"[..]), 3_315_801_058))
+ );
+ assert_parse!(
+ hex_u32(Partial::new(&b"00c5a31be2;"[..])), // overflow
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"00c5a31be2;"[..]),
+ ErrorKind::Verify
+ )))
+ );
+ assert_parse!(
+ hex_u32(Partial::new(&b"c5a31be201;"[..])), // overflow
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"c5a31be201;"[..]),
+ ErrorKind::Verify
+ )))
+ );
+ assert_parse!(
+ hex_u32(Partial::new(&b"ffffffff;"[..])),
+ Ok((Partial::new(&b";"[..]), 4_294_967_295))
+ );
+ assert_parse!(
+ hex_u32(Partial::new(&b"ffffffffffffffff;"[..])), // overflow
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"ffffffffffffffff;"[..]),
+ ErrorKind::Verify
+ )))
+ );
+ assert_parse!(
+ hex_u32(Partial::new(&b"ffffffffffffffff"[..])), // overflow
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"ffffffffffffffff"[..]),
+ ErrorKind::Verify
+ )))
+ );
+ assert_parse!(
+ hex_u32(Partial::new(&b"0x1be2;"[..])),
+ Ok((Partial::new(&b"x1be2;"[..]), 0))
+ );
+ assert_parse!(
+ hex_u32(Partial::new(&b"12af"[..])),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ }
+}
diff --git a/vendor/winnow-0.4.7/src/binary/bits/mod.rs b/vendor/winnow-0.4.7/src/binary/bits/mod.rs
new file mode 100644
index 000000000..5400e3308
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/binary/bits/mod.rs
@@ -0,0 +1,342 @@
+//! Bit level parsers
+//!
+
+#[cfg(test)]
+mod tests;
+
+use crate::error::{ErrMode, ErrorConvert, ErrorKind, Needed, ParseError};
+use crate::lib::std::ops::{AddAssign, Div, Shl, Shr};
+use crate::stream::{AsBytes, Stream, StreamIsPartial, ToUsize};
+use crate::trace::trace;
+use crate::{IResult, Parser};
+
+/// Converts a byte-level input to a bit-level input
+///
+/// See [`bytes`] to convert it back.
+///
+/// # Example
+/// ```
+/// use winnow::prelude::*;
+/// use winnow::Bytes;
+/// use winnow::binary::bits::{bits, take};
+/// use winnow::error::Error;
+///
+/// type Stream<'i> = &'i Bytes;
+///
+/// fn stream(b: &[u8]) -> Stream<'_> {
+/// Bytes::new(b)
+/// }
+///
+/// fn parse(input: Stream<'_>) -> IResult<Stream<'_>, (u8, u8)> {
+/// bits::<_, _, Error<(_, usize)>, _, _>((take(4usize), take(8usize))).parse_next(input)
+/// }
+///
+/// let input = stream(&[0x12, 0x34, 0xff, 0xff]);
+///
+/// let output = parse(input).expect("We take 1.5 bytes and the input is longer than 2 bytes");
+///
+/// // The first byte is consumed, the second byte is partially consumed and dropped.
+/// let remaining = output.0;
+/// assert_eq!(remaining, stream(&[0xff, 0xff]));
+///
+/// let parsed = output.1;
+/// assert_eq!(parsed.0, 0x01);
+/// assert_eq!(parsed.1, 0x23);
+/// ```
+pub fn bits<I, O, E1, E2, P>(mut parser: P) -> impl Parser<I, O, E2>
+where
+ E1: ParseError<(I, usize)> + ErrorConvert<E2>,
+ E2: ParseError<I>,
+ I: Stream,
+ P: Parser<(I, usize), O, E1>,
+{
+ trace("bits", move |input: I| {
+ match parser.parse_next((input, 0)) {
+ Ok(((rest, offset), result)) => {
+ // If the next byte has been partially read, it will be sliced away as well.
+ // The parser functions might already slice away all fully read bytes.
+ // That's why `offset / 8` isn't necessarily needed at all times.
+ let remaining_bytes_index = offset / 8 + if offset % 8 == 0 { 0 } else { 1 };
+ let (input, _) = rest.next_slice(remaining_bytes_index);
+ Ok((input, result))
+ }
+ Err(ErrMode::Incomplete(n)) => Err(ErrMode::Incomplete(n.map(|u| u.get() / 8 + 1))),
+ Err(e) => Err(e.convert()),
+ }
+ })
+}
+
+/// Convert a [`bits`] stream back into a byte stream
+///
+/// **Warning:** A partial byte remaining in the input will be ignored and the given parser will
+/// start parsing at the next full byte.
+///
+/// ```
+/// use winnow::prelude::*;
+/// use winnow::Bytes;
+/// use winnow::binary::bits::{bits, bytes, take};
+/// use winnow::combinator::rest;
+/// use winnow::error::Error;
+///
+/// type Stream<'i> = &'i Bytes;
+///
+/// fn stream(b: &[u8]) -> Stream<'_> {
+/// Bytes::new(b)
+/// }
+///
+/// fn parse(input: Stream<'_>) -> IResult<Stream<'_>, (u8, u8, &[u8])> {
+/// bits::<_, _, Error<(_, usize)>, _, _>((
+/// take(4usize),
+/// take(8usize),
+/// bytes::<_, _, Error<_>, _, _>(rest)
+/// )).parse_next(input)
+/// }
+///
+/// let input = stream(&[0x12, 0x34, 0xff, 0xff]);
+///
+/// assert_eq!(parse(input), Ok(( stream(&[]), (0x01, 0x23, &[0xff, 0xff][..]) )));
+/// ```
+pub fn bytes<I, O, E1, E2, P>(mut parser: P) -> impl Parser<(I, usize), O, E2>
+where
+ E1: ParseError<I> + ErrorConvert<E2>,
+ E2: ParseError<(I, usize)>,
+ I: Stream<Token = u8>,
+ P: Parser<I, O, E1>,
+{
+ trace("bytes", move |(input, offset): (I, usize)| {
+ let (inner, _) = if offset % 8 != 0 {
+ input.next_slice(1 + offset / 8)
+ } else {
+ input.next_slice(offset / 8)
+ };
+ let i = (input, offset);
+ match parser.parse_next(inner) {
+ Ok((rest, res)) => Ok(((rest, 0), res)),
+ Err(ErrMode::Incomplete(Needed::Unknown)) => Err(ErrMode::Incomplete(Needed::Unknown)),
+ Err(ErrMode::Incomplete(Needed::Size(sz))) => Err(match sz.get().checked_mul(8) {
+ Some(v) => ErrMode::Incomplete(Needed::new(v)),
+ None => ErrMode::Cut(E2::assert(
+ i,
+ "overflow in turning needed bytes into needed bits",
+ )),
+ }),
+ Err(e) => Err(e.convert()),
+ }
+ })
+}
+
+/// Parse taking `count` bits
+///
+/// # Example
+/// ```rust
+/// # use winnow::prelude::*;
+/// # use winnow::Bytes;
+/// # use winnow::error::{Error, ErrorKind};
+/// use winnow::binary::bits::take;
+///
+/// type Stream<'i> = &'i Bytes;
+///
+/// fn stream(b: &[u8]) -> Stream<'_> {
+/// Bytes::new(b)
+/// }
+///
+/// fn parser(input: (Stream<'_>, usize), count: usize)-> IResult<(Stream<'_>, usize), u8> {
+/// take(count).parse_next(input)
+/// }
+///
+/// // Consumes 0 bits, returns 0
+/// assert_eq!(parser((stream(&[0b00010010]), 0), 0), Ok(((stream(&[0b00010010]), 0), 0)));
+///
+/// // Consumes 4 bits, returns their values and increase offset to 4
+/// assert_eq!(parser((stream(&[0b00010010]), 0), 4), Ok(((stream(&[0b00010010]), 4), 0b00000001)));
+///
+/// // Consumes 4 bits, offset is 4, returns their values and increase offset to 0 of next byte
+/// assert_eq!(parser((stream(&[0b00010010]), 4), 4), Ok(((stream(&[]), 0), 0b00000010)));
+///
+/// // Tries to consume 12 bits but only 8 are available
+/// assert_eq!(parser((stream(&[0b00010010]), 0), 12), Err(winnow::error::ErrMode::Backtrack(Error{input: (stream(&[0b00010010]), 0), kind: ErrorKind::Eof })));
+/// ```
+#[inline(always)]
+pub fn take<I, O, C, E: ParseError<(I, usize)>>(count: C) -> impl Parser<(I, usize), O, E>
+where
+ I: Stream<Token = u8> + AsBytes + StreamIsPartial,
+ C: ToUsize,
+ O: From<u8> + AddAssign + Shl<usize, Output = O> + Shr<usize, Output = O>,
+{
+ let count = count.to_usize();
+ trace("take", move |input: (I, usize)| {
+ if <I as StreamIsPartial>::is_partial_supported() {
+ take_::<_, _, _, true>(input, count)
+ } else {
+ take_::<_, _, _, false>(input, count)
+ }
+ })
+}
+
+fn take_<I, O, E: ParseError<(I, usize)>, const PARTIAL: bool>(
+ (input, bit_offset): (I, usize),
+ count: usize,
+) -> IResult<(I, usize), O, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8> + AsBytes,
+ O: From<u8> + AddAssign + Shl<usize, Output = O> + Shr<usize, Output = O>,
+{
+ if count == 0 {
+ Ok(((input, bit_offset), 0u8.into()))
+ } else {
+ let cnt = (count + bit_offset).div(8);
+ if input.eof_offset() * 8 < count + bit_offset {
+ if PARTIAL && input.is_partial() {
+ Err(ErrMode::Incomplete(Needed::new(count)))
+ } else {
+ Err(ErrMode::from_error_kind(
+ (input, bit_offset),
+ ErrorKind::Eof,
+ ))
+ }
+ } else {
+ let mut acc: O = 0_u8.into();
+ let mut offset: usize = bit_offset;
+ let mut remaining: usize = count;
+ let mut end_offset: usize = 0;
+
+ for byte in input.as_bytes().iter().copied().take(cnt + 1) {
+ if remaining == 0 {
+ break;
+ }
+ let val: O = if offset == 0 {
+ byte.into()
+ } else {
+ (byte << offset >> offset).into()
+ };
+
+ if remaining < 8 - offset {
+ acc += val >> (8 - offset - remaining);
+ end_offset = remaining + offset;
+ break;
+ } else {
+ acc += val << (remaining - (8 - offset));
+ remaining -= 8 - offset;
+ offset = 0;
+ }
+ }
+ let (input, _) = input.next_slice(cnt);
+ Ok(((input, end_offset), acc))
+ }
+ }
+}
+
+/// Parse taking `count` bits and comparing them to `pattern`
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::prelude::*;
+/// # use winnow::Bytes;
+/// # use winnow::error::{Error, ErrorKind};
+/// use winnow::binary::bits::tag;
+///
+/// type Stream<'i> = &'i Bytes;
+///
+/// fn stream(b: &[u8]) -> Stream<'_> {
+/// Bytes::new(b)
+/// }
+///
+/// /// Compare the lowest `count` bits of `input` against the lowest `count` bits of `pattern`.
+/// /// Return Ok and the matching section of `input` if there's a match.
+/// /// Return Err if there's no match.
+/// fn parser(pattern: u8, count: u8, input: (Stream<'_>, usize)) -> IResult<(Stream<'_>, usize), u8> {
+/// tag(pattern, count).parse_next(input)
+/// }
+///
+/// // The lowest 4 bits of 0b00001111 match the lowest 4 bits of 0b11111111.
+/// assert_eq!(
+/// parser(0b0000_1111, 4, (stream(&[0b1111_1111]), 0)),
+/// Ok(((stream(&[0b1111_1111]), 4), 0b0000_1111))
+/// );
+///
+/// // The lowest bit of 0b00001111 matches the lowest bit of 0b11111111 (both are 1).
+/// assert_eq!(
+/// parser(0b00000001, 1, (stream(&[0b11111111]), 0)),
+/// Ok(((stream(&[0b11111111]), 1), 0b00000001))
+/// );
+///
+/// // The lowest 2 bits of 0b11111111 and 0b00000001 are different.
+/// assert_eq!(
+/// parser(0b000000_01, 2, (stream(&[0b111111_11]), 0)),
+/// Err(winnow::error::ErrMode::Backtrack(Error {
+/// input: (stream(&[0b11111111]), 0),
+/// kind: ErrorKind::Tag
+/// }))
+/// );
+///
+/// // The lowest 8 bits of 0b11111111 and 0b11111110 are different.
+/// assert_eq!(
+/// parser(0b11111110, 8, (stream(&[0b11111111]), 0)),
+/// Err(winnow::error::ErrMode::Backtrack(Error {
+/// input: (stream(&[0b11111111]), 0),
+/// kind: ErrorKind::Tag
+/// }))
+/// );
+/// ```
+#[inline(always)]
+#[doc(alias = "literal")]
+#[doc(alias = "just")]
+pub fn tag<I, O, C, E: ParseError<(I, usize)>>(
+ pattern: O,
+ count: C,
+) -> impl Parser<(I, usize), O, E>
+where
+ I: Stream<Token = u8> + AsBytes + StreamIsPartial,
+ C: ToUsize,
+ O: From<u8> + AddAssign + Shl<usize, Output = O> + Shr<usize, Output = O> + PartialEq,
+{
+ let count = count.to_usize();
+ trace("tag", move |input: (I, usize)| {
+ let inp = input.clone();
+
+ take(count).parse_next(input).and_then(|(i, o)| {
+ if pattern == o {
+ Ok((i, o))
+ } else {
+ Err(ErrMode::Backtrack(E::from_error_kind(inp, ErrorKind::Tag)))
+ }
+ })
+ })
+}
+
+/// Parses one specific bit as a bool.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::prelude::*;
+/// # use winnow::Bytes;
+/// # use winnow::error::{Error, ErrorKind};
+/// use winnow::binary::bits::bool;
+///
+/// type Stream<'i> = &'i Bytes;
+///
+/// fn stream(b: &[u8]) -> Stream<'_> {
+/// Bytes::new(b)
+/// }
+///
+/// fn parse(input: (Stream<'_>, usize)) -> IResult<(Stream<'_>, usize), bool> {
+/// bool.parse_next(input)
+/// }
+///
+/// assert_eq!(parse((stream(&[0b10000000]), 0)), Ok(((stream(&[0b10000000]), 1), true)));
+/// assert_eq!(parse((stream(&[0b10000000]), 1)), Ok(((stream(&[0b10000000]), 2), false)));
+/// ```
+#[doc(alias = "any")]
+pub fn bool<I, E: ParseError<(I, usize)>>(input: (I, usize)) -> IResult<(I, usize), bool, E>
+where
+ I: Stream<Token = u8> + AsBytes + StreamIsPartial,
+{
+ trace("bool", |input: (I, usize)| {
+ let (res, bit): (_, u32) = take(1usize).parse_next(input)?;
+ Ok((res, bit != 0))
+ })
+ .parse_next(input)
+}
diff --git a/vendor/winnow-0.4.7/src/binary/bits/tests.rs b/vendor/winnow-0.4.7/src/binary/bits/tests.rs
new file mode 100644
index 000000000..61dba2c31
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/binary/bits/tests.rs
@@ -0,0 +1,190 @@
+use super::*;
+use crate::error::Error;
+use crate::Partial;
+
+#[test]
+/// Take the `bits` function and assert that remaining bytes are correctly returned, if the
+/// previous bytes are fully consumed
+fn test_complete_byte_consumption_bits() {
+ let input = &[0x12, 0x34, 0x56, 0x78][..];
+
+ // Take 3 bit slices with sizes [4, 8, 4].
+ let result: IResult<&[u8], (u8, u8, u8)> =
+ bits::<_, _, Error<(&[u8], usize)>, _, _>((take(4usize), take(8usize), take(4usize)))
+ .parse_next(input);
+
+ let output = result.expect("We take 2 bytes and the input is longer than 2 bytes");
+
+ let remaining = output.0;
+ assert_eq!(remaining, [0x56, 0x78]);
+
+ let parsed = output.1;
+ assert_eq!(parsed.0, 0x01);
+ assert_eq!(parsed.1, 0x23);
+ assert_eq!(parsed.2, 0x04);
+}
+
+#[test]
+/// Take the `bits` function and assert that remaining bytes are correctly returned, if the
+/// previous bytes are NOT fully consumed. Partially consumed bytes are supposed to be dropped.
+/// I.e. if we consume 1.5 bytes of 4 bytes, 2 bytes will be returned, bits 13-16 will be
+/// dropped.
+fn test_partial_byte_consumption_bits() {
+ let input = &[0x12, 0x34, 0x56, 0x78][..];
+
+ // Take bit slices with sizes [4, 8].
+ let result: IResult<&[u8], (u8, u8)> =
+ bits::<_, _, Error<(&[u8], usize)>, _, _>((take(4usize), take(8usize))).parse_next(input);
+
+ let output = result.expect("We take 1.5 bytes and the input is longer than 2 bytes");
+
+ let remaining = output.0;
+ assert_eq!(remaining, [0x56, 0x78]);
+
+ let parsed = output.1;
+ assert_eq!(parsed.0, 0x01);
+ assert_eq!(parsed.1, 0x23);
+}
+
+#[test]
+#[cfg(feature = "std")]
+/// Ensure that in Incomplete error is thrown, if too few bytes are passed for a given parser.
+fn test_incomplete_bits() {
+ let input = Partial::new(&[0x12][..]);
+
+ // Take bit slices with sizes [4, 8].
+ let result: IResult<_, (u8, u8)> =
+ bits::<_, _, Error<(_, usize)>, _, _>((take(4usize), take(8usize))).parse_next(input);
+
+ assert!(result.is_err());
+ let error = result.err().unwrap();
+ assert_eq!("Parsing requires 2 bytes/chars", error.to_string());
+}
+
+#[test]
+fn test_take_complete_0() {
+ let input = &[0b00010010][..];
+ let count = 0usize;
+ assert_eq!(count, 0usize);
+ let offset = 0usize;
+
+ let result: crate::IResult<(&[u8], usize), usize> = take(count).parse_next((input, offset));
+
+ assert_eq!(result, Ok(((input, offset), 0)));
+}
+
+#[test]
+fn test_take_complete_eof() {
+ let input = &[0b00010010][..];
+
+ let result: crate::IResult<(&[u8], usize), usize> = take(1usize).parse_next((input, 8));
+
+ assert_eq!(
+ result,
+ Err(crate::error::ErrMode::Backtrack(crate::error::Error {
+ input: (input, 8),
+ kind: ErrorKind::Eof
+ }))
+ );
+}
+
+#[test]
+fn test_take_complete_span_over_multiple_bytes() {
+ let input = &[0b00010010, 0b00110100, 0b11111111, 0b11111111][..];
+
+ let result: crate::IResult<(&[u8], usize), usize> = take(24usize).parse_next((input, 4));
+
+ assert_eq!(
+ result,
+ Ok((([0b11111111].as_ref(), 4), 0b1000110100111111111111))
+ );
+}
+
+#[test]
+fn test_take_partial_0() {
+ let input = Partial::new(&[][..]);
+ let count = 0usize;
+ assert_eq!(count, 0usize);
+ let offset = 0usize;
+
+ let result: crate::IResult<(_, usize), usize> = take(count).parse_next((input, offset));
+
+ assert_eq!(result, Ok(((input, offset), 0)));
+}
+
+#[test]
+fn test_tag_partial_ok() {
+ let input = Partial::new(&[0b00011111][..]);
+ let offset = 0usize;
+ let bits_to_take = 4usize;
+ let value_to_tag = 0b0001;
+
+ let result: crate::IResult<(_, usize), usize> =
+ tag(value_to_tag, bits_to_take).parse_next((input, offset));
+
+ assert_eq!(result, Ok(((input, bits_to_take), value_to_tag)));
+}
+
+#[test]
+fn test_tag_partial_err() {
+ let input = Partial::new(&[0b00011111][..]);
+ let offset = 0usize;
+ let bits_to_take = 4usize;
+ let value_to_tag = 0b1111;
+
+ let result: crate::IResult<(_, usize), usize> =
+ tag(value_to_tag, bits_to_take).parse_next((input, offset));
+
+ assert_eq!(
+ result,
+ Err(crate::error::ErrMode::Backtrack(crate::error::Error {
+ input: (input, offset),
+ kind: ErrorKind::Tag
+ }))
+ );
+}
+
+#[test]
+fn test_bool_0_complete() {
+ let input = [0b10000000].as_ref();
+
+ let result: crate::IResult<(&[u8], usize), bool> = bool((input, 0));
+
+ assert_eq!(result, Ok(((input, 1), true)));
+}
+
+#[test]
+fn test_bool_eof_complete() {
+ let input = [0b10000000].as_ref();
+
+ let result: crate::IResult<(&[u8], usize), bool> = bool((input, 8));
+
+ assert_eq!(
+ result,
+ Err(crate::error::ErrMode::Backtrack(crate::error::Error {
+ input: (input, 8),
+ kind: ErrorKind::Eof
+ }))
+ );
+}
+
+#[test]
+fn test_bool_0_partial() {
+ let input = Partial::new([0b10000000].as_ref());
+
+ let result: crate::IResult<(Partial<&[u8]>, usize), bool> = bool((input, 0));
+
+ assert_eq!(result, Ok(((input, 1), true)));
+}
+
+#[test]
+fn test_bool_eof_partial() {
+ let input = Partial::new([0b10000000].as_ref());
+
+ let result: crate::IResult<(Partial<&[u8]>, usize), bool> = bool.parse_next((input, 8));
+
+ assert_eq!(
+ result,
+ Err(crate::error::ErrMode::Incomplete(Needed::new(1)))
+ );
+}
diff --git a/vendor/winnow-0.4.7/src/binary/mod.rs b/vendor/winnow-0.4.7/src/binary/mod.rs
new file mode 100644
index 000000000..80435e359
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/binary/mod.rs
@@ -0,0 +1,2550 @@
+//! Parsers recognizing numbers
+
+#![allow(clippy::match_same_arms)]
+
+pub mod bits;
+
+#[cfg(test)]
+mod tests;
+
+use crate::combinator::repeat;
+use crate::error::ErrMode;
+use crate::error::ErrorKind;
+use crate::error::Needed;
+use crate::error::ParseError;
+use crate::lib::std::ops::{Add, Shl};
+use crate::stream::Accumulate;
+use crate::stream::{AsBytes, Stream, StreamIsPartial};
+use crate::stream::{ToUsize, UpdateSlice};
+use crate::token::take;
+use crate::trace::trace;
+use crate::IResult;
+use crate::Parser;
+
+/// Configurable endianness
+#[derive(Debug, PartialEq, Eq, Clone, Copy)]
+pub enum Endianness {
+ /// Big endian
+ Big,
+ /// Little endian
+ Little,
+ /// Will match the host's endianness
+ Native,
+}
+
+/// Recognizes an unsigned 1 byte integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::be_u8;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], u8> {
+/// be_u8.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x03abcefg"[..]), Ok((&b"\x03abcefg"[..], 0x00)));
+/// assert_eq!(parser(&b""[..]), Err(ErrMode::Backtrack(Error::new(&[][..], ErrorKind::Token))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::be_u8;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u8> {
+/// be_u8.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01abcd"[..])), Ok((Partial::new(&b"\x01abcd"[..]), 0x00)));
+/// assert_eq!(parser(Partial::new(&b""[..])), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn be_u8<I, E: ParseError<I>>(input: I) -> IResult<I, u8, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+{
+ u8(input)
+}
+
+/// Recognizes a big endian unsigned 2 bytes integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::be_u16;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], u16> {
+/// be_u16.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x03abcefg"[..]), Ok((&b"abcefg"[..], 0x0003)));
+/// assert_eq!(parser(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::be_u16;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u16> {
+/// be_u16.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01abcd"[..])), Ok((Partial::new(&b"abcd"[..]), 0x0001)));
+/// assert_eq!(parser(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn be_u16<I, E: ParseError<I>>(input: I) -> IResult<I, u16, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("be_u16", move |input: I| be_uint(input, 2)).parse_next(input)
+}
+
+/// Recognizes a big endian unsigned 3 byte integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::be_u24;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], u32> {
+/// be_u24.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x03\x05abcefg"[..]), Ok((&b"abcefg"[..], 0x000305)));
+/// assert_eq!(parser(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::be_u24;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u32> {
+/// be_u24.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01\x02abcd"[..])), Ok((Partial::new(&b"abcd"[..]), 0x000102)));
+/// assert_eq!(parser(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(2))));
+/// ```
+#[inline(always)]
+pub fn be_u24<I, E: ParseError<I>>(input: I) -> IResult<I, u32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("be_u23", move |input: I| be_uint(input, 3)).parse_next(input)
+}
+
+/// Recognizes a big endian unsigned 4 bytes integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::be_u32;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], u32> {
+/// be_u32.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x03\x05\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x00030507)));
+/// assert_eq!(parser(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::be_u32;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u32> {
+/// be_u32.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01\x02\x03abcd"[..])), Ok((Partial::new(&b"abcd"[..]), 0x00010203)));
+/// assert_eq!(parser(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(3))));
+/// ```
+#[inline(always)]
+pub fn be_u32<I, E: ParseError<I>>(input: I) -> IResult<I, u32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("be_u32", move |input: I| be_uint(input, 4)).parse_next(input)
+}
+
+/// Recognizes a big endian unsigned 8 bytes integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::be_u64;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], u64> {
+/// be_u64.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x0001020304050607)));
+/// assert_eq!(parser(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::be_u64;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u64> {
+/// be_u64.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01\x02\x03\x04\x05\x06\x07abcd"[..])), Ok((Partial::new(&b"abcd"[..]), 0x0001020304050607)));
+/// assert_eq!(parser(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(7))));
+/// ```
+#[inline(always)]
+pub fn be_u64<I, E: ParseError<I>>(input: I) -> IResult<I, u64, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("be_u64", move |input: I| be_uint(input, 8)).parse_next(input)
+}
+
+/// Recognizes a big endian unsigned 16 bytes integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::be_u128;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], u128> {
+/// be_u128.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x01\x02\x03\x04\x05\x06\x07\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x00010203040506070001020304050607)));
+/// assert_eq!(parser(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::be_u128;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u128> {
+/// be_u128.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x10\x11\x12\x13\x14\x15abcd"[..])), Ok((Partial::new(&b"abcd"[..]), 0x00010203040506070809101112131415)));
+/// assert_eq!(parser(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(15))));
+/// ```
+#[inline(always)]
+pub fn be_u128<I, E: ParseError<I>>(input: I) -> IResult<I, u128, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("be_u128", move |input: I| be_uint(input, 16)).parse_next(input)
+}
+
+#[inline]
+fn be_uint<I, Uint, E: ParseError<I>>(input: I, bound: usize) -> IResult<I, Uint, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+ Uint: Default + Shl<u8, Output = Uint> + Add<Uint, Output = Uint> + From<u8>,
+{
+ debug_assert_ne!(bound, 1, "to_be_uint needs extra work to avoid overflow");
+ take(bound)
+ .map(|n: <I as Stream>::Slice| to_be_uint(n.as_bytes()))
+ .parse_next(input)
+}
+
+#[inline]
+fn to_be_uint<Uint>(number: &[u8]) -> Uint
+where
+ Uint: Default + Shl<u8, Output = Uint> + Add<Uint, Output = Uint> + From<u8>,
+{
+ let mut res = Uint::default();
+ for byte in number.iter().copied() {
+ res = (res << 8) + byte.into();
+ }
+
+ res
+}
+
+/// Recognizes a signed 1 byte integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::be_i8;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], i8> {
+/// be_i8.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x03abcefg"[..]), Ok((&b"\x03abcefg"[..], 0x00)));
+/// assert_eq!(parser(&b""[..]), Err(ErrMode::Backtrack(Error::new(&[][..], ErrorKind::Token))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::be_i8;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i8> {
+/// be_i8.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01abcd"[..])), Ok((Partial::new(&b"\x01abcd"[..]), 0x00)));
+/// assert_eq!(parser(Partial::new(&b""[..])), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn be_i8<I, E: ParseError<I>>(input: I) -> IResult<I, i8, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+{
+ i8(input)
+}
+
+/// Recognizes a big endian signed 2 bytes integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::be_i16;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], i16> {
+/// be_i16.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x03abcefg"[..]), Ok((&b"abcefg"[..], 0x0003)));
+/// assert_eq!(parser(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::be_i16;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i16> {
+/// be_i16.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01abcd"[..])), Ok((Partial::new(&b"abcd"[..]), 0x0001)));
+/// assert_eq!(parser(Partial::new(&b""[..])), Err(ErrMode::Incomplete(Needed::new(2))));
+/// ```
+#[inline(always)]
+pub fn be_i16<I, E: ParseError<I>>(input: I) -> IResult<I, i16, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("be_i16", move |input: I| {
+ be_uint::<_, u16, _>(input, 2).map(|(i, n)| (i, n as i16))
+ })
+ .parse_next(input)
+}
+
+/// Recognizes a big endian signed 3 bytes integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::be_i24;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], i32> {
+/// be_i24.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x03\x05abcefg"[..]), Ok((&b"abcefg"[..], 0x000305)));
+/// assert_eq!(parser(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::be_i24;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i32> {
+/// be_i24.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01\x02abcd"[..])), Ok((Partial::new(&b"abcd"[..]), 0x000102)));
+/// assert_eq!(parser(Partial::new(&b""[..])), Err(ErrMode::Incomplete(Needed::new(3))));
+/// ```
+#[inline(always)]
+pub fn be_i24<I, E: ParseError<I>>(input: I) -> IResult<I, i32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("be_i24", move |input: I| {
+ be_uint::<_, u32, _>(input, 3).map(|(i, n)| {
+ // Same as the unsigned version but we need to sign-extend manually here
+ let n = if n & 0x80_00_00 != 0 {
+ (n | 0xff_00_00_00) as i32
+ } else {
+ n as i32
+ };
+ (i, n)
+ })
+ })
+ .parse_next(input)
+}
+
+/// Recognizes a big endian signed 4 bytes integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::be_i32;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], i32> {
+/// be_i32.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x03\x05\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x00030507)));
+/// assert_eq!(parser(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::be_i32;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i32> {
+/// be_i32.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01\x02\x03abcd"[..])), Ok((Partial::new(&b"abcd"[..]), 0x00010203)));
+/// assert_eq!(parser(Partial::new(&b""[..])), Err(ErrMode::Incomplete(Needed::new(4))));
+/// ```
+#[inline(always)]
+pub fn be_i32<I, E: ParseError<I>>(input: I) -> IResult<I, i32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("be_i32", move |input: I| {
+ be_uint::<_, u32, _>(input, 4).map(|(i, n)| (i, n as i32))
+ })
+ .parse_next(input)
+}
+
+/// Recognizes a big endian signed 8 bytes integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::be_i64;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], i64> {
+/// be_i64.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x0001020304050607)));
+/// assert_eq!(parser(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::be_i64;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i64> {
+/// be_i64.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01\x02\x03\x04\x05\x06\x07abcd"[..])), Ok((Partial::new(&b"abcd"[..]), 0x0001020304050607)));
+/// assert_eq!(parser(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(7))));
+/// ```
+#[inline(always)]
+pub fn be_i64<I, E: ParseError<I>>(input: I) -> IResult<I, i64, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("be_i64", move |input: I| {
+ be_uint::<_, u64, _>(input, 8).map(|(i, n)| (i, n as i64))
+ })
+ .parse_next(input)
+}
+
+/// Recognizes a big endian signed 16 bytes integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::be_i128;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], i128> {
+/// be_i128.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x01\x02\x03\x04\x05\x06\x07\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x00010203040506070001020304050607)));
+/// assert_eq!(parser(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::be_i128;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i128> {
+/// be_i128.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x10\x11\x12\x13\x14\x15abcd"[..])), Ok((Partial::new(&b"abcd"[..]), 0x00010203040506070809101112131415)));
+/// assert_eq!(parser(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(15))));
+/// ```
+#[inline(always)]
+pub fn be_i128<I, E: ParseError<I>>(input: I) -> IResult<I, i128, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("be_i128", move |input: I| {
+ be_uint::<_, u128, _>(input, 16).map(|(i, n)| (i, n as i128))
+ })
+ .parse_next(input)
+}
+
+/// Recognizes an unsigned 1 byte integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::le_u8;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], u8> {
+/// le_u8.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x03abcefg"[..]), Ok((&b"\x03abcefg"[..], 0x00)));
+/// assert_eq!(parser(&b""[..]), Err(ErrMode::Backtrack(Error::new(&[][..], ErrorKind::Token))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::le_u8;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u8> {
+/// le_u8.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01abcd"[..])), Ok((Partial::new(&b"\x01abcd"[..]), 0x00)));
+/// assert_eq!(parser(Partial::new(&b""[..])), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn le_u8<I, E: ParseError<I>>(input: I) -> IResult<I, u8, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+{
+ u8(input)
+}
+
+/// Recognizes a little endian unsigned 2 bytes integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::le_u16;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], u16> {
+/// le_u16.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x03abcefg"[..]), Ok((&b"abcefg"[..], 0x0300)));
+/// assert_eq!(parser(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::le_u16;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u16> {
+/// le_u16::<_, Error<_>>.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01abcd"[..])), Ok((Partial::new(&b"abcd"[..]), 0x0100)));
+/// assert_eq!(parser(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn le_u16<I, E: ParseError<I>>(input: I) -> IResult<I, u16, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("le_u16", move |input: I| le_uint(input, 2)).parse_next(input)
+}
+
+/// Recognizes a little endian unsigned 3 byte integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::le_u24;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], u32> {
+/// le_u24.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x03\x05abcefg"[..]), Ok((&b"abcefg"[..], 0x050300)));
+/// assert_eq!(parser(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::le_u24;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u32> {
+/// le_u24::<_, Error<_>>.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01\x02abcd"[..])), Ok((Partial::new(&b"abcd"[..]), 0x020100)));
+/// assert_eq!(parser(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(2))));
+/// ```
+#[inline(always)]
+pub fn le_u24<I, E: ParseError<I>>(input: I) -> IResult<I, u32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("le_u24", move |input: I| le_uint(input, 3)).parse_next(input)
+}
+
+/// Recognizes a little endian unsigned 4 bytes integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::le_u32;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], u32> {
+/// le_u32.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x03\x05\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x07050300)));
+/// assert_eq!(parser(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::le_u32;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u32> {
+/// le_u32::<_, Error<_>>.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01\x02\x03abcd"[..])), Ok((Partial::new(&b"abcd"[..]), 0x03020100)));
+/// assert_eq!(parser(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(3))));
+/// ```
+#[inline(always)]
+pub fn le_u32<I, E: ParseError<I>>(input: I) -> IResult<I, u32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("le_u32", move |input: I| le_uint(input, 4)).parse_next(input)
+}
+
+/// Recognizes a little endian unsigned 8 bytes integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::le_u64;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], u64> {
+/// le_u64.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x0706050403020100)));
+/// assert_eq!(parser(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::le_u64;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u64> {
+/// le_u64::<_, Error<_>>.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01\x02\x03\x04\x05\x06\x07abcd"[..])), Ok((Partial::new(&b"abcd"[..]), 0x0706050403020100)));
+/// assert_eq!(parser(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(7))));
+/// ```
+#[inline(always)]
+pub fn le_u64<I, E: ParseError<I>>(input: I) -> IResult<I, u64, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("le_u64", move |input: I| le_uint(input, 8)).parse_next(input)
+}
+
+/// Recognizes a little endian unsigned 16 bytes integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::le_u128;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], u128> {
+/// le_u128.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x01\x02\x03\x04\x05\x06\x07\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x07060504030201000706050403020100)));
+/// assert_eq!(parser(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::le_u128;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u128> {
+/// le_u128::<_, Error<_>>.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x10\x11\x12\x13\x14\x15abcd"[..])), Ok((Partial::new(&b"abcd"[..]), 0x15141312111009080706050403020100)));
+/// assert_eq!(parser(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(15))));
+/// ```
+#[inline(always)]
+pub fn le_u128<I, E: ParseError<I>>(input: I) -> IResult<I, u128, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("le_u128", move |input: I| le_uint(input, 16)).parse_next(input)
+}
+
+#[inline]
+fn le_uint<I, Uint, E: ParseError<I>>(input: I, bound: usize) -> IResult<I, Uint, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+ Uint: Default + Shl<u8, Output = Uint> + Add<Uint, Output = Uint> + From<u8>,
+{
+ take(bound)
+ .map(|n: <I as Stream>::Slice| to_le_uint(n.as_bytes()))
+ .parse_next(input)
+}
+
+#[inline]
+fn to_le_uint<Uint>(number: &[u8]) -> Uint
+where
+ Uint: Default + Shl<u8, Output = Uint> + Add<Uint, Output = Uint> + From<u8>,
+{
+ let mut res = Uint::default();
+ for (index, byte) in number.iter_offsets() {
+ res = res + (Uint::from(byte) << (8 * index as u8));
+ }
+
+ res
+}
+
+/// Recognizes a signed 1 byte integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::le_i8;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], i8> {
+/// le_i8.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x03abcefg"[..]), Ok((&b"\x03abcefg"[..], 0x00)));
+/// assert_eq!(parser(&b""[..]), Err(ErrMode::Backtrack(Error::new(&[][..], ErrorKind::Token))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::le_i8;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i8> {
+/// le_i8.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01abcd"[..])), Ok((Partial::new(&b"\x01abcd"[..]), 0x00)));
+/// assert_eq!(parser(Partial::new(&b""[..])), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn le_i8<I, E: ParseError<I>>(input: I) -> IResult<I, i8, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+{
+ i8(input)
+}
+
+/// Recognizes a little endian signed 2 bytes integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::le_i16;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], i16> {
+/// le_i16.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x03abcefg"[..]), Ok((&b"abcefg"[..], 0x0300)));
+/// assert_eq!(parser(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::le_i16;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i16> {
+/// le_i16::<_, Error<_>>.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01abcd"[..])), Ok((Partial::new(&b"abcd"[..]), 0x0100)));
+/// assert_eq!(parser(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn le_i16<I, E: ParseError<I>>(input: I) -> IResult<I, i16, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("le_i16", move |input: I| {
+ le_uint::<_, u16, _>(input, 2).map(|(i, n)| (i, n as i16))
+ })
+ .parse_next(input)
+}
+
+/// Recognizes a little endian signed 3 bytes integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::le_i24;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], i32> {
+/// le_i24.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x03\x05abcefg"[..]), Ok((&b"abcefg"[..], 0x050300)));
+/// assert_eq!(parser(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::le_i24;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i32> {
+/// le_i24::<_, Error<_>>.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01\x02abcd"[..])), Ok((Partial::new(&b"abcd"[..]), 0x020100)));
+/// assert_eq!(parser(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(2))));
+/// ```
+#[inline(always)]
+pub fn le_i24<I, E: ParseError<I>>(input: I) -> IResult<I, i32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("le_i24", move |input: I| {
+ le_uint::<_, u32, _>(input, 3).map(|(i, n)| {
+ // Same as the unsigned version but we need to sign-extend manually here
+ let n = if n & 0x80_00_00 != 0 {
+ (n | 0xff_00_00_00) as i32
+ } else {
+ n as i32
+ };
+ (i, n)
+ })
+ })
+ .parse_next(input)
+}
+
+/// Recognizes a little endian signed 4 bytes integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::le_i32;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], i32> {
+/// le_i32.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x03\x05\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x07050300)));
+/// assert_eq!(parser(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::le_i32;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i32> {
+/// le_i32::<_, Error<_>>.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01\x02\x03abcd"[..])), Ok((Partial::new(&b"abcd"[..]), 0x03020100)));
+/// assert_eq!(parser(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(3))));
+/// ```
+#[inline(always)]
+pub fn le_i32<I, E: ParseError<I>>(input: I) -> IResult<I, i32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("le_i32", move |input: I| {
+ le_uint::<_, u32, _>(input, 4).map(|(i, n)| (i, n as i32))
+ })
+ .parse_next(input)
+}
+
+/// Recognizes a little endian signed 8 bytes integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::le_i64;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], i64> {
+/// le_i64.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x0706050403020100)));
+/// assert_eq!(parser(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::le_i64;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i64> {
+/// le_i64::<_, Error<_>>.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01\x02\x03\x04\x05\x06\x07abcd"[..])), Ok((Partial::new(&b"abcd"[..]), 0x0706050403020100)));
+/// assert_eq!(parser(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(7))));
+/// ```
+#[inline(always)]
+pub fn le_i64<I, E: ParseError<I>>(input: I) -> IResult<I, i64, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("le_i64", move |input: I| {
+ le_uint::<_, u64, _>(input, 8).map(|(i, n)| (i, n as i64))
+ })
+ .parse_next(input)
+}
+
+/// Recognizes a little endian signed 16 bytes integer.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::le_i128;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], i128> {
+/// le_i128.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x01\x02\x03\x04\x05\x06\x07\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x07060504030201000706050403020100)));
+/// assert_eq!(parser(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::le_i128;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i128> {
+/// le_i128::<_, Error<_>>.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x10\x11\x12\x13\x14\x15abcd"[..])), Ok((Partial::new(&b"abcd"[..]), 0x15141312111009080706050403020100)));
+/// assert_eq!(parser(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(15))));
+/// ```
+#[inline(always)]
+pub fn le_i128<I, E: ParseError<I>>(input: I) -> IResult<I, i128, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("le_i128", move |input: I| {
+ le_uint::<_, u128, _>(input, 16).map(|(i, n)| (i, n as i128))
+ })
+ .parse_next(input)
+}
+
+/// Recognizes an unsigned 1 byte integer
+///
+/// **Note:** that endianness does not apply to 1 byte numbers.
+///
+/// *Complete version*: returns an error if there is not enough input data
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::u8;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], u8> {
+/// u8.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x03abcefg"[..]), Ok((&b"\x03abcefg"[..], 0x00)));
+/// assert_eq!(parser(&b""[..]), Err(ErrMode::Backtrack(Error::new(&[][..], ErrorKind::Token))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// # use winnow::Partial;
+/// use winnow::binary::u8;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u8> {
+/// u8::<_, Error<_>>.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x03abcefg"[..])), Ok((Partial::new(&b"\x03abcefg"[..]), 0x00)));
+/// assert_eq!(parser(Partial::new(&b""[..])), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn u8<I, E: ParseError<I>>(input: I) -> IResult<I, u8, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+{
+ trace("u8", move |input: I| {
+ if <I as StreamIsPartial>::is_partial_supported() {
+ u8_::<_, _, true>(input)
+ } else {
+ u8_::<_, _, false>(input)
+ }
+ })
+ .parse_next(input)
+}
+
+fn u8_<I, E: ParseError<I>, const PARTIAL: bool>(input: I) -> IResult<I, u8, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+{
+ input.next_token().ok_or_else(|| {
+ if PARTIAL && input.is_partial() {
+ ErrMode::Incomplete(Needed::new(1))
+ } else {
+ ErrMode::Backtrack(E::from_error_kind(input, ErrorKind::Token))
+ }
+ })
+}
+
+/// Recognizes an unsigned 2 bytes integer
+///
+/// If the parameter is `winnow::binary::Endianness::Big`, parse a big endian u16 integer,
+/// otherwise if `winnow::binary::Endianness::Little` parse a little endian u16 integer.
+///
+/// *Complete version*: returns an error if there is not enough input data
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::u16;
+///
+/// let be_u16 = |s| {
+/// u16(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_u16(&b"\x00\x03abcefg"[..]), Ok((&b"abcefg"[..], 0x0003)));
+/// assert_eq!(be_u16(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+///
+/// let le_u16 = |s| {
+/// u16(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_u16(&b"\x00\x03abcefg"[..]), Ok((&b"abcefg"[..], 0x0300)));
+/// assert_eq!(le_u16(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// # use winnow::Partial;
+/// use winnow::binary::u16;
+///
+/// let be_u16 = |s| {
+/// u16::<_, Error<_>>(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_u16(Partial::new(&b"\x00\x03abcefg"[..])), Ok((Partial::new(&b"abcefg"[..]), 0x0003)));
+/// assert_eq!(be_u16(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(1))));
+///
+/// let le_u16 = |s| {
+/// u16::<_, Error<_>>(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_u16(Partial::new(&b"\x00\x03abcefg"[..])), Ok((Partial::new(&b"abcefg"[..]), 0x0300)));
+/// assert_eq!(le_u16(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn u16<I, E: ParseError<I>>(endian: Endianness) -> impl Parser<I, u16, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ move |input: I| {
+ match endian {
+ Endianness::Big => be_u16,
+ Endianness::Little => le_u16,
+ #[cfg(target_endian = "big")]
+ Endianness::Native => be_u16,
+ #[cfg(target_endian = "little")]
+ Endianness::Native => le_u16,
+ }
+ }(input)
+}
+
+/// Recognizes an unsigned 3 byte integer
+///
+/// If the parameter is `winnow::binary::Endianness::Big`, parse a big endian u24 integer,
+/// otherwise if `winnow::binary::Endianness::Little` parse a little endian u24 integer.
+///
+/// *Complete version*: returns an error if there is not enough input data
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::u24;
+///
+/// let be_u24 = |s| {
+/// u24(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_u24(&b"\x00\x03\x05abcefg"[..]), Ok((&b"abcefg"[..], 0x000305)));
+/// assert_eq!(be_u24(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+///
+/// let le_u24 = |s| {
+/// u24(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_u24(&b"\x00\x03\x05abcefg"[..]), Ok((&b"abcefg"[..], 0x050300)));
+/// assert_eq!(le_u24(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// # use winnow::Partial;
+/// use winnow::binary::u24;
+///
+/// let be_u24 = |s| {
+/// u24::<_,Error<_>>(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_u24(Partial::new(&b"\x00\x03\x05abcefg"[..])), Ok((Partial::new(&b"abcefg"[..]), 0x000305)));
+/// assert_eq!(be_u24(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(2))));
+///
+/// let le_u24 = |s| {
+/// u24::<_, Error<_>>(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_u24(Partial::new(&b"\x00\x03\x05abcefg"[..])), Ok((Partial::new(&b"abcefg"[..]), 0x050300)));
+/// assert_eq!(le_u24(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(2))));
+/// ```
+#[inline(always)]
+pub fn u24<I, E: ParseError<I>>(endian: Endianness) -> impl Parser<I, u32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ move |input: I| {
+ match endian {
+ Endianness::Big => be_u24,
+ Endianness::Little => le_u24,
+ #[cfg(target_endian = "big")]
+ Endianness::Native => be_u24,
+ #[cfg(target_endian = "little")]
+ Endianness::Native => le_u24,
+ }
+ }(input)
+}
+
+/// Recognizes an unsigned 4 byte integer
+///
+/// If the parameter is `winnow::binary::Endianness::Big`, parse a big endian u32 integer,
+/// otherwise if `winnow::binary::Endianness::Little` parse a little endian u32 integer.
+///
+/// *Complete version*: returns an error if there is not enough input data
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::u32;
+///
+/// let be_u32 = |s| {
+/// u32(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_u32(&b"\x00\x03\x05\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x00030507)));
+/// assert_eq!(be_u32(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+///
+/// let le_u32 = |s| {
+/// u32(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_u32(&b"\x00\x03\x05\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x07050300)));
+/// assert_eq!(le_u32(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// # use winnow::Partial;
+/// use winnow::binary::u32;
+///
+/// let be_u32 = |s| {
+/// u32::<_, Error<_>>(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_u32(Partial::new(&b"\x00\x03\x05\x07abcefg"[..])), Ok((Partial::new(&b"abcefg"[..]), 0x00030507)));
+/// assert_eq!(be_u32(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(3))));
+///
+/// let le_u32 = |s| {
+/// u32::<_, Error<_>>(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_u32(Partial::new(&b"\x00\x03\x05\x07abcefg"[..])), Ok((Partial::new(&b"abcefg"[..]), 0x07050300)));
+/// assert_eq!(le_u32(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(3))));
+/// ```
+#[inline(always)]
+pub fn u32<I, E: ParseError<I>>(endian: Endianness) -> impl Parser<I, u32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ move |input: I| {
+ match endian {
+ Endianness::Big => be_u32,
+ Endianness::Little => le_u32,
+ #[cfg(target_endian = "big")]
+ Endianness::Native => be_u32,
+ #[cfg(target_endian = "little")]
+ Endianness::Native => le_u32,
+ }
+ }(input)
+}
+
+/// Recognizes an unsigned 8 byte integer
+///
+/// If the parameter is `winnow::binary::Endianness::Big`, parse a big endian u64 integer,
+/// otherwise if `winnow::binary::Endianness::Little` parse a little endian u64 integer.
+///
+/// *Complete version*: returns an error if there is not enough input data
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::u64;
+///
+/// let be_u64 = |s| {
+/// u64(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_u64(&b"\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x0001020304050607)));
+/// assert_eq!(be_u64(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+///
+/// let le_u64 = |s| {
+/// u64(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_u64(&b"\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x0706050403020100)));
+/// assert_eq!(le_u64(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// # use winnow::Partial;
+/// use winnow::binary::u64;
+///
+/// let be_u64 = |s| {
+/// u64::<_, Error<_>>(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_u64(Partial::new(&b"\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..])), Ok((Partial::new(&b"abcefg"[..]), 0x0001020304050607)));
+/// assert_eq!(be_u64(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(7))));
+///
+/// let le_u64 = |s| {
+/// u64::<_, Error<_>>(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_u64(Partial::new(&b"\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..])), Ok((Partial::new(&b"abcefg"[..]), 0x0706050403020100)));
+/// assert_eq!(le_u64(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(7))));
+/// ```
+#[inline(always)]
+pub fn u64<I, E: ParseError<I>>(endian: Endianness) -> impl Parser<I, u64, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ move |input: I| {
+ match endian {
+ Endianness::Big => be_u64,
+ Endianness::Little => le_u64,
+ #[cfg(target_endian = "big")]
+ Endianness::Native => be_u64,
+ #[cfg(target_endian = "little")]
+ Endianness::Native => le_u64,
+ }
+ }(input)
+}
+
+/// Recognizes an unsigned 16 byte integer
+///
+/// If the parameter is `winnow::binary::Endianness::Big`, parse a big endian u128 integer,
+/// otherwise if `winnow::binary::Endianness::Little` parse a little endian u128 integer.
+///
+/// *Complete version*: returns an error if there is not enough input data
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::u128;
+///
+/// let be_u128 = |s| {
+/// u128(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_u128(&b"\x00\x01\x02\x03\x04\x05\x06\x07\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x00010203040506070001020304050607)));
+/// assert_eq!(be_u128(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+///
+/// let le_u128 = |s| {
+/// u128(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_u128(&b"\x00\x01\x02\x03\x04\x05\x06\x07\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x07060504030201000706050403020100)));
+/// assert_eq!(le_u128(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// # use winnow::Partial;
+/// use winnow::binary::u128;
+///
+/// let be_u128 = |s| {
+/// u128::<_, Error<_>>(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_u128(Partial::new(&b"\x00\x01\x02\x03\x04\x05\x06\x07\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..])), Ok((Partial::new(&b"abcefg"[..]), 0x00010203040506070001020304050607)));
+/// assert_eq!(be_u128(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(15))));
+///
+/// let le_u128 = |s| {
+/// u128::<_, Error<_>>(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_u128(Partial::new(&b"\x00\x01\x02\x03\x04\x05\x06\x07\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..])), Ok((Partial::new(&b"abcefg"[..]), 0x07060504030201000706050403020100)));
+/// assert_eq!(le_u128(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(15))));
+/// ```
+#[inline(always)]
+pub fn u128<I, E: ParseError<I>>(endian: Endianness) -> impl Parser<I, u128, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ move |input: I| {
+ match endian {
+ Endianness::Big => be_u128,
+ Endianness::Little => le_u128,
+ #[cfg(target_endian = "big")]
+ Endianness::Native => be_u128,
+ #[cfg(target_endian = "little")]
+ Endianness::Native => le_u128,
+ }
+ }(input)
+}
+
+/// Recognizes a signed 1 byte integer
+///
+/// **Note:** that endianness does not apply to 1 byte numbers.
+///
+/// *Complete version*: returns an error if there is not enough input data
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::i8;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], i8> {
+/// i8.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"\x00\x03abcefg"[..]), Ok((&b"\x03abcefg"[..], 0x00)));
+/// assert_eq!(parser(&b""[..]), Err(ErrMode::Backtrack(Error::new(&[][..], ErrorKind::Token))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// # use winnow::Partial;
+/// use winnow::binary::i8;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i8> {
+/// i8.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&b"\x00\x03abcefg"[..])), Ok((Partial::new(&b"\x03abcefg"[..]), 0x00)));
+/// assert_eq!(parser(Partial::new(&b""[..])), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn i8<I, E: ParseError<I>>(input: I) -> IResult<I, i8, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+{
+ trace("i8", move |input: I| {
+ if <I as StreamIsPartial>::is_partial_supported() {
+ u8_::<_, _, true>(input)
+ } else {
+ u8_::<_, _, false>(input)
+ }
+ .map(|(i, n)| (i, n as i8))
+ })
+ .parse_next(input)
+}
+
+/// Recognizes a signed 2 byte integer
+///
+/// If the parameter is `winnow::binary::Endianness::Big`, parse a big endian i16 integer,
+/// otherwise if `winnow::binary::Endianness::Little` parse a little endian i16 integer.
+///
+/// *Complete version*: returns an error if there is not enough input data
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::i16;
+///
+/// let be_i16 = |s| {
+/// i16(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_i16(&b"\x00\x03abcefg"[..]), Ok((&b"abcefg"[..], 0x0003)));
+/// assert_eq!(be_i16(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+///
+/// let le_i16 = |s| {
+/// i16(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_i16(&b"\x00\x03abcefg"[..]), Ok((&b"abcefg"[..], 0x0300)));
+/// assert_eq!(le_i16(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// # use winnow::Partial;
+/// use winnow::binary::i16;
+///
+/// let be_i16 = |s| {
+/// i16::<_, Error<_>>(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_i16(Partial::new(&b"\x00\x03abcefg"[..])), Ok((Partial::new(&b"abcefg"[..]), 0x0003)));
+/// assert_eq!(be_i16(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(1))));
+///
+/// let le_i16 = |s| {
+/// i16::<_, Error<_>>(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_i16(Partial::new(&b"\x00\x03abcefg"[..])), Ok((Partial::new(&b"abcefg"[..]), 0x0300)));
+/// assert_eq!(le_i16(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn i16<I, E: ParseError<I>>(endian: Endianness) -> impl Parser<I, i16, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ move |input: I| {
+ match endian {
+ Endianness::Big => be_i16,
+ Endianness::Little => le_i16,
+ #[cfg(target_endian = "big")]
+ Endianness::Native => be_i16,
+ #[cfg(target_endian = "little")]
+ Endianness::Native => le_i16,
+ }
+ }(input)
+}
+
+/// Recognizes a signed 3 byte integer
+///
+/// If the parameter is `winnow::binary::Endianness::Big`, parse a big endian i24 integer,
+/// otherwise if `winnow::binary::Endianness::Little` parse a little endian i24 integer.
+///
+/// *Complete version*: returns an error if there is not enough input data
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::i24;
+///
+/// let be_i24 = |s| {
+/// i24(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_i24(&b"\x00\x03\x05abcefg"[..]), Ok((&b"abcefg"[..], 0x000305)));
+/// assert_eq!(be_i24(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+///
+/// let le_i24 = |s| {
+/// i24(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_i24(&b"\x00\x03\x05abcefg"[..]), Ok((&b"abcefg"[..], 0x050300)));
+/// assert_eq!(le_i24(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// # use winnow::Partial;
+/// use winnow::binary::i24;
+///
+/// let be_i24 = |s| {
+/// i24::<_, Error<_>>(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_i24(Partial::new(&b"\x00\x03\x05abcefg"[..])), Ok((Partial::new(&b"abcefg"[..]), 0x000305)));
+/// assert_eq!(be_i24(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(2))));
+///
+/// let le_i24 = |s| {
+/// i24::<_, Error<_>>(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_i24(Partial::new(&b"\x00\x03\x05abcefg"[..])), Ok((Partial::new(&b"abcefg"[..]), 0x050300)));
+/// assert_eq!(le_i24(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(2))));
+/// ```
+#[inline(always)]
+pub fn i24<I, E: ParseError<I>>(endian: Endianness) -> impl Parser<I, i32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ move |input: I| {
+ match endian {
+ Endianness::Big => be_i24,
+ Endianness::Little => le_i24,
+ #[cfg(target_endian = "big")]
+ Endianness::Native => be_i24,
+ #[cfg(target_endian = "little")]
+ Endianness::Native => le_i24,
+ }
+ }(input)
+}
+
+/// Recognizes a signed 4 byte integer
+///
+/// If the parameter is `winnow::binary::Endianness::Big`, parse a big endian i32 integer,
+/// otherwise if `winnow::binary::Endianness::Little` parse a little endian i32 integer.
+///
+/// *Complete version*: returns an error if there is not enough input data
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::i32;
+///
+/// let be_i32 = |s| {
+/// i32(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_i32(&b"\x00\x03\x05\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x00030507)));
+/// assert_eq!(be_i32(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+///
+/// let le_i32 = |s| {
+/// i32(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_i32(&b"\x00\x03\x05\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x07050300)));
+/// assert_eq!(le_i32(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// # use winnow::Partial;
+/// use winnow::binary::i32;
+///
+/// let be_i32 = |s| {
+/// i32::<_, Error<_>>(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_i32(Partial::new(&b"\x00\x03\x05\x07abcefg"[..])), Ok((Partial::new(&b"abcefg"[..]), 0x00030507)));
+/// assert_eq!(be_i32(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(3))));
+///
+/// let le_i32 = |s| {
+/// i32::<_, Error<_>>(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_i32(Partial::new(&b"\x00\x03\x05\x07abcefg"[..])), Ok((Partial::new(&b"abcefg"[..]), 0x07050300)));
+/// assert_eq!(le_i32(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(3))));
+/// ```
+#[inline(always)]
+pub fn i32<I, E: ParseError<I>>(endian: Endianness) -> impl Parser<I, i32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ move |input: I| {
+ match endian {
+ Endianness::Big => be_i32,
+ Endianness::Little => le_i32,
+ #[cfg(target_endian = "big")]
+ Endianness::Native => be_i32,
+ #[cfg(target_endian = "little")]
+ Endianness::Native => le_i32,
+ }
+ }(input)
+}
+
+/// Recognizes a signed 8 byte integer
+///
+/// If the parameter is `winnow::binary::Endianness::Big`, parse a big endian i64 integer,
+/// otherwise if `winnow::binary::Endianness::Little` parse a little endian i64 integer.
+///
+/// *Complete version*: returns an error if there is not enough input data
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::i64;
+///
+/// let be_i64 = |s| {
+/// i64(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_i64(&b"\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x0001020304050607)));
+/// assert_eq!(be_i64(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+///
+/// let le_i64 = |s| {
+/// i64(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_i64(&b"\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x0706050403020100)));
+/// assert_eq!(le_i64(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// # use winnow::Partial;
+/// use winnow::binary::i64;
+///
+/// let be_i64 = |s| {
+/// i64::<_, Error<_>>(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_i64(Partial::new(&b"\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..])), Ok((Partial::new(&b"abcefg"[..]), 0x0001020304050607)));
+/// assert_eq!(be_i64(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(7))));
+///
+/// let le_i64 = |s| {
+/// i64::<_, Error<_>>(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_i64(Partial::new(&b"\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..])), Ok((Partial::new(&b"abcefg"[..]), 0x0706050403020100)));
+/// assert_eq!(le_i64(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(7))));
+/// ```
+#[inline(always)]
+pub fn i64<I, E: ParseError<I>>(endian: Endianness) -> impl Parser<I, i64, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ move |input: I| {
+ match endian {
+ Endianness::Big => be_i64,
+ Endianness::Little => le_i64,
+ #[cfg(target_endian = "big")]
+ Endianness::Native => be_i64,
+ #[cfg(target_endian = "little")]
+ Endianness::Native => le_i64,
+ }
+ }(input)
+}
+
+/// Recognizes a signed 16 byte integer
+///
+/// If the parameter is `winnow::binary::Endianness::Big`, parse a big endian i128 integer,
+/// otherwise if `winnow::binary::Endianness::Little` parse a little endian i128 integer.
+///
+/// *Complete version*: returns an error if there is not enough input data
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::i128;
+///
+/// let be_i128 = |s| {
+/// i128(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_i128(&b"\x00\x01\x02\x03\x04\x05\x06\x07\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x00010203040506070001020304050607)));
+/// assert_eq!(be_i128(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+///
+/// let le_i128 = |s| {
+/// i128(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_i128(&b"\x00\x01\x02\x03\x04\x05\x06\x07\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..]), Ok((&b"abcefg"[..], 0x07060504030201000706050403020100)));
+/// assert_eq!(le_i128(&b"\x01"[..]), Err(ErrMode::Backtrack(Error::new(&[0x01][..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// # use winnow::Partial;
+/// use winnow::binary::i128;
+///
+/// let be_i128 = |s| {
+/// i128::<_, Error<_>>(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_i128(Partial::new(&b"\x00\x01\x02\x03\x04\x05\x06\x07\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..])), Ok((Partial::new(&b"abcefg"[..]), 0x00010203040506070001020304050607)));
+/// assert_eq!(be_i128(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(15))));
+///
+/// let le_i128 = |s| {
+/// i128::<_, Error<_>>(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_i128(Partial::new(&b"\x00\x01\x02\x03\x04\x05\x06\x07\x00\x01\x02\x03\x04\x05\x06\x07abcefg"[..])), Ok((Partial::new(&b"abcefg"[..]), 0x07060504030201000706050403020100)));
+/// assert_eq!(le_i128(Partial::new(&b"\x01"[..])), Err(ErrMode::Incomplete(Needed::new(15))));
+/// ```
+#[inline(always)]
+pub fn i128<I, E: ParseError<I>>(endian: Endianness) -> impl Parser<I, i128, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ move |input: I| {
+ match endian {
+ Endianness::Big => be_i128,
+ Endianness::Little => le_i128,
+ #[cfg(target_endian = "big")]
+ Endianness::Native => be_i128,
+ #[cfg(target_endian = "little")]
+ Endianness::Native => le_i128,
+ }
+ }(input)
+}
+
+/// Recognizes a big endian 4 bytes floating point number.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::be_f32;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], f32> {
+/// be_f32.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&[0x41, 0x48, 0x00, 0x00][..]), Ok((&b""[..], 12.5)));
+/// assert_eq!(parser(&b"abc"[..]), Err(ErrMode::Backtrack(Error::new(&b"abc"[..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::be_f32;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, f32> {
+/// be_f32.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&[0x40, 0x29, 0x00, 0x00][..])), Ok((Partial::new(&b""[..]), 2.640625)));
+/// assert_eq!(parser(Partial::new(&[0x01][..])), Err(ErrMode::Incomplete(Needed::new(3))));
+/// ```
+#[inline(always)]
+pub fn be_f32<I, E: ParseError<I>>(input: I) -> IResult<I, f32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("be_f32", move |input: I| {
+ be_uint::<_, u32, _>(input, 4).map(|(i, n)| (i, f32::from_bits(n)))
+ })
+ .parse_next(input)
+}
+
+/// Recognizes a big endian 8 bytes floating point number.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::be_f64;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], f64> {
+/// be_f64.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&[0x40, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]), Ok((&b""[..], 12.5)));
+/// assert_eq!(parser(&b"abc"[..]), Err(ErrMode::Backtrack(Error::new(&b"abc"[..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::be_f64;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, f64> {
+/// be_f64::<_, Error<_>>.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&[0x40, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..])), Ok((Partial::new(&b""[..]), 12.5)));
+/// assert_eq!(parser(Partial::new(&[0x01][..])), Err(ErrMode::Incomplete(Needed::new(7))));
+/// ```
+#[inline(always)]
+pub fn be_f64<I, E: ParseError<I>>(input: I) -> IResult<I, f64, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("be_f64", move |input: I| {
+ be_uint::<_, u64, _>(input, 8).map(|(i, n)| (i, f64::from_bits(n)))
+ })
+ .parse_next(input)
+}
+
+/// Recognizes a little endian 4 bytes floating point number.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::le_f32;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], f32> {
+/// le_f32.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&[0x00, 0x00, 0x48, 0x41][..]), Ok((&b""[..], 12.5)));
+/// assert_eq!(parser(&b"abc"[..]), Err(ErrMode::Backtrack(Error::new(&b"abc"[..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::le_f32;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, f32> {
+/// le_f32::<_, Error<_>>.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&[0x00, 0x00, 0x48, 0x41][..])), Ok((Partial::new(&b""[..]), 12.5)));
+/// assert_eq!(parser(Partial::new(&[0x01][..])), Err(ErrMode::Incomplete(Needed::new(3))));
+/// ```
+#[inline(always)]
+pub fn le_f32<I, E: ParseError<I>>(input: I) -> IResult<I, f32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("le_f32", move |input: I| {
+ le_uint::<_, u32, _>(input, 4).map(|(i, n)| (i, f32::from_bits(n)))
+ })
+ .parse_next(input)
+}
+
+/// Recognizes a little endian 8 bytes floating point number.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::le_f64;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], f64> {
+/// le_f64.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x40][..]), Ok((&b""[..], 12.5)));
+/// assert_eq!(parser(&b"abc"[..]), Err(ErrMode::Backtrack(Error::new(&b"abc"[..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::binary::le_f64;
+///
+/// fn parser(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, f64> {
+/// le_f64::<_, Error<_>>.parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new(&[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41][..])), Ok((Partial::new(&b""[..]), 3145728.0)));
+/// assert_eq!(parser(Partial::new(&[0x01][..])), Err(ErrMode::Incomplete(Needed::new(7))));
+/// ```
+#[inline(always)]
+pub fn le_f64<I, E: ParseError<I>>(input: I) -> IResult<I, f64, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ trace("be_f64", move |input: I| {
+ le_uint::<_, u64, _>(input, 8).map(|(i, n)| (i, f64::from_bits(n)))
+ })
+ .parse_next(input)
+}
+
+/// Recognizes a 4 byte floating point number
+///
+/// If the parameter is `winnow::binary::Endianness::Big`, parse a big endian f32 float,
+/// otherwise if `winnow::binary::Endianness::Little` parse a little endian f32 float.
+///
+/// *Complete version*: returns an error if there is not enough input data
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::f32;
+///
+/// let be_f32 = |s| {
+/// f32(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_f32(&[0x41, 0x48, 0x00, 0x00][..]), Ok((&b""[..], 12.5)));
+/// assert_eq!(be_f32(&b"abc"[..]), Err(ErrMode::Backtrack(Error::new(&b"abc"[..], ErrorKind::Slice))));
+///
+/// let le_f32 = |s| {
+/// f32(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_f32(&[0x00, 0x00, 0x48, 0x41][..]), Ok((&b""[..], 12.5)));
+/// assert_eq!(le_f32(&b"abc"[..]), Err(ErrMode::Backtrack(Error::new(&b"abc"[..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// # use winnow::Partial;
+/// use winnow::binary::f32;
+///
+/// let be_f32 = |s| {
+/// f32::<_, Error<_>>(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_f32(Partial::new(&[0x41, 0x48, 0x00, 0x00][..])), Ok((Partial::new(&b""[..]), 12.5)));
+/// assert_eq!(be_f32(Partial::new(&b"abc"[..])), Err(ErrMode::Incomplete(Needed::new(1))));
+///
+/// let le_f32 = |s| {
+/// f32::<_, Error<_>>(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_f32(Partial::new(&[0x00, 0x00, 0x48, 0x41][..])), Ok((Partial::new(&b""[..]), 12.5)));
+/// assert_eq!(le_f32(Partial::new(&b"abc"[..])), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn f32<I, E: ParseError<I>>(endian: Endianness) -> impl Parser<I, f32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ move |input: I| {
+ match endian {
+ Endianness::Big => be_f32,
+ Endianness::Little => le_f32,
+ #[cfg(target_endian = "big")]
+ Endianness::Native => be_f32,
+ #[cfg(target_endian = "little")]
+ Endianness::Native => le_f32,
+ }
+ }(input)
+}
+
+/// Recognizes an 8 byte floating point number
+///
+/// If the parameter is `winnow::binary::Endianness::Big`, parse a big endian f64 float,
+/// otherwise if `winnow::binary::Endianness::Little` parse a little endian f64 float.
+///
+/// *Complete version*: returns an error if there is not enough input data
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::binary::f64;
+///
+/// let be_f64 = |s| {
+/// f64(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_f64(&[0x40, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]), Ok((&b""[..], 12.5)));
+/// assert_eq!(be_f64(&b"abc"[..]), Err(ErrMode::Backtrack(Error::new(&b"abc"[..], ErrorKind::Slice))));
+///
+/// let le_f64 = |s| {
+/// f64(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_f64(&[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x40][..]), Ok((&b""[..], 12.5)));
+/// assert_eq!(le_f64(&b"abc"[..]), Err(ErrMode::Backtrack(Error::new(&b"abc"[..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// # use winnow::Partial;
+/// use winnow::binary::f64;
+///
+/// let be_f64 = |s| {
+/// f64::<_, Error<_>>(winnow::binary::Endianness::Big).parse_next(s)
+/// };
+///
+/// assert_eq!(be_f64(Partial::new(&[0x40, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..])), Ok((Partial::new(&b""[..]), 12.5)));
+/// assert_eq!(be_f64(Partial::new(&b"abc"[..])), Err(ErrMode::Incomplete(Needed::new(5))));
+///
+/// let le_f64 = |s| {
+/// f64::<_, Error<_>>(winnow::binary::Endianness::Little).parse_next(s)
+/// };
+///
+/// assert_eq!(le_f64(Partial::new(&[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x40][..])), Ok((Partial::new(&b""[..]), 12.5)));
+/// assert_eq!(le_f64(Partial::new(&b"abc"[..])), Err(ErrMode::Incomplete(Needed::new(5))));
+/// ```
+#[inline(always)]
+pub fn f64<I, E: ParseError<I>>(endian: Endianness) -> impl Parser<I, f64, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ move |input: I| {
+ match endian {
+ Endianness::Big => be_f64,
+ Endianness::Little => le_f64,
+ #[cfg(target_endian = "big")]
+ Endianness::Native => be_f64,
+ #[cfg(target_endian = "little")]
+ Endianness::Native => le_f64,
+ }
+ }(input)
+}
+
+/// Gets a number from the parser and returns a
+/// subslice of the input of that size.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Arguments
+/// * `f` The parser to apply.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Needed, stream::Partial};
+/// # use winnow::prelude::*;
+/// use winnow::Bytes;
+/// use winnow::binary::be_u16;
+/// use winnow::binary::length_data;
+/// use winnow::token::tag;
+///
+/// type Stream<'i> = Partial<&'i Bytes>;
+///
+/// fn stream(b: &[u8]) -> Stream<'_> {
+/// Partial::new(Bytes::new(b))
+/// }
+///
+/// fn parser(s: Stream<'_>) -> IResult<Stream<'_>, &[u8]> {
+/// length_data(be_u16).parse_next(s)
+/// }
+///
+/// assert_eq!(parser(stream(b"\x00\x03abcefg")), Ok((stream(&b"efg"[..]), &b"abc"[..])));
+/// assert_eq!(parser(stream(b"\x00\x03a")), Err(ErrMode::Incomplete(Needed::new(2))));
+/// ```
+pub fn length_data<I, N, E, F>(mut f: F) -> impl Parser<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ N: ToUsize,
+ F: Parser<I, N, E>,
+ E: ParseError<I>,
+{
+ trace("length_data", move |i: I| {
+ let (i, length) = f.parse_next(i)?;
+
+ crate::token::take(length).parse_next(i)
+ })
+}
+
+/// Gets a number from the first parser,
+/// takes a subslice of the input of that size,
+/// then applies the second parser on that subslice.
+/// If the second parser returns `Incomplete`,
+/// `length_value` will return an error.
+///
+/// *Complete version*: Returns an error if there is not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there is not enough data.
+///
+/// # Arguments
+/// * `f` The parser to apply.
+/// * `g` The parser to apply on the subslice.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed, stream::{Partial, StreamIsPartial}};
+/// # use winnow::prelude::*;
+/// use winnow::Bytes;
+/// use winnow::binary::be_u16;
+/// use winnow::binary::length_value;
+/// use winnow::token::tag;
+///
+/// type Stream<'i> = Partial<&'i Bytes>;
+///
+/// fn stream(b: &[u8]) -> Stream<'_> {
+/// Partial::new(Bytes::new(b))
+/// }
+///
+/// fn complete_stream(b: &[u8]) -> Stream<'_> {
+/// let mut p = Partial::new(Bytes::new(b));
+/// let _ = p.complete();
+/// p
+/// }
+///
+/// fn parser(s: Stream<'_>) -> IResult<Stream<'_>, &[u8]> {
+/// length_value(be_u16, "abc").parse_next(s)
+/// }
+///
+/// assert_eq!(parser(stream(b"\x00\x03abcefg")), Ok((stream(&b"efg"[..]), &b"abc"[..])));
+/// assert_eq!(parser(stream(b"\x00\x03123123")), Err(ErrMode::Backtrack(Error::new(complete_stream(&b"123"[..]), ErrorKind::Tag))));
+/// assert_eq!(parser(stream(b"\x00\x03a")), Err(ErrMode::Incomplete(Needed::new(2))));
+/// ```
+pub fn length_value<I, O, N, E, F, G>(mut f: F, mut g: G) -> impl Parser<I, O, E>
+where
+ I: StreamIsPartial,
+ I: Stream + UpdateSlice,
+ N: ToUsize,
+ F: Parser<I, N, E>,
+ G: Parser<I, O, E>,
+ E: ParseError<I>,
+{
+ trace("length_value", move |i: I| {
+ let (i, data) = length_data(f.by_ref()).parse_next(i)?;
+ let mut data = I::update_slice(i.clone(), data);
+ let _ = data.complete();
+ let (_, o) = g.by_ref().complete_err().parse_next(data)?;
+ Ok((i, o))
+ })
+}
+
+/// Gets a number from the first parser,
+/// then applies the second parser that many times.
+///
+/// # Arguments
+/// * `f` The parser to apply to obtain the count.
+/// * `g` The parser to apply repeatedly.
+///
+/// # Example
+///
+/// ```rust
+/// # #[cfg(feature = "std")] {
+/// # use winnow::prelude::*;
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::Bytes;
+/// use winnow::binary::u8;
+/// use winnow::binary::length_count;
+/// use winnow::token::tag;
+///
+/// type Stream<'i> = &'i Bytes;
+///
+/// fn stream(b: &[u8]) -> Stream<'_> {
+/// Bytes::new(b)
+/// }
+///
+/// fn parser(s: Stream<'_>) -> IResult<Stream<'_>, Vec<&[u8]>> {
+/// length_count(u8.map(|i| {
+/// println!("got number: {}", i);
+/// i
+/// }), "abc").parse_next(s)
+/// }
+///
+/// assert_eq!(parser(stream(b"\x02abcabcabc")), Ok((stream(b"abc"), vec![&b"abc"[..], &b"abc"[..]])));
+/// assert_eq!(parser(stream(b"\x03123123123")), Err(ErrMode::Backtrack(Error::new(stream(b"123123123"), ErrorKind::Tag))));
+/// # }
+/// ```
+pub fn length_count<I, O, C, N, E, F, G>(mut f: F, mut g: G) -> impl Parser<I, C, E>
+where
+ I: Stream,
+ N: ToUsize,
+ C: Accumulate<O>,
+ F: Parser<I, N, E>,
+ G: Parser<I, O, E>,
+ E: ParseError<I>,
+{
+ trace("length_count", move |i: I| {
+ let (i, n) = f.parse_next(i)?;
+ let n = n.to_usize();
+ repeat(n, g.by_ref()).parse_next(i)
+ })
+}
diff --git a/vendor/winnow-0.4.7/src/binary/tests.rs b/vendor/winnow-0.4.7/src/binary/tests.rs
new file mode 100644
index 000000000..4307d88fe
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/binary/tests.rs
@@ -0,0 +1,1214 @@
+use super::*;
+
+mod complete {
+ use super::*;
+ use crate::error::Error;
+
+ macro_rules! assert_parse(
+ ($left: expr, $right: expr) => {
+ let res: $crate::IResult<_, _, Error<_>> = $left;
+ assert_eq!(res, $right);
+ };
+ );
+
+ #[test]
+ fn i8_tests() {
+ assert_parse!(i8(&[0x00][..]), Ok((&b""[..], 0)));
+ assert_parse!(i8(&[0x7f][..]), Ok((&b""[..], 127)));
+ assert_parse!(i8(&[0xff][..]), Ok((&b""[..], -1)));
+ assert_parse!(i8(&[0x80][..]), Ok((&b""[..], -128)));
+ }
+
+ #[test]
+ fn be_i8_tests() {
+ assert_parse!(be_i8(&[0x00][..]), Ok((&b""[..], 0)));
+ assert_parse!(be_i8(&[0x7f][..]), Ok((&b""[..], 127)));
+ assert_parse!(be_i8(&[0xff][..]), Ok((&b""[..], -1)));
+ assert_parse!(be_i8(&[0x80][..]), Ok((&b""[..], -128)));
+ }
+
+ #[test]
+ fn be_i16_tests() {
+ assert_parse!(be_i16(&[0x00, 0x00][..]), Ok((&b""[..], 0)));
+ assert_parse!(be_i16(&[0x7f, 0xff][..]), Ok((&b""[..], 32_767_i16)));
+ assert_parse!(be_i16(&[0xff, 0xff][..]), Ok((&b""[..], -1)));
+ assert_parse!(be_i16(&[0x80, 0x00][..]), Ok((&b""[..], -32_768_i16)));
+ }
+
+ #[test]
+ fn be_u24_tests() {
+ assert_parse!(be_u24(&[0x00, 0x00, 0x00][..]), Ok((&b""[..], 0)));
+ assert_parse!(be_u24(&[0x00, 0xFF, 0xFF][..]), Ok((&b""[..], 65_535_u32)));
+ assert_parse!(
+ be_u24(&[0x12, 0x34, 0x56][..]),
+ Ok((&b""[..], 1_193_046_u32))
+ );
+ }
+
+ #[test]
+ fn be_i24_tests() {
+ assert_parse!(be_i24(&[0xFF, 0xFF, 0xFF][..]), Ok((&b""[..], -1_i32)));
+ assert_parse!(be_i24(&[0xFF, 0x00, 0x00][..]), Ok((&b""[..], -65_536_i32)));
+ assert_parse!(
+ be_i24(&[0xED, 0xCB, 0xAA][..]),
+ Ok((&b""[..], -1_193_046_i32))
+ );
+ }
+
+ #[test]
+ fn be_i32_tests() {
+ assert_parse!(be_i32(&[0x00, 0x00, 0x00, 0x00][..]), Ok((&b""[..], 0)));
+ assert_parse!(
+ be_i32(&[0x7f, 0xff, 0xff, 0xff][..]),
+ Ok((&b""[..], 2_147_483_647_i32))
+ );
+ assert_parse!(be_i32(&[0xff, 0xff, 0xff, 0xff][..]), Ok((&b""[..], -1)));
+ assert_parse!(
+ be_i32(&[0x80, 0x00, 0x00, 0x00][..]),
+ Ok((&b""[..], -2_147_483_648_i32))
+ );
+ }
+
+ #[test]
+ fn be_i64_tests() {
+ assert_parse!(
+ be_i64(&[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]),
+ Ok((&b""[..], 0))
+ );
+ assert_parse!(
+ be_i64(&[0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff][..]),
+ Ok((&b""[..], 9_223_372_036_854_775_807_i64))
+ );
+ assert_parse!(
+ be_i64(&[0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff][..]),
+ Ok((&b""[..], -1))
+ );
+ assert_parse!(
+ be_i64(&[0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]),
+ Ok((&b""[..], -9_223_372_036_854_775_808_i64))
+ );
+ }
+
+ #[test]
+ fn be_i128_tests() {
+ assert_parse!(
+ be_i128(
+ &[
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00
+ ][..]
+ ),
+ Ok((&b""[..], 0))
+ );
+ assert_parse!(
+ be_i128(
+ &[
+ 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff
+ ][..]
+ ),
+ Ok((
+ &b""[..],
+ 170_141_183_460_469_231_731_687_303_715_884_105_727_i128
+ ))
+ );
+ assert_parse!(
+ be_i128(
+ &[
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff
+ ][..]
+ ),
+ Ok((&b""[..], -1))
+ );
+ assert_parse!(
+ be_i128(
+ &[
+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00
+ ][..]
+ ),
+ Ok((
+ &b""[..],
+ -170_141_183_460_469_231_731_687_303_715_884_105_728_i128
+ ))
+ );
+ }
+
+ #[test]
+ fn le_i8_tests() {
+ assert_parse!(le_i8(&[0x00][..]), Ok((&b""[..], 0)));
+ assert_parse!(le_i8(&[0x7f][..]), Ok((&b""[..], 127)));
+ assert_parse!(le_i8(&[0xff][..]), Ok((&b""[..], -1)));
+ assert_parse!(le_i8(&[0x80][..]), Ok((&b""[..], -128)));
+ }
+
+ #[test]
+ fn le_i16_tests() {
+ assert_parse!(le_i16(&[0x00, 0x00][..]), Ok((&b""[..], 0)));
+ assert_parse!(le_i16(&[0xff, 0x7f][..]), Ok((&b""[..], 32_767_i16)));
+ assert_parse!(le_i16(&[0xff, 0xff][..]), Ok((&b""[..], -1)));
+ assert_parse!(le_i16(&[0x00, 0x80][..]), Ok((&b""[..], -32_768_i16)));
+ }
+
+ #[test]
+ fn le_u24_tests() {
+ assert_parse!(le_u24(&[0x00, 0x00, 0x00][..]), Ok((&b""[..], 0)));
+ assert_parse!(le_u24(&[0xFF, 0xFF, 0x00][..]), Ok((&b""[..], 65_535_u32)));
+ assert_parse!(
+ le_u24(&[0x56, 0x34, 0x12][..]),
+ Ok((&b""[..], 1_193_046_u32))
+ );
+ }
+
+ #[test]
+ fn le_i24_tests() {
+ assert_parse!(le_i24(&[0xFF, 0xFF, 0xFF][..]), Ok((&b""[..], -1_i32)));
+ assert_parse!(le_i24(&[0x00, 0x00, 0xFF][..]), Ok((&b""[..], -65_536_i32)));
+ assert_parse!(
+ le_i24(&[0xAA, 0xCB, 0xED][..]),
+ Ok((&b""[..], -1_193_046_i32))
+ );
+ }
+
+ #[test]
+ fn le_i32_tests() {
+ assert_parse!(le_i32(&[0x00, 0x00, 0x00, 0x00][..]), Ok((&b""[..], 0)));
+ assert_parse!(
+ le_i32(&[0xff, 0xff, 0xff, 0x7f][..]),
+ Ok((&b""[..], 2_147_483_647_i32))
+ );
+ assert_parse!(le_i32(&[0xff, 0xff, 0xff, 0xff][..]), Ok((&b""[..], -1)));
+ assert_parse!(
+ le_i32(&[0x00, 0x00, 0x00, 0x80][..]),
+ Ok((&b""[..], -2_147_483_648_i32))
+ );
+ }
+
+ #[test]
+ fn le_i64_tests() {
+ assert_parse!(
+ le_i64(&[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]),
+ Ok((&b""[..], 0))
+ );
+ assert_parse!(
+ le_i64(&[0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f][..]),
+ Ok((&b""[..], 9_223_372_036_854_775_807_i64))
+ );
+ assert_parse!(
+ le_i64(&[0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff][..]),
+ Ok((&b""[..], -1))
+ );
+ assert_parse!(
+ le_i64(&[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80][..]),
+ Ok((&b""[..], -9_223_372_036_854_775_808_i64))
+ );
+ }
+
+ #[test]
+ fn le_i128_tests() {
+ assert_parse!(
+ le_i128(
+ &[
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00
+ ][..]
+ ),
+ Ok((&b""[..], 0))
+ );
+ assert_parse!(
+ le_i128(
+ &[
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0x7f
+ ][..]
+ ),
+ Ok((
+ &b""[..],
+ 170_141_183_460_469_231_731_687_303_715_884_105_727_i128
+ ))
+ );
+ assert_parse!(
+ le_i128(
+ &[
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff
+ ][..]
+ ),
+ Ok((&b""[..], -1))
+ );
+ assert_parse!(
+ le_i128(
+ &[
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80
+ ][..]
+ ),
+ Ok((
+ &b""[..],
+ -170_141_183_460_469_231_731_687_303_715_884_105_728_i128
+ ))
+ );
+ }
+
+ #[test]
+ fn be_f32_tests() {
+ assert_parse!(be_f32(&[0x00, 0x00, 0x00, 0x00][..]), Ok((&b""[..], 0_f32)));
+ assert_parse!(
+ be_f32(&[0x4d, 0x31, 0x1f, 0xd8][..]),
+ Ok((&b""[..], 185_728_380_f32))
+ );
+ }
+
+ #[test]
+ fn be_f64_tests() {
+ assert_parse!(
+ be_f64(&[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]),
+ Ok((&b""[..], 0_f64))
+ );
+ assert_parse!(
+ be_f64(&[0x41, 0xa6, 0x23, 0xfb, 0x10, 0x00, 0x00, 0x00][..]),
+ Ok((&b""[..], 185_728_392_f64))
+ );
+ }
+
+ #[test]
+ fn le_f32_tests() {
+ assert_parse!(le_f32(&[0x00, 0x00, 0x00, 0x00][..]), Ok((&b""[..], 0_f32)));
+ assert_parse!(
+ le_f32(&[0xd8, 0x1f, 0x31, 0x4d][..]),
+ Ok((&b""[..], 185_728_380_f32))
+ );
+ }
+
+ #[test]
+ fn le_f64_tests() {
+ assert_parse!(
+ le_f64(&[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]),
+ Ok((&b""[..], 0_f64))
+ );
+ assert_parse!(
+ le_f64(&[0x00, 0x00, 0x00, 0x10, 0xfb, 0x23, 0xa6, 0x41][..]),
+ Ok((&b""[..], 185_728_392_f64))
+ );
+ }
+
+ #[test]
+ fn configurable_endianness() {
+ use crate::binary::Endianness;
+
+ fn be_tst16(i: &[u8]) -> IResult<&[u8], u16> {
+ u16(Endianness::Big).parse_next(i)
+ }
+ fn le_tst16(i: &[u8]) -> IResult<&[u8], u16> {
+ u16(Endianness::Little).parse_next(i)
+ }
+ assert_eq!(be_tst16(&[0x80, 0x00]), Ok((&b""[..], 32_768_u16)));
+ assert_eq!(le_tst16(&[0x80, 0x00]), Ok((&b""[..], 128_u16)));
+
+ fn be_tst32(i: &[u8]) -> IResult<&[u8], u32> {
+ u32(Endianness::Big).parse_next(i)
+ }
+ fn le_tst32(i: &[u8]) -> IResult<&[u8], u32> {
+ u32(Endianness::Little).parse_next(i)
+ }
+ assert_eq!(
+ be_tst32(&[0x12, 0x00, 0x60, 0x00]),
+ Ok((&b""[..], 302_014_464_u32))
+ );
+ assert_eq!(
+ le_tst32(&[0x12, 0x00, 0x60, 0x00]),
+ Ok((&b""[..], 6_291_474_u32))
+ );
+
+ fn be_tst64(i: &[u8]) -> IResult<&[u8], u64> {
+ u64(Endianness::Big).parse_next(i)
+ }
+ fn le_tst64(i: &[u8]) -> IResult<&[u8], u64> {
+ u64(Endianness::Little).parse_next(i)
+ }
+ assert_eq!(
+ be_tst64(&[0x12, 0x00, 0x60, 0x00, 0x12, 0x00, 0x80, 0x00]),
+ Ok((&b""[..], 1_297_142_246_100_992_000_u64))
+ );
+ assert_eq!(
+ le_tst64(&[0x12, 0x00, 0x60, 0x00, 0x12, 0x00, 0x80, 0x00]),
+ Ok((&b""[..], 36_028_874_334_666_770_u64))
+ );
+
+ fn be_tsti16(i: &[u8]) -> IResult<&[u8], i16> {
+ i16(Endianness::Big).parse_next(i)
+ }
+ fn le_tsti16(i: &[u8]) -> IResult<&[u8], i16> {
+ i16(Endianness::Little).parse_next(i)
+ }
+ assert_eq!(be_tsti16(&[0x00, 0x80]), Ok((&b""[..], 128_i16)));
+ assert_eq!(le_tsti16(&[0x00, 0x80]), Ok((&b""[..], -32_768_i16)));
+
+ fn be_tsti32(i: &[u8]) -> IResult<&[u8], i32> {
+ i32(Endianness::Big).parse_next(i)
+ }
+ fn le_tsti32(i: &[u8]) -> IResult<&[u8], i32> {
+ i32(Endianness::Little).parse_next(i)
+ }
+ assert_eq!(
+ be_tsti32(&[0x00, 0x12, 0x60, 0x00]),
+ Ok((&b""[..], 1_204_224_i32))
+ );
+ assert_eq!(
+ le_tsti32(&[0x00, 0x12, 0x60, 0x00]),
+ Ok((&b""[..], 6_296_064_i32))
+ );
+
+ fn be_tsti64(i: &[u8]) -> IResult<&[u8], i64> {
+ i64(Endianness::Big).parse_next(i)
+ }
+ fn le_tsti64(i: &[u8]) -> IResult<&[u8], i64> {
+ i64(Endianness::Little).parse_next(i)
+ }
+ assert_eq!(
+ be_tsti64(&[0x00, 0xFF, 0x60, 0x00, 0x12, 0x00, 0x80, 0x00]),
+ Ok((&b""[..], 71_881_672_479_506_432_i64))
+ );
+ assert_eq!(
+ le_tsti64(&[0x00, 0xFF, 0x60, 0x00, 0x12, 0x00, 0x80, 0x00]),
+ Ok((&b""[..], 36_028_874_334_732_032_i64))
+ );
+ }
+}
+
+mod partial {
+ use super::*;
+ use crate::error::ErrMode;
+ use crate::error::Error;
+ use crate::error::Needed;
+ #[cfg(feature = "alloc")]
+ use crate::lib::std::vec::Vec;
+ use crate::Partial;
+ use crate::{
+ ascii::digit1 as digit,
+ binary::{be_u16, be_u8},
+ error::ErrorKind,
+ lib::std::str::{self, FromStr},
+ IResult,
+ };
+
+ macro_rules! assert_parse(
+ ($left: expr, $right: expr) => {
+ let res: $crate::IResult<_, _, Error<_>> = $left;
+ assert_eq!(res, $right);
+ };
+ );
+
+ #[test]
+ fn i8_tests() {
+ assert_parse!(
+ be_i8(Partial::new(&[0x00][..])),
+ Ok((Partial::new(&b""[..]), 0))
+ );
+ assert_parse!(
+ be_i8(Partial::new(&[0x7f][..])),
+ Ok((Partial::new(&b""[..]), 127))
+ );
+ assert_parse!(
+ be_i8(Partial::new(&[0xff][..])),
+ Ok((Partial::new(&b""[..]), -1))
+ );
+ assert_parse!(
+ be_i8(Partial::new(&[0x80][..])),
+ Ok((Partial::new(&b""[..]), -128))
+ );
+ assert_parse!(
+ be_i8(Partial::new(&[][..])),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ }
+
+ #[test]
+ fn i16_tests() {
+ assert_parse!(
+ be_i16(Partial::new(&[0x00, 0x00][..])),
+ Ok((Partial::new(&b""[..]), 0))
+ );
+ assert_parse!(
+ be_i16(Partial::new(&[0x7f, 0xff][..])),
+ Ok((Partial::new(&b""[..]), 32_767_i16))
+ );
+ assert_parse!(
+ be_i16(Partial::new(&[0xff, 0xff][..])),
+ Ok((Partial::new(&b""[..]), -1))
+ );
+ assert_parse!(
+ be_i16(Partial::new(&[0x80, 0x00][..])),
+ Ok((Partial::new(&b""[..]), -32_768_i16))
+ );
+ assert_parse!(
+ be_i16(Partial::new(&[][..])),
+ Err(ErrMode::Incomplete(Needed::new(2)))
+ );
+ assert_parse!(
+ be_i16(Partial::new(&[0x00][..])),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ }
+
+ #[test]
+ fn u24_tests() {
+ assert_parse!(
+ be_u24(Partial::new(&[0x00, 0x00, 0x00][..])),
+ Ok((Partial::new(&b""[..]), 0))
+ );
+ assert_parse!(
+ be_u24(Partial::new(&[0x00, 0xFF, 0xFF][..])),
+ Ok((Partial::new(&b""[..]), 65_535_u32))
+ );
+ assert_parse!(
+ be_u24(Partial::new(&[0x12, 0x34, 0x56][..])),
+ Ok((Partial::new(&b""[..]), 1_193_046_u32))
+ );
+ assert_parse!(
+ be_u24(Partial::new(&[][..])),
+ Err(ErrMode::Incomplete(Needed::new(3)))
+ );
+ assert_parse!(
+ be_u24(Partial::new(&[0x00][..])),
+ Err(ErrMode::Incomplete(Needed::new(2)))
+ );
+ assert_parse!(
+ be_u24(Partial::new(&[0x00, 0x00][..])),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ }
+
+ #[test]
+ fn i24_tests() {
+ assert_parse!(
+ be_i24(Partial::new(&[0xFF, 0xFF, 0xFF][..])),
+ Ok((Partial::new(&b""[..]), -1_i32))
+ );
+ assert_parse!(
+ be_i24(Partial::new(&[0xFF, 0x00, 0x00][..])),
+ Ok((Partial::new(&b""[..]), -65_536_i32))
+ );
+ assert_parse!(
+ be_i24(Partial::new(&[0xED, 0xCB, 0xAA][..])),
+ Ok((Partial::new(&b""[..]), -1_193_046_i32))
+ );
+ assert_parse!(
+ be_i24(Partial::new(&[][..])),
+ Err(ErrMode::Incomplete(Needed::new(3)))
+ );
+ assert_parse!(
+ be_i24(Partial::new(&[0x00][..])),
+ Err(ErrMode::Incomplete(Needed::new(2)))
+ );
+ assert_parse!(
+ be_i24(Partial::new(&[0x00, 0x00][..])),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ }
+
+ #[test]
+ fn i32_tests() {
+ assert_parse!(
+ be_i32(Partial::new(&[0x00, 0x00, 0x00, 0x00][..])),
+ Ok((Partial::new(&b""[..]), 0))
+ );
+ assert_parse!(
+ be_i32(Partial::new(&[0x7f, 0xff, 0xff, 0xff][..])),
+ Ok((Partial::new(&b""[..]), 2_147_483_647_i32))
+ );
+ assert_parse!(
+ be_i32(Partial::new(&[0xff, 0xff, 0xff, 0xff][..])),
+ Ok((Partial::new(&b""[..]), -1))
+ );
+ assert_parse!(
+ be_i32(Partial::new(&[0x80, 0x00, 0x00, 0x00][..])),
+ Ok((Partial::new(&b""[..]), -2_147_483_648_i32))
+ );
+ assert_parse!(
+ be_i32(Partial::new(&[][..])),
+ Err(ErrMode::Incomplete(Needed::new(4)))
+ );
+ assert_parse!(
+ be_i32(Partial::new(&[0x00][..])),
+ Err(ErrMode::Incomplete(Needed::new(3)))
+ );
+ assert_parse!(
+ be_i32(Partial::new(&[0x00, 0x00][..])),
+ Err(ErrMode::Incomplete(Needed::new(2)))
+ );
+ assert_parse!(
+ be_i32(Partial::new(&[0x00, 0x00, 0x00][..])),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ }
+
+ #[test]
+ fn i64_tests() {
+ assert_parse!(
+ be_i64(Partial::new(
+ &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]
+ )),
+ Ok((Partial::new(&b""[..]), 0))
+ );
+ assert_parse!(
+ be_i64(Partial::new(
+ &[0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff][..]
+ )),
+ Ok((Partial::new(&b""[..]), 9_223_372_036_854_775_807_i64))
+ );
+ assert_parse!(
+ be_i64(Partial::new(
+ &[0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff][..]
+ )),
+ Ok((Partial::new(&b""[..]), -1))
+ );
+ assert_parse!(
+ be_i64(Partial::new(
+ &[0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]
+ )),
+ Ok((Partial::new(&b""[..]), -9_223_372_036_854_775_808_i64))
+ );
+ assert_parse!(
+ be_i64(Partial::new(&[][..])),
+ Err(ErrMode::Incomplete(Needed::new(8)))
+ );
+ assert_parse!(
+ be_i64(Partial::new(&[0x00][..])),
+ Err(ErrMode::Incomplete(Needed::new(7)))
+ );
+ assert_parse!(
+ be_i64(Partial::new(&[0x00, 0x00][..])),
+ Err(ErrMode::Incomplete(Needed::new(6)))
+ );
+ assert_parse!(
+ be_i64(Partial::new(&[0x00, 0x00, 0x00][..])),
+ Err(ErrMode::Incomplete(Needed::new(5)))
+ );
+ assert_parse!(
+ be_i64(Partial::new(&[0x00, 0x00, 0x00, 0x00][..])),
+ Err(ErrMode::Incomplete(Needed::new(4)))
+ );
+ assert_parse!(
+ be_i64(Partial::new(&[0x00, 0x00, 0x00, 0x00, 0x00][..])),
+ Err(ErrMode::Incomplete(Needed::new(3)))
+ );
+ assert_parse!(
+ be_i64(Partial::new(&[0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..])),
+ Err(ErrMode::Incomplete(Needed::new(2)))
+ );
+ assert_parse!(
+ be_i64(Partial::new(
+ &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]
+ )),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ }
+
+ #[test]
+ fn i128_tests() {
+ assert_parse!(
+ be_i128(Partial::new(
+ &[
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00
+ ][..]
+ )),
+ Ok((Partial::new(&b""[..]), 0))
+ );
+ assert_parse!(
+ be_i128(Partial::new(
+ &[
+ 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff
+ ][..]
+ )),
+ Ok((
+ Partial::new(&b""[..]),
+ 170_141_183_460_469_231_731_687_303_715_884_105_727_i128
+ ))
+ );
+ assert_parse!(
+ be_i128(Partial::new(
+ &[
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff
+ ][..]
+ )),
+ Ok((Partial::new(&b""[..]), -1))
+ );
+ assert_parse!(
+ be_i128(Partial::new(
+ &[
+ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00
+ ][..]
+ )),
+ Ok((
+ Partial::new(&b""[..]),
+ -170_141_183_460_469_231_731_687_303_715_884_105_728_i128
+ ))
+ );
+ assert_parse!(
+ be_i128(Partial::new(&[][..])),
+ Err(ErrMode::Incomplete(Needed::new(16)))
+ );
+ assert_parse!(
+ be_i128(Partial::new(&[0x00][..])),
+ Err(ErrMode::Incomplete(Needed::new(15)))
+ );
+ assert_parse!(
+ be_i128(Partial::new(&[0x00, 0x00][..])),
+ Err(ErrMode::Incomplete(Needed::new(14)))
+ );
+ assert_parse!(
+ be_i128(Partial::new(&[0x00, 0x00, 0x00][..])),
+ Err(ErrMode::Incomplete(Needed::new(13)))
+ );
+ assert_parse!(
+ be_i128(Partial::new(&[0x00, 0x00, 0x00, 0x00][..])),
+ Err(ErrMode::Incomplete(Needed::new(12)))
+ );
+ assert_parse!(
+ be_i128(Partial::new(&[0x00, 0x00, 0x00, 0x00, 0x00][..])),
+ Err(ErrMode::Incomplete(Needed::new(11)))
+ );
+ assert_parse!(
+ be_i128(Partial::new(&[0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..])),
+ Err(ErrMode::Incomplete(Needed::new(10)))
+ );
+ assert_parse!(
+ be_i128(Partial::new(
+ &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]
+ )),
+ Err(ErrMode::Incomplete(Needed::new(9)))
+ );
+ assert_parse!(
+ be_i128(Partial::new(
+ &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]
+ )),
+ Err(ErrMode::Incomplete(Needed::new(8)))
+ );
+ assert_parse!(
+ be_i128(Partial::new(
+ &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]
+ )),
+ Err(ErrMode::Incomplete(Needed::new(7)))
+ );
+ assert_parse!(
+ be_i128(Partial::new(
+ &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]
+ )),
+ Err(ErrMode::Incomplete(Needed::new(6)))
+ );
+ assert_parse!(
+ be_i128(Partial::new(
+ &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]
+ )),
+ Err(ErrMode::Incomplete(Needed::new(5)))
+ );
+ assert_parse!(
+ be_i128(Partial::new(
+ &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]
+ )),
+ Err(ErrMode::Incomplete(Needed::new(4)))
+ );
+ assert_parse!(
+ be_i128(Partial::new(
+ &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]
+ )),
+ Err(ErrMode::Incomplete(Needed::new(3)))
+ );
+ assert_parse!(
+ be_i128(Partial::new(
+ &[
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00
+ ][..]
+ )),
+ Err(ErrMode::Incomplete(Needed::new(2)))
+ );
+ assert_parse!(
+ be_i128(Partial::new(
+ &[
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00
+ ][..]
+ )),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ }
+
+ #[test]
+ fn le_i8_tests() {
+ assert_parse!(
+ le_i8(Partial::new(&[0x00][..])),
+ Ok((Partial::new(&b""[..]), 0))
+ );
+ assert_parse!(
+ le_i8(Partial::new(&[0x7f][..])),
+ Ok((Partial::new(&b""[..]), 127))
+ );
+ assert_parse!(
+ le_i8(Partial::new(&[0xff][..])),
+ Ok((Partial::new(&b""[..]), -1))
+ );
+ assert_parse!(
+ le_i8(Partial::new(&[0x80][..])),
+ Ok((Partial::new(&b""[..]), -128))
+ );
+ }
+
+ #[test]
+ fn le_i16_tests() {
+ assert_parse!(
+ le_i16(Partial::new(&[0x00, 0x00][..])),
+ Ok((Partial::new(&b""[..]), 0))
+ );
+ assert_parse!(
+ le_i16(Partial::new(&[0xff, 0x7f][..])),
+ Ok((Partial::new(&b""[..]), 32_767_i16))
+ );
+ assert_parse!(
+ le_i16(Partial::new(&[0xff, 0xff][..])),
+ Ok((Partial::new(&b""[..]), -1))
+ );
+ assert_parse!(
+ le_i16(Partial::new(&[0x00, 0x80][..])),
+ Ok((Partial::new(&b""[..]), -32_768_i16))
+ );
+ }
+
+ #[test]
+ fn le_u24_tests() {
+ assert_parse!(
+ le_u24(Partial::new(&[0x00, 0x00, 0x00][..])),
+ Ok((Partial::new(&b""[..]), 0))
+ );
+ assert_parse!(
+ le_u24(Partial::new(&[0xFF, 0xFF, 0x00][..])),
+ Ok((Partial::new(&b""[..]), 65_535_u32))
+ );
+ assert_parse!(
+ le_u24(Partial::new(&[0x56, 0x34, 0x12][..])),
+ Ok((Partial::new(&b""[..]), 1_193_046_u32))
+ );
+ }
+
+ #[test]
+ fn le_i24_tests() {
+ assert_parse!(
+ le_i24(Partial::new(&[0xFF, 0xFF, 0xFF][..])),
+ Ok((Partial::new(&b""[..]), -1_i32))
+ );
+ assert_parse!(
+ le_i24(Partial::new(&[0x00, 0x00, 0xFF][..])),
+ Ok((Partial::new(&b""[..]), -65_536_i32))
+ );
+ assert_parse!(
+ le_i24(Partial::new(&[0xAA, 0xCB, 0xED][..])),
+ Ok((Partial::new(&b""[..]), -1_193_046_i32))
+ );
+ }
+
+ #[test]
+ fn le_i32_tests() {
+ assert_parse!(
+ le_i32(Partial::new(&[0x00, 0x00, 0x00, 0x00][..])),
+ Ok((Partial::new(&b""[..]), 0))
+ );
+ assert_parse!(
+ le_i32(Partial::new(&[0xff, 0xff, 0xff, 0x7f][..])),
+ Ok((Partial::new(&b""[..]), 2_147_483_647_i32))
+ );
+ assert_parse!(
+ le_i32(Partial::new(&[0xff, 0xff, 0xff, 0xff][..])),
+ Ok((Partial::new(&b""[..]), -1))
+ );
+ assert_parse!(
+ le_i32(Partial::new(&[0x00, 0x00, 0x00, 0x80][..])),
+ Ok((Partial::new(&b""[..]), -2_147_483_648_i32))
+ );
+ }
+
+ #[test]
+ fn le_i64_tests() {
+ assert_parse!(
+ le_i64(Partial::new(
+ &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]
+ )),
+ Ok((Partial::new(&b""[..]), 0))
+ );
+ assert_parse!(
+ le_i64(Partial::new(
+ &[0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f][..]
+ )),
+ Ok((Partial::new(&b""[..]), 9_223_372_036_854_775_807_i64))
+ );
+ assert_parse!(
+ le_i64(Partial::new(
+ &[0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff][..]
+ )),
+ Ok((Partial::new(&b""[..]), -1))
+ );
+ assert_parse!(
+ le_i64(Partial::new(
+ &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80][..]
+ )),
+ Ok((Partial::new(&b""[..]), -9_223_372_036_854_775_808_i64))
+ );
+ }
+
+ #[test]
+ fn le_i128_tests() {
+ assert_parse!(
+ le_i128(Partial::new(
+ &[
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00
+ ][..]
+ )),
+ Ok((Partial::new(&b""[..]), 0))
+ );
+ assert_parse!(
+ le_i128(Partial::new(
+ &[
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0x7f
+ ][..]
+ )),
+ Ok((
+ Partial::new(&b""[..]),
+ 170_141_183_460_469_231_731_687_303_715_884_105_727_i128
+ ))
+ );
+ assert_parse!(
+ le_i128(Partial::new(
+ &[
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+ 0xff, 0xff, 0xff
+ ][..]
+ )),
+ Ok((Partial::new(&b""[..]), -1))
+ );
+ assert_parse!(
+ le_i128(Partial::new(
+ &[
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x80
+ ][..]
+ )),
+ Ok((
+ Partial::new(&b""[..]),
+ -170_141_183_460_469_231_731_687_303_715_884_105_728_i128
+ ))
+ );
+ }
+
+ #[test]
+ fn be_f32_tests() {
+ assert_parse!(
+ be_f32(Partial::new(&[0x00, 0x00, 0x00, 0x00][..])),
+ Ok((Partial::new(&b""[..]), 0_f32))
+ );
+ assert_parse!(
+ be_f32(Partial::new(&[0x4d, 0x31, 0x1f, 0xd8][..])),
+ Ok((Partial::new(&b""[..]), 185_728_380_f32))
+ );
+ }
+
+ #[test]
+ fn be_f64_tests() {
+ assert_parse!(
+ be_f64(Partial::new(
+ &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]
+ )),
+ Ok((Partial::new(&b""[..]), 0_f64))
+ );
+ assert_parse!(
+ be_f64(Partial::new(
+ &[0x41, 0xa6, 0x23, 0xfb, 0x10, 0x00, 0x00, 0x00][..]
+ )),
+ Ok((Partial::new(&b""[..]), 185_728_392_f64))
+ );
+ }
+
+ #[test]
+ fn le_f32_tests() {
+ assert_parse!(
+ le_f32(Partial::new(&[0x00, 0x00, 0x00, 0x00][..])),
+ Ok((Partial::new(&b""[..]), 0_f32))
+ );
+ assert_parse!(
+ le_f32(Partial::new(&[0xd8, 0x1f, 0x31, 0x4d][..])),
+ Ok((Partial::new(&b""[..]), 185_728_380_f32))
+ );
+ }
+
+ #[test]
+ fn le_f64_tests() {
+ assert_parse!(
+ le_f64(Partial::new(
+ &[0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00][..]
+ )),
+ Ok((Partial::new(&b""[..]), 0_f64))
+ );
+ assert_parse!(
+ le_f64(Partial::new(
+ &[0x00, 0x00, 0x00, 0x10, 0xfb, 0x23, 0xa6, 0x41][..]
+ )),
+ Ok((Partial::new(&b""[..]), 185_728_392_f64))
+ );
+ }
+
+ #[test]
+ fn configurable_endianness() {
+ use crate::binary::Endianness;
+
+ fn be_tst16(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u16> {
+ u16(Endianness::Big).parse_next(i)
+ }
+ fn le_tst16(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u16> {
+ u16(Endianness::Little).parse_next(i)
+ }
+ assert_eq!(
+ be_tst16(Partial::new(&[0x80, 0x00])),
+ Ok((Partial::new(&b""[..]), 32_768_u16))
+ );
+ assert_eq!(
+ le_tst16(Partial::new(&[0x80, 0x00])),
+ Ok((Partial::new(&b""[..]), 128_u16))
+ );
+
+ fn be_tst32(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u32> {
+ u32(Endianness::Big).parse_next(i)
+ }
+ fn le_tst32(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u32> {
+ u32(Endianness::Little).parse_next(i)
+ }
+ assert_eq!(
+ be_tst32(Partial::new(&[0x12, 0x00, 0x60, 0x00])),
+ Ok((Partial::new(&b""[..]), 302_014_464_u32))
+ );
+ assert_eq!(
+ le_tst32(Partial::new(&[0x12, 0x00, 0x60, 0x00])),
+ Ok((Partial::new(&b""[..]), 6_291_474_u32))
+ );
+
+ fn be_tst64(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u64> {
+ u64(Endianness::Big).parse_next(i)
+ }
+ fn le_tst64(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u64> {
+ u64(Endianness::Little).parse_next(i)
+ }
+ assert_eq!(
+ be_tst64(Partial::new(&[
+ 0x12, 0x00, 0x60, 0x00, 0x12, 0x00, 0x80, 0x00
+ ])),
+ Ok((Partial::new(&b""[..]), 1_297_142_246_100_992_000_u64))
+ );
+ assert_eq!(
+ le_tst64(Partial::new(&[
+ 0x12, 0x00, 0x60, 0x00, 0x12, 0x00, 0x80, 0x00
+ ])),
+ Ok((Partial::new(&b""[..]), 36_028_874_334_666_770_u64))
+ );
+
+ fn be_tsti16(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i16> {
+ i16(Endianness::Big).parse_next(i)
+ }
+ fn le_tsti16(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i16> {
+ i16(Endianness::Little).parse_next(i)
+ }
+ assert_eq!(
+ be_tsti16(Partial::new(&[0x00, 0x80])),
+ Ok((Partial::new(&b""[..]), 128_i16))
+ );
+ assert_eq!(
+ le_tsti16(Partial::new(&[0x00, 0x80])),
+ Ok((Partial::new(&b""[..]), -32_768_i16))
+ );
+
+ fn be_tsti32(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i32> {
+ i32(Endianness::Big).parse_next(i)
+ }
+ fn le_tsti32(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i32> {
+ i32(Endianness::Little).parse_next(i)
+ }
+ assert_eq!(
+ be_tsti32(Partial::new(&[0x00, 0x12, 0x60, 0x00])),
+ Ok((Partial::new(&b""[..]), 1_204_224_i32))
+ );
+ assert_eq!(
+ le_tsti32(Partial::new(&[0x00, 0x12, 0x60, 0x00])),
+ Ok((Partial::new(&b""[..]), 6_296_064_i32))
+ );
+
+ fn be_tsti64(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i64> {
+ i64(Endianness::Big).parse_next(i)
+ }
+ fn le_tsti64(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, i64> {
+ i64(Endianness::Little).parse_next(i)
+ }
+ assert_eq!(
+ be_tsti64(Partial::new(&[
+ 0x00, 0xFF, 0x60, 0x00, 0x12, 0x00, 0x80, 0x00
+ ])),
+ Ok((Partial::new(&b""[..]), 71_881_672_479_506_432_i64))
+ );
+ assert_eq!(
+ le_tsti64(Partial::new(&[
+ 0x00, 0xFF, 0x60, 0x00, 0x12, 0x00, 0x80, 0x00
+ ])),
+ Ok((Partial::new(&b""[..]), 36_028_874_334_732_032_i64))
+ );
+ }
+
+ #[test]
+ #[cfg(feature = "alloc")]
+ fn length_count_test() {
+ fn number(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u32> {
+ digit
+ .try_map(str::from_utf8)
+ .try_map(FromStr::from_str)
+ .parse_next(i)
+ }
+
+ fn cnt(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, Vec<&[u8]>> {
+ length_count(number, "abc").parse_next(i)
+ }
+
+ assert_eq!(
+ cnt(Partial::new(&b"2abcabcabcdef"[..])),
+ Ok((Partial::new(&b"abcdef"[..]), vec![&b"abc"[..], &b"abc"[..]]))
+ );
+ assert_eq!(
+ cnt(Partial::new(&b"2ab"[..])),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ cnt(Partial::new(&b"3abcab"[..])),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ cnt(Partial::new(&b"xxx"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"xxx"[..]),
+ ErrorKind::Slice
+ )))
+ );
+ assert_eq!(
+ cnt(Partial::new(&b"2abcxxx"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"xxx"[..]),
+ ErrorKind::Tag
+ )))
+ );
+ }
+
+ #[test]
+ fn length_data_test() {
+ fn number(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u32> {
+ digit
+ .try_map(str::from_utf8)
+ .try_map(FromStr::from_str)
+ .parse_next(i)
+ }
+
+ fn take(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ length_data(number).parse_next(i)
+ }
+
+ assert_eq!(
+ take(Partial::new(&b"6abcabcabcdef"[..])),
+ Ok((Partial::new(&b"abcdef"[..]), &b"abcabc"[..]))
+ );
+ assert_eq!(
+ take(Partial::new(&b"3ab"[..])),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ take(Partial::new(&b"xxx"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"xxx"[..]),
+ ErrorKind::Slice
+ )))
+ );
+ assert_eq!(
+ take(Partial::new(&b"2abcxxx"[..])),
+ Ok((Partial::new(&b"cxxx"[..]), &b"ab"[..]))
+ );
+ }
+
+ #[test]
+ fn length_value_test() {
+ use crate::stream::StreamIsPartial;
+
+ fn length_value_1(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u16> {
+ length_value(be_u8, be_u16).parse_next(i)
+ }
+ fn length_value_2(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, (u8, u8)> {
+ length_value(be_u8, (be_u8, be_u8)).parse_next(i)
+ }
+
+ let mut empty_complete = Partial::new(&b""[..]);
+ let _ = empty_complete.complete();
+
+ let i1 = [0, 5, 6];
+ assert_eq!(
+ length_value_1(Partial::new(&i1)),
+ Err(ErrMode::Backtrack(error_position!(
+ empty_complete,
+ ErrorKind::Slice
+ )))
+ );
+ assert_eq!(
+ length_value_2(Partial::new(&i1)),
+ Err(ErrMode::Backtrack(error_position!(
+ empty_complete,
+ ErrorKind::Token
+ )))
+ );
+
+ let i2 = [1, 5, 6, 3];
+ {
+ let mut middle_complete = Partial::new(&i2[1..2]);
+ let _ = middle_complete.complete();
+ assert_eq!(
+ length_value_1(Partial::new(&i2)),
+ Err(ErrMode::Backtrack(error_position!(
+ middle_complete,
+ ErrorKind::Slice
+ )))
+ );
+ assert_eq!(
+ length_value_2(Partial::new(&i2)),
+ Err(ErrMode::Backtrack(error_position!(
+ empty_complete,
+ ErrorKind::Token
+ )))
+ );
+ }
+
+ let i3 = [2, 5, 6, 3, 4, 5, 7];
+ assert_eq!(
+ length_value_1(Partial::new(&i3)),
+ Ok((Partial::new(&i3[3..]), 1286))
+ );
+ assert_eq!(
+ length_value_2(Partial::new(&i3)),
+ Ok((Partial::new(&i3[3..]), (5, 6)))
+ );
+
+ let i4 = [3, 5, 6, 3, 4, 5];
+ assert_eq!(
+ length_value_1(Partial::new(&i4)),
+ Ok((Partial::new(&i4[4..]), 1286))
+ );
+ assert_eq!(
+ length_value_2(Partial::new(&i4)),
+ Ok((Partial::new(&i4[4..]), (5, 6)))
+ );
+ }
+}
diff --git a/vendor/winnow-0.4.7/src/bits.rs b/vendor/winnow-0.4.7/src/bits.rs
new file mode 100644
index 000000000..6b4981f30
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/bits.rs
@@ -0,0 +1,71 @@
+//! Deprecated, see [`binary::bits`]
+#![deprecated(since = "0.4.2", note = "Replaced with `binary::bits`")]
+
+use crate::binary;
+use crate::error::{ErrorConvert, ParseError};
+use crate::lib::std::ops::{AddAssign, Shl, Shr};
+use crate::stream::{AsBytes, Stream, StreamIsPartial, ToUsize};
+use crate::{IResult, Parser};
+
+/// Deprecated, replaced with [`binary::bits::bits`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::bits::bits`")]
+#[inline(always)]
+pub fn bits<I, O, E1, E2, P>(parser: P) -> impl Parser<I, O, E2>
+where
+ E1: ParseError<(I, usize)> + ErrorConvert<E2>,
+ E2: ParseError<I>,
+ I: Stream,
+ P: Parser<(I, usize), O, E1>,
+{
+ binary::bits::bits(parser)
+}
+
+/// Deprecated, replaced with [`binary::bits::bytes`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::bits::bytes`")]
+#[inline(always)]
+pub fn bytes<I, O, E1, E2, P>(parser: P) -> impl Parser<(I, usize), O, E2>
+where
+ E1: ParseError<I> + ErrorConvert<E2>,
+ E2: ParseError<(I, usize)>,
+ I: Stream<Token = u8>,
+ P: Parser<I, O, E1>,
+{
+ binary::bits::bytes(parser)
+}
+
+/// Deprecated, replaced with [`binary::bits::take`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::bits::take`")]
+#[inline(always)]
+pub fn take<I, O, C, E: ParseError<(I, usize)>>(count: C) -> impl Parser<(I, usize), O, E>
+where
+ I: Stream<Token = u8> + AsBytes + StreamIsPartial,
+ C: ToUsize,
+ O: From<u8> + AddAssign + Shl<usize, Output = O> + Shr<usize, Output = O>,
+{
+ binary::bits::take(count)
+}
+
+/// Deprecated, replaced with [`binary::bits::tag`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::bits::tag`")]
+#[inline(always)]
+pub fn tag<I, O, C, E: ParseError<(I, usize)>>(
+ pattern: O,
+ count: C,
+) -> impl Parser<(I, usize), O, E>
+where
+ I: Stream<Token = u8> + AsBytes + StreamIsPartial,
+ C: ToUsize,
+ O: From<u8> + AddAssign + Shl<usize, Output = O> + Shr<usize, Output = O> + PartialEq,
+{
+ binary::bits::tag(pattern, count)
+}
+
+/// Deprecated, replaced with [`binary::bits::bool`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::bits::bool`")]
+#[inline(always)]
+pub fn bool<I, E: ParseError<(I, usize)>>(input: (I, usize)) -> IResult<(I, usize), bool, E>
+where
+ I: Stream<Token = u8> + AsBytes + StreamIsPartial,
+{
+ binary::bits::bool(input)
+}
diff --git a/vendor/winnow-0.4.7/src/branch.rs b/vendor/winnow-0.4.7/src/branch.rs
new file mode 100644
index 000000000..0783262b4
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/branch.rs
@@ -0,0 +1,10 @@
+//! Deprecated, see [`combinator`]
+#![deprecated(since = "0.4.2", note = "Replaced with `combinator`")]
+
+use crate::combinator;
+
+pub use combinator::alt;
+pub use combinator::dispatch;
+pub use combinator::permutation;
+pub use combinator::Alt;
+pub use combinator::Permutation;
diff --git a/vendor/winnow-0.4.7/src/bytes.rs b/vendor/winnow-0.4.7/src/bytes.rs
new file mode 100644
index 000000000..9f57a56d2
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/bytes.rs
@@ -0,0 +1,26 @@
+//! Deprecated, see [`token`]
+#![deprecated(since = "0.4.2", note = "Replaced with `token`")]
+
+use crate::error::ParseError;
+use crate::stream::StreamIsPartial;
+use crate::stream::{ContainsToken, Stream};
+use crate::token;
+use crate::Parser;
+
+pub use crate::token::*;
+
+/// Deprecated, see [`token::take_while`]
+#[deprecated(since = "0.4.2", note = "Replaced with `token::take_while`")]
+#[inline(always)]
+pub fn take_while_m_n<T, I, Error: ParseError<I>>(
+ m: usize,
+ n: usize,
+ list: T,
+) -> impl Parser<I, <I as Stream>::Slice, Error>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ T: ContainsToken<<I as Stream>::Token>,
+{
+ token::take_while(m..=n, list)
+}
diff --git a/vendor/winnow-0.4.7/src/character.rs b/vendor/winnow-0.4.7/src/character.rs
new file mode 100644
index 000000000..a2f685971
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/character.rs
@@ -0,0 +1,342 @@
+//! Deprecated, see [`ascii`]
+#![deprecated(since = "0.4.2", note = "Replaced with `ascii`")]
+
+use crate::ascii;
+use crate::error::ParseError;
+use crate::stream::Compare;
+use crate::stream::ContainsToken;
+use crate::stream::{AsBStr, AsChar, Offset, ParseSlice, Stream, StreamIsPartial};
+use crate::IResult;
+use crate::Parser;
+
+/// Deprecated, replaced by [`ascii::crlf`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::crlf`")]
+#[inline(always)]
+pub fn crlf<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ I: Compare<&'static str>,
+{
+ ascii::crlf.parse_next(input)
+}
+
+/// Deprecated, replaced by [`ascii::not_line_ending`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::not_line_ending`")]
+#[inline(always)]
+pub fn not_line_ending<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream + AsBStr,
+ I: Compare<&'static str>,
+ <I as Stream>::Token: AsChar,
+{
+ ascii::not_line_ending.parse_next(input)
+}
+
+/// Deprecated, replaced by [`ascii::line_ending`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::line_ending`")]
+#[inline(always)]
+pub fn line_ending<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ I: Compare<&'static str>,
+{
+ ascii::line_ending.parse_next(input)
+}
+
+/// Deprecated, replaced by [`ascii::newline`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::newline`")]
+#[inline(always)]
+pub fn newline<I, Error: ParseError<I>>(input: I) -> IResult<I, char, Error>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar + Copy,
+{
+ ascii::newline.parse_next(input)
+}
+
+/// Deprecated, replaced by [`ascii::tab`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::tab`")]
+#[inline(always)]
+pub fn tab<I, Error: ParseError<I>>(input: I) -> IResult<I, char, Error>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar + Copy,
+{
+ ascii::tab.parse_next(input)
+}
+
+/// Deprecated, replaced by [`ascii::alpha0`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::alpha0`")]
+#[inline(always)]
+pub fn alpha0<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar,
+{
+ ascii::alpha0.parse_next(input)
+}
+
+/// Deprecated, replaced by [`ascii::alpha1`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::alpha1`")]
+#[inline(always)]
+pub fn alpha1<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar,
+{
+ ascii::alpha1.parse_next(input)
+}
+
+/// Deprecated, replaced by [`ascii::digit0`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::digit0`")]
+#[inline(always)]
+pub fn digit0<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar,
+{
+ ascii::digit0.parse_next(input)
+}
+
+/// Deprecated, replaced by [`ascii::digit1`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::digit1`")]
+#[inline(always)]
+pub fn digit1<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar,
+{
+ ascii::digit1.parse_next(input)
+}
+
+/// Deprecated, replaced by [`ascii::hex_digit0`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::hex_digit0`")]
+#[inline(always)]
+pub fn hex_digit0<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar,
+{
+ ascii::hex_digit0.parse_next(input)
+}
+
+/// Deprecated, replaced by [`ascii::hex_digit1`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::hex_digit1`")]
+#[inline(always)]
+pub fn hex_digit1<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar,
+{
+ ascii::hex_digit1.parse_next(input)
+}
+
+/// Deprecated, replaced by [`ascii::oct_digit0`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::oct_digit0`")]
+#[inline(always)]
+pub fn oct_digit0<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar,
+{
+ ascii::oct_digit0.parse_next(input)
+}
+
+/// Deprecated, replaced by [`ascii::oct_digit1`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::oct_digit1`")]
+#[inline(always)]
+pub fn oct_digit1<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar,
+{
+ ascii::oct_digit0.parse_next(input)
+}
+
+/// Deprecated, replaced by [`ascii::alphanumeric0`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::alphanumeric0`")]
+#[inline(always)]
+pub fn alphanumeric0<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar,
+{
+ ascii::alphanumeric0.parse_next(input)
+}
+
+/// Deprecated, replaced by [`ascii::alphanumeric1`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::alphanumeric1`")]
+#[inline(always)]
+pub fn alphanumeric1<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar,
+{
+ ascii::alphanumeric1.parse_next(input)
+}
+
+/// Deprecated, replaced by [`ascii::space0`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::space0`")]
+#[inline(always)]
+pub fn space0<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar + Copy,
+{
+ ascii::space0.parse_next(input)
+}
+
+/// Deprecated, replaced by [`ascii::space1`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::space1`")]
+#[inline(always)]
+pub fn space1<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar + Copy,
+{
+ ascii::space1.parse_next(input)
+}
+
+/// Deprecated, replaced by [`ascii::multispace0`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::multispace0`")]
+#[inline(always)]
+pub fn multispace0<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar + Copy,
+{
+ ascii::multispace0.parse_next(input)
+}
+
+/// Deprecated, replaced by [`ascii::multispace1`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::multispace1`")]
+#[inline(always)]
+pub fn multispace1<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar + Copy,
+{
+ ascii::multispace1.parse_next(input)
+}
+
+/// Deprecated, replaced by [`ascii::dec_uint`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::dec_uint`")]
+#[inline(always)]
+pub fn dec_uint<I, O, E: ParseError<I>>(input: I) -> IResult<I, O, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar + Copy,
+ O: Uint,
+{
+ ascii::dec_uint.parse_next(input)
+}
+
+pub use ascii::Uint;
+
+/// Deprecated, replaced by [`ascii::dec_int`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::dec_int`")]
+#[inline(always)]
+pub fn dec_int<I, O, E: ParseError<I>>(input: I) -> IResult<I, O, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar + Copy,
+ O: Int,
+{
+ ascii::dec_int.parse_next(input)
+}
+
+pub use ascii::Int;
+
+/// Deprecated, replaced by [`ascii::hex_uint`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::hex_uint`")]
+#[inline(always)]
+pub fn hex_uint<I, O, E: ParseError<I>>(input: I) -> IResult<I, O, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ O: HexUint,
+ <I as Stream>::Token: AsChar,
+ <I as Stream>::Slice: AsBStr,
+{
+ ascii::hex_uint.parse_next(input)
+}
+
+pub use ascii::HexUint;
+
+/// Deprecated, replaced by [`ascii::float`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::float`")]
+#[inline(always)]
+pub fn float<I, O, E: ParseError<I>>(input: I) -> IResult<I, O, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ I: Offset + Compare<&'static str>,
+ <I as Stream>::Slice: ParseSlice<O>,
+ <I as Stream>::Token: AsChar + Copy,
+ <I as Stream>::IterOffsets: Clone,
+ I: AsBStr,
+ &'static str: ContainsToken<<I as Stream>::Token>,
+{
+ ascii::float.parse_next(input)
+}
+
+/// Deprecated, replaced by [`ascii::escaped`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::escaped`")]
+#[inline(always)]
+pub fn escaped<'a, I: 'a, Error, F, G, O1, O2>(
+ normal: F,
+ control_char: char,
+ escapable: G,
+) -> impl Parser<I, <I as Stream>::Slice, Error>
+where
+ I: StreamIsPartial,
+ I: Stream + Offset,
+ <I as Stream>::Token: crate::stream::AsChar,
+ F: Parser<I, O1, Error>,
+ G: Parser<I, O2, Error>,
+ Error: ParseError<I>,
+{
+ ascii::escaped(normal, control_char, escapable)
+}
+
+#[cfg(feature = "alloc")]
+/// Deprecated, replaced by [`ascii::escaped_transform`]
+#[deprecated(since = "0.4.2", note = "Replaced with `ascii::escaped_transform`")]
+#[inline(always)]
+pub fn escaped_transform<I, Error, F, G, Output>(
+ normal: F,
+ control_char: char,
+ transform: G,
+) -> impl Parser<I, Output, Error>
+where
+ I: StreamIsPartial,
+ I: Stream + Offset,
+ <I as Stream>::Token: crate::stream::AsChar,
+ Output: crate::stream::Accumulate<<I as Stream>::Slice>,
+ F: Parser<I, <I as Stream>::Slice, Error>,
+ G: Parser<I, <I as Stream>::Slice, Error>,
+ Error: ParseError<I>,
+{
+ ascii::escaped_transform(normal, control_char, transform)
+}
diff --git a/vendor/winnow-0.4.7/src/combinator/branch.rs b/vendor/winnow-0.4.7/src/combinator/branch.rs
new file mode 100644
index 000000000..042b27d53
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/combinator/branch.rs
@@ -0,0 +1,268 @@
+use crate::error::{ErrMode, ErrorKind, ParseError};
+use crate::stream::Stream;
+use crate::trace::trace;
+use crate::*;
+
+#[doc(inline)]
+pub use crate::dispatch;
+
+/// Helper trait for the [alt()] combinator.
+///
+/// This trait is implemented for tuples of up to 21 elements
+pub trait Alt<I, O, E> {
+ /// Tests each parser in the tuple and returns the result of the first one that succeeds
+ fn choice(&mut self, input: I) -> IResult<I, O, E>;
+}
+
+/// Pick the first successful parser
+///
+/// For tight control over the error, add a final case using [`fail`][crate::combinator::fail].
+/// Alternatively, with a [custom error type][crate::_topic::error], it is possible to track all
+/// errors or return the error of the parser that went the farthest in the input data.
+///
+/// When the alternative cases have unique prefixes, [`dispatch`] can offer better performance.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::Error,error::ErrorKind, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::ascii::{alpha1, digit1};
+/// use winnow::combinator::alt;
+/// # fn main() {
+/// fn parser(input: &str) -> IResult<&str, &str> {
+/// alt((alpha1, digit1)).parse_next(input)
+/// };
+///
+/// // the first parser, alpha1, recognizes the input
+/// assert_eq!(parser("abc"), Ok(("", "abc")));
+///
+/// // the first parser returns an error, so alt tries the second one
+/// assert_eq!(parser("123456"), Ok(("", "123456")));
+///
+/// // both parsers failed, and with the default error type, alt will return the last error
+/// assert_eq!(parser(" "), Err(ErrMode::Backtrack(Error::new(" ", ErrorKind::Slice))));
+/// # }
+/// ```
+#[doc(alias = "choice")]
+pub fn alt<I: Stream, O, E: ParseError<I>, List: Alt<I, O, E>>(
+ mut l: List,
+) -> impl Parser<I, O, E> {
+ trace("alt", move |i: I| l.choice(i))
+}
+
+/// Helper trait for the [permutation()] combinator.
+///
+/// This trait is implemented for tuples of up to 21 elements
+pub trait Permutation<I, O, E> {
+ /// Tries to apply all parsers in the tuple in various orders until all of them succeed
+ fn permutation(&mut self, input: I) -> IResult<I, O, E>;
+}
+
+/// Applies a list of parsers in any order.
+///
+/// Permutation will succeed if all of the child parsers succeeded.
+/// It takes as argument a tuple of parsers, and returns a
+/// tuple of the parser results.
+///
+/// ```rust
+/// # use winnow::{error::ErrMode,error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::ascii::{alpha1, digit1};
+/// use winnow::combinator::permutation;
+/// # fn main() {
+/// fn parser(input: &str) -> IResult<&str, (&str, &str)> {
+/// permutation((alpha1, digit1)).parse_next(input)
+/// }
+///
+/// // permutation recognizes alphabetic characters then digit
+/// assert_eq!(parser("abc123"), Ok(("", ("abc", "123"))));
+///
+/// // but also in inverse order
+/// assert_eq!(parser("123abc"), Ok(("", ("abc", "123"))));
+///
+/// // it will fail if one of the parsers failed
+/// assert_eq!(parser("abc;"), Err(ErrMode::Backtrack(Error::new(";", ErrorKind::Slice))));
+/// # }
+/// ```
+///
+/// The parsers are applied greedily: if there are multiple unapplied parsers
+/// that could parse the next slice of input, the first one is used.
+/// ```rust
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}};
+/// # use winnow::prelude::*;
+/// use winnow::combinator::permutation;
+/// use winnow::token::any;
+///
+/// fn parser(input: &str) -> IResult<&str, (char, char)> {
+/// permutation((any, 'a')).parse_next(input)
+/// }
+///
+/// // any parses 'b', then char('a') parses 'a'
+/// assert_eq!(parser("ba"), Ok(("", ('b', 'a'))));
+///
+/// // any parses 'a', then char('a') fails on 'b',
+/// // even though char('a') followed by any would succeed
+/// assert_eq!(parser("ab"), Err(ErrMode::Backtrack(Error::new("b", ErrorKind::Verify))));
+/// ```
+///
+pub fn permutation<I: Stream, O, E: ParseError<I>, List: Permutation<I, O, E>>(
+ mut l: List,
+) -> impl Parser<I, O, E> {
+ trace("permutation", move |i: I| l.permutation(i))
+}
+
+macro_rules! alt_trait(
+ ($first:ident $second:ident $($id: ident)+) => (
+ alt_trait!(__impl $first $second; $($id)+);
+ );
+ (__impl $($current:ident)*; $head:ident $($id: ident)+) => (
+ alt_trait_impl!($($current)*);
+
+ alt_trait!(__impl $($current)* $head; $($id)+);
+ );
+ (__impl $($current:ident)*; $head:ident) => (
+ alt_trait_impl!($($current)*);
+ alt_trait_impl!($($current)* $head);
+ );
+);
+
+macro_rules! alt_trait_impl(
+ ($($id:ident)+) => (
+ impl<
+ I: Clone, Output, Error: ParseError<I>,
+ $($id: Parser<I, Output, Error>),+
+ > Alt<I, Output, Error> for ( $($id),+ ) {
+
+ fn choice(&mut self, input: I) -> IResult<I, Output, Error> {
+ match self.0.parse_next(input.clone()) {
+ Err(ErrMode::Backtrack(e)) => alt_trait_inner!(1, self, input, e, $($id)+),
+ res => res,
+ }
+ }
+ }
+ );
+);
+
+macro_rules! alt_trait_inner(
+ ($it:tt, $self:expr, $input:expr, $err:expr, $head:ident $($id:ident)+) => (
+ match $self.$it.parse_next($input.clone()) {
+ Err(ErrMode::Backtrack(e)) => {
+ let err = $err.or(e);
+ succ!($it, alt_trait_inner!($self, $input, err, $($id)+))
+ }
+ res => res,
+ }
+ );
+ ($it:tt, $self:expr, $input:expr, $err:expr, $head:ident) => (
+ Err(ErrMode::Backtrack($err.append($input, ErrorKind::Alt)))
+ );
+);
+
+alt_trait!(Alt2 Alt3 Alt4 Alt5 Alt6 Alt7 Alt8 Alt9 Alt10 Alt11 Alt12 Alt13 Alt14 Alt15 Alt16 Alt17 Alt18 Alt19 Alt20 Alt21 Alt22);
+
+// Manually implement Alt for (A,), the 1-tuple type
+impl<I, O, E: ParseError<I>, A: Parser<I, O, E>> Alt<I, O, E> for (A,) {
+ fn choice(&mut self, input: I) -> IResult<I, O, E> {
+ self.0.parse_next(input)
+ }
+}
+
+macro_rules! permutation_trait(
+ (
+ $name1:ident $ty1:ident $item1:ident
+ $name2:ident $ty2:ident $item2:ident
+ $($name3:ident $ty3:ident $item3:ident)*
+ ) => (
+ permutation_trait!(__impl $name1 $ty1 $item1, $name2 $ty2 $item2; $($name3 $ty3 $item3)*);
+ );
+ (
+ __impl $($name:ident $ty:ident $item:ident),+;
+ $name1:ident $ty1:ident $item1:ident $($name2:ident $ty2:ident $item2:ident)*
+ ) => (
+ permutation_trait_impl!($($name $ty $item),+);
+ permutation_trait!(__impl $($name $ty $item),+ , $name1 $ty1 $item1; $($name2 $ty2 $item2)*);
+ );
+ (__impl $($name:ident $ty:ident $item:ident),+;) => (
+ permutation_trait_impl!($($name $ty $item),+);
+ );
+);
+
+macro_rules! permutation_trait_impl(
+ ($($name:ident $ty:ident $item:ident),+) => (
+ impl<
+ I: Clone, $($ty),+ , Error: ParseError<I>,
+ $($name: Parser<I, $ty, Error>),+
+ > Permutation<I, ( $($ty),+ ), Error> for ( $($name),+ ) {
+
+ fn permutation(&mut self, mut input: I) -> IResult<I, ( $($ty),+ ), Error> {
+ let mut res = ($(Option::<$ty>::None),+);
+
+ loop {
+ let mut err: Option<Error> = None;
+ permutation_trait_inner!(0, self, input, res, err, $($name)+);
+
+ // If we reach here, every iterator has either been applied before,
+ // or errored on the remaining input
+ if let Some(err) = err {
+ // There are remaining parsers, and all errored on the remaining input
+ return Err(ErrMode::Backtrack(err.append(input, ErrorKind::Alt)));
+ }
+
+ // All parsers were applied
+ match res {
+ ($(Some($item)),+) => return Ok((input, ($($item),+))),
+ _ => unreachable!(),
+ }
+ }
+ }
+ }
+ );
+);
+
+macro_rules! permutation_trait_inner(
+ ($it:tt, $self:expr, $input:ident, $res:expr, $err:expr, $head:ident $($id:ident)*) => (
+ if $res.$it.is_none() {
+ match $self.$it.parse_next($input.clone()) {
+ Ok((i, o)) => {
+ $input = i;
+ $res.$it = Some(o);
+ continue;
+ }
+ Err(ErrMode::Backtrack(e)) => {
+ $err = Some(match $err {
+ Some(err) => err.or(e),
+ None => e,
+ });
+ }
+ Err(e) => return Err(e),
+ };
+ }
+ succ!($it, permutation_trait_inner!($self, $input, $res, $err, $($id)*));
+ );
+ ($it:tt, $self:expr, $input:ident, $res:expr, $err:expr,) => ();
+);
+
+permutation_trait!(
+ P1 O1 o1
+ P2 O2 o2
+ P3 O3 o3
+ P4 O4 o4
+ P5 O5 o5
+ P6 O6 o6
+ P7 O7 o7
+ P8 O8 o8
+ P9 O9 o9
+ P10 O10 o10
+ P11 O11 o11
+ P12 O12 o12
+ P13 O13 o13
+ P14 O14 o14
+ P15 O15 o15
+ P16 O16 o16
+ P17 O17 o17
+ P18 O18 o18
+ P19 O19 o19
+ P20 O20 o20
+ P21 O21 o21
+);
diff --git a/vendor/winnow-0.4.7/src/combinator/core.rs b/vendor/winnow-0.4.7/src/combinator/core.rs
new file mode 100644
index 000000000..75551d7c5
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/combinator/core.rs
@@ -0,0 +1,490 @@
+use crate::error::{ErrMode, ErrorKind, Needed, ParseError};
+use crate::stream::Stream;
+use crate::trace::trace;
+use crate::*;
+
+/// Return the remaining input.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::error::ErrorKind;
+/// # use winnow::error::Error;
+/// use winnow::combinator::rest;
+/// assert_eq!(rest::<_,Error<_>>("abc"), Ok(("", "abc")));
+/// assert_eq!(rest::<_,Error<_>>(""), Ok(("", "")));
+/// ```
+#[inline]
+pub fn rest<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: Stream,
+{
+ trace("rest", move |input: I| {
+ Ok(input.next_slice(input.eof_offset()))
+ })
+ .parse_next(input)
+}
+
+/// Return the length of the remaining input.
+///
+/// Note: this does not advance the [`Stream`]
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::error::ErrorKind;
+/// # use winnow::error::Error;
+/// use winnow::combinator::rest_len;
+/// assert_eq!(rest_len::<_,Error<_>>("abc"), Ok(("abc", 3)));
+/// assert_eq!(rest_len::<_,Error<_>>(""), Ok(("", 0)));
+/// ```
+#[inline]
+pub fn rest_len<I, E: ParseError<I>>(input: I) -> IResult<I, usize, E>
+where
+ I: Stream,
+{
+ trace("rest_len", move |input: I| {
+ let len = input.eof_offset();
+ Ok((input, len))
+ })
+ .parse_next(input)
+}
+
+/// Apply a [`Parser`], producing `None` on [`ErrMode::Backtrack`].
+///
+/// To chain an error up, see [`cut_err`].
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error};
+/// # use winnow::prelude::*;
+/// use winnow::combinator::opt;
+/// use winnow::ascii::alpha1;
+/// # fn main() {
+///
+/// fn parser(i: &str) -> IResult<&str, Option<&str>> {
+/// opt(alpha1).parse_next(i)
+/// }
+///
+/// assert_eq!(parser("abcd;"), Ok((";", Some("abcd"))));
+/// assert_eq!(parser("123;"), Ok(("123;", None)));
+/// # }
+/// ```
+pub fn opt<I: Stream, O, E: ParseError<I>, F>(mut f: F) -> impl Parser<I, Option<O>, E>
+where
+ F: Parser<I, O, E>,
+{
+ trace("opt", move |input: I| {
+ let i = input.clone();
+ match f.parse_next(input) {
+ Ok((i, o)) => Ok((i, Some(o))),
+ Err(ErrMode::Backtrack(_)) => Ok((i, None)),
+ Err(e) => Err(e),
+ }
+ })
+}
+
+/// Calls the parser if the condition is met.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, IResult};
+/// # use winnow::prelude::*;
+/// use winnow::combinator::cond;
+/// use winnow::ascii::alpha1;
+/// # fn main() {
+///
+/// fn parser(b: bool, i: &str) -> IResult<&str, Option<&str>> {
+/// cond(b, alpha1).parse_next(i)
+/// }
+///
+/// assert_eq!(parser(true, "abcd;"), Ok((";", Some("abcd"))));
+/// assert_eq!(parser(false, "abcd;"), Ok(("abcd;", None)));
+/// assert_eq!(parser(true, "123;"), Err(ErrMode::Backtrack(Error::new("123;", ErrorKind::Slice))));
+/// assert_eq!(parser(false, "123;"), Ok(("123;", None)));
+/// # }
+/// ```
+pub fn cond<I, O, E: ParseError<I>, F>(b: bool, mut f: F) -> impl Parser<I, Option<O>, E>
+where
+ I: Stream,
+ F: Parser<I, O, E>,
+{
+ trace("cond", move |input: I| {
+ if b {
+ match f.parse_next(input) {
+ Ok((i, o)) => Ok((i, Some(o))),
+ Err(e) => Err(e),
+ }
+ } else {
+ Ok((input, None))
+ }
+ })
+}
+
+/// Tries to apply its parser without consuming the input.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult};
+/// # use winnow::prelude::*;
+/// use winnow::combinator::peek;
+/// use winnow::ascii::alpha1;
+/// # fn main() {
+///
+/// let mut parser = peek(alpha1);
+///
+/// assert_eq!(parser.parse_next("abcd;"), Ok(("abcd;", "abcd")));
+/// assert_eq!(parser.parse_next("123;"), Err(ErrMode::Backtrack(Error::new("123;", ErrorKind::Slice))));
+/// # }
+/// ```
+#[doc(alias = "look_ahead")]
+#[doc(alias = "rewind")]
+pub fn peek<I: Stream, O, E: ParseError<I>, F>(mut f: F) -> impl Parser<I, O, E>
+where
+ F: Parser<I, O, E>,
+{
+ trace("peek", move |input: I| {
+ let i = input.clone();
+ match f.parse_next(input) {
+ Ok((_, o)) => Ok((i, o)),
+ Err(e) => Err(e),
+ }
+ })
+}
+
+/// Match the end of the [`Stream`]
+///
+/// Otherwise, it will error.
+///
+/// # Example
+///
+/// ```rust
+/// # use std::str;
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error};
+/// # use winnow::combinator::eof;
+/// # use winnow::prelude::*;
+///
+/// let mut parser = eof;
+/// assert_eq!(parser.parse_next("abc"), Err(ErrMode::Backtrack(Error::new("abc", ErrorKind::Eof))));
+/// assert_eq!(parser.parse_next(""), Ok(("", "")));
+/// ```
+#[doc(alias = "end")]
+#[doc(alias = "eoi")]
+pub fn eof<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Slice, E>
+where
+ I: Stream,
+{
+ trace("eof", move |input: I| {
+ if input.eof_offset() == 0 {
+ Ok(input.next_slice(0))
+ } else {
+ Err(ErrMode::from_error_kind(input, ErrorKind::Eof))
+ }
+ })
+ .parse_next(input)
+}
+
+/// Succeeds if the child parser returns an error.
+///
+/// **Note:** This does not advance the [`Stream`]
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult};
+/// # use winnow::prelude::*;
+/// use winnow::combinator::not;
+/// use winnow::ascii::alpha1;
+/// # fn main() {
+///
+/// let mut parser = not(alpha1);
+///
+/// assert_eq!(parser.parse_next("123"), Ok(("123", ())));
+/// assert_eq!(parser.parse_next("abcd"), Err(ErrMode::Backtrack(Error::new("abcd", ErrorKind::Not))));
+/// # }
+/// ```
+pub fn not<I: Stream, O, E: ParseError<I>, F>(mut parser: F) -> impl Parser<I, (), E>
+where
+ F: Parser<I, O, E>,
+{
+ trace("not", move |input: I| {
+ let i = input.clone();
+ match parser.parse_next(input) {
+ Ok(_) => Err(ErrMode::from_error_kind(i, ErrorKind::Not)),
+ Err(ErrMode::Backtrack(_)) => Ok((i, ())),
+ Err(e) => Err(e),
+ }
+ })
+}
+
+/// Transforms an [`ErrMode::Backtrack`] (recoverable) to [`ErrMode::Cut`] (unrecoverable)
+///
+/// This commits the parse result, preventing alternative branch paths like with
+/// [`winnow::combinator::alt`][crate::combinator::alt].
+///
+/// # Example
+///
+/// Without `cut_err`:
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error};
+/// # use winnow::token::one_of;
+/// # use winnow::ascii::digit1;
+/// # use winnow::combinator::rest;
+/// # use winnow::combinator::alt;
+/// # use winnow::combinator::preceded;
+/// # use winnow::prelude::*;
+/// # fn main() {
+///
+/// fn parser(input: &str) -> IResult<&str, &str> {
+/// alt((
+/// preceded(one_of("+-"), digit1),
+/// rest
+/// )).parse_next(input)
+/// }
+///
+/// assert_eq!(parser("+10 ab"), Ok((" ab", "10")));
+/// assert_eq!(parser("ab"), Ok(("", "ab")));
+/// assert_eq!(parser("+"), Ok(("", "+")));
+/// # }
+/// ```
+///
+/// With `cut_err`:
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error};
+/// # use winnow::prelude::*;
+/// # use winnow::token::one_of;
+/// # use winnow::ascii::digit1;
+/// # use winnow::combinator::rest;
+/// # use winnow::combinator::alt;
+/// # use winnow::combinator::preceded;
+/// use winnow::combinator::cut_err;
+/// # fn main() {
+///
+/// fn parser(input: &str) -> IResult<&str, &str> {
+/// alt((
+/// preceded(one_of("+-"), cut_err(digit1)),
+/// rest
+/// )).parse_next(input)
+/// }
+///
+/// assert_eq!(parser("+10 ab"), Ok((" ab", "10")));
+/// assert_eq!(parser("ab"), Ok(("", "ab")));
+/// assert_eq!(parser("+"), Err(ErrMode::Cut(Error { input: "", kind: ErrorKind::Slice })));
+/// # }
+/// ```
+pub fn cut_err<I, O, E: ParseError<I>, F>(mut parser: F) -> impl Parser<I, O, E>
+where
+ I: Stream,
+ F: Parser<I, O, E>,
+{
+ trace("cut_err", move |input: I| {
+ parser.parse_next(input).map_err(|e| e.cut())
+ })
+}
+
+/// Transforms an [`ErrMode::Cut`] (unrecoverable) to [`ErrMode::Backtrack`] (recoverable)
+///
+/// This attempts the parse, allowing other parsers to be tried on failure, like with
+/// [`winnow::combinator::alt`][crate::combinator::alt].
+pub fn backtrack_err<I, O, E: ParseError<I>, F>(mut parser: F) -> impl Parser<I, O, E>
+where
+ I: Stream,
+ F: Parser<I, O, E>,
+{
+ trace("backtrack_err", move |input: I| {
+ parser.parse_next(input).map_err(|e| e.backtrack())
+ })
+}
+
+/// A placeholder for a not-yet-implemented [`Parser`]
+///
+/// This is analogous to the [`todo!`] macro and helps with prototyping.
+///
+/// # Panic
+///
+/// This will panic when parsing
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::prelude::*;
+/// # use winnow::combinator::todo;
+///
+/// fn parser(input: &str) -> IResult<&str, u64> {
+/// todo(input)
+/// }
+/// ```
+#[track_caller]
+pub fn todo<I, O, E>(input: I) -> IResult<I, O, E>
+where
+ I: Stream,
+{
+ #![allow(clippy::todo)]
+ trace("todo", move |_input: I| todo!("unimplemented parse")).parse_next(input)
+}
+
+/// Repeats the embedded parser, lazily returning the results
+///
+/// Call the iterator's [`ParserIterator::finish`] method to get the remaining input if successful,
+/// or the error value if we encountered an error.
+///
+/// On [`ErrMode::Backtrack`], iteration will stop. To instead chain an error up, see [`cut_err`].
+///
+/// # Example
+///
+/// ```rust
+/// use winnow::{combinator::iterator, IResult, token::tag, ascii::alpha1, combinator::terminated};
+/// use std::collections::HashMap;
+///
+/// let data = "abc|defg|hijkl|mnopqr|123";
+/// let mut it = iterator(data, terminated(alpha1, "|"));
+///
+/// let parsed = it.map(|v| (v, v.len())).collect::<HashMap<_,_>>();
+/// let res: IResult<_,_> = it.finish();
+///
+/// assert_eq!(parsed, [("abc", 3usize), ("defg", 4), ("hijkl", 5), ("mnopqr", 6)].iter().cloned().collect());
+/// assert_eq!(res, Ok(("123", ())));
+/// ```
+pub fn iterator<I, O, E, F>(input: I, parser: F) -> ParserIterator<F, I, O, E>
+where
+ F: Parser<I, O, E>,
+ I: Stream,
+ E: ParseError<I>,
+{
+ ParserIterator {
+ parser,
+ input,
+ state: Some(State::Running),
+ o: Default::default(),
+ }
+}
+
+/// Main structure associated to [`iterator`].
+pub struct ParserIterator<F, I, O, E>
+where
+ F: Parser<I, O, E>,
+ I: Stream,
+{
+ parser: F,
+ input: I,
+ state: Option<State<E>>,
+ o: core::marker::PhantomData<O>,
+}
+
+impl<F, I, O, E> ParserIterator<F, I, O, E>
+where
+ F: Parser<I, O, E>,
+ I: Stream,
+{
+ /// Returns the remaining input if parsing was successful, or the error if we encountered an error.
+ pub fn finish(mut self) -> IResult<I, (), E> {
+ match self.state.take().unwrap() {
+ State::Running | State::Done => Ok((self.input, ())),
+ State::Failure(e) => Err(ErrMode::Cut(e)),
+ State::Incomplete(i) => Err(ErrMode::Incomplete(i)),
+ }
+ }
+}
+
+impl<'a, F, I, O, E> core::iter::Iterator for &'a mut ParserIterator<F, I, O, E>
+where
+ F: Parser<I, O, E>,
+ I: Stream,
+{
+ type Item = O;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ if let State::Running = self.state.take().unwrap() {
+ let input = self.input.clone();
+
+ match self.parser.parse_next(input) {
+ Ok((i, o)) => {
+ self.input = i;
+ self.state = Some(State::Running);
+ Some(o)
+ }
+ Err(ErrMode::Backtrack(_)) => {
+ self.state = Some(State::Done);
+ None
+ }
+ Err(ErrMode::Cut(e)) => {
+ self.state = Some(State::Failure(e));
+ None
+ }
+ Err(ErrMode::Incomplete(i)) => {
+ self.state = Some(State::Incomplete(i));
+ None
+ }
+ }
+ } else {
+ None
+ }
+ }
+}
+
+enum State<E> {
+ Running,
+ Done,
+ Failure(E),
+ Incomplete(Needed),
+}
+
+/// Always succeeds with given value without consuming any input.
+///
+/// For example, it can be used as the last alternative in `alt` to
+/// specify the default case.
+///
+/// **Note:** This never advances the [`Stream`]
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error};
+/// # use winnow::prelude::*;
+/// use winnow::combinator::alt;
+/// use winnow::combinator::success;
+///
+/// let mut parser = success::<_,_,Error<_>>(10);
+/// assert_eq!(parser.parse_next("xyz"), Ok(("xyz", 10)));
+///
+/// fn sign(input: &str) -> IResult<&str, isize> {
+/// alt((
+/// '-'.value(-1),
+/// '+'.value(1),
+/// success::<_,_,Error<_>>(1)
+/// )).parse_next(input)
+/// }
+/// assert_eq!(sign("+10"), Ok(("10", 1)));
+/// assert_eq!(sign("-10"), Ok(("10", -1)));
+/// assert_eq!(sign("10"), Ok(("10", 1)));
+/// ```
+#[doc(alias = "value")]
+#[doc(alias = "empty")]
+pub fn success<I: Stream, O: Clone, E: ParseError<I>>(val: O) -> impl Parser<I, O, E> {
+ trace("success", move |input: I| Ok((input, val.clone())))
+}
+
+/// A parser which always fails.
+///
+/// For example, it can be used as the last alternative in `alt` to
+/// control the error message given.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult};
+/// use winnow::combinator::fail;
+///
+/// let s = "string";
+/// assert_eq!(fail::<_, &str, _>(s), Err(ErrMode::Backtrack(Error::new(s, ErrorKind::Fail))));
+/// ```
+#[doc(alias = "unexpected")]
+pub fn fail<I: Stream, O, E: ParseError<I>>(i: I) -> IResult<I, O, E> {
+ trace("fail", |i| {
+ Err(ErrMode::from_error_kind(i, ErrorKind::Fail))
+ })
+ .parse_next(i)
+}
diff --git a/vendor/winnow-0.4.7/src/combinator/mod.rs b/vendor/winnow-0.4.7/src/combinator/mod.rs
new file mode 100644
index 000000000..d76ef8e5f
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/combinator/mod.rs
@@ -0,0 +1,172 @@
+//! # List of parsers and combinators
+//!
+//! **Note**: this list is meant to provide a nicer way to find a parser than reading through the documentation on docs.rs. Function combinators are organized in module so they are a bit easier to find.
+//!
+//! ## Basic elements
+//!
+//! Those are used to recognize the lowest level elements of your grammar, like, "here is a dot", or "here is an big endian integer".
+//!
+//! | combinator | usage | input | output | comment |
+//! |---|---|---|---|---|
+//! | [`one_of`][crate::token::one_of] | `one_of("abc")` | `"abc"` | `Ok(("bc", 'a'))` |Matches one of the provided characters (works with non ASCII characters too)|
+//! | [`none_of`][crate::token::none_of] | `none_of("abc")` | `"xyab"` | `Ok(("yab", 'x'))` |Matches anything but the provided characters|
+//! | [`tag`][crate::token::tag] | `"hello"` | `"hello world"` | `Ok((" world", "hello"))` |Recognizes a specific suite of characters or bytes|
+//! | [`tag_no_case`][crate::token::tag_no_case] | `tag_no_case("hello")` | `"HeLLo World"` | `Ok((" World", "HeLLo"))` |Case insensitive comparison. Note that case insensitive comparison is not well defined for unicode, and that you might have bad surprises|
+//! | [`take`][crate::token::take] | `take(4)` | `"hello"` | `Ok(("o", "hell"))` |Takes a specific number of bytes or characters|
+//! | [`take_while`][crate::token::take_while] | `take_while(0.., is_alphabetic)` | `"abc123"` | `Ok(("123", "abc"))` |Returns the longest list of bytes for which the provided pattern matches.|
+//! | [`take_till0`][crate::token::take_till0] | `take_till0(is_alphabetic)` | `"123abc"` | `Ok(("abc", "123"))` |Returns the longest list of bytes or characters until the provided pattern matches. `take_till1` does the same, but must return at least one character. This is the reverse behaviour from `take_while`: `take_till(f)` is equivalent to `take_while(0.., \|c\| !f(c))`|
+//! | [`take_until0`][crate::token::take_until0] | `take_until0("world")` | `"Hello world"` | `Ok(("world", "Hello "))` |Returns the longest list of bytes or characters until the provided tag is found. `take_until1` does the same, but must return at least one character|
+//!
+//! ## Choice combinators
+//!
+//! | combinator | usage | input | output | comment |
+//! |---|---|---|---|---|
+//! | [`alt`][crate::combinator::alt] | `alt(("ab", "cd"))` | `"cdef"` | `Ok(("ef", "cd"))` |Try a list of parsers and return the result of the first successful one|
+//! | [`dispatch`][crate::combinator::dispatch] | \- | \- | \- | `match` for parsers |
+//! | [`permutation`][crate::combinator::permutation] | `permutation(("ab", "cd", "12"))` | `"cd12abc"` | `Ok(("c", ("ab", "cd", "12"))` |Succeeds when all its child parser have succeeded, whatever the order|
+//!
+//! ## Sequence combinators
+//!
+//! | combinator | usage | input | output | comment |
+//! |---|---|---|---|---|
+//! | [`(...)` (tuples)][crate::Parser] | `("ab", "XY", take(1))` | `"abXYZ!"` | `Ok(("!", ("ab", "XY", "Z")))` |Chains parsers and assemble the sub results in a tuple. You can use as many child parsers as you can put elements in a tuple|
+//! | [`delimited`] | `delimited(char('('), take(2), char(')'))` | `"(ab)cd"` | `Ok(("cd", "ab"))` ||
+//! | [`preceded`] | `preceded("ab", "XY")` | `"abXYZ"` | `Ok(("Z", "XY"))` ||
+//! | [`terminated`] | `terminated("ab", "XY")` | `"abXYZ"` | `Ok(("Z", "ab"))` ||
+//! | [`separated_pair`] | `separated_pair("hello", char(','), "world")` | `"hello,world!"` | `Ok(("!", ("hello", "world")))` ||
+//!
+//! ## Applying a parser multiple times
+//!
+//! | combinator | usage | input | output | comment |
+//! |---|---|---|---|---|
+//! | [`repeat`][crate::combinator::repeat] | `repeat(1..=3, "ab")` | `"ababc"` | `Ok(("c", vec!["ab", "ab"]))` |Applies the parser between m and n times (n included) and returns the list of results in a Vec|
+//! | [`repeat_till0`][crate::combinator::repeat_till0] | `repeat_till0(tag( "ab" ), tag( "ef" ))` | `"ababefg"` | `Ok(("g", (vec!["ab", "ab"], "ef")))` |Applies the first parser until the second applies. Returns a tuple containing the list of results from the first in a Vec and the result of the second|
+//! | [`separated0`][crate::combinator::separated0] | `separated0("ab", ",")` | `"ab,ab,ab."` | `Ok((".", vec!["ab", "ab", "ab"]))` |`separated1` works like `separated0` but must returns at least one element|
+//! | [`fold_repeat`][crate::combinator::fold_repeat] | `fold_repeat(1..=2, be_u8, \|\| 0, \|acc, item\| acc + item)` | `[1, 2, 3]` | `Ok(([3], 3))` |Applies the parser between m and n times (n included) and folds the list of return value|
+//!
+//! ## Partial related
+//!
+//! - [`eof`][eof]: Returns its input if it is at the end of input data
+//! - [`Parser::complete_err`]: Replaces an `Incomplete` returned by the child parser with an `Backtrack`
+//!
+//! ## Modifiers
+//!
+//! - [`cond`][cond]: Conditional combinator. Wraps another parser and calls it if the condition is met
+//! - [`Parser::flat_map`][crate::Parser::flat_map]: method to map a new parser from the output of the first parser, then apply that parser over the rest of the input
+//! - [`Parser::value`][crate::Parser::value]: method to replace the result of a parser
+//! - [`Parser::map`][crate::Parser::map]: method to map a function on the result of a parser
+//! - [`Parser::and_then`][crate::Parser::and_then]: Applies a second parser over the output of the first one
+//! - [`Parser::verify_map`][Parser::verify_map]: Maps a function returning an `Option` on the output of a parser
+//! - [`Parser::try_map`][Parser::try_map]: Maps a function returning a `Result` on the output of a parser
+//! - [`Parser::parse_to`][crate::Parser::parse_to]: Apply [`std::str::FromStr`] to the output of the parser
+//! - [`not`][not]: Returns a result only if the embedded parser returns `Backtrack` or `Incomplete`. Does not consume the input
+//! - [`opt`][opt]: Make the underlying parser optional
+//! - [`peek`][peek]: Returns a result without consuming the input
+//! - [`Parser::recognize`][Parser::recognize]: If the child parser was successful, return the consumed input as the produced value
+//! - [`Parser::with_recognized`][Parser::with_recognized]: If the child parser was successful, return a tuple of the consumed input and the produced output.
+//! - [`Parser::span`][Parser::span]: If the child parser was successful, return the location of the consumed input as the produced value
+//! - [`Parser::with_span`][Parser::with_span]: If the child parser was successful, return a tuple of the location of the consumed input and the produced output.
+//! - [`Parser::verify`]: Returns the result of the child parser if it satisfies a verification function
+//!
+//! ## Error management and debugging
+//!
+//! - [`cut_err`]: Commit the parse result, disallowing alternative parsers from being attempted
+//! - [`backtrack_err`]: Attemmpts a parse, allowing alternative parsers to be attempted despite
+//! use of `cut_err`
+//! - [`Parser::context`]: Add context to the error if the parser fails
+//! - [`trace`][crate::trace::trace]: Print the parse state with the `debug` feature flag
+//! - [`todo()`]: Placeholder parser
+//!
+//! ## Remaining combinators
+//!
+//! - [`success`][success]: Returns a value without consuming any input, always succeeds
+//! - [`fail`][fail]: Inversion of `success`. Always fails.
+//! - [`Parser::by_ref`]: Allow moving `&mut impl Parser` into other parsers
+//!
+//! ## Text parsing
+//!
+//! - [`any`][crate::token::any]: Matches one token
+//! - [`tab`][crate::ascii::tab]: Matches a tab character `\t`
+//! - [`crlf`][crate::ascii::crlf]: Recognizes the string `\r\n`
+//! - [`line_ending`][crate::ascii::line_ending]: Recognizes an end of line (both `\n` and `\r\n`)
+//! - [`newline`][crate::ascii::newline]: Matches a newline character `\n`
+//! - [`not_line_ending`][crate::ascii::not_line_ending]: Recognizes a string of any char except `\r` or `\n`
+//! - [`rest`][rest]: Return the remaining input
+//!
+//! - [`alpha0`][crate::ascii::alpha0]: Recognizes zero or more lowercase and uppercase alphabetic characters: `[a-zA-Z]`. [`alpha1`][crate::ascii::alpha1] does the same but returns at least one character
+//! - [`alphanumeric0`][crate::ascii::alphanumeric0]: Recognizes zero or more numerical and alphabetic characters: `[0-9a-zA-Z]`. [`alphanumeric1`][crate::ascii::alphanumeric1] does the same but returns at least one character
+//! - [`space0`][crate::ascii::space0]: Recognizes zero or more spaces and tabs. [`space1`][crate::ascii::space1] does the same but returns at least one character
+//! - [`multispace0`][crate::ascii::multispace0]: Recognizes zero or more spaces, tabs, carriage returns and line feeds. [`multispace1`][crate::ascii::multispace1] does the same but returns at least one character
+//! - [`digit0`][crate::ascii::digit0]: Recognizes zero or more numerical characters: `[0-9]`. [`digit1`][crate::ascii::digit1] does the same but returns at least one character
+//! - [`hex_digit0`][crate::ascii::hex_digit0]: Recognizes zero or more hexadecimal numerical characters: `[0-9A-Fa-f]`. [`hex_digit1`][crate::ascii::hex_digit1] does the same but returns at least one character
+//! - [`oct_digit0`][crate::ascii::oct_digit0]: Recognizes zero or more octal characters: `[0-7]`. [`oct_digit1`][crate::ascii::oct_digit1] does the same but returns at least one character
+//!
+//! - [`float`][crate::ascii::float]: Parse a floating point number in a byte string
+//! - [`dec_int`][crate::ascii::dec_uint]: Decode a variable-width, decimal signed integer
+//! - [`dec_uint`][crate::ascii::dec_uint]: Decode a variable-width, decimal unsigned integer
+//! - [`hex_uint`][crate::ascii::hex_uint]: Decode a variable-width, hexadecimal integer
+//!
+//! - [`escaped`][crate::ascii::escaped]: Matches a byte string with escaped characters
+//! - [`escaped_transform`][crate::ascii::escaped_transform]: Matches a byte string with escaped characters, and returns a new string with the escaped characters replaced
+//!
+//! ### Character test functions
+//!
+//! Use these functions with a combinator like `take_while`:
+//!
+//! - [`AsChar::is_alpha`][crate::stream::AsChar::is_alpha]: Tests if byte is ASCII alphabetic: `[A-Za-z]`
+//! - [`AsChar::is_alphanum`][crate::stream::AsChar::is_alphanum]: Tests if byte is ASCII alphanumeric: `[A-Za-z0-9]`
+//! - [`AsChar::is_dec_digit`][crate::stream::AsChar::is_dec_digit]: Tests if byte is ASCII digit: `[0-9]`
+//! - [`AsChar::is_hex_digit`][crate::stream::AsChar::is_hex_digit]: Tests if byte is ASCII hex digit: `[0-9A-Fa-f]`
+//! - [`AsChar::is_oct_digit`][crate::stream::AsChar::is_oct_digit]: Tests if byte is ASCII octal digit: `[0-7]`
+//! - [`AsChar::is_space`][crate::stream::AsChar::is_space]: Tests if byte is ASCII space or tab: `[ \t]`
+//! - [`AsChar::is_newline`][crate::stream::AsChar::is_newline]: Tests if byte is ASCII newline: `[\n]`
+//!
+//! ## Binary format parsing
+//!
+//! - [`length_count`][crate::binary::length_count] Gets a number from the first parser, then applies the second parser that many times
+//! - [`length_data`][crate::binary::length_data]: Gets a number from the first parser, then takes a subslice of the input of that size, and returns that subslice
+//! - [`length_value`][crate::binary::length_value]: Gets a number from the first parser, takes a subslice of the input of that size, then applies the second parser on that subslice. If the second parser returns `Incomplete`, `length_value` will return an error
+//!
+//! ### Integers
+//!
+//! Parsing integers from binary formats can be done in two ways: With parser functions, or combinators with configurable endianness.
+//!
+//! - **configurable endianness:** [`i16`][crate::binary::i16], [`i32`][crate::binary::i32],
+//! [`i64`][crate::binary::i64], [`u16`][crate::binary::u16], [`u32`][crate::binary::u32],
+//! [`u64`][crate::binary::u64] are combinators that take as argument a
+//! [`winnow::binary::Endianness`][crate::binary::Endianness], like this: `i16(endianness)`. If the
+//! parameter is `winnow::binary::Endianness::Big`, parse a big endian `i16` integer, otherwise a
+//! little endian `i16` integer.
+//! - **fixed endianness**: The functions are prefixed by `be_` for big endian numbers, and by `le_` for little endian numbers, and the suffix is the type they parse to. As an example, `be_u32` parses a big endian unsigned integer stored in 32 bits.
+//! - [`be_f32`][crate::binary::be_f32], [`be_f64`][crate::binary::be_f64]: Big endian floating point numbers
+//! - [`le_f32`][crate::binary::le_f32], [`le_f64`][crate::binary::le_f64]: Little endian floating point numbers
+//! - [`be_i8`][crate::binary::be_i8], [`be_i16`][crate::binary::be_i16], [`be_i24`][crate::binary::be_i24], [`be_i32`][crate::binary::be_i32], [`be_i64`][crate::binary::be_i64], [`be_i128`][crate::binary::be_i128]: Big endian signed integers
+//! - [`be_u8`][crate::binary::be_u8], [`be_u16`][crate::binary::be_u16], [`be_u24`][crate::binary::be_u24], [`be_u32`][crate::binary::be_u32], [`be_u64`][crate::binary::be_u64], [`be_u128`][crate::binary::be_u128]: Big endian unsigned integers
+//! - [`le_i8`][crate::binary::le_i8], [`le_i16`][crate::binary::le_i16], [`le_i24`][crate::binary::le_i24], [`le_i32`][crate::binary::le_i32], [`le_i64`][crate::binary::le_i64], [`le_i128`][crate::binary::le_i128]: Little endian signed integers
+//! - [`le_u8`][crate::binary::le_u8], [`le_u16`][crate::binary::le_u16], [`le_u24`][crate::binary::le_u24], [`le_u32`][crate::binary::le_u32], [`le_u64`][crate::binary::le_u64], [`le_u128`][crate::binary::le_u128]: Little endian unsigned integers
+//!
+//! ### Bit stream parsing
+//!
+//! - [`bits`][crate::binary::bits::bits]: Transforms the current input type (byte slice `&[u8]`) to a bit stream on which bit specific parsers and more general combinators can be applied
+//! - [`bytes`][crate::binary::bits::bytes]: Transforms its bits stream input back into a byte slice for the underlying parser
+//! - [`take`][crate::binary::bits::take]: Take a set number of its
+//! - [`tag`][crate::binary::bits::tag]: Check if a set number of bis matches a pattern
+//! - [`bool`][crate::binary::bits::bool]: Match any one bit
+
+mod branch;
+mod core;
+mod multi;
+mod parser;
+mod sequence;
+
+#[cfg(test)]
+mod tests;
+
+pub use self::branch::*;
+pub use self::core::*;
+pub use self::multi::*;
+pub use self::parser::*;
+pub use self::sequence::*;
+
+#[allow(unused_imports)]
+use crate::Parser;
diff --git a/vendor/winnow-0.4.7/src/combinator/multi.rs b/vendor/winnow-0.4.7/src/combinator/multi.rs
new file mode 100644
index 000000000..950432601
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/combinator/multi.rs
@@ -0,0 +1,987 @@
+//! Combinators applying their child parser multiple times
+
+use crate::error::ErrMode;
+use crate::error::ErrorKind;
+use crate::error::ParseError;
+use crate::stream::Accumulate;
+use crate::stream::Range;
+use crate::stream::Stream;
+use crate::trace::trace;
+use crate::IResult;
+use crate::Parser;
+
+/// [`Accumulate`] the output of a parser into a container, like `Vec`
+///
+/// This stops before `n` when the parser returns [`ErrMode::Backtrack`]. To instead chain an error up, see
+/// [`cut_err`][crate::combinator::cut_err].
+///
+/// # Arguments
+/// * `m` The minimum number of iterations.
+/// * `n` The maximum number of iterations.
+/// * `f` The parser to apply.
+///
+/// To recognize a series of tokens, [`Accumulate`] into a `()` and then [`Parser::recognize`].
+///
+/// **Warning:** If the parser passed to `repeat` accepts empty inputs
+/// (like `alpha0` or `digit0`), `repeat` will return an error,
+/// to prevent going into an infinite loop.
+///
+/// # Example
+///
+/// Zero or more reptitions:
+/// ```rust
+/// # #[cfg(feature = "std")] {
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::combinator::repeat;
+/// use winnow::token::tag;
+///
+/// fn parser(s: &str) -> IResult<&str, Vec<&str>> {
+/// repeat(0.., "abc").parse_next(s)
+/// }
+///
+/// assert_eq!(parser("abcabc"), Ok(("", vec!["abc", "abc"])));
+/// assert_eq!(parser("abc123"), Ok(("123", vec!["abc"])));
+/// assert_eq!(parser("123123"), Ok(("123123", vec![])));
+/// assert_eq!(parser(""), Ok(("", vec![])));
+/// # }
+/// ```
+///
+/// One or more reptitions:
+/// ```rust
+/// # #[cfg(feature = "std")] {
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::combinator::repeat;
+/// use winnow::token::tag;
+///
+/// fn parser(s: &str) -> IResult<&str, Vec<&str>> {
+/// repeat(1.., "abc").parse_next(s)
+/// }
+///
+/// assert_eq!(parser("abcabc"), Ok(("", vec!["abc", "abc"])));
+/// assert_eq!(parser("abc123"), Ok(("123", vec!["abc"])));
+/// assert_eq!(parser("123123"), Err(ErrMode::Backtrack(Error::new("123123", ErrorKind::Tag))));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Tag))));
+/// # }
+/// ```
+///
+/// Fixed number of repeitions:
+/// ```rust
+/// # #[cfg(feature = "std")] {
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::combinator::repeat;
+/// use winnow::token::tag;
+///
+/// fn parser(s: &str) -> IResult<&str, Vec<&str>> {
+/// repeat(2, "abc").parse_next(s)
+/// }
+///
+/// assert_eq!(parser("abcabc"), Ok(("", vec!["abc", "abc"])));
+/// assert_eq!(parser("abc123"), Err(ErrMode::Backtrack(Error::new("123", ErrorKind::Tag))));
+/// assert_eq!(parser("123123"), Err(ErrMode::Backtrack(Error::new("123123", ErrorKind::Tag))));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Tag))));
+/// assert_eq!(parser("abcabcabc"), Ok(("abc", vec!["abc", "abc"])));
+/// # }
+/// ```
+///
+/// Arbitrary reptitions:
+/// ```rust
+/// # #[cfg(feature = "std")] {
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::combinator::repeat;
+/// use winnow::token::tag;
+///
+/// fn parser(s: &str) -> IResult<&str, Vec<&str>> {
+/// repeat(0..=2, "abc").parse_next(s)
+/// }
+///
+/// assert_eq!(parser("abcabc"), Ok(("", vec!["abc", "abc"])));
+/// assert_eq!(parser("abc123"), Ok(("123", vec!["abc"])));
+/// assert_eq!(parser("123123"), Ok(("123123", vec![])));
+/// assert_eq!(parser(""), Ok(("", vec![])));
+/// assert_eq!(parser("abcabcabc"), Ok(("abc", vec!["abc", "abc"])));
+/// # }
+/// ```
+#[doc(alias = "many0")]
+#[doc(alias = "count")]
+#[doc(alias = "many0_count")]
+#[doc(alias = "many1")]
+#[doc(alias = "many1_count")]
+#[doc(alias = "many_m_n")]
+#[doc(alias = "repeated")]
+#[doc(alias = "skip_many")]
+#[doc(alias = "skip_many1")]
+#[inline(always)]
+pub fn repeat<I, O, C, E, F>(range: impl Into<Range>, mut f: F) -> impl Parser<I, C, E>
+where
+ I: Stream,
+ C: Accumulate<O>,
+ F: Parser<I, O, E>,
+ E: ParseError<I>,
+{
+ let Range {
+ start_inclusive,
+ end_inclusive,
+ } = range.into();
+ trace("repeat", move |i: I| {
+ match (start_inclusive, end_inclusive) {
+ (0, None) => repeat0_(&mut f, i),
+ (1, None) => repeat1_(&mut f, i),
+ (start, end) if Some(start) == end => repeat_n_(start, &mut f, i),
+ (start, end) => repeat_m_n_(start, end.unwrap_or(usize::MAX), &mut f, i),
+ }
+ })
+}
+
+/// Deprecated, replaced by [`repeat`]
+#[deprecated(since = "0.4.6", note = "Replaced with `repeat`")]
+#[inline(always)]
+pub fn repeat0<I, O, C, E, F>(f: F) -> impl Parser<I, C, E>
+where
+ I: Stream,
+ C: Accumulate<O>,
+ F: Parser<I, O, E>,
+ E: ParseError<I>,
+{
+ repeat(0.., f)
+}
+
+fn repeat0_<I, O, C, E, F>(f: &mut F, mut i: I) -> IResult<I, C, E>
+where
+ I: Stream,
+ C: Accumulate<O>,
+ F: Parser<I, O, E>,
+ E: ParseError<I>,
+{
+ let mut acc = C::initial(None);
+ loop {
+ let len = i.eof_offset();
+ match f.parse_next(i.clone()) {
+ Err(ErrMode::Backtrack(_)) => return Ok((i, acc)),
+ Err(e) => return Err(e),
+ Ok((i1, o)) => {
+ // infinite loop check: the parser must always consume
+ if i1.eof_offset() == len {
+ return Err(ErrMode::assert(i, "`repeat` parsers must always consume"));
+ }
+
+ i = i1;
+ acc.accumulate(o);
+ }
+ }
+ }
+}
+
+/// Deprecated, replaced by [`repeat`]
+#[deprecated(since = "0.4.6", note = "Replaced with `repeat`")]
+#[inline(always)]
+pub fn repeat1<I, O, C, E, F>(f: F) -> impl Parser<I, C, E>
+where
+ I: Stream,
+ C: Accumulate<O>,
+ F: Parser<I, O, E>,
+ E: ParseError<I>,
+{
+ repeat(1.., f)
+}
+
+fn repeat1_<I, O, C, E, F>(f: &mut F, mut i: I) -> IResult<I, C, E>
+where
+ I: Stream,
+ C: Accumulate<O>,
+ F: Parser<I, O, E>,
+ E: ParseError<I>,
+{
+ match f.parse_next(i.clone()) {
+ Err(e) => Err(e.append(i, ErrorKind::Many)),
+ Ok((i1, o)) => {
+ let mut acc = C::initial(None);
+ acc.accumulate(o);
+ i = i1;
+
+ loop {
+ let len = i.eof_offset();
+ match f.parse_next(i.clone()) {
+ Err(ErrMode::Backtrack(_)) => return Ok((i, acc)),
+ Err(e) => return Err(e),
+ Ok((i1, o)) => {
+ // infinite loop check: the parser must always consume
+ if i1.eof_offset() == len {
+ return Err(ErrMode::assert(i, "`repeat` parsers must always consume"));
+ }
+
+ i = i1;
+ acc.accumulate(o);
+ }
+ }
+ }
+ }
+ }
+}
+
+/// [`Accumulate`] the output of parser `f` into a container, like `Vec`, until the parser `g`
+/// produces a result.
+///
+/// Returns a tuple of the results of `f` in a `Vec` and the result of `g`.
+///
+/// `f` keeps going so long as `g` produces [`ErrMode::Backtrack`]. To instead chain an error up, see [`cut_err`][crate::combinator::cut_err].
+///
+/// To recognize a series of tokens, [`Accumulate`] into a `()` and then [`Parser::recognize`].
+///
+/// # Example
+///
+/// ```rust
+/// # #[cfg(feature = "std")] {
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::combinator::repeat_till0;
+/// use winnow::token::tag;
+///
+/// fn parser(s: &str) -> IResult<&str, (Vec<&str>, &str)> {
+/// repeat_till0("abc", "end").parse_next(s)
+/// };
+///
+/// assert_eq!(parser("abcabcend"), Ok(("", (vec!["abc", "abc"], "end"))));
+/// assert_eq!(parser("abc123end"), Err(ErrMode::Backtrack(Error::new("123end", ErrorKind::Tag))));
+/// assert_eq!(parser("123123end"), Err(ErrMode::Backtrack(Error::new("123123end", ErrorKind::Tag))));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Tag))));
+/// assert_eq!(parser("abcendefg"), Ok(("efg", (vec!["abc"], "end"))));
+/// # }
+/// ```
+#[doc(alias = "many_till0")]
+pub fn repeat_till0<I, O, C, P, E, F, G>(mut f: F, mut g: G) -> impl Parser<I, (C, P), E>
+where
+ I: Stream,
+ C: Accumulate<O>,
+ F: Parser<I, O, E>,
+ G: Parser<I, P, E>,
+ E: ParseError<I>,
+{
+ trace("repeat_till0", move |mut i: I| {
+ let mut res = C::initial(None);
+ loop {
+ let len = i.eof_offset();
+ match g.parse_next(i.clone()) {
+ Ok((i1, o)) => return Ok((i1, (res, o))),
+ Err(ErrMode::Backtrack(_)) => {
+ match f.parse_next(i.clone()) {
+ Err(e) => return Err(e.append(i, ErrorKind::Many)),
+ Ok((i1, o)) => {
+ // infinite loop check: the parser must always consume
+ if i1.eof_offset() == len {
+ return Err(ErrMode::assert(
+ i,
+ "`repeat` parsers must always consume",
+ ));
+ }
+
+ res.accumulate(o);
+ i = i1;
+ }
+ }
+ }
+ Err(e) => return Err(e),
+ }
+ }
+ })
+}
+
+/// [`Accumulate`] the output of a parser, interleaed with `sep`
+///
+/// This stops when either parser returns [`ErrMode::Backtrack`]. To instead chain an error up, see
+/// [`cut_err`][crate::combinator::cut_err].
+///
+/// # Arguments
+/// * `parser` Parses the elements of the list.
+/// * `sep` Parses the separator between list elements.
+///
+/// # Example
+///
+/// ```rust
+/// # #[cfg(feature = "std")] {
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::combinator::separated0;
+/// use winnow::token::tag;
+///
+/// fn parser(s: &str) -> IResult<&str, Vec<&str>> {
+/// separated0("abc", "|").parse_next(s)
+/// }
+///
+/// assert_eq!(parser("abc|abc|abc"), Ok(("", vec!["abc", "abc", "abc"])));
+/// assert_eq!(parser("abc123abc"), Ok(("123abc", vec!["abc"])));
+/// assert_eq!(parser("abc|def"), Ok(("|def", vec!["abc"])));
+/// assert_eq!(parser(""), Ok(("", vec![])));
+/// assert_eq!(parser("def|abc"), Ok(("def|abc", vec![])));
+/// # }
+/// ```
+#[doc(alias = "sep_by")]
+#[doc(alias = "separated_list0")]
+pub fn separated0<I, O, C, O2, E, P, S>(mut parser: P, mut sep: S) -> impl Parser<I, C, E>
+where
+ I: Stream,
+ C: Accumulate<O>,
+ P: Parser<I, O, E>,
+ S: Parser<I, O2, E>,
+ E: ParseError<I>,
+{
+ trace("separated0", move |mut i: I| {
+ let mut res = C::initial(None);
+
+ match parser.parse_next(i.clone()) {
+ Err(ErrMode::Backtrack(_)) => return Ok((i, res)),
+ Err(e) => return Err(e),
+ Ok((i1, o)) => {
+ res.accumulate(o);
+ i = i1;
+ }
+ }
+
+ loop {
+ let len = i.eof_offset();
+ match sep.parse_next(i.clone()) {
+ Err(ErrMode::Backtrack(_)) => return Ok((i, res)),
+ Err(e) => return Err(e),
+ Ok((i1, _)) => {
+ // infinite loop check: the parser must always consume
+ if i1.eof_offset() == len {
+ return Err(ErrMode::assert(i, "sep parsers must always consume"));
+ }
+
+ match parser.parse_next(i1.clone()) {
+ Err(ErrMode::Backtrack(_)) => return Ok((i, res)),
+ Err(e) => return Err(e),
+ Ok((i2, o)) => {
+ res.accumulate(o);
+ i = i2;
+ }
+ }
+ }
+ }
+ }
+ })
+}
+
+/// [`Accumulate`] the output of a parser, interleaed with `sep`
+///
+/// Fails if the element parser does not produce at least one element.$
+///
+/// This stops when either parser returns [`ErrMode::Backtrack`]. To instead chain an error up, see
+/// [`cut_err`][crate::combinator::cut_err].
+///
+/// # Arguments
+/// * `sep` Parses the separator between list elements.
+/// * `f` Parses the elements of the list.
+///
+/// # Example
+///
+/// ```rust
+/// # #[cfg(feature = "std")] {
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::combinator::separated1;
+/// use winnow::token::tag;
+///
+/// fn parser(s: &str) -> IResult<&str, Vec<&str>> {
+/// separated1("abc", "|").parse_next(s)
+/// }
+///
+/// assert_eq!(parser("abc|abc|abc"), Ok(("", vec!["abc", "abc", "abc"])));
+/// assert_eq!(parser("abc123abc"), Ok(("123abc", vec!["abc"])));
+/// assert_eq!(parser("abc|def"), Ok(("|def", vec!["abc"])));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Tag))));
+/// assert_eq!(parser("def|abc"), Err(ErrMode::Backtrack(Error::new("def|abc", ErrorKind::Tag))));
+/// # }
+/// ```
+#[doc(alias = "sep_by1")]
+#[doc(alias = "separated_list1")]
+pub fn separated1<I, O, C, O2, E, P, S>(mut parser: P, mut sep: S) -> impl Parser<I, C, E>
+where
+ I: Stream,
+ C: Accumulate<O>,
+ P: Parser<I, O, E>,
+ S: Parser<I, O2, E>,
+ E: ParseError<I>,
+{
+ trace("separated1", move |mut i: I| {
+ let mut res = C::initial(None);
+
+ // Parse the first element
+ match parser.parse_next(i.clone()) {
+ Err(e) => return Err(e),
+ Ok((i1, o)) => {
+ res.accumulate(o);
+ i = i1;
+ }
+ }
+
+ loop {
+ let len = i.eof_offset();
+ match sep.parse_next(i.clone()) {
+ Err(ErrMode::Backtrack(_)) => return Ok((i, res)),
+ Err(e) => return Err(e),
+ Ok((i1, _)) => {
+ // infinite loop check: the parser must always consume
+ if i1.eof_offset() == len {
+ return Err(ErrMode::assert(i, "sep parsers must always consume"));
+ }
+
+ match parser.parse_next(i1.clone()) {
+ Err(ErrMode::Backtrack(_)) => return Ok((i, res)),
+ Err(e) => return Err(e),
+ Ok((i2, o)) => {
+ res.accumulate(o);
+ i = i2;
+ }
+ }
+ }
+ }
+ }
+ })
+}
+
+/// Alternates between two parsers, merging the results (left associative)
+///
+/// This stops when either parser returns [`ErrMode::Backtrack`]. To instead chain an error up, see
+/// [`cut_err`][crate::combinator::cut_err].
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::combinator::separated_foldl1;
+/// use winnow::ascii::dec_int;
+///
+/// fn parser(s: &str) -> IResult<&str, i32> {
+/// separated_foldl1(dec_int, "-", |l, _, r| l - r).parse_next(s)
+/// }
+///
+/// assert_eq!(parser("9-3-5"), Ok(("", 1)));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Slice))));
+/// assert_eq!(parser("def|abc"), Err(ErrMode::Backtrack(Error::new("def|abc", ErrorKind::Slice))));
+/// ```
+pub fn separated_foldl1<I, O, O2, E, P, S, Op>(
+ mut parser: P,
+ mut sep: S,
+ op: Op,
+) -> impl Parser<I, O, E>
+where
+ I: Stream,
+ P: Parser<I, O, E>,
+ S: Parser<I, O2, E>,
+ E: ParseError<I>,
+ Op: Fn(O, O2, O) -> O,
+{
+ trace("separated_foldl1", move |i: I| {
+ let (mut i, mut ol) = parser.parse_next(i)?;
+
+ loop {
+ let len = i.eof_offset();
+ match sep.parse_next(i.clone()) {
+ Err(ErrMode::Backtrack(_)) => return Ok((i, ol)),
+ Err(e) => return Err(e),
+ Ok((i1, s)) => {
+ // infinite loop check: the parser must always consume
+ if i1.eof_offset() == len {
+ return Err(ErrMode::assert(i, "`repeat` parsers must always consume"));
+ }
+
+ match parser.parse_next(i1.clone()) {
+ Err(ErrMode::Backtrack(_)) => return Ok((i, ol)),
+ Err(e) => return Err(e),
+ Ok((i2, or)) => {
+ ol = op(ol, s, or);
+ i = i2;
+ }
+ }
+ }
+ }
+ }
+ })
+}
+
+/// Alternates between two parsers, merging the results (right associative)
+///
+/// This stops when either parser returns [`ErrMode::Backtrack`]. To instead chain an error up, see
+/// [`cut_err`][crate::combinator::cut_err].
+///
+/// # Example
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::combinator::separated_foldr1;
+/// use winnow::ascii::dec_uint;
+///
+/// fn parser(s: &str) -> IResult<&str, u32> {
+/// separated_foldr1(dec_uint, "^", |l: u32, _, r: u32| l.pow(r)).parse_next(s)
+/// }
+///
+/// assert_eq!(parser("2^3^2"), Ok(("", 512)));
+/// assert_eq!(parser("2"), Ok(("", 2)));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Slice))));
+/// assert_eq!(parser("def|abc"), Err(ErrMode::Backtrack(Error::new("def|abc", ErrorKind::Slice))));
+/// ```
+#[cfg(feature = "alloc")]
+pub fn separated_foldr1<I, O, O2, E, P, S, Op>(
+ mut parser: P,
+ mut sep: S,
+ op: Op,
+) -> impl Parser<I, O, E>
+where
+ I: Stream,
+ P: Parser<I, O, E>,
+ S: Parser<I, O2, E>,
+ E: ParseError<I>,
+ Op: Fn(O, O2, O) -> O,
+{
+ trace("separated_foldr1", move |i: I| {
+ let (i, ol) = parser.parse_next(i)?;
+ let (i, all): (_, crate::lib::std::vec::Vec<(O2, O)>) =
+ repeat(0.., (sep.by_ref(), parser.by_ref())).parse_next(i)?;
+ if let Some((s, or)) = all
+ .into_iter()
+ .rev()
+ .reduce(|(sr, or), (sl, ol)| (sl, op(ol, sr, or)))
+ {
+ let merged = op(ol, s, or);
+ Ok((i, merged))
+ } else {
+ Ok((i, ol))
+ }
+ })
+}
+
+fn repeat_m_n_<I, O, C, E, F>(
+ min: usize,
+ max: usize,
+ parse: &mut F,
+ mut input: I,
+) -> IResult<I, C, E>
+where
+ I: Stream,
+ C: Accumulate<O>,
+ F: Parser<I, O, E>,
+ E: ParseError<I>,
+{
+ if min > max {
+ return Err(ErrMode::Cut(E::from_error_kind(input, ErrorKind::Many)));
+ }
+
+ let mut res = C::initial(Some(min));
+ for count in 0..max {
+ let len = input.eof_offset();
+ match parse.parse_next(input.clone()) {
+ Ok((tail, value)) => {
+ // infinite loop check: the parser must always consume
+ if tail.eof_offset() == len {
+ return Err(ErrMode::assert(
+ input,
+ "`repeat` parsers must always consume",
+ ));
+ }
+
+ res.accumulate(value);
+ input = tail;
+ }
+ Err(ErrMode::Backtrack(e)) => {
+ if count < min {
+ return Err(ErrMode::Backtrack(e.append(input, ErrorKind::Many)));
+ } else {
+ return Ok((input, res));
+ }
+ }
+ Err(e) => {
+ return Err(e);
+ }
+ }
+ }
+
+ Ok((input, res))
+}
+
+/// Deprecated, replaced by [`repeat`]
+#[deprecated(since = "0.4.6", note = "Replaced with `repeat`")]
+#[inline(always)]
+pub fn count<I, O, C, E, F>(f: F, count: usize) -> impl Parser<I, C, E>
+where
+ I: Stream,
+ C: Accumulate<O>,
+ F: Parser<I, O, E>,
+ E: ParseError<I>,
+{
+ repeat(count, f)
+}
+
+fn repeat_n_<I, O, C, E, F>(count: usize, f: &mut F, i: I) -> IResult<I, C, E>
+where
+ I: Stream,
+ C: Accumulate<O>,
+ F: Parser<I, O, E>,
+ E: ParseError<I>,
+{
+ let mut input = i.clone();
+ let mut res = C::initial(Some(count));
+
+ for _ in 0..count {
+ let input_ = input.clone();
+ match f.parse_next(input_) {
+ Ok((i, o)) => {
+ res.accumulate(o);
+ input = i;
+ }
+ Err(e) => {
+ return Err(e.append(i, ErrorKind::Many));
+ }
+ }
+ }
+
+ Ok((input, res))
+}
+
+/// Repeats the embedded parser, filling the given slice with results.
+///
+/// This parser fails if the input runs out before the given slice is full.
+///
+/// # Arguments
+/// * `f` The parser to apply.
+/// * `buf` The slice to fill
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::combinator::fill;
+/// use winnow::token::tag;
+///
+/// fn parser(s: &str) -> IResult<&str, [&str; 2]> {
+/// let mut buf = ["", ""];
+/// let (rest, ()) = fill("abc", &mut buf).parse_next(s)?;
+/// Ok((rest, buf))
+/// }
+///
+/// assert_eq!(parser("abcabc"), Ok(("", ["abc", "abc"])));
+/// assert_eq!(parser("abc123"), Err(ErrMode::Backtrack(Error::new("123", ErrorKind::Tag))));
+/// assert_eq!(parser("123123"), Err(ErrMode::Backtrack(Error::new("123123", ErrorKind::Tag))));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Tag))));
+/// assert_eq!(parser("abcabcabc"), Ok(("abc", ["abc", "abc"])));
+/// ```
+pub fn fill<'a, I, O, E, F>(mut f: F, buf: &'a mut [O]) -> impl Parser<I, (), E> + 'a
+where
+ I: Stream + 'a,
+ F: Parser<I, O, E> + 'a,
+ E: ParseError<I> + 'a,
+{
+ trace("fill", move |i: I| {
+ let mut input = i.clone();
+
+ for elem in buf.iter_mut() {
+ let input_ = input.clone();
+ match f.parse_next(input_) {
+ Ok((i, o)) => {
+ *elem = o;
+ input = i;
+ }
+ Err(e) => {
+ return Err(e.append(i, ErrorKind::Many));
+ }
+ }
+ }
+
+ Ok((input, ()))
+ })
+}
+
+/// Repeats the embedded parser `m..=n` times, calling `g` to gather the results
+///
+/// This stops before `n` when the parser returns [`ErrMode::Backtrack`]. To instead chain an error up, see
+/// [`cut_err`][crate::combinator::cut_err].
+///
+/// # Arguments
+/// * `m` The minimum number of iterations.
+/// * `n` The maximum number of iterations.
+/// * `f` The parser to apply.
+/// * `init` A function returning the initial value.
+/// * `g` The function that combines a result of `f` with
+/// the current accumulator.
+///
+/// **Warning:** If the parser passed to `fold_repeat` accepts empty inputs
+/// (like `alpha0` or `digit0`), `fold_repeat` will return an error,
+/// to prevent going into an infinite loop.
+///
+/// # Example
+///
+/// Zero or more repetitions:
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::combinator::fold_repeat;
+/// use winnow::token::tag;
+///
+/// fn parser(s: &str) -> IResult<&str, Vec<&str>> {
+/// fold_repeat(
+/// 0..,
+/// "abc",
+/// Vec::new,
+/// |mut acc: Vec<_>, item| {
+/// acc.push(item);
+/// acc
+/// }
+/// ).parse_next(s)
+/// }
+///
+/// assert_eq!(parser("abcabc"), Ok(("", vec!["abc", "abc"])));
+/// assert_eq!(parser("abc123"), Ok(("123", vec!["abc"])));
+/// assert_eq!(parser("123123"), Ok(("123123", vec![])));
+/// assert_eq!(parser(""), Ok(("", vec![])));
+/// ```
+///
+/// One or more repetitions:
+/// ```rust
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::combinator::fold_repeat;
+/// use winnow::token::tag;
+///
+/// fn parser(s: &str) -> IResult<&str, Vec<&str>> {
+/// fold_repeat(
+/// 1..,
+/// "abc",
+/// Vec::new,
+/// |mut acc: Vec<_>, item| {
+/// acc.push(item);
+/// acc
+/// }
+/// ).parse_next(s)
+/// }
+///
+/// assert_eq!(parser("abcabc"), Ok(("", vec!["abc", "abc"])));
+/// assert_eq!(parser("abc123"), Ok(("123", vec!["abc"])));
+/// assert_eq!(parser("123123"), Err(ErrMode::Backtrack(Error::new("123123", ErrorKind::Many))));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Many))));
+/// ```
+///
+/// Arbitrary number of repetitions:
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::combinator::fold_repeat;
+/// use winnow::token::tag;
+///
+/// fn parser(s: &str) -> IResult<&str, Vec<&str>> {
+/// fold_repeat(
+/// 0..=2,
+/// "abc",
+/// Vec::new,
+/// |mut acc: Vec<_>, item| {
+/// acc.push(item);
+/// acc
+/// }
+/// ).parse_next(s)
+/// }
+///
+/// assert_eq!(parser("abcabc"), Ok(("", vec!["abc", "abc"])));
+/// assert_eq!(parser("abc123"), Ok(("123", vec!["abc"])));
+/// assert_eq!(parser("123123"), Ok(("123123", vec![])));
+/// assert_eq!(parser(""), Ok(("", vec![])));
+/// assert_eq!(parser("abcabcabc"), Ok(("abc", vec!["abc", "abc"])));
+/// ```
+#[doc(alias = "fold_many0")]
+#[doc(alias = "fold_many1")]
+#[doc(alias = "fold_many_m_n")]
+#[inline(always)]
+pub fn fold_repeat<I, O, E, F, G, H, R>(
+ range: impl Into<Range>,
+ mut f: F,
+ mut init: H,
+ mut g: G,
+) -> impl Parser<I, R, E>
+where
+ I: Stream,
+ F: Parser<I, O, E>,
+ G: FnMut(R, O) -> R,
+ H: FnMut() -> R,
+ E: ParseError<I>,
+{
+ let Range {
+ start_inclusive,
+ end_inclusive,
+ } = range.into();
+ trace("fold_repeat", move |i: I| {
+ match (start_inclusive, end_inclusive) {
+ (0, None) => fold_repeat0_(&mut f, &mut init, &mut g, i),
+ (1, None) => fold_repeat1_(&mut f, &mut init, &mut g, i),
+ (start, end) => fold_repeat_m_n_(
+ start,
+ end.unwrap_or(usize::MAX),
+ &mut f,
+ &mut init,
+ &mut g,
+ i,
+ ),
+ }
+ })
+}
+
+/// Deprecated, replaced by [`fold_repeat`]
+#[deprecated(since = "0.4.6", note = "Replaced with `fold_repeat`")]
+#[inline(always)]
+pub fn fold_repeat0<I, O, E, F, G, H, R>(mut f: F, mut init: H, mut g: G) -> impl Parser<I, R, E>
+where
+ I: Stream,
+ F: Parser<I, O, E>,
+ G: FnMut(R, O) -> R,
+ H: FnMut() -> R,
+ E: ParseError<I>,
+{
+ trace("fold_repeat0", move |i: I| {
+ fold_repeat0_(&mut f, &mut init, &mut g, i)
+ })
+}
+
+fn fold_repeat0_<I, O, E, F, G, H, R>(f: &mut F, init: &mut H, g: &mut G, i: I) -> IResult<I, R, E>
+where
+ I: Stream,
+ F: Parser<I, O, E>,
+ G: FnMut(R, O) -> R,
+ H: FnMut() -> R,
+ E: ParseError<I>,
+{
+ let mut res = init();
+ let mut input = i;
+
+ loop {
+ let i_ = input.clone();
+ let len = input.eof_offset();
+ match f.parse_next(i_) {
+ Ok((i, o)) => {
+ // infinite loop check: the parser must always consume
+ if i.eof_offset() == len {
+ return Err(ErrMode::assert(i, "`repeat` parsers must always consume"));
+ }
+
+ res = g(res, o);
+ input = i;
+ }
+ Err(ErrMode::Backtrack(_)) => {
+ return Ok((input, res));
+ }
+ Err(e) => {
+ return Err(e);
+ }
+ }
+ }
+}
+
+/// Deprecated, replaced by [`fold_repeat`]
+#[deprecated(since = "0.4.6", note = "Replaced with `fold_repeat`")]
+#[inline(always)]
+pub fn fold_repeat1<I, O, E, F, G, H, R>(mut f: F, mut init: H, mut g: G) -> impl Parser<I, R, E>
+where
+ I: Stream,
+ F: Parser<I, O, E>,
+ G: FnMut(R, O) -> R,
+ H: FnMut() -> R,
+ E: ParseError<I>,
+{
+ trace("fold_repeat1", move |i: I| {
+ fold_repeat1_(&mut f, &mut init, &mut g, i)
+ })
+}
+
+fn fold_repeat1_<I, O, E, F, G, H, R>(f: &mut F, init: &mut H, g: &mut G, i: I) -> IResult<I, R, E>
+where
+ I: Stream,
+ F: Parser<I, O, E>,
+ G: FnMut(R, O) -> R,
+ H: FnMut() -> R,
+ E: ParseError<I>,
+{
+ let _i = i.clone();
+ let init = init();
+ match f.parse_next(_i) {
+ Err(ErrMode::Backtrack(_)) => Err(ErrMode::from_error_kind(i, ErrorKind::Many)),
+ Err(e) => Err(e),
+ Ok((i1, o1)) => {
+ let mut acc = g(init, o1);
+ let mut input = i1;
+
+ loop {
+ let _input = input.clone();
+ let len = input.eof_offset();
+ match f.parse_next(_input) {
+ Err(ErrMode::Backtrack(_)) => {
+ break;
+ }
+ Err(e) => return Err(e),
+ Ok((i, o)) => {
+ // infinite loop check: the parser must always consume
+ if i.eof_offset() == len {
+ return Err(ErrMode::assert(i, "`repeat` parsers must always consume"));
+ }
+
+ acc = g(acc, o);
+ input = i;
+ }
+ }
+ }
+
+ Ok((input, acc))
+ }
+ }
+}
+
+fn fold_repeat_m_n_<I, O, E, F, G, H, R>(
+ min: usize,
+ max: usize,
+ parse: &mut F,
+ init: &mut H,
+ fold: &mut G,
+ mut input: I,
+) -> IResult<I, R, E>
+where
+ I: Stream,
+ F: Parser<I, O, E>,
+ G: FnMut(R, O) -> R,
+ H: FnMut() -> R,
+ E: ParseError<I>,
+{
+ if min > max {
+ return Err(ErrMode::Cut(E::from_error_kind(input, ErrorKind::Many)));
+ }
+
+ let mut acc = init();
+ for count in 0..max {
+ let len = input.eof_offset();
+ match parse.parse_next(input.clone()) {
+ Ok((tail, value)) => {
+ // infinite loop check: the parser must always consume
+ if tail.eof_offset() == len {
+ return Err(ErrMode::assert(
+ input,
+ "`repeat` parsers must always consume",
+ ));
+ }
+
+ acc = fold(acc, value);
+ input = tail;
+ }
+ //FInputXMError: handle failure properly
+ Err(ErrMode::Backtrack(err)) => {
+ if count < min {
+ return Err(ErrMode::Backtrack(err.append(input, ErrorKind::Many)));
+ } else {
+ break;
+ }
+ }
+ Err(e) => return Err(e),
+ }
+ }
+
+ Ok((input, acc))
+}
diff --git a/vendor/winnow-0.4.7/src/combinator/parser.rs b/vendor/winnow-0.4.7/src/combinator/parser.rs
new file mode 100644
index 000000000..12b223a2e
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/combinator/parser.rs
@@ -0,0 +1,827 @@
+use crate::error::{ContextError, ErrMode, ErrorKind, FromExternalError, ParseError};
+use crate::lib::std::borrow::Borrow;
+use crate::lib::std::ops::Range;
+use crate::stream::{Location, Stream};
+use crate::stream::{Offset, StreamIsPartial};
+use crate::trace::trace;
+use crate::trace::trace_result;
+use crate::*;
+
+/// Implementation of [`Parser::by_ref`][Parser::by_ref]
+#[cfg_attr(nightly, warn(rustdoc::missing_doc_code_examples))]
+pub struct ByRef<'p, P> {
+ p: &'p mut P,
+}
+
+impl<'p, P> ByRef<'p, P> {
+ pub(crate) fn new(p: &'p mut P) -> Self {
+ Self { p }
+ }
+}
+
+impl<'p, I, O, E, P: Parser<I, O, E>> Parser<I, O, E> for ByRef<'p, P> {
+ fn parse_next(&mut self, i: I) -> IResult<I, O, E> {
+ self.p.parse_next(i)
+ }
+}
+
+/// Implementation of [`Parser::map`]
+#[cfg_attr(nightly, warn(rustdoc::missing_doc_code_examples))]
+pub struct Map<F, G, I, O, O2, E>
+where
+ F: Parser<I, O, E>,
+ G: Fn(O) -> O2,
+{
+ parser: F,
+ map: G,
+ i: core::marker::PhantomData<I>,
+ o: core::marker::PhantomData<O>,
+ o2: core::marker::PhantomData<O2>,
+ e: core::marker::PhantomData<E>,
+}
+
+impl<F, G, I, O, O2, E> Map<F, G, I, O, O2, E>
+where
+ F: Parser<I, O, E>,
+ G: Fn(O) -> O2,
+{
+ pub(crate) fn new(parser: F, map: G) -> Self {
+ Self {
+ parser,
+ map,
+ i: Default::default(),
+ o: Default::default(),
+ o2: Default::default(),
+ e: Default::default(),
+ }
+ }
+}
+
+impl<F, G, I, O, O2, E> Parser<I, O2, E> for Map<F, G, I, O, O2, E>
+where
+ F: Parser<I, O, E>,
+ G: Fn(O) -> O2,
+{
+ fn parse_next(&mut self, i: I) -> IResult<I, O2, E> {
+ match self.parser.parse_next(i) {
+ Err(e) => Err(e),
+ Ok((i, o)) => Ok((i, (self.map)(o))),
+ }
+ }
+}
+
+#[deprecated(since = "0.4.2", note = "Replaced with `TryMap`")]
+pub use TryMap as MapRes;
+
+/// Implementation of [`Parser::try_map`]
+#[cfg_attr(nightly, warn(rustdoc::missing_doc_code_examples))]
+pub struct TryMap<F, G, I, O, O2, E, E2>
+where
+ F: Parser<I, O, E>,
+ G: FnMut(O) -> Result<O2, E2>,
+ I: Clone,
+ E: FromExternalError<I, E2>,
+{
+ parser: F,
+ map: G,
+ i: core::marker::PhantomData<I>,
+ o: core::marker::PhantomData<O>,
+ o2: core::marker::PhantomData<O2>,
+ e: core::marker::PhantomData<E>,
+ e2: core::marker::PhantomData<E2>,
+}
+
+impl<F, G, I, O, O2, E, E2> TryMap<F, G, I, O, O2, E, E2>
+where
+ F: Parser<I, O, E>,
+ G: FnMut(O) -> Result<O2, E2>,
+ I: Clone,
+ E: FromExternalError<I, E2>,
+{
+ pub(crate) fn new(parser: F, map: G) -> Self {
+ Self {
+ parser,
+ map,
+ i: Default::default(),
+ o: Default::default(),
+ o2: Default::default(),
+ e: Default::default(),
+ e2: Default::default(),
+ }
+ }
+}
+
+impl<F, G, I, O, O2, E, E2> Parser<I, O2, E> for TryMap<F, G, I, O, O2, E, E2>
+where
+ F: Parser<I, O, E>,
+ G: FnMut(O) -> Result<O2, E2>,
+ I: Clone,
+ E: FromExternalError<I, E2>,
+{
+ fn parse_next(&mut self, input: I) -> IResult<I, O2, E> {
+ let i = input.clone();
+ let (input, o) = self.parser.parse_next(input)?;
+ let res = match (self.map)(o) {
+ Ok(o2) => Ok((input, o2)),
+ Err(e) => Err(ErrMode::from_external_error(i, ErrorKind::Verify, e)),
+ };
+ trace_result("verify", &res);
+ res
+ }
+}
+
+/// Implementation of [`Parser::verify_map`]
+#[cfg_attr(nightly, warn(rustdoc::missing_doc_code_examples))]
+pub struct VerifyMap<F, G, I, O, O2, E>
+where
+ F: Parser<I, O, E>,
+ G: FnMut(O) -> Option<O2>,
+ I: Clone,
+ E: ParseError<I>,
+{
+ parser: F,
+ map: G,
+ i: core::marker::PhantomData<I>,
+ o: core::marker::PhantomData<O>,
+ o2: core::marker::PhantomData<O2>,
+ e: core::marker::PhantomData<E>,
+}
+
+impl<F, G, I, O, O2, E> VerifyMap<F, G, I, O, O2, E>
+where
+ F: Parser<I, O, E>,
+ G: FnMut(O) -> Option<O2>,
+ I: Clone,
+ E: ParseError<I>,
+{
+ pub(crate) fn new(parser: F, map: G) -> Self {
+ Self {
+ parser,
+ map,
+ i: Default::default(),
+ o: Default::default(),
+ o2: Default::default(),
+ e: Default::default(),
+ }
+ }
+}
+
+impl<F, G, I, O, O2, E> Parser<I, O2, E> for VerifyMap<F, G, I, O, O2, E>
+where
+ F: Parser<I, O, E>,
+ G: FnMut(O) -> Option<O2>,
+ I: Clone,
+ E: ParseError<I>,
+{
+ fn parse_next(&mut self, input: I) -> IResult<I, O2, E> {
+ let i = input.clone();
+ let (input, o) = self.parser.parse_next(input)?;
+ let res = match (self.map)(o) {
+ Some(o2) => Ok((input, o2)),
+ None => Err(ErrMode::from_error_kind(i, ErrorKind::Verify)),
+ };
+ trace_result("verify", &res);
+ res
+ }
+}
+
+/// Implementation of [`Parser::and_then`]
+#[cfg_attr(nightly, warn(rustdoc::missing_doc_code_examples))]
+pub struct AndThen<F, G, I, O, O2, E>
+where
+ F: Parser<I, O, E>,
+ G: Parser<O, O2, E>,
+ O: StreamIsPartial,
+{
+ outer: F,
+ inner: G,
+ i: core::marker::PhantomData<I>,
+ o: core::marker::PhantomData<O>,
+ o2: core::marker::PhantomData<O2>,
+ e: core::marker::PhantomData<E>,
+}
+
+impl<F, G, I, O, O2, E> AndThen<F, G, I, O, O2, E>
+where
+ F: Parser<I, O, E>,
+ G: Parser<O, O2, E>,
+ O: StreamIsPartial,
+{
+ pub(crate) fn new(outer: F, inner: G) -> Self {
+ Self {
+ outer,
+ inner,
+ i: Default::default(),
+ o: Default::default(),
+ o2: Default::default(),
+ e: Default::default(),
+ }
+ }
+}
+
+impl<F, G, I, O, O2, E> Parser<I, O2, E> for AndThen<F, G, I, O, O2, E>
+where
+ F: Parser<I, O, E>,
+ G: Parser<O, O2, E>,
+ O: StreamIsPartial,
+{
+ fn parse_next(&mut self, i: I) -> IResult<I, O2, E> {
+ let (i, mut o) = self.outer.parse_next(i)?;
+ let _ = o.complete();
+ let (_, o2) = self.inner.parse_next(o)?;
+ Ok((i, o2))
+ }
+}
+
+/// Implementation of [`Parser::parse_to`]
+#[cfg_attr(nightly, warn(rustdoc::missing_doc_code_examples))]
+pub struct ParseTo<P, I, O, O2, E>
+where
+ P: Parser<I, O, E>,
+ I: Stream,
+ O: crate::stream::ParseSlice<O2>,
+ E: ParseError<I>,
+{
+ p: P,
+ i: core::marker::PhantomData<I>,
+ o: core::marker::PhantomData<O>,
+ o2: core::marker::PhantomData<O2>,
+ e: core::marker::PhantomData<E>,
+}
+
+impl<P, I, O, O2, E> ParseTo<P, I, O, O2, E>
+where
+ P: Parser<I, O, E>,
+ I: Stream,
+ O: crate::stream::ParseSlice<O2>,
+ E: ParseError<I>,
+{
+ pub(crate) fn new(p: P) -> Self {
+ Self {
+ p,
+ i: Default::default(),
+ o: Default::default(),
+ o2: Default::default(),
+ e: Default::default(),
+ }
+ }
+}
+
+impl<P, I, O, O2, E> Parser<I, O2, E> for ParseTo<P, I, O, O2, E>
+where
+ P: Parser<I, O, E>,
+ I: Stream,
+ O: crate::stream::ParseSlice<O2>,
+ E: ParseError<I>,
+{
+ fn parse_next(&mut self, i: I) -> IResult<I, O2, E> {
+ let input = i.clone();
+ let (i, o) = self.p.parse_next(i)?;
+
+ let res = o
+ .parse_slice()
+ .ok_or_else(|| ErrMode::from_error_kind(input, ErrorKind::Verify));
+ trace_result("verify", &res);
+ Ok((i, res?))
+ }
+}
+
+/// Implementation of [`Parser::flat_map`]
+#[cfg_attr(nightly, warn(rustdoc::missing_doc_code_examples))]
+pub struct FlatMap<F, G, H, I, O, O2, E>
+where
+ F: Parser<I, O, E>,
+ G: FnMut(O) -> H,
+ H: Parser<I, O2, E>,
+{
+ f: F,
+ g: G,
+ h: core::marker::PhantomData<H>,
+ i: core::marker::PhantomData<I>,
+ o: core::marker::PhantomData<O>,
+ o2: core::marker::PhantomData<O2>,
+ e: core::marker::PhantomData<E>,
+}
+
+impl<F, G, H, I, O, O2, E> FlatMap<F, G, H, I, O, O2, E>
+where
+ F: Parser<I, O, E>,
+ G: FnMut(O) -> H,
+ H: Parser<I, O2, E>,
+{
+ pub(crate) fn new(f: F, g: G) -> Self {
+ Self {
+ f,
+ g,
+ h: Default::default(),
+ i: Default::default(),
+ o: Default::default(),
+ o2: Default::default(),
+ e: Default::default(),
+ }
+ }
+}
+
+impl<F, G, H, I, O, O2, E> Parser<I, O2, E> for FlatMap<F, G, H, I, O, O2, E>
+where
+ F: Parser<I, O, E>,
+ G: FnMut(O) -> H,
+ H: Parser<I, O2, E>,
+{
+ fn parse_next(&mut self, i: I) -> IResult<I, O2, E> {
+ let (i, o) = self.f.parse_next(i)?;
+ (self.g)(o).parse_next(i)
+ }
+}
+
+/// Implementation of [`Parser::complete_err`]
+#[cfg_attr(nightly, warn(rustdoc::missing_doc_code_examples))]
+pub struct CompleteErr<F> {
+ f: F,
+}
+
+impl<F> CompleteErr<F> {
+ pub(crate) fn new(f: F) -> Self {
+ Self { f }
+ }
+}
+
+impl<F, I, O, E> Parser<I, O, E> for CompleteErr<F>
+where
+ I: Stream,
+ F: Parser<I, O, E>,
+ E: ParseError<I>,
+{
+ fn parse_next(&mut self, input: I) -> IResult<I, O, E> {
+ trace("complete_err", |input: I| {
+ let i = input.clone();
+ match (self.f).parse_next(input) {
+ Err(ErrMode::Incomplete(_)) => {
+ Err(ErrMode::from_error_kind(i, ErrorKind::Complete))
+ }
+ rest => rest,
+ }
+ })
+ .parse_next(input)
+ }
+}
+
+/// Implementation of [`Parser::verify`]
+#[cfg_attr(nightly, warn(rustdoc::missing_doc_code_examples))]
+pub struct Verify<F, G, I, O, O2, E>
+where
+ F: Parser<I, O, E>,
+ G: Fn(&O2) -> bool,
+ I: Clone,
+ O: Borrow<O2>,
+ O2: ?Sized,
+ E: ParseError<I>,
+{
+ parser: F,
+ filter: G,
+ i: core::marker::PhantomData<I>,
+ o: core::marker::PhantomData<O>,
+ o2: core::marker::PhantomData<O2>,
+ e: core::marker::PhantomData<E>,
+}
+
+impl<F, G, I, O, O2, E> Verify<F, G, I, O, O2, E>
+where
+ F: Parser<I, O, E>,
+ G: Fn(&O2) -> bool,
+ I: Clone,
+ O: Borrow<O2>,
+ O2: ?Sized,
+ E: ParseError<I>,
+{
+ pub(crate) fn new(parser: F, filter: G) -> Self {
+ Self {
+ parser,
+ filter,
+ i: Default::default(),
+ o: Default::default(),
+ o2: Default::default(),
+ e: Default::default(),
+ }
+ }
+}
+
+impl<F, G, I, O, O2, E> Parser<I, O, E> for Verify<F, G, I, O, O2, E>
+where
+ F: Parser<I, O, E>,
+ G: Fn(&O2) -> bool,
+ I: Clone,
+ O: Borrow<O2>,
+ O2: ?Sized,
+ E: ParseError<I>,
+{
+ fn parse_next(&mut self, input: I) -> IResult<I, O, E> {
+ let i = input.clone();
+ let (input, o) = self.parser.parse_next(input)?;
+
+ let res = if (self.filter)(o.borrow()) {
+ Ok((input, o))
+ } else {
+ Err(ErrMode::from_error_kind(i, ErrorKind::Verify))
+ };
+ trace_result("verify", &res);
+ res
+ }
+}
+
+/// Implementation of [`Parser::value`]
+#[cfg_attr(nightly, warn(rustdoc::missing_doc_code_examples))]
+pub struct Value<F, I, O, O2, E>
+where
+ F: Parser<I, O, E>,
+ O2: Clone,
+{
+ parser: F,
+ val: O2,
+ i: core::marker::PhantomData<I>,
+ o: core::marker::PhantomData<O>,
+ e: core::marker::PhantomData<E>,
+}
+
+impl<F, I, O, O2, E> Value<F, I, O, O2, E>
+where
+ F: Parser<I, O, E>,
+ O2: Clone,
+{
+ pub(crate) fn new(parser: F, val: O2) -> Self {
+ Self {
+ parser,
+ val,
+ i: Default::default(),
+ o: Default::default(),
+ e: Default::default(),
+ }
+ }
+}
+
+impl<F, I, O, O2, E> Parser<I, O2, E> for Value<F, I, O, O2, E>
+where
+ F: Parser<I, O, E>,
+ O2: Clone,
+{
+ fn parse_next(&mut self, input: I) -> IResult<I, O2, E> {
+ (self.parser)
+ .parse_next(input)
+ .map(|(i, _)| (i, self.val.clone()))
+ }
+}
+
+/// Implementation of [`Parser::void`]
+#[cfg_attr(nightly, warn(rustdoc::missing_doc_code_examples))]
+pub struct Void<F, I, O, E>
+where
+ F: Parser<I, O, E>,
+{
+ parser: F,
+ i: core::marker::PhantomData<I>,
+ o: core::marker::PhantomData<O>,
+ e: core::marker::PhantomData<E>,
+}
+
+impl<F, I, O, E> Void<F, I, O, E>
+where
+ F: Parser<I, O, E>,
+{
+ pub(crate) fn new(parser: F) -> Self {
+ Self {
+ parser,
+ i: Default::default(),
+ o: Default::default(),
+ e: Default::default(),
+ }
+ }
+}
+
+impl<F, I, O, E> Parser<I, (), E> for Void<F, I, O, E>
+where
+ F: Parser<I, O, E>,
+{
+ fn parse_next(&mut self, input: I) -> IResult<I, (), E> {
+ (self.parser).parse_next(input).map(|(i, _)| (i, ()))
+ }
+}
+
+/// Implementation of [`Parser::recognize`]
+#[cfg_attr(nightly, warn(rustdoc::missing_doc_code_examples))]
+pub struct Recognize<F, I, O, E>
+where
+ F: Parser<I, O, E>,
+ I: Stream + Offset,
+{
+ parser: F,
+ i: core::marker::PhantomData<I>,
+ o: core::marker::PhantomData<O>,
+ e: core::marker::PhantomData<E>,
+}
+
+impl<F, I, O, E> Recognize<F, I, O, E>
+where
+ F: Parser<I, O, E>,
+ I: Stream + Offset,
+{
+ pub(crate) fn new(parser: F) -> Self {
+ Self {
+ parser,
+ i: Default::default(),
+ o: Default::default(),
+ e: Default::default(),
+ }
+ }
+}
+
+impl<I, O, E, F> Parser<I, <I as Stream>::Slice, E> for Recognize<F, I, O, E>
+where
+ F: Parser<I, O, E>,
+ I: Stream + Offset,
+{
+ fn parse_next(&mut self, input: I) -> IResult<I, <I as Stream>::Slice, E> {
+ let i = input.clone();
+ match (self.parser).parse_next(i) {
+ Ok((i, _)) => {
+ let offset = input.offset_to(&i);
+ Ok(input.next_slice(offset))
+ }
+ Err(e) => Err(e),
+ }
+ }
+}
+
+/// Implementation of [`Parser::with_recognized`]
+#[cfg_attr(nightly, warn(rustdoc::missing_doc_code_examples))]
+pub struct WithRecognized<F, I, O, E>
+where
+ F: Parser<I, O, E>,
+ I: Stream + Offset,
+{
+ parser: F,
+ i: core::marker::PhantomData<I>,
+ o: core::marker::PhantomData<O>,
+ e: core::marker::PhantomData<E>,
+}
+
+impl<F, I, O, E> WithRecognized<F, I, O, E>
+where
+ F: Parser<I, O, E>,
+ I: Stream + Offset,
+{
+ pub(crate) fn new(parser: F) -> Self {
+ Self {
+ parser,
+ i: Default::default(),
+ o: Default::default(),
+ e: Default::default(),
+ }
+ }
+}
+
+impl<F, I, O, E> Parser<I, (O, <I as Stream>::Slice), E> for WithRecognized<F, I, O, E>
+where
+ F: Parser<I, O, E>,
+ I: Stream + Offset,
+{
+ fn parse_next(&mut self, input: I) -> IResult<I, (O, <I as Stream>::Slice), E> {
+ let i = input.clone();
+ match (self.parser).parse_next(i) {
+ Ok((remaining, result)) => {
+ let offset = input.offset_to(&remaining);
+ let (remaining, recognized) = input.next_slice(offset);
+ Ok((remaining, (result, recognized)))
+ }
+ Err(e) => Err(e),
+ }
+ }
+}
+
+/// Implementation of [`Parser::span`]
+#[cfg_attr(nightly, warn(rustdoc::missing_doc_code_examples))]
+pub struct Span<F, I, O, E>
+where
+ F: Parser<I, O, E>,
+ I: Clone + Location,
+{
+ parser: F,
+ i: core::marker::PhantomData<I>,
+ o: core::marker::PhantomData<O>,
+ e: core::marker::PhantomData<E>,
+}
+
+impl<F, I, O, E> Span<F, I, O, E>
+where
+ F: Parser<I, O, E>,
+ I: Clone + Location,
+{
+ pub(crate) fn new(parser: F) -> Self {
+ Self {
+ parser,
+ i: Default::default(),
+ o: Default::default(),
+ e: Default::default(),
+ }
+ }
+}
+
+impl<I, O, E, F> Parser<I, Range<usize>, E> for Span<F, I, O, E>
+where
+ F: Parser<I, O, E>,
+ I: Clone + Location,
+{
+ fn parse_next(&mut self, input: I) -> IResult<I, Range<usize>, E> {
+ let start = input.location();
+ self.parser.parse_next(input).map(move |(remaining, _)| {
+ let end = remaining.location();
+ (remaining, (start..end))
+ })
+ }
+}
+
+/// Implementation of [`Parser::with_span`]
+#[cfg_attr(nightly, warn(rustdoc::missing_doc_code_examples))]
+pub struct WithSpan<F, I, O, E>
+where
+ F: Parser<I, O, E>,
+ I: Clone + Location,
+{
+ parser: F,
+ i: core::marker::PhantomData<I>,
+ o: core::marker::PhantomData<O>,
+ e: core::marker::PhantomData<E>,
+}
+
+impl<F, I, O, E> WithSpan<F, I, O, E>
+where
+ F: Parser<I, O, E>,
+ I: Clone + Location,
+{
+ pub(crate) fn new(parser: F) -> Self {
+ Self {
+ parser,
+ i: Default::default(),
+ o: Default::default(),
+ e: Default::default(),
+ }
+ }
+}
+
+impl<F, I, O, E> Parser<I, (O, Range<usize>), E> for WithSpan<F, I, O, E>
+where
+ F: Parser<I, O, E>,
+ I: Clone + Location,
+{
+ fn parse_next(&mut self, input: I) -> IResult<I, (O, Range<usize>), E> {
+ let start = input.location();
+ self.parser
+ .parse_next(input)
+ .map(move |(remaining, output)| {
+ let end = remaining.location();
+ (remaining, (output, (start..end)))
+ })
+ }
+}
+
+/// Implementation of [`Parser::output_into`]
+#[cfg_attr(nightly, warn(rustdoc::missing_doc_code_examples))]
+pub struct OutputInto<F, I, O, O2, E>
+where
+ F: Parser<I, O, E>,
+ O: Into<O2>,
+{
+ parser: F,
+ i: core::marker::PhantomData<I>,
+ o: core::marker::PhantomData<O>,
+ o2: core::marker::PhantomData<O2>,
+ e: core::marker::PhantomData<E>,
+}
+
+impl<F, I, O, O2, E> OutputInto<F, I, O, O2, E>
+where
+ F: Parser<I, O, E>,
+ O: Into<O2>,
+{
+ pub(crate) fn new(parser: F) -> Self {
+ Self {
+ parser,
+ i: Default::default(),
+ o: Default::default(),
+ o2: Default::default(),
+ e: Default::default(),
+ }
+ }
+}
+
+impl<F, I, O, O2, E> Parser<I, O2, E> for OutputInto<F, I, O, O2, E>
+where
+ F: Parser<I, O, E>,
+ O: Into<O2>,
+{
+ fn parse_next(&mut self, i: I) -> IResult<I, O2, E> {
+ match self.parser.parse_next(i) {
+ Ok((i, o)) => Ok((i, o.into())),
+ Err(err) => Err(err),
+ }
+ }
+}
+
+/// Implementation of [`Parser::err_into`]
+#[cfg_attr(nightly, warn(rustdoc::missing_doc_code_examples))]
+pub struct ErrInto<F, I, O, E, E2>
+where
+ F: Parser<I, O, E>,
+ E: Into<E2>,
+{
+ parser: F,
+ i: core::marker::PhantomData<I>,
+ o: core::marker::PhantomData<O>,
+ e: core::marker::PhantomData<E>,
+ e2: core::marker::PhantomData<E2>,
+}
+
+impl<F, I, O, E, E2> ErrInto<F, I, O, E, E2>
+where
+ F: Parser<I, O, E>,
+ E: Into<E2>,
+{
+ pub(crate) fn new(parser: F) -> Self {
+ Self {
+ parser,
+ i: Default::default(),
+ o: Default::default(),
+ e: Default::default(),
+ e2: Default::default(),
+ }
+ }
+}
+
+impl<F, I, O, E, E2> Parser<I, O, E2> for ErrInto<F, I, O, E, E2>
+where
+ F: Parser<I, O, E>,
+ E: Into<E2>,
+{
+ fn parse_next(&mut self, i: I) -> IResult<I, O, E2> {
+ match self.parser.parse_next(i) {
+ Ok(ok) => Ok(ok),
+ Err(ErrMode::Backtrack(e)) => Err(ErrMode::Backtrack(e.into())),
+ Err(ErrMode::Cut(e)) => Err(ErrMode::Cut(e.into())),
+ Err(ErrMode::Incomplete(e)) => Err(ErrMode::Incomplete(e)),
+ }
+ }
+}
+
+/// Implementation of [`Parser::context`]
+#[cfg_attr(nightly, warn(rustdoc::missing_doc_code_examples))]
+pub struct Context<F, I, O, E, C>
+where
+ F: Parser<I, O, E>,
+ I: Stream,
+ E: ContextError<I, C>,
+ C: Clone + crate::lib::std::fmt::Debug,
+{
+ parser: F,
+ context: C,
+ i: core::marker::PhantomData<I>,
+ o: core::marker::PhantomData<O>,
+ e: core::marker::PhantomData<E>,
+}
+
+impl<F, I, O, E, C> Context<F, I, O, E, C>
+where
+ F: Parser<I, O, E>,
+ I: Stream,
+ E: ContextError<I, C>,
+ C: Clone + crate::lib::std::fmt::Debug,
+{
+ pub(crate) fn new(parser: F, context: C) -> Self {
+ Self {
+ parser,
+ context,
+ i: Default::default(),
+ o: Default::default(),
+ e: Default::default(),
+ }
+ }
+}
+
+impl<F, I, O, E, C> Parser<I, O, E> for Context<F, I, O, E, C>
+where
+ F: Parser<I, O, E>,
+ I: Stream,
+ E: ContextError<I, C>,
+ C: Clone + crate::lib::std::fmt::Debug,
+{
+ fn parse_next(&mut self, i: I) -> IResult<I, O, E> {
+ #[cfg(feature = "debug")]
+ let name = format!("context={:?}", self.context);
+ #[cfg(not(feature = "debug"))]
+ let name = "context";
+ trace(name, move |i: I| {
+ (self.parser)
+ .parse_next(i.clone())
+ .map_err(|err| err.map(|err| err.add_context(i, self.context.clone())))
+ })
+ .parse_next(i)
+ }
+}
diff --git a/vendor/winnow-0.4.7/src/combinator/sequence.rs b/vendor/winnow-0.4.7/src/combinator/sequence.rs
new file mode 100644
index 000000000..89c29a548
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/combinator/sequence.rs
@@ -0,0 +1,164 @@
+use crate::error::ParseError;
+use crate::stream::Stream;
+use crate::trace::trace;
+use crate::*;
+
+/// Sequence two parsers, only returning the output from the second.
+///
+/// # Arguments
+/// * `first` The opening parser.
+/// * `second` The second parser to get object.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::combinator::preceded;
+/// use winnow::token::tag;
+///
+/// let mut parser = preceded("abc", "efg");
+///
+/// assert_eq!(parser.parse_next("abcefg"), Ok(("", "efg")));
+/// assert_eq!(parser.parse_next("abcefghij"), Ok(("hij", "efg")));
+/// assert_eq!(parser.parse_next(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Tag))));
+/// assert_eq!(parser.parse_next("123"), Err(ErrMode::Backtrack(Error::new("123", ErrorKind::Tag))));
+/// ```
+#[doc(alias = "ignore_then")]
+pub fn preceded<I, O1, O2, E: ParseError<I>, F, G>(
+ mut first: F,
+ mut second: G,
+) -> impl Parser<I, O2, E>
+where
+ I: Stream,
+ F: Parser<I, O1, E>,
+ G: Parser<I, O2, E>,
+{
+ trace("preceded", move |input: I| {
+ let (input, _) = first.parse_next(input)?;
+ second.parse_next(input)
+ })
+}
+
+/// Sequence two parsers, only returning the output of the first.
+///
+/// # Arguments
+/// * `first` The first parser to apply.
+/// * `second` The second parser to match an object.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::error::Needed::Size;
+/// use winnow::combinator::terminated;
+/// use winnow::token::tag;
+///
+/// let mut parser = terminated("abc", "efg");
+///
+/// assert_eq!(parser.parse_next("abcefg"), Ok(("", "abc")));
+/// assert_eq!(parser.parse_next("abcefghij"), Ok(("hij", "abc")));
+/// assert_eq!(parser.parse_next(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Tag))));
+/// assert_eq!(parser.parse_next("123"), Err(ErrMode::Backtrack(Error::new("123", ErrorKind::Tag))));
+/// ```
+#[doc(alias = "then_ignore")]
+pub fn terminated<I, O1, O2, E: ParseError<I>, F, G>(
+ mut first: F,
+ mut second: G,
+) -> impl Parser<I, O1, E>
+where
+ I: Stream,
+ F: Parser<I, O1, E>,
+ G: Parser<I, O2, E>,
+{
+ trace("terminated", move |input: I| {
+ let (input, o1) = first.parse_next(input)?;
+ second.parse_next(input).map(|(i, _)| (i, o1))
+ })
+}
+
+/// Sequence three parsers, only returning the values of the first and third.
+///
+/// # Arguments
+/// * `first` The first parser to apply.
+/// * `sep` The separator parser to apply.
+/// * `second` The second parser to apply.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::error::Needed::Size;
+/// # use winnow::prelude::*;
+/// use winnow::combinator::separated_pair;
+/// use winnow::token::tag;
+///
+/// let mut parser = separated_pair("abc", "|", "efg");
+///
+/// assert_eq!(parser.parse_next("abc|efg"), Ok(("", ("abc", "efg"))));
+/// assert_eq!(parser.parse_next("abc|efghij"), Ok(("hij", ("abc", "efg"))));
+/// assert_eq!(parser.parse_next(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Tag))));
+/// assert_eq!(parser.parse_next("123"), Err(ErrMode::Backtrack(Error::new("123", ErrorKind::Tag))));
+/// ```
+pub fn separated_pair<I, O1, O2, O3, E: ParseError<I>, F, G, H>(
+ mut first: F,
+ mut sep: G,
+ mut second: H,
+) -> impl Parser<I, (O1, O3), E>
+where
+ I: Stream,
+ F: Parser<I, O1, E>,
+ G: Parser<I, O2, E>,
+ H: Parser<I, O3, E>,
+{
+ trace("separated_pair", move |input: I| {
+ let (input, o1) = first.parse_next(input)?;
+ let (input, _) = sep.parse_next(input)?;
+ second.parse_next(input).map(|(i, o2)| (i, (o1, o2)))
+ })
+}
+
+/// Sequence three parsers, only returning the output of the second.
+///
+/// # Arguments
+/// * `first` The first parser to apply and discard.
+/// * `second` The second parser to apply.
+/// * `third` The third parser to apply and discard.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::error::Needed::Size;
+/// # use winnow::prelude::*;
+/// use winnow::combinator::delimited;
+/// use winnow::token::tag;
+///
+/// let mut parser = delimited("(", "abc", ")");
+///
+/// assert_eq!(parser.parse_next("(abc)"), Ok(("", "abc")));
+/// assert_eq!(parser.parse_next("(abc)def"), Ok(("def", "abc")));
+/// assert_eq!(parser.parse_next(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Tag))));
+/// assert_eq!(parser.parse_next("123"), Err(ErrMode::Backtrack(Error::new("123", ErrorKind::Tag))));
+/// ```
+#[doc(alias = "between")]
+#[doc(alias = "padded")]
+pub fn delimited<I, O1, O2, O3, E: ParseError<I>, F, G, H>(
+ mut first: F,
+ mut second: G,
+ mut third: H,
+) -> impl Parser<I, O2, E>
+where
+ I: Stream,
+ F: Parser<I, O1, E>,
+ G: Parser<I, O2, E>,
+ H: Parser<I, O3, E>,
+{
+ trace("delimited", move |input: I| {
+ let (input, _) = first.parse_next(input)?;
+ let (input, o2) = second.parse_next(input)?;
+ third.parse_next(input).map(|(i, _)| (i, o2))
+ })
+}
diff --git a/vendor/winnow-0.4.7/src/combinator/tests.rs b/vendor/winnow-0.4.7/src/combinator/tests.rs
new file mode 100644
index 000000000..cdb787760
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/combinator/tests.rs
@@ -0,0 +1,1267 @@
+use super::*;
+
+use crate::ascii::digit1 as digit;
+use crate::binary::u16;
+use crate::binary::u8;
+use crate::binary::Endianness;
+use crate::error::ErrMode;
+use crate::error::Error;
+use crate::error::ErrorKind;
+use crate::error::Needed;
+use crate::error::ParseError;
+use crate::token::take;
+use crate::IResult;
+use crate::Parser;
+use crate::Partial;
+
+#[cfg(feature = "alloc")]
+use crate::lib::std::vec::Vec;
+
+macro_rules! assert_parse(
+ ($left: expr, $right: expr) => {
+ let res: $crate::IResult<_, _, Error<_>> = $left;
+ assert_eq!(res, $right);
+ };
+);
+
+#[test]
+fn eof_on_slices() {
+ let not_over: &[u8] = &b"Hello, world!"[..];
+ let is_over: &[u8] = &b""[..];
+
+ let res_not_over = eof(not_over);
+ assert_parse!(
+ res_not_over,
+ Err(ErrMode::Backtrack(error_position!(
+ not_over,
+ ErrorKind::Eof
+ )))
+ );
+
+ let res_over = eof(is_over);
+ assert_parse!(res_over, Ok((is_over, is_over)));
+}
+
+#[test]
+fn eof_on_strs() {
+ let not_over: &str = "Hello, world!";
+ let is_over: &str = "";
+
+ let res_not_over = eof(not_over);
+ assert_parse!(
+ res_not_over,
+ Err(ErrMode::Backtrack(error_position!(
+ not_over,
+ ErrorKind::Eof
+ )))
+ );
+
+ let res_over = eof(is_over);
+ assert_parse!(res_over, Ok((is_over, is_over)));
+}
+
+#[test]
+fn rest_on_slices() {
+ let input: &[u8] = &b"Hello, world!"[..];
+ let empty: &[u8] = &b""[..];
+ assert_parse!(rest(input), Ok((empty, input)));
+}
+
+#[test]
+fn rest_on_strs() {
+ let input: &str = "Hello, world!";
+ let empty: &str = "";
+ assert_parse!(rest(input), Ok((empty, input)));
+}
+
+#[test]
+fn rest_len_on_slices() {
+ let input: &[u8] = &b"Hello, world!"[..];
+ assert_parse!(rest_len(input), Ok((input, input.len())));
+}
+
+use crate::lib::std::convert::From;
+impl From<u32> for CustomError {
+ fn from(_: u32) -> Self {
+ CustomError
+ }
+}
+
+impl<I> ParseError<I> for CustomError {
+ fn from_error_kind(_: I, _: ErrorKind) -> Self {
+ CustomError
+ }
+
+ fn append(self, _: I, _: ErrorKind) -> Self {
+ CustomError
+ }
+}
+
+struct CustomError;
+#[allow(dead_code)]
+fn custom_error(input: &[u8]) -> IResult<&[u8], &[u8], CustomError> {
+ //fix_error!(input, CustomError<_>, alphanumeric)
+ crate::ascii::alphanumeric1(input)
+}
+
+#[test]
+fn test_parser_flat_map() {
+ let input: &[u8] = &[3, 100, 101, 102, 103, 104][..];
+ assert_parse!(
+ u8.flat_map(take).parse_next(input),
+ Ok((&[103, 104][..], &[100, 101, 102][..]))
+ );
+}
+
+#[allow(dead_code)]
+fn test_closure_compiles_195(input: &[u8]) -> IResult<&[u8], ()> {
+ u8.flat_map(|num| repeat(num as usize, u16(Endianness::Big)))
+ .parse_next(input)
+}
+
+#[test]
+fn test_parser_verify_map() {
+ let input: &[u8] = &[50][..];
+ assert_parse!(
+ u8.verify_map(|u| if u < 20 { Some(u) } else { None })
+ .parse_next(input),
+ Err(ErrMode::Backtrack(Error {
+ input: &[50][..],
+ kind: ErrorKind::Verify
+ }))
+ );
+ assert_parse!(
+ u8.verify_map(|u| if u > 20 { Some(u) } else { None })
+ .parse_next(input),
+ Ok((&[][..], 50))
+ );
+}
+
+#[test]
+fn test_parser_map_parser() {
+ let input: &[u8] = &[100, 101, 102, 103, 104][..];
+ assert_parse!(
+ take(4usize).and_then(take(2usize)).parse_next(input),
+ Ok((&[104][..], &[100, 101][..]))
+ );
+}
+
+#[test]
+#[cfg(feature = "std")]
+fn test_parser_into() {
+ use crate::error::Error;
+ use crate::token::take;
+
+ let mut parser = take::<_, _, Error<_>>(3u8).output_into();
+ let result: IResult<&[u8], Vec<u8>> = parser.parse_next(&b"abcdefg"[..]);
+
+ assert_eq!(result, Ok((&b"defg"[..], vec![97, 98, 99])));
+}
+
+#[test]
+fn opt_test() {
+ fn opt_abcd(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, Option<&[u8]>> {
+ opt("abcd").parse_next(i)
+ }
+
+ let a = &b"abcdef"[..];
+ let b = &b"bcdefg"[..];
+ let c = &b"ab"[..];
+ assert_eq!(
+ opt_abcd(Partial::new(a)),
+ Ok((Partial::new(&b"ef"[..]), Some(&b"abcd"[..])))
+ );
+ assert_eq!(
+ opt_abcd(Partial::new(b)),
+ Ok((Partial::new(&b"bcdefg"[..]), None))
+ );
+ assert_eq!(
+ opt_abcd(Partial::new(c)),
+ Err(ErrMode::Incomplete(Needed::new(2)))
+ );
+}
+
+#[test]
+fn peek_test() {
+ fn peek_tag(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ peek("abcd").parse_next(i)
+ }
+
+ assert_eq!(
+ peek_tag(Partial::new(&b"abcdef"[..])),
+ Ok((Partial::new(&b"abcdef"[..]), &b"abcd"[..]))
+ );
+ assert_eq!(
+ peek_tag(Partial::new(&b"ab"[..])),
+ Err(ErrMode::Incomplete(Needed::new(2)))
+ );
+ assert_eq!(
+ peek_tag(Partial::new(&b"xxx"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"xxx"[..]),
+ ErrorKind::Tag
+ )))
+ );
+}
+
+#[test]
+fn not_test() {
+ fn not_aaa(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, ()> {
+ not("aaa").parse_next(i)
+ }
+
+ assert_eq!(
+ not_aaa(Partial::new(&b"aaa"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"aaa"[..]),
+ ErrorKind::Not
+ )))
+ );
+ assert_eq!(
+ not_aaa(Partial::new(&b"aa"[..])),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ not_aaa(Partial::new(&b"abcd"[..])),
+ Ok((Partial::new(&b"abcd"[..]), ()))
+ );
+}
+
+#[test]
+fn test_parser_verify() {
+ use crate::token::take;
+
+ fn test(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ take(5u8)
+ .verify(|slice: &[u8]| slice[0] == b'a')
+ .parse_next(i)
+ }
+ assert_eq!(
+ test(Partial::new(&b"bcd"[..])),
+ Err(ErrMode::Incomplete(Needed::new(2)))
+ );
+ assert_eq!(
+ test(Partial::new(&b"bcdefg"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"bcdefg"[..]),
+ ErrorKind::Verify
+ )))
+ );
+ assert_eq!(
+ test(Partial::new(&b"abcdefg"[..])),
+ Ok((Partial::new(&b"fg"[..]), &b"abcde"[..]))
+ );
+}
+
+#[test]
+#[allow(unused)]
+fn test_parser_verify_ref() {
+ use crate::token::take;
+
+ let mut parser1 = take(3u8).verify(|s: &[u8]| s == &b"abc"[..]);
+
+ assert_eq!(
+ parser1.parse_next(&b"abcd"[..]),
+ Ok((&b"d"[..], &b"abc"[..]))
+ );
+ assert_eq!(
+ parser1.parse_next(&b"defg"[..]),
+ Err(ErrMode::Backtrack(Error {
+ input: &b"defg"[..],
+ kind: ErrorKind::Verify
+ }))
+ );
+
+ fn parser2(i: &[u8]) -> IResult<&[u8], u32> {
+ crate::binary::be_u32
+ .verify(|val: &u32| *val < 3)
+ .parse_next(i)
+ }
+}
+
+#[test]
+#[cfg(feature = "alloc")]
+fn test_parser_verify_alloc() {
+ use crate::token::take;
+ let mut parser1 = take(3u8)
+ .map(|s: &[u8]| s.to_vec())
+ .verify(|s: &[u8]| s == &b"abc"[..]);
+
+ assert_eq!(
+ parser1.parse_next(&b"abcd"[..]),
+ Ok((&b"d"[..], b"abc".to_vec()))
+ );
+ assert_eq!(
+ parser1.parse_next(&b"defg"[..]),
+ Err(ErrMode::Backtrack(Error {
+ input: &b"defg"[..],
+ kind: ErrorKind::Verify
+ }))
+ );
+}
+
+#[test]
+fn fail_test() {
+ let a = "string";
+ let b = "another string";
+
+ assert_eq!(
+ fail::<_, &str, _>(a),
+ Err(ErrMode::Backtrack(Error {
+ input: a,
+ kind: ErrorKind::Fail
+ }))
+ );
+ assert_eq!(
+ fail::<_, &str, _>(b),
+ Err(ErrMode::Backtrack(Error {
+ input: b,
+ kind: ErrorKind::Fail
+ }))
+ );
+}
+
+#[test]
+fn complete() {
+ fn err_test(i: &[u8]) -> IResult<&[u8], &[u8]> {
+ let (i, _) = "ijkl".parse_next(i)?;
+ "mnop".parse_next(i)
+ }
+ let a = &b"ijklmn"[..];
+
+ let res_a = err_test(a);
+ assert_eq!(
+ res_a,
+ Err(ErrMode::Backtrack(error_position!(
+ &b"mn"[..],
+ ErrorKind::Tag
+ )))
+ );
+}
+
+#[test]
+fn separated_pair_test() {
+ #[allow(clippy::type_complexity)]
+ fn sep_pair_abc_def(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, (&[u8], &[u8])> {
+ separated_pair("abc", ",", "def").parse_next(i)
+ }
+
+ assert_eq!(
+ sep_pair_abc_def(Partial::new(&b"abc,defghijkl"[..])),
+ Ok((Partial::new(&b"ghijkl"[..]), (&b"abc"[..], &b"def"[..])))
+ );
+ assert_eq!(
+ sep_pair_abc_def(Partial::new(&b"ab"[..])),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ sep_pair_abc_def(Partial::new(&b"abc,d"[..])),
+ Err(ErrMode::Incomplete(Needed::new(2)))
+ );
+ assert_eq!(
+ sep_pair_abc_def(Partial::new(&b"xxx"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"xxx"[..]),
+ ErrorKind::Tag
+ )))
+ );
+ assert_eq!(
+ sep_pair_abc_def(Partial::new(&b"xxx,def"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"xxx,def"[..]),
+ ErrorKind::Tag
+ )))
+ );
+ assert_eq!(
+ sep_pair_abc_def(Partial::new(&b"abc,xxx"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"xxx"[..]),
+ ErrorKind::Tag
+ )))
+ );
+}
+
+#[test]
+fn preceded_test() {
+ fn preceded_abcd_efgh(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ preceded("abcd", "efgh").parse_next(i)
+ }
+
+ assert_eq!(
+ preceded_abcd_efgh(Partial::new(&b"abcdefghijkl"[..])),
+ Ok((Partial::new(&b"ijkl"[..]), &b"efgh"[..]))
+ );
+ assert_eq!(
+ preceded_abcd_efgh(Partial::new(&b"ab"[..])),
+ Err(ErrMode::Incomplete(Needed::new(2)))
+ );
+ assert_eq!(
+ preceded_abcd_efgh(Partial::new(&b"abcde"[..])),
+ Err(ErrMode::Incomplete(Needed::new(3)))
+ );
+ assert_eq!(
+ preceded_abcd_efgh(Partial::new(&b"xxx"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"xxx"[..]),
+ ErrorKind::Tag
+ )))
+ );
+ assert_eq!(
+ preceded_abcd_efgh(Partial::new(&b"xxxxdef"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"xxxxdef"[..]),
+ ErrorKind::Tag
+ )))
+ );
+ assert_eq!(
+ preceded_abcd_efgh(Partial::new(&b"abcdxxx"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"xxx"[..]),
+ ErrorKind::Tag
+ )))
+ );
+}
+
+#[test]
+fn terminated_test() {
+ fn terminated_abcd_efgh(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ terminated("abcd", "efgh").parse_next(i)
+ }
+
+ assert_eq!(
+ terminated_abcd_efgh(Partial::new(&b"abcdefghijkl"[..])),
+ Ok((Partial::new(&b"ijkl"[..]), &b"abcd"[..]))
+ );
+ assert_eq!(
+ terminated_abcd_efgh(Partial::new(&b"ab"[..])),
+ Err(ErrMode::Incomplete(Needed::new(2)))
+ );
+ assert_eq!(
+ terminated_abcd_efgh(Partial::new(&b"abcde"[..])),
+ Err(ErrMode::Incomplete(Needed::new(3)))
+ );
+ assert_eq!(
+ terminated_abcd_efgh(Partial::new(&b"xxx"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"xxx"[..]),
+ ErrorKind::Tag
+ )))
+ );
+ assert_eq!(
+ terminated_abcd_efgh(Partial::new(&b"xxxxdef"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"xxxxdef"[..]),
+ ErrorKind::Tag
+ )))
+ );
+ assert_eq!(
+ terminated_abcd_efgh(Partial::new(&b"abcdxxxx"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"xxxx"[..]),
+ ErrorKind::Tag
+ )))
+ );
+}
+
+#[test]
+fn delimited_test() {
+ fn delimited_abc_def_ghi(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ delimited("abc", "def", "ghi").parse_next(i)
+ }
+
+ assert_eq!(
+ delimited_abc_def_ghi(Partial::new(&b"abcdefghijkl"[..])),
+ Ok((Partial::new(&b"jkl"[..]), &b"def"[..]))
+ );
+ assert_eq!(
+ delimited_abc_def_ghi(Partial::new(&b"ab"[..])),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ delimited_abc_def_ghi(Partial::new(&b"abcde"[..])),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ delimited_abc_def_ghi(Partial::new(&b"abcdefgh"[..])),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ delimited_abc_def_ghi(Partial::new(&b"xxx"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"xxx"[..]),
+ ErrorKind::Tag
+ )))
+ );
+ assert_eq!(
+ delimited_abc_def_ghi(Partial::new(&b"xxxdefghi"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"xxxdefghi"[..]),
+ ErrorKind::Tag
+ ),))
+ );
+ assert_eq!(
+ delimited_abc_def_ghi(Partial::new(&b"abcxxxghi"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"xxxghi"[..]),
+ ErrorKind::Tag
+ )))
+ );
+ assert_eq!(
+ delimited_abc_def_ghi(Partial::new(&b"abcdefxxx"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"xxx"[..]),
+ ErrorKind::Tag
+ )))
+ );
+}
+
+#[cfg(feature = "alloc")]
+#[test]
+fn alt_test() {
+ #[cfg(feature = "alloc")]
+ use crate::{
+ error::ParseError,
+ lib::std::{
+ fmt::Debug,
+ string::{String, ToString},
+ },
+ };
+
+ #[cfg(feature = "alloc")]
+ #[derive(Debug, Clone, Eq, PartialEq)]
+ pub struct ErrorStr(String);
+
+ #[cfg(feature = "alloc")]
+ impl From<u32> for ErrorStr {
+ fn from(i: u32) -> Self {
+ ErrorStr(format!("custom error code: {}", i))
+ }
+ }
+
+ #[cfg(feature = "alloc")]
+ impl<'a> From<&'a str> for ErrorStr {
+ fn from(i: &'a str) -> Self {
+ ErrorStr(format!("custom error message: {}", i))
+ }
+ }
+
+ #[cfg(feature = "alloc")]
+ impl<I: Debug> ParseError<I> for ErrorStr {
+ fn from_error_kind(input: I, kind: ErrorKind) -> Self {
+ ErrorStr(format!("custom error message: ({:?}, {:?})", input, kind))
+ }
+
+ fn append(self, input: I, kind: ErrorKind) -> Self {
+ ErrorStr(format!(
+ "custom error message: ({:?}, {:?}) - {:?}",
+ input, kind, self
+ ))
+ }
+ }
+
+ fn work(input: &[u8]) -> IResult<&[u8], &[u8], ErrorStr> {
+ Ok((&b""[..], input))
+ }
+
+ #[allow(unused_variables)]
+ fn dont_work(input: &[u8]) -> IResult<&[u8], &[u8], ErrorStr> {
+ Err(ErrMode::Backtrack(ErrorStr("abcd".to_string())))
+ }
+
+ fn work2(input: &[u8]) -> IResult<&[u8], &[u8], ErrorStr> {
+ Ok((input, &b""[..]))
+ }
+
+ fn alt1(i: &[u8]) -> IResult<&[u8], &[u8], ErrorStr> {
+ alt((dont_work, dont_work)).parse_next(i)
+ }
+ fn alt2(i: &[u8]) -> IResult<&[u8], &[u8], ErrorStr> {
+ alt((dont_work, work)).parse_next(i)
+ }
+ fn alt3(i: &[u8]) -> IResult<&[u8], &[u8], ErrorStr> {
+ alt((dont_work, dont_work, work2, dont_work)).parse_next(i)
+ }
+ //named!(alt1, alt!(dont_work | dont_work));
+ //named!(alt2, alt!(dont_work | work));
+ //named!(alt3, alt!(dont_work | dont_work | work2 | dont_work));
+
+ let a = &b"abcd"[..];
+ assert_eq!(
+ alt1(a),
+ Err(ErrMode::Backtrack(error_node_position!(
+ a,
+ ErrorKind::Alt,
+ ErrorStr("abcd".to_string())
+ )))
+ );
+ assert_eq!(alt2(a), Ok((&b""[..], a)));
+ assert_eq!(alt3(a), Ok((a, &b""[..])));
+
+ fn alt4(i: &[u8]) -> IResult<&[u8], &[u8]> {
+ alt(("abcd", "efgh")).parse_next(i)
+ }
+ let b = &b"efgh"[..];
+ assert_eq!(alt4(a), Ok((&b""[..], a)));
+ assert_eq!(alt4(b), Ok((&b""[..], b)));
+}
+
+#[test]
+fn alt_incomplete() {
+ fn alt1(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ alt(("a", "bc", "def")).parse_next(i)
+ }
+
+ let a = &b""[..];
+ assert_eq!(
+ alt1(Partial::new(a)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ let a = &b"b"[..];
+ assert_eq!(
+ alt1(Partial::new(a)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ let a = &b"bcd"[..];
+ assert_eq!(
+ alt1(Partial::new(a)),
+ Ok((Partial::new(&b"d"[..]), &b"bc"[..]))
+ );
+ let a = &b"cde"[..];
+ assert_eq!(
+ alt1(Partial::new(a)),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(a),
+ ErrorKind::Tag
+ )))
+ );
+ let a = &b"de"[..];
+ assert_eq!(
+ alt1(Partial::new(a)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ let a = &b"defg"[..];
+ assert_eq!(
+ alt1(Partial::new(a)),
+ Ok((Partial::new(&b"g"[..]), &b"def"[..]))
+ );
+}
+
+#[test]
+fn permutation_test() {
+ #[allow(clippy::type_complexity)]
+ fn perm(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, (&[u8], &[u8], &[u8])> {
+ permutation(("abcd", "efg", "hi")).parse_next(i)
+ }
+
+ let expected = (&b"abcd"[..], &b"efg"[..], &b"hi"[..]);
+
+ let a = &b"abcdefghijk"[..];
+ assert_eq!(
+ perm(Partial::new(a)),
+ Ok((Partial::new(&b"jk"[..]), expected))
+ );
+ let b = &b"efgabcdhijk"[..];
+ assert_eq!(
+ perm(Partial::new(b)),
+ Ok((Partial::new(&b"jk"[..]), expected))
+ );
+ let c = &b"hiefgabcdjk"[..];
+ assert_eq!(
+ perm(Partial::new(c)),
+ Ok((Partial::new(&b"jk"[..]), expected))
+ );
+
+ let d = &b"efgxyzabcdefghi"[..];
+ assert_eq!(
+ perm(Partial::new(d)),
+ Err(ErrMode::Backtrack(error_node_position!(
+ Partial::new(&b"efgxyzabcdefghi"[..]),
+ ErrorKind::Alt,
+ error_position!(Partial::new(&b"xyzabcdefghi"[..]), ErrorKind::Tag)
+ )))
+ );
+
+ let e = &b"efgabc"[..];
+ assert_eq!(
+ perm(Partial::new(e)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+}
+
+#[test]
+#[cfg(feature = "alloc")]
+fn separated0_test() {
+ fn multi(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, Vec<&[u8]>> {
+ separated0("abcd", ",").parse_next(i)
+ }
+ fn multi_empty(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, Vec<&[u8]>> {
+ separated0("", ",").parse_next(i)
+ }
+ fn multi_longsep(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, Vec<&[u8]>> {
+ separated0("abcd", "..").parse_next(i)
+ }
+
+ let a = &b"abcdef"[..];
+ let b = &b"abcd,abcdef"[..];
+ let c = &b"azerty"[..];
+ let d = &b",,abc"[..];
+ let e = &b"abcd,abcd,ef"[..];
+ let f = &b"abc"[..];
+ let g = &b"abcd."[..];
+ let h = &b"abcd,abc"[..];
+
+ let res1 = vec![&b"abcd"[..]];
+ assert_eq!(multi(Partial::new(a)), Ok((Partial::new(&b"ef"[..]), res1)));
+ let res2 = vec![&b"abcd"[..], &b"abcd"[..]];
+ assert_eq!(multi(Partial::new(b)), Ok((Partial::new(&b"ef"[..]), res2)));
+ assert_eq!(
+ multi(Partial::new(c)),
+ Ok((Partial::new(&b"azerty"[..]), Vec::new()))
+ );
+ let res3 = vec![&b""[..], &b""[..], &b""[..]];
+ assert_eq!(
+ multi_empty(Partial::new(d)),
+ Ok((Partial::new(&b"abc"[..]), res3))
+ );
+ let res4 = vec![&b"abcd"[..], &b"abcd"[..]];
+ assert_eq!(
+ multi(Partial::new(e)),
+ Ok((Partial::new(&b",ef"[..]), res4))
+ );
+
+ assert_eq!(
+ multi(Partial::new(f)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ multi_longsep(Partial::new(g)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ multi(Partial::new(h)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+}
+
+#[test]
+#[cfg(feature = "alloc")]
+#[cfg_attr(debug_assertions, should_panic)]
+fn separated0_empty_sep_test() {
+ fn empty_sep(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, Vec<&[u8]>> {
+ separated0("abc", "").parse_next(i)
+ }
+
+ let i = &b"abcabc"[..];
+
+ let i_err_pos = &i[3..];
+ assert_eq!(
+ empty_sep(Partial::new(i)),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(i_err_pos),
+ ErrorKind::Assert
+ )))
+ );
+}
+
+#[test]
+#[cfg(feature = "alloc")]
+fn separated1_test() {
+ fn multi(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, Vec<&[u8]>> {
+ separated1("abcd", ",").parse_next(i)
+ }
+ fn multi_longsep(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, Vec<&[u8]>> {
+ separated1("abcd", "..").parse_next(i)
+ }
+
+ let a = &b"abcdef"[..];
+ let b = &b"abcd,abcdef"[..];
+ let c = &b"azerty"[..];
+ let d = &b"abcd,abcd,ef"[..];
+
+ let f = &b"abc"[..];
+ let g = &b"abcd."[..];
+ let h = &b"abcd,abc"[..];
+
+ let res1 = vec![&b"abcd"[..]];
+ assert_eq!(multi(Partial::new(a)), Ok((Partial::new(&b"ef"[..]), res1)));
+ let res2 = vec![&b"abcd"[..], &b"abcd"[..]];
+ assert_eq!(multi(Partial::new(b)), Ok((Partial::new(&b"ef"[..]), res2)));
+ assert_eq!(
+ multi(Partial::new(c)),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(c),
+ ErrorKind::Tag
+ )))
+ );
+ let res3 = vec![&b"abcd"[..], &b"abcd"[..]];
+ assert_eq!(
+ multi(Partial::new(d)),
+ Ok((Partial::new(&b",ef"[..]), res3))
+ );
+
+ assert_eq!(
+ multi(Partial::new(f)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ multi_longsep(Partial::new(g)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ multi(Partial::new(h)),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+}
+
+#[test]
+#[cfg(feature = "alloc")]
+fn repeat0_test() {
+ fn multi(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, Vec<&[u8]>> {
+ repeat(0.., "abcd").parse_next(i)
+ }
+
+ assert_eq!(
+ multi(Partial::new(&b"abcdef"[..])),
+ Ok((Partial::new(&b"ef"[..]), vec![&b"abcd"[..]]))
+ );
+ assert_eq!(
+ multi(Partial::new(&b"abcdabcdefgh"[..])),
+ Ok((Partial::new(&b"efgh"[..]), vec![&b"abcd"[..], &b"abcd"[..]]))
+ );
+ assert_eq!(
+ multi(Partial::new(&b"azerty"[..])),
+ Ok((Partial::new(&b"azerty"[..]), Vec::new()))
+ );
+ assert_eq!(
+ multi(Partial::new(&b"abcdab"[..])),
+ Err(ErrMode::Incomplete(Needed::new(2)))
+ );
+ assert_eq!(
+ multi(Partial::new(&b"abcd"[..])),
+ Err(ErrMode::Incomplete(Needed::new(4)))
+ );
+ assert_eq!(
+ multi(Partial::new(&b""[..])),
+ Err(ErrMode::Incomplete(Needed::new(4)))
+ );
+}
+
+#[test]
+#[cfg(feature = "alloc")]
+#[cfg_attr(debug_assertions, should_panic)]
+fn repeat0_empty_test() {
+ fn multi_empty(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, Vec<&[u8]>> {
+ repeat(0.., "").parse_next(i)
+ }
+
+ assert_eq!(
+ multi_empty(Partial::new(&b"abcdef"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"abcdef"[..]),
+ ErrorKind::Assert
+ )))
+ );
+}
+
+#[test]
+#[cfg(feature = "alloc")]
+fn repeat1_test() {
+ fn multi(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, Vec<&[u8]>> {
+ repeat(1.., "abcd").parse_next(i)
+ }
+
+ let a = &b"abcdef"[..];
+ let b = &b"abcdabcdefgh"[..];
+ let c = &b"azerty"[..];
+ let d = &b"abcdab"[..];
+
+ let res1 = vec![&b"abcd"[..]];
+ assert_eq!(multi(Partial::new(a)), Ok((Partial::new(&b"ef"[..]), res1)));
+ let res2 = vec![&b"abcd"[..], &b"abcd"[..]];
+ assert_eq!(
+ multi(Partial::new(b)),
+ Ok((Partial::new(&b"efgh"[..]), res2))
+ );
+ assert_eq!(
+ multi(Partial::new(c)),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(c),
+ ErrorKind::Tag
+ )))
+ );
+ assert_eq!(
+ multi(Partial::new(d)),
+ Err(ErrMode::Incomplete(Needed::new(2)))
+ );
+}
+
+#[test]
+#[cfg(feature = "alloc")]
+fn repeat_till_test() {
+ #[allow(clippy::type_complexity)]
+ fn multi(i: &[u8]) -> IResult<&[u8], (Vec<&[u8]>, &[u8])> {
+ repeat_till0("abcd", "efgh").parse_next(i)
+ }
+
+ let a = b"abcdabcdefghabcd";
+ let b = b"efghabcd";
+ let c = b"azerty";
+
+ let res_a = (vec![&b"abcd"[..], &b"abcd"[..]], &b"efgh"[..]);
+ let res_b: (Vec<&[u8]>, &[u8]) = (Vec::new(), &b"efgh"[..]);
+ assert_eq!(multi(&a[..]), Ok((&b"abcd"[..], res_a)));
+ assert_eq!(multi(&b[..]), Ok((&b"abcd"[..], res_b)));
+ assert_eq!(
+ multi(&c[..]),
+ Err(ErrMode::Backtrack(error_node_position!(
+ &c[..],
+ ErrorKind::Many,
+ error_position!(&c[..], ErrorKind::Tag)
+ )))
+ );
+}
+
+#[test]
+#[cfg(feature = "std")]
+fn infinite_many() {
+ fn tst(input: &[u8]) -> IResult<&[u8], &[u8]> {
+ println!("input: {:?}", input);
+ Err(ErrMode::Backtrack(error_position!(input, ErrorKind::Tag)))
+ }
+
+ // should not go into an infinite loop
+ fn multi0(i: &[u8]) -> IResult<&[u8], Vec<&[u8]>> {
+ repeat(0.., tst).parse_next(i)
+ }
+ let a = &b"abcdef"[..];
+ assert_eq!(multi0(a), Ok((a, Vec::new())));
+
+ fn multi1(i: &[u8]) -> IResult<&[u8], Vec<&[u8]>> {
+ repeat(1.., tst).parse_next(i)
+ }
+ let a = &b"abcdef"[..];
+ assert_eq!(
+ multi1(a),
+ Err(ErrMode::Backtrack(error_position!(a, ErrorKind::Tag)))
+ );
+}
+
+#[test]
+#[cfg(feature = "alloc")]
+fn repeat_test() {
+ fn multi(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, Vec<&[u8]>> {
+ repeat(2..=4, "Abcd").parse_next(i)
+ }
+
+ let a = &b"Abcdef"[..];
+ let b = &b"AbcdAbcdefgh"[..];
+ let c = &b"AbcdAbcdAbcdAbcdefgh"[..];
+ let d = &b"AbcdAbcdAbcdAbcdAbcdefgh"[..];
+ let e = &b"AbcdAb"[..];
+
+ assert_eq!(
+ multi(Partial::new(a)),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"ef"[..]),
+ ErrorKind::Tag
+ )))
+ );
+ let res1 = vec![&b"Abcd"[..], &b"Abcd"[..]];
+ assert_eq!(
+ multi(Partial::new(b)),
+ Ok((Partial::new(&b"efgh"[..]), res1))
+ );
+ let res2 = vec![&b"Abcd"[..], &b"Abcd"[..], &b"Abcd"[..], &b"Abcd"[..]];
+ assert_eq!(
+ multi(Partial::new(c)),
+ Ok((Partial::new(&b"efgh"[..]), res2))
+ );
+ let res3 = vec![&b"Abcd"[..], &b"Abcd"[..], &b"Abcd"[..], &b"Abcd"[..]];
+ assert_eq!(
+ multi(Partial::new(d)),
+ Ok((Partial::new(&b"Abcdefgh"[..]), res3))
+ );
+ assert_eq!(
+ multi(Partial::new(e)),
+ Err(ErrMode::Incomplete(Needed::new(2)))
+ );
+}
+
+#[test]
+#[cfg(feature = "alloc")]
+fn count_test() {
+ const TIMES: usize = 2;
+ fn cnt_2(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, Vec<&[u8]>> {
+ repeat(TIMES, "abc").parse_next(i)
+ }
+
+ assert_eq!(
+ cnt_2(Partial::new(&b"abcabcabcdef"[..])),
+ Ok((Partial::new(&b"abcdef"[..]), vec![&b"abc"[..], &b"abc"[..]]))
+ );
+ assert_eq!(
+ cnt_2(Partial::new(&b"ab"[..])),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ cnt_2(Partial::new(&b"abcab"[..])),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ cnt_2(Partial::new(&b"xxx"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"xxx"[..]),
+ ErrorKind::Tag
+ )))
+ );
+ assert_eq!(
+ cnt_2(Partial::new(&b"xxxabcabcdef"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"xxxabcabcdef"[..]),
+ ErrorKind::Tag
+ )))
+ );
+ assert_eq!(
+ cnt_2(Partial::new(&b"abcxxxabcdef"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"xxxabcdef"[..]),
+ ErrorKind::Tag
+ )))
+ );
+}
+
+#[test]
+#[cfg(feature = "alloc")]
+fn count_zero() {
+ const TIMES: usize = 0;
+ fn counter_2(i: &[u8]) -> IResult<&[u8], Vec<&[u8]>> {
+ repeat(TIMES, "abc").parse_next(i)
+ }
+
+ let done = &b"abcabcabcdef"[..];
+ let parsed_done = Vec::new();
+ let rest = done;
+ let incomplete_1 = &b"ab"[..];
+ let parsed_incompl_1 = Vec::new();
+ let incomplete_2 = &b"abcab"[..];
+ let parsed_incompl_2 = Vec::new();
+ let error = &b"xxx"[..];
+ let error_remain = &b"xxx"[..];
+ let parsed_err = Vec::new();
+ let error_1 = &b"xxxabcabcdef"[..];
+ let parsed_err_1 = Vec::new();
+ let error_1_remain = &b"xxxabcabcdef"[..];
+ let error_2 = &b"abcxxxabcdef"[..];
+ let parsed_err_2 = Vec::new();
+ let error_2_remain = &b"abcxxxabcdef"[..];
+
+ assert_eq!(counter_2(done), Ok((rest, parsed_done)));
+ assert_eq!(
+ counter_2(incomplete_1),
+ Ok((incomplete_1, parsed_incompl_1))
+ );
+ assert_eq!(
+ counter_2(incomplete_2),
+ Ok((incomplete_2, parsed_incompl_2))
+ );
+ assert_eq!(counter_2(error), Ok((error_remain, parsed_err)));
+ assert_eq!(counter_2(error_1), Ok((error_1_remain, parsed_err_1)));
+ assert_eq!(counter_2(error_2), Ok((error_2_remain, parsed_err_2)));
+}
+
+#[derive(Debug, Clone, Eq, PartialEq)]
+pub struct NilError;
+
+impl<I> From<(I, ErrorKind)> for NilError {
+ fn from(_: (I, ErrorKind)) -> Self {
+ NilError
+ }
+}
+
+impl<I> ParseError<I> for NilError {
+ fn from_error_kind(_: I, _: ErrorKind) -> NilError {
+ NilError
+ }
+ fn append(self, _: I, _: ErrorKind) -> NilError {
+ NilError
+ }
+}
+
+#[test]
+#[cfg(feature = "alloc")]
+fn fold_repeat0_test() {
+ fn fold_into_vec<T>(mut acc: Vec<T>, item: T) -> Vec<T> {
+ acc.push(item);
+ acc
+ }
+ fn multi(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, Vec<&[u8]>> {
+ fold_repeat(0.., "abcd", Vec::new, fold_into_vec).parse_next(i)
+ }
+
+ assert_eq!(
+ multi(Partial::new(&b"abcdef"[..])),
+ Ok((Partial::new(&b"ef"[..]), vec![&b"abcd"[..]]))
+ );
+ assert_eq!(
+ multi(Partial::new(&b"abcdabcdefgh"[..])),
+ Ok((Partial::new(&b"efgh"[..]), vec![&b"abcd"[..], &b"abcd"[..]]))
+ );
+ assert_eq!(
+ multi(Partial::new(&b"azerty"[..])),
+ Ok((Partial::new(&b"azerty"[..]), Vec::new()))
+ );
+ assert_eq!(
+ multi(Partial::new(&b"abcdab"[..])),
+ Err(ErrMode::Incomplete(Needed::new(2)))
+ );
+ assert_eq!(
+ multi(Partial::new(&b"abcd"[..])),
+ Err(ErrMode::Incomplete(Needed::new(4)))
+ );
+ assert_eq!(
+ multi(Partial::new(&b""[..])),
+ Err(ErrMode::Incomplete(Needed::new(4)))
+ );
+}
+
+#[test]
+#[cfg(feature = "alloc")]
+#[cfg_attr(debug_assertions, should_panic)]
+fn fold_repeat0_empty_test() {
+ fn fold_into_vec<T>(mut acc: Vec<T>, item: T) -> Vec<T> {
+ acc.push(item);
+ acc
+ }
+ fn multi_empty(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, Vec<&[u8]>> {
+ fold_repeat(0.., "", Vec::new, fold_into_vec).parse_next(i)
+ }
+
+ assert_eq!(
+ multi_empty(Partial::new(&b"abcdef"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"abcdef"[..]),
+ ErrorKind::Assert
+ )))
+ );
+}
+
+#[test]
+#[cfg(feature = "alloc")]
+fn fold_repeat1_test() {
+ fn fold_into_vec<T>(mut acc: Vec<T>, item: T) -> Vec<T> {
+ acc.push(item);
+ acc
+ }
+ fn multi(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, Vec<&[u8]>> {
+ fold_repeat(1.., "abcd", Vec::new, fold_into_vec).parse_next(i)
+ }
+
+ let a = &b"abcdef"[..];
+ let b = &b"abcdabcdefgh"[..];
+ let c = &b"azerty"[..];
+ let d = &b"abcdab"[..];
+
+ let res1 = vec![&b"abcd"[..]];
+ assert_eq!(multi(Partial::new(a)), Ok((Partial::new(&b"ef"[..]), res1)));
+ let res2 = vec![&b"abcd"[..], &b"abcd"[..]];
+ assert_eq!(
+ multi(Partial::new(b)),
+ Ok((Partial::new(&b"efgh"[..]), res2))
+ );
+ assert_eq!(
+ multi(Partial::new(c)),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(c),
+ ErrorKind::Many
+ )))
+ );
+ assert_eq!(
+ multi(Partial::new(d)),
+ Err(ErrMode::Incomplete(Needed::new(2)))
+ );
+}
+
+#[test]
+#[cfg(feature = "alloc")]
+fn fold_repeat_test() {
+ fn fold_into_vec<T>(mut acc: Vec<T>, item: T) -> Vec<T> {
+ acc.push(item);
+ acc
+ }
+ fn multi(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, Vec<&[u8]>> {
+ fold_repeat(2..=4, "Abcd", Vec::new, fold_into_vec).parse_next(i)
+ }
+
+ let a = &b"Abcdef"[..];
+ let b = &b"AbcdAbcdefgh"[..];
+ let c = &b"AbcdAbcdAbcdAbcdefgh"[..];
+ let d = &b"AbcdAbcdAbcdAbcdAbcdefgh"[..];
+ let e = &b"AbcdAb"[..];
+
+ assert_eq!(
+ multi(Partial::new(a)),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"ef"[..]),
+ ErrorKind::Tag
+ )))
+ );
+ let res1 = vec![&b"Abcd"[..], &b"Abcd"[..]];
+ assert_eq!(
+ multi(Partial::new(b)),
+ Ok((Partial::new(&b"efgh"[..]), res1))
+ );
+ let res2 = vec![&b"Abcd"[..], &b"Abcd"[..], &b"Abcd"[..], &b"Abcd"[..]];
+ assert_eq!(
+ multi(Partial::new(c)),
+ Ok((Partial::new(&b"efgh"[..]), res2))
+ );
+ let res3 = vec![&b"Abcd"[..], &b"Abcd"[..], &b"Abcd"[..], &b"Abcd"[..]];
+ assert_eq!(
+ multi(Partial::new(d)),
+ Ok((Partial::new(&b"Abcdefgh"[..]), res3))
+ );
+ assert_eq!(
+ multi(Partial::new(e)),
+ Err(ErrMode::Incomplete(Needed::new(2)))
+ );
+}
+
+#[test]
+fn repeat0_count_test() {
+ fn count0_nums(i: &[u8]) -> IResult<&[u8], usize> {
+ repeat(0.., (digit, ",")).parse_next(i)
+ }
+
+ assert_eq!(count0_nums(&b"123,junk"[..]), Ok((&b"junk"[..], 1)));
+
+ assert_eq!(count0_nums(&b"123,45,junk"[..]), Ok((&b"junk"[..], 2)));
+
+ assert_eq!(
+ count0_nums(&b"1,2,3,4,5,6,7,8,9,0,junk"[..]),
+ Ok((&b"junk"[..], 10))
+ );
+
+ assert_eq!(count0_nums(&b"hello"[..]), Ok((&b"hello"[..], 0)));
+}
+
+#[test]
+fn repeat1_count_test() {
+ fn count1_nums(i: &[u8]) -> IResult<&[u8], usize> {
+ repeat(1.., (digit, ",")).parse_next(i)
+ }
+
+ assert_eq!(count1_nums(&b"123,45,junk"[..]), Ok((&b"junk"[..], 2)));
+
+ assert_eq!(
+ count1_nums(&b"1,2,3,4,5,6,7,8,9,0,junk"[..]),
+ Ok((&b"junk"[..], 10))
+ );
+
+ assert_eq!(
+ count1_nums(&b"hello"[..]),
+ Err(ErrMode::Backtrack(error_position!(
+ &b"hello"[..],
+ ErrorKind::Slice
+ )))
+ );
+}
diff --git a/vendor/winnow-0.4.7/src/error.rs b/vendor/winnow-0.4.7/src/error.rs
new file mode 100644
index 000000000..c92228621
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/error.rs
@@ -0,0 +1,722 @@
+//! # Error management
+//!
+//! Errors are designed with multiple needs in mind:
+//! - Accumulate more [context][Parser::context] as the error goes up the parser chain
+//! - Distinguish between [recoverable errors,
+//! unrecoverable errors, and more data is needed][ErrMode]
+//! - Have a very low overhead, as errors are often discarded by the calling parser (examples: `many0`, `alt`)
+//! - Can be modified according to the user's needs, because some languages need a lot more information
+//! - Help thread-through the [stream][crate::stream]
+//!
+//! To abstract these needs away from the user, generally `winnow` parsers use the [`IResult`]
+//! alias, rather than [`Result`][std::result::Result]. [`finish`][FinishIResult::finish] is
+//! provided for top-level parsers to integrate with your application's error reporting.
+//!
+//! Error types include:
+//! - `()`
+//! - [`Error`]
+//! - [`VerboseError`]
+//! - [Custom errors][crate::_topic::error]
+
+#[cfg(feature = "alloc")]
+use crate::lib::std::borrow::ToOwned;
+use crate::lib::std::fmt;
+use core::num::NonZeroUsize;
+
+use crate::stream::Stream;
+use crate::stream::StreamIsPartial;
+#[allow(unused_imports)] // Here for intra-doc links
+use crate::Parser;
+
+/// Holds the result of [`Parser`]
+///
+/// - `Ok((I, O))` is the remaining [input][crate::stream] and the parsed value
+/// - [`Err(ErrMode<E>)`][ErrMode] is the error along with how to respond to it
+///
+/// By default, the error type (`E`) is [`Error`]
+///
+/// At the top-level of your parser, you can use the [`FinishIResult::finish`] method to convert
+/// it to a more common result type
+pub type IResult<I, O, E = Error<I>> = Result<(I, O), ErrMode<E>>;
+
+/// Extension trait to convert a parser's [`IResult`] to a more manageable type
+#[deprecated(since = "0.4.0", note = "Replaced with `Parser::parse`")]
+pub trait FinishIResult<I, O, E> {
+ /// Converts the parser's [`IResult`] to a type that is more consumable by callers.
+ ///
+ /// Errors if the parser is not at the [end of input][crate::combinator::eof]. See
+ /// [`FinishIResult::finish_err`] if the remaining input is needed.
+ ///
+ /// # Panic
+ ///
+ /// If the result is `Err(ErrMode::Incomplete(_))`, this method will panic.
+ /// - **Complete parsers:** It will not be an issue, `Incomplete` is never used
+ /// - **Partial parsers:** `Incomplete` will be returned if there's not enough data
+ /// for the parser to decide, and you should gather more data before parsing again.
+ /// Once the parser returns either `Ok(_)`, `Err(ErrMode::Backtrack(_))` or `Err(ErrMode::Cut(_))`,
+ /// you can get out of the parsing loop and call `finish_err()` on the parser's result
+ ///
+ /// # Example
+ ///
+ /// ```rust
+ /// # #[cfg(feature = "std")] {
+ /// use winnow::prelude::*;
+ /// use winnow::ascii::hex_uint;
+ /// use winnow::error::Error;
+ ///
+ /// struct Hex(u64);
+ ///
+ /// fn parse(value: &str) -> Result<Hex, Error<String>> {
+ /// hex_uint.map(Hex).parse_next(value).finish().map_err(Error::into_owned)
+ /// }
+ /// # }
+ /// ```
+ #[deprecated(since = "0.4.0", note = "Replaced with `Parser::parse`")]
+ fn finish(self) -> Result<O, E>;
+
+ /// Converts the parser's [`IResult`] to a type that is more consumable by errors.
+ ///
+ /// It keeps the same `Ok` branch, and merges `ErrMode::Backtrack` and `ErrMode::Cut` into the `Err`
+ /// side.
+ ///
+ /// # Panic
+ ///
+ /// If the result is `Err(ErrMode::Incomplete(_))`, this method will panic as [`ErrMode::Incomplete`]
+ /// should only be set when the input is [`StreamIsPartial<false>`] which this isn't implemented
+ /// for.
+ #[deprecated(since = "0.4.0", note = "Replaced with `Parser::parse`")]
+ fn finish_err(self) -> Result<(I, O), E>;
+}
+
+#[allow(deprecated)]
+impl<I, O, E> FinishIResult<I, O, E> for IResult<I, O, E>
+where
+ I: Stream,
+ // Force users to deal with `Incomplete` when `StreamIsPartial<true>`
+ I: StreamIsPartial,
+ I: Clone,
+ E: ParseError<I>,
+{
+ fn finish(self) -> Result<O, E> {
+ debug_assert!(
+ !I::is_partial_supported(),
+ "partial streams need to handle `ErrMode::Incomplete`"
+ );
+
+ let (i, o) = self.finish_err()?;
+ crate::combinator::eof(i).finish_err()?;
+ Ok(o)
+ }
+
+ fn finish_err(self) -> Result<(I, O), E> {
+ debug_assert!(
+ !I::is_partial_supported(),
+ "partial streams need to handle `ErrMode::Incomplete`"
+ );
+
+ match self {
+ Ok(res) => Ok(res),
+ Err(ErrMode::Backtrack(e)) | Err(ErrMode::Cut(e)) => Err(e),
+ Err(ErrMode::Incomplete(_)) => {
+ panic!("complete parsers should not report `Err(ErrMode::Incomplete(_))`")
+ }
+ }
+ }
+}
+
+/// Contains information on needed data if a parser returned `Incomplete`
+///
+/// **Note:** This is only possible for `Stream` that are [partial][`StreamIsPartial`],
+/// like [`Partial`][crate::Partial].
+#[derive(Debug, PartialEq, Eq, Clone, Copy)]
+#[cfg_attr(nightly, warn(rustdoc::missing_doc_code_examples))]
+pub enum Needed {
+ /// Needs more data, but we do not know how much
+ Unknown,
+ /// Contains the required data size in bytes
+ Size(NonZeroUsize),
+}
+
+impl Needed {
+ /// Creates `Needed` instance, returns `Needed::Unknown` if the argument is zero
+ pub fn new(s: usize) -> Self {
+ match NonZeroUsize::new(s) {
+ Some(sz) => Needed::Size(sz),
+ None => Needed::Unknown,
+ }
+ }
+
+ /// Indicates if we know how many bytes we need
+ pub fn is_known(&self) -> bool {
+ *self != Needed::Unknown
+ }
+
+ /// Maps a `Needed` to `Needed` by applying a function to a contained `Size` value.
+ #[inline]
+ pub fn map<F: Fn(NonZeroUsize) -> usize>(self, f: F) -> Needed {
+ match self {
+ Needed::Unknown => Needed::Unknown,
+ Needed::Size(n) => Needed::new(f(n)),
+ }
+ }
+}
+
+/// The `Err` enum indicates the parser was not successful
+#[derive(Debug, Clone, PartialEq)]
+#[cfg_attr(nightly, warn(rustdoc::missing_doc_code_examples))]
+pub enum ErrMode<E> {
+ /// There was not enough data to determine the appropriate action
+ ///
+ /// More data needs to be buffered before retrying the parse.
+ ///
+ /// This must only be set when the [`Stream`] is [partial][`StreamIsPartial`], like with
+ /// [`Partial`][crate::Partial]
+ ///
+ /// Convert this into an `Backtrack` with [`Parser::complete_err`]
+ Incomplete(Needed),
+ /// The parser failed with a recoverable error (the default).
+ ///
+ /// For example, a parser for json values might include a
+ /// [`dec_uint`][crate::ascii::dec_uint] as one case in an [`alt`][crate::combinator::alt]
+ /// combiantor. If it fails, the next case should be tried.
+ Backtrack(E),
+ /// The parser had an unrecoverable error.
+ ///
+ /// The parser was on the right branch, so directly report it to the user rather than trying
+ /// other branches. You can use [`cut_err()`][crate::combinator::cut_err] combinator to switch
+ /// from `ErrMode::Backtrack` to `ErrMode::Cut`.
+ ///
+ /// For example, one case in an [`alt`][crate::combinator::alt] combinator found a unique prefix
+ /// and you want any further errors parsing the case to be reported to the user.
+ Cut(E),
+}
+
+impl<E> ErrMode<E> {
+ /// Tests if the result is Incomplete
+ pub fn is_incomplete(&self) -> bool {
+ matches!(self, ErrMode::Incomplete(_))
+ }
+
+ /// Prevent backtracking, bubbling the error up to the top
+ pub fn cut(self) -> Self {
+ match self {
+ ErrMode::Backtrack(e) => ErrMode::Cut(e),
+ rest => rest,
+ }
+ }
+
+ /// Enable backtracking support
+ pub fn backtrack(self) -> Self {
+ match self {
+ ErrMode::Cut(e) => ErrMode::Backtrack(e),
+ rest => rest,
+ }
+ }
+
+ /// Applies the given function to the inner error
+ pub fn map<E2, F>(self, f: F) -> ErrMode<E2>
+ where
+ F: FnOnce(E) -> E2,
+ {
+ match self {
+ ErrMode::Incomplete(n) => ErrMode::Incomplete(n),
+ ErrMode::Cut(t) => ErrMode::Cut(f(t)),
+ ErrMode::Backtrack(t) => ErrMode::Backtrack(f(t)),
+ }
+ }
+
+ /// Automatically converts between errors if the underlying type supports it
+ pub fn convert<F>(self) -> ErrMode<F>
+ where
+ E: ErrorConvert<F>,
+ {
+ self.map(ErrorConvert::convert)
+ }
+}
+
+impl<I, E: ParseError<I>> ParseError<I> for ErrMode<E> {
+ fn from_error_kind(input: I, kind: ErrorKind) -> Self {
+ ErrMode::Backtrack(E::from_error_kind(input, kind))
+ }
+
+ #[cfg_attr(debug_assertions, track_caller)]
+ fn assert(input: I, message: &'static str) -> Self
+ where
+ I: crate::lib::std::fmt::Debug,
+ {
+ ErrMode::Backtrack(E::assert(input, message))
+ }
+
+ fn append(self, input: I, kind: ErrorKind) -> Self {
+ match self {
+ ErrMode::Backtrack(e) => ErrMode::Backtrack(e.append(input, kind)),
+ e => e,
+ }
+ }
+
+ fn or(self, other: Self) -> Self {
+ match (self, other) {
+ (ErrMode::Backtrack(e), ErrMode::Backtrack(o)) => ErrMode::Backtrack(e.or(o)),
+ (ErrMode::Incomplete(e), _) | (_, ErrMode::Incomplete(e)) => ErrMode::Incomplete(e),
+ (ErrMode::Cut(e), _) | (_, ErrMode::Cut(e)) => ErrMode::Cut(e),
+ }
+ }
+}
+
+impl<I, EXT, E> FromExternalError<I, EXT> for ErrMode<E>
+where
+ E: FromExternalError<I, EXT>,
+{
+ fn from_external_error(input: I, kind: ErrorKind, e: EXT) -> Self {
+ ErrMode::Backtrack(E::from_external_error(input, kind, e))
+ }
+}
+
+impl<T> ErrMode<Error<T>> {
+ /// Maps `ErrMode<Error<T>>` to `ErrMode<Error<U>>` with the given `F: T -> U`
+ pub fn map_input<U, F>(self, f: F) -> ErrMode<Error<U>>
+ where
+ F: FnOnce(T) -> U,
+ {
+ match self {
+ ErrMode::Incomplete(n) => ErrMode::Incomplete(n),
+ ErrMode::Cut(Error { input, kind }) => ErrMode::Cut(Error {
+ input: f(input),
+ kind,
+ }),
+ ErrMode::Backtrack(Error { input, kind }) => ErrMode::Backtrack(Error {
+ input: f(input),
+ kind,
+ }),
+ }
+ }
+}
+
+impl<E: Eq> Eq for ErrMode<E> {}
+
+impl<E> fmt::Display for ErrMode<E>
+where
+ E: fmt::Debug,
+{
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ match self {
+ ErrMode::Incomplete(Needed::Size(u)) => write!(f, "Parsing requires {} bytes/chars", u),
+ ErrMode::Incomplete(Needed::Unknown) => write!(f, "Parsing requires more data"),
+ ErrMode::Cut(c) => write!(f, "Parsing Failure: {:?}", c),
+ ErrMode::Backtrack(c) => write!(f, "Parsing Error: {:?}", c),
+ }
+ }
+}
+
+/// The basic [`Parser`] trait for errors
+///
+/// It provides methods to create an error from some combinators,
+/// and combine existing errors in combinators like `alt`.
+pub trait ParseError<I>: Sized {
+ /// Creates an error from the input position and an [`ErrorKind`]
+ fn from_error_kind(input: I, kind: ErrorKind) -> Self;
+
+ /// Process a parser assertion
+ #[cfg_attr(debug_assertions, track_caller)]
+ fn assert(input: I, _message: &'static str) -> Self
+ where
+ I: crate::lib::std::fmt::Debug,
+ {
+ #[cfg(debug_assertions)]
+ panic!("assert `{}` failed at {:#?}", _message, input);
+ #[cfg(not(debug_assertions))]
+ Self::from_error_kind(input, ErrorKind::Assert)
+ }
+
+ /// Like [`ParseError::from_error_kind`] but merges it with the existing error.
+ ///
+ /// This is useful when backtracking through a parse tree, accumulating error context on the
+ /// way.
+ fn append(self, input: I, kind: ErrorKind) -> Self;
+
+ /// Combines errors from two different parse branches.
+ ///
+ /// For example, this would be used by [`alt`][crate::combinator::alt] to report the error from
+ /// each case.
+ fn or(self, other: Self) -> Self {
+ other
+ }
+}
+
+/// Used by [`Parser::context`] to add custom data to error while backtracking
+///
+/// May be implemented multiple times for different kinds of context.
+pub trait ContextError<I, C = &'static str>: Sized {
+ /// Append to an existing error custom data
+ ///
+ /// This is used mainly by [`Parser::context`], to add user friendly information
+ /// to errors when backtracking through a parse tree
+ fn add_context(self, _input: I, _ctx: C) -> Self {
+ self
+ }
+}
+
+/// Create a new error with an external error, from [`std::str::FromStr`]
+///
+/// This trait is required by the [`Parser::try_map`] combinator.
+pub trait FromExternalError<I, E> {
+ /// Like [`ParseError::from_error_kind`] but also include an external error.
+ fn from_external_error(input: I, kind: ErrorKind, e: E) -> Self;
+}
+
+/// Equivalent of `From` implementation to avoid orphan rules in bits parsers
+pub trait ErrorConvert<E> {
+ /// Transform to another error type
+ fn convert(self) -> E;
+}
+
+/// Default error type, only contains the error' location and kind
+///
+/// This is a low-overhead error that only provides basic information. For less overhead, see
+/// `()`. Fore more information, see [`VerboseError`].
+///:w
+/// **Note:** [context][Parser::context] and inner errors (like from [`Parser::try_map`]) will be
+/// dropped.
+#[derive(Copy, Clone, Debug, Eq, PartialEq)]
+pub struct Error<I> {
+ /// The input stream, pointing to the location where the error occurred
+ pub input: I,
+ /// A rudimentary error kind
+ pub kind: ErrorKind,
+}
+
+impl<I> Error<I> {
+ /// Creates a new basic error
+ pub fn new(input: I, kind: ErrorKind) -> Error<I> {
+ Error { input, kind }
+ }
+}
+
+#[cfg(feature = "alloc")]
+impl<'i, I: ToOwned + ?Sized> Error<&'i I> {
+ /// Obtaining ownership
+ pub fn into_owned(self) -> Error<<I as ToOwned>::Owned> {
+ Error {
+ input: self.input.to_owned(),
+ kind: self.kind,
+ }
+ }
+}
+
+impl<I> ParseError<I> for Error<I> {
+ fn from_error_kind(input: I, kind: ErrorKind) -> Self {
+ Error { input, kind }
+ }
+
+ fn append(self, _: I, _: ErrorKind) -> Self {
+ self
+ }
+}
+
+impl<I, C> ContextError<I, C> for Error<I> {}
+
+impl<I, E> FromExternalError<I, E> for Error<I> {
+ /// Create a new error from an input position and an external error
+ fn from_external_error(input: I, kind: ErrorKind, _e: E) -> Self {
+ Error { input, kind }
+ }
+}
+
+impl<I> ErrorConvert<Error<(I, usize)>> for Error<I> {
+ fn convert(self) -> Error<(I, usize)> {
+ Error {
+ input: (self.input, 0),
+ kind: self.kind,
+ }
+ }
+}
+
+impl<I> ErrorConvert<Error<I>> for Error<(I, usize)> {
+ fn convert(self) -> Error<I> {
+ Error {
+ input: self.input.0,
+ kind: self.kind,
+ }
+ }
+}
+
+/// The Display implementation allows the `std::error::Error` implementation
+impl<I: fmt::Display> fmt::Display for Error<I> {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ write!(f, "error {:?} at: {}", self.kind, self.input)
+ }
+}
+
+#[cfg(feature = "std")]
+impl<I: fmt::Debug + fmt::Display + Sync + Send + 'static> std::error::Error for Error<I> {}
+
+impl<I> ParseError<I> for () {
+ fn from_error_kind(_: I, _: ErrorKind) -> Self {}
+
+ fn append(self, _: I, _: ErrorKind) -> Self {}
+}
+
+impl<I, C> ContextError<I, C> for () {}
+
+impl<I, E> FromExternalError<I, E> for () {
+ fn from_external_error(_input: I, _kind: ErrorKind, _e: E) -> Self {}
+}
+
+impl ErrorConvert<()> for () {
+ fn convert(self) {}
+}
+
+/// Accumulates error information while backtracking
+///
+/// For less overhead (and information), see [`Error`].
+///
+/// [`convert_error`] provides an example of how to render this for end-users.
+///
+/// **Note:** This will only capture the last failed branch for combinators like
+/// [`alt`][crate::combinator::alt].
+#[cfg(feature = "alloc")]
+#[derive(Clone, Debug, Eq, PartialEq)]
+pub struct VerboseError<I> {
+ /// Accumulated error information
+ pub errors: crate::lib::std::vec::Vec<(I, VerboseErrorKind)>,
+}
+
+#[cfg(feature = "alloc")]
+impl<'i, I: ToOwned + ?Sized> VerboseError<&'i I> {
+ /// Obtaining ownership
+ pub fn into_owned(self) -> VerboseError<<I as ToOwned>::Owned> {
+ #[allow(clippy::redundant_clone)] // false positive
+ VerboseError {
+ errors: self
+ .errors
+ .into_iter()
+ .map(|(i, k)| (i.to_owned(), k))
+ .collect(),
+ }
+ }
+}
+
+#[cfg(feature = "alloc")]
+#[derive(Clone, Debug, Eq, PartialEq)]
+/// Error context for `VerboseError`
+pub enum VerboseErrorKind {
+ /// Static string added by the `context` function
+ Context(&'static str),
+ /// Error kind given by various parsers
+ Winnow(ErrorKind),
+}
+
+#[cfg(feature = "alloc")]
+impl<I> ParseError<I> for VerboseError<I> {
+ fn from_error_kind(input: I, kind: ErrorKind) -> Self {
+ VerboseError {
+ errors: vec![(input, VerboseErrorKind::Winnow(kind))],
+ }
+ }
+
+ fn append(mut self, input: I, kind: ErrorKind) -> Self {
+ self.errors.push((input, VerboseErrorKind::Winnow(kind)));
+ self
+ }
+}
+
+#[cfg(feature = "alloc")]
+impl<I> ContextError<I, &'static str> for VerboseError<I> {
+ fn add_context(mut self, input: I, ctx: &'static str) -> Self {
+ self.errors.push((input, VerboseErrorKind::Context(ctx)));
+ self
+ }
+}
+
+#[cfg(feature = "alloc")]
+impl<I, E> FromExternalError<I, E> for VerboseError<I> {
+ /// Create a new error from an input position and an external error
+ fn from_external_error(input: I, kind: ErrorKind, _e: E) -> Self {
+ Self::from_error_kind(input, kind)
+ }
+}
+
+#[cfg(feature = "alloc")]
+impl<I> ErrorConvert<VerboseError<I>> for VerboseError<(I, usize)> {
+ fn convert(self) -> VerboseError<I> {
+ VerboseError {
+ errors: self.errors.into_iter().map(|(i, e)| (i.0, e)).collect(),
+ }
+ }
+}
+
+#[cfg(feature = "alloc")]
+impl<I> ErrorConvert<VerboseError<(I, usize)>> for VerboseError<I> {
+ fn convert(self) -> VerboseError<(I, usize)> {
+ VerboseError {
+ errors: self.errors.into_iter().map(|(i, e)| ((i, 0), e)).collect(),
+ }
+ }
+}
+
+#[cfg(feature = "alloc")]
+impl<I: fmt::Display> fmt::Display for VerboseError<I> {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ writeln!(f, "Parse error:")?;
+ for (input, error) in &self.errors {
+ match error {
+ VerboseErrorKind::Winnow(e) => writeln!(f, "{:?} at: {}", e, input)?,
+ VerboseErrorKind::Context(s) => writeln!(f, "in section '{}', at: {}", s, input)?,
+ }
+ }
+
+ Ok(())
+ }
+}
+
+#[cfg(feature = "std")]
+impl<I: fmt::Debug + fmt::Display + Sync + Send + 'static> std::error::Error for VerboseError<I> {}
+
+/// Transforms a `VerboseError` into a trace with input position information
+#[cfg(feature = "alloc")]
+pub fn convert_error<I: core::ops::Deref<Target = str>>(
+ input: I,
+ e: VerboseError<I>,
+) -> crate::lib::std::string::String {
+ use crate::lib::std::fmt::Write;
+ use crate::stream::Offset;
+
+ let mut result = crate::lib::std::string::String::new();
+
+ for (i, (substring, kind)) in e.errors.iter().enumerate() {
+ let offset = input.offset_to(substring);
+
+ if input.is_empty() {
+ match kind {
+ VerboseErrorKind::Context(s) => {
+ write!(&mut result, "{}: in {}, got empty input\n\n", i, s)
+ }
+ VerboseErrorKind::Winnow(e) => {
+ write!(&mut result, "{}: in {:?}, got empty input\n\n", i, e)
+ }
+ }
+ } else {
+ let prefix = &input.as_bytes()[..offset];
+
+ // Count the number of newlines in the first `offset` bytes of input
+ let line_number = prefix.iter().filter(|&&b| b == b'\n').count() + 1;
+
+ // Find the line that includes the subslice:
+ // Find the *last* newline before the substring starts
+ let line_begin = prefix
+ .iter()
+ .rev()
+ .position(|&b| b == b'\n')
+ .map(|pos| offset - pos)
+ .unwrap_or(0);
+
+ // Find the full line after that newline
+ let line = input[line_begin..]
+ .lines()
+ .next()
+ .unwrap_or(&input[line_begin..])
+ .trim_end();
+
+ // The (1-indexed) column number is the offset of our substring into that line
+ let column_number = line.offset_to(substring) + 1;
+
+ match kind {
+ VerboseErrorKind::Context(s) => write!(
+ &mut result,
+ "{i}: at line {line_number}, in {context}:\n\
+ {line}\n\
+ {caret:>column$}\n\n",
+ i = i,
+ line_number = line_number,
+ context = s,
+ line = line,
+ caret = '^',
+ column = column_number,
+ ),
+ VerboseErrorKind::Winnow(e) => write!(
+ &mut result,
+ "{i}: at line {line_number}, in {kind:?}:\n\
+ {line}\n\
+ {caret:>column$}\n\n",
+ i = i,
+ line_number = line_number,
+ kind = e,
+ line = line,
+ caret = '^',
+ column = column_number,
+ ),
+ }
+ }
+ // Because `write!` to a `String` is infallible, this `unwrap` is fine.
+ .unwrap();
+ }
+
+ result
+}
+
+/// Provide some minor debug context for errors
+#[rustfmt::skip]
+#[derive(Debug,PartialEq,Eq,Hash,Clone,Copy)]
+#[allow(missing_docs)]
+pub enum ErrorKind {
+ Assert,
+ Token,
+ Tag,
+ Alt,
+ Many,
+ Eof,
+ Slice,
+ Complete,
+ Not,
+ Verify,
+ Fail,
+}
+
+impl ErrorKind {
+ #[rustfmt::skip]
+ /// Converts an `ErrorKind` to a text description
+ pub fn description(&self) -> &str {
+ match *self {
+ ErrorKind::Assert => "assert",
+ ErrorKind::Token => "token",
+ ErrorKind::Tag => "tag",
+ ErrorKind::Alt => "alternative",
+ ErrorKind::Many => "many",
+ ErrorKind::Eof => "end of file",
+ ErrorKind::Slice => "slice",
+ ErrorKind::Complete => "complete",
+ ErrorKind::Not => "negation",
+ ErrorKind::Verify => "predicate verification",
+ ErrorKind::Fail => "fail",
+ }
+ }
+}
+
+/// Creates a parse error from a [`ErrorKind`]
+/// and the position in the input
+#[cfg(test)]
+macro_rules! error_position(
+ ($input:expr, $code:expr) => ({
+ $crate::error::ParseError::from_error_kind($input, $code)
+ });
+);
+
+#[cfg(test)]
+macro_rules! error_node_position(
+ ($input:expr, $code:expr, $next:expr) => ({
+ $crate::error::ParseError::append($next, $input, $code)
+ });
+);
+
+#[cfg(test)]
+#[cfg(feature = "alloc")]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn convert_error_panic() {
+ let input = "";
+
+ let _result: IResult<_, _, VerboseError<&str>> = 'x'.parse_next(input);
+ }
+}
diff --git a/vendor/winnow-0.4.7/src/lib.rs b/vendor/winnow-0.4.7/src/lib.rs
new file mode 100644
index 000000000..3b6066230
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/lib.rs
@@ -0,0 +1,258 @@
+//! > winnow, making parsing a breeze
+//!
+//! `winnow` is a parser combinator library
+//!
+//! Quick links:
+//! - [List of combinators][crate::combinator]
+//! - [Tutorial][_tutorial::chapter_0]
+//! - [Special Topics][_topic]
+//! - [Discussions](https://github.com/winnow-rs/winnow/discussions)
+//!
+//! ## Aspirations
+//!
+//! `winnow` aims to be your "do everything" parser, much like people treat regular expressions.
+//!
+//! In roughly priority order:
+//! 1. Support writing parser declaratively while not getting in the way of imperative-style
+//! parsing when needed, working as an open-ended toolbox rather than a close-ended framework.
+//! 2. Flexible enough to be used for any application, including parsing binary data, strings, or
+//! separate lexing and parsing phases
+//! 3. Zero-cost abstractions, making it easy to write high performance parsers
+//! 4. Easy to use, making it trivial for one-off uses
+//!
+//! In addition:
+//! - Resilient maintainership, including
+//! - Willing to break compatibility rather than batching up breaking changes in large releases
+//! - Leverage feature flags to keep one active branch
+//! - We will support the last 6 months of rust releases (MSRV, currently 1.64.0)
+//!
+//! See also [Special Topic: Why winnow?][crate::_topic::why]
+//!
+//! ## Example
+//!
+//! Run
+//! ```console
+//! $ cargo add winnow
+//! ```
+//!
+//! Then use it to parse:
+//! ```rust
+//! # #[cfg(feature = "alloc")] {
+#![doc = include_str!("../examples/css/parser.rs")]
+//! # }
+//! ```
+//!
+//! See also the [Tutorial][_tutorial::chapter_0] and [Special Topics][_topic]
+
+#![cfg_attr(docsrs, feature(doc_auto_cfg))]
+#![cfg_attr(docsrs, feature(doc_cfg))]
+#![cfg_attr(docsrs, feature(extended_key_value_attributes))]
+#![cfg_attr(not(feature = "std"), no_std)]
+#![warn(missing_docs)]
+// BEGIN - Embark standard lints v6 for Rust 1.55+
+// do not change or add/remove here, but one can add exceptions after this section
+// for more info see: <https://github.com/EmbarkStudios/rust-ecosystem/issues/59>
+// "-Dunsafe_code",
+#![warn(clippy::all)]
+#![warn(clippy::await_holding_lock)]
+#![warn(clippy::char_lit_as_u8)]
+#![warn(clippy::checked_conversions)]
+#![warn(clippy::dbg_macro)]
+#![warn(clippy::debug_assert_with_mut_call)]
+#![warn(clippy::doc_markdown)]
+#![warn(clippy::empty_enum)]
+#![warn(clippy::enum_glob_use)]
+#![warn(clippy::exit)]
+#![warn(clippy::expl_impl_clone_on_copy)]
+#![warn(clippy::explicit_deref_methods)]
+#![warn(clippy::explicit_into_iter_loop)]
+#![warn(clippy::fallible_impl_from)]
+#![warn(clippy::filter_map_next)]
+#![warn(clippy::flat_map_option)]
+#![warn(clippy::float_cmp_const)]
+#![warn(clippy::fn_params_excessive_bools)]
+#![warn(clippy::from_iter_instead_of_collect)]
+#![warn(clippy::if_let_mutex)]
+#![warn(clippy::implicit_clone)]
+#![warn(clippy::imprecise_flops)]
+#![warn(clippy::inefficient_to_string)]
+#![warn(clippy::invalid_upcast_comparisons)]
+#![warn(clippy::large_digit_groups)]
+#![warn(clippy::large_stack_arrays)]
+#![warn(clippy::large_types_passed_by_value)]
+#![warn(clippy::let_unit_value)]
+#![warn(clippy::linkedlist)]
+#![warn(clippy::lossy_float_literal)]
+#![warn(clippy::macro_use_imports)]
+#![warn(clippy::manual_ok_or)]
+#![warn(clippy::map_err_ignore)]
+#![warn(clippy::map_flatten)]
+#![warn(clippy::map_unwrap_or)]
+#![warn(clippy::match_on_vec_items)]
+#![warn(clippy::match_same_arms)]
+#![warn(clippy::match_wild_err_arm)]
+#![warn(clippy::match_wildcard_for_single_variants)]
+#![warn(clippy::mem_forget)]
+#![warn(clippy::mismatched_target_os)]
+#![warn(clippy::missing_enforced_import_renames)]
+#![warn(clippy::mut_mut)]
+#![warn(clippy::mutex_integer)]
+#![warn(clippy::needless_borrow)]
+#![warn(clippy::needless_continue)]
+#![warn(clippy::needless_for_each)]
+#![warn(clippy::option_option)]
+#![warn(clippy::path_buf_push_overwrite)]
+#![warn(clippy::ptr_as_ptr)]
+#![warn(clippy::rc_mutex)]
+#![warn(clippy::ref_option_ref)]
+#![warn(clippy::rest_pat_in_fully_bound_structs)]
+#![warn(clippy::same_functions_in_if_condition)]
+#![warn(clippy::semicolon_if_nothing_returned)]
+#![warn(clippy::single_match_else)]
+#![warn(clippy::string_add_assign)]
+#![warn(clippy::string_add)]
+#![warn(clippy::string_lit_as_bytes)]
+#![warn(clippy::string_to_string)]
+#![warn(clippy::todo)]
+#![warn(clippy::trait_duplication_in_bounds)]
+#![warn(clippy::unimplemented)]
+#![warn(clippy::unnested_or_patterns)]
+#![warn(clippy::unused_self)]
+#![warn(clippy::useless_transmute)]
+#![warn(clippy::verbose_file_reads)]
+#![warn(clippy::zero_sized_map_values)]
+#![warn(future_incompatible)]
+#![warn(nonstandard_style)]
+#![warn(rust_2018_idioms)]
+// END - Embark standard lints v6 for Rust 1.55+
+#![allow(clippy::branches_sharing_code)]
+#![allow(clippy::collapsible_else_if)]
+#![allow(clippy::if_same_then_else)]
+#![allow(clippy::bool_assert_comparison)]
+#![allow(clippy::let_and_return)]
+#![allow(clippy::assertions_on_constants)]
+#![allow(clippy::map_unwrap_or)]
+#![allow(clippy::single_match_else)]
+#![allow(clippy::single_match)]
+#![allow(clippy::unnested_or_patterns)]
+#[cfg_attr(nightly, warn(rustdoc::missing_doc_code_examples))]
+#[cfg(feature = "alloc")]
+#[macro_use]
+extern crate alloc;
+#[cfg(doctest)]
+extern crate doc_comment;
+
+#[cfg(doctest)]
+doc_comment::doctest!("../README.md");
+
+/// Lib module to re-export everything needed from `std` or `core`/`alloc`. This is how `serde` does
+/// it, albeit there it is not public.
+#[doc(hidden)]
+pub(crate) mod lib {
+ /// `std` facade allowing `std`/`core` to be interchangeable. Reexports `alloc` crate optionally,
+ /// as well as `core` or `std`
+ #[cfg(not(feature = "std"))]
+ /// internal std exports for no_std compatibility
+ pub mod std {
+ #[doc(hidden)]
+ #[cfg(not(feature = "alloc"))]
+ pub use core::borrow;
+
+ #[cfg(feature = "alloc")]
+ #[doc(hidden)]
+ pub use alloc::{borrow, boxed, collections, string, vec};
+
+ #[doc(hidden)]
+ pub use core::{cmp, convert, fmt, hash, iter, mem, ops, option, result, slice, str};
+
+ /// internal reproduction of std prelude
+ #[doc(hidden)]
+ pub mod prelude {
+ pub use core::prelude as v1;
+ }
+ }
+
+ #[cfg(feature = "std")]
+ /// internal std exports for `no_std` compatibility
+ pub mod std {
+ #[doc(hidden)]
+ pub use std::{
+ alloc, borrow, boxed, cmp, collections, convert, fmt, hash, iter, mem, ops, option,
+ result, slice, str, string, vec,
+ };
+
+ /// internal reproduction of std prelude
+ #[doc(hidden)]
+ pub mod prelude {
+ pub use std::prelude as v1;
+ }
+ }
+}
+
+#[macro_use]
+mod macros;
+
+#[macro_use]
+pub mod error;
+
+mod parser;
+
+pub mod stream;
+
+pub mod ascii;
+pub mod binary;
+pub mod bits;
+pub mod branch;
+pub mod bytes;
+pub mod character;
+pub mod combinator;
+pub mod multi;
+pub mod number;
+pub mod sequence;
+pub mod token;
+pub mod trace;
+
+#[cfg(feature = "unstable-doc")]
+pub mod _topic;
+#[cfg(feature = "unstable-doc")]
+pub mod _tutorial;
+
+/// Core concepts available for glob import
+///
+/// Including
+/// - [`FinishIResult`]
+/// - [`Parser`]
+///
+/// ## Example
+///
+/// ```rust
+/// use winnow::prelude::*;
+///
+/// fn parse_data(input: &str) -> IResult<&str, u64> {
+/// // ...
+/// # winnow::ascii::dec_uint(input)
+/// }
+///
+/// fn main() {
+/// let result = parse_data.parse("100");
+/// assert_eq!(result, Ok(100));
+/// }
+/// ```
+pub mod prelude {
+ pub use crate::stream::StreamIsPartial as _;
+ #[allow(deprecated)]
+ pub use crate::FinishIResult as _;
+ pub use crate::IResult;
+ pub use crate::Parser;
+}
+
+#[allow(deprecated)]
+pub use error::FinishIResult;
+pub use error::IResult;
+pub use parser::*;
+pub use stream::BStr;
+pub use stream::Bytes;
+pub use stream::Located;
+pub use stream::Partial;
+pub use stream::Stateful;
+pub use stream::Str;
diff --git a/vendor/winnow-0.4.7/src/macros.rs b/vendor/winnow-0.4.7/src/macros.rs
new file mode 100644
index 000000000..8a38ef25c
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/macros.rs
@@ -0,0 +1,78 @@
+/// `match` for parsers
+///
+/// When parsers have unique prefixes to test for, this offers better performance over
+/// [`alt`][crate::combinator::alt] though it might be at the cost of duplicating parts of your grammar
+/// if you needed to [`peek`][crate::combinator::peek].
+///
+/// For tight control over the error in a catch-all case, use [`fail`][crate::combinator::fail].
+///
+/// # Example
+///
+/// ```rust
+/// use winnow::prelude::*;
+/// use winnow::combinator::dispatch;
+/// # use winnow::token::any;
+/// # use winnow::combinator::peek;
+/// # use winnow::combinator::preceded;
+/// # use winnow::combinator::success;
+/// # use winnow::combinator::fail;
+///
+/// fn escaped(input: &str) -> IResult<&str, char> {
+/// preceded('\\', escape_seq_char).parse_next(input)
+/// }
+///
+/// fn escape_seq_char(input: &str) -> IResult<&str, char> {
+/// dispatch! {any;
+/// 'b' => success('\u{8}'),
+/// 'f' => success('\u{c}'),
+/// 'n' => success('\n'),
+/// 'r' => success('\r'),
+/// 't' => success('\t'),
+/// '\\' => success('\\'),
+/// '"' => success('"'),
+/// _ => fail::<_, char, _>,
+/// }
+/// .parse_next(input)
+/// }
+///
+/// assert_eq!(escaped.parse_next("\\nHello"), Ok(("Hello", '\n')));
+/// ```
+#[macro_export]
+macro_rules! dispatch {
+ ($match_parser: expr; $( $pat:pat $(if $pred:expr)? => $expr: expr ),+ $(,)? ) => {
+ $crate::trace::trace("dispatch", move |i|
+ {
+ use $crate::Parser;
+ let (i, initial) = $match_parser.parse_next(i)?;
+ match initial {
+ $(
+ $pat $(if $pred)? => $expr.parse_next(i),
+ )*
+ }
+ })
+ }
+}
+
+macro_rules! succ (
+ (0, $submac:ident ! ($($rest:tt)*)) => ($submac!(1, $($rest)*));
+ (1, $submac:ident ! ($($rest:tt)*)) => ($submac!(2, $($rest)*));
+ (2, $submac:ident ! ($($rest:tt)*)) => ($submac!(3, $($rest)*));
+ (3, $submac:ident ! ($($rest:tt)*)) => ($submac!(4, $($rest)*));
+ (4, $submac:ident ! ($($rest:tt)*)) => ($submac!(5, $($rest)*));
+ (5, $submac:ident ! ($($rest:tt)*)) => ($submac!(6, $($rest)*));
+ (6, $submac:ident ! ($($rest:tt)*)) => ($submac!(7, $($rest)*));
+ (7, $submac:ident ! ($($rest:tt)*)) => ($submac!(8, $($rest)*));
+ (8, $submac:ident ! ($($rest:tt)*)) => ($submac!(9, $($rest)*));
+ (9, $submac:ident ! ($($rest:tt)*)) => ($submac!(10, $($rest)*));
+ (10, $submac:ident ! ($($rest:tt)*)) => ($submac!(11, $($rest)*));
+ (11, $submac:ident ! ($($rest:tt)*)) => ($submac!(12, $($rest)*));
+ (12, $submac:ident ! ($($rest:tt)*)) => ($submac!(13, $($rest)*));
+ (13, $submac:ident ! ($($rest:tt)*)) => ($submac!(14, $($rest)*));
+ (14, $submac:ident ! ($($rest:tt)*)) => ($submac!(15, $($rest)*));
+ (15, $submac:ident ! ($($rest:tt)*)) => ($submac!(16, $($rest)*));
+ (16, $submac:ident ! ($($rest:tt)*)) => ($submac!(17, $($rest)*));
+ (17, $submac:ident ! ($($rest:tt)*)) => ($submac!(18, $($rest)*));
+ (18, $submac:ident ! ($($rest:tt)*)) => ($submac!(19, $($rest)*));
+ (19, $submac:ident ! ($($rest:tt)*)) => ($submac!(20, $($rest)*));
+ (20, $submac:ident ! ($($rest:tt)*)) => ($submac!(21, $($rest)*));
+);
diff --git a/vendor/winnow-0.4.7/src/multi.rs b/vendor/winnow-0.4.7/src/multi.rs
new file mode 100644
index 000000000..3e92f70be
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/multi.rs
@@ -0,0 +1,124 @@
+//! Deprecated, see [`combinator`]
+#![deprecated(since = "0.4.2", note = "Replaced with `combinator`")]
+
+use crate::binary;
+use crate::combinator;
+use crate::error::ParseError;
+use crate::stream::Accumulate;
+use crate::stream::Stream;
+use crate::Parser;
+
+/// Deprecated, replaced by [`combinator::repeat`]
+#[deprecated(since = "0.4.2", note = "Replaced with `combinator::repeat`")]
+#[inline(always)]
+pub fn many0<I, O, C, E, F>(f: F) -> impl Parser<I, C, E>
+where
+ I: Stream,
+ C: Accumulate<O>,
+ F: Parser<I, O, E>,
+ E: ParseError<I>,
+{
+ combinator::repeat(0.., f)
+}
+
+/// Deprecated, replaced by [`combinator::repeat`]
+#[deprecated(since = "0.4.2", note = "Replaced with `combinator::repeat`")]
+#[inline(always)]
+pub fn many1<I, O, C, E, F>(f: F) -> impl Parser<I, C, E>
+where
+ I: Stream,
+ C: Accumulate<O>,
+ F: Parser<I, O, E>,
+ E: ParseError<I>,
+{
+ combinator::repeat(1.., f)
+}
+
+/// Deprecated, replaced by [`combinator::repeat_till0`]
+#[deprecated(since = "0.4.2", note = "Replaced with `combinator::repeat_till0`")]
+#[inline(always)]
+pub fn many_till0<I, O, C, P, E, F, G>(f: F, g: G) -> impl Parser<I, (C, P), E>
+where
+ I: Stream,
+ C: Accumulate<O>,
+ F: Parser<I, O, E>,
+ G: Parser<I, P, E>,
+ E: ParseError<I>,
+{
+ combinator::repeat_till0(f, g)
+}
+
+pub use combinator::separated0;
+pub use combinator::separated1;
+pub use combinator::separated_foldl1;
+#[cfg(feature = "alloc")]
+pub use combinator::separated_foldr1;
+
+/// Deprecated, replaced by [`combinator::repeat`]
+#[deprecated(since = "0.4.2", note = "Replaced with `combinator::repeat`")]
+#[inline(always)]
+pub fn many_m_n<I, O, C, E, F>(min: usize, max: usize, parse: F) -> impl Parser<I, C, E>
+where
+ I: Stream,
+ C: Accumulate<O>,
+ F: Parser<I, O, E>,
+ E: ParseError<I>,
+{
+ combinator::repeat(min..=max, parse)
+}
+
+#[allow(deprecated)]
+pub use combinator::count;
+pub use combinator::fill;
+
+/// Deprecated, replaced by [`combinator::fold_repeat`]
+#[deprecated(since = "0.4.2", note = "Replaced with `combinator::fold_repeat`")]
+#[inline(always)]
+pub fn fold_many0<I, O, E, F, G, H, R>(f: F, init: H, g: G) -> impl Parser<I, R, E>
+where
+ I: Stream,
+ F: Parser<I, O, E>,
+ G: FnMut(R, O) -> R,
+ H: FnMut() -> R,
+ E: ParseError<I>,
+{
+ combinator::fold_repeat(0.., f, init, g)
+}
+
+/// Deprecated, replaced by [`combinator::fold_repeat`]
+#[deprecated(since = "0.4.2", note = "Replaced with `combinator::fold_repeat`")]
+#[inline(always)]
+pub fn fold_many1<I, O, E, F, G, H, R>(f: F, init: H, g: G) -> impl Parser<I, R, E>
+where
+ I: Stream,
+ F: Parser<I, O, E>,
+ G: FnMut(R, O) -> R,
+ H: FnMut() -> R,
+ E: ParseError<I>,
+{
+ combinator::fold_repeat(1.., f, init, g)
+}
+
+/// Deprecated, replaced by [`combinator::fold_repeat`]
+#[deprecated(since = "0.4.2", note = "Replaced with `combinator::fold_repeat`")]
+#[inline(always)]
+pub fn fold_many_m_n<I, O, E, F, G, H, R>(
+ min: usize,
+ max: usize,
+ parse: F,
+ init: H,
+ fold: G,
+) -> impl Parser<I, R, E>
+where
+ I: Stream,
+ F: Parser<I, O, E>,
+ G: FnMut(R, O) -> R,
+ H: FnMut() -> R,
+ E: ParseError<I>,
+{
+ combinator::fold_repeat(min..=max, parse, init, fold)
+}
+
+pub use binary::length_count;
+pub use binary::length_data;
+pub use binary::length_value;
diff --git a/vendor/winnow-0.4.7/src/number.rs b/vendor/winnow-0.4.7/src/number.rs
new file mode 100644
index 000000000..2aa8da425
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/number.rs
@@ -0,0 +1,509 @@
+//! Deprecated, see [`binary`]
+#![deprecated(since = "0.4.2", note = "Replaced with `binary`")]
+#![allow(clippy::match_same_arms)]
+
+use crate::binary;
+use crate::error::ParseError;
+use crate::stream::{AsBytes, Stream, StreamIsPartial};
+use crate::IResult;
+use crate::Parser;
+
+pub use binary::Endianness;
+
+/// Deprecated, see [`binary::be_u8`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::be_u8`")]
+#[inline(always)]
+pub fn be_u8<I, E: ParseError<I>>(input: I) -> IResult<I, u8, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+{
+ binary::be_u8(input)
+}
+
+/// Deprecated, see [`binary::be_u16`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::be_u16`")]
+#[inline(always)]
+pub fn be_u16<I, E: ParseError<I>>(input: I) -> IResult<I, u16, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::be_u16(input)
+}
+
+/// Deprecated, see [`binary::be_u24`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::be_u24`")]
+#[inline(always)]
+pub fn be_u24<I, E: ParseError<I>>(input: I) -> IResult<I, u32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::be_u24(input)
+}
+
+/// Deprecated, see [`binary::be_u32`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::be_u32`")]
+#[inline(always)]
+pub fn be_u32<I, E: ParseError<I>>(input: I) -> IResult<I, u32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::be_u32(input)
+}
+
+/// Deprecated, see [`binary::be_u64`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::be_u64`")]
+#[inline(always)]
+pub fn be_u64<I, E: ParseError<I>>(input: I) -> IResult<I, u64, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::be_u64(input)
+}
+
+/// Deprecated, see [`binary::be_u128`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::be_u128`")]
+#[inline(always)]
+pub fn be_u128<I, E: ParseError<I>>(input: I) -> IResult<I, u128, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::be_u128(input)
+}
+
+/// Deprecated, see [`binary::be_i8`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::be_i8`")]
+#[inline(always)]
+pub fn be_i8<I, E: ParseError<I>>(input: I) -> IResult<I, i8, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+{
+ binary::be_i8(input)
+}
+
+/// Deprecated, see [`binary::be_i16`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::be_i16`")]
+#[inline(always)]
+pub fn be_i16<I, E: ParseError<I>>(input: I) -> IResult<I, i16, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::be_i16(input)
+}
+
+/// Deprecated, see [`binary::be_i24`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::be_i24`")]
+#[inline(always)]
+pub fn be_i24<I, E: ParseError<I>>(input: I) -> IResult<I, i32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::be_i24(input)
+}
+
+/// Deprecated, see [`binary::be_i32`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::be_i32`")]
+#[inline(always)]
+pub fn be_i32<I, E: ParseError<I>>(input: I) -> IResult<I, i32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::be_i32(input)
+}
+
+/// Deprecated, see [`binary::be_i64`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::be_i64`")]
+#[inline(always)]
+pub fn be_i64<I, E: ParseError<I>>(input: I) -> IResult<I, i64, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::be_i64(input)
+}
+
+/// Deprecated, see [`binary::be_i128`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::be_i128`")]
+#[inline(always)]
+pub fn be_i128<I, E: ParseError<I>>(input: I) -> IResult<I, i128, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::be_i128(input)
+}
+
+/// Deprecated, see [`binary::le_u8`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::le_u8`")]
+#[inline(always)]
+pub fn le_u8<I, E: ParseError<I>>(input: I) -> IResult<I, u8, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+{
+ binary::le_u8(input)
+}
+
+/// Deprecated, see [`binary::le_u16`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::le_u16`")]
+#[inline(always)]
+pub fn le_u16<I, E: ParseError<I>>(input: I) -> IResult<I, u16, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::le_u16(input)
+}
+
+/// Deprecated, see [`binary::le_u24`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::le_u24`")]
+#[inline(always)]
+pub fn le_u24<I, E: ParseError<I>>(input: I) -> IResult<I, u32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::le_u24(input)
+}
+
+/// Deprecated, see [`binary::le_u32`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::le_u32`")]
+#[inline(always)]
+pub fn le_u32<I, E: ParseError<I>>(input: I) -> IResult<I, u32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::le_u32(input)
+}
+
+/// Deprecated, see [`binary::le_u64`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::le_u64`")]
+#[inline(always)]
+pub fn le_u64<I, E: ParseError<I>>(input: I) -> IResult<I, u64, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::le_u64(input)
+}
+
+/// Deprecated, see [`binary::le_u128`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::le_u128`")]
+#[inline(always)]
+pub fn le_u128<I, E: ParseError<I>>(input: I) -> IResult<I, u128, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::le_u128(input)
+}
+
+/// Deprecated, see [`binary::le_i8`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::le_i8`")]
+#[inline(always)]
+pub fn le_i8<I, E: ParseError<I>>(input: I) -> IResult<I, i8, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+{
+ binary::le_i8(input)
+}
+
+/// Deprecated, see [`binary::le_i16`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::le_i16`")]
+#[inline(always)]
+pub fn le_i16<I, E: ParseError<I>>(input: I) -> IResult<I, i16, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::le_i16(input)
+}
+
+/// Deprecated, see [`binary::le_i24`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::le_i24`")]
+#[inline(always)]
+pub fn le_i24<I, E: ParseError<I>>(input: I) -> IResult<I, i32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::le_i24(input)
+}
+
+/// Deprecated, see [`binary::le_i32`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::le_i32`")]
+#[inline(always)]
+pub fn le_i32<I, E: ParseError<I>>(input: I) -> IResult<I, i32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::le_i32(input)
+}
+
+/// Deprecated, see [`binary::le_i64`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::le_i64`")]
+#[inline(always)]
+pub fn le_i64<I, E: ParseError<I>>(input: I) -> IResult<I, i64, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::le_i64(input)
+}
+
+/// Deprecated, see [`binary::le_i128`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::le_i128`")]
+#[inline(always)]
+pub fn le_i128<I, E: ParseError<I>>(input: I) -> IResult<I, i128, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::le_i128(input)
+}
+
+/// Deprecated, see [`binary::u8`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::u8`")]
+#[inline(always)]
+pub fn u8<I, E: ParseError<I>>(input: I) -> IResult<I, u8, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+{
+ binary::u8.parse_next(input)
+}
+
+/// Deprecated, see [`binary::u16`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::u16`")]
+#[inline(always)]
+pub fn u16<I, E: ParseError<I>>(endian: crate::number::Endianness) -> impl Parser<I, u16, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::u16(endian)
+}
+
+/// Deprecated, see [`binary::u24`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::u24`")]
+#[inline(always)]
+pub fn u24<I, E: ParseError<I>>(endian: crate::number::Endianness) -> impl Parser<I, u32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::u24(endian)
+}
+
+/// Deprecated, see [`binary::u32`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::u32`")]
+#[inline(always)]
+pub fn u32<I, E: ParseError<I>>(endian: crate::number::Endianness) -> impl Parser<I, u32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::u32(endian)
+}
+
+/// Deprecated, see [`binary::u64`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::u64`")]
+#[inline(always)]
+pub fn u64<I, E: ParseError<I>>(endian: crate::number::Endianness) -> impl Parser<I, u64, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::u64(endian)
+}
+
+/// Deprecated, see [`binary::u128`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::u128`")]
+#[inline(always)]
+pub fn u128<I, E: ParseError<I>>(endian: crate::number::Endianness) -> impl Parser<I, u128, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::u128(endian)
+}
+
+/// Deprecated, see [`binary::i8`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::i8`")]
+#[inline(always)]
+pub fn i8<I, E: ParseError<I>>(input: I) -> IResult<I, i8, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+{
+ binary::i8.parse_next(input)
+}
+
+/// Deprecated, see [`binary::i16`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::i16`")]
+#[inline(always)]
+pub fn i16<I, E: ParseError<I>>(endian: crate::number::Endianness) -> impl Parser<I, i16, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::i16(endian)
+}
+
+/// Deprecated, see [`binary::i24`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::i24`")]
+#[inline(always)]
+pub fn i24<I, E: ParseError<I>>(endian: crate::number::Endianness) -> impl Parser<I, i32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::i24(endian)
+}
+
+/// Deprecated, see [`binary::i32`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::i32`")]
+#[inline(always)]
+pub fn i32<I, E: ParseError<I>>(endian: crate::number::Endianness) -> impl Parser<I, i32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::i32(endian)
+}
+
+/// Deprecated, see [`binary::i64`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::i64`")]
+#[inline(always)]
+pub fn i64<I, E: ParseError<I>>(endian: crate::number::Endianness) -> impl Parser<I, i64, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::i64(endian)
+}
+
+/// Deprecated, see [`binary::i128`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::i128`")]
+#[inline(always)]
+pub fn i128<I, E: ParseError<I>>(endian: crate::number::Endianness) -> impl Parser<I, i128, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::i128(endian)
+}
+
+/// Deprecated, see [`binary::be_f32`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::be_f32`")]
+#[inline(always)]
+pub fn be_f32<I, E: ParseError<I>>(input: I) -> IResult<I, f32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::be_f32(input)
+}
+
+/// Deprecated, see [`binary::be_f64`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::be_f64`")]
+#[inline(always)]
+pub fn be_f64<I, E: ParseError<I>>(input: I) -> IResult<I, f64, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::be_f64(input)
+}
+
+/// Deprecated, see [`binary::le_f32`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::le_f32`")]
+#[inline(always)]
+pub fn le_f32<I, E: ParseError<I>>(input: I) -> IResult<I, f32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::le_f32(input)
+}
+
+/// Deprecated, see [`binary::le_f64`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::le_f64`")]
+#[inline(always)]
+pub fn le_f64<I, E: ParseError<I>>(input: I) -> IResult<I, f64, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::le_f64(input)
+}
+
+/// Deprecated, see [`binary::f32`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::f32`")]
+#[inline(always)]
+pub fn f32<I, E: ParseError<I>>(endian: crate::number::Endianness) -> impl Parser<I, f32, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::f32(endian)
+}
+
+/// Deprecated, see [`binary::f64`]
+#[deprecated(since = "0.4.2", note = "Replaced with `binary::f64`")]
+#[inline(always)]
+pub fn f64<I, E: ParseError<I>>(endian: crate::number::Endianness) -> impl Parser<I, f64, E>
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ <I as Stream>::Slice: AsBytes,
+{
+ binary::f64(endian)
+}
diff --git a/vendor/winnow-0.4.7/src/parser.rs b/vendor/winnow-0.4.7/src/parser.rs
new file mode 100644
index 000000000..15d892864
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/parser.rs
@@ -0,0 +1,931 @@
+//! Basic types to build the parsers
+
+use crate::combinator::*;
+use crate::error::{ContextError, FromExternalError, IResult, ParseError};
+use crate::stream::{AsChar, Compare, Location, Offset, ParseSlice, Stream, StreamIsPartial};
+
+/// Core trait for parsing
+///
+/// The simplest way to implement a `Parser` is with a function
+/// ```rust
+/// use winnow::prelude::*;
+///
+/// fn success(input: &str) -> IResult<&str, ()> {
+/// let output = ();
+/// Ok((input, output))
+/// }
+///
+/// let (input, output) = success.parse_next("Hello").unwrap();
+/// assert_eq!(input, "Hello"); // We didn't consume any input
+/// ```
+///
+/// which can be made stateful by returning a function
+/// ```rust
+/// use winnow::prelude::*;
+///
+/// fn success<O: Clone>(output: O) -> impl FnMut(&str) -> IResult<&str, O> {
+/// move |input: &str| {
+/// let output = output.clone();
+/// Ok((input, output))
+/// }
+/// }
+///
+/// let (input, output) = success("World").parse_next("Hello").unwrap();
+/// assert_eq!(input, "Hello"); // We didn't consume any input
+/// assert_eq!(output, "World");
+/// ```
+///
+/// Additionally, some basic types implement `Parser` as well, including
+/// - `u8` and `char`, see [`winnow::token::one_of`][crate::token::one_of]
+/// - `&[u8]` and `&str`, see [`winnow::token::tag`][crate::token::tag]
+pub trait Parser<I, O, E> {
+ /// Parse all of `input`, generating `O` from it
+ #[inline]
+ fn parse(&mut self, input: I) -> Result<O, E>
+ where
+ I: Stream,
+ // Force users to deal with `Incomplete` when `StreamIsPartial<true>`
+ I: StreamIsPartial,
+ I: Clone,
+ E: ParseError<I>,
+ {
+ #![allow(deprecated)]
+ use crate::error::FinishIResult;
+ self.parse_next(input).finish()
+ }
+
+ /// Take tokens from the [`Stream`], turning it into the output
+ ///
+ /// This includes advancing the [`Stream`] to the next location.
+ fn parse_next(&mut self, input: I) -> IResult<I, O, E>;
+
+ /// Treat `&mut Self` as a parser
+ ///
+ /// This helps when needing to move a `Parser` when all you have is a `&mut Parser`.
+ ///
+ /// # Example
+ ///
+ /// Because parsers are `FnMut`, they can be called multiple times. This prevents moving `f`
+ /// into [`length_data`][crate::binary::length_data] and `g` into
+ /// [`Parser::complete_err`]:
+ /// ```rust,compile_fail
+ /// # use winnow::prelude::*;
+ /// # use winnow::IResult;
+ /// # use winnow::Parser;
+ /// # use winnow::error::ParseError;
+ /// # use winnow::binary::length_data;
+ /// pub fn length_value<'i, O, E: ParseError<&'i [u8]>>(
+ /// mut f: impl Parser<&'i [u8], usize, E>,
+ /// mut g: impl Parser<&'i [u8], O, E>
+ /// ) -> impl FnMut(&'i [u8]) -> IResult<&'i [u8], O, E> {
+ /// move |i: &'i [u8]| {
+ /// let (i, data) = length_data(f).parse_next(i)?;
+ /// let (_, o) = g.complete().parse_next(data)?;
+ /// Ok((i, o))
+ /// }
+ /// }
+ /// ```
+ ///
+ /// By adding `by_ref`, we can make this work:
+ /// ```rust
+ /// # use winnow::prelude::*;
+ /// # use winnow::IResult;
+ /// # use winnow::Parser;
+ /// # use winnow::error::ParseError;
+ /// # use winnow::binary::length_data;
+ /// pub fn length_value<'i, O, E: ParseError<&'i [u8]>>(
+ /// mut f: impl Parser<&'i [u8], usize, E>,
+ /// mut g: impl Parser<&'i [u8], O, E>
+ /// ) -> impl FnMut(&'i [u8]) -> IResult<&'i [u8], O, E> {
+ /// move |i: &'i [u8]| {
+ /// let (i, data) = length_data(f.by_ref()).parse_next(i)?;
+ /// let (_, o) = g.by_ref().complete_err().parse_next(data)?;
+ /// Ok((i, o))
+ /// }
+ /// }
+ /// ```
+ fn by_ref(&mut self) -> ByRef<'_, Self>
+ where
+ Self: core::marker::Sized,
+ {
+ ByRef::new(self)
+ }
+
+ /// Produce the provided value
+ ///
+ /// # Example
+ ///
+ /// ```rust
+ /// # use winnow::{error::ErrMode,error::ErrorKind, error::Error, IResult, Parser};
+ /// use winnow::ascii::alpha1;
+ /// # fn main() {
+ ///
+ /// let mut parser = alpha1.value(1234);
+ ///
+ /// assert_eq!(parser.parse_next("abcd"), Ok(("", 1234)));
+ /// assert_eq!(parser.parse_next("123abcd;"), Err(ErrMode::Backtrack(Error::new("123abcd;", ErrorKind::Slice))));
+ /// # }
+ /// ```
+ #[doc(alias = "to")]
+ fn value<O2>(self, val: O2) -> Value<Self, I, O, O2, E>
+ where
+ Self: core::marker::Sized,
+ O2: Clone,
+ {
+ Value::new(self, val)
+ }
+
+ /// Discards the output of the `Parser`
+ ///
+ /// # Example
+ ///
+ /// ```rust
+ /// # use winnow::{error::ErrMode,error::ErrorKind, error::Error, IResult, Parser};
+ /// use winnow::ascii::alpha1;
+ /// # fn main() {
+ ///
+ /// let mut parser = alpha1.void();
+ ///
+ /// assert_eq!(parser.parse_next("abcd"), Ok(("", ())));
+ /// assert_eq!(parser.parse_next("123abcd;"), Err(ErrMode::Backtrack(Error::new("123abcd;", ErrorKind::Slice))));
+ /// # }
+ /// ```
+ fn void(self) -> Void<Self, I, O, E>
+ where
+ Self: core::marker::Sized,
+ {
+ Void::new(self)
+ }
+
+ /// Convert the parser's output to another type using [`std::convert::From`]
+ ///
+ /// # Example
+ ///
+ /// ```rust
+ /// # use winnow::IResult;
+ /// # use winnow::Parser;
+ /// use winnow::ascii::alpha1;
+ /// # fn main() {
+ ///
+ /// fn parser1(i: &str) -> IResult<&str, &str> {
+ /// alpha1(i)
+ /// }
+ ///
+ /// let mut parser2 = parser1.output_into();
+ ///
+ /// // the parser converts the &str output of the child parser into a Vec<u8>
+ /// let bytes: IResult<&str, Vec<u8>> = parser2.parse_next("abcd");
+ /// assert_eq!(bytes, Ok(("", vec![97, 98, 99, 100])));
+ /// # }
+ /// ```
+ fn output_into<O2>(self) -> OutputInto<Self, I, O, O2, E>
+ where
+ Self: core::marker::Sized,
+ O: Into<O2>,
+ {
+ OutputInto::new(self)
+ }
+
+ /// Produce the consumed input as produced value.
+ ///
+ /// # Example
+ ///
+ /// ```rust
+ /// # use winnow::{error::ErrMode,error::ErrorKind, error::Error, IResult, Parser};
+ /// use winnow::ascii::{alpha1};
+ /// use winnow::combinator::separated_pair;
+ /// # fn main() {
+ ///
+ /// let mut parser = separated_pair(alpha1, ',', alpha1).recognize();
+ ///
+ /// assert_eq!(parser.parse_next("abcd,efgh"), Ok(("", "abcd,efgh")));
+ /// assert_eq!(parser.parse_next("abcd;"),Err(ErrMode::Backtrack(Error::new(";", ErrorKind::Verify))));
+ /// # }
+ /// ```
+ #[doc(alias = "concat")]
+ fn recognize(self) -> Recognize<Self, I, O, E>
+ where
+ Self: core::marker::Sized,
+ I: Stream + Offset,
+ {
+ Recognize::new(self)
+ }
+
+ /// Produce the consumed input with the output
+ ///
+ /// Functions similarly to [recognize][Parser::recognize] except it
+ /// returns the parser output as well.
+ ///
+ /// This can be useful especially in cases where the output is not the same type
+ /// as the input, or the input is a user defined type.
+ ///
+ /// Returned tuple is of the format `(produced output, consumed input)`.
+ ///
+ /// # Example
+ ///
+ /// ```rust
+ /// # use winnow::prelude::*;
+ /// # use winnow::{error::ErrMode,error::ErrorKind, error::Error, IResult};
+ /// use winnow::ascii::{alpha1};
+ /// use winnow::token::tag;
+ /// use winnow::combinator::separated_pair;
+ ///
+ /// fn inner_parser(input: &str) -> IResult<&str, bool> {
+ /// "1234".value(true).parse_next(input)
+ /// }
+ ///
+ /// # fn main() {
+ ///
+ /// let mut consumed_parser = separated_pair(alpha1, ',', alpha1).value(true).with_recognized();
+ ///
+ /// assert_eq!(consumed_parser.parse_next("abcd,efgh1"), Ok(("1", (true, "abcd,efgh"))));
+ /// assert_eq!(consumed_parser.parse_next("abcd;"),Err(ErrMode::Backtrack(Error::new(";", ErrorKind::Verify))));
+ ///
+ /// // the second output (representing the consumed input)
+ /// // should be the same as that of the `recognize` parser.
+ /// let mut recognize_parser = inner_parser.recognize();
+ /// let mut consumed_parser = inner_parser.with_recognized().map(|(output, consumed)| consumed);
+ ///
+ /// assert_eq!(recognize_parser.parse_next("1234"), consumed_parser.parse_next("1234"));
+ /// assert_eq!(recognize_parser.parse_next("abcd"), consumed_parser.parse_next("abcd"));
+ /// # }
+ /// ```
+ #[doc(alias = "consumed")]
+ fn with_recognized(self) -> WithRecognized<Self, I, O, E>
+ where
+ Self: core::marker::Sized,
+ I: Stream + Offset,
+ {
+ WithRecognized::new(self)
+ }
+
+ /// Produce the location of the consumed input as produced value.
+ ///
+ /// # Example
+ ///
+ /// ```rust
+ /// # use winnow::prelude::*;
+ /// # use winnow::{error::ErrMode,error::ErrorKind, error::Error, stream::Stream};
+ /// use winnow::stream::Located;
+ /// use winnow::ascii::alpha1;
+ /// use winnow::combinator::separated_pair;
+ ///
+ /// let mut parser = separated_pair(alpha1.span(), ',', alpha1.span());
+ ///
+ /// assert_eq!(parser.parse(Located::new("abcd,efgh")), Ok((0..4, 5..9)));
+ /// assert_eq!(parser.parse_next(Located::new("abcd;")),Err(ErrMode::Backtrack(Error::new(Located::new("abcd;").next_slice(4).0, ErrorKind::Verify))));
+ /// ```
+ fn span(self) -> Span<Self, I, O, E>
+ where
+ Self: core::marker::Sized,
+ I: Stream + Location,
+ {
+ Span::new(self)
+ }
+
+ /// Produce the location of consumed input with the output
+ ///
+ /// Functions similarly to [`Parser::span`] except it
+ /// returns the parser output as well.
+ ///
+ /// This can be useful especially in cases where the output is not the same type
+ /// as the input, or the input is a user defined type.
+ ///
+ /// Returned tuple is of the format `(produced output, consumed input)`.
+ ///
+ /// # Example
+ ///
+ /// ```rust
+ /// # use winnow::prelude::*;
+ /// # use winnow::{error::ErrMode,error::ErrorKind, error::Error, IResult, stream::Stream};
+ /// use winnow::stream::Located;
+ /// use winnow::ascii::alpha1;
+ /// use winnow::token::tag;
+ /// use winnow::combinator::separated_pair;
+ ///
+ /// fn inner_parser(input: Located<&str>) -> IResult<Located<&str>, bool> {
+ /// "1234".value(true).parse_next(input)
+ /// }
+ ///
+ /// # fn main() {
+ ///
+ /// let mut consumed_parser = separated_pair(alpha1.value(1).with_span(), ',', alpha1.value(2).with_span());
+ ///
+ /// assert_eq!(consumed_parser.parse(Located::new("abcd,efgh")), Ok(((1, 0..4), (2, 5..9))));
+ /// assert_eq!(consumed_parser.parse_next(Located::new("abcd;")),Err(ErrMode::Backtrack(Error::new(Located::new("abcd;").next_slice(4).0, ErrorKind::Verify))));
+ ///
+ /// // the second output (representing the consumed input)
+ /// // should be the same as that of the `span` parser.
+ /// let mut recognize_parser = inner_parser.span();
+ /// let mut consumed_parser = inner_parser.with_span().map(|(output, consumed)| consumed);
+ ///
+ /// assert_eq!(recognize_parser.parse_next(Located::new("1234")), consumed_parser.parse_next(Located::new("1234")));
+ /// assert_eq!(recognize_parser.parse_next(Located::new("abcd")), consumed_parser.parse_next(Located::new("abcd")));
+ /// # }
+ /// ```
+ fn with_span(self) -> WithSpan<Self, I, O, E>
+ where
+ Self: core::marker::Sized,
+ I: Stream + Location,
+ {
+ WithSpan::new(self)
+ }
+
+ /// Maps a function over the output of a parser
+ ///
+ /// # Example
+ ///
+ /// ```rust
+ /// use winnow::{error::ErrMode,error::ErrorKind, error::Error, IResult,Parser};
+ /// use winnow::ascii::digit1;
+ /// # fn main() {
+ ///
+ /// let mut parser = digit1.map(|s: &str| s.len());
+ ///
+ /// // the parser will count how many characters were returned by digit1
+ /// assert_eq!(parser.parse_next("123456"), Ok(("", 6)));
+ ///
+ /// // this will fail if digit1 fails
+ /// assert_eq!(parser.parse_next("abc"), Err(ErrMode::Backtrack(Error::new("abc", ErrorKind::Slice))));
+ /// # }
+ /// ```
+ fn map<G, O2>(self, map: G) -> Map<Self, G, I, O, O2, E>
+ where
+ G: Fn(O) -> O2,
+ Self: core::marker::Sized,
+ {
+ Map::new(self, map)
+ }
+
+ /// Applies a function returning a `Result` over the output of a parser.
+ ///
+ /// # Example
+ ///
+ /// ```rust
+ /// # use winnow::{error::ErrMode,error::ErrorKind, error::Error, IResult, Parser};
+ /// use winnow::ascii::digit1;
+ /// # fn main() {
+ ///
+ /// let mut parse = digit1.try_map(|s: &str| s.parse::<u8>());
+ ///
+ /// // the parser will convert the result of digit1 to a number
+ /// assert_eq!(parse.parse_next("123"), Ok(("", 123)));
+ ///
+ /// // this will fail if digit1 fails
+ /// assert_eq!(parse.parse_next("abc"), Err(ErrMode::Backtrack(Error::new("abc", ErrorKind::Slice))));
+ ///
+ /// // this will fail if the mapped function fails (a `u8` is too small to hold `123456`)
+ /// assert_eq!(parse.parse_next("123456"), Err(ErrMode::Backtrack(Error::new("123456", ErrorKind::Verify))));
+ /// # }
+ /// ```
+ fn try_map<G, O2, E2>(self, map: G) -> TryMap<Self, G, I, O, O2, E, E2>
+ where
+ Self: core::marker::Sized,
+ G: FnMut(O) -> Result<O2, E2>,
+ I: Clone,
+ E: FromExternalError<I, E2>,
+ {
+ TryMap::new(self, map)
+ }
+
+ /// Deprecated, see [`Parser::try_map`]
+ #[deprecated(since = "0.4.2", note = "Replaced with `Parser::try_map`")]
+ fn map_res<G, O2, E2>(self, map: G) -> MapRes<Self, G, I, O, O2, E, E2>
+ where
+ Self: core::marker::Sized,
+ G: FnMut(O) -> Result<O2, E2>,
+ I: Clone,
+ E: FromExternalError<I, E2>,
+ {
+ self.try_map(map)
+ }
+
+ /// Apply both [`Parser::verify`] and [`Parser::map`].
+ ///
+ /// # Example
+ ///
+ /// ```rust
+ /// # use winnow::{error::ErrMode,error::ErrorKind, error::Error, IResult, Parser};
+ /// use winnow::ascii::digit1;
+ /// # fn main() {
+ ///
+ /// let mut parse = digit1.verify_map(|s: &str| s.parse::<u8>().ok());
+ ///
+ /// // the parser will convert the result of digit1 to a number
+ /// assert_eq!(parse.parse_next("123"), Ok(("", 123)));
+ ///
+ /// // this will fail if digit1 fails
+ /// assert_eq!(parse.parse_next("abc"), Err(ErrMode::Backtrack(Error::new("abc", ErrorKind::Slice))));
+ ///
+ /// // this will fail if the mapped function fails (a `u8` is too small to hold `123456`)
+ /// assert_eq!(parse.parse_next("123456"), Err(ErrMode::Backtrack(Error::new("123456", ErrorKind::Verify))));
+ /// # }
+ /// ```
+ #[doc(alias = "satisfy_map")]
+ #[doc(alias = "filter_map")]
+ #[doc(alias = "map_opt")]
+ fn verify_map<G, O2>(self, map: G) -> VerifyMap<Self, G, I, O, O2, E>
+ where
+ Self: core::marker::Sized,
+ G: FnMut(O) -> Option<O2>,
+ I: Clone,
+ E: ParseError<I>,
+ {
+ VerifyMap::new(self, map)
+ }
+
+ /// Creates a parser from the output of this one
+ ///
+ /// # Example
+ ///
+ /// ```rust
+ /// # use winnow::{error::ErrMode,error::ErrorKind, error::Error, IResult, Parser};
+ /// use winnow::token::take;
+ /// use winnow::binary::u8;
+ ///
+ /// fn length_data(input: &[u8]) -> IResult<&[u8], &[u8]> {
+ /// u8.flat_map(take).parse_next(input)
+ /// }
+ ///
+ /// assert_eq!(length_data.parse_next(&[2, 0, 1, 2][..]), Ok((&[2][..], &[0, 1][..])));
+ /// assert_eq!(length_data.parse_next(&[4, 0, 1, 2][..]), Err(ErrMode::Backtrack(Error::new(&[0, 1, 2][..], ErrorKind::Slice))));
+ /// ```
+ ///
+ /// which is the same as
+ /// ```rust
+ /// # use winnow::{error::ErrMode,error::ErrorKind, error::Error, IResult, Parser};
+ /// use winnow::token::take;
+ /// use winnow::binary::u8;
+ ///
+ /// fn length_data(input: &[u8]) -> IResult<&[u8], &[u8]> {
+ /// let (input, length) = u8.parse_next(input)?;
+ /// let (input, data) = take(length).parse_next(input)?;
+ /// Ok((input, data))
+ /// }
+ ///
+ /// assert_eq!(length_data.parse_next(&[2, 0, 1, 2][..]), Ok((&[2][..], &[0, 1][..])));
+ /// assert_eq!(length_data.parse_next(&[4, 0, 1, 2][..]), Err(ErrMode::Backtrack(Error::new(&[0, 1, 2][..], ErrorKind::Slice))));
+ /// ```
+ fn flat_map<G, H, O2>(self, map: G) -> FlatMap<Self, G, H, I, O, O2, E>
+ where
+ Self: core::marker::Sized,
+ G: FnMut(O) -> H,
+ H: Parser<I, O2, E>,
+ {
+ FlatMap::new(self, map)
+ }
+
+ /// Applies a second parser over the output of the first one
+ ///
+ /// # Example
+ ///
+ /// ```rust
+ /// # use winnow::{error::ErrMode,error::ErrorKind, error::Error, IResult, Parser};
+ /// use winnow::ascii::digit1;
+ /// use winnow::token::take;
+ /// # fn main() {
+ ///
+ /// let mut digits = take(5u8).and_then(digit1);
+ ///
+ /// assert_eq!(digits.parse_next("12345"), Ok(("", "12345")));
+ /// assert_eq!(digits.parse_next("123ab"), Ok(("", "123")));
+ /// assert_eq!(digits.parse_next("123"), Err(ErrMode::Backtrack(Error::new("123", ErrorKind::Slice))));
+ /// # }
+ /// ```
+ fn and_then<G, O2>(self, inner: G) -> AndThen<Self, G, I, O, O2, E>
+ where
+ Self: core::marker::Sized,
+ G: Parser<O, O2, E>,
+ O: StreamIsPartial,
+ {
+ AndThen::new(self, inner)
+ }
+
+ /// Apply [`std::str::FromStr`] to the output of the parser
+ ///
+ /// # Example
+ ///
+ /// ```rust
+ /// # use winnow::prelude::*;
+ /// use winnow::{error::ErrMode,error::ErrorKind, error::Error, IResult,Parser};
+ /// use winnow::ascii::digit1;
+ ///
+ /// fn parser(input: &str) -> IResult<&str, u64> {
+ /// digit1.parse_to().parse_next(input)
+ /// }
+ ///
+ /// // the parser will count how many characters were returned by digit1
+ /// assert_eq!(parser.parse_next("123456"), Ok(("", 123456)));
+ ///
+ /// // this will fail if digit1 fails
+ /// assert_eq!(parser.parse_next("abc"), Err(ErrMode::Backtrack(Error::new("abc", ErrorKind::Slice))));
+ /// ```
+ #[doc(alias = "from_str")]
+ fn parse_to<O2>(self) -> ParseTo<Self, I, O, O2, E>
+ where
+ Self: core::marker::Sized,
+ I: Stream,
+ O: ParseSlice<O2>,
+ E: ParseError<I>,
+ {
+ ParseTo::new(self)
+ }
+
+ /// Returns the output of the child parser if it satisfies a verification function.
+ ///
+ /// The verification function takes as argument a reference to the output of the
+ /// parser.
+ ///
+ /// # Example
+ ///
+ /// ```rust
+ /// # use winnow::{error::ErrMode,error::ErrorKind, error::Error, IResult, Parser};
+ /// # use winnow::ascii::alpha1;
+ /// # fn main() {
+ ///
+ /// let mut parser = alpha1.verify(|s: &str| s.len() == 4);
+ ///
+ /// assert_eq!(parser.parse_next("abcd"), Ok(("", "abcd")));
+ /// assert_eq!(parser.parse_next("abcde"), Err(ErrMode::Backtrack(Error::new("abcde", ErrorKind::Verify))));
+ /// assert_eq!(parser.parse_next("123abcd;"),Err(ErrMode::Backtrack(Error::new("123abcd;", ErrorKind::Slice))));
+ /// # }
+ /// ```
+ #[doc(alias = "satisfy")]
+ #[doc(alias = "filter")]
+ fn verify<G, O2>(self, filter: G) -> Verify<Self, G, I, O, O2, E>
+ where
+ Self: core::marker::Sized,
+ G: Fn(&O2) -> bool,
+ I: Clone,
+ O: crate::lib::std::borrow::Borrow<O2>,
+ O2: ?Sized,
+ E: ParseError<I>,
+ {
+ Verify::new(self, filter)
+ }
+
+ /// If parsing fails, add context to the error
+ ///
+ /// This is used mainly to add user friendly information
+ /// to errors when backtracking through a parse tree.
+ #[doc(alias = "labelled")]
+ fn context<C>(self, context: C) -> Context<Self, I, O, E, C>
+ where
+ Self: core::marker::Sized,
+ I: Stream,
+ E: ContextError<I, C>,
+ C: Clone + crate::lib::std::fmt::Debug,
+ {
+ Context::new(self, context)
+ }
+
+ /// Transforms [`Incomplete`][crate::error::ErrMode::Incomplete] into [`Backtrack`][crate::error::ErrMode::Backtrack]
+ ///
+ /// # Example
+ ///
+ /// ```rust
+ /// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, IResult, stream::Partial, Parser};
+ /// # use winnow::token::take;
+ /// # fn main() {
+ ///
+ /// let mut parser = take(5u8).complete_err();
+ ///
+ /// assert_eq!(parser.parse_next(Partial::new("abcdefg")), Ok((Partial::new("fg"), "abcde")));
+ /// assert_eq!(parser.parse_next(Partial::new("abcd")), Err(ErrMode::Backtrack(Error::new(Partial::new("abcd"), ErrorKind::Complete))));
+ /// # }
+ /// ```
+ fn complete_err(self) -> CompleteErr<Self>
+ where
+ Self: core::marker::Sized,
+ {
+ CompleteErr::new(self)
+ }
+
+ /// Convert the parser's error to another type using [`std::convert::From`]
+ fn err_into<E2>(self) -> ErrInto<Self, I, O, E, E2>
+ where
+ Self: core::marker::Sized,
+ E: Into<E2>,
+ {
+ ErrInto::new(self)
+ }
+}
+
+impl<'a, I, O, E, F> Parser<I, O, E> for F
+where
+ F: FnMut(I) -> IResult<I, O, E> + 'a,
+{
+ #[inline(always)]
+ fn parse_next(&mut self, i: I) -> IResult<I, O, E> {
+ self(i)
+ }
+}
+
+/// This is a shortcut for [`one_of`][crate::token::one_of].
+///
+/// # Example
+///
+/// ```
+/// # use winnow::prelude::*;
+/// # use winnow::{error::ErrMode, error::{ErrorKind, Error}};
+/// fn parser(i: &[u8]) -> IResult<&[u8], u8> {
+/// b'a'.parse_next(i)
+/// }
+/// assert_eq!(parser(&b"abc"[..]), Ok((&b"bc"[..], b'a')));
+/// assert_eq!(parser(&b" abc"[..]), Err(ErrMode::Backtrack(Error::new(&b" abc"[..], ErrorKind::Verify))));
+/// assert_eq!(parser(&b"bc"[..]), Err(ErrMode::Backtrack(Error::new(&b"bc"[..], ErrorKind::Verify))));
+/// assert_eq!(parser(&b""[..]), Err(ErrMode::Backtrack(Error::new(&b""[..], ErrorKind::Token))));
+/// ```
+impl<I, E> Parser<I, u8, E> for u8
+where
+ I: StreamIsPartial,
+ I: Stream<Token = u8>,
+ E: ParseError<I>,
+{
+ #[inline(always)]
+ fn parse_next(&mut self, i: I) -> IResult<I, u8, E> {
+ crate::token::one_of(*self).parse_next(i)
+ }
+}
+
+/// This is a shortcut for [`one_of`][crate::token::one_of].
+///
+/// # Example
+///
+/// ```
+/// # use winnow::prelude::*;
+/// # use winnow::{error::ErrMode, error::{ErrorKind, Error}};
+/// fn parser(i: &str) -> IResult<&str, char> {
+/// 'a'.parse_next(i)
+/// }
+/// assert_eq!(parser("abc"), Ok(("bc", 'a')));
+/// assert_eq!(parser(" abc"), Err(ErrMode::Backtrack(Error::new(" abc", ErrorKind::Verify))));
+/// assert_eq!(parser("bc"), Err(ErrMode::Backtrack(Error::new("bc", ErrorKind::Verify))));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Token))));
+/// ```
+impl<I, E> Parser<I, <I as Stream>::Token, E> for char
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: AsChar + Copy,
+ E: ParseError<I>,
+{
+ #[inline(always)]
+ fn parse_next(&mut self, i: I) -> IResult<I, <I as Stream>::Token, E> {
+ crate::token::one_of(*self).parse_next(i)
+ }
+}
+
+/// This is a shortcut for [`tag`][crate::token::tag].
+///
+/// # Example
+/// ```rust
+/// # use winnow::prelude::*;
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::combinator::alt;
+/// # use winnow::token::take;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], &[u8]> {
+/// alt((&"Hello"[..], take(5usize))).parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"Hello, World!"[..]), Ok((&b", World!"[..], &b"Hello"[..])));
+/// assert_eq!(parser(&b"Something"[..]), Ok((&b"hing"[..], &b"Somet"[..])));
+/// assert_eq!(parser(&b"Some"[..]), Err(ErrMode::Backtrack(Error::new(&b"Some"[..], ErrorKind::Slice))));
+/// assert_eq!(parser(&b""[..]), Err(ErrMode::Backtrack(Error::new(&b""[..], ErrorKind::Slice))));
+/// ```
+impl<'s, I, E: ParseError<I>> Parser<I, <I as Stream>::Slice, E> for &'s [u8]
+where
+ I: Compare<&'s [u8]> + StreamIsPartial,
+ I: Stream,
+{
+ #[inline(always)]
+ fn parse_next(&mut self, i: I) -> IResult<I, <I as Stream>::Slice, E> {
+ crate::token::tag(*self).parse_next(i)
+ }
+}
+
+/// This is a shortcut for [`tag`][crate::token::tag].
+///
+/// # Example
+/// ```rust
+/// # use winnow::prelude::*;
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::combinator::alt;
+/// # use winnow::token::take;
+///
+/// fn parser(s: &[u8]) -> IResult<&[u8], &[u8]> {
+/// alt((b"Hello", take(5usize))).parse_next(s)
+/// }
+///
+/// assert_eq!(parser(&b"Hello, World!"[..]), Ok((&b", World!"[..], &b"Hello"[..])));
+/// assert_eq!(parser(&b"Something"[..]), Ok((&b"hing"[..], &b"Somet"[..])));
+/// assert_eq!(parser(&b"Some"[..]), Err(ErrMode::Backtrack(Error::new(&b"Some"[..], ErrorKind::Slice))));
+/// assert_eq!(parser(&b""[..]), Err(ErrMode::Backtrack(Error::new(&b""[..], ErrorKind::Slice))));
+/// ```
+impl<'s, I, E: ParseError<I>, const N: usize> Parser<I, <I as Stream>::Slice, E> for &'s [u8; N]
+where
+ I: Compare<&'s [u8; N]> + StreamIsPartial,
+ I: Stream,
+{
+ #[inline(always)]
+ fn parse_next(&mut self, i: I) -> IResult<I, <I as Stream>::Slice, E> {
+ crate::token::tag(*self).parse_next(i)
+ }
+}
+
+/// This is a shortcut for [`tag`][crate::token::tag].
+///
+/// # Example
+/// ```rust
+/// # use winnow::prelude::*;
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}};
+/// # use winnow::combinator::alt;
+/// # use winnow::token::take;
+///
+/// fn parser(s: &str) -> IResult<&str, &str> {
+/// alt(("Hello", take(5usize))).parse_next(s)
+/// }
+///
+/// assert_eq!(parser("Hello, World!"), Ok((", World!", "Hello")));
+/// assert_eq!(parser("Something"), Ok(("hing", "Somet")));
+/// assert_eq!(parser("Some"), Err(ErrMode::Backtrack(Error::new("Some", ErrorKind::Slice))));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Slice))));
+/// ```
+impl<'s, I, E: ParseError<I>> Parser<I, <I as Stream>::Slice, E> for &'s str
+where
+ I: Compare<&'s str> + StreamIsPartial,
+ I: Stream,
+{
+ #[inline(always)]
+ fn parse_next(&mut self, i: I) -> IResult<I, <I as Stream>::Slice, E> {
+ crate::token::tag(*self).parse_next(i)
+ }
+}
+
+impl<I, E: ParseError<I>> Parser<I, (), E> for () {
+ #[inline(always)]
+ fn parse_next(&mut self, i: I) -> IResult<I, (), E> {
+ Ok((i, ()))
+ }
+}
+
+macro_rules! impl_parser_for_tuple {
+ ($($parser:ident $output:ident),+) => (
+ #[allow(non_snake_case)]
+ impl<I, $($output),+, E: ParseError<I>, $($parser),+> Parser<I, ($($output),+,), E> for ($($parser),+,)
+ where
+ $($parser: Parser<I, $output, E>),+
+ {
+ #[inline(always)]
+ fn parse_next(&mut self, i: I) -> IResult<I, ($($output),+,), E> {
+ let ($(ref mut $parser),+,) = *self;
+
+ $(let(i, $output) = $parser.parse_next(i)?;)+
+
+ Ok((i, ($($output),+,)))
+ }
+ }
+ )
+}
+
+macro_rules! impl_parser_for_tuples {
+ ($parser1:ident $output1:ident, $($parser:ident $output:ident),+) => {
+ impl_parser_for_tuples!(__impl $parser1 $output1; $($parser $output),+);
+ };
+ (__impl $($parser:ident $output:ident),+; $parser1:ident $output1:ident $(,$parser2:ident $output2:ident)*) => {
+ impl_parser_for_tuple!($($parser $output),+);
+ impl_parser_for_tuples!(__impl $($parser $output),+, $parser1 $output1; $($parser2 $output2),*);
+ };
+ (__impl $($parser:ident $output:ident),+;) => {
+ impl_parser_for_tuple!($($parser $output),+);
+ }
+}
+
+impl_parser_for_tuples!(
+ P1 O1,
+ P2 O2,
+ P3 O3,
+ P4 O4,
+ P5 O5,
+ P6 O6,
+ P7 O7,
+ P8 O8,
+ P9 O9,
+ P10 O10,
+ P11 O11,
+ P12 O12,
+ P13 O13,
+ P14 O14,
+ P15 O15,
+ P16 O16,
+ P17 O17,
+ P18 O18,
+ P19 O19,
+ P20 O20,
+ P21 O21
+);
+
+#[cfg(feature = "alloc")]
+use alloc::boxed::Box;
+
+#[cfg(feature = "alloc")]
+impl<'a, I, O, E> Parser<I, O, E> for Box<dyn Parser<I, O, E> + 'a> {
+ #[inline(always)]
+ fn parse_next(&mut self, input: I) -> IResult<I, O, E> {
+ (**self).parse_next(input)
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+ use crate::binary::be_u16;
+ use crate::error::ErrMode;
+ use crate::error::Error;
+ use crate::error::ErrorKind;
+ use crate::error::Needed;
+ use crate::token::take;
+ use crate::Partial;
+
+ #[doc(hidden)]
+ #[macro_export]
+ macro_rules! assert_size (
+ ($t:ty, $sz:expr) => (
+ assert!($crate::lib::std::mem::size_of::<$t>() <= $sz, "{} <= {} failed", $crate::lib::std::mem::size_of::<$t>(), $sz);
+ );
+ );
+
+ #[test]
+ #[cfg(target_pointer_width = "64")]
+ fn size_test() {
+ assert_size!(IResult<&[u8], &[u8], (&[u8], u32)>, 40);
+ assert_size!(IResult<&str, &str, u32>, 40);
+ assert_size!(Needed, 8);
+ assert_size!(ErrMode<u32>, 16);
+ assert_size!(ErrorKind, 1);
+ }
+
+ #[test]
+ fn err_map_test() {
+ let e = ErrMode::Backtrack(1);
+ assert_eq!(e.map(|v| v + 1), ErrMode::Backtrack(2));
+ }
+
+ #[test]
+ fn single_element_tuples() {
+ use crate::ascii::alpha1;
+ use crate::error::ErrorKind;
+
+ let mut parser = (alpha1,);
+ assert_eq!(parser.parse_next("abc123def"), Ok(("123def", ("abc",))));
+ assert_eq!(
+ parser.parse_next("123def"),
+ Err(ErrMode::Backtrack(Error {
+ input: "123def",
+ kind: ErrorKind::Slice
+ }))
+ );
+ }
+
+ #[test]
+ fn tuple_test() {
+ #[allow(clippy::type_complexity)]
+ fn tuple_3(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, (u16, &[u8], &[u8])> {
+ (be_u16, take(3u8), "fg").parse_next(i)
+ }
+
+ assert_eq!(
+ tuple_3(Partial::new(&b"abcdefgh"[..])),
+ Ok((
+ Partial::new(&b"h"[..]),
+ (0x6162u16, &b"cde"[..], &b"fg"[..])
+ ))
+ );
+ assert_eq!(
+ tuple_3(Partial::new(&b"abcd"[..])),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ tuple_3(Partial::new(&b"abcde"[..])),
+ Err(ErrMode::Incomplete(Needed::new(2)))
+ );
+ assert_eq!(
+ tuple_3(Partial::new(&b"abcdejk"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"jk"[..]),
+ ErrorKind::Tag
+ )))
+ );
+ }
+
+ #[test]
+ fn unit_type() {
+ fn parser(i: &str) -> IResult<&str, ()> {
+ ().parse_next(i)
+ }
+ assert_eq!(parser.parse_next("abxsbsh"), Ok(("abxsbsh", ())));
+ assert_eq!(parser.parse_next("sdfjakdsas"), Ok(("sdfjakdsas", ())));
+ assert_eq!(parser.parse_next(""), Ok(("", ())));
+ }
+}
diff --git a/vendor/winnow-0.4.7/src/sequence.rs b/vendor/winnow-0.4.7/src/sequence.rs
new file mode 100644
index 000000000..2d7af28e9
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/sequence.rs
@@ -0,0 +1,9 @@
+//! Deprecated, see [`combinator`]
+#![deprecated(since = "0.4.2", note = "Replaced with `combinator`")]
+
+use crate::combinator;
+
+pub use combinator::delimited;
+pub use combinator::preceded;
+pub use combinator::separated_pair;
+pub use combinator::terminated;
diff --git a/vendor/winnow-0.4.7/src/stream/impls.rs b/vendor/winnow-0.4.7/src/stream/impls.rs
new file mode 100644
index 000000000..b277dd9a9
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/stream/impls.rs
@@ -0,0 +1,537 @@
+macro_rules! impl_partial_eq {
+ ($lhs:ty, $rhs:ty) => {
+ impl<'a, 'b> PartialEq<$rhs> for $lhs {
+ #[inline]
+ fn eq(&self, other: &$rhs) -> bool {
+ let l = self.as_ref();
+ let r: &Self = other.as_ref();
+ PartialEq::eq(l, r)
+ }
+ }
+
+ impl<'a, 'b> PartialEq<$lhs> for $rhs {
+ #[inline]
+ fn eq(&self, other: &$lhs) -> bool {
+ PartialEq::eq(other, self)
+ }
+ }
+ };
+}
+
+macro_rules! impl_partial_ord {
+ ($lhs:ty, $rhs:ty) => {
+ impl<'a, 'b> PartialOrd<$rhs> for $lhs {
+ #[inline]
+ fn partial_cmp(&self, other: &$rhs) -> Option<Ordering> {
+ let l = self.as_ref();
+ let r: &Self = other.as_ref();
+ PartialOrd::partial_cmp(l, r)
+ }
+ }
+
+ impl<'a, 'b> PartialOrd<$lhs> for $rhs {
+ #[inline]
+ fn partial_cmp(&self, other: &$lhs) -> Option<Ordering> {
+ PartialOrd::partial_cmp(other, self)
+ }
+ }
+ };
+}
+
+mod bytes {
+ use crate::lib::std::{cmp::Ordering, fmt, ops};
+
+ use crate::stream::Bytes;
+
+ impl fmt::Display for Bytes {
+ #[inline]
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ <Self as fmt::UpperHex>::fmt(self, f)
+ }
+ }
+
+ impl fmt::Debug for Bytes {
+ #[inline]
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ <Self as fmt::UpperHex>::fmt(self, f)
+ }
+ }
+
+ impl fmt::LowerHex for Bytes {
+ #[inline]
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ for byte in self.as_bytes() {
+ write!(f, "{:0>2x}", byte)?;
+ }
+ Ok(())
+ }
+ }
+
+ impl fmt::UpperHex for Bytes {
+ #[inline]
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ for (i, byte) in self.as_bytes().iter().enumerate() {
+ if 0 < i {
+ let absolute = (self.as_bytes().as_ptr() as usize) + i;
+ if f.alternate() && absolute != 0 && absolute % 4 == 0 {
+ write!(f, "_")?;
+ }
+ }
+ write!(f, "{:0>2X}", byte)?;
+ }
+ Ok(())
+ }
+ }
+
+ impl ops::Deref for Bytes {
+ type Target = [u8];
+
+ #[inline]
+ fn deref(&self) -> &[u8] {
+ self.as_bytes()
+ }
+ }
+
+ impl ops::Index<usize> for Bytes {
+ type Output = u8;
+
+ #[inline]
+ fn index(&self, idx: usize) -> &u8 {
+ &self.as_bytes()[idx]
+ }
+ }
+
+ impl ops::Index<ops::RangeFull> for Bytes {
+ type Output = Bytes;
+
+ #[inline]
+ fn index(&self, _: ops::RangeFull) -> &Bytes {
+ self
+ }
+ }
+
+ impl ops::Index<ops::Range<usize>> for Bytes {
+ type Output = Bytes;
+
+ #[inline]
+ fn index(&self, r: ops::Range<usize>) -> &Bytes {
+ Bytes::new(&self.as_bytes()[r.start..r.end])
+ }
+ }
+
+ impl ops::Index<ops::RangeInclusive<usize>> for Bytes {
+ type Output = Bytes;
+
+ #[inline]
+ fn index(&self, r: ops::RangeInclusive<usize>) -> &Bytes {
+ Bytes::new(&self.as_bytes()[*r.start()..=*r.end()])
+ }
+ }
+
+ impl ops::Index<ops::RangeFrom<usize>> for Bytes {
+ type Output = Bytes;
+
+ #[inline]
+ fn index(&self, r: ops::RangeFrom<usize>) -> &Bytes {
+ Bytes::new(&self.as_bytes()[r.start..])
+ }
+ }
+
+ impl ops::Index<ops::RangeTo<usize>> for Bytes {
+ type Output = Bytes;
+
+ #[inline]
+ fn index(&self, r: ops::RangeTo<usize>) -> &Bytes {
+ Bytes::new(&self.as_bytes()[..r.end])
+ }
+ }
+
+ impl ops::Index<ops::RangeToInclusive<usize>> for Bytes {
+ type Output = Bytes;
+
+ #[inline]
+ fn index(&self, r: ops::RangeToInclusive<usize>) -> &Bytes {
+ Bytes::new(&self.as_bytes()[..=r.end])
+ }
+ }
+
+ impl AsRef<[u8]> for Bytes {
+ #[inline]
+ fn as_ref(&self) -> &[u8] {
+ self.as_bytes()
+ }
+ }
+
+ impl AsRef<Bytes> for [u8] {
+ #[inline]
+ fn as_ref(&self) -> &Bytes {
+ Bytes::new(self)
+ }
+ }
+
+ impl AsRef<Bytes> for str {
+ #[inline]
+ fn as_ref(&self) -> &Bytes {
+ Bytes::new(self)
+ }
+ }
+
+ #[cfg(feature = "alloc")]
+ impl crate::lib::std::borrow::ToOwned for Bytes {
+ type Owned = crate::lib::std::vec::Vec<u8>;
+
+ #[inline]
+ fn to_owned(&self) -> Self::Owned {
+ crate::lib::std::vec::Vec::from(self.as_bytes())
+ }
+ }
+
+ #[cfg(feature = "alloc")]
+ impl crate::lib::std::borrow::Borrow<Bytes> for crate::lib::std::vec::Vec<u8> {
+ #[inline]
+ fn borrow(&self) -> &Bytes {
+ Bytes::from_bytes(self.as_slice())
+ }
+ }
+
+ impl<'a> Default for &'a Bytes {
+ fn default() -> &'a Bytes {
+ Bytes::new(b"")
+ }
+ }
+
+ impl<'a> From<&'a [u8]> for &'a Bytes {
+ #[inline]
+ fn from(s: &'a [u8]) -> &'a Bytes {
+ Bytes::new(s)
+ }
+ }
+
+ impl<'a> From<&'a Bytes> for &'a [u8] {
+ #[inline]
+ fn from(s: &'a Bytes) -> &'a [u8] {
+ Bytes::as_bytes(s)
+ }
+ }
+
+ impl<'a> From<&'a str> for &'a Bytes {
+ #[inline]
+ fn from(s: &'a str) -> &'a Bytes {
+ Bytes::new(s.as_bytes())
+ }
+ }
+
+ impl Eq for Bytes {}
+
+ impl PartialEq<Bytes> for Bytes {
+ #[inline]
+ fn eq(&self, other: &Bytes) -> bool {
+ self.as_bytes() == other.as_bytes()
+ }
+ }
+
+ impl_partial_eq!(Bytes, [u8]);
+ impl_partial_eq!(Bytes, &'a [u8]);
+ impl_partial_eq!(Bytes, str);
+ impl_partial_eq!(Bytes, &'a str);
+
+ impl PartialOrd for Bytes {
+ #[inline]
+ fn partial_cmp(&self, other: &Bytes) -> Option<Ordering> {
+ PartialOrd::partial_cmp(self.as_bytes(), other.as_bytes())
+ }
+ }
+
+ impl Ord for Bytes {
+ #[inline]
+ fn cmp(&self, other: &Bytes) -> Ordering {
+ self.partial_cmp(other).unwrap()
+ }
+ }
+
+ impl_partial_ord!(Bytes, [u8]);
+ impl_partial_ord!(Bytes, &'a [u8]);
+ impl_partial_ord!(Bytes, str);
+ impl_partial_ord!(Bytes, &'a str);
+
+ #[cfg(all(test, feature = "std"))]
+ mod display {
+ use crate::stream::Bytes;
+
+ #[test]
+ fn clean() {
+ assert_eq!(&format!("{}", Bytes::new(b"abc")), "616263");
+ assert_eq!(&format!("{}", Bytes::new(b"\xf0\x28\x8c\xbc")), "F0288CBC");
+ }
+ }
+
+ #[cfg(all(test, feature = "std"))]
+ mod debug {
+ use crate::stream::Bytes;
+
+ #[test]
+ fn test_debug() {
+ assert_eq!(
+ "000000206674797069736F6D0000020069736F6D69736F32617663316D70",
+ format!(
+ "{:?}",
+ Bytes::new(b"\0\0\0 ftypisom\0\0\x02\0isomiso2avc1mp")
+ ),
+ );
+ }
+
+ #[test]
+ fn test_pretty_debug() {
+ // Output can change from run-to-run
+ format!(
+ "{:#?}",
+ Bytes::new(b"\0\0\0 ftypisom\0\0\x02\0isomiso2avc1mp")
+ );
+ }
+
+ #[test]
+ fn test_sliced() {
+ // Output can change from run-to-run
+ let total = Bytes::new(b"12345678901234567890");
+ format!("{:#?}", total);
+ format!("{:#?}", &total[1..]);
+ format!("{:#?}", &total[10..]);
+ }
+ }
+}
+
+mod bstr {
+ use crate::lib::std::{cmp::Ordering, fmt, ops};
+
+ use crate::stream::BStr;
+
+ #[cfg(feature = "alloc")]
+ impl fmt::Display for BStr {
+ #[inline]
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ crate::lib::std::string::String::from_utf8_lossy(self.as_bytes()).fmt(f)
+ }
+ }
+
+ impl fmt::Debug for BStr {
+ #[inline]
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ if !f.alternate() {
+ write!(f, "\"")?;
+ }
+ for byte in self.as_bytes() {
+ let c = *byte as char;
+ write!(f, "{}", c.escape_debug())?;
+ }
+ if !f.alternate() {
+ write!(f, "\"")?;
+ }
+ Ok(())
+ }
+ }
+
+ impl ops::Deref for BStr {
+ type Target = [u8];
+
+ #[inline]
+ fn deref(&self) -> &[u8] {
+ self.as_bytes()
+ }
+ }
+
+ impl ops::Index<usize> for BStr {
+ type Output = u8;
+
+ #[inline]
+ fn index(&self, idx: usize) -> &u8 {
+ &self.as_bytes()[idx]
+ }
+ }
+
+ impl ops::Index<ops::RangeFull> for BStr {
+ type Output = BStr;
+
+ #[inline]
+ fn index(&self, _: ops::RangeFull) -> &BStr {
+ self
+ }
+ }
+
+ impl ops::Index<ops::Range<usize>> for BStr {
+ type Output = BStr;
+
+ #[inline]
+ fn index(&self, r: ops::Range<usize>) -> &BStr {
+ BStr::new(&self.as_bytes()[r.start..r.end])
+ }
+ }
+
+ impl ops::Index<ops::RangeInclusive<usize>> for BStr {
+ type Output = BStr;
+
+ #[inline]
+ fn index(&self, r: ops::RangeInclusive<usize>) -> &BStr {
+ BStr::new(&self.as_bytes()[*r.start()..=*r.end()])
+ }
+ }
+
+ impl ops::Index<ops::RangeFrom<usize>> for BStr {
+ type Output = BStr;
+
+ #[inline]
+ fn index(&self, r: ops::RangeFrom<usize>) -> &BStr {
+ BStr::new(&self.as_bytes()[r.start..])
+ }
+ }
+
+ impl ops::Index<ops::RangeTo<usize>> for BStr {
+ type Output = BStr;
+
+ #[inline]
+ fn index(&self, r: ops::RangeTo<usize>) -> &BStr {
+ BStr::new(&self.as_bytes()[..r.end])
+ }
+ }
+
+ impl ops::Index<ops::RangeToInclusive<usize>> for BStr {
+ type Output = BStr;
+
+ #[inline]
+ fn index(&self, r: ops::RangeToInclusive<usize>) -> &BStr {
+ BStr::new(&self.as_bytes()[..=r.end])
+ }
+ }
+
+ impl AsRef<[u8]> for BStr {
+ #[inline]
+ fn as_ref(&self) -> &[u8] {
+ self.as_bytes()
+ }
+ }
+
+ impl AsRef<BStr> for [u8] {
+ #[inline]
+ fn as_ref(&self) -> &BStr {
+ BStr::new(self)
+ }
+ }
+
+ impl AsRef<BStr> for str {
+ #[inline]
+ fn as_ref(&self) -> &BStr {
+ BStr::new(self)
+ }
+ }
+
+ #[cfg(feature = "alloc")]
+ impl crate::lib::std::borrow::ToOwned for BStr {
+ type Owned = crate::lib::std::vec::Vec<u8>;
+
+ #[inline]
+ fn to_owned(&self) -> Self::Owned {
+ crate::lib::std::vec::Vec::from(self.as_bytes())
+ }
+ }
+
+ #[cfg(feature = "alloc")]
+ impl crate::lib::std::borrow::Borrow<BStr> for crate::lib::std::vec::Vec<u8> {
+ #[inline]
+ fn borrow(&self) -> &BStr {
+ BStr::from_bytes(self.as_slice())
+ }
+ }
+
+ impl<'a> Default for &'a BStr {
+ fn default() -> &'a BStr {
+ BStr::new(b"")
+ }
+ }
+
+ impl<'a> From<&'a [u8]> for &'a BStr {
+ #[inline]
+ fn from(s: &'a [u8]) -> &'a BStr {
+ BStr::new(s)
+ }
+ }
+
+ impl<'a> From<&'a BStr> for &'a [u8] {
+ #[inline]
+ fn from(s: &'a BStr) -> &'a [u8] {
+ BStr::as_bytes(s)
+ }
+ }
+
+ impl<'a> From<&'a str> for &'a BStr {
+ #[inline]
+ fn from(s: &'a str) -> &'a BStr {
+ BStr::new(s.as_bytes())
+ }
+ }
+
+ impl Eq for BStr {}
+
+ impl PartialEq<BStr> for BStr {
+ #[inline]
+ fn eq(&self, other: &BStr) -> bool {
+ self.as_bytes() == other.as_bytes()
+ }
+ }
+
+ impl_partial_eq!(BStr, [u8]);
+ impl_partial_eq!(BStr, &'a [u8]);
+ impl_partial_eq!(BStr, str);
+ impl_partial_eq!(BStr, &'a str);
+
+ impl PartialOrd for BStr {
+ #[inline]
+ fn partial_cmp(&self, other: &BStr) -> Option<Ordering> {
+ PartialOrd::partial_cmp(self.as_bytes(), other.as_bytes())
+ }
+ }
+
+ impl Ord for BStr {
+ #[inline]
+ fn cmp(&self, other: &BStr) -> Ordering {
+ self.partial_cmp(other).unwrap()
+ }
+ }
+
+ impl_partial_ord!(BStr, [u8]);
+ impl_partial_ord!(BStr, &'a [u8]);
+ impl_partial_ord!(BStr, str);
+ impl_partial_ord!(BStr, &'a str);
+
+ #[cfg(all(test, feature = "std"))]
+ mod display {
+ use crate::stream::BStr;
+
+ #[test]
+ fn clean() {
+ assert_eq!(&format!("{}", BStr::new(b"abc")), "abc");
+ assert_eq!(&format!("{}", BStr::new(b"\xf0\x28\x8c\xbc")), "�(��");
+ }
+ }
+
+ #[cfg(all(test, feature = "std"))]
+ mod debug {
+ use crate::stream::BStr;
+
+ #[test]
+ fn test_debug() {
+ assert_eq!(&format!("{:?}", BStr::new(b"abc")), "\"abc\"");
+
+ assert_eq!(
+ "\"\\0\\0\\0 ftypisom\\0\\0\\u{2}\\0isomiso2avc1mp\"",
+ format!(
+ "{:?}",
+ BStr::new(b"\0\0\0 ftypisom\0\0\x02\0isomiso2avc1mp")
+ ),
+ );
+ }
+
+ #[test]
+ fn test_pretty_debug() {
+ assert_eq!(&format!("{:#?}", BStr::new(b"abc")), "abc");
+ }
+ }
+}
diff --git a/vendor/winnow-0.4.7/src/stream/mod.rs b/vendor/winnow-0.4.7/src/stream/mod.rs
new file mode 100644
index 000000000..3d7a41e09
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/stream/mod.rs
@@ -0,0 +1,2576 @@
+//! Stream capability for combinators to parse
+//!
+//! Stream types include:
+//! - `&[u8]` and [`Bytes`] for binary data
+//! - `&str` (aliased as [`Str`]) and [`BStr`] for UTF-8 data
+//! - [`Located`] can track the location within the original buffer to report
+//! [spans][crate::Parser::with_span]
+//! - [`Stateful`] to thread global state through your parsers
+//! - [`Partial`] can mark an input as partial buffer that is being streamed into
+//! - [Custom stream types][crate::_topic::stream]
+
+use core::num::NonZeroUsize;
+
+use crate::error::{ErrMode, ErrorKind, Needed, ParseError};
+use crate::lib::std::iter::{Cloned, Enumerate};
+use crate::lib::std::slice::Iter;
+use crate::lib::std::str::from_utf8;
+use crate::lib::std::str::CharIndices;
+use crate::lib::std::str::FromStr;
+use crate::IResult;
+
+#[cfg(feature = "alloc")]
+use crate::lib::std::collections::BTreeMap;
+#[cfg(feature = "std")]
+use crate::lib::std::collections::HashMap;
+#[cfg(feature = "alloc")]
+use crate::lib::std::string::String;
+#[cfg(feature = "alloc")]
+use crate::lib::std::vec::Vec;
+
+mod impls;
+#[cfg(test)]
+mod tests;
+
+/// UTF-8 Stream
+pub type Str<'i> = &'i str;
+
+/// Improved `Debug` experience for `&[u8]` byte streams
+#[allow(clippy::derive_hash_xor_eq)]
+#[derive(Hash)]
+#[repr(transparent)]
+pub struct Bytes([u8]);
+
+impl Bytes {
+ /// Make a stream out of a byte slice-like.
+ #[inline]
+ pub fn new<B: ?Sized + AsRef<[u8]>>(bytes: &B) -> &Self {
+ Self::from_bytes(bytes.as_ref())
+ }
+
+ #[inline]
+ fn from_bytes(slice: &[u8]) -> &Self {
+ unsafe { crate::lib::std::mem::transmute(slice) }
+ }
+
+ #[inline]
+ fn as_bytes(&self) -> &[u8] {
+ &self.0
+ }
+}
+
+/// Improved `Debug` experience for `&[u8]` UTF-8-ish streams
+#[allow(clippy::derive_hash_xor_eq)]
+#[derive(Hash)]
+#[repr(transparent)]
+pub struct BStr([u8]);
+
+impl BStr {
+ /// Make a stream out of a byte slice-like.
+ #[inline]
+ pub fn new<B: ?Sized + AsRef<[u8]>>(bytes: &B) -> &Self {
+ Self::from_bytes(bytes.as_ref())
+ }
+
+ #[inline]
+ fn from_bytes(slice: &[u8]) -> &Self {
+ unsafe { crate::lib::std::mem::transmute(slice) }
+ }
+
+ #[inline]
+ fn as_bytes(&self) -> &[u8] {
+ &self.0
+ }
+}
+
+/// Allow collecting the span of a parsed token
+///
+/// See [`Parser::span`][crate::Parser::span] and [`Parser::with_span`][crate::Parser::with_span] for more details
+#[derive(Copy, Clone, Default, Debug, PartialEq, Eq, PartialOrd, Ord)]
+pub struct Located<I> {
+ initial: I,
+ input: I,
+}
+
+impl<I> Located<I>
+where
+ I: Clone + Offset,
+{
+ /// Wrap another Stream with span tracking
+ pub fn new(input: I) -> Self {
+ let initial = input.clone();
+ Self { initial, input }
+ }
+
+ fn location(&self) -> usize {
+ self.initial.offset_to(&self.input)
+ }
+}
+
+impl<I> AsRef<I> for Located<I> {
+ #[inline(always)]
+ fn as_ref(&self) -> &I {
+ &self.input
+ }
+}
+
+impl<I> crate::lib::std::ops::Deref for Located<I> {
+ type Target = I;
+
+ #[inline(always)]
+ fn deref(&self) -> &Self::Target {
+ &self.input
+ }
+}
+
+impl<I: crate::lib::std::fmt::Display> crate::lib::std::fmt::Display for Located<I> {
+ fn fmt(&self, f: &mut crate::lib::std::fmt::Formatter<'_>) -> crate::lib::std::fmt::Result {
+ self.input.fmt(f)
+ }
+}
+
+/// Thread global state through your parsers
+///
+/// Use cases
+/// - Recursion checks
+/// - Error recovery
+/// - Debugging
+///
+/// # Example
+///
+/// ```
+/// # use std::cell::Cell;
+/// # use winnow::prelude::*;
+/// # use winnow::stream::Stateful;
+/// # use winnow::ascii::alpha1;
+/// # type Error = ();
+///
+/// #[derive(Clone, Debug)]
+/// struct State<'s>(&'s Cell<u32>);
+///
+/// impl<'s> State<'s> {
+/// fn count(&self) {
+/// self.0.set(self.0.get() + 1);
+/// }
+/// }
+///
+/// type Stream<'is> = Stateful<&'is str, State<'is>>;
+///
+/// fn word(i: Stream<'_>) -> IResult<Stream<'_>, &str> {
+/// i.state.count();
+/// alpha1(i)
+/// }
+///
+/// let data = "Hello";
+/// let state = Cell::new(0);
+/// let input = Stream { input: data, state: State(&state) };
+/// let output = word.parse(input).unwrap();
+/// assert_eq!(state.get(), 1);
+/// ```
+#[derive(Clone, Copy, Debug, Eq, PartialEq)]
+pub struct Stateful<I, S> {
+ /// Inner input being wrapped in state
+ pub input: I,
+ /// User-provided state
+ pub state: S,
+}
+
+impl<I, S> AsRef<I> for Stateful<I, S> {
+ #[inline(always)]
+ fn as_ref(&self) -> &I {
+ &self.input
+ }
+}
+
+impl<I, S> crate::lib::std::ops::Deref for Stateful<I, S> {
+ type Target = I;
+
+ #[inline(always)]
+ fn deref(&self) -> &Self::Target {
+ self.as_ref()
+ }
+}
+
+impl<I: crate::lib::std::fmt::Display, S> crate::lib::std::fmt::Display for Stateful<I, S> {
+ fn fmt(&self, f: &mut crate::lib::std::fmt::Formatter<'_>) -> crate::lib::std::fmt::Result {
+ self.input.fmt(f)
+ }
+}
+
+/// Mark the input as a partial buffer for streaming input.
+///
+/// Complete input means that we already have all of the data. This will be the common case with
+/// small files that can be read entirely to memory.
+///
+/// In contrast, streaming input assumes that we might not have all of the data.
+/// This can happen with some network protocol or large file parsers, where the
+/// input buffer can be full and need to be resized or refilled.
+/// - [`ErrMode::Incomplete`] will report how much more data is needed.
+/// - [`Parser::complete_err`][crate::Parser::complete_err] transform [`ErrMode::Incomplete`] to
+/// [`ErrMode::Backtrack`]
+///
+/// See also [`StreamIsPartial`] to tell whether the input supports complete or partial parsing.
+///
+/// See also [Special Topics: Parsing Partial Input][crate::_topic::partial].
+///
+/// # Example
+///
+/// Here is how it works in practice:
+///
+/// ```rust
+/// # use winnow::{IResult, error::ErrMode, error::Needed, error::{Error, ErrorKind}, token, ascii, stream::Partial};
+/// # use winnow::prelude::*;
+///
+/// fn take_partial(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+/// token::take(4u8).parse_next(i)
+/// }
+///
+/// fn take_complete(i: &[u8]) -> IResult<&[u8], &[u8]> {
+/// token::take(4u8).parse_next(i)
+/// }
+///
+/// // both parsers will take 4 bytes as expected
+/// assert_eq!(take_partial(Partial::new(&b"abcde"[..])), Ok((Partial::new(&b"e"[..]), &b"abcd"[..])));
+/// assert_eq!(take_complete(&b"abcde"[..]), Ok((&b"e"[..], &b"abcd"[..])));
+///
+/// // if the input is smaller than 4 bytes, the partial parser
+/// // will return `Incomplete` to indicate that we need more data
+/// assert_eq!(take_partial(Partial::new(&b"abc"[..])), Err(ErrMode::Incomplete(Needed::new(1))));
+///
+/// // but the complete parser will return an error
+/// assert_eq!(take_complete(&b"abc"[..]), Err(ErrMode::Backtrack(Error::new(&b"abc"[..], ErrorKind::Slice))));
+///
+/// // the alpha0 function recognizes 0 or more alphabetic characters
+/// fn alpha0_partial(i: Partial<&str>) -> IResult<Partial<&str>, &str> {
+/// ascii::alpha0(i)
+/// }
+///
+/// fn alpha0_complete(i: &str) -> IResult<&str, &str> {
+/// ascii::alpha0(i)
+/// }
+///
+/// // if there's a clear limit to the recognized characters, both parsers work the same way
+/// assert_eq!(alpha0_partial(Partial::new("abcd;")), Ok((Partial::new(";"), "abcd")));
+/// assert_eq!(alpha0_complete("abcd;"), Ok((";", "abcd")));
+///
+/// // but when there's no limit, the partial version returns `Incomplete`, because it cannot
+/// // know if more input data should be recognized. The whole input could be "abcd;", or
+/// // "abcde;"
+/// assert_eq!(alpha0_partial(Partial::new("abcd")), Err(ErrMode::Incomplete(Needed::new(1))));
+///
+/// // while the complete version knows that all of the data is there
+/// assert_eq!(alpha0_complete("abcd"), Ok(("", "abcd")));
+/// ```
+#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
+pub struct Partial<I> {
+ input: I,
+ partial: bool,
+}
+
+impl<I> Partial<I>
+where
+ I: StreamIsPartial,
+{
+ /// Create a partial input
+ pub fn new(input: I) -> Self {
+ debug_assert!(
+ !I::is_partial_supported(),
+ "`Partial` can only wrap complete sources"
+ );
+ let partial = true;
+ Self { input, partial }
+ }
+
+ /// Extract the original [`Stream`]
+ #[inline(always)]
+ pub fn into_inner(self) -> I {
+ self.input
+ }
+}
+
+impl<I> Default for Partial<I>
+where
+ I: Default + StreamIsPartial,
+{
+ fn default() -> Self {
+ Self::new(I::default())
+ }
+}
+
+impl<I> crate::lib::std::ops::Deref for Partial<I> {
+ type Target = I;
+
+ #[inline(always)]
+ fn deref(&self) -> &Self::Target {
+ &self.input
+ }
+}
+
+impl<I: crate::lib::std::fmt::Display> crate::lib::std::fmt::Display for Partial<I> {
+ fn fmt(&self, f: &mut crate::lib::std::fmt::Formatter<'_>) -> crate::lib::std::fmt::Result {
+ self.input.fmt(f)
+ }
+}
+
+/// Abstract method to calculate the input length
+pub trait SliceLen {
+ /// Calculates the input length, as indicated by its name,
+ /// and the name of the trait itself
+ fn slice_len(&self) -> usize;
+}
+
+impl<'a, T> SliceLen for &'a [T] {
+ #[inline]
+ fn slice_len(&self) -> usize {
+ self.len()
+ }
+}
+
+impl<T, const LEN: usize> SliceLen for [T; LEN] {
+ #[inline]
+ fn slice_len(&self) -> usize {
+ self.len()
+ }
+}
+
+impl<'a, T, const LEN: usize> SliceLen for &'a [T; LEN] {
+ #[inline]
+ fn slice_len(&self) -> usize {
+ self.len()
+ }
+}
+
+impl<'a> SliceLen for &'a str {
+ #[inline]
+ fn slice_len(&self) -> usize {
+ self.len()
+ }
+}
+
+impl<'a> SliceLen for &'a Bytes {
+ #[inline]
+ fn slice_len(&self) -> usize {
+ self.len()
+ }
+}
+
+impl<'a> SliceLen for &'a BStr {
+ #[inline]
+ fn slice_len(&self) -> usize {
+ self.len()
+ }
+}
+
+impl<I> SliceLen for (I, usize, usize)
+where
+ I: SliceLen,
+{
+ #[inline(always)]
+ fn slice_len(&self) -> usize {
+ self.0.slice_len() * 8 + self.2 - self.1
+ }
+}
+
+impl<I> SliceLen for Located<I>
+where
+ I: SliceLen,
+{
+ #[inline(always)]
+ fn slice_len(&self) -> usize {
+ self.input.slice_len()
+ }
+}
+
+impl<I, S> SliceLen for Stateful<I, S>
+where
+ I: SliceLen,
+{
+ #[inline(always)]
+ fn slice_len(&self) -> usize {
+ self.input.slice_len()
+ }
+}
+
+impl<I> SliceLen for Partial<I>
+where
+ I: SliceLen,
+{
+ #[inline(always)]
+ fn slice_len(&self) -> usize {
+ self.input.slice_len()
+ }
+}
+
+/// Core definition for parser input state
+pub trait Stream: Offset + Clone + crate::lib::std::fmt::Debug {
+ /// The smallest unit being parsed
+ ///
+ /// Example: `u8` for `&[u8]` or `char` for `&str`
+ type Token: crate::lib::std::fmt::Debug;
+ /// Sequence of `Token`s
+ ///
+ /// Example: `&[u8]` for `Located<&[u8]>` or `&str` for `Located<&str>`
+ type Slice: crate::lib::std::fmt::Debug;
+
+ /// Iterate with the offset from the current location
+ type IterOffsets: Iterator<Item = (usize, Self::Token)>;
+
+ /// Iterate with the offset from the current location
+ fn iter_offsets(&self) -> Self::IterOffsets;
+ /// Returns the offaet to the end of the input
+ fn eof_offset(&self) -> usize;
+
+ /// Split off the next token from the input
+ fn next_token(&self) -> Option<(Self, Self::Token)>;
+
+ /// Finds the offset of the next matching token
+ fn offset_for<P>(&self, predicate: P) -> Option<usize>
+ where
+ P: Fn(Self::Token) -> bool;
+ /// Get the offset for the number of `tokens` into the stream
+ ///
+ /// This means "0 tokens" will return `0` offset
+ fn offset_at(&self, tokens: usize) -> Result<usize, Needed>;
+ /// Split off a slice of tokens from the input
+ ///
+ /// **NOTE:** For inputs with variable width tokens, like `&str`'s `char`, `offset` might not correspond
+ /// with the number of tokens. To get a valid offset, use:
+ /// - [`Stream::eof_offset`]
+ /// - [`Stream::iter_offsets`]
+ /// - [`Stream::offset_for`]
+ /// - [`Stream::offset_at`]
+ ///
+ /// # Panic
+ ///
+ /// This will panic if
+ ///
+ /// * Indexes must be within bounds of the original input;
+ /// * Indexes must uphold invariants of the stream, like for `str` they must lie on UTF-8
+ /// sequence boundaries.
+ ///
+ fn next_slice(&self, offset: usize) -> (Self, Self::Slice);
+}
+
+impl<'i, T> Stream for &'i [T]
+where
+ T: Clone + crate::lib::std::fmt::Debug,
+{
+ type Token = T;
+ type Slice = &'i [T];
+
+ type IterOffsets = Enumerate<Cloned<Iter<'i, T>>>;
+
+ #[inline(always)]
+ fn iter_offsets(&self) -> Self::IterOffsets {
+ self.iter().cloned().enumerate()
+ }
+ #[inline(always)]
+ fn eof_offset(&self) -> usize {
+ self.len()
+ }
+
+ #[inline(always)]
+ fn next_token(&self) -> Option<(Self, Self::Token)> {
+ self.split_first()
+ .map(|(token, next)| (next, token.clone()))
+ }
+
+ #[inline(always)]
+ fn offset_for<P>(&self, predicate: P) -> Option<usize>
+ where
+ P: Fn(Self::Token) -> bool,
+ {
+ self.iter().position(|b| predicate(b.clone()))
+ }
+ #[inline(always)]
+ fn offset_at(&self, tokens: usize) -> Result<usize, Needed> {
+ if let Some(needed) = tokens.checked_sub(self.len()).and_then(NonZeroUsize::new) {
+ Err(Needed::Size(needed))
+ } else {
+ Ok(tokens)
+ }
+ }
+ #[inline(always)]
+ fn next_slice(&self, offset: usize) -> (Self, Self::Slice) {
+ let (slice, next) = self.split_at(offset);
+ (next, slice)
+ }
+}
+
+impl<'i> Stream for &'i str {
+ type Token = char;
+ type Slice = &'i str;
+
+ type IterOffsets = CharIndices<'i>;
+
+ #[inline(always)]
+ fn iter_offsets(&self) -> Self::IterOffsets {
+ self.char_indices()
+ }
+ #[inline(always)]
+ fn eof_offset(&self) -> usize {
+ self.len()
+ }
+
+ #[inline(always)]
+ fn next_token(&self) -> Option<(Self, Self::Token)> {
+ let c = self.chars().next()?;
+ let offset = c.len();
+ Some((&self[offset..], c))
+ }
+
+ #[inline(always)]
+ fn offset_for<P>(&self, predicate: P) -> Option<usize>
+ where
+ P: Fn(Self::Token) -> bool,
+ {
+ for (o, c) in self.iter_offsets() {
+ if predicate(c) {
+ return Some(o);
+ }
+ }
+ None
+ }
+ #[inline]
+ fn offset_at(&self, tokens: usize) -> Result<usize, Needed> {
+ let mut cnt = 0;
+ for (offset, _) in self.iter_offsets() {
+ if cnt == tokens {
+ return Ok(offset);
+ }
+ cnt += 1;
+ }
+
+ if cnt == tokens {
+ Ok(self.eof_offset())
+ } else {
+ Err(Needed::Unknown)
+ }
+ }
+ #[inline(always)]
+ fn next_slice(&self, offset: usize) -> (Self, Self::Slice) {
+ let (slice, next) = self.split_at(offset);
+ (next, slice)
+ }
+}
+
+impl<'i> Stream for &'i Bytes {
+ type Token = u8;
+ type Slice = &'i [u8];
+
+ type IterOffsets = Enumerate<Cloned<Iter<'i, u8>>>;
+
+ #[inline(always)]
+ fn iter_offsets(&self) -> Self::IterOffsets {
+ self.iter().cloned().enumerate()
+ }
+ #[inline(always)]
+ fn eof_offset(&self) -> usize {
+ self.len()
+ }
+
+ #[inline(always)]
+ fn next_token(&self) -> Option<(Self, Self::Token)> {
+ if self.is_empty() {
+ None
+ } else {
+ Some((Bytes::from_bytes(&self[1..]), self[0]))
+ }
+ }
+
+ #[inline(always)]
+ fn offset_for<P>(&self, predicate: P) -> Option<usize>
+ where
+ P: Fn(Self::Token) -> bool,
+ {
+ self.iter().position(|b| predicate(*b))
+ }
+ #[inline(always)]
+ fn offset_at(&self, tokens: usize) -> Result<usize, Needed> {
+ if let Some(needed) = tokens.checked_sub(self.len()).and_then(NonZeroUsize::new) {
+ Err(Needed::Size(needed))
+ } else {
+ Ok(tokens)
+ }
+ }
+ #[inline(always)]
+ fn next_slice(&self, offset: usize) -> (Self, Self::Slice) {
+ let (next, slice) = (&self.0).next_slice(offset);
+ (Bytes::from_bytes(next), slice)
+ }
+}
+
+impl<'i> Stream for &'i BStr {
+ type Token = u8;
+ type Slice = &'i [u8];
+
+ type IterOffsets = Enumerate<Cloned<Iter<'i, u8>>>;
+
+ #[inline(always)]
+ fn iter_offsets(&self) -> Self::IterOffsets {
+ self.iter().cloned().enumerate()
+ }
+ #[inline(always)]
+ fn eof_offset(&self) -> usize {
+ self.len()
+ }
+
+ #[inline(always)]
+ fn next_token(&self) -> Option<(Self, Self::Token)> {
+ if self.is_empty() {
+ None
+ } else {
+ Some((BStr::from_bytes(&self[1..]), self[0]))
+ }
+ }
+
+ #[inline(always)]
+ fn offset_for<P>(&self, predicate: P) -> Option<usize>
+ where
+ P: Fn(Self::Token) -> bool,
+ {
+ self.iter().position(|b| predicate(*b))
+ }
+ #[inline(always)]
+ fn offset_at(&self, tokens: usize) -> Result<usize, Needed> {
+ if let Some(needed) = tokens.checked_sub(self.len()).and_then(NonZeroUsize::new) {
+ Err(Needed::Size(needed))
+ } else {
+ Ok(tokens)
+ }
+ }
+ #[inline(always)]
+ fn next_slice(&self, offset: usize) -> (Self, Self::Slice) {
+ let (next, slice) = (&self.0).next_slice(offset);
+ (BStr::from_bytes(next), slice)
+ }
+}
+
+impl<I> Stream for (I, usize)
+where
+ I: Stream<Token = u8>,
+{
+ type Token = bool;
+ type Slice = (I::Slice, usize, usize);
+
+ type IterOffsets = BitOffsets<I>;
+
+ #[inline(always)]
+ fn iter_offsets(&self) -> Self::IterOffsets {
+ BitOffsets {
+ i: self.clone(),
+ o: 0,
+ }
+ }
+ #[inline(always)]
+ fn eof_offset(&self) -> usize {
+ let offset = self.0.eof_offset() * 8;
+ if offset == 0 {
+ 0
+ } else {
+ offset - self.1
+ }
+ }
+
+ #[inline(always)]
+ fn next_token(&self) -> Option<(Self, Self::Token)> {
+ next_bit(self)
+ }
+
+ #[inline(always)]
+ fn offset_for<P>(&self, predicate: P) -> Option<usize>
+ where
+ P: Fn(Self::Token) -> bool,
+ {
+ self.iter_offsets()
+ .find_map(|(o, b)| predicate(b).then(|| o))
+ }
+ #[inline(always)]
+ fn offset_at(&self, tokens: usize) -> Result<usize, Needed> {
+ if let Some(needed) = tokens
+ .checked_sub(self.eof_offset())
+ .and_then(NonZeroUsize::new)
+ {
+ Err(Needed::Size(needed))
+ } else {
+ Ok(tokens)
+ }
+ }
+ #[inline(always)]
+ fn next_slice(&self, offset: usize) -> (Self, Self::Slice) {
+ let byte_offset = (offset + self.1) / 8;
+ let end_offset = (offset + self.1) % 8;
+ let (i, s) = self.0.next_slice(byte_offset);
+ ((i, end_offset), (s, self.1, end_offset))
+ }
+}
+
+/// Iterator for [bit][crate::binary::bits] stream (`(I, usize)`)
+pub struct BitOffsets<I> {
+ i: (I, usize),
+ o: usize,
+}
+
+impl<I> Iterator for BitOffsets<I>
+where
+ I: Stream<Token = u8>,
+{
+ type Item = (usize, bool);
+ fn next(&mut self) -> Option<Self::Item> {
+ let (next, b) = next_bit(&self.i)?;
+ let o = self.o;
+
+ self.i = next;
+ self.o += 1;
+
+ Some((o, b))
+ }
+}
+
+fn next_bit<I>(i: &(I, usize)) -> Option<((I, usize), bool)>
+where
+ I: Stream<Token = u8>,
+{
+ if i.eof_offset() == 0 {
+ return None;
+ }
+
+ let i = i.clone();
+ let (next_i, byte) = i.0.next_token()?;
+ let bit = (byte >> i.1) & 0x1 == 0x1;
+
+ let next_offset = i.1 + 1;
+ if next_offset == 8 {
+ Some(((next_i, 0), bit))
+ } else {
+ Some(((i.0, next_offset), bit))
+ }
+}
+
+impl<I: Stream> Stream for Located<I> {
+ type Token = <I as Stream>::Token;
+ type Slice = <I as Stream>::Slice;
+
+ type IterOffsets = <I as Stream>::IterOffsets;
+
+ #[inline(always)]
+ fn iter_offsets(&self) -> Self::IterOffsets {
+ self.input.iter_offsets()
+ }
+ #[inline(always)]
+ fn eof_offset(&self) -> usize {
+ self.input.eof_offset()
+ }
+
+ #[inline(always)]
+ fn next_token(&self) -> Option<(Self, Self::Token)> {
+ let (next, token) = self.input.next_token()?;
+ Some((
+ Self {
+ initial: self.initial.clone(),
+ input: next,
+ },
+ token,
+ ))
+ }
+
+ #[inline(always)]
+ fn offset_for<P>(&self, predicate: P) -> Option<usize>
+ where
+ P: Fn(Self::Token) -> bool,
+ {
+ self.input.offset_for(predicate)
+ }
+ #[inline(always)]
+ fn offset_at(&self, tokens: usize) -> Result<usize, Needed> {
+ self.input.offset_at(tokens)
+ }
+ #[inline(always)]
+ fn next_slice(&self, offset: usize) -> (Self, Self::Slice) {
+ let (next, slice) = self.input.next_slice(offset);
+ (
+ Self {
+ initial: self.initial.clone(),
+ input: next,
+ },
+ slice,
+ )
+ }
+}
+
+impl<I: Stream, S: Clone + crate::lib::std::fmt::Debug> Stream for Stateful<I, S> {
+ type Token = <I as Stream>::Token;
+ type Slice = <I as Stream>::Slice;
+
+ type IterOffsets = <I as Stream>::IterOffsets;
+
+ #[inline(always)]
+ fn iter_offsets(&self) -> Self::IterOffsets {
+ self.input.iter_offsets()
+ }
+ #[inline(always)]
+ fn eof_offset(&self) -> usize {
+ self.input.eof_offset()
+ }
+
+ #[inline(always)]
+ fn next_token(&self) -> Option<(Self, Self::Token)> {
+ let (next, token) = self.input.next_token()?;
+ Some((
+ Self {
+ input: next,
+ state: self.state.clone(),
+ },
+ token,
+ ))
+ }
+
+ #[inline(always)]
+ fn offset_for<P>(&self, predicate: P) -> Option<usize>
+ where
+ P: Fn(Self::Token) -> bool,
+ {
+ self.input.offset_for(predicate)
+ }
+ #[inline(always)]
+ fn offset_at(&self, tokens: usize) -> Result<usize, Needed> {
+ self.input.offset_at(tokens)
+ }
+ #[inline(always)]
+ fn next_slice(&self, offset: usize) -> (Self, Self::Slice) {
+ let (next, slice) = self.input.next_slice(offset);
+ (
+ Self {
+ input: next,
+ state: self.state.clone(),
+ },
+ slice,
+ )
+ }
+}
+
+impl<I: Stream> Stream for Partial<I> {
+ type Token = <I as Stream>::Token;
+ type Slice = <I as Stream>::Slice;
+
+ type IterOffsets = <I as Stream>::IterOffsets;
+
+ #[inline(always)]
+ fn iter_offsets(&self) -> Self::IterOffsets {
+ self.input.iter_offsets()
+ }
+ #[inline(always)]
+ fn eof_offset(&self) -> usize {
+ self.input.eof_offset()
+ }
+
+ #[inline(always)]
+ fn next_token(&self) -> Option<(Self, Self::Token)> {
+ let (next, token) = self.input.next_token()?;
+ Some((
+ Partial {
+ input: next,
+ partial: self.partial,
+ },
+ token,
+ ))
+ }
+
+ #[inline(always)]
+ fn offset_for<P>(&self, predicate: P) -> Option<usize>
+ where
+ P: Fn(Self::Token) -> bool,
+ {
+ self.input.offset_for(predicate)
+ }
+ #[inline(always)]
+ fn offset_at(&self, tokens: usize) -> Result<usize, Needed> {
+ self.input.offset_at(tokens)
+ }
+ #[inline(always)]
+ fn next_slice(&self, offset: usize) -> (Self, Self::Slice) {
+ let (next, slice) = self.input.next_slice(offset);
+ (
+ Partial {
+ input: next,
+ partial: self.partial,
+ },
+ slice,
+ )
+ }
+}
+
+/// Number of indices input has advanced since start of parsing
+pub trait Location {
+ /// Number of indices input has advanced since start of parsing
+ fn location(&self) -> usize;
+}
+
+impl<I> Location for Located<I>
+where
+ I: Clone + Offset,
+{
+ #[inline(always)]
+ fn location(&self) -> usize {
+ self.location()
+ }
+}
+
+impl<I, S> Location for Stateful<I, S>
+where
+ I: Location,
+{
+ #[inline(always)]
+ fn location(&self) -> usize {
+ self.input.location()
+ }
+}
+
+impl<I> Location for Partial<I>
+where
+ I: Location,
+{
+ #[inline(always)]
+ fn location(&self) -> usize {
+ self.input.location()
+ }
+}
+
+/// Marks the input as being the complete buffer or a partial buffer for streaming input
+///
+/// See [`Partial`] for marking a presumed complete buffer type as a streaming buffer.
+pub trait StreamIsPartial: Sized {
+ /// Whether the stream is currently partial or complete
+ type PartialState;
+
+ /// Mark the stream is complete
+ #[must_use]
+ fn complete(&mut self) -> Self::PartialState;
+
+ /// Restore the stream back to its previous state
+ fn restore_partial(&mut self, state: Self::PartialState);
+
+ /// Report whether the [`Stream`] is can ever be incomplete
+ fn is_partial_supported() -> bool;
+
+ /// Report whether the [`Stream`] is currently incomplete
+ #[inline(always)]
+ fn is_partial(&self) -> bool {
+ Self::is_partial_supported()
+ }
+}
+
+impl<'a, T> StreamIsPartial for &'a [T] {
+ type PartialState = ();
+
+ fn complete(&mut self) -> Self::PartialState {}
+
+ fn restore_partial(&mut self, _state: Self::PartialState) {}
+
+ #[inline(always)]
+ fn is_partial_supported() -> bool {
+ false
+ }
+}
+
+impl<'a> StreamIsPartial for &'a str {
+ type PartialState = ();
+
+ fn complete(&mut self) -> Self::PartialState {
+ // Already complete
+ }
+
+ fn restore_partial(&mut self, _state: Self::PartialState) {}
+
+ #[inline(always)]
+ fn is_partial_supported() -> bool {
+ false
+ }
+}
+
+impl<'a> StreamIsPartial for &'a Bytes {
+ type PartialState = ();
+
+ fn complete(&mut self) -> Self::PartialState {
+ // Already complete
+ }
+
+ fn restore_partial(&mut self, _state: Self::PartialState) {}
+
+ #[inline(always)]
+ fn is_partial_supported() -> bool {
+ false
+ }
+}
+
+impl<'a> StreamIsPartial for &'a BStr {
+ type PartialState = ();
+
+ fn complete(&mut self) -> Self::PartialState {
+ // Already complete
+ }
+
+ fn restore_partial(&mut self, _state: Self::PartialState) {}
+
+ #[inline(always)]
+ fn is_partial_supported() -> bool {
+ false
+ }
+}
+
+impl<I> StreamIsPartial for (I, usize)
+where
+ I: StreamIsPartial,
+{
+ type PartialState = I::PartialState;
+
+ fn complete(&mut self) -> Self::PartialState {
+ self.0.complete()
+ }
+
+ fn restore_partial(&mut self, state: Self::PartialState) {
+ self.0.restore_partial(state);
+ }
+
+ #[inline(always)]
+ fn is_partial_supported() -> bool {
+ I::is_partial_supported()
+ }
+
+ #[inline(always)]
+ fn is_partial(&self) -> bool {
+ self.0.is_partial()
+ }
+}
+
+impl<I> StreamIsPartial for Located<I>
+where
+ I: StreamIsPartial,
+{
+ type PartialState = I::PartialState;
+
+ fn complete(&mut self) -> Self::PartialState {
+ self.input.complete()
+ }
+
+ fn restore_partial(&mut self, state: Self::PartialState) {
+ self.input.restore_partial(state);
+ }
+
+ #[inline(always)]
+ fn is_partial_supported() -> bool {
+ I::is_partial_supported()
+ }
+
+ #[inline(always)]
+ fn is_partial(&self) -> bool {
+ self.input.is_partial()
+ }
+}
+
+impl<I, S> StreamIsPartial for Stateful<I, S>
+where
+ I: StreamIsPartial,
+{
+ type PartialState = I::PartialState;
+
+ fn complete(&mut self) -> Self::PartialState {
+ self.input.complete()
+ }
+
+ fn restore_partial(&mut self, state: Self::PartialState) {
+ self.input.restore_partial(state);
+ }
+
+ #[inline(always)]
+ fn is_partial_supported() -> bool {
+ I::is_partial_supported()
+ }
+
+ #[inline(always)]
+ fn is_partial(&self) -> bool {
+ self.input.is_partial()
+ }
+}
+
+impl<I> StreamIsPartial for Partial<I>
+where
+ I: StreamIsPartial,
+{
+ type PartialState = bool;
+
+ fn complete(&mut self) -> Self::PartialState {
+ core::mem::replace(&mut self.partial, false)
+ }
+
+ fn restore_partial(&mut self, state: Self::PartialState) {
+ self.partial = state;
+ }
+
+ #[inline(always)]
+ fn is_partial_supported() -> bool {
+ true
+ }
+
+ #[inline(always)]
+ fn is_partial(&self) -> bool {
+ self.partial
+ }
+}
+
+/// Useful functions to calculate the offset between slices and show a hexdump of a slice
+pub trait Offset {
+ /// Offset between the first byte of self and the first byte of the argument
+ fn offset_to(&self, second: &Self) -> usize;
+}
+
+impl<'a, T> Offset for &'a [T] {
+ #[inline(always)]
+ fn offset_to(&self, second: &Self) -> usize {
+ (*self).offset_to(*second)
+ }
+}
+
+/// Convenience implementation to accept `&[T]` instead of `&&[T]` as above
+impl<T> Offset for [T] {
+ #[inline]
+ fn offset_to(&self, second: &Self) -> usize {
+ let fst = self.as_ptr();
+ let snd = second.as_ptr();
+
+ debug_assert!(
+ fst <= snd,
+ "`Offset::offset_to` only accepts slices of `self`"
+ );
+ snd as usize - fst as usize
+ }
+}
+
+impl<'a> Offset for &'a str {
+ #[inline(always)]
+ fn offset_to(&self, second: &Self) -> usize {
+ self.as_bytes().offset_to(second.as_bytes())
+ }
+}
+
+/// Convenience implementation to accept `&str` instead of `&&str` as above
+impl Offset for str {
+ #[inline(always)]
+ fn offset_to(&self, second: &Self) -> usize {
+ self.as_bytes().offset_to(second.as_bytes())
+ }
+}
+
+impl Offset for Bytes {
+ #[inline(always)]
+ fn offset_to(&self, second: &Self) -> usize {
+ self.as_bytes().offset_to(second.as_bytes())
+ }
+}
+
+impl<'a> Offset for &'a Bytes {
+ #[inline(always)]
+ fn offset_to(&self, second: &Self) -> usize {
+ self.as_bytes().offset_to(second.as_bytes())
+ }
+}
+
+impl Offset for BStr {
+ #[inline(always)]
+ fn offset_to(&self, second: &Self) -> usize {
+ self.as_bytes().offset_to(second.as_bytes())
+ }
+}
+
+impl<'a> Offset for &'a BStr {
+ #[inline(always)]
+ fn offset_to(&self, second: &Self) -> usize {
+ self.as_bytes().offset_to(second.as_bytes())
+ }
+}
+
+impl<I> Offset for (I, usize)
+where
+ I: Offset,
+{
+ #[inline(always)]
+ fn offset_to(&self, other: &Self) -> usize {
+ self.0.offset_to(&other.0) * 8 + other.1 - self.1
+ }
+}
+
+impl<I> Offset for Located<I>
+where
+ I: Offset,
+{
+ #[inline(always)]
+ fn offset_to(&self, other: &Self) -> usize {
+ self.input.offset_to(&other.input)
+ }
+}
+
+impl<I, S> Offset for Stateful<I, S>
+where
+ I: Offset,
+{
+ #[inline(always)]
+ fn offset_to(&self, other: &Self) -> usize {
+ self.input.offset_to(&other.input)
+ }
+}
+
+impl<I> Offset for Partial<I>
+where
+ I: Offset,
+{
+ #[inline(always)]
+ fn offset_to(&self, second: &Self) -> usize {
+ self.input.offset_to(&second.input)
+ }
+}
+
+/// Helper trait for types that can be viewed as a byte slice
+pub trait AsBytes {
+ /// Casts the input type to a byte slice
+ fn as_bytes(&self) -> &[u8];
+}
+
+impl<'a> AsBytes for &'a [u8] {
+ #[inline(always)]
+ fn as_bytes(&self) -> &[u8] {
+ self
+ }
+}
+
+impl<'a> AsBytes for &'a Bytes {
+ #[inline(always)]
+ fn as_bytes(&self) -> &[u8] {
+ (*self).as_bytes()
+ }
+}
+
+impl<I> AsBytes for Located<I>
+where
+ I: AsBytes,
+{
+ #[inline(always)]
+ fn as_bytes(&self) -> &[u8] {
+ self.input.as_bytes()
+ }
+}
+
+impl<I, S> AsBytes for Stateful<I, S>
+where
+ I: AsBytes,
+{
+ #[inline(always)]
+ fn as_bytes(&self) -> &[u8] {
+ self.input.as_bytes()
+ }
+}
+
+impl<I> AsBytes for Partial<I>
+where
+ I: AsBytes,
+{
+ #[inline(always)]
+ fn as_bytes(&self) -> &[u8] {
+ self.input.as_bytes()
+ }
+}
+
+/// Helper trait for types that can be viewed as a byte slice
+pub trait AsBStr {
+ /// Casts the input type to a byte slice
+ fn as_bstr(&self) -> &[u8];
+}
+
+impl<'a> AsBStr for &'a [u8] {
+ #[inline(always)]
+ fn as_bstr(&self) -> &[u8] {
+ self
+ }
+}
+
+impl<'a> AsBStr for &'a BStr {
+ #[inline(always)]
+ fn as_bstr(&self) -> &[u8] {
+ (*self).as_bytes()
+ }
+}
+
+impl<'a> AsBStr for &'a str {
+ #[inline(always)]
+ fn as_bstr(&self) -> &[u8] {
+ (*self).as_bytes()
+ }
+}
+
+impl<I> AsBStr for Located<I>
+where
+ I: AsBStr,
+{
+ #[inline(always)]
+ fn as_bstr(&self) -> &[u8] {
+ self.input.as_bstr()
+ }
+}
+
+impl<I, S> AsBStr for Stateful<I, S>
+where
+ I: AsBStr,
+{
+ #[inline(always)]
+ fn as_bstr(&self) -> &[u8] {
+ self.input.as_bstr()
+ }
+}
+
+impl<I> AsBStr for Partial<I>
+where
+ I: AsBStr,
+{
+ #[inline(always)]
+ fn as_bstr(&self) -> &[u8] {
+ self.input.as_bstr()
+ }
+}
+
+/// Result of [`Compare::compare`]
+#[derive(Debug, Eq, PartialEq)]
+pub enum CompareResult {
+ /// Comparison was successful
+ Ok,
+ /// We need more data to be sure
+ Incomplete,
+ /// Comparison failed
+ Error,
+}
+
+/// Abstracts comparison operations
+pub trait Compare<T> {
+ /// Compares self to another value for equality
+ fn compare(&self, t: T) -> CompareResult;
+ /// Compares self to another value for equality
+ /// independently of the case.
+ ///
+ /// Warning: for `&str`, the comparison is done
+ /// by lowercasing both strings and comparing
+ /// the result. This is a temporary solution until
+ /// a better one appears
+ fn compare_no_case(&self, t: T) -> CompareResult;
+}
+
+fn lowercase_byte(c: u8) -> u8 {
+ match c {
+ b'A'..=b'Z' => c - b'A' + b'a',
+ _ => c,
+ }
+}
+
+impl<'a, 'b> Compare<&'b [u8]> for &'a [u8] {
+ #[inline]
+ fn compare(&self, t: &'b [u8]) -> CompareResult {
+ let pos = self.iter().zip(t.iter()).position(|(a, b)| a != b);
+
+ match pos {
+ Some(_) => CompareResult::Error,
+ None => {
+ if self.len() >= t.len() {
+ CompareResult::Ok
+ } else {
+ CompareResult::Incomplete
+ }
+ }
+ }
+ }
+
+ #[inline]
+ fn compare_no_case(&self, t: &'b [u8]) -> CompareResult {
+ if self
+ .iter()
+ .zip(t)
+ .any(|(a, b)| lowercase_byte(*a) != lowercase_byte(*b))
+ {
+ CompareResult::Error
+ } else if self.len() < t.len() {
+ CompareResult::Incomplete
+ } else {
+ CompareResult::Ok
+ }
+ }
+}
+
+impl<'a, const LEN: usize> Compare<[u8; LEN]> for &'a [u8] {
+ #[inline(always)]
+ fn compare(&self, t: [u8; LEN]) -> CompareResult {
+ self.compare(&t[..])
+ }
+
+ #[inline(always)]
+ fn compare_no_case(&self, t: [u8; LEN]) -> CompareResult {
+ self.compare_no_case(&t[..])
+ }
+}
+
+impl<'a, 'b, const LEN: usize> Compare<&'b [u8; LEN]> for &'a [u8] {
+ #[inline(always)]
+ fn compare(&self, t: &'b [u8; LEN]) -> CompareResult {
+ self.compare(&t[..])
+ }
+
+ #[inline(always)]
+ fn compare_no_case(&self, t: &'b [u8; LEN]) -> CompareResult {
+ self.compare_no_case(&t[..])
+ }
+}
+
+impl<'a, 'b> Compare<&'b str> for &'a [u8] {
+ #[inline(always)]
+ fn compare(&self, t: &'b str) -> CompareResult {
+ self.compare(t.as_bytes())
+ }
+ #[inline(always)]
+ fn compare_no_case(&self, t: &'b str) -> CompareResult {
+ self.compare_no_case(t.as_bytes())
+ }
+}
+
+impl<'a, 'b> Compare<&'b str> for &'a str {
+ #[inline(always)]
+ fn compare(&self, t: &'b str) -> CompareResult {
+ self.as_bytes().compare(t.as_bytes())
+ }
+
+ //FIXME: this version is too simple and does not use the current locale
+ #[inline]
+ fn compare_no_case(&self, t: &'b str) -> CompareResult {
+ let pos = self
+ .chars()
+ .zip(t.chars())
+ .position(|(a, b)| a.to_lowercase().ne(b.to_lowercase()));
+
+ match pos {
+ Some(_) => CompareResult::Error,
+ None => {
+ if self.len() >= t.len() {
+ CompareResult::Ok
+ } else {
+ CompareResult::Incomplete
+ }
+ }
+ }
+ }
+}
+
+impl<'a, 'b> Compare<&'b [u8]> for &'a str {
+ #[inline(always)]
+ fn compare(&self, t: &'b [u8]) -> CompareResult {
+ AsBStr::as_bstr(self).compare(t)
+ }
+ #[inline(always)]
+ fn compare_no_case(&self, t: &'b [u8]) -> CompareResult {
+ AsBStr::as_bstr(self).compare_no_case(t)
+ }
+}
+
+impl<'a, T> Compare<T> for &'a Bytes
+where
+ &'a [u8]: Compare<T>,
+{
+ #[inline(always)]
+ fn compare(&self, t: T) -> CompareResult {
+ let bytes = (*self).as_bytes();
+ bytes.compare(t)
+ }
+
+ #[inline(always)]
+ fn compare_no_case(&self, t: T) -> CompareResult {
+ let bytes = (*self).as_bytes();
+ bytes.compare_no_case(t)
+ }
+}
+
+impl<'a, T> Compare<T> for &'a BStr
+where
+ &'a [u8]: Compare<T>,
+{
+ #[inline(always)]
+ fn compare(&self, t: T) -> CompareResult {
+ let bytes = (*self).as_bytes();
+ bytes.compare(t)
+ }
+
+ #[inline(always)]
+ fn compare_no_case(&self, t: T) -> CompareResult {
+ let bytes = (*self).as_bytes();
+ bytes.compare_no_case(t)
+ }
+}
+
+impl<I, U> Compare<U> for Located<I>
+where
+ I: Compare<U>,
+{
+ #[inline(always)]
+ fn compare(&self, other: U) -> CompareResult {
+ self.input.compare(other)
+ }
+
+ #[inline(always)]
+ fn compare_no_case(&self, other: U) -> CompareResult {
+ self.input.compare_no_case(other)
+ }
+}
+
+impl<I, S, U> Compare<U> for Stateful<I, S>
+where
+ I: Compare<U>,
+{
+ #[inline(always)]
+ fn compare(&self, other: U) -> CompareResult {
+ self.input.compare(other)
+ }
+
+ #[inline(always)]
+ fn compare_no_case(&self, other: U) -> CompareResult {
+ self.input.compare_no_case(other)
+ }
+}
+
+impl<I, T> Compare<T> for Partial<I>
+where
+ I: Compare<T>,
+{
+ #[inline(always)]
+ fn compare(&self, t: T) -> CompareResult {
+ self.input.compare(t)
+ }
+
+ #[inline(always)]
+ fn compare_no_case(&self, t: T) -> CompareResult {
+ self.input.compare_no_case(t)
+ }
+}
+
+/// Look for a slice in self
+pub trait FindSlice<T> {
+ /// Returns the offset of the slice if it is found
+ fn find_slice(&self, substr: T) -> Option<usize>;
+}
+
+impl<'i, 's> FindSlice<&'s [u8]> for &'i [u8] {
+ #[inline(always)]
+ fn find_slice(&self, substr: &'s [u8]) -> Option<usize> {
+ memmem(self, substr)
+ }
+}
+
+impl<'i> FindSlice<u8> for &'i [u8] {
+ #[inline(always)]
+ fn find_slice(&self, substr: u8) -> Option<usize> {
+ memchr(substr, self)
+ }
+}
+
+impl<'i, 's> FindSlice<&'s str> for &'i [u8] {
+ #[inline(always)]
+ fn find_slice(&self, substr: &'s str) -> Option<usize> {
+ self.find_slice(substr.as_bytes())
+ }
+}
+
+impl<'i, 's> FindSlice<&'s str> for &'i str {
+ #[inline(always)]
+ fn find_slice(&self, substr: &'s str) -> Option<usize> {
+ self.find(substr)
+ }
+}
+
+impl<'i> FindSlice<char> for &'i str {
+ #[inline(always)]
+ fn find_slice(&self, substr: char) -> Option<usize> {
+ self.find(substr)
+ }
+}
+
+impl<'i, S> FindSlice<S> for &'i Bytes
+where
+ &'i [u8]: FindSlice<S>,
+{
+ #[inline(always)]
+ fn find_slice(&self, substr: S) -> Option<usize> {
+ let bytes = (*self).as_bytes();
+ let offset = bytes.find_slice(substr);
+ offset
+ }
+}
+
+impl<'i, S> FindSlice<S> for &'i BStr
+where
+ &'i [u8]: FindSlice<S>,
+{
+ #[inline(always)]
+ fn find_slice(&self, substr: S) -> Option<usize> {
+ let bytes = (*self).as_bytes();
+ let offset = bytes.find_slice(substr);
+ offset
+ }
+}
+
+impl<I, T> FindSlice<T> for Located<I>
+where
+ I: FindSlice<T>,
+{
+ #[inline(always)]
+ fn find_slice(&self, substr: T) -> Option<usize> {
+ self.input.find_slice(substr)
+ }
+}
+
+impl<I, S, T> FindSlice<T> for Stateful<I, S>
+where
+ I: FindSlice<T>,
+{
+ #[inline(always)]
+ fn find_slice(&self, substr: T) -> Option<usize> {
+ self.input.find_slice(substr)
+ }
+}
+
+impl<I, T> FindSlice<T> for Partial<I>
+where
+ I: FindSlice<T>,
+{
+ #[inline(always)]
+ fn find_slice(&self, substr: T) -> Option<usize> {
+ self.input.find_slice(substr)
+ }
+}
+
+/// Used to integrate `str`'s `parse()` method
+pub trait ParseSlice<R> {
+ /// Succeeds if `parse()` succeededThe
+ ///
+ /// The byte slice implementation will first convert it to a `&str`, then apply the `parse()`
+ /// function
+ fn parse_slice(&self) -> Option<R>;
+}
+
+impl<'a, R: FromStr> ParseSlice<R> for &'a [u8] {
+ #[inline(always)]
+ fn parse_slice(&self) -> Option<R> {
+ from_utf8(self).ok().and_then(|s| s.parse().ok())
+ }
+}
+
+impl<'a, R: FromStr> ParseSlice<R> for &'a str {
+ #[inline(always)]
+ fn parse_slice(&self) -> Option<R> {
+ self.parse().ok()
+ }
+}
+
+/// Convert a `Stream` into an appropriate `Output` type
+pub trait UpdateSlice: Stream {
+ /// Convert an `Output` type to be used as `Stream`
+ fn update_slice(self, inner: Self::Slice) -> Self;
+}
+
+impl<'a, T> UpdateSlice for &'a [T]
+where
+ T: Clone + crate::lib::std::fmt::Debug,
+{
+ #[inline(always)]
+ fn update_slice(self, inner: Self::Slice) -> Self {
+ inner
+ }
+}
+
+impl<'a> UpdateSlice for &'a str {
+ #[inline(always)]
+ fn update_slice(self, inner: Self::Slice) -> Self {
+ inner
+ }
+}
+
+impl<'a> UpdateSlice for &'a Bytes {
+ #[inline(always)]
+ fn update_slice(self, inner: Self::Slice) -> Self {
+ Bytes::new(inner)
+ }
+}
+
+impl<'a> UpdateSlice for &'a BStr {
+ #[inline(always)]
+ fn update_slice(self, inner: Self::Slice) -> Self {
+ BStr::new(inner)
+ }
+}
+
+impl<I> UpdateSlice for Located<I>
+where
+ I: UpdateSlice,
+{
+ #[inline(always)]
+ fn update_slice(mut self, inner: Self::Slice) -> Self {
+ self.input = I::update_slice(self.input, inner);
+ self
+ }
+}
+
+impl<I, S> UpdateSlice for Stateful<I, S>
+where
+ I: UpdateSlice,
+ S: Clone + crate::lib::std::fmt::Debug,
+{
+ #[inline(always)]
+ fn update_slice(mut self, inner: Self::Slice) -> Self {
+ self.input = I::update_slice(self.input, inner);
+ self
+ }
+}
+
+impl<I> UpdateSlice for Partial<I>
+where
+ I: UpdateSlice,
+{
+ #[inline(always)]
+ fn update_slice(self, inner: Self::Slice) -> Self {
+ Partial {
+ input: I::update_slice(self.input, inner),
+ partial: self.partial,
+ }
+ }
+}
+
+/// A range bounded inclusively for counting parses performed
+#[derive(PartialEq, Eq)]
+pub struct Range {
+ pub(crate) start_inclusive: usize,
+ pub(crate) end_inclusive: Option<usize>,
+}
+
+impl Range {
+ #[inline(always)]
+ fn raw(start_inclusive: usize, end_inclusive: Option<usize>) -> Self {
+ Self {
+ start_inclusive,
+ end_inclusive,
+ }
+ }
+}
+
+impl crate::lib::std::ops::RangeBounds<usize> for Range {
+ #[inline(always)]
+ fn start_bound(&self) -> crate::lib::std::ops::Bound<&usize> {
+ crate::lib::std::ops::Bound::Included(&self.start_inclusive)
+ }
+
+ #[inline(always)]
+ fn end_bound(&self) -> crate::lib::std::ops::Bound<&usize> {
+ if let Some(end_inclusive) = &self.end_inclusive {
+ crate::lib::std::ops::Bound::Included(end_inclusive)
+ } else {
+ crate::lib::std::ops::Bound::Unbounded
+ }
+ }
+}
+
+impl From<usize> for Range {
+ #[inline(always)]
+ fn from(fixed: usize) -> Self {
+ (fixed..=fixed).into()
+ }
+}
+
+impl From<crate::lib::std::ops::Range<usize>> for Range {
+ #[inline(always)]
+ fn from(range: crate::lib::std::ops::Range<usize>) -> Self {
+ let start_inclusive = range.start;
+ let end_inclusive = Some(range.end.saturating_sub(1));
+ Self::raw(start_inclusive, end_inclusive)
+ }
+}
+
+impl From<crate::lib::std::ops::RangeFull> for Range {
+ #[inline(always)]
+ fn from(_: crate::lib::std::ops::RangeFull) -> Self {
+ let start_inclusive = 0;
+ let end_inclusive = None;
+ Self::raw(start_inclusive, end_inclusive)
+ }
+}
+
+impl From<crate::lib::std::ops::RangeFrom<usize>> for Range {
+ #[inline(always)]
+ fn from(range: crate::lib::std::ops::RangeFrom<usize>) -> Self {
+ let start_inclusive = range.start;
+ let end_inclusive = None;
+ Self::raw(start_inclusive, end_inclusive)
+ }
+}
+
+impl From<crate::lib::std::ops::RangeTo<usize>> for Range {
+ #[inline(always)]
+ fn from(range: crate::lib::std::ops::RangeTo<usize>) -> Self {
+ let start_inclusive = 0;
+ let end_inclusive = Some(range.end.saturating_sub(1));
+ Self::raw(start_inclusive, end_inclusive)
+ }
+}
+
+impl From<crate::lib::std::ops::RangeInclusive<usize>> for Range {
+ #[inline(always)]
+ fn from(range: crate::lib::std::ops::RangeInclusive<usize>) -> Self {
+ let start_inclusive = *range.start();
+ let end_inclusive = Some(*range.end());
+ Self::raw(start_inclusive, end_inclusive)
+ }
+}
+
+impl From<crate::lib::std::ops::RangeToInclusive<usize>> for Range {
+ #[inline(always)]
+ fn from(range: crate::lib::std::ops::RangeToInclusive<usize>) -> Self {
+ let start_inclusive = 0;
+ let end_inclusive = Some(range.end);
+ Self::raw(start_inclusive, end_inclusive)
+ }
+}
+
+impl crate::lib::std::fmt::Display for Range {
+ fn fmt(&self, f: &mut crate::lib::std::fmt::Formatter<'_>) -> crate::lib::std::fmt::Result {
+ self.start_inclusive.fmt(f)?;
+ match self.end_inclusive {
+ Some(e) if e == self.start_inclusive => {}
+ Some(e) => {
+ "..=".fmt(f)?;
+ e.fmt(f)?;
+ }
+ None => {
+ "..".fmt(f)?;
+ }
+ }
+ Ok(())
+ }
+}
+
+impl crate::lib::std::fmt::Debug for Range {
+ fn fmt(&self, f: &mut crate::lib::std::fmt::Formatter<'_>) -> crate::lib::std::fmt::Result {
+ write!(f, "{self}")
+ }
+}
+
+/// Abstracts something which can extend an `Extend`.
+/// Used to build modified input slices in `escaped_transform`
+pub trait Accumulate<T>: Sized {
+ /// Create a new `Extend` of the correct type
+ fn initial(capacity: Option<usize>) -> Self;
+ /// Accumulate the input into an accumulator
+ fn accumulate(&mut self, acc: T);
+}
+
+impl<T> Accumulate<T> for () {
+ #[inline(always)]
+ fn initial(_capacity: Option<usize>) -> Self {}
+ #[inline(always)]
+ fn accumulate(&mut self, _acc: T) {}
+}
+
+impl<T> Accumulate<T> for usize {
+ #[inline(always)]
+ fn initial(_capacity: Option<usize>) -> Self {
+ 0
+ }
+ #[inline(always)]
+ fn accumulate(&mut self, _acc: T) {
+ *self += 1;
+ }
+}
+
+#[cfg(feature = "alloc")]
+impl<T> Accumulate<T> for Vec<T> {
+ #[inline(always)]
+ fn initial(capacity: Option<usize>) -> Self {
+ match capacity {
+ Some(capacity) => Vec::with_capacity(clamp_capacity::<T>(capacity)),
+ None => Vec::new(),
+ }
+ }
+ #[inline(always)]
+ fn accumulate(&mut self, acc: T) {
+ self.push(acc);
+ }
+}
+
+#[cfg(feature = "alloc")]
+impl<'i, T: Clone> Accumulate<&'i [T]> for Vec<T> {
+ #[inline(always)]
+ fn initial(capacity: Option<usize>) -> Self {
+ match capacity {
+ Some(capacity) => Vec::with_capacity(clamp_capacity::<T>(capacity)),
+ None => Vec::new(),
+ }
+ }
+ #[inline(always)]
+ fn accumulate(&mut self, acc: &'i [T]) {
+ self.extend(acc.iter().cloned());
+ }
+}
+
+#[cfg(feature = "alloc")]
+impl Accumulate<char> for String {
+ #[inline(always)]
+ fn initial(capacity: Option<usize>) -> Self {
+ match capacity {
+ Some(capacity) => String::with_capacity(clamp_capacity::<char>(capacity)),
+ None => String::new(),
+ }
+ }
+ #[inline(always)]
+ fn accumulate(&mut self, acc: char) {
+ self.push(acc);
+ }
+}
+
+#[cfg(feature = "alloc")]
+impl<'i> Accumulate<&'i str> for String {
+ #[inline(always)]
+ fn initial(capacity: Option<usize>) -> Self {
+ match capacity {
+ Some(capacity) => String::with_capacity(clamp_capacity::<char>(capacity)),
+ None => String::new(),
+ }
+ }
+ #[inline(always)]
+ fn accumulate(&mut self, acc: &'i str) {
+ self.push_str(acc);
+ }
+}
+
+#[cfg(feature = "alloc")]
+impl<K, V> Accumulate<(K, V)> for BTreeMap<K, V>
+where
+ K: crate::lib::std::cmp::Ord,
+{
+ #[inline(always)]
+ fn initial(_capacity: Option<usize>) -> Self {
+ BTreeMap::new()
+ }
+ #[inline(always)]
+ fn accumulate(&mut self, (key, value): (K, V)) {
+ self.insert(key, value);
+ }
+}
+
+#[cfg(feature = "std")]
+impl<K, V> Accumulate<(K, V)> for HashMap<K, V>
+where
+ K: crate::lib::std::cmp::Eq + crate::lib::std::hash::Hash,
+{
+ #[inline(always)]
+ fn initial(capacity: Option<usize>) -> Self {
+ match capacity {
+ Some(capacity) => HashMap::with_capacity(clamp_capacity::<(K, V)>(capacity)),
+ None => HashMap::new(),
+ }
+ }
+ #[inline(always)]
+ fn accumulate(&mut self, (key, value): (K, V)) {
+ self.insert(key, value);
+ }
+}
+
+#[cfg(feature = "alloc")]
+#[inline]
+pub(crate) fn clamp_capacity<T>(capacity: usize) -> usize {
+ /// Don't pre-allocate more than 64KiB when calling `Vec::with_capacity`.
+ ///
+ /// Pre-allocating memory is a nice optimization but count fields can't
+ /// always be trusted. We should clamp initial capacities to some reasonable
+ /// amount. This reduces the risk of a bogus count value triggering a panic
+ /// due to an OOM error.
+ ///
+ /// This does not affect correctness. `winnow` will always read the full number
+ /// of elements regardless of the capacity cap.
+ const MAX_INITIAL_CAPACITY_BYTES: usize = 65536;
+
+ let max_initial_capacity =
+ MAX_INITIAL_CAPACITY_BYTES / crate::lib::std::mem::size_of::<T>().max(1);
+ capacity.min(max_initial_capacity)
+}
+
+/// Helper trait to convert numbers to usize.
+///
+/// By default, usize implements `From<u8>` and `From<u16>` but not
+/// `From<u32>` and `From<u64>` because that would be invalid on some
+/// platforms. This trait implements the conversion for platforms
+/// with 32 and 64 bits pointer platforms
+pub trait ToUsize {
+ /// converts self to usize
+ fn to_usize(&self) -> usize;
+}
+
+impl ToUsize for u8 {
+ #[inline(always)]
+ fn to_usize(&self) -> usize {
+ *self as usize
+ }
+}
+
+impl ToUsize for u16 {
+ #[inline(always)]
+ fn to_usize(&self) -> usize {
+ *self as usize
+ }
+}
+
+impl ToUsize for usize {
+ #[inline(always)]
+ fn to_usize(&self) -> usize {
+ *self
+ }
+}
+
+#[cfg(any(target_pointer_width = "32", target_pointer_width = "64"))]
+impl ToUsize for u32 {
+ #[inline(always)]
+ fn to_usize(&self) -> usize {
+ *self as usize
+ }
+}
+
+#[cfg(target_pointer_width = "64")]
+impl ToUsize for u64 {
+ #[inline(always)]
+ fn to_usize(&self) -> usize {
+ *self as usize
+ }
+}
+
+/// Transforms a token into a char for basic string parsing
+#[allow(clippy::len_without_is_empty)]
+#[allow(clippy::wrong_self_convention)]
+pub trait AsChar {
+ /// Makes a char from self
+ ///
+ /// # Example
+ ///
+ /// ```
+ /// use winnow::stream::AsChar as _;
+ ///
+ /// assert_eq!('a'.as_char(), 'a');
+ /// assert_eq!(u8::MAX.as_char(), std::char::from_u32(u8::MAX as u32).unwrap());
+ /// ```
+ fn as_char(self) -> char;
+
+ /// Tests that self is an alphabetic character
+ ///
+ /// **Warning:** for `&str` it recognizes alphabetic
+ /// characters outside of the 52 ASCII letters
+ fn is_alpha(self) -> bool;
+
+ /// Tests that self is an alphabetic character
+ /// or a decimal digit
+ fn is_alphanum(self) -> bool;
+ /// Tests that self is a decimal digit
+ fn is_dec_digit(self) -> bool;
+ /// Tests that self is an hex digit
+ fn is_hex_digit(self) -> bool;
+ /// Tests that self is an octal digit
+ fn is_oct_digit(self) -> bool;
+ /// Gets the len in bytes for self
+ fn len(self) -> usize;
+ /// Tests that self is ASCII space or tab
+ fn is_space(self) -> bool;
+ /// Tests if byte is ASCII newline: \n
+ fn is_newline(self) -> bool;
+}
+
+impl AsChar for u8 {
+ #[inline(always)]
+ fn as_char(self) -> char {
+ self as char
+ }
+ #[inline]
+ fn is_alpha(self) -> bool {
+ matches!(self, 0x41..=0x5A | 0x61..=0x7A)
+ }
+ #[inline]
+ fn is_alphanum(self) -> bool {
+ self.is_alpha() || self.is_dec_digit()
+ }
+ #[inline]
+ fn is_dec_digit(self) -> bool {
+ matches!(self, 0x30..=0x39)
+ }
+ #[inline]
+ fn is_hex_digit(self) -> bool {
+ matches!(self, 0x30..=0x39 | 0x41..=0x46 | 0x61..=0x66)
+ }
+ #[inline]
+ fn is_oct_digit(self) -> bool {
+ matches!(self, 0x30..=0x37)
+ }
+ #[inline]
+ fn len(self) -> usize {
+ 1
+ }
+ #[inline]
+ fn is_space(self) -> bool {
+ self == b' ' || self == b'\t'
+ }
+ #[inline]
+ fn is_newline(self) -> bool {
+ self == b'\n'
+ }
+}
+impl<'a> AsChar for &'a u8 {
+ #[inline(always)]
+ fn as_char(self) -> char {
+ *self as char
+ }
+ #[inline]
+ fn is_alpha(self) -> bool {
+ matches!(*self, 0x41..=0x5A | 0x61..=0x7A)
+ }
+ #[inline]
+ fn is_alphanum(self) -> bool {
+ self.is_alpha() || self.is_dec_digit()
+ }
+ #[inline]
+ fn is_dec_digit(self) -> bool {
+ matches!(*self, 0x30..=0x39)
+ }
+ #[inline]
+ fn is_hex_digit(self) -> bool {
+ matches!(*self, 0x30..=0x39 | 0x41..=0x46 | 0x61..=0x66)
+ }
+ #[inline]
+ fn is_oct_digit(self) -> bool {
+ matches!(*self, 0x30..=0x37)
+ }
+ #[inline]
+ fn len(self) -> usize {
+ 1
+ }
+ #[inline]
+ fn is_space(self) -> bool {
+ *self == b' ' || *self == b'\t'
+ }
+ #[inline]
+ fn is_newline(self) -> bool {
+ *self == b'\n'
+ }
+}
+
+impl AsChar for char {
+ #[inline(always)]
+ fn as_char(self) -> char {
+ self
+ }
+ #[inline]
+ fn is_alpha(self) -> bool {
+ self.is_ascii_alphabetic()
+ }
+ #[inline]
+ fn is_alphanum(self) -> bool {
+ self.is_alpha() || self.is_dec_digit()
+ }
+ #[inline]
+ fn is_dec_digit(self) -> bool {
+ self.is_ascii_digit()
+ }
+ #[inline]
+ fn is_hex_digit(self) -> bool {
+ self.is_ascii_hexdigit()
+ }
+ #[inline]
+ fn is_oct_digit(self) -> bool {
+ self.is_digit(8)
+ }
+ #[inline]
+ fn len(self) -> usize {
+ self.len_utf8()
+ }
+ #[inline]
+ fn is_space(self) -> bool {
+ self == ' ' || self == '\t'
+ }
+ #[inline]
+ fn is_newline(self) -> bool {
+ self == '\n'
+ }
+}
+
+impl<'a> AsChar for &'a char {
+ #[inline(always)]
+ fn as_char(self) -> char {
+ *self
+ }
+ #[inline]
+ fn is_alpha(self) -> bool {
+ self.is_ascii_alphabetic()
+ }
+ #[inline]
+ fn is_alphanum(self) -> bool {
+ self.is_alpha() || self.is_dec_digit()
+ }
+ #[inline]
+ fn is_dec_digit(self) -> bool {
+ self.is_ascii_digit()
+ }
+ #[inline]
+ fn is_hex_digit(self) -> bool {
+ self.is_ascii_hexdigit()
+ }
+ #[inline]
+ fn is_oct_digit(self) -> bool {
+ self.is_digit(8)
+ }
+ #[inline]
+ fn len(self) -> usize {
+ self.len_utf8()
+ }
+ #[inline]
+ fn is_space(self) -> bool {
+ *self == ' ' || *self == '\t'
+ }
+ #[inline]
+ fn is_newline(self) -> bool {
+ *self == '\n'
+ }
+}
+
+/// Check if a token in in a set of possible tokens
+///
+/// This is generally implemented on patterns that a token may match and supports `u8` and `char`
+/// tokens along with the following patterns
+/// - `b'c'` and `'c'`
+/// - `b""` and `""`
+/// - `|c| true`
+/// - `b'a'..=b'z'`, `'a'..='z'` (etc for each [range type][std::ops])
+/// - `(pattern1, pattern2, ...)`
+///
+/// # Example
+///
+/// For example, you could implement `hex_digit0` as:
+/// ```
+/// # use winnow::prelude::*;
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error};
+/// # use winnow::token::take_while;
+/// fn hex_digit1(input: &str) -> IResult<&str, &str> {
+/// take_while(1.., ('a'..='f', 'A'..='F', '0'..='9')).parse_next(input)
+/// }
+///
+/// assert_eq!(hex_digit1("21cZ"), Ok(("Z", "21c")));
+/// assert_eq!(hex_digit1("H2"), Err(ErrMode::Backtrack(Error::new("H2", ErrorKind::Slice))));
+/// assert_eq!(hex_digit1(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Slice))));
+/// ```
+pub trait ContainsToken<T> {
+ /// Returns true if self contains the token
+ fn contains_token(&self, token: T) -> bool;
+}
+
+impl ContainsToken<u8> for u8 {
+ #[inline(always)]
+ fn contains_token(&self, token: u8) -> bool {
+ *self == token
+ }
+}
+
+impl<'a> ContainsToken<&'a u8> for u8 {
+ #[inline(always)]
+ fn contains_token(&self, token: &u8) -> bool {
+ self.contains_token(*token)
+ }
+}
+
+impl ContainsToken<char> for u8 {
+ #[inline(always)]
+ fn contains_token(&self, token: char) -> bool {
+ self.as_char() == token
+ }
+}
+
+impl<'a> ContainsToken<&'a char> for u8 {
+ #[inline(always)]
+ fn contains_token(&self, token: &char) -> bool {
+ self.contains_token(*token)
+ }
+}
+
+impl<C: AsChar> ContainsToken<C> for char {
+ #[inline(always)]
+ fn contains_token(&self, token: C) -> bool {
+ *self == token.as_char()
+ }
+}
+
+impl<C: AsChar, F: Fn(C) -> bool> ContainsToken<C> for F {
+ #[inline(always)]
+ fn contains_token(&self, token: C) -> bool {
+ self(token)
+ }
+}
+
+impl<C1: AsChar, C2: AsChar + Clone> ContainsToken<C1> for crate::lib::std::ops::Range<C2> {
+ #[inline(always)]
+ fn contains_token(&self, token: C1) -> bool {
+ let start = self.start.clone().as_char();
+ let end = self.end.clone().as_char();
+ (start..end).contains(&token.as_char())
+ }
+}
+
+impl<C1: AsChar, C2: AsChar + Clone> ContainsToken<C1>
+ for crate::lib::std::ops::RangeInclusive<C2>
+{
+ #[inline(always)]
+ fn contains_token(&self, token: C1) -> bool {
+ let start = self.start().clone().as_char();
+ let end = self.end().clone().as_char();
+ (start..=end).contains(&token.as_char())
+ }
+}
+
+impl<C1: AsChar, C2: AsChar + Clone> ContainsToken<C1> for crate::lib::std::ops::RangeFrom<C2> {
+ #[inline(always)]
+ fn contains_token(&self, token: C1) -> bool {
+ let start = self.start.clone().as_char();
+ (start..).contains(&token.as_char())
+ }
+}
+
+impl<C1: AsChar, C2: AsChar + Clone> ContainsToken<C1> for crate::lib::std::ops::RangeTo<C2> {
+ #[inline(always)]
+ fn contains_token(&self, token: C1) -> bool {
+ let end = self.end.clone().as_char();
+ (..end).contains(&token.as_char())
+ }
+}
+
+impl<C1: AsChar, C2: AsChar + Clone> ContainsToken<C1>
+ for crate::lib::std::ops::RangeToInclusive<C2>
+{
+ #[inline(always)]
+ fn contains_token(&self, token: C1) -> bool {
+ let end = self.end.clone().as_char();
+ (..=end).contains(&token.as_char())
+ }
+}
+
+impl<C1: AsChar> ContainsToken<C1> for crate::lib::std::ops::RangeFull {
+ #[inline(always)]
+ fn contains_token(&self, _token: C1) -> bool {
+ true
+ }
+}
+
+impl<C: AsChar> ContainsToken<C> for &'_ [u8] {
+ #[inline]
+ fn contains_token(&self, token: C) -> bool {
+ let token = token.as_char();
+ self.iter().any(|t| t.as_char() == token)
+ }
+}
+
+impl<C: AsChar> ContainsToken<C> for &'_ [char] {
+ #[inline]
+ fn contains_token(&self, token: C) -> bool {
+ let token = token.as_char();
+ self.iter().any(|t| *t == token)
+ }
+}
+
+impl<const LEN: usize, C: AsChar> ContainsToken<C> for &'_ [u8; LEN] {
+ #[inline]
+ fn contains_token(&self, token: C) -> bool {
+ let token = token.as_char();
+ self.iter().any(|t| t.as_char() == token)
+ }
+}
+
+impl<const LEN: usize, C: AsChar> ContainsToken<C> for &'_ [char; LEN] {
+ #[inline]
+ fn contains_token(&self, token: C) -> bool {
+ let token = token.as_char();
+ self.iter().any(|t| *t == token)
+ }
+}
+
+impl<const LEN: usize, C: AsChar> ContainsToken<C> for [u8; LEN] {
+ #[inline]
+ fn contains_token(&self, token: C) -> bool {
+ let token = token.as_char();
+ self.iter().any(|t| t.as_char() == token)
+ }
+}
+
+impl<const LEN: usize, C: AsChar> ContainsToken<C> for [char; LEN] {
+ #[inline]
+ fn contains_token(&self, token: C) -> bool {
+ let token = token.as_char();
+ self.iter().any(|t| *t == token)
+ }
+}
+
+impl<C: AsChar> ContainsToken<C> for &'_ str {
+ #[inline(always)]
+ fn contains_token(&self, token: C) -> bool {
+ let token = token.as_char();
+ self.chars().any(|i| i == token)
+ }
+}
+
+impl<T> ContainsToken<T> for () {
+ #[inline(always)]
+ fn contains_token(&self, _token: T) -> bool {
+ false
+ }
+}
+
+macro_rules! impl_contains_token_for_tuple {
+ ($($haystack:ident),+) => (
+ #[allow(non_snake_case)]
+ impl<T, $($haystack),+> ContainsToken<T> for ($($haystack),+,)
+ where
+ T: Clone,
+ $($haystack: ContainsToken<T>),+
+ {
+ #[inline]
+ fn contains_token(&self, token: T) -> bool {
+ let ($(ref $haystack),+,) = *self;
+ $($haystack.contains_token(token.clone()) || )+ false
+ }
+ }
+ )
+}
+
+macro_rules! impl_contains_token_for_tuples {
+ ($haystack1:ident, $($haystack:ident),+) => {
+ impl_contains_token_for_tuples!(__impl $haystack1; $($haystack),+);
+ };
+ (__impl $($haystack:ident),+; $haystack1:ident $(,$haystack2:ident)*) => {
+ impl_contains_token_for_tuple!($($haystack),+);
+ impl_contains_token_for_tuples!(__impl $($haystack),+, $haystack1; $($haystack2),*);
+ };
+ (__impl $($haystack:ident),+;) => {
+ impl_contains_token_for_tuple!($($haystack),+);
+ }
+}
+
+impl_contains_token_for_tuples!(
+ F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, F16, F17, F18, F19, F20, F21
+);
+
+/// Looks for the first element of the input type for which the condition returns true,
+/// and returns the input up to this position.
+///
+/// *Partial version*: If no element is found matching the condition, this will return `Incomplete`
+pub(crate) fn split_at_offset_partial<P, I: Stream, E: ParseError<I>>(
+ input: &I,
+ predicate: P,
+) -> IResult<I, <I as Stream>::Slice, E>
+where
+ P: Fn(I::Token) -> bool,
+{
+ let offset = input
+ .offset_for(predicate)
+ .ok_or_else(|| ErrMode::Incomplete(Needed::new(1)))?;
+ Ok(input.next_slice(offset))
+}
+
+/// Looks for the first element of the input type for which the condition returns true
+/// and returns the input up to this position.
+///
+/// Fails if the produced slice is empty.
+///
+/// *Partial version*: If no element is found matching the condition, this will return `Incomplete`
+pub(crate) fn split_at_offset1_partial<P, I: Stream, E: ParseError<I>>(
+ input: &I,
+ predicate: P,
+ e: ErrorKind,
+) -> IResult<I, <I as Stream>::Slice, E>
+where
+ P: Fn(I::Token) -> bool,
+{
+ let offset = input
+ .offset_for(predicate)
+ .ok_or_else(|| ErrMode::Incomplete(Needed::new(1)))?;
+ if offset == 0 {
+ Err(ErrMode::from_error_kind(input.clone(), e))
+ } else {
+ Ok(input.next_slice(offset))
+ }
+}
+
+/// Looks for the first element of the input type for which the condition returns true,
+/// and returns the input up to this position.
+///
+/// *Complete version*: If no element is found matching the condition, this will return the whole input
+pub(crate) fn split_at_offset_complete<P, I: Stream, E: ParseError<I>>(
+ input: &I,
+ predicate: P,
+) -> IResult<I, <I as Stream>::Slice, E>
+where
+ P: Fn(I::Token) -> bool,
+{
+ let offset = input
+ .offset_for(predicate)
+ .unwrap_or_else(|| input.eof_offset());
+ Ok(input.next_slice(offset))
+}
+
+/// Looks for the first element of the input type for which the condition returns true
+/// and returns the input up to this position.
+///
+/// Fails if the produced slice is empty.
+///
+/// *Complete version*: If no element is found matching the condition, this will return the whole input
+pub(crate) fn split_at_offset1_complete<P, I: Stream, E: ParseError<I>>(
+ input: &I,
+ predicate: P,
+ e: ErrorKind,
+) -> IResult<I, <I as Stream>::Slice, E>
+where
+ P: Fn(I::Token) -> bool,
+{
+ let offset = input
+ .offset_for(predicate)
+ .unwrap_or_else(|| input.eof_offset());
+ if offset == 0 {
+ Err(ErrMode::from_error_kind(input.clone(), e))
+ } else {
+ Ok(input.next_slice(offset))
+ }
+}
+
+#[cfg(feature = "simd")]
+#[inline(always)]
+fn memchr(token: u8, slice: &[u8]) -> Option<usize> {
+ memchr::memchr(token, slice)
+}
+
+#[cfg(not(feature = "simd"))]
+#[inline(always)]
+fn memchr(token: u8, slice: &[u8]) -> Option<usize> {
+ slice.iter().position(|t| *t == token)
+}
+
+#[cfg(feature = "simd")]
+#[inline(always)]
+fn memmem(slice: &[u8], tag: &[u8]) -> Option<usize> {
+ memchr::memmem::find(slice, tag)
+}
+
+#[cfg(not(feature = "simd"))]
+fn memmem(slice: &[u8], tag: &[u8]) -> Option<usize> {
+ for i in 0..slice.len() {
+ let subslice = &slice[i..];
+ if subslice.starts_with(tag) {
+ return Some(i);
+ }
+ }
+ None
+}
diff --git a/vendor/winnow-0.4.7/src/stream/tests.rs b/vendor/winnow-0.4.7/src/stream/tests.rs
new file mode 100644
index 000000000..de61df099
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/stream/tests.rs
@@ -0,0 +1,116 @@
+#[cfg(feature = "std")]
+use proptest::prelude::*;
+
+use super::*;
+
+#[test]
+fn test_offset_u8() {
+ let s = b"abcd123";
+ let a = &s[..];
+ let b = &a[2..];
+ let c = &a[..4];
+ let d = &a[3..5];
+ assert_eq!(a.offset_to(b), 2);
+ assert_eq!(a.offset_to(c), 0);
+ assert_eq!(a.offset_to(d), 3);
+}
+
+#[test]
+fn test_offset_str() {
+ let a = "abcřèÂßÇd123";
+ let b = &a[7..];
+ let c = &a[..5];
+ let d = &a[5..9];
+ assert_eq!(a.offset_to(b), 7);
+ assert_eq!(a.offset_to(c), 0);
+ assert_eq!(a.offset_to(d), 5);
+}
+
+#[test]
+#[cfg(feature = "alloc")]
+fn test_bit_stream_empty() {
+ let i = (&b""[..], 0);
+
+ let actual = i.iter_offsets().collect::<crate::lib::std::vec::Vec<_>>();
+ assert_eq!(actual, vec![]);
+
+ let actual = i.eof_offset();
+ assert_eq!(actual, 0);
+
+ let actual = i.next_token();
+ assert_eq!(actual, None);
+
+ let actual = i.offset_for(|b| b);
+ assert_eq!(actual, None);
+
+ let actual = i.offset_at(1);
+ assert_eq!(actual, Err(Needed::new(1)));
+
+ let (actual_input, actual_slice) = i.next_slice(0);
+ assert_eq!(actual_input, (&b""[..], 0));
+ assert_eq!(actual_slice, (&b""[..], 0, 0));
+}
+
+#[test]
+#[cfg(feature = "alloc")]
+fn test_bit_offset_empty() {
+ let i = (&b""[..], 0);
+
+ let actual = i.offset_to(&i);
+ assert_eq!(actual, 0);
+}
+
+#[cfg(feature = "std")]
+proptest! {
+ #[test]
+ #[cfg_attr(miri, ignore)] // See https://github.com/AltSysrq/proptest/issues/253
+ fn bit_stream(byte_len in 0..20usize, start in 0..160usize) {
+ bit_stream_inner(byte_len, start);
+ }
+}
+
+#[cfg(feature = "std")]
+fn bit_stream_inner(byte_len: usize, start: usize) {
+ let start = start.min(byte_len * 8);
+ let start_byte = start / 8;
+ let start_bit = start % 8;
+
+ let bytes = vec![0b1010_1010; byte_len];
+ let i = (&bytes[start_byte..], start_bit);
+
+ let mut curr_i = i;
+ let mut curr_offset = 0;
+ while let Some((next_i, _token)) = curr_i.next_token() {
+ let to_offset = i.offset_to(&curr_i);
+ assert_eq!(curr_offset, to_offset);
+
+ let (slice_i, _) = i.next_slice(curr_offset);
+ assert_eq!(curr_i, slice_i);
+
+ let at_offset = i.offset_at(curr_offset).unwrap();
+ assert_eq!(curr_offset, at_offset);
+
+ let eof_offset = curr_i.eof_offset();
+ let (next_eof_i, eof_slice) = curr_i.next_slice(eof_offset);
+ assert_eq!(next_eof_i, (&b""[..], 0));
+ let eof_slice_i = (eof_slice.0, eof_slice.1);
+ assert_eq!(eof_slice_i, curr_i);
+
+ curr_offset += 1;
+ curr_i = next_i;
+ }
+ assert_eq!(i.eof_offset(), curr_offset);
+}
+
+#[test]
+fn test_partial_complete() {
+ let mut i = Partial::new(&b""[..]);
+ assert!(Partial::<&[u8]>::is_partial_supported());
+
+ assert!(i.is_partial(), "incomplete by default");
+ let incomplete_state = i.complete();
+ assert!(!i.is_partial(), "the stream should be marked as complete");
+
+ i.restore_partial(incomplete_state);
+ assert!(i.is_partial(), "incomplete stream state should be restored");
+}
diff --git a/vendor/winnow-0.4.7/src/token/mod.rs b/vendor/winnow-0.4.7/src/token/mod.rs
new file mode 100644
index 000000000..6f99dfa8d
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/token/mod.rs
@@ -0,0 +1,1009 @@
+//! Parsers extracting tokens from the stream
+
+#[cfg(test)]
+mod tests;
+
+use crate::error::ErrMode;
+use crate::error::ErrorKind;
+use crate::error::Needed;
+use crate::error::ParseError;
+use crate::lib::std::result::Result::Ok;
+use crate::stream::Range;
+use crate::stream::{
+ split_at_offset1_complete, split_at_offset1_partial, split_at_offset_complete,
+ split_at_offset_partial, Compare, CompareResult, ContainsToken, FindSlice, SliceLen, Stream,
+};
+use crate::stream::{StreamIsPartial, ToUsize};
+use crate::trace::trace;
+use crate::IResult;
+use crate::Parser;
+
+/// Matches one token
+///
+/// *Complete version*: Will return an error if there's not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{token::any, error::ErrMode, error::{Error, ErrorKind}};
+/// # use winnow::prelude::*;
+/// fn parser(input: &str) -> IResult<&str, char> {
+/// any.parse_next(input)
+/// }
+///
+/// assert_eq!(parser("abc"), Ok(("bc",'a')));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Token))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{token::any, error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// assert_eq!(any::<_, Error<_>>.parse_next(Partial::new("abc")), Ok((Partial::new("bc"),'a')));
+/// assert_eq!(any::<_, Error<_>>.parse_next(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+#[doc(alias = "token")]
+pub fn any<I, E: ParseError<I>>(input: I) -> IResult<I, <I as Stream>::Token, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+{
+ trace("any", move |input: I| {
+ if <I as StreamIsPartial>::is_partial_supported() {
+ any_::<_, _, true>(input)
+ } else {
+ any_::<_, _, true>(input)
+ }
+ })
+ .parse_next(input)
+}
+
+fn any_<I, E: ParseError<I>, const PARTIAL: bool>(input: I) -> IResult<I, <I as Stream>::Token, E>
+where
+ I: StreamIsPartial,
+ I: Stream,
+{
+ input.next_token().ok_or_else(|| {
+ if PARTIAL && input.is_partial() {
+ ErrMode::Incomplete(Needed::new(1))
+ } else {
+ ErrMode::from_error_kind(input, ErrorKind::Token)
+ }
+ })
+}
+
+/// Recognizes a literal
+///
+/// The input data will be compared to the tag combinator's argument and will return the part of
+/// the input that matches the argument
+///
+/// It will return `Err(ErrMode::Backtrack(Error::new(_, ErrorKind::Tag)))` if the input doesn't match the pattern
+///
+/// **Note:** [`Parser`][crate::Parser] is implemented for strings and byte strings as a convenience (complete
+/// only)
+///
+/// # Example
+/// ```rust
+/// # use winnow::prelude::*;
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// use winnow::token::tag;
+///
+/// fn parser(s: &str) -> IResult<&str, &str> {
+/// "Hello".parse_next(s)
+/// }
+///
+/// assert_eq!(parser("Hello, World!"), Ok((", World!", "Hello")));
+/// assert_eq!(parser("Something"), Err(ErrMode::Backtrack(Error::new("Something", ErrorKind::Tag))));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Tag))));
+/// ```
+///
+/// ```rust
+/// # use winnow::prelude::*;
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::Partial;
+/// use winnow::token::tag;
+///
+/// fn parser(s: Partial<&str>) -> IResult<Partial<&str>, &str> {
+/// "Hello".parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new("Hello, World!")), Ok((Partial::new(", World!"), "Hello")));
+/// assert_eq!(parser(Partial::new("Something")), Err(ErrMode::Backtrack(Error::new(Partial::new("Something"), ErrorKind::Tag))));
+/// assert_eq!(parser(Partial::new("S")), Err(ErrMode::Backtrack(Error::new(Partial::new("S"), ErrorKind::Tag))));
+/// assert_eq!(parser(Partial::new("H")), Err(ErrMode::Incomplete(Needed::new(4))));
+/// ```
+#[inline(always)]
+#[doc(alias = "literal")]
+#[doc(alias = "bytes")]
+#[doc(alias = "just")]
+pub fn tag<T, I, Error: ParseError<I>>(tag: T) -> impl Parser<I, <I as Stream>::Slice, Error>
+where
+ I: StreamIsPartial,
+ I: Stream + Compare<T>,
+ T: SliceLen + Clone,
+{
+ trace("tag", move |i: I| {
+ let t = tag.clone();
+ if <I as StreamIsPartial>::is_partial_supported() {
+ tag_::<_, _, _, true>(i, t)
+ } else {
+ tag_::<_, _, _, false>(i, t)
+ }
+ })
+}
+
+fn tag_<T, I, Error: ParseError<I>, const PARTIAL: bool>(
+ i: I,
+ t: T,
+) -> IResult<I, <I as Stream>::Slice, Error>
+where
+ I: StreamIsPartial,
+ I: Stream + Compare<T>,
+ T: SliceLen,
+{
+ let tag_len = t.slice_len();
+ match i.compare(t) {
+ CompareResult::Ok => Ok(i.next_slice(tag_len)),
+ CompareResult::Incomplete if PARTIAL && i.is_partial() => {
+ Err(ErrMode::Incomplete(Needed::new(tag_len - i.eof_offset())))
+ }
+ CompareResult::Incomplete | CompareResult::Error => {
+ let e: ErrorKind = ErrorKind::Tag;
+ Err(ErrMode::from_error_kind(i, e))
+ }
+ }
+}
+
+/// Recognizes a case insensitive literal.
+///
+/// The input data will be compared to the tag combinator's argument and will return the part of
+/// the input that matches the argument with no regard to case.
+///
+/// It will return `Err(ErrMode::Backtrack(Error::new(_, ErrorKind::Tag)))` if the input doesn't match the pattern.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::token::tag_no_case;
+///
+/// fn parser(s: &str) -> IResult<&str, &str> {
+/// tag_no_case("hello").parse_next(s)
+/// }
+///
+/// assert_eq!(parser("Hello, World!"), Ok((", World!", "Hello")));
+/// assert_eq!(parser("hello, World!"), Ok((", World!", "hello")));
+/// assert_eq!(parser("HeLlO, World!"), Ok((", World!", "HeLlO")));
+/// assert_eq!(parser("Something"), Err(ErrMode::Backtrack(Error::new("Something", ErrorKind::Tag))));
+/// assert_eq!(parser(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Tag))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::token::tag_no_case;
+///
+/// fn parser(s: Partial<&str>) -> IResult<Partial<&str>, &str> {
+/// tag_no_case("hello").parse_next(s)
+/// }
+///
+/// assert_eq!(parser(Partial::new("Hello, World!")), Ok((Partial::new(", World!"), "Hello")));
+/// assert_eq!(parser(Partial::new("hello, World!")), Ok((Partial::new(", World!"), "hello")));
+/// assert_eq!(parser(Partial::new("HeLlO, World!")), Ok((Partial::new(", World!"), "HeLlO")));
+/// assert_eq!(parser(Partial::new("Something")), Err(ErrMode::Backtrack(Error::new(Partial::new("Something"), ErrorKind::Tag))));
+/// assert_eq!(parser(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(5))));
+/// ```
+#[inline(always)]
+#[doc(alias = "literal")]
+#[doc(alias = "bytes")]
+#[doc(alias = "just")]
+pub fn tag_no_case<T, I, Error: ParseError<I>>(
+ tag: T,
+) -> impl Parser<I, <I as Stream>::Slice, Error>
+where
+ I: StreamIsPartial,
+ I: Stream + Compare<T>,
+ T: SliceLen + Clone,
+{
+ trace("tag_no_case", move |i: I| {
+ let t = tag.clone();
+ if <I as StreamIsPartial>::is_partial_supported() {
+ tag_no_case_::<_, _, _, true>(i, t)
+ } else {
+ tag_no_case_::<_, _, _, false>(i, t)
+ }
+ })
+}
+
+fn tag_no_case_<T, I, Error: ParseError<I>, const PARTIAL: bool>(
+ i: I,
+ t: T,
+) -> IResult<I, <I as Stream>::Slice, Error>
+where
+ I: StreamIsPartial,
+ I: Stream + Compare<T>,
+ T: SliceLen,
+{
+ let tag_len = t.slice_len();
+
+ match (i).compare_no_case(t) {
+ CompareResult::Ok => Ok(i.next_slice(tag_len)),
+ CompareResult::Incomplete if PARTIAL && i.is_partial() => {
+ Err(ErrMode::Incomplete(Needed::new(tag_len - i.eof_offset())))
+ }
+ CompareResult::Incomplete | CompareResult::Error => {
+ let e: ErrorKind = ErrorKind::Tag;
+ Err(ErrMode::from_error_kind(i, e))
+ }
+ }
+}
+
+/// Recognize a token that matches the [pattern][ContainsToken]
+///
+/// **Note:** [`Parser`][crate::Parser] is implemented as a convenience (complete
+/// only) for
+/// - `u8`
+/// - `char`
+///
+/// *Complete version*: Will return an error if there's not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::prelude::*;
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error};
+/// # use winnow::token::one_of;
+/// assert_eq!(one_of::<_, _, Error<_>>("abc").parse_next("b"), Ok(("", 'b')));
+/// assert_eq!(one_of::<_, _, Error<_>>("a").parse_next("bc"), Err(ErrMode::Backtrack(Error::new("bc", ErrorKind::Verify))));
+/// assert_eq!(one_of::<_, _, Error<_>>("a").parse_next(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Token))));
+///
+/// fn parser_fn(i: &str) -> IResult<&str, char> {
+/// one_of(|c| c == 'a' || c == 'b').parse_next(i)
+/// }
+/// assert_eq!(parser_fn("abc"), Ok(("bc", 'a')));
+/// assert_eq!(parser_fn("cd"), Err(ErrMode::Backtrack(Error::new("cd", ErrorKind::Verify))));
+/// assert_eq!(parser_fn(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Token))));
+/// ```
+///
+/// ```
+/// # use winnow::prelude::*;
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::Partial;
+/// # use winnow::token::one_of;
+/// assert_eq!(one_of::<_, _, Error<_>>("abc").parse_next(Partial::new("b")), Ok((Partial::new(""), 'b')));
+/// assert_eq!(one_of::<_, _, Error<_>>("a").parse_next(Partial::new("bc")), Err(ErrMode::Backtrack(Error::new(Partial::new("bc"), ErrorKind::Verify))));
+/// assert_eq!(one_of::<_, _, Error<_>>("a").parse_next(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+///
+/// fn parser_fn(i: Partial<&str>) -> IResult<Partial<&str>, char> {
+/// one_of(|c| c == 'a' || c == 'b').parse_next(i)
+/// }
+/// assert_eq!(parser_fn(Partial::new("abc")), Ok((Partial::new("bc"), 'a')));
+/// assert_eq!(parser_fn(Partial::new("cd")), Err(ErrMode::Backtrack(Error::new(Partial::new("cd"), ErrorKind::Verify))));
+/// assert_eq!(parser_fn(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+#[doc(alias = "char")]
+#[doc(alias = "token")]
+#[doc(alias = "satisfy")]
+pub fn one_of<I, T, Error: ParseError<I>>(list: T) -> impl Parser<I, <I as Stream>::Token, Error>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: Copy,
+ T: ContainsToken<<I as Stream>::Token>,
+{
+ trace(
+ "one_of",
+ any.verify(move |t: &<I as Stream>::Token| list.contains_token(*t)),
+ )
+}
+
+/// Recognize a token that does not match the [pattern][ContainsToken]
+///
+/// *Complete version*: Will return an error if there's not enough input data.
+///
+/// *Partial version*: Will return `Err(winnow::error::ErrMode::Incomplete(_))` if there's not enough input data.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error};
+/// # use winnow::prelude::*;
+/// # use winnow::token::none_of;
+/// assert_eq!(none_of::<_, _, Error<_>>("abc").parse_next("z"), Ok(("", 'z')));
+/// assert_eq!(none_of::<_, _, Error<_>>("ab").parse_next("a"), Err(ErrMode::Backtrack(Error::new("a", ErrorKind::Verify))));
+/// assert_eq!(none_of::<_, _, Error<_>>("a").parse_next(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Token))));
+/// ```
+///
+/// ```
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// # use winnow::token::none_of;
+/// assert_eq!(none_of::<_, _, Error<_>>("abc").parse_next(Partial::new("z")), Ok((Partial::new(""), 'z')));
+/// assert_eq!(none_of::<_, _, Error<_>>("ab").parse_next(Partial::new("a")), Err(ErrMode::Backtrack(Error::new(Partial::new("a"), ErrorKind::Verify))));
+/// assert_eq!(none_of::<_, _, Error<_>>("a").parse_next(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn none_of<I, T, Error: ParseError<I>>(list: T) -> impl Parser<I, <I as Stream>::Token, Error>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ <I as Stream>::Token: Copy,
+ T: ContainsToken<<I as Stream>::Token>,
+{
+ trace(
+ "none_of",
+ any.verify(move |t: &<I as Stream>::Token| !list.contains_token(*t)),
+ )
+}
+
+/// Recognize the longest (m <= len <= n) input slice that matches the [pattern][ContainsToken]
+///
+/// It will return an `ErrMode::Backtrack(Error::new(_, ErrorKind::Slice))` if the pattern wasn't met or is out
+/// of range (m <= len <= n).
+///
+/// *Partial version* will return a `ErrMode::Incomplete(Needed::new(1))` if the pattern reaches the end of the input or is too short.
+///
+/// To recognize a series of tokens, use [`repeat`][crate::combinator::repeat] to [`Accumulate`][crate::stream::Accumulate] into a `()` and then [`Parser::recognize`][crate::Parser::recognize].
+///
+/// # Example
+///
+/// Zero or more tokens:
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::token::take_while;
+/// use winnow::stream::AsChar;
+///
+/// fn alpha(s: &[u8]) -> IResult<&[u8], &[u8]> {
+/// take_while(0.., AsChar::is_alpha).parse_next(s)
+/// }
+///
+/// assert_eq!(alpha(b"latin123"), Ok((&b"123"[..], &b"latin"[..])));
+/// assert_eq!(alpha(b"12345"), Ok((&b"12345"[..], &b""[..])));
+/// assert_eq!(alpha(b"latin"), Ok((&b""[..], &b"latin"[..])));
+/// assert_eq!(alpha(b""), Ok((&b""[..], &b""[..])));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::token::take_while;
+/// use winnow::stream::AsChar;
+///
+/// fn alpha(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+/// take_while(0.., AsChar::is_alpha).parse_next(s)
+/// }
+///
+/// assert_eq!(alpha(Partial::new(b"latin123")), Ok((Partial::new(&b"123"[..]), &b"latin"[..])));
+/// assert_eq!(alpha(Partial::new(b"12345")), Ok((Partial::new(&b"12345"[..]), &b""[..])));
+/// assert_eq!(alpha(Partial::new(b"latin")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// assert_eq!(alpha(Partial::new(b"")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+///
+/// One or more tokens:
+/// ```rust
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::token::take_while;
+/// use winnow::stream::AsChar;
+///
+/// fn alpha(s: &[u8]) -> IResult<&[u8], &[u8]> {
+/// take_while(1.., AsChar::is_alpha).parse_next(s)
+/// }
+///
+/// assert_eq!(alpha(b"latin123"), Ok((&b"123"[..], &b"latin"[..])));
+/// assert_eq!(alpha(b"latin"), Ok((&b""[..], &b"latin"[..])));
+/// assert_eq!(alpha(b"12345"), Err(ErrMode::Backtrack(Error::new(&b"12345"[..], ErrorKind::Slice))));
+///
+/// fn hex(s: &str) -> IResult<&str, &str> {
+/// take_while(1.., "1234567890ABCDEF").parse_next(s)
+/// }
+///
+/// assert_eq!(hex("123 and voila"), Ok((" and voila", "123")));
+/// assert_eq!(hex("DEADBEEF and others"), Ok((" and others", "DEADBEEF")));
+/// assert_eq!(hex("BADBABEsomething"), Ok(("something", "BADBABE")));
+/// assert_eq!(hex("D15EA5E"), Ok(("", "D15EA5E")));
+/// assert_eq!(hex(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::token::take_while;
+/// use winnow::stream::AsChar;
+///
+/// fn alpha(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+/// take_while(1.., AsChar::is_alpha).parse_next(s)
+/// }
+///
+/// assert_eq!(alpha(Partial::new(b"latin123")), Ok((Partial::new(&b"123"[..]), &b"latin"[..])));
+/// assert_eq!(alpha(Partial::new(b"latin")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// assert_eq!(alpha(Partial::new(b"12345")), Err(ErrMode::Backtrack(Error::new(Partial::new(&b"12345"[..]), ErrorKind::Slice))));
+///
+/// fn hex(s: Partial<&str>) -> IResult<Partial<&str>, &str> {
+/// take_while(1.., "1234567890ABCDEF").parse_next(s)
+/// }
+///
+/// assert_eq!(hex(Partial::new("123 and voila")), Ok((Partial::new(" and voila"), "123")));
+/// assert_eq!(hex(Partial::new("DEADBEEF and others")), Ok((Partial::new(" and others"), "DEADBEEF")));
+/// assert_eq!(hex(Partial::new("BADBABEsomething")), Ok((Partial::new("something"), "BADBABE")));
+/// assert_eq!(hex(Partial::new("D15EA5E")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// assert_eq!(hex(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+///
+/// Arbitrary amount of tokens:
+/// ```rust
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::token::take_while;
+/// use winnow::stream::AsChar;
+///
+/// fn short_alpha(s: &[u8]) -> IResult<&[u8], &[u8]> {
+/// take_while(3..=6, AsChar::is_alpha).parse_next(s)
+/// }
+///
+/// assert_eq!(short_alpha(b"latin123"), Ok((&b"123"[..], &b"latin"[..])));
+/// assert_eq!(short_alpha(b"lengthy"), Ok((&b"y"[..], &b"length"[..])));
+/// assert_eq!(short_alpha(b"latin"), Ok((&b""[..], &b"latin"[..])));
+/// assert_eq!(short_alpha(b"ed"), Err(ErrMode::Backtrack(Error::new(&b"ed"[..], ErrorKind::Slice))));
+/// assert_eq!(short_alpha(b"12345"), Err(ErrMode::Backtrack(Error::new(&b"12345"[..], ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::token::take_while;
+/// use winnow::stream::AsChar;
+///
+/// fn short_alpha(s: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+/// take_while(3..=6, AsChar::is_alpha).parse_next(s)
+/// }
+///
+/// assert_eq!(short_alpha(Partial::new(b"latin123")), Ok((Partial::new(&b"123"[..]), &b"latin"[..])));
+/// assert_eq!(short_alpha(Partial::new(b"lengthy")), Ok((Partial::new(&b"y"[..]), &b"length"[..])));
+/// assert_eq!(short_alpha(Partial::new(b"latin")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// assert_eq!(short_alpha(Partial::new(b"ed")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// assert_eq!(short_alpha(Partial::new(b"12345")), Err(ErrMode::Backtrack(Error::new(Partial::new(&b"12345"[..]), ErrorKind::Slice))));
+/// ```
+#[inline(always)]
+#[doc(alias = "is_a")]
+#[doc(alias = "take_while0")]
+#[doc(alias = "take_while1")]
+pub fn take_while<T, I, Error: ParseError<I>>(
+ range: impl Into<Range>,
+ list: T,
+) -> impl Parser<I, <I as Stream>::Slice, Error>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ T: ContainsToken<<I as Stream>::Token>,
+{
+ let Range {
+ start_inclusive,
+ end_inclusive,
+ } = range.into();
+ trace("take_while", move |i: I| {
+ match (start_inclusive, end_inclusive) {
+ (0, None) => {
+ if <I as StreamIsPartial>::is_partial_supported() {
+ take_while0_::<_, _, _, true>(i, &list)
+ } else {
+ take_while0_::<_, _, _, false>(i, &list)
+ }
+ }
+ (1, None) => {
+ if <I as StreamIsPartial>::is_partial_supported() {
+ take_while1_::<_, _, _, true>(i, &list)
+ } else {
+ take_while1_::<_, _, _, false>(i, &list)
+ }
+ }
+ (start, end) => {
+ let end = end.unwrap_or(usize::MAX);
+ if <I as StreamIsPartial>::is_partial_supported() {
+ take_while_m_n_::<_, _, _, true>(i, start, end, &list)
+ } else {
+ take_while_m_n_::<_, _, _, false>(i, start, end, &list)
+ }
+ }
+ }
+ })
+}
+
+/// Deprecated, see [`take_while`]
+#[deprecated(since = "0.4.6", note = "Replaced with `take_while`")]
+#[inline(always)]
+pub fn take_while0<T, I, Error: ParseError<I>>(
+ list: T,
+) -> impl Parser<I, <I as Stream>::Slice, Error>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ T: ContainsToken<<I as Stream>::Token>,
+{
+ take_while(0.., list)
+}
+
+/// Deprecated, see [`take_while`]
+#[deprecated(since = "0.4.6", note = "Replaced with `take_while`")]
+#[inline(always)]
+pub fn take_while1<T, I, Error: ParseError<I>>(
+ list: T,
+) -> impl Parser<I, <I as Stream>::Slice, Error>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ T: ContainsToken<<I as Stream>::Token>,
+{
+ take_while(1.., list)
+}
+
+fn take_while0_<T, I, Error: ParseError<I>, const PARTIAL: bool>(
+ input: I,
+ list: &T,
+) -> IResult<I, <I as Stream>::Slice, Error>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ T: ContainsToken<<I as Stream>::Token>,
+{
+ if PARTIAL && input.is_partial() {
+ split_at_offset_partial(&input, |c| !list.contains_token(c))
+ } else {
+ split_at_offset_complete(&input, |c| !list.contains_token(c))
+ }
+}
+
+fn take_while1_<T, I, Error: ParseError<I>, const PARTIAL: bool>(
+ input: I,
+ list: &T,
+) -> IResult<I, <I as Stream>::Slice, Error>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ T: ContainsToken<<I as Stream>::Token>,
+{
+ let e: ErrorKind = ErrorKind::Slice;
+ if PARTIAL && input.is_partial() {
+ split_at_offset1_partial(&input, |c| !list.contains_token(c), e)
+ } else {
+ split_at_offset1_complete(&input, |c| !list.contains_token(c), e)
+ }
+}
+
+fn take_while_m_n_<T, I, Error: ParseError<I>, const PARTIAL: bool>(
+ input: I,
+ m: usize,
+ n: usize,
+ list: &T,
+) -> IResult<I, <I as Stream>::Slice, Error>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ T: ContainsToken<<I as Stream>::Token>,
+{
+ if n < m {
+ return Err(ErrMode::assert(input, "`m` should be <= `n`"));
+ }
+
+ let mut final_count = 0;
+ for (processed, (offset, token)) in input.iter_offsets().enumerate() {
+ if !list.contains_token(token) {
+ if processed < m {
+ return Err(ErrMode::from_error_kind(input, ErrorKind::Slice));
+ } else {
+ return Ok(input.next_slice(offset));
+ }
+ } else {
+ if processed == n {
+ return Ok(input.next_slice(offset));
+ }
+ final_count = processed + 1;
+ }
+ }
+ if PARTIAL && input.is_partial() {
+ if final_count == n {
+ Ok(input.next_slice(input.eof_offset()))
+ } else {
+ let needed = if m > input.eof_offset() {
+ m - input.eof_offset()
+ } else {
+ 1
+ };
+ Err(ErrMode::Incomplete(Needed::new(needed)))
+ }
+ } else {
+ if m <= final_count {
+ Ok(input.next_slice(input.eof_offset()))
+ } else {
+ Err(ErrMode::from_error_kind(input, ErrorKind::Slice))
+ }
+ }
+}
+
+/// Recognize the longest input slice (if any) till a [pattern][ContainsToken] is met.
+///
+/// *Partial version* will return a `ErrMode::Incomplete(Needed::new(1))` if the match reaches the
+/// end of input or if there was not match.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::token::take_till0;
+///
+/// fn till_colon(s: &str) -> IResult<&str, &str> {
+/// take_till0(|c| c == ':').parse_next(s)
+/// }
+///
+/// assert_eq!(till_colon("latin:123"), Ok((":123", "latin")));
+/// assert_eq!(till_colon(":empty matched"), Ok((":empty matched", ""))); //allowed
+/// assert_eq!(till_colon("12345"), Ok(("", "12345")));
+/// assert_eq!(till_colon(""), Ok(("", "")));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::token::take_till0;
+///
+/// fn till_colon(s: Partial<&str>) -> IResult<Partial<&str>, &str> {
+/// take_till0(|c| c == ':').parse_next(s)
+/// }
+///
+/// assert_eq!(till_colon(Partial::new("latin:123")), Ok((Partial::new(":123"), "latin")));
+/// assert_eq!(till_colon(Partial::new(":empty matched")), Ok((Partial::new(":empty matched"), ""))); //allowed
+/// assert_eq!(till_colon(Partial::new("12345")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// assert_eq!(till_colon(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+pub fn take_till0<T, I, Error: ParseError<I>>(
+ list: T,
+) -> impl Parser<I, <I as Stream>::Slice, Error>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ T: ContainsToken<<I as Stream>::Token>,
+{
+ trace("take_till0", move |i: I| {
+ if <I as StreamIsPartial>::is_partial_supported() && i.is_partial() {
+ split_at_offset_partial(&i, |c| list.contains_token(c))
+ } else {
+ split_at_offset_complete(&i, |c| list.contains_token(c))
+ }
+ })
+}
+
+/// Recognize the longest (at least 1) input slice till a [pattern][ContainsToken] is met.
+///
+/// It will return `Err(ErrMode::Backtrack(Error::new(_, ErrorKind::Slice)))` if the input is empty or the
+/// predicate matches the first input.
+///
+/// *Partial version* will return a `ErrMode::Incomplete(Needed::new(1))` if the match reaches the
+/// end of input or if there was not match.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::token::take_till1;
+///
+/// fn till_colon(s: &str) -> IResult<&str, &str> {
+/// take_till1(|c| c == ':').parse_next(s)
+/// }
+///
+/// assert_eq!(till_colon("latin:123"), Ok((":123", "latin")));
+/// assert_eq!(till_colon(":empty matched"), Err(ErrMode::Backtrack(Error::new(":empty matched", ErrorKind::Slice))));
+/// assert_eq!(till_colon("12345"), Ok(("", "12345")));
+/// assert_eq!(till_colon(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Slice))));
+///
+/// fn not_space(s: &str) -> IResult<&str, &str> {
+/// take_till1(" \t\r\n").parse_next(s)
+/// }
+///
+/// assert_eq!(not_space("Hello, World!"), Ok((" World!", "Hello,")));
+/// assert_eq!(not_space("Sometimes\t"), Ok(("\t", "Sometimes")));
+/// assert_eq!(not_space("Nospace"), Ok(("", "Nospace")));
+/// assert_eq!(not_space(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::token::take_till1;
+///
+/// fn till_colon(s: Partial<&str>) -> IResult<Partial<&str>, &str> {
+/// take_till1(|c| c == ':').parse_next(s)
+/// }
+///
+/// assert_eq!(till_colon(Partial::new("latin:123")), Ok((Partial::new(":123"), "latin")));
+/// assert_eq!(till_colon(Partial::new(":empty matched")), Err(ErrMode::Backtrack(Error::new(Partial::new(":empty matched"), ErrorKind::Slice))));
+/// assert_eq!(till_colon(Partial::new("12345")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// assert_eq!(till_colon(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+///
+/// fn not_space(s: Partial<&str>) -> IResult<Partial<&str>, &str> {
+/// take_till1(" \t\r\n").parse_next(s)
+/// }
+///
+/// assert_eq!(not_space(Partial::new("Hello, World!")), Ok((Partial::new(" World!"), "Hello,")));
+/// assert_eq!(not_space(Partial::new("Sometimes\t")), Ok((Partial::new("\t"), "Sometimes")));
+/// assert_eq!(not_space(Partial::new("Nospace")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// assert_eq!(not_space(Partial::new("")), Err(ErrMode::Incomplete(Needed::new(1))));
+/// ```
+#[inline(always)]
+#[doc(alias = "is_not")]
+pub fn take_till1<T, I, Error: ParseError<I>>(
+ list: T,
+) -> impl Parser<I, <I as Stream>::Slice, Error>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ T: ContainsToken<<I as Stream>::Token>,
+{
+ trace("take_till1", move |i: I| {
+ let e: ErrorKind = ErrorKind::Slice;
+ if <I as StreamIsPartial>::is_partial_supported() && i.is_partial() {
+ split_at_offset1_partial(&i, |c| list.contains_token(c), e)
+ } else {
+ split_at_offset1_complete(&i, |c| list.contains_token(c), e)
+ }
+ })
+}
+
+/// Recognize an input slice containing the first N input elements (I[..N]).
+///
+/// *Complete version*: It will return `Err(ErrMode::Backtrack(Error::new(_, ErrorKind::Slice)))` if the input is shorter than the argument.
+///
+/// *Partial version*: if the input has less than N elements, `take` will
+/// return a `ErrMode::Incomplete(Needed::new(M))` where M is the number of
+/// additional bytes the parser would need to succeed.
+/// It is well defined for `&[u8]` as the number of elements is the byte size,
+/// but for types like `&str`, we cannot know how many bytes correspond for
+/// the next few chars, so the result will be `ErrMode::Incomplete(Needed::Unknown)`
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::token::take;
+///
+/// fn take6(s: &str) -> IResult<&str, &str> {
+/// take(6usize).parse_next(s)
+/// }
+///
+/// assert_eq!(take6("1234567"), Ok(("7", "123456")));
+/// assert_eq!(take6("things"), Ok(("", "things")));
+/// assert_eq!(take6("short"), Err(ErrMode::Backtrack(Error::new("short", ErrorKind::Slice))));
+/// assert_eq!(take6(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Slice))));
+/// ```
+///
+/// The units that are taken will depend on the input type. For example, for a
+/// `&str` it will take a number of `char`'s, whereas for a `&[u8]` it will
+/// take that many `u8`'s:
+///
+/// ```rust
+/// # use winnow::prelude::*;
+/// use winnow::error::Error;
+/// use winnow::token::take;
+///
+/// assert_eq!(take::<_, _, Error<_>>(1usize).parse_next("💙"), Ok(("", "💙")));
+/// assert_eq!(take::<_, _, Error<_>>(1usize).parse_next("💙".as_bytes()), Ok((b"\x9F\x92\x99".as_ref(), b"\xF0".as_ref())));
+/// ```
+///
+/// ```rust
+/// # use winnow::prelude::*;
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::Partial;
+/// use winnow::token::take;
+///
+/// fn take6(s: Partial<&str>) -> IResult<Partial<&str>, &str> {
+/// take(6usize).parse_next(s)
+/// }
+///
+/// assert_eq!(take6(Partial::new("1234567")), Ok((Partial::new("7"), "123456")));
+/// assert_eq!(take6(Partial::new("things")), Ok((Partial::new(""), "things")));
+/// // `Unknown` as we don't know the number of bytes that `count` corresponds to
+/// assert_eq!(take6(Partial::new("short")), Err(ErrMode::Incomplete(Needed::Unknown)));
+/// ```
+#[inline(always)]
+pub fn take<C, I, Error: ParseError<I>>(count: C) -> impl Parser<I, <I as Stream>::Slice, Error>
+where
+ I: StreamIsPartial,
+ I: Stream,
+ C: ToUsize,
+{
+ let c = count.to_usize();
+ trace("take", move |i: I| {
+ if <I as StreamIsPartial>::is_partial_supported() {
+ take_::<_, _, true>(i, c)
+ } else {
+ take_::<_, _, false>(i, c)
+ }
+ })
+}
+
+fn take_<I, Error: ParseError<I>, const PARTIAL: bool>(
+ i: I,
+ c: usize,
+) -> IResult<I, <I as Stream>::Slice, Error>
+where
+ I: StreamIsPartial,
+ I: Stream,
+{
+ match i.offset_at(c) {
+ Ok(offset) => Ok(i.next_slice(offset)),
+ Err(e) if PARTIAL && i.is_partial() => Err(ErrMode::Incomplete(e)),
+ Err(_needed) => Err(ErrMode::from_error_kind(i, ErrorKind::Slice)),
+ }
+}
+
+/// Recognize the input slice up to the first occurrence of the literal.
+///
+/// It doesn't consume the pattern.
+///
+/// *Complete version*: It will return `Err(ErrMode::Backtrack(Error::new(_, ErrorKind::Slice)))`
+/// if the pattern wasn't met.
+///
+/// *Partial version*: will return a `ErrMode::Incomplete(Needed::new(N))` if the input doesn't
+/// contain the pattern or if the input is smaller than the pattern.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::token::take_until0;
+///
+/// fn until_eof(s: &str) -> IResult<&str, &str> {
+/// take_until0("eof").parse_next(s)
+/// }
+///
+/// assert_eq!(until_eof("hello, worldeof"), Ok(("eof", "hello, world")));
+/// assert_eq!(until_eof("hello, world"), Err(ErrMode::Backtrack(Error::new("hello, world", ErrorKind::Slice))));
+/// assert_eq!(until_eof(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Slice))));
+/// assert_eq!(until_eof("1eof2eof"), Ok(("eof2eof", "1")));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::ErrorKind, error::Error, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::token::take_until0;
+///
+/// fn until_eof(s: Partial<&str>) -> IResult<Partial<&str>, &str> {
+/// take_until0("eof").parse_next(s)
+/// }
+///
+/// assert_eq!(until_eof(Partial::new("hello, worldeof")), Ok((Partial::new("eof"), "hello, world")));
+/// assert_eq!(until_eof(Partial::new("hello, world")), Err(ErrMode::Incomplete(Needed::Unknown)));
+/// assert_eq!(until_eof(Partial::new("hello, worldeo")), Err(ErrMode::Incomplete(Needed::Unknown)));
+/// assert_eq!(until_eof(Partial::new("1eof2eof")), Ok((Partial::new("eof2eof"), "1")));
+/// ```
+#[inline(always)]
+pub fn take_until0<T, I, Error: ParseError<I>>(
+ tag: T,
+) -> impl Parser<I, <I as Stream>::Slice, Error>
+where
+ I: StreamIsPartial,
+ I: Stream + FindSlice<T>,
+ T: SliceLen + Clone,
+{
+ trace("take_until0", move |i: I| {
+ if <I as StreamIsPartial>::is_partial_supported() {
+ take_until0_::<_, _, _, true>(i, tag.clone())
+ } else {
+ take_until0_::<_, _, _, false>(i, tag.clone())
+ }
+ })
+}
+
+fn take_until0_<T, I, Error: ParseError<I>, const PARTIAL: bool>(
+ i: I,
+ t: T,
+) -> IResult<I, <I as Stream>::Slice, Error>
+where
+ I: StreamIsPartial,
+ I: Stream + FindSlice<T>,
+ T: SliceLen,
+{
+ match i.find_slice(t) {
+ Some(offset) => Ok(i.next_slice(offset)),
+ None if PARTIAL && i.is_partial() => Err(ErrMode::Incomplete(Needed::Unknown)),
+ None => Err(ErrMode::from_error_kind(i, ErrorKind::Slice)),
+ }
+}
+
+/// Recognize the non empty input slice up to the first occurrence of the literal.
+///
+/// It doesn't consume the pattern.
+///
+/// *Complete version*: It will return `Err(ErrMode::Backtrack(Error::new(_, ErrorKind::Slice)))`
+/// if the pattern wasn't met.
+///
+/// *Partial version*: will return a `ErrMode::Incomplete(Needed::new(N))` if the input doesn't
+/// contain the pattern or if the input is smaller than the pattern.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::prelude::*;
+/// use winnow::token::take_until1;
+///
+/// fn until_eof(s: &str) -> IResult<&str, &str> {
+/// take_until1("eof").parse_next(s)
+/// }
+///
+/// assert_eq!(until_eof("hello, worldeof"), Ok(("eof", "hello, world")));
+/// assert_eq!(until_eof("hello, world"), Err(ErrMode::Backtrack(Error::new("hello, world", ErrorKind::Slice))));
+/// assert_eq!(until_eof(""), Err(ErrMode::Backtrack(Error::new("", ErrorKind::Slice))));
+/// assert_eq!(until_eof("1eof2eof"), Ok(("eof2eof", "1")));
+/// assert_eq!(until_eof("eof"), Err(ErrMode::Backtrack(Error::new("eof", ErrorKind::Slice))));
+/// ```
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed};
+/// # use winnow::prelude::*;
+/// # use winnow::Partial;
+/// use winnow::token::take_until1;
+///
+/// fn until_eof(s: Partial<&str>) -> IResult<Partial<&str>, &str> {
+/// take_until1("eof").parse_next(s)
+/// }
+///
+/// assert_eq!(until_eof(Partial::new("hello, worldeof")), Ok((Partial::new("eof"), "hello, world")));
+/// assert_eq!(until_eof(Partial::new("hello, world")), Err(ErrMode::Incomplete(Needed::Unknown)));
+/// assert_eq!(until_eof(Partial::new("hello, worldeo")), Err(ErrMode::Incomplete(Needed::Unknown)));
+/// assert_eq!(until_eof(Partial::new("1eof2eof")), Ok((Partial::new("eof2eof"), "1")));
+/// assert_eq!(until_eof(Partial::new("eof")), Err(ErrMode::Backtrack(Error::new(Partial::new("eof"), ErrorKind::Slice))));
+/// ```
+#[inline(always)]
+pub fn take_until1<T, I, Error: ParseError<I>>(
+ tag: T,
+) -> impl Parser<I, <I as Stream>::Slice, Error>
+where
+ I: StreamIsPartial,
+ I: Stream + FindSlice<T>,
+ T: SliceLen + Clone,
+{
+ trace("take_until1", move |i: I| {
+ if <I as StreamIsPartial>::is_partial_supported() {
+ take_until1_::<_, _, _, true>(i, tag.clone())
+ } else {
+ take_until1_::<_, _, _, false>(i, tag.clone())
+ }
+ })
+}
+
+fn take_until1_<T, I, Error: ParseError<I>, const PARTIAL: bool>(
+ i: I,
+ t: T,
+) -> IResult<I, <I as Stream>::Slice, Error>
+where
+ I: StreamIsPartial,
+ I: Stream + FindSlice<T>,
+ T: SliceLen,
+{
+ match i.find_slice(t) {
+ None if PARTIAL && i.is_partial() => Err(ErrMode::Incomplete(Needed::Unknown)),
+ None | Some(0) => Err(ErrMode::from_error_kind(i, ErrorKind::Slice)),
+ Some(offset) => Ok(i.next_slice(offset)),
+ }
+}
diff --git a/vendor/winnow-0.4.7/src/token/tests.rs b/vendor/winnow-0.4.7/src/token/tests.rs
new file mode 100644
index 000000000..e1c7999c2
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/token/tests.rs
@@ -0,0 +1,700 @@
+use super::*;
+
+#[cfg(feature = "std")]
+use proptest::prelude::*;
+
+use crate::binary::length_data;
+use crate::combinator::delimited;
+use crate::error::ErrMode;
+use crate::error::Error;
+use crate::error::ErrorKind;
+use crate::error::Needed;
+use crate::stream::AsChar;
+use crate::token::tag;
+use crate::IResult;
+use crate::Parser;
+use crate::Partial;
+
+#[test]
+fn complete_take_while_m_n_utf8_all_matching() {
+ let result: IResult<&str, &str> =
+ take_while(1..=4, |c: char| c.is_alphabetic()).parse_next("øn");
+ assert_eq!(result, Ok(("", "øn")));
+}
+
+#[test]
+fn complete_take_while_m_n_utf8_all_matching_substring() {
+ let result: IResult<&str, &str> = take_while(1, |c: char| c.is_alphabetic()).parse_next("øn");
+ assert_eq!(result, Ok(("n", "ø")));
+}
+
+#[cfg(feature = "std")]
+fn model_complete_take_while_m_n(
+ m: usize,
+ n: usize,
+ valid: usize,
+ input: &str,
+) -> IResult<&str, &str> {
+ if n < m {
+ Err(crate::error::ErrMode::from_error_kind(
+ input,
+ crate::error::ErrorKind::Slice,
+ ))
+ } else if m <= valid {
+ let offset = n.min(valid);
+ Ok((&input[offset..], &input[0..offset]))
+ } else {
+ Err(crate::error::ErrMode::from_error_kind(
+ input,
+ crate::error::ErrorKind::Slice,
+ ))
+ }
+}
+
+#[cfg(feature = "std")]
+proptest! {
+ #[test]
+ #[cfg_attr(miri, ignore)] // See https://github.com/AltSysrq/proptest/issues/253
+ fn complete_take_while_m_n_bounds(m in 0..20usize, n in 0..20usize, valid in 0..20usize, invalid in 0..20usize) {
+ let input = format!("{:a<valid$}{:b<invalid$}", "", "", valid=valid, invalid=invalid);
+ let expected = model_complete_take_while_m_n(m, n, valid, &input);
+ if m <= n {
+ let actual = take_while(m..=n, |c: char| c == 'a').parse_next(input.as_str());
+ assert_eq!(expected, actual);
+ }
+ }
+}
+
+#[test]
+fn partial_any_str() {
+ use super::any;
+ assert_eq!(
+ any::<_, Error<Partial<&str>>>(Partial::new("Ó˜")),
+ Ok((Partial::new(""), 'Ó˜'))
+ );
+}
+
+#[test]
+fn partial_one_of_test() {
+ fn f(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u8> {
+ one_of("ab").parse_next(i)
+ }
+
+ let a = &b"abcd"[..];
+ assert_eq!(f(Partial::new(a)), Ok((Partial::new(&b"bcd"[..]), b'a')));
+
+ let b = &b"cde"[..];
+ assert_eq!(
+ f(Partial::new(b)),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(b),
+ ErrorKind::Verify
+ )))
+ );
+
+ fn utf8(i: Partial<&str>) -> IResult<Partial<&str>, char> {
+ one_of("+\u{FF0B}").parse_next(i)
+ }
+
+ assert!(utf8(Partial::new("+")).is_ok());
+ assert!(utf8(Partial::new("\u{FF0B}")).is_ok());
+}
+
+#[test]
+fn char_byteslice() {
+ fn f(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u8> {
+ 'c'.parse_next(i)
+ }
+
+ let a = &b"abcd"[..];
+ assert_eq!(
+ f(Partial::new(a)),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(a),
+ ErrorKind::Verify
+ )))
+ );
+
+ let b = &b"cde"[..];
+ assert_eq!(f(Partial::new(b)), Ok((Partial::new(&b"de"[..]), b'c')));
+}
+
+#[test]
+fn char_str() {
+ fn f(i: Partial<&str>) -> IResult<Partial<&str>, char> {
+ 'c'.parse_next(i)
+ }
+
+ let a = "abcd";
+ assert_eq!(
+ f(Partial::new(a)),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(a),
+ ErrorKind::Verify
+ )))
+ );
+
+ let b = "cde";
+ assert_eq!(f(Partial::new(b)), Ok((Partial::new("de"), 'c')));
+}
+
+#[test]
+fn partial_none_of_test() {
+ fn f(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, u8> {
+ none_of("ab").parse_next(i)
+ }
+
+ let a = &b"abcd"[..];
+ assert_eq!(
+ f(Partial::new(a)),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(a),
+ ErrorKind::Verify
+ )))
+ );
+
+ let b = &b"cde"[..];
+ assert_eq!(f(Partial::new(b)), Ok((Partial::new(&b"de"[..]), b'c')));
+}
+
+#[test]
+fn partial_is_a() {
+ fn a_or_b(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ take_while(1.., "ab").parse_next(i)
+ }
+
+ let a = Partial::new(&b"abcd"[..]);
+ assert_eq!(a_or_b(a), Ok((Partial::new(&b"cd"[..]), &b"ab"[..])));
+
+ let b = Partial::new(&b"bcde"[..]);
+ assert_eq!(a_or_b(b), Ok((Partial::new(&b"cde"[..]), &b"b"[..])));
+
+ let c = Partial::new(&b"cdef"[..]);
+ assert_eq!(
+ a_or_b(c),
+ Err(ErrMode::Backtrack(error_position!(c, ErrorKind::Slice)))
+ );
+
+ let d = Partial::new(&b"bacdef"[..]);
+ assert_eq!(a_or_b(d), Ok((Partial::new(&b"cdef"[..]), &b"ba"[..])));
+}
+
+#[test]
+fn partial_is_not() {
+ fn a_or_b(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ take_till1("ab").parse_next(i)
+ }
+
+ let a = Partial::new(&b"cdab"[..]);
+ assert_eq!(a_or_b(a), Ok((Partial::new(&b"ab"[..]), &b"cd"[..])));
+
+ let b = Partial::new(&b"cbde"[..]);
+ assert_eq!(a_or_b(b), Ok((Partial::new(&b"bde"[..]), &b"c"[..])));
+
+ let c = Partial::new(&b"abab"[..]);
+ assert_eq!(
+ a_or_b(c),
+ Err(ErrMode::Backtrack(error_position!(c, ErrorKind::Slice)))
+ );
+
+ let d = Partial::new(&b"cdefba"[..]);
+ assert_eq!(a_or_b(d), Ok((Partial::new(&b"ba"[..]), &b"cdef"[..])));
+
+ let e = Partial::new(&b"e"[..]);
+ assert_eq!(a_or_b(e), Err(ErrMode::Incomplete(Needed::new(1))));
+}
+
+#[test]
+fn partial_take_until_incomplete() {
+ fn y(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ take_until0("end").parse_next(i)
+ }
+ assert_eq!(
+ y(Partial::new(&b"nd"[..])),
+ Err(ErrMode::Incomplete(Needed::Unknown))
+ );
+ assert_eq!(
+ y(Partial::new(&b"123"[..])),
+ Err(ErrMode::Incomplete(Needed::Unknown))
+ );
+ assert_eq!(
+ y(Partial::new(&b"123en"[..])),
+ Err(ErrMode::Incomplete(Needed::Unknown))
+ );
+}
+
+#[test]
+fn partial_take_until_incomplete_s() {
+ fn ys(i: Partial<&str>) -> IResult<Partial<&str>, &str> {
+ take_until0("end").parse_next(i)
+ }
+ assert_eq!(
+ ys(Partial::new("123en")),
+ Err(ErrMode::Incomplete(Needed::Unknown))
+ );
+}
+
+#[test]
+fn partial_recognize() {
+ use crate::ascii::{
+ alpha1 as alpha, alphanumeric1 as alphanumeric, digit1 as digit, hex_digit1 as hex_digit,
+ multispace1 as multispace, oct_digit1 as oct_digit, space1 as space,
+ };
+
+ fn x(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ delimited("<!--", take(5_usize), "-->")
+ .recognize()
+ .parse_next(i)
+ }
+ let r = x(Partial::new(&b"<!-- abc --> aaa"[..]));
+ assert_eq!(r, Ok((Partial::new(&b" aaa"[..]), &b"<!-- abc -->"[..])));
+
+ let semicolon = &b";"[..];
+
+ fn ya(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ alpha.recognize().parse_next(i)
+ }
+ let ra = ya(Partial::new(&b"abc;"[..]));
+ assert_eq!(ra, Ok((Partial::new(semicolon), &b"abc"[..])));
+
+ fn yd(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ digit.recognize().parse_next(i)
+ }
+ let rd = yd(Partial::new(&b"123;"[..]));
+ assert_eq!(rd, Ok((Partial::new(semicolon), &b"123"[..])));
+
+ fn yhd(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ hex_digit.recognize().parse_next(i)
+ }
+ let rhd = yhd(Partial::new(&b"123abcDEF;"[..]));
+ assert_eq!(rhd, Ok((Partial::new(semicolon), &b"123abcDEF"[..])));
+
+ fn yod(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ oct_digit.recognize().parse_next(i)
+ }
+ let rod = yod(Partial::new(&b"1234567;"[..]));
+ assert_eq!(rod, Ok((Partial::new(semicolon), &b"1234567"[..])));
+
+ fn yan(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ alphanumeric.recognize().parse_next(i)
+ }
+ let ran = yan(Partial::new(&b"123abc;"[..]));
+ assert_eq!(ran, Ok((Partial::new(semicolon), &b"123abc"[..])));
+
+ fn ys(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ space.recognize().parse_next(i)
+ }
+ let rs = ys(Partial::new(&b" \t;"[..]));
+ assert_eq!(rs, Ok((Partial::new(semicolon), &b" \t"[..])));
+
+ fn yms(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ multispace.recognize().parse_next(i)
+ }
+ let rms = yms(Partial::new(&b" \t\r\n;"[..]));
+ assert_eq!(rms, Ok((Partial::new(semicolon), &b" \t\r\n"[..])));
+}
+
+#[test]
+fn partial_take_while0() {
+ fn f(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ take_while(0.., AsChar::is_alpha).parse_next(i)
+ }
+ let a = &b""[..];
+ let b = &b"abcd"[..];
+ let c = &b"abcd123"[..];
+ let d = &b"123"[..];
+
+ assert_eq!(f(Partial::new(a)), Err(ErrMode::Incomplete(Needed::new(1))));
+ assert_eq!(f(Partial::new(b)), Err(ErrMode::Incomplete(Needed::new(1))));
+ assert_eq!(f(Partial::new(c)), Ok((Partial::new(d), b)));
+ assert_eq!(f(Partial::new(d)), Ok((Partial::new(d), a)));
+}
+
+#[test]
+fn partial_take_while1() {
+ fn f(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ take_while(1.., AsChar::is_alpha).parse_next(i)
+ }
+ let a = &b""[..];
+ let b = &b"abcd"[..];
+ let c = &b"abcd123"[..];
+ let d = &b"123"[..];
+
+ assert_eq!(f(Partial::new(a)), Err(ErrMode::Incomplete(Needed::new(1))));
+ assert_eq!(f(Partial::new(b)), Err(ErrMode::Incomplete(Needed::new(1))));
+ assert_eq!(f(Partial::new(c)), Ok((Partial::new(&b"123"[..]), b)));
+ assert_eq!(
+ f(Partial::new(d)),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(d),
+ ErrorKind::Slice
+ )))
+ );
+}
+
+#[test]
+fn partial_take_while_m_n() {
+ fn x(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ take_while(2..=4, AsChar::is_alpha).parse_next(i)
+ }
+ let a = &b""[..];
+ let b = &b"a"[..];
+ let c = &b"abc"[..];
+ let d = &b"abc123"[..];
+ let e = &b"abcde"[..];
+ let f = &b"123"[..];
+
+ assert_eq!(x(Partial::new(a)), Err(ErrMode::Incomplete(Needed::new(2))));
+ assert_eq!(x(Partial::new(b)), Err(ErrMode::Incomplete(Needed::new(1))));
+ assert_eq!(x(Partial::new(c)), Err(ErrMode::Incomplete(Needed::new(1))));
+ assert_eq!(x(Partial::new(d)), Ok((Partial::new(&b"123"[..]), c)));
+ assert_eq!(
+ x(Partial::new(e)),
+ Ok((Partial::new(&b"e"[..]), &b"abcd"[..]))
+ );
+ assert_eq!(
+ x(Partial::new(f)),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(f),
+ ErrorKind::Slice
+ )))
+ );
+}
+
+#[test]
+fn partial_take_till0() {
+ fn f(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ take_till0(AsChar::is_alpha).parse_next(i)
+ }
+ let a = &b""[..];
+ let b = &b"abcd"[..];
+ let c = &b"123abcd"[..];
+ let d = &b"123"[..];
+
+ assert_eq!(f(Partial::new(a)), Err(ErrMode::Incomplete(Needed::new(1))));
+ assert_eq!(
+ f(Partial::new(b)),
+ Ok((Partial::new(&b"abcd"[..]), &b""[..]))
+ );
+ assert_eq!(
+ f(Partial::new(c)),
+ Ok((Partial::new(&b"abcd"[..]), &b"123"[..]))
+ );
+ assert_eq!(f(Partial::new(d)), Err(ErrMode::Incomplete(Needed::new(1))));
+}
+
+#[test]
+fn partial_take_till1() {
+ fn f(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ take_till1(AsChar::is_alpha).parse_next(i)
+ }
+ let a = &b""[..];
+ let b = &b"abcd"[..];
+ let c = &b"123abcd"[..];
+ let d = &b"123"[..];
+
+ assert_eq!(f(Partial::new(a)), Err(ErrMode::Incomplete(Needed::new(1))));
+ assert_eq!(
+ f(Partial::new(b)),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(b),
+ ErrorKind::Slice
+ )))
+ );
+ assert_eq!(
+ f(Partial::new(c)),
+ Ok((Partial::new(&b"abcd"[..]), &b"123"[..]))
+ );
+ assert_eq!(f(Partial::new(d)), Err(ErrMode::Incomplete(Needed::new(1))));
+}
+
+#[test]
+fn partial_take_while_utf8() {
+ fn f(i: Partial<&str>) -> IResult<Partial<&str>, &str> {
+ take_while(0.., |c| c != '點').parse_next(i)
+ }
+
+ assert_eq!(
+ f(Partial::new("")),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ f(Partial::new("abcd")),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(f(Partial::new("abcd點")), Ok((Partial::new("點"), "abcd")));
+ assert_eq!(
+ f(Partial::new("abcd點a")),
+ Ok((Partial::new("點a"), "abcd"))
+ );
+
+ fn g(i: Partial<&str>) -> IResult<Partial<&str>, &str> {
+ take_while(0.., |c| c == '點').parse_next(i)
+ }
+
+ assert_eq!(
+ g(Partial::new("")),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(g(Partial::new("點abcd")), Ok((Partial::new("abcd"), "點")));
+ assert_eq!(
+ g(Partial::new("點點點a")),
+ Ok((Partial::new("a"), "點點點"))
+ );
+}
+
+#[test]
+fn partial_take_till0_utf8() {
+ fn f(i: Partial<&str>) -> IResult<Partial<&str>, &str> {
+ take_till0(|c| c == '點').parse_next(i)
+ }
+
+ assert_eq!(
+ f(Partial::new("")),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ f(Partial::new("abcd")),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(f(Partial::new("abcd點")), Ok((Partial::new("點"), "abcd")));
+ assert_eq!(
+ f(Partial::new("abcd點a")),
+ Ok((Partial::new("點a"), "abcd"))
+ );
+
+ fn g(i: Partial<&str>) -> IResult<Partial<&str>, &str> {
+ take_till0(|c| c != '點').parse_next(i)
+ }
+
+ assert_eq!(
+ g(Partial::new("")),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(g(Partial::new("點abcd")), Ok((Partial::new("abcd"), "點")));
+ assert_eq!(
+ g(Partial::new("點點點a")),
+ Ok((Partial::new("a"), "點點點"))
+ );
+}
+
+#[test]
+fn partial_take_utf8() {
+ fn f(i: Partial<&str>) -> IResult<Partial<&str>, &str> {
+ take(3_usize).parse_next(i)
+ }
+
+ assert_eq!(
+ f(Partial::new("")),
+ Err(ErrMode::Incomplete(Needed::Unknown))
+ );
+ assert_eq!(
+ f(Partial::new("ab")),
+ Err(ErrMode::Incomplete(Needed::Unknown))
+ );
+ assert_eq!(
+ f(Partial::new("點")),
+ Err(ErrMode::Incomplete(Needed::Unknown))
+ );
+ assert_eq!(f(Partial::new("ab點cd")), Ok((Partial::new("cd"), "ab點")));
+ assert_eq!(f(Partial::new("a點bcd")), Ok((Partial::new("cd"), "a點b")));
+ assert_eq!(f(Partial::new("a點b")), Ok((Partial::new(""), "a點b")));
+
+ fn g(i: Partial<&str>) -> IResult<Partial<&str>, &str> {
+ take_while(0.., |c| c == '點').parse_next(i)
+ }
+
+ assert_eq!(
+ g(Partial::new("")),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(g(Partial::new("點abcd")), Ok((Partial::new("abcd"), "點")));
+ assert_eq!(
+ g(Partial::new("點點點a")),
+ Ok((Partial::new("a"), "點點點"))
+ );
+}
+
+#[test]
+fn partial_take_while_m_n_utf8_fixed() {
+ fn parser(i: Partial<&str>) -> IResult<Partial<&str>, &str> {
+ take_while(1, |c| c == 'A' || c == '😃').parse_next(i)
+ }
+ assert_eq!(parser(Partial::new("A!")), Ok((Partial::new("!"), "A")));
+ assert_eq!(parser(Partial::new("😃!")), Ok((Partial::new("!"), "😃")));
+}
+
+#[test]
+fn partial_take_while_m_n_utf8_range() {
+ fn parser(i: Partial<&str>) -> IResult<Partial<&str>, &str> {
+ take_while(1..=2, |c| c == 'A' || c == '😃').parse_next(i)
+ }
+ assert_eq!(parser(Partial::new("A!")), Ok((Partial::new("!"), "A")));
+ assert_eq!(parser(Partial::new("😃!")), Ok((Partial::new("!"), "😃")));
+}
+
+#[test]
+fn partial_take_while_m_n_utf8_full_match_fixed() {
+ fn parser(i: Partial<&str>) -> IResult<Partial<&str>, &str> {
+ take_while(1, |c: char| c.is_alphabetic()).parse_next(i)
+ }
+ assert_eq!(parser(Partial::new("øn")), Ok((Partial::new("n"), "ø")));
+}
+
+#[test]
+fn partial_take_while_m_n_utf8_full_match_range() {
+ fn parser(i: Partial<&str>) -> IResult<Partial<&str>, &str> {
+ take_while(1..=2, |c: char| c.is_alphabetic()).parse_next(i)
+ }
+ assert_eq!(parser(Partial::new("øn")), Ok((Partial::new(""), "øn")));
+}
+
+#[test]
+#[cfg(feature = "std")]
+fn partial_recognize_take_while0() {
+ fn x(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ take_while(0.., AsChar::is_alphanum).parse_next(i)
+ }
+ fn y(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ x.recognize().parse_next(i)
+ }
+ assert_eq!(
+ x(Partial::new(&b"ab."[..])),
+ Ok((Partial::new(&b"."[..]), &b"ab"[..]))
+ );
+ assert_eq!(
+ y(Partial::new(&b"ab."[..])),
+ Ok((Partial::new(&b"."[..]), &b"ab"[..]))
+ );
+}
+
+#[test]
+fn partial_length_bytes() {
+ use crate::binary::le_u8;
+
+ fn x(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ length_data(le_u8).parse_next(i)
+ }
+ assert_eq!(
+ x(Partial::new(b"\x02..>>")),
+ Ok((Partial::new(&b">>"[..]), &b".."[..]))
+ );
+ assert_eq!(
+ x(Partial::new(b"\x02..")),
+ Ok((Partial::new(&[][..]), &b".."[..]))
+ );
+ assert_eq!(
+ x(Partial::new(b"\x02.")),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ x(Partial::new(b"\x02")),
+ Err(ErrMode::Incomplete(Needed::new(2)))
+ );
+
+ fn y(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ let (i, _) = "magic".parse_next(i)?;
+ length_data(le_u8).parse_next(i)
+ }
+ assert_eq!(
+ y(Partial::new(b"magic\x02..>>")),
+ Ok((Partial::new(&b">>"[..]), &b".."[..]))
+ );
+ assert_eq!(
+ y(Partial::new(b"magic\x02..")),
+ Ok((Partial::new(&[][..]), &b".."[..]))
+ );
+ assert_eq!(
+ y(Partial::new(b"magic\x02.")),
+ Err(ErrMode::Incomplete(Needed::new(1)))
+ );
+ assert_eq!(
+ y(Partial::new(b"magic\x02")),
+ Err(ErrMode::Incomplete(Needed::new(2)))
+ );
+}
+
+#[cfg(feature = "alloc")]
+#[test]
+fn partial_case_insensitive() {
+ fn test(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ tag_no_case("ABcd").parse_next(i)
+ }
+ assert_eq!(
+ test(Partial::new(&b"aBCdefgh"[..])),
+ Ok((Partial::new(&b"efgh"[..]), &b"aBCd"[..]))
+ );
+ assert_eq!(
+ test(Partial::new(&b"abcdefgh"[..])),
+ Ok((Partial::new(&b"efgh"[..]), &b"abcd"[..]))
+ );
+ assert_eq!(
+ test(Partial::new(&b"ABCDefgh"[..])),
+ Ok((Partial::new(&b"efgh"[..]), &b"ABCD"[..]))
+ );
+ assert_eq!(
+ test(Partial::new(&b"ab"[..])),
+ Err(ErrMode::Incomplete(Needed::new(2)))
+ );
+ assert_eq!(
+ test(Partial::new(&b"Hello"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"Hello"[..]),
+ ErrorKind::Tag
+ )))
+ );
+ assert_eq!(
+ test(Partial::new(&b"Hel"[..])),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new(&b"Hel"[..]),
+ ErrorKind::Tag
+ )))
+ );
+
+ fn test2(i: Partial<&str>) -> IResult<Partial<&str>, &str> {
+ tag_no_case("ABcd").parse_next(i)
+ }
+ assert_eq!(
+ test2(Partial::new("aBCdefgh")),
+ Ok((Partial::new("efgh"), "aBCd"))
+ );
+ assert_eq!(
+ test2(Partial::new("abcdefgh")),
+ Ok((Partial::new("efgh"), "abcd"))
+ );
+ assert_eq!(
+ test2(Partial::new("ABCDefgh")),
+ Ok((Partial::new("efgh"), "ABCD"))
+ );
+ assert_eq!(
+ test2(Partial::new("ab")),
+ Err(ErrMode::Incomplete(Needed::new(2)))
+ );
+ assert_eq!(
+ test2(Partial::new("Hello")),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new("Hello"),
+ ErrorKind::Tag
+ )))
+ );
+ assert_eq!(
+ test2(Partial::new("Hel")),
+ Err(ErrMode::Backtrack(error_position!(
+ Partial::new("Hel"),
+ ErrorKind::Tag
+ )))
+ );
+}
+
+#[test]
+fn partial_tag_fixed_size_array() {
+ fn test(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ tag([0x42]).parse_next(i)
+ }
+ fn test2(i: Partial<&[u8]>) -> IResult<Partial<&[u8]>, &[u8]> {
+ tag(&[0x42]).parse_next(i)
+ }
+ let input = Partial::new(&[0x42, 0x00][..]);
+ assert_eq!(test(input), Ok((Partial::new(&b"\x00"[..]), &b"\x42"[..])));
+ assert_eq!(test2(input), Ok((Partial::new(&b"\x00"[..]), &b"\x42"[..])));
+}
diff --git a/vendor/winnow-0.4.7/src/trace/internals.rs b/vendor/winnow-0.4.7/src/trace/internals.rs
new file mode 100644
index 000000000..3a10204b7
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/trace/internals.rs
@@ -0,0 +1,248 @@
+#![cfg(feature = "std")]
+
+use std::io::Write;
+
+use crate::error::ErrMode;
+use crate::stream::Stream;
+
+pub struct Depth {
+ depth: usize,
+ inc: bool,
+}
+
+impl Depth {
+ pub fn new() -> Self {
+ let depth = DEPTH.fetch_add(1, std::sync::atomic::Ordering::SeqCst);
+ let inc = true;
+ Self { depth, inc }
+ }
+
+ pub fn existing() -> Self {
+ let depth = DEPTH.load(std::sync::atomic::Ordering::SeqCst);
+ let inc = false;
+ Self { depth, inc }
+ }
+}
+
+impl Drop for Depth {
+ fn drop(&mut self) {
+ if self.inc {
+ let _ = DEPTH.fetch_sub(1, std::sync::atomic::Ordering::SeqCst);
+ }
+ }
+}
+
+impl AsRef<usize> for Depth {
+ #[inline(always)]
+ fn as_ref(&self) -> &usize {
+ &self.depth
+ }
+}
+
+impl crate::lib::std::ops::Deref for Depth {
+ type Target = usize;
+
+ #[inline(always)]
+ fn deref(&self) -> &Self::Target {
+ &self.depth
+ }
+}
+
+static DEPTH: std::sync::atomic::AtomicUsize = std::sync::atomic::AtomicUsize::new(0);
+
+pub enum Severity {
+ Success,
+ Backtrack,
+ Cut,
+ Incomplete,
+}
+
+impl Severity {
+ pub fn with_result<T, E>(result: &Result<T, ErrMode<E>>) -> Self {
+ match result {
+ Ok(_) => Self::Success,
+ Err(ErrMode::Backtrack(_)) => Self::Backtrack,
+ Err(ErrMode::Cut(_)) => Self::Cut,
+ Err(ErrMode::Incomplete(_)) => Self::Incomplete,
+ }
+ }
+}
+
+pub fn start<I: Stream>(
+ depth: usize,
+ name: &dyn crate::lib::std::fmt::Display,
+ count: usize,
+ input: &I,
+) {
+ let gutter_style = anstyle::Style::new().bold();
+ let input_style = anstyle::Style::new().underline();
+ let eof_style = anstyle::Style::new().fg_color(Some(anstyle::AnsiColor::Cyan.into()));
+
+ let (call_width, input_width) = column_widths();
+
+ let count = if 0 < count {
+ format!(":{count}")
+ } else {
+ "".to_owned()
+ };
+ let call_column = format!("{:depth$}> {name}{count}", "");
+
+ let eof_offset = input.eof_offset();
+ let offset = input.offset_at(input_width).unwrap_or(eof_offset);
+ let (_, slice) = input.next_slice(offset);
+
+ // The debug version of `slice` might be wider, either due to rendering one byte as two nibbles or
+ // escaping in strings.
+ let mut debug_slice = format!("{:#?}", slice);
+ let (debug_slice, eof) = if let Some(debug_offset) = debug_slice
+ .char_indices()
+ .enumerate()
+ .find_map(|(pos, (offset, _))| (input_width <= pos).then(|| offset))
+ {
+ debug_slice.truncate(debug_offset);
+ let eof = "";
+ (debug_slice, eof)
+ } else {
+ let eof = if debug_slice.chars().count() < input_width {
+ "∅"
+ } else {
+ ""
+ };
+ (debug_slice, eof)
+ };
+
+ let writer = anstyle_stream::stderr();
+ let mut writer = writer.lock();
+ let _ = writeln!(
+ writer,
+ "{call_column:call_width$} {gutter_style}|{gutter_reset} {input_style}{debug_slice}{input_reset}{eof_style}{eof}{eof_reset}",
+ gutter_style=gutter_style.render(),
+ gutter_reset=gutter_style.render_reset(),
+ input_style=input_style.render(),
+ input_reset=input_style.render_reset(),
+ eof_style=eof_style.render(),
+ eof_reset=eof_style.render_reset(),
+ );
+}
+
+pub fn end(
+ depth: usize,
+ name: &dyn crate::lib::std::fmt::Display,
+ count: usize,
+ consumed: Option<usize>,
+ severity: Severity,
+) {
+ let gutter_style = anstyle::Style::new().bold();
+
+ let (call_width, _) = column_widths();
+
+ let count = if 0 < count {
+ format!(":{count}")
+ } else {
+ "".to_owned()
+ };
+ let call_column = format!("{:depth$}< {name}{count}", "");
+
+ let (status_style, status) = match severity {
+ Severity::Success => {
+ let style = anstyle::Style::new().fg_color(Some(anstyle::AnsiColor::Green.into()));
+ let status = format!("+{}", consumed.unwrap_or_default());
+ (style, status)
+ }
+ Severity::Backtrack => (
+ anstyle::Style::new().fg_color(Some(anstyle::AnsiColor::Yellow.into())),
+ "backtrack".to_owned(),
+ ),
+ Severity::Cut => (
+ anstyle::Style::new().fg_color(Some(anstyle::AnsiColor::Red.into())),
+ "cut".to_owned(),
+ ),
+ Severity::Incomplete => (
+ anstyle::Style::new().fg_color(Some(anstyle::AnsiColor::Red.into())),
+ "incomplete".to_owned(),
+ ),
+ };
+
+ let writer = anstyle_stream::stderr();
+ let mut writer = writer.lock();
+ let _ = writeln!(
+ writer,
+ "{status_style}{call_column:call_width$}{status_reset} {gutter_style}|{gutter_reset} {status_style}{status}{status_reset}",
+ gutter_style=gutter_style.render(),
+ gutter_reset=gutter_style.render_reset(),
+ status_style=status_style.render(),
+ status_reset=status_style.render_reset(),
+ );
+}
+
+pub fn result(depth: usize, name: &dyn crate::lib::std::fmt::Display, severity: Severity) {
+ let gutter_style = anstyle::Style::new().bold();
+
+ let (call_width, _) = column_widths();
+
+ let call_column = format!("{:depth$}| {name}", "");
+
+ let (status_style, status) = match severity {
+ Severity::Success => (
+ anstyle::Style::new().fg_color(Some(anstyle::AnsiColor::Green.into())),
+ "",
+ ),
+ Severity::Backtrack => (
+ anstyle::Style::new().fg_color(Some(anstyle::AnsiColor::Yellow.into())),
+ "backtrack",
+ ),
+ Severity::Cut => (
+ anstyle::Style::new().fg_color(Some(anstyle::AnsiColor::Red.into())),
+ "cut",
+ ),
+ Severity::Incomplete => (
+ anstyle::Style::new().fg_color(Some(anstyle::AnsiColor::Red.into())),
+ "incomplete",
+ ),
+ };
+
+ let writer = anstyle_stream::stderr();
+ let mut writer = writer.lock();
+ let _ = writeln!(
+ writer,
+ "{status_style}{call_column:call_width$}{status_reset} {gutter_style}|{gutter_reset} {status_style}{status}{status_reset}",
+ gutter_style=gutter_style.render(),
+ gutter_reset=gutter_style.render_reset(),
+ status_style=status_style.render(),
+ status_reset=status_style.render_reset(),
+ );
+}
+
+fn column_widths() -> (usize, usize) {
+ let term_width = term_width();
+
+ let min_call_width = 40;
+ let min_input_width = 20;
+ let decor_width = 3;
+ let extra_width = term_width
+ .checked_sub(min_call_width + min_input_width + decor_width)
+ .unwrap_or_default();
+ let call_width = min_call_width + 2 * extra_width / 3;
+ let input_width = min_input_width + extra_width / 3;
+
+ (call_width, input_width)
+}
+
+fn term_width() -> usize {
+ columns_env().or_else(query_width).unwrap_or(80)
+}
+
+fn query_width() -> Option<usize> {
+ use is_terminal::IsTerminal;
+ if std::io::stderr().is_terminal() {
+ terminal_size::terminal_size().map(|(w, _h)| w.0.into())
+ } else {
+ None
+ }
+}
+
+fn columns_env() -> Option<usize> {
+ std::env::var("COLUMNS")
+ .ok()
+ .and_then(|c| c.parse::<usize>().ok())
+}
diff --git a/vendor/winnow-0.4.7/src/trace/mod.rs b/vendor/winnow-0.4.7/src/trace/mod.rs
new file mode 100644
index 000000000..e5eaf9451
--- /dev/null
+++ b/vendor/winnow-0.4.7/src/trace/mod.rs
@@ -0,0 +1,119 @@
+//! Parser execution tracing
+//!
+//! By default, nothing happens and tracing gets compiled away as a no-op. To enable tracing, use
+//! `--features debug`.
+//!
+//! # Example
+//!
+//!![Trace output from string example](https://raw.githubusercontent.com/winnow-rs/winnow/main/assets/trace.svg "Example output")
+
+#[cfg(feature = "debug")]
+mod internals;
+
+use crate::error::ErrMode;
+use crate::stream::Stream;
+use crate::Parser;
+
+#[cfg(all(feature = "debug", not(feature = "std")))]
+compile_error!("`debug` requires `std`");
+
+/// Trace the execution of the parser
+///
+/// Note that [`Parser::context` also provides high level trace information.
+///
+/// See [`trace` module][self] for more details.
+///
+/// # Example
+///
+/// ```rust
+/// # use winnow::{error::ErrMode, error::{Error, ErrorKind}, error::Needed, IResult};
+/// # use winnow::token::take_while;
+/// # use winnow::stream::AsChar;
+/// # use winnow::prelude::*;
+/// use winnow::trace::trace;
+///
+/// fn short_alpha(s: &[u8]) -> IResult<&[u8], &[u8]> {
+/// trace("short_alpha",
+/// take_while(3..=6, AsChar::is_alpha)
+/// ).parse_next(s)
+/// }
+///
+/// assert_eq!(short_alpha(b"latin123"), Ok((&b"123"[..], &b"latin"[..])));
+/// assert_eq!(short_alpha(b"lengthy"), Ok((&b"y"[..], &b"length"[..])));
+/// assert_eq!(short_alpha(b"latin"), Ok((&b""[..], &b"latin"[..])));
+/// assert_eq!(short_alpha(b"ed"), Err(ErrMode::Backtrack(Error::new(&b"ed"[..], ErrorKind::Slice))));
+/// assert_eq!(short_alpha(b"12345"), Err(ErrMode::Backtrack(Error::new(&b"12345"[..], ErrorKind::Slice))));
+/// ```
+#[cfg_attr(not(feature = "debug"), allow(unused_variables))]
+#[cfg_attr(not(feature = "debug"), allow(unused_mut))]
+#[cfg_attr(not(feature = "debug"), inline(always))]
+pub fn trace<I: Stream, O, E>(
+ name: impl crate::lib::std::fmt::Display,
+ mut parser: impl Parser<I, O, E>,
+) -> impl Parser<I, O, E> {
+ #[cfg(feature = "debug")]
+ {
+ let mut call_count = 0;
+ move |i: I| {
+ let depth = internals::Depth::new();
+ let original = i.clone();
+ internals::start(*depth, &name, call_count, &original);
+
+ let res = parser.parse_next(i);
+
+ let consumed = res.as_ref().ok().map(|(i, _)| {
+ if i.eof_offset() == 0 {
+ // Sometimes, an unrelated empty string is returned which can break `offset_to`
+ original.eof_offset()
+ } else {
+ original.offset_to(i)
+ }
+ });
+ let severity = internals::Severity::with_result(&res);
+ internals::end(*depth, &name, call_count, consumed, severity);
+ call_count += 1;
+
+ res
+ }
+ }
+ #[cfg(not(feature = "debug"))]
+ {
+ parser
+ }
+}
+
+#[cfg_attr(not(feature = "debug"), allow(unused_variables))]
+pub(crate) fn trace_result<T, E>(
+ name: impl crate::lib::std::fmt::Display,
+ res: &Result<T, ErrMode<E>>,
+) {
+ #[cfg(feature = "debug")]
+ {
+ let depth = internals::Depth::existing();
+ let severity = internals::Severity::with_result(res);
+ internals::result(*depth, &name, severity);
+ }
+}
+
+#[test]
+#[cfg(feature = "std")]
+#[cfg_attr(miri, ignore)]
+#[cfg(unix)]
+#[cfg(feature = "debug")]
+fn example() {
+ use term_transcript::{test::TestConfig, ShellOptions};
+
+ let path = snapbox::cmd::compile_example("string", ["--features=debug"]).unwrap();
+
+ let current_dir = path.parent().unwrap();
+ let cmd = path.file_name().unwrap();
+ // HACK: term_transcript doesn't allow non-UTF8 paths
+ let cmd = format!("./{}", cmd.to_string_lossy());
+
+ TestConfig::new(
+ ShellOptions::default()
+ .with_current_dir(current_dir)
+ .with_env("CLICOLOR_FORCE", "1"),
+ )
+ .test("assets/trace.svg", [cmd.as_str()]);
+}
diff --git a/vendor/writeable/.cargo-checksum.json b/vendor/writeable/.cargo-checksum.json
index 6e3c2fa88..3c61feaad 100644
--- a/vendor/writeable/.cargo-checksum.json
+++ b/vendor/writeable/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"551a12e55eee43c4c348c096726b395e0d8bddb73fe34d80e443cb4097cd1c60","Cargo.toml":"b1e660d7275c002b061d36b5c1e35f50da7b986df255aab216de54a52b7eb9fb","LICENSE":"4ad7541d66a407234e2c84902124cef325c29f3e966353efdb800bedb8b8da21","README.md":"a47b1fa1adda09e2ca28f7f49878c61d8f2057b8f3c42af7d39d646fedbd9934","benches/writeable.rs":"edc81c5524f98e77f0b3a45545606c4b526f63791e6dd8f90c88679c758c4834","examples/writeable_message.rs":"58bf4007f54f9f80428af7b687531837a294aecde533395a0a4c4cf55c9cad7d","src/impls.rs":"7f04eaf19583bbea13edd93783e2fcb37ea91d23cb34f6b53f94d9a8f3e1c627","src/lib.rs":"75edc4baf7f69a20c7d6af54f318f904e798b3d6c58eeb624ddd198114aef09a","src/ops.rs":"f201b36dc6a74d4137cca876b99a871555fe7bed7c784917ede49758a1717359","tests/writeable.rs":"6dc3db45174180bcbf8980e640525b441c31b0b9db238721888d8cc0bd998ded"},"package":"60e49e42bdb1d5dc76f4cd78102f8f0714d32edfa3efb82286eb0f0b1fc0da0f"} \ No newline at end of file
+{"files":{"Cargo.lock":"e502efaf9d132a24d0ddd42980713c95d6a4aaafa40e982e58c0dbd822121755","Cargo.toml":"e75fdd92c99a70f307a8531f4c23b9c08718e8d1063ad4c9f6bfee7068dab997","LICENSE":"853f87c96f3d249f200fec6db1114427bc8bdf4afddc93c576956d78152ce978","README.md":"8667ddc9209c9e148fdc3ca3ba9c5a46061e95a042a4e5abae29e9e3848d9278","benches/writeable.rs":"edc81c5524f98e77f0b3a45545606c4b526f63791e6dd8f90c88679c758c4834","examples/writeable_message.rs":"58bf4007f54f9f80428af7b687531837a294aecde533395a0a4c4cf55c9cad7d","src/impls.rs":"7f04eaf19583bbea13edd93783e2fcb37ea91d23cb34f6b53f94d9a8f3e1c627","src/lib.rs":"75edc4baf7f69a20c7d6af54f318f904e798b3d6c58eeb624ddd198114aef09a","src/ops.rs":"3d47d9c81652fafc1baf98c747d8be6b2145b26171a37d41307f84763c47f271","tests/writeable.rs":"6dc3db45174180bcbf8980e640525b441c31b0b9db238721888d8cc0bd998ded"},"package":"c0af0c3d13faebf8dda0b5256fa7096a2d5ccb662f7b9f54a40fe201077ab1c2"} \ No newline at end of file
diff --git a/vendor/writeable/Cargo.lock b/vendor/writeable/Cargo.lock
index 37b95f3f8..5112a29fb 100644
--- a/vendor/writeable/Cargo.lock
+++ b/vendor/writeable/Cargo.lock
@@ -3,6 +3,15 @@
version = 3
[[package]]
+name = "aho-corasick"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
name = "anes"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -14,7 +23,7 @@ version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
dependencies = [
- "hermit-abi 0.1.19",
+ "hermit-abi",
"libc",
"winapi",
]
@@ -33,9 +42,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bumpalo"
-version = "3.12.0"
+version = "3.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
+checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
[[package]]
name = "cast"
@@ -51,9 +60,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "ciborium"
-version = "0.2.0"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
+checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926"
dependencies = [
"ciborium-io",
"ciborium-ll",
@@ -62,15 +71,15 @@ dependencies = [
[[package]]
name = "ciborium-io"
-version = "0.2.0"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
+checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656"
[[package]]
name = "ciborium-ll"
-version = "0.2.0"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
+checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b"
dependencies = [
"ciborium-io",
"half",
@@ -78,9 +87,9 @@ dependencies = [
[[package]]
name = "clap"
-version = "3.2.23"
+version = "3.2.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
+checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123"
dependencies = [
"bitflags",
"clap_lex",
@@ -134,20 +143,10 @@ dependencies = [
]
[[package]]
-name = "crossbeam-channel"
-version = "0.5.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521"
-dependencies = [
- "cfg-if",
- "crossbeam-utils",
-]
-
-[[package]]
name = "crossbeam-deque"
-version = "0.8.2"
+version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc"
+checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
dependencies = [
"cfg-if",
"crossbeam-epoch",
@@ -156,9 +155,9 @@ dependencies = [
[[package]]
name = "crossbeam-epoch"
-version = "0.9.13"
+version = "0.9.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a"
+checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7"
dependencies = [
"autocfg",
"cfg-if",
@@ -169,24 +168,24 @@ dependencies = [
[[package]]
name = "crossbeam-utils"
-version = "0.8.14"
+version = "0.8.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f"
+checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
dependencies = [
"cfg-if",
]
[[package]]
name = "either"
-version = "1.8.1"
+version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
+checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
[[package]]
name = "getrandom"
-version = "0.2.8"
+version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
+checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
dependencies = [
"cfg-if",
"libc",
@@ -215,19 +214,10 @@ dependencies = [
]
[[package]]
-name = "hermit-abi"
-version = "0.2.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
-dependencies = [
- "libc",
-]
-
-[[package]]
name = "indexmap"
-version = "1.9.2"
+version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
+checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
dependencies = [
"autocfg",
"hashbrown",
@@ -244,15 +234,15 @@ dependencies = [
[[package]]
name = "itoa"
-version = "1.0.5"
+version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440"
+checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
[[package]]
name = "js-sys"
-version = "0.3.61"
+version = "0.3.64"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
+checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a"
dependencies = [
"wasm-bindgen",
]
@@ -265,52 +255,45 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
-version = "0.2.139"
+version = "0.2.148"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"
+checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b"
[[package]]
name = "log"
-version = "0.4.17"
+version = "0.4.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
-dependencies = [
- "cfg-if",
-]
+checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
[[package]]
-name = "memoffset"
-version = "0.7.1"
+name = "memchr"
+version = "2.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
-dependencies = [
- "autocfg",
-]
+checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c"
[[package]]
-name = "num-traits"
-version = "0.2.15"
+name = "memoffset"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
dependencies = [
"autocfg",
]
[[package]]
-name = "num_cpus"
-version = "1.15.0"
+name = "num-traits"
+version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
+checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
dependencies = [
- "hermit-abi 0.2.6",
- "libc",
+ "autocfg",
]
[[package]]
name = "once_cell"
-version = "1.17.0"
+version = "1.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66"
+checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
[[package]]
name = "oorandom"
@@ -320,15 +303,15 @@ checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
[[package]]
name = "os_str_bytes"
-version = "6.4.1"
+version = "6.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee"
+checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac"
[[package]]
name = "plotters"
-version = "0.3.4"
+version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
+checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45"
dependencies = [
"num-traits",
"plotters-backend",
@@ -339,15 +322,15 @@ dependencies = [
[[package]]
name = "plotters-backend"
-version = "0.3.4"
+version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
+checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609"
[[package]]
name = "plotters-svg"
-version = "0.3.3"
+version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
+checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab"
dependencies = [
"plotters-backend",
]
@@ -360,18 +343,18 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
[[package]]
name = "proc-macro2"
-version = "1.0.51"
+version = "1.0.67"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6"
+checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
-version = "1.0.23"
+version = "1.0.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"
+checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
dependencies = [
"proc-macro2",
]
@@ -408,9 +391,9 @@ dependencies = [
[[package]]
name = "rayon"
-version = "1.6.1"
+version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7"
+checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"
dependencies = [
"either",
"rayon-core",
@@ -418,36 +401,48 @@ dependencies = [
[[package]]
name = "rayon-core"
-version = "1.10.2"
+version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "356a0625f1954f730c0201cdab48611198dc6ce21f4acff55089b5a78e6e835b"
+checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"
dependencies = [
- "crossbeam-channel",
"crossbeam-deque",
"crossbeam-utils",
- "num_cpus",
]
[[package]]
name = "regex"
-version = "1.7.1"
+version = "1.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733"
+checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795"
dependencies = [
+ "aho-corasick",
+ "memchr",
"regex-syntax",
]
[[package]]
name = "regex-syntax"
-version = "0.6.28"
+version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
+checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
[[package]]
name = "ryu"
-version = "1.0.12"
+version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde"
+checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
[[package]]
name = "same-file"
@@ -460,24 +455,24 @@ dependencies = [
[[package]]
name = "scopeguard"
-version = "1.1.0"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]]
name = "serde"
-version = "1.0.152"
+version = "1.0.188"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb"
+checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.152"
+version = "1.0.188"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e"
+checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
dependencies = [
"proc-macro2",
"quote",
@@ -486,9 +481,9 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.93"
+version = "1.0.107"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cad406b69c91885b5107daf2c29572f6c8cdb3c66826821e286c533490c0bc76"
+checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65"
dependencies = [
"itoa",
"ryu",
@@ -497,9 +492,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "1.0.107"
+version = "2.0.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
+checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8"
dependencies = [
"proc-macro2",
"quote",
@@ -524,18 +519,17 @@ dependencies = [
[[package]]
name = "unicode-ident"
-version = "1.0.6"
+version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
[[package]]
name = "walkdir"
-version = "2.3.2"
+version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
+checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
dependencies = [
"same-file",
- "winapi",
"winapi-util",
]
@@ -547,9 +541,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasm-bindgen"
-version = "0.2.84"
+version = "0.2.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
+checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342"
dependencies = [
"cfg-if",
"wasm-bindgen-macro",
@@ -557,9 +551,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-backend"
-version = "0.2.84"
+version = "0.2.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
+checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd"
dependencies = [
"bumpalo",
"log",
@@ -572,9 +566,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.84"
+version = "0.2.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
+checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -582,9 +576,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.84"
+version = "0.2.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
+checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
dependencies = [
"proc-macro2",
"quote",
@@ -595,15 +589,15 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.84"
+version = "0.2.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
+checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
[[package]]
name = "web-sys"
-version = "0.3.61"
+version = "0.3.64"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
+checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -627,9 +621,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-util"
-version = "0.1.5"
+version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
dependencies = [
"winapi",
]
@@ -642,7 +636,7 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "writeable"
-version = "0.5.2"
+version = "0.5.3"
dependencies = [
"criterion",
"rand",
diff --git a/vendor/writeable/Cargo.toml b/vendor/writeable/Cargo.toml
index 0f7a615b1..17e496461 100644
--- a/vendor/writeable/Cargo.toml
+++ b/vendor/writeable/Cargo.toml
@@ -11,10 +11,12 @@
[package]
edition = "2021"
+rust-version = "1.66"
name = "writeable"
-version = "0.5.2"
+version = "0.5.3"
authors = ["The ICU4X Project Developers"]
include = [
+ "data/**/*",
"src/**/*",
"examples/**/*",
"benches/**/*",
@@ -25,32 +27,31 @@ include = [
]
description = "A more efficient alternative to fmt::Display"
readme = "README.md"
-license = "Unicode-DFS-2016"
+license-file = "LICENSE"
repository = "https://github.com/unicode-org/icu4x"
-[package.metadata.workspaces]
-independent = true
+[package.metadata.cargo-all-features]
+denylist = ["bench"]
[package.metadata.docs.rs]
all-features = true
-[package.metadata.cargo-all-features]
-denylist = ["bench"]
+[package.metadata.workspaces]
+independent = true
[lib]
-path = "src/lib.rs"
bench = false
[[bench]]
name = "writeable"
harness = false
-[dev-dependencies.criterion]
-version = "0.4"
-
[dev-dependencies.rand]
version = "0.8"
features = ["small_rng"]
[features]
bench = []
+
+[target."cfg(not(target_arch = \"wasm32\"))".dev-dependencies.criterion]
+version = "0.4"
diff --git a/vendor/writeable/LICENSE b/vendor/writeable/LICENSE
index 9858d01ab..9845aa5f4 100644
--- a/vendor/writeable/LICENSE
+++ b/vendor/writeable/LICENSE
@@ -1,49 +1,42 @@
-UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
-
-See Terms of Use <https://www.unicode.org/copyright.html>
-for definitions of Unicode Inc.’s Data Files and Software.
-
-NOTICE TO USER: Carefully read the following legal agreement.
-BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
-DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
-YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
-TERMS AND CONDITIONS OF THIS AGREEMENT.
-IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
-THE DATA FILES OR SOFTWARE.
+UNICODE LICENSE V3
COPYRIGHT AND PERMISSION NOTICE
-Copyright © 1991-2022 Unicode, Inc. All rights reserved.
-Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Unicode data files and any associated documentation
-(the "Data Files") or Unicode software and any associated documentation
-(the "Software") to deal in the Data Files or Software
-without restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, and/or sell copies of
-the Data Files or Software, and to permit persons to whom the Data Files
-or Software are furnished to do so, provided that either
-(a) this copyright and permission notice appear with all copies
-of the Data Files or Software, or
-(b) this copyright and permission notice appear in associated
-Documentation.
-
-THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
-NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
-DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THE DATA FILES OR SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale,
-use or other dealings in these Data Files or Software without prior
-written authorization of the copyright holder.
+Copyright © 2020-2023 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
—
diff --git a/vendor/writeable/README.md b/vendor/writeable/README.md
index 55343c37e..c69b91cf3 100644
--- a/vendor/writeable/README.md
+++ b/vendor/writeable/README.md
@@ -1,5 +1,7 @@
# writeable [![crates.io](https://img.shields.io/crates/v/writeable)](https://crates.io/crates/writeable)
+<!-- cargo-rdme start -->
+
`writeable` is a utility crate of the [`ICU4X`] project.
It includes [`Writeable`], a core trait representing an object that can be written to a
@@ -47,6 +49,8 @@ writeable::impl_display_with_writeable!(WelcomeMessage<'_>);
[`ICU4X`]: ../icu/index.html
+<!-- cargo-rdme end -->
+
## More Information
For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/writeable/src/ops.rs b/vendor/writeable/src/ops.rs
index 2ccad7d6d..a4c1ffd75 100644
--- a/vendor/writeable/src/ops.rs
+++ b/vendor/writeable/src/ops.rs
@@ -183,7 +183,7 @@ mod tests {
#[test]
fn test_sum() {
- let lens = vec![
+ let lens = [
LengthHint::exact(4),
LengthHint::exact(1),
LengthHint::exact(1),
@@ -193,7 +193,7 @@ mod tests {
LengthHint::exact(6)
);
- let lens = vec![
+ let lens = [
LengthHint::exact(4),
LengthHint::undefined(),
LengthHint::at_least(1),
@@ -203,7 +203,7 @@ mod tests {
LengthHint::at_least(5)
);
- let lens = vec![
+ let lens = [
LengthHint::exact(4),
LengthHint::undefined(),
LengthHint::at_most(1),
@@ -213,7 +213,7 @@ mod tests {
LengthHint::at_least(4)
);
- let lens = vec![4, 1, 1];
+ let lens = [4, 1, 1];
assert_eq!(
lens.iter().copied().sum::<LengthHint>(),
LengthHint::exact(6)
diff --git a/vendor/yoke-derive/.cargo-checksum.json b/vendor/yoke-derive/.cargo-checksum.json
index 48b34aa43..3c4448eb6 100644
--- a/vendor/yoke-derive/.cargo-checksum.json
+++ b/vendor/yoke-derive/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"62cbafa49653ed260b0d10c52ba306c2f4e1686ed62094c6af49310922d4c374","Cargo.toml":"cb5e3a33b52121d6dea28649568d71ae128342be1947f524ccb72aa547c58a17","LICENSE":"4ad7541d66a407234e2c84902124cef325c29f3e966353efdb800bedb8b8da21","README.md":"a386dfc08e98106071c34adf2cdfea6a60c5a1d71ca9c9ed383a4922148d14d7","examples/yoke_derive.rs":"787ad9872040733c243ec81e67e0b9651937d4e01670b6f050c13e82f1c24a4e","src/lib.rs":"39c0eef8c08b3e75156bcc2a0b9ceaccaf5fa6283ff211200ff77dd1cb0653e0","src/visitor.rs":"24545c1e81fd35c1d2bd38a1c8d1e684dd08faed4d10d75b103c371df4446c21"},"package":"af46c169923ed7516eef0aa32b56d2651b229f57458ebe46b49ddd6efef5b7a2"} \ No newline at end of file
+{"files":{"Cargo.lock":"c80e9d71c4c5ff2169fbc6684e4a13dae7d890480ff7a3e6be5c8ec88c9dcb2d","Cargo.toml":"156c91d9ecd919d595890094603759403db0812ab294d4d4bfeaaa3fc7ae78d6","LICENSE":"853f87c96f3d249f200fec6db1114427bc8bdf4afddc93c576956d78152ce978","README.md":"5004c9b0aa6e1f4d0e5c8919e14e0bad0cc6753cc589d82aa9521e1bc1fd39bf","examples/yoke_derive.rs":"787ad9872040733c243ec81e67e0b9651937d4e01670b6f050c13e82f1c24a4e","src/lib.rs":"39c0eef8c08b3e75156bcc2a0b9ceaccaf5fa6283ff211200ff77dd1cb0653e0","src/visitor.rs":"24545c1e81fd35c1d2bd38a1c8d1e684dd08faed4d10d75b103c371df4446c21"},"package":"d5e19fb6ed40002bab5403ffa37e53e0e56f914a4450c8765f533018db1db35f"} \ No newline at end of file
diff --git a/vendor/yoke-derive/Cargo.lock b/vendor/yoke-derive/Cargo.lock
index 12821c1bc..361ea9e8c 100644
--- a/vendor/yoke-derive/Cargo.lock
+++ b/vendor/yoke-derive/Cargo.lock
@@ -4,27 +4,33 @@ version = 3
[[package]]
name = "proc-macro2"
-version = "1.0.51"
+version = "1.0.67"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6"
+checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
-version = "1.0.23"
+version = "1.0.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"
+checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
dependencies = [
"proc-macro2",
]
[[package]]
+name = "stable_deref_trait"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+
+[[package]]
name = "syn"
-version = "1.0.107"
+version = "2.0.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
+checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8"
dependencies = [
"proc-macro2",
"quote",
@@ -33,9 +39,9 @@ dependencies = [
[[package]]
name = "synstructure"
-version = "0.12.6"
+version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
+checksum = "285ba80e733fac80aa4270fbcdf83772a79b80aa35c97075320abfee4a915b06"
dependencies = [
"proc-macro2",
"quote",
@@ -45,9 +51,9 @@ dependencies = [
[[package]]
name = "unicode-ident"
-version = "1.0.6"
+version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
[[package]]
name = "unicode-xid"
@@ -56,11 +62,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
[[package]]
-name = "yoke-derive"
+name = "yoke"
version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1848075a23a28f9773498ee9a0f2cf58fcbad4f8c0ccf84a210ab33c6ae495de"
+dependencies = [
+ "stable_deref_trait",
+]
+
+[[package]]
+name = "yoke-derive"
+version = "0.7.2"
dependencies = [
"proc-macro2",
"quote",
"syn",
"synstructure",
+ "yoke",
+ "zerovec",
+]
+
+[[package]]
+name = "zerofrom"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df54d76c3251de27615dfcce21e636c172dafb2549cd7fd93e21c66f6ca6bea2"
+
+[[package]]
+name = "zerovec"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "198f54134cd865f437820aa3b43d0ad518af4e68ee161b444cdd15d8e567c8ea"
+dependencies = [
+ "zerofrom",
]
diff --git a/vendor/yoke-derive/Cargo.toml b/vendor/yoke-derive/Cargo.toml
index 47c5a257b..90dd3ed12 100644
--- a/vendor/yoke-derive/Cargo.toml
+++ b/vendor/yoke-derive/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2021"
name = "yoke-derive"
-version = "0.7.1"
+version = "0.7.2"
authors = ["Manish Goregaokar <manishsmail@gmail.com>"]
description = "Custom derive for the yoke crate"
readme = "README.md"
@@ -29,7 +29,7 @@ categories = [
"caching",
"no-std",
]
-license = "Unicode-DFS-2016"
+license-file = "LICENSE"
repository = "https://github.com/unicode-org/icu4x"
[package.metadata.workspaces]
@@ -46,13 +46,19 @@ version = "1.0.27"
version = "1.0.9"
[dependencies.syn]
-version = "1.0.73"
+version = "2"
features = [
"derive",
"fold",
]
[dependencies.synstructure]
-version = "0.12.4"
+version = "0.13"
+
+[dev-dependencies.yoke]
+version = "0.7.1"
+default-features = false
-[dev-dependencies]
+[dev-dependencies.zerovec]
+version = "0.9.4"
+default-features = false
diff --git a/vendor/yoke-derive/LICENSE b/vendor/yoke-derive/LICENSE
index 9858d01ab..9845aa5f4 100644
--- a/vendor/yoke-derive/LICENSE
+++ b/vendor/yoke-derive/LICENSE
@@ -1,49 +1,42 @@
-UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
-
-See Terms of Use <https://www.unicode.org/copyright.html>
-for definitions of Unicode Inc.’s Data Files and Software.
-
-NOTICE TO USER: Carefully read the following legal agreement.
-BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
-DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
-YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
-TERMS AND CONDITIONS OF THIS AGREEMENT.
-IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
-THE DATA FILES OR SOFTWARE.
+UNICODE LICENSE V3
COPYRIGHT AND PERMISSION NOTICE
-Copyright © 1991-2022 Unicode, Inc. All rights reserved.
-Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Unicode data files and any associated documentation
-(the "Data Files") or Unicode software and any associated documentation
-(the "Software") to deal in the Data Files or Software
-without restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, and/or sell copies of
-the Data Files or Software, and to permit persons to whom the Data Files
-or Software are furnished to do so, provided that either
-(a) this copyright and permission notice appear with all copies
-of the Data Files or Software, or
-(b) this copyright and permission notice appear in associated
-Documentation.
-
-THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
-NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
-DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THE DATA FILES OR SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale,
-use or other dealings in these Data Files or Software without prior
-written authorization of the copyright holder.
+Copyright © 2020-2023 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
—
diff --git a/vendor/yoke-derive/README.md b/vendor/yoke-derive/README.md
index 00bb7fb3e..04ef27e06 100644
--- a/vendor/yoke-derive/README.md
+++ b/vendor/yoke-derive/README.md
@@ -1,7 +1,11 @@
# yoke-derive [![crates.io](https://img.shields.io/crates/v/yoke-derive)](https://crates.io/crates/yoke-derive)
+<!-- cargo-rdme start -->
+
Custom derives for `Yokeable` from the `yoke` crate.
+<!-- cargo-rdme end -->
+
## More Information
For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/yoke/.cargo-checksum.json b/vendor/yoke/.cargo-checksum.json
index f5a0ad2e7..0c84282d1 100644
--- a/vendor/yoke/.cargo-checksum.json
+++ b/vendor/yoke/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"5a6f2a19935a914a211ba055aa3e55d3fd39a83376baced7aa1415631f746beb","LICENSE":"4ad7541d66a407234e2c84902124cef325c29f3e966353efdb800bedb8b8da21","README.md":"30321954bbc84770e2b50e8cc6da2a9e98f97698cbf1fe829747d4f3c6f6f791","src/either.rs":"cc98640a3b0aa349631c0bf5a54c18ec6e1ee638612b557e35e3a191e9178d42","src/erased.rs":"a97a1be3436314e34903a59330a8f61f96f5543c73d96853c09c32392dd09898","src/lib.rs":"3952340babcc97002faf3e12c29da9cc42c6c15870a930658a764236a80b2139","src/macro_impls.rs":"f81ac8af77ac3641bfee116d6295f5f756f92d4b3b6c7d43a228cd313174d355","src/trait_hack.rs":"34c6979cbacd85de650ba4a1f4b1cc344451e229172394f289432cdb7a4fa0c0","src/yoke.rs":"c3b2d01cf255b2f1192e2ebe31bc6c1df6710832fceb525be64ac0c26df1117a","src/yokeable.rs":"1b2e04f620ab7c06c557d23c44b7ebb67736ae239c44277f4fbefbacc011e549","src/zero_from.rs":"71d97f87e003db0eb0e97064509bdf9355622ccd655549f926b6a0d9119db3ee"},"package":"1848075a23a28f9773498ee9a0f2cf58fcbad4f8c0ccf84a210ab33c6ae495de"} \ No newline at end of file
+{"files":{"Cargo.toml":"8d60515d0ff0f2ff45e4e51972d6eb5884a280fd40993cdc8d3525d19dfde7f4","LICENSE":"853f87c96f3d249f200fec6db1114427bc8bdf4afddc93c576956d78152ce978","README.md":"7caeea392483abdb034071f43cd056c7a69940b77a0e65ad7f37f4657107d4a3","src/either.rs":"cc98640a3b0aa349631c0bf5a54c18ec6e1ee638612b557e35e3a191e9178d42","src/erased.rs":"ebd156e832b5e67c599c6938cfbe85cd11a6088818a6981f56911cffb49e0a5f","src/kinda_sorta_dangling.rs":"178a8185d03c45dbdccdc574aa95777d52d4a36bb224a0d7bc3f29b5de39576a","src/lib.rs":"a143f3e85539a73c909d950bcc20b101af353912b9898d4a5b091fae9fcdd874","src/macro_impls.rs":"f81ac8af77ac3641bfee116d6295f5f756f92d4b3b6c7d43a228cd313174d355","src/trait_hack.rs":"34c6979cbacd85de650ba4a1f4b1cc344451e229172394f289432cdb7a4fa0c0","src/yoke.rs":"99fb6866741ad0d4d704bb167db407cc0aeb5406b24c71fb4be43922023af0e5","src/yokeable.rs":"1b2e04f620ab7c06c557d23c44b7ebb67736ae239c44277f4fbefbacc011e549","src/zero_from.rs":"71d97f87e003db0eb0e97064509bdf9355622ccd655549f926b6a0d9119db3ee","tests/bincode.rs":"3cc3c73af5cd5e44deaf3eb172257d9e2eedbbc5bf4abc4e04648d21bb667f5b","tests/miri.rs":"fd119cfbf1abc39463e3be5145966962853d1f6771826c003449a06b3e8acbea"},"package":"61e38c508604d6bbbd292dadb3c02559aa7fff6b654a078a36217cad871636e4"} \ No newline at end of file
diff --git a/vendor/yoke/Cargo.toml b/vendor/yoke/Cargo.toml
index f6e400a64..856db2a70 100644
--- a/vendor/yoke/Cargo.toml
+++ b/vendor/yoke/Cargo.toml
@@ -11,13 +11,16 @@
[package]
edition = "2021"
+rust-version = "1.66"
name = "yoke"
-version = "0.7.1"
+version = "0.7.2"
authors = ["Manish Goregaokar <manishsmail@gmail.com>"]
include = [
+ "data/**/*",
"src/**/*",
"examples/**/*",
"benches/**/*",
+ "tests/**/*",
"Cargo.toml",
"LICENSE",
"README.md",
@@ -37,15 +40,18 @@ categories = [
"caching",
"no-std",
]
-license = "Unicode-DFS-2016"
+license-file = "LICENSE"
repository = "https://github.com/unicode-org/icu4x"
-[package.metadata.workspaces]
-independent = true
+[package.metadata.cargo-all-features]
+max_combination_size = 3
[package.metadata.docs.rs]
all-features = true
+[package.metadata.workspaces]
+independent = true
+
[dependencies.serde]
version = "1.0"
optional = true
@@ -56,8 +62,9 @@ version = "1.2.0"
default-features = false
[dependencies.yoke-derive]
-version = "0.7.0"
+version = "0.7.1"
optional = true
+default-features = false
[dependencies.zerofrom]
version = "0.1.1"
@@ -84,3 +91,5 @@ derive = [
"dep:yoke-derive",
"zerofrom/derive",
]
+serde = ["dep:serde"]
+zerofrom = ["dep:zerofrom"]
diff --git a/vendor/yoke/LICENSE b/vendor/yoke/LICENSE
index 9858d01ab..9845aa5f4 100644
--- a/vendor/yoke/LICENSE
+++ b/vendor/yoke/LICENSE
@@ -1,49 +1,42 @@
-UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
-
-See Terms of Use <https://www.unicode.org/copyright.html>
-for definitions of Unicode Inc.’s Data Files and Software.
-
-NOTICE TO USER: Carefully read the following legal agreement.
-BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
-DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
-YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
-TERMS AND CONDITIONS OF THIS AGREEMENT.
-IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
-THE DATA FILES OR SOFTWARE.
+UNICODE LICENSE V3
COPYRIGHT AND PERMISSION NOTICE
-Copyright © 1991-2022 Unicode, Inc. All rights reserved.
-Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Unicode data files and any associated documentation
-(the "Data Files") or Unicode software and any associated documentation
-(the "Software") to deal in the Data Files or Software
-without restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, and/or sell copies of
-the Data Files or Software, and to permit persons to whom the Data Files
-or Software are furnished to do so, provided that either
-(a) this copyright and permission notice appear with all copies
-of the Data Files or Software, or
-(b) this copyright and permission notice appear in associated
-Documentation.
-
-THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
-NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
-DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THE DATA FILES OR SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale,
-use or other dealings in these Data Files or Software without prior
-written authorization of the copyright holder.
+Copyright © 2020-2023 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
—
diff --git a/vendor/yoke/README.md b/vendor/yoke/README.md
index f7577b8d0..23c1ac8c3 100644
--- a/vendor/yoke/README.md
+++ b/vendor/yoke/README.md
@@ -1,5 +1,7 @@
# yoke [![crates.io](https://img.shields.io/crates/v/yoke)](https://crates.io/crates/yoke)
+<!-- cargo-rdme start -->
+
This crate provides [`Yoke<Y, C>`][Yoke], which allows one to "yoke" (attach) a zero-copy deserialized
object (say, a [`Cow<'a, str>`](alloc::borrow::Cow)) to the source it was deserialized from, (say, an [`Rc<[u8]>`](alloc::rc::Rc)),
known in this crate as a "cart", producing a type that looks like `Yoke<Cow<'static, str>, Rc<[u8]>>`
@@ -22,6 +24,8 @@ when necessary.
See the documentation of [`Yoke`] for more details.
+<!-- cargo-rdme end -->
+
## More Information
For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/yoke/src/erased.rs b/vendor/yoke/src/erased.rs
index bc4de9791..4395404a6 100644
--- a/vendor/yoke/src/erased.rs
+++ b/vendor/yoke/src/erased.rs
@@ -7,7 +7,7 @@
//! See the docs of [`Yoke::erase_rc_cart()`](crate::Yoke::erase_rc_cart)
//! and [`Yoke::erase_box_cart()`](crate::Yoke::erase_box_cart) for more info.
//!
-//! Available with the `"alloc"` Cargo feature enabled.
+//! ✨ *Enabled with the `alloc` Cargo feature.*
use alloc::boxed::Box;
use alloc::rc::Rc;
@@ -25,17 +25,17 @@ impl<T: 'static> ErasedDestructor for T {}
///
/// See the docs of [`Yoke::erase_arc_cart()`](crate::Yoke::erase_rc_cart) for more info.
///
-/// Available with the `"alloc"` Cargo feature enabled.
+/// ✨ *Enabled with the `alloc` Cargo feature.*
pub type ErasedArcCart = Arc<dyn ErasedDestructor + Send + Sync>;
/// A type-erased Cart that has `Rc` semantics
///
/// See the docs of [`Yoke::erase_rc_cart()`](crate::Yoke::erase_rc_cart) for more info.
///
-/// Available with the `"alloc"` Cargo feature enabled.
+/// ✨ *Enabled with the `alloc` Cargo feature.*
pub type ErasedRcCart = Rc<dyn ErasedDestructor>;
/// A type-erased Cart that has `Box` semantics
///
/// See the docs of [`Yoke::erase_box_cart()`](crate::Yoke::erase_box_cart) for more info.
///
-/// Available with the `"alloc"` Cargo feature enabled.
+/// ✨ *Enabled with the `alloc` Cargo feature.*
pub type ErasedBoxCart = Box<dyn ErasedDestructor>;
diff --git a/vendor/yoke/src/kinda_sorta_dangling.rs b/vendor/yoke/src/kinda_sorta_dangling.rs
new file mode 100644
index 000000000..32e1f5709
--- /dev/null
+++ b/vendor/yoke/src/kinda_sorta_dangling.rs
@@ -0,0 +1,94 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use core::mem::{ManuallyDrop, MaybeUninit};
+use core::ops::{Deref, DerefMut};
+
+/// This type is intended to be similar to the type `MaybeDangling<T>`
+/// proposed in [RFC 3336].
+///
+/// The effect of this is that in Rust's safety model, types inside here are not
+/// expected to have any memory dependent validity properties (`dereferenceable`, `noalias`).
+///
+/// See [#3696] for a testcase where `Yoke` fails this under miri's field-retagging mode.
+///
+/// This has `T: 'static` since we don't need anything
+/// else and we don't want to have to think (more) about variance over lifetimes or dropck.
+///
+/// After [RFC 3336] lands we can use `MaybeDangling` instead.
+///
+/// Note that a version of this type also exists publicly as the [`maybe_dangling`]
+/// crate; which also exports a patched `ManuallyDrop` with similar semantics and
+/// does not require `T: 'static`. Consider using this if you need something more general
+/// and are okay with adding dependencies.
+///
+/// [RFC 3336]: https://github.com/rust-lang/rfcs/pull/3336
+/// [#3696]: https://github.com/unicode-org/icu4x/issues/3696
+/// [`maybe_dangling`](https://docs.rs/maybe-dangling/0.1.0/maybe_dangling/struct.MaybeDangling.html)
+#[repr(transparent)]
+pub(crate) struct KindaSortaDangling<T: 'static> {
+ /// Safety invariant: This is always an initialized T, never uninit or other
+ /// invalid bit patterns. Its drop glue will execute during Drop::drop rather than
+ /// during the drop glue for KindaSortaDangling, which means that we have to be careful about
+ /// not touching the values as initialized during `drop` after that, but that's a short period of time.
+ dangle: MaybeUninit<T>,
+}
+
+impl<T: 'static> KindaSortaDangling<T> {
+ #[inline]
+ pub(crate) const fn new(dangle: T) -> Self {
+ KindaSortaDangling {
+ dangle: MaybeUninit::new(dangle),
+ }
+ }
+ #[inline]
+ pub(crate) fn into_inner(self) -> T {
+ // Self has a destructor, we want to avoid having it be called
+ let manual = ManuallyDrop::new(self);
+ // Safety:
+ // We can call assume_init_read() due to the library invariant on this type,
+ // however since it is a read() we must be careful about data duplication.
+ // The only code using `self` after this is the drop glue, which we have disabled via
+ // the ManuallyDrop.
+ unsafe { manual.dangle.assume_init_read() }
+ }
+}
+
+impl<T: 'static> Deref for KindaSortaDangling<T> {
+ type Target = T;
+ #[inline]
+ fn deref(&self) -> &T {
+ // Safety: Safe due to the safety invariant on `dangle`;
+ // we can always assume initialized
+ unsafe { self.dangle.assume_init_ref() }
+ }
+}
+
+impl<T: 'static> DerefMut for KindaSortaDangling<T> {
+ #[inline]
+ fn deref_mut(&mut self) -> &mut T {
+ // Safety: Safe due to the safety invariant on `dangle`;
+ // we can always assume initialized
+ unsafe { self.dangle.assume_init_mut() }
+ }
+}
+
+impl<T: 'static> Drop for KindaSortaDangling<T> {
+ #[inline]
+ fn drop(&mut self) {
+ unsafe {
+ // Safety: We are reading and dropping a valid initialized T.
+ //
+ // As `drop_in_place()` is a `read()`-like duplication operation we must be careful that the original value isn't
+ // used afterwards. It won't be because this is drop and the only
+ // code that will run after this is `self`'s drop glue, and that drop glue is empty
+ // because MaybeUninit has no drop.
+ //
+ // We use `drop_in_place()` instead of `let _ = ... .assume_init_read()` to avoid creating a move
+ // of the inner `T` (without `KindaSortaDangling` protection!) type into a local -- we don't want to
+ // assert any of `T`'s memory-related validity properties here.
+ self.dangle.as_mut_ptr().drop_in_place();
+ }
+ }
+}
diff --git a/vendor/yoke/src/lib.rs b/vendor/yoke/src/lib.rs
index 289b47412..e5adca62f 100644
--- a/vendor/yoke/src/lib.rs
+++ b/vendor/yoke/src/lib.rs
@@ -48,6 +48,7 @@ extern crate alloc;
pub mod either;
#[cfg(feature = "alloc")]
pub mod erased;
+mod kinda_sorta_dangling;
mod macro_impls;
pub mod trait_hack;
mod yoke;
diff --git a/vendor/yoke/src/yoke.rs b/vendor/yoke/src/yoke.rs
index ef76aa86a..22f14d3dc 100644
--- a/vendor/yoke/src/yoke.rs
+++ b/vendor/yoke/src/yoke.rs
@@ -5,6 +5,7 @@
use crate::either::EitherCart;
#[cfg(feature = "alloc")]
use crate::erased::{ErasedArcCart, ErasedBoxCart, ErasedRcCart};
+use crate::kinda_sorta_dangling::KindaSortaDangling;
use crate::trait_hack::YokeTraitHack;
use crate::Yokeable;
use core::marker::PhantomData;
@@ -74,14 +75,39 @@ use alloc::sync::Arc;
/// assert_eq!(&**yoke.get(), "hello");
/// assert!(matches!(yoke.get(), &Cow::Borrowed(_)));
/// ```
-#[derive(Debug)]
pub struct Yoke<Y: for<'a> Yokeable<'a>, C> {
// must be the first field for drop order
// this will have a 'static lifetime parameter, that parameter is a lie
- yokeable: Y,
+ yokeable: KindaSortaDangling<Y>,
cart: C,
}
+// Manual `Debug` implementation, since the derived one would be unsound.
+// See https://github.com/unicode-org/icu4x/issues/3685
+impl<Y: for<'a> Yokeable<'a>, C: core::fmt::Debug> core::fmt::Debug for Yoke<Y, C>
+where
+ for<'a> <Y as Yokeable<'a>>::Output: core::fmt::Debug,
+{
+ fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
+ f.debug_struct("Yoke")
+ .field("yokeable", self.get())
+ .field("cart", self.backing_cart())
+ .finish()
+ }
+}
+
+#[test]
+fn test_debug() {
+ let local_data = "foo".to_owned();
+ let y1 = Yoke::<alloc::borrow::Cow<'static, str>, Rc<String>>::attach_to_zero_copy_cart(
+ Rc::new(local_data),
+ );
+ assert_eq!(
+ format!("{y1:?}"),
+ r#"Yoke { yokeable: "foo", cart: "foo" }"#,
+ );
+}
+
impl<Y: for<'a> Yokeable<'a>, C: StableDeref> Yoke<Y, C>
where
<C as Deref>::Target: 'static,
@@ -129,7 +155,7 @@ where
{
let deserialized = f(cart.deref());
Self {
- yokeable: unsafe { Y::make(deserialized) },
+ yokeable: KindaSortaDangling::new(unsafe { Y::make(deserialized) }),
cart,
}
}
@@ -145,7 +171,7 @@ where
{
let deserialized = f(cart.deref())?;
Ok(Self {
- yokeable: unsafe { Y::make(deserialized) },
+ yokeable: KindaSortaDangling::new(unsafe { Y::make(deserialized) }),
cart,
})
}
@@ -418,7 +444,10 @@ impl<Y: for<'a> Yokeable<'a>> Yoke<Y, ()> {
/// assert_eq!(yoke.get(), "hello");
/// ```
pub fn new_always_owned(yokeable: Y) -> Self {
- Self { yokeable, cart: () }
+ Self {
+ yokeable: KindaSortaDangling::new(yokeable),
+ cart: (),
+ }
}
/// Obtain the yokeable out of a `Yoke<Y, ()>`
@@ -427,7 +456,7 @@ impl<Y: for<'a> Yokeable<'a>> Yoke<Y, ()> {
/// fine for `Yoke<Y, ()>` since there are no actual internal
/// references
pub fn into_yokeable(self) -> Y {
- self.yokeable
+ self.yokeable.into_inner()
}
}
@@ -456,9 +485,9 @@ impl<Y: for<'a> Yokeable<'a>, C: StableDeref> Yoke<Y, Option<C>> {
///
/// assert_eq!(yoke.get(), "hello");
/// ```
- pub fn new_owned(yokeable: Y) -> Self {
+ pub const fn new_owned(yokeable: Y) -> Self {
Self {
- yokeable,
+ yokeable: KindaSortaDangling::new(yokeable),
cart: None,
}
}
@@ -470,7 +499,7 @@ impl<Y: for<'a> Yokeable<'a>, C: StableDeref> Yoke<Y, Option<C>> {
pub fn try_into_yokeable(self) -> Result<Y, Self> {
match self.cart {
Some(_) => Err(self),
- None => Ok(self.yokeable),
+ None => Ok(self.yokeable.into_inner()),
}
}
}
@@ -516,7 +545,7 @@ where
// We have an &T not a T, and we can clone YokeTraitHack<T>
let this_hack = YokeTraitHack(this).into_ref();
Yoke {
- yokeable: unsafe { Y::make(this_hack.clone().0) },
+ yokeable: KindaSortaDangling::new(unsafe { Y::make(this_hack.clone().0) }),
cart: self.cart.clone(),
}
}
@@ -630,9 +659,9 @@ impl<Y: for<'a> Yokeable<'a>, C> Yoke<Y, C> {
PhantomData<&'a ()>,
) -> <P as Yokeable<'a>>::Output,
{
- let p = f(self.yokeable.transform_owned(), PhantomData);
+ let p = f(self.yokeable.into_inner().transform_owned(), PhantomData);
Yoke {
- yokeable: unsafe { P::make(p) },
+ yokeable: KindaSortaDangling::new(unsafe { P::make(p) }),
cart: self.cart,
}
}
@@ -653,7 +682,7 @@ impl<Y: for<'a> Yokeable<'a>, C> Yoke<Y, C> {
{
let p = f(self.get(), PhantomData);
Yoke {
- yokeable: unsafe { P::make(p) },
+ yokeable: KindaSortaDangling::new(unsafe { P::make(p) }),
cart: self.cart.clone(),
}
}
@@ -728,9 +757,9 @@ impl<Y: for<'a> Yokeable<'a>, C> Yoke<Y, C> {
PhantomData<&'a ()>,
) -> Result<<P as Yokeable<'a>>::Output, E>,
{
- let p = f(self.yokeable.transform_owned(), PhantomData)?;
+ let p = f(self.yokeable.into_inner().transform_owned(), PhantomData)?;
Ok(Yoke {
- yokeable: unsafe { P::make(p) },
+ yokeable: KindaSortaDangling::new(unsafe { P::make(p) }),
cart: self.cart,
})
}
@@ -751,7 +780,7 @@ impl<Y: for<'a> Yokeable<'a>, C> Yoke<Y, C> {
{
let p = f(self.get(), PhantomData)?;
Ok(Yoke {
- yokeable: unsafe { P::make(p) },
+ yokeable: KindaSortaDangling::new(unsafe { P::make(p) }),
cart: self.cart.clone(),
})
}
@@ -772,9 +801,13 @@ impl<Y: for<'a> Yokeable<'a>, C> Yoke<Y, C> {
where
P: for<'a> Yokeable<'a>,
{
- let p = f(self.yokeable.transform_owned(), capture, PhantomData);
+ let p = f(
+ self.yokeable.into_inner().transform_owned(),
+ capture,
+ PhantomData,
+ );
Yoke {
- yokeable: unsafe { P::make(p) },
+ yokeable: KindaSortaDangling::new(unsafe { P::make(p) }),
cart: self.cart,
}
}
@@ -799,7 +832,7 @@ impl<Y: for<'a> Yokeable<'a>, C> Yoke<Y, C> {
{
let p = f(self.get(), capture, PhantomData);
Yoke {
- yokeable: unsafe { P::make(p) },
+ yokeable: KindaSortaDangling::new(unsafe { P::make(p) }),
cart: self.cart.clone(),
}
}
@@ -822,9 +855,13 @@ impl<Y: for<'a> Yokeable<'a>, C> Yoke<Y, C> {
where
P: for<'a> Yokeable<'a>,
{
- let p = f(self.yokeable.transform_owned(), capture, PhantomData)?;
+ let p = f(
+ self.yokeable.into_inner().transform_owned(),
+ capture,
+ PhantomData,
+ )?;
Ok(Yoke {
- yokeable: unsafe { P::make(p) },
+ yokeable: KindaSortaDangling::new(unsafe { P::make(p) }),
cart: self.cart,
})
}
@@ -850,7 +887,7 @@ impl<Y: for<'a> Yokeable<'a>, C> Yoke<Y, C> {
{
let p = f(self.get(), capture, PhantomData)?;
Ok(Yoke {
- yokeable: unsafe { P::make(p) },
+ yokeable: KindaSortaDangling::new(unsafe { P::make(p) }),
cart: self.cart.clone(),
})
}
@@ -870,6 +907,8 @@ impl<Y: for<'a> Yokeable<'a>, C: 'static + Sized> Yoke<Y, Rc<C>> {
/// In case the cart type `C` is not already an `Rc<T>`, you can use
/// [`Yoke::wrap_cart_in_rc()`] to wrap it.
///
+ /// ✨ *Enabled with the `alloc` Cargo feature.*
+ ///
/// # Example
///
/// ```rust
@@ -891,8 +930,6 @@ impl<Y: for<'a> Yokeable<'a>, C: 'static + Sized> Yoke<Y, Rc<C>> {
///
/// // Now erased1 and erased2 have the same type!
/// ```
- ///
- /// Available with the `"alloc"` Cargo feature enabled.
pub fn erase_rc_cart(self) -> Yoke<Y, ErasedRcCart> {
unsafe {
// safe because the cart is preserved, just
@@ -916,6 +953,8 @@ impl<Y: for<'a> Yokeable<'a>, C: 'static + Sized + Send + Sync> Yoke<Y, Arc<C>>
/// In case the cart type `C` is not already an `Arc<T>`, you can use
/// [`Yoke::wrap_cart_in_arc()`] to wrap it.
///
+ /// ✨ *Enabled with the `alloc` Cargo feature.*
+ ///
/// # Example
///
/// ```rust
@@ -937,8 +976,6 @@ impl<Y: for<'a> Yokeable<'a>, C: 'static + Sized + Send + Sync> Yoke<Y, Arc<C>>
///
/// // Now erased1 and erased2 have the same type!
/// ```
- ///
- /// Available with the `"alloc"` Cargo feature enabled.
pub fn erase_arc_cart(self) -> Yoke<Y, ErasedArcCart> {
unsafe {
// safe because the cart is preserved, just
@@ -962,6 +999,8 @@ impl<Y: for<'a> Yokeable<'a>, C: 'static + Sized> Yoke<Y, Box<C>> {
/// In case the cart type `C` is not already `Box<T>`, you can use
/// [`Yoke::wrap_cart_in_box()`] to wrap it.
///
+ /// ✨ *Enabled with the `alloc` Cargo feature.*
+ ///
/// # Example
///
/// ```rust
@@ -983,8 +1022,6 @@ impl<Y: for<'a> Yokeable<'a>, C: 'static + Sized> Yoke<Y, Box<C>> {
///
/// // Now erased1 and erased2 have the same type!
/// ```
- ///
- /// Available with the `"alloc"` Cargo feature enabled.
pub fn erase_box_cart(self) -> Yoke<Y, ErasedBoxCart> {
unsafe {
// safe because the cart is preserved, just
@@ -999,7 +1036,7 @@ impl<Y: for<'a> Yokeable<'a>, C> Yoke<Y, C> {
/// Helper function allowing one to wrap the cart type `C` in a `Box<T>`.
/// Can be paired with [`Yoke::erase_box_cart()`]
///
- /// Available with the `"alloc"` Cargo feature enabled.
+ /// ✨ *Enabled with the `alloc` Cargo feature.*
#[inline]
pub fn wrap_cart_in_box(self) -> Yoke<Y, Box<C>> {
unsafe {
@@ -1011,7 +1048,7 @@ impl<Y: for<'a> Yokeable<'a>, C> Yoke<Y, C> {
/// Can be paired with [`Yoke::erase_rc_cart()`], or generally used
/// to make the [`Yoke`] cloneable.
///
- /// Available with the `"alloc"` Cargo feature enabled.
+ /// ✨ *Enabled with the `alloc` Cargo feature.*
#[inline]
pub fn wrap_cart_in_rc(self) -> Yoke<Y, Rc<C>> {
unsafe {
@@ -1023,7 +1060,7 @@ impl<Y: for<'a> Yokeable<'a>, C> Yoke<Y, C> {
/// Can be paired with [`Yoke::erase_arc_cart()`], or generally used
/// to make the [`Yoke`] cloneable.
///
- /// Available with the `"alloc"` Cargo feature enabled.
+ /// ✨ *Enabled with the `alloc` Cargo feature.*
#[inline]
pub fn wrap_cart_in_arc(self) -> Yoke<Y, Arc<C>> {
unsafe {
diff --git a/vendor/yoke/tests/bincode.rs b/vendor/yoke/tests/bincode.rs
new file mode 100644
index 000000000..7211e46ff
--- /dev/null
+++ b/vendor/yoke/tests/bincode.rs
@@ -0,0 +1,83 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+// This test is a duplicate of one of the doctests, but is written separately
+// since `cargo miri test` doesn't work on doctests yet
+
+use std::borrow::Cow;
+use std::mem;
+use std::rc::Rc;
+use yoke::{Yoke, Yokeable};
+
+fn load_from_cache(_filename: &str) -> Rc<[u8]> {
+ // dummy implementation
+ Rc::new([0x5, 0, 0, 0, 0, 0, 0, 0, 0x68, 0x65, 0x6c, 0x6c, 0x6f])
+}
+
+fn load_object(filename: &str) -> Yoke<Bar<'static>, Rc<[u8]>> {
+ let rc: Rc<[u8]> = load_from_cache(filename);
+ Yoke::<Bar<'static>, Rc<[u8]>>::attach_to_cart(rc, |data: &[u8]| {
+ // A real implementation would properly deserialize `Bar` as a whole
+ Bar {
+ numbers: Cow::Borrowed(bincode::deserialize(data).unwrap()),
+ string: Cow::Borrowed(bincode::deserialize(data).unwrap()),
+ owned: Vec::new(),
+ }
+ })
+}
+
+// also implements Yokeable
+struct Bar<'a> {
+ numbers: Cow<'a, [u8]>,
+ string: Cow<'a, str>,
+ owned: Vec<u8>,
+}
+
+unsafe impl<'a> Yokeable<'a> for Bar<'static> {
+ type Output = Bar<'a>;
+ #[inline]
+ fn transform(&'a self) -> &'a Bar<'a> {
+ self
+ }
+ #[inline]
+ fn transform_owned(self) -> Bar<'a> {
+ self
+ }
+ #[inline]
+ unsafe fn make(from: Bar<'a>) -> Self {
+ let ret = mem::transmute_copy(&from);
+ mem::forget(from);
+ ret
+ }
+ #[inline]
+ fn transform_mut<F>(&'a mut self, f: F)
+ where
+ F: 'static + FnOnce(&'a mut Self::Output),
+ {
+ unsafe { f(mem::transmute(self)) }
+ }
+}
+
+#[test]
+fn test_load() {
+ // `load_object()` deserializes an object from a file
+ let mut bar = load_object("filename.bincode");
+ assert_eq!(bar.get().string, "hello");
+ assert!(matches!(bar.get().string, Cow::Borrowed(_)));
+ assert_eq!(&*bar.get().numbers, &[0x68, 0x65, 0x6c, 0x6c, 0x6f]);
+ assert!(matches!(bar.get().numbers, Cow::Borrowed(_)));
+ assert_eq!(&*bar.get().owned, &[]);
+
+ bar.with_mut(|bar| {
+ bar.string.to_mut().push_str(" world");
+ bar.owned.extend_from_slice(&[1, 4, 1, 5, 9]);
+ });
+
+ assert_eq!(bar.get().string, "hello world");
+ assert!(matches!(bar.get().string, Cow::Owned(_)));
+ assert_eq!(&*bar.get().owned, &[1, 4, 1, 5, 9]);
+ // Unchanged and still Cow::Borrowed
+ assert_eq!(&*bar.get().numbers, &[0x68, 0x65, 0x6c, 0x6c, 0x6f]);
+ assert!(matches!(bar.get().numbers, Cow::Borrowed(_)));
+}
diff --git a/vendor/yoke/tests/miri.rs b/vendor/yoke/tests/miri.rs
new file mode 100644
index 000000000..0b92af2cc
--- /dev/null
+++ b/vendor/yoke/tests/miri.rs
@@ -0,0 +1,15 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+use yoke::Yoke;
+
+// Test for strong protection, should pass under miri with -Zmiri-retag-fields
+// See https://github.com/unicode-org/icu4x/issues/3696
+
+fn example(_: Yoke<&'static [u8], Vec<u8>>) {}
+
+#[test]
+fn run_test() {
+ example(Yoke::attach_to_cart(vec![0, 1, 2], |data| data));
+}
diff --git a/vendor/zerofrom-derive/.cargo-checksum.json b/vendor/zerofrom-derive/.cargo-checksum.json
index 2e4a173e0..18bdf7b25 100644
--- a/vendor/zerofrom-derive/.cargo-checksum.json
+++ b/vendor/zerofrom-derive/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"c066c6ce9b35f0c703bfa8ac45bb6780d499edaa5cb6437dc498ac0c38d609d8","Cargo.toml":"57e4d1407e5cdb86ebf4e520fd01cfbc9448e1886f2ce5ef81ae5cf48c440e3e","LICENSE":"4ad7541d66a407234e2c84902124cef325c29f3e966353efdb800bedb8b8da21","README.md":"11a51a5a18692b4ba67b60b556c06cce8b0c81a0c7dd82f818893207840fb052","examples/zf_derive.rs":"16fca391d8aeff66575c6f4ca5587827a159eae561f94f49507984f76e9c884d","src/lib.rs":"6b6473461c8b5aed34c652e24affb2c067f62003c06f3251fdf10ba6f6639033","src/visitor.rs":"644492b09434a35d715f4d32c72db3184a9c05f26177d7492e816f063b25663c"},"package":"b4eae7c1f7d4b8eafce526bc0771449ddc2f250881ae31c50d22c032b5a1c499"} \ No newline at end of file
+{"files":{"Cargo.lock":"b62effc5afdc9fb930c8fbe35b9bd81ed4a1c2a1b565fbfe784368dc1fa0887e","Cargo.toml":"e9741aae41f8ae616b3dcb825b41778ba28302d7e8b6d95d9f5dfa00ea4e9bb1","LICENSE":"853f87c96f3d249f200fec6db1114427bc8bdf4afddc93c576956d78152ce978","README.md":"2ef78913a98fb26c912c47c3c96167b9b57524754dc4857fe18a2122fec4985e","examples/zf_derive.rs":"abc9e44e0baf26f2109b57c34fa69d6e550613dc7dad234c67eebd4bcde564a8","src/lib.rs":"ffca0d1bea178643e6855e084e36f85ce47f7ce0edc4b7faff086892c4cec650","src/visitor.rs":"74c1fd52b81e45d048f9fa8534ff2274e5e891ed320aede268265d2a51e742ce"},"package":"e6a647510471d372f2e6c2e6b7219e44d8c574d24fdc11c610a61455782f18c3"} \ No newline at end of file
diff --git a/vendor/zerofrom-derive/Cargo.lock b/vendor/zerofrom-derive/Cargo.lock
index ff8b8debf..827c03e85 100644
--- a/vendor/zerofrom-derive/Cargo.lock
+++ b/vendor/zerofrom-derive/Cargo.lock
@@ -4,27 +4,64 @@ version = 3
[[package]]
name = "proc-macro2"
-version = "1.0.51"
+version = "1.0.67"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6"
+checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
-version = "1.0.23"
+version = "1.0.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"
+checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
dependencies = [
"proc-macro2",
]
[[package]]
+name = "serde"
+version = "1.0.188"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.188"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.37",
+]
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+
+[[package]]
name = "syn"
-version = "1.0.107"
+version = "1.0.109"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8"
dependencies = [
"proc-macro2",
"quote",
@@ -39,15 +76,27 @@ checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
dependencies = [
"proc-macro2",
"quote",
- "syn",
+ "syn 1.0.109",
+ "unicode-xid",
+]
+
+[[package]]
+name = "synstructure"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "285ba80e733fac80aa4270fbcdf83772a79b80aa35c97075320abfee4a915b06"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.37",
"unicode-xid",
]
[[package]]
name = "unicode-ident"
-version = "1.0.6"
+version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
[[package]]
name = "unicode-xid"
@@ -56,11 +105,55 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
[[package]]
+name = "yoke"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61e38c508604d6bbbd292dadb3c02559aa7fff6b654a078a36217cad871636e4"
+dependencies = [
+ "serde",
+ "stable_deref_trait",
+ "zerofrom",
+]
+
+[[package]]
+name = "zerofrom"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df54d76c3251de27615dfcce21e636c172dafb2549cd7fd93e21c66f6ca6bea2"
+dependencies = [
+ "zerofrom-derive 0.1.2",
+]
+
+[[package]]
name = "zerofrom-derive"
version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4eae7c1f7d4b8eafce526bc0771449ddc2f250881ae31c50d22c032b5a1c499"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+ "synstructure 0.12.6",
+]
+
+[[package]]
+name = "zerofrom-derive"
+version = "0.1.3"
dependencies = [
"proc-macro2",
"quote",
- "syn",
- "synstructure",
+ "syn 2.0.37",
+ "synstructure 0.13.0",
+ "zerofrom",
+ "zerovec",
+]
+
+[[package]]
+name = "zerovec"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "198f54134cd865f437820aa3b43d0ad518af4e68ee161b444cdd15d8e567c8ea"
+dependencies = [
+ "yoke",
+ "zerofrom",
]
diff --git a/vendor/zerofrom-derive/Cargo.toml b/vendor/zerofrom-derive/Cargo.toml
index 66a5e8d94..46e1a26c3 100644
--- a/vendor/zerofrom-derive/Cargo.toml
+++ b/vendor/zerofrom-derive/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2021"
name = "zerofrom-derive"
-version = "0.1.2"
+version = "0.1.3"
authors = ["Manish Goregaokar <manishsmail@gmail.com>"]
description = "Custom derive for the zerofrom crate"
readme = "README.md"
@@ -28,7 +28,7 @@ categories = [
"caching",
"no-std",
]
-license = "Unicode-DFS-2016"
+license-file = "LICENSE"
repository = "https://github.com/unicode-org/icu4x"
[package.metadata.workspaces]
@@ -45,13 +45,22 @@ version = "1.0.27"
version = "1.0.9"
[dependencies.syn]
-version = "1.0.73"
+version = "2"
features = [
"derive",
"fold",
+ "visit",
]
[dependencies.synstructure]
-version = "0.12.4"
+version = "0.13"
-[dev-dependencies]
+[dev-dependencies.zerofrom]
+version = "0.1.1"
+features = ["derive"]
+default-features = false
+
+[dev-dependencies.zerovec]
+version = "0.9.4"
+features = ["yoke"]
+default-features = false
diff --git a/vendor/zerofrom-derive/LICENSE b/vendor/zerofrom-derive/LICENSE
index 9858d01ab..9845aa5f4 100644
--- a/vendor/zerofrom-derive/LICENSE
+++ b/vendor/zerofrom-derive/LICENSE
@@ -1,49 +1,42 @@
-UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
-
-See Terms of Use <https://www.unicode.org/copyright.html>
-for definitions of Unicode Inc.’s Data Files and Software.
-
-NOTICE TO USER: Carefully read the following legal agreement.
-BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
-DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
-YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
-TERMS AND CONDITIONS OF THIS AGREEMENT.
-IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
-THE DATA FILES OR SOFTWARE.
+UNICODE LICENSE V3
COPYRIGHT AND PERMISSION NOTICE
-Copyright © 1991-2022 Unicode, Inc. All rights reserved.
-Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Unicode data files and any associated documentation
-(the "Data Files") or Unicode software and any associated documentation
-(the "Software") to deal in the Data Files or Software
-without restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, and/or sell copies of
-the Data Files or Software, and to permit persons to whom the Data Files
-or Software are furnished to do so, provided that either
-(a) this copyright and permission notice appear with all copies
-of the Data Files or Software, or
-(b) this copyright and permission notice appear in associated
-Documentation.
-
-THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
-NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
-DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THE DATA FILES OR SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale,
-use or other dealings in these Data Files or Software without prior
-written authorization of the copyright holder.
+Copyright © 2020-2023 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
—
diff --git a/vendor/zerofrom-derive/README.md b/vendor/zerofrom-derive/README.md
index 28e1a3a77..ad803c599 100644
--- a/vendor/zerofrom-derive/README.md
+++ b/vendor/zerofrom-derive/README.md
@@ -1,7 +1,11 @@
# zerofrom-derive [![crates.io](https://img.shields.io/crates/v/zerofrom-derive)](https://crates.io/crates/zerofrom-derive)
+<!-- cargo-rdme start -->
+
Custom derives for `ZeroFrom` from the `zerofrom` crate.
+<!-- cargo-rdme end -->
+
## More Information
For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/zerofrom-derive/examples/zf_derive.rs b/vendor/zerofrom-derive/examples/zf_derive.rs
index 4f54c9464..a1bde8373 100644
--- a/vendor/zerofrom-derive/examples/zf_derive.rs
+++ b/vendor/zerofrom-derive/examples/zf_derive.rs
@@ -86,4 +86,28 @@ pub enum CloningZF3<'data> {
Cow(#[zerofrom(clone)] Cow<'data, str>),
}
+#[derive(ZeroFrom)]
+#[zerofrom(may_borrow(T))] // instead of treating T as a copy type, we want to allow zerofromming T too
+pub struct GenericsThatAreAlsoZf<T> {
+ x: T,
+ y: Option<T>,
+}
+
+pub fn assert_zf_generics_may_borrow<'a, 'b>(
+ x: &'b GenericsThatAreAlsoZf<&'a str>,
+) -> GenericsThatAreAlsoZf<&'b str> {
+ GenericsThatAreAlsoZf::<&'b str>::zero_from(x)
+}
+
+#[derive(ZeroFrom)]
+pub struct UsesGenericsThatAreAlsoZf<'a> {
+ x: GenericsThatAreAlsoZf<&'a str>,
+}
+
+// Ensure it works with invariant types too
+#[derive(ZeroFrom)]
+pub struct UsesGenericsThatAreAlsoZfWithMap<'a> {
+ x: GenericsThatAreAlsoZf<ZeroMap<'a, str, str>>,
+}
+
fn main() {}
diff --git a/vendor/zerofrom-derive/src/lib.rs b/vendor/zerofrom-derive/src/lib.rs
index 5d6f1a81b..c6a3839fb 100644
--- a/vendor/zerofrom-derive/src/lib.rs
+++ b/vendor/zerofrom-derive/src/lib.rs
@@ -18,13 +18,19 @@
)
)]
+use core::mem;
use proc_macro::TokenStream;
use proc_macro2::{Span, TokenStream as TokenStream2};
use quote::quote;
+use std::collections::{HashMap, HashSet};
+use syn::fold::{self, Fold};
+use syn::punctuated::Punctuated;
use syn::spanned::Spanned;
-use syn::{parse_macro_input, parse_quote, DeriveInput, Ident, Lifetime, Type, WherePredicate};
+use syn::{
+ parse_macro_input, parse_quote, DeriveInput, Ident, Lifetime, MetaList, Token, Type, TypePath,
+ WherePredicate,
+};
use synstructure::Structure;
-
mod visitor;
/// Custom derive for `zerofrom::ZeroFrom`,
@@ -35,16 +41,23 @@ mod visitor;
///
/// Apply the `#[zerofrom(clone)]` attribute to a field if it doesn't implement
/// Copy or ZeroFrom; this data will be cloned when the struct is zero_from'ed.
+///
+/// Apply the `#[zerofrom(maybe_borrow(T, U, V))]` attribute to the struct to indicate
+/// that certain type parameters may themselves contain borrows (by default
+/// the derives assume that type parameters perform no borrows and can be copied or cloned).
+///
+/// In rust versions where [this issue](https://github.com/rust-lang/rust/issues/114393) is fixed,
+/// `#[zerofrom(may_borrow)]` can be applied directly to type parameters.
#[proc_macro_derive(ZeroFrom, attributes(zerofrom))]
pub fn zf_derive(input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as DeriveInput);
TokenStream::from(zf_derive_impl(&input))
}
-fn has_clone_attr(attrs: &[syn::Attribute]) -> bool {
+fn has_attr(attrs: &[syn::Attribute], name: &str) -> bool {
attrs.iter().any(|a| {
if let Ok(i) = a.parse_args::<Ident>() {
- if i == "clone" {
+ if i == name {
return true;
}
}
@@ -52,8 +65,29 @@ fn has_clone_attr(attrs: &[syn::Attribute]) -> bool {
})
}
+// Collects all idents from #[zerofrom(may_borrow(A, B, C, D))]
+// needed since #[zerofrom(may_borrow)] doesn't work yet
+// (https://github.com/rust-lang/rust/issues/114393)
+fn get_may_borrow_attr(attrs: &[syn::Attribute]) -> Result<HashSet<Ident>, Span> {
+ let mut params = HashSet::new();
+ for attr in attrs {
+ if let Ok(list) = attr.parse_args::<MetaList>() {
+ if list.path.is_ident("may_borrow") {
+ if let Ok(list) =
+ list.parse_args_with(Punctuated::<Ident, Token![,]>::parse_terminated)
+ {
+ params.extend(list)
+ } else {
+ return Err(attr.span());
+ }
+ }
+ }
+ }
+ Ok(params)
+}
+
fn zf_derive_impl(input: &DeriveInput) -> TokenStream2 {
- let tybounds = input
+ let mut tybounds = input
.generics
.type_params()
.map(|ty| {
@@ -72,12 +106,47 @@ fn zf_derive_impl(input: &DeriveInput) -> TokenStream2 {
let name = &input.ident;
let structure = Structure::new(input);
- if lts == 0 {
+ let may_borrow_attrs = match get_may_borrow_attr(&input.attrs) {
+ Ok(mb) => mb,
+ Err(span) => {
+ return syn::Error::new(
+ span,
+ "#[zerofrom(may_borrow)] on the struct takes in a comma separated list of type parameters, like so: `#[zerofrom(may_borrow(A, B, C, D)]`",
+ ).to_compile_error();
+ }
+ };
+
+ // This contains every generic type introduced in this code.
+ // If the gneeric type is may_borrow, this additionally contains the identifier corresponding to
+ // a newly introduced mirror type parameter that we are borrowing from, similar to C in the original trait.
+ // For convenience, we are calling these "C types"
+ let generics_env: HashMap<Ident, Option<Ident>> = tybounds
+ .iter()
+ .map(|param| {
+ // First one doesn't work yet https://github.com/rust-lang/rust/issues/114393
+ let maybe_new_param = if has_attr(&param.attrs, "may_borrow")
+ || may_borrow_attrs.contains(&param.ident)
+ {
+ Some(Ident::new(
+ &format!("{}ZFParamC", param.ident),
+ param.ident.span(),
+ ))
+ } else {
+ None
+ };
+ (param.ident.clone(), maybe_new_param)
+ })
+ .collect();
+
+ // Do any of the generics potentially borrow?
+ let generics_may_borrow = generics_env.values().any(|x| x.is_some());
+
+ if lts == 0 && !generics_may_borrow {
let has_clone = structure
.variants()
.iter()
.flat_map(|variant| variant.bindings().iter())
- .any(|binding| has_clone_attr(&binding.ast().attrs));
+ .any(|binding| has_attr(&binding.ast().attrs, "clone"));
let (clone, clone_trait) = if has_clone {
(quote!(this.clone()), quote!(Clone))
} else {
@@ -95,7 +164,7 @@ fn zf_derive_impl(input: &DeriveInput) -> TokenStream2 {
}
}
} else {
- if lts != 1 {
+ if lts > 1 {
return syn::Error::new(
input.generics.span(),
"derive(ZeroFrom) cannot have multiple lifetime parameters",
@@ -103,21 +172,22 @@ fn zf_derive_impl(input: &DeriveInput) -> TokenStream2 {
.to_compile_error();
}
- let generics_env = typarams.iter().cloned().collect();
-
let mut zf_bounds: Vec<WherePredicate> = vec![];
let body = structure.each_variant(|vi| {
vi.construct(|f, i| {
let binding = format!("__binding_{i}");
let field = Ident::new(&binding, Span::call_site());
- if has_clone_attr(&f.attrs) {
+ if has_attr(&f.attrs, "clone") {
quote! {
#field.clone()
}
} else {
+ // the field type
let fty = replace_lifetime(&f.ty, custom_lt("'zf"));
- let lifetime_ty = replace_lifetime(&f.ty, custom_lt("'zf_inner"));
+ // the corresponding lifetimey type we are borrowing from (effectively, the C type)
+ let lifetime_ty =
+ replace_lifetime_and_type(&f.ty, custom_lt("'zf_inner"), &generics_env);
let (has_ty, has_lt) = visitor::check_type_for_parameters(&f.ty, &generics_env);
if has_ty {
@@ -145,12 +215,34 @@ fn zf_derive_impl(input: &DeriveInput) -> TokenStream2 {
}
})
});
+ // Due to the possibility of generics_may_borrow, we might reach here with no lifetimes on self,
+ // don't accidentally feed them to self later
+ let (maybe_zf_lifetime, maybe_zf_inner_lifetime) = if lts == 0 {
+ (quote!(), quote!())
+ } else {
+ (quote!('zf,), quote!('zf_inner,))
+ };
+
+ // Array of C types. Only different if generics are allowed to borrow
+ let mut typarams_c = typarams.clone();
+
+ if generics_may_borrow {
+ for typaram_c in &mut typarams_c {
+ if let Some(Some(replacement)) = generics_env.get(typaram_c) {
+ // we use mem::replace here so we can be really clear about the C vs the T type
+ let typaram_t = mem::replace(typaram_c, replacement.clone());
+ zf_bounds
+ .push(parse_quote!(#typaram_c: zerofrom::ZeroFrom<'zf_inner, #typaram_t>));
+ tybounds.push(parse_quote!(#typaram_c));
+ }
+ }
+ }
quote! {
- impl<'zf, 'zf_inner, #(#tybounds),*> zerofrom::ZeroFrom<'zf, #name<'zf_inner, #(#typarams),*>> for #name<'zf, #(#typarams),*>
+ impl<'zf, 'zf_inner, #(#tybounds),*> zerofrom::ZeroFrom<'zf, #name<#maybe_zf_inner_lifetime #(#typarams_c),*>> for #name<#maybe_zf_lifetime #(#typarams),*>
where
#(#zf_bounds,)* {
- fn zero_from(this: &'zf #name<'zf_inner, #(#typarams),*>) -> Self {
+ fn zero_from(this: &'zf #name<#maybe_zf_inner_lifetime #(#typarams_c),*>) -> Self {
match *this { #body }
}
}
@@ -162,8 +254,8 @@ fn custom_lt(s: &str) -> Lifetime {
Lifetime::new(s, Span::call_site())
}
+/// Replace all lifetimes in a type with a specified one
fn replace_lifetime(x: &Type, lt: Lifetime) -> Type {
- use syn::fold::Fold;
struct ReplaceLifetime(Lifetime);
impl Fold for ReplaceLifetime {
@@ -173,3 +265,30 @@ fn replace_lifetime(x: &Type, lt: Lifetime) -> Type {
}
ReplaceLifetime(lt).fold_type(x.clone())
}
+
+/// Replace all lifetimes in a type with a specified one, AND replace all types that have a corresponding C type
+/// with the C type
+fn replace_lifetime_and_type(
+ x: &Type,
+ lt: Lifetime,
+ generics_env: &HashMap<Ident, Option<Ident>>,
+) -> Type {
+ struct ReplaceLifetimeAndTy<'a>(Lifetime, &'a HashMap<Ident, Option<Ident>>);
+
+ impl Fold for ReplaceLifetimeAndTy<'_> {
+ fn fold_lifetime(&mut self, _: Lifetime) -> Lifetime {
+ self.0.clone()
+ }
+ fn fold_type_path(&mut self, i: TypePath) -> TypePath {
+ if i.qself.is_none() {
+ if let Some(ident) = i.path.get_ident() {
+ if let Some(Some(replacement)) = self.1.get(ident) {
+ return parse_quote!(#replacement);
+ }
+ }
+ }
+ fold::fold_type_path(self, i)
+ }
+ }
+ ReplaceLifetimeAndTy(lt, generics_env).fold_type(x.clone())
+}
diff --git a/vendor/zerofrom-derive/src/visitor.rs b/vendor/zerofrom-derive/src/visitor.rs
index ce65f7d6d..4204b7c68 100644
--- a/vendor/zerofrom-derive/src/visitor.rs
+++ b/vendor/zerofrom-derive/src/visitor.rs
@@ -5,13 +5,13 @@
//! Visitor for determining whether a type has type and non-static lifetime parameters
//! (duplicated in yoke/derive/src/visitor.rs)
-use std::collections::HashSet;
+use std::collections::HashMap;
use syn::visit::{visit_lifetime, visit_type, visit_type_path, Visit};
use syn::{Ident, Lifetime, Type, TypePath};
struct TypeVisitor<'a> {
/// The type parameters in scope
- typarams: &'a HashSet<Ident>,
+ typarams: &'a HashMap<Ident, Option<Ident>>,
/// Whether we found a type parameter
found_typarams: bool,
/// Whether we found a non-'static lifetime parameter
@@ -30,8 +30,11 @@ impl<'a, 'ast> Visit<'ast> for TypeVisitor<'a> {
// generics in ty.path because the visitor will eventually visit those
// types on its own
if let Some(ident) = ty.path.get_ident() {
- if self.typarams.contains(ident) {
+ if let Some(maybe_borrowed) = self.typarams.get(ident) {
self.found_typarams = true;
+ if maybe_borrowed.is_some() {
+ self.found_lifetimes = true;
+ }
}
}
@@ -41,7 +44,10 @@ impl<'a, 'ast> Visit<'ast> for TypeVisitor<'a> {
/// Checks if a type has type or lifetime parameters, given the local context of
/// named type parameters. Returns (has_type_params, has_lifetime_params)
-pub fn check_type_for_parameters(ty: &Type, typarams: &HashSet<Ident>) -> (bool, bool) {
+pub fn check_type_for_parameters(
+ ty: &Type,
+ typarams: &HashMap<Ident, Option<Ident>>,
+) -> (bool, bool) {
let mut visit = TypeVisitor {
typarams,
found_typarams: false,
@@ -55,14 +61,14 @@ pub fn check_type_for_parameters(ty: &Type, typarams: &HashSet<Ident>) -> (bool,
#[cfg(test)]
mod tests {
use proc_macro2::Span;
- use std::collections::HashSet;
+ use std::collections::HashMap;
use syn::{parse_quote, Ident};
use super::check_type_for_parameters;
- fn make_typarams(params: &[&str]) -> HashSet<Ident> {
+ fn make_typarams(params: &[&str]) -> HashMap<Ident, Option<Ident>> {
params
.iter()
- .map(|x| Ident::new(x, Span::call_site()))
+ .map(|x| (Ident::new(x, Span::call_site()), None))
.collect()
}
diff --git a/vendor/zerofrom/.cargo-checksum.json b/vendor/zerofrom/.cargo-checksum.json
index c7a44c2d6..9937f5bf9 100644
--- a/vendor/zerofrom/.cargo-checksum.json
+++ b/vendor/zerofrom/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"72a566dc8765375c7e1b319843a795292a19cba360b8a36e8469271897561e95","LICENSE":"4ad7541d66a407234e2c84902124cef325c29f3e966353efdb800bedb8b8da21","README.md":"dc0e4a45a140001c02818b1f63f9253d5e84c758e46b88f206cacbc5d0401db9","src/lib.rs":"59afe6e1aa74bd1fdab7b1cafa8b5bd1ede141b5c9018d55b76ed395c2f476e3","src/macro_impls.rs":"6b4b69bdc6b94f2abb64da0c2520d3ff74aff7d14e8b4de9e8022d7ddc951f38","src/zero_from.rs":"d589da84905ca5016e91b47672ac8710f035e4da16160d17328fe520f9a6fdce"},"package":"df54d76c3251de27615dfcce21e636c172dafb2549cd7fd93e21c66f6ca6bea2"} \ No newline at end of file
+{"files":{"Cargo.toml":"9a386f285814e4b63570332ccdf8ea87a4fc0991c45cd10dbee81e9746696ba0","LICENSE":"853f87c96f3d249f200fec6db1114427bc8bdf4afddc93c576956d78152ce978","README.md":"cd9b9a57dff5012642ee535c46a9f05424eab903f0b9f62de8bf7f815bcd5082","src/lib.rs":"59afe6e1aa74bd1fdab7b1cafa8b5bd1ede141b5c9018d55b76ed395c2f476e3","src/macro_impls.rs":"6b4b69bdc6b94f2abb64da0c2520d3ff74aff7d14e8b4de9e8022d7ddc951f38","src/zero_from.rs":"a4012c0d1945964cc112e031464bf41ed64702171d695de593defb3818dac02e"},"package":"655b0814c5c0b19ade497851070c640773304939a6c0fd5f5fb43da0696d05b7"} \ No newline at end of file
diff --git a/vendor/zerofrom/Cargo.toml b/vendor/zerofrom/Cargo.toml
index a0da76d79..5f2b5ef42 100644
--- a/vendor/zerofrom/Cargo.toml
+++ b/vendor/zerofrom/Cargo.toml
@@ -11,13 +11,16 @@
[package]
edition = "2021"
+rust-version = "1.66"
name = "zerofrom"
-version = "0.1.2"
+version = "0.1.3"
authors = ["Manish Goregaokar <manishsmail@gmail.com>"]
include = [
+ "data/**/*",
"src/**/*",
"examples/**/*",
"benches/**/*",
+ "tests/**/*",
"Cargo.toml",
"LICENSE",
"README.md",
@@ -35,18 +38,19 @@ categories = [
"caching",
"no-std",
]
-license = "Unicode-DFS-2016"
+license-file = "LICENSE"
repository = "https://github.com/unicode-org/icu4x"
-[package.metadata.workspaces]
-independent = true
-
[package.metadata.docs.rs]
all-features = true
+[package.metadata.workspaces]
+independent = true
+
[dependencies.zerofrom-derive]
version = "0.1.1"
optional = true
+default-features = false
[features]
alloc = []
diff --git a/vendor/zerofrom/LICENSE b/vendor/zerofrom/LICENSE
index 9858d01ab..9845aa5f4 100644
--- a/vendor/zerofrom/LICENSE
+++ b/vendor/zerofrom/LICENSE
@@ -1,49 +1,42 @@
-UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
-
-See Terms of Use <https://www.unicode.org/copyright.html>
-for definitions of Unicode Inc.’s Data Files and Software.
-
-NOTICE TO USER: Carefully read the following legal agreement.
-BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
-DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
-YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
-TERMS AND CONDITIONS OF THIS AGREEMENT.
-IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
-THE DATA FILES OR SOFTWARE.
+UNICODE LICENSE V3
COPYRIGHT AND PERMISSION NOTICE
-Copyright © 1991-2022 Unicode, Inc. All rights reserved.
-Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Unicode data files and any associated documentation
-(the "Data Files") or Unicode software and any associated documentation
-(the "Software") to deal in the Data Files or Software
-without restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, and/or sell copies of
-the Data Files or Software, and to permit persons to whom the Data Files
-or Software are furnished to do so, provided that either
-(a) this copyright and permission notice appear with all copies
-of the Data Files or Software, or
-(b) this copyright and permission notice appear in associated
-Documentation.
-
-THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
-NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
-DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THE DATA FILES OR SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale,
-use or other dealings in these Data Files or Software without prior
-written authorization of the copyright holder.
+Copyright © 2020-2023 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
—
diff --git a/vendor/zerofrom/README.md b/vendor/zerofrom/README.md
index d268a347e..7f171afa0 100644
--- a/vendor/zerofrom/README.md
+++ b/vendor/zerofrom/README.md
@@ -1,9 +1,13 @@
# zerofrom [![crates.io](https://img.shields.io/crates/v/zerofrom)](https://crates.io/crates/zerofrom)
+<!-- cargo-rdme start -->
+
This crate provides [`ZeroFrom`], a trait for converting types in a zero-copy way.
See the documentation of [`ZeroFrom`] for more details.
+<!-- cargo-rdme end -->
+
## More Information
For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/zerofrom/src/zero_from.rs b/vendor/zerofrom/src/zero_from.rs
index 5b89ea5fb..204b3b635 100644
--- a/vendor/zerofrom/src/zero_from.rs
+++ b/vendor/zerofrom/src/zero_from.rs
@@ -113,9 +113,9 @@ impl<'zf, B: ToOwned + ?Sized> ZeroFrom<'zf, Cow<'_, B>> for Cow<'zf, B> {
}
}
-impl<'zf> ZeroFrom<'zf, &'_ str> for &'zf str {
+impl<'zf, T: ?Sized> ZeroFrom<'zf, &'_ T> for &'zf T {
#[inline]
- fn zero_from(other: &'zf &'_ str) -> &'zf str {
+ fn zero_from(other: &'zf &'_ T) -> &'zf T {
other
}
}
diff --git a/vendor/zerovec-derive/.cargo-checksum.json b/vendor/zerovec-derive/.cargo-checksum.json
index 50de4eacc..b6fe55595 100644
--- a/vendor/zerovec-derive/.cargo-checksum.json
+++ b/vendor/zerovec-derive/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"e4e240b846cb0dbf1a90ff9982b2d197f8ac061bf9953bec8e0f89395d7117c7","Cargo.toml":"9dfe02636d0829e581beafdd6502cc12c75a1a486e5050f6e49d648407b2b9b2","LICENSE":"4ad7541d66a407234e2c84902124cef325c29f3e966353efdb800bedb8b8da21","README.md":"77ca5a17524e17ae9098ab00f91cb67996f5a298468d68a15d23a09bde940b9a","examples/derives.rs":"2541311f2b532301ab8600927fb2d12a842166ce98d57879997df12dcb928dd2","examples/make.rs":"709829d9aa1fa1d023437dfd8169183690629b71e65cc1316b1f4bf767588cc6","examples/make_var.rs":"bb84e153863be0fc94ca3070ac3d194ad75b701ca0d2370c3ee0c5240e793925","src/lib.rs":"4f4f2a1c0f0204ac782d741f9a188b474b9c0e23a5e6e4619b9a3e926c1e08e5","src/make_ule.rs":"c1e5f17db25d5ad3ec801150988ddd19eb5889b7030af29de1b6f0bf8e01ea98","src/make_varule.rs":"0c7d6561fdecf8ecfe64820c2441e5851abe96bb0efa19f7acb334285d7360f3","src/ule.rs":"1f0a46ff39e43bb19deb9e9a06289350096d4e6ca3f33cb76fec3c84c4a439d8","src/utils.rs":"26455d11457e9326ccc282ce28572fbcdcad5d8fddad786f052ebe06cbc37aee","src/varule.rs":"b0642df70023b2f04aca692010f6b2a81fd3f3db8612dbae072a200eb04f0913"},"package":"486558732d5dde10d0f8cb2936507c1bb21bc539d924c949baf5f36a58e51bac"} \ No newline at end of file
+{"files":{"Cargo.lock":"ccf6d724448a2fb71641bdf8aafc773be18e8db354d10d38214dbc6f1eeda156","Cargo.toml":"6224057ff9d0f6505bd9344ee309039b7bcbf9712b42a683e8b8c896c3dc8d78","LICENSE":"853f87c96f3d249f200fec6db1114427bc8bdf4afddc93c576956d78152ce978","README.md":"bacbc17b2cb457c169257f5e22c78a45d1c4a399eadae383f7732af909616ebc","examples/derives.rs":"2541311f2b532301ab8600927fb2d12a842166ce98d57879997df12dcb928dd2","examples/make.rs":"709829d9aa1fa1d023437dfd8169183690629b71e65cc1316b1f4bf767588cc6","examples/make_var.rs":"8a017467e9ac7cea1f4ab13536c32c9265e54bdbc361bca7d19c6fc0970c1abb","src/lib.rs":"029d2b251b8279e7c85d9cc8efb6cad5188da9464b0a27e9de3dd119f4ffef2e","src/make_ule.rs":"6b8fd0d027bd219315d4dada3bbc000f4cbf344188f7e0d9d2de95ebb103c552","src/make_varule.rs":"064270a6fef492f2f2426c65adaad8e2f4f58f55464f116a9c3eb30810c77b2f","src/ule.rs":"1f0a46ff39e43bb19deb9e9a06289350096d4e6ca3f33cb76fec3c84c4a439d8","src/utils.rs":"e5f73721d8ae3c1f5407816dec2314f3694d81e1f373ab6738e74f73442377fc","src/varule.rs":"b0642df70023b2f04aca692010f6b2a81fd3f3db8612dbae072a200eb04f0913"},"package":"acabf549809064225ff8878baedc4ce3732ac3b07e7c7ce6e5c2ccdbc485c324"} \ No newline at end of file
diff --git a/vendor/zerovec-derive/Cargo.lock b/vendor/zerovec-derive/Cargo.lock
index aa9b0373e..9360b0559 100644
--- a/vendor/zerovec-derive/Cargo.lock
+++ b/vendor/zerovec-derive/Cargo.lock
@@ -13,48 +13,48 @@ dependencies = [
[[package]]
name = "itoa"
-version = "1.0.5"
+version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440"
+checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
[[package]]
name = "proc-macro2"
-version = "1.0.51"
+version = "1.0.67"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6"
+checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
-version = "1.0.23"
+version = "1.0.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"
+checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
dependencies = [
"proc-macro2",
]
[[package]]
name = "ryu"
-version = "1.0.12"
+version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde"
+checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
[[package]]
name = "serde"
-version = "1.0.152"
+version = "1.0.188"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb"
+checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.152"
+version = "1.0.188"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e"
+checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
dependencies = [
"proc-macro2",
"quote",
@@ -63,9 +63,9 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.93"
+version = "1.0.107"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cad406b69c91885b5107daf2c29572f6c8cdb3c66826821e286c533490c0bc76"
+checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65"
dependencies = [
"itoa",
"ryu",
@@ -74,9 +74,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "1.0.107"
+version = "2.0.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
+checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8"
dependencies = [
"proc-macro2",
"quote",
@@ -84,32 +84,42 @@ dependencies = [
]
[[package]]
-name = "synstructure"
-version = "0.12.6"
+name = "unicode-ident"
+version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
- "unicode-xid",
-]
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
[[package]]
-name = "unicode-ident"
-version = "1.0.6"
+name = "zerofrom"
+version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc"
+checksum = "655b0814c5c0b19ade497851070c640773304939a6c0fd5f5fb43da0696d05b7"
[[package]]
-name = "unicode-xid"
-version = "0.2.4"
+name = "zerovec"
+version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
+checksum = "1194130c5b155bf8ae50ab16c86ab758cd695cf9ad176d2f870b744cbdbb572e"
+dependencies = [
+ "serde",
+ "zerofrom",
+ "zerovec-derive 0.9.6",
+]
+
+[[package]]
+name = "zerovec-derive"
+version = "0.9.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a4a1638a1934450809c2266a70362bfc96cd90550c073f5b8a55014d1010157"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
[[package]]
name = "zerovec-derive"
-version = "0.9.4"
+version = "0.10.0"
dependencies = [
"bincode",
"proc-macro2",
@@ -117,5 +127,6 @@ dependencies = [
"serde",
"serde_json",
"syn",
- "synstructure",
+ "zerofrom",
+ "zerovec",
]
diff --git a/vendor/zerovec-derive/Cargo.toml b/vendor/zerovec-derive/Cargo.toml
index 667e6cc60..9ac0d2b2a 100644
--- a/vendor/zerovec-derive/Cargo.toml
+++ b/vendor/zerovec-derive/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2021"
name = "zerovec-derive"
-version = "0.9.4"
+version = "0.10.0"
authors = ["Manish Goregaokar <manishsmail@gmail.com>"]
description = "Custom derive for the zerovec crate"
readme = "README.md"
@@ -29,7 +29,7 @@ categories = [
"no-std",
"data-structures",
]
-license = "Unicode-DFS-2016"
+license-file = "LICENSE"
repository = "https://github.com/unicode-org/icu4x"
[package.metadata.workspaces]
@@ -46,15 +46,13 @@ version = "1.0.27"
version = "1.0.9"
[dependencies.syn]
-version = "1.0.73"
+version = "2"
features = [
"derive",
"parsing",
+ "extra-traits",
]
-[dependencies.synstructure]
-version = "0.12.4"
-
[dev-dependencies.bincode]
version = "1.3"
@@ -64,3 +62,15 @@ features = ["derive"]
[dev-dependencies.serde_json]
version = "1.0"
+
+[dev-dependencies.zerofrom]
+version = "0.1.2"
+default-features = false
+
+[dev-dependencies.zerovec]
+version = ">=0.9.4, <0.11.0"
+features = [
+ "serde",
+ "derive",
+]
+default-features = false
diff --git a/vendor/zerovec-derive/LICENSE b/vendor/zerovec-derive/LICENSE
index 9858d01ab..9845aa5f4 100644
--- a/vendor/zerovec-derive/LICENSE
+++ b/vendor/zerovec-derive/LICENSE
@@ -1,49 +1,42 @@
-UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
-
-See Terms of Use <https://www.unicode.org/copyright.html>
-for definitions of Unicode Inc.’s Data Files and Software.
-
-NOTICE TO USER: Carefully read the following legal agreement.
-BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
-DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
-YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
-TERMS AND CONDITIONS OF THIS AGREEMENT.
-IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
-THE DATA FILES OR SOFTWARE.
+UNICODE LICENSE V3
COPYRIGHT AND PERMISSION NOTICE
-Copyright © 1991-2022 Unicode, Inc. All rights reserved.
-Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Unicode data files and any associated documentation
-(the "Data Files") or Unicode software and any associated documentation
-(the "Software") to deal in the Data Files or Software
-without restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, and/or sell copies of
-the Data Files or Software, and to permit persons to whom the Data Files
-or Software are furnished to do so, provided that either
-(a) this copyright and permission notice appear with all copies
-of the Data Files or Software, or
-(b) this copyright and permission notice appear in associated
-Documentation.
-
-THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
-NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
-DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THE DATA FILES OR SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale,
-use or other dealings in these Data Files or Software without prior
-written authorization of the copyright holder.
+Copyright © 2020-2023 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
—
diff --git a/vendor/zerovec-derive/README.md b/vendor/zerovec-derive/README.md
index 219a5059d..e80b8abe5 100644
--- a/vendor/zerovec-derive/README.md
+++ b/vendor/zerovec-derive/README.md
@@ -1,7 +1,11 @@
# zerovec-derive [![crates.io](https://img.shields.io/crates/v/zerovec-derive)](https://crates.io/crates/zerovec-derive)
+<!-- cargo-rdme start -->
+
Proc macros for generating `ULE`, `VarULE` impls and types for the `zerovec` crate
+<!-- cargo-rdme end -->
+
## More Information
For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/zerovec-derive/examples/make_var.rs b/vendor/zerovec-derive/examples/make_var.rs
index 7dedfd3e9..47e1418cd 100644
--- a/vendor/zerovec-derive/examples/make_var.rs
+++ b/vendor/zerovec-derive/examples/make_var.rs
@@ -59,6 +59,30 @@ struct MultiFieldStruct<'a> {
f: char,
}
+#[make_varule(MultiFieldConsecutiveStructULE)]
+#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug, serde::Serialize, serde::Deserialize)]
+#[zerovec::derive(Serialize, Deserialize, Debug)]
+struct MultiFieldConsecutiveStruct<'a> {
+ #[serde(borrow)]
+ a: Cow<'a, str>,
+ #[serde(borrow)]
+ b: Cow<'a, str>,
+ #[serde(borrow)]
+ c: Cow<'a, str>,
+ #[serde(borrow)]
+ d: Cow<'a, str>,
+}
+
+#[make_varule(CustomVarFieldULE)]
+#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug, serde::Serialize, serde::Deserialize)]
+#[zerovec::derive(Serialize, Deserialize, Debug)]
+struct CustomVarField<'a> {
+ #[zerovec::varule(MultiFieldStructULE)]
+ #[serde(borrow)]
+ a: MultiFieldStruct<'a>,
+ b: u32,
+}
+
#[make_varule(MultiFieldTupleULE)]
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug, serde::Serialize, serde::Deserialize)]
#[zerovec::derive(Serialize, Deserialize, Debug)]
@@ -129,6 +153,11 @@ fn main() {
assert_eq!(stack, &MultiFieldStruct::zero_from(zero))
});
+ assert_zerovec::<MultiFieldConsecutiveStructULE, MultiFieldConsecutiveStruct, _>(
+ TEST_MULTICONSECUTIVE,
+ |stack, zero| assert_eq!(stack, &MultiFieldConsecutiveStruct::zero_from(zero)),
+ );
+
let vartuples = &[
VarTupleStruct(101, 'ø', TEST_STRINGS1.into()),
VarTupleStruct(9499, '⸘', TEST_STRINGS2.into()),
@@ -187,3 +216,11 @@ const TEST_MULTIFIELD: &[MultiFieldStruct<'static>] = &[
f: 'É™',
},
];
+
+const TEST_MULTICONSECUTIVE: &[MultiFieldConsecutiveStruct<'static>] =
+ &[MultiFieldConsecutiveStruct {
+ a: Cow::Borrowed("one"),
+ b: Cow::Borrowed("2"),
+ c: Cow::Borrowed("three"),
+ d: Cow::Borrowed("four"),
+ }];
diff --git a/vendor/zerovec-derive/src/lib.rs b/vendor/zerovec-derive/src/lib.rs
index 5a0de6429..9c3007147 100644
--- a/vendor/zerovec-derive/src/lib.rs
+++ b/vendor/zerovec-derive/src/lib.rs
@@ -5,8 +5,7 @@
//! Proc macros for generating `ULE`, `VarULE` impls and types for the `zerovec` crate
use proc_macro::TokenStream;
-use syn::{parse_macro_input, AttributeArgs, DeriveInput};
-
+use syn::{parse_macro_input, DeriveInput, Ident};
mod make_ule;
mod make_varule;
pub(crate) mod ule;
@@ -31,7 +30,7 @@ pub fn varule_derive(input: TokenStream) -> TokenStream {
#[proc_macro_attribute]
pub fn make_ule(attr: TokenStream, item: TokenStream) -> TokenStream {
let input = parse_macro_input!(item as DeriveInput);
- let attr = parse_macro_input!(attr as AttributeArgs);
+ let attr = parse_macro_input!(attr as Ident);
TokenStream::from(make_ule::make_ule_impl(attr, input))
}
@@ -39,6 +38,6 @@ pub fn make_ule(attr: TokenStream, item: TokenStream) -> TokenStream {
#[proc_macro_attribute]
pub fn make_varule(attr: TokenStream, item: TokenStream) -> TokenStream {
let input = parse_macro_input!(item as DeriveInput);
- let attr = parse_macro_input!(attr as AttributeArgs);
+ let attr = parse_macro_input!(attr as Ident);
TokenStream::from(make_varule::make_varule_impl(attr, input))
}
diff --git a/vendor/zerovec-derive/src/make_ule.rs b/vendor/zerovec-derive/src/make_ule.rs
index fb94cbc2c..92a200e0b 100644
--- a/vendor/zerovec-derive/src/make_ule.rs
+++ b/vendor/zerovec-derive/src/make_ule.rs
@@ -6,15 +6,11 @@ use proc_macro2::TokenStream as TokenStream2;
use quote::quote;
use crate::utils::{self, FieldInfo, ZeroVecAttrs};
-use syn::spanned::Spanned;
-use syn::{
- parse_quote, AttributeArgs, Data, DataEnum, DataStruct, DeriveInput, Error, Expr, Fields,
- Ident, Lit,
-};
-
use std::collections::HashSet;
+use syn::spanned::Spanned;
+use syn::{parse_quote, Data, DataEnum, DataStruct, DeriveInput, Error, Expr, Fields, Ident, Lit};
-pub fn make_ule_impl(attr: AttributeArgs, mut input: DeriveInput) -> TokenStream2 {
+pub fn make_ule_impl(ule_name: Ident, mut input: DeriveInput) -> TokenStream2 {
if input.generics.type_params().next().is_some()
|| input.generics.lifetimes().next().is_some()
|| input.generics.const_params().next().is_some()
@@ -25,17 +21,6 @@ pub fn make_ule_impl(attr: AttributeArgs, mut input: DeriveInput) -> TokenStream
)
.to_compile_error();
}
-
- if attr.len() != 1 {
- return Error::new(
- input.span(),
- "#[make_ule] takes one argument for the name of the ULE type it produces",
- )
- .to_compile_error();
- }
- let arg = &attr[0];
- let ule_name: Ident = parse_quote!(#arg);
-
let sp = input.span();
let attrs = match utils::extract_attributes_common(&mut input.attrs, sp, false) {
Ok(val) => val,
@@ -112,7 +97,7 @@ fn make_ule_enum_impl(
let mut not_found = HashSet::new();
for (i, variant) in enu.variants.iter().enumerate() {
- if variant.fields != Fields::Unit {
+ if !matches!(variant.fields, Fields::Unit) {
// This can be supported in the future, see zerovec/design_doc.md
return Error::new(
variant.span(),
@@ -225,7 +210,7 @@ fn make_ule_enum_impl(
impl #name {
/// Attempt to construct the value from its corresponding integer,
- /// returning None if not possible
+ /// returning `None` if not possible
pub(crate) fn new_from_u8(value: u8) -> Option<Self> {
if value <= #max {
unsafe {
diff --git a/vendor/zerovec-derive/src/make_varule.rs b/vendor/zerovec-derive/src/make_varule.rs
index 62cf0d9db..56aa0b4f3 100644
--- a/vendor/zerovec-derive/src/make_varule.rs
+++ b/vendor/zerovec-derive/src/make_varule.rs
@@ -8,11 +8,11 @@ use proc_macro2::TokenStream as TokenStream2;
use quote::{quote, ToTokens};
use syn::spanned::Spanned;
use syn::{
- parse_quote, AttributeArgs, Data, DeriveInput, Error, Field, Fields, GenericArgument, Ident,
- Lifetime, PathArguments, Type,
+ parse_quote, Data, DeriveInput, Error, Field, Fields, GenericArgument, Ident, Lifetime,
+ PathArguments, Type, TypePath,
};
-pub fn make_varule_impl(attr: AttributeArgs, mut input: DeriveInput) -> TokenStream2 {
+pub fn make_varule_impl(ule_name: Ident, mut input: DeriveInput) -> TokenStream2 {
if input.generics.type_params().next().is_some()
|| input.generics.const_params().next().is_some()
|| input.generics.lifetimes().count() > 1
@@ -44,20 +44,11 @@ pub fn make_varule_impl(attr: AttributeArgs, mut input: DeriveInput) -> TokenStr
let lt = lt.map(|l| &l.lifetime);
- if attr.len() != 1 {
- return Error::new(
- input.span(),
- "#[make_ule] takes one argument for the name of the ULE type it produces",
- )
- .to_compile_error();
- }
- let arg = &attr[0];
- let ule_name: Ident = parse_quote!(#arg);
-
let name = &input.ident;
+ let input_span = input.span();
let fields = match input.data {
- Data::Struct(ref s) => &s.fields,
+ Data::Struct(ref mut s) => &mut s.fields,
_ => {
return Error::new(input.span(), "#[make_varule] must be applied to a struct")
.to_compile_error();
@@ -75,16 +66,32 @@ pub fn make_varule_impl(attr: AttributeArgs, mut input: DeriveInput) -> TokenStr
let mut sized_fields = vec![];
let mut unsized_fields = vec![];
+ let mut custom_varule_idents = vec![];
+
+ for field in fields.iter_mut() {
+ match utils::extract_field_attributes(&mut field.attrs) {
+ Ok(i) => custom_varule_idents.push(i),
+ Err(e) => return e.to_compile_error(),
+ }
+ }
+
for (i, field) in fields.iter().enumerate() {
- match UnsizedField::new(field, i) {
+ match UnsizedField::new(field, i, custom_varule_idents[i].clone()) {
Ok(o) => unsized_fields.push(o),
Err(_) => sized_fields.push(FieldInfo::new_for_field(field, i)),
}
}
if unsized_fields.is_empty() {
+ let last_field_index = fields.len() - 1;
let last_field = fields.iter().next_back().unwrap();
- let e = UnsizedField::new(last_field, fields.len() - 1).unwrap_err();
+
+ let e = UnsizedField::new(
+ last_field,
+ last_field_index,
+ custom_varule_idents[last_field_index].clone(),
+ )
+ .unwrap_err();
return Error::new(last_field.span(), e).to_compile_error();
}
@@ -112,10 +119,13 @@ pub fn make_varule_impl(attr: AttributeArgs, mut input: DeriveInput) -> TokenStr
let field_inits = utils::wrap_field_inits(&field_inits, fields);
let vis = &input.vis;
- let doc = format!("[`VarULE`](zerovec::ule::VarULE) type for {name}");
+ let doc = format!(
+ "[`VarULE`](zerovec::ule::VarULE) type for [`{name}`]. See [`{name}`] for documentation."
+ );
let varule_struct: DeriveInput = parse_quote!(
#[repr(#repr_attr)]
#[doc = #doc]
+ #[allow(missing_docs)]
#vis struct #ule_name #field_inits #semi
);
@@ -138,7 +148,7 @@ pub fn make_varule_impl(attr: AttributeArgs, mut input: DeriveInput) -> TokenStr
name,
&ule_name,
lt,
- input.span(),
+ input_span,
);
let eq_impl = quote!(
@@ -409,11 +419,13 @@ enum OwnULETy<'a> {
}
/// Represents the type of the last field of the struct
-#[derive(Copy, Clone, Debug)]
+#[derive(Clone, Debug)]
enum UnsizedFieldKind<'a> {
Cow(OwnULETy<'a>),
ZeroVec(&'a Type),
VarZeroVec(&'a Type),
+ /// Custom VarULE type, and the identifier corresponding to the VarULE type
+ Custom(&'a TypePath, Ident),
// Generally you should be using the above ones for maximum zero-copy, but these will still work
Growable(OwnULETy<'a>),
@@ -568,9 +580,13 @@ impl<'a> UnsizedFields<'a> {
}
impl<'a> UnsizedField<'a> {
- fn new(field: &'a Field, index: usize) -> Result<Self, String> {
+ fn new(
+ field: &'a Field,
+ index: usize,
+ custom_varule_ident: Option<Ident>,
+ ) -> Result<Self, String> {
Ok(UnsizedField {
- kind: UnsizedFieldKind::new(&field.ty)?,
+ kind: UnsizedFieldKind::new(&field.ty, custom_varule_ident)?,
field: FieldInfo::new_for_field(field, index),
})
}
@@ -596,7 +612,10 @@ impl<'a> UnsizedField<'a> {
impl<'a> UnsizedFieldKind<'a> {
/// Construct a UnsizedFieldKind for the type of a UnsizedFieldKind if possible
- fn new(ty: &'a Type) -> Result<UnsizedFieldKind<'a>, String> {
+ fn new(
+ ty: &'a Type,
+ custom_varule_ident: Option<Ident>,
+ ) -> Result<UnsizedFieldKind<'a>, String> {
static PATH_TYPE_IDENTITY_ERROR: &str =
"Can only automatically detect corresponding VarULE types for path types \
that are Cow, ZeroVec, VarZeroVec, Box, String, or Vec";
@@ -607,6 +626,9 @@ impl<'a> UnsizedFieldKind<'a> {
match *ty {
Type::Reference(ref tyref) => OwnULETy::new(&tyref.elem, "reference").map(UnsizedFieldKind::Ref),
Type::Path(ref typath) => {
+ if let Some(custom_varule_ident) = custom_varule_ident {
+ return Ok(UnsizedFieldKind::Custom(typath, custom_varule_ident));
+ }
if typath.path.segments.len() != 1 {
return Err("Can only automatically detect corresponding VarULE types for \
path types with a single path segment".into());
@@ -678,6 +700,7 @@ impl<'a> UnsizedFieldKind<'a> {
let inner_ule = inner.varule_ty();
quote!(#inner_ule)
}
+ Self::Custom(_, ref name) => quote!(#name),
Self::ZeroVec(ref inner) => quote!(zerovec::ZeroSlice<#inner>),
Self::VarZeroVec(ref inner) => quote!(zerovec::VarZeroSlice<#inner>),
}
@@ -688,8 +711,8 @@ impl<'a> UnsizedFieldKind<'a> {
match *self {
Self::Ref(_) | Self::Cow(_) | Self::Growable(_) | Self::Boxed(_) => quote!(&*#value),
- Self::ZeroVec(_) => quote!(&*#value),
- Self::VarZeroVec(_) => quote!(&*#value),
+ Self::Custom(..) => quote!(&#value),
+ Self::ZeroVec(_) | Self::VarZeroVec(_) => quote!(&*#value),
}
}
@@ -701,15 +724,16 @@ impl<'a> UnsizedFieldKind<'a> {
| Self::Growable(ref inner)
| Self::Boxed(ref inner) => inner.varule_ty(),
- Self::ZeroVec(ty) => quote!(zerovec::ZeroSlice<#ty>),
- Self::VarZeroVec(ty) => quote!(zerovec::VarZeroSlice<#ty>),
+ Self::Custom(ref path, _) => quote!(#path),
+ Self::ZeroVec(ref ty) => quote!(zerovec::ZeroSlice<#ty>),
+ Self::VarZeroVec(ref ty) => quote!(zerovec::VarZeroSlice<#ty>),
}
}
fn has_zf(&self) -> bool {
matches!(
*self,
- Self::Ref(_) | Self::Cow(_) | Self::ZeroVec(_) | Self::VarZeroVec(_)
+ Self::Ref(_) | Self::Cow(_) | Self::ZeroVec(_) | Self::VarZeroVec(_) | Self::Custom(..)
)
}
}
diff --git a/vendor/zerovec-derive/src/utils.rs b/vendor/zerovec-derive/src/utils.rs
index 3ebf33bf0..6d37444ca 100644
--- a/vendor/zerovec-derive/src/utils.rs
+++ b/vendor/zerovec-derive/src/utils.rs
@@ -9,19 +9,16 @@ use proc_macro2::TokenStream as TokenStream2;
use syn::parse::{Parse, ParseStream};
use syn::punctuated::Punctuated;
use syn::spanned::Spanned;
-use syn::{parenthesized, parse2, Attribute, Error, Field, Fields, Ident, Index, Result, Token};
+use syn::{Attribute, Error, Field, Fields, Ident, Index, Result, Token};
// Check that there are repr attributes satisfying the given predicate
pub fn has_valid_repr(attrs: &[Attribute], predicate: impl Fn(&Ident) -> bool + Copy) -> bool {
- attrs
- .iter()
- .filter(|a| a.path.get_ident().map(|a| a == "repr").unwrap_or(false))
- .any(|a| {
- parse2::<IdentListAttribute>(a.tokens.clone())
- .ok()
- .and_then(|s| s.idents.iter().find(|s| predicate(s)).map(|_| ()))
- .is_some()
- })
+ attrs.iter().filter(|a| a.path().is_ident("repr")).any(|a| {
+ a.parse_args::<IdentListAttribute>()
+ .ok()
+ .and_then(|s| s.idents.iter().find(|s| predicate(s)).map(|_| ()))
+ .is_some()
+ })
}
// An attribute that is a list of idents
@@ -31,10 +28,8 @@ struct IdentListAttribute {
impl Parse for IdentListAttribute {
fn parse(input: ParseStream) -> Result<Self> {
- let content;
- let _paren = parenthesized!(content in input);
Ok(IdentListAttribute {
- idents: content.parse_terminated(Ident::parse)?,
+ idents: input.parse_terminated(Ident::parse, Token![,])?,
})
}
}
@@ -164,16 +159,16 @@ pub fn extract_parenthetical_zerovec_attrs(
let mut error = None;
attrs.retain(|a| {
// skip the "zerovec" part
- let second_segment = a.path.segments.iter().nth(1);
+ let second_segment = a.path().segments.iter().nth(1);
if let Some(second) = second_segment {
if second.ident == name {
- let list = match parse2::<IdentListAttribute>(a.tokens.clone()) {
+ let list = match a.parse_args::<IdentListAttribute>() {
Ok(l) => l,
Err(_) => {
error = Some(Error::new(
a.span(),
- "#[zerovec::name(..)] takes in a comma separated list of identifiers",
+ format!("#[zerovec::{name}(..)] takes in a comma separated list of identifiers"),
));
return false;
}
@@ -196,7 +191,7 @@ pub fn extract_parenthetical_zerovec_attrs(
pub fn extract_zerovec_attributes(attrs: &mut Vec<Attribute>) -> Vec<Attribute> {
let mut ret = vec![];
attrs.retain(|a| {
- if a.path.segments.len() == 2 && a.path.segments[0].ident == "zerovec" {
+ if a.path().segments.len() == 2 && a.path().segments[0].ident == "zerovec" {
ret.push(a.clone());
return false;
}
@@ -205,6 +200,30 @@ pub fn extract_zerovec_attributes(attrs: &mut Vec<Attribute>) -> Vec<Attribute>
ret
}
+/// Extract attributes from field, and return them
+///
+/// Only current field attribute is `zerovec::varule(VarUleType)`
+pub fn extract_field_attributes(attrs: &mut Vec<Attribute>) -> Result<Option<Ident>> {
+ let mut zerovec_attrs = extract_zerovec_attributes(attrs);
+ let varule = extract_parenthetical_zerovec_attrs(&mut zerovec_attrs, "varule")?;
+
+ if varule.len() > 1 {
+ return Err(Error::new(
+ varule[1].span(),
+ "Found multiple #[zerovec::varule()] on one field",
+ ));
+ }
+
+ if !zerovec_attrs.is_empty() {
+ return Err(Error::new(
+ zerovec_attrs[1].span(),
+ "Found unusable #[zerovec::] attrs on field, only #[zerovec::varule()] supported",
+ ));
+ }
+
+ Ok(varule.get(0).cloned())
+}
+
#[derive(Default, Copy, Clone)]
pub struct ZeroVecAttrs {
pub skip_kv: bool,
@@ -215,7 +234,7 @@ pub struct ZeroVecAttrs {
pub hash: bool,
}
-/// Removes all known zerovec:: attributes from attrs and validates them
+/// Removes all known zerovec:: attributes from struct attrs and validates them
pub fn extract_attributes_common(
attrs: &mut Vec<Attribute>,
span: Span,
diff --git a/vendor/zerovec/.cargo-checksum.json b/vendor/zerovec/.cargo-checksum.json
index 52d626117..4baf522f8 100644
--- a/vendor/zerovec/.cargo-checksum.json
+++ b/vendor/zerovec/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"b0241085abfd43aac61f2c8f19b0050bacd4a1683b0a90cbe771cf19f6d857a3","Cargo.toml":"6ac032c0ea72eed9cd65ac50548b2caccfb973c6c6ac027ea66ab47a3f7bd497","LICENSE":"4ad7541d66a407234e2c84902124cef325c29f3e966353efdb800bedb8b8da21","README.md":"6f1174cdbf3467cb6f02e6f715bf105b833cea392995c18ed28cda871c4e15fa","benches/testdata/large_hashmap.postcard":"f327c7c25ee0ac05e0c2052ee38b76c77968240e084477b0f703b5a0bc6f4ccf","benches/testdata/large_zerohashmap.postcard":"a78c257adb577b56ac09075645a1ef5771307ec84011ab047482b1e899612ad5","benches/testdata/large_zeromap.postcard":"d0f15324e7e3bf8318e87fefad9249c0bda8e8d555c220f81467e0a90270059a","benches/vzv.rs":"2b0de82b4a40d45151e7faa2d18cfcb65351059f3f391dd64f031c565212c561","benches/zeromap.rs":"b54fd73a41872ad25415378a04bcf2fce375daf0c2226cf6b5813618310497fc","benches/zerovec.rs":"e32e380e653c62b1f344cb7be917016b739b2c4e722d62193aa3fa45908e77c0","benches/zerovec_iai.rs":"13028e4f1d85bad3ee5e5b783360b7ea247dd5de233d104b91ce46d19bf5765a","benches/zerovec_serde.rs":"7ed92aaaf5981755b4f02f366e1a0434b49a4a6ffa0945c96663626d787db070","examples/zv_serde.rs":"d292088928926579479f2dedd942200b2a5274cbbae9bdd88031193cdd1af297","src/error.rs":"03abb5dbae8dd371fca01700d6caeb012204f3a15b9cbd6d843c7d4261b8f868","src/flexzerovec/databake.rs":"d02876dba1fc3df04301c4706451ccfc99ddedc8efb675b822ec4c79cdb9816d","src/flexzerovec/mod.rs":"647678116fcf0321463b3451462920f7c517f4cf6c8a57f4f7b13f5248c8b9b0","src/flexzerovec/owned.rs":"473b7834d04794098b16f84c164c7d4dcd08eb0468fbec78f2362c701cd2ce48","src/flexzerovec/serde.rs":"a0c7a8fcf5ef06f5ea44cbfb89cac47f173c7150082d0cd745a457de3d375b4f","src/flexzerovec/slice.rs":"12c5024f84b0476f45a3dd0eb1b33599f8bd1bd039d9929bd9d3b7c8df5251e0","src/flexzerovec/vec.rs":"06c0d672941f7a8d2c80de2ecdb71996f099cb30cff065f7048825fd4500328f","src/hashmap/algorithms.rs":"37d14b650b51b1000943f1ef7f2aa4df6f202a02947717cdaaed4e5a099e920e","src/hashmap/mod.rs":"ab4e6284d9ac16fc113368637722a3c2b94f2264c6eee79fadc6431eb9e06825","src/hashmap/serde.rs":"bf85ac1e3bf0449d32338c75816e22b1f7b172aead273856441ab19787e6ca22","src/lib.rs":"30060475b78ee663df74185a0fb3659b427ca6490fb66411b697ddc0503f3d82","src/map/borrowed.rs":"c04dc9329cabae4bfd3a3aba54f2899d55c3f2e80351cc82519d9b7282606e54","src/map/databake.rs":"52e3ae299fe8e023e8c14674dffdbef8cf8eb2c81dba08d3e6045dce07cf9688","src/map/kv.rs":"03f3745df8d61ff399b66d32ba1ac9a7ee298ca00dfb463c3ea8d81c746e9d41","src/map/map.rs":"d0298742d6f46ca39f3ebc9f0761ab2997523da40df5c9ea9515a8584b266c50","src/map/mod.rs":"4961ad14522fcef16b1aad804d9559c0a5eb2582fdd163bf76f9629cb765b6c4","src/map/serde.rs":"3bed09076a45774c65a8116dd21e72413f1657ed569fe32c4abb48e979fd3144","src/map/serde_helpers.rs":"72787005972b93e49b9dc17aa47d30699364e6da9dc95aadb820ce58e4bf5c54","src/map/vecs.rs":"1606310a274626b92df1d6f03e17fb0561301eff56afbd83e9a13a990413564b","src/map2d/borrowed.rs":"f2a1f927c6d0942fd8ad183de24a32a2b1450f2f747cb328862163f6d9505ebb","src/map2d/cursor.rs":"e4447e7b5869e895b852124443151918bff5fe8cfb5207acfe5ff7b57b56bfdf","src/map2d/databake.rs":"3f392a378fd50cabd6d8b1ba0247d4da66ef0c16e14ece8e4a8617c6909fe1c3","src/map2d/map.rs":"59d3f88b2451c8298e9efac9cac3472054e76749584018eddf8edd517a422b17","src/map2d/mod.rs":"80beae7a263f1fe39c9a06d287c9150480fe3ed43397c2a7475a50ee2b2fd37f","src/map2d/serde.rs":"5a11d53e25e3fada3807878e67dc67d8a28968eae02631ac490d70c42c0e52b0","src/samples.rs":"a3a2571da3a911f20bad9179441ba2676f4e5cf1ca2408a4dc6111cadbcef6cd","src/ule/chars.rs":"b787bdb24023bbe232890aa73b270ef22949d3c758aac28822c52b5e366d633f","src/ule/custom.rs":"49604e3c1d67836a7e783b91ef2bfeaddfbe4758d6c5614ce3cd1ae60cfdb5ea","src/ule/encode.rs":"f8b784981e1b2bebef58eb425dd881fde1482ac18c2081245c9869d0fe080b6f","src/ule/mod.rs":"4a71652bb0d771aee247518a1c50e72bdea12fd884feaf7f55385808047069ef","src/ule/multi.rs":"ce74f323b3ca9fff3106ff0bba91bc9d6a6484e67ce4d0347b154973fe7ecb36","src/ule/niche.rs":"8cfec0c7f1c1ce65e3286d2d558c02ecdbfad848beeb8798ce1d0f4ae1d7b77b","src/ule/option.rs":"e695385b11f76a30c94fd1974ddbd7dcd2ef60acecd7808aa0965bc17a4828e9","src/ule/plain.rs":"27f47ce32cbcb62ef088dbd60dbb9d79c2d54e1a3ff024cdc863362542b74336","src/ule/slices.rs":"a7638535898b39be9f489f3ff9a2140b5334113c2ddc48c4fae2bc8b86efbd14","src/ule/tuple.rs":"498f6863b1af1e6b2c655e77df53cf9818613c60189b2ce1369850e388d09e3c","src/ule/unvalidated.rs":"a92f2e94ba8bb50b6f63914549501653aa0622b6d6810824c271afe37edc367a","src/varzerovec/components.rs":"b3cdc11db7bb79598f6a1b9107faa74f62d8713995c5b01a1def0e0f6fa8095c","src/varzerovec/databake.rs":"d6d14d56662b970c8ff04a9d29740400cfc549578e13c4105858d43adf6e4da8","src/varzerovec/mod.rs":"c7aaaf571f7406e666d877920966a2e39373b5cf6a038cb31dbe4192b2e75d4d","src/varzerovec/owned.rs":"dd5d42098e52e7b7b5a425ffc45899181200aa18f7502d2399c4c5b2bf6d46e6","src/varzerovec/serde.rs":"efb06a8b139dffc6d0534f7e0de4dc39b82ed224481f25bc5dea14d0159b5208","src/varzerovec/slice.rs":"4524631711cfa9ac530f116fc2801526d1d14e7a21ead10aa2bfb3f4de298cac","src/varzerovec/vec.rs":"d9eb72a571f83cd02b919373f26dec8c93179bc1a06cee145fd04a6d6083999c","src/yoke_impls.rs":"9539f89cf970e8672d0df42b3cf22da3efc503711b6cb12916d7254174519a91","src/zerofrom_impls.rs":"587b6e30555b259a109eb085bbc08963ec5fd28d943aa6369bfdf172a668292e","src/zerovec/databake.rs":"12b169cf86fa3f132af3b9d0560d7d8f8332969be90871e0c27a0ef4eceae333","src/zerovec/mod.rs":"f0981202b07c279d50e34ab5854383a65987e7690d7f7a9032255cc7fd523681","src/zerovec/serde.rs":"3a088c88732ffc0814a09777f89a83857e948c1eff6dfc2d1eb6bad5ece3976a","src/zerovec/slice.rs":"cd36bc4d24c37cb93a1baf6c78fcd4ea0440ecf271380217962bdff396ec680e"},"package":"198f54134cd865f437820aa3b43d0ad518af4e68ee161b444cdd15d8e567c8ea"} \ No newline at end of file
+{"files":{"Cargo.lock":"e843999697487aead399c903ff5117e3e1025ae02e4b754feedd44001e09a986","Cargo.toml":"d3617e04861843850b3fc635a4fca1d601ae9134b25b39a5110bc6d0adae56f6","LICENSE":"853f87c96f3d249f200fec6db1114427bc8bdf4afddc93c576956d78152ce978","README.md":"5d88517b10c49ade5a20a9c2ef0ca70d5e0856ea8d20f9c88571619d2814adfd","benches/vzv.rs":"2b0de82b4a40d45151e7faa2d18cfcb65351059f3f391dd64f031c565212c561","benches/zeromap.rs":"09395d495aa98cd8fb8f0c5a0baef036832bb5e823a32a47c3429ef4148b0518","benches/zerovec.rs":"e32e380e653c62b1f344cb7be917016b739b2c4e722d62193aa3fa45908e77c0","benches/zerovec_iai.rs":"13028e4f1d85bad3ee5e5b783360b7ea247dd5de233d104b91ce46d19bf5765a","benches/zerovec_serde.rs":"7ed92aaaf5981755b4f02f366e1a0434b49a4a6ffa0945c96663626d787db070","examples/zv_serde.rs":"d292088928926579479f2dedd942200b2a5274cbbae9bdd88031193cdd1af297","src/error.rs":"03abb5dbae8dd371fca01700d6caeb012204f3a15b9cbd6d843c7d4261b8f868","src/flexzerovec/databake.rs":"ce388543d31b7ee4db1acca00f5ea9b69428551ce13809f2606563d6768ce1a5","src/flexzerovec/mod.rs":"647678116fcf0321463b3451462920f7c517f4cf6c8a57f4f7b13f5248c8b9b0","src/flexzerovec/owned.rs":"473b7834d04794098b16f84c164c7d4dcd08eb0468fbec78f2362c701cd2ce48","src/flexzerovec/serde.rs":"a0c7a8fcf5ef06f5ea44cbfb89cac47f173c7150082d0cd745a457de3d375b4f","src/flexzerovec/slice.rs":"78cdce6aa6e2ec6154065d2f06a98d998f908b3e7719979e19303a7e0ca5dcca","src/flexzerovec/vec.rs":"06c0d672941f7a8d2c80de2ecdb71996f099cb30cff065f7048825fd4500328f","src/hashmap/algorithms.rs":"37d14b650b51b1000943f1ef7f2aa4df6f202a02947717cdaaed4e5a099e920e","src/hashmap/mod.rs":"be7adb38ba626ff86bf2ffae5231733f75451835d77578f46b631f80931ca2cf","src/hashmap/serde.rs":"c20faf5a9d2f6eb9fbca07fdbfdcba7d20d97b52d5911678e747a14de68e66f3","src/lib.rs":"aef93503cdf167b4bb50df0bf7e69f9b1e57b0527d7c2de1541705d8a4e40800","src/map/borrowed.rs":"373268aa4945b8f5382c6b8b90ce0d354de73aff1321c149ea93108234afc641","src/map/databake.rs":"cee98613d77a8cdf6730ce3b1c210e0a80023f704237fe6516cbe82c152da025","src/map/kv.rs":"03f3745df8d61ff399b66d32ba1ac9a7ee298ca00dfb463c3ea8d81c746e9d41","src/map/map.rs":"d0298742d6f46ca39f3ebc9f0761ab2997523da40df5c9ea9515a8584b266c50","src/map/mod.rs":"4961ad14522fcef16b1aad804d9559c0a5eb2582fdd163bf76f9629cb765b6c4","src/map/serde.rs":"3bed09076a45774c65a8116dd21e72413f1657ed569fe32c4abb48e979fd3144","src/map/serde_helpers.rs":"72787005972b93e49b9dc17aa47d30699364e6da9dc95aadb820ce58e4bf5c54","src/map/vecs.rs":"1606310a274626b92df1d6f03e17fb0561301eff56afbd83e9a13a990413564b","src/map2d/borrowed.rs":"debc2b98b8c4e895ba470f6b96e81d713f65066b8bc34117fb81ab90ed910cba","src/map2d/cursor.rs":"e4447e7b5869e895b852124443151918bff5fe8cfb5207acfe5ff7b57b56bfdf","src/map2d/databake.rs":"295164c08bed8e6cb1a7e000c98724d9e140afc50095968590adaf0e0ec27947","src/map2d/map.rs":"77ab627a1578a9618793c3af5fff3505132c80a9d14d41e08727d51ad8268090","src/map2d/mod.rs":"80beae7a263f1fe39c9a06d287c9150480fe3ed43397c2a7475a50ee2b2fd37f","src/map2d/serde.rs":"5a11d53e25e3fada3807878e67dc67d8a28968eae02631ac490d70c42c0e52b0","src/samples.rs":"126b379b64f1d87e1f7479ce65bb4752574db62de38d221b4ee77c93f2c1ae7b","src/ule/chars.rs":"ef4ccb3a07824af1c40d6f56de57d5b5fb4af1a765596ce03ac8efdc591b2ae3","src/ule/custom.rs":"836e57a5e602a56b9d26c4e3a84ec96ae8b62c0e563ce07f58bab81e1cc603fd","src/ule/encode.rs":"3188e7f0566653dcd8f76bb3ff01e41bba467ae3b4781b6ea3bd204bd86b0568","src/ule/macros.rs":"cc19f9c4c4b760377fbbe3d03f5df5a143568c282864463943bc1a7c96606a22","src/ule/mod.rs":"db089e93643640c993dc52d8e1a1bf20c1d921fe219968b9ea454dd4675c753d","src/ule/multi.rs":"11a0359459c76e73ecbe44b690afe21619a11e3c7d11e21af5af48c0c0eae233","src/ule/niche.rs":"8cfec0c7f1c1ce65e3286d2d558c02ecdbfad848beeb8798ce1d0f4ae1d7b77b","src/ule/option.rs":"557c39a42af784c7e11b602610a881186d4af4ef91104aeedc2d3e419d3cb6c7","src/ule/plain.rs":"afb6a74caf72b0331502edf862b0ef8ff9e42d049a7e7eac4def17a340dd159c","src/ule/slices.rs":"a7638535898b39be9f489f3ff9a2140b5334113c2ddc48c4fae2bc8b86efbd14","src/ule/tuple.rs":"03c74bc849d930788a381fd33c0505f61c9762544edd1b07ec68c95d4be21714","src/ule/unvalidated.rs":"85e03499b94bf976c48676d785033a27c9312b64ffb41fcc4c9222aa04ebc136","src/varzerovec/components.rs":"d05aed702bfd28945d14292907d9d48d5cb31343f3daed9de7e1ab733bd43de8","src/varzerovec/databake.rs":"88cf5932a2a6ae0dc9d61e9d060f6f1de0d7d21e5e2451be73525240de533f44","src/varzerovec/mod.rs":"c7aaaf571f7406e666d877920966a2e39373b5cf6a038cb31dbe4192b2e75d4d","src/varzerovec/owned.rs":"023e501125796cc1a4e86f7c3c096d40c3bacca268e059f1fedb79696678e8a1","src/varzerovec/serde.rs":"e5b4737f318281eafdac55f647ce047ecb76e8cee92ada7c0ce656cf32cf18eb","src/varzerovec/slice.rs":"8c3874d7f60b042288c566f0f08b35f7e2732aa1018e0bff07ae2457abe74ee9","src/varzerovec/vec.rs":"8eff1c3a36ae51be4d86b2a53042d15e6f16c1f6ad4b2afc20a08670a5b8a5b6","src/yoke_impls.rs":"bf555e37f579a76aabd7b61ced35621c708b0434a61946e7242f33db6227aba7","src/zerofrom_impls.rs":"587b6e30555b259a109eb085bbc08963ec5fd28d943aa6369bfdf172a668292e","src/zerovec/databake.rs":"abc308838321c5035a80313fa76b7a3852b5d62507bcb1651b1aa8025a37b27d","src/zerovec/mod.rs":"84c096cfe9c92ac6a062dac4ebe16235fd8151ab4b1114f259883a0c01585f6a","src/zerovec/serde.rs":"9f759507dbf548c56384423b76a8bc32b1e0b52e681278a1d727aed836b709a0","src/zerovec/slice.rs":"b8b4079e4e795c950f6ea210757f9e6b128eaf85dc7996ea74be8d86798133c2"},"package":"1194130c5b155bf8ae50ab16c86ab758cd695cf9ad176d2f870b744cbdbb572e"} \ No newline at end of file
diff --git a/vendor/zerovec/Cargo.lock b/vendor/zerovec/Cargo.lock
index 024b3554f..fbd52dcce 100644
--- a/vendor/zerovec/Cargo.lock
+++ b/vendor/zerovec/Cargo.lock
@@ -3,6 +3,15 @@
version = 3
[[package]]
+name = "aho-corasick"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
name = "anes"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -14,7 +23,7 @@ version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
dependencies = [
- "hermit-abi 0.1.19",
+ "hermit-abi",
"libc",
"winapi",
]
@@ -42,9 +51,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bumpalo"
-version = "3.12.0"
+version = "3.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
+checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
[[package]]
name = "cast"
@@ -66,9 +75,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "ciborium"
-version = "0.2.0"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
+checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926"
dependencies = [
"ciborium-io",
"ciborium-ll",
@@ -77,15 +86,15 @@ dependencies = [
[[package]]
name = "ciborium-io"
-version = "0.2.0"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
+checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656"
[[package]]
name = "ciborium-ll"
-version = "0.2.0"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
+checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b"
dependencies = [
"ciborium-io",
"half",
@@ -93,9 +102,9 @@ dependencies = [
[[package]]
name = "clap"
-version = "3.2.23"
+version = "3.2.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
+checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123"
dependencies = [
"bitflags",
"clap_lex",
@@ -155,20 +164,10 @@ dependencies = [
]
[[package]]
-name = "crossbeam-channel"
-version = "0.5.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521"
-dependencies = [
- "cfg-if 1.0.0",
- "crossbeam-utils",
-]
-
-[[package]]
name = "crossbeam-deque"
-version = "0.8.2"
+version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc"
+checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
dependencies = [
"cfg-if 1.0.0",
"crossbeam-epoch",
@@ -177,9 +176,9 @@ dependencies = [
[[package]]
name = "crossbeam-epoch"
-version = "0.9.13"
+version = "0.9.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a"
+checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7"
dependencies = [
"autocfg",
"cfg-if 1.0.0",
@@ -190,18 +189,18 @@ dependencies = [
[[package]]
name = "crossbeam-utils"
-version = "0.8.14"
+version = "0.8.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f"
+checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
dependencies = [
"cfg-if 1.0.0",
]
[[package]]
name = "databake"
-version = "0.1.4"
+version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3feab871d671ecc2e912e83e3a64b9b3343a224c86b999334c4c99b07cf07f52"
+checksum = "959b676312ba1aaafb2219c475560082e6b20c3bc572ec1483f93cecd748cf3d"
dependencies = [
"databake-derive",
"proc-macro2",
@@ -211,9 +210,9 @@ dependencies = [
[[package]]
name = "databake-derive"
-version = "0.1.3"
+version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be51a53c468489ae1ef0efa9f6b10706f426c0dde06d66122ffef1f0c51e87dc"
+checksum = "5f0694dfe255f1af0289d3d1b40787bb955e8603d96e96a6b14b225926e108fb"
dependencies = [
"proc-macro2",
"quote",
@@ -223,15 +222,15 @@ dependencies = [
[[package]]
name = "either"
-version = "1.8.1"
+version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
+checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
[[package]]
name = "getrandom"
-version = "0.2.8"
+version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
+checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
dependencies = [
"cfg-if 1.0.0",
"js-sys",
@@ -262,15 +261,6 @@ dependencies = [
]
[[package]]
-name = "hermit-abi"
-version = "0.2.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
-dependencies = [
- "libc",
-]
-
-[[package]]
name = "iai"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -278,9 +268,9 @@ checksum = "71a816c97c42258aa5834d07590b718b4c9a598944cd39a52dc25b351185d678"
[[package]]
name = "indexmap"
-version = "1.9.2"
+version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
+checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
dependencies = [
"autocfg",
"hashbrown",
@@ -297,15 +287,15 @@ dependencies = [
[[package]]
name = "itoa"
-version = "1.0.5"
+version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440"
+checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
[[package]]
name = "js-sys"
-version = "0.3.61"
+version = "0.3.64"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
+checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a"
dependencies = [
"wasm-bindgen",
]
@@ -318,59 +308,52 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
-version = "0.2.139"
+version = "0.2.148"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"
+checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b"
[[package]]
name = "libm"
-version = "0.2.6"
+version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb"
+checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4"
[[package]]
name = "log"
-version = "0.4.17"
+version = "0.4.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
-dependencies = [
- "cfg-if 1.0.0",
-]
+checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
+
+[[package]]
+name = "memchr"
+version = "2.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c"
[[package]]
name = "memoffset"
-version = "0.7.1"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
+checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
dependencies = [
"autocfg",
]
[[package]]
name = "num-traits"
-version = "0.2.15"
+version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
dependencies = [
"autocfg",
"libm",
]
[[package]]
-name = "num_cpus"
-version = "1.15.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
-dependencies = [
- "hermit-abi 0.2.6",
- "libc",
-]
-
-[[package]]
name = "once_cell"
-version = "1.17.0"
+version = "1.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66"
+checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
[[package]]
name = "oorandom"
@@ -380,15 +363,15 @@ checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
[[package]]
name = "os_str_bytes"
-version = "6.4.1"
+version = "6.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee"
+checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac"
[[package]]
name = "plotters"
-version = "0.3.4"
+version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
+checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45"
dependencies = [
"num-traits",
"plotters-backend",
@@ -399,24 +382,24 @@ dependencies = [
[[package]]
name = "plotters-backend"
-version = "0.3.4"
+version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
+checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609"
[[package]]
name = "plotters-svg"
-version = "0.3.3"
+version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
+checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab"
dependencies = [
"plotters-backend",
]
[[package]]
name = "postcard"
-version = "1.0.2"
+version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1c2b180dc0bade59f03fd005cb967d3f1e5f69b13922dad0cd6e047cb8af2363"
+checksum = "d534c6e61df1c7166e636ca612d9820d486fe96ddad37f7abc671517b297488e"
dependencies = [
"cobs",
"serde",
@@ -430,18 +413,18 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
[[package]]
name = "proc-macro2"
-version = "1.0.51"
+version = "1.0.67"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6"
+checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
-version = "1.0.23"
+version = "1.0.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"
+checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
dependencies = [
"proc-macro2",
]
@@ -497,9 +480,9 @@ dependencies = [
[[package]]
name = "rayon"
-version = "1.6.1"
+version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7"
+checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"
dependencies = [
"either",
"rayon-core",
@@ -507,30 +490,42 @@ dependencies = [
[[package]]
name = "rayon-core"
-version = "1.10.2"
+version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "356a0625f1954f730c0201cdab48611198dc6ce21f4acff55089b5a78e6e835b"
+checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"
dependencies = [
- "crossbeam-channel",
"crossbeam-deque",
"crossbeam-utils",
- "num_cpus",
]
[[package]]
name = "regex"
-version = "1.7.1"
+version = "1.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733"
+checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47"
dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795"
+dependencies = [
+ "aho-corasick",
+ "memchr",
"regex-syntax",
]
[[package]]
name = "regex-syntax"
-version = "0.6.28"
+version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
+checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
[[package]]
name = "rustc_version"
@@ -543,9 +538,9 @@ dependencies = [
[[package]]
name = "ryu"
-version = "1.0.12"
+version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde"
+checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
[[package]]
name = "same-file"
@@ -558,9 +553,9 @@ dependencies = [
[[package]]
name = "scopeguard"
-version = "1.1.0"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]]
name = "semver"
@@ -579,18 +574,18 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
[[package]]
name = "serde"
-version = "1.0.152"
+version = "1.0.188"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb"
+checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.152"
+version = "1.0.188"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e"
+checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
dependencies = [
"proc-macro2",
"quote",
@@ -599,9 +594,9 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.93"
+version = "1.0.107"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cad406b69c91885b5107daf2c29572f6c8cdb3c66826821e286c533490c0bc76"
+checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65"
dependencies = [
"itoa",
"ryu",
@@ -616,9 +611,9 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
[[package]]
name = "syn"
-version = "1.0.107"
+version = "2.0.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
+checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8"
dependencies = [
"proc-macro2",
"quote",
@@ -627,9 +622,9 @@ dependencies = [
[[package]]
name = "synstructure"
-version = "0.12.6"
+version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
+checksum = "285ba80e733fac80aa4270fbcdf83772a79b80aa35c97075320abfee4a915b06"
dependencies = [
"proc-macro2",
"quote",
@@ -667,9 +662,9 @@ dependencies = [
[[package]]
name = "unicode-ident"
-version = "1.0.6"
+version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
[[package]]
name = "unicode-xid"
@@ -679,12 +674,11 @@ checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
[[package]]
name = "walkdir"
-version = "2.3.2"
+version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
+checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
dependencies = [
"same-file",
- "winapi",
"winapi-util",
]
@@ -696,9 +690,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasm-bindgen"
-version = "0.2.84"
+version = "0.2.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
+checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342"
dependencies = [
"cfg-if 1.0.0",
"wasm-bindgen-macro",
@@ -706,9 +700,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-backend"
-version = "0.2.84"
+version = "0.2.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
+checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd"
dependencies = [
"bumpalo",
"log",
@@ -721,9 +715,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.84"
+version = "0.2.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
+checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -731,9 +725,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.84"
+version = "0.2.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
+checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
dependencies = [
"proc-macro2",
"quote",
@@ -744,15 +738,15 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.84"
+version = "0.2.87"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
+checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
[[package]]
name = "web-sys"
-version = "0.3.61"
+version = "0.3.64"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
+checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -776,9 +770,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-util"
-version = "0.1.5"
+version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
dependencies = [
"winapi",
]
@@ -791,24 +785,52 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "yoke"
-version = "0.7.1"
+version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1848075a23a28f9773498ee9a0f2cf58fcbad4f8c0ccf84a210ab33c6ae495de"
+checksum = "61e38c508604d6bbbd292dadb3c02559aa7fff6b654a078a36217cad871636e4"
dependencies = [
"serde",
"stable_deref_trait",
+ "yoke-derive",
"zerofrom",
]
[[package]]
+name = "yoke-derive"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d5e19fb6ed40002bab5403ffa37e53e0e56f914a4450c8765f533018db1db35f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
name = "zerofrom"
-version = "0.1.2"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "655b0814c5c0b19ade497851070c640773304939a6c0fd5f5fb43da0696d05b7"
+dependencies = [
+ "zerofrom-derive",
+]
+
+[[package]]
+name = "zerofrom-derive"
+version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df54d76c3251de27615dfcce21e636c172dafb2549cd7fd93e21c66f6ca6bea2"
+checksum = "e6a647510471d372f2e6c2e6b7219e44d8c574d24fdc11c610a61455782f18c3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
[[package]]
name = "zerovec"
-version = "0.9.4"
+version = "0.10.0"
dependencies = [
"bincode",
"criterion",
@@ -829,12 +851,11 @@ dependencies = [
[[package]]
name = "zerovec-derive"
-version = "0.9.4"
+version = "0.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "486558732d5dde10d0f8cb2936507c1bb21bc539d924c949baf5f36a58e51bac"
+checksum = "7a4a1638a1934450809c2266a70362bfc96cd90550c073f5b8a55014d1010157"
dependencies = [
"proc-macro2",
"quote",
"syn",
- "synstructure",
]
diff --git a/vendor/zerovec/Cargo.toml b/vendor/zerovec/Cargo.toml
index 5ef086ee1..c98d069e3 100644
--- a/vendor/zerovec/Cargo.toml
+++ b/vendor/zerovec/Cargo.toml
@@ -11,13 +11,16 @@
[package]
edition = "2021"
+rust-version = "1.66"
name = "zerovec"
-version = "0.9.4"
+version = "0.10.0"
authors = ["The ICU4X Project Developers"]
include = [
+ "data/**/*",
"src/**/*",
"examples/**/*",
"benches/**/*",
+ "tests/**/*",
"Cargo.toml",
"LICENSE",
"README.md",
@@ -37,17 +40,21 @@ categories = [
"no-std",
"data-structures",
]
-license = "Unicode-DFS-2016"
+license-file = "LICENSE"
repository = "https://github.com/unicode-org/icu4x"
-[package.metadata.workspaces]
-independent = true
+[package.metadata.cargo-all-features]
+denylist = ["bench"]
+max_combination_size = 3
[package.metadata.docs.rs]
all-features = true
-[package.metadata.cargo-all-features]
-denylist = ["bench"]
+[package.metadata.workspaces]
+independent = true
+
+[lib]
+bench = false
[[example]]
name = "zv_serde"
@@ -76,12 +83,14 @@ harness = false
required-features = [
"serde",
"hashmap",
+ "derive",
]
[dependencies.databake]
version = "0.1.3"
features = ["derive"]
optional = true
+default-features = false
[dependencies.serde]
version = "1.0"
@@ -99,17 +108,16 @@ optional = true
[dependencies.zerofrom]
version = "0.1.1"
+default-features = false
[dependencies.zerovec-derive]
-version = "0.9.2"
+version = ">=0.9.4, <0.11.0"
optional = true
+default-features = false
[dev-dependencies.bincode]
version = "1.3"
-[dev-dependencies.criterion]
-version = "0.4"
-
[dev-dependencies.getrandom]
version = "0.2"
features = ["js"]
@@ -138,8 +146,27 @@ features = ["derive"]
[dev-dependencies.serde_json]
version = "1.0"
+[dev-dependencies.yoke]
+version = "0.7.1"
+features = ["derive"]
+default-features = false
+
+[dev-dependencies.zerofrom]
+version = "0.1.1"
+features = ["derive"]
+default-features = false
+
[features]
-bench = []
+bench = [
+ "serde",
+ "databake",
+]
+databake = ["dep:databake"]
derive = ["dep:zerovec-derive"]
hashmap = ["dep:t1ha"]
+serde = ["dep:serde"]
std = []
+yoke = ["dep:yoke"]
+
+[target."cfg(not(target_arch = \"wasm32\"))".dev-dependencies.criterion]
+version = "0.4"
diff --git a/vendor/zerovec/LICENSE b/vendor/zerovec/LICENSE
index 9858d01ab..9845aa5f4 100644
--- a/vendor/zerovec/LICENSE
+++ b/vendor/zerovec/LICENSE
@@ -1,49 +1,42 @@
-UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
-
-See Terms of Use <https://www.unicode.org/copyright.html>
-for definitions of Unicode Inc.’s Data Files and Software.
-
-NOTICE TO USER: Carefully read the following legal agreement.
-BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
-DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
-YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
-TERMS AND CONDITIONS OF THIS AGREEMENT.
-IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
-THE DATA FILES OR SOFTWARE.
+UNICODE LICENSE V3
COPYRIGHT AND PERMISSION NOTICE
-Copyright © 1991-2022 Unicode, Inc. All rights reserved.
-Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Unicode data files and any associated documentation
-(the "Data Files") or Unicode software and any associated documentation
-(the "Software") to deal in the Data Files or Software
-without restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, and/or sell copies of
-the Data Files or Software, and to permit persons to whom the Data Files
-or Software are furnished to do so, provided that either
-(a) this copyright and permission notice appear with all copies
-of the Data Files or Software, or
-(b) this copyright and permission notice appear in associated
-Documentation.
-
-THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
-NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
-DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
-DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
-TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THE DATA FILES OR SOFTWARE.
-
-Except as contained in this notice, the name of a copyright holder
-shall not be used in advertising or otherwise to promote the sale,
-use or other dealings in these Data Files or Software without prior
-written authorization of the copyright holder.
+Copyright © 2020-2023 Unicode, Inc.
+
+NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR
+SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT
+DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of data files and any associated documentation (the "Data Files") or
+software and any associated documentation (the "Software") to deal in the
+Data Files or Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that either (a)
+this copyright and permission notice appear with all copies of the Data
+Files or Software, or (b) this copyright and permission notice appear in
+associated Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
+THIRD PARTY RIGHTS.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE
+BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES,
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA
+FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written
+authorization of the copyright holder.
—
diff --git a/vendor/zerovec/README.md b/vendor/zerovec/README.md
index b650d7dbd..b1e2317a6 100644
--- a/vendor/zerovec/README.md
+++ b/vendor/zerovec/README.md
@@ -1,5 +1,7 @@
# zerovec [![crates.io](https://img.shields.io/crates/v/zerovec)](https://crates.io/crates/zerovec)
+<!-- cargo-rdme start -->
+
Zero-copy vector abstractions for arbitrary types, backed by byte slices.
`zerovec` enables a far wider range of types — beyond just `&[u8]` and `&str` — to participate in
@@ -36,9 +38,9 @@ This crate has several optional Cargo features:
- `serde`: Allows serializing and deserializing `zerovec`'s abstractions via [`serde`](https://docs.rs/serde)
- `yoke`: Enables implementations of `Yokeable` from the [`yoke`](https://docs.rs/yoke/) crate, which is also useful
in situations involving a lot of zero-copy deserialization.
- - `derive`: Makes it easier to use custom types in these collections by providing the [`#[make_ule]`](crate::make_ule) and
- [`#[make_varule]`](crate::make_varule) proc macros, which generate appropriate [`ULE`](crate::ule::ULE) and
- [`VarULE`](crate::ule::VarULE)-conformant types for a given "normal" type.
+ - `derive`: Makes it easier to use custom types in these collections by providing the `#[make_ule]` and
+ `#[make_varule]` proc macros, which generate appropriate [`ULE`](https://docs.rs/zerovec/latest/zerovec/ule/trait.ULE.html) and
+ [`VarULE`](https://docs.rs/zerovec/latest/zerovec/ule/trait.VarULE.html)-conformant types for a given "normal" type.
- `std`: Enabled `std::Error` implementations for error types. This crate is by default `no_std` with a dependency on `alloc`.
[`ZeroVec<'a, T>`]: ZeroVec
@@ -188,6 +190,8 @@ The benches used to generate the above table can be found in the `benches` direc
`zeromap` benches are named by convention, e.g. `zeromap/deserialize/small`, `zeromap/lookup/large`. The type
is appended for baseline comparisons, e.g. `zeromap/lookup/small/hashmap`.
+<!-- cargo-rdme end -->
+
## More Information
For more information on development, authorship, contributing etc. please visit [`ICU4X home page`](https://github.com/unicode-org/icu4x).
diff --git a/vendor/zerovec/benches/testdata/large_hashmap.postcard b/vendor/zerovec/benches/testdata/large_hashmap.postcard
deleted file mode 100644
index f84e5f11e..000000000
--- a/vendor/zerovec/benches/testdata/large_hashmap.postcard
+++ /dev/null
@@ -1 +0,0 @@
-€€sr522Serbianfr4229Frenchzh2687Chineseccp6286Chakmaja3506Japanesees6707Spanishru5788Russianes3469Spanishfr6599Frenchbn3261Banglatr6299Turkisheo7231 Esperantoar4542Arabiczh6053Chineseiu711 Inuktituttr1334Turkishfr7248Frenches6392Spanishchr3872Cherokeeiu2024 Inuktitutru350Russiansr1128Serbianzh3388Chineseru5626Russianel7248Greekeo514 Esperantoccp5062Chakmachr6790Cherokeeru2145Russianiu2673 Inuktitutth4259Thaith5509Thaichr4717Cherokeezh4898Chinesechr1128Cherokeechr5002Cherokeebn1810Banglaen7482Englisheo6058 Esperantozh5450Chineseru5336Russianru48Russiantr1930Turkishccp6785Chakmaen899Englishchr1463Cherokeesr4743Serbianen308Englishbn3853Banglaen5128Englishiu3488 Inuktituttr4264Turkishru4779Russianzh5589Chineseiu7795 Inuktitutbn5360Banglabn6220Banglasr5881Serbianel4518Greekeo7254 Esperantoen2627Englishes51Spanishru5204Russianar4137Arabiceo4300 Esperantofr5709Frenchbn6667Banglafr6781Frenchiu8120 Inuktitutja7389Japanesebn6316Banglaiu5811 Inuktitutel288Greekfr1030Frenchru5593Russianchr4275Cherokeeiu5609 Inuktitutzh7748Chineseel2210Greekiu2652 Inuktituten165Englishar242Arabicbn1587Banglaen5929Englishes7995Spanishar2506Arabicfr3095Frenchel4904Greekccp4183Chakmaiu6864 Inuktitutth6007Thaichr3310Cherokeefr3545Frenchsr4737Serbiansr2292Serbianru5984Russianeo6745 Esperantosr1725Serbianccp488Chakmael2297Greekfr3172Frenchfr5454Frenchbn1109Banglatr5758Turkishchr5316Cherokeeiu8054 Inuktitutja2049Japanesesr5534Serbianel6130Greekth7513Thaiar7549Arabicen6102Englishsr4675Serbiantr7184Turkishzh1261Chinesechr132Cherokeees2289Spanishen1107Englishes4263Spanishtr7663Turkishfr259Frenchfr4043Frenchzh4198Chinesefr6845Frenchel1113Greekiu8066 Inuktitutsr5387Serbianja3750Japanesees3355Spanishtr336Turkishar3173Arabicen1017Englishth5865Thaith1955Thaien3141Englishel585Greekiu2979 Inuktitutiu4350 Inuktitutes1007Spanishth7479Thaifr4883Frenchchr1951Cherokeebn1845Banglatr4767Turkishja5821Japanesezh5753Chineseen4780Englishes2052Spanishtr813Turkishen1902Englishzh390Chineseeo1887 Esperantozh1681Chinesebn7553Banglafr4245Frenchchr5119Cherokeees6870Spanishsr708Serbianeo899 Esperantoccp1609Chakmazh461Chinesezh7524Chinesebn5115Banglabn171Banglaeo5708 Esperantozh7804Chinesechr5441Cherokeeel5203Greekth5239Thairu3504Russianeo7003 Esperantoen2826Englishen2386Englishja3059Japaneseiu5667 Inuktituten442Englishzh354Chineseccp1760Chakmafr3391Frenchiu7396 Inuktitutzh6127Chinesezh7899Chinesechr2219Cherokeeja2322Japaneseccp5118Chakmaru6753Russianar7959Arabicccp417Chakmachr128Cherokeeen3573Englishen3898Englishel7709Greekth4338Thaieo3342 Esperantoen6518Englishccp2872Chakmaiu7463 Inuktitutchr4166Cherokeebn8173Banglaes6991Spanishen5951Englishen6574Englishen7176Englishzh7159Chinesebn95Banglabn1321Banglaccp2249Chakmaes6058Spanishar7358Arabicfr4028Frenchfr4761Frenchja4610Japaneseeo2323 Esperantoeo5354 Esperantoes4990Spanishel654Greekth2426Thaibn3426Banglath7304Thaieo8091 Esperantoru4102Russianzh4234Chineseen1391Englishtr1418Turkishel4386Greeken6793Englishfr5293Frenchbn3684Banglath1133Thaija452Japanesetr7859Turkishiu7895 Inuktituttr5669Turkishzh7317Chineseeo2305 Esperantoccp3510Chakmachr3344Cherokeees3438Spanishsr5049Serbianel6637Greekar3259Arabicchr205Cherokeeel4096Greeken560Englishccp1613Chakmaccp817Chakmaeo2039 Esperantoth2405Thaibn7543Banglaru7852Russianja1612Japaneseth2702Thaiel5002Greekccp1521Chakmaru4417Russianth933Thaija3811Japanesetr139Turkishccp3793Chakmael7140Greekchr6357Cherokeechr293Cherokeees2789Spanishja3839Japaneseen2985Englishsr6544Serbianchr2949Cherokeeiu7580 Inuktitutes5703Spanishja3908Japaneseccp6166Chakmael3509Greekes1165Spanishccp3277Chakmaeo291 Esperantoja7933Japaneseru4488Russianen3715Englishtr3897Turkishtr4144Turkishchr1461Cherokeeja663Japanesechr2656Cherokeechr6761Cherokeetr1423Turkishccp1281Chakmaar6929Arabicbn3285Banglaru793Russianru6611Russianccp1359Chakmasr32Serbiansr5923Serbiansr3008Serbianccp3849Chakmaen379Englishtr3255Turkishel7717Greekzh7920Chineseccp5417Chakmaeo7363 Esperantoes6847Spanishel7689Greektr2442Turkishzh6324Chinesefr1808Frenchsr3696Serbianel1040Greeken7050Englishth4452Thaiel493Greeksr2548Serbianar5056Arabicar3582Arabicbn7882Banglath5732Thaiccp1044Chakmaru5566Russianzh532Chineseru460Russianen6081Englishiu71 Inuktitutccp7681Chakmaru7904Russianzh1788Chineseccp6477Chakmabn5207Banglaes3112Spanishfr2469Frenchru3058Russiansr1254Serbianen3935Englishen2843Englishja1171Japanesear3006Arabicth4152Thaitr8023Turkishen1525Englishbn3376Banglaar3134Arabicbn4837Banglaen7292Englishtr6422Turkishzh2812Chineseel4506Greekru7270Russianth631Thaies6270Spanishccp3136Chakmaeo8009 Esperantochr4958Cherokeeccp3663Chakmath7418Thaien2489Englisheo7177 Esperantoja7683Japaneseccp7367Chakmaccp3860Chakmafr6786Frenchiu100 Inuktitutja2970Japaneseja5079Japanesetr2031Turkishbn3874Banglachr2222Cherokeetr6855Turkishzh3736Chinesezh6332Chinesesr6588Serbianth7786Thaichr1931Cherokeeen3031Englishar2221Arabicccp7980Chakmaar2974Arabicar6070Arabicbn4522Banglaar2009Arabicja5741Japanesebn14Banglasr7003Serbianchr3563Cherokeeiu3708 Inuktitutja1980Japanesees989Spanishja8053Japanesees5093Spanishtr2479Turkishccp912Chakmachr652Cherokeeru567Russianiu2423 Inuktitutar3079Arabictr7424Turkishzh5019Chinesezh8096Chineseel3589Greeksr5734Serbianen5059Englishru2855Russianccp6883Chakmaccp6508Chakmaen7567Englishth2404Thaija1137Japaneseel5838Greeksr6394Serbianzh2942Chineseja6740Japanesefr6021Frenchtr7927Turkishen2926Englishccp5013Chakmafr1351Frenchccp1742Chakmaeo2576 Esperantoja2351Japaneseeo6623 Esperantoiu4175 Inuktituttr2770Turkishfr2751Frenchen1942Englishchr288Cherokeeth6961Thaiar5814Arabicchr4894Cherokeeja226Japaneseccp1494Chakmaja3956Japanesesr6222Serbianiu6857 Inuktitutsr7199Serbianfr3303Frenchtr1152Turkishth6701Thaith3193Thaieo5535 Esperantoeo5131 Esperantoeo1221 Esperantoru2002Russianchr1107Cherokeeel3257Greekes5298Spanishru3068Russianar3510Arabictr6489Turkishzh1969Chinesetr3775Turkishbn6138Banglaen1938Englisheo4651 Esperantotr694Turkishtr1892Turkishtr3998Turkishsr907Serbianen1774Englishes6313Spanishccp3694Chakmaiu7530 Inuktituttr5564Turkishen174Englishja1628Japaneseja2798Japaneseen7373Englishzh6429Chineseel851Greekfr4438Frenchzh8174Chinesefr6640Frenchth645Thaith920Thaieo2252 Esperantoja5473Japaneseru1533Russianbn1949Banglaru6617Russiantr3150Turkishchr7608Cherokeeeo4094 Esperantofr5042Frenchen3808Englishar7504Arabiceo7025 Esperantofr8134Frenchth5380Thaien2084Englishth4870Thaiel7120Greekeo1070 Esperantoeo3746 Esperantozh4221Chineseeo5443 Esperantoth3743Thaifr7904Frenchen479Englisheo1197 Esperantobn3687Banglaes6368Spanishes3072Spanishsr475Serbianel1279Greekzh3989Chineseen4870Englishtr5426Turkishchr82Cherokeezh4055Chinesebn1663Banglaar780Arabicar4166Arabiciu6184 Inuktitutes957Spanishja862Japaneseccp5341Chakmaru814Russianzh3422Chineseen3862Englisheo5358 Esperantoja6541Japaneseru8046Russianar671Arabicbn3207Banglaen2578Englishja779Japaneseeo5918 Esperantoiu2795 Inuktitutja677Japanesefr1711Frenchfr247Frenchccp3537Chakmachr649Cherokeechr1312Cherokeeel1762Greekeo1745 Esperantosr7376Serbianja1060Japanesesr6962Serbianes4471Spanishzh8020Chineseeo6619 Esperantoja5906Japaneseen7936Englishbn7043Banglaccp2750Chakmaiu2631 Inuktitutccp2471Chakmaccp4594Chakmaen4891Englishfr489Frenchsr5502Serbianbn3000Banglaru5878Russianar1095Arabicccp5223Chakmaeo5741 Esperantoes3261Spanishth1751Thaisr4001Serbianiu4513 Inuktitutccp6905Chakmazh7180Chinesebn6872Banglael7587Greekes7769Spanishzh4538Chineseel6758Greekar5652Arabicar6020Arabicja2954Japaneseen5018Englishzh4568Chineseiu6334 Inuktitutth5978Thaith6605Thaizh7793Chineseel3533Greekes6767Spanishtr7892Turkishbn7873Banglath3178Thaiiu1255 Inuktitutchr7500Cherokeeja6528Japaneseiu5754 Inuktitutzh753Chineseeo1921 Esperantochr2489Cherokeeeo6122 Esperantoel3850Greekiu6625 Inuktitutth3689Thaiel3867Greekeo755 Esperantoel1191Greekru1561Russianfr1167Frenchzh6989Chineseeo5067 Esperantobn4589Banglabn2860Banglaja4575Japaneseccp3686Chakmaiu2843 Inuktituttr1189Turkishiu3466 Inuktitutfr5754Frenchth7309Thaien4614Englishru2187Russianth6835Thaiiu7660 Inuktitutel2103Greekccp5096Chakmaja3331Japaneseccp7175Chakmath6450Thaitr2731Turkishru5234Russianen7264Englishfr367Frenchchr731Cherokeees3359Spanishar1842Arabicccp4905Chakmaja801Japaneseru6978Russianbn6349Banglaiu3810 Inuktitutja5334Japaneseel1697Greekes2494Spanishiu7096 Inuktitutzh7027Chineseru6725Russiansr415Serbianru6184Russianbn5373Banglath4909Thaichr3829Cherokeefr7203Frenchzh3256Chineseru70Russianru1631Russianiu4798 Inuktitutar1806Arabicja1160Japanesesr731Serbianes2522Spanishen1209Englishar3203Arabicel1609Greekru6690Russianzh2369Chinesefr1185Frenchccp2571Chakmaja1736Japaneseja4771Japanesees7354Spanishtr1612Turkishen3980Englishar3151Arabicchr6570Cherokeebn641Banglatr4236Turkishsr3321Serbianiu7743 Inuktitutel2929Greekru1999Russianbn7015Banglael3330Greekth7211Thaija5131Japaneseel5488Greekbn488Banglaeo2925 Esperantoiu2583 Inuktitutiu7194 Inuktitutja4850Japaneseru4301Russianja4468Japanesebn539Banglael8171Greekar5622Arabicru1448Russianen912Englishth2535Thaith7526Thaifr2336Frenchel7297Greekes1983Spanishchr506Cherokeesr5585Serbianbn2290Banglafr4313Frenchccp5108Chakmachr4782Cherokeeen5349Englishfr2590Frenchccp241Chakmaar2657Arabicchr4264Cherokeeiu1702 Inuktitutja7589Japanesebn3476Banglafr1362Frenchsr4941Serbianchr5130Cherokeear1370Arabicfr1541Frenchru6119Russianth4557Thaiel6428Greekfr7096Frenchen1994Englishes5383Spanishiu3277 Inuktitutja1124Japanesefr7183Frenchzh6823Chineseja4734Japanesesr2761Serbiantr6042Turkishar4916Arabicar2119Arabicchr6179Cherokeeen3008Englishchr3727Cherokeeel1546Greekel4579Greekeo1004 Esperantoccp5017Chakmafr4357Frenchth6189Thairu7249Russianel3270Greeksr4768Serbianzh2028Chineseccp2206Chakmael5747Greeken3906Englishiu7762 Inuktitutth7365Thaies3382Spanishru6631Russianel1360Greekel6466Greekeo536 Esperantotr5608Turkishes4414Spanisheo535 Esperantoen7793Englishzh2632Chinesechr194Cherokeeiu3148 Inuktituten3233Englishes7500Spanishfr3094Frenchsr4278Serbianiu3417 Inuktitutar6933Arabicsr4215Serbianchr4725Cherokeetr6603Turkishru1027Russianja4375Japanesesr7598Serbianen7093Englishes1263Spanishru671Russianeo6445 Esperantoel2942Greeken7199Englishel7074Greeksr5050Serbianes1523Spanishbn5841Banglasr7569Serbianchr173Cherokeeiu4922 Inuktitutsr5174Serbiantr5447Turkishth351Thaiar854Arabicccp1601Chakmaes5531Spanishja690Japanesetr1855Turkishfr6855Frenchiu1782 Inuktitutar7333Arabicel604Greekiu3159 Inuktitutru5335Russianeo4975 Esperantofr529Frenchbn2Banglaja898Japaneseccp4829Chakmatr6325Turkishccp3577Chakmachr2027Cherokeear7961Arabicbn59Banglaru8153Russianar6286Arabicar2346Arabicen3270Englishtr365Turkishja4139Japaneseiu8005 Inuktitutzh3219Chinesees3732Spanishbn5602Banglaccp2108Chakmabn2513Banglachr654Cherokeebn3652Banglabn1573Banglazh4826Chinesear2609Arabicchr1582Cherokeeel7423Greekru6926Russiantr7945Turkishccp7341Chakmazh3574Chineseccp957Chakmaiu2365 Inuktituten6335Englishsr6019Serbianeo4953 Esperantoru6224Russianru1313Russianar482Arabicja5815Japaneseiu3699 Inuktitutru3643Russianen5397Englishsr3407Serbianth2237Thaija7264Japanesetr3829Turkishccp4067Chakmachr1294Cherokeesr6704Serbiantr551Turkishru8012Russianth431Thaiel7973Greeken3404Englishfr4822Frenchja1485Japanesetr8032Turkishru5625Russiansr2171Serbianen4253Englishzh6878Chineseeo526 Esperantofr6828Frenchsr7245Serbiantr7974Turkishar7185Arabictr5337Turkishar2917Arabicsr5205Serbianar7880Arabicar4075Arabicfr5302Frenchfr485Frenches5306Spanishth4883Thaien6928Englishar1951Arabicchr1843Cherokeeccp5867Chakmazh3496Chineseccp3160Chakmaen1738Englishiu19 Inuktitutfr1257Frenchru61Russianel7409Greekfr1130Frenchru3761Russianiu5897 Inuktitutsr5750Serbianth4205Thaibn2106Banglabn1789Banglaccp3241Chakmasr4799Serbianar829Arabicfr122Frenchar7104Arabicbn5364Banglael4639Greekccp6219Chakmaeo704 Esperantoes435Spanishtr5774Turkishzh6769Chinesechr1236Cherokeeel5668Greekja4965Japanesefr4726Frenchth3303Thaifr6280Frenchen8108Englishar348Arabicbn6828Banglaar1874Arabiceo7295 Esperantosr3514Serbianccp2111Chakmafr2256Frenchchr6624Cherokeeeo7645 Esperantofr3867Frenchel1094Greekja2336Japanesezh3464Chinesefr7603Frenchzh464Chineseel3572Greektr3235Turkishbn888Banglabn7714Banglachr4506Cherokeees7816Spanishja6604Japanesezh6526Chinesechr6431Cherokeefr995Frenchiu5731 Inuktitutsr2143Serbianeo1886 Esperantoru6531Russiansr5508Serbianzh2478Chinesefr4962Frenchfr1277Frencheo4501 Esperantofr6683Frenchja4555Japanesebn3453Banglael6462Greekiu2315 Inuktitutiu7277 Inuktituttr4771Turkishth4758Thaichr2524Cherokeesr6265Serbianzh7125Chinesetr6426Turkishes7040Spanishtr5196Turkishzh7568Chinesefr2977Frenchzh675Chineseeo4295 Esperantoel149Greekel809Greekeo5956 Esperantoja2391Japaneseja3892Japanesefr1838Frenchth4460Thaien6576Englishes2924Spanishth4918Thaieo2825 Esperantozh3174Chineseja4586Japanesefr7824Frenchar5050Arabicchr377Cherokeees6015Spanishru1346Russianzh3125Chineseeo7419 Esperantoiu7047 Inuktitutfr5843Frenchchr78Cherokeefr7277Frenchsr236Serbianja859Japanesechr2396Cherokeeeo3673 Esperantoru4932Russianes3596Spanishja3330Japaneseth1006Thaizh5485Chineseru8002Russianiu4762 Inuktitutchr2451Cherokeechr5552Cherokeeja6288Japanesefr756Frenchbn3555Banglasr7391Serbianel4945Greeksr7844Serbiantr5511Turkishar1406Arabicth7507Thaiel1765Greekar5569Arabicchr7767Cherokeear4898Arabices743Spanishja6848Japanesefr6037Frenchar3741Arabicbn1500Banglaen4846Englishru2316Russianchr422Cherokeebn6721Banglatr8178Turkishccp5040Chakmaes2673Spanisheo2816 Esperantoeo4440 Esperantofr7496Frenchru5200Russianth157Thaizh483Chinesebn507Banglaja3553Japanesefr7657Frenchja4321Japaneseja2734Japaneseeo4717 Esperantoel1465Greekth1294Thaies4877Spanishsr421Serbianfr8163Frenchsr6004Serbiansr7488Serbianccp5580Chakmafr5210Frenchbn3926Banglath1694Thaija1293Japaneseja5185Japaneseen1556Englishes4559Spanishru6311Russianen574Englishes5972Spanishth1476Thaija737Japaneseel3132Greeksr1791Serbianeo3157 Esperantoen1589Englishel2652Greekeo7074 Esperantobn7197Banglaes2364Spanishtr6003Turkishel1494Greekes3409Spanishccp8035Chakmaru6187Russianchr547Cherokeebn3655Banglasr5382Serbianar6552Arabiciu2015 Inuktitutzh4005Chineseel4837Greekes6146Spanishccp4528Chakmatr7127Turkishzh4520Chineseel4687Greekiu8033 Inuktituttr1435Turkishbn4972Banglaen6816Englishzh37Chineseiu6140 Inuktitutbn3358Banglael530Greekru4659Russiantr1824Turkishchr4262Cherokeeeo6370 Esperantoen5085Englishzh887Chineseen6939Englishar8075Arabicsr308Serbianes320Spanishfr741Frenchiu341 Inuktitutbn7463Banglaes2739Spanishtr5522Turkishen373Englishchr7591Cherokeechr7130Cherokeeccp668Chakmaiu695 Inuktituttr4829Turkishen1476Englishel6747Greekth1411Thaifr5452Frenchja6850Japaneseru4859Russianru6177Russianfr953Frenchbn4516Banglael4827Greekfr4020Frenchja6335Japaneseru5225Russianen6337Englishccp3949Chakmaeo4826 Esperantoja6469Japaneseru6152Russianru4367Russiantr6148Turkishth3820Thaibn7168Banglaeo5154 Esperantosr5436Serbianbn5524Banglaen2085Englishes7944Spanishfr713Frencheo4191 Esperantofr6607Frenchzh6342Chinesefr2942Frencheo6483 Esperantoiu5485 Inuktituten4076Englishccp7227Chakmaen5123Englishes1422Spanishsr4423Serbianchr7861Cherokeechr2089Cherokeeru687Russianiu5987 Inuktitutar6472Arabicar2177Arabiceo395 Esperantoeo2000 Esperantoel6708Greekzh6695Chineseel5182Greekth6764Thaifr7945Frenchtr7019Turkishzh3657Chineseja5035Japanesefr6856Frenchel5040Greeken7432Englishes376Spanishchr6998Cherokeeel4031Greekfr1612Frenchfr4564Frenchar4770Arabicccp650Chakmaes2104Spanishja7411Japanesees3164Spanishbn6539Banglael2281Greekes8075Spanishccp6581Chakmaccp7432Chakmaen1522Englishbn2113Banglachr7192Cherokeefr3301Frenches6418Spanishchr3801Cherokeeccp6853Chakmafr2604Frenchiu3481 Inuktitutsr2928Serbianar6726Arabiczh188Chineseiu4709 Inuktituttr7616Turkishth7294Thaifr2364Frenchel7014Greekzh754Chineseel4487Greekru2009Russianes844Spanishar1939Arabiciu51 Inuktitutja3399Japanesetr3013Turkishchr7483Cherokeeen8106Englishfr5330Frenchru171Russianar5518Arabiczh2741Chineseru324Russianccp7417Chakmaen2615Englishru1924Russianel1694Greekru5876Russianth6694Thaibn6251Banglath4732Thaisr2546Serbianes3562Spanishzh4516Chineseth7713Thaitr3797Turkishiu3670 Inuktituttr4223Turkishsr914Serbianja6205Japaneseen3380Englishes763Spanishru8018Russianccp6169Chakmatr8102Turkishsr6511Serbianes2329Spanishth2948Thaiel4055Greekchr211Cherokeear2715Arabicen7091Englishel6633Greekiu591 Inuktitutel2326Greekja237Japaneseel4368Greekiu4236 Inuktitutbn6604Banglaiu6578 Inuktitutja2614Japanesezh6828Chinesear1072Arabicchr3869Cherokeees6158Spanishsr6093Serbianfr6706Frenches4533Spanishja5499Japanesetr6232Turkishes1765Spanishsr4499Serbianen4997Englisheo5376 Esperantoru7090Russiantr4334Turkishsr4102Serbianccp6294Chakmachr1814Cherokeebn6042Banglasr6261Serbianccp2017Chakmafr512Frenchja12Japanesezh2185Chinesees35Spanishth1897Thaizh8051Chineseth1459Thaija2002Japaneseen6043Englishiu7269 Inuktitutja2247Japanesees4397Spanishar636Arabictr1561Turkishiu8187 Inuktitutchr3686Cherokeetr5413Turkishth2668Thaiiu4493 Inuktitutth5296Thaitr7872Turkishchr1486Cherokeeel6297Greekes3524Spanishar2638Arabicchr5621Cherokeeel4217Greekja6000Japanesesr4442Serbianchr4728Cherokeeth1365Thaiar2564Arabictr2647Turkishzh1545Chineseiu7975 Inuktitutiu4474 Inuktitutzh32Chineseel7790Greekes3700Spanishth5920Thaija4151Japaneseel156Greekja3646Japaneseeo330 Esperantotr1144Turkishccp4574Chakmaen3098Englishfr3169Frenchccp5921Chakmaru6002Russiansr5350Serbianen2429Englishiu5286 Inuktitutiu3312 Inuktitutja7510Japanesezh5602Chineseiu1053 Inuktitutchr4449Cherokeees5942Spanishes1620Spanishsr1201Serbianchr7125Cherokeechr4446Cherokeesr6277Serbiantr794Turkishfr457Frenchen6525Englishsr5560Serbianchr2126Cherokeesr3793Serbianes600Spanishru5273Russianfr1737Frenchth5003Thaiiu1268 Inuktitutfr1416Frenchel5077Greekes7319Spanishen6371Englishbn7610Banglaccp1735Chakmaccp4097Chakmachr7405Cherokeefr5174Frenchel1440Greekfr5853Frenchtr2880Turkishzh1578Chineseen1152Englishes1833Spanishar7351Arabicar5282Arabiceo973 Esperantobn733Banglasr2469Serbiansr2372Serbianen5224Englisheo2867 Esperantoes7030Spanishar6700Arabicru2963Russianru7749Russianar6892Arabicth5016Thaisr5928Serbianccp3262Chakmachr8147Cherokeefr848Frencheo3867 Esperantoccp967Chakmaes2953Spanishiu1844 Inuktituttr3024Turkisheo6558 Esperantoth1292Thairu5673Russianru3652Russiansr6106Serbianar3320Arabicja1565Japanesear928Arabiczh6372Chinesees2671Spanisheo5974 Esperantoar4476Arabiciu1615 Inuktitutel5226Greekes562Spanishel707Greekeo4553 Esperantosr1724Serbianbn2179Banglael594Greekes7468Spanishth2798Thaien1716Englishfr6915Frenches6024Spanishccp1050Chakmafr1023Frenchfr2824Frenchru8175Russianth1276Thaiiu7601 Inuktitutzh5477Chinesefr1135Frenchccp2384Chakmazh5130Chinesechr6248Cherokeees7436Spanishen2786Englishth4615Thaiiu6787 Inuktitutsr1640Serbianeo3184 Esperantoja5434Japanesechr7294Cherokeesr2009Serbianfr2887Frenchth1161Thaien4587Englishth6258Thaien413Englishes6848Spanishccp3666Chakmatr3411Turkishiu7884 Inuktitutiu8142 Inuktitutru3153Russianchr3509Cherokeezh6479Chineseja607Japanesezh6326Chineseeo4212 Esperantofr7784Frenchchr8024Cherokeear4632Arabicja7250Japaneseel5610Greekth6502Thaitr7239Turkishen3352Englishccp4934Chakmaja2523Japaneseth546Thaiiu5423 Inuktitutja188Japanesetr2305Turkishccp6424Chakmaru7491Russiansr2105Serbianfr7505Frenches7151Spanishccp1207Chakmaiu1163 Inuktitutccp2428Chakmath7967Thaiiu4522 Inuktitutth3515Thaiiu1897 Inuktitutja667Japanesesr923Serbiantr4766Turkishbn801Banglaiu7165 Inuktitutth3317Thaizh2826Chinesear3754Arabicth6103Thaiel2691Greekiu1301 Inuktituttr186Turkishtr5069Turkishtr3758Turkishar2301Arabicja3204Japaneseru5442Russianeo3293 Esperantoja5192Japanesebn3690Banglabn8089Banglazh5426Chineseeo2917 Esperantoiu6111 Inuktitutsr498Serbiansr856Serbianbn184Banglael1604Greeksr626Serbianbn572Banglaiu7241 Inuktitutsr580Serbiansr3742Serbianbn4630Banglafr4900Frenchsr8059Serbianzh6926Chinesesr4899Serbianzh7380Chineseccp802Chakmaja5750Japanesefr84Frenchar2029Arabictr3555Turkishccp4186Chakmaeo6011 Esperantosr4261Serbiantr6505Turkishru3070Russiansr3037Serbiantr2097Turkishel3230Greekiu4800 Inuktitutth4884Thaibn2710Banglaes6785Spanishsr4232Serbianar5088Arabices4837Spanishsr5584Serbianzh2614Chineseel2099Greekccp6741Chakmafr6930Frenchru381Russiantr599Turkishsr5220Serbianen6873Englishtr1299Turkishtr482Turkishzh6467Chineseiu5276 Inuktitutbn5206Banglaes6958Spanishbn7370Banglatr2485Turkisheo1465 Esperantotr1059Turkishzh3641Chineseeo6750 Esperantoes3875Spanishsr2836Serbianth6389Thaiiu2862 Inuktitutzh8050Chinesebn6213Banglabn6084Banglaja1916Japanesechr3737Cherokeebn7536Banglaiu247 Inuktitutru1189Russianen3960Englishja4228Japanesetr1200Turkishja1812Japanesesr5706Serbianth6402Thaija606Japanesechr8019Cherokeetr4983Turkishzh7944Chineseccp7633Chakmaiu7450 Inuktitutccp5366Chakmael2830Greekja6226Japanesezh4292Chineseccp1470Chakmaccp1752Chakmaiu971 Inuktitutiu4592 Inuktitutbn7038Banglasr1989Serbianen7282Englishzh6443Chinesebn5417Banglath3626Thaiccp6125Chakmasr4561Serbianth4843Thaiel7675Greekeo1431 Esperantoja2501Japanesear2906Arabicth6001Thaifr8027Frenchth6436Thaien1642Englishel1140Greeksr1660Serbianes2409Spanishru1299Russianth432Thaieo3490 Esperantoel1110Greekru3644Russiantr524Turkishel329Greekel2404Greekbn2745Banglachr5283Cherokeesr2018Serbianbn7003Banglaes7499Spanishfr7860Frenchccp7621Chakmaja2992Japanesezh2746Chinesefr3752Frenches2731Spanishbn3062Banglaccp7379Chakmaiu1644 Inuktitutzh6261Chinesetr3093Turkishccp2148Chakmaeo2504 Esperantofr7893Frenchth7796Thaija6119Japanesesr4976Serbianeo6554 Esperantobn6347Banglafr5841Frenchen4569Englishja3862Japaneseeo1675 Esperantoeo6266 Esperantozh362Chinesechr1906Cherokeezh2611Chinesezh1537Chinesees106Spanishja1287Japaneseja1444Japanesebn6622Banglaes1539Spanishchr5400Cherokeeja6345Japanesebn873Banglatr3112Turkishiu8082 Inuktitutchr2953Cherokeeen817Englishja1403Japanesechr4031Cherokeeel846Greeken2977Englishiu4077 Inuktitutiu5781 Inuktituten6100Englisheo1767 Esperantoccp5194Chakmaja4116Japaneseiu7257 Inuktitutth2568Thaien7047Englishes4896Spanishsr1326Serbianth1230Thaies6237Spanishes6781Spanishzh4817Chineseel4033Greekeo6582 Esperantosr1501Serbiantr7813Turkishar7935Arabicar7681Arabicfr2609Frenchel7022Greekiu388 Inuktitutsr2085Serbianja2343Japanesear7958Arabicbn1849Banglachr5598Cherokeefr2857Frenchiu2260 Inuktitutfr2372Frencheo810 Esperantoeo2161 Esperantosr4318Serbianchr5983Cherokeechr7264Cherokeebn1137Banglaja1285Japanesesr1647Serbianeo7864 Esperantotr4164Turkishth1770Thaibn3047Banglazh7435Chinesebn541Banglaccp969Chakmafr4286Frenchru2027Russianfr7931Frenchen5246Englishbn6420Banglafr6927Frenches4871Spanishth7674Thaitr2516Turkishbn2721Banglachr493Cherokeeen131Englishar3507Arabicccp4532Chakmaen3791Englishzh3151Chineseeo1818 Esperantoeo6915 Esperantosr6733Serbianbn5712Banglaccp114Chakmachr2984Cherokeefr5299Frenchtr463Turkishccp6076Chakmachr3590Cherokeees2146Spanishru1488Russiansr1726Serbianiu7073 Inuktitutccp3108Chakmazh2429Chinesechr3541Cherokeeeo5662 Esperantoja998Japanesefr943Frenchchr1642Cherokeebn5439Banglatr6045Turkishzh3741Chineseccp332Chakmabn5825Banglasr3996Serbiantr7755Turkishel906Greekchr6255Cherokeechr3637Cherokeeja5814Japaneseiu7177 Inuktitutsr2062Serbianru7118Russiantr7044Turkishccp4631Chakmabn603Banglachr2194Cherokeechr8046Cherokeezh7688Chinesees6747Spanishfr4548Frenches682Spanishtr6088Turkishen4693Englishel5246Greektr449Turkishtr6649Turkishth2360Thaisr5185Serbianru2528Russianfr4675Frenchru2669Russianen6923Englishth304Thaiiu3322 Inuktitutja7533Japaneseja2161Japaneseen1125Englisheo857 Esperantotr3391Turkishel1932Greektr5753Turkisheo3606 Esperantofr195Frenchen1273Englishel3066Greekar3853Arabicja640Japanesebn3078Banglaeo7235 Esperantoar3952Arabices6004Spanishja4540Japaneseru5870Russianth1461Thaies6088Spanishja4798Japanesesr2078Serbiantr6464Turkishru4913Russianchr4853Cherokeefr2750Frenchsr6557Serbiantr594Turkishbn8039Banglaru2246Russianchr4456Cherokeezh1048Chinesees81Spanishiu7668 Inuktitutccp7978Chakmaccp3675Chakmaeo428 Esperantofr1705Frenchel627Greeksr4992Serbianiu3080 Inuktituttr5981Turkishes2684Spanishru3325Russiansr7573Serbianar7453Arabicchr3223Cherokeeel5293Greekeo5009 Esperantoccp1743Chakmachr6406Cherokeeja7211Japanesear7764Arabicfr746Frenchzh3319Chineseccp2023Chakmafr3491Frenchja1488Japaneseth7431Thaiccp316Chakmazh5849Chinesear6789Arabicccp8071Chakmaja401Japanesefr387Frenchsr3536Serbianfr5589Frenchfr8175Frenches18Spanishar1499Arabicth6857Thaichr7619Cherokeeel5284Greekbn2012Banglaar6988Arabicth5303Thaiiu6172 Inuktituten635Englishja7509Japanesechr4628Cherokeeth6226Thaizh3406Chinesefr2436Frenchzh7396Chinesetr6604Turkishzh2354Chineseel4248Greekeo2907 Esperantoen7124Englishth6839Thaiccp7412Chakmasr6872Serbianen3892Englishel694Greekth1805Thaith8095Thaibn143Banglaccp7798Chakmath5048Thaies3473Spanishes530Spanishes7229Spanishja4055Japaneseru6644Russianzh2872Chineseel355Greekzh1080Chinesesr6205Serbianfr3018Frenchfr3434Frenchccp1403Chakmaccp1328Chakmabn3367Banglaar7129Arabicel7230Greekiu4624 Inuktitutchr3946Cherokeeel4864Greeken6881Englishja5173Japaneseth5438Thaizh7279Chineseja3325Japaneseiu6686 Inuktitutel7054Greekth4581Thaifr7478Frenchbn2483Banglaar1751Arabictr7477Turkishtr1629Turkishbn854Banglaen974Englishiu7874 Inuktituteo3641 Esperantochr5277Cherokeezh3519Chineseru2767Russianru3486Russianeo2716 Esperantoes6691Spanishtr5502Turkishccp2341Chakmabn3613Banglatr8Turkishiu5990 Inuktitutel2694Greekfr5558Frenchth7428Thaiccp3037Chakmaru7085Russianiu1376 Inuktitutth5410Thaiiu1818 Inuktitutja5120Japaneseel3605Greektr7411Turkishccp7482Chakmaeo7463 Esperantobn1870Banglaja7174Japanesees5794Spanishsr4195Serbianfr7217Frenchbn1226Banglafr5953Frenchzh4901Chinesezh4940Chinesesr7461Serbianth2614Thaifr3766Frenchfr5492Frenchfr4076Frenchfr5244Frenchru34Russianchr1387Cherokeeiu1409 Inuktitutja56Japaneseen1346Englishbn569Banglaeo7816 Esperantofr184Frenchzh5592Chinesezh7706Chineseru1181Russiantr3634Turkishth7036Thaiar5804Arabicccp3281Chakmaiu2973 Inuktitutja3695Japaneseth7925Thaiar3995Arabiciu1399 Inuktitutiu6322 Inuktitutchr1745Cherokeetr4311Turkishzh4472Chineseru5871Russianbn2591Banglasr5405Serbianchr4193Cherokeeccp2769Chakmachr2148Cherokeebn1974Banglaeo3275 Esperantoel5421Greekfr6360Frenchth3562Thaibn5288Banglabn5464Banglaccp3503Chakmatr5230Turkishen7873Englishbn6475Banglaen8123Englishja4556Japanesebn6972Banglabn1538Banglafr6097Frenchen3705Englishzh7721Chineseiu7574 Inuktitutsr2377Serbianzh3599Chinesees4269Spanisheo6736 Esperantoes407Spanishel2820Greekchr2464Cherokeechr5610Cherokeeen3723Englishchr6034Cherokeeiu6183 Inuktitutes2182Spanishbn2865Banglachr7222Cherokeeru7319Russianeo6566 Esperantoel1244Greekja7685Japaneseccp2379Chakmafr1585Frenchen4124Englishja7977Japaneseth1689Thaiel2704Greektr3280Turkishar5565Arabicen2915Englisheo4490 Esperantochr4532Cherokeeen942Englishes4705Spanishes2699Spanishsr4143Serbianchr2269Cherokeeccp5666Chakmaccp4971Chakmaen980Englishru6390Russiansr7355Serbianeo3376 Esperantotr6056Turkishchr6253Cherokeeel6436Greekru5075Russianiu6456 Inuktitutel911Greektr7514Turkishtr4930Turkishen1686Englishccp2481Chakmaen2847Englishru1681Russiansr4307Serbianzh2143Chineseen6976Englishzh3138Chinesesr6822Serbianccp2975Chakmachr577Cherokeeccp2075Chakmael8108Greekar7086Arabicchr5341Cherokeeel1645Greekel5324Greekccp7382Chakmaen4327Englishbn1272Banglaeo3645 Esperantoeo8166 Esperantoeo3309 Esperantofr5382Frenchja1961Japanesefr5897Frenchtr1461Turkishtr7566Turkishiu4839 Inuktitutzh682Chineseru1102Russianccp492Chakmaar7396Arabicbn2323Banglazh5771Chinesees3951Spanishtr5293Turkisheo724 Esperantoeo2656 Esperantoth4132Thaisr4009Serbianiu2629 Inuktituten6408Englishiu1892 Inuktitutth4412Thaibn3077Banglachr7404Cherokeeeo6293 Esperantoar2251Arabicchr1421Cherokeees5863Spanishtr2515Turkishsr4843Serbianiu5888 Inuktitutiu562 Inuktitutel4772Greekzh133Chinesees3035Spanishzh5908Chineseeo7629 Esperantosr5294Serbianel6096Greekfr5323Frenchccp909Chakmaru6285Russiantr2989Turkishzh8044Chineseru2324Russianru3623Russianiu1940 Inuktitutja1609Japanesechr2866Cherokeeja1899Japanesefr4977Frenchzh1642Chinesear76Arabicsr3131Serbianiu3912 Inuktitutel1555Greekzh8085Chinesesr3333Serbianel2771Greekja91Japanesear2600Arabicbn6784Banglael7511Greekes2638Spanishiu4962 Inuktitutchr542Cherokeeru4666Russiansr4193Serbianzh653Chinesechr7683Cherokeeru1191Russianes3542Spanisheo7014 Esperantoja2897Japaneseen7299Englishes4679Spanishar4909Arabicar1826Arabicchr6336Cherokeeeo5206 Esperantoeo4361 Esperantofr2597Frenchbn6857Banglael5026Greekccp4504Chakmaeo888 Esperantoel6270Greekzh748Chinesebn2730Banglaes4437Spanishel5754Greekiu5087 Inuktitutes4667Spanishen638Englishchr5091Cherokeeel1254Greekru22Russianja2499Japanesezh2231Chineseccp4757Chakmaes577Spanishja884Japaneseru2625Russianfr7399Frenchzh5807Chineseccp3346Chakmazh4688Chineseel1948Greekel1044Greekbn6208Banglabn7428Banglachr3760Cherokeees63Spanishsr6409Serbiantr7490Turkishar6780Arabiciu1365 Inuktituttr5772Turkishccp5758Chakmaiu1227 Inuktitutar5223Arabicel2039Greekeo2042 Esperantoccp4273Chakmazh6360Chineseccp7353Chakmaiu5377 Inuktitutbn1760Banglafr4812Frenchiu300 Inuktituten1536Englishru4161Russianja6478Japanesees2582Spanishsr3726Serbiansr7405Serbianru7973Russianen3018Englishsr5442Serbianel1310Greekes7132Spanishtr2719Turkishth5548Thaitr4781Turkishen5361Englisheo3695 Esperantochr6687Cherokeeeo1032 Esperantochr8062Cherokeetr4289Turkishzh498Chinesefr3453Frenchel1397Greekes1958Spanishiu6612 Inuktituten7082Englishfr3054Frencheo7648 Esperantoen1618Englishru6940Russianru441Russianth2837Thaith7459Thaija7226Japanesechr711Cherokeezh211Chineseiu1069 Inuktitutzh460Chineseth7163Thaiccp6823Chakmaccp2768Chakmabn2681Banglaja128Japaneseja2703Japaneseth7469Thaichr1030Cherokeeeo388 Esperantoth3298Thaitr958Turkishtr4922Turkishsr7685Serbiansr6886Serbianel4779Greekth5525Thaith6180Thaichr7172Cherokeeel3034Greekzh7163Chinesetr7176Turkishbn1229Banglabn3015Banglachr6742Cherokeeeo2077 Esperantoth330Thaifr3047Frenchccp6082Chakmaccp6341Chakmaes518Spanishel617Greekth7583Thaija3194Japanesezh5559Chineseel4642Greeksr3352Serbianccp3730Chakmaeo5437 Esperantoes3726Spanishes3909Spanishiu527 Inuktitutja4435Japaneseth7111Thaiccp7991Chakmael4040Greekes6206Spanishfr4814Frenchtr1984Turkishzh196Chinesesr7315Serbiantr3737Turkishth2418Thaiiu4304 Inuktituttr4477Turkishel7071Greekfr7494Frenchth562Thaisr2030Serbianchr7112Cherokeees8103Spanishsr5965Serbianfr3238Frenchth4609Thaith3130Thaibn37Banglaiu5270 Inuktitutru3933Russiansr6857Serbiansr2623Serbiansr7710Serbianes7507Spanishsr2921Serbiantr4315Turkishru3902Russianar5009Arabicel5541Greekzh2395Chineseccp7544Chakmael7202Greekth1816Thaibn6550Banglaes7898Spanishth8168Thairu3046Russianzh8176Chinesetr3599Turkishzh5456Chinesechr6131Cherokeeth6084Thaizh3429Chinesezh7197Chinesesr4803Serbiantr7894Turkishchr3367Cherokeeel6069Greekeo6607 Esperantobn1155Banglaes1884Spanishar6691Arabicccp5522Chakmaru3257Russiantr218Turkishbn2963Banglaiu3332 Inuktitutel5965Greekeo144 Esperantoen1427Englishru4376Russianeo3857 Esperantoiu52 Inuktitutja1335Japanesear6294Arabicsr5790Serbianth4239Thaizh3240Chineseeo7518 Esperantobn7436Banglaar2586Arabicccp4048Chakmaru2803Russiantr1978Turkishchr1412Cherokeeth4499Thaitr1631Turkishzh6507Chineseeo6964 Esperantoel6757Greeksr8131Serbianes1033Spanishja3009Japaneseccp4714Chakmasr3001Serbianzh6970Chineseth3281Thaiar1106Arabicen431Englishen7545Englishsr6216Serbianiu6582 Inuktituttr4339Turkishccp131Chakmatr4066Turkishel2673Greekel3634Greekzh2844Chinesefr4001Frenchchr835Cherokeees7303Spanishiu3397 Inuktitutccp487Chakmaeo4480 Esperantoja3534Japanesefr971Frenchfr4909Frenchja7553Japanesesr5282Serbianru1031Russianth5464Thaija4789Japanesefr674Frenchar3445Arabicchr4287Cherokeear2535Arabicchr6040Cherokeeja5493Japanesear6597Arabicsr2069Serbianzh1981Chinesesr4583Serbiansr3840Serbianth3681Thaien5160Englishtr6794Turkishchr4858Cherokeeccp7203Chakmaar783Arabicel2155Greekja3926Japanesear4712Arabiczh4406Chinesezh2944Chinesebn4865Banglaeo7 Esperantoru670Russianeo5803 Esperantoeo4984 Esperantozh4716Chineseeo6622 Esperantobn7908Banglaen6399Englishfr6386Frenchiu5084 Inuktitutth4175Thaiel7710Greekru6999Russianru4670Russianchr1443Cherokeeru1769Russianth1517Thairu879Russianfr1879Frenchth507Thaies1658Spanishen3831Englishen7138Englishsr7324Serbianja4349Japanesees7381Spanishtr4532Turkishru7565Russianzh5970Chinesees1996Spanishes6713Spanishru6895Russiantr4173Turkishbn1739Banglatr3532Turkishja5107Japanesezh210Chinesebn3850Banglabn3657Banglachr2733Cherokeechr3802Cherokeetr6783Turkishel2635Greeksr5291Serbianzh3823Chinesebn7736Banglaen1099Englishsr4946Serbianfr7426Frenchccp4433Chakmabn2266Banglafr7080Frenchth5091Thaiiu4401 Inuktituten4987Englishiu435 Inuktitutiu3867 Inuktitutzh4334Chinesefr6136Frenchel7834Greekbn1973Banglachr3494Cherokeeen2118Englisheo3807 Esperantochr6609Cherokeeru5423Russianbn607Banglaru7744Russianchr2155Cherokeear6140Arabiceo1406 Esperantoja7474Japanesesr6385Serbianes6261Spanishel4769Greekccp5761Chakmatr5739Turkishbn3569Banglatr2237Turkishccp4500Chakmafr3314Frenchiu3966 Inuktitutbn2751Banglaen5980Englishar5386Arabicen397Englishfr5701Frenchiu1837 Inuktitutfr4678Frenchar3062Arabicsr3039Serbianzh2903Chinesear4310Arabicccp4920Chakmaen2930Englishsr1759Serbianbn1600Banglaja132Japaneseru7157Russianar6779Arabicel5783Greekfr80Frenchchr1374Cherokeeiu6350 Inuktitutzh3722Chineseeo7273 Esperantobn1642Banglaeo3406 Esperantoiu1055 Inuktitutzh4491Chineseja6957Japaneseja525Japaneseru223Russianru4914Russianccp4038Chakmaccp329Chakmaru1435Russianchr3566Cherokeeja6760Japanesechr5218Cherokeebn1662Banglaeo2160 Esperantosr2923Serbianeo4550 Esperantofr8116Frenchru4647Russianchr4767Cherokeeel1767Greeken1478Englishfr1315Frenchja2202Japanesezh6700Chinesebn5626Banglaar8029Arabicja5834Japanesear1586Arabicth1046Thairu6552Russiantr4176Turkishes3171Spanishsr7950Serbianchr8020Cherokeeiu4356 Inuktitutzh5787Chineseiu2824 Inuktitutbn5197Banglaiu3191 Inuktitutja6302Japanesetr2381Turkishel2276Greekzh5603Chinesetr4432Turkishel6387Greeken7986Englishfr6053Frenchel5141Greekth7209Thaiccp3836Chakmazh7849Chinesesr8173Serbiansr7296Serbianar1460Arabices3443Spanishar6303Arabicccp963Chakmaen6817Englisheo7975 Esperantoen4030Englishel5555Greekru3639Russianiu2098 Inuktitutccp6149Chakmafr7940Frenchsr6427Serbianccp55Chakmaen6487Englishth4215Thaith7653Thaieo1894 Esperantofr26Frenchtr4597Turkishsr7471Serbianth3212Thaieo3915 Esperantoccp4071Chakmachr3954Cherokeeel5320Greekar7727Arabicchr1504Cherokeeeo5222 Esperantoccp4057Chakmaen7553Englishiu6117 Inuktitutel7944Greekiu2305 Inuktitutccp3720Chakmael6673Greeksr7085Serbianzh560Chinesezh5092Chineseru5010Russiansr6547Serbianeo6190 Esperantoja1318Japanesetr5543Turkishtr3813Turkishbn4204Banglaeo750 Esperantoru3886Russianes2535Spanishja1094Japanesezh2024Chinesezh4838Chinesechr2103Cherokeeeo654 Esperantoja5594Japaneseth6560Thaies3401Spanishru147Russianccp4706Chakmatr1751Turkishtr5769Turkishfr109Frenchchr7950Cherokeeru1564Russiantr8138Turkishth3373Thaiar5335Arabices4284Spanishccp3673Chakmaiu4550 Inuktitutccp5369Chakmaeo2772 Esperantotr6807Turkishsr7584Serbiansr1489Serbianes2618Spanishzh789Chinesebn7108Banglachr698Cherokeeel5321Greekchr4786Cherokeesr3620Serbianfr4086Frenchiu2527 Inuktitutru6995Russianbn2252Banglaccp416Chakmazh8178Chinesees1842Spanishth7801Thaiccp1077Chakmaja2424Japanesetr3642Turkishes5539Spanisheo4860 Esperantoes7996Spanishth3424Thaitr7076Turkishzh4857Chinesefr4301Frenchel7425Greekfr1321Frenchbn3805Banglael2413Greekccp820Chakmaeo4280 Esperantofr833Frenchja4649Japanesetr5965Turkishsr5158Serbianth64Thaith1426Thaien3237Englishbn2856Banglaes3373Spanishzh3616Chineseru541Russiantr3375Turkishen5795Englishccp4028Chakmaen2474Englishbn154Banglath6956Thaiiu5753 Inuktituteo4600 Esperantoja6033Japanesetr5548Turkishtr5562Turkishen7601Englishiu2670 Inuktitutsr1758Serbianes7707Spanishth8052Thairu6276Russianel896Greekes7621Spanishsr6456Serbianzh121Chinesetr7075Turkishccp6971Chakmaru4756Russianbn7189Banglaiu7459 Inuktitutchr678Cherokeeja4888Japaneseeo7783 Esperantoccp2030Chakmafr619Frenchfr1880Frenchru491Russiansr642Serbianja1581Japaneseth919Thaija539Japanesebn7434Banglath984Thaiiu2975 Inuktitutiu1231 Inuktitutel6190Greekar3886Arabices7147Spanishfr5655Frencheo5349 Esperantoth6124Thaisr2157Serbiantr6717Turkishiu7575 Inuktitutsr6421Serbianel2476Greekar3316Arabicchr5694Cherokeeen3867Englisheo5836 Esperantoel3006Greeken7745Englisheo1624 Esperantoen4194Englishfr688Frencheo1153 Esperantoel1803Greekel3235Greeken5124Englishru3613Russianfr2359Frenchru3911Russiantr4265Turkishen7895Englisheo2047 Esperantoes7752Spanishes6760Spanishiu583 Inuktituttr6154Turkisheo2314 Esperantoel1344Greekchr5225Cherokeeel7282Greeken5187Englishru589Russianbn2930Banglaccp5778Chakmabn3442Banglachr144Cherokeeccp2066Chakmachr2688Cherokeeeo2151 Esperantotr3136Turkishel3526Greekel7793Greekeo3267 Esperantoar7410Arabicel6804Greekeo4701 Esperantosr3687Serbianth2580Thaizh2932Chinesechr6954Cherokeefr1164Frenchel572Greekiu6073 Inuktitutccp7525Chakmachr298Cherokeeja1888Japaneseru6507Russianth3494Thaiccp3188Chakmaen8077Englishes5736Spanishbn3248Banglatr5364Turkishiu6804 Inuktituteo7226 Esperantoth4201Thaitr6437Turkishchr3470Cherokeetr1072Turkishja1848Japanesechr5375Cherokeees5381Spanishsr109Serbianar1435Arabiczh712Chinesefr781Frenchtr7082Turkishtr4806Turkishsr2935Serbianru678Russiantr5942Turkishzh1296Chinesees5822Spanishja4990Japanesees1970Spanishtr4115Turkishfr5833Frenchru7000Russianeo1110 Esperantoeo975 Esperantoar3011Arabicfr3299Frenchchr8145Cherokeeja669Japaneseru334Russiantr4148Turkisheo2408 Esperantotr7849Turkishsr2477Serbianbn4554Banglaen186Englishes1181Spanishel7043Greekiu3512 Inuktitutbn7335Banglaru6227Russianru6280Russianzh29Chinesezh1593Chineseiu6047 Inuktituttr7673Turkishchr2291Cherokeebn2623Banglaen8101Englishja6839Japanesesr1466Serbianel4158Greekzh4573Chineseiu3459 Inuktitutru1699Russianel1207Greekes7153Spanishtr681Turkishfr7619Frenchchr3903Cherokeeiu158 Inuktitutsr4151Serbianth4516Thaitr4617Turkishbn1851Banglaen5326Englishzh94Chinesetr7551Turkishbn3433Banglaru7801Russiansr4149Serbianja4174Japaneseja5147Japanesear1190Arabiciu125 Inuktitutiu6293 Inuktitutth6734Thaiiu6876 Inuktitutiu5666 Inuktitutccp1547Chakmaeo2127 Esperantoccp6651Chakmaccp17Chakmafr5686Frenchja5679Japaneseth6026Thaisr2898Serbianccp313Chakmazh3837Chinesezh5675Chineseja3685Japaneseiu3798 Inuktitutbn7860Banglaccp5187Chakmath6171Thaifr3442Frenches668Spanishar4534Arabicccp4639Chakmath654Thaiccp3442Chakmaccp4995Chakmaar6417Arabiceo5121 Esperantoth4878Thaitr4481Turkishzh3157Chinesear5540Arabicen1023Englishbn7336Banglaiu1127 Inuktitutru3881Russianar6249Arabicchr7756Cherokeebn7876Banglaes2784Spanishsr2808Serbianru5674Russiantr5343Turkishzh1542Chinesees340Spanishbn4231Banglaes8083Spanishbn5641Banglaiu4402 Inuktitutru3033Russianar7542Arabicar4590Arabicsr715Serbianccp5396Chakmasr4780Serbianfr1797Frencheo3947 Esperantoeo3938 Esperantoes7650Spanishiu921 Inuktitutar2820Arabicsr2940Serbianth7492Thaien7129Englishbn5012Banglaiu7421 Inuktitutzh7258Chineseth6903Thaibn110Banglaar5307Arabicsr2570Serbianiu3785 Inuktitutccp2126Chakmaccp6238Chakmael1061Greekeo5091 Esperantoccp3207Chakmaes53Spanishbn2767Banglaes4650Spanishen5922Englishar4838Arabicel5399Greekiu7007 Inuktitutsr2857Serbianes7584Spanishar301Arabicth581Thairu5555Russiantr6549Turkishzh3977Chinesear3143Arabicen5921Englishes890Spanishel5136Greekchr3902Cherokeeeo7928 Esperantotr3563Turkishiu4937 Inuktitutel3364Greekiu2756 Inuktitutar448Arabictr4714Turkishfr1426Frenchiu5292 Inuktitutzh2222Chineseccp4309Chakmaiu4039 Inuktituten4702Englishsr3510Serbianth4507Thaizh6903Chinesefr5437Frenchar2954Arabicth2361Thaitr2681Turkishfr5594Frenchel2380Greektr109Turkishen2237Englishar227Arabicchr6966Cherokeesr4064Serbianfr1905Frenchchr145Cherokeesr4885Serbianes5900Spanishfr5970Frenchar2916Arabiczh5650Chinesees3328Spanishar5226Arabicen7489Englishbn3799Banglael5402Greektr7180Turkishccp5172Chakmachr3659Cherokeefr2506Frenchen634Englishja6265Japanesear3105Arabicchr6235Cherokeeiu6813 Inuktitutiu3869 Inuktitutth5635Thaith7816Thaiccp4915Chakmatr5315Turkishzh112Chineseel4205Greekchr3805Cherokeeen552Englishes687Spanishzh3315Chineseeo2760 Esperantoar391Arabicen1768Englishth776Thaies6535Spanishtr6827Turkishru5552Russianja2752Japanesear3080Arabictr2435Turkishzh2817Chinesezh3651Chineseeo3458 Esperantosr817Serbianar3686Arabiceo769 Esperantoccp1422Chakmath2090Thaien6617Englishen7613Englishru5176Russianru5946Russianchr1883Cherokeebn5704Banglaru1988Russiantr6369Turkishes1024Spanishfr1176Frenchchr1196Cherokeeiu1591 Inuktitutel5139Greekja1627Japanesezh312Chineseel5641Greektr1121Turkishiu3739 Inuktituttr6934Turkishar4378Arabictr6917Turkishccp1498Chakmachr6943Cherokeesr2987Serbianzh2147Chinesear6610Arabicccp3356Chakmaar3734Arabicen2244Englishja7032Japanesebn7310Banglaar5955Arabicbn7443Banglaeo4736 Esperantoiu753 Inuktitutbn1885Banglaeo1741 Esperantoes171Spanishth4716Thaija538Japanesetr3883Turkishccp6725Chakmath1446Thaiiu4244 Inuktitutccp5201Chakmazh3917Chineseja1051Japanesees235Spanishru5386Russianru5093Russianbn5627Banglaen2061Englishja727Japaneseiu5455 Inuktitutru4456Russiantr7634Turkisheo7533 Esperantofr3751Frenchsr3280Serbianel7965Greektr1513Turkishbn2778Banglaja5218Japanesees646Spanishiu7996 Inuktitutes785Spanishja2900Japaneseccp2596Chakmafr2880Frenchth5512Thaies1585Spanishth6027Thaiiu4333 Inuktituteo6697 Esperantochr1017Cherokeeja931Japanesebn1486Banglaccp1550Chakmaru7745Russianbn30Banglasr6703Serbianbn2748Banglaes3749Spanishth6201Thaien2619Englisheo4519 Esperantoel5433Greekchr2803Cherokeechr1816Cherokeeja7103Japaneseeo8100 Esperantoccp1824Chakmazh5556Chineseiu2200 Inuktitutccp3266Chakmasr2312Serbiantr7039Turkishel4310Greeksr413Serbianchr2336Cherokeees6193Spanishfr6378Frenchbn1329Banglael2163Greekeo1517 Esperantoeo7995 Esperantochr2706Cherokeetr7625Turkisheo6177 Esperantotr5831Turkishru1193Russianen8030Englishth7435Thaizh610Chinesechr6647Cherokeeru6498Russianar6815Arabiczh2462Chineseel4957Greekar3063Arabictr3484Turkishes3927Spanishru922Russiansr4290Serbianth2529Thaichr5251Cherokeefr2802Frenchth6416Thaiiu2705 Inuktitutfr3611Frenchar5837Arabicchr5557Cherokeees2241Spanishar2057Arabicar5496Arabiczh5177Chineseiu5111 Inuktitutes6869Spanishja2412Japaneseru4381Russianiu3997 Inuktitutar6924Arabicfr2415Frenchiu4842 Inuktitutchr4439Cherokeefr4266Frenchchr7829Cherokeeen1361Englishsr7349Serbiantr3572Turkishzh7091Chinesees323Spanishar7450Arabicbn7049Banglaes4901Spanishbn5501Banglatr2907Turkishbn6411Banglath6049Thaizh880Chineseja4190Japaneseru2458Russianel1454Greekbn5498Banglaes1478Spanishiu3366 Inuktituteo3975 Esperantosr2175Serbianja4214Japaneseccp7380Chakmazh6670Chineseth4756Thaichr5757Cherokeetr4946Turkishchr6617Cherokeechr2941Cherokeees5360Spanishru701Russianen7883Englishja3446Japaneseel5256Greekja7354Japaneseru7140Russianzh4714Chineseeo6441 Esperantochr7122Cherokeeru1758Russianth7512Thaieo5490 Esperantozh7019Chinesees1755Spanishes7533Spanishiu5229 Inuktitutccp1348Chakmaja2180Japanesesr3883Serbianiu2725 Inuktitutccp554Chakmaes2487Spanishes7625Spanishel4342Greekel1265Greekbn4154Banglaccp2484Chakmasr2346Serbiantr4111Turkishzh8036Chineseru3280Russianiu1052 Inuktitutbn5528Banglachr7059Cherokeeiu1657 Inuktitutja755Japanesear4386Arabicru2025Russiantr7246Turkishccp7430Chakmachr7282Cherokeeeo2111 Esperantoes4006Spanisheo7472 Esperantoel5142Greeken1254Englishru7457Russianes1141Spanishsr2138Serbianja1720Japanesees1592Spanishtr6372Turkishchr3672Cherokeeiu5555 Inuktitutbn6139Banglaccp5565Chakmael6093Greekar1961Arabictr3129Turkishsr5171Serbianar34Arabicar4011Arabicchr7965Cherokeeel5566Greekbn6999Banglaeo7725 Esperantobn8030Banglaar3558Arabicsr291Serbianeo8128 Esperantotr7585Turkisheo3739 Esperantobn3861Banglazh7277Chinesefr1502Frenchsr3505Serbianccp7162Chakmaeo6609 Esperantoes7513Spanishel5883Greekiu6416 Inuktitutth7463Thaieo5092 Esperantoru4565Russianen6035Englishbn6961Banglabn339Banglael752Greekiu4160 Inuktitutiu335 Inuktituttr4132Turkishar3576Arabiciu3204 Inuktitutchr284Cherokeezh8103Chinesechr1696Cherokeear7613Arabicja4061Japanesesr5199Serbianfr7980Frenchja3144Japaneseja4712Japanesesr4661Serbianzh833Chineseen2943Englisheo7234 Esperantosr5318Serbianth8179Thaieo2747 Esperantoeo3148 Esperantoru7812Russianth4236Thaibn5568Banglafr2715Frenchel4902Greekbn456Banglachr3245Cherokeeru6905Russianru7368Russianes3967Spanishbn695Banglaru1609Russianfr1768Frenches2620Spanishel3894Greekbn6611Banglaiu7670 Inuktitutja4351Japanesetr5010Turkishel7119Greektr4425Turkishen3029Englisheo6568 Esperantochr3415Cherokeeen2314Englishsr1702Serbianbn4604Banglaen6402Englishiu3846 Inuktitutiu4332 Inuktitutchr6558Cherokeeth5222Thaisr2318Serbianes7056Spanishth753Thaibn3465Banglaja534Japanesezh4086Chineseccp6139Chakmaeo5509 Esperantoes2643Spanishiu7103 Inuktitutsr3983Serbianes3845Spanishel2643Greekru571Russianes7745Spanishiu3768 Inuktitutel640Greekfr5505Frenchiu3091 Inuktitutchr5014Cherokeeccp425Chakmael54Greekel4900Greeken2026Englishzh541Chineseen3174Englishar5269Arabiceo5390 Esperantoel1950Greekes7803Spanishen493Englishel3178Greekccp2455Chakmachr6243Cherokeefr2432Frenchel4357Greekru4047Russianru4245Russianru5784Russianzh2548Chinesefr371Frenchiu5668 Inuktitutzh4137Chinesefr5438Frenchtr1754Turkishiu7910 Inuktitutchr7017Cherokeeiu878 Inuktitutiu6406 Inuktitutja5471Japanesear1461Arabicsr17Serbiantr5389Turkishtr4480Turkishzh1944Chinesees7988Spanishar4182Arabictr8185Turkisheo8058 Esperantoen2336Englisheo4312 Esperantobn5827Banglaru5035Russianeo6611 Esperantoes1349Spanishar3409Arabicfr6052Frencheo4110 Esperantoja5089Japaneseiu2078 Inuktitutzh3890Chinesechr2455Cherokeechr207Cherokeeiu1497 Inuktituteo6732 Esperantoes6745Spanishzh7236Chineseen972Englishtr1610Turkishzh7514Chineseiu8117 Inuktitutru3212Russianar1484Arabicchr6175Cherokeeiu7 Inuktitutja4602Japaneseja7141Japanesebn2858Banglaccp3276Chakmaru7932Russianen750Englishen6303Englishth3071Thaitr4367Turkishja3705Japanesefr7817Frenchen5226Englishja3308Japanesefr6044Frenchfr8029Frenchfr860Frenchsr7046Serbianiu3235 Inuktituttr3804Turkishccp3971Chakmael6846Greekzh3765Chinesebn4043Banglaccp4123Chakmaes211Spanishru4432Russianeo4973 Esperantoar6022Arabices8175Spanishes5688Spanishen2174Englishiu4631 Inuktitutar5805Arabicru2853Russianru2049Russianel4866Greekzh2508Chineseru3406Russianzh8072Chinesees2860Spanishtr7085Turkishes5123Spanishbn1198Banglabn6028Banglachr2556Cherokeetr3057Turkisheo2689 Esperantoeo6555 Esperantoth885Thaichr5963Cherokeeeo6948 Esperantoja8163Japanesear3888Arabicccp3979Chakmazh2081Chineseth3631Thaies1574Spanishchr7477Cherokeees6506Spanishja2182Japanesear3752Arabiciu2506 Inuktitutsr5109Serbianar1123Arabicru7596Russianen1609Englishar5337Arabicfr3927Frenchzh108Chinesezh3632Chinesear4724Arabicchr5989Cherokeeen6088Englishth7208Thaiel3828Greekfr6955Frenchru8147Russiansr3257Serbianccp217Chakmael4988Greeken5129Englishru2401Russianen4735Englishbn1654Banglael1125Greekes4561Spanishfr4707Frenchel7366Greekfr6182Frenchth4594Thaiccp6415Chakmachr6971Cherokeear1778Arabicen6358Englishchr2572Cherokeees1686Spanishsr2165Serbiansr7545Serbiantr1070Turkishth4461Thaitr1166Turkishbn5461Banglabn965Banglael3966Greekel6359Greekchr5531Cherokeeiu6191 Inuktitutru1792Russianccp7373Chakmath5779Thaiar8001Arabiceo6504 Esperantofr6394Frenchru4312Russianzh7364Chinesetr3825Turkishchr5990Cherokeees1745Spanishzh4390Chineseiu5078 Inuktitutja852Japanesear4156Arabicccp5678Chakmabn6096Banglaen1262Englishes3925Spanishccp5950Chakmaes7046Spanishchr5240Cherokeetr2991Turkishsr5956Serbianja6832Japaneseru7455Russianfr3526Frenchar799Arabicja6212Japaneseel5592Greektr4198Turkishsr1871Serbianbn1482Banglaiu634 Inuktitutar8134Arabicchr2801Cherokeeja4224Japaneseiu5328 Inuktitutar2260Arabicchr2468Cherokeees7324Spanishth3037Thaifr1951Frenchbn7000Banglaru7139Russianth609Thaith3826Thaizh5653Chinesezh7061Chineseen3896Englishccp3083Chakmafr2328Frencheo7601 Esperantochr7468Cherokeees4658Spanishsr7600Serbianth596Thaichr7883Cherokeeiu4596 Inuktitutru1952Russianzh4802Chineseru3286Russianzh1160Chineseth2969Thaibn5324Banglasr6572Serbianeo3888 Esperantobn6018Banglaccp6483Chakmaiu1019 Inuktitutsr4121Serbianbn4960Banglatr7739Turkishfr5447Frenches4862Spanishtr4953Turkisheo6172 Esperantobn215Banglachr2247Cherokeefr5514Frenchccp3567Chakmatr7884Turkishru7592Russianchr7301Cherokeezh2530Chineseccp2556Chakmael6027Greekfr944Frenchbn24Banglael7752Greekel281Greekccp2162Chakmaccp4808Chakmaen8151Englishiu1806 Inuktitutchr5699Cherokeees946Spanishes1935Spanishar7526Arabicru4959Russianar4475Arabicsr6079Serbianbn2052Banglaeo4622 Esperantochr2723Cherokeeth5172Thaifr7446Frenchth6369Thaibn7605Banglachr1176Cherokeeeo8123 Esperantochr5083Cherokeeccp4966Chakmasr1412Serbianccp5370Chakmatr7547Turkishar4853Arabicbn7585Banglasr2564Serbianbn1844Banglasr1956Serbianth238Thaith2890Thaith7178Thaitr5570Turkishbn6739Banglaen6257Englisheo4913 Esperantoth5350Thaiar1624Arabiceo4684 Esperantoiu6253 Inuktitutar6095Arabicar4345Arabictr679Turkishsr1166Serbianfr1015Frenchru2139Russiansr2894Serbianar2380Arabicchr4751Cherokeear7102Arabicchr4795Cherokeefr6778Frenchar4053Arabicbn1950Banglaru7630Russianja491Japaneseen2506Englishzh998Chineseen3948Englishel7330Greekzh7531Chinesezh2382Chinesezh5330Chinesees4427Spanishccp8128Chakmabn517Banglabn5581Banglaar8087Arabicru5291Russianar1568Arabices6322Spanishfr6402Frenchar2859Arabicth4520Thaizh2225Chinesezh1148Chineseel393Greekiu3195 Inuktitutchr2079Cherokeeccp1036Chakmasr5760Serbianchr1955Cherokeesr7746Serbianar3358Arabicel3582Greekes7576Spanishtr8132Turkishzh5282Chineseeo2877 Esperantoar3776Arabicfr3691Frenchiu3131 Inuktitutccp70Chakmatr6590Turkishtr7499Turkishen3100Englishbn3134Banglael7427Greekiu6563 Inuktitutsr7268Serbianru5109Russianchr1453Cherokeefr4727Frenchfr8046Frenchzh7559Chineseja5869Japanesefr3190Frenchbn5077Banglasr6656Serbianccp1262Chakmatr3577Turkishccp2031Chakmaiu7331 Inuktitutzh5845Chinesetr1737Turkishchr5869Cherokeetr3492Turkishsr1324Serbianen5356Englishja7832Japaneseeo2711 Esperantozh6580Chinesefr2337Frenchtr6076Turkishar1109Arabicchr3709Cherokeezh5705Chinesees6659Spanishccp7258Chakmaen2595Englishja4094Japaneseru2710Russianth4649Thairu5196Russianchr2775Cherokeesr5546Serbianfr3951Frenches2285Spanishzh1411Chineseccp7514Chakmasr1146Serbianen116Englishiu1267 Inuktitutbn4807Banglaru8148Russiantr4154Turkishen2577Englishiu1774 Inuktitutth3077Thaibn96Banglath6108Thaiccp922Chakmaja3396Japaneseth1850Thaiar6932Arabicccp5878Chakmachr4003Cherokeeeo2779 Esperantosr1930Serbianccp107Chakmasr603Serbianbn8051Banglael482Greekzh1179Chineseja2811Japaneseru142Russianja1136Japaneseru7727Russianchr3591Cherokeetr5823Turkishchr3967Cherokeeth4308Thaibn4738Banglaja4809Japaneseeo539 Esperantoth2605Thairu3120Russianel1091Greekeo7968 Esperantoccp4150Chakmael7751Greekes4180Spanishtr3188Turkishccp2751Chakmatr3718Turkishth443Thaies1170Spanishja5866Japanesebn3837Banglasr1442Serbianar7677Arabiciu2092 Inuktituteo4285 Esperantoeo6760 Esperantoiu5689 Inuktitutes6424Spanishtr6356Turkisheo5800 Esperantoes4858Spanishru2074Russianja5469Japaneseeo5652 Esperantoja3676Japaneseen1Englishja4708Japaneseru1636Russianru6460Russianfr2837Frenchja311Japaneseiu8129 Inuktituttr871Turkishel96Greeksr3011Serbianel7656Greekchr4437Cherokeeen1752Englishen2757Englishes7120Spanishfr6827Frenchzh45Chinesezh5289Chinesees4669Spanishccp6649Chakmaja7527Japaneseeo5334 Esperantoru2537Russianel2383Greekccp6824Chakmaccp3740Chakmael2581Greeken4699Englishen5864Englishiu8123 Inuktitutja3907Japaneseru847Russianja5018Japanesesr2488Serbianel1940Greekth8189Thaibn6552Banglael6450Greekccp517Chakmatr2115Turkishen1638Englishja6160Japaneseccp3054Chakmachr932Cherokeefr1888Frencheo1930 Esperantoes3514Spanishel2489Greekeo1177 Esperantoiu2544 Inuktituteo3253 Esperantoel255Greekes5808Spanishchr7937Cherokeear6133Arabiceo1453 Esperantofr2578Frenchen7967Englishiu1916 Inuktitutiu4011 Inuktituttr2396Turkishar6851Arabicfr3309Frenchccp2229Chakmabn1214Banglazh7754Chineseru5724Russianchr6550Cherokeear2481Arabicchr3060Cherokeechr2657Cherokeeja2538Japaneseel6407Greekiu3082 Inuktitutel6052Greekchr3259Cherokeesr3012Serbianth6319Thaien3042Englishar3175Arabicchr5147Cherokeeeo782 Esperantoth2383Thaitr6123Turkishes8050Spanishja6254Japanesefr4606Frenchchr7253Cherokeeeo965 Esperantosr2160Serbianar7722Arabicccp7362Chakmachr6821Cherokeeru6467Russianar6245Arabicja158Japaneseth6474Thaija1272Japaneseiu3265 Inuktituten2521Englishar5106Arabicel7368Greekel4188Greekel6967Greekccp7620Chakmaja7663Japaneseru2882Russianbn7856Banglael4433Greekja2462Japanesefr6023Frenchzh5594Chineseel3407Greekth2188Thaizh813Chinesezh6461Chinesefr5948Frenches7678Spanishzh2963Chinesefr8092Frencheo1330 Esperantoeo5241 Esperantozh5829Chineseen5385Englishth5523Thaisr3453Serbianar7189Arabicen4860Englishar1975Arabicbn5757Banglaiu5406 Inuktitutchr5015Cherokeeccp6673Chakmaeo1504 Esperantoru161Russianzh5188Chinesear5400Arabiciu2067 Inuktituttr1955Turkishbn4698Banglazh7533Chineseeo7841 Esperantoth2505Thaizh4330Chinesetr5311Turkishel544Greekfr3581Frenchbn7444Banglazh2507Chineseth6375Thaiccp2136Chakmafr2929Frenches4778Spanishen4559Englishja2899Japanesechr5298Cherokeebn1034Banglaes2486Spanishfr5419Frenchth4079Thaitr3173Turkishzh1033Chineseiu2263 Inuktitutchr6551Cherokeeel3915Greeksr865Serbianbn5340Banglaru3693Russianar1819Arabicccp4903Chakmaeo5936 Esperantoel4030Greekes7208Spanishfr4193Frenchja5310Japaneseth4932Thaiccp4868Chakmaeo2980 Esperantoru5828Russianth4510Thaiar6871Arabicja7650Japaneseiu7700 Inuktitutes1217Spanishtr6656Turkishel2262Greekbn7801Banglachr2765Cherokeeeo5173 Esperantosr8086Serbiansr673Serbianiu1692 Inuktitutru2666Russianth1524Thaiar2258Arabicen663Englishen4921Englisheo5774 Esperantoja7076Japaneseru4752Russianen1271Englishchr3502Cherokeeccp4831Chakmael5528Greektr5090Turkishccp6318Chakmaru6588Russianen3472Englishiu3550 Inuktituttr4048Turkishen7754Englishzh664Chinesezh1377Chineseja1752Japanesebn2162Banglaes1353Spanishes4908Spanishru5311Russiantr2392Turkishes3641Spanishar3641Arabicen4667Englishfr3970Frenchth561Thaija506Japanesees3043Spanishja8130Japaneseccp1002Chakmatr4748Turkishccp5004Chakmaja5229Japanesetr5567Turkisheo6361 Esperantosr5339Serbianeo2422 Esperantochr5415Cherokeeiu7482 Inuktitutru660Russianeo6629 Esperantozh1930Chineseja2276Japanesebn101Banglael7842Greekel5917Greekzh8039Chineseiu5446 Inuktitutru5534Russianchr2220Cherokeezh4206Chinesees2045Spanishchr7449Cherokeear7514Arabicbn7449Banglaes2244Spanishiu5616 Inuktitutsr1051Serbianccp2043Chakmael4934Greekfr3719Frenchsr5412Serbianth3496Thaiiu1974 Inuktitutja7930Japaneseccp4277Chakmaru5344Russianen4148Englishen7650Englishbn87Banglachr1331Cherokeefr874Frenchfr5325Frenchth926Thaija2312Japaneseth1884Thaizh7551Chinesesr6911Serbianes3064Spanishar4822Arabicfr7625Frenchbn4506Banglatr3304Turkishzh13Chineseeo6275 Esperantotr2877Turkishth2119Thaiar7106Arabictr3686Turkishes746Spanishru2992Russianeo1045 Esperantoja382Japanesechr6257Cherokeeru6485Russianchr7047Cherokeeen194Englishfr1016Frenchen2399Englishja7715Japanesesr5309Serbiansr5473Serbianeo5978 Esperantoes6194Spanishfr6502Frenchar2508Arabicsr1419Serbiansr5680Serbianzh4924Chinesechr4697Cherokeefr5415Frencheo4528 Esperantochr3478Cherokeeen319Englisheo3940 Esperantoel3816Greekar4243Arabicccp5125Chakmatr7466Turkishsr1900Serbianen4690Englisheo4479 Esperantoes2456Spanishtr2066Turkishchr6636Cherokeeen6175Englishes6283Spanishccp2797Chakmaccp5847Chakmatr1634Turkishccp3861Chakmazh3212Chineseen3944Englishfr7878Frenchchr8061Cherokeear6158Arabictr4318Turkishtr4407Turkishccp2577Chakmazh1262Chinesezh708Chinesebn1520Banglachr6670Cherokeeja4760Japanesebn48Banglaes818Spanishru5545Russiantr7481Turkishzh3085Chinesebn7857Banglaen4808Englishen3671Englishzh524Chineseccp6724Chakmabn2386Banglazh6476Chinesesr341Serbianbn3938Banglachr6664Cherokeefr2608Frenchja7369Japanesetr5728Turkishes3461Spanishiu5630 Inuktitutel5056Greekes4420Spanishes7639Spanishen1806Englishchr4415Cherokeefr5004Frenchja5021Japanesechr3601Cherokeeeo1037 Esperantoel7567Greeksr992Serbianru5852Russianfr4787Frenchiu7136 Inuktitutel8094Greeksr3414Serbiansr4776Serbiansr5536Serbianccp226Chakmael5769Greeksr7839Serbiantr6663Turkishiu6476 Inuktitutchr3981Cherokeechr3095Cherokeeel193Greekes6817Spanishtr1896Turkishja3944Japaneseth4164Thaichr6487Cherokeeth5837Thaiccp243Chakmatr1465Turkishen5351Englisheo4038 Esperantoeo6845 Esperantotr3890Turkishes2049Spanishchr2092Cherokeeru1236Russianru1370Russianel6572Greekbn7703Banglaiu587 Inuktituten1783Englishiu5885 Inuktitutth4694Thaiar5489Arabicccp2861Chakmaiu2772 Inuktitutja4823Japanesebn3269Banglachr6631Cherokeetr4701Turkishru7890Russiansr8028Serbianzh4149Chineseja2489Japaneseen4476Englishar4811Arabicbn5410Banglath6824Thaiel5820Greekru280Russiantr2453Turkishru45Russianccp6138Chakmael6304Greektr6084Turkishes5636Spanishbn685Banglaen5217Englishfr6354Frenchzh6916Chineseth6799Thaija1832Japanesear1986Arabicen3365Englishbn121Banglaen4509Englishru2535Russianeo2963 Esperantoes7066Spanishth4904Thaifr3338Frenchen800Englishccp5911Chakmaja3473Japaneseen4247Englishar4837Arabicccp2904Chakmaja630Japaneseiu2136 Inuktitutccp615Chakmasr6487Serbianja8019Japaneseth1557Thaizh990Chineseeo7786 Esperantobn2797Banglaccp2643Chakmatr7510Turkishbn2831Banglaen550Englishes7440Spanisheo1495 Esperantoru1423Russianru6615Russianccp43Chakmaru5632Russianen5598Englishes6463Spanishru7783Russianes4185Spanishth6553Thaifr129Frenchth618Thaien4936Englishes8010Spanishru4961Russiantr2124Turkishiu968 Inuktituteo5404 Esperantobn2414Banglaes6001Spanishccp3778Chakmasr1893Serbianes4080Spanishzh4084Chinesefr535Frenchel6611Greekiu5059 Inuktitutth2203Thaieo5924 Esperantofr3048Frenchth7164Thaiar6282Arabicru7137Russianth6126Thaiel5645Greekth7286Thaiar55Arabicfr4957Frenchel7940Greeken3988Englishiu5698 Inuktituten1730Englishtr7216Turkishja3902Japaneseel6497Greektr6726Turkishchr7409Cherokeear7425Arabicth3968Thaiel5194Greektr7512Turkishth2754Thaizh1372Chinesebn1097Banglatr1354Turkishes3326Spanishtr2139Turkishru3364Russianja3719Japanesebn6956Banglath4700Thaibn3717Banglaja6679Japanesesr6105Serbianzh8019Chineseja6605Japaneseru4461Russianzh3040Chinesefr5191Frenchja3788Japaneseru3047Russianes4318Spanishth4934Thaiel2632Greekfr4270Frenchel4646Greeken3904Englishiu2003 Inuktituteo2102 Esperantoccp6329Chakmachr2306Cherokeeen7394Englishar3057Arabicsr7583Serbianth1275Thaija2419Japaneseja6298Japaneseccp8120Chakmaja2718Japanesesr2704Serbianes1900Spanishel6305Greektr5606Turkishar5259Arabicth30Thaisr1311Serbianja1381Japanesezh4082Chineseel2433Greekbn15Banglachr3180Cherokeees5342Spanishth6665Thaiel224Greekccp5319Chakmabn959Banglachr4069Cherokeear7316Arabicfr8133Frenchiu43 Inuktitutccp8028Chakmabn6912Banglatr703Turkishen7784Englishccp4112Chakmael2285Greeksr6726Serbianes3040Spanishja6026Japaneseth3468Thaichr680Cherokeetr3261Turkishru5873Russianzh7753Chineseja5252Japaneseru5301Russiansr970Serbianes7260Spanishzh3364Chineseen99Englishzh598Chinesefr4889Frenchzh4819Chineseth1121Thaitr4539Turkishtr4828Turkishchr3416Cherokeefr6867Frenchiu3504 Inuktitutja656Japanesear6113Arabiciu2753 Inuktituttr1615Turkishiu5931 Inuktitutbn5392Banglachr4885Cherokeeja2870Japaneseiu3379 Inuktitutbn4160Banglath1899Thaiiu5106 Inuktitutbn273Banglasr2357Serbianfr7718Frenchtr787Turkishja2994Japanesees6017Spanishzh5110Chinesezh7536Chinesezh2911Chinesetr2004Turkishar128Arabicen943Englishfr1024Frenchru3470Russianth1675Thaiccp5434Chakmazh5798Chinesechr3091Cherokeeccp1863Chakmaiu8108 Inuktitutiu4566 Inuktitutchr2712Cherokeesr1998Serbianfr141Frenchsr790Serbianbn6242Banglaeo8067 Esperantoar1384Arabicbn1961Banglaeo40 Esperantoja297Japanesesr4716Serbianiu422 Inuktitutiu6143 Inuktitutth7742Thaien1578Englishtr381Turkishes828Spanishbn2100Banglatr4384Turkishes1479Spanishar7262Arabiceo3932 Esperantoar1755Arabicfr4523Frenchiu5537 Inuktitutja6893Japanesechr4534Cherokeear4467Arabicccp6098Chakmaen2752Englishen1689Englishel4186Greekja3769Japaneseru6328Russianiu2690 Inuktitutru7982Russianbn2331Banglaccp8008Chakmafr1217Frenchccp7209Chakmasr7942Serbiantr1548Turkishsr7083Serbiantr7042Turkishru4671Russianel2033Greekja6038Japaneseeo7192 Esperantobn2827Banglaen58Englishiu2932 Inuktitutiu202 Inuktitutru5381Russiansr4108Serbiansr5373Serbianeo4877 Esperantoen6723Englishru5455Russianccp5907Chakmaen5406Englisheo5740 Esperantozh3323Chinesefr7709Frenchbn7670Banglaen2114Englisheo1757 Esperantozh4600Chinesesr1990Serbianar7383Arabicccp4296Chakmaccp5698Chakmaja2786Japanesesr3552Serbianel2302Greeken5721Englishsr5810Serbianeo7357 Esperantoiu6177 Inuktitutja5342Japaneseen3676Englishtr5681Turkishiu3946 Inuktituttr2335Turkishzh7268Chineseccp2802Chakmaeo5244 Esperantoja3760Japanesetr5003Turkishen1511Englishru7315Russiantr1071Turkishtr5292Turkishchr1348Cherokeeeo6114 Esperantoth883Thaichr8159Cherokeesr7306Serbianen7959Englishsr7073Serbianzh1040Chineseiu1639 Inuktitutel7985Greekeo5090 Esperantoes5573Spanishfr2343Frenchar1002Arabicfr6662Frenchar5117Arabicbn4351Banglaja3412Japaneseru4389Russianel748Greekja1622Japaneseeo1808 Esperantoru7916Russianth2746Thaiccp6497Chakmabn6730Banglaru5465Russianes3973Spanishen1823Englishja7502Japaneseja163Japanesezh3310Chinesees575Spanishes3116Spanishchr4406Cherokeeen6090Englisheo6477 Esperantoth2343Thaies4215Spanishar7794Arabices5787Spanishja5000Japanesetr96Turkishes4750Spanishbn2000Banglasr662Serbianchr2423Cherokeeel8190Greeksr1821Serbianru6327Russianccp5770Chakmachr3442Cherokeees6099Spanishchr7513Cherokeeeo2187 Esperantoar691Arabicbn4473Banglafr2834Frenchru5222Russianiu5153 Inuktituten6223Englishru1958Russianru6567Russianar3094Arabicccp2896Chakmatr4290Turkishen3063Englishsr7459Serbianbn2803Banglaccp5295Chakmaen3860Englishth8149Thaiel5279Greektr3389Turkishen2898Englishtr1596Turkishen1441Englishtr5690Turkishccp7504Chakmasr2846Serbianru2921Russianbn5215Banglachr3445Cherokeeen5007Englishfr5839Frenchiu1659 Inuktitutja5898Japanesesr3987Serbianchr5244Cherokeear4129Arabicen5703Englishiu3703 Inuktitutru3467Russiansr3480Serbianen7066Englishzh2249Chinesechr3124Cherokeear7482Arabicja7113Japanesees496Spanishzh372Chineseiu5613 Inuktitutel6518Greeksr6587Serbianeo6110 Esperantoja1559Japanesezh6527Chinesees4746Spanishccp8114Chakmachr6881Cherokeeja87Japanesebn4162Banglabn5512Banglachr6080Cherokeebn5855Banglael1175Greekfr3795Frenchbn5807Banglaar6777Arabictr4221Turkishchr2715Cherokeeru5012Russianel3492Greekchr8124Cherokeeth3970Thaitr4400Turkishth3479Thaisr6115Serbianbn3434Banglaccp4797Chakmazh6330Chineseth7409Thaiel4306Greekchr7799Cherokeear3353Arabicja7562Japanesesr7348Serbiantr3940Turkishchr244Cherokeeen1512Englishth7251Thaies2181Spanishbn2057Banglachr903Cherokeeru1308Russianel5424Greekchr1383Cherokeeeo1059 Esperantosr3228Serbianel6533Greekbn6796Banglaiu1879 Inuktitutiu5397 Inuktitutru1639Russianchr4162Cherokeeiu5804 Inuktituten5637Englishbn2580Banglath2442Thaiar4608Arabicru2092Russiantr6186Turkishel3776Greekru779Russianccp1641Chakmaen1570Englisheo7742 Esperantoja762Japaneseel1177Greektr7559Turkishru4518Russiantr3341Turkishes2446Spanishth934Thaith4015Thaitr7771Turkishchr4396Cherokeezh4751Chineseth6796Thaies3568Spanishar313Arabicru3948Russianccp1313Chakmatr1560Turkishbn1818Banglael5522Greeken6894Englishsr2752Serbianel2955Greekccp3505Chakmaar4703Arabicsr1043Serbianzh3471Chinesezh6419Chinesebn7194Banglachr2472Cherokeeen7391Englisheo2758 Esperantofr3307Frenchzh7016Chinesear7728Arabicchr7185Cherokeezh7243Chineseccp1226Chakmaiu5845 Inuktitutth5544Thaibn1711Banglaar6299Arabicar569Arabiceo3976 Esperantoru7498Russianchr8115Cherokeees6494Spanishfr769Frenchzh2975Chinesechr3999Cherokeebn5418Banglazh1020Chinesear434Arabicchr6328Cherokeechr3649Cherokeechr6320Cherokeeel470Greekth2751Thaichr134Cherokeeth5268Thaibn2097Banglatr2607Turkishja1852Japaneseen1264Englishtr6115Turkishsr652Serbiantr2457Turkishtr5611Turkishfr1223Frenchchr2084Cherokeeja6938Japanesefr3019Frenchel2770Greekel2471Greekja8054Japanesear5436Arabicru6141Russianru43Russianen2671Englishes7691Spanishth5955Thaizh4343Chineseja2965Japanesesr6917Serbianfr796Frenchsr1697Serbianar3769Arabicccp1876Chakmaen2162Englishzh925Chinesezh6456Chineseen5204Englishes5395Spanishes5433Spanishel3662Greekchr3926Cherokeees3669Spanishth1971Thairu2733Russianccp811Chakmaeo2655 Esperantoeo5037 Esperantochr2943Cherokeeru3173Russiansr3838Serbianja2148Japanesechr4763Cherokeeru4616Russianzh482Chineseen6411Englishbn3222Banglazh3786Chinesetr842Turkishar3749Arabicru4519Russianru4584Russiansr2520Serbianru5608Russianiu3246 Inuktituteo6850 Esperantobn6921Banglafr2251Frenchru4033Russianbn6757Banglaes1845Spanishfr6013Frenchar5023Arabicja4153Japanesefr7152Frenchiu7286 Inuktitutja3689Japanesechr3742Cherokeefr1731Frenchja7059Japanesesr5191Serbianchr508Cherokeeel7835Greekar1156Arabicfr3285Frencheo73 Esperantoru4682Russianeo1539 Esperantoccp5192Chakmaeo7321 Esperantoen1804Englishth6460Thaitr5285Turkishfr7394Frenchchr623Cherokeechr2479Cherokeear725Arabicja990Japanesees167Spanisheo7678 Esperantoel635Greeken7804Englishfr7377Frenchja1642Japaneseeo1009 Esperantoeo2470 Esperantotr5644Turkishar1530Arabiczh7682Chineseen2947Englishes7182Spanishfr2519Frenchth1404Thaisr2180Serbianru74Russianbn3334Banglael7581Greekes5521Spanishsr7563Serbiantr5416Turkishtr7433Turkishzh3094Chineseja80Japanesetr6707Turkishth523Thaieo1538 Esperantobn4934Banglaja3572Japaneseja519Japanesebn1454Banglaeo6428 Esperantoar6257Arabicja6614Japaneseen4336Englishel405Greekccp3381Chakmaen4056Englishes5478Spanishtr194Turkishsr4518Serbianeo6484 Esperantosr2198Serbianbn1038Banglaes7461Spanishchr6814Cherokeefr6207Frenchja2326Japanesesr3175Serbianth5017Thaiiu2022 Inuktitutja2809Japaneseru3373Russianbn883Banglaiu4613 Inuktitutru1185Russianzh6059Chineseccp6180Chakmazh7745Chineseiu2183 Inuktituteo3950 Esperantoth807Thaisr5298Serbianfr374Frenchth5639Thaija6066Japanesesr2709Serbiantr6038Turkishar2607Arabicbn3572Banglabn753Banglath331Thaiel6818Greekeo5194 Esperantoen7424Englishar4548Arabicchr5143Cherokeeth1324Thaiar851Arabiciu3027 Inuktitutja1571Japanesear7039Arabices218Spanishth4252Thaizh1714Chineseth8159Thaichr3066Cherokeear5124Arabictr4759Turkishzh6005Chineseth3290Thaith2258Thaiccp2401Chakmaiu7417 Inuktituttr496Turkishbn6308Banglaar2708Arabiciu5218 Inuktitutja4707Japanesebn4282Banglafr1783Frenchen6359Englishes6130Spanishes553Spanishes1308Spanishel1190Greeken2141Englisheo7103 Esperantoes7465Spanishja5512Japaneseccp5211Chakmachr4802Cherokeechr7039Cherokeeen2929Englishes2327Spanishes8142Spanishtr38Turkishfr5401Frenchzh5348Chinesebn480Banglael1050Greeken2613Englishsr6022Serbianar1421Arabicru2531Russianth3038Thaiiu4831 Inuktitutccp6670Chakmaja4088Japaneseru1132Russianiu5583 Inuktitutccp4909Chakmachr7197Cherokeear5426Arabicru6512Russianth2477Thaith3794Thaizh5371Chineseth6248Thaizh5995Chinesezh3491Chineseru5255Russianchr6618Cherokeechr2445Cherokeear1829Arabicfr5116Frenches4369Spanishsr5540Serbianchr7652Cherokeeth5745Thaitr6725Turkishel464Greekes469Spanishzh7646Chineseccp3338Chakmaiu159 Inuktitutth381Thaibn2205Banglaes3446Spanisheo6140 Esperantoth3974Thaifr2915Frenchbn5975Banglaar2704Arabiceo3889 Esperantoiu7690 Inuktitutbn1891Banglabn3881Banglaar5838Arabiciu4838 Inuktitutru3965Russianth5403Thaisr4974Serbianbn2939Banglael3100Greekiu2169 Inuktitutja6435Japanesesr7016Serbianbn2075Banglachr2484Cherokeeen1027Englishfr6054Frenchru5823Russianzh518Chineseeo1522 Esperantotr5671Turkishfr7541Frenchru3538Russianru2788Russianiu6867 Inuktitutja8155Japaneseja3964Japaneseth6941Thairu4083Russianchr6957Cherokeeen497Englishsr4801Serbianar4946Arabicru2110Russianja843Japanesezh2221Chinesees1259Spanishfr6593Frenchar4215Arabicsr4533Serbianfr1786Frenchen3405Englishru720Russianccp2983Chakmaar5668Arabicar5740Arabicbn7982Banglaes4783Spanishth3558Thaiar981Arabicsr7736Serbianccp2174Chakmaeo5689 Esperantosr5248Serbianar5214Arabicru135Russianfr4475Frenchfr743Frenchsr1372Serbianiu7420 Inuktitutru3689Russianru5972Russianth7964Thaiiu1821 Inuktitutja448Japaneseccp527Chakmazh6185Chineseiu6489 Inuktitutccp3259Chakmachr2100Cherokeeen665Englishzh2856Chinesees5362Spanishja1889Japaneseth1859Thaith3966Thaitr2779Turkishes1743Spanishiu5493 Inuktitutja555Japaneseth1777Thaith2918Thaitr7191Turkishru2621Russianfr1830Frenches5509Spanishfr3594Frenchbn1275Banglaeo4269 Esperantoeo7978 Esperantoel2488Greekchr7936Cherokeees1088Spanishja6766Japanesezh4930Chineseeo5256 Esperantoen6264Englishar2886Arabiczh4121Chineseel7844Greekfr230Frenchfr6058Frenchzh8191Chinesechr2203Cherokeeen7584Englishen2877Englishen2278Englishsr3550Serbianen566Englishru203Russiantr7438Turkishbn5537Banglafr3818Frenchen5854Englisheo3849 Esperantoth7157Thaiel2803Greekzh3739Chineseja875Japaneseen935Englishfr3547Frenchiu7001 Inuktitutiu5346 Inuktituten1392Englishar4290Arabictr4993Turkishes7614Spanishfr664Frenchar7373Arabicru5078Russianar2005Arabicbn7034Banglabn3295Banglabn518Banglabn7467Banglaiu1942 Inuktitutes2549Spanishbn4075Banglachr6086Cherokeeel118Greekel4513Greekfr5206Frenchchr250Cherokeeccp7916Chakmabn1976Banglaar5812Arabiciu7672 Inuktitutzh7735Chineseja1090Japaneseeo1042 Esperantofr135Frenchja2279Japanesear712Arabicccp1810Chakmaccp7423Chakmaar6318Arabices6686Spanishth5022Thaizh8132Chineseccp2908Chakmath6757Thaiccp7428Chakmaeo1129 Esperantosr2097Serbianiu2368 Inuktitutfr1664Frenchzh7727Chineseiu5450 Inuktituteo944 Esperantoel3666Greekth7719Thaibn5099Banglazh3983Chinesear1518Arabicel7216Greekiu3087 Inuktitutes3188Spanishtr2689Turkishru1268Russianru5978Russianccp3433Chakmachr1908Cherokeefr3181Frenchth6644Thaiar2224Arabicfr4894Frenchchr6114Cherokeees6589Spanishiu1563 Inuktitutiu5836 Inuktitutbn6091Banglaccp4611Chakmasr356Serbianth3688Thairu7763Russianchr3692Cherokeeen1908Englisheo246 Esperantoeo3239 Esperantofr4805Frenchja5396Japaneseth8085Thaizh1129Chineseel4700Greekccp3376Chakmachr7451Cherokeees2612Spanishes4057Spanishfr6008Frenchth5915Thaija53Japanesesr4214Serbianen5581Englishel1073Greekes5662Spanishzh168Chinesefr138Frenchbn718Banglaiu3254 Inuktitutru6179Russiansr5031Serbianfr6034Frenchth263Thaiccp6630Chakmaeo850 Esperantoiu2692 Inuktitutru5208Russianbn4223Banglath1455Thaitr1431Turkishzh5129Chineseja7785Japaneseel2515Greekfr6057Frenchen6651Englishzh7516Chineseeo7236 Esperantofr5524Frenchel7394Greekiu4111 Inuktituteo3024 Esperantoccp4753Chakmael5291Greekel834Greeken289Englishccp1847Chakmaes6625Spanishiu2297 Inuktitutsr1182Serbiansr6992Serbianru397Russianccp1932Chakmaar6214Arabicsr4305Serbiansr7621Serbianar1943Arabiczh5027Chinesesr7709Serbianru438Russianfr5945Frenchru7562Russianru4037Russianfr773Frenches2936Spanishchr2974Cherokeebn2209Banglabn4871Banglaccp3707Chakmaja2670Japanesees554Spanishen460Englishccp688Chakmaar7689Arabicen1087Englishth2382Thaibn7070Banglaes3591Spanishth3228Thaizh6407Chinesees2717Spanishen6653Englishru3763Russianiu7879 Inuktitutth6495Thaies3730Spanishccp4387Chakmaccp4367Chakmaccp6981Chakmaccp629Chakmaccp3071Chakmaeo5944 Esperantochr5929Cherokeeeo977 Esperantofr5560Frenchru2457Russianzh336Chineseen3562Englishchr8151Cherokeeiu4528 Inuktitutja3933Japanesetr2187Turkishchr1810Cherokeeth1053Thaiel245Greekzh2775Chineseth5877Thaiiu7447 Inuktituttr3888Turkishru7673Russianru1722Russianbn5102Banglabn6903Banglaccp6037Chakmaen1983Englishsr6604Serbianen5698Englishtr4965Turkishbn5506Banglazh252Chineseth26Thaies2902Spanishar6916Arabicchr2525Cherokeeth7543Thaien2810Englishiu5762 Inuktitutar4528Arabiczh6565Chineseiu1078 Inuktitutzh2205Chinesear3070Arabices1517Spanishiu1482 Inuktitutar3890Arabicen3050Englishja6174Japanesezh7263Chinesetr943Turkishiu5534 Inuktitutfr7556Frenchchr495Cherokeees6539Spanishchr5111Cherokeeccp117Chakmaru7988Russiansr1780Serbianccp7597Chakmasr4027Serbianth4280Thaiccp4956Chakmafr236Frenchzh8015Chinesees5005Spanishbn423Banglachr5587Cherokeechr7841Cherokeear5180Arabiceo6774 Esperantoiu1919 Inuktituten7741Englishiu3108 Inuktitutru931Russiansr64Serbiantr2358Turkishar7159Arabicfr5165Frenchru5751Russianar2355Arabicru7732Russianchr4525Cherokeetr7129Turkishchr7144Cherokeefr552Frenchru7591Russianccp4464Chakmath5655Thaija7246Japaneseen1562Englishfr3629Frenchru1170Russianccp2182Chakmabn1254Banglaeo4617 Esperantofr2930Frenchiu7954 Inuktitutel1516Greeken3495Englishes658Spanishtr5342Turkishtr1901Turkishsr6181Serbiantr4035Turkishzh4705Chinesees3510Spanishsr2375Serbianiu4126 Inuktitutccp3932Chakmael4543Greekth8143Thaichr4804Cherokeeel6486Greekeo618 Esperantozh2370Chinesefr6925Frenchtr7548Turkishsr5743Serbianzh5914Chinesetr3542Turkishccp214Chakmaja1076Japaneseru7377Russiantr294Turkishzh7375Chineseccp7688Chakmaes1297Spanishbn3995Banglazh6107Chineseiu3490 Inuktitutar911Arabicar6834Arabicja2130Japanesezh2809Chinesesr2403Serbianchr1009Cherokeebn7158Banglabn1116Banglael7743Greekzh1527Chinesees3682Spanishiu3106 Inuktitutel7811Greekel3631Greekchr6981Cherokeebn2225Banglael4504Greekiu7223 Inuktituteo7276 Esperantoes2350Spanishen3567Englishel1063Greeksr2397Serbianzh6512Chineseen4015Englishzh307Chineseiu2630 Inuktitutzh7427Chineseccp5918Chakmaru6430Russianchr4246Cherokeeccp3156Chakmaru3932Russiantr2984Turkishth1615Thaisr2341Serbianar856Arabicbn1246Banglaru6934Russiantr7269Turkishzh2307Chineseccp2673Chakmaiu8096 Inuktitutru6760Russianes4340Spanishja278Japanesesr3405Serbianth3780Thaizh6954Chineseen5932Englishchr7912Cherokeesr5123Serbianja6789Japaneseja2485Japaneseiu237 Inuktitutru531Russiansr5646Serbianeo3034 Esperantoel3503Greekbn2985Banglabn6335Banglaen3525Englishen1278Englishfr837Frenchfr3898Frenchar4551Arabiceo3210 Esperantoth7003Thaieo7146 Esperantoccp3075Chakmath2581Thaizh4532Chinesesr936Serbiantr2126Turkishsr1012Serbianth246Thaifr2586Frenchchr1479Cherokeesr1769Serbianar3684Arabicsr963Serbiansr2253Serbianccp7036Chakmaru908Russianiu1546 Inuktituteo6295 Esperantoes7694Spanishfr7019Frenchja3493Japaneseiu6467 Inuktitutes4563Spanishsr7960Serbianchr1687Cherokeechr4733Cherokeear3110Arabicchr5569Cherokeefr2780Frenchtr4370Turkishfr4923Frenchzh1170Chinesezh5191Chinesefr4469Frenchth5975Thaisr932Serbianen7894Englishfr3715Frenchen7728Englishes1448Spanishiu4445 Inuktitutru5076Russiansr5177Serbianbn4312Banglabn2369Banglaru6097Russiansr6373Serbianen2063Englishtr6997Turkishbn2357Banglaru1542Russianru126Russianeo3919 Esperantoes7435Spanishfr4121Frenchfr110Frenchru4249Russianar1341Arabices4075Spanishsr4554Serbianchr4044Cherokeeth3283Thaiiu7936 Inuktitutru5173Russiantr2248Turkishiu8042 Inuktitutar7323Arabices5222Spanishccp7603Chakmath5069Thaitr8092Turkishen6167Englishth3961Thaith135Thaifr1165Frenchfr6026Frenches2548Spanishen2582Englishel276Greeken1763Englishja271Japaneseja7496Japanesesr2879Serbiantr5976Turkishccp5880Chakmaccp2453Chakmael3594Greekbn2608Banglaen6579Englishes4484Spanishfr2848Frenchfr5086Frenchen1214Englishtr6936Turkishchr5681Cherokeeen4967Englishzh8087Chineseeo203 Esperantoel3736Greekiu6566 Inuktitutbn3268Banglath3788Thaizh1165Chineseiu3212 Inuktitutja2619Japanesezh3725Chineseel6250Greekth3677Thaifr7564Frenchiu4178 Inuktitutel5800Greekiu1662 Inuktitutfr5173Frenchth122Thaith1194Thaieo2474 Esperantoel1253Greekel6798Greekccp6387Chakmaru4916Russianel3699Greekccp3574Chakmaen4353Englishccp5161Chakmatr93Turkishja4696Japanesezh3194Chinesechr4284Cherokeebn7650Banglaja7656Japaneseja2961Japaneseen2607Englishchr141Cherokeezh1460Chineseen6499Englishfr2863Frenchar5351Arabicen760Englishes6876Spanishfr2394Frenchfr5425Frenchtr7174Turkisheo3350 Esperantoru5169Russianja6800Japanesechr6853Cherokeefr3393Frenchtr7001Turkishccp7758Chakmath3008Thaieo4432 Esperantozh7470Chineseja7590Japaneseth6486Thaiiu502 Inuktitutiu7367 Inuktitutchr3484Cherokeeel374Greekja3214Japaneseeo2771 Esperantozh4526Chinesetr7403Turkishfr4590Frenchbn7240Banglaar7064Arabicchr7233Cherokeeen6364Englishchr4875Cherokeeeo5417 Esperantoccp4828Chakmaru2420Russianth1114Thaibn7354Banglaeo2146 Esperantotr5860Turkishes4436Spanishth6761Thaichr421Cherokeeen3347Englisheo7215 Esperantoen435Englishes4363Spanishccp2138Chakmael4843Greekiu1269 Inuktitutja5760Japaneseru8100Russianbn7135Banglaar1519Arabicel781Greekel5652Greeken2255Englisheo4926 Esperantozh5454Chinesezh7305Chinesebn4531Banglath6041Thaibn7251Banglaes3291Spanishel2312Greekel1629Greekbn7085Banglabn7909Banglaes4720Spanishfr2287Frenchfr7251Frenchar4810Arabiciu2764 Inuktituteo1978 Esperantoeo2333 Esperantoar4789Arabices972Spanishccp5465Chakmazh4830Chinesebn5902Banglaes3296Spanishccp7920Chakmaes4184Spanishbn2211Banglaar2201Arabicel2603Greekeo424 Esperantoes343Spanishchr3677Cherokeeel5504Greeken7029Englishccp8159Chakmael7284Greeksr8103Serbianzh7088Chinesechr6723Cherokeezh7714Chineseen3067Englishar3066Arabicar3764Arabicen1809Englishbn5192Banglaccp617Chakmaeo7523 Esperantoes5602Spanishes5918Spanishsr1962Serbianfr4824Frenchar3863Arabicel1374Greekes1138Spanishfr921Frenchen5388Englishel7280Greekfr5612Frenchsr4117Serbianru7519Russianru820Russianiu622 Inuktitutar86Arabicen5428Englishes338Spanishru8190Russianja5936Japanesear7365Arabicchr4669Cherokeeiu4482 Inuktituteo1707 Esperantosr7394Serbiantr5489Turkishzh5820Chinesetr5065Turkishen4081Englishsr7534Serbianel6307Greekfr3825Frenchsr6315Serbianes6998Spanishsr8115Serbianeo817 Esperantoel5465Greekeo4612 Esperantobn2593Banglaru7513Russiansr2289Serbianeo6840 Esperantoth6056Thaifr222Frenchth4752Thaija8052Japanesetr4882Turkisheo436 Esperantoar708Arabicru4155Russiantr387Turkishbn3496Banglaeo5491 Esperantoth2225Thaichr3002Cherokeeja4420Japaneseth3893Thaifr5463Frenchen4554Englishfr61Frenchfr656Frenchru5892Russiansr6874Serbianbn4632Banglaen2021Englishchr5303Cherokeeth4103Thaibn789Banglaeo6797 Esperantoeo7758 Esperantobn2989Banglaja3608Japaneseccp7491Chakmaes2866Spanishchr6937Cherokeeru7937Russianen4877Englishel4780Greektr143Turkishes1535Spanishbn5414Banglaar1054Arabicel4845Greekiu6428 Inuktitutja6200Japaneseel8136Greekja3924Japanesees1249Spanishsr3066Serbiansr6756Serbiantr1960Turkishccp2501Chakmaes3547Spanishiu6966 Inuktituttr5483Turkishzh596Chineseeo6728 Esperantoeo4980 Esperantoes1391Spanishth2436Thaiccp3977Chakmaes804Spanishfr2936Frenchsr1827Serbianth6990Thaitr7858Turkishen6573Englishsr6000Serbianzh3772Chinesetr3038Turkishzh2427Chinesechr2130Cherokeeru1471Russianar1315Arabices2226Spanishzh6338Chineseeo1199 Esperantoru7189Russianes3810Spanishtr3273Turkishchr7374Cherokeeja6209Japanesechr2573Cherokeeel5861Greektr639Turkishth2849Thaies5364Spanishes1992Spanishel5906Greekeo7767 Esperantoccp3260Chakmaru4304Russianar3047Arabicbn5982Banglaccp154Chakmaiu7789 Inuktitutccp1444Chakmachr8104Cherokeeel1330Greeken2375Englishth6675Thaiar4258Arabicbn4273Banglath6766Thairu6026Russianchr3313Cherokeetr858Turkishen191Englishar654Arabicccp4478Chakmaja3253Japaneseth5638Thaifr2146Frenchen1086Englishfr4810Frenchtr7965Turkishzh1847Chinesezh7546Chinesees4657Spanishen6586Englishiu2449 Inuktitutiu4578 Inuktitutes824Spanishru5246Russianar596Arabicchr5085Cherokeeccp2360Chakmafr5697Frenchchr300Cherokeebn1779Banglachr6366Cherokeeiu2412 Inuktitutzh5044Chinesesr8096Serbianel4128Greekfr8024Frencheo1519 Esperantobn5350Banglabn5032Banglafr7290Frenchchr7347Cherokeeel3822Greekar3988Arabicfr1748Frenchfr2428Frenchtr738Turkishsr2302Serbianbn8184Banglabn8070Banglatr71Turkishtr2671Turkisheo2449 Esperantoja2813Japanesees2677Spanishth2240Thaies4491Spanishth3091Thaifr4878Frenchru7581Russianccp8036Chakmaru4455Russianen7183Englisheo7309 Esperantoiu4226 Inuktitutja7290Japaneseeo4051 Esperantosr3291Serbiantr6094Turkishar3195Arabiceo4688 Esperantotr4023Turkishsr7303Serbianiu1876 Inuktitutccp4329Chakmaru1212Russiantr1358Turkishiu6535 Inuktitutchr5266Cherokeeen1342Englishel4617Greekja4948Japaneseru3224Russiantr2994Turkishbn1656Banglatr8154Turkishzh7683Chinesetr1420Turkishchr7193Cherokeeeo2573 Esperantoja180Japanesefr2991Frenchfr6900Frenchzh3286Chineseiu3508 Inuktitutel7105Greeksr4495Serbianel5354Greekzh1466Chineseeo3514 Esperantoiu6664 Inuktituttr7331Turkishth8066Thaith4894Thaizh806Chinesees6238Spanisheo2121 Esperantoen3356Englishccp4177Chakmael8127Greekel5634Greektr5254Turkishel7452Greekzh2985Chineseen4676Englishiu412 Inuktituteo2040 Esperantofr8005Frenchfr4089Frenchar7969Arabicbn2884Banglaja6499Japanesear1388Arabicja7687Japanesear3729Arabicru3806Russianfr7544Frenchja5754Japaneseen3027Englishar6785Arabicbn4384Banglafr4159Frenchchr7664Cherokeechr6722Cherokeefr1379Frenchfr5083Frenchel7881Greekar1940Arabicth3202Thaichr5458Cherokeeen7251Englishja266Japanesechr5518Cherokeeel5024Greekru1490Russianel4361Greekfr2804Frenchfr3776Frenchth2984Thaifr14Frenchru6882Russianfr504Frenchtr7399Turkishfr2569Frenchfr5362Frenchth3731Thaieo737 Esperantochr920Cherokeeiu2358 Inuktitutes2081Spanishja5497Japanesebn1270Banglaiu6687 Inuktitutiu6852 Inuktitutsr6284Serbianccp1378Chakmael1139Greekccp1491Chakmaen6584Englishes193Spanishth3550Thairu2693Russianzh4003Chineseja5088Japaneseja5540Japanesezh808Chineseru4027Russianiu2 Inuktitutsr3184Serbianzh7638Chineseccp2305Chakmael7147Greekccp5797Chakmaccp899Chakmaes6340Spanishbn5079Banglaes5112Spanishth1261Thaizh4226Chineseccp5825Chakmaiu4507 Inuktitutiu7583 Inuktituten3835Englishes1029Spanishel131Greekja6147Japaneseja7617Japaneseccp3988Chakmabn6885Banglaiu3911 Inuktitutsr6030Serbianel2666Greekchr3303Cherokeeru1740Russianeo672 Esperantoeo5907 Esperantosr7385Serbianiu6640 Inuktitutiu6678 Inuktitutccp2135Chakmaen4592Englishiu2674 Inuktitutbn6707Banglath6569Thaisr6931Serbianel2398Greekja2859Japaneseeo7094 Esperantosr7623Serbianccp6223Chakmachr2119Cherokeeiu3773 Inuktituten3398Englishiu1602 Inuktitutru3118Russianfr838Frenchfr4685Frenchja6137Japaneseel1922Greekiu3109 Inuktitutccp5545Chakmaeo5636 Esperantoeo1671 Esperantoes2228Spanishru427Russianar1206Arabicccp905Chakmazh1525Chinesefr2476Frenchfr4617Frenchru7283Russianeo3908 Esperantoth867Thaibn2377Banglaen4609Englishtr8170Turkishchr6364Cherokeeen66Englishccp382Chakmaccp385Chakmasr8114Serbianeo3607 Esperantoeo1736 Esperantoth1789Thaiccp579Chakmael4787Greekel7459Greekzh4966Chineseeo5249 Esperantosr1248Serbiantr3969Turkishtr4743Turkishar994Arabicchr2480Cherokeesr7290Serbianja955Japanesefr864Frenchzh690Chineseeo4249 Esperantotr5162Turkishes31Spanishchr7834Cherokeeen6959Englishel465Greekes7725Spanishfr6831Frenchel3972Greekccp2981Chakmaja4418Japanesetr7684Turkishzh6263Chineseeo6878 Esperantoes6694Spanishel1603Greekja5564Japaneseru3294Russiantr5146Turkishes5813Spanishes2413Spanishth1818Thaien3466Englishzh6717Chinesetr4639Turkishel129Greekru1713Russianzh7416Chinesees1808Spanishen644Englishfr6067Frenchru2260Russianccp1976Chakmatr2756Turkishar3588Arabicchr4602Cherokeezh434Chineseccp637Chakmaccp5644Chakmasr3915Serbianchr2847Cherokeechr5780Cherokeees7658Spanishsr2366Serbianbn5905Banglael2370Greeken2270Englishtr2056Turkishja4506Japanesees8089Spanishsr5459Serbianchr4452Cherokeebn4705Banglaar6502Arabices2435Spanishiu2499 Inuktitutes4620Spanishes6363Spanishru3372Russiantr720Turkishsr7095Serbianccp2547Chakmasr150Serbianccp6839Chakmaiu7174 Inuktitutchr3198Cherokeees3486Spanishar232Arabicru676Russianth222Thaiar5773Arabiczh5248Chineseccp1542Chakmatr4522Turkishfr3043Frenchen221Englishsr3638Serbianth1894Thaitr3917Turkisheo881 Esperantosr6720Serbiantr342Turkishbn6935Banglaen4841Englishfr4282Frenches3096Spanishccp3196Chakmasr1646Serbianth5381Thaiccp110Chakmabn2653Banglaccp720Chakmaru8094Russiantr1348Turkisheo7910 Esperantozh5437Chineseiu7304 Inuktitutru5235Russianfr8072Frenchiu3951 Inuktitutja4993Japaneseen3163Englishchr6994Cherokeechr1859Cherokeeja5789Japaneseel1866Greekiu6682 Inuktitutccp2581Chakmachr7273Cherokeear1793Arabicchr6870Cherokeeth3262Thaisr6347Serbianchr2511Cherokeeja1764Japaneseja7546Japanesesr99Serbianiu7118 Inuktitutar7175Arabicchr7847Cherokeeja4039Japanesees3899Spanishccp28Chakmaar4459Arabicbn7323Banglath2573Thairu1728Russianccp256Chakmabn4676Banglaccp7267Chakmafr6510Frenchru7889Russianth1719Thaiel6367Greekbn2001Banglaen5034Englishiu8141 Inuktitutsr6358Serbianfr3618Frenchru5413Russianja8187Japanesezh2920Chineseru2985Russianru3814Russianen7916Englishfr6459Frenchiu4071 Inuktitutth264Thairu7955Russianfr3235Frenchsr1831Serbianeo8150 Esperantosr2665Serbianchr187Cherokeeiu5632 Inuktituteo5263 Esperantochr2875Cherokeezh7852Chineseth6561Thaieo7542 Esperantoja423Japaneseru3676Russianbn4957Banglaccp6309Chakmatr1032Turkisheo6203 Esperantoeo2185 Esperantoiu5802 Inuktitutzh2980Chinesebn6928Banglaeo4425 Esperantozh5526Chinesebn4307Banglachr6840Cherokeechr6974Cherokeebn2543Banglazh4211Chineseiu7381 Inuktitutel6691Greekth2060Thaieo4935 Esperantoes6286Spanishiu2595 Inuktitutiu7836 Inuktitutccp7490Chakmael1619Greekchr2281Cherokeefr4880Frenchiu4148 Inuktitutru1686Russiansr6581Serbianzh7376Chineseth2555Thaiar5062Arabicsr7015Serbianja3563Japaneseja520Japanesetr6138Turkishccp5722Chakmabn3138Banglaiu3538 Inuktitutsr7176Serbianru4186Russianbn292Banglath7290Thaichr7769Cherokeeccp2894Chakmael972Greekchr4743Cherokeezh3861Chinesebn7579Banglaeo4382 Esperantochr7738Cherokeeja1019Japaneseja3481Japanesefr2956Frenchsr4940Serbianen4565Englishru6286Russianes1919Spanishccp4961Chakmaccp337Chakmazh7859Chineseccp157Chakmaccp1247Chakmaja249Japanesear7595Arabicbn7116Banglaeo876 Esperantoar2435Arabicth6476Thaitr2818Turkishfr7386Frenchzh1907Chinesechr6611Cherokeeeo7488 Esperantofr8076Frenchja321Japaneseiu1322 Inuktituttr3874Turkishru3361Russianfr7627Frenchtr2262Turkishtr3401Turkishar6254Arabiczh508Chineseccp7460Chakmath6906Thaith8083Thaieo5872 Esperantobn4217Banglael5781Greekeo3886 Esperantoccp4665Chakmael4455Greekru5755Russianbn7115Banglaen5673Englishes603Spanishzh7274Chineseiu1973 Inuktitutiu6515 Inuktitutel7870Greekfr103Frenchchr7244Cherokeees6153Spanishth5760Thaiiu4555 Inuktitutiu1236 Inuktitutiu164 Inuktitutzh2181Chinesesr3463Serbianru4491Russianru2256Russianeo7181 Esperantoen2920Englisheo805 Esperantoja6333Japanesear1146Arabicen7097Englishth4469Thaiccp194Chakmaccp7866Chakmaen495Englishchr3748Cherokeeen4312Englishccp483Chakmaiu2457 Inuktitutchr1598Cherokeesr3202Serbianccp1722Chakmael3278Greeken1649Englisheo4268 Esperantosr6073Serbiansr7797Serbianzh4439Chineseen3020Englishja2904Japaneseja7542Japanesesr5796Serbianel4166Greeken1660Englishes1892Spanishtr3970Turkishru5370Russianbn620Banglaiu3162 Inuktituttr2855Turkishes2870Spanishchr3187Cherokeezh5321Chineseiu8146 Inuktitutja7615Japaneseel4140Greekar6827Arabictr4851Turkishel5614Greekeo677 Esperantoth1439Thaiiu671 Inuktitutja4091Japaneseja4282Japaneseru5211Russianeo2972 Esperantoru133Russianen2060Englishen4579Englishth3203Thaibn2108Banglaar4716Arabicbn7904Banglatr7482Turkishar5548Arabicja4129Japanesechr5745Cherokeeja4264Japanesees1495Spanishtr7418Turkishth7506Thaija3209Japaneseru7134Russianru6863Russianeo6963 Esperantoiu623 Inuktitutchr8139Cherokeeeo3708 Esperantozh1564Chinesees3945Spanishccp510Chakmael2546Greekth7484Thaiiu8048 Inuktitutth2117Thaieo1596 Esperantoru1003Russianzh3340Chineseeo2549 Esperantoen7990Englisheo6329 Esperantosr2266Serbiansr6755Serbiansr5846Serbianes817Spanishar7164Arabicfr2054Frenchbn6473Banglaeo6148 Esperantofr5710Frenchen4372Englishccp2848Chakmafr5537Frenchbn7331Banglaru3989Russianar2458Arabiceo259 Esperantoeo322 Esperantoiu3437 Inuktituttr5705Turkisheo913 Esperantoth5299Thaifr1171Frenchru3336Russianbn2632Banglaiu512 Inuktitutru4129Russianel6140Greeken1029Englishbn678Banglaes6386Spanishtr5967Turkishsr334Serbianchr2316Cherokeeccp7805Chakmaeo1450 Esperantoes4941Spanishbn11Banglael81Greekiu1410 Inuktitutru4076Russianes4296Spanishiu1320 Inuktituten1637Englishccp264Chakmaes2741Spanishja2227Japanesechr7178Cherokeeel7Greekes3302Spanishja5614Japaneseth988Thaiccp3475Chakmaeo3529 Esperantoel7838Greeksr1839Serbianbn2343Banglatr5983Turkishbn7968Banglaeo2567 Esperantoccp6590Chakmasr6074Serbianth1138Thaith809Thaitr2883Turkishbn2227Banglazh6223Chinesefr4093Frenchja439Japanesees3769Spanishzh1502Chineseiu7427 Inuktitutchr3520Cherokeees4082Spanishfr2051Frenchtr6316Turkishbn7661Banglafr5978Frenchru5294Russianeo1118 Esperantoth2716Thaibn901Banglaeo7473 Esperantobn5828Banglaiu533 Inuktitutchr6769Cherokeezh3557Chinesezh3827Chineseel1406Greekzh4529Chinesesr3162Serbianth4356Thaichr1129Cherokeetr1226Turkishiu1189 Inuktituteo544 Esperantotr6007Turkishtr1436Turkishja935Japanesechr4179Cherokeeth4323Thaiiu3448 Inuktituttr6469Turkisheo75 Esperantoes3053Spanishiu8069 Inuktitutfr1780Frenchar5929Arabicja5890Japaneseen6077Englishzh3351Chineseen1967Englishru5009Russianfr1453Frenchel6417Greekth5536Thaizh871Chinesetr6872Turkishes5923Spanishbn6814Banglaen4046Englishtr7599Turkishes1213Spanishtr989Turkishru2172Russianfr2910Frenchar822Arabicfr4416Frenchbn3286Banglazh6845Chineseeo5072 Esperantoes304Spanishccp1322Chakmael3345Greekth5996Thaieo44 Esperantofr7922Frenchar5736Arabicccp814Chakmachr5863Cherokeees5290Spanishen7668Englishtr7592Turkishar3452Arabicar1985Arabicru6903Russiansr6556Serbianeo8099 Esperantoja7971Japaneseel5325Greeksr4427Serbianeo7139 Esperantofr7886Frenchbn7552Banglaiu3668 Inuktitutes4759Spanishru229Russianfr2778Frenchen6792Englishiu5502 Inuktituteo6197 Esperantoccp4014Chakmaen1198Englishel7426Greekzh578Chineseccp414Chakmaeo5698 Esperantoar5892Arabicccp5375Chakmaen4173Englishar914Arabicen7041Englishes4463Spanishccp2399Chakmaes5183Spanishbn1805Banglaccp7039Chakmasr956Serbianth5387Thaizh7308Chinesees5397Spanishru7786Russianbn2743Banglaeo2697 Esperantoen6774Englishes6223Spanishsr4694Serbianeo6759 Esperantoth6032Thaizh7950Chinesezh5026Chineseccp7527Chakmaja1977Japanesear4566Arabicel3579Greekru1500Russianen608Englisheo6397 Esperantofr2447Frenchtr2498Turkishar1408Arabicja5369Japaneseel113Greekar5122Arabicja6866Japaneseru423Russianen915Englishen355Englishiu3271 Inuktitutja37Japanesees1904Spanishbn4563Banglaru1276Russianru1905Russianru7742Russianccp7943Chakmaar4574Arabicbn6248Banglath5616Thaies2198Spanishiu3372 Inuktitutccp6916Chakmafr2374Frenchzh5816Chineseccp6430Chakmaeo6812 Esperantotr3163Turkishfr320Frenchar5656Arabicth6350Thaiel8113Greekja6252Japanesear935Arabicchr3756Cherokeeel164Greeksr3306Serbianbn7651Banglaes7952Spanishzh4364Chineseeo6689 Esperantotr3074Turkishbn7152Banglaja6192Japanesebn5480Banglaar3562Arabicja4421Japanesesr1481Serbianchr7947Cherokeezh1519Chinesebn1153Banglazh4602Chineseeo3753 Esperantoja671Japanesees7254Spanishiu6805 Inuktitutel517Greekel5999Greekru7685Russiantr405Turkishel6150Greekru2898Russianzh5362Chineseja1636Japaneseiu5655 Inuktituttr4690Turkishru494Russianen1129Englishzh8077Chineseeo2954 Esperantozh2034Chineseccp2456Chakmaja1370Japaneseccp1618Chakmaen5905Englishfr41Frenchiu696 Inuktitutar3616Arabicar286Arabicel3084Greekchr2308Cherokeeja545Japanesees6947Spanishja6667Japaneseja6916Japanesetr1518Turkishtr5277Turkishen2424Englishar1177Arabicth2987Thaiccp2079Chakmaes974Spanishiu4938 Inuktitutth5922Thaitr3920Turkishsr496Serbianes143Spanishsr7764Serbianeo5658 Esperantotr5044Turkishen1411Englishen1946Englisheo7837 Esperantoiu4245 Inuktitutru25Russianchr2872Cherokeefr7582Frenchfr7362Frenchiu4185 Inuktitutccp1922Chakmaja3731Japaneseccp1596Chakmath1217Thaichr5995Cherokeezh219Chinesezh408Chineseja7708Japanesechr7702Cherokeeel3042Greekth3075Thaibn4237Banglachr3258Cherokeeen7089Englishja4044Japaneseru7815Russianbn40Banglaja98Japanesefr6589Frenchel6538Greekru3238Russiansr6859Serbianth3413Thaitr7109Turkishru7279Russianiu4182 Inuktituttr4894Turkishes7554Spanishth543Thaien678Englishes6215Spanishccp3197Chakmaccp3421Chakmaja770Japaneseth3432Thairu1674Russianen6419Englishsr5226Serbianth1583Thaieo2242 Esperantoccp4182Chakmaru4589Russianru5393Russianbn2656Banglaccp7680Chakmazh3888Chinesees6431Spanishiu7053 Inuktitutiu7405 Inuktituten2470Englishru5975Russianel2426Greeksr3526Serbianfr1618Frenchja7298Japanesesr7874Serbianel5238Greekeo7029 Esperantoccp1195Chakmatr955Turkishen6438Englisheo2851 Esperantoes3587Spanishes5445Spanishchr2273Cherokeeeo5881 Esperantosr4303Serbianel7146Greekeo5965 Esperantozh247Chinesear7059Arabiciu3017 Inuktitutbn958Banglaiu6109 Inuktituteo403 Esperantofr5065Frenchel5029Greekeo4703 Esperantobn3847Banglael3668Greeken436Englishen7219Englishbn565Banglasr5710Serbiansr6221Serbianth1203Thaisr7136Serbianth3976Thaichr6519Cherokeetr4640Turkishtr4805Turkishzh2996Chineseccp3272Chakmath649Thairu146Russianel2518Greekar231Arabicfr7227Frenchja4840Japanesees110Spanishfr7439Frenchzh2132Chinesesr6120Serbianru4547Russianen3061Englisheo98 Esperantoen6403Englishru7425Russiantr781Turkishtr4540Turkishbn887Banglath38Thairu5869Russianfr6864Frenches5199Spanishja412Japanesetr5605Turkishja4862Japaneseth4286Thaija6582Japanesebn1196Banglaccp4884Chakmaccp3628Chakmachr3487Cherokeeja2283Japanesezh4542Chineseja5070Japaneseen4543Englishccp695Chakmachr4148Cherokeees5435Spanishbn5719Banglael6028Greekeo1238 Esperantoel5538Greekru7417Russianes7850Spanishzh5233Chinesear947Arabicfr2632Frenchchr1385Cherokeezh2401Chineseen2042Englishru882Russianen4528Englishbn4119Banglatr3739Turkishar7378Arabicbn6043Banglachr4830Cherokeeja4516Japaneseru6377Russianfr4968Frenchfr5552Frenchar5197Arabiczh6414Chineseeo7394 Esperantoel4558Greekth4143Thaies6696Spanishsr432Serbianzh6972Chinesetr7193Turkishchr7911Cherokeeen4180Englishiu1756 Inuktitutth1662Thaies1187Spanishiu7185 Inuktitutru1240Russianen3393Englishja2479Japanesebn6272Banglasr6722Serbianbn5463Banglaeo1391 Esperantoth7834Thaifr1741Frenchtr300Turkishen1850Englishchr4975Cherokeeccp7348Chakmael6186Greeksr8138Serbianchr4321Cherokeezh3139Chinesetr6832Turkishchr5651Cherokeees1341Spanishbn1085Banglaeo5723 Esperantofr561Frenchiu8009 Inuktitutbn7612Banglael6853Greekja5479Japanesezh5459Chineseja7790Japanesebn7582Banglaccp6632Chakmaccp6185Chakmabn7013Banglabn5466Banglaccp2705Chakmachr817Cherokeefr7025Frenchth1505Thaifr11Frencheo5450 Esperantofr3333Frenchfr7960Frenchbn6264Banglaccp6411Chakmaen5050Englishel4410Greekiu3965 Inuktitutchr3537Cherokeeiu6995 Inuktituteo32 Esperantoccp962Chakmaes6187Spanishchr3847Cherokeees6339Spanishfr2839Frenchfr4106Frenchccp2669Chakmatr12Turkishsr7787Serbianeo8041 Esperantoiu1693 Inuktitutsr2222Serbiansr2568Serbianiu4529 Inuktitutzh6932Chinesetr7478Turkishccp694Chakmatr3140Turkishbn449Banglaar1752Arabicru1121Russiansr4136Serbiansr311Serbiantr4340Turkishzh6978Chineseen2817Englishen2345Englishja847Japaneseru5151Russianchr347Cherokeebn4596Banglaes5063Spanisheo2094 Esperantotr4454Turkishchr7329Cherokeeen6620Englishiu6788 Inuktitutzh2628Chineseel5637Greekbn4535Banglaen5550Englishsr6037Serbianen3842Englishiu1425 Inuktitutiu1739 Inuktituttr6548Turkishja3532Japanesear3480Arabicccp2376Chakmafr134Frenchzh2871Chinesechr2462Cherokeeiu6501 Inuktitutja6136Japanesear4738Arabiciu6553 Inuktitutzh2594Chinesebn3927Banglael5479Greekiu615 Inuktitutbn6685Banglafr7728Frenchth1499Thaiar1673Arabicccp128Chakmaeo2420 Esperantozh631Chineseccp7407Chakmaja993Japaneseccp268Chakmaen3895Englishel3482Greekccp1111Chakmaru1049Russianru2190Russiantr4375Turkishtr5058Turkishel1267Greeken2767Englishiu868 Inuktitutsr464Serbianen1095Englishccp8130Chakmael3868Greekeo6321 Esperantoel6178Greekfr1964Frenchru2866Russianccp4658Chakmachr630Cherokeees578Spanishsr1227Serbianiu2272 Inuktituteo2433 Esperantosr4701Serbiansr7365Serbianfr3025Frenchzh78Chinesees5816Spanishar210Arabicccp606Chakmafr6917Frenchru3009Russiansr4110Serbianzh6110Chineseen3656Englishiu714 Inuktitutccp5804Chakmabn3682Banglaccp23Chakmaru2664Russianel2446Greeksr5054Serbianchr4864Cherokeeel738Greekfr3587Frenches5635Spanishth5208Thaifr6495Frenchccp4951Chakmaja5516Japaneseth2996Thaieo6742 Esperantozh6294Chinesefr3136Frenchel6454Greekeo3709 Esperantoru792Russianja4333Japaneseeo3617 Esperantozh2638Chineseeo2309 Esperantoth7396Thaies7221Spanishsr6496Serbianen1728Englishth7782Thairu7910Russiansr2956Serbianel4982Greekeo4809 Esperantoth2122Thaiccp3461Chakmachr7835Cherokeeen6133Englishiu2367 Inuktitutbn1074Banglath1280Thaith4097Thaitr506Turkishar8070Arabicja7573Japanesetr2940Turkishen5523Englishfr7581Frenchru7058Russianeo3595 Esperantoccp5099Chakmazh7296Chinesefr8084Frenchiu7198 Inuktitutiu3542 Inuktituteo5519 Esperantoth2169Thairu7804Russianth3437Thaiiu5002 Inuktituten6686Englisheo1437 Esperantobn3106Banglasr5722Serbianiu129 Inuktituteo2879 Esperantoiu688 Inuktitutru2784Russianfr8158Frenchiu6920 Inuktitutbn3497Banglazh1489Chineseru6447Russianfr4979Frenchbn2299Banglasr2462Serbiantr6776Turkishru3266Russianeo7002 Esperantoccp500Chakmael7837Greekbn3597Banglasr1895Serbianiu1186 Inuktituteo7249 Esperantoja4255Japaneseel3346Greekeo2234 Esperantosr6680Serbianzh5795Chineseel293Greekar3699Arabicen27Englishbn2178Banglaru7276Russiansr6873Serbianja3201Japanesebn6008Banglaar8156Arabicsr895Serbianth275Thaith7496Thaiar51Arabices6568Spanishfr2701Frenchel5464Greekes2473Spanishel4029Greekeo1656 Esperantoiu6571 Inuktitutja7889Japanesechr5720Cherokeeeo1335 Esperantobn4558Banglazh5911Chineseeo2985 Esperantoel7695Greekeo895 Esperantoes2918Spanishiu7828 Inuktitutru2850Russianbn2236Banglaen1703Englishtr3854Turkishel2988Greektr5727Turkishtr6848Turkishiu442 Inuktitutzh668Chineseru3443Russianfr3243Frenchchr7598Cherokeefr6556Frenchru3503Russianru2551Russianel3794Greeken6201Englishth3840Thaifr1771Frenchen7177Englishccp1277Chakmatr5106Turkishsr7690Serbianth891Thaibn5536Banglaes4610Spanishzh3530Chinesefr6906Frenchth1634Thaieo1570 Esperantoth1337Thaibn3940Banglabn6744Banglaen691Englishccp1388Chakmafr5702Frenchar7857Arabictr7602Turkishru3067Russianiu1859 Inuktitutchr6413Cherokeebn6993Banglaiu3683 Inuktitutsr5581Serbianbn5293Banglatr7831Turkishiu6751 Inuktitutsr5408Serbiansr7890Serbiantr1291Turkishzh3588Chineseja2093Japanesear2222Arabicbn7527Banglafr4611Frenchzh2674Chinesees2054Spanisheo1419 Esperantofr7324Frencheo6100 Esperantoru760Russianiu3980 Inuktitutar3747Arabices3953Spanishzh7854Chinesesr3380Serbianeo5483 Esperantoen7570Englishja117Japaneseel4405Greekchr1663Cherokeebn1908Banglazh391Chineseccp841Chakmazh5631Chineseja42Japanesees2399Spanishiu3424 Inuktitutru4323Russiantr6541Turkishbn2588Banglath1565Thaien6363Englishsr7661Serbianchr3150Cherokeeth6794Thaith44Thaith7489Thaies2357Spanishtr2930Turkisheo2244 Esperantoja7050Japanesesr5326Serbianel366Greekar5015Arabicchr2566Cherokeees3127Spanishen1280Englishes7356Spanishru6614Russiansr5051Serbiansr6007Serbiantr6782Turkishen4261Englishsr1086Serbiantr7358Turkishiu566 Inuktitutccp1028Chakmaccp2525Chakmaiu7119 Inuktitutes8076Spanishar7045Arabiciu2813 Inuktitutfr4697Frenchru3135Russiansr6081Serbianth5461Thairu156Russianccp2440Chakmath7832Thaibn609Banglaru1908Russianth87Thaieo7054 Esperantoar2184Arabices6032Spanishiu940 Inuktitutbn8148Banglaccp4898Chakmachr510Cherokeeiu734 Inuktituteo290 Esperantoes1785Spanishja1678Japaneseja564Japaneseiu3227 Inuktituttr5262Turkishru6091Russianfr5273Frenchtr4702Turkishfr3792Frenchzh7816Chineseccp4700Chakmabn2322Banglasr2740Serbiantr4911Turkishzh1143Chineseen8181Englishzh3495Chineseiu7451 Inuktitutja6974Japaneseeo3171 Esperantoeo7994 Esperantoar3416Arabices4496Spanishar3000Arabicel3765Greekeo804 Esperantoeo5297 Esperantofr1066Frenchfr1350Frenchfr2149Frenchccp4100Chakmachr808Cherokeesr3237Serbianel5186Greektr6845Turkishtr2141Turkishbn5731Banglaen6224Englishel2848Greekja2690Japaneseth6137Thaichr6298Cherokeechr3843Cherokeeiu1958 Inuktitutja7528Japaneseja3448Japanesechr2457Cherokeeen1431Englishfr5527Frenchel4619Greekzh1929Chineseccp2813Chakmabn5510Banglaja3694Japanesebn521Banglaja2267Japanesear4313Arabicbn5405Banglaar2200Arabiceo80 Esperantoel4819Greeken5904Englishchr2998Cherokeesr6131Serbianfr6791Frenchel3243Greekel6948Greekccp5608Chakmatr4491Turkishen4439Englishchr2799Cherokeeel4391Greekfr5666Frenchtr5970Turkishiu2929 Inuktitutbn3245Banglath2108Thaija218Japaneseja2261Japanesees3827Spanishen7904Englishen1820Englisheo2628 Esperantoru1603Russianru7225Russianel6377Greekchr2408Cherokeetr4047Turkishel1575Greeken3065Englishbn5343Banglachr5398Cherokeeiu3089 Inuktitutru4862Russianfr794Frenchiu556 Inuktitutfr6516Frenchzh5417Chinesees5975Spanishar1278Arabiciu2040 Inuktituttr359Turkisheo574 Esperantotr7375Turkisheo4397 Esperantochr1140Cherokeeen2988Englisheo7669 Esperantoes3632Spanishsr5349Serbianfr7529Frenchiu4917 Inuktitutel716Greeken4682Englishfr1039Frenchar6926Arabicsr4226Serbianen1037Englishzh4730Chineseel4725Greeksr3923Serbianel5467Greekbn5836Banglaccp3481Chakmachr4593Cherokeebn1694Banglaes2353Spanishfr6336Frenchsr2029Serbianth930Thaien6094Englishbn1044Banglael1891Greekth7533Thaiar7366Arabictr3027Turkishru7925Russianes3220Spanishes6929Spanishiu4430 Inuktituten7829Englishja681Japaneseeo1821 Esperantoes2397Spanishfr5518Frenchar2232Arabicsr6069Serbianeo7554 Esperantoccp3060Chakmatr1139Turkishfr5482Frenchzh4720Chineseen3556Englishar973Arabicccp4720Chakmaccp5472Chakmael6651Greekbn1798Banglath6429Thaieo643 Esperantochr5113Cherokeeen7581Englishiu2567 Inuktitutth3102Thaies2865Spanishbn3512Banglaru437Russiantr2401Turkishja6984Japanesebn1103Banglafr43Frenchzh5206Chineseiu3259 Inuktitutel7319Greekel4054Greeksr7236Serbianja3255Japaneseru7131Russianbn4545Banglazh7928Chinesees1687Spanishbn2243Banglaru461Russianccp4894Chakmafr2896Frenchsr7984Serbiantr2642Turkishth5712Thaiiu3304 Inuktitutccp4660Chakmaiu585 Inuktitutfr6345Frencheo4333 Esperantoel3691Greekja4853Japaneseru1030Russianth7196Thaibn3505Banglaen4828Englishel2011Greekchr899Cherokeear4644Arabicen5582Englisheo5626 Esperantoth3395Thaizh8090Chinesebn4549Banglath8005Thaien2217Englishzh3925Chineseja3783Japanesear6374Arabicbn5013Banglabn6004Banglachr5825Cherokeeen3728Englishfr1491Frenchzh6101Chineseth2120Thaieo7055 Esperantochr6614Cherokeetr7738Turkishccp5272Chakmaeo4118 Esperantoen3551Englishsr1459Serbianes655Spanishel859Greekfr2699Frenchja713Japaneseru5201Russianiu407 Inuktitutja5695Japanesetr6306Turkishes3534Spanishsr2985Serbianzh787Chineseiu2781 Inuktituttr7885Turkishfr6811Frenchth65Thaith1141Thaien596Englishchr6601Cherokeeccp311Chakmaes662Spanishiu6461 Inuktitutru2630Russianzh553Chinesefr6030Frenchfr1323Frenchth2234Thaieo4013 Esperantozh2493Chineseccp4473Chakmafr2065Frenchfr4126Frenchzh6102Chineseiu3828 Inuktitutbn5678Banglachr3220Cherokeees4337Spanishsr190Serbianel591Greektr6589Turkishzh4614Chinesetr5088Turkishru7196Russianru3890Russianbn7562Banglachr68Cherokeear5359Arabicar505Arabicja1841Japanesear6484Arabictr1219Turkishfr970Frenchsr4607Serbianzh3984Chinesees5733Spanishiu4608 Inuktitutsr2596Serbianzh2223Chineseth1175Thaitr4312Turkishen7169Englishbn7222Banglaeo5586 Esperantosr5441Serbianth3007Thaichr3694Cherokeeiu8078 Inuktitutes5853Spanishbn2197Banglafr6809Frenchzh5560Chinesesr6841Serbianth5764Thaiel5802Greeksr965Serbianru2964Russianfr4428Frenchja6217Japaneseel7465Greekes6354Spanishja4753Japanesear3269Arabicsr2168Serbiantr2995Turkishbn6548Banglael1070Greeken1313Englishfr7388Frenchzh1567Chinesees5567Spanishru2688Russianja2063Japaneseth8003Thaien107Englishen2173Englishiu3871 Inuktitutth5882Thaiar426Arabicar2526Arabictr1704Turkisheo6884 Esperantotr7321Turkishth4590Thaizh2557Chineseel8019Greekzh5732Chinesear256Arabicchr1667Cherokeeen372Englishar4389Arabicbn4629Banglatr3778Turkisheo6324 Esperantobn6247Banglaes6894Spanishzh4452Chinesebn1007Banglaar674Arabicar5299Arabicchr574Cherokeeccp2790Chakmaccp6161Chakmachr1438Cherokeefr4701Frenchel5569Greekiu731 Inuktitutja7104Japaneseiu6531 Inuktitutsr1923Serbiantr2649Turkishzh6195Chineseel2674Greeken6551Englishiu3170 Inuktituteo7985 Esperantochr7818Cherokeees4567Spanishru6692Russianchr1678Cherokeeja2271Japaneseru5092Russiansr3351Serbianbn4663Banglatr2966Turkishel6318Greekfr67Frenchfr5224Frenchiu1036 Inuktitutzh1722Chineseeo449 Esperantoccp7436Chakmaccp7515Chakmaar5797Arabiceo7180 Esperantosr7320Serbiantr8041Turkishtr1019Turkishchr6192Cherokeeen2934Englishes6993Spanishfr547Frenchsr7929Serbianth7539Thaies7644Spanishtr1814Turkishbn4966Banglaeo5901 Esperantoar6446Arabicsr2089Serbianar1860Arabicbn5447Banglaru5126Russianfr1923Frenchel7514Greekiu1339 Inuktitutchr5450Cherokeefr5458Frenchbn1055Banglaeo3747 Esperantoja3177Japaneseth6376Thaitr5190Turkisheo4462 Esperantosr6335Serbianen6681Englishsr2194Serbianru4143Russianccp5512Chakmazh2567Chineseccp408Chakmaiu4837 Inuktitutzh594Chinesezh3967Chinesesr5215Serbianen825Englishchr7298Cherokeeel949Greeksr7980Serbianen4884Englishfr5568Frenchzh6709Chinesebn3669Banglaiu2089 Inuktitutes7640Spanishth4206Thaiar4568Arabicfr1673Frenchth7346Thaien1977Englisheo3962 Esperantosr1276Serbianccp2586Chakmafr7518Frenchiu3622 Inuktitutiu6753 Inuktitutbn7446Banglachr3380Cherokeeel6488Greeken3238Englishar92Arabicru3771Russiansr2887Serbianel2948Greekeo3355 Esperantoeo6830 Esperantofr1390Frenchen4687Englishsr3148Serbiantr3306Turkishth7242Thaiiu2186 Inuktitutfr7145Frenchru3776Russianth3555Thaien7459Englishar4203Arabicen4459Englishru2103Russianar1378Arabicfr7132Frenchiu6398 Inuktituttr1263Turkishen7380Englishes6255Spanishccp6092Chakmabn234Banglaiu433 Inuktitutja4457Japaneseth954Thaichr3278Cherokeear4720Arabicar7771Arabicru3845Russianth4748Thaiel5963Greektr6788Turkishiu7270 Inuktituttr6019Turkishiu3499 Inuktituten2565Englishchr2003Cherokeeth6942Thaies901Spanishar1359Arabiczh6615Chineseccp6491Chakmasr4175Serbianzh5791Chinesezh7660Chinesefr5954Frenchel4026Greekeo59 Esperantoar7779Arabiceo2902 Esperantoeo7102 Esperantobn2788Banglath3752Thaieo3582 Esperantobn5286Banglabn6106Banglazh2408Chineseen7637Englishfr7939Frenchru5108Russianja8060Japanesees4270Spanishel1130Greekfr2043Frenchth7708Thaija6010Japanesebn3686Banglaiu4431 Inuktitutth978Thaifr1616Frenchtr5251Turkishchr5820Cherokeeru3205Russianeo2328 Esperantoth8108Thaibn5315Banglaja5542Japaneseen3267Englishiu3165 Inuktituttr3809Turkishtr6977Turkishen533Englishja2065Japaneseja7245Japaneseja207Japaneseja2933Japaneseth4432Thaiccp7555Chakmaccp1003Chakmaar3385Arabiciu1477 Inuktitutsr1337Serbianiu4739 Inuktitutbn2279Banglaes6102Spanishes7616Spanishfr3712Frenchiu5701 Inuktituttr7468Turkishiu2131 Inuktituten388Englishfr482Frenchzh5060Chineseiu5011 Inuktitutccp7473Chakmaccp1435Chakmabn3704Banglaes1032Spanishja5634Japanesefr1221Frenchth5910Thaiiu65 Inuktitutel2000Greekccp6915Chakmaeo3773 Esperantoru7923Russianfr2607Frenchsr4733Serbianja3814Japanesefr2927Frenchccp6661Chakmaeo5040 Esperantoes1698Spanishth2586Thaien6140Englishar7006Arabices4931Spanishru7296Russianel338Greekfr4290Frenchth7551Thaiccp5864Chakmaiu4256 Inuktitutru5665Russianel6334Greekes5940Spanishfr6618Frenchtr4941Turkishth4339Thaifr6050Frenchth1287Thaiar5753Arabiceo1900 Esperantoiu1121 Inuktitutar4195Arabicar4846Arabiczh1499Chineseccp6881Chakmaeo1176 Esperantoiu7098 Inuktituttr3156Turkishchr1983Cherokeear1060Arabicth3483Thaieo5916 Esperantoen6831Englisheo6561 Esperantoes1781Spanishtr6136Turkishbn6629Banglachr444Cherokeeja6932Japaneseru7461Russianiu5487 Inuktitutsr333Serbiantr2032Turkishccp4545Chakmaiu791 Inuktitutsr493Serbianbn7905Banglaeo8072 Esperantoen3792Englisheo6145 Esperantobn4468Banglachr2487Cherokeees5482Spanishfr6557Frenchfr2285Frenchen6148Englishel4471Greekja948Japanesechr1170Cherokeeen1603Englishen6063Englishar6734Arabicchr8041Cherokeeja789Japaneseeo373 Esperantoja1671Japaneseru4566Russianchr6411Cherokeeth2541Thaith5749Thaiccp1191Chakmaen3708Englishiu7285 Inuktitutccp739Chakmaen518Englishbn3132Banglachr5537Cherokeeel3154Greekeo4927 Esperantofr1492Frenchfr16Frenchth6876Thairu2322Russianchr241Cherokeeja5775Japanesezh1666Chineseeo7708 Esperantoen6674Englishccp698Chakmasr5483Serbianth3418Thaibn1733Banglath5141Thaiccp2629Chakmafr4619Frenchar4725Arabiciu1742 Inuktitutccp497Chakmael6525Greekth1878Thaien2249Englishsr1042Serbianja6540Japaneseth1529Thaifr1337Frenchchr4739Cherokeeel6295Greekja3090Japaneseen1363Englisheo6147 Esperantoru1888Russianiu4133 Inuktitutru5862Russiansr5008Serbianchr6374Cherokeeccp2599Chakmael2513Greekeo7247 Esperantofr189Frenches7272Spanishsr6701Serbianth607Thaith5052Thaitr5867Turkishja6323Japanesesr166Serbianar1465Arabicth1578Thaizh7756Chineseen4641Englishel5519Greekeo6798 Esperantoru1934Russianth4105Thaiccp5358Chakmazh6347Chinesezh1153Chineseel6160Greekbn6002Banglatr4915Turkishbn1758Banglatr3427Turkishru3385Russianru7177Russianeo4675 Esperantozh3853Chinesetr3183Turkishru1916Russianes630Spanishar5988Arabicccp2572Chakmaes6443Spanishchr1247Cherokeeiu6760 Inuktituttr3760Turkishar7130Arabicbn6379Banglabn3129Banglaen1124Englishes4981Spanishja1442Japaneseen2052Englishchr2673Cherokeetr4282Turkishccp3025Chakmaen6726Englishiu4058 Inuktitutar7079Arabicth2038Thaith6262Thaith7625Thaiccp1893Chakmazh8003Chinesezh5938Chinesees6570Spanishes7109Spanishtr1157Turkishtr3356Turkishsr2376Serbianccp5883Chakmaiu1033 Inuktitutja461Japaneseja3830Japaneseccp4988Chakmaes1570Spanishen200Englishchr3522Cherokeeel2901Greekar7381Arabicccp864Chakmaes6399Spanishel802Greekes6123Spanisheo5444 Esperantobn1086Banglaes4879Spanishiu924 Inuktitutja57Japanesesr3711Serbiansr3443Serbianel1389Greekeo1581 Esperantosr2320Serbianzh3042Chinesechr7091Cherokeeeo4909 Esperantoru3057Russiansr2083Serbianru4548Russianccp2652Chakmaar2579Arabicchr6891Cherokeesr701Serbianes5810Spanishsr4835Serbianes2991Spanishar5969Arabictr379Turkishar8037Arabicar8054Arabicru6657Russianes2277Spanishja1015Japanesezh5054Chineseth6475Thaichr593Cherokeear6188Arabiciu3850 Inuktitutzh1243Chinesetr5176Turkishes7318Spanishiu1253 Inuktitutsr619Serbianzh849Chineseen1663Englishar4660Arabicfr6079Frenchja6952Japanesear6881Arabicbn7157Banglatr7995Turkishbn2082Banglaeo3427 Esperantoja2738Japaneseiu2057 Inuktitutru1388Russianbn6671Banglabn3695Banglaccp1989Chakmaeo4620 Esperantoes2993Spanishes1779Spanishel5408Greekccp5909Chakmaja1853Japanesesr3804Serbianes1092Spanishru988Russianja4971Japaneseru2504Russianen1201Englisheo7915 Esperantozh7921Chineseel2378Greeksr473Serbianfr2815Frenchiu8074 Inuktitutzh4333Chinesetr2521Turkishfr2067Frenchar2824Arabicbn4494Banglaja7024Japanesear2001Arabicccp8141Chakmael7725Greekth3198Thaizh7987Chineseth2074Thaisr5678Serbianar6289Arabicja3256Japanesetr5615Turkishfr2325Frenchar3925Arabicfr4980Frenchja1289Japaneseja4729Japanesesr5642Serbianzh2275Chineseiu313 Inuktitutth5687Thaisr405Serbianccp711Chakmaccp3495Chakmael2798Greekiu4123 Inuktitutru363Russianchr6480Cherokeeja6658Japanesear1197Arabicccp3133Chakmabn359Banglaes5998Spanishbn8049Banglaeo7257 Esperantofr3640Frenchar3425Arabicchr4451Cherokeeen6632Englishzh7266Chineseccp7634Chakmasr4023Serbianeo1396 Esperantoru406Russianru3292Russianar3913Arabicel4253Greekccp6336Chakmaru4772Russianiu2978 Inuktitutru1113Russianfr1799Frenchar1043Arabicsr1663Serbianiu2447 Inuktitutiu5458 Inuktitutfr170Frenchar3635Arabicccp4608Chakmatr4624Turkishtr892Turkishtr7365Turkishiu1099 Inuktitutru7285Russianen6345Englisheo5801 Esperantoar6050Arabicbn992Banglaeo2855 Esperantoth6462Thaibn5290Banglaja1233Japaneseeo4328 Esperantoccp7059Chakmaar1592Arabiceo1919 Esperantoccp4406Chakmath3275Thaies4175Spanishbn4067Banglaar5817Arabicar784Arabices8054Spanishja1851Japanesesr5667Serbianccp7880Chakmatr5886Turkishfr6503Frenchar2280Arabiczh3625Chineseel3186Greekzh1769Chinesefr5129Frenchsr6854Serbianru2421Russianar2689Arabicja2403Japaneseel2206Greekes3655Spanishfr4025Frenchtr4394Turkishsr8075Serbianen90Englishja5180Japaneseeo3060 Esperantotr5233Turkishar4388Arabices580Spanishja5231Japanesezh6605Chineseen6668Englishccp3072Chakmaeo6987 Esperantotr6149Turkishth3308Thaichr4934Cherokeesr2791Serbianchr7754Cherokeeel1679Greekbn4782Banglaeo458 Esperantotr7452Turkishth2250Thaies2123Spanishar5035Arabicbn8065Banglaccp3476Chakmaccp4376Chakmaen7984Englishchr7035Cherokeees219Spanishth7947Thaibn2511Banglafr4994Frenchtr2570Turkishzh1055Chinesebn7859Banglaru344Russianru2058Russianth7615Thaisr2084Serbianzh3347Chineseen6366Englishth4107Thaitr2742Turkishbn2796Banglaes1235Spanishbn4569Banglasr7214Serbianchr5993Cherokeefr4739Frenchiu6312 Inuktitutel658Greekbn1030Banglachr3200Cherokeeja1040Japanesezh6003Chinesebn860Banglazh5414Chineseiu2099 Inuktitutja4874Japaneseeo2261 Esperantoen5047Englishja4678Japaneseth1405Thaizh2916Chinesefr6691Frencheo4721 Esperantobn3514Banglaes3180Spanishbn1411Banglabn6331Banglachr5446Cherokeees6652Spanishzh7498Chineseel4291Greekes4913Spanishar933Arabicccp3877Chakmaes5382Spanishccp1517Chakmaccp3097Chakmaes2546Spanishtr3564Turkishes6482Spanishsr3716Serbianth4220Thaien1161Englishru834Russianbn6700Banglaja2748Japaneseel3067Greekes7659Spanishiu3519 Inuktitutsr3901Serbiansr7225Serbianar562Arabicchr6210Cherokeesr2869Serbiansr1621Serbianeo4386 Esperantosr6990Serbianru4697Russianen3025Englishsr3124Serbianel2294Greeken7841Englishiu6620 Inuktitutth3727Thaizh3928Chineseja1490Japaneseru5039Russianel3416Greekar6262Arabicen4531Englishru5676Russianccp862Chakmaja6350Japanesechr6094Cherokeeiu1696 Inuktitutfr1470Frenchru6236Russianru6860Russiansr4199Serbiansr4210Serbianfr5946Frenchth8093Thaiiu3923 Inuktitutchr3676Cherokeeen7189Englishen3049Englishfr296Frenchsr6528Serbianzh3326Chinesezh5347Chinesezh6997Chineseen2546Englishzh4165Chineseja6130Japanesesr6837Serbianfr7338Frenchen4262Englishru1954Russianiu7203 Inuktitutes4716Spanishja2939Japanesebn7593Banglaiu5581 Inuktitutru4946Russianja5461Japaneseja7643Japaneseen1225Englishbn5953Banglael3138Greekchr425Cherokeear6117Arabices6061Spanishfr2273Frenchbn4985Banglafr6692Frenchru7533Russianfr732Frenchth2726Thaizh3479Chineseeo3039 Esperantofr225Frenchja3007Japanesefr4690Frenchth361Thaizh7153Chinesebn4744Banglabn4044Banglaiu752 Inuktitutru4000Russianccp1078Chakmaeo7896 Esperantoccp4481Chakmaccp7228Chakmaeo1636 Esperantoeo2596 Esperantoeo5129 Esperantoes2576Spanishiu925 Inuktitutth5613Thaitr7472Turkishzh5041Chineseel5214Greekccp1903Chakmaccp718Chakmaen2882Englishiu2356 Inuktitutccp4413Chakmath2083Thaitr5637Turkishel2041Greekfr2097Frenchru5044Russianth6674Thaith7934Thaith1886Thaies1881Spanishes545Spanishbn3312Banglatr1134Turkishja1672Japanesetr1792Turkishth7233Thaichr2671Cherokeeen5424Englishth7895Thaiel1036Greekiu1898 Inuktituten6406Englishzh7740Chineseen3116Englishbn2629Banglaiu1378 Inuktitutes5152Spanishth1065Thaibn4759Banglaru2062Russianel6563Greekeo4961 Esperantoes3976Spanishen7247Englishbn2345Banglachr7048Cherokeechr7313Cherokeear729Arabicfr4508Frenches3450Spanishzh6116Chineseth2046Thaiar246Arabicchr2798Cherokeees7171Spanishen3560Englishchr6947Cherokeeru4929Russiantr6190Turkishel86Greeken1587Englishfr4765Frenchsr3017Serbianja5745Japaneseccp4748Chakmabn310Banglaiu7682 Inuktitutiu7684 Inuktituteo8029 Esperantozh2324Chinesefr245Frenchru2653Russianiu3196 Inuktitutth5577Thaitr343Turkishru2474Russiansr7492Serbianth5905Thaies4928Spanishes5937Spanishth4957Thaiccp2697Chakmachr4326Cherokeeiu3141 Inuktitutccp3139Chakmaes4960Spanishen4631Englishes2959Spanisheo1161 Esperantoja674Japanesezh4422Chineseccp520Chakmaiu7466 Inuktitutchr893Cherokeeth7072Thaitr553Turkishccp5811Chakmaru1078Russiansr6454Serbianen4750Englishbn545Banglachr1512Cherokeechr2429Cherokeear5385Arabicel6794Greekja2794Japaneseth1385Thaitr1001Turkishtr6770Turkishzh5405Chineseeo7409 Esperantoen2059Englishar3424Arabices1121Spanishes4654Spanishiu7490 Inuktitutth818Thaiel6654Greekbn7360Banglael380Greekel2365Greekeo94 Esperantoja7544Japaneseru7390Russianar3485Arabicar1234Arabicru6668Russianar3133Arabicfr1438Frenchth2115Thaisr5398Serbianzh6384Chineseel1981Greekeo5087 Esperantoja6247Japanesezh5874Chineseeo6974 Esperantochr7297Cherokeesr650Serbianbn6718Banglachr697Cherokeeeo3593 Esperantoccp3776Chakmaru2863Russianeo6492 Esperantobn4252Banglaja1586Japanesesr6034Serbianiu708 Inuktitutsr7270Serbianeo7885 Esperantoeo6929 Esperantoccp7343Chakmaar4064Arabicsr2291Serbianel6368Greekth7842Thaisr1690Serbianen2112Englishfr4570Frenchja6862Japaneseiu7904 Inuktitutiu2406 Inuktitutfr5572Frenchja6731Japaneseth3559Thaies4418Spanishru7553Russianja4393Japaneseiu4628 Inuktitutel2956Greekiu5293 Inuktituteo1737 Esperantofr6114Frenchccp5642Chakmaccp5075Chakmaiu1810 Inuktituteo1405 Esperantoen7702Englishth563Thaibn7166Banglath7110Thaisr118Serbianzh4938Chinesesr4903Serbianccp5604Chakmaru99Russianel1433Greekbn5316Banglaccp4188Chakmafr6887Frenchbn6578Banglath1714Thaiel6551Greekchr1000Cherokeear5793Arabiczh5745Chineseeo1454 Esperantochr2260Cherokeeeo7483 Esperantoccp297Chakmaen2412Englishth6950Thaiiu4966 Inuktitutes5157Spanishar5695Arabiciu7232 Inuktitutel1906Greekes312Spanishth4754Thaibn2350Banglasr515Serbianen3754Englishes2161Spanishfr5333Frenchzh834Chineseiu355 Inuktitutiu4219 Inuktitutiu1825 Inuktitutth143Thaija7009Japaneseiu2300 Inuktituttr3671Turkishsr3701Serbianth7347Thaifr267Frenchccp1560Chakmael2604Greekchr3580Cherokeeru6555Russianen3338Englishar6651Arabicchr7545Cherokeesr7059Serbianbn4323Banglael2102Greeksr6559Serbianeo7260 Esperantosr3960Serbianes2403Spanishja1693Japanesees7894Spanisheo6494 Esperantozh7223Chinesefr595Frenchccp397Chakmath6309Thaifr5998Frenchchr3906Cherokeezh6197Chinesear7284Arabicel7586Greekeo5552 Esperantoes2105Spanishsr2608Serbianen244Englishja2473Japaneseen5346Englishsr1059Serbianes764Spanishen8154Englishar2862Arabicccp352Chakmael837Greekes949Spanishsr2388Serbianar3546Arabicar7255Arabicbn2431Banglatr4190Turkishzh4837Chineseiu1257 Inuktitutel5265Greekth501Thaiel2077Greekel2837Greekar2314Arabiceo6642 Esperantotr3995Turkishiu5820 Inuktitutar2661Arabictr5273Turkisheo880 Esperantoes2155Spanishbn3313Banglachr5591Cherokeees8124Spanishiu5460 Inuktitutiu7536 Inuktituten7402Englishsr5762Serbianar1824Arabicfr4350Frenchiu1208 Inuktitutccp7092Chakmaar4860Arabicel7168Greekru3720Russiansr4120Serbianen6000Englishru4012Russianbn1518Banglafr4385Frenchsr5825Serbianiu4229 Inuktitutzh1986Chinesees3566Spanishtr3385Turkishchr4083Cherokeetr5971Turkishel8112Greekja7875Japanesezh4603Chineseccp7502Chakmaar4220Arabicchr527Cherokeeen302Englishen1073Englishes525Spanishzh2008Chineseen5818Englishccp4445Chakmaar6085Arabicth5422Thaith6878Thaiar3380Arabicbn3834Banglabn3751Banglath5520Thaibn1781Banglaes947Spanishes2114Spanishru2017Russianru2142Russianeo4697 Esperantobn3991Banglaccp178Chakmath6479Thaien3633Englishtr3576Turkisheo8141 Esperantoccp3450Chakmaru386Russianen6708Englishel7072Greekja5708Japaneseiu4972 Inuktitutccp6955Chakmaeo6052 Esperantoiu4579 Inuktitutsr3963Serbianeo7959 Esperantoel2913Greekth7945Thaien7147Englishar1690Arabicchr1577Cherokeeiu5012 Inuktitutja2790Japanesechr2531Cherokeesr6516Serbianccp7738Chakmath5640Thaieo4114 Esperantochr256Cherokeefr6351Frenchth6508Thaija2827Japanesechr2257Cherokeefr798Frencheo868 Esperantofr3164Frenchen2508Englishja397Japaneseen2245Englishen5805Englishbn5738Banglaeo2289 Esperantoar1269Arabiciu5918 Inuktituttr1091Turkishchr1346Cherokeezh80Chinesezh4213Chinesechr5596Cherokeeeo7748 Esperantoeo900 Esperantofr2220Frenchja2425Japaneseth1483Thaiel2073Greekes3686Spanishar2666Arabiczh4637Chinesebn4140Banglaeo6314 Esperantoar1617Arabicccp7400Chakmabn2964Banglaen5514Englishru6656Russianes3144Spanishel956Greekes3763Spanishja102Japaneseen7932Englishes4803Spanishes1137Spanisheo4906 Esperantoes6966Spanishar8003Arabicfr692Frenchfr5123Frenchfr6877Frenchfr7910Frenchru2725Russianccp5486Chakmafr1693Frenchzh905Chinesezh2973Chinesezh3564Chineseen2789Englishru8085Russianbn8140Banglaes2650Spanishiu2100 Inuktitutccp262Chakmaeo7537 Esperantoeo7406 Esperantozh873Chinesefr5019Frenchel7680Greekeo6044 Esperantoru3296Russiansr255Serbianiu5840 Inuktituttr5722Turkishel2238Greekzh7870Chinesebn189Banglatr22Turkishar7920Arabicsr2390Serbianchr5315Cherokeeel1877Greekel3604Greektr4551Turkishzh2449Chinesezh1244Chineseth1790Thairu313Russianchr6612Cherokeear1108Arabicchr1360Cherokeesr2095Serbianel4877Greeksr270Serbianja3246Japanesezh7563Chineseru1897Russiansr4728Serbianbn4895Banglazh1239Chinesezh4867Chinesees1742Spanishchr7703Cherokeesr7559Serbiansr1203Serbianeo627 Esperantotr2961Turkishth5250Thaiccp7345Chakmazh2735Chinesezh6649Chinesesr7352Serbianbn6132Banglachr3090Cherokeeel3892Greekar6557Arabiczh1644Chinesesr7722Serbianes5212Spanishchr1731Cherokeeru68Russianbn2422Banglachr118Cherokeesr5997Serbianel401Greekccp7042Chakmaja1827Japanesear4349Arabiciu4703 Inuktitutja4931Japanesees7496Spanishel1505Greekru5171Russiantr7450Turkishru3240Russianzh4347Chinesesr3639Serbianth6035Thaizh4721Chinesees1903Spanishzh2905Chinesebn602Banglaeo6091 Esperantoth5916Thaisr7645Serbianru3657Russianru4055Russianzh4304Chinesefr4174Frenchsr7961Serbianes2771Spanishen3490Englishen5282Englishes8161Spanishes547Spanishfr8053Frenchiu5027 Inuktituten5593Englishru4114Russiansr6774Serbianel4511Greekja1357Japaneseel2605Greekccp537Chakmachr1515Cherokeeen7722Englishru3728Russianchr3022Cherokeechr3141Cherokeeth6241Thairu7304Russianzh8034Chinesebn3749Banglazh1663Chineseel2192Greekel7867Greekzh6194Chineseiu7522 Inuktitutja2461Japanesetr7526Turkisheo7498 Esperantoeo5888 Esperantoth484Thaija3603Japanesear7467Arabicchr332Cherokeeiu1352 Inuktitutzh3469Chinesetr825Turkishar7136Arabictr3099Turkishel870Greeken5445Englishzh3122Chineseen4415Englishccp7903Chakmael1753Greekiu6991 Inuktitutes1061Spanishes5317Spanishar7637Arabicth5623Thaitr6858Turkishbn4769Banglatr8135Turkishru7342Russianiu3358 Inuktitutsr4240Serbianth5245Thaitr2971Turkishth7867Thaichr1910Cherokeeiu6854 Inuktitutar706Arabicccp3583Chakmaiu6693 Inuktitutbn334Banglaru7797Russianru4632Russianchr4776Cherokeeeo5409 Esperantoru1097Russiansr235Serbianes1090Spanishsr637Serbianbn3084Banglaja834Japaneseel7667Greekth7617Thaibn5990Banglaiu3453 Inuktitutccp7497Chakmaar3727Arabicbn2669Banglachr6392Cherokeeeo1501 Esperantochr2167Cherokeeth3397Thaieo323 Esperantobn723Banglaar4145Arabicbn1995Banglaes4611Spanisheo2662 Esperantofr4234Frenchfr4272Frenchru1303Russianeo5257 Esperantoen2805Englishar6877Arabicel2746Greekja7450Japaneseru308Russianfr3446Frenchru7943Russianar6266Arabicar272Arabices7404Spanisheo4643 Esperantoar5978Arabicar877Arabicbn7901Banglafr3579Frenchiu4122 Inuktitutsr3250Serbiantr7359Turkishsr6924Serbianzh6047Chinesetr5691Turkisheo3600 Esperantoja636Japaneseccp6031Chakmath7946Thaibn5866Banglaiu1252 Inuktitutiu5508 Inuktitutsr3087Serbianja2936Japanesear5937Arabicel7604Greekeo3404 Esperantoel2360Greekchr3995Cherokeees1364Spanishccp4264Chakmaiu5968 Inuktitutfr2993Frenchsr4042Serbianfr501Frenchel4629Greekeo3373 Esperantoccp3372Chakmaes2608Spanishru1022Russianccp1997Chakmaccp1006Chakmachr6134Cherokeesr5443Serbianen7814Englishja4997Japaneseel2569Greekel2529Greekeo5882 Esperantoen2471Englishen3313Englishfr2620Frenchccp4830Chakmath7321Thaichr6604Cherokeeja2282Japaneseiu1452 Inuktitutth1061Thaitr3137Turkishja4711Japanesetr3709Turkishbn7840Banglaar2626Arabicccp826Chakmaccp3924Chakmaen3603Englisheo5117 Esperantoccp4479Chakmaja7601Japaneseru1215Russianth3478Thaiel5057Greeksr4777Serbianbn7333Banglath6840Thairu5148Russianccp4762Chakmaru410Russianzh1726Chinesechr5945Cherokeeeo2388 Esperantochr3861Cherokeees272Spanishfr3576Frencheo8146 Esperantobn752Banglaar571Arabicbn995Banglaccp1532Chakmaiu5846 Inuktituttr4973Turkishfr1120Frenchar5630Arabicccp2777Chakmaes254Spanishja7086Japaneseja45Japanesesr7712Serbiantr2583Turkishzh6636Chineseja7730Japanesear5917Arabicbn5394Banglaes1059Spanishru4895Russianeo349 Esperantoja8141Japaneseiu663 Inuktitutbn6939Banglaeo2475 Esperantotr2414Turkishchr5572Cherokeeru941Russianchr2261Cherokeezh1146Chinesear2507Arabicel814Greekja3963Japanesetr5017Turkishen5701Englisheo7618 Esperantobn2142Banglaru78Russianfr7449Frenchel6234Greekiu7146 Inuktitutiu4321 Inuktitutth1936Thaibn619Banglath1857Thaizh992Chineseiu5162 Inuktitutes7278Spanishchr3612Cherokeezh7575Chineseru6871Russianja8144Japanesesr1131Serbiantr7163Turkishchr156Cherokeeel2809Greekchr1879Cherokeesr6809Serbianth6957Thairu8005Russianchr8093Cherokeeeo7660 Esperantoar7278Arabicel3464Greekeo2009 Esperantosr3408Serbianeo4496 Esperantoes6598Spanishsr859Serbianes2544Spanishar2246Arabicbn4294Banglachr364Cherokeeja4448Japaneseiu526 Inuktituttr2263Turkishbn6318Banglaja1494Japanesesr6861Serbianar1067Arabicsr3247Serbianar7224Arabicel7008Greekth6061Thaitr1919Turkishccp4436Chakmaes101Spanishtr2806Turkishbn8029Banglaeo3999 Esperantoth7550Thaichr1831Cherokeechr4457Cherokeezh3524Chinesechr4544Cherokeezh2025Chineseru4189Russianbn7201Banglafr2182Frenchchr1027Cherokeees7321Spanishja4266Japanesezh1669Chineseccp334Chakmachr4668Cherokeezh5209Chineseiu735 Inuktitutru3808Russianen7304Englishbn4836Banglaja6726Japaneseth5685Thaizh236Chineseen7918Englishzh6858Chineseiu8139 Inuktituteo3234 Esperantotr5572Turkishfr7244Frenchchr7353Cherokeeja6187Japanesear5719Arabicth7621Thaifr5865Frenchen441Englishes5068Spanishes5669Spanishfr4593Frenchth6401Thaichr819Cherokeeeo7216 Esperantoja1102Japaneseeo4629 Esperantofr7607Frenchtr2072Turkisheo729 Esperantobn3983Banglaar1686Arabicsr2193Serbianel3817Greeksr5753Serbianen2291Englishchr4431Cherokeeru5563Russianja7824Japaneseiu3043 Inuktitutja223Japaneseiu6474 Inuktitutccp4077Chakmazh6857Chineseen7879Englishfr2617Frenchccp7377Chakmatr3006Turkishiu7984 Inuktitutja2957Japanesebn7961Banglabn269Banglath5917Thaija3212Japanesesr1395Serbianbn7016Banglaeo374 Esperantoar1891Arabicfr5205Frenchfr6041Frenchja4742Japanesechr855Cherokeefr4541Frenchru1122Russianzh7768Chineseel7535Greekeo5011 Esperantofr5711Frenchel1596Greekiu4004 Inuktitutccp5239Chakmaja1598Japaneseth3944Thaith1641Thaies6046Spanishtr6216Turkishzh453Chinesefr950Frenchfr2978Frenchiu2311 Inuktituttr1889Turkishar5960Arabicchr3129Cherokeeth2084Thaies1921Spanishccp743Chakmaes595Spanishchr5021Cherokeeen7179Englishfr6979Frenchchr7944Cherokeeru5364Russianth2191Thaifr5264Frenchru7443Russianccp4975Chakmabn4074Banglasr4811Serbiantr1801Turkishzh4073Chineseeo1072 Esperantotr2611Turkishth4974Thaizh4912Chinesees3440Spanishel4743Greekes2331Spanishzh7499Chinesesr7554Serbianru4884Russianth4399Thaibn33Banglaiu4012 Inuktitutsr2290Serbianel2574Greekzh4754Chinesear3731Arabictr7292Turkishja3917Japaneseja4299Japaneseeo1210 Esperantobn8057Banglaes1401Spanishth6420Thaien2267Englishja6293Japaneseru836Russianel4685Greekru1648Russiansr1755Serbianbn5751Banglaes783Spanishar4130Arabiciu7032 Inuktitutiu970 Inuktitutsr3975Serbianen8179Englisheo4946 Esperantoru3348Russianchr2109Cherokeeiu16 Inuktitutsr4157Serbianbn4114Banglaar5683Arabiczh853Chineseiu7695 Inuktitutru4443Russianiu828 Inuktitutsr6827Serbianel3853Greektr7963Turkishccp4505Chakmasr5479Serbianen6647Englisheo6835 Esperantoru6771Russiansr4434Serbianiu3930 Inuktitutchr2218Cherokeeja1489Japaneseccp5143Chakmatr6670Turkishth3063Thaibn1597Banglabn4498Banglaes6798Spanishfr1629Frenchja7321Japanesezh7303Chinesear866Arabicen7379Englishth5550Thaizh1596Chineseel671Greekzh4660Chineseel171Greeken2083Englishes5734Spanishes414Spanishes7463Spanishsr424Serbianar2078Arabicen304Englishja7585Japanesees6647Spanishchr6278Cherokeefr4170Frenchiu6978 Inuktituttr7112Turkishccp7741Chakmaen4505Englishtr1823Turkishtr3803Turkishes3375Spanishtr1346Turkishru1442Russianru6031Russianccp149Chakmaiu3772 Inuktitutsr151Serbiansr7232Serbianru3478Russianes3392Spanishiu3926 Inuktitutth3280Thaichr7401Cherokeees5569Spanisheo5955 Esperantoja1669Japaneseja4442Japanesees7741Spanishiu323 Inuktitutiu5139 Inuktitutsr188Serbianja5701Japanesear4818Arabices3197Spanishja1692Japaneseccp2369Chakmasr6169Serbianja6840Japanesechr163Cherokeeel4135Greeksr7054Serbianru6135Russianccp5235Chakmasr1620Serbianen1274Englishru7329Russianja1028Japaneseru3434Russianja7262Japaneseen871Englishja1941Japaneseru3832Russianen4188Englishth1493Thaisr217Serbianccp6000Chakmazh1443Chinesesr4113Serbianzh5190Chinesear3120Arabicchr4215Cherokeear5944Arabicbn4806Banglael5097Greekfr5307Frencheo6887 Esperantoccp3873Chakmafr6167Frenchja3178Japaneseru6987Russianja344Japaneseja5543Japanesesr4537Serbiantr5985Turkishsr5922Serbiantr5838Turkishccp4911Chakmath4221Thaitr6436Turkishbn4730Banglasr6311Serbianth6284Thaiel8103Greeken3583Englisheo1513 Esperantoja4848Japanesear1055Arabicchr5620Cherokeeja6416Japanesesr6125Serbianru1976Russianchr839Cherokeebn1336Banglaja3863Japanesees6214Spanishtr4136Turkishiu564 Inuktitutccp5944Chakmaiu4462 Inuktitutbn744Banglabn5025Banglaru5230Russianes33Spanishzh1412Chinesefr2944Frencheo6796 Esperantosr6767Serbiantr2050Turkishbn401Banglael3090Greekbn2347Banglasr3509Serbianccp2732Chakmafr5379Frenchar4537Arabicen7632Englishzh3970Chinesees2599Spanisheo1997 Esperantoiu5809 Inuktituten5315Englishsr6577Serbiansr6936Serbianzh3847Chinesebn5100Banglafr7192Frenchfr4148Frenchel3275Greekeo1428 Esperantoeo6907 Esperantoel6612Greekbn5622Banglaru5629Russianchr5071Cherokeeja378Japaneseja1506Japaneseja7892Japanesechr7579Cherokeees6909Spanishar4996Arabicth4246Thaifr5176Frenches6449Spanishel7001Greekbn5264Banglabn928Banglabn6285Banglaccp4858Chakmaeo2979 Esperantosr2679Serbianccp1135Chakmabn4588Banglafr1850Frenchfr2217Frenchzh1861Chineseel7223Greekth49Thairu6660Russiansr2579Serbianth7827Thaifr7157Frenchccp2998Chakmasr540Serbianeo5932 Esperantobn7531Banglafr5731Frenchja3843Japanesetr4142Turkishbn2920Banglachr7416Cherokeeja2074Japaneseja3773Japaneseel4123Greekbn1813Banglath4126Thaitr3493Turkishsr8047Serbianel7891Greekeo2693 Esperantosr2335Serbianchr7073Cherokeees1694Spanishen7070Englishtr5580Turkishzh681Chineseeo841 Esperantoja3816Japanesechr5934Cherokeeel5383Greekel7262Greeksr6032Serbianbn1425Banglazh3992Chinesechr7128Cherokeechr1705Cherokeeiu6925 Inuktitutchr7336Cherokeeth2125Thaibn1426Banglath6730Thaien7655Englishth4979Thaith4816Thaieo5248 Esperantoeo459 Esperantoru4195Russiansr4000Serbianeo1440 Esperantozh7937Chinesetr5098Turkishel1761Greekccp7437Chakmael2234Greekeo7860 Esperantochr6658Cherokeebn2661Banglaen820Englishru1973Russianel5387Greekccp2119Chakmaen5928Englishbn256Banglatr5537Turkishel665Greekes2799Spanishru1626Russianbn262Banglaar7656Arabicchr87Cherokeefr2355Frenchru1059Russianel2850Greekiu2225 Inuktituttr5350Turkisheo5784 Esperantoel3383Greekar2003Arabiciu3145 Inuktitutzh3535Chinesefr3070Frenchel3593Greekccp3934Chakmaja6769Japaneseeo400 Esperantotr1843Turkishes2Spanishfr2917Frenchth5082Thaiel1850Greekiu7907 Inuktitutbn2283Banglaes7285Spanishiu1338 Inuktituten7060Englishfr775Frenchiu5707 Inuktituttr5024Turkishja8121Japaneseel3489Greekes767Spanishth5418Thaiar1602Arabicccp1894Chakmael3823Greekja6117Japanesezh1924Chineseru2069Russianth8124Thaibn1458Banglaiu5806 Inuktituteo1240 Esperantochr1707Cherokeefr1720Frenchru1317Russianccp1643Chakmaccp3963Chakmael3004Greekar6935Arabices2855Spanishiu2891 Inuktitutfr6321Frencheo6496 Esperantozh7466Chineseel2062Greekes707Spanishth6235Thaiccp5273Chakmachr3437Cherokeebn4198Banglatr289Turkishbn1718Banglath2941Thaifr5582Frenchbn5153Banglath3831Thaizh879Chinesechr2517Cherokeeth5594Thaien6758Englishen3606Englishbn6750Banglaru857Russianchr929Cherokeeth3553Thaiiu8165 Inuktituteo2381 Esperantoth1015Thaitr5816Turkishccp2548Chakmabn5837Banglatr7898Turkishru4251Russianchr1166Cherokeefr2069Frenchfr5809Frenchja5954Japaneseiu4885 Inuktitutth7627Thaichr1644Cherokeeeo2032 Esperantoja6338Japanesebn1211Banglaru5315Russianja4150Japanesezh6973Chineseel7780Greeken986Englishen1047Englishfr6506Frenchen7945Englishja5314Japaneseiu4198 Inuktitutsr2981Serbiansr6021Serbianel8097Greeken1063Englishiu7471 Inuktituteo1677 Esperantoeo6447 Esperantozh6951Chinesezh5915Chinesees4573Spanishfr2667Frenchar2259Arabicsr7422Serbiansr4893Serbianru6646Russiansr1120Serbianzh5118Chinesees371Spanishchr4501Cherokeeru4887Russianeo4079 Esperantoccp7007Chakmael7412Greekiu7960 Inuktitutiu1164 Inuktitutru3907Russianen210Englishsr2181Serbianeo1251 Esperantoeo3847 Esperantoru7474Russianel2050Greekccp7919Chakmaar6818Arabicfr1052Frenchar2733Arabicsr6Serbianen7232Englishbn5789Banglaeo7706 Esperantosr6200Serbianen7777Englishccp796Chakmachr5224Cherokeeeo2100 Esperantoru4031Russiansr3909Serbiansr5006Serbianbn788Banglael2279Greekchr6703Cherokeetr7361Turkishja7146Japanesear1258Arabicchr344Cherokeeja7007Japanesear630Arabicccp1101Chakmatr6110Turkishtr7794Turkishel7723Greekzh6885Chinesebn2801Banglaru1468Russianru5310Russiantr997Turkishar3592Arabicru2197Russianes2675Spanishru2444Russianru2989Russiantr741Turkishen1231Englishru1789Russianes5659Spanishja1974Japanesees2126Spanishja7304Japaneseeo5199 Esperantoja4447Japanesetr2123Turkishar6166Arabicccp3748Chakmachr6582Cherokeeja1578Japanesesr674Serbianes632Spanishchr5685Cherokeeja1319Japanesetr6515Turkishsr5804Serbianchr2541Cherokeear2912Arabices641Spanishtr7610Turkishen7324Englishsr1024Serbianru1598Russianel6300Greekes153Spanishtr1812Turkishth5534Thaiar1949Arabicccp1217Chakmaes4555Spanishtr3339Turkishtr3414Turkishccp2597Chakmafr4813Frenchfr5420Frenchtr5994Turkishchr4402Cherokeeja43Japaneseth5367Thaitr3447Turkishth1295Thaibn7712Banglaiu4405 Inuktitutbn52Banglafr3977Frencheo213 Esperantozh1844Chineseeo1319 Esperantoth5724Thaiar3872Arabicth6592Thaiel413Greekes895Spanishtr1798Turkishar4873Arabicccp2522Chakmaccp6016Chakmaes1370Spanishtr6679Turkishen6755Englishbn6886Banglazh71Chinesezh2491Chineseru1607Russianbn5165Banglaiu1297 Inuktitutes4429Spanishja6407Japaneseen1092Englishes5113Spanishes3183Spanishiu1210 Inuktitutel4250Greeksr112Serbianru1454Russianfr5534Frenchtr7781Turkishel2879Greekfr6761Frenchccp6325Chakmaru7463Russianar2223Arabiciu2246 Inuktitutes1039Spanishar2038Arabicccp1569Chakmatr1797Turkishbn4761Banglafr2482Frenchsr8027Serbianchr7052Cherokeebn3815Banglachr6178Cherokeeru1419Russianzh1715Chinesear4025Arabicccp803Chakmatr4897Turkishsr5650Serbianes6266Spanishru4523Russianar8023Arabicru6817Russianth1783Thaisr2146Serbianccp204Chakmazh828Chineseth1438Thaies1635Spanishzh2560Chinesechr4631Cherokeear6292Arabicsr1281Serbianbn967Banglafr4608Frenchel4069Greektr7286Turkishzh3792Chineseru8104Russianiu7596 Inuktituttr2281Turkishtr374Turkishth5476Thaiiu343 Inuktituttr298Turkishen1289Englishfr7652Frenchsr5755Serbianchr431Cherokeees4722Spanishtr2798Turkishen1851Englishtr3034Turkishja2311Japaneseeo1622 Esperantoiu2091 Inuktitutbn5194Banglath6034Thaitr3549Turkishth6556Thaieo2893 Esperantochr3210Cherokeesr2177Serbiantr41Turkishen1690Englishes137Spanishru6112Russianzh985Chinesetr6260Turkishel2826Greeken6478Englishbn6480Banglael4168Greeken1213Englishth5701Thaiel4994Greekel1620Greekzh7264Chineseel3861Greekel7568Greekru3966Russianccp5631Chakmaccp6553Chakmabn7614Banglachr4585Cherokeeeo7310 Esperantoth1293Thaizh3730Chineseel3105Greekru8083Russianth960Thaiiu892 Inuktitutja901Japanesezh5941Chinesear618Arabicccp755Chakmaiu2717 Inuktituten7443Englishen2797Englishiu4213 Inuktitutja1718Japaneseel1405Greeksr2120Serbiansr3827Serbianbn7848Banglaen1842Englishsr8124Serbianiu3733 Inuktitutchr111Cherokeear2241Arabicja4635Japaneseja1056Japaneseel6092Greeksr6603Serbianbn6776Banglaja3743Japanesechr1482Cherokeeth868Thaies7619Spanishel2755Greekel5438Greekchr782Cherokeees885Spanishar363Arabicen6814Englishccp1790Chakmatr5423Turkisheo3982 Esperantoccp8125Chakmaiu1651 Inuktitutzh5907Chineseeo1394 Esperantofr3945Frenchchr31Cherokeefr6616Frenchen6498Englishiu6371 Inuktitutchr3257Cherokeees2406Spanishru3862Russianbn6415Banglasr1340Serbianel3939Greekes2791Spanishchr748Cherokeeen5850Englishsr4336Serbianar156Arabicsr8037Serbianes4438Spanishth3108Thaies7249Spanishccp6956Chakmazh2380Chineseel2792Greekja1796Japaneseel8140Greekbn5497Banglaru4390Russianiu5635 Inuktitutar1873Arabices2952Spanishbn437Banglael5745Greeksr4116Serbianfr513Frenchfr6077Frenchsr1903Serbiantr369Turkishen5167Englishzh667Chineseiu1527 Inuktitutchr769Cherokeechr5684Cherokeeiu1551 Inuktitutzh2197Chinesechr4915Cherokeezh6036Chinesefr2937Frenchbn997Banglaes6867Spanishiu3767 Inuktituttr1601Turkishchr2678Cherokeeccp1690Chakmaccp4900Chakmafr818Frenches699Spanishzh6768Chinesesr417Serbianbn3999Banglael5540Greekru6470Russianccp7640Chakmazh6699Chineseel2237Greekru1944Russiansr5705Serbiansr3792Serbianar5001Arabices7479Spanishar4066Arabicchr3262Cherokeeth6827Thaies7370Spanishth359Thaies4162Spanishtr7833Turkishfr3241Frenchiu2359 Inuktitutbn6115Banglaccp5995Chakmaar3857Arabicccp7046Chakmaar2510Arabicen5195Englishccp5929Chakmaiu854 Inuktitutiu1853 Inuktitutbn3998Banglaru6876Russiantr3120Turkishfr2375Frenchsr7971Serbianchr5184Cherokeetr4362Turkishtr4049Turkishtr4697Turkishen3710Englishja7180Japanesechr1853Cherokeefr2656Frenchar5452Arabicccp4581Chakmaar6051Arabiceo2315 Esperantoar2026Arabicel1268Greekiu2420 Inuktitutel4674Greekes6026Spanisheo4254 Esperantofr191Frenchfr194Frenchth2322Thaith2876Thaizh6311Chineseiu1933 Inuktitutbn1409Banglath3616Thaizh4061Chineseru716Russianccp3305Chakmath7458Thaitr1103Turkishfr5140Frencheo1089 Esperantoes5748Spanishes6675Spanishth4575Thaith6893Thaieo2918 Esperantozh4395Chineseja1374Japaneseja8131Japanesebn156Banglaeo2443 Esperantobn1622Banglaru3735Russianfr6793Frenchsr777Serbianccp2335Chakmaiu7153 Inuktitutccp5446Chakmazh7956Chinesear7884Arabicel5787Greekccp5537Chakmafr6109Frenchiu2880 Inuktitutsr4357Serbiansr70Serbiansr2958Serbianbn1293Banglaen7827Englishen2986Englishes4015Spanishja5019Japanesesr8176Serbianth6586Thaizh4486Chineseen8016Englishiu776 Inuktitutsr6072Serbianel2194Greekru3876Russianth4074Thaitr6964Turkishccp6461Chakmazh7613Chinesezh913Chinesezh1858Chinesesr4188Serbianen714Englishes3794Spanishar4792Arabicccp1431Chakmachr1613Cherokeees950Spanishja5222Japanesear1681Arabicar3828Arabicar262Arabiceo5793 Esperantoccp3842Chakmaen3498Englisheo682 Esperantoja2969Japanesezh4576Chineseth2015Thaith7893Thaieo7151 Esperantosr3992Serbianar4521Arabicth5518Thaiiu5173 Inuktitutel3730Greekccp2452Chakmael3377Greekes855Spanishfr1758Frenchccp6450Chakmazh570Chinesear5087Arabicja8134Japaneseru3669Russianes7941Spanishen6747Englisheo6572 Esperantoeo88 Esperantoeo394 Esperantosr6750Serbianbn6937Banglaeo6649 Esperantoen1557Englishsr6866Serbianfr5114Frenchen6426Englishbn7813Banglasr6747Serbianchr4273Cherokeebn7228Banglaru1870Russianel6825Greekiu3128 Inuktituteo1105 Esperantoru1891Russianes3573Spanishiu4373 Inuktitutja5822Japaneseru6346Russianth7332Thaibn4409Banglasr2439Serbianth2000Thaiar4481Arabicru481Russianes7646Spanishar1470Arabicja5430Japaneseru5372Russianiu423 Inuktituteo1837 Esperantoiu7794 Inuktitutzh5673Chinesebn1794Banglafr1894Frenchfr3228Frenchccp1373Chakmafr1854Frenchchr5765Cherokeebn6024Banglaen1153Englishccp3552Chakmazh6776Chineseen3108Englishar1299Arabicru343Russianchr3000Cherokeesr2638Serbianbn5333Banglafr6752Frenchja2996Japanesebn1186Banglaen6667Englishar5200Arabices1957Spanishru963Russianzh4534Chineseja470Japaneseth3047Thaifr7298Frenchchr3213Cherokeeeo4928 Esperantochr1240Cherokeefr2763Frenchzh648Chineseccp4431Chakmatr4463Turkisheo3796 Esperantoru6942Russiansr2868Serbianth4727Thaisr2202Serbianccp7814Chakmath1723Thaisr2852Serbianen6748Englishsr4531Serbianes5174Spanisheo7034 Esperantoccp367Chakmaccp7424Chakmachr3135Cherokeechr4098Cherokeees2221Spanishru5128Russianth7025Thaija5437Japaneseen705Englishiu2501 Inuktitutiu1992 Inuktitutth324Thaith5405Thaies7358Spanishes4324Spanisheo4855 Esperantobn7298Banglaen2763Englisheo7068 Esperantosr4621Serbianru1608Russianccp7546Chakmaen5262Englishen3644Englishbn7191Banglael6317Greekes4639Spanishtr367Turkishccp1729Chakmaiu6947 Inuktitutja6235Japaneseiu182 Inuktitutja2034Japanesetr1252Turkishar5940Arabicru559Russianar5277Arabicfr427Frenchsr3595Serbianiu544 Inuktitutchr338Cherokeesr5631Serbianar4880Arabiceo3792 Esperantoccp5200Chakmael6361Greekth4135Thaifr2740Frenchar2836Arabicen3170Englishzh342Chineseth3978Thaieo229 Esperantoiu4385 Inuktitutru4580Russianzh1304Chinesees2818Spanishiu3908 Inuktitutccp1850Chakmazh6887Chineseeo6912 Esperantoar6467Arabices7531Spanishsr6153Serbianes402Spanishar2582Arabicja2979Japanesesr4812Serbianes6526Spanishel290Greekeo3895 Esperantosr8017Serbianth6017Thaitr4009Turkishth3041Thaiccp3808Chakmaeo3303 Esperantotr6257Turkishth6091Thaizh3762Chineseccp6809Chakmaar7204Arabicccp6677Chakmazh5866Chinesezh3397Chineseccp1960Chakmaja6926Japaneseth7536Thaichr7208Cherokeeccp849Chakmachr6539Cherokeear4035Arabicbn352Banglath535Thaiccp937Chakmaru5318Russianzh6756Chineseiu7085 Inuktitutchr5384Cherokeezh4846Chineseja6196Japanesefr2450Frenches4754Spanishar6966Arabicchr7315Cherokeefr101Frenchiu1334 Inuktitutiu3974 Inuktitutccp5675Chakmaja7213Japaneseru8107Russianbn6314Banglabn6470Banglaru2577Russianccp6128Chakmath772Thaiccp3441Chakmaiu5511 Inuktitutel5708Greekeo5850 Esperantoen2818Englishes1875Spanishes4428Spanishiu760 Inuktitutru6772Russiansr6184Serbianen314Englishfr2997Frenchzh3091Chinesechr4030Cherokeeth5283Thaizh5174Chinesear4191Arabicel3172Greekfr994Frenchja4031Japaneseth2386Thaiiu5474 Inuktitutzh5543Chineseeo1166 Esperantoen2870Englishar3284Arabicel1561Greeksr3176Serbianru6736Russianeo3663 Esperantochr1283Cherokeeja4757Japaneseccp7671Chakmaccp2634Chakmatr3202Turkishfr605Frenchar1998Arabicja5194Japaneseen3301Englishccp3021Chakmael4708Greekiu6815 Inuktitutel7129Greektr7300Turkishzh1700Chinesebn3739Banglatr2842Turkishbn7561Banglaru1098Russiansr821Serbianzh5366Chineseja4698Japaneseen4912Englishzh1989Chineseeo4793 Esperantoth1697Thaiel7929Greekfr4797Frenchru7776Russianfr6635Frenchel6916Greekccp7606Chakmaen7911Englishzh6386Chinesetr3078Turkishtr3122Turkisheo2486 Esperantoes5551Spanishbn7405Banglasr22Serbianchr3483Cherokeeiu4001 Inuktituten7537Englishes3931Spanishes6475Spanishja1705Japaneseeo7700 Esperantoja2131Japanesear7019Arabictr6702Turkishes1198Spanisheo3087 Esperantoth188Thaibn3490Banglaccp2454Chakmasr2350Serbianja6199Japanesear5360Arabiciu1404 Inuktitutfr1252Frenchth2781Thaiiu6327 Inuktituteo427 Esperantoel4882Greekes3136Spanishsr846Serbianeo3437 Esperantoru1559Russiantr867Turkishtr5388Turkishel670Greeken3577Englishru7075Russianchr319Cherokeear3378Arabices3777Spanisheo5865 Esperantoth2988Thaiel8128Greekccp549Chakmael1457Greekfr1984Frenchar601Arabicth347Thaizh3322Chinesees4730Spanishccp2859Chakmaja3454Japaneseeo3532 Esperantosr3865Serbianchr417Cherokeefr5283Frenchar7128Arabicen982Englishtr2162Turkishchr5994Cherokeeccp7294Chakmasr1568Serbianchr2755Cherokeeeo5420 Esperantoel5195Greekel2Greekes8072Spanishbn133Banglazh5632Chinesefr4688Frenchccp2800Chakmaiu1726 Inuktitutfr4395Frencheo1936 Esperantoja2986Japaneseru2216Russiantr5717Turkishzh3398Chinesear3334Arabicen18Englishfr7746Frenchar7193Arabicbn7483Banglael4478Greekja6190Japaneseth5227Thairu3281Russianth7598Thaiel4565Greekzh7043Chinesebn4962Banglaar6263Arabices4946Spanishth830Thaiel5257Greekccp8019Chakmachr5515Cherokeeel2424Greekru5596Russianja1670Japanesesr2067Serbianchr2812Cherokeezh3405Chinesechr1629Cherokeechr4616Cherokeechr4923Cherokeees1545Spanishes6457Spanishiu976 Inuktitutru5409Russianru7728Russianth696Thaiar7859Arabicccp7810Chakmatr5521Turkishar1953Arabicchr4778Cherokeetr700Turkishfr3067Frenchchr1798Cherokeeja1858Japaneseel1925Greekbn654Banglaen7886Englishes2040Spanishes133Spanishccp1395Chakmachr3034Cherokeeiu2614 Inuktitutccp1650Chakmafr6888Frenchen2897Englishar125Arabices7950Spanishru5898Russianzh6359Chineseeo2177 Esperantoes4674Spanishzh4607Chinesebn5495Banglaar1614Arabicccp2139Chakmaja5463Japaneseth6255Thairu129Russianzh5056Chineseccp6607Chakmaeo7448 Esperantoccp4681Chakmaja4434Japaneseeo5412 Esperantoccp2676Chakmatr6314Turkishar3243Arabictr113Turkishar4194Arabiciu5183 Inuktitutes5277Spanishccp6597Chakmachr3936Cherokeees2665Spanishchr4941Cherokeeiu2853 Inuktitutar6813Arabiciu2591 Inuktitutfr2706Frenchel5164Greekel2144Greekth3427Thaibn2402Banglaja4326Japaneseel4012Greekchr4749Cherokeeeo5167 Esperantoes5309Spanishccp1273Chakmaes4011Spanishth5335Thaichr4940Cherokeesr5236Serbianchr2713Cherokeear2128Arabices5167Spanishsr3009Serbiantr5031Turkishzh2074Chineseja135Japaneseel2321Greekes7205Spanishsr2534Serbiansr5625Serbianel4556Greekes7275Spanishel2215Greekiu2731 Inuktitutfr6800Frenchiu3282 Inuktitutsr5345Serbiantr2970Turkishel3152Greeken7297Englishes7475Spanisheo243 Esperantochr3636Cherokeeeo7043 Esperantoth6158Thaieo2515 Esperantoar3991Arabicel189Greekth6477Thaies3818Spanishja6492Japaneseth7101Thaieo5369 Esperantobn7487Banglael742Greekzh3782Chineseel3071Greekar3332Arabicchr6673Cherokeeth5009Thaibn6064Banglatr5000Turkisheo3658 Esperantoeo2937 Esperantofr7526Frenchiu3218 Inuktitutth3819Thaiar7589Arabiciu4731 Inuktitutccp3302Chakmath2482Thairu7867Russianchr1518Cherokeezh4476Chineseen482Englishen504Englishfr2082Frenchth5633Thaisr839Serbiansr5744Serbianbn2984Banglatr4799Turkishja7873Japanesees7968Spanishar6599Arabicfr1676Frenchtr2619Turkishar1964Arabicth3834Thaisr4509Serbianth5585Thaieo6498 Esperantoeo7320 Esperantofr6764Frenchiu4284 Inuktitutbn4967Banglaen7976Englishccp2245Chakmaiu929 Inuktitutja7373Japaneseen3009Englishes7717Spanishiu1288 Inuktituten4979Englishiu4466 Inuktitutchr6597Cherokeees8034Spanishsr358Serbianfr6762Frenchja3869Japanesebn7826Banglaeo5021 Esperantoen6578Englisheo7877 Esperantoes2912Spanishen2482Englishar2616Arabicccp6365Chakmaen8037Englishru4265Russianth4908Thaiel1807Greekchr6784Cherokeees1961Spanishchr2426Cherokeeiu6709 Inuktituten4740Englishth7359Thaizh2202Chinesechr8068Cherokeeru2116Russianen3555Englisheo2329 Esperantoen145Englisheo2714 Esperantoiu4732 Inuktitutja809Japanesear7487Arabicru8134Russianeo6693 Esperantotr2494Turkishen4051Englishfr5383Frenchtr3146Turkishccp3605Chakmaes1849Spanishar5958Arabiciu4935 Inuktitutru2978Russianes3980Spanishfr8125Frenchccp5773Chakmachr1286Cherokeezh4345Chineseja4532Japaneseth110Thaitr7071Turkisheo123 Esperantoiu6615 Inuktitutja3980Japaneseel5755Greekeo5161 Esperantoja4480Japanesechr4893Cherokeees8069Spanishiu4901 Inuktitutiu1037 Inuktitutth538Thaith5817Thaiccp4078Chakmaiu4740 Inuktitutfr4421Frenchtr6313Turkishsr1836Serbianes3941Spanishzh7346Chineseiu2767 Inuktitutchr6118Cherokeeccp4151Chakmatr4952Turkishen4472Englishen5211Englishar7181Arabiceo3077 Esperantoeo4858 Esperantoes1564Spanishiu5843 Inuktitutel2686Greekbn3542Banglaeo4841 Esperantoth7476Thaifr66Frenchfr541Frenchen556Englishes4808Spanishchr6494Cherokeeen852Englishes1312Spanishiu3464 Inuktitutja2323Japaneseru14Russianru6608Russianja1018Japaneseru2815Russianccp3757Chakmafr5804Frenchja3732Japanesechr657Cherokeetr430Turkishes3272Spanishja4049Japaneseth7688Thaiiu5211 Inuktitutiu1746 Inuktituteo5080 Esperantobn4257Banglaja1447Japaneseth6172Thaisr7522Serbianiu1817 Inuktitutzh6856Chineseccp3650Chakmaja7518Japaneseja8000Japanesefr2599Frenchen1655Englishen5432Englishchr793Cherokeees8079Spanishchr7534Cherokeeel5872Greekel523Greekbn1595Banglaes5019Spanishel1072Greekchr3544Cherokeetr4574Turkishja230Japanesesr3379Serbianiu5167 Inuktituten2475Englishfr840Frenchen5946Englishel4176Greekiu5721 Inuktitutiu166 Inuktitutru4266Russianth4980Thaichr7181Cherokeeru3357Russianen6981Englisheo5078 Esperantoth4437Thaiiu5550 Inuktitutiu4396 Inuktitutru6120Russianccp7612Chakmasr1927Serbianar6457Arabicel7910Greekeo8163 Esperantoel7533Greekchr7158Cherokeees5676Spanishen1568Englishes2764Spanishth638Thaisr2811Serbianja5924Japanesebn7427Banglael1715Greekru5070Russiansr6979Serbianth1095Thaith1678Thaichr7279Cherokeear3008Arabicru1684Russiansr201Serbiansr2343Serbianel4409Greekel7814Greektr203Turkishja639Japaneseen3086Englishiu5578 Inuktitutes6435Spanishja6798Japanesechr4777Cherokeeru4869Russiansr3317Serbianzh7916Chineseccp8182Chakmaccp5378Chakmabn5538Banglafr4795Frenchfr304Frencheo6129 Esperantoiu907 Inuktitutsr7065Serbiantr8038Turkishccp894Chakmaen954Englishes937Spanishzh7835Chinesechr7269Cherokeeel4746Greeken2999Englishes5881Spanishtr3162Turkishsr2423Serbianiu5941 Inuktituten7583Englishja992Japaneseja3452Japanesetr4842Turkishchr3081Cherokeees1Spanishsr1144Serbianth574Thaibn2554Banglatr6330Turkishes1951Spanishth5918Thaiar7281Arabicbn1911Banglabn3905Banglachr5287Cherokeeeo7895 Esperantoes6477Spanishsr6387Serbianchr7575Cherokeefr5611Frenchja1681Japanesezh5873Chineseru7374Russiantr1469Turkishccp4599Chakmatr7020Turkishja8010Japanesefr6042Frenches4467Spanishbn5742Banglaes1011Spanishth5311Thaiel7767Greekiu5958 Inuktitutiu5175 Inuktitutccp3956Chakmael8159Greekja7447Japaneseccp6798Chakmatr6420Turkishth627Thaiar3430Arabicru2791Russiansr314Serbianar6657Arabicen1834Englishbn2503Banglaiu7610 Inuktitutbn8072Banglaja1130Japanesees2896Spanishen8121Englishar622Arabicru7637Russianth489Thaizh1076Chineseja2973Japaneseen3783Englishsr7280Serbianth6579Thaitr4458Turkishen143Englishel431Greekth7667Thaitr3899Turkishel1545Greekiu5924 Inuktitutsr4379Serbianeo5143 Esperantoar4736Arabicbn7151Banglath7663Thaieo1046 Esperantoen6476Englishiu1191 Inuktitutel5394Greektr7009Turkishja2907Japanesezh1548Chineseiu275 Inuktitutfr2790Frencheo648 Esperantoru8071Russianja2518Japaneseen5865Englishzh3966Chinesezh592Chineseeo6335 Esperantoru3755Russianccp4669Chakmaeo215 Esperantobn438Banglabn2288Banglael902Greekchr3159Cherokeefr6271Frenchtr7588Turkishzh193Chineseccp2591Chakmaeo7883 Esperantofr4494Frenchtr4306Turkishbn5415Banglafr228Frenchiu4158 Inuktitutsr536Serbianar5860Arabicel6308Greekja4978Japaneseth3268Thaies7857Spanishar1769Arabicchr1306Cherokeesr900Serbianiu3977 Inuktituten283Englishru2367Russianchr1528Cherokeetr2289Turkishja6161Japaneseeo6213 Esperantoth4007Thaith5037Thaifr3656Frenchfr423Frenchfr7260Frenchbn73Banglaja5931Japanesesr824Serbiansr212Serbiantr626Turkishiu7802 Inuktitutfr232Frenchsr2840Serbianccp2759Chakmazh5871Chineseja7271Japaneseth6728Thaiel6639Greekfr3102Frenchccp5881Chakmaiu6769 Inuktituttr3119Turkishfr1481Frenchtr2664Turkishar4173Arabiciu7540 Inuktitutja1165Japanesezh6941Chinesechr2256Cherokeezh2430Chinesesr7402Serbianiu5669 Inuktituteo1857 Esperantochr2401Cherokeees6977Spanishfr1161Frenchchr1002Cherokeeiu5417 Inuktitutchr5022Cherokeetr223Turkishsr1090Serbianru6848Russiansr711Serbianbn3033Banglazh1281Chineseru4330Russianeo2618 Esperantoiu4374 Inuktitutel3802Greekeo1073 Esperantoel4198Greekar330Arabicfr4530Frenchel5981Greekth2960Thaifr1963Frenches4109Spanishbn4280Banglachr699Cherokeeel647Greekes7992Spanishccp7257Chakmaiu4708 Inuktitutth7935Thaichr1742Cherokeeen7365Englishbn5660Banglaru1289Russianeo4238 Esperantoel5845Greeken4972Englishen1303Englishru2930Russiansr1763Serbianar1757Arabicth2700Thaija1089Japanesear4955Arabices6348Spanishfr1395Frenchchr4572Cherokeeen744Englishru5283Russianth2220Thaitr2226Turkishar7919Arabicel3836Greeken5462Englishru555Russianja6579Japanesechr1192Cherokeeeo5688 Esperantoeo4107 Esperantoel3612Greekru7119Russianel1042Greekfr7178Frenchja6475Japanesetr7723Turkishes7265Spanishja1436Japanesear2757Arabicth2609Thaiiu6008 Inuktituten2467Englishiu419 Inuktitutar357Arabiczh2165Chineseccp4305Chakmatr7432Turkishel986Greekiu2903 Inuktitutru1344Russianen433Englishja1514Japanesebn4361Banglaja5065Japaneseru1174Russianfr7039Frenchzh4978Chineseth979Thaisr2762Serbianel7841Greekar15Arabicth4517Thaizh6551Chinesear6864Arabicth2089Thaibn3787Banglachr4476Cherokeeen7870Englishiu3796 Inuktitutel3263Greekes6038Spanishfr7973Frenchru2267Russianccp3387Chakmasr3036Serbiansr2930Serbianar915Arabiczh5792Chinesesr419Serbianar6906Arabiceo2491 Esperantoiu2291 Inuktitutiu1600 Inuktituten1352Englishiu2803 Inuktitutru5404Russianru5124Russianchr6136Cherokeeen2851Englishsr5431Serbianiu10 Inuktitutru4722Russianeo7426 Esperantoar722Arabicru3149Russiantr372Turkishen2804Englishth1463Thairu8184Russianfr1811Frenchccp7605Chakmaja2925Japanesechr2729Cherokeeru1962Russianja4050Japanesezh2208Chinesesr1037Serbianes7161Spanishja1234Japaneseiu3784 Inuktitutru4774Russianbn8176Banglafr1228Frenchtr2735Turkishfr4021Frenchtr5721Turkishzh1811Chinesear2452Arabicar180Arabicar695Arabicar6237Arabicth5842Thaifr7885Frenchen172Englishel2353Greeksr5112Serbianiu3386 Inuktitutru1698Russianccp291Chakmaes4572Spanisheo4252 Esperantoeo6245 Esperantoes6511Spanishchr4471Cherokeeja692Japanesear2554Arabiciu5288 Inuktitutth1330Thaiel7613Greekeo4714 Esperantozh6133Chineseeo2479 Esperantoar4295Arabicen2466Englishsr3121Serbianru7191Russianth2855Thaichr4592Cherokeeel4775Greekfr4527Frenchsr4364Serbianzh250Chineseel507Greekar6147Arabicccp3436Chakmasr3591Serbianth7991Thaies7155Spanishar715Arabicar5492Arabices6016Spanishfr5674Frenchzh7945Chinesebn4859Banglaru6770Russianel3465Greekes42Spanishsr1411Serbiansr3123Serbiansr7496Serbianth5306Thaibn3813Banglabn1522Banglaja4159Japanesesr563Serbianth2880Thaija7077Japaneseel1197Greekccp572Chakmaru4621Russianru6778Russiantr1916Turkishccp2932Chakmael4249Greeksr3886Serbianel5771Greekeo282 Esperantoru5757Russianja5063Japaneseeo4368 Esperantoru3250Russianru433Russianel5628Greektr4466Turkishes1999Spanishtr3870Turkishru1786Russianeo2013 Esperantoes2278Spanishiu5155 Inuktitutchr3638Cherokeetr872Turkishar3183Arabicbn4304Banglaru7861Russianchr1527Cherokeeja861Japanesechr430Cherokeeen2135Englisheo4197 Esperantoja7056Japaneseel6590Greekar7785Arabicchr380Cherokeeel6044Greekiu5558 Inuktitutsr4968Serbianfr991Frenches3823Spanishsr6084Serbianfr6620Frenchzh4748Chineseja2213Japanesees1427Spanishchr446Cherokeechr5046Cherokeees1363Spanishth1508Thaiiu7847 Inuktitutiu1258 Inuktitutchr3772Cherokeees6979Spanishes3565Spanishtr2127Turkishchr137Cherokeefr3006Frenchccp7570Chakmaes3150Spanishsr7386Serbianchr6271Cherokeeel7207Greekfr4125Frenchel730Greeksr7928Serbianar3791Arabicel6830Greekzh230Chineseth57Thaibn2226Banglafr3092Frenchja121Japanesechr5451Cherokeeru237Russianfr4947Frenchen7982Englishsr924Serbiansr3966Serbianja2645Japaneseru3963Russiantr5990Turkishth5932Thaitr1922Turkishru3484Russianth2952Thaiccp7780Chakmaar3139Arabicsr31Serbianel353Greekth7049Thaien6038Englishru3044Russianiu5825 Inuktitutth7961Thaies4734Spanishes1403Spanishar7150Arabicru516Russianel4152Greekeo7771 Esperantotr6554Turkishru8170Russianru3340Russianiu3346 Inuktitutja7365Japanesear4445Arabiceo7519 Esperantofr1831Frenchru6160Russiantr4413Turkishsr7361Serbianiu8052 Inuktitutar5873Arabictr3384Turkishccp7350Chakmachr7174Cherokeetr6900Turkisheo4800 Esperantoth7931Thaien4032Englishel8082Greeksr4959Serbianzh7475Chineseth3748Thaiel1754Greekccp3696Chakmaes3360Spanishfr7839Frenchiu1865 Inuktitutfr2890Frenchchr4086Cherokeesr6062Serbiantr1675Turkishes3316Spanishccp4131Chakmaccp573Chakmachr1185Cherokeeru2174Russiantr2753Turkishen7605Englishru6955Russianel2728Greekchr3020Cherokeefr2518Frenchsr3086Serbianen6911Englishes5498Spanishen1861Englishccp4218Chakmaccp4064Chakmaes2297Spanishar7888Arabicja2494Japanesesr3181Serbianja7256Japaneseeo7445 Esperantoth7740Thaies7845Spanishja2478Japanesees6584Spanishsr95Serbianen898Englisheo1233 Esperantoiu7242 Inuktitutbn21Banglaeo2955 Esperantosr7029Serbianes5596Spanishja1380Japanesezh5919Chineseeo3786 Esperantotr5636Turkishel1705Greekeo4177 Esperantoes4958Spanishtr6665Turkisheo1412 Esperantoes1874Spanishfr6738Frenchiu5478 Inuktitutfr7908Frenchiu5132 Inuktitutru1817Russianth1251Thairu3769Russiansr7652Serbianbn991Banglaeo1169 Esperantosr2176Serbianzh629Chinesetr3693Turkishsr3880Serbianel7439Greekbn4106Banglaiu3596 Inuktituttr1060Turkishes3853Spanishzh2993Chinesechr1114Cherokeechr2682Cherokeechr5168Cherokeetr5576Turkishth1357Thaisr3623Serbianbn1964Banglaiu4589 Inuktituteo5047 Esperantoiu5141 Inuktitutccp4844Chakmaeo2020 Esperantoes4327Spanishzh343Chinesezh7569Chinesesr6649Serbianfr6598Frenchbn39Banglaccp3213Chakmaen7195Englishth3632Thaiar7673Arabiceo4966 Esperantochr43Cherokeeel1337Greekzh5663Chineseth963Thaien6954Englishccp4926Chakmaes1201Spanishja5371Japaneseiu7826 Inuktitutel3903Greekfr7944Frenchtr3604Turkishen7352Englishzh7574Chineseel6289Greekja7434Japanesees7234Spanishchr3491Cherokeechr4104Cherokeeth6881Thaitr7731Turkishru7462Russianth5962Thaiccp4902Chakmath7422Thaizh2345Chinesechr1763Cherokeefr7051Frenchfr6934Frenchfr2964Frenchiu5263 Inuktitutes8043Spanishtr8016Turkishth510Thaiiu3669 Inuktitutccp4350Chakmaes4498Spanishja3557Japaneseth554Thaiiu5037 Inuktitutiu5284 Inuktitutchr4424Cherokeeja1957Japanesetr3791Turkishzh1353Chineseiu3580 Inuktitutccp2012Chakmaja991Japaneseiu7274 Inuktitutru7892Russiansr5594Serbiantr3892Turkishel1576Greekar7712Arabicfr2335Frenchru1298Russianen3076Englishth3369Thaiccp46Chakmaen2792Englishja5221Japaneseru2950Russianbn6919Banglaeo3176 Esperantoru7164Russianen5647Englishel2371Greeken3916Englisheo5141 Esperantoja8006Japanesear837Arabicsr1231Serbianccp420Chakmachr7312Cherokeeru4280Russianchr3087Cherokeeen4084Englishel6955Greekja1209Japanesesr3475Serbiantr198Turkishru4542Russianes6499Spanishzh1234Chineseiu4734 Inuktitutiu6556 Inuktitutchr4024Cherokeeeo4774 Esperantosr4970Serbianzh930Chineseru3345Russianccp2832Chakmaes7486Spanishar2025Arabicth2972Thaieo7345 Esperantobn1809Banglaes488Spanishar1522Arabicth6169Thaisr6444Serbianja3775Japanesebn3451Banglachr3295Cherokeees1487Spanishes2710Spanishfr5052Frenchtr5854Turkishel3824Greekth7388Thaija5447Japanesebn5926Banglaes5411Spanishja1432Japanesezh6279Chineseiu6586 Inuktitutsr8048Serbiantr923Turkishru2787Russiansr180Serbianzh2580Chinesear3191Arabicccp1615Chakmael6969Greekzh3604Chinesees1850Spanishja3550Japanesesr1588Serbianru151Russianth6918Thaiar1317Arabices549Spanishfr6223Frenchbn5793Banglachr3925Cherokeeeo220 Esperantoar478Arabicel2641Greeksr6316Serbianzh4589Chinesetr1491Turkishar7545Arabices7797Spanishen358Englisheo1945 Esperantosr7966Serbianchr3889Cherokeesr2562Serbianel7093Greekth6959Thaiccp6732Chakmabn4139Banglafr570Frenchel6510Greektr5668Turkishel8167Greeken1628Englishfr6380Frenches2315Spanishchr2504Cherokeeiu6510 Inuktitutth8082Thaisr452Serbianen2879Englishen5140Englishzh6453Chinesear6163Arabiciu7097 Inuktitutru582Russianth4355Thairu3587Russianru6865Russianel1142Greekar6541Arabicru6128Russiansr2314Serbianiu2948 Inuktitutar6121Arabicccp1082Chakmachr986Cherokeebn2362Banglaar7261Arabictr6914Turkisheo4329 Esperantochr5551Cherokeeen7909Englishsr5201Serbianccp601Chakmaar1145Arabicel6248Greekes3785Spanishru8102Russianzh1175Chinesechr4051Cherokeeel1021Greekiu2658 Inuktitutth704Thaibn7134Banglaccp5305Chakmatr3323Turkishen718Englishja5948Japaneseeo3643 Esperantoth2680Thaizh1691Chineseel1009Greekru614Russianchr589Cherokeeiu5693 Inuktitutchr4678Cherokeeru6732Russianzh2857Chineseiu6086 Inuktitutru501Russianes1670Spanishzh3080Chinesebn6196Banglaar3255Arabicchr3524Cherokeebn6236Banglaen6522Englishru3572Russianchr7092Cherokeees5071Spanishja3829Japaneseeo2766 Esperantoes7215Spanishbn3061Banglaes4055Spanishes5378Spanishth2887Thaien3883Englisheo3412 Esperantoiu3608 Inuktitutiu6694 Inuktituten7133Englishen1676Englisheo1896 Esperantoes335Spanishccp1158Chakmachr766Cherokeeen4603Englishen4817Englishiu4743 Inuktitutsr6838Serbiantr999Turkishzh4183Chineseru2068Russianar563Arabicsr239Serbianth2744Thaizh424Chinesees4464Spanishja5402Japaneseru6670Russianchr6090Cherokeeru969Russiansr1576Serbianzh323Chineseccp502Chakmaccp1303Chakmaru6931Russianar7900Arabicen3023Englishar7975Arabiceo3911 Esperantofr4468Frenchiu6506 Inuktitutru2590Russianchr1788Cherokeezh4582Chinesechr6250Cherokeeccp7361Chakmael3463Greektr4830Turkisheo1782 Esperantoar5120Arabicbn1326Banglaru5202Russianzh6827Chineseeo2785 Esperantoja3111Japanesezh3108Chineseiu2648 Inuktitutzh5959Chinesesr2210Serbianru1233Russiantr3544Turkishth6606Thaiiu7278 Inuktitutzh3825Chinesees5318Spanishar7331Arabicsr2918Serbianar4477Arabicel7876Greekes508Spanishth3329Thaifr5365Frenchen2204Englishel1483Greeksr3386Serbianar3875Arabiczh5002Chineseel3342Greekeo3566 Esperantobn3810Banglatr7595Turkishiu1144 Inuktitutsr3196Serbianru6604Russianfr5788Frenchel2017Greeken1309Englishbn5638Banglaes7424Spanishes7593Spanishth7545Thaith773Thaies1398Spanishth7486Thaiccp4421Chakmael318Greekccp8150Chakmael1794Greekru5252Russianccp692Chakmatr917Turkishen5244Englishbn7088Banglazh5900Chinesebn6476Banglaccp1604Chakmatr5923Turkishel78Greektr3717Turkishsr2858Serbiantr1149Turkishchr4624Cherokeesr6275Serbianel2706Greekes7758Spanisheo1334 Esperantofr5995Frenchru2852Russianfr8078Frenches3452Spanishar3209Arabicfr7173Frenchtr1585Turkishzh1643Chinesechr6333Cherokeeru4780Russianru7847Russianel28Greekiu6300 Inuktitutru1332Russianen726Englishiu7597 Inuktitutzh8082Chineseeo8033 Esperantochr3381Cherokeefr299Frenchsr4987Serbianeo8044 Esperantofr1557Frenchzh7833Chineseen5618Englishsr4795Serbianen4407Englishbn7559Banglaeo5287 Esperantoes6309Spanishiu5461 Inuktituten6112Englishsr5704Serbianru6577Russianel827Greekes159Spanishsr6346Serbianzh1226Chinesesr2480Serbianja7190Japaneseen3215Englishja687Japaneseccp7676Chakmaeo1163 Esperantoen2942Englishiu5551 Inuktituttr362Turkishfr4242Frenchbn6116Banglaccp4072Chakmatr454Turkishsr2353Serbianru2338Russianeo4586 Esperantoen7061Englishes1647Spanishsr6450Serbianiu4523 Inuktitutsr7801Serbianchr5191Cherokeeen4838Englishtr6401Turkishtr5347Turkisheo7941 Esperantoeo8125 Esperantobn3188Banglaeo4599 Esperantoru2389Russianen3079Englishar834Arabicsr6561Serbianja5853Japanesees706Spanishel7926Greekja5436Japanesefr751Frenchel1621Greekccp3243Chakmafr3233Frencheo2445 Esperantosr240Serbianeo110 Esperantoth1798Thaija7297Japanesetr4202Turkishru6545Russianeo6501 Esperantosr1366Serbianeo2977 Esperantoiu4783 Inuktitutth7266Thairu8033Russiansr4383Serbianzh4654Chinesezh2046Chineseiu4149 Inuktitutzh4253Chineseeo4236 Esperantoeo626 Esperantofr4368Frenchen5150Englishccp3872Chakmaeo2271 Esperantoru3471Russianccp1336Chakmaen2891Englisheo6967 Esperantoar3994Arabicbn7858Banglachr1480Cherokeeen2241Englisheo3089 Esperantoes2705Spanishfr181Frenchfr2497Frenchja3999Japanesetr316Turkishzh3594Chinesear24Arabicccp1229Chakmaen3680Englishfr4598Frenchccp5167Chakmath5940Thaies7001Spanishar6247Arabicchr4807Cherokeeiu3662 Inuktitutes2151Spanishsr1137Serbianbn2677Banglachr523Cherokeezh1730Chinesear955Arabicel5466Greeksr4916Serbianbn1416Banglasr3025Serbianiu794 Inuktituteo7013 Esperantoen7197Englisheo1902 Esperantoja5073Japaneseru550Russianru2138Russianel320Greekchr7165Cherokeeja4428Japanesesr7900Serbianzh1361Chineseiu2306 Inuktitutel1927Greekel5485Greekes633Spanisheo1442 Esperantoes1431Spanishiu4231 Inuktitutfr4107Frenchja1010Japanesebn6057Banglasr4956Serbianiu5905 Inuktitutccp5626Chakmachr4186Cherokeetr7108Turkishccp322Chakmaen4323Englishru1266Russianiu837 Inuktitutes7902Spanishar3944Arabicth7467Thaien526Englishen1781Englishen5165Englishchr7812Cherokeechr4105Cherokeees536Spanishccp6206Chakmafr289Frenchfr5935Frenchfr442Frenchchr2999Cherokeeiu3989 Inuktitutbn2238Banglatr270Turkishth4877Thaiccp1725Chakmaeo3100 Esperantoiu5164 Inuktitutiu4609 Inuktitutsr1843Serbianeo3224 Esperantoeo7684 Esperantoiu7567 Inuktitutbn3176Banglaen3930Englishja2626Japanesesr2644Serbiantr4750Turkisheo808 Esperantotr3287Turkishja5233Japaneseeo1204 Esperantoes6901Spanishiu922 Inuktitutar223Arabicar2948Arabices7349Spanishiu7455 Inuktituten2837Englishel5456Greekfr444Frenches5054Spanishtr8012Turkishth3191Thaitr6525Turkishel6278Greektr5056Turkishchr5042Cherokeeel7272Greeksr4726Serbianel3153Greekzh5261Chineseccp8132Chakmazh6659Chinesechr1716Cherokeechr4390Cherokeeiu6274 Inuktitutes3692Spanishth6563Thaies7921Spanishar5825Arabicbn6009Banglazh1256Chineseccp816Chakmael3249Greekzh3788Chinesefr6729Frenchth1285Thaizh1506Chineseru4346Russianth7681Thaien6712Englishzh4507Chinesezh6046Chineseen2359Englishes5738Spanishzh7749Chinesees7548Spanishtr3342Turkishiu191 Inuktitutbn3282Banglaru6298Russianen762Englishth7237Thaiar5228Arabictr757Turkishja4002Japanesechr683Cherokeeeo1322 Esperantoel4597Greekes4888Spanishiu7113 Inuktitutja1651Japaneseel2876Greekel2156Greekchr3859Cherokeeru1373Russianccp4821Chakmaru6172Russianeo4658 Esperantosr450Serbianeo6097 Esperantosr7399Serbianar1556Arabiciu6722 Inuktitutja7560Japaneseth4454Thaitr5992Turkishth7124Thairu1216Russianja7791Japanesefr7902Frenchfr1363Frenchru7827Russiansr1910Serbianth3583Thaies7528Spanishar1654Arabices6702Spanishes4680Spanishja6429Japaneseru5017Russianth377Thaizh8064Chineseru1152Russianru4995Russianbn866Banglaes3576Spanishbn1087Banglath7986Thaichr234Cherokeear1319Arabicel1282Greeken5255Englishen6737Englishtr4347Turkishccp2535Chakmachr423Cherokeeeo3684 Esperantoen5745Englishru7429Russianar5419Arabicel6979Greekiu4448 Inuktitutfr3633Frenchchr2618Cherokeetr123Turkishar7512Arabicja2157Japaneseccp7403Chakmaiu5447 Inuktitutsr2801Serbianccp7280Chakmatr6568Turkishzh5859Chinesezh7469Chineseja3469Japaneseen6629Englishen7816Englishzh1383Chineseth1713Thaichr276Cherokeeiu4543 Inuktitutccp5978Chakmaes294Spanishfr7126Frenchsr3125Serbianbn2997Banglatr6376Turkishtr3905Turkishiu5916 Inuktitutiu5956 Inuktitutzh7885Chinesebn2515Banglaccp2962Chakmafr2605Frenchzh6224Chinesezh3114Chineseiu4432 Inuktitutsr2976Serbianiu2114 Inuktitutchr1104Cherokeeru4661Russianar1708Arabicru5141Russianfr6012Frenchth2953Thaiar6414Arabices5060Spanishar3506Arabicel7705Greekja4238Japaneseth1179Thaiiu7504 Inuktitutbn3756Banglaen4892Englishbn6573Banglaar2150Arabicbn822Banglazh7772Chinesefr8191Frenchsr195Serbianes2342Spanishar2778Arabicchr2363Cherokeear297Arabicja7448Japaneseen8128Englishru4902Russianzh3048Chineseeo4081 Esperantozh4882Chineseel1563Greekeo8007 Esperantoccp641Chakmachr6603Cherokeeel4468Greekccp235Chakmaar3844Arabicccp6062Chakmael2358Greeken7552Englishth8021Thairu6169Russianar1083Arabicchr6506Cherokeeth3003Thaizh3758Chineseccp105Chakmabn6089Banglaeo7045 Esperantosr2201Serbianes7476Spanishfr1777Frenchsr1408Serbianeo5458 Esperantoiu3726 Inuktitutchr4721Cherokeetr4168Turkishccp3851Chakmaru2453Russianen5572Englishzh5499Chinesebn4440Banglaar5771Arabicfr142Frenchel6137Greekru7311Russianzh4816Chineseeo1756 Esperantoar4490Arabices1727Spanisheo7938 Esperantoar2939Arabicfr7285Frenchru232Russianen1298Englishfr6911Frenchccp6441Chakmasr4485Serbianbn2005Banglaen7448Englishchr7Cherokeees6357Spanishel6392Greekiu6189 Inuktitutar7862Arabicccp681Chakmaiu109 Inuktitutbn2908Banglaeo8106 Esperantoru1297Russianbn689Banglachr105Cherokeeja6037Japaneseru6896Russianes7406Spanishru6730Russianja6912Japanesear2154Arabicja3825Japaneseel787Greektr644Turkishja6712Japaneseel3574Greekth3894Thaiccp3426Chakmaja3826Japaneseja6508Japaneseru1646Russianth1786Thaitr7381Turkishccp7846Chakmaccp1806Chakmaccp5440Chakmath4769Thaisr2942Serbianja1611Japaneseccp3832Chakmath5228Thaizh688Chinesear5588Arabicar3703Arabicen1170Englishth541Thaiar683Arabictr4902Turkishar844Arabiceo5148 Esperantoeo7509 Esperantoja7749Japaneseeo2803 Esperantobn4844Banglaes771Spanishen4490Englishiu5295 Inuktituteo7701 Esperantoru2377Russianfr3354Frenches4836Spanishja426Japanesetr3199Turkishen7259Englishtr2105Turkishja3931Japanesechr2890Cherokeees7755Spanishchr7514Cherokeeru3747Russianel5865Greekes4105Spanishfr7569Frenchzh7663Chineseiu909 Inuktitutiu2996 Inuktitutbn5226Banglath4827Thaien4723Englishfr7715Frenchar602Arabicja481Japaneseccp6084Chakmaar5380Arabicar7719Arabiceo3845 Esperantosr1884Serbianccp4137Chakmasr7170Serbianchr8167Cherokeesr894Serbianen434Englishar2192Arabicru7854Russiansr4586Serbianes2856Spanishiu2113 Inuktitutsr1828Serbianfr5424Frenchfr2747Frenchiu2189 Inuktitutbn5320Banglachr1435Cherokeeiu3928 Inuktituten2252Englishes2265Spanishfr89Frenchru1732Russianiu7728 Inuktitutzh8061Chinesees711Spanishzh7242Chineseen3803Englishtr1653Turkishfr3554Frenchiu4399 Inuktitutel1961Greektr434Turkisheo7041 Esperantoth5224Thaiiu2401 Inuktitutiu3003 Inuktitutchr2011Cherokeeiu7043 Inuktituttr27Turkishccp6445Chakmachr3088Cherokeeen614Englishes6323Spanishen449Englishccp2091Chakmachr3608Cherokeeel2718Greekja6495Japanesesr1868Serbianfr346Frenchfr1320Frenchar8095Arabicccp6259Chakmafr7065Frenches1313Spanishtr2569Turkishth3915Thaiiu2517 Inuktitutfr4729Frenchja1104Japanesetr6194Turkishchr2016Cherokeeen92Englisheo221 Esperantoru2285Russianccp5395Chakmasr135Serbianeo6958 Esperantotr1341Turkishtr554Turkisheo125 Esperantoes3201Spanishfr4566Frenchchr310Cherokeear1129Arabicchr1119Cherokeechr5146Cherokeees2859Spanishfr7778Frencheo1372 Esperantoth487Thaiel219Greekfr7384Frenchbn157Banglaes5735Spanishja2233Japaneseiu1440 Inuktitutel3744Greekfr4260Frenchen6930Englishsr5285Serbianfr2456Frenchen6639Englishru2762Russianth4674Thaizh3107Chinesees4912Spanishar4299Arabicbn4631Banglaiu3710 Inuktituteo3502 Esperantoel3709Greekchr3107Cherokeeccp1887Chakmaen6252Englishccp231Chakmaes255Spanishru724Russianzh264Chinesees3068Spanishzh7576Chineseru6728Russianar905Arabictr1109Turkisheo2710 Esperantobn321Banglaccp2876Chakmasr6365Serbianccp4477Chakmachr4288Cherokeechr6760Cherokeefr1640Frenches649Spanishel5969Greekel3012Greekes6516Spanishfr5903Frenches1689Spanishiu2733 Inuktitutsr6684Serbianchr2110Cherokeear3318Arabices70Spanishfr2304Frenchiu1650 Inuktitutchr6861Cherokeeeo5860 Esperantoru1571Russianth2181Thaiar612Arabictr7660Turkishccp972Chakmasr4853Serbianel5675Greekzh2758Chinesesr7580Serbianes344Spanishtr2184Turkisheo7693 Esperantoar7858Arabiciu1562 Inuktitutru725Russianiu6900 Inuktituttr2366Turkishccp1920Chakmaeo2739 Esperantoel3884Greektr2502Turkishar7233Arabicel1617Greeksr5338Serbianiu3237 Inuktitutchr1561Cherokeefr7838Frenchtr617Turkishru7853Russianzh6067Chinesebn899Banglaccp1245Chakmaar3460Arabicja1991Japaneseiu5004 Inuktitutbn828Banglaar5701Arabices7838Spanishsr2510Serbianccp1472Chakmaccp4652Chakmaeo5229 Esperantoru809Russiantr1733Turkishes3854Spanishiu5710 Inuktitutchr1074Cherokeear6952Arabicel6229Greekeo2993 Esperantoar4454Arabicen5363Englishsr6502Serbianchr3353Cherokeechr4993Cherokeeeo663 Esperantoja1458Japanesefr6036Frenchja4132Japaneseth591Thaieo2139 Esperantotr5284Turkishen5573Englishru1717Russianzh574Chineseja3708Japaneseeo4869 Esperantozh5652Chinesebn1376Banglaeo4755 Esperantoes1823Spanishja3881Japaneseru6906Russianen2183Englishen2357Englishar5595Arabicel3600Greekru4540Russianzh4412Chineseru4412Russianchr6781Cherokeechr3839Cherokeeiu7239 Inuktitutchr370Cherokeebn5172Banglaen1581Englishja3517Japanesees3658Spanishth3884Thaibn1690Banglaar8116Arabicja7720Japaneseccp7703Chakmaiu7293 Inuktitutzh7504Chineseen4590Englishtr36Turkishth4428Thaifr2431Frenchja1697Japanesees4009Spanishel1311Greekccp6524Chakmaes447Spanishfr3188Frenchfr5849Frenchru5023Russianth2315Thairu4839Russianja7771Japaneseth997Thaitr7437Turkishth4966Thaiccp6123Chakmachr5603Cherokeesr5328Serbianfr7050Frenchccp4300Chakmaeo1866 Esperantoccp7143Chakmaen7530Englishja3972Japaneseeo6686 Esperantochr7726Cherokeeel6098Greekbn6971Banglaja5875Japaneseru865Russianes3191Spanishsr2743Serbianth2968Thaiccp3907Chakmafr3930Frenches5866Spanishru6509Russianen7431Englishes3527Spanishen5687Englisheo3082 Esperantochr65Cherokeeen3196Englisheo4606 Esperantoth3964Thaibn2940Banglabn3284Banglaiu7354 Inuktitutzh569Chinesees4694Spanishar7017Arabiceo218 Esperantoes7853Spanishel5997Greektr7504Turkishes2598Spanishfr977Frenchen4517Englishsr4706Serbianccp1612Chakmaes6922Spanishiu3278 Inuktitutru7508Russianbn7235Banglaccp1925Chakmazh5713Chinesebn186Banglatr221Turkishzh7152Chinesefr3182Frenchth2766Thaizh6282Chineseel798Greekeo6350 Esperantofr1377Frenchccp1468Chakmazh3950Chinesezh5082Chineseel6870Greekfr3447Frenchiu7991 Inuktitutja4034Japaneseccp4099Chakmael5871Greeksr6784Serbianeo6823 Esperantoar8034Arabicel2130Greekeo3290 Esperantoru6213Russianccp7013Chakmazh6056Chineseru7141Russiansr3256Serbianzh3433Chinesees6250Spanishbn6565Banglaccp4465Chakmath4013Thaibn415Banglaen3686Englishtr3731Turkishes3026Spanishen2917Englishja7976Japaneseeo245 Esperantoeo1610 Esperantoel7991Greekar7330Arabicar3446Arabicel5213Greekja407Japaneseru2939Russianel5505Greekzh7147Chineseth557Thaies1118Spanishbn7689Banglatr6683Turkishbn4256Banglaiu136 Inuktitutes5865Spanishccp5695Chakmazh5944Chinesesr704Serbianiu6339 Inuktitutiu923 Inuktitutar5305Arabicel4917Greeksr5745Serbianth7448Thaija1525Japaneseth4954Thairu5320Russiantr4552Turkishen6777Englishccp3382Chakmaja13Japaneseru967Russianja2678Japaneseth1576Thaiar4656Arabicccp5660Chakmaeo5428 Esperantoar5394Arabicth8069Thaifr1908Frenches3593Spanishccp6182Chakmaes7603Spanishen4287Englishes6845Spanishccp5962Chakmaiu4808 Inuktituttr4050Turkishiu765 Inuktitutsr6293Serbianeo3381 Esperantochr6852Cherokeetr5865Turkishel1455Greekru3799Russianar7269Arabicchr612Cherokeeth7950Thaiar3383Arabiceo6562 Esperantoel192Greekel5558Greekfr1031Frenchchr4075Cherokeetr469Turkishen6591Englishen5873Englishchr7467Cherokeesr2414Serbianccp580Chakmaru1396Russiansr4862Serbianes5134Spanisheo1056 Esperantoar6227Arabicfr534Frenchja4739Japaneseth8063Thaizh4951Chineseen7760Englishar4785Arabicja5282Japanesesr1983Serbianccp3702Chakmatr2609Turkishbn7329Banglaar2890Arabiceo3860 Esperantotr83Turkishchr5752Cherokeeru3050Russiantr3102Turkishzh953Chinesear2168Arabicru5844Russianes6557Spanishru2033Russianar6325Arabices1394Spanishth2314Thaiiu6661 Inuktitutel6451Greekzh1119Chineseiu7411 Inuktituteo5362 Esperantochr1118Cherokeees1404Spanishsr5080Serbianchr1321Cherokeechr732Cherokeeeo1509 Esperantoar7866Arabicar1581Arabiceo3405 Esperantoel6821Greeken1688Englishen1718Englishar628Arabicth941Thaies3330Spanishja4878Japaneseen5691Englishth7345Thaiar1885Arabicen1328Englishru4238Russianes7891Spanishth5412Thaizh490Chineseel3160Greekeo5221 Esperantoru5877Russianchr7791Cherokeebn7806Banglaccp581Chakmaes5976Spanishccp5520Chakmaja5639Japaneseru875Russianru2724Russiantr2751Turkishtr8106Turkishes6504Spanishes8037Spanisheo5585 Esperantoru3208Russianar6611Arabicru388Russianeo2125 Esperantoiu6757 Inuktitutfr1597Frenchsr4618Serbianbn3014Banglaeo2049 Esperantoes3093Spanishth6872Thaien1907Englishtr8077Turkishiu7538 Inuktitutar6744Arabicfr7176Frenchel316Greekccp583Chakmaccp7174Chakmafr7943Frenchsr4590Serbianru5281Russiansr6366Serbianja2117Japaneseru3447Russianfr7390Frenchen3779Englishfr3919Frenchsr3227Serbianar5679Arabiciu5009 Inuktitutfr3157Frenchja5040Japanesechr3757Cherokeechr5645Cherokeechr1500Cherokeeru2353Russianja2429Japaneseja2467Japaneseel7198Greekel7123Greekiu7099 Inuktitutbn7357Banglaen1260Englishbn7255Banglaiu4998 Inuktitutth5240Thaisr6416Serbianja2234Japanesebn7009Banglath786Thaith6386Thaibn8152Banglaen3694Englishbn5382Banglael7458Greekes117Spanishes1116Spanishiu3804 Inuktitutru979Russianen1101Englishsr7249Serbianen218Englishar3907Arabicfr1018Frenchen1922Englishccp3859Chakmath7028Thaiiu2208 Inuktitutru7323Russianth524Thaith3592Thaisr5462Serbianth317Thaisr1877Serbianchr3966Cherokeeiu277 Inuktituteo6028 Esperantoar3579Arabicbn6882Banglaru56Russianfr5241Frenchsr4140Serbianbn6157Banglaiu3754 Inuktitutfr6270Frenchel4569Greekfr6624Frenchsr2553Serbianen3161Englishsr7925Serbiantr4908Turkishzh2298Chinesechr7389Cherokeear2505Arabicar4739Arabicccp7533Chakmaru5741Russianru5432Russianbn4164Banglatr6363Turkishsr3455Serbianel2497Greekchr6600Cherokeesr2234Serbianbn7919Banglaes2171Spanishar7646Arabictr6328Turkishar4418Arabiceo7195 Esperantoth8148Thaies7034Spanishsr175Serbianen2638Englishel5613Greekru2555Russianbn1569Banglaja1110Japaneseccp5322Chakmaen6969Englishar2113Arabicfr3328Frenchzh1364Chinesechr2714Cherokeeccp8111Chakmaja1277Japanesear7767Arabicbn5203Banglaiu6296 Inuktitutbn5755Banglabn6599Banglaes105Spanishtr8137Turkishel717Greekeo845 Esperantoar2321Arabicen5739Englishes3395Spanishar1229Arabicccp859Chakmael5053Greekes4160Spanishsr917Serbianccp6478Chakmaes8084Spanishzh3555Chinesechr4455Cherokeees2044Spanishchr5482Cherokeezh7715Chinesezh6939Chineseeo8169 Esperantoccp6466Chakmazh4265Chineseccp4890Chakmaiu2825 Inuktituttr4052Turkishen2872Englishth5406Thaieo1096 Esperantofr7501Frenchchr724Cherokeeen5714Englishfr4733Frenchfr3983Frenchru965Russianru1339Russianru2270Russianja7817Japanesees7014Spanishfr99Frenchfr7168Frenches3184Spanishel6162Greekes5920Spanishsr5551Serbianel558Greekth4992Thaisr5026Serbianccp7083Chakmabn6432Banglaen7952Englishzh449Chineseeo2024 Esperantoccp1457Chakmaen7100Englishja699Japaneseccp2655Chakmatr3451Turkishccp7669Chakmazh2988Chinesebn7155Banglachr3546Cherokeeiu3964 Inuktitutja7332Japaneseel2511Greekru3762Russianru5932Russianbn8033Banglath6062Thaiiu2619 Inuktitutsr3715Serbianru7484Russianja4844Japaneseel4655Greekiu3411 Inuktitutru1546Russianeo4873 Esperantoru7532Russianchr2276Cherokeeiu7544 Inuktitutbn6156Banglaes4300Spanishar1432Arabicja4460Japaneseccp1442Chakmael6058Greeken6205Englishzh8089Chinesees5131Spanishth8126Thaies4846Spanishccp6742Chakmaru4200Russianzh2316Chinesear2978Arabicja3161Japanesezh2110Chineseccp2880Chakmaes3274Spanishru2843Russianzh805Chinesees2356Spanishsr4451Serbianth4626Thaies6864Spanishfr7211Frenchel1844Greekeo1870 Esperantoel4960Greekfr1032Frenchel625Greekru962Russianchr7956Cherokeear2244Arabicar6042Arabicccp2301Chakmabn3899Banglaeo6012 Esperantoru7989Russianeo6304 Esperantoru195Russianar7691Arabicfr5088Frenchsr3654Serbianth7793Thaija2295Japaneseiu2455 Inuktitutsr8181Serbianen7491Englishar6033Arabictr2504Turkishzh3293Chineseen5437Englishar3515Arabicchr566Cherokeechr5959Cherokeeccp4619Chakmael853Greekbn2761Banglabn5706Banglaeo8104 Esperantoar2943Arabices4882Spanishth2743Thaibn3694Banglabn5547Banglazh4382Chineseel3010Greekru6075Russianja6195Japanesechr209Cherokeetr4226Turkishzh7143Chineseel6002Greekth2232Thaija200Japaneseth2388Thaiccp6567Chakmaen4971Englishsr940Serbiantr5894Turkishru7782Russianbn4977Banglaar6589Arabicen7375Englishfr556Frenchbn5291Banglaccp1349Chakmaar4517Arabiceo1912 Esperantoen87Englishes2004Spanishsr2544Serbianes3546Spanishccp5241Chakmaen140Englishen1576Englishth2630Thaitr5954Turkishccp72Chakmaeo1842 Esperantoccp5972Chakmaar5345Arabicbn3903Banglasr1715Serbianeo473 Esperantoth632Thaies2734Spanishbn4953Banglasr7353Serbianth125Thairu5654Russiansr2834Serbianccp5614Chakmachr852Cherokeeel2583Greekru2456Russianccp2701Chakmaccp6728Chakmatr5152Turkishel5007Greekiu3827 Inuktitutccp2632Chakmaccp7952Chakmaru6378Russianru7299Russianfr2779Frenchru5385Russianbn1424Banglabn7103Banglath568Thaieo6489 Esperantoiu7632 Inuktitutja702Japaneseen3546Englishzh649Chineseru1927Russianccp5149Chakmafr2297Frenchar719Arabicel5289Greekru5079Russianzh8170Chinesezh123Chinesechr3336Cherokeeru2600Russianeo1800 Esperantoth3942Thaien4945Englishja5427Japaneseiu4815 Inuktitutbn2792Banglaiu2509 Inuktitutfr2164Frenchsr6632Serbianzh2273Chineseel4024Greekfr1311Frenchru3404Russiantr4054Turkishes3245Spanishbn149Banglaes8014Spanishccp187Chakmaen6305Englishbn835Banglaiu3942 Inuktitutzh4824Chineseeo6210 Esperantobn6306Banglaccp5541Chakmabn3575Banglaar5012Arabicsr2203Serbianja3224Japanesefr645Frenchsr7576Serbianfr4478Frenchchr6223Cherokeear7757Arabicja2553Japaneseja6547Japaneseru1057Russianiu1379 Inuktitutbn7863Banglaeo953 Esperantoar3306Arabicfr5846Frenchen1981Englishiu3694 Inuktituttr2147Turkishen3436Englishel5181Greekbn5515Banglaeo2702 Esperantoru7915Russianth4481Thaibn4649Banglabn727Banglael2416Greekth5888Thaien2991Englishzh8032Chineseeo6612 Esperantoen7725Englishccp4357Chakmatr6738Turkishel1294Greekchr7457Cherokeeeo1263 Esperantoth3183Thaiiu2251 Inuktitutiu1656 Inuktitutfr3602Frenchiu5178 Inuktitutja3128Japanesesr3194Serbianar2438Arabicbn6950Banglael4304Greekiu6152 Inuktituten1723Englishja5313Japanesebn7754Banglachr7655Cherokeechr5212Cherokeeeo234 Esperantoeo3763 Esperantoccp7293Chakmaccp5575Chakmaen6820Englishsr3065Serbianiu4585 Inuktitutth1264Thaifr5810Frenchth905Thaitr6775Turkishfr3815Frenchar6027Arabiciu256 Inuktituttr2887Turkishar2370Arabicfr1364Frencheo4169 Esperantochr1474Cherokeeccp5228Chakmafr4618Frenchfr4781Frenchar3405Arabiciu4255 Inuktitutfr816Frenchru224Russianfr2472Frenchar1164Arabices4143Spanishfr3532Frenchbn5246Banglachr4791Cherokeebn417Banglaar6861Arabicen7005Englishchr4571Cherokeesr7848Serbianru1408Russianel3950Greekfr4680Frenchbn3860Banglaar337Arabicbn5859Banglaccp2115Chakmabn2123Banglaja8116Japanesezh4286Chineseel5837Greekes7577Spanishel6824Greekccp3114Chakmafr7085Frenchzh4515Chineseru6484Russianen6007Englishel2094Greekes2709Spanishel7448Greeksr800Serbianth4993Thaisr6350Serbianes5346Spanishfr4627Frenchfr298Frenchja3049Japaneseth6814Thaiiu8091 Inuktitutth6179Thaiar7303Arabicth588Thaizh839Chineseiu5647 Inuktitutfr7420Frencheo3590 Esperantoen3060Englishel4347Greekeo3429 Esperantoth4928Thaija911Japaneseja2852Japanesebn5605Banglasr5065Serbianth6266Thaizh1776Chineseja6943Japanesear4262Arabicth4721Thaitr7926Turkishzh6607Chineseth639Thaisr1924Serbianru2477Russiantr3008Turkishfr3882Frenches6746Spanishen3699Englishth4891Thaizh1827Chinesesr1181Serbianel3289Greekbn4121Banglatr2068Turkisheo2350 Esperantoru5595Russianth5727Thaiar3304Arabicfr705Frenchar7802Arabices6910Spanishzh3358Chinesechr8110Cherokeeccp1986Chakmaen4422Englishiu7903 Inuktitutel4831Greekzh6353Chinesesr3481Serbiantr2052Turkisheo2625 Esperantoru994Russianzh7690Chineseccp4804Chakmaeo3901 Esperantotr3314Turkishes2676Spanishccp1603Chakmafr5363Frenchja2825Japanesefr6958Frenchccp7753Chakmatr7458Turkishiu216 Inuktitutsr1400Serbianth2054Thaiel121Greekiu1205 Inuktitutbn4466Banglael321Greekar1125Arabiceo3519 Esperantoar8164Arabicbn8147Banglael2034Greekeo5979 Esperantoar4990Arabicel6218Greekru4201Russianja1558Japaneseel1039Greekel1977Greekccp7261Chakmabn2589Banglath307Thaith458Thaifr3219Frenchen1534Englishes3303Spanishbn3688Banglaiu83 Inuktitutth94Thaieo2960 Esperantoja6410Japaneseru7529Russianchr4521Cherokeesr10Serbianth417Thaija5804Japaneseccp7052Chakmatr1991Turkishtr2630Turkishzh1207Chinesesr7139Serbianfr3178Frenchbn7765Banglachr4913Cherokeechr970Cherokeear6604Arabicsr3417Serbianzh1054Chinesear1018Arabicchr375Cherokeefr1345Frenchth3408Thaisr2615Serbianbn1176Banglath2697Thaibn8008Banglaccp2092Chakmasr1709Serbianes7538Spanishfr5271Frenchth7721Thaibn4206Banglaccp7551Chakmaen7768Englishiu6395 Inuktitutja7737Japaneseccp5775Chakmatr6238Turkishru4357Russianes3166Spanishar3609Arabicth3950Thaiar1583Arabicsr5874Serbiantr6491Turkishsr6977Serbianru4419Russianccp8162Chakmath3900Thaieo2585 Esperantotr429Turkishccp5510Chakmaar2625Arabicccp5637Chakmaen2446Englishja7638Japanesezh838Chineseccp4107Chakmaiu8090 Inuktituttr1644Turkishchr7236Cherokeechr6531Cherokeechr7639Cherokeeja22Japaneseiu5488 Inuktitutth4128Thaisr5717Serbiantr4602Turkishzh1461Chinesezh7658Chinesebn1619Banglath7701Thaizh836Chineseeo2037 Esperantoccp1773Chakmabn7086Banglaar2605Arabicfr1468Frenchccp4459Chakmachr5660Cherokeeja3356Japaneseru1237Russianiu7022 Inuktitutzh1887Chineseel5773Greekccp1004Chakmaen4116Englishiu2875 Inuktitutiu4686 Inuktitutsr7771Serbianth1209Thaifr6696Frenches2482Spanishel4802Greekru4153Russianchr2852Cherokeeeo6112 Esperantozh588Chineseccp660Chakmaja4669Japanesezh62Chineseeo1145 Esperantoeo3142 Esperantochr3970Cherokeebn6695Banglachr4775Cherokeeel8Greekel534Greekel7016Greeken5214Englishccp7995Chakmaar6551Arabicen6134Englishar6478Arabiciu5872 Inuktitutja4344Japaneseja7599Japaneseth1663Thaith606Thaitr4279Turkishes2776Spanishtr5320Turkishchr2838Cherokeefr8169Frenchzh292Chineseeo6468 Esperantosr860Serbiantr1857Turkishiu1481 Inuktituten7809Englishtr6439Turkishchr838Cherokeechr271Cherokeebn6915Banglaes2921Spanishru3260Russiantr5795Turkishbn4882Banglachr784Cherokeefr524Frenchja2216Japaneseen68Englishth7847Thaibn4264Banglaja1526Japaneseiu395 Inuktitutja860Japaneseja4336Japaneseiu2983 Inuktitutsr3046Serbianccp1286Chakmaeo3334 Esperantoja73Japaneseeo3076 Esperantoccp3744Chakmaru7450Russianen415Englishtr7991Turkishbn646Banglaeo1771 Esperantosr1842Serbianfr805Frenchfr480Frenchiu4929 Inuktituteo3471 Esperantoes7655Spanishccp2780Chakmachr1514Cherokeetr3520Turkishja2450Japanesezh7964Chinesebn7941Banglaen422Englisheo8055 Esperantoiu3251 Inuktitutru5145Russianar6648Arabices349Spanishzh2121Chineseeo5595 Esperantoja3528Japaneseeo3816 Esperantoar7248Arabiceo1005 Esperantoja6803Japanesesr5842Serbianen3046Englishfr4841Frenchzh146Chinesear6277Arabicar4512Arabicen5896Englishbn1829Banglaiu7092 Inuktitutth5002Thaisr1657Serbianes7037Spanishfr1749Frenchzh2175Chinesear6601Arabicfr7074Frenchth7901Thaizh7394Chineseel2138Greekfr1284Frenchja2607Japanesechr4103Cherokeees2611Spanishar129Arabicen6652Englishfr2735Frenchbn3934Banglazh3942Chinesechr1466Cherokeees6106Spanishiu4378 Inuktitutccp4656Chakmaja6752Japanesefr7158Frenchbn1431Banglatr6865Turkishes6833Spanishfr4344Frenchiu5291 Inuktitutar5231Arabicar4555Arabicar4918Arabicru6703Russianar6404Arabicsr8102Serbianccp988Chakmaar738Arabiciu3885 Inuktitutru7375Russianbn5650Banglaeo7124 Esperantoes1776Spanishzh1819Chinesear4225Arabicfr6577Frenchccp1783Chakmafr3920Frenchar7762Arabicfr6149Frenchiu7138 Inuktitutzh2659Chinesechr8084Cherokeeel4103Greeksr1149Serbianel7901Greekfr6264Frenchja4876Japaneseth5096Thaiel5680Greekccp4138Chakmaar2621Arabicchr7562Cherokeeth319Thaizh5893Chinesezh6650Chinesear4352Arabicen1354Englishth5691Thaies430Spanishsr1652Serbianiu3781 Inuktitutel5498Greekeo2471 Esperantoes1663Spanishar2325Arabicsr3833Serbianar2601Arabicccp2392Chakmath4415Thaibn4469Banglaja8076Japanesechr80Cherokeeja7605Japanesear1244Arabiceo93 Esperantoeo6168 Esperantoja5098Japanesesr3166Serbianth5958Thaibn2818Banglasr4568Serbianth2921Thaisr737Serbianel4009Greekja6277Japanesefr525Frenchfr2505Frenchth1946Thaitr6942Turkishel2919Greeksr388Serbianzh2945Chineseeo6276 Esperantoen1528Englishes7907Spanishtr1536Turkishiu7863 Inuktitutja4721Japanesefr5471Frenches6023Spanishbn4888Banglafr3358Frenchth7579Thaitr5157Turkishru1048Russianen1288Englishen6015Englisheo5568 Esperantoja2089Japanesear3799Arabicbn7460Banglael3339Greeken263Englishru439Russiantr5205Turkishbn116Banglabn1042Banglabn2481Banglaccp4171Chakmael6565Greekar4135Arabiczh3755Chinesees5565Spanishsr7160Serbianes203Spanishar4924Arabicbn298Banglaiu2069 Inuktitutth7638Thaizh5769Chineseel4338Greekar4455Arabicel3912Greekar6590Arabicel4395Greekfr5603Frenchja4288Japanesesr105Serbianes4192Spanishja3847Japaneseccp1727Chakmaeo3417 Esperantochr2892Cherokeefr197Frenchccp5974Chakmael3390Greekes3719Spanishchr702Cherokeeth2856Thaichr479Cherokeees6532Spanishel5626Greekbn239Banglatr7657Turkishtr6940Turkishja1009Japaneseru4423Russianiu4388 Inuktitutja2846Japaneseeo4403 Esperantoja7810Japanesebn5754Banglaes2819Spanishfr21Frenchru4476Russianar5534Arabicsr653Serbiansr2450Serbianar3884Arabictr166Turkishja3960Japanesefr2702Frenchth4570Thaisr4418Serbianes6172Spanishsr6563Serbianccp5438Chakmaen5931Englishar3432Arabicbn1231Banglaen1088Englishen7296Englishth1050Thaien4710Englishchr4626Cherokeeru4535Russianfr3639Frenchbn3435Banglazh3852Chineseiu4963 Inuktitutes6943Spanishth6815Thairu7464Russianth2813Thaiccp4945Chakmazh2069Chinesetr1774Turkishchr601Cherokeesr4005Serbianchr157Cherokeeja7899Japanesezh5840Chineseeo2607 Esperantoiu3672 Inuktitutfr6824Frenchel6386Greekes173Spanisheo5493 Esperantoiu5172 Inuktitutru7851Russianfr6000Frenchfr6806Frenchth1855Thaibn612Banglaiu7262 Inuktitutsr5066Serbianth4579Thaichr497Cherokeear60Arabicsr1932Serbianchr468Cherokeeeo3588 Esperantoes1631Spanishsr3038Serbiantr1579Turkishja6533Japaneseeo2776 Esperantoes2093Spanishth5794Thaieo5416 Esperantoen2440Englishchr1167Cherokeesr3681Serbianes7808Spanishth2861Thaitr6889Turkishja2805Japanesechr7429Cherokeees7336Spanishfr7589Frenchtr6203Turkishzh7822Chinesechr1881Cherokeeen696Englishth2761Thaija7628Japanesear4894Arabicfr3741Frencheo5877 Esperantosr7810Serbianccp258Chakmafr5133Frenchja8080Japanesees4511Spanishsr7204Serbianel6001Greekiu6429 Inuktitutchr5582Cherokeear6039Arabicbn2499Banglaja2268Japanesezh2177Chineseja6151Japanesees5908Spanishtr3819Turkishfr352Frenchel8047Greekiu1626 Inuktitutja4164Japanesesr2419Serbianar402Arabiceo1068 Esperantobn1637Banglasr2793Serbianiu782 Inuktitutchr8190Cherokeezh5253Chineseru7670Russianccp6187Chakmafr18Frenchzh766Chineseen3172Englishth857Thaien6079Englishiu2898 Inuktituteo3968 Esperantoel3787Greekja2366Japaneseel1162Greekes1244Spanishbn1029Banglaeo8090 Esperantoja2023Japanesechr2683Cherokeeru7359Russiansr1310Serbiantr6336Turkishtr5154Turkishtr4193Turkishzh4257Chinesear5629Arabicsr4478Serbianar919Arabicth2318Thaibn1444Banglaccp6747Chakmael2170Greekfr4540Frenchzh1892Chinesetr4513Turkishchr1093Cherokeebn6690Banglachr2705Cherokeechr6106Cherokeeen4743Englishsr2059Serbiansr440Serbianeo3538 Esperantoel7180Greekccp5636Chakmaes4824Spanishtr6037Turkishen3742Englishen6489Englishccp672Chakmael1775Greekchr3715Cherokeeiu26 Inuktituttr8090Turkishbn3242Banglabn938Banglabn4786Banglachr5317Cherokeeeo1568 Esperantoccp2982Chakmachr8191Cherokeezh6514Chineseel7244Greekeo5228 Esperantoru246Russiansr683Serbianar900Arabiczh1939Chineseiu4691 Inuktitutzh6385Chinesees811Spanishja2723Japanesear1443Arabicen4274Englishru3900Russianes4810Spanishth944Thaitr5200Turkishtr549Turkishfr6107Frencheo6016 Esperantoes6832Spanishfr2320Frenchbn3818Banglabn1979Banglabn3194Banglaen959Englishccp2637Chakmaes6517Spanishiu5056 Inuktitutzh3543Chineseja3371Japaneseja1788Japaneseccp482Chakmaja3942Japaneseja5737Japaneseeo5459 Esperantoja1733Japanesetr406Turkishen5554Englishen1722Englishsr1168Serbianth2562Thaith7949Thaiccp4443Chakmatr1264Turkishbn7802Banglaja1480Japaneseel8120Greekru5567Russianes8173Spanishsr6996Serbianbn3599Banglatr4718Turkishel879Greeken4711Englishsr3270Serbianiu1544 Inuktitutfr2289Frenchzh3585Chineseth2967Thaiar5132Arabicja5855Japaneseth1243Thaisr4387Serbianes6805Spanishbn5911Banglath4307Thaitr7655Turkishar8057Arabicth7892Thaibn2777Banglael7634Greeksr756Serbianen4209Englishtr288Turkishar6836Arabicth6995Thaisr5725Serbianchr1920Cherokeefr1056Frenches3776Spanishja6522Japaneseccp4754Chakmaja5791Japanesesr5779Serbianes5856Spanishiu2435 Inuktituttr4711Turkishtr7385Turkishsr6797Serbianeo638 Esperantoru3679Russianru7314Russianfr5668Frenchfr5290Frenchbn6068Banglael725Greekzh3467Chineseeo3186 Esperantotr5497Turkishes3229Spanishth8107Thaiar483Arabiczh6113Chinesetr144Turkishbn4255Banglaes800Spanishja4686Japaneseja7584Japanesetr3399Turkishth6183Thairu3430Russiansr693Serbianel422Greeken1554Englishccp4488Chakmaen2643Englisheo2630 Esperantochr3645Cherokeezh3554Chinesear1121Arabicar7350Arabiczh1168Chinesear5449Arabicbn1903Banglaiu4464 Inuktitutar3086Arabicel457Greekiu7059 Inuktitutel8020Greekja1958Japanesefr5990Frenchru553Russiansr474Serbianzh2420Chinesear432Arabicbn7265Banglaccp6675Chakmath5897Thaifr4937Frenchru2213Russianes2500Spanishiu3715 Inuktitutchr5729Cherokeeru5977Russianru4237Russianru6502Russianccp5635Chakmaes4122Spanishiu1807 Inuktitutsr5447Serbianzh1205Chinesechr4384Cherokeeja5612Japaneseja2476Japaneseiu6281 Inuktitutchr2741Cherokeeja556Japanesechr3264Cherokeeen2651Englishfr3222Frenchel4632Greekiu5495 Inuktitutsr5542Serbianth7421Thaiar5291Arabicth3161Thaichr4048Cherokeeeo7880 Esperantoen253Englishes5339Spanishfr1919Frenches2048Spanishtr4755Turkishzh5272Chineseel8049Greekiu1313 Inuktitutfr5693Frenchfr3901Frenchth3249Thaies1612Spanishth2834Thaija7154Japaneseiu2642 Inuktitutja7327Japanesebn4840Banglazh8Chineseeo3260 Esperantoccp1120Chakmaen6078Englisheo7209 Esperantoru3283Russianfr904Frenchiu7299 Inuktituttr1996Turkishzh206Chinesezh3208Chinesechr5016Cherokeeiu5000 Inuktitutfr6388Frenchchr3412Cherokeetr6704Turkishes7784Spanishfr1669Frenchru1432Russianiu3171 Inuktitutfr2797Frenchth4505Thaiccp5019Chakmazh734Chinesesr7638Serbianiu966 Inuktitutar2468Arabiciu7618 Inuktitutzh2808Chinesechr7001Cherokeeccp446Chakmaccp5339Chakmasr6234Serbianen6333Englishar7896Arabicth1965Thaifr295Frenchen828Englishja4223Japanesebn3025Banglaja5945Japaneseja6497Japaneseccp2201Chakmaeo4978 Esperantobn3558Banglafr2989Frenchccp5205Chakmaccp8017Chakmaen845Englishchr1012Cherokeeth6283Thaien7471Englishru6417Russianiu4959 Inuktitutsr465Serbianiu1832 Inuktitutth1488Thaibn5303Banglaccp2508Chakmaes4731Spanishfr4858Frenchth4306Thaizh4891Chineseiu7044 Inuktitutccp5260Chakmaes2401Spanishzh3681Chinesezh8121Chineseen5842Englishja4641Japaneseru7589Russianth4565Thaichr3625Cherokeefr8025Frenchel146Greekru7503Russianccp4155Chakmaes1926Spanishth1392Thaiar1839Arabicchr3325Cherokeees5415Spanishchr1608Cherokeear6891Arabicel6281Greekru4008Russianar7428Arabiczh126Chinesear5658Arabicbn1923Banglabn2110Banglatr7423Turkishes4552Spanishar4411Arabicth6892Thaiiu168 Inuktitutru5481Russiantr7590Turkisheo3862 Esperantobn3249Banglaccp5673Chakmaen3361Englishbn4411Banglafr5787Frenchchr6922Cherokeeth1559Thairu3880Russianja5407Japanesechr3915Cherokeesr2719Serbianiu1324 Inuktitutzh6435Chinesear5162Arabictr263Turkishja6061Japaneseen6429Englishccp2275Chakmaccp7057Chakmaeo1487 Esperantoeo4376 Esperantoja4881Japaneseru1063Russianar6899Arabicen3911Englishel5556Greekeo5267 Esperantoccp5747Chakmaru926Russianiu510 Inuktitutsr884Serbianfr5484Frenchth2955Thaizh4995Chineseth1698Thaibn6843Banglabn3161Banglazh5058Chineseel7186Greekeo2726 Esperantoeo5361 Esperantozh5104Chineseccp7602Chakmaja6612Japanesetr2451Turkishiu5199 Inuktitutar6608Arabicja3645Japaneseru6868Russianen941Englishbn6567Banglachr7660Cherokeees4560Spanishja7517Japanesear2100Arabicbn7087Banglath5752Thaitr6266Turkisheo287 Esperantoth6816Thaisr4197Serbianel3926Greekth7504Thaichr3511Cherokeetr3805Turkishiu3391 Inuktitutzh6938Chinesear4172Arabicccp2833Chakmafr7644Frenchtr779Turkishar1506Arabices2749Spanisheo8022 Esperantoen5138Englishfr5744Frenchel4038Greekbn1003Banglasr4201Serbianeo1160 Esperantoru2519Russianru2925Russianru3633Russianes5757Spanishiu7433 Inuktitutccp2914Chakmabn3059Banglabn6125Banglaen7314Englishsr6150Serbianja4782Japaneseeo1590 Esperantochr2557Cherokeebn4768Banglaeo3697 Esperantoiu6790 Inuktitutja7678Japaneseth4337Thaija4533Japanesebn915Banglaar6267Arabicchr2748Cherokeeeo464 Esperantoel3965Greekja455Japanesezh1759Chineseeo6034 Esperantoen1793Englishru2972Russianzh1408Chinesechr2913Cherokeefr5292Frenchzh249Chineseccp3674Chakmaja103Japaneseru3692Russianja1280Japanesetr7543Turkishfr2481Frenchzh4454Chineseeo3934 Esperantosr3078Serbianth1606Thaith6490Thairu5633Russianel7995Greekzh1565Chineseccp2704Chakmael8005Greekfr6733Frenchja1826Japaneseru3556Russianiu3252 Inuktitutbn362Banglasr6094Serbiantr2606Turkishes7326Spanishes1931Spanishtr7666Turkishar1659Arabicbn2033Banglachr6044Cherokeeccp5049Chakmaes2512Spanishzh451Chineseeo4751 Esperantoen3354Englishru7061Russiansr7384Serbianar2840Arabiceo529 Esperantoth3965Thaizh5458Chineseth5042Thaiccp6739Chakmath5074Thaifr2479Frenchja4357Japanesesr1861Serbianar2758Arabicccp5346Chakmaja3747Japaneseen1130Englishtr1265Turkishtr6247Turkisheo4888 Esperantoth7019Thaichr7518Cherokeechr3184Cherokeees7530Spanishchr6969Cherokeeen7703Englishfr4186Frenchru3621Russiantr5417Turkishbn4124Banglaiu2143 Inuktitutzh5108Chinesechr6097Cherokeechr4766Cherokeeeo3462 Esperantoccp729Chakmaeo8056 Esperantoiu7755 Inuktitutth3155Thaichr5594Cherokeefr8088Frencheo7946 Esperantoiu2596 Inuktitutru3179Russianiu7348 Inuktitutiu4041 Inuktitutja920Japanesetr483Turkishbn5702Banglaar5510Arabicru1912Russianru4945Russianru5959Russianel1943Greekar1980Arabicel2611Greekes7757Spanishbn4552Banglatr1641Turkishbn6677Banglaar723Arabicfr1639Frenchsr372Serbianccp3445Chakmaes1208Spanishfr5030Frenchja6578Japaneseccp4116Chakmafr3440Frenches2347Spanishiu6165 Inuktitutsr1422Serbianth7739Thaitr4098Turkishtr4920Turkishtr5538Turkishar165Arabicfr1745Frenchfr6943Frenchja7204Japanesees2303Spanishccp6721Chakmaja4486Japaneseen2287Englishru7802Russianar5720Arabicccp2804Chakmaccp2088Chakmafr1157Frenchsr5683Serbianchr3854Cherokeeel1795Greekbn4305Banglaes3181Spanishel3438Greekiu2473 Inuktituteo7060 Esperantosr4018Serbiansr7302Serbianzh1997Chinesees3561Spanishth2722Thaiar1061Arabicchr4477Cherokeeiu2448 Inuktitutbn742Banglafr1613Frenches1304Spanisheo4870 Esperantoja458Japaneseja5889Japaneseru1819Russianes1488Spanishiu1603 Inuktitutja288Japanesear6746Arabicbn4937Banglaes6069Spanishtr2152Turkishzh2476Chinesebn7645Banglath1573Thaiccp919Chakmaeo2730 Esperantoru753Russianzh2016Chinesezh3430Chineseth1910Thaiccp5531Chakmaar445Arabicru2999Russianja2264Japanesebn3767Banglasr431Serbianes1089Spanishen6360Englishes6609Spanishel4034Greekeo6917 Esperantoes519Spanisheo3206 Esperantochr626Cherokeeeo7525 Esperantoel3240Greekbn1316Banglaes8007Spanishtr991Turkishja6255Japaneseen3021Englishtr236Turkishth5470Thaien2229Englishru8013Russiantr4248Turkishja7387Japaneseth2903Thaija1308Japanesechr4685Cherokeeen4286Englishru832Russianth6708Thaitr1606Turkishen8080Englishel7363Greekar4274Arabiciu6246 Inuktitutes7836Spanishel3079Greeksr7076Serbianiu7166 Inuktitutsr5235Serbianes2574Spanishiu5042 Inuktitutccp1965Chakmaes1413Spanishccp1438Chakmaja5803Japanesebn7508Banglazh3991Chinesezh7232Chinesear714Arabicccp6018Chakmaes2802Spanishiu1011 Inuktitutiu4876 Inuktitutsr3383Serbianccp1917Chakmaiu6129 Inuktitutsr2249Serbianes107Spanishchr4038Cherokeetr5372Turkishes339Spanishfr4568Frenchel7796Greekiu4854 Inuktituten804Englishel862Greekfr5356Frenchfr6570Frenchtr7279Turkishzh5119Chinesebn3590Banglazh6606Chinesear7296Arabicja7851Japanesezh4040Chineseen4889Englishes3004Spanishar1047Arabicth2155Thaien2612Englishiu5046 Inuktitutzh4812Chinesezh7940Chinesezh2634Chineseja494Japaneseru3554Russiansr2308Serbianbn5116Banglabn6898Banglaru6367Russianel828Greeksr5392Serbianth7040Thaies2376Spanishtr5221Turkishfr7963Frenchsr2209Serbiantr1684Turkishth4595Thaifr4335Frenchzh363Chinesechr5667Cherokeesr4876Serbianja2885Japaneseja950Japanesebn7318Banglatr355Turkishar8127Arabicel5913Greekth5795Thaiccp6744Chakmachr2499Cherokeezh7173Chineseccp6806Chakmaja3916Japanesefr6226Frencheo8057 Esperantozh218Chinesetr1847Turkishth3647Thaiar5007Arabicja2935Japaneseccp2906Chakmaja5074Japaneseru4090Russianbn5545Banglasr5410Serbianar4874Arabicfr4323Frenchja1840Japaneseth3340Thaichr5714Cherokeefr4016Frenchsr3691Serbianzh5538Chineseel3733Greekeo7075 Esperantoel2648Greekfr1059Frenchtr1963Turkishja4103Japanesear530Arabices3295Spanishiu7167 Inuktituttr6642Turkishzh1316Chinesees6658Spanishbn4029Banglaja3949Japanesefr3962Frenchbn1926Banglafr5776Frenchchr905Cherokeeiu467 Inuktitutes8179Spanishth4451Thaija5989Japaneseen5537Englishru4639Russianes5888Spanishiu7111 Inuktitutzh4704Chinesear2220Arabicen5993Englishtr4001Turkishja1504Japanesees5990Spanishsr5330Serbianeo1588 Esperantoth1472Thaith1863Thairu7987Russianchr3783Cherokeeen1497Englisheo6325 Esperantoja253Japanesees1722Spanishfr5848Frenchiu3326 Inuktitutccp6780Chakmaar4342Arabicja5154Japanesebn5177Banglaes4757Spanishccp4657Chakmazh1845Chinesefr4294Frenchfr3852Frenchar5486Arabicchr572Cherokeefr7267Frenchiu7969 Inuktitutchr5139Cherokeeeo5603 Esperantozh6802Chineseth6789Thaija4279Japaneseccp2960Chakmaru5939Russianru6796Russianfr7091Frenchru5379Russianfr7345Frenchtr2019Turkishja3995Japanesear3759Arabicccp596Chakmachr8092Cherokeees4260Spanishiu4164 Inuktitutar6273Arabicen5089Englishtr2102Turkishtr7890Turkishtr6910Turkishes4187Spanishccp1458Chakmael6603Greekiu2163 Inuktitutzh3596Chinesebn5961Banglaccp41Chakmaes1012Spanishiu3142 Inuktitutth7225Thaibn5185Banglaccp2882Chakmaccp6911Chakmaru4992Russianes5761Spanishchr662Cherokeees1040Spanishru2306Russianbn1787Banglael1777Greeksr293Serbianar4242Arabictr3667Turkishtr4364Turkishbn2285Banglaru5850Russianccp2198Chakmael6018Greekeo7764 Esperantoes4940Spanishja6583Japanesezh3321Chineseiu8060 Inuktitutru4123Russianth4395Thaiiu7408 Inuktitutfr2762Frenchsr1288Serbianchr2001Cherokeeeo3810 Esperantoeo6755 Esperantotr7170Turkishtr277Turkishchr6709Cherokeefr7673Frenchar5118Arabicar2685Arabiceo8129 Esperantoes7656Spanishja4743Japanesear651Arabicfr7914Frenchccp5066Chakmaen1227Englishiu728 Inuktituten1936Englishfr7624Frenchru6058Russiansr8042Serbianja1239Japanesesr4132Serbiantr4774Turkishzh877Chineseiu6878 Inuktituten4103Englishja4168Japanesezh2664Chinesechr71Cherokeeru2977Russianeo711 Esperantoeo3905 Esperantofr3643Frenchja2210Japanesezh3897Chineseth7792Thairu509Russianja4064Japanesear7422Arabicccp4216Chakmaes887Spanishja1371Japaneseiu6233 Inuktitutzh633Chinesechr3079Cherokeees2298Spanishes4086Spanishiu6200 Inuktitutes4673Spanishja7688Japanesetr2772Turkishja4024Japanesefr7889Frenches1638Spanishth4182Thaith2999Thaith7240Thaith8099Thaiar2173Arabicccp81Chakmabn3112Banglael5047Greekzh3428Chineseeo5599 Esperantoccp4348Chakmaeo6485 Esperantoes1991Spanishru6751Russianen2172Englishzh5523Chinesechr2433Cherokeeiu2714 Inuktitutchr3120Cherokeeth7252Thaibn1212Banglaru8146Russianchr984Cherokeeth552Thaiel6472Greekfr5649Frencheo4763 Esperantoru7298Russianzh297Chinesetr5002Turkishel1396Greekja7561Japaneseen5990Englishtr2698Turkishja4318Japanesear4777Arabicel4224Greekes4728Spanishen5880Englishes6131Spanishel741Greekth7668Thaibn7902Banglaeo2467 Esperantozh919Chinesees2223Spanishbn1221Banglatr1466Turkisheo6863 Esperantoes2053Spanishru8009Russiantr4833Turkishar7895Arabicth1700Thaith7851Thaibn850Banglachr1956Cherokeefr8077Frenchiu329 Inuktituttr685Turkishfr962Frenchth6621Thaien5458Englishbn4660Banglafr7078Frenchru7633Russianbn3780Banglaru1993Russianja1833Japanesetr1589Turkishbn1475Banglaeo4994 Esperantoiu3740 Inuktitutar4144Arabicel3477Greekar438Arabicru970Russianth5077Thaichr6721Cherokeeiu2249 Inuktitutccp1370Chakmafr729Frenchchr7773Cherokeeth700Thaien2973Englishiu7988 Inuktitutccp6709Chakmaes625Spanisheo4257 Esperantofr2386Frencheo151 Esperantosr7644Serbianiu5264 Inuktitutccp3713Chakmath824Thaiiu5899 Inuktitutel6666Greekeo7757 Esperantoar4965Arabicel1582Greekja7329Japaneseja7576Japanesear4929Arabictr5310Turkishel547Greekel7684Greeken1250Englisheo7408 Esperantoccp987Chakmaeo6116 Esperantosr7340Serbianja4943Japaneseja1068Japanesees5052Spanishen607Englishes459Spanishth3121Thaichr5030Cherokeeen7303Englishru1660Russianfr2318Frenchar5848Arabicen742Englishsr4192Serbianiu3673 Inuktituteo4806 Esperantoen3127Englishru3979Russiansr3093Serbianja6512Japanesesr2884Serbianth7584Thaitr1381Turkishzh6658Chineseccp5744Chakmaeo2633 Esperantobn1504Banglaar1417Arabiciu228 Inuktitutel115Greekel5984Greektr950Turkishbn7229Banglazh491Chineseen7711Englishja7128Japaneseth464Thaiiu224 Inuktitutfr6844Frenchzh5964Chineseru1376Russianeo5987 Esperantofr42Frencheo4422 Esperantoen833Englisheo7886 Esperantoiu6040 Inuktitutes3671Spanishen7785Englishbn7438Banglachr4927Cherokeefr4948Frenchbn2396Banglabn2160Banglaja495Japaneseth6949Thaizh2073Chinesechr5565Cherokeear1974Arabiczh5639Chineseru7148Russianchr3814Cherokeeja867Japanesees4979Spanishar1775Arabicbn206Banglaeo5798 Esperantoja7427Japaneseen2295Englishja6596Japanesees4364Spanishfr5106Frenchtr7167Turkishel6615Greekbn123Banglaes7579Spanishbn1283Banglaccp4492Chakmaja4701Japanesebn7292Banglaen5712Englisheo2691 Esperantoccp5032Chakmaja7746Japaneseel7374Greekel4450Greekccp2823Chakmael2449Greekeo8062 Esperantofr5896Frenchiu2066 Inuktitutzh5483Chinesetr7853Turkishbn5297Banglachr586Cherokeeeo685 Esperantoeo7641 Esperantotr6320Turkishccp2367Chakmasr1218Serbianiu6641 Inuktitutar0Arabiczh4420Chineseel62Greekja983Japaneseccp3594Chakmaccp7558Chakmaes2795Spanishiu7650 Inuktitutzh50Chinesezh5960Chinesezh2237Chinesear3667Arabiceo2436 Esperantosr7602Serbianru797Russianchr3661Cherokeeel2563Greekes1293Spanishsr3170Serbianar523Arabicel5044Greekes6454Spanishru5445Russianeo4148 Esperantoth3199Thaiar1869Arabiciu1486 Inuktituteo7329 Esperantoes2740Spanishar2802Arabiciu4974 Inuktitutru5655Russiantr3919Turkishzh7506Chinesezh6154Chinesees3145Spanishsr792Serbianzh5598Chineseel7170Greeken7083Englisheo1926 Esperantochr4421Cherokeeel6739Greekccp3323Chakmaru125Russianes4470Spanishfr5239Frencheo2279 Esperantoja5075Japaneseen3416Englishzh6865Chinesebn686Banglazh3754Chineseja3370Japaneseja5577Japanesetr2962Turkishccp608Chakmaar2290Arabicen2191Englishes4527Spanishar1815Arabicar5344Arabicccp7967Chakmael1378Greekfr5214Frenchtr4345Turkishzh7910Chineseccp5173Chakmazh6747Chinesetr1016Turkishel344Greekru5100Russianru7838Russianar3129Arabicel2841Greekfr470Frenchbn1398Banglael1608Greekar1113Arabictr5290Turkishbn3647Banglath3983Thaiccp5466Chakmael4918Greekchr5891Cherokeeeo770 Esperantoes6070Spanisheo4407 Esperantobn6693Banglatr1778Turkishchr5677Cherokeeth6253Thaichr3943Cherokeeru5701Russianiu1895 Inuktitutja2263Japanesees5561Spanishtr7839Turkisheo5808 Esperantochr7124Cherokeeccp1563Chakmabn557Banglaccp4612Chakmazh1392Chinesebn2790Banglaiu2217 Inuktitutbn7397Banglabn2890Banglath308Thaiar2440Arabictr760Turkishchr7656Cherokeechr5496Cherokeefr5893Frenchth6600Thaies4642Spanishth6428Thaiiu5265 Inuktitutru3059Russianeo2832 Esperantochr1761Cherokeeen6563Englishen1186Englishel2150Greekiu454 Inuktitutiu2075 Inuktitutsr7075Serbiansr6426Serbianccp4640Chakmaru3436Russianar7842Arabicel1010Greeken7514Englishzh2023Chineseel5011Greekiu1018 Inuktitutccp2289Chakmasr1820Serbianes6226Spanishru1254Russianccp2387Chakmafr2165Frencheo4738 Esperantoel6962Greekfr3963Frenchchr6020Cherokeechr5252Cherokeeccp4795Chakmaccp5028Chakmaes4939Spanishzh854Chinesetr3503Turkishchr2802Cherokeeel2096Greekeo3624 Esperantoth8012Thaieo887 Esperantofr4201Frenchth1887Thaiar7986Arabicel6434Greektr1829Turkishes5581Spanishfr4083Frenchzh7445Chinesechr1481Cherokeeja7120Japanesesr8008Serbianzh2146Chineseeo7811 Esperantoes5690Spanishsr5376Serbianja4048Japanesezh2284Chinesetr227Turkishen2970Englisheo6317 Esperantoth74Thaija1379Japanesear7552Arabicfr2302Frenchja1939Japaneseja3080Japanesetr1937Turkishbn4382Banglaiu816 Inuktituttr4739Turkishes3288Spanishbn2999Banglaes722Spanishchr408Cherokeeja5979Japanesear2543Arabiczh623Chinesear5639Arabicth2357Thaieo7854 Esperantozh5160Chineseja4598Japaneseru7810Russiansr6328Serbianja7266Japanesebn135Banglaiu5580 Inuktituten282Englishtr7861Turkishar5191Arabicsr1041Serbianru726Russianen834Englishru47Russianzh2039Chinesezh4401Chineseel7914Greekiu6243 Inuktitutru6740Russianar2137Arabicsr5013Serbianel1742Greekth1853Thaizh3296Chinesezh6045Chinesechr3100Cherokeees583Spanisheo745 Esperantosr7132Serbianel7915Greeksr803Serbianbn4592Banglafr1131Frenchar6714Arabicel1347Greekes6144Spanishen4537Englishen6840Englishfr3675Frenchiu1299 Inuktitutar2989Arabiciu4140 Inuktitutar6128Arabicth2502Thaizh255Chinesezh5283Chinesetr3932Turkishzh2819Chinesechr3550Cherokeeeo2312 Esperantotr4675Turkishchr6704Cherokeebn3601Banglaen2654Englishsr796Serbianccp5386Chakmaru1545Russianen1962Englishth6092Thaibn5385Banglaen3307Englishth822Thaifr1087Frenchth4010Thaibn3711Banglaen7579Englishen3121Englishel1849Greekfr1083Frenchel3058Greekar5943Arabicccp3012Chakmasr1425Serbiantr6612Turkishccp5442Chakmaes7630Spanishtr3403Turkishchr3261Cherokeeel2324Greekchr1177Cherokeeen4753Englishru4746Russianeo3559 Esperantoth5876Thairu2761Russianth452Thaien1878Englishen6590Englishar5067Arabicel313Greekiu4444 Inuktitutth6231Thaiar4629Arabicsr6627Serbianbn5208Banglath2281Thaies1942Spanishes7628Spanishen7311Englishth6834Thaieo5230 Esperantoar5322Arabicbn3596Banglaen7595Englishel6183Greektr5370Turkishccp6034Chakmaccp2258Chakmaiu4357 Inuktituttr4344Turkishel6566Greekth7514Thaifr6463Frenches3447Spanishfr6186Frenchru5833Russianchr4203Cherokeebn4220Banglaeo7813 Esperantoeo5377 Esperantochr3418Cherokeeeo5646 Esperantoiu661 Inuktitutchr7623Cherokeeru8025Russianzh1485Chinesesr331Serbianes2874Spanishja5168Japanesezh5562Chineseth3772Thaien6921Englishtr6578Turkishth1577Thaibn942Banglachr3316Cherokeeth5965Thaith7578Thairu2514Russiansr1554Serbianeo7656 Esperantotr4605Turkishen417Englishes7675Spanishzh2443Chinesebn5024Banglabn5089Banglaes6741Spanishel162Greekar1852Arabicel1685Greekccp7969Chakmabn667Banglaiu3343 Inuktitutchr6045Cherokeeel539Greekfr4502Frenchtr6301Turkishth1131Thairu4315Russianru6516Russianen6323Englishzh4351Chinesees6209Spanishbn1063Banglael4905Greekbn856Banglaeo5144 Esperantoel5824Greeksr7188Serbianzh4503Chinesees5340Spanishes3974Spanishen1672Englishen1579Englishbn4655Banglaar6907Arabicfr6642Frenchth3921Thaiar7372Arabictr4934Turkishtr5227Turkishzh6405Chineseccp3991Chakmaja7233Japanesetr7498Turkisheo3789 Esperantoar3585Arabicar771Arabicbn2646Banglaccp6197Chakmaen5632Englisheo4862 Esperantoru5046Russiantr3299Turkishzh3618Chineseru7772Russiantr3879Turkishes6207Spanishtr8056Turkishsr50Serbianccp4259Chakmatr5724Turkishes2414Spanishes8152Spanishar1704Arabiciu7717 Inuktitutzh7866Chineseru5414Russianchr4194Cherokeebn1463Banglaar7048Arabiceo7905 Esperantotr6398Turkishar6875Arabicsr4827Serbianru3731Russianzh4228Chinesesr2327Serbianru4079Russianar6376Arabicchr2864Cherokeetr4409Turkishar5809Arabicja7699Japaneseeo2704 Esperantoes7569Spanisheo6219 Esperantofr5834Frenchbn8000Banglazh6686Chinesesr3831Serbianzh550Chinesesr1220Serbianes6553Spanishsr2126Serbianzh3280Chinesees4144Spanishar4330Arabicfr8123Frenchen543Englishbn4353Banglafr1820Frenchzh4260Chineseel6473Greekeo1245 Esperantofr4651Frenchru2923Russianth2239Thaien6856Englishccp3269Chakmaeo3848 Esperantoccp2733Chakmaiu1260 Inuktitutes6734Spanishchr1796Cherokeeen2458Englishen5379Englishfr2515Frenchtr2143Turkishbn4921Banglaiu1697 Inuktitutth273Thaija5309Japaneseru7587Russianccp907Chakmaccp6065Chakmaccp7625Chakmaen8162Englishtr6864Turkishar8024Arabicen594Englishbn6305Banglaar4611Arabiczh4031Chinesechr1365Cherokeeen6893Englishchr4565Cherokeechr5442Cherokeeru1056Russianes3078Spanishru2235Russianzh4042Chinesebn7563Banglaiu1004 Inuktitutar7977Arabicen2704Englishsr3750Serbianth4443Thairu3540Russiansr4401Serbianar5690Arabicar3607Arabicar7998Arabictr1368Turkisheo3686 Esperantobn3432Banglaes4974Spanishbn6409Banglabn152Banglaru1910Russianel2756Greektr4503Turkishchr3754Cherokeeru7677Russianja2374Japanesefr6260Frenchru7482Russianru525Russianeo192 Esperantoccp7983Chakmatr2965Turkishccp3560Chakmafr2800Frenchen1015Englishbn6203Banglaccp3858Chakmaar5179Arabicchr5773Cherokeezh4933Chineseja6325Japanesezh6515Chinesesr4150Serbianar891Arabicar5020Arabicbn7867Banglatr173Turkishar6766Arabicar6465Arabicru6508Russianen5036Englisheo7842 Esperantoeo1960 Esperantofr4426Frenchja6328Japaneseel2764Greekja5686Japaneseen4249Englishth7210Thaifr2173Frenchsr4870Serbianbn4533Banglaja5042Japanesetr3550Turkishchr4216Cherokeeja5059Japanesetr8088Turkishsr4902Serbianth6608Thaija2249Japaneseru6003Russianen2696Englishel5656Greekzh7853Chinesefr3934Frenchth3152Thaizh968Chinesebn7656Banglachr4651Cherokeear5488Arabicar4012Arabicsr6494Serbianzh129Chineseiu2419 Inuktitutel3935Greekzh5848Chinesees4138Spanisheo1357 Esperantoar3216Arabicfr5381Frenchar6600Arabicel230Greektr2620Turkishth3012Thaizh7891Chinesechr2326Cherokeeja5579Japaneseen1948Englishen991Englishja6630Japanesechr1471Cherokeeel2420Greekchr85Cherokeeth6095Thaitr6139Turkishccp8034Chakmaen4547Englishbn798Banglazh3566Chinesefr4443Frenchchr3724Cherokeesr325Serbianiu4835 Inuktitutccp4787Chakmaen7649Englishbn5336Banglaeo4066 Esperantoccp7146Chakmachr55Cherokeeeo3250 Esperantoel6983Greekchr3789Cherokeeth6912Thaizh2832Chineseccp1311Chakmaar1245Arabicsr7952Serbianeo5388 Esperantoru2434Russianen3143Englishiu3325 Inuktituttr1118Turkishen3326Englisheo254 Esperantoeo2609 Esperantosr1234Serbiansr1624Serbianiu6778 Inuktitutbn3797Banglafr2791Frenchar1682Arabicen1399Englishfr5017Frenchsr39Serbianth1638Thaichr6128Cherokeetr5956Turkisheo3378 Esperantoth5567Thaizh1319Chineseth2277Thaiel7382Greekth2631Thaiar7318Arabices7179Spanishbn3225Banglatr6243Turkishru464Russianen3298Englishzh3375Chinesesr6724Serbianzh735Chineseen1923Englisheo5682 Esperantoar2534Arabiceo2425 Esperantoen6801Englishtr4730Turkishzh1178Chineseja1521Japaneseru4402Russianen4349Englishth1172Thaiel5160Greekja1664Japanesetr2690Turkishbn8082Banglaeo5520 Esperantoes3761Spanishiu4939 Inuktitutja7879Japaneseccp4211Chakmasr1968Serbianru4906Russianel2693Greekzh1975Chineseru1004Russianiu1628 Inuktitutccp7387Chakmath685Thaisr6598Serbianccp4580Chakmachr7974Cherokeeja6910Japaneseth220Thaija4136Japaneseth6370Thaibn2998Banglaeo4661 Esperantoth1705Thaija8093Japaneseja6689Japanesear7679Arabiciu5440 Inuktituten5253Englishsr1002Serbianth3638Thaisr78Serbianbn4151Banglasr5780Serbianel2782Greekes49Spanishiu1852 Inuktitutel242Greekiu2222 Inuktitutbn5561Banglachr95Cherokeees2848Spanishsr4070Serbianchr1536Cherokeeeo1354 Esperantoes7309Spanishja3973Japanesear1511Arabicth3854Thaith1591Thaitr6308Turkishja4245Japanesees7906Spanishar1855Arabicar2669Arabicbn7679Banglaeo721 Esperantoccp7743Chakmaccp978Chakmafr5408Frenchccp1023Chakmatr1523Turkishzh4375Chineseiu755 Inuktitutes2944Spanishfr546Frenchccp2118Chakmaen1840Englishes2931Spanishar5962Arabictr142Turkishja428Japanesechr6316Cherokeeru2473Russiansr8001Serbianzh5478Chineseiu3645 Inuktitutchr39Cherokeeen4659Englishzh6122Chinesear5248Arabicja2232Japaneseja6898Japanesees1666Spanishja209Japaneseja8126Japanesetr250Turkishja6375Japanesees2581Spanishiu6275 Inuktitutru6159Russianja5748Japanesesr6856Serbiantr702Turkishel15Greekth6948Thaichr5725Cherokeeel7188Greeken5476Englishfr3168Frenchsr346Serbianeo3299 Esperantoiu8039 Inuktitutar6387Arabicbn7383Banglaar5404Arabicccp514Chakmaru4052Russiantr717Turkishchr4549Cherokeeiu4687 Inuktituten7258Englishel6239Greeksr6897Serbianel7633Greekccp7168Chakmaes4701Spanishzh82Chineseiu3181 Inuktitutar5770Arabicbn2098Banglaeo8080 Esperantoar273Arabicfr6983Frenchccp1902Chakmaiu5745 Inuktitutiu6869 Inuktitutchr3420Cherokeear8122Arabicen7927Englishja5971Japaneseth5634Thaien5022Englishth2847Thaichr1545Cherokeezh2619Chineseccp6907Chakmatr641Turkishtr5107Turkishar7369Arabicchr2353Cherokeeel1393Greekiu1235 Inuktitutru7748Russiansr3172Serbianeo3029 Esperantobn3896Banglasr4565Serbianes4662Spanishbn5546Banglaja4396Japaneseeo184 Esperantoja4361Japaneseth8040Thaies273Spanishru7086Russiantr7143Turkishtr6949Turkishth6615Thaizh7237Chinesebn6037Banglaccp4745Chakmael2126Greekccp4742Chakmaiu4054 Inuktitutchr5314Cherokeeru365Russianeo1753 Esperantotr188Turkisheo1872 Esperantotr5730Turkishen7340Englishar7680Arabicru2357Russianja7526Japaneseel1525Greekru5750Russiansr4654Serbianbn2188Banglaeo2255 Esperantochr2929Cherokeear5791Arabices8002Spanishfr7134Frenchru7754Russianth302Thairu5951Russianfr3096Frenchja7308Japaneseru4327Russianzh5954Chineseiu7543 Inuktituten4083Englishzh5493Chineseth3910Thaieo6704 Esperantoar5284Arabicbn4900Banglaja6211Japanesear2156Arabictr6109Turkishel2340Greeken4625Englishccp4664Chakmaeo4760 Esperantofr1220Frenchiu2582 Inuktitutel3180Greekiu3757 Inuktitutar3982Arabicsr1223Serbianccp5884Chakmachr1631Cherokeeel6866Greeken7704Englishja250Japanesechr987Cherokeeth257Thaizh4848Chinesezh6210Chinesezh7803Chinesees2569Spanishsr2344Serbianchr1849Cherokeeel673Greekfr5100Frenchchr3356Cherokeear2387Arabicbn7960Banglael7846Greekel2419Greekes492Spanishtr6759Turkishar570Arabictr3790Turkisheo2957 Esperantoja4791Japanesebn3994Banglaeo2365 Esperantoar3458Arabices330Spanishfr2579Frenchsr5211Serbiansr5957Serbianth7738Thaizh7230Chinesezh1216Chinesees2571Spanishja4017Japaneseru2381Russianru4719Russianel6847Greeken4849Englishccp4060Chakmaen216Englishth3643Thaiel5426Greekja5094Japanesetr6053Turkishfr7315Frenchchr2296Cherokeeel1020Greekccp4969Chakmath7717Thaiel4193Greekfr6160Frenchsr2938Serbianru4655Russianiu7533 Inuktitutja5783Japanesear331Arabicen1263Englishes2415Spanishsr1396Serbianru7485Russianbn906Banglaen3961Englishar5517Arabicchr6682Cherokeeel2612Greeksr4462Serbianzh4408Chineseen3205Englisheo1689 Esperantobn3755Banglachr1772Cherokeeel3359Greekel4563Greektr445Turkishsr1158Serbianbn2785Banglaeo5094 Esperantoja1027Japanesetr1836Turkishbn1906Banglatr3675Turkisheo145 Esperantoel1399Greekbn760Banglaccp6949Chakmath1268Thaifr5390Frenchzh894Chinesezh3120Chinesetr5869Turkishth7156Thaitr5734Turkishel2218Greektr7796Turkishru5179Russianzh1233Chineseen8021Englishfr616Frenchsr1574Serbianth6276Thaibn3095Banglaiu703 Inuktitutccp3438Chakmaen7657Englishfr2156Frenchchr6418Cherokeeiu3649 Inuktitutja6315Japanesesr1097Serbianth5116Thaibn4551Banglatr2282Turkishsr4532Serbianes1455Spanishes5844Spanishchr4111Cherokeeiu8023 Inuktitutja5060Japaneseth7223Thaizh3480Chinesefr673Frenchfr1538Frenchru5390Russiansr5310Serbianru2552Russianzh5783Chineseru833Russianccp7326Chakmaru2241Russianeo5421 Esperantoes4616Spanishja2506Japaneseiu521 Inuktitutja6908Japaneseiu7694 Inuktitutzh2322Chinesechr5529Cherokeeiu2191 Inuktitutru3804Russianel427Greekfr3475Frenchen604Englishtr562Turkishel4179Greeksr2764Serbianchr3770Cherokeeen5660Englishar6687Arabicchr2785Cherokeeel7265Greekeo4594 Esperantoar2402Arabices842Spanishzh3057Chineseen5563Englishzh6064Chinesefr3477Frenchru1720Russianzh5894Chinesesr7525Serbiansr2576Serbianzh262Chinesefr3770Frenchfr5555Frenchar6351Arabicar2803Arabicfr8065Frenchchr7442Cherokeeccp1447Chakmaja8123Japaneseru5475Russianja1214Japanesetr3903Turkishzh138Chineseth2966Thaiel2091Greekiu6053 Inuktitutja5401Japaneseth6549Thaija5143Japanesetr4195Turkishja793Japanesezh1386Chinesesr2386Serbianeo3019 Esperantoeo3316 Esperantoes2097Spanishja3436Japanesechr1057Cherokeefr3401Frenchtr4778Turkishchr8150Cherokeeru2945Russianbn2370Banglazh7150Chinesear2589Arabicbn6862Banglaccp7968Chakmaeo5169 Esperantofr7574Frenchtr1729Turkishzh6221Chinesechr7793Cherokeeeo271 Esperantoiu1470 Inuktitutchr7740Cherokeefr2421Frenchccp2622Chakmaar8049Arabices5233Spanishth1672Thaien4344Englisheo923 Esperantoccp1119Chakmasr6140Serbianja3876Japanesechr1802Cherokeechr2837Cherokeeru4482Russianzh2709Chinesear17Arabicbn3544Banglael3531Greekchr1270Cherokeezh7553Chinesetr1652Turkishchr640Cherokeeen4798Englishfr7364Frenchar7683Arabicbn3985Banglazh6576Chinesesr7937Serbianar3064Arabiczh2732Chinesezh6741Chineseen8047Englishru6036Russianes3610Spanishja6418Japaneseel7551Greekja7641Japanesees6040Spanishth6974Thaisr5105Serbianth2133Thaiiu459 Inuktitutfr969Frenchbn6878Banglath6741Thaiiu6675 Inuktitutar4752Arabicel83Greekccp6906Chakmaeo6831 Esperantozh4925Chinesees1948Spanishiu5673 Inuktitutzh309Chinesear1226Arabicccp966Chakmafr1265Frenchfr1691Frenchsr842Serbianen4075Englishfr2866Frenchiu2010 Inuktituteo1408 Esperantobn6494Banglatr3851Turkishth1321Thaiar4516Arabiczh5249Chineseeo6149 Esperantochr4904Cherokeeeo2483 Esperantosr4100Serbianes3118Spanishchr4466Cherokeefr4626Frenchiu5452 Inuktitutru6715Russianchr1052Cherokeeth4190Thaitr2310Turkishiu6572 Inuktitutzh5689Chinesees510Spanishru6748Russianja5272Japanesear8175Arabicccp6635Chakmaes6177Spanishar541Arabicen3523Englishru4860Russiansr1456Serbianfr2846Frenchbn2326Banglaccp6120Chakmaar4878Arabicth1628Thaiiu8025 Inuktitutiu4379 Inuktitutccp4874Chakmaeo8188 Esperantoja6458Japaneseru6356Russiansr2082Serbianen3637Englishel4474Greekzh4418Chineseel254Greekchr743Cherokeefr1146Frenchfr7523Frenchru6201Russianzh6421Chinesear5571Arabices5108Spanishfr4427Frenchiu1758 Inuktituttr7539Turkisheo3523 Esperantosr6625Serbianar1719Arabiceo4624 Esperantoen4913Englishth4427Thaiiu7321 Inuktitutth1197Thaieo564 Esperantoel2559Greekccp501Chakmasr5994Serbianccp4292Chakmaes7855Spanishbn7101Banglatr7565Turkishchr6285Cherokeeen7758Englishar366Arabicbn4948Banglatr2472Turkishchr7590Cherokeeeo2775 Esperantoel2224Greekja7759Japaneseru5832Russianja7618Japaneseth3613Thaiiu7248 Inuktitutccp2413Chakmath2986Thaifr7357Frenchsr7421Serbianth4701Thairu1501Russianeo6392 Esperantozh7629Chinesefr3693Frenchel3190Greekth7475Thaitr1120Turkishzh6422Chineseja3110Japaneseiu6258 Inuktituteo7467 Esperantozh935Chineseja5582Japaneseth6362Thaieo1558 Esperantoel7176Greekiu7560 Inuktitutru7659Russiantr7287Turkishtr2041Turkishtr5803Turkishel385Greekth7897Thaichr6782Cherokeeen2339Englishar5810Arabiczh6392Chinesezh3329Chinesear3326Arabictr6673Turkishzh1904Chineseiu5437 Inuktitutfr106Frenchja4115Japaneseru7099Russiantr3179Turkishchr3424Cherokeeccp4033Chakmatr6202Turkishiu7137 Inuktitutccp6678Chakmaja984Japanesear4458Arabiceo5464 Esperantoru1482Russiantr1972Turkisheo6803 Esperantoar435Arabicru7470Russianen8176Englishja5715Japaneseja5193Japaneseen3177Englishiu8138 Inuktitutth5519Thaitr7867Turkishar6086Arabicsr7901Serbianes5595Spanishccp6035Chakmafr3137Frenchfr258Frenchar2663Arabicfr5683Frenchchr6768Cherokeeth2025Thaieo4180 Esperantoiu7929 Inuktitutzh5078Chineseeo5695 Esperantoen1008Englisheo2938 Esperantoja5827Japanesetr2682Turkishzh1161Chinesezh5822Chineseen2635Englishja507Japanesees1968Spanishiu5086 Inuktituttr1651Turkishiu6960 Inuktituttr7511Turkishfr4097Frenchen1892Englishtr7145Turkishru2951Russianen4231Englishru4998Russianja6404Japanesefr6753Frenchar6971Arabicccp4960Chakmath5583Thaisr4872Serbianel6286Greektr1293Turkishth4226Thaiccp8185Chakmaja370Japanesechr4313Cherokeeru3334Russianru3416Russianen1560Englishsr5024Serbianth6310Thaien7739Englishsr3590Serbianen4488Englishes1946Spanishar6883Arabictr4004Turkishsr7208Serbianchr2340Cherokeetr2921Turkishfr6736Frenchja6566Japanesefr5385Frenchth7064Thaibn1017Banglaiu2277 Inuktitutar2530Arabicru4983Russianth1896Thaiel1490Greeksr1994Serbiantr7729Turkishtr1494Turkishiu7703 Inuktitutbn5428Banglafr820Frenchbn5590Banglatr389Turkishes5254Spanishchr2552Cherokeeeo5019 Esperantoes2459Spanishja7639Japaneseru498Russiansr7198Serbianel7113Greeksr6980Serbianfr4410Frenchja5508Japanesezh3339Chinesetr1278Turkishes7432Spanisheo2397 Esperantochr3626Cherokeear6293Arabicru7920Russiantr4845Turkishfr947Frenchel1157Greekes2139Spanishbn5060Banglaja7698Japanesear6897Arabicfr4236Frenchchr6780Cherokeeiu6472 Inuktitutes5226Spanishsr3545Serbianel2415Greekru565Russianiu4722 Inuktitutzh4470Chineseja6344Japaneseiu157 Inuktitutth1518Thaitr5845Turkishen4697Englishchr849Cherokeeen709Englishru6831Russiantr1764Turkishccp1323Chakmaru4555Russianiu7473 Inuktitutsr5668Serbianeo447 Esperantoel7688Greekiu417 Inuktitutsr390Serbiansr1202Serbianeo2884 Esperantoel292Greekru6977Russianccp952Chakmachr6757Cherokeeccp3733Chakmaen1054Englishsr5033Serbianbn4005Banglatr5218Turkishchr6448Cherokeeen2809Englishzh4172Chinesebn5787Banglaccp7799Chakmaar1000Arabicru1112Russianeo6095 Esperantobn4811Banglaru7042Russianbn5147Banglaccp7194Chakmabn4354Banglael3483Greekfr3758Frenchccp1948Chakmasr3311Serbianbn1304Banglaar1172Arabicth3795Thaiar2120Arabictr5476Turkishchr2400Cherokeeja6494Japaneseru57Russianja1590Japanesefr6003Frenchsr6937Serbianeo3246 Esperantoes238Spanishtr3650Turkishccp6579Chakmabn4283Banglafr4667Frenchccp1079Chakmath6117Thairu6387Russianccp8156Chakmael2282Greekfr6585Frenchen4914Englishes7963Spanisheo2368 Esperantochr4197Cherokeear5278Arabiczh3287Chineseja6915Japanesechr7930Cherokeear8167Arabiciu6436 Inuktitutchr3293Cherokeeen2679Englishru5426Russianja2510Japanesechr4686Cherokeebn3819Banglaes6597Spanishja7983Japanesear126Arabicfr3031Frenches1229Spanishchr2315Cherokeefr5395Frenchfr4221Frenchiu5237 Inuktituttr4707Turkishtr8100Turkishzh2660Chinesefr1635Frenchccp5646Chakmafr451Frenchtr6524Turkishsr6493Serbianchr5055Cherokeear2847Arabiceo8119 Esperantoccp1339Chakmaeo4439 Esperantosr568Serbianccp6587Chakmaen6439Englishiu312 Inuktitutsr1383Serbianar4008Arabicru7706Russianfr1366Frenchchr4684Cherokeear5421Arabicchr7293Cherokeear6007Arabicsr5334Serbiansr4879Serbiantr4203Turkishsr7985Serbianru4875Russianel1731Greeksr38Serbianchr4323Cherokeeel3974Greekes6041Spanishfr6051Frenchiu1699 Inuktitutja387Japaneseru1403Russianchr6766Cherokeeth7397Thaiel2277Greekeo5165 Esperantoeo5245 Esperantoru867Russianen1601Englishbn5951Banglaes2602Spanishfr5310Frenchen8164Englishzh2065Chinesefr852Frenchfr6353Frenchja7341Japanesechr8057Cherokeeja7021Japanesezh6034Chineseen3623Englishsr3021Serbianbn7489Banglaja3841Japanesear5936Arabicbn4091Banglaja7467Japanesebn3294Banglazh8177Chinesetr1782Turkishru6402Russianru4282Russianru7442Russianes2058Spanishen2193Englishfr4528Frenchchr4367Cherokeeen2784Englisheo1239 Esperantoja3780Japaneseja5360Japanesezh4813Chineseja5102Japanesebn6749Banglazh7076Chineseccp2700Chakmaes1055Spanishes3060Spanishiu6196 Inuktituten5858Englishen3439Englishccp3874Chakmazh2216Chinesezh8144Chineseru4990Russianeo5780 Esperantoes7520Spanishar5161Arabicen93Englishiu7124 Inuktitutes3156Spanishth5219Thaies7788Spanishar2496Arabicchr863Cherokeebn6891Banglaiu7707 Inuktitutru1473Russianiu2579 Inuktitutbn1284Banglaja2550Japanesefr7278Frenchen1038Englishth239Thaien102Englishsr3029Serbiantr2003Turkishchr2350Cherokeeccp300Chakmaccp5855Chakmaja2834Japanesebn3211Banglaja952Japaneseel4238Greekeo2812 Esperantoes5760Spanishth7119Thaieo5001 Esperantosr4002Serbianth4001Thaien6002Englishchr6776Cherokeeru2775Russianzh5052Chinesear3858Arabiciu2711 Inuktitutchr2632Cherokeebn3906Banglaru7694Russianth1347Thaiiu1275 Inuktitutel899Greekiu4563 Inuktituttr3866Turkishzh4100Chinesesr7683Serbianes1861Spanishes8135Spanishja6750Japaneseru2751Russianfr3368Frenchiu547 Inuktitutja1358Japanesezh244Chineseiu7914 Inuktitutsr7653Serbianchr5313Cherokeeja1554Japaneseeo8061 Esperantoru299Russianru1117Russianeo1265 Esperantoeo6886 Esperantoiu2009 Inuktitutiu7999 Inuktitutel3478Greeksr5607Serbiansr6108Serbianru2851Russiantr820Turkishiu7508 Inuktitutes7704Spanishru4691Russianru4950Russianeo6834 Esperantobn918Banglaen8078Englishsr6402Serbiantr3753Turkishzh7815Chinesebn199Banglael7679Greekeo4021 Esperantoth2213Thaies3577Spanishel3182Greekth2086Thaiccp4039Chakmaru1194Russianeo4723 Esperantoes473Spanishsr5593Serbianes6634Spanishzh4717Chineseja2522Japaneseiu4000 Inuktituttr4890Turkishar3771Arabiceo6984 Esperantoja4303Japanesezh6571Chinesechr3987Cherokeechr4285Cherokeeja1978Japanesebn1173Banglael2639Greekja7644Japaneseja480Japaneseccp928Chakmaen6166Englishsr872Serbianbn886Banglaar4734Arabicchr1680Cherokeeru6936Russianzh6106Chineseth7263Thaizh2183Chineseth640Thaifr2382Frenchru6203Russianchr1454Cherokeebn5761Banglasr7818Serbianbn731Banglazh2209Chineseja6135Japanesetr211Turkishja5905Japanesechr6032Cherokeeen1024Englishes1498Spanishth3260Thaitr4172Turkishar4399Arabiczh3521Chineseth3141Thaisr5145Serbianel4686Greekes6728Spanishfr3529Frenches7422Spanishbn3779Banglaja6818Japanesees761Spanishar4790Arabicru7271Russianeo5089 Esperantochr3155Cherokeeja4233Japanesear4014Arabicbn5533Banglaccp1142Chakmael7316Greekfr1803Frenchen3873Englishel5742Greekccp6794Chakmafr4237Frenchiu5477 Inuktitutja5160Japanesesr851Serbianen2989Englishar1483Arabicfr6784Frenchzh7970Chineseru5884Russianes1260Spanishes3705Spanishar681Arabiceo2223 Esperantoen5562Englishar4887Arabicen2144Englishel6371Greekar420Arabicchr7488Cherokeees2407Spanishzh5336Chinesear7939Arabicth3466Thaith7866Thaieo1563 Esperantochr7031Cherokeeth5206Thaiccp2070Chakmaiu7204 Inuktitutbn448Banglaru1110Russiansr5525Serbianccp4812Chakmachr7970Cherokeear4212Arabicbn7879Banglachr3688Cherokeear5063Arabicbn5377Banglaes7010Spanishru7051Russianar3401Arabicen3972Englishja732Japanesechr6659Cherokeees5243Spanishth7047Thaiel2425Greekru469Russianar728Arabicen8126Englishel3910Greekel7934Greekeo3918 Esperantoes1894Spanisheo7218 Esperantoes7295Spanishccp4191Chakmaar151Arabicen2046Englishru5021Russianccp244Chakmaja2793Japaneseiu7997 Inuktituten46Englishth6299Thaies1549Spanishiu5116 Inuktitutchr6697Cherokeeeo1661 Esperantoru1590Russianru1990Russianja3022Japanesees3421Spanishiu4594 Inuktitutchr7922Cherokeechr4581Cherokeeiu4504 Inuktitutzh752Chineseru4405Russianchr3609Cherokeesr3096Serbianja68Japaneseen6588Englishiu6009 Inuktituteo6038 Esperantofr6592Frenchiu1077 Inuktitutja587Japaneseja4633Japanesebn3179Banglaja4794Japaneseccp4088Chakmaeo1307 Esperantoccp1284Chakmaru3056Russianbn4072Banglath4241Thaith3488Thaith4959Thaitr2129Turkishzh258Chinesear6629Arabicru651Russianccp77Chakmaccp7806Chakmaeo7929 Esperantoar3333Arabictr7329Turkishth748Thaizh6876Chineseeo823 Esperantotr799Turkishru3536Russianes2299Spanishar1919Arabicsr1307Serbianen5386Englishth3356Thaiar5037Arabicja879Japanesetr6304Turkishru2956Russianes3985Spanishchr1491Cherokeesr4787Serbiantr3485Turkishru2887Russianth3755Thaizh2913Chinesechr7493Cherokeeccp6397Chakmaes7395Spanishiu1620 Inuktitutchr4200Cherokeeru275Russianzh41Chinesear321Arabiciu7868 Inuktitutth2364Thaisr6683Serbianru4158Russianbn3256Banglafr3794Frenchar3921Arabices7529Spanishel38Greekja7858Japaneseccp4538Chakmaeo3804 Esperantoja8003Japaneseth2457Thairu2878Russianfr828Frenchsr6785Serbianar1324Arabicar3793Arabicbn1541Banglaen5377Englishru2560Russianeo3608 Esperantotr1838Turkishen7734Englishel8091Greeken5327Englishth2013Thaies4988Spanishzh4885Chineseth5751Thaitr7125Turkishfr7966Frenchfr6065Frenchru3759Russianth2869Thaifr1427Frenchfr4989Frenchccp3816Chakmaes6887Spanishel4662Greekeo3341 Esperantoru5004Russianchr2665Cherokeear7304Arabicja4869Japaneseccp2523Chakmabn7092Banglaeo4202 Esperantoen2433Englishja2821Japaneseel3142Greekbn4018Banglael970Greekbn1247Banglaen1826Englishes4381Spanisheo4549 Esperantoar1650Arabicchr943Cherokeear7126Arabicccp6385Chakmael6291Greekel6730Greeken7902Englishfr3893Frenchiu4890 Inuktitutar5416Arabicja1579Japaneseja4705Japaneseel5570Greekbn4802Banglasr2513Serbiantr6121Turkishtr8021Turkishzh672Chinesezh7451Chineseru1073Russianth3344Thaitr6908Turkishar5707Arabicbn1083Banglabn8006Banglaeo438 Esperantoes2110Spanishbn6054Banglaeo4644 Esperantoru1850Russianchr5090Cherokeetr7313Turkishel5509Greeksr3278Serbianccp2265Chakmaes5460Spanishbn2475Banglazh1126Chinesezh98Chineseccp4609Chakmaiu4727 Inuktitutzh1868Chinesees5833Spanishtr2804Turkishbn5963Banglazh1074Chineseccp5204Chakmaeo5561 Esperantozh4739Chinesechr7831Cherokeezh2591Chinesees2769Spanisheo3881 Esperantoccp6473Chakmath8152Thaibn2896Banglaccp3682Chakmaccp3683Chakmael774Greekru1512Russianchr6019Cherokeear7408Arabicth4906Thaisr5863Serbianel7285Greekru1806Russianiu5094 Inuktitutes6393Spanishtr5488Turkishtr6884Turkishccp5051Chakmaes7773Spanishja7843Japaneseja1222Japanesebn3576Banglaar3346Arabicru2096Russianzh5356Chineseth3637Thaichr5151Cherokeeen4410Englishtr7296Turkishchr7206Cherokeebn7224Banglaja4126Japanesefr7516Frenchja213Japanesefr4656Frenchel608Greekfr4061Frenchfr4399Frenchar4697Arabicbn3634Banglaeo1438 Esperantoen4915Englishbn380Banglaccp4030Chakmaen5702Englishth6451Thairu6308Russianja6845Japanesechr6796Cherokeetr1564Turkishth5073Thaien4069Englishja4570Japanesebn3466Banglaiu7598 Inuktitutbn2418Banglaen7735Englishchr3055Cherokeechr285Cherokeeja1999Japaneseccp1710Chakmasr5535Serbianel5774Greekzh153Chinesefr2170Frenchru3453Russianru7427Russianchr3897Cherokeetr5560Turkishar7417Arabices5127Spanishth2254Thaisr28Serbianar344Arabicccp5528Chakmaja3015Japanesechr4808Cherokeeru3971Russianzh1446Chineseel4909Greekccp5085Chakmasr2731Serbiansr8046Serbianen5395Englishru6554Russianfr3708Frenchsr88Serbianccp6870Chakmasr7216Serbianru6773Russianth3273Thaizh3896Chineseth8043Thaieo4769 Esperantoru7280Russianen5455Englishen7642Englishccp5443Chakmazh1089Chineseel1954Greeksr7905Serbiansr4205Serbianen5697Englishtr4059Turkishen6463Englishes6590Spanishar806Arabicja7136Japanesebn617Banglachr6424Cherokeeel6144Greekth7928Thaiiu5983 Inuktitutth8100Thaien7229Englishel6216Greekja528Japaneseru3096Russianchr7541Cherokeefr2066Frenchiu1462 Inuktitutsr154Serbianiu2138 Inuktitutja5186Japanesear5876Arabicen1588Englishes4227Spanishja589Japaneseccp8175Chakmabn5625Banglaiu2118 Inuktitutar5354Arabicar3365Arabicja5409Japaneseel5576Greekar1051Arabicbn2804Banglaiu7722 Inuktitutbn3309Banglael955Greekel7177Greekes4040Spanishfr1497Frenchth8147Thaiccp4888Chakmazh1366Chinesezh4432Chineseiu804 Inuktitutccp4109Chakmaccp2393Chakmath1544Thaiar5651Arabicth6060Thaizh340Chinesechr5416Cherokeebn5741Banglaja7043Japaneseen5040Englisheo2495 Esperantoar2488Arabicru5659Russianja3344Japanesear4610Arabicbn128Banglatr7401Turkishiu3279 Inuktitutsr4207Serbianes7924Spanishccp999Chakmaes3832Spanishfr981Frenchen4040Englishtr1910Turkishth4893Thaifr7216Frenchiu339 Inuktitutel7375Greekccp4448Chakmasr3117Serbianccp484Chakmabn1183Banglaen7628Englishbn4350Banglasr6049Serbiansr3763Serbianccp2741Chakmaen6311Englishccp5436Chakmaru4923Russianiu222 Inuktitutsr7591Serbianccp2263Chakmabn3139Banglazh4886Chinesechr202Cherokeeru2833Russianchr872Cherokeeel6638Greekchr7719Cherokeefr725Frenchchr2672Cherokeechr2449Cherokeefr6926Frenches1629Spanishes4477Spanishccp6610Chakmaiu4104 Inuktitutiu6299 Inuktitutccp3191Chakmaen1644Englishja4068Japanesechr1765Cherokeesr3586Serbianel1520Greekeo4527 Esperantobn7233Banglaar7380Arabicen6280Englishfr7864Frenchja1544Japanesees4390Spanishru5317Russianel1784Greekar333Arabiczh1116Chinesezh2084Chineseen1519Englishja6246Japanesetr1622Turkishfr1723Frenches6788Spanishsr173Serbianen6606Englishchr4695Cherokeeel6309Greekfr5136Frenchel6567Greekel5928Greeken6302Englishfr4352Frenchchr3084Cherokeechr972Cherokeeel3479Greektr6355Turkishbn8054Banglaiu4595 Inuktitutth7277Thaisr7350Serbianfr542Frenchar912Arabicja473Japaneseel5878Greekfr3688Frenchth3011Thaifr3156Frenchbn1470Banglaeo1341 Esperantoeo5715 Esperantoth4127Thaizh6293Chinesear3957Arabiceo3597 Esperantoar7714Arabicen2987Englishen5570Englisheo8103 Esperantoes5737Spanishfr1431Frenchel5292Greekel6903Greekth603Thaitr2407Turkishel7773Greekzh556Chinesebn2621Banglaiu5098 Inuktitutja1925Japanesezh7444Chinesesr6054Serbianen284Englishes1123Spanishfr1870Frenchfr7724Frenchel8131Greekeo1425 Esperantochr3237Cherokeeccp3908Chakmachr5484Cherokeeja2134Japanesebn6Banglaeo362 Esperantosr5924Serbianel3845Greekzh27Chinesechr1923Cherokeeel175Greekiu6491 Inuktitutru291Russianel1889Greektr464Turkishar2102Arabicccp7114Chakmaja7346Japaneseel4707Greeken924Englishes385Spanishja3182Japaneseeo6904 Esperantochr387Cherokeeru1737Russianes2130Spanishth2958Thaizh5870Chinesezh3732Chinesear7046Arabicen968Englishes4864Spanishsr5096Serbianru2149Russianru4139Russianzh5625Chinesebn2213Banglasr6952Serbianbn5299Banglazh5486Chineseel4375Greekel1170Greektr3165Turkisheo664 Esperantoar1818Arabicar3418Arabiczh958Chinesesr7969Serbianchr1621Cherokeebn6876Banglael903Greekar4989Arabicchr6146Cherokeebn6400Banglaeo5191 Esperantosr3059Serbianchr5369Cherokeeen3167Englishar3789Arabiczh747Chinesebn2686Banglaes6064Spanishes1099Spanisheo430 Esperantoccp4726Chakmachr106Cherokeebn5670Banglaccp3518Chakmaiu1418 Inuktitutiu2834 Inuktitutiu4651 Inuktitutru5340Russiansr1171Serbiantr531Turkishja7607Japaneseth3323Thairu2612Russianja1601Japanesechr4621Cherokeechr8100Cherokeeel4610Greekccp7563Chakmafr7333Frenchen4205Englishiu7835 Inuktituteo1336 Esperantoccp4792Chakmaja5161Japanesebn7459Banglabn7587Banglazh2144Chinesebn512Banglaccp4286Chakmaiu650 Inuktitutbn1831Banglabn3229Banglaccp7813Chakmaja2679Japaneseen6325Englishes96Spanishth6347Thaies8130Spanishzh5991Chineseth2105Thaija8011Japaneseen5976Englishiu7057 Inuktitutbn2820Banglael2226Greekccp1969Chakmaiu7557 Inuktitutru4395Russianchr3290Cherokeeru4799Russiansr147Serbianen2101Englishru1697Russianzh8149Chineseccp7661Chakmatr3218Turkisheo479 Esperantoel4223Greeksr4159Serbianccp1425Chakmachr3250Cherokeechr5275Cherokeeru6652Russianes4147Spanishbn7492Banglaar6397Arabicchr6305Cherokeeen8142Englishtr4317Turkishth6945Thaiccp2090Chakmael5318Greektr5569Turkishzh7456Chineseeo4122 Esperantozh4835Chineseiu6244 Inuktituttr3467Turkishzh6391Chineseeo3711 Esperantozh3602Chineseth2816Thaiar5592Arabicja413Japanesear2179Arabicru3922Russiantr3313Turkishbn1414Banglael6724Greekeo6980 Esperantoja1803Japanesear8072Arabiciu5927 Inuktitutfr6063Frenchchr4317Cherokeefr3718Frenchtr5410Turkishzh6811Chineseccp5774Chakmaes7563Spanishccp2053Chakmaccp7632Chakmaeo4696 Esperantoiu7748 Inuktitutsr9Serbianen5519Englishen2013Englishfr5185Frenchth608Thairu3683Russianbn5323Banglaccp5546Chakmael4636Greekel7716Greekbn3152Banglaja5911Japaneseru2695Russianccp1228Chakmaen7344Englisheo7490 Esperantosr4744Serbianeo2300 Esperantoru5700Russianel5422Greektr5766Turkishsr1479Serbiansr1359Serbiansr5999Serbianbn4340Banglael4184Greekbn6146Banglatr2683Turkishfr58Frenchchr1395Cherokeesr2355Serbianen7526Englishen4137Englishzh76Chineseen1120Englishth6934Thaitr52Turkishes4362Spanishiu5902 Inuktitutzh8086Chineseen7208Englishth7395Thaija3083Japanesebn4158Banglaru1615Russianeo6250 Esperantoeo5905 Esperantoen1970Englishchr4327Cherokeeel3710Greekiu7276 Inuktitutchr7817Cherokeeen333Englishsr1823Serbianja8127Japaneseeo7355 Esperantoen5676Englishel7159Greekar5331Arabicsr4225Serbianzh7693Chinesetr1794Turkishchr5949Cherokeeel4514Greeken586Englishth4767Thaiar4183Arabicar6343Arabicru3480Russianiu3939 Inuktitutar3522Arabicbn443Banglaeo563 Esperantoccp3770Chakmath3889Thaies1860Spanishth2205Thaizh3366Chinesechr1818Cherokeeel3648Greekel6215Greekja4414Japanesear1593Arabiceo5164 Esperantoes5184Spanishru5842Russianen3596Englishth1071Thaien2323Englishccp738Chakmafr7117Frenchccp3034Chakmasr8174Serbianel6687Greekiu3438 Inuktitutja3560Japaneseja6927Japanesetr3241Turkishja728Japanesesr4616Serbianiu781 Inuktitutchr6666Cherokeeeo1681 Esperantoar5038Arabicfr574Frenchja759Japaneseru4979Russianar1770Arabicccp1674Chakmath6419Thaifr4164Frenchiu4549 Inuktitutar5303Arabicsr5261Serbianar2433Arabicchr2545Cherokeeen1843Englisheo7135 Esperantoiu3654 Inuktitutes932Spanishiu6150 Inuktitutar2198Arabiceo3751 Esperantoes3887Spanishfr368Frenchtr5783Turkisheo7376 Esperantoiu4183 Inuktituttr7821Turkishccp7772Chakmabn3946Banglazh7080Chineseen2487Englishzh5122Chineseru6065Russiansr870Serbiansr5223Serbianfr6198Frenchtr7487Turkishzh7455Chineseth3973Thaibn6965Banglaiu1107 Inuktitutes5421Spanishel3197Greekth6609Thaizh922Chinesefr4710Frenchiu1491 Inuktituttr6162Turkishen7644Englishen4469Englishfr2754Frenchel6965Greektr7171Turkisheo7636 Esperantoes7114Spanishccp6453Chakmaar4291Arabicccp1576Chakmath1988Thaiiu1286 Inuktitutfr5434Frenchzh669Chineseel4447Greekeo3411 Esperantoeo7631 Esperantofr3386Frenchja1880Japaneseru4275Russiansr1226Serbianeo1876 Esperantoiu3238 Inuktitutbn4975Banglaru134Russianchr6059Cherokeeth2973Thaija5080Japanesesr2098Serbiansr2471Serbianth1220Thaifr3288Frenchchr1016Cherokeeru3986Russianja1680Japanesear625Arabicccp3324Chakmazh5752Chinesear7037Arabicccp6902Chakmaar4638Arabiceo392 Esperantoel304Greekccp7133Chakmasr478Serbiansr3002Serbiantr557Turkishchr2299Cherokeeel1570Greekel7546Greekar8064Arabiciu7647 Inuktitutzh2922Chineseccp6332Chakmaes5965Spanishar7983Arabiciu2876 Inuktituttr3698Turkishar5610Arabicar4051Arabicccp6396Chakmaeo1268 Esperantoeo4210 Esperantoes6085Spanishchr3126Cherokeeja6823Japanesetr6686Turkishzh4424Chinesezh4441Chinesear1362Arabicsr7804Serbianfr4786Frencheo2719 Esperantoeo912 Esperantozh5946Chinesebn7607Banglaes5422Spanishchr4641Cherokeebn2332Banglafr2811Frenchja2405Japaneseiu6860 Inuktitutru1470Russiansr6779Serbianja5620Japaneseth457Thaifr4056Frenchth2324Thaies967Spanishar23Arabicen7134Englishes4211Spanishiu3232 Inuktituttr3116Turkishsr1025Serbianja2719Japanesezh7093Chinesechr6202Cherokeeja1855Japaneseru4821Russianchr1212Cherokeees8064Spanishru3864Russianzh4977Chineseel4341Greekja907Japanesetr2369Turkishchr490Cherokeeja6534Japanesesr4649Serbianru6488Russianes6937Spanishel1293Greekth3857Thaitr4422Turkishccp1289Chakmael2999Greekeo7050 Esperantoja3363Japanesesr1595Serbianccp7922Chakmaru7891Russianar251Arabiczh3793Chinesechr6124Cherokeeccp6750Chakmaes7721Spanishja6865Japanesefr920Frenchfr3897Frenchsr4440Serbianeo3288 Esperantoeo7664 Esperantosr2467Serbianzh4440Chineseccp6096Chakmael3711Greekzh8028Chinesechr5613Cherokeesr6237Serbianes1606Spanishth165Thaiar2303Arabicfr5347Frenchja654Japaneseeo8191 Esperantoiu4980 Inuktituttr2256Turkishbn3821Banglabn750Banglaeo7121 Esperantoes7975Spanishbn6613Banglaja6245Japaneseth7085Thaitr3037Turkishbn5379Banglachr3964Cherokeeel7869Greekfr5721Frenchzh4111Chinesechr463Cherokeeth6269Thaitr4220Turkishzh489Chinesefr5257Frenchzh8125Chinesesr5117Serbianbn3193Banglabn2078Banglaar5785Arabicfr2919Frenchel6059Greekth2740Thaibn2577Banglaiu4849 Inuktitutru2184Russianar6953Arabicchr2364Cherokeeru5602Russiansr550Serbianth4157Thaiel6335Greektr4783Turkishes6367Spanishja6372Japaneseccp2967Chakmath4170Thaieo8175 Esperantoiu7084 Inuktitutar2336Arabiciu5171 Inuktitutzh6825Chineseru5573Russianbn4383Banglafr3202Frenchbn5370Banglaiu7156 Inuktitutbn5098Banglaeo3052 Esperantoja2097Japaneseel3683Greekeo164 Esperantoar1701Arabictr202Turkisheo6366 Esperantoel1853Greekccp2236Chakmaccp5955Chakmaja4482Japanesefr7918Frenchar145Arabicchr6504Cherokeees3708Spanishtr8071Turkishchr1146Cherokeeru4498Russianes5355Spanishth3912Thaiel6476Greekru2890Russianar470Arabicfr1540Frenchen6313Englishen3464Englishchr6405Cherokeeja7101Japaneseel519Greekeo7012 Esperantozh6406Chinesesr5071Serbianar3935Arabicar6839Arabices3819Spanishbn4179Banglaeo2266 Esperantozh6648Chinesebn4915Banglaru6396Russianes3814Spanishccp3184Chakmatr1373Turkishja603Japaneseen7614Englishiu3179 Inuktitutru3857Russianccp4671Chakmabn3144Banglaccp2831Chakmabn4291Banglabn7700Banglaes4240Spanishes5371Spanishel1662Greekzh6280Chineseru7796Russiansr1067Serbianel5028Greeksr3610Serbianes3254Spanishru8014Russianiu2012 Inuktitutccp3665Chakmael4657Greekru6924Russianzh6757Chinesear1795Arabicchr6251Cherokeefr1141Frenchtr2945Turkishes36Spanishth3204Thaiiu4061 Inuktitutel762Greektr3683Turkishccp7455Chakmaen2594Englishbn8032Banglaar2888Arabicfr4743Frenchzh2224Chinesesr3346Serbianja571Japaneseiu2632 Inuktitutsr4105Serbianru2511Russianeo2769 Esperantoja5262Japaneseel3488Greekel6396Greeken5949Englishzh7627Chineseel4828Greekiu6773 Inuktitutes6971Spanishfr3010Frenchccp3572Chakmazh5172Chinesetr5383Turkishccp57Chakmaja5709Japaneseccp2971Chakmaeo2016 Esperantoeo1035 Esperantofr6236Frenchja3395Japaneseccp5136Chakmath5829Thaichr6798Cherokeear1279Arabicccp5544Chakmaru6078Russianel3308Greeken331Englishes1301Spanishccp4172Chakmafr5334Frenchbn4944Banglaar6880Arabicru250Russianru240Russiantr4380Turkishsr4436Serbianfr5167Frencheo6930 Esperantoru2976Russianiu8085 Inuktitutel4999Greekth7091Thaizh6250Chinesees6802Spanishzh1863Chineseeo1601 Esperantotr4354Turkishru4029Russiantr3706Turkishiu2941 Inuktitutel8133Greekccp6476Chakmaes3354Spanishiu427 Inuktitutel1238Greekiu4782 Inuktitutel2766Greeken4964Englisheo2347 Esperantoen3485Englisheo315 Esperantoccp785Chakmaccp4543Chakmael3838Greekfr65Frenches4607Spanishbn3436Banglaes2163Spanishfr5127Frenchja2083Japanesesr7884Serbianth3120Thaith5469Thaifr5832Frenchfr5838Frenchsr5046Serbianar2034Arabices3325Spanishzh3281Chinesees4286Spanishja1099Japanesesr2831Serbianeo2700 Esperantoja5478Japaneseeo3778 Esperantofr727Frenchchr7966Cherokeeen7287Englishfr4882Frenches2657Spanishchr1943Cherokeechr6663Cherokeear3490Arabicar5055Arabicja3648Japanesechr6470Cherokeefr3130Frenchccp7690Chakmaru1659Russianiu1691 Inuktituten5312Englishtr3172Turkishbn201Banglabn6121Banglabn2540Banglaeo6916 Esperantotr3978Turkishiu3249 Inuktitutel2990Greektr5367Turkishja5269Japanesezh5843Chinesefr582Frenchtr7843Turkishccp2398Chakmatr4633Turkishchr5817Cherokeeth6690Thaiccp1875Chakmaar3720Arabicen4981Englishtr5402Turkishen981Englishel5707Greekeo4912 Esperantosr3219Serbianbn8115Banglaja7123Japaneseth3700Thaies3999Spanishar752Arabictr7776Turkishchr5274Cherokeeja221Japaneseth4975Thaith4169Thaichr2507Cherokeeccp7374Chakmabn6957Banglaes6471Spanishchr2536Cherokeeeo4949 Esperantofr6229Frencheo3402 Esperantoes1882Spanishbn4984Banglaen3964Englishiu4137 Inuktitutru5338Russiansr4989Serbianar3234Arabices1219Spanishes6878Spanishiu259 Inuktitutth2149Thaiccp132Chakmath5540Thaizh4762Chinesear4133Arabicchr8003Cherokeechr958Cherokeeen7774Englishar5455Arabiciu7736 Inuktitutzh156Chinesefr5513Frenchru6933Russianja7868Japaneseth1232Thaibn3615Banglasr1079Serbiantr2661Turkishsr2117Serbianzh7221Chineseel2974Greekccp4411Chakmaeo5853 Esperantoen3866Englishiu7946 Inuktitutchr4531Cherokeeel844Greeken4063Englishfr1490Frenchen5849Englishes1178Spanishar4117Arabicen2272Englishzh7030Chineseiu1391 Inuktitutiu1543 Inuktituteo849 Esperantoeo5704 Esperantoeo484 Esperantoth7390Thaifr811Frenchth6313Thaitr3413Turkishccp4328Chakmasr3668Serbianes2295Spanisheo3012 Esperantoar865Arabiciu8168 Inuktitutchr4134Cherokeeen2202Englishes6660Spanishru7256Russiansr8111Serbianth636Thaichr2674Cherokeees347Spanishfr60Frenchru3133Russianfr469Frenchja6728Japanesetr1835Turkishzh7410Chinesebn5346Banglael5868Greekccp4234Chakmachr7940Cherokeeth5969Thaiccp5672Chakmaru5339Russianen5767Englishth6082Thaisr1445Serbiantr6397Turkishja4242Japaneseiu2278 Inuktituten6728Englishja3265Japaneseen5726Englishen1889Englishsr7238Serbianja6224Japanesechr3644Cherokeees3215Spanishen5309Englishsr7624Serbianth6220Thairu4590Russiantr2716Turkishtr5229Turkishtr3910Turkishbn5471Banglabn1826Banglaja3800Japanesees6648Spanishru3295Russianfr2002Frenchru2582Russianru5457Russianfr2823Frenchel3008Greekja7812Japaneseeo601 Esperantoar2793Arabicel2258Greekes622Spanishes3051Spanishfr3335Frenchchr1120Cherokeeeo1429 Esperantoru2284Russianel7902Greeken2866Englishth3083Thaien95Englishiu2158 Inuktituttr5015Turkishiu3174 Inuktitutja5811Japanesebn1094Banglath5453Thaiar4834Arabices3637Spanishsr5097Serbianes7727Spanishzh7023Chineseeo582 Esperantoen2355Englishen5281Englishccp1263Chakmaja4166Japanesezh1279Chineseja1315Japaneseru7585Russianar7324Arabicar7851Arabicar6399Arabices590Spanishsr5675Serbianfr577Frenchchr5107Cherokeefr1828Frenchen529Englishfr7665Frenchar4679Arabicru2513Russianru5752Russianru6381Russianzh5070Chinesezh6678Chinesear4987Arabicchr4670Cherokeeccp2330Chakmaccp56Chakmaen1518Englishtr50Turkishru1384Russianes1474Spanishja2355Japanesees2537Spanisheo4019 Esperantochr6595Cherokeefr1449Frenchel1200Greekth3060Thaiar3292Arabicru2596Russianru2431Russianiu4470 Inuktituttr714Turkishen7148Englishel7370Greekru4791Russianel2791Greekel4157Greekeo7568 Esperantobn7758Banglachr2921Cherokeeeo6615 Esperantochr911Cherokeechr1440Cherokeeel5918Greeksr5933Serbiantr418Turkishes5938Spanishzh3032Chinesezh5758Chineseth3225Thaiar1037Arabiceo1084 Esperantobn331Banglaeo1755 Esperantoeo3359 Esperantoth5784Thaifr177Frenchchr4817Cherokeees7612Spanisheo727 Esperantoar4049Arabicbn577Banglaen6445Englishar4305Arabiciu7042 Inuktituteo2245 Esperantoja7179Japanesefr3767Frenchen4166Englisheo3928 Esperantoen182Englishja6778Japaneseel359Greekes2086Spanisheo1193 Esperantoel7173Greekccp960Chakmazh5980Chinesear4587Arabicth7655Thaizh7184Chinesechr6463Cherokeefr1937Frenchja4080Japaneseth4021Thaiccp4613Chakmaccp8038Chakmaen575Englishel7969Greekes5280Spanishen2416Englishzh6362Chinesefr7917Frenchel7260Greekbn6300Banglabn7811Banglaeo6946 Esperantoth4179Thaiiu1181 Inuktitutel7911Greekfr5613Frenchen6116Englishccp7244Chakmaen6662Englishtr4411Turkishja3498Japanesesr4003Serbianen7276Englishru5933Russianel4491Greekja3424Japaneseth4414Thaien2478Englishzh5550Chinesees7774Spanishru2422Russianru7350Russiansr4717Serbianeo2782 Esperantoccp5709Chakmatr7064Turkishth7803Thaiccp2461Chakmaeo3580 Esperantoiu6119 Inuktitutth8173Thaiel7871Greekar6488Arabicccp6089Chakmaes7294Spanishen1937Englishen5294Englishfr3310Frenchsr2967Serbianru5492Russianzh5049Chinesebn2260Banglachr5353Cherokeeel3731Greekru4213Russianth7503Thaisr7930Serbianzh3814Chineseeo6710 Esperantoja5685Japanesechr5420Cherokeeiu8170 Inuktitutccp5003Chakmatr4330Turkishccp8118Chakmaiu1496 Inuktitutel3664Greekes7723Spanishiu41 Inuktitutchr123Cherokeeru4844Russianth5223Thaitr6106Turkishiu1172 Inuktitutja432Japanesees331Spanishccp2602Chakmachr3711Cherokeetr4861Turkishen6086Englishfr2130Frenchzh7210Chineseja7558Japanesefr4162Frenchsr6250Serbianccp4370Chakmafr6472Frenchccp1557Chakmachr5011Cherokeefr4713Frenchiu917 Inuktitutsr5569Serbianth3009Thaiel7160Greekes5026Spanishzh4372Chineseen4662Englishes6053Spanishccp4805Chakmabn4171Banglaru2117Russianar4813Arabices2809Spanishth503Thaichr2058Cherokeebn2324Banglaeo181 Esperantoiu189 Inuktitutiu7249 Inuktituten6328Englishja1172Japanesesr1473Serbianccp5487Chakmabn6023Banglachr4796Cherokeeiu1709 Inuktitutccp6887Chakmabn1955Banglachr2717Cherokeeen5010Englishja5881Japaneseiu331 Inuktitutchr6174Cherokeeja5665Japaneseru3116Russianzh7137Chineseja4427Japaneseeo6371 Esperantoiu6127 Inuktitutiu2556 Inuktitutsr7057Serbianar3846Arabicel1467Greekel5108Greekccp2644Chakmael1908Greekar133Arabicru1415Russianar6576Arabicen7309Englishth2049Thaitr6389Turkishccp741Chakmath2858Thairu7887Russianru5845Russianth120Thaitr7720Turkishja5525Japaneseccp3898Chakmaar5781Arabicccp4837Chakmaccp7787Chakmachr4225Cherokeear590Arabicchr6350Cherokeeeo6746 Esperantoru5711Russianiu7961 Inuktituten4456Englishes7117Spanishfr1349Frenches220Spanishbn7263Banglazh2610Chineseth2137Thaien4965Englishbn2696Banglafr1005Frenchar2285Arabicfr6004Frenchbn1731Banglaar500Arabicja4192Japanesezh5099Chineseja6008Japanesetr6435Turkishsr2406Serbianbn5457Banglaccp3743Chakmasr4185Serbianzh1348Chinesesr4524Serbiansr6164Serbianzh749Chineseja5209Japaneseen28Englishes663Spanishchr1311Cherokeear8159Arabicbn3234Banglael407Greekar5195Arabicen531Englishchr2178Cherokeeel5155Greeken3763Englishtr1477Turkishth4063Thaitr849Turkishzh1938Chinesetr3895Turkishes2560Spanishen1240Englishel4061Greekes7581Spanishsr3519Serbiantr23Turkishar2982Arabicel1422Greeken6557Englishccp45Chakmaen305Englishen2990Englishru3567Russiantr7857Turkishccp7699Chakmasr6688Serbianen233Englishtr164Turkishzh5322Chinesechr2661Cherokeezh1765Chineseeo4484 Esperantosr7327Serbianel5608Greekfr286Frenchar7182Arabicccp5596Chakmasr1082Serbianru143Russianeo6269 Esperantoeo747 Esperantozh6864Chinesear4002Arabicfr4623Frenchja1994Japaneseen3334Englishiu5817 Inuktitutel5788Greekar7319Arabicbn6055Banglachr2659Cherokeeja7865Japanesees7301Spanishchr193Cherokeeel236Greekccp3525Chakmaes2565Spanishfr3278Frenchsr2794Serbianar737Arabictr7314Turkishru2428Russianfr5059Frenchbn5664Banglael5082Greeken745Englishchr3093Cherokeeeo5891 Esperantochr6001Cherokeees1192Spanishru2462Russianja3077Japanesesr5203Serbianchr158Cherokeezh5154Chineseth4764Thaifr5018Frenchel1924Greekes4628Spanishccp2940Chakmael729Greekzh6172Chinesechr994Cherokeees1177Spanishsr221Serbianth5641Thaizh4478Chineseru7336Russianbn5540Banglath3411Thairu971Russianja6155Japanesees911Spanishfr5002Frenchru270Russianccp5291Chakmaru353Russianiu3756 Inuktitutccp3299Chakmachr862Cherokeeeo3045 Esperantoes6717Spanishzh3391Chineseth532Thaifr7095Frenchth5377Thaisr3912Serbianbn5378Banglael564Greekja5117Japanesezh3254Chinesebn7232Banglaiu3832 Inuktitutccp3883Chakmatr6391Turkishiu2386 Inuktituteo5303 Esperantoiu7785 Inuktitutth1558Thaieo4685 Esperantoja6421Japanesesr5860Serbianchr3434Cherokeeen4468Englishja5187Japanesechr2111Cherokeechr1349Cherokeechr1565Cherokeeja2094Japanesetr660Turkishes3350Spanishsr2893Serbianen7257Englisheo3084 Esperantoel7602Greekchr8007Cherokeezh3318Chinesefr567Frenchth2762Thaichr4080Cherokeear6380Arabicar6251Arabicel7267Greekel7484Greekzh409Chinesechr3919Cherokeeth1069Thaith4634Thaizh3935Chinesezh7625Chineseiu2451 Inuktitutchr3539Cherokeeru6932Russianar954Arabicbn353Banglaiu4612 Inuktituttr308Turkishel4097Greekja173Japanesebn4684Banglaccp5694Chakmaen255Englishen3532Englishel435Greekth2729Thairu6735Russiantr2202Turkishru3463Russianfr7304Frenchccp723Chakmachr1964Cherokeechr4219Cherokeeen202Englishar376Arabices5550Spanishzh6145Chineseja6505Japanesetr5900Turkishbn4472Banglazh197Chinesebn8114Banglaccp4626Chakmaccp2423Chakmabn5921Banglachr4494Cherokeesr2843Serbianar2512Arabiczh2099Chinesezh5971Chineseiu647 Inuktitutchr7411Cherokeefr5520Frenchzh7231Chinesezh7314Chinesear6997Arabiceo3604 Esperantochr6573Cherokeeen1106Englishel6930Greekes1830Spanishccp5469Chakmatr8174Turkishes6175Spanishbn7830Banglaeo5456 Esperantochr4114Cherokeeru6957Russianbn3641Banglath1766Thaichr836Cherokeezh4701Chineseccp6184Chakmaeo4383 Esperantoiu190 Inuktitutzh514Chinesear7501Arabiceo7822 Esperantoth6643Thaizh7453Chineseccp1818Chakmafr6851Frenchar2384Arabicccp3419Chakmath1181Thaisr1517Serbianel7049Greekeo7405 Esperantoen4762Englishccp881Chakmaeo4287 Esperantoeo6764 Esperantoiu5029 Inuktitutbn4571Banglaja1129Japaneseja5455Japaneseru6888Russianth4167Thaitr6214Turkishen4747Englishar7432Arabiczh5912Chineseeo3488 Esperantoja6733Japaneseja8154Japanesesr3174Serbianccp1617Chakmath4619Thaija5934Japaneseen8059Englishzh525Chineseen612Englishchr7223Cherokeeen6284Englishiu3896 Inuktitutes5630Spanishel5382Greekiu4989 Inuktitutel3015Greekfr7818Frenchel595Greekel2613Greekiu4874 Inuktitutbn5483Banglaes4828Spanishtr3254Turkishel1295Greeken2264Englishar4317Arabicen863Englishes5466Spanishja2802Japaneseel6243Greekbn383Banglabn7350Banglaes4918Spanishes6444Spanishru7060Russianja2698Japanesesr566Serbianzh3581Chineseth2563Thaibn7963Banglaja4585Japanesees7887Spanishiu1906 Inuktituteo6115 Esperantozh3077Chineseen347Englishchr691Cherokeees678Spanishfr5272Frenchchr3031Cherokeeeo3560 Esperantoccp3508Chakmaen7690Englishru2328Russianzh5978Chineseja6904Japanesetr1787Turkishel4150Greekes5739Spanishfr4574Frenchtr6923Turkishiu6134 Inuktitutfr693Frenchbn1144Banglaja5363Japanesetr3789Turkishchr1537Cherokeetr6459Turkishes6289Spanishel5093Greekes281Spanishfr1475Frenchru2330Russianar77Arabictr7439Turkishccp2517Chakmaeo1109 Esperantoiu1629 Inuktitutru880Russianzh2900Chinesees3410Spanishchr4502Cherokeeiu4287 Inuktitutiu1041 Inuktitutel7075Greekchr253Cherokeesr5739Serbianiu4282 Inuktitutccp0Chakmaeo1840 Esperantofr2549Frenchja3730Japanesesr7892Serbianes3523Spanishsr6505Serbianen1357Englishen3572Englishfr5583Frenchel6995Greekccp7617Chakmasr4582Serbianth2922Thaies1682Spanishja6362Japanesechr3227Cherokeeeo502 Esperantoru662Russianccp7297Chakmaiu7607 Inuktitutel6519Greekzh782Chinesechr4952Cherokeeen5301Englisheo1365 Esperantofr592Frenchchr559Cherokeeen2828Englisheo100 Esperantoeo2713 Esperantoccp6011Chakmaiu7600 Inuktitutsr5814Serbianzh7888Chineseru7658Russianeo4176 Esperantoja7839Japaneseccp3406Chakmachr4093Cherokeeel2232Greeken946Englishsr2191Serbianeo934 Esperantoja3919Japanesefr3902Frenchsr4219Serbianchr2577Cherokeear339Arabicel3857Greeken3615Englishsr4328Serbianru4845Russianchr3308Cherokeeel2882Greekfr7307Frenches249Spanishzh8023Chinesear3602Arabices2792Spanishchr8070Cherokeefr544Frenchzh1687Chinesezh4057Chinesebn1756Banglaar6090Arabicth1612Thaibn4077Banglaja3484Japanesees7316Spanishth3407Thaiar98Arabicbn1423Banglael7359Greekzh4241Chinesebn4437Banglaccp2782Chakmaes4465Spanishar4021Arabicel74Greekes3342Spanishsr5892Serbianfr5237Frenchja1512Japanesear2183Arabicccp65Chakmatr5004Turkishar8133Arabicen3339Englisheo7912 Esperantoccp2388Chakmael3646Greekja1530Japaneseru4944Russianzh702Chinesechr3988Cherokeeeo7935 Esperantoiu5590 Inuktitutru5391Russiantr2675Turkishar49Arabicbn6498Banglabn5451Banglachr166Cherokeefr369Frenchfr2045Frenchzh732Chinesezh4715Chinesear4102Arabicar3384Arabicth8056Thaibn1902Banglaccp5262Chakmaar7223Arabicccp598Chakmaja6949Japanesesr1390Serbiantr376Turkishtr7826Turkishccp7966Chakmaar4340Arabicccp7802Chakmasr6919Serbiantr3678Turkishja2909Japanesetr4982Turkishes3083Spanishtr4018Turkishzh5704Chineseeo732 Esperantoccp842Chakmabn1890Banglaiu7352 Inuktitutchr5580Cherokeeccp3359Chakmafr3864Frenchth3238Thaiiu1598 Inuktitutccp7239Chakmafr468Frenchar2529Arabicbn8124Banglafr5899Frenches4278Spanishen3304Englishbn4591Banglaeo6771 Esperantoes7352Spanishth6042Thaisr263Serbianen2742Englishen2715Englishiu2415 Inuktitutzh5422Chineseccp1233Chakmaen4067Englishru4921Russianth3278Thaiiu1438 Inuktitutsr4339Serbianth3746Thaifr6794Frenchsr3263Serbiansr6713Serbiantr252Turkishbn4673Banglasr3149Serbianth1942Thaiel3125Greekzh6038Chinesezh4876Chinesetr920Turkishsr5917Serbianth6522Thaija4985Japanesetr2418Turkishiu7562 Inuktituteo3536 Esperantoes7589Spanishja3164Japanesesr6422Serbianja1154Japaneseiu6840 Inuktitutru7525Russianccp4850Chakmaen5353Englishbn2875Banglaccp5893Chakmaiu1706 Inuktitutth828Thaien6539Englisheo6003 Esperantoes6455Spanisheo1922 Esperantoru5808Russianiu523 Inuktitutsr1845Serbianel1156Greeksr1919Serbianar5798Arabicru2817Russianbn6439Banglaen5871Englishccp7128Chakmael63Greekfr5840Frenchru1395Russianfr2744Frenchja5706Japanesear1216Arabicchr420Cherokeeeo74 Esperantosr6796Serbianen7764Englishar3805Arabiciu3062 Inuktitutar1651Arabiceo3990 Esperantobn4938Banglaen6237Englishfr500Frenchccp6310Chakmaja7895Japaneseru2622Russianru309Russianth7485Thaiel1079Greekbn763Banglaen7397Englisheo615 Esperantosr5967Serbianel2205Greekru4274Russianchr1430Cherokeeel1443Greekbn6326Banglafr2533Frenchtr1625Turkishzh2651Chineseiu4469 Inuktitutru3819Russianccp3737Chakmasr1581Serbianar4564Arabicsr2124Serbianeo4026 Esperantoeo4289 Esperantoes7689Spanishchr2021Cherokeeja5645Japanesetr2149Turkishfr216Frenchfr4492Frencheo5754 Esperantoes969Spanishiu4502 Inuktituttr587Turkishen280Englishel6641Greeken926Englishth8167Thaisr1138Serbianes6311Spanishccp2678Chakmaccp6938Chakmazh5240Chinesechr6692Cherokeezh1517Chinesetr1437Turkishar3479Arabicbn5503Banglabn3718Banglabn6148Banglachr7228Cherokeeen8088Englishes5493Spanishtr3845Turkishfr5459Frenchru998Russianchr6516Cherokeezh3324Chinesees615Spanishzh4963Chineseja2352Japanesezh4216Chinesezh2148Chineseru8128Russianes2033Spanishar680Arabicsr5776Serbianel2946Greekbn2217Banglatr6811Turkishen7168Englishja7305Japaneseru5521Russiantr1927Turkishru5638Russianeo3925 Esperantobn6417Banglaiu6873 Inuktituten6054Englishiu6946 Inuktituten919Englishbn177Banglaes5400Spanishfr4718Frenchfr1008Frenchen2969Englishiu3112 Inuktitutzh6689Chineseru205Russiansr1597Serbianfr118Frenchth7336Thaichr5140Cherokeeel1479Greekel2200Greekeo7769 Esperantoth2791Thaichr6046Cherokeechr7498Cherokeechr1855Cherokeeel3874Greeksr5010Serbianzh3147Chinesesr3659Serbianar7421Arabicbn2565Banglael823Greekiu3841 Inuktitutru5425Russianes6042Spanishja4718Japanesear4373Arabicth3538Thaitr7122Turkishsr4709Serbiansr6880Serbianja6484Japanesees1109Spanishsr136Serbianth5904Thaiar7084Arabicen6172Englishbn5124Banglaes8008Spanishtr2473Turkisheo3199 Esperantoar4598Arabiciu3955 Inuktitutccp6552Chakmaeo5481 Esperantoiu4084 Inuktituten5953Englisheo4587 Esperantoar670Arabicja2300Japanesezh3059Chinesees7023Spanishth2932Thaith4760Thaija4362Japanesees2842Spanishtr1842Turkishes2402Spanishsr3385Serbianru1096Russianchr3401Cherokeesr590Serbianiu2307 Inuktitutzh3180Chineseiu6981 Inuktitutel7210Greekchr4218Cherokeefr2383Frenchru2884Russianchr5793Cherokeeeo2106 Esperantobn4829Banglachr3128Cherokeetr6142Turkishiu3363 Inuktitutccp1234Chakmaeo5963 Esperantoth886Thaiar2266Arabiciu3047 Inuktitutar869Arabicbn5607Banglabn988Banglath4583Thaien3390Englishfr5947Frenchtr1492Turkishel490Greekeo1820 Esperantoth7128Thaisr4842Serbianar5855Arabicja8002Japanesear7494Arabicja8098Japaneseru4427Russianiu2041 Inuktitutfr5252Frenchen4657Englishchr4599Cherokeeru3464Russianel4173Greekbn2671Banglatr1319Turkishbn1380Banglaar7784Arabicfr1654Frenchchr3138Cherokeefr2687Frenchfr50Frenchchr3311Cherokeeel4365Greekbn6122Banglael3832Greekiu6203 Inuktitutzh7651Chinesees7126Spanishfr4434Frenchen2371Englishzh7774Chineseen270Englishth1684Thaien4215Englishja3622Japaneseccp2480Chakmaen7217Englishja5769Japanesebn6483Banglafr4703Frenches3397Spanishen5087Englishja3298Japanesebn5453Banglaeo5496 Esperantobn3045Banglafr6594Frenchchr8187Cherokeesr7506Serbianeo2978 Esperantoccp5329Chakmath357Thaitr5684Turkishes4328Spanishbn8021Banglazh3217Chinesebn1807Banglaiu7338 Inuktitutja7040Japanesechr1296Cherokeeja3551Japanesear6479Arabicth5830Thaifr6024Frenchzh6387Chinesechr3480Cherokeeiu3400 Inuktitutes2821Spanishtr1099Turkishes7211Spanishiu1251 Inuktituttr6027Turkishfr5020Frenchth4192Thaiiu6195 Inuktitutel6971Greekeo4991 Esperantoel2496Greekru181Russianru7012Russiansr5391Serbianzh1203Chinesetr850Turkishzh5258Chinesesr3740Serbianccp4857Chakmachr7630Cherokeetr3245Turkishfr161Frenchel6354Greeksr45Serbianth1420Thaija2021Japanesees1454Spanishchr7382Cherokeesr3784Serbianru7205Russianen2816Englishtr3631Turkishbn5642Banglazh3706Chineseel6537Greekbn3102Banglaen4508Englishsr8146Serbianth52Thaizh3498Chineseccp7020Chakmaen4581Englishsr4517Serbianen3690Englishes6231Spanishccp5988Chakmafr5536Frenchsr4708Serbiantr1646Turkishtr6041Turkishel312Greekchr1902Cherokeeel4370Greekes624Spanishar5545Arabices7754Spanishccp1014Chakmaen5073Englishen6228Englishfr7517Frenchja3724Japaneseja7453Japaneseccp7524Chakmaen6756Englishen2534Englishes2929Spanishccp21Chakmatr4837Turkishccp5739Chakmazh1601Chinesechr8004Cherokeezh2043Chinesezh5685Chinesebn7573Banglaes4019Spanishiu150 Inuktituten1176Englishsr430Serbianel5212Greekfr4537Frenchth2326Thaiiu2716 Inuktitutiu2588 Inuktitutth6739Thaibn1554Banglaeo4231 Esperantobn3491Banglachr2321Cherokeear4559Arabictr1897Turkishzh3610Chineseeo4693 Esperantoen5996Englishbn3385Banglaes6670Spanishar6416Arabicfr6621Frenchccp4353Chakmaja3238Japanesesr3137Serbiansr7589Serbianzh7074Chineseru5856Russianzh2958Chinesefr7484Frenchchr4878Cherokeeru2102Russianeo5600 Esperantofr6853Frenchsr818Serbianeo2122 Esperantoja3977Japanesesr2830Serbianja562Japaneseth4541Thaifr2540Frenchccp6240Chakmachr727Cherokeesr249Serbianes1357Spanishchr6805Cherokeeel2469Greekel7959Greekth3588Thaiel7754Greekccp1525Chakmaru3491Russianbn6831Banglaeo4037 Esperantobn970Banglachr7325Cherokeeja6877Japanesebn7922Banglachr1328Cherokeetr7505Turkishccp7941Chakmaru6424Russianth1830Thaiar2923Arabicsr7986Serbianfr6645Frenchzh6363Chineseen3322Englishccp6773Chakmaeo3620 Esperantobn3817Banglaeo2595 Esperantoccp3706Chakmaru2266Russianth6200Thaien6132Englishru5745Russianiu5022 Inuktituttr3405Turkishccp7214Chakmasr6834Serbianes1393Spanishru7343Russianar5624Arabiceo3959 Esperantoja961Japaneseja1256Japaneseja6843Japaneseccp3897Chakmaccp2796Chakmaeo6297 Esperantoccp6877Chakmaja618Japanesesr5490Serbiantr6470Turkishzh4875Chinesebn3180Banglaes7878Spanishzh5595Chinesechr7751Cherokeear4624Arabictr3560Turkishzh7579Chineseccp977Chakmaeo3610 Esperantobn5445Banglasr1273Serbianja293Japanesetr5903Turkishchr178Cherokeees7652Spanishbn8118Banglaiu2960 Inuktitutru7936Russiantr1446Turkishzh263Chineseiu2678 Inuktituten2009Englishth7710Thaiar7419Arabicchr4629Cherokeeiu3842 Inuktitutes5221Spanishar759Arabicar1237Arabicfr7540Frenchsr3934Serbianar250Arabicfr1376Frenchfr7022Frenches429Spanishchr2982Cherokeefr8013Frenchiu4341 Inuktitutchr1885Cherokeeiu6652 Inuktitutru7739Russianru2248Russianzh6499Chineseccp1930Chakmaar2265Arabicru1868Russianth1670Thaiccp7595Chakmaes1753Spanishth7595Thaichr97Cherokeees3789Spanishru3282Russianchr6177Cherokeeru5353Russianru4353Russianfr3433Frenchen3983Englishfr4069Frenchzh7172Chinesezh7212Chinesefr4400Frenchiu2050 Inuktituttr5761Turkishchr5497Cherokeeel7445Greekchr3776Cherokeeth1874Thaizh2453Chineseja2345Japanesebn1114Banglaen6353Englishzh1402Chineseja5807Japanesetr2713Turkishar4314Arabictr4204Turkishbn2965Banglaes4458Spanishen1769Englishfr6055Frenchccp6891Chakmazh7654Chineseeo4515 Esperantoja7914Japanesees4844Spanishchr176Cherokeear1294Arabicbn2800Banglaen4017Englishen9Englishth5595Thaith5183Thaisr7706Serbiansr2460Serbianen1252Englishru2983Russiansr6457Serbianfr7802Frenchccp3785Chakmaccp7905Chakmaes65Spanisheo2780 Esperantoeo650 Esperantosr7124Serbianth5444Thaiccp5297Chakmatr7476Turkishbn6620Banglath6009Thaiar998Arabicth4027Thaiiu7641 Inuktitutth610Thaisr4936Serbianja1553Japanesesr3527Serbianes7516Spanishja49Japaneseja1391Japanesezh4271Chineseiu5611 Inuktitutja662Japaneseja7031Japaneseen6546Englishiu1347 Inuktitutsr2305Serbianiu2165 Inuktitutja300Japanesees4629Spanishar5316Arabiceo6789 Esperantosr4084Serbianchr4805Cherokeeja6453Japaneseja1722Japanesesr4983Serbianchr5462Cherokeees7541Spanishfr2172Frenchchr4177Cherokeefr5825Frenchiu1667 Inuktitutzh1782Chinesezh6138Chinesechr5126Cherokeeen4859Englishchr5532Cherokeebn1410Banglaeo4449 Esperantoru2064Russiansr3859Serbianar5139Arabicsr7923Serbianen5194Englishel5521Greekeo7171 Esperantochr5951Cherokeeeo2385 Esperantoiu4259 Inuktitutel7229Greekja2863Japanesetr4907Turkishel3009Greekeo7359 Esperantotr3338Turkishes4647Spanishen6436Englishccp7756Chakmaccp3704Chakmaes2738Spanishes591Spanisheo1049 Esperantozh5408Chinesetr3647Turkishel6652Greekar4729Arabicen7496Englishzh4295Chineseja7702Japaneseru8049Russianru6767Russianccp6600Chakmath8036Thaija1220Japaneseja527Japaneseccp4588Chakmafr4227Frenchiu2142 Inuktituteo774 Esperantoel5054Greekchr7517Cherokeeen5828Englishsr2519Serbianbn2615Banglabn2553Banglaru1234Russianel6954Greekfr2252Frencheo6777 Esperantoar5573Arabicel508Greekbn675Banglasr7840Serbianbn6795Banglaeo5596 Esperantochr3299Cherokeefr3455Frenchiu4214 Inuktituteo2823 Esperantoja6086Japanesesr7398Serbianzh6032Chinesetr3733Turkisheo3543 Esperantoen900Englishth7580Thaitr1490Turkishtr1986Turkishtr5701Turkishar6669Arabiceo1222 Esperantoeo2927 Esperantotr2530Turkishbn5338Banglachr3109Cherokeefr3552Frenchen657Englishel6087Greekel7221Greekfr5195Frenchtr6294Turkishtr5986Turkishzh4303Chineseel1845Greektr4800Turkishiu1850 Inuktitutja6765Japanesetr8107Turkishiu656 Inuktitutbn5826Banglafr205Frenchbn4212Banglaar3542Arabicccp4237Chakmaccp7729Chakmaen4584Englishth5456Thaiel5620Greekes5203Spanishiu2079 Inuktituttr2535Turkishfr3728Frenchccp3528Chakmaja1647Japanesefr385Frenchfr2034Frenchth3789Thaifr5021Frencheo3222 Esperantosr1351Serbiantr1065Turkishel1648Greekchr3622Cherokeees424Spanishccp5882Chakmaen5750Englishth7246Thaien7695Englishel2375Greekel2064Greekes2970Spanishiu7625 Inuktitutsr3602Serbianel1264Greeksr1323Serbianru7500Russiansr3318Serbianel6788Greekes3883Spanishru5997Russianccp7637Chakmaiu7693 Inuktitutzh3395Chinesezh644Chineseiu6681 Inuktituttr7869Turkishar6275Arabiczh7739Chinesefr6266Frenchru2032Russiantr3710Turkishfr6313Frenchfr8130Frenchru5352Russiantr3754Turkishtr2186Turkishru7821Russiantr3708Turkishbn7403Banglaja4030Japaneseth5680Thaiar4619Arabicsr7020Serbianel2193Greekeo4568 Esperantoiu886 Inuktitutzh3486Chineseiu2969 Inuktitutzh7189Chineseen953Englishtr1283Turkishja7196Japaneseccp8137Chakmatr3073Turkishen6913Englishbn6046Banglaen1699Englisheo4025 Esperantoes4321Spanishar4576Arabicbn2519Banglaccp775Chakmaccp6339Chakmaen1403Englishfr6473Frenchsr183Serbianccp360Chakmatr2108Turkishes1870Spanishsr3930Serbiansr322Serbianar1433Arabicja7220Japanesebn4167Banglatr6499Turkishccp1774Chakmaen5758Englisheo339 Esperantoen3164Englishiu7233 Inuktitutru5831Russianja3120Japanesezh1988Chineseel7318Greekja2800Japaneseru4177Russianfr3387Frenches4035Spanishes1715Spanishtr4033Turkishiu7192 Inuktitutiu2411 Inuktituten5436Englishru218Russiantr721Turkishccp8057Chakmachr6826Cherokeechr3990Cherokeeth1725Thaitr4216Turkishtr6146Turkishsr7048Serbianzh7758Chineseru6997Russianiu8007 Inuktitutfr1150Frenches3352Spanishru1960Russianiu7394 Inuktitutbn2498Banglasr4596Serbianja6436Japanesefr5867Frenchzh2302Chinesear944Arabiceo1148 Esperantotr1232Turkishccp5679Chakmasr5284Serbianccp1283Chakmaiu7608 Inuktitutchr2651Cherokeefr4298Frenchar943Arabicfr5909Frenchiu3762 Inuktitutsr437Serbianel1506Greekes8155Spanishth6089Thaieo8001 Esperantoth1452Thaitr7931Turkishzh1806Chineseel4928Greekel2623Greekfr6940Frenchiu7698 Inuktituten4651Englishbn2520Banglaen568Englishes2434Spanishru5420Russianeo4830 Esperantoar2247Arabiceo2214 Esperantozh8111Chinesesr4077Serbianes6108Spanishchr1531Cherokeeth2564Thaizh4076Chineseen2132Englishiu250 Inuktitutar5827Arabicsr3621Serbianfr897Frenchiu1116 Inuktitutja4573Japaneseel7903Greekchr7452Cherokeeeo1292 Esperantoeo6595 Esperantoth6142Thaichr5656Cherokeear1991Arabicccp1827Chakmatr5122Turkishel3693Greeksr4906Serbianzh5467Chinesezh7049Chineseth2146Thaieo3743 Esperantoen1385Englishsr3991Serbiantr440Turkishtr7934Turkishzh2895Chinesees41Spanishes4110Spanishel3236Greekfr3325Frenchru7743Russianzh1350Chinesechr1068Cherokeear5964Arabices3733Spanishchr6234Cherokeeeo4209 Esperantoes5694Spanishru3906Russianchr3061Cherokeeel5726Greekccp1817Chakmaeo523 Esperantoth2381Thairu3555Russianar5208Arabiciu5834 Inuktitutel6531Greektr2361Turkishru1651Russianen1022Englishtr3285Turkishbn898Banglaccp2010Chakmafr7882Frenchsr582Serbianeo460 Esperantoiu6870 Inuktitutchr6199Cherokeeth4555Thaies464Spanishchr6895Cherokeeeo7371 Esperantoen5956Englishbn7400Banglasr3366Serbianzh3733Chinesezh4230Chineseeo6691 Esperantoja4494Japanesear6598Arabicfr4722Frenchsr2619Serbianth950Thaiar382Arabicchr6832Cherokeesr504Serbianbn3637Banglael5123Greekar4805Arabicel6275Greeksr6621Serbianccp6525Chakmaeo2374 Esperantosr7663Serbianchr7330Cherokeeiu1538 Inuktitutes4001Spanishar7462Arabictr3868Turkishccp6023Chakmael6604Greektr5998Turkisheo5026 Esperantosr3416Serbianen2720Englishtr653Turkishth4156Thaichr59Cherokeeeo1591 Esperantoccp7593Chakmasr6535Serbianru6892Russianru259Russianccp6495Chakmaru1446Russianfr4379Frenchsr1934Serbianar6895Arabicja7606Japaneseccp441Chakmafr1469Frenchen6293Englishen6875Englishru813Russianbn943Banglachr1845Cherokeear6876Arabicbn803Banglaccp7971Chakmael1748Greekbn6638Banglaen4005Englishiu4630 Inuktitutar5210Arabiciu5702 Inuktitutja4140Japaneseth4295Thaija2384Japaneseel7670Greekes1226Spanishzh276Chinesear3387Arabicar6567Arabicel3581Greekel3715Greekes7059Spanishth1734Thaija959Japanesees7388Spanishchr3446Cherokeesr7342Serbianen7931Englishbn794Banglaen8003Englishel543Greekfr3504Frenchiu7157 Inuktitutzh1689Chinesear4152Arabicel3487Greeksr1733Serbianar2007Arabicru605Russianfr1355Frenchchr3149Cherokeeeo8030 Esperantozh3257Chineseen2119Englishes3947Spanishel6225Greekiu6112 Inuktitutfr3800Frenchccp771Chakmatr7134Turkishiu2102 Inuktitutes1764Spanishsr4295Serbianen2071Englishar3948Arabicel2211Greekeo847 Esperantoccp7764Chakmafr5248Frenchzh4942Chineseru5643Russianbn4006Banglaccp6698Chakmaes1224Spanishru2180Russianbn5271Banglazh2848Chineseccp6313Chakmachr7168Cherokeefr1929Frenchel5554Greekccp429Chakmaja6699Japanesefr2877Frenchar4098Arabicbn4065Banglael7518Greekru184Russianchr7332Cherokeear1514Arabicen243Englishja7614Japanesees8059Spanishiu4688 Inuktituten3827Englishbn5817Banglaen5780Englisheo2798 Esperantoiu4289 Inuktitutiu7949 Inuktituttr3862Turkishccp794Chakmaeo7996 Esperantoth7429Thaiiu2325 Inuktitutccp6071Chakmabn1473Banglaccp5110Chakmazh4634Chineseen5284Englishtr4870Turkishth3658Thaien1993Englishchr2177Cherokeeeo1550 Esperantoiu1117 Inuktitutiu3015 Inuktitutbn1290Banglazh6416Chinesefr6048Frenchchr7268Cherokeeen3581Englishfr527Frenchccp4839Chakmaen7387Englishiu5672 Inuktitutth7235Thaisr4218Serbianiu8121 Inuktituteo722 Esperantofr5816Frenchth3343Thaifr2494Frenchfr665Frenchbn3875Banglath4629Thaitr5700Turkishru4297Russianeo767 Esperantobn6863Banglafr5756Frenchsr4356Serbianth168Thairu6339Russianccp6114Chakmafr5747Frenchzh407Chinesetr5792Turkishel1701Greektr1194Turkishar5531Arabicfr1261Frenches7362Spanishel6375Greekes7735Spanishtr649Turkishes6779Spanishtr7297Turkishth3855Thaieo3679 Esperantoth2571Thaizh3589Chineseiu6457 Inuktitutzh7450Chineseccp709Chakmaen3815Englishiu6846 Inuktitutchr1925Cherokeeja4101Japaneseel1766Greeksr5361Serbianar7913Arabicen5345Englishth8050Thaizh3811Chinesees2282Spanishes3054Spanishfr1983Frenchtr5385Turkishtr697Turkishiu7993 Inuktitutru193Russianiu2715 Inuktitutja7796Japanesechr7972Cherokeear6631Arabicar5389Arabicel5602Greeksr2348Serbianes5663Spanishru5085Russianes2320Spanishchr3583Cherokeefr4343Frenchsr3363Serbianth6725Thaien6788Englishel6422Greekchr4182Cherokeeja2549Japaneseccp4680Chakmatr1678Turkishtr6729Turkishchr3191Cherokeeru6016Russiansr7575Serbianeo3634 Esperantoiu3615 Inuktitutru7300Russianth6680Thaibn2390Banglaeo713 Esperantoccp6108Chakmaen754Englishsr880Serbianja5296Japaneseeo669 Esperantoeo2510 Esperantoccp2928Chakmaar5144Arabicccp4295Chakmaes710Spanisheo5898 Esperantoth5572Thaifr2140Frenches3548Spanishtr4609Turkishes3115Spanishja733Japanesees6269Spanishbn7138Banglasr1109Serbianchr7108Cherokeesr1197Serbianbn1012Banglaen5892Englishiu6622 Inuktitutzh4339Chineseeo1091 Esperantozh3879Chinesechr7114Cherokeeth7703Thaija4300Japanesetr6822Turkishth5678Thaibn136Banglazh4479Chinesesr2244Serbianccp6301Chakmaja4805Japanesesr1410Serbianzh7289Chineseel5428Greekccp1566Chakmaru6780Russianiu4926 Inuktitutar6424Arabices2373Spanishtr8169Turkishchr2407Cherokeeen5677Englisheo3285 Esperantoar4904Arabicen2015Englishfr2267Frenchzh7932Chineseja4557Japanesear6962Arabicchr1888Cherokeezh2658Chineseccp317Chakmabn7794Banglael5338Greeksr6479Serbianth6053Thaieo7159 Esperantoar5709Arabicccp1187Chakmaccp2375Chakmaes56Spanishja2720Japaneseen4397Englishel7131Greekiu5160 Inuktitutja1645Japaneseth193Thaitr1302Turkishchr3139Cherokeefr4482Frenchel6508Greekja5957Japaneseru786Russianth525Thaifr3910Frenchja5345Japaneseeo3219 Esperantoes3411Spanishja4758Japanesees75Spanishsr7257Serbianchr4311Cherokeees544Spanisheo1359 Esperantozh5864Chineseel6700Greeken6378Englishja1387Japaneseth4288Thaifr1466Frenchchr2641Cherokeear2076Arabicchr6436Cherokeeiu3330 Inuktitutel4473Greekru7032Russiantr2889Turkishzh1653Chinesesr2872Serbiansr2311Serbianar7590Arabicccp7974Chakmaja2417Japaneseru6672Russianbn2352Banglasr6331Serbianfr6368Frenchzh7148Chineseccp3705Chakmaeo1284 Esperantoru1147Russianeo5366 Esperantoar835Arabiceo7613 Esperantozh5288Chinesetr1317Turkishfr6302Frenchru7613Russianth3924Thaifr2387Frenches5014Spanishccp4268Chakmaccp1800Chakmael120Greekeo5522 Esperantoar4188Arabicar3147Arabictr4087Turkishtr3762Turkishar5133Arabictr7093Turkishel2676Greekar1955Arabiczh5672Chineseth7941Thaien6186Englishbn7494Banglaes7889Spanishar6983Arabicth3341Thaizh3045Chinesebn4416Banglaru3253Russianja7035Japaneseccp875Chakmaen4725Englishtr2208Turkishja5275Japanesear4748Arabicen3926Englishsr7107Serbianes1383Spanishbn4289Banglaes507Spanishja7131Japanesear2485Arabicru6667Russianes7335Spanishbn5709Banglachr6543Cherokeeru7578Russianccp7489Chakmaar3537Arabicen3372Englishiu6463 Inuktitutth3371Thaizh3646Chineseth1553Thaies4309Spanishbn2891Banglachr4334Cherokeeiu2381 Inuktitutfr407Frenchccp8015Chakmaru1936Russiantr3068Turkishar5484Arabicth2610Thaichr167Cherokeechr4348Cherokeees7590Spanishja3006Japanesefr827Frenches7197Spanishja7071Japanesechr982Cherokeechr6291Cherokeeen2054Englishsr939Serbiansr3853Serbianar6164Arabiczh4445Chineseru1400Russiantr4765Turkishchr7801Cherokeeth4024Thaiar299Arabiceo5074 Esperantoccp4835Chakmabn3123Banglath2521Thaiiu1316 Inuktitutiu4490 Inuktitutru6386Russianzh821Chinesear5267Arabicar508Arabicar3194Arabicccp1945Chakmaccp7771Chakmael587Greekeo7956 Esperantosr7753Serbianiu5249 Inuktitutth671Thaizh4396Chinesesr7021Serbianth3311Thairu6649Russianzh5091Chinesebn5157Banglael763Greekes5458Spanishchr760Cherokeeen4982Englisheo8077 Esperantosr1531Serbianccp1516Chakmatr4977Turkishes6903Spanishbn3480Banglaes7387Spanisheo5758 Esperantoth1796Thairu2522Russianel1677Greekar3131Arabices7673Spanishes4693Spanishsr3049Serbianen4511Englishar5485Arabicja2286Japanesechr5876Cherokeeth2160Thaisr806Serbianes4991Spanishja4021Japanesesr4208Serbianchr5832Cherokeechr1619Cherokeeru2196Russianchr7026Cherokeeccp4343Chakmaen1669Englishfr1344Frenchfr1892Frenchbn6435Banglafr5732Frenchbn2784Banglaen7568Englishru4203Russianccp377Chakmazh2293Chinesetr5533Turkishar7061Arabicsr1885Serbianbn5298Banglaccp4694Chakmaja7552Japanesetr4117Turkishel2220Greekth6076Thaiiu5127 Inuktitutchr3174Cherokeeiu2000 Inuktitutel7547Greekja7399Japaneseccp947Chakmael580Greekes1971Spanishzh6216Chineseel3685Greekel4539Greekeo3511 Esperantoeo3835 Esperantoru4438Russianzh378Chinesesr2689Serbianiu2607 Inuktitutchr3695Cherokeezh6253Chinesechr4852Cherokeechr7195Cherokeeeo4487 Esperantozh920Chineseel1168Greeken4402Englishar2386Arabicel271Greekbn4853Banglazh6277Chineseen739Englishchr1447Cherokeeel7539Greeken228Englishfr4928Frenchen4567Englishiu1100 Inuktitutzh6953Chineseru7512Russianes104Spanishiu7095 Inuktituteo5770 Esperantoiu3291 Inuktitutccp876Chakmaru6220Russianel5266Greeken17Englishar8110Arabicel152Greeken3505Englishbn2504Banglaes1330Spanishccp4074Chakmatr4374Turkishzh7543Chinesees1205Spanisheo6459 Esperantoar5407Arabicccp2059Chakmabn604Banglasr1707Serbianiu2080 Inuktituttr6710Turkishja8015Japanesezh2331Chinesetr7695Turkishth7548Thaies1405Spanishfr4683Frenchfr3615Frenchtr584Turkishtr3748Turkishru7976Russiansr6824Serbianbn7275Banglatr284Turkishchr8179Cherokeeru4224Russianen6948Englishchr3086Cherokeeen7490Englishtr548Turkishel5369Greekbn1390Banglafr2493Frenchru7986Russianccp2949Chakmael4544Greekeo6508 Esperantoes4984Spanishzh3113Chinesezh775Chinesear1671Arabiczh4052Chinesefr2027Frenchbn1945Banglatr7029Turkishth6098Thaizh6506Chinesear3571Arabicar5768Arabicen3331Englishen6527Englishtr6689Turkishtr800Turkishtr2898Turkishiu7207 Inuktitutes5126Spanisheo5702 Esperantobn8120Banglael2891Greekfr2980Frenchfr5742Frenchtr5326Turkishiu7871 Inuktitutth5424Thaien6935Englishtr6697Turkishru6358Russianar6688Arabicchr162Cherokeefr2903Frenchiu6874 Inuktitutchr6475Cherokeetr2968Turkishccp5216Chakmabn2351Banglaru377Russianru1573Russianzh3115Chineseth5560Thaibn2652Banglaar2643Arabicth939Thaien361Englishccp1261Chakmazh7655Chineseth7377Thaien619Englishtr4028Turkishchr5410Cherokeeen7338Englishth701Thaies3878Spanishbn5687Banglaen6472Englishen6309Englishth4900Thaibn3041Banglael7053Greekiu660 Inuktituteo8178 Esperantoes6755Spanishfr1343Frenchsr3861Serbianen2402Englishar1357Arabicccp656Chakmazh1373Chinesees2214Spanishes2018Spanishbn8098Banglaiu2659 Inuktitutccp2016Chakmaccp7875Chakmatr6140Turkishja2847Japaneseja1038Japanesesr5022Serbianeo832 Esperantoth932Thaith2078Thaieo3852 Esperantosr4299Serbianccp6965Chakmath4713Thaith4424Thaichr6229Cherokeeth2458Thairu3387Russianen7172Englishiu3241 Inuktitutchr5299Cherokeeen7533Englishzh7112Chinesebn288Banglaar696Arabicsr5143Serbianen580Englishzh1507Chineseccp2297Chakmazh2387Chinesear3882Arabiciu4908 Inuktituttr4294Turkishiu1369 Inuktitutel3033Greekar7290Arabicen1590Englishel2719Greekes5845Spanishsr1420Serbianchr2624Cherokeees5031Spanishar2194Arabiciu1427 Inuktitutfr2994Frenchru1342Russianar4906Arabicar8139Arabicru2269Russianen503Englishel1147Greekth6736Thaiiu2441 Inuktitutbn6969Banglaar7696Arabicar2846Arabicel2501Greekfr5046Frenchccp3193Chakmachr6014Cherokeeiu3176 Inuktituttr2084Turkishfr3327Frenchzh1659Chineseccp2290Chakmaccp3395Chakmaja4289Japanesear5879Arabicar1836Arabices4732Spanishsr6376Serbianel6083Greekar1957Arabicccp1404Chakmatr243Turkishtr7672Turkishzh4056Chineseth2510Thaitr749Turkishccp5203Chakmaar4027Arabicccp6235Chakmachr7643Cherokeeen4396Englishru3585Russianar7930Arabicen5496Englishzh1206Chineseiu2496 Inuktitutar5308Arabicel6035Greekfr3685Frenchru7722Russiantr5028Turkishtr7669Turkishccp7084Chakmaccp7833Chakmaru6115Russianru2795Russianru7438Russianeo3085 Esperantosr7285Serbianen7417Englishtr4457Turkishtr6758Turkisheo1705 Esperantoiu5206 Inuktituttr4451Turkishzh1374Chinesezh3900Chinesetr2128Turkishiu8114 Inuktitutiu6220 Inuktitutfr3881Frencheo7083 Esperantochr320Cherokeeel6076Greeken893Englishar6025Arabiciu1648 Inuktitutel1708Greekccp1338Chakmael5061Greekar2527Arabicchr301Cherokeeja6276Japaneseen810Englishchr6899Cherokeechr550Cherokeeja365Japanesezh5306Chinesear3486Arabices1132Spanishfr2Frenchchr1038Cherokeear1360Arabicccp203Chakmaes2069Spanishes5639Spanishel1768Greekfr3909Frenchth1444Thaifr3415Frenchccp1411Chakmaen6187Englishes6712Spanishzh3516Chinesear3855Arabices7050Spanishar1088Arabicbn1163Banglaeo892 Esperantobn6998Banglachr2198Cherokeeja2493Japaneseiu5298 Inuktituten970Englishja201Japanesees5430Spanishja3943Japanesesr6666Serbianchr5734Cherokeezh3844Chinesechr1865Cherokeees6186Spanishru3433Russianfr4595Frenchfr5128Frenchen1837Englishja660Japaneseja2364Japaneseja2435Japaneseja2990Japaneseel2741Greeken683Englishsr3949Serbianes4788Spanishsr5953Serbianiu3569 Inuktitutel7306Greekes73Spanishccp4059Chakmatr2096Turkisheo216 Esperantosr918Serbiantr85Turkishchr7982Cherokeetr6819Turkishth4145Thaibn5684Banglaar1764Arabictr2918Turkishtr6128Turkishja3821Japanesetr6869Turkishja8059Japanesefr7296Frenchbn2320Banglachr6398Cherokeezh3018Chineseeo3729 Esperantoen2168Englishel2906Greekel5302Greekchr4787Cherokeees3564Spanishar4259Arabicccp4246Chakmaiu7864 Inuktituttr1905Turkishar1569Arabicar2467Arabicel8174Greekzh5012Chinesezh5229Chinesear8005Arabicen701Englishja3274Japaneseiu1741 Inuktituttr5713Turkishsr5325Serbianel7588Greekccp5550Chakmaccp7494Chakmaen6543Englishja2195Japanesear2501Arabicar2828Arabictr5565Turkishiu5436 Inuktitutccp2991Chakmael5217Greekes6243Spanishchr1530Cherokeezh3176Chineseja4944Japaneseel1955Greekth2440Thaiel6534Greektr152Turkishzh3384Chinesefr1434Frenchccp7453Chakmafr7286Frenchzh6871Chineseeo6675 Esperantofr7979Frenchja6575Japaneseen5375Englishchr5597Cherokeeth6335Thaith4375Thaitr3358Turkishes2971Spanishbn595Banglatr1416Turkishar7513Arabiceo3824 Esperantozh4869Chinesetr1069Turkishtr6036Turkishzh2082Chinesesr1888Serbianel4129Greekru7646Russianchr4883Cherokeeth7567Thaichr2883Cherokeezh6336Chinesechr3182Cherokeesr5615Serbianru4962Russianeo4752 Esperantoeo60 Esperantofr4311Frencheo7174 Esperantoth6398Thaisr4672Serbianes1377Spanishiu1067 Inuktitutel1281Greekeo4250 Esperantoiu7329 Inuktituteo6950 Esperantotr3644Turkishzh6725Chinesechr6839Cherokeeiu3556 Inuktitutchr6325Cherokeeel2537Greekel6214Greeken5877Englishth3190Thaieo8110 Esperantoiu2810 Inuktituttr179Turkishru6442Russiantr537Turkishccp3839Chakmaiu7359 Inuktitutja4252Japaneseiu3190 Inuktitutel1196Greektr3824Turkishja6655Japanesear182Arabices4910Spanishes7122Spanishth5027Thaibn2583Banglaiu1437 Inuktitutes1680Spanishiu445 Inuktituttr2163Turkishel5368Greekchr76Cherokeeel1597Greektr7260Turkishchr5012Cherokeeru5667Russianchr4535Cherokeeiu1560 Inuktitutfr4974Frenchja1528Japanesezh7814Chineseeo118 Esperantofr2710Frenchiu4436 Inuktituttr6044Turkisheo2268 Esperantotr2007Turkishbn1457Banglabn1404Banglaccp421Chakmaiu4662 Inuktitutccp3635Chakmasr489Serbianar3934Arabicth1413Thaija5705Japanesetr6648Turkishsr4608Serbianth3363Thaichr3928Cherokeeja6439Japanesezh5940Chineseth4381Thaiiu3606 Inuktitutsr5030Serbianiu7294 Inuktituttr885Turkishsr2781Serbianel4989Greekes7875Spanishfr5354Frenchtr1236Turkishbn6522Banglachr4720Cherokeeeo42 Esperantotr2360Turkishfr213Frenchbn4181Banglaru7221Russianchr2627Cherokeees6921Spanishja2724Japanesebn2952Banglaen1044Englishja4662Japaneseen3478Englishbn8150Banglatr1891Turkishth7718Thaisr7792Serbianen4632Englishel5004Greekiu2053 Inuktitutar3187Arabicel2661Greeken5944Englishiu4300 Inuktitutsr855Serbianen5236Englishtr7571Turkishccp7713Chakmaccp1750Chakmaccp6769Chakmaiu7539 Inuktitutar1082Arabicel4015Greeken2428Englishzh2423Chinesebn5931Banglaen983Englishtr6458Turkishen2082Englishes6657Spanishsr5975Serbiantr4515Turkishccp4482Chakmaja8045Japanesefr753Frenchbn2688Banglaar4652Arabicccp49Chakmaccp7242Chakmatr2491Turkishiu4715 Inuktitutiu7549 Inuktitutbn6792Banglaccp3029Chakmael4256Greeksr1582Serbianar749Arabiceo5073 Esperantofr7705Frenchru6147Russiansr8158Serbianru7295Russianen2098Englishzh2343Chineseel3547Greekiu334 Inuktitutzh5067Chineseru827Russianja7275Japanesechr738Cherokeefr1139Frenchsr3261Serbianth7918Thaichr2774Cherokeeth1080Thaien649Englishes654Spanishsr5371Serbianfr5038Frenchen1131Englishes956Spanishccp6511Chakmaiu658 Inuktitutfr4788Frenchsr2854Serbiantr6584Turkishiu4559 Inuktitutsr1004Serbianja2680Japaneseel1735Greekchr1226Cherokeezh4317Chineseen7892Englishes3531Spanishbn7898Banglael2362Greekeo2008 Esperantofr1922Frenches2907Spanishbn5050Banglael7501Greekeo2334 Esperantoiu3284 Inuktituttr1936Turkishtr5173Turkisheo7653 Esperantoiu7284 Inuktitutzh3190Chineseiu6234 Inuktitutccp212Chakmaiu3364 Inuktitutru6362Russianes54Spanishar3492Arabicccp614Chakmasr1017Serbianel7433Greekiu1439 Inuktituttr7601Turkishfr1200Frenchja1892Japaneseja1100Japaneseel2832Greekes1880Spanishen2397Englishar6760Arabicar8018Arabicfr5599Frenchfr5187Frenchth6202Thaith215Thaien1627Englishiu2149 Inuktituttr3331Turkishiu4928 Inuktitutzh3474Chineseth3441Thaitr5271Turkishtr2137Turkishru8180Russianth4491Thaizh5224Chinesear4541Arabicchr4175Cherokeesr6751Serbiantr7561Turkishchr2599Cherokeeru4257Russianth2997Thaiel238Greekel1331Greekth4867Thaiar2207Arabiceo1069 Esperantoiu5337 Inuktitutru1866Russianchr2456Cherokeezh1025Chinesefr5213Frenchzh59Chinesear3640Arabicth2745Thaien1896Englishes7772Spanishes200Spanishes6651Spanishru4436Russianar52Arabicsr3042Serbianzh2889Chineseccp7987Chakmachr5772Cherokeees3006Spanishth3733Thaiar2245Arabicru6256Russianchr5356Cherokeesr4337Serbianccp4285Chakmaru7795Russianes5677Spanishel6936Greeken5457Englishtr5561Turkishes4155Spanishes1200Spanishar593Arabices7859Spanishiu7628 Inuktitutja7587Japanesesr3296Serbianccp5453Chakmachr3650Cherokeeth385Thaitr2238Turkishiu764 Inuktitutar2369Arabicfr5808Frenchiu3714 Inuktituteo6154 Esperantoeo7943 Esperantosr7747Serbianccp2137Chakmachr5233Cherokeebn5097Banglaru7909Russianel5841Greekar6717Arabicel2231Greekja3946Japaneseja483Japanesezh417Chinesefr3601Frenchja5590Japanesees3195Spanishchr5578Cherokeeen3580Englishen2802Englishccp7906Chakmaes8066Spanishes8104Spanishfr6978Frenchar6328Arabicel7259Greeken1284Englishiu1561 Inuktitutiu1886 Inuktitutar7069Arabiceo4447 Esperantoeo7496 Esperantoja8064Japaneseja5178Japaneseru3262Russiantr2101Turkishchr716Cherokeear7028Arabiciu2266 Inuktitutar7594Arabicru1109Russianccp1564Chakmachr3768Cherokeezh2906Chinesear1068Arabicbn5620Banglaes3948Spanishru326Russianeo5819 Esperantofr6861Frenchiu6269 Inuktituttr7862Turkishth103Thaitr2575Turkishtr7333Turkishccp419Chakmabn865Banglachr7671Cherokeefr715Frenchru1690Russianbn7131Banglaccp4616Chakmael1653Greekel3920Greekel1590Greeken3899Englisheo6373 Esperantosr4501Serbiantr5878Turkishiu2108 Inuktitutel7245Greekchr6848Cherokeeeo5610 Esperantotr861Turkishes123Spanishar4583Arabicbn7674Banglaeo7917 Esperantoar5834Arabiceo4891 Esperantoeo1544 Esperantoiu1415 Inuktitutzh5553Chinesees1245Spanishar831Arabicel2207Greeken6474Englishzh4657Chinesefr6319Frenchtr4601Turkishzh5581Chineseel7082Greekth162Thaibn1047Banglazh6525Chineseja4846Japanesear6401Arabicja826Japanesesr7755Serbianfr6519Frencheo5824 Esperantoeo726 Esperantoar3496Arabicchr1850Cherokeeel4541Greekccp1908Chakmaeo5032 Esperantoja2832Japaneseru3715Russiansr7330Serbianja7232Japaneseccp1049Chakmaiu3373 Inuktitutbn869Banglatr3290Turkishzh6202Chinesear3058Arabicen4172Englishchr6779Cherokeezh932Chinesefr330Frencheo4787 Esperantoiu2280 Inuktitutes3864Spanishes1018Spanishru704Russianen3256Englishth771Thaitr1760Turkishen2036Englishth6653Thairu2053Russianzh3891Chinesear6735Arabicru4526Russianbn6118Banglasr1355Serbianja3546Japanesear2248Arabicja392Japanesesr4203Serbianccp5579Chakmasr929Serbianzh5958Chinesetr7803Turkishchr7306Cherokeeja5609Japanesefr7081Frenchru4644Russianfr2422Frenchtr5037Turkishccp626Chakmael6543Greekccp3608Chakmath4811Thaiar3893Arabicsr3384Serbiansr5492Serbiantr6373Turkishzh6965Chinesesr171Serbianja4922Japaneseen2549Englishen5501Englishru6380Russianfr7758Frenchru5762Russianiu5577 Inuktituttr4531Turkishel4380Greektr5240Turkishtr4856Turkishar2105Arabiczh5577Chinesees3609Spanishccp2892Chakmaen7880Englishiu7004 Inuktitutccp1803Chakmaru1250Russianiu6422 Inuktitutsr4624Serbianel5890Greekbn2973Banglaen554Englishfr193Frenchccp5229Chakmaccp7047Chakmaen5410Englishiu4862 Inuktituteo6934 Esperantotr408Turkishen4184Englishth1060Thaieo4919 Esperantoen6093Englishbn7236Banglael1391Greekzh7395Chineseel794Greekccp3181Chakmabn1740Banglabn6595Banglachr1344Cherokeeel874Greekbn4952Banglaja2663Japaneseja1294Japaneseen3662Englishja899Japanesechr7757Cherokeeel7637Greekfr241Frenches490Spanishsr6950Serbianel6632Greekchr4079Cherokeechr4996Cherokeetr3982Turkishchr740Cherokeebn4347Banglafr116Frenchzh3808Chineseccp2783Chakmatr1781Turkishchr5837Cherokeeccp882Chakmaiu3835 Inuktitutbn5163Banglath7061Thaibn7464Banglaes7172Spanishsr176Serbianfr4117Frenchfr300Frenchth875Thaiccp4886Chakmasr5348Serbianen5016Englishja3609Japaneseccp6621Chakmath5811Thaifr636Frenchth7185Thaifr7443Frenchbn5777Banglaja951Japanesetr8055Turkishchr7764Cherokeechr5215Cherokeebn7716Banglafr4206Frenchbn3942Banglaen1648Englishel1989Greekiu4565 Inuktituteo5212 Esperantoja1109Japaneseru5854Russiansr7230Serbianchr4976Cherokeeja8034Japanesebn6634Banglaes6576Spanishes4570Spanishen573Englishbn4111Banglasr3506Serbianchr5245Cherokeebn5460Banglachr1034Cherokeeru5094Russianar7436Arabicfr6688Frenches6573Spanishen2219Englisheo1074 Esperantochr3899Cherokeesr7912Serbianccp673Chakmaccp6854Chakmachr8034Cherokeeth6181Thaitr3533Turkishchr164Cherokeeeo6652 Esperantoen245Englishfr618Frenchar4508Arabicru1453Russianbn4330Banglatr4438Turkishtr4587Turkishiu4243 Inuktitutel908Greekel199Greekth1218Thaiel7639Greekeo5200 Esperantoes5705Spanishfr3209Frenchru6140Russiansr893Serbianzh7381Chinesebn3743Banglaen3261Englishen563Englishar7024Arabicar4993Arabicbn4169Banglasr7475Serbianccp1845Chakmath2878Thaiar805Arabicru815Russianchr1513Cherokeechr6934Cherokeefr348Frenches4188Spanishfr5521Frenchbn2056Banglachr3217Cherokeechr2763Cherokeezh4116Chineseel2827Greekel1071Greeken8054Englishes5175Spanishja5230Japaneseccp934Chakmabn7760Banglaar43Arabicel387Greekfr6373Frenchzh5346Chinesebn3085Banglaen5334Englishth476Thaibn1346Banglatr6067Turkishth7257Thaichr4905Cherokeeth3570Thairu2544Russianchr540Cherokeeja3880Japaneseeo6018 Esperantozh5916Chinesebn2530Banglatr7662Turkishel5472Greekeo2575 Esperantoar7121Arabicru2937Russiansr7325Serbianccp2538Chakmatr6119Turkishel3790Greekar4671Arabicth3640Thaiel6141Greekel5703Greeken3418Englisheo6998 Esperantoes299Spanishfr6201Frenchru1996Russiansr6404Serbianth1964Thaichr6581Cherokeetr6922Turkishzh131Chinesesr7719Serbianzh7142Chinesear6522Arabicel6790Greekzh6888Chineseth702Thaichr3617Cherokeezh6711Chineseiu5444 Inuktitutzh65Chinesear4847Arabicen5347Englishen7519Englishsr5138Serbianiu7812 Inuktitutes4799Spanishiu606 Inuktitutja1195Japaneseccp7331Chakmath2392Thaisr3938Serbianbn3897Banglazh1732Chineseeo4018 Esperantoes4197Spanishar4912Arabicru840Russianar1790Arabiceo3070 Esperantoen5889Englishtr5159Turkishel1026Greekru6674Russianchr3980Cherokeeel5286Greekccp3869Chakmaeo4563 Esperantoes6512Spanishfr7435Frenchru6325Russiantr5214Turkishth6218Thaiar511Arabices2927Spanishth3097Thaizh3437Chinesetr2207Turkishchr7094Cherokeesr4908Serbianfr4615Frenchen2109Englisheo2455 Esperantobn5822Banglaja2692Japanesebn3178Banglaiu3320 Inuktitutfr7119Frenchccp6760Chakmatr7908Turkishar3270Arabiciu3779 Inuktitutth3856Thaifr1151Frenchel3610Greeksr4578Serbianes8090Spanishfr2766Frenchsr5307Serbianchr4436Cherokeeiu6755 Inuktitutccp684Chakmachr2441Cherokeeth1587Thaija5451Japaneseeo346 Esperantochr239Cherokeeiu3172 Inuktitutccp1636Chakmatr5013Turkishja2534Japaneseccp7762Chakmaen7875Englisheo462 Esperantoeo7217 Esperantoja2254Japaneseru1190Russianru7983Russiantr1952Turkishar2717Arabicar2833Arabicar7493Arabicen5113Englishru7364Russianes6136Spanishru3442Russianth5292Thaizh4208Chineseja3771Japanesear4695Arabiczh7415Chineseja2431Japanesezh628Chineseccp764Chakmaen1412Englishen6789Englishfr7347Frenchtr7024Turkishen7342Englishar7395Arabicfr7779Frenchiu7374 Inuktitutbn1840Banglaja5638Japanesesr2814Serbianth8185Thaieo2582 Esperantoth7121Thaiccp7155Chakmaes7807Spanishja4389Japaneseel6502Greekeo2059 Esperantotr7814Turkisheo907 Esperantoth3148Thaisr2192Serbianccp4423Chakmatr4460Turkishtr3918Turkishth931Thaisr6244Serbianzh4763Chineseiu4960 Inuktitutiu1432 Inuktitutsr7581Serbianccp1190Chakmaccp7792Chakmaja1174Japanesebn176Banglaiu5327 Inuktituteo14 Esperantoiu1943 Inuktitutsr4996Serbiantr5938Turkishen2801Englishth909Thaieo5008 Esperantobn1992Banglachr1434Cherokeebn7407Banglael3052Greektr6296Turkishzh4106Chinesezh6074Chinesear3821Arabicar3084Arabicru1437Russianiu6328 Inuktitutar2327Arabicen6466Englishchr5886Cherokeeccp3555Chakmaja4818Japanesees7257Spanishth7826Thairu2587Russianth5504Thaija4066Japanesebn3554Banglaru136Russianja6969Japaneseiu1088 Inuktitutel4839Greekchr2825Cherokeeeo1744 Esperantofr3900Frenchtr3487Turkishru6055Russianes7369Spanishja6882Japaneseeo3802 Esperantoiu5915 Inuktitutja4453Japanesebn1201Banglachr4827Cherokeeiu7769 Inuktituttr3568Turkishar3310Arabicfr1406Frenchccp6064Chakmaru3578Russianfr5027Frenchsr4083Serbianccp3672Chakmachr3046Cherokeear58Arabiceo3879 Esperantozh2936Chineseth7764Thaith4664Thaichr469Cherokeeen2796Englishth3836Thaiel7138Greekel4651Greekfr5231Frenchth5626Thaiel3024Greekel2286Greeken32Englishiu1966 Inuktitutja7808Japaneseja5581Japanesechr2576Cherokeear6977Arabiczh3156Chineseccp4140Chakmael1647Greekfr5737Frenchsr1603Serbianru7674Russiantr8175Turkishsr3487Serbianfr4138Frenchfr6088Frenchzh5608Chineseru4667Russianth4199Thairu6633Russianth566Thaieo598 Esperantoes8156Spanishes5996Spanishiu7534 Inuktitutfr3216Frenchtr954Turkishsr6852Serbianel7419Greekes6536Spanisheo6664 Esperantoar373Arabicth4547Thaiiu2927 Inuktitutiu5380 Inuktitutja4272Japanesees6871Spanishtr4268Turkishes6423Spanishru7210Russiantr5172Turkishen5504Englishchr4018Cherokeeru5656Russianiu4225 Inuktituteo5350 Esperantoar7299Arabicccp8147Chakmaen3410Englishes2900Spanishth1554Thaiiu4204 Inuktitutzh1752Chinesees5440Spanishru4633Russianeo7872 Esperantoes557Spanishiu7893 Inuktitutccp5949Chakmaccp3379Chakmaes2930Spanishzh5210Chinesezh6638Chinesees5132Spanishiu6223 Inuktitutel7379Greekzh7960Chineseccp2570Chakmazh2650Chineseiu6257 Inuktitutja8036Japanesees6079Spanishbn8034Banglaru5950Russianru7793Russianes7843Spanishccp1766Chakmath707Thaies1771Spanishbn3122Banglaar751Arabiczh1311Chineseja3519Japanesezh2901Chinesechr4612Cherokeees7782Spanishel2369Greekeo571 Esperantoja2784Japanesechr5750Cherokeesr6718Serbianja4637Japanesear5552Arabicja922Japaneseja2947Japaneseru1045Russianbn5628Banglasr8099Serbiantr6185Turkishen6046Englishfr7901Frencheo6125 Esperantofr928Frenchccp4318Chakmaru1851Russianeo6550 Esperantozh2587Chinesebn6219Banglaen1372Englishsr2717Serbianzh2176Chinesezh5242Chineseth6114Thaija3449Japanesesr6001Serbianru3198Russiantr131Turkishen4903Englishes2682Spanishsr527Serbianccp2210Chakmaccp2654Chakmaes6770Spanishzh5376Chineseja7492Japaneseth2910Thaichr781Cherokeechr1838Cherokeear8189Arabicbn2404Banglachr7515Cherokeees2807Spanishfr4075Frenchtr3121Turkishfr5934Frenchel3055Greeksr4980Serbianes4258Spanishen7940Englishar4219Arabicel3271Greekar7405Arabices5Spanishar5184Arabicbn2325Banglaen1767Englishen7807Englisheo6009 Esperantosr500Serbianes3879Spanishsr2713Serbianbn5800Banglael377Greeken1976Englishtr1860Turkishja7437Japaneseth6263Thaith7848Thaisr7424Serbianeo4904 Esperantoeo4657 Esperantoru7953Russianja1227Japanesear5304Arabicchr7729Cherokeeccp5398Chakmaccp1995Chakmachr4726Cherokeees6171Spanishja6626Japanesesr5368Serbianes410Spanishchr7856Cherokeeel3013Greekeo6747 Esperantoes1751Spanishiu852 Inuktitutsr4467Serbianru4675Russianth6855Thaizh757Chineseiu7158 Inuktitutiu725 Inuktitutsr5566Serbianru269Russianes3477Spanishccp7887Chakmael6614Greekbn7448Banglaja4305Japanesetr7144Turkishen3692Englishbn3814Banglazh3337Chinesebn6194Banglaar3661Arabicfr7555Frenchen4326Englishar2963Arabicen3939Englishtr4025Turkisheo4043 Esperantofr7421Frenchiu5975 Inuktitutru4541Russianiu7857 Inuktitutth2807Thaiar4972Arabicfr7767Frencheo6404 Esperantofr8139Frenchja4955Japaneseel2875Greekiu7404 Inuktitutsr312Serbianfr509Frenchel2872Greeken1795Englishsr1470Serbiantr3223Turkisheo1893 Esperantoja2203Japaneseja419Japaneseel6990Greekeo7589 Esperantotr427Turkishtr5071Turkishiu2581 Inuktitutsr6734Serbianru2525Russianes5916Spanishru3265Russianbn6590Banglabn160Banglaes896Spanishar2358Arabicchr159Cherokeechr1851Cherokeeeo1562 Esperantoiu4845 Inuktituteo4073 Esperantoja5393Japaneseja6861Japanesechr5196Cherokeeru1009Russianzh4118Chineseeo6922 Esperantoen3688Englisheo7302 Esperantosr869Serbianccp8109Chakmachr991Cherokeeru7045Russianccp3758Chakmael867Greekar5861Arabicru3916Russianfr3716Frenchru3358Russianar7034Arabicar5048Arabicsr5495Serbiantr4401Turkishes6219Spanishru738Russianel2298Greekccp181Chakmasr6361Serbianzh847Chineseru6433Russianja5871Japaneseja2052Japanesefr2601Frenchel2573Greekchr1424Cherokeeru1887Russiansr6947Serbiantr1388Turkishel1988Greekbn5703Banglaeo3539 Esperantoru1412Russianchr1520Cherokeeth2658Thaibn4747Banglasr3343Serbianccp6734Chakmafr6257Frenchja3733Japaneseth360Thaitr2253Turkishsr1505Serbianiu5052 Inuktitutel6184Greeken7812Englishes3797Spanisheo4965 Esperantoiu6759 Inuktitutbn5639Banglath3103Thaija855Japanesesr5162Serbianzh7936Chinesesr7377Serbianes2946Spanishbn848Banglaja1002Japaneseru4478Russianth967Thaiar81Arabicja5439Japanesechr2735Cherokeear2330Arabicel2672Greeksr6503Serbianiu3069 Inuktitutja5404Japaneseeo652 Esperantoiu1310 Inuktitutccp7445Chakmabn1090Banglaes2729Spanishtr206Turkishar795Arabicccp2754Chakmaeo3703 Esperantoeo1657 Esperantotr1747Turkishzh1474Chineseeo6144 Esperantofr714Frenchel4328Greekel7987Greekja1119Japaneseiu252 Inuktitutiu7873 Inuktitutth4635Thaibn5743Banglaeo4410 Esperantochr6811Cherokeeja2175Japanesechr6929Cherokeeja623Japanesebn451Banglaru1834Russianth5113Thaizh1549Chinesesr4072Serbiantr6537Turkishsr1174Serbianen7408Englisheo2971 Esperantosr3809Serbianccp4102Chakmaes4819Spanishen5607Englishel3306Greekfr1467Frenchchr3153Cherokeeru3942Russianth2823Thaith3569Thaien1207Englishsr4664Serbianar7839Arabicbn1193Banglazh3668Chinesezh1342Chinesesr5432Serbianen2011Englishzh347Chineseccp2681Chakmaes4947Spanishes7938Spanishja7349Japanesees6121Spanishzh6156Chinesezh5464Chineseel917Greektr6813Turkishen2147Englishel6597Greekeo3552 Esperantobn3448Banglaru3103Russianth544Thaifr2028Frenchar379Arabicchr8018Cherokeezh2558Chinesetr5451Turkisheo592 Esperantofr3705Frenchtr4000Turkisheo410 Esperantoen6994Englishes43Spanishfr3419Frenchel8155Greekccp5573Chakmasr4148Serbiansr7972Serbiantr2665Turkishtr3010Turkisheo1464 Esperantosr7203Serbianchr6623Cherokeechr5372Cherokeezh1371Chinesesr7063Serbianiu3593 Inuktitutth2148Thaitr7638Turkishen7366Englishel7795Greeksr1265Serbianel5314Greekiu7054 Inuktitutes6843Spanishru4653Russiansr114Serbianth5398Thaisr2330Serbianes8015Spanishja1885Japaneseel5914Greekiu2106 Inuktitutth2898Thaibn5076Banglatr8057Turkishar2126Arabicchr5142Cherokeeel1472Greeksr5446Serbianeo1521 Esperantoiu7067 Inuktitutfr1736Frenchar6882Arabicccp3477Chakmaccp1642Chakmafr1600Frenchzh3171Chinesezh7951Chinesear2692Arabicru6853Russianiu2800 Inuktituten5823Englishtr2685Turkishiu4855 Inuktitutiu1361 Inuktitutiu6450 Inuktituteo6717 Esperantoth2263Thaitr3095Turkishzh6680Chineseru3298Russiantr6718Turkishar4691Arabictr1269Turkishzh5723Chineseiu7283 Inuktitutel7825Greekel1312Greekfr1770Frenchchr7272Cherokeeru1745Russianar4502Arabicar139Arabicccp2822Chakmaiu2741 Inuktitutru7898Russianiu3347 Inuktituteo634 Esperantoth2774Thaiar2357Arabicbn7953Banglael1242Greekth2363Thaija2967Japaneseja4726Japanesetr1312Turkishen2376Englishccp7068Chakmaeo1849 Esperantosr4115Serbianfr6971Frenchsr5403Serbianfr3841Frenches5446Spanishchr2317Cherokeeeo247 Esperantochr7211Cherokeees316Spanishfr7475Frenchbn7164Banglaccp6637Chakmachr2670Cherokeechr752Cherokeeel3560Greektr2956Turkishes6374Spanishzh1923Chineseth6317Thairu3865Russianja3740Japanesebn7308Banglachr1021Cherokeefr7596Frenches2719Spanishar7449Arabicbn1919Banglabn4726Banglaccp1957Chakmaes7825Spanishel5901Greekeo5679 Esperantoja6468Japanesesr7691Serbianar3561Arabicchr1615Cherokeesr558Serbianbn519Banglafr7123Frenchfr7766Frenchiu4381 Inuktituteo6597 Esperantoiu5409 Inuktitutel5400Greekja2605Japaneseja5023Japaneseru2168Russianzh5821Chineseeo7616 Esperantoja71Japaneseccp5620Chakmaes116Spanishbn4666Banglael7139Greekth214Thaifr972Frenchel1366Greekru5826Russianen2748Englishfr901Frenchiu4531 Inuktitutzh3421Chineseru1721Russianeo2373 Esperantochr2995Cherokeechr1182Cherokeeen2006Englishru7356Russianth2014Thaichr5629Cherokeeen1546Englisheo6842 Esperantoja1547Japaneseth1748Thaiel6394Greekel7512Greekfr6452Frenchfr4384Frenches2050Spanishen6178Englishes280Spanishru5053Russianar8068Arabiciu1436 Inuktitutsr294Serbianes1825Spanishiu1174 Inuktitutru5570Russiansr273Serbiansr4553Serbiansr2457Serbianzh4821Chinesezh6321Chineseja3894Japaneseiu1302 Inuktituttr7099Turkishchr5477Cherokeeru7871Russianchr1342Cherokeeeo2157 Esperantoccp7964Chakmachr3560Cherokeeru7414Russianccp277Chakmazh4063Chinesebn2550Banglaiu1356 Inuktitutes7231Spanishccp2945Chakmaeo1575 Esperantoth8158Thaizh3136Chineseel1493Greeken1507Englisheo1869 Esperantoiu2818 Inuktitutfr1513Frenchfr825Frenchiu6283 Inuktitutsr1661Serbianbn1957Banglath5426Thaichr5237Cherokeeel8039Greektr2077Turkishbn8123Banglaar4175Arabicja7577Japaneseen5816Englishchr7907Cherokeear1925Arabicsr6264Serbianen5053Englishen2306Englishen486Englisheo2303 Esperantoiu639 Inuktituttr1010Turkishfr1045Frenchsr6475Serbianja3832Japanesetr6753Turkishsr8177Serbianfr988Frenchtr7030Turkishccp3462Chakmaiu6547 Inuktitutth3147Thaies3914Spanishsr6135Serbianar5145Arabiczh8131Chinesefr7395Frenchsr6790Serbianiu7819 Inuktitutccp895Chakmath4852Thaiel7802Greekiu118 Inuktitutchr7380Cherokeeel5163Greekeo7097 Esperantoja886Japanesezh6810Chinesear2864Arabicchr8175Cherokeeru4392Russianccp3400Chakmaja6748Japaneseccp6844Chakmafr5872Frenchccp2587Chakmafr3948Frenchar3829Arabicchr297Cherokeefr7617Frenchtr7301Turkishsr8081Serbianja5896Japanesear4665Arabiceo3271 Esperantoru3415Russianen3335Englishth4222Thaith5032Thaiccp2742Chakmaiu6174 Inuktituten537Englishfr1876Frenchsr3703Serbianzh4958Chineseccp2479Chakmaru192Russiansr1497Serbianccp4005Chakmaeo7039 Esperantoen3703Englishsr5993Serbianzh5106Chineseccp5287Chakmaar5549Arabiczh3744Chinesesr4698Serbianth3459Thaiiu3450 Inuktitutzh2238Chinesebn6166Banglaiu414 Inuktitutzh1376Chinesebn8084Banglaja7830Japaneseru4529Russianzh6092Chinesechr440Cherokeear2649Arabicfr351Frenchfr7783Frenchiu7238 Inuktitutzh2667Chineseen3651Englishes4355Spanishchr3722Cherokeeiu5896 Inuktitutsr7049Serbianes2469Spanishfr5564Frencheo4290 Esperantoiu6689 Inuktitutja3555Japanesesr7427Serbianth6330Thaies3419Spanishiu1640 Inuktitutsr2565Serbianchr2718Cherokeeccp7913Chakmaiu2982 Inuktitutja3135Japaneseru4463Russianes970Spanishfr126Frenchar855Arabicth2893Thaiccp1038Chakmaeo5271 Esperantotr7025Turkisheo5940 Esperantoar1492Arabicja7049Japanesechr316Cherokeebn7554Banglazh1617Chineseru157Russianar150Arabicar5597Arabiceo5017 Esperantoes3752Spanishbn85Banglaru1773Russiantr7503Turkishru727Russianeo6749 Esperantobn7937Banglaar6982Arabicbn6112Banglaccp3418Chakmaes5274Spanishbn7983Banglaes1335Spanishiu5871 Inuktitutja4355Japanesezh4659Chineseel5525Greekeo4610 Esperantozh4636Chineseth189Thaiiu5176 Inuktitutccp6549Chakmatr6994Turkishccp6363Chakmafr6084Frenchth2168Thaiel8191Greekzh994Chineseja7268Japanesear6991Arabicsr7699Serbianfr428Frenchar2372Arabicen5580Englishccp7010Chakmabn3392Banglaes6485Spanishsr1863Serbianth1102Thaibn7602Banglaja1746Japaneseen2961Englishchr1599Cherokeeiu3586 Inuktitutar2926Arabiciu777 Inuktituttr6492Turkishen1114Englishiu6562 Inuktitutchr7815Cherokeeeo6184 Esperantoth5395Thaith4431Thaifr6125Frencheo6176 Esperantobn8078Banglael3986Greekzh1624Chineseeo7881 Esperantoja2744Japaneseja2777Japanesees2963Spanishar4124Arabicbn1256Banglaiu4496 Inuktituten694Englishes6388Spanishzh5885Chineseeo587 Esperantozh3044Chineseiu3071 Inuktituttr8187Turkisheo3805 Esperantoru907Russianes7139Spanishccp7082Chakmaar6763Arabicar103Arabicen7386Englishen7421Englishel4227Greeken4673Englishth5251Thaizh984Chineseccp76Chakmaccp4605Chakmaar637Arabices5251Spanishth3864Thaith3456Thaija3414Japanesebn4366Banglaru1366Russianth292Thaiar5252Arabicru7478Russianccp7841Chakmaru2714Russianel5575Greekchr1886Cherokeechr4176Cherokeeeo2621 Esperantoiu667 Inuktitutchr6818Cherokeeen5042Englishen176Englisheo6079 Esperantotr3823Turkishbn7163Banglaar821Arabicccp4793Chakmatr2061Turkishen771Englishccp7930Chakmafr6749Frenchar5589Arabictr8146Turkishzh7046Chinesebn7900Banglafr1641Frencheo1123 Esperantosr5356Serbiantr2524Turkishen6469Englishth7818Thaiel6131Greekccp7578Chakmaccp7785Chakmaja4653Japaneseiu3503 Inuktitutru1704Russiantr6474Turkishccp6861Chakmachr2654Cherokeeiu3918 Inuktituten7315Englishiu4403 Inuktitutzh7680Chinesefr2729Frenchccp5755Chakmaiu3727 Inuktituttr2571Turkishru53Russianar6947Arabicbn1639Banglaen418Englisheo1788 Esperantosr1800Serbianccp5433Chakmasr6553Serbianel3280Greekiu2145 Inuktitutth4005Thaien5759Englishja5097Japanesees6335Spanishth2776Thaija1561Japanesetr84Turkishccp7747Chakmatr2598Turkishru210Russianel6918Greekfr8148Frenchiu3293 Inuktitutbn306Banglaiu4919 Inuktitutth5622Thaies1023Spanishth2516Thaija1065Japanesezh4948Chinesechr7068Cherokeechr2824Cherokeees3080Spanishfr1133Frenchth2390Thaichr350Cherokeeen802Englishzh5105Chineseru7387Russianes3839Spanishen5824Englishes7307Spanishth3306Thaifr1866Frenchja7258Japanesechr133Cherokeeth6938Thaichr7827Cherokeeru7679Russianccp2663Chakmaja6586Japaneseru5747Russianccp835Chakmachr1971Cherokeees3174Spanishiu7683 Inuktitutru6584Russianen5937Englishfr3104Frenchsr5472Serbianja5179Japaneseiu471 Inuktitutth1398Thaitr4754Turkishja7923Japanesezh7967Chinesezh6548Chinesees4854Spanishfr7090Frenchtr5526Turkishja1691Japanesechr434Cherokeefr7101Frenchja977Japanesear4963Arabictr2694Turkishru2867Russianiu6319 Inuktitutja4974Japanesechr3208Cherokeeiu810 Inuktitutiu457 Inuktitutru6716Russianja1328Japaneseth3756Thaisr5823Serbianes4870Spanishccp6923Chakmaru6828Russiansr289Serbianbn5198Banglaccp3738Chakmaccp1039Chakmaar5443Arabiciu1833 Inuktitutchr2106Cherokeesr5504Serbiantr2893Turkishes3218Spanishfr7736Frenchiu4337 Inuktitutru8027Russianccp437Chakmatr1668Turkishzh2011Chineseru5416Russianzh1797Chinesezh2925Chinesees917Spanishen3075Englishchr4738Cherokeebn7539Banglachr7319Cherokeechr1148Cherokeesr7821Serbianar79Arabices1688Spanishchr6536Cherokeeru6986Russianes271Spanishel4956Greekfr72Frenchiu6167 Inuktitutccp6988Chakmaja7734Japaneseccp5217Chakmaru7404Russianja5832Japanesebn6381Banglabn208Banglatr1342Turkishbn6644Banglatr773Turkishtr4916Turkishru626Russianel6515Greekiu4953 Inuktitutchr1459Cherokeeel1994Greekja5880Japanesear3166Arabiceo6577 Esperantochr505Cherokeees2222Spanishru5779Russianth4859Thaiar122Arabicar820Arabicccp3235Chakmaen1285Englishja6403Japanesechr4008Cherokeeel5834Greekchr7320Cherokeefr6390Frenchja2368Japaneseru7396Russianru2185Russianth4138Thaiel2189Greeksr2130Serbianru1167Russianth1829Thaichr3370Cherokeeru3841Russianchr3787Cherokeeel1385Greekccp3485Chakmafr6206Frenches4314Spanishzh1756Chinesees4536Spanishar4662Arabicen2863Englishen763Englisheo1778 Esperantosr6042Serbianzh6464Chineseru7006Russianru4002Russianccp2690Chakmafr6667Frenchru2691Russiansr4667Serbianchr949Cherokeees2621Spanishel770Greekfr5941Frenchchr7658Cherokeezh5269Chineseiu1515 Inuktitutth1366Thaies7561Spanishja6716Japaneseja6491Japaneseja7234Japanesebn7110Banglaiu8043 Inuktituteo1565 Esperantofr5318Frenchth622Thaizh846Chinesezh7209Chineseja3475Japaneseen3834Englishel2866Greektr6746Turkishbn7215Banglael484Greeken4176Englishja1448Japanesear6003Arabicchr1490Cherokeeiu5432 Inuktitutes275Spanishel2717Greekchr1974Cherokeeth3713Thaies8045Spanishes4818Spanishsr7473Serbiansr3229Serbianchr2368Cherokeebn3978Banglaeo5145 Esperantosr6789Serbianzh381Chinesebn5865Banglaeo948 Esperantoes2828Spanishen6322Englisheo1402 Esperantoeo5137 Esperantotr110Turkisheo6066 Esperantoel3436Greekar7496Arabicar1683Arabicar4221Arabicbn1681Banglachr2156Cherokeeiu3582 Inuktitutiu5719 Inuktitutccp4576Chakmaja5615Japanesezh5643Chinesechr6588Cherokeeen5958Englishja5837Japaneseru5891Russiansr5363Serbianen4416Englishiu6576 Inuktitutel1737Greekeo7076 Esperantoiu6984 Inuktitutru6548Russiansr6746Serbianfr7867Frenchja752Japaneseeo7993 Esperantobn5775Banglael4311Greekth1212Thaitr292Turkishiu1956 Inuktituten5760Englishru8024Russianfr4205Frenchar1653Arabicar3314Arabicen398Englisheo1293 Esperantoes3614Spanishiu7916 Inuktitutel7162Greekru6066Russianar642Arabicen5815Englishja1717Japaneseru1577Russianru5249Russianiu5556 Inuktitutsr3143Serbianeo787 Esperantoes7811Spanishth7333Thaiiu3339 Inuktituten5378Englishru7642Russianen2198Englishel6621Greekru3741Russianccp495Chakmaeo1578 Esperantosr7513Serbianes1668Spanishja2532Japaneseel610Greekeo2253 Esperantoel8015Greekiu1035 Inuktituttr4665Turkishiu8161 Inuktitutfr3582Frenchtr4263Turkishtr4356Turkishja6501Japanesezh5033Chineseiu7854 Inuktitutth7791Thaiar1861Arabiceo7763 Esperantoiu3602 Inuktitutchr7175Cherokeesr2050Serbianth4917Thaifr3923Frenchar4689Arabicar3098Arabicsr6593Serbianes3334Spanishchr1801Cherokeechr2919Cherokeeru4730Russianbn4830Banglachr1508Cherokeeen8186Englishar2985Arabiciu6929 Inuktitutes5313Spanishru7879Russianes681Spanishar6264Arabicccp8016Chakmachr5331Cherokeeth109Thaith5145Thaisr6585Serbiantr6040Turkisheo7030 Esperantoen1706Englishes4311Spanishar833Arabicar316Arabicchr4527Cherokeechr2820Cherokeetr2507Turkishbn5972Banglasr6673Serbianth4605Thaiar7688Arabictr3176Turkishzh2850Chineseen2948Englishes1985Spanishes3361Spanishja7880Japaneseja5571Japanesefr4632Frenchth898Thaith4504Thaiiu3800 Inuktitutccp6156Chakmaen6562Englishtr2636Turkishru4386Russianzh2544Chineseth4174Thaiar3185Arabicfr933Frenchchr2588Cherokeeth4173Thaitr4649Turkishfr2728Frenchja6354Japaneseth6093Thaien2576Englishth2289Thaichr3584Cherokeechr3545Cherokeebn6319Banglath1332Thaies6373Spanishel796Greekar6890Arabicchr1728Cherokeeja2007Japaneseel4895Greekel2411Greekzh5086Chinesezh7791Chinesees2934Spanishru4124Russianru7419Russianiu7341 Inuktitutes5781Spanishth1647Thaiiu4387 Inuktituten7587Englishbn6481Banglatr4062Turkishchr1304Cherokeeru7648Russianth1428Thaifr5695Frenchtr5085Turkishchr7070Cherokeeeo126 Esperantoar1005Arabicccp7931Chakmaiu7296 Inuktitutru2254Russianru1950Russianchr3050Cherokeees5085Spanishth1072Thaisr2426Serbianja529Japaneseccp3887Chakmaru581Russianru6337Russiansr5613Serbianccp2689Chakmael4573Greekzh1099Chineseeo4566 Esperantozh2088Chinesezh5886Chineseccp388Chakmabn7725Banglabn5321Banglaccp705Chakmatr115Turkishar1655Arabicfr4050Frenchar1632Arabicar4875Arabices7483Spanishen3190Englishchr4962Cherokeeen7710Englishes6228Spanishiu6478 Inuktitutsr7158Serbianth4538Thairu3498Russiansr1449Serbianeo5751 Esperantotr7981Turkisheo7275 Esperantoiu7227 Inuktitutru3885Russianar5596Arabiceo77 Esperantoccp7048Chakmaru3355Russiantr2841Turkishja2293Japaneseru892Russianccp2473Chakmafr2570Frenchzh3650Chineseen7878Englishen1647Englishes7627Spanishiu3684 Inuktitutar7702Arabicchr8023Cherokeees4883Spanishzh2403Chineseen4954Englishtr4293Turkishes3042Spanishth2865Thaieo105 Esperantoccp7096Chakmaar6422Arabicru2371Russianzh1977Chinesechr2412Cherokeeeo7571 Esperantofr3727Frenchtr7758Turkishtr7448Turkishccp3205Chakmael2516Greekru8150Russianja4561Japaneseth5552Thaichr3115Cherokeechr2795Cherokeeeo5156 Esperantotr915Turkishccp496Chakmaiu4209 Inuktitutiu6843 Inuktituttr4719Turkishes5943Spanishtr841Turkishtr6080Turkishen6067Englishfr5444Frenchar2771Arabiczh3976Chineseiu3880 Inuktitutzh5145Chinesefr1452Frenchen7756Englishen4645Englishru3273Russianth3208Thaija5103Japanesezh3995Chineseth1522Thaien4391Englishes561Spanishar6517Arabicel7153Greekiu4128 Inuktitutru2242Russiantr2303Turkishzh6808Chineseccp1109Chakmaccp6888Chakmaes472Spanishfr335Frenches5961Spanishiu3318 Inuktitutja2779Japanesefr5619Frenchen490Englisheo3979 Esperantoru4207Russianes7220Spanishth1265Thaija1255Japanesetr1773Turkishru4827Russiansr133Serbianel2101Greektr5829Turkishtr3226Turkishtr6254Turkishfr7427Frenchen6698Englishes6782Spanishzh200Chineseeo1247 Esperantoth5848Thaitr1294Turkishccp8073Chakmatr3685Turkisheo163 Esperantoja8009Japanesees4283Spanishfr7900Frenchar2794Arabicsr1480Serbianccp145Chakmaar3095Arabicel7628Greekeo3465 Esperantoes4439Spanishchr6502Cherokeesr6484Serbianes4164Spanisheo6541 Esperantoccp2217Chakmaccp7076Chakmafr8002Frenchsr3736Serbianja2122Japaneseen6471Englishbn6452Banglaar1251Arabicel5038Greeksr6888Serbiantr2412Turkishel5091Greekiu1457 Inuktitutes3431Spanishel2348Greekbn5380Banglabn4675Banglael4958Greekes6844Spanishfr3697Frenchru2619Russianth6591Thaitr3475Turkishzh5532Chinesefr4752Frencheo6121 Esperantoiu6632 Inuktitutel2322Greekja4651Japanesesr4051Serbianchr7576Cherokeesr1028Serbianccp6377Chakmasr6356Serbianbn7659Banglath7690Thaichr821Cherokeefr5327Frenchtr7320Turkishth1005Thaiar2362Arabiciu8006 Inuktitutzh5627Chineseeo340 Esperantobn6842Banglaccp7973Chakmaru1213Russianiu2150 Inuktitutru7950Russianeo2741 Esperantochr3648Cherokeeiu2195 Inuktitutru1394Russianccp1264Chakmaccp3787Chakmaja8148Japaneseiu6356 Inuktituten3959Englishru7207Russianchr3350Cherokeeja7135Japaneseru5378Russianja3465Japanesesr3747Serbianel7377Greekes2887Spanishtr7212Turkishbn6833Banglaeo5641 Esperantoar2054Arabiczh933Chinesezh7324Chineseiu6817 Inuktitutbn5554Banglaes3172Spanishar1897Arabiciu7484 Inuktitutzh4036Chinesefr2567Frenchiu358 Inuktitutbn1894Banglaru5930Russianccp1748Chakmaiu2281 Inuktitutru413Russiansr4445Serbiantr3523Turkishchr981Cherokeebn4425Banglaeo1580 Esperantoth4567Thaieo1227 Esperantofr6841Frenchtr6669Turkishtr6108Turkishel2010Greekja4473Japaneseen6717Englisheo7373 Esperantofr2552Frenchbn5830Banglabn2392Banglasr6058Serbianiu3836 Inuktitutth4213Thaija5424Japaneseru6886Russianchr2519Cherokeeru6351Russianru7994Russianar4237Arabicfr2898Frenches5307Spanishar934Arabicru3982Russianiu2553 Inuktitutja6336Japanesetr2645Turkishzh3086Chineseiu6330 Inuktituten5972Englishiu1133 Inuktitutth6360Thairu4226Russiantr6069Turkishccp1465Chakmafr1162Frenchfr1051Frenchfr7098Frenchzh4385Chineseen8116Englishth7361Thaiiu7805 Inuktitutja4215Japanesees7177Spanishes7756Spanishen553Englishja5315Japaneseccp8145Chakmael4115Greekeo2492 Esperantoiu1506 Inuktitutccp398Chakmasr6623Serbianar7657Arabicar5869Arabicfr6982Frenchja6628Japanesechr4645Cherokeeth6400Thaibn4517Banglaru3312Russianccp136Chakmaes723Spanisheo4989 Esperantoja6585Japaneseen3070Englishfr7219Frenchja2382Japanesear4968Arabicru5754Russianzh3259Chineseeo4111 Esperantobn769Banglasr8144Serbianja4147Japanesefr3482Frenchsr2196Serbianru6136Russiantr3031Turkishzh5162Chinesees1423Spanishchr2597Cherokeear2944Arabicchr7783Cherokeees1232Spanishzh4677Chineseru1404Russianchr757Cherokeebn3111Banglael1605Greekth5389Thaiiu5767 Inuktitutel6763Greeken4129Englishen5605Englishja1189Japaneseen6592Englishar5914Arabicchr8126Cherokeeel1108Greekeo1942 Esperantoccp2018Chakmafr2121Frenchsr6357Serbianbn2900Banglaccp5059Chakmaru5921Russianar830Arabicar3494Arabiciu5690 Inuktitutzh1937Chineseth6128Thaieo3072 Esperantotr2761Turkishru4734Russianja2481Japaneseen5732Englishfr79Frenchbn1073Banglath96Thaith5357Thaith4208Thaichr8037Cherokeeeo7528 Esperantoth5966Thaies5303Spanishel1589Greektr5478Turkishen3874Englishccp1296Chakmaja1061Japaneseccp3389Chakmaeo7503 Esperantoen6012Englishzh2192Chineseel3719Greekfr5149Frenchsr5691Serbiantr5086Turkishbn3996Banglaccp8070Chakmaiu4395 Inuktituttr6259Turkishbn1814Banglachr7780Cherokeetr4074Turkishbn1998Banglaccp8Chakmaccp6192Chakmaes4891Spanishru7197Russianzh1927Chineseeo3018 Esperantoiu5136 Inuktitutru680Russianccp2828Chakmael4612Greekel4267Greeksr6378Serbianeo6228 Esperantoel719Greekccp1140Chakmaru757Russianeo6396 Esperantoes6481Spanishtr5374Turkishel2329Greeken6001Englisheo3433 Esperantoccp1230Chakmabn6344Banglaiu7727 Inuktituttr507Turkishes2721Spanishfr3620Frenchel2225Greekiu4002 Inuktitutiu5392 Inuktitutbn5520Banglaar2941Arabiceo6072 Esperantosr4965Serbianchr4034Cherokeeen4290Englisheo7059 Esperantoes1421Spanishchr5475Cherokeezh246Chinesechr2821Cherokeefr3306Frenchiu4102 Inuktituten2906Englishfr6850Frencheo4128 Esperantoja3772Japaneseiu7680 Inuktitutru5685Russianru7055Russianth1380Thaith217Thaifr1095Frenchchr6115Cherokeeel8051Greekes1409Spanishes4789Spanishes7540Spanishja863Japanesesr3462Serbianth820Thaith6509Thaitr7750Turkishja6004Japanesezh5385Chineseccp1776Chakmaja5619Japanesezh4316Chinesechr4618Cherokeear7207Arabicccp6786Chakmabn4606Banglabn1179Banglael3158Greeksr7532Serbianzh5921Chinesetr2637Turkishbn3894Banglabn5334Banglasr1617Serbianru2186Russiansr2161Serbianen3378Englishccp5582Chakmaeo4631 Esperantoth6505Thaith5768Thaija4117Japanesebn464Banglaen3200Englishru1447Russianeo5484 Esperantoth600Thaisr8012Serbianeo6326 Esperantofr1296Frenchja1850Japanesefr36Frencheo4149 Esperantoar2751Arabices6496Spanishfr2628Frenchsr4887Serbiansr2837Serbiansr5241Serbianbn7868Banglabn1071Banglaccp5431Chakmachr2877Cherokeezh2561Chinesetr7004Turkishru3272Russianar192Arabicar7795Arabiciu7444 Inuktitutzh2886Chinesesr5053Serbianbn8158Banglabn6809Banglaeo4813 Esperantobn4665Banglabn1986Banglaar7257Arabicfr5221Frenchchr5363Cherokeeel3313Greekar5196Arabicen6693Englishsr5175Serbianchr2431Cherokeeccp7205Chakmaar7078Arabicfr2689Frenchar1472Arabicsr1177Serbianth7783Thaichr873Cherokeetr7694Turkishar5749Arabicbn6838Banglasr4838Serbianeo840 Esperantoes3009Spanishth7571Thaien7458Englishiu5466 Inuktitutja6440Japanesetr230Turkisheo7319 Esperantofr5885Frenchiu5124 Inuktitutru3152Russianzh783Chinesezh4018Chineseeo8097 Esperantoru1130Russianccp3807Chakmaja6552Japanesechr6540Cherokeetr3858Turkishen5707Englishbn4262Banglazh2761Chinesezh2584Chineseja1975Japanesefr4706Frenchen7861Englishccp5Chakmaen5534Englishru7770Russianccp3428Chakmasr3808Serbianar3290Arabicfr3790Frenchzh2299Chineseja2630Japaneseth6919Thaiel685Greekiu1518 Inuktitutsr565Serbianth1548Thaitr6147Turkishzh3206Chineseja4076Japanesefr4677Frenchru4881Russianccp6143Chakmatr4017Turkisheo2643 Esperantochr185Cherokeees3822Spanishchr63Cherokeesr3167Serbianchr3366Cherokeear1685Arabiczh2692Chinesesr2261Serbianja6773Japanesesr184Serbianen2133Englishth4923Thaiiu5854 Inuktitutes666Spanishtr6092Turkishccp3018Chakmafr4991Frenchru3837Russianccp6164Chakmaes4341Spanishth3747Thaiar2966Arabices3262Spanishes6607Spanishar7557Arabicfr2879Frenchth3715Thaiar3931Arabicchr4131Cherokeechr918Cherokeeja2984Japaneseja6103Japaneseja7334Japaneseth1167Thairu3368Russiansr7359Serbianar2815Arabicar7322Arabicbn1889Banglaes3163Spanishen4455Englishfr1972Frenchsr3132Serbianes2804Spanishbn2672Banglaen6583Englishiu6133 Inuktituten2319Englishja381Japaneseth3277Thaith6293Thaitr5997Turkishel6505Greekzh8053Chinesees381Spanishchr912Cherokeeja1219Japaneseel6771Greekar1783Arabicru6143Russianes3519Spanishar4348Arabicbn2048Banglaccp5686Chakmaar4543Arabicchr4411Cherokeeja1108Japanesezh2785Chineseel1152Greekzh6879Chinesees2562Spanishfr4018Frenchchr6718Cherokeear268Arabicja1520Japaneseel4973Greekchr6712Cherokeefr4917Frencheo3713 Esperantoiu6453 Inuktitutes7252Spanishru629Russianru7965Russiantr690Turkishzh3815Chinesear2679Arabicja6237Japaneseru1375Russiantr1881Turkishchr7326Cherokeeja3905Japanesebn2603Banglaja5894Japaneseth4144Thaien3887Englishzh719Chinesefr4591Frenchzh1655Chineseja5011Japaneseiu4096 Inuktituttr5568Turkishzh5123Chinesebn4129Banglaiu6668 Inuktitutar710Arabiciu3972 Inuktitutja5928Japanesear774Arabicel926Greekes4136Spanishel3338Greekfr1428Frenchzh6542Chinesetr4174Turkishen5689Englishar5273Arabices5272Spanishchr441Cherokeebn4612Banglaiu4599 Inuktitutccp7677Chakmaru3343Russianel3347Greektr1926Turkishth6928Thaiel1248Greeksr2929Serbianiu5914 Inuktituteo542 Esperantoel7104Greektr1898Turkishsr7843Serbianeo1665 Esperantoen4208Englishbn1345Banglafr8154Frenchru6407Russianru7048Russiantr761Turkishtr3455Turkishiu698 Inuktitutth4944Thaiccp6857Chakmael3928Greekja4675Japaneseel4387Greekeo6257 Esperantoen7900Englishccp7366Chakmabn2695Banglazh6568Chineseeo7806 Esperantotr2917Turkishar785Arabicar1537Arabicfr53Frenches4786Spanishel5530Greekru1505Russianen2640Englishchr4518Cherokeeel4584Greekru6595Russianar7633Arabicfr7563Frenchchr171Cherokeesr3108Serbiantr4865Turkishes5053Spanishfr2803Frenchru2662Russianiu7202 Inuktitutar632Arabicar7531Arabicja4114Japanesefr6573Frenchth3732Thaibn3148Banglabn2644Banglazh3267Chineseiu3701 Inuktitutth5369Thaien4885Englishel1793Greekzh134Chinesezh4983Chineseru2Russianfr642Frenchfr275Frenchsr1684Serbiantr5462Turkishar5865Arabices6884Spanishchr4147Cherokeeeo5150 Esperantofr4213Frenchar4584Arabicja234Japaneseja246Japanesebn660Banglaccp6625Chakmael196Greekzh5256Chinesetr6960Turkishth5319Thaifr5928Frenchzh2473Chinesetr472Turkishja3377Japaneseja7287Japanesetr3598Turkishtr4137Turkishbn8063Banglaeo264 Esperantochr2679Cherokeefr1279Frenchccp1540Chakmaru219Russianchr2295Cherokeeiu3154 Inuktitutth8060Thaizh5767Chineseru3454Russianchr2275Cherokeebn1645Banglaar6097Arabicja3537Japaneseeo7565 Esperantoen1680Englishes647Spanishsr6392Serbiantr6273Turkishar1917Arabiczh2876Chineseen4786Englishtr7725Turkishccp3135Chakmael5427Greekchr3019Cherokeeru6859Russiantr4985Turkishth1579Thaiiu5093 Inuktitutsr6225Serbianja2465Japanesefr7699Frenchsr755Serbianccp5502Chakmasr2714Serbianth3662Thaiar5766Arabicen4536Englishtr5540Turkishfr5110Frenchru5821Russianen2099Englishen7848Englishchr4512Cherokeeiu6825 Inuktitutsr6543Serbianel5753Greekar3892Arabiciu6414 Inuktitutzh2078Chineseiu7295 Inuktitutar1355Arabicth5492Thaifr4337Frenchccp4347Chakmael2434Greekbn2038Banglaeo3794 Esperantoel5344Greekru2632Russianth3442Thaizh4335Chinesetr2828Turkishtr6368Turkishar4580Arabicfr6046Frenchiu4508 Inuktitutja1487Japanesetr5659Turkishru478Russianchr3830Cherokeees535Spanishar4369Arabices3758Spanisheo8050 Esperantozh3177Chinesefr2566Frenchzh7812Chinesear6135Arabiceo4666 Esperantosr4262Serbianja1804Japanesebn8131Banglaen5360Englishes3716Spanishfr5184Frenchccp1594Chakmazh8065Chineseth4719Thaiar7605Arabiciu4030 Inuktitutfr5208Frenchtr6290Turkishar3477Arabicar699Arabicfr6447Frenchth4425Thaitr5014Turkishes1571Spanishth1158Thaieo408 Esperantoes3856Spanishtr3029Turkishen2308Englishiu2232 Inuktitutccp5224Chakmaen5907Englishru3383Russianth578Thaitr5049Turkishja889Japaneseeo7384 Esperantoeo1287 Esperantoiu4547 Inuktitutes1509Spanishel378Greekchr1373Cherokeezh85Chineseja6327Japaneseja2864Japanesesr5768Serbiantr6685Turkishja2349Japanesefr7225Frenchen6354Englishiu6006 Inuktitutfr5226Frenchtr1810Turkishzh4866Chinesetr7058Turkishbn2300Banglael4461Greekja4496Japaneseccp493Chakmachr2417Cherokeeeo1040 Esperantotr4225Turkishiu5957 Inuktitutchr5440Cherokeechr1258Cherokeees3140Spanishccp2179Chakmafr1192Frenches4892Spanishth5814Thaiar6438Arabictr309Turkishzh3665Chinesesr4181Serbianzh6563Chinesesr6382Serbianeo3179 Esperantoth5010Thaiel3206Greektr4928Turkishchr4096Cherokeetr1923Turkishchr5155Cherokeear810Arabicbn2835Banglael1870Greekeo4334 Esperantofr4447Frenchja1972Japanesear843Arabicccp7809Chakmaen5201Englishtr691Turkishes4221Spanishja6474Japanesear3540Arabicen1951Englishen7709Englishen4500Englishel4047Greekccp5126Chakmaen878Englishiu875 Inuktitutsr7869Serbianen6940Englishth2337Thaitr3098Turkishzh5654Chinesetr6543Turkishen6039Englishes291Spanishiu672 Inuktituten1461Englishtr3126Turkishchr3950Cherokeebn6171Banglaccp557Chakmaes7363Spanishzh2779Chinesechr7533Cherokeeru844Russianen120Englishru2642Russianchr602Cherokeeen6009Englisheo411 Esperantoth8074Thaisr4967Serbianes7096Spanishzh1777Chineseccp6423Chakmaen5390Englishchr7717Cherokeeeo1546 Esperantoja6290Japaneseel7154Greekru2792Russianiu6599 Inuktitutru8168Russianth1028Thaiar8053Arabices5836Spanishtr7822Turkishen5699Englishen5270Englishbn3021Banglael4451Greektr2195Turkishar3249Arabiceo6924 Esperantoja4426Japanesetr6705Turkishzh6160Chinesezh4768Chinesear7166Arabicchr3870Cherokeeel767Greekar3878Arabicccp2808Chakmaru2113Russianeo6853 Esperantoar4169Arabicccp2417Chakmaar7191Arabicel982Greekccp1206Chakmael2844Greekru7003Russianbn8026Banglaru7872Russiantr116Turkishen7209Englishel7549Greekfr5126Frenchbn3329Banglatr6023Turkishth1238Thaiar1420Arabicsr6064Serbianzh1918Chineseeo1829 Esperantoeo4770 Esperantoth5281Thaibn355Banglatr1517Turkishsr1727Serbianen8035Englisheo3500 Esperantoja7167Japanesebn3966Banglaccp1693Chakmachr7531Cherokeebn5137Banglabn2021Banglath7278Thaichr646Cherokeezh3691Chinesechr5049Cherokeeel8165Greekja7931Japaneseccp1492Chakmasr4938Serbianel7287Greekfr722Frenchja4936Japaneseiu4446 Inuktituten1818Englishiu7633 Inuktitutar378Arabicccp6534Chakmaes3796Spanishfr7858Frenchbn6298Banglaru518Russianiu1885 Inuktitutzh5683Chinesechr758Cherokeeccp7303Chakmaru1991Russianth7806Thaiccp7135Chakmaiu4021 Inuktituten3251Englishchr3357Cherokeeccp4648Chakmael5137Greekru7747Russianja1824Japaneseru5759Russianen1897Englishel2749Greekchr1785Cherokeezh1498Chinesesr5782Serbianth8135Thaifr1477Frenchccp6827Chakmafr7807Frenchchr845Cherokeeel4615Greekeo2827 Esperantosr6681Serbianes1716Spanishru785Russianeo4348 Esperantoel1672Greekeo6513 Esperantosr1789Serbianel6544Greekccp4651Chakmaes8073Spanishar4392Arabiceo357 Esperantoja3711Japanesesr7650Serbianiu5190 Inuktitutar7198Arabicel5619Greekth7245Thaiccp4841Chakmatr2224Turkishru2856Russianen6812Englishfr2555Frenchchr6064Cherokeeja6794Japanesezh4833Chineseeo532 Esperantoel5151Greekja2147Japaneseru515Russiantr3898Turkishiu110 Inuktitutbn2956Banglaeo6978 Esperantoel3971Greekiu619 Inuktitutja5956Japaneseth1740Thaitr1308Turkishchr925Cherokeeth5083Thairu46Russianen1160Englisheo2604 Esperantofr6112Frenchiu6945 Inuktitutru4084Russianzh7377Chineseen916Englishiu6583 Inuktitutth7515Thaiar1080Arabictr4948Turkishchr8088Cherokeetr7083Turkishja919Japanesetr3704Turkishru7449Russianen4943Englishtr5340Turkishen3718Englishth5401Thaizh1613Chinesear5276Arabicfr5785Frenchsr2058Serbianeo970 Esperantochr5789Cherokeesr7941Serbianccp7381Chakmael1717Greeken4684Englishth6155Thaiar4359Arabicsr5777Serbianccp3990Chakmaeo4351 Esperantoiu2479 Inuktituten748Englishfr1615Frencheo528 Esperantobn7486Banglaen6731Englishiu5893 Inuktitutth6632Thaizh1302Chinesear3794Arabicth1456Thaichr7248Cherokeeja123Japanesebn1776Banglabn5465Banglafr5845Frenchzh3527Chinesear1469Arabiciu7635 Inuktitutbn2551Banglazh2304Chinesear2861Arabicchr5735Cherokeechr5974Cherokeeen930Englishsr5216Serbianth823Thaiiu4230 Inuktitutfr3941Frenchtr2316Turkishccp5169Chakmachr4635Cherokeetr1223Turkishsr2561Serbianen2340Englisheo5322 Esperantozh4950Chineseeo8116 Esperantochr930Cherokeeen7359Englishfr2191Frenchccp2110Chakmath1755Thaiel244Greeksr3706Serbianchr4623Cherokeeel1089Greekel938Greekfr7336Frenchiu5619 Inuktitutja6729Japanesefr81Frenchtr3714Turkishiu5873 Inuktitutth7983Thaisr7298Serbianar4269Arabicth205Thaiar6019Arabicfr4821Frenchth1668Thaien7678Englishth548Thaizh3100Chineseel1547Greekfr4053Frenchtr1543Turkishes936Spanishja1385Japaneseja2733Japanesefr1976Frenchbn7818Banglaeo3020 Esperantochr7019Cherokeetr755Turkishja1081Japaneseccp3636Chakmaar4294Arabicchr4737Cherokeeth6112Thaizh7919Chinesebn5443Banglazh6130Chineseccp6868Chakmaja5359Japanesear3603Arabiciu2063 Inuktituteo5036 Esperantozh4254Chinesezh4788Chineseiu5188 Inuktitutsr1205Serbianru4700Russianes6272Spanishiu2218 Inuktitutar1743Arabiceo7878 Esperantoth1104Thaichr7741Cherokeefr6163Frenchen1737Englishtr6722Turkishsr2666Serbianccp2860Chakmaeo7659 Esperantoes5288Spanishru3562Russianes7102Spanishen1610Englishsr4352Serbiantr912Turkishccp528Chakmasr6517Serbianel6161Greekbn3472Banglaar499Arabicru2359Russianchr5997Cherokeeccp950Chakmachr1144Cherokeees3098Spanishtr5514Turkishar7443Arabicen3888Englishru3992Russianeo1885 Esperantoar4187Arabictr6264Turkishzh863Chinesetr6769Turkishbn2117Banglachr7633Cherokeeen1770Englishth391Thaieo4045 Esperantoth969Thaisr7248Serbianbn4519Banglael8040Greektr2175Turkishru2171Russianeo4451 Esperantoar234Arabicccp7006Chakmaes8065Spanishth1566Thaies7573Spanisheo177 Esperantoiu3935 Inuktitutccp7639Chakmaccp3841Chakmaes2219Spanishes2816Spanishbn3315Banglaiu4753 Inuktituteo329 Esperantosr2152Serbianbn7622Banglael7431Greekja6230Japanesechr2809Cherokeees5553Spanishes2213Spanishru7520Russianes2250Spanishel5759Greekbn5970Banglaccp5485Chakmath3802Thaiccp5046Chakmaccp4565Chakmaru7325Russianeo4897 Esperantoes6336Spanishth21Thaiel4086Greekccp6255Chakmaes3937Spanishar1137Arabicja6102Japanesees1296Spanishtr4471Turkishchr286Cherokeeeo3367 Esperantoru4668Russianchr1972Cherokeeru2574Russianen3868Englishtr1681Turkishtr4197Turkishzh233Chinesechr1124Cherokeees3389Spanisheo7395 Esperantoja6950Japaneseja6691Japanesebn7122Banglatr668Turkishja379Japanesezh7974Chinesear6698Arabiczh5407Chinesechr6635Cherokeeccp702Chakmabn7012Banglaeo1475 Esperantoth858Thaiar589Arabictr650Turkishtr2183Turkishccp4383Chakmabn5965Banglasr660Serbianchr2125Cherokeebn84Banglaccp3424Chakmasr63Serbianes6469Spanishsr7768Serbianzh1878Chinesebn4021Banglachr458Cherokeechr1218Cherokeeja6872Japanesefr5364Frenchth3158Thaiar6595Arabicar4479Arabicchr8153Cherokeebn1603Banglael3121Greekfr5781Frenchth6895Thaizh1137Chineseeo7876 Esperantotr5911Turkishel4195Greekar6048Arabicbn882Banglachr3281Cherokeeja5012Japaneseel106Greekth1195Thaien193Englishar7314Arabicen7065Englishen5869Englisheo5692 Esperantoja2797Japaneseen8125Englishar5832Arabicchr1746Cherokeeja7229Japanesees4514Spanishbn4057Banglael1218Greekeo7332 Esperantofr2487Frenchtr1332Turkishiu1167 Inuktitutccp7067Chakmaar5079Arabicfr778Frenchth910Thaieo6795 Esperantoar4073Arabiczh4935Chinesetr5624Turkishchr2255Cherokeeja8180Japaneseen4322Englishja1215Japaneseru6523Russiantr2134Turkishfr6858Frenchiu236 Inuktituten1544Englishja3019Japaneseel3315Greektr3477Turkishar6959Arabicbn341Banglaeo1126 Esperantoes208Spanishbn5161Banglazh2965Chinesebn4348Banglaar847Arabiceo5765 Esperantoes4721Spanishja880Japanesear8092Arabicsr4924Serbianchr8050Cherokeesr8148Serbianfr8066Frenchzh3202Chinesezh3225Chinesechr2293Cherokeezh4991Chineseccp5831Chakmaru6432Russianen3195Englishja1575Japanesezh7795Chineseccp1312Chakmafr6220Frenchen6622Englishccp6198Chakmafr4958Frenchja685Japaneseeo3423 Esperantosr1187Serbianja5446Japanesezh7359Chineseth766Thaiiu2459 Inuktitutbn5882Banglaen1355Englishes861Spanishbn6941Banglath5820Thaies3817Spanishtr1047Turkishsr3248Serbianbn7341Banglachr4017Cherokeeen1569Englishzh4196Chineseth4749Thaiccp996Chakmaiu2105 Inuktitutes2761Spanishfr5584Frenchccp536Chakmaru5710Russianchr7788Cherokeeeo3473 Esperantoru2818Russianes3590Spanishes1318Spanishen3201Englishel935Greekeo5734 Esperantoeo994 Esperantoiu3864 Inuktitutru1947Russianzh685Chineseja2592Japaneseiu3402 Inuktitutth3231Thaitr7556Turkishchr2874Cherokeeiu2129 Inuktitutja6186Japanesear808Arabictr664Turkishfr6659Frenchja7770Japanesefr3275Frenchbn5280Banglachr6189Cherokeeeo6067 Esperantoiu4141 Inuktituttr3081Turkisheo717 Esperantotr1018Turkishru2159Russianchr973Cherokeechr606Cherokeebn7006Banglaru6210Russianbn6813Banglatr3582Turkishzh2586Chinesesr7954Serbianel957Greekes5267Spanishzh7304Chineseccp7277Chakmaccp2032Chakmael1153Greekchr1035Cherokeebn2627Banglaccp1367Chakmafr2160Frenchzh7930Chineseel4716Greektr3722Turkishja6536Japaneseen3848Englishbn6252Banglabn5375Banglaiu557 Inuktituttr5027Turkishar6519Arabicbn5696Banglazh6188Chineseja5392Japanesefr235Frenchja7198Japaneseru7792Russianzh6590Chinesetr1284Turkishfr5158Frencheo1734 Esperantoeo7033 Esperantobn7931Banglath3969Thaiiu5814 Inuktitutes3968Spanishfr3735Frenchchr2478Cherokeechr1729Cherokeesr7104Serbianen247Englishja3459Japanesetr7104Turkishbn6019Banglaja5045Japaneseccp506Chakmaja6577Japanesees2137Spanishtr7875Turkishchr5370Cherokeefr2882Frenchtr2333Turkishja4597Japanesezh4033Chineseccp7592Chakmaeo3677 Esperantofr899Frencheo2104 Esperantotr3975Turkishes4101Spanishar4879Arabicen1777Englisheo4288 Esperantofr3944Frenchsr4076Serbianja3571Japanesefr2788Frenchru546Russianth3017Thairu6897Russianar6683Arabiczh2972Chinesear2873Arabicth1240Thairu4912Russiantr1779Turkishsr7981Serbianja4293Japanesefr6233Frenchccp5282Chakmabn7496Banglaru7576Russianfr3245Frencheo924 Esperantoar608Arabicfr3736Frenchiu2612 Inuktitutfr1374Frenchiu3050 Inuktitutiu2179 Inuktitutsr6102Serbianja8103Japaneseth1094Thaiar2308Arabices6432Spanishchr5833Cherokeechr8181Cherokeeja1806Japaneseel335Greekbn979Banglatr5660Turkishsr3164Serbianiu5368 Inuktitutfr1962Frenchru5660Russianth3454Thaitr3439Turkishtr5339Turkishsr4723Serbianzh2583Chineseeo3790 Esperantochr643Cherokeear1833Arabicth1640Thaija2853Japanesebn7144Banglazh10Chineseel5789Greekja3206Japanesezh5831Chinesear6715Arabicen5168Englishtr4125Turkishel2658Greekja6988Japaneseiu5946 Inuktitutar6846Arabicchr1189Cherokeees7960Spanishel1815Greekzh5259Chinesebn7501Banglath5477Thaiiu3189 Inuktitutru4858Russianbn2151Banglael3969Greektr995Turkishen2984Englishfr6143Frenchchr3877Cherokeeru2043Russianes5316Spanishar7426Arabicja786Japanesetr6739Turkishfr4372Frenchru1750Russianccp6544Chakmachr3021Cherokeeccp6312Chakmaru2492Russianja4465Japanesezh2494Chineseen4321Englishth4155Thaiel3525Greekth2284Thaija4752Japaneseja1782Japanesear6455Arabiciu5393 Inuktituten2023Englishen5538Englisheo3924 Esperantobn3068Banglasr2628Serbianar2743Arabicar3253Arabiczh7068Chineseth4067Thaitr7456Turkishbn3922Banglasr5537Serbianfr4308Frenchfr966Frenchtr7459Turkisheo5933 Esperantoiu7183 Inuktitutar259Arabicar3377Arabicfr1518Frenchiu6503 Inuktitutth6354Thaichr5322Cherokeeen6832Englishes317Spanishsr7976Serbianja2246Japanesear5756Arabicsr2500Serbianbn5155Banglaeo2967 Esperantoiu1244 Inuktitutfr5417Frenchsr531Serbianen7136Englishth3972Thaibn5517Banglabn4771Banglaar7342Arabiciu535 Inuktituteo477 Esperantoru841Russianth4299Thaien4197Englishen5719Englishiu5223 Inuktitutel300Greektr5879Turkishfr6434Frenchtr2413Turkishar7471Arabiczh5149Chinesechr5019Cherokeetr6104Turkishja7316Japanesechr7690Cherokeesr7258Serbianar175Arabiceo4886 Esperantofr172Frenchsr7493Serbianccp7120Chakmaes258Spanishes3065Spanishfr7853Frenchfr6718Frenchzh3802Chineseiu3111 Inuktituttr6421Turkishar629Arabicja9Japaneseru3782Russianccp4713Chakmaen2839Englishfr6942Frenchth6408Thaiel3649Greekeo3399 Esperantoel6503Greekja7374Japanesetr5272Turkishiu2443 Inuktitutsr357Serbianel5839Greekchr9Cherokeees1780Spanishth2517Thaien2923Englisheo1090 Esperantoar7293Arabiceo7170 Esperantoru215Russianth1888Thaien7013Englishsr1904Serbianchr1036Cherokeees5464Spanishth6593Thaibn909Banglatr3055Turkishtr5256Turkishel8080Greekfr5516Frenchen1108Englishth5329Thaiel2885Greekchr5226Cherokeeen6977Englishfr6615Frenchth6185Thaies4440Spanishfr6376Frenchja744Japaneseiu812 Inuktitutru1425Russianzh3511Chinesetr4817Turkishtr6887Turkishar62Arabiceo2627 Esperantozh6557Chinesezh4387Chineseja26Japanesesr4630Serbianes7679Spanishes4502Spanishen5202Englishccp3814Chakmaeo7745 Esperantozh6998Chinesebn7702Banglasr6308Serbianccp5147Chakmaccp6505Chakmachr4119Cherokeechr7654Cherokeeiu5174 Inuktitutru3085Russianiu5118 Inuktitutth1422Thaiiu6776 Inuktitutja5036Japaneseiu3925 Inuktituteo1824 Esperantoel3173Greeken2103Englishiu5752 Inuktitutth2226Thaizh3102Chinesezh3630Chineseiu1975 Inuktitutccp7454Chakmath6809Thaija4378Japaneseru4549Russianja5986Japaneseccp4513Chakmachr2697Cherokeetr4068Turkishtr7576Turkishfr1729Frenchtr5093Turkishiu7701 Inuktituttr5656Turkishccp31Chakmaccp6643Chakmaar6111Arabiceo5791 Esperantoiu664 Inuktituttr1803Turkishzh3964Chinesear2213Arabicsr1695Serbiansr2861Serbianiu2727 Inuktitutes141Spanishar5366Arabicth559Thaichr2532Cherokeeiu6810 Inuktitutbn1291Banglasr2411Serbianzh5430Chineseru7843Russianbn1069Banglaccp7594Chakmaes6095Spanishfr2543Frenchsr887Serbianiu4503 Inuktituttr222Turkishel5688Greekccp2419Chakmafr4941Frenchsr6114Serbianiu3492 Inuktitutru1085Russiansr6304Serbianccp787Chakmabn399Banglafr1407Frenchfr2537Frenchja766Japaneseeo5038 Esperantoth4263Thaibn7358Banglaja3264Japanesees6914Spanishbn426Banglaen7599Englishar4370Arabicbn2769Banglaar1336Arabicchr7976Cherokeeeo1749 Esperantoiu1199 Inuktitutth134Thaizh1156Chineseiu3624 Inuktitutth7814Thaien4504Englishtr6167Turkishru602Russianfr886Frenchccp7199Chakmaen5065Englishen4928Englishchr3732Cherokeeel2268Greekel6071Greekes3835Spanishja522Japanesebn983Banglaccp570Chakmaja1320Japaneseja5459Japaneseccp7100Chakmaeo524 Esperantoes605Spanishzh5048Chineseccp1746Chakmaeo5499 Esperantobn7852Banglaeo132 Esperantotr2038Turkishth97Thaitr7700Turkishtr4130Turkisheo5386 Esperantobn511Banglael5615Greeken746Englisheo5660 Esperantoccp7365Chakmath4086Thaisr2008Serbianel3779Greekja5650Japanesesr5656Serbianar6321Arabicbn4617Banglabn4954Banglaen7285Englishja2440Japanesefr2558Frenchzh4970Chineseiu2965 Inuktitutth1953Thaichr4803Cherokeezh6911Chinesefr2033Frenchzh4531Chinesees6613Spanishja5246Japaneseja5003Japaneseeo6134 Esperantozh1246Chineseru6686Russianzh3682Chineseja6222Japaneseth1367Thaichr7422Cherokeebn7424Banglath4310Thaiccp1022Chakmachr7385Cherokeeeo1060 Esperantoth2900Thaitr3110Turkishbn4475Banglachr2728Cherokeechr4837Cherokeeel5118Greekes3263Spanishel2447Greekeo493 Esperantochr5911Cherokeeru1511Russianiu5561 Inuktitutru5321Russianzh1713Chinesechr5070Cherokeees417Spanishbn268Banglasr459Serbianchr1394Cherokeetr7515Turkishth2520Thaiel3749Greekar3614Arabiciu181 Inuktitutzh1699Chineseru5794Russianel5378Greekzh5090Chineseru3525Russianiu4232 Inuktitutccp2965Chakmath7387Thaiar4562Arabicbn6352Banglaja7200Japaneseccp3796Chakmaiu1564 Inuktitutsr4233Serbianar8048Arabiceo1398 Esperantobn2781Banglabn7327Banglachr565Cherokeeccp1793Chakmasr414Serbianzh4937Chineseiu4654 Inuktitutar7907Arabictr49Turkishes3717Spanishru1904Russianth1457Thaija5602Japaneseth7386Thaija5283Japaneseja7572Japaneseiu7031 Inuktitutbn5831Banglatr1078Turkishar2618Arabicbn6005Banglasr7111Serbianel1551Greekchr6196Cherokeeen909Englishen3641Englisheo5868 Esperantoiu8019 Inuktituteo2281 Esperantozh3528Chinesees4017Spanishtr7323Turkishccp2646Chakmael2442Greekes4550Spanishru3147Russiansr3739Serbianzh3899Chinesesr2951Serbianja3637Japanesesr1959Serbiansr5627Serbianzh8110Chineseiu5227 Inuktitutchr6732Cherokeezh692Chinesezh3182Chinesear6071Arabicfr6892Frenchzh5392Chineseen6580Englishzh4163Chinesees4681Spanishes3821Spanishtr5732Turkishzh2564Chinesees4850Spanishar185Arabiciu1417 Inuktituttr5577Turkishen2626Englishen7529Englishja2668Japaneseeo6472 Esperantoth6911Thaiel6372Greekchr4758Cherokeetr926Turkishar209Arabicchr4910Cherokeeel3809Greekth1721Thaieo4848 Esperantotr521Turkishar2364Arabicbn2264Banglael5392Greekel6500Greeksr84Serbiantr4757Turkishen902Englishfr5203Frenchja2815Japanesezh7518Chinesechr2271Cherokeeja3027Japaneseth8183Thaija1241Japaneseeo275 Esperantofr5255Frenches1325Spanishth7575Thaizh1075Chineseel4688Greekes1713Spanishru5042Russianel403Greektr2985Turkishen6984Englishes3369Spanishiu2793 Inuktitutchr86Cherokeezh7550Chinesebn1415Banglaccp8012Chakmaen637Englishiu2429 Inuktitutja5717Japaneseel2532Greeksr1430Serbiansr7533Serbianar5105Arabices2170Spanishccp330Chakmath2217Thaiar5102Arabicar2335Arabicbn6378Banglaru2844Russiantr1666Turkishsr2751Serbiantr5657Turkishsr2902Serbianth7478Thaifr3732Frenchchr2569Cherokeees1444Spanishes7377Spanishchr734Cherokeear1978Arabicccp4299Chakmaes5994Spanisheo3369 Esperantoja547Japaneseru5726Russianth7149Thaieo5233 Esperantoar6468Arabicar5328Arabicen7214Englishchr7305Cherokeear5008Arabicchr7734Cherokeebn1646Banglaen6953Englishar7616Arabictr1349Turkishchr7571Cherokeeel4586Greeksr4783Serbianel5446Greeksr4584Serbianchr5404Cherokeeru1090Russianccp3172Chakmaru3062Russianel3314Greeksr3126Serbianccp5246Chakmaen6321Englishru7013Russianar7726Arabicchr2081Cherokeesr6934Serbianth2474Thaija7570Japaneseru1664Russianru405Russianfr8143Frenchja5800Japaneseel2390Greekes1037Spanishfr3435Frenchja7435Japanesear7882Arabiciu6438 Inuktitutru399Russianth6120Thaien958Englishth4514Thaizh2714Chineseen6513Englishbn6031Banglaar2635Arabicfr6316Frenchtr846Turkishtr5767Turkishchr4022Cherokeesr1433Serbianzh7056Chineseru1033Russianar3184Arabices6898Spanishfr2277Frenchru3568Russianth4223Thaizh2372Chinesesr3319Serbianar6490Arabicja2757Japanesesr2186Serbiansr4010Serbianfr8075Frenchiu3643 Inuktitutel364Greekru889Russianchr5359Cherokeeel1387Greekja2611Japaneseth1552Thaiel4567Greekth4508Thairu1463Russianccp657Chakmael5828Greekja3073Japanesees7851Spanisheo4195 Esperantozh6158Chinesechr2004Cherokeeccp19Chakmabn933Banglabn1422Banglaen458Englishchr4174Cherokeetr3529Turkishes111Spanishth1215Thaija1751Japaneseeo1939 Esperantoen4958Englisheo7293 Esperantoccp679Chakmaen3732Englishen6327Englishen3726Englisheo510 Esperantoel2545Greekeo635 Esperantoiu84 Inuktitutth792Thaiar8017Arabicen5221Englishru1780Russianzh2606Chinesesr6424Serbianccp2600Chakmafr7167Frenchzh4010Chinesetr2214Turkishes6599Spanishbn7299Banglabn3469Banglaru4997Russianar293Arabicja6568Japaneseiu1744 Inuktitutsr811Serbianzh2155Chineseiu6853 Inuktitutccp2293Chakmasr5724Serbiantr648Turkisheo4575 Esperantoel3702Greekru5275Russianth4278Thairu4704Russianth4956Thaieo4636 Esperantobn3895Banglasr5255Serbianfr1201Frencheo4900 Esperantobn725Banglabn6303Banglael7398Greekth8139Thaieo4623 Esperantoiu4265 Inuktituttr7640Turkishja8028Japanesesr3587Serbianen3038Englishes1150Spanishtr3697Turkishtr7250Turkishru3645Russianen2547Englishru954Russiansr7855Serbianth1200Thairu1228Russianja4861Japaneseiu3907 Inuktitutccp3261Chakmaes7681Spanishiu7052 Inuktitutiu3638 Inuktitutru564Russianel7686Greekiu7144 Inuktitutel5960Greekeo2206 Esperantoru2754Russianzh3277Chinesees309Spanishel1751Greektr5554Turkishzh1191Chineseen5267Englisheo2608 Esperantoiu3559 Inuktitutccp3692Chakmaccp3656Chakmaes1215Spanishar757Arabicbn6953Banglaiu5720 Inuktitutja7795Japanesesr137Serbianel5935Greektr2341Turkishtr6352Turkishccp6175Chakmaiu2198 Inuktitutccp7854Chakmaiu2521 Inuktitutar766Arabiciu4322 Inuktituteo391 Esperantotr5742Turkishiu192 Inuktitutru1900Russiantr3579Turkishbn4457Banglabn5598Banglaeo1814 Esperantochr5919Cherokeefr6106Frencheo1719 Esperantosr5424Serbianar1912Arabicchr7759Cherokeeiu6638 Inuktitutar1555Arabiceo1493 Esperantoru1365Russianja129Japanesesr369Serbianiu1075 Inuktitutes5930Spanishccp3516Chakmafr6512Frenchar342Arabictr5177Turkishsr3434Serbianbn6803Banglaru6459Russianes8171Spanishccp7252Chakmaja1331Japaneseru6641Russianru3908Russianzh7083Chinesebn624Banglaes5656Spanishchr6297Cherokeeccp1489Chakmaes1367Spanishth6935Thaitr400Turkishbn4514Banglael5341Greekbn599Banglaen7619Englishbn2776Banglaja1031Japaneseen5404Englishth1216Thaiar3662Arabices7041Spanishth1735Thaiel3712Greekes3122Spanishccp8174Chakmazh384Chinesechr3181Cherokeebn2177Banglaes1159Spanishiu2039 Inuktituteo4188 Esperantoel3472Greektr3974Turkishchr4061Cherokeechr5823Cherokeefr7469Frenchsr1629Serbianbn1064Banglaar7697Arabictr5946Turkishchr3811Cherokeechr2490Cherokeeccp5176Chakmaes7276Spanishfr4318Frenchtr3585Turkishtr7235Turkishar887Arabiczh2818Chinesees4365Spanishar3854Arabicja7693Japaneseth1871Thaiccp1611Chakmachr5615Cherokeees6493Spanishccp4863Chakmaen538Englishen6985Englishsr2272Serbianen5394Englishen287Englishiu6138 Inuktitutja3268Japanesesr7218Serbiantr5171Turkishth4831Thaiccp3739Chakmath5986Thaizh3297Chineseel4218Greekfr5628Frenchru1494Russianar6538Arabices2766Spanishchr965Cherokeeru619Russiantr5140Turkishtr6077Turkishbn555Banglaar1687Arabicen7630Englishzh4587Chinesechr7999Cherokeees1626Spanishsr7050Serbianja8166Japanesechr1049Cherokeeccp6359Chakmaen465Englisheo6782 Esperantochr3232Cherokeeeo3286 Esperantoccp5354Chakmabn5214Banglafr4663Frenchar7609Arabicsr7341Serbianar7642Arabicfr2875Frenchiu6325 Inuktitutsr5603Serbiantr6430Turkishfr5986Frenches3460Spanishzh5155Chinesebn7398Banglael18Greekccp5613Chakmael3091Greekbn1232Banglath2777Thaien7779Englishja3968Japaneseth7412Thaitr5667Turkishar6235Arabices5165Spanishen3903Englishel2665Greeken187Englishtr3157Turkishja7499Japaneseth1904Thaiar5089Arabicen3397Englishen5601Englishes7512Spanishtr901Turkishchr107Cherokeeru8118Russianbn4066Banglasr2333Serbianar4599Arabicfr1017Frenchbn3650Banglabn5526Banglaeo153 Esperantoth5596Thaitr3922Turkishiu1110 Inuktitutfr4850Frenchth1683Thaiar5216Arabicbn7598Banglaen6869Englishes6680Spanishchr4741Cherokeezh6668Chineseeo2784 Esperantofr7670Frenchru7515Russianar8104Arabicel5712Greekzh8142Chineseru1584Russianar3081Arabiczh6742Chinesear386Arabicar4069Arabiciu7885 Inuktituteo5999 Esperantozh373Chinesefr4135Frenchbn32Banglaru292Russiantr2103Turkishth4970Thaichr1519Cherokeeja5092Japaneseth5430Thaiar6965Arabicchr7217Cherokeefr5956Frenchzh4671Chineseja5536Japanesetr1159Turkisheo4999 Esperantoes3904Spanishchr3684Cherokeees4405Spanishes7145Spanishar839Arabicbn5066Banglafr6392Frenchzh3719Chinesees564Spanishes3422Spanishtr2829Turkishru6564Russianccp7824Chakmachr8117Cherokeeiu6951 Inuktitutchr7680Cherokeeiu142 Inuktitutchr115Cherokeear3623Arabicbn6681Banglaccp6406Chakmaccp6812Chakmael2978Greekel3087Greekel7150Greekeo4578 Esperantoiu1532 Inuktitutiu5213 Inuktitutbn7183Banglachr5512Cherokeefr5541Frenchru3169Russiansr107Serbianchr4548Cherokeees6109Spanishsr1613Serbianar8130Arabiceo8094 Esperantoth211Thaibn3518Banglatr3446Turkishfr7847Frenchru4115Russianzh2994Chinesechr4372Cherokeezh3211Chinesezh7823Chineseja5613Japanesees2525Spanishel4052Greekth4617Thaith3753Thaiel3053Greekbn5450Banglaar264Arabiciu4982 Inuktituteo1030 Esperantosr444Serbiantr4037Turkishsr6661Serbianfr4253Frenchja1966Japaneseeo6571 Esperantoiu673 Inuktituteo1295 Esperantoccp519Chakmath8035Thaisr4114Serbianar1131Arabicfr7545Frenchfr757Frenchtr743Turkishes5612Spanishiu6331 Inuktitutth83Thaizh5983Chineseccp7532Chakmabn1905Banglaeo5564 Esperantoiu6333 Inuktitutja5743Japaneseel7907Greekccp1892Chakmaccp6181Chakmaeo7386 Esperantoen2586Englishfr5664Frenchar6825Arabiciu2597 Inuktitutja7549Japaneseel8107Greekeo4817 Esperantofr4535Frenchja1026Japanesechr1313Cherokeeen135Englishel7179Greeken3473Englishen5585Englishzh234Chineseen4144Englishtr3204Turkishar4932Arabicsr5742Serbianzh3951Chineseru26Russianzh3817Chinesechr7083Cherokeetr3566Turkishru734Russiansr3965Serbianchr7990Cherokeeth6417Thaitr7151Turkishchr7627Cherokeesr5955Serbianen1382Englisheo6703 Esperantoja3866Japaneseth6937Thairu4272Russianzh7045Chinesees747Spanishfr5267Frenchfr6490Frenchru7397Russianes6886Spanishfr4296Frenchsr6270Serbianes7503Spanishfr1718Frenchen2892Englishja757Japaneseru4576Russianfr6210Frenchfr1458Frenchccp3724Chakmaen232Englishfr4872Frenchar6804Arabiciu7434 Inuktitutja6319Japanesetr3421Turkishel1203Greeksr1980Serbiantr4788Turkisheo2250 Esperantotr951Turkishtr1261Turkishfr2211Frenchiu3287 Inuktitutja6911Japanesezh758Chinesezh3261Chinesebn5104Banglaar1342Arabicccp6784Chakmaen1267Englishchr573Cherokeeiu4983 Inuktitutru4778Russianar1058Arabicen4406Englishel1951Greekiu7009 Inuktituten4068Englishar2748Arabiczh5246Chinesebn1629Banglazh7557Chineseccp3736Chakmath1163Thaitr3387Turkishen445Englishen7638Englishbn810Banglath6240Thaitr1558Turkishar1502Arabicru3030Russianbn2660Banglabn5977Banglaccp2901Chakmael5364Greeken8096Englishth625Thaitr2540Turkishja4804Japanesefr6742Frenchiu6215 Inuktitutja3511Japaneseth1710Thaizh2093Chinesear1248Arabices708Spanishja7579Japanesear1588Arabicccp4228Chakmachr1648Cherokeeel452Greekfr3856Frenchar7713Arabicchr1340Cherokeebn5940Banglaar6848Arabiceo2599 Esperantoar4472Arabicth4652Thaith8157Thaien8051Englishru4485Russianen8134Englishsr4012Serbianru6165Russiansr7671Serbianel6731Greekbn7764Banglaru4588Russianchr6786Cherokeezh1476Chinesetr373Turkishel1931Greekeo3118 Esperantosr2404Serbianbn5766Banglabn6867Banglaes2184Spanishzh5812Chinesear6852Arabicccp2799Chakmaeo992 Esperantoes995Spanishar5265Arabiceo2636 Esperantoes6626Spanishar3807Arabiczh455Chinesechr7366Cherokeefr4522Frenchfr3457Frenchtr2736Turkishtr5309Turkishchr337Cherokeesr167Serbianeo3581 Esperantoth77Thaitr1876Turkishel5682Greektr3545Turkishchr4065Cherokeeja1592Japanesetr6124Turkisheo2750 Esperantoccp4654Chakmael1416Greeksr933Serbiantr4559Turkishchr6009Cherokeetr5655Turkishel4605Greeken4883Englisheo775 Esperantochr6155Cherokeeiu4052 Inuktitutja8Japaneseen5358Englishsr7822Serbianbn2925Banglazh1230Chinesezh8095Chineseen1665Englishchr4680Cherokeezh6305Chinesezh1343Chinesezh539Chinesechr4423Cherokeeeo7183 Esperantoja3818Japaneseiu5386 Inuktitutru7337Russianel4046Greektr4958Turkishes3324Spanishfr1742Frenchen2332Englishja6762Japanesesr7487Serbianja438Japaneseja3853Japanesees1230Spanishccp2718Chakmaccp4851Chakmabn3506Banglafr6636Frenchru5606Russiantr4913Turkishchr3992Cherokeechr5706Cherokeezh6208Chineseth5592Thaien7222Englishfr7255Frenchzh7261Chinesees6881Spanishbn3304Banglael7089Greekeo7339 Esperantoiu5251 Inuktitutru367Russiansr2527Serbianth3665Thaiar5760Arabicccp363Chakmaja2160Japaneseen8074Englishchr4271Cherokeeen3863Englishru4187Russiansr7450Serbianth2786Thaith4834Thaiar2Arabiceo733 Esperantoccp5303Chakmaes6703Spanishja4524Japaneseth7472Thaiel7509Greekth7216Thaichr3860Cherokeeen2531Englishes4046Spanishes5895Spanishth5654Thaiar841Arabiciu3749 Inuktitutiu4847 Inuktitutth1394Thaiiu1788 Inuktitutar2630Arabicja999Japanesebn6521Banglaja7918Japanesetr2691Turkishen3875Englishchr4731Cherokeeen2974Englisheo3806 Esperantoar5628Arabicfr1989Frenchzh397Chinesezh3944Chinesechr6481Cherokeeel1554Greekes5357Spanishen2016Englishiu1904 Inuktituten4948Englisheo2847 Esperantoes3720Spanishja5697Japanesezh2259Chinesear7806Arabicchr1821Cherokeeja50Japanesefr291Frenches6184Spanishth5886Thaiiu6305 Inuktitutes2823Spanishtr4482Turkishsr807Serbianeo4035 Esperantoel7208Greekccp147Chakmaiu3648 Inuktitutth5242Thaiar1305Arabicel3994Greekzh5018Chinesetr638Turkishchr2335Cherokeeccp1419Chakmaes8134Spanishen5621Englishsr5533Serbianccp5908Chakmaen3999Englishes4829Spanishsr6499Serbianes3808Spanishiu4760 Inuktitutar1307Arabicbn947Banglaen1775Englishtr7600Turkishbn3340Banglatr3464Turkishzh4523Chineseru1207Russianbn7267Banglasr7906Serbianes7104Spanishru5153Russiansr2349Serbianccp1622Chakmaes5979Spanishiu5102 Inuktituttr1155Turkishth4784Thaies3321Spanishfr538Frenchth4853Thaien6128Englishja1423Japaneseen672Englishen447Englishbn2081Banglaccp2321Chakmaar1656Arabicth1842Thaizh4161Chineseru1948Russianen6766Englishel476Greeken6231Englishiu5071 Inuktitutel3827Greekes181Spanishes1661Spanishja3500Japaneseeo3882 Esperantoru5244Russiansr7452Serbianiu131 Inuktitutsr1909Serbianth2050Thaith5864Thaitr2795Turkishth1101Thaibn5534Banglafr7585Frenchtr2809Turkishar2053Arabicsr7167Serbiantr6631Turkisheo2671 Esperantozh240Chinesezh7234Chinesechr5301Cherokeees3884Spanishen7538Englishen1429Englishtr177Turkishsr3469Serbianen376Englishiu7711 Inuktitutccp2427Chakmath2928Thaibn7828Banglaar4651Arabicar6703Arabicchr6507Cherokeeiu6742 Inuktitutru3529Russianccp2885Chakmaes5012Spanishsr3606Serbianccp6852Chakmabn7693Banglaen5231Englishes4003Spanishfr4744Frenchth4319Thaibn5569Banglafr7936Frenchru2677Russiansr5978Serbianth46Thaieo7592 Esperantoccp2503Chakmaes5329Spanishzh7191Chinesetr6450Turkishfr5660Frenchel7044Greekja7621Japaneseel4670Greeken426Englishsr4272Serbianiu229 Inuktitutru3544Russianeo8063 Esperantoiu2665 Inuktitutchr3025Cherokeeel289Greekccp5863Chakmaar6738Arabiciu538 Inuktitutru6482Russiantr2831Turkishiu7995 Inuktituten3985Englishzh2588Chineseen7685Englishja1742Japanesezh4281Chinesechr5393Cherokeeiu477 Inuktitutiu5801 Inuktitutth6614Thaitr6727Turkishen6344Englisheo2794 Esperantoel3388Greekchr1632Cherokeesr4453Serbiantr5194Turkishfr1548Frenchfr6777Frenchru4694Russianru7281Russianzh5568Chineseth1998Thaifr2269Frenchccp5155Chakmaeo4233 Esperantoes5437Spanishccp2853Chakmaru6823Russianeo725 Esperantosr7734Serbianiu4056 Inuktitutiu143 Inuktitutccp8082Chakmaccp2147Chakmazh7025Chinesechr1770Cherokeeen6992Englishccp6116Chakmaja1473Japaneseeo149 Esperantotr5858Turkishccp1535Chakmafr3899Frenchar265Arabicbn491Banglabn4086Banglael7192Greekiu5481 Inuktituteo5123 Esperantofr4930Frenchel6923Greeken6654Englishiu6871 Inuktitutru3795Russianccp6879Chakmaja2454Japanesesr0Serbianfr4202Frenchtr7987Turkishes3709Spanishth1222Thaija6367Japaneseen1935Englishes7624Spanishru4967Russianth410Thaifr2181Frenchru6867Russianfr1792Frenchchr2598Cherokeefr7407Frencheo5775 Esperantofr5502Frenchja185Japanesefr3250Frenchar13Arabicbn3137Banglaes4652Spanishiu2726 Inuktituttr2172Turkishccp3404Chakmaru1497Russianel4284Greekzh25Chinesesr7936Serbianja5490Japaneseccp2576Chakmath1927Thaieo5387 Esperantoel7372Greekes2323Spanishtr1122Turkishes6265Spanishccp6835Chakmaen4796Englishru7437Russianru562Russianbn1318Banglaccp5606Chakmaeo2660 Esperantosr6100Serbianen5311Englishsr7590Serbianel2054Greekel7060Greekar3157Arabicen1276Englishen6815Englishen4727Englishsr2466Serbianen823Englishchr7573Cherokeeel3906Greekiu1407 Inuktituttr2993Turkishen831Englishru3185Russianeo7781 Esperantotr8153Turkishfr6363Frenchth8164Thaiel4183Greekar4170Arabicsr5445Serbiantr2978Turkishel550Greektr6756Turkishel681Greeken1949Englishru4209Russianru4672Russianen2681Englishccp4602Chakmatr857Turkishen595Englishiu4789 Inuktitutja5778Japanesear1381Arabictr4705Turkishccp3049Chakmabn2766Banglafr3340Frenchja4908Japanesetr5492Turkishth1945Thairu6511Russianccp3177Chakmaes6501Spanishru8135Russianru2719Russianchr5628Cherokeeth5272Thaisr5690Serbianja405Japaneseth3666Thaiiu3838 Inuktitutar2503Arabicbn6879Banglazh988Chineseeo5139 Esperantofr515Frenchccp5371Chakmafr3208Frenchbn2848Banglaen7569Englishfr4749Frenchbn7281Banglaccp4007Chakmachr4908Cherokeefr4035Frencheo5787 Esperantoen1197Englishes7751Spanishfr553Frenchtr6467Turkishiu4859 Inuktitutja653Japanesechr7188Cherokeeiu2655 Inuktituteo5395 Esperantofr1348Frenchtr5263Turkishccp6391Chakmath7357Thaichr4783Cherokeefr6410Frenchsr3295Serbianccp8064Chakmabn3947Banglaru6811Russianes2779Spanishfr2571Frenchtr5574Turkishccp211Chakmaar1016Arabicfr5906Frenchja460Japaneseru4831Russianbn7056Banglasr5098Serbianeo3093 Esperantoja1839Japanesefr7113Frenches8094Spanishccp188Chakmath7221Thaiel7169Greekiu3780 Inuktitutes1491Spanishzh2447Chineseen71Englishchr1003Cherokeefr2185Frenchen4473Englishen655Englishel953Greekes2449Spanisheo6761 Esperantoen4031Englishja1196Japanesezh612Chinesefr1479Frenchth6850Thairu669Russianccp4882Chakmasr3829Serbiansr8022Serbianbn1360Banglasr1583Serbiantr5032Turkishth5797Thaith6856Thaitr2317Turkishar2225Arabicsr3056Serbianchr4964Cherokeeel7939Greeken2962Englishiu4799 Inuktitutsr697Serbianiu3440 Inuktitutccp4987Chakmazh715Chinesechr334Cherokeezh5628Chineseiu1773 Inuktitutiu3258 Inuktitutccp4818Chakmaiu5278 Inuktituteo7009 Esperantotr5382Turkishar809Arabiceo10 Esperantoeo472 Esperantosr5494Serbianja3744Japaneseiu821 Inuktitutiu7678 Inuktituttr161Turkishzh3068Chinesechr7379Cherokeeeo2969 Esperantoiu5890 Inuktituttr2235Turkishtr6622Turkishen7246Englishru6345Russianzh5564Chinesechr4587Cherokeeeo7450 Esperantoja7610Japanesebn6560Banglaccp1787Chakmachr6279Cherokeeru5066Russianzh4630Chineseccp7560Chakmaes2649Spanisheo6579 Esperantoel3788Greekiu953 Inuktitutsr7006Serbianar2673Arabictr949Turkishbn493Banglachr8077Cherokeebn4997Banglafr7383Frenchfr1102Frenchfr5569Frenchja6701Japaneseeo1685 Esperantosr5419Serbianar6084Arabicbn7771Banglatr5932Turkishes4435Spanishja5495Japaneseiu6856 Inuktituteo7266 Esperantoen2166Englishja749Japanesezh4873Chineseccp137Chakmafr1114Frenchtr100Turkishes2985Spanisheo7770 Esperantofr2349Frenchru4483Russianes6780Spanishja3496Japaneseiu2042 Inuktituttr4939Turkishsr3717Serbianar6855Arabicccp5633Chakmaen4644Englishes245Spanishen660Englishes6334Spanishsr1271Serbianchr3195Cherokeees7202Spanishen2545Englishfr3871Frenchzh2173Chinesetr7339Turkishccp2081Chakmatr2537Turkisheo8084 Esperantoth929Thaiel3916Greekbn3992Banglaes2336Spanishth280Thaith7491Thaiar7541Arabicen40Englishen6721Englishccp3882Chakmael7558Greektr4542Turkishen3056Englishbn8142Banglaccp3283Chakmaar2742Arabicen720Englishtr5087Turkishchr2637Cherokeechr7196Cherokeeen2702Englishsr5114Serbianja1410Japanesezh4969Chineseel6890Greekel3144Greeksr5163Serbianfr2448Frenchchr1575Cherokeeel2499Greekfr3942Frenchja3398Japaneseeo5270 Esperantoth6678Thaiiu5032 Inuktitutbn2846Banglael2195Greekru1197Russianel8031Greeksr5862Serbianja3028Japaneseen5912Englishccp2358Chakmaes7669Spanishen5694Englishiu4306 Inuktitutar8097Arabicja838Japanesees6458Spanishth6875Thaisr1627Serbianzh7884Chinesezh6381Chinesefr6002Frenchru1506Russianeo1019 Esperantochr7718Cherokeeth1079Thaith520Thaichr5156Cherokeeel6653Greeksr793Serbianiu5827 Inuktitutel1626Greekzh119Chineseel3291Greekchr1058Cherokeeccp6216Chakmath3508Thaifr4161Frenchfr4644Frenchsr595Serbiansr6568Serbianbn2802Banglaeo1147 Esperantozh604Chineseen3772Englisheo6186 Esperantoth5985Thaieo6215 Esperantotr6661Turkishes3957Spanishiu174 Inuktitutccp7225Chakmaru1859Russianzh6583Chinesezh5572Chineseiu7161 Inuktitutccp467Chakmatr2552Turkishccp3410Chakmaar5491Arabicsr6171Serbianel6854Greekiu324 Inuktitutel4587Greekeo6260 Esperantozh2930Chinesees7738Spanishfr6436Frenchsr4972Serbianes2008Spanishen3605Englishccp2708Chakmaiu7325 Inuktitutchr561Cherokeetr6684Turkishchr7949Cherokeechr7383Cherokeefr2901Frenchru3940Russianru2109Russianeo7734 Esperantoes3601Spanishbn5259Banglafr6348Frenchchr1106Cherokeechr6188Cherokeesr4020Serbianar1725Arabicchr7434Cherokeechr1735Cherokeeiu2802 Inuktitutiu4997 Inuktitutth6025Thaiel3932Greektr5268Turkishiu7851 Inuktitutar575Arabiceo4788 Esperantoes4338Spanisheo6450 Esperantofr5807Frenchiu4713 Inuktitutru2955Russianfr5989Frenchchr7686Cherokeechr1812Cherokeeja4043Japaneseja152Japaneseru6885Russianth3595Thaija2487Japaneseth5235Thaiar5405Arabicbn4372Banglaja7681Japaneseel4562Greekiu496 Inuktitutar5236Arabicel7769Greeksr1045Serbianfr2686Frenchen2857Englishfr1566Frenchja7622Japaneseccp5077Chakmaru4985Russianar6553Arabicru5501Russianeo5700 Esperantoel6933Greeksr5682Serbianccp591Chakmaja854Japanesetr450Turkishccp6069Chakmafr2404Frenches5641Spanishfr7177Frenchsr5491Serbianru4952Russianth2044Thaiar1835Arabiciu4834 Inuktitutfr1075Frenchchr3567Cherokeeel4233Greekiu1218 Inuktitutes7374Spanishar2442Arabicar2676Arabicen2677Englishja4900Japaneseth1585Thaith5508Thaibn4894Banglasr7596Serbianth1848Thaies4449Spanisheo4391 Esperantoja2601Japanesesr1645Serbianar5201Arabices3970Spanishfr1847Frenchsr7Serbianccp1295Chakmaeo3189 Esperantoar5324Arabicth4712Thaija4687Japanesezh3346Chinesesr8134Serbianes5791Spanishfr6668Frenchar7073Arabictr5731Turkisheo1769 Esperantoccp7254Chakmasr1040Serbiantr1618Turkishen4604Englishfr256Frenchccp34Chakmatr796Turkishar6788Arabiceo2221 Esperantoar6747Arabicar1670Arabicth7171Thaizh2502Chineseel7659Greeksr2022Serbianfr2881Frenchja8108Japaneseja4910Japaneseen5761Englishar7161Arabicel392Greekel6726Greeken4113Englishsr1057Serbianbn4905Banglaja4983Japanesees124Spanishbn2630Banglaes6986Spanishsr2420Serbiantr157Turkishtr2856Turkishiu7318 Inuktitutru4211Russiantr3735Turkishbn8067Banglachr7103Cherokeeel2750Greekel4082Greekchr2967Cherokeeel4976Greekru1554Russianth3156Thaifr3460Frenchfr4041Frenchccp2239Chakmasr7829Serbianbn7654Banglath5651Thaith2414Thaitr4756Turkishfr5647Frenchiu2425 Inuktitutiu2976 Inuktitutsr4461Serbianth4837Thaija74Japanesesr5048Serbianccp6627Chakmaen3707Englishtr734Turkishsr2539Serbianru5935Russiantr5066Turkishel2019Greekes1980Spanishiu2274 Inuktitutar7799Arabicth6433Thaitr2249Turkishes5681Spanishchr5134Cherokeebn406Banglachr4644Cherokeear347Arabicfr3965Frenchiu8104 Inuktitutsr3277Serbianen2972Englishtr7737Turkishes445Spanishzh8092Chinesechr2386Cherokeeiu5347 Inuktitutar4434Arabicfr5160Frenchen3987Englishtr689Turkishtr1695Turkishsr1622Serbianzh3332Chinesebn3335Banglaccp515Chakmaes5158Spanishiu1501 Inuktitutes6837Spanishes1560Spanishzh7843Chinesebn1644Banglaja7743Japanesesr1429Serbianru3214Russianzh5717Chineseel7812Greekfr7941Frenchar3415Arabiciu4850 Inuktituten1828Englishiu1098 Inuktitutru6411Russianja8153Japanesefr2209Frenchchr3965Cherokeesr4282Serbianru5308Russianes5896Spanishchr6154Cherokeechr6138Cherokeeel672Greekes689Spanishzh2189Chineseel5492Greekru4097Russianeo119 Esperantoen7662Englishbn6010Banglaccp1440Chakmafr2542Frenches6240Spanishiu3892 Inuktitutzh5117Chinesechr7176Cherokeeccp3247Chakmaiu6990 Inuktitutiu320 Inuktitutth11Thaiel495Greekfr8093Frenchfr6184Frenchchr4880Cherokeetr5508Turkishzh182Chineseel1764Greekes2438Spanishru2478Russianen3958Englishja7721Japanesezh7894Chineseja4549Japaneseel4235Greekchr1025Cherokeezh5354Chinesesr3856Serbianccp4632Chakmaes4574Spanishccp7298Chakmaccp2725Chakmaja4877Japaneseth4060Thaith1598Thaies5296Spanishtr2517Turkishzh6017Chineseiu8079 Inuktitutar5213Arabicchr1483Cherokeeiu218 Inuktitutiu1156 Inuktitutbn4792Banglaen3073Englishzh3539Chinesezh7352Chineseel1380Greekchr8008Cherokeefr2352Frenches7802Spanishar587Arabicen3414Englishsr3122Serbianbn6917Banglaen5612Englisheo2033 Esperantoel2894Greekth5906Thaies3572Spanishfr3709Frenchar5022Arabicbn1638Banglachr4989Cherokeear7139Arabiceo2767 Esperantobn7378Banglaar3683Arabicen6292Englishtr2133Turkishiu6545 Inuktitutel4720Greeken6650Englishbn3574Banglabn2968Banglasr778Serbianfr6944Frenchchr4060Cherokeeeo465 Esperantoeo3812 Esperantoiu4627 Inuktitutru4977Russianth3625Thaith5758Thaieo2765 Esperantobn7684Banglachr4386Cherokeefr4004Frenchen5546Englishel7489Greekchr480Cherokeees4955Spanishiu5051 Inuktitutru417Russiansr3839Serbianar2379Arabiczh6734Chineseel5749Greekes4964Spanishes5345Spanishfr3410Frenchzh4466Chinesees938Spanishja511Japanesees3213Spanishccp5714Chakmatr7291Turkishchr7616Cherokeefr891Frenchar4322Arabiczh1628Chineseru7023Russianchr7107Cherokeezh3459Chineseiu2955 Inuktitutbn5018Banglaar3426Arabicfr2235Frenchsr3260Serbianru6585Russianen3103Englishbn1742Banglachr4465Cherokeefr1402Frenchsr7727Serbiantr1011Turkishar916Arabicccp2272Chakmaen2840Englishzh1890Chinesezh1739Chineseccp2190Chakmaar5991Arabiczh687Chineseen7487Englishth1718Thaith2452Thairu7274Russianel4208Greekfr4681Frenchchr1232Cherokeechr5020Cherokeechr2633Cherokeechr4444Cherokeeen4186Englishsr3710Serbiantr7989Turkishth556Thaisr5883Serbianchr2800Cherokeeel660Greektr8139Turkishbn7567Banglaiu7209 Inuktitutzh394Chineseen2067Englishja1268Japanesechr7511Cherokeezh318Chinesefr3479Frenchzh4735Chinesetr6454Turkishbn7918Banglaru4583Russianel7023Greekfr3485Frenchiu1762 Inuktitutja2112Japaneseel6139Greeken5891Englishzh2336Chinesees918Spanishth1589Thaiar4048Arabicchr2520Cherokeeiu1374 Inuktituteo597 Esperantoth7050Thaiar6695Arabicchr7133Cherokeesr2435Serbianen6593Englishar2257Arabicru3946Russianzh7034Chinesees5601Spanishtr6482Turkishzh3952Chinesechr6643Cherokeeeo197 Esperantoen4638Englishchr4352Cherokeeru5324Russianbn2482Banglachr4577Cherokeeth344Thaiccp287Chakmaes930Spanishzh3247Chinesezh5195Chinesezh5545Chineseccp2552Chakmachr5556Cherokeeeo7976 Esperantobn3593Banglaes489Spanishsr2231Serbiantr7156Turkishiu245 Inuktitutccp5726Chakmaja5327Japaneseen6425Englishes6407Spanishen3693Englishar1178Arabiczh1898Chineseccp4712Chakmaar5508Arabices6280Spanishzh469Chineseel7220Greekccp2641Chakmatr1280Turkishfr699Frenchen589Englishbn1709Banglabn6689Banglaen4765Englishel463Greekes4198Spanishes5315Spanishfr7237Frenchsr161Serbianbn3570Banglasr6011Serbianel5086Greeken2581Englishccp6667Chakmaeo4436 Esperantoth3455Thaibn3659Banglabn5355Banglaja4100Japanesefr7681Frenchel6514Greeksr3115Serbianchr6206Cherokeezh1899Chineseru2611Russianchr5854Cherokeeiu1586 Inuktitutru6434Russianja6138Japaneseiu4893 Inuktituttr7580Turkishchr3247Cherokeechr6220Cherokeefr1609Frenchar5006Arabicsr5959Serbianeo1351 Esperantofr4612Frencheo5902 Esperantoth1845Thaisr2246Serbianes4933Spanishru7260Russianru5471Russianbn7549Banglaru379Russiantr4440Turkishen6511Englishzh2310Chinesezh7104Chinesees5431Spanishes6679Spanishsr3597Serbianzh3806Chinesezh4023Chineseccp558Chakmaru6186Russianiu7510 Inuktitutru5071Russianru7631Russianru7758Russianccp5856Chakmaiu195 Inuktituttr6924Turkisheo5753 Esperantoes34Spanishes2145Spanishes5678Spanisheo50 Esperantoes6700Spanishth372Thaija4070Japaneseen1485Englishiu2613 Inuktitutel6211Greekes7956Spanishsr1915Serbianccp2307Chakmatr7479Turkishth5055Thaisr5976Serbianfr4367Frenchbn6430Banglaeo2610 Esperantoeo1826 Esperantobn1517Banglaru2404Russianar7459Arabices7235Spanishtr3251Turkishccp2609Chakmaiu1588 Inuktitutchr2993Cherokeebn7216Banglaen62Englishel4259Greekzh4887Chinesebn2397Banglaiu3098 Inuktitutiu7208 Inuktitutbn465Banglaiu21 Inuktitutar7700Arabicbn379Banglael5405Greeksr6088Serbianeo2147 Esperantoiu4053 Inuktitutar1643Arabiceo471 Esperantofr4425Frenchsr6187Serbianar2470Arabiceo8010 Esperantotr5208Turkishccp1680Chakmatr4143Turkishfr2511Frenchel2795Greekes4236Spanishzh4565Chineseel6217Greekar3993Arabicel6582Greekja1464Japanesees1718Spanishru5648Russianar3462Arabicfr4560Frenchru7400Russianbn1761Banglafr6325Frenchen960Englishru4166Russianar4160Arabicbn3213Banglabn3227Banglaru1549Russianchr6208Cherokeesr7374Serbianru5267Russianes3280Spanishar503Arabiciu7115 Inuktitutru5243Russianbn1218Banglaar4597Arabicja5172Japaneseja7557Japanesesr6122Serbiantr4996Turkishes5992Spanishja8176Japaneseeo4456 Esperantoel521Greekiu8112 Inuktitutja7632Japanesebn895Banglael2775Greeksr4646Serbianth4077Thaibn4232Banglaeo6272 Esperantotr1531Turkishtr5819Turkishfr7881Frenchsr6635Serbianen3794Englishes3463Spanisheo1790 Esperantoar4494Arabicar5091Arabicru828Russianfr1604Frenchchr557Cherokeechr1771Cherokeeen6966Englishsr6280Serbianccp7152Chakmachr513Cherokeeen1910Englishiu6078 Inuktituttr6241Turkishzh5016Chineseth139Thairu6809Russianth250Thaichr1314Cherokeeel7913Greekja2675Japanesesr106Serbianar1385Arabicar5408Arabicen6858Englishbn4777Banglafr853Frenchfr5501Frenchth4232Thaien2128Englishccp6935Chakmaeo2399 Esperantoru5263Russianbn5190Banglaiu1254 Inuktitutth7822Thaies2016Spanishel5721Greekar4640Arabicsr3375Serbianchr4900Cherokeeth6916Thaien7485Englishiu2689 Inuktituttr1115Turkishfr4578Frenchiu7528 Inuktitutchr2266Cherokeeccp2803Chakmaes5304Spanishja335Japaneseru7918Russianar6497Arabicth5468Thaizh4255Chineseru4484Russianiu1980 Inuktitutchr1126Cherokeechr2235Cherokeefr6324Frenchiu1641 Inuktituten1434Englishzh6581Chinesees5857Spanishel1299Greekar8051Arabicchr7810Cherokeees225Spanishsr1650Serbianeo5171 Esperantofr1952Frenchru6426Russianel3137Greekccp532Chakmaen312Englishsr921Serbianar2234Arabicsr8145Serbiantr4620Turkishzh5834Chinesear8074Arabicel1625Greeksr1711Serbianbn902Banglaccp6779Chakmachr7016Cherokeees5646Spanishzh916Chinesefr6007Frenchru5841Russianes3329Spanishtr7856Turkishtr7790Turkishru3577Russianru4762Russianzh6646Chinesear1727Arabicel3588Greekar7338Arabicchr308Cherokeees1908Spanishtr4789Turkishen5553Englishel1006Greekes3779Spanishccp7868Chakmaja7847Japanesezh2220Chineseeo2912 Esperantoeo6434 Esperantoen6600Englishccp5414Chakmaja1421Japaneseiu2820 Inuktitutes7553Spanishel1117Greekel3309Greekru2628Russianja1837Japaneseru5289Russiansr4386Serbianth1605Thaisr6252Serbianzh2366Chineseen3083Englishccp4582Chakmafr3218Frenchja1926Japanesezh8013Chinesezh5520Chinesees7165Spanishccp1043Chakmazh2187Chineseel5023Greekfr349Frenchru3136Russianeo6458 Esperantotr282Turkishiu1247 Inuktitutiu6380 Inuktitutar5204Arabicccp5946Chakmaiu8062 Inuktitutccp630Chakmael3129Greekru123Russianth5102Thaith5522Thaieo5584 Esperantochr6628Cherokeees6196Spanishfr6202Frenchru2479Russianfr4273Frenchccp2192Chakmaeo3553 Esperantoeo5640 Esperantoel2845Greekeo6131 Esperantoes7949Spanishtr4819Turkishzh6522Chinesechr1815Cherokeetr7647Turkishtr6112Turkishzh6481Chineseen2951Englishsr961Serbianeo4317 Esperantoccp1692Chakmazh4049Chinesear5634Arabicar1642Arabicth433Thaifr2822Frenchbn3661Banglaeo1518 Esperantoth5935Thaitr7829Turkishfr4440Frenchbn6905Banglaru2442Russiantr1014Turkishbn3482Banglaiu2617 Inuktituten876Englishbn5109Banglaeo2277 Esperantosr7701Serbianchr3900Cherokeeiu2361 Inuktitutsr3072Serbianzh4296Chineseiu6861 Inuktitutar4776Arabicfr2918Frencheo4969 Esperantosr4918Serbianchr5045Cherokeeeo2207 Esperantoiu1476 Inuktituten2572Englishsr1427Serbianeo8017 Esperantoiu7752 Inuktitutru5351Russianchr1947Cherokeeeo1483 Esperantoel4105Greekel4806Greekbn51Banglaen5985Englishchr4742Cherokeeccp5890Chakmaes1965Spanishccp3662Chakmael7660Greekbn4054Banglabn6071Banglaiu7218 Inuktituttr7658Turkishel1038Greekes4776Spanishar288Arabiczh1106Chineseth1626Thaibn832Banglaen2176Englishja6939Japaneseen3482Englishar6670Arabicbn6265Banglaccp2306Chakmaar3186Arabicel1017Greekeo6959 Esperantoes4378Spanishtr2988Turkishzh684Chineseccp6025Chakmafr4649Frenchel4784Greekchr4342Cherokeechr6872Cherokeeeo1947 Esperantoar7773Arabiceo3266 Esperantoes1622Spanishes3025Spanishja8022Japanesetr2763Turkishar4090Arabictr7467Turkishen4934Englishfr2640Frenchbn5733Banglael1322Greeksr5301Serbianen4443Englishen7955Englishtr6028Turkishfr3936Frenchzh2689Chinesesr6832Serbianccp2920Chakmath3565Thaibn3337Banglachr1200Cherokeefr7127Frenchchr851Cherokeebn5989Banglazh722Chinesezh2899Chinesebn4095Banglabn8138Banglazh4409Chinesezh6672Chinesetr1969Turkishar1859Arabicar2905Arabicchr275Cherokeeru1940Russianel3317Greekfr436Frenchfr3079Frenchfr1882Frenchsr6360Serbiantr5893Turkishar2752Arabicfr6675Frenchiu982 Inuktituttr4937Turkishzh4224Chinesefr3065Frenchzh3199Chineseel5494Greekiu6993 Inuktituten6787Englishccp1214Chakmasr194Serbianfr3645Frenchtr3237Turkishja7503Japanesebn6011Banglaru4068Russianja7809Japaneseiu4294 Inuktitutchr267Cherokeeth3533Thaieo1025 Esperantofr5422Frenchccp7061Chakmaccp2746Chakmaen6727Englishel2304Greekbn7432Banglabn6058Banglasr3988Serbianar2216Arabiczh1852Chinesefr1448Frenchsr2864Serbianes3251Spanishes4761Spanishru5516Russianiu4394 Inuktituttr419Turkishen6051Englishchr7506Cherokeeen8032Englishes6775Spanishbn3816Banglaccp5905Chakmabn6355Banglael7827Greekccp1860Chakmaru77Russianiu3666 Inuktitutfr3294Frenchsr1070Serbianth2557Thaiiu7735 Inuktitutja6919Japaneseiu5933 Inuktitutchr1551Cherokeeccp3693Chakmael7574Greekfr3429Frenchar7229Arabicel3428Greeken6124Englishja5857Japanesechr3536Cherokeeeo312 Esperantoja5159Japaneseccp5840Chakmatr4020Turkisheo7615 Esperantoes2652Spanishru4459Russianel4431Greekchr5230Cherokeeel5648Greekth1448Thaiel5979Greeksr7174Serbiantr6919Turkishen4962Englishsr5400Serbiantr4576Turkishja2087Japanesear4131Arabicccp247Chakmafr3072Frenchtr3554Turkishtr6503Turkishes7578Spanishen3081Englishru2153Russiantr4397Turkishel3452Greekbn2173Banglafr4191Frenchtr7951Turkishja1967Japanesechr5538Cherokeesr1436Serbianbn2419Banglaiu3705 Inuktitutsr2331Serbianiu4114 Inuktitutiu1480 Inuktitutsr3472Serbianbn6800Banglaccp4289Chakmachr3375Cherokeees6849Spanishbn4281Banglath5168Thaibn2982Banglachr3243Cherokeeja2629Japanesetr2043Turkishzh3224Chinesefr6399Frenchchr7914Cherokeeen317Englishel3658Greekbn4885Banglaeo366 Esperantoen5945Englishbn7584Banglafr5936Frenchru7935Russianes3698Spanishja7921Japanesear4664Arabiceo4242 Esperantosr7430Serbianchr4811Cherokeeccp6204Chakmafr1373Frenchsr1777Serbianen7117Englishja3927Japanesesr4890Serbiantr947Turkishsr5213Serbianth1902Thaien2794Englishth2669Thaiar1983Arabicfr7396Frenchth7446Thairu1272Russianja7539Japaneseel3299Greektr1973Turkishbn6635Banglaes1660Spanishes8112Spanishth1338Thaith4968Thaichr7813Cherokeeeo6927 Esperantosr2816Serbianfr4959Frencheo478 Esperantoes953Spanishen5638Englishbn6334Banglaja570Japaneseiu3008 Inuktitutth3534Thaizh4854Chineseen1457Englisheo7264 Esperantoccp7820Chakmabn2385Banglachr2630Cherokeeru3968Russianiu6750 Inuktitutru3401Russiansr6860Serbianccp7757Chakmatr722Turkishzh6096Chinesezh2362Chinesechr7553Cherokeebn4334Banglaja6341Japaneseel3146Greeksr4696Serbianccp2103Chakmachr6936Cherokeeja1151Japaneseccp2512Chakmatr3193Turkishbn7102Banglabn8044Banglaja7642Japaneseeo2748 Esperantotr6346Turkishru2465Russianiu3498 Inuktitutes6542Spanisheo7128 Esperantoru4866Russianen7319Englishar5031Arabicen5934Englisheo4307 Esperantozh5979Chinesezh8182Chineseiu3477 Inuktituteo4320 Esperantoar7444Arabicfr585Frenchtr2291Turkishsr4539Serbianja4395Japanesefr2113Frenchja4600Japaneseen1356Englishsr552Serbianth483Thaien1381Englishen7576Englisheo2366 Esperantoeo6023 Esperantotr3434Turkishchr7221Cherokeees5981Spanishtr8034Turkishen1535Englishar309Arabictr6282Turkishiu2295 Inuktitutar8010Arabictr2197Turkishbn5268Banglaen2209Englishccp6103Chakmazh420Chineseiu2127 Inuktitutru1119Russianeo2895 Esperantofr1196Frenches1017Spanishru2361Russianbn255Banglabn196Banglaiu5329 Inuktitutiu7169 Inuktitutru5143Russianth3563Thaiar3586Arabices5633Spanishchr2418Cherokeees6403Spanishfr893Frenchiu2947 Inuktitutth845Thaiiu8159 Inuktitutchr7843Cherokeebn5002Banglaen4131Englishtr1595Turkishzh676Chinesear5786Arabicsr7748Serbianzh5931Chinesetr3046Turkishiu3639 Inuktitutes7154Spanishar528Arabiceo541 Esperantosr3361Serbiansr5317Serbianen6407Englishfr2370Frenchar1007Arabicbn533Banglael5389Greekeo1706 Esperantofr4207Frenchsr7588Serbiantr3510Turkishsr4435Serbianen1830Englishru7654Russianja2291Japaneseiu3884 Inuktitutja3115Japaneseru1429Russianar6477Arabicar3250Arabicccp220Chakmaen3509Englishja5049Japaneseth7709Thaisr5009Serbianar5493Arabicru2875Russianfr5792Frenchfr3Frenchru5470Russianeo3372 Esperantoja3285Japanesechr5443Cherokeeel8023Greekru3721Russianth3383Thaiar3153Arabiczh3314Chineseen3557Englishen6497Englishar3511Arabiceo8 Esperantozh4289Chinesechr6162Cherokeebn2794Banglaccp3791Chakmaen4059Englishbn1567Banglaeo6010 Esperantoiu4506 Inuktituteo3562 Esperantotr6032Turkishen1446Englishen7128Englisheo4360 Esperantoes3560Spanishccp3989Chakmatr79Turkishzh1505Chineseccp7734Chakmaiu3349 Inuktitutru2173Russianar5297Arabictr4284Turkishbn5081Banglaccp1812Chakmaiu569 Inuktitutzh751Chineseja5872Japanesechr8089Cherokeeru688Russianzh3037Chinesear108Arabicar4882Arabicen2497Englishiu3432 Inuktitutiu481 Inuktitutel4263Greekru356Russianja6175Japanesees5547Spanishar3375Arabiciu5518 Inuktitutja7042Japaneseja5281Japaneseja5376Japanesetr3662Turkishiu2285 Inuktitutchr7995Cherokeechr672Cherokeeccp1556Chakmaru5721Russianja7314Japanesebn2933Banglael6584Greeken1517Englishzh3838Chineseen5472Englishbn2787Banglaeo358 Esperantoja5387Japaneseru2042Russianth425Thaith4585Thairu4131Russianar4592Arabicel6284Greekes4200Spanishbn4180Banglatr1322Turkishja4885Japaneseru4975Russianen163Englishbn266Banglachr1542Cherokeechr4124Cherokeeen5Englishja7028Japanesezh2971Chineseiu689 Inuktituteo2231 Esperantotr5165Turkishel4576Greeken2486Englisheo1441 Esperantoen1955Englishja1152Japanesezh3197Chinesees6290Spanishzh7160Chineseen4774Englishfr5308Frenchtr47Turkishzh6432Chineseja7169Japaneseeo5007 Esperantotr8006Turkishen6300Englishbn4781Banglaes3613Spanishsr1938Serbianel4914Greekeo2722 Esperantoccp652Chakmaccp4846Chakmaccp3895Chakmafr7978Frenchel4002Greekfr3578Frenchth5983Thaiar5137Arabicsr2075Serbiansr862Serbianes3584Spanishtr6857Turkishfr7907Frenchja5431Japaneseccp1467Chakmachr2945Cherokeebn5398Banglachr3397Cherokeefr6847Frenchth3708Thaieo8016 Esperantoeo1823 Esperantoccp5627Chakmaeo4366 Esperantoiu5259 Inuktitutel4765Greekfr2089Frenchfr7048Frenchiu6108 Inuktitutru2647Russianzh4992Chinesezh5968Chineseel5695Greekar4465Arabicth681Thaien7746Englishel3721Greeken8034Englishar6357Arabiciu7798 Inuktitutccp4453Chakmaru1676Russiantr7594Turkishsr1535Serbianchr4654Cherokeesr7037Serbianja6895Japanesear3639Arabices7207Spanishja202Japaneseth2532Thaitr6210Turkishchr924Cherokeeen272Englishbn4835Banglaen7516Englishfr4521Frenchiu584 Inuktitutth2945Thaien567Englishth4771Thaibn4856Banglatr3378Turkishtr8179Turkishzh4767Chineseeo122 Esperantoccp7032Chakmafr1545Frenchfr2963Frenchfr6217Frenchja7047Japanesesr4246Serbiansr5942Serbiantr662Turkishtr4416Turkishtr7703Turkishiu955 Inuktituttr3257Turkishth4171Thaija1630Japanesefr7558Frenchru4928Russianja164Japanesechr7830Cherokeeen517Englishccp2076Chakmachr2328Cherokeefr370Frenchfr2120Frenchfr5522Frencheo6814 Esperantotr2658Turkishtr3729Turkishth6039Thaiccp6528Chakmachr2052Cherokeezh2814Chinesefr5719Frenchccp5011Chakmaar1379Arabicbn7315Banglaiu645 Inuktitutfr5266Frenchen5548Englishfr4613Frenchen7651Englishfr7580Frenches820Spanishchr3421Cherokeeeo4154 Esperantobn6286Banglaen5784Englishtr7508Turkishes3200Spanishen5319Englishja2987Japanesezh5846Chinesetr6989Turkishes4840Spanishth4071Thaitr1329Turkishiu5855 Inuktitutzh3639Chineseeo3187 Esperantoen985Englishiu2548 Inuktitutru6804Russianchr1289Cherokeeeo5460 Esperantochr2442Cherokeesr2933Serbianccp1926Chakmaeo2930 Esperantozh2135Chinesees928Spanishsr1309Serbiansr4522Serbianiu8191 Inuktitutja7111Japaneseiu5321 Inuktitutth172Thaichr3297Cherokeebn7283Banglabn5178Banglaeo4385 Esperantoth3085Thaiar4416Arabicth390Thaizh6705Chineseeo5359 Esperantoen6660Englishfr2650Frenchzh2070Chineseccp1326Chakmaes7945Spanishbn2317Banglaeo7140 Esperantoru755Russianiu2693 Inuktitutsr5950Serbianja1682Japaneseth1828Thaibn7959Banglaccp100Chakmaar8043Arabiciu716 Inuktitutsr4720Serbianes6628Spanishja2964Japanesechr1601Cherokeear685Arabiciu6384 Inuktitutar5507Arabicsr52Serbianfr4853Frencheo1672 Esperantoeo6403 Esperantoel1971Greekes661Spanishfr1537Frenchru7322Russianiu2850 Inuktitutbn6501Banglaja1156Japanesetr4141Turkishzh5313Chinesees1956Spanisheo1128 Esperantoiu7065 Inuktitutzh7684Chineseel1837Greekbn159Banglaen5038Englishccp6634Chakmatr2150Turkishtr1620Turkishzh365Chineseiu5695 Inuktitutja3342Japaneseeo2092 Esperantoes2107Spanishen7337Englishzh2006Chineseja3872Japanesefr2648Frenchbn8190Banglael3564Greekeo498 Esperantoiu1444 Inuktitutar5905Arabicchr1647Cherokeebn1871Banglath6119Thaija8072Japaneseru4350Russianja4005Japanesefr4139Frenchen8143Englishbn4843Banglaar2647Arabicel1843Greekes5554Spanishen4893Englishbn1713Banglael4738Greekja5672Japaneseru6782Russiansr481Serbianth1377Thaija4521Japaneseth7497Thaieo1908 Esperantobn1608Banglafr7451Frenchbn4418Banglaen6900Englishccp2623Chakmaja2434Japanesear4933Arabicbn7422Banglaja2980Japanesechr5262Cherokeefr5919Frenches5721Spanishth7544Thaizh1802Chinesees248Spanishja2763Japanesezh8008Chineseru7886Russianzh7169Chinesebn2366Banglaccp3759Chakmatr4405Turkishchr2443Cherokeear845Arabicccp7028Chakmaccp7683Chakmaru1594Russianes7827Spanishfr1785Frenchar2858Arabictr3379Turkishja6758Japaneseja7738Japaneseth3919Thairu8043Russianchr6426Cherokeeru4822Russianchr1072Cherokeeja1964Japaneseel1364Greekar3040Arabicccp975Chakmaen3288Englisheo4343 Esperantoru6638Russianfr2470Frenchth3587Thaien351Englishccp485Chakmaes3539Spanishja1375Japaneseja5628Japanesetr768Turkishsr4911Serbianfr4966Frenchja7186Japaneseccp1052Chakmazh4784Chinesees2186Spanishth6281Thaisr1029Serbiantr863Turkishsr7229Serbianccp4690Chakmatr8114Turkishchr8067Cherokeeccp7318Chakmath7841Thaifr2603Frenchar2726Arabiciu63 Inuktitutccp86Chakmaes1115Spanishzh7371Chinesechr6444Cherokeebn238Banglabn5113Banglath2087Thaija3910Japanesear5241Arabices5538Spanishfr1300Frenchiu3652 Inuktitutar6641Arabicel3973Greeken4944Englishel3981Greekar1865Arabicth3627Thaieo5394 Esperantobn130Banglaru6629Russianchr7784Cherokeeru631Russianbn4637Banglaen7150Englishru2365Russianbn7021Banglaeo4023 Esperantoen2523Englishes3079Spanishbn4397Banglafr4017Frenchsr571Serbianbn4216Banglafr7009Frenchzh5333Chinesezh5547Chinesees432Spanishru2533Russianen291Englishfr3163Frenchth4527Thaija2018Japanesear4384Arabiczh1241Chineseel6414Greekccp612Chakmaru4537Russianzh2787Chineseiu7676 Inuktitutiu7808 Inuktituten6330Englishen7326Englishccp628Chakmaru3110Russianth2628Thaiccp958Chakmazh7905Chineseru7493Russianel2171Greekchr5108Cherokeechr6299Cherokeefr7672Frenchth1207Thaizh7246Chineseru1884Russianth6344Thaiccp7575Chakmafr923Frenchtr4667Turkishel1302Greekel7810Greeken5273Englishru6340Russianchr6414Cherokeees5075Spanishja1012Japanesees6445Spanishbn6767Banglatr692Turkishen7954Englishtr550Turkishen1041Englishbn7690Banglaes8166Spanishth4150Thaies4167Spanishzh6137Chineseja1192Japanesesr7289Serbianja4719Japanesefr6782Frenchsr5060Serbianar6879Arabicbn2983Banglaar4930Arabicru3293Russiantr7604Turkishes7043Spanishen2439Englishen7938Englishen3673Englishen6240Englishsr2087Serbianfr7250Frenchtr7256Turkishchr6801Cherokeeth1707Thaieo576 Esperantofr2443Frenchru8113Russianeo1446 Esperantoru1805Russianiu7344 Inuktituteo5778 Esperantoel97Greekru5645Russianchr580Cherokeeccp5668Chakmasr2065Serbiantr68Turkishja625Japaneseen4050Englishes6273Spanishsr8031Serbianccp6783Chakmaja6263Japaneseeo5373 Esperantoiu3809 Inuktitutbn5535Banglael4319Greekel5795Greekel1256Greekbn193Banglachr91Cherokeefr4084Frenchen6628Englishja5217Japaneseja565Japaneseiu6822 Inuktitutru5964Russianzh2982Chinesezh2340Chinesetr6283Turkishbn10Banglaes4479Spanishar925Arabiczh5138Chineseiu5740 Inuktituteo7646 Esperantoru2087Russianzh4360Chineseja5618Japanesees5796Spanishchr3306Cherokeetr3596Turkishiu7609 Inuktitutchr184Cherokeeel3862Greekja3650Japanesebn7548Banglaja4832Japanesetr5678Turkishccp1984Chakmazh2398Chineseeo2172 Esperantoru5431Russiansr1685Serbianes2988Spanishja1836Japaneseen1606Englishccp457Chakmael1634Greekes4646Spanishja3166Japanesesr7293Serbianth8131Thaitr189Turkishen5884Englishzh7869Chineseru1899Russianccp6936Chakmaeo982 Esperantoeo7761 Esperantoru6182Russianchr363Cherokeeja705Japanesechr5465Cherokeear5457Arabiciu2139 Inuktitutja5858Japaneseth5720Thaitr5593Turkishzh6163Chineseth450Thaija3486Japaneseru6624Russianru7153Russianen7488Englishar7748Arabicar1347Arabicchr1896Cherokeefr7608Frenchiu6849 Inuktituttr919Turkishchr4425Cherokeeth1556Thaies209Spanisheo2535 Esperantoth2495Thaiel5506Greekfr6454Frenchccp1699Chakmaru7518Russianeo1377 Esperantotr5801Turkishccp5158Chakmasr5623Serbianel1285Greekar6341Arabicbn2206Banglabn3732Banglaru6144Russianen6181Englishja6971Japaneseen332Englishja2193Japanesefr1183Frenchccp4534Chakmaar2639Arabicar4319Arabicbn566Banglatr4906Turkishes1800Spanishth4554Thaichr4009Cherokeear8009Arabicfr4929Frenchth1983Thaies4515Spanishru616Russianbn6887Banglath6706Thaien2561Englishccp6008Chakmatr7285Turkishchr3620Cherokeezh6398Chinesechr4780Cherokeear4579Arabicsr4734Serbianth4643Thairu7117Russianel1463Greektr5749Turkishtr6477Turkishth833Thaitr7289Turkishja1937Japaneseeo3515 Esperantobn4789Banglaen3996Englishel2191Greeken3840Englishbn6865Banglath6910Thaizh3857Chinesefr7489Frenchiu7130 Inuktitutsr6407Serbianth6503Thaitr3747Turkishth4790Thaichr4564Cherokeeth6411Thairu7913Russianzh3662Chineseen7200Englishtr2561Turkishtr7429Turkisheo8042 Esperantochr5053Cherokeebn7271Banglaen5459Englishes2881Spanishchr5668Cherokeeen7542Englishbn508Banglasr981Serbianru6228Russianen3285Englishtr2430Turkishccp2385Chakmafr712Frenchth6932Thaichr2832Cherokeechr1478Cherokeechr73Cherokeesr7331Serbianth7874Thaies1728Spanishiu707 Inuktitutiu7516 Inuktitutzh7285Chineseru97Russianbn6402Banglasr1723Serbianel48Greekes3385Spanishru420Russianth7999Thaizh3619Chineseel3762Greeken3800Englishbn5992Banglaccp324Chakmabn1306Banglael3567Greekeo3315 Esperantoth3114Thaies516Spanishes4953Spanishja7122Japanesesr256Serbianfr5286Frenchel2479Greekccp529Chakmaar6281Arabicbn6975Banglaccp165Chakmasr5940Serbianel386Greekfr8144Frenchen6255Englishfr1987Frenchtr4276Turkishja4736Japanesear6572Arabicar7582Arabicen2940Englisheo6083 Esperantofr2464Frenchja7060Japaneseiu7784 Inuktitutzh7222Chineseiu5620 Inuktitutes6164Spanishar572Arabicbn3181Banglaar3622Arabicja306Japanesesr200Serbianar222Arabicel745Greekel6030Greekja6560Japaneseeo939 Esperantoes6560Spanishar213Arabiceo569 Esperantoeo604 Esperantoru7906Russianeo3752 Esperantoes232Spanishja1998Japanesesr5839Serbianbn857Banglaes958Spanishth3295Thaizh791Chinesetr5105Turkishchr5343Cherokeezh3343Chinesebn5838Banglazh7678Chinesees2994Spanishchr149Cherokeeel5899Greekeo7067 Esperantoru3004Russianru6678Russianth975Thaichr2133Cherokeeen3806Englishbn403Banglaccp427Chakmaru3959Russianar4111Arabicja823Japaneseeo6106 Esperantoeo668 Esperantoar3547Arabices991Spanishar3164Arabicel6175Greektr2420Turkishfr7761Frenchth3878Thaiccp412Chakmaru2824Russianfr215Frenchsr2558Serbianchr3402Cherokeeeo1452 Esperantozh1897Chinesefr7264Frenchth8176Thairu993Russianru3740Russiantr4565Turkishja1730Japanesefr526Frenchja5670Japanesebn4766Banglaeo4923 Esperantoja7893Japaneseth6297Thaichr3063Cherokeeccp1754Chakmachr1298Cherokeeiu7965 Inuktitutfr3924Frenchfr3742Frenchfr7874Frenchiu2044 Inuktituttr5288Turkishfr704Frenchiu3640 Inuktituten7682Englishja1105Japaneseeo3989 Esperantoeo6291 Esperantoiu5381 Inuktituttr3770Turkishja4754Japanesesr2604Serbianth575Thaith3061Thaith6418Thaisr5529Serbianar4501Arabiceo1183 Esperantosr3771Serbianccp4160Chakmaen7499Englishru23Russianbn5632Banglatr2362Turkishsr7191Serbianeo5400 Esperantoiu4633 Inuktituteo3132 Esperantoru1708Russianzh1016Chinesesr3531Serbianbn5437Banglaiu7706 Inuktitutes919Spanishccp853Chakmael4287Greekchr1985Cherokeechr6698Cherokeeen5625Englishja7952Japaneseen3001Englishzh7744Chineseiu4269 Inuktitutfr5156Frenchel6067Greekbn1319Banglaru7268Russianen252Englishth66Thaitr1532Turkishar1981Arabicru3285Russianru5882Russianbn1777Banglafr1853Frenchen4999Englishth145Thairu3588Russianel4070Greekiu805 Inuktituteo4034 Esperantobn5651Banglaeo1577 Esperantofr3155Frenchbn6463Banglael1426Greekzh5719Chineseel3159Greekccp1923Chakmaen4356Englishfr3438Frenchfr6279Frenchccp3852Chakmazh1183Chinesees5801Spanishzh6300Chineseiu5462 Inuktitutru6148Russianth4124Thaies1914Spanishen3149Englishth1245Thaibn7766Banglaar5323Arabicsr1716Serbianccp6582Chakmaar7013Arabicar4522Arabicchr3640Cherokeeth2882Thaiiu497 Inuktituttr3794Turkishzh6024Chineseccp706Chakmaen702Englishchr1501Cherokeebn7533Banglatr7701Turkishfr2060Frenches5684Spanishth111Thaichr1813Cherokeeja5647Japanesetr4377Turkishel4551Greekth8032Thaizh943Chineseja4949Japaneseeo4680 Esperantoccp5142Chakmafr218Frenchsr6061Serbianja1710Japaneseth3430Thaien4548Englishsr4772Serbianth2214Thaichr5534Cherokeeeo1952 Esperantoeo1241 Esperantoen4375Englishsr6607Serbianar440Arabicccp2829Chakmachr2518Cherokeees7959Spanishccp3318Chakmaen4363Englishccp7804Chakmaiu3730 Inuktitutth2583Thaieo7031 Esperantoiu4577 Inuktitutru2869Russianfr7029Frenchth7080Thaiccp7911Chakmael2711Greektr4679Turkishel5315Greektr3076Turkishar5930Arabicel822Greekiu3374 Inuktitutru4770Russiantr2415Turkishfr3762Frenchzh7185Chinesear5111Arabicru593Russianen6183Englishel6210Greektr3705Turkishbn5772Banglaccp6996Chakmaen2538Englishes440Spanishiu1192 Inuktitutar455Arabicru7567Russianccp4770Chakmatr1402Turkishth7325Thaibn1508Banglachr7215Cherokeeja6625Japaneseeo3740 Esperantoiu1929 Inuktitutiu1939 Inuktitutes5176Spanishbn1066Banglaes7391Spanishja4520Japaneseth5265Thaizh656Chinesefr628Frenchbn2969Banglachr1227Cherokeeiu5849 Inuktitutar7629Arabicja1556Japaneseccp8062Chakmachr5469Cherokeeel6764Greektr7484Turkishja1908Japanesesr4274Serbianel1809Greekiu2710 Inuktitutchr2574Cherokeeen8113Englishccp4055Chakmaeo83 Esperantoccp6876Chakmaiu3554 Inuktitutja5014Japanesezh7867Chinesebn1695Banglasr4552Serbianth3182Thaitr7887Turkishja454Japaneseccp5497Chakmatr977Turkishen7024Englishchr3443Cherokeesr7943Serbianbn8001Banglaeo6488 Esperantoar920Arabicen7611Englishchr4994Cherokeear5635Arabicja2769Japanesesr537Serbianen2883Englishfr1121Frenchth5593Thaitr7871Turkishiu3777 Inuktitutzh1692Chineseja7888Japaneseja6480Japanesebn6568Banglath43Thaitr6891Turkishar2834Arabiciu315 Inuktituten2208Englishccp1274Chakmaru5584Russianeo1103 Esperantoth2273Thaizh4362Chinesear5083Arabicccp2132Chakmaru7135Russianth6028Thaieo1039 Esperantotr1328Turkishar2297Arabiczh4204Chinesefr2161Frenchccp7056Chakmaja4658Japanesechr6672Cherokeetr6060Turkishru5292Russianzh5244Chineseeo7366 Esperantoeo8183 Esperantochr1023Cherokeebn644Banglazh6681Chineseth4112Thaiel3508Greektr1938Turkisheo2986 Esperantosr7482Serbianccp2431Chakmasr6173Serbianccp2611Chakmaiu5193 Inuktitutiu7058 Inuktituttr3853Turkishja388Japaneseth4614Thaiiu2270 Inuktituteo3457 Esperantozh6663Chineseth4546Thairu708Russianbn2134Banglaiu7959 Inuktitutru6315Russianbn2036Banglaen5330Englishja2069Japanesees3857Spanishth1227Thaieo7848 Esperantofr3950Frenchccp4693Chakmafr7045Frenchccp7029Chakmaja6700Japaneseel4729Greekeo5795 Esperantosr7556Serbianbn2673Banglaeo1203 Esperantobn4884Banglaes2172Spanishja4663Japanesetr7903Turkishja7430Japanesees3932Spanishja4382Japaneseth5880Thaifr682Frenchar4673Arabiceo7517 Esperantoth5205Thaith2654Thaieo1968 Esperantobn2223Banglabn4343Banglabn1897Banglaen249Englishiu7237 Inuktitutar918Arabiciu6298 Inuktituten2304Englishth243Thaizh6784Chinesees2156Spanishen5323Englishiu5677 Inuktituttr3521Turkishar6156Arabicbn7709Banglael1192Greekel4215Greekja7682Japanesebn6235Banglael6499Greekeo7687 Esperantofr6073Frenchccp1453Chakmaiu260 Inuktituttr205Turkishtr4274Turkishsr4223Serbianru7755Russianar1754Arabices2371Spanishchr4596Cherokeeen7087Englishbn4503Banglatr3305Turkishen6070Englishzh7868Chineseiu5768 Inuktitutiu3553 Inuktitutth968Thaija3791Japanesesr5562Serbianes7498Spanishiu2778 Inuktituteo3451 Esperantoen2744Englishen2093Englishbn1933Banglaiu4895 Inuktitutel4661Greekiu6207 Inuktitutru4554Russianja7726Japanesesr4867Serbianen3936Englishccp3405Chakmafr948Frencheo2887 Esperantofr5238Frenchfr4224Frenchen3276Englishbn4863Banglaiu2848 Inuktituten6453Englishfr3789Frenchccp4502Chakmaru2287Russianar3624Arabiciu2072 Inuktitutsr3399Serbianel1963Greekchr1803Cherokeeth7424Thaien294Englishth6737Thaiar4779Arabicccp2176Chakmaccp7431Chakmael6145Greeken6825Englishtr237Turkishccp3559Chakmaes5368Spanishsr7222Serbianth6161Thaichr7687Cherokeebn4186Banglaja4868Japanesechr100Cherokeebn41Banglabn1796Banglaen134Englishru7870Russianel7292Greekja8099Japaneseen7058Englishar555Arabicbn461Banglatr6546Turkishbn5095Banglatr8050Turkishccp6848Chakmaiu5096 Inuktitutar4136Arabicchr1961Cherokeesr2137Serbiantr4627Turkishel7794Greekccp2891Chakmael7701Greekiu7803 Inuktitutth5597Thaizh4955Chinesees3885Spanishbn6649Banglaen7919Englishes6043Spanishsr7718Serbianbn3118Banglaccp4930Chakmaar4561Arabiceo7253 Esperantochr742Cherokeeeo1992 Esperantoar874Arabicchr2903Cherokeeen1819Englishru8092Russianen6925Englishes7451Spanishar2514Arabicel6498Greekar4569Arabicar1990Arabicccp7414Chakmafr8042Frenchja2118Japanesebn1050Banglath230Thaith6013Thaith7603Thaies438Spanishfr4575Frenchja6685Japanesetr4002Turkishtr7775Turkishes3158Spanishccp7468Chakmachr3462Cherokeear2992Arabiceo8174 Esperantotr5108Turkishfr1472Frenchru883Russianchr3643Cherokeechr2827Cherokeeru5016Russianel5379Greekchr5339Cherokeesr1706Serbiansr3907Serbianja1481Japanesear2409Arabices4030Spanishru6950Russianchr1607Cherokeechr6171Cherokeeeo7513 Esperantozh1327Chineseru2595Russianar340Arabicchr7044Cherokeechr2940Cherokeeiu683 Inuktitutiu1389 Inuktitutsr116Serbianth35Thairu6939Russianel2823Greekes4325Spanishes4749Spanishth6406Thaien5608Englishchr324Cherokeees1546Spanishth6291Thaieo1462 Esperantoes5122Spanishes3503Spanishtr6375Turkishccp5583Chakmaccp3612Chakmaeo5246 Esperantotr5421Turkishbn1606Banglachr6828Cherokeesr4222Serbianel3908Greekfr3369Frenchth1467Thaiccp6171Chakmaccp4933Chakmath5872Thaibn6753Banglachr2727Cherokeetr2776Turkishja1080Japaneseccp4749Chakmaar6761Arabices7068Spanishchr7345Cherokeear4500Arabicel2880Greekfr2205Frenchiu4301 Inuktitutccp411Chakmaen7670Englishfr2641Frenchfr7431Frencheo2666 Esperantofr843Frenchiu6347 Inuktituteo843 Esperantoel8104Greekes1502Spanishfr7513Frenchzh4034Chinesefr4777Frenchbn4572Banglaccp1410Chakmazh3333Chinesees2025Spanishiu5780 Inuktitutiu4079 Inuktitutel5233Greeksr6739Serbianes6097Spanishbn6534Banglaru4380Russianen3194Englishccp3226Chakmaeo1286 Esperantoeo7118 Esperantosr4279Serbianfr3052Frenchzh6327Chineseiu8130 Inuktitutzh2744Chinesebn4478Banglaiu1899 Inuktitutar3357Arabices3386Spanishiu1475 Inuktitutru2699Russianth3126Thaizh5567Chineseru4156Russianar2699Arabicbn3744Banglazh1255Chinesechr8066Cherokeefr5760Frenchth7930Thaichr1333Cherokeezh1978Chineseja4550Japanesees7006Spanishzh2496Chineseja6030Japaneseiu7656 Inuktitutccp3906Chakmael6445Greekes2715Spanishru1933Russianru1589Russianzh1340Chinesees6851Spanishth3206Thaiar6527Arabicth6453Thaibn3439Banglaar7786Arabictr6225Turkishth3291Thaieo719 Esperantobn982Banglabn8130Banglaen4362Englishiu5103 Inuktitutsr990Serbiansr4526Serbiantr2326Turkishel2023Greekchr3961Cherokeear4694Arabicar4696Arabicja5883Japaneseel3812Greekar1668Arabicar5981Arabicccp5648Chakmaen307Englishfr6813Frenchja4206Japaneseccp4907Chakmabn4790Banglatr1382Turkishchr8144Cherokeeen7411Englishzh1854Chineseel8124Greektr7242Turkishiu931 Inuktitutzh5443Chinesefr3908Frenchen3736Englishth4115Thaifr5656Frenchru810Russianar7374Arabiceo6551 Esperantoar5562Arabicen5672Englishtr2373Turkishfr1181Frenchzh2615Chineseel4805Greekar6365Arabicbn1967Banglachr5087Cherokeetr7837Turkishbn1732Banglaja4135Japanesetr7210Turkishiu540 Inuktitutes3380Spanishfr5819Frenchccp5817Chakmaccp6808Chakmasr7795Serbianccp5278Chakmaes1107Spanishja2726Japanesesr5880Serbianbn3916Banglaes2269Spanishsr6339Serbianen530Englishth1511Thaichr5413Cherokeeccp1591Chakmasr1519Serbianja4988Japanesebn6553Banglasr1114Serbiansr8071Serbianiu4099 Inuktitutsr2590Serbianru389Russianel4643Greekth6069Thaifr1370Frenchfr3397Frenchbn7740Banglatr3108Turkishar927Arabictr2280Turkishel5403Greekfr4453Frenchzh7862Chinesear2667Arabices3981Spanishru265Russianzh261Chineseth2596Thaija7139Japanesezh92Chineseru3305Russianccp5009Chakmaar2734Arabiciu5001 Inuktituten535Englishth3445Thaiiu8036 Inuktitutbn6174Banglaiu5833 Inuktitutes7981Spanishja6459Japanesefr3696Frenchel6415Greekzh5097Chineseja5903Japaneseen3814Englishja5863Japanesesr7211Serbianja1894Japanesees6137Spanishtr6820Turkishja361Japanesezh5902Chineseeo5406 Esperantoeo2176 Esperantoen151Englishth2998Thaith2450Thaibn7058Banglael7681Greekar5808Arabicel907Greekbn7749Banglaja7633Japaneseru586Russianfr5282Frenchel5980Greektr4998Turkishru4654Russianen873Englishbn2292Banglael5276Greekar2324Arabicar1533Arabicsr11Serbianbn7169Banglaccp3838Chakmafr6428Frenchru718Russianth2479Thaisr2865Serbianel613Greekzh4468Chineseen6699Englisheo7623 Esperantosr1208Serbianccp1775Chakmaes5651Spanishtr1176Turkisheo5969 Esperantoru1354Russianccp2761Chakmatr3436Turkishzh1874Chineseru4193Russianru7216Russianes653Spanishar6252Arabicel3511Greekja5290Japanesechr2071Cherokeebn2711Banglaru2080Russianchr820Cherokeear5836Arabicel3967Greekes286Spanishccp1428Chakmasr3027Serbianbn299Banglasr4845Serbianar189Arabicchr6272Cherokeeiu839 Inuktitutru7487Russianen295Englishes745Spanishchr3411Cherokeechr1469Cherokeeccp6633Chakmafr7757Frenchccp1222Chakmaen7580Englishes1651Spanishel6060Greektr7870Turkishbn1494Banglaar3075Arabicchr5824Cherokeeja462Japanesetr4775Turkishtr4883Turkishtr6404Turkishzh2883Chinesear384Arabicar3413Arabicen152Englisheo6156 Esperantosr4600Serbianen5648Englishiu3307 Inuktitutsr8105Serbianccp7224Chakmazh2411Chinesezh7115Chinesezh3702Chineseru7962Russiansr6850Serbianar1339Arabicfr6910Frenchar7949Arabicel6274Greeken5942Englishfr3315Frenches5939Spanishth4781Thaija4519Japanesees5513Spanishiu2060 Inuktitutth5435Thaies4875Spanishtr3535Turkishbn5078Banglasr3231Serbianen1453Englishen3520Englishtr1249Turkishccp5842Chakmachr8Cherokeeen1069Englishccp20Chakmachr5238Cherokeeth2346Thaibn1959Banglael3216Greekbn7767Banglaja232Japanesear2339Arabicth2758Thaitr3777Turkishth4204Thaizh6628Chinesesr1882Serbianzh207Chinesezh2010Chineseel3096Greekel7508Greekbn4200Banglafr6740Frenchth7704Thaien5276Englisheo6425 Esperantoeo8172 Esperantoru3584Russianth7411Thaieo3383 Esperantoar6773Arabiczh6543Chineseccp7569Chakmaen514Englishfr5179Frenchth2575Thaifr2392Frenchar3865Arabicbn1236Banglath6070Thaien3348Englishen4219Englishchr1282Cherokeeru7683Russianccp7838Chakmaja2746Japanesesr1154Serbianchr2990Cherokeeru6348Russianel2610Greekru5421Russianja3912Japanesebn3127Banglaeo2706 Esperantoru2564Russianfr7507Frenchchr2041Cherokeezh6868Chinesear238Arabices830Spanishar6857Arabicja5268Japanesetr4329Turkishth1764Thaieo6353 Esperantoes4223Spanishzh638Chinesebn5309Banglaiu3024 Inuktitutfr998Frenchth236Thairu3545Russianes4751Spanishes1303Spanishzh4803Chinesear1544Arabiceo1692 Esperantobn5130Banglaeo7795 Esperantoja3258Japaneseja7143Japanesesr1783Serbianzh1292Chineseccp2050Chakmaes4547Spanishfr4544Frenchth7201Thaiel4631Greekzh1645Chinesechr6246Cherokeeel5678Greekeo8047 Esperantoes6667Spanishja6068Japaneseru6409Russiansr4643Serbianar3631Arabicru2717Russianiu3133 Inuktitutchr2509Cherokeees3869Spanishchr3719Cherokeechr5098Cherokeees671Spanishen6991Englishja7085Japaneseen7876Englishfr7668Frenchzh4726Chinesezh2724Chineseel4240Greekbn7270Banglaiu501 Inuktitutel6587Greekzh450Chineseel7124Greekeo4260 Esperantoru5286Russianel218Greektr5357Turkishen5234Englishsr1432Serbianen5901Englishru4117Russiansr1561Serbiansr6580Serbianiu8102 Inuktituteo3385 Esperantoar3620Arabictr6976Turkishzh2653Chineseru3223Russianzh8186Chineseel2165Greekja1591Japanesear4159Arabices3795Spanishru587Russianchr3611Cherokeefr7370Frenches422Spanishru5110Russianeo2135 Esperantofr6Frenchzh4528Chinesesr7577Serbianja2129Japanesesr528Serbianfr1781Frenchfr6544Frenchru5111Russianar6310Arabices4112Spanishru6917Russiansr2505Serbianccp1588Chakmachr688Cherokeefr6540Frenchzh5397Chineseel1666Greekccp778Chakmaccp459Chakmath7008Thaiccp3910Chakmaar2809Arabicar8046Arabicsr7899Serbianzh1154Chineseja1777Japanesesr680Serbianccp2074Chakmaar2036Arabicccp2929Chakmazh3690Chineseru2493Russianzh5923Chineseen7096Englisheo7552 Esperantoen4192Englishth285Thaitr4206Turkishiu3005 Inuktitutzh6244Chineseiu5920 Inuktituttr6432Turkishja6714Japaneseja6993Japaneseru3008Russiansr427Serbianccp541Chakmaru6945Russianth952Thaiccp2789Chakmaar2581Arabiciu8148 Inuktitutchr2329Cherokeesr4394Serbiantr8014Turkishbn2428Banglafr4638Frenches6483Spanishel5588Greekeo5012 Esperantobn4896Banglabn1535Banglaru3772Russiantr906Turkishen4338Englishchr5438Cherokeetr3404Turkishccp1987Chakmaiu1878 Inuktitutchr5539Cherokeesr7838Serbianar765Arabicfr5661Frenchar7581Arabicccp4375Chakmaeo1388 Esperantoel2366Greekja2564Japanesebn4105Banglaes3142Spanishen5288Englishiu6021 Inuktitutja3197Japaneseccp7390Chakmaiu3960 Inuktitutel541Greektr5222Turkishbn7866Banglachr4120Cherokeeen1502Englishccp4970Chakmasr797Serbianchr4691Cherokeeeo4775 Esperantoru5477Russianes703Spanishes1665Spanishtr3623Turkishja3479Japanesear7144Arabicccp4371Chakmaccp7517Chakmaja5528Japanesesr4164Serbianen4026Englishja3857Japanesesr2433Serbianchr5454Cherokeeel5169Greeken80Englishen3206Englishiu7501 Inuktitutja798Japanesefr6268Frenchru7114Russianar7645Arabicru3065Russianel7904Greekccp916Chakmael98Greekes5726Spanishtr4146Turkishel2095Greekbn2155Banglaru2181Russianes4735Spanishth5574Thaieo2117 Esperantoeo2921 Esperantoar290Arabices5533Spanishchr4963Cherokeees2100Spanishccp6503Chakmasr4019Serbiantr3164Turkisheo4724 Esperantoel4933Greekja3117Japaneseel2724Greekccp5462Chakmazh5697Chineseiu4302 Inuktitutccp7332Chakmachr6187Cherokeechr4443Cherokeeiu5181 Inuktitutzh4368Chineseen170Englishsr3142Serbianth1706Thaien3324Englishzh1591Chinesetr6396Turkishccp7706Chakmatr600Turkishtr7315Turkishar1712Arabiczh4126Chineseeo6836 Esperantosr723Serbianja4976Japanesetr2980Turkishzh827Chinesetr3614Turkishru4085Russianes3605Spanishes7365Spanishfr626Frenchru3063Russianja7403Japanesesr4363Serbianja1072Japanesetr4383Turkishth6902Thaitr2617Turkishzh4414Chineseccp7396Chakmaar7404Arabicru710Russianes4031Spanishar586Arabicja7870Japanesear5402Arabicchr5601Cherokeebn6735Banglaccp1732Chakmaes7582Spanishru6295Russianbn3363Banglaar1921Arabicsr4973Serbianja1324Japaneseccp4282Chakmaeo1120 Esperantoja7647Japaneseccp1497Chakmasr825Serbianru2732Russianru4896Russianar7267Arabices5607Spanishiu7355 Inuktitutccp1980Chakmaccp7720Chakmasr6336Serbianccp5362Chakmaar5761Arabicsr4057Serbianth7427Thaichr5279Cherokeeth5355Thaija2657Japaneseja4688Japaneseru5572Russianel7663Greekth4047Thaiar7754Arabicbn1765Banglaar2878Arabicel3106Greekeo2728 Esperantoiu7776 Inuktitutbn5923Banglazh526Chineseru7860Russiansr3356Serbianen2363Englishfr4150Frenchsr2699Serbianchr2539Cherokeezh2199Chinesees3481Spanishfr1079Frenchfr6476Frenchchr2059Cherokeeccp4705Chakmaccp7888Chakmafr4Frenchel831Greekes5034Spanishccp2992Chakmaru1696Russianfr2960Frenchzh7610Chinesetr7230Turkisheo107 Esperantoiu3102 Inuktitutiu1460 Inuktitutes585Spanishchr1778Cherokeees6656Spanishzh5670Chinesefr5396Frenches3143Spanishar6459Arabicsr3663Serbianen4489Englishfr2258Frenchel4408Greekzh4170Chineseja1414Japanesetr4181Turkishfr8102Frenchfr3066Frenchen4025Englisheo3744 Esperantoru395Russianen1833Englishth2643Thaien3017Englishccp1272Chakmaar247Arabicchr3836Cherokeeru6571Russianth4711Thaizh3784Chineseja2541Japanesear3896Arabicel3636Greekfr6453Frenchbn7031Banglasr5945Serbianeo5120 Esperantochr7988Cherokeefr2144Frenchzh2748Chinesesr1532Serbiantr6337Turkishth4696Thaiar1471Arabicth2886Thaitr3835Turkishtr1330Turkishiu2829 Inuktitutth5330Thaisr7785Serbianth718Thaies3563Spanishzh4999Chineseel7966Greeken1523Englishel3014Greekes5475Spanisheo7833 Esperantoth1224Thaieo2046 Esperantoel3795Greekth1833Thaiar3140Arabicru3494Russianru1124Russianzh1289Chineseru3183Russiansr5539Serbianzh6516Chineseen1802Englishen4497Englishiu3000 Inuktituten3976Englishccp6847Chakmaeo3090 Esperantoar3638Arabicth4632Thaieo6734 Esperantoeo5896 Esperantochr1358Cherokeees6973Spanishar7452Arabicja2486Japaneseel1273Greektr305Turkishtr1146Turkishja367Japanesezh886Chinesees2920Spanishchr3712Cherokeeth3596Thaith6193Thaies2193Spanishbn6593Banglafr2529Frenchbn4271Banglael992Greekel5101Greekbn6431Banglaes4348Spanishsr2259Serbianchr5592Cherokeetr7671Turkishzh6007Chinesear6769Arabicel130Greekes629Spanishsr5716Serbianchr4914Cherokeeen30Englisheo2615 Esperantoiu1459 Inuktitutiu1734 Inuktitutiu6875 Inuktitutccp4233Chakmaes5434Spanishsr7425Serbianth706Thaiccp67Chakmachr916Cherokeeel4724Greeken516Englishtr6433Turkisheo1543 Esperantotr2958Turkishar734Arabicja8033Japaneseel3659Greekes7966Spanishfr4007Frenchja592Japaneseru3870Russianfr2059Frenchja4972Japaneseen6849Englishtr2632Turkisheo7610 Esperantobn1070Banglachr4816Cherokeechr7475Cherokeeel2936Greekfr6597Frenchiu6595 Inuktitutsr5861Serbianfr910Frenchzh6152Chinesear3685Arabicchr3868Cherokeefr5528Frenchzh7399Chineseeo5319 Esperantoen4077Englishzh6549Chinesebn1988Banglaes4287Spanishchr3394Cherokeees7453Spanishsr1315Serbianfr3076Frenchtr1004Turkishsr6729Serbiansr1289Serbiansr747Serbianbn7190Banglasr7485Serbianiu3356 Inuktituten7190Englishru3071Russianbn414Banglasr6389Serbianchr4520Cherokeechr4331Cherokeeel250Greektr2136Turkishzh4661Chineseth63Thairu5694Russianbn3357Banglaeo6879 Esperantosr2295Serbianccp5887Chakmael2520Greekbn6123Banglabn2782Banglaen5303Englisheo1328 Esperantotr7882Turkishru35Russiantr2740Turkishzh154Chinesesr4196Serbianbn4197Banglaen4532Englishchr6856Cherokeeeo785 Esperantoth6308Thaies4012Spanishth136Thaieo3578 Esperantochr3708Cherokeechr4615Cherokeetr2941Turkishar539Arabicccp2957Chakmath5108Thairu5777Russiantr1239Turkishel2953Greekbn2295Banglafr3598Frencheo5178 Esperantochr5435Cherokeefr278Frenches3742Spanishes3341Spanishiu3095 Inuktitutar2040Arabictr3977Turkishsr5275Serbianen1776Englishchr3588Cherokeeccp5312Chakmafr7840Frenchzh477Chinesesr4166Serbianeo1080 Esperantotr6091Turkishsr2127Serbianzh2887Chinesebn4505Banglasr2753Serbianeo1298 Esperantochr2696Cherokeesr5154Serbianar4324Arabicchr3816Cherokeesr4644Serbianiu5936 Inuktitutes290Spanishtr7098Turkishccp4634Chakmaar3646Arabicar659Arabicth3724Thaitr56Turkishtr5363Turkishth7552Thairu6034Russianeo5170 Esperantoja5425Japaneseccp292Chakmazh2390Chineseccp1703Chakmaeo5153 Esperantochr4136Cherokeetr568Turkishar3705Arabicccp5818Chakmaes704Spanishfr4327Frenches7077Spanisheo2842 Esperantoru7194Russianru435Russianel170Greekchr1195Cherokeear4471Arabicsr2297Serbianccp5927Chakmaru1340Russianja4608Japaneseeo4427 Esperantoen6290Englishccp26Chakmaar4265Arabicccp3792Chakmafr5305Frenchel5435Greekar6371Arabicbn7022Banglachr7284Cherokeeeo3722 Esperantoes3867Spanishchr2476Cherokeeccp7737Chakmaru3925Russianth584Thaiel4868Greekiu7351 Inuktitutzh4879Chineseen1489Englishzh1105Chinesees7054Spanishth2826Thaieo2232 Esperantozh5488Chineseja5730Japanesefr190Frenchfr6686Frenchsr6542Serbianel2716Greekccp1855Chakmaen2980Englishiu3948 Inuktitutsr1098Serbianccp3905Chakmaen4429Englishtr3211Turkishzh7639Chineseiu6718 Inuktituteo2211 Esperantofr7993Frenchtr1485Turkishzh7924Chinesefr5304Frenchar6193Arabiciu608 Inuktitutfr3118Frenchru3846Russiansr1891Serbianes7115Spanishen5970Englishar2342Arabicen2073Englishar7838Arabicen1465Englishfr4024Frenchccp961Chakmaiu2369 Inuktitutes4441Spanishja1004Japanesetr3507Turkishccp4824Chakmafr5857Frenchtr6961Turkishru5172Russiantr7761Turkishchr8053Cherokeeja6889Japaneseiu1504 Inuktitutchr6789Cherokeeccp2467Chakmath6134Thaiel3871Greekja2474Japaneseeo2805 Esperantosr3741Serbianccp7957Chakmaar364Arabiceo186 Esperantoiu1193 Inuktitutru928Russianiu4045 Inuktituteo3335 Esperantoiu3308 Inuktitutzh7432Chineseja7953Japaneseen799Englishar5638Arabicfr34Frenchfr905Frenchccp6953Chakmazh513Chinesefr4430Frenchel437Greekel677Greekel3399Greekbn4332Banglaen6709Englishfr4038Frenchfr7873Frenchiu7497 Inuktitutiu5210 Inuktitutsr3961Serbianeo4523 Esperantoen1418Englishbn2922Banglael1879Greeksr556Serbianzh2022Chinesebn2315Banglath155Thaizh6077Chineseen7454Englishja2211Japanesees3559Spanishchr460Cherokeees4251Spanishccp948Chakmasr1739Serbiansr7445Serbianth2238Thaieo558 Esperantofr7252Frenches149Spanishru7675Russianchr1250Cherokeeth7423Thaiel4880Greekes4967Spanishes5985Spanishsr1731Serbianar1203Arabicru6167Russianru7939Russianiu6206 Inuktitutzh1637Chinesear6854Arabicchr4538Cherokeeiu2557 Inuktituteo6026 Esperantozh1812Chineseeo3214 Esperantoar6733Arabiceo7173 Esperantoes7677Spanishfr3621Frenchchr4658Cherokeeiu7634 Inuktitutja2132Japaneseccp5594Chakmasr7867Serbianfr2286Frenchsr7599Serbianar1713Arabiciu119 Inuktitutru5232Russianes4588Spanishiu3426 Inuktitutzh7526Chinesesr1803Serbianen4959Englishchr351Cherokeeiu5573 Inuktitutiu6466 Inuktitutel6599Greekar2933Arabicth1170Thaiiu4221 Inuktitutar5994Arabices5369Spanishja6015Japaneseel7759Greektr5267Turkishccp4162Chakmabn4101Banglazh7760Chinesezh918Chinesebn586Banglael2456Greekccp5199Chakmaen661Englishru7595Russiantr3374Turkisheo753 Esperantoeo3312 Esperantoeo5344 Esperantoes2967Spanishsr520Serbianfr5193Frenchth5230Thaija1148Japanesetr7724Turkishfr1368Frenchru4368Russianja7315Japaneseiu5069 Inuktituten633Englishbn1922Banglaeo4489 Esperantoth8067Thaitr6496Turkishes5528Spanishja1020Japanesetr5299Turkishccp525Chakmath1099Thaibn7382Banglaeo2583 Esperantoru7878Russianth948Thaitr1789Turkishth6863Thaiel5970Greektr2352Turkishzh5515Chineseiu2735 Inuktitutiu5192 Inuktitutfr4811Frenchja5Japaneseru63Russianth522Thaiar2270Arabices4Spanishfr7684Frenchen5416Englishel5173Greekchr4665Cherokeechr6945Cherokeebn1213Banglaen234Englisheo7021 Esperantoiu6018 Inuktitutccp6830Chakmaen3248Englishes4684Spanishja966Japaneseth2806Thaith3992Thaizh3076Chineseiu6527 Inuktituttr2443Turkishbn6277Banglath6716Thaiar2293Arabicfr2828Frenchja3136Japaneseccp6233Chakmaen2697Englishen83Englishen7116Englishja3561Japaneseel2609Greeksr5130Serbianen1529Englishbn4098Banglafr1474Frenchth1166Thaitr1097Turkishchr3607Cherokeeel7896Greeken4159Englishbn903Banglaru5893Russianccp4678Chakmatr1600Turkishfr2894Frencheo983 Esperantobn6469Banglabn2270Banglabn5523Banglabn583Banglaja2781Japaneseru1142Russianru3476Russianeo6945 Esperantofr2446Frenchel3766Greekja3480Japanesesr353Serbianen8140Englishfr114Frenchsr3308Serbiantr5269Turkishen7107Englishen4466Englishes6631Spanishiu2168 Inuktitutth4537Thaiccp5599Chakmaiu1453 Inuktitutfr3032Frenchbn3200Banglaeo4262 Esperantochr4857Cherokeeeo1861 Esperantoes5959Spanishth526Thaizh2012Chinesechr6085Cherokeechr5521Cherokeeiu7291 Inuktitutes1471Spanishbn3492Banglaes1768Spanishes6752Spanishen1862Englishsr1477Serbiantr5353Turkishccp7849Chakmael3583Greekiu5997 Inuktituttr7254Turkishsr2885Serbianzh1014Chinesechr4014Cherokeeth7298Thaibn6253Banglaja391Japaneseen6104Englishfr5991Frenchja4751Japanesefr4885Frenchzh114Chinesezh5448Chinesetr1193Turkishtr6057Turkishes3830Spanishbn4123Banglael7729Greekiu6332 Inuktitutsr1327Serbianes2280Spanishja1348Japanesetr1565Turkisheo3265 Esperantoes2906Spanishru767Russianzh468Chinesesr2964Serbiantr2379Turkishes2322Spanishar319Arabiczh7356Chinesefr7133Frenchru7753Russianen5655Englishbn2753Banglaru8064Russianiu4130 Inuktitutsr8062Serbianes91Spanishar4251Arabicchr2766Cherokeees4949Spanishel2080Greeksr2271Serbianen1339Englishsr7740Serbianja2713Japaneseiu4530 Inuktitutccp1587Chakmaen7532Englishfr1047Frenchiu4992 Inuktitutsr3436Serbianfr1978Frenchel813Greekzh6473Chineseiu5407 Inuktitutzh1723Chineseeo7480 Esperantotr7203Turkishsr5856Serbianzh2243Chinesear8083Arabicel1568Greekes6633Spanishccp7648Chakmaar574Arabicar6716Arabicchr4071Cherokeeeo7530 Esperantobn6500Banglatr58Turkisheo5925 Esperantoccp3350Chakmael5218Greekeo6507 Esperantoiu5907 Inuktituteo492 Esperantozh3163Chinesear451Arabices3041Spanishja5350Japaneseen1323Englishja7016Japanesear1298Arabices6541Spanishzh1704Chinesefr6515Frenchiu706 Inuktitutsr6103Serbiansr2631Serbianth895Thaiiu7882 Inuktitutru6263Russianiu819 Inuktituteo6076 Esperantoeo4217 Esperantoeo6752 Esperantoes1537Spanishzh7842Chineseja7401Japanesezh5818Chinesesr6160Serbianeo7020 Esperantoru7825Russiantr2480Turkishccp2350Chakmachr1726Cherokeezh201Chineseeo2841 Esperantoen4328Englishel1025Greekzh3207Chineseccp7531Chakmath1506Thaiel4816Greekja3017Japanesear1086Arabicru67Russianccp6351Chakmaru1401Russiantr2514Turkishth6971Thaitr4889Turkishchr7393Cherokeeen5277Englishes935Spanishbn4621Banglachr532Cherokeetr3983Turkishen7440Englishes6030Spanishccp4637Chakmatr57Turkishel5022Greekar7274Arabiceo2304 Esperantosr469Serbianzh6176Chineseccp10Chakmaes2928Spanishiu4539 Inuktitutth5115Thaiiu3557 Inuktitutfr4895Frenchar1010Arabicbn6333Banglael1041Greekiu4525 Inuktituteo6188 Esperantoes1911Spanishar2341Arabicen3669Englishth1236Thaiel7578Greekccp4721Chakmael6814Greekfr1482Frenchru2686Russiantr5837Turkishfr2468Frenchccp3540Chakmaja3492Japaneseen4390Englishccp3077Chakmaeo4649 Esperantoth1018Thaiccp3565Chakmael5563Greekiu29 Inuktitutel7700Greeken2349Englishfr6575Frenchiu7289 Inuktitutzh6480Chinesees667Spanishes2256Spanishru7389Russianeo8173 Esperantoru2280Russianchr4240Cherokeeen6646Englishru6900Russianbn4069Banglasr4725Serbiantr1527Turkishar7944Arabicbn6444Banglazh625Chineseen3171Englishja2447Japaneseth3469Thaibn4959Banglasr4888Serbianiu4869 Inuktitutru5288Russianja2503Japanesesr5121Serbianzh1138Chinesebn8090Banglaccp5088Chakmaccp5302Chakmafr4490Frenchth7187Thaitr5999Turkishel5851Greekja309Japanesear1625Arabicja3868Japaneseeo6679 Esperantoeo5440 Esperantofr315Frenchar5073Arabicbn1197Banglabn1848Banglaeo3550 Esperantoes6879Spanishel7079Greekccp3456Chakmachr7203Cherokeeru1997Russiantr6618Turkishtr6874Turkishccp3623Chakmabn4608Banglachr789Cherokeees3381Spanishccp5624Chakmachr8031Cherokeeja6757Japanesees4163Spanishar2074Arabiciu3389 Inuktitutfr6998Frenchzh4171Chinesebn6710Banglaja1574Japanesesr4354Serbianen2091Englishth2523Thaisr7028Serbianchr230Cherokeetr4658Turkishar4951Arabicel6738Greekeo3721 Esperantochr2486Cherokeebn2312Banglaeo2752 Esperantoccp2624Chakmabn2159Banglachr3690Cherokeeiu6699 Inuktituten1097Englishchr3118Cherokeebn424Banglaar5598Arabices4102Spanishiu7383 Inuktitutccp4425Chakmaes2798Spanishtr6534Turkishel1706Greeksr7963Serbianccp1464Chakmachr4028Cherokeeen3510Englishccp2078Chakmazh1894Chinesebn2287Banglaja4847Japaneseel7621Greektr2588Turkishru7946Russianzh6306Chinesetr2885Turkishes3441Spanisheo926 Esperantoja1616Japaneseth3309Thaiar6364Arabicth8110Thairu1155Russianeo1416 Esperantosr4828Serbianru1975Russiansr4063Serbianeo3854 Esperantoes77Spanishiu4288 Inuktitutel7270Greekfr7334Frenchja771Japanesesr770Serbianiu3700 Inuktituttr2662Turkishen2350Englishchr7709Cherokeear2148Arabicel5025Greekru1336Russianfr4993Frenchel2962Greekja4209Japaneseen5093Englishzh5446Chinesezh5389Chinesees7350Spanishiu6884 Inuktitutes1915Spanishfr2845Frenchja4534Japaneseen4133Englishel5581Greekel5661Greekbn1634Banglaen811Englishchr706Cherokeeccp2866Chakmaru1656Russianbn5595Banglaiu6198 Inuktitutbn4014Banglachr5812Cherokeefr2551Frenchja3355Japaneseeo7184 Esperantoel174Greektr4621Turkishchr2543Cherokeeeo7600 Esperantoiu768 Inuktitutar815Arabicsr6165Serbiansr7816Serbianiu2147 Inuktituteo1969 Esperantoes5855Spanishru5536Russianbn5164Banglaiu3612 Inuktitutel381Greekru7184Russianchr5947Cherokeechr4868Cherokeees6744Spanishen2315Englishja4404Japaneseccp6281Chakmaen2689Englisheo793 Esperantoth2316Thaichr1781Cherokeechr5927Cherokeeja1540Japaneseja3283Japanesezh1113Chinesear1734Arabicbn289Banglaccp3786Chakmaar7915Arabiciu3594 Inuktitutja1811Japanesechr8128Cherokeefr873Frenchar7517Arabicfr4283Frenchfr4188Frenchru5556Russianel6176Greektr5733Turkishbn691Banglaru196Russianth2864Thairu290Russianeo5099 Esperantobn4902Banglafr5851Frenchfr518Frenchfr3060Frenches3405Spanishja4003Japaneseel4949Greeksr2434Serbianar5884Arabicchr4338Cherokeeth2649Thaichr1957Cherokeezh14Chinesechr3938Cherokeetr5642Turkishbn6542Banglabn8157Banglaar7611Arabicchr6479Cherokeefr7000Frenchccp5757Chakmachr6963Cherokeezh6573Chineseth3791Thaizh5111Chinesebn231Banglachr6637Cherokeefr3481Frenchfr2155Frenchiu6441 Inuktitutccp4845Chakmafr2424Frenchru2308Russianru7566Russianes3978Spanishtr5542Turkishru6045Russianen8069Englishbn7946Banglath2615Thaizh1509Chineseeo4075 Esperantoeo7992 Esperantobn3719Banglaiu6746 Inuktitutth2003Thaitr2512Turkishchr4774Cherokeeja2259Japanesezh811Chinesetr200Turkisheo187 Esperantoja1667Japanesesr3835Serbianen5843Englishiu7537 Inuktitutbn6589Banglaiu8124 Inuktitutru2040Russianes5643Spanishchr16Cherokeeen1553Englishar6239Arabicth2470Thaichr2634Cherokeeen1035Englishbn5041Banglaiu4640 Inuktitutbn482Banglabn5565Banglaccp7508Chakmaiu7827 Inuktitutchr4266Cherokeeiu1951 Inuktituteo3885 Esperantoja7565Japanesees6165Spanishzh2115Chinesebn3770Banglaja5116Japaneseeo5589 Esperantobn3487Banglafr6646Frenchiu2577 Inuktitutsr1996Serbianeo1383 Esperantoar3455Arabicen1337Englishru4246Russiantr3461Turkishes4409Spanishccp5598Chakmaiu3801 Inuktitutja5033Japanesebn2358Banglafr1646Frenches2806Spanishes7417Spanishel6885Greekfr3523Frenchel7002Greektr2053Turkishes2036Spanishes7775Spanishja4239Japaneseiu4163 Inuktitutru3425Russianja1218Japaneseen2188Englishchr3387Cherokeeel2012Greeksr5855Serbianen617Englishfr1678Frenchbn7359Banglaen1513Englishchr6911Cherokeeiu2754 Inuktitutel1074Greekja2576Japaneseel4496Greekel8006Greekja5009Japaneseja1895Japanesesr5547Serbianccp7727Chakmaiu4896 Inuktitutja6430Japanesefr1388Frenchfr3471Frenchfr7717Frenchar7112Arabicccp5849Chakmaes504Spanishccp3943Chakmath6526Thaith3150Thaieo6096 Esperantoes4048Spanishbn452Banglaes5424Spanisheo922 Esperantoeo4151 Esperantozh7913Chineseiu7066 Inuktitutiu7825 Inuktitutfr2923Frenchccp6969Chakmaes2144Spanishzh6665Chineseel6187Greekja1123Japaneseccp3074Chakmaja2632Japaneseru1526Russiansr2315Serbianja1190Japanesesr6109Serbianar6274Arabicar5601Arabicth312Thaizh67Chineseth5416Thaith4494Thaitr6502Turkishiu7545 Inuktitutbn4007Banglaar3397Arabicsr2673Serbianzh6218Chinesebn8188Banglaja1704Japanesesr8116Serbiansr1236Serbianeo3135 Esperantoen6296Englishfr7068Frenchbn7512Banglazh3687Chineseeo4284 Esperantochr2615Cherokeechr1322Cherokeeeo6563 Esperantoru7880Russianel3692Greeken5178Englishzh178Chineseja1901Japaneseel2301Greekfr2557Frenchsr5337Serbianth382Thaien5943Englishru7649Russianth6466Thaiiu4756 Inuktituteo3358 Esperantoccp2356Chakmasr2936Serbianiu6575 Inuktituteo1611 Esperantoel6490Greekeo829 Esperantoccp2396Chakmachr6565Cherokeear2728Arabiceo3981 Esperantoel3434Greekzh7943Chinesesr4944Serbianel7246Greekth1918Thaisr3542Serbiansr5720Serbianccp676Chakmafr3805Frenchru2692Russiansr1912Serbianbn5467Banglaru1567Russianes1701Spanishccp3668Chakmachr4722Cherokeeth1453Thaiccp5144Chakmael3538Greekbn3541Banglaccp3090Chakmaar4544Arabices122Spanishtr984Turkishen6871Englishel2655Greekzh3200Chinesebn7657Banglachr2072Cherokeeccp3286Chakmael7389Greekiu1178 Inuktitutiu4721 Inuktitutbn4274Banglaja2460Japaneseen1019Englishzh8190Chineseel1800Greekbn3762Banglaen5419Englishen3664Englishbn5010Banglachr3188Cherokeeen5984Englishes4529Spanishtr4971Turkishar6619Arabicbn2657Banglaru5134Russianru6583Russiansr3971Serbianzh3223Chineseja967Japanesefr7520Frenchchr6149Cherokeeiu1064 Inuktitutzh4787Chinesezh4939Chinesezh6623Chinesechr1157Cherokeear4404Arabiczh3522Chineseja5655Japanesebn2269Banglaja576Japaneseth6873Thaiccp8060Chakmaja4141Japanesechr773Cherokeesr4416Serbianccp6428Chakmaen3769Englisheo4450 Esperantoel5799Greekiu96 Inuktituttr1617Turkishfr3478Frenchru3829Russianfr5134Frenchel7487Greekzh4619Chinesear2897Arabicbn3401Banglasr3315Serbianbn1459Banglaen6157Englishzh5701Chinesees5784Spanishth3119Thaibn478Banglazh2404Chinesezh2813Chinesees5765Spanishchr4135Cherokeeen2078Englishtr8000Turkishbn2293Banglael6347Greekar940Arabiciu70 Inuktitutfr4250Frenchja35Japaneseel4507Greekbn778Banglaen5725Englishth3297Thaiccp4825Chakmaeo5548 Esperantoru3407Russianen8026Englishth6987Thaies517Spanishfr4671Frenchzh1127Chineseiu2587 Inuktitutiu473 Inuktituten5752Englishth5436Thaieo5293 Esperantoru4333Russianiu6551 Inuktitutel3713Greekzh3098Chineseccp5050Chakmaar2174Arabicja4156Japaneseja7080Japanesetr5029Turkishzh95Chinesezh6822Chinesefr5974Frenchja6242Japanesefr2257Frenchel5153Greekes1251Spanishzh2042Chineseiu6088 Inuktitutccp831Chakmaja236Japanesesr4368Serbianchr2331Cherokeeeo102 Esperantoes3038Spanishes4488Spanishsr910Serbianccp6177Chakmaiu3886 Inuktitutes7264Spanishar4391Arabiciu8190 Inuktitutccp3766Chakmabn5573Banglachr84Cherokeezh1012Chinesear4921Arabicbn749Banglaja1757Japaneseru310Russianbn3190Banglaja6373Japanesear7001Arabicfr1700Frenchja4433Japaneseru5568Russianiu8157 Inuktitutth6160Thaichr2250Cherokeeru3327Russianzh4905Chinesetr7990Turkishar2975Arabiczh6273Chinesesr395Serbianbn7520Banglaes5055Spanishja3720Japanesesr6815Serbianbn7681Banglaar284Arabicfr6941Frenchfr903Frenchfr7560Frenches1131Spanishzh4259Chineseen3659Englishes2697Spanishja6885Japanesebn7630Banglath2642Thaieo3403 Esperantofr5261Frenches1898Spanishiu360 Inuktitutja6776Japaneseiu2140 Inuktitutfr2825Frenchbn8151Banglaja5182Japanesetr4487Turkishbn7542Banglaes2212Spanishru59Russianru4215Russianeo363 Esperantoeo6873 Esperantoja2898Japanesesr6215Serbiantr5446Turkishel7845Greektr6159Turkishen1567Englishchr2465Cherokeetr2460Turkishja2660Japaneseeo6043 Esperantoth629Thaichr7338Cherokeeiu6221 Inuktitutru3834Russianeo7230 Esperantoar2769Arabicth5802Thaieo2204 Esperantoth5392Thaichr6028Cherokeear3986Arabicccp3089Chakmazh5716Chineseiu652 Inuktitutchr3800Cherokeesr7798Serbianchr5733Cherokeeel7820Greekccp3834Chakmaes3106Spanishtr517Turkishtr2523Turkishzh5342Chineseja6042Japanesesr2815Serbianru5117Russianja8145Japanesesr4041Serbianth7833Thaibn3372Banglazh209Chinesefr6482Frenchel402Greeken6288Englishru1083Russianbn1472Banglaeo6118 Esperantoiu1124 Inuktitutccp2816Chakmael8042Greeken6285Englishes1274Spanisheo4742 Esperantoes3057Spanishja2651Japanesechr4704Cherokeear2302Arabicfr1471Frenchccp396Chakmaar6586Arabicfr6069Frencheo6762 Esperantoes3349Spanishzh2976Chineseth6618Thaiccp1857Chakmazh7357Chineseen6794Englisheo4608 Esperantosr6983Serbianen274Englishsr1347Serbiansr2224Serbianen4135Englishru8022Russianiu5108 Inuktitutzh5168Chineseel2504Greekzh4357Chineseiu5403 Inuktitutfr1054Frenchja23Japanesesr5378Serbianar3356Arabicth862Thaiiu6662 Inuktitutes1086Spanishfr1759Frenchen6598Englishar6605Arabicja7029Japaneseru6914Russianel3728Greektr2120Turkishzh7411Chineseth3072Thaibn590Banglachr3096Cherokeeru2512Russianes7684Spanishth878Thaiccp3987Chakmafr5413Frenchccp3507Chakmaru4815Russianfr7339Frenchiu879 Inuktitutccp6429Chakmaes408Spanishth6641Thaitr5828Turkishel7916Greekel5263Greekar6145Arabiceo6482 Esperantoth2592Thaitr2754Turkishja5993Japanesetr7299Turkishchr2498Cherokeeen4463Englisheo2946 Esperantoar5820Arabicbn2046Banglaiu6013 Inuktitutccp2186Chakmafr4467Frencheo284 Esperantoiu6161 Inuktitutsr5708Serbianen4827Englisheo659 Esperantofr6231Frenchfr4982Frenchchr6065Cherokeeja7107Japaneseiu4777 Inuktitutes8042Spanishja1392Japanesebn2910Banglazh8031Chinesebn6762Banglaccp7094Chakmasr7926Serbianel6574Greektr4266Turkishes4326Spanishtr129Turkishel1060Greekccp346Chakmaar7160Arabiczh3285Chinesechr5774Cherokeetr6126Turkishes5872Spanishfr6422Frenches6602Spanishbn6274Banglath5455Thaibn6825Banglaccp7989Chakmachr7542Cherokeeen4832Englishsr3220Serbiansr6012Serbianru5651Russianar4271Arabicen3396Englishru3909Russiansr6712Serbianfr5574Frenchen1685Englisheo431 Esperantoar7881Arabicfr3417Frenchel3745Greekiu844 Inuktitutiu6796 Inuktitutchr5066Cherokeeth7407Thaiel5665Greektr2639Turkishtr6875Turkishccp7630Chakmasr1557Serbianiu737 Inuktitutiu2503 Inuktituttr3426Turkishccp3514Chakmazh5267Chineseru4614Russianar1220Arabicja3385Japanesetr1815Turkishru1201Russianen4895Englishiu6360 Inuktituteo1217 Esperantoja1193Japaneseru6191Russianel2078Greeksr5106Serbianiu705 Inuktitutccp139Chakmaccp2122Chakmath1537Thaiar1780Arabicchr2403Cherokeeccp5463Chakmaen2115Englishchr1878Cherokeeccp1047Chakmasr7274Serbianth3366Thaiar2004Arabicchr3457Cherokeefr6560Frenchth2279Thaiccp102Chakmazh478Chinesetr2622Turkishel114Greeken1541Englishja7289Japanesesr3044Serbianes6031Spanishes4159Spanishzh1595Chineseen2366Englishel4353Greekfr4275Frenchbn7316Banglazh1393Chinesees433Spanishes6737Spanishel1435Greeken475Englishfr4172Frenchel840Greeken7620Englishiu3653 Inuktitutbn1437Banglaeo1213 Esperantoel2462Greeken1146Englishchr3807Cherokeetr1944Turkishen7193Englishar2189Arabiceo1909 Esperantofr7461Frenchru3126Russiansr445Serbianth977Thaizh7710Chineseel3237Greekchr2227Cherokeear4150Arabicfr7207Frenchja3846Japanesezh6373Chineseth2340Thaibn2083Banglasr3559Serbianccp5016Chakmazh7619Chinesetr3637Turkishtr7780Turkisheo999 Esperantobn6627Banglaeo6730 Esperantobn3933Banglabn1167Banglath7859Thaith2804Thaitr6151Turkishiu426 Inuktitutes560Spanishel6105Greekchr4997Cherokeeel4411Greekel7174Greeksr418Serbianchr5740Cherokeechr457Cherokeeiu2789 Inuktituten4062Englishfr7184Frenchar5049Arabicsr7498Serbianiu346 Inuktituten1414Englishru1579Russianar5039Arabicfr6976Frenches7418Spanishru484Russianccp38Chakmaja5109Japaneseja4268Japaneseccp592Chakmachr686Cherokeechr3526Cherokeechr5680Cherokeebn7105Banglaccp4136Chakmael2323Greekar6830Arabiciu3442 Inuktitutbn2413Banglael1489Greekiu5822 Inuktitutja4957Japanesesr7772Serbiantr8019Turkishru1235Russiantr4088Turkishja5939Japanesechr6003Cherokeeel7286Greeken7037Englishel1772Greekth7133Thaizh1396Chineseth5735Thaith6965Thaitr2579Turkishru1325Russianchr2033Cherokeetr7899Turkishel6646Greekja3379Japanesesr1952Serbianeo6410 Esperantoes6086Spanishth2956Thaien1450Englishja5323Japaneseiu7947 Inuktitutes2385Spanishiu2832 Inuktitutja7966Japaneseccp5833Chakmachr974Cherokeeja4632Japaneseja4858Japaneseeo3966 Esperantoar3181Arabicchr6952Cherokeefr5575Frenchja417Japaneseiu595 Inuktitutzh563Chinesebn4205Banglaccp5394Chakmath7611Thaieo2180 Esperantoccp3551Chakmafr3701Frenchsr6810Serbianeo6894 Esperantoen5103Englishen3807Englishth3498Thaien4968Englishel3918Greekzh2570Chineseel5968Greeksr6882Serbianar3751Arabicccp2060Chakmazh1557Chinesefr2602Frenchfr7141Frenchel6878Greekes6698Spanishth884Thaith151Thaieo7873 Esperantofr2143Frenchccp2621Chakmazh2059Chinesetr4338Turkishen5098Englishel214Greekru862Russianccp1738Chakmaar1277Arabicsr1778Serbianccp3779Chakmaccp1608Chakmaccp5279Chakmael5328Greekth6274Thaisr4612Serbianfr5720Frenchth498Thaichr528Cherokeeen3330Englishth1052Thaiccp3170Chakmabn1313Banglaen16Englishtr5135Turkishar4581Arabicchr2102Cherokeefr7083Frenchbn1617Banglafr7770Frenchja1943Japanesechr5979Cherokeeeo157 Esperantobn528Banglael5470Greekccp4267Chakmafr3224Frenchja6768Japaneseth7531Thaibn6351Banglaes1890Spanishja6250Japaneseja7598Japanesesr4141Serbianccp6499Chakmaes6279Spanishiu4520 Inuktituttr6743Turkishbn4801Banglabn4393Banglael35Greeken1653Englishes251Spanishru8122Russianchr3014Cherokeeel1846Greeksr6664Serbianel2530Greekiu3677 Inuktitutbn3007Banglaeo7307 Esperantofr6093Frenchzh6375Chinesechr6041Cherokeefr6129Frenchtr187Turkishtr7179Turkishja5892Japanesefr3943Frenchfr4932Frenchru3961Russianel139Greeken8073Englishar6043Arabicchr428Cherokeechr809Cherokeesr3097Serbiansr3456Serbianbn4628Banglaeo1473 Esperantoja3923Japaneseja7960Japanesesr6156Serbianel2675Greeken2889Englishes2763Spanishiu2104 Inuktitutiu6003 Inuktitutchr3525Cherokeear8190Arabicel5502Greekeo5705 Esperantoiu3262 Inuktitutbn318Banglaiu5216 Inuktitutth7924Thaitr2508Turkishiu4087 Inuktituteo5511 Esperantoel2142Greeksr4216Serbianccp6452Chakmaeo4796 Esperantoes1974Spanishsr968Serbianel5376Greekfr4409Frenchbn529Banglaar2343Arabicth7078Thaien5384Englishbn5300Banglath1572Thaiel58Greeksr4103Serbianel7635Greekiu3844 Inuktitutja6544Japanesees6759Spanishth5728Thaieo1713 Esperantoccp505Chakmachr4899Cherokeetr6208Turkishbn2376Banglaar2961Arabiciu3063 Inuktitutar2262Arabicbn4965Banglaar6451Arabicccp7892Chakmaen7038Englisheo2228 Esperantotr5632Turkishchr1566Cherokeeeo2508 Esperantoeo7318 Esperantoiu7104 Inuktitutja1725Japanesear1697Arabicru794Russianchr7152Cherokeetr7675Turkishes3061Spanishchr6645Cherokeeiu4223 Inuktitutja170Japaneseen6753Englishru5375Russianja2239Japanesees4998Spanishel2920Greekeo854 Esperantofr6902Frenchja6546Japanesees7783Spanishsr5180Serbianru599Russiansr5452Serbianar5996Arabices6118Spanishen4230Englishel5672Greekiu2157 Inuktitutes7599Spanishel713Greekel4512Greekiu7917 Inuktitutsr3316Serbianccp5000Chakmael8148Greeken1358Englishes8184Spanishfr8083Frenchar2984Arabiceo4245 Esperantotr6281Turkishfr7723Frenchth1297Thaiccp1436Chakmaiu1419 Inuktitutfr589Frenchel4109Greekel2377Greekccp4993Chakmaiu567 Inuktitutiu6096 Inuktitutccp6378Chakmasr5170Serbianzh780Chineseru1833Russianiu6217 Inuktitutar7845Arabictr4469Turkishel1638Greekiu6716 Inuktitutccp1655Chakmaar2463Arabicfr3360Frenchfr2611Frenchfr2225Frenchru2509Russianccp5079Chakmasr8025Serbianbn6861Banglaes6402Spanishen383Englishth242Thaifr7188Frenchth3545Thaibn2628Banglaes931Spanishel1334Greekfr8138Frenchen5066Englishes4682Spanishiu169 Inuktitutsr934Serbianja4768Japanesebn3186Banglasr3929Serbianel1855Greektr2222Turkishtr4467Turkishbn7093Banglafr571Frenchen3666Englisheo4063 Esperantoeo3654 Esperantoccp4189Chakmasr4344Serbiantr6228Turkishbn7226Banglaen1652Englishbn5233Banglaccp6595Chakmaiu4840 Inuktituttr611Turkisheo518 Esperantoeo7560 Esperantosr7907Serbiantr2803Turkishru1978Russianchr2095Cherokeees7437Spanishfr269Frenchru5032Russianar5528Arabicar8058Arabicccp5141Chakmaes3657Spanisheo298 Esperantoeo1516 Esperantochr2724Cherokeear5750Arabices7138Spanishfr1855Frenchfr4770Frenchiu8061 Inuktitutsr2283Serbianru4344Russianar6784Arabicth5293Thaiel2883Greekes3437Spanishja6941Japaneseccp6882Chakmaru1221Russianel7106Greekar4364Arabiceo1899 Esperantoiu555 Inuktitutbn657Banglachr4919Cherokeeen3549Englishen3989Englishchr170Cherokeechr354Cherokeeel8123Greekel4271Greekes7368Spanishth2504Thaiccp4575Chakmachr8027Cherokeezh4913Chinesefr1250Frenchen807Englishar1729Arabiciu2398 Inuktitutja6576Japanesebn5722Banglabn4396Banglaar7458Arabicel6504Greeken7564Englishsr202Serbiansr3206Serbianzh1945Chineseel4789Greekth1656Thaitr4596Turkishzh6161Chinesetr4747Turkishth7143Thaiar5826Arabicja5242Japanesees1439Spanisheo3099 Esperantoar1243Arabicar3291Arabicchr20Cherokeeccp2730Chakmasr8137Serbianbn7678Banglaen1904Englishccp5122Chakmaeo4997 Esperantoru1493Russianen1013Englishiu1766 Inuktitutccp4022Chakmaru4Russianru2820Russianeo6665 Esperantoes2615Spanishfr4728Frenchel3643Greekel1290Greekzh6245Chineseru5520Russianel6441Greekeo4764 Esperantoccp4944Chakmaeo6719 Esperantotr4252Turkishbn3389Banglachr4050Cherokeeeo4420 Esperantoth6010Thaien6017Englishel1342Greekja730Japaneseth4041Thaiccp2723Chakmaja2181Japanesetr7046Turkishsr7269Serbiansr8117Serbianbn3399Banglaja1962Japanesees5059Spanishbn4735Banglaeo1892 Esperantoeo5764 Esperantoth203Thaies1396Spanishtr2635Turkishchr169Cherokeees7896Spanishchr6343Cherokeeth6425Thaien7108Englishfr4784Frenchbn6852Banglachr1248Cherokeeja7507Japaneseth6516Thaiel8119Greekar1191Arabicccp3912Chakmaiu8151 Inuktitutru3402Russiantr125Turkishzh7252Chinesefr7852Frenchtr588Turkishtr1251Turkishja2003Japaneseiu7613 Inuktituttr4113Turkishchr2076Cherokeeel5105Greekiu2808 Inuktitutchr2277Cherokeesr2002Serbianeo3467 Esperantoen623Englishccp6263Chakmafr7428Frenchchr6151Cherokeees934Spanishja4872Japaneseja5985Japaneseeo2052 Esperantobn2338Banglachr3071Cherokeechr2031Cherokeeru5107Russianar1679Arabicsr6696Serbianth3959Thaitr8043Turkishes5406Spanishes3485Spanishth2055Thaiel6723Greekccp6440Chakmaes4726Spanishel7257Greekes3073Spanishccp8179Chakmaccp6041Chakmaja3559Japaneseja6305Japaneseth5234Thaiel3007Greekel7879Greekar2298Arabicccp7856Chakmatr5643Turkishja2191Japanesees3767Spanishja970Japaneseeo7088 Esperantoel3757Greeksr6459Serbianccp2720Chakmabn3046Banglael711Greekes6083Spanishccp1462Chakmaja317Japanesebn1014Banglaiu7669 Inuktitutar3501Arabicru8063Russianbn5901Banglaru2445Russianru3388Russianel4757Greekar1566Arabictr2452Turkishen4899Englisheo3232 Esperantosr8078Serbianth1118Thaies912Spanishja7772Japanesees5774Spanishchr2575Cherokeeen4678Englishsr1072Serbianbn3034Banglaeo792 Esperantoar4550Arabicen5837Englishbn4493Banglaar4705Arabicchr5704Cherokeeen3312Englishar456Arabicbn1499Banglaar7023Arabicar5116Arabicar5154Arabicar946Arabicen2569Englishes7997Spanisheo1162 Esperantozh7640Chineseccp5963Chakmaeo1066 Esperantoth3895Thaien4223Englishja6231Japaneseiu7621 Inuktituteo1024 Esperantoel6630Greekiu678 Inuktitutsr5530Serbianbn917Banglaar5594Arabictr7349Turkishbn8169Banglaja1976Japanesesr1342Serbianiu5185 Inuktitutccp5556Chakmael6106Greekru2617Russianzh7476Chinesear4762Arabicen1072Englishiu7821 Inuktitutbn6894Banglaes1938Spanishbn1480Banglaar5497Arabicbn8083Banglael4335Greekes295Spanishiu6420 Inuktitutru6927Russianar3328Arabicar6512Arabiczh7750Chinesezh1889Chinesees3688Spanishar2059Arabicen7105Englishiu7418 Inuktitutchr4706Cherokeeen3456Englishiu5359 Inuktitutsr4647Serbiantr3645Turkishar2129Arabiciu3587 Inuktitutbn3002Banglaiu991 Inuktitutiu548 Inuktitutccp1357Chakmael7636Greekeo5105 Esperantofr6760Frenchccp2731Chakmachr7218Cherokeesr4653Serbianen6348Englishes909Spanishes6882Spanishchr4419Cherokeeru4640Russiansr231Serbianiu4033 Inuktitutchr412Cherokeeiu4807 Inuktitutsr7436Serbianiu2026 Inuktitutru1071Russianar2677Arabicbn1628Banglafr7815Frenchar1210Arabiceo7863 Esperantoes4507Spanishbn5112Banglaccp4260Chakmazh7105Chinesebn5231Banglaccp3460Chakmabn7078Banglaccp7748Chakmaja7894Japanesetr7708Turkishbn1276Banglaru7729Russianen874Englishar4084Arabicccp4467Chakmachr2206Cherokeeja2256Japaneseru6918Russianchr1980Cherokeeth7443Thaitr3180Turkishbn6829Banglabn7225Banglaes356Spanishja4613Japanesezh5287Chinesesr1467Serbianeo6638 Esperantoth3585Thaizh4686Chineseru2253Russianel466Greeksr146Serbianja1359Japaneseccp6591Chakmasr3391Serbianccp7065Chakmafr3570Frenchsr4521Serbianzh1482Chinesees4335Spanishru6265Russianes1160Spanishes7414Spanishtr3433Turkisheo2019 Esperantotr6504Turkishbn4386Banglaeo3967 Esperantotr6386Turkishfr7636Frenchar6794Arabicsr2512Serbianth7870Thaizh1247Chineseiu5048 Inuktitutccp7979Chakmaeo7526 Esperantoel2222Greekes6274Spanishja2200Japaneseth3604Thairu7403Russiantr7714Turkishtr7950Turkishzh389Chineseeo7317 Esperantoiu2347 Inuktitutth7940Thaieo3263 Esperantoccp5597Chakmael6013Greekzh7101Chineseeo4840 Esperantoccp5685Chakmafr4012Frenches4255Spanishccp3865Chakmachr5573Cherokeechr4569Cherokeeth4471Thaiel4317Greekja3410Japanesesr3982Serbianen3476Englisheo2974 Esperantoes2827Spanisheo5756 Esperantoja1620Japanesezh6016Chineseen7256Englishsr4172Serbianel7712Greekar2725Arabicru7138Russianccp3597Chakmaar283Arabicel7332Greekfr675Frenchru5671Russianiu2240 Inuktitutth5153Thaitr5434Turkishsr6942Serbianchr2547Cherokeeccp4457Chakmafr987Frenchbn5455Banglasr2045Serbianiu6168 Inuktituttr452Turkishes7311Spanishbn2756Banglael6078Greekfr6672Frenchru8130Russianzh4702Chinesees565Spanishchr7328Cherokeear6406Arabiceo263 Esperantosr1280Serbianccp2987Chakmaar8039Arabiciu508 Inuktitutbn6976Banglaccp5026Chakmachr7136Cherokeeiu4153 Inuktitutbn1351Banglaiu2823 Inuktitutth2095Thaisr4682Serbianccp685Chakmaeo417 Esperantozh3165Chineseth1085Thaisr3664Serbiansr2787Serbianzh3915Chineseru5191Russiansr5043Serbianja6636Japanesesr1440Serbianru5855Russianen1482Englishzh5881Chineseth1623Thaiiu5131 Inuktituttr241Turkishen3878Englishtr6178Turkishzh6134Chinesezh6174Chineseeo4274 Esperantoru4739Russianar8035Arabicccp884Chakmaja3770Japaneseja1570Japanesear5527Arabicsr5129Serbianes7158Spanishzh4332Chineseel7550Greekccp7184Chakmaen175Englishzh4341Chineseel6427Greekth2124Thaiel3336Greeken315Englishen931Englishfr6949Frenchru6808Russianccp893Chakmachr4980Cherokeeth7715Thaieo884 Esperantozh3233Chinesefr2924Frenchru580Russianfr2046Frenchiu4773 Inuktitutru3132Russianar7937Arabicchr1934Cherokeeel4516Greekiu3471 Inuktituten7831Englishja3151Japanesezh1830Chineseel3145Greekth5070Thaith5328Thaichr4232Cherokeeeo1507 Esperantofr955Frenchccp1504Chakmaen853Englishes3091Spanishfr5630Frenchchr1208Cherokeeeo2248 Esperantoiu3651 Inuktitutth6695Thaifr3637Frenchar718Arabicar4096Arabicja2490Japanesebn7835Banglaen3212Englishchr143Cherokeesr1084Serbiansr6803Serbianel872Greekiu5148 Inuktituteo6343 Esperantoja4834Japanesesr4458Serbianru585Russianes1282Spanishzh7595Chinesear7996Arabicen7727Englishccp1682Chakmasr6127Serbianbn2040Banglazh1856Chineseeo7787 Esperantoen3701Englishen3220Englishes660Spanishchr2652Cherokeeru6192Russianru707Russianeo2220 Esperantoar2360Arabicar6620Arabicel3946Greeksr7483Serbianja2024Japaneseiu6669 Inuktituttr6938Turkishar3118Arabicbn4751Banglaar7149Arabicbn2864Banglaccp5784Chakmatr2823Turkishfr3105Frenchchr5583Cherokeechr7670Cherokeesr6071Serbianzh87Chineseen2120Englishiu2148 Inuktitutiu1060 Inuktitutja724Japanesetr1893Turkishel2992Greekth647Thaiiu1101 Inuktitutsr3619Serbianth6752Thaibn4826Banglaes1051Spanishar4973Arabictr5081Turkishbn7389Banglafr1753Frenchbn7966Banglaccp5231Chakmaar4783Arabiceo3459 Esperantoeo5086 Esperantoiu1291 Inuktitutfr2131Frenchzh3255Chineseth3581Thaien6193Englishtr5420Turkishchr402Cherokeeel1149Greekes494Spanishja6878Japanesefr7720Frenchbn4290Banglaen4486Englishes5999Spanishen908Englishel5571Greekchr3166Cherokeefr770Frenchar7778Arabiciu1264 Inuktitutar4360Arabicja2861Japaneseiu8047 Inuktitutfr2139Frenchel7390Greekbn2555Banglazh1224Chinesear7116Arabiczh5784Chinesechr4189Cherokeees1572Spanishen6027Englishes7700Spanishel7434Greekiu264 Inuktitutja2173Japaneseja3529Japaneseen3444Englishfr5428Frenchfr6879Frenchtr474Turkishar3658Arabiczh7205Chinesetr7247Turkishel6383Greekchr2088Cherokeesr2575Serbianel5953Greekes2260Spanishzh1785Chineseeo7680 Esperantoen2825Englishar5424Arabicchr6232Cherokeeth397Thaien5421Englisheo3249 Esperantoth1199Thaiiu475 Inuktitutth5693Thaith7174Thaien34Englishbn2224Banglaen7885Englishiu5031 Inuktituttr1710Turkishth195Thaizh3675Chineseccp3761Chakmazh3961Chinesebn2658Banglabn6382Banglaru7919Russiantr64Turkishbn1481Banglaes6950Spanishar2580Arabiczh3982Chinesefr7220Frenchru278Russianzh7158Chineseth2491Thaies3861Spanishfr1316Frencheo4663 Esperantotr5126Turkishru2037Russianzh3013Chineseen7653Englishsr3058Serbianzh545Chineseeo2496 Esperantoes3016Spanishel4178Greekja2146Japanesesr3862Serbianiu1150 Inuktitutru2916Russiantr3663Turkishsr5497Serbianel4116Greekru174Russianzh6048Chineseja5050Japaneseeo1156 Esperantochr2730Cherokeeiu1200 Inuktitutar5302Arabicja5927Japaneseru5144Russianel7616Greektr7094Turkishes6946Spanishel2474Greekiu1165 Inuktitutchr7254Cherokeeccp4227Chakmaeo101 Esperantozh1515Chineseru8026Russianzh3411Chinesezh837Chineseen6391Englishru2904Russianth3629Thaies6850Spanishel2951Greektr5405Turkishel1491Greekfr2199Frenchja1426Japaneseccp3101Chakmachr7308Cherokeesr5702Serbiantr7318Turkishbn1225Banglaes5545Spanishru2624Russianth2093Thaiar5285Arabicar2691Arabictr573Turkishel3698Greekccp586Chakmael3112Greekes189Spanishchr4995Cherokeeel1115Greekar3059Arabictr1553Turkishzh7062Chineseccp7344Chakmazh5345Chinesear709Arabicth1547Thaies2502Spanishel6253Greekiu4281 Inuktitutja6452Japanesefr7108Frenchar2072Arabicbn2116Banglaes7748Spanishsr142Serbianeo4808 Esperantozh991Chinesear5692Arabicccp609Chakmaeo4140 Esperantofr3873Frenches3223Spanishiu5898 Inuktituten2849Englishsr59Serbiantr3806Turkishja256Japaneseru407Russianes3727Spanishiu1335 Inuktitutel8185Greekccp4422Chakmaja2207Japaneseen7000Englishzh7505Chinesear3172Arabicbn1385Banglachr4888Cherokeebn5381Banglaru463Russianes1267Spanishsr3972Serbianja1314Japanesees6889Spanishsr4351Serbianth1237Thaibn2610Banglaru1570Russianru159Russianzh7247Chinesees5096Spanishsr2427Serbianzh7997Chinesefr1234Frenchzh7Chinesees5142Spanishfr5735Frenchbn1526Banglael2196Greektr3774Turkishtr7435Turkisheo7155 Esperantochr4681Cherokeefr4189Frenchiu1082 Inuktituttr797Turkishth2709Thaiel3837Greekzh2563Chineseiu2747 Inuktituttr5279Turkishtr6609Turkishzh6186Chineseja4857Japanesesr7674Serbianen7012Englishth6966Thaibn7648Banglabn696Banglaru3767Russianel2264Greekel5852Greeksr7673Serbianchr6372Cherokeeru387Russianes730Spanishbn7214Banglaar5591Arabicen3499Englishth3318Thaitr7924Turkishiu4418 Inuktituttr4373Turkishfr2874Frenchccp5114Chakmasr5450Serbianth7840Thaitr7902Turkishar6165Arabicen2874Englishja4084Japanesear1894Arabicbn2284Banglaccp7338Chakmafr3174Frenches6298Spanishsr26Serbianar2891Arabicar1620Arabicel6440Greeksr4877Serbianes2210Spanishja2743Japanesesr1571Serbiantr1008Turkishru1839Russianccp4461Chakmaja5126Japaneseccp762Chakmaen6742Englishiu901 Inuktitutiu5356 Inuktituten3609Englishchr1398Cherokeeccp1807Chakmaes4177Spanishzh6818Chineseen6502Englishiu3114 Inuktituttr1113Turkishtr7036Turkishar5521Arabictr6558Turkishccp7870Chakmachr5625Cherokeebn5074Banglaru2679Russianbn6436Banglaeo1831 Esperantoen643Englishar3549Arabiczh2040Chinesetr97Turkishel287Greektr1852Turkishccp5674Chakmaja6905Japaneseccp3771Chakmael3566Greeksr5895Serbianes2257Spanishzh5363Chinesechr6076Cherokeezh7489Chinesesr835Serbianen6342Englishru5558Russianeo3284 Esperantoar7966Arabicar3436Arabicchr5770Cherokeeth4403Thaibn6392Banglaru6815Russiantr2155Turkishzh5260Chinesechr5526Cherokeeiu7881 Inuktitutfr6924Frenchccp3216Chakmaes7515Spanishar4668Arabicbn6388Banglaen7442Englisheo7239 Esperantosr2678Serbianzh3996Chineseen2550Englishen5366Englishzh2773Chineseen5961Englishel6573Greekru3360Russianbn7742Banglaar3529Arabicbn3876Banglaeo5967 Esperantoes5588Spanishfr2179Frenchtr802Turkishel2048Greekbn5008Banglaja4907Japaneseja941Japaneseth2909Thaiel6600Greekja567Japaneseel1887Greekccp1767Chakmafr7424Frenchru6275Russianbn7854Banglafr5315Frenchsr4374Serbianel4362Greektr1831Turkishchr1356Cherokeetr3738Turkishes3791Spanishar4446Arabices5626Spanishiu2999 Inuktitutiu5953 Inuktitutiu7109 Inuktitutes5106Spanishth6729Thaija5348Japaneseccp13Chakmazh7227Chineseel5947Greekru5708Russianccp2145Chakmael5892Greeken3362Englishfr581Frenchel468Greekel6734Greeken4453Englishiu474 Inuktitutar245Arabicth3544Thaichr6227Cherokeees6135Spanishar4908Arabices2200Spanishen7088Englishen6160Englishja5923Japanesebn479Banglaes4968Spanishes1467Spanishbn5562Banglaeo7759 Esperantoeo6559 Esperantoiu1300 Inuktitutar3336Arabiczh3446Chinesefr3929Frenchel3365Greekel552Greeken6762Englishfr6139Frenchccp602Chakmaru8143Russianes4874Spanishru5254Russianchr2051Cherokeeja6884Japaneseja7312Japaneseru391Russianar220Arabiciu4551 Inuktituteo4200 Esperantoth6831Thaieo3917 Esperantobn6812Banglath6249Thaizh3026Chinesechr1417Cherokeeth2548Thairu539Russianar3155Arabicru3528Russianccp5271Chakmaeo1786 Esperantobn5357Banglaeo4126 Esperantoiu370 Inuktitutzh7630Chinesefr4673Frenchel7648Greeksr7807Serbiantr3828Turkishen6779Englishchr4674Cherokeear1665Arabicen4556Englishth365Thaija2328Japaneseiu1261 Inuktitutth7712Thaibn4056Banglaiu1359 Inuktitutchr2195Cherokeeiu3634 Inuktitutfr336Frenchru1195Russianchr6879Cherokeeru5834Russianbn7286Banglaja224Japaneseccp3274Chakmabn4303Banglaen4074Englisheo2290 Esperantozh740Chineseiu7833 Inuktitutel5674Greekzh7530Chineseeo5656 Esperantoccp2843Chakmaar2614Arabicen7621Englishbn420Banglaru4664Russianchr5590Cherokeeeo7016 Esperantoja63Japaneseen6924Englishja2842Japaneseel3770Greeksr6898Serbianeo4669 Esperantofr4594Frenchzh4078Chinesesr162Serbiantr6063Turkishru5498Russianbn1350Banglaccp1602Chakmafr7064Frenchsr4080Serbianfr2166Frenchru1477Russiantr3168Turkishbn1594Banglaes102Spanishen5779Englishfr7871Frenchccp4122Chakmael3484Greekru5135Russianiu5917 Inuktitutchr1660Cherokeeen3308Englishru1503Russiantr2014Turkishel3133Greekeo2613 Esperantoth5075Thaifr1916Frenchen7836Englishfr494Frenchru4840Russianchr5741Cherokeeth7369Thaifr7828Frenchzh4773Chinesefr6702Frenchen1221Englishes6907Spanishja7051Japanesetr6377Turkishja4897Japaneseen6751Englishsr1457Serbianar1956Arabicfr7239Frenchel5767Greekccp5895Chakmaiu8144 Inuktitutar7021Arabiceo4100 Esperantoccp508Chakmatr8075Turkishiu2043 Inuktitutzh7838Chinesees2472Spanishfr255Frenchfr6035Frenchsr6449Serbianru354Russianth7244Thaija5541Japaneseel3272Greekiu3621 Inuktitutar3150Arabicsr3796Serbianen4689Englishbn3539Banglath3350Thairu2573Russianfr6894Frenchiu6313 Inuktitutchr4798Cherokeees3916Spanishbn6255Banglaeo3035 Esperantoja7230Japanesechr6244Cherokeebn7730Banglatr866Turkishbn4851Banglafr7532Frenchccp1848Chakmafr2838Frenchja3078Japaneseel2679Greekru2484Russianchr7265Cherokeefr5108Frenchja4622Japaneseel931Greekiu1030 Inuktitutbn1892Banglaiu996 Inuktitutja1915Japaneseiu985 Inuktitutth130Thaifr2600Frenchtr2802Turkishbn5085Banglachr5890Cherokeeja560Japaneseth6002Thaiar7741Arabicel808Greekel3343Greekth6080Thaiiu1303 Inuktituteo833 Esperantoeo950 Esperantoru7035Russianru5337Russianru5504Russiantr1959Turkishel71Greekbn1342Banglaar6793Arabiceo5343 Esperantofr3377Frenchja2456Japanesear937Arabicth6443Thaith152Thaisr1681Serbianchr1622Cherokeear3712Arabicel4074Greekes6695Spanishes5871Spanishes1250Spanishru209Russianbn7051Banglaiu1068 Inuktituten7362Englishru1791Russianeo6202 Esperantobn6268Banglaiu8185 Inuktitutru2705Russianeo1178 Esperantoes3451Spanishccp279Chakmasr33Serbiansr2293Serbianes6329Spanishchr3505Cherokeetr6481Turkisheo3371 Esperantoja2920Japanesebn3538Banglaru1409Russianen2089Englishja1537Japanesebn7288Banglatr566Turkishen704Englishfr3574Frenchfr5163Frenchiu5068 Inuktitutfr4309Frenchsr6792Serbianen841Englishen3162Englishchr5707Cherokeezh5702Chinesees6662Spanishiu2750 Inuktitutbn7402Banglaja1478Japanesezh3874Chineseeo4668 Esperantoccp7788Chakmaes5742Spanishru5167Russianar7244Arabicbn756Banglaeo1867 Esperantobn1046Banglaar2133Arabictr2421Turkishiu238 Inuktitutchr1858Cherokeefr5856Frenchel1484Greekiu3415 Inuktitutth2072Thaies6047Spanishzh2782Chinesezh7686Chinesear5502Arabicru6208Russiansr3847Serbianar1064Arabicel2382Greekchr2265Cherokeeja2013Japanesezh2030Chineseen7843Englisheo3313 Esperantozh5667Chinesees2245Spanishfr1065Frenchar7192Arabicccp2262Chakmaccp2664Chakmaeo4196 Esperantoja750Japanesechr5894Cherokeeel556Greekel5766Greekeo6625 Esperantoar5611Arabices3557Spanishes3176Spanishsr2611Serbiantr2897Turkishel5473Greeksr5654Serbiantr7325Turkishen2137Englishel714Greekth6472Thaichr4764Cherokeebn4515Banglazh3781Chineseen7597Englishzh8056Chineseja1036Japanesebn1727Banglaiu6514 Inuktitutsr1809Serbianbn203Banglaar4236Arabicbn1383Banglath6574Thaisr5297Serbianchr2096Cherokeeen6841Englishru3036Russianbn5509Banglatr2020Turkishth424Thaies5640Spanishfr5041Frenchsr1083Serbianen4122Englishfr3964Frenchfr7380Frenchru5546Russianja4796Japaneseru6547Russianru3939Russianen7092Englisheo5034 Esperantobn4375Banglaes140Spanishes7085Spanishsr6982Serbiantr1298Turkishiu1757 Inuktitutsr5251Serbianchr1941Cherokeees4481Spanishes6682Spanishja7896Japaneseru96Russianen5283Englishth2313Thaitr5825Turkishbn7532Banglaccp3019Chakmael3637Greekth5684Thaiar1640Arabicja3074Japaneseel6032Greekccp4997Chakmaen5433Englishzh6162Chinesechr7013Cherokeeel399Greekel7818Greekru1736Russianth1466Thaichr5123Cherokeeccp1031Chakmael5143Greekzh723Chinesefr4874Frencheo1254 Esperantobn7594Banglaeo7084 Esperantoja8184Japanesefr8172Frenchar1099Arabicfr2679Frencheo1796 Esperantoccp6407Chakmaru2251Russianth5148Thaiccp2101Chakmath1778Thaizh2332Chineseiu1223 Inuktituten4655Englishes702Spanishes5984Spanishru2812Russianen7838Englishru39Russianzh7477Chineseru3730Russianth6612Thaiar7397Arabicen8015Englishes2062Spanishzh4129Chineseth5598Thaifr630Frenchja6445Japaneseel2547Greekru1618Russianth5850Thaies6813Spanishzh6043Chinesezh7914Chineseeo4402 Esperantosr5571Serbianel5565Greekar2066Arabicfr7661Frenchja7390Japaneseccp5760Chakmaja7240Japanesechr4462Cherokeeel5636Greekru3144Russianen2528Englishfr5209Frenchiu741 Inuktitutja7551Japaneseru7489Russiansr3398Serbianth2711Thairu6050Russianel3840Greekeo2458 Esperantosr3946Serbianiu2923 Inuktitutiu5657 Inuktitutbn5227Banglaru7413Russianar7849Arabicfr6623Frenchth98Thaith3618Thaith4602Thaizh1303Chineseru1705Russianel7988Greeksr2106Serbianen5734Englishfr1684Frenchar4240Arabicchr3705Cherokeees5331Spanishen4268Englishiu3769 Inuktitutja76Japaneseccp1012Chakmaccp7929Chakmael6155Greeken1836Englishen4800Englishiu7813 Inuktitutfr2713Frenchen7137Englishiu5862 Inuktitutchr7113Cherokeetr925Turkishchr6538Cherokeees623Spanishru5054Russianja795Japanesezh8088Chineseccp269Chakmaes7134Spanishiu1024 Inuktitutchr6096Cherokeeiu6971 Inuktitutja1684Japaneseru4683Russianth5472Thaiiu3843 Inuktitutzh6682Chinesezh1836Chineseccp526Chakmafr2316Frenchth1617Thaibn1372Banglaccp2068Chakmaru1581Russiantr5314Turkishar4706Arabicen7626Englishtr5745Turkishsr5057Serbiantr6866Turkishen3074Englishccp3148Chakmasr4366Serbiansr3283Serbianiu2654 Inuktitutbn3273Banglaen5590Englishzh7573Chineseeo4474 Esperantoja6332Japanesesr7147Serbianchr4190Cherokeeth2814Thaiccp837Chakmaccp2695Chakmael5810Greekfr7594Frenchbn6490Banglafr6649Frenchth3378Thaizh1648Chineseru6359Russiansr5912Serbianeo6035 Esperantoja3388Japanesees2726Spanishfr4390Frenchth1727Thaiel1587Greekfr4065Frenches7053Spanishen6603Englisheo2707 Esperantoja3474Japaneseeo6748 Esperantoes5170Spanishel2361Greekiu7288 Inuktitutbn4161Banglaeo6454 Esperantotr1426Turkishfr4342Frencheo960 Esperantosr1270Serbianth5119Thaibn2602Banglael4682Greekiu6766 Inuktitutar6079Arabicar47Arabicen896Englishfr6664Frenchtr1386Turkishiu2298 Inuktitutru1285Russianeo5317 Esperantoru6793Russianfr3683Frenchccp381Chakmaes933Spanishbn4228Banglaiu6324 Inuktitutja85Japaneseen2814Englishen7216Englishfr1423Frenchsr4815Serbianth7088Thaitr6137Turkishzh2410Chinesezh2568Chinesefr4333Frenchsr67Serbianccp1991Chakmaiu2262 Inuktitutchr728Cherokeeiu3693 Inuktitutru7956Russiantr3042Turkishtr5124Turkishbn5363Banglasr7737Serbianzh3834Chinesebn6266Banglath6559Thaiar7571Arabicar1864Arabiceo3256 Esperantoeo4580 Esperantoeo5582 Esperantozh8185Chinesebn6182Banglafr2440Frenches8041Spanishchr4427Cherokeesr8119Serbianel1148Greekchr7672Cherokeefr772Frenchth4542Thaibn1106Banglael6509Greekes3630Spanishfr353Frenchfr5303Frenchiu7883 Inuktitutth2Thairu5941Russiansr3766Serbianth4212Thaitr7142Turkishbn7036Banglael7461Greekbn6049Banglaru2665Russianen5487Englishzh2260Chinesebn7117Banglath5856Thaitr4159Turkishar3226Arabicccp3986Chakmaar5615Arabicfr3337Frenchtr7080Turkishzh7208Chinesear2521Arabicja3032Japanesesr2270Serbianccp3607Chakmaar964Arabicccp1536Chakmaccp3575Chakmaiu7268 Inuktitutar7887Arabicfr2076Frenchzh7187Chineseel7951Greekes5472Spanishru7718Russiansr7967Serbianchr7478Cherokeeen832Englishbn6687Banglaru2274Russianbn1120Banglael481Greekes3987Spanishtr581Turkishzh875Chinesechr6518Cherokeesr5496Serbianiu7377 Inuktitutbn6477Banglaar5431Arabicchr3720Cherokeeja1726Japaneseru2439Russiantr5210Turkishtr7373Turkishfr2271Frenchiu2498 Inuktitutccp2604Chakmath2818Thaizh2234Chinesebn3460Banglaes611Spanishiu59 Inuktitutccp915Chakmaja3468Japanesechr2395Cherokeebn6516Banglaar274Arabices6672Spanishzh1282Chinesebn1672Banglafr2606Frenches5759Spanishru3994Russianel1911Greekja7027Japaneseru5592Russianccp7635Chakmasr5280Serbianchr1494Cherokeeel5621Greekar5160Arabiceo7694 Esperantobn477Banglaes4744Spanishel4899Greekru7101Russianiu6188 Inuktituten3826Englishel545Greekel4980Greekel3094Greekccp173Chakmaes7918Spanisheo4810 Esperantoccp1148Chakmafr3571Frenchsr7990Serbianel6974Greektr6519Turkishth1204Thaibn3997Banglaja7564Japanesezh3711Chineseiu6833 Inuktitutel5993Greekth1002Thaieo2790 Esperantoccp3799Chakmath1017Thaibn6626Banglaar1976Arabices3962Spanishsr7725Serbianen77Englishen6644Englishfr435Frenches274Spanishfr5764Frenchth1690Thaisr2150Serbianth3271Thaiiu1730 Inuktitutar7848Arabicccp7378Chakmath1196Thaieo1958 Esperantoccp4037Chakmatr2017Turkishccp6758Chakmaeo3567 Esperantotr2666Turkisheo6467 Esperantoccp538Chakmael7624Greektr2986Turkishzh8181Chinesezh1318Chinesefr1259Frenchen3909Englishes6302Spanishja2949Japanesebn2823Banglasr6869Serbianes7585Spanishbn4395Banglaccp752Chakmaccp2211Chakmasr5362Serbianth7969Thaieo5553 Esperantochr8106Cherokeeel2671Greekfr6797Frenchru6841Russianccp5716Chakmaja4275Japaneseru4900Russianen2456Englishes4151Spanishchr4222Cherokeeja4354Japanesees1317Spanishen5763Englishth4858Thaieo2873 Esperantoccp6036Chakmafr6869Frenchiu359 Inuktitutbn6864Banglaccp3321Chakmaja1816Japaneseiu1233 Inuktitutar3929Arabicar4713Arabiciu5601 Inuktitutth3171Thaibn664Banglabn7437Banglafr7222Frenchth3542Thaibn3036Banglaru5611Russianth4366Thaiar3347Arabicccp6964Chakmatr1680Turkishchr878Cherokeechr2736Cherokeees2452Spanishru6598Russiantr7759Turkishel510Greekja1510Japanesetr7792Turkisheo7545 Esperantoccp383Chakmatr7754Turkishtr2216Turkishiu8180 Inuktitutccp3443Chakmath7692Thairu733Russianiu5965 Inuktitutsr6381Serbianel8064Greeksr4617Serbianth4218Thaizh2636Chinesechr4380Cherokeeel7552Greekfr4088Frencheo142 Esperantoiu4797 Inuktitutru1781Russianzh901Chinesefr4070Frenchen7356Englishru2250Russiantr3441Turkisheo551 Esperantoar800Arabicchr1336Cherokeefr6770Frenchsr5618Serbianth7063Thaith1233Thaiel2458Greektr4446Turkishru6797Russiansr321Serbianru6423Russianel7399Greekth1952Thaifr5728Frenchar3266Arabicchr6306Cherokeees2664Spanishtr391Turkishen6859Englishzh2917Chineseen7551Englishfr5430Frenchar5391Arabicru784Russianbn1352Banglafr2739Frenchzh5682Chineseccp5791Chakmaeo5842 Esperantofr3197Frenchtr1356Turkishbn2198Banglaiu5618 Inuktituttr3454Turkishar7030Arabiceo7114 Esperantobn6698Banglachr4584Cherokeeccp8187Chakmafr1708Frenchth3448Thaies8106Spanishen1212Englishiu4132 Inuktitutru7428Russianbn2045Banglaeo2500 Esperantoes6764Spanisheo85 Esperantoes3444Spanishfr7549Frenches7342Spanishiu2992 Inuktitutiu5572 Inuktitutccp1671Chakmasr7547Serbianth4497Thaies4282Spanisheo7762 Esperantoiu6713 Inuktitutja6433Japanesear4685Arabicja1657Japanesezh2286Chinesechr2237Cherokeezh444Chineseth5785Thaibn4301Banglasr3984Serbianeo5339 Esperantoiu6905 Inuktitutes5627Spanishsr6025Serbianfr163Frenchja240Japanesear5358Arabicel2758Greekeo7752 Esperantoiu7841 Inuktitutsr1908Serbianiu4241 Inuktitutth6519Thaien4434Englishja982Japanesezh2003Chinesesr1743Serbiansr4528Serbianbn79Banglafr4592Frenchbn2597Banglaes7840Spanishar334Arabicar5858Arabicccp7086Chakmaeo7439 Esperantofr2081Frenchja8071Japanesezh1166Chinesear2028Arabicbn3521Banglaiu44 Inuktitutsr4128Serbiansr5212Serbianja6225Japanesees2674Spanishbn5009Banglaccp833Chakmaes2361Spanishru5603Russianar5891Arabicchr1211Cherokeechr2173Cherokeeeo238 Esperantoeo3720 Esperantoccp2498Chakmabn5319Banglabn6651Banglaiu8122 Inuktitutel2541Greekes4804Spanishfr4153Frenches3046Spanishen7416Englishel5539Greekfr7962Frenchja1674Japaneseeo4728 Esperantoru7193Russianeo5237 Esperantosr3970Serbianel2650Greekja689Japanesesr5072Serbianiu6729 Inuktitutth512Thaisr8077Serbianzh3875Chineseiu5546 Inuktitutes987Spanishsr3102Serbianbn4570Banglaes3027Spanishes3235Spanishtr3516Turkishru1192Russianar1325Arabicsr1068Serbianfr6288Frenchiu3898 Inuktitutth3803Thaitr5075Turkishtr7115Turkishel7598Greekru7947Russianzh3526Chineseccp1580Chakmaeo1634 Esperantoiu4728 Inuktitutar4033Arabicbn4143Banglaar48Arabictr1592Turkishru1759Russianar840Arabicfr3558Frenchiu5728 Inuktituten6947Englishth5852Thaiccp3522Chakmaru2554Russianes7608Spanishru7774Russiantr4063Turkishru1935Russianes5948Spanishccp5616Chakmaeo1348 Esperantoiu2783 Inuktitutccp4281Chakmaiu7705 Inuktitutel2843Greekja2721Japaneseth1538Thaien7254Englishja7703Japaneseth519Thaies355Spanishiu4454 Inuktitutru1741Russianccp3890Chakmazh5418Chineseeo5997 Esperantoru1903Russianzh2061Chinesear1323Arabiciu2049 Inuktitutar4802Arabicja6796Japaneseel4581Greekzh4277Chinesetr5180Turkishsr5807Serbianth6329Thaien2737Englishbn2967Banglazh2671Chineseru3744Russiantr6693Turkishen2536Englishru2143Russianar2694Arabicel5666Greekth4847Thaiccp3073Chakmath4448Thairu2083Russianchr4511Cherokeetr6918Turkisheo5054 Esperantobn6356Banglaru4716Russianchr419Cherokeeeo4797 Esperantoccp6043Chakmaeo7038 Esperantoth3646Thaiccp3208Chakmazh7457Chineseja3992Japanesefr1993Frenchar3980Arabicen8053Englishen3178Englishja7355Japanesezh328Chinesetr4684Turkishccp4146Chakmatr4553Turkishes735Spanishccp6179Chakmaccp6642Chakmael3552Greekar3154Arabicccp712Chakmasr1164Serbiantr7237Turkishar2908Arabiczh1231Chinesebn6385Banglael5260Greeksr4078Serbianth6846Thaiel3793Greekeo3524 Esperantoiu7926 Inuktitutccp7889Chakmaru668Russianru3945Russianel117Greekes7055Spanishth2375Thaitr2088Turkishchr5743Cherokeeeo6951 Esperantoen1825Englisheo5713 Esperantosr3759Serbianiu4791 Inuktituteo4698 Esperantoth5275Thaibn5672Banglaiu1046 Inuktitutja3291Japaneseru1700Russianccp623Chakmaru5006Russianel4261Greekel3602Greekja7057Japanesefr5670Frenchja5992Japanesezh2852Chineseja4261Japaneseth4763Thaieo5081 Esperantoeo8118 Esperantoiu6555 Inuktitutiu1674 Inuktitutzh7863Chinesechr7435Cherokeeiu3961 Inuktitutbn7249Banglachr3664Cherokeeth3807Thaichr7335Cherokeeel962Greektr1385Turkishja2772Japanesesr5770Serbianth7115Thaiar4441Arabiceo4974 Esperantoeo7334 Esperantochr5703Cherokeefr3771Frenchfr5874Frenchccp1884Chakmaes5190Spanishsr801Serbianru8117Russianth7355Thaiccp3056Chakmafr3316Frenchfr3575Frenchbn467Banglaes2330Spanishfr3422Frenchar7651Arabicsr5960Serbianccp7503Chakmaen1766Englishen5887Englishchr5967Cherokeear3713Arabiceo2945 Esperantoes5597Spanishes1831Spanishbn681Banglaar2540Arabicja7677Japaneseru3007Russianen7910Englishth2811Thaiccp152Chakmaar8166Arabicsr360Serbianru3190Russianzh7973Chineseiu1209 Inuktitutccp1712Chakmaccp790Chakmaar2086Arabicth8144Thaith527Thaifr5795Frenches3933Spanishchr6303Cherokeeeo5065 Esperantoen6630Englishsr5767Serbianen7046Englishtr4368Turkishfr3988Frencheo1616 Esperantoth329Thaibn5927Banglael7874Greekja6178Japanesebn7955Banglath2461Thaieo4857 Esperantotr6170Turkishbn2716Banglaeo3096 Esperantoiu5778 Inuktitutth7542Thaiiu5362 Inuktitutes4531Spanishel4748Greekccp2Chakmaen2717Englisheo1259 Esperantoeo4144 Esperantoes4301Spanishru5814Russianccp6113Chakmatr3979Turkishccp5006Chakmatr6666Turkishru5284Russianchr6484Cherokeefr3711Frenchen3677Englishchr1603Cherokeesr8058Serbianzh4482Chineseen5971Englishiu7180 Inuktitutzh2984Chineseccp834Chakmaru2134Russianeo3701 Esperantoth6377Thaiel7362Greeken5855Englishth4125Thaitr7920Turkishfr6221Frenchtr647Turkishru486Russiantr5916Turkishen3553Englishchr5305Cherokeeiu7016 Inuktitutfr5999Frenchth3116Thaifr2439Frenches4111Spanishfr5967Frenchtr3629Turkisheo4931 Esperantoiu914 Inuktitutzh5681Chinesetr1524Turkishzh8006Chinesear3610Arabices825Spanishth4197Thaith3597Thaiel6448Greekzh6907Chinesechr399Cherokeesr1175Serbianru5811Russianfr6950Frenchfr3456Frenches2683Spanishfr3141Frenchtr3105Turkishccp2713Chakmaiu3037 Inuktitutel6242Greekiu840 Inuktitutar4637Arabicchr5530Cherokeefr1546Frenches986Spanishes2102Spanishth1520Thaisr6711Serbianes237Spanishccp4893Chakmachr4567Cherokeefr48Frenchel2089Greeken6640Englishiu2002 Inuktitutel7432Greekru6216Russianru7320Russianiu7413 Inuktitutbn2251Banglaeo7658 Esperantotr2646Turkishzh897Chinesezh7855Chineseel1229Greekeo86 Esperantofr6726Frenchiu7491 Inuktitutar5232Arabices4480Spanishbn3428Banglael1195Greekccp5829Chakmaccp2420Chakmaes466Spanishfr1267Frenchru1483Russianfr6859Frenchsr2798Serbiantr5465Turkisheo4048 Esperantoeo396 Esperantosr7609Serbianel2804Greekzh1746Chinesear5901Arabicfr1156Frenchiu1103 Inuktitutel3269Greeken6711Englisheo4452 Esperantoru5599Russianth1460Thaisr3183Serbianbn6324Banglael6020Greekbn7616Banglaja3079Japanesefr3336Frenchel5791Greeksr2011Serbianen4512Englishchr1993Cherokeezh4911Chineseiu7521 Inuktituteo1794 Esperantoccp5532Chakmael6004Greeksr996Serbiansr5995Serbianccp7552Chakmazh4695Chinesetr1611Turkishtr4862Turkishth2844Thaiar4832Arabicel2119Greekchr3953Cherokeear5256Arabicth6148Thaizh492Chineseiu7350 Inuktitutja4833Japanesesr994Serbianeo285 Esperantoja7782Japaneseeo2217 Esperantoccp4023Chakmaru659Russianes2810Spanishen3533Englishel6750Greekes5933Spanishiu5201 Inuktitutbn7978Banglasr5889Serbianbn5328Banglaes2846Spanishja7022Japaneseeo872 Esperantoel2303Greekchr7447Cherokeeel2816Greektr2461Turkishbn1929Banglafr379Frenchiu3066 Inuktitutja2789Japaneseru4016Russianja1145Japaneseru6155Russiansr1688Serbianth185Thaizh415Chineseeo3289 Esperantoja3143Japaneseth7632Thaiccp5316Chakmaru2019Russianfr1662Frenchen3918Englishbn98Banglaes4763Spanishsr2354Serbianfr1558Frenchru5922Russianel5808Greekth3868Thaitr4034Turkishtr7648Turkishzh1049Chinesefr2393Frenchtr5308Turkishru2380Russianes2822Spanishzh4307Chineseen6149Englishru7412Russianth3560Thaieo2456 Esperantobn4103Banglaen1370Englishth2288Thaiccp1360Chakmaen3346Englishiu6942 Inuktitutfr6335Frenchja1809Japaneseja7455Japaneseru6020Russianfr7215Frenchru8114Russianeo6022 Esperantozh2440Chineseru4305Russianth1891Thaies3774Spanishel1799Greekeo7315 Esperantozh3457Chineseen7796Englisheo3978 Esperantoar7243Arabicar6787Arabicccp4225Chakmath3758Thaitr6928Turkishiu8132 Inuktitutes5333Spanishja8073Japanesezh3063Chineseel1533Greeken4095Englishth1901Thaith6175Thairu6093Russiansr4606Serbianth1676Thaibn3219Banglabn5218Banglael5198Greekar7093Arabicja5606Japanesesr2559Serbianiu148 Inuktitutbn1602Banglatr2284Turkishsr6984Serbianbn1170Banglaccp5111Chakmaccp5174Chakmaiu2188 Inuktitutth6211Thaien6283Englishiu1797 Inuktitutel821Greekzh3655Chineseth6305Thaieo591 Esperantotr6071Turkishccp1091Chakmatr3035Turkishzh2893Chineseth2144Thaichr5159Cherokeeel6268Greekes5582Spanishja4694Japaneseen8132Englishja2556Japaneseiu167 Inuktituteo6069 Esperantoes1747Spanishru2124Russianth7204Thaitr4910Turkishel7957Greekzh3894Chinesezh4028Chineseth4335Thaitr7364Turkishccp6153Chakmaar7643Arabicfr7247Frenchsr513Serbianar3167Arabicccp5286Chakmaen1920Englishja6303Japaneseeo2282 Esperantofr1232Frenchen5900Englishiu6558 Inuktitutja4788Japanesechr5964Cherokeees5814Spanishja923Japanesear4030Arabices2727Spanisheo7621 Esperantoes5252Spanishen1290Englishchr687Cherokeechr2038Cherokeeja2696Japanesebn4302Banglaru472Russianfr6415Frenchsr330Serbianar3977Arabiczh1922Chinesetr4669Turkishtr580Turkishth4642Thaieo5347 Esperantoes3470Spanishsr3243Serbianth819Thaiel5567Greekiu2453 Inuktitutru5810Russianel6569Greeksr4806Serbiantr7231Turkishes613Spanishja754Japanesesr7217Serbianth4569Thaichr876Cherokeeen5399Englishel4704Greekth1440Thaichr3360Cherokeetr5814Turkishes4417Spanishiu153 Inuktitutth2695Thaith3617Thairu1894Russiantr6767Turkishes336Spanishfr7967Frenchchr3252Cherokeeccp5188Chakmasr4239Serbiansr5515Serbianth5998Thaibn1984Banglaccp4051Chakmatr3297Turkishchr5842Cherokeear6591Arabicth7016Thaiel6889Greekja1981Japanesees6840Spanishth3734Thairu7219Russianchr6173Cherokeeel73Greekel1947Greekth661Thaifr7111Frenchel631Greekru3517Russianar2774Arabicar5910Arabictr7073Turkishchr2145Cherokeefr807Frenchfr2914Frenchru1351Russianbn4711Banglaar1803Arabicel8008Greekiu1864 Inuktituttr4716Turkishzh3000Chineseiu5182 Inuktitutchr3592Cherokeesr2172Serbiansr6618Serbianiu7642 Inuktitutru1921Russianes6740Spanishfr2731Frenchsr7625Serbiansr3985Serbiansr1674Serbiantr3040Turkishes297Spanishru6293Russianel998Greekeo1557 Esperantozh6150Chineseccp5007Chakmaes6012Spanishccp6501Chakmaru131Russianru4154Russianchr5517Cherokeetr1931Turkishchr2139Cherokeeja1251Japanesezh4562Chinesees4245Spanishja222Japanesechr6521Cherokeeel3244Greeksr8153Serbianchr6323Cherokeear646Arabicar4420Arabicel4076Greektr4872Turkishes7536Spanishja605Japaneseeo4011 Esperantoiu4857 Inuktitutbn295Banglazh6608Chineseja252Japaneseen5859Englishsr2003Serbianru1534Russiansr5147Serbianru319Russiantr1204Turkishen3934Englishccp1466Chakmaes2547Spanishfr4100Frenchtr5237Turkishru2605Russianja5129Japaneseeo6839 Esperantochr2303Cherokeechr7821Cherokeefr3345Frenchru6494Russianel317Greekth602Thairu3809Russianes6997Spanishsr2963Serbianzh6732Chinesesr6474Serbianbn3959Banglachr1580Cherokeeel4732Greekzh658Chineseccp5729Chakmaen2560Englishja6875Japanesees2506Spanishtr2967Turkishes7766Spanisheo7196 Esperantoes5609Spanishchr1055Cherokeeel7771Greektr2191Turkishtr6291Turkishfr5009Frenchru235Russianja1539Japaneseel3198Greekzh5817Chinesetr5432Turkisheo4719 Esperantobn2261Banglasr3288Serbianru7436Russiantr7319Turkishel1665Greekiu62 Inuktitutzh3688Chinesees7296Spanishfr1910Frenchja4235Japanesetr3350Turkisheo8156 Esperantotr5400Turkishzh5352Chineseeo6786 Esperantoeo369 Esperantoth309Thairu4886Russianbn4133Banglachr5026Cherokeeen5770Englishiu2994 Inuktituteo5650 Esperantochr6920Cherokeear392Arabictr4838Turkishru896Russianchr3423Cherokeefr1280Frenchth4772Thaibn5649Banglaccp6684Chakmabn7658Banglaes2755Spanishen5629Englishen3785Englishzh6897Chinesear5787Arabicen7281Englishiu446 Inuktitutth1645Thaith7123Thaiar619Arabicbn1378Banglaja2699Japanesetr4099Turkishsr6943Serbianen3084Englishes7649Spanishccp5947Chakmaiu1371 Inuktitutzh4404Chineseeo2478 Esperantoes5003Spanishccp7909Chakmazh7587Chinesear1448Arabices3859Spanishth6199Thaibn2447Banglaccp512Chakmabn5941Banglaccp7393Chakmaja3904Japaneseccp1883Chakmazh546Chineseth7915Thaitr3201Turkishzh5925Chineseru6647Russianchr1963Cherokeeeo6312 Esperantoiu3591 Inuktitutchr7430Cherokeesr6560Serbianbn7154Banglath4706Thaiccp1708Chakmaen7582Englishtr6074Turkishccp6946Chakmaiu1752 Inuktitutru1764Russianar6493Arabicsr5369Serbianja7905Japaneseru2239Russianeo4628 Esperantoes90Spanishbn2518Banglafr2932Frenchccp3227Chakmath2330Thaibn144Banglaar3491Arabicfr7692Frenchccp5777Chakmaeo7407 Esperantoja6395Japanesefr7708Frencheo7588 Esperantosr3483Serbianth2800Thaiccp927Chakmasr3670Serbiantr7077Turkishel4045Greekchr7696Cherokeeel2754Greeksr2167Serbianzh2258Chineseel2350Greekes467Spanishja6980Japaneseccp158Chakmaes6554Spanishfr6235Frenchru2198Russianzh3142Chineseen480Englishen4977Englisheo2446 Esperantozh1932Chineseccp2055Chakmaen51Englishbn343Banglaes177Spanishel4808Greekar5734Arabicth5376Thaiar2560Arabicel3200Greekiu4514 Inuktitutth1975Thaizh287Chineseen4586Englishel3036Greeken7478Englishbn5374Banglaccp809Chakmaeo4498 Esperantoth5429Thaitr3531Turkishja408Japaneseen1317Englishccp3815Chakmaiu3433 Inuktitutzh5180Chinesear2410Arabiciu3592 Inuktituttr1519Turkishja1465Japanesees2314Spanishru2644Russianja6749Japanesear7476Arabicccp1278Chakmaeo8117 Esperantofr8006Frencheo4834 Esperantoeo7765 Esperantosr3743Serbianel1783Greekth251Thaichr3361Cherokeeja4599Japaneseiu60 Inuktitutes8129Spanishchr1787Cherokeeel4312Greekiu7021 Inuktitutth3790Thaifr244Frenchtr635Turkishru6342Russiantr3605Turkishtr3284Turkishccp3420Chakmaja5481Japaneseeo4101 Esperantosr6300Serbianru4409Russianes5696Spanishzh4353Chinesear4263Arabices7844Spanishth6677Thaiar3020Arabicel2965Greeksr6582Serbianth3880Thaitr3224Turkishbn3603Banglaeo7007 Esperantoes4447Spanishccp2533Chakmachr5223Cherokeeccp1392Chakmaes113Spanishfr1907Frenchth1027Thaitr6812Turkishtr7721Turkishbn364Banglaccp6390Chakmachr7913Cherokeeiu105 Inuktituttr4779Turkishen6154Englisheo7129 Esperantozh6264Chineseth149Thaibn3368Banglael6085Greekccp2601Chakmaeo6569 Esperantotr967Turkishel3480Greekar480Arabicchr520Cherokeetr3661Turkishzh5976Chinesechr6282Cherokeeeo3001 Esperantobn6646Banglaen2966Englishru6379Russianccp3057Chakmachr1188Cherokeeccp5932Chakmabn6284Banglaccp7876Chakmazh6633Chineseel852Greekar2359Arabicja6985Japaneseeo4990 Esperantoeo4505 Esperantoiu6000 Inuktitutsr1865Serbianen2574Englishes1233Spanishes3898Spanishsr326Serbiansr2356Serbianeo5648 Esperantotr7453Turkishfr2301Frenches594Spanisheo5653 Esperantoes1503Spanishel5251Greekfr3133Frenchsr257Serbianchr1981Cherokeees7698Spanishtr5775Turkisheo3086 Esperantochr4636Cherokeeja4041Japaneseru3376Russianth849Thaith6795Thaibn5120Banglaeo827 Esperantoth3682Thaichr3666Cherokeechr3004Cherokeebn4852Banglaru7168Russianiu3738 Inuktitutchr5439Cherokeeja1235Japaneseen6204Englishes2840Spanishes1844Spanishzh5927Chinesetr3203Turkishel2926Greekeo2196 Esperantozh274Chinesebn66Banglael5014Greekfr2379Frenchen4804Englishfr4101Frenchchr4329Cherokeechr3059Cherokeeja714Japaneseja4441Japanesezh6091Chineseccp3161Chakmachr4129Cherokeeen6041Englishccp6316Chakmasr7636Serbianen2666Englishsr8107Serbianth4803Thairu3333Russiansr3695Serbiansr1268Serbianbn7869Banglabn3158Banglael3608Greeken3011Englishth4846Thaisr6659Serbianru615Russianfr1971Frenchru1855Russianen105Englishar4653Arabicel3980Greekru7136Russianes924Spanishja5785Japaneseiu5196 Inuktitutth3876Thaiiu774 Inuktitutiu7823 Inuktitutja6805Japaneseth6065Thaiar7925Arabicsr129Serbianes2099Spanishar7213Arabicchr7201Cherokeeeo3945 Esperantoel6507Greekfr2928Frenchja6656Japaneseth1106Thaiel2406Greekbn1429Banglaccp2445Chakmaen5480Englishsr5811Serbianes4618Spanishchr1122Cherokeefr5144Frenchel6080Greekth2992Thaija7020Japanesear7653Arabicen7477Englishen2161Englishja1155Japaneseccp3569Chakmael4424Greekes6854Spanishiu4222 Inuktitutccp808Chakmath1826Thaizh8042Chinesefr1333Frencheo2994 Esperantoru5559Russianbn4562Banglaen4213Englishbn3370Banglaeo2272 Esperantobn4970Banglaccp6772Chakmaes1939Spanishiu6701 Inuktitutja670Japaneseth4948Thaitr6025Turkishes1628Spanishfr687Frenchchr931Cherokeeth5489Thaibn5673Banglaccp2460Chakmaen4091Englishth3069Thaisr4119Serbianzh5439Chineseccp2524Chakmaccp7535Chakmaeo2129 Esperantoes1207Spanishsr1598Serbiantr598Turkishchr3233Cherokeeel2721Greeksr6472Serbianzh6880Chineseth5601Thaiar3966Arabicchr3921Cherokeebn5406Banglaes5750Spanishel944Greektr1868Turkishzh4777Chinesezh6169Chinesezh6892Chinesechr3548Cherokeees1397Spanishth2358Thaiel94Greekzh7808Chineseja4035Japaneseeo160 Esperantoiu2552 Inuktitutchr596Cherokeeja2377Japanesezh1618Chineseru7682Russianeo2499 Esperantoja4219Japanesezh6946Chineseth5173Thaiccp2674Chakmachr6610Cherokeeja4436Japaneseen5117Englisheo4739 Esperantozh4112Chinesezh2015Chinesetr2843Turkishru2264Russianru3225Russianccp2884Chakmachr1431Cherokeees1763Spanishes3659Spanishiu3826 Inuktitutja1632Japanesetr6870Turkishbn5145Banglazh2698Chineseja4647Japanesetr2377Turkishchr6804Cherokeezh4391Chineseen545Englishar4676Arabicsr4699Serbiansr6224Serbianen7357Englishsr5577Serbianen680Englishzh7384Chineseja1132Japanesezh537Chineseth2801Thaisr4982Serbianel1714Greeken1253Englisheo5895 Esperantoes6275Spanisheo5942 Esperantoar2480Arabiciu257 Inuktitutru281Russianchr5427Cherokeeru612Russianccp3144Chakmachr6715Cherokeefr6972Frenches7330Spanishru7777Russianen3137Englishru3822Russiantr7718Turkishfr8167Frenchja4793Japanesesr5657Serbianbn4883Banglaccp7495Chakmaru2805Russianchr4843Cherokeeth6292Thaiccp4294Chakmath7383Thaiar7228Arabicccp5252Chakmachr262Cherokeees2898Spanishth4770Thaibn1433Banglaccp2381Chakmaiu2931 Inuktitutchr1468Cherokeetr2892Turkishen1807Englishsr5164Serbianen2616Englishccp4385Chakmaru5383Russianth692Thaija7915Japanesees5239Spanishja4893Japaneseru2772Russianccp281Chakmasr3094Serbiantr4630Turkisheo5310 Esperantochr7078Cherokeeth2760Thaiccp6932Chakmaar1570Arabicfr1642Frenchchr2544Cherokeezh6229Chineseja3476Japanesear4126Arabicchr908Cherokeezh6318Chineseccp6666Chakmael680Greeken3096Englisheo4771 Esperantoiu7317 Inuktitutja2765Japanesesr4550Serbianchr8064Cherokeeeo7709 Esperantoel8021Greekeo4849 Esperantofr2502Frenchfr5357Frenchbn7452Banglafr212Frenchru4108Russianja7018Japaneseen3777Englishiu6128 Inuktitutfr5562Frenchen6986Englishes1326Spanishccp4865Chakmael1593Greekth2427Thaitr4582Turkisheo4371 Esperantoar7016Arabicen4351Englishru4285Russianth1115Thaizh6297Chineseja1780Japaneseth2830Thaizh6671Chinesear2178Arabicth7167Thaiccp3080Chakmaja1883Japaneseth3451Thaitr4873Turkishfr1293Frenchtr4676Turkishtr4547Turkishen6781Englishzh3698Chineseth2683Thaies3526Spanishru590Russiansr754Serbianru6513Russiansr1443Serbianbn2892Banglaar4206Arabicbn304Banglatr3263Turkishru4606Russiantr1180Turkishar6231Arabicel4374Greekccp5857Chakmaru2516Russianbn6341Banglafr3418Frenchsr351Serbianiu2930 Inuktitutccp2493Chakmaen6907Englishen2971Englisheo5159 Esperantoru2066Russianen1003Englishes5991Spanishru2067Russianfr5507Frenchar3071Arabicfr7659Frenchen1383Englishru2881Russianzh1449Chineseccp161Chakmaes6645Spanishiu4950 Inuktitutth5878Thaith2851Thaith2963Thaitr3992Turkishel3385Greekiu4804 Inuktitutja7954Japaneseja1738Japanesees3588Spanishja6997Japanesezh4790Chineseeo5726 Esperantochr4282Cherokeechr6586Cherokeeel2680Greekes6398Spanishth463Thaies5018Spanishar1994Arabices1685Spanishtr1880Turkishzh1835Chinesear1807Arabicth1450Thaiiu1743 Inuktitutccp7601Chakmazh7609Chinesear6035Arabicbn3604Banglaes5576Spanishtr175Turkishth3080Thaiar6884Arabiciu686 Inuktituteo3407 Esperantobn6587Banglaccp8050Chakmaccp1382Chakmaes3870Spanishth1030Thaisr7127Serbianar4557Arabicbn6783Banglaccp5629Chakmaen3819Englishchr779Cherokeeeo488 Esperantoen2563Englishar350Arabicru1358Russianth6758Thaieo1983 Esperantoru8185Russiantr5231Turkishbn153Banglaen2472Englishtr7864Turkishfr2366Frenchsr6141Serbianiu6041 Inuktituttr7378Turkishru2008Russiantr1958Turkishfr3239Frenchccp7066Chakmaiu7225 Inuktitutar7942Arabicel7964Greeken3281Englishar5483Arabiczh951Chineseen1758Englishiu2749 Inuktitutiu7406 Inuktitutel4377Greektr833Turkishel3866Greekbn1178Banglaes6739Spanishar7202Arabicel4018Greekchr7004Cherokeeel3956Greeken4920Englishfr602Frenchfr670Frenchfr4847Frenchsr7110Serbiantr286Turkishzh4223Chineseiu1777 Inuktitutel7516Greekzh5541Chineseiu8175 Inuktitutiu3160 Inuktitutccp3479Chakmaen4615Englishar1154Arabicru7885Russianeo1708 Esperantoth5388Thaiccp2744Chakmatr6973Turkishar7352Arabicru3090Russianen3114Englishes1673Spanishes2937Spanishes8159Spanishbn1999Banglaiu7220 Inuktitutccp246Chakmafr683Frenchja6184Japanesear1155Arabicth4850Thaiar132Arabicja5340Japanesear7544Arabicen629Englisheo8069 Esperantobn8064Banglaar7451Arabices3617Spanishen3152Englishfr2207Frenchfr7105Frenchccp5677Chakmazh3248Chinesees1532Spanishth800Thaitr7368Turkishja5123Japaneseel6613Greekiu8004 Inuktitutzh7841Chinesesr3371Serbianar1762Arabicbn1896Banglatr5806Turkishes984Spanishja3294Japaneseiu6139 Inuktituteo2680 Esperantofr7961Frenchja2637Japaneseru7799Russianth4207Thaibn4449Banglaccp7840Chakmaiu6408 Inuktitutth1666Thaiiu1750 Inuktitutchr4286Cherokeeen7211Englishsr2268Serbianeo2581 Esperantoel7886Greekzh5747Chinesees1155Spanishtr4151Turkishja502Japaneseru4277Russiantr4689Turkishchr715Cherokeebn7241Banglaes6726Spanishru7433Russianbn4976Banglachr7230Cherokeetr7643Turkishsr4144Serbiantr7067Turkishzh4858Chineseen7450Englisheo906 Esperantoes5558Spanishru7110Russianel6791Greekeo5351 Esperantoes7692Spanishes7701Spanishsr6176Serbianzh2080Chinesezh6718Chineseccp7960Chakmazh3956Chinesezh3660Chineseen1218Englishja6417Japaneseja7269Japaneseccp792Chakmabn1249Banglath5919Thaichr3074Cherokeees5156Spanishru6455Russianfr2661Frenchzh1227Chinesechr2365Cherokeeen2468Englishth762Thaith4729Thaisr3047Serbianja4591Japanesees5910Spanisheo3622 Esperantotr6105Turkishzh4154Chinesezh2608Chinesebn2150Banglaes8063Spanishar1189Arabiceo1535 Esperantoeo2316 Esperantoja390Japaneseru2880Russiansr3518Serbianja3070Japanesetr3830Turkishzh383Chineseccp6512Chakmaru2438Russianth5948Thaiiu6692 Inuktituten6934Englishiu7076 Inuktitutzh3809Chinesebn703Banglaes3300Spanishth3422Thaifr4585Frenchtr6354Turkishccp714Chakmaja4934Japaneseccp2466Chakmaiu6387 Inuktitutzh7297Chineseen6872Englishar7018Arabicchr1605Cherokeeen1815Englishsr878Serbianiu7382 Inuktitutbn7182Banglazh7895Chineseccp6280Chakmaiu1779 Inuktitutccp3472Chakmaiu2585 Inuktitutfr7483Frenchar4307Arabictr3001Turkishbn3274Banglazh6901Chinesees971Spanishtr2229Turkishsr1009Serbianccp4963Chakmatr2585Turkishbn2076Banglaen3548Englishen4324Englishchr2722Cherokeees462Spanishth2261Thaibn3515Banglaru5203Russiansr7189Serbianccp7530Chakmafr3553Frenchiu3783 Inuktitutsr4448Serbianth160Thaiiu6162 Inuktitutru8088Russianja1868Japaneseja3989Japanesetr2388Turkishchr3786Cherokeear2957Arabiciu1669 Inuktitutzh4770Chinesefr4893Frenchzh1026Chinesear552Arabicel4490Greekel460Greeksr1874Serbianccp8027Chakmatr712Turkishen7160Englishfr1101Frenchtr4932Turkisheo1140 Esperantoeo4820 Esperantoiu3199 Inuktituttr5634Turkishsr3676Serbianen618Englishes2448Spanishel6152Greekccp4560Chakmafr6200Frenchsr7999Serbiantr4836Turkishru513Russianfr7235Frenchar7240Arabicccp36Chakmaru7504Russiantr642Turkishes3471Spanishja3859Japaneseen6544Englishru686Russianar565Arabicsr7072Serbianar2843Arabicsr593Serbianth7644Thairu1002Russianth902Thaitr4960Turkishja2644Japaneseru2243Russianiu602 Inuktitutzh911Chineseth7017Thaien2633Englishfr7350Frenchja8020Japaneseccp1294Chakmaen5838Englishccp3781Chakmath7013Thaies7410Spanisheo2342 Esperantoiu5064 Inuktitutfr7028Frenchel4938Greeksr3564Serbianfr6095Frencheo4567 Esperantoth3675Thaizh3241Chinesees3685Spanishfr1339Frenchsr7730Serbianbn6854Banglaccp6247Chakmaes7570Spanishtr5859Turkishru7346Russianth5004Thaies5685Spanishzh7336Chinesesr7630Serbianchr1363Cherokeeru2862Russianzh3096Chinesear6437Arabiciu5734 Inuktitutes6765Spanishen55Englisheo3798 Esperantoes6872Spanishtr6143Turkishsr4370Serbianeo4740 Esperantoeo2809 Esperantoru5874Russianth3506Thaiel6482Greeksr104Serbiansr4396Serbianeo2999 Esperantofr6679Frenchja6182Japanesear7288Arabicar4625Arabicja6339Japaneseru737Russianfr3501Frenchchr2375Cherokeees3345Spanishzh1358Chineseen4549Englishen7729Englishth7900Thaibn6724Banglazh3118Chinesesr3867Serbianen1458Englishes5210Spanishzh3348Chineseiu1201 Inuktituteo3319 Esperantoccp4424Chakmafr6197Frenchzh4780Chineseen5483Englisheo5427 Esperantoiu6499 Inuktitutbn3498Banglaru1879Russianel5977Greekbn6290Banglaeo5816 Esperantoeo7532 Esperantoja1545Japanesebn5630Banglatr1998Turkisheo2538 Esperantotr7483Turkishth3718Thaija6014Japanesesr5151Serbianth3778Thaifr4397Frenchtr6408Turkishru5458Russianes66Spanishchr579Cherokeeel3202Greekfr993Frenchzh1615Chinesefr1154Frenchja2985Japaneseeo3992 Esperantoes857Spanisheo5989 Esperantoja5810Japanesesr7227Serbianru6570Russianru2800Russianfr2966Frenchar7012Arabiceo295 Esperantoar8102Arabicar3877Arabices1630Spanishsr2621Serbianar1023Arabices4178Spanishth6081Thaizh2734Chinesechr1697Cherokeeccp3369Chakmaccp6601Chakmaeo6393 Esperantoth3030Thaiel4064Greekja1402Japaneseccp1095Chakmaen2712Englishru2059Russianccp1936Chakmasr7418Serbianbn19Banglaja6460Japanesezh7572Chineseru4398Russiantr1029Turkishccp6412Chakmaar2849Arabiceo4512 Esperantobn7617Banglaes369Spanishchr179Cherokeetr2329Turkishzh1493Chineseeo2568 Esperantoen4108Englishel1388Greekja5604Japaneseel1885Greekeo901 Esperantoccp2149Chakmaja3103Japaneseen5517Englishtr606Turkishccp1597Chakmaeo515 Esperantosr3240Serbianiu5725 Inuktitutchr8028Cherokeetr417Turkishbn4546Banglaeo37 Esperantoru5929Russianfr7741Frenchchr6407Cherokeeen5256Englishccp1102Chakmath5093Thaizh1245Chinesesr19Serbianel5910Greekru6392Russianja2906Japaneseen2910Englishja5149Japaneseel3070Greeken6432Englishzh657Chinesebn683Banglafr4975Frenchja3922Japanesezh6955Chinesetr2948Turkishzh3908Chineseth6977Thaiar1170Arabicar2376Arabicru4341Russianen5927Englishth6167Thaien3446Englishen2460Englishbn7173Banglafr8100Frenchzh1354Chinesebn7011Banglaeo8087 Esperantoth6572Thaizh3720Chineseen6003Englishja8004Japanesees4927Spanishth4230Thaiccp749Chakmaar4889Arabicbn4935Banglaccp4215Chakmafr750Frenchccp7139Chakmaja5354Japaneseth5900Thaitr8131Turkishccp8032Chakmaja1062Japanesees7036Spanishru4597Russianja1210Japanesetr7707Turkishchr3696Cherokeetr7132Turkishes5762Spanishccp1124Chakmael1882Greekzh2374Chinesefr1533Frenchzh7420Chinesesr1567Serbiantr6974Turkishiu3122 Inuktitutel4232Greekel4417Greekel5415Greekiu950 Inuktitutja5198Japaneseccp595Chakmaccp1154Chakmabn4524Banglachr619Cherokeeel1257Greekth5537Thaien2Englishccp5070Chakmaen1801Englishel4718Greeksr6283Serbianzh7183Chineseru3359Russianru5142Russianel7692Greekfr6720Frenchsr4134Serbianccp3392Chakmachr6961Cherokeees2047Spanishel860Greekiu4491 Inuktitutsr2668Serbianru7823Russianja3717Japanesetr2040Turkishsr2273Serbianja1228Japaneseel7704Greekchr1259Cherokeezh7538Chineseru5522Russianar404Arabiciu8084 Inuktituten2303Englisheo5157 Esperantoccp7845Chakmaiu2760 Inuktitutes7785Spanishtr315Turkishel1377Greeken6005Englishtr3785Turkishccp848Chakmaccp2966Chakmaes3890Spanishchr5186Cherokeechr2437Cherokeesr2574Serbianfr1387Frenchccp7323Chakmafr6287Frenches2751Spanishsr128Serbiantr6905Turkishsr4229Serbianja508Japaneseru4907Russianeo1196 Esperantoth623Thaibn3252Banglatr1967Turkishel5744Greekfr1169Frenchtr73Turkishzh5361Chinesesr5399Serbiantr7348Turkishfr6173Frenchja6126Japanesezh4220Chineseel630Greekchr4426Cherokeeeo3863 Esperantoes1412Spanishtr4231Turkisheo4700 Esperantoel2709Greeksr2306Serbianiu589 Inuktitutbn5222Banglazh5695Chineseen206Englishar7669Arabictr6046Turkishel6390Greekfr2895Frenchth248Thaija6852Japanesear4815Arabiciu2193 Inuktitutja1063Japaneseel3398Greeksr1102Serbianccp3409Chakmachr3635Cherokeesr2769Serbiansr1675Serbianzh3987Chinesear4727Arabicar7158Arabiceo439 Esperantoes2305Spanishel2939Greeken109Englishes4769Spanishfr3260Frenchel7242Greekfr3572Frenchchr1701Cherokeeru2558Russianar7743Arabicja532Japanesechr552Cherokeefr6530Frenchen6733Englishccp2277Chakmaja4408Japanesear6340Arabicth6236Thaiiu8113 Inuktituttr4536Turkishes2216Spanisheo1530 Esperantoja7883Japaneseiu3496 Inuktitutiu366 Inuktitutar7723Arabicel1338Greekfr1420Frenchru3859Russianel183Greekfr5427Frenchchr5904Cherokeeccp5602Chakmaiu458 Inuktituten5028Englishja7372Japanesefr5453Frenchtr4464Turkishbn6205Banglachr2098Cherokeeja800Japanesezh1675Chineseen3388Englishbn3716Banglabn871Banglaccp776Chakmaar2951Arabicar7157Arabicel1650Greeken3818Englishen1074Englishen7721Englisheo2346 Esperantofr4760Frenchchr629Cherokeeel49Greekel1725Greekeo2512 Esperantoth4372Thaichr3386Cherokeesr3940Serbianzh5895Chineseja6396Japanesechr1884Cherokeees2632Spanishes3126Spanishja6942Japanesesr5918Serbianfr7466Frenchfr7903Frenchja3156Japanesefr2561Frenchzh2485Chinesechr1209Cherokeeja3405Japanesechr5048Cherokeebn847Banglaccp7755Chakmaes4059Spanishzh1379Chinesezh6762Chineseru355Russianel5081Greekja6799Japanesebn1578Banglaes2714Spanishiu2740 Inuktitutiu4933 Inuktitutccp3742Chakmaja814Japaneseen5068Englishsr3794Serbiansr8147Serbianzh2282Chinesetr1395Turkishchr1564Cherokeeth3499Thaith6547Thaitr1460Turkisheo1678 Esperantobn809Banglafr360Frencheo1626 Esperantoccp5971Chakmael5419Greekja4870Japaneseja6194Japanesees4625Spanishja7634Japanesees7663Spanisheo5475 Esperantotr4053Turkishsr5258Serbiantr2170Turkishfr5734Frenchru2335Russianes7954Spanisheo557 Esperantoth7860Thaizh8116Chineseiu7685 Inuktitutccp4163Chakmaes7049Spanishen4714Englishiu4545 Inuktituten7941Englishen7971Englishru317Russianccp3598Chakmaja5547Japanesebn1185Banglaccp1456Chakmafr653Frenchth3362Thaien2958Englishes1432Spanishfr4561Frenchsr3028Serbianru3803Russianchr2025Cherokeear1684Arabiciu2924 Inuktitutru6580Russianccp3745Chakmaja5556Japanesechr2931Cherokeeeo4194 Esperantoeo1374 Esperantoes128Spanishiu3023 Inuktituttr5846Turkishiu1349 Inuktitutja109Japaneseeo3295 Esperantoja4384Japanesees4760Spanishja2584Japaneseth1142Thaiel4209Greekbn1664Banglaes5196Spanishes5423Spanishel4114Greekiu6145 Inuktitutar1862Arabicccp2758Chakmatr1170Turkisheo1803 Esperantoen2848Englishbn5504Banglael6704Greekes1979Spanishja2466Japanesechr4127Cherokeebn1260Banglaes7419Spanishel5587Greeken4894Englisheo2208 Esperantoar1720Arabiceo4543 Esperantozh1086Chineseja6477Japaneseel2787Greekeo5961 Esperantoth1191Thaichr7024Cherokeebn2870Banglaes5619Spanishar1326Arabicsr1350Serbianar1521Arabicfr723Frenchja3578Japaneseru7907Russiantr5921Turkishar4945Arabices6581Spanishfr7656Frenchzh2652Chinesefr6619Frenchsr1191Serbianfr8001Frenchen1724Englishth7657Thaitr5316Turkishiu7171 Inuktitutar4923Arabicchr443Cherokeeth3916Thairu4505Russianar3714Arabicfr2391Frenchth4418Thaiccp6598Chakmachr6594Cherokeeth6891Thaizh5965Chineseen1700Englishar2366Arabicchr1936Cherokeebn4593Banglabn4906Banglaeo3986 Esperantoth132Thaisr5078Serbiansr3878Serbianar1868Arabicru445Russianchr349Cherokeeen740Englisheo2390 Esperantochr5125Cherokeeen803Englisheo3013 Esperantoru5429Russianth7716Thaibn1298Banglaes2108Spanishes1374Spanishen5001Englishbn6034Banglaiu5787 Inuktitutru637Russianfr1040Frenchtr3330Turkishes7425Spanishen7040Englishth6992Thaies6639Spanishen7856Englishzh5540Chineseth5496Thaieo6075 Esperantofr3991Frenchen7671Englishsr4897Serbianes1554Spanishja6320Japaneseth3471Thaifr1383Frenchsr6823Serbianiu4978 Inuktitutzh5302Chinesear3082Arabicen183Englishen5037Englishru1746Russianel7677Greekru2230Russianel2090Greeken1297Englishel191Greekfr3119Frencheo2564 Esperantoru5214Russianen3738Englisheo703 Esperantofr2226Frenchiu5867 Inuktitutchr6649Cherokeeru4141Russianth5563Thaith7557Thaitr3195Turkishen1704Englishja2596Japaneseeo6362 Esperantoes4320Spanishtr7107Turkishen3364Englishiu4026 Inuktitutchr3512Cherokeeiu398 Inuktitutzh3483Chineseeo749 Esperantoen7801Englishar7874Arabicja7098Japanesefr568Frenchen3977Englishja8105Japanesear1463Arabicen1526Englishsr7549Serbianth454Thaitr4847Turkishen4766Englishccp2242Chakmasr588Serbianbn1353Banglachr3496Cherokeeen2811Englishsr2044Serbiansr2984Serbiansr7287Serbianth6985Thaizh5721Chinesetr6639Turkishzh6361Chinesetr8180Turkishar2049Arabiciu732 Inuktitutbn2833Banglael4367Greeken7724Englishfr2841Frenchiu418 Inuktitutar703Arabicel3274Greeksr4291Serbianzh5318Chinesesr3719Serbianeo5998 Esperantoja4290Japanesesr5499Serbiansr3529Serbianar852Arabicfr7850Frenchbn820Banglaru4982Russianar1552Arabicbn677Banglasr2112Serbianen402Englishfr1960Frenchel6019Greekeo4936 Esperantofr40Frenchzh622Chinesear4702Arabicja4706Japanesear2706Arabicru4846Russianru2518Russianchr3315Cherokeeiu4047 Inuktitutbn3679Banglasr7894Serbianes3545Spanishchr2351Cherokeeiu3429 Inuktituttr3453Turkishbn7962Banglaen146Englishja99Japaneseja5584Japaneseru120Russianen73Englishccp2662Chakmael5326Greekel6557Greeksr3435Serbianth3222Thaith2848Thaichr6125Cherokeeen4768Englishel4495Greeken593Englishar5659Arabicfr3184Frenchfr2959Frenches1508Spanishiu1001 Inuktitutzh1630Chinesetr6802Turkishchr2860Cherokeees3371Spanishzh4569Chineseeo6567 Esperantoeo5870 Esperantobn1053Banglatr3268Turkishfr3289Frenchzh3145Chineseel2217Greekbn1501Banglaes7505Spanishccp8025Chakmaen1572Englisheo1606 Esperantoeo5345 Esperantotr909Turkishtr2670Turkishes127Spanishar7537Arabicen5999Englishiu6079 Inuktitutar6774Arabicccp6122Chakmaes1098Spanishen5172Englishiu1463 Inuktitutth3251Thaieo6419 Esperantoja1188Japanesechr1918Cherokeees5564Spanishccp2670Chakmazh840Chineseccp494Chakmazh6715Chinesesr4588Serbianel8013Greekfr3748Frenchtr7190Turkishar4122Arabices7835Spanishbn5020Banglaja4792Japaneseen6047Englishes4506Spanishes6592Spanishzh116Chineseen1692Englishtr5199Turkishja4738Japaneseiu3859 Inuktitutar4331Arabicccp4032Chakmath6165Thaiccp6107Chakmaar1462Arabicru4173Russianel5243Greeken5252Englishes925Spanishel5066Greekiu6735 Inuktitutja3536Japaneseiu6262 Inuktitutccp6054Chakmafr123Frenchchr5171Cherokeeeo1212 Esperantozh3797Chineseel7545Greekja4146Japanesear481Arabicru1790Russianja147Japanesees2195Spanishccp7928Chakmaeo5209 Esperantoru7180Russiansr885Serbianccp2003Chakmael966Greekbn4733Banglaeo3780 Esperantoar7670Arabices6693Spanishbn2479Banglachr6639Cherokeefr3926Frenchiu2939 Inuktitutbn2496Banglaes7964Spanishru4263Russiansr2756Serbianth2298Thaitr2218Turkishtr5665Turkishfr4433Frenchzh3128Chineseel445Greekar2698Arabicar6925Arabicen572Englishja6451Japaneseru3569Russianeo202 Esperantoth7326Thaibn3228Banglachr8103Cherokeeel7349Greekja4207Japaneseth651Thaiccp3587Chakmaru3479Russianiu7978 Inuktituttr1970Turkishar1410Arabiceo616 Esperantofr5902Frenchccp1846Chakmazh6019Chinesesr3790Serbianiu6154 Inuktituten1462Englishzh7993Chineseiu7731 Inuktitutth7585Thairu5233Russianja7127Japaneseccp361Chakmasr6975Serbianth6566Thaisr4431Serbianar1217Arabiczh1789Chinesetr2509Turkishru5121Russianes5592Spanishfr1501Frenchsr7921Serbianth7481Thaiiu6212 Inuktitutar5462Arabicchr7679Cherokeechr6486Cherokeezh5163Chineseth710Thaija3509Japanesebn202Banglachr2404Cherokeeccp2227Chakmath5053Thaiccp5558Chakmatr7749Turkishbn7059Banglatr3088Turkishes6346Spanishsr6413Serbianen4379Englishfr3432Frenchru301Russianel7046Greekel3507Greekru4294Russianen2567Englishsr1216Serbianbn3006Banglaja7005Japaneseeo7741 Esperantozh2825Chinesesr6657Serbianbn3130Banglaes1866Spanishes4000Spanishiu3515 Inuktitutja5484Japaneseiu3823 Inuktitutru4421Russiansr4312Serbiansr4808Serbianja7947Japaneseiu7173 Inuktitutru6880Russiantr3880Turkishar1133Arabicen5829Englishar3451Arabiciu12 Inuktitutel5128Greekfr2627Frenchtr2405Turkishel6095Greekru1679Russianzh6975Chinesesr5843Serbianen3880Englishru761Russianiu1175 Inuktitutbn7981Banglaja4841Japanesetr1603Turkishfr46Frenchar2855Arabicccp7125Chakmath2492Thaiiu5252 Inuktitutel4832Greekes7308Spanishbn6015Banglath4798Thaizh2863Chinesear7624Arabicccp3592Chakmaes6062Spanishfr4456Frenchja2402Japanesear3757Arabicsr206Serbiantr2660Turkishzh981Chinesechr3654Cherokeefr3230Frencheo4223 Esperantoeo6047 Esperantotr786Turkishiu1704 Inuktitutchr77Cherokeeiu5366 Inuktitutiu6007 Inuktitutsr406Serbianzh1546Chineseiu7771 Inuktitutccp3667Chakmaja6590Japanesezh4724Chineseja4510Japaneseen6238Englishes1684Spanishsr6617Serbianel4669Greekru6630Russianzh5575Chinesees3087Spanishchr7139Cherokeeiu6890 Inuktitutzh1064Chinesezh5711Chineseru601Russianen6259Englishes2662Spanishfr650Frenchtr5023Turkishiu808 Inuktitutbn7112Banglaeo891 Esperantosr3628Serbianbn5530Banglath5956Thaitr4038Turkishccp2775Chakmafr7311Frenchar577Arabices3294Spanishbn4034Banglath2020Thaiar6872Arabicar6990Arabiczh6115Chineseeo7379 Esperantochr7161Cherokeechr4748Cherokeebn4834Banglaen923Englishja4462Japanesear7000Arabicru1743Russianzh1407Chinesechr450Cherokeeen7273Englishfr865Frenchja7382Japanesetr6411Turkishiu6024 Inuktitutru1956Russianzh6863Chinesefr146Frenchja2903Japaneseiu5475 Inuktitutzh6842Chineseen3140Englishccp7268Chakmafr2911Frenchfr8129Frenchru3855Russiansr1805Serbianchr7548Cherokeeth5938Thaies8108Spanishru2329Russianfr4793Frenchru5732Russianeo7354 Esperantoccp1581Chakmaen5628Englishtr1093Turkishtr5418Turkishth6590Thaitr3094Turkishfr3090Frenchru5357Russianfr1503Frenchchr4106Cherokeechr5077Cherokeees792Spanishiu8188 Inuktituttr5498Turkishzh5455Chineseth4921Thaifr6238Frenchccp4272Chakmath755Thaiar5535Arabicel7388Greekzh2677Chineseru169Russianth2779Thaies2083Spanishel7650Greekiu4131 Inuktitutbn2421Banglaeo3188 Esperantochr5189Cherokeeth6528Thaieo4905 Esperantoeo4970 Esperantoiu7340 Inuktitutar1800Arabicja5061Japaneseel7325Greekru4042Russiantr6583Turkisheo2898 Esperantoel332Greeken7969Englishzh7229Chinesees853Spanishja3431Japanesetr101Turkisheo6895 Esperantoja1103Japanesetr5612Turkishtr2787Turkishsr4315Serbianeo3853 Esperantobn3397Banglaccp6885Chakmaeo4083 Esperantoth7265Thaies6224Spanishbn5354Banglaes1801Spanishsr7446Serbianth3157Thaifr5550Frenchtr3673Turkishccp5750Chakmaes5899Spanishccp4438Chakmazh2500Chinesezh2791Chinesezh4868Chinesear1236Arabiczh8168Chineseen4002Englishccp4913Chakmabn1583Banglafr2741Frenchen4589Englishtr6206Turkishen8138Englishtr5557Turkishiu1042 Inuktitutja6644Japanesear1607Arabicccp5859Chakmabn1489Banglachr3201Cherokeeja2072Japaneseth5631Thaieo7643 Esperantoth2763Thaizh1792Chinesesr345Serbianes1536Spanishar5694Arabicfr441Frenchja2119Japanesesr1490Serbianccp1811Chakmael6348Greekel6915Greekiu1856 Inuktitutiu1901 Inuktitutru6719Russianeo4584 Esperantofr3084Frenchchr5624Cherokeeiu3910 Inuktitutar4498Arabicsr3652Serbianth1865Thaiel3499Greekzh1543Chinesezh1640Chinesezh4019Chinesear1509Arabicccp7370Chakmath8034Thaiar7798Arabices945Spanishsr3896Serbianth6325Thaiar2622Arabicen8071Englishtr944Turkishchr5693Cherokeefr2047Frenchtr130Turkishbn2809Banglaen4123Englishccp6314Chakmaeo6698 Esperantoccp1842Chakmael2973Greeksr1249Serbianbn5747Banglatr7431Turkishccp1396Chakmaar7579Arabicru2746Russianiu6077 Inuktitutchr625Cherokeeccp7259Chakmaccp2724Chakmaar3761Arabicccp5113Chakmaeo7331 Esperantotr6897Turkishchr7141Cherokeear462Arabicru4796Russianja352Japaneseccp2826Chakmaeo8142 Esperantoccp3020Chakmachr3848Cherokeeel5234Greekeo444 Esperantoccp2537Chakmaes55Spanishfr2541Frenchiu5605 Inuktitutja4884Japaneseru4915Russianen7439Englishbn2372Banglath6481Thaith6550Thaitr3160Turkishbn6658Banglasr7587Serbiantr7153Turkishchr2958Cherokeeiu6548 Inuktitutes386Spanishzh5331Chineseccp7477Chakmaja5055Japaneseja7848Japanesezh5772Chinesesr7527Serbianiu3704 Inuktitutth1767Thaiiu6264 Inuktitutsr3649Serbiansr2659Serbianth1943Thaith3452Thaien6265Englishja7814Japaneseth7737Thaija6807Japaneseiu5692 Inuktitutel5363Greekar5557Arabicar7123Arabicbn2906Banglafr2239Frenchel1189Greekth5505Thairu8161Russianja1300Japanesetr2121Turkishfr5932Frenchja3969Japanesees7557Spanishel8096Greekccp7554Chakmaar1636Arabicth3094Thaiiu3314 Inuktituteo6440 Esperantoar908Arabiceo5929 Esperantoes2341Spanishfr1312Frenchiu1634 Inuktitutiu3247 Inuktitutru3468Russianru2303Russianccp362Chakmaiu5876 Inuktituttr1055Turkishzh2029Chinesefr7583Frenchfr5645Frenchccp7290Chakmaes1077Spanishes5952Spanishbn4190Banglath4506Thaitr2180Turkishzh4484Chinesetr4832Turkishja2125Japaneseel5229Greekth2892Thaitr5752Turkishccp2408Chakmachr7280Cherokeefr1746Frenchchr5533Cherokeeel4333Greekbn2047Banglaen4237Englisheo6407 Esperantoja802Japanesebn1491Banglaar1488Arabicja7025Japaneseru2452Russianru5038Russianccp2961Chakmael5174Greekth7102Thaien1181Englishes3882Spanishtr6017Turkishccp1768Chakmaes3992Spanishbn5337Banglachr3049Cherokeefr3107Frenchiu613 Inuktitutzh1735Chineseel5420Greekel1067Greekel1255Greeken2711Englishth3059Thaiiu1979 Inuktitutes871Spanishru216Russianth5954Thaibn5519Banglachr4689Cherokeebn7597Banglaiu5519 Inuktitutbn3342Banglachr66Cherokeechr2114Cherokeeeo4976 Esperantoccp799Chakmael3569Greekfr464Frenchfr1003Frenchja4189Japaneseja5487Japaneseja6463Japanesetr7138Turkishbn2008Banglath6105Thairu251Russianzh2700Chineseru3099Russiansr1973Serbiantr7038Turkisheo4388 Esperantoru2874Russianel1274Greekfr4696Frenchbn8040Banglaen1550Englishes3780Spanisheo7933 Esperantofr4163Frenchfr1304Frenchru6653Russianiu314 Inuktitutth4365Thaija5530Japanesear5906Arabicccp7645Chakmafr2916Frenchsr2998Serbianccp6311Chakmaiu4107 Inuktitutru863Russianchr7104Cherokeeel2393Greekes4549Spanishru2298Russianja3362Japanesechr5712Cherokeeru2911Russianru5607Russianzh1680Chinesetr2422Turkishbn7470Banglaiu303 Inuktitutar5926Arabices5193Spanishiu4958 Inuktitutel5932Greekiu5835 Inuktitutel1404Greekja3575Japanesebn6996Banglachr1661Cherokeear6582Arabicth6738Thaizh3141Chineseel2066Greektr1903Turkishru4511Russianes1744Spanishsr1846Serbianchr4713Cherokeees637Spanishes5146Spanishfr4241Frenchiu6542 Inuktituten868Englishja2586Japaneseth2031Thairu3894Russianar4854Arabicen2922Englishccp5515Chakmaru2949Russianchr3185Cherokeebn7178Banglaeo7028 Esperantosr5017Serbianccp4184Chakmachr7926Cherokeeeo1901 Esperantoja6434Japanesezh4399Chineseiu7653 Inuktitutfr1774Frenchiu3635 Inuktitutth711Thaibn800Banglabn1599Banglaen1085Englishru8131Russianru5785Russiansr7420Serbianar2575Arabiciu2051 Inuktitutbn2506Banglaen4435Englishccp1518Chakmatr7224Turkishel1123Greekar5780Arabicar1356Arabiceo156 Esperantoar4560Arabiceo2548 Esperantosr2912Serbianzh484Chinesezh4611Chinesear5947Arabicru4384Russianja7216Japaneseru6792Russianel2466Greekiu6500 Inuktituteo4748 Esperantoel6860Greekeo3517 Esperantoja2048Japanesetr2292Turkishel4705Greekfr3017Frenchccp1358Chakmaen3823Englishar8093Arabices1218Spanishccp477Chakmafr3138Frenchfr4766Frenchtr4816Turkishzh2526Chinesees1676Spanishtr7575Turkishes350Spanishes4619Spanishfr2178Frenchsr1737Serbianen1803Englisheo2791 Esperantofr3215Frenchbn3201Banglachr1842Cherokeechr3378Cherokeear6609Arabicfr324Frenchsr4389Serbianth4526Thaizh1853Chineseth5726Thaiiu8097 Inuktitutar4495Arabicccp106Chakmath4913Thaitr4632Turkishel2886Greekel5875Greekja3721Japaneseccp6058Chakmazh180Chinesezh5808Chinesees3636Spanishes5006Spanishccp2997Chakmaeo4324 Esperantoen3412Englishen7182Englishccp4359Chakmaiu6361 Inuktitutja6251Japanesechr445Cherokeesr1423Serbianccp6376Chakmael621Greekar6542Arabictr3460Turkishen7640Englishtr7683Turkishen3077Englishth6482Thairu6609Russianru3695Russianfr3420Frenchccp998Chakmaeo2664 Esperantoel655Greekja936Japaneseccp616Chakmaccp1333Chakmafr4586Frenchth744Thaieo6255 Esperantoeo1646 Esperantoeo2870 Esperantoccp4786Chakmaiu2374 Inuktitutes3217Spanishfr5070Frenchth3462Thaieo5728 Esperantoth305Thaitr2190Turkishja4749Japaneseru7601Russianes5664Spanishsr6845Serbianar6068Arabiciu7050 Inuktitutsr6908Serbianiu1385 Inuktitutzh3035Chinesear3044Arabicbn3259Banglael278Greeken363Englishes4065Spanishel3409Greekfr5313Frenchbn3937Banglaiu5608 Inuktitutsr5352Serbiansr5439Serbianja856Japaneseth5162Thairu1504Russianth2935Thaith315Thairu3514Russianzh5215Chineseja8025Japanesefr7314Frenchja3630Japanesebn2760Banglatr1211Turkishja6398Japaneseru3102Russianccp604Chakmaiu7862 Inuktitutja6829Japaneseru360Russiantr1658Turkishar1534Arabiciu3077 Inuktitutbn7713Banglaiu2160 Inuktitutth2112Thaizh6550Chinesees3528Spanishiu6214 Inuktituteo7630 Esperantofr5211Frenchtr3677Turkishen8185Englishja6706Japanesechr4921Cherokeezh2753Chinesefr4092Frenchzh7438Chinesechr2124Cherokeeccp5922Chakmazh4350Chineseel4469Greeksr2489Serbiantr7538Turkishen1308Englishiu7255 Inuktitutth865Thaieo4413 Esperantotr4744Turkishbn7880Banglaeo1261 Esperantoth7009Thaies4433Spanishru5464Russianar522Arabicfr4715Frenchar1322Arabicccp1736Chakmachr1245Cherokeees5880Spanishru6844Russianen5340Englishar6184Arabicccp3591Chakmaru2120Russianja5091Japaneseth1125Thaitr3365Turkishtr2673Turkishru1890Russianchr3864Cherokeeccp3523Chakmaes439Spanishzh4058Chineseccp6278Chakmabn7490Banglabn4073Banglaar3881Arabices1306Spanishes6776Spanishfr3827Frenches6637Spanishiu3368 Inuktitutja1213Japaneseru6449Russiansr6279Serbianth549Thaien2659Englishru6421Russianchr1939Cherokeezh5451Chineseccp2028Chakmaeo3503 Esperantoar7639Arabicbn1093Banglaeo6204 Esperantochr3910Cherokeear6440Arabicru750Russianzh301Chineseel142Greekccp6403Chakmael4896Greekar2779Arabicru742Russianchr6465Cherokeezh3443Chineseen3962Englishel3998Greekes6824Spanishar4596Arabicja5032Japanesesr533Serbianchr3479Cherokeeccp956Chakmachr7924Cherokeeja6616Japanesesr1604Serbianar1130Arabicth536Thaiiu4642 Inuktitutja5835Japaneseccp4336Chakmaiu4853 Inuktituttr2382Turkishccp854Chakmafr3544Frenchiu6118 Inuktitutja2710Japaneseja7163Japanesefr4486Frenchar5728Arabicchr7006Cherokeezh2598Chinesear730Arabiczh3863Chinesear4293Arabicbn5279Banglath4324Thaieo1718 Esperantoel132Greekar5153Arabicchr1444Cherokeeeo639 Esperantoiu3298 Inuktitutbn6260Banglachr7837Cherokeees4004Spanishja1025Japanesesr310Serbianfr8068Frenchfr4171Frenches3790Spanishel373Greekes2051Spanishes2815Spanishiu5367 Inuktitutja2507Japaneseeo455 Esperantoen8070Englishiu847 Inuktituteo6936 Esperantoeo375 Esperantozh7857Chinesees7283Spanishen3229Englishchr7846Cherokeeru773Russianen337Englishja4416Japanesees4342Spanishru2802Russiantr3048Turkishsr6555Serbianfr1105Frenchfr7363Frenchfr3886Frenchzh5579Chineseru7352Russianru1595Russianar403Arabicru4569Russianth2432Thaiel1538Greeken7781Englishzh593Chineseth37Thaies865Spanishchr418Cherokeeja5739Japanesetr1962Turkishes7912Spanishchr1991Cherokeeel6159Greekes3634Spanishes6119Spanishen4346Englishtr4224Turkishru1823Russianes4771Spanishccp1567Chakmazh6026Chineseiu6240 Inuktitutja2330Japanesesr6591Serbiantr6882Turkishes5563Spanishbn436Banglaiu3390 Inuktitutbn8133Banglath4078Thaieo4952 Esperantoeo7417 Esperantoeo1850 Esperantochr2367Cherokeear485Arabicel6521Greekchr7644Cherokeefr5440Frenchiu7128 Inuktitutchr4247Cherokeechr7558Cherokeeccp6810Chakmaccp4356Chakmaja1360Japanesesr3245Serbianzh5777Chineseja1947Japanesetr7137Turkishja4075Japanesees3594Spanishsr1894Serbianen154Englisheo3605 Esperantoiu5145 Inuktitutfr4225Frenchsr4415Serbianth1481Thaizh3867Chineseth3117Thaitr4524Turkishen5895Englishzh396Chineseccp4046Chakmaeo7063 Esperantoel5976Greekes2317Spanishiu4146 Inuktitutth5097Thaien6783Englishiu6010 Inuktituten6105Englishen4201Englishiu2647 Inuktitutzh3746Chinesefr152Frenchiu1720 Inuktitutth7855Thaija2100Japanesees7124Spanishfr7964Frenchzh7326Chinesetr1957Turkishccp6446Chakmaeo71 Esperantobn4191Banglaiu575 Inuktitutiu7409 Inuktitutiu802 Inuktitutru3023Russianar5051Arabices7753Spanishsr5244Serbianbn7083Banglaeo3434 Esperantotr4134Turkishtr6868Turkishar490Arabicja7153Japanesechr7665Cherokeeen4830Englishsr2799Serbianccp7769Chakmath8057Thaieo5730 Esperantoiu3952 Inuktituten7859Englisheo7628 Esperantozh7691Chinesebn3529Banglafr578Frenchth3197Thaizh303Chineseja6713Japaneseel5720Greekes2419Spanishzh6365Chinesesr2721Serbianar823Arabicbn2829Banglazh4037Chinesees2914Spanishsr490Serbianth1513Thaifr6208Frencheo5555 Esperantobn3887Banglafr5658Frenchccp7562Chakmaja2141Japaneseel4932Greekja1411Japaneseeo4172 Esperantoen3864Englishiu1725 Inuktitutzh2077Chinesezh6533Chinesebn3303Banglabn5669Banglaeo918 Esperantotr4717Turkishiu7962 Inuktitutbn4728Banglaccp5301Chakmaeo846 Esperantoja7900Japaneseel7559Greekes5042Spanisheo6825 Esperantosr2360Serbiansr7888Serbianar720Arabices2088Spanishbn42Banglachr2538Cherokeeeo1208 Esperantofr8061Frencheo3294 Esperantobn755Banglaes6630Spanishbn5904Banglabn2689Banglaccp391Chakmachr3840Cherokeeel1439Greekccp2020Chakmazh2642Chinesees6125Spanishes7219Spanishja807Japanesebn2825Banglael1275Greekar3407Arabices6495Spanishth4019Thaiel3294Greekchr6621Cherokeesr606Serbianar4197Arabicru2057Russiansr3095Serbianen269Englisheo5307 Esperantozh2894Chineseiu3758 Inuktitutiu1969 Inuktitutbn4520Banglaen921Englishiu7437 Inuktitutzh3789Chineseth4560Thaichr3599Cherokeeiu2796 Inuktituttr930Turkishja6918Japanesees4024Spanishel2821Greekes5359Spanishsr7544Serbianth2794Thaiel5220Greekzh3362Chineseja5144Japanesear7276Arabicchr7870Cherokeeiu4428 Inuktitutchr4711Cherokeear5445Arabicfr1465Frenchiu1857 Inuktitutfr8026Frencheo2173 Esperantoja1198Japaneseeo4845 Esperantosr3788Serbiantr3324Turkishzh3689Chineseen6427Englishtr3838Turkishel6165Greekbn1156Banglaes7847Spanishtr3553Turkishchr1830Cherokeear4511Arabices5025Spanishja3590Japanesechr5104Cherokeeeo2095 Esperantotr3082Turkishsr2567Serbianar2565Arabiciu1445 Inuktitutzh5975Chineseeo3073 Esperantoar6172Arabiceo6646 Esperantoja1765Japaneseja1064Japanesetr2220Turkishel7629Greekes551Spanishfr2342Frenchru1627Russianel1307Greekth831Thaies6492Spanishccp664Chakmael1008Greekel1047Greekfr2427Frenchbn1707Banglath2947Thaien3359Englishes7057Spanishchr3956Cherokeeiu972 Inuktitutar1501Arabiczh4153Chinesebn433Banglaru7598Russianccp7097Chakmaes4254Spanishar6659Arabices5911Spanishsr7449Serbianccp1635Chakmaiu3197 Inuktitutes2149Spanishen6519Englishru4078Russianen5589Englishja1303Japaneseth2867Thaith7247Thaith7281Thaifr1483Frenchen6878Englishth3382Thaichr5940Cherokeeth5627Thaizh6513Chineseeo7505 Esperantoen476Englishfr7434Frenchzh6947Chinesear2812Arabiczh5750Chineseccp1872Chakmaja4308Japanesezh8175Chinesechr4168Cherokeeja6514Japanesefr1238Frenchru7326Russianiu2765 Inuktitutsr82Serbianru1860Russianbn4322Banglachr3206Cherokeeth1514Thaifr2039Frenchfr6224Frenchel8059Greekth1067Thaien3489Englisheo5176 Esperantoeo4874 Esperantochr848Cherokeeru1312Russianbn7165Banglafr2799Frenchfr6969Frenches2997Spanishel6072Greekccp7638Chakmaeo5204 Esperantoes6930Spanishfr4328Frenchbn6165Banglasr8072Serbianel3799Greekeo7168 Esperantoiu7775 Inuktitutsr285Serbiantr5821Turkishel7274Greekar1456Arabicel5658Greeken8022Englishar952Arabicth2043Thaitr7644Turkishzh6050Chineseen6125Englishchr655Cherokeefr7906Frenchru7367Russianel6575Greekzh4820Chinesebn1857Banglael1821Greekar7775Arabicfr6673Frenchsr6654Serbiansr823Serbiansr2245Serbianes3044Spanishru7172Russianbn7871Banglath4678Thaien6347Englishzh4921Chinesees6642Spanishsr7872Serbiantr6591Turkishfr6625Frenchccp249Chakmael3356Greekfr1173Frenchen6677Englishja5299Japanesetr409Turkishchr5267Cherokeeja6415Japaneseiu7189 Inuktitutccp5347Chakmaccp5837Chakmasr2345Serbianja51Japanesees7292Spanishel6232Greekel13Greekeo8038 Esperantoiu883 Inuktitutru2167Russiantr822Turkishtr2533Turkishbn2736Banglaen7400Englishja5544Japaneseeo1355 Esperantoru3398Russianzh5692Chineseel3800Greekes1067Spanishccp6825Chakmafr6301Frenchtr1873Turkishar2913Arabicar2077Arabiczh432Chineseen5602Englishen7433Englishiu180 Inuktitutbn6449Banglaiu3371 Inuktitutar2789Arabicel699Greekes2524Spanishiu913 Inuktitutja6503Japaneseel4647Greekbn2062Banglaiu7591 Inuktituteo5056 Esperantoccp273Chakmabn2367Banglaes3225Spanishja6101Japaneseru4316Russianeo7882 Esperantoth5625Thaiel6655Greekel4608Greeken5279Englishel127Greekbn6222Banglachr4196Cherokeees5829Spanishtr695Turkishtr6565Turkishiu7139 Inuktitutbn2548Banglaes6655Spanishtr4809Turkisheo4846 Esperantoccp1529Chakmachr7343Cherokeeiu4537 Inuktitutth1246Thaija149Japaneseja832Japanesear3089Arabices5438Spanishzh1664Chineseccp7108Chakmabn1649Banglachr3844Cherokeeru3451Russianru5740Russianzh39Chineseiu6712 Inuktitutccp1971Chakmachr2298Cherokeees1588Spanishzh4985Chineseja1166Japanesefr4826Frencheo5411 Esperantoel5934Greeken2125Englishfr1404Frenchtr1862Turkishar4977Arabicsr7206Serbiantr6043Turkishel2588Greekel7130Greekzh5790Chineseen5796Englishccp4419Chakmaes4317Spanishja66Japaneseru6870Russianel3575Greekru8189Russianccp8112Chakmaes3750Spanishel7542Greekja8160Japanesees1616Spanishsr1961Serbianja406Japanesechr6363Cherokeeth7907Thaitr6230Turkishen4291Englishsr952Serbianeo4648 Esperantoiu7746 Inuktituttr1085Turkishar4530Arabicbn2420Banglael3285Greeken6147Englishen2978Englishsr5944Serbianes7048Spanishja2135Japanesesr2476Serbianja4915Japanesees6842Spanishsr7178Serbiantr3528Turkishen2281Englishiu4196 Inuktitutsr1818Serbianeo4829 Esperantoar61Arabicccp3544Chakmael7698Greekfr1142Frenchfr1288Frenchsr3647Serbianth1597Thaisr7089Serbianzh4252Chinesear5979Arabiciu2636 Inuktitutth4153Thaija7322Japaneseru6301Russianccp7196Chakmachr2370Cherokeeen5875Englishes3482Spanishchr3251Cherokeesr2070Serbiansr6716Serbianth4225Thaith6962Thaith383Thaiccp6973Chakmatr5291Turkishru6693Russianes4018Spanishar5684Arabiceo5272 Esperantosr391Serbianchr3619Cherokeeth4675Thaiar4549Arabiczh3336Chineseiu6781 Inuktitutja1032Japaneseel7857Greekccp6749Chakmaiu4751 Inuktituteo758 Esperantochr5630Cherokeeen7744Englishen764Englishiu3268 Inuktitutes5785Spanishfr795Frencheo356 Esperantoeo1036 Esperantoccp5038Chakmaeo1471 Esperantoru2321Russiansr2131Serbianen1500Englishzh2318Chineseeo5830 Esperantoiu6445 Inuktitutchr6968Cherokeetr5711Turkishzh4521Chinesezh8134Chinesees6197Spanishja6306Japaneseeo2140 Esperantozh4128Chineseel5848Greeken515Englishtr1064Turkishtr5616Turkishiu5364 Inuktitutes1342Spanishth208Thaiel6576Greekzh4980Chineseen7747Englishru3592Russianth4350Thaifr6479Frenchchr2818Cherokeeth1497Thaitr527Turkishccp3941Chakmafr3087Frenchbn7862Banglaar7608Arabiciu4168 Inuktitutbn7958Banglath2613Thaifr8119Frenchfr5766Frenchiu5194 Inuktitutccp1509Chakmael1452Greekes3872Spanishel2228Greekar1021Arabicchr4850Cherokeechr5550Cherokeechr7432Cherokeees2864Spanishfr4939Frenchth67Thaisr2379Serbianen3793Englishsr4761Serbianchr7261Cherokeeel3551Greekccp8189Chakmaiu3079 Inuktitutccp1198Chakmachr1335Cherokeeccp6467Chakmachr3390Cherokeefr7351Frenchbn6293Banglaccp2974Chakmabn409Banglaja3119Japanesear3961Arabicfr2912Frenchar5778Arabicth1162Thaizh5985Chineseen5852Englishchr2942Cherokeeeo437 Esperantozh4416Chineseccp471Chakmaru717Russianfr3763Frencheo5236 Esperantoes4400Spanishru6127Russianel1541Greekel2528Greekja2482Japaneseiu4942 Inuktitutja6035Japaneseru3924Russianccp2355Chakmafr7374Frenchja457Japanesear5632Arabiczh6248Chinesebn2722Banglachr6700Cherokeetr655Turkishbn2706Banglabn3591Banglasr3446Serbiantr3672Turkishru3158Russianru2244Russianth2512Thaitr2171Turkishen3978Englishen687Englishen6260Englishccp3541Chakmatr7854Turkishar3083Arabicfr6377Frenchth3522Thaisr1462Serbianfr7643Frenchzh3056Chinesees2065Spanishja3782Japanesechr1445Cherokeeiu2016 Inuktitutchr3595Cherokeeen1958Englishccp6014Chakmaiu6092 Inuktituteo2126 Esperantotr2850Turkishar6082Arabiceo2036 Esperantoru1749Russianar2230Arabicbn3549Banglachr3796Cherokeeel3413Greekeo1370 Esperantotr4844Turkishzh5089Chineseen7275Englishfr5490Frenchiu5280 Inuktitutja822Japanesesr4212Serbianar3817Arabiceo3782 Esperantofr7481Frenchar1933Arabicja723Japaneseru1793Russianar6055Arabicja1199Japanesesr7726Serbiansr7254Serbianeo4120 Esperantoja7520Japaneseru4160Russianbn5063Banglachr4319Cherokeesr2237Serbianiu1823 Inuktitutzh6905Chineseiu2639 Inuktitutel6116Greeken6273Englishru3412Russianes7310Spanishbn3016Banglaiu5149 Inuktitutel5281Greekfr4037Frenchsr6182Serbianchr682Cherokeezh3997Chineseth1594Thairu3155Russianfr4877Frenchzh7692Chineseiu3855 Inuktitutar6429Arabicru3354Russianar5041Arabicar790Arabicccp5213Chakmael3628Greekbn5030Banglaccp4176Chakmachr4074Cherokeesr6840Serbiantr1391Turkishchr4815Cherokeetr2209Turkishfr2862Frenchiu2048 Inuktitutel5849Greekja5651Japaneseja7445Japanesezh7915Chineseen7423Englishfr4835Frenchccp4236Chakmachr2248Cherokeeen5100Englisheo6961 Esperantoru6385Russianru7762Russianth946Thaith5059Thaizh2830Chineseel4548Greekiu1076 Inuktitutth1540Thaifr1415Frenchchr5938Cherokeeccp2403Chakmath4773Thaiccp7213Chakmafr5955Frenchfr6909Frenchzh7151Chinesetr5468Turkishes3786Spanishja7792Japanesezh172Chinesesr6865Serbianel2159Greeken8102Englishes1052Spanishes1943Spanishsr6191Serbianes7726Spanishchr8051Cherokeeru69Russianiu4409 Inuktitutbn3099Banglath3220Thaith7641Thaisr6482Serbiansr1605Serbianar2949Arabicsr304Serbianru1108Russianar2646Arabicbn2229Banglaru4119Russianar5098Arabicar5173Arabicel4355Greekar1827Arabicchr2900Cherokeezh1838Chinesebn2327Banglabn5973Banglael2888Greekeo5053 Esperantoeo7650 Esperantoja3566Japanesear1820Arabicen3155Englishru1270Russianccp3256Chakmath5341Thaiel6570Greekchr5034Cherokeesr2468Serbianccp2362Chakmaja6075Japaneseel434Greekchr4523Cherokeebn1126Banglasr3779Serbianfr4843Frenchar5525Arabicsr1476Serbianbn5352Banglael7055Greekccp4979Chakmaar5802Arabicel6535Greekccp5795Chakmath4949Thaija3621Japanesesr2116Serbianel80Greekchr5797Cherokeear5921Arabicar7190Arabicel3195Greekchr5136Cherokeeja6381Japanesefr606Frenchja3284Japaneseen4332Englishes7035Spanishru7726Russianfr1251Frenchsr1035Serbianen179Englishiu5794 Inuktitutsr3583Serbianth7207Thaitr1240Turkishel6100Greekes4244Spanishfr2148Frencheo8078 Esperantoru8141Russianja6257Japaneseccp4927Chakmaes1031Spanishfr3799Frenchru1013Russianen1959Englishtr7189Turkishes2814Spanishzh819Chineseel5150Greekes744Spanishtr360Turkishtr1043Turkishchr1681Cherokeechr2737Cherokeeeo5563 Esperantoes5276Spanishja2061Japanesechr5618Cherokeeel5095Greektr6141Turkishru7313Russiansr710Serbiansr6188Serbiantr1934Turkishen2057Englishchr4063Cherokeeiu2827 Inuktitutbn5588Banglael3855Greekchr1739Cherokeechr2975Cherokeefr331Frenchchr1022Cherokeeel1119Greektr7345Turkishel3266Greekru684Russianchr866Cherokeeja3289Japaneseiu7937 Inuktituten6853Englishes8151Spanishiu6354 Inuktitutru1522Russianen5609Englishar7475Arabicfr2817Frenchzh6289Chinesefr1632Frenchsr47Serbianth682Thaichr5081Cherokeezh1721Chinesezh7483Chineseel2169Greekchr279Cherokeechr4259Cherokeechr1560Cherokeefr975Frenchja5784Japaneseiu825 Inuktitutel7785Greekes5206Spanishiu4875 Inuktitutja5325Japanesesr6923Serbianes4222Spanishja5138Japanesesr428Serbianel6712Greekja5713Japaneseel855Greekiu863 Inuktitutar3879Arabicru1243Russianth6441Thaisr1483Serbianchr3998Cherokeeeo489 Esperantochr4897Cherokeeccp3582Chakmachr6109Cherokeeen6706Englishja1265Japanesefr5243Frenchtr7079Turkishccp299Chakmaen4446Englishchr6913Cherokeeen2284Englishes1995Spanishth88Thaiar7101Arabiceo4671 Esperantoeo5811 Esperantoes5405Spanishja6581Japaneseeo952 Esperantoen6619Englishar5847Arabicru4194Russianchr6490Cherokeesr4384Serbianccp5965Chakmasr3258Serbiansr8182Serbianar7325Arabicth3128Thaisr3082Serbiansr722Serbianccp8011Chakmazh214Chinesear7230Arabicfr5716Frenchtr7091Turkishsr1257Serbianeo8006 Esperantozh3020Chinesechr7647Cherokeesr2818Serbiansr7670Serbianar3680Arabicccp4774Chakmaeo3430 Esperantosr4122Serbiantr1390Turkishen7455Englishzh433Chineseeo5442 Esperantobn6145Banglaeo936 Esperantofr3519Frenchccp2921Chakmaeo3344 Esperantofr2294Frenchccp847Chakmaen3861Englisheo3193 Esperantoeo4330 Esperantoth334Thaieo5893 Esperantochr2816Cherokeees4756Spanishtr6431Turkishchr246Cherokeeel3783Greekru3817Russiansr5788Serbianen6672Englishtr7715Turkishfr8049Frenchsr7345Serbianen6649Englishja668Japaneseccp1598Chakmael912Greekchr6864Cherokeechr6Cherokeetr2372Turkishfr2260Frenchiu5743 Inuktitutel2060Greekth156Thaibn1576Banglaeo6476 Esperantochr1933Cherokeechr5985Cherokeeeo3038 Esperantoen2368Englishbn7127Banglaeo7035 Esperantofr7521Frenchru5408Russianes2147Spanisheo5670 Esperantochr2483Cherokeetr676Turkishbn672Banglael4626Greekchr7186Cherokeees1046Spanishar4400Arabicru6787Russianja156Japaneseru7779Russianchr1098Cherokeeeo6481 Esperantochr4157Cherokeechr3979Cherokeeja5603Japanesebn5274Banglaen555Englishccp1593Chakmaccp7442Chakmaen7122Englishes1829Spanishccp7222Chakmaes2533Spanishel4323Greekja5390Japanesees503Spanishru1262Russianeo7634 Esperantosr1192Serbianiu6912 Inuktitutsr6939Serbianen7766Englishtr1475Turkishsr6367Serbianzh798Chinesezh7633Chineseiu6915 Inuktitutbn5895Banglath5812Thaibn1136Banglael6040Greekja4821Japanesees1183Spanishtr349Turkishth4438Thaieo3347 Esperantosr5327Serbiansr7637Serbianes1936Spanishar3593Arabicen3714Englishel4796Greeksr1129Serbianccp175Chakmazh4649Chinesezh7273Chinesees1143Spanishel3166Greekja5691Japanesezh2907Chinesebn3993Banglatr8162Turkishzh6023Chinesesr1214Serbianchr3924Cherokeesr1237Serbianru3801Russianar4891Arabicel919Greekja6347Japaneseth8182Thaizh1028Chinesechr8105Cherokeees5129Spanishfr4415Frenchiu5483 Inuktitutiu6247 Inuktitutth5675Thaitr6838Turkishzh4490Chinesebn459Banglath6251Thaiiu1360 Inuktitutel7135Greekzh158Chinesees7289Spanishtr3859Turkishar7051Arabicen4343Englishtr5698Turkishes2467Spanisheo5260 Esperantoja4195Japanesezh488Chineseja1584Japaneseiu7955 Inuktitutiu2641 Inuktitutth3279Thaiiu7990 Inuktitutbn3523Banglaen5747Englishbn4886Banglaar6831Arabicru5722Russianes8109Spanishfr2952Frenchbn6304Banglaccp1362Chakmazh6483Chinesezh6252Chineseccp4562Chakmazh6465Chineseen5836Englishccp2944Chakmatr6034Turkishth3925Thaiccp5788Chakmafr3383Frenchth1758Thaibn4479Banglazh4437Chinesear3422Arabiciu2902 Inuktitutchr6795Cherokeetr2006Turkishbn1370Banglaeo7259 Esperantoel3139Greekfr1580Frenchfr2367Frenches5391Spanishbn6443Banglaru7833Russianfr5888Frenches846Spanishes7495Spanishiu6372 Inuktitutccp767Chakmasr7201Serbianth1335Thaith4930Thaith6390Thaien3747Englishccp985Chakmatr2767Turkishzh538Chinesees2805Spanishfr2721Frenchfr721Frenchen3432Englishbn4387Banglaeo5738 Esperantoja1086Japanesefr3458Frenchtr384Turkishja569Japaneseth5652Thaibn638Banglaeo894 Esperantoel5826Greekeo5020 Esperantoar2525Arabicfr4666Frenchen5940Englishar1971Arabicar7065Arabicar5954Arabicsr2536Serbianzh8139Chinesesr2278Serbianccp7276Chakmazh5855Chinesees6428Spanishiu4927 Inuktitutru3827Russianchr4752Cherokeeccp619Chakmachr2833Cherokeeiu2275 Inuktitutru2150Russianth294Thaien299Englishes5326Spanishel6330Greekchr8125Cherokeear1916Arabicbn242Banglasr178Serbiantr729Turkishen1142Englishja4307Japanesear7273Arabicsr7622Serbianfr3931Frenchfr6460Frenchru4448Russianbn1808Banglachr3779Cherokeeiu6608 Inuktituteo1491 Esperantoar3502Arabicfr3534Frenchtr5581Turkishar3835Arabicar6442Arabicel2182Greekfr8115Frenchru3840Russianru2932Russianbn35Banglazh6302Chinesetr6687Turkishen4430Englishth3918Thaisr1454Serbiantr3648Turkishru8029Russianzh4700Chinesezh7959Chineseth2567Thairu1774Russianar2817Arabiciu1226 Inuktitutja3221Japanesear7025Arabictr2051Turkisheo7867 Esperantoth1625Thaija8172Japaneseth7968Thaien1330Englishru7022Russiansr2525Serbianes3824Spanishbn7447Banglaja1810Japaneseen2403Englishchr1262Cherokeebn3081Banglaja3789Japanesear6928Arabictr1174Turkishtr5005Turkishru4894Russianchr2346Cherokeeccp7167Chakmaeo1296 Esperantoeo1604 Esperantozh5616Chinesetr5322Turkishchr3351Cherokeesr7837Serbianiu3215 Inuktitutar2015Arabicccp2051Chakmaccp2814Chakmaja3874Japanesebn2140Banglath2688Thaizh7491Chinesechr3867Cherokeear3850Arabicbn7439Banglazh3658Chinesesr5840Serbiansr8090Serbianfr8188Frenchth3055Thaitr561Turkishru4073Russianchr2304Cherokeeen5925Englishbn7277Banglachr3841Cherokeetr6664Turkishchr5276Cherokeechr1442Cherokeeeo6013 Esperantoiu5365 Inuktitutel6101Greekth873Thairu1039Russianbn7041Banglasr488Serbianel1628Greekar4321Arabiceo7223 Esperantoen6528Englishru3300Russianiu6098 Inuktitutbn7590Banglatr415Turkishbn584Banglaccp3370Chakmatr8149Turkishzh2432Chineseccp7223Chakmaru5955Russianja6542Japaneseeo1615 Esperantoth7628Thaizh845Chinesefr896Frenchar3238Arabicbn2605Banglaccp8170Chakmaiu6374 Inuktitutbn2341Banglabn5040Banglaru2165Russianzh2879Chineseel5461Greekchr2912Cherokeefr3389Frenchen1845Englishsr3669Serbianth3962Thaith6983Thaies7333Spanishchr2786Cherokeear2474Arabicccp1061Chakmaeo3799 Esperantoccp6055Chakmachr6012Cherokeeccp4784Chakmath7322Thaien7763Englishfr6323Frenchiu7253 Inuktitutel7672Greekfr5291Frenchen3350Englishfr3140Frenchiu1159 Inuktitutfr8008Frenchfr7462Frencheo4308 Esperantofr437Frenchen6609Englishfr5532Frenchth1111Thairu7069Russianru8021Russianru705Russianeo4982 Esperantoeo5672 Esperantoen4196Englishiu1446 Inuktitutiu2215 Inuktitutzh2396Chineseiu3599 Inuktituten3283Englishsr1163Serbianiu2220 Inuktituteo7712 Esperantoru5293Russianth6603Thaiccp4201Chakmaen3716Englishzh1561Chinesechr5219Cherokeebn5724Banglasr6525Serbianru5101Russianen5454Englishfr2986Frenchel710Greekar2825Arabictr2225Turkishja1715Japanesezh929Chinesechr4398Cherokeeiu6153 Inuktituten3198Englisheo3612 Esperantobn4453Banglath5375Thaiiu5523 Inuktitutchr7725Cherokeeeo3817 Esperantoes3771Spanishzh7103Chinesezh6917Chineseja5949Japaneseel2241Greekchr6132Cherokeechr5941Cherokeeru6451Russianfr607Frenchsr8122Serbianes4121Spanishel6917Greekar8173Arabicar5390Arabicja7800Japanesebn6437Banglael2187Greekel6647Greekzh6380Chineseel3679Greeken2517Englishru90Russianzh5202Chinesetr6542Turkishen1695Englishar4039Arabicsr2970Serbianar2272Arabices6819Spanishfr588Frenchru7831Russianth7215Thaisr3577Serbianeo6651 Esperantosr1285Serbianiu2204 Inuktitutzh7270Chineseru6695Russianel532Greekes2318Spanishja1549Japaneseel5055Greekfr1728Frenchja2585Japaneseja1388Japanesesr7749Serbiantr3243Turkishsr6052Serbianchr2485Cherokeeel6919Greekth6489Thaien2634Englishth6541Thaibn3198Banglaccp3062Chakmael2540Greekja4562Japanesezh5563Chineseru5356Russianen4072Englishen4777Englishen6083Englishth7391Thaiel480Greekfr1029Frenchth5538Thaiar6904Arabicth4731Thaitr2107Turkishccp1087Chakmasr1240Serbianth6882Thaies627Spanishel5048Greeken7562Englishfr1410Frenchth4564Thaies184Spanishchr6030Cherokeeel6179Greekja5731Japanesesr6690Serbianes4904Spanishsr6985Serbiansr4036Serbiantr7408Turkishen536Englishen1711Englishbn3882Banglachr8087Cherokeeen3277Englishen6091Englisheo1579 Esperantochr7397Cherokeebn2219Banglael5331Greekzh128Chinesear7855Arabictr6453Turkishes6247Spanishen5240Englishru6830Russianar1034Arabicbn931Banglath7373Thaien1533Englishru7612Russianiu2719 Inuktitutes3059Spanishccp1399Chakmasr946Serbianen6203Englishja4713Japanesesr1336Serbianen2418Englisheo5214 Esperantofr3669Frenchbn2139Banglaen4598Englishja2409Japaneseiu7584 Inuktitutiu3916 Inuktituteo874 Esperantofr774Frencheo7580 Esperantoth3777Thaibn5511Banglael2045Greekru8051Russianchr1202Cherokeesr3698Serbianbn4923Banglaccp3252Chakmafr6022Frenchth6897Thaien4767Englisheo7430 Esperantoen2030Englishchr2551Cherokeetr6239Turkishfr6320Frenchth605Thairu1042Russianiu2456 Inuktitutar6845Arabicchr578Cherokeeja2995Japaneseiu6624 Inuktitutbn5815Banglaccp1040Chakmath6196Thaibn2103Banglaccp4450Chakmachr346Cherokeechr2559Cherokeeja1412Japaneseja5113Japaneseru6084Russianeo8108 Esperantoth1229Thaien6022Englishel7428Greekar3668Arabicbn6679Banglaes7340Spanishth1087Thaieo786 Esperantozh5120Chinesechr3309Cherokeeeo185 Esperantoja3633Japaneseeo6070 Esperantoccp5115Chakmath4476Thaieo3770 Esperantofr2244Frenchzh5011Chineseel122Greekchr2224Cherokeetr1700Turkishth5039Thaiccp1150Chakmaru7600Russianbn1368Banglafr7954Frenchja7148Japaneseiu5774 Inuktitutja3794Japanesetr5977Turkishth113Thaiar4782Arabicchr4478Cherokeeth2863Thaiar2642Arabicen4111Englishsr7940Serbianeo2108 Esperantoar7928Arabicel1623Greekth3385Thaiar2738Arabices1962Spanishtr6540Turkishbn6617Banglachr1675Cherokeefr5442Frenchja4977Japanesesr89Serbianja1170Japaneseccp3180Chakmaja6299Japanesesr6142Serbianel5830Greekccp4447Chakmaiu4618 Inuktitutru6199Russianfr3734Frenchsr5719Serbianes7353Spanishsr5195Serbianccp2340Chakmaja3322Japaneseth7077Thaiiu5480 Inuktitutes6472Spanishen1532Englishja7981Japaneseja1044Japaneseth2648Thaiar5570Arabicchr4265Cherokeeen1426Englishel2668Greeken3048Englishfr3588Frenchbn7653Banglasr2586Serbiantr1867Turkishen1196Englishen2959Englishth871Thaichr7522Cherokeechr5794Cherokeetr1767Turkishsr2554Serbianzh4871Chinesear7852Arabicbn5880Banglatr4131Turkishru636Russianiu2720 Inuktituten1401Englishccp2844Chakmael7468Greektr2246Turkishccp4910Chakmaen236Englishfr4864Frenchiu1328 Inuktitutfr2535Frenches7815Spanishsr7494Serbianel7947Greekzh5381Chineseccp7472Chakmaja5694Japaneseth4309Thaija3742Japanesetr7848Turkishen4337Englishen4057Englishel1236Greekja1039Japanesebn3446Banglaes4885Spanishzh4508Chineseen8155Englishchr5335Cherokeees2229Spanishru2690Russianchr7943Cherokeeru6973Russiantr4219Turkisheo5405 Esperantobn6933Banglaiu4091 Inuktitutja6761Japanesear5726Arabicsr7414Serbianbn6510Banglabn4648Banglachr1400Cherokeeen4518Englishiu1326 Inuktitutja1084Japaneseja7078Japaneseen5561Englishel3422Greekccp5100Chakmatr7388Turkishel3671Greekel3879Greekzh1150Chinesear4361Arabicbn8094Banglachr5585Cherokeeeo4192 Esperantoiu6487 Inuktitutfr4600Frenchiu3168 Inuktitutth2365Thaiar4353Arabicel2448Greeksr1507Serbianja7775Japaneseccp3603Chakmaeo4125 Esperantoeo5088 Esperantoth1620Thaieo1584 Esperantoth5043Thaitr4011Turkishiu4103 Inuktitutar1935Arabices2381Spanishchr5913Cherokeeiu3500 Inuktitutth2195Thaichr6384Cherokeeiu5912 Inuktitutsr3594Serbianja6567Japanesees5710Spanishbn5191Banglath4477Thairu2272Russianccp6271Chakmael3931Greekar4489Arabicel4371Greekiu2154 Inuktitutzh3934Chineseccp3563Chakmaeo964 Esperantoccp7822Chakmasr1589Serbianen6465Englishtr6384Turkishchr2444Cherokeeen6507Englishes7637Spanishru4233Russianth2929Thaiel148Greekfr1601Frenchru2094Russianfr3099Frenchth4578Thaizh1573Chineseth6184Thaiar5678Arabictr2851Turkishtr5927Turkishth5679Thaith295Thaichr6701Cherokeeiu7509 Inuktitutru6246Russianbn1869Banglachr5432Cherokeesr1772Serbiantr7062Turkishja119Japanesetr2628Turkishel3899Greekbn4094Banglazh4910Chinesear786Arabicen7608Englisheo372 Esperantofr7776Frenchchr2708Cherokeeeo8120 Esperantoeo1655 Esperantoar3570Arabiceo6126 Esperantobn3951Banglafr1496Frenchen7166Englishiu6035 Inuktitutfr684Frenchth7234Thaija10Japanesebn7332Banglazh4752Chinesesr2758Serbianel3128Greeken7523Englishru722Russianchr7931Cherokeeccp4937Chakmazh7695Chinesebn6873Banglachr2388Cherokeeeo5690 Esperantoes6821Spanishtr7883Turkishel5991Greekbn2648Banglaiu5777 Inuktitutes2404Spanishccp605Chakmazh4893Chinesees2987Spanishel3378Greekfr4920Frenchiu5373 Inuktitutja442Japanesechr1231Cherokeeja3145Japanesefr3844Frenchsr1832Serbianel1682Greeken4890Englishtr7463Turkishfr4244Frenchar6781Arabicar1427Arabiceo7626 Esperantosr2688Serbianru1183Russianar7370Arabicen7663Englishsr1606Serbianfr51Frenchru7288Russianfr940Frenchja820Japaneseiu2351 Inuktitutiu5962 Inuktitutiu1355 Inuktitutes1049Spanishsr1773Serbianru5392Russianfr6785Frenchtr6403Turkishchr7032Cherokeebn174Banglabn5779Banglachr318Cherokeeeo1990 Esperantofr6315Frenchel4470Greekccp2910Chakmaar7137Arabiciu4819 Inuktitutchr576Cherokeees6028Spanisheo2885 Esperantoja474Japaneseja4154Japanesefr7592Frenchiu956 Inuktitutes4697Spanishar2052Arabicbn3656Banglafr3981Frenchfr565Frenchel7900Greekeo457 Esperantoiu1498 Inuktitutth4610Thaieo6020 Esperantozh5152Chineseeo2818 Esperantoeo5620 Esperantoel2743Greekchr7903Cherokeees4451Spanishbn7949Banglaiu5980 Inuktitutja693Japanesetr6226Turkishen5777Englishiu94 Inuktitutes6037Spanishth3358Thaiar3254Arabicbn3260Banglaja8037Japanesechr3396Cherokeebn2182Banglaccp5393Chakmath411Thaitr2621Turkisheo7747 Esperantochr1110Cherokeear6439Arabicfr7550Frenchfr2430Frenchsr7388Serbianzh2731Chinesebn5734Banglaccp4454Chakmachr6843Cherokeeen2568Englishel2977Greekchr6809Cherokeesr4988Serbianbn7095Banglaja2296Japanesefr8018Frenchth3421Thaifr4539Frenchbn8058Banglaeo6656 Esperantobn3870Banglaeo7051 Esperantoja3667Japaneseeo2109 Esperantochr4361Cherokeeja4247Japaneseth8098Thaisr3931Serbiansr5830Serbianeo442 Esperantoth1180Thaiar4698Arabicja6597Japaneseccp6878Chakmael7731Greektr7897Turkishiu5016 Inuktitutja3573Japaneseel178Greektr4784Turkishja1304Japanesezh181Chinesees6132Spanishtr1323Turkishen4742Englishccp1885Chakmaeo248 Esperantoar6220Arabicchr5937Cherokeees7604Spanishtr6774Turkishja4430Japanesear1520Arabicccp547Chakmaccp4019Chakmabn7823Banglaru2672Russianzh4974Chinesebn3345Banglachr5471Cherokeeth4234Thaieo79 Esperantofr6153Frenchtr5264Turkishzh6438Chinesechr1992Cherokeeel5763Greekar3309Arabiceo2509 Esperantobn8108Banglaru6180Russianes3920Spanishes1827Spanishes6749Spanishfr6670Frenchchr6919Cherokeeiu3544 Inuktitutbn5659Banglabn1927Banglaja7595Japanesefr4190Frenches5294Spanishar4682Arabicsr7343Serbianar2118Arabicfr414Frenchsr2079Serbianar6297Arabicen727Englishbn3258Banglaiu2805 Inuktitutel1287Greekchr4464Cherokeechr259Cherokeeeo5342 Esperantoth4195Thaiccp3171Chakmaes2580Spanishja5972Japanesebn1323Banglachr1895Cherokeeeo4316 Esperantoja7863Japanesezh281Chinesesr609Serbianzh5926Chineseja4121Japanesezh2655Chineseeo1087 Esperantoeo4244 Esperantosr5570Serbianbn1909Banglachr7147Cherokeeccp1905Chakmaja4045Japanesetr6560Turkishsr7142Serbianbn5224Banglaiu7733 Inuktitutbn1856Banglaccp4972Chakmabn3230Banglatr5937Turkishbn6233Banglaja4733Japanesetr2390Turkishtr346Turkisheo2459 Esperantoccp1648Chakmaen1299Englishfr1893Frenchchr5790Cherokeechr1325Cherokeeth7884Thaibn3276Banglaru3428Russianru1669Russianen4700Englishel2306Greekja2004Japanesesr671Serbiansr2727Serbianccp1626Chakmaar7074Arabicbn5785Banglael1172Greektr2616Turkishtr3814Turkishzh2613Chineseel376Greekru6962Russianes3739Spanishbn7199Banglafr4411Frenchsr6641Serbianchr7722Cherokeees5732Spanishchr6739Cherokeeru5394Russianar813Arabicbn119Banglaen3638Englisheo2325 Esperantoes1287Spanishja6412Japanesesr5217Serbiantr2079Turkishth7524Thaizh4646Chineseru4036Russianiu4668 Inuktitutar3860Arabicfr419Frenchel7076Greekccp3698Chakmatr2786Turkishen5304Englishbn6790Banglaeo232 Esperantofr2696Frenchtr3264Turkishfr6234Frenchchr2053Cherokeeru4725Russianccp5985Chakmath6314Thaibn1824Banglaru1719Russianiu4108 Inuktitutiu1649 Inuktitutchr7002Cherokeechr529Cherokeeiu7800 Inuktitutchr2830Cherokeear8106Arabiceo3793 Esperantoel6841Greekth3409Thaiiu7154 Inuktitutiu6835 Inuktitutja36Japanesesr4925Serbianen6611Englishel3260Greekes5693Spanishbn7057Banglath3232Thaieo6008 Esperantochr378Cherokeeccp7643Chakmaccp3257Chakmafr7600Frenchja1643Japaneseen3524Englishes4934Spanishth5603Thaija6456Japanesetr3695Turkishel1296Greekiu1847 Inuktituteo4003 Esperantoru6103Russiansr1965Serbianfr1048Frenchru242Russianeo6071 Esperantoru1800Russiansr7934Serbianiu4744 Inuktitutth3389Thaitr5866Turkishzh4091Chineseeo4959 Esperantoeo681 Esperantozh6450Chineseth3109Thaitr5149Turkishja3290Japaneseja3063Japanesebn2049Banglaen2430Englishzh4349Chinesechr5716Cherokeeeo6681 Esperantoru4358Russiansr725Serbianth4043Thaiccp4490Chakmaru2650Russianes8133Spanishbn2154Banglasr7263Serbianja4314Japaneseru3074Russianel6180Greekiu5279 Inuktitutsr4919Serbianth4117Thaisr3822Serbianar3682Arabicar5414Arabices6688Spanishja105Japanesear3911Arabicchr5293Cherokeeel7117Greekfr5921Frenchfr7877Frenchiu2279 Inuktitutru4579Russianth5803Thaizh1271Chinesees6608Spanishzh1729Chinesezh4648Chineseja821Japanesesr3977Serbianru5460Russianbn5964Banglachr3974Cherokeeeo2246 Esperantobn3375Banglafr115Frenchzh3745Chineseel7619Greekccp530Chakmaccp4442Chakmazh185Chinesees3984Spanishsr7069Serbianbn3240Banglaeo1151 Esperantotr1233Turkishccp394Chakmaen271Englishbn187Banglazh3082Chinesees4376Spanishtr3515Turkishiu2881 Inuktitutiu1220 Inuktitutiu7740 Inuktitutth4264Thaiel4959Greekth5186Thaisr7619Serbianiu3728 Inuktitutccp2280Chakmael6292Greekru4678Russianar1405Arabiceo2275 Esperantoccp7073Chakmaja2284Japaneseiu2268 Inuktitutsr4021Serbianes4586Spanishchr3077Cherokeeja4505Japanesear7115Arabicbn5635Banglael3051Greekccp5337Chakmaru1350Russianchr4382Cherokeeru7808Russianth4488Thaisr3945Serbianbn1006Banglafr6329Frenchth6713Thaija1337Japanesechr3838Cherokeeth127Thaifr5075Frenchel7856Greeksr3081Serbianes64Spanishru3016Russianth1431Thaith1549Thaiar5516Arabicja1340Japaneseja5864Japanesetr2634Turkishtr4459Turkishiu463 Inuktitutzh2697Chineseeo1347 Esperantoiu1499 Inuktituteo7746 Esperantoel200Greeksr6807Serbianzh1414Chineseth4625Thaija363Japaneseru2201Russianzh5415Chinesees2078Spanishiu7464 Inuktitutru5756Russianiu4458 Inuktitutar2013Arabiciu2846 Inuktitutccp1380Chakmaes526Spanishth5143Thaibn6414Banglaru4378Russiansr774Serbianiu1416 Inuktitutja4640Japanesesr7578Serbianen7388Englishru1528Russianar1176Arabicar3873Arabicfr8087Frenchccp2836Chakmaiu7585 Inuktitutel3506Greekbn5345Banglachr5884Cherokeees3219Spanishes5039Spanishbn7705Banglael6958Greekth3527Thaiel3433Greekchr339Cherokeechr7384Cherokeeiu2450 Inuktitutchr2642Cherokeechr6665Cherokeear7108Arabicar4315Arabiczh294Chinesear875Arabices144Spanishel3082Greekes7018Spanishja7160Japaneseth6198Thaizh4421Chineseeo4424 Esperantoeo1589 Esperantoeo4619 Esperantobn6288Banglatr8158Turkishes6296Spanishel1076Greeksr5507Serbianzh7525Chinesear4180Arabicel5653Greekiu1580 Inuktitutfr2840Frenchel2018Greekru5428Russiansr1687Serbianeo5352 Esperantoeo2073 Esperantoiu4086 Inuktituten1327Englishtr7218Turkishen5107Englishzh2484Chinesetr209Turkishes4060Spanishes1179Spanishru1023Russianzh1786Chinesees2394Spanishiu7347 Inuktitutja890Japanesees4069Spanishsr6569Serbianbn1750Banglaru1718Russianel2572Greekel1383Greekeo2205 Esperantoeo3661 Esperantofr3836Frenchru7401Russianru2418Russiansr1135Serbianccp513Chakmatr836Turkisheo3909 Esperantobn240Banglatr5100Turkishsr2639Serbianfr6083Frenchsr2258Serbianth6138Thaichr3410Cherokeeru3168Russianes5526Spanishfr5926Frenchsr5333Serbianth6697Thaibn4050Banglachr7577Cherokeeiu7448 Inuktitutja4638Japanesetr4812Turkishja482Japaneseccp4834Chakmaes6928Spanishes5653Spanishja2457Japaneseja1946Japaneseen2932Englishen3010Englishfr342Frenchccp3940Chakmaja3280Japanesees2568Spanishru1873Russianfr102Frenchzh6994Chinesear1937Arabictr6511Turkishth1256Thaichr1397Cherokeezh7050Chinesesr3182Serbianru6663Russianchr296Cherokeechr2887Cherokeebn3347Banglaccp6565Chakmaja6419Japanesear2729Arabicar3797Arabicth3181Thaibn2793Banglaccp1265Chakmasr4595Serbiantr1628Turkishzh2004Chineseth2728Thaiiu559 Inuktitutes5657Spanishiu3255 Inuktituttr3915Turkishes7438Spanishtr1192Turkishar5675Arabicen6317Englishccp683Chakmaes3003Spanishja6106Japanesechr7437Cherokeees1818Spanishbn7591Banglafr6801Frenchar3508Arabicchr857Cherokeetr4938Turkishbn4483Banglaeo6618 Esperantoiu4437 Inuktituteo4098 Esperantoja5337Japanesefr7623Frenchsr7516Serbianen6932Englisheo67 Esperantoes903Spanishes1392Spanishfr5772Frenchen6734Englishtr5519Turkishfr7114Frenches4839Spanisheo15 Esperantoiu6952 Inuktituttr3086Turkishccp1910Chakmasr6606Serbiansr7190Serbiansr2207Serbianzh3895Chinesefr6802Frenchccp4044Chakmael3223Greektr589Turkishzh3504Chineseccp2668Chakmaiu8147 Inuktitutzh1619Chinesebn5979Banglaiu7824 Inuktitutel4736Greekiu2784 Inuktitutel6182Greekchr6797Cherokeeen4361Englishen6352Englisheo124 Esperantoth716Thaichr7743Cherokeeiu1654 Inuktitutel5242Greekru5194Russianel5994Greekbn6675Banglath2127Thaith3125Thaichr2199Cherokeear1436Arabicar6036Arabicbn4908Banglatr2791Turkishja2217Japaneseth7942Thaichr3904Cherokeechr5567Cherokeebn5615Banglaiu5928 Inuktitutar5691Arabicen1321Englishfr3286Frenchth1201Thaisr4341Serbianfr4990Frenchfr3777Frenchsr1260Serbianzh3413Chineseel7417Greekzh6073Chinesechr6474Cherokeeen2976Englishen4019Englishfr3508Frenchfr3590Frencheo7739 Esperantoar986Arabices2796Spanishes2754Spanishar3527Arabices4396Spanishen1747Englisheo7541 Esperantoar6029Arabicja1461Japaneseccp6109Chakmaccp5564Chakmaen35Englishar6999Arabicth4498Thaies3553Spanishccp1959Chakmatr6157Turkishen7175Englishes4394Spanishiu6520 Inuktitutru3582Russianru4271Russianzh7890Chinesezh3263Chineseru1046Russiantr1077Turkishbn5914Banglaar2830Arabicsr1209Serbianiu5929 Inuktitutth1464Thaiccp1538Chakmael6649Greekiu7945 Inuktitutel733Greekeo7573 Esperantoth4631Thaifr5864Frenchru5644Russianja747Japaneseel2367Greekes3135Spanishes4145Spanishes6978Spanishsr2023Serbianru4223Russianzh4560Chineseiu1780 Inuktitutja1398Japaneseel5452Greeken7143Englishiu2317 Inuktitutiu7958 Inuktitutccp133Chakmaar2871Arabicchr2680Cherokeeen648Englishbn7942Banglaes398Spanishiu1994 Inuktitutel3167Greeken7049Englisheo3160 Esperantochr6112Cherokeeiu4916 Inuktitutel765Greekru4087Russianiu4460 Inuktituten2337Englishfr850Frenchar1290Arabicru1655Russianes4346Spanishes6853Spanishiu2437 Inuktitutfr2499Frenchbn2575Banglabn2307Banglachr6218Cherokeeeo5355 Esperantochr6376Cherokeeeo227 Esperantosr2892Serbianiu757 Inuktitutru6759Russianbn5686Banglaiu3876 Inuktituttr5390Turkishen7353Englishzh1433Chineseen428Englishbn813Banglaes5606Spanishar1020Arabicccp1484Chakmael6207Greekar634Arabicen847Englishar54Arabicccp1574Chakmael4065Greeksr6035Serbianeo7107 Esperantoar6372Arabicsr6161Serbianel3968Greekru1640Russiansr4165Serbianchr1235Cherokeeccp6925Chakmaeo4529 Esperantobn7872Banglael8151Greektr784Turkishru2789Russiantr2089Turkishen341Englishsr8094Serbiantr5784Turkishth327Thaies1984Spanishzh11Chinesear792Arabiceo8049 Esperantobn185Banglaeo5572 Esperantobn336Banglaccp1627Chakmachr1585Cherokeezh1611Chinesezh2749Chinesear2654Arabiciu5660 Inuktitutzh1171Chineseiu5169 Inuktitutbn172Banglaen6718Englishtr3967Turkishiu5584 Inuktitutel1659Greekeo2891 Esperantosr2415Serbianiu2046 Inuktitutiu2152 Inuktitutiu4208 Inuktitutiu7126 Inuktitutru4825Russianchr5429Cherokeefr5204Frenchja2618Japaneseiu3978 Inuktitutbn3425Banglath6031Thaibn4603Banglaiu7793 Inuktitutel22Greekccp6577Chakmael4372Greekar3750Arabicth6880Thaien2384Englishtr6145Turkishzh4964Chinesear5320Arabicel1508Greekes2572Spanishiu3475 Inuktitutfr4127Frenchsr2594Serbianes2292Spanishel5439Greekru1211Russianeo1257 Esperantoar7220Arabicchr6862Cherokeeeo2536 Esperantotr3512Turkishtr7636Turkishfr7062Frenchel4750Greekccp7049Chakmaiu7956 Inuktitutbn849Banglaja1092Japanesesr220Serbianbn5689Banglael5486Greeken101Englishchr7377Cherokeesr4296Serbiansr7004Serbianja6157Japanesear6179Arabicar4286Arabicccp6608Chakmaen2780Englishen7220Englishccp936Chakmachr7570Cherokeechr1969Cherokeefr1798Frenchfr3801Frenchtr3811Turkishru3753Russianel7685Greektr7425Turkishen7610Englishsr7702Serbianzh769Chinesebn4987Banglath5858Thaichr4570Cherokeeja6903Japanesebn4004Banglaiu6326 Inuktituten4438Englishth616Thaifr6818Frenchja3932Japanesesr798Serbiansr1485Serbianiu185 Inuktituttr377Turkishar7908Arabicbn7763Banglaccp164Chakmaiu5950 Inuktituttr6245Turkishja3827Japanesetr7328Turkishtr6637Turkishccp4337Chakmasr4153Serbiansr631Serbianiu797 Inuktitutru327Russianen7995Englishes3414Spanishel504Greekccp5943Chakmasr6369Serbianja2045Japaneseel6605Greekfr2976Frenchfr3267Frenchth2662Thaizh1919Chineseiu1248 Inuktituten6919Englishel7658Greekccp4407Chakmaja1279Japanesees532Spanishar7238Arabicchr4582Cherokeeth2795Thaith4012Thaisr3767Serbianchr7378Cherokeechr4039Cherokeees7730Spanishtr3872Turkishsr3186Serbianzh2149Chineseccp5789Chakmaar5725Arabicccp5876Chakmath8068Thaija2288Japanesezh2190Chineseru3276Russianth128Thaiel5912Greekel7018Greekccp6695Chakmaja1877Japanesechr6404Cherokeefr572Frenchfr2403Frenchsr741Serbianchr4542Cherokeear6242Arabicchr6066Cherokeear1732Arabicen5772Englishccp7945Chakmaiu6588 Inuktitutru211Russianeo4004 Esperantoeo3154 Esperantosr4271Serbianchr2956Cherokeesr7991Serbianru3469Russiansr6864Serbianzh7889Chinesesr1546Serbiantr249Turkishth6568Thaiccp4013Chakmafr7593Frenchccp5023Chakmabn7082Banglaja912Japanesear647Arabicel1573Greekchr252Cherokeetr5481Turkishar5973Arabicchr1149Cherokeesr6495Serbiansr6130Serbianar1730Arabices7869Spanishzh1608Chinesees314Spanishtr5629Turkishbn3055Banglaccp2573Chakmaes866Spanishar3584Arabicsr6327Serbianel4532Greeksr8067Serbianiu7072 Inuktituttr1758Turkishtr7810Turkishel2025Greekiu6091 Inuktitutsr7064Serbiansr216Serbiansr1333Serbiansr6678Serbianar598Arabicccp4889Chakmafr4988Frenchar4078Arabicchr6556Cherokeeja1936Japanesechr1077Cherokeezh4059Chinesechr6517Cherokeeja2313Japanesesr3870Serbianbn3452Banglazh279Chinesesr7762Serbianes2284Spanishes7899Spanishen6678Englishru3187Russianru6015Russianja7067Japanesefr4737Frenchth261Thaibn6088Banglasr2532Serbiansr3522Serbianth371Thaieo1860 Esperantoen112Englishchr4332Cherokeeru7063Russianzh7532Chineseth6772Thaizh3748Chineseiu586 Inuktituteo1387 Esperantoel8182Greeksr6786Serbiantr459Turkishsr6778Serbianeo2565 Esperantoar3746Arabicchr4316Cherokeefr789Frenchtr7985Turkishzh5133Chineseccp7501Chakmael6618Greekfr635Frenchru7073Russianes1146Spanishbn3898Banglatr4183Turkisheo4782 Esperantosr7658Serbianen3039Englishen1409Englishfr1860Frenchccp5373Chakmaeo5232 Esperantoja7094Japaneseen3181Englishru7816Russianel3876Greekes5832Spanishel4022Greekchr2060Cherokeeru1831Russianru5637Russiantr183Turkishfr1092Frenchzh1182Chinesechr6295Cherokeeccp7797Chakmafr2441Frenches8147Spanishsr4162Serbianru4230Russianru2041Russianth5478Thaizh7421Chinesebn6399Banglaes1967Spanishccp5746Chakmaja2693Japaneseen2417Englishja7566Japanesetr8033Turkishccp6736Chakmath378Thaiiu1583 Inuktitutsr5125Serbianes6724Spanishfr7702Frenchel3348Greekru3923Russianzh3127Chineseeo4665 Esperantoes7485Spanishfr6889Frenchja8140Japaneseccp6405Chakmachr6650Cherokeeru2861Russianfr257Frenchiu7514 Inuktitutru4489Russianchr5167Cherokeeja4808Japaneseeo3926 Esperantochr5169Cherokeeeo2134 Esperantoar2484Arabicsr4030Serbianel5113Greektr7765Turkishel4552Greeksr7654Serbianbn5633Banglael3813Greekes7568Spanisheo2874 Esperantofr6529Frenchccp4252Chakmaes3760Spanishiu415 Inuktitutsr7126Serbianel7999Greeksr4090Serbianccp653Chakmazh6729Chinesees2858Spanishchr7367Cherokeeccp6345Chakmaar2295Arabicccp769Chakmaccp8009Chakmael7758Greekar6850Arabicar6060Arabiceo7632 Esperantofr188Frenchfr7637Frenchru1487Russiansr60Serbianth3406Thaith1745Thaieo4662 Esperantotr2695Turkishth7518Thaies5525Spanishes2890Spanishfr617Frenchchr936Cherokeeeo3890 Esperantoth1047Thaibn7673Banglaccp1008Chakmael1652Greekbn3878Banglachr6492Cherokeeiu2861 Inuktitutfr4780Frenchsr4251Serbianth6584Thaieo4981 Esperantofr4842Frenchiu5205 Inuktitutchr826Cherokeear2393Arabices5428Spanishja3959Japaneseiu5886 Inuktitutbn6076Banglaja6148Japaneseru3299Russianth1132Thaichr7706Cherokeeth7175Thaizh3936Chineseen6113Englishes988Spanishes7722Spanishbn2429Banglaru424Russianth473Thaith6650Thaies2420Spanishth85Thaiccp4735Chakmael5553Greeksr5681Serbianzh4703Chineseel4403Greekbn4324Banglasr3524Serbianzh2891Chinesezh1131Chineseiu3011 Inuktitutth1491Thaiccp5464Chakmaja2192Japanesezh4327Chineseel6663Greekiu137 Inuktitutja1589Japanesechr2772Cherokeear5046Arabices5099Spanishiu7648 Inuktitutru4127Russianen4627Englisheo655 Esperantoeo4457 Esperantoiu7816 Inuktitutth2429Thaiccp4864Chakmaeo3811 Esperantoiu8178 Inuktitutar1547Arabicja436Japaneseel7534Greekccp3147Chakmael5679Greekiu490 Inuktitutfr4330Frenchchr4890Cherokeeccp4644Chakmaeo1957 Esperantoru1729Russianeo2327 Esperantoru2620Russianes5171Spanishzh1220Chinesefr4459Frenchru3926Russianbn4135Banglaccp5759Chakmafr659Frenchru4311Russianru987Russiantr2867Turkishel2954Greeken613Englishes2591Spanishes4096Spanisheo5430 Esperantoeo6222 Esperantoth4233Thaiiu460 Inuktitutchr6563Cherokeeccp5308Chakmaar3728Arabicru2970Russianth293Thaija939Japanesetr848Turkishiu2561 Inuktitutiu5262 Inuktitutes4696Spanishru3207Russiantr699Turkishiu5744 Inuktitutth2037Thaisr3222Serbianiu7302 Inuktituten4519Englishchr4847Cherokeeru3458Russianel4382Greekiu1160 Inuktitutel3376Greekru6170Russianth6131Thaieo6031 Esperantotr7534Turkishru4322Russiansr1417Serbianccp7009Chakmaja1055Japaneseth7877Thaiccp1476Chakmafr1842Frenchja286Japaneseen5365Englishccp7673Chakmachr122Cherokeees1838Spanishja2715Japaneseiu5759 Inuktitutzh2607Chinesesr1319Serbianen522Englishzh265Chinesefr5553Frenchen1064Englishth5834Thaichr6176Cherokeefr7232Frenchja1846Japanesechr4349Cherokeees2393Spanishru8074Russiansr2785Serbianar152Arabicsr1611Serbianzh7154Chinesezh238Chinesezh7935Chinesees1541Spanisheo6781 Esperantoel509Greekccp2550Chakmaru7643Russianccp3069Chakmachr7609Cherokeechr2290Cherokeeiu127 Inuktitutchr637Cherokeesr663Serbianzh5799Chineseccp7098Chakmaiu212 Inuktitutsr2499Serbianeo3704 Esperantotr4286Turkishar2714Arabicsr6324Serbianiu4189 Inuktitutru7640Russianccp6763Chakmachr2207Cherokeear2797Arabicchr2216Cherokeeel7984Greeken23Englisheo6792 Esperantochr2427Cherokeear1291Arabicar1658Arabicar4134Arabicar2996Arabicbn556Banglael1945Greekbn4401Banglaen5364Englisheo2311 Esperantoar1675Arabicfr5900Frenchja2067Japanesesr2054Serbianru2320Russiantr683Turkishtr5640Turkishzh7736Chinesees4117Spanisheo128 Esperantosr733Serbianccp2492Chakmaeo7316 Esperantoel3535Greekru6329Russianen7977Englishja3232Japanesees5230Spanishen122Englishen6119Englishbn621Banglaru6354Russianja1760Japanesees1717Spanishfr3862Frenchth829Thaisr3089Serbianccp7596Chakmaja1422Japanesezh7373Chineseth6261Thaieo3741 Esperantotr5479Turkishbn7349Banglachr1733Cherokeetr6334Turkishar4979Arabicth2810Thaith4053Thaisr6452Serbiantr5278Turkishth1815Thaiar6487Arabicchr3704Cherokeeja5683Japanesetr5134Turkishchr1970Cherokeeth790Thaith1372Thaitr3107Turkishth652Thaija1862Japanesechr5127Cherokeeeo7303 Esperantotr5789Turkishchr2692Cherokeeeo2213 Esperantoiu7933 Inuktitutfr7273Frenchar4563Arabicbn77Banglaen7618Englishbn4225Banglaes1813Spanishja396Japaneseru1707Russianar1009Arabicccp454Chakmasr6469Serbianes2224Spanishen477Englishfr3236Frenchtr1345Turkishccp2343Chakmasr2916Serbianth2295Thaiar5739Arabices4623Spanishfr7343Frenchru1841Russianeo6039 Esperantoth6852Thaizh6641Chinesezh4495Chinesear4523Arabiceo5711 Esperantoel3927Greekeo5959 Esperantosr1006Serbiantr5708Turkishen1919Englisheo7322 Esperantozh5674Chinesefr7859Frenchiu6278 Inuktitutel6337Greektr3194Turkishar8168Arabicccp5084Chakmachr5380Cherokeees1408Spanishja581Japaneseja6052Japanesebn2235Banglaen4228Englishchr8059Cherokeeen2760Englishar1515Arabicen2625Englishth4465Thaisr6418Serbianth4519Thaizh7999Chinesetr8084Turkishru1118Russianfr5367Frenchen4140Englishru2813Russiansr3547Serbianeo6024 Esperantoen2331Englisheo2110 Esperantochr7213Cherokeezh4952Chineseeo7663 Esperantoar21Arabicar824Arabicccp5468Chakmaja368Japanesesr441Serbiansr472Serbianeo3781 Esperantotr190Turkishfr866Frenchzh1775Chineseiu7315 Inuktituten1749Englishar4978Arabicbn1969Banglaeo7062 Esperantoth7453Thairu5499Russianel6399Greekchr653Cherokeeja7247Japaneseel201Greekja3779Japaneseeo4850 Esperantobn4037Banglael3940Greektr3153Turkishar1272Arabicru1245Russianru1747Russianen7102Englishes1167Spanisheo4070 Esperantoiu3527 Inuktitutja7649Japaneseth4401Thaien2074Englishru8140Russianzh1276Chinesebn6371Banglazh1855Chineseel2839Greekar2445Arabicel7373Greekeo701 Esperantoes3297Spanishzh6044Chinesebn6832Banglachr3909Cherokeechr5501Cherokeeiu134 Inuktituteo5498 Esperantosr6167Serbiantr87Turkishja615Japanesechr2018Cherokeezh973Chinesear2655Arabicccp3278Chakmasr6650Serbianen4685Englishsr271Serbianar1052Arabicel1000Greekel4498Greekiu2431 Inuktitutchr7021Cherokeeth3172Thaibn1997Banglatr2922Turkishes4661Spanishtr7147Turkishbn6325Banglaru3717Russiansr185Serbianar1480Arabicth569Thaibn7544Banglabn5182Banglazh6408Chineseiu2174 Inuktitutes8178Spanishiu6437 Inuktituttr7449Turkishiu349 Inuktitutfr5421Frenchchr5642Cherokeeiu4440 Inuktituttr586Turkishar163Arabicel1082Greekzh2794Chinesees3793Spanishar6272Arabicen3698Englishfr8145Frenchru7388Russianfr1100Frenchchr6150Cherokeeen3199Englisheo7095 Esperantoccp5756Chakmaen3990Englishen1608Englishar3955Arabices2242Spanishja3381Japaneseja4843Japaneseccp4914Chakmaar543Arabicbn6949Banglath3578Thaiccp3725Chakmatr3616Turkishchr3348Cherokeeeo2254 Esperantozh1921Chineseen7141Englishccp1432Chakmatr5440Turkishru7607Russianen7007Englishru3297Russianbn5658Banglasr7550Serbianzh5220Chinesear2219Arabicen6922Englishccp1757Chakmath4040Thaiiu4784 Inuktitutes7763Spanishccp1769Chakmaccp5477Chakmael5475Greekchr3561Cherokeeth4408Thaitr212Turkishar4447Arabiciu5663 Inuktitutth3105Thaien88Englishja6635Japanesees5903Spanishen6612Englishzh282Chinesefr804Frenches2724Spanishiu6648 Inuktitutru3884Russiantr2939Turkishes3551Spanishru6518Russianel4369Greekel2615Greekar3740Arabicar3736Arabicsr411Serbianchr1145Cherokeeru44Russianccp511Chakmaar5537Arabices5452Spanishiu5318 Inuktitutru1919Russiansr435Serbianja2562Japaneseccp770Chakmachr6166Cherokeeeo6420 Esperantoru5615Russianzh6592Chinesefr8017Frenchbn7305Banglasr7501Serbiansr2722Serbianja2736Japanesetr7697Turkishar3399Arabiciu4604 Inuktitutchr3300Cherokeeel5660Greekfr158Frenchtr4246Turkishru5680Russianbn2955Banglaes3762Spanishel3805Greekchr8160Cherokeeel4444Greekar7622Arabicen2265Englishsr3882Serbianbn1795Banglasr5480Serbianth4349Thaitr3424Turkishbn4168Banglael7890Greekar5888Arabicfr4751Frenchel1773Greekfr2313Frenchja942Japanesesr1334Serbianen7198Englishbn2363Banglaccp2753Chakmaes8127Spanishbn122Banglafr462Frenchccp8058Chakmafr2830Frenchiu5418 Inuktitutja804Japaneseccp5656Chakmasr543Serbianru2588Russianccp2271Chakmabn8162Banglabn6215Banglath7728Thaisr2775Serbianfr408Frenchar89Arabicbn146Banglabn1682Banglaen6566Englishes4525Spanishes1941Spanishar5796Arabicbn7761Banglaes904Spanishbn457Banglachr512Cherokeeccp3270Chakmath6132Thaitr816Turkishchr6191Cherokeezh3327Chinesear4670Arabices8181Spanishtr7491Turkishen6480Englishen7447Englishru1278Russiansr2870Serbianja3838Japaneseel3505Greeken5923Englishru901Russianzh3420Chinesear169Arabicfr1110Frenchen2861Englishen5295Englishbn5043Banglaeo6207 Esperantoar2716Arabicel6053Greekes3679Spanishfr2876Frenchiu3228 Inuktitutbn8061Banglaja4890Japaneseru7884Russianchr6671Cherokeefr4382Frenchccp890Chakmasr816Serbiansr5721Serbiantr4646Turkishel7277Greekru7378Russiansr4771Serbianth3353Thaith2091Thaies7011Spanishtr4092Turkishzh1998Chinesezh5208Chineseccp2985Chakmaccp701Chakmaccp3166Chakmath7161Thaija205Japanesezh5729Chineseru3713Russianes3153Spanishja5938Japaneseja4991Japanesezh3518Chinesees1284Spanishbn4317Banglaen3652Englishth3745Thaieo2694 Esperantozh4147Chineseja2308Japaneseth3888Thaith5365Thaizh6080Chineseja1354Japaneseel4396Greeken2844Englisheo1613 Esperantochr7508Cherokeeel4944Greekes4565Spanishbn3707Banglaeo445 Esperantoel258Greekfr7490Frenchiu1177 Inuktitutel5386Greekja5416Japanesetr225Turkishsr5919Serbianchr2258Cherokeear5253Arabicchr4333Cherokeeja7716Japanesechr2857Cherokeebn7098Banglael5069Greeksr6189Serbianfr3729Frenchja2639Japanesetr2395Turkishja1057Japaneseja5622Japanesezh5615Chinesebn5276Banglaen4087Englishchr667Cherokeeth2107Thaiar733Arabicfr4320Frenchchr2129Cherokeeiu7037 Inuktitutja6944Japaneseel6887Greeken4445Englishzh5858Chineseth3903Thaies7817Spanishru7234Russianchr3089Cherokeechr6553Cherokeeiu4274 Inuktitutel6051Greekja5812Japaneseja6986Japaneseru3950Russianccp7081Chakmachr3116Cherokeefr3947Frenchen6558Englishth4710Thaija7377Japaneseja2471Japanesesr2163Serbianel7864Greekar3382Arabicar6232Arabicbn5791Banglael3148Greekel5483Greekes5088Spanishchr7356Cherokeechr5738Cherokeeiu6193 Inuktituten1419Englishchr208Cherokeees1449Spanishbn6280Banglaja5795Japaneseiu3420 Inuktitutes5332Spanishes6002Spanishiu7671 Inuktitutar3225Arabicfr4267Frenchru5957Russianeo6509 Esperantochr5460Cherokeesr1332Serbianru3853Russiansr5277Serbianzh5364Chinesechr2179Cherokeear3421Arabicccp2500Chakmachr2101Cherokeeccp208Chakmaeo425 Esperantoth284Thaizh5186Chinesees6154Spanishes694Spanishar1497Arabicfr1536Frenchfr3609Frenchsr6194Serbianel2311Greekel6998Greekeo7597 Esperantoth5614Thaifr3858Frenchccp6945Chakmasr3023Serbianccp7308Chakmaeo7499 Esperantoja4828Japaneseth995Thaibn237Banglasr2381Serbianar4686Arabictr245Turkishes234Spanishar3545Arabicfr3672Frenchsr2625Serbianeo2175 Esperantoar2396Arabicfr1644Frenchar2533Arabicbn7784Banglaiu2872 Inuktitutchr1376Cherokeeel6701Greekbn5624Banglath3272Thaifr5166Frenchth4673Thaieo1170 Esperantofr7743Frencheo6522 Esperantofr2545Frenchzh6779Chineseru6100Russianccp2442Chakmaen8018Englishchr7504Cherokeeth3663Thaiel1661Greeksr6097Serbianru3082Russianja7183Japanesetr3924Turkishar1084Arabicccp8090Chakmafr4625Frenchbn2765Banglatr7573Turkishtr7017Turkishzh4936Chineseiu4151 Inuktitutru1204Russianes6612Spanishru2247Russianchr772Cherokeebn4399Banglaru655Russiantr4036Turkishtr7773Turkishccp2285Chakmaes485Spanishes4636Spanishth2460Thaies6178Spanishru5323Russianja5955Japaneseccp6657Chakmatr3167Turkisheo49 Esperantochr7299Cherokeeen7298Englishiu2226 Inuktituteo2383 Esperantoen3265Englisheo3730 Esperantofr4801Frenchar1663Arabiczh739Chineseccp3959Chakmaccp7170Chakmatr829Turkishen4755Englisheo6322 Esperantoen7912Englishfr2931Frenchar7038Arabicar1014Arabices1675Spanishen1527Englishja7646Japaneseen1943Englishbn1651Banglaru2659Russiansr2682Serbianccp6872Chakmabn5736Banglachr8142Cherokeeen3804Englishfr1306Frenchru5863Russianchr6747Cherokeesr7777Serbianzh1783Chineseccp2140Chakmaen7654Englishen3974Englisheo5262 Esperantoccp3238Chakmafr1766Frenchru2846Russianbn4145Banglasr6027Serbianen2687Englishru5875Russiantr6839Turkisheo3667 Esperantosr3451Serbianzh8057Chinesebn1115Banglabn6564Banglabn3202Banglabn4251Banglaccp2065Chakmaeo6903 Esperantotr2Turkishtr5653Turkishiu3494 Inuktitutar1161Arabicccp1638Chakmaiu6493 Inuktitutar5928Arabicen7699Englishja4741Japanesefr6455Frenchja1639Japanesechr7311Cherokeezh4337Chinesebn6022Banglatr2106Turkishja4723Japaneseiu1433 Inuktitutccp1942Chakmaccp4519Chakmafr4284Frenchja5870Japaneseja2297Japanesezh4336Chineseen2880Englishar1524Arabicsr4066Serbiansr2746Serbianchr4814Cherokeeen1059Englishsr1074Serbianiu7292 Inuktituteo7447 Esperantofr5068Frenchzh4510Chineseccp1565Chakmaja6282Japanesefr6932Frenchccp4659Chakmaen785Englishccp797Chakmaen29Englishen5219Englishchr2371Cherokeechr7889Cherokeeen854Englishar396Arabiceo5183 Esperantoes8000Spanishiu8050 Inuktitutja3710Japaneseccp8010Chakmafr4264Frenchbn5200Banglath119Thaiar7534Arabicfr4353Frenches24Spanishzh3549Chineseccp1756Chakmael2110Greeksr3614Serbianchr96Cherokeechr6274Cherokeechr7000Cherokeeel6849Greekzh7219Chineseen6569Englishfr4389Frenchtr753Turkishru6083Russiansr2657Serbianchr6483Cherokeeccp3464Chakmaen5296Englishiu8018 Inuktitutiu2792 Inuktitutchr3319Cherokeeccp675Chakmath937Thaith8140Thaitr2182Turkishtr5362Turkishel7456Greekfr5311Frenchth8190Thaieo4963 Esperantoja6064Japanesechr5205Cherokeeru7338Russianen2405Englishzh1013Chineseccp4230Chakmafr733Frenchja7652Japanesefr7655Frenchzh3444Chinesetr4656Turkishiu5644 Inuktitutccp3390Chakmachr5390Cherokeezh5367Chinesechr1184Cherokeeccp2595Chakmachr2411Cherokeeen5774Englisheo3069 Esperantoes4977Spanishbn5122Banglaiu4481 Inuktitutru3181Russianen3477Englisheo4482 Esperantoiu3999 Inuktitutsr1714Serbianen6447Englishel1003Greekzh7424Chineseel698Greekja7358Japaneseiu4986 Inuktitutccp5027Chakmaru3800Russianbn3662Banglath5236Thaichr4493Cherokeeja4975Japanesear2882Arabicth5184Thaizh4781Chinesezh4151Chineseth7779Thaizh2278Chineseth7711Thaiiu4999 Inuktitutja4919Japaneseth4630Thaizh3813Chinesezh2953Chineseiu7615 Inuktitutes5838Spanisheo4712 Esperantoja7591Japanesees6919Spanishfr7356Frenchru2282Russianes3585Spanishccp7977Chakmaja2348Japanesechr5643Cherokeeen6216Englishru4006Russianel4771Greektr3944Turkishth1523Thaizh6538Chinesees2757Spanishes1331Spanishbn2451Banglaru254Russiansr919Serbianja3617Japanesear4371Arabicchr3133Cherokeefr2745Frenchchr5227Cherokeebn1559Banglatr19Turkishchr2311Cherokeesr4180Serbianel1670Greeksr4466Serbianja631Japanesear1262Arabicja6172Japanesesr4622Serbianfr2514Frenchja4281Japaneseth7041Thaiel7570Greekfr2484Frenchja4171Japanesees5119Spanishsr820Serbianel209Greekccp3271Chakmaen1373Englishsr5167Serbianbn4553Banglaen1616Englishbn6201Banglafr4942Frenchen3564Englishth4291Thaiel1083Greekel3286Greekiu5499 Inuktitutth4092Thaisr5227Serbianth6513Thaiar2740Arabices2077Spanishchr5653Cherokeees8004Spanishsr8039Serbianccp4558Chakmael2509Greektr7495Turkisheo2858 Esperantoes3820Spanishchr5054Cherokeefr4604Frenchar1419Arabicen1375Englishen6887Englishzh4852Chinesezh7262Chineseiu5587 Inuktitutiu2071 Inuktitutsr5890Serbianar6331Arabicth3546Thaitr217Turkishzh3960Chineseru7124Russiantr4089Turkishzh8059Chinesechr242Cherokeechr7472Cherokeezh7135Chinesesr4954Serbianccp282Chakmaar4519Arabicsr2430Serbianbn3823Banglael2391Greekfr3324Frenchtr3750Turkishsr7462Serbianja450Japanesezh5932Chinesezh4971Chineseel756Greekzh2521Chineseeo4508 Esperantoeo3486 Esperantoccp2801Chakmachr3905Cherokeeeo6278 Esperantoru6980Russianbn3382Banglaar471Arabicar5907Arabices2271Spanishchr2193Cherokeees6505Spanishiu4192 Inuktitutar6998Arabicchr5285Cherokeees5805Spanishja4394Japaneseel4667Greekeo5571 Esperantofr851Frenchel6084Greekeo6279 Esperantotr8066Turkisheo4710 Esperantozh6231Chineseeo180 Esperantoes4146Spanishbn7029Banglaccp1475Chakmaen3369Englishru3051Russianes4685Spanishru3363Russiansr2497Serbianccp6659Chakmaen1351Englishth2368Thaiccp5484Chakmaja3062Japaneseen7546Englishel5259Greekes87Spanishbn972Banglabn7574Banglaen7025Englishtr3227Turkishzh2952Chineseiu7673 Inuktitutiu6173 Inuktitutiu2883 Inuktitutzh2648Chinesechr4960Cherokeeel4625Greekzh3965Chinesebn4978Banglaccp1737Chakmatr394Turkishccp6393Chakmachr8043Cherokeeel7263Greekja7279Japanesear2331Arabiciu7627 Inuktitutfr2365Frenchja3671Japanesees6957Spanishja7748Japaneseth6334Thaitr5270Turkishccp3478Chakmazh3152Chinesesr5086Serbianru8084Russianbn236Banglaja6907Japanesezh2241Chinesesr3575Serbianru5678Russianes4262Spanishar2879Arabiczh7387Chinesefr5625Frenchel1471Greekiu2299 Inuktitutja6072Japaneseth2267Thaifr1247Frenchru869Russianes3367Spanishiu5225 Inuktitutes4375Spanishsr3817Serbianzh2855Chinesesr7662Serbianja3549Japanesebn4226Banglaccp4214Chakmaen4382Englishru6912Russianja877Japanesees7571Spanishel2799Greekel7295Greekru7068Russiansr3459Serbianeo5348 Esperantozh5189Chineseiu7577 Inuktitutccp2430Chakmaeo8154 Esperantozh4459Chinesezh5823Chineseccp6021Chakmatr3292Turkishar5245Arabicbn5784Banglath993Thaiccp7285Chakmath6670Thaieo5463 Esperantofr6493Frenchsr7120Serbianccp3107Chakmaccp7893Chakmael1005Greeken3993Englishfr2203Frenchfr5373Frenchja4277Japanesear3004Arabicbn6462Banglaen1475Englishja550Japanesetr6821Turkishchr3761Cherokeechr3105Cherokeeel60Greekru5031Russiantr817Turkishja5699Japanesebn4797Banglachr5892Cherokeeel1209Greekccp1320Chakmaen2235Englishiu8075 Inuktitutru5872Russianzh2359Chineseru7185Russianel3669Greekccp1020Chakmael4127Greekel411Greeken7274Englisheo4472 Esperantobn6789Banglath4211Thaith4072Thaisr3900Serbianchr6823Cherokeetr2782Turkishtr3450Turkishfr2726Frenchar7843Arabicth2565Thaith6585Thaiiu6850 Inuktitutccp5364Chakmazh2888Chinesefr3750Frenchja7157Japaneseiu5603 Inuktitutzh3243Chineseccp399Chakmatr6033Turkishja5696Japanesetr2615Turkishtr5796Turkishen6138Englishchr6724Cherokeeen8137Englishja8164Japanesees4540Spanishzh2644Chinesefr1117Frenchsr8006Serbianru7254Russianru956Russianar2764Arabicja2008Japaneseel2752Greekar3289Arabicar3206Arabiciu7860 Inuktitutsr3152Serbiansr7196Serbianel3267Greekth5216Thaiar4022Arabicar5440Arabicel416Greekeo3851 Esperantoes7746Spanishel3806Greekccp1664Chakmaeo4530 Esperantochr261Cherokeeiu2535 Inuktitutccp5713Chakmabn1456Banglael2881Greekth7576Thaitr2870Turkishtr530Turkishbn8056Banglatr845Turkishar8036Arabicen6560Englishja7227Japanesechr7145Cherokeees4553Spanishiu3443 Inuktitutbn6801Banglaen1062Englishes28Spanishes790Spanishfr5410Frenchiu4173 Inuktitutsr1691Serbianbn148Banglaru6067Russianar6047Arabicbn4963Banglabn5946Banglaar5665Arabiceo5827 Esperantosr8026Serbianzh5339Chinesees4842Spanisheo7506 Esperantoel4926Greekru4061Russianzh5169Chinesees4234Spanishfr333Frenchbn166Banglaar5757Arabicen1524Englishel7863Greeksr4546Serbianen967Englishzh144Chineseccp6102Chakmaru3098Russianru5363Russiansr3616Serbianiu1920 Inuktitutzh8146Chineseth7767Thairu5502Russianen4900Englishes5097Spanishiu2196 Inuktitutar698Arabiceo3969 Esperantoiu1222 Inuktitutccp7607Chakmaja4071Japaneseth812Thaies782Spanishel5618Greekfr4249Frenchzh183Chineseeo696 Esperantofr7732Frenchja4982Japaneseccp6826Chakmaru1521Russianja3522Japanesetr6941Turkishzh1142Chineseth4624Thaija5627Japaneseja5235Japaneseja4665Japaneseth2321Thaith491Thaiccp3501Chakmath5209Thaisr4082Serbianbn5238Banglaar1779Arabicru5973Russianchr4238Cherokeeth7282Thaitr37Turkishsr5869Serbianchr6082Cherokeebn2492Banglabn7366Banglasr6410Serbianar7598Arabiciu8116 Inuktituten198Englishth7590Thaies6531Spanishsr5969Serbianbn6963Banglaeo6280 Esperantoeo7111 Esperantoth6552Thairu2154Russianar8181Arabicar2478Arabicsr7364Serbiantr5709Turkisheo6306 Esperantosr6242Serbiantr6440Turkishar5586Arabiczh2575Chinesees7345Spanishccp6702Chakmatr5060Turkishzh5576Chinesechr219Cherokeefr7690Frenchzh7698Chinesetr7591Turkishtr4415Turkishth2338Thaifr2897Frenchth7852Thaiar3779Arabiceo4271 Esperantobn4800Banglaes6600Spanishzh6205Chinesefr4987Frenchar2810Arabicchr1233Cherokeebn2375Banglachr5036Cherokeebn1159Banglabn4477Banglaar6896Arabices5076Spanishth3717Thaichr6825Cherokeezh7875Chinesezh437Chineseel2549Greekes6918Spanishen1658Englishel2899Greekbn7988Banglaar6209Arabicchr1351Cherokeeccp7883Chakmaja2000Japaneseccp2521Chakmaru5550Russianccp3052Chakmaar6349Arabictr5366Turkisheo2038 Esperantoth6245Thaien4541Englisheo7284 Esperantoar5980Arabicsr600Serbianeo5693 Esperantotr4196Turkishccp4849Chakmatr4267Turkishchr5249Cherokeeel5477Greekiu997 Inuktitutiu3992 Inuktitutja4278Japanesesr5728Serbianel6809Greekru403Russianes4745Spanishiu3187 Inuktitutzh3412Chinesefr1896Frenchru6938Russianes5951Spanishccp428Chakmatr5245Turkishel8043Greekar2511Arabicel2905Greekja6227Japanesefr2795Frenchccp4381Chakmael7194Greekchr7283Cherokeeen7666Englishel3176Greekeo2477 Esperantoen3006Englishfr2639Frenchzh7251Chineseeo1401 Esperantobn1680Banglazh872Chineseeo7244 Esperantoth7339Thaien7834Englishes7060Spanishes3312Spanishar4636Arabicel5739Greekccp7970Chakmael7573Greekar2094Arabicbn5768Banglaar6860Arabicbn384Banglaccp3863Chakmael3259Greekel4276Greekeo1078 Esperantofr6878Frenchru6164Russiansr4371Serbianen6277Englishbn5049Banglaiu657 Inuktituttr2001Turkishccp4544Chakmasr6044Serbianth441Thaibn1531Banglaes6549Spanishsr7195Serbianfr7522Frenchzh367Chinesear4899Arabicccp8056Chakmafr2169Frenchchr3531Cherokeeth4961Thaiel7228Greekes6034Spanishfr4048Frenchen7993Englishfr4642Frenchsr5818Serbianbn6642Banglachr6676Cherokeeru664Russianbn1282Banglachr4239Cherokeeru2527Russiantr2367Turkishtr2484Turkishja3002Japanesezh4488Chinesebn1395Banglaja7242Japanesebn5372Banglaeo3314 Esperantoru2568Russianja7137Japanesetr607Turkishfr5072Frenchth856Thairu4512Russianar7092Arabicel8105Greekth3486Thaiiu5575 Inuktitutel7013Greekbn5263Banglabn7314Banglasr4311Serbianja973Japanesesr1256Serbianchr3574Cherokeesr2849Serbianel5296Greektr1479Turkishfr473Frenchja2810Japanesechr3322Cherokeefr7375Frenchen3252Englishiu2966 Inuktitutchr4172Cherokeechr2352Cherokeebn7074Banglafr7525Frenchsr1630Serbianes6727Spanishja5017Japaneseel1876Greekchr5302Cherokeeel1907Greekchr4545Cherokeeeo7350 Esperantoiu4110 Inuktitutiu5299 Inuktituten4683Englishchr7033Cherokeebn1770Banglaru3390Russianfr2907Frencheo3106 Esperantoja324Japaneseeo293 Esperantoja7523Japanesear7183Arabices4228Spanishth859Thaibn7219Banglabn2945Banglaiu6589 Inuktituteo6716 Esperantoel2968Greeken1162Englishja5355Japanesezh6132Chinesefr383Frenchfr5470Frenches7739Spanishes1649Spanishsr7310Serbianth1403Thaisr3515Serbianiu5344 Inuktitutru4475Russiantr8111Turkishtr7532Turkishchr4519Cherokeeccp240Chakmaccp418Chakmaccp6845Chakmafr7704Frenchru1862Russianzh3635Chinesetr4584Turkishel5988Greekccp3798Chakmaes2646Spanishtr5906Turkisheo5797 Esperantoth1768Thaiel1431Greeken3927Englishtr2151Turkishar7610Arabicth1981Thaisr2829Serbiansr179Serbianeo7788 Esperantoccp8078Chakmaru1796Russianiu4472 Inuktitutth2331Thaiccp7812Chakmaar4372Arabicen6534Englishfr262Frenchchr1143Cherokeefr2279Frenchchr3408Cherokeeru1802Russianeo3823 Esperantofr119Frenchja7458Japanesesr4483Serbianth5174Thaiccp7112Chakmabn4174Banglasr944Serbianel1758Greekeo1974 Esperantozh4888Chineseru119Russianth806Thaith3089Thaith7828Thairu6720Russianbn7643Banglachr5814Cherokeees2520Spanishru3400Russianzh3937Chineseiu2745 Inuktituten6929Englishzh544Chineseccp4701Chakmath917Thaifr3296Frenchen7103Englishiu2213 Inuktitutja8169Japaneseth4362Thaizh2489Chineseru5427Russianja6629Japanesefr471Frenchchr1959Cherokeeeo2197 Esperantoccp5391Chakmafr5135Frenchth4276Thaiiu6585 Inuktitutzh7265Chineseccp7401Chakmaen2185Englishtr5474Turkishel6810Greekel6674Greeken5396Englishfr3784Frenchen4663Englishtr1168Turkishchr4925Cherokeechr6928Cherokeear110Arabices2010Spanisheo2225 Esperantoja7712Japanesezh3095Chineseiu7631 Inuktitutchr3039Cherokeeth296Thaien3674Englishchr7578Cherokeechr516Cherokeeccp3140Chakmaar3577Arabicfr7353Frenchru578Russiansr3153Serbianchr7535Cherokeeja535Japaneseth2698Thaieo3493 Esperantoeo6327 Esperantoru6145Russianen7300Englishen8017Englishzh6716Chinesechr8033Cherokeezh4927Chineseccp2233Chakmaiu2047 Inuktitutru2736Russianiu4644 Inuktitutbn5358Banglasr3476Serbianiu1270 Inuktitutru2161Russianel4439Greekchr5032Cherokeeccp1595Chakmaja6128Japanesechr8083Cherokeeru7846Russianar2515Arabicel3959Greekbn5655Banglaes3185Spanishar5422Arabicchr6321Cherokeeeo4866 Esperantofr3120Frenchtr6322Turkishchr2197Cherokeeja1258Japanesebn20Banglaiu701 Inuktitutsr4875Serbianen6401Englishzh7991Chineseja5001Japaneseen7270Englishfr528Frenchth2312Thairu7876Russianchr4224Cherokeeel1429Greekzh2490Chinesees7602Spanishsr7042Serbiansr7382Serbianja7012Japanesefr2455Frenchar114Arabices5297Spanishen3227Englishja7249Japaneseeo5880 Esperantoru7275Russiansr6476Serbianfr5773Frenchfr2188Frenchja2908Japanesefr92Frenchfr322Frenchfr7320Frenchar5583Arabiczh476Chinesechr829Cherokeeiu2646 Inuktitutja184Japaneseccp1933Chakmabn3493Banglaccp6800Chakmaja7711Japaneseeo3200 Esperantobn6013Banglaiu7025 Inuktituttr737Turkishzh686Chinesechr2972Cherokeezh1522Chinesees4158Spanishen1171Englishiu98 Inuktitutchr875Cherokeear7429Arabictr1878Turkishsr5608Serbianccp2485Chakmatr6581Turkishar6394Arabiceo1982 Esperantoen4425Englishel964Greekccp2850Chakmaccp1194Chakmachr7166Cherokeees1125Spanishtr6182Turkishja774Japaneseth5334Thaith3185Thaiccp225Chakmaccp498Chakmaar221Arabicccp7420Chakmaccp4904Chakmachr644Cherokeeen1656Englishen5033Englisheo4673 Esperantosr74Serbiansr2788Serbiantr4212Turkishen2541Englishzh3148Chineseen5524Englishchr3317Cherokeeel5156Greekru1527Russianth5421Thaiel3680Greeken6739Englishfr914Frenchth3236Thaichr5609Cherokeeeo4325 Esperantosr1110Serbiansr5637Serbianfr2816Frencheo3956 Esperantoar627Arabicbn6538Banglaeo4932 Esperantoes7712Spanishccp7141Chakmael6693Greekja3401Japanesezh7592Chinesesr1854Serbianth2549Thaizh1140Chineseeo6159 Esperantoth3911Thaizh2539Chineseccp3533Chakmaen7476Englisheo1430 Esperantotr8171Turkishar2750Arabicchr2327Cherokeeeo7414 Esperantoru7701Russianeo640 Esperantoel3543Greekel1905Greekes7364Spanishar5361Arabiczh289Chineseel3955Greekzh2172Chineseel7294Greekccp7542Chakmaar5732Arabicfr1356Frenchccp7754Chakmafr1328Frenchccp4799Chakmaja4102Japanesetr1613Turkishtr3219Turkishtr4762Turkishth3461Thaija5265Japanesebn1675Banglaes5299Spanishes4911Spanishiu6093 Inuktitutccp3828Chakmaen4100Englishel4296Greekes2313Spanishes2949Spanishccp266Chakmaes327Spanishar5352Arabices2867Spanishfr5577Frenchccp6682Chakmaja4183Japanesebn492Banglaeo3112 Esperantosr4820Serbianth2690Thaith6102Thaija5632Japaneseiu1843 Inuktitutru36Russianbn4821Banglaes196Spanishsr3127Serbianar4443Arabiciu4975 Inuktitutth6869Thaizh3361Chineseen7074Englishiu2096 Inuktitutsr883Serbiansr3532Serbianzh2822Chinesebn5335Banglael7307Greektr337Turkishfr1677Frenchiu1555 Inuktituten2297Englishsr5852Serbianzh8153Chineseel2388Greekes7518Spanishbn389Banglatr6510Turkishccp727Chakmasr5110Serbianeo3727 Esperantofr6694Frenchbn2353Banglael5869Greekeo5745 Esperantozh1865Chineseen7798Englishtr6715Turkishchr6927Cherokeezh5952Chinesezh6448Chinesees4288Spanishzh5370Chineseeo1053 Esperantochr8155Cherokeechr3265Cherokeeen6010Englishfr7503Frenchru902Russianar7804Arabicccp1578Chakmaar4088Arabicja7150Japaneseru5473Russianiu6245 Inuktitutfr6608Frenchth7273Thaitr5500Turkishsr978Serbianchr7448Cherokeeiu7015 Inuktitutru8008Russianeo1984 Esperantoja2252Japanesefr5316Frenchru3962Russianru4054Russianja5879Japaneseeo4199 Esperantotr7518Turkishar7505Arabicbn8085Banglafr6239Frenches6627Spanishiu7757 Inuktitutru611Russianru1478Russianar7095Arabicru8137Russianiu1795 Inuktitutiu2316 Inuktituteo2308 Esperantoes4049Spanishchr2927Cherokeezh329Chineseen4078Englishiu4272 Inuktitutccp7808Chakmael3205Greektr1086Turkishzh1455Chineseen3007Englishel2274Greekccp6132Chakmaja5809Japanesetr2469Turkishsr7432Serbianja6940Japaneseel3854Greekbn6114Banglaes3507Spanishiu3631 Inuktitutiu7573 Inuktitutccp3268Chakmaja6601Japaneseja159Japanesebn2917Banglasr2392Serbianfr1461Frenchsr7754Serbianru2830Russianel8018Greekfr4573Frenches7977Spanishbn249Banglaja1732Japanesechr415Cherokeeja4692Japanesees2954Spanishel7488Greekchr6107Cherokeeja1323Japaneseccp3926Chakmath1487Thaies7313Spanishth4148Thaifr5092Frenches5876Spanishja16Japaneseiu796 Inuktitutth2344Thaibn639Banglaccp6518Chakmabn2389Banglaes4291Spanishzh5140Chineseccp7270Chakmaen6034Englisheo5839 Esperantoiu3216 Inuktitutth6206Thaiccp146Chakmaccp1335Chakmaen3817Englishes2788Spanishfr2884Frenchsr3208Serbianzh4631Chinesesr4878Serbianen4811Englishes6427Spanishth1267Thaija7586Japaneseccp5138Chakmachr7951Cherokeetr4073Turkishccp5715Chakmaccp1426Chakmaen3569Englishen4168Englishja7882Japanesetr3691Turkishru858Russianru7985Russianja5257Japanesear2242Arabicar8091Arabicen3933Englishel2810Greekru1837Russiansr989Serbianel1356Greeksr6229Serbianeo6908 Esperantoth4470Thaith7910Thaith2994Thaitr7865Turkishchr7945Cherokeezh2859Chinesesr6374Serbianbn4222Banglasr2986Serbianes1551Spanisheo4323 Esperantoccp5445Chakmaen6421Englishbn4746Banglaeo5725 Esperantoel5574Greeksr523Serbianchr6568Cherokeetr1753Turkishiu5399 Inuktitutbn3701Banglaru3635Russianfr1152Frenchccp1104Chakmaen3204Englishsr2154Serbianeo1174 Esperantoeo4598 Esperantoiu5028 Inuktitutth3953Thaichr7934Cherokeeccp5283Chakmaes163Spanishes6192Spanishccp682Chakmaes7083Spanishfr6427Frenchar4974Arabiciu3059 Inuktitutel4578Greekel4984Greektr1324Turkishtr1659Turkishth353Thaiar6743Arabicar850Arabiciu7088 Inuktitutja2370Japaneseja7556Japanesetr2265Turkishes2023Spanishchr8112Cherokeeru5952Russianth3370Thaien2631Englishel995Greekel6953Greekfr7926Frenchel5722Greekeo4664 Esperantoar6581Arabicru1824Russiansr276Serbianzh3703Chinesezh1103Chinesear7110Arabicbn80Banglaru1863Russiantr5861Turkishtr6996Turkishen2279Englishfr5175Frenchccp3715Chakmabn2747Banglaes1623Spanishsr2016Serbianbn4931Banglaeo1165 Esperantochr2035Cherokeeccp6056Chakmafr1093Frenchth811Thaitr1581Turkishth5887Thaichr4173Cherokeeel3093Greekes5017Spanishfr4059Frenches7082Spanishru4824Russianar621Arabictr5735Turkishja1082Japanesesr319Serbianccp8121Chakmazh3701Chineseccp5743Chakmatr7267Turkisheo7655 Esperantoja2991Japanesesr1368Serbianeo3036 Esperantochr473Cherokeear4797Arabicchr4312Cherokeeel3157Greekja4787Japaneseth765Thaisr1873Serbianru7568Russianeo1422 Esperantoes7042Spanishth6222Thaitr6231Turkishth1038Thaija3607Japaneseeo945 Esperantoes5599Spanishtr2142Turkishsr5058Serbianccp5752Chakmath6979Thaiel4509Greekel5330Greekes1615Spanishja6811Japanesebn6630Banglaen6395Englishfr19Frencheo4556 Esperantoccp6950Chakmaes6094Spanishbn6027Banglaja5859Japanesear4657Arabicel910Greekel2016Greekru2506Russianja6574Japaneseru4957Russianel7627Greekja77Japaneseth3096Thaisr192Serbiansr6670Serbianes3071Spanishccp4739Chakmaar7666Arabicbn6827Banglaiu1112 Inuktitutel23Greekja7324Japanesetr6471Turkishel2397Greekes3722Spanishru7769Russiansr5513Serbianccp6652Chakmaiu3936 Inuktitutes2178Spanishchr1945Cherokeeja2683Japanesees6810Spanishja4478Japanesetr122Turkishzh2445Chinesezh2528Chinesesr4601Serbianeo6277 Esperantoes5484Spanishiu570 Inuktitutiu7861 Inuktitutja6715Japanesechr4330Cherokeeiu5092 Inuktitutth8009Thaiiu6829 Inuktitutth734Thaitr6350Turkishfr6364Frenchzh7578Chinesefr7930Frenchth1744Thaibn7268Banglath6176Thaichr414Cherokeeiu1582 Inuktituttr8029Turkishel5148Greekth6144Thairu4004Russianbn6426Banglael5518Greekeo2848 Esperantoeo5488 Esperantochr6657Cherokeeen5911Englishru2123Russianccp5994Chakmasr4570Serbiansr4576Serbiantr6343Turkishja647Japanesetr290Turkishccp6299Chakmael1464Greekth2866Thaisr1380Serbiansr7271Serbianeo6633 Esperantoth579Thaith7375Thaifr3700Frenchen2159Englishsr376Serbiansr259Serbianth1731Thaichr7768Cherokeezh331Chineseiu6663 Inuktitutccp1249Chakmaru5164Russiantr191Turkishtr4575Turkishen4816Englishen4712Englisheo4067 Esperantochr5754Cherokeeel1984Greekchr2719Cherokeefr6047Frenchsr4310Serbianar7437Arabiceo4364 Esperantozh7064Chinesebn1540Banglaiu1917 Inuktitutbn2915Banglaar5670Arabicbn580Banglabn3588Banglael1559Greeken1620Englishsr922Serbianja3655Japanesesr4760Serbianchr7871Cherokeeiu5732 Inuktitutar6370Arabicbn7796Banglabn2699Banglasr1593Serbianth3679Thaiiu4457 Inuktituten963Englishccp1128Chakmaar5852Arabiczh6969Chineseeo5085 Esperantofr3760Frenchar6012Arabicru6704Russianar4019Arabicar5758Arabicfr3217Frenchzh8024Chineseen6691Englisheo1773 Esperantoja5488Japanesetr5648Turkishja593Japaneseen6732Englishchr4546Cherokeebn3093Banglael6737Greekru2684Russianfr3467Frenchth4903Thaisr2624Serbianja7058Japanesear1760Arabicbn5976Banglatr7740Turkishru7931Russianzh6094Chineseel1787Greekiu5290 Inuktitutzh5746Chinesear907Arabiceo4313 Esperantoen3516Englishen2182Englishru5077Russianchr3641Cherokeeru6138Russianiu5491 Inuktitutzh1063Chinesechr5255Cherokeesr193Serbianzh1042Chinesetr5318Turkishfr1924Frenchccp753Chakmazh2482Chinesetr2122Turkishfr7745Frenchfr1353Frenches5110Spanishfr5229Frenchth4090Thaitr7139Turkishchr5853Cherokeear1973Arabiczh3542Chinesear2141Arabicfr6960Frenchiu1429 Inuktitutth7640Thaija6506Japanesezh6200Chineseiu1633 Inuktitutzh359Chineseeo1754 Esperantoru84Russianru2039Russianfr1006Frenchbn6496Banglaiu2926 Inuktitutel4343Greekiu8056 Inuktitutccp5607Chakmazh6724Chineseiu2518 Inuktitutru7458Russianeo7277 Esperantoeo4286 Esperantoeo5302 Esperantoru7629Russianen1421Englishru6659Russianzh1037Chineseru835Russianel1852Greekfr3903Frenchel4281Greekbn1084Banglaja5617Japaneseen6241Englishja1131Japanesezh5727Chineseen6635Englishfr3423Frenchja3437Japanesezh2167Chinesear5544Arabictr7069Turkishja7613Japaneseel3391Greekar968Arabicsr2056Serbianeo6707 Esperantoth147Thaien5450Englishes6446Spanishru5728Russianfr4552Frenchth7772Thaitr2153Turkishar1777Arabicel4696Greekru3079Russianzh900Chineseja3950Japaneseru4833Russiantr1514Turkishen4408Englishen4283Englishes6468Spanishiu2045 Inuktitutfr4665Frenchru2003Russianen6987Englishccp5112Chakmafr4066Frenchtr7023Turkishsr5857Serbianth2939Thaiar2316Arabicchr5324Cherokeeeo4604 Esperantofr7486Frenchbn5821Banglaccp4709Chakmael4229Greekru2919Russianccp2575Chakmaja3618Japanesetr6913Turkishar4538Arabicru6747Russianzh6891Chineseeo6608 Esperantoen4561Englishru1586Russianth5481Thaien1137Englishru7657Russianar3666Arabicth8136Thaien5272Englishen1156Englishchr3510Cherokeeccp8172Chakmaja964Japaneseru7715Russianth1752Thaiar6344Arabicar5364Arabices4820Spanishccp5014Chakmaar1604Arabicchr6288Cherokeees7638Spanishru449Russiansr4358Serbianfr4978Frenchth3093Thaitr3022Turkishar3227Arabicel7641Greekar5788Arabicru5925Russianeo7720 Esperantoen1118Englishtr8037Turkishiu1008 Inuktitutes7983Spanishja3723Japaneseja1661Japanesechr7758Cherokeeja6070Japanesees3030Spanishja5583Japanesechr4364Cherokeesr3549Serbianth2350Thaibn4715Banglachr4165Cherokeeiu5592 Inuktitutel7462Greeken2629Englishel5825Greekbn71Banglaes2428Spanishsr6498Serbianru3705Russianru2998Russianzh2326Chineseru5739Russianen7445Englishen5148Englishccp4205Chakmaiu7900 Inuktitutth1419Thaichr650Cherokeeel7063Greekeo1712 Esperantoeo1237 Esperantochr1713Cherokeear896Arabicel2289Greekar3168Arabicru168Russiansr2425Serbianes3938Spanishja4449Japaneseru1763Russiansr3341Serbianiu1873 Inuktitutsr5949Serbianth2098Thaies3989Spanishzh186Chineseja3658Japanesetr5939Turkishccp5048Chakmaen5502Englishchr824Cherokeeccp1173Chakmath7363Thaiccp7478Chakmaen4Englishccp6222Chakmath7685Thaija5946Japaneseth1621Thaichr7276Cherokeeth2622Thaiiu3150 Inuktitutzh5411Chineseccp232Chakmaeo3301 Esperantoccp2433Chakmaccp7959Chakmael1150Greekiu4328 Inuktitutccp2222Chakmaeo6332 Esperantofr6921Frenchar5523Arabicru289Russianccp1100Chakmael26Greekbn6839Banglaccp4132Chakmatr2819Turkishtr6946Turkishel4244Greekccp250Chakmaiu2821 Inuktitutchr8065Cherokeees7008Spanishar5560Arabiciu7327 Inuktitutsr3106Serbianeo2649 Esperantofr4058Frenchru294Russianchr1990Cherokeear2068Arabicja1909Japaneseth7752Thaieo2444 Esperantochr4261Cherokeebn2298Banglaru4295Russianbn2029Banglaar2462Arabicfr3353Frenchbn3794Banglachr7440Cherokeeiu6839 Inuktitutja5498Japaneseen8127Englishen1927Englishccp4559Chakmaiu2697 Inuktituttr3368Turkishtr2924Turkishar7536Arabiciu1393 Inuktitutccp172Chakmachr5516Cherokeefr5319Frenchsr966Serbiansr6844Serbianbn7756Banglafr3086Frenchccp1390Chakmachr7862Cherokeefr4090Frenchja1273Japaneseja2498Japanesesr7793Serbianchr2767Cherokeees233Spanishja995Japanesefr854Frenchja5475Japanesetr2863Turkisheo6872 Esperantoccp3084Chakmaen3225Englishchr3681Cherokeebn2907Banglaja4577Japaneseccp1698Chakmath754Thaiar1532Arabicbn5788Banglaeo984 Esperantoen5141Englishja7465Japaneseth2618Thaichr1071Cherokeees809Spanishes6972Spanishja957Japaneseiu3931 Inuktitutfr4200Frenchiu7261 Inuktitutchr6378Cherokeefr1085Frencheo3726 Esperantobn4048Banglaeo8152 Esperantoth1969Thaith8121Thaieo6286 Esperantoru468Russiantr777Turkishtr988Turkishsr3699Serbianar255Arabicar5612Arabicel2098Greekfr3567Frenchchr7582Cherokeeja2189Japaneseccp3772Chakmaen2462Englisheo3955 Esperantoiu4952 Inuktitutchr1860Cherokeeeo1905 Esperantoes6863Spanishzh1436Chineseth6217Thaifr2584Frenchbn127Banglafr6680Frenchsr6752Serbianth2538Thaisr3199Serbianth370Thaitr1327Turkishja6959Japanesefr4299Frenchccp5826Chakmaen6182Englisheo4273 Esperantoar2687Arabicchr1712Cherokeeel7595Greekja6166Japanesezh421Chinesees620Spanishsr3704Serbianen2233Englishzh2904Chineseiu3116 Inuktitutfr1701Frenches1605Spanishja3895Japanesebn2169Banglaiu1346 Inuktitutru383Russianar6753Arabiceo910 Esperantoth4009Thaitr267Turkishzh4861Chinesezh6655Chinesetr6892Turkishzh1849Chinesebn7912Banglafr6393Frenchja150Japanesetr7101Turkishccp4711Chakmafr4471Frenchfr7500Frenchru117Russianfr5545Frenchja778Japanesebn5881Banglaccp5621Chakmaar2171Arabicja7116Japanesezh2824Chineseccp1080Chakmaja3262Japanesees7076Spanishar7042Arabicbn4850Banglaccp4688Chakmaes3212Spanishiu5309 Inuktitutiu5977 Inuktitutar8021Arabicen3719Englishru2001Russianar2620Arabictr1046Turkishzh5487Chineseru2703Russianel5098Greekfr4027Frenchru330Russiantr2119Turkishchr6005Cherokeeeo699 Esperantoccp7848Chakmaes2737Spanishzh6271Chineseth1334Thaies8118Spanishchr5272Cherokeeeo3652 Esperantoccp7369Chakmazh540Chinesees4243Spanishja2561Japaneseth6316Thaiar1353Arabicchr2186Cherokeeccp3041Chakmaru7102Russianth4034Thaisr4088Serbiansr3508Serbianth2100Thaien5438Englisheo1101 Esperantozh5676Chineseel2533Greekeo5392 Esperantoru3186Russiansr7223Serbianccp5551Chakmasr3224Serbianeo1641 Esperantoru7431Russianth2397Thaitr5571Turkishth3500Thaitr6574Turkishes1072Spanishsr3225Serbianfr2844Frenchzh4188Chineseru2553Russianiu6033 Inuktitutbn6062Banglael2692Greekbn7787Banglaccp551Chakmazh4150Chineseja3535Japaneseel1043Greekchr7560Cherokeesr6620Serbianja5320Japanesetr1130Turkishel325Greekar5448Arabicru6438Russianbn5171Banglachr1164Cherokeeel267Greeksr2017Serbianar1573Arabicbn4391Banglaeo7227 Esperantoeo7232 Esperantofr7949Frenchen2043Englishes5755Spanishru7580Russianar3691Arabiciu5908 Inuktitutar3642Arabicsr1564Serbianes7176Spanishzh6500Chinesechr6157Cherokeeen3801Englishtr7798Turkishsr3165Serbianru401Russianzh5059Chineseccp5592Chakmael600Greeken7428Englishfr1331Frenchfr4116Frenchzh7730Chineseru6118Russianiu7716 Inuktitutzh5617Chinesees5479Spanishth1206Thaien1654Englishar5392Arabicel29Greekzh2770Chinesezh3799Chinesechr8170Cherokeesr4637Serbianbn5064Banglazh6755Chineseel2751Greekar2473Arabicar6183Arabicccp6680Chakmaes3599Spanishja346Japanesetr1608Turkishzh5131Chineseru7195Russiansr3846Serbianen6174Englishar2044Arabiceo304 Esperantoiu977 Inuktitutiu4906 Inuktitutzh6487Chinesefr318Frenchen1739Englishth4434Thaiiu5706 Inuktitutzh6940Chinesetr1981Turkishar7172Arabicchr2537Cherokeeen5600Englishen616Englishccp221Chakmatr314Turkisheo5529 Esperantoel124Greeken6150Englisheo610 Esperantoru6001Russiansr3730Serbianru6370Russianes7399Spanisheo6659 Esperantoel6835Greekth2543Thaies85Spanishru6579Russianar3162Arabicbn4266Banglasr6570Serbianchr6668Cherokeebn2474Banglaes5777Spanishchr6546Cherokeeru807Russianeo8171 Esperantoth985Thaiar2116Arabicar2475Arabiceo5635 Esperantoeo2165 Esperantofr2168Frenchiu7902 Inuktitutja4548Japanesetr8189Turkishchr1826Cherokeeccp4154Chakmael6438Greekes614Spanishes7932Spanishja5411Japanesebn6052Banglath953Thaiar6431Arabicfr7331Frenchccp4876Chakmaru402Russianeo292 Esperantoeo7049 Esperantoru5136Russianru4134Russianccp2125Chakmaccp3954Chakmabn3977Banglaru8112Russianccp6815Chakmaccp5410Chakmaen7692Englishen5155Englishsr4755Serbianfr1381Frenchen5015Englishru7365Russianbn8171Banglath3145Thaizh5899Chineseccp2810Chakmabn4816Banglael5931Greekes7493Spanishbn6310Banglaeo7728 Esperantobn7392Banglaes7242Spanishchr1070Cherokeechr4630Cherokeebn5763Banglael7631Greekja1587Japanesesr4362Serbianel384Greekes4926Spanishes4268Spanishsr2765Serbianccp4551Chakmath4599Thaiar892Arabicbn7625Banglael2502Greektr6894Turkishbn1610Banglaen525Englishbn6899Banglabn4438Banglachr6788Cherokeees2263Spanishel2768Greekel1898Greekiu1646 Inuktitutel2341Greekru5614Russianeo6726 Esperantoiu1246 Inuktitutes1004Spanishja644Japaneseiu470 Inuktitutth5576Thaies5819Spanishth2207Thaitr7330Turkishzh5449Chinesebn5269Banglaen1565Englishtr1247Turkishccp3425Chakmabn4745Banglaiu6337 Inuktitutth2831Thaieo5247 Esperantoja1713Japanesefr6655Frenchfr3110Frenches3400Spanishth7440Thaiar1283Arabicar2956Arabicsr4746Serbiantr7380Turkishar5192Arabices894Spanishbn4513Banglaes4530Spanishru4577Russianeo1699 Esperantozh8014Chineseru3836Russianiu6185 Inuktitutar4850Arabicbn4132Banglael2722Greekccp3965Chakmachr2925Cherokeeja3216Japaneseth146Thaibn8076Banglabn6489Banglael6501Greekja2716Japanesetr7944Turkishja111Japanesechr6681Cherokeeel1427Greekfr3266Frenchen1915Englishfr6295Frenchth1746Thaiar5999Arabices1798Spanishes4630Spanishru1752Russianru6181Russiansr5951Serbianzh2378Chinesechr7455Cherokeebn4752Banglasr3871Serbianen7213Englishes8035Spanishzh7006Chineseel7358Greektr3139Turkishchr2075Cherokeechr7148Cherokeetr1854Turkishbn846Banglazh6426Chineseel5312Greeken6587Englishru6655Russianru888Russianru848Russianth4113Thaitr3457Turkishru5314Russianchr8134Cherokeefr3454Frenchzh5008Chinesetr1131Turkishccp4522Chakmaja1333Japanesezh3561Chineseeo4012 Esperantoja7684Japaneseja622Japaneseccp386Chakmabn2879Banglabn957Banglaen5095Englishsr8136Serbianth5259Thaizh1478Chineseth6777Thaichr7622Cherokeees7916Spanishes7277Spanishen7525Englishfr4896Frenchtr2871Turkishar5620Arabicen2146Englishru3171Russianiu2109 Inuktitutel7647Greekja3043Japaneseru6837Russianbn6987Banglaru2048Russianfr7803Frenchzh4517Chinesetr5704Turkishar3007Arabicfr992Frenchiu5661 Inuktitutiu6423 Inuktitutth6345Thaiar6501Arabicccp3661Chakmaen7250Englishchr2684Cherokeeccp5384Chakmaen6810Englisheo5181 Esperantoeo1701 Esperantoth8151Thaizh5237Chinesebn357Banglaen1345Englishccp3930Chakmachr8000Cherokeeeo6724 Esperantoen7430Englishth1530Thaiccp914Chakmaccp4463Chakmaes7537Spanishchr6416Cherokeeen4250Englishiu1625 Inuktitutiu3263 Inuktitutzh7138Chinesesr5595Serbianel5444Greekchr7993Cherokeesr3600Serbiantr3459Turkishsr7336Serbianbn5662Banglael3890Greekru5396Russiantr1397Turkishsr4086Serbianth2222Thaien4325Englishzh8067Chinesees7519Spanishen3232Englishru4462Russianchr1870Cherokeeel2475Greekzh3264Chineseth2293Thaibn4461Banglael7560Greeksr3889Serbiantr95Turkishsr6273Serbianeo1852 Esperantotr5638Turkishtr2098Turkishru7379Russianes4793Spanishja3883Japanesezh3577Chinesetr1421Turkishel4728Greeken798Englishth191Thaija5503Japaneseel2523Greeken6381Englishth6424Thaizh6855Chinesetr2199Turkishtr7309Turkishccp5413Chakmabn4195Banglael8129Greekeo505 Esperantofr6225Frenchzh4818Chineseru7787Russianes3626Spanishiu3049 Inuktitutar884Arabicar5348Arabicen7968Englishja4790Japaneseth1318Thaitr3300Turkishru4656Russianccp2112Chakmaccp4169Chakmachr6783Cherokeefr5431Frenchchr5905Cherokeear4070Arabicsr2747Serbianen666Englishchr1776Cherokeeth1044Thaitr162Turkishel4062Greekes6127Spanishen2535Englishru5472Russianeo5883 Esperantobn4378Banglaen42Englisheo1474 Esperantosr5152Serbiansr8043Serbianes7943Spanishth5605Thaith177Thaizh6688Chineseiu5604 Inuktitutbn631Banglaes1494Spanishzh535Chinesees5870Spanishchr2223Cherokeeeo2528 Esperantofr7577Frenches4266Spanishru5060Russianfr7635Frenchsr4609Serbianbn1152Banglaen5794Englishar6649Arabicen6168Englishccp7426Chakmasr5893Serbianfr8150Frenches7000Spanishes2111Spanishfr4524Frenchth2478Thaith6773Thaien4588Englishru7875Russianja1406Japaneseeo2022 Esperantochr3671Cherokeeel7646Greekzh1445Chinesebn294Banglaeo2199 Esperantofr849Frenchchr3606Cherokeeja3226Japanesees821Spanishru2279Russianzh1189Chinesear2707Arabicbn4120Banglaiu4710 Inuktitutiu6636 Inuktitutja8027Japaneseeo4625 Esperantochr4354Cherokeear960Arabiceo2113 Esperantoeo7520 Esperantoel2271Greekbn2409Banglaen6370Englishth5368Thaiel3695Greekes5260Spanishiu5542 Inuktitutiu5054 Inuktitutsr1610Serbianccp5957Chakmath7114Thaiiu3289 Inuktituteo2184 Esperantoccp274Chakmael3869Greekchr5602Cherokeebn6743Banglael5146Greekfr597Frenchiu6163 Inuktitutru1218Russianiu5662 Inuktitutfr1258Frenchja694Japanesesr3849Serbianth3073Thaith3541Thaith2399Thaiccp1889Chakmath2629Thaitr1049Turkishbn3559Banglachr1973Cherokeezh4446Chinesefr2007Frenchfr6448Frenchiu8012 Inuktitutes3351Spanishiu2560 Inuktitutbn766Banglael2452Greeken2682Englisheo43 Esperantobn13Banglaccp2021Chakmabn894Banglaja1821Japanesezh5413Chinesesr6698Serbianzh6644Chineseccp823Chakmaeo3215 Esperantozh3663Chinesechr6370Cherokeesr2491Serbianfr3326Frenchfr288Frenchtr2357Turkishsr1387Serbianccp1780Chakmachr7041Cherokeear140Arabiczh810Chineseel6344Greekar6782Arabicen4539Englisheo3325 Esperantoiu5133 Inuktitutes4487Spanishru1406Russianel6926Greekccp7372Chakmaar3123Arabicar6157Arabicru3477Russianccp1958Chakmael3606Greeken4145Englishfr2922Frenchth1580Thaibn4822Banglachr376Cherokeeru2685Russianru6475Russiantr7488Turkishru2829Russianchr1994Cherokeees3684Spanishja8063Japanesees2480Spanishccp222Chakmaru6948Russiansr7060Serbianes3651Spanishsr4627Serbianbn3253Banglaeo4597 Esperantoar7298Arabicfr7868Frenchth3016Thaitr536Turkishel4366Greekeo2324 Esperantoeo4922 Esperantoth2039Thaizh2647Chinesezh7168Chinesezh60Chinesefr822Frenchen1030Englishth5356Thaith7776Thaibn6343Banglaccp1911Chakmasr5314Serbianccp444Chakmaeo4785 Esperantoiu6921 Inuktitutes333Spanishru4551Russiansr864Serbianes2389Spanishsr3837Serbianth4787Thairu7253Russianes1756Spanishes757Spanishiu5231 Inuktitutar277Arabicth1255Thaizh2990Chineseiu5921 Inuktituten3295Englishen4773Englishzh3426Chineseth3979Thairu2529Russianbn5667Banglaes4915Spanishar3748Arabiczh3143Chineseen6974Englishiu3134 Inuktitutiu5646 Inuktitutzh2755Chinesetr3278Turkishru1390Russiantr6434Turkishiu5144 Inuktitutja7393Japaneseeo6883 Esperantoth6535Thaiel1371Greekar5147Arabicccp474Chakmael3254Greeken4686Englishen7696Englishzh693Chinesebn1839Banglaja7112Japaneseiu6251 Inuktitutru7550Russianccp4512Chakmaar6580Arabicen2218Englishtr1638Turkishar4571Arabicchr5052Cherokeeen3504Englishen4022Englishfr5162Frenchiu4817 Inuktituten4207Englishar5340Arabicsr6665Serbianfr2105Frenchru4159Russianth244Thaija965Japanesetr6747Turkisheo1014 Esperantoru3308Russianiu1005 Inuktitutel2063Greekja958Japaneseccp357Chakmael1657Greekru2618Russianar7811Arabices5667Spanishth3219Thaichr385Cherokeeel4621Greekja5937Japaneseel5523Greektr7002Turkisheo4395 Esperantochr1139Cherokeebn2924Banglaen686Englishar2987Arabiceo2415 Esperantoja1950Japanesesr5115Serbiansr1091Serbianccp6042Chakmaen491Englisheo2820 Esperantochr384Cherokeeccp5230Chakmasr6776Serbianccp3714Chakmaen1185Englishbn767Banglael55Greeksr2169Serbianth223Thaith7419Thaizh3478Chineseen6608Englishja2508Japaneseja7418Japaneseel3304Greekbn107Banglasr8168Serbianel4694Greekth1739Thairu1000Russianar7837Arabicbn4039Banglael5180Greekccp6889Chakmasr71Serbiansr1087Serbianel6435Greektr3640Turkishth4647Thaizh7896Chinesetr2427Turkishes7685Spanishru4710Russianzh5308Chinesefr5378Frenchel5793Greekel4305Greekbn2670Banglatr3206Turkishja5132Japaneseru1606Russianar6194Arabicen7369Englishzh7500Chineseja3939Japanesees0Spanishth4776Thaija1438Japanesetr2672Turkishbn6717Banglael7224Greekfr5472Frencheo6539 Esperantoen3646Englishzh6146Chineseen1998Englishes6208Spanishel1721Greekth5789Thaizh3572Chineseiu6486 Inuktitutel2935Greekfr1946Frenchru258Russianja3039Japanesebn2960Banglaes5079Spanishth1402Thaiel3546Greeken6896Englishiu5986 Inuktitutar315Arabicchr436Cherokeeja4810Japaneseeo6414 Esperantochr5724Cherokeefr6137Frenchfr902Frenchel2928Greekar4047Arabiceo3495 Esperantoen7720Englishth6430Thaiar7168Arabices3787Spanishtr462Turkishes4973Spanisheo3173 Esperantoiu3897 Inuktitutiu7426 Inuktitutel5844Greekel2812Greekja4026Japaneseru249Russianru6960Russianen882Englishes6379Spanishru1548Russianzh8106Chinesetr5922Turkishth8010Thaiar6358Arabiciu3808 Inuktitutccp2084Chakmafr57Frenchru2953Russianen7071Englishchr2968Cherokeechr3369Cherokeeja5145Japaneseja2047Japaneseen6769Englishja1191Japanesetr6576Turkisheo1779 Esperantobn4854Banglatr5699Turkishccp6807Chakmath3139Thaiccp2902Chakmael4414Greekth3750Thaien7223Englishen368Englishbn5999Banglabn7129Banglaiu4913 Inuktitutja5141Japaneseen5414Englishsr2395Serbianccp2337Chakmael6831Greekccp6211Chakmaes394Spanisheo6521 Esperantoth3904Thaifr1690Frenchel1528Greeksr3113Serbianbn366Banglaen2228Englishen3284Englishiu638 Inuktituten2790Englishbn3398Banglaja4522Japaneseeo5701 Esperantobn1011Banglafr3165Frenchar7385Arabiciu4700 Inuktitutchr1018Cherokeefr2079Frenchru3462Russiantr2542Turkishsr5003Serbianru7088Russianbn2717Banglaja2231Japanesetr4396Turkishzh4242Chineseiu6848 Inuktitutru5533Russianfr7438Frenchth528Thairu1467Russianel784Greekbn6292Banglazh1069Chinesechr607Cherokeechr3383Cherokeeccp4412Chakmaccp7355Chakmaiu7815 Inuktitutth5963Thaith100Thaien7289Englishar2172Arabicfr3390Frenchja735Japaneseeo1858 Esperantobn264Banglaru6694Russianth7140Thaitr4314Turkishen3565Englishccp1823Chakmaeo6576 Esperantoes3289Spanishfr5212Frenchru1397Russiantr7993Turkishfr8009Frenchbn6908Banglaccp4082Chakmabn4981Banglabn2557Banglachr5900Cherokeetr5174Turkishar5878Arabicth4821Thaiccp6922Chakmath59Thaija3386Japanesetr731Turkishes6677Spanishth5175Thaija3649Japanesechr6619Cherokeeccp1493Chakmael688Greekbn5974Banglachr7015Cherokeeen1420Englishru6158Russiantr7996Turkishtr42Turkishzh4552Chinesefr6569Frenchbn5028Banglaja7478Japaneseeo5261 Esperantoar7270Arabiciu6569 Inuktitutbn70Banglasr6738Serbianchr1511Cherokeebn58Banglaar901Arabicbn5611Banglaeo2943 Esperantotr4297Turkishja3786Japanesetr456Turkishen7539Englishel1881Greekes6225Spanishzh5645Chinesezh6544Chineseel92Greekeo7252 Esperantoes4248Spanishfr1549Frenchth6782Thaizh7255Chineseiu7506 Inuktitutchr1952Cherokeebn3166Banglabn3831Banglaiu1215 Inuktitutel7438Greekru577Russianiu4280 Inuktitutar8081Arabicel7770Greektr2217Turkishtr1228Turkishar2782Arabiczh4474Chinesebn4717Banglabn1725Banglaes8172Spanishtr2727Turkishth3977Thairu6481Russianiu1828 Inuktitutfr8014Frenchiu67 Inuktitutar6224Arabicsr586Serbianth7565Thaitr1274Turkishel5939Greekzh3887Chinesechr2894Cherokeetr6428Turkishar5172Arabicsr3584Serbianeo1384 Esperantoth2964Thaiel1894Greekfr6274Frenchar3036Arabicel739Greekchr5595Cherokeeru4460Russianar7245Arabices3173Spanishfr3428Frenchiu2811 Inuktitutja1745Japanesesr3370Serbianzh7108Chinesees7720Spanishth1956Thairu5507Russianbn312Banglaeo3121 Esperantoes2335Spanishru7966Russiantr2033Turkishzh7417Chinesetr5057Turkishth2481Thaibn4199Banglaar3964Arabicbn5647Banglasr4850Serbianja3241Japanesebn4690Banglael6458Greekja933Japaneseja6002Japaneseccp6776Chakmafr5168Frenchiu6329 Inuktituten7634Englishen2838Englishtr4588Turkishja6248Japanesebn6530Banglaja2705Japaneseen2674Englishfr1776Frenchsr2036Serbianfr6246Frenchru113Russianes2468Spanishja4133Japanesees736Spanishbn2256Banglaccp2527Chakmaen6890Englishbn536Banglael7033Greekchr3741Cherokeefr7769Frenchja2610Japaneseen4334Englishes306Spanishth7914Thairu261Russianar3115Arabicfr5624Frenchen2025Englishru2894Russianel1614Greeksr4894Serbianen8177Englishth8133Thaitr865Turkishar7071Arabictr7288Turkishja1173Japanesezh542Chinesear7943Arabicchr4663Cherokeear3629Arabicel5334Greekar663Arabicchr7023Cherokeeeo7638 Esperantobn3461Banglaes5776Spanishbn4325Banglaja4495Japaneseja5477Japaneseel1757Greeksr8003Serbianiu1962 Inuktitutbn2373Banglaja6098Japanesefr4026Frenchchr4351Cherokeebn4796Banglasr7857Serbianar5074Arabiceo3715 Esperantoru1032Russianfr7340Frenchth12Thaiiu7256 Inuktitutth6257Thaiel2031Greekeo4929 Esperantosr7243Serbianchr6736Cherokeefr5517Frencheo324 Esperantobn7048Banglaja1261Japaneseccp5162Chakmaes3541Spanishth4402Thaiiu3919 Inuktituteo919 Esperantoja197Japanesezh5383Chineseth3056Thairu5051Russianiu7235 Inuktitutru5881Russianfr7990Frenchiu7590 Inuktitutel5657Greekiu200 Inuktituten1270Englishsr1942Serbianeo7593 Esperantoes2455Spanishar6339Arabiceo2498 Esperantoel7774Greektr7182Turkishja2353Japaneseja2776Japaneseel4167Greeksr1414Serbianzh6350Chinesezh7207Chinesebn5128Banglachr5312Cherokeees8160Spanishru5015Russianar5377Arabicbn2539Banglasr53Serbianes874Spanishiu5361 Inuktitutsr3504Serbianchr2522Cherokeees1963Spanishiu8051 Inuktituten962Englishiu69 Inuktitutiu1296 Inuktitutzh2556Chineseiu866 Inuktitutbn4078Banglabn7257Banglath2965Thaitr6698Turkishsr6576Serbianccp2747Chakmaes1368Spanishen6866Englishtr1045Turkishtr6986Turkishccp6972Chakmaar6244Arabicja6551Japaneseja8167Japanesesr3430Serbiantr2035Turkishbn7668Banglaja122Japanesear4026Arabicsr8149Serbianel243Greekiu6186 Inuktitutja5677Japanesezh1750Chinesefr4687Frenchbn6278Banglaeo1420 Esperantoru6221Russianbn4279Banglael4553Greekar4755Arabices2000Spanishccp4708Chakmazh6267Chinesebn3042Banglaiu6218 Inuktitutsr5761Serbianth3619Thaiel8037Greekja4518Japaneseja4639Japaneseru3655Russianes4076Spanishbn46Banglath4874Thaiar1676Arabicel4836Greekja782Japaneseru1812Russianth3330Thaitr5312Turkishth40Thaifr6016Frenchiu2312 Inuktitutbn3226Banglachr2136Cherokeees2869Spanishiu8 Inuktitutja6091Japanesear388Arabicccp4331Chakmael5497Greektr1116Turkishtr5763Turkishbn445Banglabn6697Banglatr494Turkishel3120Greekes1843Spanishja54Japanesebn5727Banglaeo3611 Esperantoen3643Englishel1381Greekes2034Spanishru5045Russiansr3Serbianth4518Thaichr5242Cherokeesr3503Serbiansr8084Serbianth1056Thaiiu7855 Inuktitutzh4512Chinesebn7986Banglafr3029Frenchar4800Arabicchr806Cherokeefr5119Frenchccp7264Chakmaeo7228 Esperantoes584Spanishja1802Japanesefr52Frenchsr5068Serbiansr6628Serbianzh8148Chineseru3419Russiantr3337Turkishja7084Japanesees1949Spanishzh7038Chinesefr2253Frenchru5903Russianja20Japanesear5654Arabicsr3898Serbianar1344Arabicru7499Russianen96Englishth4256Thaichr5576Cherokeear495Arabicel3756Greekccp4555Chakmafr7552Frenchth1019Thaies8052Spanishel3321Greeken6235Englishes3228Spanishar5212Arabicja3389Japanesees7711Spanishja3231Japanesesr4323Serbiansr6508Serbianth1774Thaiar2651Arabiczh3547Chinesechr8071Cherokeees1886Spanisheo1230 Esperantoccp4288Chakmaiu3663 Inuktitutru6486Russianfr6601Frenchfr2309Frenchja7924Japanesefr1455Frenchsr5645Serbianth5885Thaies7942Spanishchr7464Cherokeesr2991Serbianth1966Thaieo3307 Esperantoth1010Thaitr1853Turkishchr4671Cherokeebn5767Banglatr1079Turkisheo2875 Esperantoar1115Arabiceo4670 Esperantoes5668Spanishiu2729 Inuktitutth6763Thaiel2769Greekchr3763Cherokeees5107Spanishes7546Spanishru1591Russiantr1738Turkishel3466Greekja4493Japaneseel6718Greekfr7387Frenchth7898Thaien5060Englishru1942Russianel6963Greeken53Englishfr2021Frenchth2041Thaija5053Japaneseth367Thaizh3052Chinesear4344Arabicth7441Thaieo4084 Esperantoth3025Thaija6841Japaneseel3027Greeksr526Serbianchr3218Cherokeetr6668Turkishzh6062Chinesefr4212Frenchja3173Japaneseja6598Japanesesr3369Serbianiu2052 Inuktitutth731Thaiccp7346Chakmachr7453Cherokeeccp1865Chakmafr4408Frenchja1107Japanesesr5482Serbianar3724Arabicja6602Japaneseja4309Japanesechr3318Cherokeeru2826Russianel4230Greekes8186Spanishbn4238Banglaiu1707 Inuktitutfr2733Frenchar6447Arabicru3935Russianth1702Thaiar1267Arabicth6287Thaifr1346Frenchtr2330Turkishtr785Turkishth4026Thaiccp1577Chakmatr1133Turkishccp5959Chakmaru2769Russianbn4415Banglazh5635Chineseen6346Englishbn4489Banglabn6643Banglael2707Greekiu3007 Inuktituteo5724 Esperantoiu437 Inuktitutccp2259Chakmaiu7487 Inuktituteo5321 Esperantoja257Japanesechr5991Cherokeeeo1711 Esperantotr2528Turkishtr6895Turkishchr5846Cherokeees228Spanisheo666 Esperantotr505Turkisheo2230 Esperantoccp473Chakmaja4037Japaneseeo4405 Esperantofr2724Frenchru8172Russianel1805Greekja7767Japanesetr6616Turkishsr5898Serbiantr7816Turkishsr7367Serbianeo237 Esperantoar5095Arabiceo7194 Esperantoen1853Englishja2026Japanesees7284Spanishbn126Banglaes5593Spanishsr546Serbianzh224Chinesezh5317Chineseth7206Thaiccp3413Chakmaes4084Spanishsr8088Serbiansr1460Serbianen3882Englishfr5322Frenches5213Spanishes3595Spanishes7087Spanishiu1925 Inuktitutfr661Frencheo5441 Esperantoes6683Spanishja4672Japanesesr5964Serbianchr2292Cherokeetr1098Turkishtr2167Turkishccp227Chakmachr4912Cherokeetr3993Turkishccp7944Chakmatr7383Turkishru5361Russiansr3635Serbianes1083Spanishar2899Arabicccp4885Chakmasr5246Serbianzh3370Chineseccp4391Chakmafr5397Frenchchr6110Cherokeeru18Russianar1890Arabicar324Arabicth7906Thairu455Russianbn4459Banglachr388Cherokeeel202Greekfr7604Frenchiu1891 Inuktitutja3068Japaneseiu5533 Inuktituten5232Englishiu4488 Inuktitutja7405Japaneseru408Russianbn1589Banglaccp5543Chakmael3207Greekfr3502Frenchru28Russianbn2304Banglatr4452Turkishiu4527 Inuktitutth6442Thaiar6208Arabicbn6890Banglazh2414Chinesefr7986Frenchel4946Greekccp7475Chakmaiu545 Inuktitutel441Greekth4962Thaichr5043Cherokeeru1159Russiantr993Turkishbn6754Banglaja8092Japanesear2604Arabictr4600Turkisheo5207 Esperantoel157Greekes5353Spanishja7288Japanesechr483Cherokeees992Spanishja3548Japanesefr5449Frenchru7198Russianeo6051 Esperantoccp7333Chakmaar1786Arabicccp4090Chakmaen5853Englisheo7707 Esperantotr2576Turkishfr2806Frenchth3040Thaibn7330Banglachr7632Cherokeear3321Arabicar2140Arabicsr7959Serbianen5610Englishiu7551 Inuktitutru3781Russianfr3173Frenchar3034Arabiceo1567 Esperantoar2558Arabiceo7921 Esperantoar7972Arabiceo131 Esperantoes5211Spanishru6126Russianru6238Russiantr4013Turkishccp6087Chakmaen4366Englishja4989Japanesetr1339Turkishth5970Thaitr6837Turkishth8102Thaith2597Thaiel2059Greekccp5103Chakmatr4590Turkishiu74 Inuktitutth7872Thaies4876Spanishccp2566Chakmafr4547Frenchen199Englishiu6938 Inuktitutth400Thaiel1860Greekes7635Spanishth5688Thaichr3225Cherokeeeo553 Esperantoar2736Arabicja5966Japaneseiu2794 Inuktitutiu4632 Inuktitutth4463Thaien5343Englishel1171Greekeo5524 Esperantosr7640Serbianru4103Russianchr7490Cherokeeen3053Englishfr4183Frenchru1145Russianchr1320Cherokeeru5650Russianchr4191Cherokeesr2440Serbianen8149Englishiu4075 Inuktitutru976Russianth7214Thaiel4710Greektr6723Turkishzh3569Chinesezh7081Chineseel833Greeksr8113Serbianchr4550Cherokeeccp691Chakmaeo2194 Esperantoeo4464 Esperantoru5154Russianja484Japaneseeo6737 Esperantosr7871Serbianar2898Arabicja2497Japanesezh5904Chinesees2433Spanishtr5120Turkishbn1485Banglaccp6930Chakmaiu2247 Inuktituttr81Turkishfr6369Frenchzh4016Chineseth2159Thaies392Spanishiu7822 Inuktitutfr6400Frenchchr5362Cherokeeen437Englishar2429Arabiczh4604Chinesebn5325Banglafr5546Frenchccp3039Chakmachr661Cherokeebn6098Banglaccp2035Chakmaen4179Englishiu4581 Inuktitutja2926Japanesechr1526Cherokeeru5864Russianchr4101Cherokeeeo3280 Esperantoeo6994 Esperantoth4346Thaibn5959Banglafr5278Frenchar8004Arabiciu1842 Inuktitutsr986Serbianar4536Arabiciu903 Inuktitutja6097Japaneseth1729Thaizh2156Chinesefr2247Frenchar1282Arabicsr5435Serbianja4234Japanesechr4947Cherokeeen4923Englisheo2191 Esperantofr6735Frenchsr3959Serbiantr5397Turkishccp3729Chakmazh4177Chinesezh4561Chineseen1916Englishru5991Russianes548Spanishccp2963Chakmazh1132Chinesetr7970Turkishar5165Arabiceo3700 Esperantoja6870Japaneseja3938Japaneseja1024Japanesesr3990Serbianfr2322Frenchel566Greekel883Greeken3203Englishja3042Japaneseru5835Russianru3930Russiantr4722Turkishbn5566Banglaen4626Englishsr6676Serbianen8009Englishchr3499Cherokeefr3875Frenchbn4827Banglael4060Greekbn7367Banglaccp104Chakmaen8025Englishth2376Thaies1772Spanishes4577Spanishru3532Russianzh6440Chinesesr373Serbianchr6705Cherokeezh7374Chinesear11Arabiciu2737 Inuktitutsr5296Serbianiu6471 Inuktituttr106Turkishiu4276 Inuktitutar6265Arabicth899Thaieo6234 Esperantoru7394Russianeo5773 Esperantotr7982Turkishja4352Japanesetr3953Turkishfr3682Frenchja67Japaneseja1329Japaneseiu2310 Inuktitutbn5087Banglaja1935Japanesear4684Arabiciu8177 Inuktitutiu8186 Inuktitutel5647Greekar1707Arabicel2315Greekzh220Chinesechr4220Cherokeeth7541Thaitr5969Turkishel1571Greeken1632Englishzh3449Chineseru3432Russianes1932Spanishth4322Thaies7448Spanishar4939Arabicru3511Russianbn6958Banglaja7099Japaneseja3460Japanesebn2184Banglaja4262Japanesear5254Arabicbn6696Banglaccp2873Chakmabn6979Banglatr7223Turkishen6850Englishes1617Spanishru2670Russianen528Englishiu6637 Inuktituttr3197Turkishzh1188Chinesezh7283Chineseccp5721Chakmael1002Greekel4519Greekeo111 Esperantoes7193Spanishen6156Englishen4822Englishja2741Japanesetr3581Turkishja5243Japanesees4452Spanishar6352Arabicar5772Arabicen2199Englishth6862Thaiel5062Greekchr2342Cherokeeru4048Russianzh2684Chineseen3447Englishes3034Spanisheo7225 Esperantoru4424Russiansr1970Serbianth5646Thaisr4852Serbianth6554Thaiar254Arabicsr3452Serbianchr5131Cherokeear6102Arabiceo225 Esperantoja228Japaneseeo870 Esperantofr3111Frenchel5309Greekiu3057 Inuktitutsr7403Serbianru3638Russianes1795Spanishiu3192 Inuktitutbn6731Banglaru6852Russianel2316Greekar1598Arabiceo1375 Esperantoccp6560Chakmaiu1661 Inuktitutzh5583Chineseen246Englishzh7039Chinesees5604Spanishfr6810Frenchchr2477Cherokeeccp5912Chakmabn4587Banglazh601Chineseen7738Englishel5817Greekeo5062 Esperantozh8070Chinesechr4336Cherokeeccp5705Chakmaru6234Russianth2650Thaija7491Japaneseen2859Englishth2601Thaieo5109 Esperantoth2883Thaieo7280 Esperantoel6773Greekzh4444Chinesees3983Spanishiu5779 Inuktitutfr6682Frenchsr5186Serbianru4208Russiantr2168Turkishtr680Turkishccp219Chakmael2335Greekccp2569Chakmaiu7720 Inuktitutja813Japaneseen4701Englishsr1073Serbianth2884Thaien2862Englishes1708Spanishiu7387 Inuktituttr502Turkisheo1486 Esperantoru2132Russianes7322Spanishsr6396Serbianar5242Arabiczh7275Chineseru2883Russianel3909Greekfr430Frenchsr7672Serbianfr7328Frenchar14Arabictr1094Turkishru4504Russiantr2597Turkishzh5950Chinesees5799Spanishiu3292 Inuktituteo8012 Esperantoen6680Englishar1564Arabicar3390Arabictr7480Turkishzh270Chinesesr1239Serbianzh2262Chineseja3357Japanesear5439Arabicel4274Greekes7606Spanishth3443Thaija4572Japaneseth6925Thaiar1574Arabiciu649 Inuktituttr577Turkishzh1477Chinesear109Arabicar1851Arabicccp2682Chakmaen1226Englishen4440Englishtr1633Turkishbn5805Banglazh774Chinesezh5813Chinesear6584Arabices5150Spanishru5913Russianchr4906Cherokeebn7055Banglaeo1647 Esperantoeo613 Esperantozh4001Chinesesr1671Serbianes1538Spanishzh500Chineseel945Greekel7521Greekeo4921 Esperantochr6326Cherokeeen7550Englishen8105Englisheo4267 Esperantofr2554Frenchiu7221 Inuktitutchr3616Cherokeear6182Arabicth4887Thaichr6056Cherokeeen4284Englishth1528Thaith4999Thaiel6366Greekbn3362Banglabn5004Banglazh7462Chinesees6685Spanishar819Arabicchr5320Cherokeeel811Greekes60Spanishes3242Spanishiu6425 Inuktituten4974Englishja14Japaneseccp6954Chakmael1527Greekel1565Greekeo2988 Esperantosr3757Serbianen2001Englisheo4836 Esperantoen7913Englishiu3535 Inuktituttr128Turkishccp4946Chakmazh7864Chinesear5Arabicen3287Englishes6436Spanishchr5292Cherokeechr5330Cherokeetr2837Turkishzh6943Chineseccp6850Chakmaja5529Japaneseth7147Thaiar7072Arabicchr2560Cherokeeth2024Thaizh5380Chinesear3456Arabicfr6346Frenchzh5121Chineseel8135Greekccp1429Chakmaiu1094 Inuktitutccp1401Chakmaeo2652 Esperantoja7195Japanesear7195Arabicru231Russianzh4383Chinesechr5672Cherokeechr1581Cherokeees6029Spanishfr4741Frenches4399Spanishes6377Spanishth7455Thaien8118Englishar4032Arabictr5674Turkishbn2443Banglafr4550Frenchja6203Japanesechr7081Cherokeeccp5740Chakmaccp2672Chakmaiu1511 Inuktitutccp1589Chakmazh3099Chinesetr2074Turkishbn6495Banglaes6954Spanishsr6976Serbianth6648Thaien1868Englishes7228Spanishsr6589Serbianth6646Thaies7299Spanishtr421Turkishbn4597Banglaes6022Spanishsr4785Serbianen778Englishccp2709Chakmaes3282Spanishsr2618Serbianbn1239Banglafr4501Frenchru5049Russianes1594Spanishth7561Thaifr6250Frenchtr883Turkishja1229Japanesetr5914Turkishel478Greektr481Turkishth3444Thaien1551Englishtr5993Turkishiu3845 Inuktitutja2114Japaneseel6233Greekru3370Russianen5328Englishes4457Spanishzh1926Chineseel4731Greekel5342Greekccp3511Chakmaiu2171 Inuktitutes3707Spanishzh2769Chineseeo1002 Esperantoru6163Russianth4037Thaichr223Cherokeeru762Russianel7821Greektr251Turkishfr4973Frenchiu7397 Inuktitutth3465Thaisr7767Serbianchr1723Cherokeesr3913Serbiantr2714Turkishja5200Japanesear4586Arabicru1199Russianzh4417Chineseja7530Japanesesr251Serbianbn5883Banglazh4024Chineseiu6564 Inuktitutiu7488 Inuktitutccp3953Chakmaes6938Spanishsr8024Serbianiu241 Inuktitutar3174Arabicth597Thaiel5954Greeken7561Englishru5853Russianccp5964Chakmabn3863Banglatr361Turkishccp6781Chakmafr5801Frenchar42Arabicen4193Englishth1959Thaizh4918Chinesear897Arabicru1489Russianru7856Russianiu1062 Inuktitutth2990Thaitr6907Turkishru4374Russianiu7224 Inuktitutchr6574Cherokeefr6078Frenchth2061Thaiiu5303 Inuktituteo6518 Esperantoiu1889 Inuktitutzh2864Chineseiu3995 Inuktitutfr2350Frenchbn1863Banglaiu6396 Inuktitutiu642 Inuktitutes6936Spanishru8164Russianeo3530 Esperantochr5161Cherokeeru5500Russianth3475Thaitr7901Turkishbn7701Banglabn4486Banglafr1055Frenchfr7238Frenchja433Japanesechr3795Cherokeesr1344Serbianel7068Greekja6028Japaneseel4161Greeksr300Serbiansr3689Serbianfr7280Frenchel4702Greekes2688Spanishtr6008Turkishiu2205 Inuktitutru436Russiansr4243Serbianeo3964 Esperantoel4298Greekru4286Russianru7418Russianchr7667Cherokeeen1877Englishfr4099Frenchbn6722Banglafr4185Frenchru8034Russianja541Japaneseja6753Japanesetr16Turkishen1040Englishbn6529Banglaja3361Japaneseen374Englishfr2703Frenchsr3185Serbianeo4131 Esperantochr5782Cherokeesr4784Serbianru2799Russianchr6441Cherokeeccp8059Chakmachr1403Cherokeechr7182Cherokeeja7819Japanesetr7977Turkishes542Spanishsr4986Serbiantr6628Turkishccp293Chakmaccp4369Chakmaen1880Englishccp1331Chakmael217Greekes4238Spanishchr4806Cherokeeen6798Englisheo2544 Esperantotr3929Turkishiu2864 Inuktitutzh1073Chinesefr1562Frenches5686Spanishru7949Russianbn416Banglabn5996Banglabn5045Banglasr1358Serbianccp4430Chakmabn4585Banglaeo3481 Esperantofr6480Frenchiu1755 Inuktitutiu3297 Inuktituttr3294Turkishar147Arabicel2344Greeksr4963Serbianeo3577 Esperantosr5486Serbianth679Thaitr6414Turkishel1602Greekzh2018Chineseru3537Russianru3738Russianru2646Russianar2850Arabicfr6102Frenchtr7953Turkishar2491Arabicru5715Russianel5941Greekbn2143Banglaar2868Arabicfr105Frencheo5279 Esperantoen5740Englishru5800Russianen2321Englishfr1591Frenchchr1948Cherokeezh3448Chinesees1458Spanishbn2399Banglaeo7327 Esperantoar2014Arabices6578Spanishel1301Greekfr6457Frenchtr2308Turkishiu7751 Inuktitutccp2047Chakmazh6746Chineseel2457Greekth7622Thaith7591Thaizh2276Chineseja3736Japaneseccp3627Chakmaccp7416Chakmazh2974Chineseen2354Englishbn5005Banglatr1542Turkishchr6334Cherokeefr8112Frenchchr4430Cherokeeth916Thaiel4766Greekes2475Spanishfr6938Frenchiu8058 Inuktitutru2723Russianru4219Russianeo5516 Esperantoiu2645 Inuktitutsr458Serbianiu700 Inuktitutzh3679Chineseen1928Englishchr6634Cherokeeccp4333Chakmaccp5958Chakmaeo4767 Esperantoes7985Spanishel2197Greekbn7187Banglaar7914Arabicja8189Japanesezh7037Chineseen6638Englishth6050Thairu4728Russiantr815Turkishja2511Japaneseth7771Thaifr5326Frenchzh3239Chineseru6967Russianfr967Frenchja7166Japanesees944Spanishsr219Serbianen4704Englishes6719Spanishja7436Japaneseiu4081 Inuktituttr5539Turkishbn4586Banglaja3000Japanesefr4407Frenchru2668Russianar5085Arabicccp5068Chakmaen3630Englisheo2675 Esperantofr2861Frenchchr7407Cherokeechr6662Cherokeetr1807Turkishar8015Arabicar8090Arabicth4140Thaitr7275Turkishfr1784Frenchar2628Arabicsr1525Serbianth356Thaiccp7975Chakmatr6199Turkishzh1942Chinesezh2166Chinesefr6590Frenchccp5140Chakmaar2713Arabicccp2400Chakmabn6075Banglaen5025Englishtr2173Turkishth4964Thaizh150Chineseja8188Japaneseiu7229 Inuktitutccp7712Chakmaja1795Japanesefr2300Frenchel7441Greekbn4288Banglachr4859Cherokeeel7653Greekchr2898Cherokeeel3553Greektr7160Turkishbn7171Banglaeo3666 Esperantoeo5455 Esperantoes3612Spanishel3880Greekeo2174 Esperantoeo6606 Esperantoen1817Englishar3090Arabicru415Russianel7059Greekeo533 Esperantoiu3529 Inuktitutar6225Arabicfr6486Frenchtr1128Turkishru1088Russianccp343Chakmaeo6996 Esperantoru7837Russiansr7346Serbiantr5178Turkishth6152Thaiar5329Arabicchr627Cherokeeeo3408 Esperantoes7206Spanisheo7914 Esperantobn1189Banglath7301Thaiar4257Arabicel3523Greekeo6751 Esperantoja2921Japaneseja3374Japanesebn5952Banglaar8145Arabiceo1378 Esperantoth6723Thaies4554Spanishccp345Chakmaccp7556Chakmaccp1215Chakmaeo7133 Esperantofr1447Frenchbn1028Banglaeo27 Esperantoen7606Englishtr6539Turkishar3871Arabiceo1224 Esperantoeo869 Esperantoiu6977 Inuktitutar3096Arabicccp7993Chakmael1535Greekchr1848Cherokeeel4500Greekth1974Thaifr3673Frenchsr7643Serbianzh3503Chineseru2118Russianja17Japanesebn6428Banglaeo70 Esperantobn5111Banglasr1625Serbiantr5591Turkishfr448Frenchru4433Russianchr832Cherokeear1045Arabices2073Spanishes4131Spanishsr2286Serbianzh3191Chinesezh4371Chineseel4580Greekth6750Thaiiu4063 Inuktitutja6357Japanesees2262Spanishes5115Spanishzh3283Chinesezh7120Chineseeo5687 Esperantochr6850Cherokeees4606Spanishzh797Chinesechr1026Cherokeeja2235Japaneseja8066Japanesebn913Banglabn5612Banglaru4317Russianiu2910 Inuktitutsr7904Serbianen8085Englishzh6662Chinesefr4837Frenchar5995Arabicar3758Arabictr3419Turkishchr1293Cherokeeiu6919 Inuktitutbn6499Banglaja2357Japanesesr4372Serbiantr4868Turkishzh1338Chineseen7842Englishtr2518Turkishth1989Thaiar2453Arabiceo421 Esperantoes6763Spanishja3270Japanesechr6457Cherokeeru1804Russianru6023Russianzh3949Chineseru6427Russiansr560Serbiansr5425Serbianbn7097Banglaja7083Japanesesr203Serbiantr3Turkishzh1523Chineseth1395Thaibn1305Banglael3887Greekel5836Greekzh4580Chineseen813Englishccp2195Chakmaru1532Russianar1119Arabiceo4363 Esperantoar7869Arabicen5387Englishiu4351 Inuktitutth2353Thaiiu4441 Inuktituteo7798 Esperantoar2818Arabicbn3577Banglazh630Chinesefr4493Frenchel177Greeksr5190Serbianes1257Spanishru2860Russiantr5621Turkishccp5762Chakmachr5295Cherokeeen4045Englishccp6562Chakmaja1150Japaneseel3124Greeksr5652Serbianel7350Greekar8050Arabictr1376Turkishru4259Russianbn5006Banglaar6347Arabicja5417Japanesesr1808Serbianfr3405Frenchbn1884Banglachr584Cherokeeen2195Englishja5773Japanesebn5496Banglael1720Greekru6766Russianiu2520 Inuktitutzh487Chinesesr2817Serbiantr2534Turkishar5423Arabicja6978Japaneseiu2405 Inuktitutzh7933Chinesebn3828Banglaeo1054 Esperantoru5487Russianja3084Japanesefr6543Frenchru5731Russianiu7674 Inuktitutchr405Cherokeefr2752Frenchja7887Japaneseen1633Englishen4204Englishsr4324Serbianiu3467 Inuktitutar8109Arabicen997Englisheo1644 Esperantoen2867Englishiu6532 Inuktituten1871Englishja2068Japanesechr674Cherokeechr6873Cherokeeen6073Englishsr5306Serbianel560Greekiu394 Inuktitutiu1772 Inuktitutzh1288Chineseen1148Englishel1913Greekfr7056Frenchzh7656Chineseeo8086 Esperantoru3838Russiansr5769Serbiantr1412Turkishth7736Thaichr3582Cherokeeel2774Greekccp740Chakmaccp5281Chakmafr143Frenchchr6228Cherokeeth1425Thaizh7675Chineseth1794Thaija5995Japaneseel3384Greeken1645Englishes3186Spanisheo3846 Esperantoel6090Greekiu2166 Inuktitutzh7948Chineseiu3078 Inuktitutiu3226 Inuktitutes862Spanishbn1676Banglabn2712Banglaes3048Spanishzh745Chinesefr1273Frenchsr3888Serbianja924Japaneseccp1455Chakmael2131Greekbn7894Banglath2097Thaibn4804Banglabn5473Banglaccp1900Chakmael3536Greekccp7443Chakmaiu5014 Inuktitutzh6352Chineseccp5707Chakmaeo5104 Esperantoccp6951Chakmaru7149Russianru3028Russiansr7659Serbianar5735Arabicar3193Arabicar5993Arabiceo3631 Esperantochr4102Cherokeechr2165Cherokeeen7951Englishccp5892Chakmasr1111Serbianzh3187Chinesechr2047Cherokeeth2152Thaichr1686Cherokeeth8072Thaiel4881Greekes5287Spanishar2277Arabictr7090Turkishel3502Greekiu5006 Inuktitutja6295Japaneseru744Russianar5509Arabictr7469Turkishsr8013Serbianfr924Frenchsr2878Serbianiu3061 Inuktituteo1828 Esperantozh2949Chinesear5237Arabicccp5611Chakmaccp2351Chakmaeo4275 Esperantoru981Russianiu2472 Inuktituteo406 Esperantotr4012Turkishccp2374Chakmafr7820Frenchar7854Arabicth1507Thaitr582Turkishja1965Japaneseth5302Thaiccp1996Chakmasr7255Serbiantr4962Turkishtr6550Turkishsr1078Serbianchr2626Cherokeesr3582Serbianfr6509Frenchru6323Russiantr6703Turkishth5150Thaiiu156 Inuktituteo7951 Esperantoen2010Englishja360Japanesezh7957Chineseeo2896 Esperantoja5203Japaneseth1198Thaies7281Spanishja6232Japanesefr7097Frenchccp4449Chakmaccp8144Chakmaen4937Englishzh7681Chineseja8181Japaneseth1032Thaith3490Thaiiu7175 Inuktitutar6141Arabictr7382Turkishchr5099Cherokeeiu3076 Inuktitutchr7427Cherokeeel5417Greekar1222Arabiciu876 Inuktitutiu5741 Inuktituttr6984Turkishchr2813Cherokeeel2923Greeken3942Englishja3464Japanesezh7641Chineseru6790Russianes650Spanishccp654Chakmath4344Thaizh330Chinesechr4642Cherokeefr954Frenchccp3355Chakmaru2209Russianfr6419Frenchiu918 Inuktituteo996 Esperantoiu3083 Inuktitutja4029Japaneseel2305Greekbn5386Banglaiu1712 Inuktituttr1292Turkishru5807Russianfr3604Frenchja628Japaneseel4844Greekeo1083 Esperantosr6139Serbianes7667Spanishes1360Spanishel4645Greekbn4285Banglasr7604Serbianar6702Arabicsr703Serbianchr439Cherokeeeo6833 Esperantoes2507Spanishja11Japanesesr2597Serbianbn4430Banglabn6964Banglaar230Arabicbn7878Banglath7607Thaibn2664Banglaes6623Spanishfr6127Frenchru4060Russianccp2684Chakmafr4569Frenchfr4472Frencheo6806 Esperantochr6497Cherokeefr3780Frenchru1775Russianth6853Thaichr4025Cherokeeth1441Thaiccp6583Chakmath5495Thaibn3912Banglaccp3699Chakmaeo3047 Esperantoru2337Russianen2387Englishru2015Russianzh83Chineseth6163Thaiar2419Arabicchr6102Cherokeeth7769Thaith3184Thaiccp8033Chakmaiu5617 Inuktituteo1654 Esperantoel2825Greekja4648Japanesees4071Spanishel994Greekfr6961Frenchel279Greekbn7969Banglaes5623Spanishbn2349Banglaja7545Japanesezh1952Chinesechr2150Cherokeeja1361Japanesechr5175Cherokeezh989Chineseja6995Japanesear5071Arabicar3851Arabicru665Russianja3312Japanesebn7517Banglaeo5613 Esperantochr19Cherokeefr4098Frenchru6134Russianar3145Arabiczh2371Chinesear2662Arabicru6373Russianel2614Greekiu1861 Inuktitutzh7117Chineseru7995Russianel1146Greekja2138Japaneseeo2222 Esperantoiu1812 Inuktitutar4029Arabiciu2034 Inuktitutar7967Arabicfr6953Frenchja696Japanesees2410Spanishzh2214Chineseja3958Japaneseeo3841 Esperantobn2267Banglabn4211Banglaru624Russianel3814Greekchr2030Cherokeees1725Spanishzh7029Chineseth1599Thaies6035Spanishth7002Thaiel2127Greektr2929Turkishtr3965Turkishbn3381Banglazh4141Chinesechr2347Cherokeebn853Banglasr2676Serbianbn920Banglabn6926Banglaccp3220Chakmachr2834Cherokeeja4163Japanesesr7745Serbianel1676Greeken421Englishbn6063Banglaar336Arabicja4826Japaneseth8047Thaisr3756Serbianen5230Englishzh7079Chineseel5319Greekth7097Thaies8019Spanishccp2534Chakmaiu3746 Inuktituttr4548Turkishchr6315Cherokeesr3495Serbiansr7799Serbianfr4944Frenchfr3424Frenchccp2607Chakmaeo7091 Esperantoccp970Chakmaeo4634 Esperantozh280Chineseth4704Thaith7256Thaizh4585Chineseel2682Greekiu7271 Inuktitutar4468Arabicel6468Greekfr3879Frenchfr3131Frenchbn7535Banglaccp4994Chakmaes5723Spanishar5219Arabicchr7036Cherokeees582Spanishfr5499Frenchar2110Arabiceo379 Esperantoar3410Arabicth1637Thaies1950Spanishiu3578 Inuktitutiu2267 Inuktitutru3995Russianen4616Englishar6638Arabicja3105Japaneseja5119Japaneseth2553Thaies2445Spanishja3335Japaneseeo1152 Esperantobn4017Banglaar2278Arabicfr658Frenchfr6165Frenchiu4882 Inuktitutzh4809Chinesefr5476Frenchsr4748Serbianar46Arabicen3435Englishzh4062Chinesechr3011Cherokeesr5194Serbianth318Thaitr7817Turkishzh5507Chineseiu6061 Inuktitutru3167Russianar1958Arabicen8184Englisheo5542 Esperantoar2665Arabicchr2436Cherokeeja7732Japanesefr7646Frenchel1778Greekbn5180Banglabn7248Banglaar1179Arabicccp4178Chakmaen731Englishiu2546 Inuktituttr7262Turkishbn7493Banglasr6940Serbianru1349Russianen866Englishth2441Thaifr1525Frenchru1984Russianel6929Greekru3421Russianar5334Arabicel161Greekes2778Spanishel6800Greekiu826 Inuktitutja3807Japanesesr2429Serbiansr296Serbianzh8048Chinesetr4149Turkishccp7672Chakmaru7614Russianru5327Russianccp1236Chakmath3536Thaieo313 Esperantoccp6792Chakmaja739Japaneseth17Thaisr5544Serbianfr7305Frenchth998Thaizh2542Chineseen6087Englishfr2038Frenchru5526Russiansr1545Serbianru1909Russianfr1524Frenchccp4316Chakmabn1730Banglaar6024Arabicfr2904Frenchbn6497Banglael5178Greekfr6914Frenchiu4720 Inuktituttr4782Turkishsr3951Serbianar4323Arabicfr2826Frenchar2309Arabictr1140Turkishja2228Japanesebn3712Banglasr73Serbiantr4494Turkishbn7176Banglaes5011Spanishru4610Russianfr3791Frenchar7368Arabicen5792Englishiu5652 Inuktitutru5210Russianbn4122Banglachr94Cherokeebn7822Banglachr409Cherokeeel5992Greekth1345Thaith7761Thaith4294Thaieo6480 Esperantozh7607Chinesees3764Spanishru7979Russiansr2219Serbiantr4923Turkishzh5819Chinesefr3952Frenchar3915Arabicar4076Arabicchr7258Cherokeear6475Arabicel3863Greeksr2776Serbianar7236Arabicchr8172Cherokeezh4745Chineseeo2521 Esperantoru5706Russianja2042Japaneseeo1816 Esperantoja6654Japanesees4313Spanishiu6170 Inuktitutfr2574Frenchen3314Englishfr6508Frenches7127Spanishsr6740Serbianbn7325Banglaes17Spanishja579Japaneseja1762Japaneseja1264Japanesezh494Chineseth5396Thaizh6040Chineseeo6241 Esperantoen1838Englishchr2567Cherokeeel7730Greekar1709Arabicfr3276Frenchel1057Greekeo2793 Esperantoar750Arabicru5187Russianja840Japaneseru5259Russianel5210Greekeo4579 Esperantoeo412 Esperantoru806Russianzh8173Chineseen7806Englishchr1254Cherokeear7094Arabicsr2901Serbianfr6728Frenchel5272Greektr3498Turkishzh314Chineseccp4247Chakmatr1979Turkishar1134Arabiczh5462Chineseeo2778 Esperantoel1732Greekru3081Russiansr7617Serbianiu7546 Inuktitutru3200Russianes2365Spanishth283Thaien2309Englishar2780Arabicsr538Serbianchr1045Cherokeezh7238Chinesefr4774Frencheo7326 Esperantoel3586Greekja1698Japanesetr1591Turkishtr7800Turkishbn5205Banglaru711Russianja1805Japanesear1905Arabictr7000Turkishfr4620Frenchel2450Greekel1857Greeken5190Englishiu1295 Inuktitutbn6102Banglafr7468Frenchiu8035 Inuktitutchr3372Cherokeeeo3822 Esperantoeo4216 Esperantoru4828Russianbn1528Banglaes2647Spanishsr3579Serbianen1460Englishen6164Englishth7137Thaizh176Chinesebn5086Banglaar7606Arabicfr6542Frencheo680 Esperantozh1585Chinesechr6572Cherokeesr1094Serbianes2983Spanishsr125Serbianja5322Japaneseth1992Thaifr2319Frenchja6543Japaneseccp5234Chakmaeo217 Esperantotr1904Turkishccp7315Chakmaes1940Spanishth3920Thaizh6578Chineseru801Russianen587Englishru5902Russianes546Spanishzh6167Chinesees2625Spanishchr840Cherokeeeo4047 Esperantofr29Frenchtr2973Turkishbn1439Banglaccp7359Chakmaeo390 Esperantosr3902Serbianel8071Greekzh2089Chineseiu954 Inuktitutes7791Spanishth3491Thaija4609Japanesefr8031Frenchiu8105 Inuktitutja273Japanesees1378Spanishbn4214Banglaja5169Japanesetr5787Turkishccp7499Chakmatr2391Turkishtr4107Turkishth1486Thairu5895Russianru4776Russianbn7551Banglafr1788Frenchru748Russianzh1908Chinesefr7204Frenchja1640Japanesesr460Serbianru8121Russianeo2487 Esperantoja5002Japanesear5198Arabicsr7847Serbianes7449Spanishchr2926Cherokeeeo1283 Esperantoccp5612Chakmaccp1287Chakmaru3349Russianzh3007Chinesetr3496Turkishru5860Russianel5605Greekes7237Spanishes8081Spanisheo3152 Esperantobn4703Banglasr7344Serbianru1311Russianzh195Chinesezh6794Chineseccp7858Chakmath7908Thaith5881Thaibn1700Banglaes3813Spanishru5928Russianru3993Russianchr1593Cherokeeel7322Greekiu2885 Inuktitutsr225Serbianth6352Thaibn102Banglaeo1139 Esperantobn6375Banglafr2984Frenchfr7613Frenchru6798Russianes13Spanishsr6507Serbianzh4683Chinesechr2043Cherokeees6111Spanishsr3290Serbianchr64Cherokeebn4525Banglael3222Greekiu7616 Inuktitutsr1362Serbianbn3427Banglaiu3476 Inuktitutiu489 Inuktitutiu7106 Inuktituten5667Englisheo5812 Esperantosr1044Serbianel5362Greekiu7129 Inuktitutsr1322Serbianar1227Arabicar2210Arabicen5205Englishru7669Russianccp4416Chakmaja5941Japaneseeo7308 Esperantofr4157Frenchiu6830 Inuktitutsr2767Serbianja3167Japanesezh8005Chineseeo4187 Esperantoiu5954 Inuktitutccp1663Chakmaccp6300Chakmaccp2450Chakmaar5794Arabicchr1529Cherokeezh243Chinesear4405Arabicru4765Russianbn2133Banglaiu2349 Inuktitutel689Greekes7131Spanishth6709Thaifr5966Frenches5778Spanishtr7735Turkishfr5646Frenchchr6977Cherokeeth5006Thaiel3110Greekeo5195 Esperantoeo7418 Esperantofr1309Frenchzh1984Chineseel3403Greekeo4811 Esperantoru2501Russianiu5468 Inuktitutsr4658Serbianen4815Englishbn7234Banglaeo1747 Esperantotr285Turkishccp2439Chakmasr1665Serbianccp3480Chakmaja4059Japanesesr518Serbianth3159Thaizh1291Chinesear4300Arabicbn5275Banglaccp8091Chakmasr248Serbianchr2660Cherokeeen2432Englishbn4040Banglaccp1131Chakmaes2786Spanishru7251Russianchr8168Cherokeesr1976Serbiantr4490Turkisheo1349 Esperantoar4526Arabiceo1809 Esperantoeo6712 Esperantosr2486Serbianja7054Japanesees879Spanishsr3310Serbianbn7613Banglaru3130Russianar2557Arabicsr8163Serbianzh7844Chinesebn5616Banglaeo2296 Esperantoccp4838Chakmaen5435Englisheo7353 Esperantoru5241Russianfr1932Frenchth6459Thaiccp7862Chakmatr7123Turkishzh5994Chinesetr7933Turkishes6333Spanishsr6281Serbiansr1296Serbianeo7271 Esperantoja5489Japaneseccp5060Chakmaeo3041 Esperantoja6112Japaneseth7261Thaiccp1687Chakmaccp1541Chakmaar6642Arabicel1167Greekel4916Greekes696Spanishar5558Arabicccp6347Chakmaiu2791 Inuktituteo4499 Esperantozh399Chineseeo7286 Esperantoel6808Greekchr5310Cherokeezh7726Chinesebn6429Banglaeo3162 Esperantoeo7101 Esperantosr2733Serbiansr5873Serbianccp5586Chakmaccp1998Chakmaen6254Englishsr1954Serbianbn1358Banglabn6900Banglath4556Thaiel7481Greekel2250Greekja3261Japanesefr929Frenchfr7139Frenchfr7689Frenchsr1047Serbianen3660Englishbn4102Banglaccp2513Chakmaru7650Russianccp1072Chakmafr75Frenchtr435Turkisheo5251 Esperantoel1557Greekbn3528Banglaccp6459Chakmabn2460Banglafr2546Frenchru2095Russianeo1256 Esperantoja7751Japanesear7685Arabicchr669Cherokeechr5607Cherokeees5250Spanishfr6633Frenchzh351Chineseiu3163 Inuktitutsr2223Serbianeo4773 Esperantosr7260Serbianiu2536 Inuktitutes16Spanishccp2001Chakmaar5257Arabicen3317Englishsr794Serbianel1687Greekes4622Spanishccp4650Chakmachr1225Cherokeeth7145Thaiiu3491 Inuktitutzh3801Chineseccp2164Chakmaeo1715 Esperantosr8038Serbianbn5131Banglachr3495Cherokeear4149Arabicfr3384Frenchja7797Japanesezh2670Chinesechr2540Cherokeeel5209Greekiu2288 Inuktituteo3146 Esperantobn4714Banglaeo4367 Esperantoeo5807 Esperantobn6712Banglafr3774Frenchja2572Japaneseth5947Thaieo4951 Esperantoel836Greeken3730Englishes7848Spanishar371Arabicru3022Russianel4764Greeksr5600Serbianbn3037Banglaccp7855Chakmafr2407Frenches6059Spanishel5046Greekiu7445 Inuktitutru3549Russiantr4610Turkishru6403Russiantr771Turkishtr3772Turkishfr2847Frenchel1537Greekes2604Spanishru641Russianfr6876Frenches1596Spanisheo6358 Esperantoen770Englishfr59Frenchen3616Englishfr477Frenches5995Spanishth290Thaien104Englishfr3503Frenchen2452Englishccp6010Chakmaiu3752 Inuktitutes7105Spanishen484Englishiu1550 Inuktitutchr696Cherokeeccp1018Chakmath7194Thaiar1181Arabicel1361Greekzh4578Chineseccp5734Chakmaar7745Arabiczh1097Chineseru1426Russianzh2438Chineseen1762Englishtr1539Turkisheo5761 Esperantoen4844Englisheo2001 Esperantoiu2732 Inuktitutru1901Russianar605Arabicar7850Arabicchr5686Cherokeeja1037Japaneseja1944Japaneseja2035Japaneseja5704Japaneseel6413Greekiu4338 Inuktitutsr832Serbiantr63Turkishiu39 Inuktitutchr7770Cherokeeen2620Englisheo6942 Esperantoes6100Spanishes816Spanishfr386Frencheo4506 Esperantotr1213Turkishar2427Arabicru2220Russianja3317Japanesefr5466Frenchsr6060Serbianeo5015 Esperantoar1562Arabicsr6232Serbianth1564Thaiar8100Arabicccp4106Chakmatr1879Turkishchr6304Cherokeeth5305Thaifr784Frenchbn2104Banglachr7239Cherokeeen3611Englishen6234Englishiu3127 Inuktitutar1300Arabicth662Thaiiu933 Inuktitutru7145Russianzh7826Chineseel1719Greekja5998Japanesetr8105Turkishth7392Thaifr2553Frenchiu7922 Inuktitutccp2048Chakmaes5231Spanishfr6308Frenchen4359Englishchr6791Cherokeeccp7220Chakmasr2968Serbianar1295Arabicfr6395Frenchtr4558Turkishbn870Banglaen6776Englishar6146Arabicbn5281Banglachr1911Cherokeefr1489Frenchtr468Turkishtr4389Turkishel6220Greekru3083Russiantr4852Turkishel750Greekbn858Banglaes3702Spanishes7452Spanishzh7882Chineseja6488Japaneseeo1506 Esperantoccp2361Chakmaes5418Spanishen114Englishja5813Japanesetr2764Turkishth380Thaija1097Japaneseja3896Japaneseeo2640 Esperantoen14Englishth6970Thaibn6105Banglaar7424Arabicccp2007Chakmaen6184Englishja3288Japanesear4554Arabicth6774Thaiar7131Arabices2854Spanishru7355Russianth7683Thaibn2122Banglaiu420 Inuktituttr3316Turkishtr5738Turkishtr7939Turkishes4834Spanishar6185Arabictr3793Turkishru5118Russianeo3392 Esperantoccp2292Chakmazh7834Chinesear6356Arabicen5362Englishsr4574Serbianiu2761 Inuktitutzh6944Chineseiu7766 Inuktitutsr5555Serbianchr792Cherokeeeo2645 Esperantoen4887Englishsr6090Serbianeo3960 Esperantoja6739Japanesesr5237Serbianru4070Russianar7979Arabicsr554Serbiansr5198Serbianth4188Thaith3817Thairu3115Russianru1754Russianel7702Greektr3865Turkishzh4425Chinesefr5905Frenchbn4971Banglaeo7980 Esperantoeo5353 Esperantoru1556Russianccp8184Chakmaen768Englishiu5448 Inuktitutchr801Cherokeezh2358Chinesechr2902Cherokeebn4704Banglaru4517Russianchr2307Cherokeeth2636Thaiiu1848 Inuktitutel1329Greekja7481Japaneseccp369Chakmabn7606Banglaeo6299 Esperantoes942Spanishfr5377Frenchfr8127Frenchfr394Frenchfr3524Frenchth2303Thaitr5873Turkishzh5457Chinesezh8054Chineseccp4683Chakmaar5082Arabicth1234Thaiccp7156Chakmaes772Spanishfr5665Frenchar631Arabices368Spanishzh4678Chinesechr1175Cherokeetr7308Turkishar5613Arabicja2570Japanesebn1751Banglaes256Spanishfr3665Frenchiu1239 Inuktitutar7315Arabices7136Spanishzh3807Chineseccp5269Chakmachr985Cherokeebn2027Banglaar5538Arabicchr7370Cherokeefr4381Frenchfr6444Frenchru107Russianja7225Japanesees7170Spanishen7647Englishel4767Greekja2443Japaneseiu3619 Inuktituteo2687 Esperantosr1527Serbianru4309Russianru7156Russianccp763Chakmafr3103Frenchsr1474Serbianru5618Russianfr8184Frenchth6208Thaien2813Englishccp5401Chakmaes4088Spanishth1616Thaifr171Frenchfr4263Frenchen7280Englishiu4748 Inuktitutja4165Japaneseth2595Thaija2902Japaneseru2550Russianzh472Chinesees2440Spanishbn4724Banglaiu4438 Inuktitutel7498Greekbn5304Banglaja342Japaneseth2202Thaitr2383Turkishsr1019Serbianja3154Japaneseen1359Englishth6288Thaith8130Thaisr5906Serbianru2500Russiansr362Serbianar3146Arabiceo6535 Esperantoiu330 Inuktituten4151Englishbn5657Banglaen5979Englishiu8145 Inuktitutru4749Russiantr3144Turkishfr6759Frenchccp3385Chakmasr2537Serbianen7786Englishchr5392Cherokeebn7300Banglaccp1069Chakmath6109Thaisr3466Serbianar4935Arabiciu1877 Inuktituteo5100 Esperantotr3734Turkisheo6123 Esperantoen6082Englishth5871Thaifr871Frenchth5949Thaiar7147Arabiciu6081 Inuktitutfr2498Frenchchr1693Cherokeeel3577Greekel3039Greeken6218Englishsr6318Serbianiu5080 Inuktituten1287Englishel7301Greekiu3665 Inuktitutth3396Thaichr7802Cherokeeeo16 Esperantoeo1410 Esperantozh3438Chinesebn4016Banglael7012Greekth5154Thaiel4165Greekar6833Arabicja1133Japanesesr1313Serbianen7706Englishar1582Arabicar5090Arabicfr3614Frenchja3095Japanesechr7322Cherokeeccp935Chakmaja5558Japanesetr6943Turkishfr4303Frenchar2852Arabicfr5039Frenchzh972Chinesezh5402Chinesebn1294Banglatr6441Turkishes612Spanishru1018Russianel6664Greekel6397Greeksr5930Serbianfr4105Frenchzh3072Chinesear372Arabices3031Spanishru2194Russianar767Arabicar1747Arabicccp464Chakmaeo575 Esperantoel1583Greekbn3028Banglachr4278Cherokeeel1810Greekth2752Thaisr559Serbianchr1234Cherokeechr3326Cherokeetr3941Turkisheo3281 Esperantobn5560Banglazh1484Chinesebn694Banglaccp2256Chakmaeo4046 Esperantofr1230Frenchja1397Japaneseel5654Greekbn5344Banglasr926Serbianru3519Russiantr1808Turkishsr6771Serbianbn5873Banglael303Greekiu789 Inuktitutbn263Banglabn1124Banglaar6696Arabicccp6817Chakmaar3014Arabiceo5328 Esperantozh8135Chinesezh7969Chinesesr4247Serbianja4612Japanesesr4333Serbianbn6517Banglachr5133Cherokeeeo6466 Esperantoeo2011 Esperantoja7438Japaneseth4442Thaija3819Japanesear4189Arabices5094Spanisheo7240 Esperantotr3821Turkishth1797Thaichr2526Cherokeefr3015Frenchfr6404Frenchth7139Thaiiu7080 Inuktitutccp7161Chakmaes4909Spanishja2999Japaneseiu5470 Inuktitutccp2213Chakmaccp3234Chakmaeo1825 Esperantobn6505Banglaeo2320 Esperantoeo3456 Esperantobn5308Banglael2683Greekchr2855Cherokeear595Arabicccp5676Chakmaen4534Englishtr5912Turkishsr2941Serbianbn3254Banglaiu1760 Inuktitutiu2206 Inuktitutzh4740Chinesezh7952Chinesesr998Serbianccp4723Chakmaes793Spanishsr5343Serbianru6561Russianzh5832Chinesesr7154Serbianel4889Greektr4664Turkishbn2230Banglath3822Thaizh7206Chineseth3773Thaibn3525Banglafr7831Frenchth4886Thaisr2663Serbiansr5341Serbianth3136Thaizh6935Chinesechr507Cherokeeeo4331 Esperantoel3211Greekel6714Greekel1851Greekru6982Russianes2030Spanishar5042Arabicru2739Russiantr4118Turkishth7005Thaiiu3894 Inuktitutja7691Japaneseth7099Thaies2316Spanishbn1714Banglaar1457Arabicccp1483Chakmaccp1691Chakmaar398Arabicel5353Greekbn4686Banglafr2224Frenchja6956Japaneseth3879Thaith712Thaija6617Japanesetr17Turkishtr1160Turkishchr7097Cherokeebn259Banglafr334Frenchja1246Japanesear7715Arabicja3482Japaneseel6964Greekru1444Russianeo5219 Esperantoth1622Thaien6291Englisheo6153 Esperantotr5303Turkisheo1099 Esperantotr1344Turkishccp6622Chakmatr6085Turkishar4461Arabicbn5845Banglaeo7214 Esperantoen1294Englishth5722Thaien1650Englishchr7858Cherokeeiu4915 Inuktitutsr2472Serbianzh5597Chinesetr2067Turkishen2493Englishen6813Englishccp4434Chakmabn178Banglasr7205Serbianchr6277Cherokeesr6274Serbianzh7511Chineseen3358Englishtr3438Turkishbn8068Banglath8106Thaith5450Thaieo8143 Esperantofr4452Frenchth5562Thaies5149Spanishen5507Englishth1978Thaies1561Spanishru798Russianar3923Arabicja871Japaneseiu1289 Inuktitutes1291Spanishccp6644Chakmachr1639Cherokeees1180Spanishiu6202 Inuktitutbn220Banglael4497Greekchr1156Cherokeeeo2579 Esperantoar5388Arabicja204Japanesechr3916Cherokeesr2081Serbianzh4014Chineseel2998Greekth5488Thaisr7371Serbianfr4911Frenchel6437Greekes2190Spanishiu411 Inuktitutchr1382Cherokeeth5271Thaisr3643Serbianru595Russianeo7732 Esperantoar320Arabicccp2907Chakmaiu387 Inuktituteo4446 Esperantoru4624Russianen6805Englishru1171Russianeo3767 Esperantoja1079Japanesear5986Arabicar5710Arabicccp5772Chakmaiu2248 Inuktituteo4276 Esperantoru1433Russianth1800Thaizh2790Chinesesr3548Serbianfr892Frenchel4117Greekeo6030 Esperantoja5255Japaneseccp7429Chakmath1732Thaiiu994 Inuktitutar4196Arabicth2019Thaiar5618Arabictr2130Turkishel6826Greekel5300Greekeo8134 Esperantozh755Chinesesr2170Serbianth2002Thaitr2039Turkishtr6720Turkishes1613Spanishiu6700 Inuktitutth2634Thaies1858Spanishar3559Arabicru1347Russiantr3298Turkishes7544Spanisheo1614 Esperantosr5032Serbianth2582Thaieo6063 Esperantobn2561Banglael2009Greekru5965Russiantr4892Turkishfr3706Frenchchr5086Cherokeeru729Russianen2104Englishbn1623Banglachr1078Cherokeeth3484Thaieo7704 Esperantofr6462Frenchsr6420Serbianzh470Chineseru2106Russianar1476Arabicbn1557Banglath4407Thaizh452Chineseel4340Greekel5073Greekiu7176 Inuktitutchr1898Cherokeeiu4914 Inuktitutes1415Spanishen5430Englishes713Spanishiu462 Inuktituttr1185Turkishen577Englishtr1656Turkishzh3447Chineseja5395Japanesechr1191Cherokeeiu4828 Inuktitutfr4476Frenchfr439Frenchchr3876Cherokeeeo3922 Esperantoru7344Russianel4793Greekccp2052Chakmasr4934Serbianiu4650 Inuktituttr7473Turkishsr7782Serbianccp3246Chakmaes3076Spanishen8172Englishtr7100Turkishar2999Arabicccp1694Chakmaes2910Spanishar5155Arabicja1789Japanesezh2239Chineseel1259Greekja2009Japaneseja4925Japanesear6724Arabiceo7476 Esperantoth291Thaija655Japaneseru7408Russianeo6387 Esperantoel2074Greekchr6916Cherokeesr1720Serbianchr6217Cherokeees514Spanishja2905Japanesetr6415Turkishzh2908Chineseen3041Englishsr1806Serbianzh6966Chineseen4785Englishzh7390Chineseel3944Greekel4545Greekja6125Japanesezh3109Chinesear91Arabicsr6383Serbianiu1936 Inuktitutbn6427Banglabn7923Banglaccp239Chakmaru2546Russianbn1190Banglabn5353Banglael1695Greekth1561Thaizh2480Chineseth4840Thaija1940Japaneseel6506Greekel4087Greekru1246Russianel2805Greekchr3422Cherokeefr481Frenchru6252Russiansr5554Serbiansr6190Serbianar1554Arabicar6246Arabiciu5187 Inuktitutja3799Japanesechr2888Cherokeear5722Arabicen3781Englisheo7402 Esperantochr4099Cherokeezh6934Chinesefr4662Frenchen5484Englisheo2661 Esperantosr228Serbianfr3781Frencheo2101 Esperantotr2497Turkisheo1460 Esperantosr87Serbianar6577Arabicchr6764Cherokeechr6286Cherokeeiu194 Inuktitutar4943Arabiciu3862 Inuktituten988Englishru6292Russianchr5192Cherokeeru5696Russianth5288Thaiar387Arabicel4773Greekth4943Thaiel498Greeken725Englishen1800Englishfr6748Frenches7511Spanishchr6180Cherokeeja5575Japaneseeo4883 Esperantoccp5776Chakmachr4094Cherokeeiu6737 Inuktitutccp4896Chakmabn6575Banglasr6078Serbianbn7326Banglasr1421Serbianth2211Thaith6311Thaitr6833Turkishel1300Greekru871Russianja3849Japanesebn2041Banglaen1487Englishru1911Russianzh1102Chinesezh7552Chinesefr3127Frenchfr3775Frenchen7234Englishes2669Spanishchr5646Cherokeeja1353Japaneseth2017Thaija1202Japanesetr6020Turkishiu5429 Inuktitutar7468Arabicccp7452Chakmaeo278 Esperantozh2663Chineseru7623Russianccp7869Chakmabn8038Banglazh4066Chinesezh1029Chineseja2871Japanesetr5645Turkishar2425Arabicth5765Thaizh515Chineseru3455Russianth4892Thaifr4724Frenchzh505Chineseth1649Thaieo8132 Esperantoiu8014 Inuktitutja775Japaneseccp4866Chakmaja3909Japaneseru1087Russianbn3672Banglaru2543Russiansr2913Serbianen3484Englishth2319Thaichr365Cherokeeja29Japaneseel5945Greekbn5725Banglaar4217Arabicru4165Russiansr6226Serbianth4862Thaitr2655Turkishtr3795Turkishccp758Chakmaes3725Spanishel5687Greeksr5243Serbianzh3158Chineseiu7494 Inuktitutja7449Japanesesr6788Serbiantr6619Turkishja971Japanesezh7412Chineseth1984Thaiel4185Greekth6671Thaies2558Spanisheo697 Esperantosr4398Serbianes8028Spanishth2430Thairu3789Russiansr5800Serbianes83Spanishiu1461 Inuktituttr6797Turkishiu7273 Inuktituttr4737Turkishja5319Japanesetr6930Turkishiu609 Inuktituttr1742Turkishen3592Englishiu515 Inuktitutth742Thaifr6382Frenchel7213Greekth1213Thaitr2784Turkishtr5924Turkishccp73Chakmasr7091Serbianchr3821Cherokeechr1823Cherokeefr3291Frenchel6196Greekes7881Spanishbn1146Banglath4990Thaiiu6110 Inuktituten1592Englishth3006Thaichr3355Cherokeezh7871Chineseccp2613Chakmabn2289Banglaeo451 Esperantochr5247Cherokeechr4308Cherokeeru5836Russianth1075Thaith1176Thaifr3647Frenchtr4194Turkisheo7444 Esperantoes7190Spanishbn4823Banglachr2944Cherokeeen219Englishja1763Japanesear1074Arabiciu3398 Inuktitutja7034Japaneseth2572Thaichr5493Cherokeeel895Greekja3207Japaneseel4950Greekccp7584Chakmaeo2048 Esperantoen925Englishes5906Spanishzh4248Chineseiu4078 Inuktitutiu4447 Inuktituttr1493Turkishchr5984Cherokeeja1995Japaneseen5321Englishiu2671 Inuktitutru297Russianfr5394Frenchen6623Englisheo272 Esperantoru3600Russianru177Russianja6239Japanesear2937Arabicru1177Russianru7476Russianja7348Japaneseccp7089Chakmael5020Greektr3246Turkishar2555Arabicccp5753Chakmaru3997Russiansr6915Serbianchr2225Cherokeeeo3141 Esperantoen2398Englishfr5202Frenchth788Thaizh4428Chineseel109Greekiu2093 Inuktitutja691Japaneseru8099Russianes608Spanishiu6926 Inuktitutar7117Arabicen4370Englishfr3823Frenchccp4527Chakmaiu117 Inuktituten3480Englishccp3013Chakmaes3182Spanishsr4308Serbianar8089Arabicru7154Russianzh4009Chinesechr6381Cherokeees6705Spanishel2318Greekeo6287 Esperantoth6587Thaibn2943Banglael6157Greekel7197Greekru7272Russiansr2300Serbianth4522Thaitr7728Turkishja5260Japaneseja6812Japaneseen7973Englishth698Thaies4206Spanishja7522Japanesechr6453Cherokeebn5282Banglachr4389Cherokeebn5210Banglaeo4521 Esperantoeo6311 Esperantoth7862Thaitr3812Turkishel1470Greektr5679Turkishchr1573Cherokeees5934Spanishbn7741Banglazh151Chinesear4148Arabicar6677Arabicel5529Greeken5787Englishen7142Englisheo448 Esperantochr2579Cherokeeth6986Thaifr3154Frenchbn4583Banglazh876Chineseel4658Greekja2468Japaneseja2814Japaneseth2456Thaizh4956Chineseeo762 Esperantoeo1081 Esperantoth3111Thaieo848 Esperantoar6491Arabicja8083Japanesear3414Arabices491Spanishes665Spanishsr6091Serbianth2259Thaitr2656Turkisheo3951 Esperantoel1916Greektr6030Turkishru179Russiansr2773Serbianth7426Thaisr1948Serbianth7480Thaija7680Japaneseeo5958 Esperantoeo5168 Esperantoja1884Japanesezh2057Chineseccp5399Chakmazh5142Chinesechr1549Cherokeezh1024Chineseel5919Greekru4089Russianja6653Japanesefr6311Frenchiu297 Inuktitutja3855Japaneseth3628Thaith6368Thaizh7666Chinesesr2042Serbianar7886Arabicja2732Japanesebn7683Banglaru1755Russianel2510Greekth2675Thaifr5491Frenchel528Greekes482Spanishru1653Russianeo1278 Esperantotr6456Turkishbn3547Banglaiu3088 Inuktituttr6114Turkishel2428Greekar2770Arabicel7992Greekeo925 Esperantoes5495Spanishru1826Russianru1726Russianeo1660 Esperantozh7441Chinesear29Arabicja3823Japaneseru3344Russianzh2392Chinesezh3132Chinesefr7151Frenchar3443Arabicen2912Englishru2222Russianth6546Thaiel3639Greekfr8094Frenchzh6920Chinesezh2296Chinesefr3813Frenchchr6473Cherokeear6494Arabiceo6497 Esperantoccp75Chakmael1691Greekel6123Greekar1781Arabicja566Japanesezh4274Chineseiu4564 Inuktitutchr7599Cherokeeen4661Englishtr2663Turkishja5374Japaneseccp7265Chakmaar8061Arabiciu3501 Inuktitutbn5848Banglaeo5299 Esperantofr4668Frenches3581Spanishiu3423 Inuktitutiu5826 Inuktitutbn1125Banglatr1326Turkishfr5450Frenchen4599Englisheo2949 Esperantoeo5142 Esperantoel2120Greekiu7605 Inuktitutfr6583Frenchchr6542Cherokeeiu6568 Inuktituttr5211Turkishiu5331 Inuktitutes1188Spanishfr454Frenchja4501Japanesechr3557Cherokeebn5995Banglael4607Greekeo6818 Esperantoccp4397Chakmaja2415Japanesetr1856Turkishja5845Japaneseen1395Englishchr6882Cherokeeccp6420Chakmatr5080Turkishes7770Spanishar4903Arabicen3784Englishzh139Chinesees2382Spanishtr3486Turkishja251Japaneseru2288Russianth2570Thairu4735Russianar2827Arabicchr2976Cherokeeja2631Japaneseel3629Greekzh3537Chinesechr3728Cherokeeccp1268Chakmafr4905Frenchsr1810Serbianel158Greekiu6821 Inuktitutfr6991Frenchfr6286Frenchbn1389Banglaeo29 Esperantoen6542Englisheo4839 Esperantosr2455Serbianth6808Thaiel5710Greekzh7522Chineseel5230Greekbn4602Banglazh4025Chinesear977Arabicja5128Japanesebn1812Banglatr5242Turkishccp6788Chakmafr783Frenchfr7021Frenchbn1250Banglabn2697Banglatr6262Turkishja6346Japanesear5743Arabicel559Greekeo351 Esperantoja7781Japaneseiu2471 Inuktitutccp3468Chakmath4178Thaiel3116Greekja5016Japanesezh6780Chineseel8141Greekiu3460 Inuktituteo201 Esperantoja323Japaneseth2500Thaifr3603Frenchfr7663Frenchiu1658 Inuktitutccp8002Chakmaes2746Spanishth2032Thaichr3785Cherokeeja7898Japanesesr97Serbiansr8089Serbianth2835Thaies4724Spanishru2414Russianzh6255Chineseru3215Russianfr5813Frenchbn704Banglaeo7005 Esperantoru4964Russianeo5736 Esperantoth4789Thaifr2000Frenchsr7292Serbianth5323Thaiel3635Greekiu5332 Inuktituteo2871 Esperantoes1028Spanishru1998Russianel2177Greekth170Thaitr6748Turkishzh890Chineseen6380Englishja5539Japanesetr5341Turkishar414Arabicchr3288Cherokeeja4769Japaneseru4406Russianchr3852Cherokeebn2249Banglazh5480Chinesechr5414Cherokeeel7622Greekel6938Greektr4795Turkishiu4154 Inuktitutchr5599Cherokeeiu4886 Inuktitutth1068Thaizh2245Chinesesr7079Serbianbn1174Banglaar3444Arabicth6449Thairu5562Russianar7272Arabicja2891Japanesetr6318Turkishar2197Arabicchr6819Cherokeeel7460Greekeo5966 Esperantoel901Greektr6160Turkishar7706Arabictr6965Turkishtr6971Turkishru6004Russianja6229Japaneseeo8083 Esperantoen6554Englishfr1354Frencheo5018 Esperantotr7353Turkishru213Russianel100Greekar244Arabicsr2866Serbianchr1790Cherokeeja4027Japanesesr813Serbianth2415Thaichr3214Cherokeeccp6045Chakmaeo6694 Esperantosr5016Serbianccp6924Chakmachr452Cherokeechr249Cherokeezh2389Chineseth7262Thaija2438Japaneseru2615Russianes4068Spanishsr4863Serbianru7305Russiantr6229Turkishth3917Thaiel3369Greekzh3858Chinesees834Spanishccp69Chakmasr6384Serbianes523Spanishbn4613Banglachr5548Cherokeeen4799Englishja6438Japanesezh771Chinesear6826Arabicbn3935Banglael1511Greekru4074Russiantr6909Turkishsr3282Serbiansr525Serbianth2989Thaibn6723Banglasr1212Serbianzh15Chinesetr666Turkishiu2006 Inuktitutru5089Russianru4920Russiantr1151Turkishbn893Banglasr307Serbianru953Russiansr3178Serbiantr2944Turkishtr6512Turkishel4199Greekccp2978Chakmaar1722Arabicbn7353Banglaeo1722 Esperantoiu3583 Inuktitutru475Russiantr2746Turkishru5278Russianfr4863Frenchth6781Thaien7985Englishtr2269Turkisheo560 Esperantotr7606Turkishiu2083 Inuktitutes858Spanishzh3985Chineseru7246Russianzh4570Chineseel1796Greeken47Englishes3036Spanisheo3651 Esperantoen196Englishiu6001 Inuktituttr798Turkishsr1746Serbianzh5741Chineseja4883Japanesear375Arabicja6006Japanesees3374Spanishfr5317Frencheo6779 Esperantochr5185Cherokeear8059Arabicccp2215Chakmaen5470Englishsr5596Serbianru7244Russiansr4648Serbianar7615Arabicen4629Englishccp4439Chakmafr5880Frenchccp3718Chakmaen918Englishen3153Englisheo2133 Esperantoel5709Greekja5860Japanesetr3066Turkishar7525Arabicen264Englishbn3319Banglaes8162Spanishchr7739Cherokeesr7099Serbianbn594Banglabn4035Banglasr8021Serbianel6717Greekar5886Arabices6181Spanishes4537Spanishbn7671Banglaiu2836 Inuktitutiu5970 Inuktituttr1863Turkishccp6500Chakmath7953Thaichr5504Cherokeeiu7624 Inuktitutar1997Arabicja1266Japanesechr427Cherokeeth5203Thaisr2391Serbianes4149Spanisheo5837 Esperantobn6513Banglasr7014Serbianzh2534Chineseth419Thaichr168Cherokeeen6389Englishth1791Thaichr891Cherokeeel1358Greekiu5541 Inuktitutru3422Russianccp1297Chakmaja2839Japaneseth7302Thaiccp3604Chakmael4604Greekeo3361 Esperantoel1747Greekfr5043Frenchth3936Thaisr6436Serbiansr8007Serbianja1798Japanesefr5029Frenchccp7961Chakmabn3018Banglael1797Greekchr3497Cherokeeen4315Englishchr4489Cherokeeiu5497 Inuktitutsr8170Serbianth1225Thaitr3972Turkishiu2799 Inuktitutar1774Arabiceo7652 Esperantoel5584Greekfr1938Frenchth1632Thaichr4755Cherokeeja315Japaneseen5112Englishth1364Thaichr6101Cherokeezh2827Chineseccp3178Chakmaiu7222 Inuktituttr6120Turkishar3669Arabicbn2559Banglael1346Greekja6340Japanesesr1388Serbianbn3583Banglatr5839Turkishzh737Chinesezh6397Chinesechr5779Cherokeees2595Spanishchr8146Cherokeees7490Spanishar8132Arabicth2674Thaiel6806Greeken2499Englishel1854Greekth3188Thaizh5558Chineseiu5895 Inuktitutth4802Thaith4591Thaichr5616Cherokeesr1302Serbianfr5426Frenchfr4376Frenchfr3431Frenchsr3685Serbianru7921Russianzh3667Chineseel3561Greekes5098Spanishccp745Chakmabn278Banglachr1059Cherokeear6847Arabicru1513Russianar3578Arabicbn3094Banglael2762Greekiu1529 Inuktitutbn4904Banglatr4527Turkishru4360Russianzh7965Chinesesr1851Serbianth3929Thaichr280Cherokeeccp4564Chakmaja4086Japanesesr6986Serbiansr3678Serbianzh4135Chineseccp5367Chakmaen3139Englishccp5406Chakmachr4409Cherokeefr5960Frenchar7965Arabicchr7480Cherokeebn3802Banglaes5532Spanishes7961Spanishsr3576Serbianeo7154 Esperantofr7687Frenchccp6655Chakmatr856Turkishth4645Thaitr1992Turkishchr2314Cherokeeccp1555Chakmaccp4643Chakmatr1917Turkishtr5868Turkishtr7624Turkishsr7681Serbianzh2113Chinesezh1151Chineseeo4352 Esperantoeo6049 Esperantoja1551Japaneseth7724Thaitr7072Turkishchr1338Cherokeechr7852Cherokeeel2115Greekeo280 Esperantoar3453Arabictr2700Turkishfr949Frenchchr3523Cherokeeiu2859 Inuktitutiu4678 Inuktituten8130Englishtr272Turkishen7705Englishru3901Russiantr1364Turkishel3031Greeksr5119Serbianar416Arabicru185Russianes6684Spanishru683Russianar1715Arabiceo2262 Esperantoth2320Thaifr6337Frenchbn4163Banglaccp7585Chakmaru2383Russianeo2617 Esperantozh7448Chinesezh6691Chineseen4206Englishbn1592Banglaes377Spanishru1333Russiansr253Serbianiu2502 Inuktitutsr6372Serbianzh88Chinesezh173Chineseeo347 Esperantoth6044Thaiar1239Arabiceo3177 Esperantotr7651Turkishccp7707Chakmabn2141Banglaen5754Englisheo8046 Esperantoel5443Greektr3548Turkishzh1201Chinesebn4964Banglaja7134Japaneseel2352Greekel7727Greekja206Japanesesr5354Serbianzh1516Chinesesr2238Serbianja1433Japaneseeo2642 Esperantozh5860Chineseiu6382 Inuktitutes6406Spanishiu1187 Inuktitutiu1435 Inuktitutfr4607Frenchru754Russiansr2809Serbianzh1186Chineseen4688Englishar142Arabices6400Spanishiu9 Inuktitutbn2164Banglasr1267Serbianzh3790Chinesesr1939Serbianel4823Greekru6501Russianeo3055 Esperantofr4580Frenchar1611Arabicbn1838Banglaja6343Japanesetr3930Turkishtr636Turkishar6360Arabicccp6178Chakmasr3051Serbianar102Arabicchr3407Cherokeeen1126Englishen4409Englishchr3211Cherokeesr6768Serbianiu3352 Inuktitutja4051Japanesefr2933Frencheo3155 Esperantotr3674Turkishiu641 Inuktituttr6939Turkishja2887Japaneseja3515Japaneseen5938Englishccp6009Chakmabn7419Banglazh140Chineseel8076Greeken4961Englishen7484Englishbn7836Banglaccp3676Chakmaccp5119Chakmaja7714Japanesetr6733Turkishel1966Greekth6265Thaitr2904Turkishzh5495Chineseja5083Japaneseen7830Englishsr2957Serbiansr6247Serbianfr4112Frenchar325Arabicbn722Banglasr85Serbianes4670Spanishen7295Englishtr3558Turkishbn4737Banglaar7664Arabictr5137Turkishar616Arabicfr3414Frenchth2841Thaibn1752Banglaru6178Russianru6452Russianchr2146Cherokeefr6885Frenchru7147Russianfr3885Frenchsr7553Serbianbn941Banglatr1786Turkishar2870Arabicar1310Arabicth665Thaith4254Thaizh1252Chineseccp2300Chakmaru5588Russianbn1523Banglasr3998Serbianel3188Greekccp3045Chakmasr5383Serbianes7386Spanishsr2382Serbianes1839Spanishth460Thaichr3143Cherokeeiu1259 Inuktitutru6463Russianchr2211Cherokeeel1379Greekes3571Spanishru1460Russianzh111Chineseel1964Greekccp4313Chakmafr3036Frenchen6582Englishtr1906Turkisheo4409 Esperantoes5775Spanishja7992Japanesesr2412Serbianbn7266Banglaru5705Russianen3481Englishen1571Englishru552Russianja7493Japaneseccp1449Chakmafr6194Frencheo7338 Esperantoar6223Arabicchr1873Cherokeebn1187Banglachr5520Cherokeechr827Cherokeesr4913Serbianth1539Thaichr367Cherokeeen1081Englishfr3928Frencheo303 Esperantosr2974Serbianbn4248Banglaes524Spanishth7971Thaizh43Chinesebn855Banglael8106Greekes5660Spanisheo5718 Esperantosr6117Serbianbn5994Banglasr889Serbianes1105Spanishiu7761 Inuktitutfr7444Frenches2180Spanishth5101Thairu3807Russianeo6832 Esperantoru7079Russiantr1235Turkishel5956Greekja5284Japanesezh6727Chineseel4697Greekeo1918 Esperantoar6125Arabices2326Spanishel1965Greekchr1690Cherokeear6842Arabiceo4071 Esperantoeo6045 Esperantoru6037Russianar7282Arabicbn1924Banglaeo6949 Esperantoar4645Arabicsr730Serbianth4684Thaisr338Serbiantr4302Turkishth4699Thaichr888Cherokeeeo8111 Esperantoru3727Russianth1995Thaith7532Thaiccp1269Chakmachr7075Cherokeechr5503Cherokeetr5192Turkishru3833Russianbn3945Banglabn1667Banglaccp44Chakmaen5008Englishes3407Spanishfr3008Frenchfr4194Frenchfr6584Frenchen4295Englishiu5891 Inuktitutbn5349Banglaiu7483 Inuktitutru6343Russianth6380Thaitr6843Turkishzh4497Chineseeo3092 Esperantoja4508Japaneseel5915Greeken2911Englishccp559Chakmaru5180Russianchr2914Cherokeeja574Japaneseja374Japanesebn6869Banglath781Thaichr3908Cherokeear2404Arabiceo2788 Esperantotr3220Turkishccp2819Chakmaes3045Spanishchr7095Cherokeeru1209Russiantr4780Turkishchr598Cherokeeen7412Englisheo3470 Esperantozh5809Chinesees3663Spanishbn4484Banglaeo7343 Esperantoar4613Arabiczh1312Chineseeo5835 Esperantoja1230Japanesees6114Spanishchr733Cherokeeccp6133Chakmael1709Greekar74Arabicen6918Englisheo5861 Esperantochr6347Cherokeeel7091Greekel4798Greeken7468Englishth5671Thaith6923Thairu3662Russianfr5539Frenchiu3513 Inuktitutiu5426 Inuktituttr2348Turkishzh3274Chineseiu5589 Inuktituttr1911Turkishar6727Arabicccp6849Chakmafr1268Frenchar6534Arabices6617Spanishiu4814 Inuktitutar4577Arabicru1724Russianchr3343Cherokeezh6301Chineseth4093Thaizh1242Chinesechr7954Cherokeeel6493Greekzh2459Chineseeo2148 Esperantobn3741Banglael6620Greeken1501Englisheo7270 Esperantoeo1841 Esperantoccp2323Chakmaja1820Japaneseja3302Japanesesr7396Serbianel2265Greekzh3320Chinesesr1080Serbianel2201Greekru2374Russianeo4986 Esperantoen2246Englishja612Japaneseja4731Japanesetr6588Turkishiu7005 Inuktitutth1281Thaiccp3187Chakmaru1074Russianel5974Greeken1794Englishiu4312 Inuktituten7237Englishth6630Thaiiu8155 Inuktituteo2540 Esperantoar1380Arabicsr7259Serbianth7012Thaija4296Japanesees973Spanishja4194Japaneseiu568 Inuktitutiu5301 Inuktitutbn5277Banglael4149Greeken7772Englishfr5706Frenchru2571Russianeo6926 Esperantoru1277Russianbn4527Banglaccp230Chakmatr8052Turkishchr2324Cherokeeth7112Thairu7599Russianel5929Greekel1883Greekeo2537 Esperantoar611Arabicccp8095Chakmabn4595Banglasr2999Serbianbn5126Banglaiu456 Inuktitutar2901Arabicru1989Russianeo1439 Esperantoru7181Russianel1314Greekchr8086Cherokeees5754Spanishsr8049Serbianru4214Russianeo2849 Esperantoen697Englishen6979Englishzh2536Chinesear6772Arabicbn1446Banglafr3030Frenchfr3443Frencheo4585 Esperantoja4650Japanesesr7552Serbianzh2145Chineseiu2283 Inuktitutth6300Thaiar7414Arabicchr6638Cherokeechr5421Cherokeear5472Arabicccp4401Chakmasr5234Serbianbn4272Banglafr3176Frenchtr195Turkishth2028Thaiar3176Arabicar380Arabicchr861Cherokeeel3859Greeken3727Englisheo7403 Esperantotr4791Turkishtr583Turkishbn819Banglafr3053Frenches1672Spanishes413Spanishtr3155Turkishccp1947Chakmaen5116Englishel3022Greekccp1731Chakmael251Greekth6348Thaija577Japaneseen7565Englishiu7905 Inuktitutar6632Arabiczh1092Chineseen698Englishtr6925Turkishth1900Thaibn506Banglaeo2552 Esperantofr4228Frenchja4801Japanesetr6331Turkishes6044Spanishru7106Russianru2226Russianeo730 Esperantoth5212Thaiccp1239Chakmatr488Turkishchr3828Cherokeear5222Arabicar5987Arabicru4349Russianru1430Russianchr5695Cherokeeiu6011 Inuktitutar7644Arabicth1958Thaiccp4152Chakmaar4393Arabicth4680Thaibn4749Banglaen1249Englishen2379Englishccp5501Chakmael5617Greeksr751Serbianes3406Spanishja6755Japanesechr4718Cherokeesr328Serbianeo1269 Esperantoeo6333 Esperantoes7198Spanishchr5662Cherokeetr979Turkishiu5030 Inuktitutja3668Japanesesr4880Serbianzh4514Chinesebn5017Banglaeo4373 Esperantofr5602Frenchel2374Greekiu5829 Inuktitutja372Japanesesr7831Serbianbn3801Banglaru4049Russiantr4729Turkishsr720Serbianeo3291 Esperantoiu3038 Inuktituteo7262 Esperantoru1252Russianchr964Cherokeeja2277Japanesesr4487Serbiansr7228Serbianchr6803Cherokeefr8118Frenchiu7964 Inuktitutsr7666Serbianth6958Thaitr1708Turkishtr4867Turkishzh2882Chineseen4882Englishccp1151Chakmaiu6279 Inuktituteo6360 Esperantobn6221Banglaes2096Spanishtr3668Turkishbn1408Banglael4770Greekes1385Spanishiu6208 Inuktituttr1895Turkishth7032Thaien7239Englishth5607Thaifr2061Frenchchr5698Cherokeeja4283Japaneseth5600Thaien6398Englishzh5612Chinesebn5891Banglaes1878Spanishiu4093 Inuktitutfr569Frencheo2489 Esperantobn3378Banglath3676Thairu3129Russianru6239Russianiu7362 Inuktitutel1085Greekes7931Spanishbn5067Banglaeo31 Esperantoja5308Japaneseccp5706Chakmael247Greekth1712Thaien3216Englishzh4862Chineseel7024Greekeo7191 Esperantoru4604Russianfr4691Frenchbn1039Banglaeo6006 Esperantoeo2561 Esperantoth5660Thaiccp4523Chakmaccp3483Chakmael6833Greeksr836Serbianbn4798Banglasr3348Serbianth5064Thaifr2587Frenchtr569Turkishes3147Spanishiu5649 Inuktituten416Englishsr4298Serbianar705Arabicbn7891Banglaes1603Spanishsr4830Serbianfr7937Frenchsr5133Serbianeo2442 Esperantoru30Russiansr947Serbiantr7635Turkishtr2351Turkishsr5902Serbianen3392Englishtr6806Turkishccp1231Chakmath817Thaija4175Japanesees3286Spanishes6552Spanishfr5339Frenchfr4140Frenchth6598Thaitr8065Turkishccp2462Chakmaeo4008 Esperantoen3672Englishen7479Englishes22Spanishes4343Spanishar2391Arabicccp1526Chakmaen703Englishru6297Russiansr2677Serbiansr3362Serbiansr6901Serbianth2123Thaiar6665Arabicbn2208Banglaccp7863Chakmaeo8112 Esperantoes1534Spanishzh1398Chineseth4875Thaisr5089Serbianar2256Arabicbn6184Banglaes4345Spanishiu2662 Inuktitutfr431Frenchchr3287Cherokeear4601Arabicru3307Russianar7921Arabicbn6960Banglael5629Greekfr3812Frencheo5988 Esperantoja6238Japanesefr2454Frenchzh645Chinesechr4696Cherokeeccp4743Chakmazh7879Chinesezh8138Chinesebn2311Banglafr6629Frencheo3838 Esperantoru3248Russianfr7835Frenchccp1010Chakmaru7179Russianth5590Thaibn5803Banglaru1069Russianbn5110Banglaja6146Japanesetr5338Turkishfr1188Frenchsr7845Serbianeo1802 Esperantozh2720Chinesechr3444Cherokeeja3393Japanesesr3147Serbianiu7535 Inuktitutth5618Thaija6301Japaneseeo2292 Esperantoja30Japanesesr2080Serbianel623Greekzh5984Chineseeo3710 Esperantoes5841Spanishes3579Spanishfr4700Frenchja8081Japaneseel4404Greekfr1674Frenchzh2103Chinesebn291Banglabn6224Banglafr7642Frenchja2325Japanesechr1428Cherokeesr4964Serbianen654Englishiu5072 Inuktitutbn3619Banglaja7140Japanesetr5439Turkishar1180Arabicchr8016Cherokeetr4668Turkishsr278Serbianbn3283Banglaccp2037Chakmaccp3473Chakmaar7300Arabicth783Thaija7062Japaneseja781Japaneseru3973Russianes5139Spanishen2179Englishes7697Spanishru2498Russianes5574Spanishth7556Thairu2614Russianccp1606Chakmaja7911Japanesear4669Arabiceo2118 Esperantoccp2089Chakmafr3939Frenchja2612Japaneseen3617Englishccp7726Chakmaes7747Spanishes2015Spanisheo8181 Esperantozh4142Chinesear684Arabiciu1392 Inuktitutiu4273 Inuktituten987Englishes1106Spanishzh5498Chinesear6776Arabicja1886Japanesesr8095Serbianes7094Spanishsr7404Serbianzh5064Chinesechr898Cherokeees301Spanishzh7276Chineseen1674Englishel2233Greekchr774Cherokeeru7996Russianzh1762Chineseru3630Russianchr904Cherokeesr4915Serbianfr3878Frenchth6361Thaith4379Thaien6111Englishtr7598Turkishar137Arabicfr4445Frenchzh2056Chineseeo5984 Esperantosr1516Serbianru4408Russianar514Arabicen506Englishen4744Englishar2599Arabiceo2236 Esperantochr4524Cherokeesr4794Serbiantr5529Turkishzh4610Chineseiu983 Inuktitutfr5523Frenchja2808Japanesees1790Spanishchr3835Cherokeees6915Spanishth6704Thaith2215Thaitr7284Turkishes7664Spanishtr7712Turkishbn1978Banglabn317Banglazh8098Chinesebn5472Banglaccp7776Chakmafr6303Frenchar187Arabiciu5712 Inuktitutth6745Thaies3418Spanishel7766Greekes2879Spanishfr2085Frenchchr568Cherokeeel7744Greeksr1578Serbianen3765Englishsr2891Serbianar7085Arabicar2227Arabicchr1995Cherokeeeo5193 Esperantoiu2919 Inuktitutfr6072Frenchen5664Englishes3107Spanishth7854Thaibn2484Banglaccp3203Chakmafr7662Frenchbn589Banglael932Greekeo7901 Esperantosr286Serbiansr2129Serbianbn8132Banglath5284Thaien4664Englishiu2835 Inuktituttr7741Turkishzh4598Chinesees2235Spanishel7854Greekru4435Russiantr1172Turkishccp6352Chakmaiu7319 Inuktitutchr2663Cherokeetr4912Turkishtr6948Turkishsr1085Serbianccp2412Chakmabn5666Banglael8178Greekzh374Chinesebn4635Banglaeo3891 Esperantoar6765Arabicja2912Japaneseiu4479 Inuktitutel5603Greekfr4315Frenchsr7897Serbianen5786Englishes3643Spanishth1373Thaibn7707Banglath5397Thaiiu6344 Inuktitutel1968Greekel8068Greekzh405Chinesear5207Arabices7787Spanishel296Greekes6288Spanisheo5677 Esperantoeo2116 Esperantofr2598Frenchccp4939Chakmaar2363Arabicja6158Japanesear716Arabicccp5196Chakmachr2790Cherokeetr7528Turkishja4323Japanesechr4081Cherokeeth5746Thaitr1502Turkishzh4328Chineseth256Thaiel4790Greekiu1947 Inuktitutru2524Russianbn5482Banglaccp5683Chakmaja3328Japaneseru4918Russianchr5525Cherokeeeo3646 Esperantobn2850Banglael1903Greekar2896Arabicccp7853Chakmasr5039Serbianbn3668Banglaccp1105Chakmaiu2418 Inuktitutth7538Thaieo2035 Esperantozh2323Chinesefr7634Frenchtr7549Turkishfr2478Frenchchr32Cherokeeccp3679Chakmafr6651Frencheo482 Esperantoar817Arabicen7759Englisheo7134 Esperantotr201Turkishtr7957Turkishth6721Thaitr2408Turkishchr1606Cherokeeen4502Englishen7773Englishbn265Banglaru2399Russianen7687Englishbn3753Banglaccp5087Chakmaen2300Englishth427Thaith3635Thaiccp651Chakmasr5477Serbianeo1536 Esperantoes1058Spanishsr7688Serbianiu5538 Inuktitutth5588Thaifr4179Frenchen1394Englishes1819Spanishchr6283Cherokeeeo5558 Esperantoccp995Chakmaru709Russianru6921Russianja7946Japanesezh1235Chinesechr844Cherokeefr7856Frenchsr1801Serbiantr4473Turkishes138Spanishth7351Thaiar2845Arabicccp7793Chakmath3985Thaitr2159Turkishbn241Banglafr2013Frenchiu6141 Inuktitutth1349Thaith2672Thaien5163Englishel6836Greekiu2120 Inuktitutsr7329Serbianth4531Thaibn4112Banglaar5872Arabicth2547Thaifr1145Frenchja1221Japanesear2423Arabicar4052Arabicfr5601Frenchtr390Turkishfr3695Frenchth4985Thaizh2470Chineseeo1709 Esperantoeo7760 Esperantoar178Arabicen4562Englishel1375Greekccp2969Chakmafr980Frenchsr5127Serbianru673Russianja4109Japaneseeo942 Esperantochr651Cherokeeeo7564 Esperantoru5174Russianccp7565Chakmabn6664Banglael7979Greekeo7594 Esperantoru6842Russianeo2431 Esperantoiu7155 Inuktitutel7391Greekes4986Spanishfr7671Frencheo182 Esperantotr31Turkishen627Englishel5329Greekchr7456Cherokeeru4585Russianeo7931 Esperantoiu25 Inuktitutsr380Serbianbn3879Banglachr3797Cherokeeen2027Englishes1022Spanishfr340Frenchth5681Thaiccp3167Chakmaiu4788 Inuktitutja5643Japaneseru4927Russianiu5097 Inuktituten3353Englishiu397 Inuktitutru7278Russianel4533Greekeo543 Esperantobn6412Banglaiu1680 Inuktitutzh2729Chinesebn368Banglafr4178Frenchth5408Thaija4871Japanesechr8042Cherokeechr6496Cherokeesr7983Serbianar7047Arabicja4472Japanesees2489Spanishzh6399Chineseen8183Englishja745Japaneseccp2116Chakmazh6201Chinesees1103Spanishja449Japanesesr6010Serbianen5657Englishbn3356Banglaar3942Arabicru5063Russiantr7398Turkishzh46Chinesezh7459Chinesees3738Spanisheo3273 Esperantosr1418Serbianfr0Frenchiu3650 Inuktitutel3568Greeksr4581Serbianfr5515Frenchtr5461Turkishsr2459Serbianiu1520 Inuktitutja7238Japanesetr5406Turkishth8142Thairu5713Russianchr957Cherokeechr390Cherokeechr282Cherokeeja5712Japanesear1049Arabicchr741Cherokeefr2042Frenchsr1943Serbianiu6847 Inuktitutel1280Greeksr3674Serbianth6769Thaitr3269Turkishzh5546Chinesebn7936Banglaja7212Japanesear307Arabicsr6086Serbianeo5545 Esperantoru7290Russianen707Englishth5479Thaiar4518Arabicfr5345Frenchar429Arabicar1545Arabicel7590Greekeo8079 Esperantoeo5365 Esperantoth6294Thaiar2275Arabices1608Spanishsr4881Serbianfr7432Frenchccp7500Chakmaiu3903 Inuktitutar2400Arabicbn3709Banglaeo45 Esperantoen4278Englishja3614Japanesesr4237Serbiantr4360Turkishfr3142Frenchchr7880Cherokeefr4756Frenchen7323Englishbn1878Banglasr1536Serbianru4314Russianbn5765Banglaccp3215Chakmaccp5984Chakmaru1495Russianzh4650Chinesefr5774Frenchtr5782Turkishes5809Spanishth6626Thairu3609Russianth348Thaiccp5311Chakmaccp4127Chakmabn2595Banglaiu2355 Inuktituttr4970Turkishja2676Japaneseru6044Russiansr7628Serbianbn6230Banglachr7376Cherokeeja6627Japanesetr2148Turkishar6843Arabicja6359Japanesear588Arabicar5053Arabicel620Greekzh3419Chinesear6134Arabiceo3546 Esperantozh4207Chineseeo565 Esperantotr5070Turkishzh3238Chinesetr8173Turkishzh1417Chineseen2686Englishiu5107 Inuktitutzh6908Chinesebn6373Banglazh7300Chinesechr492Cherokeeccp6457Chakmabn3872Banglaar4843Arabicja1949Japanesees1006Spanishtr1698Turkishes3536Spanishfr765Frenchth6446Thaieo1765 Esperantotr5471Turkishth1442Thaija1675Japaneseja6573Japaneseeo7862 Esperantoar2238Arabicel812Greekeo3896 Esperantoes3489Spanishfr1997Frenchiu6703 Inuktitutth7172Thaibn93Banglaru5025Russiansr785Serbianth350Thaizh7355Chineseiu6317 Inuktituttr2582Turkishccp3599Chakmael916Greeken1117Englishccp5353Chakmabn6787Banglaeo2653 Esperantoar4731Arabicbn4321Banglachr6159Cherokeear5961Arabicel1260Greekiu3548 Inuktitutes3189Spanishchr3202Cherokeeja24Japanesezh1051Chineseiu2210 Inuktitutja873Japaneseeo311 Esperantoeo2287 Esperantoccp1488Chakmasr3528Serbianbn567Banglaccp2835Chakmaja6618Japaneseru3619Russianzh5029Chinesear5442Arabicar4794Arabicccp7663Chakmath3922Thaizh6249Chinesebn716Banglael2744Greekccp4811Chakmaen1761Englishbn5726Banglatr1377Turkishccp4271Chakmatr6461Turkishar2660Arabicbn1332Banglaar3795Arabiciu5964 Inuktitutbn2121Banglafr5121Frenchbn1888Banglaeo6858 Esperantoiu1377 Inuktitutja6683Japanesesr784Serbianchr2236Cherokeetr7983Turkishzh4267Chinesear1904Arabictr5651Turkishtr960Turkishes132Spanishchr1048Cherokeechr6314Cherokeeeo3734 Esperantofr4341Frenchen4454Englishes7970Spanishtr5535Turkishiu4044 Inuktitutfr6737Frenchru6893Russianccp3371Chakmaiu4176 Inuktitutccp6220Chakmasr732Serbianzh7737Chinesear4435Arabicchr7210Cherokeees2566Spanishfr384Frenchth6838Thaitr2258Turkisheo3094 Esperantochr617Cherokeebn271Banglaccp7550Chakmaen934Englishfr7553Frencheo757 Esperantosr3926Serbiansr6831Serbianes1371Spanishja1507Japanesetr5584Turkishes4281Spanishen2409Englishar3219Arabices7867Spanisheo6869 Esperantofr2801Frenchsr758Serbianzh5764Chinesebn4687Banglafr2317Frenches6419Spanishbn5870Banglaiu6914 Inuktitutel8099Greekiu7612 Inuktituttr4641Turkishja3588Japaneseeo4581 Esperantochr7798Cherokeeen3147Englishja649Japaneseja4681Japaneseru40Russianja1021Japanesesr5998Serbianchr2409Cherokeeen2823Englishzh6144Chineseja7281Japanesezh271Chinesees1372Spanishbn6131Banglaeo5296 Esperantoja4552Japaneseccp4517Chakmaru7514Russianeo2828 Esperantosr6397Serbianel4462Greekru2929Russianru1784Russianar1945Arabicbn629Banglabn1944Banglaen26Englishru4331Russiansr2449Serbianth1879Thaifr410Frenchtr6995Turkishar5002Arabicfr3439Frenchth5111Thaizh568Chineseeo7703 Esperantoar2940Arabiceo6537 Esperantoiu2396 Inuktitutth499Thaibn3585Banglabn5444Banglaes754Spanishccp6024Chakmaru32Russianel2105Greekfr6830Frenchzh1791Chinesees8119Spanishja2241Japanesesr5434Serbianccp6542Chakmath1495Thaiar2329Arabicccp4469Chakmachr2251Cherokeezh8060Chineseja2214Japaneseen5118Englishchr6091Cherokeefr2419Frenchru991Russianel5445Greekel7671Greekeo6843 Esperantoeo1881 Esperantoccp6688Chakmaeo6695 Esperantoes8009Spanishsr4200Serbianel4967Greekzh479Chineseth7227Thaien6641Englishfr400Frenchel1548Greekeo6910 Esperantoccp213Chakmaes2661Spanishiu6561 Inuktitutccp3423Chakmaja5026Japanesees5070Spanishsr2498Serbianiu3224 Inuktitutiu5091 Inuktitutsr1518Serbianel5777Greekel5594Greekth7666Thaieo709 Esperantoar7423Arabicsr5738Serbianchr1370Cherokeezh3882Chinesesr7704Serbianccp5419Chakmaru4508Russianzh3644Chineseeo7562 Esperantofr4215Frenchel7532Greektr1137Turkishiu3223 Inuktitutfr7303Frenchsr374Serbiansr3919Serbiansr943Serbianchr1633Cherokeeel1176Greeken872Englishel6643Greekel7480Greeken7947Englishsr5548Serbianbn1861Banglazh4949Chineseen340Englisheo5069 Esperantofr6339Frenchchr1420Cherokeeen5179Englishru5290Russiantr1378Turkishtr4616Turkishzh1959Chinesesr5816Serbiantr3660Turkishel5958Greekth3287Thaichr5489Cherokeeccp3199Chakmachr5589Cherokeeccp1477Chakmaen4157Englishfr1909Frenchiu36 Inuktitutsr3300Serbianccp162Chakmaru4063Russianja3297Japaneseel5496Greekes3711Spanishchr503Cherokeechr4991Cherokeeiu984 Inuktitutja41Japaneseiu6518 Inuktitutccp4980Chakmaar8028Arabices3826Spanishes6229Spanishzh7860Chinesezh4324Chinesezh4457Chinesefr6244Frenchtr1458Turkisheo3317 Esperantoel1832Greeksr6255Serbianth5320Thairu3306Russianchr484Cherokeetr5693Turkishchr2234Cherokeechr5092Cherokeeen3375Englishes6735Spanishru2158Russianar6499Arabicru3395Russianel3038Greekfr3488Frenchccp7207Chakmatr4645Turkishen1199Englishar124Arabicen1604Englishen8039Englishfr2785Frenchja6868Japanesezh2713Chineseiu6732 Inuktitutchr3884Cherokeeel4585Greekes5963Spanishja2646Japaneseeo7607 Esperantosr4227Serbianfr2049Frenchja6062Japaneseja695Japaneseru3746Russianth4082Thaiccp5083Chakmaja3277Japaneseiu139 Inuktitutchr2555Cherokeeeo5101 Esperantosr2213Serbianfr2962Frenchbn2242Banglaen277Englishfr2036Frencheo4533 Esperantoth7857Thaith7976Thaifr790Frenchen5803Englishtr5375Turkishtr2610Turkishru715Russianeo4159 Esperantoel6822Greekeo6002 Esperantofr744Frenchbn588Banglaja6722Japaneseen6533Englishja332Japanesebn4460Banglabn4880Banglachr5612Cherokeefr6372Frenchccp1660Chakmaar410Arabicchr4849Cherokeechr7823Cherokeeel7175Greekiu3987 Inuktituteo3026 Esperantoja2014Japaneseen3130Englishen611Englishes2239Spanishar4417Arabicccp6563Chakmafr5399Frencheo1729 Esperantoth5040Thaiiu1241 Inuktitutsr969Serbiansr7039Serbianccp5941Chakmath4738Thaija3677Japaneseja5843Japaneseeo7692 Esperantoar4493Arabiceo1062 Esperantoru1654Russianccp4221Chakmaen7740Englishbn4328Banglaccp2205Chakmaes6162Spanishru2360Russianel4131Greekru2879Russianes5971Spanishchr7631Cherokeechr8185Cherokeeen3421Englishiu4711 Inuktitutes3221Spanishtr1227Turkishccp7615Chakmaja7811Japanesezh673Chinesechr7271Cherokeeen1913Englishar957Arabiczh5161Chinesefr3003Frenchzh1382Chineseen3829Englishzh4597Chineseccp4636Chakmaccp1070Chakmatr8086Turkishzh157Chinesees6689Spanishccp5630Chakmabn5255Banglaru31Russianel4856Greekar1605Arabicchr4881Cherokeeja5504Japanesesr218Serbianeo2412 Esperantoar3470Arabicsr5093Serbianchr5278Cherokeeccp1327Chakmatr7442Turkishru1086Russianru7752Russianchr3241Cherokeeen6304Englishja666Japaneseen2709Englishja4046Japaneseru7047Russianchr5174Cherokeees5283Spanishja2896Japanesees2497Spanishja7555Japaneseel7400Greekbn5906Banglabn2364Banglaeo5968 Esperantotr6049Turkishzh4501Chinesetr1839Turkishiu3797 Inuktitutsr1662Serbianja4490Japanesechr4375Cherokeezh2375Chineseen178Englishsr1356Serbianes3915Spanishel2355Greekes4612Spanisheo3067 Esperantoen1798Englishen6581Englishru5402Russianja7476Japanesefr3421Frenchiu5099 Inuktitutccp1149Chakmaccp3731Chakmaen5320Englishccp5377Chakmaeo5013 Esperantoeo580 Esperantochr1874Cherokeefr3271Frenchfr4563Frenchth123Thaieo3920 Esperantoel4162Greekeo2817 Esperantoeo6713 Esperantoiu2869 Inuktitutsr4665Serbianccp3624Chakmaen7607Englishja2198Japaneseth229Thaiiu3996 Inuktitutbn7348Banglaar3222Arabicen7776Englisheo3068 Esperantoru2314Russianar7805Arabictr6786Turkishja2838Japanesear3361Arabicsr4055Serbianen4298Englishsr1233Serbianbn1162Banglaru1261Russianar6957Arabicel1822Greekiu3302 Inuktitutja6816Japanesear978Arabiceo2386 Esperantoen4759Englishccp4921Chakmafr6299Frenchsr6918Serbianeo6136 Esperantoth5218Thaies6Spanishja166Japaneseth3274Thaisr4860Serbianbn863Banglaes1271Spanishfr6648Frenchtr1289Turkishccp2735Chakmasr4884Serbianchr6878Cherokeechr3240Cherokeefr7837Frenchsr335Serbianiu4031 Inuktitutja883Japanesezh8091Chinesees2529Spanishccp5976Chakmatr1394Turkishtr1580Turkishtr4874Turkishru2293Russianth7108Thaiiu846 Inuktitutccp4895Chakmaen826Englishbn2911Banglatr7305Turkishru5640Russiansr7535Serbianccp7Chakmazh6124Chineseccp2045Chakmafr1486Frenchzh5811Chinesees579Spanishbn5001Banglath8112Thaies4169Spanishchr341Cherokeees7099Spanishbn4053Banglaen4622Englishth5433Thaiiu6989 Inuktitutiu3877 Inuktitutel4237Greeksr7286Serbianiu2779 Inuktitutchr7053Cherokeechr6476Cherokeeen1257Englishsr3613Serbianccp3251Chakmael1644Greekes4056Spanishzh3652Chinesechr8156Cherokeeiu6644 Inuktituten5310Englisheo3270 Esperantoth2881Thaien890Englishen7048Englishar119Arabiczh6572Chinesefr5343Frenchar3078Arabictr4133Turkisheo1067 Esperantotr7711Turkishru1642Russianes7227Spanishsr4276Serbiantr707Turkishtr2718Turkishar3869Arabicchr6195Cherokeebn1561Banglaes3128Spanishen4840Englishchr628Cherokeees863Spanishtr6566Turkishbn5411Banglatr7494Turkishja5728Japanesetr7370Turkishccp3626Chakmaar6914Arabicccp92Chakmaccp7138Chakmaar8022Arabicja6557Japaneseja6156Japanesebn1479Banglazh6304Chineseel6336Greekth5620Thaibn1412Banglachr7408Cherokeeel5734Greekes5897Spanishen6538Englishja3272Japaneseth5741Thaies1462Spanishru6786Russiantr2572Turkishru886Russianja3360Japaneseru780Russianzh1355Chinesezh5810Chineseiu7122 Inuktitutth7804Thaiiu3060 Inuktitutzh768Chinesesr1540Serbiantr6272Turkishbn1391Banglael7963Greekar7345Arabicccp4354Chakmazh2577Chinesees145Spanishar7540Arabiceo4166 Esperantoiu5243 Inuktitutbn8024Banglatr7258Turkishel2524Greekeo6422 Esperantoccp35Chakmael4922Greekiu4894 Inuktitutes2360Spanishccp7986Chakmaiu4757 Inuktitutes7241Spanishiu5621 Inuktitutth5257Thaieo3819 Esperantoja3309Japanesetr775Turkishiu6511 Inuktitutbn2258Banglaiu3526 Inuktituttr118Turkishfr510Frenchar6673Arabicccp8093Chakmabn626Banglaru7830Russiantr6531Turkishfr3786Frenchzh212Chineseccp917Chakmachr15Cherokeeen4636Englishsr4285Serbianel474Greekzh947Chinesesr7381Serbianfr3448Frenchth6116Thaibn6317Banglafr6952Frenchiu4062 Inuktitutbn3820Banglaiu6904 Inuktitutel675Greekar4094Arabicbn7926Banglaccp7354Chakmaen3320Englishar5663Arabicen5645Englishchr3941Cherokeefr4145Frenchru1738Russianel1606Greekeo23 Esperantofr5236Frenches4890Spanishja7397Japanesebn2678Banglabn4929Banglazh1416Chineseeo2099 Esperantoel2109Greekeo7367 Esperantoen6902Englishsr6306Serbianel4628Greekiu4575 Inuktituteo6209 Esperantoel33Greeksr1230Serbianfr985Frenchiu834 Inuktituten2382Englishbn2234Banglaccp4732Chakmaiu7730 Inuktitutth3391Thaibn4025Banglazh7286Chinesear6142Arabiczh1088Chineseeo798 Esperantoru5942Russianen5293Englishsr3572Serbianar5721Arabices2441Spanishccp1859Chakmafr2194Frenchiu6744 Inuktitutccp3394Chakmaeo6822 Esperantoen7064Englishzh321Chineseccp8097Chakmaes4613Spanishzh3079Chineseen5078Englishccp4516Chakmaccp2283Chakmaja5862Japanesees6983Spanishbn5623Banglaar5676Arabicja501Japanesechr2886Cherokeezh3435Chineseen7794Englisheo6802 Esperantofr192Frenchccp2230Chakmatr2154Turkishtr1197Turkishru1050Russiantr1481Turkishchr2297Cherokeeiu7008 Inuktitutru7549Russianzh2112Chinesesr1186Serbianen5738Englishes8183Spanishel7906Greekccp3651Chakmael2135Greektr3949Turkishes2427Spanishbn1942Banglath5867Thaien4417Englishru7468Russianccp2049Chakmael7449Greekccp3282Chakmaen1530Englishes6899Spanishth3133Thaith6404Thaith5894Thaitr6967Turkishchr7886Cherokeeel1536Greekel7982Greektr7195Turkishccp236Chakmachr8101Cherokeear4897Arabicru3042Russianchr4095Cherokeeel309Greekiu2371 Inuktitutru1808Russianes7226Spanishsr7682Serbianccp1048Chakmaiu6076 Inuktitutel3922Greeken6665Englishiu718 Inuktitutzh2838Chinesezh5963Chinesear1024Arabicth2644Thaichr7607Cherokeeth3821Thaizh2602Chinesezh7292Chineseeo5135 Esperantofr997Frenchel8145Greekes3502Spanishfr2588Frenchsr1130Serbianccp5852Chakmatr3625Turkishbn8091Banglath1915Thaieo7106 Esperantoeo3005 Esperantoth1352Thaisr5929Serbianar5699Arabicel2519Greekja3306Japaneseel2937Greektr3850Turkishccp3950Chakmatr2525Turkishen5547Englishfr1886Frenchzh1008Chinesefr5854Frenchru2779Russianeo3545 Esperantoru7813Russianes3109Spanishel3251Greekel5859Greektr6267Turkishru1597Russianar97Arabiceo1710 Esperantoen3461Englishes635Spanishth5446Thaies5273Spanishes5858Spanishtr2878Turkishja4529Japaneseiu1168 Inuktitutsr775Serbianfr2760Frenchru989Russiansr7614Serbianfr8038Frenchen2777Englishes1550Spanishth6533Thaieo1135 Esperantosr4038Serbiansr2649Serbianccp7874Chakmatr7998Turkishar982Arabicchr5826Cherokeesr4994Serbianchr4750Cherokeetr6773Turkishes3982Spanishru1076Russianfr2565Frenchbn6312Banglabn6291Banglael2847Greekzh4340Chinesezh6692Chineseeo998 Esperantoccp6481Chakmath7570Thaiiu2256 Inuktitutar6887Arabiciu4911 Inuktitutsr5910Serbianar6021Arabicbn7213Banglath815Thaiel1524Greekfr2490Frenchar2724Arabicccp1155Chakmaar197Arabices4523Spanishel7819Greekes3670Spanishtr4726Turkishar2518Arabicchr1477Cherokeefr6783Frenchen1115Englishel1615Greeken3702Englishfr2339Frenchen4216Englishfr6757Frenchru5575Russianru503Russianchr3454Cherokeetr5820Turkishbn3231Banglaeo4933 Esperantoru4814Russiantr6293Turkishchr3466Cherokeeja6914Japanesezh7123Chineseel228Greeken7235Englishtr5485Turkishes3834Spanishbn7744Banglachr4971Cherokeeen63Englishth789Thaien7361Englishth7081Thaieo7396 Esperantoiu4774 Inuktitutiu1505 Inuktitutel6616Greekth7790Thaija1917Japaneseja341Japanesezh6491Chinesefr2133Frenchar4757Arabicen1989Englishes1186Spanishiu2757 Inuktitutccp6291Chakmaccp4936Chakmaja731Japanesezh1947Chinesechr2836Cherokeesr1811Serbiansr4244Serbianar7398Arabicccp4310Chakmaja2437Japanesees7719Spanishar7871Arabicen7903Englishfr223Frenchccp5853Chakmachr265Cherokeebn1165Banglael6014Greeksr7815Serbianbn3220Banglaccp7711Chakmath5725Thaitr3517Turkishfr6559Frenchja4317Japanesechr4116Cherokeeel2991Greekccp1654Chakmaeo4374 Esperantoth8013Thaies1529Spanishiu5395 Inuktituteo7930 Esperantoja4120Japaneseiu3613 Inuktitutccp2703Chakmaccp5082Chakmazh4045Chinesees3088Spanisheo1191 Esperantozh1807Chineseen6895Englishen4778Englishsr1560Serbiantr4986Turkishfr766Frenchel7610Greekeo1766 Esperantoes6544Spanishbn5597Banglath3331Thaiccp5737Chakmafr5675Frenchth1536Thaitr1221Turkishel3591Greekccp4537Chakmatr5161Turkishfr5172Frenchja2652Japaneseru2362Russiantr3394Turkishth4389Thairu3440Russianru3666Russianja7189Japaneseiu2879 Inuktitutsr2452Serbianfr1067Frenchja8117Japaneseeo6310 Esperantochr1210Cherokeeja7410Japanesesr5423Serbianen2621Englishar2967Arabicja7255Japanesees3019Spanishes6621Spanishar2585Arabicbn6594Banglaen2749Englishru1941Russianzh2325Chinesezh600Chinesesr5732Serbianchr818Cherokeees2979Spanishja2408Japaneseccp3593Chakmafr6327Frenchfr7067Frenchtr3233Turkishccp1383Chakmabn5925Banglafr6033Frenchtr603Turkishtr4167Turkishar4473Arabicccp6Chakmaar3441Arabicel3059Greekru4650Russianth4682Thaifr4304Frenchel7643Greekel8117Greekfr1782Frenchbn1340Banglael7912Greektr4869Turkishccp6167Chakmachr5540Cherokeetr978Turkishtr3767Turkishes1322Spanishes5477Spanishes4331Spanishtr671Turkishen821Englishel705Greeken6941Englishel581Greekes3798Spanishsr1052Serbianiu45 Inuktitutar4648Arabicccp22Chakmaiu7542 Inuktituttr5964Turkishtr701Turkishccp507Chakmafr8113Frencheo3114 Esperantoel7470Greekchr4694Cherokeesr6624Serbianth2574Thaiel6257Greekru3399Russianja8106Japaneseccp331Chakmaru8152Russianen7436Englishen2476Englishru1382Russianccp356Chakmazh4629Chinesees1042Spanishbn68Banglachr2358Cherokeeja4254Japanesees5548Spanishar7390Arabicth8155Thaiel5454Greekfr4057Frenchja3834Japanesechr3751Cherokeeru8004Russianiu2086 Inuktitutar8143Arabicsr700Serbianes7560Spanishth5742Thaizh1368Chineseen7405Englishes3121Spanishen3467Englishru6799Russianchr3430Cherokeetr1154Turkishtr3005Turkishja160Japanesefr2738Frenchth4380Thaitr3184Turkishtr4650Turkishzh4834Chineseccp5165Chakmaar4377Arabiceo6435 Esperantofr2635Frenchru1725Russianzh6656Chinesesr712Serbianen6670Englishsr7955Serbianiu2176 Inuktitutiu1130 Inuktitutar5515Arabicccp1951Chakmaar4154Arabiceo1258 Esperantosr7171Serbiantr2879Turkishsr5428Serbianbn7780Banglael1400Greekar7694Arabicth2308Thaisr2132Serbianja1724Japaneseiu6192 Inuktitutja1793Japaneseiu2167 Inuktituttr952Turkisheo3362 Esperantoel4906Greekar7377Arabicen3423Englishja3680Japanesetr8156Turkisheo4541 Esperantobn4402Banglaar1425Arabicccp6321Chakmachr5377Cherokeeel810Greekel2069Greeken4498Englishiu640 Inuktitutsr1679Serbiantr3036Turkishja5824Japaneseth2103Thaien1188Englisheo2777 Esperantoar3315Arabiciu6543 Inuktitutchr5796Cherokeeiu3563 Inuktitutru5691Russianzh6199Chinesear3247Arabicen5511Englishes1782Spanishiu5989 Inuktituten5413Englishel3977Greekru6499Russiansr8155Serbianzh7689Chineseru5672Russianccp5733Chakmasr5619Serbianen861Englisheo6966 Esperantoen2772Englishbn183Banglaru368Russianel1519Greekfr139Frenchiu6698 Inuktitutiu7712 Inuktitutchr563Cherokeebn6798Banglaen1824Englishfr1528Frenchiu7332 Inuktituten5964Englishzh5920Chineseiu1431 Inuktitutru2633Russiantr3867Turkishen2683Englishchr1437Cherokeesr1290Serbianccp4485Chakmaar2399Arabiciu4116 Inuktitutfr7622Frenchth1284Thaiccp5494Chakmath2759Thaiar3392Arabices4118Spanishchr7074Cherokeees3784Spanishtr2057Turkishzh3173Chinesetr7665Turkishiu4112 Inuktitutfr168Frenchzh5216Chinesebn5584Banglachr7065Cherokeeeo1134 Esperantoen4881Englishel7252Greekbn2950Banglaccp3430Chakmachr1588Cherokeeja3411Japaneseen1503Englishfr6396Frenchchr5149Cherokeeth6699Thaiiu2070 Inuktituten862Englishiu1032 Inuktitutes3906Spanishtr7240Turkishth683Thaizh7659Chinesechr7163Cherokeechr1001Cherokeechr6932Cherokeeru830Russianchr1357Cherokeeccp4339Chakmaeo2028 Esperantoru8048Russianth6191Thaizh7198Chinesefr5190Frenchfr1994Frenchfr7703Frenchel2385Greekja7891Japanesees99Spanishiu5543 Inuktitutel2283Greekja6383Japanesetr4871Turkishtr7172Turkishbn5072Banglael337Greekth3967Thaiccp4698Chakmaen4128Englishru4291Russianar6408Arabicja561Japanesear6531Arabicru197Russianeo3169 Esperantosr3999Serbianiu6238 Inuktitutccp564Chakmaiu7082 Inuktitutiu5484 Inuktitutchr7008Cherokeeccp6753Chakmaeo3887 Esperantoel4293Greekchr5830Cherokeeja6621Japanesetr6650Turkishth5999Thaiiu633 Inuktitutar1982Arabiceo865 Esperantofr4819Frenchja4918Japaneseiu4723 Inuktitutth1651Thaiccp6344Chakmaja3303Japanesefr4832Frenchfr7733Frenchtr6951Turkishchr6991Cherokeebn1596Banglaccp2344Chakmaen7988Englishsr3298Serbianar2765Arabicar3969Arabicru3315Russianzh7433Chineseth4865Thaies1519Spanishiu6944 Inuktitutsr734Serbianar353Arabiczh7340Chinesear5807Arabiciu908 Inuktitutchr3024Cherokeesr5638Serbianccp571Chakmafr498Frenchfr8187Frenchar4841Arabicfr229Frenchccp750Chakmaiu4391 Inuktitutfr3828Frenches5803Spanisheo1859 Esperantoes6638Spanishfr5870Frenchja8068Japanesefr4986Frenchchr6147Cherokeefr7782Frenchth6410Thaifr6441Frenchfr660Frenchfr5620Frenchtr3058Turkishzh3203Chineseja5415Japanesees1050Spanishccp5693Chakmachr5097Cherokeear1487Arabicen7665Englishes139Spanishru33Russianccp5256Chakmaes5815Spanishiu5527 Inuktitutth2653Thaibn246Banglatr5627Turkishiu6113 Inuktitutchr5798Cherokeees2903Spanishccp2319Chakmafr3283Frenchfr3680Frenchchr6485Cherokeesr5076Serbianzh423Chinesear2240Arabicar1040Arabicar7864Arabicbn4421Banglaar5664Arabicbn7377Banglabn7999Banglachr7465Cherokeeen5890Englishbn7516Banglaeo651 Esperantoeo3168 Esperantofr7287Frenchzh5171Chinesear4177Arabicbn5594Banglaja1550Japanesezh7188Chinesees733Spanishth8028Thaiel4049Greekiu770 Inuktitutru7206Russiantr1884Turkishzh3601Chinesees5282Spanishth3726Thaien7680Englishar2099Arabicfr4208Frenchiu7337 Inuktitutsr1615Serbianar6361Arabicsr6292Serbianes2412Spanishes2787Spanishfr6405Frenchen1369Englishtr1726Turkishes5529Spanishen4109Englishccp7301Chakmafr3853Frenchzh436Chinesezh3606Chinesezh5484Chineseel400Greektr946Turkishfr2737Frenchfr4558Frenchja130Japanesesr3203Serbianiu3751 Inuktituttr6379Turkishzh8166Chineseru3564Russianel3474Greekeo3328 Esperantoru914Russianru7200Russianth2974Thaith5466Thaiel2970Greeken1279Englisheo2651 Esperantoja5762Japanesetr7422Turkishsr1717Serbianfr3021Frenchth4792Thaieo4801 Esperantoth3844Thairu2344Russianar1132Arabicchr2113Cherokeesr4361Serbianth5636Thaien605Englishtr6224Turkishes5467Spanishbn4458Banglabn4866Banglaes5027Spanishfr7282Frenchzh3523Chinesees6827Spanishbn998Banglaru2781Russianru3722Russianth3134Thaiccp2294Chakmaccp185Chakmaar4641Arabicccp7281Chakmaeo7908 Esperantoth7568Thaitr6700Turkishsr2585Serbianccp7666Chakmaen7743Englishfr6980Frenchzh5005Chineseccp5990Chakmabn326Banglaccp710Chakmaes1863Spanishru4926Russianiu6005 Inuktitutja383Japanesear1934Arabicen645Englishtr1442Turkishel7938Greeken7392Englishel676Greekiu233 Inuktitutchr6477Cherokeear8030Arabicja7497Japanesesr2826Serbianccp7411Chakmaccp2163Chakmaes7682Spanishth5252Thaisr21Serbianja1476Japanesear4201Arabicchr7977Cherokeeja277Japanesezh914Chinesezh4011Chinesear7946Arabicel7256Greekchr396Cherokeefr7291Frenchccp5513Chakmaccp7901Chakmazh3015Chinesebn5491Banglachr754Cherokeeen6355Englishfr7748Frenchru6267Russiantr7031Turkishen2111Englishiu6761 Inuktitutel5829Greekfr3793Frenchru7818Russianbn6320Banglaar6530Arabiczh190Chineseth4100Thaiel7693Greekiu3445 Inuktitutchr2309Cherokeezh4960Chineseccp7464Chakmazh4051Chineseen3332Englisheo1540 Esperantofr1020Frenchiu4329 Inuktitutbn2166Banglael240Greekar5990Arabicru3615Russianbn5000Banglael2246Greekeo4165 Esperantoru5661Russianth2770Thaieo274 Esperantozh3990Chinesezh4652Chinesebn7114Banglachr478Cherokeechr4818Cherokeeru543Russianel6619Greeken2076Englishes8092Spanishen5020Englishiu4931 Inuktitutru6601Russianja2333Japanesesr5882Serbiansr7973Serbianth8042Thaija8021Japaneseru5261Russiansr5670Serbianel4458Greekel3231Greekel6540Greeken5264Englisheo7730 Esperantoth2931Thaichr1292Cherokeefr416Frenchth8178Thaien5556Englisheo4958 Esperantoccp3308Chakmaiu579 Inuktitutel6671Greekeo7729 Esperantozh7954Chineseru7266Russianiu1113 Inuktitutsr2547Serbianen2167Englishel6984Greeksr4161Serbianen288Englishtr5482Turkishru6785Russianccp6157Chakmazh5527Chineseth5198Thaibn6108Banglaeo2646 Esperantoel2732Greekzh2780Chineseth4055Thaibn530Banglaja8039Japaneseccp6118Chakmaccp6199Chakmachr6606Cherokeeccp2127Chakmael4275Greeken2157Englishth5163Thaisr5384Serbiantr5715Turkishfr1648Frenches2775Spanishiu7200 Inuktituten6989Englishja3102Japanesesr4639Serbianfr4114Frenchel7317Greekru4987Russiansr7750Serbianth7996Thaiar3051Arabicfr1519Frenchbn3768Banglatr6795Turkishel7095Greekja3867Japanesetr4478Turkishchr4759Cherokeeeo6663 Esperantoar7954Arabicbn1621Banglaiu7391 Inuktitutja6633Japaneseel1135Greektr5170Turkishtr6626Turkishen5102Englishzh7604Chineseru3086Russianes3556Spanishen3938Englishru2928Russianccp3319Chakmaeo2219 Esperantotr5641Turkishccp6647Chakmachr5385Cherokeeen3132Englishfr7651Frenchchr1698Cherokeezh6873Chinesetr7570Turkisheo467 Esperantobn6540Banglaeo4204 Esperantoiu6421 Inuktitutel297Greekeo6584 Esperantoeo7952 Esperantozh2593Chineseiu278 Inuktitutzh7984Chinesebn4685Banglaccp5514Chakmaeo4561 Esperantozh1060Chineseth5460Thairu4182Russianen2121Englishel6779Greekeo5588 Esperantoja3116Japaneseen2274Englishfr7981Frenchbn5991Banglazh1678Chineseth943Thaija1582Japaneseen3869Englishsr6271Serbianiu3676 Inuktitutth5220Thaizh3513Chineseen4940Englishen7095Englishccp5220Chakmasr6669Serbianzh4321Chinesechr1725Cherokeefr381Frenchsr7103Serbianar3939Arabiczh2124Chinesechr1094Cherokeezh2373Chinesetr6658Turkishbn6881Banglafr2323Frenchbn279Banglaru122Russianth5336Thaibn8109Banglaen7944Englishar7524Arabicel5725Greekzh7662Chineseja3466Japaneseeo2454 Esperantosr694Serbianru3667Russianfr4082Frenchsr1005Serbiansr2103Serbianbn3765Banglaeo4387 Esperantoccp2947Chakmaeo990 Esperantotr3891Turkishen7441Englishccp6236Chakmaja3112Japaneseccp2856Chakmasr2114Serbianbn6339Banglaen2739Englishccp3265Chakmaar1166Arabicbn3612Banglaen7622Englishes25Spanishen7268Englishfr276Frenchfr1207Frenchja6001Japanesees1292Spanishtr1830Turkishbn6778Banglazh7786Chineseeo1576 Esperantoccp8039Chakmatr7400Turkishen558Englishen3650Englishchr3183Cherokeeiu5610 Inuktitutja6936Japaneseiu2873 Inuktitutchr3812Cherokeeth6040Thaija422Japanesetr2872Turkishel3734Greekes7967Spanishja424Japanesees3456Spanishen2559Englishen782Englishtr5863Turkishel511Greekja6308Japaneseru7038Russianar5312Arabiciu3937 Inuktitutth8088Thaien1397Englishel5049Greekel1544Greekccp426Chakmabn3773Banglaeo212 Esperantosr1392Serbianar3513Arabicel1828Greekiu6045 Inuktituttr5654Turkishes307Spanishfr2562Frencheo5721 Esperantoeo6036 Esperantoen5653Englishfr1216Frenchru7167Russianen6194Englishiu8057 Inuktitutel5814Greekes3364Spanishfr4396Frenchfr4720Frenchar6547Arabiciu6958 Inuktitutru2835Russiansr3500Serbianchr5495Cherokeechr6925Cherokeefr1324Frenchru7522Russiantr7421Turkishel7724Greekeo423 Esperantoiu2624 Inuktitutccp3121Chakmaja5917Japanesezh1825Chinesetr3187Turkishen4256Englishfr7533Frenchccp6298Chakmachr4666Cherokeebn338Banglachr1462Cherokeees5436Spanishar2839Arabicel6681Greekes2115Spanishfr130Frenchsr1151Serbianja1047Japanesetr1874Turkishiu7699 Inuktitutsr2577Serbianzh4374Chinesear5542Arabiczh7260Chineseja1767Japanesezh2164Chineseru2540Russiantr1056Turkishar1104Arabicbn6141Banglasr8083Serbianfr2315Frenchen2107Englishja975Japanesefr815Frenchbn1441Banglafr2970Frenchtr2049Turkishja2688Japanesebn5193Banglaar1364Arabicchr5872Cherokeefr3462Frenchiu3523 Inuktitutsr1762Serbianccp468Chakmaja1513Japaneseen6993Englishtr5503Turkishru6249Russianru488Russianchr1937Cherokeear1122Arabicchr4428Cherokeeen4304Englisheo796 Esperantoes2027Spanishiu7582 Inuktitutar4238Arabiceo837 Esperantoja7205Japaneseccp3038Chakmaccp4056Chakmaeo7145 Esperantoen7127Englishfr2212Frenchfr2560Frenchar233Arabicja2273Japaneseen2029Englishru1509Russianru7680Russiantr6479Turkishchr5074Cherokeebn4424Banglaes198Spanishfr4261Frenchen6475Englishfr7955Frenchbn4013Banglaeo2514 Esperantoiu6913 Inuktitutbn7280Banglath1613Thaiiu5113 Inuktitutth81Thaiel7936Greeken4335Englishel7486Greekth5772Thaija1668Japaneseiu1655 Inuktitutchr778Cherokeees6293Spanisheo1514 Esperantoth1049Thaieo2611 Esperantoccp6694Chakmatr6556Turkishfr1605Frenchbn5441Banglatr3857Turkishth470Thaiel1451Greeksr2473Serbianiu2322 Inuktitutsr4321Serbianbn6173Banglaar7577Arabiciu42 Inuktitutzh2122Chineseru453Russianth5452Thaibn2126Banglaeo6552 Esperantoes7078Spanishiu1872 Inuktitutth8048Thaichr7745Cherokeeeo1264 Esperantosr3672Serbianbn783Banglael4535Greekiu1968 Inuktitutiu8093 Inuktitutzh2555Chinesetr1301Turkishbn7406Banglaiu7149 Inuktitutar5821Arabicja1874Japaneseccp3928Chakmaar6074Arabicccp1511Chakmatr4736Turkishzh6343Chinesechr3374Cherokeeeo2673 Esperantotr45Turkishja5922Japaneseru1134Russianth8188Thaitr6749Turkishchr6165Cherokeeeo4729 Esperantofr3320Frenchja1005Japanesezh7839Chineseel8157Greekiu5089 Inuktitutsr5252Serbianja6562Japanesees2948Spanishfr4074Frenchiu3795 Inuktitutel2004Greekru4441Russianeo5295 Esperantosr4829Serbianeo1529 Esperantofr4182Frenchen1282Englishth1870Thaitr503Turkishzh7015Chinesesr5991Serbianzh1430Chinesechr451Cherokeear1788Arabicbn524Banglachr5785Cherokeefr3863Frenchbn5015Banglaccp8069Chakmaja864Japaneseiu1775 Inuktitutja1898Japaneseccp6110Chakmachr2840Cherokeeeo5673 Esperantochr1261Cherokeeiu7131 Inuktitutar1102Arabiceo521 Esperantoja358Japaneseja2127Japaneseel5681Greeken4715Englishsr1275Serbianfr1681Frenchth116Thaiel1359Greekiu3975 Inuktitutbn6909Banglachr4617Cherokeezh1568Chinesefr4719Frenchccp2937Chakmaen7327Englisheo776 Esperantoru5482Russianccp5916Chakmaccp4823Chakmath2035Thaibn3076Banglatr5025Turkisheo6585 Esperantobn1901Banglaar437Arabiceo1451 Esperantosr3145Serbianccp5645Chakmabn3092Banglachr6345Cherokeeen6441Englishru1418Russianru7122Russianfr1619Frenchru6439Russianchr5397Cherokeefr679Frencheo7387 Esperantoru1979Russianen6028Englishth1687Thaies3154Spanishru6338Russianar1693Arabiceo3957 Esperantobn1519Banglaeo7278 Esperantoiu2073 Inuktitutiu6764 Inuktitutel2932Greeken1585Englishth573Thaieo5330 Esperantochr858Cherokeeru2538Russianes1266Spanishzh4625Chinesezh6562Chinesear2328Arabiceo2353 Esperantoeo2571 Esperantoes5207Spanishja7974Japanesees3544Spanishth1822Thaifr2303Frenchja3967Japaneseth7596Thaien6314Englishel4754Greekar1409Arabicar1505Arabicen8168Englishtr2213Turkishtr3639Turkishel5245Greekchr2180Cherokeeth7330Thaies4442Spanishchr7470Cherokeebn7748Banglaes5444Spanishja2073Japaneseru7241Russianes7993Spanishtr4027Turkishar261Arabicchr5121Cherokeeru2903Russianth576Thaiel5401Greekeo5118 Esperantoar2773Arabiciu8011 Inuktitutru6230Russianchr1429Cherokeeth5054Thaija703Japanesezh2581Chinesear3093Arabicchr3955Cherokeear3634Arabicen3145Englishzh2504Chinesezh2052Chineseeo966 Esperantofr5045Frenchiu5894 Inuktitutja6401Japaneseeo2198 Esperantosr2179Serbianth5991Thaichr2378Cherokeesr159Serbianeo6900 Esperantoth6003Thaiar7295Arabicar3428Arabicchr313Cherokeees6103Spanishsr297Serbianiu2151 Inuktitutzh5401Chineseth4666Thaija1843Japaneseja5968Japanesetr112Turkishtr7632Turkishth666Thaibn844Banglath1383Thaiar3533Arabicbn581Banglael3914Greekja134Japaneseth3342Thaibn1111Banglafr4682Frenchth4444Thaiccp6151Chakmabn3778Banglaja5681Japanesees2812Spanishen6307Englishfr1009Frenchth2300Thaizh5004Chinesesr7027Serbianja3060Japaneseeo3097 Esperantosr3569Serbianen215Englishzh2128Chineseru3682Russianeo2657 Esperantosr7502Serbiansr2205Serbianiu5569 Inuktitutfr4808Frenchel375Greektr3044Turkishel2295Greekes5125Spanishtr2957Turkishbn4947Banglachr4579Cherokeeja5763Japanesebn7825Banglaes5441Spanishzh6276Chineseth2173Thaies567Spanishsr1824Serbianth7672Thaies2750Spanishbn2731Banglaiu3493 Inuktitutchr945Cherokeeiu5189 Inuktituten7015Englishen6625Englishbn914Banglachr638Cherokeeiu4766 Inuktitutja1829Japaneseja7185Japaneseiu5567 Inuktitutth3068Thaichr6355Cherokeesr3179Serbianel2521Greekfr8050Frenchtr3480Turkishzh7481Chineseeo109 Esperantoja876Japanesechr2406Cherokeees6271Spanishchr1996Cherokeeccp4086Chakmaen6400Englisheo5530 Esperantoth6227Thaiel6193Greekccp8146Chakmael2889Greekes6073Spanishel4255Greekchr222Cherokeezh3914Chineseccp6340Chakmaiu5841 Inuktitutbn1721Banglaes6865Spanishel4494Greekel6941Greekccp4790Chakmaccp4852Chakmath1037Thaichr2239Cherokeetr1647Turkishen7159Englishja2387Japanesechr50Cherokeeru7572Russiantr3362Turkishen1259Englishtr1870Turkishiu7894 Inuktituten2812Englisheo5095 Esperantoth4031Thaizh4101Chineseja5674Japanesees4748Spanishchr722Cherokeeth7092Thaies1003Spanishchr2687Cherokeeja1366Japaneseru1309Russianar3621Arabicbn2408Banglaes4432Spanishbn5119Banglafr7171Frenchja3570Japanesechr7351Cherokeeel7855Greekchr1168Cherokeeth855Thaitr1588Turkisheo5581 Esperantoth3605Thaitr8183Turkishccp6193Chakmaes364Spanishsr1329Serbianchr2200Cherokeefr7180Frenchen3428Englishes8148Spanishsr1667Serbiantr8119Turkishel7905Greekbn7495Banglatr7475Turkisheo3259 Esperantoccp6070Chakmabn3889Banglath2193Thaiccp2916Chakmafr5259Frenchzh3162Chineseja4052Japanesesr2614Serbiantr30Turkishes688Spanishth5415Thaisr6395Serbianeo2131 Esperantofr124Frenchtr4177Turkishiu1508 Inuktitutzh7846Chinesebn5968Banglachr8183Cherokeees6580Spanishth7750Thaith4676Thaija1527Japanesechr670Cherokeeja269Japaneseru1777Russianccp5374Chakmabn1117Banglaru376Russianru7307Russianth7059Thaitr51Turkishtr2008Turkishsr2683Serbiansr2939Serbianth621Thaizh671Chinesear3262Arabicccp3285Chakmaiu6358 Inuktitutru4553Russianth5535Thaiiu7939 Inuktitutja7704Japanesebn6826Banglaccp2542Chakmaccp7611Chakmatr3882Turkishzh2457Chineseiu3155 Inuktituteo269 Esperantoen2919Englishar4507Arabicar4890Arabicccp1786Chakmaar5792Arabicchr856Cherokeeen4470Englishth7038Thaifr3568Frenchel286Greekeo929 Esperantoel1980Greekth6596Thaitr1654Turkishbn3800Banglaes2421Spanishel2869Greekja1924Japanesees1110Spanishru1322Russianzh2386Chinesechr5950Cherokeeeo1703 Esperantotr5459Turkishccp6689Chakmaes675Spanishel793Greekja5389Japanesesr7668Serbianbn5188Banglaar7165Arabices7111Spanishiu5010 Inuktitutccp7351Chakmaeo584 Esperantoar3210Arabiceo5712 Esperantoru6762Russianccp4973Chakmatr2595Turkishchr776Cherokeefr6658Frenchru5963Russianchr7521Cherokeefr2507Frenchzh3764Chineseeo7112 Esperantofr4398Frenchfr2495Frenchtr1486Turkishth5716Thaitr5505Turkishtr6321Turkishzh2425Chineseeo2822 Esperantoes4856Spanishsr2323Serbiantr1267Turkishes6951Spanisheo2182 Esperantochr7691Cherokeebn7010Banglael6877Greekar203Arabicel1001Greekes2555Spanishru6651Russianccp4173Chakmaeo6573 Esperantoel1939Greeksr5938Serbianes434Spanishsr492Serbianzh6334Chinesechr238Cherokeeel7719Greekeo8040 Esperantosr5865Serbiansr6550Serbiantr4427Turkishbn219Banglafr1027Frenchru6272Russianiu8103 Inuktitutchr4633Cherokeefr5980Frenches7103Spanishccp6230Chakmaar1033Arabiceo1209 Esperantoru2944Russianar2042Arabicbn6212Banglaes6045Spanisheo2586 Esperantoiu1708 Inuktitutja1001Japaneseru4960Russiantr1551Turkishth1728Thaiiu2963 Inuktitutiu3208 Inuktituten2957Englishes3986Spanishar5467Arabicbn3632Banglafr2104Frenchiu1542 Inuktitutsr3777Serbiansr4642Serbianen5746Englishes5821Spanishar5616Arabiceo511 Esperantozh6909Chinesetr2487Turkishiu3365 Inuktitutel6601Greekja3001Japaneseru4235Russianfr7785Frenchzh7269Chineseja4202Japanesechr1887Cherokeesr1591Serbianzh1772Chinesear3373Arabicen1982Englishchr4211Cherokeeeo7974 Esperantoja6379Japanesesr6009Serbianen8049Englishzh3920Chinesetr2466Turkishth6496Thaisr181Serbianja2919Japaneseth8044Thaizh6898Chineseja5976Japaneseen197Englishsr1719Serbianfr1927Frenchfr1957Frenchbn7795Banglaccp260Chakmaen285Englisheo2493 Esperantofr4032Frenchen3957Englishtr2997Turkishbn7829Banglazh1199Chinesear8080Arabicar6461Arabices5860Spanishccp2847Chakmaiu2329 Inuktitutiu3132 Inuktitutccp6997Chakmaeo6242 Esperantosr2622Serbianes7502Spanishzh2098Chineseru2295Russianeo7961 Esperantochr1975Cherokeeel6684Greekru4043Russianar4216Arabicen4248Englishru8076Russianar3970Arabicar7729Arabicen7646Englishth2285Thaifr6707Frenchzh5079Chinesear3119Arabiciu3046 Inuktitutja4004Japanesear4214Arabices3010Spanishfr2187Frenchbn7545Banglaja7048Japaneseen5075Englishiu740 Inuktitutth4743Thaibn897Banglabn1720Banglaja2865Japanesezh6069Chineseccp1914Chakmaeo7714 Esperantofr2354Frenchar6173Arabicru7730Russianth3999Thaifr918Frenchru6635Russianzh3999Chinesesr7733Serbianru7496Russianzh7949Chinesees7864Spanishtr7855Turkisheo1246 Esperantosr6249Serbianccp8094Chakmaen3969Englishja1535Japanesefr1727Frenchru5723Russiantr7351Turkishsr2691Serbianar4327Arabicchr6153Cherokeeeo5198 Esperantoth3937Thaieo7900 Esperantoiu5033 Inuktitutru5720Russianiu2635 Inuktitutiu3338 Inuktitutel4464Greekeo7740 Esperantotr2496Turkishru3988Russianiu7371 Inuktituttr274Turkishen6320Englishtr7396Turkishar910Arabictr4333Turkishja3906Japanesesr3388Serbianbn1092Banglasr1124Serbianth2850Thaith5953Thaies3249Spanishja1382Japaneseru5305Russianbn5860Banglaru6072Russianes7058Spanishru1260Russianfr677Frenchzh5497Chinesebn5816Banglaru5544Russianth7624Thaiel5507Greekchr4473Cherokeeiu8118 Inuktituteo4822 Esperantoes4975Spanishja7439Japanesear7399Arabicbn3338Banglabn5688Banglaru244Russiansr6524Serbiansr8106Serbiantr3491Turkishsr2551Serbianen2589Englisheo5547 Esperantoiu291 Inuktituten8086Englishiu4665 Inuktitutru4030Russianru6528Russiansr7842Serbianchr7875Cherokeeeo51 Esperantoth5528Thaizh1821Chinesesr5519Serbianccp263Chakmael3088Greekru1005Russianiu2718 Inuktitutja5794Japanesear4529Arabicen6459Englishel8044Greekes3803Spanishth1417Thaizh6921Chineseja34Japanesebn4956Banglaccp594Chakmaes2491Spanishsr4437Serbianth3785Thaies4490Spanisheo1730 Esperantozh497Chineseeo2522 Esperantosr2943Serbiansr7474Serbianar6958Arabicja5808Japaneseja4237Japanesezh4922Chineseru936Russianbn3151Banglatr2296Turkishen5991Englishes7Spanishru2349Russianes5767Spanishja6233Japanesechr677Cherokeeel882Greekel173Greekccp7249Chakmachr917Cherokeebn4670Banglachr5172Cherokeeru5268Russianzh6594Chineseeo2158 Esperantoen1602Englishar196Arabicccp3824Chakmaen7329Englishccp5402Chakmaar7661Arabicccp1568Chakmael7275Greekeo143 Esperantofr1827Frenchtr3322Turkisheo4667 Esperantofr4122Frenchen2762Englishru2966Russianja3793Japaneseth2006Thaiel4196Greekes1593Spanisheo167 Esperantosr542Serbianzh5913Chineseel6516Greekeo2193 Esperantoru510Russianeo3442 Esperantosr267Serbianel3660Greekfr2957Frenchfr7730Frenches2291Spanishiu8022 Inuktitutth7084Thaieo1477 Esperantoiu4910 Inuktitutchr6794Cherokeeru5000Russianbn2259Banglachr1805Cherokeebn5856Banglaiu432 Inuktituteo3535 Esperantozh107Chineseeo4908 Esperantoru1402Russiantr3707Turkishes773Spanishfr1508Frenchar7258Arabicbn6715Banglachr4339Cherokeechr6330Cherokeeen7999Englishzh3440Chinesear1571Arabices4443Spanishbn5294Banglasr6146Serbianja5649Japanesefr2030Frenchccp2329Chakmaiu1668 Inuktitutchr251Cherokeeccp4780Chakmaar7846Arabicru7577Russianar2753Arabicbn4625Banglath3832Thaith7705Thaiiu1714 Inuktitutth6664Thaith2236Thaifr2015Frenchzh7622Chineseru1043Russianja888Japaneseel2325Greekru5065Russianen1079Englishru7089Russianar7523Arabictr3656Turkishen603Englishru6739Russianiu5371 Inuktitutth5670Thaifr2016Frencheo3174 Esperantobn2718Banglaes3858Spanishzh1121Chineseccp1454Chakmachr3931Cherokeeja2104Japanesees3501Spanishfr654Frenchfr5604Frenchru2548Russianchr210Cherokeetr2548Turkishccp858Chakmath2305Thaibn5971Banglaja3432Japanesezh1530Chinesechr4405Cherokeezh3829Chinesees6896Spanishchr1243Cherokeezh4046Chineseeo5851 Esperantosr1993Serbianfr6465Frencheo7553 Esperantoar6865Arabicchr6735Cherokeeja5729Japaneseccp6308Chakmafr133Frenchel5457Greekar1877Arabiceo3049 Esperantoru3920Russianiu4202 Inuktitutccp2304Chakmaiu13 Inuktitutth190Thaifr6191Frenchzh6159Chinesetr5062Turkishar1995Arabicccp6730Chakmaccp6866Chakmachr7697Cherokeeccp1924Chakmaeo3478 Esperantoja2854Japanesechr995Cherokeeru1701Russianen3981Englishen995Englisheo5274 Esperantoru639Russianar6710Arabicar2019Arabicel2290Greeken7291Englishes2264Spanishsr3395Serbiansr5897Serbianzh4859Chinesebn7837Banglasr5875Serbianru5848Russianfr4970Frenchchr4677Cherokeeel2552Greekzh4962Chineseth2184Thaichr8174Cherokeees6772Spanishfr4402Frenchiu8134 Inuktitutja75Japaneseeo1488 Esperantoiu3789 Inuktitutes4380Spanishfr4556Frenchccp2124Chakmasr2428Serbianccp2463Chakmazh520Chineseel4388Greekar3959Arabicth8037Thaitr4727Turkishchr462Cherokeeen3737Englishes3929Spanishsr6644Serbianeo1244 Esperantobn4877Banglatr6284Turkishccp7839Chakmafr3542Frenchar7448Arabicth3207Thaizh7392Chinesefr3890Frenchiu6934 Inuktitutccp1696Chakmaccp4405Chakmachr894Cherokeeen1025Englishes1243Spanishes1248Spanishru2545Russiansr6460Serbianth2514Thaiar2389Arabicar2872Arabicru1821Russianiu7312 Inuktitutar948Arabicsr993Serbianes3765Spanishbn3630Banglath2978Thaichr2973Cherokeeru5987Russiansr1195Serbianar3052Arabicar2060Arabicccp3490Chakmaen6851Englisheo6264 Esperantoiu6948 Inuktitutsr6411Serbianccp2917Chakmaen5810Englishen7320Englishccp5491Chakmachr950Cherokeeiu7865 Inuktitutiu8106 Inuktitutja8008Japanesesr6800Serbianzh7018Chinesezh5013Chinesees725Spanishen749Englishbn1738Banglael8138Greekfr3556Frenchel653Greekzh7925Chinesetr4848Turkishchr2448Cherokeear6757Arabicccp1115Chakmaar7118Arabicar2081Arabicth2577Thaizh1095Chinesechr7618Cherokeeel4452Greekchr1154Cherokeeeo3296 Esperantoes6883Spanishiu4553 Inuktitutth1146Thaies4959Spanishzh1559Chinesebn3030Banglaru2559Russiansr2860Serbianes3308Spanishen5966Englishen1428Englishru6436Russianru894Russianeo4326 Esperantoar7044Arabiciu5158 Inuktitutru2238Russianel1613Greekar4831Arabicsr1113Serbianel529Greekzh695Chineseru7895Russianccp6093Chakmaccp7064Chakmaccp867Chakmaeo620 Esperantoru3718Russianccp5731Chakmaar626Arabicen3921Englishja2606Japaneseiu4188 Inuktituttr5356Turkishccp3152Chakmazh3328Chineseth8075Thaith4312Thaiel3098Greekar2994Arabicth4475Thaija3554Japaneseccp4003Chakmaen6908Englishzh2909Chineseth4039Thairu6582Russiansr5265Serbianeo2677 Esperantofr154Frenchth7549Thaibn223Banglafr4226Frenchar4666Arabiceo2021 Esperantofr2926Frenchsr4816Serbianzh6848Chineseru3770Russianeo2338 Esperantochr6215Cherokeeiu295 Inuktitutes5188Spanishiu3016 Inuktitutsr1232Serbianiu4567 Inuktituteo173 Esperantochr1265Cherokeetr2810Turkishfr6721Frenchzh5827Chinesefr668Frenchar6678Arabiciu4271 Inuktitutru5430Russianar7478Arabiczh3878Chinesechr216Cherokeeel1487Greeksr6699Serbianzh952Chineseeo6575 Esperantoeo4301 Esperantosr484Serbianbn7193Banglaen2206Englishiu6159 Inuktitutru6365Russianar4772Arabicccp7335Chakmaeo4794 Esperantobn7738Banglachr787Cherokeees5980Spanishchr1557Cherokeeen4452Englishccp3671Chakmaes2817Spanishiu4016 Inuktitutru6993Russianzh1185Chinesees6081Spanishsr4405Serbianfr4252Frenchel5936Greekfr717Frenchiu5161 Inuktitutccp3539Chakmasr1357Serbianchr7260Cherokeesr6693Serbianzh4881Chineseel5175Greekar4089Arabicen2871Englishiu3988 Inuktitutja1754Japaneseru3206Russianar7530Arabicchr1109Cherokeeccp2840Chakmabn6777Banglath7520Thaien6571Englishzh7603Chineseru5098Russianes4039Spanishja3494Japaneseel4077Greeken2239Englishen5596Englishiu1284 Inuktituttr3390Turkishsr2591Serbianru6086Russianeo1146 Esperantofr6120Frenchar5203Arabiciu4643 Inuktitutar7569Arabices5491Spanishel6224Greekfr4319Frenchfr6838Frenchth3554Thaiiu1357 Inuktitutccp8037Chakmaes3226Spanishsr7354Serbianth7785Thaitr1365Turkishccp3116Chakmaeo1832 Esperantoen5920Englishccp3124Chakmaar3484Arabicccp1673Chakmaccp84Chakmaru4113Russianes3269Spanishth551Thaisr5558Serbianel571Greeksr2582Serbiantr3595Turkishchr6123Cherokeeccp1071Chakmaru0Russiantr6250Turkishru175Russianbn2314Banglaja6556Japanesebn2637Banglaes5010Spanishth7865Thaith5714Thairu1865Russianeo4399 Esperantoes775Spanishbn4379Banglachr2263Cherokeeiu1184 Inuktitutes2072Spanishiu4195 Inuktitutja3890Japaneseru7665Russianru6233Russiansr1402Serbiantr2223Turkishzh5100Chineseru1733Russianbn7677Banglaes3464Spanisheo3813 Esperantoel7527Greektr4785Turkishen2388Englishiu7132 Inuktituttr3837Turkishth7176Thaiar1398Arabicar3694Arabicar5313Arabicar755Arabiceo2257 Esperantoen2611Englishzh2767Chineseiu7372 Inuktitutccp5845Chakmaru1180Russianar7730Arabiczh2877Chineseiu3090 Inuktituten4722Englishzh3669Chinesetr6446Turkishth1333Thaies5160Spanishccp2185Chakmaccp2762Chakmaccp1168Chakmaru2236Russiantr3688Turkishar7217Arabicel6911Greekth5933Thairu3844Russianbn2330Banglath3657Thaien6827Englishen4368Englishja7124Japanesefr6596Frencheo7256 Esperantochr6026Cherokeeth4936Thaifr7678Frenchbn7662Banglaar6450Arabicfr1686Frenchen4898Englishes1562Spanishzh2466Chineseth5619Thaibn6185Banglaiu5077 Inuktitutbn5142Banglael4890Greekar5953Arabicja7661Japaneseel4277Greekja6510Japaneseeo1309 Esperantoccp1993Chakmachr2453Cherokeesr7593Serbianzh1254Chinesechr150Cherokeefr1921Frenchiu3470 Inuktituten1116Englishfr6081Frenchchr3571Cherokeebn2961Banglachr5500Cherokeeth4607Thaichr5976Cherokeeiu7925 Inuktitutru2199Russianel4094Greektr5908Turkishes4119Spanishel2922Greekeo7298 Esperantoru4681Russiansr7100Serbianja2375Japaneseth3481Thaith1933Thaichr885Cherokeezh3053Chinesees109Spanishen4658Englishes3424Spanishtr3240Turkishes7759Spanishja5912Japanesesr2199Serbiansr2421Serbianfr6866Frenchfr7794Frenchfr2223Frenchiu2707 Inuktitutsr2789Serbianen4652Englishru1807Russiansr7520Serbianja2373Japanesear7828Arabicja7102Japanesefr845Frenchja5831Japaneseel5042Greekel6868Greekar5418Arabicccp2659Chakmaja7109Japaneseel7088Greeken5298Englishccp3310Chakmaccp2458Chakmaru1008Russianru723Russiantr4040Turkisheo1100 Esperantozh814Chineseccp5127Chakmaru6592Russiansr1486Serbianar5733Arabicbn371Banglael3232Greekfr1512Frenchchr3073Cherokeeja3675Japanesesr2313Serbianen5939Englishja4077Japanesetr4586Turkishccp3224Chakmaru526Russianeo5357 Esperantosr7700Serbiansr1453Serbianiu7587 Inuktituttr6713Turkishel2873Greekbn1605Banglatr5150Turkishen6786Englishel8034Greekbn2843Banglaeo7219 Esperantosr7117Serbianchr6711Cherokeeen5171Englishzh6875Chineseja2137Japanesetr688Turkishen4225Englishchr1008Cherokeebn3057Banglachr5509Cherokeetr4180Turkishja5410Japaneseth6676Thaiar1907Arabictr3781Turkishel7562Greeken2348Englishen5337Englishel7765Greekja7735Japanesezh5909Chineseel7682Greekeo4036 Esperantoen2571Englishtr4507Turkishzh6232Chinesear4429Arabicfr2008Frenchth1407Thaizh2095Chineseth6432Thaies640Spanishfr7935Frenchtr735Turkishchr4016Cherokeeru1557Russianeo4303 Esperantoel6882Greekel5202Greekzh7325Chineseru529Russianzh6547Chinesechr2906Cherokeeeo7611 Esperantoru5506Russianen5727Englishbn3526Banglaiu392 Inuktitutth2377Thaiiu746 Inuktitutccp3935Chakmath7589Thaitr1222Turkishchr212Cherokeezh7616Chineseccp892Chakmaes5727Spanishsr1907Serbianzh7600Chinesesr261Serbianbn1161Banglaen7271Englishccp4026Chakmath3270Thaiiu618 Inuktitutth5012Thaiiu1464 Inuktitutja5339Japaneseel27Greeken2854Englishsr2538Serbianja617Japaneseja4379Japanesefr935Frenchchr7991Cherokeefr2299Frenchru5627Russianen4340Englishsr5135Serbianiu1732 Inuktitutzh4897Chineseen5367Englishel5751Greekes2713Spanishccp7644Chakmachr6437Cherokeefr4404Frenchsr7756Serbianchr3167Cherokeebn4845Banglaiu880 Inuktitutccp205Chakmaen3571Englishel1138Greekar1840Arabicsr3217Serbianth200Thaitr4448Turkishar614Arabicen3922Englishru3093Russiansr2528Serbianiu6375 Inuktitutsr6963Serbianru1345Russiantr7121Turkishth5079Thaith7838Thaibn585Banglabn961Banglatr6022Turkishiu6521 Inuktituten3217Englishsr7362Serbianbn5383Banglabn1560Banglatr630Turkishiu5374 Inuktitutja2976Japanesebn2473Banglaeo5776 Esperantozh5020Chinesear7834Arabicbn3728Banglaes1285Spanishbn5486Banglaeo6469 Esperantozh7484Chinesebn5527Banglaes4994Spanishru964Russianbn7633Banglabn5898Banglaiu7419 Inuktitutja2638Japaneseth4083Thaien6746Englishth3415Thaith4436Thaiel6685Greekes7402Spanishzh4258Chineseccp7510Chakmaar4546Arabicfr5101Frenchccp4161Chakmaja4197Japanesefr3171Frenchar2964Arabicfr3833Frenchja4078Japaneseru7129Russiansr908Serbianzh6230Chineseiu7217 Inuktitutccp6320Chakmafr3220Frenchchr1540Cherokeesr3052Serbianth853Thaiar2261Arabicel5590Greekbn2102Banglaeo6354 Esperantoiu7604 Inuktitutzh4506Chinesezh5565Chineseja5181Japaneseeo1798 Esperantofr3240Frenchel6446Greekfr7148Frenchru454Russianccp7157Chakmaru3097Russianchr3043Cherokeeeo1167 Esperantoja4111Japanesetr1599Turkishtr5988Turkishel2834Greekeo1323 Esperantoru5084Russianzh7728Chinesees3530Spanishru7582Russianzh902Chineseen2665Englishsr7585Serbianja6162Japanesezh2715Chineseiu5129 Inuktitutja6009Japanesear7364Arabicchr1091Cherokeeen4120Englisheo1871 Esperantoiu3505 Inuktituten1325Englishar7733Arabiciu4037 Inuktitutar1812Arabicth2906Thaisr3857Serbianbn4559Banglafr2135Frenchja5588Japanesebn5879Banglasr2684Serbianes5009Spanisheo6374 Esperantobn4148Banglael8172Greeken5899Englisheo6932 Esperantoth7993Thaieo1697 Esperantoth7131Thaiiu5686 Inuktitutar4699Arabicbn4000Banglaeo4278 Esperantotr4100Turkishccp870Chakmaccp5421Chakmaja626Japaneseen7792Englishchr4207Cherokeeru3374Russiantr5877Turkishiu4863 Inuktitutiu4187 Inuktitutzh5268Chinesesr2481Serbianen8012Englisheo606 Esperantoja4073Japanesesr2900Serbianfr4629Frenchen5564Englishfr3073Frenches6369Spanishja3848Japaneseeo283 Esperantosr611Serbianth6555Thairu588Russianen4709Englishar1369Arabiceo6442 Esperantoja5158Japaneseiu2271 Inuktitutsr8085Serbianth7564Thaifr7740Frenchtr2815Turkishtr6381Turkishel4695Greekes5572Spanishen5503Englishth3319Thaizh1576Chineseel648Greekja4286Japaneseen2126Englishes5130Spanishbn736Banglaes62Spanishsr2810Serbianel7144Greekchr5160Cherokeeth7117Thaies7420Spanishfr573Frenchar743Arabiciu1949 Inuktitutiu6201 Inuktitutja6163Japanesezh6471Chinesesr5611Serbiansr4426Serbiansr7523Serbianiu6226 Inuktituteo4795 Esperantoeo2423 Esperantosr3797Serbianzh4883Chineseccp489Chakmaja6043Japaneseru5743Russianel876Greekth6238Thairu6303Russianccp732Chakmaru7903Russiantr3106Turkishchr3913Cherokeefr586Frenchccp1025Chakmatr278Turkishen1712Englishja7998Japanesefr3995Frenchtr4877Turkishsr5458Serbianru1172Russianeo5068 Esperantoeo2745 Esperantoeo5333 Esperantoeo7818 Esperantobn927Banglabn5283Banglaru1290Russiansr2034Serbiansr5971Serbianth6820Thaizh4545Chineseel1018Greektr5407Turkisheo7294 Esperantoar4911Arabicchr763Cherokeeel2576Greekeo4772 Esperantoar45Arabicar7867Arabiceo342 Esperantochr1694Cherokeezh4699Chineseeo5113 Esperantoiu5790 Inuktitutiu1366 Inuktitutja6206Japanesebn6070Banglath1834Thaija7468Japanesefr3722Frenches2875Spanishtr940Turkishar4836Arabicth1433Thaiar6278Arabiczh4342Chineseel2117Greekeo5813 Esperantoru4807Russianth4916Thaien2783Englishzh5255Chineseeo4463 Esperantoel7572Greekiu1492 Inuktituteo1280 Esperantofr1295Frenches2301Spanishfr3537Frenchfr5691Frenchja4715Japanesebn6211Banglaru645Russianru2631Russianbn6761Banglaru6902Russianen5574Englishar141Arabiczh1277Chinesebn1045Banglasr2992Serbianbn3167Banglael8036Greeken4405Englishes1475Spanishtr1007Turkishzh1815Chinesetr1920Turkishar3112Arabices2955Spanishar157Arabicfr824Frenchel533Greekfr3412Frenchen886Englishth7343Thaibn4504Banglaiu3161 Inuktitutja2446Japanesees6711Spanisheo7164 Esperantoiu6490 Inuktituteo1324 Esperantoiu7935 Inuktituttr6736Turkishfr2675Frenchiu8125 Inuktitutth2540Thaiar5399Arabicsr6636Serbianth3449Thaitr1677Turkishel7697Greekes6201Spanishccp5130Chakmabn2388Banglaccp413Chakmaeo4332 Esperantoth7079Thaija4477Japaneseiu2679 Inuktitutbn1715Banglaen1615Englishchr1610Cherokeeeo1333 Esperantoes415Spanishth8026Thaiiu5602 Inuktitutth277Thaies341Spanishen6412Englishbn2458Banglaar1063Arabictr2884Turkishbn645Banglaccp7072Chakmaja1349Japanesefr1369Frenchiu7810 Inuktituttr6035Turkishbn3464Banglaeo547 Esperantoiu3555 Inuktitutes1321Spanishzh1488Chinesebn7965Banglafr6277Frenchsr2911Serbiantr5550Turkishen3812Englishsr6910Serbianccp3154Chakmafr537Frenchar2587Arabictr6002Turkishsr4273Serbianccp1193Chakmaeo6502 Esperantofr5672Frencheo13 Esperantoiu4977 Inuktituttr4713Turkishiu1198 Inuktitutzh4079Chinesechr2097Cherokeeel1529Greektr2604Turkishru4619Russianja6198Japaneseiu1769 Inuktitutiu4210 Inuktitutsr3337Serbianzh6093Chineseiu5017 Inuktitutru8037Russianccp6221Chakmafr1398Frenchzh194Chinesebn635Banglaar4820Arabicbn3698Banglachr2893Cherokeeeo3702 Esperantoru2584Russianja5368Japanesetr6719Turkishsr2533Serbianja5524Japanesetr8083Turkishja7594Japanesechr5318Cherokeeen3828Englishth92Thaiccp5802Chakmaes5455Spanishja7352Japaneseen2726Englishtr3893Turkishchr7359Cherokeeel7893Greekbn421Banglaccp8155Chakmaiu2292 Inuktitutiu6696 Inuktitutfr4820Frenchiu6771 Inuktituttr3310Turkishccp3351Chakmaen2705Englishzh47Chinesear3311Arabicbn1269Banglasr3607Serbianzh5479Chineseiu6711 Inuktitutru226Russiansr7393Serbianfr858Frenchel7500Greekccp503Chakmaja1419Japanesechr7957Cherokeeru3289Russianel5377Greekel7342Greekbn3987Banglath1519Thaith2764Thaichr352Cherokeeth2755Thaiel7155Greekel4788Greekeo3859 Esperantoes1557Spanishru1084Russianja3647Japaneseru3951Russianru7929Russianel5699Greekar2447Arabicru5621Russianzh5890Chineseeo7481 Esperantoru6596Russianchr1379Cherokeeccp8148Chakmazh6337Chineseru7357Russianzh2021Chineseen2858Englishccp7295Chakmatr852Turkishtr5597Turkishsr7161Serbianchr4838Cherokeeccp4943Chakmael1618Greekeo1214 Esperantoru4689Russianes1280Spanishel7064Greekeo6348 Esperantoja3918Japanesesr3299Serbianccp3398Chakmabn100Banglachr5157Cherokeezh4755Chinesezh7724Chineseccp7750Chakmael1707Greekccp4604Chakmaen5191Englishsr7153Serbianiu4603 Inuktitutchr4470Cherokeefr2111Frenchbn709Banglael3929Greekja6470Japaneseru7905Russiantr5635Turkishbn3560Banglaiu5879 Inuktitutsr717Serbianiu5597 Inuktitutsr1229Serbiansr3359Serbianes1667Spanishsr3533Serbianccp8076Chakmaes3399Spanishbn1292Banglabn6487Banglazh5875Chinesesr232Serbianar8120Arabices571Spanishccp6458Chakmaen6982Englishfr4926Frenchru4021Russianth5400Thaizh4691Chinesebn7970Banglael4742Greekru214Russianes4466Spanishel1109Greekchr3730Cherokeeccp2200Chakmael2467Greekfr6663Frenchja6608Japaneseiu694 Inuktitutar3552Arabicen850Englishth7612Thaibn1428Banglachr6893Cherokeeel7608Greekeo715 Esperantoth7183Thairu4355Russianfr6666Frenchth1911Thaija6215Japaneseth7879Thairu7725Russianiu5760 Inuktitutfr4716Frenchru2740Russiansr152Serbianes7925Spanishtr4275Turkishru4377Russianccp3393Chakmaiu1372 Inuktitutiu1941 Inuktituttr2934Turkishen5029Englishar2313Arabicru3106Russianes4453Spanishja3991Japanesesr4334Serbianes7574Spanishsr7992Serbiansr370Serbianes4387Spanishja1992Japaneseen338Englishes5720Spanishja1425Japanesesr6667Serbianar6844Arabiciu1909 Inuktitutbn7273Banglaiu3736 Inuktitutchr135Cherokeezh5516Chineseiu5524 Inuktitutru2957Russianja8151Japanesezh3552Chinesechr101Cherokeeiu2384 Inuktitutel7781Greekzh5250Chineseru5013Russianru6068Russianbn5564Banglazh3184Chinesechr3822Cherokeeen5136Englishja7214Japanesechr372Cherokeeru5422Russianiu1787 Inuktitutja7015Japaneseth6810Thaisr3679Serbianchr6105Cherokeeccp6044Chakmaeo4639 Esperantoes2681Spanishel4234Greekfr1175Frenchchr6346Cherokeees1019Spanishes2134Spanishes3521Spanishen6055Englishen4619Englishiu5539 Inuktitutsr4258Serbiansr4257Serbianja8069Japaneseth7650Thaiccp7860Chakmasr3412Serbiansr2035Serbianfr6478Frenchja3619Japanesefr403Frencheo4491 Esperantoel1077Greekel4336Greekel5140Greekeo779 Esperantoja7319Japanesezh511Chineseccp442Chakmael5792Greekiu6986 Inuktitutsr2693Serbianth4358Thaith5928Thairu728Russianbn7945Banglatr3800Turkishtr1703Turkishen401Englishtr711Turkishel6406Greekar2775Arabiceo5429 Esperantoja2837Japaneseru2366Russianchr1989Cherokeebn6419Banglaes6892Spanishzh3636Chineseel8156Greeken2240Englishja6661Japaneseth1252Thaiel6280Greekccp5105Chakmafr5914Frenchel6711Greeksr3251Serbianth270Thaiel370Greektr6740Turkishel7344Greekiu4615 Inuktituten6433Englishar2190Arabicru6783Russiansr5467Serbianen4413Englishes3306Spanishth8163Thaizh3295Chinesetr3996Turkishfr3517Frenchccp5135Chakmatr4320Turkishfr4602Frenchru7007Russianchr3333Cherokeeen5711Englishen7101Englishes7933Spanishchr6702Cherokeeeo885 Esperantobn2470Banglaeo7768 Esperantotr4583Turkishchr69Cherokeeja6031Japaneseru7345Russianja3541Japanesebn7027Banglafr412Frenchar6749Arabiczh759Chinesesr6124Serbiansr1729Serbianar2652Arabicja294Japanesefr4572Frencheo4875 Esperantoru5662Russianchr1767Cherokeeth5763Thaiccp3710Chakmabn7096Banglaiu2706 Inuktitutth5213Thaiiu4865 Inuktitutru2423Russianfr173Frenchtr1989Turkishtr812Turkishzh3575Chinesefr3857Frenchja650Japanesechr634Cherokeeen6705Englishfr946Frenchiu3861 Inuktitutes7547Spanishsr4469Serbiantr6113Turkishzh6118Chineseru3274Russianeo5913 Esperantoiu3359 Inuktituteo1125 Esperantoel172Greeken5486Englishccp825Chakmaiu4561 Inuktitutccp7441Chakmaccp4553Chakmachr5778Cherokeees7015Spanishen4301Englishen4392Englishiu2214 Inuktitutar556Arabicfr1807Frenchja4329Japaneseja5413Japanesezh1122Chineseen61Englishsr6971Serbianth5799Thaiccp1136Chakmaen8066Englishes5486Spanishes2183Spanishel3Greektr3092Turkisheo4819 Esperantoeo8018 Esperantosr3694Serbianes7877Spanishel2143Greekja5406Japaneseeo2756 Esperantozh4993Chineseja1417Japanesezh3149Chineseeo7335 Esperantoth4251Thaiiu365 Inuktitutes559Spanishfr7479Frenchel7181Greekiu5490 Inuktitutfr1263Frenchsr1292Serbiansr1648Serbiansr1741Serbiantr1949Turkishzh2163Chinesetr5052Turkishbn4064Banglachr556Cherokeeja4291Japaneseel8041Greeksr6710Serbianth3033Thaieo4838 Esperantoiu2661 Inuktitutiu6071 Inuktitutth2599Thaichr7549Cherokeetr4917Turkishiu712 Inuktitutzh4638Chineseeo5608 Esperantobn3561Banglaen1336Englishccp3452Chakmasr4268Serbiantr876Turkishel1474Greekeo3028 Esperantobn6647Banglasr6843Serbianth4301Thaieo7397 Esperantoth2139Thaibn7820Banglath5321Thaichr7425Cherokeebn5854Banglaeo1609 Esperantotr4994Turkishru8156Russianzh7405Chineseiu3675 Inuktitutar3263Arabicth2249Thaifr1089Frenchsr1857Serbianar6543Arabicja546Japanesetr4903Turkishja4710Japanesesr5958Serbianiu7982 Inuktitutel7799Greeken3099Englishru2443Russiantr3900Turkishbn6067Banglatr1648Turkishen2996Englisheo2958 Esperantoes7506Spanishel6306Greekiu5025 Inuktitutja6050Japanesefr1170Frenchsr262Serbiantr6555Turkishth6057Thaith6583Thaiar2513Arabicru5374Russiansr1228Serbiansr6063Serbianth4483Thaitr7554Turkishar7156Arabictr2933Turkishen5451Englishbn5065Banglael5694Greekja5338Japaneseiu6254 Inuktitutja3885Japanesebn4557Banglasr7466Serbianccp6873Chakmaen7249Englishja1168Japaneseth289Thaichr585Cherokeeth5736Thaith2175Thaiccp3784Chakmaja3376Japaneseth5322Thaith3808Thaisr1881Serbianbn3348Banglath1614Thaiccp6712Chakmachr1962Cherokeechr1252Cherokeeiu4736 Inuktitutsr1488Serbianccp3303Chakmaru2913Russianja5152Japaneseel1024Greekru1475Russianchr902Cherokeear5696Arabicru6847Russianeo7936 Esperantoen6230Englishsr1056Serbianar8118Arabicen2860Englishbn2854Banglael5215Greekja2102Japanesezh7073Chineseru2225Russianar7682Arabicccp5690Chakmaen1275Englishen3469Englishes3660Spanishth3458Thaitr2445Turkisheo3754 Esperantoes448Spanishbn4988Banglabn5331Banglaccp1223Chakmachr6061Cherokeefr3014Frenchbn1220Banglabn3131Banglabn3804Banglaen2072Englishsr1982Serbianel197Greekja4547Japanesebn81Banglaja2918Japaneseel2347Greektr4230Turkishru5668Russianzh962Chineseen6882Englishtr2998Turkishen977Englishel3619Greekfr3826Frenchth5485Thaifr1478Frenchar328Arabiczh6181Chineseccp6290Chakmaiu4172 Inuktitutsr578Serbianja1087Japanesear1168Arabicru7125Russianel3517Greekar332Arabicccp3290Chakmaar7793Arabicccp5479Chakmaeo1805 Esperantofr1823Frenchiu6906 Inuktitutbn7050Banglaiu4067 Inuktitutchr992Cherokeechr7167Cherokeeru5525Russiansr655Serbiansr4914Serbianel330Greektr2750Turkishen2171Englishes810Spanishja7188Japaneseth4622Thaien5679Englishzh4557Chinesees2583Spanishes7873Spanisheo3656 Esperantoiu2904 Inuktitutsr168Serbiansr4297Serbiansr769Serbianbn1640Banglaar7692Arabictr6522Turkishar3664Arabicel3204Greekar7218Arabicel4399Greekes3233Spanishja285Japaneseen381Englishtr7637Turkishar3393Arabicen5443Englishes1655Spanishbn7773Banglaccp1088Chakmasr57Serbianbn7781Banglafr2794Frenchru7841Russiantr24Turkishchr5683Cherokeeen2875Englishbn2316Banglaen2451Englishja1920Japanesebn4828Banglaen1611Englishru3686Russianccp4125Chakmael751Greekchr1867Cherokeezh231Chineseeo2997 Esperantozh1211Chinesear7486Arabicja1854Japanesebn2866Banglazh1184Chinesechr5626Cherokeetr2748Turkishes606Spanisheo7539 Esperantoth3655Thaies891Spanishtr6371Turkishzh5694Chinesebn4653Banglaeo637 Esperantoen81Englishen2004Englishzh1158Chineseel2534Greeken1094Englisheo1007 Esperantoiu6512 Inuktituttr2959Turkishen1463Englishru1742Russianel6173Greekeo1695 Esperantoar6069Arabicen4118Englishiu3865 Inuktituttr3415Turkishfr7087Frenchja726Japanesear6348Arabicth4336Thaifr8185Frenchtr2693Turkishth178Thaiccp4633Chakmaja451Japanesezh7401Chineseel1425Greekru2499Russianbn225Banglabn7967Banglaja4652Japaneseru5776Russianzh1432Chinesear1447Arabicbn3073Banglath7682Thairu6907Russianbn1705Banglaes8027Spanishsr2027Serbianen4403Englishru6632Russianru332Russianth2219Thaitr5325Turkishzh8105Chineseel1562Greekja1101Japanesees6814Spanishiu5363 Inuktitutiu3144 Inuktitutru3604Russianccp6188Chakmath7994Thaitr1755Turkishes1111Spanishes2332Spanishen6420Englishes6816Spanishja2107Japaneseja2427Japanesesr5651Serbianth6359Thaizh2618Chinesezh7667Chinesetr1941Turkishja6171Japaneseen741Englishiu472 Inuktitutbn6100Banglazh8117Chineseccp1919Chakmael709Greekchr6980Cherokeefr7373Frenchtr2251Turkishzh4157Chinesear1834Arabiceo5179 Esperantoth8165Thaija2298Japaneseru4634Russianzh2381Chinesees19Spanishbn5853Banglachr243Cherokeeccp432Chakmaes3248Spanishfr7003Frenchtr3505Turkishar2091Arabiciu465 Inuktitutth4720Thaith6859Thaizh7904Chineseeo5569 Esperantosr2509Serbiantr5968Turkishtr6804Turkishel461Greekru7420Russiantr6826Turkishchr3450Cherokeeen3030Englishtr2730Turkishchr7786Cherokeeja3054Japanesetr5059Turkishja1033Japaneseru5419Russianchr5063Cherokeeeo2859 Esperantoeo2865 Esperantofr5036Frenchar5933Arabiciu6513 Inuktitutfr2390Frenchja7654Japanesechr524Cherokeeiu3250 Inuktitutel3072Greekccp708Chakmaar3814Arabicth2448Thairu812Russianru6446Russianen1876Englishja5761Japanesezh7174Chinesebn6819Banglasr1853Serbiantr2016Turkisheo4227 Esperantoeo5507 Esperantoar2155Arabicru7187Russianchr204Cherokeeth3419Thairu3378Russianth590Thaija1286Japaneseeo4421 Esperantoar7066Arabicfr4583Frenchel4638Greekzh7345Chinesebn3976Banglaeo33 Esperantobn311Banglaru3508Russiantr1719Turkishtr2608Turkishel6134Greekru6669Russianchr853Cherokeeccp3613Chakmaar1618Arabicchr389Cherokeesr868Serbiantr1497Turkishfr4146Frenchccp5288Chakmabn7307Banglaar1513Arabicbn7195Banglaes4873Spanishccp1089Chakmafr5102Frenchar6564Arabicja7485Japanesear4994Arabicel7080Greeken7260Englishru3684Russianchr771Cherokeeth1013Thaizh1816Chinesezh2305Chineseja7980Japaneseccp569Chakmachr1274Cherokeeth7646Thaiccp1614Chakmaccp3649Chakmaccp2590Chakmabn3027Banglabn5400Banglaeo4113 Esperantoja5608Japanesear37Arabicen2236Englishchr2118Cherokeeel2104Greekes4878Spanishfr2992Frenches7670Spanishbn7306Banglasr3265Serbiantr3392Turkishru3213Russiantr4129Turkishru1516Russianccp2024Chakmaar5609Arabicchr5650Cherokeeel4692Greekth6485Thaitr1081Turkishchr1080Cherokeechr3669Cherokeezh5200Chineseel1068Greekel3978Greekfr4387Frenchfr120Frenchel3469Greekru2712Russianiu4954 Inuktituteo1924 Esperantoes6391Spanishtr3719Turkishja6742Japanesezh2978Chineseccp8124Chakmaen1456Englishiu5297 Inuktitutes5155Spanishsr8184Serbianth6908Thaiccp1118Chakmaru5149Russianel2254Greekes3621Spanishar5178Arabicbn6850Banglachr6126Cherokeear7445Arabices8176Spanisheo5346 Esperantobn765Banglath4898Thaies1733Spanishbn7759Banglaes4831Spanishfr2417Frenchiu7786 Inuktituttr2176Turkishar2264Arabiczh5178Chineseeo4477 Esperantoes8102Spanishfr7414Frenchchr4978Cherokeeth1806Thaiar5948Arabiceo1929 Esperantoja7265Japanesesr4191Serbianth2306Thaizh3294Chineseiu6530 Inuktituteo5580 Esperantoiu6882 Inuktitutja6704Japaneseen4879Englishen2444Englishsr4545Serbianru1638Russianeo7085 Esperantoth2499Thaiiu7055 Inuktitutsr1060Serbianja3071Japanesetr5019Turkishen5280Englishbn3517Banglabn5003Banglaes6448Spanishes7033Spanishja3707Japaneseru1616Russiantr8078Turkishbn1430Banglaja632Japanesefr309Frenchth2949Thaien1797Englishes47Spanishja1299Japanesear1550Arabicsr4687Serbianiu383 Inuktitutbn4743Banglazh1719Chinesetr5953Turkishru2645Russianar2493Arabicbn7994Banglaen3515Englishel1642Greeksr930Serbianccp7654Chakmaeo4000 Esperantoja4200Japanesefr3955Frenchfr3663Frencheo1847 Esperantoth6953Thaifr5159Frenchtr4378Turkisheo5825 Esperantoar3343Arabices2355Spanishiu4468 Inuktitutfr199Frencheo3261 Esperantotr8046Turkishja2230Japanesees4580Spanishar3932Arabictr6992Turkishtr1279Turkishccp4548Chakmael4713Greekccp4763Chakmaeo1508 Esperantoeo3760 Esperantoru2899Russianja2395Japaneseccp4395Chakmaru8179Russianes1723Spanishbn1131Banglaccp913Chakmaes5490Spanishja552Japanesezh4123Chinesebn3393Banglaes3129Spanishsr6043Serbianccp2087Chakmaes7525Spanishja5085Japanesezh63Chineseth5695Thaibn3812Banglaes5780Spanishtr7962Turkishzh456Chineseiu4598 Inuktitutar7807Arabicen7593Englishar3813Arabices1500Spanishes6473Spanishes6822Spanishfr5138Frenchfr1409Frenchja5076Japanesees1891Spanishbn4641Banglaes2066Spanishzh2774Chinesear5309Arabictr2365Turkishel1022Greekes2471Spanishja3304Japaneseru5005Russianccp5821Chakmath6889Thaizh1356Chineseen5540Englishru610Russianth2635Thaitr6081Turkishru2658Russianzh4669Chineseru4288Russianzh4423Chinesees813Spanishchr3764Cherokeechr7331Cherokeeccp7717Chakmachr3996Cherokeeiu2238 Inuktitutiu2826 Inuktitutar3521Arabices1929Spanisheo22 Esperantoel2153Greekiu95 Inuktitutth3078Thaieo7919 Esperantobn5556Banglatr1467Turkishiu4220 Inuktitutru1421Russianiu2961 Inuktitutja1694Japanesebn1552Banglaeo397 Esperantoeo7843 Esperantotr1594Turkishccp5570Chakmasr7949Serbianchr1797Cherokeeccp7030Chakmaccp1293Chakmaeo1011 Esperantoja7061Japanesesr3468Serbianfr6291Frenchar7739Arabicchr5700Cherokeetr6101Turkishru5630Russianel695Greekiu7330 Inuktitutes826Spanishfr2858Frencheo6827 Esperantofr3000Frenches1773Spanishar6644Arabicja5400Japanesear4635Arabiczh6206Chinesefr39Frenchccp3918Chakmael4420Greekeo6660 Esperantoen1563Englishth415Thaifr2636Frenchchr5183Cherokeeel2229Greekiu5522 Inuktitutar4303Arabicar1918Arabiciu1534 Inuktitutiu333 Inuktitutzh3494Chinesechr5486Cherokeefr5003Frenchru3618Russianen3513Englishen1621Englishja3282Japaneseen276Englishes400Spanishfr2230Frenchel472Greekel1165Greektr3357Turkishchr1095Cherokeefr6113Frenchzh2552Chinesebn4203Banglath8138Thaitr3333Turkishbn7734Banglaccp1304Chakmaeo1862 Esperantozh6341Chinesear3782Arabiceo3054 Esperantotr698Turkishchr6466Cherokeebn4661Banglaeo5645 Esperantoar2983Arabictr6547Turkishccp5255Chakmaes5189Spanishccp8102Chakmaar7876Arabicel773Greekel4000Greekchr7776Cherokeeccp4084Chakmaiu928 Inuktitutth4343Thaichr4676Cherokeetr4310Turkishfr131Frenchchr6653Cherokeees2470Spanishchr4210Cherokeechr7020Cherokeefr5306Frenchru1797Russiansr5196Serbiansr3198Serbianiu6949 Inuktitutbn4814Banglazh7705Chineseja5675Japanesechr8095Cherokeetr4618Turkishar6506Arabiceo2391 Esperantoeo3808 Esperantoccp1700Chakmaru8036Russianth2676Thaitr254Turkishsr3805Serbianeo5532 Esperantoccp7912Chakmaen4775Englishtr2589Turkishfr7405Frenchsr3320Serbianen4029Englishtr279Turkishzh226Chinesechr1452Cherokeechr5792Cherokeees6361Spanishth4855Thaitr1714Turkishccp5610Chakmafr4557Frenchel790Greekfr5915Frenchen5271Englishbn6345Banglaccp5106Chakmaccp838Chakmaru6984Russianeo4234 Esperantoru7963Russianja4756Japanesechr6280Cherokeetr7116Turkishja6507Japanesear1638Arabicar3909Arabicel2522Greeken1422Englishel5526Greekar2273Arabicen6089Englishel4673Greektr4424Turkishzh6097Chinesear2783Arabictr3091Turkishel4133Greekth5944Thaiar707Arabiceo6516 Esperantoen3441Englishar4621Arabicbn8167Banglazh530Chinesezh6394Chinesear8182Arabicel3798Greekeo2839 Esperantofr1494Frenchccp4766Chakmaru3015Russianen5162Englishiu7160 Inuktitutar5800Arabiciu4014 Inuktitutel2092Greekja187Japaneseiu1676 Inuktitutsr6870Serbiantr4465Turkishchr3178Cherokeechr5337Cherokeeiu7920 Inuktituten4847Englishfr4852Frenchccp4789Chakmachr7516Cherokeezh756Chineseel4445Greeken2887Englisheo5706 Esperantosr620Serbianth3472Thaija4339Japanesebn2981Banglaes4142Spanishbn361Banglaiu3706 Inuktitutru6851Russianzh7926Chinesees2844Spanishchr7274Cherokeeiu209 Inuktituten1657Englishtr7165Turkishiu6444 Inuktitutsr499Serbianen5492Englisheo4065 Esperantoiu3458 Inuktituteo5485 Esperantoiu3807 Inuktituttr7863Turkishen5477Englishes7487Spanishchr2171Cherokeefr868Frenchiu2575 Inuktitutsr2700Serbiantr2293Turkishbn2231Banglaen5409Englishfr1954Frenchar744Arabictr1021Turkisheo2298 Esperantotr7997Turkishtr5212Turkishar6918Arabicccp283Chakmaen2865Englishsr3964Serbianbn679Banglath5386Thaien3064Englishel6807Greekiu2258 Inuktituttr2558Turkishth3833Thaiar5974Arabicel1349Greekbn7798Banglaru4479Russianccp4409Chakmaru315Russianru2402Russianeo3212 Esperantoja4515Japaneseccp2352Chakmaeo665 Esperantoiu4097 Inuktitutccp1633Chakmaiu290 Inuktituttr4940Turkishen4229Englishel3570Greekbn218Banglael2720Greeken5056Englisheo1836 Esperantoiu225 Inuktitutth5831Thaith8105Thaija8078Japanesetr7552Turkishiu1921 Inuktitutbn6270Banglachr1089Cherokeechr6265Cherokeees7367Spanishchr1341Cherokeesr2442Serbiantr7937Turkishfr6333Frenchel3782Greekru6538Russiansr5287Serbianel3681Greekar1631Arabicru2217Russiansr967Serbianiu4692 Inuktitutzh4115Chineseccp3015Chakmafr1596Frenchar2149Arabicbn7556Banglachr2815Cherokeefr7125Frenchja4347Japaneseja3453Japanesesr3810Serbianja7713Japanesear7187Arabiczh1107Chineseel5303Greekel2167Greekel2653Greekes2833Spanisheo4146 Esperantochr5003Cherokeesr959Serbiansr4757Serbianes2380Spanishja1309Japanesebn1546Banglaar5779Arabicru7477Russianbn6572Banglaar1922Arabicbn2859Banglaen7310Englishiu3750 Inuktitutru6813Russianzh6775Chinesear8047Arabicen1080Englishzh7796Chinesezh7493Chinesesr3633Serbianiu289 Inuktituten3386Englishiu1900 Inuktitutchr38Cherokeeiu3125 Inuktitutar7215Arabicfr2946Frenchzh6523Chinesetr6737Turkishar1977Arabiciu6286 Inuktituttr534Turkishfr4609Frenchzh5360Chinesesr332Serbiantr7326Turkishja986Japaneseeo4414 Esperantobn8100Banglasr4301Serbianbn3581Banglaar6704Arabicru5312Russianeo4732 Esperantotr4124Turkishccp4249Chakmasr3488Serbianja6674Japanesebn131Banglazh1520Chinesear5084Arabicth5411Thaith2092Thaies6730Spanishbn4610Banglabn4082Banglafr6572Frenchel4107Greekccp638Chakmaja2084Japaneseru336Russianzh3408Chinesear1311Arabicel5882Greektr3884Turkishru3826Russianfr6665Frenchchr3147Cherokeeth7287Thaiccp2528Chakmaeo2152 Esperantofr5137Frenchsr5820Serbianth5809Thaiiu425 Inuktitutzh1635Chineseru5858Russianar7163Arabicchr978Cherokeechr7373Cherokeeeo2331 Esperantosr1298Serbianiu8173 Inuktitutccp4670Chakmafr1019Frenches4717Spanishen717Englishchr1134Cherokeeeo1830 Esperantoja6365Japaneseiu2702 Inuktitutel3797Greeken8174Englishru3605Russianth7813Thaizh2538Chineseth3842Thaieo28 Esperantoccp735Chakmaja6304Japanesechr4754Cherokeees2129Spanishchr5507Cherokeesr7512Serbianja1740Japaneseth5767Thaibn2276Banglaeo4741 Esperantobn7580Banglazh1535Chineseen2227Englishes4520Spanishccp3548Chakmaes3033Spanishar5473Arabicchr3111Cherokeeja1073Japanesetr4153Turkishiu4413 Inuktitutccp5104Chakmaen3923Englishccp6005Chakmaes6710Spanishru1766Russianth7018Thaitr7070Turkishen6897Englishchr4482Cherokeefr7551Frencheo3320 Esperantoru7021Russianru695Russianccp5858Chakmaar2955Arabicsr3144Serbianel7645Greekes6614Spanishccp3402Chakmabn3534Banglabn6083Banglatr5545Turkishes5617Spanishar648Arabiczh7513Chinesesr5574Serbianccp1133Chakmaes2012Spanishchr871Cherokeeel3086Greekel7494Greekiu4973 Inuktitutja7531Japaneseccp6364Chakmatr1504Turkishfr1805Frenchchr2778Cherokeeen5069Englishccp5525Chakmaes7196Spanishfr415Frenchbn1243Banglazh4666Chinesechr1915Cherokeeen5238Englishzh3953Chineseiu4076 Inuktitutes4713Spanishiu4816 Inuktitutja1773Japaneseccp5405Chakmaiu1494 Inuktitutzh3019Chinesesr354Serbianth7274Thaifr6307Frenchja913Japaneseru791Russianeo4786 Esperantoth3739Thaiccp3570Chakmaen1247Englishiu3428 Inuktitutes2106Spanishja7253Japaneseel3075Greekiu6178 Inuktitutru689Russianar5094Arabicchr465Cherokeeel6034Greektr3371Turkishth4289Thaija445Japaneseccp983Chakmaru1319Russianar1446Arabicar3619Arabicar506Arabicth4637Thaitr1051Turkishzh7321Chinesesr3114Serbiansr7728Serbianfr508Frenchzh5877Chinesear2969Arabicel7513Greekru3350Russianja830Japanesesr4514Serbiantr2744Turkisheo3014 Esperantozh917Chinesebn1886Banglaes57Spanishes1533Spanishsr677Serbianbn2253Banglachr3320Cherokeeen6329Englishth3897Thaies6799Spanishzh442Chinesezh4430Chineseth1187Thaiccp1276Chakmaiu6232 Inuktitutbn2044Banglafr1981Frenches6529Spanisheo2054 Esperantoar83Arabicth5694Thaieo4803 Esperantotr4843Turkishfr4507Frenchiu2874 Inuktitutru3742Russianeo2145 Esperantobn1590Banglabn6791Banglaja2806Japaneseja5423Japanesetr4260Turkishru2990Russianru4057Russianes7477Spanishfr1750Frenchiu8045 Inuktituttr6873Turkishzh2351Chinesebn3267Banglaccp5403Chakmafr7058Frenchiu3585 Inuktituttr7732Turkishar5357Arabicru1938Russianth1155Thaiccp1093Chakmaru7078Russianar6428Arabicccp6893Chakmachr2856Cherokeechr4507Cherokeeru5091Russianru7479Russianchr475Cherokeeccp801Chakmazh1270Chineseeo3011 Esperantoja4337Japaneseiu4492 Inuktituteo1490 Esperantoen4698Englishes5637Spanishccp1801Chakmafr1943Frenchccp1707Chakmaeo2153 Esperantoccp3223Chakmazh2158Chineseel7429Greekes2211Spanishes337Spanishru4703Russianru7227Russianzh2087Chineseen1687Englishen2670Englishsr1264Serbianbn4499Banglaar1452Arabicth5081Thaiiu3664 Inuktitutchr1927Cherokeeen626Englishzh3356Chinesebn8170Banglazh5781Chineseiu6741 Inuktituttr7415Turkishfr239Frenchel3203Greeksr850Serbiansr743Serbianar7789Arabiceo821 Esperantoccp4000Chakmatr273Turkishbn4182Banglazh5441Chineseccp603Chakmaccp6020Chakmaccp3361Chakmazh6030Chineseth5486Thaiiu8127 Inuktituttr559Turkishsr1864Serbianccp5800Chakmafr1990Frenchchr2288Cherokeeth989Thaien2933Englishel4722Greekeo7086 Esperantotr1452Turkishar16Arabices1362Spanishiu1824 Inuktitutzh3913Chineseel3389Greekel2975Greektr905Turkishth2625Thaifr3388Frenches645Spanishar1128Arabicsr3302Serbianccp7130Chakmaen7140Englishes1063Spanishth4114Thaiccp4159Chakmasr5766Serbianel2320Greekru4464Russianen565Englishchr2164Cherokeeru3365Russianfr728Frencheo5637 Esperantoth1941Thairu8183Russianel1016Greekchr4541Cherokeeeo6155 Esperantoen2925Englishth6955Thaizh4072Chinesebn6162Banglazh5150Chinesebn7177Banglachr1111Cherokeechr3985Cherokeebn5241Banglachr6317Cherokeees738Spanishsr3707Serbianen2551Englishth5921Thaiel1161Greekar7749Arabiczh4309Chinesebn194Banglaes878Spanishes1010Spanishzh5274Chineseiu1086 Inuktituten4279Englisheo963 Esperantozh5591Chinesesr2873Serbianchr1795Cherokeesr1167Serbianen639Englishzh557Chineseel619Greekccp1952Chakmatr8064Turkishccp3028Chakmafr3347Frenchth3736Thaith7454Thaizh4772Chineseiu5665 Inuktituten2520Englishzh5844Chineseru8105Russianja4081Japaneseru3561Russianzh3738Chinesebn968Banglatr2710Turkisheo7583 Esperantoel1448Greekeo4831 Esperantochr129Cherokeeccp1134Chakmatr5881Turkishccp455Chakmaeo6565 Esperantoru5529Russianbn2676Banglael3865Greekru4269Russianen1314Englishzh1359Chinesear5898Arabiciu7049 Inuktitutes419Spanishen4843Englishar7625Arabiciu8153 Inuktitutsr3523Serbianru8132Russianzh548Chineseccp1605Chakmaen7011Englishchr7628Cherokeeel728Greekzh1768Chineseeo6787 Esperantosr3658Serbianfr2568Frenchccp3388Chakmasr2260Serbianja2359Japaneseen1416Englishccp1386Chakmaru1498Russianbn7153Banglaiu3156 Inuktituten320Englishsr6714Serbianen7283Englishel1058Greekiu461 Inuktitutja6310Japaneseja366Japanesear7744Arabicsr1526Serbianccp6801Chakmabn3589Banglachr1455Cherokeeeo3198 Esperantobn4055Banglaen1675Englishsr5812Serbiantr1003Turkishtr6593Turkishbn6465Banglasr682Serbianar4095Arabicchr6699Cherokeeen2736Englishen715Englishes581Spanishsr3055Serbianccp1210Chakmaar6712Arabiciu6726 Inuktitutiu1996 Inuktitutbn6922Banglafr3686Frenchth1310Thaieo6794 Esperantozh1399Chineseru2888Russianeo5190 Esperantoiu1802 Inuktitutel7561Greekth8007Thaiel5578Greeken7592Englishja7172Japanesefr2282Frenchja7505Japaneseja8156Japaneseja6406Japaneseen5788Englishbn1166Banglael4812Greekccp319Chakmaiu4832 Inuktitutes483Spanishar7808Arabiciu2159 Inuktitutfr7144Frenches4092Spanishru1168Russianccp4731Chakmaja4795Japanesesr4410Serbianen1986Englishel7735Greekru2081Russianar2822Arabicru7082Russianes5256Spanishel3752Greekja3228Japanesezh1817Chineseel799Greekfr5799Frenchtr1877Turkishes5644Spanishtr2158Turkishes3372Spanishth2443Thaichr2988Cherokeetr7778Turkishar1500Arabicccp4691Chakmaru3410Russianbn6883Banglaru2163Russianja4587Japaneseja2320Japaneseeo6164 Esperantoes6587Spanishiu7713 Inuktitutiu6407 Inuktitutbn4564Banglaru3802Russianbn287Banglaeo6500 Esperantochr5311Cherokeesr2961Serbianar624Arabices4703Spanishel7941Greekth5564Thaitr8144Turkishja4929Japaneseel5120Greektr7617Turkishbn6732Banglaiu4421 Inuktituteo414 Esperantoru2182Russianchr6605Cherokeeth962Thaien5578Englishbn5878Banglael881Greekel2646Greekeo7676 Esperantoel3497Greekes2732Spanishbn1263Banglazh431Chinesebn4370Banglachr7187Cherokeear7053Arabicccp4856Chakmafr6110Frenchar3625Arabiceo3858 Esperantoel1292Greeksr7824Serbianiu213 Inuktitutchr7662Cherokeesr7311Serbianen3059Englishchr2361Cherokeeen7723Englishes6635Spanishzh6265Chinesetr875Turkishzh830Chineseiu6229 Inuktitutsr1896Serbiansr2368Serbianiu7908 Inuktituten5968Englishbn4702Banglaja682Japaneseccp4217Chakmaja512Japanesezh6815Chineseru4236Russianru5649Russianja3383Japaneseja7370Japaneseen5012Englishsr6212Serbianel1403Greekiu8179 Inuktitutja3886Japanesechr4988Cherokeeru1969Russiansr1844Serbianen7881Englishes1872Spanishiu3439 Inuktituttr2805Turkishtr7089Turkishfr6533Frenchar8176Arabicchr1194Cherokeetr4322Turkishes1047Spanishbn7211Banglaccp6338Chakmaru5256Russianth4351Thaien7135Englishccp5998Chakmaeo1623 Esperantoeo2678 Esperantoeo4218 Esperantoes2972Spanishar6708Arabiciu439 Inuktitutru7269Russianel6091Greekja6371Japanesetr5033Turkishzh615Chinesees224Spanishen4850Englishar754Arabicfr5161Frenchen787Englishfr771Frenchfr4060Frenchar7052Arabiczh7339Chineseel4527Greekeo2488 Esperantobn2308Banglath6960Thaiar7120Arabicccp2270Chakmachr343Cherokeear5356Arabicar3786Arabicru6878Russianchr4970Cherokeezh3106Chinesechr5178Cherokeeen4395Englishfr3974Frenchel6481Greekiu6647 Inuktitutel6364Greekja8055Japaneseccp5671Chakmaccp521Chakmaes7152Spanishel2924Greekbn4547Banglath7006Thaiccp2459Chakmasr3090Serbianchr2631Cherokeebn8009Banglachr4632Cherokeeen2556Englisheo2321 Esperantoth5202Thaitr7302Turkishbn2768Banglasr8167Serbianar2353Arabiceo1716 Esperantoru276Russianes8169Spanishbn6623Banglaccp1221Chakmaar1383Arabicbn1325Banglath7439Thaiccp3431Chakmatr1506Turkishel5221Greekja6892Japaneseen6757Englisheo6289 Esperantoru4657Russianja1269Japanesesr6842Serbianth5755Thaiiu5388 Inuktitutru287Russianel4191Greekru7317Russiantr2399Turkishes2543Spanishfr6103Frenchbn1653Banglabn323Banglazh1030Chinesebn6059Banglaiu5723 Inuktitutja4727Japaneseru4281Russiansr5576Serbianbn2830Banglaccp1825Chakmath936Thaith1128Thaiar4872Arabicccp478Chakmaccp4932Chakmaen3123Englishzh5861Chinesezh1566Chinesetr4358Turkishen2333Englishiu2293 Inuktitutja265Japaneseru861Russianfr8089Frenchccp5289Chakmazh6816Chinesebn708Banglael4492Greekeo1733 Esperantoar1993Arabicbn2348Banglafr4669Frenchsr629Serbianth2372Thaitr814Turkishtr4341Turkishfr4039Frenchzh5749Chinesesr7633Serbiantr6212Turkishth6399Thaiccp3307Chakmath3195Thaiiu3567 Inuktitutja4624Japaneseru7828Russianes6917Spanishel1104Greekfr496Frencheo7435 Esperantoeo5326 Esperantozh2085Chinesebn8041Banglaiu1884 Inuktitutchr5688Cherokeeiu6731 Inuktitutja2697Japaneseeo332 Esperantoru1882Russianccp4715Chakmabn4390Banglaen6870Englishen4289Englishes2601Spanishsr714Serbianen3920Englishes4495Spanishiu5648 Inuktitutar1403Arabicru7497Russianbn6386Banglaccp6129Chakmaar2591Arabicar1013Arabicja4009Japaneseja5850Japanesechr3975Cherokeeru2195Russianfr7639Frenchiu3570 Inuktitutiu8156 Inuktitutel7733Greekiu811 Inuktitutiu8037 Inuktituttr8081Turkishes752Spanishtr1313Turkisheo7358 Esperantotr663Turkishiu963 Inuktitutja3852Japaneseth763Thaisr4810Serbianar7201Arabicth3872Thaieo2178 Esperantoth517Thaiar6152Arabicen1969Englishccp87Chakmafr1526Frenchth5188Thairu3270Russiansr6136Serbianel4226Greekzh4832Chinesezh5170Chinesechr314Cherokeefr8004Frenchccp5148Chakmaccp8000Chakmasr6653Serbianbn5847Banglaen2798Englishzh4130Chineseen5147Englishccp5323Chakmath7566Thaibn8047Banglaccp1365Chakmasr6972Serbianbn4088Banglaes3781Spanishsr3787Serbianchr3473Cherokeechr3216Cherokeezh7968Chineseja6594Japanesezh5989Chineseccp7782Chakmaeo3304 Esperantoru6080Russianzh4725Chinesetr1141Turkishth5118Thaiel5513Greektr1182Turkishar6078Arabicja7886Japaneseru3636Russiantr3355Turkishar3774Arabicja7030Japanesesr5302Serbianen4329Englishel7237Greekfr3269Frenchiu2436 Inuktituten5184Englishth4062Thaibn5419Banglaeo4605 Esperantochr3556Cherokeeru4167Russianru6623Russianar6421Arabices4366Spanishsr389Serbianth3420Thaifr281Frenchja6826Japanesezh1528Chineseth5071Thaiiu7753 Inuktitutth530Thaiar2962Arabicru978Russianbn82Banglachr2283Cherokeechr3559Cherokeeen2251Englishru6437Russianen1173Englishth1443Thaiel5351Greeksr6068Serbianbn1673Banglaru5954Russianfr6132Frenchel1246Greekar208Arabicccp4947Chakmachr6488Cherokeeru4836Russianel639Greekeo5616 Esperantozh908Chineseeo8005 Esperantofr1187Frenchccp1941Chakmaen5099Englishru1041Russianccp6124Chakmatr4659Turkisheo7211 Esperantoel3737Greekfr938Frenchfr7433Frenchbn4333Banglazh4547Chinesebn2814Banglaru6856Russianes4905Spanishiu22 Inuktitutzh6296Chinesesr3281Serbianes6173Spanishru1265Russianbn984Banglaiu5038 Inuktitutru7049Russianeo2783 Esperantoiu2882 Inuktituteo5051 Esperantosr744Serbiansr5849Serbianen1150Englisheo4347 Esperantoes4415Spanishbn1230Banglael3625Greekes7792Spanishfr7588Frenches3991Spanishchr3952Cherokeeth1064Thaitr4988Turkishccp3353Chakmatr6559Turkishes4199Spanishchr6089Cherokeeth2437Thaith2773Thaiccp3047Chakmaccp3931Chakmasr4951Serbianja402Japanesesr7314Serbianchr2094Cherokeeen7788Englishes74Spanisheo6601 Esperantobn676Banglasr138Serbianchr2939Cherokeear5765Arabicja1557Japanesefr3373Frenchja5568Japaneseth8170Thaizh443Chinesear3111Arabicfr186Frenchja258Japaneseru4290Russiantr7390Turkisheo686 Esperantozh5297Chinesechr268Cherokeeccp4261Chakmaiu3105 Inuktitutccp8180Chakmaja4737Japaneseth2394Thaiccp6692Chakmath6143Thaiccp5552Chakmasr2766Serbianes2209Spanishzh586Chineseen2963Englisheo3504 Esperantoen6891Englishen6946Englishzh3830Chineseccp4414Chakmaiu6719 Inuktituteo3254 Esperantoeo135 Esperantoes541Spanishfr1698Frenchiu2916 Inuktitutfr5822Frenchru7492Russianccp1241Chakmaar6613Arabiceo2970 Esperantosr7081Serbianru644Russiantr742Turkishbn4081Banglaja2548Japaneseccp7364Chakmabn5539Banglazh1880Chineseccp1424Chakmaeo5217 Esperantoccp2318Chakmaccp6715Chakmachr6031Cherokeeru4184Russianth2691Thaisr3775Serbianiu4348 Inuktitutth27Thaith5507Thaiel8144Greekes1955Spanishbn2472Banglatr396Turkishtr5928Turkishccp7529Chakmachr4922Cherokeeen1684Englisheo4379 Esperantoccp897Chakmaes3506Spanishth5480Thaifr3311Frenchen4993Englishel2405Greekel2052Greekes2321Spanishccp3375Chakmaen2907Englisheo2905 Esperantoel3902Greekes7979Spanishru5056Russianchr4064Cherokeebn6090Banglaeo4914 Esperantoth4457Thaichr283Cherokeeru6479Russianchr7027Cherokeeccp1172Chakmaar3695Arabicth322Thaiel3554Greekth4512Thaiel5144Greekfr3473Frenchfr4450Frenches7760Spanishzh1164Chinesear6923Arabicbn6113Banglaar6841Arabicth7558Thaija4970Japanesetr5941Turkishsr1263Serbianccp4702Chakmachr7984Cherokeeeo7073 Esperantofr6189Frenchfr2616Frenchfr6254Frenchbn3175Banglachr736Cherokeefr479Frenchzh7963Chinesear7587Arabicbn2115Banglaar4983Arabicsr132Serbianchr6889Cherokeeen5883Englishiu7034 Inuktituten6760Englishiu1971 Inuktitutth6884Thairu6560Russianar1280Arabicfr3646Frenchth300Thaith3015Thaija7133Japanesetr6629Turkishchr3578Cherokeeel7555Greekth6636Thaisr5027Serbianth2244Thaiel7787Greekchr7205Cherokeefr3038Frenchru6019Russianeo6007 Esperantoen4447Englisheo5960 Esperantozh2138Chinesebn6389Banglachr7640Cherokeeeo6352 Esperantoja3993Japaneseru652Russianccp3643Chakmaiu7867 Inuktitutbn8048Banglaccp8149Chakmachr996Cherokeeja1970Japanesefr4154Frenchchr7753Cherokeeen2513Englishiu4606 Inuktitutru6553Russianbn3140Banglachr2664Cherokeebn4601Banglaeo7561 Esperantoru5675Russiansr7210Serbianzh6819Chineseja3753Japanesechr435Cherokeeel3590Greekes197Spanishzh5421Chineseccp717Chakmaja3574Japaneseen161Englishel6312Greekchr2804Cherokeeen6338Englishja921Japanesees1521Spanishar6660Arabicchr4540Cherokeeen75Englishbn2563Banglaccp1384Chakmaeo7686 Esperantoen1407Englishen7943Englishes3238Spanishsr7790Serbianel2300Greeken7002Englisheo978 Esperantoeo3828 Esperantoccp6713Chakmafr3868Frenchsr1089Serbianfr7832Frenchtr4528Turkishja5819Japanesetr2073Turkishen6949Englishtr7564Turkishth2579Thaiar5177Arabictr7536Turkishiu3217 Inuktitutbn3757Banglafr7458Frenchsr8160Serbianen3885Englishiu4655 Inuktituttr3832Turkishiu1803 Inuktitutzh4463Chineseccp3496Chakmaccp7229Chakmael5177Greekes3964Spanishfr5145Frenchth2248Thaitr2299Turkishtr6823Turkishel1686Greekeo429 Esperantoel444Greeken7028Englishel1744Greekar7768Arabiciu7986 Inuktituttr458Turkishtr1427Turkishtr7047Turkishtr6906Turkishen3891Englishiu4257 Inuktitutsr6438Serbianiu6777 Inuktitutccp2603Chakmasr7467Serbiantr2816Turkishru2346Russianru3617Russianel3003Greekiu7470 Inuktitutar899Arabicchr453Cherokeesr5905Serbianchr8049Cherokeeccp8092Chakmachr2994Cherokeeeo199 Esperantoja4450Japaneseeo7104 Esperantoja3320Japaneseja7223Japaneseel5283Greekru591Russianchr4359Cherokeear317Arabicen4296Englishes6438Spanishfr2413Frenchchr7925Cherokeefr2849Frenchtr2982Turkishes3338Spanishtr3383Turkishel5842Greekchr3003Cherokeeth6951Thaifr5782Frenchar2701Arabicel282Greekth7825Thairu6976Russianfr7793Frenchja3403Japanesezh841Chineseen527Englishsr2093Serbianru2608Russiantr2854Turkishth655Thaisr5920Serbianbn777Banglaccp280Chakmafr5279Frenchru3380Russianchr5920Cherokeetr404Turkishth5419Thaien1233Englishar27Arabicel4091Greekja1766Japaneseru3773Russianbn1674Banglath3070Thaitr5757Turkishar87Arabicar4028Arabiczh697Chineseth5351Thaibn740Banglazh6653Chinesear5078Arabicel2983Greektr7194Turkishja3065Japanesear3085Arabicja7426Japanesesr3615Serbiansr3744Serbianen1236Englishccp6912Chakmatr2194Turkishzh1269Chineseen4021Englishar1526Arabiceo6536 Esperantobn1543Banglaes7021Spanishar6199Arabicccp6492Chakmasr6951Serbiantr6393Turkishes5066Spanishth3257Thaien1848Englishbn7482Banglaja2877Japaneseeo3484 Esperantoen7707Englishar4900Arabicel5733Greekeo6369 Esperantoth1851Thaibn2438Banglafr6494Frenchccp5765Chakmaccp6375Chakmaes6777Spanishja4784Japanesezh616Chinesezh3898Chineseru470Russianeo6882 Esperantoel6244Greekel5670Greekfr1873Frenchfr7916Frenchar7154Arabicsr6193Serbianru1680Russiantr5957Turkishsr359Serbianeo1668 Esperantoar2071Arabiceo2159 Esperantotr1075Turkishar1652Arabicen8122Englishes2888Spanishar2894Arabiceo1789 Esperantoru2029Russianth2475Thaieo890 Esperantobn3954Banglaiu5875 Inuktitutru706Russianth1862Thaies1692Spanishar7792Arabices5600Spanishbn3962Banglaen869Englishth5379Thaizh580Chineseru1203Russianth6068Thaiel1972Greekar2412Arabicccp6754Chakmaeo828 Esperantoeo3868 Esperantoes5281Spanishbn839Banglatr3281Turkishel3677Greekfr208Frencheo1468 Esperantoiu5571 Inuktitutar7772Arabicchr7286Cherokeeth6997Thaiiu2029 Inuktitutes4787Spanishru5774Russianen7022Englishccp5827Chakmabn4773Banglaeo1048 Esperantobn2384Banglaar7050Arabicfr813Frenchzh6345Chineseen4276Englishru3905Russianar199Arabicfr1463Frenchzh3974Chinesechr2788Cherokeear7783Arabicfr2025Frenches837Spanishen4478Englishfr4461Frenchth747Thaiar3648Arabicel7172Greekbn5950Banglath1704Thaiccp6614Chakmaru7155Russianeo1310 Esperantoccp845Chakmachr1278Cherokeear2624Arabicsr5144Serbianru7381Russianbn1065Banglaccp402Chakmaru3783Russianes1791Spanishfr2947Frenchtr7202Turkishja3409Japaneseiu4562 Inuktitutchr6983Cherokeezh1045Chinesesr539Serbiantr2236Turkishel1034Greekbn4336Banglaen839Englishen4317Englishja7273Japaneseen4776Englishfr7425Frenches6563Spanishtr2300Turkishtr2557Turkishccp1662Chakmaar673Arabicel5811Greekel5705Greekru6011Russianel3063Greekeo3166 Esperantotr7391Turkishccp5687Chakmath1063Thaizh6782Chineseth1977Thaibn687Banglaiu2562 Inuktitutsr1132Serbiansr8108Serbianzh3901Chinesebn784Banglath429Thaith5457Thaies5414Spanishzh4612Chineseja2931Japaneseja3040Japaneseru4228Russianen5198Englishiu476 Inuktituteo6722 Esperantoen544Englishchr2022Cherokeear1276Arabicchr6686Cherokeees6470Spanishru4507Russianzh8169Chinesebn6408Banglaar5129Arabiceo4690 Esperantoccp1372Chakmatr3569Turkishtr4936Turkishbn1453Banglaes2958Spanishth6536Thaifr458Frenchru1393Russianen2122Englishzh2675Chinesesr1971Serbianzh333Chineseen2936Englishtr3111Turkishru672Russianzh164Chinesear7801Arabicar3581Arabices418Spanishfr3749Frenchth2739Thaith4866Thaija1365Japanesesr3753Serbianccp2806Chakmaes4542Spanishru2634Russianru7182Russianth2496Thaizh1999Chineseja1252Japanesezh7775Chinesear2217Arabicth7679Thaiel7593Greekccp2004Chakmaru7993Russianar2826Arabicbn2966Banglaja3840Japaneseen382Englishth4357Thaien4444Englishth7605Thaitr2254Turkishsr5695Serbianzh8128Chinesesr483Serbiantr3700Turkishiu5208 Inuktituttr2925Turkishbn2690Banglaru6132Russianja6427Japanesefr6790Frenchel5050Greekfr5435Frenches959Spanishes3873Spanishfr4259Frenchru6749Russianen7212Englishfr1843Frenchsr145Serbianja1175Japanesebn4229Banglaeo619 Esperantoel3300Greekar5057Arabicbn2909Banglaen1366Englishth2260Thaisr7866Serbianen446Englishth1999Thaies6008Spanisheo6246 Esperantoth6717Thaija7845Japaneseru1662Russianar1027Arabicen7059Englishes6795Spanishsr3662Serbianfr5617Frencheo802 Esperantoja6249Japanesetr2157Turkishchr5859Cherokeeja751Japaneseth1312Thaith4665Thaizh938Chineseel5035Greekel1355Greekar7932Arabicchr2017Cherokeebn1338Banglaen4929Englishzh145Chinesear7735Arabiciu3954 Inuktitutfr6416Frenchru8155Russianar2877Arabicbn5409Banglaen1682Englishccp7976Chakmazh2912Chineseth3709Thaien4904Englishar3830Arabiczh1301Chinesees1182Spanisheo1057 Esperantoel4071Greekth3671Thairu5531Russianru2469Russiansr1258Serbianel5735Greekzh5009Chinesees5585Spanishccp436Chakmaen944Englishja6490Japanesesr2173Serbianen8094Englishar2378Arabicja4405Japaneseth7470Thaien816Englishzh5374Chinesefr3806Frenchth3914Thaichr2739Cherokeezh4658Chineseiu7696 Inuktitutccp353Chakmachr5122Cherokeees2141Spanishth7528Thaiiu4868 Inuktituten6765Englishchr2241Cherokeear812Arabicel4051Greektr3713Turkisheo3 Esperantoru2350Russianiu3401 Inuktitutel803Greekar2546Arabicen911Englishsr3904Serbianzh2352Chineseen6521Englishsr7242Serbiantr4208Turkishel2887Greeksr5518Serbianja3343Japaneseccp3609Chakmaja93Japanesebn3888Banglachr2252Cherokeeccp805Chakmaes3412Spanishes4070Spanishfr4641Frenchtr782Turkishccp4054Chakmaccp6323Chakmaen6286Englisheo3340 Esperantoth3843Thaizh24Chineseccp2354Chakmasr6863Serbianfr3179Frenchth1618Thaitr751Turkishen3612Englishar6911Arabicru5240Russianeo1186 Esperantoel3437Greekeo6849 Esperantoes7474Spanishru649Russianar3788Arabicbn841Banglaes5449Spanishth2311Thaiccp3296Chakmachr6113Cherokeeen3924Englishja8014Japaneseccp4220Chakmaar7271Arabiceo2360 Esperantoth5649Thaith7044Thaiar7347Arabicbn3396Banglaar4807Arabicbn3048Banglaccp4015Chakmasr3272Serbianen6597Englishzh2747Chineseel7968Greeken5376Englishja2621Japaneseel3149Greekel3777Greekes5921Spanishes8013Spanishbn2734Banglafr701Frenchth4788Thaiccp6319Chakmabn3970Banglachr1929Cherokeeccp2688Chakmasr2217Serbiansr3482Serbiansr3479Serbiantr804Turkishsr7909Serbianzh8101Chineseen4720Englisheo5990 Esperantoes326Spanisheo6288 Esperantoen4718Englishbn5261Banglael7866Greekiu5909 Inuktitutru2839Russiansr7618Serbianeo7479 Esperantozh2263Chinesechr1749Cherokeechr5366Cherokeeel2359Greekar461Arabicja2237Japanesesr4097Serbianru3521Russianzh5201Chineseiu2525 Inuktituten2425Englishel6418Greekchr3334Cherokeear6515Arabicbn4754Banglachr6547Cherokeeth7258Thaichr260Cherokeeen4311Englishccp5042Chakmaen65Englisheo7200 Esperantobn167Banglaccp7397Chakmael6235Greekiu7476 Inuktitutja3114Japanesesr3830Serbianru4899Russianccp665Chakmaar146Arabices5432Spanishzh2233Chineseen2163Englishsr5381Serbianar7231Arabiczh64Chineseeo2708 Esperantoes6460Spanishes7263Spanishchr3947Cherokeefr6918Frenchzh3692Chineseccp949Chakmaeo6237 Esperantoru2597Russianel7644Greekccp5244Chakmaru4354Russianja3979Japanesees2774Spanishfr136Frenchru2342Russianel1782Greeken4162Englishchr6892Cherokeeeo7493 Esperantofr5923Frenchja3728Japanesear6571Arabicccp1733Chakmaeo4431 Esperantoes4468Spanishth3539Thaith7477Thaiar1449Arabicel2261Greekccp3625Chakmaja4545Japaneseccp4362Chakmaeo5930 Esperantoja8150Japaneseiu299 Inuktitutja3735Japanesetr7500Turkishtr86Turkishsr5421Serbianel3282Greeken1435Englishchr206Cherokeechr6247Cherokeefr982Frenchiu5384 Inuktitutsr6307Serbianja1435Japanesees2570Spanishar5482Arabiciu3778 Inuktitutja398Japanesefr2655Frenchsr3138Serbiantr2888Turkishiu3688 Inuktitutth3177Thaifr6366Frenchsr579Serbianth5648Thaieo5639 Esperantoes4925Spanisheo1181 Esperantochr5478Cherokeees8110Spanishchr1691Cherokeear8013Arabictr7900Turkishel5568Greekru3038Russianen5802Englisheo2418 Esperantofr5473Frencheo8028 Esperantozh6694Chinesefr900Frencheo6102 Esperantoeo7925 Esperantoes1895Spanishfr6157Frenchzh3845Chineseen711Englishfr1571Frenchth4180Thaiiu1262 Inuktitutchr6434Cherokeezh910Chineseja3433Japaneseja7744Japaneseen2855Englishfr4199Frenchru4172Russianth5843Thaiel1121Greekccp3637Chakmachr4637Cherokeetr5128Turkisheo3602 Esperantoar3722Arabicccp5242Chakmaja3336Japaneseja5305Japaneseja7000Japanesetr2964Turkishzh2841Chineseru8087Russianchr695Cherokeefr4325Frenchel8116Greektr1449Turkishchr6459Cherokeefr6582Frenchen6316Englishar2542Arabicru855Russianth4332Thaifr5498Frenchfr71Frenchccp4725Chakmaiu7872 Inuktitutru7544Russianth5950Thairu5479Russianfr7706Frenchccp1316Chakmatr6324Turkishzh2828Chinesees226Spanishzh1046Chinesear3505Arabicen7221Englishsr48Serbianzh4504Chinesear4510Arabicel2124Greeken4177Englishja6787Japanesezh1594Chineseru5097Russiansr3449Serbianchr1965Cherokeechr6532Cherokeeeo5197 Esperantoeo6856 Esperantofr1840Frenchar1468Arabictr5282Turkishru3267Russianen8114Englishbn329Banglaeo783 Esperantoccp466Chakmaiu654 Inuktitutsr1566Serbiantr8060Turkishel7960Greekccp5641Chakmaar1717Arabicru721Russianchr6907Cherokeees5665Spanishsr5437Serbianiu6970 Inuktitutel5491Greeksr617Serbianth5344Thaith1299Thaiiu5255 Inuktituttr3586Turkishen6610Englishen2105Englishel4829Greekel8160Greekes6163Spanisheo133 Esperantoccp4063Chakmaru4608Russianel2966Greekiu3994 Inuktituteo6089 Esperantozh7520Chineseccp1057Chakmaar1543Arabicen7675Englishtr2820Turkishes3691Spanishar902Arabicja3540Japanesear7647Arabicchr2506Cherokeefr5984Frenchel7386Greekeo3933 Esperantofr4862Frenchtr3069Turkishtr3014Turkishbn6299Banglabn1507Banglaja683Japanesesr5746Serbianru4244Russianccp3099Chakmasr477Serbianchr7357Cherokeechr1032Cherokeeiu373 Inuktitutchr5307Cherokeetr888Turkishchr541Cherokeeccp6523Chakmaeo5301 Esperantobn2775Banglasr6995Serbianar18Arabicen5988Englishiu7369 Inuktitutth5734Thaiar4616Arabicen903Englishiu541 Inuktitutar7477Arabictr5587Turkishar1439Arabiceo5487 Esperantoja1872Japaneseru1389Russianar5563Arabicchr8163Cherokeeen4482Englishiu1860 Inuktitutar1830Arabicja719Japanesechr4968Cherokeeru4567Russianzh2890Chineseeo5380 Esperantoes1358Spanishiu3303 Inuktitutru5917Russianzh5947Chineseen7106Englishen1335Englishar1313Arabicsr4399Serbianccp6260Chakmatr1362Turkishja7380Japanesetr3175Turkishes7594Spanishru6168Russianchr761Cherokeetr6886Turkishzh304Chineseccp5576Chakmaar2821Arabicja6389Japaneseru1566Russianiu5316 Inuktitutel6223Greekiu1986 Inuktitutja5114Japaneseiu4082 Inuktituten392Englishchr4159Cherokeeru5072Russianja3219Japanesear2904Arabicbn300Banglaen505Englisheo5941 Esperantoiu1965 Inuktitutccp7548Chakmatr7748Turkishbn8079Banglaiu2346 Inuktitutchr3404Cherokeeru7282Russiansr4089Serbianel6968Greekja6391Japanesear550Arabicth6285Thaiiu5269 Inuktituten7381Englishzh8120Chineseel3979Greekel7974Greeken4187Englishtr4611Turkishel3490Greekel5840Greekchr4392Cherokeeen4117Englisheo1799 Esperantobn1671Banglachr3425Cherokeeeo5703 Esperantoes397Spanishbn2668Banglaiu4689 Inuktitutchr5008Cherokeear6507Arabicel8164Greekar7619Arabicru7555Russianes6307Spanishccp7233Chakmaes2653Spanishes7514Spanishsr3079Serbianiu3280 Inuktituteo3043 Esperantoel1643Greekfr747Frencheo561 Esperantofr6947Frenchth7181Thaisr5614Serbianchr4683Cherokeeru4020Russiansr2362Serbianth1825Thaichr1558Cherokeechr289Cherokeeiu7272 Inuktitutsr1936Serbiansr5028Serbianchr108Cherokeeiu3200 Inuktituteo6000 Esperantofr1611Frenchccp7090Chakmaja6314Japanesear1261Arabiciu1718 Inuktitutja5901Japaneseeo5523 Esperantoth5254Thaieo5981 Esperantoccp1839Chakmaar4719Arabicel4853Greekfr4457Frenchzh5251Chinesees7731Spanisheo5309 Esperantoar3403Arabicth4200Thaiar2206Arabiczh3135Chinesebn4992Banglaes411Spanishsr805Serbiantr7141Turkishtr3050Turkishth5181Thaith3951Thaitr6475Turkishth1301Thaichr4563Cherokeeeo3058 Esperantoel1823Greekes3196Spanishsr3611Serbianth6356Thaiiu1455 Inuktitutel3355Greekfr6135Frenchtr1776Turkisheo2792 Esperantoel1408Greekes2359Spanishes5837Spanishbn6396Banglabn7149Banglael5133Greekru5048Russiansr5506Serbianchr4295Cherokeezh1031Chineseccp590Chakmaccp7728Chakmazh2400Chinesetr2294Turkishes1472Spanisheo8075 Esperantoiu775 Inuktitutes8115Spanishes4085Spanisheo3421 Esperantotr345Turkishtr7454Turkishes939Spanishiu1535 Inuktituttr2065Turkisheo8035 Esperantotr1400Turkishth2667Thaiccp6894Chakmasr6590Serbiantr2350Turkishel5884Greekzh2847Chinesesr5989Serbianru7845Russianccp3470Chakmachr7659Cherokeezh993Chinesefr976Frenchbn7425Banglaes4704Spanishar992Arabicchr7231Cherokeeel6102Greekiu6052 Inuktitutsr840Serbianja6185Japaneseel30Greekfr7015Frenchbn1177Banglaar7203Arabicccp5658Chakmachr3130Cherokeees6927Spanishja505Japaneseru3687Russianes1214Spanishfr2254Frenchth3577Thaitr1731Turkishfr3263Frenchru4107Russianes6232Spanishchr1451Cherokeeru549Russianen6014Englisheo7399 Esperantoru3000Russiantr1199Turkishbn8093Banglasr2288Serbianes6355Spanishes4411Spanishccp1034Chakmaru7277Russianes425Spanishen3746Englishel2244Greekru6414Russianccp3782Chakmatr3776Turkishru3418Russianth6357Thaieo789 Esperantoth7200Thaitr3018Turkishth7043Thaitr7220Turkishja3198Japanesetr7783Turkishel645Greekeo5622 Esperantoeo4765 Esperantoja8074Japanesefr1846Frenchru8173Russianccp1562Chakmaru1508Russianbn3854Banglaru2005Russianiu179 Inuktitutar5336Arabicen889Englishru6857Russianbn840Banglaiu1874 Inuktitutfr5071Frenchsr2697Serbianbn7558Banglath4747Thaies6960Spanishth7280Thaifr6767Frenchen5688Englishtr3783Turkishbn1015Banglaen5151Englishar7734Arabices3687Spanishzh7224Chinesechr2826Cherokeechr7785Cherokeeiu4246 Inuktitutth5770Thaibn730Banglatr7087Turkishru528Russianchr1562Cherokeees5419Spanishen4101Englishtr7028Turkishccp2787Chakmachr4884Cherokeechr4146Cherokeebn6931Banglachr6141Cherokeeeo5945 Esperantoen7602Englishen5709Englishru7435Russianchr2339Cherokeefr2909Frenchsr1391Serbianen6048Englishes5186Spanishru5880Russianes3310Spanishsr423Serbiansr7013Serbianccp7070Chakmatr2011Turkishccp5387Chakmafr202Frenchel1780Greekja7934Japaneseeo7829 Esperantotr7492Turkishtr4525Turkishfr8114Frenchtr5984Turkishccp539Chakmafr7179Frencheo103 Esperantochr1083Cherokeechr5394Cherokeeel3228Greekth4829Thaies3435Spanishccp4058Chakmaen7751Englishel4598Greeksr3354Serbianar1377Arabicbn4936Banglael611Greekbn1533Banglaen5635Englishsr4220Serbianzh493Chinesezh3627Chinesesr205Serbianja8190Japaneseel7491Greekru7163Russianbn2600Banglabn6755Banglabn955Banglazh7644Chinesebn7047Banglaes1700Spanishja3801Japaneseiu1422 Inuktitutzh6217Chineseen4788Englisheo8138 Esperantoes5292Spanishth6947Thaizh3798Chinesebn267Banglaeo7671 Esperantoth5332Thaizh2433Chinesees893Spanishccp1139Chakmael6871Greekes7517Spanishfr420Frenchar1637Arabicth2750Thaiar3122Arabicccp4756Chakmachr459Cherokeechr7723Cherokeesr6437Serbiantr838Turkishzh2519Chineseja2394Japaneseen1036Englishth2380Thaith577Thaith5484Thaizh1533Chinesesr1680Serbianchr6679Cherokeeel136Greekru4444Russianbn3665Banglaccp663Chakmaes6356Spanishen6217Englishar930Arabicar6402Arabicbn4233Banglaeo7784 Esperantoes765Spanishfr5296Frenchbn4740Banglafr6398Frenchiu6826 Inuktitutzh6312Chinesefr5567Frenchtr4592Turkishel443Greeksr3544Serbianiu7474 Inuktituten597Englishzh4233Chineseja2369Japanesear1087Arabicja6021Japanesesr791Serbianbn7623Banglaccp5987Chakmazh1547Chinesezh654Chinesesr207Serbianel7722Greekzh232Chineseen5863Englishth2354Thaieo5122 Esperantoth6515Thaieo7213 Esperantosr2185Serbianbn7346Banglafr1254Frenchar6320Arabicsr782Serbianchr2638Cherokeeeo7888 Esperantofr1699Frenchfr7765Frenchru3199Russianth7320Thaitr6879Turkishja4461Japaneseccp6547Chakmaar7803Arabiceo3446 Esperantoes6151Spanishccp6717Chakmasr8016Serbianth6545Thaisr6595Serbianth2598Thaiccp7398Chakmath4137Thairu3035Russiansr3723Serbiantr1505Turkishchr476Cherokeesr5417Serbianchr5436Cherokeeru694Russianccp234Chakmabn2477Banglaar3693Arabicbn297Banglaeo5856 Esperantochr1354Cherokeefr3279Frencheo6655 Esperantoel194Greekth1743Thaiccp2506Chakmaeo7677 Esperantofr550Frenchiu3600 Inuktitutar1609Arabiceo3980 Esperantochr6186Cherokeees457Spanishfr2406Frenchfr4054Frenchsr4839Serbianen2945Englishiu7919 Inuktitutar7040Arabicja651Japanesezh5833Chinesezh6530Chineseiu920 Inuktitutes5214Spanishfr7057Frenchccp2642Chakmazh4931Chineseccp6358Chakmabn8013Banglafr1174Frenchiu814 Inuktitutzh8126Chineseja3034Japanesesr1142Serbianru6490Russianes6593Spanishbn5806Banglaccp7408Chakmachr5634Cherokeeeo3397 Esperantoen713Englisheo350 Esperantoth3781Thaiar393Arabiczh3623Chineseel5080Greekccp7895Chakmaen5027Englishtr6851Turkishes5616Spanishtr4904Turkishchr2835Cherokeeccp1992Chakmaes44Spanishth1703Thaichr5800Cherokeetr5683Turkishja6472Japaneseccp2781Chakmachr2805Cherokeeel7109Greekeo97 Esperantosr6829Serbiansr2555Serbianchr322Cherokeeja1963Japanesebn4697Banglachr4835Cherokeesr7632Serbianel2636Greekru743Russianar5533Arabicccp6330Chakmafr6147Frenchel3687Greekes7913Spanishja5464Japaneseru7220Russianen4367Englishfr6076Frenchtr4097Turkishbn549Banglaja2470Japanesefr4518Frenchbn5420Banglasr2855Serbianfr2071Frenches7718Spanishchr3070Cherokeeiu2438 Inuktitutsr6023Serbiansr2373Serbianchr4554Cherokeebn4365Banglazh5901Chineseth1147Thaien3697Englishiu3849 Inuktitutru7570Russianeo2987 Esperantoeo4555 Esperantobn8191Banglaar2884Arabicja7302Japanesezh7614Chinesefr5531Frenchar524Arabicen7780Englishiu4517 Inuktituten189Englishth3355Thaith99Thaies7523Spanisheo7683 Esperantoel6326Greeken6643Englishen7684Englishel4910Greeken1141Englishes3917Spanishiu246 Inuktitutchr6526Cherokeeru7454Russianth6576Thaiccp7701Chakmasr7761Serbianes1073Spanishar2397Arabictr1604Turkishen1760Englishel3069Greekbn3584Banglath4116Thaiiu5282 Inuktituttr1945Turkishchr7971Cherokeeel650Greekbn6276Banglaeo3689 Esperantoru7424Russiansr447Serbianiu8017 Inuktitutchr7805Cherokeezh3926Chinesees1705Spanishfr313Frenchth3806Thaien4927Englishth6811Thaien7003Englishfr6187Frenchel4656Greeksr2881Serbiansr7299Serbianes437Spanishel7289Greeksr4580Serbianes5924Spanishfr7046Frenchfr7857Frenchiu4846 Inuktitutchr4350Cherokeeth2419Thaiiu3421 Inuktitutzh4480Chineseen74Englishiu5995 Inuktitutes3137Spanishchr7730Cherokeezh6482Chinesefr4772Frenchth7127Thaiar7953Arabicsr61Serbiantr7577Turkishen6161Englishes6610Spanishfr3363Frenchfr3492Frenchiu4995 Inuktitutth7315Thaiel4001Greektr3522Turkisheo6514 Esperantoes8144Spanishchr804Cherokeeeo2872 Esperantoiu1151 Inuktitutchr4687Cherokeefr4173Frenchccp3633Chakmael2346Greekru2490Russianccp7731Chakmaeo5642 Esperantosr2514Serbianth4347Thaies3100Spanishchr5799Cherokeetr3730Turkishsr2886Serbiantr5729Turkishtr7968Turkishth5423Thaizh5252Chinesear4795Arabicru563Russianzh878Chinesear1867Arabicru1037Russianeo6390 Esperantoar2215Arabicfr2987Frenches6678Spanishth47Thaifr8007Frenchru2207Russianiu267 Inuktitutsr7924Serbianzh6511Chineseen2672Englishbn3040Banglaccp3804Chakmaen4467Englishel5052Greekes3259Spanishen7230Englishiu3367 Inuktitutiu2488 Inuktituten2178Englishes3317Spanishja761Japanesefr5519Frenchja6880Japanesebn2738Banglaja1662Japaneseeo7966 Esperantoth6323Thaieo6906 Esperantoru5328Russianar3440Arabicbn6391Banglaja5693Japanesees5770Spanishth3035Thaizh566Chinesesr5827Serbianzh3236Chinesetr1509Turkishja3697Japanesetr2927Turkishtr1702Turkishbn7920Banglabn7313Banglaar93Arabicccp3755Chakmaccp4266Chakmaccp6394Chakmael5059Greekeo6999 Esperantoel4083Greekes1775Spanishja6747Japaneseth1551Thaisr4234Serbianar4710Arabicbn7065Banglaru375Russianru7094Russianiu7145 Inuktitutsr3331Serbianel6038Greekth5907Thaitr4694Turkishen5652Englisheo3585 Esperantoiu7358 Inuktitutzh6870Chinesefr1614Frenchru7798Russiansr1426Serbianbn952Banglaiu5934 Inuktitutel1064Greekes1255Spanishes1835Spanishth7800Thaitr2416Turkishth4997Thaifr7325Frenchru3736Russiansr4995Serbianru4783Russianru4618Russianccp1251Chakmaen2914Englishchr6241Cherokeees6349Spanishar2711Arabicchr1044Cherokeesr2777Serbianccp6159Chakmael6107Greekel6325Greekccp3952Chakmath7195Thaitr4573Turkishccp2173Chakmazh2195Chineseccp7886Chakmaccp2267Chakmaccp4079Chakmabn2878Banglafr6134Frenchtr6876Turkishbn1784Banglaen2836Englishchr4209Cherokeeel4437Greekeo673 Esperantotr159Turkishtr7013Turkishzh6736Chinesesr953Serbianel1179Greekes4476Spanishen6129Englishes3770Spanishru4313Russianeo7696 Esperantoccp648Chakmazh4173Chineseiu843 Inuktitutes5319Spanishru5976Russianbn3237Banglael394Greekru3043Russiansr5020Serbianth5863Thaiel6467Greeksr1931Serbianes3729Spanishzh7241Chinesear3229Arabicth4717Thaiel1078Greeksr2686Serbianfr252Frenchar988Arabicchr3792Cherokeeccp990Chakmaes829Spanishth1368Thaibn4538Banglabn3097Banglachr7938Cherokeeccp4355Chakmazh3468Chineseeo6267 Esperantoes2217Spanishzh4276Chineseru1051Russianja6046Japanesear5737Arabictr1994Turkishar4861Arabicar6752Arabicccp4840Chakmaen3704Englishja2673Japaneseiu2769 Inuktitutja4819Japaneseja1317Japaneseja5826Japaneseiu5315 Inuktituttr2603Turkisheo6785 Esperantoiu4057 Inuktitutru1917Russianar5703Arabictr5661Turkishel4964Greekeo255 Esperantoeo4060 Esperantoccp1350Chakmaen7656Englishbn4691Banglafr5314Frenchccp1065Chakmasr3648Serbiansr5531Serbianeo7821 Esperantofr5423Frenchchr3248Cherokeebn1686Banglaeo2734 Esperantoiu6799 Inuktitutth4709Thaichr1369Cherokeeccp16Chakmatr3562Turkishbn6029Banglafr6881Frenchar1031Arabictr5811Turkishbn3633Banglachr2432Cherokeezh1248Chineseiu5043 Inuktitutru3984Russiantr6509Turkishel1247Greekel7201Greeksr4491Serbianfr7181Frencheo2429 Esperantoen6349Englishiu3414 Inuktitutsr7397Serbianen1021Englishiu7310 Inuktitutja3526Japanesechr5194Cherokeetr1406Turkisheo7243 Esperantoru87Russianja3891Japanesees6013Spanishchr3053Cherokeeru2289Russianth5232Thaiiu1341 Inuktituttr7782Turkishar985Arabicbn6859Banglaes147Spanishtr4083Turkishtr39Turkishes7876Spanishfr5157Frenchja1424Japaneseeo6274 Esperantoen2769Englishbn8053Banglatr7845Turkishbn4511Banglatr3283Turkishfr6174Frenchccp7773Chakmael5843Greeken6021Englishiu61 Inuktitutar3130Arabicbn6149Banglafr1270Frenchsr561Serbianth7096Thaibn2635Banglasr6988Serbianccp9Chakmael2512Greekiu4315 Inuktitutel3111Greekeo3834 Esperantofr3249Frenchth166Thaieo3102 Esperantoen2604Englishtr5327Turkishzh1263Chinesees1225Spanishes6263Spanishar2749Arabiczh7140Chineseen3595Englishiu2759 Inuktitutchr7341Cherokeesr7019Serbianbn7068Banglaen5809Englishja3692Japaneseru2935Russianes6060Spanishzh2816Chinesefr3098Frenchel2896Greekar2414Arabicbn4236Banglaccp3631Chakmaen7624Englishru7959Russianel180Greekes222Spanishar3296Arabiceo3815 Esperantofr3379Frenchja7534Japanesees4305Spanishfr2851Frenchru3557Russiansr5673Serbianth999Thaiar2083Arabicchr3292Cherokeeja584Japaneseiu5454 Inuktitutth7042Thaiar271Arabiceo239 Esperantosr1586Serbianccp5505Chakmaja978Japaneseru3797Russianth1960Thaija3349Japanesetr1315Turkishen884Englishru4393Russianccp2568Chakmasr1472Serbianeo5749 Esperantofr6121Frenches3825Spanishiu1816 Inuktitutja3236Japaneseru2101Russianes1864Spanishru6593Russianel755Greeksr4137Serbianzh3919Chinesesr5099Serbianiu5339 Inuktituttr220Turkishel6494Greekiu4203 Inuktitutja1856Japaneseel6121Greekeo577 Esperantozh2545Chinesear2104Arabicchr2054Cherokeees5020Spanishth3504Thaifr5183Frenchen7112Englishth2962Thaiccp1705Chakmaccp4697Chakmasr2026Serbianchr5309Cherokeefr937Frencheo8037 Esperantosr2053Serbianar2597Arabicru448Russianfr1076Frenchbn1471Banglafr6389Frenchsr1437Serbianfr4348Frenchen4042Englishsr4385Serbianar5767Arabiceo3803 Esperantochr842Cherokeeel4316Greekiu2236 Inuktitutchr744Cherokeechr2036Cherokeees3543Spanisheo1138 Esperantobn1324Banglaja7779Japaneseiu7147 Inuktitutel1449Greekes3672Spanishes720Spanishtr7618Turkishzh225Chinesechr2969Cherokeeth5056Thaiccp4253Chakmazh3335Chinesezh6722Chinesefr1834Frenchar5113Arabicchr2286Cherokeeja1585Japaneseru2832Russianbn5011Banglaja3871Japanesetr844Turkishtr7405Turkisheo2527 Esperantoeo6133 Esperantoiu6587 Inuktituteo7679 Esperantosr5Serbiansr4981Serbianeo4161 Esperantozh7315Chinesechr7695Cherokeeen4471Englisheo2814 Esperantoth1302Thaizh1357Chineseen2488Englisheo7042 Esperantotr5068Turkishja3315Japanesebn4276Banglasr945Serbianccp4418Chakmaeo3091 Esperantobn7181Banglazh3472Chinesebn1975Banglaccp6720Chakmachr1627Cherokeeth7631Thaiiu2445 Inuktitutel4550Greektr7356Turkishru736Russianbn5729Banglaeo4707 Esperantoja267Japaneseja2025Japanesesr4446Serbianccp6995Chakmaccp543Chakmaar1858Arabicen3836Englishel7878Greekeo853 Esperantotr5670Turkishzh6029Chineseel5520Greekzh3818Chinesesr7642Serbiantr259Turkishar6305Arabicar5673Arabicru4017Russianth2334Thaichr7034Cherokeeen7389Englishel4620Greekel2451Greekccp2580Chakmafr1579Frenchtr1825Turkishja5251Japaneseeo4510 Esperantoeo3570 Esperantoeo2770 Esperantoth2385Thaizh2329Chineseeo3632 Esperantoes4538Spanisheo3202 Esperantoeo6592 Esperantobn559Banglael4508Greekru200Russianth3762Thaith3984Thaizh4085Chinesechr5491Cherokeechr4077Cherokeeja4246Japaneseiu1271 Inuktitutsr2383Serbianar7311Arabices372Spanishbn2092Banglatr1713Turkishfr6205Frenchen5009Englishiu4533 Inuktitutfr5240Frenchja2943Japanesezh3265Chineseen2680Englishiu1148 Inuktitutiu1029 Inuktitutru3624Russiantr4258Turkishzh5828Chinesezh7253Chinesechr5841Cherokeebn3443Banglath1437Thaija4812Japaneseel1445Greekar7927Arabicsr6239Serbiantr1578Turkishbn1699Banglatr269Turkishar6713Arabiczh4227Chineseel2494Greekth7490Thaizh965Chineseen2846Englishja5456Japanesebn7141Banglaccp2371Chakmaen7528Englishiu4264 Inuktitutiu2663 Inuktitutchr3332Cherokeeiu6740 Inuktituttr1851Turkishar5181Arabicbn4306Banglafr203Frenchth4285Thaifr7506Frenchtr4580Turkishzh1774Chinesezh7701Chinesees1848Spanishiu6754 Inuktitutes7545Spanishbn43Banglaru5205Russianzh3514Chineseja2123Japanesees4455Spanishtr1161Turkishfr7753Frenchja4373Japaneseja4492Japanesezh5243Chineseru5387Russianbn930Banglaccp3245Chakmachr6751Cherokeeeo4536 Esperantoccp1450Chakmaes2484Spanishzh8133Chinesechr27Cherokeees174Spanishfr6426Frenchchr1750Cherokeesr1169Serbiansr4669Serbianiu4770 Inuktituttr4886Turkishbn4748Banglaru27Russianchr7749Cherokeetr2778Turkishru1538Russianfr916Frenchen790Englishtr4443Turkishar5411Arabicchr6548Cherokeeth8115Thaiel5124Greekes6500Spanishja3611Japaneseru3403Russianchr551Cherokeeiu2350 Inuktitutja2103Japanesezh1839Chinesesr3799Serbianes6985Spanishccp2446Chakmaccp3644Chakmaar2428Arabicth5754Thaibn2929Banglael7410Greekzh2778Chineseiu1129 Inuktitutja8168Japaneseccp99Chakmaiu4040 Inuktitutccp2977Chakmath5085Thaiccp3717Chakmaeo3844 Esperantofr734Frenchar7585Arabiciu1065 Inuktitutth2872Thaies7266Spanishbn2457Banglabn1703Banglaar7420Arabiczh1155Chineseth7389Thaith7714Thaiel6986Greekth6909Thaies1732Spanishth5151Thairu1158Russianar3889Arabictr8045Turkishsr2444Serbianzh3183Chineseccp3751Chakmaru4321Russiantr2478Turkishar2103Arabicar1724Arabices3972Spanishchr3123Cherokeeel2780Greektr5301Turkishchr6185Cherokeechr6396Cherokeeja6836Japanesezh4238Chineseen6910Englishccp3007Chakmasr7947Serbianru3981Russianiu1443 Inuktitutar3601Arabicccp931Chakmaja4683Japanesezh3685Chineseccp807Chakmaeo7944 Esperantochr6589Cherokeesr1148Serbianja7881Japaneseth2042Thaiar8169Arabicfr4354Frenchel6328Greekeo12 Esperantoel5649Greekel37Greekel664Greekel3571Greekiu87 Inuktituteo5224 Esperantoar6949Arabices6818Spanishja6058Japaneseru3254Russianja5565Japaneseth2971Thaizh5655Chineseeo2551 Esperantoel4859Greekth7802Thaifr3268Frenchfr242Frenchja2872Japanesear4367Arabicccp33Chakmael2802Greekzh2954Chinesesr1243Serbianes7287Spanishiu3230 Inuktitutar71Arabiciu4124 Inuktitutja1362Japaneseccp8055Chakmabn4707Banglaru5418Russianth4368Thaiiu5267 Inuktitutbn6639Banglaja4119Japanesechr1099Cherokeefr6489Frenchja5517Japaneseiu5352 Inuktitutsr3192Serbianar7894Arabicen3760Englishfr7578Frenches2479Spanishzh2811Chineseru5653Russianja4583Japanesesr4228Serbianes2462Spanisheo1303 Esperantoiu4647 Inuktitutiu7214 Inuktitutru504Russianeo5587 Esperantoja7862Japaneseel21Greekth1296Thaitr5449Turkishbn447Banglaiu7686 Inuktitutja7494Japaneseeo4962 Esperantosr6269Serbianel1315Greektr3026Turkishtr3282Turkishfr5294Frenchja934Japanesees6761Spanishchr1117Cherokeear2688Arabicja238Japaneseth1414Thaiel3746Greekfr2242Frenchsr845Serbianiu1950 Inuktituteo7801 Esperantosr739Serbianel2670Greekel2468Greekru6784Russianbn6752Banglath7686Thaith7288Thaichr1112Cherokeees651Spanishja870Japaneseru1657Russiansr4690Serbianchr1381Cherokeear1268Arabicth6714Thaitr5276Turkishru1165Russiansr4309Serbianar2123Arabicar4248Arabicccp4509Chakmafr5950Frenchfr1666Frenchtr10Turkishccp3487Chakmatr3348Turkishen6008Englisheo7847 Esperantozh2274Chineseiu1798 Inuktituten7153Englishchr6011Cherokeefr344Frenchar4296Arabicfr3469Frenchtr4885Turkishsr1825Serbiansr1558Serbianeo3384 Esperantoru1377Russianeo6988 Esperantochr1075Cherokeeja1791Japaneseru6250Russiantr7205Turkishfr5775Frenchzh7254Chineseccp4925Chakmaen7939Englishiu2227 Inuktitutja1122Japanesezh7876Chineseccp1355Chakmaen2154Englishth7456Thaiar5602Arabicar2482Arabicfr4064Frenchel7525Greekru5258Russiansr5980Serbiansr5688Serbianel1418Greekfr3125Frenchccp3435Chakmaja7982Japanesesr6622Serbianel6879Greekru1220Russianth7408Thaiar1657Arabictr6651Turkishja4079Japaneseccp124Chakmaccp6527Chakmafr6025Frenchzh6266Chineseja3069Japaneseen1841Englishccp5251Chakmaeo1897 Esperantotr3624Turkishel4671Greekar6366Arabicja1225Japanesesr5934Serbianiu6055 Inuktituten2419Englishen1887Englishen6595Englishfr5828Frenchiu3725 Inuktitutiu7178 Inuktitutes7380Spanishth4653Thaiiu7657 Inuktitutth2156Thaiiu6401 Inuktitutes7842Spanisheo485 Esperantoar6509Arabicru3723Russianzh4522Chineseja2636Japanesefr4419Frenchzh5780Chineseeo6411 Esperantoel3539Greekchr21Cherokeeiu4157 Inuktituttr2441Turkishtr1372Turkishel1612Greektr1503Turkishel1107Greekccp6170Chakmachr6988Cherokeesr7219Serbianru7152Russianbn5885Banglath7272Thaien2997Englishfr3061Frenchfr739Frenchiu6368 Inuktitutiu6541 Inuktitutru5953Russianiu6451 Inuktitutar609Arabicen3222Englishar6080Arabiciu7083 Inuktituttr4670Turkishel4007Greekfr8124Frencheo5691 Esperantoru374Russianel1996Greekccp4618Chakmabn2452Banglaccp7600Chakmael4942Greekja7532Japaneseru3472Russianzh4030Chineseen1664Englishfr4293Frenchiu2173 Inuktitutth5611Thaichr1492Cherokeetr1840Turkishsr4154Serbianzh7354Chineseccp7882Chakmaeo520 Esperantofr8020Frenches3961Spanisheo1815 Esperantoru6110Russianel2334Greekzh728Chineseth1909Thaitr3633Turkishth2005Thaieo3401 Esperantoen948Englishel8183Greeken2461Englishiu2332 Inuktitutja500Japaneseel2139Greekth3557Thaiel1912Greekes5269Spanishel5564Greekja8112Japanesebn993Banglasr4400Serbianchr4315Cherokeeru6412Russianbn1460Banglaja7010Japaneseru1661Russianen1944Englishbn2119Banglazh7947Chinesees6940Spanisheo3025 Esperantosr6157Serbianzh4305Chineseel2685Greekru3509Russiansr6047Serbiansr4449Serbianth1503Thaichr1187Cherokeeja6473Japaneseel4990Greekiu5591 Inuktitutccp7740Chakmaru4501Russianar3192Arabicel3877Greekru1753Russianccp6934Chakmaen6962Englishzh2968Chineseel1303Greektr238Turkishru7528Russiansr6006Serbianccp5397Chakmaeo3637 Esperantotr7994Turkishzh7012Chinesezh856Chinesetr5392Turkishccp123Chakmaiu4671 Inuktitutja3419Japaneseja7877Japaneseru4690Russianru2702Russiansr4131Serbianiu2463 Inuktitutsr42Serbianbn1743Banglael2858Greeken157Englishes3919Spanishiu762 Inuktituteo1986 Esperantoar3297Arabicsr3734Serbianbn2857Banglael3019Greeksr4350Serbianel6562Greekar7010Arabicen4066Englishfr6381Frenchru6304Russiansr5025Serbianzh6295Chinesefr440Frenchbn3824Banglaja4149Japanesechr5764Cherokeefr3911Frenchbn2750Banglachr3001Cherokeear2135Arabicchr4911Cherokeebn2030Banglaeo7950 Esperantobn3388Banglaccp3618Chakmael5532Greekfr6214Frenchel2134Greekfr5784Frenchzh1330Chinesezh2247Chinesezh7800Chinesefr167Frenchel1297Greekeo5186 Esperantoar4232Arabicbn3646Banglael5193Greekel4068Greekes3099Spanishccp4460Chakmael7066Greekel5167Greekel5821Greekes2319Spanishiu7818 Inuktitutsr3382Serbianja6763Japanesebn2895Banglaes5709Spanishchr2527Cherokeeeo3088 Esperantoru7874Russianth837Thaieo7131 Esperantoccp3678Chakmaeo6700 Esperantotr1665Turkishsr3609Serbianzh3850Chineseel5996Greeken5531Englishja4019Japanesear7955Arabicru2403Russiantr2599Turkishar8076Arabicbn4385Banglaja4779Japanesetr3007Turkishchr6446Cherokeear5877Arabicsr6207Serbianar1944Arabicccp2793Chakmael4852Greekja6887Japaneseja7765Japaneseen3385Englishth2741Thaibn1835Banglaes3002Spanisheo4350 Esperantoes1953Spanishth3477Thairu7926Russianchr4453Cherokeeeo6292 Esperantoes750Spanishccp6289Chakmachr2635Cherokeesr5854Serbianiu6179 Inuktitutccp3342Chakmaja6730Japaneseiu3765 Inuktitutru7146Russianja6813Japanesefr6939Frenchth4181Thaiel2624Greekeo7178 Esperantoth2585Thaichr6308Cherokeeja6788Japaneseeo1277 Esperantotr5963Turkishfr637Frenchtr7226Turkishccp3233Chakmaccp7041Chakmaen2047Englishfr1307Frenchiu1988 Inuktituten7517Englishchr2190Cherokeeiu1590 Inuktitutbn7739Banglaccp5328Chakmasr3546Serbiansr5299Serbianen2087Englishiu4166 Inuktitutsr6412Serbianth1924Thaith6765Thairu5527Russianchr4490Cherokeeru667Russiansr3942Serbianar2772Arabiczh1966Chinesechr1472Cherokeeel940Greekru897Russianeo3688 Esperantosr6655Serbianen50Englishes7819Spanishchr1327Cherokeebn4490Banglaja78Japaneseccp1543Chakmaccp2560Chakmabn7180Banglaen6847Englishar6938Arabicel3961Greekar4174Arabicsr7224Serbianchr199Cherokeeth148Thaith2584Thaien5121Englisheo877 Esperantoel7148Greekbn1910Banglaen8109Englishen6636Englishsr6443Serbianzh2092Chinesebn7522Banglaccp8139Chakmaja2981Japanesebn3909Banglasr6186Serbianes2378Spanishel5510Greekru321Russianccp5951Chakmabn3133Banglaja6409Japanesezh36Chineseeo540 Esperantoru505Russiansr3432Serbianzh4880Chinesechr49Cherokeeiu3818 Inuktitutchr7256Cherokeesr5622Serbianzh6274Chinesesr7509Serbianja7392Japanesetr2044Turkisheo2007 Esperantofr2965Frenchtr5980Turkishiu5552 Inuktitutru2757Russianbn2552Banglaeo1731 Esperantoccp5521Chakmasr3864Serbianes4954Spanishtr2232Turkishccp3749Chakmazh5884Chineseeo6178 Esperantosr962Serbianeo834 Esperantoen7691Englisheo3649 Esperantoes5625Spanishiu4253 Inuktitutru2778Russianel2831Greekja3945Japaneseth2981Thaibn3832Banglael1120Greeken4302Englishru1398Russianccp8046Chakmath7236Thaija6045Japaneseel1386Greekchr6456Cherokeeel4059Greekzh1956Chinesechr6348Cherokeeeo4435 Esperantoen2259Englishen5737Englisheo3929 Esperantofr7360Frenchar6955Arabicen561Englishar1171Arabicja3327Japaneseru6505Russiansr3745Serbianiu1761 Inuktitutru5188Russianar2426Arabicbn6365Banglachr610Cherokeeiu1571 Inuktitutru6542Russianccp1531Chakmaiu6798 Inuktitutes3650Spanishru948Russiansr768Serbiantr859Turkishar452Arabices5615Spanishru4556Russianfr5371Frenchsr7812Serbianeo4015 Esperantoes5429Spanishbn3984Banglachr2647Cherokeeja6165Japanesefr1717Frenchja6774Japaneseen856Englishiu4008 Inuktitutru2889Russianzh2836Chinesefr5798Frenchsr891Serbianbn3411Banglael3558Greekru2730Russianru3711Russianen1789Englishccp3229Chakmaar2632Arabicfr1380Frenchsr7335Serbianel3344Greekeo7827 Esperantoth2349Thaitr34Turkishccp4832Chakmaiu1266 Inuktituteo4977 Esperantoes5257Spanishiu5308 Inuktitutar4623Arabicccp3677Chakmael7764Greekfr6605Frenchen6927Englishtr4918Turkisheo879 Esperantoar5828Arabicchr1355Cherokeeen5743Englisheo4281 Esperantofr1795Frenchfr6829Frenchja7673Japanesezh2308Chinesees897Spanishccp1507Chakmaes2148Spanishsr2153Serbianchr3707Cherokeeen118Englishsr3014Serbianzh1308Chineseth3678Thaisr7988Serbianru1907Russianen155Englishfr2893Frenchth2891Thaizh1598Chinesees2372Spanishzh6964Chinesees966Spanishfr4732Frenchja7955Japaneseccp4591Chakmaen4784Englisheo6060 Esperantoru2927Russianen5333Englishsr1145Serbiantr2905Turkisheo702 Esperantozh8043Chinesechr5879Cherokeeru302Russianes2623Spanishbn1327Banglachr587Cherokeeru4570Russianth3601Thaiar7671Arabices4445Spanishen6145Englishen7073Englishes7657Spanishtr5689Turkishar7570Arabicth3661Thaichr3957Cherokeezh1495Chinesetr2434Turkishfr382Frenchccp7012Chakmatr7689Turkisheo572 Esperantoen4998Englishen2746Englishen242Englishzh1280Chineseja4774Japaneseja304Japaneseen7210Englisheo858 Esperantoja2201Japanesear6495Arabicru1822Russianeo1597 Esperantoccp8023Chakmaeo5225 Esperantotr3926Turkishsr1967Serbiantr7763Turkishbn129Banglatr1630Turkishel8125Greekccp3884Chakmafr2035Frenchel963Greekzh7365Chineseja3636Japanesefr1126Frenchiu7973 Inuktitutccp1340Chakmasr1475Serbiansr386Serbianeo4899 Esperantobn8042Banglaiu4398 Inuktitutel3162Greekru7686Russiantr5131Turkishsr196Serbianbn2649Banglabn2883Banglaccp8024Chakmasr3437Serbianchr3254Cherokeezh1766Chineseth1033Thaitr7972Turkishja2862Japanesezh6566Chineseru6618Russianchr8035Cherokeeiu851 Inuktitutzh1866Chinesear194Arabicel2895Greekchr2115Cherokeeel5478Greekiu5945 Inuktitutbn2016Banglabn4240Banglaen349Englishfr3654Frenches2932Spanishbn7485Banglachr2473Cherokeezh1380Chineseel2414Greekbn3769Banglaeo2212 Esperantotr3799Turkishja1882Japaneseth5034Thaizh7467Chineseru1439Russianth3648Thaichr328Cherokeeth634Thaiiu6645 Inuktitutth5019Thaien1702Englishru3244Russianja6485Japanesechr7648Cherokeeeo1469 Esperantozh4753Chineseeo1527 Esperantoiu3243 Inuktitutel1343Greekiu6639 Inuktitutccp994Chakmaru7710Russianccp6183Chakmachr7252Cherokeeccp3657Chakmabn6144Banglaen5659Englishfr1197Frenchar4540Arabicru2368Russianbn2250Banglaen3002Englishchr6987Cherokeezh1725Chinesechr4293Cherokeeiu4554 Inuktitutzh4348Chineseru3698Russianzh6770Chineseccp7339Chakmafr6492Frenchru2468Russiantr6327Turkisheo116 Esperantozh6675Chineseeo6880 Esperantoth4032Thaies5831Spanisheo8176 Esperantoiu5560 Inuktitutja7913Japanesezh2802Chineseel7357Greekccp1718Chakmaru1712Russianru4094Russianja3756Japanesebn4706Banglaen1018Englisheo5604 Esperantotr4365Turkishchr3275Cherokeeeo1743 Esperantoja88Japaneseth7880Thaieo7735 Esperantosr7773Serbianel3081Greekes3913Spanisheo7809 Esperantoar4634Arabices5932Spanishfr5022Frenchiu4764 Inuktitutth5637Thaichr2930Cherokeeel4228Greekeo1086 Esperantoar5081Arabicbn706Banglaja3790Japaneseja4803Japanesezh3893Chinesees3085Spanishes4103Spanishth4672Thaifr7788Frenchchr5256Cherokeees1133Spanishchr4846Cherokeeel3076Greekja3404Japanesezh51Chinesezh1346Chineseen7086Englisheo6754 Esperantoar2276Arabicru6125Russianth511Thaichr5199Cherokeetr935Turkishes3162Spanishru7632Russianccp4878Chakmatr5012Turkishru3228Russianja1867Japaneseiu4234 Inuktituteo7644 Esperantoes6000Spanisheo5986 Esperantoth7599Thaiiu2184 Inuktituten4677Englishccp465Chakmasr7070Serbianen3263Englishfr1887Frencheo6666 Esperantochr7700Cherokeeccp5098Chakmafr613Frenchar2970Arabices2496Spanishtr661Turkisheo6192 Esperantoth3908Thaisr1796Serbianzh1056Chineseiu4582 Inuktitutja6096Japaneseja557Japanesezh21Chineseja5703Japanesear6528Arabicchr5037Cherokeeth3289Thaibn181Banglaar578Arabiceo1275 Esperantochr7458Cherokeetr6841Turkishfr1521Frenchiu1074 Inuktitutes7360Spanishen11Englishiu3900 Inuktituttr3267Turkishar280Arabicsr8005Serbianbn4696Banglaeo2345 Esperantofr4386Frenchja909Japaneseccp766Chakmaru6042Russianccp6333Chakmatr7743Turkishes3190Spanishfr7929Frenchth1639Thaifr2757Frenchchr6824Cherokeebn2876Banglatr7207Turkishchr0Cherokeeel3642Greekru8167Russianiu4308 Inuktituttr5464Turkishja2386Japaneseccp7325Chakmasr3084Serbianja6291Japaneseeo6564 Esperantoiu973 Inuktitutes289Spanishja608Japaneseru7446Russianiu3336 Inuktitutzh1781Chinesetr6455Turkishiu5906 Inuktituttr3602Turkishchr5388Cherokeesr651Serbianen2392Englishchr7082Cherokeeel1434Greekth1957Thaith1343Thaith4405Thaiccp1319Chakmazh2053Chinesefr532Frenchbn735Banglafr5627Frenchsr102Serbianchr4260Cherokeechr6478Cherokeesr4231Serbianar2829Arabicccp6168Chakmaen4297Englisheo1382 Esperantoru4096Russianiu5675 Inuktitutsr605Serbianel7052Greekru8136Russianar1489Arabictr1915Turkishel579Greekfr1826Frenchiu2018 Inuktituten5213Englishccp5071Chakmasr5372Serbianru5474Russianiu4330 Inuktitutbn1392Banglaar8191Arabicen7818Englishes5471Spanishru7602Russiansr7295Serbianth6321Thaith7608Thaichr2596Cherokeezh7051Chineseiu6544 Inuktitutccp2039Chakmasr3818Serbianes6518Spanishchr410Cherokeebn3855Banglafr7493Frenchchr1413Cherokeefr731Frenchiu4022 Inuktitutru7541Russianes533Spanishth10Thaith2423Thairu4516Russianiu974 Inuktituteo5031 Esperantoiu4601 Inuktitutbn7471Banglaru1184Russianfr4610Frenchccp7924Chakmachr7077Cherokeebn6822Banglachr7537Cherokeebn4911Banglaiu4365 Inuktitutsr6707Serbiansr8030Serbianru3017Russianar6945Arabices812Spanishiu293 Inuktitutsr6523Serbiansr1542Serbianeo7000 Esperantobn1280Banglazh7449Chinesesr7828Serbianiu4516 Inuktitutbn2723Banglaeo4396 Esperantosr597Serbiantr357Turkishchr6535Cherokeeiu1517 Inuktitutbn3729Banglafr2005Frenchzh2760Chineseen1778Englishzh2723Chinesefr2885Frenches4022Spanishtr3935Turkishbn4028Banglael4637Greekiu4733 Inuktitutccp290Chakmaeo5937 Esperantosr2328Serbiansr6338Serbianel7020Greekel299Greekes4595Spanishfr4646Frenchiu8046 Inuktitutar4863Arabicth1711Thaitr3207Turkishzh1410Chineseiu401 Inuktitutes4483Spanisheo6302 Esperantoes2830Spanisheo7625 Esperantoiu1846 Inuktituttr3435Turkishsr3312Serbianel2526Greekzh3713Chinesezh802Chinesear1913Arabicbn4471Banglaar3868Arabicccp4415Chakmael2745Greekbn2240Banglaja1427Japanesebn350Banglachr749Cherokeeiu114 Inuktitutzh8045Chinesetr5016Turkishccp4052Chakmaes3240Spanishiu793 Inuktitutja2064Japaneseiu495 Inuktitutru1840Russianiu7644 Inuktitutiu8100 Inuktitutja6120Japaneseru3146Russiantr3249Turkishtr3655Turkishzh3708Chineseccp2279Chakmachr5039Cherokeeel2921Greekfr1724Frenchtr3318Turkisheo7916 Esperantosr2899Serbianiu6417 Inuktitutfr1149Frenchja6387Japaneseiu1577 Inuktitutiu1179 Inuktituteo5300 Esperantoru2517Russiantr7688Turkishccp5903Chakmaen1404Englishbn74Banglaccp938Chakmazh6720Chinesebn6390Banglaiu6932 Inuktitutfr2953Frenchbn4159Banglafr6653Frenchth1575Thaiccp7305Chakmasr7639Serbianth7344Thaibn6358Banglatr5348Turkisheo7281 Esperantobn3153Banglaru4568Russiantr3033Turkishccp2707Chakmaes2648Spanishfr2040Frenchar871Arabicsr4177Serbianja969Japanesetr4005Turkishzh7271Chinesechr6293Cherokeesr5935Serbianfr5366Frenchzh4108Chinesebn4051Banglasr1003Serbianes150Spanishru1104Russiantr3232Turkishar2731Arabictr2010Turkishel5248Greeken4824Englishchr8111Cherokeear2022Arabicel3738Greekiu7702 Inuktitutru6400Russiantr5799Turkishel1952Greekfr3821Frenchru874Russianru3558Russianzh652Chineseth3721Thaieo4225 Esperantoiu6072 Inuktitutru4871Russianbn6394Banglath6504Thaies2127Spanishes788Spanishtr6645Turkishth4042Thaizh6234Chineseeo4259 Esperantoen2022Englishar6654Arabicel3529Greektr6497Turkishar7603Arabicccp1042Chakmaes7137Spanishth7923Thaichr226Cherokeeccp6264Chakmaru4733Russianccp7816Chakmaes7108Spanishccp6629Chakmaru3866Russianeo1058 Esperantoru4387Russianel4572Greekth1821Thaizh4012Chinesefr5256Frenchja956Japaneseen6803Englishfr405Frenchfr2524Frenchchr2415Cherokeear979Arabicen2937Englishchr1127Cherokeefr4380Frenchel3872Greekzh4222Chinesezh8046Chineseth2058Thaiel4089Greekiu1304 Inuktitutfr890Frenchar3376Arabiceo7548 Esperantozh792Chinesezh291Chinesechr4622Cherokeeeo3958 Esperantoes6020Spanishth196Thaichr5696Cherokeefr1004Frenchtr563Turkishel5346Greekes898Spanishccp1645Chakmasr5498Serbianchr4845Cherokeeen4020Englishiu2230 Inuktitutja1834Japaneseen4797Englishes6616Spanishru4861Russiansr5316Serbianru4766Russianeo7556 Esperantoth3930Thaiar1012Arabicar5543Arabiczh6826Chineseccp1430Chakmaru4176Russianchr3294Cherokeeru7536Russianiu1390 Inuktitutja4018Japaneseth2840Thaith7995Thaisr1862Serbianbn2014Banglath7829Thaija1244Japaneseeo2545 Esperantobn5697Banglael4681Greekeo1015 Esperantotr1404Turkishel2793Greektr6662Turkisheo1457 Esperantozh3488Chinesefr3759Frenchar2953Arabicchr7572Cherokeear6313Arabiciu3394 Inuktitutja4621Japaneseru6043Russianes4135Spanishzh3773Chinesees2411Spanishzh5999Chineseiu1931 Inuktitutzh6314Chinesees6010Spanishru2294Russianbn7244Banglael6539Greekeo3343 Esperantoeo5000 Esperantofr7679Frenchzh4194Chinesear868Arabicar5605Arabictr5579Turkishth1741Thaiel4095Greekar1371Arabiczh1298Chineseeo6603 Esperantoth1314Thaieo7137 Esperantoes6880Spanishfr3330Frenchth1250Thaiel5757Greekth7529Thaizh1656Chinesees2768Spanishiu882 Inuktitutja203Japaneseja2580Japanesear6180Arabicen5197Englishiu1000 Inuktitutes2017Spanishja199Japanesesr3030Serbianth6597Thaiel3486Greeksr4751Serbianeo5976 Esperantosr7611Serbianen4708Englishes3376Spanishiu7844 Inuktitutsr2905Serbiantr5117Turkishtr5226Turkishzh6643Chineseru6879Russiantr7949Turkishchr6674Cherokeeth5178Thaibn5082Banglaccp1415Chakmaja5633Japaneseth5030Thaichr2867Cherokeear7439Arabiceo5 Esperantoeo2746 Esperantoel7422Greekiu4366 Inuktitutccp997Chakmaiu6519 Inuktituttr3152Turkishzh2696Chineseel3353Greekel7290Greekfr5641Frenchsr6005Serbianbn3703Banglachr879Cherokeeel1712Greekes7551Spanishsr5601Serbianfr282Frenchfr5669Frenchel1517Greeksr3325Serbianen3824Englishsr3157Serbianes4983Spanishbn3298Banglaes2590Spanishchr6688Cherokeeen370Englishiu211 Inuktitutsr7557Serbiansr6896Serbianchr491Cherokeeru7622Russianfr1696Frenchar477Arabicbn6896Banglaja5046Japaneseja8119Japanesezh6924Chinesechr7043Cherokeeth3548Thaieo4355 Esperantoel2967Greekeo6532 Esperantoes59Spanishfr799Frenchen4851Englishja1399Japanesebn2675Banglaeo6676 Esperantoar5064Arabicsr920Serbianja5611Japaneseja6455Japaneseeo1751 Esperantoth6434Thaieo5096 Esperantoru6368Russianru3873Russianchr3879Cherokeefr1898Frenchiu4888 Inuktitutsr3464Serbianru5030Russianiu2172 Inuktitutzh5276Chinesesr3368Serbianel273Greekccp1861Chakmachr2644Cherokeefr543Frenchja4475Japaneseccp4250Chakmaen7067Englishtr1457Turkishes2457Spanishel5411Greekja3440Japaneseeo4358 Esperantochr6921Cherokeetr1655Turkishccp4142Chakmachr3463Cherokeefr6168Frenchccp6628Chakmaen3700Englishbn5811Banglaiu2570 Inuktitutru7790Russianccp5137Chakmasr2671Serbianth1912Thaith6732Thairu1452Russiansr4390Serbianar4108Arabicru6012Russianen5316Englishel2877Greekeo5285 Esperantoes1927Spanishes5825Spanishtr4879Turkishccp3708Chakmazh643Chineseeo5368 Esperantoiu4542 Inuktitutel1469Greekzh8108Chineseel924Greekzh1696Chineseccp2941Chakmael3743Greekes2660Spanishar4245Arabicru447Russianbn6012Banglael744Greekel6319Greekes4589Spanishbn3724Banglafr4659Frenches7020Spanishiu5438 Inuktituten3813Englishtr4476Turkishtr4969Turkishccp768Chakmaeo2183 Esperantozh3624Chinesezh4804Chinesezh4860Chineseen6196Englishja4725Japaneseccp3010Chakmaes3866Spanishth5164Thaiar6256Arabicar1876Arabices5834Spanishar1758Arabicchr4434Cherokeefr1647Frenchiu2107 Inuktitutth271Thaizh3159Chinesees2957Spanishccp2608Chakmaeo5269 Esperantofr7326Frenchru7991Russianth3529Thaitr6569Turkishsr7024Serbianbn2360Banglabn3121Banglaru2926Russiantr7338Turkishsr5102Serbianzh2676Chineseen2791Englishzh4310Chinesezh5372Chineseiu4634 Inuktituteo822 Esperantoja487Japaneseja7285Japaneseel436Greekfr3535Frenchel5063Greekes8187Spanishja3397Japanesees3891Spanishiu4186 Inuktitutth6917Thaiel2132Greekiu2199 Inuktitutes1869Spanishbn5401Banglasr6956Serbianth5248Thaiccp5562Chakmaiu344 Inuktitutfr3403Frenchja5842Japanesees1136Spanishar5982Arabicccp7831Chakmaru4891Russianbn1935Banglaru5906Russianth1001Thaien5481Englishzh3804Chineseru1024Russianes3570Spanishth7445Thaifr1335Frenchtr4281Turkishsr2823Serbianchr1676Cherokeeel3021Greekbn7789Banglaeo7424 Esperantobn4356Banglael5304Greekru4514Russianru5803Russianfr5508Frenchsr613Serbiantr7131Turkishbn7927Banglael1086Greekel1323Greekeo4104 Esperantoth3668Thaibn1465Banglatr4700Turkishzh6611Chineseeo7871 Esperantoes4474Spanishiu3806 Inuktitutiu5944 Inuktituttr1286Turkishth4824Thaies1730Spanishfr551Frenchbn6155Banglaeo104 Esperantoar3406Arabicru1374Russianes4032Spanishzh7821Chinesezh7742Chinesebn3973Banglaccp4571Chakmachr3215Cherokeebn3044Banglaen7420Englishja4096Japaneseru3481Russiantr6448Turkishbn1503Banglaen3663Englishes5417Spanishja6049Japanesezh3958Chineseth4795Thaiccp6111Chakmabn7128Banglaeo5962 Esperantobn1684Banglael5216Greekja2930Japanesesr6480Serbiantr2307Turkishiu2877 Inuktitutth787Thaies1272Spanishtr5427Turkishfr5201Frenchzh1760Chinesesr3517Serbianfr7010Frenchccp3130Chakmaen6759Englishccp2026Chakmaar3551Arabicfr1966Frenchtr18Turkishes628Spanishiu580 Inuktitutar6192Arabicja6821Japaneseth6638Thaizh3024Chineseccp3437Chakmaen3124Englishccp2326Chakmatr4980Turkishchr581Cherokeeru2466Russianja193Japaneseiu4240 Inuktitutar610Arabiceo1879 Esperantoes4385Spanishchr1591Cherokeeja5244Japaneseru4206Russianru6291Russianru6352Russianbn7888Banglasr6799Serbianru955Russianeo475 Esperantosr6463Serbianiu2380 Inuktituteo2749 Esperantochr4981Cherokeeru6606Russiantr4825Turkishfr3597Frenchsr5752Serbianbn4647Banglaes6967Spanishsr448Serbianja4118Japaneseeo8054 Esperantoel3925Greekiu6271 Inuktitutja7968Japaneseiu1137 Inuktitutiu3085 Inuktituteo1690 Esperantochr8152Cherokeezh3780Chinesechr1674Cherokeetr1673Turkishen6059Englishbn1866Banglaru3954Russianfr1012Frenchth5710Thaitr2792Turkishsr1482Serbiantr1432Turkishja4969Japaneseccp2980Chakmazh4035Chinesetr2290Turkishiu5681 Inuktitutiu4790 Inuktitutbn1744Banglaru6928Russianth158Thaizh7335Chineseel2851Greeksr7440Serbianel4824Greekchr3192Cherokeeru2224Russianfr1567Frencheo7119 Esperantoel2981Greekth6210Thaieo261 Esperantotr2221Turkisheo393 Esperantoes493Spanishar1046Arabicbn245Banglaja604Japaneseiu5848 Inuktitutja6085Japanesebn7747Banglaen3236Englishzh5806Chineseru1123Russianccp7395Chakmatr5228Turkishja5155Japanesezh959Chineseccp3947Chakmaen3210Englishes980Spanishccp821Chakmaes5728Spanishtr5516Turkishbn6085Banglath5137Thaibn1483Banglabn2201Banglaja818Japanesechr17Cherokeebn3281Banglachr3605Cherokeeeo814 Esperantoiu4871 Inuktituttr654Turkishtr5132Turkisheo2243 Esperantosr6312Serbianeo7960 Esperantoccp1112Chakmaes1221Spanishchr2563Cherokeeen3752Englishar6967Arabicar419Arabicccp6030Chakmaen7180Englishja7261Japaneseel2871Greekja1532Japaneseja169Japanesechr956Cherokeeen3455Englishes7892Spanishccp254Chakmachr7361Cherokeetr5246Turkishtr7686Turkishsr4530Serbianchr6716Cherokeechr4716Cherokeezh4707Chinesezh5309Chineseel5549Greekes1158Spanishccp5490Chakmatr963Turkishccp6890Chakmafr6951Frenchsr4953Serbianccp8136Chakmachr4790Cherokeetr5373Turkishzh2409Chineseccp7016Chakmaes5638Spanishru7165Russianiu6972 Inuktituteo667 Esperantosr5628Serbianth4861Thaieo7377 Esperantoes4982Spanishccp390Chakmaes2379Spanishchr775Cherokeechr2508Cherokeeen4189Englishccp6572Chakmatr2425Turkishtr8141Turkisheo1006 Esperantoiu4498 Inuktituten473Englishja3085Japaneseen1415Englishth1449Thaiiu1794 Inuktitutzh8127Chineseeo1523 Esperantoes3333Spanishtr899Turkishbn7729Banglachr1574Cherokeear7465Arabicel5106Greekja2153Japaneseeo7401 Esperantoiu6497 Inuktitutja3259Japanesetr4090Turkishth2403Thaith5792Thaitr2092Turkishbn6536Banglaja5823Japaneseru7713Russiantr3489Turkishfr6159Frenchccp4103Chakmaen136Englishccp1413Chakmaccp622Chakmaccp2014Chakmaccp7122Chakmaeo2472 Esperantoes7805Spanishbn5804Banglatr529Turkishes3886Spanisheo6355 Esperantozh8029Chineseiu1663 Inuktituttr3380Turkishchr2439Cherokeeel800Greeken499Englishccp237Chakmaen952Englisheo1791 Esperantofr2663Frenchtr6911Turkishzh2518Chineseen5448Englishja4181Japaneseeo7486 Esperantoel5719Greekeo1220 Esperantoth1876Thaiccp6619Chakmachr7811Cherokeesr7220Serbianfr503Frenchchr4856Cherokeeiu4806 Inuktitutzh691Chinesees1145Spanishiu7502 Inuktitutccp4765Chakmatr120Turkishbn1563Banglaes5463Spanisheo6867 Esperantochr5187Cherokeeiu5320 Inuktitutsr2599Serbianen7515Englishar7473Arabiceo3563 Esperantotr2446Turkishchr6259Cherokeebn4243Banglaja2020Japaneseth3394Thaieo365 Esperantoiu2524 Inuktitutbn7289Banglaccp2409Chakmaar258Arabices5570Spanisheo1097 Esperantosr2063Serbiantr14Turkishru3095Russianzh3840Chineseru7391Russianzh1237Chinesechr6337Cherokeefr3437Frenchth7437Thaien7950Englishbn83Banglaeo235 Esperantoiu172 Inuktitutel5966Greekes4486Spanishsr3429Serbianth6242Thaitr2511Turkishtr5403Turkishen7820Englishzh2788Chinesees4600Spanishen7501Englishiu4376 Inuktitutccp2234Chakmazh5509Chineseccp992Chakmaiu3331 Inuktituttr4925Turkishzh5304Chinesesr4536Serbianzh2541Chineseiu1854 Inuktitutth1039Thaien7410Englishes1499Spanishiu2763 Inuktituteo4872 Esperantochr1950Cherokeeeo5991 Esperantoiu2244 Inuktitutsr3713Serbianru3534Russianccp3300Chakmasr1637Serbianccp1653Chakmaja5963Japanesefr869Frenchja347Japaneseen2351Englishfr4414Frenchen103Englishen844Englishiu7152 Inuktituttr6983Turkishar5075Arabicru7426Russiantr2264Turkishiu5563 Inuktitutiu6427 Inuktitutzh5648Chinesetr4138Turkishfr1651Frenches7598Spanishru2676Russianes7065Spanishar2349Arabicchr6758Cherokeeen1939Englishar7353Arabicru4140Russianbn2446Banglasr3215Serbiantr1720Turkishen324Englishchr2438Cherokeechr196Cherokeeel5577Greekiu4005 Inuktitutccp2113Chakmaes2060Spanishiu792 Inuktitutja5967Japanesechr7240Cherokeeru6877Russianth821Thaies2197Spanishccp5535Chakmaes4186Spanishth1066Thaizh7720Chinesebn1461Banglath5372Thaisr5183Serbianccp2386Chakmaes158Spanishfr7992Frenchtr4804Turkishccp7208Chakmaen4793Englisheo1680 Esperantoel6111Greekeo7716 Esperantoiu7199 Inuktitutzh3278Chinesezh1695Chineseiu1683 Inuktitutru713Russianccp5942Chakmath5788Thaieo5079 Esperantoar1771Arabicru6176Russianiu112 Inuktitutchr1142Cherokeesr5336Serbianru3915Russianru656Russianar7973Arabicsr3933Serbianes515Spanishccp7512Chakmath2317Thaiiu4557 Inuktitutth6332Thaibn5796Banglaar1293Arabicchr4241Cherokeeiu5323 Inuktitutsr7995Serbiantr2336Turkishel5659Greeksr422Serbianeo7285 Esperantoru6209Russianja2627Japanesetr331Turkishzh6241Chineseeo4504 Esperantoiu2377 Inuktitutes4609Spanishiu1698 Inuktitutiu3012 Inuktitutsr3720Serbianru5433Russianccp4076Chakmaen4310Englishth4495Thaiccp5493Chakmael3130Greekar3435Arabicchr1375Cherokeeccp4118Chakmaccp6482Chakmaja490Japaneseth1653Thaiar300Arabicar5202Arabiczh1742Chineseel2629Greekiu20 Inuktitutsr2516Serbianzh1335Chineseen1177Englishfr249Frenchzh3892Chinesear1782Arabicbn7039Banglaccp6813Chakmaen1905Englishru1583Russianja2016Japaneseth1399Thaith2857Thaiar5633Arabicccp733Chakmaccp2696Chakmaeo3167 Esperantoeo5939 Esperantotr91Turkishfr6123Frenchchr1Cherokeeiu3487 Inuktitutth6805Thaichr884Cherokeeiu7840 Inuktituten2406Englishtr6605Turkishru3566Russianiu6389 Inuktituttr6880Turkishth3226Thaiiu8111 Inuktitutchr7058Cherokeeru4041Russianru6710Russiansr1278Serbianfr877Frencheo6055 Esperantobn4624Banglaru5484Russiansr6196Serbiantr5096Turkishja1548Japanesechr822Cherokeear7009Arabiceo4725 Esperantoth5345Thaiccp2545Chakmaes4887Spanishzh5503Chineseccp971Chakmatr2539Turkishiu2890 Inuktitutbn2568Banglaar3271Arabicchr2373Cherokeeen1433Englishiu3219 Inuktitutsr7571Serbianccp5382Chakmaru771Russianes3084Spanishfr6304Frenchchr5029Cherokeefr4510Frenchar6503Arabicel3444Greekar7995Arabicen6892Englishru2369Russianja3652Japanesetr7742Turkishsr7409Serbianth626Thaien4930Englishth6879Thaija4735Japaneseen7495Englishccp4507Chakmasr3783Serbianth2780Thaiiu6255 Inuktitutth7462Thaiiu1763 Inuktitutccp340Chakmaiu3025 Inuktitutar4701Arabictr6478Turkishth5506Thaiccp6094Chakmazh4928Chinesear4707Arabicel259Greekchr5936Cherokeeeo4206 Esperantoar4127Arabicru6726Russianzh5856Chineseth1241Thaiiu2303 Inuktitutfr3117Frencheo751 Esperantoeo3015 Esperantochr575Cherokeeiu5857 Inuktitutccp6090Chakmaes4172Spanishbn4144Banglaen3275Englishen3598Englishes2168Spanishel6200Greekchr7906Cherokeefr646Frenchzh8076Chinesefr5533Frenchchr7246Cherokeeccp6994Chakmaja3307Japanesesr549Serbianeo1304 Esperantoiu7971 Inuktitutru3710Russianar3027Arabicccp7004Chakmaes5691Spanishtr1573Turkishtr7893Turkishar206Arabiczh921Chineseccp5292Chakmaiu1106 Inuktitutzh7981Chinesesr30Serbiansr5503Serbianja2682Japanesees999Spanishiu2555 Inuktitutel6424Greekel203Greekfr5274Frenchsr1736Serbiantr5232Turkishbn5014Banglaeo5854 Esperantozh8035Chinesees6808Spanishchr5819Cherokeeth3594Thaija5199Japanesees5557Spanishar895Arabictr5703Turkishth5362Thaibn5574Banglaen7942Englisheo7428 Esperantobn5760Banglath7468Thaija3096Japanesefr1242Frenchbn5436Banglaccp2325Chakmazh52Chineseen3280Englishccp4010Chakmath369Thaichr6908Cherokeeel7125Greekes4280Spanishen1216Englishtr6521Turkishfr4271Frenchfr5876Frenchru238Russianfr2935Frenchar5641Arabicchr7344Cherokeeccp5422Chakmaru6953Russianzh3392Chinesear2018Arabicsr6177Serbianar6210Arabicchr560Cherokeeiu5095 Inuktituteo4988 Esperantoes2288Spanishiu6492 Inuktitutja3691Japaneseth4141Thairu7911Russianfr466Frenchccp2238Chakmaiu842 Inuktitutsr6209Serbianiu4233 Inuktitutzh5080Chineseeo7824 Esperantochr4740Cherokeees4074Spanishja349Japaneseccp5357Chakmatr2629Turkishccp3094Chakmabn597Banglafr2094Frenchru3739Russianel206Greekccp120Chakmasr8186Serbianbn7642Banglafr7166Frenchru2448Russianchr6997Cherokeezh5737Chinesezh7917Chinesezh7201Chineseen5756Englishccp7235Chakmaes2712Spanishiu7503 Inuktituteo5518 Esperantoiu4410 Inuktitutsr6905Serbianth6749Thaiccp5248Chakmaes5248Spanishzh7328Chinesees7407Spanishth6166Thaitr8047Turkishar5572Arabices3924Spanishar7197Arabictr4240Turkishar2590Arabiczh1513Chinesezh2063Chineseru6313Russianja7096Japanesechr8052Cherokeeja1278Japaneseel3829Greekfr4300Frenchbn8136Banglaar4272Arabicja4962Japanesesr5481Serbianfr3724Frenchar8063Arabicen1661Englishtr6573Turkishen2592Englishfr7110Frenchbn2957Banglachr517Cherokeebn6986Banglaiu3137 Inuktitutsr1378Serbianfr8016Frenchsr5219Serbianchr583Cherokeeiu934 Inuktitutru3591Russianzh5751Chinesebn332Banglazh3033Chinesefr4859Frenchru2489Russianchr737Cherokeear2176Arabices463Spanishth1445Thaizh4270Chinesesr7938Serbianchr5088Cherokeeel3020Greekel3739Greekfr4063Frenchja3802Japanesear3242Arabicen7664Englishel352Greekfr2117Frenches6174Spanishiu1221 Inuktitutfr4085Frenchja115Japanesetr6070Turkishzh3473Chineseiu326 Inuktitutel3839Greektr3786Turkisheo3525 Esperantoiu5755 Inuktitutchr729Cherokeeel2591Greekfr2832Frenchsr3033Serbiantr2564Turkishar5623Arabicth509Thaichr1706Cherokeesr7796Serbianbn175Banglaes5575Spanishth4656Thaieo7337 Esperantotr44Turkishru5766Russianen4820Englishccp3900Chakmaar266Arabicccp6658Chakmachr4137Cherokeeel79Greeken5622Englishen3780Englishbn1803Banglafr3655Frencheo3800 Esperantochr6844Cherokeear1330Arabicen2002Englishzh8158Chineseel5765Greekeo4080 Esperantoiu7758 Inuktitutel6728Greeken5465Englishes151Spanisheo343 Esperantoccp3756Chakmafr4391Frenchzh3027Chinesesr766Serbianbn6816Banglachr1228Cherokeetr2431Turkishccp3700Chakmazh3309Chinesear1633Arabiceo7738 Esperantoeo3642 Esperantofr1680Frenchsr6041Serbianeo4346 Esperantozh585Chineseja2151Japanesear849Arabicchr3803Cherokeesr2189Serbianzh1962Chinesesr718Serbianiu4538 Inuktitutsr2726Serbianzh4436Chinesebn5943Banglael3029Greekfr4750Frenchru5224Russianar3927Arabicccp7232Chakmael1066Greekth756Thaiccp2764Chakmachr2754Cherokeetr896Turkishes3788Spanishen7506Englishen2194Englishar6563Arabicbn1515Banglatr4016Turkishar5911Arabices5544Spanishth2708Thaiiu4623 Inuktituten1510Englishfr7359Frenchbn4083Banglachr6319Cherokeeccp1901Chakmaen2232Englishccp7037Chakmaen4560Englishes1928Spanishchr3054Cherokeesr7606Serbianccp7218Chakmazh5073Chinesees4249Spanishes11Spanishccp2640Chakmaru4684Russianth5992Thaibn6140Banglaru462Russianchr7694Cherokeeja4145Japanesesr721Serbianth8094Thaiiu3840 Inuktitutru1847Russianchr499Cherokeeccp2727Chakmath5169Thaibn3838Banglaeo1201 Esperantochr2689Cherokeeru6684Russianth1120Thaifr5982Frenchiu5830 Inuktituteo6027 Esperantoja2573Japanesezh6664Chinesechr6451Cherokeezh607Chineseeo5360 Esperantoes6949Spanishth6821Thaichr5117Cherokeetr3335Turkishzh6881Chineseel5407Greekbn4436Banglazh1558Chinesees955Spanishtr2288Turkishiu2816 Inuktitutth2301Thaith5501Thaith7809Thairu404Russiansr2228Serbianen1733Englishiu1618 Inuktitutccp1325Chakmaja3701Japanesezh6001Chinesechr7088Cherokeees7801Spanishchr74Cherokeeccp3484Chakmath4753Thaiel2164Greekzh2914Chineseiu3267 Inuktitutes5259Spanishchr119Cherokeetr2398Turkishes3332Spanishja1067Japanesesr8055Serbianes4980Spanishchr5679Cherokeees1642Spanishja2321Japanesear7409Arabictr7306Turkisheo1459 Esperantozh3353Chineseen5076Englishes7267Spanishel266Greekel4174Greekru5830Russianccp4520Chakmafr5232Frenchja3640Japanesechr1229Cherokeeiu2699 Inuktitutth5106Thaith5238Thaiel5031Greekel7803Greekeo6143 Esperantochr4297Cherokeees6442Spanishar2602Arabicen8124Englishccp3750Chakmaeo1253 Esperantozh2510Chineseth4603Thaibn2571Banglael1825Greekar3019Arabices1652Spanishfr5329Frenchiu6633 Inuktituten6169Englishja2568Japanesetr102Turkisheo1085 Esperantoru535Russianes831Spanishiu2798 Inuktitutiu7661 Inuktitutbn1248Banglaja1619Japaneseth1642Thaitr7192Turkisheo1266 Esperantoar613Arabiceo401 Esperantobn5985Banglachr7159Cherokeetr592Turkishzh7900Chineseen4576Englishbn5305Banglaja764Japaneseja4232Japanesesr2890Serbianen1947Englishja2304Japaneseeo1996 Esperantoes843Spanishes7185Spanishzh3833Chineseja6262Japaneseja5961Japanesesr4898Serbianzh7729Chineseiu738 Inuktituttr4686Turkishar6395Arabiczh2277Chineseiu7866 Inuktitutsr1330Serbianeo4246 Esperantoeo7750 Esperantochr3682Cherokeeru1596Russianccp170Chakmath3823Thaija2452Japaneseru4747Russianbn257Banglaja254Japaneseja6449Japaneseru4786Russianja125Japaneseccp2382Chakmaja2335Japanesebn1450Banglael565Greekchr3927Cherokeeja4446Japaneseccp387Chakmafr1212Frenchtr1314Turkishth6858Thaiccp5420Chakmatr6597Turkishbn707Banglaiu4218 Inuktitutru2592Russianbn4209Banglaru7781Russianccp3416Chakmaja6783Japaneseccp4860Chakmaeo6902 Esperantoja7002Japaneseru349Russianes1834Spanishtr7992Turkisheo219 Esperantoja7903Japaneseru4954Russiantr5832Turkishtr6954Turkishzh5094Chinesebn16Banglaar2562Arabiceo6037 Esperantotr2241Turkishen7494Englishfr7512Frenchtr424Turkishru6866Russianeo1107 Esperantoes4719Spanishel5191Greekbn232Banglatr4084Turkisheo4574 Esperantoen5341Englishen3213Englishes7764Spanishes4811Spanishtr4506Turkishja1469Japaneseru4963Russianiu6095 Inuktitutar1126Arabicth3237Thairu4838Russianja7367Japanesesr7833Serbianru6954Russianar1791Arabicth4057Thaiar6054Arabiceo1308 Esperantoar3514Arabiceo6953 Esperantobn1568Banglaen3540Englishel6530Greekar2312Arabicfr6130Frenchru3160Russianfr8108Frenchiu6465 Inuktitutchr1626Cherokeear3232Arabicchr2535Cherokeeen7205Englishja33Japanesefr3317Frenchtr964Turkishtr5142Turkisheo5286 Esperantoar2552Arabicth1168Thaizh6340Chinesefr345Frenchfr7727Frenchsr4392Serbianel6412Greekchr764Cherokeefr5707Frenchiu4414 Inuktitutccp6570Chakmath1083Thaith1277Thaith7414Thaies3292Spanishar5169Arabicchr6578Cherokeeth173Thairu4348Russianzh2721Chineseth2868Thaitr3619Turkishru2100Russianru4013Russianiu6837 Inuktitutfr4124Frenchchr6322Cherokeear675Arabicth481Thaies1925Spanishzh6640Chineseeo3330 Esperantoar3976Arabicbn6254Banglasr3675Serbianth7888Thaien1266Englishth7405Thaifr2528Frenchen4749Englishtr7623Turkishccp2854Chakmachr6236Cherokeeel7986Greekth2022Thairu7230Russianar1901Arabicar3840Arabicth6173Thaiar8085Arabicen7884Englishen2982Englishru7883Russianen7698Englishccp2852Chakmaru7093Russianbn6039Banglabn814Banglael2160Greekchr2209Cherokeeth7762Thaiar8012Arabicchr6368Cherokeeeo2357 Esperantochr2948Cherokeeeo1248 Esperantoth4166Thaitr6011Turkishes6077Spanishccp5002Chakmaeo3775 Esperantoes1490Spanishccp3734Chakmachr6729Cherokeeth5112Thaizh5897Chinesezh7637Chinesees5673Spanishzh2451Chineseccp4258Chakmaccp4646Chakmachr4107Cherokeeeo2056 Esperantoes5874Spanishccp7686Chakmaes1824Spanishfr7756Frenches839Spanishru64Russianel934Greekar7055Arabicar1924Arabices4579Spanishel2739Greekja7500Japanesesr7567Serbianth7226Thaisr5848Serbianfr956Frencheo5372 Esperantoel8004Greekes3901Spanishzh743Chinesees5470Spanishsr8040Serbianar3137Arabicru4605Russianeo3336 Esperantoeo2991 Esperantoeo6765 Esperantoth2465Thairu4818Russiantr2297Turkishzh1162Chineseiu1910 Inuktitutzh7496Chinesezh7116Chineseth3566Thaiel4675Greekth4203Thaiiu3244 Inuktitutes5773Spanishar3363Arabiczh1072Chineseth5441Thaichr6566Cherokeeeo5384 Esperantoru3786Russianru6133Russianar7407Arabices2880Spanishes8001Spanishen3091Englishchr4956Cherokeeru3893Russianth508Thaith5190Thaiel7831Greekzh1661Chineseeo4502 Esperantoth7159Thaitr5902Turkishar6699Arabicchr7334Cherokeeja1750Japaneseel205Greeken4047Englisheo3554 Esperantosr1141Serbianar3526Arabiciu2564 Inuktitutsr7184Serbianchr127Cherokeeeo17 Esperantoes4995Spanishes6931Spanishth6296Thairu1126Russianja7484Japanesezh736Chinesear7089Arabicen2725Englishiu2934 Inuktitutccp1970Chakmabn7053Banglasr7468Serbiantr2882Turkishtr1864Turkishar6889Arabicchr4029Cherokeetr1770Turkishes6841Spanishbn4945Banglaja3279Japaneseen2587Englishiu5562 Inuktitutth4724Thaien6158Englishiu1111 Inuktitutar3163Arabicccp6609Chakmael82Greekel7603Greekbn5858Banglaen3160Englishes6831Spanishiu5242 Inuktitutja2521Japaneseja5684Japaneseeo1807 Esperantoes5227Spanishen7120Englishar1910Arabicth2409Thaiiu6895 Inuktituten472Englishes2978Spanishfr855Frenches4371Spanishiu8189 Inuktitutth3761Thaiar2814Arabicfr3468Frenchen2138Englishiu2959 Inuktituttr7574Turkishar3087Arabictr5266Turkishfr6819Frenchbn6660Banglaccp6858Chakmaes1703Spanishchr2240Cherokeeja4082Japanesesr4179Serbianccp2706Chakmasr4065Serbianel307Greekru4872Russiansr5616Serbianzh6084Chinesezh7521Chinesees1247Spanishth3168Thaiccp174Chakmasr4797Serbianzh6308Chinesesr5320Serbianzh6270Chinesear1411Arabicen6443Englishen6607Englishja4390Japanesebn7008Banglaja3189Japaneseccp5309Chakmaeo294 Esperantoru7354Russianeo754 Esperantoru199Russianfr768Frenchzh2125Chineseel486Greeken5031Englishfr1094Frenchiu2433 Inuktitutth6320Thaiccp229Chakmazh6382Chinesesr4566Serbianccp1739Chakmaes4232Spanishccp1864Chakmasr6112Serbianen5782Englishel3801Greekth1045Thaiel3598Greekchr5381Cherokeees1420Spanishbn7831Banglabn8143Banglaar3101Arabicccp6645Chakmaar4851Arabicsr3289Serbiantr986Turkishen7672Englishccp7060Chakmael7040Greekja3722Japanesesr4073Serbianel4911Greekchr146Cherokeetr5155Turkishja1120Japaneseru6520Russianru6662Russianiu1490 Inuktitutes568Spanishchr6656Cherokeeccp5389Chakmael1890Greeksr1986Serbianccp3690Chakmael6135Greekchr2037Cherokeetr487Turkishru6196Russianzh6041Chinesechr897Cherokeesr3997Serbianel8153Greekccp3853Chakmachr3007Cherokeeeo7823 Esperantoeo5492 Esperantoel5701Greekccp3175Chakmazh5230Chinesees679Spanishzh109Chineseiu2847 Inuktitutchr3453Cherokeeiu2771 Inuktituteo4766 Esperantoja4032Japanesees6018Spanishsr4118Serbianeo1515 Esperantoen1331Englishzh1222Chineseja4680Japaneseth5130Thaichr1251Cherokeebn3511Banglaeo6503 Esperantoiu2245 Inuktitutbn1490Banglaja4646Japanesechr4043Cherokeeeo4090 Esperantobn7320Banglaar6122Arabices4582Spanishfr5328Frenchchr2895Cherokeeru747Russianru6114Russianfr2401Frenchiu2182 Inuktitutes6488Spanishru2475Russianja1048Japanesefr2206Frenchccp2102Chakmaes2781Spanishsr5178Serbianja60Japanesezh4543Chinesesr6483Serbianchr3874Cherokeechr2711Cherokeefr6322Frenchiu1834 Inuktitutzh5525Chineseru7560Russiansr627Serbianel7554Greekja421Japaneseiu947 Inuktituttr4543Turkishes5266Spanishja3901Japaneseja6970Japanesear243Arabicbn7260Banglafr6070Frenchzh4215Chinesear3815Arabictr8177Turkisheo4516 Esperantoja1890Japaneseth259Thaiccp4034Chakmael1674Greekeo5356 Esperantosr6675Serbianiu6768 Inuktitutzh6065Chinesebn2379Banglazh718Chinesetr1887Turkishsr1370Serbianen2722Englishen5254Englishsr1032Serbianchr3144Cherokeebn1228Banglazh7465Chineseel1736Greeken2342Englishtr7355Turkishccp3367Chakmaeo2543 Esperantoth306Thaien1639Englishja6489Japaneseccp2567Chakmaccp195Chakmaes1556Spanishsr5088Serbianiu1815 Inuktitutbn3856Banglaes8153Spanishen7716Englishes6569Spanisheo1649 Esperantoar1496Arabicja5137Japaneseth8128Thaizh7585Chinesebn2309Banglasr4378Serbiantr412Turkishar166Arabiczh4847Chineseiu975 Inuktitutar3478Arabicen7559Englisheo2435 Esperantoiu2031 Inuktitutiu4659 Inuktitutchr7150Cherokeechr4488Cherokeeru3396Russianccp8113Chakmachr7501Cherokeezh824Chinesebn634Banglaccp6369Chakmaru5961Russianiu1671 Inuktitutbn2189Banglaccp7404Chakmaru519Russianru4256Russianth7184Thaizh3081Chineseccp5664Chakmabn6830Banglaccp7451Chakmaeo4565 Esperantoeo1320 Esperantoccp3339Chakmachr721Cherokeeja7340Japanesezh1228Chinesetr3262Turkishiu6865 Inuktitutja5921Japanesebn5021Banglabn5987Banglaccp7388Chakmafr2003Frenchth4808Thaies2752Spanishfr3824Frenchth4879Thaiar486Arabicbn5151Banglasr2954Serbianru4715Russianiu2954 Inuktitutru2026Russianccp3579Chakmath1934Thaichr7362Cherokeeja4986Japanesetr2992Turkishar5279Arabicfr2536Frenchen6972Englishja4417Japaneseth8004Thaiiu7365 Inuktitutzh3607Chinesechr3942Cherokeeja6606Japanesefr4840Frenchth7191Thaies3276Spanishsr4792Serbianen4267Englishzh6060Chineseiu4038 Inuktitutiu6604 Inuktitutar3862Arabicccp2252Chakmael6945Greekfr1444Frenchja5885Japanesefr7005Frenchccp2255Chakmafr3187Frenchth2936Thaith4384Thaisr1134Serbianzh1062Chineseja6218Japanesezh6508Chinesechr1302Cherokeear2165Arabiceo2402 Esperantofr5762Frencheo3718 Esperantoru2902Russiantr4720Turkishtr835Turkishccp4908Chakmaes1633Spanishes6664Spanishfr2796Frenchiu3899 Inuktituttr1476Turkishzh3856Chinesezh4473Chineseja2477Japaneseeo5806 Esperantosr7696Serbianen7457Englisheo7624 Esperantoes4526Spanishtr1270Turkishzh4182Chinesesr1635Serbianbn690Banglaiu5333 Inuktitutsr8130Serbianzh6225Chinesees2307Spanishar8033Arabicen5463Englishja247Japanesesr4109Serbianzh5571Chineseiu1557 Inuktitutel5819Greekth5176Thaibn7123Banglaeo1817 Esperantoeo5506 Esperantobn2401Banglazh4477Chinesebn6608Banglaiu8063 Inuktitutiu492 Inuktitutbn1160Banglachr6264Cherokeeel2486Greekth764Thaiar2431Arabicbn7838Banglael2634Greekja2356Japanesesr3073Serbianel7340Greekru6098Russianbn2783Banglaeo7831 Esperantoeo7635 Esperantochr2166Cherokeesr3973Serbianzh2050Chinesezh216Chineseel2128Greekes1977Spanishzh2771Chinesezh4609Chineseth8117Thaija4152Japanesefr2435Frenchru4120Russianel4842Greekccp550Chakmaen6657Englishtr5857Turkishiu6390 Inuktitutru6461Russianbn7272Banglachr3296Cherokeear3128Arabicbn1295Banglaeo3910 Esperantoeo5308 Esperantozh7797Chineseja4566Japanesebn4331Banglafr4359Frenchar3367Arabicchr831Cherokeefr6418Frenchth2128Thaitr395Turkishccp7590Chakmatr5102Turkishth723Thaiccp5458Chakmasr2932Serbianth7438Thaiccp6603Chakmaiu6323 Inuktitutel6061Greekes4782Spanishiu4940 Inuktitutja5273Japanesesr398Serbianccp4330Chakmazh5236Chineseja5177Japaneseeo3133 Esperantobn5432Banglaes4768Spanishtr2835Turkishes1896Spanishccp3451Chakmael4947Greekru1695Russianru3869Russiantr7791Turkishar7672Arabicfr3398Frenchen6019Englishbn7311Banglaen1439Englishfr1638Frenchtr670Turkishja19Japaneseel143Greekja2109Japaneseen8005Englisheo6678 Esperantoiu5498 Inuktitutsr6583Serbianbn1468Banglazh5031Chinesechr1773Cherokeeel8189Greekja6900Japaneseen2411Englishes6479Spanishen443Englisheo6778 Esperantoeo1367 Esperantoccp5651Chakmaen6621Englishel4456Greeksr2064Serbianzh7471Chineseeo6680 Esperantosr3041Serbiantr7386Turkishru3912Russianiu353 Inuktitutfr6297Frenchen674Englishar5459Arabiceo1344 Esperantoiu319 Inuktitutes4663Spanishel2072Greekfr7974Frenches5194Spanishzh5125Chinesesr7656Serbianccp6234Chakmaar4470Arabicchr7708Cherokeeja233Japanesees7740Spanishccp1879Chakmaar7529Arabicsr6210Serbianth235Thaichr7225Cherokeeel5727Greekeo517 Esperantoes205Spanishru4876Russianes8033Spanishru1691Russianar5141Arabicbn3039Banglatr275Turkishzh689Chineseccp3546Chakmatr2800Turkishth5744Thaien3805Englishja902Japaneseccp1897Chakmaeo6263 Esperantoja7707Japaneseth4553Thaija2893Japaneseiu6062 Inuktitutru6154Russianchr1103Cherokeechr2698Cherokeezh2835Chinesees3942Spanishen3788Englishru3953Russianiu5082 Inuktitutth3740Thaiccp3082Chakmachr8116Cherokeeccp7953Chakmael4344Greekccp548Chakmael4430Greeken1077Englishfr5931Frenchfr6061Frenchfr6401Frenchccp3104Chakmaru6855Russianar7260Arabicen2311Englishel1868Greekzh1209Chinesezh2756Chinesear4793Arabices7062Spanishru4260Russianfr5831Frenchbn3100Banglachr3939Cherokeeeo211 Esperantoru4748Russianzh5196Chinesetr43Turkishbn2679Banglabn1989Banglaja143Japaneseel6988Greektr4712Turkishen7717Englishja348Japaneseccp751Chakmaes2575Spanishes1913Spanishiu4408 Inuktitutja3413Japanesebn1722Banglaccp338Chakmaar2766Arabiciu3874 Inuktituteo2942 Esperantoru7791Russianes3871Spanishchr7941Cherokeesr8183Serbianar507Arabicru1356Russianth3697Thaiel2593Greekja6672Japaneseel584Greekfr7751Frenchfr4759Frenchbn4831Banglael6442Greekja4489Japaneseen1310Englishen1098Englisheo1877 Esperantosr2612Serbianth4636Thaichr1028Cherokeetr5791Turkishja3734Japaneseel2688Greeken2747Englishchr937Cherokeefr6609Frenchja4010Japanesebn7686Banglachr4526Cherokeeja5183Japanesezh4902Chinesear6106Arabicen248Englishfr708Frenchtr2546Turkishel3032Greekja4927Japanesechr4517Cherokeeth4592Thaiar1856Arabicbn4474Banglachr5179Cherokeeel5737Greektr2135Turkishchr3277Cherokeechr6391Cherokeear3563Arabiceo4633 Esperantoru1600Russianeo4611 Esperantoccp3837Chakmaar6972Arabiceo3638 Esperantoccp4645Chakmaja2410Japanesetr8015Turkishen5482Englishccp7996Chakmaru5165Russianzh6004Chineseen3460Englishiu5658 Inuktitutiu3020 Inuktitutel731Greekccp1777Chakmazh2718Chinesesr6533Serbiantr7371Turkishes3831Spanishccp6697Chakmaru5979Russianru7775Russianccp6337Chakmael1817Greekfr4754Frenchccp3980Chakmaja2540Japanesebn1400Banglaes3275Spanishccp1785Chakmabn3141Banglaru3597Russianbn7841Banglaar5782Arabicccp3944Chakmaja263Japaneseccp6373Chakmaar6483Arabicar726Arabicth5211Thaiel7435Greekru735Russianar1831Arabicar4572Arabicbn6584Banglaru3897Russianfr7004Frenchccp5232Chakmachr1872Cherokeeel6526Greekar5705Arabicth3467Thaibn7401Banglasr3191Serbiantr6406Turkishchr1569Cherokeechr4902Cherokeetr2840Turkishel8095Greekzh1902Chineseeo3756 Esperantoru548Russiansr8178Serbianchr6654Cherokeees6601Spanishja2575Japanesetr5780Turkishar439Arabictr4350Turkishfr884Frenchfr2351Frenchiu616 Inuktitutzh4513Chinesetr5682Turkishtr7447Turkishsr7328Serbianzh5173Chineseel4309Greekel4463Greekeo3977 Esperantoiu6516 Inuktitutbn2558Banglaeo6053 Esperantofr4757Frenchbn3364Banglabn190Banglaes1988Spanishel7200Greekel1786Greekiu7681 Inuktituttr2428Turkisheo6065 Esperantoes6564Spanishen6616Englishiu3618 Inuktitutchr2123Cherokeesr2134Serbianiu3328 Inuktitutccp2900Chakmafr6545Frenchiu1027 Inuktitutsr4245Serbianar134Arabices4509Spanishru1326Russiansr4789Serbianccp6001Chakmaiu6080 Inuktitutchr1041Cherokeear6314Arabicchr2523Cherokeefr4166Frenchen3424Englishen3491Englishiu3388 Inuktitutiu8174 Inuktitutsr6530Serbianen1076Englishar6975Arabicja62Japanesear1662Arabicen4854Englishfr3679Frenchen4132Englishel628Greekes465Spanisheo3485 Esperantosr972Serbiantr1697Turkishccp1852Chakmaccp2630Chakmaeo108 Esperantobn1330Banglaar5367Arabicen2787Englishru7411Russianen3647Englishbn776Banglachr5358Cherokeetr3336Turkishiu449 Inuktitutsr654Serbianchr2120Cherokeefr2829Frenchru1874Russiansr436Serbianar4316Arabicth2425Thaitr2983Turkishccp690Chakmaiu2061 Inuktitutes3363Spanishiu2721 Inuktitutar7877Arabiciu5274 Inuktitutru1572Russiantr1954Turkishth3100Thaiiu1134 Inuktitutsr1734Serbianen835Englishja4499Japaneseth70Thaija8138Japanesefr467Frenchth6340Thaiar635Arabicen4210Englishen5228Englishar591Arabicccp78Chakmaen6663Englishel6869Greeken4054Englishja7235Japanesezh2426Chineseccp5276Chakmasr6592Serbiantr6270Turkishbn5500Banglath5514Thaifr7612Frenchccp1083Chakmaen6559Englisheo3669 Esperantochr2870Cherokeeja5841Japanesees2391Spanishbn5229Banglazh6445Chineseth4371Thaiccp1019Chakmaiu771 Inuktituttr1237Turkishchr4227Cherokeefr5141Frenches2032Spanishes7634Spanishru1273Russianzh6120Chineseiu1932 Inuktituttr4604Turkishar7909Arabicru7384Russiantr2733Turkishru320Russiansr2755Serbiantr7006Turkishzh2393Chinesefr1285Frenchel3168Greeken4004Englishbn419Banglasr2119Serbiantr7955Turkishiu3478 Inuktitutja4762Japaneseen1377Englishsr7172Serbianru1540Russianru4422Russiansr6642Serbianiu6762 Inuktitutar2418Arabicru4917Russianar4444Arabiczh701Chineseru88Russianja7994Japanesear5000Arabiceo4327 Esperantoeo5675 Esperantozh2071Chineseen3919Englishar5661Arabiciu6577 Inuktitutzh4825Chineseiu4224 Inuktitutel4112Greekccp4531Chakmafr3225Frenchchr1552Cherokeeth571Thaiccp7670Chakmaar5685Arabiceo2518 Esperantoiu1185 Inuktitutbn1452Banglaccp461Chakmaen949Englishar2644Arabiczh385Chinesees7473Spanishja2421Japanesetr8181Turkishth5703Thaifr2073Frenchth2325Thaija467Japanesechr110Cherokeeru3121Russianar7721Arabicfr5609Frenchru1232Russiantr3109Turkishzh6104Chineseel3258Greekfr2670Frenchar96Arabices383Spanishru7697Russiansr3301Serbianiu73 Inuktitutes7999Spanishja7326Japaneseth5317Thaiiu6824 Inuktitutar3520Arabictr3045Turkishru29Russiantr2337Turkishja7359Japaneseen211Englishru7014Russianar2968Arabicth7970Thaies3430Spanishtr1321Turkishtr5664Turkishiu5737 Inuktitutfr3527Frencheo568 Esperantoru4106Russianccp1640Chakmael2678Greekja1903Japaneseiu2653 Inuktituteo189 Esperantofr4287Frenchsr160Serbianar454Arabicbn971Banglaeo6262 Esperantoth741Thaies4893Spanishccp3048Chakmaiu7807 Inuktitutes5494Spanisheo1094 Esperantoru2661Russianiu7912 Inuktitutru236Russianth1041Thaibn5209Banglachr3863Cherokeeel2806Greekiu632 Inuktitutel6793Greektr7496Turkishru1160Russiansr4731Serbiansr760Serbianes263Spanisheo5952 Esperantoeo2682 Esperantotr4442Turkisheo4968 Esperantochr5559Cherokeebn7790Banglaar3278Arabictr7283Turkishth355Thaibn540Banglasr4857Serbianzh1706Chinesezh4800Chineseen6675Englishen1963Englishzh2992Chineseccp7394Chakmath570Thaija2315Japanesechr3472Cherokeezh1631Chineseja3523Japaneseja1897Japaneseiu2563 Inuktituttr718Turkishbn6506Banglachr4279Cherokeeel6872Greekeo2306 Esperantoja208Japaneseccp7830Chakmaeo7857 Esperantoja799Japanesees6366Spanishtr6572Turkishes4217Spanishbn6805Banglabn6948Banglaeo2837 Esperantoen2909Englisheo3474 Esperantoeo6273 Esperantoeo7248 Esperantosr4779Serbianfr1697Frenchtr3428Turkishel2498Greekar3388Arabicar2411Arabicfr2290Frenchen4779Englishru4856Russiansr4769Serbiantr6392Turkishtr4955Turkishar2062Arabicen3547Englishtr480Turkishsr7582Serbianccp4372Chakmaru4841Russianbn1343Banglatr2410Turkishtr4500Turkishzh7746Chineseiu993 Inuktitutja4958Japanesechr3436Cherokeeeo6032 Esperantoes7600Spanisheo166 Esperantoes460Spanishsr5786Serbianth5339Thaith6952Thaifr5922Frenchfr697Frenchzh4442Chinesetr1143Turkisheo1346 Esperantoru116Russianiu7023 Inuktituttr2104Turkishel6166Greeksr7096Serbianiu3211 Inuktitutth6534Thaien7318Englishbn6374Banglaru357Russianes5583Spanishen5526Englishes5743Spanishth5545Thaith4596Thaisr2723Serbianiu2187 Inuktituttr3580Turkishru1434Russianbn2838Banglaen6975Englisheo4818 Esperantoes2395Spanishru556Russianzh7643Chinesebn6556Banglaja6639Japaneseel208Greekzh1915Chineseru2941Russianes5504Spanisheo3010 Esperantoja1515Japanesees7494Spanishja6142Japaneseel2849Greekfr6282Frenchru5851Russianja1093Japanesechr3080Cherokeechr3655Cherokeeccp4887Chakmachr2758Cherokeechr3393Cherokeear4460Arabiceo5332 Esperantoes287Spanishru1843Russianja305Japaneseth7199Thairu1650Russianar3Arabicar7634Arabicar1546Arabicchr6706Cherokeechr7348Cherokeeen7800Englishru3892Russianes5894Spanishchr538Cherokeechr4274Cherokeefr6812Frenchja3856Japanesesr8150Serbianzh4493Chinesees3892Spanishchr2759Cherokeeeo7549 Esperantosr7480Serbianar516Arabicar5114Arabiceo6670 Esperantoth3530Thaiel6082Greekel3002Greekja1262Japanesetr5480Turkishchr6857Cherokeebn953Banglaen4294Englishru1918Russianccp7685Chakmaeo3450 Esperantoru4198Russianes6857Spanishsr5573Serbiantr6168Turkishfr846Frenchfr4748Frenchru2809Russiantr590Turkisheo624 Esperantochr7605Cherokeeth688Thaizh3659Chinesebn7715Banglatr1933Turkishbn1677Banglael1752Greekru999Russianfr5860Frencheo3522 Esperantoar2786Arabicen3870Englishth3137Thaitr2702Turkishiu2605 Inuktitutth3776Thaieo4500 Esperantoccp200Chakmaes7143Spanishes6410Spanishccp7461Chakmael7576Greekru217Russianbn1693Banglafr4815Frenchth2251Thaitr78Turkishccp3336Chakmachr4371Cherokeeel3784Greeken5402Englishsr4962Serbianel6834Greeksr5803Serbianth3250Thaitr4331Turkishzh4689Chineseru1643Russianchr7800Cherokeesr3686Serbianbn2713Banglatr5466Turkishchr8096Cherokeeccp4968Chakmaccp703Chakmath4813Thaiiu1049 Inuktitutiu629 Inuktitutru5956Russianchr6520Cherokeetr4120Turkisheo387 Esperantoccp6186Chakmaccp2834Chakmaeo7690 Esperantoru4011Russianfr7052Frenchru4635Russiansr3979Serbiansr7951Serbianzh4842Chineseen652Englishar3745Arabicchr4226Cherokeeiu1713 Inuktitutel2463Greekeo3513 Esperantoja5593Japanesezh4413Chineseru7651Russianen3343Englishtr2344Turkishru5236Russianel4241Greekccp2649Chakmafr826Frenchiu80 Inuktituttr7812Turkishbn542Banglabn3586Banglabn5181Banglabn3948Banglaja8091Japanesezh6215Chinesear1059Arabicccp4814Chakmatr1614Turkishsr2917Serbianbn3676Banglaiu38 Inuktitutzh3425Chineseru6076Russianbn1811Banglaru5417Russianes3175Spanishccp2241Chakmaru1875Russianeo7850 Esperantoiu3815 Inuktitutiu7571 Inuktitutchr4068Cherokeear8172Arabicel8118Greekiu5670 Inuktitutfr8160Frenchiu5938 Inuktitutes2439Spanishiu6042 Inuktitutth542Thaiccp1062Chakmasr69Serbiantr976Turkishth6613Thaiccp6303Chakmachr2548Cherokeesr5069Serbianja1367Japaneseja4817Japanesetr1748Turkisheo6881 Esperantoes2238Spanishbn2737Banglaar2860Arabicen6423Englishfr6973Frenchchr3596Cherokeezh4584Chineseth1875Thaija4014Japanesefr7797Frenchen5962Englishchr6677Cherokeeen4833Englishzh5584Chineseel4373Greekth5258Thaiel6845Greekja1153Japanesetr709Turkishbn1825Banglaccp1169Chakmafr4915Frenchiu2593 Inuktitutes922Spanishja5915Japanesezh34Chineseru189Russianccp7219Chakmaes2405Spanishtr7978Turkishiu2986 Inuktitutzh7494Chineseru1926Russiansr4439Serbianbn5301Banglatr3607Turkishtr6575Turkishsr6662Serbianeo3233 Esperantoen571Englishtr2847Turkishel7836Greekccp37Chakmaeo113 Esperantofr1841Frenchccp6115Chakmaiu6102 Inuktituten2835Englishzh5953Chinesear5577Arabicchr2341Cherokeechr23Cherokeeel2765Greekel7782Greekes162Spanishru4676Russianfr6204Frenchzh4628Chinesear2832Arabicar1242Arabicar1358Arabiceo3694 Esperantoiu3355 Inuktitutiu2064 Inuktitutbn474Banglaar5100Arabictr5600Turkishtr7809Turkishth3614Thaisr7383Serbianes6167Spanishru7735Russianar3391Arabicsr6551Serbianchr6989Cherokeezh4229Chinesear5866Arabicchr273Cherokeeccp2416Chakmaes4952Spanishtr7245Turkishbn4879Banglafr5749Frenchsr3551Serbianar2509Arabiceo991 Esperantochr7946Cherokeebn986Banglachr664Cherokeeiu2390 Inuktitutiu5222 Inuktituteo1687 Esperantoth1135Thaifr3971Frenchtr2881Turkishiu2383 Inuktitutfr8146Frenchar7593Arabicru4252Russianar6470Arabicchr4208Cherokeechr6537Cherokeeen5781Englishiu1547 Inuktituttr498Turkishtr2813Turkishzh5738Chineseen6062Englishel4734Greekchr6025Cherokeezh5551Chineseccp7446Chakmaja2856Japanesebn806Banglaen6214Englishar292Arabicbn7414Banglael5536Greekes7344Spanishbn6982Banglafr3872Frenchja6331Japanesechr739Cherokeetr229Turkishar1572Arabicar2785Arabictr388Turkishar2842Arabicsr6846Serbianel4005Greekru1036Russianel526Greekel421Greekfr4902Frenches4798Spanishfr6901Frenchccp600Chakmaes3977Spanishar4140Arabicru4445Russianccp2165Chakmaru7704Russianeo9 Esperantoth7965Thaitr5386Turkishtr8186Turkishtr631Turkishar1903Arabicen7821Englishes2290Spanishfr4243Frenchccp7850Chakmaru5494Russianes4237Spanishccp2097Chakmaja4935Japanesetr5524Turkishru7621Russiantr687Turkishes1697Spanishja3064Japaneseccp6315Chakmath7856Thaiar1474Arabicru3324Russianfr6870Frenchbn6313Banglafr4485Frenchja1441Japaneseccp3358Chakmazh8055Chinesezh2801Chinesebn5874Banglazh1801Chineseel6740Greekru6911Russiansr7876Serbianes4843Spanishru700Russianiu801 Inuktitutja5668Japanesetr6155Turkishth7308Thaieo5130 Esperantoccp2520Chakmath2428Thaies4171Spanishth4304Thaisr7528Serbiansr5669Serbiantr669Turkishtr4475Turkishru5769Russiansr4145Serbianeo6527 Esperantosr5648Serbianfr6011Frenchru3779Russianccp5475Chakmaen904Englishth6637Thaiccp5215Chakmael3617Greekbn5629Banglasr2066Serbianes4513Spanishccp7375Chakmael4594Greeksr1553Serbianes4047Spanishja1405Japanesees4886Spanishru3570Russianchr900Cherokeeru5266Russianja1948Japaneseiu4824 Inuktitutbn5449Banglaar1811Arabicru6063Russiantr957Turkishar5783Arabicel3995Greekbn8080Banglaen1886Englishchr2385Cherokeebn351Banglasr3454Serbianel4854Greekth2619Thaiel1151Greekzh310Chinesezh7072Chineseel2118Greekfr2677Frencheo3894 Esperantofr338Frencheo8182 Esperantozh105Chinesesr3921Serbianen2180Englishiu7745 Inuktitutru3277Russianbn4183Banglaccp7894Chakmazh6175Chinesear2398Arabicen1821Englishes3896Spanishar2606Arabicccp2269Chakmaes6787Spanishel5835Greekja2566Japaneseen3415Englishar1026Arabicen2695Englishfr210Frenchfr4480Frenchbn2708Banglael4197Greekzh4965Chineseel5244Greekar6044Arabictr7811Turkishth5628Thaisr7256Serbiansr6092Serbianccp3105Chakmasr2839Serbianth176Thaith4076Thaifr495Frenchccp2378Chakmaeo3856 Esperantoel1372Greeken3552Englishfr112Frenchar7254Arabicel7103Greekru6581Russianfr8000Frenchru1368Russianccp5349Chakmaru7784Russianth4159Thaizh7773Chineseeo5106 Esperantoar1695Arabicru7067Russianru4797Russianen2501Englishja806Japaneseccp7230Chakmath709Thaisr2115Serbianzh6323Chinesetr512Turkishar5099Arabictr4305Turkishccp5805Chakmaccp6537Chakmafr5761Frenchel1867Greekth6403Thairu4636Russianes3331Spanishccp7044Chakmael2308Greeken4198Englishiu121 Inuktitutth6900Thaifr2357Frenchzh5530Chinesesr6231Serbianru5020Russianeo3151 Esperantoar38Arabicja7282Japanesebn4500Banglath3339Thaiiu989 Inuktitutar2636Arabicbn7772Banglafr3787Frenchru2105Russiantr4695Turkishzh6444Chinesezh6139Chinesebn4598Banglachr2330Cherokeesr2482Serbianar1702Arabiciu6364 Inuktitutchr3984Cherokeeiu4794 Inuktituteo6753 Esperantoru3533Russianiu6267 Inuktitutel3049Greeksr7322Serbianzh2060Chineseiu2897 Inuktitutar4988Arabicbn6418Banglaja2656Japanesezh1471Chinesees5824Spanishja4576Japaneseel1813Greekbn2824Banglabn7374Banglaen1622Englishen3642Englishru5561Russianbn5555Banglath3505Thaith5128Thaieo7142 Esperantoen353Englishccp3831Chakmaen5474Englishchr3898Cherokeeth5957Thaiiu2001 Inuktitutccp1949Chakmath6506Thaifr5180Frenchiu1800 Inuktituten4803Englishiu1558 Inuktitutccp410Chakmaiu2777 Inuktitutccp7629Chakmabn205Banglaen8115Englishru3261Russianchr3700Cherokeeru7922Russianes5279Spanishja6810Japanesesr1183Serbianbn2070Banglaiu6730 Inuktitutth1171Thaichr3291Cherokeeel1219Greekeo1492 Esperantoar3985Arabicja4407Japaneseja3191Japanesefr4776Frencheo3748 Esperantoru6413Russiantr1106Turkishbn1747Banglaru986Russianja5983Japanesear6058Arabiceo1547 Esperantoes5469Spanishsr3596Serbiansr2424Serbianzh4895Chinesezh7779Chinesear5186Arabicel4467Greekar3933Arabicru696Russianar4659Arabictr6711Turkishchr37Cherokeeja2634Japanesefr5911Frenchccp1166Chakmaru7017Russianth2616Thaiar4683Arabicru2035Russianccp4716Chakmaccp5874Chakmatr258Turkishar2204Arabiceo7861 Esperantoel4037Greekfr4040Frencheo3395 Esperantozh3760Chineseel864Greekes570Spanishzh1331Chineseel5147Greekbn8128Banglatr2215Turkisheo4135 Esperantoiu4779 Inuktitutru4454Russianes7146Spanishfr608Frenchbn7417Banglachr7484Cherokeees5501Spanishzh5424Chinesebn2616Banglaccp1552Chakmaeo5994 Esperantotr7357Turkishja2475Japanesezh3693Chinesees5120Spanishar6103Arabicfr6817Frenches195Spanishchr1097Cherokeeen5485Englishfr4346Frenchsr2718Serbianja97Japanesetr291Turkishchr2318Cherokeeiu2594 Inuktitutru765Russianru7588Russiansr6408Serbianfr7819Frenchzh2522Chinesesr874Serbiantr7960Turkishbn173Banglaes854Spanishes5069Spanishiu5565 Inuktituten642Englishes1804Spanishth6854Thaiccp7790Chakmasr2535Serbiansr3401Serbianccp5983Chakmaja7461Japaneseru3671Russianar1936Arabicsr6401Serbianja2358Japanesesr7149Serbianes1579Spanishen5619Englishiu2913 Inuktitutfr5829Frenchel1402Greekeo6933 Esperantoth5556Thaitr7958Turkisheo4744 Esperantoja3520Japanesetr2356Turkishzh5739Chinesebn1195Banglafr2719Frenchsr5523Serbianar1942Arabicfr2972Frenchiu3010 Inuktitutel2596Greeksr1798Serbianja3761Japaneseen7851Englishth446Thaija6413Japaneseeo354 Esperantoar2382Arabicar2417Arabicru3510Russianbn5557Banglaen2280Englishes8078Spanishzh152Chineseel7315Greekru4732Russianja6564Japaneseccp1285Chakmabn3627Banglachr8121Cherokeeiu948 Inuktitutru6431Russianen265Englisheo2670 Esperantoiu1790 Inuktitutccp4958Chakmaar4462Arabicbn3471Banglaccp4311Chakmael6456Greekchr6339Cherokeeel7569Greekar7853Arabicen3589Englishiu6987 Inuktitutzh53Chineseiu7749 Inuktitutru3919Russianru5215Russiansr2607Serbianfr5361Frenchchr1953Cherokeeiu6690 Inuktitutth7979Thaieo7265 Esperantoth3175Thaiccp6943Chakmaen406Englishel1826Greekbn2105Banglaccp7511Chakmaeo4847 Esperantoja7155Japanesebn2034Banglachr7859Cherokeetr5506Turkishiu978 Inuktitutccp3982Chakmabn1203Banglaccp5810Chakmatr8129Turkishsr4611Serbiantr5929Turkishzh2118Chinesebn162Banglafr1329Frenchzh7426Chinesezh7316Chineseeo1187 Esperantochr401Cherokeebn4784Banglasr7676Serbianchr6349Cherokeesr3118Serbianar3953Arabicccp3031Chakmael1636Greekzh577Chinesefr2078Frenchru7608Russiantr3366Turkishth7810Thaies3847Spanishsr7558Serbianth440Thaibn5889Banglaeo5327 Esperantoeo7324 Esperantoja1455Japaneseru5197Russianru1809Russianccp7879Chakmaar993Arabicar1959Arabicru7488Russianccp5441Chakmath5573Thaieo7026 Esperantochr3630Cherokeees3047Spanishsr3651Serbianzh5148Chineseccp4760Chakmabn6348Banglaes758Spanishen710Englishbn2218Banglath60Thaiel7341Greekzh4605Chineseel499Greektr2852Turkishar1147Arabicja1776Japanesechr7266Cherokeees6140Spanishth4248Thaitr7097Turkishar497Arabicsr4253Serbianeo7865 Esperantoiu3522 Inuktitutru5231Russianth6499Thaien6865Englishccp3542Chakmabn1019Banglaes4603Spanishes168Spanishccp910Chakmaru5250Russianel3064Greektr2386Turkishel6073Greeksr8180Serbianbn5797Banglaeo7602 Esperantoel6492Greekel4381Greekeo5943 Esperantochr3301Cherokeetr8059Turkishbn6460Banglaar4366Arabiciu6985 Inuktitutja225Japanesebn3444Banglafr5118Frenchiu1044 Inuktitutzh661Chineseel1880Greekzh2514Chineseth7652Thaija6610Japanesees1441Spanishru83Russianth2785Thaith5891Thairu2203Russianen3931Englishsr4923Serbianiu2809 Inuktitutru4404Russianbn2032Banglaru1645Russianen7887Englishth1504Thaith2982Thaisr1349Serbianth4340Thaiccp2414Chakmael4981Greekccp7087Chakmaiu5513 Inuktitutth3364Thaitr2741Turkishth2132Thaien6212Englishen2662Englishen485Englishen6809Englishja3598Japanesear1201Arabicfr3884Frenchccp74Chakmael646Greeken7006Englishfr3166Frenchel6464Greekel952Greekth1861Thaiar3742Arabicar4335Arabicccp7561Chakmael4863Greekel7673Greekeo7158 Esperantoar3282Arabices795Spanishes3253Spanishiu5163 Inuktitutru149Russianru2532Russianzh3088Chineseel4247Greekar6091Arabicfr4497Frencheo4314 Esperantobn6032Banglaes3347Spanishen4479Englishel6340Greekar7917Arabices2310Spanishiu4407 Inuktitutfr1973Frenchsr1991Serbianccp4085Chakmaes511Spanishccp3026Chakmabn1037Banglaen2448Englishen2151Englishccp3827Chakmaeo2218 Esperantoeo7279 Esperantosr3139Serbianbn375Banglaccp4280Chakmazh2240Chineseja1054Japaneseiu5138 Inuktitutja4709Japanesetr3947Turkishbn3217Banglaccp4935Chakmabn610Banglafr4393Frenchfr6701Frenchth2113Thaieo2062 Esperantoja533Japanesechr812Cherokeear3723Arabicar6315Arabictr5940Turkishbn5403Banglaja897Japaneseja1270Japaneseiu7594 Inuktitutru5775Russianen6450Englishja3024Japanesetr5111Turkishfr6899Frenchfr2622Frenchja4466Japaneseru2738Russianar7339Arabices3645Spanishccp593Chakmachr7809Cherokeesr6134Serbiansr409Serbianar7960Arabicen5872Englishfr3484Frenchar1387Arabiczh2344Chinesebn613Banglaru4500Russianar6110Arabicar6452Arabiceo7668 Esperantoel6240Greeksr7601Serbiansr5256Serbianeo7672 Esperantoiu2480 Inuktitutchr3266Cherokeees691Spanishes2895Spanishchr6731Cherokeeel7321Greekiu4729 Inuktitutsr4947Serbianth2569Thairu1813Russianzh6570Chineseru5697Russianth6871Thaieo3125 Esperantoth6322Thaisr5829Serbianbn966Banglaja5764Japanesetr5614Turkishbn5924Banglaccp5748Chakmachr1670Cherokeesr7202Serbiantr3016Turkishel3455Greekru8066Russianth1244Thaieo7699 Esperantoth5913Thaizh6412Chinesechr8044Cherokeeeo2136 Esperantofr7001Frenchchr816Cherokeeeo3477 Esperantosr4428Serbianiu2074 Inuktitutru7981Russiantr898Turkishiu7468 Inuktituttr2865Turkishccp7107Chakmatr3147Turkishbn793Banglaja835Japanesear7434Arabiceo6196 Esperantosr1534Serbianth3099Thaiel5698Greekes1477Spanishsr6879Serbiantr1434Turkishtr1090Turkishsr3948Serbianar4161Arabicar5268Arabiczh2854Chinesechr786Cherokeeeo2696 Esperantoeo4734 Esperantoel7708Greekja1517Japaneseth768Thaisr5451Serbiansr4248Serbianja595Japaneseiu2348 Inuktituten3269Englishar8040Arabicccp6636Chakmael736Greekeo5743 Esperantoja4320Japanesebn4311Banglaen1178Englishccp2635Chakmasr2800Serbianru4062Russianen7396Englishen6232Englisheo812 Esperantotr168Turkishtr2861Turkishtr8140Turkishel5717Greekfr7213Frenchfr4531Frenchth1781Thaiar6213Arabiceo2403 Esperantoar8184Arabicth6936Thaija6385Japanesees6268Spanishfr6904Frenchtr6089Turkishen6970Englishen2555Englisheo6231 Esperantoccp5814Chakmaccp2539Chakmaiu5114 Inuktituttr1260Turkishfr5148Frenchchr2750Cherokeechr1081Cherokeetr4045Turkishchr4010Cherokeeru7369Russianiu7449 Inuktitutth2809Thaiiu5186 Inuktitutfr5942Frenchth7662Thaiiu5122 Inuktitutru4795Russianeo5265 Esperantoru4133Russiantr5790Turkishar2124Arabicen3069Englishen2338Englishar4213Arabicbn7411Banglaja3237Japaneseru3794Russiantr7307Turkishfr1411Frenchja4845Japaneseru622Russianen4953Englishtr6810Turkishzh5898Chinesefr4262Frenchar3524Arabictr8118Turkishel7051Greekel7972Greekja1373Japanesear3918Arabiciu7834 Inuktitutth1996Thaiccp1558Chakmael4986Greekzh5641Chineseiu7481 Inuktitutbn2277Banglachr6684Cherokeeth4927Thaija6849Japanesezh441Chineseen7737Englishchr5354Cherokeeja3122Japaneseccp1689Chakmaeo611 Esperantoen2372Englishen6782Englishfr7664Frenchja758Japanesefr1276Frencheo2990 Esperantoen1721Englishen4821Englishel2606Greekja6772Japaneseel3541Greekes4807Spanishru9Russianfr2668Frenches6050Spanishbn188Banglaja4961Japaneseiu6554 Inuktitutiu4415 Inuktitutiu3042 Inuktitutja5175Japanesetr1309Turkishzh937Chineseen4306Englishzh2970Chinesees2642Spanishes4297Spanishar984Arabicchr2493Cherokeeru5577Russiantr2643Turkishja1181Japanesees4660Spanishsr7417Serbianru7324Russianbn3165Banglaes3714Spanisheo6523 Esperantobn5850Banglaru1411Russianfr456Frenchja3045Japanesebn3790Banglaccp196Chakmaeo7313 Esperantobn4708Banglachr5769Cherokeeen7312Englishru561Russianen5357Englishzh4325Chineseth2589Thaien1187Englishru749Russianel6785Greekiu5529 Inuktitutbn5044Banglaen7406Englishccp2565Chakmaiu7715 Inuktituttr4072Turkishar5859Arabicfr5309Frencheo5235 Esperantoccp1045Chakmaccp7807Chakmath3200Thaieo6891 Esperantoccp4087Chakmachr1904Cherokeeja1759Japanesetr7961Turkishccp4941Chakmael5185Greeken2326Englishru3820Russianzh3492Chineseen1368Englishel3350Greeksr7648Serbianeo3801 Esperantoru451Russianes2534Spanishru3659Russianchr2593Cherokeeth5959Thaiar7447Arabicbn301Banglafr6606Frenchru842Russiantr1282Turkishru4506Russiansr7197Serbianel5441Greektr3084Turkishzh2550Chineseccp4672Chakmabn1847Banglaccp2389Chakmaar4643Arabicen4789Englishen7115Englishes8060Spanishchr7589Cherokeesr2227Serbianchr6792Cherokeezh4722Chinesear8086Arabicel1886Greeken5916Englishsr5413Serbianar1143Arabictr2250Turkishzh721Chineseru5348Russianel2575Greekfr7669Frenchth4106Thaibn1512Banglaru698Russianzh3910Chineseru3127Russianccp2405Chakmabn2383Banglaja5944Japanesebn7815Banglath4588Thaiar6279Arabictr908Turkishiu3479 Inuktitutzh587Chinesear5194Arabicchr4112Cherokeesr2710Serbianth5571Thaizh3631Chineseiu1792 Inuktitutel5690Greekbn6044Banglaru872Russiansr2584Serbianth1738Thaizh3097Chineseen8147Englishes6875Spanishchr7963Cherokeeccp1408Chakmaen6532Englishzh1365Chineseiu6100 Inuktitutzh6767Chinesezh7348Chinesear6684Arabicsr3100Serbianzh6111Chineseth4331Thaichr1890Cherokeeen8011Englishth5515Thaiiu2336 Inuktituteo2076 Esperantobn5960Banglath5708Thaitr2886Turkishel5805Greekchr3875Cherokeesr2602Serbianar7650Arabicchr2481Cherokeefr4584Frenchsr5218Serbianeo7983 Esperantofr3486Frenchfr7711Frenchzh575Chinesesr1352Serbiantr2874Turkishru7095Russianen1926Englisheo4086 Esperantoth4158Thaitr1340Turkishzh5369Chinesefr7030Frenchfr4534Frenchzh955Chineseeo6406 Esperantoes2208Spanishel2976Greekth8118Thaiar1195Arabicru6549Russianccp6901Chakmaru4044Russianen3590Englishth4440Thaija7328Japanesebn1579Banglazh3389Chineseel9Greekbn5820Banglaen205Englishchr1893Cherokeeen3459Englishccp2308Chakmaiu2773 Inuktitutja6960Japaneseth5001Thaizh770Chinesechr3886Cherokeezh5436Chinesebn396Banglachr7797Cherokeetr933Turkisheo6627 Esperantobn3941Banglaen1408Englishfr2660Frenches7973Spanishbn7352Banglafr3538Frenchbn2406Banglasr3891Serbianeo6855 Esperantoen2644Englishru2206Russianfr7445Frenchen7752Englishar7249Arabicel5573Greekiu4891 Inuktitutiu1981 Inuktitutfr2274Frenchel7832Greekeo4130 Esperantoccp6931Chakmazh3819Chinesefr3946Frenchen2928Englishtr3471Turkisheo3869 Esperantofr7335Frenchiu4984 Inuktitutel6624Greekth262Thaibn1581Banglaeo2647 Esperantotr4519Turkishbn3169Banglafr3837Frenchzh6744Chineseth7614Thaiccp5243Chakmaru1291Russiansr529Serbianth5045Thaies5512Spanishfr7208Frenchtr7493Turkishsr3349Serbiansr7860Serbianen6267Englishes6107Spanishes8020Spanisheo6892 Esperantoes7398Spanishsr5259Serbianfr7998Frenchru1694Russiansr5985Serbianja2782Japanesefr4796Frenchtr7393Turkishzh7360Chineseiu1194 Inuktitutes701Spanishccp6334Chakmaes700Spanishsr3329Serbianar4016Arabicbn3774Banglath4386Thaien1012Englishsr4912Serbianfr4849Frenchchr5558Cherokeeen7398Englishbn817Banglaeo2141 Esperantoel6864Greekbn2749Banglael3647Greekes742Spanishtr6849Turkishbn5260Banglaes2845Spanishes5879Spanishbn7220Banglaar5938Arabicru4105Russianccp4092Chakmaes2061Spanisheo5419 Esperantofr6064Frenchiu824 Inuktitutfr1912Frenchiu5005 Inuktitutbn504Banglaccp2558Chakmachr4640Cherokeeru8106Russianru3831Russianar4309Arabicel1743Greeken1869Englishru2946Russiansr1123Serbianes2597Spanishfr1057Frenchchr5417Cherokeesr705Serbianiu788 Inuktitutru7882Russiansr5233Serbianiu4829 Inuktitutzh5580Chineseth2023Thaichr6696Cherokeear3972Arabicbn6807Banglaeo4880 Esperantoen4053Englishfr6725Frenchru6375Russianth4352Thaith7410Thaiar4351Arabiczh7668Chinesear5187Arabiceo3759 Esperantozh960Chineseen6669Englishtr5496Turkishru8Russianeo4030 Esperantoccp1629Chakmachr231Cherokeechr4664Cherokeeen8076Englishja3200Japanesetr3743Turkishsr343Serbianbn6249Banglaes5936Spanishen4542Englishru7655Russianzh3051Chineseeo4790 Esperantoel6167Greekchr1935Cherokeefr4156Frenchfr2653Frenchth3867Thaiiu1552 Inuktitutja1034Japanesefr3400Frenchbn2624Banglaeo3655 Esperantoja1075Japaneseru3322Russianja4859Japanesetr3462Turkishccp5210Chakmaja4882Japaneseeo335 Esperantoiu5503 Inuktitutth6779Thaiar6369Arabiciu7046 Inuktitutel7353Greekeo7575 Esperantoiu2255 Inuktitutsr1880Serbianru6306Russianzh1694Chinesebn4996Banglasr8112Serbianchr3865Cherokeefr4536Frenchel759Greekiu1781 Inuktitutchr5510Cherokeear6901Arabicel6046Greeksr6565Serbianel3831Greeksr6253Serbianja5165Japanesees4780Spanishen1884Englishth6190Thairu7778Russianccp5779Chakmafr5076Frenchen5812Englishja7706Japanesees292Spanishja3987Japanesetr2774Turkishsr1152Serbianzh2805Chineseccp2005Chakmaeo3965 Esperantoel3454Greekccp1201Chakmaar3324Arabicel144Greekja3346Japaneseth4464Thaifr4542Frenchiu6123 Inuktitutzh6992Chinesebn4344Banglachr5910Cherokeeiu4656 Inuktitutru6603Russianiu3166 Inuktitutes6345Spanishja1595Japaneseeo4182 Esperantoru6289Russianth4987Thaiccp5659Chakmafr5341Frenches7651Spanishbn4509Banglasr7278Serbianccp1113Chakmath3673Thaith6832Thaisr7476Serbianen4771Englishar369Arabicsr8171Serbianel6702Greeken4807Englishja768Japaneseen7473Englishbn161Banglaccp4361Chakmael4884Greekes7526Spanishes7860Spanishes5797Spanishru2689Russianar5374Arabicru1114Russianes569Spanishtr1453Turkishbn211Banglatr6339Turkishbn5613Banglasr7134Serbianbn8159Banglael3532Greeken5897Englishru459Russianbn3705Banglaeo301 Esperantoja7825Japanesesr6183Serbianru7031Russianen2134Englisheo6248 Esperantobn1401Banglaru6802Russianzh8119Chinesesr1916Serbianth745Thaith3830Thairu2569Russianfr2954Frenchar1466Arabiceo1329 Esperantoja6958Japaneseja2928Japaneseth5255Thaiiu3829 Inuktitutes3403Spanishbn26Banglatr1912Turkishes6364Spanishtr5328Turkishiu1972 Inuktitutfr7055Frenchfr290Frencheo3244 Esperantozh5969Chinesechr2645Cherokeear4081Arabiceo8008 Esperantozh7564Chinesetr6768Turkishfr3699Frenchja7309Japanesear1246Arabicchr2147Cherokeefr393Frenchru1271Russianja609Japanesesr2637Serbianeo3098 Esperantoccp6410Chakmaja2962Japaneseja4411Japaneseja4564Japaneseccp3892Chakmachr6941Cherokeeru7398Russianru7232Russianja155Japaneseth5942Thaichr4178Cherokeesr3568Serbianiu4268 Inuktitutsr3104Serbianja2916Japaneseen1180Englishel3952Greektr1530Turkishsr3660Serbianeo712 Esperantozh1697Chinesefr2189Frenchen609Englishbn5591Banglaeo4618 Esperantosr2920Serbianchr3226Cherokeesr5834Serbianchr1230Cherokeees4261Spanishiu4127 Inuktitutru5189Russianel4210Greekchr1946Cherokeetr3242Turkishen3851Englishel167Greekccp6820Chakmachr2607Cherokeeiu943 Inuktitutru3596Russiansr5909Serbianzh3144Chineseccp5351Chakmaes2559Spanishtr713Turkishtr8097Turkishja3777Japanesees243Spanishzh5668Chineseru5226Russianfr536Frenchccp7008Chakmath689Thaisr5759Serbianes3393Spanishru5247Russiantr1451Turkishel3665Greekru2387Russianzh3011Chinesezh4917Chinesear4428Arabicsr4107Serbianen5427Englishccp1473Chakmaen6956Englishchr3337Cherokeeen7322Englishfr491Frenches230Spanishen5935Englishth114Thaisr4422Serbianen3713Englishen7347Englishiu7335 Inuktitutbn5835Banglasr4112Serbianzh1934Chinesezh7669Chineseiu6388 Inuktituteo3460 Esperantoru2354Russiansr2908Serbianar6679Arabicchr803Cherokeeel2373Greekru1951Russiansr5286Serbianth4977Thaija1497Japanesetr3908Turkishsr6851Serbianiu7963 Inuktitutfr3599Frenchsr507Serbiansr555Serbianccp2710Chakmael7664Greekel4758Greekel5544Greekccp1406Chakmaen2649Englishja7807Japanesefr5802Frenchzh7053Chineseen7152Englishfr889Frenchel1114Greekiu3180 Inuktituttr1705Turkisheo3712 Esperantosr7541Serbianen6821Englisheo4539 Esperantoiu1048 Inuktitutsr2522Serbiansr2634Serbianth6617Thaitr6716Turkishth1014Thaibn5746Banglael7226Greekel5087Greekar278Arabiceo2453 Esperantoja6830Japaneseel690Greekel6553Greekbn7032Banglaiu957 Inuktitutja7292Japanesesr1600Serbiantr2513Turkishes52Spanishchr5834Cherokeeeo738 Esperantoja2766Japaneseth3537Thaifr996Frenchsr1804Serbiantr1929Turkishes2843Spanishru984Russianes3283Spanishja4217Japaneseru3507Russiantr1052Turkishru6157Russianzh3605Chineseth6969Thaith7781Thaifr5057Frenchzh6447Chinesechr7262Cherokeeccp5363Chakmatr3744Turkishiu614 Inuktituteo5915 Esperantoel6766Greekfr4587Frenchbn3380Banglaen385Englishzh7312Chinesear2191Arabicel4354Greekja393Japanesebn1142Banglabn5929Banglaes3472Spanishfr27Frenchiu6366 Inuktitutsr833Serbianes1699Spanishfr7430Frenchccp7655Chakmaru521Russianiu2822 Inuktituten6767Englishzh3195Chinesechr2534Cherokeees5645Spanishel4378Greekeo7779 Esperantosr618Serbianfr2177Frenchchr5850Cherokeesr4677Serbianchr7939Cherokeezh1848Chineseen6318Englishar2541Arabices2483Spanishar6319Arabiceo4297 Esperantofr1871Frenchar4582Arabicchr1073Cherokeebn3862Banglaeo4814 Esperantosr4050Serbianel3885Greekes7348Spanishar2914Arabicen2617Englishiu799 Inuktitutchr52Cherokeees3747Spanishes4090Spanishen6531Englishen6208Englishja2942Japanesefr4006Frenchccp5407Chakmaar576Arabicsr4942Serbiantr4968Turkishfr1291Frenchzh3777Chineseen5583Englishccp880Chakmaru898Russiantr1802Turkishccp3946Chakmabn5429Banglaar1069Arabiczh4792Chinesear5637Arabicccp3641Chakmasr1377Serbiansr7669Serbianeo6767 Esperantoar1559Arabicru1178Russianfr6897Frenchzh964Chinesebn7634Banglabn7322Banglachr1594Cherokeees7629Spanishbn3420Banglaccp2616Chakmasr4060Serbianja2927Japaneseru982Russianfr362Frenchen334Englishccp974Chakmaen4171Englishccp375Chakmaen4385Englishru7050Russianes5562Spanishsr7246Serbianbn2744Banglasr5726Serbianzh170Chineseen6382Englisheo5772 Esperantoja283Japanesesr8091Serbianzh6614Chinesear6181Arabiciu8162 Inuktitutccp111Chakmatr467Turkishchr5114Cherokeeccp8152Chakmachr8123Cherokeezh6630Chineseja2495Japaneseiu2695 Inuktitutru6305Russiansr1284Serbianccp6078Chakmaru2673Russianes867Spanishsr7962Serbianar4595Arabiciu3130 Inuktitutth4194Thaith2828Thairu1550Russianiu6393 Inuktituteo7328 Esperantoru2200Russianchr5759Cherokeeccp531Chakmaiu4622 Inuktitutzh7334Chinesezh2543Chinesebn2757Banglafr4639Frenchfr6705Frenchru1849Russianar3429Arabicru4144Russianzh4775Chinesebn6654Banglaar7481Arabicfr1581Frenchth4836Thaitr2836Turkishccp2677Chakmaeo714 Esperantoen2833Englishtr830Turkishccp1409Chakmafr4658Frenchccp15Chakmachr4639Cherokeeja3133Japaneseccp4199Chakmath5890Thaizh6009Chinesear700Arabictr3936Turkishiu5319 Inuktitutccp3273Chakmabn6478Banglaccp7545Chakmaeo7845 Esperantozh1204Chineseja4581Japaneseiu6099 Inuktituten7867Englishja7338Japaneseel1271Greekja7440Japanesesr4293Serbianth5253Thaien4988Englishccp7815Chakmath4797Thaija4569Japanesetr2653Turkishiu6126 Inuktituttr7507Turkishel1859Greekeo1095 Esperantoeo3831 Esperantoes7232Spanishiu4310 Inuktitutiu3956 Inuktitutsr5501Serbianzh1896Chinesebn5421Banglachr3349Cherokeeeo6511 Esperantoar4617Arabicfr3108Frenches7661Spanishja1960Japanesechr2233Cherokeeru6887Russianen3272Englishfr2345Frenchfr5943Frenchru5944Russianru2304Russianja5930Japaneseccp1990Chakmachr7105Cherokeeccp8164Chakmaar6756Arabices1365Spanishzh2546Chinesefr5215Frenchja6256Japaneseru3983Russianccp3333Chakmaiu2095 Inuktitutar3411Arabicccp6215Chakmaar1062Arabicfr4305Frenchja2875Japanesebn4875Banglaar4769Arabicen4082Englishen1471Englishel1901Greekfr3891Frenchfr6780Frenchth3860Thaith3005Thaiccp2100Chakmaen5422Englisheo3444 Esperantosr2784Serbianes4292Spanishzh3038Chineseeo2542 Esperantobn2923Banglazh7907Chinesebn3842Banglaes2039Spanishel4721Greekth3375Thaiel7977Greekeo5059 Esperantosr4135Serbianel7935Greekar7265Arabiceo2964 Esperantoccp3143Chakmael2178Greekchr6633Cherokeezh6913Chinesebn5388Banglaccp5542Chakmaiu5073 Inuktitutzh4402Chineseccp3854Chakmaja4381Japaneseel5663Greeken2149Englisheo6696 Esperantosr7378Serbianiu990 Inuktitutru1441Russianth2264Thaifr7570Frenchth3404Thaiel3657Greekth7824Thaichr545Cherokeetr7905Turkishes2466Spanishccp6910Chakmaccp3092Chakmaen5392Englishzh2218Chinesezh5573Chinesechr7844Cherokeeen4763Englishzh3560Chineseccp3329Chakmaeo4230 Esperantotr3072Turkishar323Arabicru6261Russianeo1063 Esperantobn3798Banglabn2886Banglasr7675Serbiansr5700Serbiansr8056Serbianchr2135Cherokeeiu6448 Inuktitutchr713Cherokeeel4222Greekccp8151Chakmaar4513Arabictr3349Turkishfr2730Frenchbn7004Banglaru2960Russianth2402Thaiiu7972 Inuktitutes7222Spanishtr1570Turkishsr4515Serbianiu6651 Inuktituten2385Englishsr4438Serbiantr303Turkishar4061Arabicar6287Arabicbn1792Banglael997Greekfr6684Frenchzh6797Chinesetr4898Turkishbn5851Banglaes4957Spanishen2738Englishzh7100Chinesefr8041Frenchth2088Thaizh4865Chineseeo3476 Esperantoiu5823 Inuktituttr6410Turkishzh4096Chineseccp1590Chakmabn7107Banglael19Greekzh6531Chineseja5873Japaneseen7585Englishiu7006 Inuktituttr5127Turkisheo39 Esperantoiu6124 Inuktitutiu594 Inuktitutar7836Arabicchr4712Cherokeebn4577Banglaeo4390 Esperantoru5532Russianccp6746Chakmaeo799 Esperantoar1250Arabicar7621Arabicar7604Arabiceo1337 Esperantoar4633Arabicru7627Russianfr174Frenchja7170Japanesees7822Spanisheo7420 Esperantoja6073Japaneseru7248Russianel6927Greeksr3795Serbianth3651Thaiiu6197 Inuktituttr6844Turkishja4887Japanesefr6341Frenchtr7366Turkishzh2198Chineseja3613Japanesesr7626Serbianccp2232Chakmaiu5057 Inuktitutja6425Japanesefr6031Frenchja8029Japanesesr773Serbianbn4873Banglatr4493Turkishbn6080Banglazh5394Chinesebn6342Banglath2345Thaieo1141 Esperantobn5771Banglabn8075Banglaru7036Russiansr6709Serbiantr3230Turkishtr6563Turkishccp929Chakmaes2511Spanisheo5755 Esperantoru6376Russianbn1609Banglaru118Russianth6259Thaiiu7652 Inuktitutbn5857Banglaeo6944 Esperantoja7525Japaneseru5306Russianen1405Englishchr7446Cherokeees6999Spanishth2489Thaibn4556Banglaja4636Japanesees5711Spanishzh5657Chinesear6063Arabicel3382Greekiu845 Inuktitutsr4047Serbiantr1190Turkishen6202Englishes1930Spanishar1209Arabiciu444 Inuktitutbn4448Banglachr1060Cherokeefr1734Frenchccp3585Chakmael260Greekzh4176Chinesear5811Arabicel4053Greekar1260Arabicru3072Russianccp5332Chakmachr6965Cherokeechr6571Cherokeeja6411Japaneseen4874Englishes1548Spanishru144Russianiu1495 Inuktitutsr1173Serbianchr3633Cherokeesr3834Serbianru5074Russianeo6533 Esperantosr5749Serbianzh1983Chinesebn3495Banglachr2140Cherokeeiu5727 Inuktitutchr3373Cherokeeccp1512Chakmafr121Frencheo6977 Esperantoja7206Japaneseru937Russianzh3803Chineseel4611Greeken3105Englishel6662Greeken6444Englishtr6174Turkishja7218Japaneseel6011Greekja5799Japanesetr7103Turkishel272Greekiu3431 Inuktitutfr7485Frenchiu3285 Inuktitutzh1512Chinesear6912Arabicar1626Arabicel77Greekbn3209Banglaiu7465 Inuktitutru5982Russianja3435Japanesesr3022Serbianar5968Arabictr7710Turkishbn2281Banglaccp3206Chakmaar7548Arabiceo4445 Esperantoiu6801 Inuktitutja7090Japaneseeo6868 Esperantoth861Thaien3687Englishiu7141 Inuktitutchr485Cherokeechr2957Cherokeeiu2530 Inuktitutzh7589Chinesefr2202Frenchiu2030 Inuktitutja2558Japaneseen6530Englishiu6780 Inuktitutsr5281Serbianru5879Russiantr4896Turkishzh3312Chinesetr301Turkishar7568Arabiczh2412Chineseiu1171 Inuktitutru1357Russianar6520Arabicja1501Japaneseja710Japanesear311Arabiceo2413 Esperantoeo6429 Esperantoen6351Englishja1569Japaneseth4061Thaifr1829Frenchar3213Arabiczh8068Chinesezh2320Chineseja3267Japaneseru4830Russianfr584Frenchzh2540Chinesear3912Arabicfr355Frenchja5291Japaneseru7Russianes2334Spanishzh5688Chinesebn5091Banglaccp6302Chakmael6992Greekes7261Spanishar6443Arabicru4191Russiansr4016Serbianar7305Arabiceo336 Esperantotr6507Turkishzh447Chineseth2522Thaisr4393Serbianccp6669Chakmasr6814Serbianes5549Spanishbn7652Banglafr5344Frenchel2259Greekzh5315Chinesebn2346Banglaiu946 Inuktitutbn3218Banglabn2107Banglabn3565Banglaar1759Arabicfr4370Frenchchr3825Cherokeeel7279Greekiu6996 Inuktitutth7417Thaien48Englishes3678Spanishccp267Chakmazh724Chineseru66Russianbn2017Banglaar7070Arabicchr2068Cherokeees3491Spanisheo3326 Esperantochr6156Cherokeefr2284Frenchru6589Russianzh6320Chineseru3700Russianen4048Englishbn2505Banglaar2375Arabices2398Spanishru7103Russianar1219Arabices777Spanishar3348Arabicar4895Arabicchr1759Cherokeeen2136Englishiu7655 Inuktitutfr7951Frenchth1382Thaiel6876Greekes5389Spanishiu7216 Inuktitutiu7179 Inuktitutth3296Thaiar7287Arabictr1037Turkishccp5563Chakmath3927Thaies1416Spanishru5819Russianel5600Greekja3612Japanesezh161Chinesesr1374Serbianth1043Thaiccp6718Chakmabn925Banglaen3234Englishes5270Spanishen6209Englishtr6586Turkishsr2364Serbianen3223Englishccp2314Chakmachr1806Cherokeeru7524Russianzh3008Chinesebn7473Banglachr6024Cherokeear4118Arabicfr5197Frenchccp1329Chakmatr4859Turkishchr1740Cherokeeel2280Greektr7052Turkishsr5828Serbianiu4363 Inuktitutth4122Thaisr3161Serbianth7797Thaieo114 Esperantofr1688Frenchru7604Russianth7362Thaies3639Spanishfr8079Frenchzh191Chineseen3187Englishja7967Japanesechr3112Cherokeeru1531Russianel4268Greekel0Greeksr871Serbianzh7094Chinesebn1061Banglael1944Greeken5885Englishja243Japanesear6981Arabiceo1725 Esperantofr3247Frenchar117Arabicth2445Thaija7409Japanesefr1248Frenchja6808Japaneseel4803Greekja6013Japaneseel2539Greekbn5933Banglatr5313Turkishru5002Russianar356Arabicchr4418Cherokeeja949Japaneseccp6374Chakmaeo5541 Esperantosr1116Serbianar6196Arabiciu4745 Inuktitutru2176Russiansr3953Serbianccp6475Chakmaar1589Arabicel3044Greeken3558Englishfr6968Frenchth399Thaichr3205Cherokeeiu3412 Inuktituteo7633 Esperantoru5846Russianth7958Thaichr8006Cherokeetr6963Turkishbn3644Banglazh6933Chineseel7840Greekbn212Banglaccp7549Chakmael2773Greeken1605Englishth945Thaith890Thaieo3902 Esperantoja7972Japaneseja431Japanesesr1735Serbianchr5608Cherokeezh3021Chineseccp2107Chakmatr3736Turkishchr3717Cherokeechr5671Cherokeefr6517Frenchru3252Russiantr3395Turkishccp228Chakmazh4694Chineseth3848Thaija5868Japaneseccp6731Chakmaes1068Spanishen4271Englishru1818Russianru3798Russianbn5912Banglazh2481Chinesebn4364Banglaiu5322 Inuktitutbn791Banglaeo8179 Esperantofr270Frenchccp1907Chakmaiu1624 Inuktitutfr5800Frenchsr5794Serbiantr228Turkishiu1672 Inuktituteo4058 Esperantoes1000Spanisheo1242 Esperantoeo6626 Esperantosr3213Serbianeo1470 Esperantoen7513Englishar2634Arabicel2395Greekar2432Arabicru712Russianccp5703Chakmachr5761Cherokeechr6144Cherokeefr3160Frenchzh5284Chinesees1767Spanishfr2818Frenchja7820Japaneseeo657 Esperantochr1324Cherokeees4393Spanishth1837Thaiiu6657 Inuktitutbn1502Banglasr7946Serbianes4073Spanishar7200Arabicccp5102Chakmatr2781Turkishth2488Thaieo1998 Esperantoth1679Thaiccp148Chakmaiu7639 Inuktitutbn4149Banglatr2309Turkishtr5396Turkisheo6103 Esperantotr6847Turkishzh4187Chineseru2249Russianbn2935Banglafr681Frenchccp5655Chakmaen7149Englishsr6425Serbianccp4326Chakmachr5978Cherokeees6320Spanishtr466Turkishth28Thaiel5374Greekzh1951Chinesechr1410Cherokeeccp3046Chakmafr596Frenchel7652Greekru7835Russianzh6922Chineseru2425Russiantr4615Turkishzh7000Chinesesr491Serbiansr5511Serbianja7442Japanesebn4540Banglasr4039Serbianes3745Spanishfr6775Frenchbn1354Banglasr4564Serbianru2221Russianzh7534Chineseeo6146 Esperantoccp6884Chakmath7340Thaiiu778 Inuktitutiu6630 Inuktituten3341Englishchr1220Cherokeeen2918Englisheo2078 Esperantoiu1638 Inuktitutth6174Thaies4594Spanishru5605Russianbn6397Banglaccp2594Chakmael3041Greeksr2190Serbianja808Japaneseth8041Thaiar329Arabictr5047Turkishfr6261Frenchen7225Englishiu90 Inuktituttr4308Turkisheo2931 Esperantoen6664Englishja1747Japanesefr1956Frenchth2552Thaitr411Turkishzh5962Chineseen824Englishchr791Cherokeetr7214Turkishth8Thaibn3031Banglatr2987Turkishru3369Russianiu6225 Inuktitutchr810Cherokeetr2298Turkishja4327Japanesear1415Arabictr4512Turkishja5865Japanesebn7100Banglaccp2324Chakmaja3203Japaneseccp4164Chakmaeo4699 Esperantotr2312Turkishccp6764Chakmaja4371Japaneseen7321Englishes3950Spanishzh2107Chineseccp6948Chakmaccp400Chakmafr7318Frenchiu7305 Inuktitutccp5681Chakmael721Greekth2177Thaiar7560Arabicar4969Arabicth2771Thaija6814Japanesechr4839Cherokeeru6384Russianar6100Arabicfr7688Frenches6528Spanishzh3902Chineseen4680Englishen3240Englishsr2284Serbianen1891Englisheo453 Esperantoccp976Chakmatr7346Turkishccp4373Chakmaar3706Arabicccp4779Chakmasr6294Serbianiu4343 Inuktitutccp5010Chakmafr3808Frenchiu4860 Inuktitutsr7375Serbianth1759Thaith2310Thaija6241Japanesezh2291Chineseru4101Russianzh8099Chinesebn224Banglaeo5125 Esperantoeo2909 Esperantoel4122Greektr1785Turkishth2235Thaibn7805Banglaiu2090 Inuktitutja881Japanesear7693Arabicar7823Arabicsr7181Serbianru6974Russianzh5862Chineseja139Japaneseth4373Thaith2647Thaibn1728Banglaru4100Russianbn6666Banglaar3883Arabicbn3302Banglabn7834Banglaes3868Spanishes724Spanishel7473Greekel7112Greekru4329Russianel3420Greeksr2813Serbianeo4017 Esperantotr2951Turkishen1243Englishar4097Arabicchr7617Cherokeetr1220Turkishccp2435Chakmaes4672Spanishar6462Arabicchr5961Cherokeees7051Spanishru3284Russianchr1276Cherokeear748Arabicar6973Arabicen6383Englishchr2707Cherokeebn6209Banglaiu7511 Inuktitutchr2217Cherokeeel4714Greekbn6060Banglaen496Englishel3706Greekiu1312 Inuktitutes1841Spanishth604Thaizh6961Chineseja5771Japanesear1733Arabicccp830Chakmazh659Chineseel1542Greekchr2104Cherokeeiu6289 Inuktituttr8010Turkishar224Arabicchr3569Cherokeezh3851Chineseeo260 Esperantoru7695Russianel7638Greekeo5786 Esperantoen4931Englisheo6385 Esperantotr6476Turkishccp3232Chakmaeo3670 Esperantofr2820Frenches2348Spanishja4263Japaneseja5353Japaneseel2544Greeksr6204Serbianja176Japaneseth1804Thaiar4422Arabicja6095Japanesezh6103Chinesechr4328Cherokeebn4848Banglafr1074Frenchar1595Arabicel4257Greekes1598Spanishfr4640Frenchth7378Thaitr1637Turkishtr1053Turkishtr736Turkishar6197Arabicel4482Greekar772Arabicchr4188Cherokeezh6148Chineseja1522Japanesear1495Arabicar4627Arabicbn3532Banglaiu5903 Inuktituttr4007Turkishbn751Banglaes4041Spanishfr5642Frenchru1440Russianen7355Englishiu3064 Inuktitutbn327Banglath2678Thaien2221Englishja5412Japanesees3622Spanishzh1219Chinesear444Arabicsr4766Serbianiu862 Inuktituteo550 Esperantosr6974Serbianel5856Greekth2792Thaibn7394Banglaen2056Englishiu5709 Inuktitutchr7219Cherokeeeo4299 Esperantoes7926Spanishar6579Arabicbn4456Banglaar1376Arabiczh99Chineseen5606Englisheo6381 Esperantoth4017Thaija3659Japanesebn6995Banglaiu3658 Inuktitutfr909Frenchsr1190Serbianth1274Thaiccp3334Chakmaes1227Spanishchr906Cherokeetr3361Turkishar8094Arabicru3202Russianth881Thaies2811Spanishen4563Englishes2690Spanishiu7003 Inuktitutbn1670Banglaja327Japaneseth2001Thaien7226Englishiu1911 Inuktitutsr3976Serbianbn7755Banglaen1756Englishes2158Spanishel5154Greekfr434Frenchth539Thaies3841Spanishiu2580 Inuktituteo5152 Esperantozh4301Chinesechr3738Cherokeesr1204Serbianes5827Spanishen6298Englishar318Arabicbn1373Banglaiu4286 Inuktitutzh6193Chinesear3566Arabicchr890Cherokeebn3013Banglasr745Serbianja5765Japaneseel2861Greekel5582Greekfr575Frenchja2043Japaneseru2585Russianru4347Russianbn7430Banglaen5338Englishes6203Spanishiu7314 Inuktitutzh6984Chinesezh790Chineseiu231 Inuktitutchr690Cherokeeeo3725 Esperantoja302Japaneseeo5678 Esperantochr2488Cherokeeru4812Russianbn5862Banglabn3020Banglaen5975Englishiu201 Inuktituteo6305 Esperantosr6575Serbianes5462Spanishbn3387Banglaeo4393 Esperantoiu2372 Inuktitutru7681Russianth1127Thaibn6702Banglaiu1881 Inuktitutfr4533Frenchbn526Banglaar6569Arabictr3954Turkishes6437Spanishccp4761Chakmaes395Spanishel7085Greekel4067Greekru1445Russianiu2748 Inuktitutfr4520Frenchen2888Englishen2190Englishen3120Englishth7952Thaizh7872Chineseccp2588Chakmaes6874Spanisheo7153 Esperantoel4485Greekar1491Arabicel6197Greekja3052Japaneseth2524Thaieo3242 Esperantoar57Arabicfr5222Frenchsr7708Serbianchr4693Cherokeeja3985Japanesear2993Arabicccp7781Chakmaccp5639Chakmaeo3172 Esperantoth5029Thaieo3537 Esperantoth7203Thaitr1525Turkishfr4913Frenchzh8094Chinesees6065Spanishel7815Greekfr2900Frenchja7793Japanesees7052Spanishccp321Chakmabn4388Banglaar1947Arabicccp2779Chakmaccp3155Chakmachr5571Cherokeeeo7551 Esperantoru4477Russianfr7909Frencheo5897 Esperantoiu440 Inuktituten6405Englishja7969Japanesebn64Banglael5232Greekccp3502Chakmaru2093Russiansr686Serbiansr5365Serbianiu2373 Inuktitutfr4498Frenchja5485Japanesezh6325Chineseja4642Japaneseen6741Englishzh504Chineseel4650Greekja773Japanesetr4761Turkishbn4359Banglath1737Thaibn4249Banglachr5977Cherokeeeo6580 Esperantoar5713Arabicel5905Greekeo7844 Esperantoes2905Spanishfr6546Frenchzh2364Chineseeo175 Esperantosr4444Serbianel7084Greekfr2438Frenchel898Greekiu336 Inuktituten8157Englishchr7581Cherokeeel1093Greekiu1776 Inuktitutzh3927Chinesebn374Banglaeo3134 Esperantoccp4957Chakmaes4825Spanishbn4192Banglachr7948Cherokeeru5041Russianel6989Greekccp7360Chakmaen780Englishen8067Englishfr329Frenchccp6252Chakmafr2623Frenchtr3839Turkishbn432Banglaccp7760Chakmaes276Spanishfr1658Frenchru6894Russianzh1236Chinesechr2497Cherokeebn390Banglatr6805Turkishel3196Greeksr7877Serbiansr7412Serbianel4719Greeken7802Englishtr7244Turkisheo6657 Esperantozh3593Chineseccp376Chakmaar1085Arabicccp3091Chakmasr3266Serbiansr266Serbianchr5865Cherokeeen917Englishar1599Arabiciu2354 Inuktitutru7574Russianar6758Arabicsr6902Serbianzh4219Chinesechr3006Cherokeezh6054Chineseth2930Thaiel4709Greekeo240 Esperantoen6602Englishchr3873Cherokeesr381Serbianiu4314 Inuktitutel7502Greekth5771Thaiel6722Greekth1793Thaibn4451Banglath7600Thaibn3671Banglachr5079Cherokeebn6691Banglaeo5536 Esperantofr5847Frenchru3548Russianar3679Arabicbn151Banglaar2010Arabicccp1891Chakmaes5392Spanishru4513Russianfr3840Frenchccp4924Chakmath2459Thaitr3904Turkishfr7072Frenchzh3805Chineseen7933Englishsr2061Serbianel3726Greekzh311Chineseeo3354 Esperantoar6803Arabicen4754Englishzh3759Chineseccp3996Chakmachr1123Cherokeetr262Turkisheo3591 Esperantotr1350Turkishja2250Japaneseru6500Russianen5690Englishar1182Arabicbn3053Banglaccp4061Chakmaeo4589 Esperantoeo7987 Esperantoel5037Greekes3718Spanishes346Spanishzh1415Chinesezh7942Chineseth3865Thaifr4118Frenchiu357 Inuktitutel5017Greekeo6151 Esperantosr2071Serbianbn554Banglatr4841Turkishsr1539Serbianiu309 Inuktitutccp103Chakmazh6637Chineseeo6059 Esperantoeo1093 Esperantoccp4344Chakmaja4161Japaneseen901Englishiu2713 Inuktitutth4971Thaien6130Englishiu803 Inuktitutar2520Arabices7397Spanishfr3659Frenchel6119Greekth6817Thaitr1766Turkishzh3150Chinesebn4020Banglaccp7826Chakmaen5091Englishen7263Englishes766Spanishth6972Thaiar4804Arabicel983Greekth1219Thaizh6835Chineseccp1255Chakmaccp1522Chakmasr622Serbiantr4651Turkishtr5138Turkishchr4797Cherokeechr2242Cherokeeja5689Japanesezh842Chinesear3834Arabiczh6824Chineseeo6725 Esperantoth3379Thaith3988Thaitr519Turkishccp1288Chakmaiu327 Inuktituteo319 Esperantoeo4283 Esperantoel3095Greekes5658Spanishbn1462Banglasr7264Serbianchr2082Cherokeeel2056Greeken7191Englishth7610Thaiel3101Greekccp8067Chakmaru6420Russianel1158Greekja3897Japanesear1857Arabiceo4716 Esperantoth7135Thaien624Englishja6767Japanesetr5948Turkishru1637Russianth4354Thaiccp4542Chakmabn388Banglaccp3322Chakmath1Thaies2995Spanishccp5274Chakmaeo3438 Esperantoes3935Spanishen3088Englishbn5061Banglaes7626Spanishja6671Japaneseel3035Greekiu4801 Inuktitutsr4904Serbianccp3723Chakmaiu1135 Inuktituteo883 Esperantotr4725Turkishiu3115 Inuktitutsr8087Serbianbn6142Banglael2040Greektr4733Turkishes3900Spanishth5839Thaichr2334Cherokeear6544Arabicja3287Japanesetr1111Turkishchr4385Cherokeeen6315Englishen729Englishfr6539Frenchbn4682Banglabn8154Banglaccp183Chakmaccp1652Chakmaeo617 Esperantotr2550Turkishtr7159Turkishiu1180 Inuktitutel3519Greekeo7258 Esperantotr1375Turkishru7062Russianzh320Chineseeo5331 Esperantofr2725Frencheo5158 Esperantoth4377Thaith5697Thaizh1780Chinesear1768Arabicel2892Greekchr2469Cherokeeja4512Japaneseru1623Russianen1708Englishen5552Englishchr3549Cherokeefr6537Frenchru4744Russianeo2724 Esperantoes1525Spanishru6107Russianzh1875Chinesear5550Arabiciu6017 Inuktitutar6098Arabiceo2082 Esperantoru103Russianfr4051Frenchru2786Russiansr1920Serbianja4601Japanesear3535Arabicfr1630Frenchiu5749 Inuktituten4758Englishes1581Spanishar6783Arabicel6848Greekes683Spanishel6465Greekchr6023Cherokeetr1537Turkishth1091Thaiccp3545Chakmael1046Greekth3703Thaiar2928Arabicsr4949Serbianru2232Russianiu3759 Inuktitutiu7979 Inuktitutar687Arabicen268Englishbn1432Banglatr6633Turkishchr2279Cherokeetr4577Turkishbn5583Banglath7100Thaien2330Englishsr4656Serbianth1149Thaitr1590Turkisheo5554 Esperantosr3910Serbiantr3089Turkishru3237Russianel2550Greekel2651Greekar5935Arabicbn7368Banglaar692Arabicru960Russianru769Russianes1544Spanishbn2987Banglaja2055Japanesefr4971Frenchar2648Arabicccp5894Chakmaccp5891Chakmasr494Serbianar1382Arabicbn1388Banglafr4115Frenchru823Russianiu898 Inuktitutbn3009Banglachr6984Cherokeees4181Spanishth3609Thaith4828Thaizh572Chinesechr5271Cherokeebn3877Banglaar5338Arabicen4950Englishiu3427 Inuktitutsr7241Serbianru5382Russianes7715Spanishja6920Japaneseel2396Greekzh5292Chineseel612Greekes3304Spanishar5526Arabicja4104Japanesesr4604Serbianbn4234Banglaja2536Japanesefr4361Frenchccp4219Chakmaru5600Russianzh6493Chineseth7284Thaiar6201Arabicru3758Russianfr4439Frenchfr486Frenchru3381Russianccp2660Chakmaen8161Englishtr7049Turkishbn5134Banglazh6831Chineseel1080Greekeo6339 Esperantosr4859Serbianiu8071 Inuktitutes6522Spanishccp8048Chakmafr2418Frenches5764Spanishbn4832Banglachr4012Cherokeeel6895Greekru3595Russianeo6253 Esperantoru2333Russianel2507Greekiu5730 Inuktituten4009Englishru1469Russianel2952Greekiu486 Inuktitutja6144Japaneseccp1975Chakmaeo2681 Esperantobn7160Banglaccp3881Chakmaiu5345 Inuktitutzh6198Chinesefr7620Frenchiu5923 Inuktituttr5355Turkishen7042Englishzh6192Chineseccp822Chakmael6867Greeken5084Englishja3955Japanesesr6691Serbianel5987Greekccp1121Chakmaru1751Russiantr571Turkishsr5210Serbianth3401Thaith3599Thaien395Englishen3610Englishfr5684Frenchen3319Englisheo943 Esperantobn1726Banglaiu7909 Inuktitutbn5661Banglazh2829Chinesetr1696Turkisheo5874 Esperantoel128Greekiu308 Inuktitutel4021Greekar4157Arabiczh448Chinesear7327Arabicen6931Englishth3993Thaith5923Thaieo2112 Esperantoes4473Spanishchr2868Cherokeeen3129Englishiu4295 Inuktituteo904 Esperantoccp4108Chakmatr6335Turkishes7482Spanishja441Japanesear731Arabicel4394Greekeo7731 Esperantoar467Arabicfr3027Frenchja1758Japaneseru1082Russianth4102Thaiar4778Arabices94Spanishel2729Greekes3210Spanishja5006Japaneseccp1770Chakmaiu7102 Inuktitutbn8102Banglath915Thaieo6261 Esperantoth722Thaija5688Japaneseen469Englishsr1619Serbianth303Thaiar640Arabicchr4445Cherokeeeo8015 Esperantofr5269Frenchen2512Englishfr6487Frenchiu1688 Inuktitutsr7281Serbianchr4620Cherokeetr3871Turkishru2975Russianiu2602 Inuktitutes2941Spanisheo2086 Esperantobn3247Banglafr7722Frenchel3949Greeken1872Englishiu7143 Inuktituten564Englishsr7380Serbianiu2780 Inuktitutchr1056Cherokeees1901Spanishchr3976Cherokeeeo7815 Esperantofr196Frenchja1254Japanesesr2407Serbianru3622Russianel1986Greektr2808Turkishzh4769Chineseth3293Thaieo2866 Esperantofr7511Frenchar3108Arabicfr4647Frenchsr1341Serbianchr6765Cherokeesr5179Serbianth7358Thaiccp670Chakmael6746Greekfr7355Frenchru4086Russiantr2926Turkishja281Japanesees6049Spanishar25Arabicchr5418Cherokeeel5760Greekar6489Arabicel4568Greektr6134Turkishel540Greekchr2012Cherokeeeo1898 Esperantobn7870Banglaes1120Spanishja7243Japanesebn3693Banglazh779Chinesebn6237Banglaru1702Russianfr4339Frenchiu2819 Inuktituteo3455 Esperantoru6364Russiantr6485Turkishccp6775Chakmachr7532Cherokeeel4993Greekccp4530Chakmatr3131Turkishth3759Thaichr266Cherokeefr1890Frenchth5346Thaibn6751Banglafr736Frenchen1791Englishtr7372Turkishccp2121Chakmachr5364Cherokeeel4177Greekiu1791 Inuktitutchr3657Cherokeeja3455Japaneseen6115Englishccp7284Chakmasr5931Serbianru7691Russianja1386Japaneseja3994Japanesear5097Arabicel6327Greekth387Thaiar7119Arabicar3594Arabicbn1530Banglafr7160Frenchzh2130Chinesezh2229Chinesetr1411Turkishzh4094Chineseel2055Greektr5951Turkishar6768Arabicchr217Cherokeeth2391Thaies8024Spanishsr6017Serbiansr1664Serbianccp1779Chakmafr4042Frenchbn5801Banglaar7832Arabicbn2994Banglachr6759Cherokeebn4022Banglaen2850Englishchr3614Cherokeeru6495Russiansr3474Serbianeo385 Esperantoel39Greekeo997 Esperantoel1241Greekchr3146Cherokeeru348Russianru947Russianeo6132 Esperantobn6289Banglafr1287Frenchtr5987Turkishth6029Thaisr6564Serbianel7529Greekar2573Arabicth8187Thaiel1820Greekchr7296Cherokeeeo6061 Esperantochr2452Cherokeetr4793Turkishzh5475Chinesezh5837Chineseccp6802Chakmael7158Greekth3400Thaifr4022Frenchja6545Japanesebn4667Banglatr3571Turkishsr1399Serbianiu4174 Inuktitutchr7898Cherokeetr6608Turkishes2203Spanishel2726Greekth7863Thaiel4799Greekzh665Chinesefr4420Frenchzh1712Chinesezh2027Chineseja2879Japanesezh6702Chineseiu7010 Inuktitutth769Thaibn2368Banglaeo1325 Esperantozh5112Chineseru298Russiantr726Turkishsr7067Serbianchr7927Cherokeezh6066Chinesefr3842Frencheo5540 Esperantoes5605Spanishzh4205Chineseccp2336Chakmaar6476Arabicccp1116Chakmath4302Thaitr5840Turkishfr3408Frenchbn2101Banglafr7041Frenchja4469Japanesefr5565Frenchchr2245Cherokeeiu7957 Inuktitutiu4576 Inuktitutiu4143 Inuktituten3128Englishfr219Frenchfr6166Frenchzh4530Chineseen7835Englishes815Spanishth5270Thaien1182Englishru7638Russiansr8161Serbianzh5400Chineseeo3614 Esperantofr1568Frenches719Spanishth5018Thaisr6219Serbianeo7685 Esperantofr3747Frenchru2933Russianru574Russianel6079Greekbn2185Banglaja601Japanesechr1984Cherokeeiu3589 Inuktitutchr5110Cherokeeiu2935 Inuktitutzh2804Chineseel4977Greektr5495Turkishiu5877 Inuktituteo5792 Esperantoes7320Spanisheo5747 Esperantoel6692Greekth4133Thaitr6399Turkishar2695Arabicccp4145Chakmath4726Thaizh5542Chineseru5938Russianar5677Arabiciu1907 Inuktitutccp3843Chakmael7021Greekja6204Japanesetr3711Turkishiu2766 Inuktitutel4477Greekchr1624Cherokeeel3077Greektr3047Turkishes2897Spanishth5833Thaiiu7791 Inuktitutja6611Japanesebn3104Banglaja6076Japaneseja5532Japanesezh6211Chineseccp728Chakmaccp8142Chakmath2735Thaiar6307Arabicru3309Russianar1426Arabicja6663Japanesebn369Banglachr4Cherokeeen1537Englishfr6893Frenchel2857Greekru8016Russianen6884Englishbn3830Banglaru4764Russianen3496Englishsr7504Serbianccp7102Chakmasr5489Serbianccp2563Chakmatr3373Turkishes428Spanishtr3534Turkishchr5852Cherokeechr7832Cherokeeel491Greekfr7196Frenchru5138Russianth6338Thaiccp303Chakmaes6704Spanishth628Thaiiu646 Inuktituten2609Englishth7141Thaibn7692Banglaccp5588Chakmasr7684Serbianfr6957Frenchbn6952Banglael1974Greeken6879Englishtr6751Turkishzh4158Chineseru1294Russianzh7329Chineseccp4382Chakmafr1301Frencheo8073 Esperantozh7733Chinesear3675Arabices354Spanishzh5778Chinesechr1495Cherokeear2271Arabicfr742Frenchsr6363Serbianth6232Thaies199Spanishbn4414Banglaccp2451Chakmaccp4853Chakmaiu4383 Inuktitutar5373Arabicel4476Greeksr5476Serbianzh7665Chineseru5040Russianccp458Chakmael1599Greeken4388Englishja5522Japanesesr3860Serbianes3287Spanishes6756Spanishes2474Spanishsr2616Serbiansr7507Serbiantr6341Turkishja1217Japanesefr4322Frenchru4418Russiansr7996Serbiantr2177Turkishja1242Japaneseru5806Russianja1456Japanesechr689Cherokeeen4905Englishchr3057Cherokeeel1699Greekja2799Japaneseth2026Thaizh5910Chinesechr5379Cherokeeth4873Thaies8047Spanishchr7845Cherokeeru4472Russianth5581Thaiel1669Greekar167Arabicel5854Greekfr5827Frenchen5671Englishiu374 Inuktitutchr5001Cherokeeel1633Greekiu7968 Inuktituttr4570Turkishzh2416Chineseccp1502Chakmaeo5716 Esperantoth6599Thaibn2938Banglafr1543Frenchccp5841Chakmath1082Thaiel6006Greekchr5259Cherokeefr2091Frenchja2248Japaneseel850Greekru5325Russiantr234Turkishccp3415Chakmaeo3213 Esperantoes5589Spanishsr799Serbianfr3531Frenchar6646Arabiciu5184 Inuktitutru2392Russiantr2426Turkishja2812Japanesesr709Serbiantr6640Turkishja6695Japanesetr1566Turkishes5325Spanishbn8007Banglaes6974Spanisheo5438 Esperantoru545Russianbn3699Banglaja5028Japaneseccp7111Chakmaes2344Spanishtr1549Turkisheo47 Esperantoiu7442 Inuktitutru6322Russianja337Japanesees3022Spanishen1011Englishchr6428Cherokeechr6460Cherokeeel7028Greekar7970Arabicen3839Englishel3298Greekfr1704Frenchbn7833Banglachr3285Cherokeeen2347Englishzh6078Chineseth2923Thaies3216Spanishth1126Thaisr2006Serbianth3107Thaith7722Thaizh6085Chinesesr3353Serbianar7438Arabicbn2755Banglachr3632Cherokeeja4886Japanesechr3209Cherokeeru912Russiantr889Turkishen6479Englishel322Greekchr1207Cherokeeeo6914 Esperantotr2334Turkisheo6983 Esperantofr6834Frenchru6453Russianen278Englishja7471Japanesear1240Arabiciu1862 Inuktitutiu6795 Inuktitutfr2643Frenchsr2702Serbianes500Spanishtr7445Turkishbn1113Banglaja477Japaneseja6399Japaneseeo2012 Esperantochr358Cherokeechr477Cherokeees6425Spanishja7939Japanesetr5130Turkishiu1489 Inuktitutth3328Thaitr1243Turkishzh5961Chinesebn737Banglaru5962Russianchr5902Cherokeeccp1647Chakmazh5825Chineseccp3444Chakmabn4024Banglabn4001Banglatr4051Turkishccp448Chakmath4552Thaiel6146Greekth428Thaizh2385Chineseccp1813Chakmabn7581Banglaru6389Russianbn7628Banglath6195Thairu7625Russianth7597Thaibn6991Banglafr3304Frenchsr2454Serbianth1328Thaies1014Spanishchr7645Cherokeeccp7001Chakmaen5374Englishfr3416Frenchsr5563Serbiansr5954Serbianru1321Russianbn5808Banglaru2364Russianccp5866Chakmaen5845Englishchr5241Cherokeesr3728Serbianbn7695Banglaccp1866Chakmazh2725Chinesetr4549Turkishes5826Spanishtr338Turkishen7966Englishth8000Thaisr702Serbianth2889Thaiiu3485 Inuktitutar1218Arabicfr1865Frenchtr2355Turkishbn1207Banglath798Thaiccp5935Chakmatr3849Turkishzh6484Chinesezh6860Chinesetr6987Turkishru6765Russianth3046Thaith3474Thaith7932Thaiccp6395Chakmachr498Cherokeeja643Japanesebn4849Banglaccp924Chakmath2455Thaieo4261 Esperantoeo5975 Esperantosr7235Serbianbn392Banglael6949Greekchr7985Cherokeeru787Russianzh3907Chineseeo815 Esperantosr4176Serbianja7805Japaneseja446Japanesesr7735Serbianel536Greekccp2347Chakmatr2541Turkishiu328 Inuktitutar6386Arabiceo2473 Esperantofr332Frenchbn5296Banglael1111Greekeo7840 Esperantozh1367Chineseth923Thaizh8109Chineseen3758Englishccp4Chakmazh626Chinesezh2962Chineseel1261Greekja1629Japanesees3499Spanishar4333Arabices5263Spanishfr6703Frenchsr5636Serbianccp4554Chakmaar4981Arabicru2908Russianja3260Japanesees1329Spanisheo595 Esperantoth5730Thaizh2038Chineseen4947Englishzh2699Chineseen2296Englishru369Russianja6678Japaneseccp7104Chakmaiu519 Inuktitutbn1399Banglaiu6485 Inuktitutel3975Greekiu2962 Inuktitutiu4117 Inuktitutja5851Japanesebn6050Banglaccp659Chakmaen6863Englishbn4165Banglaja7293Japaneseccp8183Chakmath5Thaitr7249Turkishel4921Greekbn6336Banglatr3286Turkishar2444Arabicar620Arabices4123Spanishfr6435Frenchar3500Arabicchr7953Cherokeeja2901Japanesebn226Banglachr5057Cherokeeeo941 Esperantoja1301Japaneseth266Thairu7373Russianccp6421Chakmaen6455Englishes1355Spanishth6984Thaifr4347Frenchfr3671Frenchfr1679Frenchru3191Russianbn377Banglath80Thaiar4354Arabicar3379Arabicen5021Englishru5817Russianth801Thaitr6061Turkishzh5949Chinesebn5938Banglael1436Greeksr1704Serbianel6261Greektr4840Turkishes6594Spanishtr1709Turkishar2340Arabiczh2722Chinesebn4692Banglaes1590Spanishes3299Spanishfr5962Frenchiu1034 Inuktitutel1598Greekccp6392Chakmaja6666Japanesees7958Spanishzh344Chineseja4467Japaneseiu4679 Inuktitutel1741Greekfr4785Frenchen7860Englishja3913Japaneseen3051Englishar1150Arabicbn7578Banglaeo161 Esperantoth232Thaija7563Japanesebn28Banglachr6859Cherokeeel5909Greeken993Englishbn6945Banglachr2869Cherokeeiu4252 Inuktitutzh4283Chinesear6332Arabicen6308Englisheo121 Esperantozh6697Chineseeo2523 Esperantoes1376Spanishchr7160Cherokeeru2616Russianiu4515 Inuktitutccp6436Chakmaes6278Spanishru7123Russianar5824Arabicen2716Englishen3771Englishtr2419Turkisheo1281 Esperantoth7723Thairu7971Russianfr1740Frenchel1779Greekccp7202Chakmasr1869Serbianel5268Greekbn1820Banglaeo1443 Esperantozh5669Chinesechr8132Cherokeezh1544Chinesezh5891Chinesear5319Arabicccp1443Chakmachr4560Cherokeeru7033Russianth760Thaichr4142Cherokeees6112Spanishtr3332Turkishiu5449 Inuktitutbn7231Banglafr5109Frenchru5669Russianccp134Chakmaen6392Englishtr1057Turkishth4394Thaizh855Chineseen8107Englishccp1918Chakmaccp6085Chakmath267Thaiccp5259Chakmaccp1755Chakmael1700Greekru2277Russianchr1088Cherokeetr6777Turkishel928Greekru2920Russianzh4878Chinesees2075Spanisheo56 Esperantoar8055Arabicfr5803Frenchzh1009Chinesefr6100Frenches6585Spanishar3340Arabicbn2072Banglaen6461Englishzh4807Chinesear7710Arabicja7659Japanesezh969Chineseeo979 Esperantobn2333Banglabn2904Banglael447Greeken4736Englishtr4488Turkisheo5592 Esperantoen1683Englishen5135Englishja1735Japanesesr979Serbianes1516Spanishbn6228Banglael4644Greekiu2911 Inuktitutja7728Japanesebn4671Banglaeo7261 Esperantoccp171Chakmachr6387Cherokeeel2855Greekes1237Spanishes1078Spanishccp6862Chakmazh5077Chinesees4273Spanishja5294Japaneseth880Thaiar7247Arabicccp4777Chakmaen412Englishtr171Turkishchr186Cherokeefr7089Frencheo6265 Esperantoja5087Japaneseru739Russianccp872Chakmatr6277Turkisheo2267 Esperantoel3923Greekth4606Thaija7301Japanesebn230Banglatr3274Turkishfr1244Frenchar5251Arabicel2637Greekel3723Greekiu7439 Inuktitutsr4629Serbianth3691Thairu2586Russiantr3589Turkishth41Thaiiu1705 Inuktitutbn1757Banglabn3058Banglaes1589Spanishel4528Greekes4307Spanishsr4805Serbianbn6259Banglaar4436Arabicsr4189Serbianbn6797Banglaccp1315Chakmaja3583Japaneseeo3785 Esperantoth2799Thaiel2240Greekth3591Thaieo7372 Esperantofr3772Frenchccp1819Chakmaru5692Russianes1197Spanishes5242Spanishel8179Greekccp4476Chakmaar1475Arabicsr3665Serbiansr2004Serbianbn6866Banglachr35Cherokeechr768Cherokeear2385Arabices6572Spanishsr3612Serbiansr4033Serbiantr776Turkishar7809Arabicel3458Greekes2185Spanishfr7695Frenchzh6599Chineseccp2310Chakmaiu2938 Inuktituttr7270Turkishiu6879 Inuktitutes5095Spanishsr2309Serbianes455Spanishiu3799 Inuktitutiu881 Inuktituten1452Englishtr6854Turkishru5610Russiansr245Serbiantr6249Turkishchr6263Cherokeeen2807Englisheo8115 Esperantosr687Serbianiu3455 Inuktitutccp6432Chakmabn3455Banglabn8Banglachr7263Cherokeefr6945Frenchfr7115Frenchchr6048Cherokeechr6233Cherokeeja6670Japanesechr8176Cherokeeru4284Russianzh296Chinesezh3534Chinesezh7602Chinesear6037Arabicel5944Greekes2586Spanishfr2158Frenchen4675Englishccp7051Chakmael726Greekja6795Japaneseen2751Englishru6240Russianiu6983 Inuktitutccp567Chakmachr1498Cherokeebn5654Banglaja272Japanesechr889Cherokeeel7990Greekfr3264Frenchen297Englishzh5838Chineseeo8168 Esperantoru5837Russianiu54 Inuktitutfr4326Frenchfr6178Frenchbn797Banglael2801Greekth4703Thaisr3906Serbiantr477Turkishbn3958Banglaar6473Arabictr3301Turkishchr5109Cherokeesr3565Serbianel2151Greekchr4467Cherokeeel6960Greekiu2694 Inuktituteo1133 Esperantoel5308Greekes2668Spanishja4270Japaneseja6719Japanesear2973Arabicbn1575Banglaja3542Japaneseru6073Russiansr4670Serbianth3387Thaitr5185Turkishen2732Englishzh4026Chineseel3068Greekbn2200Banglazh414Chineseru4247Russianar6984Arabiczh4710Chineseeo3424 Esperantofr1872Frenchccp6977Chakmatr2161Turkishbn8031Banglachr3771Cherokeeru2112Russiantr2626Turkishth2252Thaija90Japaneseja4072Japanesear747Arabices7714Spanishar3013Arabicen2028Englishsr6935Serbianes6372Spanishel7479Greekja4196Japanesechr1791Cherokeechr3161Cherokeesr4864Serbianccp7300Chakmasr6826Serbianzh1314Chinesees7947Spanishth7659Thaizh7825Chinesear3644Arabices2780Spanishbn7989Banglazh3061Chinesefr2344Frenchsr6026Serbianel8045Greekar2472Arabicfr8039Frenchru6185Russianth3410Thaitr1033Turkishzh4411Chinesebn2528Banglaen5233Englishbn7537Banglaen5831Englishccp6130Chakmaeo5934 Esperantoes7674Spanishtr2261Turkishen1745Englishiu5154 Inuktituten5111Englishchr6312Cherokeeel1081Greekes3231Spanishru3835Russiantr5381Turkishtr5588Turkishar1561Arabicth4571Thaith75Thaija1041Japaneseiu959 Inuktitutccp7614Chakmazh6183Chineseccp3119Chakmafr3616Frencheo7899 Esperantoccp627Chakmafr5868Frenchja5385Japaneseiu5955 Inuktitutth3221Thaiel1788Greekiu1964 Inuktitutar1744Arabiciu6046 Inuktitutth5806Thaifr6816Frenchiu3194 Inuktituttr4769Turkishfr5504Frenchzh2348Chineseen4238Englishja868Japanesefr5968Frenchja1338Japanesezh1118Chineseth897Thaies1691Spanishes4212Spanishsr5012Serbianzh7789Chinesetr2915Turkishar8146Arabicccp3517Chakmaiu3922 Inuktitutchr5856Cherokeeja5054Japanesezh3501Chinesefr5920Frenchiu3760 Inuktituteo6885 Esperantosr8050Serbianes6825Spanisheo5591 Esperantotr3364Turkishes927Spanishchr6690Cherokeeel7305Greektr3410Turkishbn6719Banglael691Greekeo2530 Esperantofr24Frenches5047Spanishru101Russianiu4759 Inuktitutru2760Russiantr7034Turkishbn1689Banglafr1572Frenchiu6065 Inuktitutsr5798Serbianel2021Greektr7362Turkishth658Thaitr1167Turkishsr5903Serbianth6931Thaies1087Spanishbn711Banglaja3347Japaneseiu7842 Inuktitutth795Thaitr6227Turkishchr3249Cherokeefr4374Frenchja15Japaneseen6791Englishar6127Arabiceo6957 Esperantotr2323Turkishfr83Frenchja1115Japaneseru6027Russianbn509Banglabn1374Banglaes7216Spanishru5369Russiantr4163Turkishfr5464Frenchiu5232 Inuktitutiu6338 Inuktituten2782Englishfr6913Frenchth6254Thaisr4593Serbianes3327Spanishen879Englishtr7106Turkishbn5069Banglaen1966Englishzh6545Chineseccp715Chakmath6484Thaija946Japanesetr4688Turkishbn4207Banglaeo2578 Esperantotr3430Turkishzh19Chinesechr5953Cherokeeeo139 Esperantoru4064Russianchr4627Cherokeebn3697Banglaeo4652 Esperantochr1484Cherokeeru5168Russianel2587Greekel4443Greekes4193Spanishar3337Arabiceo5335 Esperantoen5119Englishfr1210Frenchccp6593Chakmaja8177Japanesees7489Spanishccp3407Chakmaes7116Spanisheo1436 Esperantoccp5625Chakmafr5177Frenchsr5271Serbianfr2193Frenchiu7665 Inuktitutar100Arabicel6171Greekfr6532Frenchja1625Japanesezh2533Chinesees1369Spanishsr4147Serbianar6550Arabices404Spanishja7990Japanesetr3931Turkishtr881Turkishiu7888 Inuktitutbn827Banglabn2407Banglaen933Englishar7901Arabicth7297Thaifr632Frenchfr1721Frenchccp3240Chakmazh6400Chinesear3372Arabiczh5531Chineseth1923Thaies2312Spanishbn4876Banglazh7130Chinesear8171Arabicccp2544Chakmaccp8154Chakmaccp3709Chakmachr4345Cherokeeen2344Englishru4515Russianiu5105 Inuktitutja7655Japaneseiu1132 Inuktitutiu5307 Inuktitutsr545Serbiantr312Turkishzh7769Chineseen115Englishccp6305Chakmachr5387Cherokeeel2989Greekfr2892Frenchiu7195 Inuktitutsr5104Serbianar5934Arabices6792Spanishzh5062Chinesebn7356Banglaiu3103 Inuktitutiu2059 Inuktitutchr2675Cherokeechr481Cherokeefr3661Frenches680Spanishiu6164 Inuktitutfr453Frenchccp2274Chakmaja3240Japanesesr1213Serbiansr4079Serbianar6885Arabicccp285Chakmael2030Greekchr4109Cherokeesr2847Serbianth695Thaisr3826Serbianbn7019Banglabn5698Banglael6593Greekth5274Thaiccp4699Chakmath465Thaiar6076Arabiciu8041 Inuktituttr3326Turkishru3732Russianzh7272Chineseel2950Greeksr5292Serbianel3603Greekbn5823Banglatr5706Turkishiu7756 Inuktitutru1481Russianen2500Englishtr5473Turkishen6920Englishar1351Arabicbn7947Banglabn851Banglaccp5844Chakmael7861Greekiu8143 Inuktitutbn2274Banglaiu2062 Inuktituttr6374Turkisheo3549 Esperantotr8017Turkishel1967Greekel6298Greeken1388Englisheo1285 Esperantoja6517Japanesetr5039Turkishar1728Arabicsr5276Serbianth3793Thaiel1240Greekar5185Arabicsr6233Serbianeo7698 Esperantobn6007Banglael4930Greekar6463Arabiciu3468 Inuktitutchr4831Cherokeear287Arabicbn5813Banglath4986Thaith770Thaibn5438Banglael666Greeksr4330Serbianzh1974Chinesear4771Arabicen1707Englishth7087Thaien3528Englishth5582Thaiar1015Arabicbn5371Banglaeo5982 Esperantoel3701Greekchr391Cherokeeccp4767Chakmafr2500Frenchfr6554Frenchja2027Japaneseja2255Japaneseeo7370 Esperantotr4544Turkishja5399Japanesechr3027Cherokeetr134Turkishar3065Arabicbn7782Banglachr3040Cherokeeja1659Japaneseccp5652Chakmachr2338Cherokeechr4942Cherokeezh731Chineseja4356Japanesefr6371Frenchzh1090Chineseeo2053 Esperantosr7856Serbianeo6801 Esperantobn5212Banglaes5941Spanishru7997Russianar561Arabicchr4729Cherokeesr4560Serbianth6659Thaiel7116Greekar5025Arabiceo7942 Esperantoar2865Arabicbn3980Banglael1934Greekru5440Russianbn8111Banglachr2726Cherokeezh7211Chinesees4578Spanishar3655Arabicccp5509Chakmaccp6571Chakmaiu2428 Inuktitutccp5812Chakmaru5485Russiantr1061Turkishiu5047 Inuktituten7165Englishiu5076 Inuktitutja1699Japanesees860Spanishth3698Thaiar2434Arabicbn7237Banglaeo5147 Esperantofr4152Frenchchr5666Cherokeeel7761Greekar3800Arabicja5004Japanesebn1443Banglatr6695Turkishru5746Russianes7262Spanishes6387Spanishar2095Arabices2055Spanishth5874Thaifr3362Frenchth7795Thaibn1143Banglaiu1963 Inuktitutar494Arabicth2276Thaitr3779Turkishsr1361Serbianiu6724 Inuktitutru3780Russianchr2196Cherokeeel6909Greekfr4441Frenchtr4030Turkishfr2961Frenchja3029Japanesefr1168Frenchja2527Japaneseth5946Thaifr4996Frenchzh3170Chinesesr3722Serbianbn1060Banglasr3791Serbiansr6199Serbianel7141Greekfr2516Frenchth2367Thaitr2239Turkishccp7636Chakmaar2322Arabicsr886Serbianchr1856Cherokeetr432Turkishchr5028Cherokeeel8176Greeken2019Englishfr7018Frenchtr971Turkishzh5604Chinesesr6128Serbianccp1250Chakmaru5105Russiantr1068Turkisheo7800 Esperantotr5419Turkishbn5266Banglabn7279Banglafr2150Frenchth4075Thairu3113Russiantr6761Turkishtr7234Turkishen7681Englishth502Thaien5509Englishen8175Englishja2350Japanesechr3521Cherokeetr6015Turkishbn2694Banglaiu838 Inuktitutel5723Greekchr5996Cherokeeiu7849 Inuktitutar352Arabictr5223Turkishzh73Chinesebn495Banglaiu506 Inuktitutru5367Russianes2561Spanishfr7195Frenchar2627Arabicchr5135Cherokeeiu2533 Inuktitutzh7986Chinesesr7788Serbianfr3351Frenchccp1720Chakmaru7178Russianchr3817Cherokeeccp4130Chakmaar3555Arabiciu3721 Inuktitutja7578Japanesechr2583Cherokeeiu160 Inuktituteo3311 Esperantochr3170Cherokeeja4470Japaneseth8162Thaitr7516Turkishru870Russianen3382Englishru5923Russiansr4167Serbianth1022Thaibn1962Banglaen4071Englishiu7747 Inuktitutth7919Thaibn5046Banglaes4225Spanisheo1231 Esperantoru2054Russianru3921Russianru4383Russianar2218Arabicbn5589Banglaeo1851 Esperantofr3495Frenchth4613Thaiel5275Greekzh5452Chinesear7911Arabicchr429Cherokeeel5005Greekchr7316Cherokeeen1301Englisheo496 Esperantoen5684Englisheo4102 Esperantoes6441Spanisheo4193 Esperantoes6646Spanishtr5650Turkishel2278Greeken5879Englishes7258Spanishsr7121Serbiansr4997Serbianbn1274Banglaru2918Russianchr5061Cherokeefr301Frenchiu393 Inuktitutth413Thaien3231Englishccp2061Chakmasr2484Serbiantr6460Turkishar3048Arabiczh1532Chineseel4389Greekth7380Thaija6561Japanesezh101Chineseccp2278Chakmatr8067Turkishzh3775Chinesees5830Spanishbn3702Banglachr3056Cherokeeen2301Englishes3348Spanishfr6644Frenchen223Englisheo5313 Esperantoel4172Greekfr6355Frenchsr7836Serbianbn455Banglafr4794Frenchchr109Cherokeeja1568Japanesezh3714Chinesees6566Spanisheo5462 Esperantoth1872Thaiccp3153Chakmaen6627Englishes6426Spanishar2950Arabicbn5637Banglaccp1330Chakmaiu3341 Inuktituteo4305 Esperantoru3077Russianth5366Thaibn831Banglaar2523Arabiczh316Chineseiu3917 Inuktitutfr5592Frenchen6331Englishth4568Thaitr4108Turkishes401Spanishiu5355 Inuktitutth719Thaitr1908Turkishzh5175Chinesechr3794Cherokeetr3836Turkishja6059Japaneseiu382 Inuktitutth2717Thaieo3156 Esperantofr5146Frenchchr113Cherokeees4219Spanishzh5585Chineseel3246Greektr5810Turkishsr4633Serbianth630Thaibn2025Banglath761Thaiiu4263 Inuktitutru2838Russianeo1489 Esperantoccp143Chakmaeo5796 Esperantoccp908Chakmaccp7904Chakmaiu3067 Inuktituteo3680 Esperantoth4129Thaitr2387Turkishja5919Japanesezh5775Chinesetr4644Turkishar2166Arabicar2134Arabictr6052Turkishja316Japanesezh1077Chinesetr1447Turkishzh4240Chineseru7212Russiantr3955Turkishccp2818Chakmasr3755Serbianth1375Thaiccp1096Chakmatr3525Turkishja729Japaneseeo4865 Esperantoen7549Englishiu4060 Inuktitutbn6137Banglachr5269Cherokeeiu3306 Inuktitutzh4639Chinesefr2593Frenchfr3004Frenchtr2483Turkishchr6854Cherokeeel968Greeken8058Englishes1512Spanishen3773Englishen3711Englishfr4392Frenchja4579Japaneseja2807Japanesechr3573Cherokeefr8056Frenchru4146Russianru396Russiansr983Serbianja4528Japanesees46Spanishja1695Japaneseiu620 Inuktitutzh6498Chineseel3370Greekfr7412Frenchel45Greekfr1446Frenchccp5970Chakmaar778Arabicen776Englishsr233Serbianzh3124Chineseel7490Greekar446Arabicar6284Arabicen6509Englishes8048Spanishfr7985Frenchzh4075Chinesear4859Arabiczh1524Chinesechr2069Cherokeeiu347 Inuktitutsr1654Serbianja8030Japaneseen1693Englishth471Thaitr2118Turkishzh3672Chinesezh356Chineseth117Thaichr348Cherokeechr7891Cherokeear3121Arabicru6970Russianzh2311Chinesechr2446Cherokeesr810Serbianiu3149 Inuktitutar5045Arabiceo435 Esperantoes4500Spanishth586Thaija2515Japaneseel5469Greekja5940Japanesear7559Arabicccp1721Chakmaen3925Englishzh523Chineseth727Thaichr2578Cherokeebn4339Banglaru6724Russianeo3512 Esperantosr7915Serbianth7936Thaiel4599Greekja5598Japanesebn247Banglath650Thaith2433Thaith5021Thaibn4012Banglaen1379Englishen4185Englishja3158Japanesezh1273Chineseen4277Englishsr7077Serbianccp5618Chakmaiu4976 Inuktitutbn2541Banglaja3700Japanesesr3962Serbianel6382Greekru950Russianru206Russianeo2908 Esperantoes886Spanishja7671Japaneseja7537Japanesezh3948Chinesefr6417Frenchccp7307Chakmaiu6169 Inuktitutbn6296Banglaiu4417 Inuktitutar3848Arabicel6345Greekzh5055Chinesesr2385Serbianja3601Japanesechr4199Cherokeefr4954Frenchbn2233Banglatr7524Turkishiu3205 Inuktitutccp3384Chakmaeo6542 Esperantoar6820Arabicru666Russianfr7599Frenchth1342Thaiar3971Arabicbn1273Banglafr7020Frenchzh3039Chinesesr4849Serbianen3370Englishfr2075Frenchar6471Arabicbn2120Banglaja997Japanesefr2134Frenchru5270Russianchr3051Cherokeeen7540Englishccp3966Chakmaccp7449Chakmaiu6658 Inuktitutbn6992Banglabn7062Banglafr5933Frenchth7572Thaisr6638Serbiantr1183Turkishsr7333Serbianbn4373Banglaes2218Spanishes7813Spanisheo5789 Esperantoeo1662 Esperantoeo1914 Esperantoru2104Russianru3654Russiansr7431Serbianchr6070Cherokeeeo7812 Esperantoru7176Russianeo2802 Esperantozh4968Chinesees7412Spanishtr8085Turkishru6551Russianeo4576 Esperantoja2186Japaneseen2785Englishes2429Spanisheo1409 Esperantoth2578Thaith7024Thaija5531Japaneseru4289Russianchr7242Cherokeear559Arabices7559Spanishchr5076Cherokeeth4540Thaichr5033Cherokeeeo5340 Esperantofr3935Frenchth6150Thaisr2128Serbiansr2732Serbiansr8045Serbianiu6261 Inuktitutar1391Arabicccp1679Chakmaes5004Spanishth7758Thaibn5359Banglazh2742Chineseru4602Russiantr7605Turkishfr1041Frenchar1366Arabicfr7842Frenchfr2412Frenchru4069Russianen3695Englishccp1877Chakmaja7366Japanesetr4751Turkisheo642 Esperantoar6396Arabicel4800Greekar1966Arabicchr4594Cherokeebn1396Banglaeo5338 Esperantoccp5267Chakmabn4922Banglaja5975Japaneseru4798Russianja5206Japaneseja4772Japaneseeo6438 Esperantoar2549Arabicccp2443Chakmael6886Greekar3354Arabicccp2809Chakmaeo6893 Esperantoes5792Spanishccp585Chakmaar5052Arabicsr6970Serbianeo3533 Esperantoar7976Arabicbn4501Banglaccp4312Chakmaes3049Spanishiu6747 Inuktitutru1001Russianar5568Arabiceo1434 Esperantoru2258Russianiu8136 Inuktitutbn4047Banglaru2958Russiantr7051Turkishbn4785Banglaar5902Arabicel6208Greekzh7912Chineseru2922Russianth6826Thaiccp5092Chakmazh2044Chineseccp7110Chakmath4139Thaichr6469Cherokeeccp3412Chakmachr7825Cherokeebn3663Banglasr3491Serbianar1402Arabicccp4270Chakmaccp6733Chakmatr7808Turkishiu3963 Inuktitutfr2163Frencheo3449 Esperantoru6033Russianes2169Spanishja1126Japaneseiu2812 Inuktituteo24 Esperantoes1893Spanishccp1479Chakmaeo5039 Esperantoja5640Japaneseru1825Russianbn485Banglatr6387Turkishen5846Englishja3100Japaneseccp3922Chakmael2514Greekel6598Greekiu3186 Inuktitutru3034Russianen4867Englishbn7655Banglaeo5385 Esperantoel5366Greekiu97 Inuktituttr2492Turkishes5179Spanishar7359Arabices3704Spanishen2484Englisheo204 Esperantosr3589Serbianel5065Greekbn2416Banglaar1056Arabiceo6080 Esperantoja4536Japanesezh7067Chinesebn8186Banglaen5814Englishtr6627Turkishbn5685Banglafr4834Frenchiu1214 Inuktitutar4256Arabiczh4640Chineseccp2617Chakmaeo1925 Esperantoes3387Spanishru6806Russianel4429Greekar6052Arabicfr2564Frenchfr7934Frenchccp1005Chakmaen1068Englishfr6548Frenchth5738Thaichr1960Cherokeesr5687Serbiansr7903Serbianel1998Greekel1052Greekja756Japaneseeo1793 Esperantochr5665Cherokeeen6120Englishes1760Spanishth6905Thaiccp3685Chakmatr1084Turkishzh874Chinesezh3695Chineseel6355Greeksr974Serbiantr7522Turkishzh6509Chineseen3430Englishes705Spanishsr4620Serbiantr5630Turkishchr1597Cherokeeja3036Japaneseth7943Thaieo6171 Esperantoar3777Arabiczh3377Chinesees3881Spanishfr7754Frenchru7162Russianen5108Englishtr2651Turkishccp6307Chakmazh7330Chinesees6378Spanishes8174Spanishfr3505Frenchccp4417Chakmaen1128Englishel6703Greekccp843Chakmabn7892Banglaen2324Englishchr8137Cherokeesr1348Serbianel4442Greekiu6067 Inuktituten3095Englishiu3817 Inuktitutel8060Greekchr2734Cherokeeen7333Englishel3265Greeksr1751Serbianen158Englishen7444Englishfr2296Frenchzh3074Chineseccp4358Chakmachr6902Cherokeeeo3619 Esperantoes7093Spanishiu141 Inuktituteo586 Esperantobn2729Banglaes838Spanishccp7115Chakmaen3188Englishes1868Spanishccp2898Chakmaeo2278 Esperantofr4432Frenchchr7398Cherokeees2666Spanishzh7542Chineseen4258Englishbn5868Banglaeo1721 Esperantobn50Banglaja3382Japanesefr2095Frenchtr2275Turkisheo7817 Esperantobn3257Banglaccp6380Chakmaes5181Spanishsr8079Serbianja5379Japanesees7734Spanishzh6625Chineseja6110Japanesees8121Spanishar9Arabicccp5471Chakmaen166Englishel2453Greeksr6853Serbiantr3720Turkishiu2696 Inuktituten7994Englishel5223Greekeo6014 Esperantoen6745Englishru2991Russianja1800Japaneseen2658Englisheo6938 Esperantofr5233Frenchiu5334 Inuktitutja2344Japanesesr94Serbiantr696Turkishchr4555Cherokeeiu354 Inuktitutel4078Greekth1386Thaitr5770Turkisheo8095 Esperantoth2561Thaiccp4722Chakmaen5067Englishtr7397Turkishzh4064Chinesechr7132Cherokeechr4376Cherokeetr6494Turkishsr8080Serbianzh2041Chinesefr6825Frenchsr2091Serbianen7604Englishtr1806Turkishsr964Serbianth4333Thaizh1176Chinesebn3386Banglaiu4094 Inuktitutel389Greeken2307Englishzh7370Chineseel3491Greekru1089Russianar1442Arabicja5356Japaneseel5770Greekja3242Japanesezh6458Chinesechr2617Cherokeeen1006Englishfr5245Frenchccp7884Chakmasr1379Serbianeo546 Esperantoar8121Arabiczh5134Chinesesr4598Serbiansr4259Serbiantr4947Turkishccp2776Chakmafr4496Frenches6124Spanishzh5017Chineseth7198Thaibn3195Banglafr1794Frenchtr6912Turkishel2737Greekar8186Arabicru2681Russianel582Greekbn7118Banglael2828Greekfr6966Frenchsr5390Serbianar5229Arabicen5692Englishth3730Thaiel3252Greekeo5436 Esperantochr7281Cherokeechr7816Cherokeesr6514Serbianeo7362 Esperantoth4715Thaiiu364 Inuktituttr4251Turkishzh4232Chineseru3006Russianchr4840Cherokeear2471Arabicccp7650Chakmaja1344Japanesesr6236Serbianzh6971Chinesetr6972Turkishsr2975Serbiantr591Turkishth7130Thaichr2087Cherokeeeo1001 Esperantoth6379Thaien2766Englishar1603Arabicchr5821Cherokeeeo5769 Esperantotr3174Turkishtr1997Turkishiu2141 Inuktitutccp7192Chakmaeo581 Esperantoel2548Greekes3239Spanishel3241Greekzh773Chinesebn3189Banglazh4029Chinesees2204Spanisheo7172 Esperantosr5377Serbianeo6616 Esperantoccp824Chakmael1159Greekth4705Thaieo4601 Esperantoja2111Japanesefr2581Frenchru8125Russianen2420Englishzh957Chineseja6785Japaneseccp4287Chakmachr5960Cherokeees2424Spanishth1097Thaien4506Englishtr4235Turkishen3445Englishbn1782Banglath5327Thaifr2530Frencheo7870 Esperantotr628Turkishbn4891Banglaccp806Chakmaru5591Russiantr6357Turkishes1865Spanishja7876Japaneseth1925Thaiar7356Arabicar6077Arabicel6262Greekja2383Japaneseel4560Greekfr6284Frenchsr4359Serbiansr3120Serbianfr6397Frenchth55Thaith717Thaieo7727 Esperantotr1419Turkishzh2083Chineseeo370 Esperantozh767Chinesechr5350Cherokeeen7077Englishchr5523Cherokeear3867Arabicar5976Arabicen7465Englishfr6211Frenchja1066Japanesear5803Arabictr4166Turkishth8154Thaiccp4854Chakmaccp119Chakmaar4950Arabicchr6388Cherokeebn3157Banglafr7988Frenchbn1785Banglazh2750Chinesebn1724Banglatr5387Turkishsr2048Serbianar6560Arabicja914Japanesezh2690Chineseru3996Russianel3651Greekar3003Arabicfr6242Frenchar4761Arabicfr6275Frenchbn4512Banglaeo4203 Esperantosr2121Serbianel2958Greeken857Englishar4488Arabicru530Russianen1070Englishes3178Spanishja1721Japanesebn3162Banglafr1292Frenchiu6131 Inuktitutfr2681Frenchsr2188Serbianes6057Spanishja5624Japaneseja6559Japanesechr393Cherokeeth7150Thaiel6981Greeksr2545Serbianar6403Arabices6579Spanishth4667Thaisr2174Serbiantr7198Turkishel1266Greekja5288Japaneseth7353Thaien1119Englisheo1158 Esperantoccp5973Chakmasr4346Serbianbn7637Banglaar6814Arabicfr2213Frenchru2310Russianen3740Englishen5551Englishja72Japaneseth8029Thaitr4026Turkisheo4602 Esperantoes7411Spanisheo3705 Esperantoel5072Greekru1687Russianru7647Russianru3445Russianiu6084 Inuktitutel68Greekbn825Banglaja3974Japanesefr8136Frenchzh2210Chineseru4669Russianja5163Japanesefr7418Frenchen6151Englishiu1336 Inuktitutja3420Japanesesr569Serbianth426Thaibn1753Banglaar2500Arabicsr875Serbianth4658Thaizh3386Chineseru6835Russianiu7839 Inuktitutth6901Thaien2088Englishiu2261 Inuktitutccp6671Chakmafr2671Frenchar4760Arabicja2272Japanesear2942Arabicru7218Russianth2640Thaiar7872Arabicth7400Thaiccp1066Chakmaiu3681 Inuktitutsr5004Serbianth2846Thaizh3023Chinesezh3500Chineseccp4489Chakmaes5758Spanishsr497Serbianar1117Arabicbn5387Banglaes9Spanishar1698Arabicbn6329Banglasr5157Serbiansr6297Serbianchr3799Cherokeeja6899Japaneseen7196Englishes3404Spanishja179Japanesechr5502Cherokeeth4450Thaiiu3121 Inuktitutchr7782Cherokeeiu4772 Inuktituteo8153 Esperantotr6217Turkishel2577Greekchr5718Cherokeeth2230Thaiiu2724 Inuktituttr2722Turkishccp5615Chakmaiu7339 Inuktituttr3610Turkishfr6293Frenchbn5090Banglaja5960Japanesezh670Chineseccp5076Chakmath7660Thaitr3636Turkishen2753Englishen3622Englisheo3095 Esperantoen1251Englishes6547Spanishiu2444 Inuktitutja7081Japanesetr7352Turkishbn4939Banglasr7179Serbianccp8045Chakmabn2361Banglaccp6079Chakmaeo5612 Esperantofr2684Frencheo1889 Esperantoeo3875 Esperantoccp3629Chakmaes6316Spanishsr5605Serbianes2337Spanishtr7509Turkishiu710 Inuktitutzh5023Chinesear1742Arabicbn2941Banglaeo5467 Esperantoccp3360Chakmaeo7046 Esperantofr3994Frenchsr5886Serbianth8161Thaizh2711Chineseen3112Englishel5638Greekiu3214 Inuktitutiu5595 Inuktitutel2436Greeksr5000Serbiantr8048Turkishen310Englishth472Thaiar351Arabicfr447Frenchiu3101 Inuktitutbn7409Banglael2961Greeken356Englishen7383Englishfr12Frenchfr5199Frenchtr4835Turkishzh1589Chinesezh7175Chineseja5166Japanesesr1787Serbianbn1536Banglaeo6218 Esperantoeo5619 Esperantosr7562Serbianes5591Spanishth3000Thaizh5972Chineseru2610Russianru5177Russianel1999Greekar6040Arabicbn7130Banglasr6539Serbianja6835Japanesebn3748Banglaeo7723 Esperantofr6852Frenchiu965 Inuktitutiu7966 Inuktitutar4588Arabiceo2933 Esperantochr2Cherokeechr7574Cherokeeiu1272 Inuktitutja4069Japaneseeo4093 Esperantoar3517Arabicfr7416Frenchchr3177Cherokeeru1137Russianzh2645Chinesetr5960Turkishchr7069Cherokeeen2490Englishes4190Spanishsr509Serbiantr2901Turkishiu1747 Inuktituteo5906 Esperantoru2806Russianth3624Thaizh5660Chinesebn5107Banglachr3977Cherokeebn4794Banglaar3179Arabicel772Greekfr2388Frenchth4269Thaibn3689Banglaes6994Spanishchr2549Cherokeetr3080Turkishar4379Arabiciu2744 Inuktitutzh974Chinesesr1686Serbianiu3395 Inuktitutzh6685Chineseiu2870 Inuktitutel6640Greekru6961Russianccp4290Chakmatr3417Turkishchr1546Cherokeechr635Cherokeees4917Spanishes5293Spanishja4047Japaneseja5929Japaneseth5390Thaichr8082Cherokeetr350Turkishja7317Japaneseru8181Russiansr425Serbianes264Spanishiu6855 Inuktitutfr6141Frenchja6057Japaneseru6908Russianar6336Arabicbn1842Banglaccp6382Chakmaeo3987 Esperantoru4909Russianar7576Arabiczh147Chinesebn7987Banglabn1893Banglafr3300Frenchsr3275Serbianfr1610Frenchfr2734Frenchth7586Thaifr7645Frenchzh5431Chinesebn6586Banglaes2057Spanishchr1256Cherokeear4726Arabicar3975Arabicbn548Banglaes1426Spanishes1558Spanishzh6704Chinesear1523Arabicsr4130Serbianzh7617Chineseth3428Thaizh1905Chineseru1258Russianzh5254Chinesesr3640Serbianzh4378Chineseeo2421 Esperantochr4413Cherokeear7440Arabicsr903Serbianccp5680Chakmaen1052Englishar2027Arabicbn6699Banglasr7151Serbianja7487Japanesefr7502Frenchbn964Banglaen4146Englishja2407Japanesear585Arabicja3752Japanesezh3414Chineseru7977Russianar8084Arabicel72Greekar7098Arabiceo2150 Esperantofr961Frenchiu4552 Inuktitutar3978Arabiceo6487 Esperantoru419Russiansr4508Serbianth2808Thaitr2937Turkishes2006Spanishes8095Spanishzh3030Chinesebn3250Banglaeo2768 Esperantoja4432Japaneseiu5350 Inuktitutes4816Spanishzh889Chinesechr2934Cherokeesr3765Serbianar296Arabiciu7301 Inuktitutbn7752Banglazh2413Chinesees7302Spanishth6742Thaith6787Thaija5494Japanesechr5855Cherokeear205Arabicar7461Arabicth2010Thaien3526Englishes5092Spanishru3041Russianes7708Spanishar491Arabicru6277Russianru1525Russianeo1018 Esperantoja1538Japaneseeo5667 Esperantoja1342Japanesechr5574Cherokeeja6961Japaneseja3155Japanesetr3501Turkishen4522Englishsr7605Serbianen3915Englishccp6516Chakmachr500Cherokeeru4326Russiansr7356Serbianfr720Frenchtr4434Turkishja5719Japaneseen8061Englishccp4606Chakmaeo5046 Esperantoiu5372 Inuktitutzh7856Chineseel3276Greekiu1449 Inuktitutbn3412Banglaccp6693Chakmaen1974Englishbn3403Banglaccp3002Chakmath4187Thaizh6567Chineseiu7002 Inuktitutchr4066Cherokeeiu3929 Inuktitutel4056Greekes1641Spanishfr1327Frenchar4781Arabicja7627Japanesefr5488Frenchccp2620Chakmaar2047Arabicja6486Japaneseth7057Thaiar4780Arabiciu7507 Inuktitutchr1173Cherokeeja4155Japaneseja4220Japanesechr4929Cherokeetr4295Turkishsr8123Serbiansr3448Serbianth5698Thaiiu5819 Inuktitutth4500Thaiccp6711Chakmaja3564Japaneseru5137Russiantr1672Turkishel3357Greektr7533Turkishen5215Englishchr7928Cherokeefr880Frenchtr5114Turkishchr723Cherokeefr159Frenchsr1710Serbianja1113Japaneseiu1539 Inuktitutes7009Spanishbn651Banglachr1043Cherokeeccp2788Chakmachr2413Cherokeeja2787Japaneseen3245Englishfr7995Frenchchr4414Cherokeeiu6628 Inuktitutbn3063Banglatr504Turkishiu2504 Inuktitutel7356Greekzh6021Chinesees1542Spanishccp5736Chakmaru6599Russianru4870Russianel5730Greektr2860Turkishtr6153Turkisheo7898 Esperantoen6722Englishen2956Englishfr4860Frenchsr1415Serbiantr2692Turkishccp6017Chakmaru5443Russiansr5583Serbiantr2669Turkishccp784Chakmasr3952Serbianeo4837 Esperantoja7630Japanesetr138Turkishsr3155Serbianja5646Japanesefr6115Frenchsr7439Serbianja2749Japanesechr1822Cherokeechr4011Cherokeeccp7327Chakmasr3770Serbianth282Thaitr5104Turkishru2229Russianru5299Russianes6462Spanishchr4604Cherokeeccp8049Chakmaru458Russianes5087Spanishiu3737 Inuktitutth6306Thairu5795Russianccp6053Chakmaiu4358 Inuktitutzh4943Chineseja3354Japanesechr5361Cherokeeen57Englisheo962 Esperantoccp1501Chakmatr6888Turkishar5167Arabiciu4313 Inuktitutth4191Thaitr1006Turkishchr6503Cherokeetr3171Turkishel6765Greekccp6703Chakmaiu1012 Inuktitutzh3431Chineseen6095Englishiu6310 Inuktitutes1162Spanishchr544Cherokeechr7960Cherokeetr831Turkishbn6877Banglatr3676Turkishar1312Arabiciu7193 Inuktitutru198Russianchr7853Cherokeeen6529Englishar450Arabicchr2831Cherokeefr7165Frenchsr7732Serbianbn7067Banglaiu6887 Inuktitutsr5118Serbianth4378Thaisr392Serbianel1193Greekja4191Japaneseiu2427 Inuktituten4864Englishzh7972Chinesefr3385Frenchzh8171Chineseccp4134Chakmael4453Greekru1895Russianru1286Russianar557Arabices389Spanishes2759Spanishth5911Thaieo5242 Esperantoen5668Englishchr6373Cherokeezh2119Chineseel4590Greekeo2045 Esperantozh5555Chineseth1489Thaizh3553Chineseiu5852 Inuktitutchr4245Cherokeechr3824Cherokeechr2397Cherokeebn3239Banglaes8123Spanishar7934Arabiceo4918 Esperantoja6467Japaneseiu2076 Inuktitutsr3284Serbianiu4683 Inuktitutchr1457Cherokeeiu1845 Inuktitutccp5571Chakmaeo2819 Esperantoar5951Arabicru6038Russianeo1449 Esperantotr5510Turkishccp6276Chakmaeo4147 Esperantoeo6911 Esperantoccp3964Chakmazh4113Chineseiu7512 Inuktituttr7110Turkishru4365Russiantr5261Turkisheo5075 Esperantobn3967Banglachr2192Cherokeeja1748Japaneseiu2677 Inuktitutzh3064Chineseth2638Thaiar4745Arabicbn6641Banglaen4608Englishzh5293Chineseel1101Greeksr4142Serbianchr1868Cherokeeiu967 Inuktituttr5808Turkishru5488Russianchr4475Cherokeeel3791Greekru1163Russianfr1743Frenchtr1741Turkishth4751Thaith115Thaitr1288Turkishtr1837Turkishth4618Thaiar1281Arabictr5751Turkishja4364Japaneseeo1326 Esperantoar2188Arabicth1077Thairu2606Russianth101Thaichr846Cherokeesr4950Serbianes5807Spanishel5904Greekeo4892 Esperantoccp1751Chakmafr5416Frenchel3427Greekes3279Spanishsr3657Serbianru5406Russianeo4033 Esperantoes6025Spanishen2033Englishar7638Arabicbn7718Banglasr8036Serbianel6796Greekar6384Arabicbn5262Banglaiu3136 Inuktitutth1807Thaiiu3770 Inuktituttr5335Turkishzh3649Chineseiu2598 Inuktituttr1363Turkishth7633Thaichr4206Cherokeeel6331Greekccp5146Chakmael2838Greekar6974Arabicccp6487Chakmaar5894Arabicar4036Arabicru6713Russianfr5010Frenchiu3691 Inuktituten6860Englishsr1774Serbianar6260Arabicbn3292Banglafr5342Frenchfr4155Frenchru3227Russianel7161Greekchr456Cherokeefr3820Frenchzh5883Chinesesr246Serbianfr6017Frenchsr2643Serbianiu3081 Inuktitutru5297Russianiu3766 Inuktitutel633Greekeo7614 Esperantochr5970Cherokeebn2318Banglaccp6469Chakmaja2449Japaneseth6920Thaith5993Thaiiu7259 Inuktitutiu103 Inuktitutel754Greekel8055Greektr2708Turkishccp1244Chakmaar5554Arabicccp7818Chakmaja2582Japaneseja5008Japanesetr7976Turkishchr7474Cherokeeja1302Japaneseja6442Japanesebn5237Banglaen3293Englishth4050Thaies7245Spanishar6290Arabicbn7998Banglael1654Greekfr2449Frencheo4531 Esperantochr4270Cherokeeiu5300 Inuktitutru4835Russiantr2437Turkishth8080Thaiiu5654 Inuktitutiu3407 Inuktituteo6846 Esperantoel1476Greekel5254Greekar764Arabicccp5153Chakmaja5449Japaneseen6715Englishen5440Englishes714Spanishiu960 Inuktitutchr2650Cherokeebn5285Banglael8139Greekiu2409 Inuktitutfr2186Frenchru7186Russianja2818Japaneseen5002Englishfr1421Frenchsr5206Serbianth4931Thaija5038Japanesechr2093Cherokeeru1930Russianen1912Englisheo5002 Esperantoiu919 Inuktitutchr7824Cherokeeel2122Greekchr7744Cherokeeeo5320 Esperantobn3786Banglath91Thaibn6619Banglasr3015Serbianzh4160Chinesesr3718Serbianja6462Japanesesr7850Serbianen1459Englishel186Greekja2600Japaneseel185Greekes6397Spanishiu2068 Inuktitutchr5631Cherokeear4106Arabiceo6365 Esperantosr3752Serbianzh3881Chineseel2342Greekth3986Thaizh1621Chinesear3092Arabicchr6559Cherokeeen4868Englishtr7276Turkishiu5486 Inuktitutes303Spanishchr189Cherokeees6056Spanishru3785Russianccp2717Chakmaar1273Arabices5051Spanishes5613Spanishiu969 Inuktitutsr7373Serbianfr1861Frenchsr4671Serbianccp4567Chakmaja3576Japanesees3152Spanishes1456Spanishbn6713Banglaja4966Japaneseen4818Englishsr3004Serbianeo8130 Esperantoar4276Arabices1786Spanishchr6440Cherokeeen2049Englishth6455Thaieo6462 Esperantosr4603Serbianru2137Russianel6675Greekfr326Frenchzh7402Chinesebn89Banglaen7382Englishen5757Englishiu3697 Inuktitutfr6708Frenchja6216Japaneseru6650Russianar3067Arabicbn3409Banglaccp88Chakmaes5974Spanishth6327Thaiiu8099 Inuktitutchr3172Cherokeebn7254Banglaes329Spanishja3244Japanesetr4914Turkishfr3635Frenchen6272Englishes5983Spanishfr4214Frenchel2386Greekja5962Japanesees2523Spanishzh975Chinesezh1755Chinesefr749Frenchsr2000Serbianbn6447Banglaiu3198 Inuktitutchr3246Cherokeear8038Arabicchr6820Cherokeeiu5614 Inuktitutth6301Thaiccp8029Chakmachr4474Cherokeeth4984Thaiel4006Greekes5746Spanishccp1657Chakmaja6934Japanesear6160Arabicar1799Arabicccp6811Chakmatr7679Turkisheo5025 Esperantoja3580Japaneseccp2858Chakmael6837Greekar2043Arabicfr483Frenchccp3805Chakmachr514Cherokeechr7420Cherokeebn5947Banglachr6338Cherokeeeo2067 Esperantotr2832Turkishes2578Spanishth7177Thaiar5566Arabicccp6662Chakmaiu7407 Inuktitutel6195Greekes3408Spanishru91Russiantr5880Turkishth3300Thaizh5622Chineseel3074Greekes4602Spanishiu1456 Inuktitutar177Arabicccp7579Chakmaja6003Japanesefr2908Frenchar4940Arabicen6424Englishar3716Arabiceo4294 Esperantosr5709Serbianes8030Spanishtr1225Turkishar3756Arabicsr6929Serbianru4552Russianru4339Russianru3031Russianfr10Frenchsr7453Serbianth169Thairu1682Russianbn5035Banglachr8078Cherokeeccp1646Chakmabn3929Banglaccp1675Chakmachr1405Cherokeeen149Englisheo3861 Esperantosr4790Serbianel3870Greekchr1183Cherokeees7953Spanishfr1322Frenchsr7005Serbianzh2289Chinesesr6303Serbianja5793Japanesebn4897Banglasr1999Serbiansr5901Serbianccp5553Chakmaeo4050 Esperantoel6627Greekru3040Russianbn7812Banglatr6116Turkishth2333Thaiel7476Greekth4267Thaija8088Japanesesr2212Serbianchr2947Cherokeeel1424Greekzh2127Chineseccp5763Chakmaen7339Englisheo2936 Esperantoccp3972Chakmafr3940Frenchiu5557 Inuktitutchr1734Cherokeesr4684Serbianccp4444Chakmaen3696Englishes6433Spanishar4869Arabicccp2123Chakmaen3442Englishth5333Thaizh3493Chineseccp5986Chakmaja6660Japaneseth1869Thaitr6538Turkishru6278Russianfr5164Frenchbn773Banglaiu379 Inuktitutbn8087Banglaeo2169 Esperantosr2889Serbianfr8012Frenchccp8104Chakmaiu2526 Inuktitutzh1540Chinesefr3074Frenchchr2814Cherokeebn1921Banglaeo6296 Esperantobn6082Banglabn2754Banglasr15Serbianel4561Greeksr6765Serbianzh7565Chineseiu560 Inuktitutchr7199Cherokeeth6136Thaieo1903 Esperantobn2874Banglaccp945Chakmaccp3697Chakmaeo7604 Esperantoiu1424 Inuktitutiu3070 Inuktituteo3598 Esperantotr4207Turkishar1694Arabicccp4314Chakmaar1969Arabiceo5720 Esperantotr7670Turkishja5043Japaneseth3065Thaija1783Japaneseeo3030 Esperantoja1792Japaneseen4737Englishiu6237 Inuktitutchr3219Cherokeezh4132Chinesees5246Spanishja2880Japaneseel2213Greekbn5532Banglabn3866Banglaiu3185 Inuktitutja6188Japaneseru2536Russiantr7677Turkishccp7956Chakmaiu7918 Inuktitutja3738Japaneseru2485Russianiu4115 Inuktitutja399Japaneseel5006Greeken2597Englisheo6574 Esperantoen7075Englisheo2774 Esperantoen8056Englishbn2071Banglael327Greekeo4943 Esperantoeo4832 Esperantotr3497Turkishchr7403Cherokeeccp8096Chakmatr4071Turkishru5899Russianja1860Japanesefr1412Frenchchr604Cherokeeru5587Russiansr4756Serbianru3524Russiansr783Serbianja5786Japaneseru1095Russianchr591Cherokeeen3645Englishbn6659Banglazh7824Chineseccp2156Chakmabn387Banglafr1272Frenchtr5547Turkishccp5053Chakmaen1773Englishbn5636Banglazh6377Chineseel7338Greekfr4855Frenchar7226Arabicel1834Greekbn7660Banglaes543Spanishsr1817Serbianth1148Thaichr8012Cherokeefr6218Frenchiu529 Inuktitutfr3407Frenchar7903Arabices6912Spanishsr5904Serbianeo5992 Esperantobn2355Banglafr2019Frenchtr596Turkishes2636Spanishja7700Japanesetr7952Turkishbn3174Banglaeo1082 Esperantozh1985Chineseru4738Russiantr2464Turkishiu5634 Inuktitutth2733Thaisr1694Serbianen4387Englisheo6772 Esperantoen6025Englishtr3289Turkishzh3700Chinesesr402Serbianen69Englishja697Japaneseen5584Englishth7255Thaies2835Spanishzh6333Chineseccp126Chakmael6099Greekel7086Greekes4250Spanisheo7065 Esperantobn5489Banglachr4000Cherokeeja5500Japanesetr6809Turkishth494Thaiar447Arabicja2917Japanesear99Arabicccp2549Chakmasr2774Serbianar8073Arabicccp1632Chakmaen928Englisheo5041 Esperantofr2057Frencheo5921 Esperantotr4433Turkishru5734Russiansr4955Serbiantr6385Turkishth5711Thaith7921Thaibn787Banglaes6980Spanishiu7809 Inuktitutru7958Russianbn7523Banglaiu2481 Inuktitutar3626Arabicen3889Englishfr5981Frenchzh4884Chineseth1273Thaies2248Spanishes3633Spanishfr5679Frenchfr730Frenchccp4389Chakmaen7683Englishes6160Spanishtr4740Turkisheo6548 Esperantosr1196Serbiansr1992Serbianes4002Spanishes1569Spanishsr5379Serbianel3047Greekth6315Thaija8143Japaneseru5818Russianzh5028Chineseeo5970 Esperantoes4374Spanisheo3943 Esperantoth6523Thaieo3625 Esperantoru2593Russianru1898Russianchr361Cherokeeen1874Englishchr1505Cherokeeru5331Russianja7092Japanesees5620Spanishsr5453Serbianzh6609Chineseja6309Japaneseru166Russianiu5889 Inuktituten5297Englishtr3442Turkishen3082Englishar20Arabiczh6503Chineseen4167Englishfr7912Frenchiu49 Inuktituttr579Turkishel1304Greekel2427Greekfr1824Frenchsr1524Serbianzh1673Chinesetr65Turkishzh6037Chineseccp1740Chakmatr7612Turkisheo3738 Esperantoru6217Russianchr2910Cherokeeen6162Englishfr5713Frenchja8065Japaneseen5530Englishsr6428Serbianth7639Thairu2654Russianiu7638 Inuktitutes877Spanishen1753Englishzh5358Chinesesr5168Serbianccp7185Chakmaen7266Englishiu138 Inuktitutru4430Russianes4478Spanishfr2358Frenchar903Arabicth6444Thaibn1641Banglaru3145Russianbn700Banglachr7646Cherokeeel841Greekel4875Greekzh4742Chineseth1211Thaizh6843Chinesebn2817Banglaccp2483Chakmachr4161Cherokeeiu3454 Inuktitutbn2596Banglazh5514Chineseeo7819 Esperantoccp7689Chakmabn4805Banglasr7883Serbianzh4261Chineseiu2153 Inuktituttr942Turkishfr7480Frenchar4038Arabicchr3160Cherokeesr4966Serbianen1788Englishzh2248Chinesechr7051Cherokeeccp2561Chakmael2310Greeken5287Englishbn8103Banglaes6715Spanishar4858Arabiciu7311 Inuktitutchr4855Cherokeeen8167Englishfr7155Frenchchr5513Cherokeeel4425Greekar6796Arabicen1300Englishen8092Englishen8173Englishes352Spanishja1716Japanesezh1309Chinesees6803Spanishar5333Arabicel3989Greekes7204Spanishth545Thaizh269Chinesesr5014Serbianzh2169Chineseja7529Japanesebn2612Banglachr6762Cherokeechr4202Cherokeeru2449Russianbn7124Banglaja3850Japaneseen188Englishiu4758 Inuktitutth2274Thaiccp2322Chakmaes3466Spanishccp3558Chakmael6970Greekar7636Arabices7454Spanishar5182Arabiceo3061 Esperantoeo3110 Esperantoel3187Greekfr2666Frenchen5627Englishfr7534Frenchru2447Russianzh1620Chineseiu6031 Inuktitutru4473Russianfr7358Frenchccp1092Chakmaeo5980 Esperantoiu3465 Inuktitutsr5034Serbianiu6820 Inuktitutsr7101Serbianiu6309 Inuktitutsr8018Serbianeo3282 Esperantosr1384Serbianar1175Arabicth3337Thaith3552Thaibn281Banglael5391Greeken2591Englishar3647Arabicth5898Thaiiu3944 Inuktitutiu4307 Inuktituttr3009Turkishccp4729Chakmachr2553Cherokeechr2876Cherokeeeo819 Esperantoja4481Japanesesr7935Serbianfr2129Frenchzh4549Chineseeo7431 Esperantoiu1014 Inuktitutfr3822Frenchbn7688Banglaccp7319Chakmaes7588Spanishsr6423Serbianiu2649 Inuktitutru1986Russianes7555Spanishfr1695Frenchth216Thaies1482Spanishes5198Spanishth2351Thaisr2629Serbiansr6159Serbianchr5340Cherokeeja8024Japanesechr1655Cherokeechr6269Cherokeefr8174Frenchtr90Turkishfr1134Frenchth3086Thaieo1618 Esperantoar3434Arabicru5768Russianth1117Thaija4388Japanesebn3160Banglael371Greekth6793Thaibn669Banglazh1641Chinesees3111Spanishchr93Cherokeebn7461Banglaes4424Spanishzh3282Chineseeo4562 Esperantobn4810Banglabn6393Banglaccp7182Chakmaen732Englishsr7597Serbianccp5090Chakmaar2684Arabicchr2640Cherokeeja2977Japaneseiu6723 Inuktitutja6292Japaneseja4953Japaneseeo2355 Esperantoel5440Greekel5500Greekfr5355Frenchen6312Englishccp6249Chakmasr6388Serbianbn36Banglaen5983Englishchr2761Cherokeeel4510Greekes185Spanishfr7989Frenchru3444Russiansr4505Serbianbn5245Banglaeo5820 Esperantoiu1813 Inuktituteo8114 Esperantoth3744Thaieo5337 Esperantoru4122Russianel6405Greeken6013Englishchr1393Cherokeeen4039Englishccp3076Chakmaeo2171 Esperantoeo6169 Esperantosr4945Serbianzh5420Chineseeo3907 Esperantobn6804Banglael2505Greekfr493Frenchja1503Japanesear3762Arabiciu1523 Inuktitutja5474Japaneseen1879Englishsr1165Serbiantr1974Turkishth3261Thaichr5604Cherokeeja6202Japanesetr546Turkishth6326Thaifr5285Frenchbn8012Banglatr759Turkisheo2701 Esperantobn1832Banglachr366Cherokeebn905Banglaes1960Spanishiu1073 Inuktitutiu2185 Inuktitutja1879Japanesees4347Spanishbn1913Banglaru2454Russiantr4406Turkishtr4919Turkishru6013Russianel5089Greekfr4952Frencheo1890 Esperantofr7830Frenchth6926Thaizh4577Chineseeo89 Esperantobn6652Banglaeo2382 Esperantozh5922Chineseja5569Japanesear4547Arabicja6123Japanesetr1555Turkishja6153Japanesebn3306Banglaja6809Japanesezh4973Chineseccp3524Chakmael3191Greekth1190Thaien2469Englisheo1291 Esperantoth4577Thaizh6355Chineseja4367Japaneseru4674Russianzh6995Chinesechr5649Cherokeebn1650Banglaen5826Englishja104Japanesechr7119Cherokeeiu6032 Inuktitutfr490Frenchbn6765Banglaccp930Chakmael6513Greekel4286Greekel6934Greeken7360Englishiu7645 Inuktitutja217Japanesebn5395Banglafr396Frenchja8058Japanesechr4892Cherokeechr7716Cherokeeiu3641 Inuktitutzh2776Chinesezh5226Chineseth2812Thaisr7526Serbianen5468Englishchr4072Cherokeees6615Spanishtr4278Turkishbn693Banglaru3493Russianar4409Arabicja4968Japanesesr5073Serbianth4814Thaiel1872Greekiu4277 Inuktitutja3081Japanesees1038Spanishiu6573 Inuktitutsr80Serbianchr5921Cherokeees1507Spanishja7747Japaneseeo2554 Esperantoel24Greekel8098Greekru3413Russianru7250Russianth3810Thaibn1588Banglath614Thaichr1158Cherokeeel90Greekchr3866Cherokeezh1438Chineseru7451Russianel7556Greekth5094Thaith7270Thaibn1088Banglachr2085Cherokeeel1398Greeken7345Englishes979Spanisheo7874 Esperantoes1410Spanishiu7927 Inuktitutru6619Russianja7995Japaneseru7483Russianel7779Greekar3822Arabicfr1903Frenchja4952Japanesefr1049Frenchfr365Frenchja553Japaneseru7990Russianiu3425 Inuktitutzh4244Chineseth5517Thaizh2337Chineseeo3944 Esperantobn6214Banglatr3065Turkisheo1327 Esperantofr1227Frenchfr6101Frenchfr2240Frenchsr7119Serbianbn1402Banglachr6944Cherokeear3126Arabicsr6192Serbianar4229Arabicchr180Cherokeechr5017Cherokeeth4172Thaifr6085Frenchfr3248Frenchja7303Japaneseth2485Thaija1053Japaneseru4768Russiantr8001Turkishchr4360Cherokeeen5070Englishsr260Serbianfr1730Frenchfr1043Frenchccp3911Chakmaen2600Englishtr5726Turkishchr2463Cherokeefr4232Frenchccp4563Chakmaeo2806 Esperantotr2565Turkishel4081Greekar4283Arabicen3118Englishru6241Russiantr5815Turkishccp5692Chakmaiu6273 Inuktitutzh2252Chineseiu3888 Inuktitutar2436Arabices685Spanishzh1883Chinesefr4844Frenchchr7967Cherokeesr6941Serbianru1734Russianar7997Arabices1129Spanisheo5028 Esperantozh7131Chinesees2655Spanishth3521Thaies3230Spanishfr3905Frenches7534Spanishsr5122Serbianth3685Thaibn5033Banglaja5513Japaneseccp6472Chakmasr1224Serbiansr4548Serbiansr5300Serbianes2701Spanishen3947Englishsr3423Serbiansr7993Serbianel6063Greekth2007Thaitr2699Turkishel922Greekfr4763Frenchiu6459 Inuktituten1245Englishel856Greekiu891 Inuktitutbn2607Banglaccp6892Chakmatr7820Turkishtr6193Turkishja5248Japaneseeo6473 Esperantoel7742Greekeo3391 Esperantobn2725Banglabn4983Banglaccp6361Chakmachr6642Cherokeebn1701Banglael2868Greeken1597Englishbn4313Banglaja292Japanesear3692Arabicja4932Japaneseth6328Thaitr4772Turkishen5242Englishbn7632Banglath1424Thaifr1159Frenchen8159Englishar409Arabiciu3629 Inuktitutel2203Greekeo3497 Esperantoja2823Japanesefr5014Frenchfr2694Frenchja6928Japaneseth5033Thaiccp5727Chakmazh6760Chineseccp5622Chakmaja162Japanesear7466Arabicbn3789Banglaccp6604Chakmaiu5330 Inuktitutbn2546Banglaiu7896 Inuktitutja4554Japaneseen6585Englishar2931Arabicja6104Japaneseen5793Englisheo5783 Esperantoru3734Russianbn7498Banglachr1544Cherokeefr5796Frenchru6035Russianth1396Thaiiu2216 Inuktitutsr881Serbianth808Thaija7583Japaneseth4165Thaies4130Spanishja1982Japaneseja988Japanesetr6367Turkishzh6076Chineseccp3622Chakmaccp6984Chakmaiu1736 Inuktitutiu7773 Inuktituttr7149Turkishzh2781Chineseru4737Russianccp2675Chakmasr4834Serbianccp7309Chakmachr232Cherokeeel7048Greekiu6435 Inuktitutsr5357Serbianel5306Greekiu2770 Inuktitutru6142Russiantr192Turkishccp3794Chakmaru5699Russianja7423Japanesesr3332Serbianeo1421 Esperantoel847Greekja1167Japaneseccp3550Chakmaen4024Englishel6901Greekccp4862Chakmaccp8106Chakmatr5931Turkishfr1400Frenchccp3022Chakmaen7726Englishccp7536Chakmaar5576Arabicfr1979Frenchru2599Russianzh1050Chineseeo2762 Esperantoja6400Japaneseeo8167 Esperantosr1950Serbianel7006Greekth6783Thaizh2623Chineseiu3313 Inuktitutja2036Japaneseru6991Russianel7092Greekja69Japanesees5376Spanishsr1465Serbianth8092Thaichr8047Cherokeeen7541Englishiu5821 Inuktitutsr5671Serbianel7566Greekccp3681Chakmaja2516Japanesees6401Spanishth7495Thaibn7344Banglael4213Greekccp6919Chakmaen1305Englishchr2960Cherokeesr6763Serbianbn989Banglaes3946Spanishen658Englishzh1101Chineseel5000Greekzh2728Chineseccp6348Chakmath3796Thaiccp5300Chakmaja6374Japaneseru5682Russianar4876Arabicja6504Japanesebn935Banglatr4328Turkishel1534Greekeo2919 Esperantozh8000Chineseel6735Greekfr185Frenchtr3277Turkishth1000Thaichr1634Cherokeeja1686Japaneseccp3630Chakmaru6676Russianzh5465Chinesetr7744Turkishtr33Turkishbn5391Banglaes3809Spanishiu1681 Inuktitutchr3235Cherokeeiu7475 Inuktitutes6945Spanishbn2692Banglaccp5331Chakmaccp48Chakmaccp1665Chakmaes21Spanishen4572Englishru4641Russianel7171Greekes5300Spanisheo5473 Esperantofr3877Frenchru2131Russianar40Arabiceo7751 Esperantoru2773Russianbn7710Banglaccp7031Chakmaiu636 Inuktitutsr1198Serbianru4973Russianccp2069Chakmasr4540Serbianzh5334Chineseccp2989Chakmaar294Arabicar7841Arabicar6574Arabicbn6405Banglaccp3760Chakmael3107Greekes1262Spanishsr6813Serbianccp980Chakmazh717Chinesetr7584Turkisheo2288 Esperantoeo7141 Esperantotr4585Turkishth3403Thaien795Englishen4073Englishfr3560Frenchfr2582Frenchbn754Banglabn5852Banglaes5224Spanishru7868Russianccp7915Chakmaiu6239 Inuktitutru6533Russiantr1699Turkishtr5424Turkishen7080Englisheo2900 Esperantoth7720Thaies4425Spanishchr309Cherokeesr5007Serbiantr319Turkishar6480Arabicbn6258Banglaeo7711 Esperantoeo1642 Esperantoar7746Arabicth6921Thaibn5571Banglachr6931Cherokeetr5197Turkishchr6800Cherokeechr7675Cherokeear6434Arabicchr1553Cherokeear2143Arabicfr7393Frenchsr1150Serbianccp1840Chakmael7100Greekes534Spanishiu362 Inuktitutccp1463Chakmath1881Thaija3599Japanesesr6501Serbianzh2646Chinesebn5875Banglath3425Thaiel5249Greekru5248Russianzh4167Chineseeo6185 Esperantoru6819Russianzh6226Chineseth5740Thaija4304Japaneseja7452Japanesees416Spanishchr6593Cherokeechr6058Cherokeeel5671Greekel2338Greekja5301Japaneseru1886Russianccp6805Chakmaru3949Russianth589Thaizh2688Chineseccp1232Chakmabn5790Banglath7732Thaith8141Thaies3979Spanisheo6330 Esperantoeo5579 Esperantoel6449Greekja6368Japaneseel1580Greekeo2394 Esperantoiu685 Inuktitutsr5279Serbianccp2554Chakmaja3038Japaneseel3705Greeksr1221Serbiansr5795Serbiansr6147Serbianar2664Arabicbn7977Banglazh6191Chineseen5840Englishzh6904Chinesezh6396Chineseeo920 Esperantoiu4726 Inuktitutar6548Arabicchr3364Cherokeesr407Serbiansr6571Serbianar2796Arabicchr8021Cherokeezh1463Chinesetr832Turkishru2268Russiansr6545Serbiansr3092Serbianes5535Spanishar983Arabicel1785Greekbn8050Banglaeo355 Esperantosr1792Serbianiu6881 Inuktitutzh1268Chineseel3164Greeken1755Englishzh6928Chineseccp2151Chakmachr3492Cherokeeru7201Russianja7768Japaneseiu4870 Inuktitutbn6633Banglachr3384Cherokeeel408Greekeo8149 Esperantotr969Turkishfr6005Frenchja279Japaneseth1574Thaiar1091Arabiciu1087 Inuktitutes283Spanishccp2260Chakmaen5827Englisheo2598 Esperantoccp7998Chakmaccp4515Chakmachr5349Cherokeeth1482Thaith224Thaiiu4073 Inuktitutiu1623 Inuktituteo1065 Esperantoar3045Arabictr7409Turkisheo2876 Esperantosr7187Serbianiu3399 Inuktitutth8033Thaiar5939Arabicja929Japanesezh7164Chineseeo6598 Esperantoiu4685 Inuktitutchr6116Cherokeefr6987Frenchchr1523Cherokeechr7519Cherokeeth2938Thaiel2731Greekiu3362 Inuktituttr422Turkishzh1970Chinesesr4998Serbianchr5448Cherokeechr3488Cherokeebn6459Banglaiu6404 Inuktitutja7949Japanesesr3390Serbianar3785Arabicja4764Japaneseccp1938Chakmachr1587Cherokeear2114Arabicbn1710Banglatr7126Turkishen5352Englishtr4410Turkisheo4174 Esperantoeo6085 Esperantoeo2834 Esperantoru6543Russianru93Russianar6269Arabicru1914Russianth3760Thaien2944Englishfr3584Frenchfr1926Frenches4153Spanisheo3208 Esperantoes6762Spanishfr6857Frenchen2653Englishth5195Thaien3550Englisheo3487 Esperantoar6126Arabicth1773Thaien2554Englishru279Russianfr6169Frenchen510Englishel973Greekja5844Japanesetr7394Turkishchr139Cherokeesr7030Serbianes3532Spanishzh4195Chineseth6467Thaiiu4181 Inuktitutja5768Japanesees1656Spanishar7199Arabicru1811Russianes6766Spanishes7325Spanishiu8115 Inuktitutel3573Greektr1942Turkishfr250Frenchel505Greekel4908Greekes7654Spanishfr7816Frenchja3087Japaneseja4370Japanesear7652Arabicth7031Thaiel3781Greekbn6503Banglath7189Thaizh31Chineseeo4917 Esperantofr7007Frenchccp5222Chakmabn3325Banglazh2595Chinesesr3163Serbianar3256Arabicru7371Russiantr750Turkishar6816Arabicchr7606Cherokeeel3292Greekes6618Spanishiu2511 Inuktitutsr5304Serbianes348Spanishar5343Arabicbn7238Banglaiu1631 Inuktitutsr819Serbianiu6607 Inuktitutru1828Russianeo5305 Esperantoja4755Japanesetr7221Turkishar2574Arabicru24Russianiu722 Inuktitutsr5970Serbianar3248Arabicfr2295Frenchel4438Greeken5505Englishccp3110Chakmazh3855Chineseeo310 Esperantoar2550Arabicar3041Arabicar1416Arabictr2807Turkishfr5595Frenchen4033Englisheo5867 Esperantochr4296Cherokeechr5566Cherokeezh4623Chinesees3120Spanishccp8161Chakmaeo7474 Esperantoes6350Spanishzh3308Chinesees1062Spanishzh7065Chinesechr5802Cherokeeiu6784 Inuktitutes5396Spanisheo7459 Esperantoes2692Spanishes1857Spanishsr56Serbianel262Greekiu1870 Inuktitutchr2762Cherokeebn5369Banglaru598Russianel3951Greektr4677Turkishja2178Japaneseeo461 Esperantochr3769Cherokeechr5828Cherokeeja8115Japanesetr4080Turkishbn1455Banglaiu786 Inuktituttr1626Turkishbn192Banglaru1465Russianbn6353Banglael365Greeken4089Englishchr1509Cherokeeen296Englishru6701Russianccp4614Chakmael154Greekccp121Chakmaja872Japaneseru3452Russianja6519Japaneseja3033Japaneseru1520Russianel6803Greekfr5374Frenchru4813Russianbn5552Banglasr1010Serbiansr410Serbianel5476Greekes7300Spanishzh7095Chineseel2204Greeksr7400Serbianeo893 Esperantoja5755Japanesebn3740Banglabn4287Banglatr1125Turkisheo5917 Esperantofr2759Frenchfr6988Frenchsr4901Serbianel701Greekru6320Russianchr395Cherokeear3221Arabiciu6868 Inuktitutja680Japanesechr633Cherokeeen6942Englishbn4819Banglaiu7316 Inuktitutth6849Thaiiu3686 Inuktitutru3125Russianbn5631Banglaes7575Spanishccp1219Chakmachr4931Cherokeebn1315Banglabn7090Banglatr7696Turkishzh5403Chineseiu1212 Inuktitutchr8011Cherokeeel3751Greekccp3915Chakmachr3395Cherokeechr7860Cherokeeen6548Englishes5144Spanishel1831Greekccp2792Chakmaiu7063 Inuktitutru4446Russiansr1286Serbianchr3806Cherokeeccp8079Chakmabn702Banglaar6849Arabicja1580Japanesezh17Chineseen4096Englishes7244Spanishsr6781Serbianiu254 Inuktitutchr7118Cherokeefr6352Frenchru1279Russianen5130Englishccp4009Chakmaiu1017 Inuktitutzh6259Chinesefr7263Frenchbn6844Banglath2827Thaiel5562Greekchr4710Cherokeees1310Spanishchr3341Cherokeetr2468Turkishsr3807Serbianfr5677Frenchel7625Greekbn2709Banglaar5741Arabicth6667Thaien2065Englishar3395Arabicccp2934Chakmasr584Serbianbn6851Banglaar2853Arabices1289Spanishsr6903Serbianiu2392 Inuktitutel5673Greekccp3258Chakmath7060Thaizh527Chinesetr6072Turkishen2127Englishes2667Spanishar5427Arabicbn2190Banglaes2656Spanishru450Russiantr323Turkishtr6443Turkishar3252Arabicfr4235Frenchel1199Greekeo700 Esperantoar793Arabicen3997Englishfr5757Frenchfr5170Frenchen5798Englishiu5622 Inuktitutru7098Russiansr4975Serbianccp7947Chakmaar5839Arabicchr224Cherokeeiu3316 Inuktitutja1787Japanesebn7636Banglaeo171 Esperantosr5661Serbianfr5090Frenchsr3801Serbiantr327Turkishtr2899Turkishru7771Russiantr3344Turkishel6272Greekccp7735Chakmael382Greekbn4530Banglabn1972Banglael4744Greekar5481Arabicfr5082Frenchja8137Japaneseccp4141Chakmazh2874Chinesees4272Spanishzh7113Chineseru5489Russiantr7909Turkishccp4822Chakmaen2070Englishzh5081Chineseccp7955Chakmaja6048Japaneseen772Englishel1960Greekeo228 Esperantoja5597Japanesefr3895Frenchru7222Russianfr6990Frenchth7264Thaizh1626Chinesefr1073Frenchja4170Japanesezh4366Chinesetr1965Turkishru5058Russianar5829Arabicsr5161Serbianzh3584Chinesesr1761Serbianel7808Greekel2897Greekth1300Thaichr7247Cherokeeeo5664 Esperantosr544Serbianccp2578Chakmafr2099Frenchtr7229Turkishru1838Russianbn2319Banglabn6257Banglael609Greekes2046Spanishchr5000Cherokeeiu7499 Inuktitutchr4990Cherokeeth6396Thaizh1378Chinesezh7762Chinesees4801Spanisheo7681 Esperantoeo4547 Esperantoiu6907 Inuktitutchr4761Cherokeeel686Greekth1922Thaieo5022 Esperantozh6745Chineseiu7500 Inuktituteo480 Esperantoja4606Japanesees3903Spanishes7224Spanishbn1469Banglaru5216Russianru8050Russianes1437Spanishth7381Thaith1140Thaizh4315Chinesear6205Arabicfr3356Frenchar3721Arabicccp4788Chakmaen2318Englisheo4614 Esperantoen7578Englishfr3807Frenchen3517Englishth5337Thaiel2589Greekfr7928Frenchja2086Japanesees206Spanishiu2028 Inuktituteo1549 Esperantoth1289Thaichr7596Cherokeeeo4247 Esperantoen5626Englishja3900Japaneseru3302Russianccp6748Chakmaccp5567Chakmafr6549Frenchen2995Englishen6117Englishen8190Englishar7430Arabiceo7455 Esperantobn3548Banglaar6153Arabicbn4899Banglachr7981Cherokeezh6299Chinesetr3209Turkishtr7706Turkishsr5952Serbiantr6828Turkishsr5624Serbianar5158Arabicel930Greeksr6946Serbianzh7661Chineseja2654Japaneseeo5964 Esperantoccp3999Chakmaccp6489Chakmaiu5015 Inuktitutes692Spanishiu3661 Inuktitutru4174Russiantr5515Turkishru7080Russiantr2729Turkishtr105Turkishzh4380Chineseel4282Greekiu6242 Inuktitutzh674Chineseiu7558 Inuktitutccp6019Chakmabn3557Banglaccp886Chakmaes2933Spanishar7480Arabicccp159Chakmaccp2067Chakmael1407Greeken1731Englishel5340Greekeo3258 Esperantosr2239Serbianar3528Arabicen4734Englishiu7692 Inuktitutsr7305Serbiantr4470Turkishsr4791Serbianbn391Banglael3775Greekel7523Greektr4681Turkisheo1784 Esperantoen4865Englishiu6291 Inuktitutzh3069Chineseeo602 Esperantoeo3635 Esperantobn3146Banglasr4382Serbianth2417Thaichr3388Cherokeeeo2637 Esperantoccp7240Chakmazh2803Chineseth2959Thaizh3525Chinesezh829Chinesesr4160Serbianfr2442Frenchen2283Englishchr5468Cherokeees69Spanishfr939Frenchar240Arabictr8053Turkishru5613Russiantr6026Turkishen1447Englishen4918Englishar7992Arabicccp1499Chakmath1100Thaien4275Englishfr6747Frenchth325Thaies4640Spanishru4231Russianru5068Russianfr1384Frenchsr2374Serbianzh1592Chinesechr7352Cherokeeiu3039 Inuktitutccp2647Chakmabn2158Banglath6295Thaiar2345Arabicchr6342Cherokeeccp5080Chakmael3510Greekar789Arabicchr4128Cherokeees1261Spanishar5325Arabicbn5683Banglaiu6609 Inuktitutel1336Greekchr7369Cherokeeen5456Englisheo4411 Esperantoccp5117Chakmaar5646Arabicen7079Englishtr5779Turkisheo1783 Esperantoel210Greekeo5174 Esperantoiu6370 Inuktituten756Englishen4995Englishru3393Russianar4857Arabicfr294Frenchiu7480 Inuktitutru5319Russianth3835Thaiel5881Greeksr5037Serbiantr370Turkisheo5003 Esperantozh5295Chineseel712Greekeo3475 Esperantoeo2534 Esperantobn6338Banglasr7276Serbianel805Greekel7961Greekes3086Spanishsr7858Serbianar2326Arabices5747Spanishja7979Japanesebn1449Banglaru7495Russianth3248Thaitr4715Turkishja3422Japaneseel6114Greekbn3187Banglaar2403Arabicfr8178Frenchel1641Greekel3527Greekfr3088Frenchru628Russiansr5707Serbianfr3710Frenchfr4233Frenchccp7946Chakmath1802Thairu6517Russianes8026Spanishsr1816Serbianzh6278Chineseeo1844 Esperantoes30Spanishja5578Japanesezh5204Chineseeo5433 Esperantoja1971Japanesebn5518Banglael7591Greekel5557Greekes4752Spanishiu800 Inuktitutel3375Greekth2241Thaifr6743Frenchsr6008Serbianccp4668Chakmafr2145Frenchth3487Thaichr8026Cherokeesr457Serbiansr5817Serbianes2742Spanishru4352Russiansr4464Serbianiu7943 Inuktitutel1164Greeksr7692Serbianeo3469 Esperantozh6168Chineseeo2256 Esperantoes6955Spanisheo3425 Esperantoiu610 Inuktitutth3434Thaiccp8040Chakmaccp3417Chakmachr2048Cherokeeth3380Thaith5307Thaien6577Englishes513Spanishes4772Spanishiu2324 Inuktitutiu6060 Inuktitutsr5044Serbianel929Greekar115Arabicja7831Japaneseeo549 Esperantoes5050Spanishchr1755Cherokeechr6429Cherokeeru7054Russianth4745Thaiar7563Arabicel3996Greeken5913Englishel2916Greektr5874Turkishzh3065Chinesebn3781Banglaar2454Arabiceo7947 Esperantoen6844Englishar7527Arabicbn5452Banglaes2120Spanishes2458Spanishtr5321Turkishth252Thaieo513 Esperantochr3196Cherokeeth6423Thaija6454Japanesebn5211Banglatr870Turkishchr7602Cherokeeccp3886Chakmaru6202Russianbn748Banglaar4594Arabicen3402Englishiu577 Inuktitutel1684Greekel4148Greekeo7368 Esperantotr6630Turkishja7280Japaneseccp4568Chakmafr6413Frenchfr7535Frenchja7959Japanesetr5164Turkishes5890Spanishchr1837Cherokeeel7339Greekiu2940 Inuktitutja4582Japaneseru805Russianiu5442 Inuktituteo3337 Esperantoel4125Greekiu82 Inuktitutzh5468Chinesear7600Arabicru8151Russianen6978Englishru5113Russianru2482Russiansr6925Serbianbn6592Banglaja7731Japaneseccp3051Chakmath4467Thaies5133Spanishccp3380Chakmabn2972Banglazh7539Chinesetr5872Turkishar6693Arabicbn244Banglafr3585Frenchbn1008Banglazh5037Chinesebn180Banglabn775Banglaru7521Russianar1044Arabicsr7510Serbianfr4764Frenchsr4652Serbianiu7619 Inuktitutes4686Spanishar5868Arabicru3895Russianes5689Spanishru527Russiantr2189Turkishzh6239Chineseja2059Japaneseth467Thaiccp8129Chakmafr3355Frenchru4867Russianth5733Thaith5854Thairu5590Russianchr1037Cherokeeeo1928 Esperantofr856Frenchzh2106Chineseja3642Japaneseccp2729Chakmaiu4451 Inuktitutzh7078Chineseccp4455Chakmafr5054Frenchsr5015Serbianru3335Russiantr1682Turkishru2581Russianth3501Thaitr3217Turkishiu2229 Inuktituttr3463Turkishen7325Englishen3157Englishth1309Thairu6244Russianccp5691Chakmath5104Thaibn6168Banglaiu4010 Inuktitutfr3539Frenchen7470Englishsr1401Serbianfr2298Frenchen7512Englishzh772Chinesezh2960Chinesebn3651Banglabn3639Banglaccp1374Chakmaccp189Chakmaen5220Englishfr5196Frenchzh3756Chineseru4829Russianja6219Japanesees5000Spanishccp2276Chakmath6407Thaies1993Spanishru816Russianchr6741Cherokeefr305Frenchja1955Japanesechr4692Cherokeetr3025Turkishsr5579Serbianar826Arabiciu4802 Inuktitutzh6376Chineseiu4771 Inuktitutth7902Thaibn7481Banglaiu6282 Inuktitutth7938Thaiccp4622Chakmaar4812Arabiceo1904 Esperantoja2883Japaneseccp7273Chakmachr6545Cherokeear7206Arabicel8163Greekel4820Greekccp5454Chakmabn1182Banglabn7588Banglachr8025Cherokeeen1386Englisheo4064 Esperantofr4412Frenchzh7363Chinesechr2422Cherokeeja509Japaneseja6197Japanesesr456Serbianiu7390 Inuktitutbn5249Banglaru5260Russiansr1838Serbianiu5 Inuktitutja148Japanesefr7276Frenches1418Spanishfr7611Frenchfr104Frenches5029Spanishchr4130Cherokeeth4271Thaija5836Japanesezh5146Chineseeo4340 Esperantoel2410Greekiu4207 Inuktitutchr2937Cherokeetr1939Turkishar282Arabicja429Japanesebn780Banglaccp379Chakmatr2455Turkishel933Greekzh7618Chinesear5790Arabicru2476Russianes5506Spanisheo334 Esperantofr7648Frenchar1952Arabicar3159Arabicccp7231Chakmaiu2884 Inuktitutth2483Thaisr4340Serbiantr7772Turkishchr2808Cherokeeiu7077 Inuktitutar1594Arabicccp93Chakmachr6898Cherokeetr3118Turkishen4102Englishja6694Japaneseccp2912Chakmaeo2667 Esperantoar6908Arabicccp7024Chakmaiu1849 Inuktitutja7284Japaneseel5474Greekru4250Russiansr1875Serbianja6446Japanesesr5774Serbianzh446Chineseel1713Greeken2566Englishja6214Japanesetr4820Turkishiu1406 Inuktituten7018Englishzh7582Chineseja2604Japanesebn4465Banglachr7746Cherokeeth4282Thaitr4901Turkishja6901Japanesetr261Turkishja1404Japaneseru398Russianzh5270Chinesechr494Cherokeeen6541Englishth6156Thaizh825Chinesees4637Spanishzh6042Chinesesr7977Serbiantr3185Turkishfr4324Frenchccp4245Chakmael406Greekru6506Russianen1979Englishtr4327Turkisheo5923 Esperantoeo4272 Esperantoen4236Englishes4501Spanishes5527Spanishfr4071Frenchru6195Russiansr3433Serbiantr7178Turkishja307Japaneseiu7061 Inuktitutsr512Serbianiu499 Inuktitutbn4296Banglael1664Greekel6511Greekja5250Japaneseen540Englishtr7187Turkishar2603Arabicccp6241Chakmaen6599Englisheo7566 Esperantoth2008Thaiiu301 Inuktitutfr169Frenchfr6087Frenchtr8005Turkisheo4939 Esperantoccp5150Chakmaes5487Spanishru7144Russianccp4952Chakmaja928Japanesees566Spanishth7046Thaies6565Spanishes6351Spanishru3653Russianiu1084 Inuktitutja1505Japaneseccp3973Chakmaja943Japanesetr1207Turkishsr337Serbiansr6973Serbianru5412Russianccp5404Chakmabn5871Banglabn6889Banglaes4423Spanishchr2952Cherokeeru2082Russianel4740Greeksr6289Serbianfr5044Frenchbn3438Banglasr4198Serbiantr4127Turkishar870Arabicar3275Arabicfr1599Frenchth3140Thaisr1979Serbianth4593Thaifr7942Frenchzh427Chineseccp6787Chakmaes5330Spanishth1609Thaifr6908Frenchtr7888Turkishth2606Thaibn837Banglaes3805Spanishar7032Arabicel3849Greekar5925Arabicccp6067Chakmaen3591Englishsr4300Serbianth4911Thaitr3771Turkishzh7829Chinesetr1593Turkishbn3664Banglaiu5839 Inuktitutsr4711Serbianccp1242Chakmath141Thaiiu5935 Inuktitutzh2436Chineseen171Englishzh3905Chineseiu5044 Inuktituttr1848Turkishchr6267Cherokeeru944Russianbn4611Banglachr6137Cherokeeth3851Thaitr6388Turkishbn1931Banglazh6303Chinesebn815Banglabn5949Banglafr1319Frenchfr2389Frenchiu2489 Inuktitutchr1930Cherokeeth420Thaiel2712Greeksr5876Serbianeo7547 Esperantoru5355Russianes7779Spanishtr341Turkishen2404Englishiu6836 Inuktitutbn7046Banglael485Greekeo4821 Esperantoth4648Thaies6961Spanishar7632Arabiciu5512 Inuktituteo4867 Esperantoccp1944Chakmachr1609Cherokeeen3175Englishfr604Frenchru5749Russiansr5775Serbianth3768Thaisr2948Serbianbn6628Banglaar1207Arabicbn4839Banglaar7922Arabicen7376Englishen1506Englisheo2251 Esperantofr7452Frenchfr7737Frenchja2826Japaneseja3873Japanesechr7399Cherokeesr1548Serbiansr4538Serbianja4684Japanesesr4809Serbiansr7164Serbiantr810Turkishtr1921Turkishen4450Englishes7965Spanishtr4091Turkishbn4700Banglazh1931Chinesezh3686Chinesezh6075Chinesear532Arabicar2730Arabicfr1790Frenchar2952Arabiczh8004Chinesezh5889Chineseel6313Greekru1341Russianru1479Russianfr1945Frenchru3483Russianfr3612Frenchth3144Thaibn7663Banglaiu3986 Inuktitutsr7780Serbianzh7722Chinesesr5488Serbiantr7337Turkishtr3843Turkishtr8176Turkishchr3236Cherokeebn6036Banglaar7931Arabiciu4463 Inuktitutzh3010Chineseru283Russianfr4775Frenchru5901Russianja7963Japanesesr7820Serbianth3783Thaija7645Japanesezh3181Chinesezh4907Chinesetr4509Turkishsr7125Serbiansr3467Serbiantr8110Turkishchr6133Cherokeeeo7179 Esperantoel1899Greekchr6119Cherokeefr1113Frenchru4003Russianes6282Spanishchr474Cherokeear6353Arabicen5924Englishtr1272Turkisheo2502 Esperantoel7565Greekbn7142Banglaes4485Spanishar2067Arabicru5366Russianccp4929Chakmazh1521Chinesezh4460Chinesear2675Arabiciu2944 Inuktitutes4231Spanishes1933Spanishen7676Englishccp3646Chakmafr2575Frenchru1799Russianar3030Arabicja1069Japaneseth5892Thaichr13Cherokeeeo599 Esperantoar3073Arabiczh6790Chineseth4775Thaien5893Englishar2254Arabicar1029Arabicja6741Japanesesr254Serbiantr510Turkishth469Thaith8153Thaitr748Turkishes8058Spanishtr5862Turkishfr7804Frenchiu1783 Inuktitutru8129Russianel555Greektr854Turkisheo6918 Esperantofr5898Frenchccp5977Chakmaccp7567Chakmatr2444Turkishfr5451Frenchja8094Japanesebn2273Banglaeo7891 Esperantofr4417Frenchiu4510 Inuktitutru2822Russianzh8007Chinesear4535Arabicbn7441Banglaja3257Japanesebn606Banglaccp1035Chakmaccp3157Chakmaeo2179 Esperantoes1657Spanishes5352Spanishen3381Englishbn804Banglaja1552Japaneseru4718Russianchr1384Cherokeezh458Chinesefr5289Frencheo3762 Esperantoel6914Greekeo5894 Esperantozh713Chineseccp7942Chakmaja6555Japanesesr108Serbianar3836Arabiceo4404 Esperantotr8115Turkishccp6331Chakmabn2448Banglafr5910Frenchfr5400Frenchja5950Japanesesr3205Serbianru7444Russiantr5759Turkishel1577Greekzh5046Chineseeo4907 Esperantoel6880Greekel7421Greeken4729Englishsr2707Serbianzh5656Chineseiu6973 Inuktitutsr5393Serbiansr6163Serbianccp902Chakmaccp6212Chakmasr5324Serbianeo6976 Esperantoiu2309 Inuktitutfr3064Frenchzh5277Chinesear6045Arabiceo5049 Esperantoth1423Thaibn315Banglaes6227Spanishfr4405Frenchth3653Thaitr8126Turkishfr6796Frenchfr8165Frenchzh1117Chinesezh582Chineseeo2759 Esperantoar289Arabiceo4715 Esperantoiu1866 Inuktituteo469 Esperantoccp3210Chakmaes4753Spanishfr1757Frenchel2986Greekar1802Arabicja1296Japaneseel6999Greeksr3492Serbianccp4157Chakmaes2258Spanishchr3075Cherokeeth2080Thaiel3689Greekel3559Greekchr1688Cherokeeel4020Greekes6328Spanishfr4218Frenchfr707Frenchfr3978Frenchsr2583Serbianth3229Thaieo3900 Esperantochr5198Cherokeechr6087Cherokeeja4095Japaneseeo508 Esperantotr4723Turkishiu3516 Inuktitutccp7154Chakmaes2730Spanishtr7241Turkishen3968Englisheo3418 Esperantoel2214Greekfr1617Frenchja4700Japaneseja5247Japaneseth4627Thaibn7646Banglaru4724Russiansr7128Serbianccp7837Chakmatr2087Turkishccp1630Chakmafr209Frenchccp7857Chakmafr5725Frenchtr3681Turkishzh5766Chineseth3084Thaiccp1237Chakmaes695Spanishel4139Greekja2701Japanesear7659Arabicen3858Englisheo3225 Esperantoes2510Spanishru2780Russianbn940Banglatr2734Turkishsr6272Serbianth459Thaiel1092Greekel4201Greekfr3293Frenchru266Russianbn6583Banglaiu1786 Inuktitutfr3533Frenchel6303Greekccp5212Chakmaar7763Arabicfr6292Frenchtr1209Turkishel6378Greekccp7386Chakmafr520Frenchsr7435Serbiantr6816Turkishes5508Spanisheo684 Esperantoja7175Japanesear8042Arabiceo2202 Esperantotr3855Turkishar5477Arabices358Spanishru4767Russianbn6708Banglachr6245Cherokeeth1154Thaies4406Spanishel1726Greekth2052Thaith7342Thaibn2079Banglasr7109Serbianen2931Englishsr1394Serbianfr1657Frenchel8109Greekth352Thaien8065Englishtr2757Turkishtr6423Turkishsr4202Serbianzh6872Chinesebn3477Banglael6522Greekja2455Japaneseel6384Greekes6588Spanishen1474Englishtr5618Turkishzh2184Chineseth1929Thaitr6220Turkisheo4753 Esperantoes3082Spanishth3310Thaichr4736Cherokeeel8014Greekeo4291 Esperantoel2763Greekiu4660 Inuktitutsr269Serbianel5332Greekzh8079Chinesebn7294Banglaja2773Japanesefr1317Frenchccp3033Chakmaccp179Chakmabn1815Banglaes156Spanishsr2662Serbianen1367Englishru7242Russiantr3469Turkishen7305Englishel900Greekeo5847 Esperantoes6089Spanishbn1868Banglaja7804Japanesear5890Arabicccp3086Chakmaccp7313Chakmaen6877Englisheo7991 Esperantozh4540Chineseen123Englishtr1023Turkishru4543Russianth2262Thaibn2816Banglafr2941Frenchiu3376 Inuktitutja334Japaneseja6924Japanesetr6646Turkishel6568Greekru6371Russianfr6896Frenchiu7324 Inuktitutar7897Arabicfr3441Frenchsr7910Serbianel1637Greekja8174Japanesezh6652Chineseth1648Thaieo3609 Esperantoes3569Spanishccp2778Chakmaes1543Spanishtr2644Turkishar7492Arabicel3891Greekiu6158 Inuktitutsr6762Serbianth2004Thaiiu1575 Inuktitutsr4013Serbianru5825Russianccp5033Chakmasr8133Serbianja7187Japaneseen5289Englisheo4592 Esperantosr2716Serbiantr3756Turkisheo1965 Esperantoja1536Japanesezh3046Chinesechr4170Cherokeeth1867Thaiar3681Arabicccp1528Chakmaiu4822 Inuktitutel4214Greekru6591Russianar2924Arabiceo8155 Esperantosr5406Serbianar1090Arabicfr791Frenchar5640Arabices4067Spanisheo7053 Esperantozh7035Chineseel7015Greekth2272Thaisr1127Serbiansr2257Serbianth966Thaiel6863Greekel4996Greekbn4722Banglaen3679Englishtr4280Turkishsr7401Serbianfr7595Frenchru3194Russianth5838Thaies3863Spanishzh6990Chineseeo6046 Esperantoen5489Englishes985Spanishes5515Spanishel5822Greekfr1286Frenchel5711Greekes7935Spanishsr3392Serbianth7312Thaien6448Englishzh1754Chineseja2608Japaneseccp7910Chakmael4448Greekchr1689Cherokeear1560Arabicfr8183Frenchja7867Japanesetr2760Turkishccp2529Chakmael65Greekel4236Greekeo416 Esperantoiu2618 Inuktitutccp5979Chakmaar6561Arabicja3903Japanesezh2269Chineseeo6955 Esperantoiu7123 Inuktituten213Englishzh1665Chinesefr6795Frenchen7718Englishsr2571Serbiantr3613Turkishes210Spanishel5804Greeksr5409Serbianiu5671 Inuktituteo3870 Esperantofr7060Frenchiu7290 Inuktitutbn6916Banglaen755Englishsr6812Serbiantr632Turkishar8157Arabicar7758Arabicel5310Greekja2423Japaneseeo6672 Esperantotr3575Turkishsr7157Serbianiu6534 Inuktitutel3796Greekccp7011Chakmaiu7974 Inuktituten4597Englisheo6557 Esperantoes506Spanishiu4921 Inuktituteo5188 Esperantosr4599Serbianccp6007Chakmasr292Serbianfr2055Frenchel7062Greekbn3806Banglaiu6171 Inuktitutccp3535Chakmafr5748Frenchen7483Englishzh6931Chineseru6602Russianja588Japaneseeo959 Esperantoth4393Thaiiu5500 Inuktitutru5129Russianzh166Chinesesr139Serbianel1313Greekja5978Japanesetr2234Turkishja1534Japanesechr7184Cherokeetr7188Turkishes6484Spanishes7830Spanisheo7954 Esperantoeo55 Esperantozh171Chineseeo1938 Esperantobn1406Banglaccp5439Chakmachr2099Cherokeeiu2087 Inuktitutth2145Thaisr3782Serbianth7323Thaith7498Thairu8139Russianen3309Englisheo4731 Esperantochr4916Cherokeefr3839Frenchbn6407Banglaes6071Spanishchr5848Cherokeees89Spanishen1681Englishiu3261 Inuktituten6397Englisheo7246 Esperantochr247Cherokeefr7186Frenchtr6004Turkishchr938Cherokeear5731Arabicccp4552Chakmachr4347Cherokeeru1182Russiansr3294Serbianel6636Greekiu1923 Inuktitutsr6151Serbianth3948Thaieo3409 Esperantoth5420Thaibn3204Banglaiu7190 Inuktitutzh7099Chinesees4230Spanishiu6911 Inuktitutchr357Cherokeebn3156Banglaja6550Japanesebn446Banglasr7695Serbianel3655Greekth7450Thaibn5643Banglatr1784Turkisheo2340 Esperantoeo474 Esperantoja5476Japaneseeo4377 Esperantoth2875Thaiar7628Arabicel6294Greekel5432Greeksr2055Serbiantr1370Turkishes7462Spanishja7806Japanesebn6200Banglath5624Thaibn2826Banglaja1660Japanesear5617Arabicth3994Thaieo5732 Esperantochr1458Cherokeezh666Chineseen185Englisheo4948 Esperantoiu7691 Inuktitutzh6014Chinesebn673Banglasr5604Serbianes3880Spanishja7192Japanesebn7666Banglaccp697Chakmachr1944Cherokeetr5995Turkishth2701Thaies6199Spanishbn5475Banglaccp4429Chakmael6075Greekiu3717 Inuktitutchr7503Cherokeeth2341Thaizh5888Chineseen6026Englishru2433Russianru3551Russianel7755Greekja5977Japaneseeo6364 Esperantobn1435Banglabn2739Banglazh1563Chinesees2143Spanisheo169 Esperantobn6087Banglaja4211Japanesechr8074Cherokeeccp6529Chakmaru677Russianiu4009 Inuktitutchr3594Cherokeeiu7646 Inuktitutccp4579Chakmael4204Greekru1455Russianchr3604Cherokeeru4936Russianiu8135 Inuktitutiu3776 Inuktituten7215Englishiu3300 Inuktituteo8109 Esperantoel6258Greektr1013Turkishja8040Japanesesr2779Serbianchr997Cherokeechr1020Cherokeeen4183Englishen4730Englishsr3200Serbianth3710Thaichr1473Cherokeezh3450Chineseeo552 Esperantofr3114Frenchru2085Russiansr4513Serbianth1696Thaizh5504Chinesear2617Arabicbn1076Banglachr2752Cherokeeja6312Japaneseja3057Japanesechr4854Cherokeeiu2739 Inuktitutiu895 Inuktitutes112Spanishar3182Arabicar6189Arabiceo2441 Esperantofr5053Frencheo2952 Esperantoel3307Greekel7899Greekiu1989 Inuktitutja5440Japanesees363Spanishchr2183Cherokeeru7900Russianth6473Thairu1974Russianth4890Thaiccp3653Chakmaccp5953Chakmachr868Cherokeees6839Spanishzh132Chinesefr5526Frenchth743Thaiel7993Greeken865Englishfr3592Frenchtr5158Turkishen3173Englishzh4209Chineseen6029Englishzh3613Chineseeo6217 Esperantoar4163Arabices2485Spanishtr6600Turkishbn4394Banglaeo621 Esperantoes1575Spanishsr867Serbianfr7008Frenches3921Spanishsr5986Serbianccp1103Chakmachr4887Cherokeeiu2946 Inuktitutfr5559Frenchen6106Englishth1059Thaifr1219Frenchel1579Greeksr6758Serbianen4437Englishen5088Englishiu4318 Inuktitutbn6726Banglafr6276Frenchbn5621Banglaru6314Russiansr8029Serbianeo825 Esperantoth3164Thaiel915Greekar6900Arabicsr7209Serbianes8012Spanishfr968Frenchzh6574Chinesefr4916Frenchbn4109Banglachr7594Cherokeeel5916Greekel1438Greekiu6616 Inuktitutbn8179Banglasr3981Serbianccp6665Chakmachr5068Cherokeeccp7951Chakmaja5108Japaneseel425Greeksr5835Serbianchr1318Cherokeeel4970Greekzh6593Chineseen721Englishel6484Greekja1929Japaneseja8005Japaneseiu1701 Inuktitutsr5793Serbianel4288Greekel3792Greekfr5994Frenchccp3777Chakmaen3169Englisheo8089 Esperantoel2640Greekccp8083Chakmael6127Greekfr2245Frenchiu3026 Inuktitutja5171Japanesesr3253Serbiansr8162Serbianja7407Japanesetr7541Turkishzh6980Chinesezh7685Chinesear3260Arabicccp4027Chakmabn3507Banglaen3474Englishja5228Japaneseeo2587 Esperantofr710Frenchchr1287Cherokeefr2174Frenchchr4472Cherokeechr8063Cherokeear3028Arabicfr2867Frenchiu221 Inuktitutes6916Spanishen4241Englishen128Englishja4614Japanesefr7283Frenchtr3746Turkishen2938Englishiu4558 Inuktituttr3635Turkishel652Greekchr5882Cherokeeel2753Greekes6925Spanishccp4816Chakmael4016Greekiu7689 Inuktitutth4420Thaien939Englishzh2845Chineseth5934Thaiar4753Arabictr1487Turkishen3767Englishru7081Russianth1660Thaibn4862Banglazh1873Chineseja5874Japanesees4766Spanishccp2203Chakmaar7146Arabiczh1479Chinesesr6217Serbianfr1851Frenchsr4516Serbianru2205Russianru7866Russianchr1427Cherokeeru2859Russianbn6078Banglazh7540Chineseru5980Russiansr1250Serbianru825Russianiu3990 Inuktitutbn7906Banglaccp7071Chakmatr2353Turkishru7688Russianzh5157Chinesear1773Arabicfr1975Frenchar2720Arabicbn4381Banglasr6867Serbiantr380Turkishccp4583Chakmaes7666Spanishth4525Thaichr3289Cherokeeiu4616 Inuktitutfr4738Frenchar5171Arabicar2876Arabictr3643Turkishccp358Chakmael7283Greekja7336Japaneseel283Greekeo2882 Esperantoru3975Russiansr7275Serbianiu5861 Inuktitutbn476Banglafr2958Frenchen5685Englishfr3764Frenchbn2990Banglaccp7151Chakmaja5849Japanesesr6435Serbiantr2268Turkisheo6150 Esperantobn2992Banglasr3438Serbianel8029Greekfr5262Frenchccp5107Chakmazh5698Chinesees6375Spanisheo2239 Esperantoja6819Japanesesr3637Serbianzh7831Chinesefr3692Frenchja8067Japaneseru2811Russiansr3054Serbianar202Arabiciu6294 Inuktitutsr1156Serbianccp2193Chakmaja2115Japaneseiu853 Inuktitutbn7192Banglael8065Greekja2878Japanesetr1311Turkishtr3478Turkishfr7898Frenchzh2475Chineseeo7312 Esperantoes6142Spanishja2177Japaneseel8181Greekru1723Russianccp1832Chakmaeo7875 Esperantoccp7413Chakmaccp5595Chakmaiu1383 Inuktituttr1337Turkishes1803Spanishtr7880Turkishar1979Arabicchr3986Cherokeeiu35 Inuktitutru6053Russianja3148Japaneseen6053Englishzh7792Chinesechr1673Cherokeeja7859Japanesesr3892Serbianiu2638 Inuktitutzh2062Chinesechr7441Cherokeear6661Arabicen5339Englishen6219Englishth5149Thaiel57Greekbn4719Banglaes6113Spanishsr5221Serbianfr1264Frenchtr6552Turkishen8156Englisheo7572 Esperantofr6863Frenchar2455Arabicsr3003Serbiansr480Serbianeo7524 Esperantotr6624Turkishar3322Arabicel7384Greekzh115Chineseen6690Englishja4781Japanesebn823Banglaeo1933 Esperantoiu2357 Inuktituten3260Englishzh5327Chinesetr2403Turkishen321Englisheo5127 Esperantoar1332Arabicen2320Englishiu528 Inuktitutar4491Arabicfr3213Frenchbn5645Banglael5750Greekiu7056 Inuktitutth3949Thairu2683Russianzh4718Chineseel3056Greekel7943Greekiu6807 Inuktituttr7407Turkishru5847Russianth5199Thaitr6158Turkishar235Arabicel3848Greeksr3917Serbianccp2952Chakmaru4919Russianzh2450Chinesesr3234Serbianja4895Japaneseth4025Thaiar2401Arabictr5457Turkishbn7950Banglaccp5266Chakmachr5373Cherokeeel6177Greekes3625Spanishfr1044Frenchchr6807Cherokeeja551Japaneseth3Thaibn2720Banglaja3010Japaneseth3244Thaichr1239Cherokeesr4718Serbianccp7752Chakmafr5586Frenchzh6006Chinesefr7640Frencheo688 Esperantoru1982Russianes4078Spanishen4150Englishja1316Japanesebn7843Banglaja4625Japanesebn3098Banglafr5150Frenchen5174Englishtr2339Turkishiu7741 Inuktitutel7003Greekar5107Arabicen2822Englishfr6498Frenchru6925Russianen4790Englishtr371Turkishbn8020Banglaen64Englishel163Greektr1229Turkisheo3592 Esperantobn7737Banglafr5591Frenchar3439Arabicchr8040Cherokeefr6144Frenchtr2601Turkishzh1180Chineseth752Thaiel2067Greekth7129Thaien262Englishiu1715 Inuktitutsr2184Serbianzh4022Chinesebn7609Banglaeo519 Esperantoes3699Spanishtr4450Turkishen1343Englishbn6959Banglazh1703Chinesechr2132Cherokeesr2299Serbianfr392Frenchiu5273 Inuktitutru5456Russianiu1926 Inuktitutja492Japaneseth7794Thaizh6619Chineseccp5888Chakmaeo4481 Esperantoen3951Englishbn3551Banglasr3264Serbianel2616Greekru6245Russianbn3349Banglatr1689Turkishtr5599Turkishen4871Englishbn6856Banglaiu4089 Inuktitutth2356Thaifr4365Frenches6408Spanishbn7121Banglachr2440Cherokeetr1048Turkishzh2002Chineseiu8028 Inuktitutes6096Spanishth5160Thaien6740Englishchr4368Cherokeefr2243Frenchchr1889Cherokeees4774Spanishel5612Greekfr3613Frenchen569Englisheo3251 Esperantobn3713Banglaru4989Russianes4165Spanisheo4322 Esperantozh5305Chinesechr272Cherokeeru7999Russianbn1928Banglazh7133Chineseccp6213Chakmaar4153Arabicja6152Japanesezh2501Chineseel1893Greektr2745Turkishar7777Arabicen4252Englishbn7691Banglachr6894Cherokeeja648Japaneseeo4983 Esperantofr3069Frenchzh1068Chinesechr5747Cherokeetr1528Turkishel5756Greekbn1206Banglatr2477Turkishja6329Japaneseen3833Englishzh7697Chinesebn5361Banglazh799Chineseel1059Greeksr2448Serbianar2900Arabicsr2706Serbianiu1838 Inuktitutfr817Frenchja2331Japanesefr246Frenchfr3690Frenchbn7571Banglaar7266Arabicfr7169Frenchru6183Russiansr585Serbianbn1119Banglafr3641Frenchfr6359Frenchru2696Russiantr1205Turkishzh662Chineseeo4626 Esperantoja4184Japanesefr2090Frenchchr3774Cherokeesr6817Serbianzh4210Chineseel7519Greekar1266Arabicar1507Arabicsr2748Serbianfr3191Frenchar4250Arabicth4633Thaieo2686 Esperantozh4313Chinesebn1934Banglachr2964Cherokeees4275Spanishccp6976Chakmachr7079Cherokeesr174Serbiansr470Serbianbn5707Banglazh293Chinesefr7199Frenchzh3612Chineseeo6199 Esperantoru5735Russianja4402Japanesear6410Arabices4027Spanishja2579Japaneseen3408Englishes2392Spanishchr2699Cherokeechr5899Cherokeechr4304Cherokeeth1370Thaizh4919Chineseja3615Japanesezh7731Chineseen3218Englishru418Russianeo6578 Esperantoth733Thaisr6944Serbianzh3787Chineseru3497Russianes6969Spanishchr588Cherokeefr5031Frenchiu7760 Inuktitutru4453Russianes2311Spanishtr4110Turkishchr1152Cherokeetr7304Turkishen3608Englishsr1246Serbianccp3429Chakmasr6468Serbianth4935Thaieo4694 Esperantoccp4035Chakmaes4715Spanishiu4043 Inuktitutsr8125Serbianth4597Thaitr2633Turkishtr2244Turkishbn7925Banglath5973Thaija2451Japanesear7601Arabiczh1597Chinesees2377Spanishbn3243Banglaar3074Arabiczh2547Chinesesr3903Serbianchr140Cherokeeccp5968Chakmasr6076Serbiansr6906Serbianccp6957Chakmaiu7415 Inuktituteo7351 Esperantozh5570Chineseccp896Chakmael6558Greeken4121Englishar1100Arabicar529Arabicen318Englishes2639Spanishzh3580Chinesechr2571Cherokeees4706Spanishccp4764Chakmachr290Cherokeeen2599Englisheo6896 Esperantoru6489Russianes7617Spanishbn2862Banglazh16Chineseja3458Japaneseccp5771Chakmaccp5669Chakmael3118Greekbn7513Banglaeo5098 Esperantoes6075Spanishfr984Frenchth34Thaieo1806 Esperantozh26Chineseel5925Greekth4646Thaien6915Englishbn3361Banglaar184Arabicbn7479Banglabn7547Banglafr5312Frenchel3774Greekru8145Russiansr5772Serbianbn1514Banglaen5989Englishes3838Spanishja2149Japanesetr7406Turkishzh788Chinesefr4769Frenchen214Englishiu1414 Inuktitutiu6988 Inuktituttr945Turkishes5500Spanishtr6097Turkishja1910Japaneseen3420Englishiu206 Inuktitutru8015Russianchr5875Cherokeear5469Arabices1273Spanishbn2305Banglaiu1234 Inuktitutth5447Thaies3706Spanishccp5925Chakmazh7702Chineseel1902Greekccp7581Chakmaiu4317 Inuktitutth2299Thaien5473Englisheo1911 Esperantoar4765Arabicbn1771Banglatr7119Turkishbn3011Banglaen4320Englishbn7930Banglafr3204Frenchth1772Thaibn8163Banglaes1056Spanishiu5228 Inuktitutru5377Russianth3699Thaieo6593 Esperantoen3142Englishth3223Thaith5960Thaitr501Turkishsr3802Serbianccp1741Chakmatr5633Turkishfr5025Frenchsr7448Serbianes3549Spanishiu7496 Inuktitutbn4741Banglaccp1342Chakmael1935Greekes6277Spanishfr6475Frenchbn5195Banglaja389Japaneseja1637Japanesesr6820Serbianeo7796 Esperantosr6847Serbianar7326Arabicth4446Thaiel988Greekiu2290 Inuktituttr7298Turkishes6480Spanishar2522Arabicbn5160Banglabn6188Banglaen4992Englishtr3149Turkishfr2451Frenchbn4508Banglachr1409Cherokeeccp3482Chakmachr1699Cherokeefr6803Frenchja6476Japaneseiu1063 Inuktitutja6179Japaneseccp261Chakmafr6579Frenchsr5173Serbiantr59Turkishtr4205Turkishbn2168Banglaen4681Englishccp3001Chakmachr4973Cherokeeja7957Japanesetr3049Turkishccp662Chakmael3253Greeken474Englishen7732Englishru6968Russiansr3820Serbianar7860Arabicbn1051Banglaeo1232 Esperantoeo7461 Esperantochr6866Cherokeeeo4428 Esperantoiu4796 Inuktitutar906Arabiciu4336 Inuktitutru2790Russiantr6856Turkishzh1322Chineseccp944Chakmaeo4554 Esperantotr4794Turkishiu4907 Inuktitutchr299Cherokeechr5300Cherokeeiu2774 Inuktituttr4056Turkishel5595Greekfr7976Frenchja4350Japaneseccp3294Chakmasr6329Serbiantr3701Turkishbn5916Banglaja318Japanesechr1113Cherokeees1081Spanishsr81Serbianar3114Arabicchr5328Cherokeeeo6960 Esperantosr283Serbianfr1193Frenches794Spanishth1024Thaiiu2841 Inuktitutja7916Japaneseth1693Thaiiu7477 Inuktitutja2411Japaneseja2187Japanesezh1968Chinesechr694Cherokeeccp2656Chakmath3492Thaifr3619Frenchar5363Arabicth5669Thaith6672Thaith5743Thaiar1710Arabicccp7320Chakmaru4283Russianja7142Japanesezh3771Chineseja1200Japanesezh89Chineseen3249Englishccp2038Chakmazh4684Chineseel1414Greekeo7835 Esperantoth5893Thaichr4045Cherokeesr83Serbiansr367Serbianar8082Arabicja6968Japanesees6152Spanishja6405Japaneseen8171Englishiu6650 Inuktituten4621Englishen1580Englishchr5132Cherokeeru2924Russianes538Spanishja3914Japaneseiu5035 Inuktituten2953Englishth204Thairu1227Russianar5011Arabicen6367Englishbn309Banglafr6318Frenchja2796Japanesefr1000Frenchiu7606 Inuktitutar5355Arabicbn6448Banglachr6813Cherokeebn4565Banglaen1898Englishfr3717Frenchel5317Greekru523Russianth2141Thaith1601Thaies6934Spanishes7376Spanishfr4933Frenchja1711Japanesesr780Serbianccp4080Chakmazh1980Chineseeo4072 Esperantofr5623Frenchru5890Russianzh3104Chineseel6645Greekel6690Greekar2551Arabiceo2674 Esperantochr3286Cherokeetr1961Turkishzh1727Chineseccp4540Chakmaeo2466 Esperantosr7667Serbianchr323Cherokeeru2744Russianccp310Chakmatr4887Turkishchr3399Cherokeeen5614Englishes6450Spanishfr7470Frenchth6469Thaies4115Spanishth7058Thaibn4213Banglaar413Arabicbn4731Banglaen6520Englishtr4678Turkishen1710Englishru6474Russiansr8098Serbianes8Spanishen1437Englishar584Arabicja3107Japanesezh4633Chineseen229Englishzh6357Chinesees5697Spanishru3026Russianth7243Thaith2926Thaiiu1559 Inuktitutar4406Arabicccp349Chakmath1139Thaibn7104Banglael7909Greeksr2927Serbiantr4022Turkishen6336Englishen3425Englishru5022Russianru7361Russianth8054Thairu20Russianzh5472Chineseccp2979Chakmasr7053Serbianccp6292Chakmaccp8173Chakmael4851Greekel5104Greekfr8180Frenchen1014Englishel4693Greekbn3643Banglachr4391Cherokeees3615Spanishiu6565 Inuktitutiu6213 Inuktituten209Englishar2645Arabicsr7080Serbianru5483Russianth2269Thaizh4849Chinesetr4126Turkishtr3559Turkishzh5957Chinesezh6914Chinesear5438Arabicsr317Serbianzh2940Chinesebn4615Banglaccp850Chakmabn4147Banglaeo8013 Esperantochr1223Cherokeeja5216Japaneseiu6546 Inuktitutja5587Japaneseen3400Englishiu6410 Inuktitutel410Greekel3991Greeken1350Englishen1617Englishen3057Englishth5049Thaiiu787 Inuktitutzh2604Chineseeo4380 Esperantoccp6490Chakmael2607Greekeo7744 Esperantoiu6670 Inuktitutchr3971Cherokeeiu665 Inuktitutzh1457Chinesees4806Spanishfr5486Frenchccp1414Chakmaja6615Japaneseth3433Thaichr6380Cherokeear1999Arabicen8178Englishen2916Englishfr1229Frenchfr2651Frenchbn4042Banglaja3089Japanesesr1559Serbianbn2905Banglaja2666Japanesefr1204Frenchru6699Russianfr7755Frenchccp4556Chakmael6251Greekel6813Greekja6087Japanesees5393Spanishes10Spanishen1210Englishel426Greekes6052Spanishiu219 Inuktitutccp2309Chakmael3161Greekth3519Thaith4655Thaies4156Spanishzh6851Chinesetr2522Turkisheo716 Esperantozh5193Chineseru5820Russianel1572Greektr7896Turkishsr6558Serbianar5450Arabicccp646Chakmasr2640Serbianen7286Englishccp1702Chakmaja4273Japanesezh4853Chinesebn106Banglaes7430Spanishbn5915Banglabn1464Banglafr7880Frenchiu1635 Inuktitutfr1236Frenchzh1901Chineseccp1046Chakmaen846Englishen7371Englishfr1116Frenchfr3121Frenchsr8185Serbianccp6088Chakmaar5247Arabicccp438Chakmabn2926Banglasr1266Serbianzh4793Chineseth6652Thaizh5623Chineseiu5401 Inuktitutar3433Arabicbn6101Banglael2459Greekes5556Spanisheo3137 Esperantoru92Russianzh3862Chineseen3483Englishbn1516Banglaja3531Japaneseja1931Japanesebn3359Banglael336Greekeo3571 Esperantoen3092Englishar2033Arabicfr3370Frenchfr5975Frenchth4426Thaien5243Englishru1019Russianzh4284Chinesebn2157Banglael5145Greekth2607Thaien8170Englishen3015Englishel1012Greekfr1814Frencheo6546 Esperantoar5130Arabicel554Greekeo2950 Esperantozh796Chineseccp2099Chakmaccp6152Chakmaru2060Russiansr6546Serbianru2752Russianru2698Russianccp6535Chakmael4402Greeken3768Englishja4204Japanesechr755Cherokeeeo7940 Esperantoen6510Englishzh155Chinesezh1448Chinesefr6243Frenchja2728Japanesebn2495Banglaiu2523 Inuktitutbn680Banglaar6723Arabicbn525Banglasr134Serbianth3146Thaiar3196Arabicen1028Englishbn5070Banglaiu322 Inuktitutfr3932Frenchsr3819Serbianen2952Englishbn1685Banglaja7910Japanesezh1321Chinesebn6947Banglaja4980Japanesesr4081Serbianar6960Arabicccp906Chakmael8078Greektr2686Turkishchr944Cherokeeiu6982 Inuktitutja6529Japaneseth5645Thaiiu763 Inuktitutiu6115 Inuktitutel5961Greekja1149Japaneseth5041Thaies5372Spanishbn2067Banglabn2832Banglazh861Chineseru5434Russianiu5738 Inuktitutel7030Greekel549Greekzh2428Chinesefr7209Frenchar3852Arabicccp2584Chakmazh589Chineseja5573Japaneseth2817Thaibn2237Banglaes5387Spanishes1216Spanishes217Spanishfr6344Frenchiu7086 Inuktitutzh5167Chineseel5027Greekbn3024Banglaen855Englishja2544Japaneseel651Greekiu599 Inuktitutar959Arabicel2669Greeken1852Englishja5336Japanesezh5084Chineseen7063Englishsr1946Serbiantr5458Turkishiu7814 Inuktitutar3246Arabicfr5268Frenchel6256Greekes4150Spanishsr1905Serbianbn7993Banglaru3777Russianeo2989 Esperantozh8187Chineseeo4001 Esperantoes427Spanishth6967Thaija3018Japaneseth2140Thaitr7830Turkishiu3547 Inuktitutzh746Chineseen275Englishja95Japanesechr896Cherokeeen360Englishen1058Englishes2552Spanishja1368Japaneseru1633Russianth1820Thaiiu2286 Inuktitutccp4144Chakmaja3746Japaneseja4517Japaneseth5884Thaizh5596Chinesefr3869Frenchru6764Russianeo3366 Esperantoja7593Japaneseja472Japanesezh8151Chinesear2566Arabicbn1571Banglabn7474Banglael5116Greekfr266Frenches4246Spanishja5279Japanesetr393Turkishsr2903Serbiantr8136Turkisheo7199 Esperantoth7406Thaija1389Japanesetr2946Turkishchr3791Cherokeebn2918Banglachr1827Cherokeeel3924Greekru6712Russianfr1132Frenchel3310Greekfr4753Frenchtr2278Turkishsr6490Serbianbn2693Banglael348Greekfr6637Frenchel5807Greekfr6916Frenchzh5935Chineseiu1835 Inuktitutel3136Greekiu165 Inuktitutar7554Arabicel5782Greekeo612 Esperantotr4067Turkishru6607Russiantr6235Turkishzh6128Chineseth7027Thaitr1271Turkishja4996Japanesear4835Arabicsr2760Serbiansr6721Serbianbn6450Banglaccp1496Chakmath6478Thaibn5993Banglachr4655Cherokeesr1981Serbianiu1423 Inuktitutchr3482Cherokeeeo4167 Esperantoru1079Russianel4887Greekar5706Arabices71Spanishbn4019Banglazh3432Chinesechr8177Cherokeefr680Frenchtr5422Turkishes5162Spanishar338Arabicccp1749Chakmachr121Cherokeesr5402Serbianel1549Greekeo3226 Esperantochr7828Cherokeechr7720Cherokeees3148Spanishfr5705Frenchar4717Arabicen5072Englishchr6499Cherokeeth61Thaifr5959Frenchfr1Frenchzh7111Chineseru7980Russianel8092Greeksr140Serbianar2668Arabicccp1500Chakmasr3627Serbianbn6734Banglael4753Greekeo286 Esperantoen3202Englishes3199Spanishes1382Spanishzh6647Chinesees2801Spanishchr2961Cherokeeccp5299Chakmaja3106Japanesefr2116Frenchel6648Greekbn1075Banglasr6486Serbianzh5042Chinesebn6340Banglaccp2926Chakmael871Greekes563Spanishar3471Arabiceo6871 Esperantoja2735Japanesees883Spanishja4912Japaneseel2403Greekes7886Spanisheo1479 Esperantoel6676Greekeo8170 Esperantofr5132Frenchja7351Japanesesr2540Serbianzh997Chineseen424Englishth6205Thaiar4949Arabicel4460Greekth3686Thaifr5035Frenchfr5432Frenchzh395Chinesechr5946Cherokeefr3595Frenchbn1487Banglaen5616Englishchr3529Cherokeebn596Banglafr7402Frenchiu4055 Inuktitutth2490Thaifr1413Frenchtr4352Turkishru6416Russianja2647Japanesetr7461Turkishel1696Greekiu377 Inuktitutbn481Banglael7536Greeken5149Englishsr1754Serbianchr6915Cherokeeel4164Greekchr4228Cherokeeja6842Japanesezh3941Chineseiu5152 Inuktitutel8002Greekiu4912 Inuktitutru2583Russianfr6177Frenchtr497Turkishtr665Turkishen4190Englishtr4972Turkishja1271Japanesefr147Frenchbn2569Banglaen471Englishbn2986Banglaru426Russianiu5389 Inuktitutbn4487Banglasr3218Serbianja3928Japanesesr5149Serbianar5864Arabicccp6654Chakmael4098Greekiu1240 Inuktitutru3851Russianccp1592Chakmachr4930Cherokeeel1097Greekel6401Greektr3234Turkishtr5216Turkishzh6781Chineseru2355Russianbn7785Banglaru4855Russianru5399Russianzh1385Chinesezh106Chinesezh6166Chineseru1136Russianru3627Russianeo4780 Esperantozh4981Chinesetr4303Turkishzh6942Chinesear5315Arabictr5306Turkishar2875Arabicccp3173Chakmatr3128Turkishzh1306Chineseiu3882 Inuktitutru6637Russianar3009Arabices1311Spanishar8041Arabicja2533Japanesebn3262Banglazh5815Chinesees7632Spanishen4713Englishfr4449Frenchchr4500Cherokeechr2612Cherokeebn2774Banglaes6582Spanishzh2347Chineseth3757Thaibn5376Banglasr3372Serbianccp7444Chakmaes3990Spanishru5450Russianes302Spanishsr3507Serbianzh6737Chineseeo3057 Esperantochr5128Cherokeechr714Cherokeeiu5414 Inuktitutchr5138Cherokeeru4892Russianiu6495 Inuktitutar6775Arabicbn7476Banglaru1241Russianchr4020Cherokeebn3822Banglath8127Thaiar3323Arabicsr5466Serbiantr2910Turkishtr6527Turkishiu7992 Inuktitutsr3045Serbiantr1793Turkishbn2365Banglael3381Greekja275Japanesetr1752Turkishar5754Arabictr7664Turkishes5077Spanishth5690Thaith6271Thaisr2877Serbianzh3507Chinesear4649Arabicbn1054Banglaccp7859Chakmaeo3454 Esperantofr6652Frenchiu452 Inuktitutsr7433Serbianeo5495 Esperantofr2789Frenchsr2229Serbiantr3466Turkishchr2797Cherokeechr5691Cherokeetr5673Turkishes5590Spanishchr1432Cherokeear3461Arabicbn6216Banglatr4975Turkishen7372Englishes3475Spanishiu4934 Inuktitutel7732Greekiu7395 Inuktitutes8149Spanishru2635Russianfr4014Frenchzh5666Chinesetr3590Turkishiu6509 Inuktituttr975Turkisheo6985 Esperantotr7804Turkishel637Greekel2423Greeken6066Englishchr7436Cherokeefr942Frenchfr3146Frenchfr5405Frenchth3132Thaies8062Spanisheo2087 Esperantoru312Russianth6087Thaiar5512Arabicen7202Englishes5859Spanishel1771Greekel4547Greeksr3539Serbianja1284Japanesear6342Arabicen2000Englishfr3464Frenchbn2380Banglasr5293Serbianbn1983Banglael4924Greekar7747Arabiciu6400 Inuktitutar7145Arabicfr1297Frenchar5326Arabicchr2322Cherokeeen3588Englishru7008Russianccp6900Chakmaen2169Englishccp8166Chakmaja5996Japaneseja7413Japanesear2292Arabiczh2153Chinesezh3677Chinesechr6985Cherokeees7148Spanishel2184Greekru8028Russianfr7398Frenchar4277Arabicel8110Greekzh591Chinesetr326Turkishja1351Japanesefr754Frenchru4248Russianfr4248Frenchsr6364Serbianel520Greekel102Greekja7884Japaneseja4231Japanesetr4227Turkishccp4663Chakmael5552Greeksr3226Serbiantr8168Turkishchr5424Cherokeeel5134Greekth5044Thairu4363Russianchr25Cherokeezh7048Chineseen5987Englishccp6959Chakmachr3441Cherokeeiu7091 Inuktitutzh1215Chineseccp610Chakmaiu2578 Inuktitutzh5680Chineseen1882Englisheo6851 Esperantoccp1389Chakmaiu5910 Inuktituten483Englishfr2459Frenchel1987Greekru7767Russiantr2450Turkishccp5568Chakmaeo1026 Esperantoja7331Japaneseth7891Thaiccp810Chakmaen1235Englishchr7209Cherokeesr8139Serbianccp3087Chakmabn5656Banglaes6176Spanishbn370Banglabn2614Banglael2538Greekiu3584 Inuktitutja5820Japaneseel1122Greekchr7102Cherokeeeo4915 Esperantoen6802Englishja2780Japanesezh2766Chinesear412Arabicja4007Japaneseth4946Thaith7831Thaies2587Spanishar1331Arabictr902Turkishar3465Arabicen6332Englishja1457Japanesezh7765Chinesesr7233Serbianen4642Englishfr7389Frenchar6359Arabices4765Spanishccp14Chakmachr2594Cherokeeccp4021Chakmaar1349Arabicccp4771Chakmael6351Greekeo6319 Esperantoru3969Russianzh5043Chineseiu4380 Inuktitutru5486Russianeo1574 Esperantoru2825Russianfr5996Frenchru6534Russianes6447Spanishzh5998Chinesebn4318Banglasr834Serbianchr5623Cherokeechr4735Cherokeezh6131Chinesear1188Arabicccp6660Chakmaeo5424 Esperantoeo803 Esperantosr4865Serbianfr3520Frenchiu1293 Inuktitutchr2981Cherokeezh3578Chinesetr3641Turkishar1414Arabicbn5799Banglaes7031Spanishiu6473 Inuktitutru2814Russiantr2322Turkishth1631Thaiel2242Greekiu288 Inuktitutar6177Arabicccp4719Chakmael1468Greekru2782Russianchr264Cherokeeen1859Englishsr169Serbianiu2867 Inuktitutja5752Japaneseru6540Russianfr3158Frenchel1225Greekchr5878Cherokeear3437Arabicen367Englishchr6261Cherokeechr4851Cherokeeeo1792 Esperantoccp6913Chakmasr1985Serbianfr5597Frenchar2394Arabicfr2982Frenchja3400Japaneseen885Englishar2000Arabiceo1192 Esperantoru4162Russianel2116Greekes5416Spanishru685Russianar3825Arabiciu5864 Inuktitutzh2821Chineseccp1352Chakmael7083Greekel5780Greeken6011Englishel3690Greekiu4879 Inuktitutchr3958Cherokeeel1029Greekzh597Chinesechr5860Cherokeeiu3220 Inuktitutth4459Thaibn3197Banglasr4556Serbianiu1206 Inuktitutzh5561Chinesechr6198Cherokeefr3636Frenchja7651Japaneseru5410Russianiu8000 Inuktituten327Englishtr7540Turkishar5311Arabiczh3484Chineseiu2366 Inuktitutth7777Thaitr4792Turkisheo3033 Esperantofr6449Frencheo896 Esperantoeo2203 Esperantofr82Frenchen6719Englishth1877Thaija2761Japaneseccp2315Chakmael6811Greekel5361Greekeo4164 Esperantofr3364Frenchru7696Russianth3572Thaiel6554Greekja4720Japaneseccp4223Chakmaar3900Arabicja953Japaneseja6181Japaneseen2256Englishru7502Russianiu1405 Inuktitutth311Thaichr1496Cherokeeel2394Greekiu5018 Inuktitutsr3077Serbiantr4949Turkishel7475Greekzh6763Chinesefr6717Frenchel7178Greektr6495Turkishiu6415 Inuktituttr2975Turkishtr6931Turkishbn8121Banglaen1960Englishchr5035Cherokeeccp1478Chakmaeo7036 Esperantoiu5110 Inuktitutchr3837Cherokeesr6658Serbianbn1089Banglachr5058Cherokeees864Spanishbn4371Banglaja351Japanesear7558Arabicfr2180Frenchen4202Englishiu7135 Inuktitutar1078Arabicchr5801Cherokeeen1139Englisheo5681 Esperantofr7762Frenchccp167Chakmachr4307Cherokeeel5873Greekja7291Japaneseru592Russianccp4919Chakmaar3503Arabicsr6305Serbianbn2220Banglaeo957 Esperantofr1515Frenchsr3393Serbianiu6659 Inuktituttr321Turkishes2164Spanishen3134Englishes8011Spanishtr5776Turkishccp3190Chakmael4929Greekchr5746Cherokeeel5200Greektr7392Turkishes6464Spanishru2718Russianchr5924Cherokeeiu3441 Inuktitutsr6390Serbiansr1793Serbianccp5381Chakmaar5244Arabicen3950Englishccp3016Chakmath1470Thaith1962Thaieo3991 Esperantoja3709Japanesesr6446Serbiantr1529Turkishja1339Japaneseiu6706 Inuktitutccp4195Chakmaen1662Englishja3935Japaneseccp3925Chakmazh573Chinesebn2622Banglaiu979 Inuktitutsr2715Serbianchr5041Cherokeefr2471Frenchja6032Japanesechr8133Cherokeeth1811Thaibn8066Banglael2349Greekja7833Japanesebn5118Banglaiu5253 Inuktituten4653Englishth4671Thaija6624Japaneseru4410Russianeo1393 Esperantoen708Englishru227Russiansr957Serbianen7509Englishar3672Arabicsr7521Serbianccp7770Chakmasr6465Serbianen3427Englishth2803Thaitr2876Turkishsr3554Serbianel2815Greekfr4169Frencheo777 Esperantobn1791Banglazh6982Chinesees4922Spanisheo7879 Esperantofr3894Frenches5234Spanishen7331Englishiu2860 Inuktitutsr1215Serbianth5606Thaisr4349Serbianja6864Japaneseru7452Russiantr5009Turkishzh6469Chineseeo6947 Esperantoes6148Spanisheo3205 Esperantobn658Banglaar7196Arabicfr7537Frenchth3729Thaizh6114Chineseen3468Englishru3203Russianzh2094Chineseeo3489 Esperantoen3894Englishzh4021Chinesefr1900Frenchtr3934Turkishccp4964Chakmabn490Banglaccp1379Chakmachr7854Cherokeefr7464Frenchel2129Greekja7695Japaneseth7168Thaitr344Turkishtr5501Turkishiu7548 Inuktitutes12Spanishbn6086Banglael8177Greekfr5904Frenchsr7347Serbianth3265Thaisr1925Serbianeo1975 Esperantoru253Russianja6554Japanesebn8156Banglaru7552Russianiu6468 Inuktitutfr5634Frenchbn3720Banglael6260Greekfr3426Frenchzh3779Chineseccp2784Chakmaeo3601 Esperantosr607Serbianes2940Spanishar3295Arabicchr3963Cherokeeel6900Greektr5743Turkishzh7047Chinesebn2085Banglaar1350Arabicar1451Arabicth298Thaifr1760Frenchel5908Greekfr1895Frenchsr1901Serbianeo5298 Esperantoel7474Greekel12Greekja4866Japanesezh4527Chinesezh7084Chinesesr3916Serbianen4365Englishtr178Turkishiu8003 Inuktitutfr7538Frenchar7957Arabices5670Spanishth435Thaisr4099Serbianeo3269 Esperantofr4444Frencheo4055 Esperantoiu8098 Inuktitutsr1556Serbiansr5565Serbianth7371Thaitr4642Turkishar2017Arabicru1028Russianes6300Spanishar2918Arabicccp2221Chakmaccp4263Chakmaar3775Arabicccp5296Chakmafr7559Frenchiu5245 Inuktitutja1238Japaneseru4754Russianchr6062Cherokeeeo2326 Esperantozh3940Chineseccp6962Chakmachr1343Cherokeeja410Japaneseen7078Englishtr1763Turkishar1923Arabiczh306Chinesear7133Arabiczh7439Chinesebn7915Banglafr4108Frenchccp7821Chakmazh7642Chineseccp552Chakmazh1128Chinesear8007Arabicbn6485Banglaccp1001Chakmaar1950Arabicchr6439Cherokeeen4551Englishru3527Russianel7617Greeksr4575Serbianzh7338Chinesezh2921Chinesezh6749Chinesetr1445Turkishfr1037Frenchth7759Thaieo6744 Esperantoccp2006Chakmaccp5530Chakmafr4223Frenchchr2710Cherokeeeo3758 Esperantotr6500Turkishar6802Arabicar2395Arabictr1635Turkishzh5735Chineseth515Thaitr7834Turkishen2781Englisheo835 Esperantotr1307Turkishccp2370Chakmasr5311Serbianzh501Chineseru4028Russianen1717Englishes3629Spanishsr4183Serbianccp5807Chakmael4221Greekbn2867Banglaeo7766 Esperantoen2408Englishbn3371Banglatr7921Turkishchr2392Cherokeechr7642Cherokeeeo3777 Esperantoru3658Russiansr8166Serbianfr6891Frenchtr1366Turkishsr1253Serbiansr5771Serbianccp4738Chakmaccp4965Chakmael326Greekfr5793Frenchru3977Russianel1363Greekth3118Thaibn2058Banglaar1853Arabices718Spanishtr7232Turkishzh1240Chinesezh5930Chineseja8178Japaneseen4513Englishth5487Thaiel4383Greekru5793Russianiu487 Inuktitutar2089Arabiciu8101 Inuktitutccp1619Chakmatr53Turkishen4533Englishru6803Russianar607Arabicen7151Englishtr4786Turkishja8017Japanesezh2435Chinesetr7835Turkishccp6417Chakmatr6981Turkishccp6616Chakmaen6103Englishru6369Russianbn2486Banglafr1396Frenchar7090Arabicen3242Englishes2908Spanishja2750Japanesesr995Serbianccp5197Chakmaccp5134Chakmaccp3976Chakmaar7918Arabicen6247Englishes5310Spanishen4300Englishes7974Spanishsr6605Serbiantr8022Turkishar2020Arabices1388Spanishsr2598Serbianchr1249Cherokeeeo7123 Esperantoiu7275 Inuktitutth6037Thairu1499Russianccp5910Chakmaccp6427Chakmafr3359Frenches5566Spanishtr1928Turkishel475Greekru2130Russianeo3237 Esperantoth2398Thaiiu5683 Inuktitutsr7113Serbianes2518Spanishsr5347Serbiansr1121Serbianeo5478 Esperantotr7367Turkishfr2842Frencheo7071 Esperantoth6924Thaifr7798Frenchzh4125Chinesebn2700Banglasr4781Serbianes4224Spanishiu2360 Inuktitutiu8149 Inuktituteo6033 Esperantozh1882Chineseccp2942Chakmatr7589Turkishbn3908Banglaes3971Spanishes5891Spanishsr547Serbianar6559Arabicen8103Englishar4092Arabices7890Spanishbn7957Banglaes8036Spanishiu6342 Inuktitutru7961Russianzh7192Chinesetr7596Turkishccp2716Chakmaes636Spanishbn4100Banglaes61Spanishja364Japanesesr1499Serbianfr6251Frenchen3893Englishtr4420Turkishes3799Spanishes6490Spanishfr3510Frenchiu3998 Inuktitutja2816Japanesebn4439Banglaru1387Russiansr7277Serbiantr3125Turkishen342Englishes1748Spanishtr1827Turkishccp8126Chakmaiu3480 Inuktitutru4996Russianbn6758Banglafr5281Frenchth4938Thaieo7889 Esperantosr7239Serbianchr3179Cherokeeccp405Chakmaccp613Chakmaen5497Englishen3521Englishzh7190Chineseen4574Englishja3245Japanesear512Arabicel6761Greekel4782Greekar144Arabicen1200Englishen4801Englisheo6791 Esperantobn7106Banglaes5793Spanishzh1313Chinesear3148Arabicfr285Frenchfr3982Frenchel2556Greeksr1373Serbianiu4068 Inuktitutbn1265Banglaeo2594 Esperantoja2124Japaneseja3882Japanesefr1382Frenchru5861Russianes2743Spanishel4290Greekbn2617Banglaar5054Arabicfr1405Frenchchr4358Cherokeebn4346Banglaar193Arabicbn743Banglafr5079Frenchzh6283Chinesezh5063Chinesezh4771Chinesechr5605Cherokeees5128Spanishccp6756Chakmael70Greekzh429Chinesezh1794Chinesefr6907Frencheo302 Esperantoeo208 Esperantoru4623Russiansr215Serbianccp27Chakmaeo6221 Esperantosr6913Serbianja5980Japaneseth8109Thairu6456Russianeo7810 Esperantochr953Cherokeesr6129Serbianeo5521 Esperantochr2243Cherokeeja3998Japanesear583Arabicja5470Japaneseel1861Greekeo4779 Esperantoeo5707 Esperantosr1471Serbianchr4896Cherokeezh5481Chinesebn6918Banglaar7275Arabicbn7728Banglazh6466Chinesebn4990Banglaen6903Englishja1914Japaneseen2758Englishtr4479Turkishccp2477Chakmaeo2886 Esperantoth1319Thairu3107Russianzh3252Chineseel3789Greekccp2033Chakmaja2163Japanesefr7557Frenchru7415Russiantr7465Turkishja3758Japaneseru1496Russianchr7962Cherokeetr2846Turkishchr2034Cherokeear5410Arabicfr5073Frenchccp1610Chakmazh1467Chineseen3620Englishes1862Spanishru4652Russianel3386Greekzh242Chinesebn6984Banglael2437Greekar4273Arabicth1031Thaija5641Japaneseen2316Englishccp4124Chakmachr4539Cherokeeel4937Greekes1278Spanisheo309 Esperantozh465Chineseja5280Japanesear269Arabicccp1684Chakmaiu1040 Inuktitutar949Arabicbn4407Banglaiu4512 Inuktitutsr2949Serbiansr3239Serbianiu77 Inuktitutfr339Frenchel1938Greekchr7713Cherokeeth480Thaies3918Spanishfr6604Frenchchr2425Cherokeeel363Greekar5574Arabicen7989Englisheo3984 Esperantozh2865Chinesefr8109Frenchsr4058Serbianzh6313Chinesear5028Arabicru4458Russianiu4535 Inuktitutccp364Chakmaiu1793 Inuktitutccp286Chakmasr948Serbianel5131Greekzh4294Chinesetr8117Turkishccp6774Chakmaccp2995Chakmaja4661Japanesetr5885Turkishar5401Arabicja2543Japanesefr4010Frenchchr4253Cherokeezh1888Chinesees7690Spanishen4546Englishchr6022Cherokeees7611Spanishru7286Russianen4578Englishiu1503 Inuktitutfr6521Frenchiu4142 Inuktituten1469Englishchr3230Cherokeefr8173Frenchen366Englishar5347Arabicchr5697Cherokeeen6702Englishru5300Russianes1465Spanishar5368Arabicru826Russianccp2464Chakmaccp3933Chakmaja3665Japanesezh5878Chineseel2328Greekccp2964Chakmachr555Cherokeeru849Russianchr7973Cherokeeth3368Thaizh7601Chinesezh6126Chineseru6627Russianbn2732Banglael5798Greekru3823Russianchr6300Cherokeeccp4207Chakmafr6992Frenchfr2466Frenchchr3269Cherokeezh5144Chinesebn3715Banglachr6906Cherokeeiu3565 Inuktitutel5051Greekar6633Arabicja2915Japanesees5022Spanishccp3364Chakmael7258Greekccp4437Chakmaen7308Englisheo2452 Esperantoru796Russianar3338Arabiceo5050 Esperantoar7005Arabicchr1949Cherokeeccp4073Chakmaja3163Japaneseth6170Thaizh6528Chineseeo4641 Esperantoar7344Arabicja2714Japaneseccp3561Chakmaen7358Englishen2024Englishes4277Spanisheo622 Esperantochr5811Cherokeefr5648Frenchzh1409Chinesesr8188Serbianru1315Russianbn6109Banglaja3152Japanesebn8010Banglaen6023Englishbn1056Banglabn7061Banglaiu3028 Inuktitutar5784Arabicfr7193Frenchbn5936Banglaja851Japaneseth5988Thaith6431Thaiel7669Greeken6437Englishar2494Arabices6498Spanishbn4910Banglaar4747Arabicccp5688Chakmaar7393Arabicchr3823Cherokeetr674Turkishiu1115 Inuktitutbn5849Banglasr5460Serbianth6203Thaija7152Japaneseru2508Russianiu552 Inuktituten464Englishchr5461Cherokeeen7547Englishar1208Arabiceo5597 Esperantofr7826Frencheo7581 Esperantoja4896Japaneseccp7406Chakmaru5295Russiantr76Turkishar7008Arabicja3225Japanesetr7041Turkishsr6310Serbianccp462Chakmabn5278Banglachr935Cherokeechr2962Cherokeeel3962Greekchr7110Cherokeefr93Frenchfr2631Frenchiu1759 Inuktitutiu2394 Inuktituttr6095Turkishfr1822Frenchsr5131Serbianccp58Chakmaiu287 Inuktitutes3243Spanishar6449Arabicchr1751Cherokeeel2001Greekes888Spanishja8084Japaneseru7573Russianbn4239Banglasr5974Serbiansr4506Serbianar1392Arabicth129Thaibn3485Banglaccp7715Chakmaru6480Russianth7980Thaien1378Englishes84Spanishth6078Thaiccp2316Chakmaccp2496Chakmaen1784Englishen1449Englishth7587Thairu4364Russianth2336Thaitr7057Turkishes135Spanishsr7308Serbianel3911Greekzh2418Chinesetr1508Turkishzh3301Chinesezh3791Chinesees1117Spanishtr6198Turkishen6263Englishth529Thaien4836Englishen7826Englishth758Thaieo3081 Esperantofr678Frenchel7797Greekru1338Russiantr1846Turkishbn5516Banglaen167Englisheo6864 Esperantoth2246Thaizh1249Chinesebn3456Banglaes6421Spanishfr2115Frenchth3692Thaitr1693Turkisheo5643 Esperantoth1543Thaiar3671Arabicth31Thaizh5338Chineseeo2631 Esperantosr980Serbianccp3297Chakmaccp4931Chakmaes6663Spanishchr613Cherokeeru7970Russiantr547Turkishar63Arabicfr2899Frenchbn3502Banglabn6446Banglaru1970Russianfr38Frenchar7623Arabicja5031Japaneseja5386Japanesetr6959Turkisheo6547 Esperantosr8Serbianchr6847Cherokeeja5852Japaneseth105Thaitr6039Turkishel6459Greekchr1637Cherokeechr2389Cherokeeth2820Thaibn8144Banglafr2784Frenchru52Russianiu5757 Inuktitutzh1011Chineseth7798Thaichr4661Cherokeeen3932Englishccp6145Chakmaes443Spanishtr3541Turkishbn2043Banglael6310Greekccp5809Chakmafr1058Frenchja8043Japanesesr616Serbianeo4885 Esperantoth7170Thaiccp122Chakmath373Thaitr7033Turkishbn6134Banglaes3513Spanishccp7425Chakmaja7375Japaneseiu4556 Inuktitutes1070Spanishiu1653 Inuktitutar5499Arabices807Spanishru5985Russianar2805Arabicccp7716Chakmachr302Cherokeeen848Englishru2004Russianel1288Greekja1921Japanesefr5704Frenchru1480Russianru860Russianel150Greektr5188Turkishja4335Japaneseja4724Japaneseja5848Japanesefr2480Frenchja7597Japaneseja8182Japaneseth2925Thaichr7045Cherokeechr3097Cherokeear3656Arabicen5866Englishes4762Spanishfr6247Frenchchr1135Cherokeeccp7682Chakmaen5291Englishtr3071Turkishccp7419Chakmasr3641Serbianar3370Arabictr4643Turkishtr5884Turkishja8018Japaneseen3367Englishen7231Englisheo5119 Esperantoen836Englishes3187Spanishru7510Russiansr6349Serbianeo1300 Esperantoja3929Japanesesr808Serbianar863Arabicel52Greekfr7498Frenchccp2349Chakmaeo7713 Esperantoiu8016 Inuktitutru5767Russianth1290Thaichr6036Cherokeeccp6752Chakmaja5988Japanesear3725Arabicja466Japanesees3888Spanishccp6533Chakmabn3917Banglaja3025Japaneseel4872Greekiu6064 Inuktitutru532Russiansr3068Serbianes221Spanishzh6451Chinesezh5207Chineseth3218Thaien2465Englishiu443 Inuktitutsr1666Serbiantr3135Turkishchr5575Cherokeeru7011Russiansr4139Serbiantr1212Turkishth6270Thaith2951Thaija6431Japaneseccp6444Chakmael6491Greekes3474Spanishfr4802Frenches6789Spanishbn4497Banglachr1700Cherokeefr6071Frenchja3165Japanesesr656Serbiansr3683Serbianfr2276Frenchzh3876Chineseel1498Greekccp5345Chakmaiu2327 Inuktitutth2201Thaith1633Thaiiu2123 Inuktituttr2080Turkishel5748Greekfr1806Frenchfr4119Frenchsr7180Serbianfr1122Frenchru5718Russiansr2110Serbiansr5981Serbianccp1000Chakmaja7761Japaneseth5036Thairu4382Russianeo138 Esperantoel311Greekja6584Japanesechr4662Cherokeeel1724Greeken5493Englishccp6759Chakmaar2274Arabicchr3572Cherokeeccp3568Chakmaes7005Spanishar6869Arabicbn768Banglaes1122Spanishfr5412Frenchchr4300Cherokeeiu4944 Inuktituten1714Englishes236Spanishth7238Thaizh703Chinesear4764Arabicsr1782Serbianel6113Greekchr5188Cherokeees6975Spanishiu5177 Inuktitutccp2767Chakmaar1738Arabicth5748Thaies5065Spanishfr6699Frenchbn3289Banglaeo5239 Esperantofr1034Frenchsr8052Serbianar3190Arabictr465Turkishen5978Englishiu3655 Inuktituttr1575Turkishru4490Russianccp5885Chakmaccp7458Chakmatr7280Turkishru2785Russianel1095Greekchr3766Cherokeear2567Arabiciu183 Inuktitutel285Greeken2505Englishiu1510 Inuktitutja6167Japaneseen4674Englisheo5454 Esperantoar493Arabiceo2284 Esperantobn8146Banglachr5492Cherokeees6115Spanishja4659Japaneseeo2088 Esperantoja6390Japaneseiu6464 Inuktitutth5821Thaitr2320Turkishtr7779Turkishar3069Arabicel506Greekchr7766Cherokeeru1709Russianchr4898Cherokeear1252Arabicth2335Thaisr3160Serbianchr2530Cherokeeel2626Greekel3515Greekchr4357Cherokeefr6779Frenchiu2094 Inuktitutru6497Russianccp639Chakmaes4469Spanisheo4647 Esperantoru6522Russiantr5147Turkishtr6982Turkishen4259Englishzh2179Chineseel2662Greekiu3006 Inuktituttr1821Turkishzh6371Chinesees3151Spanishes7133Spanishel5397Greekel6461Greekfr7587Frenchar3217Arabices6995Spanishfr3298Frenchen3043Englishbn3776Banglath2073Thaichr7650Cherokeechr3765Cherokeebn4404Banglaen615Englishar1699Arabiczh4749Chinesefr1222Frenchth4799Thaija3785Japaneseel1184Greekbn4230Banglabn6748Banglath6279Thaitr6213Turkishja6718Japanesees4398Spanishar7988Arabiczh5281Chinesefr233Frenchar5546Arabicccp783Chakmaen7922Englishja4063Japaneseel5946Greekes2596Spanishsr7859Serbianzh2417Chineseth6365Thaitr1017Turkishru5403Russianiu1915 Inuktituttr2797Turkishchr1832Cherokeeel5489Greekja3538Japanesezh1753Chineseeo2457 Esperantoth4572Thaibn2031Banglazh6559Chineseeo2597 Esperantoru7108Russianel2714Greekfr237Frenchiu3984 Inuktitutja291Japanesear4708Arabictr6585Turkishen4451Englishsr7044Serbianja1634Japanesesr4741Serbianar5076Arabicel606Greekccp2559Chakmaar2881Arabicbn726Banglasr5659Serbiansr5684Serbianar1740Arabicchr1271Cherokeear4986Arabictr1352Turkishes3653Spanishiu53 Inuktituttr2857Turkishsr601Serbianeo1750 Esperantoar7533Arabicru4168Russianel2260Greekzh3454Chineseeo92 Esperantoeo2226 Esperantoru7423Russianru4147Russianth2126Thaitr2817Turkishtr6899Turkishzh12Chineseccp726Chakmabn3594Banglachr2143Cherokeeen5126Englishchr837Cherokeeja2139Japanesesr3355Serbianzh1837Chinesezh5198Chinesezh7545Chineseen4938Englishel6349Greekeo1531 Esperantoth5566Thaifr3593Frenchiu4905 Inuktitutfr4470Frenchja4330Japaneseja4425Japaneseru6496Russianbn3761Banglath1177Thaieo5995 Esperantoes2539Spanishiu1727 Inuktituttr169Turkishsr277Serbianth7963Thaiiu4292 Inuktitutzh1491Chineseiu7251 Inuktitutsr2504Serbianth7324Thaieo6098 Esperantoja849Japanesezh1745Chineseccp7483Chakmaiu1597 Inuktitutiu4619 Inuktitutchr3190Cherokeees1602Spanishtr7228Turkishar6250Arabices7429Spanishzh6915Chinesees2770Spanishzh1649Chinesees2135Spanishccp4990Chakmaccp7158Chakmaiu5626 Inuktitutes2352Spanishth6580Thaichr6212Cherokeebn282Banglasr4026Serbianbn4107Banglael3220Greekel6353Greekiu1937 Inuktituttr2688Turkishfr4184Frenchfr5480Frenchzh1779Chinesees201Spanishth7404Thaichr8073Cherokeeja4415Japaneseccp6342Chakmachr6511Cherokeeru829Russiansr508Serbianccp7253Chakmaiu5250 Inuktitutes1646Spanishes1826Spanishchr3568Cherokeefr7791Frenchsr2978Serbiantr5250Turkishen842Englishiu4494 Inuktitutsr6999Serbiantr6817Turkishsr646Serbianar7011Arabicja6116Japaneseccp7476Chakmasr6197Serbianel3611Greekzh3609Chineseru3176Russianbn6169Banglaja1106Japaneseen6269Englishfr4158Frenchja1350Japaneseeo3584 Esperantoes388Spanishen4203Englishen3795Englishzh5231Chinesesr7723Serbianccp491Chakmaiu6025 Inuktitutccp6530Chakmaes2736Spanishfr49Frenchar1482Arabicar6034Arabicccp6701Chakmafr621Frenchfr1042Frenchfr4029Frenchbn2521Banglaja981Japaneseen1472Englishtr2591Turkishja6118Japanesetr4355Turkishth4224Thaitr2866Turkishar6373Arabiceo2810 Esperantosr7775Serbianth5158Thaizh5847Chinesechr2284Cherokeechr2482Cherokeeth389Thaiiu4309 Inuktitutes4889Spanishth497Thaith6228Thaitr2631Turkishel5262Greeken3500Englishja4437Japanesetr1012Turkishar4658Arabicen1607Englishen6964Englishen8182Englishiu6738 Inuktitutar6707Arabiciu621 Inuktitutsr4991Serbianru8045Russianth5816Thaifr1178Frenchth2134Thaiar6731Arabices1721Spanisheo7404 Esperantochr4723Cherokeeen3821Englisheo6870 Esperantofr5429Frencheo2658 Esperantoes1176Spanishbn2026Banglaru6816Russianccp3095Chakmaiu6962 Inuktitutes3207Spanishzh3456Chinesees1164Spanishccp5555Chakmasr7052Serbiansr6672Serbianru6047Russiansr1206Serbianchr946Cherokeeel3430Greekccp224Chakmasr7863Serbianar2577Arabiceo4437 Esperantoiu1050 Inuktitutes1286Spanishru6989Russiantr1483Turkishccp295Chakmaar6485Arabicfr3865Frenchiu5062 Inuktitutiu7215 Inuktitutzh5633Chineseen1009Englishccp5348Chakmaja7753Japaneseen1496Englishchr5355Cherokeefr5805Frenchru2265Russianel4145Greekbn868Banglael7217Greekccp6617Chakmasr1105Serbianbn6978Banglaar219Arabicccp5444Chakmazh7423Chinesechr980Cherokeeccp7891Chakmaeo756 Esperantofr4634Frenchccp3014Chakmaes6218Spanishar6368Arabicar7704Arabicel5920Greeken6118Englishiu5465 Inuktitutfr2361Frenchccp4682Chakmachr4586Cherokeear4773Arabicar1101Arabicja1938Japaneseja3372Japaneseeo2409 Esperantobn8166Banglafr5963Frenchru5744Russianth7138Thaieo1667 Esperantotr4161Turkishiu3446 Inuktitutar7968Arabicen5522Englishar6921Arabictr6771Turkishja2224Japaneseth4099Thaitr4332Turkishar3016Arabices5336Spanishbn3499Banglaiu2395 Inuktituten7520Englisheo296 Esperantoth7836Thaiiu850 Inuktituten7171Englishiu2156 Inuktitutru7480Russianes4226Spanishccp7933Chakmaja4744Japaneseccp1515Chakmaru4116Russianccp2155Chakmaar2483Arabicchr6445Cherokeeccp7002Chakmaru2715Russianccp1485Chakmaen7434Englishes7991Spanishiu7040 Inuktitutar3553Arabicth6823Thaiccp8167Chakmael4624Greekth2673Thaizh8143Chineseel264Greekzh5508Chineseru110Russianbn2398Banglafr3566Frenchja190Japanesesr4074Serbiansr7112Serbianzh160Chinesear3903Arabicel4684Greekchr3853Cherokeebn2650Banglaen5120Englishbn934Banglafr2955Frenchfr7243Frenchfr7947Frenchccp6261Chakmaru5548Russianth927Thaiar1845Arabicth7014Thaieo1770 Esperantoiu1513 Inuktitutes1709Spanishel2022Greekchr1467Cherokeeeo3241 Esperantoiu7626 Inuktitutth1980Thaith4580Thaizh5593Chinesebn458Banglachr5956Cherokeefr4473Frenchja3467Japanesefr7759Frenchiu3870 Inuktitutes3278Spanishru2713Russianfr5587Frenchel4701Greekel7776Greeksr4507Serbianja5878Japaneseel1188Greeken2699Englishar2934Arabicbn4927Banglaccp3825Chakmael2005Greekes6210Spanishchr658Cherokeetr6615Turkishtr6846Turkishth6798Thaichr933Cherokeear3569Arabicja1493Japaneseccp836Chakmaar2613Arabiceo4270 Esperantoccp7177Chakmaeo3143 Esperantoth7601Thaien646Englishth1090Thaiel5003Greekfr5398Frenchar7363Arabicar8170Arabicsr7607Serbianen1598Englishel4876Greeken2040Englishes3668Spanishsr6455Serbianru4471Russianja915Japanesechr6909Cherokeeeo4557 Esperantoccp6144Chakmabn1736Banglaen153Englishes4800Spanishbn4809Banglaeo1353 Esperantoeo5621 Esperantofr3830Frenchth137Thaibn2339Banglaiu6997 Inuktitutes2022Spanishth5241Thairu7699Russianzh3354Chineseth6405Thaiel5692Greekfr4489Frenchen6889Englishsr6536Serbianel3023Greeken7543Englishes1194Spanishccp3829Chakmaja7571Japanesees1112Spanishbn2262Banglabn4104Banglaja7821Japanesezh4653Chinesear367Arabicsr3083Serbianja7095Japanesebn3553Banglaes4791Spanishsr1794Serbianru3027Russiansr3566Serbianeo1732 Esperantoeo8031 Esperantoes4587Spanishru6448Russianja5349Japanesesr4527Serbianbn3065Banglath4468Thaiar6740Arabicel5597Greekzh4237Chinesefr1281Frenchru4018Russianiu6649 Inuktitutccp504Chakmael1124Greekchr7564Cherokeeeo2063 Esperantoes3922Spanishfr1303Frenchel7215Greekchr1517Cherokeear94Arabicen3409Englishtr7652Turkisheo6654 Esperantoen4839Englishtr6465Turkishiu3484 Inuktitutzh7436Chinesesr2651Serbianbn5123Banglael4913Greekel7296Greekel7563Greekeo4609 Esperantoes5682Spanishiu6304 Inuktitutja4397Japaneseru5279Russianel3218Greekeo6137 Esperantozh3998Chineseccp469Chakmabn3413Banglaeo7006 Esperantoja2695Japanesesr1626Serbianru7105Russianru929Russianar466Arabictr1462Turkishel4534Greekes596Spanishtr5692Turkishru3699Russianzh4548Chineseen6552Englishiu2651 Inuktitutzh7022Chinesesr3075Serbianbn2064Banglabn3869Banglath6844Thaieo446 Esperantoiu2228 Inuktitutes6120Spanishccp1146Chakmath521Thaiel2856Greekes2663Spanishar8019Arabicchr2589Cherokeeiu5860 Inuktitutja7381Japanesebn228Banglaeo6301 Esperantotr5296Turkishar4040Arabicru1143Russiantr7619Turkishsr6893Serbianeo4591 Esperantoccp7877Chakmath7051Thaiel6767Greekiu4279 Inuktitutar2024Arabicchr788Cherokeeeo4442 Esperantoth22Thaizh1098Chinesechr4673Cherokeeiu1717 Inuktitutzh5429Chinesesr1393Serbianen7054Englishel1833Greeksr4411Serbianeo1772 Esperantoeo321 Esperantoiu6204 Inuktitutiu2269 Inuktitutiu6896 Inuktituttr6712Turkishbn3730Banglachr8154Cherokeechr42Cherokeebn6558Banglael4180Greekeo2356 Esperantoeo7587 Esperantoar5511Arabicfr7602Frenchtr6840Turkishfr7385Frenchtr15Turkishzh2807Chineseiu1031 Inuktitutru2408Russianchr7067Cherokeeen2511Englishen7934Englishzh6778Chineseja3552Japanesebn1419Banglaen2003Englishtr1186Turkishes6324Spanishen1900Englishccp4983Chakmaen4963Englishzh6792Chinesezh4929Chineseel7193Greekes3258Spanishccp3600Chakmael2354Greektr7531Turkishru2495Russianel8056Greekes5731Spanisheo5306 Esperantoiu430 Inuktitutsr3732Serbianzh4361Chineseeo5601 Esperantoth2332Thaiel7328Greeken3032Englishar5428Arabicen6729Englishth8150Thaies1395Spanishsr7212Serbianen8Englishel2570Greekes2950Spanishbn2068Banglaiu4184 Inuktitutth5080Thaizh1758Chinesezh7293Chinesees3855Spanishen3952Englishja5546Japaneseiu5324 Inuktitutel7380Greekzh5279Chinesebn2958Banglaes6051Spanishth3535Thaiel3417Greekzh2295Chinesezh6497Chineseen6565Englishth7068Thaifr7786Frenchar2739Arabicccp8052Chakmatr7095Turkishiu4211 Inuktitutzh3234Chineseja384Japaneseeo6092 Esperantoiu849 Inuktitutzh3520Chinesetr3145Turkishtr4526Turkishccp5801Chakmazh7883Chineseen4378Englishchr7005Cherokeeru7538Russianel1675Greekccp5321Chakmael2044Greekbn7694Banglaru7933Russianru7914Russianchr7592Cherokeeja5184Japaneseth6129Thaizh2361Chinesebn4172Banglabn5957Banglaen6968Englishel6725Greekiu5832 Inuktitutsr7018Serbianbn697Banglaccp8110Chakmafr7297Frenchccp7698Chakmaes5062Spanishzh5582Chineseth6145Thaiccp7518Chakmaeo4173 Esperantosr5797Serbianbn4528Banglaru5887Russianja1138Japaneseeo6709 Esperantochr3809Cherokeeeo7797 Esperantoeo7988 Esperantotr3440Turkishzh1965Chineseru5116Russianbn949Banglael3984Greekes5408Spanisheo534 Esperantoru493Russianes2782Spanishru925Russianfr7295Frenchsr719Serbiansr4412Serbianccp7221Chakmaes6722Spanishth163Thaiiu2815 Inuktitutchr4954Cherokeezh2875Chineseen2298Englisheo4142 Esperantotr2201Turkishiu381 Inuktitutes405Spanisheo1797 Esperantoth7972Thaizh6489Chineseeo1381 Esperantoen3366Englishbn394Banglachr4201Cherokeeru4759Russianeo5016 Esperantotr2623Turkishth2256Thaibn3750Banglaeo1255 Esperantoes2557Spanishru2050Russianth4953Thaiiu6851 Inuktituttr6169Turkishchr3862Cherokeebn6092Banglaar7769Arabicbn4299Banglabn3373Banglael5360Greekeo6935 Esperantoja5214Japanesear1843Arabicja1112Japaneseja7864Japaneseiu5317 Inuktitutth1008Thairu6051Russianzh679Chineseccp7791Chakmaccp1784Chakmaccp3901Chakmatr6012Turkishbn3051Banglaru7291Russianeo4784 Esperantoccp433Chakmael8187Greekes7128Spanisheo6415 Esperantoar4311Arabictr646Turkishccp4727Chakmaru7634Russianru2510Russianja2019Japanesees6074Spanishes6011Spanishes7583Spanishen1110Englishfr6152Frenchbn4194Banglafr5142Frenchzh6753Chineseen6131Englishth8146Thaien7987Englishsr8053Serbianchr1922Cherokeeth1722Thaitr1694Turkishiu7101 Inuktitutbn3054Banglath3269Thaiel5586Greekar3152Arabicccp1575Chakmaru3362Russianchr383Cherokeeel7829Greekes796Spanishchr2287Cherokeebn7506Banglaiu5691 Inuktituten5525Englishzh5000Chinesefr4657Frenchtr4758Turkishel4181Greekeo5057 Esperantoen37Englishja5727Japanesees1076Spanishel7784Greekru7292Russianel1953Greeksr7165Serbianes4970Spanishar3088Arabictr7873Turkishsr6836Serbiansr5765Serbianiu2175 Inuktituttr3020Turkishel5225Greekes2777Spanishccp2857Chakmaru4620Russianzh382Chinesebn2301Banglazh6683Chineseccp3958Chakmaiu684 Inuktitutel6843Greektr5034Turkishzh1814Chinesebn1451Banglachr7349Cherokeetr2657Turkishar1296Arabicru1239Russianel1325Greekru3239Russianiu386 Inuktitutzh5245Chinesebn8185Banglabn633Banglaeo3898 Esperantofr2017Frenchru7448Russianfr5814Frenchchr6515Cherokeechr8048Cherokeeel4855Greekchr3759Cherokeeeo3728 Esperantoja2142Japanesechr4745Cherokeechr6544Cherokeechr751Cherokeeiu2475 Inuktitutbn3640Banglaru3210Russianeo6303 Esperantoja4297Japaneseccp3914Chakmaar6969Arabicen403Englishth3457Thaitr2732Turkishar3319Arabiciu5930 Inuktitutccp47Chakmaar5286Arabicja3688Japanesees5577Spanisheo2227 Esperantozh3849Chineseen4855Englishen5229Englishar4452Arabicchr4719Cherokeeru5541Russianru6829Russianccp588Chakmachr1506Cherokeeccp3722Chakmachr7287Cherokeeel2431Greekes5782Spanishfr327Frenchfr1877Frenchfr2265Frenchiu1908 Inuktitutiu6812 Inuktituten7888Englishel2251Greeksr3768Serbianbn4392Banglael5862Greeksr5552Serbianeo3153 Esperantoth4778Thaiiu7976 Inuktitutiu4920 Inuktitutel7164Greekfr4401Frenchbn354Banglaeo1343 Esperantotr7717Turkishzh2554Chinesezh3642Chineseja3013Japanesear4261Arabicen6074Englishes587Spanishbn2517Banglaar8141Arabicja2547Japanesesr912Serbiansr5718Serbianes154Spanishiu6085 Inuktitutsr6478Serbianar6870Arabicth3174Thaiel577Greekccp5145Chakmaccp4139Chakmabn2598Banglafr1342Frenchja107Japaneseja5100Japanesesr5416Serbianccp4746Chakmaeo3415 Esperantochr6294Cherokeetr5712Turkishel4039Greekccp1676Chakmath3325Thaiel7414Greeksr2531Serbianeo1694 Esperantoccp8133Chakmaja3915Japaneseeo504 Esperantoes5058Spanishth2476Thairu392Russianzh595Chinesetr2709Turkishfr3555Frenchth6066Thaiiu1368 Inuktitutth2914Thaibn5365Banglaccp6368Chakmachr7933Cherokeesr6342Serbianeo1941 Esperantofr3990Frenchiu4397 Inuktituttr6799Turkishzh6488Chinesechr1368Cherokeeel6163Greekth5674Thaith7122Thaichr6713Cherokeezh2265Chineseel8152Greekes4992Spanishfr3866Frenchiu7376 Inuktitutiu6132 Inuktitutru3972Russianes498Spanishzh4020Chinesear4605Arabicel3851Greekiu7721 Inuktitutsr576Serbiantr2287Turkishja3026Japanesebn881Banglaccp3289Chakmatr4626Turkishsr2924Serbianja6461Japanesetr6708Turkishfr4965Frenchbn4027Banglaja4553Japaneseeo5453 Esperantoes5552Spanishiu5506 Inuktitutja715Japanesees5715Spanishsr984Serbianzh6820Chinesees669Spanisheo6992 Esperantoes3647Spanishru4880Russianth5931Thaies721Spanishel8001Greekel4530Greeksr5230Serbianru7347Russianzh6529Chinesechr6211Cherokeeja2513Japaneseth3511Thaitr257Turkishfr3106Frenchfr45Frenchfr5951Frenchchr7651Cherokeees7327Spanishchr1101Cherokeeru3611Russianel1888Greeksr6849Serbianar6101Arabicchr4448Cherokeeccp7684Chakmaccp2062Chakmaen1547Englishfr7777Frenchar6298Arabiciu7326 Inuktitutsr2803Serbianzh4546Chineseccp7599Chakmatr724Turkishar2144Arabiciu7414 Inuktituteo4708 Esperantoccp7934Chakmael1600Greekzh1751Chineseccp4796Chakmaccp7317Chakmatr5813Turkishru6666Russianen4573Englishtr4942Turkishes3211Spanishja8128Japanesear7080Arabiceo1498 Esperantoen6661Englishccp5412Chakmaru1035Russianzh4946Chinesees7948Spanishiu7090 Inuktitutbn411Banglael2057Greekeo7803 Esperantoel4735Greekfr150Frenchtr7557Turkishzh3540Chinesezh5212Chineseeo3872 Esperantoiu27 Inuktitutiu7767 Inuktitutccp1218Chakmaiu1748 Inuktitutar1927Arabicja1471Japanesear6198Arabicfr2012Frenchiu7070 Inuktitutel7948Greekja6707Japaneseccp6072Chakmaeo3542 Esperantoja4831Japanesebn729Banglaeo7892 Esperantoes2871Spanishth6628Thairu2578Russianru1229Russianen8150Englishel2767Greekbn1862Banglaes3066Spanishchr3895Cherokeeen4348Englishru8133Russianeo909 Esperantochr5007Cherokeeiu3991 Inuktitutzh7877Chineseru6010Russiansr5789Serbiantr8082Turkishja7816Japaneseen1105Englishchr548Cherokeees3271Spanisheo4654 Esperantofr7883Frencheo1738 Esperantochr5922Cherokeeen1396Englishfr5500Frenchar1174Arabicel4465Greeksr6262Serbianth3931Thaibn7534Banglafr5682Frenchsr3958Serbianes4945Spanishel7783Greeksr2993Serbiansr3725Serbianbn8022Banglachr6268Cherokeeja537Japaneseru8177Russianja1Japanesefr4144Frenchar6500Arabices7806Spanishtr4309Turkishbn1899Banglaeo3963 Esperantoru5405Russianbn2286Banglaeo4842 Esperantobn1362Banglabn3939Banglath4363Thaith2600Thaieo4856 Esperantoeo4471 Esperantozh733Chinesebn7395Banglaen5302Englisheo2856 Esperantosr2107Serbianen6516Englishbn600Banglatr7988Turkishccp4744Chakmafr1755Frencheo6587 Esperantoes786Spanishel2568Greekfr4851Frenchccp3146Chakmaru3898Russianzh1912Chineseth1534Thaibn6603Banglaru3793Russianeo2996 Esperantoja1984Japaneseth3610Thaien562Englishfr240Frenchzh7672Chineseiu3345 Inuktitutbn7381Banglael1569Greeksr3360Serbianja394Japanesebn1643Banglaiu5961 Inuktitutth6075Thaizh543Chineseru3725Russianbn3296Banglaru5719Russianes4599Spanishja679Japaneseel4050Greekiu4206 Inuktitutsr4693Serbianes1997Spanishiu6155 Inuktitutja3810Japaneseth3497Thaith3714Thaiiu7458 Inuktitutzh1529Chinesebn692Banglachr2320Cherokeeiu6803 Inuktituten7866Englishiu511 Inuktitutchr2205Cherokeeiu3610 Inuktitutes990Spanishru2627Russianel7753Greeken6614Englishccp6117Chakmaru3649Russianeo3628 Esperantoar6674Arabiciu108 Inuktitutsr7927Serbianbn698Banglatr5943Turkishen1147Englishar2441Arabicen3463Englishsr6969Serbiantr2532Turkishar123Arabices1290Spanishen7253Englishbn682Banglaccp7656Chakmachr5868Cherokeeel807Greekel1847Greekes4747Spanishiu4420 Inuktitutel5607Greekchr1130Cherokeesr7974Serbianja6437Japaneseru3078Russianja7432Japaneseel7133Greektr1964Turkishru4132Russianth7678Thaiar4718Arabiczh4191Chinesebn8059Banglael7828Greekbn4265Banglatr7485Turkishar6253Arabicar7309Arabicen6065Englishar6092Arabicccp3337Chakmasr7022Serbiansr75Serbianzh5649Chineseen2224Englishru5251Russianccp1561Chakmael2381Greekzh710Chineseja4889Japanesear4167Arabiceo3954 Esperantoccp1171Chakmaar5815Arabiciu938 Inuktitutru4562Russianfr2249Frenches4402Spanisheo328 Esperantoen3391Englishar3218Arabicja2406Japaneseja6054Japanesees6308Spanishes7794Spanishiu5547 Inuktitutar6927Arabiciu2844 Inuktitutar1616Arabicfr2674Frenchja2155Japaneseccp7021Chakmafr5099Frencheo3516 Esperantoru603Russianiu6898 Inuktituten1909Englisheo7190 Esperantoth1688Thaifr6199Frenchen585Englishel7515Greekbn2013Banglaiu2586 Inuktituten2012Englishen6142Englishtr4537Turkishtr678Turkishtr5022Turkishen3954Englishsr3738Serbianar4677Arabiczh6087Chineseel7444Greektr6087Turkishbn5083Banglaes1518Spanishfr1667Frenchiu4614 Inuktituttr5330Turkishccp4323Chakmaru4544Russiantr4182Turkisheo5291 Esperantotr4533Turkishzh471Chineseeo3248 Esperantosr2875Serbianfr211Frenchtr2942Turkishar3906Arabicfr6461Frenchfr6193Frenchtr5368Turkishbn8037Banglaes7893Spanishes7789Spanishar802Arabicar7214Arabicel7788Greekes100Spanishsr2156Serbianen1082Englishchr7663Cherokeeeo6380 Esperantoccp6940Chakmaccp5735Chakmaeo2029 Esperantoiu7422 Inuktitutar7879Arabices822Spanishth7839Thaiar7114Arabicen4524Englishtr4823Turkishccp6250Chakmatr6744Turkishru6998Russianar1644Arabicen3300Englishiu6897 Inuktituten7837Englishel5635Greekru4679Russianar2851Arabicel6122Greekes367Spanisheo647 Esperantoes5048Spanishbn3618Banglaccp6068Chakmabn335Banglath1231Thaitr6793Turkishel5112Greekru2900Russianfr1685Frenchel5786Greekchr2185Cherokeeru2687Russianes3070Spanisheo3690 Esperantoru6824Russiansr6470Serbianchr6505Cherokeetr745Turkishru2375Russianes7879Spanishchr7267Cherokeeeo4426 Esperantoth1055Thaizh558Chinesebn6799Banglael6302Greekfr8063Frenchth6483Thaies5579Spanishfr7075Frencheo5665 Esperantoar4165Arabicel2582Greekeo7375 Esperantochr5294Cherokeees6595Spanishja3186Japaneseth6542Thaiccp3211Chakmasr3598Serbianccp3871Chakmath1659Thaisr4635Serbianes319Spanishen2310Englishbn1846Banglaar4198Arabicel7807Greekchr130Cherokeeja6902Japanesesr2316Serbianes2800Spanishen466Englishel7937Greekes7623Spanishsr5401Serbianzh2897Chineseccp1835Chakmaru5088Russiantr1104Turkishzh647Chinesear1232Arabiczh6886Chineseccp1364Chakmaccp3117Chakmaccp4827Chakmaja3763Japaneseja4914Japanesebn1022Banglath3234Thaiccp6987Chakmaar6770Arabicfr1375Frenchfr1011Frenchbn5983Banglaccp1928Chakmaar3055Arabicsr2384Serbianes4379Spanishes6405Spanishfr7294Frenchsr7082Serbianja3195Japanesefr999Frenchiu4889 Inuktitutfr2305Frenchja6423Japaneseen5325Englishja6609Japaneseen5955Englishsr776Serbianccp3036Chakmath2196Thaith5511Thaizh4164Chinesezh4203Chinesefr3846Frenchchr7556Cherokeeen1846Englishel3624Greeken4400Englishth3805Thaibn7375Banglaeo76 Esperantoiu494 Inuktitutbn4650Banglaru2051Russianbn6223Banglaeo653 Esperantoeo1136 Esperantoiu7658 Inuktituten1211Englishbn7466Banglaen4610Englishiu1386 Inuktitutsr6464Serbianar4231Arabices3944Spanishccp6700Chakmaeo2932 Esperantoccp6447Chakmaar3072Arabicsr573Serbiansr4700Serbianiu5978 Inuktitutar7470Arabictr6551Turkishel1973Greekchr1651Cherokeees4590Spanishiu910 Inuktitutzh6081Chinesefr631Frenchtr99Turkishchr3238Cherokeeiu7280 Inuktitutsr3605Serbianbn1754Banglachr647Cherokeees3260Spanishru3856Russiantr2321Turkishes2059Spanishes4026Spanishiu1203 Inuktitutja5052Japaneseth5385Thaibn6533Banglaru6781Russianel7333Greekth965Thaibn4184Banglaccp2923Chakmaar8079Arabictr1316Turkishzh5095Chineseiu6806 Inuktitutchr2040Cherokeesr8157Serbianeo4938 Esperantofr3101Frenchel3992Greekchr570Cherokeeen1635Englishth5558Thaitr3606Turkishbn4146Banglachr6103Cherokeeel7873Greekru7896Russianja1182Japanesetr7964Turkishen1096Englishen6045Englishar7844Arabicbn6227Banglaccp4070Chakmaes5229Spanishbn4295Banglachr990Cherokeeen6301Englishsr4471Serbianes2037Spanishfr7175Frenchchr8114Cherokeeccp4949Chakmael4794Greekes7984Spanishzh2134Chineseiu37 Inuktitutru1135Russianth24Thaichr5787Cherokeebn3734Banglaeo2166 Esperantoes6143Spanishru6018Russianar4176Arabicru3917Russianel6429Greekbn2461Banglaiu530 Inuktitutchr4504Cherokeeel3786Greekja7975Japaneseel6089Greeken3119Englishsr6964Serbianeo3809 Esperantoiu58 Inuktituteo2844 Esperantoeo8019 Esperantozh4102Chinesefr2589Frenchchr5871Cherokeeel7457Greekccp5461Chakmaja6987Japaneseeo402 Esperantotr7060Turkishes1853Spanishchr1439Cherokeeja5654Japaneseeo7336 Esperantoru167Russianfr5117Frenchar2406Arabiczh184Chineseeo4357 Esperantoeo6399 Esperantoth7751Thaija2704Japanesees2813Spanishchr671Cherokeeja1091Japaneseccp2363Chakmachr1916Cherokeezh946Chinesear3798Arabicccp151Chakmaiu2984 Inuktitutsr7387Serbianes6900Spanishar4681Arabictr5219Turkishru8079Russianar1630Arabicja4158Japanesear7035Arabiczh7679Chinesefr2488Frenchsr3158Serbianchr4580Cherokeeeo2297 Esperantozh6370Chineseja289Japanesees7780Spanisheo1698 Esperantoth1868Thaieo6378 Esperantozh3360Chineseth6927Thaibn4284Banglachr1730Cherokeetr3412Turkishiu759 Inuktitutfr5026Frenches4737Spanishfr6370Frenchth5177Thaiar6441Arabicen7719Englishja7902Japaneseen5175Englishbn3400Banglabn4729Banglaes5861Spanishiu7770 Inuktitutja6738Japanesear6460Arabicchr2393Cherokeeccp4781Chakmasr4736Serbianar6917Arabicchr1543Cherokeeru2749Russianja7350Japaneseen6365Englishru5679Russianth1608Thaichr4234Cherokeeru7261Russiansr3420Serbianchr701Cherokeesr1520Serbianbn3467Banglath281Thaitr1775Turkishtr5756Turkishru6117Russianccp633Chakmabn1032Banglachr2267Cherokeear4888Arabicchr5027Cherokeechr6077Cherokeeel6005Greekfr227Frenchchr7603Cherokeeiu723 Inuktitutchr1584Cherokeeiu1882 Inuktitutar4190Arabiciu2637 Inuktitutru273Russiansr7323Serbianiu1778 Inuktitutth2411Thairu609Russianeo3360 Esperantoth4683Thaizh1413Chineseja2062Japaneseru5123Russianar5593Arabiczh3205Chineseeo5746 Esperantosr2763Serbianccp166Chakmasr3967Serbiansr6914Serbianel3459Greekccp490Chakmachr1659Cherokeefr5680Frenchru6487Russianchr1010Cherokeear4814Arabicel5187Greekiu4167 Inuktitutja962Japaneseth6726Thaiiu2542 Inuktitutsr4071Serbianbn34Banglabn721Banglatr4831Turkishfr4672Frenchbn5412Banglafr7256Frenchja2971Japaneseru4502Russianzh3058Chinesees399Spanishbn805Banglael1144Greekzh2691Chinesees6303Spanishja7398Japaneseth6373Thaitr5746Turkishsr7878Serbianeo676 Esperantoja1042Japanesetr2553Turkishtr2605Turkishth4958Thaiiu2610 Inuktitutja70Japaneseru4212Russianeo625 Esperantoel4446Greekel7826Greekar2892Arabicbn5980Banglael7137Greekar4728Arabicar4062Arabicccp3566Chakmaeo7967 Esperantoru4611Russianth777Thaifr3255Frenchar4423Arabicccp7330Chakmabn1337Banglaeo4296 Esperantotr3539Turkishel5855Greekbn4031Banglaiu6808 Inuktitutbn6614Banglaen1540Englishru1116Russianar270Arabicth1921Thaieo4171 Esperantoeo6427 Esperantoes4161Spanishtr1107Turkishzh6963Chineseiu5146 Inuktitutbn7420Banglaen7334Englishfr1576Frenchtr5558Turkishtr4863Turkisheo2941 Esperantoru3896Russianiu1484 Inuktitutel7450Greekiu1796 Inuktitutja1607Japaneseeo6630 Esperantoen5708Englishel4346Greekfr7189Frenchiu1509 Inuktitutru6920Russiantr824Turkishiu298 Inuktitutar4449Arabicja6891Japanesesr4844Serbianfr7233Frenchja3889Japanesezh1757Chinesechr3085Cherokeeja6326Japanesezh4518Chineseen3724Englishel5816Greekzh380Chinesees948Spanishar7291Arabicfr8128Frenchbn1985Banglaja5570Japanesefr6677Frenchth1610Thaiar4871Arabicfr2534Frencheo4282 Esperantochr5100Cherokeebn1982Banglaeo4061 Esperantoiu6340 Inuktitutchr4882Cherokeeru3678Russianel746Greekar6219Arabiczh2559Chineseeo5538 Esperantochr4648Cherokeezh5069Chinesees7371Spanishbn6110Banglaja5767Japaneseiu1893 Inuktitutes4712Spanishen39Englishfr372Frenchccp7965Chakmatr2093Turkishbn5732Banglatr5843Turkishel6269Greekja4221Japanesear4110Arabicccp2996Chakmaccp4091Chakmafr6108Frenchsr7045Serbianeo5315 Esperantozh2007Chinesear3880Arabicel4432Greekar3489Arabicar6993Arabicfr7310Frenchar5643Arabicth5103Thaizh338Chinesebn7885Banglael914Greektr2949Turkisheo6138 Esperantoel3895Greekeo6041 Esperantozh3154Chineseel2149Greeken5663Englishar2619Arabicfr5650Frenchja7446Japaneseru5332Russianar5666Arabicchr4258Cherokeechr3005Cherokeeja5788Japaneseth2204Thaien7187Englishbn7682Banglasr757Serbiansr1866Serbianru7594Russiansr6298Serbianccp3067Chakmafr5877Frenchzh8071Chineseeo6706 Esperantoru617Russianth2189Thaiiu1447 Inuktituttr4285Turkishccp3239Chakmaja5249Japanesesr2971Serbianzh4687Chineseccp7618Chakmachr2160Cherokeesr6386Serbianzh7385Chineseccp5166Chakmael2964Greekiu7159 Inuktitutth6538Thaija5817Japanesees823Spanishen0Englishen1390Englishzh5463Chinesechr4747Cherokeeth4109Thaitr5345Turkishzh6490Chinesear4185Arabicsr1161Serbianchr2369Cherokeees6189Spanishfr6504Frenchar6873Arabicja6177Japanesear6956Arabices148Spanishru1981Russiantr4165Turkishar5387Arabicchr5357Cherokeeel1566Greekar3899Arabicen4707Englisheo6174 Esperantosr7932Serbianiu7677 Inuktitutja7353Japaneseccp4209Chakmaes2079Spanishiu3323 Inuktitutes4644Spanishes6545Spanishtr2873Turkisheo555 Esperantofr4198Frenchen1748Englishzh4525Chinesees6904Spanishen6414Englishes6605Spanishfr5944Frenchccp788Chakmaen7418Englishfr7497Frenchru1578Russianja400Japaneseen519Englishel3140Greeksr802Serbiansr1367Serbianar6829Arabicja2393Japaneseru7945Russianth3241Thaifr5563Frenchzh1826Chinesear1042Arabiceo4158 Esperantoiu578 Inuktitutiu4717 Inuktitutes7071Spanishccp1666Chakmafr2508Frenches2619Spanishccp4897Chakmatr9Turkishar3926Arabicbn1140Banglazh5098Chinesezh8001Chineseel7477Greekes5178Spanishfr4648Frenchzh1174Chineseja2551Japanesebn7084Banglaeo1638 Esperantoes3056Spanishfr1080Frenchbn3566Banglaiu2408 Inuktituttr3827Turkishel1126Greeksr2226Serbiantr2596Turkishiu7555 Inuktitutja3864Japaneseja6825Japaneseiu6842 Inuktitutchr4800Cherokeeeo656 Esperantofr7895Frenchtr3831Turkisheo4815 Esperantoru5761Russianth6539Thaiiu5479 Inuktitutru2301Russianar5159Arabicja1334Japanesesr6912Serbianccp82Chakmabn2914Banglael2842Greekbn2454Banglaar3979Arabices267Spanishes1222Spanisheo6220 Esperantosr4502Serbianel3123Greekbn3883Banglachr6770Cherokeefr638Frenchbn5567Banglafr2613Frenchth7493Thairu3889Russianiu6930 Inuktituten5400Englishtr1468Turkishbn3150Banglael5713Greekfr7381Frenchsr2650Serbianccp3032Chakmaru1105Russiantr987Turkishchr48Cherokeechr4985Cherokeetr7847Turkishja6692Japanesear1038Arabiceo4637 Esperantoiu4442 Inuktitutccp3937Chakmaen4480Englishru444Russianru3964Russiantr8054Turkishzh5618Chinesebn3182Banglafr4779Frenchth3938Thaichr7884Cherokeesr4402Serbianel5923Greeken1934Englishel8053Greekru1663Russianccp2821Chakmaar6056Arabicfr7392Frenchbn7125Banglael140Greekar7361Arabicccp2488Chakmaccp5684Chakmachr1464Cherokeeeo2273 Esperantoeo6158 Esperantofr6060Frenchiu1903 Inuktitutiu5786 Inuktitutja3947Japaneseja7159Japaneseru4336Russianfr7568Frenchbn378Banglaru7107Russianeo5318 Esperantobn2203Banglath3958Thaith4662Thaitr7426Turkishccp7619Chakmaiu2426 Inuktitutsr7561Serbianchr2854Cherokeechr3207Cherokeeeo6377 Esperantoel1351Greekru5081Russiantr2082Turkishes1917Spanishsr1649Serbiansr7565Serbianel4888Greekeo8059 Esperantoar3990Arabiceo4041 Esperantoja517Japanesechr7415Cherokeesr35Serbianbn7807Banglatr3752Turkishbn115Banglaru7711Russianccp2465Chakmaeo4590 Esperantochr642Cherokeeja3292Japanesezh4373Chinesefr2110Frenchchr1011Cherokeees4971Spanishes8022Spanishar6505Arabicbn2847Banglasr3895Serbianja3584Japaneseth5360Thaizh6726Chineseru305Russiantr4672Turkishfr4338Frenchru1244Russiansr746Serbianar1989Arabicbn4755Banglaen2733Englishes586Spanishccp4232Chakmaen489Englishja7619Japanesetr7293Turkishja548Japanesebn3090Banglaeo3236 Esperantoar5655Arabicbn919Banglaeo4466 Esperantoeo8136 Esperantoen4012Englishfr2020Frenchiu2194 Inuktitutsr4288Serbianzh996Chineseel5729Greekchr3833Cherokeeeo7737 Esperantoar5040Arabicbn5366Banglatr6944Turkishar3765Arabicth241Thaibn8027Banglaja7581Japaneseth7073Thaieo4551 Esperantoru657Russiantr5378Turkishar1804Arabicfr390Frenchth1635Thaiar4606Arabicen7648Englishccp618Chakmaja333Japanesechr5670Cherokeeen2864Englishsr3924Serbianccp4912Chakmazh7474Chinesefr6674Frenchja7629Japaneseel4023Greekzh6795Chinesear7479Arabicbn2248Banglael2464Greektr5151Turkishfr8010Frenchccp2658Chakmaar2658Arabicccp2881Chakmachr4690Cherokeeccp4906Chakmaja7320Japanesezh2193Chineseccp8153Chakmaccp7159Chakmachr4250Cherokeeeo1043 Esperantotr7158Turkishbn3324Banglaja168Japanesetr5592Turkisheo7749 Esperantozh554Chineseeo5210 Esperantoja6036Japanesechr4832Cherokeesr3099Serbianeo1098 Esperantoes4087Spanishth8180Thaizh942Chinesechr487Cherokeeja7033Japanesebn1498Banglasr7093Serbianru6839Russianccp6539Chakmaiu1158 Inuktitutja2076Japaneseeo976 Esperantoen184Englishth714Thaifr4487Frenchbn4928Banglabn6256Banglabn4672Banglachr3668Cherokeear3236Arabicbn4926Banglaja4182Japanesetr5189Turkishar4381Arabicth5263Thaichr1402Cherokeefr917Frenchru4253Russianel2687Greekbn922Banglabn1361Banglaja885Japaneseeo2624 Esperantoth5193Thaitr3538Turkishen5766Englishchr1065Cherokeeen664Englisheo6604 Esperantofr1804Frenchchr7894Cherokeees5779Spanishes6486Spanishfr4268Frenchsr1448Serbiansr6398Serbianar3590Arabicbn761Banglaes2637Spanishiu6015 Inuktitutru5127Russianar2674Arabicfr2774Frenchiu7948 Inuktitutar1486Arabicen3593Englishiu1118 Inuktitutchr5543Cherokeees2670Spanishchr5422Cherokeeiu7062 Inuktituttr3288Turkishzh6639Chinesebn1941Banglatr3984Turkishsr6907Serbianchr3132Cherokeechr4508Cherokeeel7983Greekel1655Greeken1326Englishbn1036Banglaiu5901 Inuktitutar1892Arabiczh5445Chineseiu5268 Inuktitutchr4257Cherokeeel2811Greekiu6697 Inuktitutsr3305Serbianiu1329 Inuktitutru949Russianar4801Arabicsr7529Serbiantr6896Turkishfr2467Frenchfr7272Frenchth3764Thaichr7908Cherokeeel8168Greekccp3185Chakmaes3131Spanishfr5207Frenchbn2434Banglaen5045Englishja2223Japanesear7489Arabicel4846Greekes1080Spanishzh8078Chinesees7187Spanishfr927Frenchru152Russianccp3348Chakmafr5596Frenchth8156Thaies2495Spanishiu7029 Inuktitutth5146Thaiccp1199Chakmatr271Turkishen8141Englishtr140Turkishchr7226Cherokeeeo1602 Esperantoel7626Greekiu68 Inuktitutar1731Arabices4370Spanishfr700Frenchsr115Serbiantr5119Turkishbn1257Banglatr7967Turkishru866Russianes3649Spanishccp3775Chakmaja2488Japaneseeo8105 Esperantoru4600Russianzh1130Chineseccp3680Chakmatr974Turkishes7969Spanishiu2788 Inuktitutbn1816Banglaes5328Spanishes5235Spanishiu5717 Inuktitutsr4454Serbianccp4989Chakmaar2235Arabictr1888Turkishen5389Englishbn6914Banglael6980Greekru4308Russianja1185Japanesear7790Arabicbn6980Banglachr6450Cherokeeiu1367 Inuktitutja5303Japanesesr252Serbianth1016Thaitr3587Turkishja7840Japaneseru821Russianzh1173Chineseiu1524 Inuktitutbn2144Banglaccp6435Chakmael1332Greekfr6805Frenchsr3031Serbianen5557Englishfr5085Frenchsr4917Serbianfr1941Frenches1559Spanishsr6344Serbiansr1616Serbianccp3553Chakmachr1345Cherokeeen4153Englishel4121Greeken5290Englishiu1387 Inuktitutccp3658Chakmaru6818Russianzh4967Chineseth1388Thaizh5917Chineseth5491Thaizh506Chinesetr7751Turkishiu3387 Inuktitutar2196Arabicccp2237Chakmaen5633Englishru1318Russiantr4663Turkishbn5969Banglatr4999Turkishel227Greekja3093Japanesesr7731Serbianccp5496Chakmabn6025Banglaiu2681 Inuktituteo1033 Esperantochr5948Cherokeefr3427Frenchtr1066Turkishja4025Japanesefr6595Frenches6304Spanishen4421Englishccp6322Chakmabn7037Banglaes3640Spanishsr3570Serbianes1515Spanishen4266Englishel6112Greekccp3295Chakmaes3428Spanishchr6641Cherokeeel1105Greekzh4053Chineseth3722Thaibn1240Banglael6430Greekchr8157Cherokeechr6720Cherokeeru6890Russianeo4942 Esperantotr3699Turkishchr2390Cherokeear781Arabictr7734Turkishbn2919Banglasr2745Serbianel6125Greekru7208Russianchr4092Cherokeetr936Turkisheo52 Esperantoel1610Greekar4830Arabictr5725Turkishccp3365Chakmachr7460Cherokeebn6740Banglachr5888Cherokeeru393Russianccp4998Chakmabn741Banglael1473Greekth8039Thaiel1862Greekel7772Greekeo7814 Esperantoes2882Spanishes3365Spanishiu3667 Inuktitutiu3690 Inuktitutth7933Thaichr4381Cherokeezh5194Chinesechr2294Cherokeezh6136Chineseja3184Japanesear4478Arabicth5025Thaichr1590Cherokeeiu3947 Inuktitutel4825Greekel6314Greekfr155Frenchfr1115Frenchzh4539Chinesezh7850Chineseel5676Greekeo4532 Esperantoar7817Arabicar6603Arabicja6100Japanesear3454Arabicfr8085Frenchiu2566 Inuktituttr6958Turkishccp3960Chakmaen8014Englishzh1085Chinesefr7327Frenchth6355Thaien7173Englishtr1605Turkishccp964Chakmaeo1034 Esperantoth7878Thaiel1635Greeken5683Englishja1071Japanesesr2853Serbianen5055Englishfr3778Frenchiu3588 Inuktitutzh7319Chinesetr3592Turkishtr8095Turkishtr1038Turkishja6220Japanesezh2626Chinesezh159Chinesezh2833Chineseeo7605 Esperantoiu3906 Inuktitutes6855Spanishiu532 Inuktitutar7357Arabicel6689Greekth1654Thaieo2362 Esperantoja3369Japaneseeo190 Esperantoeo3766 Esperantoiu3253 Inuktitutth5551Thaisr3336Serbiansr6881Serbiantr4081Turkishfr5866Frenchzh7673Chineseel2026Greekel6403Greekar4083Arabicfr3725Frenchccp1076Chakmaes5580Spanishtr6018Turkishtr3749Turkishar8148Arabiceo2370 Esperantoccp1639Chakmaen7243Englishja1127Japanesees2300Spanishar7337Arabicth7778Thaien773Englishfr1338Frenchru7584Russianru5329Russiantr2812Turkishru5253Russianru2841Russianchr2979Cherokeear904Arabicbn2970Banglaja5600Japanesesr7061Serbiansr1455Serbianeo1977 Esperantoeo1271 Esperantoar5353Arabices4126Spanishar3366Arabicchr4556Cherokeeccp6797Chakmaen7228Englishel6892Greekes7291Spanishja3597Japanesechr8039Cherokeeja4891Japanesees1113Spanishtr2640Turkishru7052Russianja2590Japanesees1907Spanishel4111Greekes1453Spanishchr6996Cherokeeja3353Japanesebn1858Banglaes2166Spanishbn6158Banglachr4576Cherokeeel5896Greekzh7830Chinesear5579Arabicen3802Englishth142Thaizh4039Chinesechr4432Cherokeefr964Frenchtr5433Turkishes5629Spanishru153Russiantr807Turkishru2311Russianja3097Japanesetr7436Turkishbn2356Banglaccp4525Chakmaiu7520 Inuktitutchr4938Cherokeees1591Spanishja231Japanesefr1969Frenchen3514Englishzh1194Chinesesr2696Serbianth1987Thaies1634Spanisheo7507 Esperantofr1274Frenchar327Arabicru6247Russianchr2793Cherokeetr948Turkishes187Spanishfr2736Frenchel7618Greekth648Thaiiu6349 Inuktituteo3648 Esperantoccp1586Chakmaes7337Spanishja7890Japaneseel7437Greekes26Spanishzh6806Chineseccp6097Chakmaeo5004 Esperantofr6562Frenchccp5603Chakmachr3585Cherokeeth6046Thaiccp6960Chakmaiu8068 Inuktitutzh3409Chinesees5978Spanishccp6437Chakmaes833Spanishth3062Thaith5982Thaieo5737 Esperantoiu2543 Inuktitutru3891Russianes8154Spanishru654Russianru4077Russianzh49Chinesezh4124Chinesebn6307Banglafr4901Frenchiu4590 Inuktitutsr6744Serbianru4706Russianiu6151 Inuktituteo503 Esperantochr6219Cherokeear4593Arabicccp5538Chakmaru5491Russianchr2005Cherokeeen5479Englishel5907Greekja377Japaneseen979Englishes1513Spanishja3058Japaneseja5277Japaneseel4393Greeken4269Englishccp1029Chakmaen7068Englishfr6219Frenchru7928Russianth2431Thaith6440Thairu4298Russianiu311 Inuktitutel5253Greeksr8004Serbianeo6119 Esperantozh6987Chineseen7486Englishth1026Thaibn3119Banglaccp2984Chakmaar1019Arabicel4760Greekiu5716 Inuktitutbn3390Banglaes6295Spanishja2Japanesear5274Arabicja7053Japaneseru1980Russiantr5437Turkisheo5160 Esperantoiu7410 Inuktituteo4068 Esperantoeo1594 Esperantoen4257Englishiu5925 Inuktituten8119Englishbn7638Banglaccp328Chakmaiu2886 Inuktituten2954Englishru1186Russianja2567Japanesechr4301Cherokeeccp1420Chakmael6987Greeken6679Englishtr7177Turkishiu988 Inuktitutru3346Russianzh8160Chineseel2247Greekel990Greekiu281 Inuktitutiu4247 Inuktitutsr2094Serbianccp3719Chakmath4325Thaitr5063Turkishru2090Russianccp6672Chakmaccp4194Chakmath7768Thaisr6473Serbiantr1902Turkishccp1874Chakmaes4535Spanishbn5434Banglatr150Turkishbn6906Banglaccp4204Chakmael351Greekar7947Arabices1784Spanishel2695Greekchr3274Cherokeezh956Chinesear5985Arabicfr3046Frenchsr4441Serbianchr5775Cherokeeja5520Japanesear4958Arabicen5995Englishja6815Japanesesr2443Serbianccp6494Chakmaja7920Japanesear3068Arabicar355Arabictr8147Turkishja4259Japaneseth3656Thaisr2347Serbianja131Japaneseja274Japaneseja1118Japaneseru4545Russianzh4415Chineseth9Thaifr8162Frencheo7971 Esperantoja3547Japanesetr172Turkishiu3202 Inuktitutfr4388Frenchru6981Russianzh5294Chineseccp3855Chakmath3991Thaizh1284Chineseiu6537 Inuktitutru3386Russianeo4878 Esperantotr7136Turkishbn2282Banglaen2358Englishzh931Chinesefr6525Frenchchr5935Cherokeeen6553Englisheo159 Esperantoccp4321Chakmachr1401Cherokeeru340Russiantr276Turkishfr5861Frenchzh1444Chinesetr2047Turkishsr5606Serbianar5916Arabiczh6521Chinesees7450Spanishja3589Japanesechr4675Cherokeesr665Serbiansr5202Serbianel3513Greeken7708Englishzh6900Chineseccp2728Chakmath6213Thaiel3412Greektr5398Turkishja5480Japaneseeo4318 Esperantoja2385Japanesetr5166Turkishchr1171Cherokeear4925Arabiceo5805 Esperantoiu3735 Inuktitutel634Greeken1413Englishzh3747Chineseja8042Japaneseel3904Greekzh3292Chinesechr2629Cherokeear1703Arabicar5647Arabicar3690Arabicchr6951Cherokeesr461Serbianth2836Thaien7603Englishccp5186Chakmaar5398Arabicja3299Japaneseccp6038Chakmatr706Turkishth1673Thaitr1692Turkishbn118Banglaru6722Russiansr6113Serbianbn6367Banglabn618Banglaeo3129 Esperantofr6185Frenchth6006Thaisr6877Serbianchr6256Cherokeebn5485Banglaeo7465 Esperantoen6362Englishbn12Banglaar3038Arabiceo734 Esperantoes7976Spanishtr3997Turkishth3209Thaija4105Japanesear2947Arabicja7640Japanesezh6018Chineseru3163Russianja4342Japaneseru4026Russianru7040Russianel3703Greeken2968Englishru3704Russianen4281Englishccp3655Chakmachr6778Cherokeees5675Spanishth2190Thaizh130Chinesear787Arabicccp2666Chakmachr5676Cherokeezh1916Chinesear4791Arabiczh3562Chinesefr2234Frencheo7567 Esperantofr959Frenchchr2382Cherokeeth2473Thaizh6536Chinesebn5481Banglasr2263Serbianen5680Englisheo662 Esperantochr5480Cherokeeel7067Greekccp2943Chakmasr7715Serbianru6030Russianru3013Russianen7055Englishru4416Russiansr5824Serbianiu7923 Inuktitutth6963Thaiccp7768Chakmaen7864Englishja4036Japanesezh3387Chineseeo2195 Esperantofr7036Frenches470Spanishccp1055Chakmaes2999Spanishccp4498Chakmaar7751Arabicen6618Englishth7916Thaizh6812Chineseru2764Russianfr7258Frenchchr2878Cherokeear7127Arabicsr4957Serbianth8172Thaiccp1051Chakmazh4899Chinesebn1348Banglaen6797Englishccp2372Chakmaeo694 Esperantoja7878Japaneseeo1993 Esperantoccp1314Chakmaen5441Englisheo1340 Esperantoja1822Japanesezh5039Chinesezh5852Chineseeo2070 Esperantoccp4400Chakmaes8018Spanishar6558Arabiceo6376 Esperantoes2374Spanishchr2622Cherokeebn653Banglaccp4187Chakmaen3066Englisheo1524 Esperantoiu7244 Inuktitutchr5202Cherokeeen7808Englishes7903Spanishja7385Japanesebn1023Banglaes4063Spanishfr478Frenchru446Russiantr4128Turkishzh1497Chinesezh7478Chineseen7847Englishiu6068 Inuktitutbn2547Banglachr3553Cherokeear3804Arabicfr7781Frenchel5847Greekeo4692 Esperantoth2608Thaiiu6502 Inuktituttr614Turkishccp7118Chakmatr7609Turkishbn2074Banglaar1070Arabiczh6142Chineseiu607 Inuktitutzh1881Chineseja2658Japanesetr6755Turkishth3446Thaisr361Serbianzh1481Chineseiu1292 Inuktitutja7203Japaneseru5209Russiansr5698Serbianzh7620Chineseiu2643 Inuktituttr3200Turkishja6989Japanesezh4953Chinesetr6792Turkishel1428Greekes892Spanishsr1122Serbianja6024Japanesetr6915Turkishccp3106Chakmaen5558Englishzh7497Chinesezh7708Chinesebn3210Banglaes157Spanishel2253Greekes313Spanishfr6326Frenchchr7808Cherokeeeo7637 Esperantoru1157Russiantr1811Turkishfr4698Frenchzh6766Chinesebn6368Banglaeo3003 Esperantoiu4483 Inuktitutja4664Japaneseel6678Greekar6721Arabicchr5065Cherokeesr1247Serbianen738Englisheo800 Esperantoja2028Japanesezh4363Chinesezh6899Chineseja7019Japaneseccp5091Chakmaja1604Japaneseth3567Thaichr6885Cherokeeiu4238 Inuktitutth144Thaitr627Turkishel7946Greekiu3927 Inuktitutja471Japaneseeo4485 Esperantoiu4902 Inuktitutiu7498 Inuktitutth1308Thaitr7704Turkishar65Arabictr283Turkishiu8024 Inuktitutar909Arabiciu6120 Inuktitutbn3088Banglaes601Spanishru7130Russianth5078Thairu7978Russianiu1340 Inuktituten5731Englishfr312Frenchsr6323Serbiantr8143Turkishel7824Greeken1223Englishen2516Englishfr3509Frenchiu4129 Inuktitutsr5364Serbiansr1822Serbianchr3651Cherokeesr7539Serbianth4889Thaisr2681Serbianiu2320 Inuktitutel4292Greekru4910Russianbn6888Banglaes1899Spanishes4868Spanishes2249Spanishchr3273Cherokeeiu7033 Inuktitutchr2822Cherokeeiu4971 Inuktituttr540Turkishtr6364Turkishth1408Thaien1729Englishja5170Japaneseen4795Englisheo4337 Esperantofr2594Frenchbn5864Banglael1478Greeksr2690Serbianru2737Russianeo968 Esperantoru8007Russianbn6395Banglaccp5307Chakmaeo3998 Esperantoiu5482 Inuktitutth8120Thaiccp2312Chakmaes940Spanishth112Thaisr2641Serbianzh1290Chineseccp3975Chakmazh3742Chinesees3268Spanishbn2853Banglasr724Serbiantr6009Turkishtr605Turkishar4788Arabicsr4360Serbiansr2294Serbiantr5329Turkishsr1096Serbianja4811Japaneseeo1972 Esperantochr7626Cherokeefr7275Frenchfr8097Frenches1035Spanishiu4144 Inuktituttr3939Turkishchr5431Cherokeeccp1545Chakmafr7013Frenchchr1940Cherokeefr264Frenchar3022Arabicja6479Japanesesr6731Serbianel4207Greekel5285Greekfr5556Frenchen4634Englishfr4931Frenchen7917Englishbn3758Banglaiu4597 Inuktitutchr6967Cherokeeel2209Greekiu5642 Inuktituten4093Englishar5846Arabiceo6635 Esperantochr142Cherokeeja4920Japanesear862Arabicfr832Frenchen2896Englishiu7236 Inuktitutsr4125Serbianen6373Englishth6543Thaiel740Greektr3807Turkishru974Russianeo3540 Esperantoar8114Arabices3141Spanishchr6390Cherokeeel7640Greektr5723Turkishth4496Thairu4865Russianfr2221Frenchfr3058Frenchbn6661Banglachr3029Cherokeeen7125Englishiu2082 Inuktitutru3161Russianar3017Arabiczh3071Chineseeo5577 Esperantoru4204Russianes2422Spanishchr18Cherokeeccp5938Chakmaccp3176Chakmaeo5414 Esperantoiu5943 Inuktitutiu215 Inuktituten3657Englisheo1795 Esperantofr149Frenchiu6965 Inuktitutsr4289Serbianth6530Thaith179Thaith6230Thaiiu6800 Inuktitutzh5748Chineseru4450Russianes872Spanishiu2958 Inuktitutru517Russianth4670Thaiiu6266 Inuktitutth5393Thaija8012Japanesesr2437Serbiantr26Turkishth5737Thaibn6692Banglazh5166Chineseeo6943 Esperantoen290Englishar3885Arabicchr7387Cherokeeiu1572 Inuktitutru1383Russiansr6314Serbianel3273Greektr5619Turkishbn7396Banglaen2124Englishiu7035 Inuktitutchr6276Cherokeefr3463Frenchsr5647Serbianel5644Greekeo2929 Esperantoeo886 Esperantoiu5992 Inuktitutchr4059Cherokeezh4590Chineseiu3257 Inuktituten6210Englishbn1129Banglaen2941Englishth6388Thaith6768Thaizh1286Chinesear2760Arabiceo4910 Esperantozh1192Chinesebn3944Banglaes5497Spanishiu1863 Inuktitutes6381Spanishth3376Thaifr3658Frenchel6170Greekja3139Japaneseen5577Englishchr3929Cherokeeel6357Greekth6438Thaizh6850Chineseja1708Japanesezh143Chinesezh6524Chineseja1290Japanesees3095Spanishen1195Englishen4293Englishru3105Russianes7073Spanishiu1230 Inuktitutth4433Thaiel7069Greekccp2734Chakmaru3550Russianru8042Russianth2528Thaies3959Spanishru7780Russianfr5234Frenchtr318Turkishel6997Greektr4069Turkishth7021Thaitr2131Turkishtr7007Turkishth5443Thaieo7115 Esperantoru3426Russianbn4689Banglael298Greekeo2920 Esperantoes5867Spanishar7235Arabicth4628Thaifr3348Frenchru4181Russianja7129Japaneseiu7266 Inuktitutccp4049Chakmaiu6819 Inuktitutfr7735Frenchar8032Arabicsr1987Serbiantr8051Turkishth2943Thaisr3812Serbianes7119Spanishfr3258Frenchbn4765Banglaccp7914Chakmaru5912Russianes3336Spanishchr2067Cherokeeccp2509Chakmath5291Thaichr6290Cherokeear3688Arabicel4524Greeksr4869Serbianccp5383Chakmabn2601Banglatr7063Turkishfr601Frenchiu2265 Inuktitutccp7134Chakmaeo5922 Esperantoru4171Russiansr2279Serbianbn6377Banglaes3391Spanishar2593Arabicru6473Russianiu4032 Inuktitutes269Spanishiu186 Inuktitutzh4994Chineseen1787Englishes6604Spanishja5466Japaneseel4886Greekzh2929Chinesetr5527Turkisheo3123 Esperantochr4657Cherokeeel3942Greekel6410Greekfr7218Frenchzh5903Chinesechr6993Cherokeeeo864 Esperantoru4081Russianth8160Thairu7434Russianbn3924Banglael2748Greekeo297 Esperantoar5175Arabicja5926Japaneseiu6979 Inuktitutes4312Spanishru262Russianar2744Arabicsr5148Serbiantr7925Turkishzh4089Chineseiu941 Inuktitutzh7287Chineseel6Greeken4829Englisheo4179 Esperantoccp6623Chakmaru3246Russianru2228Russianbn1397Banglabn1843Banglaja3631Japaneseiu92 Inuktitutru1062Russianfr1980Frenchfr6253Frenchth2153Thaibn2263Banglaiu3561 Inuktitutzh2708Chineseeo4138 Esperantoar1678Arabicbn4645Banglafr887Frenchru1779Russiansr1452Serbiantr5118Turkishes2142Spanishja5790Japaneseth1695Thaiel7623Greekar1401Arabicar913Arabicfr182Frenchru7383Russianzh4438Chineseiu3616 Inuktitutiu3790 Inuktitutsr3714Serbianru5262Russiansr6046Serbianen4386Englishen5418Englishsr3890Serbianja3180Japanesebn6202Banglafr4956Frenchsr6998Serbianru255Russianzh1607Chinesechr5669Cherokeezh1114Chinesear653Arabicchr3009Cherokeechr874Cherokeeiu1690 Inuktituttr1568Turkishes6202Spanishja5124Japanesebn1668Banglaar2598Arabicsr7518Serbianchr7526Cherokeefr4875Frenchiu1581 Inuktituteo5402 Esperantosr5521Serbianth3239Thaiiu5463 Inuktitutccp5581Chakmaen601Englishfr762Frenchen4299Englishbn204Banglatr5207Turkishen6837Englishes3177Spanishfr8019Frenchzh1465Chinesees6091Spanishen4507Englishar5530Arabicel5349Greekth5493Thaien1772Englishar2848Arabicchr10Cherokeeel6550Greekchr7701Cherokeebn4774Banglaru1016Russianth5769Thaibn3880Banglafr6209Frenchsr4377Serbianen5567Englishiu2549 Inuktitutth3246Thaizh2625Chineseen2514Englishen3539Englishes7928Spanishsr4004Serbianja2866Japanesefr4113Frencheo3136 Esperantoiu455 Inuktitutccp560Chakmath8070Thaizh2230Chineseru3188Russianja6976Japanesesr3954Serbianth1269Thaien113Englishar3816Arabicen3872Englisheo4677 Esperantozh2152Chinesezh5501Chineseccp1715Chakmaru8154Russianel487Greeken4232Englishja1475Japaneseru394Russianar8131Arabiciu7829 Inuktitutru5447Russianfr7059Frenchtr4414Turkishzh2800Chinesear3802Arabicel4962Greekeo5594 Esperantoen6697Englishccp7662Chakmaen5997Englishes6891Spanishen2698Englishsr4123Serbianes8163Spanishth2719Thaibn1403Banglabn54Banglaes1510Spanishel7365Greekfr5863Frenchchr1115Cherokeear4667Arabicchr5674Cherokeeen5146Englishfr7415Frenchja2280Japaneseja1756Japanesear2637Arabicth4081Thaifr6755Frenchzh6364Chineseel3062Greekbn7732Banglaja124Japaneseja2894Japaneseiu5981 Inuktitutccp3642Chakmaar2570Arabiciu2399 Inuktitutja3275Japanesetr6672Turkishchr7507Cherokeees3497Spanishar6130Arabicru5907Russiansr3050Serbianja4203Japanesezh7361Chinesefr7261Frenchja2341Japanesear4432Arabicsr2896Serbianeo1 Esperantoja7885Japanesear2282Arabicfr5494Frenchbn5913Banglath991Thairu3142Russianru5242Russianccp4662Chakmaen7850Englishja8122Japaneseel479Greekar6129Arabictr2109Turkishel3957Greekth4486Thaies7070Spanishzh6010Chinesear1674Arabiciu4693 Inuktitutzh1813Chinesebn5945Banglaes2521Spanishar2490Arabicccp3397Chakmaru6335Russiansr2220Serbiansr2910Serbianzh5286Chineseel6039Greekzh3499Chineseen2288Englishtr5663Turkishzh7934Chineseel7553Greekru5986Russianzh4272Chineseel4635Greekchr2063Cherokeeel888Greeken2367Englishar1198Arabicfr5335Frenchiu2492 Inuktituttr6058Turkishiu1224 Inuktitutccp5982Chakmazh5905Chinesetr1966Turkishja4251Japanesetr1627Turkishbn7883Banglaiu6756 Inuktitutes677Spanishen3506Englishen5642Englishar2799Arabiciu1333 Inuktitutth5459Thaitr7227Turkishfr7172Frenchzh4152Chineseeo48 Esperantochr1216Cherokeefr2307Frenchru4729Russianar3958Arabicth3254Thaiccp4306Chakmasr2281Serbianchr433Cherokeechr6938Cherokeeiu2918 Inuktitutth2410Thaieo7502 Esperantobn5997Banglatr5842Turkishth5399Thaija4717Japanesebn5459Banglasr624Serbianja7620Japanesebn214Banglaar2249Arabiczh1260Chineseccp1782Chakmasr6291Serbianja1847Japanesezh2702Chinesechr6875Cherokeeen7810Englishsr6337Serbianiu6779 Inuktituttr541Turkishchr1448Cherokeear343Arabicar3286Arabicth6623Thaiel5803Greekel4897Greekeo3227 Esperantoiu1927 Inuktitutru5469Russianfr4888Frenchiu3782 Inuktitutchr684Cherokeebn7390Banglaja5263Japaneseen7456Englishar3924Arabicfr1186Frenchchr2623Cherokeechr2810Cherokeeel4797Greekccp7329Chakmaes876Spanishel4412Greekfr5817Frenchen2491Englishel1243Greeken3016Englisheo7325 Esperantobn4808Banglachr197Cherokeeja1655Japaneseja5306Japaneseja7074Japaneseccp2786Chakmafr5850Frenchja8102Japaneseru1731Russianru2952Russiansr1997Serbianiu2287 Inuktitutiu4803 Inuktitutru5996Russianen4919Englishccp8181Chakmaccp678Chakmasr975Serbianchr2399Cherokeear1816Arabicchr2460Cherokeees5578Spanishsr598Serbianru3729Russianja2753Japanesetr7838Turkishel2236Greeken532Englishar5456Arabiciu2181 Inuktitutth540Thaitr1297Turkisheo4007 Esperantoru4239Russiansr3043Serbianth5936Thairu997Russiansr3195Serbianar1761Arabicfr2697Frenchel275Greektr7840Turkishsr647Serbianar1249Arabicfr6862Frenchzh6635Chineseja414Japaneseccp1753Chakmael897Greekes4360Spanishes7186Spanishfr788Frenchja1818Japaneseja6623Japanesesr6497Serbianth4321Thaizh4863Chinesesr2922Serbianel4118Greekbn649Banglaen966Englishzh1283Chinesezh6449Chinesechr4992Cherokeeeo2072 Esperantoth2692Thaifr3644Frenchbn4136Banglachr8148Cherokeetr7975Turkishja7001Japaneseccp447Chakmatr7040Turkishccp326Chakmath982Thaiccp3288Chakmael1969Greekccp5121Chakmaen7891Englishel1420Greekes4564Spanishja308Japanesetr4043Turkishsr197Serbianth1145Thaiccp4349Chakmachr2608Cherokeebn6705Banglatr441Turkishel2015Greekja6648Japaneseen5196Englishen7534Englishiu6135 Inuktitutccp3913Chakmaen7980Englishfr7897Frenchbn6234Banglachr4383Cherokeeja5969Japaneseel395Greekccp4257Chakmaccp2931Chakmasr3441Serbianzh4606Chinesechr1789Cherokeeiu2460 Inuktitutth4786Thaitr3942Turkishja2988Japaneseen6135Englishsr5685Serbianbn1079Banglael732Greektr3530Turkishru1161Russianja2844Japaneseth5629Thaith3770Thaiiu2224 Inuktitutzh793Chinesees293Spanishzh38Chinesechr7106Cherokeeen4389Englishru7228Russiansr6759Serbianes7130Spanishiu6405 Inuktitutar4082Arabiceo7558 Esperantosr1295Serbianzh7454Chineseeo6639 Esperantoru4572Russianeo4279 Esperantoel4663Greekchr2776Cherokeeccp2073Chakmaeo818 Esperantotr5084Turkishzh5522Chineseth2712Thaiel1689Greekja7874Japanesees7169Spanishth5912Thaizh3062Chineseccp3493Chakmachr3543Cherokeeth2446Thaisr7162Serbianchr1630Cherokeetr3319Turkishen1442Englisheo2761 Esperantoja3472Japanesetr7014Turkishiu3110 Inuktitutar7573Arabiciu6634 Inuktitutbn2023Banglazh4776Chineseen1220Englishiu6998 Inuktitutzh7294Chinesear4209Arabicth462Thaith6658Thaiar4721Arabicar2079Arabiciu1890 Inuktitutfr7292Frenchar7503Arabicsr1668Serbianth89Thaiccp50Chakmaja6080Japaneseeo3065 Esperantoes6933Spanishen4199Englishzh2306Chinesees1648Spanishes6139Spanishiu7845 Inuktitutccp7668Chakmabn4668Banglachr6252Cherokeeel232Greekel5955Greekar5397Arabicen622Englishsr1781Serbiantr1750Turkishzh5158Chinesefr2123Frenches644Spanishel6374Greekzh870Chinesebn7680Banglazh6403Chineseccp1487Chakmabn6772Banglael153Greekar6014Arabicccp731Chakmaiu8034 Inuktitutccp6040Chakmasr7514Serbiansr1282Serbiantr1054Turkishccp8004Chakmafr8164Frenchzh4822Chineseth2503Thairu1703Russianru7409Russiantr7074Turkishzh2096Chineseja5048Japaneseiu1935 Inuktitutar2594Arabicbn7881Banglath5647Thaizh5071Chinesechr1029Cherokeees4649Spanishen3928Englishiu3644 Inuktitutes5407Spanishth7693Thaifr3313Frenchchr3747Cherokeechr4871Cherokeeel7792Greektr1562Turkishzh6213Chinesesr1058Serbiantr8128Turkishel5460Greekru5658Russianbn8096Banglael4830Greekar2430Arabicja4746Japaneseth2657Thaiar4486Arabicfr941Frenchel7747Greekbn3483Banglaja3767Japanesefr7313Frencheo8137 Esperantoel5211Greekiu5254 Inuktituteo3053 Esperantoar1948Arabicja6781Japanesetr4855Turkishel7035Greekeo4222 Esperantosr4158Serbianth1042Thaifr2995Frenchfr4454Frenchja5312Japanesees169Spanishfr6603Frenchccp2040Chakmaeo6323 Esperantoar3831Arabiceo1688 Esperantoes3529Spanishchr7388Cherokeeel3522Greekel8149Greekth2449Thaieo6768 Esperantozh1809Chinesebn3271Banglaen2557Englishtr851Turkishbn5558Banglaiu744 Inuktituten5915Englishsr352Serbianiu8092 Inuktitutes3465Spanishes108Spanishchr5969Cherokeees4344Spanishen1858Englishiu1630 Inuktitutel618Greekeo6056 Esperantoja4628Japaneseth7747Thaiccp182Chakmaar1503Arabicja7394Japanesetr732Turkishzh6713Chinesezh2168Chineseen8169Englisheo257 Esperantosr815Serbianiu1682 Inuktitutar5170Arabictr2526Turkishsr3574Serbianel3954Greekja4567Japanesechr3880Cherokeeth4217Thaitr1040Turkisheo7250 Esperantosr5204Serbianiu4947 Inuktitutsr5061Serbianar5871Arabicchr536Cherokeeru5805Russianja1712Japanesear3396Arabicel7798Greekel4397Greekbn4634Banglath2885Thaien7616Englishzh885Chinesetr3574Turkishru228Russianen2390Englishel1291Greekar181Arabicen4058Englishel5335Greeken5775Englishchr1900Cherokeesr1235Serbiantr4749Turkishiu5627 Inuktitutru2663Russianru5342Russianfr1224Frenchzh2849Chineseccp2657Chakmaja165Japaneseccp3526Chakmabn5839Banglaar3212Arabicel2860Greekel3445Greekccp2071Chakmaen2884Englishsr5478Serbianccp6091Chakmasr5510Serbiantr3751Turkishfr1108Frenchja8086Japanesetr1712Turkisheo3627 Esperantoar95Arabices461Spanishiu3419 Inuktitutbn8060Banglaja3434Japanesechr537Cherokeeccp1973Chakmaeo7027 Esperantoja3094Japanesesr3063Serbianchr4233Cherokeesr3798Serbianccp6304Chakmachr112Cherokeetr1343Turkishth1545Thaitr7497Turkishfr3399Frenchen6163Englisheo7410 Esperantoth2666Thaibn862Banglael2084Greekiu1606 Inuktitutru73Russianbn907Banglaja6283Japaneseth3004Thaies1386Spanishen6076Englishru5620Russianchr811Cherokeebn1586Banglabn296Banglasr5232Serbianccp4335Chakmasr1945Serbianzh2171Chineseru7030Russianel1733Greekbn2698Banglath2051Thaichr7056Cherokeeja788Japaneseja7307Japaneseth2208Thaiiu2033 Inuktitutfr7099Frenchar6806Arabicar5970Arabicccp7399Chakmaiu6629 Inuktitutsr1034Serbianccp5476Chakmachr6888Cherokeear1794Arabicen6289Englishtr6898Turkishfr7071Frenchchr4167Cherokeeccp1302Chakmazh3608Chineseen1151Englishchr3555Cherokeeth3751Thaifr6343Frenchbn6544Banglatr4655Turkishsr2432Serbianar953Arabicchr4848Cherokeeccp3137Chakmaen6152Englishru2467Russianth3292Thaija3702Japanesezh3002Chinesechr3777Cherokeear7717Arabiczh6830Chineseel2266Greekel1100Greekccp765Chakmaes3697Spanishbn3408Banglabn5402Banglaiu3695 Inuktitutth4822Thaies4028Spanishja513Japanesezh3707Chinesees6292Spanishiu1867 Inuktitutth2435Thaibn2490Banglaccp3716Chakmaccp3995Chakmachr7259Cherokeezh936Chineseru4229Russiansr736Serbianen3337Englishtr1331Turkishes529Spanishen1930Englishfr3743Frenchbn1309Banglaru1867Russianar6937Arabicsr6228Serbianen2650Englishel1918Greekru5812Russianth6753Thaien195Englishes7595Spanishbn2207Banglaru1369Russianeo6346 Esperantoja1701Japanesetr219Turkishja7201Japanesees446Spanishzh706Chinesechr356Cherokeetr7895Turkishja2179Japanesechr1783Cherokeeeo5374 Esperantozh3167Chineseja338Japaneseel6228Greekiu3058 Inuktitutbn3504Banglaccp5711Chakmaiu2675 Inuktituttr5300Turkishar1430Arabicsr3344Serbianth7698Thaizh2357Chinesees5191Spanishchr6513Cherokeeeo6844 Esperantozh3423Chineseja7182Japanesebn3952Banglaru6901Russianru7844Russiansr5471Serbianccp1271Chakmazh5724Chinesesr4719Serbianja7951Japanesechr3894Cherokeeen7899Englishfr1859Frenchchr5874Cherokeeja4311Japaneseel2061Greekbn5770Banglaccp6729Chakmath442Thaith6735Thaitr3258Turkisheo690 Esperantofr2814Frenchen7248Englishen7178Englishen7497Englishes3710Spanishel5327Greekeo7197 Esperantoen2903Englishtr6523Turkishth7095Thaiel1995Greekiu7346 Inuktitutes3315Spanishja7323Japanesefr2658Frenchchr8060Cherokeeja1445Japanesear2528Arabicth1429Thaitr5744Turkishsr4029Serbianar1821Arabicar6729Arabicru7213Russianbn4398Banglazh2178Chineseen7522Englishar3487Arabiczh2853Chinesechr5031Cherokeechr7550Cherokeeja5550Japaneseiu5564 Inuktitutth5165Thaija7669Japaneseiu6392 Inuktitutja94Japaneseth1259Thaija7145Japanesetr4682Turkishar308Arabicfr449Frenchel4136Greekchr3842Cherokeebn8019Banglael8122Greekccp6422Chakmael6672Greekchr1053Cherokeebn5213Banglafr7869Frenchth1997Thaifr7467Frenchsr2805Serbianbn7565Banglaru3377Russianen5535Englishja359Japaneseen1078Englishja3666Japaneseru3594Russianccp7496Chakmaiu2752 Inuktitutar3596Arabicen632Englisheo6711 Esperantoth1873Thaichr1516Cherokeees322Spanishccp7950Chakmazh4719Chinesefr6466Frenchru7687Russianru2694Russianen404Englishfr7150Frenchar5580Arabicth4761Thaitr6416Turkishen7997Englishen6524Englishen7035Englishes6509Spanishar5318Arabiceo6452 Esperantoccp305Chakmaja6817Japaneseru4098Russianth6627Thaitr651Turkishbn1492Banglachr567Cherokeefr6627Frenchtr2667Turkishchr1441Cherokeefr7379Frenchja5521Japaneseru7717Russianen5870Englishsr7390Serbianbn3205Banglaeo1764 Esperantoes6668Spanishel5731Greekzh7203Chinesezh6976Chineseiu5588 Inuktituteo6130 Esperantotr2393Turkishru4118Russianja3565Japaneseel1871Greekth3765Thaija1997Japanesezh4746Chineseen5717Englishiu4540 Inuktituteo1651 Esperantoth5107Thaiccp2574Chakmaiu1573 Inuktituttr1587Turkishel4483Greektr7389Turkishfr6491Frenchth6629Thaiiu1954 Inuktitutzh2915Chineseccp5460Chakmachr4943Cherokeear4253Arabicchr7525Cherokeeel4242Greekth938Thaiar1225Arabicel4075Greekru703Russianzh2463Chinesezh4932Chineseccp2495Chakmaen6995Englishth5301Thaien1417Englishes1731Spanishes6248Spanishfr2175Frenchchr1640Cherokeeru7005Russianchr539Cherokeesr2182Serbianru7714Russianja4657Japanesebn2974Banglaja5136Japaneseel5893Greekzh5136Chinesear1092Arabicccp7105Chakmaar4218Arabicccp4703Chakmaen2356Englishes3712Spanishen4665Englishja4917Japaneseel155Greektr2211Turkishzh2454Chineseeo1198 Esperantoccp3009Chakmath5665Thaies6251Spanishccp4627Chakmasr2687Serbianfr7040Frenchiu3775 Inuktitutfr4804Frenchtr525Turkishtr4603Turkishru7486Russianth7593Thaitr3059Turkishes6063Spanishja1017Japanesesr7649Serbianeo5911 Esperantofr3344Frencheo2524 Esperantoes6221Spanishiu5947 Inuktitutja585Japanesesr2996Serbianes6669Spanishfr7170Frenchchr2561Cherokeesr339Serbianen2140Englishth1563Thairu4760Russianeo4945 Esperantoel7740Greekiu7911 Inuktitutzh3824Chinesefr1068Frenches1343Spanishen292Englishzh639Chineseccp2082Chakmachr2562Cherokeeru1844Russianbn7442Banglachr5998Cherokeeru8006Russianth1730Thaies5725Spanishzh5034Chinesezh6123Chinesezh4464Chineseccp4129Chakmasr6461Serbianccp1417Chakmaru1208Russianja3321Japaneseccp1434Chakmasr5672Serbianel4862Greekchr2391Cherokeeiu715 Inuktitutja6668Japanesear6378Arabicccp308Chakmachr6167Cherokeetr725Turkishel8016Greekth3045Thaitr6498Turkishfr652Frenches423Spanishel7309Greekel5752Greekes7250Spanishth779Thaiar7964Arabicru3353Russianeo2541 Esperantobn6033Banglath531Thaitr6513Turkishel8188Greekzh8188Chineseru5207Russianccp481Chakmachr1086Cherokeechr7621Cherokeear6083Arabicen4721Englishchr815Cherokeebn4442Banglaeo6342 Esperantoiu4670 Inuktitutth6018Thaiiu5422 Inuktitutccp933Chakmaiu6838 Inuktituteo6465 Esperantoen3383Englishzh1587Chinesees365Spanishru945Russiansr6471Serbianfr224Frenchfr3244Frenchsr1184Serbianja1784Japaneseen5566Englishtr2283Turkishzh5933Chinesechr4583Cherokeetr3151Turkishru7834Russianel6188Greekja3428Japaneseel249Greekiu3562 Inuktituttr4760Turkishbn6315Banglachr6042Cherokeees1102Spanisheo6556 Esperantoen4292Englishsr1858Serbianchr2246Cherokeeeo5486 Esperantoel494Greekja1364Japaneseth3360Thaieo1717 Esperantoes2841Spanishja8179Japanesezh2553Chineseeo1427 Esperantobn8183Banglaar1286Arabiceo5379 Esperantoeo1180 Esperantoja657Japaneseen5077Englisheo1804 Esperantoth1480Thaiel6055Greekzh2437Chinesezh7523Chinesees204Spanishccp1553Chakmath4668Thaieo6328 Esperantotr1428Turkishbn1659Banglachr3930Cherokeeru845Russianccp8117Chakmaiu2606 Inuktitutiu6679 Inuktitutel2949Greekbn6600Banglabn345Banglafr2001Frenchar4750Arabictr1619Turkishchr665Cherokeezh2685Chinesebn5735Banglath7502Thaies5403Spanishbn1442Banglaes2616Spanishfr2414Frenchru5523Russianen5239Englishfr162Frenchfr507Frenchccp2510Chakmaes6913Spanishel1692Greekru6862Russiantr255Turkishel5270Greektr6329Turkishen4875Englishsr6612Serbiansr7464Serbianel3284Greekth6527Thaisr897Serbianar8006Arabiciu4970 Inuktitutzh1369Chinesebn705Banglaru2373Russianccp5054Chakmaeo6090 Esperantoar359Arabices315Spanishel6143Greekiu5326 Inuktituttr5827Turkishfr3937Frenchbn7817Banglatr5646Turkishsr3141Serbianth4644Thaifr1949Frenchja2759Japaneseth5269Thaisr1404Serbianbn7505Banglachr805Cherokeeen6960Englishen7451Englishchr4909Cherokeeen8189Englishfr3057Frenches3161Spanishel334Greekel954Greekes5367Spanishth5204Thaith5261Thaieo7456 Esperantoen6874Englishiu3854 Inuktituteo7832 Esperantoar3257Arabices5741Spanishfr3259Frenchiu4600 Inuktitutiu5067 Inuktituttr5754Turkishccp5333Chakmaru2463Russiansr6567Serbianccp568Chakmaccp5164Chakmabn7150Banglabn8069Banglafr2714Frencheo6515 Esperantoes5885Spanishja1666Japaneseth288Thaiccp4661Chakmasr2580Serbianar4320Arabicel2628Greekccp6256Chakmaar6612Arabicth5909Thaiel1370Greekel723Greekiu5024 Inuktituttr4254Turkishen7643Englishbn7864Banglabn3339Banglaar405Arabicsr5063Serbianen5808Englishfr3413Frenchiu4197 Inuktitutru7652Russianen500Englishbn1128Banglachr3048Cherokeeth6785Thaitr7387Turkishsr3478Serbianth1271Thaiar1739Arabicja3663Japanesechr5986Cherokeezh3017Chineseel1198Greekiu4283 Inuktitutiu6783 Inuktitutth2539Thaien5974Englishtr4706Turkisheo7543 Esperantoar1481Arabicbn5433Banglafr2077Frenchchr4552Cherokeechr3114Cherokeeel1382Greekchr1263Cherokeeeo5614 Esperantoccp4867Chakmath1159Thaies3910Spanishfr6145Frenchccp1252Chakmatr4508Turkishar1404Arabicel5624Greeken4191Englishfr5350Frenchth5762Thaiccp4598Chakmazh4133Chinesesr5632Serbiantr7261Turkishth343Thaien1362Englishtr526Turkishchr1998Cherokeechr2844Cherokeesr3249Serbianes6577Spanishar4603Arabicbn4491Banglaen1344Englishru6109Russianar5882Arabicja2989Japaneseja5959Japaneseeo1752 Esperantoeo4224 Esperantoja4241Japanesetr2520Turkishel697Greekru939Russianes2658Spanishfr5746Frenchja1673Japaneseru1515Russianfr2807Frenchzh5107Chinesebn1793Banglaru8017Russianbn3105Banglaccp7322Chakmatr1832Turkishchr5210Cherokeeiu5967 Inuktitutar4205Arabictr7053Turkishtr2060Turkishar1329Arabicsr4971Serbianar3015Arabicru8003Russianar1963Arabictr6490Turkishchr221Cherokeeru5238Russianiu5939 Inuktituten5541Englishru114Russianth3996Thaieo3997 Esperantochr3663Cherokeezh4923Chinesezh5390Chineseth2471Thaiar4759Arabicel1419Greeksr5427Serbianen6200Englishchr4150Cherokeees6327Spanishel391Greekeo989 Esperantofr7460Frenchen4910Englisheo4488 Esperantoru5271Russianru8188Russianbn2578Banglaen3852Englishzh3715Chinesees4575Spanishiu1703 Inuktitutru5958Russianth5672Thaifr3334Frenchel7579Greekfr2429Frenchja7554Japaneseru414Russianja3425Japanesear5379Arabicel3645Greekeo2903 Esperantosr3692Serbianth1584Thaija4479Japaneseth5819Thaija6083Japanesebn6967Banglaccp1584Chakmachr3471Cherokeechr4433Cherokeeth6464Thaitr1982Turkishel5886Greekru183Russianbn6404Banglaen5730Englishen2143Englishccp828Chakmasr5966Serbianel2181Greekja1088Japanesetr5429Turkishen6906Englishchr3455Cherokeefr7892Frenchja4799Japaneseiu3628 Inuktitutru4883Russianfr801Frenchsr6111Serbianzh6597Chineseru5285Russianiu4136 Inuktitutfr6430Frenchccp6131Chakmasr2674Serbiantr7209Turkishth3933Thaiar104Arabicfr3744Frenchtr4269Turkishel980Greekchr3409Cherokeezh3922Chineseru5764Russianccp1153Chakmaja664Japanesesr6116Serbianar5470Arabicbn5695Banglaes2785Spanishtr1771Turkishel5199Greekchr7904Cherokeebn3074Banglaes396Spanishtr5274Turkishbn4410Banglaiu748 Inuktitutccp7994Chakmaar2880Arabicchr5807Cherokeechr3753Cherokeeja3140Japaneseeo6208 Esperantoru4180Russianth4832Thaies3309Spanishel1390Greekel6483Greekiu780 Inuktitutru4415Russianchr783Cherokeeru102Russianar7974Arabicar3138Arabiceo5615 Esperantochr3304Cherokeeru751Russianiu5034 Inuktitutel3171Greekeo6057 Esperantobn4320Banglatr1175Turkishen6926Englishbn6563Banglaes7389Spanishen559Englishsr6240Serbianes5886Spanishbn1556Banglaen79Englishar7971Arabicar3169Arabicel3587Greekth3892Thaifr4302Frenchth6153Thaiccp1471Chakmachr7009Cherokeeccp7153Chakmaen2756Englishth7090Thaifr2805Frenchsr6532Serbianchr7476Cherokeeiu7028 Inuktitutfr6715Frenchfr7771Frenchsr4695Serbiantr4445Turkishes4568Spanisheo6648 Esperantoar2727Arabiceo316 Esperantoccp6335Chakmachr676Cherokeeth268Thaibn4070Banglachr5917Cherokeeen859Englishchr5449Cherokeeeo8133 Esperantoel6776Greekzh7464Chinesezh8167Chineseel4407Greekiu1685 Inuktitutth492Thaichr704Cherokeeeo1702 Esperantosr879Serbiansr2646Serbianzh2266Chineseen3433Englishes4276Spanishen2994Englishfr973Frenchsr5224Serbianar1185Arabicfr870Frencheo744 Esperantoccp5086Chakmaeo2096 Esperantozh1299Chinesechr4771Cherokeeen2257Englishbn1434Banglaar1929Arabicel7205Greekar2008Arabicbn3678Banglaja3439Japaneseru3275Russiansr1642Serbianth7076Thaifr7531Frenchfr8181Frenchsr2463Serbianar260Arabiceo5928 Esperantoen7849Englishru4563Russianth4119Thaiel8130Greeken1667Englisheo4825 Esperantoiu2608 Inuktitutbn1521Banglasr4727Serbianfr5606Frenchsr1840Serbianth131Thaibn6535Banglaar5227Arabicen1952Englishar469Arabicccp6202Chakmaes5090Spanisheo223 Esperantoeo7116 Esperantofr3341Frenchbn4958Banglath1885Thaiel3900Greeken5156Englishen6215Englishel5412Greekth3187Thaisr2874Serbianfr5001Frenchzh2683Chineseccp4570Chakmaja945Japanesebn1970Banglael5560Greekfr1203Frenchccp8131Chakmaja453Japanesebn1850Banglazh7299Chinesesr4931Serbianar4856Arabicsr7434Serbiantr2680Turkishiu6888 Inuktitutbn5679Banglaar5332Arabicel4595Greekel6946Greekeo1505 Esperantofr641Frenchja634Japanesetr2738Turkishiu2414 Inuktitutbn3635Banglaes6791Spanishfr2550Frenchiu6665 Inuktitutiu405 Inuktitutru7109Russianen4448Englishchr7333Cherokeechr1988Cherokeeiu5951 Inuktitutja6764Japaneseru3379Russianru4863Russianel7110Greeken1234Englishja6134Japaneseth5474Thaitr2474Turkishel4099Greekth928Thaieo4588 Esperantoiu1905 Inuktitutfr3308Frenchfr2902Frenchfr7103Frenchfr2183Frenchccp4012Chakmaru2312Russianja241Japaneseccp6620Chakmaen455Englishccp6664Chakmaen4105Englishfr3149Frenchru6096Russianru5791Russianes7586Spanishsr4640Serbianiu4684 Inuktitutes1820Spanishsr5943Serbiansr837Serbianes5089Spanishel2007Greekfr7697Frenchen1175Englisheo2293 Esperantosr987Serbianccp2610Chakmael1227Greekar676Arabicchr535Cherokeechr7234Cherokeees4951Spanishth3997Thaibn2463Banglazh1684Chinesear548Arabiceo2830 Esperantoiu4347 Inuktitutja7670Japanesechr3067Cherokeear2030Arabiceo1932 Esperantozh7873Chineseel1319Greekar5043Arabicccp5344Chakmaen8135Englishchr989Cherokeear228Arabicccp3938Chakmaes2237Spanisheo7423 Esperantoru1198Russianbn916Banglaeo5220 Esperantofr4955Frenchchr1347Cherokeesr4152Serbiansr7221Serbianchr5661Cherokeeja5605Japanesefr5012Frenchja927Japaneseccp3617Chakmath4687Thaiel5809Greekja40Japaneseccp888Chakmaes3554Spanishccp288Chakmabn7821Banglath2085Thaizh3385Chineseel4811Greekth2165Thaieo4851 Esperantotr5804Turkishiu8172 Inuktitutes5102Spanishiu6318 Inuktitutes7464Spanishru5816Russianchr7779Cherokeesr7321Serbianfr888Frenchru5080Russianja7479Japaneseiu1056 Inuktitutsr5853Serbianeo4757 Esperantochr7676Cherokeeccp721Chakmaen5014Englishtr7470Turkishen1734Englishchr7688Cherokeeja4040Japanesetr0Turkishtr3161Turkishth3786Thaies6220Spanishth687Thaiar6333Arabiceo407 Esperantoccp2284Chakmael5322Greekru7310Russiantr7841Turkishel5267Greekfr363Frenchfr2672Frenchiu3245 Inuktituten1586Englishccp3093Chakmaccp6057Chakmath4163Thaiiu5221 Inuktitutfr2023Frenchel2401Greekfr3723Frenchiu4411 Inuktitutru7399Russianzh4120Chineseen3438Englishja7244Japanesetr3115Turkishzh6626Chineseccp1106Chakmaeo1856 Esperantofr3746Frenchru2758Russianja4443Japanesees4382Spanishsr3304Serbianccp5065Chakmaja3324Japaneseel7336Greekeo4112 Esperantotr3755Turkishru843Russianes6558Spanishbn3086Banglachr5217Cherokeeth6907Thaiar6754Arabiciu4705 Inuktituttr6191Turkishja7856Japaneseeo8190 Esperantoeo178 Esperantofr4513Frenchbn2059Banglaes6622Spanishes5308Spanishchr7410Cherokeeja1434Japanesetr5094Turkishtr7474Turkishfr5094Frenchru4025Russianfr6965Frenchtr2549Turkishsr4331Serbianar3125Arabiciu1382 Inuktitutzh2681Chinesebn6716Banglaen1340Englishbn6532Banglaeo3772 Esperantoja4188Japaneseru4802Russianccp8191Chakmaru7540Russianth2245Thaizh6981Chinesezh7549Chineseiu817 Inuktitutzh2531Chinesebn1184Banglabn7849Banglaja7459Japaneseru6971Russianiu4150 Inuktitutel2495Greekfr5688Frenchtr6765Turkishzh1871Chineseeo4916 Esperantoru6353Russianth29Thaiar6309Arabicbn2949Banglaes819Spanishar7277Arabicru352Russianar5093Arabicfr4740Frenchsr6031Serbiansr750Serbiansr7908Serbianen2050Englishes7203Spanishth3196Thaiel3943Greekbn1806Banglaccp3945Chakmaiu6034 Inuktitutsr8135Serbianel2663Greekel563Greeksr4767Serbianfr7810Frenchru6707Russianru3574Russiansr5737Serbiantr6595Turkishsr4666Serbianchr2970Cherokeeeo5661 Esperantoar6015Arabicbn728Banglaeo5408 Esperantoen7811Englishzh4870Chinesebn4924Banglaeo4805 Esperantoja5057Japanesefr3959Frenchen3486Englishccp5634Chakmaeo6165 Esperantosr5082Serbianth2908Thaichr2662Cherokeeel2417Greekth5781Thaija6619Japaneseeo91 Esperantoru139Russianes905Spanishccp3000Chakmaeo6813 Esperantoiu7401 Inuktitutsr7911Serbianbn5587Banglaes4900Spanishru3263Russianru1288Russiantr4418Turkishru6544Russianiu8026 Inuktitutsr5626Serbianiu1664 Inuktitutth5277Thaith6194Thaifr7712Frenches2783Spanishchr398Cherokeeru5047Russianfr2072Frenchth5225Thaiel1298Greekccp7582Chakmafr6771Frenchchr7482Cherokeeel2043Greekzh305Chineseccp5961Chakmaiu550 Inuktitutchr4553Cherokeees1211Spanishfr8099Frenchccp3242Chakmaccp6974Chakmaeo3414 Esperantoja2836Japaneseel2819Greeksr3731Serbiansr4952Serbianiu4298 Inuktitutru7112Russianchr5296Cherokeeen630Englishtr4158Turkishes4062Spanishzh5047Chineseth6954Thaies4233Spanishbn4246Banglatr3488Turkishel4325Greekzh6268Chineseen8188Englishccp2421Chakmabn462Banglachr8162Cherokeeru3025Russianzh2461Chinesesr7332Serbianes4996Spanisheo3547 Esperantobn1067Banglaeo6699 Esperantoiu4334 Inuktitutiu1578 Inuktitutes7762Spanishja5212Japanesees1636Spanishsr7579Serbianbn4582Banglabn5798Banglaeo3357 Esperantoes8122Spanishiu6039 Inuktitutchr2169Cherokeeeo2424 Esperantoen4049Englishzh3532Chineseen7245Englishes3996Spanishtr7027Turkishbn2089Banglaar5281Arabicel6237Greekel7351Greekel8050Greekth4919Thaibn4847Banglaja6572Japanesetr4631Turkishzh3105Chinesefr7129Frenchccp6917Chakmath5861Thaiccp5317Chakmael3501Greekchr2274Cherokeeel6226Greeken7667Englishfr716Frenchtr5773Turkishar7520Arabicru2962Russianja4930Japaneseth3738Thairu3523Russiantr2826Turkishchr6043Cherokeeeo4459 Esperantozh5797Chinesear4995Arabicchr7084Cherokeeja4747Japaneseel2788Greekchr963Cherokeeen4245Englisheo195 Esperantoiu7014 Inuktitutru1125Russianru1992Russianar3050Arabicbn3622Banglaes3744Spanishja116Japaneseja2197Japanesetr4753Turkishccp8190Chakmasr6003Serbianzh5918Chineseel6338Greekja6270Japaneseru2358Russianzh7447Chinesechr2784Cherokeear5109Arabictr6688Turkishes202Spanishja3123Japaneseru4337Russiantr1746Turkishiu7148 Inuktitutzh726Chineseen4226Englishchr5739Cherokeetr6402Turkishtr2627Turkishja2266Japaneseeo3873 Esperantoar3141Arabicar4464Arabicja5553Japaneseen6822Englishth7630Thaitr1783Turkishru190Russiantr6096Turkisheo3479 Esperantochr4108Cherokeefr4567Frenchth5866Thaiar7068Arabicru4695Russianzh777Chinesear1553Arabiceo4607 Esperantoel497Greekes1380Spanishfr4884Frenchccp2240Chakmaja5190Japanesesr6299Serbianfr377Frenchzh4093Chineseth20Thaija4444Japanesebn3447Banglatr763Turkishccp2406Chakmaes5928Spanishsr2025Serbianen2630Englisheo2427 Esperantobn1783Banglaru3446Russianeo2787 Esperantosr5389Serbianja4463Japanesetr6570Turkishsr46Serbianar433Arabicel3524Greekja7961Japanesetr1711Turkishsr1252Serbianfr1868Frenchsr2782Serbianel3882Greekar2228Arabicsr3677Serbiantr8096Turkishbn4127Banglazh6759Chineseja4312Japaneseen2113Englishzh5301Chinesetr4612Turkishsr906Serbianru5095Russiantr2696Turkishccp1137Chakmael2527Greekchr6999Cherokeeja5781Japaneseeo6331 Esperantosr1676Serbiantr2140Turkishar7528Arabictr4888Turkishzh4782Chinesechr2176Cherokeeccp3362Chakmaccp6968Chakmabn674Banglaja5740Japaneseru2323Russianru3665Russianeo3949 Esperantochr6585Cherokeeeo4645 Esperantofr7241Frenchzh4553Chineseccp5327Chakmaeo4461 Esperantoel5149Greekel231Greekzh7878Chineseel843Greekth5338Thaisr1878Serbianiu5224 Inuktituttr3927Turkishen5733Englishchr4035Cherokeefr6848Frenchbn4189Banglaen4633Englisheo5920 Esperantofr1358Frenchiu4453 Inuktitutar999Arabicel20Greekiu4249 Inuktitutbn6346Banglaen4418Englishth6888Thaitr8150Turkishru3703Russianel1373Greekel1112Greektr163Turkishfr7591Frenchar4107Arabicja1769Japanesechr1165Cherokeetr7295Turkishfr3622Frenchchr6812Cherokeebn6384Banglaes2191Spanishchr2359Cherokeees7610Spanishru6884Russianiu3408 Inuktituteo4092 Esperantoiu367 Inuktitutiu6844 Inuktitutth3603Thaith6693Thaieo4881 Esperantofr5635Frenchja7588Japanesear2226Arabicchr6901Cherokeechr3773Cherokeeel2430Greekel3126Greeken1277Englishel553Greekiu2202 Inuktitutth3804Thaija5779Japanesetr1246Turkishtr4857Turkishtr3540Turkishel7238Greekth996Thaiar2887Arabicja1706Japanesesr2566Serbiantr6082Turkishsr37Serbiansr6400Serbianar7237Arabicel7249Greeken2007Englishiu3819 Inuktituten3712Englishzh6423Chinesear3497Arabiciu3657 Inuktitutru1845Russianar6996Arabiciu1871 Inuktitutzh480Chineseiu6752 Inuktituten7084Englishccp6550Chakmaar6533Arabicbn7145Banglaen1659Englishchr5658Cherokeetr6280Turkishzh4690Chinesees3598Spanishar8099Arabicccp7794Chakmaeo165 Esperantoja2595Japanesesr5946Serbianja763Japanesesr7714Serbianccp3458Chakmasr1188Serbianel5204Greekccp1157Chakmaeo6268 Esperantochr4613Cherokeetr4671Turkishar186Arabicsr4476Serbianen3376Englishfr663Frenchccp2846Chakmael7278Greekiu5651 Inuktitutru7211Russianja3715Japaneseel1729Greekbn6198Banglasr6119Serbianth1991Thaiar3149Arabicbn7317Banglaen1001Englishes1041Spanishchr6160Cherokeebn7253Banglaen7962Englishru992Russiantr385Turkishru6515Russianzh5432Chineseja5909Japanesetr2919Turkishchr2881Cherokeezh3487Chinesear6124Arabicccp6237Chakmael7149Greektr931Turkishth394Thaizh5601Chineseen5718Englishccp3352Chakmaen6473Englishen6683Englishru221Russianth1827Thaith2422Thaieo6817 Esperantosr7423Serbianchr3652Cherokeeiu4251 Inuktitutru7719Russianru4707Russianchr1921Cherokeechr1291Cherokeeccp7212Chakmazh7366Chineseeo2854 Esperantotr6347Turkishiu5531 Inuktituttr7757Turkishes1986Spanishel1032Greekfr3082Frenchru7121Russianja7414Japaneseth3882Thaies6116Spanishzh7249Chineseccp443Chakmaccp5171Chakmazh6143Chinesezh6977Chineseel2035Greekru5765Russianen3146Englishru6395Russianen1829Englishar8125Arabicel6772Greekeo1989 Esperantoeo3435 Esperantoja6358Japanesebn6985Banglaeo7546 Esperantoth6101Thaitr7567Turkishel187Greekzh5332Chineseccp5156Chakmaccp1174Chakmath1112Thaifr7530Frenchtr4963Turkishen4741Englishes5347Spanishbn5129Banglafr1464Frenchsr5564Serbianes1484Spanishar4139Arabicja1907Japaneseeo5676 Esperantozh5742Chineseeo81 Esperantoja2788Japanesetr4987Turkishfr5503Frenchiu1015 Inuktitutsr4314Serbianar7500Arabicru1306Russianeo376 Esperantoes4655Spanishel5609Greekes5202Spanishccp6267Chakmachr1839Cherokeeiu1554 Inuktitutzh3531Chinesetr1557Turkishchr6181Cherokeechr4768Cherokeebn3960Banglabn7247Banglaen5144Englishzh8069Chinesefr1959Frencheo2043 Esperantobn5718Banglaar31Arabicru6049Russianfr3860Frenchru4546Russiansr2088Serbianel6245Greekth482Thaien4419Englishar4252Arabicen5079Englishen5799Englishja8109Japaneseeo761 Esperantoja1030Japanesear7134Arabicru3101Russiantr1571Turkishchr2779Cherokeees2968Spanishchr1352Cherokeeiu2942 Inuktitutja4106Japaneseeo5093 Esperantozh5496Chineseeo2190 Esperantoth118Thaizh891Chinesechr6569Cherokeeel1411Greekbn4441Banglaes808Spanishja7383Japanesetr7048Turkishar5261Arabicel7098Greekja5450Japanesesr6741Serbianar7301Arabicbn3722Banglafr6468Frenchth2102Thaichr359Cherokeees501Spanisheo1466 Esperantoeo4133 Esperantoja7219Japanesechr4181Cherokeees2175Spanishja2937Japanesebn7635Banglael4324Greekbn3091Banglachr1162Cherokeeel4574Greekar6216Arabiczh5626Chinesechr6933Cherokeetr5737Turkishel1574Greekzh2592Chineseja6646Japanesezh4997Chineseccp3889Chakmabn5332Banglaen1189Englishes7201Spanishen4212Englishiu5428 Inuktitutccp7918Chakmath5553Thaija3831Japanesefr2988Frenchja3527Japaneseth3694Thaiar1941Arabicth4123Thaith1327Thaisr6736Serbianel4270Greekzh4674Chineseen2077Englishth2118Thaiccp5039Chakmazh6177Chinesetr8167Turkishtr5091Turkishiu7547 Inuktitutar4919Arabicja5285Japanesezh6834Chinesezh5981Chinesees8116Spanishbn7133Banglael6404Greeken4886Englishes6159Spanishja7780Japaneseru86Russianbn4496Banglaes4408Spanishbn316Banglaiu5576 Inuktitutru3139Russianccp4620Chakmaeo4791 Esperantoccp2422Chakmaen6222Englishsr2749Serbianchr1997Cherokeezh1017Chinesesr2028Serbianccp989Chakmaeo791 Esperantoes4173Spanishfr3270Frenchth3429Thaija1799Japaneseiu3430 Inuktitutel2376Greekth4728Thairu6116Russiantr7752Turkishccp6284Chakmaar3224Arabicel1486Greekfr523Frenchru691Russianeo5735 Esperantoeo5544 Esperantochr2153Cherokeeccp4002Chakmaiu7230 Inuktitutar2158Arabiciu1735 Inuktitutth6318Thaien6440Englisheo1435 Esperantofr7875Frenchchr4362Cherokeesr1899Serbianeo6647 Esperantoel4521Greekes7521Spanishsr1033Serbianar3534Arabicfr689Frenchiu6927 Inuktitutsr6926Serbianth2466Thaien6909Englishzh1315Chineseeo1834 Esperantoes1952Spanishsr3287Serbianru8068Russianchr2007Cherokeeiu4113 Inuktitutja6271Japaneseth7546Thaisr4053Serbianbn3154Banglatr6093Turkishel4231Greekja2628Japaneseccp7872Chakmafr6528Frenchen91Englishsr5056Serbianbn4742Banglaja6657Japanesesr8066Serbianes3492Spanishel350Greekbn2842Banglaru2726Russianzh6033Chinesezh7636Chinesesr211Serbianar6524Arabicja6951Japanesesr3764Serbianchr58Cherokeesr234Serbianth959Thaies2922Spanishzh7440Chineseccp5904Chakmafr3493Frenchbn1669Banglael3672Greekru996Russianzh3014Chinesezh3548Chineseen4939Englishccp5154Chakmachr4499Cherokeetr4102Turkishar3208Arabiczh2421Chinesees5560Spanishccp6080Chakmaeo3927 Esperantofr4519Frencheo4473 Esperantoiu3177 Inuktitutru4150Russianth3513Thaiccp8186Chakmasr6668Serbianbn4969Banglaiu7349 Inuktituteo1612 Esperantobn2538Banglabn1716Banglaes6371Spanishja725Japanesefr425Frenchru4001Russianeo6167 Esperantofr7442Frenchzh4302Chineseeo6517 Esperantoes4545Spanishiu5887 Inuktitutiu6026 Inuktitutja194Japanesesr6285Serbiantr3381Turkishchr88Cherokeechr7707Cherokeefr3011Frenchtr3822Turkishes4176Spanishzh1058Chinesezh4554Chinesetr89Turkishsr4892Serbianru6017Russianth174Thaien4035Englishsr2919Serbianel1499Greekes1436Spanishel390Greeken5936Englishiu2037 Inuktitutsr7546Serbianchr1253Cherokeeeo3930 Esperantoes3516Spanishsr3553Serbianzh6474Chinesezh1850Chineseen5490Englishes6068Spanishfr4922Frenchiu3747 Inuktitutth5090Thaitr5849Turkishja5029Japaneseiu3646 Inuktitutccp4456Chakmachr2189Cherokeeiu2119 Inuktitutiu5123 Inuktitutchr4772Cherokeear5774Arabicth1968Thaifr6066Frenchbn7706Banglath7960Thaiar7153Arabicth5138Thaiiu936 Inuktitutja7665Japaneseen881Englishchr7959Cherokeeeo2721 Esperantoes3396Spanishes5650Spanishel1531Greekja5133Japanesebn3846Banglaccp2839Chakmafr3848Frenches7642Spanishtr6345Turkishel2531Greeksr6195Serbianccp3230Chakmaccp4685Chakmaccp431Chakmaen6356Englisheo1361 Esperantoes7383Spanishfr8091Frenchtr6361Turkishiu4900 Inuktituteo863 Esperantoes6654Spanishth5244Thaija7664Japaneseccp3466Chakmafr6561Frenchar368Arabiciu5390 Inuktitutru3675Russianja5592Japanesesr7800Serbianzh7010Chineseth6130Thaieo3557 Esperantoja708Japanesesr8156Serbianeo1154 Esperantozh4017Chinesefr7610Frenchen6916Englishiu4050 Inuktitutel6608Greeksr2304Serbiansr4345Serbianes8031Spanishja841Japanesetr1924Turkishja5378Japaneseru6952Russiansr4213Serbianccp3981Chakmaja5895Japaneseru2379Russianth8104Thaiel6487Greekfr5730Frenchth4382Thaitr2506Turkishsr4061Serbiantr6929Turkishzh8073Chinesetr3012Turkishbn3417Banglaccp4441Chakmaiu152 Inuktituten4314Englishbn4638Banglaccp1616Chakmaen8081Englishsr226Serbianeo5638 Esperantotr6310Turkishth8145Thaies390Spanishel6899Greekbn253Banglaes1621Spanishel261Greekar1440Arabictr29Turkishchr6443Cherokeeru7507Russianzh204Chineseru6922Russianru7857Russianar5271Arabicchr2420Cherokeezh3289Chinesefr1631Frenchchr3197Cherokeefr5971Frenchccp2650Chakmaccp7421Chakmael3302Greekru3150Russianzh1771Chineseel4239Greekchr6161Cherokeebn6240Banglaja1144Japaneseiu2657 Inuktitutru1407Russianiu4617 Inuktitutja1529Japanesear5072Arabiczh6853Chineseth1541Thaibn4118Banglath4419Thaies6359Spanishfr1707Frenchsr6761Serbianar3987Arabicsr852Serbianel1698Greekes3746Spanishes4253Spanishsr5342Serbianeo2091 Esperantozh2600Chinesezh1778Chineseru6745Russianru1767Russianbn5027Banglaeo2665 Esperantofr3262Frenchar4412Arabicbn6369Banglaar1887Arabicja1987Japaneseiu6774 Inuktituttr5191Turkishen3243Englishar5759Arabicth4449Thaizh6284Chineseru257Russianeo6424 Esperantozh1394Chinesear7978Arabicth1832Thaies7100Spanishen5926Englishru4142Russianchr7126Cherokeeel5579Greeken7343Englishfr1239Frenchtr2015Turkishfr4818Frenchtr1156Turkishes7870Spanishfr7254Frenchccp7937Chakmaiu3337 Inuktitutth5349Thaitr5153Turkishar136Arabices3895Spanishzh2752Chineseccp245Chakmaeo8177 Esperantoccp759Chakmaes378Spanisheo2247 Esperantosr6039Serbianbn5640Banglael2221Greekar5341Arabicel6865Greekccp3970Chakmaru6597Russiantr7021Turkishbn1915Banglaen1988Englishccp2845Chakmachr6120Cherokeeen5649Englishen142Englishru2771Russianbn7704Banglatr4622Turkishru7406Russianja3887Japaneseja7424Japaneseth3436Thaien352Englishar1075Arabicth6825Thaieo2337 Esperantobn7497Banglabn251Banglaccp6288Chakmaen1495Englisheo6920 Esperantotr2654Turkishbn3125Banglaen7536Englishth5889Thaiccp7312Chakmaeo7838 Esperantotr6424Turkishfr1195Frenchccp903Chakmatr1772Turkishes6968Spanishth4228Thaiar3920Arabicccp2683Chakmath3090Thaibn2055Banglath5437Thaizh3304Chineseen7736Englishru1343Russianbn7369Banglaeo7949 Esperantoar1265Arabicth6178Thaitr7555Turkishfr7710Frenchar2902Arabicth947Thaiar3331Arabictr5824Turkisheo7675 Esperantoes2162Spanishth1932Thaiel2351Greekzh2517Chineseel6881Greekeo1055 Esperantochr7595Cherokeees2644Spanishen1239Englishsr892Serbianccp5697Chakmath1390Thaitr6564Turkisheo487 Esperantoccp3795Chakmaar4877Arabicja4578Japanesetr922Turkishar291Arabicar6011Arabices5425Spanishchr1656Cherokeesr3439Serbianzh1035Chinesear4396Arabicfr5743Frenchzh2251Chinesefr2153Frenchchr3788Cherokeefr2556Frenchchr3253Cherokeechr2619Cherokeechr5124Cherokeeel6978Greekccp6350Chakmaiu7068 Inuktitutja3150Japanesezh3831Chineseiu6677 Inuktitutzh3382Chinesefr1255Frenchiu691 Inuktitutsr4569Serbianzh1860Chineseccp2645Chakmaru7010Russiantr2563Turkishru4586Russianth1629Thaien3991Englishru2395Russianru1803Russiansr3708Serbianiu6827 Inuktituteo6928 Esperantochr4866Cherokeeja3808Japaneseth1369Thaiiu7375 Inuktitutru5576Russianzh2998Chinesear2700Arabiciu7039 Inuktitutbn6929Banglath5454Thaiiu1805 Inuktitutbn1440Banglafr140Frenches3478Spanishru2901Russianth6803Thaiccp2618Chakmaru3177Russiansr7279Serbianja7740Japanesebn921Banglaeo6251 Esperantoes2444Spanishccp3845Chakmaar5263Arabicth7808Thaieo1027 Esperantobn5918Banglaen1158Englishel5316Greekeo7497 Esperantotr1101Turkisheo8144 Esperantosr7751Serbianes873Spanishiu739 Inuktitutiu5999 Inuktitutsr3188Serbianiu5258 Inuktituteo3575 Esperantoes961Spanisheo5722 Esperantoes4902Spanishth3898Thairu260Russianar7002Arabiczh6817Chinesebn5781Banglabn3900Banglaar6335Arabices5388Spanishfr8098Frenchzh1720Chinesechr6068Cherokeear7614Arabicel2602Greekchr7087Cherokeees7192Spanishtr4192Turkishzh5291Chinesefr3999Frenchel5611Greekiu4526 Inuktitutbn6934Banglabn4126Banglasr1487Serbianfr1999Frenchel4225Greekiu1395 Inuktitutja2700Japanesetr4077Turkishzh1109Chineseel4898Greektr8004Turkishja2257Japanesebn7421Banglasr7543Serbianccp4364Chakmaiu7170 Inuktitutfr5938Frenchccp6137Chakmaiu4364 Inuktitutja8111Japaneseth5161Thaien669Englishel4401Greekar7698Arabicsr3789Serbianja972Japanesechr6752Cherokeees6440Spanishen4142Englishiu1822 Inuktitutja7480Japanesezh3439Chinesetr5042Turkishar3677Arabicfr6520Frenchen2035Englishzh6974Chinesechr1213Cherokeeja2416Japanesetr2227Turkishes7091Spanishru5689Russiansr98Serbianja1429Japaneseth2854Thairu4411Russianzh7446Chinesees5247Spanishbn876Banglael3742Greekja8023Japaneseeo6243 Esperantotr4673Turkishel5280Greekeo3818 Esperantoen6655Englishfr7299Frenchsr7958Serbianes6751Spanishtr7999Turkishes728Spanisheo5432 Esperantoes4855Spanishiu4048 Inuktitutru5493Russianbn6779Banglabn7252Banglaes5374Spanishsr4326Serbianfr764Frenchth4926Thaija5433Japanesechr6389Cherokeeiu4443 Inuktitutru752Russiansr3914Serbianeo3687 Esperantoja7473Japaneseru5677Russiantr5359Turkishbn2932Banglael3239Greekfr4918Frenchel5951Greekeo1987 Esperantosr707Serbianbn7914Banglael6975Greekchr1903Cherokeefr7811Frenchel6893Greeksr5621Serbianbn7312Banglabn4739Banglaes3012Spanishsr1066Serbianja2156Japaneseja5317Japaneseccp2820Chakmafr934Frenchru6573Russianiu3626 Inuktitutfr395Frenches1885Spanishchr6775Cherokeeen7535Englishbn6923Banglaeo3531 Esperantoen5225Englishel4348Greekccp6842Chakmaen106Englishel2364Greekchr7814Cherokeechr7892Cherokeeel6859Greekchr1238Cherokeeeo7082 Esperantosr1498Serbianzh858Chinesefr4892Frenchtr4343Turkisheo7416 Esperantofr611Frenchru1106Russianbn6199Banglachr5137Cherokeeiu7804 Inuktitutru1588Russianbn5919Banglaeo3124 Esperantobn8036Banglael6205Greeksr3007Serbianbn7212Banglatr1398Turkishtr5169Turkishel3638Greeksr237Serbianchr2858Cherokeear2090Arabicchr5907Cherokeees7917Spanishzh6801Chineseru4750Russianru4072Russianru4893Russianzh7235Chinesees2610Spanishzh2666Chinesear2449Arabicccp3459Chakmafr200Frenchru2078Russianel7047Greekar3220Arabicen1984Englishzh6335Chineseel8048Greekeo4713 Esperantoes7400Spanishiu5994 Inuktitutja4346Japaneseel4212Greekru2541Russianar3335Arabicel3576Greekccp6594Chakmasr7267Serbianfr6074Frenchfr4705Frenchtr4787Turkishbn4316Banglafr4825Frenchel641Greekja2820Japaneseeo5767 Esperantosr2757Serbianth1088Thaizh5057Chineseth1652Thaiel5Greekbn2462Banglafr5506Frenchja5095Japanesear3859Arabicen2459Englishar6817Arabicel7408Greekfr1071Frenchth2686Thaiccp6914Chakmabn4314Banglath7401Thaieo333 Esperantochr5721Cherokeechr6868Cherokeezh322Chinesetr4178Turkishes3313Spanishtr4724Turkishja7769Japaneseel6610Greekeo2003 Esperantoeo3568 Esperantotr1304Turkishtr5517Turkishbn4270Banglafr4654Frenchzh7994Chinesebn7028Banglaccp5074Chakmaja7156Japaneseth6663Thaifr1386Frenchja354Japaneseccp3304Chakmaiu2746 Inuktitutchr2376Cherokeeel6068Greeken7132Englishar1467Arabicar5504Arabicbn2702Banglael7326Greekar6919Arabicccp7540Chakmachr2387Cherokeechr161Cherokeeel456Greekja1292Japaneseru4626Russiantr4313Turkishen5467Englishfr316Frenchfr2771Frenchbn8145Banglaeo1679 Esperantochr5360Cherokeeccp7580Chakmaiu944 Inuktitutbn3609Banglaja4580Japanesesr942Serbianth6619Thaizh6057Chinesees2728Spanisheo270 Esperantoar3718Arabicfr655Frenchsr3578Serbianar7057Arabicccp3515Chakmabn302Banglaen6998Englishfr6267Frenchru3011Russianja5658Japaneseccp3164Chakmasr3697Serbianbn3004Banglaen2346Englishchr5073Cherokeeth6237Thaien3594Englishen121Englishsr6987Serbianbn7824Banglaes7713Spanishru6677Russianen1539Englishel1211Greekel5967Greekeo2210 Esperantochr5152Cherokeefr3085Frenchzh637Chineseja6380Japaneseja5707Japaneseel3170Greekfr2999Frenchbn2294Banglasr7898Serbiantr2777Turkishfr2032Frenchccp6998Chakmaen3967Englisheo4544 Esperantoth2396Thaifr6555Frenchzh4429Chineseja5302Japaneseccp6226Chakmath2646Thaien2123Englishen4285Englishes114Spanishccp1053Chakmafr2280Frenches1485Spanishes1563Spanishru1569Russianar5096Arabicchr2907Cherokeeiu6560 Inuktitutth4056Thaieo5938 Esperantoeo590 Esperantoth159Thaitr3508Turkishchr7765Cherokeeen6144Englishtr7726Turkishchr7117Cherokeeel7151Greekchr5338Cherokeeeo6163 Esperantobn4293Banglaiu4961 Inuktitutth5510Thaiccp6470Chakmachr5204Cherokeeel6874Greekja1807Japanesees1577Spanishsr3035Serbianru5908Russiantr3370Turkishar5126Arabicfr806Frenchtr5179Turkishar885Arabicccp3066Chakmath7499Thaith5541Thaiar1875Arabicel4818Greekccp7832Chakmaeo4309 Esperantotr2054Turkishiu2922 Inuktitutbn1990Banglaeo4979 Esperantobn4974Banglael4665Greeksr2256Serbianfr5028Frenchzh7718Chinesebn4812Banglaja6432Japaneseth2206Thaibn1930Banglazh3482Chineseen1591Englishtr992Turkishes3008Spanishar2373Arabicsr1835Serbianiu3712 Inuktituteo2519 Esperantoar1648Arabicsr6694Serbianzh5867Chinesear1098Arabicen7467Englisheo18 Esperantoru95Russianbn3522Banglaar3283Arabicel1586Greekes5823Spanishbn2633Banglath393Thaith1086Thaiiu2680 Inuktitutchr4513Cherokeeen3492Englisheo2084 Esperantoccp1324Chakmaes5648Spanishchr102Cherokeesr1879Serbianzh7017Chineseja2888Japaneseen8090Englishel6586Greeksr5512Serbianfr1511Frenchth4600Thaith4430Thaibn4889Banglabn923Banglaes5926Spanishes2109Spanishar5608Arabiczh4127Chinesear740Arabiciu5049 Inuktitutzh928Chinesechr3558Cherokeear7826Arabicccp4094Chakmasr6018Serbianth5846Thaifr5155Frenchbn764Banglaar3715Arabicja5616Japanesechr3745Cherokeeru3075Russianth4562Thaizh4535Chinesees7110Spanishth1619Thaifr2048Frenchar6514Arabiceo2821 Esperantoes7706Spanishccp6201Chakmazh2866Chinesechr6557Cherokeebn745Banglaar3197Arabicel4992Greekeo6866 Esperantoes3379Spanishja586Japaneseru5104Russiansr4722Serbianth660Thaiar7446Arabicbn4187Banglaccp3823Chakmath1109Thaitr6129Turkishccp6989Chakmath2280Thaieo7411 Esperantoth4272Thaichr1141Cherokeeiu7928 Inuktitutth6700Thaizh3587Chineseja4143Japaneseth4485Thaifr2292Frenchja5380Japaneseel4384Greekja6867Japaneseth2720Thairu5707Russianzh531Chinesezh7259Chinesear5004Arabiciu6673 Inuktitutja6082Japanesefr7927Frencheo2740 Esperantoeo5528 Esperantoiu7531 Inuktitutsr2969Serbianel1187Greekzh2464Chinesezh5857Chineseel1532Greekar4116Arabicbn1925Banglaccp7651Chakmaja6724Japaneseth8073Thaisr2060Serbianfr4735Frenchru3304Russianel7367Greekth7254Thaibn7897Banglael3043Greekar6800Arabicccp6074Chakmaiu3002 Inuktitutru3054Russiantr821Turkishiu6899 Inuktitutar3587Arabicen5125Englishfr4899Frenchiu5168 Inuktitutchr83Cherokeebn3196Banglazh5213Chineseel2147Greekja5081Japanesees4008Spanishes2153Spanishes1604Spanishchr3857Cherokeeja4559Japaneseja4016Japanesesr630Serbianfr4005Frenchfr3583Frenchiu371 Inuktitutru62Russianja4820Japanesezh495Chineseccp4954Chakmaru6211Russianar867Arabicbn1057Banglachr5708Cherokeezh3836Chinesetr6544Turkishbn6574Banglaja8070Japaneseel524Greekes5671Spanishzh7391Chineseiu3436 Inuktitutbn3072Banglaen4090Englishja3899Japanesetr296Turkishen4099Englishccp687Chakmaen225Englishzh4896Chineseen2800Englishja7330Japanesesr1055Serbianen6971Englishccp3664Chakmaiu3305 Inuktituttr6429Turkishth2242Thaiiu33 Inuktituttr4546Turkishel5499Greekja1134Japanesefr676Frenchsr7694Serbiantr1277Turkishel4583Greekru8055Russianfr7226Frenchiu1025 Inuktituten1334Englishtr1478Turkishchr3723Cherokeefr735Frenchtr2844Turkisheo5103 Esperantoen5806Englisheo84 Esperantoja2923Japaneseen2719Englishja5816Japanesees4821Spanishfr68Frenchru8116Russianiu5275 Inuktitutiu6584 Inuktitutar7141Arabicja5140Japaneseth1257Thaiar7686Arabiczh4155Chineseru1711Russianel2557Greekja5324Japanesefr5006Frenchccp4031Chakmazh4645Chineseja2169Japanesebn4760Banglafr3068Frenchzh1447Chineseth1667Thaies3417Spanishar6296Arabicar7755Arabicccp1506Chakmaru487Russianbn3950Banglatr4511Turkishru1304Russianes2366Spanishzh2117Chinesefr6317Frenchtr5676Turkishja1311Japaneseiu6359 Inuktitutbn7371Banglaen7163Englishfr2831Frenchsr3560Serbianbn5042Banglath15Thaizh3648Chineseccp3564Chakmasr5250Serbianiu304 Inuktitutja3012Japanesear3633Arabicja3340Japanesezh4961Chinesefr7879Frenchzh6257Chinesechr7625Cherokeechr7189Cherokeeeo5063 Esperantoes3993Spanishzh1197Chinesezh3988Chinesear2408Arabicth940Thaija1577Japaneseen8131Englishes6087Spanishja5220Japaneseth6807Thaitr983Turkishtr8109Turkishru2162Russianja1474Japaneseja8158Japanesefr6176Frenchsr7262Serbianes4034Spanishru457Russianccp7334Chakmaeo2058 Esperantobn4275Banglabn1778Banglachr4366Cherokeeel7548Greeken6386Englishsr5735Serbianccp8115Chakmaeo1159 Esperantoeo8159 Esperantochr3072Cherokeees1252Spanishar6668Arabicccp4368Chakmaes4100Spanishfr5862Frenches2735Spanishth5364Thaien905Englishtr4944Turkishes5537Spanishiu1273 Inuktitutsr3874Serbiantr3999Turkishfr3757Frenchtr3887Turkishbn1626Banglaen5004Englishja7763Japaneseja8013Japanesebn2291Banglaru3888Russianfr3632Frenchiu690 Inuktitutzh5725Chinesezh2997Chinesechr6427Cherokeear1213Arabicccp1548Chakmaccp3660Chakmaru4941Russianja3108Japaneseiu7323 Inuktituteo3821 Esperantobn7045Banglaccp5647Chakmaja6651Japanesezh5265Chinesechr2558Cherokeefr4806Frenchfr3123Frencheo3839 Esperantoeo2883 Esperantochr4886Cherokeezh4615Chinesezh96Chineseru3818Russianar4120Arabicja3329Japaneseth653Thaitr7578Turkishru7372Russianiu6284 Inuktitutja6465Japanesezh1015Chinesechr1315Cherokeezh3465Chineseiu11 Inuktitutfr7666Frenchar5957Arabiceo5364 Esperantoen1075Englishen3036Englishtr2868Turkishtr6763Turkishar6162Arabicar7Arabicchr4537Cherokeear776Arabicar1230Arabicccp7867Chakmaes4386Spanishsr3993Serbianchr1150Cherokeefr4160Frenchen5586Englishen5957Englishel3429Greeken3741Englishchr3887Cherokeear782Arabices6150Spanishbn7500Banglaes4805Spanishes1505Spanishtr5750Turkishfr5181Frenches4395Spanishar6963Arabiceo4705 Esperantoccp7328Chakmaes4247Spanishel1703Greekfr4778Frenchccp4737Chakmafr3203Frenchiu7637 Inuktitutsr1513Serbianja2183Japanesetr5765Turkishchr2280Cherokeear6737Arabicccp5667Chakmael5775Greeksr2871Serbianbn1013Banglaeo4526 Esperantoth5428Thaiar5121Arabicccp5846Chakmaiu4293 Inuktitutru6754Russianeo3768 Esperantotr6520Turkishbn5256Banglazh7922Chineseel7756Greekja5110Japanesees8131Spanishzh2235Chinesezh5235Chineseeo2299 Esperantoel2835Greekel1543Greekel7304Greekzh2621Chineseru5695Russianbn1534Banglaccp3554Chakmaar5061Arabices5335Spanishfr6567Frenchru1263Russianru512Russianen1165Englishru643Russianeo5252 Esperantoth7317Thaisr486Serbiantr320Turkishja1770Japanesebn4623Banglaiu7899 Inuktituteo1839 Esperantobn3587Banglath6968Thaifr4077Frenchchr5862Cherokeeiu317 Inuktitutth2796Thaibn6994Banglachr1159Cherokeeel3247Greekfr6006Frenchja3748Japaneseru2868Russianar1204Arabicfr5112Frenchth2111Thaitr5361Turkishen2431Englishja1499Japaneseru2411Russianccp1165Chakmatr1804Turkishiu3033 Inuktitutfr7Frenchel7791Greekfr6975Frenchchr240Cherokeees5655Spanishiu7379 Inuktitutfr4175Frenchbn4736Banglaiu8110 Inuktitutzh4456Chineseel1806Greekfr238Frenchzh7785Chinesefr4711Frenchchr4820Cherokeeru6791Russianar2289Arabictr4660Turkishes1238Spanishsr5850Serbiantr5955Turkishes5169Spanishar7109Arabicbn4764Banglabn5714Banglaru6975Russianar3940Arabicel295Greekja5856Japanesees2132Spanishfr7764Frenchel2216Greekiu4904 Inuktitutja464Japaneseja2078Japaneseen1968Englishel2578Greeken3044Englishar7490Arabicel6578Greekbn7995Banglaru187Russianccp5304Chakmael1252Greekeo2283 Esperantoel1289Greekiu3546 Inuktitutiu2124 Inuktitutsr5983Serbianbn5096Banglaja52Japanesefr6092Frenchru6691Russianfr1661Frenchiu5023 Inuktitutzh1492Chineseel3630Greekbn4076Banglachr3352Cherokeetr490Turkishccp6898Chakmaeo7189 Esperantozh4555Chineseccp5380Chakmazh2257Chinesechr488Cherokeechr1090Cherokeeth7894Thaichr4309Cherokeefr1485Frenchth3098Thaith4805Thaiccp4226Chakmaiu6479 Inuktitutiu7246 Inuktitutar5880Arabicbn1920Banglaen5101Englishchr3813Cherokeetr1586Turkishtr3279Turkishth4691Thaiel5041Greekfr6936Frenchtr5360Turkishth3216Thaitr6518Turkishchr3435Cherokeeru7416Russianru6915Russianth3327Thaies5370Spanishsr6137Serbianccp2224Chakmaen7167Englishbn2465Banglafr2056Frenchth4740Thaizh3325Chinesear6132Arabicar7631Arabicccp1162Chakmabn1477Banglachr7869Cherokeeiu1232 Inuktitutth2012Thaibn3625Banglatr1662Turkisheo1205 Esperantoel2595Greekbn8003Banglaccp3449Chakmafr4653Frenchbn7644Banglabn2523Banglaja2091Japanesees252Spanishchr5352Cherokeebn0Banglatr5324Turkishchr7116Cherokeezh2452Chinesees5311Spanishzh4840Chineseth1973Thaien1727Englishen3068Englisheo2688 Esperantoar1854Arabicja1959Japanesezh5974Chineseel873Greeksr471Serbianja3427Japanesezh3175Chinesechr2491Cherokeeen3748Englishfr5189Frenchru138Russianeo1628 Esperantobn7601Banglath7913Thaibn7391Banglabn4360Banglafr321Frenchen4003Englishar6261Arabicfr7156Frenchbn4380Banglaru3914Russianru5181Russianru6445Russianeo1810 Esperantochr1493Cherokeear804Arabiczh2495Chineseel889Greektr7627Turkishar6456Arabicen3929Englishes5766Spanishes6390Spanishen4617Englishru1641Russianbn6527Banglaes3952Spanishzh8080Chinesear241Arabicen481Englishen1410Englishth1677Thaith167Thaiel4119Greekth2472Thaizh744Chineseth7939Thaija4124Japanesebn365Banglachr7790Cherokeees791Spanishsr6016Serbianfr5005Frenchchr8136Cherokeefr7888Frenchen2353Englishel2608Greekja5458Japanesetr4876Turkishiu3601 Inuktitutbn1876Banglaccp7063Chakmael7232Greekar2368Arabicru6057Russianchr928Cherokeesr3655Serbianchr6397Cherokeechr3314Cherokeeiu2538 Inuktitutsr5418Serbianth5662Thaieo7090 Esperantoeo605 Esperantoccp953Chakmachr4370Cherokeefr5346Frenchzh8155Chinesear415Arabicar4267Arabicja858Japanesear2495Arabicsr4752Serbiantr5116Turkishen716Englishth2268Thaisr7902Serbianiu7265 Inuktituteo3161 Esperantoja8041Japanesear2170Arabicen5882Englishfr1090Frenchccp6551Chakmath6207Thaien4706Englishzh2596Chinesebn6502Banglabn7924Banglaes4189Spanishzh1534Chinesees4593Spanishel7862Greeksr7457Serbianchr4568Cherokeeen6096Englishes5192Spanishes3766Spanishen964Englishja4013Japaneseru2088Russianru5496Russianth1242Thaiel6408Greekth7523Thaizh7988Chineseen2775Englishtr6031Turkishja7668Japaneseen67Englisheo7802 Esperantofr4258Frenchiu3971 Inuktitutzh3229Chinesechr2600Cherokeeccp6679Chakmabn6309Banglachr2950Cherokeeel4786Greekel5436Greekes1407Spanishfr5093Frenchiu6087 Inuktituttr2094Turkishtr3664Turkishchr4578Cherokeetr790Turkishen3535Englishchr5326Cherokeeja3605Japanesezh4877Chinesesr6521Serbianru111Russianeo2162 Esperantoel1423Greekeo7997 Esperantoja1204Japanesechr3474Cherokeetr4545Turkishsr1308Serbianja7483Japaneseru4757Russianru7819Russianfr6547Frenchel4057Greekchr2430Cherokeeel4Greekeo6460 Esperantosr3700Serbianiu6828 Inuktituteo3105 Esperantoiu3403 Inuktitutru5159Russianzh2680Chineseru3515Russianchr1319Cherokeeel6453Greekbn4011Banglaes4094Spanishtr5520Turkishar1028Arabicja7869Japanesetr7152Turkishel2440Greekth6055Thaiel5219Greekzh1805Chinesebn3419Banglaiu2007 Inuktituteo2103 Esperantoru89Russiansr8014Serbianes3912Spanishchr3163Cherokeeru338Russianru11Russianes5869Spanishchr7538Cherokeesr2408Serbianth4080Thaija7357Japanesebn1154Banglafr5696Frenchar6930Arabicja7114Japanesetr5438Turkishccp2815Chakmaja7014Japanesebn7239Banglazh7519Chinesees756Spanishru3867Russiantr6638Turkishbn4521Banglaeo6875 Esperantoeo6439 Esperantoes5802Spanishiu7457 Inuktituteo4189 Esperantosr7846Serbianru5838Russianth7212Thaichr4876Cherokeefr3272Frenchtr765Turkishfr932Frenchfr7200Frenchzh5977Chinesear6686Arabiczh3903Chinesechr1589Cherokeear7948Arabicru7353Russianfr926Frenchbn78Banglaccp4065Chakmaeo450 Esperantoiu3264 Inuktitutsr1450Serbiansr1389Serbianen2242Englishja6397Japanesees3865Spanishbn385Banglaccp2342Chakmafr4515Frenchen940Englishfr8090Frenchiu2611 Inuktituteo5489 Esperantotr3689Turkishsr2447Serbiansr5988Serbianar2976Arabicel6695Greeksr2206Serbianchr7551Cherokeeeo4099 Esperantoja6527Japaneseru3251Russianen659Englishru3466Russianru7705Russianchr2922Cherokeeru4015Russianiu5244 Inuktitutja2831Japaneseru2343Russiansr318Serbianel4936Greekja7194Japaneseja4691Japaneseja3626Japanesechr504Cherokeeja1831Japaneseel3288Greekiu7364 Inuktitutja2337Japaneseru4755Russianfr6712Frenchtr1718Turkishccp384Chakmaen1799Englisheo2641 Esperantofr4746Frenchzh1634Chinesefr3549Frenchzh3355Chinesechr2201Cherokeezh6622Chineseeo5389 Esperantotr2277Turkishar5923Arabicru1302Russianeo3218 Esperantochr2911Cherokeeeo1954 Esperantoar3770Arabicchr4821Cherokeeth4783Thaiiu2851 Inuktitutja7675Japanesear204Arabicbn1912Banglaja3233Japanesees617Spanishja4750Japanesetr2311Turkishccp4386Chakmafr895Frenchccp1063Chakmasr2247Serbianar1541Arabicchr7250Cherokeezh7461Chinesebn1417Banglatr6988Turkishccp6650Chakmaru7161Russianbn4887Banglatr5573Turkishar6496Arabiczh66Chineseeo5655 Esperantotr2834Turkishsr4854Serbianzh4759Chinesear7256Arabicchr1172Cherokeetr4444Turkishzh5755Chinesesr4059Serbianeo7855 Esperantoeo1865 Esperantoel500Greekccp1836Chakmachr6846Cherokeeru3317Russianth1316Thaiel5381Greekes3343Spanishes3703Spanishth3233Thaizh4308Chinesear7096Arabicen2820Englisheo3825 Esperantoiu7287 Inuktitutbn2581Banglaes1241Spanishbn1072Banglaiu1319 Inuktituttr5658Turkishja4399Japanesebn4108Banglachr315Cherokeeeo6198 Esperantoeo8157 Esperantochr3229Cherokeees6624Spanishel3127Greekiu3731 Inuktitutfr737Frenchel1217Greeken3131Englishiu5853 Inuktitutsr1573Serbianru6166Russianru1632Russianzh6351Chineseru8020Russianel3277Greekeo1853 Esperantochr6468Cherokeeiu7525 Inuktitutzh4060Chineseen286Englishsr4939Serbianru282Russianbn1365Banglasr1856Serbiantr7828Turkishccp1017Chakmazh360Chineseccp5056Chakmaru557Russianchr2138Cherokeeeo306 Esperantoja2010Japanesetr823Turkishth914Thaiar6258Arabicel2862Greekzh4369Chineseccp339Chakmaar7649Arabicfr1505Frenchchr915Cherokeeth2294Thaija7524Japaneseja5877Japanesees4285Spanishel2698Greekja2702Japanesebn8119Banglaja4038Japanesechr3969Cherokeeel6363Greekru5948Russiansr3119Serbianen6446Englishsr4265Serbianel3226Greekru2313Russianth2493Thaichr1764Cherokeeiu4867 Inuktitutel5192Greekchr5560Cherokeeeo4009 Esperantosr1813Serbianeo3507 Esperantoes1859Spanishth6054Thaiccp7418Chakmath5282Thairu4531Russianzh2415Chinesebn3884Banglabn108Banglaccp6821Chakmachr1653Cherokeechr4379Cherokeeel6580Greekeo4895 Esperantoiu1721 Inuktitutja1942Japaneseen791Englishel5870Greeken2507Englishfr8176Frenchja496Japaneseja4169Japanesefr7487Frenchchr4248Cherokeebn3907Banglaccp6631Chakmasr2317Serbianbn8023Banglaccp3927Chakmaeo6543 Esperantotr7529Turkishru692Russianccp800Chakmabn2599Banglaru5738Russianbn3826Banglaccp1927Chakmaccp5896Chakmachr7491Cherokeeth1029Thaibn6297Banglatr5920Turkishtr6075Turkishbn5053Banglabn969Banglaiu3068 Inuktitutbn3868Banglabn1289Banglaar1551Arabicbn5368Banglazh6390Chinesees7253Spanishru7430Russianru2151Russianar5188Arabiceo1704 Esperantozh4676Chinesear2547Arabicen2044Englishiu4080 Inuktitutsr7017Serbianfr4280Frenchfr5540Frenchen6505Englishth8086Thaisr1251Serbianen1065Englishchr3376Cherokeear1363Arabicchr1450Cherokeebn7619Banglasr6083Serbianfr6643Frenches7567Spanishsr1549Serbianja2841Japanesetr3848Turkishen7130Englishes3114Spanishtr4044Turkishchr1784Cherokeechr2565Cherokeechr4515Cherokeeel6512Greekfr7495Frenchru6687Russianchr1214Cherokeetr1171Turkishel2566Greekiu436 Inuktitutja3141Japanesees3416Spanishsr753Serbianchr1199Cherokeefr7714Frenchsr6133Serbianfr7436Frenchel7017Greekiu4548 Inuktitutsr849Serbianes1332Spanishzh5865Chineseel3934Greekfr3148Frenches1446Spanishel1958Greekja1688Japaneseja5932Japanesefr1671Frenchsr5921Serbianes7470Spanishth725Thaith5666Thaiel7665Greekchr5376Cherokeeel1514Greekja7115Japanesezh5179Chinesees7665Spanishth3374Thaies2794Spanishja3787Japanesefr273Frenches6959Spanishzh2668Chineseel5933Greeksr4922Serbianen5048Englishru4014Russianja6133Japaneseja3544Japaneseru6372Russianel7932Greekbn2007Banglaen85Englishbn892Banglath6100Thaies6318Spanishja5153Japanesesr6333Serbianbn179Banglaes5083Spanishfr5662Frenchccp3343Chakmaes4304Spanishth6135Thaieo603 Esperantozh4449Chineseja4011Japanesefr3888Frenchchr4450Cherokeeel6884Greekfr5095Frenchtr6526Turkishchr1524Cherokeechr8029Cherokeees1142Spanishbn2821Banglaccp7774Chakmaja7660Japaneseth3847Thaibn7001Banglachr7169Cherokeechr4903Cherokeeeo806 Esperantobn1821Banglael5948Greekes8070Spanishru6429Russianfr3788Frenchtr3588Turkishzh7250Chinesechr1006Cherokeeth5358Thaizh392Chineseja2066Japaneseeo3931 Esperantoru2191Russianccp7191Chakmaar4255Arabicel4085Greekeo4345 Esperantoru887Russiantr4798Turkishru3389Russianar4934Arabictr1480Turkisheo5292 Esperantoja1696Japaneseru5639Russianzh6814Chineseen7056Englishchr5485Cherokeesr3936Serbianru3680Russianfr6496Frenchtr965Turkishbn7002Banglafr7408Frenchsr5806Serbianeo5570 Esperantoru1580Russianccp7433Chakmaes4214Spanishchr6287Cherokeees4987Spanishsr5517Serbianzh1100Chinesear6018Arabicen6963Englishen5723Englishccp7766Chakmaes5334Spanishes7549Spanishar1165Arabicar6711Arabicchr2749Cherokeeth124Thaitr6682Turkisheo299 Esperantofr4437Frenchja6093Japaneseiu4826 Inuktitutzh2726Chinesezh3932Chineseccp2380Chakmatr7764Turkishiu4297 Inuktitutsr5134Serbianth2905Thaitr60Turkishru6537Russianar4573Arabices7446Spanishchr2000Cherokeeth3253Thaichr1416Cherokeeel6839Greekiu995 Inuktitutel7956Greeksr7472Serbianth668Thaitr1511Turkishfr3231Frenchchr4087Cherokeeth1664Thaifr2682Frenchja1902Japanesear6583Arabiciu2440 Inuktitutth2366Thaiiu7120 Inuktitutja2922Japaneseth1907Thaieo1332 Esperantoes4207Spanishchr7146Cherokeefr7406Frenchiu2485 Inuktitutccp440Chakmaru5511Russianja6063Japaneseth4051Thaizh2640Chineseja465Japaneseiu3856 Inuktitutru682Russianes4698Spanishar573Arabiceo778 Esperantofr7069Frenchel6324Greekar2920Arabicru263Russianth3874Thaichr7873Cherokeeru4210Russianeo7808 Esperantoccp4069Chakmaar4499Arabicfr4316Frenches2711Spanishiu3598 Inuktitutel2617Greekes6104Spanishtr420Turkishsr2252Serbianeo7777 Esperantochr6037Cherokeear6909Arabiciu2363 Inuktitutzh341Chineseeo938 Esperantoel4600Greekfr5051Frenchen5518Englisheo6847 Esperantosr6203Serbiansr6885Serbianth310Thaiiu2413 Inuktitutsr1099Serbianchr3713Cherokeeiu2584 Inuktitutar501Arabicfr7946Frenchja524Japaneseru322Russianccp2825Chakmaes1298Spanishel4648Greeken1430Englishth1468Thaiiu7630 Inuktitutsr1826Serbianiu6302 Inuktituttr7650Turkishfr3357Frenchen8120Englishbn1717Banglachr331Cherokeeeo318 Esperantoeo645 Esperantozh6243Chineseiu1143 Inuktitutes5905Spanishru932Russianes7323Spanishzh275Chinesees497Spanishja1483Japaneseen6456Englishbn1371Banglachr1406Cherokeeeo4416 Esperantoel1027Greektr2095Turkishth594Thaifr2083Frenchfr6477Frenchiu6352 Inuktitutzh6661Chinesechr2646Cherokeechr7129Cherokeefr7488Frenchiu5629 Inuktitutiu7201 Inuktitutbn2165Banglaru877Russianiu7100 Inuktitutja4315Japaneseel1728Greeken2502Englishzh7217Chineseel967Greekzh6852Chinesesr4283Serbianccp6896Chakmabn402Banglachr44Cherokeear6411Arabicru4190Russianeo2890 Esperantobn7514Banglabn3982Banglabn4940Banglath5981Thaizh2707Chinesezh2878Chineseel4036Greekeo95 Esperantoes5516Spanishtr6195Turkishth7684Thaiar5476Arabiciu5548 Inuktitutzh7204Chinesechr6400Cherokeesr634Serbianja3316Japanesefr4684Frenchchr777Cherokeeja4605Japanesechr4387Cherokeeja6569Japanesees740Spanishja8139Japaneseth4411Thaien5741Englishen788Englisheo1686 Esperantoru3936Russianes3741Spanishar669Arabiceo5289 Esperantoru2219Russianen2215Englishiu4497 Inuktitutfr4674Frenchel6996Greeksr2792Serbianzh2795Chineseja621Japaneseru6316Russianen6547Englishth5124Thaiccp6460Chakmatr1556Turkishru4922Russiantr2005Turkishen2322Englishtr3840Turkishtr5249Turkishen3820Englishtr1360Turkishfr2619Frenchsr6359Serbiantr7324Turkishja2833Japanesebn2770Banglachr2410Cherokeeccp5792Chakmath869Thaies709Spanishsr18Serbianzh2792Chineseja7310Japanesetr7124Turkishar7403Arabicja7536Japanesesr2325Serbianchr2853Cherokeezh7121Chineseth6215Thaitr3885Turkishth6123Thaiiu2838 Inuktitutth1963Thaizh3012Chineseen7920Englishbn501Banglachr4983Cherokeeccp7385Chakmaeo7585 Esperantobn3395Banglaiu5041 Inuktituteo6117 Esperantoes1203Spanishja61Japanesetr1083Turkishccp7062Chakmath260Thaiccp2939Chakmath4714Thaizh7358Chineseru2711Russianeo7487 Esperantoiu115 Inuktitutel2852Greeksr7213Serbianth864Thaija7912Japanesesr5764Serbianel6661Greektr2219Turkishen7238Englishsr13Serbianfr1038Frenchja5623Japaneseth4422Thaibn2152Banglaeo8039 Esperantoiu2522 Inuktitutar4816Arabicchr3389Cherokeeccp2129Chakmatr4188Turkishtr7332Turkishchr4907Cherokeechr1040Cherokeebn7204Banglafr1551Frenchccp4511Chakmaen6221Englisheo509 Esperantoja2712Japanesezh2020Chineseeo6446 Esperantoiu7087 Inuktitutzh5951Chinesechr1488Cherokeebn6354Banglael2028Greekiu6623 Inuktitutccp2131Chakmaiu4227 Inuktitutel894Greekiu4121 Inuktitutes626Spanishth1353Thaiccp5263Chakmabn6177Banglasr4641Serbianzh5609Chinesees3017Spanishja3470Japanesetr3247Turkishbn5876Banglael7853Greektr358Turkishel1900Greekes7434Spanishbn4716Banglafr2809Frenchru2680Russianfr3831Frenchbn3660Banglael4940Greekth3659Thaien6236Englishes1196Spanishes1645Spanishes6809Spanishru7174Russianbn4657Banglaar7388Arabicel3494Greekeo2051 Esperantoes2268Spanisheo1157 Esperantoar1157Arabicar4158Arabicccp180Chakmasr6070Serbianfr1694Frenchbn6129Banglachr525Cherokeees2085Spanishbn616Banglaes6811Spanishchr3933Cherokeees8091Spanishsr5023Serbianeo5602 Esperantotr5289Turkishzh3955Chineseccp6484Chakmafr6919Frenchbn4640Banglaes4683Spanishccp1356Chakmachr5473Cherokeeru5096Russianzh1586Chinesechr4746Cherokeeen1978Englishru233Russianru1259Russiantr8073Turkishchr881Cherokeefr2119Frenchel5352Greeken6387Englisheo752 Esperantoeo7590 Esperantotr1946Turkishes3062Spanishen3110Englishsr7769Serbianiu75 Inuktitutth8084Thaizh3230Chineseel3622Greeken3973Englishfr7584Frenchccp2212Chakmaen4911Englishfr6104Frenchru8119Russianth2228Thaifr4340Frenchtr4032Turkishja2426Japaneseeo65 Esperantoar5711Arabicru4850Russianes3257Spanishja8173Japaneseen5706Englishsr2319Serbianeo1142 Esperantoar4553Arabicbn2841Banglaen2713Englishen1932Englishar5434Arabicfr86Frenches7937Spanishfr6039Frenchru1665Russiansr1795Serbianar8111Arabicbn2411Banglafr3500Frenchru1621Russiantr1669Turkishth611Thaizh2349Chineseja1146Japanesear6228Arabicja7648Japanesezh5718Chineseel7446Greekja5902Japanesechr4652Cherokeefr7372Frenchar5183Arabiczh5677Chinesebn7410Banglabn1286Banglachr5768Cherokeeeo5832 Esperantoes4638Spanishchr7520Cherokeeja1372Japaneseen6393Englishchr7635Cherokeeiu1592 Inuktitutiu6125 Inuktitutel274Greekchr1061Cherokeezh2182Chinesezh977Chinesezh3666Chinesees5946Spanishiu987 Inuktitutru6450Russianel414Greekzh8081Chineseiu1521 Inuktitutzh2013Chineseccp3125Chakmaiu3617 Inuktitutzh6783Chineseccp4810Chakmaen5176Englisheo4475 Esperantochr3518Cherokeetr4997Turkishiu4205 Inuktituttr6462Turkishzh3270Chinesesr6040Serbianbn2435Banglaar3735Arabicchr6491Cherokeear4297Arabiceo7024 Esperantosr6895Serbianbn3825Banglaccp4677Chakmael4028Greeksr295Serbianiu4639 Inuktituten2573Englishfr1442Frenchzh642Chinesear4162Arabicel6991Greeksr3881Serbianzh5350Chineseccp2855Chakmabn7380Banglaen1056Englishsr157Serbianchr1064Cherokeeen3113Englishzh867Chinesees4794Spanishccp3068Chakmafr7107Frenches4430Spanishel2227Greekfr1480Frenchth7670Thaizh8150Chinesebn3567Banglaes4739Spanishel246Greekru3258Russianen36Englishth5347Thaien6334Englishtr7736Turkishen3246Englishru2111Russiantr145Turkishtr932Turkishiu1569 Inuktituttr2285Turkishbn4925Banglaja932Japaneseth2767Thaichr4510Cherokeear6745Arabices5140Spanishth5761Thaisr1730Serbianth4046Thaichr7629Cherokeeth1346Thaiccp1934Chakmaiu5764 Inuktitutja3594Japaneseth4598Thairu4093Russianth5170Thaichr6992Cherokeear1622Arabicsr2819Serbianes1522Spanishru621Russianbn1875Banglafr4910Frenchar5698Arabicchr2743Cherokeefr356Frenchja2051Japaneseccp3862Chakmaja6953Japaneseth729Thaith4253Thaith6177Thaith1260Thaieo337 Esperantoar2253Arabices727Spanishtr2276Turkishja8107Japanesezh1172Chinesezh3460Chinesees1175Spanishes1531Spanishel1412Greektr3495Turkishccp5435Chakmazh2571Chineseru514Russianchr1652Cherokeeeo6194 Esperantoja6447Japanesees6133Spanishar2087Arabicel5207Greeksr3064Serbianbn197Banglael4202Greekar7392Arabicel8086Greekeo3520 Esperantoes6708Spanishja5607Japaneseth5967Thaith6929Thaiar1093Arabicen2189Englishes4823Spanishth7179Thaizh4892Chineseccp6360Chakmazh5990Chineseel4413Greekiu4170 Inuktitutsr2451Serbianzh6712Chinesear5514Arabiceo4226 Esperantoel785Greekja2855Japaneseja6017Japaneseiu7592 Inuktitutfr1457Frencheo2815 Esperantoru4261Russianfr1573Frenchth1949Thaitr4822Turkishchr6689Cherokeees6555Spanishtr6921Turkishru6088Russianth19Thaizh3597Chineseccp5717Chakmaru5277Russiansr4824Serbianeo2404 Esperantofr3212Frenchth5705Thaitr5785Turkishru3032Russianiu3590 Inuktitutru4536Russianru2755Russianccp5536Chakmaru7453Russianth7153Thaichr90Cherokeeeo2799 Esperantofr7618Frenchru1206Russianiu3895 Inuktitutzh5629Chinesebn6997Banglaccp4307Chakmachr6549Cherokeeth5968Thaien7964Englishtr2090Turkishen343Englishen4834Englisheo1399 Esperantobn6665Banglazh1083Chinesefr881Frenchar5148Arabicchr7874Cherokeefr7457Frenchzh248Chinesear2284Arabicsr6059Serbianar7415Arabicbn2685Banglaja5394Japaneseen5856Englishel2619Greekfr6671Frenchbn1615Banglaiu2603 Inuktitutiu1585 Inuktitutru431Russianbn3168Banglaar1610Arabicsr315Serbianbn2453Banglaccp1856Chakmaar6334Arabiciu6964 Inuktituten478Englishbn974Banglaar3438Arabicccp4589Chakmaccp7767Chakmachr6224Cherokeefr3563Frenchru7469Russianzh422Chinesear383Arabicbn3600Banglaru3235Russianen2731Englishen7184Englishchr1033Cherokeeeo4548 Esperantoen584Englishth6133Thaitr5768Turkishccp3169Chakmael6743Greekes5465Spanishru6069Russiansr7088Serbianzh5021Chineseen5643Englishiu3682 Inuktitutccp6506Chakmaeo127 Esperantofr204Frenchth6192Thaiar6385Arabicchr4967Cherokeebn5183Banglaes3244Spanishth6594Thaieo8102 Esperantobn6095Banglaiu1601 Inuktitutchr1197Cherokeees3124Spanishiu1022 Inuktitutbn8174Banglael1640Greeken1808Englishiu2626 Inuktitutchr5652Cherokeetr6122Turkishru7597Russianar7940Arabiczh5512Chinesesr4241Serbiansr4833Serbianen6374Englishfr2458Frenchfr7077Frenchja5462Japanesebn2053Banglaes4950Spanishiu2933 Inuktitutccp6371Chakmachr3157Cherokeear8137Arabicbn2430Banglaccp6555Chakmaar7031Arabicel1004Greekfr293Frenchchr1563Cherokeeja7608Japaneseeo5288 Esperantoth3365Thaieo6349 Esperantozh327Chinesesr2441Serbianiu5714 Inuktitutes2579Spanishtr7363Turkishtr8002Turkishes4330Spanishar5140Arabiceo1742 Esperantofr6001Frenchfr1821Frenchru16Russianru2872Russianja5267Japaneseth3217Thaifr8082Frenchbn4267Banglaru7120Russianen4535Englishen1048Englisheo4593 Esperantoth3258Thaisr2255Serbianzh5630Chineseccp4053Chakmafr5032Frenchccp5704Chakmaes166Spanishru2307Russianfr6425Frenchen1921Englishru5729Russianes2803Spanishiu823 Inuktitutsr6198Serbianeo3346 Esperantoes4133Spanishru915Russianzh6993Chinesefr7524Frenchfr5644Frenchsr7481Serbianzh2114Chinesear1748Arabicfr4009Frenchsr532Serbiantr2345Turkishen4496Englishar5010Arabicth7522Thaies870Spanisheo4789 Esperantosr348Serbianel59Greekel159Greeken7852Englishccp5409Chakmaen936Englisheo4627 Esperantoth6391Thaiar859Arabicru225Russiantr5097Turkishiu4785 Inuktitutar5708Arabicar3963Arabictr5718Turkishes1547Spanishes2240Spanishru2378Russianel6279Greektr7344Turkishja362Japaneseth1020Thaizh6151Chineseiu7435 Inuktituteo1413 Esperantoccp5574Chakmaiu7970 Inuktitutja542Japaneseccp7099Chakmazh6049Chinesefr56Frenchtr6750Turkishen222Englishen7390Englishja3066Japanesesr7428Serbianja3485Japaneseja6975Japanesear3026Arabicar121Arabicfr1144Frenchel1970Greekchr3068Cherokeeiu999 Inuktitutsr6706Serbianru5657Russianja580Japanesear5412Arabictr578Turkishiu1375 Inuktitutar7812Arabicccp1669Chakmaru7494Russiantr715Turkishiu2493 Inuktitutsr6051Serbiantr493Turkishtr973Turkishar4045Arabicfr2973Frenchja5714Japanesetr7164Turkisheo4134 Esperantochr2691Cherokeear1539Arabicar7847Arabicel578Greekeo4219 Esperantotr1241Turkishfr4622Frenchar6994Arabiczh1737Chinesezh3368Chineseiu4511 Inuktitutru400Russianeo4635 Esperantoth5221Thaieo2852 Esperantoccp7519Chakmaccp5871Chakmaja3124Japanesetr6457Turkishru3958Russianth3393Thaies4267Spanishth3963Thaies1319Spanishzh2170Chinesechr4355Cherokeesr4512Serbianth7109Thaiiu1612 Inuktitutar3158Arabicen470Englishes5586Spanishzh7127Chineseccp1851Chakmaar825Arabicel2667Greekbn2947Banglachr3883Cherokeechr3962Cherokeees8145Spanishtr3638Turkishtr7622Turkisheo7393 Esperantoja7897Japaneseth3351Thaichr3850Cherokeetr2045Turkishccp1788Chakmaeo5884 Esperantoja7611Japaneseth2533Thaiel3983Greekccp2627Chakmath1892Thaith2059Thaitr6342Turkishtr4520Turkishja2390Japanesebn2494Banglafr502Frenchccp2948Chakmaeo2330 Esperantofr7846Frenchel1263Greekccp155Chakmaja4074Japanesezh2317Chinesebn8182Banglatr5613Turkishel2631Greeken7507Englishar7142Arabicar6790Arabicen2824Englishen6018Englisheo2030 Esperantoes4770Spanishiu5810 Inuktitutel3060Greeken838Englishccp6814Chakmaen4783Englishth4065Thaichr6379Cherokeeen1436Englishel7497Greektr7891Turkishbn6774Banglaru5152Russianru6789Russianfr6704Frenchja7470Japanesear7599Arabicccp7505Chakmael2701Greekiu5570 Inuktituttr266Turkishes5215Spanishbn7586Banglael5380Greekiu1426 Inuktitutiu7688 Inuktitutru5758Russiantr5895Turkisheo4106 Esperantotr6265Turkishja1095Japanesetr6412Turkishchr6774Cherokeefr4731Frencheo2448 Esperantozh1300Chineseiu2314 Inuktitutchr7237Cherokeechr7865Cherokeesr6045Serbianeo4573 Esperantozh3451Chinesesr4631Serbianru6800Russianes6771Spanishru2793Russiantr7916Turkishfr476Frenchar2239Arabicja4092Japaneseja1605Japaneseth6458Thaibn3136Banglabn5576Banglaeo7048 Esperantoeo4443 Esperantoes8055Spanishfr7092Frenchru1624Russianen7204Englishtr3077Turkishccp7811Chakmachr3165Cherokeeccp304Chakmachr269Cherokeezh999Chineseiu3360 Inuktituteo4859 Esperantoiu3126 Inuktitutel6786Greekchr3679Cherokeeru2299Russianchr7238Cherokeechr5926Cherokeeccp4785Chakmabn2714Banglafr6309Frenchru6755Russianen1623Englishbn6925Banglaen7492Englishel2249Greekar7173Arabicccp6543Chakmaes2267Spanishru8186Russianchr595Cherokeeja3595Japaneseja6929Japaneseen1084Englishiu7944 Inuktitutzh3510Chinesechr4180Cherokeesr4182Serbianfr7983Frenchzh2509Chineseen6080Englishar1906Arabicccp736Chakmaar304Arabicfr6578Frenchen3940Englishccp135Chakmaja2274Japaneseja6498Japanesefr1547Frencheo276 Esperantoeo1272 Esperantoru1857Russianchr5490Cherokeeth1283Thaiel3500Greekbn4467Banglaja816Japaneseel1884Greekeo4006 Esperantoar7375Arabicchr1266Cherokeetr1645Turkishsr5727Serbianar2595Arabictr6344Turkishbn1612Banglath1298Thaith7370Thaien2590Englishbn3891Banglatr3961Turkishiu4485 Inuktitutes2339Spanishzh7055Chinesechr4606Cherokeeeo5447 Esperantochr5839Cherokeeiu5441 Inuktitutja1216Japaneseeo531 Esperantoen6357Englisheo736 Esperantoiu1023 Inuktituttr7271Turkishzh5743Chineseeo7903 Esperantozh7070Chinesechr8108Cherokeeiu3469 Inuktitutel920Greeksr1464Serbianar2486Arabiceo6315 Esperantoes732Spanishiu3536 Inuktitutsr1434Serbiantr5470Turkishth5994Thaisr8041Serbianzh5600Chinesear2151Arabictr2638Turkishja1685Japanesefr2218Frenchtr485Turkishen162Englishes2989Spanishen793Englishzh5800Chineseja96Japanesear848Arabicchr2514Cherokeeiu6038 Inuktitutchr1244Cherokeesr7717Serbianzh2562Chineseru4019Russianru4908Russianccp2638Chakmaeo3305 Esperantoeo4940 Esperantoth6343Thaiar926Arabicar6888Arabicen6206Englishja4660Japanesetr1822Turkishel3163Greekar5748Arabiceo7654 Esperantoes6396Spanishru8169Russianru3664Russianth3149Thaizh346Chineseen2414Englishes4107Spanishiu1678 Inuktitutru6536Russianel4349Greekiu6642 Inuktituttr7434Turkishzh284Chineseccp4302Chakmael7466Greekru6743Russiantr3154Turkishfr911Frenchbn4507Banglael1818Greekel6748Greekeo4119 Esperantoes1758Spanishel3640Greekja1635Japaneseja2342Japaneseru7757Russianru5055Russianen1499Englishth4848Thaies7007Spanishchr4046Cherokeeen5043Englishja2951Japanesebn1679Banglaen2192Englishth237Thaiar5233Arabicen7857Englishes6082Spanishes6812Spanishja1162Japanesear4448Arabicchr6738Cherokeefr831Frenchru3287Russiantr5101Turkishru1378Russianchr3752Cherokeeel575Greekeo6739 Esperantosr3974Serbianzh376Chinesesr4910Serbianbn2586Banglaccp207Chakmaen4354Englishth7494Thaies7849Spanishes5007Spanishel3675Greekja4596Japaneseru4740Russiantr6493Turkishar3481Arabicar5262Arabicbn5141Banglabn5507Banglaccp6253Chakmaes1990Spanishiu2664 Inuktitutru3180Russiansr1855Serbiantr6297Turkishccp6795Chakmasr7615Serbianel5776Greekes913Spanishja6243Japaneseiu7556 Inuktitutja6170Japaneseja4020Japaneseja3337Japaneseth48Thaisr1119Serbianel8175Greekja435Japaneseiu6893 Inuktitutccp3512Chakmaiu1228 Inuktitutth810Thaibn1547Banglael4762Greekru5642Russianja376Japaneseeo2066 Esperantosr7781Serbianel7187Greektr4484Turkishel6003Greekes5468Spanishes342Spanishar2487Arabices941Spanishel43Greeken2081Englishfr5040Frenchel6054Greekes7230Spanishar3773Arabicja47Japanesees1599Spanishth4502Thaiar7105Arabictr5680Turkishar5853Arabicru5883Russianfr3055Frenchth894Thaizh5620Chineseel5188Greekel7694Greekfr1098Frenchru3520Russianchr3810Cherokeeiu6885 Inuktitutes6806Spanishsr7282Serbianccp7198Chakmabn5720Banglaeo5124 Esperantoeo5448 Esperantosr5913Serbiansr976Serbiantr5215Turkishru5347Russianzh4810Chineseel3901Greeken1860Englishel6315Greektr244Turkisheo2563 Esperantoen6483Englishfr4829Frenchel5772Greekiu111 Inuktitutel1997Greekiu6567 Inuktituten6271Englishfr3731Frenchth286Thaisr467Serbianccp1539Chakmath3943Thaiiu4805 Inuktituttr5351Turkishfr6027Frenchfr7573Frenchar7508Arabicchr7806Cherokeebn7167Banglaeo7904 Esperantoeo6877 Esperantoccp7248Chakmazh3763Chineseccp5290Chakmael3732Greekccp296Chakmath7757Thaiiu3881 Inuktituttr3134Turkishes6067Spanishzh5839Chineseen2964Englishth36Thaisr401Serbiansr3365Serbianru2178Russiansr905Serbianes2889Spanishiu4877 Inuktitutsr5799Serbianchr6714Cherokeezh6618Chineseccp3893Chakmaen1619Englishchr7980Cherokeeja4186Japanesear549Arabicsr6928Serbianen7278Englishes4597Spanishzh3697Chineseccp460Chakmafr6588Frenchtr1105Turkishccp2699Chakmaeo7413 Esperantoja5840Japaneseiu1514 Inuktituttr552Turkishja810Japanesefr3670Frenchtr652Turkishth7035Thaiar8000Arabicbn732Banglabn2129Banglaeo1164 Esperantotr4145Turkishbn6094Banglaes3936Spanishar7701Arabices512Spanishtr2270Turkishfr7631Frenchtr5377Turkishsr6953Serbianen1302Englishes3457Spanishtr399Turkishar5831Arabicel6023Greekfr2453Frenchchr6010Cherokeees6676Spanishel1185Greekar3258Arabiciu507 Inuktitutccp3151Chakmachr3125Cherokeeja7023Japanesefr983Frenchar4397Arabiczh2439Chineseccp943Chakmaru8072Russianccp2287Chakmachr7443Cherokeeru995Russianth4268Thaiccp2976Chakmaru2044Russiansr6155Serbianth8017Thaifr6617Frenchel4941Greekru5920Russianel3227Greektr6351Turkishfr3122Frenchel5094Greekar6658Arabicen6545Englishbn4555Banglaccp7117Chakmaes528Spanishiu5775 Inuktitutar8117Arabicar6920Arabicar6992Arabiciu7517 Inuktituttr7639Turkishiu2531 Inuktitutru5647Russianbn4544Banglaiu123 Inuktitutar1822Arabicen5933Englishel5021Greekfr1514Frenchbn502Banglaen3789Englishsr4749Serbianel1035Greekth1671Thaieo3165 Esperantoen6274Englishccp130Chakmaccp3474Chakmafr5477Frenchfr6522Frenchiu3976 Inuktituten7469Englishja3169Japaneseccp2955Chakmaar7401Arabicfr2886Frenchel643Greekru140Russiantr6610Turkishzh5876Chineseen3890Englishar6427Arabictr910Turkishen2216Englishth1994Thaieo7268 Esperantobn6607Banglaccp8066Chakmasr3020Serbianiu6909 Inuktitutth7853Thaizh6714Chinesear2497Arabicbn7291Banglaccp3645Chakmatr7443Turkishbn5101Banglaen961Englishja503Japanesezh6957Chinesees2157Spanishccp2175Chakmaccp2633Chakmafr6164Frenchbn5273Banglaes1057Spanishiu4704 Inuktitutiu6147 Inuktitutth6532Thaiel5450Greektr4060Turkishfr7848Frenchccp96Chakmazh1264Chinesefr1394Frenchiu2353 Inuktituteo5393 Esperantoja7849Japanesees2633Spanishar6518Arabices3267Spanishsr5440Serbianchr1811Cherokeetr61Turkishja1828Japaneseccp6851Chakmaar5717Arabicbn5016Banglaen5848Englishfr2311Frenchtr2233Turkishel692Greeken5994Englishar7902Arabicth1940Thaisr6149Serbianchr5737Cherokeeel2984Greeken2231Englishes2005Spanishfr378Frenchth4297Thaiccp6985Chakmachr6309Cherokeeeo3877 Esperantoeo4903 Esperantoel107Greekccp5534Chakmaes3701Spanishtr2701Turkishbn6557Banglaar2502Arabiczh3485Chineseel2454Greekccp8157Chakmaeo1927 Esperantosr8118Serbianes6733Spanishbn17Banglabn4920Banglaccp4696Chakmaccp423Chakmaiu1896 Inuktitutar4503Arabicth3935Thaifr401Frenchbn7456Banglaes7829Spanisheo7224 Esperantoiu719 Inuktituten6085Englishes3346Spanishja1932Japaneseel2137Greekja8146Japanesezh7985Chinesechr1535Cherokeetr2668Turkishccp7234Chakmath4247Thaizh6587Chineseiu2126 Inuktitutja7277Japaneseel6665Greekes1347Spanishtr2205Turkishiu766 Inuktituten3750Englishel5664Greekeo6187 Esperantozh4851Chinesefr3226Frenchja6109Japanesechr4649Cherokeetr7874Turkishth456Thaija1631Japanesechr7194Cherokeeja3616Japanesezh1609Chinesechr7180Cherokeeccp2142Chakmaes2508Spanishccp4494Chakmasr7000Serbianeo4535 Esperantoeo4823 Esperantozh6389Chinesebn117Banglaccp5022Chakmabn2051Banglachr6367Cherokeeth412Thaizh2180Chinesezh6575Chinesees2176Spanishtr6447Turkishzh7362Chineseccp242Chakmaru4530Russiansr3411Serbiantr1749Turkishccp1772Chakmasr4006Serbianel207Greektr5702Turkishar5660Arabicen7121Englishtr3591Turkisheo36 Esperantobn561Banglaes4050Spanishchr7634Cherokeetr3841Turkishiu7614 Inuktitutsr3852Serbianbn5292Banglaeo2559 Esperantoja6549Japanesear7283Arabiceo2754 Esperantotr7215Turkishen3493Englisheo7563 Esperantoen4623Englishth6998Thaichr2221Cherokeeeo3322 Esperantofr1099Frenchchr1281Cherokeebn5196Banglafr511Frenchja1431Japaneseccp3399Chakmabn7250Banglachr4171Cherokeees3013Spanishsr7155Serbiantr7614Turkishar2211Arabiczh3215Chinesefr4295Frenchbn7621Banglaiu6216 Inuktitutru7789Russianel4246Greekiu1397 Inuktitutar649Arabicru3435Russianth1205Thaiar4893Arabicar4226Arabicth2162Thairu1274Russianccp3109Chakmaen4264Englishtr7681Turkishzh786Chinesefr1915Frenchru959Russianeo1621 Esperantoja979Japaneseen6072Englishth641Thaiar3244Arabicchr615Cherokeebn1264Banglasr2162Serbianar4181Arabicfr4429Frenchsr3563Serbianar6059Arabiceo1541 Esperantoiu8184 Inuktitutru267Russiansr3556Serbianel1878Greekiu662 Inuktitutth903Thaisr4662Serbianel6797Greeken2596Englishru2183Russianar6010Arabicccp2220Chakmaja3596Japanesetr1389Turkishru141Russianeo6981 Esperantozh435Chineseeo1631 Esperantoiu4135 Inuktitutzh2194Chinesefr1575Frencheo495 Esperantoar3261Arabices7403Spanishchr5641Cherokeeccp7997Chakmaiu5217 Inuktituten6785Englishccp5549Chakmaen3846Englishja3813Japanesechr1361Cherokeetr2566Turkishru6944Russianth364Thaizh3092Chineseth5196Thaiar5024Arabicsr765Serbianchr1618Cherokeebn6701Banglaeo1315 Esperantotr3023Turkishen405Englishfr7721Frenchtr774Turkishes6885Spanishiu3233 Inuktitutar3171Arabicel3156Greekfr6724Frenchtr2678Turkishja6402Japanesebn120Banglaja1276Japaneseja4852Japanesees6690Spanishccp3621Chakmaen3452Englishes7456Spanishiu2025 Inuktitutar5841Arabicccp2970Chakmazh4262Chineseen3531Englishzh4785Chineseeo7069 Esperantoja6860Japaneseeo3117 Esperantobn2050Banglafr5467Frencheo249 Esperantoel4659Greeksr7159Serbianzh2620Chinesear1825Arabicsr6415Serbianru4953Russianzh1917Chinesebn7345Banglaccp7148Chakmaen3407Englishbn7060Banglachr489Cherokeechr4117Cherokeeth7642Thaiccp7188Chakmael824Greekja6353Japanesezh1352Chineseen6839Englishzh6028Chineseen7194Englishar688Arabices2708Spanishfr4828Frenchchr3305Cherokeetr1951Turkishtr6278Turkishzh1144Chinesezh4786Chineseel2796Greekccp7226Chakmaes4930Spanishchr3335Cherokeeen693Englishiu3486 Inuktituten956Englishiu3551 Inuktitutar5221Arabicccp2338Chakmaeo3897 Esperantochr977Cherokeeiu204 Inuktitutru2430Russianes7587Spanishfr1539Frenchfr7575Frenchiu6767 Inuktitutru5866Russianar6808Arabiceo2481 Esperantoiu4484 Inuktitutzh6157Chinesear5715Arabicja7745Japanesefr814Frenchchr6772Cherokeeiu376 Inuktitutru4539Russianzh4579Chineseccp6939Chakmaccp4928Chakmath3861Thaieo1008 Esperantobn3731Banglaar6094Arabicfr4052Frenchfr3543Frenchchr1768Cherokeeth6822Thaichr5250Cherokeetr3654Turkishth3345Thaien5299Englishth970Thaiel7713Greeken3475Englisheo4433 Esperantoru3073Russianeo4925 Esperantochr3922Cherokeezh1112Chineseen4994Englishfr1208Frenches5795Spanishar7306Arabicccp2842Chakmaru1854Russianth3074Thairu7301Russianchr2374Cherokeeja7294Japaneseen4520Englishth7399Thaiccp3581Chakmabn1580Banglatr6468Turkishar828Arabiceo5480 Esperantozh7487Chinesebn6195Banglaen6826Englishtr3303Turkishar7668Arabicar4902Arabicchr6292Cherokeezh3810Chinesebn3848Banglabn7895Banglaja2617Japaneseen5466Englishiu146 Inuktitutes6527Spanishchr3831Cherokeefr137Frenchiu1279 Inuktitutbn1780Banglael349Greekiu5639 Inuktitutiu2889 Inuktitutiu4066 Inuktitutbn3841Banglaeo361 Esperantoar2650Arabicfr4087Frenchth5343Thairu7527Russianel2508Greekel8162Greekel450Greekth3054Thaitr3694Turkishsr4236Serbianes3495Spanishtr934Turkishru5624Russianru2286Russianiu8013 Inuktitutel1339Greekccp2986Chakmaen1630Englishbn2171Banglaru6149Russiansr771Serbianchr6602Cherokeear5657Arabices2294Spanishel7443Greekth5371Thaiar2672Arabicar6093Arabiceo2501 Esperantoiu2698 Inuktitutiu726 Inuktituttr3345Turkishja27Japaneseiu5342 Inuktituteo1318 Esperantoar4085Arabicja2840Japanesechr3968Cherokeetr1500Turkishbn973Banglabn1572Banglaiu5911 Inuktitutru5927Russiantr1318Turkisheo3505 Esperantobn6910Banglaeo3699 Esperantoar6454Arabices4826Spanishth1699Thaith7643Thaitr6117Turkishbn198Banglael6346Greeken3876Englishen858Englishchr3076Cherokeees7884Spanishth5529Thaichr6995Cherokeesr6028Serbiantr495Turkishchr6972Cherokeeiu5434 Inuktitutes6376Spanishbn322Banglasr4724Serbianes1270Spanishes3074Spanishfr6826Frenches5898Spanishchr3932Cherokeetr5589Turkishsr8034Serbianar4281Arabicen3089Englisheo917 Esperantoar5908Arabicth3435Thaichr2676Cherokeeen1810Englishes1256Spanishiu1851 Inuktitutes7990Spanishru3217Russianth6059Thaisr3396Serbianja6638Japaneseccp5869Chakmael16Greektr402Turkisheo5766 Esperantoar7135Arabicen7907Englishth667Thaizh4778Chinesebn4763Banglaiu3764 Inuktitutel5593Greekiu1388 Inuktitutiu4946 Inuktitutja8007Japanesechr7527Cherokeeiu284 Inuktitutru2849Russianth3431Thaiccp6354Chakmaeo7721 Esperantoja4616Japaneseel294Greektr5625Turkishja596Japanesetr1257Turkishes849Spanishar2181Arabicth2714Thaibn229Banglath1669Thaiccp5533Chakmaes4790Spanishiu5682 Inuktitutbn2927Banglael583Greekccp4524Chakmatr4815Turkishar7781Arabicbn5593Banglaccp7238Chakmabn3811Banglael942Greektr5952Turkisheo2201 Esperantozh5340Chineseru5943Russiansr8000Serbianar8052Arabicen5639Englishccp5593Chakmaes6188Spanishru3956Russianzh3196Chinesesr487Serbianiu1123 Inuktitutsr4488Serbianzh3220Chinesetr2489Turkishsr2142Serbianbn614Banglafr7894Frenchchr2899Cherokeeja6364Japaneseiu3879 Inuktitutiu1526 Inuktitutchr2074Cherokeees8077Spanishchr2905Cherokeeen1306Englishth3314Thaien5521Englishsr7678Serbianar4433Arabiciu4509 Inuktitutel103Greekzh2313Chineseru6046Russianeo7836 Esperantoen2391Englishen2129Englishar8071Arabicen6752Englishsr1046Serbianchr4047Cherokeefr3892Frenchar4279Arabicfr7787Frenchja6743Japaneseru3816Russianth5289Thaiiu7774 Inuktitutes3721Spanishel7883Greeken1033Englishel661Greekth7815Thaiccp284Chakmaiu6721 Inuktitutbn4890Banglath1801Thaith4305Thaies4459Spanishbn2035Banglaes3956Spanishzh3070Chinesebn5653Banglaiu6765 Inuktitutfr499Frenchru1671Russianru3904Russianel941Greekth2877Thaitr5404Turkishar1352Arabicccp4475Chakmabn4177Banglabn5818Banglazh3868Chineseeo7296 Esperantoes6540Spanishsr5290Serbianen6056Englishccp6580Chakmaja4960Japaneseccp2653Chakmaen407Englishru5652Russiansr3010Serbianzh3939Chineseru6565Russianth1182Thaien7174Englishja1418Japanesezh2384Chineseel3318Greeksr640Serbianth3940Thaibn1734Banglazh1293Chinesear1847Arabicccp7045Chakmabn429Banglaes5706Spanishzh3835Chinesechr183Cherokeeen5157Englishtr3684Turkishja3587Japanesear6588Arabicar22Arabictr1454Turkishar6616Arabiciu864 Inuktituten1631Englisheo5070 Esperantoes7178Spanishiu2313 Inuktituteo5625 Esperantoel5184Greekja994Japaneseccp186Chakmabn980Banglaja2932Japanesebn2393Banglaccp7101Chakmath1322Thaizh3276Chineseru890Russianja1466Japaneseja319Japaneseth7162Thaiiu7667 Inuktitutar7041Arabicja322Japaneseiu3786 Inuktitutsr4592Serbianel5365Greekiu4261 Inuktituten3538Englishja597Japaneseru8138Russianen7863Englishccp5191Chakmaen7636Englisheo5785 Esperantoeo3662 Esperantoar2348Arabicel5236Greekel3147Greekes3234Spanishth1137Thaiar2795Arabicar5971Arabiceo4022 Esperantoru6410Russiansr6053Serbianbn1551Banglaes6537Spanishth6744Thaien4243Englishar4101Arabiczh7322Chineseru41Russianes3323Spanishccp7299Chakmaen7157Englisheo6426 Esperantofr614Frenchru6317Russianzh7267Chinesetr322Turkishth2556Thaizh2609Chinesezh3590Chineseja2950Japanesebn7393Banglael40Greekar6391Arabicar5967Arabicel5922Greeksr29Serbianth3947Thaizh983Chineseel3103Greeksr4342Serbiansr6614Serbiansr7612Serbiantr2674Turkishtr7322Turkisheo5686 Esperantoja7689Japaneseja5682Japanesefr5445Frenchru1305Russianel4044Greekar2413Arabicbn2654Banglaiu6348 Inuktitutja627Japanesebn6756Banglaeo780 Esperantoru4819Russianth3846Thaitr4031Turkishel3245Greekccp2693Chakmafr6028Frenchiu5402 Inuktitutru80Russianen1204Englishes7019Spanishar7389Arabicccp372Chakmaccp7025Chakmafr1103Frenchja411Japanesezh608Chinesezh6751Chineseru7609Russianccp3833Chakmaes7415Spanishth6751Thaiel7601Greeksr7693Serbianzh4266Chineseth5664Thaifr7163Frenchel3250Greekja3170Japanesear7731Arabicja459Japaneseru923Russianth5166Thaien1612Englishfr3915Frenchja6820Japaneseel1897Greekar1025Arabices7248Spanishel7234Greekja3076Japaneseja4269Japaneseel2783Greeken2894Englishfr8051Frenchru2994Russianfr1832Frenchel2343Greekru5742Russianfr5855Frenchja4243Japaneseeo878 Esperantoeo1171 Esperantochr2090Cherokeeth7547Thaichr3613Cherokeeel6088Greekes5338Spanishar6922Arabiceo7356 Esperantoar2160Arabicel1667Greekth6071Thaies4209Spanishccp2013Chakmaes4504Spanishes6571Spanishth3680Thaien5713Englishja8191Japanesees2624Spanishbn5572Banglaiu5088 Inuktitutth6740Thaitr4468Turkishfr4220Frenchfr4292Frenchja7431Japanesetr8099Turkishfr5858Frenches943Spanishiu6335 Inuktitutzh7798Chinesefr6029Frenchiu3878 Inuktitutccp7337Chakmabn112Banglachr2796Cherokeeel7919Greekzh1623Chineseen4853Englishja5759Japanesetr1117Turkishiu5532 Inuktitutbn7089Banglasr937Serbianeo1883 Esperantoccp2286Chakmath7367Thairu7912Russianeo5817 Esperantofr979Frenchtr2318Turkishchr7851Cherokeeel7582Greekth7300Thaifr5789Frenchth2825Thaizh963Chineseccp951Chakmaru5497Russianzh7071Chinesees4556Spanishsr4788Serbianbn3066Banglaru572Russianel1173Greekja3153Japanesesr5448Serbianar3730Arabiceo3377 Esperantosr5586Serbianen6451Englishccp7178Chakmachr3834Cherokeeeo2592 Esperantofr5882Frenchth5189Thaies1104Spanishfr6256Frenchja7722Japaneseru5702Russianccp4794Chakmaes242Spanishes5143Spanishel4867Greekchr6541Cherokeechr6327Cherokeechr6576Cherokeees4938Spanishes5365Spanishzh6883Chineseel7004Greekja6342Japaneseen2498Englishchr2721Cherokeebn1509Banglazh5967Chinesefr6566Frenchbn1786Banglabn8178Banglaja3766Japanesefr1744Frenchru4227Russianru7284Russianth6640Thaibn2412Banglatr6815Turkishtr3473Turkishzh603Chinesezh4068Chineseel3261Greekel8012Greekzh7425Chinesechr6140Cherokeeen7896Englishja5527Japaneseel3185Greeksr5505Serbianes8136Spanishar190Arabicar7004Arabicen4922Englishchr549Cherokeeeo2629 Esperantoen2492Englishen3192Englishfr4897Frenchzh884Chinesear5567Arabicsr3377Serbianbn5426Banglaccp2494Chakmachr2918Cherokeesr3128Serbianth3901Thaibn8113Banglafr5479Frencheo2274 Esperantosr2370Serbiantr6362Turkishtr6413Turkishen6057Englishtr5050Turkishes684Spanishtr2271Turkisheo1659 Esperantoiu1479 Inuktituteo683 Esperantoja6150Japanesebn7302Banglachr1685Cherokeeen6127Englishfr1836Frenchiu3509 Inuktitutja4248Japanesear4437Arabicbn2618Banglael7081Greekccp430Chakmael3131Greekfr5288Frenchiu4669 Inuktituttr6006Turkishsr7975Serbianchr4707Cherokeeru1635Russianja2240Japaneseth6219Thaien7218Englishja2420Japanesechr4597Cherokeeel2293Greekes5679Spanishfr5544Frenchccp4647Chakmaru4267Russianru5565Russianja2079Japanesesr877Serbiantr6690Turkisheo3021 Esperantochr5005Cherokeeen5559Englishfr7159Frenchbn1604Banglachr6728Cherokeeth5759Thaith7444Thaieo871 Esperantoar4357Arabicen3501Englishfr829Frenchja5572Japaneseth2063Thaiel4923Greekzh4827Chinesezh6603Chineseiu3934 Inuktitutes2630Spanishsr5676Serbianchr5470Cherokeechr4073Cherokeees3623Spanishru2591Russianth2839Thaith2730Thaija5742Japanesetr6258Turkisheo1144 Esperantobn1952Banglaen7019Englishbn1141Banglaja785Japaneseth474Thaisr3116Serbianfr3541Frenchzh4632Chinesefr2522Frenchbn3328Banglabn7162Banglaccp3538Chakmaccp6408Chakmafr5929Frenchru8120Russianth5431Thaith6683Thaith423Thaiel3905Greekeo4632 Esperantoes6546Spanishbn7328Banglaccp7116Chakmaar2055Arabicbn5284Banglaja4398Japanesees5610Spanishru2215Russianiu3104 Inuktitutar6636Arabicsr5597Serbiansr7574Serbianth6064Thaitr7563Turkishru7653Russianen1881Englishtr2203Turkishtr3422Turkishfr4831Frenchth7180Thaitr7416Turkishiu2888 Inuktitutchr3726Cherokeeccp342Chakmatr6881Turkishfr752Frenchen4781Englishja1343Japanesetr7003Turkishccp2209Chakmaes1307Spanishtr7979Turkishar6405Arabicfr4867Frenchar1567Arabicar1749Arabicar4848Arabicel7726Greekel3040Greekru2965Russianbn7262Banglatr1730Turkishru2261Russianja5567Japanesesr4316Serbianru7902Russianccp5416Chakmaeo7911 Esperantoeo5628 Esperantoar735Arabicar7766Arabiceo1121 Esperantoth2769Thaitr3311Turkishja905Japanesesr6601Serbianchr213Cherokeeeo386 Esperantosr1217Serbianel2161Greeken840Englishes165Spanishzh3683Chinesechr8085Cherokeetr5978Turkishja1408Japanesezh4519Chinesear489Arabiczh2460Chineseccp3102Chakmaiu424 Inuktitutsr4098Serbianel6117Greekja7513Japanesechr7212Cherokeezh6256Chinesezh6805Chineseen6442Englishru7548Russianchr3538Cherokeeel5189Greekchr1310Cherokeebn2872Banglaes7180Spanishsr6326Serbianar853Arabices6591Spanishccp2589Chakmath2713Thaisr442Serbianja7070Japanesechr4781Cherokeeen258Englishel7642Greekel379Greekja2659Japaneseth1435Thaiccp6409Chakmabn670Banglaja3983Japaneseru759Russianchr1762Cherokeees7129Spanishccp4996Chakmasr1468Serbianiu7013 Inuktituttr6107Turkishen5206Englishchr7090Cherokeees520Spanishth5038Thaien5431Englishfr3186Frenchar4385Arabiczh2355Chineseen6838Englishes3518Spanishccp2218Chakmael6416Greekfr5402Frenchru3010Russiansr4933Serbianfr5404Frenchbn6192Banglael678Greekru3174Russianru1329Russiantr3609Turkishru5424Russianzh2297Chineseiu916 Inuktitutzh2455Chineseeo1920 Esperantoccp3293Chakmaes3852Spanishes7660Spanishth3151Thaies6412Spanishar1866Arabictr8161Turkishccp1387Chakmaeo4799 Esperantoiu178 Inuktituttr4116Turkishes2159Spanishchr3948Cherokeear215Arabicen8139Englishsr3932Serbianzh3640Chinesechr6949Cherokeeja4814Japanesezh618Chinesetr4827Turkishzh1961Chinesezh6165Chinesees4853Spanishsr1193Serbianeo1314 Esperantoru382Russianzh1799Chineseiu261 Inuktitutbn558Banglaja6173Japanesebn4652Banglaru1324Russianth646Thairu3990Russianzh1862Chinesechr6849Cherokeebn630Banglaccp6414Chakmaen4770Englishen7284Englishtr1639Turkishiu5207 Inuktitutru5827Russianen1698Englishchr7819Cherokeeiu5726 Inuktitutel5796Greeken7974Englishiu2117 Inuktitutru7511Russianth58Thaitr837Turkishja1439Japaneseeo5714 Esperantobn3185Banglaeo6389 Esperantoiu4706 Inuktituttr7486Turkishccp6832Chakmael6802Greekiu162 Inuktitutbn2018Banglaar4346Arabicbn782Banglafr1607Frenchru7034Russianru7076Russianchr3577Cherokeeja8133Japaneseru5139Russianen7771Englishar4009Arabicbn3052Banglaar395Arabicchr6069Cherokeear694Arabiceo7584 Esperantosr2915Serbianar1397Arabictr3483Turkishja2150Japaneseru7091Russianchr2747Cherokeeel6966Greekeo1970 Esperantoes7901Spanishccp348Chakmatr6867Turkishja3444Japanesefr5538Frenchsr5444Serbianth6754Thaiiu1430 Inuktitutel3754Greekja6183Japanesear3936Arabictr1715Turkishth3312Thaitr4399Turkishccp5073Chakmaen8166Englishja865Japaneseja1610Japanesebn6810Banglaen4852Englishes450Spanishes3737Spanishel2738Greeksr5081Serbiansr6202Serbiansr5757Serbianth7338Thaiiu4607 Inuktitutsr7916Serbianes7865Spanishel3092Greektr3906Turkishru1275Russianeo824 Esperantoes4961Spanishiu8089 Inuktitutzh454Chineseel2444Greeken6004Englishen2258Englishfr6804Frenchtr4351Turkishzh784Chinesesr950Serbiansr1995Serbianar769Arabicth906Thaija3222Japanesetr146Turkishiu4580 Inuktitutsr5699Serbianbn3265Banglael7927Greekfr1650Frenchtr4256Turkishtr7354Turkishja92Japanesebn280Banglachr6029Cherokeeel2536Greeken5132Englishsr7875Serbianes4023Spanishbn7126Banglaja65Japaneseccp2098Chakmaccp5183Chakmachr1628Cherokeeru6174Russianchr6074Cherokeechr5407Cherokeeen920Englishru6718Russianzh7186Chineseja5997Japanesechr5930Cherokeeel5311Greekeo4682 Esperantozh1287Chinesesr3154Serbiansr4455Serbianiu1108 Inuktitutth3176Thaija3218Japaneseeo6674 Esperantofr1621Frenchzh2843Chineseel7402Greekbn7893Banglaiu3502 Inuktitutccp6681Chakmachr2609Cherokeeru5062Russianccp6509Chakmasr1328Serbianes3281Spanishfr2821Frenchja6696Japanesetr7959Turkishtr20Turkishbn8160Banglafr4377Frenchth854Thaien6058Englishja4592Japaneseiu2980 Inuktitutbn5776Banglaccp6232Chakmaiu670 Inuktitutru3417Russianru6700Russianru4903Russianbn812Banglafr6514Frenches6179Spanishfr1817Frenchchr5808Cherokeeja328Japanesezh5335Chineseel3255Greektr1196Turkishzh3116Chinesechr7358Cherokeeth3634Thaiiu5045 Inuktitutccp6381Chakmaccp7255Chakmaen6714Englishen7882Englishes6718Spanishzh6442Chinesezh6839Chinesear6061Arabices907Spanisheo2695 Esperantoeo7791 Esperantozh5770Chinesetr1355Turkishes6665Spanishsr2265Serbianzh7066Chinesezh1419Chineseel3771Greekiu832 Inuktituteo6973 Esperantoiu1403 Inuktitutbn360Banglaccp4298Chakmabn3457Banglaiu6666 Inuktituteo6640 Esperantoth3670Thaith3995Thaiccp3100Chakmabn4178Banglaar2450Arabicbn2806Banglaar4828Arabicccp6048Chakmaar519Arabicru2706Russianchr2924Cherokeesr2422Serbianth2873Thaitr151Turkishru5228Russianbn7932Banglaru6248Russianiu6292 Inuktituten8008Englishsr1222Serbianbn7186Banglafr2690Frenchfr4142Frenchtr1080Turkishtr3053Turkishtr4849Turkishchr5221Cherokeeiu2892 Inuktitutth2907Thaieo7852 Esperantoel8073Greekel1718Greekccp2582Chakmaru6723Russianeo7130 Esperantoth5035Thaitr3847Turkishtr4636Turkishja3661Japaneseja2017Japanesear517Arabicsr4432Serbiansr7001Serbianes7243Spanishfr3703Frenchchr3023Cherokeeja5914Japanesebn4254Banglazh6657Chineseja4671Japaneseeo4082 Esperantoar3732Arabicel3609Greektr862Turkishru165Russiantr6671Turkisheo7201 Esperantosr4475Serbianar7502Arabicja2598Japanesebn3212Banglatr5910Turkishes3039Spanishtr1540Turkishtr2567Turkishfr418Frenchth4275Thaiel4601Greekiu1488 Inuktitutfr4809Frenchfr6412Frenchja8032Japanesezh4214Chinesesr1670Serbianzh551Chineseccp5132Chakmaiu3449 Inuktitutru1093Russianru5725Russianzh410Chinesechr3871Cherokeechr6183Cherokeeja220Japanesesr1312Serbianzh1761Chinesefr580Frenchiu2728 Inuktitutbn2183Banglachr340Cherokeesr2389Serbianel2902Greekbn2485Banglaar3359Arabicchr4337Cherokeeen4639Englishar1914Arabicth4186Thaitr7081Turkishtr5830Turkishru3003Russianel4690Greekchr2116Cherokeear1413Arabicru604Russianbn4480Banglafr5033Frenchsr2906Serbianbn2415Banglaja4941Japaneseth5926Thaitr7277Turkishja5189Japaneseru3910Russianiu4924 Inuktitutccp4772Chakmaeo7957 Esperantoja4386Japanesefr8096Frenchbn3793Banglaru3668Russianfr8033Frencheo1075 Esperantoes5902Spanishtr1701Turkishja25Japanesechr4158Cherokeees1759Spanishbn2297Banglaar8129Arabicsr649Serbianzh5132Chineseen7797Englishja4676Japaneseel5298Greekeo2668 Esperantoth1270Thaifr6249Frenchru3766Russianth2787Thaija1600Japanesetr5136Turkishja7406Japaneseja5534Japanesear4362Arabiczh6436Chineseen6642Englishth6914Thaith3827Thaiccp3201Chakmafr1245Frenchar6838Arabicar4453Arabiceo6226 Esperantosr148Serbianccp1628Chakmath1406Thaisr4332Serbianar3035Arabiczh3753Chineseel1023Greekfr7066Frenchja6886Japaneseru699Russianiu3920 Inuktitutja1934Japaneseeo8066 Esperantobn248Banglaeo7242 Esperantoru6458Russianchr486Cherokeeeo69 Esperantoar4970Arabiciu6016 Inuktitutar1187Arabicel1651Greekzh2764Chinesees5687Spanisheo741 Esperantosr3540Serbiantr160Turkishsr6430Serbianzh5590Chinesear7441Arabiciu5880 Inuktitutiu4400 Inuktituten5092Englishar1810Arabicth4995Thaifr7542Frenchth624Thaies4061Spanishar7760Arabicel6861Greeken6917Englishfr7554Frenchtr7823Turkishen3601Englishzh199Chinesees7159Spanishchr1880Cherokeeru3672Russianes4907Spanishru1151Russianar7100Arabiciu5545 Inuktitutel3735Greekes5654Spanishzh1324Chineseeo2962 Esperantoru4401Russiantr3896Turkishtr623Turkishar4936Arabicja6532Japanesechr2690Cherokeees4689Spanishchr4611Cherokeeja3755Japaneseen5131Englishar4885Arabicfr1942Frenchfr3577Frenchfr7660Frenchiu1066 Inuktitutzh8136Chineseru2436Russianfr7567Frenchja4797Japanesefr539Frenchbn7603Banglachr22Cherokeeiu5664 Inuktituteo4522 Esperantochr4951Cherokeeel2036Greekbn7415Banglatr7146Turkishar2683Arabictr3551Turkishar5205Arabicel6658Greekes4239Spanishru4091Russianen159Englishen7155Englishru3148Russianru3501Russianth6030Thaiar3001Arabiceo6166 Esperantosr2100Serbiantr5425Turkishbn975Banglaen4432Englishsr5736Serbianel6174Greekchr8099Cherokeeru1983Russiantr293Turkishccp3374Chakmaiu6526 Inuktitutja985Japaneseja3556Japaneseru1131Russianel5339Greekzh7442Chinesebn5928Banglaja3504Japaneseja3672Japanesesr3776Serbianja590Japaneseth5050Thaiccp6983Chakmaen3706Englishccp4922Chakmaar3709Arabicar2909Arabicccp1202Chakmaccp323Chakmath1208Thaizh4723Chineseen1964Englishsr4866Serbianes6439Spanishth6197Thaichr3982Cherokeeru4958Russianru6923Russianth5873Thaichr5282Cherokeeccp4836Chakmasr5019Serbianchr155Cherokeear7239Arabiceo7100 Esperantoiu5656 Inuktitutja3176Japaneseru425Russianeo4384 Esperantoccp4120Chakmachr5209Cherokeechr3501Cherokeeja5506Japaneseiu7430 Inuktituteo2017 Esperantozh3842Chineseccp7571Chakmaja5258Japanesefr3034Frenchccp6431Chakmath3735Thaitr5841Turkishbn4450Banglasr86Serbianel7978Greekar7565Arabices1195Spanishchr4184Cherokeeja1369Japanesesr3502Serbianel213Greekes3273Spanishiu2134 Inuktituttr8130Turkishiu6020 Inuktitutes1695Spanishes3724Spanishfr1082Frenches1140Spanishel3442Greekru4334Russianar3689Arabicru804Russianes2251Spanishsr2204Serbianru2148Russianchr2985Cherokeear6934Arabicel5083Greekeo2663 Esperantoel6625Greeken4483Englishes5608Spanishru4816Russianar1619Arabicchr89Cherokeefr6678Frenches964Spanishsr5578Serbianbn45Banglachr2908Cherokeeeo794 Esperantochr6501Cherokeeja2938Japanesezh4801Chineseth7559Thaies3759Spanishccp5247Chakmaja2589Japaneseja5653Japaneseccp5560Chakmaja1282Japanesechr7064Cherokeefr4799Frenchth918Thaija4998Japanesear6425Arabicar4558Arabicar5290Arabicar6392Arabices7210Spanishiu4275 Inuktitutbn6103Banglaja1719Japaneseru440Russianchr4237Cherokeefr1179Frenchru4202Russianchr4070Cherokeeth8132Thaith2507Thaiel1501Greekiu4291 Inuktitutar2016Arabicsr4281Serbianccp3596Chakmabn5327Banglaiu4833 Inuktitutzh2009Chineseen1159Englishen6361Englishes781Spanishel1949Greekja478Japanesebn5908Banglaeo4937 Esperantoccp318Chakmafr7016Frenchel7376Greeken2220Englishes7786Spanishiu2633 Inuktituten1741Englishsr4500Serbianiu6377 Inuktitutar4222Arabicchr371Cherokeeen4550Englishiu7856 Inuktitutja6266Japaneseiu3418 Inuktitutsr3843Serbianes4678Spanishfr5388Frenchru274Russiantr5719Turkishccp6077Chakmaen4115Englishsr6802Serbianru3999Russianbn3394Banglaja8061Japaneseth7268Thaizh2612Chineseja4249Japaneseiu2953 Inuktitutar7067Arabicth2576Thaichr1643Cherokeeen1387Englishru5586Russianccp7674Chakmath1570Thaichr7850Cherokeebn2131Banglabn6457Banglath2612Thairu4857Russianru6324Russianfr5008Frenchen4441Englishsr4589Serbianiu5310 Inuktitutfr3229Frenchzh7240Chineseru2734Russianzh8063Chineseen3148Englishel5833Greektr1244Turkishru7204Russiansr6405Serbianzh6494Chineseen7996Englishja7854Japaneseiu4435 Inuktitutzh177Chinesezh547Chineseth7905Thaizh6956Chinesechr53Cherokeees2253Spanishbn4244Banglachr2344Cherokeeen1933Englishiu6707 Inuktitutzh6203Chinesetr3114Turkishen2285Englishbn7775Banglaeo413 Esperantozh4138Chinesebn4422Banglaccp1621Chakmabn510Banglaru3691Russianiu4811 Inuktitutbn1723Banglaccp5969Chakmael7482Greekar7800Arabictr2568Turkishes5344Spanishzh2585Chinesetr5848Turkishzh5076Chineseel2684Greekbn1748Banglazh2635Chinesefr2346Frenchru6260Russianar148Arabiciu4955 Inuktitutfr5186Frenchchr616Cherokeeru6225Russianar7641Arabicar7431Arabicth3798Thaiar2804Arabicja3624Japanesechr7375Cherokeeja6159Japaneseeo4241 Esperantoeo6239 Esperantoja1608Japanesechr2105Cherokeetr803Turkishar2938Arabicfr2334Frencheo4213 Esperantoen5693Englishru6578Russiansr1092Serbianar1288Arabictr1995Turkishar7910Arabicccp6683Chakmael7038Greekar615Arabiczh859Chineseel5228Greekes1989Spanishes4736Spanishiu6090 Inuktitutja7788Japanesesr1784Serbianiu1217 Inuktitutbn514Banglael6259Greekzh2617Chinesezh6035Chinesechr2492Cherokeebn2742Banglaen4239Englishfr5729Frenchar1036Arabicja5204Japaneseth3769Thaibn1267Banglafr1352Frenchtr311Turkishel6041Greekiu17 Inuktitutsr4373Serbiansr5947Serbianru485Russianru6812Russiansr5485Serbianes4598Spanishja2884Japaneseru1295Russianeo3633 Esperantoar6942Arabicchr3782Cherokeees1379Spanishzh6534Chinesetr6177Turkishru5896Russianeo4503 Esperantofr4633Frenchzh1152Chineseiu6505 Inuktitutbn7776Banglath1593Thaiiu5354 Inuktituttr998Turkishfr1143Frenches1283Spanishtr2436Turkishzh6869Chinesebn808Banglaen2276Englishel4761Greekes7796Spanishru4495Russianchr5579Cherokeeel696Greeksr3842Serbianth1709Thaith1939Thaizh5607Chinesezh7193Chineseeo2089 Esperantoru13Russianth5144Thaiiu4215 Inuktitutzh377Chinesechr7461Cherokeefr1628Frenchel6231Greekth7305Thairu474Russianiu4147 Inuktitutfr429Frenchru5609Russianbn2022Banglaiu4258 Inuktitutel4668Greekccp7119Chakmaen1888Englishbn6555Banglazh8156Chineseccp6834Chakmael6697Greektr6211Turkishbn4345Banglaja5958Japanesesr692Serbianen6694Englishru6312Russianiu4661 Inuktitutccp4873Chakmaes5225Spanishel1512Greekccp7243Chakmael5448Greekfr3331Frenchiu484 Inuktitutiu699 Inuktitutja3792Japaneseru5551Russiansr2633Serbiansr7038Serbianchr3793Cherokeeth4558Thaiel2993Greekru5003Russiantr6580Turkishzh4201Chineseth3800Thaibn29Banglaru2006Russiantr7690Turkishfr5409Frenchsr6876Serbianja4595Japanesesr8010Serbianar2356Arabices5124Spanishru2807Russianccp7237Chakmazh5211Chinesefr7230Frenchsr4613Serbianth7920Thaieo6661 Esperantoru6776Russianchr4325Cherokeezh2926Chinesebn1191Banglaru876Russianes442Spanishchr6745Cherokeeel340Greekfr3630Frenchen3508Englishes6291Spanishja1593Japaneseru2129Russianel6957Greekccp6751Chakmaru5122Russianes1469Spanishth751Thaies2488Spanishzh6833Chinesear2065Arabicbn7577Banglachr3358Cherokeeiu3272 Inuktitutchr7372Cherokeeja6355Japaneseja3251Japanesesr3394Serbianeo2468 Esperantozh6015Chinesefr6090Frenchru2345Russianth4353Thaifr1086Frenchth8123Thaibn1936Banglaeo7289 Esperantofr2087Frenchiu2495 Inuktitutja7091Japaneseeo7536 Esperantotr3526Turkishchr4812Cherokeeccp2593Chakmaiu927 Inuktitutar1737Arabicth4584Thaizh7696Chineseeo5694 Esperantoel4466Greekeo8043 Esperantoel6086Greeken3185Englishzh2999Chineseiu1363 Inuktitutiu8065 Inuktitutru5384Russianbn1147Banglaen2277Englishccp215Chakmaeo6087 Esperantoru7888Russianar3280Arabiceo3871 Esperantoru5067Russianiu7206 Inuktitutiu5003 Inuktitutth7292Thaiar1473Arabicen1049Englishes4333Spanishchr7895Cherokeefr8117Frenches4624Spanishfr3796Frenchel3958Greekiu5469 Inuktitutth6378Thaija7506Japanesees5955Spanishzh4095Chinesezh4320Chinesechr1404Cherokeetr4662Turkishbn1095Banglaar923Arabictr3988Turkishfr915Frenchru208Russianel5585Greekzh1294Chineseeo1503 Esperantoar7596Arabicfr7539Frenchru7530Russianar1606Arabicfr587Frenchja6790Japanesear1153Arabicccp2128Chakmasr3644Serbiansr198Serbianth1469Thaizh6262Chinesezh2695Chineseeo6206 Esperantofr297Frenchel4971Greeken3685Englishccp704Chakmabn1872Banglaeo2606 Esperantoru5990Russianzh5955Chinesetr4342Turkishchr641Cherokeezh20Chineseiu3866 Inuktituteo1050 Esperantofr5925Frenchel7738Greeksr7469Serbianar4079Arabicen3336Englishsr7551Serbianel4502Greektr4135Turkishsr6489Serbianccp6287Chakmabn593Banglaen6262Englishja1626Japanesechr2768Cherokeechr1203Cherokeear6828Arabicsr2001Serbianth6830Thaiar3698Arabicchr7649Cherokeeru983Russianeo4756 Esperantoeo1311 Esperantofr6362Frenchtr8070Turkishbn1542Banglafr5727Frenches574Spanishfr5750Frenchsr1984Serbianchr5080Cherokeetr2573Turkishar5662Arabices1976Spanishbn6794Banglaes8138Spanishzh5634Chinesesr4156Serbianth935Thaija960Japaneseel8111Greekar4896Arabiciu55 Inuktituten3838Englishja1555Japanesebn1285Banglaar5135Arabicccp335Chakmath4209Thaiiu4763 Inuktitutbn836Banglath6570Thaija831Japaneseeo2638 Esperantoes7378Spanisheo6677 Esperantoes4038Spanishar3142Arabiciu6403 Inuktitutfr6765Frenchtr6530Turkishzh2649Chineseja6114Japaneseja2672Japanesear5870Arabicsr420Serbianccp8063Chakmaiu4393 Inuktitutfr3175Frenchar7349Arabictr4292Turkishsr124Serbianbn2432Banglafr5055Frenchbn1317Banglath4011Thaizh6348Chinesefr4870Frenchsr1064Serbianbn3653Banglaccp4861Chakmath3043Thaies8005Spanishzh4916Chineseel4101Greekeo4992 Esperantoru3288Russianccp4601Chakmaiu1609 Inuktitutzh6719Chinesezh1940Chinesefr1148Frenchsr2Serbianja6607Japanesebn8112Banglaeo6386 Esperantoes4359Spanishbn5423Banglaiu2235 Inuktituteo2451 Esperantoiu4065 Inuktituteo7457 Esperantoen5909Englishiu2446 Inuktitutiu6160 Inuktitutth1192Thaifr2340Frenchiu5457 Inuktitutzh4461Chinesees7125Spanishel7298Greekru6062Russianccp62Chakmatr5850Turkishes5363Spanishfr625Frenchfr1069Frenchfr7713Frenchth5521Thaija2307Japaneseja2517Japanesear3061Arabicru3170Russianth708Thaitr4078Turkishru4533Russianfr4529Frenchzh781Chineseel134Greekeo3004 Esperantosr6319Serbianccp63Chakmaru6763Russianes6586Spanishccp6449Chakmael2272Greekes1366Spanishja485Japaneseja2982Japanesebn3974Banglaja4699Japaneseru6899Russianfr3678Frenchth4147Thaith3381Thaies983Spanishsr5322Serbianccp3654Chakmabn3314Banglabn7040Banglasr4861Serbiansr6453Serbianth485Thaiel7683Greekes2913Spanishtr6164Turkishth1492Thaiar263Arabices748Spanishja7943Japanesebn3142Banglaccp2228Chakmaes5114Spanishsr915Serbianzh2515Chinesear2885Arabicbn5786Banglabn954Banglaeo3428 Esperantoar5058Arabices7542Spanishbn2762Banglath3579Thaitr3612Turkishbn6017Banglaja4160Japanesesr165Serbianiu4967 Inuktitutth4718Thaith957Thaith5584Thairu608Russianeo2735 Esperantobn75Banglasr5516Serbianen6564Englishen7438Englishes1879Spanishccp3411Chakmaja4979Japaneseiu822 Inuktitutsr4525Serbianbn7934Banglath3945Thaiel458Greekes1777Spanishen3675Englishiu262 Inuktitutfr7601Frenchth4229Thaisr5826Serbianja2622Japaneseen2201Englishbn3611Banglachr5535Cherokeees7922Spanishes4866Spanishes1300Spanishchr4303Cherokeeru4525Russianel588Greektr533Turkishel53Greekchr2882Cherokeefr7614Frenchiu2508 Inuktitutccp7035Chakmatr7018Turkishchr5593Cherokeebn3700Banglaeo6861 Esperantoru6408Russianiu5816 Inuktitutru2727Russianes5480Spanishfr5632Frenchtr3886Turkishth6Thaien6549Englishfr7265Frenchiu391 Inuktitutccp2951Chakmath976Thaien4880Englishfr1649Frenchfr5972Frenches2517Spanishiu3552 Inuktitutru6590Russiansr4891Serbianchr8032Cherokeeccp5361Chakmaccp6722Chakmabn3766Banglasr4369Serbianchr6362Cherokeesr5500Serbiantr5541Turkishru6219Russiantr1817Turkishiu5312 Inuktitutth8191Thaiccp4752Chakmaes1346Spanishiu1466 Inuktituten8041Englishsr1506Serbianen5917Englishar1255Arabictr210Turkishchr8118Cherokeetr1976Turkishar3941Arabiczh9Chineseeo1273 Esperantoes2074Spanishel3970Greekbn7188Banglaeo6975 Esperantoeo8131 Esperantoes1001Spanishiu1660 Inuktitutru5543Russianth6096Thaith514Thaiar3962Arabictr6062Turkishccp98Chakmaccp3118Chakmafr1668Frenchccp1015Chakmaes5788Spanishsr1964Serbianchr3239Cherokeesr3995Serbianth6733Thaiccp3467Chakmasr5634Serbianel3324Greekth4033Thaiel3097Greekel3618Greekiu7188 Inuktitutth405Thaiccp1977Chakmath1119Thaien6492Englishchr4067Cherokeetr4245Turkishru471Russianen4016Englisheo2526 Esperantoeo5187 Esperantoel4660Greekth2937Thaija5792Japaneseiu6036 Inuktituteo3131 Esperantotr4325Turkishar3901Arabicsr5805Serbianzh366Chinesezh5726Chinesechr4708Cherokeeiu3018 Inuktitutsr2797Serbianzh1274Chineseccp7462Chakmazh3541Chinesezh335Chineseru4225Russianzh7635Chineseiu5248 Inuktituttr4139Turkishccp5901Chakmaiu5156 Inuktitutccp2749Chakmael3599Greeksr4025Serbiansr748Serbianes5968Spanishth5826Thaitr6536Turkishar3412Arabicel1518Greekfr176Frenchccp879Chakmaeo4062 Esperantoiu7075 Inuktituten1122Englishtr2559Turkishbn3484Banglath5657Thaiar7678Arabicbn3221Banglachr4235Cherokeeeo1855 Esperantoja1794Japaneseeo6667 Esperantoel4501Greekar6221Arabicbn5580Banglaja4807Japanesebn6413Banglafr5724Frenchiu5530 Inuktitutru2410Russianccp2865Chakmatr894Turkishru6404Russianccp2745Chakmaar886Arabicbn1860Banglaen6504Englishen4575Englishbn328Banglabn2703Banglaccp7058Chakmaen7673Englisheo4520 Esperantotr6222Turkishccp5914Chakmaen2562Englishccp4402Chakmazh980Chinesechr2013Cherokeees1199Spanishchr2086Cherokeezh4427Chinesesr5036Serbianar1629Arabicen6468Englishen7633Englishbn6955Banglaeo7511 Esperantoeo3059 Esperantosr6770Serbianzh816Chineseru8000Russianru230Russianel6888Greekja5420Japanesefr2084Frenches5507Spanishbn1585Banglaar1374Arabicchr7692Cherokeesr5899Serbianzh1895Chineseja212Japanesefr6158Frenchzh5662Chinesechr802Cherokeees1085Spanishzh6988Chineseth1235Thaiiu2323 Inuktitutes4140Spanishja2587Japaneseel5561Greeksr1523Serbianeo7527 Esperantoru2667Russianzh5549Chinesees3132Spanishen1349Englishes2698Spanishzh7032Chinesezh1389Chinesees1434Spanishiu3982 Inuktituttr3148Turkishsr3397Serbianfr5961Frencheo839 Esperantoen695Englishsr7411Serbianccp7697Chakmael229Greekel4307Greekiu4072 Inuktitutbn1448Banglael3964Greekchr7183Cherokeeeo468 Esperantoar2267Arabicth192Thaitr1841Turkishar3811Arabicccp2178Chakmaes621Spanishen4065Englishfr6171Frenchar6233Arabiceo5790 Esperantosr1162Serbianbn5348Banglaja4806Japaneseja6563Japaneseeo20 Esperantoel4883Greekja2050Japanesefr5143Frenchbn1788Banglael2938Greekes4512Spanishth337Thaith384Thaiiu265 Inuktitutru8191Russianzh1747Chineseeo2916 Esperantoeo4319 Esperantoru6705Russianar4146Arabicen7052Englishsr1063Serbianfr3150Frenchen1242Englishsr2021Serbianchr1976Cherokeeeo5762 Esperantoes1793Spanishtr5736Turkisheo6838 Esperantobn1004Banglaeo860 Esperantoja3653Japaneseru4596Russianbn4579Banglazh6129Chineseth3372Thaizh5296Chinesefr3449Frenchiu2878 Inuktitutes6039Spanishen7958Englishsr3875Serbianchr1419Cherokeeru1287Russianiu7787 Inuktitutccp32Chakmaeo7661 Esperantoccp3070Chakmaiu769 Inuktitutsr4702Serbianth7869Thaith7056Thaith780Thaiar3509Arabices3611Spanishchr6851Cherokeechr5329Cherokeeel6944Greekru4794Russiantr7444Turkishbn5814Banglafr1716Frenchbn3255Banglaen7Englishes1220Spanishchr7661Cherokeeeo6510 Esperantoes3833Spanishar7386Arabicen4986Englishiu4626 Inuktitutru178Russianth7276Thaien945Englishel1671Greekth1003Thaith2542Thaisr5346Serbianccp3788Chakmaccp7000Chakmazh7109Chinesebn3760Banglazh6463Chinesees6213Spanishen2197Englishccp7749Chakmasr6730Serbianbn2450Banglabn4241Banglafr2044Frenchen1596Englishen5218Englishru7046Russianzh3916Chineseeo5843 Esperantoja1541Japanesear2006Arabicfr2700Frenchccp470Chakmath6616Thaiar5674Arabicfr3802Frencheo1714 Esperantobn358Banglaen6295Englisheo5255 Esperantoccp3810Chakmafr7221Frenchiu447 Inuktitutbn4247Banglaccp3Chakmaar6013Arabicfr1725Frencheo7510 Esperantozh7802Chinesebn3857Banglasr5468Serbianar2921Arabicel3011Greekeo862 Esperantoes103Spanishfr347Frenches6404Spanishbn7566Banglaar3327Arabictr3101Turkishiu4316 Inuktitutru4241Russianth4513Thaibn2611Banglaccp1181Chakmaccp4734Chakmaja2226Japanesear3018Arabicccp4143Chakmaja5576Japaneseru6288Russianes1002Spanishzh2111Chinesefr830Frenches1587Spanishes3023Spanishzh1864Chinesezh4765Chinesear966Arabictr5585Turkishth1661Thaiccp640Chakmaar3504Arabicccp4399Chakmaccp7311Chakmael3297Greekzh7011Chineseiu438 Inuktituteo273 Esperantoru7557Russianen4112Englishchr1892Cherokeeth721Thaiel4279Greekth32Thaifr5230Frenchzh3303Chineseiu6596 Inuktitutsr1316Serbiantr7633Turkishen6155Englishja7729Japanesebn397Banglabn2741Banglael985Greeken6350Englishel570Greekel3982Greeksr3088Serbianth7232Thaies2261Spanishsr5242Serbianja4205Japaneseru5362Russianth8116Thaith7415Thairu271Russianar6639Arabicel6784Greekiu3034 Inuktitutiu7679 Inuktitutsr2378Serbianen4545Englishbn3067Banglasr412Serbianeo6214 Esperantoth6540Thaiar4056Arabicbn6625Banglachr2564Cherokeeiu937 Inuktitutfr3973Frenchth6073Thaizh3415Chineseth4327Thaies7455Spanishzh7149Chinesesr6631Serbianja5421Japanesezh2772Chineseth2621Thaien7036Englishru6349Russianfr1733Frenchru4851Russiansr3555Serbianccp4325Chakmaja2974Japanesezh8162Chineseeo6025 Esperantoru8182Russianzh7379Chineseru3868Russianth7861Thaieo5697 Esperantosr5415Serbianen2165Englishru6503Russianeo5476 Esperantoth313Thaies3384Spanishbn7025Banglabn4732Banglaru7015Russianen7770Englishsr695Serbianar779Arabicth4501Thaiel3718Greekeo742 Esperantoen1258Englishbn4362Banglaccp4470Chakmael3696Greekja6948Japaneseen5641Englishccp4815Chakmaen2175Englishes2753Spanishth4608Thaiar4013Arabicja3134Japanesesr7288Serbianchr4113Cherokeetr436Turkishtr7169Turkisheo7969 Esperantoru7258Russianbn103Banglaar3726Arabicchr2029Cherokeefr1637Frenchen2908Englishja5377Japaneseth3590Thaith5127Thaien6572Englishes20Spanishchr6073Cherokeechr2996Cherokeechr7916Cherokeeel7243Greeksr6257Serbianeo7775 Esperantoth2070Thaiccp686Chakmazh4805Chinesetr789Turkishiu2462 Inuktitutar4504Arabiceo348 Esperantoar7081Arabicja7679Japanesefr3265Frencheo4514 Esperantoja3457Japanesees5712Spanishth5776Thaibn1Banglaeo1739 Esperantoja2015Japanesear3178Arabiceo7263 Esperantoccp6755Chakmaiu4741 Inuktituten7627Englishzh507Chineseeo6889 Esperantoes8105Spanishccp53Chakmatr5305Turkishen2381Englishccp6480Chakmafr3652Frencheo4570 Esperantoccp6059Chakmaen5830Englishbn3263Banglael6431Greeken1312Englisheo852 Esperantoru7731Russianja7176Japanesees2505Spanishsr6808Serbianccp3951Chakmael2141Greekccp3529Chakmael513Greekja6822Japaneseccp2811Chakmaeo5531 Esperantoen1754Englishru5859Russianeo3196 Esperantoth1812Thaiel8063Greeken3602Englishes2076Spanishiu721 Inuktitutth1847Thaija5127Japanesebn2786Banglaeo6600 Esperantoccp6498Chakmath249Thaichr7915Cherokeees962Spanishccp7693Chakmaeo3115 Esperantobn6566Banglath7990Thaiccp3311Chakmaccp1833Chakmaiu2529 Inuktitutfr5403Frenchbn6512Banglaiu4098 Inuktitutsr2409Serbianru6466Russianfr7288Frenchen765Englishzh5851Chinesefr6745Frenchsr761Serbiansr2332Serbianes1873Spanishen7104Englishiu5394 Inuktitutja6847Japaneseja7126Japaneseel7310Greekar4589Arabicru3052Russianen4612Englishth1708Thaizh8184Chineseja5910Japaneseru3712Russianccp7896Chakmaru2557Russiantr7061Turkishth4329Thaien3454Englishes6343Spanishtr158Turkishen7573Englishsr4889Serbianchr7539Cherokeear3350Arabicen2873Englishzh6540Chineseel1163Greekchr4801Cherokeetr2069Turkishzh2397Chinesechr6935Cherokeeeo6474 Esperantosr16Serbianja3628Japaneseeo5132 Esperantobn3463Banglabn6311Banglaru1739Russianzh2203Chinesefr4767Frenchbn1635Banglaar2291Arabicth870Thaith3568Thaibn2212Banglaja3416Japaneseeo456 Esperantoeo1595 Esperantoth2899Thaitr4652Turkishzh5554Chinesebn2488Banglafr5337Frenchja3271Japaneseen7544Englishfr6886Frenchzh90Chineseth5061Thaiar5621Arabicchr2467Cherokeetr7546Turkishtr1110Turkisheo4944 Esperantoja7690Japanesebn1098Banglachr3486Cherokeechr3579Cherokeees1265Spanishzh1426Chineseiu2211 Inuktitutel6164Greekeo6284 Esperantoar135Arabicel2307Greekru6872Russianja2694Japanesetr3653Turkishtr4441Turkishar6811Arabicru5057Russianes5954Spanishel4302Greekiu7453 Inuktitutchr5181Cherokeeru7877Russiansr6554Serbianar2422Arabiciu2668 Inuktitutar4674Arabicchr7840Cherokeeru4467Russiantr7611Turkishar8174Arabicbn7750Banglachr406Cherokeesr6341Serbianja1077Japanesesr2324Serbianchr2070Cherokeetr6674Turkishtr2389Turkishth2753Thaija7075Japanesefr2629Frenchja1863Japanesezh223Chineseja153Japaneseiu5883 Inuktitutbn6729Banglaen2993Englishzh5785Chineseiu2221 Inuktitutiu653 Inuktitutth5980Thaiel3613Greekel1277Greekel2987Greeken362Englishchr1666Cherokeees2966Spanishiu2085 Inuktitutru7289Russianru7737Russiansr2786Serbianeo2659 Esperantochr4667Cherokeechr8080Cherokeeja1482Japanesesr4263Serbianth4480Thaitr4613Turkishzh4426Chineseccp7761Chakmaja2162Japanesetr6166Turkishar84Arabicar3697Arabicen7558Englishccp5504Chakmaar3897Arabictr5888Turkishiu6094 Inuktitutbn4864Banglazh1840Chinesezh4140Chineseeo4681 Esperantoeo344 Esperantoja7653Japaneseja7044Japanesezh1662Chineseel6581Greekeo946 Esperantoth2138Thaija4667Japaneseja5454Japanesees676Spanishchr2073Cherokeeru3579Russianru3987Russianen4812Englishel1840Greekbn2921Banglabn2381Banglaen7714Englishchr3242Cherokeeja7376Japanesear4125Arabicja4523Japanesebn163Banglafr3617Frenchru2638Russianzh4180Chinesesr684Serbianen5819Englishtr7971Turkishar6433Arabicru6014Russianchr1793Cherokeebn330Banglafr2159Frenchzh113Chineseen227Englishiu3540 Inuktitutes5618Spanishiu1362 Inuktitutchr466Cherokeeen94Englishchr29Cherokeeeo1184 Esperantoel4134Greekar5371Arabicen4303Englishen6854Englishchr4454Cherokeees2067Spanishth1320Thaibn1834Banglazh5835Chinesezh5793Chineseccp5036Chakmaeo7666 Esperantosr1563Serbianel6585Greekar7049Arabicchr1682Cherokeetr1041Turkishtr2600Turkishfr303Frenchchr6108Cherokeeen2449Englishar7588Arabicchr794Cherokeebn2566Banglael5305Greekja1516Japanesefr2998Frenchel222Greekccp696Chakmazh6610Chinesebn3666Banglachr988Cherokeesr1892Serbianen1470Englishbn2764Banglaes5384Spanishru132Russianzh7333Chineseeo4706 Esperantoja2128Japaneseccp2553Chakmabn3683Banglael3808Greekes4569Spanishchr7154Cherokeeiu6831 Inuktitutru1943Russianiu1465 Inuktitutru5646Russiantr2062Turkishccp737Chakmaiu6794 Inuktitutes1064Spanishsr3894Serbianzh3586Chinesesr2235Serbianru8058Russianes50Spanishth197Thaith3509Thaith4895Thaiiu2243 Inuktitutth4020Thaizh1360Chineseccp846Chakmael104Greeken5094Englishru1072Russianccp8086Chakmazh273Chinesetr658Turkishen6339Englishzh6235Chineseen4983Englishel7882Greekru2931Russianru6189Russianja5766Japaneseru7698Russianth2620Thaieo3508 Esperantoccp6967Chakmaja5071Japanesechr4298Cherokeeth6493Thaifr1848Frenchchr192Cherokeear6104Arabicbn7997Banglaiu7848 Inuktitutiu3620 Inuktitutar6138Arabicth6780Thaieo6124 Esperantoes1846Spanishth5615Thaiar1118Arabicbn7745Banglaccp2302Chakmabn2437Banglachr1616Cherokeeel734Greekccp2936Chakmafr2259Frenchchr2057Cherokeesr5245Serbiantr3798Turkishar3849Arabicchr2137Cherokeefr2215Frenchzh785Chineseccp4345Chakmachr1332Cherokeeja2934Japaneseja2960Japaneseth6149Thaiel4920Greekzh2191Chinesefr5081Frenchchr725Cherokeechr3414Cherokeefr1414Frenchar7056Arabicccp7778Chakmath1249Thaiiu2132 Inuktitutsr3180Serbianes5917Spanishzh7393Chineseth6225Thaichr2792Cherokeezh7351Chinesees6241Spanishiu3274 Inuktitutzh1034Chineseth5951Thaiiu5773 Inuktituttr155Turkisheo3339 Esperantochr4322Cherokeechr6139Cherokeechr60Cherokeeccp8006Chakmabn4543Banglaccp4212Chakmath2412Thaifr4614Frenchen4341Englishes471Spanishel6795Greekes3620Spanishchr1399Cherokeeja5676Japanesebn1823Banglabn1837Banglaja1409Japanesechr5297Cherokeezh5203Chineseiu1883 Inuktitutel4488Greekiu4194 Inuktitutbn2265Banglath3313Thaiar1902Arabicel2339Greekeo4816 Esperantoccp6346Chakmaes5180Spanishbn6151Banglaeo3400 Esperantoeo3788 Esperantoes1637Spanishfr7329Frenchtr6681Turkishru5537Russianccp4550Chakmafr1948Frenchru3757Russianeo7446 Esperantoiu1567 Inuktitutth2291Thaizh2142Chinesear5249Arabicja3445Japaneseja2648Japanesees607Spanishzh2360Chineseen4901Englishru2969Russianeo2301 Esperantoeo2590 Esperantoes7824Spanishiu4267 Inuktitutfr6240Frenchzh7817Chineseen3542Englishiu3607 Inuktitutel7763Greekel8066Greekar5475Arabiceo5367 Esperantoes4919Spanishen169Englishfr5300Frenchsr6352Serbianth3516Thaisr2669Serbiantr5973Turkisheo4039 Esperantosr1867Serbianel91Greekiu8001 Inuktitutth1339Thaien2427Englishes5818Spanishchr6669Cherokeefr634Frencheo4155 Esperantotr3133Turkisheo398 Esperantochr2454Cherokeees7332Spanishchr3991Cherokeeth1658Thaiel7949Greekfr1940Frencheo345 Esperantotr4393Turkishccp5206Chakmael3976Greekru6491Russianru2607Russiantr3536Turkishja1186Japaneseiu5233 Inuktituteo1216 Esperantoru3791Russiansr6609Serbianiu7782 Inuktitutar5587Arabiczh2280Chinesear5417Arabicccp3557Chakmath6991Thaien4826Englishen4461Englishes3694Spanishfr2810Frenchfr4695Frenchzh2441Chineseth2660Thaien6110Englishsr6862Serbianru7546Russianar1660Arabicfr549Frenchchr7497Cherokeeru220Russianccp6465Chakmaar7250Arabiceo2188 Esperantoth5793Thaibn2095Banglachr1391Cherokeetr5532Turkishen1320Englishel492Greekel2927Greekfr399Frenchccp5650Chakmazh6884Chineseeo6837 Esperantoeo7555 Esperantoar2925Arabicccp6242Chakmazh1636Chinesear4376Arabicbn1678Banglaccp5101Chakmachr4374Cherokeeeo6423 Esperantoiu1256 Inuktitutth1521Thaith3384Thaizh2376Chinesezh3235Chinesebn2733Banglaeo1403 Esperantoru800Russiansr7548Serbianja5093Japaneseen6951Englishsr2049Serbiansr999Serbianchr3379Cherokeees4648Spanishru5082Russianbn6674Banglatr6176Turkishbn5223Banglaru1176Russianchr5972Cherokeeru2056Russianen3764Englishtr2243Turkishtr6055Turkishzh2212Chinesezh3403Chineseeo6127 Esperantoel4815Greekes1097Spanishfr2214Frenchen2759Englishth3029Thaija892Japanesesr7116Serbiansr1958Serbianfr2041Frenchbn5713Banglaen2485Englishar2656Arabicen492Englishth5586Thaija6515Japanesezh8140Chineseen1338Englishes4290Spanishccp4301Chakmatr2378Turkisheo499 Esperantosr3173Serbianchr1295Cherokeetr5798Turkishes1419Spanishzh1087Chineseen1847Englisheo949 Esperantoar5108Arabices923Spanishzh7215Chinesebn5139Banglabn1510Banglaeo6271 Esperantoel6015Greekes550Spanishccp860Chakmaccp374Chakmaar36Arabicccp1160Chakmazh4139Chinesezh5868Chineseeo1652 Esperantosr7811Serbianja707Japanesezh3696Chineseel4747Greekel3295Greekzh2139Chinesetr1129Turkishzh4471Chinesees7895Spanishzh256Chineseiu5966 Inuktitutes6341Spanishen462Englishccp1397Chakmaiu1413 Inuktitutiu2379 Inuktituten7500Englishja887Japanesechr720Cherokeesr5926Serbianru3076Russianja89Japanesezh4299Chineseccp760Chakmazh6288Chinesebn1216Banglazh7621Chinesear8155Arabicbn8071Banglachr7787Cherokeetr7310Turkishiu986 Inuktitutchr4236Cherokeechr6590Cherokeees7039Spanishccp42Chakmath7398Thaisr8054Serbianccp5854Chakmabn5780Banglasr1261Serbianth408Thaiiu203 Inuktitutiu1010 Inuktitutsr2118Serbianja6524Japaneseth3460Thaith5089Thaitr1042Turkishzh1456Chinesetr6916Turkishtr471Turkishzh3003Chinesetr1866Turkishbn450Banglael2006Greekth3110Thaisr2888Serbianfr2716Frenchiu4344 Inuktituttr2179Turkishbn4930Banglaes4962Spanishfr6756Frenchar3198Arabicru3409Russianes6395Spanishsr3887Serbianccp71Chakmael5431Greekiu3410 Inuktitutbn3310Banglaes2514Spanishzh2091Chineseth1775Thaiel2429Greeksr1093Serbianes954Spanishchr278Cherokeear1721Arabiceo5804 Esperantoth1838Thaien1504Englishes2530Spanishccp1377Chakmabn2374Banglaar2112Arabicchr1819Cherokeebn2639Banglaccp5665Chakmaja120Japanesear4142Arabicth445Thaiccp5058Chakmabn1687Banglaeo4864 Esperantoja4334Japaneseth2993Thaisr3230Serbianzh6773Chinesebn946Banglaen6042Englishbn7809Banglachr57Cherokeees7022Spanishchr1525Cherokeetr4261Turkishccp2557Chakmafr2310Frenchbn1386Banglabn6472Banglaja6193Japanesees7233Spanishsr4738Serbiantr2771Turkishth6973Thaizh7510Chinesebn1311Banglath3737Thairu1613Russiantr425Turkishja5118Japanesebn2978Banglaccp2202Chakmaja5596Japaneseru5229Russianru7235Russiansr4762Serbianchr823Cherokeebn4654Banglatr3272Turkishth1691Thaiel7596Greekel6897Greekes8107Spanishbn6117Banglaja38Japanesear5932Arabices7017Spanishru7603Russianfr8060Frenchru6681Russianes1163Spanishfr4257Frenchja675Japanesesr2051Serbiansr2670Serbianfr4255Frenchfr6526Frenchchr7151Cherokeesr4542Serbianchr3736Cherokeechr8001Cherokeebn3979Banglaccp5021Chakmafr35Frenchru3632Russianeo6337 Esperantoen3811Englishes3574Spanishsr2592Serbianja3461Japanesechr2648Cherokeezh8026Chineseel1430Greekzh7418Chinesebn113Banglaen6428Englishja4107Japanesetr6647Turkisheo8135 Esperantoja7147Japanesechr3392Cherokeebn7072Banglael5166Greekja7705Japanesetr4238Turkishzh6925Chineseiu2417 Inuktitutzh4400Chinesechr5831Cherokeetr3367Turkishchr5472Cherokeeja4452Japaneseiu7550 Inuktitutzh3559Chineseeo5814 Esperantosr3324Serbianfr2321Frenchbn4574Banglaru1081Russianccp4158Chakmaes5540Spanishja827Japanesees7401Spanishru3931Russianiu4354 Inuktituten5183Englishes7550Spanishes6191Spanishen3344Englishzh5225Chineseeo6997 Esperantofr5535Frenchel5740Greektr5764Turkishel7922Greeksr6892Serbianiu6770 Inuktitutja7184Japanesechr4498Cherokeeru241Russianchr1366Cherokeeth7217Thaifr6429Frenchru7001Russianth1602Thaiccp6903Chakmaru6419Russiansr7826Serbiantr7150Turkishsr368Serbianccp8165Chakmaen139Englishja380Japaneseiu3029 Inuktitutel2908Greekar6240Arabicfr5758Frenchccp6210Chakmaiu7569 Inuktitutchr800Cherokeesr7309Serbianbn6003Banglabn6332Banglael5015Greekel5704Greektr5182Turkishccp5482Chakmaru635Russianchr5211Cherokeetr2018Turkishzh2294Chinesesr1030Serbianccp3174Chakmafr821Frenchsr7194Serbianth3302Thaibn1883Banglaar4867Arabices4764Spanishfr6922Frenchar7539Arabicen4246Englishth444Thaien1291Englishccp7383Chakmael1588Greekiu7994 Inuktitutja530Japanesees3908Spanishtr7929Turkisheo4691 Esperantosr1018Serbianth4390Thaiar346Arabicen3290Englishzh4655Chineseth5976Thaitr5575Turkishchr2264Cherokeeen8104Englishchr2955Cherokeeth5783Thaith4725Thaien5948Englishccp582Chakmazh5087Chinesear7488Arabicsr7010Serbianbn6820Banglabn3246Banglaes3037Spanishfr698Frenchsr3402Serbiansr7511Serbiantr6051Turkishtr4569Turkishth3321Thaibn109Banglachr2168Cherokeeel5689Greekfr5104Frenchsr4044Serbianiu7938 Inuktitutbn5154Banglaar645Arabicccp1527Chakmachr2521Cherokeetr1338Turkishja7710Japaneseccp3917Chakmaccp8178Chakmaar7499Arabictr3976Turkishiu5209 Inuktitutth3667Thaizh2786Chineseccp1085Chakmaar7289Arabicar360Arabiciu5195 Inuktituttr7026Turkishbn2010Banglaja4697Japanesetr5851Turkishth395Thaichr6318Cherokeeel7261Greeken3154Englishes2847Spanishja5044Japanesesr1049Serbianel4542Greeksr5018Serbianth6898Thaifr7716Frenchja1312Japaneseru2547Russianja8152Japaneseiu101 Inuktituteo6412 Esperantoel404Greekbn5577Banglatr4741Turkishfr4628Frencheo6553 Esperantoen8013Englishfr7027Frenchel4613Greekth4777Thaiar7810Arabicen6341Englishccp5359Chakmaiu18 Inuktitutru7171Russianar2903Arabicar5005Arabicth4967Thaiar6302Arabicja7906Japanesezh5300Chineseen4873Englishel7185Greekbn1946Banglath2693Thaiiu3229 Inuktitutel715Greekfr3662Frenchiu3054 Inuktitutzh5410Chinesesr1658Serbianccp6399Chakmaen4457Englishbn6528Banglasr2523Serbiansr2077Serbianbn7362Banglaja2972Japaneseen4647Englishfr3967Frenchsr5809Serbianel220Greekth6349Thaifr7658Frenchtr5777Turkishru1778Russianth4559Thaitr461Turkishzh6740Chineseeo1288 Esperantoel981Greekar5799Arabicchr5195Cherokeeel3368Greeken3966Englishiu6043 Inuktituteo2593 Esperantochr6822Cherokeefr7053Frenchtr1971Turkishru1269Russiansr7443Serbianar3233Arabicsr6958Serbianiu4372 Inuktituten4377Englishiu1675 Inuktitutccp6060Chakmath3837Thaifr4995Frenchccp4006Chakmatr3844Turkishar179Arabicel357Greekel2027Greekchr673Cherokeeen303Englishth4809Thaibn6081Banglachr7424Cherokeesr772Serbianchr5231Cherokeeth3825Thaiccp642Chakmaja6647Japaneseen1713Englishfr3628Frenchfr5284Frenchzh5298Chinesezh8093Chineseru7362Russiantr5812Turkishiu4761 Inuktitutja6316Japanesezh7897Chinesechr8036Cherokeeja7602Japanesees5459Spanishth3173Thaisr3511Serbianfr7896Frenchth2329Thaisr587Serbianen6084Englisheo3120 Esperantozh1603Chineseja3146Japanesechr1844Cherokeechr7952Cherokeefr6314Frenchbn688Banglaen2740Englishar4375Arabicel4187Greeksr5360Serbianth7307Thairu1601Russianzh3188Chinesezh167Chineseccp2250Chakmachr4530Cherokeeen2360Englishel3833Greekar6931Arabices1351Spanishccp5989Chakmath401Thaizh954Chinesees5245Spanishar3273Arabicen1746Englishru3774Russianfr1226Frenchiu4588 Inuktitutzh3373Chineseru7523Russianccp108Chakmachr993Cherokeebn2459Banglasr1914Serbianchr3469Cherokeear4709Arabicchr1007Cherokeeth5699Thaiccp4539Chakmaeo1906 Esperantofr7191Frenchen7815Englishiu6022 Inuktituttr1522Turkishtr3208Turkishfr1928Frenchsr1834Serbianeo902 Esperantotr5123Turkishes875Spanishth451Thaichr4842Cherokeeccp1147Chakmaiu4610 Inuktitutzh5187Chineseth3871Thaies2790Spanishel5686Greekbn8105Banglaru7024Russiantr7661Turkisheo6236 Esperantozh4758Chineseel5430Greekeo6784 Esperantoar5032Arabiciu6449 Inuktituttr7140Turkishiu1009 Inuktitutja4916Japanesebn5407Banglaes4942Spanishes3511Spanishar6682Arabiciu2432 Inuktitutru570Russianchr8138Cherokeeiu5795 Inuktitutja6709Japaneseeo2569 Esperantoja7299Japaneseth1883Thaiiu5296 Inuktituttr6068Turkishes4194Spanishccp3327Chakmaru2603Russianar976Arabicen2014Englishfr1158Frenchccp2214Chakmachr2879Cherokeear2286Arabicfr6641Frenchbn4898Banglachr983Cherokeechr4365Cherokeezh418Chineseel865Greekfr4582Frenchccp2911Chakmasr6276Serbianes6264Spanishth7229Thaieo6653 Esperantoiu6619 Inuktitutfr1996Frenchzh6765Chineseth802Thaith3642Thaiccp4420Chakmaja5027Japaneseccp5457Chakmaen4819Englishru7385Russiansr2947Serbianth6383Thaiar35Arabicfr6146Frenchen6808Englishiu5926 Inuktitutru3318Russianja357Japaneseth1533Thaibn8062Banglaeo3937 Esperantoiu5198 Inuktitutja3530Japanesechr2933Cherokeefr7677Frenchiu7880 Inuktitutja5341Japaneseel4143Greekel6263Greekth7696Thairu6805Russianchr7395Cherokeetr6409Turkishbn7618Banglaar3968Arabicja515Japaneseeo3217 Esperantoen6823Englishes6520Spanishru6279Russianar1899Arabicth5294Thaitr5887Turkishzh4908Chineseeo2804 Esperantoru4338Russianeo4468 Esperantofr3522Frenchel5197Greekar6243Arabicfr1391Frenchel4814Greeksr7555Serbiantr4797Turkishfr5765Frenchth5278Thaiccp7710Chakmaen1956Englisheo5423 Esperantoes4881Spanishar3550Arabicchr4547Cherokeear2768Arabices7315Spanishzh1177Chinesebn5833Banglaeo6105 Esperantoar408Arabices7396Spanishccp5617Chakmachr4479Cherokeebn5230Banglafr1530Frenchchr4869Cherokeeel4822Greekccp5330Chakmaeo3398 Esperantozh1039Chineseeo530 Esperantobn8101Banglaja900Japaneseen6299Englishsr1656Serbianbn8104Banglaccp1163Chakmasr434Serbianccp772Chakmasr925Serbiansr8141Serbiantr4710Turkishiu3711 Inuktitutbn6000Banglael409Greekru3543Russiansr1381Serbianccp5820Chakmazh319Chineseel6149Greekfr287Frenchsr7366Serbiantr7238Turkishzh7245Chinesechr5549Cherokeeja1158Japaneseja1993Japanesezh5238Chineseth1193Thaiel6657Greekar5314Arabicccp3620Chakmath1389Thaith3285Thaifr7214Frenchel7077Greekeo5727 Esperantotr403Turkishfr6518Frencheo4185 Esperantoru2816Russianiu5807 Inuktituteo2923 Esperantochr3377Cherokeeccp5527Chakmaeo5657 Esperantofr5993Frenchzh7397Chineseeo1648 Esperantotr3863Turkishccp3005Chakmachr6646Cherokeechr4256Cherokeechr1449Cherokeees4274Spanishtr6985Turkishiu1114 Inuktitutja803Japanesefr1590Frenchzh3963Chinesebn6714Banglaccp5738Chakmachr7428Cherokeechr3973Cherokeeen487Englisheo4024 Esperantoru5885Russianth6260Thaies7174Spanishchr7910Cherokeebn1577Banglael4951Greekth5370Thaith6776Thaitr1762Turkishiu1083 Inuktitutth488Thaiccp4269Chakmath3320Thaitr1512Turkishbn5829Banglael987Greekbn1355Banglaes5173Spanishfr6391Frenchchr46Cherokeees5209Spanishes5621Spanishsr7369Serbianen4611Englishzh4189Chineseja4359Japanesees3305Spanishtr6677Turkishiu1804 Inuktitutchr4528Cherokeeel3678Greekchr951Cherokeeel3714Greekar475Arabicfr3143Frenchfr6056Frenchar3574Arabiceo1583 Esperantobn1202Banglabn2609Banglaiu3517 Inuktituten4637Englishsr4280Serbianchr345Cherokeezh3331Chineseen237Englishiu4638 Inuktitutja1164Japanesezh2716Chineseen3443Englishiu196 Inuktituten6613Englishccp818Chakmaja3031Japanesebn2065Banglath7741Thaien6251Englishzh6439Chineseiu7117 Inuktitutiu3329 Inuktitutru650Russianen3522Englishtr4954Turkishzh1208Chineseen7099Englishfr7100Frenchiu6056 Inuktituten3363Englishen6470Englishel5019Greekel5801Greekja1313Japaneseen1641Englishbn611Banglaen7877Englishzh1674Chinesesr3905Serbianja2281Japanesesr2262Serbianeo630 Esperantoja1305Japaneseja7926Japaneseeo7657 Esperantoeo320 Esperantoar4754Arabices3715Spanishes7372Spanishth7746Thaiiu6265 Inuktitutccp2188Chakmaiu3392 Inuktituten5847Englishen4273Englishth4533Thaiiu4899 Inuktitutiu2319 Inuktitutfr4096Frenchja4093Japaneseja6622Japanesebn4269Banglaen2443Englishchr1769Cherokeeeo3380 Esperantoes7910Spanishccp911Chakmatr2301Turkishzh2701Chineseccp3818Chakmasr7326Serbianth3263Thaija2327Japanesezh402Chinesear225Arabicsr7123Serbianth2286Thaies2340Spanishru5014Russianiu5083 Inuktitutar6089Arabicccp6328Chakmaiu5104 Inuktitutar5561Arabicbn1790Banglachr3329Cherokeeen7425Englishel6736Greekeo3787 Esperantoeo6780 Esperantosr1703Serbianel5535Greekzh906Chinesetr2267Turkishccp2756Chakmath1516Thaifr6091Frenchar2841Arabicel4891Greekchr1840Cherokeefr7354Frenchja3387Japanesechr4860Cherokeechr6629Cherokeechr2080Cherokeechr1396Cherokeeiu6044 Inuktitutja1452Japanesear6948Arabicar6420Arabicel6266Greekiu3860 Inuktitutja3421Japanesees3256Spanishiu5808 Inuktituttr7161Turkisheo1369 Esperantotr6641Turkishth5832Thairu4051Russianccp8134Chakmasr8015Serbianbn6261Banglatr7404Turkishar3887Arabiciu5796 Inuktitutzh1843Chineseru642Russiantr6484Turkishes7724Spanishbn3416Banglasr7956Serbianth3482Thaiccp2303Chakmaes7067Spanishccp6992Chakmaar838Arabicen8084Englishel2622Greekchr5726Cherokeees2287Spanishja7758Japaneseth1363Thaith4095Thaitr767Turkishar6886Arabicsr6077Serbiantr1266Turkishfr627Frenchel6478Greekzh832Chinesefr647Frenchccp6262Chakmaeo3742 Esperantoes2951Spanishes5492Spanishtr3759Turkishru104Russianccp3228Chakmaru3656Russianen208Englishchr4757Cherokeeiu8032 Inuktitutsr4190Serbianes2923Spanisheo766 Esperantobn2590Banglatr7120Turkishfr5529Frenchsr5556Serbianar4980Arabicel2713Greekeo5515 Esperantosr7505Serbianzh2047Chineseeo1400 Esperantobn6733Banglaen5620Englishccp6592Chakmasr843Serbiansr3223Serbianja4023Japanesesr4206Serbianth7922Thaizh7342Chineseeo4040 Esperantobn1122Banglasr5553Serbiansr5664Serbianbn1956Banglaeo6731 Esperantozh1496Chineseth1153Thaith7230Thaieo6899 Esperantoth4820Thaija701Japaneseccp6051Chakmaar127Arabicccp4859Chakmazh3476Chinesefr3783Frenchiu4426 Inuktitutiu5535 Inuktitutccp6176Chakmaeo7820 Esperantobn2531Banglafr2423Frenchiu3574 Inuktitutzh3957Chineseccp6777Chakmaccp1649Chakmatr7471Turkishiu4125 Inuktitutccp1459Chakmaja4201Japaneseth4089Thaibn2441Banglaja5796Japanesees2603Spanishsr4541Serbianar898Arabicbn7465Banglaen5520Englishel4972Greekzh6190Chineseth486Thaichr2703Cherokeechr7003Cherokeeth1311Thaizh3846Chineseth1359Thaizh7161Chinesetr1415Turkishel1624Greekfr3376Frenchel605Greekja4383Japanesechr7611Cherokeechr5368Cherokeeja5886Japaneseth4604Thaizh1949Chinesezh4556Chinesesr3893Serbianar7003Arabicar4055Arabicbn6554Banglaccp791Chakmael6037Greekru4232Russianar1235Arabicbn6176Banglafr4008Frenchfr459Frenches657Spanishccp4334Chakmasr2977Serbianiu5142 Inuktitutccp5838Chakmaen5044Englishja6909Japanesesr5484Serbiantr239Turkishsr6158Serbianes5594Spanishzh3317Chineseth4094Thaitr939Turkishes3377Spanishen5603Englishchr1555Cherokeechr4183Cherokeeru3991Russianbn1043Banglaeo1746 Esperantoeo8065 Esperantobn6362Banglaeo2260 Esperantoeo1532 Esperantoja3795Japaneseth8134Thaies5091Spanishth2468Thaith7303Thaizh5115Chineseja6394Japaneseel4345Greekzh635Chinesear2107Arabiciu5220 Inuktitutfr7308Frenchsr1814Serbianzh6588Chinesezh5863Chinesetr55Turkishsr5844Serbianth4941Thaifr6750Frenchja1263Japanesezh4957Chinesear1285Arabiczh5032Chinesetr352Turkishar7538Arabicfr376Frencheo2265 Esperantoar5369Arabiczh7044Chinesefr7958Frenchel1392Greekccp1238Chakmaccp2958Chakmachr2693Cherokeeel4350Greeken5268Englishes2689Spanisheo3419 Esperantoru3852Russianccp6646Chakmabn5604Banglachr5062Cherokeetr248Turkishccp4004Chakmabn7451Banglabn4259Banglael863Greekru1091Russianzh1709Chineseja4458Japaneseeo4211 Esperantoel4457Greekth4374Thairu646Russianel1031Greekar739Arabiciu7734 Inuktitutbn1058Banglafr4553Frenchsr49Serbiansr4932Serbiansr7465Serbiansr5662Serbiantr601Turkishzh1078Chinesechr4082Cherokeeiu3637 Inuktitutzh1538Chineseeo930 Esperantotr4371Turkisheo6128 Esperantoeo3302 Esperantoru4255Russianzh4599Chineseiu2565 Inuktitutar8154Arabicja7193Japanesefr2411Frenchbn2423Banglabn4369Banglaar2629Arabiceo7470 Esperantozh6758Chinesechr2134Cherokeeru2309Russianes2600Spanishccp4024Chakmafr6995Frencheo176 Esperantochr6100Cherokeefr55Frenchtr3511Turkishfr5457Frenchru7309Russianru647Russiansr1331Serbiansr4184Serbianel343Greekeo7464 Esperantoiu1095 Inuktitutth827Thaizh4008Chinesetr7369Turkishsr7603Serbianbn1555Banglaeo3616 Esperantoth2525Thaiar6026Arabicel5724Greekfr6792Frenchel4538Greekbn3605Banglachr5213Cherokeeel308Greekchr6332Cherokeeen7775Englishes4645Spanishru7363Russianeo4136 Esperantofr800Frenchth416Thaith6691Thaizh7767Chinesees1048Spanishbn2228Banglaen1272Englishja18Japaneseccp4190Chakmaja6994Japaneseth2212Thairu8095Russianzh7058Chinesefr644Frenchen892Englishen2727Englishtr5307Turkishar1412Arabictr3334Turkishzh2290Chineseth3031Thaiar6628Arabicel5998Greektr207Turkishbn4581Banglabn4860Banglatr6029Turkishzh1693Chinesezh3661Chineseru7043Russianja1524Japaneseja4280Japaneseiu1091 Inuktitutzh202Chinesezh1454Chinesetr6184Turkishbn1691Banglaccp2243Chakmael7620Greekbn4916Banglachr6371Cherokeebn1035Banglaccp874Chakmatr3113Turkishzh3735Chineseen3841Englishiu3560 Inuktitutth1961Thaizh5928Chineseja5722Japaneseen3291Englishth6468Thaisr1750Serbiansr1339Serbianen7307Englishja4210Japanesesr1001Serbianru106Russianchr342Cherokeeel7026Greektr231Turkishja4928Japaneseen3012Englishccp6982Chakmazh3060Chineseiu1085 Inuktitutfr2052Frenchar7354Arabicbn6942Banglaeo367 Esperantoja1658Japanesebn4548Banglatr4447Turkishru7238Russianzh2759Chinesechr4873Cherokeeel8093Greeksr6960Serbianccp2345Chakmaru277Russianja1973Japaneseccp4586Chakmachr5546Cherokeechr2983Cherokeefr7471Frenchel4100Greekccp2334Chakmaeo2737 Esperantoar5922Arabicja1502Japaneseja5452Japaneseth1384Thaieo7070 Esperantoeo5111 Esperantoel5125Greekfr2870Frenchru8101Russianbn7440Banglachr4788Cherokeeeo2137 Esperantoth5247Thaith2509Thaichr6683Cherokeechr2811Cherokeeen975Englishsr3673Serbianes2718Spanishccp7725Chakmachr4217Cherokeefr54Frenchen4515Englishel537Greekiu4355 Inuktitutru1413Russianth1093Thaien2328Englishel2785Greekiu514 Inuktitutth5683Thaith2902Thaifr4363Frenchen5216Englishtr811Turkishar3652Arabicsr7711Serbianar7015Arabicfr1077Frenchccp2711Chakmael7183Greekja3402Japanesear476Arabicchr4825Cherokeefr6485Frenchzh7649Chinesear4050Arabicel5761Greekeo5276 Esperantotr5507Turkishccp1994Chakmaeo1482 Esperantoiu6345 Inuktitutth3531Thaisr3656Serbianfr6227Frenches3801Spanishzh2486Chinesezh4944Chineseccp6229Chakmaar1557Arabiceo2911 Esperantoeo6499 Esperantoen4751Englishth1567Thaiel2492Greeken4703Englisheo6520 Esperantobn924Banglaru7084Russianar5174Arabicfr4045Frenchchr2010Cherokeear5627Arabicth6711Thaizh3365Chineseccp1185Chakmafr3159Frenchar6593Arabicccp1981Chakmachr2783Cherokeesr670Serbianeo7349 Esperantoja145Japaneseth5440Thaiar6383Arabicsr6144Serbianchr6525Cherokeeru2031Russianbn3407Banglafr1775Frenchja4366Japanesesr2413Serbianccp2628Chakmael1178Greekiu3685 Inuktitutccp7106Chakmaiu6994 Inuktitutes3264Spanishsr5864Serbiantr3248Turkishtr4807Turkishes4566Spanishccp7262Chakmafr5468Frenchchr2568Cherokeetr6150Turkishja1470Japanesear5454Arabicru296Russianja6925Japaneseiu5335 Inuktituteo61 Esperantoccp2798Chakmaja2143Japaneseeo2723 Esperantobn3440Banglabn1817Banglafr1241Frenchel6192Greekiu5963 Inuktitutja2260Japaneseru6524Russianchr4078Cherokeeru6334Russianru7840Russiansr1760Serbiansr6085Serbianzh1842Chineseru4035Russianfr763Frenchru1476Russianeo4524 Esperantoar650Arabicfr7649Frenchiu2470 Inuktitutbn3331Banglaru5510Russianbn6855Banglazh1133Chinesees5040Spanishchr7698Cherokeebn1110Banglael7097Greekar1565Arabicru7127Russianth2924Thaibn6479Banglaes2585Spanishsr809Serbianzh533Chineseeo1724 Esperantoar4956Arabicja6684Japanesesr1969Serbianth4360Thaizh1556Chinesezh7437Chinesechr4052Cherokeesr172Serbianes192Spanisheo2115 Esperantofr6099Frenchccp6641Chakmabn1301Banglaja5893Japanesefr2793Frenchiu1028 Inuktitutru2061Russiantr3346Turkisheo3042 Esperantoar5270Arabicar2287Arabiceo2434 Esperantoiu223 Inuktitutar6664Arabicru5589Russianchr1163Cherokeeeo463 Esperantoccp3822Chakmath3896Thaitr5852Turkishchr5176Cherokeetr6302Turkishen3554Englishtr4495Turkishja3623Japaneseru8097Russianfr7411Frenchen4966Englishccp3446Chakmaar4394Arabiceo5325 Esperantosr7519Serbianen156Englishzh4067Chineseth2416Thaiar2808Arabiceo6610 Esperantotr6577Turkishen992Englishiu3383 Inuktitutes1009Spanishiu2097 Inuktituttr4752Turkishel3193Greekar1517Arabicen6912Englishru3541Russiansr329Serbianth7637Thaith7820Thairu4268Russianen2524Englisheo3827 Esperantoel5370Greekel5501Greeken7110Englishtr4614Turkisheo2216 Esperantobn6811Banglaen4566Englishru1913Russianzh3371Chinesebn3968Banglaja6337Japanesebn435Banglaar924Arabicbn5092Banglaen4125Englishiu2937 Inuktitutfr3694Frenchru6845Russiantr656Turkishsr1353Serbianbn4567Banglaes1384Spanishes5988Spanishth4478Thaith2802Thaiiu5798 Inuktitutbn6989Banglaes5812Spanishel6031Greekbn2195Banglabn3441Banglaar7906Arabicen3751Englishja1327Japaneseen5908Englishtr1441Turkisheo3936 Esperantoel2681Greekzh2469Chineseeo2387 Esperantoel5109Greekccp8068Chakmath4121Thaizh4475Chineseru4805Russianeo7287 Esperantoccp6803Chakmazh5945Chineseeo7868 Esperantoja599Japanesear2995Arabictr2058Turkishth901Thaiel4968Greekiu5117 Inuktitutja2071Japanesesr4091Serbianchr2753Cherokeefr1516Frenchzh2745Chinesear2237Arabicel1496Greekru4930Russiansr3197Serbianar3827Arabicth107Thaitr1660Turkishfr7827Frenchar6418Arabicbn5553Banglasr5754Serbianar6821Arabicru3629Russianar666Arabicar2492Arabictr7947Turkishtr3039Turkishbn1692Banglaccp6958Chakmaeo231 Esperantoeo4394 Esperantoiu1995 Inuktitutth8024Thaith4730Thaiel5900Greeksr6419Serbianru2107Russianbn7099Banglaru2413Russianel7440Greekth7843Thaibn3147Banglafr5791Frencheo2351 Esperantosr1Serbianzh6182Chineseen2773Englishar7511Arabicccp2448Chakmaru4935Russiansr4855Serbianeo2981 Esperantotr8003Turkishbn5062Banglaccp5862Chakmaiu1059 Inuktitutchr2046Cherokeeth3801Thaiar3650Arabicel3528Greekccp3113Chakmaja6946Japanesechr1475Cherokeechr4979Cherokeeru3124Russianiu3659 Inuktitutes318Spanishen1697Englishzh7214Chineseth368Thaitr1859Turkishchr4231Cherokeeel4979Greekja1346Japanesebn2746Banglaen241Englishfr4946Frenchth4929Thaieo7719 Esperantoes6258Spanishen6501Englishiu6739 Inuktitutth6512Thaizh2075Chinesezh6470Chinesetr3222Turkishar5636Arabiczh5182Chineseiu8152 Inuktitutsr5663Serbianzh7128Chineseth3885Thaibn1918Banglaccp2143Chakmaeo1041 Esperantofr4702Frenchsr6520Serbianbn460Banglaen2639Englishru5401Russianzh7832Chineseel6857Greekfr4000Frenches4903Spanishccp7604Chakmaccp6100Chakmasr6377Serbianen3735Englishsr1955Serbianen1051Englishzh7284Chinesebn5759Banglael4860Greektr1796Turkishchr2666Cherokeeel2113Greekes4615Spanishfr965Frenchru480Russianen2656Englishja6322Japaneseel7057Greekeo1502 Esperantoccp6239Chakmaeo5282 Esperantozh6478Chineseja5589Japaneseeo2715 Esperantozh5014Chinesezh6585Chineseja4485Japanesefr4209Frenchth4782Thaiel5288Greektr5610Turkishen5173Englishiu1290 Inuktitutfr2198Frenchsr7408Serbianzh300Chinesetr1661Turkishel6276Greektr7745Turkishru6919Russianru7445Russianth874Thaiar3951Arabicen1219Englisheo6113 Esperantoen2637Englishccp3701Chakmachr4335Cherokeebn5492Banglachr883Cherokeefr1722Frenchccp2166Chakmaja3392Japaneseen7131Englishchr1979Cherokeear5403Arabiczh6344Chinesezh7847Chinesechr1556Cherokeetr7376Turkishth732Thaija2318Japanesesr6677Serbianiu1576 Inuktitutru6382Russianeo2738 Esperantochr1132Cherokeesr3069Serbianzh4841Chineseru1310Russianeo4335 Esperantoeo5771 Esperantoiu6792 Inuktitutzh700Chinesezh3228Chineseen7825Englisheo3274 Esperantotr3340Turkishar1580Arabiceo6078 Esperantotr3594Turkishzh2281Chinesees6411Spanishbn6107Banglaar5494Arabicchr2916Cherokeeja5346Japaneseru2682Russianen3731Englishes373Spanishccp233Chakmabn254Banglaen33Englishiu3943 Inuktitutes1352Spanishzh7052Chineseiu4217 Inuktitutja8087Japaneseth7775Thaichr1019Cherokeetr5469Turkishbn1917Banglasr6599Serbianeo5768 Esperantoeo3292 Esperantosr7087Serbianbn3809Banglabn4989Banglaja5086Japanesear7495Arabicfr5352Frencheo2055 Esperantoen6999Englishiu7764 Inuktitutru5684Russianru5888Russianja7996Japanesetr2160Turkishzh7195Chinesechr8166Cherokeeiu7709 Inuktitutth1799Thaith3352Thaifr5139Frenchar3223Arabictr4967Turkishtr3842Turkishen5682Englishbn900Banglafr4036Frenchja7052Japanesezh7923Chinesefr5927Frenchja1562Japanesebn5384Banglaiu1719 Inuktitutchr4005Cherokeeja2289Japanesear1340Arabicfr6172Frenchccp1054Chakmaes5927Spanishel3327Greekccp2605Chakmaes6066Spanishzh2097Chinesezh6979Chineseth2879Thaisr7703Serbiansr5773Serbianar4883Arabicchr5901Cherokeeeo1155 Esperantofr6411Frenchfr6507Frenchiu6517 Inuktitutsr4409Serbianen1102Englishiu6816 Inuktituteo3079 Esperantosr3442Serbiansr5332Serbiansr5172Serbianth6886Thaisr2656Serbianth7977Thaiel1500Greekbn5619Banglaja3592Japaneseel4892Greeken6835Englishccp856Chakmafr2463Frencheo3874 Esperantobn308Banglachr6403Cherokeeeo1748 Esperantofr2489Frenchccp1366Chakmaes572Spanishfr6846Frenchccp7789Chakmaiu4171 Inuktitutar8014Arabiciu6956 Inuktituttr8122Turkishzh4071Chinesezh6967Chinesezh6561Chineseel3542Greekes8114Spanishiu4362 Inuktitutzh2842Chineseccp644Chakmasr4858Serbianzh6844Chinesefr7084Frenchja3749Japaneseeo1640 Esperantoiu2968 Inuktitutsr7066Serbianfr2275Frenchel3727Greekes7904Spanishccp7962Chakmabn5903Banglaru5981Russianccp2619Chakmaeo8092 Esperantozh699Chinesear667Arabicel2870Greekiu7460 Inuktitutchr8081Cherokeetr3513Turkishen7384Englishzh4384Chinesefr7959Frenchbn6938Banglaar6643Arabicchr3530Cherokeechr1820Cherokeezh6777Chineseja3971Japanesechr5089Cherokeeen3563Englishes7084Spanishiu5797 Inuktitutja5426Japanesesr6248Serbianru3151Russiantr5626Turkishsr2148Serbianiu5705 Inuktitutar4928Arabicja7364Japanesebn277Banglaru4817Russianchr6579Cherokeefr1789Frenchja1518Japanesefr7120Frenchru795Russianar1270Arabicccp6522Chakmaru537Russianru4938Russianar6525Arabicchr6301Cherokeeel1874Greekiu945 Inuktitutja2557Japaneseel1792Greekccp1826Chakmaar3696Arabicccp3588Chakmaar882Arabiceo1559 Esperantoccp3962Chakmaja1986Japaneseen386Englishccp5793Chakmaeo903 Esperantoel3169Greektr7797Turkishar860Arabicccp5670Chakmaen7201Englishth799Thaiccp1138Chakmaru490Russianja2338Japaneseel1084Greeken5529Englishru2352Russianru7559Russianzh6723Chineseth2623Thaiccp4991Chakmafr1735Frencheo1913 Esperantoeo3972 Esperantoar4680Arabicar8126Arabicth495Thaien2200Englishar4525Arabiczh3006Chinesefr6082Frencheo2026 Esperantozh7874Chineseel3028Greekccp986Chakmatr3796Turkishes734Spanishth6940Thaiiu3914 Inuktituttr6047Turkishru1386Russiantr383Turkishes2885Spanisheo3468 Esperantoes7081Spanishen5425Englishsr7094Serbiansr7595Serbiantr5391Turkishen6287Englishiu3887 Inuktitutel1326Greektr7698Turkishchr5715Cherokeezh5275Chineseru3178Russianel6592Greeksr1194Serbianja842Japanesefr4297Frenchiu561 Inuktitutru6394Russianes2388Spanishchr6744Cherokeear638Arabicchr767Cherokeezh5640Chinesees6513Spanishes4081Spanishar4239Arabicth6705Thaija7543Japanesebn2174Banglaeo4616 Esperantoar4809Arabiciu4412 Inuktitutchr7557Cherokeear458Arabicen3228Englishsr3071Serbianzh463Chineseel2590Greeksr4807Serbianfr3078Frenchbn2127Banglaccp5429Chakmabn4867Banglazh7881Chineseja6487Japaneseiu543 Inuktitutccp6909Chakmaes6326Spanishtr3745Turkishccp2869Chakmabn7731Banglafr5391Frenchccp3801Chakmaar8140Arabicbn4580Banglath1152Thaien579Englishchr7737Cherokeesr1590Serbianru3019Russianar3772Arabicbn8016Banglasr305Serbianzh57Chinesesr5758Serbianth675Thaifr7293Frenchru3937Russianccp3126Chakmaccp5163Chakmasr363Serbianth2637Thaizh711Chineseen4023Englishes3627Spanishar248Arabicru6622Russianiu1536 Inuktitutsr1944Serbianel4520Greekeo5512 Esperantoja4134Japanesezh6258Chinesetr7889Turkishsr1463Serbianth3561Thairu7805Russiantr8031Turkishccp6438Chakmaes4137Spanishccp1114Chakmaru3626Russianru4152Russianru4510Russianar1214Arabiceo2349 Esperantofr6075Frenchtr5213Turkishfr463Frencheo7344 Esperantoja6632Japaneseiu5212 Inuktitutja5818Japanesechr843Cherokeeeo140 Esperantofr7887Frenchth7912Thaith3088Thaiiu6593 Inuktitutzh4511Chinesear3996Arabiczh2506Chinesebn1331Banglafr6439Frenchiu7897 Inuktitutja5501Japanesebn5716Banglaja7724Japanesezh3001Chineseen4052Englishen2815Englisheo4014 Esperantozh3816Chineseja5326Japanesefr1889Frenchccp7700Chakmasr572Serbianes2654Spanishth564Thaifr6985Frenchzh3945Chineseel7920Greekel5764Greekar4505Arabicar3801Arabicen2365Englishen4577Englishar4864Arabiceo1472 Esperantoeo1608 Esperantozh3169Chinesechr3102Cherokeebn4817Banglael7268Greekeo5180 Esperantoiu4499 Inuktitutchr3914Cherokeechr8055Cherokeeeo5845 Esperantozh5015Chineseeo2416 Esperantotr7545Turkishchr2151Cherokeechr4363Cherokeefr4011Frenchth7071Thaieo6224 Esperantobn2651Banglachr7290Cherokeeen3156Englishfr8111Frenchtr4357Turkishja167Japanesezh6710Chineseth7917Thaieo6258 Esperantoja4531Japanesees1210Spanishru7855Russianccp3547Chakmabn5692Banglaar4628Arabicbn1078Banglafr5049Frenchen5952Englishja6642Japanesesr2465Serbiansr8109Serbianiu4212 Inuktituttr2906Turkishtr6731Turkishel5458Greekth6635Thaiccp7485Chakmaja3300Japanesesr79Serbianen4946Englishccp5450Chakmaen25Englishchr1539Cherokeeeo1658 Esperantoiu5435 Inuktitutbn2851Banglath7460Thaitr4104Turkishzh7709Chinesechr795Cherokeeccp2247Chakmatr7910Turkishja415Japaneseiu6209 Inuktitutiu3269 Inuktitutru4080Russianar1271Arabicar567Arabicsr36Serbianel8035Greekccp7675Chakmaeo399 Esperantofr4940Frenchtr8026Turkishiu3053 Inuktitutar198Arabicru8093Russianel2597Greekzh3302Chinesezh5896Chineseeo5513 Esperantoiu310 Inuktitutchr1180Cherokeetr4179Turkishfr2711Frenchel2020Greekth1776Thaizh655Chineseth2068Thaifr2409Frenchar2991Arabiciu4138 Inuktitutsr2216Serbianel4321Greektr224Turkishel5685Greeksr5055Serbianzh2206Chineseen8040Englishsr5074Serbiantr7626Turkishes1735Spanishiu3146 Inuktitutar8185Arabices8150Spanishsr7146Serbianru3576Russianfr1334Frenchtr6288Turkishru1140Russianchr274Cherokeeen5247Englishbn5117Banglaen2755Englishiu6728 Inuktitutja6071Japaneseth2718Thaibn7814Banglafr5387Frenchchr4091Cherokeeja369Japaneseja4176Japaneseeo5316 Esperantochr1076Cherokeeel6419Greekfr3430Frenchfr6237Frenchen2164Englishru7115Russianeo636 Esperantoth4746Thaien3254Englishchr7838Cherokeezh5219Chinesebn6422Banglaes3619Spanishfr3518Frenchbn1737Banglaru1957Russiantr3474Turkishbn4536Banglaja6300Japaneseel6126Greekeo2984 Esperantoru314Russianbn6793Banglachr1221Cherokeefr2755Frenchbn6467Banglasr7182Serbianccp5996Chakmaccp4472Chakmath5121Thaiel4170Greeksr7503Serbianzh2983Chineseel2071Greekth6393Thaibn6609Banglaccp2425Chakmaar341Arabicbn9Banglael4983Greekes3318Spanishar7280Arabicsr5961Serbianel6332Greekes214Spanishiu1344 Inuktitutsr896Serbianeo1132 Esperantoiu1642 Inuktitutru520Russianar3279Arabicsr4217Serbiantr886Turkishth580Thaiiu6611 Inuktitutchr2191Cherokeefr166Frenchsr6782Serbianth6099Thaifr5124Frencheo1444 Esperantosr3599Serbianfr7911Frenchen4624Englishth3294Thaiiu1841 Inuktitutja3716Japanesees1389Spanishru4466Russianeo1494 Esperantoeo1691 Esperantoel2994Greekchr2849Cherokeeja5661Japanesear3144Arabices776Spanishar3790Arabiczh5470Chineseth1500Thaiar3673Arabiciu572 Inuktitutes908Spanishes1632Spanishchr4862Cherokeees6709Spanishja5215Japaneseja3183Japaneseja6935Japanesefr7061Frenchchr3272Cherokeeccp2158Chakmasr2603Serbianar7177Arabictr3716Turkishzh6027Chinesebn4767Banglaen3026Englishel2656Greekfr4177Frenchel2915Greekar4426Arabicfr4635Frencheo5904 Esperantochr7795Cherokeeiu3333 Inuktitutar3780Arabiczh764Chineseccp6464Chakmaja3014Japanesees968Spanishel6045Greekar3523Arabicru3450Russiansr4750Serbiantr542Turkishtr4966Turkishar7924Arabices5386Spanishth1701Thaiar1706Arabicen7162Englishchr2181Cherokeeiu4422 Inuktituttr4568Turkishth265Thaifr2208Frenchtr2255Turkishbn2779Banglaja5757Japanesebn5176Banglaiu3353 Inuktituteo1047 Esperantoel4481Greekja7569Japaneseen3429Englishccp5218Chakmaja5987Japaneseiu5520 Inuktituttr2448Turkishel8025Greekar3618Arabicccp6757Chakmatr7419Turkishel7167Greekeo115 Esperantotr5202Turkishtr5379Turkishzh1120Chinesezh1708Chineseeo7221 Esperantobn3508Banglaiu6594 Inuktitutccp671Chakmaccp1709Chakmaccp2469Chakmaja1753Japaneseccp2743Chakmaja1761Japanesechr2863Cherokeezh3394Chinesees4419Spanishbn25Banglaen1914Englishzh5357Chineseccp5508Chakmaru3590Russiansr7490Serbianfr253Frenchbn3290Banglaeo1364 Esperantochr7120Cherokeees1851Spanishzh3232Chinesezh5779Chinesesr3409Serbianiu2621 Inuktituteo7866 Esperantobn6580Banglachr554Cherokeeel6477Greekel6768Greekiu809 Inuktitutja4178Japaneseja7046Japanesebn3236Banglaja4369Japaneseru7934Russianiu644 Inuktituteo7965 Esperantobn72Banglaen7963Englisheo1863 Esperantoru7004Russianiu2055 Inuktituten4907Englishchr6887Cherokeeen3849Englishen5765Englishbn2268Banglachr759Cherokeechr3127Cherokeeja7063Japanesefr4073Frenchru4761Russianzh1480Chinesetr2684Turkishccp941Chakmaar2813Arabicru6958Russianbn640Banglaccp4251Chakmasr4663Serbianchr5412Cherokeezh3210Chinesees7613Spanishchr5664Cherokeefr1819Frenchen2364Englishiu1276 Inuktitutsr4320Serbiansr4668Serbianru7707Russianel5350Greekiu1880 Inuktituttr1005Turkishtr5864Turkisheo3109 Esperantotr2556Turkishbn2977Banglaes1600Spanisheo6229 Esperantochr3413Cherokeeel5832Greekzh1108Chineseen1709Englisheo7651 Esperantoar6822Arabictr2554Turkishccp6269Chakmaar818Arabicen4585Englishes2956Spanishja853Japaneseja7254Japaneseth5207Thaith3057Thaitr6785Turkishel8134Greekeo1496 Esperantofr724Frenchfr125Frencheo162 Esperantofr738Frenchel5850Greektr891Turkishbn4408Banglaar655Arabicth1724Thairu7422Russianel7860Greekar5266Arabicth925Thaiccp3659Chakmaccp2903Chakmaes7821Spanishar2548Arabicfr5997Frenchel5107Greeken7782Englishfr4964Frenchth6244Thaith6578Thaija5669Japanesetr6326Turkishzh3253Chineseel1910Greekeo5045 Esperantosr4087Serbianja386Japaneseen6137Englishtr5121Turkishzh5165Chineseru1949Russianiu8167 Inuktituten4222Englishes6256Spanishsr3821Serbianchr3045Cherokeeccp3345Chakmaen1402Englishchr4770Cherokeeen5447Englishtr1039Turkishru7836Russianbn1099Banglael5348Greeken2051Englishccp4783Chakmaccp883Chakmath4087Thaitr5184Turkishja6921Japaneseeo687 Esperantoel1475Greekzh1258Chineseja7339Japaneseiu643 Inuktitutth2645Thaiccp5710Chakmath3044Thairu7395Russianes1662Spanishja3764Japaneseth3398Thaiar1354Arabicru1055Russianeo6135 Esperantoel2874Greektr6263Turkishiu3040 Inuktitutel6935Greekar7707Arabicen3518Englishtr5051Turkishccp857Chakmabn2995Banglaen2949Englishen1515Englishzh2256Chinesees1497Spanishsr610Serbianfr1437Frenchiu7859 Inuktitutru8031Russiansr1701Serbiansr7444Serbianen2210Englishtr528Turkishes3552Spanishbn276Banglael7227Greekar6367Arabicel7231Greekiu2388 Inuktitutccp3078Chakmafr3653Frenchja5403Japaneseth1581Thaiel6667Greekbn6737Banglabn976Banglaes311Spanishru6898Russianja4619Japanesefr325Frenchru6231Russianar5874Arabictr864Turkishzh1705Chinesear2185Arabicar4744Arabicel2399Greeken570Englishru7863Russianth1882Thaisr6927Serbianiu5489 Inuktitutccp6557Chakmael1749Greeken592Englishja6744Japaneseru5398Russiansr5344Serbianchr705Cherokeechr5511Cherokeechr6006Cherokeeiu4278 Inuktitutsr689Serbianfr7994Frenchen5469Englishtr7943Turkishchr5705Cherokeefr8034Frenchchr3244Cherokeeen70Englishen6818Englishel1982Greeksr3465Serbianchr1084Cherokeear5952Arabicru7028Russianiu7951 Inuktitutzh677Chinesear7546Arabices1595Spanishel7517Greektr2911Turkishzh4692Chineseccp3610Chakmaen6176Englishccp8122Chakmaja4185Japaneseja5039Japanesezh2031Chinesees6681Spanishchr663Cherokeebn6130Banglabn7751Banglaen3035Englishchr3108Cherokeear6592Arabiciu4406 Inuktitutar6961Arabicen728Englishes8099Spanishru7247Russianfr7834Frenchchr5474Cherokeeja2164Japanesebn3424Banglaja270Japaneseth677Thaija638Japaneseccp3530Chakmael5531Greeken794Englishfr7696Frenchiu488 Inuktitutiu4635 Inuktitutiu5685 Inuktitutja1377Japanesetr2048Turkishen2622Englishsr6266Serbianiu5140 Inuktituteo981 Esperantobn8110Banglafr5336Frenchzh5788Chineseth5057Thaitr2578Turkishar5682Arabicsr8187Serbiantr5484Turkishar4046Arabicru6173Russianja2428Japaneseen1192Englishchr6863Cherokeeja619Japanesesr103Serbianen3211Englishsr1104Serbianru5307Russianccp2579Chakmachr1942Cherokeebn1524Banglaen3618Englishchr7494Cherokeeel2645Greekru6777Russianbn2807Banglaru4497Russianen2690Englishja3211Japaneseiu3791 Inuktitutth4779Thaien4195Englishfr1360Frenchzh5329Chinesebn1245Banglael4878Greekfr6296Frenchzh459Chineseru3264Russianen5650Englishel5205Greekzh6180Chineseth7228Thaizh5988Chineseen6736Englishel6894Greekccp587Chakmaes5301Spanishel1946Greekfr7509Frenchja2945Japaneseth5668Thaitr4770Turkishen1671Englishen3582Englishru1328Russianes6317Spanishbn6380Banglath7011Thaith6703Thaies3997Spanishel1510Greekiu598 Inuktitutiu7079 Inuktitutes3616Spanishccp7742Chakmaen1060Englishtr7360Turkishes1411Spanishsr6634Serbianel4486Greeken451Englishbn6301Banglaen3000Englishiu877 Inuktitutja7616Japanesetr2178Turkishfr6484Frenchiu546 Inuktitutsr740Serbianbn3422Banglafr7002Frenchja1906Japanesesr4264Serbianth6514Thaieo4828 Esperantozh7182Chinesesr7360Serbianel1681Greekth6759Thaiel1914Greekchr3504Cherokeear746Arabicru3589Russianzh2783Chineseja3778Japanesefr6524Frencheo1345 Esperantoel1790Greekja8186Japaneseru4520Russianeo6702 Esperantoes672Spanishzh4591Chineseel1521Greekth6367Thaibn7974Banglaja5293Japaneseiu3821 Inuktitutccp5236Chakmaen2967Englishel1308Greekru1053Russiansr1618Serbianeo1108 Esperantoeo1102 Esperantoeo7619 Esperantotr1062Turkishccp1898Chakmaeo3883 Esperantotr6852Turkishbn552Banglaiu7595 Inuktitutbn7491Banglaes2925Spanishes4997Spanishsr1562Serbianru7873Russianen160Englishtr3070Turkishchr4002Cherokeeiu3013 Inuktitutru5995Russianen6673Englishtr5836Turkishzh7179Chineseja7283Japanesechr397Cherokeeru4974Russianbn1322Banglaccp4813Chakmaes2894Spanishar2745Arabicsr7144Serbianeo5457 Esperantoth6602Thaifr1553Frenches6507Spanishsr5283Serbianchr7492Cherokeesr2102Serbianen1311Englishar7575Arabicru5274Russianth7634Thaiar154Arabiciu3393 Inuktituttr2614Turkishtr5891Turkishsr5457Serbianel8114Greekru7018Russianel6151Greekes3522Spanishar5150Arabicfr1136Frenchtr48Turkishtr1526Turkisheo7640 Esperantoiu1002 Inuktitutccp5250Chakmazh7819Chinesear6837Arabicel5511Greeksr2005Serbianth7871Thaiccp7576Chakmabn2138Banglaru5865Russiantr3213Turkishel2046Greekel7114Greekth5134Thaiccp2046Chakmasr2944Serbiantr5583Turkishel1802Greekchr666Cherokeezh4728Chineseccp1256Chakmath1762Thaiccp5577Chakmazh4405Chineseth1474Thaifr5736Frenchccp5554Chakmath1434Thaieo5719 Esperantoes4914Spanishth3014Thaitr6048Turkishtr2755Turkishzh4551Chineseru4868Russianchr1877Cherokeeru7619Russianiu8053 Inuktitutzh3345Chinesear2504Arabicbn4846Banglafr5169Frenchccp5488Chakmaar4421Arabicbn7261Banglaen2657Englishbn3060Banglachr2112Cherokeeiu6862 Inuktitutth3607Thaitr893Turkishchr5093Cherokeear6285Arabicsr2133Serbiantr564Turkishru6454Russianar5867Arabicccp6029Chakmaccp2041Chakmaes1922Spanishzh6602Chinesebn2037Banglatr5546Turkishsr7784Serbianel4894Greekfr4816Frenchsr2458Serbianth560Thaiar4044Arabiciu7566 Inuktitutes7535Spanishzh3093Chineseel4915Greekchr327Cherokeebn2901Banglaiu4360 Inuktituten6704Englishes6459Spanishen1594Englishes5285Spanishiu6975 Inuktitutru3094Russianeo1206 Esperantoccp5294Chakmazh5610Chineseccp7457Chakmabn1971Banglazh1441Chinesesr4235Serbiansr4420Serbianchr1703Cherokeear4091Arabicel3545Greekja7692Japaneseth3687Thaith713Thairu910Russiansr1405Serbianfr6128Frencheo4108 Esperantoru6696Russiantr4895Turkishchr828Cherokeeja5148Japanesechr1316Cherokeebn1102Banglath6557Thaibn3404Banglaja7861Japanesebn3595Banglachr1882Cherokeeel5390Greeksr4800Serbianchr2582Cherokeeel927Greeken3040Englishsr2573Serbianes3203Spanishru5368Russianbn4462Banglaes1618Spanishiu1325 Inuktitutzh4435Chineseeo6334 Esperantofr7626Frenchru7571Russianen4630Englishen4724Englishth1315Thaiiu4825 Inuktituteo4852 Esperantozh4941Chinesees2767Spanishiu2019 Inuktitutth5047Thaiccp747Chakmaeo6457 Esperantoar394Arabicru5192Russianiu6106 Inuktitutel89Greekbn2620Banglaccp4392Chakmabn5105Banglaeo6401 Esperantoja5829Japanesechr7072Cherokeesr1492Serbiantr3687Turkishfr8023Frenchccp7583Chakmasr6278Serbianeo6862 Esperantochr4614Cherokeeccp4017Chakmachr1684Cherokeechr3312Cherokeeen4044Englishbn7708Banglath1931Thaiar3205Arabiczh5624Chineseru1115Russianar3161Arabiceo3893 Esperantoja2483Japaneseel4146Greekfr7321Frenchru2400Russianzh7989Chinesefr963Frenchen5046Englishbn4986Banglaccp7958Chakmabn2003Banglabn5221Banglatr4270Turkishzh2126Chinesechr3716Cherokeebn7052Banglaar7583Arabicbn4099Banglaes4965Spanishfr1587Frenchar3386Arabicfr882Frenchen3775Englishzh4856Chinesebn8177Banglazh5756Chinesetr332Turkisheo4674 Esperantochr188Cherokeesr4260Serbianzh2981Chinesebn7722Banglasr5538Serbianth5063Thaien1057Englishiu3745 Inuktitutchr4090Cherokeeja2301Japanesesr1612Serbianru2263Russiantr5578Turkishzh4319Chinesesr1655Serbianes366Spanishfr160Frenchfr3608Frenchccp452Chakmabn573Banglael3461Greekel7703Greekes7189Spanishsr3928Serbiantr4810Turkishfr5407Frenchchr6948Cherokeebn7596Banglael6623Greekchr1272Cherokeeiu4200 Inuktitutchr294Cherokeeel5718Greekru7170Russianen7795Englishar443Arabicen976Englishfr2758Frenchar7362Arabicfr5481Frenchccp1789Chakmaja736Japanesesr4745Serbiansr2086Serbianccp7658Chakmabn5068Banglasr8033Serbiansr1011Serbianfr986Frenchbn5819Banglaccp2063Chakmath4257Thaitr2765Turkishen3377Englishar2117Arabiciu6194 Inuktitutel3340Greeken440Englishes3484Spanishbn2109Banglaiu4823 Inuktitutfr6984Frencheo1445 Esperantobn3421Banglabn145Banglaiu6961 Inuktitutru4789Russiansr7102Serbianiu2103 Inuktitutchr7101Cherokeear6647Arabicchr3221Cherokeeen4606Englishar7835Arabices3775Spanisheo6925 Esperantoru5709Russianeo2966 Esperantoja4338Japaneseeo5950 Esperantobn1630Banglaru6869Russianeo6141 Esperantozh1251Chineseth1824Thaien7081Englishccp5035Chakmath7271Thaisr5340Serbianar4737Arabicbn2093Banglabn3573Banglafr7844Frenchccp6568Chakmaiu1125 Inuktitutiu1999 Inuktitutsr749Serbianccp6899Chakmaeo1963 Esperantoth5290Thaiccp5823Chakmael7848Greektr6098Turkishbn807Banglaccp4736Chakmaja1352Japanesefr5618Frenchfr7190Frenches3800Spanishar7022Arabiczh439Chinesebn47Banglath4912Thairu4262Russianen5832Englishes798Spanishru2643Russianen3776Englishccp5601Chakmaen735Englishen3943Englisheo409 Esperantoeo1122 Esperantosr5239Serbianth2469Thaizh4798Chinesesr377Serbianbn6486Banglachr5426Cherokeeen1782Englishes3358Spanishsr6509Serbianbn3293Banglaiu6705 Inuktitutccp2298Chakmasr1160Serbianel5746Greekes770Spanishen5200Englishccp6564Chakmabn2634Banglaen640Englishccp5249Chakmabn3365Banglaeo7040 Esperantoes2201Spanishtr3937Turkishja1912Japanesefr6628Frenchtr5818Turkishja3487Japanesefr3838Frenchccp6248Chakmaja3234Japaneseru638Russiantr5899Turkishtr2794Turkishes215Spanishel442Greekes4383Spanishes4352Spanishiu6524 Inuktitutsr7051Serbianth5896Thaiccp7347Chakmaar6075Arabiceo434 Esperantoeo4613 Esperantoiu7687 Inuktitutja839Japaneseiu1808 Inuktitutja2655Japanesesr7592Serbianja5659Japanesetr7941Turkishfr4596Frenchccp631Chakmaes3081Spanishzh6291Chineseru7940Russianes5373Spanishen950Englishtr3583Turkishel5274Greekru5904Russianru7465Russianfr7240Frenchiu6447 Inuktitutes3958Spanishiu208 Inuktituteo1835 Esperantoen6536Englishfr2981Frenchru3928Russianru7941Russiansr5253Serbianru4452Russianen6983Englisheo1461 Esperantozh2174Chineseen251Englishfr1845Frenchiu4390 Inuktituttr3423Turkishar4915Arabicen1582Englishes239Spanishfr28Frenchiu107 Inuktitutiu2863 Inuktitutru6302Russianja4867Japaneseru6151Russianzh7634Chinesezh3470Chinesetr398Turkishru7150Russianiu5761 Inuktitutiu2569 Inuktitutbn6741Banglath4202Thaibn1495Banglazh135Chinesesr6104Serbianes4460Spanishen2647Englishbn3674Banglaes5443Spanishru4575Russianth1057Thaith1858Thaifr226Frenchen8148Englishtr3276Turkishen5729Englishth6494Thaizh844Chinesebn6892Banglaja620Japaneseen6973Englishsr1728Serbianeo1682 Esperantotr6691Turkishsr5397Serbianar1254Arabicbn6281Banglael3405Greekth3215Thaies5783Spanishar5801Arabicja6127Japaneseth8103Thaitr3543Turkishel816Greektr5018Turkisheo7288 Esperantozh6402Chinesear1444Arabicchr312Cherokeesr1438Serbiansr3460Serbianfr6133Frenchel2319Greekbn1377Banglaes4302Spanishfr4960Frenchzh2673Chineseccp5723Chakmazh426Chinesees7097Spanishzh904Chinesebn550Banglael367Greekiu2452 Inuktituttr7420Turkishzh8102Chinesechr3699Cherokeeru2126Russianes2645Spanishfr6574Frenchiu2755 Inuktitutzh7028Chinesear6143Arabiceo7804 Esperantoth7107Thaisr8152Serbianccp1804Chakmafr4555Frenches4475Spanisheo4381 Esperantochr7842Cherokeesr3342Serbianiu3571 Inuktituttr801Turkishfr4479Frenchtr4152Turkishchr5815Cherokeechr7958Cherokeees3092Spanishth5237Thaiar7885Arabicfr4306Frenchsr5312Serbianfr1594Frenchru1551Russianen6268Englishbn3308Banglaen1121Englishfr5246Frenchbn623Banglaar3287Arabiciu5109 Inuktitutsr24Serbianth992Thaifr128Frenchru5772Russianbn2410Banglaja6124Japaneseru3775Russianen5398Englishth4231Thaies1447Spanishar6987Arabicel3453Greekru741Russianccp3030Chakmabn4141Banglachr6620Cherokeeen7139Englishen7422Englishar2153Arabiceo5042 Esperantozh519Chineseja3508Japanesear7234Arabiceo1219 Esperantobn5295Banglatr2838Turkishccp6947Chakmaccp4499Chakmachr307Cherokeechr3047Cherokeechr2780Cherokeeiu7489 Inuktitutel5853Greekar6554Arabicar4907Arabicbn7136Banglaes4532Spanishel4609Greekes4329Spanishtr6979Turkishar2756Arabicru919Russianfr4545Frenchsr6206Serbianchr8109Cherokeezh4616Chinesezh1650Chinesees1614Spanishel2542Greekchr6896Cherokeeru3670Russiantr3494Turkishfr2006Frencheo368 Esperantoccp5889Chakmael5632Greeken4492Englishccp2273Chakmael3456Greekbn5342Banglael3219Greekchr6079Cherokeeru2589Russianel6311Greekes4601Spanishccp730Chakmaeo5828 Esperantoes1653Spanishtr6680Turkishiu7913 Inuktitutbn7568Banglaiu2571 Inuktitutth84Thaitr8028Turkishchr2891Cherokeebn5617Banglael2146Greekja637Japanesezh7090Chinesear7774Arabicccp4848Chakmael2933Greekja5805Japanesesr3925Serbianar3136Arabicbn1227Banglabn5592Banglaes1678Spanishes2545Spanishel6181Greekfr8003Frenchiu1016 Inuktituteo1762 Esperantoccp7871Chakmaru7708Russiantr2720Turkishzh7556Chinesesr6754Serbianbn1830Banglatr2916Turkishsr366Serbiansr2511Serbianbn3775Banglath7471Thaiccp1064Chakmaiu1740 Inuktitutsr5454Serbianccp3055Chakmatr6181Turkisheo6848 Esperantoen2243Englishru2704Russianes5147Spanishzh762Chineseen2327Englishja1135Japaneseen1924Englishth1532Thaien6589Englishbn3849Banglaeo1252 Esperantobn4946Banglath739Thaisr7758Serbiansr853Serbiantr2000Turkishar7242Arabicbn7319Banglath4249Thaibn3963Banglaccp3408Chakmaiu1448 Inuktituten380Englishen6659Englishchr6148Cherokeeccp6519Chakmaccp5151Chakmabn2302Banglael3785Greekchr1638Cherokeefr4369Frenchja3737Japaneseel6660Greeksr3135Serbianbn7404Banglatr953Turkishen3762Englishel1560Greekccp2015Chakmaen2445Englishiu3625 Inuktitutchr3171Cherokeechr5306Cherokeeccp354Chakmachr8127Cherokeees7742Spanishbn5019Banglaja3884Japaneseja3686Japaneseru5195Russianzh2292Chinesechr941Cherokeeja5232Japaneseeo5885 Esperantoiu5988 Inuktituten1389Englishes3433Spanishfr4015Frenchfr6451Frenchsr3150Serbianth964Thaizh2200Chineseja5465Japaneseja645Japanesefr1554Frenchen1743Englishfr7224Frenchth5524Thaitr6358Turkishzh8002Chineseen965Englishiu1396 Inuktitutes6632Spanishbn8025Banglachr151Cherokeezh1453Chineseccp4029Chakmabn3864Banglasr1596Serbianbn4951Banglaen656Englishsr2821Serbianes4851Spanishel6716Greekccp2404Chakmaru1735Russianfr7397Frenchsr2052Serbianzh5774Chineseth6607Thaies175Spanishtr6730Turkishel7612Greekru6574Russianzh4829Chineseja3223Japanesezh2159Chinesezh5943Chineseccp7534Chakmaccp5284Chakmaja2038Japaneseth4318Thaija678Japanesefr4886Frenches805Spanishbn2726Banglaja7417Japanesezh1810Chineseen7609Englishja6500Japanesesr7491Serbianen7978Englishar6362Arabicbn4227Banglaeo5910 Esperantotr2078Turkishfr2368Frenchen5662Englishzh5373Chineseru1485Russianes3848Spanishiu2253 Inuktitutar1649Arabicchr2901Cherokeechr4769Cherokeefr5495Frenchen2225Englishar5845Arabicbn6458Banglasr1065Serbianth5798Thaien3799Englishel1552Greekzh2402Chineseccp6075Chakmaru2391Russianel6380Greekccp3489Chakmafr6032Frenchen2410Englishccp4798Chakmaes4174Spanishfr6086Frenchar4312Arabicsr7965Serbianfr5223Frenchel331Greeken3247Englishbn1898Banglaar5225Arabiczh4984Chineseccp6073Chakmachr1899Cherokeeiu1173 Inuktitutsr6082Serbianiu537 Inuktitutes1766Spanishru4521Russianru4522Russianes7862Spanishja1045Japanesear641Arabicja100Japaneseru3221Russianja7464Japaneseccp6163Chakmachr7235Cherokeeth6558Thaies1147Spanishar3265Arabictr7173Turkishar1361Arabiciu5230 Inuktitutccp52Chakmael8011Greekiu5166 Inuktitutsr608Serbianar6950Arabicel4299Greekccp4105Chakmael3835Greekbn5690Banglaru2981Russianth7241Thaies5410Spanisheo3829 Esperantobn6962Banglasr2720Serbiantr4346Turkishru5444Russianchr8090Cherokeeen7043Englishar7518Arabicar5769Arabicsr1219Serbianbn5739Banglabn2663Banglaeo7884 Esperantoeo6040 Esperantoen5137Englishar6706Arabicth3334Thaien7713Englishth4014Thaibn7363Banglaccp393Chakmaen1194Englishel3621Greekes1348Spanishsr3512Serbianccp6714Chakmaes8082Spanisheo3016 Esperantosr4900Serbianja488Japanesees7269Spanishen3953Englishccp209Chakmabn3366Banglath2197Thaizh7409Chineseen5300Englishel4727Greekiu1545 Inuktitutzh1639Chinesees3963Spanishsr5557Serbianbn5051Banglaja3311Japaneseth2895Thaien6227Englishccp2057Chakmasr2339Serbiansr5900Serbianchr7164Cherokeeel4190Greekzh3752Chinesechr7992Cherokeesr3498Serbianes1778Spanishbn1164Banglael2944Greekru6738Russianru1872Russianeo7360 Esperantosr594Serbianeo242 Esperantofr3966Frenchsr3242Serbianen3770Englishth6790Thaija5432Japaneseiu1128 Inuktitutccp4880Chakmaru1196Russianru2870Russianth4511Thaisr7500Serbianes351Spanishiu3520 Inuktitutar1645Arabicar4230Arabiceo6816 Esperantoth6724Thaisr4813Serbianbn4153Banglachr6675Cherokeeccp1381Chakmaen5543Englishccp1677Chakmael4104Greekeo2238 Esperantoar7776Arabicbn6147Banglachr4609Cherokeeen3599Englisheo867 Esperantoiu4690 Inuktitutes4541Spanishes2703Spanishtr4255Turkishja2159Japanesechr6401Cherokeeen3479Englishar2800Arabicar4298Arabicel2525Greekja7936Japanesebn5869Banglaeo7574 Esperantoccp1762Chakmaen7790Englishtr7676Turkishar5862Arabicth1750Thaiccp1317Chakmaeo7471 Esperantoar5671Arabicel2256Greekes2501Spanishes7809Spanishfr3480Frenchiu1855 Inuktitutiu5471 Inuktitutccp5219Chakmaiu2683 Inuktituttr3388Turkishtr7942Turkishiu3814 Inuktitutel1915Greekzh411Chinesezh1710Chineseel589Greekccp5265Chakmaccp6782Chakmaru6264Russianes3105Spanishth2704Thaien2771Englishel7506Greeken2675Englishtr6407Turkishsr7133Serbianar1396Arabicsr3601Serbiansr3631Serbianeo1392 Esperantoccp7439Chakmaes3322Spanishccp1186Chakmath1004Thaisr5040Serbianeo2348 Esperantoes789Spanishtr5525Turkishel6838Greeken86Englishccp4241Chakmafr1656Frenchiu3052 Inuktitutru3751Russianchr1330Cherokeebn6770Banglael8070Greekccp5835Chakmaja2665Japaneseja4538Japanesear4329Arabicbn4893Banglazh3477Chineseth2166Thaizh332Chineseel7923Greekfr6903Frenchsr2303Serbianel948Greekchr360Cherokeezh266Chinesechr5344Cherokeeru239Russianar6656Arabicru575Russianiu3802 Inuktitutja5999Japanesetr4239Turkishccp4468Chakmaen7833Englishsr2563Serbianccp6599Chakmaja2290Japaneseth6639Thaiel7605Greekzh4119Chinesear6423Arabiceo3674 Esperantosr3268Serbiansr3642Serbianzh5416Chineseen2156Englishfr4538Frenchtr2544Turkishel1827Greekeo7425 Esperantochr5120Cherokeefr4605Frenchiu7162 Inuktitutel1056Greekeo2684 Esperantoeo3534 Esperantoth5020Thaitr1325Turkisheo3183 Esperantoja4542Japaneseen628Englishja1463Japaneseeo7222 Esperantoar3600Arabicru7656Russianen5644Englishen1901Englisheo198 Esperantochr7822Cherokeeru1462Russianccp5860Chakmaar1375Arabicccp774Chakmaccp1184Chakmael2157Greekccp4317Chakmaen3584Englishsr7115Serbianth1479Thaija4322Japanesesr1753Serbianel3842Greekchr5702Cherokeeru3934Russianel1096Greekzh6560Chinesesr562Serbianja4903Japaneseccp127Chakmaccp7215Chakmaiu205 Inuktitutiu5785 Inuktituttr2009Turkishen3342Englishbn1393Banglachr2606Cherokeefr260Frenchar5451Arabicja3845Japanesees5045Spanisheo57 Esperantofr3112Frenchth1819Thaiar4368Arabicbn4444Banglasr5641Serbiantr5883Turkishzh7571Chinesees1276Spanishccp2153Chakmaar5446Arabicccp4239Chakmael4703Greeken6396Englishel2267Greekiu7869 Inuktitutja6520Japaneseja6589Japaneseru2819Russianel1183Greekiu6969 Inuktitutsr1382Serbianth3774Thaies380Spanishccp5180Chakmatr7674Turkishel7888Greekccp6142Chakmachr8014Cherokeeru6383Russianes1769Spanishfr2990Frenchel1865Greekth4069Thaitr2260Turkishchr5165Cherokeebn3520Banglaeo2838 Esperantoccp7484Chakmaes1852Spanishccp5780Chakmaru7053Russianfr2633Frenchth56Thaiel4364Greekeo718 Esperantoeo8081 Esperantoel4715Greekel7136Greekth6843Thaiel764Greekeo2829 Esperantoiu1530 Inuktituttr6829Turkishel6212Greekbn4756Banglachr7885Cherokeebn3470Banglaeo7893 Esperantochr2946Cherokeezh7998Chineseccp2890Chakmaes802Spanishes993Spanishfr3366Frenchchr7149Cherokeetr5201Turkishiu827 Inuktituteo2623 Esperantoja740Japanesear1256Arabices7522Spanishja4274Japanesezh7880Chineseeo2878 Esperantochr1578Cherokeezh3923Chinesezh5444Chineseeo2574 Esperantoeo2703 Esperantoes2121Spanishchr2542Cherokeees3192Spanishfr7344Frenchja2940Japaneseru6082Russianzh2072Chinesefr7749Frenchchr5564Cherokeeth2995Thaiar672Arabicccp453Chakmaes2232Spanishtr4272Turkisheo3255 Esperantoja5201Japaneseru7666Russianccp6737Chakmazh4434Chinesezh3036Chineseeo4879 Esperantofr5200Frenchru3495Russiantr4430Turkishar6606Arabicel2313Greekth6471Thairu2052Russianchr51Cherokeebn3535Banglaiu5594 Inuktitutth7819Thaitr6883Turkishzh4990Chinesesr1788Serbiansr1928Serbianar3898Arabicccp6561Chakmath5308Thaiar7905Arabicar736Arabicel1447Greekiu4101 Inuktituttr1554Turkishtr914Turkishbn587Banglael909Greekar3606Arabices3104Spanishccp5861Chakmaiu5369 Inuktituteo5166 Esperantotr1885Turkishzh1439Chineseja6851Japanesetr3476Turkishsr2033Serbiantr4366Turkishth50Thaiiu368 Inuktitutchr4214Cherokeeel5655Greekel4975Greekru4788Russiantr7519Turkishbn4470Banglaccp7927Chakmael2734Greekccp3809Chakmachr1538Cherokeeja3488Japanesees2980Spanishen2343Englishth1596Thaiar2064Arabiceo3247 Esperantoen1002Englishccp1421Chakmatr6808Turkishtr4995Turkisheo986 Esperantoen2066Englishja7345Japanesezh2368Chineseen7832Englishel3224Greekel7393Greeken3667Englishiu2468 Inuktitutsr1768Serbianbn3754Banglaiu1946 Inuktitutja688Japaneseeo5731 Esperantoeo3394 Esperantobn7258Banglabn3919Banglael2154Greekbn2570Banglaeo3480 Esperantoth3787Thaien4669Englishiu7790 Inuktitutzh4467Chineseiu6496 Inuktitutsr985Serbiantr3921Turkishfr8052Frenchar6466Arabicccp5152Chakmaccp7456Chakmaeo1760 Esperantoiu6280 Inuktitutiu6365 Inuktitutel4515Greekel8158Greekzh3978Chinesezh5006Chineseiu7796 Inuktitutja4306Japaneseru4375Russianccp3249Chakmachr2636Cherokeeru4701Russianar1053Arabicar2041Arabicel3729Greeksr6717Serbiansr5896Serbianeo3445 Esperantoes2996Spanishzh1964Chinesezh3684Chinesear5149Arabicen2352Englishccp472Chakmabn4933Banglath316Thaieo352 Esperantoel7584Greekbn3437Banglaccp3866Chakmabn6243Banglachr2182Cherokeezh8137Chinesebn6514Banglaeo1961 Esperantotr4398Turkisheo6692 Esperantochr2496Cherokeeth6800Thaizh7711Chineseiu1541 Inuktituteo6394 Esperantoes480Spanishzh5341Chinesees2691Spanishchr5009Cherokeees8032Spanishru2601Russianar3916Arabictr5755Turkishbn2576Banglabn7284Banglaeo649 Esperantotr3646Turkishzh5513Chinesezh1345Chinesebn1633Banglaccp4324Chakmazh5103Chineseth1550Thaieo4264 Esperantobn1895Banglael7034Greekeo6650 Esperantoar6398Arabiciu3124 Inuktitutsr7808Serbianen4656Englishen8082Englishtr3994Turkishbn5958Banglaes7013Spanishiu624 Inuktitutar5697Arabicth7799Thaifr4231Frenchbn6511Banglaccp3936Chakmaja183Japaneseja7754Japaneseen4544Englishen7839Englishsr6075Serbianru4677Russianzh4179Chinesefr3605Frenchja1969Japanesetr5871Turkishsr8082Serbianchr8189Cherokeeccp216Chakmael3563Greeken7034Englishfr2483Frenchfr4636Frenchja2583Japaneseiu1138 Inuktitutel268Greekar3431Arabicru442Russianru5528Russianth4388Thaitr4931Turkishen7109Englishiu3611 Inuktitutfr5368Frenchar1664Arabicru7672Russianru6330Russianccp2133Chakmaccp7186Chakmasr7757Serbianccp795Chakmafr4734Frenches4923Spanishes7915Spanishen450Englishen3431Englishccp1300Chakmaja2858Japaneseru5480Russianen2890Englishth7291Thaiel168Greekchr7156Cherokeeja2030Japaneseeo8147 Esperantoar2932Arabicen4433Englishar3954Arabiczh379Chineseen5380Englishru5782Russianiu3182 Inuktitutzh8115Chinesees5628Spanishru2886Russianchr1460Cherokeechr2738Cherokeesr3110Serbianja4526Japaneseen298Englishchr1862Cherokeeiu3413 Inuktituten3614Englishbn4815Banglaen6179Englishfr2637Frenchtr828Turkishtr6014Turkishbn5544Banglaeo2064 Esperantoeo8145 Esperantoar4374Arabicen7957Englishru8032Russianzh5708Chineseth1680Thaiel3881Greekar4042Arabicccp3543Chakmaar3983Arabicbn1696Banglachr1550Cherokeeen4235Englishchr4143Cherokeeth3582Thairu5936Russianiu6940 Inuktitutsr6258Serbianel4529Greeken5133Englishbn2642Banglaes5851Spanishfr3257Frencheo740 Esperantoar3299Arabicel1929Greekfr1209Frenchar3097Arabicen7240Englishen4582Englishsr2952Serbianth279Thaith4240Thaiar8031Arabiceo7056 Esperantoes4827Spanishtr826Turkishth2062Thaiccp2772Chakmabn169Banglaru3526Russianth406Thaies7459Spanishsr2507Serbiansr4697Serbiantr985Turkishel5606Greekccp2665Chakmaru1842Russiansr645Serbiantr4974Turkishar2305Arabicth4293Thaizh7502Chinesezh6082Chineseccp5569Chakmael1592Greekiu4024 Inuktitutja1687Japanesees5032Spanishbn3725Banglaes1625Spanishes7442Spanishiu4119 Inuktitutsr8023Serbianth4328Thaiiu3811 Inuktituteo5617 Esperantoar6390Arabicchr198Cherokeeja2101Japanesechr6075Cherokeeen5678Englishiu3004 Inuktitutth7368Thaies2001Spanisheo2857 Esperantoar3861Arabicen4878Englishsr4492Serbianbn7685Banglael2075Greekeo7918 Esperantoja5030Japaneseiu7643 Inuktitutsr3307Serbianar5887Arabicen1945Englishtr6653Turkisheo3983 Esperantoru4527Russianchr442Cherokeeiu1764 Inuktitutsr199Serbianel7254Greekbn6621Banglatr5797Turkishth1627Thaien3299Englishar6248Arabiciu2376 Inuktitutccp6818Chakmaiu7576 Inuktitutzh4114Chinesebn132Banglaru6504Russianes86Spanisheo1864 Esperantoeo6307 Esperantochr7337Cherokeeel7463Greekar4192Arabicar7543Arabicru4469Russianiu7440 Inuktitutiu1003 Inuktituttr426Turkishccp2244Chakmaiu7704 Inuktitutiu2497 Inuktitutru6464Russianfr726Frenchfr7775Frenchja3075Japanesetr4564Turkishchr5710Cherokeeen1184Englishar8Arabicja7836Japaneseth4800Thaichr4724Cherokeeen1319Englishel3394Greekel890Greektr3449Turkishbn8164Banglaja6945Japaneseth7927Thairu6616Russianeo2605 Esperantoru2292Russianru2075Russiantr4921Turkishsr4729Serbianbn2604Banglaiu4887 Inuktitutbn2573Banglabn5671Banglaru1392Russianru3423Russianja7395Japanesear1909Arabices8125Spanishja5237Japanesesr6321Serbianja4294Japanesetr7682Turkishiu534 Inuktituttr7788Turkishiu5942 Inuktitutru2993Russianeo6270 Esperantotr1353Turkishth6649Thaitr5805Turkishbn6676Banglaen5159Englishbn7156Banglatr2371Turkishel85Greektr6706Turkishchr5488Cherokeeen6275Englishen4902Englishes129Spanishru2384Russianzh364Chineseccp4847Chakmafr2819Frencheo3195 Esperantotr3056Turkishes3149Spanishccp6674Chakmasr1585Serbianja3314Japaneseiu3183 Inuktitutzh6510Chinesechr4155Cherokeetr6144Turkishja652Japaneseccp456Chakmaes3020Spanishsr2937Serbianchr7295Cherokeebn4918Banglabn7717Banglaeo5140 Esperantoar1828Arabicbn6637Banglaar2856Arabicchr6622Cherokeeja3525Japanesear534Arabicth1361Thaibn6653Banglaccp2541Chakmaiu4546 Inuktitutsr4046Serbiansr5266Serbiantr2024Turkishzh4709Chinesebn2522Banglatr8069Turkishru5787Russianja3196Japaneseccp1795Chakmaen1780Englishes5457Spanishel4092Greekeo1499 Esperantoccp5089Chakmaes5850Spanishzh2934Chineseccp1899Chakmaiu4792 Inuktitutiu5711 Inuktitutja3683Japaneseth7525Thaizh7723Chinesefr7201Frenchiu1249 Inuktitutth5883Thaies1320Spanishth6448Thaizh1065Chinesefr5446Frenchbn6271Banglaja1325Japanesezh1906Chineseja1491Japanesees5322Spanishfr283Frenches4203Spanishtr5095Turkishel6741Greeken1751Englisheo6408 Esperantoel7715Greekru8166Russianel6787Greekel6564Greekfr4768Frenchtr7248Turkishzh5109Chinesebn4917Banglaja6281Japanesefr7245Frenchbn2869Banglasr2680Serbianchr5835Cherokeefr5111Frenchru6022Russianzh7313Chineseccp2333Chakmath3129Thaien1169Englishes391Spanisheo6064 Esperantochr5203Cherokeeiu161 Inuktitutchr5270Cherokeeel5162Greekeo2085 Esperantofr465Frenchen2299Englishsr4774Serbianccp6993Chakmaja6164Japaneseen1744Englishsr6773Serbianth2210Thaies1054Spanishsr4317Serbiantr3444Turkishes2035Spanishth7687Thairu511Russianes7123Spanishtr4846Turkisheo4558 Esperantoiu7654 Inuktitutzh4641Chinesechr3371Cherokeeel4079Greeken5499Englishel1116Greekja6526Japaneseeo1917 Esperantoru1836Russianja4835Japanesezh5535Chinesebn4376Banglatr747Turkishchr3680Cherokeeru2223Russiantr6772Turkishfr5992Frenchccp6448Chakmaeo675 Esperantoja385Japanesesr7025Serbianes6276Spanishen2603Englishsr591Serbianru4217Russianchr2064Cherokeeccp7881Chakmaiu8072 Inuktitutes5426Spanishtr4634Turkisheo6247 Esperantofr1672Frenchsr6787Serbianel516Greekbn785Banglasr3622Serbianchr3359Cherokeees881Spanishbn6569Banglatr1567Turkishzh1043Chinesefr2306Frenchth4611Thaichr2091Cherokeeth3021Thaith4871Thaizh7975Chinesesr7776Serbianru2415Russiantr6634Turkishsr5932Serbianzh6415Chineseen7970Englishth4392Thaizh2643Chinesefr2782Frenchen432Englisheo3745 Esperantoth832Thaiccp4566Chakmaen4935Englishja336Japaneseja6600Japanesesr2010Serbianth5023Thaitr6553Turkishth3227Thaizh3767Chineseeo7365 Esperantoth349Thaichr1825Cherokeeth2167Thaizh3533Chinesesr2593Serbianccp1332Chakmaes5402Spanishiu5684 Inuktitutja4507Japanesees4064Spanishar6634Arabicccp1318Chakmath6454Thaisr3580Serbianar5912Arabicen52Englishsr3216Serbianel179Greekzh6505Chinesees3146Spanishbn7972Banglaen3901Englishfr5047Frenchbn4152Banglaeo2995 Esperantofr8186Frenchfr2068Frenchja646Japaneseth4279Thaith5663Thaija568Japanesees5356Spanishtr4984Turkishbn3747Banglafr1106Frenchth2822Thaija7454Japanesechr5264Cherokeeiu396 Inuktitutth3725Thaizh4407Chinesechr5829Cherokeear4865Arabicel2558Greekar5645Arabices5503Spanishiu5476 Inuktitutth2180Thaiccp782Chakmaen6496Englishel6388Greekja4942Japanesetr5958Turkishbn463Banglaccp7828Chakmaen259Englishiu6714 Inuktitutes3075Spanishsr8191Serbiansr1000Serbianccp1469Chakmaccp2167Chakmasr873Serbianth6913Thairu8056Russianbn3783Banglabn5606Banglachr3013Cherokeeeo2335 Esperantoru5269Russiansr1211Serbianccp5877Chakmasr2524Serbianzh3307Chinesesr1721Serbianja7433Japaneseeo7169 Esperantozh4900Chinesefr3444Frenchfr7352Frenchzh5826Chineseeo1143 Esperantochr2019Cherokeetr3307Turkishru6891Russianes5962Spanishiu6426 Inuktitutes2627Spanishbn207Banglaar2702Arabicar5471Arabicccp3817Chakmaes2793Spanishja7267Japanesefr6600Frenches1912Spanishel126Greekar3580Arabicchr961Cherokeeeo7485 Esperantoeo1988 Esperantoiu7186 Inuktitutchr2302Cherokeezh4575Chineseeo2888 Esperantosr1584Serbianar1735Arabicfr5570Frenchiu4191 Inuktitutel8121Greekja2303Japaneseel5627Greekes5800Spanishzh2431Chineseel3641Greekeo3993 Esperantoes5253Spanishfr1874Frenchth7909Thaiiu380 Inuktitutiu1202 Inuktitutccp7018Chakmaeo4423 Esperantoiu6030 Inuktitutja6698Japanesesr2771Serbianes2685Spanishtr514Turkishth3782Thaibn4616Banglaja3162Japaneseccp1167Chakmaiu8166 Inuktitutsr6309Serbianzh555Chinesefr2010Frenchbn3742Banglael3426Greekeo2897 Esperantoccp973Chakmachr3222Cherokeeen1954Englishar5539Arabicen1785Englisheo4827 Esperantoeo6901 Esperantofr2720Frencheo911 Esperantofr7242Frenchiu5559 Inuktitutiu8128 Inuktitutru4328Russianen2776Englisheo3323 Esperantoth5908Thaizh7741Chinesesr4821Serbiansr1385Serbiantr8112Turkishbn6817Banglaes118Spanishar8183Arabicth1947Thaibn3010Banglaeo4941 Esperantoeo5435 Esperantoru746Russianzh6251Chineseth5700Thaith3453Thaies3436Spanishen5868Englishja7826Japaneseiu2133 Inuktitutiu5526 Inuktitutsr7530Serbianeo7702 Esperantoiu6858 Inuktitutchr8005Cherokeeccp2418Chakmaja2662Japanesezh2064Chinesear965Arabicel5738Greekfr1243Frenchfr5270Frenchiu5159 Inuktitutccp2299Chakmachr534Cherokeechr5777Cherokeeja157Japanesear3344Arabicchr7588Cherokeeen3117Englishzh7288Chinesees3778Spanishbn5446Banglasr4465Serbianchr3148Cherokeeiu5784 Inuktitutes2215Spanishfr3514Frenchru3599Russianiu5751 Inuktituteo6139 Esperantotr6348Turkishen7629Englishes4350Spanishchr3324Cherokeesr3543Serbianbn4622Banglaiu147 Inuktitutzh8163Chineseru127Russianar3021Arabicen8042Englishzh7472Chinesezh3137Chineseccp1937Chakmabn2436Banglafr2718Frenchen7429Englishtr1413Turkishen6177Englishja2653Japaneseccp5850Chakmaiu6992 Inuktituteo3921 Esperantoar5983Arabiczh7961Chineseru2227Russianccp982Chakmaccp6927Chakmatr927Turkishes2498Spanishru7617Russianru3743Russianth4888Thaien6905Englishth5547Thaiiu7568 Inuktituttr5996Turkisheo58 Esperantofr7609Frenchzh6930Chineseeo7477 Esperantosr1115Serbianar6001Arabicar7640Arabices797Spanishes1619Spanishtr4555Turkishru7702Russianccp5587Chakmabn6239Banglaiu692 Inuktituteo1188 Esperantofr1967Frenchbn6491Banglaru1889Russianru351Russiansr5209Serbianccp373Chakmaja4445Japaneseel791Greekja4786Japanesechr2817Cherokeebn6682Banglatr511Turkishel2864Greekccp1921Chakmachr6493Cherokeetr5287Turkishbn2337Banglafr7231Frenchzh3710Chineseja6991Japanesetr3632Turkisheo5064 Esperantoru1461Russianfr37Frenchar6807Arabicfr2647Frenchen4856Englishiu5540 Inuktitutsr1799Serbianth1889Thaitr6947Turkishsr6145Serbianbn2425Banglaen1715Englishchr1350Cherokeeen3080Englishes474Spanishiu7518 Inuktitutiu4781 Inuktitutru2170Russianeo4115 Esperantobn2936Banglaeo5873 Esperantofr1111Frenchfr4904Frenchtr3090Turkishtr6859Turkishccp2564Chakmaja7251Japanesesr2503Serbiantr3991Turkishzh4586Chineseru7439Russianen5127Englishes7002Spanishsr706Serbianel6395Greekja5642Japaneseel7369Greekja434Japaneseja4722Japaneseja753Japaneseja7548Japanesefr2026Frenchfr421Frenchar7391Arabicel2960Greekru1678Russianchr2695Cherokeeth5286Thaizh5548Chineseccp1177Chakmaccp3856Chakmaen4255Englishru4599Russianzh5605Chinesetr3416Turkishbn1545Banglael1437Greekar7891Arabicchr3896Cherokeezh4398Chinesear1612Arabicar5849Arabictr5244Turkishes1425Spanishccp1978Chakmafr3550Frenchru2598Russianes4368Spanishiu7877 Inuktitutja3970Japanesetr1722Turkishbn6727Banglaar1112Arabicel204Greekiu4584 Inuktitutar7699Arabicccp6246Chakmaes6138Spanisheo2264 Esperantozh893Chinesefr1703Frenchbn3352Banglaes2206Spanishja1206Japaneseen4510Englishru6883Russianja7950Japaneseiu7019 Inuktituten5675Englishbn5431Banglaeo7858 Esperantoja1180Japanesees2304Spanishtr1405Turkishel4113Greekfr4094Frenchbn3536Banglaen6716Englishru2240Russianchr7291Cherokeeth7134Thaichr5638Cherokeesr4851Serbianzh6598Chinesetr6315Turkishen2618Englishchr4088Cherokeeen3965Englishbn4566Banglaiu2338 Inuktitutchr1533Cherokeesr4713Serbianiu2830 Inuktitutes5302Spanishth4361Thaisr1815Serbianfr2996Frenchzh5423Chinesees3966Spanishes3662Spanishchr6017Cherokeetr3652Turkishchr2643Cherokeeen5998Englishchr6799Cherokeetr1443Turkishtr5696Turkishes2138Spanishen4538Englishen7757Englishfr4509Frenchbn796Banglachr1714Cherokeear7111Arabiczh2232Chinesear5381Arabicfr6959Frenches4139Spanisheo7586 Esperantofr4686Frenchar3659Arabicsr4920Serbianar4403Arabices5278Spanishel7157Greekbn652Banglaru7967Russianzh2896Chineseru7554Russiantr4696Turkishen4605Englishzh1824Chineseja1011Japaneseiu280 Inuktitutth206Thaifr3528Frenchru5582Russianja287Japanesesr4773Serbianru7113Russianru3134Russianchr5527Cherokeeen7805Englishja4778Japanesetr2440Turkishja6361Japanesear2093Arabicru137Russianru824Russianen132Englishes3508Spanishar6234Arabicth7416Thaitr3578Turkishsr3415Serbianfr3969Frenchru6832Russianes2509Spanisheo5275 Esperantoel4124Greekes2150Spanishes5945Spanishel6733Greekbn8081Banglabn6321Banglazh2346Chineseeo7205 Esperantoiu3941 Inuktitutth3064Thaichr5928Cherokeesr27Serbianiu4767 Inuktitutth6797Thaitr4567Turkishbn5462Banglaru2318Russianen457Englishchr3744Cherokeees6562Spanishru3048Russianar5738Arabicccp5991Chakmaru1492Russiansr738Serbianth7766Thaisr2617Serbianel6940Greekbn6631Banglaes2243Spanishzh5007Chineseth6762Thaien7332Englishbn7478Banglachr7342Cherokeetr3431Turkishja4623Japanesechr7552Cherokeefr4329Frencheo1106 Esperantochr6421Cherokeeiu4320 Inuktitutja437Japanesear4999Arabicccp6531Chakmaru1893Russianiu2804 Inuktitutja7637Japanesefr3280Frenchel1028Greekchr6905Cherokeeja2869Japanesesr1484Serbianzh7903Chineseiu5341 Inuktituttr7877Turkishbn5603Banglath5800Thairu65Russianja3516Japaneseel5075Greekccp2141Chakmaiu5079 Inuktituteo2553 Esperantoar116Arabiciu5747 Inuktitutbn912Banglaeo6524 Esperantobn1591Banglachr98Cherokeeth4242Thaizh1159Chinesetr5833Turkishchr7807Cherokeeen1480Englishes1749Spanishfr3035Frenchccp7391Chakmazh203Chineseeo914 Esperantoes2606Spanishth8079Thaichr1136Cherokeezh257Chinesesr5208Serbianes7339Spanishfr7198Frenchja4250Japaneseen684Englishzh7810Chineseccp6640Chakmaes1924Spanishiu3993 Inuktitutth3645Thaibn6401Banglaes539Spanishiu5147 Inuktitutel1328Greektr2932Turkishccp1734Chakmaes2977Spanishsr2904Serbianzh286Chinesefr5485Frenchccp3783Chakmaen6754Englisheo674 Esperantoth1381Thaizh1057Chinesebn5502Banglael1723Greekru4496Russianen5336Englishzh3884Chinesear3928Arabicccp7275Chakmaccp347Chakmasr1749Serbianja989Japaneseth6904Thaiar7580Arabicth3092Thaieo980 Esperantoen4371Englishen7290Englishfr5360Frenchja1656Japaneseen7872Englishes4129Spanishbn2088Banglael2003Greekzh5646Chinesechr1334Cherokeeeo6637 Esperantofr4373Frencheo4408 Esperantoen1034Englishth5191Thaiar6215Arabicen3465Englishes7671Spanishar4235Arabiczh707Chinesesr6871Serbiantr2845Turkishel7538Greekel3248Greekar4944Arabicccp4596Chakmafr8043Frenchfr4314Frenchiu4930 Inuktituteo4235 Esperantoeo4762 Esperantoja3418Japanesetr6417Turkisheo691 Esperantoiu1120 Inuktitutzh7129Chineseen3625Englishccp6843Chakmaccp2555Chakmath4085Thaitr1865Turkishen2707Englishen3619Englishja7766Japaneseja3865Japanesear7938Arabicru8044Russianccp1204Chakmazh5765Chineseen6250Englishru576Russianru361Russianth3525Thaichr5396Cherokeeth5773Thairu6483Russianzh8157Chinesezh5234Chinesebn7626Banglaccp3531Chakmafr6500Frenchiu5598 Inuktitutchr1861Cherokeees5275Spanishccp5179Chakmatr6654Turkishbn8046Banglabn3164Banglaccp3004Chakmaiu3680 Inuktitutsr1447Serbianfr2678Frenchtr1999Turkishzh7909Chineseen3457Englishel5409Greeken3809Englishth422Thaies1923Spanishtr7342Turkishchr6419Cherokeeiu6054 Inuktitutchr2701Cherokeees3459Spanishchr1748Cherokeesr6573Serbianzh61Chineseru4901Russianchr3687Cherokeeth7845Thaitr4387Turkishfr706Frenchccp5063Chakmachr2848Cherokeeja3463Japanesefr7049Frenchfr5331Frencheo90 Esperantoccp333Chakmaen5122Englishel1037Greeksr3530Serbiantr7274Turkishth5129Thaiiu7334 Inuktitutzh5184Chineseth2327Thaien3351Englishfr2108Frenchzh5314Chinesetr4556Turkishccp1058Chakmabn2186Banglael4314Greekiu6434 Inuktitutiu286 Inuktitutzh3680Chineseccp518Chakmaccp5325Chakmachr7505Cherokeefr3689Frenchsr3485Serbianes3520Spanishen5930Englishja1083Japaneseth5026Thaizh3568Chineseel237Greekes5997Spanishiu2547 Inuktitutfr1864Frenchar5681Arabicja2554Japanesesr4456Serbianel761Greekccp5489Chakmaeo5983 Esperantofr4730Frenchru2877Russianiu1687 Inuktitutccp6723Chakmael2934Greekes6757Spanishar5883Arabicchr4320Cherokeefr7899Frenchzh4815Chinesechr3746Cherokeebn303Banglasr2770Serbianzh7955Chinesetr515Turkishen238Englishfr718Frencheo5082 Esperantozh7414Chinesetr3321Turkishfr2985Frenchru4056Russianru3236Russianar44Arabictr4472Turkishja5690Japaneseeo6175 Esperantoiu4250 Inuktitutchr3231Cherokeear2203Arabiceo2513 Esperantoel1306Greekru2750Russianen4716Englishchr3283Cherokeeeo191 Esperantoar3710Arabicbn1168Banglaru4638Russianes1429Spanishsr1740Serbianbn5149Banglasr7137Serbianccp8047Chakmath3926Thaitr615Turkishfr64Frenchchr6835Cherokeeen2131Englishchr6599Cherokeeru4823Russianru1066Russianeo5744 Esperantoru3243Russianru4937Russianar1089Arabiceo932 Esperantoeo99 Esperantofr8022Frenchiu7515 Inuktitutsr1210Serbianbn3126Banglaen6060Englishtr366Turkishja1603Japaneseel2136Greekccp3403Chakmaes1027Spanishth7726Thaibn2254Banglachr6200Cherokeeccp7721Chakmath5068Thaifr615Frenchru6648Russianeo4761 Esperantoiu1771 Inuktitutiu3716 Inuktitutja3192Japaneseru2728Russianel7994Greekchr5822Cherokeechr6412Cherokeeen1903Englishchr1919Cherokeeen6229Englisheo3080 Esperantoel6920Greekiu2899 Inuktitutja5239Japanesechr6262Cherokeeth5066Thaieo2947 Esperantoeo5709 Esperantozh5181Chineseru6094Russiantr2328Turkishel3457Greekru6444Russianccp5766Chakmaiu7492 Inuktitutfr5113Frenchiu2115 Inuktitutbn6615Banglaeo3006 Esperantosr6227Serbianiu7074 Inuktitutru3830Russianth1169Thairu4170Russianth2018Thaiiu904 Inuktitutiu1149 Inuktitutru2892Russianru339Russianes4456Spanishsr3322Serbianiu6175 Inuktitutiu2362 Inuktitutth1266Thaizh7771Chinesechr270Cherokeefr17Frenchth2917Thaichr825Cherokeetr2551Turkishru573Russianel2772Greekchr7055Cherokeebn5861Banglafr6015Frenchru5407Russianru6465Russianth7966Thaiiu651 Inuktitutchr3475Cherokeeeo1953 Esperantoeo1777 Esperantotr1621Turkishru4949Russianccp4768Chakmazh1718Chinesesr5396Serbianchr5692Cherokeeen7677Englisheo6969 Esperantoel7329Greekeo5841 Esperantotr7148Turkishes7209Spanisheo6705 Esperantobn562Banglaccp3279Chakmaen8110Englishiu3497 Inuktitutru4509Russianes7347Spanishbn4052Banglaen5768Englishja2851Japanesebn5132Banglaen6306Englishth7553Thairu5346Russianzh3133Chineseja2664Japanesees3102Spanishar306Arabicth1228Thaifr4165Frenchfr4736Frenchsr6087Serbiantr7022Turkishbn2880Banglaja6376Japanesetr6152Turkishbn4085Banglaccp5109Chakmafr3246Frenchja2941Japanesechr1353Cherokeeccp2002Chakmazh2851Chinesear5119Arabicbn7384Banglaiu6353 Inuktitutsr298Serbianes7596Spanishth4804Thaitr4745Turkishru4324Russianbn1234Banglaja4773Japanesebn3631Banglasr4015Serbianth1291Thaibn2039Banglaeo4359 Esperantoja177Japanesezh7529Chinesear3276Arabicfr2664Frenchen5844Englishja916Japanesetr6632Turkishfr6905Frenchccp6004Chakmabn1852Banglaru6983Russianzh1833Chinesezh4845Chinesesr7813Serbianen7518Englishru5073Russianeo5151 Esperantoiu5659 Inuktitutel5517Greekchr3653Cherokeebn4400Banglaiu2491 Inuktitutth1795Thaitr7656Turkishccp3422Chakmafr3922Frenchru7308Russianth7482Thaien6824Englishiu6211 Inuktitutru434Russianiu7343 Inuktituttr1147Turkishel2106Greektr7117Turkishth775Thaien819Englishen7956Englishfr4976Frenches2492Spanishes5080Spanishja3185Japanesear3180Arabicchr6145Cherokeeth3766Thaibn2980Banglaccp6355Chakmaiu1997 Inuktitutccp1820Chakmaru8011Russianel2911Greekzh7893Chinesees1704Spanishar7180Arabiczh7181Chinesees5413Spanishsr2790Serbiansr4847Serbianel3323Greekes2551Spanisheo4342 Esperantobn6350Banglaeo1548 Esperantotr2996Turkishtr921Turkishccp1906Chakmaru7233Russiantr1422Turkishzh6446Chineseeo4545 Esperantotr6269Turkisheo6388 Esperantobn6911Banglath2355Thaieo6160 Esperantoja7852Japaneseru2783Russianchr2470Cherokeefr5715Frenchru7020Russianar6516Arabiciu6182 Inuktitutar5893Arabicru7402Russiansr213Serbianes3683Spanishsr5136Serbianchr5849Cherokeeccp2999Chakmaru1128Russiansr3800Serbianru7456Russianiu3921 Inuktitutth746Thaifr7972Frenchth6146Thaibn4573Banglaar7442Arabicccp1730Chakmaiu5696 Inuktitutes5201Spanishen2831Englisheo3436 Esperantobn5393Banglasr7175Serbiantr8098Turkishbn2478Banglaiu4118 Inuktitutbn6815Banglafr4755Frenches5887Spanishfr4549Frenchiu6602 Inuktituttr6394Turkishchr1190Cherokeees2758Spanishsr866Serbianth2342Thaieo5508 Esperantoth6865Thaieo2163 Esperantofr7621Frenchfr7369Frenchen2761Englishja3962Japaneseru1971Russianbn543Banglaar312Arabicbn3481Banglael8061Greekiu3822 Inuktitutru2038Russianen2533Englishccp1192Chakmaes7346Spanishccp4806Chakmaen1646Englishes3994Spanishiu1957 Inuktitutfr7349Frenchchr8119Cherokeeeo3672 Esperantochr5939Cherokeeth2734Thaichr859Cherokeetr4691Turkisheo1016 Esperantozh7848Chinesebn2701Banglaar2759Arabiciu3967 Inuktitutar2111Arabicen7252Englishel6523Greekfr3651Frenchzh2551Chineseccp2888Chakmafr3591Frenchiu2410 Inuktitutzh4894Chinesebn1100Banglafr5768Frenchchr4422Cherokeeth3528Thaisr1812Serbiantr5333Turkishfr3896Frenchel8150Greekes6491Spanishtr4105Turkishar6573Arabiciu3344 Inuktitutes5205Spanishru6299Russianiu7051 Inuktituten3578Englishsr2307Serbiantr4674Turkishen6282Englishtr6307Turkisheo4957 Esperantoccp5529Chakmaes1202Spanishiu6782 Inuktitutru2164Russianar85Arabicen551Englishen5651Englishccp555Chakmaar5842Arabicccp5139Chakmaiu8080 Inuktitutchr2512Cherokeear3237Arabicfr7734Frenchchr2986Cherokeeel6770Greekiu1888 Inuktitutru4010Russianiu5521 Inuktitutar7532Arabiceo1822 Esperantoja2108Japanesetr2650Turkishzh3774Chineseth5844Thaisr2876Serbiansr2195Serbianfr1809Frenchar7994Arabicja2011Japaneseiu1401 Inuktitutccp3499Chakmael6532Greeksr2233Serbianel7748Greektr6066Turkishen2529Englishen6605Englishchr120Cherokeefr5475Frenchtr516Turkishar6867Arabicchr7989Cherokeeeo2795 Esperantoes5289Spanishiu5640 Inuktitutsr1614Serbianja3699Japaneseiu2020 Inuktituten5857Englishiu2341 Inuktitutsr728Serbianbn5948Banglazh795Chineseru1224Russianel5651Greekiu1039 Inuktitutru4175Russianru1353Russiansr7964Serbianchr1013Cherokeefr2951Frenchfr5489Frenchja7168Japaneseeo420 Esperantoel1417Greeken7111Englishzh3705Chinesebn2112Banglasr4689Serbianes3429Spanishen576Englishth461Thaieo6631 Esperantoja2649Japanesezh5199Chinesebn6612Banglaar1691Arabicen7069Englishja32Japanesear2588Arabicbn4417Banglaeo8000 Esperantobn5253Banglaja6770Japaneseel2517Greektr7105Turkishes3255Spanisheo359 Esperantochr1532Cherokeeccp6277Chakmael4351Greekja4484Japanesees2451Spanishar6692Arabiceo1368 Esperantofr6977Frenchja3725Japanesees3117Spanishar4401Arabicchr5861Cherokeeja6386Japanesechr2843Cherokeefr3382Frenchth7331Thaiccp7873Chakmasr378Serbianja1985Japaneseja6426Japanesezh967Chinesetr184Turkishiu6539 Inuktituttr5053Turkishru3602Russianth72Thaieo4497 Esperantoar7654Arabiciu1342 Inuktitutru973Russianfr1939Frenchfr1523Frenchfr3803Frenchsr7272Serbianfr7514Frenchar679Arabicel4480Greekes3656Spanishsr5598Serbianzh895Chineseeo5192 Esperantofr306Frenchru359Russiansr4049Serbianfr1372Frenchzh7318Chinesefr5067Frenchth4237Thaiccp6790Chakmasr7129Serbianzh831Chinesezh6923Chineseel3830Greekchr4254Cherokeees1797Spanishzh4588Chineseeo2031 Esperantobn3527Banglaes5847Spanishccp8105Chakmasr5832Serbianen3453Englishiu4228 Inuktitutth4801Thaitr4335Turkishth5298Thaiel2037Greekccp2702Chakmael518Greektr809Turkishbn210Banglafr3005Frenchar2498Arabicja3358Japaneseru5969Russianfr7924Frenchccp3189Chakmaja2222Japaneseen1205Englishchr1547Cherokeebn4993Banglaar5555Arabiciu5643 Inuktitutel6829Greekbn3322Banglath595Thaien3984Englishtr860Turkishiu1006 Inuktitutzh571Chineseeo594 Esperantofr1484Frenchccp6086Chakmaiu1493 Inuktitutbn786Banglaiu2192 Inuktitutzh4291Chinesezh7677Chineseeo6931 Esperantoru3499Russianzh7040Chineseth341Thaifr4577Frenchen5862Englishru7231Russianen636Englisheo3197 Esperantosr1297Serbianen5359Englishiu7846 Inuktitutsr3561Serbianzh7813Chineseth6214Thaichr5423Cherokeeen2139Englishen722Englisheo759 Esperantoes5401Spanishfr5348Frenchsr5329Serbianth633Thaitr3295Turkishsr1886Serbianbn5399Banglaccp5815Chakmazh3886Chineseth6867Thaien5874Englishccp3695Chakmaja2593Japanesees4013Spanishfr388Frenchen5834Englishar6732Arabicfr5907Frenchccp2104Chakmaccp3876Chakmaen8048Englishiu3642 Inuktitutiu6378 Inuktitutchr4562Cherokeeen4933Englishzh602Chinesees484Spanishiu5959 Inuktitutja698Japanesebn4403Banglatr5835Turkishiu4152 Inuktitutzh976Chineseru774Russianbn2740Banglafr2338Frenchar4609Arabicccp699Chakmaen5634Englishzh576Chinesees1459Spanishth4651Thaien2415Englishfr2669Frenchchr7249Cherokeeen1865Englishbn5570Banglael858Greekru5245Russiansr1345Serbianzh2314Chinesear7759Arabicen4007Englishtr6196Turkishen4594Englishel7918Greekar8119Arabicsr4559Serbiansr5763Serbiansr6894Serbianfr5192Frenchsr7515Serbiantr3085Turkishel5989Greekiu4945 Inuktituteo4042 Esperantozh6105Chineseth1780Thaiar7082Arabicru1385Russianen6833Englishar2320Arabicbn885Banglaru2742Russiansr8009Serbianccp4366Chakmabn2828Banglael7407Greekbn5136Banglaja7171Japaneseen1505Englishru1422Russianth5067Thaizh6679Chinesebn6588Banglazh1036Chinesear7829Arabices3638Spanishbn4092Banglaru961Russianzh1671Chineseja3366Japanesezh8124Chineseel5559Greektr4171Turkisheo4660 Esperantoeo2369 Esperantosr2187Serbianen3910Englishar936Arabicja1245Japanesetr6850Turkishccp2925Chakmazh2624Chinesees835Spanisheo2826 Esperantoth6537Thairu6519Russianccp6895Chakmaccp4213Chakmatr6013Turkishsr7415Serbiantr453Turkisheo6191 Esperantoes4054Spanishsr838Serbianeo4540 Esperantoar4358Arabicru5183Russianar1445Arabiceo6968 Esperantobn719Banglael679Greeksr1830Serbianen7906Englishzh3906Chineseel3615Greekiu5202 Inuktitutbn6164Banglazh2160Chineseccp6966Chakmachr5163Cherokeeel1738Greekchr7100Cherokeeccp2748Chakmachr1548Cherokeeen7001Englishtr5844Turkishbn7454Banglaen325Englishru3812Russianchr5258Cherokeeja5227Japaneseth7629Thaiel135Greekzh2858Chineseth4863Thaiar5559Arabicja7559Japaneseccp645Chakmaccp2988Chakmaar2563Arabicel4315Greekchr2694Cherokeeel5074Greekeo7756 Esperantoes2273Spanishzh1084Chinesefr3634Frenchja7006Japanesear4787Arabicchr8130Cherokeeccp5425Chakmael6912Greekth7530Thaibn1031Banglaen1133Englishar7007Arabicel568Greekfr3026Frenchen3512Englishccp2251Chakmabn6818Banglasr4993Serbianel3898Greeken5322Englishth5473Thaisr5228Serbianth4503Thaija4940Japanesechr3234Cherokeezh4494Chineseiu5515 Inuktitutar6532Arabicsr126Serbianen4319Englishja3822Japaneseeo2743 Esperantoes4718Spanishja5122Japanesesr3705Serbianzh6061Chinesebn2724Banglael2273Greekel2029Greekbn4646Banglaes1802Spanishzh4443Chineseja5007Japaneseru4345Russianfr2925Frenchth6212Thaichr4346Cherokeebn7669Banglaccp89Chakmael4927Greekru2959Russianiu3744 Inuktitutth7054Thaibn2759Banglabn7540Banglasr1076Serbianes4898Spanishth6760Thaija5271Japanesesr1651Serbianar3459Arabicru4157Russianja878Japanesear2448Arabicbn7851Banglasr1678Serbianen2196Englishtr3773Turkishru3069Russianth6097Thaifr6175Frenchru3211Russiantr7986Turkishchr4688Cherokeear5460Arabicen3566Englishiu2257 Inuktitutar2451Arabicchr3725Cherokeeccp4068Chakmaen4805Englishar2791Arabicar5536Arabicfr5976Frenchtr2527Turkishzh1337Chinesear8011Arabicru1649Russianfr343Frencheo7612 Esperantosr4463Serbianja633Japaneseccp3942Chakmazh7725Chineseeo3779 Esperantofr3194Frenchja191Japanesezh7941Chineseiu6351 Inuktituttr3228Turkishsr7809Serbianfr5983Frenchfr690Frenchen2856Englishru613Russianel7189Greekth7981Thaieo2154 Esperantoeo3101 Esperantoel2840Greeken1261Englishes7183Spanishccp7936Chakmaeo3501 Esperantotr5001Turkishar1646Arabicel176Greekja1560Japanesezh6936Chinesesr4069Serbianiu2814 Inuktitutja4148Japanesetr6197Turkishzh3313Chinesechr2213Cherokeeel7039Greekel2571Greekeo5573 Esperantoiu522 Inuktitutfr1001Frenchtr1455Turkishar6913Arabiceo3664 Esperantoes5541Spanishth6415Thaifr6094Frenchzh4077Chinesear2351Arabiceo2075 Esperantoccp2332Chakmaccp6944Chakmaen877Englisheo2170 Esperantoiu1596 Inuktitutel2824Greekru4366Russianbn4117Banglaja2968Japanesesr6594Serbiansr7300Serbianeo5258 Esperantoru7948Russianeo1776 Esperantosr3737Serbianccp3349Chakmaen6385Englishes4134Spanishfr7094Frenchja2623Japaneseen3316Englishen6750Englishfr2329Frenchen7452Englishfr4331Frenchru6161Russiantr2864Turkishar487Arabicel7655Greekes5893Spanishen1163Englishar5946Arabicja8159Japaneseru3196Russiantr2768Turkishen951Englishiu861 Inuktitutbn3120Banglaccp1086Chakmaja1615Japanesees5341Spanishiu163 Inuktitutru6111Russianth2292Thaieo6451 Esperantofr7205Frenchru4532Russianja7919Japaneseja6297Japanesesr635Serbianbn6246Banglaeo6338 Esperantoar6120Arabicen3401Englishfr694Frenchar131Arabiczh8183Chinesear1050Arabicsr7570Serbianzh2487Chineseccp370Chakmasr7914Serbianeo1342 Esperantoja4222Japaneseiu2088 Inuktituttr3002Turkishzh6109Chinesefr366Frenchru4240Russiantr4538Turkishbn4982Banglasr7994Serbianru4712Russiantr2977Turkishzh6798Chineseeo2503 Esperantoel1770Greekfr5251Frenchja7778Japaneseel5110Greekth4621Thaiar6689Arabicbn6709Banglazh727Chinesebn6454Banglaes2396Spanishes4058Spanishiu2364 Inuktitutiu7931 Inuktitutsr258Serbianeo1373 Esperantotr3386Turkishccp395Chakmaja2292Japaneseen2774Englishiu4473 Inuktitutth643Thaizh4344Chinesechr1317Cherokeees2453Spanisheo3587 Esperantoar4952Arabicja5951Japaneseru3559Russianar1797Arabicchr6015Cherokeefr3513Frenchtr4661Turkishtr5925Turkishar7225Arabicsr6172Serbianth5325Thaieo5818 Esperantosr521Serbianja2955Japanesechr4033Cherokeeru5737Russianccp6860Chakmaen5460Englishfr1119Frenchar7584Arabicar4852Arabicbn6456Banglachr5348Cherokeeen6743Englisheo5254 Esperantochr7099Cherokeefr5469Frenchiu7252 Inuktitutru2160Russianth1354Thaith5565Thaizh1490Chinesetr7055Turkishar5103Arabicbn6262Banglazh6591Chinesesr3721Serbianru2396Russianchr147Cherokeeccp3200Chakmaar3632Arabices7142Spanishchr6018Cherokeeru966Russianth7318Thaifr4708Frenchbn2813Banglafr2092Frenchchr4281Cherokeeel5696Greekes2128Spanishja6122Japanesezh3579Chinesees4229Spanishel615Greeken5307Englishfr989Frenchth3707Thaiel1011Greekar1035Arabicel5943Greekzh4595Chinesear6067Arabiceo7157 Esperantochr5818Cherokeebn1877Banglabn7921Banglachr4394Cherokeeen5082Englisheo3223 Esperantotr4496Turkishja4265Japanesetr1563Turkishru6935Russianccp7187Chakmaiu2676 Inuktitutfr4679Frenches1601Spanishsr6481Serbianchr2746Cherokeeen7354Englishth6414Thaien2676Englishfr3626Frenchth3405Thaieo1551 Esperantoeo995 Esperantotr1396Turkishzh1550Chineseeo8051 Esperantoccp4180Chakmaar1753Arabicja5226Japanesebn904Banglaccp851Chakmath4996Thaizh6242Chinesear4626Arabicccp1570Chakmael252Greekel6221Greekccp29Chakmaru2406Russianchr5437Cherokeebn7005Banglaen5080Englishja6965Japanesebn537Banglaen1864Englisheo4417 Esperantoes6964Spanishchr2158Cherokeeeo7715 Esperantoja6334Japaneseth7537Thaichr2014Cherokeeeo3194 Esperantofr651Frenches921Spanishfr3773Frenchen4991Englishfr7154Frenchbn7769Banglafr1397Frenchja7490Japanesetr613Turkishbn6970Banglaru7071Russianja4984Japanesezh1027Chinesetr3158Turkishja2669Japaneseeo5396 Esperantobn2132Banglaeo1012 Esperantofr5493Frenchsr7183Serbianzh800Chineseth740Thaifr5622Frenchfr803Frenchbn319Banglasr3151Serbiantr6236Turkishzh5221Chinesefr7033Frenchen8129Englishzh5412Chineseth3812Thaifr702Frenches5536Spanishsr2529Serbianes7443Spanishar7124Arabicchr4730Cherokeechr2668Cherokeeen7557Englishth6801Thaies610Spanishbn3764Banglaja3051Japaneseel3440Greeken1179Englishen2374Englishes37Spanishes7359Spanishru1794Russianchr3428Cherokeees1624Spanishzh1627Chineseen1595Englishen4861Englishes1305Spanishzh5273Chinesebn4695Banglaar401Arabiciu3462 Inuktitutchr6221Cherokeetr3138Turkishen3488Englishel3189Greektr1918Turkishth3154Thaiccp7981Chakmaar6308Arabices2884Spanishth7508Thairu7848Russianccp3532Chakmafr391Frenchru6990Russianchr464Cherokeeiu7307 Inuktitutchr3035Cherokeeru341Russianfr3232Frenchsr2243Serbianccp7109Chakmaen5510Englishtr968Turkishen1292Englishth6696Thaitr2704Turkishar4966Arabicccp1033Chakmaen3658Englishen6139Englishfr3022Frenchtr5294Turkishsr6038Serbianar5044Arabicen3937Englishth1036Thaiccp7389Chakmachr6979Cherokeeel4206Greekzh502Chineseth272Thaiel7253Greekeo6074 Esperantoar3002Arabicel5589Greekru7678Russianth5373Thaizh3551Chinesebn7147Banglaru6393Russiantr4875Turkishru6401Russianth1239Thaieo4650 Esperantozh5619Chinesefr2906Frenchccp2851Chakmaru4468Russiantr1736Turkishar7765Arabicel573Greeksr170Serbianzh5744Chinesefr3059Frenchth1096Thaija6378Japaneseja4392Japaneseel6154Greektr5590Turkishes7280Spanishes1597Spanisheo3243 Esperantosr1921Serbianel5384Greekes6217Spanishccp7568Chakmaeo34 Esperantobn2948Banglaen3180Englishes7156Spanishiu8176 Inuktitutbn7309Banglaen2223Englishchr153Cherokeeen311Englishen7460Englisheo710 Esperantofr6963Frenches7972Spanishtr4316Turkishbn6001Banglath2706Thaija5130Japanesetr4241Turkishccp3194Chakmasr7477Serbianru940Russianeo2083 Esperantoru1020Russianen3627Englishccp1572Chakmaeo3111 Esperantoen7502Englishbn8004Banglath3514Thaiccp1798Chakmath7186Thaitr5239Turkishchr7540Cherokeeccp3765Chakmaen5674Englishes2417Spanishiu3609 Inuktituteo3843 Esperantoes6222Spanishfr2510Frenchen5839Englishth7192Thaitr410Turkishen3257Englishchr6204Cherokeear1314Arabiciu6809 Inuktitutar858Arabicja7801Japanesesr5527Serbianel5468Greektr5078Turkishar7174Arabictr4186Turkishiu3891 Inuktitutar958Arabices7776Spanishth3913Thaisr416Serbiansr621Serbianth8016Thairu6642Russiantr4175Turkishen8060Englishar2608Arabicchr1423Cherokeeja7736Japaneseru2796Russianiu2111 Inuktitutchr295Cherokeeru859Russianru5763Russiantr7766Turkishchr2402Cherokeeth7844Thairu2024Russiantr8152Turkishru5461Russianen547Englisheo705 Esperantoiu5179 Inuktitutfr5712Frenchchr6442Cherokeeen761Englishzh1588Chineseccp1098Chakmaccp6978Chakmazh3529Chinesear579Arabicen2543Englishchr3173Cherokeear4678Arabicru3861Russianiu2345 Inuktitutru1173Russianes6530Spanishen3197Englishes759Spanishzh7225Chinesees1836Spanishel4264Greeksr5617Serbianzh2923Chinesebn7175Banglabn758Banglaru160Russianeo6921 Esperantoar4000Arabices880Spanishes5614Spanishes6510Spanishchr382Cherokeeru2331Russianeo1950 Esperantoth911Thaifr2868Frenchfr8028Frenchru6218Russianchr3417Cherokeeru3552Russiantr873Turkishbn1297Banglabn1299Banglafr4565Frenchar6453Arabicru1202Russiansr4187Serbianzh5647Chinesezh5773Chineseen650Englishccp6326Chakmaru4658Russianth3813Thaizh6912Chineseeo1633 Esperantoja6779Japanesesr2040Serbianen429Englishbn4788Banglath4796Thaija4617Japanesebn1882Banglaeo2547 Esperantoth1462Thaisr4433Serbianel1824Greekar633Arabicen3749Englishen7503Englishzh7280Chineseeo3836 Esperantoru2012Russianen4475Englishbn527Banglabn8137Banglaar6791Arabicel7600Greekja3020Japaneseiu679 Inuktitutccp7409Chakmachr519Cherokeebn1308Banglaiu378 Inuktitutiu1574 Inuktitutbn663Banglaccp5839Chakmael2730Greekar6697Arabices5033Spanishja5644Japanesebn7472Banglaeo7670 Esperantofr5741Frenchar5027Arabicchr6201Cherokeefr4192Frenchfr2250Frenchzh650Chinesebn3110Banglaeo1951 Esperantoiu7495 Inuktitutbn3116Banglasr6922Serbianel2490Greektr5346Turkishchr6787Cherokeeen3982Englisheo6108 Esperantochr3340Cherokeesr3297Serbianzh1278Chineseen2691Englishth6510Thaiiu2318 Inuktituttr2027Turkishfr452Frenches4373Spanishes6451Spanishchr2310Cherokeeiu2589 Inuktitutja3718Japanesees2080Spanishja3878Japanesechr3562Cherokeeeo3140 Esperantoru1967Russianth1502Thaiccp2531Chakmaccp599Chakmaar1575Arabicar4514Arabiceo5826 Esperantoja1881Japanesebn2942Banglaja4854Japanesesr5386Serbianeo4745 Esperantoth7319Thaichr1137Cherokeetr2063Turkishel8100Greeksr2737Serbianccp3864Chakmaru7606Russianchr2450Cherokeeiu1327 Inuktitutja5492Japaneseccp7292Chakmaja6278Japaneseeo6183 Esperantoccp6793Chakmaeo8085 Esperantoes3167Spanishru2302Russiansr1107Serbianes6105Spanishth4260Thaiar6556Arabicar6625Arabices6055Spanishccp301Chakmaeo7932 Esperantochr5452Cherokeetr1073Turkishen250Englishiu5813 Inuktitutzh6807Chineseeo3797 Esperantoth5987Thaith3767Thaibn4045Banglaru7809Russianchr3949Cherokeeth2687Thaitr457Turkishtr2113Turkishen3191Englishtr4429Turkishru6843Russiansr222Serbianchr5877Cherokeeel993Greekel4278Greekiu193 Inuktitutiu3868 Inuktituteo7143 Esperantofr3002Frenchchr1198Cherokeeel2560Greektr633Turkishel5111Greekel4869Greekiu4346 Inuktituten989Englishja772Japanesetr4981Turkishiu5805 Inuktitutfr4147Frenchsr6753Serbianfr6273Frenchchr3593Cherokeeja3712Japanesezh3198Chinesechr708Cherokeeru1301Russianel6048Greekru7335Russianeo4277 Esperantoeo2138 Esperantoel3423Greekiu6910 Inuktitutiu7060 Inuktituttr6764Turkishzh3592Chinesefr4856Frencheo5006 Esperantochr5637Cherokeechr1359Cherokeetr6001Turkishsr7774Serbianiu3953 Inuktitutccp7144Chakmaen8079Englishes5067Spanishar5136Arabicbn1880Banglaiu7891 Inuktitutru5579Russiansr1712Serbianeo1571 Esperantozh1900Chineseja2774Japanesetr1102Turkishbn4202Banglaen3570Englishar3342Arabiczh8030Chineseja7984Japaneseen4373Englishja1911Japaneseccp5178Chakmael198Greekfr6807Frenchen2048Englishar2145Arabicth3754Thaitr4421Turkishen3682Englishru6556Russiantr6745Turkishar2746Arabicbn3500Banglael687Greekfr91Frencheo2742 Esperantoes1540Spanishfr6693Frenchfr5235Frenchja2504Japaneseth2904Thaies1650Spanishes2028Spanishfr2853Frenchfr3638Frenchccp6735Chakmath4316Thaizh1111Chinesees1794Spanishen621Englishel3431Greekchr947Cherokeetr492Turkishen100Englishth8129Thairu5598Russianru4273Russianchr7678Cherokeetr2231Turkishen4034Englisheo3995 Esperantofr4704Frenches7044Spanishbn6445Banglaru499Russianzh7295Chinesefr4047Frenchzh6071Chineseel1245Greekes213Spanishiu5439 Inuktitutiu6048 Inuktitutth7706Thaieo7780 Esperantoccp8107Chakmael722Greekel4505Greekru5119Russianru6969Russiansr58Serbianbn7570Banglaar2317Arabicth2304Thaija5056Japanesees1506Spanishzh1320Chinesees4857Spanisheo1533 Esperantofr3396Frenchfr6332Frenchth2727Thaitr1716Turkishtr3584Turkishzh2892Chinesezh5328Chineseiu3175 Inuktitutel1798Greekru5350Russianiu5600 Inuktitutja4959Japanesebn4061Banglael6594Greekeo4778 Esperantofr4936Frenchsr4558Serbianzh6546Chineseen4161Englishru1101Russianccp713Chakmaiu2925 Inuktitutiu4042 Inuktitutru7942Russiantr7088Turkishes2140Spanisheo2956 Esperantoru3111Russianja819Japanesees6389Spanishiu7588 Inuktituteo7210 Esperantoru2708Russianar4687Arabicth6943Thaichr4600Cherokeeel6844Greekth2975Thairu3234Russianth6447Thaiccp5503Chakmafr3843Frenchfr7650Frenchru524Russianeo4369 Esperantozh3943Chinesetr1576Turkishbn5699Banglaiu7431 Inuktituteo6448 Esperantotr6244Turkishth479Thaifr5638Frenchzh4670Chineseeo5466 Esperantozh503Chineseccp2152Chakmaru2602Russianen3403Englishel1099Greekiu2170 Inuktitutth1948Thaizh6866Chineseja7624Japanesetr4082Turkishru6153Russianth3551Thaies6301Spanishsr5021Serbianeo7577 Esperantoth1715Thaiccp5566Chakmaen5981Englishfr7861Frenchru7070Russianccp4587Chakmabn1438Banglaar3532Arabicchr4656Cherokeeen3534Englishfr2124Frenchfr7429Frenchru4968Russianzh5257Chineseja1249Japaneseja2165Japanesees6117Spanishzh5636Chinesebn7365Banglaar1167Arabicfr4624Frenchen6768Englishiu525 Inuktitutzh5010Chinesefr7597Frenchja7421Japanesetr1886Turkishccp553Chakmazh7479Chinesebn497Banglaen7855Englishbn8092Banglaccp3780Chakmabn6860Banglaru850Russianth6324Thaiccp5870Chakmael211Greekchr5144Cherokeesr6769Serbiantr5604Turkishbn7343Banglaen1971Englishtr4489Turkishth1531Thaija3067Japaneseth6662Thaiel6056Greekchr2938Cherokeeel8026Greekth6848Thaitr1735Turkishchr8054Cherokeezh473Chinesechr3432Cherokeefr144Frenchtr423Turkishsr468Serbianes1787Spanishfr4532Frenchja5435Japanesezh1579Chineseeo7361 Esperantoen1545Englishen7992Englishfr7528Frenchiu6968 Inuktitutth1471Thaizh7124Chineseccp773Chakmachr6836Cherokeeja262Japaneseeo7032 Esperantoel8180Greekeo6599 Esperantoes1568Spanishsr2508Serbiantr1030Turkishes3483Spanishtr7037Turkishzh3166Chineseen144Englishsr2351Serbianbn6541Banglabn994Banglaar5751Arabicen3636Englishiu565 Inuktitutes1030Spanishes4310Spanishar6630Arabicen438Englishen3782Englishzh5395Chinesezh5368Chineseccp4778Chakmael7711Greekar5992Arabicbn1407Banglaen4831Englishsr4818Serbianja613Japaneseru5193Russianiu5715 Inuktitutel6583Greektr3557Turkishzh3110Chinesear6211Arabicja6289Japaneseru385Russianja295Japaneseen1625Englishsr6967Serbianen2286Englishzh6254Chinesefr7950Frencheo3007 Esperantoccp7246Chakmaja4067Japaneseel531Greekel4027Greekeo5831 Esperantoth1189Thairu5971Russianen6390Englishja6992Japaneseru7175Russianchr7881Cherokeezh6645Chinesefr2268Frenchel1180Greekbn7388Banglaja7215Japaneseth6669Thaiccp7434Chakmaccp7724Chakmabn1658Banglachr934Cherokeebn5179Banglaes444Spanishsr4031Serbianzh7343Chinesees3806Spanishru4971Russianja7504Japanesear417Arabicen2453Englishbn5225Banglaar160Arabicel7360Greekeo4995 Esperantoth5869Thaisr3751Serbianchr919Cherokeeth4960Thaies2829Spanishru6296Russianccp829Chakmaar5292Arabicen6404Englishen6867Englishel5949Greekbn4693Banglachr125Cherokeeel3372Greekiu6148 Inuktitutccp4095Chakmaes1008Spanishzh7434Chinesetr1380Turkishru1175Russianeo6418 Esperantotr609Turkishzh370Chineseth4991Thairu3140Russianel5013Greekja6244Japaneseth1836Thaies8182Spanishbn6656Banglaccp3309Chakmaru1544Russianar4060Arabicbn1476Banglazh1744Chineseth8023Thaieo5470 Esperantochr154Cherokeechr1914Cherokeeel4025Greekel7833Greeksr5042Serbianiu912 Inuktitutar6150Arabicccp7040Chakmazh636Chinesesr7261Serbianiu5628 Inuktitutsr7720Serbiansr6148Serbianar3538Arabicbn3624Banglaccp1225Chakmachr5844Cherokeeel2594Greekccp4807Chakmaes4021Spanishiu1819 Inuktitutth6151Thaien4648Englishel6607Greekel6937Greekfr2645Frenchchr438Cherokeechr3575Cherokeear4959Arabicja3990Japaneseen875Englishes370Spanishsr1015Serbianzh7918Chineseeo2516 Esperantobn2855Banglachr3270Cherokeeeo4078 Esperantoiu6832 Inuktitutccp1728Chakmafr6967Frenchccp6050Chakmael6707Greekzh4808Chineseen4006Englishja2571Japaneseeo7306 Esperantoen3138Englishth791Thaibn5484Banglazh2303Chineseel3177Greeken2588Englishel7094Greekar1718Arabicsr8063Serbianes5404Spanishbn7020Banglaen4360Englishchr1125Cherokeeel3392Greekeo3149 Esperantoth7436Thaiccp7649Chakmatr3665Turkishccp7513Chakmaar1590Arabicel1656Greeken681Englishes6731Spanishar8065Arabicen1208Englishtr154Turkishzh4107Chineseja1449Japaneseen5250Englishiu3207 Inuktitutbn1537Banglasr3053Serbianeo2361 Esperantoar4767Arabictr2715Turkishfr22Frenchth5417Thaisr1444Serbianel4090Greekchr2424Cherokeeja4177Japanesetr1550Turkisheo2358 Esperantoiu1533 Inuktituteo1573 Esperantoru6054Russianiu5623 Inuktitutja1212Japanesees4989Spanishen5623Englishru990Russianru6309Russianbn6455Banglaccp1Chakmatr6131Turkisheo600 Esperantoar2544Arabicar464Arabicar423Arabicbn6143Banglaccp223Chakmasr669Serbiansr4011Serbianru6733Russianccp754Chakmael2252Greekel3078Greekja6890Japanesetr5740Turkishccp2765Chakmatr4776Turkishiu3824 Inuktitutiu2895 Inuktitutru4888Russianru7287Russianja1861Japanesezh2279Chinesefr7223Frenchth2194Thaith5326Thaieo4735 Esperantoar3605Arabicbn1948Banglaen5735Englishru7209Russianchr362Cherokeeru1364Russianchr3263Cherokeeiu2308 Inuktituttr1521Turkishtr535Turkishfr6045Frenchar7506Arabicchr4646Cherokeeiu2828 Inuktitutbn141Banglaen4649Englishtr7844Turkishen3360Englishtr3030Turkishsr6447Serbiansr7864Serbianfr3023Frenchchr4006Cherokeeeo1038 Esperantoes2722Spanishru4645Russianzh6788Chineseth2447Thaija7799Japaneseth5617Thaies3265Spanishbn4529Banglaar1763Arabices1693Spanishes978Spanishen1371Englishsr3232Serbianeo5108 Esperantoel6444Greekbn2215Banglaccp4089Chakmachr4294Cherokeear3447Arabicen4530Englishru2273Russiansr4704Serbianchr4133Cherokeebn5169Banglachr5327Cherokeeel2287Greekes2362Spanishfr603Frenchar5818Arabiceo516 Esperantoru2980Russianar2231Arabicchr5060Cherokeeen2899Englishru7824Russianzh8040Chinesesr400Serbianen7979Englishes4404Spanishiu6683 Inuktitutiu2623 Inuktitutbn7599Banglaeo3876 Esperantoeo3629 Esperantoru1524Russianen7032Englishth4950Thaieo7733 Esperantotr3061Turkishen1307Englishth4509Thaitr5082Turkishja2792Japaneseiu1614 Inuktitutes7888Spanishiu980 Inuktitutar2489Arabicja1653Japanesesr1705Serbianth3518Thaien4055Englishsr5124Serbianiu6241 Inuktitutth4028Thaiar3701Arabicru6988Russianes1406Spanishar1813Arabicbn551Banglachr4441Cherokeeeo1395 Esperantobn2863Banglasr4977Serbianzh4015Chineseiu4524 Inuktitutar1838Arabices6823Spanishel11Greekel3476Greekel8101Greekru7773Russianeo5659 Esperantoccp4967Chakmaru2079Russiantr6709Turkishzh2694Chineseru3487Russianel4777Greeksr6179Serbianar3400Arabictr1657Turkishchr5056Cherokeeja6913Japaneseru1248Russianru3100Russianeo1873 Esperantoel4329Greekes4339Spanishfr5064Frenchel263Greekbn2222Banglaeo3440 Esperantoiu4881 Inuktitutth386Thaisr2754Serbianes7823Spanishth615Thaien6885Englishfr780Frencheo7207 Esperantosr7634Serbianccp6819Chakmaccp1240Chakmaen1318Englisheo3387 Esperantoar2777Arabicar5816Arabicel2065Greekzh1672Chinesebn642Banglaar474Arabicth2913Thaitr1248Turkishccp2402Chakmaru3002Russianja5692Japaneseen5170Englisheo4861 Esperantoen6006Englishar2631Arabiceo3583 Esperantoes1036Spanishtr378Turkishru4524Russianar5382Arabicbn4292Banglaiu34 Inuktitutccp5093Chakmael6858Greekja4568Japaneseen301Englishfr6255Frenchja811Japanesees1514Spanishen6855Englisheo5562 Esperantoiu1204 Inuktitutja2126Japaneseth5342Thaiiu6924 Inuktituten7279Englishes7045Spanishel887Greekeo6490 Esperantoiu6446 Inuktitutsr1318Serbiantr8018Turkishccp7435Chakmaccp2096Chakmachr6660Cherokeezh5088Chineseccp4224Chakmabn3080Banglaes5749Spanishja6853Japaneseen1965Englishru1015Russianchr4461Cherokeefr2238Frenchsr7524Serbianbn3893Banglasr4978Serbianru663Russianeo265 Esperantochr521Cherokeeen2038Englishbn6425Banglasr4174Serbianel7813Greekes7633Spanishes8157Spanishru4688Russianzh3Chinesezh2935Chineseel4159Greekar2997Arabices7157Spanishccp218Chakmafr4887Frenchiu3113 Inuktitutzh2840Chinesetr2903Turkishchr2704Cherokeeja469Japanesezh7580Chineseru6846Russianiu2242 Inuktitutccp7878Chakmael5736Greekccp6554Chakmaru1507Russianfr6839Frenchtr4437Turkishiu3932 Inuktitutzh1019Chinesear5524Arabiczh1541Chinesetr5788Turkishbn233Banglaiu4674 Inuktitutbn168Banglaccp7932Chakmael2884Greeken5807Englishfr4914Frenchbn6824Banglaar1911Arabicth404Thaitr4557Turkishccp5720Chakmatr8142Turkishtr575Turkishzh4099Chineseru4804Russianchr3846Cherokeeja4892Japaneseth7896Thaiiu7267 Inuktitutccp901Chakmazh4665Chineseccp4319Chakmaiu434 Inuktitutja2365Japaneseth3050Thaiiu747 Inuktitutsr1287Serbianen4978Englishfr3979Frenchel6696Greekccp7777Chakmaeo807 Esperantozh2272Chineseccp4510Chakmazh4377Chinesefr450Frenchccp7074Chakmaeo2393 Esperantochr5321Cherokeefr7698Frenchbn2221Banglaja7718Japanesesr2730Serbiantr7786Turkishru3112Russianen6279Englishccp2606Chakmasr1926Serbiansr7240Serbiantr213Turkishes6230Spanishth7356Thairu1963Russianzh1053Chineseel5239Greekccp392Chakmaiu829 Inuktitutchr5999Cherokeeel7676Greeken375Englishen1005Englishen3761Englishiu2490 Inuktitutth3049Thaija3367Japaneseiu4735 Inuktitutccp3325Chakmaes1172Spanishfr3657Frenchsr4460Serbianccp7626Chakmatr618Turkishar5224Arabicja2569Japaneseccp3341Chakmaes1975Spanishiu81 Inuktitutth2897Thaitr6279Turkishes4894Spanishsr3447Serbianbn3673Banglaeo4321 Esperantoar4567Arabices552Spanishth3299Thaibn5610Banglasr2675Serbianth7784Thaies7940Spanishfr3273Frenchccp116Chakmazh6555Chinesechr6207Cherokeeen267Englishtr7162Turkishar174Arabices4738Spanishiu729 Inuktitutfr62Frenchfr6580Frenchzh3041Chineseja2822Japanesezh7591Chineseth7577Thaifr760Frenchel1204Greeken4601Englishzh982Chineseth7001Thaichr6876Cherokeefr7323Frencheo3432 Esperantoar6139Arabiczh5730Chineseeo5097 Esperantosr3636Serbianiu926 Inuktitutfr7789Frenchth4243Thaitr1501Turkishsr1140Serbiansr6170Serbianccp6244Chakmaar4395Arabicru951Russianar4803Arabicsr6804Serbiansr3309Serbianes1066Spanishen4309Englishccp4244Chakmaccp6006Chakmaen2423Englishth593Thaith2271Thairu1552Russianes5016Spanishbn7209Banglaja418Japanesear8044Arabicth5580Thaieo7673 Esperantoccp129Chakmaccp2219Chakmachr7529Cherokeeja5904Japaneseja1007Japanesesr2609Serbianth7649Thaitr1026Turkishiu5419 Inuktitutchr6561Cherokeees7173Spanishth4757Thaisr991Serbianzh1979Chinesesr2587Serbianja5913Japanesezh4682Chinesebn4358Banglachr306Cherokeeeo2546 Esperantoru1675Russianfr719Frencheo5834 Esperantoja8124Japanesechr1446Cherokeeja1400Japaneseel1049Greeken6834Englishar4355Arabicja3175Japaneseel8088Greekes6122Spanishar7219Arabiciu4239 Inuktitutru3268Russianeo4157 Esperantoth7313Thaiar4663Arabicfr5456Frenchar4072Arabicru7639Russianth3495Thaiiu6357 Inuktitutsr664Serbianchr6975Cherokeebn1009Banglaar4953Arabicru2281Russiantr8120Turkishth7780Thaieo7790 Esperantotr1687Turkishes6619Spanishbn6045Banglachr1614Cherokeeen5748Englishes1669Spanishth2833Thaien1055Englishar599Arabiceo3749 Esperantofr2031Frenchel4156Greekchr3731Cherokeeen7889Englishen8062Englishes7112Spanishru5376Russianiu1587 Inuktitutccp789Chakmaeo5033 Esperantofr1436Frenchzh2186Chineseel6360Greeksr5522Serbianar7956Arabicchr5378Cherokeechr2405Cherokeeen110Englishth3127Thaiar1558Arabicth4287Thaies631Spanishfr5580Frenchar8144Arabicja5560Japaneseeo3764 Esperantotr2679Turkishsr764Serbianccp199Chakmabn1219Banglaar3643Arabicchr971Cherokeeel5337Greekar3325Arabicfr4839Frenchzh6147Chinesefr4562Frenchel1210Greekel306Greeksr2517Serbiansr7944Serbiantr7005Turkishccp1546Chakmafr4002Frenchfr7086Frenchsr7141Serbianen6061Englishfr6470Frenches6314Spanishen7730Englishru75Russianzh6569Chineseeo2928 Esperantosr2735Serbianbn4913Banglachr4819Cherokeeth6204Thaitr6487Turkishar3992Arabicen1668Englishccp118Chakmaja2140Japaneseiu2478 Inuktitutiu7196 Inuktituten3857Englishru1466Russianbn7334Banglaja4911Japaneseeo2168 Esperantoeo7299 Esperantotr1667Turkishar4018Arabicchr2731Cherokeees2981Spanishchr4957Cherokeeja6682Japanesesr7193Serbianzh208Chinesear6409Arabicccp3043Chakmabn5059Banglaja7662Japaneseeo3064 Esperantosr5002Serbianen24Englishja4500Japaneseiu6763 Inuktituteo795 Esperantoen1451Englishchr833Cherokeees362Spanishbn5682Banglabn7081Banglaccp5749Chakmaeo678 Esperantoel614Greekth3520Thaiccp1371Chakmaar4532Arabicth4136Thaiiu5859 Inuktitutsr5589Serbianchr7022Cherokeeel632Greekeo2352 Esperantochr3628Cherokeezh2605Chinesear2737Arabicja2674Japaneseja6687Japanesezh1344Chineseeo3192 Esperantochr3781Cherokeeeo7722 Esperantochr6021Cherokeeru2252Russiantr1187Turkishru3553Russianccp865Chakmaiu270 Inuktitutfr3785Frenchtr4185Turkishes6182Spanishel6321Greekzh3962Chineseru4058Russianiu6775 Inuktitutar5365Arabicel6025Greekchr7543Cherokeezh5353Chinesesr4457Serbianth5815Thaifr2979Frencheo3190 Esperantofr2157Frenchel4035Greekccp1822Chakmaru372Russiansr4474Serbianfr7923Frenchja544Japanesesr1757Serbianccp7589Chakmasr3445Serbiantr980Turkishru5612Russianar6065Arabicja2641Japanesesr5155Serbianth7086Thaiar188Arabicbn5114Banglaccp2899Chakmaru6779Russiansr7460Serbianel7980Greekchr2023Cherokeeccp2106Chakmachr14Cherokeesr6441Serbianccp4547Chakmaja3514Japaneseccp5365Chakmafr6657Frenchru3733Russianfr6614Frenchtr2029Turkishbn6493Banglatr558Turkishbn5396Banglaeo1127 Esperantochr4160Cherokeeeo2375 Esperantoru1334Russianccp1275Chakmaru1667Russianccp6589Chakmath1720Thaibn2455Banglaccp4338Chakmabn3301Banglaen2436Englishchr5755Cherokeeth7962Thaibn1077Banglaccp4365Chakmaes5241Spanishfr872Frenchfr5585Frenchccp5751Chakmaru1380Russianbn2084Banglachr233Cherokeesr2863Serbianes7750Spanishsr7686Serbianeo6756 Esperantoel4664Greeksr2685Serbiantr6692Turkishtr1723Turkishbn1033Banglabn5508Banglaar1079Arabicchr6122Cherokeeen1985Englishes4972Spanishtr4550Turkishiu6922 Inuktitutes7703Spanishth7144Thaiel3214Greekeo873 Esperantosr3625Serbianes6166Spanishel6010Greekja1022Japaneseeo4229 Esperantobn6127Banglath3052Thaisr3470Serbianel3089Greekar4825Arabicel2363Greekfr8157Frenchja5726Japanesetr2594Turkishtr4003Turkishth3028Thaies39Spanishen6864Englishja2397Japaneseja4022Japaneseja6287Japanesechr4459Cherokeechr4141Cherokeebn7698Banglath6043Thaiiu91 Inuktitutar1136Arabicru7794Russianru2651Russianeo3252 Esperantoel6021Greekth71Thaizh4367Chineseiu6399 Inuktitutzh1468Chinesezh6410Chineseel8089Greekiu85 Inuktitutes5361Spanishiu3032 Inuktituttr5331Turkishfr740Frenchru4931Russianth904Thaitr2042Turkisheo5685 Esperantofr1849Frenchbn1625Banglaiu4775 Inuktitutzh2961Chinesear7472Arabicbn1366Banglafr2314Frencheo2432 Esperantoen369Englishel5484Greekes6661Spanishru7800Russiansr5323Serbianiu1079 Inuktitutccp5452Chakmaru1129Russiansr4045Serbiansr4094Serbianchr7394Cherokeear2718Arabiciu5039 Inuktituten5888Englishes4817Spanishsr2074Serbianel2097Greekar7209Arabicen7158Englishtr7414Turkishbn7113Banglaccp1711Chakmael3584Greekccp2447Chakmael1160Greekel2584Greekth7341Thaies3965Spanishes4743Spanishru5175Russianel603Greekchr2042Cherokeees902Spanishfr7571Frenches246Spanisheo7939 Esperantosr1021Serbianar1635Arabicbn3710Banglaeo7346 Esperantoen326Englishccp7371Chakmasr6245Serbianar5289Arabicel3803Greektr4732Turkishja7774Japanesefr6723Frenchth7733Thaizh5801Chinesees2199Spanishja5331Japaneseth6651Thaichr7354Cherokeezh2246Chinesear130Arabicen3440Englishzh5700Chinesear6222Arabicar4615Arabicchr5094Cherokeeccp942Chakmasr4645Serbiansr3212Serbianbn5744Banglatr4850Turkishchr3154Cherokeeel735Greekel5355Greektr4079Turkishbn3925Banglaeo2124 Esperantoeo4069 Esperantoes852Spanishru1162Russianzh6247Chineseru6788Russianchr7742Cherokeebn4710Banglath6188Thaitr7130Turkishen6784Englishes670Spanishel4781Greektr2950Turkishbn4639Banglaen45Englishen1593Englishja5943Japanesees6297Spanishbn3629Banglabn1652Banglaeo7550 Esperantosr2652Serbiansr4705Serbianchr6923Cherokeeen4136Englishtr8113Turkishchr4715Cherokeeru6569Russianbn2028Banglaes3860Spanishiu5128 Inuktitutfr4366Frenchsr6263Serbianccp294Chakmaiu4985 Inuktitutbn5521Banglaru3122Russianfr5247Frenchth5005Thaiar7485Arabiczh1093Chineseja3803Japanesees4235Spanishzh4567Chineseen323Englishfr5084Frenchru2873Russianes3949Spanishtr2423Turkishes2220Spanishja1990Japanesetr1520Turkishccp125Chakmaes6725Spanishiu4605 Inuktituteo6021 Esperantoja3235Japaneseen751Englishes3736Spanishzh1829Chinesezh2162Chinesebn3503Banglaccp7573Chakmael7768Greeksr4567Serbianbn1018Banglaiu6481 Inuktitutsr5359Serbiantr295Turkishzh1163Chinesechr5479Cherokeechr7135Cherokeees6992Spanishen4863Englishtr5358Turkishja5744Japanesefr5411Frenchsr3109Serbiansr6596Serbianja2563Japanesees5321Spanishchr2272Cherokeeel848Greekchr7486Cherokeeel6896Greekbn1387Banglatr3504Turkishel7691Greekth4118Thaiel473Greekes178Spanishja2220Japanesebn7198Banglasr1461Serbianzh3954Chineseiu5818 Inuktitutzh6238Chinesear1549Arabicbn5239Banglaru1092Russianth3683Thaitr6099Turkishzh4388Chineseeo2363 Esperantoel2093Greekeo4843 Esperantoeo2961 Esperantozh4874Chineseiu7987 Inuktitutchr5399Cherokeebn6662Banglaeo341 Esperantoiu1610 Inuktitutru6826Russianar6741Arabiciu2146 Inuktitutfr350Frenchar4620Arabiciu2330 Inuktituteo1131 Esperantoen1089Englishja925Japanesees268Spanishtr7685Turkishtr136Turkishbn320Banglaja6587Japanesezh3505Chinesebn5404Banglael5307Greekzh1381Chineseiu3872 Inuktitutes15Spanishchr5166Cherokeeel449Greekar6568Arabicth4942Thairu5703Russianar5142Arabicbn313Banglaes994Spanishth4313Thaifr2770Frenches2584Spanishbn5031Banglaar883Arabicbn7647Banglachr3675Cherokeeru7526Russianeo7188 Esperantofr622Frenchchr3302Cherokeees6260Spanisheo4985 Esperantoiu7750 Inuktitutiu2466 Inuktituteo6357 Esperantoar970Arabictr407Turkishja7097Japanesear3305Arabicfr1779Frenchiu47 Inuktitutel4549Greeksr6757Serbianchr2904Cherokeeru2147Russianchr1869Cherokeesr6916Serbianes3748Spanishtr5802Turkishiu5336 Inuktitutes7457Spanishel6094Greekth6786Thaibn1205Banglazh7344Chinesezh3201Chinesear4202Arabiceo1000 Esperantoen6700Englishzh4184Chinesezh298Chineseja2113Japaneseel3151Greekel3930Greekchr2141Cherokeeeo5177 Esperantoar5625Arabiceo7515 Esperantofr3623Frenchja1741Japaneseth6868Thaith7169Thaien1493Englishes7038Spanisheo4455 Esperantoel644Greekchr6172Cherokeebn3124Banglaru2871Russianzh7097Chinesezh7561Chineseeo3464 Esperantozh7508Chinesechr5897Cherokeeiu7710 Inuktitutes2225Spanishar2199Arabicccp7306Chakmaja4412Japanesetr7311Turkishen3877Englishen4835Englishel6602Greekel5508Greekeo6531 Esperantofr8070Frenchen7846Englishel776Greekja2849Japaneseiu2177 Inuktitutfr6754Frenchsr5990Serbianes3426Spanishel4683Greekchr2959Cherokeechr7714Cherokeeru5786Russianbn6150Banglael2356Greekchr3647Cherokeeen76Englishar3768Arabicru3249Russianzh272Chinesees6284Spanishfr6837Frenchccp4040Chakmath1736Thaiiu5246 Inuktitutfr2062Frenchar7818Arabicbn2795Banglael7492Greekeo6701 Esperantochr867Cherokeeccp7795Chakmaiu733 Inuktitutth5952Thaieo281 Esperantoth5394Thaizh2255Chinesezh4566Chineseth5011Thaiel1284Greekeo4256 Esperantoeo4493 Esperantoth1542Thaitr6300Turkishfr1527Frenchar3132Arabicccp4480Chakmaeo6259 Esperantoen224Englishes5164Spanishja2251Japanesetr2185Turkishzh1047Chineseel7383Greekel3764Greekfr4997Frenchsr6626Serbianbn5135Banglaes6996Spanishel1858Greekfr7212Frenchiu2424 Inuktitutiu2915 Inuktitutfr2975Frenchar153Arabicar2767Arabicchr7289Cherokeeru2520Russianchr2253Cherokeeel6713Greekes2493Spanishiu226 Inuktitutth2566Thaibn3540Banglael7122Greekiu7890 Inuktitutel2940Greekja6857Japanesebn410Banglachr5332Cherokeeel7478Greeksr6295Serbiansr7036Serbianja4236Japanesebn5525Banglael396Greeken5420Englishbn5029Banglaeo6769 Esperantoth7527Thaizh516Chinesefr6788Frenchbn4626Banglaar4746Arabices2425Spanishen378Englishth908Thaisr8142Serbiantr1538Turkishbn5802Banglaen4270Englishth7835Thaiar4087Arabicel7976Greekja3729Japaneseru5358Russianar6276Arabictr7641Turkishzh4656Chineseen5705Englishzh1362Chineseja1755Japanesear6191Arabicru1210Russianar4730Arabiceo1617 Esperantofr2563Frenchsr1722Serbianth6689Thaieo2797 Esperantoth5513Thaibn6636Banglafr1992Frenchar4270Arabicel2088Greeken411Englishel501Greekiu2541 Inuktituten3294Englishth6642Thaija7838Japaneseru1230Russianth8015Thaith6673Thaien3790Englishth4548Thaies3768Spanishar6951Arabicfr5636Frenchfr5024Frenchbn1991Banglaar6797Arabicbn4679Banglafr1863Frenchiu8087 Inuktitutccp6585Chakmaccp2667Chakmael4285Greekja938Japaneseru8061Russianar7210Arabicen5661Englishru5619Russianzh3146Chineseth1788Thaiar721Arabicfr2262Frenchth3036Thaieo6549 Esperantoja4331Japaneseiu7300 Inuktitutru5163Russianen2290Englishja1606Japanesefr3738Frenchth5285Thaieo2539 Esperantoru3320Russianja280Japanesefr5875Frencheo5413 Esperantoar6874Arabicen5527Englishfr7342Frenchth6625Thaieo3374 Esperantosr1963Serbiansr7873Serbianzh6631Chineseel7721Greeksr4712Serbianeo1979 Esperantoeo8127 Esperantoja7940Japaneseccp5719Chakmaiu5126 Inuktitutes4336Spanishbn5646Banglachr6753Cherokeefr662Frenchchr3618Cherokeeel1769Greekru7263Russianbn1080Banglaes5522Spanishru3535Russiansr5526Serbianfr695Frenchar502Arabicru6215Russianeo5375 Esperantoes2259Spanishbn7361Banglachr4574Cherokeechr2760Cherokeeeo2079 Esperantoja2439Japaneseeo183 Esperantoes7175Spanishtr3458Turkishth1098Thaien2273Englisheo5426 Esperantotr2749Turkishiu408 Inuktitutes1228Spanishes5461Spanishzh3466Chineseja5610Japaneseru1144Russianru2697Russianeo1768 Esperantochr5102Cherokeetr3123Turkishen1531Englishar4114Arabices382Spanishtr4336Turkishtr6234Turkishsr327Serbianbn3203Banglasr6578Serbianen5260Englishbn7665Banglatr1359Turkishsr1565Serbianzh1679Chineseja5523Japaneseja6641Japaneseel6783Greekru3634Russianbn2019Banglaen2927Englishth3426Thaizh1877Chineseccp1607Chakmazh2472Chinesezh7166Chineseiu3893 Inuktitutfr1858Frenchru1052Russianzh865Chinesear4325Arabicel6350Greekel6433Greekccp1841Chakmaiu3813 Inuktitutzh2513Chinesear515Arabicru5585Russiansr5084Serbianes324Spanishar8096Arabicen1549Englishsr3803Serbianzh2967Chinesebn1359Banglaiu6606 Inuktitutru7264Russianel6238Greektr1351Turkishel69Greekzh7282Chinesetr4866Turkisheo2081 Esperantoccp7129Chakmafr2850Frenchar5716Arabices194Spanishth1129Thaiccp5034Chakmasr8097Serbianeo3717 Esperantotr1818Turkishbn1478Banglabn6519Banglaen2530Englishtr3064Turkishccp6536Chakmachr4126Cherokeefr6591Frenchru1928Russianzh6687Chineseccp1963Chakmath972Thaiccp2036Chakmaen4464Englishtr3159Turkishja2154Japanesechr7727Cherokeebn1307Banglachr1932Cherokeeru7407Russianbn6366Banglaccp1714Chakmatr4777Turkishar6107Arabicja1887Japaneseru6344Russiansr1633Serbianiu5257 Inuktituten502Englishes1578Spanishbn4030Banglachr7014Cherokeefr599Frenchja4865Japaneseru5733Russianja5916Japanesetr7928Turkishccp7631Chakmaes778Spanishiu2397 Inuktitutsr4419Serbianar1393Arabiceo7576 Esperantoar3469Arabicsr3666Serbiansr2502Serbianiu7187 Inuktitutfr1891Frencheo3653 Esperantoru6197Russianfr4830Frenchel5885Greekth1568Thaieo4341 Esperantochr6552Cherokeeiu4586 Inuktitutja5557Japanesetr1883Turkishtr2036Turkishsr4826Serbianru7960Russianar6989Arabicchr30Cherokeeiu930 Inuktitutchr1809Cherokeeja2953Japanesear1787Arabicar6203Arabicar526Arabicchr1465Cherokeeja7857Japaneseth5860Thaitr6Turkishzh2633Chineseeo1119 Esperantobn2096Banglabn8149Banglaes1254Spanishfr7996Frenchja2731Japanesetr4854Turkishchr1792Cherokeees3954Spanishsr4067Serbianth4216Thaitr5304Turkishfr3753Frenchchr7098Cherokeees6036Spanishbn4669Banglaccp4917Chakmael6204Greekth5579Thaitr2349Turkishzh4500Chinesechr6194Cherokeeccp1248Chakmaeo4583 Esperantosr1398Serbianeo6528 Esperantotr5109Turkishes6738Spanishes270Spanishja7909Japaneseru3301Russianccp1030Chakmaiu2197 Inuktituteo432 Esperantoeo2811 Esperantoes259Spanishes4755Spanishbn6837Banglafr2630Frenchar6131Arabicbn985Banglafr6505Frencheo7849 Esperantoeo5434 Esperantoar4204Arabicen4848Englishes6321Spanishiu3741 Inuktitutja1446Japaneseth4698Thaichr2745Cherokeeth7731Thaiel1352Greektr4155Turkishzh812Chinesebn3489Banglaccp2919Chakmachr7431Cherokeeen2211Englishen1885Englishel6913Greekeo3023 Esperantoiu7930 Inuktitutar1621Arabicar3826Arabicchr4353Cherokeeen137Englisheo2525 Esperantotr8024Turkishzh6750Chinesefr2572Frenchth2199Thaichr6587Cherokeeel6322Greeksr3274Serbianes1242Spanishccp7829Chakmaiu4749 Inuktitutes2834Spanishbn441Banglaccp2968Chakmath1421Thaith2221Thaizh5030Chineseccp1205Chakmachr3152Cherokeeccp5906Chakmael4759Greekeo1915 Esperantotr1036Turkishccp3847Chakmaiu4852 Inuktituten4845Englisheo2023 Esperantoen5841Englishes282Spanishja1624Japanesees8139Spanishel6710Greekar5384Arabices2346Spanishel2618Greekja616Japaneseccp2317Chakmafr6501Frenchru6587Russianchr4643Cherokeebn5842Banglasr1494Serbianzh4297Chinesezh7707Chineseru1892Russianth2530Thaichr2591Cherokeefr4285Frenchzh5578Chineseiu7114 Inuktitutar5217Arabiciu2971 Inuktitutchr7902Cherokeear2146Arabictr4391Turkishar4533Arabicen3766Englishru2947Russianzh1562Chineseeo5876 Esperantoja2978Japanesear5714Arabicchr6737Cherokeebn3616Banglaja1177Japanesebn4901Banglaccp5803Chakmaes2026Spanishen6684Englishbn2424Banglael6282Greekfr3512Frenchja498Japaneseeo5259 Esperantosr7540Serbianth6085Thaija796Japaneseja5802Japanesesr3735Serbianccp3383Chakmafr25Frenchiu2964 Inuktituten4401Englishtr5672Turkishfr4854Frenchchr3433Cherokeeru6698Russianth4018Thaien4521Englishfr3506Frenchja4945Japaneseen7453Englishsr7560Serbianeo3675 Esperantobn4481Banglaiu2393 Inuktitutiu5151 Inuktitutth4532Thaieo5663 Esperantochr6680Cherokeetr3933Turkishbn7453Banglaccp1347Chakmaccp4342Chakmaja1486Japaneseel548Greekar3676Arabicfr5080Frenchel3256Greekzh4844Chinesefr1586Frenchel3470Greekru3449Russianbn4116Banglazh371Chineseth728Thairu2507Russianja6771Japanesechr7076Cherokeesr1544Serbianeo5914 Esperantoth1950Thaiccp4750Chakmasr476Serbianes5439Spanishiu4652 Inuktitutsr4075Serbianja7657Japanesebn1802Banglaeo5971 Esperantoccp5198Chakmabn4125Banglael354Greekru5132Russianccp3212Chakmaen1483Englisheo5185 Esperantotr4579Turkisheo2600 Esperantofr206Frenchiu4641 Inuktitutel682Greekiu325 Inuktitutsr4056Serbiansr6214Serbianth6337Thaiel3468Greekbn5986Banglatr3761Turkishzh2927Chineseccp4901Chakmaen1742Englishsr5838Serbianth2723Thairu4934Russianbn1375Banglasr141Serbianfr797Frenchzh7004Chinesezh3185Chinesear4998Arabiczh1326Chinesezh7717Chinesesr5247Serbianccp7733Chakmael2900Greekja1989Japaneseja6060Japanesechr2769Cherokeeth3982Thaien3126Englishja3754Japanesesr7370Serbiantr6382Turkishchr2214Cherokeeccp3165Chakmaen5180Englishsr279Serbiansr2541Serbianen2743Englishbn4298Banglafr100Frenchsr1972Serbianiu2701 Inuktitutel3644Greekeo207 Esperantosr7918Serbiantr7850Turkishfr6997Frenchchr6749Cherokeeth3654Thaibn2278Banglatr40Turkishbn4723Banglaccp7803Chakmaiu4787 Inuktitutccp2760Chakmaen6517Englishja7362Japaneseel6202Greekeo6235 Esperantoru1029Russianzh4148Chineseru7668Russianel3772Greekiu6409 Inuktitutel2484Greekel1333Greekzh4458Chinesechr7454Cherokeees7012Spanishes4935Spanishtr3960Turkisheo6758 Esperantofr117Frenchfr2433Frenchbn4909Banglasr7055Serbianbn7208Banglaccp7005Chakmaes3998Spanishccp8168Chakmatr1290Turkishja6675Japaneseth3042Thaies7491Spanishzh5442Chinesetr3861Turkishccp5609Chakmaeo2800 Esperantofr4599Frenchja1744Japanesebn6210Banglaiu7981 Inuktitutzh809Chineseccp6986Chakmafr4967Frenchbn376Banglaeo3062 Esperantoth7337Thaiar2857Arabicccp6618Chakmath1895Thaitr2780Turkishja1739Japanesetr5549Turkishru758Russianbn523Banglaiu3573 Inuktituttr2110Turkishen541Englishiu7093 Inuktitutzh4200Chineseru3673Russianru1923Russianes345Spanishar5163Arabices1726Spanishfr4003Frenchru2231Russianfr3496Frenchsr6646Serbianfr7417Frenchzh2102Chinesees2089Spanishja4748Japaneseeo5539 Esperantoiu3151 Inuktitutzh7958Chinesetr448Turkishru7586Russianth8071Thaifr1022Frenchtr5890Turkishccp4377Chakmaeo7008 Esperantobn3961Banglaar1422Arabices6754Spanishzh5690Chinesezh3796Chinesechr4566Cherokeefr672Frenchchr6016Cherokeechr5325Cherokeeth724Thaija6571Japaneseja3035Japanesefr745Frenchfr1002Frenchbn3264Banglaar545Arabicja2285Japaneseeo2935 Esperantoja5981Japanesebn2913Banglachr7138Cherokeeccp2094Chakmaeo4097 Esperantosr6440Serbiansr6978Serbianth2736Thaith7606Thaizh5320Chinesechr2345Cherokeesr3303Serbiansr1841Serbianru5313Russianel6432Greekccp2551Chakmasr6527Serbianth504Thaies7777Spanishar361Arabiceo2619 Esperantoiu199 Inuktitutfr2657Frenchen2819Englishth6005Thaibn5867Banglaccp3255Chakmazh2054Chinesetr2587Turkishzh1059Chinesear3488Arabiceo607 Esperantoru4578Russianzh5128Chineseccp4135Chakmaen5426Englisheo2894 Esperantoru5018Russiansr6981Serbianru6689Russianbn3519Banglaja4666Japanesezh3204Chinesesr1283Serbianen111Englishel3496Greekja4956Japaneseru6092Russianar7077Arabicth5677Thairu4660Russianes2286Spanishsr397Serbianja5295Japanesefr5924Frenchiu356 Inuktitutsr1718Serbianja3490Japanesefr7632Frenchiu4375 Inuktitutes2122Spanishja5297Japaneseja7667Japaneseccp643Chakmaeo155 Esperantoth2793Thaiccp5540Chakmaar2553Arabicsr602Serbianen583Englisheo2720 Esperantoes27Spanishzh704Chineseru5220Russianfr8081Frenchfr487Frencheo1727 Esperantochr6193Cherokeechr5756Cherokeeel5227Greekchr3735Cherokeechr7775Cherokeear3039Arabicen2708Englishsr4984Serbianen1093Englishzh5537Chinesezh6669Chineseccp2489Chakmatr1439Turkishja2262Japaneseel6753Greekja6040Japaneseel6012Greekchr369Cherokeeen3992Englishfr461Frenchiu4812 Inuktituttr6188Turkishtr2438Turkishth5805Thaiiu3656 Inuktitutar3678Arabiceo2419 Esperantozh6774Chineseja7841Japanesechr2880Cherokeesr3828Serbianja1395Japaneseth269Thaibn7569Banglaeo4156 Esperantoccp4428Chakmaeo7773 Esperantoja3854Japaneseth7374Thaien7224Englishchr7613Cherokeefr4514Frenchsr1669Serbianiu5844 Inuktitutsr4655Serbianen8044Englishth7992Thaifr5000Frenchchr1710Cherokeebn1096Banglabn2636Banglaar1871Arabicccp1197Chakmabn3543Banglabn4779Banglael3030Greekzh1272Chinesefr7919Frenchccp6928Chakmachr1069Cherokeeja2319Japanesebn53Banglaes4880Spanishja3072Japaneseru5988Russianth3024Thaith1914Thaith3886Thaiar8147Arabicar5275Arabicel5813Greekru3411Russianes2024Spanishchr2458Cherokeebn4433Banglabn6668Banglachr6644Cherokeeru3456Russianeo2410 Esperantoja1683Japaneseiu1604 Inuktituttr5317Turkishiu5241 Inuktitutiu1105 Inuktitutsr882Serbiansr7463Serbianchr2581Cherokeefr8141Frenchiu5472 Inuktitutfr4378Frenchsr2966Serbianen279Englishel1015Greekfr4422Frenchsr5474Serbiantr7350Turkishel6249Greekes5986Spanishtr2342Turkishel1362Greekccp1209Chakmaja1467Japanesebn5762Banglasr7297Serbianzh4731Chineseccp1625Chakmath1831Thaitr2943Turkishiu6219 Inuktitutth6833Thaies2173Spanishes1761Spanishes3493Spanishbn3488Banglachr4982Cherokeeeo1360 Esperantoth6679Thaiccp8080Chakmasr153Serbianzh2777Chineseen5495Englishes4413Spanishth5463Thaibn8116Banglaiu7127 Inuktituten1786Englishtr7818Turkishccp8007Chakmaru21Russianar488Arabiciu3696 Inuktitutsr6579Serbianccp7266Chakmaen2254Englishen6248Englishes7271Spanishja1808Japanesesr4408Serbianth4534Thaieo7057 Esperantozh3083Chineseel4014Greekchr7303Cherokeear7515Arabicel3085Greekel1051Greeksr7517Serbianar657Arabicen7555Englishth7372Thaisr2125Serbianel6271Greekru2503Russiantr2577Turkisheo5598 Esperantoel4630Greekeo2462 Esperantoth2689Thaieo3952 Esperantochr2323Cherokeear1306Arabicar7491Arabicar5835Arabicccp4704Chakmaar7268Arabicth213Thaija894Japanesezh2301Chineseen600Englishen2694Englishiu2972 Inuktitutccp4625Chakmaar6379Arabicel3988Greektr114Turkishja6213Japanesechr648Cherokeechr4054Cherokeear7336Arabicccp2838Chakmaeo1302 Esperantobn7611Banglachr6886Cherokeeen6961Englishfr1869Frenchth6312Thaien4224Englishja2340Japaneseru6947Russianes604Spanishbn4089Banglachr4986Cherokeechr1371Cherokeeeo5023 Esperantofr759Frenchiu1665 Inuktitutccp540Chakmabn3049Banglael2168Greekeo6804 Esperantoth7037Thaizh6310Chineseel1278Greekiu7799 Inuktitutbn8045Banglafr1078Frenchsr274Serbianth1272Thaitr7340Turkishfr686Frenchccp5430Chakmabn3911Banglabn2951Banglaccp4623Chakmaar6217Arabicja4732Japanesesr4348Serbianzh815Chinesesr462Serbianth3286Thaieo3506 Esperantochr2045Cherokeeru6640Russianel1992Greekiu5272 Inuktitutzh97Chinesetr5125Turkishsr3134Serbianiu1595 Inuktitutccp5557Chakmazh4453Chineseru3338Russianchr1242Cherokeesr7705Serbianchr2586Cherokeeth362Thaizh4536Chineseen1464Englishfr7348Frenchchr8140Cherokeeth4686Thaizh510Chinesebn7137Banglasr7058Serbianar1158Arabicchr1760Cherokeeen5494Englishccp6191Chakmael5823Greeksr3133Serbianccp3753Chakmaru2915Russianchr7412Cherokeeel622Greekar1160Arabicel5846Greeken5062Englishja5897Japanesees3398Spanishru1280Russianru6287Russianar442Arabicsr6526Serbianja1211Japaneseel7537Greekchr2174Cherokeeiu8055 Inuktitutes7074Spanishiu3221 Inuktitutchr1497Cherokeeel2049Greekar888Arabicen6710Englishsr3876Serbianeo4727 Esperantoes1583Spanishccp8176Chakmaeo537 Esperantotr6721Turkishtr328Turkishes4083Spanishar7597Arabicja3333Japanesear5080Arabicfr7289Frenchja4590Japaneseen6701Englishchr413Cherokeear4121Arabicchr1747Cherokeees359Spanishru323Russianru6422Russianel5224Greekiu3461 Inuktitutru1931Russianchr1206Cherokeeth6139Thaija2677Japaneseth4620Thaieo3204 Esperantoru8080Russianeo5848 Esperantoja2005Japanesefr5633Frenchtr3950Turkishel1369Greekeo6479 Esperantoeo4059 Esperantoja5563Japanesees1902Spanishth3135Thaies7971Spanishes2179Spanishtr3181Turkishsr3558Serbianja1450Japaneseth7510Thaiiu40 Inuktitutbn2054Banglael4907Greekel1214Greekar5505Arabicru8108Russianzh2525Chineseiu5349 Inuktitutru4777Russianel1892Greeksr3018Serbianccp1460Chakmaen7748Englishiu171 Inuktitutfr6375Frenchzh7349Chinesezh7507Chineseel2565Greekth245Thaija7514Japanesezh1388Chinesear7169Arabiczh295Chinesesr3950Serbiantr5020Turkishja829Japaneseja3160Japanesechr2044Cherokeechr4872Cherokeezh4393Chineseru4296Russiantr6298Turkishbn5748Banglabn6907Banglaru2459Russianbn94Banglaen4600Englishes6466Spanishsr6798Serbiansr7416Serbiansr7479Serbianzh7647Chineseen7207Englishtr3603Turkishru873Russianru173Russianar6482Arabicar7658Arabicbn2091Banglaes1959Spanishen5744Englishes2014Spanishja4218Japanesebn2852Banglath3399Thaith4244Thaibn5663Banglatr7154Turkishja189Japaneseel2836Greekfr1035Frenchru1214Russianbn4725Banglaru1058Russianru620Russianzh817Chineseth4149Thaizh3461Chinesebn3692Banglaja5223Japanesefr7332Frenchccp160Chakmath949Thaith537Thaiccp3573Chakmazh2394Chineseccp2197Chakmaeo7080 Esperantoar2499Arabicccp2871Chakmafr1862Frenchbn405Banglaar3156Arabicsr1594Serbianccp1723Chakmath2732Thaija7756Japanesebn1210Banglaru5778Russianccp365Chakmaccp2614Chakmachr4249Cherokeeeo5875 Esperantoccp6272Chakmaiu7211 Inuktitutru4437Russianru5190Russianiu6146 Inuktituttr791Turkishtr2359Turkishar4506Arabicja642Japaneseja2535Japanesear3904Arabicru1Russianfr3126Frenchtr2400Turkishen348Englishbn6549Banglaiu2231 Inuktitutiu536 Inuktitutbn3288Banglazh2527Chineseiu7116 Inuktitutru2745Russianen5773Englishru8035Russianccp2117Chakmatr2726Turkishccp7274Chakmaar3910Arabicccp2086Chakmabn4727Banglaar4280Arabicru3702Russianen4806Englishsr7931Serbianen108Englishsr3159Serbiantr4899Turkishbn3843Banglasr2982Serbianes1135Spanishfr2385Frenchfr280Frenchru2729Russianel7323Greekru5748Russianchr5158Cherokeeth7926Thaiar5945Arabicsr4534Serbianzh5471Chinesechr854Cherokeeccp2436Chakmasr2660Serbianes1724Spanishth2815Thaitr1417Turkishzh3670Chinesefr1623Frenchiu893 Inuktitutar3240Arabicth6038Thaija6029Japaneseen2152Englishes2883Spanishes7858Spanishru4474Russianja4001Japaneseru7545Russianbn2899Banglasr6602Serbianbn2928Banglaccp7917Chakmaes5717Spanishzh6690Chinesear938Arabiceo1021 Esperantofr2753Frenchfr4091Frenchth4835Thaizh2657Chinesefr4128Frenchja717Japaneseja3250Japaneseel7203Greekbn3562Banglaiu7172 Inuktitutiu7732 Inuktitutbn622Banglaru2570Russianar143Arabiciu3630 Inuktituttr1234Turkishchr4682Cherokeezh1555Chineseiu3404 Inuktitutar3519Arabicccp2120Chakmabn6178Banglaar6Arabicar8188Arabiciu466 Inuktitutbn4599Banglaes7580Spanishar4604Arabicar3199Arabicfr4526Frenchth1785Thairu3760Russianar8138Arabiczh2014Chinesear6311Arabicfr4358Frenchen7991Englishfr2883Frenches8044Spanishar1886Arabicth496Thairu6374Russianiu3979 Inuktitutiu5507 Inuktitutar8056Arabicru808Russianccp6761Chakmaja1492Japanesetr1943Turkishtr5915Turkishen7898Englishchr7772Cherokeeeo2718 Esperantosr6354Serbianth1880Thaiiu5838 Inuktitutccp1368Chakmaes1239Spanishel7859Greeken2055Englishchr6341Cherokeeccp1307Chakmatr2707Turkishsr2914Serbiansr3836Serbianru1249Russianbn627Banglachr4125Cherokeeja6069Japaneseru256Russianccp3363Chakmachr7153Cherokeefr2128Frenchbn1369Banglaja2081Japanesebn428Banglatr7777Turkishzh2823Chineseel4489Greekbn5954Banglaccp6486Chakmael4801Greekar1110Arabicel861Greeksr7806Serbianzh1660Chinesezh1066Chinesesr5590Serbianen6800Englishiu806 Inuktitutar1144Arabiceo4121 Esperantosr4557Serbianja1638Japanesechr1846Cherokeeja1356Japanesees1264Spanishen5881Englishiu7416 Inuktitutchr8069Cherokeechr2510Cherokeeccp5209Chakmaeo3178 Esperantoja4909Japanesesr443Serbianes2279Spanishen4313Englishccp7628Chakmaccp2415Chakmachr6129Cherokeeen675Englishzh6346Chineseja5973Japanesear1368Arabiciu3674 Inuktitutar5115Arabicja5164Japaneseja3627Japanesesr698Serbiansr7631Serbianes1169Spanishen4691Englishccp4546Chakmaiu1568 Inuktitutccp6101Chakmaes6732Spanishes729Spanishja2817Japaneseccp1292Chakmaru3316Russianel4280Greektr8191Turkishes7636Spanishiu5271 Inuktitutsr2642Serbianth7113Thaieo5077 Esperantoel6136Greekiu3909 Inuktitutzh2271Chineseel502Greekru7132Russiansr5877Serbianeo2975 Esperantoel4676Greekeo7913 Esperantoccp4603Chakmatr5687Turkishel5691Greekja2913Japaneseru51Russianru5087Russiansr2712Serbianzh5757Chinesees456Spanishccp156Chakmaccp7890Chakmath1526Thaith7944Thaitr6932Turkishsr4579Serbianccp7865Chakmatr3573Turkishtr677Turkishzh6937Chinesechr6169Cherokeear8152Arabices593Spanishel2807Greekar4612Arabicen84Englishzh7699Chineseeo1228 Esperantoja1702Japanesear3442Arabicru3117Russianru4351Russianru5033Russianbn3008Banglaeo7774 Esperantoja3188Japaneseel3688Greekru6605Russianbn656Banglafr4281Frenchiu6866 Inuktituten7462Englishbn3691Banglafr2100Frenchja2911Japanesesr4907Serbianel629Greekchr1050Cherokeeru3321Russianbn1169Banglatr752Turkishiu7467 Inuktitutsr3746Serbianbn3658Banglaeo5243 Esperantoccp1916Chakmabn5272Banglael1869Greekar4282Arabiceo2497 Esperantochr3855Cherokeeeo2310 Esperantoth6280Thaifr2112Frenchchr860Cherokeeen5666Englishfr1796Frenches4814Spanishiu1768 Inuktitutzh2789Chinesear161Arabicar5330Arabiceo7058 Esperantobn2641Banglaccp424Chakmaeo4349 Esperantochr7060Cherokeees3754Spanishes5868Spanishchr3440Cherokeeen1256Englishru7262Russianchr895Cherokeeen5811Englishth5147Thairu7236Russiansr1451Serbianel4633Greekbn6977Banglath2352Thaitr3354Turkishccp450Chakmatr7208Turkishsr6243Serbiantr5513Turkishchr7179Cherokeeen3037Englishzh4581Chineseen4158Englishbn1418Banglabn7426Banglaen1925Englishru3278Russiansr2474Serbianeo7274 Esperantoja7017Japaneseja6933Japanesechr426Cherokeeja3127Japaneseja3273Japanesetr5243Turkishccp8018Chakmael6973Greekzh6676Chinesees2090Spanishja1922Japaneseru4879Russianen7368Englishar5581Arabicfr2685Frenchen5442Englishccp1486Chakmaes1910Spanishru6106Russiansr340Serbianel1249Greekiu1912 Inuktitutja1291Japaneseeo4145 Esperantoja3510Japaneseiu3158 Inuktituten5790Englishiu5582 Inuktitutchr1841Cherokeeen4154Englishes6956Spanishru6526Russianccp6439Chakmaccp3974Chakmael6759Greekfr70Frenchsr6830Serbianth345Thaieo4054 Esperantozh5782Chineseccp3237Chakmaen8083Englisheo861 Esperantofr6634Frenches5843Spanishes5966Spanishfr6843Frencheo5550 Esperantofr7422Frenchth1970Thaichr2474Cherokeeth7094Thaieo41 Esperantoja8118Japaneseel656Greeken1835Englishen7027Englishen2701Englishth4370Thaitr7956Turkishiu8049 Inuktitutccp5923Chakmaes799Spanishzh2511Chineseja4693Japaneseth4823Thaien3226Englishzh6039Chinesesr1136Serbianja7701Japanesebn5609Banglachr2300Cherokeeen3756Englishchr4977Cherokeechr1308Cherokeeel7128Greekeo7538 Esperantoel6985Greekiu1047 Inuktitutbn3346Banglaru3974Russianzh1531Chineseel4010Greekiu3153 Inuktitutiu2871 Inuktitutchr5333Cherokeeen7623Englishja6236Japaneseiu3093 Inuktitutiu3036 Inuktitutar7343Arabicccp6929Chakmaccp3899Chakmaccp7171Chakmazh3442Chineseja4471Japaneseja791Japaneseru6205Russianzh2315Chinesezh3766Chinesear214Arabicen2213Englisheo5633 Esperantozh6095Chinesebn6072Banglath3720Thaibn4063Banglael3616Greekar1672Arabicchr1744Cherokeeel2076Greeksr1682Serbianel2742Greekccp861Chakmachr942Cherokeesr829Serbianth8046Thaiiu900 Inuktitutja255Japanesechr1285Cherokeeccp1904Chakmafr5324Frenchiu7212 Inuktituteo2237 Esperantoes6924Spanishes7268Spanishbn2592Banglaar1224Arabicth7509Thairu325Russianccp6704Chakmath3524Thaitr6998Turkishbn5710Banglasr8127Serbianccp2502Chakmaar6540Arabices5473Spanishzh3251Chineseen3879Englishen3912Englishar5789Arabiceo6876 Esperantoeo7237 Esperantochr1724Cherokeechr6420Cherokeees7409Spanishtr3104Turkishel6153Greekes7433Spanishen4791Englishtr6728Turkishar6171Arabicen8033Englishiu7250 Inuktitutru7252Russianccp1620Chakmabn864Banglath7830Thaibn6602Banglaes5021Spanishes4257Spanishen15Englishccp1838Chakmaeo224 Esperantofr3755Frenchzh4594Chineseja268Japaneseen7336Englishja8162Japanesear4817Arabicen4596Englishru2848Russianeo3221 Esperantoth3079Thaiel7199Greekru2515Russianfr6181Frencheo3044 Esperantoen2614Englishsr1641Serbianbn1052Banglaen3884Englishtr1000Turkishzh3399Chinesesr1139Serbianzh888Chineseja1322Japaneseccp5131Chakmaen4491Englishccp991Chakmaeo6621 Esperantoiu498 Inuktituteo7203 Esperantoth4616Thaiiu7226 Inuktitutfr4998Frenchsr7868Serbianfr6334Frenchth3669Thaien2261Englishchr2751Cherokeezh3129Chineseccp2886Chakmath6874Thaiar7484Arabicja44Japanesebn3233Banglael3143Greekth5383Thairu6626Russiansr4367Serbianth3975Thaith2501Thaith6289Thaieo4718 Esperantoth5267Thaith1856Thaizh2499Chineseiu3985 Inuktituttr982Turkishfr7953Frencheo1629 Esperantosr7173Serbiantr3398Turkishel7816Greekeo7909 Esperantosr1125Serbianes3635Spanishzh7228Chinesear4487Arabiceo6982 Esperantoiu2672 Inuktitutru17Russiansr6959Serbianchr1476Cherokeeel3057Greekbn2147Banglachr6072Cherokeees3138Spanishes3728Spanishiu3924 Inuktitutru6366Russianzh6754Chineseccp8116Chakmachr3101Cherokeeel6688Greekfr271Frenchiu7934 Inuktitutzh5506Chinesefr1124Frenchzh7766Chinesees7962Spanishar5033Arabicchr6433Cherokeefr1582Frenchja1236Japanesees6234Spanishth3850Thaiar8045Arabicen3244Englishfr6289Frenchru1518Russianen7824Englishja4108Japaneseiu1483 Inuktitutth219Thaiccp7179Chakmaeo279 Esperantozh5453Chineseen512Englishzh6388Chinesechr5075Cherokeeja5801Japaneseru176Russianja5024Japaneseel6070Greekel6669Greekar3637Arabices6942Spanishsr6783Serbianchr5903Cherokeeel6264Greeken7466Englishfr1290Frencheo5468 Esperantoeo194 Esperantoar6862Arabicja343Japaneseel1539Greektr1799Turkishar7736Arabiciu3065 Inuktitutel6469Greekth3586Thaies4349Spanishbn1719Banglatr938Turkishsr2296Serbianja4875Japanesees598Spanishfr3049Frenchar4661Arabicfr2465Frenchel5357Greektr6952Turkishtr3004Turkishes558Spanishes5481Spanishfr5228Frenchiu2974 Inuktitutsr5111Serbianeo596 Esperantoth5787Thaiar5474Arabicccp3813Chakmaes1166Spanishes1279Spanishbn3988Banglaru1946Russianzh5712Chinesear3010Arabicar5134Arabicar8107Arabiciu630 Inuktitutchr4153Cherokeees6157Spanishsr6325Serbiantr82Turkishzh7213Chinesees5953Spanisheo859 Esperantoccp6231Chakmaru4933Russianen4092Englishsr5092Serbianiu4646 Inuktitutar4210Arabicchr5942Cherokeeen8024Englishfr6751Frenchiu6369 Inuktitutzh7167Chineseru2091Russiantr5083Turkishfr2381Frenchtr4927Turkishzh3598Chineseth4774Thaies2605Spanishccp5275Chakmasr5939Serbianes1095Spanishen6958Englishzh7939Chineseiu7820 Inuktituttr6861Turkishru4978Russianth4695Thaichr7086Cherokeeccp1888Chakmaeo174 Esperantochr1928Cherokeechr7983Cherokeear3300Arabices2283Spanishja5082Japanesees4544Spanisheo6240 Esperantozh393Chinesetr7825Turkishfr4265Frenchru5389Russianfr2769Frenchchr8180Cherokeeru82Russianel2263Greektr2374Turkishja712Japanesear2058Arabicar6119Arabicen5986Englishfr6612Frenchccp5024Chakmaeo5234 Esperantozh2479Chinesear7933Arabicja6967Japaneseru6319Russianiu5353 Inuktituteo8122 Esperantobn6466Banglafr8107Frenchfr6568Frenchsr7169Serbianccp3584Chakmachr4826Cherokeesr6282Serbianth3335Thaith1184Thaiel6409Greekar7732Arabictr574Turkishccp2171Chakmafr3997Frenchccp756Chakmachr4272Cherokeeeo4807 Esperantobn875Banglaja3406Japanesear7572Arabicru1428Russianru6113Russianes3Spanishchr5554Cherokeeccp1688Chakmaccp6081Chakmaes1299Spanishbn6421Banglaru8001Russianru5594Russianth5979Thaibn3956Banglaeo4467 Esperantoja3125Japaneseth5382Thaichr2839Cherokeeth6223Thairu7690Russianfr2233Frenchja5561Japanesees4835Spanishbn6868Banglael3565Greekbn1601Banglazh6803Chineseccp6575Chakmaccp6442Chakmaes4323Spanishfr685Frenchen7983Englishen5918Englishel2477Greekbn2625Banglabn2780Banglaccp6526Chakmafr6365Frenchzh1552Chineseiu6263 Inuktituteo7001 Esperantoen7261Englishzh3291Chinesear7824Arabiciu867 Inuktitutiu6617 Inuktitutru6916Russiantr6990Turkishzh1584Chinesechr4877Cherokeeja6727Japanesezh3975Chinesear4178Arabicth4762Thaitr513Turkishchr5395Cherokeesr1575Serbiansr6875Serbiantr8164Turkishes2942Spanishth5046Thaiel6595Greekchr4042Cherokeechr4306Cherokeeel551Greekru1582Russianzh3350Chinesezh7764Chinesebn889Banglafr4588Frencheo7017 Esperantochr2495Cherokeeccp4278Chakmazh7537Chinesebn2006Banglasr3419Serbiansr4961Serbianiu2430 Inuktitutja4824Japaneseru3084Russianfr6018Frenchtr640Turkishth2985Thaifr7317Frenchth2216Thaibn3873Banglaccp2235Chakmaiu4810 Inuktitutru5146Russiantr3889Turkishel3379Greekccp1870Chakmasr1786Serbianeo2505 Esperantoth6915Thaiiu2276 Inuktitutfr2659Frenchiu5405 Inuktitutru633Russiantr6024Turkishtr446Turkishccp1257Chakmath6633Thaibn5677Banglath5804Thaija2480Japanesezh4855Chineseja1184Japaneseel5159Greektr5181Turkishzh6298Chineseru8098Russiansr3781Serbiansr7152Serbianen3632Englishsr2496Serbianja4994Japanesees4308Spanishiu3575 Inuktitutzh7554Chineseja4212Japanesesr1975Serbiantr6956Turkisheo2307 Esperantoar3177Arabicel3441Greekes7552Spanishccp6507Chakmaar756Arabicel1145Greekar6137Arabicru3391Russianes3293Spanishja161Japaneseth3639Thaizh6272Chineseel1495Greekzh3475Chineseccp5702Chakmaes6319Spanishiu7121 Inuktitutbn4534Banglath388Thairu770Russianzh1210Chineseen5579Englishja2436Japanesefr8057Frenchchr4753Cherokeeen5681Englishiu830 Inuktitutzh7818Chinesechr3542Cherokeear3895Arabicchr2980Cherokeechr7137Cherokeeen7769Englishes3432Spanishiu3723 Inuktitutja7036Japanesesr3271Serbianiu5638 Inuktituteo4074 Esperantoth5929Thaichr3327Cherokeebn7321Banglaar4054Arabicen3253Englishfr7890Frenchiu1914 Inuktitutja1169Japaneseja5174Japanesesr1609Serbianru5140Russianru7712Russianen3613Englishccp634Chakmaru1251Russianar1608Arabiciu4872 Inuktitutsr6491Serbianen6503Englishes5073Spanishzh1731Chineseeo693 Esperantobn470Banglaar431Arabicen4218Englisheo4560 Esperantoes4120Spanishiu6918 Inuktitutccp272Chakmasr1601Serbianiu3576 Inuktituttr1489Turkisheo971 Esperantoccp6200Chakmabn7774Banglaccp7739Chakmaccp4283Chakmabn6605Banglaes3975Spanishar623Arabicbn1082Banglaccp4378Chakmachr228Cherokeeja4963Japanesechr2232Cherokeeiu3981 Inuktitutru2327Russianfr497Frencheo2276 Esperantoth1595Thaith6610Thaieo1603 Esperantotr5409Turkishzh5460Chinesear4017Arabicfr5786Frenchth2406Thaiiu4981 Inuktitutes5713Spanishzh7820Chineseja6286Japaneseeo3692 Esperantoel432Greekar7690Arabicja5139Japaneseth3891Thaibn86Banglael3404Greekccp4303Chakmaiu2294 Inuktitutth5475Thaiar2866Arabiceo6347 Esperantoeo4057 Esperantoja6511Japanesebn1953Banglael4840Greekiu6749 Inuktituteo522 Esperantoja2032Japaneseccp6743Chakmabn3071Banglael4557Greeken3422Englishth5780Thaibn1328Banglaccp389Chakmaccp6816Chakmael6855Greekbn7054Banglaja7263Japanesesr8051Serbianel7757Greekeo5632 Esperantoja1596Japaneseth4196Thaizh4088Chinesezh5996Chinesezh7063Chineseru384Russianchr7917Cherokeesr5083Serbianth7402Thaien6376Englishtr2424Turkishel6209Greekiu6814 Inuktitutes3851Spanishbn4968Banglaes3757Spanishar6694Arabicccp4686Chakmaiu6880 Inuktitutar2977Arabicel3620Greekfr7419Frenchel7163Greekiu2977 Inuktituten5742Englishchr7833Cherokeebn5978Banglael6706Greeken3327Englishiu1318 Inuktitutfr2425Frenchtr5834Turkishar1600Arabicru8089Russianja3591Japanesetr6200Turkishes7930Spanishar4758Arabicru6746Russianeo3556 Esperantofr6630Frenchzh3872Chinesezh2569Chinesear2311Arabicel6579Greekel2199Greekiu5770 Inuktitutru6347Russianzh5850Chinesear3313Arabiciu2738 Inuktitutth7487Thaieo4389 Esperantoru5992Russianiu2840 Inuktitutsr564Serbiansr644Serbianth6074Thaiiu5971 Inuktitutiu5976 Inuktitutja113Japaneseccp7310Chakmaar1666Arabicbn2176Banglabn3430Banglaen5575Englishchr3691Cherokeesr6715Serbianchr1193Cherokeetr7462Turkishru4991Russianbn6747Banglaccp1939Chakmaccp4133Chakmachr47Cherokeezh6495Chineseja4679Japaneseen4552Englishiu5061 Inuktitutsr699Serbianth8125Thaibn5162Banglaes4128Spanisheo2634 Esperantosr7034Serbianbn4210Banglasr2248Serbianja2022Japaneseel270Greekeo3904 Esperantoel4857Greekfr1564Frenchar2807Arabicel75Greekru3460Russianeo3074 Esperantoar2167Arabicel6642Greekja1390Japanesees2207Spanishtr4417Turkishtr3418Turkishzh4392Chinesezh4279Chineseth6090Thaichr1794Cherokeesr1180Serbianen2667Englishchr2325Cherokeesr5872Serbianel2963Greekccp1600Chakmaja2613Japaneseel4969Greekfr4945Frenchru7543Russianchr407Cherokeefr3996Frenchja3450Japaneseru6721Russianeo2506 Esperantoes2478Spanishru4849Russianes7375Spanishen2263Englishfr1275Frenchiu6488 Inuktituteo7478 Esperantofr1013Frenchar560Arabicar4938Arabicja2205Japaneseja2768Japaneseru6079Russiantr730Turkishzh606Chinesetr2409Turkishchr6607Cherokeees2945Spanishru7472Russiansr191Serbiantr4708Turkishccp7528Chakmael6780Greekja7694Japaneseeo6181 Esperantoen177Englishchr1024Cherokeeccp3669Chakmaes3159Spanishth5527Thaibn2296Banglath1089Thaizh1297Chinesezh6454Chinesebn3796Banglabn6834Banglael6033Greekfr5461Frenchel5336Greektr1765Turkisheo4419 Esperantoth1221Thaiccp5270Chakmazh5114Chinesear3241Arabicar4796Arabicfr669Frenchja1046Japanesechr1174Cherokeear6432Arabicen1813Englishbn910Banglael5874Greekes2152Spanishiu5765 Inuktitutbn6983Banglaccp2905Chakmachr7601Cherokeeccp636Chakmaeo6799 Esperantoja264Japaneseja6631Japanesefr3925Frenchsr7568Serbianeo2378 Esperantotr3869Turkishel5323Greekru252Russianiu7412 Inuktitutar6672Arabicth1432Thaith5110Thaith5374Thaith4638Thaichr4961Cherokeeru5219Russianar2175Arabicru1558Russianth2677Thaies4522Spanishru7126Russiansr8069Serbianel3763Greekth3684Thaisr5156Serbianen6016Englishbn367Banglaiu3579 Inuktitutel5818Greeken394Englishja5585Japanesesr2145Serbiansr3244Serbianen3519Englishja882Japaneseth635Thaizh1658Chinesechr6083Cherokeeen359Englishccp1873Chakmael5157Greekchr594Cherokeees2309Spanishchr8058Cherokeeel6110Greekiu187 Inuktitutja3674Japaneseel1309Greekja5329Japanesebn2395Banglasr2108Serbianeo2061 Esperantoru5681Russianja3518Japaneseja2469Japanesezh1536Chinesees555Spanishbn1151Banglaccp7113Chakmaen3494Englishen6449Englishes6514Spanishel3447Greekja1253Japanesechr6564Cherokeetr6862Turkishel7865Greekru5886Russianru5397Russianth6374Thaiel233Greekchr8143Cherokeeja6548Japanesefr1772Frenchfr6622Frenchiu3409 Inuktitutzh1734Chinesezh104Chineseja3656Japanesefr4999Frenchzh2910Chinesear4246Arabicen7571Englishbn6035Banglaes2976Spanishja276Japanesear7497Arabicen5154Englishth7053Thaifr3305Frenches300Spanishfr1844Frenchsr1756Serbianar803Arabiczh7482Chinesear3965Arabiceo5537 Esperantosr3262Serbianccp2196Chakmaen3586Englishfr4951Frenchel1750Greekccp1182Chakmael430Greekfr1532Frenchen1931Englishccp1305Chakmaccp8031Chakmaen3855Englishja944Japaneseen700Englishen1132Englishen2361Englishru6214Russianes2042Spanishtr1664Turkishiu6210 Inuktitutel4320Greekja4563Japanesetr7646Turkishel5903Greekth1477Thaiccp2095Chakmaru1146Russianth6770Thaiccp2160Chakmael1019Greekel1488Greekfr1726Frenchccp3711Chakmafr8048Frenchja6756Japaneseja7443Japanesetr5760Turkishtr5913Turkishtr7846Turkishar1846Arabiceo1380 Esperantoja7741Japanesear3654Arabicfr7447Frenchru6943Russiantr348Turkishth4091Thaiel4192Greekeo969 Esperantozh174Chineseccp4379Chakmabn5890Banglael6273Greekfr6536Frenchtr3593Turkishtr3397Turkishar7870Arabicchr1604Cherokeeiu1566 Inuktitutth4023Thaija4240Japaneseth3081Thaibn7786Banglachr6209Cherokeeel1693Greekel5347Greekeo4175 Esperantoth202Thaiiu856 Inuktitutchr3131Cherokeeru7074Russianen1347Englishru2626Russianchr5013Cherokeezh3273Chineseel5240Greekiu542 Inuktitutth6336Thaiar1116Arabiczh705Chinesefr7270Frenchccp463Chakmafr600Frenchiu2178 Inuktitutiu6180 Inuktitutiu8160 Inuktitutfr3116Frenchru3796Russianja2459Japanesezh1834Chinesezh2679Chineseth834Thairu212Russianth1331Thaiel5743Greeken7953Englishfr3698Frenchsr4732Serbianzh1784Chinesetr5236Turkishfr2727Frenchsr2092Serbianiu4051 Inuktitutja2914Japaneseen671Englishru2948Russianccp3721Chakmazh2419Chinesesr3603Serbianeo5993 Esperantoel2776Greekja7151Japaneseeo150 Esperantochr6727Cherokeeja5621Japanesezh357Chineseja4000Japaneseru2885Russiantr5905Turkishccp3192Chakmaen1400Englishru3475Russianfr5448Frenchsr4275Serbiansr831Serbianiu6454 Inuktitutja3713Japanesebn7526Banglaen6561Englishiu7197 Inuktitutar200Arabicfr3720Frenchfr7410Frenchel6470Greekchr5141Cherokeesr264Serbianar768Arabicar2035Arabiczh7929Chineseccp7616Chakmaru3408Russianel2114Greekchr7879Cherokeeru3810Russianzh8122Chineseth403Thaies5839Spanishen3757Englishtr7756Turkisheo7206 Esperantoccp7842Chakmazh869Chineseru7761Russianbn4932Banglaru4809Russianiu4957 Inuktitutbn6357Banglaja7065Japaneseru364Russianen7016Englishfr4723Frenches40Spanishja3635Japanesesr828Serbianar4341Arabiczh4920Chinesebn4532Banglafr6338Frenchbn5322Banglazh5841Chineseth7858Thaiel6552Greekeo7789 Esperantofr3277Frenchccp1940Chakmaiu4070 Inuktitutja7733Japaneseccp6205Chakmaccp5318Chakmaccp4592Chakmaar2082Arabicbn2342Banglaen6648Englishel7728Greekfr2969Frenchth7516Thaibn2584Banglaja171Japaneseen2778Englishen3678Englishja5519Japanesesr7765Serbianbn532Banglaeo8158 Esperantoiu4429 Inuktitutsr1023Serbianchr4290Cherokeeja284Japaneseel5487Greekel1540Greekchr7620Cherokeezh4903Chinesebn6016Banglaes6453Spanishsr1953Serbianeo3147 Esperantoja5253Japanesetr2475Turkishccp90Chakmael6668Greeksr7368Serbiansr7689Serbianel1477Greekel6932Greekeo2913 Esperantosr7779Serbianiu5776 Inuktitutel2284Greekth2699Thaiar310Arabicbn2024Banglaccp7659Chakmaen5051Englishja2316Japanesechr4610Cherokeeru3332Russianbn3374Banglachr5640Cherokeebn7256Banglael2162Greekar758Arabicja3351Japaneseen6165Englishen3297Englishbn3901Banglazh3172Chinesear3091Arabicru2348Russianfr7309Frenchar5881Arabicfr7726Frenchar1992Arabicchr785Cherokeear281Arabictr5354Turkishzh1787Chineseiu4836 Inuktitutru3230Russianchr7890Cherokeeru7044Russianbn4245Banglafr4499Frenchzh1851Chineseth7202Thairu1883Russianzh79Chineseen4679Englishth3902Thaien4670Englishfr6996Frenchtr6172Turkishen2369Englishel67Greekel1272Greekbn5676Banglaeo1117 Esperantotr62Turkishchr6135Cherokeezh6960Chineseja5022Japanesesr3493Serbianar4840Arabicar4071Arabictr5046Turkishen7346Englishbn1261Banglazh3993Chinesebn2094Banglachr4822Cherokeezh1670Chinesebn2128Banglaes2233Spanisheo790 Esperantoar5065Arabiceo4027 Esperantoel1503Greekfr7729Frencheo2339 Esperantoru4837Russianru763Russianchr3827Cherokeetr3506Turkishar2307Arabicel5395Greekar3908Arabicar1880Arabicbn4662Banglaar3663Arabicchr8186Cherokeeeo6714 Esperantofr1933Frenchtr1671Turkishbn3113Banglaen7094Englishja5671Japaneseru6462Russianccp5078Chakmabn7499Banglabn1379Banglaeo4777 Esperantoth866Thairu8149Russiansr2178Serbianes2680Spanisheo476 Esperantobn2849Banglatr4502Turkishja8082Japaneseiu30 Inuktitutar322Arabiceo5196 Esperantochr6093Cherokeeeo4116 Esperantoen6375Englishiu57 Inuktitutbn2354Banglath477Thaija260Japaneseth8062Thaies2009Spanishar842Arabicbn3865Banglatr2799Turkishchr1339Cherokeebn6507Banglael3406Greekzh3084Chinesesr2363Serbianes6666Spanishzh2656Chinesetr4041Turkishen3374Englisheo2344 Esperantoth1624Thaith1034Thaisr5907Serbianth6233Thaies3792Spanishes5001Spanishiu6684 Inuktitutccp6880Chakmaes3606Spanishchr5253Cherokeeth2424Thaibn3135Banglaar1872Arabicja6879Japaneseru2409Russianel4297Greekeo6715 Esperantoes2706Spanishar1458Arabicccp7190Chakmael5887Greekeo3899 Esperantoes1258Spanishru1617Russianja7829Japaneseru3218Russiansr3854Serbianja2514Japanesesr1495Serbianeo6402 Esperantoccp2924Chakmaes5949Spanishes7188Spanishchr6508Cherokeechr4469Cherokeeja2363Japanesesr495Serbianzh6748Chineseccp7027Chakmaen20Englishtr7168Turkishth4623Thaifr6019Frenchth4677Thaien430Englishru8144Russianel342Greektr2315Turkisheo2098 Esperantosr2113Serbianes2628Spanishel1991Greekth2518Thaija1240Japanesetr226Turkishzh2444Chineseja82Japanesesr4353Serbianar7822Arabiceo5527 Esperantoccp4128Chakmaccp4346Chakmazh3617Chinesefr7768Frenchfr2888Frenchru1920Russianchr5918Cherokeeru1450Russianfr4351Frenchsr4960Serbianeo956 Esperantobn6273Banglatr4461Turkishen6724Englishru618Russianchr5265Cherokeeiu479 Inuktitutsr5847Serbianja4287Japaneseen1575Englisheo4494 Esperantoes1206Spanishja2609Japanesezh7776Chineseth1935Thaitr2981Turkishzh2524Chinesesr1050Serbianccp5547Chakmaiu7385 Inuktitutbn2145Banglaccp7751Chakmachr3718Cherokeeen6512Englishchr5555Cherokeefr1180Frenchsr1176Serbiansr7660Serbiantr1473Turkishchr461Cherokeeen7316Englishfr925Frenchru4335Russianbn1108Banglazh5934Chinesebn4357Banglaeo5899 Esperantotr1112Turkishth4750Thaith5182Thaiel4313Greekfr5987Frenchja7489Japanesezh1884Chineseru5086Russianccp2946Chakmabn5579Banglaar7618Arabicccp3957Chakmachr4598Cherokeees4676Spanishru7376Russianeo2143 Esperantoth6746Thairu5298Russianeo6790 Esperantoes3893Spanishar4975Arabictr1034Turkishel1740Greekzh5001Chinesefr7174Frenchbn3406Banglabn6440Banglaen2401Englishccp3929Chakmaja3815Japaneseiu2513 Inuktitutchr4785Cherokeeja3634Japanesetr1287Turkishen887Englishja4593Japanesechr632Cherokeees436Spanishar2299Arabicfr5369Frenchtr622Turkishfr7229Frenchzh6673Chinesechr3627Cherokeeiu571 Inuktitutes4384Spanishtr1262Turkishru370Russiantr4363Turkishar3364Arabices3628Spanishes1082Spanishbn3251Banglaeo4163 Esperantobn2187Banglafr1552Frenchen6031Englishes7421Spanishfr823Frenches4416Spanishel8085Greekchr72Cherokeeiu1613 Inuktitutja6659Japanesear4798Arabicccp8030Chakmaru1267Russiantr7770Turkishccp60Chakmafr3854Frencheo87 Esperantoru5213Russianen4696Englishar370Arabicccp7613Chakmaru112Russiansr7108Serbianja3126Japaneseiu666 Inuktitutru681Russianar2936Arabicar662Arabictr69Turkisheo4141 Esperantoel8126Greekbn2469Banglazh8027Chineseja7210Japaneseen3661Englishfr6954Frencheo5649 Esperantoar7873Arabicsr449Serbianth5610Thaiccp5423Chakmael5481Greekes882Spanishru1543Russianar2960Arabicbn6120Banglaccp7405Chakmatr98Turkishja8171Japaneseen5461Englishen1444Englisheo1587 Esperantofr424Frenchel467Greekccp3312Chakmaru5001Russianbn5470Banglasr2214Serbianchr277Cherokeechr5106Cherokeeccp5519Chakmafr7012Frenchchr1623Cherokeeel3046Greekfr2665Frenchar7456Arabictr5936Turkishzh7389Chinesefr1593Frenchiu4180 Inuktitutru1139Russianth678Thaith3998Thaieo7484 Esperantoiu4452 Inuktitutja3948Japaneseja5846Japaneseiu1716 Inuktituttr7966Turkisheo8026 Esperantoja2106Japaneseth5200Thaija2121Japaneseel6420Greekth7702Thaichr4388Cherokeeiu1948 Inuktitutth7432Thaichr7614Cherokeeiu5678 Inuktitutja1650Japanesesr2897Serbianzh4571Chineseiu3225 Inuktitutccp7050Chakmaja2492Japanesear5143Arabicbn3330Banglaccp2679Chakmasr4479Serbianar2681Arabicth6397Thaieo2588 Esperantoes5153Spanishfr7933Frenchth3169Thaichr7882Cherokeetr5647Turkishzh5113Chinesees2477Spanishiu3001 Inuktitutja6012Japaneseiu5881 Inuktituttr8027Turkishzh235Chineseeo2318 Esperantosr4406Serbianbn5750Banglael4807Greekar8115Arabicbn7762Banglafr1063Frenchbn6913Banglafr2856Frenchzh3822Chineseth4320Thaisr2518Serbiansr2024Serbiansr2557Serbianfr6312Frenchsr5692Serbianchr4420Cherokeeeo2846 Esperantoen6253Englishccp6015Chakmachr5584Cherokeeen3395Englishja5365Japanesear987Arabiciu1728 Inuktitutsr6652Serbiantr2070Turkishtr604Turkishja4645Japanesear6978Arabiceo3348 Esperantoccp1375Chakmath6033Thaizh400Chinesebn3032Banglaiu597 Inuktitutth4530Thaiccp2216Chakmabn2665Banglaru2821Russianccp5915Chakmaccp7121Chakmaiu785 Inuktitutfr7137Frenchiu6230 Inuktitutbn2181Banglaen2435Englishtr1636Turkishes6076Spanishccp6908Chakmael3360Greekar4926Arabicchr2380Cherokeechr6237Cherokeeiu3099 Inuktitutth1954Thaith4860Thaifr1231Frenchzh6996Chinesezh7033Chineseru2556Russianja3171Japaneseiu4765 Inuktitutsr5469Serbiantr5919Turkishel7696Greekth3526Thaitr834Turkishen6568Englishccp1974Chakmasr2856Serbianel7381Greeken6266Englishel110Greeken7660Englishzh3515Chinesezh7517Chinesetr959Turkishchr4468Cherokeear3102Arabicen1007Englishccp5701Chakmaar2910Arabicbn5240Banglaar1438Arabicchr2601Cherokeeja3632Japaneseel6109Greeksr4543Serbianja686Japanesetr5602Turkishchr1116Cherokeees7696Spanishar6304Arabicth4528Thaija1416Japaneseja3981Japanesebn1745Banglachr5889Cherokeear1881Arabicar3956Arabiciu5063 Inuktitutsr5132Serbianel6908Greekel7472Greekth1760Thaiel4680Greekzh3272Chinesezh6058Chineseru7056Russianchr4575Cherokeeth2453Thaith6140Thaiel2112Greekchr1834Cherokeefr1269Frenchzh3629Chinesear4425Arabicbn2502Banglasr4831Serbianth4044Thaiiu6187 Inuktituttr1987Turkishfr8058Frenchar6301Arabices1807Spanishccp4008Chakmachr5506Cherokeechr2416Cherokeeccp8053Chakmath332Thaitr1424Turkishes4044Spanishsr3286Serbianja2314Japaneseru5714Russianth212Thairu5371Russianiu3969 Inuktitutel6922Greekes5704Spanishiu3724 Inuktituteo1819 Esperantoth6000Thaichr4933Cherokeeel6133Greekes7914Spanishchr1612Cherokeebn3354Banglaiu6442 Inuktitutsr5925Serbianar2538Arabiciu4858 Inuktitutar421Arabiciu5599 Inuktitutsr2495Serbianbn3910Banglaen3329Englishen5257Englishth852Thaith1011Thaiar2477Arabicar4823Arabicru3843Russianzh1625Chineseru2214Russianth6896Thaitr4692Turkisheo4534 Esperantoccp7577Chakmaeo6086 Esperantoja7416Japaneseiu6316 Inuktituteo6232 Esperantoiu124 Inuktitutiu1045 Inuktitutja2367Japaneseru1925Russiansr5559Serbianth328Thaitr6920Turkishzh926Chinesezh1511Chinesezh5139Chinesechr1079Cherokeeel1746Greekzh5853Chinesetr7236Turkishsr2337Serbianfr6014Frenchth7613Thaiel4555Greekfr7182Frenchsr1157Serbianes4948Spanishtr1728Turkishth434Thaifr4495Frenchchr5545Cherokeeccp3703Chakmasr7616Serbianbn4406Banglafr6734Frenchtr7693Turkishth1993Thaitr7787Turkishtr7621Turkishiu4069 Inuktitutzh6950Chinesefr2154Frenchja7521Japanesear2519Arabicchr3576Cherokeesr1469Serbianbn3326Banglaar7709Arabicen4888Englishsr2630Serbianchr4212Cherokeeiu5357 Inuktitutchr3993Cherokeesr625Serbianiu4324 Inuktitutru6994Russianar3374Arabiceo426 Esperantozh8118Chineseccp2150Chakmaar4688Arabicar5899Arabicchr4551Cherokeeccp5768Chakmazh2131Chineseru4429Russianen5342Englishar2537Arabiczh2870Chineseiu7184 Inuktitutccp1081Chakmath6015Thaiiu3286 Inuktitutiu3671 Inuktituttr2488Turkishja2727Japaneseel616Greeksr2995Serbianeo7364 Esperantoen7854Englishchr5254Cherokeear2703Arabicbn4134Banglaja5702Japaneseel2079Greekru4197Russianth7197Thaiar4115Arabicccp112Chakmaccp5523Chakmafr5687Frencheo1812 Esperantosr7886Serbianel5076Greekth5171Thaiccp6656Chakmaeo5502 Esperantoth7725Thaieo1229 Esperantoen1217Englishes8128Spanishzh1325Chinesebn1157Banglath2136Thaien1365Englishbn6769Banglaccp4062Chakmatr6798Turkishar460Arabicccp2615Chakmafr87Frenchja4260Japanesesr2658Serbianja7787Japanesetr7603Turkishru5508Russianar59Arabicar7297Arabicbn879Banglabn2335Banglachr1596Cherokeees996Spanishiu404 Inuktitutiu2110 Inuktitutfr6252Frenchiu4532 Inuktitutccp1871Chakmasr4329Serbianccp3634Chakmasr7031Serbianes4695Spanishes2573Spanishtr5076Turkishtr6274Turkishes6953Spanishar1883Arabicen5753Englishel6622Greekfr5626Frenchiu6440 Inuktitutru5693Russianeo8126 Esperantoes5390Spanishccp7480Chakmael5857Greekfr3668Frenchtr4249Turkishel7894Greekes6365Spanishsr628Serbianes4956Spanishel875Greekel1564Greeken3859Englishru3382Russianfr1202Frenchbn6546Banglachr2915Cherokeeel3283Greekfr7579Frenchfr4067Frenchbn7896Banglaeo3203 Esperantoja1873Japanesesr1424Serbianbn6943Banglael7843Greeken3122Englishfr7197Frenchsr7237Serbianth1130Thaibn6119Banglaes5082Spanishsr4106Serbiantr5089Turkisheo1211 Esperantochr1178Cherokeeen5902Englishes379Spanishar3833Arabicja5224Japanesesr583Serbiansr2155Serbianccp7402Chakmaen7586Englishfr5219Frenchja6681Japaneseru853Russianru465Russianja2819Japaneseel4102Greekzh583Chinesezh3463Chineseel7467Greekeo7755 Esperantoes1740Spanishes7384Spanishccp1423Chakmaccp891Chakmaccp5095Chakmaja780Japanesear7382Arabicru304Russianth3066Thaies4367Spanishtr1253Turkishchr2188Cherokeezh2309Chineseel974Greekiu1686 Inuktitutccp6214Chakmaes7194Spanishel6541Greekru2967Russianccp8135Chakmabn6849Banglaes3538Spanishiu6419 Inuktitutar5060Arabicar6415Arabicen2584Englisheo6525 Esperantotr2914Turkishth1990Thaiiu3875 Inuktitutsr404Serbianru5934Russiantr7257Turkishes1315Spanishel5103Greekeo5683 Esperantoccp2080Chakmaiu7038 Inuktitutchr5524Cherokeefr3223Frenchja7818Japanesezh7408Chinesefr460Frenchja3581Japaneseeo7163 Esperantotr2343Turkishar6868Arabicel1526Greekar2787Arabiciu1057 Inuktitutiu3566 Inuktitutth642Thaith3502Thaien1468Englishar3919Arabiceo6545 Esperantoen5344Englishsr1802Serbianes2450Spanishtr6078Turkishzh1869Chinesear6903Arabicsr4930Serbiansr1898Serbianar5339Arabiczh8038Chineseja4999Japaneseiu6540 Inuktituteo7710 Esperantoes7676Spanishzh750Chinesebn2934Banglael6213Greekfr1237Frenchfr6183Frencheo491 Esperantochr1595Cherokeeiu3143 Inuktitutth2439Thaiar8067Arabicel6950Greekiu702 Inuktitutzh4386Chinesees7863Spanishiu307 Inuktitutiu6381 Inuktitutccp981Chakmaeo1029 Esperantoru3610Russianar2592Arabicen1666Englishar1700Arabicru3222Russianiu23 Inuktitutes3874Spanishes5204Spanisheo5479 Esperantosr826Serbianfr488Frenchfr2261Frenchfr7482Frenchzh6319Chineseeo1619 Esperantoiu3097 Inuktitutsr2989Serbiantr1472Turkishel3183Greekfr6660Frenchchr2056Cherokeeen4660Englishja6580Japanesetr1148Turkishzh5223Chineseiu2512 Inuktitutel1607Greekzh6068Chinesebn5254Banglafr359Frenchsr3000Serbianja3098Japaneseja6019Japaneseja5861Japanesear7406Arabictr7702Turkishja172Japanesear5420Arabicfr5590Frenchja7278Japanesees7086Spanishth4576Thaith3875Thaibn6441Banglaen2579Englishel4440Greekchr511Cherokeeel7806Greekeo7986 Esperantofr7161Frenchsr648Serbianchr3749Cherokeeru4137Russianes1526Spanishar6728Arabicen5177Englishsr5541Serbianar2659Arabicel2708Greeken6097Englishen6828Englishes6259Spanishth3240Thaizh6731Chineseiu4266 Inuktitutbn6968Banglaes7298Spanishes3836Spanishccp109Chakmachr263Cherokeeen1438Englishiu871 Inuktitutru4169Russianru2427Russianzh1213Chinesefr958Frenchtr438Turkishen8068Englishchr5654Cherokeeeo1455 Esperantoes899Spanishes6543Spanishiu961 Inuktitutes3540Spanishja7335Japanesesr1677Serbianth2374Thaibn4941Banglasr2068Serbianel6977Greekes476Spanishja4543Japanesechr7528Cherokeeeo308 Esperantofr748Frenchfr2772Frenchbn6361Banglafr1935Frenchth6755Thairu5212Russianar3564Arabicfr1569Frenchfr4448Frenchsr3484Serbianccp7539Chakmaeo4184 Esperantoiu7258 Inuktitutth6011Thaitr2406Turkishja1014Japanesetr92Turkishsr7186Serbianar1238Arabicth2611Thaiiu4319 Inuktitutiu4856 Inuktitutja6180Japanesesr3513Serbianfr4676Frenchchr6754Cherokeebn5753Banglaiu7298 Inuktitutth2627Thaifr2461Frenchfr3045Frenchru1405Russianth4059Thaies119Spanishfr6874Frenchsr4503Serbianth3606Thaiccp5437Chakmaru3697Russianth7457Thaitr3502Turkishbn6904Banglasr1555Serbianja1815Japaneseja5101Japanesetr5463Turkishth2163Thaiel3768Greekar3272Arabicel4283Greekar2236Arabicfr1294Frenchzh5406Chineseth1164Thaisr2572Serbianbn4046Banglaru1127Russianbn538Banglaccp6366Chakmaen6811Englishes6409Spanishth6077Thaizh7413Chineseccp6052Chakmael567Greekfr6883Frenchccp921Chakmaru5026Russiansr6884Serbianbn7412Banglaen4692Englishiu7742 Inuktitutbn6111Banglatr7753Turkishzh4Chinesesr7882Serbianfr164Frenchth2738Thaiccp8013Chakmachr3603Cherokeebn325Banglaar504Arabicar989Arabices7733Spanishru1788Russianzh4044Chineseen7937Englisheo1599 Esperantoja2530Japaneseel5971Greekel2740Greekel3760Greekzh3768Chineseth4689Thaieo3551 Esperantobn7521Banglafr5542Frenches6205Spanishfr6443Frenchar6976Arabicbn2172Banglaar6316Arabiciu1170 Inuktitutar6575Arabicbn7525Banglaeo1267 Esperantoes1664Spanishiu6748 Inuktituten7693Englishel1688Greekccp3142Chakmaes7804Spanishchr954Cherokeeja174Japaneseth93Thaichr6626Cherokeeru627Russianfr107Frenchth3849Thaies1034Spanishchr2121Cherokeeru7041Russianfr4049Frenchja4459Japanesezh738Chinesezh91Chineseeo5208 Esperantochr546Cherokeees7150Spanishja1714Japaneseel7575Greekes5375Spanishchr1507Cherokeeru1765Russianzh1763Chineseth7745Thaiel918Greekchr4138Cherokeefr3339Frenchccp6022Chakmaen1521Englishiu3138 Inuktitutja2526Japanesefr7977Frenchsr3431Serbianiu6432 Inuktitutchr6324Cherokeeth7434Thaizh7840Chinesesr4169Serbiantr242Turkishar7796Arabices5745Spanishru4890Russianfr1930Frenches6644Spanishbn1181Banglachr6510Cherokeebn3117Banglaen1559Englishru7899Russiantr1268Turkishtr5826Turkishchr2756Cherokeeth6861Thaibn5202Banglaiu3698 Inuktituttr7733Turkishzh6452Chineseccp6970Chakmaes3690Spanishtr8068Turkishbn6038Banglaiu1311 Inuktitutel7276Greekel2493Greekfr85Frenchiu7570 Inuktituttr5771Turkishen3587Englishru3620Russianth3267Thaiccp6150Chakmaja2398Japaneseth1906Thaitr21Turkishsr1713Serbianel5921Greeken2100Englishja2184Japaneseel7218Greekes5151Spanishth7118Thaiccp7730Chakmaes375Spanisheo4415 Esperantofr6445Frenchja3600Japanesebn4093Banglaen2606Englishar4308Arabices3772Spanishar162Arabicccp1890Chakmachr5444Cherokeeru3326Russianccp509Chakmachr717Cherokeees2756Spanishru4425Russianen5071Englishsr2221Serbianes7504Spanishzh222Chineseeo5439 Esperantoru5801Russianth2682Thaieo1480 Esperantoeo7743 Esperantoar78Arabicar5806Arabicen5235Englishchr317Cherokeesr6322Serbianth6525Thaiel369Greektr8116Turkishsr3214Serbianes7256Spanishbn5307Banglaccp1961Chakmaiu244 Inuktitutel757Greeksr4519Serbianth7222Thaiccp7900Chakmaen7930Englishes3077Spanishccp1830Chakmasr7851Serbianes1168Spanishccp5782Chakmath7311Thaibn932Banglachr7450Cherokeeen3897Englishtr7747Turkishfr3953Frenches7064Spanishru416Russianccp3330Chakmaccp2536Chakmaru4032Russianiu680 Inuktitutzh2937Chinesebn3784Banglachr2128Cherokeeccp6413Chakmabn1262Banglaiu8081 Inuktituteo6826 Esperantochr7093Cherokeesr7823Serbianchr7364Cherokeeel7096Greektr4211Turkishen3310Englishar3113Arabiceo5382 Esperantoes3515Spanishth2641Thaieo5060 Esperantozh3517Chinesear2998Arabiceo5341 Esperantoja2966Japaneseru1474Russianja5631Japanesezh5065Chineseru6242Russianru7199Russianes7693Spanishiu7675 Inuktitutes1338Spanishsr541Serbianeo2764 Esperantoja3533Japanesechr3363Cherokeesr5011Serbianru6854Russiantr6659Turkisheo266 Esperantoiu6483 Inuktitutzh4601Chinesefr6946Frenchel825Greekzh7157Chinesechr5051Cherokeeen6720Englishru3616Russianar7279Arabicchr7896Cherokeear4184Arabicru3612Russianzh3930Chinesebn5675Banglaja1413Japanesebn1749Banglaru4071Russianja6599Japaneseel5650Greeken1599Englishen4956Englishbn382Banglaen7039Englisheo2601 Esperantoes5056Spanishbn3852Banglaes5159Spanishes6976Spanishccp4206Chakmaes7920Spanishel1896Greekfr1218Frenchiu6685 Inuktitutsr5575Serbianfr2712Frenchsr6821Serbiantr313Turkishzh3583Chinesebn4224Banglachr7710Cherokeeel6659Greekiu133 Inuktituteo7999 Esperantobn1296Banglaar1798Arabicfr1109Frenchar6513Arabices1973Spanishja3021Japaneseen3028Englishbn4355Banglaiu6019 Inuktituttr3259Turkishfr4838Frenchtr7252Turkishiu2534 Inuktitutar3894Arabicccp1427Chakmaru3018Russianchr5391Cherokeezh118Chineseen3413Englishccp1704Chakmaen5373Englishtr6463Turkishes7695Spanishzh1604Chinesees2744Spanishchr4373Cherokeebn3369Banglaar2319Arabicccp5257Chakmafr1432Frenchja1665Japaneseru7724Russiantr5553Turkishtr7268Turkishchr7918Cherokeesr6760Serbianfr7463Frenchbn833Banglaar2678Arabices6773Spanishar2823Arabiciu4145 Inuktitutar5519Arabicccp4041Chakmaes4505Spanishth6159Thaiiu4948 Inuktituttr1429Turkishccp889Chakmatr4880Turkishccp4098Chakmaes6161Spanishccp6266Chakmaiu5040 Inuktitutiu1345 Inuktituteo4802 Esperantoar929Arabiceo7301 Esperantoel3225Greekja1866Japanesesr4252Serbiantr5336Turkishsr7062Serbianfr73Frenchru7628Russianbn2512Banglaes7218Spanishes3743Spanishfr5220Frenchel1394Greekja8035Japaneseth3214Thairu3290Russianes1130Spanishsr6126Serbianth7807Thaiel4436Greekth7354Thaitr7558Turkishth5570Thaibn7973Banglatr4979Turkishel362Greekru7974Russianth5914Thaies1982Spanishccp6975Chakmachr4041Cherokeeccp2311Chakmath6999Thaieo6391 Esperantozh4791Chineseth3971Thaichr1702Cherokeees3934Spanisheo6093 Esperantoiu727 Inuktitutfr6833Frenchbn926Banglachr6955Cherokeeel2941Greekeo2709 Esperantoeo8004 Esperantobn7018Banglatr7932Turkishiu2786 Inuktituttr7243Turkishel112Greekja718Japanesear7152Arabicbn3454Banglasr6166Serbianth3322Thaiel5858Greekccp3536Chakmaru8159Russianes6944Spanishru566Russianzh6772Chineseccp2562Chakmaiu4371 Inuktitutchr6081Cherokeechr4013Cherokeeel5406Greekbn2444Banglasr6615Serbianar546Arabices3930Spanishel2567Greekja5391Japanesesr5395Serbianel4392Greekar12Arabicen730Englishja3334Japaneseth7306Thaibn7541Banglaeo6073 Esperantochr2716Cherokeezh4246Chinesebn7295Banglaar1142Arabicja1663Japaneseel5241Greekes8025Spanishzh1654Chinesesr8073Serbianth6715Thaifr8177Frenchiu3295 Inuktitutfr2127Frenchel2621Greektr1025Turkishth1769Thaifr3849Frenchbn8122Banglatr4764Turkishchr6912Cherokeesr324Serbianja6210Japaneseth583Thaizh3563Chineseen7975Englishes7480Spanishja325Japanesear6719Arabicar5900Arabicchr7115Cherokeeiu5650 Inuktituten4272Englishru5150Russianchr3892Cherokeezh5447Chinesebn6492Banglaja1179Japaneseth3600Thaith5824Thaichr3058Cherokeezh6420Chineseja536Japanesear4Arabices7379Spanishar1750Arabicbn252Banglasr4391Serbianes6285Spanishth5870Thaitr1206Turkishru7441Russianes5101Spanishfr7112Frenchbn6398Banglaja743Japaneseja1016Japaneseja7989Japanesear5189Arabicbn487Banglaiu6901 Inuktitutzh4004Chinesees5166Spanishja4127Japanesechr1625Cherokeeccp5184Chakmatr3238Turkishbn139Banglasr3339Serbianchr6383Cherokeechr3514Cherokeesr3780Serbiansr2724Serbianccp5094Chakmafr3779Frenchen4837Englishiu7887 Inuktitutsr68Serbianar3339Arabicja5188Japaneseen3575Englishbn2763Banglael5677Greeksr6458Serbianfr1577Frenchbn884Banglaen2142Englishar6652Arabicru2416Russiantr5809Turkishru3998Russianccp2698Chakmaru6281Russianeo1884 Esperantoth848Thaien4339Englishzh564Chinesezh1914Chineseth2179Thaizh4354Chineseel4751Greekth3905Thaiel2491Greekar6255Arabices1774Spanishiu7581 Inuktitutbn7940Banglaru4373Russianbn535Banglaru6849Russianccp1882Chakmaen3689Englishchr3117Cherokeetr2338Turkishes3032Spanishel7852Greekchr4198Cherokeeen7227Englishja4363Japaneseel7401Greekiu1976 Inuktituteo6379 Esperantofr5265Frenchth6104Thaiar7212Arabicth4030Thaieo6602 Esperantoru3066Russianru4673Russiansr6949Serbianeo2603 Esperantoen6933Englishzh1570Chineseru429Russiansr1071Serbianru1149Russianth2838Thaitr3622Turkishzh1001Chineseccp1530Chakmachr1559Cherokeeeo7501 Esperantobn5310Banglaiu4013 Inuktitutth4902Thaith1054Thaiiu6363 Inuktitutfr7546Frenchja6998Japanesebn1394Banglaru4843Russianen1670Englishar3792Arabicccp7984Chakmaen5292Englishtr8157Turkishru606Russianchr5103Cherokeeeo2294 Esperantofr2103Frenchja3495Japanesesr446Serbianen2730Englishtr705Turkishchr1718Cherokeeeo1270 Esperantoiu6142 Inuktitutja3003Japanesetr624Turkishzh3209Chinesezh6867Chineseru4773Russianes5145Spanishtr1142Turkishccp832Chakmazh1971Chinesear1767Arabicsr1491Serbianbn5265Banglachr3667Cherokeeel2654Greekiu6413 Inuktitutccp6791Chakmatr5518Turkishzh1823Chinesechr3662Cherokeeel2733Greekeo7453 Esperantoccp3961Chakmaen8093Englishfr354Frenchru881Russianes3876Spanishja259Japanesees573Spanishccp6952Chakmaen1816Englishccp7163Chakmaiu3816 Inuktitutru1592Russianel5222Greekeo6107 Esperantoccp6979Chakmabn3415Banglaja463Japaneseru2637Russianar922Arabiczh1685Chinesechr7042Cherokeeel3821Greekbn2962Banglael3316Greekth3367Thaien929Englishar4870Arabices1712Spanishel7850Greekel483Greeken5670Englishiu795 Inuktitutccp1126Chakmasr901Serbianel4939Greeken5203Englishchr8182Cherokeefr847Frenchja2778Japanesetr5556Turkishfr4133Frenchar6739Arabicth7154Thaitr7427Turkishja8147Japaneseccp1208Chakmachr1087Cherokeeen5749Englishel4554Greekel5533Greekru2127Russianeo3363 Esperantoccp5960Chakmafr2348Frenchru2539Russianiu5370 Inuktitutja3920Japaneseru5911Russianar2023Arabicsr6290Serbianeo6461 Esperantosr6833Serbianth5689Thairu5542Russiansr1299Serbianbn3681Banglaiu6715 Inuktitutar1576Arabicchr3733Cherokeeiu1458 Inuktituteo415 Esperantobn2791Banglaen690Englishchr7285Cherokeefr2652Frenchth3464Thaiel3778Greekja6311Japaneseru1107Russiansr7266Serbiantr7377Turkisheo96 Esperantoiu7429 Inuktitutccp7131Chakmael1804Greekiu7527 Inuktitutru2472Russianja3489Japanesesr1244Serbianen6537Englishfr5610Frenches3802Spanishfr5673Frenchccp5020Chakmath1253Thaith2067Thaitr4233Turkishth3621Thaibn5665Banglazh4697Chineseel7897Greekth7602Thaiel7395Greekar3856Arabiciu102 Inuktitutja6746Japaneseja7306Japanesesr581Serbianfr4861Frencheo2229 Esperantoar2464Arabictr1100Turkishja1401Japanesees7680Spanishfr761Frenchccp3315Chakmath1307Thaibn3155Banglasr5422Serbianth2384Thaiar4463Arabicbn6745Banglaccp1571Chakmath2788Thaija7725Japaneseiu637 Inuktituteo7340 Esperantozh5992Chinesezh5156Chineseja2040Japanesezh215Chineseru4711Russiantr324Turkishth4659Thaiar4356Arabices1945Spanishsr5094Serbiantr7629Turkishbn2572Banglachr6930Cherokeeen6256Englishbn2562Banglaccp5226Chakmael6057Greekeo3130 Esperantofr4375Frenchja2770Japaneseth1512Thairu7188Russianel3221Greekth3923Thaizh8172Chineseiu2837 Inuktitutbn6066Banglabn6302Banglaen7170Englishzh1081Chineseja1835Japanesezh2919Chineseel7917Greekiu5313 Inuktitutsr4742Serbianru4440Russiansr451Serbianzh1741Chinesesr2960Serbiantr7938Turkishru6996Russianth3315Thaien5407Englishccp7465Chakmaiu361 Inuktituten1154Englishbn431Banglachr2127Cherokeees7107Spanishfr2768Frenchru2046Russianja3961Japanesechr1503Cherokeeru3384Russianru7811Russianes2877Spanishel892Greeksr3774Serbianzh1790Chineseiu5593 Inuktitutzh3973Chineseel5973Greekeo64 Esperantoes5244Spanishccp3368Chakmaeo1999 Esperantoar3950Arabicja976Japaneseja7462Japaneseccp8085Chakmachr1502Cherokeeiu198 Inuktitutzh5686Chinesechr3137Cherokeeel1376Greeksr1022Serbianeo7442 Esperantochr2991Cherokeees6384Spanishccp3735Chakmaiu5972 Inuktitutiu5235 Inuktituttr5209Turkishzh3022Chinesezh5500Chineseiu5358 Inuktituteo3499 Esperantosr2361Serbiantr1357Turkishzh3260Chineseen3014Englishen4897Englishel5924Greekbn4614Banglael6362Greekru7862Russianiu2254 Inuktitutru4642Russianccp2296Chakmabn6936Banglabn7297Banglael3099Greekfr3850Frenchiu8010 Inuktitutar2195Arabicel3820Greeksr4355Serbiantr2503Turkishja3456Japanesear5949Arabicsr5197Serbiansr72Serbianbn400Banglafr1305Frenchar6436Arabicchr1051Cherokeeru2563Russianbn99Banglaar6858Arabicccp5879Chakmafr4689Frenchiu3537 Inuktituten5109Englishth7882Thaija2740Japanesechr5323Cherokeefr1583Frenchzh5324Chinesefr7366Frenchbn4688Banglazh4280Chinesezh406Chinesear3711Arabicchr4650Cherokeeen2064Englishes1654Spanishja6838Japanesechr6462Cherokeechr6583Cherokeefr6150Frenchth3439Thaieo974 Esperantoccp719Chakmael1959Greekzh6991Chineseccp7127Chakmaccp5041Chakmaen7301Englishes6503Spanishbn8018Banglatr3690Turkishzh6948Chineseccp5015Chakmaiu6727 Inuktituttr7521Turkishbn6728Banglael866Greekes1149Spanishes7338Spanishiu5375 Inuktitutel1864Greekfr1510Frenchtr3519Turkishzh3938Chineseru1323Russianfr5891Frenchen3832Englishen8064Englishes4388Spanishchr4709Cherokeeel3953Greekja3129Japaneseja3407Japaneseru7002Russianru6711Russianen2086Englishth3728Thaija676Japanesebn1384Banglazh741Chinesetr1399Turkishchr7400Cherokeeru6965Russianfr1563Frenches7405Spanishsr5694Serbianru6734Russianar4985Arabiceo3163 Esperantoes3592Spanishccp3647Chakmabn8077Banglaes6877Spanishfr1418Frenchtr643Turkishar7259Arabicar3755Arabicbn7792Banglaccp6165Chakmatr2936Turkishtr3432Turkishja6697Japanesefr7872Frenchtr3132Turkishel1622Greekeo2763 Esperantoiu1089 Inuktitutja549Japanesebn2727Banglafr1341Frenchiu3157 Inuktituttr5319Turkishru1006Russianchr5864Cherokeeel1102Greeksr1027Serbianth4110Thaies5454Spanishru2204Russianru6363Russianel3048Greekar3053Arabicar6742Arabicja4230Japanesees98Spanishsr2501Serbianfr8064Frenchth2076Thaiel839Greekiu1309 Inuktitutbn7023Banglael5043Greeken2955Englishbn2280Banglaen4357Englishsr6954Serbianeo3466 Esperantozh55Chinesebn6482Banglaen7288Englishiu7446 Inuktitutja5234Japanesebn5390Banglaru1537Russianccp632Chakmaccp5940Chakmaar6902Arabicsr7979Serbianes6413Spanishbn3839Banglath7066Thaiar2011Arabicja5388Japaneseeo6341 Esperantochr5406Cherokeezh6378Chineseiu6320 Inuktitutchr7030Cherokeetr7819Turkishar827Arabiciu6859 Inuktitutes4195Spanishsr5166Serbiansr5367Serbianccp7705Chakmael3741Greekfr5614Frencheo5644 Esperantoen168Englishtr4572Turkishth4899Thaifr4465Frenchtr5139Turkishzh3678Chinesefr2786Frenchen521Englishbn3913Banglabn442Banglatr2458Turkishccp6874Chakmael7027Greekja3639Japanesezh5192Chineseeo3613 Esperantoes1739Spanishja7105Japanesear1194Arabicar7483Arabicen1720Englisheo3657 Esperantoru775Russianccp1213Chakmael7955Greekru1367Russianes5701Spanishzh1202Chinesechr1299Cherokeeel7921Greeken7123Englishth2057Thaien7972Englishfr2580Frenchzh1405Chinesezh4926Chineseen2981Englishen7598Englishar4398Arabicar2670Arabicfr5651Frenchzh605Chinesezh5566Chinesechr3714Cherokeeth7770Thairu1007Russianes4633Spanishfr2201Frenchccp777Chakmaar2640Arabiceo4844 Esperantosr2277Serbianar4043Arabictr1474Turkishru5237Russianchr6311Cherokeees321Spanishen2269Englishth7106Thaien4952Englishel6252Greekru3593Russiantr3400Turkishel3697Greekiu7020 Inuktituten508Englishfr5676Frenchen173Englishsr3005Serbianfr7997Frenchsr5470Serbianar6030Arabiciu2494 Inuktitutbn4783Banglath3954Thaiccp1482Chakmatr232Turkishiu3188 Inuktitutru422Russianes1171Spanishccp2105Chakmasr7145Serbianar5230Arabiceo1250 Esperantoel3841Greeken6143Englishes2345Spanishru3323Russianfr6331Frenchel2422Greekzh7738Chinesebn747Banglasr7835Serbianbn4185Banglabn5487Banglaja5115Japaneseja3669Japanesechr131Cherokeesr2101Serbianzh1972Chineseccp6095Chakmatr1642Turkishel1836Greekeo2093 Esperantosr4822Serbiansr4688Serbianth5313Thaieo1448 Esperantosr4691Serbianar2559Arabicccp1156Chakmael4272Greekar4711Arabiceo7963 Esperantoeo4170 Esperantozh986Chineseja196Japanesees1020Spanishja716Japanesetr4961Turkisheo5822 Esperantoru817Russianel5099Greekth547Thaien2463Englishja3858Japaneseru7273Russiansr4170Serbianen5973Englishtr4683Turkishru1070Russianth2721Thaichr7666Cherokeeccp2680Chakmaeo6613 Esperantochr7396Cherokeeen769Englishru4882Russiantr7746Turkishja4849Japanesebn4435Banglabn5146Banglaru2262Russiantr1393Turkishiu6626 Inuktitutiu232 Inuktitutiu949 Inuktitutiu7980 Inuktitutru8059Russianccp5886Chakmaes1424Spanishsr7358Serbianes6743Spanishru7664Russianiu524 Inuktitutes7444Spanishccp5657Chakmael3886Greektr4698Turkishen5371Englishccp3606Chakmasr241Serbianccp3684Chakmachr869Cherokeear1623Arabiceo851 Esperantofr6563Frenchar1337Arabiceo5446 Esperantoen7186Englishja4829Japanesechr4023Cherokeeccp1724Chakmatr2618Turkishel315Greekeo882 Esperantoru7539Russianru8127Russianccp4641Chakmafr5351Frenchel4987Greeksr3426Serbianiu6758 Inuktitutes5716Spanishchr3581Cherokeefr2106Frencheo2156 Esperantochr2978Cherokeechr7414Cherokeeth3211Thairu6572Russianzh3854Chinesear3784Arabiczh2665Chinesechr2278Cherokeeja2381Japanesefr505Frenchfr5830Frenchel3114Greekfr7063Frenchsr6534Serbianel7070Greekzh823Chineseen6211Englishccp1549Chakmabn5121Banglaeo4253 Esperantozh7257Chinesechr81Cherokeeel4525Greekth4582Thaien1295Englishiu4843 Inuktitutru972Russianth5465Thaibn4060Banglachr6694Cherokeeel4954Greekfr7140Frenchja7082Japanesezh2740Chineseccp1747Chakmafr5780Frenchchr2709Cherokeechr4049Cherokeeru3141Russianru1955Russianen5977Englishel7823Greeksr5426Serbianru6326Russiantr3448Turkishar6087Arabicchr4573Cherokeefr2229Frenchzh1982Chineseccp3326Chakmaen1398Englishbn774Banglachr6695Cherokeeel8083Greekes4838Spanishru7817Russianru2840Russiantr8165Turkishtr5896Turkishzh2424Chinesechr3044Cherokeeel3759Greekru5683Russianth7744Thaiccp7926Chakmaccp476Chakmafr5616Frenchsr844Serbianccp4175Chakmael5889Greekzh1462Chinesezh5227Chinesesr7148Serbianth5126Thaiiu7168 Inuktituten870Englishen653Englishel6635Greekth1846Thaisr3844Serbianth2278Thaies7273Spanishar717Arabicen7596Englishiu6070 Inuktitutchr6860Cherokeeru2070Russianbn6053Banglaja7928Japaneseth153Thaichr7127Cherokeeru6625Russianen1651Englishtr3382Turkishccp6517Chakmachr6904Cherokeeccp779Chakmaen4138Englishar656Arabicth4882Thaiccp3217Chakmazh4290Chinesetr3236Turkishchr6356Cherokeeiu5130 Inuktitutzh4338Chineseru1352Russianeo6101 Esperantobn3545Banglachr215Cherokeeccp2514Chakmath4833Thaitr4021Turkishes284Spanishsr4127Serbianth2934Thaiccp6836Chakmatr2801Turkishsr3815Serbianccp2893Chakmachr5069Cherokeeru6056Russianzh1267Chinesear4868Arabicth5658Thaiiu504 Inuktitutar4826Arabicbn4128Banglaen2886Englishth4493Thaizh485Chinesear6168Arabictr4093Turkishsr5380Serbianbn6061Banglaen2664Englishccp5816Chakmachr5932Cherokeeiu2831 Inuktitutja4054Japaneseth1183Thaisr7531Serbianccp8084Chakmaja4173Japanesesr2267Serbianth3252Thaith1254Thaiar7027Arabicchr631Cherokeetr2114Turkishccp5081Chakmaen1332Englishar950Arabicbn6768Banglatr4390Turkishel4441Greekzh1094Chineseen5263Englishja5084Japaneseth1643Thaichr7968Cherokeefr2093Frenchja1142Japanesesr935Serbianen932Englishru1330Russianbn3064Banglaen5368Englisheo7962 Esperantoar7892Arabicbn6657Banglachr1241Cherokeeeo6416 Esperantobn2542Banglaen2845Englishfr5694Frenchccp1634Chakmael2947Greekccp7019Chakmaen4381Englishth7985Thaies7837Spanishfr5182Frenchiu7078 Inuktitutth2954Thaichr1284Cherokeetr3964Turkisheo1390 Esperantoel5930Greeksr941Serbianccp327Chakmaeo5422 Esperantoeo6382 Esperantoel6203Greekiu4714 Inuktituteo6770 Esperantoja7469Japaneseth850Thaifr755Frenchja4083Japanesesr209Serbianth7466Thaizh7086Chinesesr3233Serbianth7875Thaiccp3035Chakmaru4808Russianfr23Frenchsr3690Serbianth6666Thairu2157Russianel1317Greekchr5675Cherokeeccp677Chakmachr7777Cherokeeiu3236 Inuktitutes1576Spanishbn1335Banglath2110Thaiar2584Arabicbn5148Banglaja7482Japaneseth736Thaibn5614Banglasr3537Serbianccp1308Chakmaccp7336Chakmachr3586Cherokeechr4036Cherokeeel5778Greekeo327 Esperantoes3439Spanishzh5093Chineseja4310Japaneseru854Russianth1586Thaiccp3998Chakmael5359Greekiu7898 Inuktitutes4213Spanishes7861Spanishja3088Japanesezh6799Chineseccp5954Chakmaeo2025 Esperantoel2235Greekth7160Thaizh5303Chineseel2814Greeksr6689Serbianar6099Arabicsr2274Serbianel6480Greekbn570Banglatr2495Turkishel1482Greektr2909Turkishru1630Russianbn6655Banglazh2228Chineseja4340Japanesear3448Arabicchr2170Cherokeeeo2428 Esperantoes5751Spanishar3917Arabicen7401Englishbn4857Banglael4479Greekzh2831Chineseen3419Englishzh5438Chinesear7827Arabices6774Spanishtr4943Turkishes1026Spanishth5449Thaieo4758 Esperantoeo6783 Esperantoru6333Russianru3883Russianth6712Thaizh4596Chineseel7126Greekth7420Thaiar2784Arabicsr3013Serbianiu2402 Inuktitutja908Japanesees2992Spanishiu1331 Inuktitutiu2921 Inuktitutth7065Thaifr3960Frenchsr7092Serbianru6095Russianbn4633Banglael2931Greekar7831Arabicccp4578Chakmazh2133Chineseru776Russiansr7794Serbiantr7012Turkishbn2468Banglaen313Englishsr7455Serbiantr2313Turkishel2790Greekeo3352 Esperantoen3303Englishtr3182Turkishiu5735 Inuktitutiu935 Inuktitutccp1695Chakmaeo3009 Esperantofr2547Frenchsr3944Serbiantr1756Turkishar5220Arabicccp6243Chakmabn7943Banglaiu3788 Inuktitutzh4959Chineseiu197 Inuktitutiu4667 Inuktitutel5060Greeken2389Englishar1149Arabiceo614 Esperantoar551Arabiciu5456 Inuktitutccp4962Chakmaiu2806 Inuktitutes7591Spanishiu1617 Inuktitutar7951Arabicfr6497Frenchccp5700Chakmafr5120Frencheo3636 Esperantoar4241Arabiceo2725 Esperantofr7750Frenchja5721Japaneseeo7591 Esperantoes3844Spanishchr3858Cherokeees6948Spanishchr400Cherokeeccp1041Chakmaeo4109 Esperantoiu5769 Inuktitutth6685Thaiel419Greekchr7682Cherokeebn2975Banglaar4247Arabiciu2442 Inuktitutth5530Thaiel2660Greekel2697Greekth5114Thaitr509Turkishel5261Greekchr614Cherokeefr111Frenchfr7378Frenchiu3048 Inuktitutth3307Thaiel1466Greekbn2180Banglabn5944Banglachr6213Cherokeear7555Arabiceo5201 Esperantoes3284Spanishsr2694Serbianccp5933Chakmabn2394Banglazh7515Chineseel3555Greekccp7467Chakmaes4539Spanishes4985Spanishtr2895Turkishfr7082Frenchth872Thaifr4924Frenchar7985Arabiciu399 Inuktitutiu2604 Inuktitutiu6935 Inuktitutth2047Thaies2103Spanisheo7382 Esperantoeo7705 Esperantoth7182Thaibn44Banglaja1128Japaneseru5217Russianbn55Banglazh5731Chinesetr6528Turkishiu1102 Inuktituteo2864 Esperantoel4219Greekzh2751Chineseen7118Englishzh609Chinesetr7186Turkisheo6743 Esperantoeo7890 Esperantoes2112Spanishen5576Englishar2046Arabicja3478Japaneseiu5625 Inuktitutar5989Arabicru2914Russianfr2353Frenchfr1802Frenches2748Spanishbn1582Banglazh4143Chineseen4618Englishen5188Englishel1090Greekbn5244Banglaeo4168 Esperantoth715Thaija1125Japanesechr4834Cherokeeja3323Japaneseru7820Russianth5642Thaizh28Chinesear5310Arabicsr4999Serbianen6725Englishru3661Russianbn2275Banglaen1224Englishchr4343Cherokeeja5321Japanesees1481Spanishtr2830Turkishen3739Englishiu674 Inuktitutccp3120Chakmaccp7800Chakmael6815Greekja214Japanesetr1092Turkishiu693 Inuktituttr3407Turkishru7223Russianru7351Russiansr2416Serbianccp2686Chakmachr2529Cherokeebn1209Banglabn2387Banglaccp2546Chakmachr522Cherokeeru3547Russianzh1996Chineseiu1695 Inuktitutchr4794Cherokeeth5159Thaiiu6277 Inuktitutar5287Arabicru50Russianzh2129Chineseccp2313Chakmael6402Greektr6311Turkishbn22Banglabn7845Banglaja447Japanesechr8075Cherokeefr6361Frenchru4803Russianchr2859Cherokeeiu4254 Inuktitutzh1716Chineseiu1211 Inuktitutar7752Arabices328Spanishfr590Frenchbn6930Banglaen4555Englishru3005Russiantr6803Turkishes5957Spanishchr220Cherokeeccp1520Chakmachr1268Cherokeear4332Arabicchr4267Cherokeeel7312Greekeo7953 Esperantoen4347Englishel5206Greekfr2501Frenchen4119Englishru4234Russianar6798Arabicru2759Russianeo3245 Esperantoth2099Thaiar2180Arabicth3696Thaieo241 Esperantofr7701Frenchzh6752Chineseiu1096 Inuktitutiu4864 Inuktitutth4539Thaith6168Thaiar5585Arabicth90Thaichr257Cherokeeel5962Greekccp371Chakmaja2643Japanesefr30Frenchzh229Chinesefr7376Frenchfr7796Frenchchr3685Cherokeeccp7053Chakmath2158Thaiccp7287Chakmachr4810Cherokeebn2306Banglabn6225Banglaar64Arabicchr726Cherokeebn6453Banglael2042Greekchr6289Cherokeeel5201Greektr1510Turkishtr7802Turkishru5157Russianbn1867Banglaes2965Spanishtr5710Turkishel7885Greekel7206Greekccp607Chakmafr3237Frenchchr4302Cherokeeru6510Russianth5801Thaifr2400Frenchen6845Englishsr863Serbianzh2885Chinesesr4447Serbianiu266 Inuktituttr2501Turkisheo5397 Esperantotr2790Turkishel5714Greekzh375Chinesechr4397Cherokeear939Arabicfr2288Frenchen13Englishru7944Russianbn6897Banglaiu1421 Inuktitutth5243Thaith7283Thaies1524Spanishsr387Serbianccp4462Chakmaja1786Japanesetr7842Turkishes1905Spanishchr8030Cherokeeeo6367 Esperantoru1782Russianen6030Englishes5103Spanishru5802Russiantr4323Turkishzh2201Chineseru2210Russianchr5954Cherokeeccp7296Chakmaes5505Spanishen5039Englishzh4217Chinesebn5232Banglaar2039Arabicen7845Englishiu1020 Inuktitutchr7905Cherokeeeo4392 Esperantoja5068Japaneseeo6180 Esperantobn7488Banglaccp7368Chakmafr7054Frenchsr3535Serbianar2981Arabiceo4934 Esperantoth4838Thaith2927Thaies4699Spanishen805Englishru1835Russianbn4980Banglath5673Thaiel7025Greekfr562Frenchel6956Greeken3945Englishzh4987Chineseiu628 Inuktituten757Englishar2208Arabicru4625Russianar6306Arabicru7663Russianes253Spanishzh8021Chineseeo8002 Esperantofr3205Frenchccp2712Chakmaru286Russianchr3330Cherokeees4494Spanishja1023Japaneseja5847Japaneseen4352Englishsr5126Serbianel7145Greekiu6529 Inuktitutfr3702Frenchar1970Arabicen6278Englishiu14 Inuktitutiu2855 Inuktitutar6637Arabicchr7029Cherokeeen5630Englishchr7324Cherokeees7793Spanishth5133Thaizh3883Chinesebn6966Banglath5696Thaies7032Spanishccp1026Chakmasr2254Serbianja4863Japaneseja340Japaneseiu6480 Inuktitutchr4625Cherokeees4066Spanishiu2628 Inuktitutja2952Japaneseccp7038Chakmachr1572Cherokeechr1408Cherokeear1107Arabicen7330Englishar1389Arabicth6162Thaiiu66 Inuktitutccp3186Chakmaar5963Arabicsr3255Serbianru2156Russiantr1387Turkishiu951 Inuktitutth4210Thaith6351Thaija1116Japanesezh7021Chineseen1103Englishbn1405Banglasr4168Serbianfr5016Frenchchr6837Cherokeefr1357Frenchar3766Arabicja6285Japanesetr7581Turkishiu3614 Inuktitutchr5201Cherokeear6555Arabicchr7724Cherokeechr7712Cherokeebn1238Banglath5310Thaifr6020Frenchbn3617Banglatr3962Turkishzh4757Chineseen7045Englishsr1883Serbianccp5240Chakmaen7960Englisheo6874 Esperantoel7499Greektr855Turkishel5572Greekru7160Russianfr7149Frenchel7352Greeken5331Englishja1223Japanesebn2526Banglaccp2054Chakmaru6559Russianes1309Spanishja1281Japaneseeo6068 Esperantochr5619Cherokeeiu6383 Inuktitutzh2902Chinesebn2480Banglazh3338Chinesetr5302Turkishccp5324Chakmatr4839Turkishiu2250 Inuktitutccp1583Chakmaes2526Spanishfr47Frenchar6207Arabicfr7079Frenchzh6786Chinesear5240Arabicbn7842Banglaccp3391Chakmafr6531Frenchar2229Arabictr7795Turkishja355Japanesear2098Arabicel8170Greekfr6406Frenchen7924Englishfr1914Frenchiu4459 Inuktitutzh3839Chineseiu7519 Inuktitutth6267Thaitr4591Turkishchr2997Cherokeeru2912Russianru3839Russiansr2431Serbiansr6989Serbianfr5063Frenchccp7652Chakmafr5462Frenchiu5200 Inuktitutth5925Thaibn4087Banglabn2378Banglaeo2377 Esperantosr4211Serbiantr6927Turkishtr887Turkishth986Thaiel7895Greekiu4477 Inuktitutar1478Arabicja1857Japaneseel2853Greekfr2764Frenches1294Spanishbn6920Banglaccp2877Chakmaar4964Arabiczh2120Chinesebn7080Banglachr6625Cherokeesr4535Serbianfr3295Frenchchr3516Cherokeetr246Turkishzh2784Chineseiu773 Inuktitutbn69Banglachr4950Cherokeesr5630Serbianbn5422Banglaes3488Spanishbn1624Banglath1930Thaizh4074Chinesebn1746Banglael7430Greekeo383 Esperantoar4982Arabicfr1531Frenchccp2740Chakmaja3641Japanesechr136Cherokeeel3414Greeksr5225Serbianbn990Banglabn7014Banglaru7151Russiantr4891Turkishbn4841Banglachr195Cherokeear4336Arabicel3080Greekel5388Greekfr8047Frenchja7742Japaneseru975Russianel1166Greekchr5206Cherokeebn5514Banglaccp3589Chakmatr5444Turkishth7382Thaibn7975Banglaiu516 Inuktituttr6285Turkishel562Greekru1523Russiansr3667Serbianes3420Spanishchr7699Cherokeeru7159Russiantr2785Turkishtr1276Turkishfr6716Frenchja5982Japanesechr1617Cherokeefr5733Frenchar2889Arabicru547Russianja2215Japaneseth5359Thaizh1946Chinesezh2356Chinesezh368Chinesebn6135Banglaeo764 Esperantozh5325Chineseel936Greekth106Thairu6951Russianth1485Thaith4765Thaies2281Spanishtr3818Turkishes7361Spanishja2739Japanesetr4201Turkishfr6216Frenchfr7409Frenchchr608Cherokeeru2542Russianfr2920Frenchzh7503Chinesetr7282Turkishiu2239 Inuktitutchr4638Cherokeeen1232Englishja3524Japanesebn3904Banglasr3328Serbianccp2130Chakmaiu450 Inuktitutes664Spanishtr6189Turkishel7822Greeken4526Englishja2783Japanesees2443Spanishfr3044Frenchfr7455Frenchru6492Russianar4143Arabicfr5147Frenchchr4509Cherokeesr6637Serbianja3654Japanesebn6742Banglachr7204Cherokeeru6620Russianar2122Arabiciu848 Inuktitutbn5435Banglaar1837Arabicel1895Greeken777Englishbn7572Banglaes2519Spanishfr2473Frencheo3231 Esperantoel8052Greeksr3873Serbianeo2406 Esperantoen7464Englishsr2812Serbianeo7990 Esperantofr4474Frenchbn6370Banglaes929Spanishes2432Spanishen7923Englishar2831Arabiciu551 Inuktitutar4275Arabicccp5767Chakmatr1940Turkishar7562Arabicel1756Greekchr2791Cherokeesr6477Serbianiu294 Inuktitutru6546Russianel5545Greekth4989Thaifr6140Frenchen6258Englishen1190Englishsr3236Serbianru6194Russianchr7134Cherokeeccp2042Chakmaes7184Spanishja7162Japaneseeo1512 Esperantosr2461Serbiantr2953Turkishzh1743Chineseja7987Japaneseen8133Englishccp746Chakmael7451Greeken4227Englishfr5321Frenchja891Japanesetr6400Turkishen5000Englishzh7777Chineseccp8072Chakmaar6662Arabiciu2634 Inuktituten7652Englisheo5399 Esperantoiu3962 Inuktitutru7534Russianchr4118Cherokeetr5945Turkishiu1983 Inuktitutru3204Russianja3678Japanesees1288Spanishel8184Greekiu6667 Inuktitutar6464Arabiczh260Chineseccp1537Chakmaru3310Russiansr5103Serbianchr6051Cherokeeja4530Japanesetr7464Turkishth5100Thairu3877Russianth6982Thaizh1004Chinesear6486Arabiciu612 Inuktitutes3988Spanishes6962Spanishth2009Thaien5449Englishth5109Thaiel7997Greekfr5386Frenches7566Spanishzh70Chinesechr4447Cherokeeru3397Russianen5164Englisheo2438 Esperantoccp5426Chakmaeo6478 Esperantozh7512Chinesear7635Arabices449Spanishsr7945Serbianen2394Englishccp5661Chakmazh2868Chineseru3123Russianth5378Thaisr7841Serbianja395Japanesefr4079Frenchzh4376Chineseel667Greekzh4872Chineseeo1104 Esperantozh7704Chinesezh5378Chineseiu5998 Inuktitutzh5684Chinesebn1706Banglael7557Greekja7985Japaneseru7897Russianeo4955 Esperantosr3608Serbianar4723Arabicar3943Arabiceo7011 Esperantoel7877Greekeo2992 Esperantoccp8171Chakmaiu1411 Inuktitutiu553 Inuktitutja2204Japaneseja5882Japaneseeo25 Esperantoiu1652 Inuktitutes4298Spanishth4574Thaith3941Thaitr2833Turkishfr3745Frenchbn2440Banglael4776Greekel7804Greekja6827Japaneseru5967Russianen6523Englishru7822Russianccp6804Chakmaen6634Englishccp4533Chakmael3722Greekes2082Spanishchr254Cherokeees963Spanishth6488Thaiel6199Greekzh1793Chinesezh4643Chineseen6988Englishfr358Frenchtr7919Turkishja7834Japanesezh517Chineseeo1218 Esperantoth7956Thaieo3353 Esperantoeo6586 Esperantofr1298Frenchiu3679 Inuktitutru2237Russianfr6068Frenchccp8158Chakmaar7060Arabicsr1636Serbianeo4091 Esperantoeo3750 Esperantoiu4884 Inuktitutsr502Serbianbn3621Banglaeo646 Esperantoes7618Spanishel6017Greekja3975Japanesetr2890Turkishtr7654Turkishchr5786Cherokeezh1795Chinesebn5362Banglaen5199Englishth2178Thaitr970Turkishiu3055 Inuktitutes4315Spanishar2682Arabiceo3716 Esperantoth6229Thaisr7484Serbianth3706Thaiiu5783 Inuktitutel417Greekzh2977Chinesear5972Arabicar7578Arabicfr1493Frenchar4742Arabicccp5314Chakmaja6457Japanesebn5440Banglaru5698Russianccp5902Chakmazh1082Chineseru4276Russianen2788Englishsr2613Serbianccp4474Chakmael3596Greekbn1059Banglasr1592Serbianth7691Thaiiu1924 Inuktitutchr6423Cherokeebn6736Banglasr5867Serbianzh4047Chinesees4707Spanishchr3944Cherokeeeo7081 Esperantofr4123Frenchsr214Serbianbn1666Banglael3913Greekchr2357Cherokeeeo1537 Esperantoel5697Greekes7927Spanishru1012Russiantr7789Turkishtr8062Turkisheo3914 Esperantoth3347Thaichr4230Cherokeeja6464Japaneseccp5980Chakmath7033Thaitr6438Turkishel4961Greekru7764Russianiu1213 Inuktitutja1224Japaneseel6460Greekes4377Spanishen7783Englishccp144Chakmaar997Arabiciu5260 Inuktitutru3064Russianel1993Greekfr6431Frenchiu268 Inuktitutar8026Arabiceo1854 Esperantotr32Turkishchr2742Cherokeeru2255Russianchr7803Cherokeear3033Arabices1566Spanishbn1367Banglaiu4701 Inuktitutsr1940Serbianar832Arabicru799Russianth3814Thaiar2263Arabicbn1420Banglabn3955Banglaes1339Spanishes7866Spanishar2420Arabicja5787Japaneseel4606Greekchr719Cherokeezh3664Chinesezh7787Chinesefr6937Frenchar5327Arabicccp1681Chakmabn293Banglaen4643Englishru921Russianzh3111Chineseen4866Englishel3333Greeksr1673Serbianja1415Japanesefr7076Frenchar4141Arabicel2705Greekchr4591Cherokeeen456Englishru4965Russianzh6889Chinesebn7954Banglatr3787Turkishel7152Greeken7145Englishes3237Spanishen3230Englisheo7096 Esperantoes88Spanishiu5415 Inuktituteo1967 Esperantoar6526Arabicccp4529Chakmaru7330Russianchr4948Cherokeees7382Spanishru3750Russianth5650Thairu2649Russianeo4537 Esperantoiu5568 Inuktitutja1437Japaneseth4976Thaitr1577Turkishiu4637 Inuktitutth7978Thaifr5859Frenchfr3546Frenchccp4942Chakmaeo5155 Esperantoiu4593 Inuktitutth4793Thaichr1307Cherokeetr7912Turkishen3165Englishccp1964Chakmaja4455Japaneseiu3380 Inuktitutchr5463Cherokeezh5492Chinesear6435Arabicel3963Greeken843Englishen4155Englisheo6809 Esperantoja154Japanesetr5448Turkishth2901Thairu506Russianzh3726Chinesees1822Spanishccp4717Chakmaeo2002 Esperantoeo2405 Esperantoth1092Thaizh4250Chineseccp4229Chakmael6769Greekja5013Japanesefr912Frenchtr2081Turkishel4698Greekru1138Russianchr3818Cherokeeen4613Englishja5408Japaneseccp4093Chakmael3540Greekes7025Spanishsr3326Serbianja7342Japanesefr5698Frenchru328Russianen5631Englishru7765Russianru4781Russianen56Englishar4839Arabicccp4203Chakmael6077Greeken6696Englishes5702Spanishru1320Russianchr5118Cherokeesr5620Serbianchr5944Cherokeeja846Japaneseja4800Japanesesr2648Serbiantr2257Turkishiu7697 Inuktitutar3202Arabicth1400Thaibn3533Banglaccp7342Chakmaru7671Russianar770Arabicchr6358Cherokeechr5018Cherokeefr5460Frenchth5667Thaifr5939Frenchth7120Thaija339Japaneseru1257Russianchr1804Cherokeefr3564Frenchth4563Thaien1455Englishchr7748Cherokeeeo2200 Esperantoiu4296 Inuktituttr7457Turkishfr274Frenchel7714Greekel4706Greekel8058Greekccp6706Chakmatr565Turkishbn7819Banglaes7484Spanishccp3183Chakmasr6737Serbiansr4Serbianen1792Englisheo5947 Esperantozh7599Chinesezh7703Chineseel6719Greektr4687Turkishar4539Arabicth2768Thaiccp2592Chakmaiu3206 Inuktitutes1399Spanishar1667Arabicfr3365Frenchfr6989Frenchzh7178Chinesebn6069Banglafr4717Frenchzh6693Chineseel3717Greeken8072Englishes7413Spanishiu6306 Inuktitutes7607Spanishbn1320Banglabn1339Banglaes5862Spanisheo6050 Esperantozh5552Chineseru6521Russiansr6168Serbianccp1266Chakmachr3169Cherokeeel5033Greekes4631Spanishchr3506Cherokeeiu503 Inuktitutccp2661Chakmasr4679Serbianes806Spanishtr5092Turkishiu4568 Inuktitutja6780Japanesees4205Spanishiu4611 Inuktitutbn5930Banglatr4635Turkishiu1245 Inuktitutru3352Russianccp7852Chakmaes2003Spanishchr7693Cherokeeen8099Englishel743Greekru2451Russianeo3814 Esperantobn1123Banglael991Greekeo5846 Esperantoccp1227Chakmaru5509Russiansr5992Serbiansr6749Serbiansr3630Serbianzh317Chineseru1929Russiantr996Turkishja6735Japaneseeo4124 Esperantoja3660Japaneseeo5575 Esperantoiu1469 Inuktitutbn3012Banglaru3828Russianel3761Greekzh136Chinesefr1399Frenchbn4454Banglachr4660Cherokeeiu1710 Inuktitutiu4848 Inuktitutes3494Spanishar3398Arabicth4161Thaiccp7723Chakmath5796Thaies2969Spanishja4904Japanesees7392Spanishth5280Thaija7257Japaneseth5155Thaizh3481Chinesear6535Arabiczh4032Chinesebn7804Banglatr1336Turkishen7715Englishccp544Chakmaes172Spanishfr2905Frenchel2778Greekel3150Greekel3682Greekfr786Frenchja4167Japanesees6790Spanishsr3440Serbiantr672Turkishzh3214Chinesechr2348Cherokeezh6460Chineseel2781Greekru5280Russianiu7024 Inuktitutel5894Greekzh961Chinesezh5534Chinesear5458Arabicel5831Greekes648Spanishtr2613Turkishtr7948Turkishiu106 Inuktitutfr7682Frenchja748Japaneseru2084Russiantr1546Turkishja1905Japanesebn4412Banglael2445Greekbn7184Banglaar8177Arabices7728Spanishes5111Spanishzh1798Chinesetr2456Turkishchr4280Cherokeefr1371Frencheo6375 Esperantoeo5629 Esperantoru2629Russianja7239Japanesesr1159Serbianes3123Spanishar7063Arabicchr2249Cherokeeja6466Japaneseth6841Thaiel2212Greekfr2399Frenchzh2068Chineseru1576Russianru6685Russianar430Arabiciu4844 Inuktitutth3716Thaichr7469Cherokeeel1127Greekar6596Arabicccp3762Chakmachr5288Cherokeeen520Englishen3115Englishbn5248Banglaccp3006Chakmachr1576Cherokeechr5982Cherokeesr6705Serbianth5782Thaifr1062Frenchar1200Arabicbn834Banglatr3627Turkishccp5725Chakmaar381Arabicth3939Thaien5720Englishfr5852Frenchccp1510Chakmaru8078Russianbn1020Banglath5713Thaith555Thaith4810Thaifr4141Frenchtr6818Turkishsr2208Serbianel684Greekel6698Greekth4681Thaieo6852 Esperantochr1695Cherokeeru819Russianar1597Arabicja6471Japanesesr7284Serbiansr2183Serbianccp4001Chakmafr6138Frenchiu5996 Inuktitutchr6258Cherokeeel7111Greekfr3425Frenchchr6158Cherokeeeo2948 Esperantoar5863Arabicar5069Arabicchr518Cherokeeeo7492 Esperantoth7055Thaija6351Japanesechr4221Cherokeeeo6336 Esperantoes5611Spanishzh6164Chineseiu5937 Inuktitutel1616Greeksr4651Serbianzh7980Chinesechr236Cherokeeth140Thaieo317 Esperantoes1994Spanisheo1991 Esperantozh6968Chineseen1104Englishccp8140Chakmasr949Serbianja7224Japanesezh7788Chineseccp5280Chakmaja7412Japanesefr6263Frenchiu263 Inuktitutsr5791Serbianzh2576Chinesechr5433Cherokeezh2839Chinesetr6582Turkishiu6176 Inuktitutsr1185Serbiansr3724Serbianel5423Greeksr2859Serbianel10Greekfr4278Frenches4627Spanishchr1833Cherokeechr4703Cherokeeja5383Japanesebn5563Banglaiu5348 Inuktitutth4489Thaien7363Englishja2959Japanesefr1634Frenches1065Spanishru6105Russiansr2695Serbianes191Spanishccp3079Chakmasr7852Serbianar788Arabicen2710Englishes2019Spanishsr5153Serbianbn3355Banglael768Greekeo928 Esperantofr8168Frenchru3193Russianel8007Greekth2633Thaith814Thaith7166Thaiar6327Arabicchr3997Cherokeeiu6823 Inuktitutth6014Thaies3028Spanishar6064Arabicccp4374Chakmael5373Greekchr6730Cherokeeen7463Englishiu1643 Inuktitutru4753Russianar7740Arabiczh1435Chineseccp1353Chakmaeo8011 Esperantoar5575Arabiczh2710Chineseel1223Greekar4469Arabiceo4863 Esperantofr7772Frenchja5096Japaneseru3337Russianth7651Thaisr7008Serbianar3707Arabicth5260Thaitr619Turkishar358Arabices7163Spanishen1940Englishtr5443Turkishbn1632Banglaccp873Chakmaru3492Russianzh1395Chineseiu1354 Inuktitutes2390Spanishbn2840Banglaja5105Japaneseru2986Russianes5116Spanishbn1436Banglath4466Thaizh84Chineseth3304Thairu38Russianzh6502Chinesetr5048Turkishfr198Frencheo4344 Esperantoar7216Arabicel2865Greekth354Thaies5002Spanishel3396Greeksr7891Serbianen1296Englishfr6773Frenchth893Thaizh4256Chineseru2370Russiansr1699Serbianja3429Japanesetr7722Turkishzh5355Chineseen606Englishfr836Frenchja7815Japanesechr533Cherokeesr182Serbiansr5358Serbianeo2395 Esperantoth1326Thaichr7711Cherokeetr6625Turkisheo5844 Esperantochr5776Cherokeeeo6671 Esperantoiu1616 Inuktitutja7337Japaneseen6409Englishbn7687Banglachr5622Cherokeefr2263Frenchccp6727Chakmaiu2036 Inuktitutbn2613Banglachr1875Cherokeeiu5505 Inuktituttr3973Turkishes2116Spanishar473Arabicfr1762Frenchccp3250Chakmaar2671Arabiceo7110 Esperantofr4792Frenchel1673Greekccp2348Chakmaru2988Russianth2420Thaien5599Englishsr1644Serbianbn3291Banglael428Greekbn3082Banglachr3639Cherokeeja5753Japaneseel8069Greekzh268Chinesees760Spanishbn6944Banglaeo720 Esperantoiu5112 Inuktitutar4735Arabicsr7011Serbianeo4722 Esperantobn4973Banglatr520Turkishel1760Greekchr1121Cherokeeel1485Greekes2984Spanishru6266Russianel6081Greekfr4773Frenchru4736Russianfr5588Frenchar457Arabicel2482Greekar7435Arabicfr1036Frenches3850Spanishiu4155 Inuktitutru3311Russianchr335Cherokeechr1668Cherokeear2722Arabicfr156Frenchbn4659Banglath2843Thaifr6689Frenchth3824Thaija3937Japaneseth5084Thaizh1803Chineseccp869Chakmazh5671Chineseiu7985 Inuktitutes3285Spanishen1677Englishel4745Greekja3805Japaneseja239Japaneseru4550Russiansr1872Serbianzh2503Chinesebn8187Banglaes4426Spanishiu4326 Inuktituten1440Englishes1327Spanishes5587Spanishccp4388Chakmath5088Thaiar1716Arabiceo3840 Esperantozh5398Chinesear66Arabiceo1605 Esperantosr4674Serbianccp1559Chakmaeo4950 Esperantoru5947Russianth3402Thaiel1601Greeken5878Englishth2991Thaith7329Thaichr4213Cherokeetr2912Turkishth5266Thaiar3583Arabicchr5047Cherokeear4318Arabicar1429Arabicen7908Englisheo1728 Esperantoiu4083 Inuktitutchr7057Cherokeees2577Spanisheo6252 Esperantoes1414Spanishccp7217Chakmaeo915 Esperantoeo931 Esperantofr3913Frencheo1643 Esperantosr8120Serbianth851Thaieo7093 Esperantofr2162Frenchru4449Russianth1278Thaisr3653Serbianth6234Thaisr5592Serbiantr7918Turkishchr5791Cherokeeel5669Greekth3167Thaien7659Englisheo830 Esperantozh5763Chinesear5430Arabiciu887 Inuktitutar5146Arabicchr1407Cherokeefr6349Frenchccp5340Chakmasr1902Serbiansr3525Serbiantr2676Turkishja3243Japanesetr6073Turkishbn5740Banglaja8125Japanesesr8068Serbiantr4878Turkishen3034Englishar5464Arabicel704Greekfr5130Frenchth5099Thaiar5850Arabiceo6318 Esperantoccp3741Chakmael3210Greekchr4522Cherokeeth5997Thaien5350Englishzh4269Chinesechr455Cherokeeccp4518Chakmafr2950Frenchth6118Thaitr6219Turkishfr6731Frenchchr3078Cherokeeen5967Englishja844Japaneseru7930Russianeo7167 Esperantoja3050Japanesebn7839Banglael3633Greekzh1581Chinesetr6349Turkishchr3534Cherokeeja244Japaneseth7089Thaisr6766Serbianar3891Arabictr8040Turkishth3644Thaizh5937Chinesesr3376Serbianfr432Frenchel7707Greeken2039Englishth2421Thaiiu128 Inuktitutru4022Russianfr6698Frenchtr5944Turkishar1163Arabiceo1700 Esperantofr6741Frenchel3708Greektr5099Turkishccp4666Chakmath7219Thairu7509Russianbn134Banglachr5280Cherokeebn6706Banglasr3444Serbianth6818Thaiiu4694 Inuktitutchr558Cherokeeth3264Thaibn7223Banglasr7564Serbianth8113Thaiiu6674 Inuktitutru6665Russianzh5642Chinesetr5947Turkishru5102Russianel3448Greekel4273Greekru2731Russianes7672Spanishja1576Japanesees2231Spanishth951Thaieo4747 Esperantozh2422Chineseiu170 Inuktitutsr5169Serbiansr247Serbiansr2485Serbianbn5549Banglaiu1274 Inuktitutsr6330Serbianbn2210Banglael4332Greekar7360Arabicja229Japanesees977Spanishchr4152Cherokeeru1188Russianccp4404Chakmafr3318Frenchzh6874Chineseeo3528 Esperantoja1954Japanesebn2508Banglaen523Englishfr5153Frenchru2579Russianel700Greekfr74Frenchsr5269Serbianth5316Thaiiu3444 Inuktitutru1416Russiansr1053Serbianja940Japaneseccp3453Chakmaeo3262 Esperantofr2011Frenchel820Greeken5588Englishiu3290 Inuktituteo2069 Esperantobn5036Banglaccp6227Chakmafr4827Frencheo253 Esperantoel6756Greekchr6359Cherokeezh4323Chinesebn7429Banglasr1272Serbiansr3680Serbianeo7185 Esperantoes8188Spanishtr3266Turkishbn2861Banglaar2371Arabiceo6495 Esperantosr4990Serbianth2896Thaieo3310 Esperantozh3509Chinesechr5914Cherokeezh4747Chinesetr3833Turkisheo6313 Esperantobn8099Banglaja3837Japaneseru7626Russianth1340Thaith5786Thaiiu7983 Inuktitutfr812Frenchccp2257Chakmafr3312Frenchtr7878Turkishchr5600Cherokeechr182Cherokeechr4149Cherokeeeo6617 Esperantoen4220Englishel314Greekchr4924Cherokeees2038Spanishzh350Chineseiu4342 Inuktituten4251Englishen7548Englishth1535Thaisr2166Serbianes527Spanishar582Arabictr5926Turkishar2377Arabictr2793Turkisheo154 Esperantoel3753Greeksr2269Serbianja8101Japaneseiu5191 Inuktituttr6064Turkishel5434Greeken293Englishzh7199Chinesechr3427Cherokeeja7318Japanesezh5586Chineseja5991Japaneseccp1451Chakmael4203Greekzh2627Chineseccp1513Chakmafr3958Frenchar1926Arabicja869Japaneseru3513Russianchr5220Cherokeeen4085Englishbn413Banglath3623Thaitr5435Turkishth3440Thaifr7403Frenchth7883Thaiccp6063Chakmaccp6295Chakmaes1671Spanishfr7035Frenchru4088Russianru6758Russiansr1199Serbianel6891Greektr2562Turkishzh127Chinesebn6704Banglaes7710Spanishen2921Englishen5716Englishfr1014Frenchfr4111Frenchru3489Russianar5047Arabices1757Spanishen494Englishru1068Russianja1566Japaneseen3125Englishel4935Greeksr1870Serbianes2629Spanishtr6606Turkisheo6954 Esperantobn1279Banglabn8002Banglaiu5013 Inuktitutfr5023Frenchiu4873 Inuktitutes847Spanishel459Greeken4436Englishen3941Englishja2270Japanesetr7586Turkishzh7136Chinesesr3693Serbianel8102Greekfr3497Frenchen5161Englishru6795Russianar4415Arabiceo7495 Esperantoth4142Thaichr5727Cherokeeth7142Thaiar3737Arabicsr6399Serbianzh4282Chinesechr4084Cherokeear5206Arabicbn2715Banglaru607Russianth3503Thaizh7861Chinesear4600Arabicfr5474Frenchbn2216Banglabn3608Banglachr7653Cherokeechr4647Cherokeechr353Cherokeeen1000Englishbn4485Banglath4391Thaija6782Japaneseru6478Russianel2275Greekel5132Greekccp5796Chakmaja6516Japaneseel3960Greekeo5574 Esperantoeo6591 Esperantosr2123Serbiantr2086Turkishen2983Englishar3457Arabiceo4020 Esperantotr2204Turkishja7927Japaneseen5536Englishiu1090 Inuktitutja3345Japaneseccp1179Chakmaar3303Arabictr4291Turkisheo4749 Esperantoar1527Arabicchr5895Cherokeeccp1354Chakmael3807Greektr3420Turkisheo6815 Esperantobn1255Banglaes2567Spanishiu1337 Inuktituttr6796Turkishsr2635Serbiantr1820Turkishzh3737Chineseccp1912Chakmafr44Frenchfr4168Frenches3812Spanishes4434Spanisheo7433 Esperantochr609Cherokeesr5509Serbianth1814Thaitr475Turkishccp524Chakmaccp4817Chakmaru6318Russianzh5344Chinesechr6831Cherokeesr1947Serbianeo7785 Esperantoar4211Arabicth1303Thaiiu4270 Inuktitutchr6946Cherokeear1459Arabicen3166Englishchr7229Cherokeeja6428Japaneseru6258Russianru7881Russianes3693Spanishtr2721Turkisheo935 Esperantoja5328Japaneseel1556Greekja2082Japaneseccp5500Chakmachr7418Cherokeechr6454Cherokeechr6763Cherokeear1184Arabiceo7022 Esperantoes1005Spanishth5630Thaien2703Englishes6629Spanishccp3316Chakmabn5397Banglaeo7825 Esperantofr6142Frenchiu7486 Inuktitutzh6764Chinesezh5116Chineseiu4105 Inuktitutru946Russianchr1108Cherokeeiu5036 Inuktitutel960Greekeo6688 Esperantochr1715Cherokeeth4214Thaieo4511 Esperantoeo4486 Esperantoen3379Englishchr6057Cherokeesr3850Serbiantr5035Turkishbn6880Banglaeo2698 Esperantobn5488Banglaccp3024Chakmath572Thaiar492Arabicbn7560Banglath8119Thaichr3983Cherokeechr1708Cherokeeiu6508 Inuktitutfr6923Frenchja4401Japanesebn4584Banglael3141Greekja6922Japanesefr1875Frenchsr208Serbianth1341Thaibn1987Banglael4126Greekccp193Chakmabn2638Banglaiu428 Inuktitutar4607Arabicbn1041Banglachr1579Cherokeeel7699Greekfr514Frenchth7146Thaiccp4148Chakmaen5412Englishar3999Arabicccp4521Chakmaja7837Japaneseth7316Thaieo7255 Esperantobn5347Banglaen2250Englishchr6163Cherokeeen2655Englishja3174Japaneseel6108Greektr2766Turkisheo772 Esperantoen6945Englishzh5502Chinesebn386Banglazh1633Chineseccp7948Chakmachr3790Cherokeeja3132Japanesebn5144Banglaiu4327 Inuktitutth4589Thaieo3207 Esperantochr5024Cherokeechr6352Cherokeees1810Spanishchr7495Cherokeefr3687Frenchsr7312Serbianru2030Russianar2461Arabicth513Thaitr4964Turkisheo5858 Esperantotr4123Turkishiu1820 Inuktitutccp6840Chakmasr485Serbianen8146Englishchr5170Cherokeetr4403Turkishes1805Spanishth5868Thaies1897Spanishchr3551Cherokeebn987Banglath1890Thaiccp6293Chakmaiu184 Inuktituteo7778 Esperantofr4721Frenchchr3267Cherokeeru5798Russianes5265Spanishja4053Japaneseeo5607 Esperantosr1409Serbianth7125Thaitr1096Turkishel7009Greekel7564Greeken1486Englishth5434Thaija5798Japaneseen1329Englishar7556Arabicth6221Thaitr6532Turkishen7057Englishar41Arabiciu600 Inuktituteo3382 Esperantotr6233Turkishiu2573 Inuktitutru3768Russianel3537Greekar7830Arabicen1241Englishel5794Greekja5725Japanesees1821Spanishen7761Englishbn2491Banglaes8071Spanishtr4359Turkishth3869Thaies2230Spanishtr2273Turkishar3949Arabiceo1418 Esperantoes4617Spanishiu3051 Inuktitutel440Greeken141Englishiu6252 Inuktitutfr7641Frenches7270Spanishbn5877Banglatr625Turkishth5279Thaiiu6373 Inuktitutiu2013 Inuktitutru2028Russianes2095Spanishen463Englishsr3156Serbianja2080Japaneseel6254Greekth1458Thaiiu7219 Inuktitutja6871Japaneseen5186Englishccp2685Chakmath5471Thaisr280Serbianja7501Japanesebn5601Banglael1415Greekeo5280 Esperantoja1865Japaneseja1451Japaneseccp5261Chakmaeo644 Esperantoes4033Spanishen6493Englishen4973Englishth4543Thaichr6958Cherokeeeo3548 Esperantoeo4996 Esperantofr4791Frenchzh896Chinesezh5644Chinesebn2812Banglachr1147Cherokeeen4485Englishccp3848Chakmachr2208Cherokeear1805Arabicth3907Thaitr5414Turkishzh3570Chinesetr1769Turkishiu1384 Inuktituten5369Englishbn2882Banglatr6444Turkishen5317Englishccp3440Chakmazh4002Chineseeo2712 Esperantoel2723Greekes5061Spanishfr4204Frenches6358Spanishccp5638Chakmaen7674Englishru4687Russiansr3729Serbianth376Thaiar7387Arabiczh6184Chineseth7151Thairu2534Russianar1437Arabicja2512Japanesechr2262Cherokeeeo7529 Esperantoth2053Thaizh7509Chinesezh7676Chinesees6456Spanishes1741Spanishfr1172Frenchzh4647Chineseth6812Thaieo1937 Esperantochr5647Cherokeees7831Spanishru1472Russianes3000Spanishccp6548Chakmaiu3370 Inuktitutja6079Japanesebn2239Banglachr2259Cherokeeccp815Chakmaccp6032Chakmael345Greekes6567Spanishbn6232Banglaiu6903 Inuktitutes5889Spanishtr3565Turkishen2383Englishru489Russianzh7836Chineseja1729Japaneseja6759Japanesefr6586Frenchbn5159Banglabn6218Banglazh48Chineseen5207Englishes6129Spanishtr2411Turkishbn6547Banglatr3015Turkishja2502Japaneseru8065Russianen1100Englishiu4725 Inuktitutbn5427Banglaes7290Spanishja7822Japanesesr5375Serbianen7033Englishbn7207Banglatr5586Turkishar6607Arabicel7649Greekchr5836Cherokeeja6208Japaneseru4993Russiansr7118Serbianbn1853Banglael4726Greekzh1370Chineseen3373Englishar5626Arabicja6896Japaneseth3153Thaiar7205Arabicccp3903Chakmael1745Greekel6475Greekeo5163 Esperantoeo7920 Esperantoru3431Russianar1318Arabicen6957Englisheo5505 Esperantoen1032Englishiu3135 Inuktitutes3390Spanishja1583Japaneseja261Japanesechr1641Cherokeesr2418Serbianru5783Russianen1735Englishsr5572Serbianth1062Thaizh6008Chineseeo7438 Esperantofr7253Frenchja4535Japaneseccp7587Chakmaccp350Chakmatr2769Turkishzh6496Chineseel3673Greekfr5543Frenchtr4453Turkishchr4945Cherokeeeo707 Esperantoes5228Spanishja4368Japanesees1888Spanishes1856Spanishja3781Japaneseccp7624Chakmaccp4497Chakmaru5380Russianru8070Russianzh1724Chinesees4401Spanishar120Arabicen4628Englishes7200Spanisheo5035 Esperantozh634Chinesees4294Spanishtr5198Turkishes6145Spanishth1081Thaisr4126Serbianzh5399Chinesechr6655Cherokeeru5894Russiansr7056Serbianbn6821Banglatr7054Turkishccp2757Chakmaru6889Russianes6783Spanishru909Russianchr7555Cherokeesr4634Serbianchr1534Cherokeeja6145Japaneseja7217Japaneseth2187Thaitr2538Turkishfr1747Frenchzh2946Chinesesr938Serbiansr6002Serbiansr1428Serbianzh386Chineseel1456Greekth4973Thaieo1279 Esperantoes4729Spanishbn7480Banglaja5034Japaneseel42Greekru2483Russianru300Russianru3824Russiansr1957Serbiansr4764Serbianzh8010Chinesesr5091Serbianfr3726Frenchiu243 Inuktitutiu7454 Inuktitutth6012Thaiar1003Arabicen7206Englisheo3185 Esperantoccp5492Chakmaeo7662 Esperantoccp4110Chakmazh2328Chinesesr7499Serbianeo8082 Esperantotr1230Turkishes7749Spanishen7588Englishth6461Thaiar4740Arabicel151Greekeo1379 Esperantosr8154Serbianzh5637Chineseen4393Englisheo7627 Esperantozh6743Chineseiu5050 Inuktitutar30Arabicfr6871Frenchiu1584 Inuktitutes2246Spanishja4193Japanesees7416Spanishen914Englishes6575Spanishes4899Spanishchr3940Cherokeeel7250Greekru7927Russianzh361Chinesechr4015Cherokeefr4800Frenchbn2868Banglafr2410Frenchsr7939Serbianbn1149Banglabn3429Banglaen3268Englishiu7662 Inuktitutsr4173Serbianiu7858 Inuktitutfr5879Frenchth516Thaith4841Thaisr3872Serbianeo2808 Esperantochr1709Cherokeefr7043Frenchiu5424 Inuktitutzh4041Chinesechr2161Cherokeebn6189Banglael4804Greekes3555Spanishsr156Serbianbn4367Banglaeo1560 Esperantoar8124Arabictr1459Turkishchr2078Cherokeeth6842Thaiiu7564 Inuktituttr4162Turkishzh4811Chineseeo6857 Esperantozh4197Chinesetr1869Turkishth5857Thaiiu1412 Inuktitutru7537Russianccp4710Chakmaes5989Spanishsr5879Serbiantr3703Turkishar6801Arabicar6175Arabiciu2592 Inuktitutchr304Cherokeeru6193Russianth1938Thaitr3757Turkishccp4043Chakmaar7674Arabicen7144Englishtr572Turkishbn3706Banglael6066Greekiu7424 Inuktitutzh760Chineseiu4778 Inuktitutzh4779Chinesetr4638Turkishen4593Englishfr930Frenchar4833Arabictr682Turkishes6294Spanishiu3532 Inuktituteo4947 Esperantoel6561Greekja2269Japaneseth2192Thaitr8094Turkishiu5733 Inuktitutiu2616 Inuktitutchr2065Cherokeefr6821Frenchru6229Russiansr5701Serbianel8017Greeksr3866Serbianiu6791 Inuktitutth3811Thaith5682Thaija1453Japanesefr6842Frenchar1395Arabices4521Spanisheo4087 Esperantosr1653Serbianeo6309 Esperantoar3627Arabicth4472Thaies4091Spanishel6925Greeksr4563Serbianccp7026Chakmabn4455Banglaccp4276Chakmaccp7678Chakmaen231Englishfr8105Frenchchr7964Cherokeeccp3689Chakmaru7240Russianeo2840 Esperantozh6660Chineseru697Russianbn6520Banglaccp404Chakmaja1013Japanesezh2793Chinesesr5192Serbiantr792Turkishiu1119 Inuktituteo4469 Esperantoiu2908 Inuktitutccp3556Chakmaeo6162 Esperantoiu3296 Inuktitutchr5873Cherokeeel2123Greekth961Thaiar216Arabicel4084Greeksr1500Serbianru1316Russianth1150Thairu957Russianes5185Spanishiu7617 Inuktituten4477Englishja6274Japanesezh2300Chinesefr2022Frenchen7799Englishchr7735Cherokeetr576Turkishen867Englishel3443Greeksr1890Serbianfr2147Frenchfr323Frenchfr3109Frenchzh1421Chinesezh1574Chineseel2918Greekja2444Japanesechr4744Cherokeeru2007Russiansr65Serbianzh4509Chinesetr4386Turkishel2332Greektr6418Turkishar4343Arabicar533Arabicen5415Englishchr6903Cherokeeeo7691 Esperantoja1332Japanesezh2204Chineseiu6601 Inuktitutiu7423 Inuktitutccp1858Chakmaes8088Spanishes4216Spanishar3938Arabicel7817Greekja5667Japaneseiu7754 Inuktitutth3704Thaifr7330Frenchth6457Thaiel5983Greekar168Arabicchr3621Cherokeetr8025Turkishfr5878Frenchzh387Chineseja6420Japanesechr333Cherokeebn5474Banglatr6935Turkishzh7473Chinesetr4121Turkishccp3301Chakmaar2233Arabicen4376Englishth2590Thaien5318Englishiu1767 Inuktitutzh6328Chinesetr5055Turkishes5271Spanishccp6456Chakmazh6532Chineseth7729Thaichr4318Cherokeechr3419Cherokeeen1987Englishes262Spanishiu292 Inuktitutel2460Greeken3810Englishchr5050Cherokeeth5297Thaiel7851Greekja7429Japaneseccp3985Chakmazh7307Chinesechr2667Cherokeeeo3201 Esperantoen5086Englisheo8034 Esperantozh3603Chineseiu2407 Inuktituteo2868 Esperantoru3233Russianiu2845 Inuktitutccp4398Chakmaar1540Arabicth2544Thaieo5525 Esperantoen316Englishar3823Arabicfr8074Frenchiu340 Inuktitutel6947Greekzh3029Chinesebn4681Banglachr4937Cherokeeel4865Greekeo4507 Esperantosr5464Serbianel6329Greekja3558Japaneseeo2149 Esperantoja5545Japaneseccp6521Chakmazh680Chinesefr165Frenchfr2376Frenchel3155Greekchr1720Cherokeezh4729Chineseel1755Greekru542Russianru4592Russianfr6681Frenchiu2669 Inuktituteo2482 Esperantosr4837Serbianzh1928Chineseccp6218Chakmachr1054Cherokeeiu2017 Inuktitutsr2848Serbiantr3963Turkishes3425Spanishar537Arabices4773Spanishzh6356Chinesetr5283Turkishth7904Thaizh1200Chineseeo3283 Esperantoth3388Thaiel5972Greekeo784 Esperantochr4055Cherokeeen5533Englishen6806Englisheo735 Esperantotr7727Turkishen1360Englishfr6155Frenchfr5869Frenchar1538Arabicchr2268Cherokeeeo545 Esperantoar82Arabiczh3508Chinesefr7202Frenchsr4313Serbianfr4543Frenchtr1990Turkishiu2137 Inuktituttr6100Turkishzh2860Chinesetr2706Turkishen996Englishar2536Arabicru1994Russianth6024Thaitr5011Turkishth6836Thaichr7340Cherokeear4819Arabiciu3732 Inuktitutar553Arabictr486Turkishar1303Arabicen6688Englishel7453Greekes97Spanishsr1693Serbianja5974Japanesetr3784Turkishru4343Russianzh1832Chineseen3389Englisheo3104 Esperantoeo3961 Esperantoccp341Chakmatr1208Turkishfr6710Frenchbn3224Banglabn6423Banglaru3546Russianfr6272Frenchsr3806Serbianiu4020 Inuktitutar996Arabicar3591Arabictr3347Turkishccp6485Chakmatr196Turkishth6086Thaiel3108Greeken3621Englishchr5445Cherokeeen4926Englishfr6873Frenchiu6028 Inuktitutsr8128Serbiansr2729Serbianth4189Thaifr2496Frenchen4442Englishja559Japaneseth7929Thaisr5353Serbianes468Spanishja5806Japaneseiu5763 Inuktitutzh5428Chinesechr5193Cherokeeel5716Greekes6859Spanishsr4985Serbianccp4471Chakmaiu1528 Inuktitutchr2228Cherokeeccp7492Chakmaes1253Spanishen2421Englishtr347Turkishzh2353Chinesefr7014Frenchchr8149Cherokeesr6993Serbianja6645Japanesesr2862Serbianel3439Greekzh4433Chinesebn2971Banglaar2569Arabicru4629Russianeo494 Esperantoen937Englishru1502Russianes2640Spanishja2993Japanesetr4170Turkishbn6152Banglaiu5579 Inuktituteo3791 Esperantoccp6147Chakmaja2762Japaneseeo5630 Esperantosr6393Serbianes5714Spanishes5958Spanishfr7866Frenchzh1266Chineseeo1985 Esperantobn337Banglaar4524Arabices2387Spanishbn3602Banglaes6868Spanishbn5920Banglasr4555Serbianccp163Chakmael3580Greekeo8053 Esperantoccp3221Chakmachr6883Cherokeesr7338Serbianar1587Arabicbn4337Banglaru7294Russianes4865Spanisheo2270 Esperantoeo7620 Esperantobn6322Banglaiu4680 Inuktituteo583 Esperantotr6000Turkisheo760 Esperantozh4322Chineseth5214Thaiccp5372Chakmabn4868Banglaen4941Englishes5220Spanishel818Greekbn720Banglatr1320Turkishzh7132Chinesechr5059Cherokeeth5941Thaizh3290Chinesetr1871Turkishchr2471Cherokeechr79Cherokeeen1045Englishtr6365Turkishar1785Arabiczh1600Chinesebn4620Banglael1231Greekel1395Greekja1533Japaneseru2036Russiantr3742Turkisheo5546 Esperantotr4594Turkishen5654Englishchr5758Cherokeeiu5688 Inuktitutiu1522 Inuktitutchr5428Cherokeear861Arabicar195Arabiczh1486Chinesezh7488Chinesechr959Cherokeechr61Cherokeeeo1031 Esperantoiu7228 Inuktitutsr1529Serbianzh2497Chinesefr234Frenchen4825Englishru625Russianen6121Englishiu4716 Inuktitutiu7142 Inuktitutth4396Thaies1268Spanishtr839Turkishja8175Japanesesr2394Serbianeo5497 Esperantoen5965Englishes6198Spanishiu1305 Inuktitutja5797Japanesees1582Spanishchr1303Cherokeeel4421Greeken8052Englishiu2209 Inuktitutth6346Thairu6294Russianzh7077Chineseel448Greekbn2873Banglafr5640Frenchen3255Englishzh5715Chineseccp5654Chakmafr4081Frenchsr5821Serbianccp4435Chakmafr2004Frenchel7839Greekzh5038Chinesefr7234Frenchsr1511Serbiantr5930Turkishchr3706Cherokeeccp2253Chakmaes856Spanishsr4823Serbianchr4879Cherokeezh3502Chinesetr5281Turkishel3358Greekfr1190Frenchbn1493Banglachr56Cherokeechr2533Cherokeeel2219Greekes1750Spanishbn6688Banglaja216Japanesear6326Arabicbn7230Banglaen4787Englishsr3980Serbianes1486Spanishccp6245Chakmasr3824Serbianru6061Russianbn3445Banglatr3990Turkishchr7392Cherokeeiu89 Inuktitutbn7245Banglaccp2954Chakmasr2844Serbianar4639Arabiciu1473 Inuktitutbn4575Banglath5827Thaiel5630Greeken6422Englishfr77Frenchfr3980Frenchru7734Russiantr353Turkishchr5351Cherokeefr2595Frenchja7252Japaneseru342Russiansr7294Serbianiu7998 Inuktituttr6506Turkishzh7382Chineseen6036Englishzh6209Chineseccp1579Chakmaar5604Arabicar5447Arabicbn5339Banglaiu1978 Inuktitutes2384Spanishiu4712 Inuktituteo1426 Esperantobn6099Banglachr6575Cherokeeru4046Russianen1626Englishiu3275 Inuktitutru3985Russianth5575Thaitr3989Turkishen3825Englishar8165Arabicbn7992Banglaccp4458Chakmaja3797Japaneseja3229Japanesetr7428Turkishzh529Chineseth4413Thaies3445Spanishen4756Englishel4589Greekar4984Arabicfr1710Frenchiu1364 Inuktitutel3493Greekru3660Russianzh2532Chinesezh7583Chineseel2441Greekru452Russianfr426Frenchja2620Japanesezh4144Chineseeo3994 Esperantochr7321Cherokeeen7126Englishel2418Greekes597Spanishes5877Spanishfr4950Frenchccp1716Chakmachr4483Cherokeeiu1754 Inuktitutiu5376 Inuktitutth2933Thaifr936Frenchtr3912Turkishsr2241Serbiansr2322Serbianar6523Arabictr4517Turkishth2056Thaichr5627Cherokeeth3741Thaiar425Arabicel5375Greekiu1141 Inuktitutth794Thaies6168Spanishtr5253Turkisheo4215 Esperantoiu88 Inuktitutth231Thaiiu5020 Inuktitutja6846Japanesees8158Spanishel8057Greektr7056Turkishen2212Englishzh5482Chinesechr8120Cherokeeja2505Japaneseru5540Russiansr2804Serbianiu400 Inuktituttr4905Turkishtr6276Turkisheo5371 Esperantoccp7627Chakmazh6002Chineseth3230Thaitr5467Turkishzh1265Chineseel248Greekru6864Russianja2874Japanesebn324Banglabn1222Banglaes1937Spanishchr3346Cherokeeccp1398Chakmachr5382Cherokeefr6118Frenchtr153Turkishsr3334Serbiantr608Turkishtr3482Turkishtr5238Turkishbn4349Banglafr2363Frenchchr2725Cherokeeth6634Thaiccp5400Chakmatr2245Turkishja7922Japanesezh1469Chineseel7411Greekja4488Japaneseel969Greekiu3863 Inuktituten1046Englishen8020Englishtr2394Turkishel5208Greekes5320Spanishchr7565Cherokeebn6180Banglaiu6002 Inuktitutiu7452 Inuktitutfr1194Frenchchr3901Cherokeeen1466Englishiu7182 Inuktitutth6363Thaizh3134Chinesechr1217Cherokeees431Spanishen7600Englishbn2877Banglaar6915Arabicru7092Russiansr2588Serbianchr5129Cherokeeiu1512 Inuktitutchr4442Cherokeees6325Spanishbn340Banglaccp3061Chakmaccp1765Chakmath3556Thaitr2758Turkishzh1987Chinesechr7721Cherokeetr3360Turkishar1508Arabiceo2215 Esperantofr3624Frenchiu4818 Inuktitutccp4408Chakmaja3765Japanesetr5431Turkishchr5434Cherokeebn5700Banglaes6252Spanishen2832Englishsr6794Serbianzh1717Chinesezh1909Chinesezh3369Chineseel4360Greeken273Englishbn147Banglaeo5370 Esperantochr6249Cherokeetr2783Turkishfr2398Frenches3680Spanishchr6567Cherokeeen5169Englisheo2050 Esperantozh7671Chinesees2704Spanishtr3063Turkishccp7181Chakmachr1852Cherokeeja2944Japaneseiu5700 Inuktitutchr2175Cherokeeja1183Japanesechr5639Cherokeeja5574Japaneseja1727Japanesetr956Turkishccp3562Chakmath5013Thaizh1553Chineseeo2860 Esperantoiu4495 Inuktituten4809Englishja5678Japaneseja7391Japaneseth4736Thaiel7597Greekru7620Russiansr4610Serbianes2617Spanishen468Englishth7534Thaies1555Spanishtr5280Turkishsr6098Serbianeo1020 Esperantoccp7687Chakmaen6044Englishccp3378Chakmaar1367Arabiciu1944 Inuktitutiu3031 Inuktitutsr1638Serbianccp4718Chakmath5589Thaiiu7870 Inuktitutzh3216Chineseja837Japaneseel7196Greekth102Thaiccp2626Chakmaes6003Spanishiu3857 Inuktitutru3175Russianccp5385Chakmaen6207Englishru5186Russianeo2341 Esperantoiu5792 Inuktitutiu5991 Inuktitutth1262Thairu6476Russianel2817Greekes4299Spanishja4924Japanesezh4766Chineseeo7160 Esperantobn5548Banglaar158Arabicccp5480Chakmatr1744Turkishchr2611Cherokeechr4001Cherokeezh776Chinesear4786Arabices1191Spanishchr3989Cherokeeiu6671 Inuktitutzh7597Chineseiu7478 Inuktitutfr6111Frenchbn8117Banglaeo3368 Esperantoeo6471 Esperantoes3204Spanishzh1953Chineseel4588Greekzh5337Chinesesr4470Serbianfr4362Frenchiu7622 Inuktitutzh4245Chinesetr1124Turkishtr1909Turkishen3340Englishja1588Japanesear7463Arabicchr4458Cherokeeel999Greekeo2557 Esperantoccp2364Chakmaiu5433 Inuktituttr756Turkishbn2687Banglael455Greekes1281Spanishfr2512Frenchbn3183Banglasr5845Serbianen4813Englishru2426Russiansr1242Serbianeo5559 Esperantobn6788Banglatr673Turkishiu5746 Inuktitutel5301Greekiu2458 Inuktitutja5625Japaneseen6243Englishfr5414Frenchth76Thaiccp5313Chakmaiu6559 Inuktitutccp2161Chakmaja2975Japanesezh7331Chinesechr6013Cherokeechr4926Cherokeeja3687Japanesear6627Arabiciu7361 Inuktituttr708Turkishccp2507Chakmazh8052Chineseen5665Englishja1201Japaneseen7435Englishru5178Russianccp6106Chakmath6250Thaifr1764Frenchsr954Serbianar5435Arabicen2079Englishtr7183Turkishzh5665Chineseth8018Thaiccp1074Chakmath6058Thaiiu2333 Inuktitutccp7422Chakmael2945Greekel7313Greekiu3256 Inuktitutar4427Arabicru6575Russianen4976Englishtr990Turkishru4727Russianru4984Russianzh5490Chineseel5877Greekru838Russianccp3331Chakmafr8153Frenchen5104Englishchr5858Cherokeeiu5430 Inuktitutru7169Russianzh3795Chineseru2995Russianes6078Spanishru4135Russianfr6565Frenchsr4979Serbianes7121Spanishzh2717Chineseccp6367Chakmachr3382Cherokeear424Arabicbn2667Banglaeo5253 Esperantoar4164Arabiceo6195 Esperantoar5346Arabicel2503Greektr354Turkishru371Russianel5447Greekth2860Thairu6525Russianccp4238Chakmafr1756Frenchiu6802 Inuktitutja4967Japanesesr7231Serbianzh3969Chinesebn275Banglaes5043Spanishen4975Englishja5418Japaneseru5043Russianes7144Spanishchr2349Cherokeear4338Arabicru3663Russianes1814Spanishiu7320 Inuktitutja46Japanesesr3646Serbianru3474Russianchr7323Cherokeesr4763Serbianchr2475Cherokeeth3162Thaiiu1146 Inuktitutchr3460Cherokeeeo6413 Esperantofr5811Frenchbn6484Banglafr7023Frencheo6216 Esperantoar3531Arabicel3005Greeken498Englishru1760Russianccp4536Chakmachr7715Cherokeear1789Arabicel1904Greekzh4410Chineseel7240Greekar1477Arabicbn1484Banglaes5366Spanishja6051Japanesesr2806Serbianfr2136Frenchel3534Greekfr6306Frenchtr2481Turkishel3467Greekccp4820Chakmaccp6297Chakmatr2210Turkishccp5548Chakmabn5052Banglaar5813Arabicel8067Greekfr7957Frenchja2332Japanesezh7200Chinesebn2837Banglaes4098Spanishiu5952 Inuktitutbn5311Banglaen5081Englishfr1683Frenchccp1259Chakmasr4511Serbiantr5982Turkishbn4250Banglaru2136Russiantr4200Turkishbn6047Banglaru3650Russianar798Arabicccp5787Chakmaeo4460 Esperantoth2036Thaizh403Chinesefr6523Frenchzh54Chinesees975Spanishchr3602Cherokeees5756Spanishbn2493Banglael2759Greekiu5066 Inuktitutru6929Russianes1639Spanishiu3094 Inuktitutja3604Japaneseja3296Japanesetr185Turkishen3136Englishru4149Russianzh970Chineseccp4950Chakmaru1094Russianja3893Japanesezh3179Chinesebn3163Banglaeo146 Esperantoja6388Japaneseja6737Japanesefr1097Frenchru5114Russianar4179Arabicchr8184Cherokeefr6038Frenchchr7479Cherokeefr5977Frenchchr3162Cherokeear5532Arabicar991Arabicbn1278Banglaeo4465 Esperantoja3638Japanesetr111Turkishccp1164Chakmazh3843Chineseiu2122 Inuktitutsr4477Serbianen4149Englishiu1169 Inuktitutzh6Chineseiu4340 Inuktitutfr7194Frenchja6966Japanesear1257Arabicja6149Japanesechr287Cherokeees6801Spanishar1525Arabicfr4196Frenchzh2086Chinesebn4010Banglath2497Thaifr1560Frenchja1043Japaneseccp4483Chakmaen3003Englishtr6292Turkishsr7441Serbianfr455Frenchchr7736Cherokeezh3400Chinesechr160Cherokeefr7185Frenchiu6980 Inuktitutsr7957Serbianchr7544Cherokeees8040Spanishccp6033Chakmath7592Thaiar701Arabicen3844Englishru2233Russianccp7169Chakmath2661Thaiel2818Greekru6032Russianzh907Chineseccp1189Chakmatr25Turkishth1771Thaien786Englishru2386Russianbn7675Banglaccp6404Chakmafr3124Frenchzh7146Chinesees6093Spanishsr3490Serbianccp7714Chakmasr786Serbianen3624Englishja7541Japaneseiu7876 Inuktitutru7203Russianth738Thaiar5840Arabictr7336Turkishes697Spanishel4088Greekeo3913 Esperantoccp2994Chakmath6719Thaiccp5189Chakmaiu6367 Inuktitutfr2705Frenchbn2042Banglaccp8014Chakmachr4672Cherokeesr2965Serbianccp1697Chakmachr6002Cherokeesr7620Serbianen5886Englishar138Arabicfr1970Frenchar19Arabiceo4656 Esperantofr1917Frenchfr779Frenchchr2466Cherokeezh3647Chineseel2735Greekth6571Thaizh3434Chinesezh5375Chinesear1343Arabictr5898Turkishsr7870Serbianth8087Thaichr5933Cherokeees5632Spanishar1896Arabiciu1330 Inuktituttr4376Turkishth8059Thaichr229Cherokeetr5747Turkishccp25Chakmael7182Greekth3899Thaibn5416Banglatr1215Turkishzh5651Chineseeo5418 Esperantoth1490Thaieo3220 Esperantoar2958Arabicsr7406Serbiansr567Serbianbn2808Banglaar479Arabicbn3478Banglazh72Chineseccp4185Chakmabn1025Banglaccp5572Chakmafr4136Frenchja7986Japanesefr1125Frenchccp7022Chakmabn5717Banglaen651Englishtr3876Turkishzh4013Chinesear3360Arabicfr5384Frenchchr1736Cherokeeiu6581 Inuktitutzh4795Chinesebn6026Banglaen3235Englishel6219Greeksr3858Serbianth5810Thaizh4275Chineseru194Russiantr2902Turkishsr7486Serbianeo2786 Esperantobn2640Banglatr3860Turkishchr2152Cherokeefr3129Frenchtr4304Turkishiu2852 Inuktituteo927 Esperantoru2394Russianes3666Spanishfr3998Frenchen2668Englishel5604Greekel1030Greeken4018Englishfr7031Frencheo2417 Esperantoth321Thaiccp2719Chakmabn284Banglasr8169Serbianccp2504Chakmaru924Russianiu8076 Inuktitutru6360Russianja3443Japanesechr6238Cherokeees2892Spanishfr5969Frenches6970Spanishzh3049Chinesees1328Spanishccp1896Chakmachr797Cherokeeiu1081 Inuktitutru4499Russianel4423Greekbn7202Banglaru3522Russianar6832Arabicchr4412Cherokeeen2693Englishes8140Spanishth4937Thaies6650Spanishtr7213Turkishel4522Greekeo6449 Esperantofr7492Frenchiu4993 Inuktitutja5205Japanesechr4702Cherokeesr1496Serbianth5058Thaitr2505Turkishzh3620Chinesechr3106Cherokeeccp1668Chakmafr4961Frenchchr6052Cherokeear4414Arabicfr2525Frenchzh7790Chinesezh6771Chinesezh267Chineseccp2487Chakmath7743Thaies693Spanishja1341Japanesetr5110Turkishccp2585Chakmasr5159Serbianiu6268 Inuktitutbn2136Banglaccp1290Chakmasr5407Serbianen3684Englisheo7441 Esperantosr4376Serbianccp5207Chakmaiu6598 Inuktitutth2359Thaiar8002Arabictr4628Turkishen5778Englishar1493Arabiczh4370Chineseth1136Thairu6005Russianja7908Japaneseen814Englishja3092Japaneseth8001Thaisr7881Serbianel586Greekel1318Greekeo4016 Esperantoth2731Thaichr7554Cherokeefr6814Frenchfr841Frenchfr5895Frencheo307 Esperantotr6842Turkishel108Greekiu2576 Inuktitutja7760Japanesees1302Spanishzh3911Chinesear212Arabictr4436Turkishzh3972Chinesetr1440Turkishes5950Spanishth2765Thaies3580Spanishzh2268Chinesefr7971Frenchru6399Russianzh7458Chineseiu6552 Inuktituttr2712Turkishbn842Banglaar1428Arabicchr966Cherokeeel5623Greekth2150Thaith2462Thaies38Spanishar3012Arabicel3997Greektr6268Turkishel257Greekel557Greeken4671Englishen364Englishel5115Greektr7278Turkishth1484Thaies3652Spanishzh5993Chinesefr4694Frenchen812Englishiu50 Inuktitutth3326Thaibn2124Banglatr6059Turkishel4809Greekfr4906Frenchth4036Thaizh945Chinesezh4485Chinesear5029Arabictr4296Turkishru155Russianth3809Thaieo6708 Esperantoen1779Englishar6088Arabicja2058Japaneseth6121Thaien2648Englishtr6587Turkishzh3299Chinesees8049Spanishar3767Arabicar3819Arabices4784Spanishar3660Arabicchr710Cherokeeru3437Russiantr3570Turkishtr6223Turkishiu7611 Inuktitutja6509Japanesear6375Arabicen2294Englishen2145Englishen6099Englishen6294Englishbn2497Banglaen3561Englishccp1799Chakmachr5912Cherokeechr7921Cherokeechr3739Cherokeeen1771Englishtr769Turkishar704Arabiciu6704 Inuktitutccp1599Chakmaar6190Arabiceo8187 Esperantoiu2505 Inuktitutja4565Japaneseccp3179Chakmabn1755Banglabn363Banglaeo3988 Esperantoth7220Thaitr4210Turkishccp3920Chakmafr6403Frenchth255Thaien5604Englishtr6613Turkishiu6507 Inuktitutzh2342Chinesezh3359Chineseiu3792 Inuktitutru293Russianccp5168Chakmaen4331Englishel6898Greekru1307Russianar7167Arabicru2756Russianzh6983Chinesear2596Arabicar1613Arabicfr2371Frencheo5809 Esperantofr6467Frenchzh5217Chineseel6474Greeksr7537Serbianar6985Arabictr8008Turkishchr6748Cherokeear5036Arabicbn7696Banglaccp4676Chakmabn3360Banglath2632Thaizh5419Chinesees840Spanishtr8188Turkishbn2916Banglabn7887Banglaccp968Chakmaen6550Englishtr7542Turkishen2979Englishth619Thaizh1632Chinesezh1622Chineseeo7449 Esperantoth4490Thaija5482Japanesefr3573Frenchsr5001Serbianzh6079Chineseru4561Russianel8166Greekbn1938Banglath7998Thaiel5176Greekar6618Arabiceo588 Esperantoja5891Japanesechr3385Cherokeeth7727Thaiccp1658Chakmasr4793Serbianru5634Russianth7062Thaizh3357Chineseeo6662 Esperantoccp1844Chakmabn6170Banglaru2854Russiantr7597Turkishchr2107Cherokeeru5839Russianru5897Russianbn7347Banglaen1691Englisheo4029 Esperantoiu3837 Inuktitutel6379Greekccp4340Chakmaiu1145 Inuktitutccp1321Chakmachr5004Cherokeeth7295Thaibn4219Banglath4914Thaien888Englishja7110Japanesezh3656Chinesear5547Arabicfr2291Frenchen7328Englishbn4342Banglaen3325Englishja6047Japanesetr5257Turkishth3593Thaiccp3204Chakmatr2928Turkishzh4843Chinesear6046Arabicru837Russianfr6180Frenchar520Arabicja1849Japaneseccp4877Chakmaru6930Russiantr1795Turkishel1348Greekzh6535Chinesees1909Spanishen5963Englishchr2513Cherokeeeo4143 Esperantoja2946Japanesesr6938Serbianru4356Russianes5956Spanisheo5314 Esperantochr5072Cherokeeth7911Thaiar5942Arabiciu2161 Inuktitutchr6962Cherokeeth6887Thaizh7290Chineseja7945Japanesetr1894Turkishar6016Arabiczh2796Chineseccp8119Chakmaja7925Japanesebn407Banglaiu482 Inuktituten5097Englishth4064Thaija6261Japaneseru128Russianiu4932 Inuktitutja4634Japaneseth4421Thaija8077Japaneseeo2384 Esperantoes1978Spanishru3488Russianzh3034Chineseccp3096Chakmath6994Thaith6681Thaiar4068Arabiceo441 Esperantoeo3483 Esperantoja2709Japanesees3335Spanishchr5487Cherokeeen2153Englishes231Spanishru6071Russiansr3204Serbianja7202Japanesear8008Arabices7833Spanishen5825Englishru6529Russiansr3293Serbianth2030Thaisr4623Serbianzh5754Chinesees1185Spanishzh6475Chineseccp4617Chakmazh7403Chineseiu6089 Inuktituteo4205 Esperantoiu6785 Inuktituten6490Englishzh4007Chinesezh7566Chineseiu4311 Inuktitutbn1532Banglaru554Russianar5432Arabiceo6004 Esperantosr1672Serbiansr6267Serbianchr3168Cherokeetr317Turkishar643Arabicja8001Japanesebn6640Banglabn2549Banglath1103Thaiel3755Greekel1134Greekeo623 Esperantoeo1350 Esperantoes1074Spanishes6815Spanishfr558Frenchru1153Russiansr3814Serbianar6268Arabicccp576Chakmaccp5741Chakmaiu7400 Inuktitutchr3092Cherokeeth5062Thaibn7077Banglachr7216Cherokeeeo5211 Esperantosr2664Serbianeo1149 Esperantoen1265Englishsr6600Serbianen3259Englishbn2659Banglaeo7489 Esperantoeo4525 Esperantoar7246Arabices3301Spanishes7558Spanishbn5705Banglasr5714Serbianen1600Englishfr2777Frenchru3256Russianbn285Banglachr7487Cherokeeru3970Russiantr6732Turkishccp1068Chakmaar7703Arabicfr3375Frenchbn1966Banglafr1709Frenchth3862Thaibn1855Banglaes14Spanishiu321 Inuktitutiu7353 Inuktitutja5367Japanesezh613Chinesebn7285Banglaen2754Englishen7508Englishchr1372Cherokeeen5453Englishfr7876Frenchja6360Japaneseru1861Russianzh2109Chinesezh7098Chinesezh6847Chinesees6902Spanishar6663Arabicth4755Thaith7948Thaiiu2730 Inuktitutfr3798Frenchsr90Serbianchr3255Cherokeesr4759Serbianiu2344 Inuktituten6848Englishzh6821Chineseiu2540 Inuktituten4553Englishru1820Russianzh2333Chineseccp8043Chakmael2979Greekes6784Spanishar68Arabicen578Englishchr5760Cherokeefr6342Frenchru6737Russianeo7148 Esperantoja5362Japaneseeo2155 Esperantoru1414Russianja330Japaneseja5933Japaneseja4456Japaneseru2768Russianar660Arabicen7377Englishth6707Thaieo3386 Esperantoiu6424 Inuktituten7767Englishzh3222Chinesear4037Arabices1832Spanishzh1096Chineseja2545Japanesesr3769Serbianchr6884Cherokeeiu5800 Inuktitutth1823Thaizh5768Chineseel8087Greektr4685Turkishel360Greekja6481Japaneseja1817Japaneseen1520Englisheo6475 Esperantozh950Chinesechr8002Cherokeebn3965Banglachr5617Cherokeeen3417Englishru7908Russianel4080Greekiu1332 Inuktituten513Englishfr3855Frencheo6455 Esperantobn5887Banglaccp7250Chakmaar6853Arabicccp3158Chakmazh5709Chinesees906Spanishru3029Russianes2247Spanishzh7615Chinesebn1529Banglaccp4855Chakmazh8164Chinesefr2074Frenches814Spanishja1845Japaneseccp2973Chakmaar4509Arabicja7568Japanesezh7057Chineseja2317Japanesesr6506Serbianar8108Arabictr7113Turkishes4191Spanishchr7317Cherokeeen1805Englishfr3210Frenchja7068Japanesechr5857Cherokeeel2257Greekar3245Arabiczh7763Chinesees170Spanishccp5928Chakmaes3480Spanisheo579 Esperantoccp5585Chakmaeo5324 Esperantoes1108Spanishes3250Spanishsr2705Serbianiu5239 Inuktitutes1350Spanishru7564Russianccp1351Chakmael8077Greeksr6541Serbiansr4480Serbianel1316Greekccp5824Chakmaeo6189 Esperantoen3971Englishfr3870Frenchchr2383Cherokeeen5804Englishel3740Greeksr2276Serbianth6147Thaiiu3742 Inuktitutzh4419Chineseth4168Thaija6111Japanesees5117Spanishfr6347Frenchru2347Russianbn7172Banglael6206Greekchr2865Cherokeeeo4372 Esperantochr6926Cherokeeel5684Greekfr3989Frenchzh6427Chineseiu858 Inuktitutccp5170Chakmachr4813Cherokeechr6691Cherokeeen3470Englishzh5393Chinesezh6063Chinesefr7686Frenchsr5787Serbianar5582Arabicsr3538Serbianen2262Englishbn560Banglael6629Greekzh179Chinesefr1246Frenchfr2200Frenchchr2787Cherokeees6826Spanishes3583Spanishru5130Russianiu7924 Inuktitutja4099Japanesetr397Turkishtr5794Turkishru2834Russianbn346Banglael6709Greekeo5578 Esperantoth7193Thaiel235Greekfr5216Frencheo6409 Esperantoru2984Russianes869Spanishes4675Spanishar1228Arabicfr4360Frenchar3298Arabicfr1506Frenchru1748Russiantr5817Turkishtr6999Turkishar6898Arabicar5599Arabiceo4659 Esperantofr2921Frenchen4917Englishen3296Englishiu1830 Inuktitutar5239Arabicchr1779Cherokeeen3448Englishes5652Spanishzh3396Chineseru1348Russianbn3192Banglachr5273Cherokeeth7425Thaibn1762Banglaiu4768 Inuktituteo4430 Esperantoen1990Englishes7199Spanishzh6441Chinesezh2837Chinesees5707Spanishzh416Chinesefr4195Frenchchr6591Cherokeesr230Serbianfr6420Frenchja3023Japaneseiu8181 Inuktitutbn5106Banglatr890Turkishccp80Chakmaiu7485 Inuktitutsr7251Serbianzh5474Chinesear1893Arabicar5463Arabicar8105Arabicel989Greeken1516Englishfr2452Frenches7251Spanishccp6258Chakmazh6986Chinesear5131Arabicccp3578Chakmaen89Englishen1248Englishiu8109 Inuktituten2226Englishsr898Serbianel4435Greekeo3671 Esperantoiu2758 Inuktitutsr1537Serbianru1464Russianes2056Spanishchr3515Cherokeeru899Russianes779Spanishth4052Thaiel8030Greekel7953Greekru536Russianeo5213 Esperantochr5827Cherokeezh3103Chinesebn4539Banglaen5532Englishsr4486Serbianen3530Englishsr4685Serbiantr3881Turkishtr6253Turkishru2837Russianchr321Cherokeefr7093Frenchbn8017Banglasr5962Serbianel7107Greekeo1666 Esperantoja4113Japanesear4492Arabices5264Spanishchr5908Cherokeees1430Spanishfr1070Frenchru7166Russianen3302Englishth5778Thaieo1868 Esperantobn5910Banglatr1572Turkishzh5491Chineseja2868Japanesefr3557Frencheo6464 Esperantosr3026Serbianeo5231 Esperantoccp2692Chakmaccp6209Chakmaes1460Spanishes1627Spanishbn5764Banglaiu4699 Inuktitutchr847Cherokeeccp1554Chakmaiu3763 Inuktitutbn7996Banglaes6897Spanishbn2560Banglafr6232Frenchth7876Thaitr4058Turkishar6602Arabiczh7544Chineseel239Greeken6242Englishes1152Spanishes4264Spanishfr1262Frenchja7850Japanesefr6119Frenchtr233Turkishes2125Spanishzh1554Chineseja4704Japanesear7962Arabicel2387Greekiu239 Inuktitutru4628Russianeo1179 Esperantoth33Thairu7245Russiantr80Turkisheo5363 Esperantofr3511Frenchtr6295Turkishiu5858 Inuktitutja926Japanesear6943Arabicchr2764Cherokeear1Arabicar5157Arabicar2161Arabicen414Englishel358Greekes4548Spanishth5853Thaichr5909Cherokeeiu1977 Inuktitutth2685Thaisr7307Serbianbn1445Banglafr7206Frenchbn3989Banglasr1143Serbiantr3075Turkishchr4756Cherokeeeo6829 Esperantoes4218Spanishbn3990Banglaen7563Englishru1284Russianzh6031Chinesesr5602Serbianja7347Japaneseeo660 Esperantoja7038Japanesear2084Arabiczh7887Chineseen2008Englishsr1054Serbianbn2819Banglachr6959Cherokeeel7737Greeken3822Englisheo1331 Esperantobn5007Banglachr1131Cherokeeeo62 Esperantosr3410Serbiantr7587Turkishiu2686 Inuktitutccp2109Chakmaru6029Russianar5415Arabicru560Russianfr1998Frenchar2097Arabicchr6554Cherokeear5461Arabicen306Englishar1988Arabiceo4569 Esperantoes2707Spanishfr2854Frenchen3318Englishel7887Greekiu5641 Inuktitutzh2938Chineseel2664Greeken3881Englishes3644Spanishel7320Greekeo7540 Esperantotr4085Turkishiu5517 Inuktitutsr3897Serbiantr7667Turkishfr5657Frenchar5370Arabices3897Spanishtr4950Turkisheo7047 Esperantoeo5284 Esperantoiu6 Inuktitutchr6394Cherokeear3548Arabiczh7141Chinesebn3343Banglafr3372Frenchen2230Englishtr806Turkishfr808Frenchen2553Englishen1996Englishiu2035 Inuktitutru7360Russiantr4218Turkisheo1775 Esperantoen3184Englishsr3187Serbianfr2098Frenchiu4487 Inuktitutfr7987Frencheo6773 Esperantoiu3035 Inuktitutru2961Russianar6549Arabicsr857Serbianzh4285Chineseja6363Japanesezh7036Chinesefr1702Frencheo3865 Esperantoes737Spanishccp3648Chakmaccp6386Chakmazh6358Chineseiu6580 Inuktitutiu7811 Inuktitutar7132Arabictr8079Turkishzh4998Chinesetr740Turkishiu1237 Inuktitutth3989Thairu6443Russiansr1512Serbianeo2359 Esperantotr2725Turkishes5258Spanishfr3206Frencheo8076 Esperantoiu3847 Inuktitutzh7631Chinesebn1797Banglasr668Serbianja5867Japaneseel801Greekccp6388Chakmafr7164Frenchel165Greekth6778Thaiiu8059 Inuktituttr5298Turkishfr5358Frenchccp1796Chakmaiu5722 Inuktituten5764Englishiu5544 Inuktitutchr1201Cherokeesr6921Serbianen6997Englishel797Greekth2029Thaith2783Thaija2824Japaneseja2737Japanesetr1224Turkishsr2369Serbianccp3145Chakmaar2131Arabicbn4838Banglaeo2676 Esperantosr2778Serbianchr4019Cherokeeja3562Japaneseen4008Englishchr5762Cherokeeiu3933 Inuktituttr4160Turkishiu5748 Inuktitutccp7572Chakmafr5722Frenchsr119Serbianar6154Arabicel5598Greekeo6971 Esperantoen3305Englishccp5195Chakmafr919Frenchja6392Japaneseru1593Russianccp4615Chakmaes1468Spanishja83Japaneseja1781Japanesesr5374Serbiantr7881Turkisheo3842 Esperantoccp1624Chakmaccp3811Chakmael7281Greekes6331Spanishzh253Chinesees6267Spanishzh277Chinesees3266Spanishchr6630Cherokeeel7255Greekchr2823Cherokeeiu3340 Inuktituttr6054Turkishar5746Arabicbn7342Banglael5429Greekru3255Russianiu3521 Inuktitutccp5388Chakmaiu1161 Inuktitutes7095Spanishar2365Arabicen7026Englishzh137Chineseen6772Englishth3180Thaichr33Cherokeebn8106Banglaeo6283 Esperantofr5681Frenchfr7302Frenchja31Japaneseja440Japanesees841Spanishfr4762Frenchru4126Russianja6530Japaneseru8115Russianccp1099Chakmath68Thaith5599Thairu4145Russianchr6816Cherokeeel1838Greeken3487Englishar2002Arabicchr7066Cherokeeen5478Englishzh4131Chinesear1996Arabictr1569Turkisheo4876 Esperantoccp5005Chakmasr6968Serbianes3165Spanishar3482Arabiczh4783Chinesesr3024Serbianfr1578Frenchja3501Japaneseth254Thaibn8028Banglael6455Greekiu7428 Inuktitutccp7509Chakmatr667Turkishtr3928Turkishzh192Chinesesr2560Serbianchr7674Cherokeeeo1880 Esperantofr6948Frenchth1813Thaies6987Spanishzh5185Chineseen1166Englishsr4730Serbianeo7156 Esperantoccp7245Chakmael8142Greekiu1553 Inuktitutru2385Russianru7459Russianes387Spanishccp5868Chakmath7954Thaibn2647Banglatr3225Turkishes2068Spanishbn6283Banglabn7589Banglafr2278Frenchccp5623Chakmabn608Banglazh4533Chineseel6520Greekja6693Japanesetr1683Turkishth2784Thaitr3792Turkishccp6856Chakmaja5599Japaneseru3502Russianth5490Thaiiu4754 Inuktitutbn3494Banglaccp5277Chakmasr347Serbianccp7324Chakmaiu4015 Inuktituteo6820 Esperantosr4209Serbianzh2388Chineseja2442Japaneseel84Greektr3265Turkishel2506Greekbn4156Banglael2601Greekccp4200Chakmael4654Greekel8028Greeken4156Englisheo205 Esperantofr7647Frenchth980Thaizh4681Chineseccp6154Chakmaccp5781Chakmaru2455Russiantr7446Turkisheo3953 Esperantofr1835Frenches7255Spanishes5398Spanishja8038Japanesebn759Banglatr4738Turkishar3483Arabicbn6041Banglaja906Japaneseel3312Greekbn5737Banglaccp7093Chakmabn3109Banglachr5722Cherokeeja2882Japaneseja3247Japanesefr5678Frenchtr1690Turkishbn5599Banglatr127Turkishar406Arabicbn4423Banglaes4723Spanishiu4621 Inuktitutccp2864Chakmazh6260Chinesear164Arabicccp7541Chakmaes2588Spanishtr3017Turkishchr6584Cherokeeccp6379Chakmaeo6588 Esperantoes8143Spanishru4956Russianth468Thaies7423Spanishzh4451Chinesetr1496Turkishtr6545Turkishfr4869Frenchen3176Englishru1939Russianzh1943Chineseth6860Thaiiu5993 Inuktitutar1127Arabicth3622Thaiiu2914 Inuktitutth4367Thaizh7309Chineseru1255Russianru4302Russianzh2573Chinesetr7335Turkishja1295Japanesees6508Spanishfr3371Frenchar6762Arabicen1975Englishfr6471Frenchfr7921Frenchsr5249Serbianchr1426Cherokeetr1844Turkishen130Englishja6143Japaneseen737Englishru3716Russianzh7527Chinesear7469Arabicja7666Japaneseccp5945Chakmaru2382Russianru4854Russiansr3413Serbianzh7220Chineseru7192Russianes4014Spanishen3384Englishes1452Spanishtr2116Turkishccp8087Chakmath6507Thaith1717Thaitr5675Turkishsr7185Serbianja3462Japanesechr6004Cherokeeccp434Chakmaar3947Arabicel6062Greekccp887Chakmafr5887Frenchtr7801Turkishzh3565Chineseel1668Greekzh7311Chinesear3355Arabicfr5940Frenchchr1829Cherokeeth5774Thaitr2853Turkishccp5872Chakmafr1570Frenchfr7121Frenchar4074Arabicru5341Russianzh6485Chineseiu2469 Inuktituttr5455Turkisheo78 Esperantoes5350Spanishel5425Greeksr2046Serbianar3420Arabicth3027Thaibn7203Banglaeo5202 Esperantoru7858Russianar6964Arabicccp1461Chakmabn4326Banglaeo1189 Esperantoru7635Russianth342Thaien6604Englishccp85Chakmazh1773Chineseen8002Englishzh7558Chinesetr788Turkishbn4523Banglaeo4655 Esperantochr870Cherokeesr5487Serbiantr1347Turkishtr3425Turkishiu3528 Inuktitutzh7978Chinesebn3177Banglabn6488Banglaja7535Japanesetr4926Turkishtr7692Turkishja7636Japaneseja3505Japaneseru4947Russianel4318Greeken220Englishchr54Cherokeeel7928Greekbn7296Banglaru640Russianru10Russiansr5366Serbianth684Thaien3729Englishth2231Thaitr1706Turkishiu2058 Inuktituttr7157Turkishsr6748Serbianja2835Japanesefr4424Frenches7088Spanishru7590Russianen4423Englishth3276Thaisr5142Serbianth7132Thaizh534Chineseeo7451 Esperantosr1689Serbianes2351Spanishja8026Japanesefr709Frenchiu7027 Inuktitutel1353Greekth7039Thaiiu145 Inuktitutiu4106 Inuktitutar7564Arabiczh660Chinesezh3028Chinesechr6203Cherokeear2532Arabicchr4429Cherokeetr247Turkishar3329Arabicchr4404Cherokeear1967Arabicel6907Greektr1947Turkishtr304Turkishzh4794Chinesear2929Arabiciu7231 Inuktitutsr973Serbiantr2304Turkishel1410Greekar7890Arabicccp1007Chakmaen6567Englishes5864Spanishel2175Greekbn2080Banglath4326Thaibn5648Banglaccp7150Chakmazh995Chineseja3664Japanesezh8154Chineseel7331Greekel305Greekfr5844Frenchbn3598Banglaccp3800Chakmasr7586Serbianchr645Cherokeeja7003Japanesear4992Arabicru1205Russianiu2865 Inuktitutja3934Japanesezh2196Chineseiu7234 Inuktitutsr396Serbianja1648Japanesesr5532Serbianar931Arabicar7980Arabicfr3051Frenchbn6902Banglaiu5137 Inuktitutja2413Japanesebn3808Banglazh3153Chinesebn6093Banglael188Greekeo3209 Esperantofr5547Frenchtr6970Turkishccp265Chakmachr7778Cherokeetr4731Turkishel2642Greekes8080Spanisheo2881 Esperantoja4714Japaneseru1985Russianel4998Greekfr2241Frenchen4728Englisheo4400 Esperantoja6856Japanesezh3812Chineseiu1952 Inuktitutar7893Arabicen5545Englishen2700Englishtr4796Turkishru6562Russianen7409Englishfr7088Frenchru3603Russianchr4139Cherokeear5396Arabicfr3346Frenchru5027Russianeo6254 Esperantofr1598Frenchfr4464Frenchsr6538Serbianzh5659Chineseth4108Thaiar5857Arabicbn3323Banglaru19Russianchr4734Cherokeeel5940Greekccp3835Chakmaar2048Arabiceo7839 Esperantoar5895Arabices6989Spanishen789Englishiu6412 Inuktitutja7676Japaneseth4038Thaiel3748Greekes2306Spanishru6310Russiantr6135Turkishes6888Spanishzh6219Chineseja8049Japaneseen3158Englisheo2580 Esperantosr4017Serbianar5650Arabicccp7302Chakmachr2049Cherokeeen7645Englishchr258Cherokeeth699Thaies7609Spanishth3510Thaiiu3820 Inuktitutth7846Thaichr3010Cherokeeccp479Chakmasr3588Serbianccp3275Chakmaru1217Russianchr7961Cherokeeccp7783Chakmaru3367Russiansr2483Serbianiu4851 Inuktitutru2332Russianel749Greekel3518Greeken6685Englishfr5952Frenchth2694Thaith5653Thaith750Thaien1230Englishar5724Arabiceo5926 Esperantoar3812Arabicru1832Russianth4134Thaiccp574Chakmazh6212Chineseccp1021Chakmaru248Russiansr3994Serbianchr7202Cherokeeccp1152Chakmaen3266Englishzh1422Chinesechr6430Cherokeebn3829Banglazh1452Chinesesr4591Serbiansr6640Serbianiu6443 Inuktitutbn7538Banglaar7334Arabicchr6438Cherokeeiu7636 Inuktitutru4723Russiansr250Serbianchr6756Cherokeear6856Arabicchr3140Cherokeeiu3240 Inuktitutsr658Serbianen240Englishen2102Englisheo3145 Esperantoru6731Russianth2950Thaieo7828 Esperantoen4557Englishja3252Japaneseel5092Greekja7425Japaneseen6195Englishsr6015Serbianbn1150Banglafr5066Frencheo7147 Esperantoel4132Greekiu342 Inuktitutth3256Thaiel7507Greekes7556Spanishzh3841Chineseeo4454 Esperantobn7416Banglatr3728Turkishth297Thaitr1164Turkisheo6526 Esperantoccp1412Chakmaccp6796Chakmaccp5459Chakmatr4257Turkishccp7559Chakmabn3241Banglael3016Greekbn3022Banglath2243Thaith2870Thaies7016Spanishccp7899Chakmaja3113Japanesezh8016Chinesefr2141Frenchbn2156Banglafr5824Frencheo6763 Esperantoes452Spanishzh6804Chineseth6452Thaith3039Thaizh3381Chinesefr7124Frenchtr176Turkishel6782Greeken6126Englishja6053Japanesebn2510Banglasr303Serbianchr6142Cherokeeiu635 Inuktitutccp449Chakmazh2523Chineseen1269Englisheo5948 Esperantoiu4029 Inuktituten2275Englishiu173 Inuktitutiu749 Inuktitutzh2589Chineseen6170Englisheo1878 Esperantoiu1913 Inuktitutru2114Russianth3771Thaizh1846Chinesees6519Spanishtr4608Turkishth5587Thaiel978Greekbn4300Banglachr4085Cherokeebn6179Banglafr1153Frenchja353Japanesees6524Spanishchr770Cherokeeel1781Greekth1555Thaiiu493 Inuktituten2094Englishiu7345 Inuktitutchr7849Cherokeebn475Banglachr5763Cherokeees2070Spanishar5775Arabicja4130Japaneseru4793Russianeo4266 Esperantotr428Turkishru4151Russianru6162Russianru7303Russianeo2259 Esperantoeo6965 Esperantoes6417Spanishth5482Thaith5407Thaith3841Thaies6239Spanishtr895Turkisheo8140 Esperantozh3921Chineseru6639Russianth3887Thaiel7378Greekccp5728Chakmael702Greekar2304Arabicsr4504Serbianeo0 Esperantoeo7004 Esperantoth2182Thaiar1308Arabicth796Thaija2044Japanesear498Arabicsr6878Serbianar7474Arabicel8032Greekar7952Arabicen7890Englishchr1646Cherokeefr974Frenchja3844Japaneseth3213Thairu5809Russianzh6269Chinesezh6292Chinesear6112Arabicja700Japaneseru358Russianccp6046Chakmath7350Thaizh2737Chineseel2971Greekth6996Thaiiu4666 Inuktitutja4702Japaneseth664Thaiel7531Greekja2001Japanesesr7454Serbiantr2021Turkishbn2125Banglaccp4396Chakmaccp8123Chakmaes229Spanisheo5879 Esperantochr864Cherokeeccp624Chakmaja5069Japanesezh8159Chinesechr7140Cherokeefr3874Frenchccp5708Chakmaes5973Spanishru3756Russianes6497Spanishbn7111Banglaja8048Japaneseru4480Russianru3061Russianfr69Frenchtr2486Turkishfr7841Frenchzh7145Chineseeo326 Esperantofr2331Frenchsr7071Serbianiu6121 Inuktitutccp2157Chakmatr4505Turkishes486Spanishth4856Thaitr5598Turkishchr5687Cherokeefr8069Frenchar7083Arabicth7997Thaieo4310 Esperantoar5752Arabicsr548Serbianen7862Englishen7531Englishccp5447Chakmaar3960Arabicbn937Banglaccp5936Chakmaes4029Spanishiu6691 Inuktitutar7684Arabicru8067Russianzh4168Chineseel420Greeksr3911Serbianeo117 Esperantoja2258Japanesetr5187Turkishru3271Russiansr1577Serbianccp1270Chakmazh3947Chineseeo5840 Esperantoar1920Arabiczh5588Chinesebn6846Banglaiu7623 Inuktitutfr7863Frenchchr1743Cherokeeccp4360Chakmaiu2116 Inuktitutel3888Greeken2317Englishes4421Spanishel1462Greekiu4707 Inuktituten6226Englishfr3489Frenchbn3969Banglaccp3469Chakmath2797Thaien6146Englisheo3599 Esperantofr792Frenchsr1643Serbianbn5863Banglaes3955Spanisheo2982 Esperantochr1737Cherokeetr6571Turkishccp3602Chakmasr336Serbianeo4053 Esperantoes7390Spanishiu1358 Inuktituten5057Englisheo2529 Esperantochr6514Cherokeeiu2259 Inuktituttr443Turkishzh4904Chinesear6062Arabicsr144Serbianth8171Thaifr3134Frenchfr1289Frenchccp4875Chakmaar763Arabicar252Arabicja5067Japanesear6280Arabiczh3582Chineseel2478Greekel8090Greeken3437Englishfr6912Frenchccp545Chakmaeo2463 Esperantoiu596 Inuktitutar6666Arabicru5780Russiantr6766Turkishel3495Greekbn4235Banglaru7807Russianel636Greekja8062Japanesees5172Spanishsr7743Serbianbn5138Banglachr1871Cherokeeja3952Japanesesr3978Serbiantr1977Turkishen2641Englishccp2009Chakmatr1044Turkishar1494Arabicen3168Englishiu5492 Inuktitutsr3403Serbianth3489Thaiel6426Greekth5451Thaisr1829Serbianccp5047Chakmabn2340Banglazh6374Chineseen8089Englishbn4036Banglabn4734Banglaen3004Englishfr1456Frenchiu713 Inuktitutiu2519 Inuktitutchr2366Cherokeeeo6995 Esperantoar2415Arabicbn7855Banglabn7984Banglafr3832Frenchiu4323 Inuktitutja531Japaneseja7138Japanesetr1217Turkishzh1403Chineseja563Japanesezh3330Chinesezh5882Chinesezh7732Chineseiu1785 Inuktitutbn7910Banglafr6776Frenchth2096Thaiar4827Arabictr3649Turkishtr3826Turkishiu2640 Inuktitutar4326Arabiceo1888 Esperantoiu5101 Inuktitutes3753Spanishtr1649Turkishth4707Thaiel1774Greekru7421Russianchr7733Cherokeesr763Serbianen6032Englishar4914Arabicja2845Japaneseiu5204 Inuktitutchr4701Cherokeeth6387Thaien5728Englishel6009Greekeo2241 Esperantoeo3164 Esperantoel5071Greekiu4776 Inuktitutth637Thaifr3507Frenchchr1485Cherokeetr2327Turkishes4585Spanishzh7102Chineseel7503Greekth2143Thaien2289Englishru5343Russianbn7951Banglafr5873Frenchtr281Turkishfr5359Frenchja1613Japaneseth1418Thaitr3948Turkishtr5045Turkishth2957Thaiel5633Greeksr575Serbianbn7519Banglazh1212Chineseth276Thairu2641Russianth5542Thaisr3421Serbianfr4356Frenchar1241Arabicen7272Englishth4146Thaiar4306Arabicar236Arabicel1811Greekel6789Greekja5429Japanesezh899Chineseja2060Japaneseiu3123 Inuktitutsr7817Serbiansr639Serbianzh5425Chineseiu4475 Inuktitutchr4998Cherokeeru3356Russianth5015Thaiccp403Chakmaeo5973 Esperantoru5690Russianiu5459 Inuktituttr508Turkishar5101Arabicru4726Russianiu5467 Inuktitutsr1117Serbiantr3393Turkishzh5278Chinesezh948Chinesear3806Arabices5925Spanishar5607Arabicsr275Serbianccp2817Chakmaccp5732Chakmael958Greektr7785Turkishccp4655Chakmabn4994Banglatr3618Turkisheo7229 Esperantoja4780Japaneseccp5306Chakmasr6687Serbianel6097Greekar4693Arabicja7064Japaneseiu8002 Inuktitutfr3329Frenchccp1713Chakmaiu3729 Inuktitutar2132Arabicccp1446Chakmaiu3281 Inuktitutth2961Thaisr3841Serbianfr5125Frenchtr7593Turkishen6901Englishtr4607Turkishiu874 Inuktitutsr1797Serbianccp2264Chakmaen6799Englishsr3357Serbianchr6950Cherokeebn3383Banglaccp1878Chakmaeo1593 Esperantoiu7336 Inuktitutes3208Spanishes5931Spanishes1674Spanishtr7379Turkishfr6880Frenchel538Greekel1646Greekccp5350Chakmaccp6767Chakmaeo6538 Esperantosr6961Serbiantr451Turkishtr5077Turkishtr4287Turkishzh5803Chinesees768Spanishru2801Russianbn4463Banglath2464Thaichr7512Cherokeeeo1297 Esperantobn290Banglabn3145Banglael5252Greeken5861Englishes3939Spanishccp3447Chakmasr2236Serbianbn710Banglath6141Thaizh1893Chinesechr2254Cherokeeccp191Chakmaen346Englishes29Spanishes4608Spanishfr5607Frenchel5768Greekiu1196 Inuktitutiu3147 Inuktitutes5323Spanishtr1335Turkishfr4216Frenchja3936Japaneseen6452Englishchr3008Cherokeezh7350Chinesees1212Spanishzh8141Chinesesr1153Serbianfr6774Frenchru4558Russianccp5764Chakmael347Greekth5152Thaifr6040Frenchbn1613Banglaccp1280Chakmazh6227Chinesesr3016Serbianar6178Arabiceo2517 Esperantoru790Russianbn636Banglatr2723Turkishsr6048Serbianar7878Arabicchr6168Cherokeechr5409Cherokeechr3673Cherokeechr6897Cherokeeen5617Englishth4759Thaifr521Frenchja3293Japaneseru7382Russianiu6114 Inuktitutth4915Thaitr5901Turkishel7609Greekzh2869Chineseen2901Englishzh2442Chinesechr5286Cherokeesr696Serbianru5395Russianen2724Englisheo3618 Esperantoen1796Englishar7227Arabices247Spanishiu4235 Inuktitutchr5453Cherokeeru3490Russianccp734Chakmaccp2424Chakmaar1173Arabicccp4020Chakmaccp7664Chakmachr624Cherokeechr3598Cherokeear1692Arabiceo4228 Esperantoccp3306Chakmaen6555Englishfr4211Frenchfr4239Frenchfr5048Frenchiu888 Inuktituten3648Englishiu7806 Inuktitutzh1390Chinesezh1458Chinesesr4958Serbianzh3404Chinesezh4976Chineseru5549Russianth5226Thaizh761Chineseiu5566 Inuktituttr2875Turkishtr6005Turkishccp7507Chakmafr3933Frenchfr6328Frenchru5905Russianchr7868Cherokeeiu6260 Inuktitutth1185Thaith7483Thaiel7471Greekeo4890 Esperantotr1216Turkishel7952Greekiu1097 Inuktituten1740Englishiu1938 Inuktitutja7803Japaneseeo1356 Esperantoth4262Thaiel5631Greeken2496Englishfr3684Frenchiu3545 Inuktituteo1645 Esperantoel2863Greeksr1876Serbianiu7012 Inuktitutccp563Chakmael3301Greekeo5862 Esperantoru5664Russiantr1541Turkishtr7197Turkishccp4484Chakmafr834Frenchchr4037Cherokeetr6427Turkishiu3623 Inuktitutsr5979Serbianeo5189 Esperantoiu7366 Inuktituten4088Englishbn6229Banglachr4408Cherokeefr3499Frenchbn1488Banglaen1244Englishtr911Turkishja198Japaneseiu4936 Inuktitutja6593Japaneseen5063Englishen2893Englishth518Thaiel5372Greekiu3248 Inuktitutru5960Russianen7449Englisheo7311 Esperantoth1035Thaibn1525Banglaen2532Englishth2104Thaiel6029Greekiu1959 Inuktitutar7813Arabicen501Englishes6033Spanishfr6727Frenchzh2639Chinesees3340Spanishfr3274Frenchen7577Englishes1552Spanishru2917Russianeo106 Esperantoru3119Russianth4292Thaith5995Thaichr6098Cherokeetr522Turkishbn3867Banglaes3139Spanishth1515Thaies1480Spanishth5539Thaizh3284Chineseja1237Japanesetr6083Turkishzh3832Chinesesr158Serbianchr2550Cherokeebn4874Banglaar1464Arabicbn4110Banglazh3192Chinesechr5633Cherokeees6347Spanishfr5629Frenchel2407Greekzh6189Chinesezh1475Chineseccp6372Chakmafr7628Frenchar173Arabicccp7516Chakmaru1391Russianel3667Greekes2700Spanishsr4292Serbianiu7000 Inuktitutes674Spanishchr976Cherokeezh1149Chinesebn6680Banglael6128Greekzh148Chinesees4860Spanisheo5669 Esperantoiu1468 Inuktitutbn2585Banglaja7165Japaneseth974Thaiiu3348 Inuktitutja2206Japaneseen7566Englishja1274Japaneseru1427Russianel4269Greekchr6529Cherokeetr470Turkishru4785Russianel3421Greekel1481Greekel4603Greekar397Arabicfr328Frenchru2858Russianiu7640 Inuktitutbn5522Banglaru4067Russiansr4896Serbiantr4232Turkishchr6533Cherokeetr4234Turkishen389Englishbn4683Banglabn4023Banglafr6285Frenches6758Spanisheo6854 Esperantoen3286Englishar7148Arabices1096Spanishen335Englishel4032Greekbn7779Banglaja4419Japanesear2776Arabicar75Arabiciu750 Inuktitutru4662Russianchr3890Cherokeeen3323Englishfr6230Frenchchr1390Cherokeeiu1370 Inuktitutbn3564Banglath1835Thaichr4558Cherokeeel2757Greeken2020Englishen7236Englishel7847Greeken5434Englishbn7372Banglasr3269Serbianfr2312Frenchel7413Greekru674Russianel3349Greeken3865Englishen753Englishfr1645Frenchtr3873Turkishchr7762Cherokeeja7026Japanesechr639Cherokeeccp3571Chakmabn3214Banglael947Greekzh4574Chineseen2965Englishbn7746Banglaccp7660Chakmatr882Turkishfr1738Frenchel2379Greeksr6597Serbianfr7269Frenchar6149Arabicth5930Thaitr593Turkishiu5631 Inuktitutth2748Thaitr7517Turkishen2878Englishchr7243Cherokeeja7149Japaneseja1459Japaneseru2777Russianel5295Greekes1944Spanishru5446Russianru540Russiansr5785Serbianzh1440Chinesees2986Spanishes5555Spanishiu276 Inuktituten396Englishfr8147Frenchzh285Chinesetr2023Turkishccp2515Chakmaja4199Japaneseel3238Greeken4107Englishel4885Greekiu1070 Inuktitutccp3263Chakmaru2770Russianth6216Thaitr7906Turkishel5127Greekzh6393Chineseru6972Russianes277Spanishiu631 Inuktitutel6265Greekeo4186 Esperantochr798Cherokeeja2528Japaneseru3216Russianzh3073Chineseth3779Thaisr4414Serbianchr3391Cherokeeiu258 Inuktitutru1693Russianen2902Englishchr8164Cherokeechr3623Cherokeeja2725Japanesechr1246Cherokeeja6318Japaneseen6481Englisheo3518 Esperantoen4345Englishbn191Banglaen5305Englisheo4720 Esperantoja3138Japanesechr569Cherokeezh6738Chineseeo4653 Esperantoja7719Japaneseiu2943 Inuktitutru5686Russianiu7017 Inuktitutbn799Banglaja7540Japanesechr255Cherokeeiu1282 Inuktitutzh6595Chineseth2065Thaith6647Thaibn582Banglaar4650Arabicbn7515Banglachr6360Cherokeebn811Banglaccp51Chakmael2317Greekeo4356 Esperantoiu6494 Inuktituteo7856 Esperantoja4431Japanesesr1547Serbiansr3645Serbianes4517Spanisheo4028 Esperantochr2212Cherokeees1473Spanishiu4752 Inuktitutsr288Serbianen6244Englishel2867Greekth1681Thaith2663Thaizh1994Chineseccp5517Chakmaiu3213 Inuktitutzh6600Chinesees4809Spanishzh7400Chinesefr4865Frenchzh2227Chineseel1962Greekchr2951Cherokeeen5152Englishiu2454 Inuktitutja5112Japaneseeo2123 Esperantosr1790Serbianzh5794Chineseru3108Russiansr3593Serbiantr1383Turkishja2422Japaneseja6979Japaneseru6146Russianfr4310Frenchar4080Arabicbn5430Banglafr5392Frenchchr4533Cherokeear6004Arabicccp5208Chakmaeo7018 Esperantobn6330Banglasr2543Serbianeo2904 Esperantoru4775Russianar2279Arabicel3217Greekes920Spanishes3224Spanishsr2014Serbianru191Russianccp1815Chakmaes3134Spanishchr1649Cherokeeth6660Thaiel3601Greektr6757Turkishja2615Japanesetr4561Turkishja5090Japanesebn7865Banglaccp6705Chakmaen5393Englishes7885Spanishbn5243Banglaccp4653Chakmafr5703Frenchja5776Japaneseja7472Japanesefr1498Frenchtr3556Turkishru3291Russiantr2580Turkishchr4032Cherokeeja5555Japaneseccp6119Chakmaeo6430 Esperantoth7029Thaiel4260Greekccp7384Chakmaja6207Japaneseru2707Russianar267Arabicbn4002Banglafr2649Frenchccp7819Chakmaen5032Englishel166Greekfr3349Frenchiu6049 Inuktitutja4503Japaneseja6837Japaneseja4923Japaneseeo6453 Esperantoes5666Spanishja1870Japanesees179Spanishth797Thaibn2822Banglaja3602Japanesebn6387Banglabn1467Banglaru4594Russianzh730Chinesefr4848Frenches2196Spanisheo7127 Esperantoru4340Russianiu2945 Inuktitutar6229Arabiceo3830 Esperantoru1906Russiantr805Turkishel6742Greekth7335Thaies3110Spanishel5895Greekfr516Frencheo3410 Esperantoar3204Arabicccp6897Chakmaja2404Japaneseccp3819Chakmaen2075Englishiu2241 Inuktituteo5238 Esperantoccp6493Chakmachr381Cherokeebn5668Banglaen6990Englishbn770Banglaeo1064 Esperantoel7496Greekbn5351Banglasr4636Serbianel3352Greekth1920Thaith6358Thaisr7895Serbianccp3150Chakmazh2032Chinesezh4070Chinesezh882Chinesebn1907Banglachr1204Cherokeeiu8070 Inuktituten2623Englishchr1635Cherokeechr6986Cherokeesr3486Serbiansr4322Serbianzh125Chinesefr3297Frenchccp1670Chakmasr2880Serbiantr1361Turkishzh2267Chineseja1859Japanesefr1653Frenchfr6212Frenchzh283Chineseen6377Englisheo1600 Esperantoes6337Spanishzh7845Chinesetr5934Turkishchr5180Cherokeeccp2927Chakmaar3615Arabicchr3228Cherokeear1365Arabicccp1097Chakmaja2948Japanesetr3834Turkishccp439Chakmasr4380Serbianru7768Russianeo2612 Esperantoel1941Greekar5885Arabicchr7010Cherokeeel3498Greekchr6482Cherokeebn412Banglael8147Greekccp707Chakmaiu3129 Inuktitutchr5499Cherokeechr6830Cherokeeel8009Greekru4721Russianth5526Thairu7547Russianja4360Japanesezh251Chineseeo2751 Esperantoar3211Arabicsr5303Serbianes2872Spanishbn6760Banglath4988Thaizh4469Chineseja6613Japanesesr4886Serbianeo2372 Esperantoeo54 Esperantoja610Japaneseru8073Russianes602Spanishccp7992Chakmazh7784Chineseccp2426Chakmatr1456Turkishes1450Spanishes7149Spanishiu1219 Inuktitutiu4177 Inuktituten1111Englishja4180Japanesesr4287Serbianar2243Arabicbn1312Banglaja7935Japaneseccp5343Chakmaja6366Japanesear2686Arabicsr1371Serbiansr4802Serbiantr5043Turkishar7825Arabicja2243Japaneseel2854Greekccp97Chakmael3907Greekfr6179Frenchchr3629Cherokeeel7800Greekzh2391Chinesechr1436Cherokeesr6066Serbianchr291Cherokeeeo8107 Esperantoru4627Russianfr7448Frenchccp3003Chakmaja8047Japanesebn520Banglaes4740Spanishes4614Spanishsr93Serbiansr6742Serbianja476Japanesesr455Serbianja4244Japaneseiu1283 Inuktitutccp5368Chakmasr6107Serbianccp5900Chakmaeo3603 Esperantoes4725Spanishiu283 Inuktitutzh5072Chineseeo4854 Esperantoru2376Russianes2694Spanishsr681Serbianar727Arabicja1875Japaneseeo5752 Esperantobn7355Banglath1864Thaitr1640Turkishel488Greekth2871Thaija1508Japaneseeo2731 Esperantoes7240Spanishar2893Arabicel5100Greeksr530Serbianen7474Englishes3434Spanishtr1643Turkishar6118Arabictr1095Turkishsr713Serbiantr6312Turkishsr3939Serbianen2688Englishchr830Cherokeebn1614Banglaar5551Arabiczh1748Chineseccp5662Chakmaen1425Englishzh8011Chinesear2935Arabicen548Englisheo4398 Esperantofr5930Frenchiu2515 Inuktitutchr303Cherokeezh2035Chineseiu3959 Inuktitutru3192Russianth6684Thaiar7929Arabicth39Thaitr2314Turkishen8112Englishtr6275Turkishccp1514Chakmaccp2441Chakmaen1479Englishsr25Serbianiu4724 Inuktitutja3318Japaneseel3948Greekzh56Chinesear275Arabicfr1625Frenchtr764Turkisheo2097 Esperantochr6771Cherokeeeo2332 Esperantoar2539Arabicccp7247Chakmazh7953Chineseccp1253Chakmasr2144Serbianbn6160Banglaeo3447 Esperantobn7076Banglaes6935Spanishzh7811Chinesebn5984Banglael2439Greekru7259Russianzh5599Chinesetr7166Turkishsr2135Serbianeo1173 Esperantoes3467Spanishiu7071 Inuktitutfr2538Frenchzh1404Chinesear5349Arabicja39Japaneseja3417Japanesear6186Arabicru5125Russianiu1323 Inuktitutsr4594Serbianiu4909 Inuktitutsr4096Serbiansr7880Serbianen4764Englishen6245Englishth6864Thaifr7301Frenchtr46Turkishiu1306 Inuktitutel4711Greekeo6939 Esperantoeo3970 Esperantoel1413Greekru7334Russianchr707Cherokeeen599Englishar2021Arabiciu5865 Inuktitutsr1608Serbianes4201Spanishru2419Russiantr3190Turkishth958Thaitr4298Turkishtr7936Turkishzh1870Chineseja6996Japanesechr2602Cherokeeel2483Greeken7265Englishes2836Spanishru952Russianja497Japaneseth4458Thaiar1882Arabicccp7088Chakmaen2765Englisheo7383 Esperantofr3411Frenchfr2610Frenchel7589Greekfr1837Frenchbn6686Banglatr6871Turkishth4817Thairu1864Russianccp6013Chakmaeo5401 Esperantotr693Turkishar6812Arabiczh1646Chineseiu2507 Inuktituteo7979 Esperantoja5298Japaneseel7132Greeksr6515Serbianes216Spanishtr1379Turkishel3650Greeken4717Englishja3159Japaneseru3485Russianes6461Spanisheo5407 Esperantoth567Thaifr1429Frenchzh725Chineseiu5391 Inuktitutel5514Greekru4951Russianzh315Chinesebn6579Banglaja101Japaneseeo6581 Esperantoja79Japanesechr2015Cherokeeen549Englishja5274Japaneseen7244Englishes1402Spanishtr2894Turkishel319Greekzh5404Chinesechr2977Cherokeeru772Russianel3450Greekccp5561Chakmabn2888Banglaru1247Russiansr4678Serbiansr2334Serbianes3069Spanishel3725Greekes7471Spanishiu4602 Inuktitutru5462Russianzh3821Chineseru4413Russianbn7217Banglaen3093Englishfr1451Frenches3816Spanishtr3359Turkishccp2895Chakmachr6190Cherokeefr2722Frenchja2299Japaneseru3648Russianiu86 Inuktitutiu7666 Inuktitutel3578Greeksr1569Serbiantr2364Turkishen2150Englishccp6768Chakmaru2169Russianeo305 Esperantoru7952Russianja5538Japaneseru2211Russianchr656Cherokeebn7269Banglabn6442Banglaccp24Chakmaiu8067 Inuktitutbn2336Banglaeo1417 Esperantoes4113Spanishfr4511Frenchja7495Japanesesr1100Serbianccp8138Chakmaar876Arabicccp3314Chakmaccp6148Chakmatr7253Turkishccp1962Chakmath1644Thaifr4120Frenchzh1328Chineseja3415Japaneseja3341Japanesesr2851Serbianbn4008Banglaar3702Arabiceo6104 Esperantosr1354Serbiantr6215Turkishbn8153Banglaeo2380 Esperantoccp3820Chakmaja371Japanesebn6669Banglaccp7623Chakmafr4068Frenchfr1260Frencheo4362 Esperantoel2777Greekel2291Greekchr6615Cherokeees3642Spanishsr514Serbianth3981Thaibn4015Banglaeo5935 Esperantobn6508Banglachr330Cherokeeeo2114 Esperantochr4040Cherokeeja2209Japaneseel6423Greekeo4642 Esperantoccp2827Chakmazh1572Chineseel7614Greekja6981Japanesetr3611Turkishsr3825Serbianth3792Thaien511Englisheo3268 Esperantobn6504Banglaeo4695 Esperantochr530Cherokeeru4196Russianiu626 Inuktitutth5331Thaitr5487Turkishfr7925Frenchja4695Japaneseth6333Thaien7755Englishsr3496Serbiansr4597Serbianbn5413Banglaiu1934 Inuktitutru7951Russianru648Russianth5707Thaizh1052Chinesear6681Arabicchr7063Cherokeezh565Chineseeo1684 Esperantofr5573Frenchiu2907 Inuktitutja5716Japaneseeo5184 Esperantoen7504Englishiu6103 Inuktitutbn2011Banglael708Greekel7118Greekccp3138Chakmafr5Frenchzh7003Chinesefr5060Frenchzh2005Chineseeo844 Esperantoccp1481Chakmael3018Greekccp1130Chakmath4523Thaibn170Banglasr1521Serbianchr6027Cherokeezh7194Chineseccp7990Chakmael869Greekeo5759 Esperantoen676Englishja5316Japanesechr1727Cherokeeiu6314 Inuktitutzh1599Chineseccp4986Chakmaiu5351 Inuktitutel6792Greekes1231Spanishzh6612Chinesezh3931Chineseeo7724 Esperantoar3525Arabicfr7034Frenchccp202Chakmath6110Thaieo6735 Esperantoar298Arabictr6442Turkishtr6319Turkishel5978Greekja7208Japaneseen4308Englishen3271Englishel182Greeksr4778Serbiantr4666Turkishja1599Japanesear2354Arabicth5659Thaies7181Spanishel1088Greekchr6874Cherokeear7780Arabicbn3089Banglaccp655Chakmachr3820Cherokeeeo763 Esperantofr1714Frenchru1025Russiansr3813Serbianar3288Arabicfr4274Frenchchr4369Cherokeefr4033Frenchth2463Thaiccp8103Chakmazh1867Chinesebn393Banglabn3871Banglaeo1114 Esperantoth7982Thaifr506Frenchbn5075Banglaja4328Japanesear4591Arabicfr2378Frenchbn3914Banglath3863Thaiccp1016Chakmath3122Thaizh3262Chinesees4042Spanishru6052Russiansr5915Serbianen829Englishth3018Thaith4484Thairu2077Russiansr4473Serbianar106Arabicel1269Greekeo7044 Esperantoth2484Thaija3Japaneseth4854Thaizh559Chinesezh2662Chinesetr6252Turkishar7612Arabiceo314 Esperantoes6330Spanishel323Greekar1627Arabicfr2723Frenchfr5096Frenchth8081Thaitr368Turkishchr4399Cherokeezh1195Chinesezh5435Chinesechr7523Cherokeees3007Spanishsr7458Serbianzh804Chinesechr5064Cherokeeiu3902 Inuktitutfr8182Frenchiu316 Inuktitutsr7143Serbianccp2223Chakmabn6884Banglaeo5557 Esperantosr2211Serbianccp8160Chakmaen2450Englishtr4388Turkishccp2532Chakmaru4403Russiantr5523Turkishfr6488Frenchtr538Turkishtr5332Turkishtr5631Turkishtr6452Turkishiu677 Inuktituttr4106Turkishbn2247Banglaeo7136 Esperantosr1369Serbianel7849Greekccp4506Chakmaja4065Japaneseja4745Japaneseel4254Greekeo1338 Esperantobn929Banglaes2678Spanishen5783Englishchr1100Cherokeechr1683Cherokeear6337Arabiceo554 Esperantoeo4743 Esperantoeo7072 Esperantofr5097Frenchru1876Russianbn5774Banglaen2834Englisheo3491 Esperantoes5324Spanishsr3534Serbianth6501Thaija1336Japanesetr2913Turkishtr2625Turkishru4939Russianchr4132Cherokeezh3349Chinesebn8139Banglabn430Banglaar6323Arabicbn6191Banglaja133Japaneseru4111Russianchr675Cherokeetr5530Turkisheo3278 Esperantosr2595Serbianfr5637Frenchja824Japanesefr6148Frenchfr3631Frenchel4537Greekbn7604Banglaen3133Englishiu1993 Inuktitutsr6213Serbiansr6991Serbiansr3404Serbianth4227Thaifr310Frenchtr3275Turkishes1854Spanishiu3678 Inuktitutccp4938Chakmael2100Greekes6988Spanishja7964Japaneseja3798Japanesetr4Turkishar893Arabicchr5736Cherokeechr6071Cherokeetr6596Turkishel4415Greekja1825Japanesezh3352Chinesear2202Arabicccp1759Chakmachr3508Cherokeezh7623Chineseru5631Russianzh3864Chinesetr5603Turkishes7900Spanishzh4492Chineseth1478Thaizh2188Chineseiu2666 Inuktitutth3602Thaies3550Spanishru5400Russianfr1520Frenchzh1494Chinesezh6501Chinesezh7851Chineseccp5873Chakmaccp6217Chakmaeo5951 Esperantotr7084Turkishfr7938Frenchzh8161Chineseeo4702 Esperantosr2734Serbianzh611Chinesezh1397Chinesebn4825Banglabn1347Banglaiu6027 Inuktitutru5616Russiansr6296Serbianes6310Spanishzh1431Chineseccp8088Chakmaeo4730 Esperantoth3480Thaija2929Japaneseeo136 Esperantozh6100Chineseja2895Japanesetr2112Turkishen1316Englishbn2148Banglabn2449Banglasr3335Serbianeo3948 Esperantozh241Chinesefr3374Frenchtr6016Turkishchr3038Cherokeeiu3904 Inuktitutsr306Serbianen837Englishja6955Japanesear5466Arabicen4175Englisheo4056 Esperantoel2176Greekru1017Russianfr1565Frenchsr2994Serbianeo6227 Esperantobn2161Banglaeo5849 Esperantoar3408Arabiciu4392 Inuktituttr4763Turkishfr1256Frenchel1239Greekbn816Banglaen2735Englishar4301Arabiceo1150 Esperantotr1907Turkishchr3500Cherokeeeo7469 Esperantoel4577Greekes4700Spanishfr4712Frenchen1492Englishfr4023Frenchja7419Japaneseen647Englishen1183Englishbn3418Banglaja3690Japanesezh1948Chineseja7073Japanesear1011Arabicel3209Greekar7916Arabicccp5001Chakmaes2363Spanishru4164Russianru7720Russianiu3463 Inuktitutes2876Spanishfr4463Frenchen796Englishes6502Spanishiu3022 Inuktitutar5125Arabiciu1314 Inuktitutsr2820Serbianel2903Greekes421Spanishzh3740Chineseth4994Thaisr1765Serbianth253Thaiar6381Arabicccp2395Chakmatr1425Turkishen4330Englishes1015Spanishbn3580Banglaar2610Arabices3108Spanishiu2906 Inuktitutsr7763Serbianru930Russianja3030Japaneseth7152Thaibn2232Banglachr92Cherokeeel6906Greeksr679Serbianzh2739Chineseen6936Englisheo1397 Esperantoes4179Spanishth4088Thaizh7041Chineseel3361Greekfr3918Frenchfr7725Frenchja930Japaneseja3378Japaneseru3330Russianiu6939 Inuktitutes6649Spanishen6486Englishzh4644Chinesechr4495Cherokeeeo7297 Esperantobn3835Banglaja3585Japanesezh6789Chineseru2305Russianzh6240Chineseccp3888Chakmaes4045Spanishja6906Japanesebn3344Banglaar544Arabicen913Englishchr5813Cherokeezh4190Chinesefr2426Frenchzh5606Chinesesr2661Serbianzh6121Chinesefr7122Frenchen7511Englishel5271Greekeo1423 Esperantoeo4920 Esperantosr6301Serbianja7008Japaneseccp7949Chakmaes6687Spanishen3668Englishja6094Japanesezh6703Chineseeo5290 Esperantoel3473Greekzh6090Chinesetr6825Turkishru6270Russianccp3042Chakmaen7641Englishel3037Greekfr6714Frenchsr6531Serbiantr1414Turkishen2080Englishes5846Spanishtr7265Turkishbn7639Banglael6285Greeken978Englishfr6414Frenches5929Spanishiu1789 Inuktitutiu3092 Inuktitutiu5396 Inuktitutru7293Russianja3577Japanesees8085Spanishsr117Serbiantr5781Turkishbn8086Banglaes265Spanishes5873Spanishiu1677 Inuktitutja7161Japaneseru5712Russianzh5557Chinesechr3256Cherokeeen5594Englishtr1191Turkishja4839Japaneseiu2551 Inuktitutja1420Japaneseen425Englishtr3537Turkishes7047Spanishsr1126Serbianchr3911Cherokeechr1986Cherokeear2545Arabicchr3959Cherokeeth7259Thaiar7125Arabicccp5334Chakmaar1221Arabiciu5343 Inuktitutzh3390Chinesetr2055Turkishiu5214 Inuktitutar945Arabiceo7906 Esperantoth69Thaien6514Englishzh6601Chineseth8061Thaiar1338Arabiceo3108 Esperantofr3402Frenchel4893Greekru7059Russianel1368Greekiu6227 Inuktitutsr7106Serbianzh6309Chineseth5939Thaitr2470Turkishzh8123Chinesear967Arabiciu120 Inuktitutsr8140Serbianzh1115Chinesezh2285Chinesezh7244Chinesesr7426Serbiansr6099Serbiantr3239Turkishel1235Greeksr5113Serbianzh6468Chineseen808Englishth414Thaith5739Thairu8047Russianccp3291Chakmaar53Arabicel3293Greekiu7089 Inuktitutar4207Arabiceo7204 Esperantoel3627Greekel5616Greekchr7901Cherokeefr1763Frenchru6415Russianth4003Thaith7675Thaieo3621 Esperantoru1710Russianccp4782Chakmachr3775Cherokeear6617Arabicar1848Arabicsr7226Serbianccp7537Chakmath6511Thaitr2920Turkishzh1647Chinesees5442Spanishtr1623Turkishfr3516Frenchzh466Chineseth7805Thaies298Spanishtr7583Turkishen6114Englishccp257Chakmath6497Thaija4198Japaneseth5024Thaiel7416Greekes8056Spanishfr5011Frenchja4376Japaneseja7207Japanesezh3266Chinesechr5723Cherokeeth6491Thaieo3180 Esperantozh6586Chineseccp4751Chakmaar1647Arabictr2368Turkishccp6127Chakmaar390Arabicccp3948Chakmachr3365Cherokeefr1378Frenchar4480Arabices8137Spanishja489Japanesezh3506Chinesebn7387Banglath4535Thaieo4258 Esperantochr1392Cherokeees3575Spanishen2413Englishccp827Chakmatr437Turkishar5603Arabicccp7410Chakmatr484Turkisheo7460 Esperantotr6533Turkishru2034Russianbn7697Banglazh5263Chinesees1918Spanishen4398Englishth6052Thaieo1366 Esperantoes2227Spanishen2636Englishth2130Thaiccp6558Chakmaiu6431 Inuktitutsr4472Serbiantr1845Turkishth7648Thaichr7190Cherokeetr3907Turkishth7616Thaies7662Spanishth490Thaiiu3831 Inuktitutar536Arabicchr4007Cherokeeen4265Englishccp3870Chakmaeo3230 Esperantochr1433Cherokeezh3218Chineseel4419Greekchr1257Cherokeetr4462Turkisheo6161 Esperantoja4873Japaneseja2889Japanesebn305Banglazh3971Chinesear2157Arabicar2927Arabicru3583Russianiu6818 Inuktitutiu1021 Inuktitutja4541Japaneseja575Japanesees3843Spanishfr7905Frenchfr862Frenchbn5752Banglabn4568Banglaen542Englishar6705Arabiceo2068 Esperantoar3557Arabiceo3448 Esperantoccp577Chakmath7461Thaiar6792Arabicar7188Arabicel1919Greekzh4169Chinesezh6013Chineseru6742Russianth1113Thaitr3820Turkishes2723Spanishiu6646 Inuktitutes1966Spanisheo7436 Esperantoiu3549 Inuktitutiu4964 Inuktitutbn3475Banglazh6877Chineseru1061Russianar4997Arabiczh5872Chineseen6319Englisheo1079 Esperantoes4665Spanishes1530Spanishsr5784Serbianja5422Japaneseru2968Russianja2635Japanesesr364Serbiansr2946Serbianeo3682 Esperantoiu6883 Inuktitutzh6677Chinesetr5115Turkishzh398Chineseeo7291 Esperantoru1327Russianar2361Arabicen300Englishchr3321Cherokeees4242Spanishbn2086Banglasr4459Serbianeo2464 Esperantoth4640Thaisr7987Serbianar6363Arabicar963Arabicar4234Arabicth5179Thaizh2928Chineseen4282Englishja5666Japaneseiu2950 Inuktitutes859Spanishth3032Thaichr5115Cherokeeccp5783Chakmaru2121Russianru5257Russianzh5936Chinesechr190Cherokeeccp4775Chakmaar3029Arabicel7165Greekth6645Thaifr4747Frencheo3496 Esperantobn981Banglazh7865Chinesebn3981Banglaiu285 Inuktitutar3308Arabicth2309Thaiar7782Arabicja7013Japaneseja5662Japaneseccp91Chakmaja5751Japaneseja7777Japanesebn7120Banglaes4089Spanishar6840Arabicbn4627Banglabn578Banglafr2196Frenchchr6239Cherokeeru1166Russianiu2997 Inuktitutchr6365Cherokeear3843Arabiceo2650 Esperantotr2652Turkishtr904Turkishbn209Banglasr4014Serbianchr2055Cherokeees7615Spanishsr6488Serbianru6255Russianeo698 Esperantoes4976Spanishes1127Spanishiu2008 Inuktitutja6917Japanesezh5696Chineseeo200 Esperantoel6389Greektr3682Turkishccp3812Chakmabn7484Banglaeo2910 Esperantoes537Spanishru4686Russianbn7276Banglath2942Thaieo7793 Esperantobn1133Banglaja4319Japanesetr7569Turkishchr4917Cherokeefr1793Frenchja4097Japaneseja720Japaneseja629Japanesefr1602Frenchtr1740Turkishchr3110Cherokeebn5843Banglaes4592Spanishfr8142Frenchru4023Russianru15Russianzh7757Chinesezh7806Chinesees6244Spanishccp4819Chakmafr1719Frenchen1839Englishth6384Thaien5401Englishfr5056Frenchiu2005 Inuktitutzh2207Chineseth4455Thaisr6648Serbianiu5788 Inuktitutru6124Russianth3338Thaiar3419Arabicsr3330Serbianeo866 Esperantoiu4695 Inuktitutchr3448Cherokeeeo1290 Esperantoccp7166Chakmatr4499Turkishja4703Japaneseru8142Russianel2794Greekfr554Frenchja118Japaneseiu4449 Inuktitutth1782Thairu6129Russiansr2147Serbianja7604Japaneseccp5843Chakmaen5801Englishtr6831Turkishfr7763Frenchja4765Japanesechr4026Cherokeesr433Serbianeo7412 Esperantoes7279Spanishel5168Greeken2745Englishes4351Spanishar538Arabicar1661Arabiciu8008 Inuktitutja2642Japaneseth3414Thaizh7752Chinesezh1139Chinesebn8135Banglaen4906Englishen1624Englisheo5985 Esperantobn3208Banglachr886Cherokeees5218Spanishar1585Arabicen6735Englishiu6469 Inuktitutru5796Russianfr3287Frenchru7579Russianar411Arabicja5756Japanesezh5587Chineseeo7516 Esperantoiu558 Inuktitutsr4614Serbianfr7527Frenchel6634Greekfr3290Frenchccp8065Chakmaru2175Russiantr6980Turkishar6824Arabiceo3878 Esperantoja5025Japaneseccp6875Chakmaiu3096 Inuktitutiu4092 Inuktitutja3430Japaneseen692Englishel7975Greeken3543Englishja5838Japanesesr23Serbianja58Japanesesr2926Serbianchr4027Cherokeetr3856Turkishzh7001Chinesear4266Arabices7820Spanishar3611Arabiciu1450 Inuktitutja1147Japanesesr3661Serbianfr1198Frenchel6124Greekru4369Russianbn2426Banglaja5888Japanesees6525Spanishfr1215Frenchel4147Greekbn195Banglaen1558Englisheo2469 Esperantoccp1828Chakmaru6964Russianccp1505Chakmatr716Turkishsr127Serbianru1038Russianccp3244Chakmasr4250Serbianbn4818Banglasr7893Serbianccp2918Chakmaru81Russianen6626Englishchr6910Cherokeeel4848Greekar6546Arabicbn1303Banglafr5685Frenchru109Russianbn505Banglael5135Greeken7928Englishfr8190Frenchiu6058 Inuktitutar509Arabicfr2707Frenchiu4747 Inuktitutccp1445Chakmachr4292Cherokeeeo4162 Esperantoar4289Arabicen3221Englishfr6241Frenchen1432Englishccp1282Chakmaccp6738Chakmabn4374Banglaes3402Spanishes6834Spanishar2187Arabicru7660Russianel3769Greekru6904Russianchr2570Cherokeeru2297Russianes2308Spanishru3438Russianja3625Japanesefr5718Frenchchr3098Cherokeesr5181Serbianar6755Arabicccp6488Chakmasr1013Serbianja4087Japaneseccp7091Chakmath921Thaieo3574 Esperantobn3215Banglachr2066Cherokeeja7037Japanesesr1634Serbianeo3416 Esperantotr5666Turkishfr4652Frenchiu2155 Inuktitutes1043Spanishchr5419Cherokeetr3479Turkishfr3829Frenchiu6743 Inuktitutja1790Japaneseccp4166Chakmaja7956Japanesear4922Arabices2563Spanishsr3085Serbianar5199Arabicbn1258Banglazh4914Chineseru7615Russianchr2963Cherokeeiu1183 Inuktituttr165Turkishfr3378Frenchth4839Thaiel3811Greekth4849Thaiiu403 Inuktitutiu3239 Inuktitutbn3232Banglaiu7952 Inuktitutiu1722 Inuktitutes4518Spanishtr1403Turkishtr2026Turkishsr7865Serbianar2516Arabicel5937Greekru3847Russianth705Thairu6550Russianar1400Arabicchr2494Cherokeear921Arabicen3399Englisheo5618 Esperantoth6756Thaiccp4256Chakmafr1314Frenchiu6391 Inuktitutiu7243 Inuktitutccp2044Chakmazh6558Chinesezh486Chinesees6561Spanishiu1961 Inuktitutja614Japaneseel147Greeken59Englishes5135Spanishccp3340Chakmaccp6254Chakmabn3537Banglabn3320Banglafr397Frenchja7844Japanesesr1200Serbianbn5251Banglaccp5190Chakmaes4775Spanishar6400Arabiceo567 Esperantoth1350Thaichr7755Cherokeeel3758Greekth973Thaiel3860Greekes5015Spanishtr4935Turkishel6952Greeken2869Englishchr3298Cherokeeiu6717 Inuktitutes5559Spanisheo7098 Esperantoel4526Greekiu1242 Inuktitutccp3790Chakmaja6751Japanesezh1070Chinesezh3859Chinesebn1005Banglaccp409Chakmachr3888Cherokeetr6323Turkishccp66Chakmaja2360Japanesesr4204Serbianja7386Japaneseccp5813Chakmaes1246Spanishccp2470Chakmaar682Arabictr1488Turkishbn7641Banglaeo1627 Esperantofr640Frenchiu1589 Inuktitutth323Thaitr4244Turkishen4426Englishccp3894Chakmabn6845Banglael2480Greekbn2257Banglaes6800Spanishchr6240Cherokeechr6845Cherokeees1746Spanishar527Arabicja3757Japaneseja6923Japaneseja7932Japanesesr5819Serbianth6246Thaizh7971Chineseiu1998 Inuktitutes3675Spanishccp1407Chakmaeo6062 Esperantozh3628Chineseel4953Greekchr618Cherokeechr4401Cherokeeth5215Thaiccp2449Chakmaeo8027 Esperantoes7079Spanishar5702Arabiciu772 Inuktitutbn3001Banglaeo5215 Esperantoja5554Japanesetr3291Turkishel3704Greekccp1678Chakmasr5977Serbianbn1769Banglael959Greekel7657Greekfr157Frenchtr1210Turkishccp3366Chakmazh3643Chinesees7620Spanishchr2354Cherokeeeo440 Esperantoja81Japanesebn4903Banglachr2896Cherokeees1435Spanishsr6586Serbianja784Japanesees212Spanisheo1940 Esperantobn890Banglatr6246Turkishar2446Arabices1696Spanishar2050Arabicccp7236Chakmaru154Russianel6443Greekel302Greekeo6991 Esperantoja4604Japanesezh6051Chinesebn1636Banglaes4779Spanishzh3279Chineseccp5268Chakmaru6336Russianbn425Banglatr2462Turkishzh1764Chineseja6664Japanesear4233Arabiciu4830 Inuktitutru5970Russianeo4746 Esperantochr6940Cherokeeth3934Thaitr3958Turkishfr5700Frenches7645Spanishiu3447 Inuktitutsr3773Serbianar8151Arabicja996Japaneseru1629Russiantr7767Turkishja706Japanesechr5483Cherokeeja2686Japaneseeo3238 Esperantoth7464Thaija5908Japaneseeo7392 Esperantosr7680Serbianfr5069Frenchru6576Russianzh5053Chinesezh6708Chinesefr1385Frenchbn3902Banglazh4268Chineseccp1805Chakmabn1016Banglachr7867Cherokeebn5326Banglaes4709Spanishbn1333Banglaccp8089Chakmaes1354Spanishfr7812Frenchiu1500 Inuktitutja3954Japaneseel5016Greekchr6869Cherokeeru1714Russianru4810Russianes4303Spanishsr4895Serbianzh3848Chineseja4122Japanesees2255Spanishja6414Japaneseel4618Greeksr1048Serbiantr6561Turkishel105Greekbn661Banglaiu2467 Inuktitutbn200Banglabn3050Banglazh7310Chinesechr7781Cherokeeth7Thaieo5517 Esperantoes3063Spanishiu5256 Inuktitutchr7270Cherokeeel269Greekes2695Spanishccp4977Chakmaeo5391 Esperantoes2702Spanishru7037Russianccp6049Chakmasr1431Serbianar1784Arabices7911Spanishru7829Russiantr1602Turkishtr3951Turkisheo4214 Esperantoja1891Japaneseth7673Thaitr2166Turkishru1757Russianes2515Spanishccp556Chakmachr3447Cherokeefr3322Frenchru4185Russianar3468Arabicel4303Greekja3860Japaneseccp1508Chakmasr4230Serbianes4152Spanishja7045Japanesear7814Arabicru5155Russianeo801 Esperantoru7760Russiantr7413Turkishsr5609Serbianes7213Spanishtr4693Turkishja7978Japaneseel5255Greektr4945Turkishth7488Thaibn4482Banglazh3341Chineseeo7099 Esperantobn5967Banglazh7248Chinesebn7524Banglaccp5379Chakmabn7726Banglatr3130Turkishar4304Arabicen7076Englishsr3712Serbianja409Japaneseiu5703 Inuktituteo6788 Esperantoccp7034Chakmabn6571Banglaja6023Japaneseja8135Japanesesr3832Serbianth150Thaifr1955Frenchiu4335 Inuktitutbn6323Banglachr3570Cherokeechr7191Cherokeefr5015Frenchzh5319Chineseru1264Russianar7662Arabicbn795Banglasr8011Serbianes2499Spanishtr6103Turkishru4447Russianru4763Russianiu6037 Inuktitutth6518Thaitr2188Turkishzh6170Chinesees5584Spanishfr1214Frenches3277Spanishru1922Russianth210Thaien3355Englishru1077Russianes717Spanishfr3819Frenchzh4006Chinesear7984Arabicsr4882Serbianel1513Greektr7769Turkishccp4170Chakmath2670Thaiar7667Arabicchr7028Cherokeeja4125Japaneseru272Russianel7892Greekchr5467Cherokeechr2920Cherokeear5903Arabicru2010Russianbn4772Banglath8174Thaifr5576Frenchth3955Thaija2577Japaneseja8120Japanesezh2566Chinesefr2232Frenchsr5475Serbianru5909Russianel7464Greeksr186Serbiantr3325Turkishsr1913Serbianbn3238Banglazh3959Chinesesr6033Serbianar4208Arabicru8174Russianchr7524Cherokeezh4243Chinesefr7975Frenchth6686Thaien1831Englishfr6746Frencheo1811 Esperantoeo6463 Esperantoeo8180 Esperantoes1738Spanishiu4536 Inuktitutsr242Serbiantr2584Turkishzh7042Chinesechr6455Cherokeeiu730 Inuktitutru3887Russianar5998Arabicja1649Japanesear1677Arabictr240Turkishar658Arabiceo2460 Esperantoiu6533 Inuktitutja6828Japanesezh1384Chinesezh2939Chinesechr7481Cherokeeru2334Russianfr4371Frenchchr4378Cherokeeen6778Englishzh6052Chinesetr6483Turkishen620Englishbn3975Banglafr6650Frenchiu2439 Inuktitutar1004Arabicja3582Japanesees3604Spanishru2152Russianzh6707Chinesefr5074Frenchtr8074Turkishes5024Spanishfr8Frenchfr2109Frenchsr2400Serbianzh6893Chinesechr5553Cherokeeen2522Englishen2537Englishchr7857Cherokeeel4571Greekth1475Thaichr913Cherokeechr4299Cherokeefr3177Frenchen2795Englishsr6839Serbianes8177Spanishru1120Russianbn2467Banglachr5636Cherokeeen2660Englishiu234 Inuktitutccp7825Chakmaccp6362Chakmachr4004Cherokeeiu2839 Inuktitutzh1310Chinesear7945Arabicsr506Serbianes4361Spanishja6140Japaneseru933Russianfr3020Frenchth5087Thaisr4335Serbianfr2585Frenchar1591Arabicfr1633Frenchsr4095Serbiansr4921Serbianzh4202Chineseccp2505Chakmasr7697Serbianfr3674Frenchel4220Greekes2716Spanishja6056Japanesechr5243Cherokeeiu4325 Inuktitutel423Greeken3219Englishzh6187Chinesesr4846Serbianen766Englishru4361Russianja6588Japaneseiu3633 Inuktitutzh217Chinesesr6110Serbianeo743 Esperantozh7092Chineseel1957Greekes152Spanishfr594Frenchel1007Greekeo252 Esperantoiu2328 Inuktituten5488Englishfr3596Frenchen2205Englishen4013Englishes6920Spanisheo500 Esperantotr4435Turkishen6730Englishth1355Thaichr6127Cherokeechr7038Cherokeeja6703Japanesetr2547Turkishen6495Englishar4015Arabicchr5952Cherokeees4510Spanishja4491Japaneseccp2625Chakmafr2776Frenchccp6513Chakmaes3298Spanishen6601Englishfr3610Frenchfr5353Frenchiu3139 Inuktitutth693Thaizh4329Chinesees7214Spanishru2429Russianel5866Greekth1078Thaiar4901Arabiczh2405Chineseen7481Englishiu406 Inuktitutes7781Spanishel6755Greekes310Spanishsr5070Serbianzh4054Chineseja2484Japanesezh1925Chinesechr2649Cherokeeiu588 Inuktitutth6272Thaies2192Spanisheo1935 Esperantoel7998Greekel5085Greekru7716Russianes8039Spanishen3963Englishfr251Frenchja7055Japaneseth7636Thaifr3992Frenchfr2491Frenchsr2099Serbiansr7086Serbianzh7541Chinesesr6370Serbianar4456Arabicbn6048Banglatr4189Turkishbn7890Banglaar6474Arabices2426Spanishccp4181Chakmaes4937Spanishru4199Russianiu5856 Inuktitutja4766Japaneseccp3231Chakmael5096Greektr1597Turkishel5009Greekchr2686Cherokeechr4944Cherokeeiu306 Inuktituteo7380 Esperantotr2476Turkisheo2065 Esperantotr4746Turkishar345Arabictr3409Turkishccp7471Chakmaja4987Japanesetr7807Turkishru3637Russiantr8101Turkishru7501Russiansr4638Serbianfr4836Frenchth8002Thaies4916Spanishiu1442 Inuktitutsr4304Serbianfr183Frenchsr8032Serbianru5103Russianeo3946 Esperantosr5653Serbianar4497Arabicbn6267Banglaru7703Russianja2625Japaneseja6947Japanesefr1902Frenchtr7642Turkishccp4918Chakmasr899Serbianru476Russianar4334Arabicar5437Arabicru1560Russianth2537Thaizh6919Chineseen3649Englishru2895Russianes2909Spanishth4066Thaitr1074Turkishar7087Arabicen7574Englisheo5890 Esperantoiu389 Inuktitutel6132Greekiu7553 Inuktituteo3691 Esperantozh6196Chinesesr6702Serbiantr3499Turkishar449Arabicen6980Englisheo3903 Esperantoar1094Arabiciu1428 Inuktitutth7433Thaija2389Japaneseen4646Englishes7004Spanishiu549 Inuktitutth2255Thaifr4151Frenchbn4150Banglaen2734Englisheo5886 Esperantoth4409Thaiel6255Greekfr7228Frenchth5656Thaith4521Thaitr4989Turkishzh6836Chinesear6041Arabicel3804Greekja3579Japanesetr610Turkishja4358Japanesechr4789Cherokeebn2582Banglasr6380Serbiantr2447Turkishel593Greekiu1188 Inuktitutes8093Spanishel7666Greekth6239Thaien399Englishsr7752Serbianen7658Englishfr576Frenchja3835Japanesebn6537Banglafr4645Frenchfr7982Frenchru1829Russianth1603Thaien2842Englishsr7834Serbianbn878Banglafr8155Frenchzh5307Chinesetr5203Turkishel5313Greekeo2616 Esperantochr6978Cherokeeth7881Thaizh5326Chineseth5984Thaiar3135Arabices3905Spanishfr7361Frenchja3477Japaneseth363Thaiiu7737 Inuktitutchr6284Cherokeefr311Frenchru7410Russianth7955Thaichr4377Cherokeeeo1510 Esperantoeo5010 Esperantoen3725Englishes6923Spanishth2064Thaiel6043Greekja5491Japaneseel3050Greekel5250Greeksr110Serbianar2721Arabicsr1767Serbianzh4083Chinesebn7816Banglabn1914Banglaja6356Japaneseru4470Russianeo7649 Esperantozh5137Chineseel4472Greektr1968Turkishth6727Thaisr7786Serbianzh5939Chineseja1928Japanesees8141Spanishzh7024Chineseel234Greekel5333Greekar8153Arabicja4Japanesesr8070Serbianzh807Chinesebn8141Banglael2959Greekfr3147Frenchccp259Chakmath133Thaisr7334Serbianth4851Thaiccp4011Chakmaccp5724Chakmael3654Greekeo7458 Esperantofr7752Frenchchr3476Cherokeeel3290Greekeo8068 Esperantoen1866Englishiu7303 Inuktitutru3606Russianru7133Russianccp1706Chakmaccp7204Chakmafr1419Frenchsr8044Serbiantr5695Turkishes1584Spanishiu5607 Inuktitutth3960Thaifr3681Frenchiu5060 Inuktitutbn4680Banglael4358Greekchr1657Cherokeear5843Arabictr5206Turkishtr6860Turkishru5147Russianen534Englishzh3820Chinesezh6854Chinesear951Arabicel1502Greekfr885Frenchchr3710Cherokeefr1308Frenchar276Arabicth2371Thaitr7527Turkishzh5271Chineseru7593Russianja4763Japaneseru5583Russianar1394Arabicbn1513Banglachr2332Cherokeefr4269Frenchsr7760Serbianfr6581Frenchbn8035Banglaiu2951 Inuktitutru2974Russianbn2799Banglaeo2924 Esperantoes5078Spanishar807Arabicth6661Thaitr1739Turkishru1054Russiantr5493Turkishiu761 Inuktitutru8162Russiansr8002Serbianbn2535Banglaes5828Spanishfr649Frenchth5185Thaiel1611Greekru675Russianiu7210 Inuktitutccp238Chakmath4258Thaiar6023Arabiceo4798 Esperantoen3568Englishar5376Arabices164Spanishes5763Spanishzh4975Chinesetr3518Turkishfr5122Frenchtr6173Turkishar3362Arabicel398Greekel7580Greekes7929Spanishel7632Greekzh1110Chinesechr4861Cherokeeen3998Englishchr1096Cherokeeeo5729 Esperantoes3449Spanishccp5481Chakmaeo7799 Esperantoccp11Chakmaccp4879Chakmaes8003Spanishchr6500Cherokeeiu7263 Inuktitutja6977Japanesefr3461Frenchru6131Russianru6472Russiansr4490Serbianiu1922 Inuktituten5241Englishtr3617Turkishel4216Greektr5975Turkishccp115Chakmael1727Greekeo5182 Esperantoja5384Japanesesr6630Serbianiu5772 Inuktitutbn4443Banglaes8023Spanishbn2533Banglatr6617Turkishes910Spanishfr3089Frencheo210 Esperantoth7973Thaiar6623Arabicccp4016Chakmachr4053Cherokeeccp3141Chakmaeo4311 Esperantoeo8052 Esperantochr4895Cherokeeja3714Japaneseen4654Englishfr6868Frenchtr8080Turkishzh1569Chinesefr7821Frenchiu697 Inuktitutbn3772Banglaccp1211Chakmaja2171Japanesesr1081Serbiansr4817Serbianiu3720 Inuktitutccp6719Chakmaes5520Spanishar7750Arabicchr1835Cherokeeccp7642Chakmael8062Greekel2314Greekbn3610Banglatr2196Turkishzh6564Chineseja3774Japanesear6393Arabicccp6515Chakmael891Greekru3952Russianar5742Arabicfr1403Frenchfr1072Frenchar7418Arabices3674Spanishja4348Japaneseen164Englishja5318Japanesezh7278Chineseel3847Greekru1652Russiansr2768Serbianfr8086Frenchbn404Banglachr3145Cherokeesr1255Serbianzh6220Chinesees3232Spanishar4123Arabiceo5815 Esperantoeo1683 Esperantoiu8107 Inuktitutbn3462Banglaes848Spanisheo3784 Esperantoccp2875Chakmafr6626Frenchbn7846Banglaja2362Japanesezh3634Chinesezh5396Chinesebn272Banglaes6796Spanishja7108Japaneseru346Russianbn503Banglaiu2391 Inuktitutfr6823Frenchchr1926Cherokeechr138Cherokeeru2063Russianzh7306Chinesebn5783Banglael5583Greekfr5815Frenchsr779Serbianbn7944Banglaar4618Arabicbn5900Banglachr496Cherokeechr5162Cherokeeja298Japaneseiu7036 Inuktitutes8146Spanisheo1316 Esperantosr130Serbianbn7338Banglaeo2899 Esperantoccp2482Chakmafr5745Frenchzh3178Chineseen6384Englishchr4110Cherokeeen1488Englishzh2712Chineseiu5982 Inuktitutzh1071Chineseru1896Russiantr5167Turkishel2500Greekth4162Thaizh794Chineseel3512Greekes6305Spanishja3745Japaneseiu7389 Inuktitutru5272Russianccp2027Chakmaar836Arabices2274Spanishel6994Greekbn3005Banglaes7334Spanishja175Japaneseja7460Japaneseeo6486 Esperantoth1144Thaibn7450Banglasr5599Serbianzh1686Chineseccp1385Chakmael8132Greekes5699Spanishru5052Russianar5362Arabicchr4727Cherokeeja4938Japanesesr5187Serbianzh624Chineseel6103Greekth1412Thaija215Japaneseeo3051 Esperantosr623Serbianar2576Arabicbn874Banglael2625Greekja4584Japaneseja5197Japanesechr926Cherokeeccp5785Chakmachr922Cherokeeccp4426Chakmaeo2060 Esperantobn7469Banglaiu3140 Inuktituteo7512 Esperantoes3193Spanishru5019Russiansr3879Serbianar2712Arabicsr4269Serbianru2562Russianfr4903Frenches6380Spanishar7285Arabicru6122Russianiu4109 Inuktitutiu272 Inuktitutth4406Thaieo6290 Esperantoes5772Spanishsr77Serbianja8095Japaneseiu1579 Inuktitutth1351Thaisr3567Serbianel984Greekel4400Greekbn6924Banglasr6132Serbianja3016Japaneseccp918Chakmaiu4672 Inuktituttr6955Turkishes3960Spanishes1461Spanishes2832Spanishccp4948Chakmaccp4025Chakmaccp3983Chakmaen1972Englisheo1973 Esperantoar1211Arabicbn6403Banglaeo1301 Esperantoth726Thaiiu1622 Inuktitutru2497Russianja6027Japanesesr5146Serbianbn7042Banglaeo5329 Esperantoccp2457Chakmaar6204Arabictr3801Turkishiu1 Inuktitutbn7373Banglachr7559Cherokeefr7536Frenchja6983Japaneseru5849Russianzh6701Chinesetr3124Turkishru3688Russianar7617Arabicel6000Greekiu2464 Inuktitutfr113Frenchja1896Japanesesr1807Serbiantr972Turkishccp1931Chakmael1930Greekru5223Russianfr1624Frenchja6881Japaneseth3417Thaith6307Thaiar6426Arabictr1535Turkishzh3417Chinesefr6730Frenchel2727Greekccp4198Chakmaiu593 Inuktitutru5296Russianbn2567Banglabn824Banglaen5813Englisheo4689 Esperantoiu255 Inuktitutccp5499Chakmaru5199Russianeo7754 Esperantofr3083Frenchccp2959Chakmath1726Thaiiu4653 Inuktitutru1846Russianar4424Arabicbn2798Banglaeo2392 Esperantofr4984Frenchsr5079Serbianeo7869 Esperantoeo6727 Esperantochr5236Cherokeeja2616Japanesefr6283Frencheo7149 Esperantoar3608Arabictr4229Turkishen2325Englishzh3342Chineseth5120Thaiccp2191Chakmaru4557Russianar4224Arabicel2108Greekiu8131 Inuktitutru5011Russianzh5569Chineseeo405 Esperantotr3938Turkishar1097Arabicccp7340Chakmabn5458Banglaen4568Englishiu7134 Inuktitutsr1062Serbianzh5205Chinesees5977Spanishzh4564Chinesezh6140Chineseen4580Englishel3945Greekiu1298 Inuktituten5471Englishzh2505Chinesesr4969Serbiantr684Turkishar1247Arabicccp351Chakmabn5575Banglael5078Greekru303Russianru5604Russianru3944Russianth2223Thaith2710Thaies5197Spanishtr4419Turkishccp6833Chakmaes240Spanishja5278Japaneseeo7776 Esperantoel6301Greekja5990Japanesebn3486Banglaru719Russianru7917Russianccp1279Chakmachr948Cherokeefr5593Frenchsr4421Serbianel1131Greeken3845Englisheo4263 Esperantoes4884Spanisheo1321 Esperantoiu130 Inuktitutiu2532 Inuktitutru1517Russianfr4925Frenchfr6213Frenchel5888Greekiu7977 Inuktituttr7630Turkishtr1624Turkishsr2012Serbianar4147Arabicccp3619Chakmaru2656Russianchr3547Cherokeees1060Spanishfr2102Frenchsr2626Serbianes5118Spanishbn5356Banglaen6575Englishtr4933Turkishzh521Chinesezh7590Chineseiu6181 Inuktitutbn2196Banglaja1396Japaneseccp940Chakmachr5145Cherokeeen5446Englishel5728Greekchr2794Cherokeezh2616Chineseeo7851 Esperantotr6814Turkishru7636Russianth3112Thaitr6635Turkishzh1933Chineseeo6351 Esperantoru3109Russianja2520Japanesefr4873Frenchbn4795Banglaccp4351Chakmaes1799Spanishiu6066 Inuktituteo3660 Esperantoeo8160 Esperantofr612Frenchar889Arabicsr2692Serbiansr3749Serbiansr8061Serbianth592Thaiccp5939Chakmatr7317Turkishar7675Arabictr543Turkishzh5151Chineseccp368Chakmaes2911Spanishen4620Englishiu4120 Inuktitutru1968Russiansr5567Serbianar2367Arabicfr907Frenches5268Spanishen3576Englishes5804Spanishtr6620Turkishzh7369Chinesear5833Arabicar3539Arabicja3091Japanesear6730Arabicen7427Englishja4776Japaneseel4870Greektr3658Turkishel6606Greekccp2468Chakmasr2653Serbiantr444Turkishth3763Thaiccp2231Chakmaccp2407Chakmaja2166Japanesechr6449Cherokeeen1855Englishja5720Japaneseru4743Russianar794Arabicbn7557Banglaen1424Englisheo5114 Esperantoru2943Russianiu1487 Inuktitutru6290Russiansr3252Serbianccp5245Chakmatr1195Turkisheo6300 Esperantobn6871Banglachr3032Cherokeeth7658Thaisr2796Serbianja6686Japanesetr4070Turkishchr2889Cherokeetr4372Turkishccp1717Chakmaja6553Japanesechr7932Cherokeebn3114Banglaru6680Russianiu4702 Inuktitutth7555Thaitr4456Turkishbn3782Banglaru2973Russianru839Russianru8082Russianccp1376Chakmaar50Arabicel7271Greekbn5022Banglael753Greekel7789Greekeo6170 Esperantoth3641Thaisr2962Serbianar4041Arabicar6718Arabicbn7797Banglaar3466Arabicth4734Thaifr5301Frenchccp3008Chakmaccp6349Chakmaar6941Arabicen6180Englishsr501Serbianru6321Russianfr6483Frenchfr545Frenchbn5513Banglaen7370Englishen1863Englishiu7380 Inuktitutsr7253Serbianth3957Thaiccp2365Chakmaes7445Spanisheo1726 Esperantoccp979Chakmaiu3310 Inuktitutsr6645Serbianru938Russianbn1827Banglaru2275Russianzh7026Chinesefr8044Frenchbn7956Banglatr4076Turkishsr1026Serbianru7721Russianja6775Japaneseru2523Russianen3182Englishiu4476 Inuktitutiu4657 Inuktitutzh3455Chinesear1152Arabiczh3131Chinesear6169Arabiceo1696 Esperantoth1143Thaisr2744Serbianfr8161Frenchbn4476Banglaja4525Japanesezh5022Chineseru4442Russianru5467Russianchr214Cherokeeru3089Russianen5110Englishes6262Spanishth1160Thaieo7078 Esperantoccp6926Chakmaes1156Spanishth198Thaiar105Arabicchr4169Cherokeefr703Frenchja5162Japaneseiu3825 Inuktitutru4492Russianar1032Arabiceo728 Esperantozh940Chinesezh4667Chinesefr5512Frenchbn137Banglaar2735Arabicja404Japaneseel576Greekja1654Japaneseiu3722 Inuktitutbn3038Banglaeo2120 Esperantoes1677Spanishru6794Russianchr2669Cherokeeiu911 Inuktitutsr5029Serbianbn5681Banglasr6887Serbianel7925Greekfr3713Frencheo3331 Esperantoel6158Greekchr3808Cherokeees4316Spanishru2652Russianru6150Russianja2463Japaneseja6141Japaneseth7105Thaizh1067Chinesesr3171Serbianja3338Japanesees5568Spanishtr5183Turkishzh1749Chinesezh7612Chinesechr2841Cherokeeel3175Greekel5068Greekbn2433Banglafr758Frenchtr5989Turkishbn7913Banglaes241Spanishzh2672Chinesesr5087Serbianeo7559 Esperantofr4103Frenchsr3177Serbianiu6311 Inuktituttr1408Turkishar1932Arabicel683Greekzh7216Chineseeo4711 Esperantobn5047Banglaiu815 Inuktitutth3712Thaitr3680Turkishel7469Greekar7904Arabiciu177 Inuktitutru3232Russiantr1882Turkishzh5830Chinesezh941Chinesesr2367Serbianja6662Japaneseja2376Japaneseru1141Russianru2023Russianeo2015 Esperantoar3649Arabicsr2827Serbianzh75Chinesesr5229Serbianen5026Englishja7547Japaneseru6204Russiansr2833Serbianfr7616Frenchth2198Thaieo1676 Esperantoja738Japaneseiu4017 Inuktitutth6989Thaiccp2437Chakmazh716Chinesezh3490Chinesezh2924Chineseen4114Englisheo1774 Esperantobn6175Banglabn8161Banglath154Thaith2782Thaiel1118Greekfr4481Frenchtr7312Turkishfr5598Frenchbn4542Banglaeo1956 Esperantoth7903Thaith8025Thaith6529Thaiiu742 Inuktituten6773Englisheo2034 Esperantoar2863Arabices4106Spanishel4838Greeken6491Englishiu3317 Inuktitutiu8031 Inuktituten1514Englishen4985Englisheo2560 Esperantofr6711Frenchar7122Arabiciu942 Inuktitutbn7903Banglaen507Englishja1260Japaneseja6352Japanesetr3923Turkishth2715Thaichr7920Cherokeefr4983Frenchtr4262Turkishiu2514 Inuktitutchr4891Cherokeees279Spanishes244Spanishfr3642Frenchen1155Englishel6194Greekel5827Greekfr7747Frenchiu5382 Inuktitutes3067Spanishes475Spanishchr4920Cherokeefr6541Frenchel2188Greekccp1909Chakmaccp4202Chakmatr8072Turkishiu1987 Inuktitutja5502Japaneseth126Thaija8132Japaneseen6050Englishfr4866Frenchfr5151Frenchbn4642Banglaiu2743 Inuktitutel3380Greektr7204Turkishth6341Thaifr1816Frenchchr7866Cherokeeja6496Japanesesr8074Serbianes4767Spanishbn1553Banglafr7262Frenchar1138Arabicccp306Chakmath7680Thaibn2328Banglaccp4083Chakmafr5579Frenchchr40Cherokeezh5973Chineseeo2690 Esperantozh3246Chineseeo5027 Esperantoja7221Japaneseeo2167 Esperantosr6540Serbianfr8045Frenchiu505 Inuktitutchr6880Cherokeeja4509Japanesear3239Arabicfr3281Frenchbn7777Banglaar7394Arabicen783Englishja3804Japanesetr264Turkishen4399Englishru7066Russianiu7392 Inuktitutfr6450Frenchsr7508Serbianbn7735Banglaiu7462 Inuktituten2830Englishar5378Arabiceo7161 Esperantoth78Thairu2549Russianccp7176Chakmaar365Arabicbn712Banglaccp1013Chakmafr2859Frenchsr3497Serbianzh4618Chineseeo5425 Esperantofr1592Frenchru8040Russianeo8014 Esperantobn7929Banglasr913Serbianfr6281Frenchchr1510Cherokeezh4331Chineseiu4216 Inuktitutzh1976Chineseel3826Greekar217Arabicel3475Greekccp7160Chakmaja5066Japanesefr3041Frenchiu6654 Inuktitutchr7774Cherokeeccp742Chakmaen5274Englishzh3489Chineseccp415Chakmabn4776Banglaeo1130 Esperantoru5083Russianth6702Thaiiu1765 Inuktituteo1077 Esperantoru7471Russiansr244Serbianccp2516Chakmabn996Banglaja4615Japaneseth5818Thaiiu2537 Inuktitutzh5127Chinesear3228Arabicru4370Russianth1611Thaija3828Japanesebn936Banglaeo4901 Esperantoes2101Spanishsr6795Serbiantr5688Turkishel3424Greeksr5697Serbianiu4035 Inuktitutchr790Cherokeetr1150Turkishen712Englishzh1427Chineseja504Japanesezh5124Chinesetr4337Turkishja1008Japaneseru1539Russianzh6275Chineseiu4990 Inuktitutja5453Japanesefr5152Frenchja127Japaneseeo1780 Esperantoel769Greekja7498Japaneseja6022Japanesesr1293Serbianar1120Arabictr7680Turkishzh4986Chinesezh8112Chineseeo5024 Esperantotr2896Turkishbn5711Banglaiu7363 Inuktitutsr2895Serbianeo214 Esperantofr3452Frenchzh868Chineseiu7788 Inuktitutccp3222Chakmachr75Cherokeeth2395Thaiccp1792Chakmaiu964 Inuktitutccp61Chakmael1Greekru2942Russianja5648Japanesefr7042Frenches5542Spanishtr6945Turkishccp6126Chakmachr8098Cherokeeeo3364 Esperantoar5653Arabicfr5131Frenchja326Japanesesr5908Serbianccp3377Chakmael1327Greekfr2531Frenchja7475Japanesesr5433Serbianiu4489 Inuktitutja815Japanesetr2459Turkishzh5388Chinesebn4335Banglath5432Thaiel3319Greekar4937Arabicfr5483Frenchja4253Japaneseccp6663Chakmaeo2313 Esperantoth6023Thaifr1253Frenchtr7879Turkishsr6679Serbianiu2708 Inuktitutiu7309 Inuktitutth6072Thairu2804Russianzh8058Chineseel346Greeksr2197Serbianar3595Arabicccp2320Chakmaeo8101 Esperantofr4413Frenchfr6481Frenchiu6256 Inuktitutru1563Russianru1156Russianru5580Russianth5709Thaies5811Spanishzh6290Chinesear3060Arabicar6271Arabicchr5845Cherokeeel6774Greekzh3770Chineseel1458Greekth6682Thaiel4331Greekfr5820Frenchth3633Thaizh2574Chinesetr5021Turkishbn2334Banglael1711Greekccp6588Chakmazh1575Chineseja4630Japanesetr5494Turkishbn57Banglaja6513Japaneseiu4625 Inuktitutel7337Greekbn7793Banglafr7870Frenchiu7048 Inuktitutbn3936Banglaes1954Spanishar4004Arabicru2808Russiansr8020Serbiantr880Turkishes1679Spanisheo1262 Esperantoru6985Russiansr1095Serbianeo6340 Esperantotr4119Turkishja1479Japanesetr3372Turkishzh1259Chineseru1335Russianeo7019 Esperantoel7045Greekel5926Greekiu6023 Inuktitutar6536Arabicchr5732Cherokeefr8151Frenchchr3498Cherokeeeo3439 Esperantoccp3134Chakmaja3202Japanesesr4605Serbiantr8190Turkishru2794Russianes2338Spanishiu7386 Inuktituttr1993Turkishiu873 Inuktitutel5345Greekel5706Greekth7734Thaiccp5352Chakmachr5682Cherokeeja4677Japaneseth3839Thaija4276Japaneseeo2398 Esperantoiu5596 Inuktitutar5503Arabicth6371Thaitr5876Turkishccp3347Chakmaeo7830 Esperantoiu7140 Inuktitutja1819Japaneseth4812Thaibn714Banglasr7357Serbianzh7962Chineseel786Greekar1215Arabiczh2516Chineseeo2130 Esperantoja6020Japanesesr781Serbianchr1067Cherokeeccp2432Chakmaiu3803 Inuktitutel6993Greekbn3171Banglaiu352 Inuktitutiu1315 Inuktituttr7535Turkishbn3107Banglael1421Greekiu1043 Inuktitutccp4635Chakmaja6523Japanesezh3378Chineseth6290Thaith4955Thaiel1678Greekbn489Banglaccp1145Chakmachr605Cherokeear7143Arabicchr6254Cherokeeeo5710 Esperantoar1696Arabicchr5992Cherokeeeo8003 Esperantoja904Japanesees6429Spanishru284Russianes6523Spanishar7716Arabicccp3902Chakmabn124Banglael2564Greekel8000Greekccp7704Chakmael3165Greekiu3456 Inuktitutiu3604 Inuktitutar4278Arabicccp7132Chakmaru768Russianru5349Russianar3824Arabicchr1719Cherokeeel5942Greekfr3530Frenchtr2979Turkishen699Englishru430Russianes188Spanishja5444Japanesesr596Serbiansr1238Serbianzh6796Chinesees23Spanishar5600Arabicel477Greekccp7732Chakmath2094Thaibn4059Banglath2626Thaija6422Japanesezh1250Chineseen2396Englishzh3427Chinesechr3103Cherokeeth1247Thaizh6179Chineseen8180Englishfr3081Frenchsr4397Serbianth3179Thaien2260Englishes6797Spanishfr5639Frenchzh5164Chinesebn2903Banglaen4726Englishsr5715Serbianiu1263 Inuktituteo2836 Esperantotr2325Turkishfr1053Frenchja1345Japanesesr1631Serbianchr165Cherokeeen3670Englishth3909Thaichr600Cherokeeja5106Japaneseen6830Englishccp4081Chakmaiu4681 Inuktitutsr1262Serbianeo5666 Esperantotr5822Turkishzh6287Chinesear5776Arabiciu7432 Inuktitutth1447Thaitr325Turkishel2910Greekbn5608Banglaccp2281Chakmaes3586Spanisheo5126 Esperantoes7351Spanishel1660Greeksr4498Serbianzh949Chineseeo6179 Esperantoar4413Arabicfr2940Frenchel3530Greektr5252Turkishtr1087Turkisheo3572 Esperantosr2950Serbianzh5476Chinesefr7147Frenchar465Arabicbn7433Banglafr6820Frenchfr4868Frenchth3719Thairu2065Russianes6620Spanishth7451Thaisr2610Serbianzh7367Chinesezh1038Chineseen7828Englishes6829Spanishiu1605 Inuktitutiu2709 Inuktitutja4423Japaneseru7116Russianfr7799Frenchtr616Turkishru3366Russianfr2775Frenchzh3904Chinesetr5260Turkishsr1020Serbianja475Japanesear7648Arabicbn1764Banglaccp7608Chakmaen864Englishfr1123Frenchru7611Russianiu6863 Inuktitutsr511Serbianel7405Greeken2685Englishja4497Japaneseja7872Japanesetr1800Turkishja1058Japaneseccp4452Chakmath161Thaifr7465Frenchja4603Japanesebn1865Banglaar857Arabicel3864Greekiu1611 Inuktitutzh1707Chineseeo940 Esperantoeo7689 Esperantoru6634Russiantr7341Turkishru1314Russiansr5588Serbianth2983Thaiar377Arabicja5373Japaneseth3571Thaiiu5431 Inuktitutchr4984Cherokeees8074Spanishth1025Thaizh2898Chineseel1716Greekccp5310Chakmafr1488Frenchtr1409Turkishchr526Cherokeeja7379Japanesetr3083Turkishzh5942Chineseen5391Englisheo2555 Esperantoes190Spanishes4025Spanishiu6963 Inuktitutbn105Banglatr4578Turkishiu6051 Inuktitutzh7226Chinesetr4599Turkishbn3332Banglaeo4733 Esperantozh7069Chinesechr1999Cherokeebn3759Banglaiu3851 Inuktitutsr7970Serbianel5088Greekru5569Russianzh2483Chinesees3926Spanishbn7205Banglaccp1701Chakmachr1847Cherokeefr7322Frenchchr227Cherokeeja8161Japanesees6416Spanishsr7989Serbianzh7624Chinesebn6559Banglaeo2914 Esperantoiu869 Inuktitutja1775Japaneseel779Greekru5161Russiantr6660Turkishja4374Japaneseiu6708 Inuktituttr7668Turkishen6846Englishzh803Chinesear4058Arabicccp1260Chakmaeo4476 Esperantoen4027Englishiu7579 Inuktitutja2012Japanesezh3374Chinesefr2096Frenchen1293Englishja3545Japaneseru6910Russianfr3254Frencheo1827 Esperantoja721Japaneseeo5146 Esperantoen3090Englishel4153Greekel7050Greekeo5627 Esperantoeo7984 Esperantoeo2556 Esperantofr1046Frenchiu1092 Inuktitutth7735Thaith6224Thaibn7939Banglafr3256Frenchru4988Russianzh4592Chinesear2469Arabiczh7562Chinesechr6651Cherokeeja1864Japaneseeo2862 Esperantobn637Banglafr2833Frencheo6800 Esperantoth6364Thaien5800Englishth676Thaith5875Thaiiu6285 Inuktitutja658Japaneseel4418Greektr2659Turkishtr8035Turkishru3573Russianar4363Arabiciu6680 Inuktitutja4216Japanesebn5317Banglazh2327Chinesechr7836Cherokeefr2248Frencheo2635 Esperantofr1813Frenchccp6871Chakmath2142Thaibn1900Banglatr5376Turkishes7501Spanishth1348Thaibn2255Banglaiu1250 Inuktitutes308Spanishbn5550Banglaru7321Russianth8006Thaies6742Spanishru4457Russianar1844Arabicchr3697Cherokeeen4984Englishchr5867Cherokeear2709Arabiciu282 Inuktitutel7343Greekja7612Japanesees2926Spanishel3623Greekth3123Thaiccp7356Chakmachr2932Cherokeeiu6455 Inuktitutchr1982Cherokeetr4199Turkishen779Englishiu6845 Inuktitutja3978Japaneseeo3765 Esperantochr3338Cherokeeth5135Thaien7294Englishccp4707Chakmaeo2286 Esperantochr8013Cherokeeiu4698 Inuktitutel34Greekccp7447Chakmaen1043Englishja828Japaneseth4639Thaizh7992Chineseccp2083Chakmaeo2400 Esperantofr1901Frenchru7158Russiansr3129Serbianen2160Englishja3295Japaneseth2789Thaiccp5029Chakmaen3787Englishel2145Greeksr3032Serbianru6493Russianiu1351 Inuktitutccp6990Chakmachr3065Cherokeear4138Arabicsr716Serbianfr4670Frenches3479Spanishar7384Arabicccp2438Chakmaru5663Russianbn4429Banglaeo5863 Esperantoccp4149Chakmachr3815Cherokeeel3061Greekfr2231Frenchfr7932Frenchen5006Englishar603Arabicth2480Thaiccp7657Chakmaeo5175 Esperantoru3677Russianzh1091Chinesezh1391Chinesees1314Spanishen6108Englishchr1378Cherokeees1361Spanishfr175Frenchsr3048Serbianar422Arabicja0Japanesebn3069Banglasr4124Serbianth2888Thaizh742Chineseen2764Englishtr5143Turkishchr923Cherokeeel4531Greekru7029Russianbn235Banglabn5917Banglazh1232Chinesetr4039Turkisheo4902 Esperantoru8053Russianbn3667Banglaeo6437 Esperantochr4588Cherokeesr2550Serbianfr2190Frenchzh7694Chinesechr3342Cherokeebn6606Banglaeo4293 Esperantoen1203Englishbn6858Banglaar4892Arabices5137Spanishtr3470Turkishbn5058Banglachr1669Cherokeebn5258Banglaes2272Spanishar8060Arabicen3345Englishth5747Thaifr691Frenches4444Spanishtr3032Turkishfr5605Frenchccp366Chakmaiu5420 Inuktituten5182Englishru5924Russianbn2476Banglaiu4100 Inuktitutsr2739Serbianja1644Japanesezh7443Chinesees7872Spanishfr2356Frenchru802Russianth2266Thaiel145Greektr1153Turkishbn7877Banglasr3111Serbianth1866Thaies6941Spanishar7310Arabicfr5755Frencheo6897 Esperantoja6016Japanesesr3521Serbianzh5880Chineseiu6236 Inuktitutes6236Spanishen3744Englishbn6932Banglaen1135Englishsr5730Serbianeo2863 Esperantobn333Banglaru6814Russianja7582Japaneseth7248Thaien6431Englisheo2027 Esperantoja6537Japaneseru6756Russianchr1337Cherokeesr2589Serbianeo5226 Esperantoccp7702Chakmaeo5162 Esperantochr2159Cherokeeeo288 Esperantotr135Turkishtr72Turkishchr1554Cherokeezh6761Chineseen5185Englisheo1955 Esperantobn7667Banglafr793Frenchiu7313 Inuktitutchr2580Cherokeeen7021Englishccp2170Chakmaru2836Russianeo7622 Esperantoar2919Arabicbn6591Banglaeo6238 Esperantofr5298Frenchiu3321 Inuktitutja48Japanesesr2530Serbianth301Thaija6690Japanesetr4122Turkishzh2943Chineseiu3378 Inuktitutzh5710Chineseru6979Russianccp4327Chakmaen7946Englishsr3761Serbianccp1821Chakmasr4796Serbiansr5404Serbianbn5187Banglaen1790Englishsr2096Serbianeo8032 Esperantotr7716Turkisheo3048 Esperantochr2204Cherokeefr2195Frenchsr6096Serbianes2773Spanishen3462Englishar3738Arabicbn5749Banglaja3812Japaneseen4501Englishth4766Thaitr7035Turkishiu1507 Inuktitutccp1802Chakmaru7366Russianeo4956 Esperantofr1986Frenchiu783 Inuktitutja3503Japanesezh2471Chineseel6189Greekeo7853 Esperantosr2111Serbiantr5148Turkishiu3568 Inuktitutsr3130Serbianel7222Greekes1812Spanishar201Arabicccp138Chakmath4198Thaiiu3351 Inuktitutel1627Greeksr4255Serbianen5158Englishar5478Arabicar7498Arabictr1913Turkishiu8163 Inuktitutth1378Thaiel5190Greekzh1079Chinesear6028Arabiciu6308 Inuktitutccp5924Chakmaccp6639Chakmasr5894Serbianfr5188Frencheo4010 Esperantoth226Thaiar1302Arabicbn4434Banglatr2340Turkishes406Spanishsr6682Serbiansr3373Serbianru5099Russianchr2360Cherokeeru1634Russiantr7251Turkishar2986Arabicar5372Arabicth3512Thaibn7179Banglaar7302Arabicfr302Frenchja3784Japanesesr5723Serbiantr783Turkishzh1425Chinesebn4881Banglaru3927Russiantr3003Turkishzh1141Chineseccp486Chakmatr2193Turkishth7239Thaiiu6720 Inuktitutzh2686Chinesesr227Serbiantr1022Turkishchr7689Cherokeeiu4793 Inuktituteo3498 Esperantoja3319Japaneseru4486Russianchr4841Cherokeeiu1197 Inuktituttr1433Turkishbn5956Banglaar5909Arabicbn3384Banglaccp1982Chakmachr2528Cherokeebn1341Banglachr2501Cherokeeeo4615 Esperantoru584Russianru1761Russianccp1814Chakmaes2857Spanishru1966Russianth5533Thaitr5566Turkishel7011Greekzh1657Chineseeo4517 Esperantoth5661Thaisr2601Serbianar6109Arabiczh169Chinesezh6862Chinesebn3642Banglaar2819Arabicccp7823Chakmaja5733Japaneseen6189Englishzh835Chineseja1247Japaneseeo609 Esperantochr6592Cherokeeel1186Greektr4514Turkishja4157Japaneseiu2736 Inuktitutja5559Japaneseel7678Greeken1736Englishth4723Thaichr1586Cherokeesr6256Serbianes6860Spanishru3184Russianru5753Russianar159Arabicbn7788Banglachr3260Cherokeechr7025Cherokeefr563Frenchru3943Russianzh4675Chinesesr1911Serbianfr7744Frenchiu5739 Inuktitutes2651Spanisheo1317 Esperantoth6611Thaitr2174Turkishru1371Russianth6567Thaith7048Thaiccp6282Chakmaes4289Spanishth3517Thaiiu5157 Inuktitutccp5628Chakmaar101Arabicel7889Greekja6802Japanesebn7608Banglaes6852Spanishiu3709 Inuktitutru2678Russianeo7964 Esperantofr317Frenchfr6116Frenchiu7150 Inuktitutru634Russianeo6989 Esperantoar7317Arabicbn5217Banglaes1045Spanishes6905Spanishfr8120Frencheo6776 Esperantoen1564Englishzh2136Chinesear2164Arabicccp3885Chakmath2487Thaichr8091Cherokeeeo8024 Esperantotr754Turkishen4823Englishja3651Japanesear1048Arabicbn439Banglachr5154Cherokeeel4901Greekeo7061 Esperantoes5385Spanishja8089Japaneseel7522Greeksr4277Serbiansr6825Serbianfr1944Frenchsr5836Serbianchr4987Cherokeeen4814Englishccp2144Chakmaes5255Spanishel2125Greekar5487Arabicar652Arabicsr238Serbianccp6136Chakmazh683Chinesebn4242Banglabn7575Banglaar6123Arabicsr6957Serbianes5450Spanishzh4756Chinesees7101Spanishzh7570Chineseen1341Englishzh325Chinesees2002Spanishes5935Spanishja1676Japanesebn1562Banglaja5514Japanesesr385Serbianccp1117Chakmazh1859Chinesezh6604Chinesebn373Banglaccp5518Chakmazh4065Chineseja7623Japaneseja3888Japaneseru3053Russiansr6351Serbianfr3075Frenchchr5508Cherokeeccp4042Chakmaja2445Japanesechr329Cherokeeru6175Russianes4872Spanishsr1493Serbianccp1886Chakmaen590Englishtr306Turkishzh3275Chinesechr4765Cherokeees288Spanishen5959Englisheo4441 Esperantofr2717Frenchja6754Japaneseru7348Russianru5868Russianbn2845Banglasr7655Serbianfr220Frenchfr7006Frenchiu4090 Inuktitutzh5762Chineseth7213Thaien7072Englishar3796Arabicel7858Greekbn4942Banglasr6178Serbianeo6596 Esperantoru3500Russianes1240Spanishzh165Chineseth1021Thaith3247Thaiar2255Arabicchr1567Cherokeefr6929Frenches5904Spanishiu7940 Inuktitutccp94Chakmaen4462Englisheo6048 Esperantotr6741Turkishja5142Japaneseen6434Englishel3933Greekbn2130Banglafr3906Frencheo7609 Esperantoru5717Russianar2443Arabicccp3287Chakmatr6359Turkishtr7562Turkishfr6993Frenchzh5761Chineseeo6972 Esperantoja4906Japanesesr1978Serbianeo2843 Esperantobn496Banglaen6188Englishchr5767Cherokeeccp748Chakmaeo1411 Esperantoeo3063 Esperantobn7889Banglaes5447Spanishiu1153 Inuktitutbn1188Banglaccp3214Chakmafr4907Frenchiu4049 Inuktitutar2747Arabicja1394Japanesees325Spanisheo1923 Esperantoja5146Japanesesr5355Serbiansr6417Serbiansr6512Serbiantr476Turkishzh1341Chinesezh4505Chinesezh4174Chinesefr8073Frenchar4390Arabiceo1458 Esperantoth601Thaiar3719Arabicru2720Russiantr4703Turkishsr393Serbianes5217Spanishiu6402 Inuktitutsr3259Serbianbn1506Banglazh3622Chineseccp1809Chakmaeo7202 Esperantoth4818Thaieo7125 Esperantofr5663Frenchbn7503Banglazh3794Chinesesr2015Serbianfr7855Frenchzh1428Chineseja7130Japanesebn1611Banglachr1836Cherokeechr4276Cherokeechr8188Cherokeeiu2545 Inuktitutja6384Japanesesr2934Serbianzh1676Chinesees7539Spanishbn8005Banglaes4271Spanishccp6419Chakmasr3899Serbianru3563Russianel324Greekccp1895Chakmaiu1502 Inuktitutiu4074 Inuktitutru8158Russianiu99 Inuktitutccp2291Chakmaccp6676Chakmath5859Thaiar1850Arabicar872Arabiciu6917 Inuktitutiu5831 Inuktitutel1835Greektr2302Turkishar6017Arabicel4108Greekiu2378 Inuktitutja3131Japaneseth2077Thairu7645Russianeo1949 Esperantoeo2850 Esperantotr5380Turkishtr3902Turkishen3208Englishzh5536Chinesear2108Arabicja2053Japanesebn5531Banglath2229Thaiccp320Chakmaja7363Japanesezh860Chineseeo4132 Esperantochr5522Cherokeesr6334Serbianar7665Arabicfr1953Frenchfr7719Frenchja6954Japaneseru483Russianeo6614 Esperantoen4896Englishes3050Spanishes4562Spanishfr5393Frenchja797Japanesebn2574Banglath4947Thaieo771 Esperantoth4435Thaiar3281Arabicsr2581Serbianru7709Russianth2339Thaizh7139Chinesear4457Arabicchr3589Cherokeechr1907Cherokeebn6927Banglaccp4526Chakmachr3331Cherokeees4431Spanishja2751Japaneseeo5465 Esperantoel6016Greeken3186Englishzh1334Chineseccp6855Chakmaes5634Spanishes6895Spanishsr2627Serbianfr6789Frenchth4551Thaiel101Greekth1134Thaiar1292Arabiciu6482 Inuktitutru8057Russianzh6667Chineseja5015Japaneseccp1306Chakmaeo1910 Esperantochr4403Cherokeees1100Spanishth5318Thaith5425Thaitr2375Turkishccp359Chakmaeo2669 Esperantotr7860Turkishth1650Thaizh2622Chineseiu3938 Inuktitutchr5614Cherokeeel1069Greekfr3494Frenchbn6079Banglael4352Greekel6744Greekja6643Japaneseel7061Greeksr5914Serbianchr1824Cherokeees2465Spanishth2200Thaith4951Thaibn1447Banglaeo6383 Esperantoja6169Japaneseja227Japanesesr5815Serbiantr4834Turkishth8077Thaisr516Serbiansr6089Serbianes3157Spanishel3632Greekiu5536 Inuktitutsr4171Serbianar2869Arabiceo3472 Esperantosr1974Serbianzh820Chineseccp7269Chakmaen3886Englishes130Spanishes8101Spanishar2696Arabicar4775Arabicccp1651Chakmatr1009Turkishsr2336Serbiansr4909Serbiansr7968Serbianccp6613Chakmaccp4642Chakmaiu28 Inuktitutfr6709Frenchja635Japanesezh614Chinesesr7138Serbianru3506Russianiu1080 Inuktitutth5445Thaifr7683Frenchja4950Japanesechr7546Cherokeeeo5052 Esperantoes3589Spanishru130Russiansr382Serbiantr5399Turkishfr231Frenchchr4679Cherokeechr7923Cherokeees2504Spanishtr5649Turkishzh7118Chineseiu1285 Inuktitutja1709Japanesesr1241Serbiansr7026Serbianar5501Arabictr3192Turkishes2837Spanishfr4581Frenchccp5851Chakmabn1712Banglath3507Thaiar1962Arabicth5295Thaiel1181Greekru2675Russianen7335Englishchr4062Cherokeetr843Turkishth1391Thaiar5727Arabiczh5613Chineseth5974Thaizh1539Chinesees5100Spanishbn6433Banglazh7828Chineseen6950Englishel6680Greekfr4349Frenchchr200Cherokeeiu7297 Inuktituttr7768Turkishja5630Japanesetr3597Turkisheo1289 Esperantofr6535Frenchccp4572Chakmaru1541Russianzh4954Chinesear5300Arabicel4850Greekes7524Spanishja4324Japanesesr365Serbianccp2771Chakmaeo908 Esperantofr8189Frenchbn950Banglael1515Greektr1833Turkishiu7191 Inuktitutsr1061Serbianchr2333Cherokeetr3986Turkishar5631Arabiceo8070 Esperantoja6121Japanesees1828Spanishiu6470 Inuktitutth8122Thaiccp2064Chakmazh892Chinesefr2086Frenchzh6089Chineseen5464Englishar3037Arabicth6498Thaiccp64Chakmafr7459Frenchar2214Arabicsr577Serbianccp7786Chakmasr667Serbianar3841Arabicen7594Englishsr6891Serbianja5876Japaneseru3351Russiantr6086Turkisheo19 Esperantoth2536Thaieo3884 Esperantoen8023Englishth2560Thaisr4302Serbianzh3776Chineseel1976Greekru3165Russianel2761Greekeo353 Esperantofr7629Frenchru1238Russianen4170Englishccp6356Chakmabn4113Banglatr67Turkishtr2059Turkishru4494Russianbn7783Banglael782Greekth4881Thaiel2330Greekchr5010Cherokeear1746Arabicen5452Englisheo3855 Esperantochr3028Cherokeees3170Spanishtr3740Turkishja2594Japanesechr1411Cherokeees6353Spanisheo481 Esperantoeo5264 Esperantoru2502Russianbn4578Banglaeo4302 Esperantobn5189Banglafr5988Frenchja2145Japaneseel5130Greekiu1348 Inuktituten947Englishar3100Arabicbn7672Banglael5471Greekiu5277 Inuktitutth5632Thaiar2811Arabicru2141Russianzh6556Chinesesr1075Serbianel6288Greekes2236Spanishth4397Thaiar7519Arabiciu1265 Inuktitutchr3134Cherokeeel3780Greekchr1062Cherokeees2098Spanishth5391Thaiccp5539Chakmaen4757Englishsr4178Serbianel6816Greeken2799Englishiu8094 Inuktitutja1454Japaneseru2701Russianzh7386Chineseiu2600 Inuktitutja1283Japanesees1580Spanishfr5740Frenchar7178Arabicen6515Englishzh3112Chineseja2886Japanesefr5692Frenchfr1655Frenchth2604Thaichr392Cherokeear4287Arabicar6159Arabicchr245Cherokeechr834Cherokeear6736Arabicen2793Englishel4755Greekth3946Thaitr2363Turkishsr2159Serbianeo1185 Esperantochr8169Cherokeeel7211Greekiu6014 Inuktituten5755Englishiu6297 Inuktitutccp7200Chakmachr3354Cherokeeja6191Japanesetr3019Turkishchr3328Cherokeeeo1693 Esperantozh58Chineseja5953Japanesefr4046Frenchru5918Russianzh2079Chineseel5546Greeksr7470Serbianar4474Arabicsr4782Serbiantr7066Turkishccp4976Chakmabn684Banglaiu6063 Inuktitutiu6411 Inuktitutsr1538Serbianfr7109Frenchchr1968Cherokeesr383Serbianja5637Japaneseth7620Thaiccp2849Chakmasr12Serbianeo5717 Esperantoccp3880Chakmazh2549Chinesebn4080Banglazh4156Chineseja5366Japanesechr3468Cherokeeth7671Thaizh7107Chineseel5121Greekes8190Spanishiu6550 Inuktitutiu648 Inuktitutchr447Cherokeeeo7955 Esperantoiu2474 Inuktituteo7466 Esperantoel3281Greekel5580Greekchr5784Cherokeezh345Chinesees2893Spanishtr3815Turkishar2705Arabicja5758Japanesebn2118Banglachr5038Cherokeees6982Spanishru3628Russianen3986Englishiu5969 Inuktitutzh2330Chineseth4920Thaiel5404Greekbn7546Banglaar2130Arabiczh457Chineseiu3483 Inuktitutru4889Russianfr31Frenchccp1391Chakmabn6226Banglaar1077Arabicfr560Frenchth7250Thaiccp8001Chakmaes7343Spanishth7689Thaieo1013 Esperantoeo7794 Esperantoel3102Greekeo490 Esperantoja4905Japanesesr5064Serbianccp6474Chakmaja6139Japanesezh4622Chineseth582Thaifr214Frenchru409Russianchr679Cherokeefr657Frenchchr7530Cherokeeen1127Englishth6687Thaiar600Arabiceo7494 Esperantotr253Turkishel4536Greeksr6777Serbianel2917Greekru714Russianccp6859Chakmael8173Greeken3753Englishru3166Russianfr6432Frenchsr1541Serbiansr4871Serbianzh419Chineseru4560Russiantr4395Turkisheo5223 Esperantoth4002Thaitr215Turkishiu385 Inuktituttr728Turkishbn56Banglael4200Greekchr2372Cherokeeru4385Russianfr3474Frenchzh2757Chinesear7033Arabiczh851Chineseru3482Russiantr2169Turkishel3834Greektr7059Turkishccp6173Chakmaeo6733 Esperantoes2538Spanishchr6530Cherokeeth209Thaieo3757 Esperantoeo1061 Esperantoru6946Russianeo6811 Esperantoel32Greekes7818Spanishbn7624Banglazh6228Chinesetr2192Turkishccp3209Chakmath1157Thaieo2558 Esperantofr6685Frenchzh7628Chineseel7108Greekes136Spanishar4419Arabiceo7187 Esperantochr7893Cherokeeel4948Greekfr1495Frenchth1074Thaifr3580Frenchtr3952Turkishccp6841Chakmazh3306Chinesechr6092Cherokeear8025Arabicja5020Japanesefr3917Frencheo4546 Esperantoeo3113 Esperantoru5061Russianchr3113Cherokeeth4000Thaien329Englishiu3915 Inuktitutzh221Chineseru5641Russianru6102Russianth4296Thaisr454Serbianar1124Arabicccp2180Chakmafr2167Frenchsr3877Serbianja6732Japaneseeo3564 Esperantoth6624Thaiar6195Arabictr2076Turkishtr7222Turkishar2424Arabices6838Spanishth3890Thaith1416Thaiiu4820 Inuktitutiu7559 Inuktitutth287Thaitr3043Turkishsr2953Serbianbn880Banglael6705Greekchr622Cherokeeru7087Russianzh7054Chinesear6031Arabicccp1644Chakmael6799Greekru4685Russiansr4874Serbianchr3204Cherokeees125Spanishja2057Japaneseiu48 Inuktitutbn701Banglael50Greekccp7999Chakmaeo1785 Esperantoja5441Japaneseeo5452 Esperantoar1081Arabicfr2742Frenchja3037Japanesear3043Arabicar4862Arabicchr2500Cherokeeen1112Englishbn4872Banglaen7897Englishru124Russiansr4650Serbianth703Thaiel2580Greekeo2531 Esperantoiu3288 Inuktitutbn2691Banglael2904Greekes7767Spanishar4496Arabiciu4461 Inuktitutja2244Japanesebn6598Banglaccp8041Chakmaen7020Englishen4810Englisheo2572 Esperantoth2378Thaitr478Turkishzh1728Chinesear1148Arabicar2381Arabicsr847Serbianccp5975Chakmaja7011Japaneseiu3193 Inuktitutar7899Arabicfr2614Frenchiu3451 Inuktituteo5590 Esperantoeo6363 Esperantoar3201Arabicar4264Arabicbn3563Banglaes2358Spanishtr2002Turkishccp8100Chakmaes479Spanishru7349Russianchr2398Cherokeesr5658Serbiantr2773Turkishzh678Chinesebn1334Banglasr44Serbianel4262Greekfr2945Frenchru7473Russiantr287Turkishzh1960Chinesefr785Frenchchr7752Cherokeeel3556Greekchr1082Cherokeees2696Spanishsr1960Serbianen2602Englishel1228Greekccp8003Chakmael6172Greeken3151Englisheo4783 Esperantoru4221Russiansr350Serbianth7609Thaien2110Englishchr7439Cherokeeccp2475Chakmaccp3746Chakmaccp5355Chakmasr3345Serbiansr4242Serbianes5412Spanishar3349Arabicchr2909Cherokeeccp7352Chakmaes1345Spanishsr1008Serbiansr1897Serbianja3326Japanesezh6517Chineseel3374Greeksr4935Serbianru2471Russianfr1660Frenchccp4791Chakmazh369Chineseeo5311 Esperantosr4814Serbianzh7982Chinesees6736Spanishar4991Arabicbn891Banglabn1505Banglaccp2288Chakmaes7939Spanishsr8159Serbianzh7031Chinesezh6431Chineseth5557Thaiiu6276 Inuktitutsr320Serbianes4166Spanishzh651Chinesezh3538Chineseth3101Thaiel8169Greekes6281Spanishtr5456Turkishtr7065Turkishbn5152Banglabn7339Banglafr6799Frenchiu7112 Inuktitutsr3477Serbianzh2966Chinesesr8175Serbianbn8126Banglaja4830Japaneseru1689Russiantr6488Turkishel6828Greekeo559 Esperantoth4160Thaitr1826Turkishiu3873 Inuktitutth981Thaien390Englishsr3168Serbianiu5525 Inuktitutru6254Russianchr7878Cherokeear6685Arabicsr3851Serbianar6288Arabicsr3922Serbianzh8075Chinesebn4961Banglaes2564Spanishsr6566Serbianru6188Russianja3047Japaneseth5197Thaieo3211 Esperantoen5512Englishfr319Frenchfr7829Frenchru2435Russianzh3160Chinesesr2453Serbianbn6570Banglaar5350Arabicja8100Japaneseth2171Thaichr5257Cherokeear513Arabicsr5045Serbianen1206Englishchr28Cherokeeeo2437 Esperantoccp955Chakmaja7991Japaneseen2741Englishen1814Englishiu7892 Inuktitutes5744Spanishzh4988Chineseru2613Russiansr6445Serbianth5879Thaiel3707Greekel4912Greekel5030Greekfr1574Frenchfr1166Frenchtr2590Turkishru8110Russianja5907Japaneseth4905Thaiiu2599 Inuktitutel3435Greekja296Japanesefr6228Frenchiu5165 Inuktitutru5557Russiansr2342Serbianja282Japaneseru1360Russianbn1741Banglael4428Greekiu2901 Inuktitutiu8029 Inuktitutiu992 Inuktitutccp885Chakmachr6627Cherokeeiu1516 Inuktitutbn6217Banglaru6628Russianru6775Russianja7672Japanesezh4642Chineseen4862Englishfr2326Frenchchr2356Cherokeechr5197Cherokeechr7406Cherokeeeo905 Esperantoth6548Thaibn1887Banglaccp1745Chakmabn4420Banglaeo7378 Esperantoiu2993 Inuktitutel2309Greekzh1733Chinesebn1049Banglachr4243Cherokeeel5643Greekja7228Japanesesr2410Serbianel3878Greeksr3458Serbianth5314Thaiel4717Greekiu3577 Inuktitutccp2990Chakmaen894Englisheo7945 Esperantotr5204Turkishen4316Englishja4946Japanesesr4388Serbianzh18Chineseen5153Englishsr5703Serbianccp3457Chakmazh7332Chineseccp1771Chakmael7032Greekeo2562 Esperantoen7731Englishbn4084Banglaja3199Japaneseel5957Greektr7866Turkishel5018Greekccp7522Chakmachr7669Cherokeees48Spanishth7817Thaitr1791Turkishsr6890Serbianeo1781 Esperantozh4563Chineseiu4159 Inuktitutth7260Thaith7452Thaizh3452Chineseth138Thaies5064Spanishccp5043Chakmaru4699Russiansr632Serbianccp6980Chakmazh141Chineseth1903Thaibn5769Banglaiu2684 Inuktitutchr3740Cherokeeja5372Japanesear558Arabicja3751Japaneseel3025Greektr330Turkishth3589Thaien1679Englishbn7886Banglaccp1334Chakmachr6447Cherokeeja1543Japanesees5683Spanishfr6356Frenchccp2763Chakmaen7317Englishen7789Englisheo2407 Esperantoja3817Japaneseiu4368 Inuktitutar3293Arabicsr453Serbianccp7746Chakmasr5712Serbianccp1950Chakmaen3183Englishja4937Japanesees4114Spanishsr3884Serbianfr404Frenches4641Spanishsr6801Serbianbn2246Banglachr8131Cherokeezh7778Chineseiu7308 Inuktitutth2681Thairu2440Russianja7270Japaneseth6718Thaibn7242Banglasr7879Serbianiu6957 Inuktituteo3942 Esperantoth171Thaith1376Thaichr3400Cherokeezh5678Chinesesr371Serbianen3250Englishja2433Japanesear4440Arabicen4098Englishiu5473 Inuktitutth2408Thaifr2369Frenchar3127Arabictr3894Turkishel17Greekes997Spanishth6577Thaizh299Chineseccp5948Chakmael3408Greekes976Spanishru3707Russiansr5693Serbianiu5143 Inuktituteo3510 Esperantotr1123Turkishzh6539Chineseel2760Greekchr7381Cherokeefr2024Frenchiu668 Inuktitutsr6519Serbianfr3436Frenchiu2389 Inuktitutsr4798Serbianbn1040Banglachr67Cherokeeeo1194 Esperantotr1598Turkishccp4018Chakmachr2621Cherokeeel3329Greekru3516Russianen1875Englishel4265Greekel93Greekru2461Russianzh2154Chineseen4990Englishccp1441Chakmaru5843Russianccp1929Chakmachr3368Cherokeesr5984Serbianzh7452Chinesezh3121Chinesees4785Spanishen5166Englishru7065Russiansr4840Serbianru3878Russianar1504Arabicel1983Greekth835Thaies2187Spanisheo1637 Esperantofr7970Frenchchr6973Cherokeebn1660Banglaar4655Arabicsr6692Serbianen3635Englishtr3353Turkisheo1243 Esperantoeo3370 Esperantoeo5240 Esperantoen4420Englishes5598Spanishes7003Spanisheo658 Esperantofr4019Frenchsr1245Serbianzh8084Chinesear8069Arabicchr4115Cherokeetr4562Turkishiu2342 Inuktitutes3168Spanishzh6518Chinesebn7911Banglaar5669Arabiciu5289 Inuktitutel4791Greekccp871Chakmaeo3240 Esperantoth7619Thairu1953Russianchr892Cherokeeru5452Russianfr6433Frenchru7723Russianzh6577Chinesefr6882Frenchfr5957Frenchtr3724Turkishbn1729Banglaar5506Arabicccp844Chakmaru6341Russianzh5796Chineseja6107Japaneseja2371Japaneseru4258Russianes4635Spanishccp2204Chakmael3896Greeken1193Englishzh3305Chinesesr1305Serbianfr2971Frenchbn6136Banglazh5614Chineseen955Englishes4833Spanishfr3093Frenchchr1650Cherokeezh3344Chinesezh4979Chinesezh2704Chinesebn1735Banglaccp523Chakmath3859Thaichr6377Cherokeeel5416Greekes749Spanishiu4027 Inuktitutth5494Thaitr560Turkishar4228Arabicccp2093Chakmatr2432Turkishbn8015Banglaru3825Russianth4933Thaisr5139Serbianes2266Spanishzh3869Chineseru7610Russiansr6332Serbianar3476Arabicbn956Banglaccp2411Chakmael6699Greekja918Japanesefr4246Frenchja3426Japanesesr6313Serbianth657Thaitr758Turkishbn1068Banglaiu6656 Inuktitutzh6902Chinesees4104Spanishchr5547Cherokeesr6235Serbianar1105Arabicsr439Serbianeo5136 Esperantoes2831Spanishth1397Thaiiu902 Inuktitutzh1580Chinesees454Spanishar3674Arabicen7694Englishel4570Greekel6852Greekccp1503Chakmaja6558Japanesebn3321Banglafr1140Frenchsr4943Serbianbn1277Banglaccp1059Chakmabn1112Banglael7962Greekccp7521Chakmachr1924Cherokeeiu675 Inuktituten5762Englishchr7049Cherokeeel4003Greekccp6569Chakmaiu687 Inuktitutsr2835Serbianbn5884Banglatr686Turkishtr6486Turkishen1832Englishth3067Thaija4451Japanesebn5468Banglaen7981Englishiu6688 Inuktitutes3723Spanishth221Thaiar6270Arabicchr7318Cherokeeru6774Russianja7178Japanesetr8121Turkishccp6765Chakmazh5489Chineseccp2868Chakmatr7114Turkisheo1339 Esperantofr5949Frenchchr3189Cherokeeru5503Russianzh5707Chineseth2594Thaichr7089Cherokeeiu5238 Inuktitutiu5866 Inuktitutth5847Thaieo3735 Esperantoeo5556 Esperantobn3785Banglaes1806Spanishru3614Russianen5656Englishes6835Spanishar1284Arabicfr2197Frenchar6389Arabices6128Spanisheo5128 Esperantoes6559Spanishja6260Japaneseth7812Thaitr3692Turkishar2056Arabicel4379Greekru6307Russiansr163Serbiansr3986Serbianzh4145Chinesezh352Chinesear4020Arabictr6694Turkishen2334Englishru4254Russianfr1211Frenchiu2416 Inuktituttr7273Turkishfr6981Frencheo6859 Esperantoeo1569 Esperantoru3726Russianen4126Englishiu5170 Inuktitutru3Russianfr4664Frenchru3021Russianzh3769Chineseen5259Englishel7415Greekzh978Chineseel1136Greeksr1580Serbianchr3767Cherokeeiu4968 Inuktitutel2599Greekfr1081Frenchru7624Russianbn2579Banglaja299Japaneseeo277 Esperantoel1357Greekiu3276 Inuktitutth2135Thaiiu6430 Inuktitutchr7433Cherokeetr3802Turkishccp1363Chakmachr41Cherokeeth565Thaiiu4465 Inuktitutiu483 Inuktitutru5029Russianth6094Thaibn3626Banglabn7874Banglafr6611Frenchru7661Russianen2564Englisheo4127 Esperantoth3816Thairu6708Russianth4311Thaiel6120Greeken1856Englishccp6710Chakmaes1683Spanishsr6529Serbianth8055Thaiar4855Arabicru6909Russianel6369Greekbn2516Banglaar3997Arabicel2592Greekchr3456Cherokeeja2599Japaneseru6477Russianfr5578Frenchar5110Arabicfr5217Frenchsr1439Serbiantr3715Turkishja917Japaneseeo5403 Esperantoeo3139 Esperantoeo4804 Esperantochr6104Cherokeees2960Spanishes4932Spanishes5724Spanisheo7150 Esperantoja4341Japanesesr4024Serbianccp6324Chakmasr4825Serbianzh641Chinesechr4946Cherokeeru6388Russianzh4890Chinesechr7763Cherokeefr132Frenchsr830Serbiansr6537Serbianru2397Russiansr4619Serbianen5498Englishchr4700Cherokeees82Spanishiu1799 Inuktituttr6517Turkishtr74Turkishru5287Russianeo5500 Esperantoar1641Arabicru1772Russianru6104Russianbn3638Banglaen1246Englishfr6387Frenchsr4327Serbianeo6359 Esperantoiu1061 Inuktitutja3703Japaneseja7901Japaneseja4728Japaneseeo4993 Esperantoth3450Thaies6257Spanishja4400Japanesesr3209Serbianchr3507Cherokeeel6381Greeksr4657Serbianiu3530 Inuktitutiu4382 Inuktitutth5092Thaitr3216Turkishtr5133Turkishzh2986Chineseen344Englishccp4432Chakmaja7276Japanesebn7733Banglael4245Greekar5495Arabiciu2991 Inuktituteo4483 Esperantobn5267Banglaes6072Spanishccp4740Chakmabn4780Banglaccp5930Chakmael2183Greekeo3923 Esperantoth4697Thaichr5783Cherokeeeo5273 Esperantoar3670Arabicchr1541Cherokeeen7293Englishfr4240Frenchiu7181 Inuktitutja7164Japaneseeo72 Esperantoru4493Russianfr1096Frenchfr7300Frenchel3825Greekbn3473Banglaar3832Arabiciu4046 Inuktitutiu3748 Inuktitutzh4627Chineseeo2869 Esperantoja903Japaneseccp5193Chakmaccp4747Chakmachr2319Cherokeechr6743Cherokeear4961Arabicsr4111Serbianru904Russianth2977Thaiar6910Arabiciu5574 Inuktitutes7140Spanishfr3559Frenchfr8036Frenchiu3692 Inuktitutfr5561Frenchel7424Greekbn7024Banglabn5477Banglaen4127Englishen4164Englishfr1091Frenchiu7018 Inuktitutru5770Russianccp4119Chakmaes1483Spanishth1590Thaith3987Thaibn4090Banglaeo2494 Esperantoel4741Greeksr344Serbiansr5370Serbianja2555Japaneseja5673Japaneseiu6695 Inuktitutsr6835Serbianth1926Thaieo338 Esperantoeo5567 Esperantoes3496Spanishccp3891Chakmaru5360Russianth1976Thaith6247Thaizh2862Chineseeo5696 Esperantotr351Turkishth4029Thaichr126Cherokeesr4249Serbianfr2219Frenchccp4809Chakmatr1177Turkishfr8131Frenchiu345 Inuktitutja1187Japaneseccp2530Chakmaar5522Arabicbn142Banglath6339Thaifr842Frenchja7842Japaneseru4980Russianar8158Arabiczh3889Chinesebn4999Banglaeo21 Esperantoiu5383 Inuktitutru1100Russianzh3724Chinesear5500Arabicsr5085Serbiantr3456Turkishccp3504Chakmafr7257Frenchiu7264 Inuktituttr4498Turkishiu6889 Inuktituttr5800Turkishar7883Arabictr6305Turkishiu3805 Inuktituttr2955Turkisheo3639 Esperantochr7257Cherokeebn7832Banglaccp39Chakmaccp4638Chakmaeo6029 Esperantoru3737Russiansr1108Serbiansr2636Serbianbn8165Banglaru4885Russianru3164Russianfr6722Frenches78Spanishccp6002Chakmabn1300Banglabn6616Banglael1819Greekes2919Spanishes2614Spanishbn6337Banglaes4516Spanishfr1636Frenchbn7221Banglaccp1344Chakmaes1947Spanishfr4709Frenchth1282Thaizh499Chineseen5491Englishel4093Greektr2963Turkishsr426Serbiansr5263Serbianar1498Arabicchr7360Cherokeeen2062Englishchr3994Cherokeeeo2951 Esperantoiu6290 Inuktituten1042Englishar6346Arabicchr6471Cherokeezh7751Chineseen2407Englishccp3427Chakmaccp7201Chakmaeo512 Esperantoeo5281 Esperantofr4798Frenchel904Greekja2983Japaneseja6531Japanesechr8072Cherokeeel7303Greekzh5574Chinesezh2512Chinesees7799Spanishth1733Thaiel6571Greeken957Englishth1286Thairu2636Russianja5782Japaneseja7066Japaneseru1853Russiansr6732Serbianiu3830 Inuktitutth3881Thaija6736Japanesees5358Spanishes495Spanishar4751Arabicchr3094Cherokeeen6068Englishfr7836Frenchsr6432Serbianeo2484 Esperantoen6880Englishen467Englishbn3351Banglaiu2130 Inuktitutru4318Russiansr6639Serbianfr1507Frenchja4377Japanesear6823Arabicbn4428Banglaru4379Russianja5734Japanesetr1721Turkishsr6674Serbianeo4704 Esperantoes7478Spanishel1075Greekeo7717 Esperantofr1947Frenchtr6853Turkishbn3845Banglael5591Greekru7785Russianes5771Spanishtr3309Turkishru6273Russianen44Englishja8113Japaneseen6141Englishja3375Japanesefr2913Frenchja4062Japaneseru1756Russianchr117Cherokeechr5112Cherokeeen1980Englishen8001Englisheo3452 Esperantoru222Russianbn7948Banglachr7220Cherokeeel7970Greekiu3072 Inuktitutru411Russianel3113Greekth774Thaiccp7147Chakmafr1751Frenchru4745Russianel1276Greektr3712Turkishtr4307Turkishar3473Arabicen6780Englishes726Spanishes2370Spanishja2158Japanesefr1225Frenchtr778Turkishfr7026Frenchja514Japanesetr8013Turkishes3311Spanishccp4174Chakmaeo6952 Esperantoth3001Thaien2481Englishtr744Turkishth7116Thaibn1657Banglaes7118Spanishzh1688Chinesezh2319Chineseccp3284Chakmazh1683Chinesechr7600Cherokeeiu6231 Inuktitutzh2941Chineseccp4549Chakmael4592Greeken322Englishbn4701Banglabn5894Banglaccp6028Chakmachr5648Cherokeeen4607Englishes2745Spanishfr7543Frenchiu2500 Inuktitutru145Russianes5195Spanishccp7775Chakmaen2652Englishccp2930Chakmabn4166Banglaen4011Englishiu590 Inuktitutth782Thaizh5854Chinesechr1092Cherokeeel4841Greeksr5792Serbianth4006Thaitr6180Turkishchr4590Cherokeechr7750Cherokeear1563Arabicfr4963Frenchel4189Greekel2703Greekbn5219Banglachr1237Cherokeeeo5852 Esperantoes2463Spanisheo2922 Esperantofr151Frenchth2652Thaies5496Spanishbn1002Banglaen539Englishchr2781Cherokeeccp5478Chakmafr4551Frenchja181Japaneseiu1176 Inuktitutes7527Spanishchr909Cherokeeel6547Greektr8061Turkishth4131Thaith6819Thaitr5472Turkishel5036Greekeo556 Esperantoen5867Englishes5875Spanishiu5085 Inuktitutel2443Greektr6567Turkishar5762Arabices4543Spanishen641Englishiu6954 Inuktituten354Englishiu8158 Inuktitutbn4038Banglafr402Frenchsr7770Serbianchr718Cherokeees3113Spanishzh3716Chineseccp1764Chakmael226Greekzh7906Chineseru2047Russianes4733Spanishar3207Arabicfr4823Frenchel638Greekchr7987Cherokeeru318Russianccp5061Chakmaja2432Japanesees3498Spanishsr3221Serbianchr692Cherokeechr6806Cherokeeen5370Englishfr1950Frenchzh3126Chineseru1296Russianel3810Greekeo148 Esperantoes1837Spanishar592Arabicen1849Englishtr6904Turkishfr2646Frencheo3393 Esperantozh412Chinesefr3450Frenchar70Arabicja3610Japanesesr7392Serbianbn3223Banglaes3252Spanishth4474Thaiiu210 Inuktitutzh5836Chineseru5264Russianbn3550Banglaccp1027Chakmaru4242Russianiu227 Inuktitutth5262Thaiiu1216 Inuktitutzh6000Chinesesr3190Serbianes5035Spanishbn605Banglaiu7532 Inuktitutiu7723 Inuktitutfr94Frenchth4048Thaith1607Thaiiu1918 Inuktitutfr6553Frenchccp744Chakmael3852Greekar5295Arabicar6968Arabicja582Japaneseen7008Englishbn1763Banglaar7113Arabicbn2524Banglael3626Greekes5379Spanishth7376Thaiar5059Arabicth2911Thaibn1980Banglaru3854Russianja1878Japanesear5687Arabiceo3892 Esperantoccp168Chakmaccp5745Chakmaeo4089 Esperantoen2975Englishth994Thaien4014Englishes6344Spanishar2063Arabicfr3733Frenchru6Russianbn6197Banglaiu8027 Inuktitutes3014Spanishru7016Russianth7890Thaies7641Spanishiu1136 Inuktitutru4853Russianeo1116 Esperantoccp4390Chakmatr70Turkishru968Russianfr2037Frenchel6959Greeken4876Englishiu5294 Inuktitutiu2284 Inuktitutja2998Japaneseel6007Greektr4529Turkishccp4675Chakmaes5944Spanishchr1364Cherokeees2423Spanishiu3507 Inuktituten6508Englishccp993Chakmaes2762Spanishru2177Russianbn6973Banglafr2192Frenchbn4820Banglaccp6416Chakmaccp7923Chakmaes7854Spanishja7311Japaneseel3684Greekiu453 Inuktitutar2572Arabiceo7010 Esperantoes4170Spanishfr7948Frenchtr1777Turkishbn7711Banglath2270Thaisr5871Serbianfr4332Frenchru943Russianchr6956Cherokeeen3654Englishsr3140Serbianes1754Spanishsr5679Serbianbn1281Banglaru6232Russianfr6458Frenchtr1980Turkishiu4587 Inuktitutbn7576Banglachr5988Cherokeeen6996Englishja558Japaneseth2075Thaitr3296Turkishzh7670Chinesezh228Chineseel6682Greekiu4809 Inuktitutsr997Serbianen1215Englishtr6010Turkishtr2206Turkishfr7400Frenchiu2776 Inuktitutccp2189Chakmael7520Greeken4924Englishzh5085Chinesezh4355Chinesezh5434Chineseth6331Thaien6695Englishchr6143Cherokeezh2467Chinesesr2728Serbianel4858Greekiu1109 Inuktitutsr6065Serbianchr5731Cherokeear554Arabicsr6613Serbianel6247Greeken3033Englishfr2756Frencheo985 Esperantoja2867Japaneseru878Russianccp4254Chakmael792Greekeo2965 Esperantoja6962Japanesees1681Spanishchr3Cherokeesr7207Serbianbn7676Banglaccp1159Chakmaccp6624Chakmachr1876Cherokeechr1063Cherokeees121Spanishzh6354Chineseiu6943 Inuktitutbn165Banglaar4200Arabicja3213Japanesefr5340Frenchsr3494Serbianzh5153Chinesebn1836Banglaar3665Arabicsr5808Serbianfr492Frenchiu5874 Inuktitutccp2870Chakmaar3544Arabicth258Thaieo7165 Esperantoru4307Russianzh4489Chinesear5190Arabicar3474Arabicar5889Arabicccp7164Chakmath227Thaieo4678 Esperantofr1249Frenchiu5325 Inuktitutccp4923Chakmabn3928Banglaja7463Japanesetr1202Turkishzh5Chinesear8112Arabicja866Japanesefr6062Frenchen1376Englishtr7281Turkishbn5150Banglaja783Japaneseja2691Japanesear1434Arabicar1516Arabicar1745Arabicbn2063Banglaja1117Japanesezh4199Chinesefr4072Frenchchr5345Cherokeesr5141Serbianeo2845 Esperantobn592Banglaccp4679Chakmachr6871Cherokeeen1061Englisheo4338 Esperantoel6421Greekzh4713Chineseiu981 Inuktituttr2071Turkishzh561Chineseel6720Greekru6039Russianbn49Banglaen3871Englishja2379Japanesesr1338Serbianbn3270Banglachr5284Cherokeeccp1585Chakmaiu4028 Inuktitutsr7247Serbianja4332Japaneseja2722Japanesezh7430Chinesees4196Spanishsr4905Serbianzh1420Chinesear2911Arabiciu3075 Inuktitutru3821Russianru5716Russianel5911Greekbn3327Banglaja6349Japanesebn6468Banglael7898Greekzh4278Chineseja4429Japanesetr6065Turkishbn2996Banglaes5882Spanishen2610Englishru5476Russiansr2326Serbianes1714Spanishchr975Cherokeees2760Spanishiu15 Inuktitutbn1655Banglachr1367Cherokeeja5358Japanesezh5699Chineseeo5514 Esperantoel4499Greekth2016Thaija3118Japaneseth5990Thaija4898Japaneseru7894Russianeo5908 Esperantotr4929Turkishja3121Japanesezh6477Chinesefr3195Frenchsr4306Serbianar3371Arabicbn7017Banglaja3149Japanesees7798Spanishar4023Arabicbn4426Banglatr3816Turkishfr6294Frenchth7074Thaieo4954 Esperantofr7739Frenchsr789Serbianfr1389Frenchja3086Japanesear4962Arabicel2174Greekes3602Spanishfr4833Frenchiu6891 Inuktitutfr2673Frenchfr7667Frenchtr6655Turkishja7973Japaneseth2655Thaibn4427Banglabn8052Banglaes4208Spanishchr7251Cherokeeja3278Japaneseccp5919Chakmachr1777Cherokeeiu3852 Inuktitutzh1450Chineseja6370Japanesechr3467Cherokeeel3192Greekccp1452Chakmachr6842Cherokeesr672Serbianar7292Arabicja2745Japaneseeo3031 Esperantosr3941Serbianen7753Englisheo7894 Esperantotr1809Turkishccp3132Chakmaeo2401 Esperantofr8030Frenchiu3794 Inuktituten5106Englishen5382Englishsr3201Serbianes5109Spanishru6171Russianel4063Greekja5398Japanesees4036Spanishiu998 Inuktitutes4182Spanishes5008Spanishfr2873Frenchth4573Thaies6169Spanishtr5491Turkishel2736Greekchr1658Cherokeeel1829Greeksr4735Serbianfr3261Frenchccp5495Chakmaen1454Englishzh103Chineseeo706 Esperantoccp2687Chakmafr1906Frenchar428Arabicchr592Cherokeechr4151Cherokeesr34Serbiansr1269Serbianeo7388 Esperantosr3727Serbiantr4541Turkishbn8088Banglaja2095Japaneseru58Russianth8096Thaifr1127Frenchru1673Russianth5855Thairu7467Russianiu2077 Inuktitutth1630Thaibn625Banglafr7365Frenchel1480Greekiu2289 Inuktitutzh1936Chinesebn6981Banglaccp7149Chakmael3054Greekel6762Greeken7306Englishen8158Englishsr7156Serbianfr6787Frencheo2824 Esperantoiu2985 Inuktituttr5486Turkishth1401Thaija1111Japaneseru5160Russianar1297Arabicen5423Englishja6092Japanesefr2503Frenchar2268Arabiceo3714 Esperantoeo2336 Esperantoen3449Englishiu6941 Inuktitutchr2732Cherokeeiu2510 Inuktitutth4049Thaith5702Thaith8049Thaiccp3396Chakmaen97Englishbn3115Banglaes7705Spanishes7106Spanishzh2321Chineseeo1895 Esperantoja5256Japanesebn4278Banglaiu855 Inuktituttr1663Turkishar5176Arabictr6079Turkishen1895Englishru5466Russianes6170Spanishru551Russianiu6902 Inuktitutchr5562Cherokeechr6214Cherokeeel4266Greekes5915Spanishccp3768Chakmabn6823Banglaeo4103 Esperantoes3370Spanishsr6868Serbianfr7508Frenchth5531Thaichr3528Cherokeefr1995Frenchen5789Englishccp2883Chakmabn4919Banglachr5261Cherokeeeo5777 Esperantoar39Arabicar2205Arabicel6411Greekccp3248Chakmaen6Englisheo628 Esperantofr2080Frenchtr1463Turkishar7412Arabicru4698Russiansr7982Serbianchr4999Cherokeebn3075Banglaeo4190 Esperantoiu7792 Inuktitutsr5580Serbiantr3141Turkishes2553Spanishru3512Russianen5568Englishzh189Chinesezh2991Chineseccp6279Chakmaja5629Japaneseel7251Greekiu3755 Inuktitutth1784Thaiar2073Arabicfr6610Frenchtr585Turkishchr7085Cherokeeru5829Russianel7801Greekar6701Arabicchr1456Cherokeeeo1674 Esperantoth7975Thaitr2531Turkishzh3828Chinesezh4122Chinesezh903Chineseru3575Russianar5444Arabicja5333Japaneseth1430Thaiel4363Greekja4816Japaneseeo988 Esperantotr6601Turkishar1542Arabiczh7759Chinesesr7009Serbianen2544Englishar4675Arabiciu7438 Inuktitutja178Japaneseth2379Thaitr5160Turkishbn6870Banglael6339Greekchr6725Cherokeeth1803Thaizh6425Chineseccp6398Chakmaiu6475 Inuktitutzh3087Chineseeo3644 Esperantoen3917Englishtr7111Turkishccp923Chakmachr700Cherokeeth1188Thaizh1225Chineseel5950Greekes3907Spanishsr1696Serbianen1228Englishar3317Arabicchr7012Cherokeeeo2107 Esperantobn4799Banglazh3981Chinesefr3404Frenchtr7793Turkishen4739Englishja4056Japaneseeo1111 Esperantoar6283Arabices5499Spanishfr180Frenchar5193Arabicja769Japaneseth659Thaibn7511Banglath4901Thaifr3660Frenches6856Spanishes6750Spanishth4806Thaien3683Englishar8135Arabicel5161Greekiu3270 Inuktitutiu790 Inuktitutth6435Thaibn6632Banglath5363Thaiiu6950 Inuktitutzh3005Chineseel3268Greeken2841Englishar2147Arabicchr5281Cherokeeel1923Greekzh4945Chinesear6116Arabiceo5471 Esperantotr6338Turkishchr1046Cherokeechr5494Cherokeeen444Englishel5410Greekth1427Thaieo5760 Esperantoar1814Arabicja6650Japaneseja5443Japaneseiu1556 Inuktituttr5559Turkishzh6286Chineseiu7561 Inuktitutchr5958Cherokeeccp2022Chakmaen4169Englishfr5436Frenchar2874Arabicar2162Arabicsr7478Serbianja1307Japaneseel2644Greekchr685Cherokeeccp5474Chakmaes403Spanishiu1207 Inuktitutfr2281Frencheo3170 Esperantosr5493Serbianfr4030Frenchfr6203Frenchsr5655Serbianeo3297 Esperantoel5693Greekbn6416Banglaes6596Spanishccp40Chakmaccp4684Chakmafr6305Frenchiu5624 Inuktitutja787Japanesesr3450Serbianth4439Thaien1548Englishtr2471Turkishru7641Russianiu2989 Inuktitutzh7946Chineseja2519Japaneseiu451 Inuktitutbn1994Banglatr2259Turkishth2296Thaith3138Thaitr3351Turkishbn4155Banglath7789Thaizh5879Chinesear1139Arabicth1951Thaies7648Spanishsr6208Serbianeo548 Esperantoth1151Thaitr3966Turkishes6394Spanishchr7996Cherokeefr5901Frenchbn2175Banglabn7026Banglabn1235Banglaar7711Arabictr704Turkishen2608Englishen400Englishchr3016Cherokeees4079Spanishth2393Thaichr471Cherokeezh2287Chinesefr4898Frenchchr6408Cherokeechr116Cherokeear3518Arabicfr8137Frencheo1607 Esperantoar4132Arabiceo6345 Esperantoru148Russiantr2034Turkishes4319Spanishel3750Greekar5763Arabicel496Greeken7302Englisheo838 Esperantoen5500Englishar3530Arabicja2828Japanesees180Spanishes4334Spanishccp1310Chakmaes5510Spanishfr6631Frenchchr5893Cherokeeel7942Greeken330Englishchr2923Cherokeefr3707Frencheo3390 Esperantoeo3349 Esperantoccp6606Chakmaen6343Englishzh7608Chinesear581Arabicchr4305Cherokeefr2457Frenchar7155Arabicchr3493Cherokeetr2274Turkisheo7608 Esperantoja7259Japanesezh3611Chinesear7138Arabictr3490Turkishchr2020Cherokeear6508Arabicar1490Arabicbn1665Banglaen1757Englishen3005Englishccp658Chakmael7495Greekja1893Japaneseel1365Greeken6596Englishth4317Thaibn1968Banglath7562Thaiel3001Greekeo2233 Esperantoeo4709 Esperantoeo1720 Esperantofr4317Frenchru6858Russiansr1189Serbianbn999Banglasr3733Serbianchr6260Cherokeeru4613Russianel1053Greekes4389Spanishfr1550Frenchchr1418Cherokeebn591Banglaru2291Russianfr2151Frenchsr466Serbianzh337Chinesear6226Arabicel4252Greekccp7180Chakmath3357Thaiel6976Greekeo3461 Esperantoccp6135Chakmaar1946Arabictr5966Turkishth5971Thaizh562Chinesees2687Spanisheo4265 Esperantoccp6270Chakmabn6360Banglaccp2648Chakmasr5140Serbianth5210Thaichr1722Cherokeeccp4114Chakmaeo4076 Esperantoes7239Spanishccp6026Chakmaiu3021 Inuktitutbn1233Banglaen43Englishth5483Thaitr733Turkishzh4381Chinesesr5649Serbianel3073Greekar8088Arabicel119Greekel3716Greeken4414Englishzh2001Chineseel3328Greekes8096Spanisheo826 Esperantosr4407Serbianth333Thaitr2145Turkishccp3111Chakmaru7327Russianzh4487Chinesear5700Arabicru7142Russianzh7176Chineseel7436Greekfr6550Frenchfr3207Frenchtr6978Turkisheo6417 Esperantoru3088Russianru5008Russianchr2184Cherokeeel1460Greekzh40Chineseccp5640Chakmaiu5410 Inuktituteo4354 Esperantotr4803Turkishfr5643Frenchiu3853 Inuktituten5030Englishbn5448Banglaeo5218 Esperantoes3667Spanishfr633Frenchtr1985Turkishtr6201Turkishccp7763Chakmaen7023Englishccp3992Chakmaja1830Japanesees7832Spanishel2081Greekccp4111Chakmaru2363Russianchr6329Cherokeear7815Arabicccp3921Chakmath1592Thaichr2305Cherokeeru1677Russianchr3819Cherokeeeo7569 Esperantoen598Englishru6532Russiansr7068Serbianth2297Thairu1459Russianth4844Thaibn6835Banglaccp8177Chakmaccp7438Chakmaru7257Russianes6786Spanishth5823Thaiccp866Chakmasr2542Serbianth3020Thaith6939Thaitr3764Turkishtr6378Turkishzh6840Chinesefr620Frenchchr901Cherokeefr2114Frenchtr7805Turkishchr3439Cherokeeccp1955Chakmael4475Greekru1064Russianja3806Japanesetr6242Turkishen3537Englishel7266Greekru2022Russianbn1200Banglasr5315Serbianth3332Thaitr6801Turkishfr2872Frenchzh3749Chineseja4008Japaneseccp7376Chakmaiu4095 Inuktitutzh5285Chineseru2193Russianar5066Arabictr104Turkishes4157Spanishsr3682Serbiansr7738Serbianes2849Spanishja4006Japaneseel6732Greekja1384Japanesefr284Frenchzh3994Chinesebn5287Banglabn27Banglaeo831 Esperantoes2839Spanishru7226Russianfr3284Frenchar917Arabicar6382Arabices4581Spanishja3438Japanesesr3279Serbianes1964Spanishel590Greekchr2163Cherokeebn5186Banglaja6844Japaneseeo5138 Esperantoru3087Russianar6312Arabices5232Spanishru2987Russianen4043Englishar762Arabicchr34Cherokeefr2836Frenchja4057Japanesebn6596Banglath3124Thaiccp7598Chakmaen1696Englisheo4564 Esperantotr1184Turkishsr5455Serbianes499Spanishbn2682Banglachr2434Cherokeeth455Thaitr3229Turkishbn4268Banglael3115Greekel6875Greekru2119Russiantr6830Turkishbn3556Banglafr2137Frenchbn5728Banglachr4163Cherokeees4861Spanisheo8161 Esperantoes7141Spanishru1565Russianth4544Thaieo5381 Esperantoes5642Spanishth6413Thaiccp2282Chakmael361Greekel2907Greeksr6805Serbianes1920Spanishru2487Russianth2328Thaith6107Thaibn2009Banglaar7036Arabicsr3650Serbianccp3857Chakmatr6602Turkishbn6895Banglaen4745Englishes7795Spanishsr177Serbiantr4864Turkishfr6836Frenchbn4824Banglaeo5900 Esperantoja5472Japanesesr3955Serbianiu6101 Inuktitutzh2058Chineseeo4686 Esperantoel1286Greekchr660Cherokeeru4969Russianeo5671 Esperantoen3315Englishiu6603 Inuktitutbn6014Banglaccp6471Chakmaen8000Englishbn7778Banglael5542Greekes6911Spanishfr671Frenches3811Spanishja4511Japaneseen1732Englishja5526Japaneseiu1139 Inuktitutccp5822Chakmaes7510Spanishja6708Japaneseen1577Englishen2539Englishar8077Arabiciu7572 Inuktitutes353Spanishbn2758Banglaeo419 Esperantoeo961 Esperantofr4466Frenches5237Spanishiu2704 Inuktituten4307Englishth1908Thaies5722Spanisheo5510 Esperantoja7231Japanesezh1229Chineseen667Englishja2167Japanesees1729Spanishja1953Japaneseccp7363Chakmaeo6766 Esperantoes7653Spanishru295Russianzh2987Chinesesr5240Serbianbn2272Banglaen3097Englishccp2172Chakmafr3151Frenchru4601Russianchr3660Cherokeechr8158Cherokeesr7163Serbianen7472Englishchr5457Cherokeeiu7589 Inuktitutiu4199 Inuktitutsr5351Serbianru6332Russiansr1274Serbianccp7691Chakmazh6455Chineseen4960Englishtr3721Turkishbn3341Banglaeo7598 Esperantoes5913Spanishja3008Japaneseiu3514 Inuktitutsr3499Serbianru7358Russianccp206Chakmaru985Russianth2227Thairu6834Russiantr2467Turkishel4821Greekru3871Russianbn3103Banglaiu1953 Inuktitutja2039Japaneseru1536Russianru3319Russianeo7175 Esperantoar3417Arabiciu1945 Inuktituttr1333Turkishfr2938Frenchiu1225 Inuktitutru72Russianja3870Japanesetr1534Turkishru4847Russiansr8132Serbianccp4210Chakmaen5769Englishiu2857 Inuktitutes6890Spanishja7209Japanesesr7090Serbianth2593Thaibn7063Banglaar6322Arabicchr2851Cherokeeth7394Thaiccp4881Chakmazh4496Chineseth2554Thaiar881Arabiciu2688 Inuktitutja6710Japanesesr3340Serbianja4842Japaneseccp190Chakmaar1183Arabicfr2869Frenchru2576Russianeo1625 Esperantoja2496Japaneseel6751Greekiu6933 Inuktitutiu2477 Inuktituttr5499Turkishtr3170Turkishes8165Spanishen3214Englishbn6840Banglaccp184Chakmaen6430Englishiu6287 Inuktitutzh7799Chineseccp3455Chakmazh579Chinesechr7304Cherokeeccp1122Chakmaen7348Englishja8031Japanesetr5103Turkishes2943Spanishchr6527Cherokeefr5937Frenchth4925Thaibn3023Banglaeo4812 Esperantoes5456Spanishja2850Japanesechr2459Cherokeeel2779Greekeo773 Esperantoth5008Thaith5229Thaiccp6576Chakmaeo7522 Esperantoth7082Thaiccp3549Chakmabn6163Banglaes2328Spanishzh1828Chineseth2656Thaieo797 Esperantoiu6341 Inuktitutiu4969 Inuktitutsr4092Serbiansr5801Serbianbn1241Banglaes7366Spanishfr5087Frenchfr1128Frenches2554Spanishfr4383Frencheo641 Esperantosr223Serbianzh3458Chinesear1231Arabicccp6112Chakmael3419Greekfr2053Frenchfr3016Frenchja5970Japanesees1161Spanishccp5754Chakmafr6928Frenchbn3083Banglabn2487Banglazh1638Chinesebn5600Banglael6517Greeken7521Englishccp8077Chakmachr3552Cherokeeru4709Russianccp4101Chakmazh1508Chinesezh3638Chinesees7467Spanishbn6181Banglaru782Russianel3117Greekfr7246Frencheo6540 Esperantoen309Englishru8111Russianzh3298Chineseiu2558 Inuktitutiu4951 Inuktitutel7880Greekeo6398 Esperantoccp3909Chakmazh3258Chinesechr3119Cherokeetr2839Turkishtr6901Turkishsr4375Serbiansr5660Serbianbn7174Banglafr3912Frenchsr6848Serbianccp1758Chakmaar8179Arabicar4829Arabicru247Russianbn5425Banglael7760Greekccp7145Chakmaeo2566 Esperantoeo689 Esperantoiu1104 Inuktitutja3248Japanesetr8042Turkishzh6861Chineseel1739Greekiu2004 Inuktitutru2234Russianar3946Arabiceo141 Esperantochr4484Cherokeeel4359Greekzh6519Chinesefr7491Frenchel2696Greekru4607Russianeo289 Esperantofr1459Frenchar6819Arabicar211Arabicar6624Arabices4446Spanishbn2146Banglaru1530Russianeo6723 Esperantoes1400Spanishel2630Greekccp5376Chakmatr6050Turkishfr7472Frenchccp2878Chakmafr4403Frenchtr5241Turkisheo3276 Esperantochr6417Cherokeezh7368Chinesebn7140Banglaes926Spanishccp1686Chakmael4048Greekes1340Spanishfr8011Frenchth7007Thaizh5802Chineseeo7937 Esperantoel2121Greekth5217Thairu6200Russianar7989Arabicsr1692Serbianth7010Thaisr2402Serbianen261Englisheo2258 Esperantofr6154Frenchja4258Japaneseen6943Englishiu2644 Inuktitutzh927Chinesechr564Cherokeeen6631Englishja5724Japanesetr5892Turkisheo1236 Esperantozh4159Chinesetr675Turkishiu4572 Inuktitutel2898Greekru5617Russianen203Englishes7247Spanishja4933Japanesear6291Arabicel4616Greeksr2310Serbianbn3645Banglachr1362Cherokeeen5821Englishar3352Arabicel2957Greekar7140Arabicccp6061Chakmaar4466Arabicbn6294Banglabn5389Banglaen3503Englishen6843Englishth6275Thaien8010Englisheo2968 Esperantosr482Serbianfr1278Frenchth5448Thaifr1440Frencheo4336 Esperantotr7460Turkishth3649Thaitr7851Turkishbn217Banglazh7927Chinesetr4881Turkishbn6073Banglaeo2781 Esperantoja2524Japaneseth3447Thaiccp7708Chakmaen3604Englishsr2980Serbianel5371Greeksr7635Serbianchr6313Cherokeebn4713Banglaiu1277 Inuktituteo5889 Esperantoar7863Arabicccp4974Chakmael6591Greekes1809Spanishru5448Russianru4663Russianfr1138Frenchfr1675Frencheo2041 Esperantoru6435Russianchr3610Cherokeeja1523Japaneseen1222Englishes7508Spanishru2496Russianchr865Cherokeeja5884Japaneseth4219Thaith1913Thaiel181Greekja2253Japaneseiu2650 Inuktitutja3391Japaneseth7205Thaieo7596 Esperantoar2139Arabicar2697Arabicru7267Russianeo1944 Esperantosr814Serbianes7355Spanishtr7691Turkishccp4196Chakmael4723Greekzh8047Chineseeo1172 Esperantoen6098Englishel4019Greekeo1389 Esperantoth2916Thaichr5067Cherokeechr454Cherokeeen7865Englishel6617Greekchr5389Cherokeezh7341Chineseel1409Greekccp2887Chakmaiu274 Inuktitutchr177Cherokeechr7580Cherokeeel7872Greekja2219Japanesebn5201Banglabn5026Banglath7604Thaieo3826 Esperantofr1800Frenchsr1639Serbianiu2273 Inuktitutccp561Chakmaru6636Russianeo1022 Esperantoes487Spanishes4005Spanishbn6650Banglaeo3985 Esperantoeo4453 Esperantozh1363Chinesear441Arabicar2816Arabiciu7565 Inuktitutbn1026Banglaeo5583 Esperantoiu104 Inuktitutth340Thaitr1834Turkishccp3027Chakmael8072Greekja709Japanesesr3292Serbianzh801Chineseen1726Englishen6297Englishru2192Russianeo3650 Esperantoen6615Englishru7215Russianth5498Thaith3416Thaibn6187Banglabn4721Banglachr3762Cherokeefr4176Frenchja8097Japanesear149Arabiczh6281Chinesees5337Spanishchr6953Cherokeeeo1092 Esperantoja4033Japanesear5296Arabicth1007Thaiiu4262 Inuktitutccp4629Chakmaar7455Arabictr3916Turkishbn92Banglazh3401Chinesezh6596Chineseiu1753 Inuktitutja7709Japanesesr5077Serbianel5785Greekru6717Russianbn3501Banglaen5210Englishbn1356Banglaja6443Japaneseel4649Greekja7343Japaneseru594Russianen602Englishsr7805Serbianzh7177Chineseen6270Englishiu3495 Inuktitutsr1458Serbianfr4336Frenchsr149Serbianth2011Thaiar5856Arabicja430Japanesefr1310Frenchiu2722 Inuktituteo6632 Esperantoes79Spanishja1006Japanesebn2061Banglaru7026Russiantr199Turkishfr6632Frenchchr124Cherokeeeo7772 Esperantofr6248Frenchzh8022Chineseiu1131 Inuktituten7874Englishja3824Japanesebn7600Banglafr7586Frenchccp5682Chakmaccp7241Chakmafr3676Frenchru3157Russianel4582Greekja5663Japanesesr5927Serbianth3010Thaija3179Japanesechr5383Cherokeeeo4572 Esperantoth6016Thaitr8127Turkishtr6102Turkishar1006Arabicar2690Arabicel7585Greekes8167Spanishiu4467 Inuktitutru2847Russianja4618Japanesesr7097Serbianes5138Spanishru6643Russianar6350Arabiceo2679 Esperantoja2602Japaneseel2985Greekru3331Russianiu3311 Inuktitutel817Greekes4688Spanishiu3045 Inuktitutbn8125Banglaar1073Arabicel87Greektr6968Turkishen409Englishccp1132Chakmaeo4406 Esperantoar6032Arabicfr1340Frenchzh5929Chineseel7687Greekes8113Spanishen7399Englishtr2146Turkishzh6020Chinesebn4173Banglatr5677Turkishfr2216Frenchel3045Greeken7415Englishtr3060Turkishchr424Cherokeeccp6863Chakmaeo377 Esperantofr2624Frenchja5078Japaneseiu1525 Inuktitutru3518Russianes6185Spanisheo3000 Esperantoel2223Greekru7096Russianiu2212 Inuktitutar3568Arabices2503Spanishccp877Chakmaes7028Spanishja8170Japanesechr2006Cherokeezh5924Chinesear7553Arabicar6676Arabicar4743Arabicchr4244Cherokeesr3908Serbianes1071Spanishru4874Russianfr2948Frenchbn8155Banglaru2099Russianfr7116Frenchccp4275Chakmatr6893Turkishiu7333 Inuktituttr7513Turkishiu6937 Inuktitutar5541Arabices5086Spanishes4796Spanishja1161Japaneseru6621Russianccp3994Chakmaja2624Japanesezh8165Chineseja6634Japaneseeo6249 Esperantofr4789Frenchel2627Greekiu1733 Inuktitutru1431Russianccp7279Chakmabn2204Banglaar4244Arabicchr7198Cherokeefr4078Frenchru6070Russiansr101Serbianes8100Spanishzh3407Chineseccp6141Chakmaes2659Spanishccp4695Chakmaru2208Russianzh30Chineseeo8184 Esperantozh4050Chineseel1936Greekja3809Japanesear1596Arabiceo5134 Esperantoel832Greekja7575Japaneseel5119Greekth6022Thaitr1582Turkishzh2211Chinesebn3377Banglaja3965Japanesechr5838Cherokeeccp275Chakmaiu296 Inuktitutbn8181Banglaen2669Englishchr4698Cherokeetr2030Turkishzh4796Chinesear7253Arabicfr2416Frenchfr2477Frenchchr4496Cherokeeel5927Greekar5021Arabicchr7789Cherokeees2641Spanishen1423Englishja4085Japaneseccp5037Chakmaccp3491Chakmaeo6534 Esperantoru3849Russianchr2928Cherokeesr2549Serbianiu6137 Inuktitutes6098Spanishth3608Thaith2164Thaien2895Englishes502Spanishen557Englishel429Greekccp2373Chakmael5449Greekchr5411Cherokeeja3205Japaneseel2472Greekchr882Cherokeesr6883Serbianiu7837 Inuktitutbn3159Banglazh3870Chinesesr323Serbianbn7928Banglaeo3939 Esperantobn6509Banglaeo6757 Esperantochr4058Cherokeeel4774Greektr6937Turkishja6313Japaneseeo4964 Esperantotr5917Turkishbn484Banglabn5701Banglaiu2550 Inuktitutiu500 Inuktituteo5066 Esperantotr4250Turkisheo4370 Esperantochr5367Cherokeeel5964Greekel14Greekzh663Chinesebn6562Banglabn1138Banglaeo1371 Esperantoes4372Spanishar1832Arabictr375Turkisheo2302 Esperantoccp2915Chakmaccp68Chakmaja4090Japaneseeo6200 Esperantosr3019Serbiantr8148Turkishzh1459Chineseru3903Russiansr2340Serbianiu5121 Inuktitutccp620Chakmaeo331 Esperantobn7595Banglaja5549Japanesezh2335Chinesear5689Arabiciu7889 Inuktitutar2101Arabiceo4998 Esperantochr6266Cherokeeen7242Englisheo8098 Esperantoru778Russiantr3100Turkishru3694Russianja210Japaneseja5270Japanesees6534Spanisheo6152 Esperantoar3974Arabicen2106Englishchr6307Cherokeees8016Spanishchr2312Cherokeeeo3463 Esperantotr7290Turkishth841Thaiel2553Greekchr1958Cherokeeth2114Thaitr3877Turkishbn908Banglaccp3253Chakmazh3591Chinesear5918Arabicen4949Englishzh2161Chineseen5785Englishccp6443Chakmachr5923Cherokeechr6746Cherokeeen1237Englishru3341Russianes5208Spanishes5624Spanishth4857Thaiar6144Arabicchr4833Cherokeefr3465Frenchbn4651Banglaja2711Japanesezh7588Chinesechr4251Cherokeechr5481Cherokeeel6749Greekbn6190Banglaar1528Arabicel4623Greekfr667Frenchzh1375Chineseel1262Greekel7786Greekru5303Russianel5646Greekccp3868Chakmabn5490Banglafr5797Frenchen2305Englishfr835Frenchccp6937Chakmaen5560Englishel7036Greekar7176Arabicel4874Greeksr342Serbianru6223Russianar172Arabicbn7938Banglabn4541Banglaen423Englishsr3541Serbianfr5554Frenchja2430Japanesees2772Spanishsr1859Serbianeo6805 Esperantoar7607Arabicel3747Greekfr6832Frenchtr3198Turkishtr3808Turkishbn6172Banglaccp1393Chakmaeo4987 Esperantotr4114Turkishccp3128Chakmaen5285Englishru3020Russianel7396Greektr3626Turkishel4991Greekru8086Russianes7946Spanishen6535Englishiu5510 Inuktituteo1934 Esperantotr4629Turkishfr643Frenchtr1499Turkishchr6231Cherokeeen4957Englishru5560Russianccp4687Chakmaar890Arabiceo3306 Esperantosr40Serbianen4908Englishja6272Japaneseja6482Japaneseen6233Englishja7727Japanesees6906Spanishzh430Chineseel4300Greekes2011Spanishes5680Spanishccp3774Chakmaen3278Englishiu3719 Inuktitutccp3513Chakmaccp7197Chakmaeo2396 Esperantoru2115Russiansr5665Serbianiu2615 Inuktitutth5142Thaies588Spanishes2850Spanishbn2439Banglaeo3569 Esperantofr5530Frenchccp7498Chakmasr2013Serbianel1690Greekccp4117Chakmael212Greekel515Greekchr7227Cherokeeeo3426 Esperantoeo5533 Esperantoccp7079Chakmaja4992Japaneseccp2208Chakmaeo3116 Esperantoth7951Thaies6793Spanishja4685Japaneseeo6669 Esperantotr66Turkishar879Arabicbn1148Banglabn5937Banglaru467Russianen3258Englishen5261Englishar2069Arabices3567Spanishfr5699Frenchiu1093 Inuktitutru4877Russianes5295Spanishru5388Russiansr1170Serbiansr3629Serbiansr6780Serbianiu745 Inuktitutchr8010Cherokeeel6781Greekru4986Russianchr8017Cherokeeeo5829 Esperantoel6287Greekes5148Spanishchr4497Cherokeear1253Arabiceo4893 Esperantotr2739Turkishzh4498Chineseen201Englishfr178Frenchth7540Thaizh1307Chineseth4035Thaiar2907Arabicar303Arabicfr583Frenchen4540Englishtr928Turkishja5051Japanesees7919Spanishth2066Thairu4637Russianfr7774Frenchzh5262Chinesear5649Arabicru2300Russianccp4916Chakmafr5884Frenchru8052Russiantr2743Turkishtr6514Turkishtr216Turkishccp6789Chakmath7873Thaiar5851Arabicfr7915Frenches7597Spanisheo6432 Esperantoja4902Japaneseja4973Japanesear1938Arabiceo5071 Esperantoccp6574Chakmath4284Thaiel6169Greekccp6454Chakmaen6040Englishchr1753Cherokeeen3847Englishes8029Spanishfr530Frenchja6005Japaneseja6253Japanesetr8103Turkisheo1385 Esperantosr1406Serbianchr5749Cherokeear2338Arabicar1199Arabicbn6940Banglaru1964Russianth1356Thaies4043Spanishel7485Greekel1956Greekfr90Frenchfr2835Frenchiu6660 Inuktitutar7676Arabicfr7547Frencheo7521 Esperantofr207Frenchru1670Russiansr4052Serbianes4714Spanishth4101Thaibn4912Banglatr4301Turkishen6857Englishel6823Greekchr6467Cherokeefr1885Frenchbn3087Banglaiu2482 Inuktitutru5162Russianiu5445 Inuktitutbn8129Banglaeo8164 Esperantobn4609Banglaeo4768 Esperantoeo6860 Esperantoru5553Russianccp4320Chakmazh3909Chinesees3241Spanishar2524Arabicchr4269Cherokeebn3571Banglaen7233Englishja1951Japaneseth8022Thaija7626Japaneseiu3940 Inuktituten3101Englishiu2331 Inuktitutja5330Japanesechr5229Cherokeeru690Russianbn5140Banglasr1325Serbianar5034Arabicchr6970Cherokeebn6576Banglael7868Greeksr5568Serbianen7313Englishccp4075Chakmabn7073Banglasr1747Serbiantr1281Turkishsr8143Serbianel3303Greekbn5125Banglabn63Banglaiu6627 Inuktitutfr5826Frenchru4420Russianchr7499Cherokeezh2100Chineseen3394Englishiu2334 Inuktitutja1778Japaneseeo4178 Esperantobn418Banglachr3036Cherokeeru4109Russianzh6417Chineseja3048Japaneseth4825Thaifr533Frenchel4614Greekar6759Arabicel6545Greekfr1706Frenches6332Spanishiu6376 Inuktitutel8046Greekru5635Russianel777Greeksr6375Serbianccp3454Chakmaen5508Englishel4004Greekru500Russianen7914Englishiu5766 Inuktitutru4649Russianccp1862Chakmabn7844Banglath4907Thairu201Russianel4066Greekes5236Spanishth1173Thaieo5029 Esperantoccp2434Chakmaeo5445 Esperantoel6201Greekar7075Arabicru1486Russianru3607Russianfr5034Frenchfr1767Frenchth2919Thaichr6489Cherokeeru6654Russianja5134Japaneseeo6081 Esperantoth4330Thaiar6786Arabices2188Spanishes5030Spanishbn699Banglaccp7547Chakmatr2037Turkishel4653Greekja4674Japaneseel886Greekes1796Spanishiu3382 Inuktitutel2327Greekel2997Greeksr429Serbianel2551Greeksr5941Serbiantr141Turkishzh6837Chineseccp2390Chakmafr6117Frenchzh4389Chinesetr7135Turkishen2900Englishccp5619Chakmabn472Banglaen3209Englishth847Thairu7542Russianth3377Thaifr7440Frenchtr727Turkishtr4379Turkishzh1857Chinesetr6395Turkishsr1178Serbianen1050Englishbn734Banglazh7014Chineseccp7847Chakmabn4130Banglasr2043Serbianja825Japaneseja5518Japaneseeo6643 Esperantotr5365Turkishzh3600Chineseccp7172Chakmaen5513Englishiu6745 Inuktitutru3154Russianar2142Arabicth7765Thaiar3739Arabicru108Russianeo7066 Esperantoja2275Japanesear6345Arabiceo6865 Esperantoar974Arabicar2990Arabicchr2187Cherokeeru5036Russianth62Thaiel5639Greekes4220Spanishth396Thaibn1558Banglasr1708Serbiansr888Serbianes4822Spanishen1992Englishccp3471Chakmafr879Frenchfr4187Frenchru7975Russiantr1685Turkishar4614Arabicel626Greekeo2465 Esperantoel5482Greekru6081Russianbn270Banglabn5479Banglaru3929Russianeo695 Esperantochr4932Cherokeeeo6111 Esperantoen4254Englishes183Spanishfr610Frenchchr5701Cherokeechr5371Cherokeees8111Spanishel5495Greekiu5919 Inuktitutfr7823Frenchccp7481Chakmaja312Japaneseja760Japanesetr6132Turkishzh1614Chinesear418Arabicel3521Greekja7420Japaneseiu4629 Inuktitutsr4365Serbiansr7819Serbianar7054Arabices6242Spanishfr314Frenchel4593Greekfr3569Frenchfr4985Frenchth1840Thaiel5547Greekel4871Greekeo593 Esperantoja6321Japaneseccp4733Chakmaeo7347 Esperantofr2532Frenchfr6421Frenchru4924Russianru307Russianfr2693Frenchel512Greekel5758Greekel6524Greekiu4248 Inuktitutar3604Arabicth7348Thaiar5383Arabicccp2359Chakmaja3673Japanesezh1841Chineseccp1178Chakmaar73Arabicfr2018Frenchsr4429Serbianbn4510Banglaru1878Russianes6769Spanishiu3687 Inuktituttr739Turkishtr621Turkishtr2974Turkishen371Englishen1673Englishen2116Englishar846Arabicar2032Arabicel5537Greekar969Arabicth5555Thaiccp7283Chakmafr1535Frenchja5772Japanesebn3305Banglaen1870Englishccp3576Chakmaeo2639 Esperantoen54Englishfr2360Frenchel1087Greeken682Englishsr6118Serbianbn7699Banglaiu5645 Inuktituten969Englishbn7408Banglaiu3118 Inuktitutfr7391Frenchth5427Thairu6682Russianen2034Englishar741Arabicchr5365Cherokeeen4233Englishtr182Turkishja2687Japanesetr156Turkishru3231Russianel1224Greeksr5610Serbianja543Japaneseen8046Englishzh5382Chinesebn1864Banglaiu3531 Inuktituten6192Englishzh8100Chineseel2535Greekel1222Greekzh2264Chinesefr6442Frenchen2924Englishccp2889Chakmaeo3321 Esperantotr2972Turkishsr7395Serbianchr3978Cherokeesr3313Serbianel2980Greekth7430Thaiel2465Greekccp7851Chakmaccp4674Chakmael5367Greekfr33Frenchen3955Englishfr1867Frenchen994Englishtr3256Turkishzh7089Chinesefr6840Frenchru935Russianar5764Arabiciu8040 Inuktitutru2276Russianja1519Japanesesr6143Serbianth8090Thairu6471Russianen5208Englisheo222 Esperantoru5115Russianeo3668 Esperantoru4782Russianth4193Thaieo2014 Esperantoru4573Russianchr2289Cherokeezh4789Chineseel6812Greekiu7441 Inuktitutzh4696Chinesebn5174Banglaja3137Japaneseja2347Japaneseen5710Englishen883Englishiu7064 Inuktituten147Englishfr5821Frenchru4372Russianchr910Cherokeeru5687Russianes5729Spanishth1967Thaiar4920Arabicbn2953Banglaeo5996 Esperantoru2823Russianru6040Russianth5309Thaith6743Thaiel5277Greekchr6833Cherokeebn1314Banglabn1024Banglaar4005Arabicbn7853Banglaeo2926 Esperantofr8071Frenchiu1152 Inuktitutja987Japaneseeo1585 Esperantoru5514Russianbn2556Banglachr4144Cherokeefr3050Frenchzh2051Chinesesr4510Serbianru4007Russianfr7843Frenchru1668Russianes2531Spanishru7333Russianfr4891Frencheo1520 Esperantoiu3167 Inuktitutar1765Arabiczh6237Chinesebn7964Banglaar5013Arabicel6463Greekiu6321 Inuktitutes357Spanishen1678Englishen3600Englisheo2447 Esperantochr218Cherokeefr6890Frenchru6059Russianru5994Russianeo4292 Esperantoiu7388 Inuktitutru3792Russianar6655Arabicsr4129Serbianzh881Chineseru285Russianchr3856Cherokeechr6829Cherokeeen5372Englishchr3532Cherokeeen2148Englishsr4294Serbianccp4557Chakmazh2250Chineseth4826Thaija4539Japaneseccp1854Chakmafr1007Frenchsr3169Serbianeo3795 Esperantoar1796Arabicsr2104Serbianeo4221 Esperantotr147Turkishbn3297Banglachr5116Cherokeeel265Greekel6862Greeksr6920Serbianth6157Thaies801Spanishsr553Serbianth2033Thaitr7417Turkishja2742Japanesezh7586Chinesezh198Chinesefr5263Frenches58Spanishen2282Englishes751Spanishar1628Arabicfr6744Frenchfr4431Frenchbn2728Banglaccp3354Chakmaru335Russianzh6616Chinesear7950Arabicar1884Arabicru1011Russiansr4585Serbianes4322Spanisheo3279 Esperantofr3214Frenchel3208Greekeo5044 Esperantoiu2887 Inuktitutiu5234 Inuktitutru2876Russianchr1186Cherokeear3294Arabicar3651Arabiceo4552 Esperantofr4783Frenchtr4959Turkishth4819Thaien2271Englishja7260Japaneseel5515Greekbn1549Banglaccp1361Chakmafr4908Frencheo7500 Esperantoar1140Arabiciu5411 Inuktitutfr3589Frenchar7770Arabicfr6408Frenchsr4270Serbianeo1223 Esperantoeo6560 Esperantotr4992Turkishiu889 Inuktitutth2170Thaies6007Spanishja141Japaneseiu2893 Inuktitutth6395Thaien7844Englishar6764Arabicbn4389Banglasr911Serbianru4758Russianja5058Japaneseel8038Greektr3052Turkishth5766Thaiar7014Arabicel4301Greekja3543Japaneseru1491Russianiu1281 Inuktitutth2775Thaieo3596 Esperantoru3874Russianiu2081 Inuktitutes7162Spanishfr8122Frenchar4387Arabiceo7924 Esperantoru4066Russianbn1963Banglasr3424Serbianchr3845Cherokeeel1106Greekel7184Greeken6570Englishiu2858 Inuktituttr5552Turkishccp6401Chakmath5569Thaifr7760Frenchel7361Greekel7324Greekja1602Japaneseth3690Thaizh2019Chineseiu1182 Inuktituten5058Englishiu5791 Inuktituteo4208 Esperantosr1225Serbianfr4288Frenchzh4906Chinesefr4934Frenchth6445Thaiel3844Greekccp1107Chakmaes8051Spanishbn1208Banglafr3625Frenchsr4547Serbianchr6084Cherokeeeo6077 Esperantoes4295Spanishtr6678Turkishes5524Spanishja2876Japaneseeo2773 Esperantochr99Cherokeees5817Spanishzh4685Chinesezh3558Chineseru4243Russianja7368Japanesees1438Spanishja3684Japanesezh3785Chinesees176Spanishzh1169Chinesebn6746Banglabn7379Banglaeo1526 Esperantotr4259Turkishru7684Russianiu6504 Inuktitutru4864Russiansr604Serbianes1690Spanishfr1713Frenchzh438Chineseen82Englishccp2956Chakmaes889Spanishen488Englishar7413Arabicen6796Englishel99Greeksr6500Serbianeo4621 Esperantoar6511Arabicccp2518Chakmaiu5404 Inuktitutth1317Thaies4596Spanishfr3968Frenchtr7946Turkishth2588Thaibn5103Banglath4586Thaiccp3500Chakmath4058Thaiar6481Arabiciu2233 Inuktitutccp1869Chakmaccp5799Chakmachr416Cherokeebn342Banglaccp2029Chakmachr2819Cherokeezh3576Chinesezh4103Chineseccp2248Chakmaeo7166 Esperantobn1874Banglaja5664Japanesetr2376Turkishth2040Thaisr1935Serbianccp2226Chakmaiu4018 Inuktitutth3392Thaiiu4299 Inuktitutbn2993Banglaccp5418Chakmafr4104Frenchccp4262Chakmaes7029Spanishccp5044Chakmaen851Englishchr3017Cherokeees3603Spanishfr1441Frenchen6687Englishbn5424Banglael2107Greeken1174Englishiu4570 Inuktitutfr3192Frenchsr7105Serbianccp6961Chakmabn7627Banglael5700Greekar3937Arabicccp3639Chakmazh6411Chinesees2447Spanishes120Spanishccp6468Chakmael4356Greekccp3830Chakmaccp5917Chakmaen7414Englishsr1386Serbianiu3152 Inuktitutru3805Russianccp1196Chakmatr499Turkishccp6402Chakmafr5615Frenchar4057Arabictr4184Turkishfr1137Frenchiu5882 Inuktituttr7582Turkisheo6636 Esperantotr7259Turkishsr2264Serbianru2810Russianar314Arabicccp7263Chakmasr688Serbianbn1607Banglaccp3521Chakmasr4681Serbiantr6204Turkishes186Spanishes7304Spanishru1253Russianth907Thaifr5767Frenchen1911Englishru1355Russianbn1965Banglaar7416Arabicchr7566Cherokeeen3109Englishccp3640Chakmaccp2773Chakmachr1780Cherokeeeo3287 Esperantoccp7216Chakmazh2846Chinesees915Spanishru942Russianbn6434Banglaen5910Englishccp7256Chakmael5601Greekiu3369 Inuktitutja5698Japanesefr2408Frenches2672Spanishfr6407Frenchzh1181Chineseen7017Englishru345Russianel1663Greekzh4263Chineseel7630Greekiu3056 Inuktitutbn4576Banglachr5232Cherokeezh7687Chinesetr2581Turkishccp6134Chakmasr6728Serbianru4852Russianth2467Thaifr2573Frenchiu4471 Inuktitutzh2383Chineseeo1010 Esperantoth4423Thaija6348Japaneseeo7443 Esperantoja4626Japaneseru600Russianeo6094 Esperantoru5345Russiantr4534Turkishzh2754Chinesebn6673Banglaen5383Englishiu7164 Inuktitutth2527Thaien6052Englishru6949Russianar7982Arabicru4371Russianel2180Greekel7241Greekchr2154Cherokeebn1001Banglachr1066Cherokeeru4972Russianru7740Russianru170Russianru2135Russianbn7664Banglazh4235Chinesezh4450Chinesear1965Arabiceo6395 Esperantotr3212Turkishchr3780Cherokeees7631Spanishiu1627 Inuktitutru4148Russianes426Spanishar1968Arabicsr3080Serbianen5876Englishel8084Greekiu6346 Inuktitutel6115Greekru98Russianth13Thaien7871Englishes3731Spanishccp3218Chakmafr7800Frenchel5231Greekchr7438Cherokeeeo2343 Esperantoth6209Thaitr3142Turkishbn2371Banglatr2347Turkishchr7390Cherokeeiu279 Inuktitutsr7379Serbianen6276Englishzh4761Chinesechr5906Cherokeeth3838Thaiar1373Arabictr180Turkishfr8015Frenchtr2935Turkishzh120Chinesesr5262Serbianth4722Thaiar5104Arabicar6206Arabicth955Thaiel1585Greekccp2739Chakmath4981Thaisr916Serbianes2868Spanishru6428Russianel2912Greeken3574Englishccp1224Chakmaen1867Englishes6768Spanishru6673Russianja2168Japaneseiu6199 Inuktitutth2805Thaifr3361Frenches250Spanishel878Greekfr443Frenchsr7023Serbianzh2108Chinesezh7429Chineseen7113Englishar3267Arabicbn2894Banglath7075Thaifr341Frenchfr1189Frenchtr2560Turkishen5023Englishtr6598Turkisheo1552 Esperantoar3032Arabicchr712Cherokeeel3017Greekeo6054 Esperantofr6043Frenchar690Arabiceo7504 Esperantoja6221Japanesefr6898Frenchzh5075Chinesezh6813Chinesezh3117Chinesezh6627Chinesebn4258Banglaru6006Russianen1268Englishen3975Englishsr6793Serbianth4492Thaiel1206Greekchr2435Cherokeees4093Spanishar6835Arabicfr2029Frenchen610Englisheo6042 Esperantoiu469 Inuktituteo3586 Esperantoes836Spanishes3476Spanishen1636Englishiu4903 Inuktitutzh822Chinesezh7858Chinesear3945Arabicfr1433Frenchar8101Arabicccp6463Chakmaeo2983 Esperantoiu1599 Inuktitutth4416Thaieo6298 Esperantochr3012Cherokeefr1881Frenchen3759Englishbn531Banglael4641Greekeo6979 Esperantozh1400Chinesebn6238Banglaen5544Englishbn7399Banglaes7826Spanishes4795Spanishel1558Greekth7984Thaien1634Englishen1144Englisheo933 Esperantoja4964Japanesesr2329Serbiansr5996Serbianth8064Thaifr8166Frenchar7991Arabicbn2897Banglaes6692Spanishes4710Spanishiu6458 Inuktituttr6021Turkishtr8172Turkishar7627Arabictr8011Turkishth1809Thaiccp7665Chakmaiu6523 Inuktitutes3090Spanishel7741Greekchr4223Cherokeetr6789Turkishiu5501 Inuktitutes451Spanishtr1953Turkishja1723Japaneseiu5932 Inuktitutzh445Chinesechr5476Cherokeees4422Spanishfr5439Frenchzh3718Chinesear4957Arabicchr5263Cherokeezh7398Chineseen7787Englishru6064Russianiu3210 Inuktitutja7295Japanesebn1127Banglaeo6721 Esperantozh7407Chinesebn6282Banglaen1873Englishja7361Japanesefr8110Frenchfr2691Frenchru2021Russianchr8141Cherokeesr7791Serbianchr7142Cherokeefr7104Frenchccp2261Chakmabn3206Banglaccp2490Chakmaeo422 Esperantoeo5526 Esperantotr7440Turkishsr5005Serbianar3837Arabicfr6564Frenchiu402 Inuktitutsr6050Serbianchr7969Cherokeees8185Spanishsr1106Serbianen4746Englishsr5987Serbianen3745Englishtr2397Turkishja8157Japaneseccp5967Chakmaes2041Spanisheo5912 Esperantoccp7908Chakmaja3239Japaneseeo7314 Esperantoel56Greekzh1991Chineseen6109Englisheo4559 Esperantoes6006Spanisheo692 Esperantofr1689Frencheo8088 Esperantoru4136Russianar5553Arabicar2930Arabicbn3513Banglaru4832Russianja3606Japaneseiu669 Inuktitutccp6268Chakmaccp2726Chakmael2173Greekchr2966Cherokeeja4295Japaneseru1620Russiansr5711Serbianru1363Russianfr6739Frenchel6385Greeksr612Serbiantr6885Turkishfr3193Frenchen4474Englishes3624Spanishar3024Arabicja3352Japanesefr5258Frenchar724Arabices4489Spanishiu2461 Inuktituten1759Englishtr2705Turkishel3846Greekeo1586 Esperantozh2762Chinesebn8107Banglael1250Greekbn4550Banglachr4601Cherokeeen7498Englishth3575Thaitr612Turkishfr2612Frenchchr6340Cherokeeth1108Thaieo1971 Esperantotr3312Turkisheo3078 Esperantoeo7220 Esperantoiu3482 Inuktitutru5530Russianbn466Banglael4652Greekfr5091Frenches2234Spanishiu2302 Inuktitutbn1704Banglaar5913Arabictr6179Turkishth804Thaith4612Thaiccp2874Chakmachr152Cherokeebn3149Banglaar354Arabices146Spanishzh714Chinesear2051Arabicel36Greekru6139Russiantr1374Turkishchr6117Cherokeetr7560Turkishtr1020Turkishja1933Japaneseen3019Englishtr1300Turkishes7426Spanishiu4059 Inuktitutbn7631Banglath6792Thaitr7199Turkisheo1456 Esperantoes8170Spanishccp621Chakmaen3640Englishth1371Thaien408Englishsr2526Serbianel1814Greektr11Turkishchr7054Cherokeeiu4134 Inuktitutsr4093Serbianzh1605Chineseel2786Greekru6568Russianzh6654Chineseth8051Thaija1378Japaneseccp1972Chakmafr7653Frenchiu5427 Inuktitutel2008Greekja2006Japanesechr5962Cherokeechr5447Cherokeees2408Spanishtr2198Turkishel5294Greekfr883Frenchccp8022Chakmath6899Thaija673Japanesetr7760Turkishchr5541Cherokeees6430Spanishfr5320Frenchtr392Turkisheo4687 Esperantobn454Banglachr1005Cherokeeja6786Japaneseccp1084Chakmafr5511Frencheo4972 Esperantosr2988Serbianbn1381Banglaen3262Englisheo2263 Esperantoja1542Japaneseja3181Japaneseja4380Japaneseru4643Russianel190Greekth4456Thaith5578Thaith7384Thaitr7930Turkishccp1935Chakmaeo2973 Esperantoes1324Spanishel2408Greektr8159Turkishzh4134Chinesesr2972Serbianbn6763Banglabn5084Banglafr2855Frenches6383Spanishtr3763Turkishchr2702Cherokeeru2189Russianzh6424Chinesebn6464Banglaru3405Russianiu5892 Inuktitutzh4621Chinesees2119Spanishiu3474 Inuktituttr4061Turkishes6385Spanishes4863Spanishsr438Serbianen524Englishen4570Englishsr1314Serbiansr4683Serbianel4454Greekeo1376 Esperantoes7293Spanishen849Englishiu2917 Inuktitutar7840Arabiczh3980Chineseeo6819 Esperantosr5116Serbianes3894Spanishel3917Greekbn7743Banglachr4089Cherokeeja7762Japaneseeo8165 Esperantoar1264Arabiczh440Chinesezh5533Chineseen7090Englishja2144Japaneseru7751Russianru3531Russiantr5026Turkishel2435Greekchr3451Cherokeechr7919Cherokeeel2689Greeksr5430Serbianen4152Englishja112Japanesechr3199Cherokeeen2292Englisheo5501 Esperantobn3675Banglaar5409Arabices2160Spanishel328Greekja4825Japanesetr5323Turkishar4260Arabicel6656Greekth3695Thaith1985Thaitr6156Turkishar56Arabicar2571Arabiceo3776 Esperantofr6700Frenchtr334Turkishen3062Englishes2824Spanishiu2768 Inuktitutru1372Russianbn1224Banglaru4399Russianru4904Russianzh7082Chinesefr2642Frenchfr1504Frenchccp7015Chakmaes982Spanishja7750Japaneseru2441Russianeo1478 Esperantoru3858Russiansr3762Serbiantr3768Turkisheo1215 Esperantoccp1637Chakmaen1026Englishccp3826Chakmaes2092Spanishfr7515Frenchru6850Russiantr637Turkishru5999Russianen8006Englishzh6910Chinesefr3889Frenchbn5314Banglaccp7415Chakmafr422Frenchja5656Japaneseccp3182Chakmaja6711Japaneseen2946Englishfr4579Frenches2354Spanisheo7272 Esperantoiu754 Inuktitutes182Spanishel2047Greekru6937Russianchr7677Cherokeeja7674Japanesesr7456Serbianth3650Thaies589Spanishth7635Thaizh4306Chinesechr5544Cherokeeel2002Greeksr1951Serbianchr6458Cherokeear777Arabicfr7576Frenchja5176Japanesesr5272Serbianar7535Arabicsr7889Serbianbn473Banglaeo7579 Esperantoth1779Thaiccp4384Chakmaccp8075Chakmaccp3050Chakmaeo2736 Esperantoth3324Thaiel4785Greekiu7708 Inuktitutja1330Japanesebn1683Banglael4171Greeksr5549Serbianzh3653Chineseccp2909Chakmachr1717Cherokeeth475Thaizh1911Chinesezh528Chinesechr3279Cherokeear7963Arabicsr4238Serbianth2737Thaith6088Thaichr1775Cherokeebn6759Banglaiu518 Inuktitutel184Greekes845Spanishen6804Englisheo3327 Esperantobn7884Banglazh8147Chineseru6090Russianen2312Englishja1496Japaneseiu7456 Inuktitutzh3462Chineseeo4971 Esperantoccp904Chakmaes1373Spanishchr4557Cherokeeeo7887 Esperantoja6324Japanesezh7807Chineseja4544Japaneseel6356Greekja4343Japaneseccp271Chakmaen7961Englishth1465Thaien3239Englishsr2515Serbiantr3666Turkishel2288Greekzh5068Chinesetr4209Turkishbn1566Banglath1742Thaibn4518Banglachr3018Cherokeefr1129Frenchzh1193Chinesear4450Arabicen6676Englishiu7744 Inuktitutth2617Thaichr5025Cherokeeth7645Thaiccp5253Chakmaru2325Russianiu3958 Inuktitutja28Japanesesr574Serbianbn3272Banglachr3280Cherokeeeo1195 Esperantoeo4676 Esperantochr4714Cherokeeen1566Englishth4345Thaitr2954Turkishccp3580Chakmael7875Greekru1768Russianeo3693 Esperantoeo3022 Esperantoiu4994 Inuktitutja7371Japaneseru6729Russianchr1741Cherokeeja2152Japanesees5848Spanishsr1036Serbianfr7562Frenchar745Arabicsr2708Serbianru2356Russianes774Spanishccp3044Chakmaiu2601 Inuktitutel5122Greekzh620Chineseen2673Englishth534Thaifr7805Frenchtr7659Turkishja7752Japanesear6751Arabictr1956Turkishfr3321Frenchchr7986Cherokeees1871Spanishiu6655 Inuktituten1640Englishel5034Greekru5037Russianru632Russianzh3986Chineseccp4394Chakmaes3427Spanishbn7304Banglaccp7291Chakmafr292Frenchja7855Japaneseja7384Japaneseth2859Thaisr7862Serbianar5235Arabicfr5671Frenchfr5759Frenchfr5889Frenchru7556Russianja7360Japaneseiu3209 Inuktitutel2715Greekth4045Thaisr6492Serbianru5915Russianeo6244 Esperantoen2661Englishsr1966Serbianen5222Englishsr6510Serbianth3797Thaies7466Spanishchr2379Cherokeear5342Arabicchr7207Cherokeeiu6250 Inuktitutel7442Greekar961Arabicfr6269Frenchiu6522 Inuktituttr3343Turkishiu5197 Inuktitutccp3357Chakmaeo5946 Esperantofr4451Frenchbn6545Banglaar775Arabicth182Thaith2513Thaitr3524Turkishfr7742Frenchchr7673Cherokeees5136Spanishzh5805Chinesetr3253Turkishccp4121Chakmaen6744Englishiu6834 Inuktitutbn3379Banglath7136Thaieo1313 Esperantosr3989Serbianiu1147 Inuktituten5278Englishar5138Arabicru4598Russianja2208Japanesetr2602Turkishiu3707 Inuktituteo570 Esperantoen3094Englishru731Russianchr6877Cherokeeel7385Greektr364Turkishja245Japaneseen4000Englishccp113Chakmaen5439Englishth2894Thaiar5744Arabicbn546Banglabn221Banglaen60Englishiu1054 Inuktitutfr1060Frenchiu3543 Inuktitutchr5319Cherokeeel3653Greeksr4254Serbiansr7200Serbianzh2931Chinesetr433Turkishzh4080Chinesebn6585Banglazh7548Chinesebn1363Banglachr2202Cherokeeccp5848Chakmath2862Thaiar2250Arabicar7341Arabicar7566Arabicel4566Greekccp534Chakmazh6437Chinesezh7501Chinesezh1253Chineseja741Japanesesr7318Serbianbn60Banglael5790Greeken4558Englisheo7105 Esperantoeo4304 Esperantofr519Frencheo206 Esperantoel4879Greekfr6656Frenchru846Russianchr2122Cherokeeeo1813 Esperantosr3350Serbianbn5932Banglaru1902Russianes3862Spanishzh4397Chineseru6612Russianru2896Russianccp1090Chakmaru6243Russianel7662Greekth3463Thaiel1098Greekchr1215Cherokeeen5636Englishth5384Thaiar5614Arabicfr6298Frenchfr894Frenchiu1381 Inuktitutar5941Arabicccp4577Chakmaes420Spanishiu906 Inuktitutru5326Russianar5215Arabicbn2405Banglaar7586Arabicchr4779Cherokeeeo5742 Esperantoiu5058 Inuktitutes3995Spanishzh1167Chineseru3913Russianar7742Arabicel5158Greekes616Spanishiu3434 Inuktituten3665Englishja7823Japaneseth2401Thaiel5453Greekfr4095Frenchth194Thaitr4566Turkishtr3189Turkishzh1145Chineseru6274Russiantr4299Turkishsr2742Serbiantr6781Turkishru7733Russianeo5972 Esperantobn5846Banglaar3636Arabicccp2950Chakmaeo3075 Esperantoar5619Arabicru3787Russianes2375Spanishel5959Greekel3875Greekth6422Thaisr5150Serbianiu6029 Inuktitutth7173Thaizh6088Chinesefr5714Frenchccp2755Chakmachr4824Cherokeeel3234Greekru788Russianzh2270Chinesechr1592Cherokeezh5638Chineseja3925Japaneseel3889Greekar3818Arabicchr6472Cherokeeru4582Russianzh1990Chinesear4034Arabicccp6283Chakmael925Greekes4016Spanishja3332Japanesesr636Serbianfr4938Frenchfr4790Frenchru4391Russianen4932Englishtr4369Turkishen6594Englishiu709 Inuktitutiu7838 Inuktitutccp7609Chakmasr43Serbianth6492Thaiar7898Arabicen5506Englishzh1339Chinesechr7365Cherokeechr1260Cherokeeja6115Japaneseru3091Russianzh6149Chineseen3450Englishsr5429Serbianth2247Thaiiu3533 Inuktitutru8109Russianes914Spanishja1078Japaneseel1132Greekiu1858 Inuktituttr634Turkishel905Greekfr6558Frenchen7493Englishes4668Spanishchr735Cherokeeru831Russianiu2660 Inuktitutar2323Arabicchr7684Cherokeesr4194Serbianchr6039Cherokeezh5621Chinesetr5008Turkishzh7598Chinesear6566Arabicfr6962Frenchel830Greeken679Englishiu3273 Inuktitutccp2631Chakmachr5766Cherokeeel5102Greekar453Arabicth6392Thaija5196Japaneseel2296Greekar2945Arabiceo954 Esperantofr6669Frenchbn67Banglafr7913Frenchccp7985Chakmaru702Russianja2689Japaneseccp926Chakmaes3504Spanishiu1673 Inuktituteo7647 Esperantoen3733Englishar6388Arabicbn963Banglabn5541Banglazh6025Chinesebn6848Banglaja4226Japaneseiu3518 Inuktitutfr4949Frencheo7415 Esperantosr4425Serbianiu6083 Inuktitutth4536Thaith7505Thaifr1961Frenchchr5401Cherokeeel5938Greekel88Greekbn1881Banglath694Thaiar7232Arabicja1376Japaneseen6749Englishccp2114Chakmaja6296Japanesesr1303Serbianeo2648 Esperantoru2278Russianth7327Thaies7408Spanishtr2752Turkishja4643Japaneseiu113 Inuktitutbn7583Banglachr5586Cherokeeja6084Japaneseja6677Japaneseeo1845 Esperantoiu1308 Inuktituten7590Englishth697Thaies1640Spanishbn1943Banglaar4382Arabicchr4192Cherokeeel1763Greeken3994Englishsr91Serbianfr7561Frenches4969Spanishsr66Serbiansr2478Serbiantr5623Turkisheo1467 Esperantosr6816Serbianzh5040Chinesebn1121Banglath5123Thaizh4178Chinesear5164Arabicbn6186Banglachr3041Cherokeesr6462Serbianeo937 Esperantoccp5769Chakmaccp1110Chakmaen4782Englishru6085Russianfr3650Frenchccp6273Chakmabn4495Banglael1522Greekel2243Greeksr2136Serbianbn896Banglaeo2485 Esperantoccp4293Chakmachr6777Cherokeeiu7011 Inuktitutru2521Russianzh7995Chinesetr5652Turkishccp4610Chakmabn5812Banglafr3740Frenchen4165Englishfr6105Frenchchr5505Cherokeeeo5576 Esperantoes1573Spanishzh2017Chinesefr1904Frenchsr2825Serbiantr3402Turkishja1178Japanesefr4130Frenches531Spanishzh2141Chinesetr6309Turkishth3672Thaija5300Japanesear1954Arabicth4154Thaisr268Serbianchr6708Cherokeetr4086Turkishccp8054Chakmaen6807Englishiu2164 Inuktitutel5863Greekfr4013Frenchen2005Englishzh632Chineseel6873Greekbn5892Banglaja7962Japanesesr2842Serbianja1143Japanesefr4846Frenchsr4267Serbianfr5497Frenchja5287Japanesesr4740Serbianfr4129Frenchtr3911Turkishzh5379Chinesezh388Chinesechr6063Cherokeebn5456Banglasr6513Serbianel169Greektr6451Turkishtr6535Turkishth896Thaichr2002Cherokeeru4955Russiansr8129Serbianth7349Thaizh413Chineseel3520Greekfr8170Frenchsr8104Serbiantr966Turkishbn7861Banglafr898Frenchel1258Greeksr5666Serbianen2913Englishen4523Englisheo3413 Esperantoar3368Arabicbn260Banglaes7069Spanishiu2990 Inuktitutes2154Spanishja2892Japanesesr299Serbiansr1435Serbiansr4424Serbianru204Russianel2481Greekiu5090 Inuktituttr5036Turkishfr6713Frenchiu3581 Inuktitutru5512Russianar1741Arabices4052Spanishru3706Russianeo7535 Esperantoccp4165Chakmaeo30 Esperantoen7181Englishes95Spanishbn1584Banglafr7633Frenchtr1245Turkisheo2622 Esperantoeo38 Esperantoeo7544 Esperantoiu767 Inuktitutru1047Russianen3107Englishru7964Russiantr235Turkishbn2170Banglaes3339Spanishel6856Greekiu4260 Inuktituttr4951Turkishtr7687Turkishes4210Spanishchr3533Cherokeeeo4306 Esperantofr1177Frenchzh3067Chinesezh3761Chineseeo6384 Esperantoru2934Russianzh7780Chinesebn7933Banglaeo6205 Esperantoiu833 Inuktitutja6680Japanesear285Arabicchr880Cherokeeen3102Englishzh124Chineseeo2209 Esperantoja6833Japanesechr3403Cherokeeen1348Englishth3932Thaien7791Englishel3215Greeken1584Englishes2383Spanisheo4139 Esperantozh5183Chineseen5049Englishzh7581Chinesefr7367Frenchiu176 Inuktituten4404Englishchr8173Cherokeeiu5922 Inuktitutru3156Russianru482Russiansr7166Serbianes6467Spanishfr5078Frenchja6883Japanesesr4819Serbianes1752Spanisheo2439 Esperantoru927Russianru4559Russianchr3307Cherokeeen4760Englishes1442Spanishiu4367 Inuktitutar1151Arabicth1306Thaiel4835Greekeo1424 Esperantoeo5112 Esperantoen4383Englishfr97Frenchen907Englishbn4Banglaar6594Arabicchr7704Cherokeees3290Spanishja7600Japaneseru8060Russianeo7603 Esperantozh6207Chinesear5513Arabicja7846Japaneseja7904Japaneseiu3350 Inuktitutccp4045Chakmaen4564Englishja836Japaneseru1484Russianja7344Japaneseth2454Thaieo7437 Esperantoja3230Japaneseru7531Russianiu441 Inuktitutja1979Japanesechr7011Cherokeezh5241Chineseiu7830 Inuktitutbn8175Banglaeo3850 Esperantozh1005Chinesefr5708Frenchja356Japanesear7355Arabicen2558Englishth3523Thaith6517Thaifr4102Frenchzh6846Chinesesr2164Serbianchr4145Cherokeebn1977Banglael1062Greekeo371 Esperantoar880Arabicbn1496Banglath2176Thaija2829Japaneseccp4667Chakmaeo3906 Esperantoth1685Thaizh5386Chinesebn1593Banglaen5249Englishbn3410Banglaiu6653 Inuktitutchr3151Cherokeeja6688Japaneseru7393Russianfr1199Frenchsr788Serbianel6943Greekth1527Thaies8164Spanishfr5295Frenchfr6763Frenchfr6931Frenchja5208Japaneseru1283Russianja4208Japaneseru3461Russianen4163Englishru7814Russianzh6369Chineseru522Russianru7027Russiantr3252Turkishfr6330Frenchbn4115Banglazh512Chinesebn5499Banglatr455Turkishen256Englishtr1063Turkishja6937Japaneseiu3100 Inuktitutes7428Spanishccp1254Chakmachr1611Cherokeeiu2528 Inuktitutccp255Chakmael4243Greekfr7773Frenchru6089Russianel7233Greekfr639Frenchru1683Russianth5246Thaiccp5931Chakmachr7792Cherokeeeo3736 Esperantoru781Russianzh5311Chineseru1457Russianja1498Japanesetr4431Turkishiu2400 Inuktitutel1169Greektr2099Turkishel7102Greeken5115Englishzh1711Chinesebn3696Banglachr2421Cherokeebn4308Banglael7346Greekchr3587Cherokeeja1689Japaneseen5820Englishccp3058Chakmaen2426Englishes1337Spanishen5332Englishsr5802Serbiantr5563Turkishbn5038Banglaru4332Russianel7007Greekiu1985 Inuktituttr3959Turkishiu2620 Inuktitutar2088Arabicfr5973Frenchen7351Englishja1700Japaneseen239Englishru7072Russianen2605Englishru5156Russianar1577Arabicru5Russianth7697Thaiel2562Greektr204Turkishru180Russianja6705Japanesebn1062Banglafr711Frenchfr7146Frenchru5670Russiantr5909Turkisheo4894 Esperantoth1757Thaifr1606Frenchar1159Arabicsr1917Serbianar6136Arabicccp3846Chakmachr5207Cherokeees3307Spanishel6320Greekeo378 Esperantoja403Japanesetr1285Turkishth5028Thaiccp1433Chakmazh8074Chineseeo1635 Esperantoeo5833 Esperantoes8017Spanishja1326Japaneseth4376Thaiar5977Arabictr6118Turkishar1900Arabiceo3333 Esperantochr4865Cherokeeja3861Japanesebn6153Banglael6559Greekru3642Russianru4130Russiantr2859Turkisheo7186 Esperantozh2565Chineseiu1751 Inuktitutru789Russianfr2204Frenchccp3978Chakmaru7869Russianth1156Thaiar5729Arabicja7272Japaneseiu4359 Inuktituten5549Englishen5192Englisheo7390 Esperantoja3982Japanesezh7020Chinesees4852Spanishes6245Spanishen3058Englishccp5712Chakmaes7883Spanishchr7604Cherokeezh7743Chinesesr7536Serbianzh3445Chineseth2218Thaija510Japaneseiu2476 Inuktitutzh1510Chinesefr2362Frenchzh2350Chinesear5498Arabicsr8065Serbianth6187Thaiar3404Arabiczh3372Chineseth3284Thaiccp1659Chakmaja3441Japaneseja1393Japaneseiu3120 Inuktitutth4708Thaien2768Englishel123Greekth942Thaien1090Englishiu2894 Inuktituten2494Englishja5562Japanesebn3275Banglaar7088Arabicfr7135Frenchccp2146Chakmaiu3713 Inuktitutccp6174Chakmaen2518Englishes2820Spanishja4498Japaneseccp7278Chakmaes481Spanishccp6596Chakmaccp355Chakmaiu3949 Inuktitutchr5304Cherokeebn3949Banglaes4410Spanisheo1663 Esperantoru3811Russianzh7468Chinesees4906Spanishja314Japanesechr1863Cherokeees5451Spanishru5730Russianth1898Thaiel6299Greeken7853Englisheo6212 Esperantoel2402Greekja6999Japaneseeo5504 Esperantoeo7508 Esperantochr2077Cherokeezh6890Chineseel4013Greekar797Arabicbn5899Banglaja7550Japaneseth2920Thaibn356Banglaen6770Englishel2822Greekar3285Arabicbn4193Banglazh2498Chinesesr3918Serbianchr1305Cherokeeeo2753 Esperantofr2787Frenchccp7744Chakmachr4463Cherokeezh3242Chinesetr6287Turkishiu4795 Inuktitutbn3777Banglael2389Greekel3597Greekes2094Spanishfr1084Frenchar6750Arabiczh4499Chineseru6744Russianel418Greektr7649Turkishth6353Thaith2387Thaichr4773Cherokeeja3187Japanesebn138Banglaccp6602Chakmachr1181Cherokeezh2637Chineseen453Englisheo5043 Esperantosr7078Serbiansr1977Serbianfr4222Frenchar5578Arabicru6861Russianja2708Japanesezh6959Chineseiu6116 Inuktitutes7737Spanishes2174Spanishth2602Thaith2624Thaija6264Japanesear2109Arabices5305Spanishtr2346Turkishel4138Greekbn3606Banglaar3345Arabiceo7718 Esperantochr1752Cherokeees6190Spanisheo4077 Esperantobn7413Banglaru3960Russianzh7901Chineseru4587Russianchr6402Cherokeechr5228Cherokeees3582Spanishth1051Thaith1636Thaizh1957Chineseeo2480 Esperantoru5505Russianbn5559Banglaeo3228 Esperantotr5594Turkishtr2762Turkishfr6195Frenchth5352Thaizh358Chineseiu5985 Inuktitutar1776Arabicbn398Banglafr5037Frenchzh2026Chinesesr7885Serbianfr5571Frenchchr45Cherokeees753Spanishar2318Arabiciu7759 Inuktitutccp4240Chakmaja3313Japanesechr70Cherokeear1879Arabicbn5644Banglatr4243Turkishchr2026Cherokeees6306Spanisheo6738 Esperantoiu5694 Inuktitutth6186Thaiel1432Greekes7897Spanishchr7975Cherokeebn1427Banglaen1961Englishel2846Greektr4560Turkishja5747Japanesetr5275Turkishfr6196Frencheo1962 Esperantoiu1982 Inuktitutiu7663 Inuktituttr6714Turkishel2086Greekel6008Greekar7926Arabiciu1621 Inuktituttr5195Turkisheo3388 Esperantoiu5900 Inuktitutel1875Greekes5084Spanishth4737Thaibn2902Banglasr7122Serbianar3783Arabicth4550Thaisr6014Serbianchr5925Cherokeefr3013Frenchchr404Cherokeebn6154Banglaja6863Japaneseth3870Thaizh1333Chinesetr3096Turkishja850Japanesezh4104Chinesetr7852Turkishja1988Japaneseeo7972 Esperantotr6209Turkishru2907Russianeo788 Esperantoiu4663 Inuktitutsr7778Serbianchr6121Cherokeeth4744Thairu2766Russiansr2139Serbiansr6036Serbianja893Japanesebn4955Banglafr4745Frenchsr5193Serbianja4560Japanesebn4170Banglazh2579Chinesees1375Spanishtr2028Turkishfr1425Frenchja5505Japaneseel4591Greekes4306Spanishiu3178 Inuktitutel4194Greekzh6141Chineseen3087Englishbn2887Banglabn5250Banglaeo2901 Esperantoiu421 Inuktitutzh857Chinesees6180Spanishar678Arabiczh2947Chinesezh5061Chinesefr7884Frenchar5264Arabicsr1929Serbianchr3951Cherokeebn7850Banglael6951Greekes1707Spanishsr7319Serbiantr5452Turkishfr1977Frenchchr7804Cherokeeeo7117 Esperantoes4643Spanishen5324Englishsr8179Serbianja3513Japanesesr7135Serbianen2329Englishes3101Spanishja6637Japanesechr2603Cherokeeccp2497Chakmatr7799Turkishes3648Spanishes5692Spanishth3301Thaitr2824Turkishar349Arabicel592Greekar6986Arabicbn2456Banglaar773Arabicfr1965Frenchel3425Greekccp7487Chakmaccp1056Chakmafr6695Frenchiu6789 Inuktitutru7803Russianth4447Thaizh2661Chinesezh4679Chinesear5112Arabicru8054Russianen2031Englisheo5283 Esperantobn3056Banglatr4818Turkishchr1047Cherokeeen3527Englishen6185Englishel2111Greekeo1639 Esperantoru8090Russianes3337Spanishbn6287Banglasr1335Serbianbn3173Banglaccp6699Chakmaja2090Japanesebn6207Banglachr4255Cherokeeeo6400 Esperantoru4769Russiansr4048Serbianth1165Thaiiu491 Inuktitutfr4210Frenchfr6690Frenchiu4165 Inuktitutar1714Arabicchr7162Cherokeebn1021Banglaar6771Arabicel3856Greeken5139Englishen7635Englishes7225Spanishfr6999Frenchsr861Serbianth6604Thaitr4510Turkishzh4889Chinesefr3739Frenchja4879Japaneseel5235Greekru3247Russianth2045Thaiiu1485 Inuktitutru7535Russianeo4495 Esperantozh7291Chineseru6963Russianzh5359Chineseel3720Greeken4761Englishes160Spanishiu7505 Inuktitutccp142Chakmazh4741Chineseel5393Greekchr4485Cherokeees5854Spanishsr7177Serbianbn2674Banglath767Thaisr4286Serbianiu6097 Inuktitutar975Arabicbn7899Banglabn3930Banglasr5629Serbianen3631Englishru76Russianth3053Thaifr1206Frenchel7090Greekja2764Japanesechr3600Cherokeeja3082Japanesetr5384Turkishth922Thaizh5703Chineseeo7834 Esperantoiu6923 Inuktitutiu8088 Inuktitutfr6379Frenchja6450Japanesesr3758Serbianar6936Arabicsr4138Serbianth6524Thaiel4326Greekru5050Russianbn746Banglachr1807Cherokeeen2447Englishzh3729Chinesezh4850Chineseja4838Japaneseel7690Greekccp3497Chakmaiu2125 Inuktitutzh2948Chinesechr2595Cherokeefr3001Frenchiu1902 Inuktitutiu3164 Inuktitutsr2759Serbianth2027Thaitr5793Turkishth7334Thaien2437Englishsr1103Serbianiu2370 Inuktitutes7909Spanishfr1589Frenchfr810Frenchtr1780Turkishtr6779Turkishtr3215Turkishbn4253Banglaccp6566Chakmasr1847Serbianfr6357Frenchccp5428Chakmachr1205Cherokeeiu2667 Inuktituttr4523Turkishar1111Arabicccp6275Chakmaja1594Japaneseth3956Thaiar5465Arabicar3838Arabicchr3398Cherokeeja2804Japanesesr5756Serbianja3966Japaneseccp6707Chakmaeo3158 Esperantoja8044Japaneseen7505Englisheo6173 Esperantosr4256Serbiansr7920Serbianja3190Japaneseel5070Greekth6883Thaien1552Englishbn3648Banglaes1451Spanishfr5783Frenchru4790Russiansr5385Serbianen5193Englishen6500Englishzh7770Chineseccp3059Chakmaen5269Englishja7079Japaneseeo1497 Esperantoeo1891 Esperantoth842Thaiccp5798Chakmatr297Turkishbn7159Banglasr2578Serbianes45Spanishiu1350 Inuktitutzh5517Chinesees7572Spanishru3104Russianth6427Thaitr6390Turkishen759Englishfr3756Frenchsr7613Serbianchr1721Cherokeeru7865Russianeo2192 Esperantobn4026Banglaja5626Japanesees1788Spanishes8191Spanishtr4408Turkishel5512Greekbn1570Banglasr3760Serbianel4385Greeksr2672Serbiantr5907Turkisheo5431 Esperantoar1030Arabicchr5514Cherokeetr3320Turkishru558Russianar7411Arabicth5516Thaija7828Japanesesr4926Serbianel3184Greekchr2782Cherokeeja554Japanesesr1833Serbianth4880Thaizh23Chineseeo5503 Esperantoen6092Englishru1856Russianccp4590Chakmaeo6019 Esperantoiu3324 Inuktitutel64Greeksr6663Serbianchr4195Cherokeetr4191Turkishru7341Russiansr5270Serbianru7984Russianen3843Englishes2679Spanishsr6448Serbianar6412Arabiciu6303 Inuktitutja248Japanesesr7131Serbianccp4153Chakmaes3673Spanishsr3671Serbianeo1274 Esperantochr4762Cherokeees6452Spanishtr2789Turkishth2069Thaieo5102 Esperantozh1885Chineseja5335Japaneseiu6600 Inuktitutchr7459Cherokeeeo63 Esperantoja2324Japanesetr4140Turkishru2609Russianes3535Spanishchr5870Cherokeeel6840Greekzh7320Chinesebn88Banglasr5075Serbianbn4833Banglaccp2612Chakmaeo578 Esperantoja7451Japanesear2106Arabicen2442Englishccp3335Chakmaen2598Englishja6591Japaneseth7811Thaija151Japanesezh7837Chinesear4552Arabicru1625Russianchr2954Cherokeeiu151 Inuktitutar4067Arabicen3150Englishes3011Spanishiu6733 Inuktitutru1458Russianru1605Russiansr1922Serbiansr2396Serbianen4070Englishtr6163Turkishtr8093Turkishar1162Arabices5519Spanishiu7729 Inuktitutth335Thaiccp1212Chakmabn6773Banglath6303Thaichr2604Cherokeechr5753Cherokeeru4720Russianar3630Arabicel3402Greekes4841Spanishel1208Greekccp6502Chakmazh3556Chinesezh6927Chinesetr4271Turkishzh5433Chinesechr3186Cherokeeja1468Japanesesr1147Serbianccp4208Chakmael6400Greekfr2138Frenchccp4628Chakmath6885Thairu2494Russianchr394Cherokeebn2417Banglath805Thaiccp7864Chakmaen5539Englishsr6735Serbianbn7847Banglaccp5966Chakmaru5106Russianccp3691Chakmaen5074Englishchr3489Cherokeees7987Spanishiu896 Inuktitutiu24 Inuktitutru8062Russianru1666Russianru5792Russianchr6560Cherokeechr181Cherokeetr937Turkishccp2357Chakmael3367Greekeo1882 Esperantoja1232Japanesear6795Arabicja4815Japanesees4279Spanishes4966Spanishbn5792Banglaes2367Spanishtr174Turkishes2607Spanishth234Thaiccp649Chakmatr2555Turkishth5729Thaien3111Englishru7173Russianel6230Greekar7865Arabicchr3678Cherokeeeo6433 Esperantochr3912Cherokeeen5555Englishiu149 Inuktitutiu6057 Inuktitutsr5449Serbianbn3172Banglaeo7132 Esperantoth4830Thaiel1143Greektr2796Turkishth813Thaitr5950Turkishzh696Chinesebn213Banglael6246Greeken3655Englishes7282Spanishru822Russianen2519Englishja7538Japaneseccp6496Chakmazh4326Chineseccp1672Chakmaru6099Russianel6293Greekes4392Spanishiu5868 Inuktitutes5530Spanishiu7878 Inuktitutsr3067Serbiansr6241Serbianccp3840Chakmasr988Serbiansr7301Serbianes8053Spanishsr6611Serbianccp5992Chakmazh1157Chinesezh2157Chineseth199Thaibn7075Banglasr6223Serbianel5599Greekja2098Japaneseth3194Thaith4417Thaitr3864Turkishchr6395Cherokeebn3316Banglaes7027Spanishchr5955Cherokeetr900Turkishen1494Englishfr7680Frenchfr1235Frenchth1808Thaith4266Thaichr2461Cherokeeccp7357Chakmaes7092Spanishiu1991 Inuktitutth6588Thaiel5462Greekbn4502Banglaeo168 Esperantoccp4427Chakmael1103Greekes2252Spanishchr3703Cherokeeel6754Greekja3210Japaneseiu4673 Inuktitutccp289Chakmafr844Frenchiu3627 Inuktitutzh7156Chineseel4963Greekeo7300 Esperantochr3972Cherokeear1766Arabicel3674Greektr6787Turkishfr6440Frenchtr7762Turkishzh7794Chinesechr4481Cherokeebn6518Banglabn2946Banglazh7584Chinesees5700Spanishes2064Spanishel7239Greekfr2058Frenchzh4672Chinesebn3620Banglael7005Greekeo6909 Esperantoar5875Arabictr3087Turkishtr6271Turkishfr6262Frenches1553Spanishbn3986Banglael4691Greekiu6525 Inuktitutru1801Russianchr1671Cherokeeeo1362 Esperantoar1535Arabicchr4705Cherokeechr1978Cherokeeel6801Greekru421Russianzh110Chinesezh7404Chinesebn948Banglafr2688Frenchar8098Arabicru4630Russianzh7886Chinesechr8045Cherokeeja4837Japanesesr3471Serbiansr2955Serbianja2354Japanesesr4883Serbianeo3659 Esperantoen7556Englishbn6363Banglasr6772Serbianru4503Russianes4097Spanishel2345Greekes4727Spanishen377Englishsr2031Serbianchr4823Cherokeetr3408Turkishtr4535Turkishiu2337 Inuktitutccp757Chakmazh7428Chinesear7592Arabiciu32 Inuktitutth6784Thaifr3607Frenchbn818Banglazh1879Chineseth4387Thaies1496Spanishccp8099Chakmaeo6940 Esperantosr822Serbianar525Arabictr5870Turkishiu8150 Inuktitutbn4221Banglaes2917Spanishen2441Englishchr7568Cherokeeja2603Japaneseeo2080 Esperantoth7364Thaith2944Thaitr4824Turkisheo781 Esperantoiu7659 Inuktitutru5120Russiantr3363Turkishel6939Greekfr2324Frenchbn7475Banglabn5942Banglaccp2491Chakmaiu2422 Inuktitutsr1508Serbianbn4041Banglafr1603Frenchccp5342Chakmafr6409Frenchfr5836Frenchel310Greekel5459Greekzh2363Chineseccp2011Chakmaccp5993Chakmatr2788Turkishes5718Spanishtr2125Turkishar1579Arabices7223Spanishsr5822Serbianbn4319Banglael7264Greekth7885Thaiiu1840 Inuktituten2096Englishru3045Russianeo8148 Esperantobn6021Banglaja2758Japaneseccp5632Chakmaar6709Arabicccp5129Chakmath3361Thaien3544Englisheo5788 Esperantofr5806Frenchzh6083Chineseccp251Chakmaes7236Spanishel2179Greektr1254Turkishja182Japaneseth5458Thaiiu1162 Inuktitutccp1075Chakmaccp5934Chakmaiu3901 Inuktituttr8030Turkishar4109Arabicbn5367Banglafr2654Frenchel642Greekccp7898Chakmabn1158Banglaccp1685Chakmachr762Cherokeefr3984Frenches6414Spanishbn6901Banglasr4008Serbianes3413Spanishel6679Greekzh2341Chinesear3160Arabicen880Englishtr7272Turkishccp1073Chakmael6471Greekja600Japanesechr1677Cherokeeth585Thaiiu3375 Inuktitutja2056Japanesefr839Frencheo2733 Esperantotr793Turkishchr750Cherokeeccp7017Chakmaiu4583 Inuktitutccp6686Chakmabn7455Banglazh3512Chinesear5250Arabicchr6270Cherokeeiu8083 Inuktitutbn3943Banglaja3172Japaneseen439Englishsr955Serbianen5429Englishja805Japaneseel6042Greekes7460Spanishja8050Japanesetr5Turkishbn4341Banglabn6383Banglaes7923Spanishru2071Russiansr676Serbiantr5061Turkishja6652Japaneseiu835 Inuktitutja1203Japaneseth1692Thaien7572Englishfr6464Frenchen6413Englishzh2312Chineseeo2071 Esperantoes3021Spanishes7828Spanishja5854Japanesesr399Serbianiu1467 Inuktitutfr5510Frenchiu4007 Inuktitutbn7376Banglaar3708Arabicfr8062Frenchar7941Arabicbn1171Banglachr6047Cherokeechr3142Cherokeeen5700Englishel1013Greekar6469Arabicccp5185Chakmael2893Greekes2686Spanishzh7480Chineseccp3195Chakmael6391Greekfr406Frenchsr6806Serbiansr2020Serbianen7750Englishth843Thaizh1698Chineseth533Thaies1114Spanishsr3428Serbianar1454Arabiciu7541 Inuktituteo5551 Esperantoiu1287 Inuktitutzh7605Chinesezh2406Chineseiu2382 Inuktitutbn8043Banglaar4844Arabicar7308Arabicen2646Englishsr1360Serbianeo2376 Esperantoar8128Arabicru6007Russianccp1519Chakmaar5166Arabiceo382 Esperantoiu1307 Inuktitutru2845Russianeo6793 Esperantoth3002Thaibn7287Banglael451Greeksr4587Serbianru7644Russianzh1000Chinesezh2076Chinesechr5563Cherokeetr2728Turkishru4834Russianru3159Russianiu1632 Inuktitutchr2587Cherokeeja5414Japaneseja6734Japaneseja4767Japaneseja4015Japaneseeo7245 Esperantobn779Banglaar4482Arabicja7089Japaneseel6185Greekes5849Spanishru5688Russianen4001Englishja2085Japaneseth5194Thaieo6223 Esperantoiu5378 Inuktitutsr408Serbianiu6621 Inuktitutchr1905Cherokeeth598Thaiccp7349Chakmaru1242Russianes2733Spanishes2964Spanishbn7132Banglabn7510Banglachr2414Cherokeeel1446Greekru6727Russianchr6976Cherokeesr2122Serbianfr15Frenchel1581Greekfr3007Frenchtr7886Turkishccp5578Chakmaccp5997Chakmabn4196Banglabn8134Banglaeo2853 Esperantoja2242Japanesesr5295Serbianel4110Greeksr2019Serbianbn444Banglaar6407Arabiceo5477 Esperantoeo7674 Esperantotr1296Turkishchr5788Cherokeeel372Greektr7266Turkishzh1061Chineseru2774Russianes2454Spanishar5688Arabicsr7802Serbianen7350Englishchr4242Cherokeear7787Arabicchr2282Cherokeeru5365Russianar6767Arabicel4712Greektr5607Turkisheo6372 Esperantoar3597Arabicar6238Arabicen3970Englishsr113Serbianar5429Arabicja6858Japaneseth6710Thaiar2844Arabicfr6576Frenchel469Greekiu1343 Inuktitutiu6592 Inuktitutja4627Japaneseja7457Japanesesr5674Serbianel7706Greekfr6860Frencheo4150 Esperantoar5258Arabicar5283Arabicru6874Russianja4802Japaneseel527Greekeo3175 Esperantozh7008Chinesetr7572Turkishtr5856Turkishsr7814Serbianiu6886 Inuktituten10Englishru1959Russianfr6190Frenches3125Spanishtr7613Turkishchr8038Cherokeeeo6082 Esperantoen6955Englishja6876Japanesebn2893Banglabn4775Banglafr2347Frenchja3359Japanesear7211Arabicen6368Englisheo5779 Esperantosr661Serbianja5266Japanesefr6151Frenchfr3128Frenchsr3070Serbianccp1778Chakmaiu302 Inuktitutth1646Thaibn2214Banglaeo2692 Esperantoen5003Englishja3698Japaneseth6657Thaitr840Turkishchr5208Cherokeefr5690Frenchsr5461Serbianfr4500Frenchru5411Russianes965Spanishzh1336Chineseeo443 Esperantosr6185Serbianar3733Arabiciu3074 Inuktitutccp4758Chakmachr4901Cherokeetr7553Turkishth438Thaibn5039Banglaen2684Englishbn349Banglasr3076Serbianth7000Thaiccp6653Chakmasr2232Serbianel880Greekiu4285 Inuktitutchr5347Cherokeeiu3472 Inuktitutel5358Greekeo7665 Esperantoiu1548 Inuktitutchr7978Cherokeear4704Arabicccp4403Chakmaiu2568 Inuktituttr2717Turkishfr5667Frenches7980Spanishiu3435 Inuktitutar644Arabicccp1867Chakmazh6331Chineseiu625 Inuktitutth2434Thaieo7989 Esperantotr3957Turkishiu4345 Inuktitutfr4217Frenchiu4880 Inuktitutiu2981 Inuktitutar4714Arabicccp5124Chakmatr5720Turkishen3607Englishiu3718 Inuktitutar4622Arabictr7102Turkishbn6097Banglasr1304Serbianfr2142Frenchja1996Japaneseccp1341Chakmaeo3441 Esperantochr4935Cherokeesr7887Serbianth5608Thaizh2529Chinesear2837Arabicel2140Greekccp761Chakmatr2331Turkishfr3993Frenchccp3879Chakmaccp5897Chakmaja1430Japaneseth825Thaien2548Englishru7077Russianiu8038 Inuktitutru1547Russianfr5433Frenches5708Spanishzh5736Chinesetr5639Turkishfr6049Frenchja6424Japanesetr766Turkishfr2126Frenchtr5394Turkishar4768Arabicbn1799Banglafr3972Frenchchr2770Cherokeeeo3541 Esperantoth2591Thaiccp3267Chakmaes3383Spanishtr2075Turkishccp6829Chakmaccp7844Chakmaar6008Arabictr5064Turkishfr217Frenchchr2108Cherokeetr3186Turkishtr3946Turkishzh7009Chinesefr308Frenches6873Spanishiu5516 Inuktitutja3759Japaneseja3727Japaneseiu3405 Inuktitutzh2537Chinesechr765Cherokeeeo4378 Esperantosr3061Serbianfr1559Frenchbn2626Banglaja5687Japaneseru162Russianth7987Thaien1113Englishccp6668Chakmaeo3159 Esperantoth2109Thaiiu784 Inuktitutbn4137Banglaccp8108Chakmael5114Greekeo2317 Esperantoeo2801 Esperantosr8151Serbiantr961Turkishtr6778Turkishzh4558Chinesezh6155Chineseeo6729 Esperantofr5280Frenchen5860Englishja4098Japanesetr7913Turkishbn1618Banglazh6787Chinesezh93Chineseel6683Greekchr7037Cherokeeel4778Greekeo7079 Esperantoel4596Greekbn568Banglatr2319Turkishchr5804Cherokeeiu2023 Inuktituttr2465Turkishzh709Chinesear1320Arabicfr7259Frenchth8065Thaija3104Japaneseeo7427 Esperantoes5291Spanishsr2783Serbianzh2951Chinesees6990Spanishja4631Japaneseja6801Japaneseeo381 Esperantotr4485Turkishes6984Spanishzh1002Chinesear1301Arabicchr6464Cherokeeen1811Englishru1060Russiansr5268Serbianiu6811 Inuktitutiu2296 Inuktitutsr902Serbianth2121Thaizh4708Chinesezh2682Chinesees1153Spanishtr962Turkishru5478Russiansr7168Serbiantr3567Turkishfr411Frenchsr121Serbianccp1544Chakmaes2904Spanishccp1011Chakmaen6049Englisheo7958 Esperantoeo6589 Esperantoar4288Arabicbn5542Banglaru1226Russianccp5258Chakmafr3804Frenchth4487Thaiar4733Arabicsr3845Serbianja4947Japaneseeo1124 Esperantoel4120Greekchr4283Cherokeebn5505Banglaar1008Arabicsr5222Serbiansr155Serbianar6809Arabicel7214Greekes7768Spanishen336Englishru3137Russianth7449Thaiar540Arabicar664Arabicbn2662Banglaen4424Englishru3918Russianja2212Japaneseel7809Greeken922Englisheo6687 Esperantoiu337 Inuktitutsr5851Serbianccp7137Chakmasr6317Serbiantr869Turkishru4299Russiansr3060Serbiantr1609Turkishtr5072Turkishru4708Russianiu4780 Inuktituten6775Englishsr3885Serbianar6170Arabicel2808Greeken4086Englisheo7087 Esperantoccp3448Chakmael2943Greekel6902Greekes4492Spanishsr3210Serbianar6419Arabicru3696Russianzh1950Chineseccp5834Chakmaja2265Japaneseja8142Japaneseeo5634 Esperantoes7385Spanishtr3437Turkishfr5098Frenchja6025Japaneseen4738Englishen4318Englishchr3490Cherokeesr3684Serbianfr4559Frenchtr7923Turkishbn3402Banglatr924Turkishru5436Russianchr4435Cherokeeru596Russianiu7901 Inuktitutiu1679 Inuktitutel4406Greekfr2968Frenchiu7524 Inuktitutel7308Greekchr4836Cherokeeiu7402 Inuktitutccp2377Chakmath2183Thaisr3848Serbianeo4683 Esperantoja3762Japaneseru2155Russiansr4224Serbianar7816Arabicchr5795Cherokeeja1477Japaneseth3873Thaizh2488Chineseccp5335Chakmaiu5851 Inuktitutru3342Russianes2808Spanishja6223Japanesebn1091Banglaeo4509 Esperantoja7603Japanesetr2545Turkishen2130Englishru4487Russianen5611Englishel1509Greektr6592Turkishccp5830Chakmaeo1994 Esperantoth1494Thaifr4149Frenchen125Englisheo1260 Esperantosr3702Serbiantr3765Turkishes5223Spanishfr7236Frenchccp5718Chakmath2749Thaitr819Turkisheo7037 Esperantoen350Englishbn3216Banglaes1174Spanishar2465Arabicsr92Serbianth4654Thaiiu249 Inuktitutru661Russianen8163Englishel6323Greekes556Spanishtr5933Turkishar3803Arabicja2542Japanesees1154Spanishar6354Arabicfr6383Frenchja5774Japanesebn1773Banglaes634Spanisheo4375 Esperantosr96Serbiantr103Turkisheo1545 Esperantoeo1620 Esperantozh4081Chineseel3332Greekth6851Thaies7297Spanishen1071Englishth5409Thaisr2057Serbianel965Greekbn471Banglabn3524Banglaiu1593 Inuktitutja3507Japaneseru1575Russianzh6906Chinesear237Arabiciu592 Inuktitutes2400Spanishja2176Japaneseel3858Greekeo4429 Esperantobn1767Banglachr7747Cherokeebn422Banglaccp4265Chakmaeo172 Esperantoes4072Spanishel3595Greekel7404Greekth164Thaibn427Banglaen2503Englishbn1132Banglaar6329Arabictr6735Turkishtr6957Turkishen6944Englishchr336Cherokeeen4244Englishiu5553 Inuktitutsr7114Serbianar811Arabiciu1157 Inuktitutja7635Japanesetr1732Turkishchr2024Cherokeebn6618Banglazh5966Chineseja7827Japanesezh6472Chineseru3542Russianfr1534Frenchfr446Frencheo4049 Esperantoar5156Arabicccp4892Chakmaes769Spanishel1848Greekiu905 Inuktitutzh8083Chineseel5269Greekar2390Arabicsr6909Serbianja7Japanesear5606Arabictr4956Turkishchr1758Cherokeees2838Spanishth956Thaiar6537Arabicth1843Thaisr4104Serbianbn1648Banglasr3855Serbianccp1009Chakmatr5436Turkishchr3431Cherokeebn7418Banglaes7810Spanishiu3384 Inuktitutiu6075 Inuktitutru1881Russianru3539Russianeo5733 Esperantoth6837Thaichr2584Cherokeechr1864Cherokeeen126Englishes2461Spanishja7789Japaneseth877Thaiccp6538Chakmatr6607Turkishar4806Arabicccp3494Chakmaes5947Spanishes4924Spanishzh3873Chineseja1029Japaneseeo4638 Esperantotr5534Turkishfr5551Frenchru1443Russianchr4314Cherokeeja2771Japanesechr472Cherokeesr5238Serbianel7830Greekzh6072Chinesesr7687Serbianccp3806Chakmasr5747Serbianccp5315Chakmasr735Serbianfr6935Frenchsr5520Serbianzh1295Chinesefr2118Frenchfr6098Frenchja3976Japanesees3468Spanishja8104Japanesetr2891Turkishzh496Chineseccp1534Chakmaja2795Japaneseja5680Japaneseccp5012Chakmasr4028Serbianeo3615 Esperantoes1867Spanishru1553Russianru1417Russianfr7279Frenchtr2111Turkishbn4907Banglasr5514Serbianja6113Japaneseen6220Englishsr2741Serbianar7522Arabicsr2606Serbiansr3189Serbianru7083Russianja5942Japaneseen2097Englisheo6 Esperantochr8171Cherokeeiu2842 Inuktitutel5451Greekbn579Banglaeo5593 Esperantoen5950Englishth6980Thaitr6183Turkishtr1135Turkishccp4284Chakmaja4894Japanesear468Arabictr8163Turkishbn261Banglaar7655Arabicsr666Serbianel4017Greekth4022Thaija1484Japanesefr1147Frenchfr4571Frencheo4754 Esperantoar4119Arabicja4514Japanesechr386Cherokeeel3296Greekja6535Japanesees2516Spanishbn4464Banglachr6385Cherokeeccp7055Chakmaru2055Russianfr4345Frenchfr6687Frenchtr3329Turkishfr3459Frenchchr6512Cherokeeth5989Thaith4679Thaifr2683Frenchiu8133 Inuktitutel1441Greeken5314Englishccp597Chakmaiu4179 Inuktitutsr5274Serbianth6582Thaith7020Thaiel7599Greekzh6285Chinesefr7808Frenchen3078Englishja3365Japaneseru3957Russianiu884 Inuktitutar5077Arabiczh3727Chinesear1870Arabictr4455Turkishzh1223Chineseccp6918Chakmath3473Thaieo5534 Esperantoiu6959 Inuktitutchr2777Cherokeeth735Thaitr4497Turkishar1348Arabiceo3647 Esperantochr5611Cherokeeeo3138 Esperantoen5335Englishja2378Japaneseel5237Greekeo8185 Esperantoccp6559Chakmaen6876Englishen5736Englishtr7973Turkishchr5150Cherokeees7874Spanishel7930Greekfr5277Frenchth6890Thaiiu779 Inuktitutel4182Greekth737Thaizh7632Chinesear1688Arabictr1759Turkishbn7799Banglasr7739Serbianth4545Thaies5182Spanishccp6696Chakmaja242Japanesear4784Arabicsr6685Serbianar6866Arabiciu5948 Inuktitutfr3071Frenchfr7473Frenchchr3458Cherokeeth73Thaiiu3858 Inuktitutth2639Thaiiu448 Inuktitutzh6553Chineseeo2319 Esperantoel6721Greeken254Englishbn4791Banglafr6096Frenches1079Spanishiu271 Inuktitutiu872 Inuktitutel4151Greekiu3073 Inuktitutsr1941Serbiansr6123Serbianzh290Chinesesr2037Serbianes5534Spanishth8030Thaibn344Banglath4369Thaiar5288Arabicchr7760Cherokeees2275Spanishen4996Englishru2864Russianar5919Arabicfr3221Frenchbn1466Banglaeo268 Esperantoen7762Englishbn2163Banglaccp725Chakmaes2205Spanishel6527Greekfr7162Frenchzh6733Chineseja5010Japaneseccp2159Chakmaar2915Arabicchr7820Cherokeeccp7506Chakmael5975Greekeo7092 Esperantotr1258Turkishccp5254Chakmaen5914Englishel7950Greeksr1752Serbiantr4096Turkisheo5838 Esperantosr3285Serbianth5402Thaies3236Spanishth5413Thaith3818Thaiccp140Chakmachr5570Cherokeees2136Spanishfr3490Frenchbn3Banglachr6598Cherokeefr5443Frenchfr5600Frenchccp4985Chakmafr5777Frenchru4359Russianccp4842Chakmasr3489Serbianccp839Chakmaen3507Englishja7516Japanesetr1679Turkishru6008Russianen1010Englishfr1982Frenchchr2117Cherokeetr4064Turkishtr4319Turkishsr2200Serbianeo3555 Esperantoel939Greeken8191Englishfr7999Frenchar2980Arabicar1304Arabiciu2957 Inuktitutel6026Greekel6686Greeken6671Englishiu6605 Inuktitutru4538Russianen1929Englishtr5918Turkishth6500Thaizh1329Chineseeo4868 Esperantobn7030Banglaru7849Russianfr254Frenchchr5744Cherokeees441Spanishsr8093Serbiansr3400Serbianbn2959Banglaru5945Russianja3620Japaneseiu3957 Inuktitutru4581Russianth3201Thaitr3514Turkishchr1085Cherokeebn762Banglazh2215Chinesebn5708Banglaccp5605Chakmafr3483Frenchth505Thaiiu2335 Inuktitutbn2191Banglaiu7664 Inuktituttr2519Turkishbn3733Banglaiu3702 Inuktitutzh1125Chinesezh3050Chinesebn7640Banglaes3029Spanishru2709Russianar6635Arabicen2904Englishchr2620Cherokeeeo562 Esperantofr2445Frenchth3532Thaifr8171Frenchth4176Thaiccp5018Chakmafr952Frenchfr5297Frenchsr379Serbianen2092Englishes5284Spanisheo6970 Esperantobn717Banglaen546Englishiu2301 Inuktitutzh3379Chineseja5460Japanesesr4841Serbianbn6424Banglachr5965Cherokeeiu3890 Inuktitutfr6010Frenchru2906Russianiu3 Inuktitutbn1698Banglaja2361Japanesear1316Arabicth6573Thaichr5678Cherokeeeo1592 Esperantochr1280Cherokeeiu1784 Inuktitutru2486Russianar7507Arabicfr337Frenchja1876Japanesefr4655Frenchzh6486Chinesefr3115Frenchiu2234 Inuktitutfr1857Frenchja2801Japaneseccp6573Chakmasr2398Serbiansr517Serbianbn5715Banglazh2339Chinesechr3893Cherokeechr6170Cherokeeeo4365 Esperantobn7753Banglachr2032Cherokeeth1073Thaien3628Englisheo1028 Esperantozh4909Chineseccp2805Chakmaen7901Englishja5202Japaneseru4842Russianth2664Thaiel8054Greeken767Englishth690Thaibn6523Banglath500Thairu3709Russianbn1244Banglafr3649Frenchsr4338Serbiantr3782Turkishar3847Arabices5695Spanishccp7861Chakmaeo497 Esperantoes1476Spanishfr2513Frenchtr1132Turkishccp3328Chakmaes4403Spanishen4028Englishfr7891Frenchth1223Thaien5695Englishzh3123Chinesesr7854Serbianccp7140Chakmael4449Greekes2915Spanishchr4140Cherokeeel4559Greekru7370Russiansr678Serbianth6252Thaija5213Japaneseen6763Englishru3162Russianzh6316Chinesebn1048Banglabn2427Banglaes7357Spanishen5704Englishsr3193Serbiansr2436Serbianzh3237Chinesesr7729Serbiantr1256Turkishel2070Greekiu2375 Inuktitutbn2271Banglachr4187Cherokeees1387Spanishes3052Spanishes3618Spanisheo26 Esperantoccp1880Chakmaar2798Arabices6370Spanishth1202Thaichr5713Cherokeees2333Spanishfr1088Frenchth6720Thaizh7087Chineseru5623Russianbn2391Banglasr8164Serbiantr7525Turkishja765Japanesear1103Arabicar326Arabicfr7453Frenchja6717Japaneseel216Greekth4768Thaies916Spanishja1428Japaneseen1894Englishja2525Japaneseen7461Englishzh1332Chineseiu2866 Inuktitutsr7130Serbianccp7765Chakmaeo6634 Esperantoar5966Arabicbn5907Banglatr8133Turkishccp6104Chakmaes6141Spanishbn2359Banglaccp5123Chakmachr6555Cherokeeel4330Greekccp7538Chakmaccp1808Chakmafr1107Frenchchr1153Cherokeeru329Russiantr7118Turkishzh1135Chinesezh7060Chineseccp2715Chakmaes6080Spanishth5591Thaiccp101Chakmazh1257Chineseru311Russianeo6017 Esperantoel225Greekru980Russianar7097Arabicfr4517Frenchiu3525 Inuktitutbn3423Banglabn6874Banglael5282Greekes5969Spanisheo1076 Esperantofr1026Frenchbn516Banglaccp3875Chakmachr5847Cherokeechr6710Cherokeeth1686Thaiiu2790 Inuktitutth6748Thaibn5054Banglaccp4724Chakmafr2050Frenches1466Spanishen2155Englishiu2782 Inuktitutar5016Arabices3943Spanishen4719Englishen4211Englishzh7547Chinesees3320Spanishsr6858Serbianen2540Englishar5255Arabicel4042Greekfr1163Frenchfr2101Frenchja1157Japaneseru3724Russiantr6466Turkishes2270Spanishzh1021Chineseen4431Englishccp7474Chakmafr878Frenchchr6130Cherokeefr5050Frenchfr5892Frenchzh2705Chinesefr63Frenchru1292Russianzh8018Chinesear2781Arabicen2779Englishfr7833Frenchiu6004 Inuktitutccp2841Chakmaccp3767Chakmachr3784Cherokeeeo1653 Esperantobn6133Banglaeo4792 Esperantoes6866Spanishes72Spanishiu4645 Inuktitutar1196Arabicth6298Thaith54Thaizh1590Chinesetr746Turkishzh7196Chineseja5211Japaneseen4980Englishth8175Thaith2347Thairu4325Russiantr280Turkishbn7917Banglabn7727Banglabn1215Banglaes1883Spanishfr951Frenchsr6254Serbianzh3383Chinesesr7830Serbiantr7784Turkishiu5782 Inuktitutzh1610Chineseth299Thaija7929Japaneseth4965Thairu507Russianchr4324Cherokeeen4364Englishbn2400Banglaar5298Arabictr907Turkisheo2699 Esperantoru1510Russianar5723Arabiciu3301 Inuktitutru121Russiantr500Turkishbn7620Banglachr1326Cherokeeel277Greekeo2090 Esperantoiu4925 Inuktituteo8025 Esperantoja3384Japaneseja2453Japanesebn1175Banglaru6271Russianeo5250 Esperantoru2572Russianbn576Banglafr6766Frenchsr6246Serbianel2158Greekchr3099Cherokeear4151Arabictr3317Turkishja345Japanesechr8135Cherokeefr2266Frenches7312Spanishiu2014 Inuktitutsr4836Serbianchr7419Cherokeechr3193Cherokeeen891Englishccp248Chakmafr5178Frenchru3014Russiansr4754Serbiansr6162Serbianja2559Japanesear2212Arabicbn1879Banglafr364Frenchru6873Russianfr6188Frenchzh245Chinesebn3726Banglachr7346Cherokeeru1026Russianth374Thaien5212Englishtr1849Turkishja3442Japanesesr1528Serbianbn5158Banglath6894Thaies5314Spanishchr1732Cherokeebn4327Banglaja598Japaneseccp3955Chakmatr1305Turkishchr562Cherokeefr179Frenchar3381Arabicen12Englishen2663Englishar3215Arabicar6377Arabicbn7071Banglabn3479Banglaccp6837Chakmaeo1112 Esperantofr913Frenchiu509 Inuktitutja1231Japanesechr2773Cherokeetr4094Turkishchr2301Cherokeees5343Spanishru1529Russiantr4734Turkishccp3017Chakmael599Greekccp2194Chakmael1154Greekchr6415Cherokeeja7631Japanesechr6577Cherokeeeo3916 Esperantosr3956Serbianiu7554 Inuktitutth16Thaija2767Japaneseth680Thaien5686Englishiu3689 Inuktitutbn615Banglaccp4451Chakmaar6498Arabicfr7368Frenchchr515Cherokeefr540Frenchccp6586Chakmath4660Thaizh6849Chineseen631Englishccp1524Chakmasr1766Serbianccp6425Chakmaccp7641Chakmaccp2785Chakmaiu7781 Inuktitutja5738Japanesesr1172Serbianar3104Arabicja4060Japaneseru918Russianel4072Greekeo3521 Esperantoeo4833 Esperantoccp197Chakmaen7679Englisheo506 Esperantoja1983Japanesesr5207Serbiantr356Turkishbn2004Banglaes2418Spanishsr4625Serbianfr6222Frenchth1588Thaitr6966Turkishru164Russianchr2828Cherokeefr6835Frenchja5245Japaneseru3571Russianchr2215Cherokeezh2465Chinesebn5934Banglaes1770Spanishzh8113Chineseth7563Thaichr6067Cherokeesr6220Serbianth6866Thaiar4631Arabicen8019Englishccp4279Chakmaar3389Arabicfr1061Frenchja3796Japaneseru5636Russiansr2620Serbianzh7902Chinesefr4289Frenchzh1682Chinesebn1688Banglaru2179Russianar4093Arabicel4955Greekel4294Greekes6420Spanishru3226Russianja3056Japaneseja3569Japaneseja4654Japanesear3930Arabices6830Spanishru7864Russianar6317Arabiciu2625 Inuktituteo7462 Esperantoar2337Arabiczh3645Chinesebn5Banglaccp5467Chakmafr2576Frenchel3481Greekeo1404 Esperantozh3168Chinesesr2736Serbiansr4929Serbianel2543Greekfr7854Frenchru7386Russianzh2283Chinesechr6917Cherokeeiu4303 Inuktitutth1498Thaieo2589 Esperantoen5947Englisheo7122 Esperantoes5993Spanishsr3823Serbianes7166Spanishja373Japaneseeo3389 Esperantoes4557Spanishchr5840Cherokeees6641Spanishfr4321Frenches4450Spanisheo7642 Esperantotr4277Turkishru3651Russianel7387Greekja1823Japaneseeo951 Esperantoar1841Arabictr6165Turkisheo7998 Esperantoja2661Japanesear6000Arabictr6800Turkishccp3434Chakmaja3693Japanesear7170Arabicru6833Russiantr7045Turkishja6493Japanesebn3670Banglaiu6967 Inuktitutja2306Japaneseth882Thaifr4247Frenchja3281Japaneseiu6936 Inuktitutfr2812Frenches6538Spanishiu1827 Inuktitutja1049Japaneseru8171Russianen3022Englishiu4064 Inuktitutbn5955Banglasr5394Serbianar183Arabicel6628Greekel1704Greekfr153Frenchar2615Arabiciu4139 Inuktitutja4813Japaneseru7516Russiansr7012Serbianccp4156Chakmael453Greekja7088Japanesefr263Frenchar7307Arabicja8183Japaneseja6088Japanesebn5634Banglaar580Arabicar3475Arabicen7367Englishtr1214Turkishja2591Japanesees8132Spanishiu1278 Inuktitutja7121Japanesezh5025Chineseel4043Greekchr7897Cherokeebn6597Banglafr3113Frenchsr4577Serbianchr7200Cherokeeja3997Japaneseeo258 Esperantoja4770Japanesesr6616Serbiantr4353Turkishru3465Russianel4739Greekfr398Frenchchr3934Cherokeeeo2729 Esperantoru3392Russianiu7030 Inuktitutzh2955Chineseen1484Englishar2806Arabices3214Spanishel4834Greekel7355Greektr2156Turkishen3451Englishbn5034Banglaiu3201 Inuktitutbn7810Banglazh1401Chinesear6151Arabicccp7358Chakmael849Greekeo7374 Esperantoes3512Spanishru2339Russiantr1218Turkishru4942Russianchr4928Cherokeetr4095Turkishsr3632Serbianiu1955 Inuktituten4951Englishen4200Englishel1942Greekes2087Spanishen8187Englishfr5089Frenchzh4314Chinesezh2881Chinesear5413Arabicen5903Englishfr4637Frenchiu2387 Inuktitutchr6841Cherokeeel3201Greekccp5326Chakmasr729Serbianchr4100Cherokeeccp878Chakmaar3394Arabicsr1599Serbianbn1101Banglabn1130Banglaru4911Russianth4238Thaies3133Spanisheo4207 Esperantozh1305Chinesetr545Turkishzh8097Chinesebn38Banglazh2815Chineseel7778Greekfr2264Frenchsr5885Serbianbn5494Banglaiu8126 Inuktitutzh7983Chineseja2997Japaneseccp6195Chakmasr41Serbiansr4032Serbianbn4338Banglaru150Russianfr409Frenchsr2470Serbianbn4286Banglaeo1916 Esperantoar459Arabices7686Spanishtr2144Turkishzh2884Chineseja4775Japaneseiu3019 Inuktitutzh1023Chineseja7199Japaneseccp6224Chakmafr7450Frenchiu4956 Inuktitutbn7719Banglaiu7370 Inuktitutes2634Spanisheo3332 Esperantoen3279Englishfr3809Frenchiu7620 Inuktituteo3329 Esperantoja8057Japaneseth5731Thaien6071Englishru5840Russianiu1072 Inuktitutfr4935Frenchja6620Japaneseth338Thaiar791Arabicchr1967Cherokeetr6734Turkishccp5202Chakmaes384Spanishes7951Spanishccp176Chakmasr7339Serbianes1981Spanishja5509Japanesear88Arabicen4842Englishja5601Japanesebn7337Banglatr7969Turkishfr5287Frenchccp2025Chakmazh971Chineseel2485Greekzh2000Chineseja7786Japanesechr2850Cherokeeja1050Japanesesr5741Serbianchr5742Cherokeees6556Spanishiu5913 Inuktitutccp3264Chakmaccp6611Chakmaes126Spanishsr4673Serbianzh1134Chineseiu7953 Inuktitutzh6339Chineseja2509Japaneseru2828Russianel1550Greekar2763Arabicja5711Japaneseccp5233Chakmaen734Englishar8113Arabicchr4543Cherokeeja7241Japanesezh2253Chinesees8086Spanishtr6516Turkishth5157Thaichr960Cherokeeeo3561 Esperantoes6315Spanishsr633Serbianccp3332Chakmaru4534Russianth5414Thaiel3401Greekel7327Greekeo6529 Esperantoccp4870Chakmath1305Thaiar6570Arabicja2565Japanesebn5896Banglath6564Thaifr2871Frenchchr1645Cherokeechr2935Cherokeeiu4434 Inuktitutzh1003Chineseel31Greekth375Thaith4281Thairu6425Russianfr6265Frenchar249Arabictr2960Turkishar2352Arabicbn5184Banglael7611Greekel8024Greekes3751Spanishja7965Japanesezh5197Chineseja3951Japanesesr2647Serbianeo6913 Esperantoel7504Greekes7868Spanishbn3836Banglazh3865Chineseeo1190 Esperantoth2757Thaibn6461Banglaen7840Englisheo6685 Esperantoth3547Thaiar2070Arabiciu6059 Inuktitutel4943Greekja4187Japaneseth6656Thaiccp7925Chakmafr6639Frenchchr174Cherokeeth6802Thaien8027Englisheo4152 Esperantoccp4235Chakmaes2938Spanishzh4680Chineseru1438Russianchr5657Cherokeesr6355Serbianes2853Spanishth613Thaitr35Turkishes7113Spanishbn7916Banglath1362Thaitr335Turkishes6671Spanisheo244 Esperantobn5306Banglaar3042Arabicfr7590Frenchru4693Russianel946Greekccp8188Chakmazh4287Chinesechr7567Cherokeeccp680Chakmaes4867Spanishes6828Spanishiu6190 Inuktitutbn7457Banglaiu4866 Inuktitutru4696Russiansr3378Serbianfr5979Frenchbn2771Banglabn861Banglazh862Chineseiu7603 Inuktituttr7211Turkisheo2732 Esperantochr6369Cherokeees3270Spanishchr4056Cherokeeen4079Englishel1442Greekbn5143Banglath3142Thaitr4326Turkishchr7848Cherokeezh2288Chineseeo958 Esperantozh5102Chinesebn5312Banglachr3674Cherokeechr7288Cherokeefr7128Frencheo196 Esperantochr4277Cherokeefr4919Frenchja2848Japanesechr4407Cherokeees2416Spanishccp3968Chakmaar7457Arabicru3580Russianen2380Englisheo5763 Esperantoru5926Russianiu4878 Inuktitutsr3943Serbianiu5606 Inuktitutru5824Russianen5797Englishel7311Greekzh2799Chineseth7155Thaith7823Thaija7422Japanesezh5956Chineseja5361Japanesefr2210Frenchel7577Greekru3314Russianeo5654 Esperantofr1670Frenchja2400Japanesezh4136Chinesefr2521Frenchbn2536Banglaes7458Spanishzh2468Chinesechr36Cherokeeru3640Russianzh5074Chinesetr770Turkishccp1125Chakmafr7047Frenchtr7550Turkisheo4201 Esperantoth7126Thaizh4166Chinesetr4884Turkishzh3614Chinesebn939Banglabn2564Banglael4627Greeken3681Englishen6666Englishen3349Englishth816Thaibn5582Banglasr309Serbianbn4678Banglachr3062Cherokeeru5439Russianar3235Arabices266Spanishen226Englishchr1301Cherokeechr3646Cherokeeel893Greekru6881Russianbn3317Banglael3351Greekccp6251Chakmachr502Cherokeeel7212Greekeo6986 Esperantoiu2998 Inuktitutbn7808Banglaru3001Russiansr7192Serbianth4845Thaibn5966Banglabn2060Banglabn4009Banglabn5408Banglachr3743Cherokeeel2909Greekfr4631Frenchiu6618 Inuktitutel1215Greekfr5770Frenchsr4676Serbianen6122Englishfr5790Frenchtr447Turkishel3287Greekru7561Russianzh1041Chinesebn8127Banglaru5574Russianzh4626Chineseccp3984Chakmael921Greekchr6382Cherokeeen5822Englishtr7086Turkishen192Englishiu6574 Inuktitutsr6933Serbiantr5445Turkishth225Thaibn2594Banglaen6692Englishth4897Thaiel2133Greeken7697Englishccp6433Chakmaar1441Arabices2436Spanishsr5062Serbianel4416Greeken2158Englishth7069Thaija313Japanesees522Spanishen7615Englishiu7886 Inuktitutth5750Thaichr4076Cherokeeru2526Russianth3630Thaisr1300Serbianbn1631Banglaeo7934 Esperantotr7579Turkishfr4436Frenchar6057Arabicsr592Serbianen4010Englishfr7572Frenchja4089Japanesees1139Spanishru3586Russiantr4423Turkishar2732Arabicsr3327Serbianar6096Arabicbn5127Banglabn5618Banglaccp4692Chakmachr939Cherokeeccp6203Chakmatr7520Turkishfr3292Frenchja3842Japanesebn2066Banglasr3688Serbianchr1389Cherokeeth4601Thaitr5453Turkishes7135Spanishen8153Englishchr571Cherokeechr8161Cherokeeeo3351 Esperantoes3969Spanishzh7657Chinesefr361Frencheo7208 Esperantotr7530Turkishen6310Englishth5644Thaith1979Thaitr1178Turkishar1289Arabicel253Greekccp2795Chakmaru264Russianen2601Englishchr3175Cherokeechr6767Cherokeefr4512Frenchel5683Greekja2730Japaneseel3767Greekccp4999Chakmazh3866Chineseccp5913Chakmath5961Thaiccp2830Chakmaar7433Arabicchr7339Cherokeees1094Spanisheo8064 Esperantoccp3615Chakmaccp7709Chakmaar6161Arabices8117Spanishsr1363Serbianja4406Japanesees6674Spanishes3368Spanishfr3985Frenchel6589Greekru4742Russianth8137Thaitr5714Turkishth730Thaiiu6610 Inuktitutfr4062Frenchzh4358Chineseccp2328Chakmaes8006Spanishiu8095 Inuktitutel5012Greekar4947Arabicru1065Russianfr4845Frenchzh3300Chineseel2699Greekccp12Chakmael3366Greeken4374Englishfr1852Frenchar3423Arabicsr7035Serbiantr1015Turkisheo1931 Esperantoes659Spanishth4261Thaibn5175Banglaes5161Spanishsr1343Serbianzh5693Chinesefr8080Frenchiu717 Inuktituten7164Englisheo1650 Esperantoccp5285Chakmasr2090Serbiantr5369Turkishchr5235Cherokeeel5196Greeksr5633Serbianiu6538 Inuktitutes3911Spanishen2095Englishth7473Thaizh1995Chinesebn7468Banglaru1021Russianja5496Japanesechr4809Cherokeeccp7077Chakmaccp4315Chakmaccp7075Chakmachr7173Cherokeear5730Arabicen2018Englishsr355Serbiansr3207Serbianth2265Thaien3357Englisheo1740 Esperantoel5183Greekchr7681Cherokeeel1928Greekfr2107Frenchtr5411Turkishzh8104Chinesear226Arabicar4646Arabicel8161Greeken7669Englishes2720Spanisheo7304 Esperantoiu7282 Inuktitutel3504Greeksr5866Serbiansr6695Serbianes619Spanishtr3067Turkishar1041Arabicfr4279Frenchar4575Arabicja2046Japaneseccp3498Chakmaen5515Englisheo3126 Esperantofr4943Frenchccp7653Chakmaar2988Arabictr6950Turkishel2647Greekzh2599Chineseeo4603 Esperantoja6074Japanesebn494Banglachr7638Cherokeeccp7939Chakmazh3140Chineseen5181Englishfr1833Frencheo2789 Esperantoiu6012 Inuktitutth6366Thaien775Englishccp5415Chakmaar7367Arabicchr3194Cherokeeja1617Japaneseru4999Russianiu2856 Inuktitutru630Russianar7427Arabicel5084Greekzh5906Chinesezh7372Chinesesr2352Serbianen2187Englishth5964Thaija6Japanesear510Arabicccp315Chakmaiu7105 Inuktituten5096Englishiu6999 Inuktituttr5248Turkishel3331Greekru5359Russianar7313Arabiceo1525 Esperantoes6533Spanishzh213Chineseccp7183Chakmaeo7667 Esperantoen266Englisheo3832 Esperantoiu1472 Inuktitutccp3439Chakmaen3720Englishfr7862Frenchchr2658Cherokeeen6454Englishiu140 Inuktitutja7488Japanesesr5973Serbianth3412Thaija4137Japaneseja3875Japaneseru3608Russianru6257Russianth5943Thaizh4972Chineseeo3973 Esperantozh7378Chinesear7379Arabicja5952Japanesesr187Serbianar1390Arabiczh5440Chineseiu5718 Inuktitutbn1511Banglaru3790Russianen420Englisheo6898 Esperantoar4010Arabicbn3971Banglabn97Banglabn5962Banglachr1857Cherokeeel4289Greekes4412Spanishja1250Japanesefr3152Frenchru4397Russianes5769Spanishsr2371Serbianel160Greekeo7015 Esperantozh6617Chinesesr5612Serbianru6840Russianzh2150Chinesechr2083Cherokeeiu6976 Inuktitutbn7990Banglaen2750Englishja6502Japaneseiu207 Inuktitutzh7122Chineseth6806Thaiel6267Greekchr3937Cherokeeeo4542 Esperantoar1889Arabicar2012Arabicbn2073Banglaiu4965 Inuktituttr3552Turkishja5507Japaneseccp4291Chakmazh2219Chinesetr7827Turkishes7026Spanishzh5529Chinesebn6988Banglaar4515Arabicen7822Englishth4650Thaibn6074Banglath7103Thaiel8137Greekel2969Greekja624Japanesezh2377Chinesebn7094Banglael424Greekzh6022Chineseccp5030Chakmaja4391Japanesebn5247Banglabn6990Banglaes1610Spanishja4316Japaneseth553Thaiccp584Chakmachr4965Cherokeeeo7398 Esperantoar3657Arabicchr7732Cherokeefr7474Frenchar1263Arabicen1906Englishtr5582Turkishsr3501Serbiantr6286Turkishtr1089Turkishzh4162Chinesetr1450Turkisheo842 Esperantoru7505Russianccp4891Chakmaiu655 Inuktitutiu2572 Inuktitutsr2072Serbianiu369 Inuktitutbn6328Banglaar7630Arabicja2392Japanesefr5566Frenchiu2687 Inuktitutes6249Spanishen2624Englishfr5198Frenchja2099Japanesesr4494Serbianccp7450Chakmaes76Spanishtr1369Turkishiu2201 Inuktitutsr7244Serbianccp7938Chakmafr2843Frenchbn5469Banglaes1847Spanishiu2627 Inuktitutth7269Thaija3679Japaneseeo360 Esperantoru4040Russianru6418Russianes4037Spanishiu6362 Inuktitutel937Greekccp5449Chakmatr5175Turkishfr2708Frenchchr2503Cherokeeru497Russianccp7836Chakmatr5041Turkishiu4746 Inuktitutccp270Chakmaes2464Spanishsr3585Serbianar6893Arabictr6472Turkishchr6613Cherokeeel4622Greekiu4813 Inuktitutja6649Japaneseja7958Japanesetr5762Turkisheo7381 Esperantoiu4573 Inuktituttr7011Turkishes2593Spanishja7158Japanesebn6648Banglaiu6452 Inuktitutth3723Thaichr7728Cherokeeiu4769 Inuktitutsr685Serbianzh474Chineseru1362Russianth5715Thaichr1042Cherokeesr4163Serbianbn4215Banglachr5291Cherokeesr7998Serbianar7328Arabicel3548Greekth2724Thaifr1839Frenchfr5061Frenchiu7593 Inuktituten6771Englishes2962Spanishfr6170Frenchth686Thaiiu5750 Inuktitutbn5723Banglafr5881Frenchfr2222Frenchar7460Arabicel4058Greekccp4393Chakmasr6286Serbianel624Greekccp3850Chakmael6588Greekfr221Frenchar472Arabiczh1504Chineseen3306Englishen5143Englishes3198Spanishes4576Spanishfr3648Frenchfr3876Frenches1119Spanishth4290Thaifr7685Frenchar2121Arabiczh3424Chineseth2821Thaiccp5072Chakmael2789Greektr6248Turkishen6645Englishzh2334Chineseel4106Greekchr6890Cherokeeru1219Russianth6282Thaichr6914Cherokeezh2693Chineseth3549Thaiiu2751 Inuktitutru5454Russianccp5008Chakmaccp5926Chakmaar4756Arabicen4141Englishzh7782Chineseiu6107 Inuktituteo2939 Esperantofr2176Frenchiu5756 Inuktitutar4565Arabicccp1127Chakmabn5270Banglaiu1454 Inuktitutja1813Japaneseru85Russianru1783Russianchr2355Cherokeeen906Englisheo3706 Esperantoth4482Thaieo7606 Esperantoes2431Spanishbn1268Banglaes7709Spanishel7335Greekes2613Spanishar617Arabicsr6348Serbiantr1607Turkishbn7976Banglath2282Thaisr2215Serbianru188Russianel7777Greekccp7321Chakmaeo4924 Esperantobn6531Banglael6296Greekes3024Spanishja5777Japanesefr5964Frenchtr4010Turkishfr3153Frenchiu126 Inuktitutsr6697Serbianiu5119 Inuktitutchr1138Cherokeeen8117Englishel662Greekel3919Greeken1053Englishja7783Japanesezh2242Chineseth1248Thaien7617Englishes7306Spanishccp1953Chakmasr6406Serbianzh2446Chineseru7563Russianes1457Spanishbn5167Banglaiu1243 Inuktitutar6492Arabices5514Spanishfr1936Frenchar3902Arabicbn7196Banglachr5260Cherokeear7620Arabiciu576 Inuktitutsr7933Serbianel3897Greekes1934Spanishsr8076Serbianru6913Russianar8066Arabicja3471Japaneseccp7023Chakmaeo3941 Esperantoiu1868 Inuktitutru5221Russianeo46 Esperantoeo3544 Esperantotr567Turkishchr5885Cherokeeru740Russianel1920Greekeo7981 Esperantoth3883Thaien8028Englishth6463Thaija7441Japanesees1815Spanishccp8020Chakmaja3776Japaneseiu7342 Inuktitutth2526Thaith7763Thaiccp7921Chakmatr4402Turkishsr5273Serbianth7030Thaifr1643Frencheo8020 Esperantoel5264Greekru5998Russianth7328Thaieo5919 Esperantoth7974Thaija3101Japanesear5014Arabicbn1145Banglatr7010Turkishes5163Spanisheo5606 Esperantoth358Thaiccp7553Chakmaes3058Spanishar7516Arabicchr6810Cherokeefr2544Frenchchr3665Cherokeebn2805Banglaeo4518 Esperantoar6725Arabiceo3724 Esperantoiu4737 Inuktitutbn140Banglabn6670Banglath4529Thaiccp2394Chakmabn5840Banglaja3930Japanesebn4033Banglasr3034Serbiantr4595Turkishen927Englishel301Greeken1957Englishen2593Englishchr3565Cherokeeeo6084 Esperantoth4473Thaitr1438Turkishccp30Chakmachr5190Cherokeeeo7599 Esperantobn5834Banglachr3464Cherokeezh2601Chinesezh5524Chineseja2172Japanesezh549Chineseen7998Englishsr3969Serbianth888Thaith2307Thaith7889Thaisr4007Serbiansr1988Serbianeo3833 Esperantochr7796Cherokeeru6658Russianccp2476Chakmazh6999Chineseiu4574 Inuktitutbn1772Banglazh8180Chineseel5273Greekes4448Spanishsr6154Serbianar1233Arabiciu4591 Inuktitutes93Spanishru1672Russianru6060Russianzh7144Chinesefr2063Frenchen6037Englishzh3536Chinesetr3429Turkishzh3717Chinesees6342Spanishes7605Spanishtr2454Turkishfr776Frenchiu6872 Inuktitutel5480Greekeo8045 Esperantochr8056Cherokeefr357Frenchccp666Chakmaiu2162 Inuktitutes4993Spanishar2965Arabicru2831Russiansr2250Serbiansr5686Serbianth1792Thaitr3956Turkishar594Arabicccp6867Chakmael4493Greekel5493Greekfr3024Frenchfr6676Frenches1711Spanishth5361Thaitr1828Turkishzh302Chinesefr5883Frenchth4441Thairu6237Russianel5278Greekeo2364 Esperantoes4677Spanishtr5620Turkishen1997Englishru4897Russianfr3606Frenchen38Englishes7259Spanishru756Russiantr4742Turkishth1387Thairu6566Russianeo2280 Esperantoel6832Greekth3346Thaith4869Thaiccp7935Chakmath1944Thaiccp589Chakmabn6515Banglatr3971Turkishel3135Greekru7616Russianen133Englishfr5227Frenchsr281Serbianen6477Englishes1359Spanishfr5726Frenchel6644Greekchr3026Cherokeechr3347Cherokeeeo2683 Esperantoccp5116Chakmaiu6928 Inuktitutar3808Arabicccp4168Chakmaccp6384Chakmael7397Greekja4225Japaneseru7019Russianzh5722Chineseccp5643Chakmachr2613Cherokeezh7535Chineseja6834Japanesees3455Spanishel7661Greeksr4085Serbianen990Englisheo5304 Esperantoiu154 Inuktitutchr659Cherokeezh4043Chinesechr3461Cherokeeel7454Greekja2414Japanesechr3729Cherokeeth6565Thaiccp4341Chakmael3229Greekth274Thaifr2255Frenchchr2231Cherokeeru4394Russianel7345Greekth2874Thairu8091Russianccp3797Chakmachr3323Cherokeebn821Banglafr922Frenchru2319Russiansr3246Serbianes3665Spanishel7996Greekja3911Japaneseiu1737 Inuktitutth3022Thaifr3600Frenchth5264Thairu7693Russianth2233Thaieo1305 Esperantozh1006Chineseru3631Russiantr1584Turkishzh4225Chinesear2457Arabiceo1294 Esperantochr1909Cherokeees8057Spanishar1057Arabicfr7795Frenchiu1570 Inuktitutru3414Russianchr2897Cherokeeen6261Englishel3213Greekja7835Japaneseen3850Englishfr1769Frenchccp1480Chakmaen2504Englishru4702Russianel1649Greekes6338Spanishtr8049Turkishtr808Turkishbn2666Banglazh237Chineseiu1051 Inuktitutja1297Japanesesr4035Serbianth7393Thaizh6246Chineseth987Thairu7306Russiansr1552Serbiantr3696Turkishtr7836Turkishel5622Greekes1511Spanishar2835Arabices6465Spanishsr6855Serbiansr1416Serbiansr7074Serbianel2051Greekiu8021 Inuktituten8087Englishiu4861 Inuktitutchr7171Cherokeeen1473Englishsr5733Serbianccp2254Chakmael5864Greekes5261Spanishen5114Englishchr2700Cherokeeru4784Russianru6009Russianiu5676 Inuktitutchr8178Cherokeees7090Spanishbn2836Banglaar7687Arabiczh7596Chineseeo7482 Esperantobn4492Banglath1313Thaitr2529Turkishen124Englisheo4088 Esperantochr5408Cherokeesr7913Serbianeo7902 Esperantoen6914Englishen2184Englishes6858Spanishja6018Japanesefr2122Frenchsr8165Serbianja6640Japanesezh848Chineseel1065Greekes453Spanishfr2676Frenchsr229Serbianar6640Arabicfr1911Frenchfr2591Frenchel574Greektr3723Turkishccp1161Chakmabn4201Banglachr543Cherokeefr108Frenchth86Thaiar2037Arabicel7019Greekzh6349Chinesefr3170Frenchfr2236Frenchtr2938Turkishar7912Arabicccp2187Chakmaiu3266 Inuktitutchr3923Cherokeees2592Spanishes3840Spanishchr3052Cherokeetr94Turkishbn7791Banglath1186Thaiar1453Arabicsr1570Serbianfr522Frenchfr4912Frenchel6694Greekth181Thaizh2969Chineseeo2269 Esperantofr6513Frenchtr119Turkishzh1044Chineseccp7784Chakmasr8126Serbianzh1831Chinesefr6080Frenchar8187Arabicar6200Arabiceo7859 Esperantoeo1787 Esperantoccp522Chakmaiu2734 Inuktitutar3251Arabicchr1766Cherokeeeo7807 Esperantoccp7694Chakmaes3344Spanishes6489Spanishar484Arabicru3860Russianja4385Japanesetr5889Turkishbn7507Banglath1325Thaiiu2065 Inuktitutru7432Russianeo6993 Esperantoth3058Thaija331Japanesetr2947Turkishzh7755Chineseen7446Englishtr2324Turkishel747Greekel1734Greekru4264Russianeo4887 Esperantoen1614Englishfr3380Frencheo7421 Esperantozh4249Chineseel1354Greeken5354Englishen6633Englishel6778Greekiu8182 Inuktitutchr3918Cherokeeja3220Japaneseccp1301Chakmabn7529Banglachr3203Cherokeeiu318 Inuktituteo3375 Esperantosr3425Serbianru5069Russiantr6111Turkishel3819Greekiu4361 Inuktitutja1035Japanesechr1388Cherokeeth2671Thaiar6905Arabicchr5528Cherokeeru4948Russiantr7201Turkishar7402Arabiciu1839 Inuktitutfr1302Frenchccp6099Chakmaeo6256 Esperantoiu3294 Inuktituten3055Englishes1876Spanishiu5021 Inuktitutru4128Russianth2185Thaiel2172Greekja5537Japaneseth912Thaies1209Spanishth7501Thaiiu7602 Inuktitutsr7337Serbianes257Spanishes5740Spanishccp169Chakmath82Thaieo765 Esperantoccp4332Chakmaccp6514Chakmaar5590Arabicen3511Englishfr3586Frenchfr7548Frenchiu4500 Inuktitutiu5314 Inuktitutth2157Thaizh7134Chineseru4183Russianth5122Thaibn4413Banglafr2341Frenchel6851Greekeo147 Esperantoru7954Russianen3743Englishel6555Greekccp6831Chakmaen3691Englishbn2167Banglaar4941Arabicen4134Englishes4183Spanisheo7982 Esperantoes2825Spanishiu1724 Inuktitutru3581Russianru5564Russianru4045Russianja3193Japanesear4700Arabicen6862Englishiu5412 Inuktitutfr5478Frenchbn3920Banglaru2940Russianth5561Thaien1304Englishar4741Arabicth5131Thaichr7473Cherokeechr2592Cherokeeja2464Japaneseiu2038 Inuktitutsr1277Serbianja3957Japaneseru5597Russianth7849Thaien3717Englishtr5217Turkishbn5234Banglaes6861Spanishccp4514Chakmasr6121Serbianar5959Arabices739Spanishru4665Russiantr3352Turkishes5474Spanishsr3473Serbianja4284Japanesees6807Spanishsr4417Serbianth889Thaichr7909Cherokeeiu3319 Inuktitutru2437Russianeo6505 Esperantoiu5940 Inuktitutccp5589Chakmaar5453Arabiciu7831 Inuktitutar7252Arabiciu897 Inuktitutiu3327 Inuktitutar873Arabicchr4653Cherokeebn2705Banglaccp8081Chakmaen3224Englishen3458Englishja3168Japaneseru1814Russianfr2792Frenchfr1884Frenches2550Spanishes6487Spanishru583Russianes7089Spanishccp5064Chakmath1336Thaizh1424Chinesefr5062Frenchth8011Thaizh1738Chineseth757Thaiccp3506Chakmazh5066Chinesees5883Spanishru3708Russiansr6549Serbianja6408Japaneseccp4759Chakmaccp5600Chakmaeo4853 Esperantoth3660Thaizh5135Chinesefr8067Frenchzh7653Chinesesr4221Serbianru7405Russianccp201Chakmazh3249Chineseccp8143Chakmaeo2796 Esperantoar4227Arabiceo4882 Esperantoar2136Arabiczh3393Chinesezh6366Chineseiu2282 Inuktitutbn2099Banglaccp302Chakmaen5408Englishsr6391Serbianbn2501Banglath8089Thaiar3099Arabicbn5893Banglaccp3465Chakmaja6855Japaneseth4348Thaiar2583Arabicfr1233Frenchen7413Englishru3457Russianzh5232Chinesebn3287Banglaja7512Japaneseja2560Japanesechr1297Cherokeear4407Arabicbn802Banglaccp7718Chakmaccp4741Chakmaccp1337Chakmaar3554Arabicchr467Cherokeefr5007Frenchtr1255Turkishja5077Japanesees4632Spanishar3700Arabiceo3492 Esperantoar2971Arabicru5628Russiantr4516Turkishbn6193Banglath79Thaibn4694Banglafr3451Frenchru2013Russiantr1813Turkisheo384 Esperantosr3418Serbianeo5668 Esperantoru7111Russianbn7301Banglazh6409Chineseeo209 Esperantoel2421Greekth421Thaith6256Thaizh7555Chinesechr620Cherokeees4963Spanisheo7826 Esperantofr2891Frenchfr3012Frenchar305Arabicchr3935Cherokeeiu4478 Inuktitutru2125Russianiu6931 Inuktitutfr1665Frenchen2170Englishbn6376Banglachr3778Cherokeeel7510Greekfr3540Frenchchr3885Cherokeeen5381Englishes6574Spanishru2446Russianru1585Russianel7931Greekfr2405Frenchar6241Arabicchr5498Cherokeeeo4002 Esperantoes6253Spanishru6679Russianes1275Spanishja5005Japanesebn1937Banglatr1295Turkishth1665Thaien2480Englishzh4087Chineseth2413Thaichr4268Cherokeeel8022Greekbn5173Banglaiu7772 Inuktitutfr2152Frenchfr7337Frenchtr3270Turkishchr6865Cherokeezh1651Chinesezh4760Chineseru6750Russianja4777Japaneseel5010Greektr4253Turkishbn7091Banglabn2500Banglaja937Japanesechr6918Cherokeear6413Arabictr5622Turkishiu6498 Inuktitutchr3849Cherokeeja776Japanesefr5608Frenchen1448Englishel5715Greektr3221Turkishru2753Russianccp669Chakmachr2343Cherokeeth5324Thaieo1630 Esperantotr6366Turkishsr6945Serbiansr6467Serbiansr284Serbiantr2085Turkishccp6799Chakmath5503Thaies2063Spanishru288Russianel7606Greekbn2773Banglachr3465Cherokeear2437Arabicar7705Arabicfr7032Frenchiu4541 Inuktitutru3646Russianeo6109 Esperantoja2136Japaneseru8103Russianeo3665 Esperantoru1915Russianel1507Greekchr7350Cherokeeccp6027Chakmachr2028Cherokeeen5275Englishru6514Russianccp5649Chakmaar207Arabicel2914Greekchr6007Cherokeeel996Greeken758Englishfr1815Frenchiu531 Inuktitutccp6306Chakmafr5225Frenchbn6841Banglaiu7247 Inuktitutiu813 Inuktitutru1225Russianzh2989Chinesees8098Spanishsr4497Serbianen588Englishth1323Thaien801Englishes5354Spanishth6944Thaiccp1829Chakmabn2199Banglael7010Greeksr4325Serbianja1121Japaneseccp8061Chakmatr108Turkishja2539Japaneseth6083Thaitr4156Turkisheo11 Esperantosr6966Serbianja5357Japanesesr2445Serbianen393Englishzh2678Chinesees6422Spanishzh6214Chinesees2177Spanisheo6605 Esperantozh3626Chineseth5723Thaieo5631 Esperantoiu5180 Inuktitutsr4403Serbianchr8094Cherokeeeo466 Esperantoiu4486 Inuktitutfr3957Frenchchr7463Cherokeeen6457Englishja6189Japanesezh7528Chinesechr7080Cherokeear1450Arabicfr7038Frenchel3652Greekar7861Arabicen2438Englisheo4438 Esperantoes4741Spanishccp2368Chakmaeo4577 Esperantoja3061Japanesebn1199Banglael46Greekes1236Spanishfr2695Frenchth1982Thaiel6982Greeken1561Englishru5131Russiansr6013Serbianzh3075Chineseccp4730Chakmaccp7286Chakmachr7586Cherokeesr8092Serbianar7509Arabicen747Englishen1091Englishfr1663Frenchfr5837Frenchsr4381Serbianeo856 Esperantotr4046Turkishfr5548Frenchiu1770 Inuktituttr1691Turkishen5646Englisheo4137 Esperantobn2619Banglaccp7448Chakmaeo820 Esperantotr1470Turkishen8145Englishru6028Russianen8043Englishzh1582Chinesear7602Arabices4099Spanisheo5866 Esperantoth1123Thaien5411Englishel4308Greeken3013Englisheo967 Esperantoiu5585 Inuktituten339Englishiu8154 Inuktituten7742Englishsr876Serbianeo1299 Esperantoth1304Thaizh4097Chinesear5854Arabicja4611Japanesezh8107Chineseth5231Thaichr1273Cherokeear4722Arabicfr5654Frenchru5218Russianbn5981Banglaru8077Russianar5468Arabicchr5880Cherokeeen792Englishen3085Englishzh4465Chinesezh4737Chineseiu4 Inuktitutsr812Serbianja1564Japaneseen6624Englishchr305Cherokeesr6948Serbianzh3311Chinesezh6222Chineseel7749Greekeo875 Esperantofr2492Frenchar3573Arabicsr7363Serbianth184Thaies1710Spanishsr1587Serbiantr5697Turkishfr5338Frenchen7085Englishth6828Thaies2826Spanisheo300 Esperantoen2400Englishja5099Japaneseccp578Chakmaen1538Englishchr3121Cherokeefr3028Frenchfr6661Frenchsr7665Serbianeo7927 Esperantofr1160Frenchiu2304 Inuktitutbn1574Banglafr4251Frenchchr553Cherokeeccp344Chakmasr4572Serbiansr2882Serbianeo5810 Esperantoeo1669 Esperantoth887Thairu569Russiansr5837Serbianzh7202Chineseth5612Thaiccp6690Chakmath5139Thaibn1192Banglaes4792Spanishchr4341Cherokeeja6317Japaneseth7676Thaien6790Englishccp1170Chakmaru4925Russianel3485Greeken7926Englishel2554Greekes7982Spanishzh1800Chinesees6478Spanishfr438Frenches7061Spanishiu4439 Inuktitutes5013Spanishar4284Arabicth3928Thaien6482Englishsr5888Serbianth6877Thaieo6193 Esperantoiu7260 Inuktitutar80Arabiceo7846 Esperantoccp5819Chakmael1128Greekzh1464Chineseel44Greeken4094Englishsr5968Serbianen2268Englishchr968Cherokeeen4097Englishes3600Spanishth1761Thaiel1808Greekes2254Spanishes2527Spanishth4791Thaien4635Englishes4691Spanishccp2738Chakmasr2076Serbianar742Arabiczh2641Chinesear568Arabicar1548Arabicel3305Greekeo2057 Esperantotr3468Turkishja5047Japaneseen419Englishtr1544Turkishsr54Serbianzh1667Chinesear3023Arabicfr5465Frenchzh1104Chinesezh6315Chinesesr7407Serbianel6626Greektr2295Turkisheo5266 Esperantoja5352Japaneseel2784Greekbn3280Banglatr6953Turkisheo7052 Esperantofr7952Frenchel7526Greekel4919Greeksr6904Serbiansr5543Serbianen7689Englishchr2362Cherokeeccp7796Chakmaeo7352 Esperantofr8040Frenchel4434Greekja5264Japanesetr2013Turkishel4334Greekiu1441 Inuktituttr2417Turkishsr1848Serbianzh7165Chinesetr5156Turkishchr7277Cherokeetr4029Turkishja1952Japaneseth6111Thaichr3701Cherokeeel2725Greekel3985Greekja5723Japanesebn4643Banglafr1765Frenchar1908Arabicth1288Thaichr681Cherokeetr3608Turkishccp3488Chakmatr6380Turkishtr1082Turkishar5556Arabicar6894Arabiczh1822Chineseiu7850 Inuktitutiu1013 Inuktitutccp3732Chakmaes3940Spanishes509Spanishbn6474Banglabn6766Banglaiu375 Inuktitutes1223Spanishiu4719 Inuktitutzh2964Chineseiu7526 Inuktitutja1614Japaneseth3815Thaibn4995Banglabn4488Banglaru2891Russianth2651Thaija4012Japaneseen8165Englishchr3104Cherokeezh7353Chinesear2792Arabicsr4571Serbiantr4449Turkishel2024Greekja3499Japaneseiu410 Inuktitutar7819Arabicel4733Greekel5543Greekfr7142Frenchiu4006 Inuktitutja7125Japaneseru568Russianen2527Englishel3363Greekru4082Russianzh3871Chinesees2325Spanishel6198Greekar4007Arabiciu1749 Inuktitutar6338Arabicru4434Russianru5727Russianccp2837Chakmazh5323Chineseja5236Japanesezh4481Chinesear7923Arabices7075Spanishchr7636Cherokeetr847Turkishel2148Greekel1839Greeksr638Serbianbn6711Banglaiu5973 Inuktitutchr3271Cherokeezh4836Chinesetr5428Turkishfr474Frencheo2511 Esperantofr906Frenchbn6645Banglaen5329Englisheo1582 Esperantofr6340Frenchja3004Japaneseru6821Russianccp6846Chakmael3990Greekel5985Greekbn2313Banglaccp6158Chakmaiu3452 Inuktitutru1885Russiansr2654Serbianru818Russianbn1647Banglachr2789Cherokeear1849Arabicchr5883Cherokeees5892Spanishen3273Englishel3395Greekja7132Japaneseru6557Russianfr1920Frenchccp2862Chakmath4410Thaichr3136Cherokeeja5307Japaneseeo6142 Esperantoja3364Japaneseel3334Greeken6488Englishbn534Banglaru479Russiansr313Serbianen797Englisheo5084 Esperantobn5543Banglaccp7210Chakmaeo7292 Esperantotr3103Turkishtr6353Turkishfr1652Frenchar1275Arabices4391Spanishtr3875Turkishccp325Chakmaeo4353 Esperantotr1138Turkishsr7896Serbianchr7111Cherokeebn7980Banglaes7841Spanishar7547Arabiciu857 Inuktitutiu8064 Inuktitutja2717Japanesesr1860Serbianzh4069Chineseel6760Greekel7354Greekja1573Japaneseja2346Japanesetr5935Turkishzh4839Chineseja1460Japanesefr3769Frenchfr3704Frenchel489Greekel1926Greekfr1968Frenchbn2772Banglael3993Greekel7235Greekes393Spanishja4138Japanesesr3381Serbianes1101Spanishfr6385Frenchru3496Russiantr4381Turkishru1995Russianes5121Spanishzh3316Chinesear7184Arabiciu4991 Inuktitutfr1299Frenchtr6890Turkishtr1031Turkishzh1955Chinesetr3062Turkishzh278Chinesefr2485Frenchel7483Greekja3041Japanesechr6435Cherokeees3366Spanishtr1545Turkishru5490Russianfr7456Frenchru7039Russianchr6099Cherokeeen461Englishzh7734Chinesear1386Arabicel1789Greekzh3633Chinesezh4455Chineseiu6631 Inuktitutbn4914Banglazh6307Chineseth7677Thaitr382Turkishru5354Russianja2221Japanesefr2332Frenchchr3698Cherokeear7062Arabicccp5699Chakmaja2650Japanesesr4482Serbianzh5214Chineseiu6166 Inuktitutja6931Japaneseth5007Thaibn6672Banglaen7161Englishes2973Spanishfr8021Frenchja7937Japaneseru2674Russianel1384Greekth6930Thaies2031Spanishar2561Arabictr1686Turkishtr3810Turkishar6675Arabicfr7865Frenchccp1794Chakmatr2931Turkishja6721Japaneseja2190Japaneseeo6690 Esperantofr2434Frenchchr2447Cherokeees1987Spanishbn381Banglaccp6766Chakmasr1118Serbianes4797Spanishel838Greekel3311Greekar4821Arabicar995Arabicccp298Chakmaes4591Spanishar5003Arabicchr6661Cherokeeeo2976 Esperantoes4053Spanishiu5125 Inuktitutja6201Japaneseja6745Japanesezh353Chineseru6361Russianru7901Russianeo921 Esperantoeo2507 Esperantoes2935Spanishzh4698Chinesear6230Arabicchr2862Cherokeeeo2833 Esperantoth3170Thaien3854Englishen1509Englishbn7293Banglaccp6121Chakmachr6184Cherokeeja734Japaneseja1407Japanesees6216Spanishtr3028Turkishel4699Greekth7774Thaiiu7725 Inuktituttr6562Turkishru4787Russiantr1935Turkishchr921Cherokeees1204Spanishsr1700Serbiansr6251Serbiantr3117Turkishfr1424Frenchth7886Thaiel5414Greekeo5469 Esperantochr2628Cherokeesr5101Serbianccp3969Chakmazh4185Chineseru1776Russianeo7109 Esperantosr1889Serbianes6134Spanishtr827Turkishzh142Chinesefr5653Frenchru4943Russianel6904Greektr126Turkishccp59Chakmath5718Thaith7554Thaichr1470Cherokeefr4817Frenchzh3800Chineseen8029Englishccp2383Chakmafr3498Frenchru6350Russianth5841Thaizh6696Chineseeo3681 Esperantoeo7639 Esperantoar6562Arabictr7032Turkishru1869Russianbn4757Banglaeo4339 Esperantoth793Thaichr5177Cherokeees712Spanishfr1028Frenchsr2850Serbiansr4054Serbianiu6597 Inuktituttr3702Turkisheo7514 Esperantoth1986Thaiar7264Arabicru2639Russiantr4283Turkisheo4448 Esperantozh2217Chineseccp336Chakmaen5982Englisheo1632 Esperantoes6748Spanishbn158Banglabn4079Banglaccp2177Chakmaes3454Spanisheo4750 Esperantoja2225Japanesechr7050Cherokeeen1725Englishtr4704Turkishen6225Englishth4896Thaisr4452Serbianfr6571Frenchru5438Russianth2257Thaiar4442Arabiciu5803 Inuktitutccp378Chakmaja1956Japaneseccp4959Chakmaen3626Englishfr2064Frenchbn6775Banglaccp3527Chakmachr7310Cherokeefr1732Frenchfr3845Frenchfr3302Frenchar7312Arabicru1622Russianru7217Russiansr4395Serbianth2174Thaien4752Englishiu6235 Inuktitutel4251Greekbn2114Banglabn7290Banglachr3642Cherokeechr7131Cherokeeiu4505 Inuktitutar72Arabicel1202Greekth4404Thaitr723Turkishtr7653Turkishtr7915Turkishzh6367Chinesetr1790Turkishar5680Arabicchr6528Cherokeetr6835Turkishbn4979Banglaccp2867Chakmaar3402Arabicth4303Thaisr657Serbiansr5677Serbianeo5821 Esperantosr4626Serbianfr4603Frenchfr3350Frenchtr7043Turkishtr6599Turkishiu6953 Inuktituttr2990Turkishja2033Japanesees7288Spanishth8045Thaith3333Thaisr3347Serbianeo3732 Esperantozh2582Chinesetr7Turkishru6810Russianru7440Russianbn6808Banglael2638Greeksr5090Serbianth1178Thaitr214Turkishtr6175Turkishes2481Spanishth7695Thaifr261Frenchtr795Turkishbn4878Banglael2186Greekel706Greekfr7615Frenchru4095Russianbn2834Banglaru5330Russianchr3276Cherokeechr3832Cherokeechr4828Cherokeeru3754Russiansr7413Serbianja5405Japaneseiu2403 Inuktitutiu6462 Inuktituten3328Englishes3517Spanishar4630Arabicchr449Cherokeees4815Spanishzh7162Chinesefr6719Frenchchr4607Cherokeechr7587Cherokeeel1345Greekja1927Japanesesr6548Serbianzh69Chinesefr4758Frenchiu5053 Inuktitutth550Thaien6069Englishccp5264Chakmachr2971Cherokeeen999Englishzh1886Chineseja4172Japanesear6510Arabicccp7466Chakmasr3461Serbiansr6647Serbianth2725Thaiar1601Arabicfr1517Frenchiu5008 Inuktitutccp2444Chakmaes6019Spanisheo1943 Esperantoel724Greekes5380Spanishfr624Frenchar1223Arabicel7236Greekth1787Thaichr7994Cherokeesr2225Serbianeo5482 Esperantoth5721Thaichr2238Cherokeezh7171Chinesebn1859Banglatr7334Turkishel6631Greekeo916 Esperantofr4418Frenchfr2009Frenchchr5816Cherokeeeo7977 Esperantoccp1868Chakmaar3512Arabictr7395Turkishja2399Japanesechr7007Cherokeees4571Spanishes4634Spanishar697Arabicel602Greeksr2492Serbianeo7534 Esperantoeo1995 Esperantoar7294Arabicfr5349Frenchth186Thaija1774Japaneseeo3144 Esperantofr7700Frenchchr6755Cherokeechr3624Cherokeeja4551Japaneseth3990Thaiccp3670Chakmazh3595Chineseel2087Greekja329Japaneseel5625Greekzh6554Chinesechr5289Cherokeeiu1155 Inuktituten8007Englishchr3851Cherokeeja6132Japanesezh4706Chinesefr6854Frenchar6621Arabicsr3006Serbianbn1010Banglabn6295Banglatr5006Turkishsr2047Serbianzh4236Chineseiu7425 Inuktituttr4112Turkishar7107Arabicccp5390Chakmaru4218Russianes656Spanishfr5769Frenchth840Thaien1445Englishzh3654Chineseru7689Russianar932Arabicel215Greekchr1866Cherokeeth5532Thaibn5794Banglafr2333Frenchru3241Russianccp3053Chakmazh4346Chineseiu1960 Inuktitutccp5432Chakmachr6964Cherokeeeo5892 Esperantoccp153Chakmachr368Cherokeechr907Cherokeechr6719Cherokeeel649Greekar3981Arabices3103Spanishsr6080Serbianja2578Japanesetr2848Turkishar1930Arabiczh2719Chinesear118Arabicel6536Greekeo4492 Esperantochr5Cherokeeja4271Japaneseiu676 Inuktitutes5878Spanishru49Russianen3902Englishru544Russianes2622Spanishja1139Japaneseth5300Thaies4653Spanishel2202Greeken4160Englishel137Greekja2843Japaneseru428Russianen7374Englishes1336Spanishth7588Thairu6406Russianzh1903Chinesetr8076Turkishsr2909Serbianiu4450 Inuktitutzh3453Chineseen212Englishes7905Spanishchr1222Cherokeeel6074Greeksr1376Serbianbn1565Banglath2545Thaitr2385Turkishbn5795Banglazh3929Chinesear3277Arabices2113Spanishar4105Arabicsr4037Serbianen2808Englishccp8169Chakmath7296Thaitr299Turkishchr7314Cherokeear8136Arabicchr5164Cherokeeja5533Japanesebn1939Banglazh7460Chineseiu5261 Inuktitutiu1829 Inuktituttr6218Turkishzh4193Chinesefr566Frenchel1216Greekfr5965Frenches2861Spanishbn4446Banglaccp4047Chakmaja2238Japaneseja7466Japanesesr557Serbianbn7435Banglaar5209Arabicchr2172Cherokeechr5887Cherokeesr5463Serbianel1504Greekfr6808Frenchtr7645Turkishel2813Greekzh2918Chinesefr7249Frenchzh7422Chinesetr7316Turkishth3877Thaith6465Thaizh3025Chineseth4702Thaifr8159Frenchccp1979Chakmael4752Greektr2022Turkishen2395Englishzh8066Chineseth4872Thaitr5430Turkishccp4584Chakmaes6636Spanishtr4978Turkishen3406Englishar4942Arabices7217Spanishzh3186Chineseel1702Greekccp7745Chakmaru2020Russianeo5748 Esperantoru2623Russianzh4300Chinesechr2157Cherokeeen5776Englishfr857Frenchzh3918Chinesear6174Arabicel5064Greeksr1301Serbianiu2144 Inuktitutfr6758Frenchen4465Englishfr1958Frenchiu4697 Inuktitutja6854Japanesesr8121Serbianzh4996Chinesesr5176Serbianes1128Spanishchr2131Cherokeees5177Spanishzh3376Chinesechr8122Cherokeeiu3636 Inuktitutes1527Spanishar7400Arabicen7241Englisheo7241 Esperantoccp6105Chakmatr8036Turkishar2421Arabicen4481Englishth3095Thaizh4192Chinesefr548Frencheo5083 Esperantoccp6605Chakmaja7296Japanesetr4589Turkishzh1147Chineseen2495Englishru1815Russiantr3051Turkishar1335Arabictr3981Turkishja3380Japaneseccp7940Chakmaar1141Arabicfr5689Frenchel3818Greeken984Englishel1155Greekes4897Spanishja767Japaneseth326Thaiel339Greektr7225Turkishchr5222Cherokeeeo3453 Esperantoru3201Russianth1839Thaitr2132Turkishsr804Serbianeo2717 Esperantoja1707Japanesesr909Serbiansr5414Serbianth1510Thaitr5112Turkishfr1445Frenchtr7451Turkishbn283Banglaes5187Spanishchr5216Cherokeeja3215Japanesesr4632Serbiantr2747Turkishja290Japaneseja5240Japanesefr2088Frenchccp8044Chakmaes639Spanishfr1392Frenchja1918Japanesechr3156Cherokeeru4278Russianar6690Arabicfr5171Frenchsr4043Serbianbn6561Banglafr4981Frenchfr957Frenchbn2684Banglaru1716Russianar2633Arabices2974Spanishiu7780 Inuktitutsr4343Serbianbn6241Banglatr3657Turkishar1202Arabicchr4870Cherokeesr3778Serbianen3905Englishar7737Arabicar2790Arabicel1710Greekzh2367Chineseja2334Japanesechr2610Cherokeeen5035Englishru7766Russianel7392Greekth3224Thaiar8020Arabices6583Spanishar3743Arabicen6369Englishen2454Englishtr2164Turkishru6563Russianru4714Russiansr1279Serbianfr1556Frenchzh7490Chinesear155Arabicel3670Greeksr1291Serbianen2718Englishsr2600Serbianchr1102Cherokeeccp2339Chakmazh1406Chineseen5475Englishru268Russiantr5979Turkishfr7984Frenchsr316Serbianes5840Spanishtr2593Turkishtr4349Turkishen2806Englishfr7437Frenchiu348 Inuktitutar69Arabiczh1472Chineseru8165Russianeo6005 Esperantofr4699Frenchru8157Russianja3276Japaneseccp5832Chakmatr8058Turkishes5074Spanishja2529Japaneseen5306Englishiu2252 Inuktitutfr3472Frenchja144Japaneseeo7251 Esperantoccp7827Chakmatr6621Turkishzh4365Chineseen5791Englishiu5850 Inuktitutth1110Thaizh5391Chineseru2073Russianth7756Thaiar5823Arabicsr2490Serbianeo2354 Esperantoen3536Englishth4462Thaieo2577 Esperantofr3551Frenchar1756Arabicel3179Greekfr6865Frencheo5014 Esperantoar3984Arabiceo1407 Esperantoja5591Japanesechr6111Cherokeeru71Russianru3242Russianel4137Greekbn7139Banglaeo5474 Esperantoen6861Englishja6723Japaneseth2705Thaiiu1394 Inuktitutiu5837 Inuktituttr4571Turkishth1765Thaiccp3159Chakmaiu5266 Inuktitutes4847Spanishsr6818Serbianen117Englishru1133Russianccp8127Chakmafr6358Frenchar1169Arabiczh966Chinesetr1088Turkishbn2244Banglatr133Turkishes5789Spanishfr1266Frenchsr6764Serbianiu5065 Inuktitutchr4969Cherokeeeo4153 Esperantoar535Arabicsr2230Serbianar2182Arabiciu7378 Inuktitutth4969Thaibn2719Banglaeo6519 Esperantofr4660Frenchja7798Japaneseru2388Russianar2867Arabicsr5748Serbianen1498Englishfr201Frenchen2580Englishar5243Arabicccp4630Chakmaja1259Japanesezh5384Chinesefr6438Frenchar6115Arabicfr1205Frencheo723 Esperantoja4487Japanesetr2402Turkishru2076Russianru1830Russianzh4624Chinesear2252Arabicel522Greekzh6894Chineseiu6386 Inuktitutsr6791Serbianel3614Greekes4848Spanishja2910Japaneseru1877Russianar1931Arabicel7674Greekiu7133 Inuktitutccp4607Chakmath5604Thaifr6772Frenchar8150Arabicchr2616Cherokeeiu214 Inuktitutiu7045 Inuktitutru337Russianen7823Englishen2068Englisheo6824 Esperantobn3235Banglaen822Englishbn4658Banglaja106Japaneseiu1531 Inuktitutchr5730Cherokeeel1595Greekeo7570 Esperantoar2163Arabicar6176Arabicfr2949Frenchsr7627Serbianbn5897Banglael7541Greekchr4097Cherokeeru4292Russianar4715Arabicar4849Arabicchr4595Cherokeeel1856Greekru432Russianfr7153Frenchtr7233Turkishccp635Chakmaar6622Arabicel2677Greekes1148Spanishzh2090Chineseru7667Russiantr4619Turkishiu5443 Inuktitutth5065Thaizh7719Chinesees1528Spanishsr4747Serbianeo3032 Esperantotr181Turkishja3301Japanesezh3410Chineseth6302Thaichr7155Cherokeees6048Spanishar942Arabicth5312Thaiiu859 Inuktitutes7761Spanishel6398Greekja2458Japanesetr7068Turkisheo1664 Esperantoru3875Russianru5581Russianzh2036Chinesezh6666Chinesebn1954Banglaja4574Japanesechr6273Cherokeeccp6770Chakmath5136Thaija7580Japaneseel1459Greekeo5909 Esperantoes3815Spanishel854Greektr3406Turkishja7072Japanesefr4055Frenchar3575Arabicth4151Thaies5919Spanishar229Arabiczh522Chinesechr914Cherokeeja4257Japaneseiu2128 Inuktitutru4878Russianzh7323Chineseiu1711 Inuktitutar1372Arabicru7143Russianth3186Thaija2305Japaneseth5014Thaiiu6307 Inuktitutsr7997Serbianel6142Greekccp7817Chakmath5354Thaisr3520Serbianccp7272Chakmabn6275Banglazh3164Chineseiu736 Inuktitutel4783Greekccp1094Chakmaccp2736Chakmachr5405Cherokeees1565Spanishccp4984Chakmaen3321Englishru1410Russiansr6431Serbianar4976Arabicfr2070Frenchth436Thaiiu332 Inuktitutfr4503Frenchar1895Arabiciu5215 Inuktitutsr5095Serbianeo1115 Esperantoccp6556Chakmaes4711Spanishar1808Arabiciu3406 Inuktitutes3246Spanishchr1917Cherokeetr1734Turkishtr3244Turkishbn6771Banglabn7952Banglachr6354Cherokeefr3251Frenchccp7459Chakmaja4673Japaneseru2530Russianes2939Spanishsr479Serbianchr5843Cherokeeru6714Russianth7654Thaizh6086Chinesezh1583Chinesear3842Arabicfr2767Frenchru3024Russianth720Thaija5445Japanesechr1620Cherokeeen1555Englishzh6459Chineseen1039Englishar3268Arabicel2368Greekfr5218Frenchiu93 Inuktitutiu4427 Inuktitutzh1514Chineseru5538Russianth3288Thairu2655Russianar5128Arabiciu7403 Inuktitutsr265Serbiansr7741Serbianru3560Russianru4617Russianru6123Russianiu7967 Inuktituttr2482Turkishar6585Arabicsr7789Serbianbn90Banglaeo6120 Esperantofr5254Frenchccp6140Chakmaccp4066Chakmazh6317Chinesees6021Spanishru3748Russianth3584Thaieo230 Esperantoeo5116 Esperantoiu3117 Inuktitutsr570Serbianja684Japanesees4168Spanishja6294Japaneseel5596Greekeo3482 Esperantoccp2721Chakmaccp7834Chakmaeo8048 Esperantoes4472Spanishfr1584Frenchja6269Japanesesr7273Serbianiu7384 Inuktituttr6161Turkishzh6829Chineseth2979Thaieo2128 Esperantoar4766Arabicar2169Arabicfr3039Frenchfr3167Frenchen5090Englishbn7259Banglaccp407Chakmaru7297Russianchr7061Cherokeeth42Thaija6603Japanesezh6153Chineseja195Japanesetr2012Turkisheo2906 Esperantoccp4585Chakmafr3406Frenchar5238Arabicchr6652Cherokeeiu604 Inuktitutbn781Banglatr1632Turkishfr3921Frenchth2845Thaizh2261Chineseeo4198 Esperantofr5275Frenchbn4943Banglasr5305Serbianth7959Thaichr746Cherokeezh3226Chinesesr6138Serbianbn1252Banglachr4561Cherokeeth5031Thaiccp3492Chakmachr4021Cherokeebn5166Banglaar6187Arabicccp4486Chakmaen5851Englishchr7224Cherokeeeo6775 Esperantoccp4487Chakmaes2982Spanishiu273 Inuktitutiu4892 Inuktitutfr1487Frenchiu3242 Inuktitutchr7426Cherokeeccp8021Chakmaja4313Japaneseth1040Thaitr1932Turkishja3005Japanesetr2641Turkishja3142Japanesetr7628Turkishiu2343 Inuktitutar5642Arabicccp7173Chakmatr2500Turkishchr955Cherokeees1356Spanishja5347Japaneseeo3820 Esperantoes5730Spanishfr8179Frenchiu2785 Inuktitutchr2871Cherokeeeo7193 Esperantoccp2807Chakmaeo1200 Esperantobn5329Banglaeo5931 Esperantoru2604Russianzh5218Chineseccp5836Chakmaja6570Japaneseiu4419 Inuktitutiu7651 Inuktitutfr268Frenchiu4433 Inuktitutbn3746Banglaru7832Russianccp2938Chakmath2287Thaitr1717Turkishfr960Frenchsr5456Serbianru6101Russianchr1913Cherokeeth4004Thaisr6708Serbianja2500Japaneseeo5680 Esperantoeo2322 Esperantofr3381Frenchja6538Japanesebn31Banglaccp1837Chakmaru4731Russiantr7824Turkishel1283Greeken4064Englishchr5084Cherokeees6981Spanishtr4957Turkishja3739Japanesesr752Serbianbn3070Banglaja3984Japanesetr5073Turkishchr3693Cherokeezh7594Chineseiu5878 Inuktitutes1344Spanishtr3945Turkishzh349Chineseru5919Russiantr4215Turkishel7291Greekru4591Russianes2916Spanishar677Arabicel7933Greeken3653Englishar4193Arabicchr2244Cherokeeeo632 Esperantobn3918Banglaja1462Japaneseeo5227 Esperantoen2803Englishtr491Turkishar5433Arabicth320Thaibn7206Banglaen3913Englishes6939Spanishja4131Japaneseth4383Thaibn6056Banglaen5005Englishtr5255Turkishfr7017Frenchsr3581Serbianzh5050Chinesees3415Spanishes5914Spanisheo4896 Esperantobn5773Banglafr3525Frenchsr931Serbianeo1225 Esperantoru6527Russianar3864Arabicar7725Arabices5104Spanishth3048Thaibn1616Banglaen4182Englishth6268Thaifr2327Frenchccp3317Chakmabn2544Banglazh5312Chinesefr2974Frenches1193Spanishchr1786Cherokeeen2247Englisheo2807 Esperantotr874Turkishel2438Greekja6039Japanesebn6703Banglaja3350Japanesear7194Arabicar1987Arabicsr6180Serbianen3387Englishen5960Englisheo3579 Esperantoth3087Thaiar3264Arabiciu5554 Inuktitutja5552Japanesechr5987Cherokeeiu7801 Inuktituten1109Englisheo5855 Esperantoes3877Spanishru4811Russianen5669Englisheo6821 Esperantoth1451Thaichr2142Cherokeefr6424Frenchru8123Russianja3348Japaneseru473Russianen5248Englishth4084Thaiar335Arabicccp83Chakmafr7477Frenchccp7696Chakmachr1179Cherokeeen7277Englishchr1954Cherokeeel1141Greekbn5252Banglael51Greeksr7437Serbianth2209Thaibn5037Banglaccp4440Chakmaes1316Spanishes4978Spanishsr8060Serbianth4300Thaith6342Thaichr4949Cherokeeth674Thaiar2578Arabiciu2056 Inuktituten5265Englishfr5659Frenchel7056Greekbn498Banglafr7024Frenchsr6340Serbianel7406Greekfr3319Frenchja6784Japanesesr1738Serbiantr994Turkishru1574Russianchr3176Cherokeear1071Arabicccp1966Chakmaccp5937Chakmaen5209Englishccp5920Chakmaccp7211Chakmael291Greekzh1347Chinesear3778Arabicar5693Arabicfr6278Frenchccp7123Chakmath2842Thaiar4824Arabicel783Greekchr7327Cherokeetr3000Turkishzh7990Chinesetr5609Turkishccp6274Chakmath3612Thaizh2066Chinesezh8012Chinesechr7585Cherokeechr373Cherokeeiu2590 Inuktitutja1728Japaneseen6485Englishru456Russianfr782Frenches6200Spanishen1145Englishsr5833Serbianeo6570 Esperantobn5886Banglaccp984Chakmaja3512Japaneseru6807Russiantr1950Turkishfr417Frenchfr1347Frenchth0Thaija7717Japaneseel7420Greekes7647Spanishtr4518Turkishru1075Russiantr5897Turkishchr6038Cherokeeel7269Greekes7274Spanishth3143Thaizh6401Chinesezh4806Chinesefr2748Frenchbn1801Banglabn2839Banglaen7030Englishsr5524Serbianccp2168Chakmachr3597Cherokeesr1771Serbiantr5067Turkishbn5289Banglabn7971Banglatr3913Turkishccp3611Chakmazh4828Chineseel3663Greekiu6050 Inuktitutru2407Russianth3336Thaija7871Japanesear6458Arabicru5415Russianiu1122 Inuktitutru2014Russianen72Englishtr7631Turkishes7882Spanishar6565Arabicen4139Englisheo7422 Esperantoja7794Japanesees7732Spanishtr877Turkishel7884Greeken5954Englishen6656Englishzh425Chinesechr6053Cherokeeeo6890 Esperantoru2798Russianccp1258Chakmaccp5177Chakmaes4256Spanishth4016Thaisr4493Serbianeo6015 Esperantoth900Thaifr3834Frenchccp2714Chakmaru884Russianth587Thaiccp7566Chakmaeo8093 Esperantozh467Chinesesr1088Serbianchr5957Cherokeebn104Banglazh6418Chinesear1096Arabictr4860Turkishsr2140Serbianru5495Russianchr5561Cherokeeel446Greekeo2620 Esperantoth5791Thaiccp932Chakmatr6480Turkishel2239Greektr7907Turkishes7687Spanishccp6941Chakmael3325Greekzh1187Chinesechr7462Cherokeees5922Spanishfr6933Frenchiu269 Inuktitutru5993Russianru5900Russianja3643Japanesechr6078Cherokeechr3881Cherokeeel977Greekja526Japanesechr4289Cherokeeth4068Thaitr6623Turkishsr5335Serbianen3579Englishtr2811Turkishen2238Englishen6829Englishar4585Arabicth3620Thairu6259Russianel8115Greekar3498Arabicth1972Thaisr4928Serbianfr5058Frenchen6418Englishel7127Greekccp6687Chakmazh3047Chineseen1168Englishen4503Englishth7700Thaibn3680Banglasr1744Serbianru7128Russianth3775Thaiiu1373 Inuktitutzh4736Chineseru7302Russianja963Japaneseeo1801 Esperantoja4483Japaneseth656Thaiar4578Arabicchr5095Cherokeeen6190Englishsr2251Serbianth3853Thaizh7256Chinesesr6619Serbiansr2997Serbianeo708 Esperantoth2224Thaibn5048Banglaen6415Englishen1238Englishes4551Spanishzh5510Chinesefr2827Frenchchr2226Cherokeeja6669Japanesear3214Arabicru4138Russianbn6781Banglaccp5427Chakmath4120Thaiel535Greekzh259Chinesetr4976Turkisheo3071 Esperantoth2742Thaieo5115 Esperantoccp1781Chakmaja3879Japanesees3681Spanishja6081Japanesezh6204Chinesebn4855Banglaru5064Russianes6550Spanishar5529Arabicccp2034Chakmaar6430Arabicfr4132Frenchiu240 Inuktitutru2464Russianru6021Russianes4869Spanishru5282Russianar3189Arabicja2196Japaneseja1383Japanesesr8035Serbianar4128Arabices592Spanishzh3418Chineseel4756Greekja1500Japanesebn3953Banglaeo5949 Esperantotr3509Turkishfr1500Frenchccp4050Chakmaeo2744 Esperantoiu1478 Inuktitutru3749Russianfr1974Frenchru7692Russianccp3769Chakmaccp5828Chakmabn7592Banglafr3342Frenchiu1071 Inuktitutchr1489Cherokeeth6771Thaizh3783Chinesesr463Serbianru4970Russianiu4162 Inuktitutel1461Greeksr2359Serbianeo7138 Esperantofr7851Frenchchr7563Cherokeees8046Spanishru362Russianbn945Banglaiu5812 Inuktitutzh2379Chinesechr5809Cherokeeiu6614 Inuktituten7915Englishccp3726Chakmachr4867Cherokeeja6888Japanesebn5998Banglaeo3122 Esperantosr6671Serbianzh7648Chineseth2980Thaizh3066Chineseiu2775 Inuktitutchr7584Cherokeeth670Thaitr6333Turkishccp6196Chakmaru502Russianja4716Japanesefr4504Frenchzh7301Chinesezh4727Chineseja777Japanesefr3851Frenchiu5708 Inuktitutth6981Thaiel3773Greekzh5035Chineseru2893Russianbn3391Banglasr6403Serbianzh2458Chinesear2125Arabicfr3976Frenchth5706Thaisr2358Serbianzh6119Chinesebn6524Banglaccp7142Chakmachr6834Cherokeechr5717Cherokeetr3011Turkishccp7907Chakmaccp3764Chakmaeo8060 Esperantoeo7120 Esperantobn5551Banglaar112Arabicen4147Englishel766Greekbn150Banglaccp6615Chakmael4390Greekru3092Russianiu468 Inuktitutbn3143Banglaeo955 Esperantosr3927Serbianchr6226Cherokeeeo3623 Esperantoru4092Russianru5112Russiansr302Serbianel8075Greekel5138Greekchr7502Cherokeeth7582Thaisr3273Serbianja5511Japaneseja2418Japaneseja6725Japanesetr2228Turkishchr2744Cherokeeccp793Chakmaeo2235 Esperantoes478Spanishja2236Japaneseen180Englishja7237Japaneseccp786Chakmael7000Greekel6972Greekel4813Greekzh1500Chineseel7273Greekru4873Russianfr7106Frenchen971Englishbn7044Banglabn4218Banglaeo2426 Esperantoes1190Spanishja140Japanesetr4598Turkishbn632Banglabn647Banglaen5313Englishth8166Thaiiu5504 Inuktituttr6902Turkishfr1283Frenchiu6248 Inuktitutth7474Thaija7999Japaneseth5315Thaija8079Japaneseeo4781 Esperantotr3308Turkisheo7400 Esperantoja6258Japaneseel3557Greekeo7144 Esperantoth1105Thaija7755Japanesear400Arabicchr5536Cherokeesr2521Serbianes4651Spanishes5523Spanishja1652Japaneseel2384Greekel2409Greekru5931Russianes7564Spanishiu2326 Inuktitutth3349Thaifr3515Frenchth7465Thaiel2269Greekar6671Arabicja4759Japaneseja5457Japanesebn6782Banglaccp7078Chakmaeo3880 Esperantoes260Spanishja4571Japaneseru7265Russianru2488Russianchr3015Cherokeeiu743 Inuktitutsr5891Serbianfr2184Frenchsr7803Serbianccp1726Chakmafr7401Frenchja2441Japaneseth4298Thaija7456Japaneseen6020Englishen7749Englishchr2677Cherokeeeo6808 Esperantoiu6786 Inuktitutsr4266Serbianzh5997Chinesetr6903Turkishen7965Englishes787Spanishth1937Thaien129Englishiu3084 Inuktitutccp4243Chakmabn2002Banglafr3161Frenchja5586Japaneseru4648Russianru5704Russianbn1940Banglatr4242Turkishes4845Spanishsr2780Serbianccp2295Chakmaes3388Spanishth2106Thaisr6889Serbianru852Russianar4545Arabicchr4291Cherokeesr1918Serbianiu2900 Inuktitutja1140Japanesetr518Turkishel3373Greekiu5984 Inuktitutth7385Thaiar1634Arabicbn3043Banglael597Greekfr5894Frenchccp445Chakmaiu7279 Inuktitutja661Japanesebn1960Banglaja792Japaneseiu756 Inuktituttr1757Turkishzh4288Chinesezh5473Chinesetr4169Turkishtr4554Turkishar6995Arabicru6398Russianel3921Greekja7776Japanesezh4915Chinesezh1677Chinesebn4447Banglael438Greekru811Russianja2401Japanesesr6020Serbianfr4921Frenchth1810Thaitr5286Turkishzh2798Chinesezh2067Chineseru1937Russiantr2737Turkishen2853Englishfr5406Frenchfr1509Frenchru911Russianar980Arabicsr7744Serbianzh599Chinesesr7594Serbianfr6872Frenchtr1024Turkishja2077Japanesechr4939Cherokeeen459Englishiu6105 Inuktituttr1127Turkishfr787Frenchsr2401Serbiansr6775Serbianar5152Arabicel7209Greekiu2896 Inuktitutel3936Greekbn6244Banglaccp6716Chakmasr5781Serbianth3259Thaibn2537Banglazh6504Chinesechr3485Cherokeeeo2644 Esperantobn2587Banglaes7856Spanishiu513 Inuktitutja857Japaneseiu6579 Inuktitutar5479Arabicel7371Greekeo7491 Esperantoar4408Arabicja7970Japanesees6382Spanishru7972Russianbn6525Banglachr807Cherokeees1877Spanishen6159Englishen7004Englishel5952Greekth7787Thaichr2585Cherokeear7788Arabiciu704 Inuktitutzh3497Chinesees2490Spanishar5246Arabicchr877Cherokeear1928Arabicja3833Japaneseeo2915 Esperantoja910Japaneseru7183Russiantr916Turkishtr6969Turkishzh4583Chineseiu5789 Inuktitutccp5338Chakmaen4305Englishccp4673Chakmath1358Thaifr4516Frenchtr2775Turkishccp2824Chakmaru4940Russianchr5246Cherokeeel6931Greeksr5120Serbianiu1645 Inuktitutchr7214Cherokeefr7801Frenchsr7538Serbianth2515Thaibn6077Banglaes6415Spanishtr5393Turkishar796Arabictr6289Turkishar2209Arabicccp4561Chakmazh7938Chineseiu416 Inuktitutru2108Russianzh2797Chineseeo3191 Esperantoru6355Russianccp946Chakmabn3736Banglaes1719Spanishar2332Arabices5622Spanishel1340Greekccp1533Chakmaja6964Japaneseru3745Russianbn6786Banglael6670Greekja4413Japanesear4692Arabiczh1920Chinesechr6640Cherokeeiu818 Inuktitutth18Thaija6168Japaneseel3341Greekbn1548Banglaja6099Japanesetr2814Turkishsr2832Serbianccp7033Chakmazh1473Chinesechr1224Cherokeeja138Japanesefr7822Frenchth5439Thaiccp3534Chakmachr4974Cherokeear3645Arabiceo2 Esperantoru4205Russiantr333Turkishtr1165Turkishiu1549 Inuktitutel1863Greektr5949Turkishel5867Greekccp2072Chakmaar1669Arabiciu5120 Inuktitutsr7084Serbianiu4949 Inuktitutel4861Greeken2117Englishen3853Englishel6373Greekzh6125Chineseccp6865Chakmafr5771Frenchiu5549 Inuktitutar956Arabicfr4506Frenches3631Spanishsr1779Serbianth1344Thaija6176Japanesees3314Spanisheo3527 Esperantotr3079Turkishfr4876Frencheo5172 Esperantochr3891Cherokeeel5152Greektr4147Turkisheo2654 Esperantoth8038Thaith5273Thaiccp1913Chakmatr170Turkishbn7109Banglaiu7832 Inuktitutel3585Greekar33Arabicccp2935Chakmael6352Greekfr1608Frenchen2186Englishja521Japanesetr1231Turkishja4422Japanesezh102Chinesefr1555Frenchth4910Thaiar3312Arabiceo2626 Esperantoccp1719Chakmath2534Thaija1141Japanesefr3880Frenchchr7637Cherokeechr3945Cherokeefr3139Frenchja7860Japaneseru5304Russianja7041Japaneseel5165Greekth3540Thaitr6192Turkishel1730Greekja4112Japaneseen6713Englishchr6386Cherokeear7561Arabices1969Spanishja5839Japaneseru7662Russiansr4549Serbianth1562Thaies2536Spanishccp4728Chakmaeo7369 Esperantoen6281Englishiu1967 Inuktitutth2253Thaibn2507Banglaiu7843 Inuktituttr4768Turkishzh86Chinesear2556Arabicja6595Japaneseiu3030 Inuktituten6460Englisheo1202 Esperantosr375Serbianchr4514Cherokeeth4314Thaien6703Englishiu6122 Inuktitutar693Arabicel7615Greeksr7698Serbianfr7371Frenchsr5257Serbianzh7652Chinesezh1198Chinesear427Arabicel333Greekth6813Thaiar7162Arabicth7521Thaibn18Banglabn7629Banglaeo1761 Esperantoes2852Spanishru5515Russianbn4068Banglatr2380Turkishfr3196Frenchja4864Japanesetr6790Turkishth5945Thaies900Spanishiu5203 Inuktitutbn643Banglatr772Turkishchr1987Cherokeeiu1984 Inuktitutzh2733Chinesechr2845Cherokeeth3023Thaiccp3867Chakmaiu6069 Inuktitutel3362Greekth7749Thairu5789Russianbn3414Banglaja518Japanesebn6263Banglael7334Greekru7998Russianel2930Greekfr875Frenchccp4541Chakmabn243Banglael3109Greekccp6638Chakmatr6652Turkishth5187Thaith2048Thaizh42Chinesechr3755Cherokeebn4750Banglafr6290Frenchccp4899Chakmaru5453Russianccp852Chakmael503Greekru658Russianes4354Spanishja6228Japanesetr1259Turkishfr3754Frenchiu5240 Inuktitutar2061Arabicfr3847Frenchzh1612Chinesechr4164Cherokeezh313Chineseen4342Englisheo3216 Esperantozh3078Chinesebn5071Banglaiu7322 Inuktituttr2648Turkishccp6327Chakmafr7845Frenches3664Spanishccp4843Chakmachr6667Cherokeesr20Serbiansr3367Serbianchr3064Cherokeechr5577Cherokeezh1740Chineseeo1363 Esperantoja7508Japaneseccp7523Chakmaja7997Japanesesr5729Serbianfr5752Frenches4265Spanishen3797Englishth2071Thairu5322Russianth5076Thaichr3037Cherokeebn7757Banglazh5760Chineseen677Englishel4517Greekiu2135 Inuktitutar1192Arabicfr4803Frenchja8051Japanesesr2240Serbianth6791Thaien774Englishja6592Japaneseja1321Japanesesr1207Serbianiu2742 Inuktitutth892Thaies673Spanishth3598Thaiel3544Greekel2747Greekeo3935 Esperantoja5566Japanesetr6207Turkisheo4418 Esperantosr1077Serbianeo389 Esperantotr3601Turkishfr1155Frenchth6978Thaibn4049Banglatr4625Turkishfr4334Frenchbn6785Banglaiu4305 Inuktitutja6382Japaneseja6525Japaneseru6664Russianel5032Greekth2389Thaizh5539Chinesetr1181Turkishtr7904Turkishth5621Thaibn2885Banglaru5968Russianccp4826Chakmael6542Greekfr6551Frenchen427Englishen1149Englishfr4692Frenchccp5806Chakmaen5308Englishsr5639Serbianiu4534 Inuktitutiu7629 Inuktitutbn1819Banglael3000Greekccp5157Chakmael2797Greekru4826Russiantr1484Turkisheo6294 Esperantotr3443Turkishel4795Greekfr809Frenchiu4085 Inuktitutiu5247 Inuktitutes4095Spanishja5515Japaneseth5559Thaifr6647Frencheo4444 Esperantoru6441Russianzh2474Chineseeo8021 Esperantoccp7982Chakmael3026Greekru2722Russianth1116Thaieo1833 Esperantoth7669Thaiar2612Arabicchr5943Cherokeezh1349Chineseru3719Russianchr5519Cherokeezh4673Chinesees3353Spanishfr413Frenchiu1970 Inuktitutiu6249 Inuktitutth3573Thaith2665Thaitr7016Turkishar2374Arabiciu3361 Inuktitutru2905Russianccp1267Chakmaru3219Russianfr3409Frenchbn5204Banglabn4329Banglaru4125Russianiu885 Inuktitutchr1662Cherokeeja5700Japaneseja186Japaneseru4293Russianiu56 Inuktituttr5040Turkisheo1433 Esperantoar6778Arabiceo1758 Esperantofr3394Frenchbn5730Banglaccp3085Chakmaar2045Arabicel3279Greekth366Thaisr51Serbianeo4095 Esperantoar3369Arabiczh4110Chinesefr2272Frenchbn6974Banglazh7645Chineseel4931Greekeo170 Esperantoccp7427Chakmaja1919Japanesechr7583Cherokeeth1852Thaitr5882Turkishru917Russianccp2000Chakmaen8095Englishel2579Greekja2170Japaneseel6850Greektr4924Turkishzh6537Chineseiu5636 Inuktitutru4310Russianfr98Frenches2873Spanishru1932Russianchr4503Cherokeeel5385Greeksr3338Serbianccp813Chakmaiu79 Inuktitutzh6492Chineseiu2539 Inuktitutru5449Russianen6689Englishbn3752Banglaiu242 Inuktitutru4528Russianel4810Greekth4587Thaibn2912Banglafr3077Frenchbn4032Banglaes1428Spanishen5591Englishes6110Spanishja7197Japaneseja6259Japanesees1998Spanishru202Russianth1849Thaies7744Spanishchr5182Cherokeebn4352Banglaen4181Englishru4595Russianzh5611Chineseiu3107 Inuktitutzh640Chineseeo483 Esperantoja59Japaneseel1567Greekes6893Spanishfr5380Frenchsr7234Serbianel2270Greekja1749Japanesetr265Turkishar2754Arabicchr175Cherokeeccp7902Chakmafr5739Frenchzh5264Chinesear4339Arabiciu4718 Inuktitutchr2039Cherokeezh5290Chineseel5045Greekeo2476 Esperantoccp4802Chakmaar894Arabicsr3241Serbianchr1377Cherokeechr5542Cherokeeth7755Thaith691Thaizh4251Chineseja3109Japanesechr730Cherokeetr88Turkishes1184Spanishsr5878Serbianja4668Japanesetr5778Turkishsr7608Serbianbn7033Banglaes1734Spanishen6326Englisheo4129 Esperantoes2007Spanishes5216Spanishzh2631Chinesetr1303Turkishfr2444Frenchchr5386Cherokeeeo6720 Esperantoccp7779Chakmaar4350Arabicja6078Japanesear6799Arabicth7022Thaiiu4034 Inuktitutiu7779 Inuktitutiu724 Inuktitutes7683Spanishja2110Japaneseja5289Japanesear111Arabicru1730Russianel718Greekchr693Cherokeeja1768Japaneseth1525Thaisr243Serbianccp920Chakmatr897Turkishzh2995Chineseru803Russianes6548Spanishel5815Greekeo3182 Esperantobn5073Banglael6820Greekja7106Japaneseiu1684 Inuktitutfr2577Frenchth6421Thaien7560Englishth2659Thaith6747Thaith3749Thaizh4744Chineseeo2240 Esperantoel284Greekel4817Greekja5156Japanesefr3737Frenchiu6224 Inuktitutiu6974 Inuktitutiu1026 Inuktitutja5121Japanesezh3090Chinesezh3416Chinesezh5505Chineseiu5863 Inuktitutja1194Japanesebn2527Banglaar5584Arabicchr4492Cherokeeru1169Russianchr3540Cherokeeiu5615 Inuktitutru1331Russianar6939Arabicru1858Russianth3266Thaien2370Englishja578Japaneseeo7688 Esperantoiu3041 Inuktitutsr2417Serbianes2133Spanishsr8189Serbianccp6189Chakmaja219Japaneseru3427Russianja1734Japaneseeo2461 Esperantoccp5786Chakmaar6545Arabicchr5663Cherokeefr2523Frenchiu7493 Inuktitutth3866Thairu4400Russianru2089Russianru7239Russiansr6584Serbianiu5697 Inuktitutth4277Thaieo4123 Esperantoru4848Russiantr6383Turkishsr120Serbianel6118Greekchr1672Cherokeeen7114Englishen4394Englishja7400Japanesees3179Spanishsr2701Serbiansr3364Serbianccp1915Chakmael2068Greekiu7563 Inuktitutiu6228 Inuktitutru2417Russianzh4541Chinesechr4953Cherokeeen7661Englishchr3158Cherokeechr7877Cherokeeiu2321 Inuktitutsr7283Serbianfr4423Frenchzh2037Chineseen2017Englishchr2614Cherokeefr4167Frenchccp7520Chakmasr4068Serbianiu3839 Inuktitutru1644Russianru5007Russianbn5242Banglazh5982Chineseiu122 Inuktituten6899Englishchr4955Cherokeeeo3630 Esperantoeo6583 Esperantobn6780Banglafr1620Frenchtr5628Turkishth1919Thaieo3996 Esperantoeo4434 Esperantoja8085Japanesebn6020Banglabn5888Banglaen7813Englishru378Russianru1795Russianen670Englishtr8087Turkishel2878Greekru8187Russianen897Englishar4927Arabices6706Spanishth6722Thaisr6900Serbianiu7399 Inuktitutth2511Thaija5965Japaneseru4692Russianru4792Russianja6067Japanesetr2449Turkishja896Japaneseth7837Thaies4252Spanishzh2873Chinesefr7070Frenchru1715Russianiu217 Inuktitutth5609Thaichr437Cherokeezh3231Chinesechr26Cherokeebn2090Banglafr2709Frenchth4334Thaith6372Thaichr4393Cherokeees5036Spanishes3782Spanishccp5360Chakmasr2475Serbiansr4948Serbianel760Greekel5797Greekes1417Spanishfr1330Frenchja5770Japaneseru5937Russianth4739Thaibn3096Banglaeo1981 Esperantofr859Frenchth3163Thaitr8020Turkishccp6578Chakmath3104Thaisr4101Serbianen1941Englishel5343Greekru1612Russianiu4036 Inuktituten4484Englishchr2685Cherokeebn7555Banglasr1407Serbianes2891Spanishbn7185Banglaja3269Japanesebn659Banglaru8176Russianen3052Englishzh3860Chinesefr1271Frenchsr4937Serbiantr4247Turkishsr4520Serbiantr1407Turkishja21Japanesesr5972Serbianchr7657Cherokeefr3765Frenchchr5342Cherokeetr4321Turkishzh3826Chineseiu7915 Inuktitutsr5321Serbianzh7431Chineseiu6734 Inuktitutchr8165Cherokeeen7364Englishiu5494 Inuktitutel4154Greekccp5225Chakmachr5771Cherokeeeo5864 Esperantoja4440Japaneseen207Englishth5497Thaiiu2988 Inuktitutiu350 Inuktitutfr5871Frenchiu3315 Inuktitutja2029Japanesees4503Spanishccp7440Chakmael3607Greektr1371Turkishtr5786Turkishar2310Arabicja6090Japanesetr2827Turkishzh898Chineseth233Thaibn3792Banglazh187Chinesezh7383Chineseru1436Russianar4410Arabiceo2602 Esperantotr4811Turkishfr4364Frenchja5135Japanesesr5165Serbianth5704Thaies4859Spanishth4453Thaien3774Englishar4103Arabicja5595Japanesebn1774Banglaja7069Japaneseru3448Russiantr710Turkishel5702Greekbn601Banglaar5920Arabicchr3750Cherokeeccp3023Chakmael6495Greekeo1476 Esperantoccp7526Chakmafr1443Frenchzh1451Chinesezh5691Chineseccp1235Chakmath2021Thaisr2569Serbianccp4872Chakmasr2007Serbianth1374Thaisr1320Serbianar5018Arabicel7540Greekru5989Russianar4527Arabiczh4048Chinesefr2397Frenches3018Spanishja5292Japanesear4556Arabicsr5740Serbianth644Thaiccp6822Chakmaes1609Spanishja6077Japaneseen3559Englishfr2462Frenchru7100Russianzh4293Chineseeo5757 Esperantosr5528Serbianar2623Arabicel3516Greeken3282Englisheo7198 Esperantoel5640Greekel943Greekja2747Japaneseeo5651 Esperantoja6089Japaneseru3641Russianzh6674Chineseiu1058 Inuktitutbn1759Banglaja7408Japanesezh4663Chineseja968Japanesebn977Banglaja1298Japaneseccp3614Chakmael5990Greekchr7955Cherokeeeo5609 Esperantoel3065Greekja6930Japanesesr7419Serbianbn2707Banglasr5813Serbianbn4561Banglael1444Greekeo250 Esperantoru7025Russianth3493Thaitr6742Turkishja2681Japaneseen5237Englishth4Thaija4256Japaneseru6156Russianzh5687Chinesebn2241Banglasr3957Serbianen895Englishth6051Thaisr224Serbianen3639Englishes784Spanishiu7817 Inuktitutccp1623Chakmafr1988Frenchzh1796Chineseel6609Greekja5037Japanesebn547Banglaccp4304Chakmaen4794Englishchr4793Cherokeear3613Arabicth506Thaitr4157Turkishbn499Banglafr248Frenchja6982Japaneseccp4595Chakmazh4447Chinesefr4992Frenchsr210Serbianth3980Thaiar7797Arabicel1722Greektr5972Turkishccp661Chakmabn771Banglabn7875Banglath5051Thaiiu2762 Inuktitutccp6146Chakmaar6859Arabicbn6582Banglachr432Cherokeeccp2486Chakmafr5509Frenchiu3889 Inuktituttr5408Turkishen1573Englishiu952 Inuktitutchr7444Cherokeeccp1853Chakmaeo4646 Esperantoes7394Spanishth7519Thaija7428Japanesebn2442Banglazh2244Chineseiu3534 Inuktitutsr7410Serbianbn2020Banglaru7475Russianja7404Japaneseen4263Englishel6439Greekiu6397 Inuktitutar5490Arabiceo2132 Esperantoiu5870 Inuktitutja443Japanesear253Arabicar7329Arabiciu3647 Inuktitutsr3105Serbianen7385Englishtr4382Turkishzh3712Chinesechr6693Cherokeeru2296Russianth7015Thaieo6320 Esperantoel7654Greekru4439Russiantr260Turkishth2302Thaiar4113Arabicel7364Greekbn3972Banglaiu1166 Inuktitutccp4308Chakmabn3851Banglath2370Thaies6836Spanishbn7431Banglaru4651Russianar3809Arabicth1415Thaiar3598Arabicth7253Thaiar2031Arabicru333Russianccp2225Chakmafr6895Frenchsr4146Serbiansr2301Serbiansr1413Serbianen6024Englishar5564Arabicth5156Thaien4529Englishja3483Japanesechr4659Cherokeefr1529Frenchchr2394Cherokeeccp1144Chakmaar7753Arabicel6457Greeken5595Englishru916Russiansr1579Serbianru42Russianeo3783 Esperantotr2286Turkishccp1831Chakmachr5866Cherokeeja1347Japanesesr3626Serbianru6121Russianar7987Arabiceo2379 Esperantoel2600Greekar2334Arabicar5293Arabicel6049Greekeo2727 Esperantoja3451Japaneseiu582 Inuktitutiu1565 Inuktitutbn5094Banglaen6682Englishsr1837Serbianeo1386 Esperantoth5086Thaiccp5898Chakmath1560Thaibn3079Banglazh2338Chineseen3709Englishfr1191Frenchru2336Russianru1080Russiantr5030Turkishzh818Chineseja4387Japanesefr7606Frenchfr4143Frenchtr8124Turkishja4629Japanesear711Arabicar4104Arabicbn715Banglabn962Banglabn5220Banglael7225Greekeo6919 Esperantofr4953Frenchen7868Englishzh5239Chineseth2852Thaiel6727Greekfr3395Frenches3453Spanishccp566Chakmatr307Turkisheo7108 Esperantozh7716Chineseru6137Russiantr5129Turkishen3054Englishsr2983Serbianiu4883 Inuktitutth6004Thaizh1818Chinesesr2807Serbianar6006Arabiceo4679 Esperantoja7402Japanesechr4589Cherokeees305Spanishar6081Arabicbn1288Banglachr703Cherokeeel4749Greekchr4792Cherokeeeo4776 Esperantoiu2084 Inuktitutja55Japaneseru2909Russianth4982Thaiar1205Arabiceo5277 Esperantoel975Greekar1479Arabictr6724Turkishiu3660 Inuktitutzh6613Chinesezh2116Chinesees6804Spanishccp6685Chakmabn483Banglafr4554Frenchfr7991Frenchth449Thaiccp435Chakmaar5777Arabicja4740Japaneseeo633 Esperantoru4388Russianchr753Cherokeeen4527Englishbn1800Banglafr3253Frenchel4427Greeken2868Englishchr3656Cherokeebn2344Banglael7078Greekfr3817Frencheo573 Esperantoccp4803Chakmatr1676Turkishen3274Englishiu5115 Inuktitutes2167Spanishth4342Thaiar1076Arabiciu4897 Inuktitutfr3768Frenchru1040Russianccp2651Chakmael368Greeken6064Englishzh698Chineseccp2897Chakmabn650Banglabn6327Banglaes6965Spanishiu5815 Inuktitutja7625Japanesebn5809Banglafr375Frenchel3987Greekfr7813Frenchru7938Russiantr4006Turkishtr7719Turkishes7989Spanishfr7792Frenchtr3600Turkishar753Arabicar3103Arabicar4171Arabicen7203Englishru3424Russianchr5200Cherokeeja5920Japaneseel41Greekru6468Russianeo4889 Esperantoth7403Thaizh1437Chinesefr3145Frenchja4454Japanesees5719Spanishccp5956Chakmael5779Greekar5648Arabicsr6055Serbianiu5074 Inuktitutja7596Japanesefr6822Frenchtr4008Turkishar1972Arabicbn6720Banglatr1745Turkishiu1930 Inuktitutzh33Chineseiu4519 Inuktitutar4001Arabiceo2755 Esperantofr4446Frenchru1977Russiantr7699Turkishru245Russianel3212Greeksr4551Serbianfr6245Frenchfr2227Frenchja2188Japanesesr287Serbianes7957Spanishsr551Serbiansr1933Serbianzh4379Chinesees412Spanishen6340Englishchr611Cherokeeccp6648Chakmaar4112Arabicel280Greeksr510Serbianzh2763Chinesebn3923Banglafr3252Frenchen2058Englishsr7497Serbianchr2846Cherokeeel6050Greekja1838Japanesezh8189Chinesees334Spanishel4008Greektr5234Turkishtr6644Turkishth2546Thaitr4821Turkishth1571Thaibn7528Banglabn4758Banglaeo1976 Esperantoth1473Thaiiu464 Inuktitutccp3236Chakmazh8025Chineseen384Englishel1816Greeksr4739Serbiansr4450Serbiansr5137Serbiansr2456Serbiantr4909Turkishru3245Russianes5476Spanishzh2520Chinesetr7175Turkishth4794Thaisr7566Serbianzh4027Chineseth6521Thaien4221Englishen4499Englishth240Thaisr6997Serbianzh3721Chineseccp1761Chakmasr1317Serbianen4143Englishel3686Greekzh3734Chineseel2058Greekel3656Greekiu1607 Inuktituttr4361Turkishccp3313Chakmafr593Frenchzh6651Chineseeo809 Esperantozh7892Chinesetr4826Turkishsr535Serbianchr7794Cherokeeeo7385 Esperantoja6377Japaneseru2743Russianbn7530Banglabn1382Banglabn3890Banglaru4981Russianel2083Greekchr1692Cherokeear6009Arabicsr5982Serbianchr2992Cherokeeth207Thaiiu2987 Inuktitutth3784Thaitr4428Turkishfr5253Frenchtr8009Turkishchr4608Cherokeeiu5842 Inuktitutes2369Spanishar4328Arabicth339Thairu492Russianzh5759Chinesebn564Banglabn6065Banglaeo813 Esperantoth3543Thaitr1495Turkishar5068Arabicel2255Greekru679Russianar7029Arabicsr6552Serbianar3170Arabicru3347Russianeo7126 Esperantoth3742Thaies5049Spanishiu2021 Inuktituteo3083 Esperantoru5601Russianja4179Japaneseen5061Englishsr3772Serbianeo5871 Esperantochr6152Cherokeear668Arabicbn3886Banglael4163Greekiu4827 Inuktitutar5520Arabicchr4959Cherokeetr659Turkishen6952Englishtr5144Turkishchr2590Cherokeebn1253Banglaccp4955Chakmaes3205Spanishiu5379 Inuktituttr2279Turkishen2998Englishiu3231 Inuktitutchr7423Cherokeezh866Chineseru2936Russianth863Thaieo5624 Esperantoja2531Japanesear5927Arabicen4772Englishel6556Greekja1207Japaneseiu603 Inuktituttr2046Turkisheo3974 Esperantoes6195Spanishja310Japanesechr603Cherokeebn222Banglaes3490Spanishru7097Russianes4524Spanishccp4179Chakmath1817Thairu6283Russiansr6686Serbianar2741Arabices2631Spanishchr5153Cherokeeeo7970 Esperantoiu3354 Inuktituten4493Englishja4058Japaneseru55Russianzh2867Chineseth8101Thaien1854Englishtr1250Turkishru6048Russianen1950Englishsr290Serbianiu3357 Inuktitutiu720 Inuktitutbn3788Banglaru5265Russianen6136Englishfr7920Frenchel5058Greekja1085Japanesetr7343Turkishen7407Englishar6653Arabicchr6990Cherokeeeo4835 Esperantoar5086Arabicccp3123Chakmachr3826Cherokeesr4484Serbianja7574Japaneseiu1894 Inuktitutbn3727Banglaccp6160Chakmaes1084Spanishen4942Englishfr2889Frenchtr1401Turkishth3242Thaifr8106Frenchtr3205Turkisheo4183 Esperantosr7721Serbianeo418 Esperantotr7219Turkishen7475Englishel2982Greekar1333Arabicar2801Arabicbn2937Banglaen1490Englishen2905Englishth6113Thaichr2861Cherokeetr1850Turkishru4396Russianeo5699 Esperantobn2149Banglaen7031Englishru5736Russiantr5536Turkishru2741Russianru7312Russiansr3057Serbianen6249Englishccp5320Chakmaar6053Arabicru6769Russiantr645Turkishchr7615Cherokeesr3573Serbianzh5658Chinesetr1983Turkishen3497Englishbn2194Banglaccp6771Chakmaiu251 Inuktitutiu7724 Inuktituten668Englishth2186Thaifr559Frenchja1248Japaneseru2405Russianar7875Arabicccp3687Chakmaes7743Spanishfr3282Frenchzh2578Chineseccp7667Chakmaiu5281 Inuktitutbn978Banglaeo5611 Esperantosr505Serbianzh3155Chinesefr6849Frenchar90Arabiczh81Chineseccp2583Chakmael3938Greekja3953Japaneseth7034Thaiiu3309 Inuktituttr7181Turkishth5845Thaitr1169Turkishchr6461Cherokeeen8098Englishccp3115Chakmaru1945Russianiu6439 Inuktitutzh7485Chinesebn5988Banglazh2033Chinesear5151Arabicel4175Greekbn7Banglael7288Greekbn91Banglaen1701Englishes6212Spanishes7488Spanishth7158Thairu6025Russiantr7128Turkishar3005Arabiczh8049Chineseen7625Englishja4042Japaneseccp6383Chakmasr4775Serbianeo2533 Esperantoen6707Englishen2552Englishel1801Greekeo3723 Esperantobn125Banglaes5752Spanishen5064Englishfr3144Frenches7305Spanishiu4636 Inuktitutel3194Greeksr3869Serbianth6847Thaith3664Thaichr597Cherokeear5395Arabiceo6641 Esperantozh694Chinesees1470Spanishfr6367Frencheo454 Esperantoes3001Spanishru3279Russianzh3573Chinesear6539Arabicchr2270Cherokeefr6384Frencheo1553 Esperantoja3726Japaneseiu2833 Inuktitutel3460Greekja4424Japaneseru5227Russianar1510Arabicbn4869Banglachr3339Cherokeeel4737Greekfr3721Frenchja5276Japanesechr5290Cherokeefr7654Frenchsr1403Serbianes3055Spanishen3434Englishtr2433Turkishccp1968Chakmath844Thaichr4491Cherokeechr6164Cherokeebn5939Banglaeo3707 Esperantoen4733Englisheo7452 Esperantoiu4923 Inuktitutzh7911Chineseja6831Japaneseiu4389 Inuktitutccp1345Chakmatr3500Turkishth5924Thaiiu1007 Inuktitutes3695Spanishtr6501Turkishchr7935Cherokeechr2806Cherokeefr1282Frenchzh324Chinesechr7143Cherokeeja2491Japanesees5647Spanishes2532Spanishsr3267Serbiansr4758Serbianccp1988Chakmaar3628Arabiciu899 Inuktitutel2470Greeken7156Englishchr6049Cherokeeccp3601Chakmaccp7282Chakmabn5454Banglaar8161Arabicbn5442Banglael6777Greekeo233 Esperantotr7774Turkishth5340Thaith336Thaichr2428Cherokeeeo5977 Esperantofr5835Frencheo5410 Esperantozh939Chinesebn2931Banglael3432Greekel5642Greekfr2934Frenchfr1712Frenchiu4423 Inuktitutel1658Greekccp3320Chakmael1759Greekja1159Japanesesr7707Serbianen724Englishfr7423Frenchtr5441Turkishbn1287Banglaccp7885Chakmaeo7176 Esperantofr6552Frenchfr1460Frenchar3810Arabicsr2845Serbianth4008Thaiel1054Greekth7573Thaiiu6272 Inuktitutth2283Thaith4566Thaien6526Englishel1335Greekar218Arabicsr524Serbianth7104Thairu3955Russianccp3763Chakmath4398Thaiccp3916Chakmatr5959Turkishja6963Japanesefr6970Frenchchr379Cherokeeiu1280 Inuktituttr7455Turkishen7192Englishccp3112Chakmafr1313Frenchzh1560Chinesezh5427Chineseccp4833Chakmaen4672Englishfr243Frenchru105Russianbn2643Banglaccp1744Chakmaes4849Spanishes4583Spanishiu3771 Inuktitutchr4410Cherokeetr13Turkishzh763Chineseel2598Greekar4438Arabicen2992Englishru3872Russianru4465Russianeo2959 Esperantobn6359Banglaen5013Englishes2131Spanishzh7075Chinesesr2772Serbianccp2863Chakmafr1050Frenchbn3307Banglaen6372Englishzh7388Chinesechr756Cherokeeth7299Thaiar4268Arabicel6064Greektr2247Turkishzh6728Chinesear7332Arabicar3599Arabicen7146Englishru2393Russianeo4596 Esperantofr7707Frenchzh6434Chinesefr5908Frencheo2371 Esperantoth95Thaiccp3896Chakmasr2824Serbianja5718Japaneseen5355Englisheo1759 Esperantochr1665Cherokeeel3843Greeksr4856Serbianeo5398 Esperantozh5814Chineseiu5387 Inuktitutchr747Cherokeechr5606Cherokeeru4994Russianeo5953 Esperantoru5090Russianja2754Japaneseru5760Russianzh3567Chineseja5660Japaneseth5777Thaies1464Spanishzh1992Chineseel669Greekfr2293Frenchsr6633Serbianchr3069Cherokeetr2677Turkishbn7445Banglabn8074Banglaeo6233 Esperantofr2634Frenchru2432Russianchr6275Cherokeeen4769Englishja8165Japaneseel4689Greekchr5374Cherokeear1898Arabictr556Turkishen1899Englishes2124Spanishbn1854Banglazh924Chinesefr5818Frenchiu2787 Inuktitutbn2645Banglaes5631Spanishes4921Spanishiu3385 Inuktitutfr2662Frenches3462Spanishchr6205Cherokeetr6256Turkishzh6735Chineseth617Thaith3576Thaija4229Japanesechr1425Cherokeeth7864Thairu2072Russiansr4529Serbianth3652Thaifr7969Frenchja5636Japanesechr203Cherokeefr1450Frenchsr2365Serbianja1070Japaneseru6825Russianja6565Japaneseccp150Chakmaja5486Japanesefr8156Frenchzh3751Chineseel95Greekbn2534Banglatr5220Turkishbn3827Banglaccp6434Chakmaru5773Russianzh2957Chinesear3301Arabicru2188Russianja7093Japanesesr6522Serbianzh3704Chineseel4826Greekja5041Japanesechr2757Cherokeebn4636Banglachr2546Cherokeechr4480Cherokeetr1162Turkishru234Russianru6820Russianfr2864Frenchccp1943Chakmatr7868Turkisheo1306 Esperantozh4947Chinesees6862Spanishes741Spanishes2589Spanishth3674Thaija6105Japanesezh117Chineseja5887Japaneseeo1564 Esperantozh5664Chinesear4006Arabicar3653Arabicccp5653Chakmaja6797Japanesechr3564Cherokeesr5388Serbianru1610Russianzh6684Chineseeo3050 Esperantoth6975Thaizh6800Chinesebn911Banglaru7893Russianel4925Greeksr6965Serbianccp4869Chakmaeo3345 Esperantoeo4 Esperantoar4842Arabicja523Japanesesr3457Serbiantr7050Turkishzh2137Chinesesr7825Serbiantr1552Turkishfr6192Frenches2013Spanishccp4363Chakmaiu363 Inuktitutes3773Spanisheo7595 Esperantoth5000Thaien8004Englishes32Spanishru7957Russianth4663Thaieo2285 Esperantosr7827Serbianccp2181Chakmaru5435Russianfr7011Frenchth2129Thaitr5741Turkisheo5494 Esperantoes6820Spanishiu563 Inuktitutsr742Serbianes1737Spanishfr1476Frenchru6284Russiansr643Serbiansr2632Serbiansr1785Serbianiu1238 Inuktitutzh5377Chinesetr107Turkishja2791Japanesefr4881Frenchccp2410Chakmasr4680Serbianar3763Arabiciu132 Inuktitutru6702Russianchr7109Cherokeefr389Frenchiu7151 Inuktituteo5055 Esperantoth3210Thaiccp5865Chakmaja7519Japanesesr4062Serbianccp1946Chakmachr1571Cherokeebn3277Banglafr1332Frenchar564Arabicar8062Arabicel7447Greekru6697Russianja3941Japaneseru6600Russianar5317Arabiceo3431 Esperantosr7849Serbianja1003Japanesezh288Chinesezh1958Chinesefr4455Frenchar604Arabicel6548Greekbn1118Banglabn3614Banglael6729Greekru3674Russianen1917Englishtr132Turkishes3677Spanishiu5884 Inuktitutbn6543Banglaiu5699 Inuktituten7612Englishchr3960Cherokeechr2502Cherokeetr6754Turkishccp3065Chakmaeo4248 Esperantozh5051Chineseccp6510Chakmaeo2831 Esperantofr5842Frenchzh2956Chinesear3760Arabicsr3920Serbianru3197Russianen2177Englishru4342Russianru3060Russianru3039Russianzh3544Chinesear2979Arabictr8104Turkishchr5806Cherokeeru2735Russianth3705Thaiel7101Greekiu253 Inuktitutar3572Arabicar665Arabicar4365Arabiciu78 Inuktitutru2747Russianru2971Russianth7664Thaieo8121 Esperantofr6654Frenchiu962 Inuktituttr7489Turkishiu8073 Inuktitutfr2475Frenchiu6379 Inuktitutfr6920Frenchchr6750Cherokeees4605Spanishzh1551Chineseja6267Japanesechr8097Cherokeefr4576Frenchja2041Japanesebn6471Banglaiu7306 Inuktituttr4474Turkishth5753Thaifr4031Frenchccp198Chakmaja425Japanesechr5916Cherokeeen6764Englishen5696Englishzh923Chinesetr5334Turkishzh2123Chineseth838Thaiar4199Arabicen3144Englishiu5869 Inuktitutzh6579Chineseth402Thaifr3761Frenchfr2680Frenchzh7626Chineseiu2912 Inuktitutes2862Spanishja1208Japanesechr1600Cherokeeen6213Englishru851Russianccp6886Chakmaar7626Arabicel2085Greekeo6624 Esperantoel2859Greekfr2539Frenchth1210Thaifr5525Frenchccp252Chakmael3592Greekfr3040Frenchen5017Englishsr3811Serbianar4077Arabicsr5465Serbianru4188Russianen1380Englishar436Arabicbn453Banglaes6156Spanisheo5605 Esperantofr7630Frenchen4858Englishar2838Arabiczh7085Chineseen4458Englishtr5962Turkisheo1481 Esperantoth6154Thaiar3499Arabicchr355Cherokeeja5382Japaneseen7701Englishfr591Frenchchr4516Cherokeetr5504Turkishfr5376Frenchru2098Russianel1137Greekel4978Greektr6699Turkishel6316Greekccp276Chakmaes5964Spanishchr4486Cherokeesr8190Serbianru6405Russianccp6317Chakmath4864Thaisr1628Serbianth5807Thaieo4458 Esperantoja2396Japanesesr6024Serbianchr5709Cherokeeth1058Thairu856Russianzh934Chineseeo1234 Esperantoccp1967Chakmaiu6877 Inuktitutbn1237Banglaeo1088 Esperantoiu4648 Inuktituten8100Englishiu1731 Inuktitutru5666Russianiu8171 Inuktitutth839Thaibn3592Banglaen5405Englishzh7126Chinesechr668Cherokeeccp3103Chakmaes3130Spanishtr5235Turkishiu4742 Inuktitutel1305Greekel1873Greekeo3696 Esperantosr4804Serbiansr7677Serbianen7053Englishfr564Frenchzh552Chineseru3138Russianzh3189Chinesechr5673Cherokeeccp6426Chakmaccp6190Chakmaes7908Spanishes4124Spanishsr1533Serbianen3946Englishtr1914Turkishtr4647Turkishzh617Chineseth3906Thaizh6958Chineseja3670Japaneseccp79Chakmachr6399Cherokeeccp4776Chakmazh6730Chinesees686Spanishar7321Arabicja583Japaneseeo5566 Esperantosr4770Serbianbn8073Banglaiu7398 Inuktitutsr4284Serbianar5406Arabicen2542Englishfr78Frenchth3438Thaiel6528Greekru745Russianbn8011Banglabn4949Banglaiu5674 Inuktitutja6448Japanesear5712Arabicbn665Banglael2890Greekchr5896Cherokeesr2038Serbianeo6644 Esperantoes1889Spanishsr6608Serbianen3796Englishiu7768 Inuktitutccp4491Chakmaes7164Spanishth5676Thaiccp6612Chakmael7042Greekchr3033Cherokeeel7190Greekja7941Japaneseiu3489 Inuktitutar7103Arabicen1765Englishbn3266Banglaen3778Englishsr2218Serbianccp6479Chakmachr7547Cherokeechr6678Cherokeeth5467Thaizh1993Chinesezh2706Chinesebn8095Banglafr4857Frenches3458Spanishtr5415Turkishccp4197Chakmaes1493Spanisheo1276 Esperantofr5753Frenchar6202Arabicchr2605Cherokeeja4502Japaneseja5652Japanesebn65Banglaja974Japanesesr2795Serbianth4940Thaiar6748Arabices5546Spanishes7736Spanishes5970Spanishes6474Spanishth4945Thaiccp4126Chakmaen3368Englishes1013Spanishzh5247Chineseja2729Japaneseeo486 Esperantoru4121Russianzh5101Chinesees2071Spanishes3169Spanishel7299Greekchr2515Cherokeeja7274Japanesezh1323Chinesefr6374Frenchsr7252Serbianel3893Greekar3307Arabicth5125Thaichr7040Cherokeeiu5400 Inuktitutbn6946Banglaeo7792 Esperantozh4175Chineseth6870Thaieo816 Esperantoccp4573Chakmabn1766Banglafr2486Frenchel2198Greeksr1504Serbiantr1Turkishchr5711Cherokeeja4880Japaneseja6792Japaneseeo6201 Esperantobn1841Banglasr1572Serbianru4050Russianes6611Spanishel6775Greekchr3282Cherokeees1433Spanishja5397Japaneseccp1631Chakmaen1953Englishen3816Englishja4655Japanesebn7340Banglaen7639Englisheo6741 Esperantofr1336Frenchel5287Greeken689Englishen5145Englishen2721Englishchr5690Cherokeesr2109Serbianar6114Arabicchr6717Cherokeefr3091Frenchtr1761Turkishar2294Arabicel111Greeksr1698Serbianru1770Russianbn7979Banglaar4971Arabiceo1554 Esperantoeo179 Esperantoru1359Russianar1321Arabicccp2169Chakmael462Greekccp3638Chakmabn6683Banglabn3859Banglafr1422Frenchtr5596Turkishtr6360Turkishru5940Russianth5442Thaiiu5075 Inuktitutth7023Thaisr3146Serbiantr149Turkishchr7863Cherokeebn7364Banglazh590Chineseen7044Englishsr4659Serbianbn2445Banglafr8103Frenchja4464Japanesear5965Arabiceo1463 Esperantoru7447Russianbn5330Banglaar7221Arabicen1574Englishccp7588Chakmabn3458Banglaeo566 Esperantosr204Serbianar407Arabiceo5294 Esperantosr2925Serbianth4641Thaibn4858Banglaeo1598 Esperantoiu836 Inuktituttr4486Turkishtr4991Turkishth6976Thairu390Russianth6437Thairu893Russianiu865 Inuktitutzh5824Chinesechr2625Cherokeeth5862Thaizh3545Chinesesr2149Serbianzh122Chinesebn872Banglachr1828Cherokeefr4180Frenchtr1616Turkishtr7185Turkishen7341Englishiu1928 Inuktitutel7736Greekel6485Greekeo3066 Esperantoel2331Greekzh1010Chinesear3341Arabiceo6682 Esperantotr1515Turkishel4966Greektr1788Turkishccp4222Chakmaeo7697 Esperantotr5395Turkishccp6343Chakmachr1664Cherokeechr7018Cherokeeth1916Thaies1016Spanishtr8151Turkishja4227Japanesetr1727Turkishchr5044Cherokeeen1893Englishes4482Spanishel826Greekbn3844Banglaccp1999Chakmaiu659 Inuktitutes2542Spanishbn4405Banglafr7271Frenchru6074Russianes2276Spanishth860Thaies3734Spanishfr4394Frenchja1690Japanesefr1810Frenchel4974Greekiu6643 Inuktitutbn6875Banglatr3651Turkishfr2638Frencheo2440 Esperantosr7922Serbianel383Greekccp7080Chakmaes7331Spanishfr5918Frenchru4300Russianel1639Greekeo4470 Esperantoja5072Japanesear7263Arabiczh3055Chinesezh355Chineseeo6344 Esperantozh3637Chinesezh4797Chinesebn5782Banglazh1470Chinesear3989Arabicja5343Japanesear2476Arabicen4989Englishzh2151Chinesezh7281Chinesefr3487Frencheo4930 Esperantoes2878Spanishbn2988Banglazh3436Chinesetr4853Turkishar2115Arabiceo4243 Esperantoes4127Spanishru1337Russianzh3193Chinesechr7421Cherokeeiu155 Inuktitutfr3199Frenchja146Japanesees1334Spanishfr1773Frenchth6385Thaiel5172Greeksr6811Serbianja5780Japanesetr4404Turkishsr4786Serbianth4741Thaien6388Englishbn2153Banglaes505Spanishsr5911Serbianzh44Chineseru2481Russianru7736Russianzh5466Chineseiu3848 Inuktitutru5622Russianchr7402Cherokeefr2626Frenches1323Spanishsr2282Serbianth7569Thairu7859Russianen1822Englishtr1516Turkishchr7569Cherokeeen830Englishiu5007 Inuktitutccp1495Chakmachr6827Cherokeeru6222Russiansr3387Serbianth1070Thaija2133Japanesebn2976Banglasr4753Serbianen910Englishru5799Russianbn4432Banglatr8091Turkishchr6707Cherokeeen7688Englishccp7136Chakmafr7693Frenchbn7907Banglaiu6418 Inuktitutja8136Japaneseru6671Russianth1657Thaizh6895Chinesees5517Spanishsr6485Serbianja7313Japanesetr4273Turkishel2461Greekfr1365Frenchiu4353 Inuktitutbn5168Banglaja6268Japaneseth4341Thaith4385Thaisr4186Serbianeo993 Esperantotr8160Turkishel2432Greekar5030Arabicth6278Thaien2525Englishes698Spanishth8097Thaizh3244Chineseth4185Thairu2565Russianes5349Spanishccp1188Chakmatr2586Turkishja2294Japanesechr4829Cherokeeccp1129Chakmabn2382Banglael2013Greekbn2844Banglaccp2058Chakmachr6524Cherokeefr2420Frenchchr1329Cherokeeiu1801 Inuktitutzh3268Chinesees6673Spanishar4065Arabiczh6368Chineseeo3731 Esperantoes4154Spanishbn1251Banglachr1155Cherokeeiu1636 Inuktitutbn1702Banglaar972Arabicen7817Englishja3266Japaneseen6410Englishiu5055 Inuktitutru6457Russianth5098Thaichr3503Cherokeees7812Spanishfr1627Frenchsr1887Serbianes6352Spanishchr4732Cherokeeiu3774 Inuktituttr5401Turkishccp722Chakmaes7497Spanishccp674Chakmath2451Thaizh3004Chineseru3080Russiantr7206Turkishar113Arabicar7510Arabicen4583Englishja812Japanesees5399Spanishzh4732Chinesebn3745Banglasr5438Serbianth7899Thaisr4832Serbiantr1890Turkishar5211Arabicchr3804Cherokeeeo2450 Esperantotr5475Turkisheo3103 Esperantoja3586Japaneseeo8113 Esperantoes1817Spanishiu758 Inuktitutru6087Russianbn3450Banglazh3946Chineseru2561Russianzh1022Chineseiu7110 Inuktitutccp3011Chakmaen3189Englishbn3199Banglaccp5031Chakmael657Greekeo1432 Esperantoru7224Russianfr6732Frenchel1212Greekchr7121Cherokeetr3054Turkishchr7363Cherokeeiu5283 Inuktitutiu7718 Inuktitutfr2698Frenchbn7170Banglaccp1954Chakmaar1407Arabicru5239Russianiu1700 Inuktitutar3449Arabicccp5794Chakmaiu3968 Inuktitutzh5126Chinesezh3161Chineseth2778Thaija420Japanesebn1302Banglaes3923Spanishiu6433 Inuktituttr3041Turkishfr4181Frenchfr3816Frencheo3912 Esperantochr5234Cherokeefr6769Frenchiu2928 Inuktituttr3260Turkishja3249Japaneseen8160Englishccp693Chakmaja499Japaneseen7589Englishes5661Spanishchr927Cherokeeccp1983Chakmazh3043Chinesebn4142Banglaes7168Spanishru3778Russianes4461Spanishar6863Arabicel3119Greektr5662Turkishja6065Japaneseccp3088Chakmaeo4640 Esperantosr1748Serbianccp1243Chakmaen1136Englishen1477Englisheo1966 Esperantoiu1321 Inuktitutiu1990 Inuktitutccp1143Chakmaar4905Arabicccp542Chakmazh5266Chineseru5437Russianiu5285 Inuktitutzh162Chinesear4439Arabicbn6167Banglath620Thaiccp3688Chakmaiu2486 Inuktitutiu3222 Inuktituttr3231Turkishfr6215Frenchsr8057Serbianeo3755 Esperantofr3954Frenchiu7461 Inuktitutfr7738Frenchar6236Arabicbn2529Banglabn662Banglaja3497Japanesebn6836Banglaeo5216 Esperantoja1288Japanesear5704Arabiciu338 Inuktitutar7551Arabicfr5103Frenchru7466Russianth6520Thaien2377Englishsr131Serbianzh3009Chinesefr8126Frenchth8177Thaiel7142Greekth7748Thaitr1975Turkishtr4426Turkisheo1003 Esperantosr759Serbianccp7695Chakmaeo746 Esperantofr2384Frenchsr62Serbianel598Greeken3629Englisheo501 Esperantoccp5293Chakmaja7004Japaneseel979Greekru913Russianeo4582 Esperantobn575Banglabn4991Banglachr5403Cherokeeen1991Englishsr1906Serbiansr2321Serbianar4431Arabicth4924Thaibn2871Banglazh5147Chineseccp2056Chakmaccp3168Chakmabn372Banglaccp5470Chakmasr6660Serbianen3045Englishiu2054 Inuktitutbn5199Banglaen6637Englishja6273Japanesezh4823Chineseel868Greekfr7731Frencheo7389 Esperantoen4333Englishiu1540 Inuktituten5024Englishiu7245 Inuktitutsr7316Serbianen4411Englishchr3721Cherokeeeo507 Esperantofr272Frenchsr2667Serbianchr3212Cherokeeth6304Thaisr5936Serbianes409Spanishen2827Englishth5072Thaitr2240Turkishiu2691 Inuktituten4106Englisheo3837 Esperantoel5876Greeksr6899Serbianja5448Japanesebn1349Banglachr6858Cherokeear7761Arabicfr2548Frenchchr4603Cherokeechr5588Cherokeeen1629Englishchr4123Cherokeeiu2909 Inuktitutbn7458Banglaru2317Russianth6767Thaiar2653Arabicel7981Greekzh239Chineseen7948Englishja1968Japanesesr762Serbianfr2943Frenchth6008Thaiel2038Greekeo8096 Esperantofr2813Frenchbn5745Banglaru7605Russianccp4773Chakmaeo2044 Esperantobn6451Banglabn274Banglatr302Turkishtr329Turkishchr5040Cherokeeru934Russianru7924Russianar7550Arabicru764Russiantr6370Turkishar1772Arabicar7026Arabicbn286Banglaar3870Arabices7098Spanishsr928Serbianccp4242Chakmaiu64 Inuktituttr5509Turkishel5762Greekar8149Arabicth7275Thaija4345Japanesees6211Spanishccp6921Chakmaen4355Englishtr1507Turkishiu3973 Inuktitutel2082Greekru6586Russianiu5226 Inuktitutchr5632Cherokeefr867Frenchtr3547Turkishar3188Arabicchr3683Cherokeefr3811Frenchzh5494Chinesezh7419Chineseru7328Russianel5413Greekeo1113 Esperantotr595Turkishtr6332Turkishtr1027Turkishsr7861Serbianbn1344Banglaar6940Arabicar7993Arabiciu894 Inuktituten827Englishru1568Russianzh3213Chineseccp6357Chakmaiu230 Inuktitutiu6156 Inuktitutzh3089Chineseru94Russiansr4848Serbianth5719Thaisr7389Serbianja5370Japanesear1584Arabiciu2656 Inuktitutzh4774Chineseen625Englishccp3616Chakmaru6331Russianbn1271Banglatr602Turkishar5984Arabicel8186Greekja5984Japanesees4781Spanishar1066Arabices8068Spanishzh7977Chinesesr1551Serbiansr3868Serbianel7594Greekbn5680Banglaen5771Englishja516Japaneseru4609Russianzh5804Chineseiu1869 Inuktitutes7790Spanishiu7081 Inuktitutbn5935Banglaeo2934 Esperantosr534Serbianar10Arabiceo6001 Esperantoel913Greekccp6963Chakmaiu6301 Inuktitutru6966Russianbn4188Banglatr539Turkishes6908Spanishccp3225Chakmaar4063Arabicsr4544Serbiansr5184Serbianeo585 Esperantosr3101Serbiantr7502Turkishsr1550Serbianccp3802Chakmaccp1060Chakmaccp2953Chakmaccp4446Chakmaja2075Japaneseccp4036Chakmasr7215Serbianiu5081 Inuktitutbn4842Banglaru54Russianccp5237Chakmabn3738Banglafr76Frenches131Spanisheo7440 Esperantoeo1500 Esperantofr1682Frenchfr1739Frenchccp3712Chakmaeo6230 Esperantoja5535Japaneseth2101Thairu2567Russiantr1861Turkishel3462Greeksr5264Serbiansr6260Serbianth6933Thaiel819Greekru977Russianth3693Thaitr3878Turkishfr6511Frenchbn3552Banglachr1938Cherokeeth3316Thaizh6457Chinesezh2810Chinesezh7577Chineseen723Englishchr5334Cherokeebn2310Banglath1854Thaisr5868Serbianbn829Banglachr4460Cherokeeru243Russianzh1123Chinesezh6520Chinesefr5549Frenchja4213Japanesesr977Serbianar5441Arabicar5393Arabicccp3219Chakmazh627Chinesezh1275Chineseccp2474Chakmaen2457Englishes3222Spanishen806Englishes8120Spanishar3493Arabicccp3344Chakmatr1158Turkisheo6491 Esperantoen5403Englishccp3463Chakmachr7471Cherokeeru3681Russianth1107Thaitr7544Turkishzh2654Chinesesr1112Serbianfr3562Frenchen1374Englishru3899Russianccp6162Chakmachr1422Cherokeeru6541Russianes2349Spanisheo2295 Esperantochr2936Cherokeeru7826Russianes3597Spanishes1501Spanishfr4771Frenchja8096Japaneseth2551Thaiiu2223 Inuktitutja4860Japanesefr6300Frencheo2181 Esperantozh7650Chineseccp1200Chakmaen938Englishen4280Englishzh6070Chineseel4523Greekel5290Greekth7231Thaiel3550Greekel5897Greekbn4263Banglaar5747Arabiczh5842Chineseru1787Russianel5442Greekeo527 Esperantotr7506Turkishbn3892Banglaen4525Englishfr1118Frenches4604Spanisheo3150 Esperantoiu8086 Inuktituttr4187Turkishth663Thaiccp406Chakmaru2424Russianeo4538 Esperantofr2237Frenchth2559Thaizh7560Chinesees458Spanisheo2953 Esperantofr3100Frenchru6801Russianth1410Thaibn1527Banglaar1823Arabicel596Greeksr5108Serbianen49Englishfr2746Frenchth8014Thaiccp1291Chakmaccp7972Chakmaen3371Englishchr12Cherokeezh35Chinesezh979Chineseiu2484 Inuktitutar531Arabicbn5585Banglaes5453Spanishtr532Turkishbn3649Banglatr4042Turkishfr5249Frenchtr3328Turkishzh1941Chinesechr709Cherokeezh5679Chinesear3516Arabicsr6518Serbianeo897 Esperantoru1449Russianchr7445Cherokeeen1167Englishar5672Arabicru8010Russianchr7888Cherokeesr6101Serbianfr7130Frenchtr6762Turkishar2138Arabicja5157Japanesees4528Spanishsr3235Serbiansr7766Serbianchr2285Cherokeeth1124Thaizh4298Chinesear5745Arabicja641Japaneseeo3573 Esperantobn3300Banglaccp1683Chakmaja7658Japaneseth6988Thaifr7316Frenchja1531Japaneseiu1294 Inuktituten3Englishen454Englishiu5304 Inuktitutsr1530Serbianbn6893Banglaru2283Russianzh227Chinesear7020Arabices6233Spanishen127Englishth1546Thaith7004Thaibn6372Banglaiu6841 Inuktituttr4483Turkishbn3735Banglaes6753Spanishja833Japaneseja1257Japaneseen2935Englishar3717Arabicccp8026Chakmatr473Turkishru3565Russianeo1017 Esperantotr1430Turkishel7718Greekar385Arabicar7376Arabicfr2983Frenchsr5319Serbianel5396Greektr4654Turkishes6720Spanishccp4113Chakmafr978Frenchfr5985Frenchfr4972Frenches3696Spanishtr1179Turkishtr3177Turkishtr5079Turkishtr5875Turkisheo3558 Esperantoes3394Spanishtr28Turkishccp5424Chakmaar4086Arabiczh7170Chineseeo589 Esperantotr1533Turkishchr448Cherokeeel961Greektr193Turkishru3752Russianfr3132Frenchar5975Arabictr4814Turkishes6362Spanishzh5299Chineseccp7692Chakmath4250Thaith447Thairu1587Russianbn2015Banglaiu7069 Inuktitutru4270Russianru7741Russianel3415Greeksr6368Serbianccp3997Chakmasr2703Serbianbn792Banglafr1184Frenchth5828Thaija4302Japaneseen2464Englishen2293Englishfr1778Frenchzh2959Chinesefr3033Frenchbn3677Banglaen1333Englishel8027Greekzh6582Chineseja845Japanesefr7638Frenchja7444Japanesetr6473Turkisheo3422 Esperantochr796Cherokeeja1779Japaneseru466Russianzh6629Chinesechr1323Cherokeesr6434Serbianfr1182Frencheo1447 Esperantofr4080Frenchchr1219Cherokeechr4252Cherokeetr4101Turkishes155Spanishen2483Englishen5417Englisheo1249 Esperantoru6391Russianel5356Greekes7729Spanishzh7106Chineseth7694Thaizh6706Chinesechr235Cherokeeel4484Greekeo2189 Esperantotr439Turkishar4917Arabicru1599Russianzh7674Chineseccp855Chakmabn7007Banglafr2808Frenchel788Greekel6529Greekel4011Greekja1355Japanesear7591Arabices5502Spanishth6922Thairu7839Russianen4694Englishja2472Japaneseeo1848 Esperantobn3029Banglazh4038Chineseja2199Japanesesr6743Serbianbn1661Banglaeo1959 Esperantoth5822Thaibn1708Banglath6655Thaieo130 Esperantozh619Chineseeo4298 Esperantoen4037Englishchr850Cherokeeja4144Japaneseccp6740Chakmaiu7026 Inuktitutfr1435Frenchccp3131Chakmaar3450Arabices4259Spanishsr5937Serbianes6701Spanishsr6343Serbianzh7976Chineseja6665Japanesezh7218Chinesear8160Arabices716Spanishel7065Greekfr908Frenchiu4750 Inuktitutth5775Thaiel5812Greekru1692Russianru2671Russianzh1804Chineseel2190Greekchr5881Cherokeefr6527Frenchar463Arabicchr1487Cherokeear6529Arabicar5260Arabicel6222Greekeo68 Esperantoccp898Chakmazh7347Chinesechr1309Cherokeear8123Arabicchr2313Cherokeefr95Frenchchr7705Cherokeeel2299Greekel7493Greekeo4031 Esperantoel7121Greekes5485Spanishru6959Russianiu7921 Inuktituttr6237Turkishel3999Greekzh6171Chineseccp2598Chakmafr2773Frencheo6658 Esperantozh2590Chineseiu8030 Inuktitutru891Russianel1497Greekchr2884Cherokeeth7574Thaiar7058Arabiceo7290 Esperantoccp1180Chakmasr1742Serbianzh6099Chinesesr1937Serbianiu5509 Inuktitutiu7649 Inuktituteo7023 Esperantoiu3833 Inuktitutccp6039Chakmaja7515Japanesear8162Arabicth2154Thaiiu4918 Inuktitutfr7382Frenchth4265Thaibn5156Banglabn6601Banglasr3062Serbianzh149Chinesear5019Arabicchr7371Cherokeeen6540Englishen7255Englishel4295Greekes6204Spanishiu7941 Inuktitutar7464Arabictr762Turkishja4142Japaneseen8050Englishbn3278Banglasr7495Serbianfr7674Frencheo2490 Esperantoes5798Spanishbn7991Banglafr2781Frenchja704Japaneseen5286Englishccp5175Chakmafr1622Frenchccp4493Chakmath7665Thaichr6000Cherokeesr55Serbianar2788Arabicsr4765Serbiantr3377Turkisheo6512 Esperantoes1736Spanishes2594Spanishiu4242 Inuktitutsr5331Serbianfr265Frenchzh8009Chinesetr2592Turkishth218Thaitr4790Turkisheo2880 Esperantobn4664Banglaeo7434 Esperantoes7441Spanishth2558Thaibn7935Banglaes2725Spanishes4692Spanishiu554 Inuktitutiu2970 Inuktitutsr122Serbiansr6932Serbiansr7832Serbianeo82 Esperantozh5521Chineseen4380Englishth4255Thaith3799Thaiiu4456 Inuktitutja7388Japaneseel1917Greekes2851Spanishth3113Thairu905Russianen1283Englishel6358Greekfr1692Frenchfr1754Frenchiu3342 Inuktitutzh6462Chineseeo4595 Esperantoccp7610Chakmatr7980Turkishel6343Greekar1615Arabices2635Spanishsr2645Serbianel2248Greeksr7447Serbianchr6225Cherokeesr2275Serbianeo748 Esperantoja4670Japanesezh3671Chinesechr1290Cherokeeiu3381 Inuktitutzh4312Chinesear5123Arabicar3054Arabicar2127Arabicru7009Russianel3326Greekru1744Russianbn5235Banglaja4607Japanesear4881Arabicth3423Thaiccp3063Chakmaar3973Arabicen5969Englishar3781Arabicchr2771Cherokeeja6869Japaneseel6425Greekiu431 Inuktitutja137Japanesees2343Spanishiu5360 Inuktitutiu2952 Inuktituteo3298 Esperantozh1190Chinesechr5635Cherokeeeo2018 Esperantoel3410Greekru1658Russianen3914Englishfr7790Frenchccp2737Chakmaiu2609 Inuktitutar3876Arabiceo6683 Esperantoar2459Arabiczh2448Chineseel4160Greekchr979Cherokeees4708Spanishth3255Thaibn4208Banglaiu7875 Inuktitutja1096Japaneseja4594Japanesear2641Arabicja1597Japanesees2901Spanishiu2967 Inuktituttr8145Turkishja2278Japanesear661Arabicen6417Englishccp4501Chakmaar67Arabicen3908Englishbn3840Banglaes1189Spanishfr8104Frenchiu5019 Inuktitutja8056Japanesebn2704Banglaccp307Chakmaar6038Arabicfr3797Frenchccp3878Chakmachr6616Cherokeeth7656Thaiar5026Arabicchr6242Cherokeeel256Greektr6836Turkishsr6201Serbianfr2704Frenchth7447Thaiiu7523 Inuktitutfr472Frenchru4039Russianbn4770Banglatr1650Turkishen6938Englishar1022Arabicar1345Arabices8097Spanishiu4544 Inuktitutja6539Japanesebn6853Banglath2508Thaisr7442Serbianth879Thaiiu2434 Inuktitutru7255Russianfr7780Frencheo2813 Esperantoru182Russiansr3427Serbianja5467Japanesesr2338Serbianth4868Thaija6284Japanesesr927Serbiantr5528Turkishzh4733Chinesefr433Frenchar2096Arabicru3259Russianel857Greeksr641Serbianeo7429 Esperantoeo2291 Esperantoeo3277 Esperantotr7984Turkisheo2591 Esperantoru6041Russianchr6088Cherokeear6979Arabicru6683Russianel6138Greekfr1812Frenchchr1636Cherokeeth1754Thaitr1058Turkishzh5141Chinesesr4034Serbianiu6955 Inuktitutel804Greekru5519Russianfr7675Frenchru6440Russiantr3191Turkisheo3318 Esperantozh2048Chinesesr6994Serbianzh5228Chinesefr7849Frenchiu3905 Inuktitutccp3652Chakmael1553Greekfr1542Frenchru6108Russianel4337Greekccp1346Chakmachr6375Cherokeechr2162Cherokeeja2671Japanesees5820Spanisheo1168 Esperantoja3130Japaneseen1229Englishzh1007Chinesezh5892Chineseja4298Japaneseth784Thaizh5511Chinesechr3758Cherokeesr3786Serbianccp5999Chakmaiu7240 Inuktitutsr6828Serbianth314Thaien1031Englishtr8044Turkishel5879Greekccp1400Chakmatr2138Turkishes361Spanishar7821Arabicchr1977Cherokeeen8045Englishru3128Russianes3509Spanisheo1566 Esperantosr6287Serbianru7490Russiansr6725Serbianbn757Banglabn3931Banglaen2829Englishzh2979Chinesebn1000Banglaen2181Englishes134Spanishes6101Spanishzh536Chineseccp7392Chakmaes3487Spanishru2857Russiantr8123Turkishbn3311Banglafr8035Frencheo2584 Esperantoen3597Englishth398Thaith2498Thaizh1571Chineseja5210Japanesebn7477Banglaru4038Russianth4983Thaibn2810Banglaja3390Japaneseen6883Englishccp7095Chakmaccp7469Chakmaar3820Arabicbn6725Banglaru4428Russianccp7543Chakmachr1704Cherokeeja7773Japanesebn2815Banglath4235Thaieo5451 Esperantobn6269Banglabn2193Banglazh3676Chinesear3472Arabicel6715Greekru1111Russianth5554Thaitr386Turkishtr5074Turkishen6467Englishiu7714 Inuktitutbn7079Banglaen5266Englishiu46 Inuktitutiu5236 Inuktitutru1154Russianth2444Thaieo267 Esperantoru4905Russianchr3042Cherokeeru3131Russianja1472Japaneseen2821Englishth6456Thaiiu2956 Inuktitutru7318Russiantr8039Turkishja5104Japanesetr2404Turkishbn6577Banglaen4602Englisheo670 Esperantoeo7282 Esperantoel3411Greekes1173Spanishiu4190 Inuktituten4350Englishbn3191Banglaeo4220 Esperantofr2460Frenchru3685Russianzh428Chinesezh6379Chineseccp4801Chakmaes1443Spanishja4353Japaneseru7340Russianchr6035Cherokeeiu4696 Inuktitutel388Greekfr7102Frenchth3829Thaith4098Thaiccp4535Chakmasr3323Serbianel5171Greekth8019Thaiiu5425 Inuktituttr5707Turkishchr7292Cherokeeja4856Japaneseru2979Russianeo3127 Esperantoth5060Thaieo3761 Esperantotr6824Turkishel433Greekeo629 Esperantozh4799Chineseen6658Englishen6435Englishsr6643Serbiantr8125Turkishbn4778Banglazh2572Chinesebn5824Banglaes1021Spanisheo1838 Esperantoeo5461 Esperantobn468Banglaiu2905 Inuktitutbn867Banglatr7940Turkishzh2703Chinesezh4934Chineseccp7463Chakmaru7558Russiantr1725Turkishru2390Russianru1562Russianzh1Chinesebn563Banglael6479Greekiu3173 Inuktitutiu539 Inuktitutsr7783Serbianes5351Spanishen4427Englishja5207Japanesear3612Arabictr3726Turkishes5327Spanishth6544Thaija3940Japanesebn7385Banglael6452Greekccp5448Chakmafr5631Frenchtr4324Turkishiu7726 Inuktitutel2925Greekbn2111Banglasr123Serbianchr5148Cherokeezh915Chineseja1913Japanesebn2464Banglaccp6869Chakmachr5459Cherokeeel6393Greektr4900Turkishzh163Chinesees4534Spanishbn3803Banglaen3333Englishar7791Arabicbn4753Banglabn7264Banglaes1445Spanishchr237Cherokeeen328Englishbn553Banglaru2144Russianzh5469Chinesetr4593Turkishtr7608Turkishen3837Englishchr7417Cherokeesr2380Serbianru1103Russianru6768Russianiu5135 Inuktituttr3846Turkishfr3986Frenchfr7281Frenchbn6764Banglachr6867Cherokeeiu751 Inuktitutchr1386Cherokeeja954Japanesesr4443Serbianru5966Russianzh1317Chinesesr3276Serbianja3662Japaneseru3439Russianth971Thaien3722Englishzh6383Chineseen6033Englishfr6602Frenchja6279Japanesesr5582Serbianbn3546Banglaccp1369Chakmath4364Thaieo236 Esperantotr2862Turkishzh6329Chineseel5117Greekccp8074Chakmaen3541Englisheo7432 Esperantoes5240Spanishiu6702 Inuktituteo661 Esperantoes960Spanishchr8107Cherokeees8061Spanishru3978Russianfr1439Frenchel5784Greekar1680Arabiczh7809Chineseeo889 Esperantoar4254Arabices5571Spanishiu4455 Inuktitutchr1756Cherokeechr969Cherokeechr5980Cherokeeiu1729 Inuktitutru2721Russianen8055Englishtr7709Turkishes884Spanishtr5371Turkishtr4237Turkishccp1024Chakmabn3026Banglael1578Greeken3104Englishtr5551Turkishfr2761Frenchchr6054Cherokeear3106Arabiczh7492Chinesechr2987Cherokeeru4622Russianccp3040Chakmabn6279Banglabn6678Banglachr3519Cherokeeel3471Greekccp1797Chakmaru7332Russianccp954Chakmath4096Thaibn434Banglaeo3324 Esperantoen2378Englishes2541Spanishru3690Russianzh2213Chineseccp1123Chakmaru207Russiantr5694Turkishel1341Greekfr3445Frenchsr6723Serbianel6129Greekar1001Arabicfr4505Frenchtr5490Turkishru3815Russianja4926Japaneseth1393Thaiiu1814 Inuktitutzh5887Chineseiu6484 Inuktitutar2344Arabices1811Spanishbn1027Banglaes3319Spanishes1792Spanishccp700Chakmazh4462Chinesesr890Serbianar3049Arabiceo452 Esperantoes4293Spanishbn3530Banglath7511Thaien7803Englishfr8149Frenchsr143Serbiansr164Serbianru7700Russianth1928Thaitr8134Turkishel4141Greekeo134 Esperantosr1745Serbianiu6144 Inuktitutzh6322Chineseja7248Japaneseiu1451 Inuktituten6458Englishel6148Greekel4503Greekel7143Greekeo8074 Esperantoen7510Englishbn5652Banglath7366Thaiiu175 Inuktitutzh4098Chinesezh6949Chineseiu2700 Inuktitutes7543Spanishfr1985Frenchsr2802Serbianja6044Japanesezh3694Chineseiu5150 Inuktituttr1310Turkishja2956Japanesetr523Turkishru653Russianbn5922Banglafr1595Frenchtr7374Turkishccp1843Chakmatr7917Turkishbn6684Banglaeo836 Esperantotr2952Turkishfr3987Frenchja1844Japanesezh6624Chineseth6487Thaibn5493Banglath1379Thaisr6414Serbianar7171Arabicbn4431Banglaen6464Englishsr100Serbianbn5170Banglaja2597Japaneseen138Englishccp6418Chakmaen815Englishiu627 Inuktitutth6382Thaieo2006 Esperantoiu3734 Inuktitutfr5115Frenches851Spanishes4742Spanishja108Japaneseru6235Russianchr4205Cherokeeccp2077Chakmabn348Banglaen5835Englishbn3431Banglaiu7942 Inuktitutes7160Spanishbn4618Banglachr6310Cherokeeja2924Japaneseeo5058 Esperantoru1871Russianru4898Russianbn668Banglazh729Chinesebn8097Banglazh5734Chineseeo3229 Esperantotr6425Turkishel1350Greekzh5036Chinesesr1375Serbianzh7908Chinesees1855Spanishfr5332Frenches6778Spanishen6888Englishja2756Japaneseiu4237 Inuktitutru8069Russianccp2499Chakmael3514Greekes2165Spanishja5828Japaneseccp4322Chakmasr5731Serbianen448Englishel3562Greekth3359Thaiiu5287 Inuktituteo7233 Esperantochr6740Cherokeefr8032Frenchiu384 Inuktitutar5904Arabicen5516Englishzh5528Chinesetr7537Turkishsr7265Serbianccp5663Chakmaar1705Arabicen5722Englishfr5916Frenchtr5442Turkishth3852Thaieo7805 Esperantoes1906Spanishar3116Arabicru2982Russianth187Thaith3828Thaitr1173Turkishzh401Chinesetr5531Turkishen2706Englishtr5007Turkishfr5455Frenchsr2041Serbianiu601 Inuktitutja6041Japaneseiu4676 Inuktituteo5336 Esperantoja3657Japaneseiu3506 Inuktitutzh6896Chinesees5835Spanishbn3685Banglasr5052Serbianes5420Spanishzh3743Chineseel4073Greekeo1207 Esperantozh4738Chineseja7300Japaneseccp6762Chakmaes4664Spanishes67Spanishiu2207 Inuktitutar6167Arabicen1583Englishen7098Englishzh7155Chinesees3578Spanishsr6562Serbianccp4274Chakmaes5790Spanishtr3620Turkishes3846Spanishfr2625Frenchru4112Russianel7037Greeken7154Englishchr6230Cherokeear4520Arabicccp5052Chakmaiu3473 Inuktitutes6643Spanishja1267Japaneseen591Englishccp2774Chakmazh2236Chinesefr2783Frenchiu135 Inuktitutel1841Greekbn1204Banglath924Thaizh4989Chineseccp4115Chakmaccp7271Chakmachr3631Cherokeeeo7897 Esperantoes4493Spanishes8180Spanishfr3323Frenchzh2861Chinesesr5313Serbianbn7064Banglaeo5887 Esperantoel6546Greekja2552Japaneseru5518Russianeo5560 Esperantoel1220Greekccp7314Chakmabn5216Banglaccp5981Chakmath493Thaichr6838Cherokeeiu7213 Inuktitutccp5483Chakmael1584Greekccp1985Chakmaccp6904Chakmachr5248Cherokeeen5083Englishja2194Japaneseth4273Thaitr4581Turkishzh1238Chinesezh3245Chineseel8146Greekbn2881Banglazh7781Chineseiu4569 Inuktitutbn1598Banglaccp2691Chakmachr4536Cherokeeel663Greekccp3432Chakmaen1364Englisheo2414 Esperantoar5092Arabices5967Spanishes7834Spanishru5059Russianru6822Russianiu2011 Inuktitutth3476Thaiccp6546Chakmael7775Greekar2723Arabiczh720Chineseen7062Englishchr1602Cherokeetr4392Turkishar1193Arabicchr5805Cherokeefr5077Frenchth6631Thaiccp3632Chakmaru3848Russiansr2841Serbiansr6362Serbianja5286Japaneseeo7475 Esperantoel4677Greekja5219Japaneseccp3967Chakmael1630Greekeo1556 Esperantoar4886Arabicar8016Arabicru3371Russiantr7384Turkishiu3260 Inuktitutar4168Arabicja2685Japaneseiu1608 Inuktitutsr1294Serbianiu188 Inuktitutchr103Cherokeechr1583Cherokeefr3200Frenchar2568Arabictr4055Turkishsr3816Serbianchr1169Cherokeezh6621Chineseru5554Russianiu6394 Inuktitutccp1183Chakmafr3914Frencheo6282 Esperantoes2442Spanishen3585Englishth4692Thaija7511Japaneseru5459Russianchr470Cherokeeiu3539 Inuktitutru5309Russianen2960Englishiu1745 Inuktitutiu72 Inuktitutar2439Arabicru7392Russianfr5890Frenchfr4484Frencheo7348 Esperantoru766Russianes3015Spanishru5276Russianth3205Thaiel7505Greekzh2140Chinesear5644Arabicen2266Englishbn4560Banglachr2377Cherokeeel842Greekiu6295 Inuktitutes7955Spanishccp6455Chakmatr2624Turkishtr5454Turkishsr3112Serbiansr1133Serbiantr1819Turkishfr3080Frenchbn5302Banglael7455Greekar257Arabicen1164Englishiu7163 Inuktitutsr1038Serbianru1514Russianes6846Spanishth7730Thaith1756Thaien3106Englishes3357Spanishccp5221Chakmaru1519Russianru5334Russianja2803Japanesebn5832Banglasr3604Serbianth3076Thaitr4657Turkishtr3369Turkishccp3590Chakmaes1706Spanishiu3983 Inuktitutiu5729 Inuktitutsr1321Serbianeo6470 Esperantoar5234Arabicccp2766Chakmaru3303Russianth7045Thaies2202Spanishfr4291Frenchru5914Russianja4301Japaneseru4104Russiantr2612Turkishchr3362Cherokeeja1743Japaneseru6262Russianru3714Russianccp253Chakmaen8036Englishru4034Russianru5949Russiantr1367Turkishar28Arabicfr3949Frenchja5419Japaneseel6805Greekes1381Spanishiu5704 Inuktitutchr2381Cherokeees3558Spanishar6073Arabicru7969Russiantr1198Turkishru4222Russianccp309Chakmazh4662Chinesesr614Serbianth1076Thaibn3474Banglazh7495Chinesesr7041Serbianiu5413 Inuktitutfr2270Frenchiu4161 Inuktitutru5547Russianccp2694Chakmaeo129 Esperantofr1025Frenchsr4615Serbianiu7436 Inuktitutzh4502Chinesees1124Spanishbn3607Banglath1048Thaieo4960 Esperantobn1804Banglaeo7330 Esperantoja1871Japaneseccp1220Chakmafr8055Frenchchr5466Cherokeeru373Russianeo1137 Esperantoru579Russianeo7212 Esperantofr598Frenchja4110Japanesebn5756Banglaen7119Englishiu6772 Inuktitutzh7096Chineseru5517Russianru3784Russianen4857Englishchr6033Cherokeesr7651Serbianth7788Thaiel6752Greekar6614Arabicar3467Arabiceo7468 Esperantoeo1528 Esperantosr2556Serbianeo8124 Esperantoja5925Japaneseccp2246Chakmael4985Greekru2398Russianja7039Japaneseel6365Greekes4116Spanishbn7800Banglaeo3308 Esperantoeo5383 Esperantoja1785Japaneseen998Englishsr4523Serbianen357Englishru3882Russianeo7726 Esperantoiu915 Inuktitutru1164Russianccp1448Chakmaccp7195Chakmasr6504Serbiantr6251Turkishes4943Spanishja1074Japaneseth876Thaiccp516Chakmaeo3119 Esperantoccp5559Chakmaar7833Arabicbn395Banglaja126Japanesear3704Arabicru3976Russiansr1949Serbiansr5591Serbianzh3227Chinesees6952Spanishiu4339 Inuktitutsr4873Serbianchr1738Cherokeeel4322Greekbn4058Banglaar4948Arabicbn6954Banglaru1785Russianen2575Englishzh4431Chinesezh5280Chinesees6147Spanishen6171Englishsr403Serbiansr6719Serbianar4654Arabiciu3743 Inuktituttr5186Turkishel7530Greekth478Thaien860Englishccp2183Chakmachr6608Cherokeesr7610Serbianar4285Arabicar3230Arabicru2827Russianbn4699Banglaeo3257 Esperantotr6171Turkishen5258Englishzh4117Chinesechr1782Cherokeeiu1887 Inuktitutru5790Russianchr5082Cherokeeccp3127Chakmabn2525Banglabn544Banglachr3268Cherokeeiu7443 Inuktitutar2972Arabicru60Russiansr2698Serbianchr3554Cherokeees3837Spanishja2329Japaneseja3986Japanesetr879Turkishth278Thaiel2032Greekth4073Thaith7289Thairu8041Russianes3155Spanishth6127Thaitr2252Turkishja895Japanesebn4793Banglabn5810Banglachr6855Cherokeeiu3883 Inuktitutar3330Arabiceo4884 Esperantoes7314Spanishzh6918Chinesebn6438Banglazh7567Chineseen1202Englishja3227Japanesear1431Arabicel3397Greekccp4982Chakmatr7914Turkishes3525Spanishth5502Thaith1084Thaitr1238Turkishccp7557Chakmatr2332Turkishru534Russianen6965Englishchr8129Cherokeetr5054Turkishel6277Greekth5717Thaiel4792Greekja4409Japanesees161Spanishsr1732Serbianru3055Russianen4061Englishiu3572 Inuktitutel7734Greekeo120 Esperantoiu3184 Inuktituten5613Englishja3263Japaneseja4513Japanesetr6255Turkishru1685Russianeo1542 Esperantofr7413Frenchel7971Greekar4570Arabictr7523Turkishel1213Greekfr2765Frenchel795Greekiu7108 Inuktitutzh5720Chineseen6819Englishja6806Japaneseth108Thaien662Englishru6397Russianru895Russianru3788Russianar7521Arabices2899Spanishar2388Arabicja1621Japanesees5982Spanishru1972Russianel7166Greekes332Spanishfr1918Frenchru3701Russianeo5549 Esperantoeo1964 Esperantofr4650Frenchar3744Arabicccp7124Chakmaccp6285Chakmazh5986Chinesebn960Banglaen4288Englishiu2027 Inuktitutth2348Thaija7117Japanesetr5450Turkishbn4718Banglabn4998Banglaes3160Spanishfr4203Frenchzh6012Chinesear7371Arabicen1812Englishth7535Thaibn1180Banglaru4009Russianeo6740 Esperantoeo5869 Esperantoru4192Russianeo6308 Esperantoccp4769Chakmachr7826Cherokeeen5134Englishiu2219 Inuktituten2714Englishru3598Russianzh7827Chineseccp1791Chakmatr6657Turkishbn3184Banglael3549Greeken8152Englisheo2889 Esperantoru4220Russianchr7771Cherokeezh7298Chineseeo2570 Esperantoeo3002 Esperantoiu611 Inuktitutzh2049Chineseen5251Englishel4995Greekja7938Japanesetr4024Turkishru380Russianiu220 Inuktituteo3128 Esperantosr5778Serbianeo3365 Esperantoeo5647 Esperantoes2747Spanishsr8064Serbianbn1357Banglaar2456Arabices4777Spanishfr623Frenchiu573 Inuktituteo3698 Esperantoar4913Arabicru2996Russianiu2180 Inuktitutbn4590Banglaeo3396 Esperantoccp4096Chakmaes1644Spanishccp3520Chakmath4922Thaichr1854Cherokeeen31Englishccp8163Chakmaiu798 Inuktitutth4104Thaiiu5633 Inuktitutel1594Greektr3630Turkishja2116Japanesear7179Arabicchr780Cherokeechr7761Cherokeesr854Serbianes1816Spanishchr5078Cherokeees4656Spanishiu5828 Inuktitutsr349Serbiantr780Turkishen4260Englishja1546Japanesees3755Spanishfr6986Frenchar5822Arabicsr5188Serbianbn3921Banglaru2372Russianccp3595Chakmael514Greekbn4157Banglael7191Greekja1904Japaneseru6613Russianth2079Thaizh3221Chinesesr1607Serbiansr960Serbianfr6161Frenches4999Spanishfr1318Frenchja1310Japaneseja4827Japanesetr137Turkishel3446Greekzh7713Chinesefr1454Frenchchr3122Cherokeeccp7591Chakmael4602Greekiu5026 Inuktitutth2438Thaiar4642Arabices8189Spanishfr1064Frencheo1358 Esperantoar3565Arabicbn3932Banglaar191Arabicen8144Englisheo7695 Esperantoja4855Japaneseth1279Thaies7329Spanishzh481Chinesesr2552Serbianel1453Greekja7696Japanesezh6112Chineseen6153Englishccp5181Chakmath7083Thaitr3628Turkishtr6780Turkishccp5045Chakmael1226Greekchr482Cherokeechr326Cherokeeen1750Englishtr2165Turkishchr7157Cherokeear7889Arabicru5578Russianccp6778Chakmaeo7948 Esperantoes1463Spanishth6654Thaija1052Japaneseel1791Greekchr5966Cherokeeccp1849Chakmael8079Greekeo4726 Esperantochr7624Cherokeeel5455Greekeo5903 Esperantoth4524Thaith2172Thaiar1726Arabicru7481Russianeo5623 Esperantoru7104Russiansr6268Serbianccp7647Chakmath6622Thaizh4359Chineseja5746Japaneseru6198Russianel1237Greekru2938Russianru8160Russianes5649Spanishar2085Arabicen5245Englishru958Russianes3849Spanisheo7454 Esperantofr4442Frenchzh6589Chinesezh6721Chineseen3755Englishfr13Frenchtr1688Turkishes2118Spanishru3012Russianzh4318Chineseja7087Japaneseru3375Russianel4041Greeken4494Englishes7373Spanisheo5030 Esperantoccp3747Chakmachr5456Cherokeechr6596Cherokeefr4034Frenches540Spanishzh3130Chineseiu831 Inuktitutru868Russianeo3107 Esperantoth7310Thaiccp647Chakmabn1904Banglazh5518Chineseru5867Russianar3541Arabictr6419Turkishja3055Japaneseeo7973 Esperantoes2513Spanishar6049Arabicar2193Arabiceo3683 Esperantofr7510Frenchru777Russianzh5728Chinesechr1277Cherokeeccp6540Chakmaja1275Japaneseru2016Russianfr5154Frenchru1852Russianth3051Thaizh1387Chinesear639Arabicth669Thaiar5686Arabicfr7404Frenchen6842Englishth2747Thaiccp7622Chakmath4939Thaiiu3524 Inuktitutth5568Thaies6653Spanishru6645Russianes3889Spanishbn1139Banglaen6101Englishiu4755 Inuktitutth4054Thaiccp480Chakmafr4435Frenches2430Spanishzh2226Chineseiu6082 Inuktitutccp724Chakmael2412Greekfr7044Frenchel845Greekar5819Arabicbn5478Banglaar3866Arabices3740Spanishru1987Russianes5884Spanishru3850Russiansr2494Serbiantr6611Turkishar2761Arabiczh6236Chineseeo7782 Esperantoes2975Spanisheo7907 Esperantoen3179Englishja7356Japanesear7981Arabicar4292Arabicchr4505Cherokeees7934Spanishzh2101Chineseen4640Englishru2341Russianen1324Englishtr6676Turkishth1496Thaibn1544Banglaeo5543 Esperantobn2514Banglael2996Greekbn3833Banglachr7979Cherokeefr1561Frenchzh1668Chineseja84Japaneseel6928Greekja2785Japaneseel5297Greekfr4277Frenchth826Thaiar7999Arabices3448Spanishth3580Thaisr2838Serbianbn6104Banglaja86Japanesezh4537Chinesebn4377Banglabn7423Banglasr3136Serbianccp812Chakmaes5312Spanishiu932 Inuktituttr4813Turkishchr1105Cherokeear5950Arabices4407Spanishja3286Japanesear7708Arabicru1611Russianccp1298Chakmaru2748Russianen7437Englishen5615Englishsr7032Serbianth5836Thaitr2429Turkishfr7965Frenchtr7568Turkishar1801Arabiceo2105 Esperantoeo2224 Esperantofr2437Frenchar4799Arabicar1423Arabices3119Spanishth1023Thaiel471Greekel1990Greekeo3264 Esperantoth6595Thaija3820Japanesezh864Chinesefr3565Frenchtr4735Turkishes6476Spanishar3567Arabicja3339Japanesebn1242Banglaiu3753 Inuktitutchr7302Cherokeeccp1881Chakmaiu1229 Inuktituteo188 Esperantoiu3044 Inuktitutel7967Greekbn1996Banglaar4402Arabicel727Greeken4449Englishes981Spanishru495Russiantr6557Turkishzh1913Chinesezh2055Chinesees755Spanishzh8037Chineseccp2993Chakmath7581Thaiccp5069Chakmaiu2483 Inuktitutth6020Thairu7750Russianth8078Thaizh3723Chinesetr167Turkishchr1808Cherokeeeo2672 Esperantoccp4992Chakmaiu5799 Inuktitutes6090Spanishth3711Thaiccp965Chakmachr6534Cherokeees7532Spanishccp3163Chakmafr1417Frencheo5107 Esperantosr1365Serbianar5218Arabicsr2883Serbianth1009Thaibn3353Banglachr621Cherokeechr3452Cherokeetr339Turkishes3828Spanishes3362Spanishen2234Englishel1978Greekru4075Russianiu5421 Inuktituttr6340Turkishchr1817Cherokeeru7756Russianen2341Englishfr6258Frenchchr1269Cherokeebn5057Banglasr7451Serbianth3305Thaien7631Englishth4735Thaieo679 Esperantoes1295Spanishchr5655Cherokeees7592Spanishth7293Thaien2628Englishsr4562Serbiansr6353Serbianen204Englishfr6474Frenchja1098Japaneseja4954Japaneseel5860Greekar2315Arabicbn3516Banglath1674Thaija114Japaneseel6942Greekiu8169 Inuktitutchr3164Cherokeeen1315Englishsr394Serbianar4647Arabicen1004Englishzh6832Chineseel6333Greekfr4462Frenchru115Russianru1555Russianccp5133Chakmaeo5323 Esperantochr6817Cherokeeth3282Thaifr1112Frenchen190Englishzh909Chinesebn3654Banglaes2528Spanishchr4863Cherokeeja2755Japaneseth2912Thaieo2430 Esperantozh1629Chineseel3661Greekar7208Arabicbn7119Banglaen2510Englishel76Greekiu4349 Inuktitutth8053Thaies2324Spanishru2218Russianes4497Spanishja591Japanesear4031Arabiciu2622 Inuktituttr2923Turkishel569Greekfr819Frenchzh5222Chinesechr4204Cherokeeeo4871 Esperantoja3502Japaneseccp5298Chakmazh1602Chinesechr1288Cherokeeen7858Englisheo1875 Esperantoen4869Englishru3505Russianccp7103Chakmafr1687Frenchiu1190 Inuktitutru6251Russianja1509Japaneseel1985Greekja211Japaneseel4763Greekru6130Russianja711Japaneseel2185Greeken2253Englishru7064Russianfr5389Frenchar6148Arabicja817Japaneseja4292Japanesetr3178Turkishru4741Russianel3322Greeken7426Englishchr4344Cherokeeiu3377 Inuktitutes4702Spanishccp3098Chakmaeo6211 Esperantoes7492Spanishbn1916Banglazh3728Chinesechr5971Cherokeeeo525 Esperantobn5257Banglaeo5782 Esperantoes6434Spanishfr5581Frenchru2018Russiantr981Turkishes599Spanishsr5035Serbianja1814Japanesezh6945Chineseel5524Greekja659Japaneseeo6990 Esperantoccp3129Chakmabn3721Banglaen1890Englishth8184Thaisr5041Serbianen1067Englishth6122Thaiiu2516 Inuktitutzh2730Chinesefr2504Frenchbn522Banglaes4204Spanishfr2878Frenchfr5487Frenchsr4714Serbianes92Spanishsr1510Serbianccp4871Chakmaes5842Spanishccp533Chakmaru8075Russianccp314Chakmaiu4025 Inuktitutja4285Japaneseru4306Russianchr3734Cherokeeccp1175Chakmaeo5802 Esperantoja2963Japaneseja427Japanesebn3714Banglachr7942Cherokeeeo2757 Esperantoru6836Russianel4634Greekzh7486Chinesetr7327Turkisheo1763 Esperantoeo3774 Esperantoar5321Arabictr5163Turkishtr3210Turkishccp4231Chakmabn2192Banglasr4692Serbianes1720Spanishccp1343Chakmaen4792Englishth5304Thaija2775Japanesetr1547Turkishja2881Japanesechr4310Cherokeeth7760Thaith7070Thaien1083Englishja6676Japanesees7699Spanishsr5751Serbianja7853Japaneseth6273Thaizh8062Chinesees3227Spanishar4100Arabicja142Japaneseen4358Englishja3877Japanesetr3852Turkishccp939Chakmaar3753Arabicen5898Englishfr1588Frenchccp5875Chakmaru4319Russianccp7288Chakmaccp7954Chakmafr1856Frenchzh1702Chineseru1798Russianes4671Spanishiu3595 Inuktitutfr2396Frenchja848Japaneseja1633Japanesetr2354Turkishzh2399Chinesebn5758Banglaja7415Japaneseja5344Japaneseen6416Englishiu7360 Inuktitutru3037Russianar7724Arabicar5294Arabicbn7066Banglasr2973Serbianth5180Thaiccp3727Chakmabn1775Banglachr4874Cherokeeiu6477 Inuktitutru2575Russianth4561Thaitr4773Turkishfr7143Frenchth4669Thaizh2254Chinesechr4799Cherokeeja4730Japaneseccp3373Chakmaja2287Japaneseeo3676 Esperantosr615Serbianfr3211Frenchtr5716Turkishar5070Arabicel8033Greeken257Englishes5041Spanishiu2203 Inuktitutzh7966Chineseel4730Greektr256Turkishru7331Russianen1353Englishru5206Russianel771Greekth8027Thaibn7724Banglaar4866Arabicccp3081Chakmaru5781Russianja5428Japaneseeo470 Esperantoru5333Russianen3135Englishiu4664 Inuktitutchr4121Cherokeeen4872Englishen6494Englishfr3561Frenchsr5948Serbianeo2367 Esperantoiu682 Inuktitutccp3401Chakmaen4514Englishzh205Chinesebn1081Banglael5418Greekzh6962Chinesetr3780Turkishzh4394Chinesebn671Banglatr1275Turkishsr7948Serbianzh826Chineseiu3970 Inuktitutchr6055Cherokeefr4197Frencheo4052 Esperantoel7924Greekth1501Thaiel6191Greekbn6051Banglael1205Greekja4899Japaneseen2090Englishes2947Spanishth2790Thaith5813Thaitr75Turkishel1523Greekru4059Russianfr1021Frenchth7067Thairu8178Russianes6714Spanishth3390Thaitr5295Turkishes762Spanishja3157Japanesebn7161Banglath6426Thaien2434Englishth913Thaies3661Spanishja5918Japanesesr1623Serbianfr5717Frenchzh6011Chineseja742Japaneseth4876Thaies780Spanishru6077Russiantr4709Turkishel668Greekccp5120Chakmaccp7759Chakmaja5551Japanesetr5855Turkishfr1213Frenchchr2917Cherokeefr2132Frenchbn5476Banglafr2517Frenches2863Spanishja3681Japanesechr5430Cherokeees1234Spanishar6355Arabicchr2050Cherokeeja2037Japaneseen4666Englishzh6952Chineseiu0 Inuktitutbn5844Banglael2649Greekar606Arabiceo2532 Esperantoru79Russianes6009Spanishes5072Spanishtr1724Turkishzh6395Chineseen1491Englishchr3429Cherokeeccp4593Chakmaru7569Russianen7378Englisheo1948 Esperantobn838Banglafr1325Frenchbn772Banglaccp4466Chakmaen8091Englishsr1659Serbianth4885Thaiel2357Greekja1930Japanesebn61Banglachr2655Cherokeeth437Thaiel7958Greekfr7268Frenchru3625Russianja1059Japanesebn5313Banglaccp5411Chakmachr7612Cherokeeja4620Japaneseru6875Russiantr1670Turkishel1680Greekru1688Russianfr445Frenchtr5038Turkishzh3016Chinesezh3441Chineseiu4620 Inuktitutes803Spanishja2574Japaneseth453Thaitr4222Turkishar6615Arabiciu7552 Inuktitutccp6999Chakmaccp3586Chakmath6845Thaith2275Thaifr5917Frenchccp5516Chakmafr3392Frenchbn2137Banglael7348Greekes5427Spanishes4621Spanishsr1502Serbiantr7806Turkishbn6161Banglael5534Greekes4758Spanishja7333Japaneseiu5637 Inuktitutth7352Thaichr4440Cherokeezh7002Chineseen387Englishar6954Arabicja7236Japanesetr6701Turkishccp7054Chakmaiu5724 Inuktitutbn6694Banglaru2640Russianth8169Thaitr7832Turkishzh3271Chineseja5195Japanesechr1161Cherokeefr6162Frenchja3254Japaneseja7757Japanesefr1361Frenchsr3074Serbiansr5059Serbiantr2083Turkishchr325Cherokeeja3408Japaneseccp2511Chakmazh4105Chinesetr6614Turkishzh4750Chinesebn1828Banglafr4109Frenchja8046Japanesesr7317Serbianeo3685 Esperantochr5402Cherokeees3089Spanishru783Russianchr1499Cherokeeen260Englishiu1474 Inuktitutbn666Banglafr1659Frenchchr1521Cherokeeel3449Greektr4439Turkishja8114Japaneseru2460Russiansr7040Serbianzh3968Chinesebn4720Banglaccp4193Chakmael2700Greekchr1160Cherokeees1916Spanishiu7719 Inuktitutar1455Arabicfr475Frenchbn7462Banglasr7372Serbianbn1822Banglaes5219Spanishchr281Cherokeebn3017Banglafr6446Frenchbn6126Banglaccp7193Chakmaja7222Japanesechr3878Cherokeeel1014Greekel5437Greekzh326Chineseccp2933Chakmachr3517Cherokeeja7988Japanesesr1515Serbiantr4858Turkishfr6798Frenchsr2446Serbianen8063Englishtr4150Turkishja5830Japanesebn2532Banglaccp1216Chakmaes6054Spanishsr1346Serbianru4287Russianen2770Englishel1324Greekchr3284Cherokeebn4097Banglaccp611Chakmaen1613Englishja6444Japanesefr1401Frenchar4430Arabicchr2384Cherokeeru1602Russiansr1776Serbianel1234Greekfr4460Frenchiu5340 Inuktitutel1048Greektr4563Turkishccp2879Chakmaes4929Spanishchr1912Cherokeeth6620Thaichr7485Cherokeeeo5005 Esperantoja3053Japanesechr6182Cherokeeru316Russianar5280Arabicfr1791Frenchbn4892Banglaja5935Japaneseru2166Russianru3313Russianbn2954Banglael5891Greeken2583Englishja4981Japaneseru2842Russianar4910Arabicar1960Arabicccp5451Chakmaeo6088 Esperantoeo325 Esperantoiu1811 Inuktitutth5849Thaiiu8077 Inuktitutzh5948Chineseccp7586Chakmatr4288Turkishiu6710 Inuktitutzh5316Chinesefr6089Frenchfr6009Frenches4356Spanishsr982Serbianzh254Chinesechr5728Cherokeear1529Arabicen2632Englishbn7721Banglaiu2682 Inuktitutccp2366Chakmabn2655Banglasr767Serbianbn724Banglazh6173Chineseccp7835Chakmaja4267Japaneseiu3761 Inuktitutbn6663Banglatr5224Turkishel7745Greekes5023Spanishru6741Russianiu7356 Inuktitutfr3185Frenchsr6029Serbianel7571Greekes7800Spanishbn5872Banglael2292Greekes7063Spanishzh4273Chineseru2259Russianth4274Thaith1747Thaizh3674Chineseja594Japanesefr3667Frenchru2470Russianen2214Englishja1923Japaneseiu6894 Inuktitutchr6815Cherokeebn1951Banglael4564Greekes5987Spanishchr292Cherokeebn5318Banglaru7202Russianfr531Frenchfr7073Frenchbn3531Banglaccp5055Chakmabn469Banglaeo898 Esperantoeo7736 Esperantoes1607Spanishchr4619Cherokeeel8081Greekja1646Japanesechr5096Cherokeebn4071Banglasr6955Serbianchr1039Cherokeeja4438Japaneseja1677Japanesetr4214Turkishchr3477Cherokeear5915Arabicbn1413Banglabn7143Banglaeo5684 Esperantoes5046Spanishru1771Russianru1361Russiantr6508Turkishja3768Japaneseen1443Englishes8087Spanishru8126Russianel6921Greeken5054Englishth4742Thaiel3676Greekth1226Thaichr7839Cherokeezh3933Chineseth1582Thaiel6489Greekth1454Thaizh1954Chineseeo7557 Esperantoes5081Spanishfr2402Frenchja7866Japanesees6721Spanishsr3374Serbiantr7263Turkisheo2944 Esperantoccp1523Chakmaccp4597Chakmatr1028Turkishth7773Thaies638Spanishar4531Arabiciu7599 Inuktitutchr7685Cherokeear5830Arabicsr7043Serbianchr4966Cherokeees7716Spanishiu6336 Inuktituteo3008 Esperantoes5912Spanishth1905Thaien2509Englisheo1044 Esperantoen5571Englishsr4133Serbianbn1620Banglafr5242Frenches4519Spanishar7186Arabiciu5528 Inuktituten4802Englishes6932Spanishccp2636Chakmatr1498Turkishfr2308Frenches7447Spanishzh6841Chinesees1840Spanishchr1279Cherokeefr4693Frenchchr2009Cherokeezh68Chineseel7746Greekzh7233Chineseeo5076 Esperantoth2587Thaiar3351Arabicel7134Greekiu305 Inuktitutja7119Japaneseiu2339 Inuktitutiu3457 Inuktitutja6330Japaneseru186Russianth5287Thaisr4927Serbianfr5375Frenchja2667Japaneseth1329Thaien7905Englishen5624Englishbn4277Banglaen2393Englishbn4950Banglaeo8189 Esperantobn4861Banglaiu6676 Inuktituttr6221Turkisheo2186 Esperantotr5297Turkishel1232Greekeo380 Esperantosr4715Serbiantr363Turkishen5223Englisheo2835 Esperantotr6445Turkishchr11Cherokeeeo7617 Esperantoccp4380Chakmaccp3752Chakmaccp1439Chakmaja7325Japaneseth121Thaiccp2184Chakmaru1816Russianeo5794 Esperantoiu8140 Inuktitutsr2828Serbiantr6205Turkishccp475Chakmaiu4416 Inuktituteo5415 Esperantoccp2913Chakmafr7691Frenchar1287Arabictr6125Turkisheo4044 Esperantoar2680Arabicchr1014Cherokeeel2400Greeken4909Englishel6376Greekfr4137Frenchiu1519 Inuktituttr2181Turkishzh7712Chineseru8030Russianar2959Arabicbn4260Banglath1749Thaizh7898Chinesear6005Arabicfr4219Frenchchr3459Cherokeeth7850Thaith990Thaizh4712Chineseru6190Russianzh5661Chinesechr4760Cherokeetr5847Turkishth1012Thaiccp192Chakmath749Thaith7026Thaith2976Thaibn3509Banglasr7978Serbianth7379Thaizh1423Chineseel1933Greekfr8059Frenchccp5455Chakmasr3785Serbianiu1420 Inuktituttr7008Turkishth5348Thaieo6841 Esperantosr3238Serbianbn571Banglaen7575Englishtr2687Turkishfr3548Frenchar3056Arabicccp7165Chakmachr4487Cherokeebn5596Banglachr6793Cherokeeiu1402 Inuktitutar8103Arabiciu3396 Inuktitutth7626Thaien4748Englishbn7502Banglath2373Thaisr6288Serbianeo3733 Esperantoja1797Japaneseth3245Thaith4807Thaiiu4424 Inuktitutru5463Russianar2517Arabicfr4477Frenchen4695Englishes5057Spanishsr7646Serbianen7712Englishccp3754Chakmafr277Frenches5518Spanishfr7284Frenchja6441Japaneseth4549Thaiiu4988 Inuktitutccp1067Chakmaja8149Japaneseel4833Greekel5550Greekzh4664Chineseth2161Thaitr4300Turkishbn7069Banglaiu76 Inuktitutbn1421Banglaen4038Englishchr962Cherokeeccp7564Chakmasr6238Serbianth6036Thaija1114Japanesesr2287Serbianzh987Chinesebn3318Banglaccp5790Chakmachr7391Cherokeeen6198Englishfr861Frenchen4925Englishfr4131Frenchfr5418Frenchtr3097Turkishchr7307Cherokeetr3546Turkishru5158Russianccp5067Chakmasr519Serbianel1530Greekbn7303Banglafr5013Frenchar801Arabictr4014Turkishsr8101Serbianar1723Arabicbn4537Banglath3636Thaith5840Thaiel1683Greekiu1471 Inuktitutru2133Russianth3019Thaieo855 Esperantosr8100Serbianiu5824 Inuktitutiu4560 Inuktituttr4015Turkishel7293Greekru2122Russianar176Arabictr8007Turkishzh584Chinesesr7572Serbiansr5916Serbiantr431Turkishar2092Arabices3735Spanishccp6626Chakmaja2372Japanesechr1570Cherokeeen4174Englishru7759Russianel6745Greekja602Japanesear6108Arabicen2248Englishchr4889Cherokeetr3527Turkisheo1670 Esperantosr1101Serbianfr3861Frenchsr7853Serbianen3159Englishtr6962Turkishtr1743Turkishccp868Chakmaja2890Japanesesr3314Serbianar2762Arabictr3169Turkishbn845Banglael3418Greekel7583Greekiu7469 Inuktitutar389Arabicen6324Englishzh7996Chineseth3611Thaiccp1490Chakmael546Greekel6227Greekja1900Japaneseth247Thaith1844Thaizh2629Chineseru5974Russianru7842Russianiu3632 Inuktitutchr7561Cherokeeeo8139 Esperantoiu2801 Inuktitutfr3234Frenchbn5578Banglachr6523Cherokeechr7309Cherokeezh6642Chineseiu4370 Inuktitutccp1416Chakmaar5956Arabicel780Greekja3921Japaneseja7567Japanesear6667Arabicen7869Englishen2335Englishar702Arabicel6827Greekfr3042Frenchsr6302Serbianzh5387Chinesebn5721Banglath51Thaija2088Japanesechr1800Cherokeezh1214Chinesezh1690Chinesezh6108Chineseru1762Russiansr1503Serbiantr2490Turkishes7846Spanishzh4146Chinesefr5779Frenchen6246Englishel1045Greekth5233Thaiccp312Chakmaar2300Arabiczh4356Chineseru2700Russianfr5105Frenchsr5411Serbianzh7611Chineseen4732Englishru2491Russianes1126Spanishzh7239Chineseth4952Thaith7754Thaiar5272Arabiczh2743Chinesesr6610Serbianja1511Japanesechr3907Cherokeeiu1142 Inuktitutsr2393Serbianbn739Banglazh3621Chinesechr5803Cherokeeiu6343 Inuktitutiu4996 Inuktitutel7031Greekfr5194Frenchru3459Russianru7746Russianth3615Thaith6125Thaija3996Japaneseth104Thaitr4893Turkishiu1723 Inuktituttr2724Turkishccp6155Chakmatr460Turkishes8021Spanishiu1400 Inuktitutbn1958Banglael3387Greekar171Arabicar4749Arabicfr2228Frenchfr2644Frenchfr3835Frenches7431Spanishzh2806Chineseccp8098Chakmaeo2119 Esperantoccp2134Chakmaar6944Arabicar3967Arabicel7403Greekchr6409Cherokeetr2025Turkishen3289Englishel2014Greekar3076Arabicth8091Thairu3143Russianfr7037Frenchzh1876Chinesetr7615Turkishiu6725 Inuktitutfr1522Frenchccp6504Chakmaiu2807 Inuktituttr5145Turkishes6183Spanishccp3254Chakmaen4240Englishel116Greekzh3101Chineseth5899Thaiel1909Greekel7156Greekes7195Spanishfr2171Frenchsr1850Serbianja1771Japanesees7562Spanishtr4501Turkishja3046Japanesesr659Serbianja6234Japanesebn6231Banglaja572Japanesear5755Arabicar6105Arabicen5919Englishtr657Turkisheo3494 Esperantoru1614Russianchr6095Cherokeees6005Spanishja7396Japanesetr3445Turkishen1827Englishfr8135Frenchsr5635Serbianen5941Englishiu7472 Inuktitutfr380Frenchen1883Englishfr4742Frenchfr777Frenchzh1285Chinesesr2655Serbianja2339Japaneseen6199Englishbn250Banglachr6432Cherokeeiu3605 Inuktitutchr1380Cherokeebn4656Banglaen8075Englisheo7341 Esperantoes3356Spanishzh5349Chineseen2032Englisheo433 Esperantotr1392Turkishes2043Spanishiu4786 Inuktituteo4032 Esperantoccp5591Chakmaes5672Spanishja3011Japanesefr4879Frenchru4451Russiansr6700Serbianar2075Arabiczh4608Chinesear816Arabicbn3170Banglachr6648Cherokeechr3670Cherokeeen1973Englishja4123Japanesebn3510Banglaes4584Spanishccp6726Chakmaes7688Spanishen743Englishsr3389Serbiantr2703Turkishja5438Japaneseiu429 Inuktitutiu1317 Inuktitutzh4864Chinesees5603Spanishen3411Englishiu2032 Inuktitutes5377Spanishiu3234 Inuktitutzh7013Chinesefr7605Frenchiu6672 Inuktitutchr6050Cherokeeeo2550 Esperantozh7593Chineseel6290Greekiu2712 Inuktitutja7144Japaneseru6838Russiantr3788Turkisheo3737 Esperantoel5170Greekzh5365Chineseja1205Japanesetr8108Turkishes2540Spanishiu2685 Inuktitutbn7504Banglaen509Englishsr6930Serbianiu248 Inuktitutfr8132Frenchth1860Thaiar4380Arabices5489Spanishiu2817 Inuktitutes7080Spanishel6147Greekja2054Japanesetr1464Turkishtr5512Turkishtr7713Turkishel6596Greeken1508Englishel7087Greekccp4167Chakmaen2053Englishja4325Japanesezh1218Chinesebn6128Banglaes652Spanishtr1108Turkishbn574Banglaiu4003 Inuktitutiu7783 Inuktitutsr2506Serbianja493Japanesetr2493Turkishccp2429Chakmaiu3511 Inuktituttr4801Turkishel6577Greeken8031Englishel412Greekja5947Japaneseth6964Thaieo6456 Esperantosr7742Serbianbn6526Banglabn486Banglafr32Frenchel7651Greekja5191Japaneseccp7014Chakmachr967Cherokeeel4422Greekccp2519Chakmaes7880Spanishbn713Banglael61Greekel2690Greekiu4425 Inuktitutja6154Japaneseja416Japanesetr6643Turkishru4099Russianes7643Spanishes2084Spanishru1381Russiantr3396Turkishbn1194Banglatr6760Turkishja1945Japaneseru3941Russianeo3046 Esperantoru3647Russianeo35 Esperantoeo6281 Esperantoel737Greekja4474Japanesetr413Turkisheo4160 Esperantoth1122Thaitr2200Turkishsr2479Serbianth3131Thaies6312Spanisheo7267 Esperantosr6651Serbianiu807 Inuktitutsr2979Serbianchr5308Cherokeebn8189Banglaccp8042Chakmachr1654Cherokeear2460Arabicbn3108Banglazh2820Chineseiu2949 Inuktitutar3463Arabiciu5496 Inuktituttr5555Turkishtr1306Turkishfr2474Frenchsr301Serbianru412Russianru8081Russianth6106Thaizh3880Chinesear7567Arabiceo2004 Esperantoes1440Spanishar5897Arabicel693Greektr5259Turkishtr1707Turkishsr5214Serbianja7917Japanesechr3082Cherokeeiu372 Inuktitutja2760Japanesechr374Cherokeechr3689Cherokeeth4815Thaiccp7897Chakmaru5535Russiantr3968Turkishar3536Arabicbn628Banglaja5167Japaneseel1450Greekccp95Chakmaja6972Japaneseel1033Greekzh7761Chinesesr7664Serbianzh4734Chinesear1017Arabicchr841Cherokeebn4175Banglaen581Englishbn3333Banglael7302Greekfr6456Frenchzh22Chinesear302Arabicen6239Englishth2290Thaies7994Spanishtr7096Turkishccp3202Chakmath2853Thaitr6529Turkisheo739 Esperantoiu5416 Inuktitutru5028Russianar7335Arabiczh852Chinesear6066Arabiceo1946 Esperantobn5778Banglaiu4156 Inuktitutccp2327Chakmaeo6285 Esperantoen2728Englishiu7950 Inuktitutzh1973Chinesechr2419Cherokeeel4952Greekzh843Chinesebn4315Banglaeo7682 Esperantoiu2854 Inuktitutbn4709Banglaeo6923 Esperantoru3530Russiansr3254Serbianel2586Greekeo1561 Esperantochr6344Cherokeeth599Thaisr1849Serbianes5786Spanishiu6908 Inuktitutccp7722Chakmaar4337Arabicen5227Englishru3601Russianth5790Thaiel2208Greekru2505Russianar2883Arabicsr1764Serbiantr570Turkishtr8089Turkishar689Arabiceo5278 Esperantofr1462Frenchen6556Englishes1390Spanishzh308Chinesezh1518Chineseel775Greekth5462Thaiiu7205 Inuktitutzh1701Chineseru1256Russianel3262Greekchr3513Cherokeechr8079Cherokeetr4699Turkishen6075Englishtr5686Turkishsr5858Serbiantr4721Turkishes4148Spanishiu1154 Inuktitutzh2933Chinesezh4092Chinesesr6371Serbiansr7647Serbianar5301Arabicru2897Russianfr7499Frenchtr3985Turkishar6946Arabicfr1934Frenchchr7864Cherokeeth53Thaitr7412Turkishbn2606Banglaja2310Japanesear3874Arabices4108Spanisheo1723 Esperantoccp5952Chakmabn4003Banglaen2362Englishel1270Greeken7403Englishar1039Arabicja2448Japaneseen4214Englishru2648Russiansr5640Serbianel1975Greeksr5038Serbianzh1935Chineseccp3939Chakmaar399Arabicth7887Thaibn1223Banglatr5412Turkishccp7801Chakmafr7956Frenches4508Spanishfr4312Frenchbn598Banglaja8129Japaneseel2392Greekes4010Spanishsr5182Serbiantr416Turkishzh2630Chinesees5249Spanishfr2732Frenchfr3009Frenchiu6635 Inuktitutar1863Arabicth6067Thaifr7138Frenchtr208Turkishsr6152Serbianel5880Greekes80Spanishth4130Thaija980Japaneseth7647Thaitr2499Turkishccp3149Chakmaru306Russiantr479Turkishccp1834Chakmatr268Turkishsr6466Serbianiu6536 Inuktitutzh6698Chinesesr787Serbianiu3283 Inuktitutsr7438Serbianes951Spanishchr999Cherokeesr1306Serbianja1443Japanesesr3107Serbianth6063Thaiel1133Greekeo5857 Esperantoja2120Japanesear7340Arabices374Spanishth8008Thaitr2272Turkishtr2306Turkishsr5587Serbianel2710Greekja136Japaneseru3195Russianiu7853 Inuktituteo3769 Esperantoes1586Spanishbn4644Banglafr6469Frenchbn155Banglasr2907Serbianes2194Spanishchr4634Cherokeesr2280Serbianth3348Thaifr1715Frenchja1572Japaneseeo2685 Esperantozh1963Chinesefr1801Frenchchr1711Cherokeefr2692Frenchsr2438Serbianzh1616Chinesear2333Arabiciu5451 Inuktitutbn3723Banglaen7554Englishel3233Greekru5166Russianel7314Greekru2412Russianfr1326Frenchtr5617Turkishsr6379Serbianccp689Chakmaja456Japaneseja7100Japanesesr111Serbianel3199Greekiu3597 Inuktitutfr3189Frenchfr4714Frenchen22Englishchr6982Cherokeeel4376Greekfr88Frenchru1282Russiansr5160Serbianth379Thaibn5529Banglabn5693Banglaja2581Japanesebn3957Banglaes7978Spanishchr5748Cherokeeiu6149 Inuktitutja4537Japanesebn4605Banglasr4868Serbianja4851Japanesefr4807Frenchchr745Cherokeefr6059Frencheo1980 Esperantosr503Serbianar2710Arabicfr373Frenchsr5189Serbianru6752Russianja4128Japaneseccp4981Chakmasr7047Serbianen1467Englishel6817Greekel7543Greeken6937Englishiu3169 Inuktitutja6804Japanesefr2509Frencheo1735 Esperantozh4635Chineseccp4755Chakmachr2989Cherokeeiu1670 Inuktitutth2362Thairu4216Russiantr7620Turkishar6444Arabicccp5473Chakmasr3754Serbianiu2574 Inuktitutth4184Thaien4036Englisheo4967 Esperantobn3623Banglafr1626Frenchfr3907Frenchar2288Arabicsr1770Serbianccp5356Chakmazh1434Chinesechr6335Cherokeeiu1038 Inuktitutes296Spanishiu7578 Inuktituteo3181 Esperantoen1140Englishtr2370Turkishes8067Spanishfr3961Frenchiu31 Inuktitutfr3201Frenchen6197Englishiu1666 Inuktitutru4053Russianel2245Greekja4558Japanesesr4155Serbianth6019Thaibn2202Banglafr5912Frenchel6905Greekes477Spanishtr7954Turkishccp141Chakmafr1104Frenchtr3196Turkishfr8095Frenchiu1408 Inuktitutiu5771 Inuktitutel7247Greekeo5449 Esperantoru3813Russiansr3358Serbianiu2421 Inuktitutzh6632Chineseru2202Russianja2388Japaneseja3988Japanesesr2298Serbianja1440Japanesezh3709Chinesechr3426Cherokeechr1679Cherokeeru6000Russianja947Japanesetr4217Turkishth2819Thaija6521Japanesees3713Spanishiu5736 Inuktitutsr1179Serbianzh4247Chineseen3264Englishru1014Russianja2633Japanesetr7196Turkishsr5643Serbianru1604Russianar2895Arabicen150Englishiu6613 Inuktituten3634Englishar1424Arabicfr696Frenchja4689Japaneseru6956Russianar26Arabicen6484Englishel7544Greekfr3352Frenchja5900Japaneseth5404Thaibn1310Banglaccp781Chakmath1655Thaiel8154Greekeo7283 Esperantotr5344Turkishzh5159Chinesebn5236Banglachr5173Cherokeeth4688Thaien4595Englishccp5899Chakmaja6990Japaneseeo112 Esperantofr1878Frenchru7676Russianes5238Spanishtr5168Turkishth6045Thaija1641Japaneseel877Greekfr8054Frenchfr3062Frenchth2531Thaifr876Frenchiu5742 Inuktitutsr5870Serbiansr5841Serbianbn6040Banglaccp6012Chakmael2702Greekes6794Spanishchr3083Cherokeees4241Spanishccp4883Chakmabn2944Banglath14Thaiccp7719Chakmachr7872Cherokeefr2014Frenchbn1627Banglaiu3009 Inuktitutzh4651Chinesees4830Spanishen4110Englishtr3561Turkishtr1076Turkishru1222Russianchr6509Cherokeeth1360Thaieo8071 Esperantofr945Frenchsr691Serbiantr310Turkishel6883Greekes5753Spanishth2147Thaiel4130Greekja6011Japanesetr1136Turkishar2719Arabices690Spanishzh2597Chinesezh3250Chinesechr6960Cherokeeiu3834 Inuktituten973Englishfr3521Frenchchr5568Cherokeeen5105Englishchr887Cherokeear7868Arabiceo3300 Esperantoru1034Russianen6506Englishbn6204Banglaeo6436 Esperantoiu6136 Inuktitutes2029Spanishtr6449Turkishbn1993Banglaes115Spanishsr3617Serbianzh6433Chinesebn1104Banglaiu4201 Inuktitutfr3664Frenchbn1364Banglabn2321Banglaeo5268 Esperantoja6055Japanesetr2230Turkishbn7615Banglael221Greekar1984Arabicel6650Greekbn1833Banglaru4564Russianru6761Russianru7992Russianes3607Spanishth2034Thaitr7015Turkishchr4417Cherokeetr7264Turkishchr1754Cherokeeru4571Russianzh8114Chineseth5808Thaies2296Spanishiu1126 Inuktitutbn4368Banglafr8101Frenchsr3571Serbianchr1264Cherokeebn2489Banglath6412Thaith4070Thaies5674Spanishel1492Greekiu4941 Inuktitutar8027Arabices6299Spanisheo53 Esperantoeo6544 Esperantoru4593Russianen6379Englisheo6673 Esperantoru5815Russianchr7466Cherokeear1274Arabices5286Spanishccp7316Chakmatr8182Turkishiu3119 Inuktituten5894Englishchr4605Cherokeeiu2487 Inuktitutccp3728Chakmasr7724Serbianbn1550Banglaen2642Englishbn2135Banglaeo4898 Esperantoth6698Thaiel5548Greekeo5565 Esperantofr1818Frenchar878Arabicel806Greekiu409 Inuktitutchr1031Cherokeees2302Spanishchr590Cherokeefr666Frenchel6961Greekccp3280Chakmaiu390 Inuktitutiu7777 Inuktitutru7506Russianiu351 Inuktituten3426Englishja4682Japanesetr4057Turkishru7575Russianeo6368 Esperantoru4966Russianchr7386Cherokeeth6264Thaieo6628 Esperantoja4901Japaneseel4546Greekel5067Greekth5276Thaitr5265Turkishel3337Greekja5735Japaneseen5833Englishsr8172Serbianchr6197Cherokeeel5126Greekiu2849 Inuktitutru5441Russiantr4808Turkishsr2990Serbianeo404 Esperantoen4916Englisheo7578 Esperantoru3114Russianccp4569Chakmaeo8151 Esperantoeo1534 Esperantoar597Arabicja7118Japaneseiu2465 Inuktitutzh1967Chineseccp3993Chakmaes2693Spanishbn6802Banglabn1474Banglasr272Serbiansr2387Serbianfr3183Frenchzh8041Chinesefr1897Frenchen5348Englishtr6791Turkishar4483Arabicar3231Arabicccp1299Chakmaen2515Englishchr5268Cherokeeel6104Greektr5807Turkishth1600Thaiel3724Greekja5732Japanesees7702Spanishar6259Arabictr1768Turkishiu939 Inuktitutth2519Thaitr5193Turkishen8057Englishru1281Russianbn3128Banglael3700Greekru2997Russiansr4489Serbianchr4972Cherokeees6640Spanishzh3757Chinesebn7649Banglaiu6460 Inuktitutfr3180Frenchsr6629Serbianja6108Japanesear8178Arabicfr6131Frenchth5132Thaiiu4730 Inuktitutja5381Japaneseru8023Russianbn5228Banglath2707Thaifr6587Frenchsr3748Serbianzh4711Chineseen2950Englishru4631Russianes6699Spanishbn2403Banglafr767Frenchar4808Arabicbn7282Banglaen4495Englishel66Greekbn2471Banglachr7997Cherokeeru6827Russianar2755Arabicja2830Japanesesr1602Serbianchr6331Cherokeeja7686Japanesetr4065Turkisheo137 Esperantoen2203Englishes5907Spanishel8074Greekes5511Spanishzh7979Chineseth7098Thaija611Japaneseeo972 Esperantoccp1551Chakmaes5105Spanishes1134Spanishru6706Russiantr1899Turkishchr3702Cherokeefr517Frenchchr4400Cherokeebn5080Banglaiu1875 Inuktituttr3621Turkisheo6356 Esperantoar4249Arabicen230Englishzh509Chineseru4771Russianzh3031Chineseen7921Englishen3900Englishchr2337Cherokeeccp4689Chakmaja6874Japaneseeo4237 Esperantoth3235Thaies5262Spanishar4602Arabicchr1255Cherokeechr7929Cherokeesr189Serbianfr7806Frenchiu6793 Inuktitutchr2210Cherokeechr4154Cherokeear7241Arabicccp3919Chakmaiu5758 Inuktitutzh2768Chinesebn4526Banglazh4814Chineseen6462Englishzh1217Chinesechr813Cherokeear1418Arabicja6131Japanesesr4573Serbianchr5023Cherokeeiu7586 Inuktituten4731Englishbn3807Banglaru6675Russiansr3935Serbianel6496Greekel659Greekfr3782Frenchchr6281Cherokeefr3037Frenchccp7003Chakmafr145Frenchccp2391Chakmaeo3235 Esperantozh6135Chinesees3209Spanisheo5203 Esperantoar4774Arabicccp1405Chakmafr648Frenchccp4508Chakmaccp2922Chakmaru6269Russiantr7402Turkishzh5706Chinesebn3244Banglaja1176Japanesetr6594Turkisheo2142 Esperantoel789Greekfr3904Frenchbn2752Banglafr6423Frenchth180Thaizh5024Chineseth4315Thaija1163Japaneseth4445Thaith8076Thaija8016Japaneseru5373Russianel6549Greekja790Japaneseth430Thaieo3866 Esperantofr2798Frenchja5062Japaneseen2526Englishchr7096Cherokeeru4976Russianfr8152Frenchru7618Russianeo2861 Esperantochr201Cherokeeru4612Russianel2620Greekccp565Chakmaccp7988Chakmazh3550Chinesezh7059Chineseccp401Chakmaja4921Japaneseth5543Thaibn6159Banglafr5496Frenchar4931Arabicccp5507Chakmafr2125Frenchtr1925Turkishar2269Arabictr5601Turkishel454Greeken2479Englishru2146Russianen41Englishru3209Russianen719Englishes1025Spanishth6079Thaies6716Spanishtr3271Turkishtr2091Turkishccp5456Chakmath5756Thaiel1233Greekru3220Russianel7058Greeken6852Englisheo811 Esperantoen98Englisheo2074 Esperantobn408Banglabn6250Banglaru4713Russianes3804Spanishja6791Japanesetr4228Turkishja375Japaneseru1379Russianel2833Greekchr7496Cherokeeen2876Englishsr7629Serbianzh6838Chinesebn5093Banglachr6351Cherokeees1093Spanishes4626Spanishel6168Greekccp6194Chakmaccp6207Chakmaja7181Japaneseel8143Greekja2092Japaneseiu6797 Inuktituten5592Englishfr6350Frencheo4759 Esperantozh5176Chineseccp6991Chakmabn6124Banglael6341Greekes1492Spanishiu3335 Inuktitutar686Arabicchr104Cherokeeiu4943 Inuktitutfr1925Frenchsr7641Serbianth4842Thaibn4619Banglael950Greekru5451Russianbn111Banglaiu2703 Inuktitutel4540Greekes1611Spanishzh5310Chineseiu116 Inuktitutchr5975Cherokeechr4918Cherokeeeo5799 Esperantoel7720Greektr3452Turkishiu5960 Inuktitutzh4617Chinesebn830Banglaiu3558 Inuktitutar4672Arabicchr7731Cherokeeja2588Japaneseccp6066Chakmazh8152Chinesebn843Banglaen1255Englishja5125Japanesetr8155Turkishccp8051Chakmasr5254Serbiansr5267Serbianel6241Greekru1827Russianbn7564Banglaes1053Spanishiu6205 Inuktitutja3593Japaneseeo5674 Esperantoel971Greekru4603Russiantr4412Turkishbn1932Banglaes3807Spanishfr4483Frenchccp380Chakmaja4913Japanesebn7274Banglaen1995Englishth5686Thaiiu1398 Inuktitutja6307Japaneseth3166Thaiar7990Arabicsr3618Serbianth7707Thaiel3335Greekeo4085 Esperantofr9Frenchtr3987Turkishja3368Japanesebn951Banglaeo3272 Esperantoar2531Arabicru2657Russianccp780Chakmabn1134Banglath5249Thaizh912Chinesezh2535Chinesetr3766Turkishfr4110Frenchru2045Russianja2857Japanesebn7768Banglath4400Thaija5710Japanesetr2969Turkishiu8183 Inuktitutchr2505Cherokeeru8124Russianzh7931Chinesetr2908Turkishccp2266Chakmachr1568Cherokeeel6283Greeken7349Englishen3071Englishccp7843Chakmaes7238Spanishzh2407Chineseen5542Englishen1719Englishfr2559Frenchth5353Thaiar1259Arabicth3354Thaitr2439Turkishzh8130Chineseccp4621Chakmafr1430Frenchccp2331Chakmaes3378Spanishel601Greekes7481Spanishiu3203 Inuktitutccp2085Chakmaiu2936 Inuktitutth1263Thaieo4824 Esperantozh3571Chinesechr3798Cherokeear5718Arabictr7876Turkishth1174Thaies1151Spanishsr3516Serbianja7802Japanesebn1266Banglaru1150Russianchr2229Cherokeeccp900Chakmabn3628Banglaeo5859 Esperantoeo8023 Esperantoja3305Japanesesr6057Serbianzh7606Chinesesr5128Serbianeo5378 Esperantozh6739Chinesefr5441Frenchru3182Russianfr3470Frenchel951Greekth3192Thaija2105Japaneseel1937Greektr6675Turkishzh1767Chineseiu958 Inuktitutchr2653Cherokeees868Spanishar7695Arabictr7441Turkishen2041Englishfr4276Frenchzh6929Chineseru7190Russianccp499Chakmachr4356Cherokeeen3734Englishbn5674Banglaja6859Japaneseen1643Englishchr2149Cherokeeen7404Englishtr1482Turkishtr121Turkisheo1555 Esperantoel4258Greektr555Turkishccp6864Chakmabn5586Banglaru7788Russianeo1572 Esperantoiu1831 Inuktitutsr848Serbianth2832Thaitr7607Turkishfr3814Frenchbn1135Banglasr4710Serbianel3371Greekru5983Russianru7339Russianes3902Spanishzh2603Chineseth7188Thaies3094Spanishar8078Arabicbn6738Banglazh475Chineseru2763Russianbn2545Banglatr3376Turkishen1918Englishiu1434 Inuktitutchr5973Cherokeeeo6810 Esperantoru5182Russianar4690Arabicbn2680Banglasr1819Serbianth4245Thaien781Englishfr990Frenchbn2087Banglaeo2998 Esperantoiu5398 Inuktitutbn76Banglaes2460Spanishru1880Russianeo158 Esperantofr4134Frenchiu6074 Inuktituttr5685Turkishzh5003Chineseth4177Thaichr225Cherokeebn4607Banglaes5960Spanishes5154Spanishbn114Banglasr6745Serbianeo2632 Esperantotr4606Turkishfr3810Frenchru1451Russiansr8110Serbianth6601Thaibn738Banglafr127Frencheo2144 Esperantofr4661Frenchfr1787Frenchiu6157 Inuktitutccp5408Chakmaes3654Spanishen5565Englishbn3636Banglaen7185Englishtr2711Turkishzh5789Chinesechr7123Cherokeesr3211Serbianen19Englishel125Greekth25Thaiar3914Arabicar7151Arabicel4398Greekbn440Banglabn648Banglabn2898Banglaru6226Russianel3264Greekru1200Russianar6448Arabictr1448Turkishel5667Greekiu7254 Inuktituteo4412 Esperantobn1768Banglabn3468Banglachr311Cherokeeiu6385 Inuktitutth3470Thaies3247Spanishar6300Arabicsr726Serbianbn5108Banglaccp1246Chakmath4693Thaiel2053Greektr1163Turkishtr5748Turkishru903Russianel6047Greekchr6216Cherokeechr4844Cherokeetr7922Turkishru6709Russianiu6222 Inuktitutar3025Arabiciu3416 Inuktituttr7935Turkishsr4347Serbiantr1583Turkishfr5778Frenchiu4658 Inuktitutru2580Russianes3842Spanishiu5847 Inuktituttr5141Turkisheo3027 Esperantoes6551Spanishiu5904 Inuktitutel6156Greekel1979Greekeo7531 Esperantoar990Arabicel2337Greekfr4307Frenchja6034Japaneseja6369Japanesesr1016Serbianbn3459Banglaiu4987 Inuktitutel2829Greekeo193 Esperantotr2510Turkishja4527Japanesebn7246Banglaccp5590Chakmabn3449Banglaccp6920Chakmaja4410Japanesesr2151Serbianzh3546Chinesesr5420Serbianen1406Englishbn3578Banglaar7286Arabicchr6425Cherokeebn3791Banglaru3328Russianth2506Thaies1702Spanishar6680Arabicth407Thaitr7217Turkishru8163Russianbn3582Banglabn8180Banglaes1643Spanishsr904Serbianccp6933Chakmasr2464Serbianth3701Thaitr1203Turkishel4768Greekbn6183Banglasr827Serbiantr4990Turkishel241Greekar4845Arabicar1817Arabicbn7803Banglaeo2164 Esperantoiu6916 Inuktitutes6155Spanishfr4491Frenchja6280Japanesees1269Spanishtr2900Turkishchr2639Cherokeeel3134Greekzh4764Chineseel7300Greekchr6361Cherokeezh1487Chinesear6521Arabiczh3054Chineseel2561Greeksr5887Serbianth4780Thaifr579Frenches1567Spanishth392Thaien5569Englishel1812Greeken809Englishchr5898Cherokeeth2915Thaiccp3298Chakmath8114Thaichr5931Cherokeeel1921Greekja3521Japaneseru3172Russianfr629Frenchja2706Japaneseel5463Greekzh4572Chineseru6300Russianru3879Russiantr6405Turkishen4242Englishfr6956Frenches7852Spanishen6173Englisheo7077 Esperantochr7610Cherokeeru2212Russianzh7110Chineseen7700Englishbn1947Banglael674Greekar5425Arabicfr2246Frenchth5972Thaien1286Englishtr1384Turkishru3229Russianth228Thaizh348Chinesebn4452Banglachr4057Cherokeees6235Spanishru1399Russianccp6228Chakmaccp3386Chakmaen7188Englishru2271Russianth3082Thaichr7170Cherokeetr1114Turkishtr2825Turkishes1783Spanishzh4181Chineseth7868Thaisr384Serbianar2159Arabicchr8113Cherokeeccp4503Chakmael4666Greekeo3037 Esperantoja7173Japaneseen7733Englisheo5750 Esperantoccp6353Chakmaar2416Arabicru3967Russiantr3925Turkishja235Japanesebn314Banglaccp3789Chakmaes2626Spanishru920Russianzh4620Chineseth759Thaitr6877Turkishiu2101 Inuktitutbn2329Banglaja4546Japaneseel4155Greekru2566Russianiu1647 Inuktitutchr5425Cherokeeel5982Greekes7167Spanishth6243Thaiiu4518 Inuktitutes4666Spanishsr7489Serbianzh6413Chinesefr6964Frenchru5771Russianzh3885Chineseel5039Greekzh7463Chineseja2546Japaneseja3644Japanesebn2735Banglael4459Greekel7954Greeken119Englishzh6859Chineseen4668Englishchr7641Cherokeefr609Frenchru2660Russianes4007Spanishru7243Russiantr3909Turkishchr6632Cherokeefr2527Frenchiu144 Inuktitutar6324Arabicchr1897Cherokeeel3400Greekccp2752Chakmaeo1484 Esperantofr3227Frenchiu2559 Inuktituten7949Englishzh7119Chineseccp2478Chakmasr6451Serbiansr3103Serbianes2437Spanishen1857Englishchr7368Cherokeeen3798Englishtr6991Turkishar6587Arabicbn3299Banglafr4230Frenchru347Russianiu2190 Inuktitutel3937Greekbn7518Banglaccp4255Chakmaru3269Russianth2486Thaieo7182 Esperantoth2940Thaith4270Thaitr2266Turkishen3721Englishtr7430Turkishar2693Arabicbn6610Banglaiu5306 Inuktitutth2696Thaija2684Japaneseru2716Russiantr8184Turkishbn8014Banglaar3556Arabicchr7900Cherokeefr555Frenchru3441Russiansr3091Serbianar5480Arabiciu3945 Inuktitutzh1910Chineseccp840Chakmaes7439Spanishbn3003Banglaja746Japaneseen1281Englishchr2554Cherokeees3005Spanishbn4419Banglatr4075Turkishen2302Englishth7285Thaisr2242Serbianar5896Arabicen3024Englisheo3338 Esperantosr2073Serbianth6381Thairu6539Russianth6993Thaiar4967Arabictr3327Turkishccp3904Chakmafr3135Frenchtr6317Turkishes5806Spanisheo6962 Esperantoen1322Englishiu5134 Inuktituteo5823 Esperantoru2954Russiantr1858Turkishja1801Japaneseeo1907 Esperantoes5483Spanishtr6261Turkishbn6245Banglazh462Chineseccp7679Chakmaru5539Russianar7820Arabicja3567Japanesechr8076Cherokeesr3406Serbianfr7312Frenchiu8015 Inuktitutes360Spanishen2885Englishar8163Arabicfr3975Frenchfr1033Frenchtr3302Turkishtr5247Turkishja7592Japanesesr5260Serbianbn3350Banglasr6819Serbianel5806Greekfr3677Frenchja6240Japaneseth3160Thaiiu681 Inuktitutsr3624Serbianchr1891Cherokeesr3968Serbianen6394Englishtr719Turkishth23Thaizh3699Chineseja4403Japaneseeo2411 Esperantoes7427Spanishtr5258Turkishzh4448Chineseeo6620 Esperantozh334Chineseiu581 Inuktitutbn859Banglaen6904Englishtr3725Turkisheo262 Esperantofr187Frenchel6342Greeken2422Englishes3676Spanishen733Englishfr7306Frencheo7342 Esperantoja444Japanesear761Arabicar4186Arabicfr6994Frenchsr1259Serbianth2772Thaiiu1689 Inuktitutsr5783Serbianfr2860Frenchru538Russianfr6259Frenchtr4728Turkishel141Greekeo608 Esperantoel884Greekes5141Spanishzh850Chineseth5902Thaien1066Englishchr3345Cherokeeru7583Russianru1044Russianth409Thaija5833Japaneseccp2540Chakmasr7716Serbianbn7210Banglaccp3292Chakmatr3127Turkishbn182Banglaeo3594 Esperantoth346Thaiiu5949 Inuktitutiu4571 Inuktitutru4646Russianes4051Spanishchr7510Cherokeeja3099Japaneseiu7529 Inuktitutccp625Chakmabn944Banglaiu4369 Inuktitutel1776Greekbn1105Banglaen6898Englishccp7260Chakmatr6667Turkishru8039Russianar1878Arabicen4487Englishes6246Spanishru3329Russianccp2543Chakmaja1679Japaneseja7486Japanesear4302Arabicsr7002Serbianth2131Thaiar7756Arabicccp2472Chakmatr7255Turkishiu7094 Inuktitutccp6462Chakmaen4060Englishen1143Englishes7998Spanishtr929Turkishccp7085Chakmachr6580Cherokeeru5302Russianes2021Spanishen4650Englishiu5311 Inuktitutru5797Russianfr4782Frenchzh1808Chineseth5757Thaibn6847Banglaru4705Russiansr5289Serbianzh1770Chineseeo2520 Esperantoiu841 Inuktitutth6804Thaies2886Spanisheo731 Esperantoar1639Arabicja1243Japanesesr3937Serbianiu3422 Inuktitutar4059Arabiceo3017 Esperantosr2867Serbianth6589Thaith6775Thaichr3658Cherokeeccp2346Chakmaen3979Englishar295Arabicsr6433Serbianbn1107Banglaen4178Englisheo2010 Esperantoes8168Spanisheo152 Esperantoel1251Greekiu5408 Inuktitutar5017Arabiceo2892 Esperantoja794Japaneseeo2614 Esperantoar547Arabicen6967Englishccp2770Chakmaes3442Spanishiu6591 Inuktitutsr1775Serbiantr2821Turkishzh4109Chineseen2108Englishtr6863Turkishar3687Arabicbn3101Banglaccp3519Chakmachr2516Cherokeeccp2639Chakmachr1133Cherokeeen6107Englishes5901Spanishsr4022Serbianth1917Thaizh2045Chinesees4141Spanishzh1577Chineseccp4800Chakmachr5644Cherokeeel5299Greekes4832Spanishiu7125 Inuktitutru6024Russiantr2822Turkishtr5904Turkishzh4550Chinesechr4416Cherokeear1711Arabicar3107Arabicbn7278Banglael415Greekel885Greeksr3634Serbianth7093Thaitr6579Turkishru6212Russianen2207Englishja1869Japaneseiu5338 Inuktituten3292Englishiu4386 Inuktitutbn7146Banglaccp7736Chakmaen4460Englishar2383Arabicccp6400Chakmafr6156Frencheo4096 Esperantofr6124Frenchja5254Japanesear1114Arabicbn5133Banglachr4340Cherokeechr5464Cherokeear2611Arabicsr2945Serbianth5105Thaizh3731Chineseja5442Japaneseccp5025Chakmaeo4911 Esperantoeo4181 Esperantoeo3379 Esperantotr4637Turkishel3694Greekiu6130 Inuktitutru2326Russianar4383Arabicar2407Arabicru4179Russianchr3405Cherokeeel5008Greekccp5057Chakmaes3194Spanishar5795Arabicchr6353Cherokeefr5723Frenchar7076Arabicel1632Greekth1763Thaitr7303Turkishtr1674Turkishccp177Chakmaen688Englishchr5689Cherokeeru730Russianru2011Russianzh5343Chineseth4657Thaien2373Englishes3783Spanishzh1136Chineseen7267Englishen5817Englishtr818Turkishtr2212Turkishar3274Arabictr4680Turkishtr3465Turkishen6836Englishtr3659Turkishtr1471Turkishsr2487Serbianzh778Chineseen3907Englishsr2141Serbianiu1826 Inuktitutar760Arabicen7009Englishes4020Spanishru6268Russianccp7470Chakmaja5261Japanesechr6008Cherokeeccp5689Chakmael778Greektr5477Turkishel1401Greektr7501Turkishen3207Englishfr2967Frenchtr3943Turkishsr6095Serbianbn2077Banglaes5044Spanishes142Spanishes6515Spanishiu7107 Inuktitutbn877Banglachr5214Cherokeeel5551Greekiu3334 Inuktituten3193Englishar3905Arabicel6677Greekru4279Russiansr5859Serbiansr5550Serbianiu7797 Inuktitutzh1891Chineseiu2264 Inuktituteo1052 Esperantosr4660Serbianbn5055Banglaen1138Englishtr197Turkishfr7274Frenchiu6557 Inuktitutar362Arabicru2450Russianar279Arabicja4761Japanesear3998Arabicth7937Thaiccp5584Chakmaen2313Englishel6910Greekccp2353Chakmachr8022Cherokeees5028Spanishiu605 Inuktituttr6993Turkishes6723Spanishtr3741Turkishfr3887Frenchzh1351Chineseth183Thaifr4254Frenchccp7488Chakmazh4311Chineseja6702Japanesear6805Arabicfr6534Frenchru12Russianes643Spanishchr6785Cherokeeccp1956Chakmachr6924Cherokeeiu5974 Inuktituten6795Englishes731Spanishchr4263Cherokeeja7907Japanesefr6613Frenchzh6809Chineseccp4953Chakmaen181Englishru7460Russiantr5974Turkishbn3763Banglaccp6265Chakmazh1503Chinesetr884Turkishtr1035Turkishzh2105Chineseccp5128Chakmafr5621Frenches642Spanishja2309Japanesees3608Spanishchr4699Cherokeetr2536Turkishfr7454Frenchth5901Thaibn8172Banglaes3646Spanishja2380Japanesefr4238Frencheo5048 Esperantoru6469Russianru6992Russianen1123Englishar7660Arabicccp1656Chakmaiu4677 Inuktitutru7517Russianru5910Russianel720Greekeo6182 Esperantoru7237Russianen3995Englishes827Spanishfr1499Frencheo4251 Esperantotr1948Turkishth4963Thaien410Englishtr1559Turkishfr4630Frenchen5587Englishfr5763Frenchbn7550Banglatr3166Turkishel47Greekel7762Greeksr7007Serbianfr3956Frenchru4065Russianru6941Russianchr8015Cherokeeth6551Thaichr6522Cherokeetr3214Turkishchr7887Cherokeeen4217Englishfr3714Frenchtr489Turkishzh2727Chinesefr1931Frenchar518Arabictr7133Turkishzh6793Chineseeo1051 Esperantoth3106Thaisr4430Serbianfr1899Frenchth5500Thairu5857Russianchr5581Cherokeeru496Russianiu7906 Inuktitutfr1240Frenchel2633Greekru2128Russianbn3885Banglaccp6541Chakmachr7046Cherokeeja5111Japaneseja7948Japaneseeo1511 Esperantofr557Frenchsr7140Serbianen3949Englishru1223Russianth3858Thaifr2618Frenchth785Thaiel2585Greekja3568Japanesetr1872Turkishes5698Spanishccp5336Chakmabn2509Banglael3883Greekbn4310Banglaeo364 Esperantobn7720Banglaes1489Spanishes5909Spanishru2776Russianen6191Englishja6720Japaneseja8110Japanesefr3466Frenchtr5225Turkishsr5308Serbianiu7852 Inuktitutfr3938Frenchsr3562Serbianchr7355Cherokeeja6007Japanesezh5786Chinesesr2399Serbianes3423Spanishsr282Serbianel4144Greekiu1594 Inuktitutar5127Arabicar6980Arabicen6738Englishccp5808Chakmaes5768Spanishja3629Japaneseja4939Japanesefr3367Frenchzh6785Chineseth2494Thaichr7597Cherokeesr7917Serbiansr7304Serbianchr7899Cherokeeiu478 Inuktitutar3427Arabices3689Spanishru1456Russianth5825Thaizh4212Chineseeo631 Esperantoru158Russianzh6430Chineseel5516Greekiu820 Inuktitutbn4309Banglath5256Thaiar3845Arabictr3143Turkishth4515Thaisr4404Serbianru4751Russianes5448Spanishar971Arabicccp6296Chakmaen3311Englishja5225Japanesezh5544Chinesezh7327Chineseja6129Japaneseja5259Japanesezh4593Chineseccp2671Chakmaen2473Englishsr7291Serbiantr2574Turkishsr2039Serbianbn7148Banglaeo6594 Esperantotr6752Turkishru6206Russianeo1282 Esperantoen5658Englishja4476Japanesetr903Turkishtr6933Turkishru597Russianchr4395Cherokeesr6218Serbianchr7998Cherokeeel7739Greekchr6498Cherokeear6002Arabicen4516Englishchr6734Cherokeeru2765Russiantr6090Turkishzh4831Chineseen1694Englishes5038Spanishzh2477Chinesees1044Spanishar5306Arabiceo3040 Esperantobn3336Banglaja722Japaneseru6357Russiansr3709Serbiansr5545Serbianel525Greekfr4589Frenchzh7747Chineseja2218Japanesechr7275Cherokeechr799Cherokeeru1647Russianja3491Japanesees4202Spanishth4690Thairu693Russianja4656Japanesear2466Arabicbn1497Banglaccp819Chakmath5835Thaies7771Spanisheo4672 Esperantozh3924Chineseru5513Russianru2797Russianccp6389Chakmafr6768Frenchth2829Thaitr7294Turkishzh6404Chinesebn2811Banglaen1191Englishes7565Spanishbn2303Banglaar6072Arabicel5732Greekzh1418Chinesezh4090Chinesezh4613Chineseru5571Russianchr2062Cherokeeth7224Thaiar6212Arabicchr6900Cherokeetr4103Turkishtr5853Turkishar7346Arabicfr6697Frenchbn307Banglael2230Greekchr5751Cherokeear864Arabicar2152Arabicccp535Chakmasr2959Serbianfr3063Frenchth5937Thaizh4693Chineseel2995Greekru508Russiansr7657Serbiantr6303Turkishiu5514 Inuktitutccp4352Chakmaja3836Japanesear7043Arabicfr148Frenchzh2456Chinesetr7730Turkishru443Russianiu4290 Inuktitutes6926Spanishth7618Thaija5510Japaneseel758Greekar6722Arabicbn6206Banglael3104Greekth7821Thaichr940Cherokeechr7245Cherokeeru1965Russianel542Greekel607Greekeo4239 Esperantoru5184Russiansr3422Serbianiu5680 Inuktitutchr4229Cherokeetr1410Turkishel3174Greekiu2920 Inuktitutar7320Arabicth7517Thaith7442Thaisr2405Serbianja5994Japaneseja874Japanesees1762Spanishen6123Englishtr2759Turkishsr4686Serbianccp3198Chakmaen2069Englishar4223Arabicchr5455Cherokeeeo947 Esperantofr1825Frenchar3117Arabicen1134Englishth846Thaibn3035Banglath2116Thaichr6060Cherokeear3046Arabiciu3812 Inuktituteo7064 Esperantoccp2397Chakmaja3539Japanesesr5561Serbiansr2738Serbianth4359Thaith1409Thairu2315Russianes8038Spanishja110Japaneseja320Japanesebn1981Banglaes7839Spanishchr4559Cherokeeen4705Englishtr1242Turkishar2350Arabicja301Japanesezh7664Chineseja1618Japanesear3589Arabices7765Spanishel976Greektr7911Turkishiu6270 Inuktitutiu7479 Inuktitutchr7536Cherokeeen685Englishja1731Japanesezh175Chinesear2922Arabicbn7827Banglatr3679Turkishbn7723Banglasr4703Serbianar496Arabicel7099Greeken5640Englishar1399Arabicchr5101Cherokeebn5694Banglaccp7646Chakmatr4530Turkishen7929Englishsr6175Serbianccp3844Chakmaja1623Japaneseen5189Englishes4813Spanishiu4675 Inuktitutru7551Russiantr1444Turkishtr3980Turkishja1000Japaneseiu1694 Inuktitutru1619Russianen1157Englishar3617Arabices8126Spanishccp2199Chakmabn1873Banglafr5276Frenchfr6875Frenchel1321Greeken4130Englishja3310Japanesesr1543Serbianth5117Thaiccp1667Chakmazh0Chineseiu4384 Inuktitutru1300Russianja2174Japaneseru7229Russianeo3589 Esperantofr4890Frenchth6562Thaizh1526Chineseel1055Greeksr4707Serbianiu5653 Inuktitutar1578Arabicbn3579Banglaeo5312 Esperantoth1604Thaiccp7479Chakmasr1478Serbianel133Greekbn1697Banglaja2958Japanesezh6634Chinesees4895Spanishar7454Arabicfr6126Frenches4659Spanishfr1883Frenchja1495Japanesesr6067Serbianen7262Englishbn6551Banglafr4725Frenchen4970Englishja6393Japaneseiu4331 Inuktitutth1716Thaith5140Thaizh7302Chinesebn164Banglaja7739Japaneseel439Greekel5527Greekccp546Chakmatr597Turkishccp716Chakmafr484Frenchchr2885Cherokeeeo5472 Esperantoel6560Greekfr1752Frenchsr2605Serbiansr6442Serbianbn852Banglasr1522Serbianiu4023 Inuktitutchr1300Cherokeezh1483Chineseth7249Thaiel703Greekja3217Japanesesr6211Serbianccp6745Chakmachr6942Cherokeeeo226 Esperantosr5689Serbiansr4413Serbianes1887Spanishtr1126Turkishchr6222Cherokeeeo6225 Esperantochr7876Cherokeetr6127Turkishja3394Japaneseel138Greekiu7763 Inuktitutbn7324Banglaes7986Spanishbn4297Banglael2336Greekel8010Greekar2392Arabiciu860 Inuktituten365Englishccp6838Chakmaen5724Englishel2152Greeksr14Serbiantr6975Turkishar6626Arabicccp5696Chakmaar2479Arabicar2296Arabictr7155Turkishchr2230Cherokeechr5981Cherokeeel1230Greekccp959Chakmaru477Russianen3545Englishzh2738Chinesebn5909Banglaccp6208Chakmael5258Greekar4099Arabicar4884Arabiceo7323 Esperantofr2621Frenchen21Englishtr4019Turkishzh6178Chinesees5394Spanishfr3883Frenchen2692Englishru6610Russianccp5524Chakmaru3420Russianzh1820Chineseel561Greekzh1872Chinesezh6584Chinesear3495Arabicsr6345Serbianiu4738 Inuktituttr544Turkishru3765Russiansr5200Serbianccp6370Chakmaccp6003Chakmaeo3626 Esperantoth6048Thaiccp4495Chakmabn7509Banglaru2594Russianfr5372Frenchfr7519Frenchbn7985Banglafr3162Frenchccp6828Chakmachr1151Cherokeeiu1140 Inuktituten2852Englishth8058Thaiiu4682 Inuktitutth673Thairu885Russianeo987 Esperantofr3056Frenchsr7759Serbianth6394Thaiel5490Greekar6445Arabices609Spanishth7699Thaisr2711Serbianes6360Spanishccp1141Chakmath6286Thaichr114Cherokeeen4571Englishbn62Banglachr7489Cherokeefr7266Frenchiu4377 Inuktituteo7152 Esperantochr599Cherokeeth4111Thaiccp5742Chakmath4972Thaija2070Japaneseth4183Thaija7944Japaneseen7395Englishja3898Japanesechr6302Cherokeechr7413Cherokeees2961Spanishchr2873Cherokeeru623Russianzh4239Chineseth7623Thaies4353Spanishfr4256Frenchth6470Thaith7560Thaien706Englishsr1397Serbianar8142Arabicchr1966Cherokeeja2031Japaneseiu6590 Inuktitutar4763Arabicchr7177Cherokeeth3845Thaija6793Japaneseccp1418Chakmath2946Thairu6282Russianen4104Englishfr2395Frenchth3115Thaiiu8044 Inuktitutja1703Japaneseiu3541 Inuktituttr3769Turkishchr998Cherokeear3464Arabicsr1632Serbianfr4546Frencheo7089 Esperantoth5602Thaija2229Japaneseccp575Chakmazh1429Chinesees7622Spanishbn515Banglaen4234Englishes2189Spanishiu8164 Inuktituttr853Turkishel1367Greekru4717Russianbn4138Banglael3181Greekiu4979 Inuktitutel4327Greekth672Thaibn1172Banglasr1683Serbianja303Japaneseth6575Thaiar7738Arabiczh6233Chineseel6447Greekzh100Chinesechr3449Cherokeechr3224Cherokeesr5713Serbianth7753Thaith4998Thaisr7098Serbianth6946Thaiccp5498Chakmaiu574 Inuktitutar3560Arabicru7057Russianfr7566Frenchen1764Englishth4283Thaizh4559Chinesear7720Arabiczh77Chineseccp18Chakmaeo6099 Esperantoru4431Russiantr5349Turkishar6645Arabicchr501Cherokeeen7014Englisheo7333 Esperantoiu5793 Inuktitutja7942Japaneseja2245Japaneseja5899Japanesezh2834Chineseccp54Chakmaja5548Japaneseru6207Russianchr2144Cherokeezh765Chinesechr4122Cherokeefr4969Frenchfr6638Frenchtr6696Turkishes2998Spanishth1841Thaichr1894Cherokeetr3732Turkishen78Englishru3049Russianfr3730Frenchfr1408Frenchbn6406Banglazh7700Chinesetr1201Turkishes2609Spanishja3706Japanesesr7033Serbianar7251Arabices1504Spanishja6973Japaneseel7750Greekes7871Spanishru1848Russianfr6538Frenches1659Spanishja5238Japanesezh5351Chinesear2306Arabiciu7738 Inuktitutfr5958Frenchel4575Greekru2257Russianccp3414Chakmabn826Banglachr62Cherokeetr3293Turkishchr1414Cherokeeen2645Englishsr1364Serbiansr1514Serbianja4785Japaneseth4661Thaitr629Turkishiu8020 Inuktituttr6240Turkishar5924Arabiceo1352 Esperantoeo4630 Esperantobn227Banglaru4163Russianja3423Japaneseja4588Japanesetr3670Turkishes4690Spanishccp2812Chakmachr509Cherokeeeo3509 Esperantotr918Turkishen5751Englishru3938Russianen5041Englishccp2154Chakmaes832Spanishccp3821Chakmaar7348Arabiciu517 Inuktitutbn513Banglaiu3603 Inuktitutar713Arabiceo8162 Esperantochr3920Cherokeezh5045Chineseja6673Japaneseccp6584Chakmaeo5133 Esperantoeo6590 Esperantoiu4019 Inuktituttr6926Turkishzh2Chineseen7819Englishth6480Thairu7214Russianen2723Englishfr1359Frenchiu3793 Inuktitutiu6549 Inuktitutar239Arabicru4024Russianru8019Russianen391Englishen2570Englishiu5385 Inuktitutiu5713 Inuktitutsr3098Serbianth5095Thaiar2854Arabicfr1544Frenchccp5392Chakmath7190Thaith448Thaija8185Japaneseja7993Japaneseccp1402Chakmael7347Greekru1727Russiantr7092Turkishar3165Arabicar5997Arabicel2555Greekfr8121Frenchru6594Russianes4936Spanishfr4525Frenchsr1155Serbianes6603Spanishru3947Russiansr6439Serbianccp1763Chakmaes1144Spanishes6729Spanishzh1652Chinesesr5831Serbianbn4062Banglaar7718Arabicchr6802Cherokeees2293Spanishccp8101Chakmasr3040Serbianccp278Chakmaen4969Englishccp798Chakmaeo4315 Esperantoeo6956 Esperantoccp3773Chakmachr7668Cherokeesr1852Serbianen3529Englishccp4297Chakmabn7386Banglael4426Greekru5034Russianchr8009Cherokeeja5657Japanesees6149Spanishtr3727Turkishfr4597Frenchfr5260Frenchja7286Japaneseeo66 Esperantofr1393Frenchbn4131Banglaja3208Japanesezh5083Chineseiu5679 Inuktitutiu3299 Inuktitutchr2842Cherokeeel6842Greeken2881Englishfr2865Frenchel7528Greekfr6122Frenchchr1015Cherokeeiu2723 Inuktitutccp8005Chakmaccp1108Chakmaes4920Spanishiu2995 Inuktitutru5316Russiantr941Turkishfr5913Frenchfr7441Frenchel3451Greekchr3438Cherokeeru4178Russianfr7814Frenchar7574Arabictr1574Turkishja7609Japaneseen4591Englisheo1846 Esperantoes6014Spanishes2117Spanishzh3778Chineseiu5100 Inuktitutsr589Serbianes3928Spanishja7177Japanesesr5100Serbianbn8055Banglaiu2121 Inuktitutzh3269Chinesechr6393Cherokeeeo3864 Esperantoeo7238 Esperantofr931Frenchtr7705Turkishel5902Greeksr951Serbianru1231Russianru2140Russiansr7250Serbianccp5214Chakmael5995Greektr868Turkishsr3863Serbianfr3343Frencheo7926 Esperantoes278Spanishth201Thairu7968Russiantr2976Turkishth439Thaiar1309Arabicar1327Arabiceo3771 Esperantoiu2404 Inuktitutar814Arabicsr2931Serbianel7524Greeksr7713Serbianar6504Arabicbn2245Banglaes6092Spanishth2407Thaizh6055Chinesechr403Cherokeeen345Englishel4339Greeken4080Englishes4358Spanishru6661Russianel6236Greekru4574Russianes4357Spanishccp4192Chakmaar542Arabicel3354Greekja5064Japaneseth5499Thaiccp7206Chakmaen8097Englishchr4185Cherokeear6720Arabicru906Russianth7413Thaiccp4624Chakmath1569Thaitr1002Turkishar6650Arabices5488Spanishtr3315Turkishchr5810Cherokeeeo3420 Esperantoru4362Russianes3500Spanishes7936Spanishiu5586 Inuktitutzh6882Chineseja2302Japanesees4132Spanishtr3901Turkishiu6528 Inuktitutiu890 Inuktituteo2389 Esperantoeo7922 Esperantoru3339Russianeo1023 Esperantoar3543Arabicel1631Greekel2372Greekja1842Japanesetr2100Turkishzh8017Chineseccp6257Chakmaccp667Chakmath6581Thaichr582Cherokeeel6819Greekar1135Arabicel6024Greekth8181Thaiel3941Greekccp5097Chakmaen7269Englishth8111Thaiar107Arabicth7360Thaiel25Greekes5037Spanishfr3916Frenchar3922Arabicchr7593Cherokeeeo6493 Esperantosr795Serbianth1509Thaizh8145Chineseru1628Russianbn6806Banglaccp3064Chakmafr5738Frenchru4820Russianru5024Russianccp3509Chakmatr5961Turkishfr1010Frencheo6905 Esperantozh7005Chineseccp925Chakmaccp422Chakmaiu6355 Inuktitutfr1473Frenchth1214Thaien5597Englishel4873Greekru4320Russianzh581Chineseeo6530 Esperantofr4488Frenchar1915Arabicen582Englishtr2849Turkishtr3817Turkishzh3367Chinesezh6098Chineseru8096Russiantr1188Turkisheo2005 Esperantoen2477Englishiu3510 Inuktitutfr4871Frenchsr5107Serbianth2603Thaizh4743Chineseeo7113 Esperantoccp1032Chakmafr2939Frenches6521Spanishccp804Chakmaccp4978Chakmaeo7753 Esperantoru5813Russianen3047Englishar32Arabicar1186Arabicth612Thaitr5352Turkishes1972Spanishfr1761Frenchth3485Thaisr6230Serbianth6668Thaibn2069Banglaccp5511Chakmael923Greekar1792Arabicfr279Frenchccp7069Chakmaar1334Arabiciu7041 Inuktitutth2082Thaiccp6691Chakmath1682Thaith6047Thaith1893Thaifr2520Frenchar7663Arabicccp5238Chakmath2369Thaiiu7513 Inuktitutru2865Russiantr117Turkishiu7328 Inuktitutiu1836 Inuktitutbn4787Banglachr5336Cherokeeiu1195 Inuktitutru1148Russianth4429Thaiar6810Arabicbn6581Banglaiu3913 Inuktitutsr5231Serbianja1226Japanesear6218Arabicchr3882Cherokeeen8111Englishfr5751Frenchiu6315 Inuktituteo1843 Esperantochr531Cherokeeel3393Greekeo5954 Esperantoes1789Spanishchr4156Cherokeeja7723Japaneseccp6047Chakmath7148Thaies1333Spanishth7661Thaiccp7963Chakmaiu4169 Inuktitutar2347Arabicja4690Japanesetr3472Turkishel6370Greekth2151Thairu3189Russianth7594Thairu2086Russianes7601Spanishfr6310Frenchen235Englishja5304Japanesefr2373Frenchar4485Arabicbn6030Banglaar2283Arabiciu1738 Inuktitutja486Japaneseeo3640 Esperantosr4602Serbiantr4648Turkishar1485Arabicru6558Russianar2186Arabicbn790Banglaeo6506 Esperantotr2858Turkishtr7347Turkishzh6117Chineseen7480Englishtr1988Turkishes4077Spanishzh3750Chinesear7222Arabices6027Spanishzh5733Chinesebn5056Banglazh7805Chineseeo1415 Esperantoth8186Thaibn6951Banglath6731Thaizh3615Chineseiu3564 Inuktitutar962Arabicel8003Greekja3696Japaneseja5825Japanesechr3615Cherokeeeo538 Esperantoth3165Thaija7784Japaneseel7418Greekru4680Russianiu4841 Inuktitutccp1573Chakmath3702Thaifr96Frenchth5927Thaies2556Spanishja2096Japaneseru1179Russiantr1067Turkishzh4982Chineseen8038Englishccp2207Chakmaiu2340 Inuktitutth6439Thaizh2434Chineseen5019Englishes715Spanishzh2880Chinesebn258Banglaeo3443 Esperantoar6295Arabices7317Spanishzh6620Chineseel5503Greekel4169Greekes261Spanishes2020Spanishes227Spanishfr3627Frenchsr4468Serbiantr414Turkishiu7989 Inuktitutzh4668Chineseen5715Englisheo8036 Esperantoes3202Spanishru1067Russianeo7305 Esperantoel5741Greekiu2237 Inuktitutar5375Arabicccp7251Chakmafr5886Frenchel4849Greekzh883Chinesefr6437Frenchbn3405Banglaeo6941 Esperantozh4403Chineseja3147Japanesezh3912Chineseen1543Englishtr7200Turkishchr4784Cherokeetr3669Turkishzh5409Chineseiu5612 Inuktitutar2405Arabicchr814Cherokeeel5001Greekeo7923 Esperantoja4836Japaneseru6688Russianth8031Thaichr148Cherokeefr5812Frenchsr4481Serbianel6036Greekzh1124Chinesetr620Turkishiu2385 Inuktitutes7328Spanishja1567Japaneseccp5526Chakmachr6726Cherokeeiu5302 Inuktitutbn2466Banglachr3406Cherokeeja3044Japaneseru4407Russianru7850Russiansr2032Serbiansr2822Serbiantr5544Turkishchr2061Cherokeefr3332Frenchbn7218Banglachr5851Cherokeezh5096Chinesefr2526Frenchar8180Arabiczh3380Chineseccp1309Chakmazh2365Chinesetr5595Turkishiu7368 Inuktitutja479Japaneseja1772Japaneseja4372Japaneseccp562Chakmaiu2112 Inuktitutja3373Japanesetr77Turkishccp7493Chakmaen3502Englishru533Russianzh7007Chineseen1481Englishbn1564Banglachr2740Cherokeeiu4821 Inuktitutja7191Japaneseru5804Russianar6578Arabiczh5143Chinesetr2463Turkishja7764Japaneseccp210Chakmael1129Greekar1689Arabicfr6884Frenchru172Russianfr4621Frenchen3072Englishccp7126Chakmaen452Englishiu5070 Inuktitutfr4044Frenchbn4674Banglaar3200Arabicccp6451Chakmasr5884Serbianes850Spanishfr20Frenchen5992Englishiu6892 Inuktitutsr6259Serbiantr1805Turkishccp3486Chakmaru1535Russiansr7919Serbiansr1446Serbianja7813Japanesezh2736Chineseel5398Greekchr3481Cherokeeel7607Greekchr5659Cherokeeiu4501 Inuktitutfr2743Frenches6287Spanishbn2889Banglaccp1203Chakmaar4003Arabicbn8168Banglaccp3122Chakmaar5168Arabices285Spanishchr3634Cherokeezh7801Chinesezh3334Chineseja5151Japanesechr6410Cherokeees7191Spanisheo4105 Esperantobn7035Banglaes3537Spanishru7806Russiantr54Turkishccp6520Chakmachr5346Cherokeeel7592Greekccp5159Chakmaeo1414 Esperantoeo7391 Esperantoth778Thaichr191Cherokeeel1842Greekth5201Thaies1157Spanishfr7598Frenchccp4410Chakmaes68Spanishccp1582Chakmaru5198Russianzh5714Chineseru4110Russianar1512Arabicel7945Greekar732Arabicel1174Greekel7989Greeken1393Englishsr1031Serbiantr1875Turkishfr4616Frenchbn500Banglaiu5219 Inuktitutzh567Chinesechr1522Cherokeefr7210Frenchiu7357 Inuktitutja3682Japanesezh1736Chinesefr4601Frenchiu5687 Inuktitutja4995Japanesezh2765Chinesechr1799Cherokeeen7419Englishiu520 Inuktitutes6084Spanishja5351Japaneseiu5453 Inuktitutchr6808Cherokeeru900Russianfr3536Frenches4462Spanishfr7346Frenchsr3557Serbianes7246Spanishth2824Thaisr2285Serbianth2550Thaibn3858Banglaen2729Englishsr7953Serbianccp7189Chakmafr1991Frenchfr5107Frenchth6688Thaija5483Japaneseeo6718 Esperantoccp6545Chakmaru4801Russianen7893Englishth836Thaizh1018Chineseel2657Greeken7010Englishchr8102Cherokeees576Spanishja2185Japanesear4155Arabicen7935Englishes2476Spanishth6182Thaien7051Englishja4822Japaneseja64Japaneseth7267Thaieo6444 Esperantoiu413 Inuktitutel5129Greekfr2749Frencheo5739 Esperantochr172Cherokeeja8075Japanesees521Spanishsr5047Serbianiu2868 Inuktitutiu3014 Inuktituten3856Englishar7091Arabicru3473Russianccp6708Chakmaeo3719 Esperantoru6535Russianth8020Thaitr340Turkishar521Arabiciu7739 Inuktituteo5957 Esperantoes1075Spanishiu485 Inuktitutru5822Russiansr5696Serbianth6164Thaiar7099Arabiciu1380 Inuktitutar170Arabicar4347Arabicchr411Cherokeeccp4940Chakmael4997Greekeo5878 Esperantobn4677Banglaen281Englishth3013Thairu7738Russianel3320Greeksr6174Serbianru5133Russianel4678Greekth3386Thaichr7241Cherokeeccp6172Chakmachr6685Cherokeeja1737Japanesezh3119Chinesetr2697Turkishbn3019Banglasr2493Serbiansr5288Serbiantr3914Turkishchr1901Cherokeeja5364Japaneseel7073Greekru5524Russianth45Thaies618Spanishja2860Japaneseja6824Japaneseru2910Russianbn4803Banglaru7316Russianfr5557Frenchja7697Japanesees4125Spanishes4558Spanishchr2008Cherokeeeo1673 Esperantoru4414Russianth558Thaibn3279Banglaru6757Russianccp5227Chakmaja7477Japanesetr6878Turkishfr5652Frenches1069Spanishja573Japaneseth7218Thaibn4594Banglaccp6942Chakmaes4802Spanishfr5794Frenchiu2352 Inuktitutccp6532Chakmaar1531Arabiciu2797 Inuktitutth6277Thaifr2283Frenchchr2720Cherokeeel5079Greekzh646Chineseja4644Japaneseccp7304Chakmafr2583Frenchfr2596Frenchzh404Chineseel4679Greekar1536Arabicth6531Thaien6761Englishzh4000Chineseja4951Japanesesr1039Serbianiu2554 Inuktituteo251 Esperantoes5409Spanishchr5781Cherokeefr1913Frenchar3839Arabiczh8033Chinesefr6815Frenchbn5023Banglasr675Serbianccp2008Chakmaccp6083Chakmath5692Thairu4481Russiantr4385Turkishth4785Thaibn23Banglael6065Greekchr5105Cherokeeel7029Greekes6126Spanisheo3576 Esperantoes4812Spanishja6275Japaneseeo1485 Esperantoel1830Greeken4428Englishes2797Spanishccp3803Chakmasr4496Serbianccp6225Chakmaes6963Spanishiu8119 Inuktitutsr6320Serbianru4426Russiansr4721Serbianbn2979Banglath3952Thairu5916Russianru5170Russianel4640Greeken7527Englishen2678Englishes2990Spanishccp2794Chakmael2800Greekes6606Spanishar3031Arabicel1182Greekes1277Spanishtr2384Turkishtr1900Turkisheo1226 Esperantoth2684Thaifr4927Frenchtr4492Turkishja6897Japaneseel6022Greeksr6429Serbiantr5113Turkishes2091Spanishja3704Japaneseeo1874 Esperantoen5052Englisheo4232 Esperantofr7136Frenchru4005Russianzh1221Chinesefr4643Frenchru6530Russiansr727Serbianel7195Greekes6697Spanishja1306Japanesebn3964Banglafr6499Frenchbn6364Banglachr7232Cherokeetr913Turkishes7286Spanishar941Arabicbn1217Banglabn6624Banglafr7694Frenchru1293Russianeo5110 Esperantoen8136Englishen1542Englishth1436Thaitr8166Turkishsr2750Serbianzh4186Chineseth3189Thaibn7243Banglael4672Greekja4504Japanesebn7770Banglaiu4088 Inuktituteo4255 Esperantoeo1182 Esperantoja6483Japaneseel4903Greekzh5869Chinesefr2852Frenchfr3198Frenchar3109Arabicfr7118Frenchzh1501Chineseccp5182Chakmatr2869Turkishar7936Arabicfr7825Frenchja5375Japaneseeo3526 Esperantozh2492Chinesebn4870Banglafr3859Frenchbn2683Banglatr4213Turkishru3980Russianel5247Greekchr3917Cherokeeeo1175 Esperantoiu4521 Inuktitutth1258Thaichr7071Cherokeebn216Banglaiu5305 Inuktitutccp3923Chakmaiu4352 Inuktituteo5061 Esperantoccp2268Chakmaiu4193 Inuktitutsr1509Serbiantr2117Turkishen673Englishbn4096Banglaes207Spanishsr1007Serbianth5549Thaieo3356 Esperantoel7908Greeken217Englishru4615Russianeo4401 Esperantozh7783Chineseth4685Thaiiu7373 Inuktitutel1194Greeksr6727Serbianfr2592Frenches7024Spanishru3863Russianchr2807Cherokeefr2380Frenchiu617 Inuktituteo7269 Esperantofr8037Frenchfr4458Frenchfr7187Frenchen1384Englishccp2526Chakmath7989Thaien3830Englishru37Russianchr3527Cherokeeel4847Greekth5192Thaith5895Thaieo5927 Esperantoar374Arabicbn1259Banglabn4445Banglaen5444Englisheo6828 Esperantofr4355Frenchbn6006Banglachr3535Cherokeeccp4248Chakmath466Thaitr7815Turkishes223Spanishfr307Frenches7778Spanishja1363Japanesees7393Spanishbn4813Banglazh5987Chineseja3741Japaneseja6873Japaneseen7393Englisheo1235 Esperantoar6970Arabicchr6733Cherokeeth2400Thaieo8186 Esperantobn4261Banglath4733Thaiccp7574Chakmasr1069Serbianes7072Spanishar566Arabictr6636Turkishja192Japanesefr7968Frenchsr7150Serbianzh4231Chineseeo1071 Esperantoar4024Arabicru5468Russianeo3056 Esperantoiu7778 Inuktitutes4944Spanishel2972Greekfr7809Frenchiu8137 Inuktitutth418Thaiiu1353 Inuktitutccp7486Chakmath6788Thairu2245Russiansr4040Serbianeo3678 Esperantoth3574Thaiar1736Arabicen7925Englishth983Thaibn4176Banglachr6773Cherokeebn347Banglael3122Greekes7472Spanishar1346Arabicchr4529Cherokeezh944Chineseiu4480 Inuktituttr6834Turkishbn4712Banglael1591Greekja8090Japaneseth2703Thaiiu6259 Inuktitutru100Russianccp2972Chakmael5662Greekccp2722Chakmatr6187Turkishbn4600Banglaja7378Japanesebn4762Banglaru2097Russianen1016Englishfr2330Frenchccp2791Chakmatr2999Turkishbn4363Banglaes7341Spanishiu3950 Inuktitutar5931Arabices5852Spanishar3787Arabicru5185Russianchr248Cherokeeel5898Greekru8038Russianzh4544Chinesechr952Cherokeechr1757Cherokeezh8179Chineseth7052Thaiel3947Greekru3764Russianeo6431 Esperantoen1172Englishar3077Arabicja4589Japaneseiu3086 Inuktitutja5311Japaneseru6253Russiansr2725Serbiansr7542Serbianen2939Englishtr5460Turkishar1888Arabicja5580Japaneseel3242Greektr2242Turkishja1563Japaneseel223Greekeo7582 Esperantoth3026Thaifr5250Frenchja5241Japaneseth5903Thaith6829Thaichr7855Cherokeefr2377Frenchar2281Arabicel341Greekccp5506Chakmaen2455Englishen7524Englisheo5149 Esperantoeo6668 Esperantoeo5781 Esperantoru331Russianru1420Russianar4960Arabiceo6807 Esperantoes5168Spanishen1705Englishel356Greekar6155Arabicen1999Englishfr7676Frenches5348Spanishchr2965Cherokeeeo4240 Esperantozh6428Chineseel5986Greekja2537Japaneseccp1176Chakmasr599Serbianchr6422Cherokeees4454Spanishja5749Japaneseth5977Thaisr7679Serbianfr4406Frenchel1320Greekeo4005 Esperantochr5968Cherokeeccp5160Chakmasr7429Serbiantr4109Turkisheo6421 Esperantoiu235 Inuktitutfr7131Frenchtr1119Turkishru1706Russianen2585Englishth3243Thaiel4965Greekchr1275Cherokeesr841Serbianes3533Spanishbn2631Banglasr690Serbianzh3288Chineseeo2705 Esperantoru1010Russianja540Japanesetr442Turkishtr5991Turkishru2290Russianzh4218Chinesesr5067Serbianja1197Japaneseiu6288 Inuktitutzh5776Chineseth4978Thaiccp4496Chakmael3873Greekzh3673Chinesechr6495Cherokeeen2045Englisheo2940 Esperantosr5644Serbianchr1774Cherokeeen2037Englishchr5239Cherokeefr3476Frenchccp863Chakmaiu6736 Inuktitutsr5963Serbianchr3030Cherokeeel7115Greekchr1267Cherokeeen7778Englishru2351Russianfr7319Frenchar1212Arabicth2756Thaith5546Thaitr8063Turkishar7856Arabiczh5461Chinesezh6985Chineseccp4147Chakmaen7591Englishfr7504Frenchchr7255Cherokeezh7114Chinesees7509Spanishes4499Spanishchr5719Cherokeear6330Arabicel829Greeken3471Englishsr76Serbiantr6130Turkishth7165Thairu366Russianru1810Russianth3034Thaizh74Chinesetr148Turkishiu1619 Inuktitutsr4319Serbiansr8019Serbianeo6405 Esperantoar4484Arabicbn5691Banglafr863Frenchth7988Thaiiu3787 Inuktitutfr3242Frenchen5142Englishen3786Englishes6254Spanishfr1367Frenchchr2681Cherokeeja3447Japaneseel835Greekeo7162 Esperantoen784Englishfr7341Frenchja665Japanesebn5341Banglazh3979Chinesear6878Arabiceo4117 Esperantoccp3162Chakmaar3302Arabicja4365Japaneseth2970Thaichr4936Cherokeeja5150Japaneseth1753Thaichr6939Cherokeezh1196Chinesees5200Spanishzh6541Chinesezh5740Chineseja350Japanesechr6452Cherokeear4732Arabicja4783Japanesechr5006Cherokeetr1273Turkishiu1809 Inuktituteo6888 Esperantoes4687Spanishes3756Spanishja5964Japanesebn7200Banglatr7078Turkishel2473Greekbn3708Banglaen6868Englishiu5464 Inuktitutel2487Greekbn3568Banglaeo6645 Esperantoes5543Spanishsr858Serbianth5643Thaiar3124Arabictr124Turkishen4369Englishru3842Russianbn3771Banglaiu1537 Inuktitutbn655Banglaes2386Spanishfr7476Frenchiu6570 Inuktitutiu7281 Inuktituttr2064Turkishen4041Englishtr3021Turkishja5332Japanesear1328Arabiczh4264Chinesefr3666Frenchsr5278Serbianiu5979 Inuktitutel2659Greekja4028Japanesetr4348Turkishfr3097Frenchen6886Englishes7469Spanishtr6133Turkishtr4802Turkishccp1437Chakmaes3829Spanishth803Thaizh1442Chinesezh8129Chinesetr1816Turkishth5851Thaith5167Thaies1091Spanishzh2104Chinesear1809Arabicru4800Russianel7805Greeken1844Englishru1099Russianar5844Arabicel7668Greekeo3971 Esperantoen2222Englishru864Russianccp1037Chakmaja4162Japaneseel397Greektr7410Turkishel4211Greeken5906Englishru7380Russianja5736Japaneseru2340Russianar1065Arabicsr1014Serbiansr958Serbianeo6316 Esperantobn1539Banglabn7227Banglaeo6157 Esperantoiu870 Inuktitutsr2158Serbiansr6056Serbianccp7289Chakmaiu1637 Inuktitutsr3592Serbianth6021Thaith6115Thaisr971Serbianchr1004Cherokeeel3815Greekiu7393 Inuktituttr878Turkishbn5088Banglael815Greekel7219Greektr2543Turkishzh2669Chineseel5179Greektr4521Turkishja3851Japaneseen752Englishel6924Greekzh3877Chineseth7500Thaizh3402Chineseccp2019Chakmaja4439Japaneseen3956Englishzh1032Chineseen1020Englishja6777Japanesetr1145Turkishtr7678Turkishccp1661Chakmabn3915Banglafr5823Frenchbn7351Banglaar4954Arabices2765Spanishru4806Russianth7279Thaizh339Chineseru1961Russianen3241Englishth3564Thaitr401Turkisheo4513 Esperantoeo256 Esperantoes2368Spanishsr7313Serbianel195Greektr3481Turkishtr6784Turkishes4546Spanisheo6937 Esperantoth2323Thaieo4737 Esperantofr5370Frenchzh6791Chinesechr7300Cherokeeru2000Russianchr4438Cherokeeeo5205 Esperantoru2480Russianbn3737Banglaes4332Spanishel2333Greeksr4628Serbianeo3565 Esperantoel7041Greektr4504Turkishar2080Arabicja2873Japanesebn2789Banglaccp5730Chakmachr5915Cherokeeru4303Russianru3394Russianccp1474Chakmaes7668Spanishchr1415Cherokeeiu4649 Inuktitutzh7406Chinesezh4483Chineseel2455Greekes952Spanishsr6574Serbianiu480 Inuktitutja6518Japaneseeo671 Esperantoth175Thaizh2950Chinesear5667Arabices7212Spanisheo2249 Esperantoccp4104Chakmaccp4649Chakmaja2707Japaneseeo768 Esperantoccp4600Chakmachr7062Cherokeechr24Cherokeeiu4404 Inuktitutes998Spanishja6894Japaneseen4412Englishccp7043Chakmaen818Englishbn3795Banglatr4653Turkisheo4478 Esperantoru3429Russiansr3947Serbianth7314Thaichr7509Cherokeesr1441Serbianen4384Englisheo4571 Esperantoja2640Japaneseel2166Greekth2081Thaichr636Cherokeefr802Frenchfr6974Frenchfr8140Frenches7814Spanishchr6296Cherokeechr7278Cherokeear2946Arabictr3250Turkishtr4623Turkishiu7932 Inuktitutel3083Greekja672Japaneseen736Englishen4955Englishfr2615Frenches1520Spanishfr7565Frenches3505Spanishru5889Russianel7204Greekiu4898 Inuktitutru163Russianccp1816Chakmaeo6443 Esperantobn2991Banglaja5468Japaneseeo1312 Esperantoar4451Arabiceo6684 Esperantoel1221Greekru732Russianru1424Russiantr3615Turkishel4142Greeken5011Englishes3097Spanishzh7337Chineseth2679Thaichr6562Cherokeeth7957Thaitr1050Turkishth6692Thaiccp1394Chakmazh3363Chinesezh5519Chineseen7686Englishru1187Russianiu6104 Inuktitutja468Japaneseen7765Englishzh4524Chineseth4479Thaizh621Chinesesr7351Serbianiu7765 Inuktitutth6409Thaiel5090Greekel1201Greekzh4352Chinesezh6552Chinesebn6410Banglaccp451Chakmaen5528Englishzh1606Chineseen148Englishja5635Japanesechr2829Cherokeees3206Spanish \ No newline at end of file
diff --git a/vendor/zerovec/benches/testdata/large_zerohashmap.postcard b/vendor/zerovec/benches/testdata/large_zerohashmap.postcard
deleted file mode 100644
index 905a94cdd..000000000
--- a/vendor/zerovec/benches/testdata/large_zerohashmap.postcard
+++ /dev/null
Binary files differ
diff --git a/vendor/zerovec/benches/testdata/large_zeromap.postcard b/vendor/zerovec/benches/testdata/large_zeromap.postcard
deleted file mode 100644
index 7dfc2daf6..000000000
--- a/vendor/zerovec/benches/testdata/large_zeromap.postcard
+++ /dev/null
Binary files differ
diff --git a/vendor/zerovec/benches/zeromap.rs b/vendor/zerovec/benches/zeromap.rs
index 5a759fd09..5f3e87b8c 100644
--- a/vendor/zerovec/benches/zeromap.rs
+++ b/vendor/zerovec/benches/zeromap.rs
@@ -2,7 +2,7 @@
// called LICENSE at the top level of the ICU4X source tree
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
-use std::{collections::HashMap, fs};
+use std::collections::HashMap;
use criterion::{black_box, criterion_group, criterion_main, Criterion};
@@ -103,52 +103,46 @@ fn generate_zerohashmap() {
println!("{buf:?}");
}
-#[cfg(feature = "generate")]
-fn generate_test_data() {
- let zeromap = build_zeromap(true);
- let zeromap_bytes = postcard::to_stdvec(&zeromap).unwrap();
- fs::write("large_zeromap.postcard", &zeromap_bytes).unwrap();
-
- let hashmap = build_hashmap(true);
- let hashmap_bytes = postcard::to_stdvec(&hashmap).unwrap();
- fs::write("large_hashmap.postcard", &hashmap_bytes).unwrap();
-
- let zerohashmap = build_zerohashmap(true);
- let zerohashmap_bytes = postcard::to_stdvec(&zerohashmap).unwrap();
- fs::write("large_zerohashmap.postcard", &zerohashmap_bytes).unwrap();
-}
-
fn overview_bench(c: &mut Criterion) {
bench_zeromap(c);
bench_hashmap(c);
bench_zerohashmap(c);
-
- #[cfg(feature = "generate")]
- generate_test_data();
}
fn bench_zeromap(c: &mut Criterion) {
- // Uncomment the following line to re-generate the binary data.
+ // Uncomment the following line to re-generate the const data.
// generate_hashmap();
bench_deserialize(c);
+ #[cfg(feature = "bench")]
bench_deserialize_large(c);
bench_lookup(c);
+ #[cfg(feature = "bench")]
bench_lookup_large(c);
}
fn build_zeromap(large: bool) -> ZeroMap<'static, Index32Str, Index32Str> {
- let mut map: ZeroMap<Index32Str, Index32Str> = ZeroMap::new();
- for (key, value) in DATA.iter() {
+ // TODO(#2826): This should use ZeroMap::from_iter, however that currently takes
+ // *minutes*, whereas this code runs in milliseconds
+ let mut keys = Vec::new();
+ let mut values = Vec::new();
+ let mut data = DATA.to_vec();
+ data.sort();
+ for &(key, value) in data.iter() {
if large {
for n in 0..8192 {
- map.insert(indexify(&format!("{key}{n}")), indexify(value));
+ keys.push(format!("{key}{n:04}"));
+ values.push(indexify(value));
}
} else {
- map.insert(indexify(key), indexify(value));
+ keys.push(key.to_owned());
+ values.push(indexify(value));
}
}
- map
+
+ let keys = keys.iter().map(|s| indexify(s)).collect::<Vec<_>>();
+ // keys are sorted by construction
+ unsafe { ZeroMap::from_parts_unchecked(VarZeroVec::from(&keys), VarZeroVec::from(&values)) }
}
fn bench_deserialize(c: &mut Criterion) {
@@ -161,8 +155,9 @@ fn bench_deserialize(c: &mut Criterion) {
});
}
+#[cfg(feature = "bench")]
fn bench_deserialize_large(c: &mut Criterion) {
- let buf = read_large_zeromap_postcard_bytes();
+ let buf = large_zeromap_postcard_bytes();
c.bench_function("zeromap/deserialize/large", |b| {
b.iter(|| {
let map: ZeroMap<Index32Str, Index32Str> =
@@ -185,8 +180,9 @@ fn bench_lookup(c: &mut Criterion) {
});
}
+#[cfg(feature = "bench")]
fn bench_lookup_large(c: &mut Criterion) {
- let buf = read_large_zeromap_postcard_bytes();
+ let buf = large_zeromap_postcard_bytes();
let map: ZeroMap<Index32Str, Index32Str> = postcard::from_bytes(&buf).unwrap();
c.bench_function("zeromap/lookup/large", |b| {
b.iter(|| {
@@ -199,21 +195,20 @@ fn bench_lookup_large(c: &mut Criterion) {
});
}
-fn read_large_zeromap_postcard_bytes() -> Vec<u8> {
- let path = concat!(
- env!("CARGO_MANIFEST_DIR"),
- "/benches/testdata/large_zeromap.postcard"
- );
- fs::read(path).unwrap()
+#[cfg(feature = "bench")]
+fn large_zeromap_postcard_bytes() -> Vec<u8> {
+ postcard::to_stdvec(&build_zeromap(true)).unwrap()
}
fn bench_hashmap(c: &mut Criterion) {
- // Uncomment the following line to re-generate the binary data.
+ // Uncomment the following line to re-generate the const data.
// generate_hashmap();
bench_deserialize_hashmap(c);
+ #[cfg(feature = "bench")]
bench_deserialize_large_hashmap(c);
bench_lookup_hashmap(c);
+ #[cfg(feature = "bench")]
bench_lookup_large_hashmap(c);
}
@@ -241,8 +236,9 @@ fn bench_deserialize_hashmap(c: &mut Criterion) {
});
}
+#[cfg(feature = "bench")]
fn bench_deserialize_large_hashmap(c: &mut Criterion) {
- let buf = read_large_hashmap_postcard_bytes();
+ let buf = large_hashmap_postcard_bytes();
c.bench_function("zeromap/deserialize/large/hashmap", |b| {
b.iter(|| {
let map: HashMap<String, String> = postcard::from_bytes(black_box(&buf)).unwrap();
@@ -261,8 +257,9 @@ fn bench_lookup_hashmap(c: &mut Criterion) {
});
}
+#[cfg(feature = "bench")]
fn bench_lookup_large_hashmap(c: &mut Criterion) {
- let buf = read_large_hashmap_postcard_bytes();
+ let buf = large_hashmap_postcard_bytes();
let map: HashMap<String, String> = postcard::from_bytes(&buf).unwrap();
c.bench_function("zeromap/lookup/large/hashmap", |b| {
b.iter(|| {
@@ -272,33 +269,29 @@ fn bench_lookup_large_hashmap(c: &mut Criterion) {
});
}
-fn read_large_hashmap_postcard_bytes() -> Vec<u8> {
- let path = concat!(
- env!("CARGO_MANIFEST_DIR"),
- "/benches/testdata/large_hashmap.postcard"
- );
- fs::read(path).unwrap()
+#[cfg(feature = "bench")]
+fn large_hashmap_postcard_bytes() -> Vec<u8> {
+ postcard::to_stdvec(&build_hashmap(true)).unwrap()
}
fn bench_zerohashmap(c: &mut Criterion) {
- // Uncomment the following line to re-generate the binary data.
+ // Uncomment the following line to re-generate the const data.
// generate_zerohashmap();
bench_deserialize_zerohashmap(c);
+ #[cfg(feature = "bench")]
bench_deserialize_large_zerohashmap(c);
bench_zerohashmap_lookup(c);
+ #[cfg(feature = "bench")]
bench_zerohashmap_lookup_large(c);
}
fn build_zerohashmap(large: bool) -> ZeroHashMap<'static, Index32Str, Index32Str> {
- let mut kv = match large {
- true => Vec::with_capacity(8192 * DATA.len()),
- false => Vec::with_capacity(DATA.len()),
- };
+ let mut kv = Vec::new();
for (key, value) in DATA.iter() {
if large {
- for n in 0..8192 {
+ for n in 0..512 {
kv.push((format!("{key}{n}"), indexify(value)));
}
} else {
@@ -320,12 +313,12 @@ fn bench_deserialize_zerohashmap(c: &mut Criterion) {
}
fn bench_deserialize_large_zerohashmap(c: &mut Criterion) {
- let buf = read_large_zerohashmap_postcard_bytes();
+ let buf = large_zerohashmap_postcard_bytes();
c.bench_function("zerohashmap/deserialize/large", |b| {
b.iter(|| {
let map: ZeroHashMap<Index32Str, Index32Str> =
postcard::from_bytes(black_box(&buf)).unwrap();
- assert_eq!(map.get(indexify("iu3333")).map(|x| &x.0), Some("Inuktitut"));
+ assert_eq!(map.get(indexify("iu333")).map(|x| &x.0), Some("Inuktitut"));
})
});
}
@@ -348,16 +341,15 @@ fn bench_zerohashmap_lookup(c: &mut Criterion) {
});
}
+#[cfg(feature = "bench")]
fn bench_zerohashmap_lookup_large(c: &mut Criterion) {
- let buf = read_large_zerohashmap_postcard_bytes();
+ let buf = large_zerohashmap_postcard_bytes();
let zero_hashmap: ZeroHashMap<Index32Str, Index32Str> = postcard::from_bytes(&buf).unwrap();
c.bench_function("zerohashmap/lookup/large", |b| {
b.iter(|| {
assert_eq!(
- zero_hashmap
- .get(black_box(indexify("iu3333")))
- .map(|x| &x.0),
+ zero_hashmap.get(black_box(indexify("iu333"))).map(|x| &x.0),
Some("Inuktitut")
);
assert_eq!(
@@ -368,12 +360,9 @@ fn bench_zerohashmap_lookup_large(c: &mut Criterion) {
});
}
-fn read_large_zerohashmap_postcard_bytes() -> Vec<u8> {
- let path = concat!(
- env!("CARGO_MANIFEST_DIR"),
- "/benches/testdata/large_zerohashmap.postcard"
- );
- fs::read(path).unwrap()
+#[cfg(feature = "bench")]
+fn large_zerohashmap_postcard_bytes() -> Vec<u8> {
+ postcard::to_stdvec(&build_zerohashmap(true)).unwrap()
}
criterion_group!(benches, overview_bench);
@@ -403,5 +392,5 @@ impl<'a> ZeroMapKV<'a> for Index32Str {
#[inline]
fn indexify(s: &str) -> &Index32Str {
- unsafe { ::core::mem::transmute(s) }
+ unsafe { &*(s as *const str as *const Index32Str) }
}
diff --git a/vendor/zerovec/src/flexzerovec/databake.rs b/vendor/zerovec/src/flexzerovec/databake.rs
index 4ce5f7dea..bd165352e 100644
--- a/vendor/zerovec/src/flexzerovec/databake.rs
+++ b/vendor/zerovec/src/flexzerovec/databake.rs
@@ -9,7 +9,7 @@ impl Bake for FlexZeroVec<'_> {
fn bake(&self, env: &CrateEnv) -> TokenStream {
env.insert("zerovec");
if self.is_empty() {
- quote! { ::zerovec::vecs::FlexZeroVec::new() }
+ quote! { zerovec::vecs::FlexZeroVec::new() }
} else {
let slice = self.as_ref().bake(env);
quote! { #slice.as_flexzerovec() }
@@ -21,10 +21,10 @@ impl Bake for &FlexZeroSlice {
fn bake(&self, env: &CrateEnv) -> TokenStream {
env.insert("zerovec");
if self.is_empty() {
- quote! { ::zerovec::vecs::FlexZeroSlice::new_empty() }
+ quote! { zerovec::vecs::FlexZeroSlice::new_empty() }
} else {
let bytes = databake::Bake::bake(&self.as_bytes(), env);
- quote! { unsafe { ::zerovec::vecs::FlexZeroSlice::from_byte_slice_unchecked(#bytes) } }
+ quote! { unsafe { zerovec::vecs::FlexZeroSlice::from_byte_slice_unchecked(#bytes) } }
}
}
}
diff --git a/vendor/zerovec/src/flexzerovec/slice.rs b/vendor/zerovec/src/flexzerovec/slice.rs
index fb58d6215..41cb7116f 100644
--- a/vendor/zerovec/src/flexzerovec/slice.rs
+++ b/vendor/zerovec/src/flexzerovec/slice.rs
@@ -134,18 +134,18 @@ impl FlexZeroSlice {
// equal to the length of the `data` field, which will be one less than the length of the
// overall array.
#[allow(clippy::panic)] // panic is documented in function contract
- let (_, remainder) = match bytes.split_last() {
- Some(v) => v,
- None => panic!("slice should be non-empty"),
- };
- &*(remainder as *const [u8] as *const Self)
+ if bytes.is_empty() {
+ panic!("from_byte_slice_unchecked called with empty slice")
+ }
+ let slice = core::ptr::slice_from_raw_parts(bytes.as_ptr(), bytes.len() - 1);
+ &*(slice as *const Self)
}
#[inline]
pub(crate) unsafe fn from_byte_slice_mut_unchecked(bytes: &mut [u8]) -> &mut Self {
// Safety: See comments in `from_byte_slice_unchecked`
- let remainder = core::slice::from_raw_parts_mut(bytes.as_mut_ptr(), bytes.len() - 1);
- &mut *(remainder as *mut [u8] as *mut Self)
+ let remainder = core::ptr::slice_from_raw_parts_mut(bytes.as_mut_ptr(), bytes.len() - 1);
+ &mut *(remainder as *mut Self)
}
/// Returns this slice as its underlying `&[u8]` byte buffer representation.
@@ -298,8 +298,7 @@ impl FlexZeroSlice {
/// assert_eq!(pairs_it.next(), None);
/// ```
pub fn iter_pairs(&self) -> impl Iterator<Item = (usize, Option<usize>)> + '_ {
- self.iter()
- .zip(self.iter().skip(1).map(Some).chain(core::iter::once(None)))
+ self.iter().zip(self.iter().skip(1).map(Some).chain([None]))
}
/// Creates a `Vec<usize>` from a [`FlexZeroSlice`] (or `FlexZeroVec`).
diff --git a/vendor/zerovec/src/hashmap/mod.rs b/vendor/zerovec/src/hashmap/mod.rs
index 5d91114ad..e3aed1198 100644
--- a/vendor/zerovec/src/hashmap/mod.rs
+++ b/vendor/zerovec/src/hashmap/mod.rs
@@ -20,8 +20,8 @@ mod serde;
/// ```
/// use zerovec::ZeroHashMap;
///
-/// let kv = vec![(0, "a"), (1, "b"), (2, "c")];
-/// let hashmap: ZeroHashMap<i32, str> = ZeroHashMap::from_iter(kv.into_iter());
+/// let hashmap =
+/// ZeroHashMap::<i32, str>::from_iter([(0, "a"), (1, "b"), (2, "c")]);
/// assert_eq!(hashmap.get(&0), Some("a"));
/// assert_eq!(hashmap.get(&2), Some("c"));
/// assert_eq!(hashmap.get(&4), None);
@@ -91,8 +91,7 @@ where
/// ```
/// use zerovec::ZeroHashMap;
///
- /// let hashmap: ZeroHashMap<str, str> =
- /// ZeroHashMap::from_iter(vec![("a", "A"), ("z", "Z")].into_iter());
+ /// let hashmap = ZeroHashMap::<str, str>::from_iter([("a", "A"), ("z", "Z")]);
///
/// assert_eq!(hashmap.get("a"), Some("A"));
/// assert_eq!(hashmap.get("z"), Some("Z"));
@@ -111,8 +110,7 @@ where
/// ```rust
/// use zerovec::ZeroHashMap;
///
- /// let hashmap: ZeroHashMap<str, str> =
- /// ZeroHashMap::from_iter(vec![("a", "A"), ("z", "Z")].into_iter());
+ /// let hashmap = ZeroHashMap::<str, str>::from_iter([("a", "A"), ("z", "Z")]);
///
/// assert!(hashmap.contains_key("a"));
/// assert!(!hashmap.contains_key("p"));
@@ -176,8 +174,12 @@ where
/// ```
/// use zerovec::ZeroHashMap;
///
- /// let kv: Vec<(i32, &str)> = vec![(1, "a"), (2, "b"), (3, "c"), (4, "d")];
- /// let hashmap: ZeroHashMap<i32, str> = ZeroHashMap::from_iter(kv.into_iter());
+ /// let hashmap = ZeroHashMap::<i32, str>::from_iter([
+ /// (1, "a"),
+ /// (2, "b"),
+ /// (3, "c"),
+ /// (4, "d"),
+ /// ]);
/// assert_eq!(hashmap.get(&1), Some("a"));
/// assert_eq!(hashmap.get(&2), Some("b"));
/// assert_eq!(hashmap.get(&3), Some("c"));
diff --git a/vendor/zerovec/src/hashmap/serde.rs b/vendor/zerovec/src/hashmap/serde.rs
index 2d724ac05..7a4941205 100644
--- a/vendor/zerovec/src/hashmap/serde.rs
+++ b/vendor/zerovec/src/hashmap/serde.rs
@@ -77,7 +77,7 @@ mod test {
}
fn make_zerohashmap() -> ZeroHashMap<'static, u32, str> {
- ZeroHashMap::from_iter(vec![(0, "a"), (1, "b"), (2, "c")].into_iter())
+ ZeroHashMap::from_iter([(0, "a"), (1, "b"), (2, "c")])
}
fn build_invalid_hashmap_str(
diff --git a/vendor/zerovec/src/lib.rs b/vendor/zerovec/src/lib.rs
index add52f113..961d62f34 100644
--- a/vendor/zerovec/src/lib.rs
+++ b/vendor/zerovec/src/lib.rs
@@ -403,7 +403,8 @@ pub use zerovec_derive::make_ule;
///
/// This can be attached to structs containing only [`AsULE`] types with the last fields being
/// [`Cow<'a, str>`](alloc::borrow::Cow), [`ZeroSlice`], or [`VarZeroSlice`]. If there is more than one such field, it will be represented
-/// using [`MultiFieldsULE`](crate::ule::MultiFieldsULE) and getters will be generated.
+/// using [`MultiFieldsULE`](crate::ule::MultiFieldsULE) and getters will be generated. Other VarULE fields will be detected if they are
+/// tagged with `#[zerovec::varule(NameOfVarULETy)]`.
///
/// The type must be [`PartialEq`] and [`Eq`].
///
@@ -517,3 +518,41 @@ pub use zerovec_derive::make_ule;
/// ```
#[cfg(feature = "derive")]
pub use zerovec_derive::make_varule;
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+ use core::mem::size_of;
+
+ /// Checks that the size of the type is one of the given sizes.
+ /// The size might differ across Rust versions or channels.
+ macro_rules! check_size_of {
+ ($sizes:pat, $type:path) => {
+ assert!(
+ matches!(size_of::<$type>(), $sizes),
+ concat!(stringify!($type), " is of size {}"),
+ size_of::<$type>()
+ );
+ };
+ }
+
+ #[test]
+ fn check_sizes() {
+ check_size_of!(24, ZeroVec<u8>);
+ check_size_of!(24, ZeroVec<u32>);
+ check_size_of!(32 | 24, VarZeroVec<[u8]>);
+ check_size_of!(32 | 24, VarZeroVec<str>);
+ check_size_of!(48, ZeroMap<u32, u32>);
+ check_size_of!(56 | 48, ZeroMap<u32, str>);
+ check_size_of!(56 | 48, ZeroMap<str, u32>);
+ check_size_of!(64 | 48, ZeroMap<str, str>);
+ check_size_of!(120 | 96, ZeroMap2d<str, str, str>);
+ check_size_of!(32 | 24, vecs::FlexZeroVec);
+
+ check_size_of!(32, Option<ZeroVec<u8>>);
+ check_size_of!(32, Option<VarZeroVec<str>>);
+ check_size_of!(64 | 56, Option<ZeroMap<str, str>>);
+ check_size_of!(120 | 104, Option<ZeroMap2d<str, str, str>>);
+ check_size_of!(32, Option<vecs::FlexZeroVec>);
+ }
+}
diff --git a/vendor/zerovec/src/map/borrowed.rs b/vendor/zerovec/src/map/borrowed.rs
index bc93ee497..98b2d2f9d 100644
--- a/vendor/zerovec/src/map/borrowed.rs
+++ b/vendor/zerovec/src/map/borrowed.rs
@@ -63,10 +63,7 @@ where
V: ?Sized,
{
fn clone(&self) -> Self {
- ZeroMapBorrowed {
- keys: self.keys,
- values: self.values,
- }
+ *self
}
}
@@ -252,6 +249,12 @@ where
self.values.get(index)
}
+ /// For cases when `V` is fixed-size, obtain a direct copy of `V` instead of `V::ULE`
+ pub fn get_copied_by(&self, predicate: impl FnMut(&K) -> Ordering) -> Option<V> {
+ let index = self.keys.zvl_binary_search_by(predicate).ok()?;
+ self.values.get(index)
+ }
+
/// Similar to [`Self::iter()`] except it returns a direct copy of the values instead of references
/// to `V::ULE`, in cases when `V` is fixed-size
pub fn iter_copied_values<'b>(
diff --git a/vendor/zerovec/src/map/databake.rs b/vendor/zerovec/src/map/databake.rs
index fceb6a966..f861e5c29 100644
--- a/vendor/zerovec/src/map/databake.rs
+++ b/vendor/zerovec/src/map/databake.rs
@@ -16,7 +16,7 @@ where
env.insert("zerovec");
let keys = self.keys.bake(env);
let values = self.values.bake(env);
- quote! { unsafe { #[allow(unused_unsafe)] ::zerovec::ZeroMap::from_parts_unchecked(#keys, #values) } }
+ quote! { unsafe { #[allow(unused_unsafe)] zerovec::ZeroMap::from_parts_unchecked(#keys, #values) } }
}
}
@@ -31,7 +31,7 @@ where
env.insert("zerovec");
let keys = self.keys.bake(env);
let values = self.values.bake(env);
- quote! { unsafe { #[allow(unused_unsafe)] ::zerovec::maps::ZeroMapBorrowed::from_parts_unchecked(#keys, #values) } }
+ quote! { unsafe { #[allow(unused_unsafe)] zerovec::maps::ZeroMapBorrowed::from_parts_unchecked(#keys, #values) } }
}
}
diff --git a/vendor/zerovec/src/map2d/borrowed.rs b/vendor/zerovec/src/map2d/borrowed.rs
index 209da299b..166f1be74 100644
--- a/vendor/zerovec/src/map2d/borrowed.rs
+++ b/vendor/zerovec/src/map2d/borrowed.rs
@@ -73,12 +73,7 @@ where
V: ?Sized,
{
fn clone(&self) -> Self {
- ZeroMap2dBorrowed {
- keys0: self.keys0,
- joiner: self.joiner,
- keys1: self.keys1,
- values: self.values,
- }
+ *self
}
}
diff --git a/vendor/zerovec/src/map2d/databake.rs b/vendor/zerovec/src/map2d/databake.rs
index 65e475c32..c5b9aca54 100644
--- a/vendor/zerovec/src/map2d/databake.rs
+++ b/vendor/zerovec/src/map2d/databake.rs
@@ -20,7 +20,7 @@ where
let joiner = self.joiner.bake(env);
let keys1 = self.keys1.bake(env);
let values = self.values.bake(env);
- quote! { unsafe { #[allow(unused_unsafe)] ::zerovec::ZeroMap2d::from_parts_unchecked(#keys0, #joiner, #keys1, #values) } }
+ quote! { unsafe { #[allow(unused_unsafe)] zerovec::ZeroMap2d::from_parts_unchecked(#keys0, #joiner, #keys1, #values) } }
}
}
@@ -39,7 +39,7 @@ where
let joiner = self.joiner.bake(env);
let keys1 = self.keys1.bake(env);
let values = self.values.bake(env);
- quote! { unsafe { #[allow(unused_unsafe)] ::zerovec::maps::ZeroMap2dBorrowed::from_parts_unchecked(#keys0, #joiner, #keys1, #values) } }
+ quote! { unsafe { #[allow(unused_unsafe)] zerovec::maps::ZeroMap2dBorrowed::from_parts_unchecked(#keys0, #joiner, #keys1, #values) } }
}
}
@@ -52,7 +52,7 @@ fn test_baked_map() {
crate::ZeroMap2d::from_parts_unchecked(
unsafe {
crate::VarZeroVec::from_bytes_unchecked(
- b"arcaz\0cu\0en\0ff\0grckk\0ku\0ky\0lifmanmn\0pa\0palsd\0tg\0ug\0unruz\0yuezh\0"
+ b"\x0E\0\0\0\0\0\x05\0\x07\0\t\0\x0B\0\x10\0\x12\0\x14\0\x1C\0\x1E\0#\0%\0'\0,\0arcazcuenffgrckkkukylifmanmnpapalsdtgugunruzyuezh"
)
},
unsafe {
@@ -62,12 +62,12 @@ fn test_baked_map() {
},
unsafe {
crate::VarZeroVec::from_bytes_unchecked(
- b"NbatPalmArabGlagShawAdlmLinbArabArabYeziArabLatnLimbNkooMongArabPhlpDevaKhojSindArabCyrlDevaArabHansBopoHanbHant"
+ b"\x1C\0\0\0\0\0\x04\0\x08\0\x0C\0\x10\0\x14\0\x18\0\x1C\0 \0$\0(\0,\x000\x004\08\0<\0@\0D\0H\0L\0P\0T\0X\0\\\0`\0d\0h\0l\0NbatPalmArabGlagShawAdlmLinbArabArabYeziArabLatnLimbNkooMongArabPhlpDevaKhojSindArabCyrlDevaArabHansBopoHanbHant"
)
},
unsafe {
crate::VarZeroVec::from_bytes_unchecked(
- b"JO\0SY\0IR\0BG\0GB\0GN\0GR\0CN\0IQ\0GE\0CN\0TR\0IN\0GN\0CN\0PK\0CN\0IN\0IN\0IN\0PK\0KZ\0NP\0AF\0CN\0TW\0TW\0TW\0"
+ b"\x1C\0\0\0\0\0\x02\0\x04\0\x06\0\x08\0\n\0\x0C\0\x0E\0\x10\0\x12\0\x14\0\x16\0\x18\0\x1A\0\x1C\0\x1E\0 \0\"\0$\0&\0(\0*\0,\0.\x000\x002\x004\x006\0JOSYIRBGGBGNGRCNIQGECNTRINGNCNPKCNINININPKKZNPAFCNTWTWTW"
)
},
)
@@ -85,7 +85,7 @@ fn test_baked_borrowed_map() {
crate::maps::ZeroMap2dBorrowed::from_parts_unchecked(
unsafe {
crate::VarZeroSlice::from_bytes_unchecked(
- b"arcaz\0cu\0en\0ff\0grckk\0ku\0ky\0lifmanmn\0pa\0palsd\0tg\0ug\0unruz\0yuezh\0"
+ b"\x0E\0\0\0\0\0\x05\0\x07\0\t\0\x0B\0\x10\0\x12\0\x14\0\x1C\0\x1E\0#\0%\0'\0,\0arcazcuenffgrckkkukylifmanmnpapalsdtgugunruzyuezh"
)
},
unsafe {
@@ -95,12 +95,12 @@ fn test_baked_borrowed_map() {
},
unsafe {
crate::VarZeroSlice::from_bytes_unchecked(
- b"NbatPalmArabGlagShawAdlmLinbArabArabYeziArabLatnLimbNkooMongArabPhlpDevaKhojSindArabCyrlDevaArabHansBopoHanbHant"
+ b"\x1C\0\0\0\0\0\x04\0\x08\0\x0C\0\x10\0\x14\0\x18\0\x1C\0 \0$\0(\0,\x000\x004\08\0<\0@\0D\0H\0L\0P\0T\0X\0\\\0`\0d\0h\0l\0NbatPalmArabGlagShawAdlmLinbArabArabYeziArabLatnLimbNkooMongArabPhlpDevaKhojSindArabCyrlDevaArabHansBopoHanbHant"
)
},
unsafe {
crate::VarZeroSlice::from_bytes_unchecked(
- b"JO\0SY\0IR\0BG\0GB\0GN\0GR\0CN\0IQ\0GE\0CN\0TR\0IN\0GN\0CN\0PK\0CN\0IN\0IN\0IN\0PK\0KZ\0NP\0AF\0CN\0TW\0TW\0TW\0"
+ b"\x1C\0\0\0\0\0\x02\0\x04\0\x06\0\x08\0\n\0\x0C\0\x0E\0\x10\0\x12\0\x14\0\x16\0\x18\0\x1A\0\x1C\0\x1E\0 \0\"\0$\0&\0(\0*\0,\0.\x000\x002\x004\x006\0JOSYIRBGGBGNGRCNIQGECNTRINGNCNPKCNINININPKKZNPAFCNTWTWTW"
)
},
)
diff --git a/vendor/zerovec/src/map2d/map.rs b/vendor/zerovec/src/map2d/map.rs
index 8bdefe792..90854018f 100644
--- a/vendor/zerovec/src/map2d/map.rs
+++ b/vendor/zerovec/src/map2d/map.rs
@@ -716,7 +716,7 @@ mod test {
assert_eq!(zm2d.get0(&0), None);
let result = zm2d.try_append(&3, "ccc", "CCC");
- assert!(matches!(result, None));
+ assert!(result.is_none());
assert_eq!(format!("{zm2d:?}"), "ZeroMap2d { keys0: ZeroVec([3]), joiner: ZeroVec([1]), keys1: [\"ccc\"], values: [\"CCC\"] }");
assert_eq!(zm2d.get0(&0), None);
@@ -725,7 +725,7 @@ mod test {
assert_eq!(zm2d.get0(&99), None);
let result = zm2d.try_append(&3, "eee", "EEE");
- assert!(matches!(result, None));
+ assert!(result.is_none());
assert_eq!(format!("{zm2d:?}"), "ZeroMap2d { keys0: ZeroVec([3]), joiner: ZeroVec([2]), keys1: [\"ccc\", \"eee\"], values: [\"CCC\", \"EEE\"] }");
assert_eq!(zm2d.get0(&0), None);
@@ -737,19 +737,19 @@ mod test {
// Out of order
let result = zm2d.try_append(&3, "ddd", "DD0");
- assert!(matches!(result, Some(_)));
+ assert!(result.is_some());
// Append a few more elements
let result = zm2d.try_append(&5, "ddd", "DD1");
- assert!(matches!(result, None));
+ assert!(result.is_none());
let result = zm2d.try_append(&7, "ddd", "DD2");
- assert!(matches!(result, None));
+ assert!(result.is_none());
let result = zm2d.try_append(&7, "eee", "EEE");
- assert!(matches!(result, None));
+ assert!(result.is_none());
let result = zm2d.try_append(&7, "www", "WWW");
- assert!(matches!(result, None));
+ assert!(result.is_none());
let result = zm2d.try_append(&9, "yyy", "YYY");
- assert!(matches!(result, None));
+ assert!(result.is_none());
assert_eq!(format!("{zm2d:?}"), "ZeroMap2d { keys0: ZeroVec([3, 5, 7, 9]), joiner: ZeroVec([2, 3, 6, 7]), keys1: [\"ccc\", \"eee\", \"ddd\", \"ddd\", \"eee\", \"www\", \"yyy\"], values: [\"CCC\", \"EEE\", \"DD1\", \"DD2\", \"EEE\", \"WWW\", \"YYY\"] }");
assert_eq!(zm2d.get0(&0), None);
diff --git a/vendor/zerovec/src/samples.rs b/vendor/zerovec/src/samples.rs
index 7a9a73241..723aacded 100644
--- a/vendor/zerovec/src/samples.rs
+++ b/vendor/zerovec/src/samples.rs
@@ -44,9 +44,31 @@ pub const BINCODE_BUF: &[u8] = &[
0, 72, 73, 74, 0, 76, 77, 78, 0,
];
-/// Representation of a VarZeroVec<str> of length 4 as bytes.
-/// Safety: The bytes were manually verified to be valid.
+/// Representation of a VarZeroVec<str> with contents ["w", "ω", "文", "𑄃"]
pub const TEST_VARZEROSLICE_BYTES: &[u8] = &[
- 4, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 6, 0, 0, 0, 119, 207, 137, 230, 150, 135, 240,
- 145, 132, 131,
+ 4, 0, 0, 0, 0, 0, 1, 0, 3, 0, 6, 0, 119, 207, 137, 230, 150, 135, 240, 145, 132, 131,
];
+
+#[test]
+fn validate() {
+ use crate::{VarZeroVec, ZeroVec};
+
+ assert_eq!(
+ ZeroVec::<u32>::parse_byte_slice(TEST_BUFFER_LE).unwrap(),
+ ZeroVec::alloc_from_slice(TEST_SLICE)
+ );
+
+ assert_eq!(TEST_SLICE.iter().sum::<u32>(), TEST_SUM);
+
+ assert_eq!(
+ serde_json::from_str::<ZeroVec::<u32>>(JSON_STR).unwrap(),
+ ZeroVec::alloc_from_slice(TEST_SLICE)
+ );
+
+ assert_eq!(
+ bincode::deserialize::<ZeroVec::<u32>>(BINCODE_BUF).unwrap(),
+ ZeroVec::alloc_from_slice(TEST_SLICE)
+ );
+
+ VarZeroVec::<str>::parse_byte_slice(TEST_VARZEROSLICE_BYTES).unwrap();
+}
diff --git a/vendor/zerovec/src/ule/chars.rs b/vendor/zerovec/src/ule/chars.rs
index 7a4a97a4a..e0ec25240 100644
--- a/vendor/zerovec/src/ule/chars.rs
+++ b/vendor/zerovec/src/ule/chars.rs
@@ -6,10 +6,11 @@
//! ULE implementation for the `char` type.
use super::*;
+use crate::impl_ule_from_array;
use core::cmp::Ordering;
use core::convert::TryFrom;
-/// A u8 array of little-endian data corresponding to a Unicode code point.
+/// A u8 array of little-endian data corresponding to a Unicode scalar value.
///
/// The bytes of a `CharULE` are guaranteed to represent a little-endian-encoded u32 that is a
/// valid `char` and can be converted without validation.
@@ -40,6 +41,20 @@ use core::convert::TryFrom;
#[derive(Debug, PartialEq, Eq, Clone, Copy, Hash)]
pub struct CharULE([u8; 3]);
+impl CharULE {
+ /// Converts a [`char`] to a [`CharULE`]. This is equivalent to calling
+ /// [`AsULE::to_unaligned()`]
+ ///
+ /// See the type-level documentation for [`CharULE`] for more information.
+ #[inline]
+ pub const fn from_aligned(c: char) -> Self {
+ let [u0, u1, u2, _u3] = (c as u32).to_le_bytes();
+ Self([u0, u1, u2])
+ }
+
+ impl_ule_from_array!(char, CharULE, Self([0; 3]));
+}
+
// Safety (based on the safety checklist on the ULE trait):
// 1. CharULE does not include any uninitialized or padding bytes.
// (achieved by `#[repr(transparent)]` on a type that satisfies this invariant)
@@ -72,13 +87,12 @@ impl AsULE for char {
#[inline]
fn to_unaligned(self) -> Self::ULE {
- let [u0, u1, u2, _u3] = u32::from(self).to_le_bytes();
- CharULE([u0, u1, u2])
+ CharULE::from_aligned(self)
}
#[inline]
fn from_unaligned(unaligned: Self::ULE) -> Self {
- // Safe because the bytes of CharULE are defined to represent a valid Unicode code point.
+ // Safe because the bytes of CharULE are defined to represent a valid Unicode scalar value.
unsafe {
Self::from_u32_unchecked(u32::from_le_bytes([
unaligned.0[0],
@@ -107,6 +121,25 @@ mod test {
use super::*;
#[test]
+ fn test_from_array() {
+ const CHARS: [char; 2] = ['a', '🙃'];
+ const CHARS_ULE: [CharULE; 2] = CharULE::from_array(CHARS);
+ assert_eq!(
+ CharULE::as_byte_slice(&CHARS_ULE),
+ &[0x61, 0x00, 0x00, 0x43, 0xF6, 0x01]
+ );
+ }
+
+ #[test]
+ fn test_from_array_zst() {
+ const CHARS: [char; 0] = [];
+ const CHARS_ULE: [CharULE; 0] = CharULE::from_array(CHARS);
+ let bytes = CharULE::as_byte_slice(&CHARS_ULE);
+ let empty: &[u8] = &[];
+ assert_eq!(bytes, empty);
+ }
+
+ #[test]
fn test_parse() {
// 1-byte, 2-byte, 3-byte, and two 4-byte character in UTF-8 (not as relevant in UTF-32)
let chars = ['w', 'ω', '文', '𑄃', '🙃'];
@@ -141,7 +174,7 @@ mod test {
.collect();
let u32_bytes: &[u8] = RawBytesULE::<4>::as_byte_slice(&u32_ules);
let parsed_ules_result = CharULE::parse_byte_slice(u32_bytes);
- assert!(matches!(parsed_ules_result, Err(_)));
+ assert!(parsed_ules_result.is_err());
// 0x20FFFF is out of range for a char
let u32s = [0x20FFFF];
@@ -152,6 +185,6 @@ mod test {
.collect();
let u32_bytes: &[u8] = RawBytesULE::<4>::as_byte_slice(&u32_ules);
let parsed_ules_result = CharULE::parse_byte_slice(u32_bytes);
- assert!(matches!(parsed_ules_result, Err(_)));
+ assert!(parsed_ules_result.is_err());
}
}
diff --git a/vendor/zerovec/src/ule/custom.rs b/vendor/zerovec/src/ule/custom.rs
index b2e4cb0e5..8cc6e9de4 100644
--- a/vendor/zerovec/src/ule/custom.rs
+++ b/vendor/zerovec/src/ule/custom.rs
@@ -129,8 +129,8 @@
//! }
//!
//! fn main() {
-//! let mut foos = vec![Foo {field1: 'u', field2: 983, field3: ZeroVec::alloc_from_slice(&[1212,2309,500,7000])},
-//! Foo {field1: 'l', field2: 1010, field3: ZeroVec::alloc_from_slice(&[1932, 0, 8888, 91237])}];
+//! let mut foos = [Foo {field1: 'u', field2: 983, field3: ZeroVec::alloc_from_slice(&[1212,2309,500,7000])},
+//! Foo {field1: 'l', field2: 1010, field3: ZeroVec::alloc_from_slice(&[1932, 0, 8888, 91237])}];
//!
//! let vzv = VarZeroVec::<_>::from(&foos);
//!
diff --git a/vendor/zerovec/src/ule/encode.rs b/vendor/zerovec/src/ule/encode.rs
index 2091cf06b..adea123aa 100644
--- a/vendor/zerovec/src/ule/encode.rs
+++ b/vendor/zerovec/src/ule/encode.rs
@@ -8,7 +8,7 @@ use crate::{VarZeroSlice, VarZeroVec, ZeroSlice, ZeroVec};
use alloc::borrow::{Cow, ToOwned};
use alloc::boxed::Box;
use alloc::string::String;
-use alloc::vec::Vec;
+use alloc::{vec, vec::Vec};
use core::mem;
/// Allows types to be encoded as VarULEs. This is highly useful for implementing VarULE on
@@ -82,16 +82,14 @@ pub unsafe trait EncodeAsVarULE<T: VarULE + ?Sized> {
///
/// This is primarily useful for generating `Deserialize` impls for VarULE types
pub fn encode_varule_to_box<S: EncodeAsVarULE<T>, T: VarULE + ?Sized>(x: &S) -> Box<T> {
- let mut vec: Vec<u8> = Vec::new();
// zero-fill the vector to avoid uninitialized data UB
- vec.resize(x.encode_var_ule_len(), 0);
+ let mut vec: Vec<u8> = vec![0; x.encode_var_ule_len()];
x.encode_var_ule_write(&mut vec);
- let boxed = vec.into_boxed_slice();
+ let boxed = mem::ManuallyDrop::new(vec.into_boxed_slice());
unsafe {
// Safety: `ptr` is a box, and `T` is a VarULE which guarantees it has the same memory layout as `[u8]`
// and can be recouped via from_byte_slice_unchecked()
let ptr: *mut T = T::from_byte_slice_unchecked(&boxed) as *const T as *mut T;
- mem::forget(boxed);
// Safety: we can construct an owned version since we have mem::forgotten the older owner
Box::from_raw(ptr)
diff --git a/vendor/zerovec/src/ule/macros.rs b/vendor/zerovec/src/ule/macros.rs
new file mode 100644
index 000000000..955b1eb2e
--- /dev/null
+++ b/vendor/zerovec/src/ule/macros.rs
@@ -0,0 +1,29 @@
+// This file is part of ICU4X. For terms of use, please see the file
+// called LICENSE at the top level of the ICU4X source tree
+// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
+
+/// Given `Self` (`$aligned`), `Self::ULE` (`$unaligned`), and a conversion function (`$single` or
+/// `Self::from_aligned`), implement `from_array` for arrays of `$aligned` to `$unaligned`.
+///
+/// The `$default` argument is due to current compiler limitations.
+/// Pass any (cheap to construct) value.
+#[macro_export]
+macro_rules! impl_ule_from_array {
+ ($aligned:ty, $unaligned:ty, $default:expr, $single:path) => {
+ #[doc = concat!("Convert an array of `", stringify!($aligned), "` to an array of `", stringify!($unaligned), "`.")]
+ pub const fn from_array<const N: usize>(arr: [$aligned; N]) -> [Self; N] {
+ let mut result = [$default; N];
+ let mut i = 0;
+ // Won't panic because i < N and arr has length N
+ #[allow(clippy::indexing_slicing)]
+ while i < N {
+ result[i] = $single(arr[i]);
+ i += 1;
+ }
+ result
+ }
+ };
+ ($aligned:ty, $unaligned:ty, $default:expr) => {
+ impl_ule_from_array!($aligned, $unaligned, $default, Self::from_aligned);
+ };
+}
diff --git a/vendor/zerovec/src/ule/mod.rs b/vendor/zerovec/src/ule/mod.rs
index e8ecd26e5..5a6d9cd47 100644
--- a/vendor/zerovec/src/ule/mod.rs
+++ b/vendor/zerovec/src/ule/mod.rs
@@ -14,6 +14,7 @@ mod chars;
#[cfg(doc)]
pub mod custom;
mod encode;
+mod macros;
mod multi;
mod niche;
mod option;
@@ -29,7 +30,7 @@ pub use multi::MultiFieldsULE;
pub use niche::{NicheBytes, NichedOption, NichedOptionULE};
pub use option::{OptionULE, OptionVarULE};
pub use plain::RawBytesULE;
-pub use unvalidated::UnvalidatedStr;
+pub use unvalidated::{UnvalidatedChar, UnvalidatedStr};
use alloc::alloc::Layout;
use alloc::borrow::ToOwned;
@@ -156,7 +157,7 @@ where
/// A trait for any type that has a 1:1 mapping with an unaligned little-endian (ULE) type.
///
-/// If you need to implement this trait, consider using [`#[make_varule]`](crate::make_ule) instead.
+/// If you need to implement this trait, consider using [`#[make_ule]`](crate::make_ule) instead.
pub trait AsULE: Copy {
/// The ULE type corresponding to `Self`.
///
@@ -356,13 +357,12 @@ pub unsafe trait VarULE: 'static {
#[inline]
fn to_boxed(&self) -> Box<Self> {
let bytesvec = self.as_byte_slice().to_owned().into_boxed_slice();
+ let bytesvec = mem::ManuallyDrop::new(bytesvec);
unsafe {
// Get the pointer representation
let ptr: *mut Self =
Self::from_byte_slice_unchecked(&bytesvec) as *const Self as *mut Self;
- assert_eq!(Layout::for_value(&*ptr), Layout::for_value(&*bytesvec));
- // Forget the allocation
- mem::forget(bytesvec);
+ assert_eq!(Layout::for_value(&*ptr), Layout::for_value(&**bytesvec));
// Transmute the pointer to an owned pointer
Box::from_raw(ptr)
}
diff --git a/vendor/zerovec/src/ule/multi.rs b/vendor/zerovec/src/ule/multi.rs
index 0ba0aea89..3281b2088 100644
--- a/vendor/zerovec/src/ule/multi.rs
+++ b/vendor/zerovec/src/ule/multi.rs
@@ -44,7 +44,7 @@ impl MultiFieldsULE {
lengths, output,
);
debug_assert!(
- <VarZeroSlice<[u8]>>::validate_byte_slice(output).is_ok(),
+ <VarZeroSlice<[u8], Index32>>::validate_byte_slice(output).is_ok(),
"Encoded slice must be valid VarZeroSlice"
);
// Safe since write_serializable_bytes produces a valid VarZeroSlice buffer
@@ -141,12 +141,14 @@ unsafe impl VarULE for MultiFieldsULE {
/// This impl exists so that EncodeAsVarULE can work.
#[inline]
fn validate_byte_slice(slice: &[u8]) -> Result<(), ZeroVecError> {
- <VarZeroSlice<[u8]>>::validate_byte_slice(slice)
+ <VarZeroSlice<[u8], Index32>>::validate_byte_slice(slice)
}
#[inline]
unsafe fn from_byte_slice_unchecked(bytes: &[u8]) -> &Self {
// &Self is transparent over &VZS<..>
- mem::transmute(<VarZeroSlice<[u8]>>::from_byte_slice_unchecked(bytes))
+ mem::transmute(<VarZeroSlice<[u8], Index32>>::from_byte_slice_unchecked(
+ bytes,
+ ))
}
}
diff --git a/vendor/zerovec/src/ule/option.rs b/vendor/zerovec/src/ule/option.rs
index 50b193aac..9b0dc5b28 100644
--- a/vendor/zerovec/src/ule/option.rs
+++ b/vendor/zerovec/src/ule/option.rs
@@ -197,9 +197,8 @@ unsafe impl<U: VarULE + ?Sized> VarULE for OptionVarULE<U> {
#[inline]
unsafe fn from_byte_slice_unchecked(bytes: &[u8]) -> &Self {
- let metadata = bytes.len() - 1;
let entire_struct_as_slice: *const [u8] =
- ::core::slice::from_raw_parts(bytes.as_ptr(), metadata);
+ ::core::ptr::slice_from_raw_parts(bytes.as_ptr(), bytes.len() - 1);
&*(entire_struct_as_slice as *const Self)
}
}
diff --git a/vendor/zerovec/src/ule/plain.rs b/vendor/zerovec/src/ule/plain.rs
index 49455d45f..f244f6b68 100644
--- a/vendor/zerovec/src/ule/plain.rs
+++ b/vendor/zerovec/src/ule/plain.rs
@@ -6,6 +6,7 @@
//! ULE implementation for Plain Old Data types, including all sized integers.
use super::*;
+use crate::impl_ule_from_array;
use crate::ZeroSlice;
use core::num::{NonZeroI8, NonZeroU8};
@@ -15,69 +16,69 @@ use core::num::{NonZeroI8, NonZeroU8};
#[allow(clippy::exhaustive_structs)] // newtype
pub struct RawBytesULE<const N: usize>(pub [u8; N]);
-macro_rules! impl_byte_slice_size {
- ($unsigned:ty, $size:literal) => {
- impl From<[u8; $size]> for RawBytesULE<$size> {
- #[inline]
- fn from(le_bytes: [u8; $size]) -> Self {
- Self(le_bytes)
- }
- }
- impl RawBytesULE<$size> {
- #[inline]
- pub fn as_bytes(&self) -> &[u8] {
- &self.0
- }
- }
- // Safety (based on the safety checklist on the ULE trait):
- // 1. RawBytesULE does not include any uninitialized or padding bytes.
- // (achieved by `#[repr(transparent)]` on a type that satisfies this invariant)
- // 2. RawBytesULE is aligned to 1 byte.
- // (achieved by `#[repr(transparent)]` on a type that satisfies this invariant)
- // 3. The impl of validate_byte_slice() returns an error if any byte is not valid (never).
- // 4. The impl of validate_byte_slice() returns an error if there are leftover bytes.
- // 5. The other ULE methods use the default impl.
- // 6. RawBytesULE byte equality is semantic equality
- unsafe impl ULE for RawBytesULE<$size> {
- #[inline]
- fn validate_byte_slice(bytes: &[u8]) -> Result<(), ZeroVecError> {
- if bytes.len() % $size == 0 {
- // Safe because Self is transparent over [u8; $size]
- Ok(())
- } else {
- Err(ZeroVecError::length::<Self>(bytes.len()))
- }
- }
+impl<const N: usize> RawBytesULE<N> {
+ #[inline]
+ pub fn as_bytes(&self) -> &[u8] {
+ &self.0
+ }
+
+ #[inline]
+ pub fn from_byte_slice_unchecked_mut(bytes: &mut [u8]) -> &mut [Self] {
+ let data = bytes.as_mut_ptr();
+ let len = bytes.len() / N;
+ // Safe because Self is transparent over [u8; N]
+ unsafe { core::slice::from_raw_parts_mut(data as *mut Self, len) }
+ }
+}
+
+// Safety (based on the safety checklist on the ULE trait):
+// 1. RawBytesULE does not include any uninitialized or padding bytes.
+// (achieved by `#[repr(transparent)]` on a type that satisfies this invariant)
+// 2. RawBytesULE is aligned to 1 byte.
+// (achieved by `#[repr(transparent)]` on a type that satisfies this invariant)
+// 3. The impl of validate_byte_slice() returns an error if any byte is not valid (never).
+// 4. The impl of validate_byte_slice() returns an error if there are leftover bytes.
+// 5. The other ULE methods use the default impl.
+// 6. RawBytesULE byte equality is semantic equality
+unsafe impl<const N: usize> ULE for RawBytesULE<N> {
+ #[inline]
+ fn validate_byte_slice(bytes: &[u8]) -> Result<(), ZeroVecError> {
+ if bytes.len() % N == 0 {
+ // Safe because Self is transparent over [u8; N]
+ Ok(())
+ } else {
+ Err(ZeroVecError::length::<Self>(bytes.len()))
}
+ }
+}
- impl RawBytesULE<$size> {
- #[inline]
- pub fn from_byte_slice_unchecked_mut(bytes: &mut [u8]) -> &mut [Self] {
- let data = bytes.as_mut_ptr();
- let len = bytes.len() / $size;
- // Safe because Self is transparent over [u8; $size]
- unsafe { core::slice::from_raw_parts_mut(data as *mut Self, len) }
- }
+impl<const N: usize> From<[u8; N]> for RawBytesULE<N> {
+ #[inline]
+ fn from(le_bytes: [u8; N]) -> Self {
+ Self(le_bytes)
+ }
+}
- /// Gets this RawBytesULE as an unsigned int. This is equivalent to calling
- /// [AsULE::from_unaligned()] on the appropriately sized type.
+macro_rules! impl_byte_slice_size {
+ ($unsigned:ty, $size:literal) => {
+ impl RawBytesULE<$size> {
+ #[doc = concat!("Gets this `RawBytesULE` as a `", stringify!($unsigned), "`. This is equivalent to calling [`AsULE::from_unaligned()`] on the appropriately sized type.")]
#[inline]
pub fn as_unsigned_int(&self) -> $unsigned {
<$unsigned as $crate::ule::AsULE>::from_unaligned(*self)
}
- /// Convert an array of native-endian aligned integers to an array of RawBytesULE.
- pub const fn from_array<const N: usize>(arr: [$unsigned; N]) -> [Self; N] {
- let mut result = [RawBytesULE([0; $size]); N];
- let mut i = 0;
- // Won't panic because i < N and arr has length N
- #[allow(clippy::indexing_slicing)]
- while i < N {
- result[i].0 = arr[i].to_le_bytes();
- i += 1;
- }
- result
+ #[doc = concat!("Converts a `", stringify!($unsigned), "` to a `RawBytesULE`. This is equivalent to calling [`AsULE::to_unaligned()`] on the appropriately sized type.")]
+ #[inline]
+ pub const fn from_aligned(value: $unsigned) -> Self {
+ Self(value.to_le_bytes())
}
+
+ impl_ule_from_array!(
+ $unsigned,
+ RawBytesULE<$size>,
+ RawBytesULE([0; $size])
+ );
}
};
}
@@ -110,7 +111,7 @@ macro_rules! impl_const_constructors {
}
macro_rules! impl_byte_slice_type {
- ($type:ty, $size:literal) => {
+ ($single_fn:ident, $type:ty, $size:literal) => {
impl From<$type> for RawBytesULE<$size> {
#[inline]
fn from(value: $type) -> Self {
@@ -131,6 +132,24 @@ macro_rules! impl_byte_slice_type {
// EqULE is true because $type and RawBytesULE<$size>
// have the same byte sequence on little-endian
unsafe impl EqULE for $type {}
+
+ impl RawBytesULE<$size> {
+ pub const fn $single_fn(v: $type) -> Self {
+ RawBytesULE(v.to_le_bytes())
+ }
+ }
+ };
+}
+
+macro_rules! impl_byte_slice_unsigned_type {
+ ($type:ty, $size:literal) => {
+ impl_byte_slice_type!(from_unsigned, $type, $size);
+ };
+}
+
+macro_rules! impl_byte_slice_signed_type {
+ ($type:ty, $size:literal) => {
+ impl_byte_slice_type!(from_signed, $type, $size);
};
}
@@ -139,15 +158,15 @@ impl_byte_slice_size!(u32, 4);
impl_byte_slice_size!(u64, 8);
impl_byte_slice_size!(u128, 16);
-impl_byte_slice_type!(u16, 2);
-impl_byte_slice_type!(u32, 4);
-impl_byte_slice_type!(u64, 8);
-impl_byte_slice_type!(u128, 16);
+impl_byte_slice_unsigned_type!(u16, 2);
+impl_byte_slice_unsigned_type!(u32, 4);
+impl_byte_slice_unsigned_type!(u64, 8);
+impl_byte_slice_unsigned_type!(u128, 16);
-impl_byte_slice_type!(i16, 2);
-impl_byte_slice_type!(i32, 4);
-impl_byte_slice_type!(i64, 8);
-impl_byte_slice_type!(i128, 16);
+impl_byte_slice_signed_type!(i16, 2);
+impl_byte_slice_signed_type!(i32, 4);
+impl_byte_slice_signed_type!(i64, 8);
+impl_byte_slice_signed_type!(i128, 16);
impl_const_constructors!(u8, 1);
impl_const_constructors!(u16, 2);
diff --git a/vendor/zerovec/src/ule/tuple.rs b/vendor/zerovec/src/ule/tuple.rs
index c26567e98..3e0f291b3 100644
--- a/vendor/zerovec/src/ule/tuple.rs
+++ b/vendor/zerovec/src/ule/tuple.rs
@@ -111,10 +111,7 @@ macro_rules! tuple_ule {
impl<$($t: ULE),+> Clone for $name<$($t),+> {
fn clone(&self) -> Self {
- // copy to the stack to avoid hitting a future incompat error
- // https://github.com/rust-lang/rust/issues/82523#issuecomment-947900712
- let stack = ($(self.$i),+);
- $name($(stack.$i),+)
+ *self
}
}
@@ -147,7 +144,7 @@ fn test_pairule_validate() {
// Test failed validation with a correctly sized but differently constrained tuple
// Note: 1234901 is not a valid char
let zerovec3 = ZeroVec::<(char, u32)>::parse_byte_slice(bytes);
- assert!(matches!(zerovec3, Err(_)));
+ assert!(zerovec3.is_err());
}
#[test]
@@ -162,7 +159,7 @@ fn test_tripleule_validate() {
// Test failed validation with a correctly sized but differently constrained tuple
// Note: 1234901 is not a valid char
let zerovec3 = ZeroVec::<(char, i8, u32)>::parse_byte_slice(bytes);
- assert!(matches!(zerovec3, Err(_)));
+ assert!(zerovec3.is_err());
}
#[test]
@@ -178,5 +175,5 @@ fn test_quadule_validate() {
// Test failed validation with a correctly sized but differently constrained tuple
// Note: 1234901 is not a valid char
let zerovec3 = ZeroVec::<(char, i8, u16, u32)>::parse_byte_slice(bytes);
- assert!(matches!(zerovec3, Err(_)));
+ assert!(zerovec3.is_err());
}
diff --git a/vendor/zerovec/src/ule/unvalidated.rs b/vendor/zerovec/src/ule/unvalidated.rs
index 4564c8673..21cfb0c0d 100644
--- a/vendor/zerovec/src/ule/unvalidated.rs
+++ b/vendor/zerovec/src/ule/unvalidated.rs
@@ -2,9 +2,11 @@
// called LICENSE at the top level of the ICU4X source tree
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
-use super::VarULE;
+use super::{AsULE, RawBytesULE, VarULE};
+use crate::ule::EqULE;
use crate::{map::ZeroMapKV, VarZeroSlice, VarZeroVec, ZeroVecError};
use alloc::boxed::Box;
+use core::cmp::Ordering;
use core::fmt;
use core::ops::Deref;
@@ -209,3 +211,317 @@ where
}
}
}
+
+/// A u8 array of little-endian data that is expected to be a Unicode scalar value, but is not
+/// validated as such.
+///
+/// Use this type instead of `char` when you want to deal with data that is expected to be valid
+/// Unicode scalar values, but you want control over when or if you validate that assumption.
+///
+/// # Examples
+///
+/// ```
+/// use zerovec::ule::{RawBytesULE, UnvalidatedChar, ULE};
+/// use zerovec::{ZeroSlice, ZeroVec};
+///
+/// // data known to be little-endian three-byte chunks of valid Unicode scalar values
+/// let data = [0x68, 0x00, 0x00, 0x69, 0x00, 0x00, 0x4B, 0xF4, 0x01];
+/// // ground truth expectation
+/// let real = ['h', 'i', '👋'];
+///
+/// let chars: &ZeroSlice<UnvalidatedChar> = ZeroSlice::parse_byte_slice(&data).expect("invalid data length");
+/// let parsed: Vec<_> = chars.iter().map(|c| unsafe { c.to_char_unchecked() }).collect();
+/// assert_eq!(&parsed, &real);
+///
+/// let real_chars: ZeroVec<_> = real.iter().copied().map(UnvalidatedChar::from_char).collect();
+/// let serialized_data = chars.as_bytes();
+/// assert_eq!(serialized_data, &data);
+/// ```
+#[repr(transparent)]
+#[derive(PartialEq, Eq, Clone, Copy, Hash)]
+pub struct UnvalidatedChar([u8; 3]);
+
+impl UnvalidatedChar {
+ /// Create a [`UnvalidatedChar`] from a `char`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use zerovec::ule::UnvalidatedChar;
+ ///
+ /// let a = UnvalidatedChar::from_char('a');
+ /// assert_eq!(a.try_to_char().unwrap(), 'a');
+ /// ```
+ #[inline]
+ pub const fn from_char(c: char) -> Self {
+ let [u0, u1, u2, _u3] = (c as u32).to_le_bytes();
+ Self([u0, u1, u2])
+ }
+
+ #[inline]
+ #[doc(hidden)]
+ pub const fn from_u24(c: u32) -> Self {
+ let [u0, u1, u2, _u3] = c.to_le_bytes();
+ Self([u0, u1, u2])
+ }
+
+ /// Attempt to convert a [`UnvalidatedChar`] to a `char`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use zerovec::ule::{AsULE, UnvalidatedChar};
+ ///
+ /// let a = UnvalidatedChar::from_char('a');
+ /// assert_eq!(a.try_to_char(), Ok('a'));
+ ///
+ /// let b = UnvalidatedChar::from_unaligned([0xFF, 0xFF, 0xFF].into());
+ /// assert!(matches!(b.try_to_char(), Err(_)));
+ /// ```
+ #[inline]
+ pub fn try_to_char(self) -> Result<char, core::char::CharTryFromError> {
+ let [u0, u1, u2] = self.0;
+ char::try_from(u32::from_le_bytes([u0, u1, u2, 0]))
+ }
+
+ /// Convert a [`UnvalidatedChar`] to a `char', returning [`char::REPLACEMENT_CHARACTER`]
+ /// if the `UnvalidatedChar` does not represent a valid Unicode scalar value.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use zerovec::ule::{AsULE, UnvalidatedChar};
+ ///
+ /// let a = UnvalidatedChar::from_unaligned([0xFF, 0xFF, 0xFF].into());
+ /// assert_eq!(a.to_char_lossy(), char::REPLACEMENT_CHARACTER);
+ /// ```
+ #[inline]
+ pub fn to_char_lossy(self) -> char {
+ self.try_to_char().unwrap_or(char::REPLACEMENT_CHARACTER)
+ }
+
+ /// Convert a [`UnvalidatedChar`] to a `char` without checking that it is
+ /// a valid Unicode scalar value.
+ ///
+ /// # Safety
+ ///
+ /// The `UnvalidatedChar` must be a valid Unicode scalar value in little-endian order.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use zerovec::ule::UnvalidatedChar;
+ ///
+ /// let a = UnvalidatedChar::from_char('a');
+ /// assert_eq!(unsafe { a.to_char_unchecked() }, 'a');
+ /// ```
+ #[inline]
+ pub unsafe fn to_char_unchecked(self) -> char {
+ let [u0, u1, u2] = self.0;
+ char::from_u32_unchecked(u32::from_le_bytes([u0, u1, u2, 0]))
+ }
+}
+
+impl RawBytesULE<3> {
+ /// Converts a [`UnvalidatedChar`] to its ULE type. This is equivalent to calling
+ /// [`AsULE::to_unaligned`].
+ #[inline]
+ pub const fn from_unvalidated_char(uc: UnvalidatedChar) -> Self {
+ RawBytesULE(uc.0)
+ }
+}
+
+impl AsULE for UnvalidatedChar {
+ type ULE = RawBytesULE<3>;
+
+ #[inline]
+ fn to_unaligned(self) -> Self::ULE {
+ RawBytesULE(self.0)
+ }
+
+ #[inline]
+ fn from_unaligned(unaligned: Self::ULE) -> Self {
+ Self(unaligned.0)
+ }
+}
+
+// Safety: UnvalidatedChar is always the little-endian representation of a char,
+// which corresponds to its AsULE::ULE type
+unsafe impl EqULE for UnvalidatedChar {}
+
+impl fmt::Debug for UnvalidatedChar {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ // Debug as a char if possible
+ match self.try_to_char() {
+ Ok(c) => fmt::Debug::fmt(&c, f),
+ Err(_) => fmt::Debug::fmt(&self.0, f),
+ }
+ }
+}
+
+impl PartialOrd for UnvalidatedChar {
+ fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
+ Some(self.cmp(other))
+ }
+}
+
+impl Ord for UnvalidatedChar {
+ // custom implementation, as derived Ord would compare lexicographically
+ fn cmp(&self, other: &Self) -> Ordering {
+ let [a0, a1, a2] = self.0;
+ let a = u32::from_le_bytes([a0, a1, a2, 0]);
+ let [b0, b1, b2] = other.0;
+ let b = u32::from_le_bytes([b0, b1, b2, 0]);
+ a.cmp(&b)
+ }
+}
+
+impl From<char> for UnvalidatedChar {
+ #[inline]
+ fn from(value: char) -> Self {
+ Self::from_char(value)
+ }
+}
+
+impl TryFrom<UnvalidatedChar> for char {
+ type Error = core::char::CharTryFromError;
+
+ #[inline]
+ fn try_from(value: UnvalidatedChar) -> Result<char, Self::Error> {
+ value.try_to_char()
+ }
+}
+
+/// This impl requires enabling the optional `serde` Cargo feature of the `zerovec` crate
+#[cfg(feature = "serde")]
+impl serde::Serialize for UnvalidatedChar {
+ fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+ where
+ S: serde::Serializer,
+ {
+ use serde::ser::Error;
+ let c = self
+ .try_to_char()
+ .map_err(|_| S::Error::custom("invalid Unicode scalar value in UnvalidatedChar"))?;
+ if serializer.is_human_readable() {
+ serializer.serialize_char(c)
+ } else {
+ self.0.serialize(serializer)
+ }
+ }
+}
+
+/// This impl requires enabling the optional `serde` Cargo feature of the `zerovec` crate
+#[cfg(feature = "serde")]
+impl<'de> serde::Deserialize<'de> for UnvalidatedChar {
+ fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+ where
+ D: serde::Deserializer<'de>,
+ {
+ if deserializer.is_human_readable() {
+ let c = <char>::deserialize(deserializer)?;
+ Ok(UnvalidatedChar::from_char(c))
+ } else {
+ let bytes = <[u8; 3]>::deserialize(deserializer)?;
+ Ok(UnvalidatedChar(bytes))
+ }
+ }
+}
+
+#[cfg(feature = "databake")]
+impl databake::Bake for UnvalidatedChar {
+ fn bake(&self, env: &databake::CrateEnv) -> databake::TokenStream {
+ match self.try_to_char() {
+ Ok(ch) => {
+ env.insert("zerovec");
+ let ch = ch.bake(env);
+ databake::quote! {
+ zerovec::ule::UnvalidatedChar::from_char(#ch)
+ }
+ }
+ Err(_) => {
+ env.insert("zerovec");
+ let u24 = u32::from_le_bytes([self.0[0], self.0[1], self.0[2], 0]);
+ databake::quote! {
+ zerovec::ule::UnvalidatedChar::from_u24(#u24)
+ }
+ }
+ }
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use super::*;
+ use crate::ZeroVec;
+
+ #[test]
+ fn test_serde_fail() {
+ let uc = UnvalidatedChar([0xFF, 0xFF, 0xFF]);
+ serde_json::to_string(&uc).expect_err("serialize invalid char bytes");
+ bincode::serialize(&uc).expect_err("serialize invalid char bytes");
+ }
+
+ #[test]
+ fn test_serde_json() {
+ let c = '🙃';
+ let uc = UnvalidatedChar::from_char(c);
+ let json_ser = serde_json::to_string(&uc).unwrap();
+
+ assert_eq!(json_ser, r#""🙃""#);
+
+ let json_de: UnvalidatedChar = serde_json::from_str(&json_ser).unwrap();
+
+ assert_eq!(uc, json_de);
+ }
+
+ #[test]
+ fn test_serde_bincode() {
+ let c = '🙃';
+ let uc = UnvalidatedChar::from_char(c);
+ let bytes_ser = bincode::serialize(&uc).unwrap();
+
+ assert_eq!(bytes_ser, [0x43, 0xF6, 0x01]);
+
+ let bytes_de: UnvalidatedChar = bincode::deserialize(&bytes_ser).unwrap();
+
+ assert_eq!(uc, bytes_de);
+ }
+
+ #[test]
+ fn test_representation() {
+ let chars = ['w', 'ω', '文', '𑄃', '🙃'];
+
+ // backed by [UnvalidatedChar]
+ let uvchars: Vec<_> = chars
+ .iter()
+ .copied()
+ .map(UnvalidatedChar::from_char)
+ .collect();
+ // backed by [RawBytesULE<3>]
+ let zvec: ZeroVec<_> = uvchars.clone().into_iter().collect();
+
+ let ule_bytes = zvec.as_bytes();
+ let uvbytes;
+ unsafe {
+ let ptr = &uvchars[..] as *const _ as *const u8;
+ uvbytes = core::slice::from_raw_parts(ptr, ule_bytes.len());
+ }
+
+ // UnvalidatedChar is defined as little-endian, so this must be true on all platforms
+ // also asserts that to_unaligned/from_unaligned are no-ops
+ assert_eq!(uvbytes, ule_bytes);
+
+ assert_eq!(
+ &[119, 0, 0, 201, 3, 0, 135, 101, 0, 3, 17, 1, 67, 246, 1],
+ ule_bytes
+ );
+ }
+
+ #[test]
+ fn test_char_bake() {
+ databake::test_bake!(UnvalidatedChar, const: crate::ule::UnvalidatedChar::from_char('b'), zerovec);
+ // surrogate code point
+ databake::test_bake!(UnvalidatedChar, const: crate::ule::UnvalidatedChar::from_u24(55296u32), zerovec);
+ }
+}
diff --git a/vendor/zerovec/src/varzerovec/components.rs b/vendor/zerovec/src/varzerovec/components.rs
index ff26d9029..9b48a5bd6 100644
--- a/vendor/zerovec/src/varzerovec/components.rs
+++ b/vendor/zerovec/src/varzerovec/components.rs
@@ -53,7 +53,7 @@ pub unsafe trait VarZeroVecFormat: 'static + Sized {
/// Will have a smaller data size, but it's more likely for larger arrays
/// to be unrepresentable (and error on construction)
///
-/// This is the default index size used by all [`VarZeroVec`](super::VarZeroVec) tyoes.
+/// This is the default index size used by all [`VarZeroVec`](super::VarZeroVec) types.
#[derive(Copy, Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
#[allow(clippy::exhaustive_structs)] // marker
pub struct Index16;
@@ -128,13 +128,7 @@ pub struct VarZeroVecComponents<'a, T: ?Sized, F> {
impl<'a, T: ?Sized, F> Copy for VarZeroVecComponents<'a, T, F> {}
impl<'a, T: ?Sized, F> Clone for VarZeroVecComponents<'a, T, F> {
fn clone(&self) -> Self {
- VarZeroVecComponents {
- len: self.len,
- indices: self.indices,
- things: self.things,
- entire_slice: self.entire_slice,
- marker: PhantomData,
- }
+ *self
}
}
@@ -161,13 +155,14 @@ impl<'a, T: VarULE + ?Sized, F: VarZeroVecFormat> VarZeroVecComponents<'a, T, F>
/// Construct a new VarZeroVecComponents, checking invariants about the overall buffer size:
///
/// - There must be either zero or at least four bytes (if four, this is the "length" parsed as a usize)
- /// - There must be at least `4*length + 4` bytes total, to form the the array `indices` of indices
+ /// - There must be at least `4*length + 4` bytes total, to form the array `indices` of indices
/// - `indices[i]..indices[i+1]` must index into a valid section of
/// `things`, such that it parses to a `T::VarULE`
/// - `indices[len - 1]..things.len()` must index into a valid section of
/// `things`, such that it parses to a `T::VarULE`
#[inline]
pub fn parse_byte_slice(slice: &'a [u8]) -> Result<Self, ZeroVecError> {
+ // The empty VZV is special-cased to the empty slice
if slice.is_empty() {
return Ok(VarZeroVecComponents {
len: 0,
@@ -219,6 +214,7 @@ impl<'a, T: VarULE + ?Sized, F: VarZeroVecFormat> VarZeroVecComponents<'a, T, F>
/// The bytes must have previously successfully run through
/// [`VarZeroVecComponents::parse_byte_slice()`]
pub unsafe fn from_bytes_unchecked(slice: &'a [u8]) -> Self {
+ // The empty VZV is special-cased to the empty slice
if slice.is_empty() {
return VarZeroVecComponents {
len: 0,
@@ -369,7 +365,7 @@ impl<'a, T: VarULE + ?Sized, F: VarZeroVecFormat> VarZeroVecComponents<'a, T, F>
.copied()
.map(F::rawbytes_to_usize)
.skip(1)
- .chain(core::iter::once(self.things.len())),
+ .chain([self.things.len()]),
)
.map(move |(start, end)| unsafe { self.things.get_unchecked(start..end) })
.map(|bytes| unsafe { T::from_byte_slice_unchecked(bytes) })
@@ -485,12 +481,13 @@ where
}
/// Collects the bytes for a VarZeroSlice into a Vec.
-pub fn get_serializable_bytes<T, A, F>(elements: &[A]) -> Option<Vec<u8>>
+pub fn get_serializable_bytes_non_empty<T, A, F>(elements: &[A]) -> Option<Vec<u8>>
where
T: VarULE + ?Sized,
A: EncodeAsVarULE<T>,
F: VarZeroVecFormat,
{
+ debug_assert!(!elements.is_empty());
let len = compute_serializable_len::<T, A, F>(elements)?;
debug_assert!(len >= LENGTH_WIDTH as u32);
let mut output: Vec<u8> = alloc::vec![0; len as usize];
@@ -566,9 +563,7 @@ where
let data_len: u32 = elements
.iter()
.map(|v| u32::try_from(v.encode_var_ule_len()).ok())
- .fold(Some(0u32), |s, v| {
- s.and_then(|s| v.and_then(|v| s.checked_add(v)))
- })?;
+ .try_fold(0u32, |s, v| s.checked_add(v?))?;
let ret = idx_len.checked_add(data_len);
if let Some(r) = ret {
if r >= F::MAX_VALUE {
diff --git a/vendor/zerovec/src/varzerovec/databake.rs b/vendor/zerovec/src/varzerovec/databake.rs
index 8d9fc0bfc..a3f9db2d1 100644
--- a/vendor/zerovec/src/varzerovec/databake.rs
+++ b/vendor/zerovec/src/varzerovec/databake.rs
@@ -9,11 +9,11 @@ impl<T: VarULE + ?Sized> Bake for VarZeroVec<'_, T> {
fn bake(&self, env: &CrateEnv) -> TokenStream {
env.insert("zerovec");
if self.is_empty() {
- quote! { ::zerovec::VarZeroVec::new() }
+ quote! { zerovec::VarZeroVec::new() }
} else {
let bytes = databake::Bake::bake(&self.as_bytes(), env);
// Safe because self.as_bytes is a safe input
- quote! { unsafe { ::zerovec::VarZeroVec::from_bytes_unchecked(#bytes) } }
+ quote! { unsafe { zerovec::VarZeroVec::from_bytes_unchecked(#bytes) } }
}
}
}
@@ -22,11 +22,11 @@ impl<T: VarULE + ?Sized> Bake for &VarZeroSlice<T> {
fn bake(&self, env: &CrateEnv) -> TokenStream {
env.insert("zerovec");
if self.is_empty() {
- quote! { ::zerovec::VarZeroSlice::new_empty() }
+ quote! { zerovec::VarZeroSlice::new_empty() }
} else {
let bytes = databake::Bake::bake(&self.as_bytes(), env);
// Safe because self.as_bytes is a safe input
- quote! { unsafe { ::zerovec::VarZeroSlice::from_bytes_unchecked(#bytes) } }
+ quote! { unsafe { zerovec::VarZeroSlice::from_bytes_unchecked(#bytes) } }
}
}
}
diff --git a/vendor/zerovec/src/varzerovec/owned.rs b/vendor/zerovec/src/varzerovec/owned.rs
index 76de48760..c5556315f 100644
--- a/vendor/zerovec/src/varzerovec/owned.rs
+++ b/vendor/zerovec/src/varzerovec/owned.rs
@@ -84,13 +84,18 @@ impl<T: VarULE + ?Sized, F: VarZeroVecFormat> VarZeroVecOwned<T, F> {
where
A: EncodeAsVarULE<T>,
{
- Ok(Self {
- marker: PhantomData,
- // TODO(#1410): Rethink length errors in VZV.
- entire_slice: components::get_serializable_bytes::<T, A, F>(elements).ok_or(
- "Attempted to build VarZeroVec out of elements that \
+ Ok(if elements.is_empty() {
+ Self::from_slice(VarZeroSlice::new_empty())
+ } else {
+ Self {
+ marker: PhantomData,
+ // TODO(#1410): Rethink length errors in VZV.
+ entire_slice: components::get_serializable_bytes_non_empty::<T, A, F>(elements)
+ .ok_or(
+ "Attempted to build VarZeroVec out of elements that \
cumulatively are larger than a u32 in size",
- )?,
+ )?,
+ }
})
}
@@ -279,7 +284,7 @@ impl<T: VarULE + ?Sized, F: VarZeroVecFormat> VarZeroVecOwned<T, F> {
any::type_name::<F>()
);
}
- self.entire_slice.reserve(shift as usize);
+ self.entire_slice.resize(new_slice_len, 0);
}
// Now that we've ensured there's enough space, we can shift the data around.
@@ -287,6 +292,7 @@ impl<T: VarULE + ?Sized, F: VarZeroVecFormat> VarZeroVecOwned<T, F> {
// Note: There are no references introduced between pointer creation and pointer use, and all
// raw pointers are derived from a single &mut. This preserves pointer provenance.
let slice_range = self.entire_slice.as_mut_ptr_range();
+ let old_slice_end = slice_range.start.add(slice_len);
let data_start = slice_range
.start
.add(LENGTH_WIDTH + METADATA_WIDTH + len * F::INDEX_WIDTH);
@@ -316,7 +322,7 @@ impl<T: VarULE + ?Sized, F: VarZeroVecFormat> VarZeroVecOwned<T, F> {
// Shift data after the element to its new position.
shift_bytes(
- prev_element_p.end..slice_range.end,
+ prev_element_p.end..old_slice_end,
prev_element_p
.start
.offset((new_size as i64 + index_shift) as isize),
diff --git a/vendor/zerovec/src/varzerovec/serde.rs b/vendor/zerovec/src/varzerovec/serde.rs
index 649b29cfb..8025fc085 100644
--- a/vendor/zerovec/src/varzerovec/serde.rs
+++ b/vendor/zerovec/src/varzerovec/serde.rs
@@ -72,7 +72,7 @@ where
where
D: Deserializer<'de>,
{
- let visitor = VarZeroVecVisitor::default();
+ let visitor = VarZeroVecVisitor::<T, F>::default();
if deserializer.is_human_readable() {
deserializer.deserialize_seq(visitor)
} else {
@@ -98,7 +98,7 @@ where
"&VarZeroSlice cannot be deserialized from human-readable formats",
))
} else {
- let deserialized: VarZeroVec<'a, T, F> = VarZeroVec::deserialize(deserializer)?;
+ let deserialized = VarZeroVec::<'a, T, F>::deserialize(deserializer)?;
let borrowed = if let VarZeroVec::Borrowed(b) = deserialized {
b
} else {
@@ -112,6 +112,22 @@ where
}
/// This impl requires enabling the optional `serde` Cargo feature of the `zerovec` crate
+impl<'de, T, F> Deserialize<'de> for Box<VarZeroSlice<T, F>>
+where
+ T: VarULE + ?Sized,
+ Box<T>: Deserialize<'de>,
+ F: VarZeroVecFormat,
+{
+ fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+ where
+ D: Deserializer<'de>,
+ {
+ let deserialized = VarZeroVec::<T, F>::deserialize(deserializer)?;
+ Ok(deserialized.to_boxed())
+ }
+}
+
+/// This impl requires enabling the optional `serde` Cargo feature of the `zerovec` crate
#[cfg(feature = "serde")]
impl<T, F> Serialize for VarZeroVec<'_, T, F>
where
@@ -166,6 +182,12 @@ mod test {
_data: &'data VarZeroSlice<str>,
}
+ #[derive(serde::Serialize, serde::Deserialize)]
+ struct DeriveTest_VarZeroVec_of_VarZeroSlice<'data> {
+ #[serde(borrow)]
+ _data: VarZeroVec<'data, VarZeroSlice<str>>,
+ }
+
// ["foo", "bar", "baz", "dolor", "quux", "lorem ipsum"];
const BYTES: &[u8] = &[
6, 0, 0, 0, 0, 0, 3, 0, 6, 0, 9, 0, 14, 0, 18, 0, 102, 111, 111, 98, 97, 114, 98, 97, 122,
diff --git a/vendor/zerovec/src/varzerovec/slice.rs b/vendor/zerovec/src/varzerovec/slice.rs
index afdbe80d9..119f1d38f 100644
--- a/vendor/zerovec/src/varzerovec/slice.rs
+++ b/vendor/zerovec/src/varzerovec/slice.rs
@@ -108,8 +108,8 @@ pub struct VarZeroSlice<T: ?Sized, F = Index16> {
impl<T: VarULE + ?Sized, F: VarZeroVecFormat> VarZeroSlice<T, F> {
/// Construct a new empty VarZeroSlice
pub const fn new_empty() -> &'static Self {
- let arr: &[u8] = &[];
- unsafe { mem::transmute(arr) }
+ // The empty VZV is special-cased to the empty slice
+ unsafe { mem::transmute(&[] as &[u8]) }
}
/// Obtain a [`VarZeroVecComponents`] borrowing from the internal buffer
@@ -192,7 +192,7 @@ impl<T: VarULE + ?Sized, F: VarZeroVecFormat> VarZeroSlice<T, F> {
self.as_components().iter()
}
- /// Get one of this slice's elements, returning None if the index is out of bounds
+ /// Get one of this slice's elements, returning `None` if the index is out of bounds
///
/// # Example
///
@@ -366,7 +366,7 @@ where
/// assert_eq!(vec.binary_search_in_range("g", 1..6), Some(Ok(2)));
/// assert_eq!(vec.binary_search_in_range("h", 1..6), Some(Err(3)));
///
- /// // Will return None if the range is out of bounds:
+ /// // Will return `None` if the range is out of bounds:
/// assert_eq!(vec.binary_search_in_range("x", 100..200), None);
/// assert_eq!(vec.binary_search_in_range("x", 0..200), None);
/// # Ok::<(), ZeroVecError>(())
@@ -460,7 +460,7 @@ where
/// Some(Err(3))
/// );
///
- /// // Will return None if the range is out of bounds:
+ /// // Will return `None` if the range is out of bounds:
/// assert_eq!(
/// vec.binary_search_in_range_by(|v| v.cmp("x"), 100..200),
/// None
diff --git a/vendor/zerovec/src/varzerovec/vec.rs b/vendor/zerovec/src/varzerovec/vec.rs
index 1401a180a..64928509f 100644
--- a/vendor/zerovec/src/varzerovec/vec.rs
+++ b/vendor/zerovec/src/varzerovec/vec.rs
@@ -425,8 +425,12 @@ where
{
#[inline]
fn from(elements: &[A]) -> Self {
- #[allow(clippy::unwrap_used)] // TODO(#1410) Better story for fallibility
- VarZeroVecOwned::try_from_elements(elements).unwrap().into()
+ if elements.is_empty() {
+ VarZeroSlice::new_empty().into()
+ } else {
+ #[allow(clippy::unwrap_used)] // TODO(#1410) Better story for fallibility
+ VarZeroVecOwned::try_from_elements(elements).unwrap().into()
+ }
}
}
@@ -451,8 +455,14 @@ where
{
#[inline]
fn eq(&self, other: &VarZeroVec<'b, T, F>) -> bool {
- // VarULE has an API guarantee that this is equivalent
- // to `T::VarULE::eq()`
+ // VZV::from_elements used to produce a non-canonical representation of the
+ // empty VZV, so we cannot use byte equality for empty vecs.
+ if self.is_empty() || other.is_empty() {
+ return self.is_empty() && other.is_empty();
+ }
+ // VarULE has an API guarantee that byte equality is semantic equality.
+ // For non-empty VZVs, there's only a single metadata representation,
+ // so this guarantee extends to the whole VZV representation.
self.as_bytes().eq(other.as_bytes())
}
}
@@ -503,3 +513,19 @@ impl<'a, T: VarULE + ?Sized + Ord, F: VarZeroVecFormat> Ord for VarZeroVec<'a, T
self.iter().cmp(other.iter())
}
}
+
+#[test]
+fn assert_single_empty_representation() {
+ assert_eq!(
+ VarZeroVec::<str>::new().as_bytes(),
+ VarZeroVec::<str>::from(&[] as &[&str]).as_bytes()
+ );
+}
+
+#[test]
+fn weird_empty_representation_equality() {
+ assert_eq!(
+ VarZeroVec::<str>::parse_byte_slice(&[0, 0, 0, 0]).unwrap(),
+ VarZeroVec::<str>::parse_byte_slice(&[]).unwrap()
+ );
+}
diff --git a/vendor/zerovec/src/yoke_impls.rs b/vendor/zerovec/src/yoke_impls.rs
index a5064a554..8b196cf9a 100644
--- a/vendor/zerovec/src/yoke_impls.rs
+++ b/vendor/zerovec/src/yoke_impls.rs
@@ -3,6 +3,9 @@
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
// This way we can copy-paste Yokeable impls
+#![allow(unknown_lints)] // forgetting_copy_types
+#![allow(renamed_and_removed_lints)] // forgetting_copy_types
+#![allow(forgetting_copy_types)]
#![allow(clippy::forget_copy)]
#![allow(clippy::forget_non_drop)]
@@ -30,8 +33,8 @@ unsafe impl<'a, T: 'static + AsULE + ?Sized> Yokeable<'a> for ZeroVec<'static, T
#[inline]
unsafe fn make(from: Self::Output) -> Self {
debug_assert!(mem::size_of::<Self::Output>() == mem::size_of::<Self>());
- let ptr: *const Self = (&from as *const Self::Output).cast();
- mem::forget(from);
+ let from = mem::ManuallyDrop::new(from);
+ let ptr: *const Self = (&*from as *const Self::Output).cast();
ptr::read(ptr)
}
#[inline]
@@ -58,8 +61,8 @@ unsafe impl<'a, T: 'static + VarULE + ?Sized> Yokeable<'a> for VarZeroVec<'stati
#[inline]
unsafe fn make(from: Self::Output) -> Self {
debug_assert!(mem::size_of::<Self::Output>() == mem::size_of::<Self>());
- let ptr: *const Self = (&from as *const Self::Output).cast();
- mem::forget(from);
+ let from = mem::ManuallyDrop::new(from);
+ let ptr: *const Self = (&*from as *const Self::Output).cast();
ptr::read(ptr)
}
#[inline]
@@ -86,8 +89,8 @@ unsafe impl<'a> Yokeable<'a> for FlexZeroVec<'static> {
#[inline]
unsafe fn make(from: Self::Output) -> Self {
debug_assert!(mem::size_of::<Self::Output>() == mem::size_of::<Self>());
- let ptr: *const Self = (&from as *const Self::Output).cast();
- mem::forget(from);
+ let from = mem::ManuallyDrop::new(from);
+ let ptr: *const Self = (&*from as *const Self::Output).cast();
ptr::read(ptr)
}
#[inline]
@@ -124,16 +127,16 @@ where
unsafe {
// Similar problem as transform(), but we need to use ptr::read since
// the compiler isn't sure of the sizes
- let ptr: *const Self::Output = (&self as *const Self).cast();
- mem::forget(self);
+ let this = mem::ManuallyDrop::new(self);
+ let ptr: *const Self::Output = (&*this as *const Self).cast();
ptr::read(ptr)
}
}
#[inline]
unsafe fn make(from: Self::Output) -> Self {
debug_assert!(mem::size_of::<Self::Output>() == mem::size_of::<Self>());
- let ptr: *const Self = (&from as *const Self::Output).cast();
- mem::forget(from);
+ let from = mem::ManuallyDrop::new(from);
+ let ptr: *const Self = (&*from as *const Self::Output).cast();
ptr::read(ptr)
}
#[inline]
@@ -170,16 +173,16 @@ where
unsafe {
// Similar problem as transform(), but we need to use ptr::read since
// the compiler isn't sure of the sizes
- let ptr: *const Self::Output = (&self as *const Self).cast();
- mem::forget(self);
+ let this = mem::ManuallyDrop::new(self);
+ let ptr: *const Self::Output = (&*this as *const Self).cast();
ptr::read(ptr)
}
}
#[inline]
unsafe fn make(from: Self::Output) -> Self {
debug_assert!(mem::size_of::<Self::Output>() == mem::size_of::<Self>());
- let ptr: *const Self = (&from as *const Self::Output).cast();
- mem::forget(from);
+ let from = mem::ManuallyDrop::new(from);
+ let ptr: *const Self = (&*from as *const Self::Output).cast();
ptr::read(ptr)
}
#[inline]
@@ -218,16 +221,16 @@ where
unsafe {
// Similar problem as transform(), but we need to use ptr::read since
// the compiler isn't sure of the sizes
- let ptr: *const Self::Output = (&self as *const Self).cast();
- mem::forget(self);
+ let this = mem::ManuallyDrop::new(self);
+ let ptr: *const Self::Output = (&*this as *const Self).cast();
ptr::read(ptr)
}
}
#[inline]
unsafe fn make(from: Self::Output) -> Self {
debug_assert!(mem::size_of::<Self::Output>() == mem::size_of::<Self>());
- let ptr: *const Self = (&from as *const Self::Output).cast();
- mem::forget(from);
+ let from = mem::ManuallyDrop::new(from);
+ let ptr: *const Self = (&*from as *const Self::Output).cast();
ptr::read(ptr)
}
#[inline]
@@ -266,16 +269,16 @@ where
unsafe {
// Similar problem as transform(), but we need to use ptr::read since
// the compiler isn't sure of the sizes
- let ptr: *const Self::Output = (&self as *const Self).cast();
- mem::forget(self);
+ let this = mem::ManuallyDrop::new(self);
+ let ptr: *const Self::Output = (&*this as *const Self).cast();
ptr::read(ptr)
}
}
#[inline]
unsafe fn make(from: Self::Output) -> Self {
debug_assert!(mem::size_of::<Self::Output>() == mem::size_of::<Self>());
- let ptr: *const Self = (&from as *const Self::Output).cast();
- mem::forget(from);
+ let from = mem::ManuallyDrop::new(from);
+ let ptr: *const Self = (&*from as *const Self::Output).cast();
ptr::read(ptr)
}
#[inline]
diff --git a/vendor/zerovec/src/zerovec/databake.rs b/vendor/zerovec/src/zerovec/databake.rs
index e46065c38..31f167594 100644
--- a/vendor/zerovec/src/zerovec/databake.rs
+++ b/vendor/zerovec/src/zerovec/databake.rs
@@ -8,15 +8,15 @@ use databake::*;
impl<T> Bake for ZeroVec<'_, T>
where
- T: AsULE + ?Sized,
+ T: AsULE + ?Sized + Bake,
{
fn bake(&self, env: &CrateEnv) -> TokenStream {
env.insert("zerovec");
if self.is_empty() {
- quote! { ::zerovec::ZeroVec::new() }
+ quote! { zerovec::ZeroVec::new() }
} else {
let bytes = databake::Bake::bake(&self.as_bytes(), env);
- quote! { unsafe { ::zerovec::ZeroVec::from_bytes_unchecked(#bytes) } }
+ quote! { unsafe { zerovec::ZeroVec::from_bytes_unchecked(#bytes) } }
}
}
}
@@ -28,10 +28,10 @@ where
fn bake(&self, env: &CrateEnv) -> TokenStream {
env.insert("zerovec");
if self.is_empty() {
- quote! { ::zerovec::ZeroSlice::new_empty() }
+ quote! { zerovec::ZeroSlice::new_empty() }
} else {
let bytes = databake::Bake::bake(&self.as_bytes(), env);
- quote! { unsafe { ::zerovec::ZeroSlice::from_bytes_unchecked(#bytes) } }
+ quote! { unsafe { zerovec::ZeroSlice::from_bytes_unchecked(#bytes) } }
}
}
}
diff --git a/vendor/zerovec/src/zerovec/mod.rs b/vendor/zerovec/src/zerovec/mod.rs
index e7c87f68e..e6186be0a 100644
--- a/vendor/zerovec/src/zerovec/mod.rs
+++ b/vendor/zerovec/src/zerovec/mod.rs
@@ -20,7 +20,9 @@ use core::fmt;
use core::iter::FromIterator;
use core::marker::PhantomData;
use core::mem;
+use core::num::NonZeroUsize;
use core::ops::Deref;
+use core::ptr;
/// A zero-copy, byte-aligned vector for fixed-width types.
///
@@ -138,8 +140,8 @@ impl<U> EyepatchHackVector<U> {
}
// Return a slice to the inner data
#[inline]
- fn as_slice<'a>(&'a self) -> &'a [U] {
- unsafe { &*self.buf }
+ const fn as_slice<'a>(&'a self) -> &'a [U] {
+ unsafe { &*(self.buf as *const [U]) }
}
/// Return this type as a vector
@@ -255,6 +257,24 @@ impl<'a, T: AsULE + Ord> Ord for ZeroVec<'a, T> {
}
}
+impl<'a, T: AsULE> AsRef<[T::ULE]> for ZeroVec<'a, T> {
+ fn as_ref(&self) -> &[T::ULE] {
+ self.as_ule_slice()
+ }
+}
+
+impl<'a, T: AsULE> From<&'a [T::ULE]> for ZeroVec<'a, T> {
+ fn from(other: &'a [T::ULE]) -> Self {
+ ZeroVec::new_borrowed(other)
+ }
+}
+
+impl<'a, T: AsULE> From<Vec<T::ULE>> for ZeroVec<'a, T> {
+ fn from(other: Vec<T::ULE>) -> Self {
+ ZeroVec::new_owned(other)
+ }
+}
+
impl<'a, T> ZeroVec<'a, T>
where
T: AsULE + ?Sized,
@@ -274,6 +294,11 @@ where
Self::new_borrowed(&[])
}
+ /// Same as `ZeroSlice::len`, which is available through `Deref` and not `const`.
+ pub const fn const_len(&self) -> usize {
+ self.vector.as_slice().len()
+ }
+
/// Creates a new owned `ZeroVec` using an existing
/// allocated backing buffer
///
@@ -284,10 +309,10 @@ where
// Deconstruct the vector into parts
// This is the only part of the code that goes from Vec
// to ZeroVec, all other such operations should use this function
- let slice: &[T::ULE] = &vec;
- let slice = slice as *const [_] as *mut [_];
let capacity = vec.capacity();
- mem::forget(vec);
+ let len = vec.len();
+ let ptr = mem::ManuallyDrop::new(vec).as_mut_ptr();
+ let slice = ptr::slice_from_raw_parts_mut(ptr, len);
Self {
vector: EyepatchHackVector {
buf: slice,
@@ -352,10 +377,10 @@ where
/// `bytes` need to be an output from [`ZeroSlice::as_bytes()`].
pub const unsafe fn from_bytes_unchecked(bytes: &'a [u8]) -> Self {
// &[u8] and &[T::ULE] are the same slice with different length metadata.
- Self::new_borrowed(core::mem::transmute((
- bytes.as_ptr(),
+ Self::new_borrowed(core::slice::from_raw_parts(
+ bytes.as_ptr() as *const T::ULE,
bytes.len() / core::mem::size_of::<T::ULE>(),
- )))
+ ))
}
/// Converts a `ZeroVec<T>` into a `ZeroVec<u8>`, retaining the current ownership model.
@@ -554,6 +579,34 @@ where
Some(ZeroSlice::from_ule_slice(ule_slice))
}
}
+
+ /// If the ZeroVec is owned, returns the capacity of the vector.
+ ///
+ /// Otherwise, if the ZeroVec is borrowed, returns `None`.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use zerovec::ZeroVec;
+ ///
+ /// let mut zv = ZeroVec::<u8>::new_borrowed(&[0, 1, 2, 3]);
+ /// assert!(!zv.is_owned());
+ /// assert_eq!(zv.owned_capacity(), None);
+ ///
+ /// // Convert to owned without appending anything
+ /// zv.with_mut(|v| ());
+ /// assert!(zv.is_owned());
+ /// assert_eq!(zv.owned_capacity(), Some(4.try_into().unwrap()));
+ ///
+ /// // Double the size by appending
+ /// zv.with_mut(|v| v.push(0));
+ /// assert!(zv.is_owned());
+ /// assert_eq!(zv.owned_capacity(), Some(8.try_into().unwrap()));
+ /// ```
+ #[inline]
+ pub fn owned_capacity(&self) -> Option<NonZeroUsize> {
+ NonZeroUsize::try_from(self.vector.capacity).ok()
+ }
}
impl<'a> ZeroVec<'a, u8> {
@@ -860,21 +913,18 @@ where
/// the logical equivalent of this type's internal representation
#[inline]
pub fn into_cow(self) -> Cow<'a, [T::ULE]> {
- if self.is_owned() {
+ let this = mem::ManuallyDrop::new(self);
+ if this.is_owned() {
let vec = unsafe {
// safe to call: we know it's owned,
- // and we mem::forget self immediately afterwards
- self.vector.get_vec()
+ // and `self`/`this` are thenceforth no longer used or dropped
+ { this }.vector.get_vec()
};
- mem::forget(self);
Cow::Owned(vec)
} else {
// We can extend the lifetime of the slice to 'a
// since we know it is borrowed
- let slice = unsafe { self.vector.as_arbitrary_slice() };
- // The borrowed destructor is a no-op, but we want to prevent
- // the check being run
- mem::forget(self);
+ let slice = unsafe { { this }.vector.as_arbitrary_slice() };
Cow::Borrowed(slice)
}
}
@@ -890,6 +940,89 @@ impl<T: AsULE> FromIterator<T> for ZeroVec<'_, T> {
}
}
+/// Convenience wrapper for [`ZeroSlice::from_ule_slice`]. The value will be created at compile-time,
+/// meaning that all arguments must also be constant.
+///
+/// # Arguments
+///
+/// * `$aligned` - The type of an element in its canonical, aligned form, e.g., `char`.
+/// * `$convert` - A const function that converts an `$aligned` into its unaligned equivalent, e.g.,
+/// `const fn from_aligned(a: CanonicalType) -> CanonicalType::ULE`.
+/// * `$x` - The elements that the `ZeroSlice` will hold.
+///
+/// # Examples
+///
+/// Using array-conversion functions provided by this crate:
+///
+/// ```
+/// use zerovec::{ZeroSlice, zeroslice, ule::AsULE};
+/// use zerovec::ule::UnvalidatedChar;
+///
+/// const SIGNATURE: &ZeroSlice<char> = zeroslice!(char; <char as AsULE>::ULE::from_aligned; ['b', 'y', 'e', '✌']);
+/// const EMPTY: &ZeroSlice<u32> = zeroslice![];
+/// const UC: &ZeroSlice<UnvalidatedChar> =
+/// zeroslice!(
+/// UnvalidatedChar;
+/// <UnvalidatedChar as AsULE>::ULE::from_unvalidated_char;
+/// [UnvalidatedChar::from_char('a')]
+/// );
+/// let empty: &ZeroSlice<u32> = zeroslice![];
+/// let nums = zeroslice!(u32; <u32 as AsULE>::ULE::from_unsigned; [1, 2, 3, 4, 5]);
+/// assert_eq!(nums.last().unwrap(), 5);
+/// ```
+///
+/// Using a custom array-conversion function:
+///
+/// ```
+/// use zerovec::{ule::AsULE, ule::RawBytesULE, zeroslice, ZeroSlice};
+///
+/// const fn be_convert(num: i16) -> <i16 as AsULE>::ULE {
+/// RawBytesULE(num.to_be_bytes())
+/// }
+///
+/// const NUMBERS_BE: &ZeroSlice<i16> =
+/// zeroslice!(i16; be_convert; [1, -2, 3, -4, 5]);
+/// ```
+#[macro_export]
+macro_rules! zeroslice {
+ () => (
+ $crate::ZeroSlice::new_empty()
+ );
+ ($aligned:ty; $convert:expr; [$($x:expr),+ $(,)?]) => (
+ $crate::ZeroSlice::<$aligned>::from_ule_slice(
+ {const X: &[<$aligned as $crate::ule::AsULE>::ULE] = &[
+ $($convert($x)),*
+ ]; X}
+ )
+ );
+}
+
+/// Creates a borrowed `ZeroVec`. Convenience wrapper for `zeroslice!(...).as_zerovec()`. The value
+/// will be created at compile-time, meaning that all arguments must also be constant.
+///
+/// See [`zeroslice!`](crate::zeroslice) for more information.
+///
+/// # Examples
+///
+/// ```
+/// use zerovec::{ZeroVec, zerovec, ule::AsULE};
+///
+/// const SIGNATURE: ZeroVec<char> = zerovec!(char; <char as AsULE>::ULE::from_aligned; ['a', 'y', 'e', '✌']);
+/// assert!(!SIGNATURE.is_owned());
+///
+/// const EMPTY: ZeroVec<u32> = zerovec![];
+/// assert!(!EMPTY.is_owned());
+/// ```
+#[macro_export]
+macro_rules! zerovec {
+ () => (
+ $crate::ZeroVec::new()
+ );
+ ($aligned:ty; $convert:expr; [$($x:expr),+ $(,)?]) => (
+ $crate::zeroslice![$aligned; $convert; [$($x),+]].as_zerovec()
+ );
+}
+
#[cfg(test)]
mod tests {
use super::*;
diff --git a/vendor/zerovec/src/zerovec/serde.rs b/vendor/zerovec/src/zerovec/serde.rs
index e3141071c..bb180d5a1 100644
--- a/vendor/zerovec/src/zerovec/serde.rs
+++ b/vendor/zerovec/src/zerovec/serde.rs
@@ -216,6 +216,6 @@ mod test {
let zerovec_orig: ZeroVec<u32> = ZeroVec::from_slice_or_alloc(&[119, 0xD800, 120]);
let bincode_buf = bincode::serialize(&zerovec_orig).expect("serialize");
let zerovec_result = bincode::deserialize::<ZeroVec<char>>(&bincode_buf);
- assert!(matches!(zerovec_result, Err(_)));
+ assert!(zerovec_result.is_err());
}
}
diff --git a/vendor/zerovec/src/zerovec/slice.rs b/vendor/zerovec/src/zerovec/slice.rs
index 52ddc184b..12d88deff 100644
--- a/vendor/zerovec/src/zerovec/slice.rs
+++ b/vendor/zerovec/src/zerovec/slice.rs
@@ -65,10 +65,10 @@ where
/// `bytes` need to be an output from [`ZeroSlice::as_bytes()`].
pub const unsafe fn from_bytes_unchecked(bytes: &[u8]) -> &Self {
// &[u8] and &[T::ULE] are the same slice with different length metadata.
- Self::from_ule_slice(core::mem::transmute((
- bytes.as_ptr(),
+ Self::from_ule_slice(core::slice::from_raw_parts(
+ bytes.as_ptr() as *const T::ULE,
bytes.len() / core::mem::size_of::<T::ULE>(),
- )))
+ ))
}
/// Construct a `&ZeroSlice<T>` from a slice of ULEs.
@@ -169,7 +169,7 @@ impl<T> ZeroSlice<T>
where
T: AsULE,
{
- /// Gets the element at the specified index. Returns None if out of range.
+ /// Gets the element at the specified index. Returns `None` if out of range.
///
/// # Example
///
@@ -191,7 +191,7 @@ where
.map(T::from_unaligned)
}
- /// Gets the entire slice as an array of length `N`. Returns None if the slice
+ /// Gets the entire slice as an array of length `N`. Returns `None` if the slice
/// does not have exactly `N` elements.
///
/// # Example
@@ -212,7 +212,7 @@ where
Some(ule_array.map(|u| T::from_unaligned(u)))
}
- /// Gets a subslice of elements within a certain range. Returns None if the range
+ /// Gets a subslice of elements within a certain range. Returns `None` if the range
/// is out of bounds of this `ZeroSlice`.
///
/// # Example
@@ -307,7 +307,7 @@ where
Ok(ZeroSlice::from_ule_slice(new_slice))
}
- /// Gets the first element. Returns None if empty.
+ /// Gets the first element. Returns `None` if empty.
///
/// # Example
///
@@ -325,7 +325,7 @@ where
self.as_ule_slice().first().copied().map(T::from_unaligned)
}
- /// Gets the last element. Returns None if empty.
+ /// Gets the last element. Returns `None` if empty.
///
/// # Example
///
@@ -567,6 +567,7 @@ where
#[cfg(test)]
mod test {
use super::*;
+ use crate::zeroslice;
#[test]
fn test_split_first() {
@@ -577,20 +578,16 @@ mod test {
{
// single element slice
const DATA: &ZeroSlice<u16> =
- ZeroSlice::<u16>::from_ule_slice(&<u16 as AsULE>::ULE::from_array([211]));
- assert_eq!((211, ZeroSlice::new_empty()), DATA.split_first().unwrap());
+ zeroslice!(u16; <u16 as AsULE>::ULE::from_unsigned; [211]);
+ assert_eq!((211, zeroslice![]), DATA.split_first().unwrap());
}
{
// slice with many elements.
const DATA: &ZeroSlice<u16> =
- ZeroSlice::<u16>::from_ule_slice(&<u16 as AsULE>::ULE::from_array([
- 211, 281, 421, 32973,
- ]));
+ zeroslice!(u16; <u16 as AsULE>::ULE::from_unsigned; [211, 281, 421, 32973]);
const EXPECTED_VALUE: (u16, &ZeroSlice<u16>) = (
211,
- ZeroSlice::<u16>::from_ule_slice(&<u16 as AsULE>::ULE::from_array([
- 281, 421, 32973,
- ])),
+ zeroslice!(u16; <u16 as AsULE>::ULE::from_unsigned; [281, 421, 32973]),
);
assert_eq!(EXPECTED_VALUE, DATA.split_first().unwrap());